ZGlmZiAtLWdpdCBhLy5naXRhdHRyaWJ1dGVzIGIvLmdpdGF0dHJpYnV0ZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTAxMzQ0OAotLS0gL2Rldi9udWxsCisrKyBiLy5naXRhdHRyaWJ1dGVzCkBAIC0wLDAgKzEsOTkgQEAKKyogdGV4dD1hdXRvICFlb2wKKworKi5jIHRleHQgIWVvbAorKi5jYyB0ZXh0ICFlb2wKKyouY2xhc3NwYXRoIHRleHQgIWVvbAorKi5jcHAgdGV4dCAhZW9sCisqLmNzcyB0ZXh0ICFlb2wKKyouZHNwIHRleHQgIWVvbAorKi5kc3cgdGV4dCAhZW9sCisqLmZpbHRlcnMgdGV4dCAhZW9sCisqLmggdGV4dCAhZW9sCisqLmh0bSB0ZXh0ICFlb2wKKyouaHRtbCB0ZXh0ICFlb2wKKyouaW4gdGV4dCAhZW9sCisqLmphdmEgdGV4dCAhZW9sCisqLmxhdW5jaCB0ZXh0ICFlb2wKKyoubWFrIHRleHQgIWVvbAorKi5tZCB0ZXh0ICFlb2wKKyouTUYgdGV4dCAhZW9sCisqLm1rIHRleHQgIWVvbAorKi5wbCB0ZXh0ICFlb2wKKyoucG0gdGV4dCAhZW9sCisqLnByb2plY3QgdGV4dCAhZW9sCisqLnByb3BlcnRpZXMgdGV4dCAhZW9sCisqLnB5IHRleHQgIWVvbAorKi5yYyB0ZXh0ICFlb2wKKyouc2ggdGV4dCBlb2w9bGYKKyouc2xuIHRleHQgIWVvbAorKi5zdHViIHRleHQgIWVvbAorKi50eHQgdGV4dCAhZW9sCisqLnVjbSB0ZXh0ICFlb2wKKyoudmNwcm9qIHRleHQgIWVvbAorKi52Y3hwcm9qIHRleHQgIWVvbAorKi54bWwgdGV4dCAhZW9sCisqLnhzbCB0ZXh0ICFlb2wKKyoueHNsdCB0ZXh0ICFlb2wKK01ha2VmaWxlIHRleHQgIWVvbAorY29uZmlndXJlIHRleHQgIWVvbAorTElDRU5TRSB0ZXh0ICFlb2wKK1JFQURNRSB0ZXh0ICFlb2wKKworKi5iaW4gLXRleHQKKyouYnJrIC10ZXh0CisqLmNudiAtdGV4dAorKi5pY3UgLXRleHQKKyoucmVzIC10ZXh0CisqLm5ybSAtdGV4dAorKi5zcHAgLXRleHQKKyoudHJpMiAtdGV4dAorCitzcmMvY29tL2libS9kYXRhL21pc2MvZW5nbGlzaC5kaWN0IC10ZXh0CitzcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9CZW5nYWxpX0ludGVySW5kaWMudXRmOC50eHQgLXRleHQKK3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0RldmFuYWdhcmlfSW50ZXJJbmRpYy51dGY4LnR4dCAtdGV4dAorc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfRnVsbHdpZHRoX0hhbGZ3aWR0aC51dGY4LnR4dCAtdGV4dAorc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfR3VqYXJhdGlfSW50ZXJJbmRpYy51dGY4LnR4dCAtdGV4dAorc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfR3VybXVraGlfSW50ZXJJbmRpYy51dGY4LnR4dCAtdGV4dAorc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfSGFuX1Bpbnlpbi51dGY4LnR4dCAtdGV4dAorc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfSGlyYWdhbmFfS2F0YWthbmEudXRmOC50eHQgLXRleHQKK3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfQmVuZ2FsaS51dGY4LnR4dCAtdGV4dAorc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19EZXZhbmFnYXJpLnV0ZjgudHh0IC10ZXh0CitzcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX0d1amFyYXRpLnV0ZjgudHh0IC10ZXh0CitzcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX0d1cm11a2hpLnV0ZjgudHh0IC10ZXh0CitzcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX0thbm5hZGEudXRmOC50eHQgLXRleHQKK3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfTWFsYXlhbGFtLnV0ZjgudHh0IC10ZXh0CitzcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX09yaXlhLnV0ZjgudHh0IC10ZXh0CitzcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX1RhbWlsLnV0ZjgudHh0IC10ZXh0CitzcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX1RlbHVndS51dGY4LnR4dCAtdGV4dAorc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfS2FuamlfRW5nbGlzaC51dGY4LnR4dCAtdGV4dAorc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfS2FuamlfT25Sb21hamkudXRmOC50eHQgLXRleHQKK3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0thbm5hZGFfSW50ZXJJbmRpYy51dGY4LnR4dCAtdGV4dAorc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfS2V5Ym9hcmRFc2NhcGVfTGF0aW4xLnV0ZjgudHh0IC10ZXh0CitzcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9MYXRpbl9BcmFiaWMudXRmOC50eHQgLXRleHQKK3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0xhdGluX0N5cmlsbGljLnV0ZjgudHh0IC10ZXh0CitzcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9MYXRpbl9EZXZhbmFnYXJpLnV0ZjgudHh0IC10ZXh0CitzcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9MYXRpbl9HcmVlay51dGY4LnR4dCAtdGV4dAorc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfTGF0aW5fSGVicmV3LnV0ZjgudHh0IC10ZXh0CitzcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9MYXRpbl9KYW1vLnV0ZjgudHh0IC10ZXh0CitzcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9MYXRpbl9LYW5hLnV0ZjgudHh0IC10ZXh0CitzcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9NYWxheWFsYW1fSW50ZXJJbmRpYy51dGY4LnR4dCAtdGV4dAorc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfT3JpeWFfSW50ZXJJbmRpYy51dGY4LnR4dCAtdGV4dAorc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfU3RyYWlnaHRRdW90ZXNfQ3VybHlRdW90ZXMudXRmOC50eHQgLXRleHQKK3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX1RhbWlsX0ludGVySW5kaWMudXRmOC50eHQgLXRleHQKK3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX1RlbHVndV9JbnRlckluZGljLnV0ZjgudHh0IC10ZXh0CitzcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9Vbmljb2RlTmFtZV9Vbmljb2RlQ2hhci51dGY4LnR4dCAtdGV4dAorc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvdGhhaV9kaWN0IC10ZXh0CitzcmMvY29tL2libS90ZXh0L3VuYW1lcy5kYXQgLXRleHQKK3NyYy9jb20vaWJtL3RleHQvdXByb3BzLmRhdCAtdGV4dAorc3JjL2RhdGEvaG9saWRheXNfanAudWNzIC10ZXh0CitzcmMvZGF0YS90aGFpNi51Y3MgLXRleHQKK3NyYy9kYXRhL3VuaWNvZGUvRHJhZnQtVGVzdFN1aXRlLnR4dCAtdGV4dAorCisjIFRoZSBmb2xsb3dpbmcgZmlsZSB0eXBlcyBhcmUgc3RvcmVkIGluIEdpdC1MRlMuCisqLmphciBmaWx0ZXI9bGZzIGRpZmY9bGZzIG1lcmdlPWxmcyAtdGV4dAorKi5kYXQgZmlsdGVyPWxmcyBkaWZmPWxmcyBtZXJnZT1sZnMgLXRleHQKKyouemlwIGZpbHRlcj1sZnMgZGlmZj1sZnMgbWVyZ2U9bGZzIC10ZXh0CisqLmd6IGZpbHRlcj1sZnMgZGlmZj1sZnMgbWVyZ2U9bGZzIC10ZXh0CisqLmJ6MiBmaWx0ZXI9bGZzIGRpZmY9bGZzIG1lcmdlPWxmcyAtdGV4dAorKi5naWYgZmlsdGVyPWxmcyBkaWZmPWxmcyBtZXJnZT1sZnMgLXRleHQKKwpkaWZmIC0tZ2l0IGEvYnVpbGQuYmF0IGIvYnVpbGQuYmF0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjFkMWMzNDYKLS0tIC9kZXYvbnVsbAorKysgYi9idWlsZC5iYXQKQEAgLTAsMCArMSwxNSBAQAorQGVjaG8gb2ZmCisKK1JFTSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitSRU0gKiBDb3B5cmlnaHQgKEMpIDE5OTctMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorUkVNICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKK1JFTSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK1JFTSAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9BdHRpYy9idWlsZC5iYXQsdiAkIAorUkVNICREYXRlOiAyMDAwLzAzLzE1IDAwOjQwOjI3ICQgCitSRU0gJFJldmlzaW9uOiAxLjQgJAorCitSRU0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCitSRU0gY29udmllbmNlIGJhdCBmaWxlIHRvIGJ1aWxkIHdpdGgKK2phdmEgLWNsYXNzcGF0aCAiYnVpbGRcaWN1NGp0b29scy5qYXI7amFrYXJ0YS1hbnRcbGliXGFudC5qYXI7amFrYXJ0YS1hbnRcbGliXHhtbC5qYXI7JUNMQVNTUEFUSCUiIG9yZy5hcGFjaGUudG9vbHMuYW50Lk1haW4gJTEgJTIgJTMgJTQgJTUKZGlmZiAtLWdpdCBhL2J1aWxkLnNoIGIvYnVpbGQuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOGY1ZGUyYQotLS0gL2Rldi9udWxsCisrKyBiL2J1aWxkLnNoCkBAIC0wLDAgKzEsMjYgQEAKKyMvKgorIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMqIENvcHlyaWdodCAoQykgMTk5Ny0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisjKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMqCisjKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9BdHRpYy9idWlsZC5zaCx2ICQgCisjKiAkRGF0ZTogMjAwMC8wMy8xNSAwMDo0MDoyNyAkIAorIyogJFJldmlzaW9uOiAxLjMgJAorIyoKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyovCisjIS9iaW4vc2gKKworQURETF9DTEFTU1BBVEg9YnVpbGQvaWN1NGp0b29sei56aXA6amFrYXJ0YS1hbnQvbGliL2FudC5qYXI6amFrYXJ0YS1hbnQvbGliL3htbC5qYXIKKworaWYgWyAiJENMQVNTUEFUSCIgIT0gIiIgXSA7IHRoZW4KKyAgQ0xBU1NQQVRIPSRDTEFTU1BBVEg6JEFERExfQ0xBU1NQQVRICitlbHNlCisgQ0xBU1NQQVRIPSRBRERMX0NMQVNTUEFUSAorZmkKK2V4cG9ydCBDTEFTU1BBVEgKKworZWNobyBCdWlsZGluZyB3aXRoIGNsYXNzcGF0aCAkQ0xBU1NQQVRICisKK2phdmEgb3JnLmFwYWNoZS50b29scy5hbnQuTWFpbiAkKgpkaWZmIC0tZ2l0IGEvYnVpbGQueG1sIGIvYnVpbGQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2NDk3YzMKLS0tIC9kZXYvbnVsbAorKysgYi9idWlsZC54bWwKQEAgLTAsMCArMSwxNzUgQEAKKzwhLS0gCisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTctMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9idWlsZC54bWwsdiAkIAorKiAkRGF0ZTogMjAwMS8wMy8yMyAxOTo1Mjo0OCAkIAorKiAkUmV2aXNpb246IDEuMzIgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBUaGlzIGlzIHRoZSBhbnQgYnVpbGQgZmlsZSBmb3IgSUNVNEouICBTZWUgcmVhZG1lLmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisqLworLS0+CisKKzxwcm9qZWN0IG5hbWU9IklDVTRKIiBkZWZhdWx0PSJjb3JlIiBiYXNlZGlyPSIuIj4KKworICA8dGFyZ2V0IG5hbWU9ImluaXQiPgorICAgIDx0c3RhbXAvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJzcmMuZGlyIiB2YWx1ZT0ic3JjIi8+CisgICAgPHByb3BlcnR5IG5hbWU9ImRvYy5kaXIiIHZhbHVlPSJkb2MiLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iYnVpbGQuZGlyIiB2YWx1ZT0iY2xhc3NlcyIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJvYnNvbGV0ZS5kaXIiIHZhbHVlPSJidWlsZCIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJqYXIuZmlsZSIgdmFsdWU9ImljdTRqLmphciIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJ6aXBiaW4uZmlsZSIgdmFsdWU9Ii4uL2ljdTRqYmluJHtEU1RBTVB9LnppcCIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJ6aXAuZmlsZSIgdmFsdWU9Ii4uL2ljdTRqJHtEU1RBTVB9LnppcCIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJjbGFzc3BhdGgiIHZhbHVlPSIke2J1aWxkLmRpcn0iLz4KKyAgICA8cHJvcGVydHkgbmFtZT0iYnVpbGQuY29tcGlsZXIiIHZhbHVlPSJjbGFzc2ljIi8+CisgICAgPHByb3BlcnR5IG5hbWU9InJpY2hlZGl0LmRpc3QuZGlyIiB2YWx1ZT0icmljaGVkaXREaXN0Ii8+CisgICAgPHByb3BlcnR5IG5hbWU9InJpY2hlZGl0LmNvbnQuZGlyIiB2YWx1ZT0icmljaGVkaXQiLz4KKyAgICA8cHJvcGVydHkgbmFtZT0icmljaGVkaXQuYXJjaGl2ZS5kaXIiIHZhbHVlPSIke3JpY2hlZGl0LmRpc3QuZGlyfS8ke3JpY2hlZGl0LmNvbnQuZGlyfSIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJyaWNoZWRpdC5qYXIuZmlsZSIgdmFsdWU9IiR7cmljaGVkaXQuYXJjaGl2ZS5kaXJ9L3JpY2hlZGl0LmphciIvPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJyaWNoZWRpdC5kb2MuZGlyIiB2YWx1ZT0iJHtyaWNoZWRpdC5hcmNoaXZlLmRpcn0vZG9jIi8+CisgICAgPHByb3BlcnR5IG5hbWU9InJpY2hlZGl0LnppcC5maWxlIiB2YWx1ZT0iJHtyaWNoZWRpdC5kaXN0LmRpcn0vcmljaGVkaXQuemlwIi8+CisgICAgPHByb3BlcnR5IG5hbWU9InJpY2hlZGl0Lm1hbmlmZXN0IiB2YWx1ZT0iJHtyaWNoZWRpdC5kaXN0LmRpcn0vbWFuaWZlc3Quc3R1YiIvPgorICA8L3RhcmdldD4KKworICA8dGFyZ2V0IG5hbWU9ImFsbCIgZGVwZW5kcz0iY29yZSx0ZXN0cyx0b29scyxkZW1vcyxqYXIsZG9jcyIvPgorICAKKyAgPHRhcmdldCBuYW1lPSJjb3JlIiBkZXBlbmRzPSJpbml0LGNvcmVEYXRhIj4KKyAgICA8bWtkaXIgZGlyPSIke2J1aWxkLmRpcn0iLz4KKyAgICA8Y29weSBmaWxlPSIke3NyYy5kaXJ9L2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvdGhhaV9kaWN0IgorICAgICAgICAgICB0b2Rpcj0iJHtidWlsZC5kaXJ9L2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvIi8+CisgICAgPGphdmFjIGluY2x1ZGVzPSJjb20vaWJtL3V0aWwvKiovKi5qYXZhLGNvbS9pYm0vdGV4dC8qKi8qLmphdmEsY29tL2libS9tYXRoLyoqLyouamF2YSxjb20vaWJtL3JpY2h0ZXh0LyoqLyouamF2YSIKKyAgICAgICAgICAgZXhjbHVkZXM9IioqL0NWUy8qKi8qIgorICAgICAgICAgICBzcmNkaXI9IiR7c3JjLmRpcn0iCisgICAgCSAgIGRlc3RkaXI9IiR7YnVpbGQuZGlyfSIgCisgICAgCSAgIGNsYXNzcGF0aD0iJHtjbGFzc3BhdGh9IgorICAgICAgICAgICBkZWJ1Zz0ib24iIGRlcHJlY2F0aW9uPSJvZmYiIHRhcmdldD0iMS4yIi8+CisgIDwvdGFyZ2V0PgorICAKKyAgPHRhcmdldCBuYW1lPSJ0ZXN0cyIgZGVwZW5kcz0iY29yZSx0ZXN0RGF0YSI+CisgICAgPGphdmFjIGluY2x1ZGVzPSJjb20vaWJtL3Rlc3QvKiovKi5qYXZhLGNvbS9pYm0vaWN1L3Rlc3QvKiovKi5qYXZhIgorICAgICAgICAgICBleGNsdWRlcz0iKiovQ1ZTLyoqLyoiCisgICAgCSAgIHNyY2Rpcj0iJHtzcmMuZGlyfSIKKyAgICAJICAgZGVzdGRpcj0iJHtidWlsZC5kaXJ9IiAKKyAgICAJICAgY2xhc3NwYXRoPSIke2NsYXNzcGF0aH0iCisgICAgICAgICAgIGRlYnVnPSJvbiIgZGVwcmVjYXRpb249Im9mZiIgdGFyZ2V0PSIxLjIiLz4KKyAgPC90YXJnZXQ+CisgIAorICA8dGFyZ2V0IG5hbWU9ImRlbW9zIiBkZXBlbmRzPSJjb3JlLHRlc3REYXRhIj4KKyAgICA8amF2YWMgaW5jbHVkZXM9ImNvbS9pYm0vZGVtby8qKi8qLmphdmEiCisgICAgICAgICAgIGV4Y2x1ZGVzPSIqKi9DVlMvKiovKiIKKyAgICAJICAgc3JjZGlyPSIke3NyYy5kaXJ9IgorICAgIAkgICBkZXN0ZGlyPSIke2J1aWxkLmRpcn0iIAorICAgIAkgICBjbGFzc3BhdGg9IiR7Y2xhc3NwYXRofSIKKyAgICAgICAgICAgZGVidWc9Im9uIiBkZXByZWNhdGlvbj0ib2ZmIiB0YXJnZXQ9IjEuMiIvPgorICA8L3RhcmdldD4KKyAgCisgIDx0YXJnZXQgbmFtZT0idG9vbHMiIGRlcGVuZHM9ImNvcmUiPgorICAgIDxqYXZhYyBpbmNsdWRlcz0iY29tL2libS90b29scy8qKi8qLmphdmEiCisgICAgICAgICAgIGV4Y2x1ZGVzPSIqKi9DVlMvKiovKiIKKyAgICAJICAgc3JjZGlyPSIke3NyYy5kaXJ9IgorICAgIAkgICBkZXN0ZGlyPSIke2J1aWxkLmRpcn0iIAorICAgIAkgICBjbGFzc3BhdGg9IiR7Y2xhc3NwYXRofSIKKyAgICAgICAgICAgZGVidWc9Im9uIiBkZXByZWNhdGlvbj0ib2ZmIiB0YXJnZXQ9IjEuMiIvPgorICA8L3RhcmdldD4KKyAgCisgIDx0YXJnZXQgbmFtZT0iZG9jcyIgZGVwZW5kcz0iY29yZSI+CisgICAgPG1rZGlyIGRpcj0iJHtkb2MuZGlyfSIvPgorICAgIDxqYXZhZG9jIHBhY2thZ2VuYW1lcz0iY29tLmlibS51dGlsLGNvbS5pYm0udGV4dCxjb20uaWJtLm1hdGgsY29tLmlibS5yaWNodGV4dC5hd3R1aSxjb20uaWJtLnJpY2h0ZXh0LnN3aW5ndWksY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwsY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLGNvbS5pYm0ucmljaHRleHQucHJpbnQsY29tLmlibS5pY3UudGVzdC50ZXh0IgorICAgICAgICAgICAgICBzb3VyY2VwYXRoPSIke3NyYy5kaXJ9IgorICAgIAkJICBkZXN0ZGlyPSIke2RvYy5kaXJ9IgorICAgIAkJICBub2RlcHJlY2F0ZWRsaXN0PSJ0cnVlIgorCQkJICB3aW5kb3d0aXRsZT0iaWN1NGoiCisJCQkgIGRvY3RpdGxlPSJpY3U0aiIKKwkJCSAgZW5jb2Rpbmc9Imlzby04ODU5LTEiCisJCQkgIGRvY2VuY29kaW5nPSJpc28tODg1OS0xIgorCQkJICBib3R0b209IiZsdDtmb250IHNpemU9LTE+Q29weXJpZ2h0IChjKSAxOTk4LTIwMDAgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuJmx0Oy9mb250PiIKKyAgICAJCSAgLz4gICAgCQkgIAorICA8L3RhcmdldD4KKworICA8dGFyZ2V0IG5hbWUgPSJjb3JlRGF0YSIgZGVwZW5kcz0iaW5pdCI+CisgICAgPGNvcHkgdG9kaXI9IiR7YnVpbGQuZGlyfS9jb20vaWJtL3RleHQvcmVzb3VyY2VzIj4KKyAgICAgIDxmaWxlc2V0IGRpcj0iJHtzcmMuZGlyfS9jb20vaWJtL3RleHQvcmVzb3VyY2VzIgorICAgICAgICAgICAgICAgaW5jbHVkZXM9IlRyYW5zbGl0ZXJhdG9yXyoudHh0Ii8+CisgICAgPC9jb3B5PgorICAgIDxjb3B5IHRvZGlyPSIke2J1aWxkLmRpcn0vY29tL2libS90ZXh0Ij4KKyAgICAgIDxmaWxlc2V0IGRpcj0iJHtzcmMuZGlyfS9jb20vaWJtL3RleHQiCisgICAgICAgICAgICAgICBpbmNsdWRlcz0idW5hbWVzLmRhdCx1cHJvcHMuZGF0Ii8+CisgICAgPC9jb3B5PgorICA8L3RhcmdldD4KKworICA8dGFyZ2V0IG5hbWUgPSJ0ZXN0RGF0YSIgZGVwZW5kcz0iaW5pdCI+CisgICAgPGNvcHkgZmlsZT0iJHtzcmMuZGlyfS9jb20vaWJtL2RhdGEvbWlzYy9lbmdsaXNoLmRpY3QiCisgICAgCSAgIHRvZGlyPSIke2J1aWxkLmRpcn0vY29tL2libS9kYXRhL21pc2MvIi8+CisgIDwvdGFyZ2V0PgorICAKKyAgPHRhcmdldCBuYW1lPSJqYXIiIGRlcGVuZHM9ImNvcmUiPgorICAgIDxqYXIgamFyZmlsZT0iJHtqYXIuZmlsZX0iCisgICAgICAgICBpbmNsdWRlcz0iY29tL2libS91dGlsLyoqLyosY29tL2libS90ZXh0LyoqLyosY29tL2libS9tYXRoLyoqLyosY29tL2libS9yaWNodGV4dC8qKi8qIgorICAgICAgICAgYmFzZWRpcj0iJHtidWlsZC5kaXJ9Ii8+CisgIDwvdGFyZ2V0PgorCisgIDx0YXJnZXQgbmFtZT0icmljaGVkaXRKYXIiIGRlcGVuZHM9ImNvcmUiPgorICAgIDxqYXIgamFyZmlsZT0iJHtyaWNoZWRpdC5qYXIuZmlsZX0iCisgICAgICAgICBpbmNsdWRlcz0iY29tL2libS9yaWNodGV4dC8qKi8qLGNvbS9pYm0vdGV4dGxheW91dC8qKi8qIgorICAgICAgICAgYmFzZWRpcj0iJHtidWlsZC5kaXJ9IgorICAgICAgICAgbWFuaWZlc3Q9IiR7cmljaGVkaXQubWFuaWZlc3R9Ii8+CisgIDwvdGFyZ2V0PgorCisgICAgPCEtLSAKKyAgICAgICAgTm90ZTogIEkgdXNlZCB0byB1c2UgLWxpbmtvZmZsaW5lIGh0dHA6Ly9qYXZhLnN1bi5jb20vcHJvZHVjdHMvamRrLzEuMi9kb2NzL2FwaS8gQzpcamRrMS4yLjJcZG9jc1xhcGkKKyAgICAgICAgVGhpcyBsaW5rcyB0byBjb3JlIGRvY3Mgb24gU3VuJ3Mgc2l0ZSAtIGEgdmVyeSBuaWNlIGZlYXR1cmUuICBCdXQgaXQgcmVxdWlyZXMgdGhlIDEuMiBkb2NzIHRvIGJlCisgICAgICAgIG9uIHRoZSBidWlsZCBtYWNoaW5lIGF0IGEga25vd24gbG9jYXRpb24uCisgICAgLS0+CisgIDx0YXJnZXQgbmFtZT0icmljaGVkaXREb2NzIiBkZXBlbmRzPSJjb3JlIj4KKyAgICA8bWtkaXIgZGlyPSIke3JpY2hlZGl0LmRvYy5kaXJ9Ii8+CisgICAgPGphdmFkb2MgIHBhY2thZ2VuYW1lcz0iY29tLmlibS5yaWNodGV4dC5hd3R1aSxjb20uaWJtLnJpY2h0ZXh0LnN3aW5ndWksY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwsY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLGNvbS5pYm0ucmljaHRleHQucHJpbnQiCisgICAgICAgICAgICAgIHNvdXJjZXBhdGg9IiR7c3JjLmRpcn0iCisgICAgCQkgIGRlc3RkaXI9IiR7cmljaGVkaXQuZG9jLmRpcn0iCisgICAgCQkgIG5vZGVwcmVjYXRlZGxpc3Q9InRydWUiCisJCQkgIHdpbmRvd3RpdGxlPSJSaWNoRWRpdCBDb250cm9sIgorCQkJICBkb2N0aXRsZT0iUmljaEVkaXQgQ29udHJvbCIKKwkJCSAgZW5jb2Rpbmc9Imlzby04ODU5LTEiCisJCQkgIGRvY2VuY29kaW5nPSJpc28tODg1OS0xIgorCQkJICBib3R0b209IiZsdDtmb250IHNpemU9LTE+Q29weXJpZ2h0IChjKSAxOTk4LTIwMDAgSUJNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuJmx0Oy9mb250PiIKKyAgICAJCSAgLz4gICAgCQkgIAorICA8L3RhcmdldD4KKworICA8dGFyZ2V0IG5hbWU9InJpY2hlZGl0WmlwIiBkZXBlbmRzPSJyaWNoZWRpdEphcixyaWNoZWRpdERvY3MiPgorICAgIDwhLS1DcmVhdGUgYSB6aXAgYXJjaGl2ZSBvZiB0aGUgcmljaGVkaXQgamFyIGFuZCByZWFkbWUgLS0+CisgICAgPHppcCB6aXBmaWxlPSIke3JpY2hlZGl0LnppcC5maWxlfSIKKyAgICAgICAgIGJhc2VkaXI9IiR7cmljaGVkaXQuZGlzdC5kaXJ9IgorICAgICAgICAgaW5jbHVkZXM9IiR7cmljaGVkaXQuY29udC5kaXJ9LyoqLyoiLz4KKyAgPC90YXJnZXQ+CisgIAorICA8dGFyZ2V0IG5hbWU9InppcGJpbiIgZGVwZW5kcz0iZG9jcyxqYXIiPgorICAgIDwhLS1DcmVhdGUgYSB6aXAgYXJjaGl2ZSBvZiB0aGUgc291cmNlLCBkb2NzLCBhbmQgamFyIGZpbGUgZm9yCisgICAgZGlzdHJpYnV0aW9uLiAgVGhlIHppcCBmaWxlIHdpbGwgYmUgY3JlYXRlZCBpbiB0aGUgZGlyZWN0b3J5IGFib3ZlCisgICAgdGhlIHJvb3QgSUNVNEogZGlyZWN0b3J5Li0tPgorICAgIDx6aXAgemlwZmlsZT0iJHt6aXBiaW4uZmlsZX0iCisgICAgICAgICBiYXNlZGlyPSIuIgorICAgICAgICAgZXhjbHVkZXM9IiR7cmljaGVkaXQuZGlzdC5kaXJ9LHRlc3RfKiwke3NyYy5kaXJ9L2RhdGEvdW5pY29kZS8qLSoudHh0LCR7b2Jzb2xldGUuZGlyfS8qKiwqKi8qfiwke3NyYy5kaXJ9LyoqLyouY2xhc3MsJHtidWlsZC5kaXJ9LyoqLCoqL0NWUy8qKi8qIi8+CisgIDwvdGFyZ2V0PgorCisgIDx0YXJnZXQgbmFtZT0iemlwIiBkZXBlbmRzPSJpbml0Ij4KKyAgICA8IS0tQ3JlYXRlIGEgemlwIGFyY2hpdmUgb2YganVzdCB0aGUgc291cmNlIGZvciBkaXN0cmlidXRpb24uICBUaGUKKyAgICB6aXAgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhlIGRpcmVjdG9yeSBhYm92ZSB0aGUgcm9vdCBJQ1U0SgorICAgIGRpcmVjdG9yeS4gVGhlIGV4Y2x1ZGUgcGF0dGVybiAke3NyYy5kaXJ9L2RhdGEvdW5pY29kZS8qLSoudHh0CisgICAgZWxpbWluYXRlcyBvbGQgYXJjaGl2ZSBjb3BpZXMgbGlrZSBTcGVjaWFsQ2FzaW5nLTIudHh0IGFuZAorICAgIFVuaWNvZGVEYXRhLTIuMS44LnR4dCAtLT4KKyAgICA8emlwIHppcGZpbGU9IiR7emlwLmZpbGV9IgorICAgICAgICAgYmFzZWRpcj0iLiIKKyAgICAgICAgIGV4Y2x1ZGVzPSIke3JpY2hlZGl0LmRpc3QuZGlyfSx0ZXN0XyosJHtzcmMuZGlyfS9kYXRhL3VuaWNvZGUvKi0qLnR4dCwke29ic29sZXRlLmRpcn0vKiosKiovKn4sJHtzcmMuZGlyfS8qKi8qLmNsYXNzLCR7YnVpbGQuZGlyfS8qKiwqKi9DVlMvKiovKiwke2RvYy5kaXJ9LyoqLCR7amFyLmZpbGV9Ii8+CisgIDwvdGFyZ2V0PgorCisgIDx0YXJnZXQgbmFtZT0iY2xlYW4iIGRlcGVuZHM9ImluaXQiPgorICAgIDxkZWxldGUgZGlyPSIke2J1aWxkLmRpcn0iLz4KKyAgICA8ZGVsZXRlIGRpcj0iJHtkb2MuZGlyfSIvPgorICAgIDxkZWxldGUgIGZpbGU9IiR7amFyLmZpbGV9Ii8+CisgIDwvdGFyZ2V0PgorCis8L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9idWlsZGFsbC5iYXQgYi9idWlsZGFsbC5iYXQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDBlMDk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2J1aWxkYWxsLmJhdApAQCAtMCwwICsxLDIgQEAKK2phdmFjIC1zb3VyY2VwYXRoIHNyYyAtZCBjbGFzc2VzIC1jbGFzc3BhdGggY2xhc3NlcyBzcmMvY29tL2libS9tYXRoLyouamF2YSBzcmMvY29tL2libS91dGlsLyouamF2YSBzcmMvY29tL2libS91dGlsL3Jlc291cmNlcy8qLmphdmEgc3JjL2NvbS9pYm0vdGV4dC8qLmphdmEgc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvKi5qYXZhIHNyYy9jb20vaWJtL3RleHQvY29tcG9uZW50cy8qLmphdmEgc3JjL2NvbS9pYm0vdGVzdC8qLmphdmEgc3JjL2NvbS9pYm0vdGVzdC9ibmYvKi5qYXZhIHNyYy9jb20vaWJtL3Rlc3QvY2FsZW5kYXIvKi5qYXZhIHNyYy9jb20vaWJtL3Rlc3QvY29tcHJlc3Npb24vKi5qYXZhIHNyYy9jb20vaWJtL3Rlc3Qvbm9ybWFsaXplci8qLmphdmEgc3JjL2NvbS9pYm0vdGVzdC9yYmJpLyouamF2YSBzcmMvY29tL2libS90ZXN0L3JibmYvKi5qYXZhIHNyYy9jb20vaWJtL3Rlc3Qvc2VhcmNoLyouamF2YSBzcmMvY29tL2libS90ZXN0L3RvcGxldmVsdGVzdC8qLmphdmEgc3JjL2NvbS9pYm0vdGVzdC90cmFuc2xpdC8qLmphdmEgc3JjL2NvbS9pYm0vZGVtby8qLmphdmEgc3JjL2NvbS9pYm0vZGVtby9jYWxlbmRhci8qLmphdmEgc3JjL2NvbS9pYm0vZGVtby9ob2xpZGF5LyouamF2YSBzcmMvY29tL2libS9kZW1vL3JiYmkvKi5qYXZhIHNyYy9jb20vaWJtL2RlbW8vcmJuZi8qLmphdmEgc3JjL2NvbS9pYm0vZGVtby90cmFuc2xpdC8qLmphdmEgc3JjL2NvbS9pYm0vdG9vbHMvY29tcHJlc3Npb24vKi5qYXZhIHNyYy9jb20vaWJtL3Rvb2xzL25vcm1hbGl6ZXIvKi5qYXZhIHNyYy9jb20vaWJtL3Rvb2xzL1J1bGVCYXNlZEJyZWFrSXRlcmF0b3IvKi5qYXZhCitqYXZhZG9jIC1zb3VyY2VwYXRoIHNyYyAtZCBkb2NzIC1jbGFzc3BhdGggY2xhc3NlcyBzcmMvY29tL2libS9tYXRoLyouamF2YSBzcmMvY29tL2libS91dGlsLyouamF2YSBzcmMvY29tL2libS91dGlsL3Jlc291cmNlcy8qLmphdmEgc3JjL2NvbS9pYm0vdGV4dC8qLmphdmEgc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvKi5qYXZhIHNyYy9jb20vaWJtL3RleHQvY29tcG9uZW50cy8qLmphdmEgc3JjL2NvbS9pYm0vdGVzdC8qLmphdmEgc3JjL2NvbS9pYm0vdGVzdC9ibmYvKi5qYXZhIHNyYy9jb20vaWJtL3Rlc3QvY2FsZW5kYXIvKi5qYXZhIHNyYy9jb20vaWJtL3Rlc3QvY29tcHJlc3Npb24vKi5qYXZhIHNyYy9jb20vaWJtL3Rlc3Qvbm9ybWFsaXplci8qLmphdmEgc3JjL2NvbS9pYm0vdGVzdC9yYmJpLyouamF2YSBzcmMvY29tL2libS90ZXN0L3JibmYvKi5qYXZhIHNyYy9jb20vaWJtL3Rlc3Qvc2VhcmNoLyouamF2YSBzcmMvY29tL2libS90ZXN0L3RvcGxldmVsdGVzdC8qLmphdmEgc3JjL2NvbS9pYm0vdGVzdC90cmFuc2xpdC8qLmphdmEgc3JjL2NvbS9pYm0vZGVtby8qLmphdmEgc3JjL2NvbS9pYm0vZGVtby9jYWxlbmRhci8qLmphdmEgc3JjL2NvbS9pYm0vZGVtby9ob2xpZGF5LyouamF2YSBzcmMvY29tL2libS9kZW1vL3JiYmkvKi5qYXZhIHNyYy9jb20vaWJtL2RlbW8vcmJuZi8qLmphdmEgc3JjL2NvbS9pYm0vZGVtby90cmFuc2xpdC8qLmphdmEgc3JjL2NvbS9pYm0vdG9vbHMvY29tcHJlc3Npb24vKi5qYXZhIHNyYy9jb20vaWJtL3Rvb2xzL25vcm1hbGl6ZXIvKi5qYXZhIHNyYy9jb20vaWJtL3Rvb2xzL1J1bGVCYXNlZEJyZWFrSXRlcmF0b3IvKi5qYXZhCmRpZmYgLS1naXQgYS9saWNlbnNlLmh0bWwgYi9saWNlbnNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRlMzRlMAotLS0gL2Rldi9udWxsCisrKyBiL2xpY2Vuc2UuaHRtbApAQCAtMCwwICsxLDI0MiBAQAorPGh0bWw+CisKKzxoZWFkPgorPG1ldGEgSFRUUC1FUVVJVj0iQ29udGVudC1UeXBlIiBDT05URU5UPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9TGF0aW4tMSI+Cis8dGl0bGU+SUJNJ3MgUHVibGljIExpY2Vuc2UgLSBJQk0ncyBDb21wb25lbnRzIGZvciBVbmljb2RlIGluIEphdmE8L3RpdGxlPgorPC9oZWFkPgorCis8Ym9keT4KKzxiPgorCis8cCBBTElHTj0iQ0VOVEVSIj48YmlnPklCTSBQVUJMSUMgTElDRU5TRSAtIElCTSYjMTQ2O3MgQ29tcG9uZW50cyBmb3IgVW5pY29kZSBpbiBKYXZhIFZFUlNJT04gMS4wPC9iaWc+PC9wPgorPC9iPjxmb250IHNpemU9IjIiPgorCis8cD5USEUgQUNDT01QQU5ZSU5HIFBST0dSQU0gSVMgUFJPVklERUQgVU5ERVIgVEhFIFRFUk1TIE9GIFRISVMgSUJNIFBVQkxJQyBMSUNFTlNFCisoJnF1b3Q7QUdSRUVNRU5UJnF1b3Q7KS4gQU5ZIFVTRSwgUkVQUk9EVUNUSU9OIE9SIERJU1RSSUJVVElPTiBPRiBUSEUgUFJPR1JBTSBDT05TVElUVVRFUworUkVDSVBJRU5UJiMxNDY7UyBBQ0NFUFRBTkNFIE9GIFRISVMgQUdSRUVNRU5ULjwvcD4KKzxiPgorCis8cD4xLiBERUZJTklUSU9OUzwvcD4KKzwvYj4KKworPHA+JnF1b3Q7Q29udHJpYnV0aW9uJnF1b3Q7IG1lYW5zOiA8L3A+CisKKzxibG9ja3F1b3RlPgorICA8YmxvY2txdW90ZT4KKyAgICA8cD5hKSBpbiB0aGUgY2FzZSBvZiBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uICgmcXVvdDtJQk0mcXVvdDspLCB0aGUKKyAgICBPcmlnaW5hbCBQcm9ncmFtLCBhbmQgPC9wPgorICAgIDxwPmIpIGluIHRoZSBjYXNlIG9mIGVhY2ggQ29udHJpYnV0b3IsIDwvcD4KKyAgICA8YmxvY2txdW90ZT4KKyAgICAgIDxwPmkpIGNoYW5nZXMgdG8gdGhlIFByb2dyYW0sIGFuZDwvcD4KKyAgICAgIDxwPmlpKSBhZGRpdGlvbnMgdG8gdGhlIFByb2dyYW07PC9wPgorICAgIDwvYmxvY2txdW90ZT4KKyAgPC9ibG9ja3F1b3RlPgorICA8cD53aGVyZSBzdWNoIGNoYW5nZXMgYW5kL29yIGFkZGl0aW9ucyB0byB0aGUgUHJvZ3JhbSBvcmlnaW5hdGUgZnJvbSBhbmQgYXJlIGRpc3RyaWJ1dGVkCisgIGJ5IHRoYXQgcGFydGljdWxhciBDb250cmlidXRvci4gQSBDb250cmlidXRpb24gJiMxNDU7b3JpZ2luYXRlcyYjMTQ2OyBmcm9tIGEgQ29udHJpYnV0b3IKKyAgaWYgaXQgd2FzIGFkZGVkIHRvIHRoZSBQcm9ncmFtIGJ5IHN1Y2ggQ29udHJpYnV0b3IgaXRzZWxmIG9yIGFueW9uZSBhY3Rpbmcgb24gc3VjaAorICBDb250cmlidXRvciYjMTQ2O3MgYmVoYWxmLiBDb250cmlidXRpb25zIGRvIG5vdCBpbmNsdWRlIGFkZGl0aW9ucyB0byB0aGUgUHJvZ3JhbSB3aGljaDoKKyAgKGkpIGFyZSBzZXBhcmF0ZSBtb2R1bGVzIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIFByb2dyYW0gdW5kZXIKKyAgdGhlaXIgb3duIGxpY2Vuc2UgYWdyZWVtZW50LCBhbmQgKGlpKSBhcmUgbm90IGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFByb2dyYW0uPC9wPgorPC9ibG9ja3F1b3RlPgorCis8cD4mcXVvdDtDb250cmlidXRvciZxdW90OyBtZWFucyBJQk0gYW5kIGFueSBvdGhlciBlbnRpdHkgdGhhdCBkaXN0cmlidXRlcyB0aGUgUHJvZ3JhbS48L3A+CisKKzxwPiZxdW90O0xpY2Vuc2VkIFBhdGVudHMgJnF1b3Q7IG1lYW4gcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlIGJ5IGEgQ29udHJpYnV0b3Igd2hpY2ggYXJlCituZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlIHVzZSBvciBzYWxlIG9mIGl0cyBDb250cmlidXRpb24gYWxvbmUgb3Igd2hlbiBjb21iaW5lZCB3aXRoCit0aGUgUHJvZ3JhbS4gPC9wPgorCis8cD4mcXVvdDtPcmlnaW5hbCBQcm9ncmFtJnF1b3Q7IG1lYW5zIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBzb2Z0d2FyZSBhY2NvbXBhbnlpbmcKK3RoaXMgQWdyZWVtZW50IGFzIHJlbGVhc2VkIGJ5IElCTSwgaW5jbHVkaW5nIHNvdXJjZSBjb2RlLCBvYmplY3QgY29kZSBhbmQgZG9jdW1lbnRhdGlvbiwKK2lmIGFueS48L3A+CisKKzxwPiZxdW90O1Byb2dyYW0mcXVvdDsgbWVhbnMgdGhlIE9yaWdpbmFsIFByb2dyYW0gYW5kIENvbnRyaWJ1dGlvbnMuPC9wPgorCis8cD4mcXVvdDtSZWNpcGllbnQmcXVvdDsgbWVhbnMgYW55b25lIHdobyByZWNlaXZlcyB0aGUgUHJvZ3JhbSB1bmRlciB0aGlzIEFncmVlbWVudCwKK2luY2x1ZGluZyBhbGwgQ29udHJpYnV0b3JzLjwvcD4KKzxiPgorCis8cD4yLiBHUkFOVCBPRiBSSUdIVFM8L3A+CisKKzxibG9ja3F1b3RlPgorICA8YmxvY2txdW90ZT4KKyAgICA8L2I+PHA+YSkgU3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyBSZWNpcGllbnQKKyAgICBhIG5vbi1leGNsdXNpdmUsIHdvcmxkd2lkZSwgcm95YWx0eS1mcmVlIGNvcHlyaWdodCBsaWNlbnNlIHRvPGZvbnQgQ09MT1I9IiNmZjAwMDAiPiA8L2ZvbnQ+cmVwcm9kdWNlLAorICAgIHByZXBhcmUgZGVyaXZhdGl2ZSB3b3JrcyBvZiwgcHVibGljbHkgZGlzcGxheSwgcHVibGljbHkgcGVyZm9ybSwgZGlzdHJpYnV0ZSBhbmQgc3VibGljZW5zZQorICAgIHRoZSBDb250cmlidXRpb24gb2Ygc3VjaCBDb250cmlidXRvciwgaWYgYW55LCBhbmQgc3VjaCBkZXJpdmF0aXZlIHdvcmtzLCBpbiBzb3VyY2UgY29kZQorICAgIGFuZCBvYmplY3QgY29kZSBmb3JtLjwvcD4KKyAgICA8cD5iKSBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIFJlY2lwaWVudCBhCisgICAgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLDxmb250IENPTE9SPSIjMDA4MDAwIj4gPC9mb250PnJveWFsdHktZnJlZSBwYXRlbnQgbGljZW5zZSB1bmRlcgorICAgIExpY2Vuc2VkIFBhdGVudHMgdG8gbWFrZSwgdXNlLCBzZWxsLCBvZmZlciB0byBzZWxsLCBpbXBvcnQgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUKKyAgICBDb250cmlidXRpb24gb2Ygc3VjaCBDb250cmlidXRvciwgaWYgYW55LCBpbiBzb3VyY2UgY29kZSBhbmQgb2JqZWN0IGNvZGUgZm9ybS4gVGhpcyBwYXRlbnQKKyAgICBsaWNlbnNlIHNoYWxsIGFwcGx5IHRvIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgQ29udHJpYnV0aW9uIGFuZCB0aGUgUHJvZ3JhbSBpZiwgYXQgdGhlIHRpbWUKKyAgICB0aGUgQ29udHJpYnV0aW9uIGlzIGFkZGVkIGJ5IHRoZSBDb250cmlidXRvciwgc3VjaCBhZGRpdGlvbiBvZiB0aGUgQ29udHJpYnV0aW9uIGNhdXNlcworICAgIHN1Y2ggY29tYmluYXRpb24gdG8gYmUgY292ZXJlZCBieSB0aGUgTGljZW5zZWQgUGF0ZW50cy4gVGhlIHBhdGVudCBsaWNlbnNlIHNoYWxsIG5vdCBhcHBseQorICAgIHRvIGFueSBvdGhlciBjb21iaW5hdGlvbnMgd2hpY2ggaW5jbHVkZSB0aGUgQ29udHJpYnV0aW9uLiBObyBoYXJkd2FyZSBwZXIgc2UgaXMgbGljZW5zZWQKKyAgICBoZXJldW5kZXIuIDwvcD4KKyAgICA8cD5jKSBSZWNpcGllbnQgdW5kZXJzdGFuZHMgdGhhdCBhbHRob3VnaCBlYWNoIENvbnRyaWJ1dG9yIGdyYW50cyB0aGUgbGljZW5zZXMgdG8gaXRzCisgICAgQ29udHJpYnV0aW9ucyBzZXQgZm9ydGggaGVyZWluLCBubyBhc3N1cmFuY2VzIGFyZSBwcm92aWRlZCBieSBhbnkgQ29udHJpYnV0b3IgdGhhdCB0aGUKKyAgICBQcm9ncmFtIGRvZXMgbm90IGluZnJpbmdlIHRoZSBwYXRlbnQgb3Igb3RoZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBvZiBhbnkgb3RoZXIKKyAgICBlbnRpdHkuIEVhY2ggQ29udHJpYnV0b3IgZGlzY2xhaW1zIGFueSBsaWFiaWxpdHkgdG8gUmVjaXBpZW50IGZvciBjbGFpbXMgYnJvdWdodCBieSBhbnkKKyAgICBvdGhlciBlbnRpdHkgYmFzZWQgb24gaW5mcmluZ2VtZW50IG9mIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgb3Igb3RoZXJ3aXNlLiBBcyBhCisgICAgY29uZGl0aW9uIHRvIGV4ZXJjaXNpbmcgdGhlIHJpZ2h0cyBhbmQgbGljZW5zZXMgZ3JhbnRlZCBoZXJldW5kZXIsIGVhY2ggUmVjaXBpZW50IGhlcmVieQorICAgIGFzc3VtZXMgc29sZSByZXNwb25zaWJpbGl0eSB0byBzZWN1cmUgYW55IG90aGVyIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgbmVlZGVkLCBpZgorICAgIGFueS4gRm9yIGV4YW1wbGUsIGlmIGEgdGhpcmQgcGFydHkgcGF0ZW50IGxpY2Vuc2UgaXMgcmVxdWlyZWQgdG8gYWxsb3cgUmVjaXBpZW50IHRvCisgICAgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSwgaXQgaXMgUmVjaXBpZW50JiMxNDY7cyByZXNwb25zaWJpbGl0eSB0byBhY3F1aXJlIHRoYXQgbGljZW5zZQorICAgIGJlZm9yZSBkaXN0cmlidXRpbmcgdGhlIFByb2dyYW0uPC9wPgorICAgIDxwPmQpIEVhY2ggQ29udHJpYnV0b3IgcmVwcmVzZW50cyB0aGF0IHRvIGl0cyBrbm93bGVkZ2UgaXQgaGFzIHN1ZmZpY2llbnQgY29weXJpZ2h0IHJpZ2h0cworICAgIGluIGl0cyBDb250cmlidXRpb24sIGlmIGFueSwgdG8gZ3JhbnQgdGhlIGNvcHlyaWdodCBsaWNlbnNlIHNldCBmb3J0aCBpbiB0aGlzIEFncmVlbWVudC4gPC9wPgorICA8L2Jsb2NrcXVvdGU+Cis8L2Jsb2NrcXVvdGU+Cis8Yj4KKworPHA+My4gUkVRVUlSRU1FTlRTPC9wPgorPC9iPgorCis8cD5BIENvbnRyaWJ1dG9yIG1heSBjaG9vc2UgdG8gZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBpbiBvYmplY3QgY29kZSBmb3JtIHVuZGVyIGl0cyBvd24KK2xpY2Vuc2UgYWdyZWVtZW50LCBwcm92aWRlZCB0aGF0OjwvcD4KKworPGJsb2NrcXVvdGU+CisgIDxibG9ja3F1b3RlPgorICAgIDxwPmEpIGl0IGNvbXBsaWVzIHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoaXMgQWdyZWVtZW50OyBhbmQ8L3A+CisgICAgPHA+YikgaXRzIGxpY2Vuc2UgYWdyZWVtZW50OjwvcD4KKyAgICA8YmxvY2txdW90ZT4KKyAgICAgIDxwPmkpIGVmZmVjdGl2ZWx5IGRpc2NsYWltcyBvbiBiZWhhbGYgb2YgYWxsIENvbnRyaWJ1dG9ycyBhbGwgd2FycmFudGllcyBhbmQgY29uZGl0aW9ucywKKyAgICAgIGV4cHJlc3MgYW5kIGltcGxpZWQsIGluY2x1ZGluZyB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMgb2YgdGl0bGUgYW5kIG5vbi1pbmZyaW5nZW1lbnQsIGFuZAorICAgICAgaW1wbGllZCB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMgb2YgbWVyY2hhbnRhYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZTsgPC9wPgorICAgICAgPHA+aWkpIGVmZmVjdGl2ZWx5IGV4Y2x1ZGVzIG9uIGJlaGFsZiBvZiBhbGwgQ29udHJpYnV0b3JzIGFsbCBsaWFiaWxpdHkgZm9yIGRhbWFnZXMsCisgICAgICBpbmNsdWRpbmcgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwgaW5jaWRlbnRhbCBhbmQgY29uc2VxdWVudGlhbCBkYW1hZ2VzLCBzdWNoIGFzIGxvc3QKKyAgICAgIHByb2ZpdHM7IDwvcD4KKyAgICAgIDxwPmlpaSkgc3RhdGVzIHRoYXQgYW55IHByb3Zpc2lvbnMgd2hpY2ggZGlmZmVyIGZyb20gdGhpcyBBZ3JlZW1lbnQgYXJlIG9mZmVyZWQgYnkgdGhhdAorICAgICAgQ29udHJpYnV0b3IgYWxvbmUgYW5kIG5vdCBieSBhbnkgb3RoZXIgcGFydHk7IGFuZDwvcD4KKyAgICAgIDxwPml2KSBzdGF0ZXMgdGhhdCBzb3VyY2UgY29kZSBmb3IgdGhlIFByb2dyYW0gaXMgYXZhaWxhYmxlIGZyb20gc3VjaCBDb250cmlidXRvciwgYW5kCisgICAgICBpbmZvcm1zIGxpY2Vuc2VlcyBob3cgdG8gb2J0YWluIGl0IGluIGEgcmVhc29uYWJsZSBtYW5uZXIgb24gb3IgdGhyb3VnaCBhIG1lZGl1bQorICAgICAgY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgZXhjaGFuZ2UuPGZvbnQgQ09MT1I9IiMwMDAwZmYiPiA8L3A+CisgICAgICA8L2ZvbnQ+CisgICAgPC9ibG9ja3F1b3RlPgorICA8L2Jsb2NrcXVvdGU+Cis8L2Jsb2NrcXVvdGU+CisKKzxwPldoZW4gdGhlIFByb2dyYW0gaXMgbWFkZSBhdmFpbGFibGUgaW4gc291cmNlIGNvZGUgZm9ybTo8L3A+CisKKzxibG9ja3F1b3RlPgorICA8YmxvY2txdW90ZT4KKyAgICA8cD5hKSBpdCBtdXN0IGJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoaXMgQWdyZWVtZW50OyBhbmQgPC9wPgorICAgIDxwPmIpIGEgY29weSBvZiB0aGlzIEFncmVlbWVudCBtdXN0IGJlIGluY2x1ZGVkIHdpdGggZWFjaCBjb3B5IG9mIHRoZSBQcm9ncmFtLiA8L3A+CisgICAgPGZvbnQgQ09MT1I9IiMwMDAwZmYiPjxzdHJpa2U+CisgIDwvYmxvY2txdW90ZT4KKzwvYmxvY2txdW90ZT4KKzwvc3RyaWtlPjwvZm9udD4KKworPHA+RWFjaCBDb250cmlidXRvciBtdXN0IGluY2x1ZGUgdGhlIGZvbGxvd2luZyBpbiBhIGNvbnNwaWN1b3VzIGxvY2F0aW9uIGluIHRoZSBQcm9ncmFtOiA8L3A+CisKKzxibG9ja3F1b3RlPgorICA8cD5Db3B5cmlnaHQgPGZvbnQgRkFDRT0iVGltZXMgTmV3IFJvbWFuIj6pPC9mb250Pjxmb250IENPTE9SPSIjZmYwMDAwIj4gPC9mb250PjE5OTksCisgIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gPC9wPgorPC9ibG9ja3F1b3RlPgorCis8cD5JbiBhZGRpdGlvbiwgZWFjaCBDb250cmlidXRvciBtdXN0IGlkZW50aWZ5IGl0c2VsZiBhcyB0aGUgb3JpZ2luYXRvciBvZiBpdHMKK0NvbnRyaWJ1dGlvbiwgaWYgYW55LCBpbiBhIG1hbm5lciB0aGF0IHJlYXNvbmFibHkgYWxsb3dzIHN1YnNlcXVlbnQgUmVjaXBpZW50cyB0byBpZGVudGlmeQordGhlIG9yaWdpbmF0b3Igb2YgdGhlIENvbnRyaWJ1dGlvbi4gPC9wPgorPGI+CisKKzxwPjQuIENPTU1FUkNJQUwgRElTVFJJQlVUSU9OPC9wPgorPC9iPgorCis8cD5Db21tZXJjaWFsIGRpc3RyaWJ1dG9ycyBvZiBzb2Z0d2FyZSBtYXkgYWNjZXB0IGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyB3aXRoIHJlc3BlY3QgdG8KK2VuZCB1c2VycywgYnVzaW5lc3MgcGFydG5lcnMgYW5kIHRoZSBsaWtlLiBXaGlsZSB0aGlzIGxpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZmFjaWxpdGF0ZQordGhlIGNvbW1lcmNpYWwgdXNlIG9mIHRoZSBQcm9ncmFtLCB0aGUgQ29udHJpYnV0b3Igd2hvIGluY2x1ZGVzIHRoZSBQcm9ncmFtIGluIGEKK2NvbW1lcmNpYWwgcHJvZHVjdCBvZmZlcmluZyBzaG91bGQgZG8gc28gaW4gYSBtYW5uZXIgd2hpY2ggZG9lcyBub3QgY3JlYXRlIHBvdGVudGlhbAorbGlhYmlsaXR5IGZvciBvdGhlciBDb250cmlidXRvcnMuIFRoZXJlZm9yZSwgaWYgYSBDb250cmlidXRvciBpbmNsdWRlcyB0aGUgUHJvZ3JhbSBpbiBhCitjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcsIHN1Y2ggQ29udHJpYnV0b3IgKCZxdW90O0NvbW1lcmNpYWwgQ29udHJpYnV0b3ImcXVvdDspIGhlcmVieQorYWdyZWVzIHRvIGRlZmVuZCBhbmQgaW5kZW1uaWZ5IGV2ZXJ5IG90aGVyIENvbnRyaWJ1dG9yICgmcXVvdDtJbmRlbW5pZmllZAorQ29udHJpYnV0b3ImcXVvdDspIGFnYWluc3QgYW55IGxvc3NlcywgZGFtYWdlcyBhbmQgY29zdHMgKGNvbGxlY3RpdmVseSAmcXVvdDtMb3NzZXMmcXVvdDspCithcmlzaW5nIGZyb20gY2xhaW1zLCBsYXdzdWl0cyBhbmQgb3RoZXIgbGVnYWwgYWN0aW9ucyBicm91Z2h0IGJ5IGEgdGhpcmQgcGFydHkgYWdhaW5zdCB0aGUKK0luZGVtbmlmaWVkIENvbnRyaWJ1dG9yIHRvIHRoZSBleHRlbnQgY2F1c2VkIGJ5IHRoZSBhY3RzIG9yIG9taXNzaW9ucyBvZiBzdWNoIENvbW1lcmNpYWwKK0NvbnRyaWJ1dG9yIGluIGNvbm5lY3Rpb24gd2l0aCBpdHMgZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0CitvZmZlcmluZy4gVGhlIG9ibGlnYXRpb25zIGluIHRoaXMgc2VjdGlvbiBkbyBub3QgYXBwbHkgdG8gYW55IGNsYWltcyBvciBMb3NzZXMgcmVsYXRpbmcgdG8KK2FueSBhY3R1YWwgb3IgYWxsZWdlZCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgaW5mcmluZ2VtZW50LiBJbiBvcmRlciB0byBxdWFsaWZ5LCBhbgorSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgbXVzdDogYSkgcHJvbXB0bHkgbm90aWZ5IHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluIHdyaXRpbmcgb2YKK3N1Y2ggY2xhaW0sIGFuZCBiKSBhbGxvdyB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciB0byBjb250cm9sLCBhbmQgY29vcGVyYXRlIHdpdGggdGhlCitDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluLCB0aGUgZGVmZW5zZSBhbmQgYW55IHJlbGF0ZWQgc2V0dGxlbWVudCBuZWdvdGlhdGlvbnMuIFRoZQorSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgbWF5IHBhcnRpY2lwYXRlIGluIGFueSBzdWNoIGNsYWltIGF0IGl0cyBvd24gZXhwZW5zZS48L3A+CisKKzxwPkZvciBleGFtcGxlLCBhIENvbnRyaWJ1dG9yIG1pZ2h0IGluY2x1ZGUgdGhlIFByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcsCitQcm9kdWN0IFguIFRoYXQgQ29udHJpYnV0b3IgaXMgdGhlbiBhIENvbW1lcmNpYWwgQ29udHJpYnV0b3IuIElmIHRoYXQgQ29tbWVyY2lhbAorQ29udHJpYnV0b3IgdGhlbiBtYWtlcyBwZXJmb3JtYW5jZSBjbGFpbXMsIG9yIG9mZmVycyB3YXJyYW50aWVzIHJlbGF0ZWQgdG8gUHJvZHVjdCBYLAordGhvc2UgcGVyZm9ybWFuY2UgY2xhaW1zIGFuZCB3YXJyYW50aWVzIGFyZSBzdWNoIENvbW1lcmNpYWwgQ29udHJpYnV0b3ImIzE0NjtzCityZXNwb25zaWJpbGl0eSBhbG9uZS4gVW5kZXIgdGhpcyBzZWN0aW9uLCB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciB3b3VsZCBoYXZlIHRvIGRlZmVuZAorY2xhaW1zIGFnYWluc3QgdGhlIG90aGVyIENvbnRyaWJ1dG9ycyByZWxhdGVkIHRvIHRob3NlIHBlcmZvcm1hbmNlIGNsYWltcyBhbmQgd2FycmFudGllcywKK2FuZCBpZiBhIGNvdXJ0IHJlcXVpcmVzIGFueSBvdGhlciBDb250cmlidXRvciB0byBwYXkgYW55IGRhbWFnZXMgYXMgYSByZXN1bHQsIHRoZQorQ29tbWVyY2lhbCBDb250cmlidXRvciBtdXN0IHBheSB0aG9zZSBkYW1hZ2VzLjwvcD4KKzxiPgorCis8cD41LiBOTyBXQVJSQU5UWTwvcD4KKzwvYj4KKworPHA+RVhDRVBUIEFTIEVYUFJFU1NMWSBTRVQgRk9SVEggSU4gVEhJUyBBR1JFRU1FTlQsIFRIRSBQUk9HUkFNIElTIFBST1ZJREVEIE9OIEFOICZxdW90O0FTCitJUyZxdW90OyBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQKK0lOQ0xVRElORywgV0lUSE9VVCBMSU1JVEFUSU9OLCBBTlkgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULAorTUVSQ0hBTlRBQklMSVRZIE9SIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBFYWNoIFJlY2lwaWVudCBpcyBzb2xlbHkgcmVzcG9uc2libGUKK2ZvciBkZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIGFuZCBkaXN0cmlidXRpbmcgdGhlIFByb2dyYW0gYW5kIGFzc3VtZXMgYWxsCityaXNrcyBhc3NvY2lhdGVkIHdpdGggaXRzIGV4ZXJjaXNlIG9mIHJpZ2h0cyB1bmRlciB0aGlzIEFncmVlbWVudCwgaW5jbHVkaW5nIGJ1dCBub3QKK2xpbWl0ZWQgdG8gdGhlIHJpc2tzIGFuZCBjb3N0cyBvZiBwcm9ncmFtIGVycm9ycywgY29tcGxpYW5jZSB3aXRoIGFwcGxpY2FibGUgbGF3cywgZGFtYWdlCit0byBvciBsb3NzIG9mIGRhdGEsIHByb2dyYW1zIG9yIGVxdWlwbWVudCwgYW5kIHVuYXZhaWxhYmlsaXR5IG9yIGludGVycnVwdGlvbiBvZgorb3BlcmF0aW9ucy4gPC9wPgorPGI+CisKKzxwPjYuIERJU0NMQUlNRVIgT0YgTElBQklMSVRZPC9wPgorPC9iPgorCis8cD5FWENFUFQgQVMgRVhQUkVTU0xZIFNFVCBGT1JUSCBJTiBUSElTIEFHUkVFTUVOVCwgTkVJVEhFUiBSRUNJUElFTlQgTk9SIEFOWSBDT05UUklCVVRPUlMKK1NIQUxMIEhBVkUgQU5ZIExJQUJJTElUWSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKK0NPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBMT1NUIFBST0ZJVFMpLCBIT1dFVkVSIENBVVNFRCBBTkQgT04KK0FOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcKK05FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT1IgRElTVFJJQlVUSU9OIE9GIFRIRSBQUk9HUkFNCitPUiBUSEUgRVhFUkNJU0UgT0YgQU5ZIFJJR0hUUyBHUkFOVEVEIEhFUkVVTkRFUiwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorU1VDSCBEQU1BR0VTLjwvcD4KKzxiPgorCis8cD43LiBHRU5FUkFMPC9wPgorPC9iPgorCis8cD5JZiBhbnkgcHJvdmlzaW9uIG9mIHRoaXMgQWdyZWVtZW50IGlzIGludmFsaWQgb3IgdW5lbmZvcmNlYWJsZSB1bmRlciBhcHBsaWNhYmxlIGxhdywgaXQKK3NoYWxsIG5vdCBhZmZlY3QgdGhlIHZhbGlkaXR5IG9yIGVuZm9yY2VhYmlsaXR5IG9mIHRoZSByZW1haW5kZXIgb2YgdGhlIHRlcm1zIG9mIHRoaXMKK0FncmVlbWVudCwgYW5kIHdpdGhvdXQgZnVydGhlciBhY3Rpb24gYnkgdGhlIHBhcnRpZXMgaGVyZXRvLCBzdWNoIHByb3Zpc2lvbiBzaGFsbCBiZQorcmVmb3JtZWQgdG8gdGhlIG1pbmltdW0gZXh0ZW50IG5lY2Vzc2FyeSB0byBtYWtlIHN1Y2ggcHJvdmlzaW9uIHZhbGlkIGFuZCBlbmZvcmNlYWJsZS48L3A+CisKKzxwPklmIFJlY2lwaWVudCBpbnN0aXR1dGVzIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYSBDb250cmlidXRvciB3aXRoIHJlc3BlY3QgdG8gYQorcGF0ZW50IGFwcGxpY2FibGUgdG8gc29mdHdhcmUgKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpLCB0aGVuCithbnkgcGF0ZW50IGxpY2Vuc2VzIGdyYW50ZWQgYnkgdGhhdCBDb250cmlidXRvciB0byBzdWNoIFJlY2lwaWVudCB1bmRlciB0aGlzIEFncmVlbWVudAorc2hhbGwgdGVybWluYXRlIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4gSW4gYWRkaXRpb24sIElmIFJlY2lwaWVudAoraW5zdGl0dXRlcyBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGluZyBhIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbQoraW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBQcm9ncmFtIGl0c2VsZiAoZXhjbHVkaW5nIGNvbWJpbmF0aW9ucyBvZiB0aGUgUHJvZ3JhbSB3aXRoCitvdGhlciBzb2Z0d2FyZSBvciBoYXJkd2FyZSkgaW5mcmluZ2VzIHN1Y2ggUmVjaXBpZW50JiMxNDY7cyBwYXRlbnQocyksIHRoZW4gc3VjaAorUmVjaXBpZW50JiMxNDY7cyByaWdodHMgZ3JhbnRlZCB1bmRlciBTZWN0aW9uIDIoYikgc2hhbGwgdGVybWluYXRlIGFzIG9mIHRoZSBkYXRlIHN1Y2gKK2xpdGlnYXRpb24gaXMgZmlsZWQuIDwvcD4KKworPHA+QWxsIFJlY2lwaWVudCYjMTQ2O3MgcmlnaHRzIHVuZGVyIHRoaXMgQWdyZWVtZW50IHNoYWxsIHRlcm1pbmF0ZSBpZiBpdCBmYWlscyB0byBjb21wbHkKK3dpdGggYW55IG9mIHRoZSBtYXRlcmlhbCB0ZXJtcyBvciBjb25kaXRpb25zIG9mIHRoaXMgQWdyZWVtZW50IGFuZCBkb2VzIG5vdCBjdXJlIHN1Y2gKK2ZhaWx1cmUgaW4gYSByZWFzb25hYmxlIHBlcmlvZCBvZiB0aW1lIGFmdGVyIGJlY29taW5nIGF3YXJlIG9mIHN1Y2ggbm9uY29tcGxpYW5jZS4gSWYgYWxsCitSZWNpcGllbnQmIzE0NjtzIHJpZ2h0cyB1bmRlciB0aGlzIEFncmVlbWVudCB0ZXJtaW5hdGUsIFJlY2lwaWVudCBhZ3JlZXMgdG8gY2Vhc2UgdXNlIGFuZAorZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGFzIHNvb24gYXMgcmVhc29uYWJseSBwcmFjdGljYWJsZS4gSG93ZXZlciwgUmVjaXBpZW50J3MKK29ibGlnYXRpb25zIHVuZGVyIHRoaXMgQWdyZWVtZW50IGFuZCBhbnkgbGljZW5zZXMgZ3JhbnRlZCBieSBSZWNpcGllbnQgcmVsYXRpbmcgdG8gdGhlCitQcm9ncmFtIHNoYWxsIGNvbnRpbnVlIGFuZCBzdXJ2aXZlLiA8L3A+CisKKzxwPklCTSBtYXkgcHVibGlzaCBuZXcgdmVyc2lvbnMgKGluY2x1ZGluZyByZXZpc2lvbnMpIG9mIHRoaXMgQWdyZWVtZW50IGZyb20gdGltZSB0byB0aW1lLgorRWFjaCBuZXcgdmVyc2lvbiBvZiB0aGUgQWdyZWVtZW50IHdpbGwgYmUgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gVGhlCitQcm9ncmFtIChpbmNsdWRpbmcgQ29udHJpYnV0aW9ucykgbWF5IGFsd2F5cyBiZSBkaXN0cmlidXRlZCBzdWJqZWN0IHRvIHRoZSB2ZXJzaW9uIG9mIHRoZQorQWdyZWVtZW50IHVuZGVyIHdoaWNoIGl0IHdhcyByZWNlaXZlZC4gSW4gYWRkaXRpb24sIGFmdGVyIGEgbmV3IHZlcnNpb24gb2YgdGhlIEFncmVlbWVudAoraXMgcHVibGlzaGVkLCBDb250cmlidXRvciBtYXkgZWxlY3QgdG8gZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAoaW5jbHVkaW5nIGl0cworQ29udHJpYnV0aW9ucykgdW5kZXIgdGhlIG5ldyB2ZXJzaW9uLiBObyBvbmUgb3RoZXIgdGhhbiBJQk0gaGFzIHRoZSByaWdodCB0byBtb2RpZnkgdGhpcworQWdyZWVtZW50LiBFeGNlcHQgYXMgZXhwcmVzc2x5IHN0YXRlZCBpbiBTZWN0aW9ucyAyKGEpIGFuZCAyKGIpIGFib3ZlLCBSZWNpcGllbnQgcmVjZWl2ZXMKK25vIHJpZ2h0cyBvciBsaWNlbnNlcyB0byB0aGUgaW50ZWxsZWN0dWFsIHByb3BlcnR5IG9mIGFueSBDb250cmlidXRvciB1bmRlciB0aGlzCitBZ3JlZW1lbnQsIHdoZXRoZXIgZXhwcmVzc2x5LCBieSBpbXBsaWNhdGlvbiwgZXN0b3BwZWwgb3Igb3RoZXJ3aXNlLiBBbGwgcmlnaHRzIGluIHRoZQorUHJvZ3JhbSBub3QgZXhwcmVzc2x5IGdyYW50ZWQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgYXJlIHJlc2VydmVkLjwvcD4KKworPHA+VGhpcyBBZ3JlZW1lbnQgaXMgZ292ZXJuZWQgYnkgdGhlIGxhd3Mgb2YgdGhlIFN0YXRlIG9mIE5ldyBZb3JrIGFuZCB0aGUgaW50ZWxsZWN0dWFsCitwcm9wZXJ0eSBsYXdzIG9mIHRoZSBVbml0ZWQgU3RhdGVzIG9mIEFtZXJpY2EuIE5vIHBhcnR5IHRvIHRoaXMgQWdyZWVtZW50IHdpbGwgYnJpbmcgYQorbGVnYWwgYWN0aW9uIHVuZGVyIHRoaXMgQWdyZWVtZW50IG1vcmUgdGhhbiBvbmUgeWVhciBhZnRlciB0aGUgY2F1c2Ugb2YgYWN0aW9uIGFyb3NlLiBFYWNoCitwYXJ0eSB3YWl2ZXMgaXRzIHJpZ2h0cyB0byBhIGp1cnkgdHJpYWwgaW4gYW55IHJlc3VsdGluZyBsaXRpZ2F0aW9uLiA8L3A+Cis8L2ZvbnQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9yZWFkbWUuaHRtbCBiL3JlYWRtZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjNGZlNzIKLS0tIC9kZXYvbnVsbAorKysgYi9yZWFkbWUuaHRtbApAQCAtMCwwICsxLDM4NiBAQAorPCFkb2N0eXBlIGh0bWwgcHVibGljICItLy93M2MvL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvL2VuIj4KKzxodG1sPgorCis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEiPgorPHRpdGxlPlJlYWRNZSBmb3IgSUNVNEo8L3RpdGxlPgorPC9oZWFkPgorCis8Ym9keSBiZ2NvbG9yPSIjRkZGRkZGIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzgwMDA4MCIgbGFuZz0iRU4tVVMiPgorCis8aDI+UmVhZE1lOiBJbnRlcm5hdGlvbmFsIENvbXBvbmVudHMgZm9yIFVuaWNvZGUgZm9yIEphdmE8L2gyPgorCis8cD5WZXJzaW9uOiAxLjMgTWFyIDIzIDIwMDEgPC9wPgorCis8aHIgc2l6ZT0iMiIgd2lkdGg9IjEwMCUiIGFsaWduPSJjZW50ZXIiPgorCis8cD5DT1BZUklHSFQ6IDxicj4KK0NvcHlyaWdodCAoYykgMjAwMSBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMKK1Jlc2VydmVkLiA8L3A+CisKKzxociBzaXplPSIyIiB3aWR0aD0iMTAwJSIgYWxpZ249ImNlbnRlciI+CisKKzxoMz48dT5Db250ZW50czwvdT48L2gzPgorCis8dWwgdHlwZT0iZGlzYyI+CisgIDxsaT48YSBocmVmPSIjaW50cm9kdWN0aW9uIj5JbnRyb2R1Y3Rpb248L2E+PC9saT4KKyAgPGxpPjxhIGhyZWY9IiNXaGF0Q29udGFpbiI+V2hhdCB0aGUgSW50ZXJuYXRpb25hbCBDb21wb25lbnRzIGZvciBVbmljb2RlIGZvciBKYXZhIENvbnRhaW5zPC9hPjwvbGk+CisgIDxsaT48YSBocmVmPSIjQVBJIj5BUEkgb3ZlcnZpZXc8L2E+PC9saT4KKyAgPGxpPjxhIGhyZWY9IiNQbGF0Zm9ybURlcGVuZGVuY2llcyI+UGxhdGZvcm0gRGVwZW5kZW5jaWVzPC9hPjwvbGk+CisgIDxsaT48YSBocmVmPSIjSG93VG9JbnN0YWxsSmF2YWMiPkhvdyB0byBJbnN0YWxsIGFuZCBCdWlsZDwvYT48L2xpPgorICA8bGk+PGEgaHJlZj0iI1doZXJlVG9GaW5kTW9yZSI+V2hlcmUgdG8gRmluZCBNb3JlIEluZm9ybWF0aW9uPC9hPjwvbGk+CisgIDxsaT48YSBocmVmPSIjU3VibWl0dGluZ0NvbW1lbnRzIj5TdWJtaXR0aW5nIENvbW1lbnRzLCBSZXF1ZXN0aW5nIEZlYXR1cmVzIGFuZCBSZXBvcnRpbmcKKyAgICBCdWdzPC9hPjwvbGk+Cis8L3VsPgorCis8aDM+PGEgTkFNRT0iaW50cm9kdWN0aW9uIj48L2E+PHU+SW50cm9kdWN0aW9uPC91PjwvaDM+CisKKzxwPlRvZGF5J3Mgc29mdHdhcmUgbWFya2V0IGlzIGEgZ2xvYmFsIG9uZSBpbiB3aGljaCBpdCBpcyBkZXNpcmFibGUgdG8gZGV2ZWxvcCBhbmQKK21haW50YWluIG9uZSBhcHBsaWNhdGlvbiB0aGF0IHN1cHBvcnRzIGEgd2lkZSB2YXJpZXR5IG9mIG5hdGlvbmFsIGxhbmd1YWdlcy4gSW50ZXJuYXRpb25hbAorQ29tcG9uZW50cyBmb3IgVW5pY29kZSBmb3IgSmF2YSBwcm92aWRlcyB0aGUgZm9sbG93aW5nIHRvb2xzIHRvIGhlbHAgeW91IHdyaXRlIGxhbmd1YWdlCitpbmRlcGVuZGVudCBhcHBsaWNhdGlvbnM6IAorCis8dWwgdHlwZT0iZGlzYyI+CisgIDxsaT5JbnRlcm5hdGlvbmFsIENhbGVuZGFycyAmIzE1MDsgQXJhYmljLCBCdWRkaGlzdCwgSGVicmV3LCBKYXBhbmVzZTwvbGk+CisgIDxsaT5Vbmljb2RlIE5vcm1hbGl6YXRpb24gJiMxNTA7IENhbm9uaWNhbCB0ZXh0IHJlcHJlc2VudGF0aW9uIGZvciBXM0M8L2xpPgorICA8bGk+TnVtYmVyIEZvcm1hdCBFbmhhbmNlbWVudHMgJiMxNTA7IFNjaWVudGlmaWMgTm90YXRpb24sIFNwZWxsZWQtb3V0LCAuLi48L2xpPgorICA8bGk+RW5oYW5jZWQgd29yZC1icmVhayBkZXRlY3Rpb24gJiMxNTA7IFJ1bGUtYmFzZWQsIHN1cHBvcnRzIFRoYWk8L2xpPgorICA8bGk+VW5pY29kZSBUZXh0IFNlYXJjaGluZyAmIzE1MDsgRWZmaWNpZW50IG11bHRpLWxpbmd1YWwgc2VhcmNoaW5nPC9saT4KKyAgPGxpPlVuaWNvZGUgVGV4dCBDb21wcmVzc2lvbiAmIzE1MDsgMjoxIGNvbXByZXNzaW9uIG9uIEVuZ2xpc2ggVW5pY29kZSB0ZXh0PC9saT4KKzwvdWw+CisKKzxwPllvdXIgY29tbWVudHMgYXJlIGltcG9ydGFudCB0byBtYWtpbmcgdGhpcyByZWxlYXNlIHN1Y2Nlc3NmdWwuJm5ic3A7IFdlIGFyZSBjb21taXR0ZWQKK3RvIGZpeGluZyBhbnkgYnVncywgYW5kIHdpbGwgYWxzbyB1c2UgeW91ciBmZWVkYmFjayB0byBoZWxwIHBsYW4gZnV0dXJlIHJlbGVhc2VzLiA8L3A+CisKKzxwPjxiPjx1PklNUE9SVEFOVDwvdT46IFBsZWFzZSBtYWtlIHN1cmUgeW91IHVuZGVyc3RhbmQgdGhlIDxhIGhyZWY9ImxpY2Vuc2UuaHRtbCI+Q29weXJpZ2h0CithbmQgTGljZW5zZSBpbmZvcm1hdGlvbjwvYT4uPC9iPjwvcD4KKworPGgzPjxhIE5BTUU9IldoYXRDb250YWluIj48L2E+PHU+V2hhdCB0aGUgSW50ZXJuYXRpb25hbCBDb21wb25lbnRzIGZvciBVbmljb2RlIGZvciBKYXZhCitDb250YWluczwvdT48L2gzPgorCis8cD5UaGVyZSBhcmUgdHdvIHdheXMgdG8gZG93bmxvYWQgdGhlIElDVTRKIHJlbGVhc2VzLCAKKworPHVsIHR5cGU9ImRpc2MiPgorICA8bGk+PGI+T2ZmaWNpYWwgUmVsZWFzZSBTbmFwc2hvdDo8L2I+PGJyPgorICAgIElmIHlvdSB3YW50IHRvIHVzZSBJQ1U0SiAoYXMgb3Bwb3NlZCB0byBkZXZlbG9waW5nIGl0KSwgeW91ciBiZXN0IGJldCBpcyB0byBkb3dubG9hZCBhbgorICAgIG9mZmljaWFsLCBwYWNrYWdlZCBJQ1U0SiB2ZXJzaW9uIG9mIHRoZSBJQ1U0SiBzb3VyY2UgY29kZS4mbmJzcDsgVGhlc2UgdmVyc2lvbnMgYXJlIHRlc3RlZAorICAgIG1vcmUgdGhvcm91Z2hseSB0aGFuIGRheS10by1kYXkgZGV2ZWxvcG1lbnQgYnVpbGRzLCBhbmQgdGhleSBhcmUgcGFja2FnZWQgaW4gemlwIGFuZCB0YXIKKyAgICBmaWxlcyBmb3IgY29udmVuaWVudCBkb3dubG9hZC4mbmJzcDsgVGhlc2UgcGFja2FnZWQgZmlsZXMgY2FuIGJlIGZvdW5kIGF0IDxhCisgICAgaHJlZj0iaHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvaWN1NGovZG93bmxvYWQvaW5kZXguaHRtbCI+aHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvaWN1NGovZG93bmxvYWQvaW5kZXguaHRtbDwvYT4uCisgICAgPGJyPgorICAgIElmIHBhY2thZ2VkIHNuYXBzaG90IGlzIG5hbWVkIDxiPklDVTRKWFhYWFhYLnppcCA8L2I+LCBYWFhYWFggaXMgdGhlIHJlbGVhc2UgdmVyc2lvbgorICAgIG51bWJlci4gPGJyPgorICAgIFBsZWFzZSB1bnppcCB0aGlzIGZpbGUuJm5ic3A7IEl0IHdpbGwgcmUtY29uc3RydWN0IHRoZSBzb3VyY2UgZGlyZWN0b3J5LiA8L2xpPgorPC91bD4KKworPHVsIHR5cGU9ImRpc2MiPgorICA8bGk+PGI+Q1ZTIFNvdXJjZSBSZXBvc2l0b3J5OjwvYj48YnI+CisgICAgSWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIGRldmVsb3BpbmcgZmVhdHVyZXMsIHBhdGNoZXMsIG9yIGJ1ZyBmaXhlcyBmb3IgSUNVNEosIHlvdSBzaG91bGQKKyAgICBwcm9iYWJseSBiZSB3b3JraW5nIHdpdGggdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBJQ1U0SiBzb3VyY2UgY29kZS4gWW91IHdpbGwgbmVlZCB0bworICAgIGNoZWNrIHRoZSBjb2RlIG91dCBvZiBvdXIgQ1ZTIHJlcG9zaXRvcnkgdG8gZW5zdXJlIHRoYXQgeW91IGhhdmUgdGhlIG1vc3QgcmVjZW50IHZlcnNpb24KKyAgICBvZiBhbGwgb2YgdGhlIGZpbGVzLiBUaGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHRvIGRvIHRoaXM6IDxicj4KKyAgICA8dWwgdHlwZT0iY2lyY2xlIj4KKyAgICAgIDxsaT5XZWJDVlM6PGJyPgorICAgICAgICBJZiB5b3Ugd2FudCB0byBicm93c2UgdGhlIGNvZGUgYW5kIG9ubHkgbWFrZSBvY2Nhc2lvbmFsIGRvd25sb2FkcywgeW91IG1heSB3YW50IHRvIHVzZQorICAgICAgICBXZWJDVlMuIEl0IHByb3ZpZGVzIGEgY29udmVuaWVudCwgd2ViLWJhc2VkIGludGVyZmFjZSBmb3IgYnJvd3NpbmcgYW5kIGRvd25sb2FkaW5nIHRoZQorICAgICAgICBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgSUNVNEogc291cmNlIGNvZGUgYW5kIGRvY3VtZW50YXRpb24uIFlvdSBjYW4gYWxzbyB2aWV3IGVhY2ggZmlsZSdzCisgICAgICAgIHJldmlzaW9uIGhpc3RvcnksIGRpc3BsYXkgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gaW5kaXZpZHVhbCByZXZpc2lvbnMsIGRldGVybWluZSB3aGljaAorICAgICAgICByZXZpc2lvbnMgd2VyZSBwYXJ0IG9mIHdoaWNoIG9mZmljaWFsIHJlbGVhc2UsIGFuZCBzbyBvbi4gPGJyPgorICAgICAgPC9saT4KKyAgICAgIDxsaT5XaW5DVlM6PGJyPgorICAgICAgICBJZiB5b3Ugd2lsbCBiZSBkb2luZyBzZXJpb3VzIHdvcmsgb24gSUNVNEosIHlvdSBzaG91bGQgcHJvYmFibHkgaW5zdGFsbCBhIENWUyBjbGllbnQgb24KKyAgICAgICAgeW91ciBvd24gbWFjaGluZSBzbyB0aGF0IHlvdSBjYW4gZG8gYmF0Y2ggb3BlcmF0aW9ucyB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIFdlYkNWUworICAgICAgICBpbnRlcmZhY2UuIE9uIFdpbmRvd3MsIHdlIHN1Z2dlc3QgdGhlIFdpbkNWUyBjbGllbnQuIFRoZSBmb2xsb3dpbmcgaXMgdGhlIGV4YW1wbGUKKyAgICAgICAgaW5zdHJ1Y3Rpb24gb24gaG93IHRvIGRvd25sb2FkIElDVTRKIHZpYSBXaW5DVlM6IDxvbD4KKyAgICAgICAgICA8bGk+SW5zdGFsbCB0aGUgV2luQ1ZTIGNsaWVudCwgd2hpY2ggeW91IGNhbiBkb3dubG9hZCBmcm9tIHRoZSA8YQorICAgICAgICAgICAgaHJlZj0iaHR0cDovL3d3dy53aW5jdnMub3JnIj5odHRwOi8vd3d3LndpbmN2cy5vcmc8L2E+LjwvbGk+CisgICAgICAgICAgPGxpPlNlbGVjdCA8c3Ryb25nPlByZWZlcmVuY2VzPC9zdHJvbmc+IGZyb20gdGhlIDxzdHJvbmc+QWRtaW48L3N0cm9uZz4gbWVudS48b2wgdHlwZT0iYSI+CisgICAgICAgICAgICAgIDxsaT5PbiB0aGUgPHN0cm9uZz5HZW5lcmFsPC9zdHJvbmc+IHRhYiBwYW5lbDogU2V0IHlvdXIgPHN0cm9uZz5DVlNST09UPC9zdHJvbmc+IHRvICZxdW90OzxzdHJvbmc+OnBzZXJ2ZXI6YW5vbmN2c0Bvc3Muc29mdHdhcmUuaWJtLmNvbTovdXNyL2N2cy9pY3U0ajwvc3Ryb25nPiZxdW90Oy48YnI+CisgICAgICAgICAgICAgICAgTGVhdmUgb3RoZXIgb3B0aW9ucyBvbiB0aGlzIHBhZ2UgYXQgdGhlaXIgZGVmYXVsdC48L2xpPgorICAgICAgICAgICAgICA8bGk+T24gdGhlIDxzdHJvbmc+UG9ydHM8L3N0cm9uZz4gdGFiIHBhbmVsOiBDaGVjayB0aGUgPHN0cm9uZz5wc2VydmVyPC9zdHJvbmc+IGNoZWNrYm94IGFuZAorICAgICAgICAgICAgICAgIGVudGVyIHBvcnQgPHN0cm9uZz4yNDAxPC9zdHJvbmc+LjwvbGk+CisgICAgICAgICAgICA8L29sPgorICAgICAgICAgIDwvbGk+CisgICAgICAgICAgPGxpPkNsaWNrIG9uIHRoZSBMb2dpbiBtZW51IGJ1dHRvbiAoPHN0cm9uZz5BZG1pbjwvc3Ryb25nPiBtZW51KS4gRW50ZXIgaW4gICZxdW90OzxzdHJvbmc+YW5vbmN2czwvc3Ryb25nPiZxdW90OyB3aGVuIHJlcXVlc3RlZC48L2xpPgorICAgICAgICAgIDxsaT5UbyBleHRyYWN0IHRoZSBtb3N0IHJlY2VudCB2ZXJzaW9uIG9mIElDVTRKLCBzZWxlY3QgPHN0cm9uZz5DaGVja291dCBtb2R1bGU8L3N0cm9uZz4KKyAgICAgICAgICAgIGZyb20gdGhlIDxzdHJvbmc+Q3JlYXRlPC9zdHJvbmc+IG1lbnUuIFNwZWNpZnkgJnF1b3Q7PHN0cm9uZz5pY3U0ajwvc3Ryb25nPiZxdW90OyBmb3IgdGhlCisgICAgICAgICAgICBtb2R1bGUgbmFtZS4gVGhpcyB3aWxsIGNyZWF0ZSBhIG5ldyBjb3B5IG9mIHRoZSB3b3Jrc3BhY2Ugb24geW91ciBsb2NhbCBoYXJkIGRyaXZlLjwvbGk+CisgICAgICAgICAgPGxpPkluIHRoZSBmdXR1cmUsIHlvdSBjYW4gZG93bmxvYWQgdXBkYXRlZCBmaWxlcyBmcm9tIHRoZSByZXBvc2l0b3J5IHRvIHlvdXIgaGFyZCBkcml2ZQorICAgICAgICAgICAgdXNpbmcgdGhlIDxzdHJvbmc+VXBkYXRlIHNlbGVjdGlvbjwvc3Ryb25nPiBpdGVtIGluIHRoZSA8c3Ryb25nPk1vZGlmeTwvc3Ryb25nPiBtZW51Ljxicj4KKyAgICAgICAgICA8L2xpPgorICAgICAgICA8L29sPgorICAgICAgPC9saT4KKyAgICAgIDxsaT5DVlMgY29tbWFuZCBsaW5lOjxicj4KKyAgICAgICAgWW91IGNhbiBhbHNvIGNoZWNrIG91dCB0aGUgcmVwb3NpdG9yeSBhbm9ueW1vdXNseSBvbiBVTklYIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZHMsCisgICAgICAgIGFmdGVyIGZpcnN0IHNldHRpbmcgeW91ciBDVlNST09UIHRvIHBvaW50IHRvIHRoZSBJQ1U0SiByZXBvc2l0b3J5OiA8cHJlPjxjb2RlPmV4cG9ydCBDVlNST09UPTpwc2VydmVyOmFub25jdnNAb3NzLnNvZnR3YXJlLmlibS5jb206L3Vzci9jdnMvaWN1NGogCitjdnMgbG9naW4gQ1ZTIHBhc3N3b3JkOiBhbm9uY3ZzIAorY3ZzIGNoZWNrb3V0IGljdTRqIAorY3ZzIGxvZ291dDwvY29kZT48L3ByZT4KKyAgICAgIDwvbGk+CisgICAgPC91bD4KKyAgPC9saT4KKzwvdWw+CisKKzxwPkZvciBtb3JlIGRldGFpbHMgb24gaG93IHRvIGRvd25sb2FkIElDVTRKIGRpcmVjdGx5IGZyb20gdGhlIHdlYiBzaXRlLCBwbGVhc2UgYWxzbyBzZWUgPGEKK2hyZWY9Ii9kZXZlbG9wZXJ3b3Jrcy9vcGVuc291cmNlL2ljdTRqL2Rvd25sb2FkL2luZGV4Lmh0bWwiPmh0dHA6L29zcy5zb2Z0d2FyZS5pYm0uY29tL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvaWN1NGovZG93bmxvYWQvaW5kZXguaHRtbDwvYT4KKzwvcD4KKworPHA+QmVsb3csIDxiPiRSb290PC9iPiBpcyB0aGUgcGxhY2VtZW50IG9mIHRoZSBpY3UgZGlyZWN0b3J5IGluIHlvdXIgZmlsZSBzeXN0ZW0sIGxpa2UKKyZxdW90O2RyaXZlOlwuLi5caWN1NGomcXVvdDsgaW4geW91ciBlbnZpcm9ubWVudC4gJnF1b3Q7ZHJpdmU6XC4uLiZxdW90OyBzdGFuZHMgZm9yIGFueQorZHJpdmUgYW5kIGFueSBkaXJlY3Rvcnkgb24gdGhhdCBkcml2ZSB0aGF0IHlvdSBjaG9zZSB0byBpbnN0YWxsIGljdTRqIGludG8uIDwvcD4KKworPHA+PGI+VGhlIGZvbGxvd2luZyBmaWxlcyBkZXNjcmliZSB0aGUgY29kZSBkcm9wOjwvYj48L3A+CisKKzx0YWJsZSBCT1JERVI9IjEiIENFTExQQURESU5HPSIwIj4KKyAgPHRyPgorICAgIDx0ZD5yZWFkbWUuaHRtbCAodGhpcyBmaWxlKTwvdGQ+CisgICAgPHRkPmRlc2NyaWJlcyB0aGUgSW50ZXJuYXRpb25hbCBDb21wb25lbnRzIGZvciBVbmljb2RlIGZvciBKYXZhPC90ZD4KKyAgPC90cj4KKyAgPHRyPgorICAgIDx0ZD5saWNlbnNlLmh0bWw8L3RkPgorICAgIDx0ZD5jb250YWlucyBJQk0ncyBwdWJsaWMgbGljZW5zZTwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorCis8cD48Yj5UaGUgc291cmNlIGRpcmVjdG9yaWVzIG1pcnJvciBwYWNrYWdlIHN0cnVjdHVyZSBvZiB0aGUgY29kZS4mbmJzcDsgVGhlIGZvbGxvd2luZworZGlyZWN0b3JpZXMgY29udGFpbiBzb3VyY2UgY29kZSBhbmQgZGF0YSBmaWxlczo8L2I+IDwvcD4KKworPHRhYmxlIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjAiIFdJRFRIPSI2MjMiPgorICA8dHI+CisgICAgPHRkIFdJRFRIPSIyMCUiPiRSb290L3NyYy9kYXRhLzwvdGQ+CisgICAgPHRkIFdJRFRIPSI4MCUiPlZhcmlvdXMgZGF0YSBmaWxlcyB1c2VkIHRvIGdlbmVyYXRlIElDVTRKIGNsYXNzZXMuJm5ic3A7IE1vc3Qgb2YgdGhlIGZpbGVzCisgICAgY29udGFpbiBVbmljb2RlIGluZm9ybWF0aW9uIHRoYXQgaXMgYXZhaWxhYmxlIGZyb20gPGEgaHJlZj0iaHR0cDovL3d3dy51bmljb2RlLm9yZy8iPmh0dHA6Ly93d3cudW5pY29kZS5vcmcvPC9hPi4mbmJzcDsKKyAgICBVc2VkIG9ubHkgYnkgdG9vbHMgaW4gdGhlIHNyYy9jb20vaWJtL3Rvb2xzLjwvdGQ+CisgIDwvdHI+CisgIDx0cj4KKyAgICA8dGQgV0lEVEg9IjIwJSI+JFJvb3Qvc3JjL2NvbS9pYm0vZGVtbzwvdGQ+CisgICAgPHRkIFdJRFRIPSI4MCUiPkRlbW9uc3RyYXRpb24gYXBwbGljYXRpb25zIGFuZCBBcHBsZXRzLjwvdGQ+CisgIDwvdHI+CisgIDx0cj4KKyAgICA8dGQgV0lEVEg9IjIwJSI+JFJvb3Qvc3JjL2NvbS9pYm0vdGVzdDwvdGQ+CisgICAgPHRkIFdJRFRIPSI4MCUiPlRlc3RzIGZvciB2YXJpb3VzIElDVTRKIGNvbXBvbmVudHMuLiBGb3IgaW5mb3JtYXRpb24gYWJvdXQgcnVubmluZyB0aGUKKyAgICB0ZXN0cywgc2VlIDxhIGhyZWY9Ii4uLy4uLy4uLy4uL2ljdTRqL2ljdTRqaHRtbC9jb20vaWJtL3Rlc3QvdG9wbGV2ZWx0ZXN0L1Rlc3RBbGwuaHRtbCI+JFJvb3QvZG9jL2NvbS9pYm0vdGVzdC9UZXN0QWxsLmh0bWw8L2E+LjwvdGQ+CisgIDwvdHI+CisgIDx0cj4KKyAgICA8dGQgV0lEVEg9IjIwJSI+JFJvb3Qvc3JjL2NvbS9pYm0vdG9vbHM8L3RkPgorICAgIDx0ZCBXSURUSD0iODAlIj5WYXJpb3VzIHRvb2xzIHVzZWQgdG8gZ2VuZXJhdGUgSUNVNEogY2xhc3Nlcy48L3RkPgorICA8L3RyPgorICA8dHI+CisgICAgPHRkIFdJRFRIPSIyMCUiPiRSb290L3NyYy9jb20vaWJtL3RleHQ8L3RkPgorICAgIDx0ZCBXSURUSD0iODAlIj5UaGUgZm9sbG93aW5nIGNvbXBvbmVudHM6Jm5ic3A7IDx1bD4KKyAgICAgIDxsaT5SdWxlQmFzZWRCcmVha0l0ZXJhdG9yPC9saT4KKyAgICAgIDxsaT5EaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yPC9saT4KKyAgICAgIDxsaT5UcmFuc2xpdGVyYXRvcjwvbGk+CisgICAgICA8bGk+Tm9ybWFsaXplcjwvbGk+CisgICAgICA8bGk+QmlnTnVtYmVyRm9ybWF0PC9saT4KKyAgICAgIDxsaT5TdHJpbmdTZWFyY2g8L2xpPgorICAgICAgPGxpPlVuaWNvZGUgY29tcHJlc3Npb248L2xpPgorICAgIDwvdWw+CisgICAgPC90ZD4KKyAgPC90cj4KKyAgPHRyPgorICAgIDx0ZCBXSURUSD0iMjAlIj4kUm9vdC9zcmMvY29tL2libS91dGlsPC90ZD4KKyAgICA8dGQgV0lEVEg9IjgwJSI+Q2FsZW5kYXJzIGFuZCBIb2xpZGF5czwvdGQ+CisgIDwvdHI+CisgIDx0cj4KKyAgICA8dGQgV0lEVEg9IjIwJSI+JFJvb3QvYnVpbGQ8L3RkPgorICAgIDx0ZCBXSURUSD0iODAlIj5BZGRpdGlvbmFsIGNsYXNzZXMgbmVlZGVkIHRvIGJ1aWxkIHVzaW5nIEFudDwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorCis8cD48Yj5UaGUgZm9sbG93aW5nIGRpcmVjdG9yaWVzIGFyZSBwb3B1bGF0ZWQgd2hlbiB5b3UndmUgYnVpbHQgZXZlcnl0aGluZzo8L2I+IDwvcD4KKworPHRhYmxlIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjAiPgorICA8dHI+CisgICAgPHRkPiRSb290L2NsYXNzZXMvPC90ZD4KKyAgICA8dGQ+Y29udGFpbnMgYWxsIGNsYXNzIGZpbGVzPC90ZD4KKyAgPC90cj4KKyAgPHRyPgorICAgIDx0ZD4kUm9vdC9kb2NzPC90ZD4KKyAgICA8dGQ+Y29udGFpbnMgSmF2YURvYyBmb3IgYWxsIHBhY2thZ2VzPC90ZD4KKyAgPC90cj4KKzwvdGFibGU+CisKKzxwPjxiPkRhdGEgb3JnYW5pemF0aW9uOjwvYj4gPC9wPgorCis8cD5EYXRhIGlzIHN0b3JlZCBpbiB2YXJpb3VzIGxvY2F0aW9ucyBpbiBJQ1U0SjoKKworPHVsPgorICA8bGk+RGF0YSB0aGF0IGlzICZxdW90O3JhdyZxdW90OyBkYXRhIGdvZXMgaW50byA8c3Ryb25nPiRSb290L3NyYy9kYXRhPC9zdHJvbmc+LiBUaGlzCisgICAgaW5jbHVkZXMgdGhpbmdzIGxpa2UgdGhlIHJhdyBVbmljb2RlIGRhdGFiYXNlLiA8c3Ryb25nPiRSb290L3NyYy9kYXRhPC9zdHJvbmc+IGRvZXMgPGVtPm5vdDwvZW0+CisgICAgY29udGFpbiA8c3Ryb25nPi5qYXZhPC9zdHJvbmc+IHNvdXJjZSBmaWxlcy48L2xpPgorICA8bGk+RGF0YSB0aGF0IGlzIGluIHRoZSBmb3JtIG9mIGEgSmF2YSBjbGFzcywgdHlwaWNhbGx5IGEgUmVzb3VyY2VCdW5kbGUsIGJ1dCBub3QKKyAgICBuZWNlc3NhcmlseSwgZ29lcyBpbnRvIG9uZSBvZiB0aGUgcGFja2FnZXMgPGNvZGU+Y29tLmlibS51dGlsLnJlc291cmNlczwvY29kZT4gb3IgPGNvZGU+Y29tLmlibS50ZXh0LnJlc291cmNlczwvY29kZT4sCisgICAgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGFzc29jaWF0ZWQgY29kZSBsaXZlcyBpbiA8Y29kZT5jb20uaWJtLnV0aWw8L2NvZGU+IG9yIDxjb2RlPmNvbS5pYm0udGV4dDwvY29kZT4uPC9saT4KKyAgPGxpPkRhdGEgdGhhdCBpcyBub3QgcGFydCBvZiBJQ1U0SiBwcm9wZXIgKG9yIGl0cyBiYXNlIHRvb2wgc2V0KSwgYnV0IHJhdGhlciBwYXJ0IG9mIGEgdGVzdCwKKyAgICBzYW1wbGUsIG9yIGRlbW8sIHNob3VsZCBnbyBuZWFyIHRoZSBzb3VyY2UgY29kZSBvZiBpdHMgb3duZXIuIFRoaXMgbWFrZXMgaXQgZWFzeSB0byBzaGlwIGEKKyAgICBjb3JlIElDVTRKIHJlbGVhc2Ugd2l0aG91dCBvcHRpb25hbCBjb21wb25lbnRzLjwvbGk+Cis8L3VsPgorCis8aDM+PHU+PGEgbmFtZT0iQVBJIj48L2E+QVBJIE92ZXJ2aWV3PC91PjwvaDM+CisKKzxwPlRoZSBjb21wbGV0ZSBBUEkgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgb24gdGhlIElDVTRKIHdlYiBzaXRlOiAKKworPHVsPgorICA8bGk+PGEgaHJlZj0iLi4vLi4vLi4vLi4vaWN1NGovaWN1NGpodG1sL2luZGV4Lmh0bWwiPkNvbXBsZXRlIGluZGV4PC9hPjwvbGk+CisgIDxsaT5JbnRlcm5hdGlvbmFsIENhbGVuZGFycyAmIzE1MDsgPGEgaHJlZj0iLi4vLi4vLi4vLi4vaWN1NGovaWN1NGpodG1sL2NvbS9pYm0vdXRpbC9Jc2xhbWljQ2FsZW5kYXIuaHRtbCI+SXNsYW1pYzwvYT4sCisgICAgPGEgaHJlZj0iLi4vLi4vLi4vLi4vaWN1NGovaWN1NGpodG1sL2NvbS9pYm0vdXRpbC9CdWRkaGlzdENhbGVuZGFyLmh0bWwiPkJ1ZGRoaXN0PC9hPiwgPGEKKyAgICBocmVmPSIuLi8uLi8uLi8uLi9pY3U0ai9pY3U0amh0bWwvY29tL2libS91dGlsL0hlYnJld0NhbGVuZGFyLmh0bWwiPkhlYnJldzwvYT4sIDxhCisgICAgaHJlZj0iLi4vLi4vLi4vLi4vaWN1NGovaWN1NGpodG1sL2NvbS9pYm0vdXRpbC9KYXBhbmVzZUNhbGVuZGFyLmh0bWwiPkphcGFuZXNlPC9hPjwvbGk+CisgIDxsaT48YSBocmVmPSIuLi8uLi8uLi8uLi9pY3U0ai9pY3U0amh0bWwvY29tL2libS90ZXh0L05vcm1hbGl6ZXIuaHRtbCI+VW5pY29kZSBOb3JtYWxpemF0aW9uPC9hPiAmIzE1MDsKKyAgICBDYW5vbmljYWwgdGV4dCByZXByZXNlbnRhdGlvbiBmb3IgVzNDPC9saT4KKyAgPGxpPjxhIGhyZWY9Ii4uLy4uLy4uLy4uL2ljdTRqL2ljdTRqaHRtbC9jb20vaWJtL3RleHQvTnVtYmVyRm9ybWF0Lmh0bWwiPk51bWJlciBGb3JtYXQgRW5oYW5jZW1lbnRzPC9hPiAmIzE1MDsKKyAgICBTY2llbnRpZmljIE5vdGF0aW9uLCBTcGVsbGVkLW91dCwgLi4uPC9saT4KKyAgPGxpPjxhIGhyZWY9Ii4uLy4uLy4uLy4uL2ljdTRqL2ljdTRqaHRtbC9jb20vaWJtL3RleHQvQnJlYWtJdGVyYXRvci5odG1sIj5FbmhhbmNlZCB3b3JkLWJyZWFrIGRldGVjdGlvbjwvYT4KKyAgICAmIzE1MDsgUnVsZS1iYXNlZCwgc3VwcG9ydHMgVGhhaTwvbGk+CisgIDxsaT48YSBocmVmPSIuLi8uLi8uLi8uLi9pY3U0ai9pY3U0amh0bWwvY29tL2libS90ZXh0L1N0cmluZ1NlYXJjaC5odG1sIj5Vbmljb2RlIFRleHQgU2VhcmNoaW5nPC9hPiAmIzE1MDsKKyAgICBFZmZpY2llbnQgbXVsdGktbGluZ3VhbCBzZWFyY2hpbmc8L2xpPgorICA8bGk+VW5pY29kZSBUZXh0IDxhIGhyZWY9Ii4uLy4uLy4uLy4uL2ljdTRqL2ljdTRqaHRtbC9jb20vaWJtL3RleHQvVW5pY29kZUNvbXByZXNzb3IuaHRtbCI+Q29tcHJlc3Npb248L2E+ICZhbXA7CisgICAgPGEgaHJlZj0iLi4vLi4vLi4vLi4vaWN1NGovaWN1NGpodG1sL2NvbS9pYm0vdGV4dC9Vbmljb2RlRGVjb21wcmVzc29yLmh0bWwiPkRlY29tcHJlc3Npb248L2E+ICYjMTUwOyAyOjEKKyAgICBjb21wcmVzc2lvbiBvbiBFbmdsaXNoIFVuaWNvZGUgdGV4dDwvbGk+Cis8L3VsPgorCis8aDM+PGEgTkFNRT0iUGxhdGZvcm1EZXBlbmRlbmNpZXMiPjwvYT48dT5QbGF0Zm9ybSBEZXBlbmRlbmNpZXM8L3U+PC9oMz4KKworPHA+UGFydHMgb2YgSUNVNEogZGVwZW5kIG9uIGZ1bmN0aW9uYWxpdHkgdGhhdCBpcyBvbmx5IGF2YWlsYWJsZSBpbiBKYXZhMiAoSkRrMS4yKSBvcgorbGF0ZXIsIGFsdGhvdWdoIHNvbWUgY29tcG9uZW50cyB3b3JrIHVuZGVyIDEuMS4mbmJzcDsgSG93ZXZlciwgYWxsIGNvbXBvbmVudHMgc2hvdWxkIGJlCitjb21waWxlZCB1c2luZyBhIEphdmEyIGNvbXBpbGVyIGFzIGV2ZW4gY29tcG9uZW50cyB0aGF0IHJ1biB1c2luZyBhIDEuMS54IEpWTSBtYXkgcmVxdWlyZQorbGFuZ3VhZ2UgZmVhdHVyZXMgdGhhdCBhcmUgb25seSBwcmVzZW50IGluIDEuMi4mbmJzcDsgQ3VycmVudGx5IDEuMS54IGlzIHVuc3VwcG9ydGVkIGFuZAordW50ZXN0ZWQgYW5kIHlvdSB1c2UgdGhlIGNvbXBvbmVudHMgb24gYSAxLjEueCBzeXN0ZW0gYXQgeW91ciBvd24gcmlzay4gPC9wPgorCis8aDM+PGEgTkFNRT0iSG93VG9JbnN0YWxsSmF2YWMiPjwvYT48dT5Ib3cgdG8gSW5zdGFsbCBhbmQgQnVpbGQ8L3U+PC9oMz4KKworPHA+VG8gaW5zdGFsbCBJQ1U0Siwgc2ltcGx5IHBsYWNlIHRoZSBwcmVidWlsdCBqYXIgZmlsZSA8c3Ryb25nPmljdTRqLmphcjwvc3Ryb25nPiBvbiB5b3VyCitKYXZhIENMQVNTUEFUSC4mbmJzcDsgTm8gb3RoZXIgZmlsZXMgYXJlIG5lZWRlZC48L3A+CisKKzxwPlRoZSBwcmVyZXF1aXNpdGVzIGZvciBidWlsZGluZyBJQ1U0SiBhcmUgYSB3b3JraW5nIEpESyBhbmQgdGhlIEFudCBidWlsZCBzeXN0ZW06IAorCis8dWw+CisgIDxsaT5GaXJzdCBpbnN0YWxsIGEgcmVjZW50IEpESywgYXQgbGVhc3QgdmVyc2lvbiAxLjIuPC9saT4KKyAgPGxpPk5leHQgaW5zdGFsbCB0aGUgPGEgaHJlZj0iaHR0cDovL2pha2FydGEuYXBhY2hlLm9yZy9hbnQvIj48c3Ryb25nPkFudDwvc3Ryb25nPjwvYT4gYnVpbGQKKyAgICBzeXN0ZW0sIHBhcnQgb2YgdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uJ3MgPGEgaHJlZj0iaHR0cDovL2pha2FydGEuYXBhY2hlLm9yZy8iPjxzdHJvbmc+SmFrYXJ0YTwvc3Ryb25nPjwvYT4KKyAgICBwcm9qZWN0LiBBbnQgaXMgYSBwb3J0YWJsZSwgSmF2YS1iYXNlZCBidWlsZCBzeXN0ZW0gc2ltaWxhciB0byBtYWtlLiBJQ1U0SiB1c2VzIEFudAorICAgIGJlY2F1c2UgaXQgaW50cm9kdWNlcyBubyBvdGhlciBkZXBlbmRlbmNpZXMsIGl0J3MgcG9ydGFibGUsIGFuZCBpdCdzIGVhc2llciB0byBtYW5hZ2UgdGhhbgorICAgIGEgY29sbGVjdGlvbiBvZiBtYWtlZmlsZXMuIFdlIGN1cnJlbnRseSBidWlsZCBJQ1U0SiB1c2luZyBhIHNpbmdsZSBtYWtlZmlsZSBvbiBib3RoCisgICAgV2luZG93cyA5eCBhbmQgTGludXggdXNpbmcgQW50LjwvbGk+CisgIDxsaT5JbnN0YWxsaW5nIEFudCBpcyBzdHJhaWdodGZvcndhcmQuIERvd25sb2FkIGl0IChzZWUgPGEKKyAgICBocmVmPSJodHRwOi8vamFrYXJ0YS5hcGFjaGUub3JnL2Rvd25sb2Fkcy9iaW5pbmRleC5odG1sIj5odHRwOi8vamFrYXJ0YS5hcGFjaGUub3JnL2Rvd25sb2Fkcy9iaW5pbmRleC5odG1sPC9hPiksCisgICAgZXh0cmFjdCBpdCBvbnRvIHlvdXIgc3lzdGVtLCBzZXQgc29tZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGFuZCBhZGQgaXRzIGJpbiBkaXJlY3RvcnkgdG8KKyAgICB5b3VyIHBhdGguIEZvciBleGFtcGxlOjxwcmU+ICAgIHNldCBKQVZBX0hPTUU9QzpcamRrMS4yLjIKKyAgICBzZXQgQU5UX0hPTUU9QzpcamFrYXJ0YS1hbnQKKyAgICBzZXQgUEFUSD0lUEFUSCU7JUFOVF9IT01FJVxiaW4KKyAgICBjYWxsIGFudHNldHVwPC9wcmU+CisgICAgPHA+U2VlIHRoZSBjdXJyZW50IEFudCBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLjwvcD4KKyAgPC9saT4KKyAgPGxpPkl0J3MgcmVjb21tZW5kZWQgdG8gaW5zdGFsbCBib3RoIHRoZSBKREsgYW5kIEFudCBzb21ld2hlcmUgPGVtPm91dHNpZGU8L2VtPiB0aGUgSUNVNEoKKyAgICBkaXJlY3RvcnksIHRvIGtlZXAgdGhlbSBvdXQgb2YgQ1ZTJ3MgaGFpci4gRm9yIGV4YW1wbGUsIG9uIExpbnV4IHlvdSBtaWdodCBpbnN0YWxsIHRoZXNlCisgICAgaW4gL3Vzci9sb2NhbC48L2xpPgorPC91bD4KKworPHA+T25jZSBBbnQgaXMgaW5zdGFsbGVkLCBidWlsZGluZyBpcyBqdXN0IGEgbWF0dGVyIG9mIHR5cGluZyA8c3Ryb25nPmFudDwvc3Ryb25nPiBpbiB0aGUKK0lDVTRKIHJvb3QgZGlyZWN0b3J5LiBUaGlzIGNhdXNlcyB0aGUgQW50IGJ1aWxkIHN5c3RlbSB0byBwZXJmb3JtIGEgYnVpbGQgYXMgc3BlY2lmaWVkIGJ5Cit0aGUgZmlsZSA8c3Ryb25nPmJ1aWxkLnhtbDwvc3Ryb25nPiwgbG9jYXRlZCBpbiB0aGUgSUNVNEogcm9vdCBkaXJlY3RvcnkuIFlvdSBjYW4gZ2l2ZSBBbnQKK29wdGlvbnMgbGlrZSAtdmVyYm9zZSwgYW5kIHlvdSBjYW4gc3BlY2lmeSB0YXJnZXRzLiBBbnQgd2lsbCBvbmx5IGJ1aWxkIHdoYXQncyBiZWVuCitjaGFuZ2VkIGFuZCB3aWxsIHJlc29sdmUgZGVwZW5kZW5jaWVzIHByb3Blcmx5LjwvcD4KKworPGJsb2NrcXVvdGU+CisgIDxwcmU+RjpcaWN1NGomZ3Q7YW50IHRlc3RzCitCdWlsZGZpbGU6IGJ1aWxkLnhtbAorUHJvamVjdCBiYXNlIGRpciBzZXQgdG86IEY6XGljdTRqCitFeGVjdXRpbmcgVGFyZ2V0OiBjb3JlCitDb21waWxpbmcgNzEgc291cmNlIGZpbGVzIHRvIEY6XGljdTRqXGNsYXNzZXMKK0V4ZWN1dGluZyBUYXJnZXQ6IHRlc3RzCitDb21waWxpbmcgMjQgc291cmNlIGZpbGVzIHRvIEY6XGljdTRqXGNsYXNzZXMKK0NvbXBsZXRlZCBpbiAxOSBzZWNvbmRzPC9wcmU+Cis8L2Jsb2NrcXVvdGU+CisKKzxwPkN1cnJlbnQgdGFyZ2V0cyB0aGF0IHlvdSBjYW4gZ2l2ZSBhZnRlciA8c3Ryb25nPmFudDwvc3Ryb25nPjo8L3A+Cis8ZGl2IGFsaWduPSJsZWZ0Ij4KKworPHRhYmxlIGJvcmRlcj0iMSIgY2VsbHBhZGRpbmc9IjAiPgorICA8dHI+CisgICAgPHRkPmFsbDwvdGQ+CisgICAgPHRkPkJ1aWxkIGFsbCB0YXJnZXRzLjwvdGQ+CisgIDwvdHI+CisgIDx0cj4KKyAgICA8dGQ+Y29yZTwvdGQ+CisgICAgPHRkPkJ1aWxkIHRoZSBtYWluIGNsYXNzIGZpbGVzIGluIHRoZSBzdWJkaXJlY3RvcnkgPHN0cm9uZz5jbGFzc2VzPC9zdHJvbmc+LiBJZiBubyB0YXJnZXQKKyAgICBpcyBzcGVjaWZpZWQsIGNvcmUgaXMgYXNzdW1lZC48L3RkPgorICA8L3RyPgorICA8dHI+CisgICAgPHRkPnRlc3RzPC90ZD4KKyAgICA8dGQ+QnVpbGQgdGhlIHRlc3QgY2xhc3MgZmlsZXMuPC90ZD4KKyAgPC90cj4KKyAgPHRyPgorICAgIDx0ZD5kZW1vczwvdGQ+CisgICAgPHRkPkJ1aWxkIHRoZSBkZW1vcy48L3RkPgorICA8L3RyPgorICA8dHI+CisgICAgPHRkPnRvb2xzPC90ZD4KKyAgICA8dGQ+QnVpbGQgdGhlIHRvb2xzLjwvdGQ+CisgIDwvdHI+CisgIDx0cj4KKyAgICA8dGQ+ZG9jczwvdGQ+CisgICAgPHRkPlJ1biBqYXZhZG9jIG92ZXIgdGhlIG1haW4gY2xhc3MgZmlsZXMsIGdlbmVyYXRpbmcgYW4gSFRNTCBkb2N1bWVudGF0aW9uIHRyZWUgaW4gdGhlCisgICAgc3ViZGlyZWN0b3J5IDxzdHJvbmc+ZG9jczwvc3Ryb25nPi48L3RkPgorICA8L3RyPgorICA8dHI+CisgICAgPHRkPmphcjwvdGQ+CisgICAgPHRkPkNyZWF0ZSBhIGphciBhcmNoaXZlIDxzdHJvbmc+aWN1NGouamFyPC9zdHJvbmc+IGluIHRoZSByb290IElDVTRKIGRpcmVjdG9yeSBjb250YWluaW5nCisgICAgdGhlIG1haW4gY2xhc3MgZmlsZXMuPC90ZD4KKyAgPC90cj4KKyAgPHRyPgorICAgIDx0ZD56aXA8L3RkPgorICAgIDx0ZD5DcmVhdGUgYSB6aXAgYXJjaGl2ZSBvZiB0aGUgc291cmNlLCBkb2NzLCBhbmQgamFyIGZpbGUgZm9yIGRpc3RyaWJ1dGlvbiwgZXhjbHVkaW5nCisgICAgdW53YW50ZWQgdGhpbmdzIGxpa2UgQ1ZTIGRpcmVjdG9yaWVzIGFuZCBlbWFjcyBiYWNrdXAgZmlsZXMuIFRoZSB6aXAgZmlsZSA8c3Ryb25nPmljdTRqWVlZWU1NREQuemlwPC9zdHJvbmc+CisgICAgd2lsbCBiZSBjcmVhdGVkIGluIHRoZSBkaXJlY3RvcnkgPGVtPmFib3ZlPC9lbT4gdGhlIHJvb3QgSUNVNEogZGlyZWN0b3J5LCB3aGVyZSBZWVlZTU1ERAorICAgIGlzIHRvZGF5J3MgZGF0ZS4gQW55IGV4aXN0aW5nIGZpbGUgb2YgdGhhdCBuYW1lIHdpbGwgYmUgb3ZlcndyaXR0ZW4uPC90ZD4KKyAgPC90cj4KKyAgPHRyPgorICAgIDx0ZD56aXBzcmM8L3RkPgorICAgIDx0ZD5MaWtlIHRoZSA8c3Ryb25nPnppcDwvc3Ryb25nPiB0YXJnZXQsIHdpdGhvdXQgdGhlIGRvY3MgYW5kIHRoZSBqYXIgZmlsZS4gVGhlIHppcCBmaWxlIDxzdHJvbmc+aWN1NGpzcmNZWVlZTU1ERC56aXA8L3N0cm9uZz4KKyAgICB3aWxsIGJlIGNyZWF0ZWQgaW4gdGhlIGRpcmVjdG9yeSA8ZW0+YWJvdmU8L2VtPiB0aGUgcm9vdCBJQ1U0SiBkaXJlY3RvcnkuPC90ZD4KKyAgPC90cj4KKyAgPHRyPgorICAgIDx0ZD5jbGVhbjwvdGQ+CisgICAgPHRkPlJlbW92ZSBhbGwgYnVpbHQgdGFyZ2V0cywgbGVhdmluZyB0aGUgc291cmNlLjwvdGQ+CisgIDwvdHI+Cis8L3RhYmxlPgorPC9kaXY+CisKKzxwPkZvciBtb3JlIGluZm9ybWF0aW9uLCByZWFkIHRoZSBBbnQgZG9jdW1lbnRhdGlvbiBhbmQgdGhlIDxzdHJvbmc+YnVpbGQueG1sPC9zdHJvbmc+CitmaWxlLjwvcD4KKworPHA+QWZ0ZXIgZG9pbmcgYSBidWlsZCBpdCBpcyBhIGdvb2QgaWRlYSB0byBydW4gYWxsIHRoZSB0ZXN0cyBieSB0eXBlaW5nICZxdW90O2phdmEKKy1jbGFzc3BhdGggY2xhc3NlcyBjb20uaWJtLnRlc3QuVGVzdEFsbCZxdW90Oy4gPC9wPgorCis8cD4oQXMgYW4gYWx0ZXJuYXRpdmUgdG8gdXNpbmcgQW50LCB5b3UgY2FuIGJ1aWxkIHNpbXBseSBieSBydW5uaW5nIGphdmFjIGFuZCBqYXZhZG9jCitkaXJlY3RseS4gVGhpcyBpcyBub3QgcmVjb21tZW5kZWQsIGJ1dCBhIFdpbmRvd3MgYmF0Y2ggZmlsZSAmcXVvdDtidWlsZGFsbC5iYXQmcXVvdDsKK2V4aXN0cyB0byBnZXQgeW91IHN0YXJ0ZWQgaWYgeW91J3JlIHJlYWxseSBhbGxlcmdpYyB0byBidWlsZCBzeXN0ZW1zLiBZb3UgbWF5IGhhdmUgdG8KK2NyZWF0ZSBkZXN0aW5hdGlvbiBkaXJlY3Rvcmllcy4pPC9wPgorCis8aDM+PGEgbmFtZT0iV2hlcmVUb0ZpbmRNb3JlIj48L2E+PHU+V2hlcmUgdG8gRmluZCBNb3JlIEluZm9ybWF0aW9uPC91PjwvaDM+CisKKzxwPjxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0aiI+aHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdTRqPC9hPiBpcyBhCitwb2ludGVyIHRvIGdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIEludGVybmF0aW9uYWwgQ29tcG9uZW50cyBmb3IgVW5pY29kZSBpbiBKYXZhIDwvcD4KKworPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5pYm0uY29tL2RldmVsb3Blci91bmljb2RlIj5odHRwOi8vd3d3LmlibS5jb20vZGV2ZWxvcGVyL3VuaWNvZGU8L2E+IGlzIGEgcG9pbnRlciB0bworaW5mb3JtYXRpb24gb24gaG93IHRvIG1ha2UgYXBwbGljYXRpb25zIGdsb2JhbC4gPC9wPgorCis8aDM+PGEgTkFNRT0iU3VibWl0dGluZ0NvbW1lbnRzIj48L2E+PHU+U3VibWl0dGluZyBDb21tZW50cywgUmVxdWVzdGluZyBGZWF0dXJlcyBhbmQKK1JlcG9ydGluZyBCdWdzPC91PjwvaDM+CisKKzxwPlRvIHN1Ym1pdCBjb21tZW50cywgcmVxdWVzdCBmZWF0dXJlcyBhbmQgcmVwb3J0IGJ1Z3MsIGNvbnRhY3QgdXMgdGhyb3VnaCB0aGUgPGEgaHJlZj1odHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovYXJjaGl2ZXMvaW5kZXguaHRtbD5JQ1U0SiBtYWlsaW5nIGxpc3Q8L2E+Ljxicj4KK1doaWxlIHdlIGFyZSBub3QgYWJsZSB0byByZXNwb25kIGluZGl2aWR1YWxseSB0byBlYWNoIGNvbW1lbnQsIHdlIGRvIHJldmlldyBhbGwgY29tbWVudHMuIDwvcD4KKworPGhyIHNpemU9IjIiIHdpZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVyIj4KKworPHA+Q29weXJpZ2h0IKkgMjAwMSBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuIEFsbCBSaWdodHMKK1Jlc2VydmVkLiA8YnI+CitJQk0gQ2VudGVyIGZvciBKYXZhIFRlY2hub2xvZ3kgU2lsaWNvbiBWYWxsZXksIDxicj4KKzEwMjc1IE4gRGUgQW56YSBCbHZkLiwgQ3VwZXJ0aW5vLCBDQSA5NTAxNCA8YnI+CitBbGwgcmlnaHRzIHJlc2VydmVkLiA8L3A+CisKKzxociBzaXplPSIyIiB3aWR0aD0iMTAwJSIgYWxpZ249ImNlbnRlciI+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9kYXRhL21pc2MvZW5nbGlzaC5kaWN0IGIvc3JjL2NvbS9pYm0vZGF0YS9taXNjL2VuZ2xpc2guZGljdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xMGY0MzBiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vZGF0YS9taXNjL2VuZ2xpc2guZGljdApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9kYXRhL21pc2Mvd29yZHMudHh0IGIvc3JjL2NvbS9pYm0vZGF0YS9taXNjL3dvcmRzLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hN2UwNmFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vZGF0YS9taXNjL3dvcmRzLnR4dApAQCAtMCwwICsxLDI5OTAgQEAKKy0tCistLXN1Y2gKK2EKK2EnYmVsLW1penJhaW0KK2EnaWFoCithYmF0ZQorYWJhdGVkCithYmRpY2F0ZWQKK2FiZWwKK2FiaSdkYQorYWJpZGUKK2FiaW0nYS1lbAorYWJpbSdlbGVjaAorYWJpbSdlbGVjaCdzCithYmxlCithYm9saXNoCithYm9saXNoaW5nCithYm9taW5hdGlvbgorYWJvdXQKK2Fib3ZlCithYnJhaGFtCithYnJhaGFtJ3MKK2FicmFtCithYnJhbSdzCithYnJvYWQKK2Fic2VudAorYWJzb2x1dGUKK2Fic29sdmVkCithYnVuZGFuY2UKK2FidW5kYW50bHkKK2FidXNlcworYWNjYWQKK2FjY2VwdAorYWNjZXB0ZWQKK2FjY29tbW9kYXRpb24KK2FjY29yZGluZworYWNjb3JkaW5nbHkKK2FjY291bnQKK2FjY3VzdG9tZWQKK2FjaGJvcgorYWNrbm93bGVkZ2VkCithY3F1aWVzY2UKK2FjcXVpcmVkCithY3Jvc3MKK2FjdAorYWN0cworYWRhaAorYWRhbQorYWRiZWVsCithZGQKK2FkZGVkCithZG1haAorYWRtaW5pc3RyYXRpb24KK2FkdWxsYW1pdGUKK2FkdmFuY2VkCithZHZpc2VyCithZmFyCithZmZlY3RlZAorYWZmbGljdGVkCithZmZsaWN0aW9uCithZnJhaWQKK2FmdGVyCithZnRlcndhcmQKK2FmdGVyd2FyZHMKK2FnYWluCithZ2FpbnN0CithZ2UKK2FnZXMKK2FnaWxlCithZ3JlZQorYWdyZWVkCithaHV6J3phdGgKK2FpCithaWQKK2FpcgorYWthbgorYWwnbG9uLWJhY3V0aAorYWxpZ2h0ZWQKK2FsaXZlCithbGwKK2FsbGVnaWFuY2UKK2FsbGlhbmNlcworYWxsaWVzCithbGxvdworYWxsb3dhbmNlCithbG1pZ2h0eQorYWxtbydkYWQKK2FsbW9uZAorYWxtb25kcworYWxvbmUKK2Fsb25nCithbG91ZAorYWxyZWFkeQorYWxzbworYWx0YXIKK2FsdGVyCithbHRlcmluZworYWx0aG91Z2gKK2FsdG9nZXRoZXIKK2FsdmFoCithbHZhbgorYW0KK2FtJ2FsZWsKK2FtJ3JhcGhlbAorYW1hbCdla2l0ZXMKK2FtYXplbWVudAorYW1lcmljYQorYW1tb25pdGVzCithbW9uZworYW1vbmdzdAorYW1vcml0ZQorYW1vcml0ZXMKK2Ftb3VudAorYW4KK2FuJ2FtaW0KK2FuYWgKK2FuZAorYW5lcgorYW5nZWwKK2FuZ2VscworYW5nZXIKK2FuZ3J5CithbmltYWwKK2FuaW1hbHMKK2FubmloaWxhdGlvbgorYW5vaW50ZWQKK2Fub3RoZXIKK2Fub3RoZXIncworYW5zd2VyCithbnN3ZXJlZAorYW55Cithbnl0aGluZworYW55d2hlcmUKK2FwYXJ0CithcHBlYWxlZAorYXBwZWFsaW5nCithcHBlYXIKK2FwcGVhcmVkCithcHBlYXNlCithcHBvaW50CithcHBvaW50ZWQKK2FwcHJvYWNoZWQKK2FwcHJvYWNoaW5nCithcHByb3ByaWF0aW9ucworYXByb25zCithcidhcmF0Cithcidpb2NoCithcid2YWRpdGVzCithcmFtCithcmFtZWFuCithcmFuCithcmJpdHJhcnkKK2FyY2hlcnMKK2FyZAorYXJlCithcmUnbGkKK2FyZWEKK2FyaXNlCithcmsKK2Fya2l0ZXMKK2FybWVkCithcm1pZXMKK2FybXMKK2FybXkKK2FybydkaQorYXJvc2UKK2Fyb3VuZAorYXJwYWNoJ3NoYWQKK2FycmF5ZWQKK2Fycml2ZQorYXJ0CithcworYXMnZW5hdGgKK2FzY2VuZGluZworYXNoJ2tlbmF6Cithc2gndGVyb3RoLWthcm5hJ2ltCithc2hhbWVkCithc2hiZWwKK2FzaGVyCithc2hlcidzCithc2hlcworYXNpZGUKK2FzaworYXNrZWQKK2Fza3MKK2FzbGVlcAorYXNzCithc3MncworYXNzZW1ibGUKK2Fzc2VtYmxlZAorYXNzZW50Cithc3NlcworYXNzaHUncmltCithc3NodXIKK2Fzc3VtZQorYXNzdXJlZAorYXNzeXJpYQorYXQKK2F0YWQKK2F0ZQorYXR0YWNrCithdHRhY2tlZAorYXR0YWluZWQKK2F0dGVtcHRzCithdHRlbmQKK2F0dGVuZGVkCithdHRlbnRpb24KK2F1dGhvcml0eQorYXZlbmdlZAorYXZpdGgKK2F3YXkKK2F3ZXNvbWUKK2F3b2tlCitiYSdhbC1oYSduYW4KK2JhJ2JlbAorYmFjaworYmFja3dhcmQKK2JhZAorYmFkZQorYmFncworYmFrZWQKK2Jha2VyCitiYWxtCitiYW5rCitiYW5rcworYmFyYmFyb3VzCitiYXJyZW4KK2JhcydlbWF0aAorYmFza2V0CitiYXNrZXRzCitiYXR0bGUKK2JkZWxsaXVtCitiZQorYmUnb3IKK2JlLWUncmkKK2JlYXIKK2JlYXJpbmcKK2JlYXJzCitiZWFzdAorYmVhc3RzCitiZWF1dGlmdWwKK2JlY2FtZQorYmVjYXVzZQorYmVjaGVyCitiZWNvbWUKK2JlY29tZXMKK2JlZAorYmVkYWQKK2JlZW4KK2JlZXItbGEnaGFpLXJvaQorYmVlci1zaGViYQorYmVmYWxsCitiZWZhbGxlbgorYmVmYWxscworYmVmb3JlCitiZWcKK2JlZ2FuCitiZWdpbm5pbmcKK2JlZ3VpbGVkCitiZWd1bgorYmVoZWxkCitiZWhpbmQKK2JlaG9sZAorYmVpbmcKK2JlbGEKK2JlbGlldmUKK2JlbGlldmVkCitiZWxseQorYmVsb25nCitiZWxvbmdpbmcKK2JlbG9uZ3MKK2JlbG93CitiZW4tYW1taQorYmVuLW8nbmkKK2JlbmVhdGgKK2JlbmVmaXRzCitiZW5qYW1pbgorYmVuamFtaW4ncworYmVyYQorYmVyZWF2ZWQKK2JlcmVkCitiZXJlZnQKK2JlcmknYWgKK2Jlc2lkZQorYmVzaWRlcworYmVzb3VnaHQKK2Jlc3QKK2JldGhlbAorYmV0aGxlaGVtCitiZXRodSdlbAorYmV0dGVyCitiZXR3ZWVuCitiZXlvbmQKK2JpbGhhaAorYmlsaGFuCitiaW5kaW5nCitiaXJkCitiaXJkcworYmlyc2hhCitiaXJ0aAorYmlydGhkYXkKK2JpcnRocmlnaHQKK2JpdGVzCitiaXR0ZXIKK2JpdHVtZW4KK2JsYWNrCitibGFtZQorYmxhbWVsZXNzCitibGVzcworYmxlc3NlZAorYmxlc3NlcworYmxlc3NpbmcKK2JsZXNzaW5ncworYmxpZ2h0ZWQKK2JsaW5kbmVzcworYmxvb2QKK2Jsb3Nzb21zCitibG90CitibG90dGVkCitibG93Citib2RpZXMKK2JvZHkKK2JvaWxpbmcKK2JvbmRzCitib25lCitib25lcworYm9vaworYm9vdGhzCitib3JkZXIKK2JvcmUKK2Jvcm4KK2Jvcm5lCitib3RoCitib3VnaAorYm91Z2h0Citib3VuZAorYm91bmRhcmllcworYm91bnRpZXMKK2JvdworYm93ZWQKK2Jvd2luZworYm93c2hvdAorYm95cworYm96cmFoCiticmFjZWxldHMKK2JyYW5jaGVzCiticmVhY2gKK2JyZWFkCiticmVhZHRoCiticmVhaworYnJlYWtpbmcKK2JyZWFzdHMKK2JyZWF0aAorYnJlYXRoZWQKK2JyZWQKK2JyZWVkCiticmVlZGluZworYnJldGhyZW4KK2JyaWNrCiticmlja3MKK2JyaW1zdG9uZQorYnJpbmcKK2JyaXRhaW4KK2JyaXRpc2gKK2Jyb2tlbgorYnJvbnplCiticm90aGVyCiticm90aGVyJ3MKK2Jyb3RoZXItaW4tbGF3Citicm90aGVycworYnJvdWdodAorYnJvdworYnJ1aXNlCitidWRkZWQKK2J1aWxkCitidWlsZGluZworYnVpbHQKK2J1bGxzCitidW5kbGUKK2J1bmRsZXMKK2J1cmllZAorYnVybgorYnVybmVkCitidXJudAorYnVyc3QKK2J1cnkKK2J1cnlpbmcKK2J1c2hlcworYnV0CitidXRsZXIKK2J1dGxlcnNoaXAKK2J1eQorYnV6CitieQorY2FpbgorY2FrZQorY2FrZXMKK2NhbGFoCitjYWxmCitjYWxsCitjYWxsZWQKK2NhbGxzCitjYW1lCitjYW1lbAorY2FtZWwncworY2FtZWxzCitjYW1wCitjYW1wZWQKK2NhbgorY2FuYWFuCitjYW5hYW4nCitjYW5hYW5pdGUKK2NhbmFhbml0ZXMKK2NhbmFhbml0aXNoCitjYW5kaWQKK2Nhbm5vdAorY2FwaCd0b3JpbQorY2FwdGFpbgorY2FwdGl2ZQorY2FwdGl2ZXMKK2NhcHR1cmVkCitjYXJhdmFuCitjYXJjYXNzZXMKK2NhcmUKK2NhcmVmdWxseQorY2FybWkKK2NhcnJpZWQKK2NhcnJ5CitjYXNlcworY2FzbHUnaGltCitjYXN0CitjYXR0bGUKK2NhdWdodAorY2F1c2UKK2NhdXNlZAorY2F1c2VzCitjYXZlCitjZWFzZQorY2Vhc2VkCitjZXJ0YWluCitjaGFpbgorY2hhbGRlJ2FucworY2hhbWJlcgorY2hhbmdlCitjaGFuZ2VkCitjaGFyYWN0ZXIKK2NoYXJnZQorY2hhcmdlZAorY2hhcmdpbmcKK2NoYXJpb3QKK2NoYXJpb3RzCitjaGFydGVycworY2hlYXQKK2NoZWF0ZWQKK2NoZWQtb3ItbGFvJ21lcgorY2hlcmFuCitjaGVydWJpbQorY2hlc2VkCitjaGV6aWIKK2NoaWVmCitjaGllZnMKK2NoaWxkCitjaGlsZGJlYXJpbmcKK2NoaWxkbGVzcworY2hpbGRyZW4KK2NoaWxkcmVuJ3MKK2Nob2ljZQorY2hvaWNlc3QKK2Nob3NlCitjaG9zZW4KK2NpcmN1bWNpc2VkCitjaXJjdW1zdGFuY2VzCitjaXRpZXMKK2NpdGl6ZW5zCitjaXR5CitjaXZpbAorY2l2aWxpemVkCitjbGFucworY2xlYW4KK2NsZWFyCitjbGVhdmVzCitjbG9zZQorY2xvc2VkCitjbG90aGVkCitjbG90aGVzCitjbG90aGluZworY2xvdWQKK2Nsb3VkcworY2x1c3RlcnMKK2NvYXN0bGFuZAorY29hc3RzCitjb2ZmaW4KK2NvbGQKK2NvbG9uaWVzCitjb2xvbmllczoKK2NvbHQKK2NvbHRzCitjb21iaW5lZAorY29tZQorY29tZWx5Citjb21lcworY29tZm9ydAorY29tZm9ydGVkCitjb21mb3J0cworY29taW5nCitjb21tYW5kCitjb21tYW5kZWQKK2NvbW1hbmRlcgorY29tbWFuZG1lbnRzCitjb21tZXJjZQorY29tbWl0Citjb21taXR0ZWQKK2NvbW1vbgorY29tcGFuaWVzCitjb21wYW55Citjb21wbGFpbmVkCitjb21wbGV0ZQorY29tcGxldGVkCitjb21wbGlhbmNlCitjb25jZWFsCitjb25jZWl2ZWQKK2NvbmNlcm4KK2NvbmNlcm5pbmcKK2NvbmNsdWRlCitjb25jdWJpbmUKK2NvbmN1YmluZXMKK2NvbmRpdGlvbgorY29uZGl0aW9ucworY29uZmluZWQKK2NvbmZ1c2UKK2NvbmZ1c2VkCitjb25ncmVzcworY29uanVyZWQKK2Nvbm5lY3RlZAorY29ubmVjdGlvbgorY29ubmVjdGlvbnMKK2NvbnNlbnQKK2NvbnNlbnQ6Citjb25zcGlyZWQKK2NvbnN0aXR1dGlvbgorY29uc3RyYWluZWQKK2NvbnN0cmFpbnMKK2NvbnN1bWUKK2NvbnN1bWVkCitjb250ZW1wdAorY29udGVuZGVkCitjb250aW51YWxseQorY29udGludWUKK2NvbnRpbnVlZAorY29udHJhY3QKK2NvbnRyb2wKK2NvbnRyb2xsaW5nCitjb252dWxzaW9ucworY29vbAorY29yZAorY29ycmVzcG9uZGVuY2UKK2NvcnJ1cHQKK2NvcnJ1cHRlZAorY29zdGx5Citjb3VjaAorY291Y2hlZAorY291Y2hlcworY291Y2hpbmcKK2NvdWxkCitjb3VuY2lsCitjb3VudAorY291bnRlZAorY291bnRlbmFuY2UKK2NvdW50cnkKK2NvdXJzZQorY292ZW5hbnQKK2NvdmVyCitjb3ZlcmVkCitjb3ZlcmluZworY293cworY3JlYXRlZAorY3JlYXRpb24KK2NyZWF0b3IKK2NyZWF0dXJlCitjcmVhdHVyZXMKK2NyZWVwaW5nCitjcmVlcHMKK2NyaWVkCitjcm9zc2VkCitjcm9zc2luZworY3JvdWNoaW5nCitjcm93bgorY3J1ZWwKK2NydWVsdHkKK2NyeQorY3J5aW5nCitjdWJpdAorY3ViaXRzCitjdXAKK2N1cmRzCitjdXJyZW50CitjdXJzZQorY3Vyc2VkCitjdXJzZXMKK2N1c2gKK2N1c3RvZHkKK2N1dAorY3V0dGluZworZGFpbnRpZXMKK2RhbWFzY3VzCitkYW4KK2RhbmdlcnMKK2RhcmVzCitkYXJrCitkYXJrbmVzcworZGF1Z2h0ZXIKK2RhdWdodGVyLWluLWxhdworZGF1Z2h0ZXJzCitkYXduZWQKK2RheQorZGF5cworZGVhZAorZGVhbAorZGVhbHQKK2RlYXRoCitkZWInb3JhaAorZGVjZWl0ZnVsbHkKK2RlY2VpdmVkCitkZWNlbnQKK2RlY2lkZQorZGVja3MKK2RlY2xhcmF0aW9uCitkZWNsYXJlCitkZWNsYXJpbmcKK2RlZGFuCitkZWVkCitkZWVwCitkZWZlYXQKK2RlZmVhdGVkCitkZWZpbGVkCitkZWZpbmUKK2RlbGF5CitkZWxheWVkCitkZWxpZ2h0CitkZWxpdmVyCitkZWxpdmVyZWQKK2RlbGl2ZXJ5CitkZW5pZWQKK2Rlbm91bmNlcworZGVwYXJ0CitkZXBhcnRlZAorZGVwYXJ0aW5nCitkZXBlbmRlbnQKK2RlcGVuZGVudHMKK2RlcG9zaXRvcnkKK2RlcHJpdmluZworZGVyaXZpbmcKK2Rlc2NlbmRhbnRzCitkZXNjZW5kaW5nCitkZXNpZ24KK2Rlc2lyZQorZGVzaXJlZAorZGVzb2xhdGUKK2Rlc29sYXRpb24KK2Rlc3Bpc2VkCitkZXNwb3Rpc20KK2Rlc3Ryb3kKK2Rlc3Ryb3llZAorZGVzdHJveXMKK2Rlc3RydWN0aW9uCitkZXN0cnVjdGl2ZQorZGV0ZXJtaW5lZAorZGV2b3VyZWQKK2Rldm91cmluZworZGV3CitkaWN0YXRlCitkaWQKK2RpZHN0CitkaWUKK2RpZWQKK2RpZXMKK2Rpa2xhaAorZGltCitkaW4naGFiYWgKK2RpbmFoCitkaW5haCdzCitkaW5lCitkaXBwZWQKK2RpcmVjdAorZGlyZWN0aW9uCitkaXNhc3RlcgorZGlzYXZvdworZGlzY3JlZXQKK2Rpc2dyYWNlCitkaXNoYW4KK2Rpc2hvbgorZGlzbWF5ZWQKK2Rpc3BsZWFzZWQKK2Rpc3BsZWFzaW5nCitkaXNwb3NlZAorZGlzc29sdXRpb25zCitkaXNzb2x2ZQorZGlzc29sdmVkCitkaXN0YW5jZQorZGlzdGFudAorZGlzdHJlc3MKK2Rpc3RyZXNzZWQKK2Rpc3RyaWN0cworZGl2aWRlCitkaXZpZGVkCitkaXZpZGluZworZGl2aW5hdGlvbgorZGl2aW5lCitkaXZpbmVzCitkbworZG8nZGFuaW0KK2RvZXIKK2RvZXMKK2RvaW5nCitkb21lc3RpYworZG9taW5pb24KK2RvbmUKK2Rvb3IKK2RvdGhhbgorZG91YmxlCitkb3VibGluZworZG91YnQKK2RvdmUKK2Rvd24KK2Rvd25jYXN0Citkb3dyeQorZHJhbmsKK2RyYXcKK2RyYXduCitkcmVhZAorZHJlYW0KK2RyZWFtZWQKK2RyZWFtZXIKK2RyZWFtcworZHJldworZHJpZWQKK2RyaW5rCitkcmlua2luZworZHJpbmtzCitkcml2ZW4KK2Ryb3ZlCitkcm92ZXMKK2RydW5rCitkcnkKK2R1ZworZHVtYWgKK2R1bmdlb24KK2R1cmluZworZHVzdAorZHV0eQorZHdlbGwKK2R3ZWxsaW5nCitkd2VsdAorZSdkb21pdGVzCitlJ3BocmFpbQorZSdwaHJhaW0ncworZWFjaAorZWFybHkKK2VhcnMKK2VhcnRoCitlYXNpbHkKK2Vhc3QKK2Vhc3R3YXJkCitlYXQKK2VhdGVuCitlYXRpbmcKK2ViYWwKK2ViZXIKK2VkZW4KK2VkZXIKK2Vkb20KK2VmZmVjdAorZWd5cHQKK2VneXB0aWFuCitlZ3lwdGlhbidzCitlZ3lwdGlhbnMKK2VoaQorZWlnaHQKK2VpZ2h0ZWVuCitlaWdodHkKK2VpZ2h0eS1zZXZlbgorZWlnaHR5LXNpeAorZWlnaHR5LXR3bworZWl0aGVyCitlbCdpcGhhegorZWwtYmV0aGVsCitlbC1lbCdvaGUtaXNyYWVsCitlbC1wYXJhbgorZWxhaAorZWxhbQorZWxkYSdhaAorZWxkZXIKK2VsZGVycworZWxkZXN0CitlbGVjdGVkCitlbGV2ZW4KK2VsaSdzaGFoCitlbGllJ3plcgorZWxsYSdzYXIKK2Vsb24KK2Vsc2UKK2VtYmFsbQorZW1iYWxtZWQKK2VtYmFsbWluZworZW1icmFjZQorZW1icmFjZWQKK2VtaWdyYXRpb24KK2VtaW0KK2VtcHRpZWQKK2VtcHR5CitlbXB0eS1oYW5kZWQKK2VuYWltCitlbmNhbXBlZAorZW5jYW1wbWVudHMKK2VuY291cmFnZQorZW5kCitlbmRlYXZvcmVkCitlbmRlZAorZW5kaW5nCitlbmRvd2VkCitlbmRzCitlbmVtaWVzCitlbmVteQorZW5nbGlzaAorZW5sYXJnZQorZW5sYXJnaW5nCitlbm1pc2gncGF0Citlbm1pdHkKK2Vub2NoCitlbm9zaAorZW5vdWdoCitlbnRlcgorZW50ZXJlZAorZW50aXRsZQorZW50cmFuY2UKK2VudHJlYXQKK2VudmllZAorZXBoYWgKK2VwaGVyCitlcGhyYXRoCitlcGhyb24KK2VxdWFsCitlcgorZXJlY2gKK2VyZWN0ZWQKK2VyaQorZXJyYW5kCitlc2F1Citlc2F1J3MKK2VzY2FwZQorZXNjYXBlZAorZXNlaworZXNoYmFuCitlc2hjb2wKK2VzdGFibGlzaAorZXN0YWJsaXNoZWQKK2VzdGFibGlzaGluZworZXN0YWJsaXNobWVudAorZXRlcm5hbAorZXVwaHJhJ3RlcworZXVwaHJhdGVzCitldmUKK2V2ZW4KK2V2ZW5pbmcKK2V2ZW50cworZXZlcgorZXZlcmxhc3RpbmcKK2V2ZXJ5CitldmVyeXRoaW5nCitldmVyeXdoZXJlCitldmlsCitldmlscworZXZpbmNlcworZXdlCitld2VzCitleGFtcGxlCitleGNlZWRpbmdseQorZXhjZXB0CitleGNoYW5nZQorZXhjaXRlZAorZXhlY3V0aW9uZXJzCitleGVyY2lzZQorZXhwZXJpZW5jZQorZXhwZXJ0CitleHBsYWluCitleHBvc2VkCitleHBvc2luZworZXh0ZW5kCitleHRlbmRlZAorZXllcworZXpib24KK2V6ZXIKK2ZhY2UKK2ZhY2VzCitmYWN0cworZmFpbGVkCitmYWludGVkCitmYWlyCitmYWl0aGZ1bG5lc3MKK2ZhbGwKK2ZhbGxlbgorZmFsbHMKK2ZhbHNlbHkKK2ZhbWlsaWVzCitmYW1pbHkKK2ZhbWluZQorZmFtaXNoZWQKK2ZhcgorZmFyZQorZmFyZWQKK2ZhcmV3ZWxsCitmYXN0CitmYXQKK2ZhdGhlcgorZmF0aGVyJ3MKK2ZhdGhlci1pbi1sYXcKK2ZhdGhlcnMKK2ZhdGlndWluZworZmF0bmVzcworZmF1bHRzCitmYXZvcgorZmF2b3JhYmxlCitmYXducworZmVhcgorZmVhcmVkCitmZWFzdAorZmVkCitmZWVibGVyCitmZWVkCitmZWVsCitmZWV0CitmZWxsCitmZWxsb3cKK2ZlbHQKK2ZlbWFsZQorZmVzdGFsCitmZXRjaAorZmV3CitmaWVsZAorZmllbGRzCitmaWVyY2UKK2ZpZXJjZWx5CitmaWZ0ZWVuCitmaWZ0aAorZmlmdGhzCitmaWZ0eQorZmlnCitmaWxsCitmaWxsZWQKK2ZpbmQKK2ZpbmRzCitmaW5lCitmaW5pc2gKK2ZpbmlzaGVkCitmaXJlCitmaXJtCitmaXJtYW1lbnQKK2Zpcm1uZXNzCitmaXJzdAorZmlyc3QtCitmaXJzdC1ib3JuCitmaXJzdGxpbmdzCitmaXNoCitmaXQKK2ZpdmUKK2ZpeGVkCitmbGFtaW5nCitmbGVkCitmbGVlCitmbGVlaW5nCitmbGVzaAorZmxvYXRlZAorZmxvY2sKK2Zsb2NrcworZmxvb2QKK2Zsb29yCitmbG93ZWQKK2Zsb3dzCitmbHkKK2ZvYWwKK2ZvbGxvdworZm9sbG93ZWQKK2ZvbGxvd2luZworZm9sbG93cworZm9sbHkKK2ZvbmRsaW5nCitmb29kCitmb29saXNobHkKK2Zvb3QKK2ZvcgorZm9yYmlkZGVuCitmb3JjZQorZm9yY2VkCitmb3JjZXMKK2ZvcmQKK2ZvcmVpZ24KK2ZvcmVpZ25lcgorZm9yZWlnbmVycworZm9yZW1vc3QKK2ZvcmVza2luCitmb3Jlc2tpbnMKK2ZvcmdlcgorZm9yZ2V0Citmb3JnZXRzCitmb3JnaXZlCitmb3Jnb3QKK2ZvcmdvdHRlbgorZm9ybQorZm9ybWVkCitmb3JtZXIKK2Zvcm1lcmx5Citmb3JtaWRhYmxlCitmb3JtcworZm9yc2FrZW4KK2ZvcnRoCitmb3J0dW5lCitmb3J0dW5lcworZm9ydHkKK2ZvcnR5LWZpdmUKK2ZvcnR5LXNldmVuCitmb3VuZAorZm91bmRhdGlvbgorZm91bnRhaW5zCitmb3VyCitmb3VydGVlbgorZm91cnRlZW50aAorZm91cnRoCitmcmFpbAorZnJlZQorZnJlZWx5CitmcmVzaAorZnJlc2hseQorZnJpZW5kCitmcmllbmRseQorZnJpZW5kcworZnJvCitmcm9tCitmcm9udAorZnJvbnRpZXJzCitmcnVpdAorZnJ1aXRmdWwKK2ZydWl0cworZnVnaXRpdmUKK2Z1bGZpbAorZnVsZmlsbGVkCitmdWxsCitmdW5kYW1lbnRhbGx5CitmdXJuYWNlCitmdXJ5CitmdXR1cmUKK2dhZAorZ2FoYW0KK2dhaW5lZAorZ2FsZWVkCitnYW1lCitnYXJkZW4KK2dhcm1lbnQKK2dhcm1lbnRzCitnYXRhbQorZ2F0ZQorZ2F0aGVyCitnYXRoZXJlZAorZ2F1bnQKK2dhdmUKK2dhdmVzdAorZ2F6YQorZ2F6ZWQKK2dlbmVhbG9naWVzCitnZW5lcmFsCitnZW5lcmF0aW9uCitnZW5lcmF0aW9ucworZ2VyYQorZ2VyYXIKK2dlcnNob24KK2dldAorZ2V0aGVyCitnaWZ0CitnaWZ0cworZ2lob24KK2dpbGVhZAorZ2lyJ2dhc2hpdGVzCitnaXZlCitnaXZlbgorZ2l2ZXN0CitnaXZpbmcKK2dvCitnb2F0Citnb2F0cworZ29kCitnb2QncworZ29kcworZ29lcworZ29pJ2ltCitnb2luZworZ29sZAorZ29tZXIKK2dvbW9yJ3JhaAorZ29uZQorZ29vZAorZ29vZC1sb29raW5nCitnb29kcworZ29waGVyCitnb3NoZW4KK2dvdAorZ290dGVuCitnb3Zlcm5lZAorZ292ZXJubWVudAorZ292ZXJubWVudHMKK2dvdmVybm1lbnRzOgorZ292ZXJub3IKK2dvdmVybm9ycworZ3JhY2lvdXMKK2dyYWNpb3VzbHkKK2dyYWluCitncmFuZGNoaWxkcmVuCitncmFuZHNvbgorZ3JhbnQKK2dyYW50ZWQKK2dyYXBlcworZ3Jhc3MKK2dyYXZlCitncmF5CitncmVhdAorZ3JlYXRlcgorZ3JlYXRseQorZ3JlZW4KK2dyZXcKK2dyaWV2ZWQKK2dyaWV2b3VzCitncm9waW5nCitncm91bmQKK2dyb3cKK2dyb3dpbmcKK2dyb3duCitncm93cworZ3VhcmQKK2d1YXJkcworZ3VpbGUKK2d1aWx0CitndWlsdHkKK2d1bQorZ3VuaQoraGEnbWF0aGl0ZXMKK2hhZAoraGFkYWQKK2hhZGFyCitoYWRvcidhbQoraGFnYXIKK2hhZ2dpCitoYWlycworaGFpcnkKK2hhbGYKK2hhbGxvd2VkCitoYW0KK2hhbW9yCitoYW1vcidzCitoYW1zdHJpbmcKK2hhbXVsCitoYW5kCitoYW5kcworaGFuZHNvbWUKK2hhbmcKK2hhbmdlZAoraGFub2NoCitoYXBwZW5lZAoraGFwcGluZXNzCitoYXBweQoraGFyYW4KK2hhcmFzcworaGFyYXNzZWQKK2hhcmQKK2hhcmRzaGlwCitoYXJsb3QKK2hhcmxvdHJ5CitoYXJtCitoYXJzaGx5CitoYXJ2ZXN0CitoYXJ2ZXN0cworaGFzCitoYXN0CitoYXN0ZQoraGFzdGVuZWQKK2hhc3RpbHkKK2hhdGUKK2hhdGVkCitoYXRoCitoYXYnaWxhaAoraGF2ZQoraGF2ZW4KK2hhdmlsYWgKK2hhdmluZworaGF6J2F6b24tdGEnbWFyCitoYXphcm1hJ3ZldGgKK2hhem8KK2hlCitoZS1hc3NlcworaGUtZ29hdHMKK2hlYWQKK2hlYWRzCitoZWFsZWQKK2hlYXAKK2hlYXIKK2hlYXJkCitoZWFyaW5nCitoZWFya2VuCitoZWFya2VuZWQKK2hlYXJzCitoZWFydAoraGVhcnRzCitoZWF0CitoZWF2ZW4KK2hlYXZlbnMKK2hlYmVyCitoZWJyZXcKK2hlYnJld3MKK2hlYnJvbgoraGVlZAoraGVlZGVkCitoZWVsCitoZWVscworaGVpZmVyCitoZWlnaHQKK2hlaXIKK2hlbGQKK2hlbHAKK2hlbHBlcgoraGVtYW4KK2hlbWRhbgoraGVyCitoZXJiCitoZXJkCitoZXJkcworaGVyZHNtZW4KK2hlcmUKK2hlcnNlbGYKK2hldGgKK2hld2VkCitoZXpyb24KK2hpZAoraGlkZGVuCitoaWRlCitoaWdoCitoaWxsCitoaWxscworaGltCitoaW1zZWxmCitoaW5kCitoaW5kZXIKK2hpcAoraGlyYWgKK2hpcmUKK2hpcmVkCitoaXMKK2hpc3RvcnkKK2hpdGhlcgoraGl0dGl0ZQoraGl0dGl0ZXMKK2hpdml0ZQoraGl2aXRlcworaG9iYWgKK2hvbGQKK2hvbGxvdworaG9tZQoraG9uZXN0Citob25lc3R5Citob25leQoraG9ub3IKK2hvbm9yZWQKK2hvcmkKK2hvcml0ZQoraG9yaXRlcworaG9ybnMKK2hvcnNlJ3MKK2hvcnNlbWVuCitob3JzZXMKK2hvc3QKK2hvdAoraG90bHkKK2hvdXNlCitob3VzZWhvbGQKK2hvdXNlaG9sZHMKK2hvdXNlcworaG93CitodWwKK2h1bWFuCitodW1hbmUKK2h1bWJsZQoraHVtYmxlZAoraHVuZHJlZAoraHVuZHJlZGZvbGQKK2h1bmRyZWR0aAoraHVudAoraHVudGVkCitodW50ZXIKK2h1bnRpbmcKK2h1cHBpbQoraHVzYmFuZAoraHVzaGFtCitodXNoaW0KK2kKK2lmCitpbGwKK2lsbC10cmVhdAoraW1hZ2UKK2ltYWdpbmF0aW9uCitpbW1lZGlhdGUKK2ltbmFoCitpbXBlbAoraW1wb3J0YW5jZQoraW1wb3NpbmcKK2ltcG9zc2libGUKK2luCitpbmFzbXVjaAoraW5jYXBhYmxlCitpbmNsdWRpbmcKK2luY3JlYXNlZAoraW5kZWVkCitpbmRlcGVuZGVudAoraW5kaWFuCitpbmRpZ25hbnQKK2luZXN0aW1hYmxlCitpbmV2aXRhYmx5CitpbmhhYml0YW50cworaW5oZXJpdGFuY2UKK2luaXF1aXR5Citpbmp1cmllcworaW5qdXJ5Citpbm5vY2VuY2UKK2lubm9jZW50CitpbnF1aXJlCitpbnF1aXJlZAoraW5zaWRlCitpbnN0ZWFkCitpbnN0aXR1dGUKK2luc3RpdHV0ZWQKK2luc3RydWN0ZWQKK2luc3RydWN0aW5nCitpbnN0cnVtZW50CitpbnN0cnVtZW50cworaW5zdWx0CitpbnN1cnJlY3Rpb25zCitpbnRlZ3JpdHkKK2ludGVuZGVkCitpbnRlbnRpb25zCitpbnRlcnByZXQKK2ludGVycHJldGF0aW9uCitpbnRlcnByZXRhdGlvbnMKK2ludGVycHJldGVkCitpbnRlcnByZXRlcgoraW50ZXJydXB0CitpbnRvCitpbnRyb2R1Y2luZworaW52YXJpYWJseQoraW52YXNpb24KK2ludmFzaW9ucworaW52ZXN0ZWQKK2lvYgoraXJhZAoraXJhbQoraXJvbgoraXMKK2lzJ3NhY2hhcgoraXNhYWMKK2lzYWFjJ3MKK2lzY2FoCitpc2gnbWFlbAoraXNoJ21hZWwncworaXNoJ21hZWxpdGVzCitpc2hiYWsKK2lzaHZhaAoraXNodmkKK2lzcmFlbAoraXNyYWVsJ3MKK2lzcmFlbGl0ZXMKK2l0CitpdGhyYW4KK2l0cworaXRzZWxmCitqYWJhbAoramFiYm9rCitqYWNoaW4KK2phY29iCitqYWNvYidzCitqYWgnbGVlbAoramFoemVlbAoramFsYW0KK2phbWluCitqYXBoZXRoCitqYXIKK2phcmVkCitqYXZhbgoramUnZ2FyLXNhaGFkdSd0aGEKK2plJ3VzaAoramVhbG91cworamViJ3VzaXRlcworamVtdSdlbAoramVyYWgKK2plc3RpbmcKK2pldGhldGgKK2pldHVyCitqZXdlbHJ5CitqZXplcgoramlkbGFwaAoram9iYWIKK2pvaW5lZAoram9pbnQKK2pva3NoYW4KK2pva3Rhbgoram9yZGFuCitqb3NlcGgKK2pvc2VwaCdzCitqb3VybmV5Citqb3VybmV5ZWQKK2p1YmFsCitqdWRhaAoranVkYWgncworanVkZ2UKK2p1ZGdlZAoranVkZ2VzCitqdWRnbWVudAoranVkaWNpYXJ5CitqdWRpdGgKK2p1cmlzZGljdGlvbgoranVyeToKK2p1c3QKK2p1c3RpY2UKK2thZCdtb25pdGVzCitrYWRlc2gKK2tlZCdlbWFoCitrZWRhcgora2VlcAora2VlcGVyCitrZWVwZXJzCitrZW11J2VsCitrZW4naXRlcwora2VuJ2l6eml0ZXMKK2tlbmFuCitrZW5hegora2VwdAora2V0dSdyYWgKK2tpZAora2lkcwora2lsbAora2lsbGVkCitraW5kCitraW5kbGVkCitraW5kbmVzcwora2luZHJlZAora2luZHMKK2tpbmcKK2tpbmcncwora2luZ2RvbQora2luZ3MKK2tpbnNtYW4KK2tpbnNtZW4KK2tpcidpYXRoLWFyJ2JhCitraXNzCitraXNzZWQKK2tpdHRpbQora25lYWQKK2tuZWUKK2tuZWVsCitrbmVlcwora25ldwora25pZmUKK2tub3cKK2tub3dpbmcKK2tub3dsZWRnZQora25vd24KK2tub3dzCitrb2hhdGgKK2tvcmFoCitsYWJhbgorbGFiYW4ncworbGFib3IKK2xhY2sKK2xhY2tpbmcKK2xhZAorbGFkJ3MKK2xhZGRlcgorbGFkcworbGFpZAorbGFpbgorbGFtYgorbGFtYnMKK2xhbWVjaAorbGFtZW50YXRpb24KK2xhbWVudGVkCitsYW5kCitsYW5kcworbGFuZ3VhZ2UKK2xhbmd1YWdlcworbGFuZ3Vpc2hlZAorbGFyZ2UKK2xhc2hhCitsYXN0CitsYXRlcgorbGF1Z2gKK2xhdWdoZWQKK2xhdWdodGVyCitsYXdzCitsYXkKK2xheWluZworbGUtdW0nbWltCitsZWFkCitsZWFmCitsZWFoCitsZWFoJ3MKK2xlYW4KK2xlYXAKK2xlYXBlZAorbGVhcm4KK2xlYXJuZWQKK2xlYXN0CitsZWF2ZQorbGVhdmVzCitsZWQKK2xlZnQKK2xlZ2lzbGF0ZQorbGVnaXNsYXRpb246CitsZWdpc2xhdGl2ZQorbGVnaXNsYXR1cmUKK2xlZ2lzbGF0dXJlcworbGVoYSdiaW0KK2xlbmd0aAorbGVudGlscworbGVzc2VyCitsZXN0CitsZXQKK2xldHUnc2hpbQorbGV2ZXkKK2xldmkKK2xpYmVydHkKK2xpZQorbGllcworbGlmZQorbGlmZWJsb29kCitsaWZ0CitsaWZ0ZWQKK2xpZ2h0CitsaWdodHMKK2xpa2UKK2xpa2VseQorbGlrZW5lc3MKK2xpa2V3aXNlCitsaW1waW5nCitsaW5lbgorbGluZ2VyZWQKK2xpb24KK2xpb24ncworbGlvbmVzcworbGlzdGVuCitsaXN0ZW5lZAorbGlzdGVuaW5nCitsaXR0bGUKK2xpdmUKK2xpdmVkCitsaXZlcworbGl2ZXN0b2NrCitsaXZpbmcKK2xvCitsb2FkCitsb2FkZWQKK2xvZGdlCitsb2RnZWQKK2xvZGdpbmcKK2xvaW5zCitsb25nCitsb25nZWQKK2xvbmdlcgorbG9uZ3MKK2xvb2sKK2xvb2tlZAorbG9va2luZworbG9vc2UKK2xvcmQKK2xvcmQncworbG9yZHMKK2xvc3MKK2xvdAorbG90J3MKK2xvdGFuCitsb3RhbidzCitsb3VkCitsb3ZlCitsb3ZlZAorbG92ZWx5Citsb3ZlcworbG93ZXIKK2xvd2VyZWQKK2xveWFsbHkKK2x1ZAorbHVkaW0KK2x1egorbHlpbmcKK2x5cmUKK21hJ2FjYWgKK21hJ2hhbGF0aAorbWEtaGFsJ2FsZWwKK21hY2gtCittYWNoLXBlJ2xhaAorbWFjaGlyCittYWRhaQorbWFkZQorbWFnJ2RpZWwKK21hZ2ljaWFucworbWFnbmFuaW1pdHkKK21hZ29nCittYWhhbmEnaW0KK21haWQKK21haWRlbgorbWFpZHMKK21haWRzZXJ2YW50cworbWFrZQorbWFrZXIKK21ha2luZworbWFsJ2NoaS1lbAorbWFsZQorbWFsZXMKK21hbXJlCittYW4KK21hbidhaGF0aAorbWFuJ3MKK21hbmFzJ3NlaAorbWFuYXMnc2VoJ3MKK21hbmRyYWtlcworbWFua2luZAorbWFubHkKK21hbm5lcgorbWFudGxlCittYW55CittYXJrCittYXJrZWQKK21hcnJpYWdlCittYXJyaWFnZXMKK21hcnJpZWQKK21hcnJpZXMKK21hcnJ5CittYXNoCittYXNyZSdrYWgKK21hc3NhCittYXN0ZXIKK21hc3RlcidzCittYXRlCittYXRpbmcKK21hdHJlZAorbWF0dGVyCittYXkKK21lCittZSd6YWhhYgorbWUtaHUnamEtZWwKK21lLXRodSdzaGEtZWwKK21lYWwKK21lYW4KK21lYW5pbmcKK21lYW5zCittZWFudAorbWVhbnRpbWUKK21lYW53aGlsZQorbWVhc3VyZQorbWVhc3VyZWQKK21lYXN1cmVzCittZWRhbgorbWVkaXRhdGUKK21lZXQKK21lZXRzCittZWhldCdhYmVsCittZWwtY2hpeidlZGVrCittZW1iZXJzCittZW4KK21lbidzCittZW5kCittZW5kZWQKK21lbnNlcnZhbnRzCittZW50aW9uCittZXJhcidpCittZXJjZW5hcmllcworbWVyY2hhbnRzCittZXJjaWZ1bAorbWVyY2lsZXNzCittZXJjeQorbWVycnkKK21lc2hhCittZXNoZWNoCittZXNvcG90YSdtaWEKK21lc3NhZ2UKK21lc3NlbmdlcnMKK21ldAorbWV0aHUnc2VsYWgKK21pYnNhbQorbWliemFyCittaWQnaWFuCittaWQnaWFuaXRlCittaWQnaWFuaXRlcworbWlkc3QKK21pZHdpZmUKK21pZ2h0CittaWdodGllcgorbWlnaHRpbHkKK21pZ2h0eQorbWlncmF0ZWQKK21pZ3JhdGlvbgorbWlsY2FoCittaWxjaAorbWlsaXRhcnkKK21pbGsKK21pbmQKK21pbmUKK21pcnRoCittaXNjYXJyaWVkCittaXNobWEKK21pc3QKK21pc3RyZXNzCittaXpwYWgKK21penphaAorbW9hYgorbW9hYml0ZXMKK21vY2sKK21vY2tpbmcKK21vbmV5Cittb25zdGVycworbW9udGgKK21vbnRocworbW9vbgorbW9yZQorbW9yZWgKK21vcmVvdmVyCittb3JpJ2FoCittb3JuaW5nCittb3JzZWwKK21vcnRhcgorbW9zdAorbW90aGVyCittb3RoZXIncworbW90aGVycworbW90dGxlZAorbW91bnQKK21vdW50YWluCittb3VudGFpbnMKK21vdXJuCittb3VybmVkCittb3VybmluZworbW91dGgKK21vdmVkCittb3ZlcworbW92aW5nCittdWNoCittdWx0aXBsaWVkCittdWx0aXBseQorbXVsdGl0dWRlCittdXBwaW0KK211cmRlcnMKK211c3QKK211dHVhbGx5CitteQorbXlycmgKK215c2VsZgorbmEnYW1haAorbmEnYW1hbgorbmFoYXRoCituYWhvcgorbmFob3IncworbmFrZWQKK25ha2VkbmVzcworbmFtZQorbmFtZWQKK25hbWVzCituYXBoJ3RhbGkKK25hcGgtdHUnaGltCituYXBoaXNoCituYXRpb24KK25hdGlvbnMKK25hdGl2ZQorbmF0dXJhbGl6YXRpb24KK25hdHVyZQorbmF0dXJlJ3MKK25lYXIKK25lYmEnaW90aAorbmVjZXNzYXJ5CituZWNlc3NpdHkKK25lY2sKK25lZWQKK25lZ2ViCituZWdsZWN0ZWQKK25laWdoYm9yaW5nCituZWl0aGVyCituZXBoaWxpbQorbmV2ZXIKK25ldmVydGhlbGVzcworbmV3CituZXh0CituaWdodAorbmlnaHRzCituaWxlCituaW1yb2QKK25pbidldmVoCituaW5lCituaW5ldGVlbgorbmluZXR5CituaW5ldHktZml2ZQorbmluZXR5LW5pbmUKK25vCitub2FoCitub2FoJ3MKK25vZAorbm9uZQorbm9vbgorbm9yCitub3J0aAorbm9ydGh3YXJkCitub3NlCitub3N0cmlscworbm90Citub3RoaW5nCitub3cKK251bWJlcgorbnVtYmVyZWQKK251bWJlcnMKK251cnNlCitudXRzCitvCitvYWsKK29ha3MKK29hdGgKK29iYWwKK29iZWRpZW5jZQorb2JlaXNhbmNlCitvYmV5CitvYmV5ZWQKK29iamVjdAorb2JzdHJ1Y3RlZAorb2JzdHJ1Y3RpbmcKK29idGFpbgorb2J0YWluZWQKK29jY2FzaW9uCitvY2N1cGF0aW9uCitvZGlvdXMKK29kb3IKK29mCitvZmYKK29mZmVuZGVkCitvZmZlbnNlCitvZmZlbnNlczoKK29mZmVyCitvZmZlcmVkCitvZmZlcmluZworb2ZmZXJpbmdzCitvZmZpY2UKK29mZmljZXIKK29mZmljZXJzCitvZmZpY2VzCitvZmZzcHJpbmcKK29oCitvaGFkCitvaG9saWJhJ21haAorb2lsCitvbGQKK29sZGVyCitvbGRlc3QKK29saXZlCitvbWFyCitvbgorb25hbQorb25hbgorb25jZQorb25lCitvbmVzCitvbmx5Citvbnl4CitvcGVuCitvcGVuZWQKK29wZXJhdGlvbgorb3BoaXIKK29waW5pb25zCitvcHBvc2luZworb3Bwb3NpdGUKK29wcHJlc3NlZAorb3BwcmVzc2lvbnMKK29yCitvcmRlcgorb3JkZXJzCitvcmdhbml6aW5nCitvcm5hbWVudHMKK290aGVyCitvdGhlcnMKK291Z2h0CitvdXIKK291cnMKK291cnNlbHZlcworb3V0CitvdXRjcnkKK291dHNpZGUKK291dHdpdHRlZAorb3Zlcgorb3ZlcmRyaXZlbgorb3ZlcnNlZXIKK292ZXJzZWVycworb3ZlcnNpZ2h0CitvdmVydGFrZQorb3ZlcnRocmV3CitvdmVydGhyb3cKK292ZXJ0b29rCitvd24KK293bnMKK294ZW4KK3BhY2UKK3BhZGRhbgorcGFkZGFuLWFyYW0KK3BhaWQKK3BhaW4KK3BhaXIKK3BhaXJzCitwYWxsdQorcGFyYWxsZWxlZAorcGFyYW4KK3BhcnQKK3BhcnRzCitwYXNzCitwYXNzZWQKK3Bhc3QKK3Bhc3R1cmUKK3Bhc3R1cmVkCitwYXN0dXJpbmcKK3BhdGgKK3BhdGhydSdzaW0KK3BhdGllbnQKK3BhdQorcGF5CitwYXltZW50CitwZSdsYWgKK3BlYWNlCitwZWFjZWFibHkKK3BlZWxlZAorcGVsZWcKK3BlbmknZWwKK3BlbnUnZWwKK3Blb3BsZQorcGVvcGxlZAorcGVvcGxlcworcGVyJ2l6eml0ZXMKK3BlcmV6CitwZXJmaWR5CitwZXJmb3JtCitwZXJoYXBzCitwZXJpc2gKK3Blcm1pdAorcGVycGV0dWF0ZWQKK3BlcnNvbnMKK3BldGl0aW9uZWQKK3BldGl0aW9ucworcGhhcmFvaAorcGhhcmFvaCdzCitwaGljb2wKK3BoaWxpc3RpbmVzCitwaHlzaWNpYW5zCitwaWVjZQorcGllY2VzCitwaWdlb24KK3BpbGRhc2gKK3BpbGxhcgorcGlub24KK3BpcGUKK3Bpc2hvbgorcGlzdGFjaGlvCitwaXQKK3BpdGNoCitwaXRjaGVkCitwaXRzCitwbGFjZQorcGxhY2VkCitwbGFjZXMKK3BsYWd1ZXMKK3BsYWluCitwbGFpbmx5CitwbGFuZQorcGxhbm5pbmcKK3BsYW50CitwbGFudGVkCitwbGFudHMKK3BsYXkKK3BsYXllZAorcGxheWluZworcGxlYXNhbnQKK3BsZWFzZQorcGxlYXNlZAorcGxlYXNlcworcGxlYXNpbmcKK3BsZWFzdXJlCitwbGVkZ2UKK3BsZW50ZW91cworcGxlbnR5CitwbG93aW5nCitwbHVja2VkCitwbHVtcAorcGx1bmRlcmVkCitwb2ludAorcG9saXRpY2FsCitwb29yCitwb3BsYXIKK3BvcHVsYXRpb24KK3BvcnRpb24KK3BvcnRpb25zCitwb3NzZXNzCitwb3NzZXNzaW9uCitwb3NzZXNzaW9ucworcG9zdGVyaXR5Citwb3QKK3BvdCdpLXBoYXIKK3BvdGkncGhlcmEKK3BvdHRhZ2UKK3BvdXJlZAorcG92ZXJ0eQorcG93ZXIKK3Bvd2VycworcHJhaXNlCitwcmFpc2VkCitwcmF5CitwcmF5ZWQKK3ByYXllcgorcHJlLWVtaW5lbmNlCitwcmUtZW1pbmVudAorcHJlcGFyZQorcHJlcGFyZWQKK3ByZXNlbmNlCitwcmVzZW50CitwcmVzZW50ZWQKK3ByZXNlcnZlCitwcmVzZXJ2ZWQKK3ByZXNzZWQKK3ByZXNzaW5nCitwcmV0ZW5kZWQKK3ByZXZhaWwKK3ByZXZhaWxlZAorcHJldmVudAorcHJldmVudGVkCitwcmV5CitwcmljZQorcHJpZGUKK3ByaWVzdAorcHJpZXN0cworcHJpbmNlCitwcmluY2VzCitwcmluY2lwbGVzCitwcmlzb24KK3ByaXNvbmVycworcHJvY2VlZAorcHJvZHVjZQorcHJvZml0Citwcm9taXNlCitwcm9taXNlZAorcHJvbm91bmNlCitwcm9wZXJ0eQorcHJvcGhldAorcHJvcG9zYWwKK3Byb3Bvc2UKK3Byb3NwZXIKK3Byb3NwZXJlZAorcHJvdGVjdGluZworcHJvdGVjdGlvbgorcHJvdmUKK3Byb3ZlbmRlcgorcHJvdmlkZQorcHJvdmlkZWQKK3Byb3ZpZGVuY2UKK3Byb3ZpbmNlCitwcm92aXNpb24KK3Byb3Zpc2lvbnMKK3BydWRlbmNlCitwdWJsaWMKK3B1Ymxpc2gKK3B1bmlzaG1lbnQKK3B1cmNoYXNlZAorcHVyaWZ5CitwdXJwb3NlCitwdXJzdWUKK3B1cnN1ZWQKK3B1cnN1aW5nCitwdXJzdWl0CitwdXQKK3B1dHRpbmcKK3B1dmFoCitxdWFycmVsCitxdWFycmVsZWQKK3F1YXJ0ZXJpbmcKK3F1ZXN0aW9uZWQKK3F1ZXN0aW9ucworcXVpY2tseQorcXVpZXQKK3F1aXZlcgorcmEnYW1haAorcmFjaGVsCityYWNoZWwncworcmFpZAorcmFpZGVycworcmFpbWVudAorcmFpbgorcmFpbmVkCityYWlzZQorcmFpc2VkCityYWlzaW5nCityYW0KK3JhbSdlc2VzCityYW1zCityYW4KK3JhdGhlcgorcmF2YWdlZAorcmF2ZW4KK3JhdmVub3VzCityZSd1CityZWFjaGVkCityZWFkeQorcmVhbGx5CityZWFwZWQKK3JlYXNvbgorcmVhc3N1cmVkCityZWJla2FoCityZWJla2FoJ3MKK3JlYmVsbGVkCityZWJ1a2VkCityZWNlZGVkCityZWNlaXZlCityZWNlaXZlZAorcmVja29uZWQKK3JlY2tvbmluZworcmVjb2duaXplCityZWNvZ25pemVkCityZWNvcmRzCityZWN0aXR1ZGUKK3JlZAorcmVkZWVtZWQKK3JlZHJlc3MKK3JlZHVjZQorcmVlZAorcmVmcmVzaAorcmVmdXNlZAorcmVmdXNpbmcKK3JlZ2FyZAorcmVnYXJkZWQKK3JlZ2FyZHMKK3JlaG8nYm90aAorcmVobydib3RoLWlyCityZWlnbgorcmVpZ25lZAorcmVsaWFuY2UKK3JlbGllZgorcmVsaW5xdWlzaAorcmVtYWluCityZW1haW5lZAorcmVtYWluaW5nCityZW1haW5zCityZW1lbWJlcgorcmVtZW1iZXJlZAorcmVtaW5kZWQKK3JlbW5hbnQKK3JlbW92ZQorcmVtb3ZlZAorcmVtb3ZpbmcKK3JlbmRlcgorcmVub3duCityZW50CityZXBlYXRlZAorcmVwZWF0ZWRseQorcmVwaCdhaW0KK3JlcGxhY2UKK3JlcGxhY2VkCityZXBsaWVkCityZXBvcnQKK3JlcHJlc2VudGF0aW9uCityZXByZXNlbnRhdGl2ZQorcmVwcmVzZW50YXRpdmVzCityZXByb2FjaAorcmVxdWlyZQorcmVxdWlyZWQKK3JlcXVpcmVzCityZXNjdWUKK3Jlc2VuCityZXNlcnZlCityZXNlcnZlZAorcmVzcGVjdAorcmVzdAorcmVzdGVkCityZXN0aW5nCityZXN0b3JlCityZXN0b3JlZAorcmVzdHJhaW5lZAorcmV0dXJuCityZXR1cm5lZAorcmV1J2VsCityZXViZW4KK3JldW1haAorcmV2ZWFsZWQKK3Jldml2ZWQKK3Jld2FyZAorcmliCityaWJzCityaWNoCityaWRlCityaWRlcgorcmlnaHQKK3JpZ2h0ZWQKK3JpZ2h0ZW91cworcmlnaHRlb3VzbmVzcworcmlnaHRseQorcmlnaHRzCityaW5nCityaW5ncworcmlwZW5lZAorcmlwaGF0aAorcmlzZQorcmlzZW4KK3JpdmVyCityaXZlcnMKK3JvYWQKK3JvYmUKK3JvY2sKK3JvZGUKK3JvZHMKK3JvbGwKK3JvbGxlZAorcm9vZgorcm9vbQorcm9vbXMKK3Jvc2UKK3Jvc2gKK3JvdWdobHkKK3JvdW5kCityb3VzZQorcm91dGVkCityb3lhbAorcnVsZQorcnVsZXIKK3J1bGVyJ3MKK3J1bgorcnVubmVscworc2FiJ3RlY2EKK3NhYnRhaAorc2Fjaworc2Fja2Nsb3RoCitzYWNrcworc2FjcmVkCitzYWNyaWZpY2UKK3NhY3JpZmljZXMKK3NhZGRsZQorc2FkZGxlZAorc2FmZWx5CitzYWZldHkKK3NhaWQKK3Nha2UKK3NhbGFyaWVzCitzYWxlbQorc2FsdAorc2FsdmF0aW9uCitzYW1lCitzYW1sYWgKK3NhbmQKK3NhbmRhbC10aG9uZworc2FyJ2FpCitzYXJhaAorc2FyYWgncworc2F0CitzYXZhZ2VzCitzYXZlZAorc2F2aW5nCitzYXZvcnkKK3Nhdworc2F5CitzYXlpbmcKK3NheXMKK3NjYXJjZWx5CitzY2FybGV0CitzY2F0dGVyCitzY2F0dGVyZWQKK3NjZXB0ZXIKK3NlJ2lyCitzZWEKK3NlYXJjaGVkCitzZWFzCitzZWFzaG9yZQorc2Vhc29uCitzZWFzb25zCitzZWJhCitzZWNvbmQKK3NlY3JldGx5CitzZWN1cmUKK3NlY3VyaXR5CitzZWUKK3NlZWQKK3NlZWR0aW1lCitzZWVpbmcKK3NlZWsKK3NlZWtpbmcKK3NlZW0KK3NlZW1lZAorc2Vlbgorc2Vlcworc2VpemUKK3NlaXplZAorc2VsZWN0CitzZWxmLWV2aWRlbnQKK3NlbGwKK3NlbWVuCitzZW5kCitzZW50CitzZXBhcmF0ZQorc2VwYXJhdGVkCitzZXBhcmF0aW9uCitzZXBoYXIKK3NlcHVsY2hyZQorc2VwdWxjaHJlcworc2VyYWgKK3NlcmVkCitzZXJwZW50CitzZXJ1Zworc2VydmFudAorc2VydmFudCdzCitzZXJ2YW50cworc2VydmUKK3NlcnZlZAorc2VydmljZQorc2VydmluZworc2V0CitzZXRoCitzZXR0bGUKK3NldHRsZWQKK3NldHRsZW1lbnQKK3NldmVuCitzZXZlbmZvbGQKK3NldmVudGVlbgorc2V2ZW50ZWVudGgKK3NldmVudGgKK3NldmVudHkKK3NldmVudHktZml2ZQorc2V2ZW50eS1zZXZlbgorc2V2ZW50eS1zZXZlbmZvbGQKK3NldmVyZQorc2V3ZWQKK3NleGVzCitzaGEndmVoLWtpcmlhdGhhJ2ltCitzaGFsbAorc2hhbW1haAorc2hhcmUKK3NoYXVsCitzaGF2ZWQKK3NoYXZlaAorc2hlCitzaGUtYXNzZXMKK3NoZS1nb2F0CitzaGUtZ29hdHMKK3NoZWFmCitzaGVhcgorc2hlYXZlcworc2hlYmEKK3NoZWNoZW0KK3NoZWNoZW0ncworc2hlZAorc2hlZHMKK3NoZWVwCitzaGVlcGZvbGRzCitzaGVlcHNoZWFyZXJzCitzaGVrZWwKK3NoZWtlbHMKK3NoZWxhaAorc2hlbGVwaAorc2hlbHRlcgorc2hlbQorc2hlbWUnYmVyCitzaGVvbAorc2hlcGhlcmQKK3NoZXBoZXJkaW5nCitzaGVwaGVyZHMKK3NoZXBobworc2hpYmFoCitzaGllbGQKK3NoaWxsZW0KK3NoaW1yb24KK3NoaW5hYgorc2hpbmFyCitzaGlwcworc2hvYmFsCitzaG9yZQorc2hvcnQKK3Nob3J0bHkKK3Nob3QKK3Nob3VsZAorc2hvdWxkZXIKK3Nob3VsZGVycworc2hvdworc2hvd2VkCitzaG93bgorc2h1YQorc2h1YSdzCitzaHVhaAorc2h1bmkKK3NodXIKK3NodXQKK3NpZGRpbQorc2lkZQorc2lkb24KK3NpZ2h0CitzaWduCitzaWduZXQKK3NpZ25zCitzaWxlbmNlCitzaWx2ZXIKK3NpbWVvbgorc2luCitzaW5jZQorc2luZXcKK3Npbml0ZXMKK3Npbm5lZAorc2lubmVycworc2lubmluZworc2lzdGVyCitzaXN0ZXIncworc2l0CitzaXRuYWgKK3NpdHRpbmcKK3NpeAorc2l4dGVlbgorc2l4dGgKK3NpeHR5CitzaXh0eS1maXZlCitzaXh0eS1uaW5lCitzaXh0eS1zaXgKK3NpeHR5LXR3bworc2tpbGZ1bAorc2tpbgorc2tpbnMKK3NsYWluCitzbGF1Z2h0ZXIKK3NsYXZlCitzbGF2ZXMKK3NsYXkKK3NsYXlzCitzbGVlaworc2xlZXAKK3NsZWV2ZXMKK3NsZXB0CitzbGV3CitzbG9wZQorc2xvd2x5CitzbWFsbAorc21lbGwKK3NtZWxsZWQKK3Ntb2tlCitzbW9raW5nCitzbW9vdGgKK3NvCitzb2RvbQorc29pbAorc29qb3Vybgorc29qb3VybmVkCitzb2pvdXJuZXIKK3Nvam91cm5lcnMKK3Nvam91cm5pbmcKK3Nvam91cm5pbmdzCitzb2xkCitzb2xlCitzb2xlbW5seQorc29tZQorc29uCitzb24ncworc29uZ3MKK3NvbnMKK3NvbnMnCitzb25zLWluLWxhdworc29vbgorc29yZQorc29yZWx5Citzb3Jyb3cKK3NvcnJvd2Z1bAorc29ycnkKK3NvcnQKK3NvcnRzCitzb3VnaHQKK3NvdWwKK3NvdW5kCitzb3V0aAorc291dGh3YXJkCitzb3cKK3Nvd2VkCitzcGFjZQorc3BhcmUKK3NwYXJlZAorc3BlYWsKK3NwZWFraW5nCitzcGVha3MKK3NwZWNrbGVkCitzcGVlY2gKK3NwZW5kCitzcGVudAorc3BpZXMKK3NwaWxsZWQKK3NwaXJpdAorc3BsZW5kb3IKK3Nwb2lsCitzcG9rZQorc3Bva2VuCitzcG90dGVkCitzcHJlYWQKK3NwcmluZworc3ByaW5naW5nCitzcHJpbmdzCitzcHJvdXRlZAorc3BydW5nCitzdGFmZgorc3RhZ2UKK3N0YWxrCitzdGFuZAorc3RhbmRpbmcKK3N0YW5kcworc3RhcnMKK3N0YXRlCitzdGF0ZXMKK3N0YXRlczoKK3N0YXRpb24KK3N0YXR1dGUKK3N0YXR1dGVzCitzdGF5CitzdGF5ZWQKK3N0ZWFkCitzdGVhZGZhc3QKK3N0ZWFsCitzdGV3YXJkCitzdGlsbAorc3RvbGUKK3N0b2xlbgorc3RvbmUKK3N0b25lcworc3Rvb2QKK3N0b29wZWQKK3N0b3AKK3N0b3BwZWQKK3N0b3JlCitzdG9yZWQKK3N0b3JlaG91c2VzCitzdG9yeQorc3RyYW5nZXIKK3N0cmFuZ2Vycworc3RyYXcKK3N0cmVha3MKK3N0cmVhbQorc3RyZWV0CitzdHJlbmd0aAorc3RyZXRjaGVkCitzdHJpZmUKK3N0cmlraW5nCitzdHJpcGVkCitzdHJpcHBlZAorc3RyaXZlbgorc3Ryb25nCitzdHJvbmdlcgorc3Ryb25nbHkKK3N0cnVjaworc3RydWdnbGVkCitzdWJkdWUKK3N1YmR1ZWQKK3N1YmplY3QKK3N1Ym1pdAorc3VibWl0dGVkCitzdWJzaWRlZAorc3Vic3RhbmNlCitzdWJ0bGUKK3N1Y2Nlc3MKK3N1Y2Nlc3NmdWwKK3N1Y2NvdGgKK3N1Y2gKK3N1Y2sKK3N1Y2tsZQorc3VmZmVyCitzdWZmZXJhYmxlCitzdWZmZXJhbmNlCitzdWl0YWJsZQorc3VtbWVyCitzdW1tb25lZAorc3VuCitzdXBlcmlvcgorc3VwcGxhbnRlZAorc3VwcGxpZWQKK3N1cHBvcnQKK3N1cHBvc2UKK3N1cHJlbWUKK3N1cmVseQorc3VyZXR5CitzdXJyb3VuZGVkCitzdXJ2aXZvcnMKK3N1c3BlbmRlZAorc3VzcGVuZGluZworc3VzdGFpbmVkCitzd2FsbG93ZWQKK3N3YXJtCitzd2FybWluZworc3dhcm1zCitzd2Vhcgorc3dlYXQKK3N3b3JkCitzd29yZHMKK3N3b3JlCitzd29ybgorc3lzdGVtCitzeXN0ZW1zCit0YWJsZQordGFoYXNoCit0YWtlCit0YWtlbgordGFraW5nCit0YWxrZWQKK3RhbGtpbmcKK3RhbWFyCit0YW1hcmlzawordGFtYm91cmluZQordGFycmllZAordGFycnkKK3RhcnNoaXNoCit0YXhlcwordGUnbWFuaXRlcwordGViYWgKK3RlZXRoCit0ZWxsCit0ZWxscwordGVtYQordGVtYW4KK3RlbgordGVuZGVyCit0ZW5kZXJseQordGVudAordGVudGgKK3RlbnRzCit0ZW51cmUKK3RlcmFoCit0ZXJtczoKK3RlcnJpdG9yeQordGVycm9yCit0ZXN0ZWQKK3RoYW4KK3RoYXQKK3RoZQordGhlZQordGhlaXIKK3RoZWlycwordGhlbQordGhlbXNlbHZlcwordGhlbgordGhlbmNlCit0aGVyZQordGhlcmVmb3JlCit0aGVyZWluCit0aGVzZQordGhleQordGhpY2tldAordGhpZ2gKK3RoaW4KK3RoaW5nCit0aGluZ3MKK3RoaW5raW5nCit0aGlyZAordGhpcnRlZW4KK3RoaXJ0ZWVudGgKK3RoaXJ0eQordGhpcnR5LWZpdmUKK3RoaXJ0eS1mb3VyCit0aGlydHktc2V2ZW4KK3RoaXJ0eS10aHJlZQordGhpcnR5LXR3bwordGhpcwordGhpc3RsZXMKK3Rob3JucwordGhvcm91Z2hseQordGhvc2UKK3Rob3UKK3Rob3VnaHQKK3Rob3VnaHRzCit0aG91c2FuZAordGhvdXNhbmRzCit0aHJlYWQKK3RocmVlCit0aHJlc2hpbmcKK3Rocm9uZQordGhyb3VnaAordGhyb3VnaG91dAordGhyb3cKK3RodXMKK3RoeQordGlkYWwKK3RpZGluZ3MKK3RpZXMKK3RpZ3JpcwordGlsbAordGlsbGVyCit0aW1lCit0aW1lcwordGltbmEKK3RpbW5haAordGlyYXMKK3RvCit0b2RheQordG9nYXInbWFoCit0b2dldGhlcgordG9pbAordG9sYQordG9sZAordG9tYgordG9uaWdodAordG9vCit0b29rCit0b3AKK3RvcHMKK3RvcmNoCit0b3JuCit0b3RhbGx5Cit0b3RhbHkKK3RvdWNoCit0b3VjaGVkCit0b3VjaGVzCit0b3dhcmQKK3Rvd2VyCit0b3ducwordHJhZGUKK3RyYWRlcnMKK3RyYWluCit0cmFpbmVkCit0cmFuc2dyZXNzaW9uCit0cmFuc2llbnQKK3RyYW5zcG9ydGluZwordHJhdmFpbGVkCit0cmVhc3VyZQordHJlYXQKK3RyZWF0ZWQKK3RyZWUKK3RyZWVzCit0cmVtYmxlZAordHJlbWJsaW5nCit0cmlhbAordHJpYmVzCit0cmllZAordHJvb3BzCit0cm91YmxlCit0cm91YmxlZAordHJvdWJsZXMKK3Ryb3VnaAordHJvdWdocwordHJ1bHkKK3RydXRoCit0cnV0aHMKK3R1YmFsCit0dWJhbC0KK3R1YmFsLWNhaW4KK3R1cm4KK3R1cm5lZAordHVybnMKK3R1cnRsZWRvdmUKK3R3ZWx2ZQordHdlbnR5Cit0d2VudHktbmluZQordHdlbnR5LXNldmVuCit0d2VudHktc2V2ZW50aAordHdpY2UKK3R3aW5zCit0d28KK3R5cmFubnkKK3R5cmFudAordHlyYW50cwordW5hY2tub3dsZWRnZWQKK3VuYWxpZW5hYmxlCit1bmF3YXJlcwordW5jaXJjdW1jaXNlZAordW5jb21mb3J0YWJsZQordW5jb3ZlcmVkCit1bmRlcgordW5kZXJzdGFuZAordW5kZXJzdG9vZAordW5kaXN0aW5ndWlzaGVkCit1bmZpdAordW5naXJkZWQKK3VuaXRlZAordW5rbm93bgordW5sZWF2ZW5lZAordW5sZXNzCit1bm1vdmVkCit1bnN0YWJsZQordW50aWwKK3VudXN1YWwKK3Vud2FycmFudGFibGUKK3Vud29ydGgKK3VwCit1cGJyYWlkZWQKK3Vwb24KK3VwcGVybW9zdAordXByaWdodAordXIKK3VyZ2VkCit1cwordXM6Cit1c2UKK3VzaW5nCit1c3VycGF0aW9ucwordXR0ZXJseQordXoKK3V6YWwKK3ZhbGxleQordmFsdWFibGUKK3ZlZ2V0YXRpb24KK3ZlaWwKK3ZlbmdlYW5jZQordmVudAordmVudHMKK3ZlcmlmaWVkCit2ZXJ5Cit2ZXN0dXJlCit2aWxsYWdlcwordmluZGljYXRpb24KK3ZpbmUKK3ZpbmV5YXJkCit2aW9sZW5jZQordmlvbGVudGx5Cit2aXBlcgordmlyZ2luCit2aXNpb24KK3Zpc2lvbnMKK3Zpc2l0Cit2aXNpdGVkCit2b2ljZQordm9pZAordm93Cit3YWdlcword2FnaW5nCit3YWdvbnMKK3dhaXQKK3dhaXRlZAord2Fsaword2Fsa2VkCit3YWxraW5nCit3YWxsCit3YW5kZXIKK3dhbmRlcmVkCit3YW5kZXJlcgord2FuZGVyaW5nCit3YW50aW5nCit3YW50b25uZXNzCit3YXIKK3dhcmZhcmUKK3dhcm5lZAord2FzCit3YXNoCit3YXNoZWQKK3dhc2hlcword2F0Y2gKK3dhdGVyCit3YXRlcmVkCit3YXRlcmluZword2F0ZXJzCit3YXkKK3dheXNpZGUKK3dlCit3ZWFrCit3ZWFrbmVzcword2VhbHRoCit3ZWFsdGh5Cit3ZWFuZWQKK3dlYXBvbnMKK3dlYXIKK3dlYXJpZWQKK3dlYXJ5Cit3ZWVrCit3ZWVwCit3ZWVwaW5nCit3ZWlnaGVkCit3ZWlnaGluZword2VpZ2h0Cit3ZWlnaHRzCit3ZWxmYXJlCit3ZWxsCit3ZWxsJ3MKK3dlbGxzCit3ZW50Cit3ZXB0Cit3ZXJlCit3ZXN0Cit3ZXN0d2FyZAord2hhdAord2hhdGV2ZXIKK3doYXRzb2V2ZXIKK3doZWF0Cit3aGVscAord2hlbgord2hlbmNlCit3aGVuZXZlcgord2hlcmUKK3doZXJlYnkKK3doZXJldmVyCit3aGV0aGVyCit3aGljaAord2hpbGUKK3doaXRlCit3aG8KK3dob2V2ZXIKK3dob2xlCit3aG9sZXNvbWUKK3dob20KK3dob21ldmVyCit3aG9zZQord2h5Cit3aWNrZWQKK3dpY2tlZGx5Cit3aWNrZWRuZXNzCit3aWRvdword2lkb3cncword2lkb3dob29kCit3aWZlCit3aWZlJ3MKK3dpbGQKK3dpbGRlcm5lc3MKK3dpbGwKK3dpbGxpbmcKK3dpbHQKK3dpbmQKK3dpbmRvdword2luZG93cword2luZQord2luZ2VkCit3aW50ZXIKK3dpc2UKK3dpdGgKK3dpdGhlcmVkCit3aXRoaGVsZAord2l0aGhvbGQKK3dpdGhpbgord2l0aG91dAord2l0bmVzcword2l2ZXMKK3dvbGYKK3dvbWFuCit3b21hbidzCit3b21iCit3b21icword29tZW4KK3dvb2QKK3dvcmQKK3dvcmRzCit3b3JlCit3b3JrCit3b3Jrcword29ybGQKK3dvcmxkOgord29yc2UKK3dvcnNoaXAKK3dvcnNoaXBlZAord29ydGgKK3dvcnRoeQord291bGQKK3dvdW5kaW5nCit3cmFwcGluZword3JhdGgKK3dyZXN0bGVkCit3cmVzdGxpbmdzCit3cm9uZword3JvdWdodAoreWVhcgoreWVhcm5lZAoreWVhcnMKK3llcworeWV0Cit5aWVsZAoreWllbGRpbmcKK3lva2UKK3lvbmRlcgoreW91Cit5b3VuZworeW91bmdlcgoreW91bmdlc3QKK3lvdXIKK3lvdXJzCit5b3Vyc2VsZgoreW91cnNlbHZlcworeW91dGgKK3phJ2F2YW4KK3phcGgnZW5hdGgtcGFuZSdhaAoremViJ3VsdW4KK3plYm9pJ2ltCit6ZW0nYXJpdGVzCit6ZXBobworemVyYWgKK3ppYidlb24KK3ppbGxhaAoremlscGFoCit6aW1yYW4KK3ppcGgnaW9uCit6bydhcgorem9oYXIKK3p1emltCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9kZW1vL0RlbW9BcHBsZXQuamF2YSBiL3NyYy9jb20vaWJtL2RlbW8vRGVtb0FwcGxldC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmUzZWQyMDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9kZW1vL0RlbW9BcHBsZXQuamF2YQpAQCAtMCwwICsxLDgwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ny0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9kZW1vL0F0dGljL0RlbW9BcHBsZXQuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwMzo0Nzo0MiAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS5kZW1vOworCitpbXBvcnQgamF2YS5hcHBsZXQuQXBwbGV0OworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS5hd3QuKjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC4qOworCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgRGVtb0FwcGxldCBleHRlbmRzIGphdmEuYXBwbGV0LkFwcGxldCB7CisgICAgcHJpdmF0ZSBCdXR0b24gICBkZW1vQnV0dG9uOworICAgIHByaXZhdGUgRnJhbWUgICAgZGVtb0ZyYW1lOworCXByaXZhdGUgc3RhdGljIGludCBkZW1vRnJhbWVDb3VudCA9IDA7CisKKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgRnJhbWUgY3JlYXRlRGVtb0ZyYW1lKERlbW9BcHBsZXQgYXBwbGV0KTsKKyAgICBwcm90ZWN0ZWQgRGltZW5zaW9uIGdldERlZmF1bHRGcmFtZVNpemUoRGVtb0FwcGxldCBhcHBsZXQsIEZyYW1lIGYpIHsKKyAgICAJcmV0dXJuIG5ldyBEaW1lbnNpb24oNzAwLCA1NTApOworICAgIH0KKworICAgIC8vQ3JlYXRlIGEgYnV0dG9uIHRoYXQgd2lsbCBkaXNwbGF5IHRoZSBkZW1vCisgICAgcHVibGljIHZvaWQgaW5pdCgpCisgICAgeworICAgICAgICBzZXRCYWNrZ3JvdW5kKENvbG9yLndoaXRlKTsKKyAgICAgICAgZGVtb0J1dHRvbiA9IG5ldyBCdXR0b24oIkRlbW8iKTsKKyAgICAgICAgZGVtb0J1dHRvbi5zZXRCYWNrZ3JvdW5kKENvbG9yLnllbGxvdyk7CisgICAgICAgIGFkZCggZGVtb0J1dHRvbiApOworCisgICAgICAgIGRlbW9CdXR0b24uYWRkQWN0aW9uTGlzdGVuZXIoIG5ldyBBY3Rpb25MaXN0ZW5lcigpIHsKKyAgICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIGlmIChlLmdldElEKCkgPT0gQWN0aW9uRXZlbnQuQUNUSU9OX1BFUkZPUk1FRCkgeworICAgICAgICAgICAgICAgICAgICBkZW1vQnV0dG9uLnNldExhYmVsKCJsb2FkaW5nIik7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRlbW9GcmFtZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgIGRlbW9GcmFtZSA9IGNyZWF0ZURlbW9GcmFtZShEZW1vQXBwbGV0LnRoaXMpOworICAgICAgICAgICAgICAgICAgICAgICBzaG93RGVtbygpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgZGVtb0J1dHRvbi5zZXRMYWJlbCgiRGVtbyIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzaG93RGVtbygpCisgICAgeworICAgIAlkZW1vRnJhbWUgPSBjcmVhdGVEZW1vRnJhbWUodGhpcyk7CisgICAgICAgIGRlbW9GcmFtZS5sYXlvdXQoKTsKKyAgICAgICAgRGltZW5zaW9uIGQgPSBnZXREZWZhdWx0RnJhbWVTaXplKHRoaXMsIGRlbW9GcmFtZSk7CisgICAgICAgIGRlbW9GcmFtZS5yZXNpemUoZC53aWR0aCwgZC5oZWlnaHQpOworICAgICAgICBkZW1vRnJhbWUuc2hvdygpOworCQlkZW1vRnJhbWVPcGVuZWQoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBkZW1vQ2xvc2VkKCkKKyAgICB7CisgICAgICAgIGRlbW9GcmFtZSA9IG51bGw7CisJCWRlbW9GcmFtZUNsb3NlZCgpOworICAgIH0KKworCXByb3RlY3RlZCBzdGF0aWMgdm9pZCBkZW1vRnJhbWVPcGVuZWQoKSB7CisJCWRlbW9GcmFtZUNvdW50Kys7CisgICAgfQorCXByb3RlY3RlZCBzdGF0aWMgdm9pZCBkZW1vRnJhbWVDbG9zZWQoKSB7CisJCWlmICgtLWRlbW9GcmFtZUNvdW50ID09IDApIHsKKwkJCVN5c3RlbS5leGl0KDApOworCQl9CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9kZW1vL0RlbW9UZXh0Qm94LmphdmEgYi9zcmMvY29tL2libS9kZW1vL0RlbW9UZXh0Qm94LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2QxMTQ5NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2RlbW8vRGVtb1RleHRCb3guamF2YQpAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTctMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vZGVtby9BdHRpYy9EZW1vVGV4dEJveC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDAzOjQ3OjQyICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5kZW1vOworCisKK2ltcG9ydCBqYXZhLnRleHQuQnJlYWtJdGVyYXRvcjsKK2ltcG9ydCBqYXZhLmF3dC4qOworCitwdWJsaWMgY2xhc3MgRGVtb1RleHRCb3ggeworCisgICAgcHVibGljIERlbW9UZXh0Qm94KEdyYXBoaWNzIGcsIFN0cmluZyB0ZXh0LCBpbnQgd2lkdGgpCisgICAgeworICAgICAgICB0aGlzLnRleHQgPSB0ZXh0OworICAgICAgICB0aGlzLmNoYXJzID0gbmV3IGNoYXJbdGV4dC5sZW5ndGgoKV07CisgICAgICAgIHRleHQuZ2V0Q2hhcnMoMCwgdGV4dC5sZW5ndGgoKSwgY2hhcnMsIDApOworCisgICAgICAgIHRoaXMud2lkdGggPSB3aWR0aDsKKyAgICAgICAgdGhpcy5wb3J0ID0gZzsKKyAgICAgICAgdGhpcy5tZXRyaWNzID0gZy5nZXRGb250TWV0cmljcygpOworCisgICAgICAgIGJyZWFrVGV4dCgpOworICAgIH0KKworICAgIHB1YmxpYyAgaW50IGdldEhlaWdodCgpIHsKKyAgICAgICAgcmV0dXJuIChuYnJlYWtzICsgMSkgKiBtZXRyaWNzLmdldEhlaWdodCgpOworICAgIH0KKworICAgIHB1YmxpYyAgdm9pZCBkcmF3KEdyYXBoaWNzIGcsIGludCB4LCBpbnQgeSkKKyAgICB7CisgICAgICAgIGludCBpbmRleCA9IDA7CisKKyAgICAgICAgeSArPSBtZXRyaWNzLmdldEFzY2VudCgpOworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmJyZWFrczsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBnLmRyYXdDaGFycyhjaGFycywgaW5kZXgsIGJyZWFrUG9zW2ldIC0gaW5kZXgsIHgsIHkpOworICAgICAgICAgICAgaW5kZXggPSBicmVha1Bvc1tpXTsKKyAgICAgICAgICAgIHkgKz0gbWV0cmljcy5nZXRIZWlnaHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGcuZHJhd0NoYXJzKGNoYXJzLCBpbmRleCwgY2hhcnMubGVuZ3RoIC0gaW5kZXgsIHgsIHkpOworICAgIH0KKworCisgICAgcHJpdmF0ZSB2b2lkIGJyZWFrVGV4dCgpCisgICAgeworICAgICAgICBpZiAobWV0cmljcy5jaGFyc1dpZHRoKGNoYXJzLCAwLCBjaGFycy5sZW5ndGgpID4gd2lkdGgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEJyZWFrSXRlcmF0b3IgaXRlciA9IEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKCk7CisgICAgICAgICAgICBpdGVyLnNldFRleHQodGV4dCk7CisKKyAgICAgICAgICAgIGludCBzdGFydCA9IGl0ZXIuZmlyc3QoKTsKKyAgICAgICAgICAgIGludCBlbmQgPSBzdGFydDsKKyAgICAgICAgICAgIGludCBwb3M7CisKKyAgICAgICAgICAgIHdoaWxlICggKHBvcyA9IGl0ZXIubmV4dCgpKSAhPSBCcmVha0l0ZXJhdG9yLkRPTkUgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludCB3ID0gbWV0cmljcy5jaGFyc1dpZHRoKGNoYXJzLCBzdGFydCwgcG9zIC0gc3RhcnQpOworICAgICAgICAgICAgICAgIGlmICh3ID4gd2lkdGgpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBXZSd2ZSBnb25lIHBhc3QgdGhlIG1heGltdW0gd2lkdGgsIHNvIGJyZWFrIHRoZSBsaW5lCisgICAgICAgICAgICAgICAgICAgIGlmIChlbmQgPiBzdGFydCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlcmUgd2FzIGF0IGxlYXN0IG9uZSBicmVhayBwb3NpdGlvbiBiZWZvcmUgdGhpcyBwb2ludAorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtQb3NbbmJyZWFrcysrXSA9IGVuZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gZW5kOworICAgICAgICAgICAgICAgICAgICAgICAgZW5kID0gcG9zOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlcmUgd2VyZW4ndCBhbnkgYnJlYWsgcG9zaXRpb25zIGJlZm9yZSB0aGlzIG9uZSwgc28KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxldCB0aGlzIHdvcmQgb3ZlcmZsb3cgdGhlIG1hcmdpbiAoeXVjaykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrUG9zW25icmVha3MrK10gPSBwb3M7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCA9IGVuZCA9IHBvczsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjdXJyZW50IHBvc2l0aW9uIHN0aWxsIGZpdHMgb24gdGhlIGxpbmU7IGl0J3MgdGhlIGJlc3QKKyAgICAgICAgICAgICAgICAgICAgLy8gdGVudGF0aXZlIGJyZWFrIHBvc2l0aW9uIHdlIGhhdmUgc28gZmFyLgorICAgICAgICAgICAgICAgICAgICBlbmQgPSBwb3M7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIFN0cmluZyAgICAgICAgICB0ZXh0OworICAgIHByaXZhdGUgY2hhcltdICAgICAgICAgIGNoYXJzOworICAgIHByaXZhdGUgR3JhcGhpY3MgICAgICAgIHBvcnQ7CisgICAgcHJpdmF0ZSBGb250TWV0cmljcyAgICAgbWV0cmljczsKKyAgICBwcml2YXRlIGludCAgICAgICAgICAgICB3aWR0aDsKKworICAgIHByaXZhdGUgaW50W10gICAgICAgICAgIGJyZWFrUG9zID0gbmV3IGludFsxMF07IC8vIFRPRE86IGdldCByZWFsCisgICAgcHJpdmF0ZSBpbnQgICAgICAgICAgICAgbmJyZWFrcyA9IDA7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vZGVtby9EZW1vVXRpbGl0eS5qYXZhIGIvc3JjL2NvbS9pYm0vZGVtby9EZW1vVXRpbGl0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE1ZjI2NmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9kZW1vL0RlbW9VdGlsaXR5LmphdmEKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk3LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2RlbW8vQXR0aWMvRGVtb1V0aWxpdHkuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wNC8yNiAxODo0MDoxNSAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uZGVtbzsKKworaW1wb3J0IGphdmEuYXd0Lio7CitpbXBvcnQgamF2YS5sYW5nLio7CitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBEZW1vVXRpbGl0eQoreworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgRm9udCB0aXRsZUZvbnQgPSBuZXcgRm9udCgiVGltZXNSb21hbiIsRm9udC5CT0xELDE4KTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEZvbnQgbGFiZWxGb250ID0gbmV3IEZvbnQoIlRpbWVzUm9tYW4iLEZvbnQuQk9MRCwxNCk7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBGb250IGNob2ljZUZvbnQgPSBuZXcgRm9udCgiSGVsdmV0aWNhIixGb250LkJPTEQsMTIpOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgRm9udCBlZGl0Rm9udCA9IG5ldyBGb250KCJIZWx2ZXRpY2EiLEZvbnQuUExBSU4sMTQpOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgRm9udCBjcmVkaXRGb250ID0gbmV3IEZvbnQoIkhlbHZldGljYSIsRm9udC5QTEFJTiwxMCk7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBGb250IG51bWJlckZvbnQgPSBuZXcgRm9udCgic2Fuc3NlcmlmIiwgRm9udC5QTEFJTiwgMTQpOworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBDb2xvciBiZ0NvbG9yID0gQ29sb3IubGlnaHRHcmF5OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgQ29sb3IgY2hvaWNlQ29sb3IgPSBDb2xvci53aGl0ZTsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodDEgPQorICAgICAgICAiKEMpIENvcHlyaWdodCBUYWxpZ2VudCwgSW5jLiAxOTk2LTE5OTguICBDb3B5cmlnaHQgKEMpIElCTSwgSW5jLiAxOTk4IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0MiA9CisgICAgICAgICJQb3J0aW9ucyBjb3B5cmlnaHQgKGMpIDE5OTYgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICAvKioKKyAgICBQcm92aWRlcyBlYXN5IHdheSB0byB1c2UgYmFzaWMgZnVuY3Rpb25zIG9mIEdyaWRCYWdMYXlvdXQsIHdpdGhvdXQKKyAgICB0aGUgY29tcGxpY2F0aW9ucy4gQWZ0ZXIgYnVpbGRpbmcgYSBwYW5lbCwgYW5kIGluc2VydGluZyBhbGwgdGhlCisgICAgKiBzdWJjb21wb25lbnRzLCBjYWxsIHRoaXMgdG8gbGF5IGl0IG91dCBpbiB0aGUgZGVzaXJlZCBudW1iZXIgb2YgY29sdW1ucy4KKyAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBmaXhHcmlkKENvbnRhaW5lciBjb250LCBpbnQgY29sdW1ucykgeworICAgICAgICBHcmlkQmFnTGF5b3V0IGdyaWRiYWcgPSBuZXcgR3JpZEJhZ0xheW91dCgpOworICAgICAgICBjb250LnNldExheW91dChncmlkYmFnKTsKKworICAgICAgICBHcmlkQmFnQ29uc3RyYWludHMgYyA9IG5ldyBHcmlkQmFnQ29uc3RyYWludHMoKTsKKyAgICAgICAgYy5maWxsID0gR3JpZEJhZ0NvbnN0cmFpbnRzLlZFUlRJQ0FMOworICAgICAgICBjLndlaWdodHggPSAxLjA7CisgICAgICAgIGMuaW5zZXRzID0gbmV3IEluc2V0cygyLDIsMiwyKTsKKworICAgICAgICBDb21wb25lbnRbXSBjb21wb25lbnRzID0gY29udC5nZXRDb21wb25lbnRzKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29tcG9uZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaW50IGNvbE51bWJlciA9IGklY29sdW1uczsKKyAgICAgICAgICAgIGMuZ3JpZHdpZHRoID0gMTsgICAgLy8gZGVmYXVsdAorICAgICAgICAgICAgaWYgKChpJWNvbHVtbnMpID09IGNvbHVtbnMgLSAxKQorICAgICAgICAgICAgICAgIGMuZ3JpZHdpZHRoID0gR3JpZEJhZ0NvbnN0cmFpbnRzLlJFTUFJTkRFUjsgICAgLy8gbGFzdCBpbiBncmlkCisgICAgICAgICAgICBpZiAoY29tcG9uZW50c1tpXSBpbnN0YW5jZW9mIExhYmVsKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoICgoKExhYmVsKWNvbXBvbmVudHNbaV0pLmdldEFsaWdubWVudCgpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBMYWJlbC5DRU5URVI6IGMuYW5jaG9yID0gR3JpZEJhZ0NvbnN0cmFpbnRzLkNFTlRFUjsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBMYWJlbC5MRUZUOiBjLmFuY2hvciA9IEdyaWRCYWdDb25zdHJhaW50cy5XRVNUOyBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIExhYmVsLlJJR0hUOiBjLmFuY2hvciA9IEdyaWRCYWdDb25zdHJhaW50cy5FQVNUOyBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBncmlkYmFnLnNldENvbnN0cmFpbnRzKGNvbXBvbmVudHNbaV0sIGMpOworICAgICAgICB9CisKKyAgICB9CisKKyAgICAvKioKKyAgICBQcm92aWRlcyBlYXN5IHdheSB0byBjaGFuZ2UgdGhlIHNwYWNpbmcgYXJvdW5kIGFuIG9iamVjdCBpbiBhIEdyaWRCYWdMYXlvdXQuCisgICAgQ2FsbCBBRlRFUiBmaXhHcmlkQmFnLCBwYXNzaW5nIGluIHRoZSBjb250YWluZXIsIHRoZSBjb21wb25lbnQsIGFuZCB0aGUKKyAgICBuZXcgaW5zZXRzLgorICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHNldEluc2V0cyhDb250YWluZXIgY29udCwgQ29tcG9uZW50IGNvbXAsIEluc2V0cyBpbnNldHMpIHsKKyAgICAgICAgR3JpZEJhZ0xheW91dCBnYmwgPSAoR3JpZEJhZ0xheW91dCljb250LmdldExheW91dCgpOworICAgICAgICBHcmlkQmFnQ29uc3RyYWludHMgZyA9IGdibC5nZXRDb25zdHJhaW50cyhjb21wKTsKKyAgICAgICAgZy5pbnNldHMgPSBpbnNldHM7CisgICAgICAgIGdibC5zZXRDb25zdHJhaW50cyhjb21wLGcpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgUGFuZWwgY3JlYXRlU3BhY2VyKCkgeworICAgICAgICBQYW5lbCBzcGFjZXIgPSBuZXcgUGFuZWwoKTsKKyAgICAgICAgc3BhY2VyLnNldExheW91dChudWxsKTsKKyAgICAgICAgc3BhY2VyLnJlc2l6ZSgxMDAwLCAxKTsKKyAgICAgICAgcmV0dXJuIHNwYWNlcjsKKyAgICB9CisKKyAgICAvLyB0byBhdm9pZCBnb29meSB1cGRhdGVzIGFuZCBtaXNwbGFjZWQgY3Vyc29ycworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXRUZXh0KFRleHRDb21wb25lbnQgYXJlYSwgU3RyaW5nIG5ld1RleHQpIHsKKyAgICAgICAgU3RyaW5nIGZvbyA9IGFyZWEuZ2V0VGV4dCgpOworICAgICAgICBpZiAoZm9vLmVxdWFscyhuZXdUZXh0KSkgcmV0dXJuOworICAgICAgICBhcmVhLnNldFRleHQobmV3VGV4dCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENvbXBhcmVzIHR3byBsb2NhbHMuIFJldHVybiB2YWx1ZSBpcyBuZWdhdGl2ZQorICAgICAqIGlmIHRoZXkncmUgZGlmZmVyZW50LCBhbmQgbW9yZSBwb3NpdGl2ZSB0aGUgbW9yZQorICAgICAqIGZpZWxkcyB0aGF0IG1hdGNoLgorICAgICAqLworICAgICAKKyAgICBwdWJsaWMgc3RhdGljIGludCBjb21wYXJlTG9jYWxlcyhMb2NhbGUgbDEsIExvY2FsZSBsMikKKyAgICB7CisgICAgICAgIGludCByZXN1bHQgPSAtMTsKKyAgICAgICAgCisgICAgICAgIGlmIChsMS5nZXRMYW5ndWFnZSgpLmVxdWFscyhsMi5nZXRMYW5ndWFnZSgpKSkgeworICAgICAgICAgICAgcmVzdWx0ICs9IDE7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChsMS5nZXRDb3VudHJ5KCkuZXF1YWxzKGwyLmdldENvdW50cnkoKSkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gMTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAobDEuZ2V0VmFyaWFudCgpLmVxdWFscyhsMi5nZXRWYXJpYW50KCkpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2V0IHRoZSBHNyBsb2NhbGUgbGlzdCBmb3IgZGVtb3MuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBMb2NhbGVbXSBnZXRHN0xvY2FsZXMoKSB7CisgICAgICAgIHJldHVybiBsb2NhbGVMaXN0OworICAgIH0KKyAgICBwcml2YXRlIHN0YXRpYyBMb2NhbGVbXSBsb2NhbGVMaXN0ID0geworICAgICAgICBuZXcgTG9jYWxlKCJEQSIsICJESyIsICIiKSwKKyAgICAgICAgbmV3IExvY2FsZSgiRU4iLCAiVVMiLCAiIiksCisgICAgICAgIG5ldyBMb2NhbGUoIkVOIiwgIkdCIiwgIiIpLAorICAgICAgICBuZXcgTG9jYWxlKCJFTiIsICJDQSIsICIiKSwKKyAgICAgICAgbmV3IExvY2FsZSgiRlIiLCAiRlIiLCAiIiksCisgICAgICAgIG5ldyBMb2NhbGUoIkZSIiwgIkNBIiwgIiIpLAorICAgICAgICBuZXcgTG9jYWxlKCJERSIsICJERSIsICIiKSwKKyAgICAgICAgbmV3IExvY2FsZSgiSVQiLCAiSVQiLCAiIiksCisgICAgLy9uZXcgTG9jYWxlKCJKQSIsICJKUCIsICIiKSwKKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vZGVtby9jYWxlbmRhci9DYWxlbmRhckFwcC5qYXZhIGIvc3JjL2NvbS9pYm0vZGVtby9jYWxlbmRhci9DYWxlbmRhckFwcC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjRmZjBkNDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9kZW1vL2NhbGVuZGFyL0NhbGVuZGFyQXBwLmphdmEKQEAgLTAsMCArMSw0NSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTctMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vZGVtby9jYWxlbmRhci9BdHRpYy9DYWxlbmRhckFwcC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA1LzEyIDIzOjIxOjIzICQgCisgKiAkUmV2aXNpb246IDEuNSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLmRlbW8uY2FsZW5kYXI7CisKK2ltcG9ydCBjb20uaWJtLmRlbW8uKjsKKworaW1wb3J0IGphdmEuYXBwbGV0LkFwcGxldDsKK2ltcG9ydCBqYXZhLmF3dC4qOworaW1wb3J0IGphdmEuYXd0LmV2ZW50Lio7CitpbXBvcnQgamF2YS5uZXQuKjsKK2ltcG9ydCBqYXZhLmlvLio7CisKK2ltcG9ydCBjb20uaWJtLnV0aWwuKjsKK2ltcG9ydCBjb20uaWJtLnRleHQuKjsKKworLyoqCisgKiBDYWxlbmRhckFwcCBkZW1vbnN0cmF0ZXMgaG93IENhbGVuZGFyIHdvcmtzLgorICovCitwdWJsaWMgY2xhc3MgQ2FsZW5kYXJBcHAgZXh0ZW5kcyBEZW1vQXBwbGV0Cit7CisgICAgLyoqCisgICAgICogVGhlIG1haW4gZnVuY3Rpb24gd2hpY2ggZGVmaW5lcyB0aGUgYmVoYXZpb3Igb2YgdGhlIENhbGVuZGFyRGVtbworICAgICAqIGFwcGxldCB3aGVuIGFuIGFwcGxldCBpcyBzdGFydGVkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmd2W10pIHsKKworICAgICAgICBuZXcgQ2FsZW5kYXJBcHAoKS5zaG93RGVtbygpOworICAgIH0KKworICAgIC8qIFRoaXMgY3JlYXRlcyBhIENhbGVuZGFyRnJhbWUgZm9yIHRoZSBkZW1vIGFwcGxldC4gKi8KKyAgICBwdWJsaWMgRnJhbWUgY3JlYXRlRGVtb0ZyYW1lKERlbW9BcHBsZXQgYXBwbGV0KSB7CisgICAgICAgIHJldHVybiBuZXcgQ2FsZW5kYXJGcmFtZShhcHBsZXQpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2RlbW8vY2FsZW5kYXIvQ2FsZW5kYXJDYWxjLmphdmEgYi9zcmMvY29tL2libS9kZW1vL2NhbGVuZGFyL0NhbGVuZGFyQ2FsYy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmIzYWIyNjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9kZW1vL2NhbGVuZGFyL0NhbGVuZGFyQ2FsYy5qYXZhCkBAIC0wLDAgKzEsNTcyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ny0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9kZW1vL2NhbGVuZGFyL0F0dGljL0NhbGVuZGFyQ2FsYy5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzEwLzE5IDAwOjI3OjE2ICQgCisgKiAkUmV2aXNpb246IDEuOCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLmRlbW8uY2FsZW5kYXI7CisKK2ltcG9ydCBjb20uaWJtLmRlbW8uKjsKKworaW1wb3J0IGphdmEuYXBwbGV0LkFwcGxldDsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLmF3dC4qOworaW1wb3J0IGphdmEuYXd0LmV2ZW50Lio7CisKKy8vaW1wb3J0IGphdmEudGV4dC5EYXRlRm9ybWF0OworaW1wb3J0IGNvbS5pYm0udGV4dC5EYXRlRm9ybWF0OworaW1wb3J0IGphdmEudGV4dC5QYXJzZVBvc2l0aW9uOworCisvL2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS51dGlsLkNhbGVuZGFyOworLy9pbXBvcnQgamF2YS51dGlsLkdyZWdvcmlhbkNhbGVuZGFyOworaW1wb3J0IGNvbS5pYm0udXRpbC5HcmVnb3JpYW5DYWxlbmRhcjsKKy8vaW1wb3J0IGphdmEudXRpbC5UaW1lWm9uZTsKK2ltcG9ydCBjb20uaWJtLnV0aWwuVGltZVpvbmU7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKworaW1wb3J0IGNvbS5pYm0udXRpbC4qOworaW1wb3J0IGNvbS5pYm0udGV4dC4qOworCitpbXBvcnQgamF2YXguc3dpbmcuKjsKKworLyoqCisgKiBDYWxlbmRhckNhbGMgZGVtb25zdHJhdGVzIGhvdyBEYXRlL1RpbWUgZm9ybWF0dGVyIHdvcmtzLgorICovCitwdWJsaWMgY2xhc3MgQ2FsZW5kYXJDYWxjIGV4dGVuZHMgRGVtb0FwcGxldAoreworICAgIC8qKgorICAgICAqIFRoZSBtYWluIGZ1bmN0aW9uIHdoaWNoIGRlZmluZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBNdWx0aUNhbGVuZGFyRGVtbworICAgICAqIGFwcGxldCB3aGVuIGFuIGFwcGxldCBpcyBzdGFydGVkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmd2W10pIHsKKyAgICAgICAgbmV3IENhbGVuZGFyQ2FsYygpLnNob3dEZW1vKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBjcmVhdGVzIGEgQ2FsZW5kYXJDYWxjRnJhbWUgZm9yIHRoZSBkZW1vIGFwcGxldC4KKyAgICAgKi8KKyAgICBwdWJsaWMgRnJhbWUgY3JlYXRlRGVtb0ZyYW1lKERlbW9BcHBsZXQgYXBwbGV0KSB7CisgICAgICAgIHJldHVybiBuZXcgQ2FsZW5kYXJDYWxjRnJhbWUoYXBwbGV0KTsKKyAgICB9Cit9CisKKy8qKgorICogQSBGcmFtZSBpcyBhIHRvcC1sZXZlbCB3aW5kb3cgd2l0aCBhIHRpdGxlLiBUaGUgZGVmYXVsdCBsYXlvdXQgZm9yIGEgZnJhbWUKKyAqIGlzIEJvcmRlckxheW91dC4gIFRoZSBDYWxlbmRhckNhbGNGcmFtZSBjbGFzcyBkZWZpbmVzIHRoZSB3aW5kb3cgbGF5b3V0IG9mCisgKiBNdWx0aUNhbGVuZGFyRGVtby4KKyAqLworY2xhc3MgQ2FsZW5kYXJDYWxjRnJhbWUgZXh0ZW5kcyBGcmFtZQoreworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyAgICAgY3JlZGl0U3RyaW5nID0gIiI7CisKKyAgICBzdGF0aWMgZmluYWwgTG9jYWxlW10gbG9jYWxlcyA9IERlbW9VdGlsaXR5LmdldEc3TG9jYWxlcygpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiAgICBERUJVRyA9IGZhbHNlOworCisgICAgcHJpdmF0ZSBEZW1vQXBwbGV0ICAgICAgICAgICAgICBhcHBsZXQ7CisgICAgcHJpdmF0ZSBsb25nICAgICAgICAgICAgICAgICAgICB0aW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBSb2xsQWRkRmllbGQga1JvbGxBZGRGaWVsZHNbXSA9IHsKKyAgICAgICAgbmV3IFJvbGxBZGRGaWVsZChDYWxlbmRhci5ZRUFSLCAgICAgICAgICAgICAgICAgIlllYXIiICksCisgICAgICAgIG5ldyBSb2xsQWRkRmllbGQoQ2FsZW5kYXIuTU9OVEgsICAgICAgICAgICAgICAgICJNb250aCIgKSwKKyAgICAgICAgbmV3IFJvbGxBZGRGaWVsZChDYWxlbmRhci5XRUVLX09GX01PTlRILCAgICAgICAgIldlZWsgb2YgTW9udGgiICksCisgICAgICAgIG5ldyBSb2xsQWRkRmllbGQoQ2FsZW5kYXIuV0VFS19PRl9ZRUFSLCAgICAgICAgICJXZWVrIG9mIFllYXIiICksCisgICAgICAgIG5ldyBSb2xsQWRkRmllbGQoQ2FsZW5kYXIuREFZX09GX01PTlRILCAgICAgICAgICJEYXkgb2YgTW9udGgiICksCisgICAgICAgIG5ldyBSb2xsQWRkRmllbGQoQ2FsZW5kYXIuREFZX09GX1dFRUssICAgICAgICAgICJEYXkgb2YgV2VlayIgKSwKKyAgICAgICAgbmV3IFJvbGxBZGRGaWVsZChDYWxlbmRhci5EQVlfT0ZfV0VFS19JTl9NT05USCwgIkRheSBvZiBXZWVrIGluIE1vbnRoIiApLAorICAgICAgICBuZXcgUm9sbEFkZEZpZWxkKENhbGVuZGFyLkRBWV9PRl9ZRUFSLCAgICAgICAgICAiRGF5IG9mIFllYXIiICksCisgICAgICAgIG5ldyBSb2xsQWRkRmllbGQoQ2FsZW5kYXIuQU1fUE0sICAgICAgICAgICAgICAgICJBTS9QTSIgKSwKKyAgICAgICAgbmV3IFJvbGxBZGRGaWVsZChDYWxlbmRhci5IT1VSX09GX0RBWSwgICAgICAgICAgIkhvdXIgb2YgZGF5IiApLAorICAgICAgICBuZXcgUm9sbEFkZEZpZWxkKENhbGVuZGFyLkhPVVIsICAgICAgICAgICAgICAgICAiSG91ciIgKSwKKyAgICAgICAgbmV3IFJvbGxBZGRGaWVsZChDYWxlbmRhci5NSU5VVEUsICAgICAgICAgICAgICAgIk1pbnV0ZSIgKSwKKyAgICAgICAgbmV3IFJvbGxBZGRGaWVsZChDYWxlbmRhci5TRUNPTkQsICAgICAgICAgICAgICAgIlNlY29uZCIgKSwKKyAgICB9OworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIG5ldyBDYWxlbmRhckNhbGNGcmFtZSB0aGF0IGlzIGluaXRpYWxseSBpbnZpc2libGUuCisgICAgICovCisgICAgcHVibGljIENhbGVuZGFyQ2FsY0ZyYW1lKERlbW9BcHBsZXQgYXBwbGV0KQorICAgIHsKKyAgICAgICAgc3VwZXIoIk11bHRpcGxlIENhbGVuZGFyIERlbW8iKTsKKyAgICAgICAgdGhpcy5hcHBsZXQgPSBhcHBsZXQ7CisgICAgICAgIGluaXQoKTsKKyAgICAgICAgc3RhcnQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbml0aWFsaXplcyB0aGUgYXBwbGV0LiBZb3UgbmV2ZXIgbmVlZCB0byBjYWxsIHRoaXMgZGlyZWN0bHksIGl0CisgICAgICogaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIHN5c3RlbSBvbmNlIHRoZSBhcHBsZXQgaXMgY3JlYXRlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBpbml0KCkKKyAgICB7CisgICAgICAgIGJ1aWxkR1VJKCk7CisKKyAgICAgICAgcGF0dGVyblRleHQuc2V0VGV4dCggY2FsZW5kYXJzWzBdLnRvUGF0dGVybigpICk7CisKKyAgICAgICAgLy8gRm9yY2UgYW4gdXBkYXRlIG9mIHRoZSBkaXNwbGF5CisgICAgICAgIGNpdHlDaGFuZ2VkKCk7CisgICAgICAgIG1pbGxpc0Zvcm1hdCgpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gcGFja2FnZSBwcml2YXRlCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICB2b2lkIGFkZFdpdGhGb250KENvbnRhaW5lciBjb250YWluZXIsIENvbXBvbmVudCBmb28sIEZvbnQgZm9udCkgeworICAgICAgICBpZiAoZm9udCAhPSBudWxsKQorICAgICAgICAgICAgZm9vLnNldEZvbnQoZm9udCk7CisgICAgICAgIGNvbnRhaW5lci5hZGQoZm9vKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDYWxsZWQgdG8gc3RhcnQgdGhlIGFwcGxldC4gWW91IG5ldmVyIG5lZWQgdG8gY2FsbCB0aGlzIG1ldGhvZAorICAgICAqIGRpcmVjdGx5LCBpdCBpcyBjYWxsZWQgd2hlbiB0aGUgYXBwbGV0J3MgZG9jdW1lbnQgaXMgdmlzaXRlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzdGFydCgpCisgICAgeworICAgICAgICAvLyBkbyBub3RoaW5nCisgICAgfQorCisgICAgVGV4dEZpZWxkIHBhdHRlcm5UZXh0OworCisgICAgQ2hvaWNlIGRhdGVNZW51OworICAgIENob2ljZSBsb2NhbGVNZW51OworCisgICAgQnV0dG9uIHVwOworICAgIEJ1dHRvbiBkb3duOworCisgICAgQ2hlY2tib3ggZ2V0Um9sbDsKKyAgICBDaGVja2JveCBnZXRBZGQ7CisKKyAgICBwdWJsaWMgdm9pZCBidWlsZEdVSSgpCisgICAgeworICAgICAgICBzZXRCYWNrZ3JvdW5kKERlbW9VdGlsaXR5LmJnQ29sb3IpOworICAgICAgICBzZXRMYXlvdXQobmV3IEZsb3dMYXlvdXQoKSk7IC8vIHNob3VsZG4ndCBiZSBuZWNlc3NhcnksIGJ1dCBpdCBpcy4KKworLy8gVElUTEUKKyAgICAgICAgTGFiZWwgbGFiZWwxPW5ldyBMYWJlbCgiQ2FsZW5kYXIgQ29udmVydGVyIiwgTGFiZWwuQ0VOVEVSKTsKKyAgICAgICAgbGFiZWwxLnNldEZvbnQoRGVtb1V0aWxpdHkudGl0bGVGb250KTsKKyAgICAgICAgYWRkKGxhYmVsMSk7CisgICAgICAgIGFkZChEZW1vVXRpbGl0eS5jcmVhdGVTcGFjZXIoKSk7CisKKy8vIElPIFBhbmVsCisgICAgICAgIFBhbmVsIHRvcFBhbmVsID0gbmV3IFBhbmVsKCk7CisgICAgICAgIHRvcFBhbmVsLnNldExheW91dChuZXcgRmxvd0xheW91dCgpKTsKKworICAgICAgICBDaGVja2JveEdyb3VwIGdyb3VwMT0gbmV3IENoZWNrYm94R3JvdXAoKTsKKworICAgICAgICAvLyBTZXQgdXAgdGhlIGNvbnRyb2xzIGZvciBlYWNoIGNhbGVuZGFyIHdlJ3JlIGRlbW9uc3RyYXRpbmcKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjYWxlbmRhcnMubGVuZ3RoOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIExhYmVsIGxhYmVsID0gbmV3IExhYmVsKGNhbGVuZGFyc1tpXS5uYW1lLCBMYWJlbC5SSUdIVCk7CisgICAgICAgICAgICBsYWJlbC5zZXRGb250KERlbW9VdGlsaXR5LmxhYmVsRm9udCk7CisgICAgICAgICAgICB0b3BQYW5lbC5hZGQobGFiZWwpOworCisgICAgICAgICAgICB0b3BQYW5lbC5hZGQoY2FsZW5kYXJzW2ldLnRleHQpOworCisgICAgICAgICAgICBmaW5hbCBpbnQgaiA9IGk7CisgICAgICAgICAgICBjYWxlbmRhcnNbaV0udGV4dC5hZGRBY3Rpb25MaXN0ZW5lciggbmV3IEFjdGlvbkxpc3RlbmVyKCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisgICAgICAgICAgICAgICAgICAgIHRleHRDaGFuZ2VkKGopOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gKTsKKworICAgICAgICAgICAgY2FsZW5kYXJzW2ldLnJvbGxBZGQuc2V0Q2hlY2tib3hHcm91cChncm91cDEpOworICAgICAgICAgICAgdG9wUGFuZWwuYWRkKGNhbGVuZGFyc1tpXS5yb2xsQWRkKTsKKyAgICAgICAgfQorICAgICAgICBjYWxlbmRhcnNbMF0ucm9sbEFkZC5zZXRTdGF0ZSh0cnVlKTsgICAgLy8gTWFrZSB0aGUgZmlyc3Qgb25lIHNlbGVjdGVkCisKKyAgICAgICAgTGFiZWwgbGFiZWw0PW5ldyBMYWJlbCgiUGF0dGVybiIsIExhYmVsLlJJR0hUKTsKKyAgICAgICAgbGFiZWw0LnNldEZvbnQoRGVtb1V0aWxpdHkubGFiZWxGb250KTsKKyAgICAgICAgdG9wUGFuZWwuYWRkKGxhYmVsNCk7CisKKyAgICAgICAgcGF0dGVyblRleHQ9bmV3IFRleHRGaWVsZChGSUVMRF9DT0xVTU5TKTsKKyAgICAgICAgcGF0dGVyblRleHQuc2V0Rm9udChEZW1vVXRpbGl0eS5lZGl0Rm9udCk7CisgICAgICAgIHRvcFBhbmVsLmFkZChwYXR0ZXJuVGV4dCk7CisgICAgICAgIHRvcFBhbmVsLmFkZChuZXcgTGFiZWwoIiIpKTsKKworICAgICAgICBEZW1vVXRpbGl0eS5maXhHcmlkKHRvcFBhbmVsLDMpOworICAgICAgICBhZGQodG9wUGFuZWwpOworICAgICAgICBhZGQoRGVtb1V0aWxpdHkuY3JlYXRlU3BhY2VyKCkpOworCisvLyBST0xMIC8gQURECisgICAgICAgIFBhbmVsIHJvbGxBZGRQYW5lbD1uZXcgUGFuZWwoKTsKKyAgICAgICAgeworICAgICAgICAgICAgcm9sbEFkZFBhbmVsLnNldExheW91dChuZXcgRmxvd0xheW91dCgpKTsKKworICAgICAgICAgICAgUGFuZWwgcm9sbEFkZEJveGVzID0gbmV3IFBhbmVsKCk7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcm9sbEFkZEJveGVzLnNldExheW91dChuZXcgR3JpZExheW91dCgyLDEpKTsKKyAgICAgICAgICAgICAgICBDaGVja2JveEdyb3VwIGdyb3VwMj0gbmV3IENoZWNrYm94R3JvdXAoKTsKKyAgICAgICAgICAgICAgICBnZXRSb2xsID0gbmV3IENoZWNrYm94KCJSb2xsIixncm91cDIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBnZXRBZGQgPSBuZXcgQ2hlY2tib3goIkFkZCIsZ3JvdXAyLCB0cnVlKTsKKworICAgICAgICAgICAgICAgIHJvbGxBZGRCb3hlcy5hZGQoZ2V0Um9sbCk7CisgICAgICAgICAgICAgICAgcm9sbEFkZEJveGVzLmFkZChnZXRBZGQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBMYWJlbCBkYXRlTGFiZWw9bmV3IExhYmVsKCJEYXRlIEZpZWxkcyIpOworICAgICAgICAgICAgZGF0ZUxhYmVsLnNldEZvbnQoRGVtb1V0aWxpdHkubGFiZWxGb250KTsKKworICAgICAgICAgICAgZGF0ZU1lbnU9IG5ldyBDaG9pY2UoKTsKKyAgICAgICAgICAgIGRhdGVNZW51LnNldEJhY2tncm91bmQoRGVtb1V0aWxpdHkuY2hvaWNlQ29sb3IpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBrUm9sbEFkZEZpZWxkcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGRhdGVNZW51LmFkZEl0ZW0oa1JvbGxBZGRGaWVsZHNbaV0ubmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKGtSb2xsQWRkRmllbGRzW2ldLmZpZWxkID09IENhbGVuZGFyLk1PTlRIKSB7CisgICAgICAgICAgICAgICAgICAgIGRhdGVNZW51LnNlbGVjdChpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFBhbmVsIHVwRG93biA9IG5ldyBQYW5lbCgpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHVwRG93bi5zZXRMYXlvdXQobmV3IEdyaWRMYXlvdXQoMiwxKSk7CisKKyAgICAgICAgICAgICAgICAvLyAqKiogSWYgdGhlIGltYWdlcyBhcmUgbm90IGZvdW5kLCB3ZSB1c2UgdGhlIGxhYmVsLgorICAgICAgICAgICAgICAgIHVwID0gbmV3IEJ1dHRvbigiXiIpOworICAgICAgICAgICAgICAgIGRvd24gPSBuZXcgQnV0dG9uKCJ2Iik7CisgICAgICAgICAgICAgICAgdXAuc2V0QmFja2dyb3VuZChEZW1vVXRpbGl0eS5iZ0NvbG9yKTsKKyAgICAgICAgICAgICAgICBkb3duLnNldEJhY2tncm91bmQoRGVtb1V0aWxpdHkuYmdDb2xvcik7CisgICAgICAgICAgICAgICAgdXBEb3duLmFkZCh1cCk7CisgICAgICAgICAgICAgICAgdXBEb3duLmFkZChkb3duKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcm9sbEFkZFBhbmVsLmFkZChkYXRlTGFiZWwpOworICAgICAgICAgICAgcm9sbEFkZFBhbmVsLmFkZChkYXRlTWVudSk7CisgICAgICAgICAgICByb2xsQWRkUGFuZWwuYWRkKHJvbGxBZGRCb3hlcyk7CisgICAgICAgICAgICByb2xsQWRkUGFuZWwuYWRkKHVwRG93bik7CisKKyAgICAgICAgfQorICAgICAgICBQYW5lbCBsb2NhbGVQYW5lbCA9IG5ldyBQYW5lbCgpOworICAgICAgICB7CisgICAgICAgICAgICAvLyBNYWtlIHRoZSBsb2NhbGUgcG9wdXAgbWVudXMKKyAgICAgICAgICAgIGxvY2FsZU1lbnU9IG5ldyBDaG9pY2UoKTsKKyAgICAgICAgICAgIExvY2FsZSBkZWZhdWx0TG9jYWxlID0gTG9jYWxlLmdldERlZmF1bHQoKTsKKyAgICAgICAgICAgIGludCBiZXN0TWF0Y2ggPSAtMSwgdGhpc01hdGNoID0gLTE7CisgICAgICAgICAgICBpbnQgc2VsZWN0TWUgPSAwOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxvY2FsZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA+IDAgJiYgbG9jYWxlc1tpXS5nZXRMYW5ndWFnZSgpLmVxdWFscyhsb2NhbGVzW2ktMV0uZ2V0TGFuZ3VhZ2UoKSkgfHwKKyAgICAgICAgICAgICAgICAgICAgaSA8IGxvY2FsZXMubGVuZ3RoIC0gMSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlc1tpXS5nZXRMYW5ndWFnZSgpLmVxdWFscyhsb2NhbGVzW2krMV0uZ2V0TGFuZ3VhZ2UoKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBsb2NhbGVNZW51LmFkZEl0ZW0oIGxvY2FsZXNbaV0uZ2V0RGlzcGxheU5hbWUoKSApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGxvY2FsZU1lbnUuYWRkSXRlbSggbG9jYWxlc1tpXS5nZXREaXNwbGF5TGFuZ3VhZ2UoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXNNYXRjaCA9IERlbW9VdGlsaXR5LmNvbXBhcmVMb2NhbGVzKGxvY2FsZXNbaV0sIGRlZmF1bHRMb2NhbGUpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICh0aGlzTWF0Y2ggPj0gYmVzdE1hdGNoKSB7CisgICAgICAgICAgICAgICAgICAgIGJlc3RNYXRjaCA9IHRoaXNNYXRjaDsKKyAgICAgICAgICAgICAgICAgICAgc2VsZWN0TWUgPSBpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbG9jYWxlTWVudS5zZXRCYWNrZ3JvdW5kKERlbW9VdGlsaXR5LmNob2ljZUNvbG9yKTsKKyAgICAgICAgICAgIGxvY2FsZU1lbnUuc2VsZWN0KHNlbGVjdE1lKTsKKworICAgICAgICAgICAgTGFiZWwgbG9jYWxlTGFiZWwgPW5ldyBMYWJlbCgiRGlzcGxheSBMb2NhbGUiKTsKKyAgICAgICAgICAgIGxvY2FsZUxhYmVsLnNldEZvbnQoRGVtb1V0aWxpdHkubGFiZWxGb250KTsKKworICAgICAgICAgICAgbG9jYWxlUGFuZWwuYWRkKGxvY2FsZUxhYmVsKTsKKyAgICAgICAgICAgIGxvY2FsZVBhbmVsLmFkZChsb2NhbGVNZW51KTsKKyAgICAgICAgICAgIERlbW9VdGlsaXR5LmZpeEdyaWQobG9jYWxlUGFuZWwsMik7CisKKyAgICAgICAgICAgIGxvY2FsZU1lbnUuYWRkSXRlbUxpc3RlbmVyKCBuZXcgSXRlbUxpc3RlbmVyKCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIGl0ZW1TdGF0ZUNoYW5nZWQoSXRlbUV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICAgICAgTG9jYWxlIGxvYyA9IGxvY2FsZXNbbG9jYWxlTWVudS5nZXRTZWxlY3RlZEluZGV4KCldOworICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNoYW5nZSBsb2NhbGUgdG8gIiArIGxvYy5nZXREaXNwbGF5TmFtZSgpKTsKKworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNhbGVuZGFycy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJzW2ldLnNldExvY2FsZShsb2MpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1pbGxpc0Zvcm1hdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gKTsKKyAgICAgICAgfQorICAgICAgICBhZGQocm9sbEFkZFBhbmVsKTsKKyAgICAgICAgYWRkKERlbW9VdGlsaXR5LmNyZWF0ZVNwYWNlcigpKTsKKyAgICAgICAgYWRkKGxvY2FsZVBhbmVsKTsKKyAgICAgICAgYWRkKERlbW9VdGlsaXR5LmNyZWF0ZVNwYWNlcigpKTsKKworLy8gQ09QWVJJR0hUCisgICAgICAgIFBhbmVsIGNvcHlyaWdodFBhbmVsID0gbmV3IFBhbmVsKCk7CisgICAgICAgIGFkZFdpdGhGb250IChjb3B5cmlnaHRQYW5lbCxuZXcgTGFiZWwoRGVtb1V0aWxpdHkuY29weXJpZ2h0MSwgTGFiZWwuTEVGVCksCisgICAgICAgICAgICBEZW1vVXRpbGl0eS5jcmVkaXRGb250KTsKKyAgICAgICAgRGVtb1V0aWxpdHkuZml4R3JpZChjb3B5cmlnaHRQYW5lbCwxKTsKKyAgICAgICAgYWRkKGNvcHlyaWdodFBhbmVsKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDYWxsZWQgaWYgYW4gYWN0aW9uIG9jY3VycyBpbiB0aGUgQ2FsZW5kYXJDYWxjRnJhbWUgb2JqZWN0LgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGFjdGlvbihFdmVudCBldnQsIE9iamVjdCBvYmopCisgICAgeworICAgICAgICAvLyAqKiogQnV0dG9uIGV2ZW50cyBhcmUgaGFuZGxlZCBoZXJlLgorICAgICAgICBpZiAoZXZ0LnRhcmdldCBpbnN0YW5jZW9mIEJ1dHRvbikgeworICAgICAgICAgICAgaWYgKGV2dC50YXJnZXQgPT0gdXApIHsKKyAgICAgICAgICAgICAgICAgICAgZGF0ZUZpZWxkQ2hhbmdlZChmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBpZiAoZXZ0LnRhcmdldCA9PSBkb3duKSB7CisgICAgICAgICAgICAgICAgICAgIGRhdGVGaWVsZENoYW5nZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBzdXBlci5hY3Rpb24oZXZ0LCBvYmopOworICAgIH0KKworICAgIC8qKgorICAgICAqIEhhbmRsZXMgdGhlIGV2ZW50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IGlzIGhhbmRsZWQgYW5kIHNob3VsZCBub3QKKyAgICAgKiBiZSBwYXNzZWQgdG8gdGhlIHBhcmVudCBvZiB0aGlzIGNvbXBvbmVudC4gVGhlIGRlZmF1bHQgZXZlbnQgaGFuZGxlcgorICAgICAqIGNhbGxzIHNvbWUgaGVscGVyIG1ldGhvZHMgdG8gbWFrZSBsaWZlIGVhc2llciBvbiB0aGUgcHJvZ3JhbW1lci4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBoYW5kbGVFdmVudChFdmVudCBldnQpCisgICAgeworICAgICAgICBpZiAoZXZ0LmlkID09IEV2ZW50LktFWV9SRUxFQVNFICYmIGV2dC50YXJnZXQgPT0gcGF0dGVyblRleHQpIHsKKyAgICAgICAgICAgIHBhdHRlcm5UZXh0Q2hhbmdlZCgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZXZ0LmlkID09IEV2ZW50LktFWV9SRUxFQVNFKSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNhbGVuZGFycy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChldnQudGFyZ2V0ID09IGNhbGVuZGFyc1tpXS50ZXh0KSB7CisgICAgICAgICAgICAgICAgICAgIHRleHRDaGFuZ2VkKGkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZXZ0LmlkID09IEV2ZW50LkFDVElPTl9FVkVOVCAmJiBldnQudGFyZ2V0ID09IHVwKSB7CisgICAgICAgICAgICBkYXRlRmllbGRDaGFuZ2VkKHRydWUpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZXZ0LmlkID09IEV2ZW50LkFDVElPTl9FVkVOVCAmJiBldnQudGFyZ2V0ID09IGRvd24pIHsKKyAgICAgICAgICAgIGRhdGVGaWVsZENoYW5nZWQoZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZXZ0LmlkID09IEV2ZW50LldJTkRPV19ERVNUUk9ZICYmIGV2dC50YXJnZXQgPT0gdGhpcykgeworICAgICAgICAgICAgdGhpcy5oaWRlKCk7CisgICAgICAgICAgICB0aGlzLmRpc3Bvc2UoKTsKKworICAgICAgICAgICAgaWYgKGFwcGxldCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICBhcHBsZXQuZGVtb0Nsb3NlZCgpOworICAgICAgICAgICAgfSBlbHNlIFN5c3RlbS5leGl0KDApOworCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBzdXBlci5oYW5kbGVFdmVudChldnQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdXNlcnMgY2hhbmdlIHRoZSBwYXR0ZXJuIHRleHQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Rm9ybWF0RnJvbVBhdHRlcm4oKSB7CisgICAgICAgIFN0cmluZyB0aW1lUGF0dGVybiA9IHBhdHRlcm5UZXh0LmdldFRleHQoKTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNhbGVuZGFycy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgY2FsZW5kYXJzW2ldLmFwcGx5UGF0dGVybih0aW1lUGF0dGVybik7CisgICAgICAgIH0KKworICAgICAgICBtaWxsaXNGb3JtYXQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGVuIGl0IGlzIG5lY2Vzc2FyeSB0byBwYXJzZSB0aGUgdGltZQorICAgICAqIHN0cmluZyBpbiBvbmUgb2YgdGhlIGZvcm1hdHRlZCBkYXRlIGZpZWxkcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIHRleHRDaGFuZ2VkKGludCBpbmRleCkgeworICAgICAgICBTdHJpbmcgcmlnaHRTdHJpbmcgPSBjYWxlbmRhcnNbaW5kZXhdLnRleHQuZ2V0VGV4dCgpOworCisgICAgICAgIFBhcnNlUG9zaXRpb24gc3RhdHVzID0gbmV3IFBhcnNlUG9zaXRpb24oMCk7CisKKyAgICAgICAgaWYgKHJpZ2h0U3RyaW5nLmxlbmd0aCgpID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycm9yVGV4dCgiRXJyb3I6IG5vIGlucHV0IHRvIHBhcnNlISIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIERhdGUgZGF0ZSA9IGNhbGVuZGFyc1tpbmRleF0uZm9ybWF0LnBhcnNlKHJpZ2h0U3RyaW5nLCBzdGF0dXMpOworICAgICAgICAgICAgdGltZSA9IGRhdGUuZ2V0VGltZSgpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjYWxlbmRhcnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoaSAhPSBpbmRleCkgeworICAgICAgICAgICAgICAgICAgICBjYWxlbmRhcnNbaV0udGV4dC5zZXRUZXh0KCJFUlJPUiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVycm9yVGV4dCgiRXhjZXB0aW9uOiAiICsgZS5nZXRDbGFzcygpLnRvU3RyaW5nKCkgKyAiIHBhcnNpbmc6ICIrcmlnaHRTdHJpbmcpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaW50IHN0YXJ0ID0gY2FsZW5kYXJzW2luZGV4XS50ZXh0LmdldFNlbGVjdGlvblN0YXJ0KCk7CisgICAgICAgIGludCBlbmQgPSBjYWxlbmRhcnNbaW5kZXhdLnRleHQuZ2V0U2VsZWN0aW9uRW5kKCk7CisKKyAgICAgICAgbWlsbGlzRm9ybWF0KCk7CisKKyAgICAgICAgY2FsZW5kYXJzW2luZGV4XS50ZXh0LnNlbGVjdChzdGFydCxlbmQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gaXQgaXMgbmVjZXNzYXJ5IHRvIGZvcm1hdCB0aGUgdGltZQorICAgICAqIGluIHRoZSAiTWlsbGlzIiB0ZXh0IGZpZWxkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIG1pbGxpc0Zvcm1hdCgpIHsKKyAgICAgICAgU3RyaW5nIG91dCA9ICIiOworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2FsZW5kYXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG91dCA9IGNhbGVuZGFyc1tpXS5mb3JtYXQuZm9ybWF0KG5ldyBEYXRlKHRpbWUpKTsKKyAgICAgICAgICAgICAgICBjYWxlbmRhcnNbaV0udGV4dC5zZXRUZXh0KG91dCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBjYWxlbmRhcnNbaV0udGV4dC5zZXRUZXh0KCJFUlJPUiIpOworICAgICAgICAgICAgICAgIGVycm9yVGV4dCgiRXhjZXB0aW9uOiAiICsgZS5nZXRDbGFzcygpLnRvU3RyaW5nKCkgKyAiIGZvcm1hdHRpbmcgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgY2FsZW5kYXJzW2ldLm5hbWUgKyAiICIgKyB0aW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworCisgICAgLyoqCisgICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB1c2VycyBjaGFuZ2UgdGhlIHBhdHRlcm4gdGV4dC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBwYXR0ZXJuVGV4dENoYW5nZWQoKSB7CisgICAgICAgIHNldEZvcm1hdEZyb21QYXR0ZXJuKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiB1c2VycyBzZWxlY3QgYSBuZXcgcmVwcmVzZW50YXRpdmUgY2l0eS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjaXR5Q2hhbmdlZCgpIHsKKyAgICAgICAgVGltZVpvbmUgdGltZVpvbmUgPSBUaW1lWm9uZS5nZXREZWZhdWx0KCk7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjYWxlbmRhcnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGNhbGVuZGFyc1tpXS5mb3JtYXQuc2V0VGltZVpvbmUodGltZVpvbmUpOworICAgICAgICB9CisgICAgICAgIG1pbGxpc0Zvcm1hdCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdXNlcnMgc2VsZWN0IGEgbmV3IHRpbWUgZmllbGQKKyAgICAgKiB0byBhZGQgb3Igcm9sbCBpdHMgdmFsdWUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgZGF0ZUZpZWxkQ2hhbmdlZChib29sZWFuIHVwKSB7CisgICAgICAgIGludCBmaWVsZCA9IGtSb2xsQWRkRmllbGRzW2RhdGVNZW51LmdldFNlbGVjdGVkSW5kZXgoKV0uZmllbGQ7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjYWxlbmRhcnMubGVuZ3RoOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChjYWxlbmRhcnNbaV0ucm9sbEFkZC5nZXRTdGF0ZSgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENhbGVuZGFyIGMgPSBjYWxlbmRhcnNbaV0uY2FsZW5kYXI7CisgICAgICAgICAgICAgICAgYy5zZXRUaW1lKG5ldyBEYXRlKHRpbWUpKTsKKworICAgICAgICAgICAgICAgIGlmIChnZXRBZGQuZ2V0U3RhdGUoKSkgeworICAgICAgICAgICAgICAgICAgICBjLmFkZChmaWVsZCwgdXAgPyAxIDogLTEpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGMucm9sbChmaWVsZCwgdXApOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRpbWUgPSBjLmdldFRpbWUoKS5nZXRUaW1lKCk7CisgICAgICAgICAgICAgICAgbWlsbGlzRm9ybWF0KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcmludCBvdXQgdGhlIGVycm9yIG1lc3NhZ2Ugd2hpbGUgZGVidWdnaW5nIHRoaXMgcHJvZ3JhbS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBlcnJvclRleHQoU3RyaW5nIHMpCisgICAgeworICAgICAgICBpZiAodHJ1ZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50ICAgICAgICBGSUVMRF9DT0xVTU5TID0gMzU7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nICAgICBERUZBVUxUX0ZPUk1BVCA9ICJFRUVFIE1NTU0gZCwgeXl5eSBHIjsKKworCisgICAgY2xhc3MgQ2FsZW5kYXJSZWMgeworICAgICAgICBwdWJsaWMgQ2FsZW5kYXJSZWMoU3RyaW5nIG5hbWVTdHIsIENhbGVuZGFyIGNhbCkKKyAgICAgICAgeworICAgICAgICAgICAgbmFtZSA9IG5hbWVTdHI7CisgICAgICAgICAgICBjYWxlbmRhciA9IGNhbDsKKyAgICAgICAgICAgIHJvbGxBZGQgPSBuZXcgQ2hlY2tib3goKTsKKworICAgICAgICAgICAgdGV4dCA9IG5ldyBKVGV4dEZpZWxkKCIiLEZJRUxEX0NPTFVNTlMpOworICAgICAgICAgICAgdGV4dC5zZXRGb250KERlbW9VdGlsaXR5LmVkaXRGb250KTsKKworICAgICAgICAgICAgZm9ybWF0ID0gRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoY2FsLCBEYXRlRm9ybWF0LkZVTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICAgICAgICAgIC8vZm9ybWF0LmFwcGx5UGF0dGVybihERUZBVUxUX0ZPUk1BVCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBzZXRMb2NhbGUoTG9jYWxlIGxvYykgeworICAgICAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSB0b1BhdHRlcm4oKTsKKworICAgICAgICAgICAgZm9ybWF0ID0gRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoY2FsZW5kYXIsIERhdGVGb3JtYXQuRlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvYyk7CisgICAgICAgICAgICBhcHBseVBhdHRlcm4ocGF0dGVybik7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBhcHBseVBhdHRlcm4oU3RyaW5nIHBhdHRlcm4pIHsKKyAgICAgICAgICAgIGlmIChmb3JtYXQgaW5zdGFuY2VvZiBTaW1wbGVEYXRlRm9ybWF0KSB7CisgICAgICAgICAgICAgICAgKChTaW1wbGVEYXRlRm9ybWF0KWZvcm1hdCkuYXBwbHlQYXR0ZXJuKHBhdHRlcm4pOworLy9oZXkge2FsfSAtIAorLy8gICAgICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdCBpbnN0YW5jZW9mIGphdmEudGV4dC5TaW1wbGVEYXRlRm9ybWF0KSB7CisvLyAgICAgICAgICAgICAgICAoKGphdmEudGV4dC5TaW1wbGVEYXRlRm9ybWF0KWZvcm1hdCkuYXBwbHlQYXR0ZXJuKHBhdHRlcm4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwcml2YXRlIFN0cmluZyB0b1BhdHRlcm4oKSB7CisgICAgICAgICAgICBpZiAoZm9ybWF0IGluc3RhbmNlb2YgU2ltcGxlRGF0ZUZvcm1hdCkgeworICAgICAgICAgICAgICAgIHJldHVybiAoKFNpbXBsZURhdGVGb3JtYXQpZm9ybWF0KS50b1BhdHRlcm4oKTsKKy8vaGV5IHthbH0gLSAKKy8vICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JtYXQgaW5zdGFuY2VvZiBqYXZhLnRleHQuU2ltcGxlRGF0ZUZvcm1hdCkgeworLy8gICAgICAgICAgICAgICAgcmV0dXJuICgoamF2YS50ZXh0LlNpbXBsZURhdGVGb3JtYXQpZm9ybWF0KS50b1BhdHRlcm4oKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgQ2FsZW5kYXIgIGNhbGVuZGFyOworICAgICAgICBEYXRlRm9ybWF0ICAgICAgICAgIGZvcm1hdDsKKyAgICAgICAgU3RyaW5nICAgICAgICAgICAgICBuYW1lOworICAgICAgICBKVGV4dEZpZWxkICAgICAgICAgICB0ZXh0OworICAgICAgICBDaGVja2JveCAgICAgICAgICAgIHJvbGxBZGQ7CisgICAgfTsKKworICAgIHByaXZhdGUgZmluYWwgQ2FsZW5kYXJSZWNbXSBjYWxlbmRhcnMgPSB7CisgICAgICAgIG5ldyBDYWxlbmRhclJlYygiR3JlZ29yaWFuIiwgICAgICAgIG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpKSwKKyAgICAgICAgbmV3IENhbGVuZGFyUmVjKCJIZWJyZXciLCAgICAgICAgICAgbmV3IEhlYnJld0NhbGVuZGFyKCkpLAorICAgICAgICBuZXcgQ2FsZW5kYXJSZWMoIklzbGFtaWMgKGNpdmlsKSIsICBtYWtlSXNsYW1pYyh0cnVlKSksCisgICAgICAgIG5ldyBDYWxlbmRhclJlYygiSXNsYW1pYyAodHJ1ZSkiLCAgIG1ha2VJc2xhbWljKGZhbHNlKSksCisgICAgICAgIG5ldyBDYWxlbmRhclJlYygiQnVkZGhpc3QiLCAgICAgICAgIG5ldyBCdWRkaGlzdENhbGVuZGFyKCkpLAorICAgICAgICBuZXcgQ2FsZW5kYXJSZWMoIkphcGFuZXNlIiwgICAgICAgICBuZXcgSmFwYW5lc2VDYWxlbmRhcigpKSwKKy8vICAgICAgICBuZXcgQ2FsZW5kYXJSZWMoIkNoaW5lc2UiLCAgICAgICAgICBuZXcgQ2hpbmVzZUNhbGVuZGFyKCkpLAorICAgIH07CisKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBDYWxlbmRhciBtYWtlSXNsYW1pYyhib29sZWFuIGNpdmlsKSB7CisgICAgICAgIElzbGFtaWNDYWxlbmRhciBjYWwgPSBuZXcgSXNsYW1pY0NhbGVuZGFyKCk7CisgICAgICAgIGNhbC5zZXRDaXZpbChjaXZpbCk7CisgICAgICAgIHJldHVybiBjYWw7CisgICAgfTsKK307CisKK2NsYXNzIFJvbGxBZGRGaWVsZCB7CisgICAgUm9sbEFkZEZpZWxkKGludCBmaWVsZCwgU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgdGhpcy5maWVsZCA9IGZpZWxkOworICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgIH0KKyAgICBpbnQgZmllbGQ7CisgICAgU3RyaW5nIG5hbWU7Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vZGVtby9jYWxlbmRhci9DYWxlbmRhckZyYW1lLmphdmEgYi9zcmMvY29tL2libS9kZW1vL2NhbGVuZGFyL0NhbGVuZGFyRnJhbWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45YjQwMGZlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vZGVtby9jYWxlbmRhci9DYWxlbmRhckZyYW1lLmphdmEKQEAgLTAsMCArMSw0MzUgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk3LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2RlbW8vY2FsZW5kYXIvQXR0aWMvQ2FsZW5kYXJGcmFtZS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzEwLzE5IDAwOjI3OjE2ICQgCisgKiAkUmV2aXNpb246IDEuOCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLmRlbW8uY2FsZW5kYXI7CisKK2ltcG9ydCBjb20uaWJtLmRlbW8uKjsKK2ltcG9ydCBjb20uaWJtLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS51dGlsLkhlYnJld0NhbGVuZGFyOworaW1wb3J0IGNvbS5pYm0udXRpbC5CdWRkaGlzdENhbGVuZGFyOworaW1wb3J0IGNvbS5pYm0udXRpbC5KYXBhbmVzZUNhbGVuZGFyOworaW1wb3J0IGNvbS5pYm0udXRpbC5Jc2xhbWljQ2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS50ZXh0LlNpbXBsZURhdGVGb3JtYXQ7CisvL2ltcG9ydCBqYXZhLnV0aWwuU2ltcGxlVGltZVpvbmU7CitpbXBvcnQgY29tLmlibS51dGlsLlNpbXBsZVRpbWVab25lOworaW1wb3J0IGphdmEuYXBwbGV0LkFwcGxldDsKK2ltcG9ydCBqYXZhLmF3dC4qOworaW1wb3J0IGphdmEuYXd0LmV2ZW50Lio7CitpbXBvcnQgamF2YS5uZXQuKjsKK2ltcG9ydCBqYXZhLmlvLio7CisvL2ltcG9ydCBqYXZhLnRleHQuRGF0ZUZvcm1hdDsKK2ltcG9ydCBjb20uaWJtLnRleHQuRGF0ZUZvcm1hdDsKK2ltcG9ydCBqYXZhLnRleHQuTWVzc2FnZUZvcm1hdDsKKy8vaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBjb20uaWJtLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisvL2ltcG9ydCBqYXZhLnV0aWwuR3JlZ29yaWFuQ2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS51dGlsLkdyZWdvcmlhbkNhbGVuZGFyOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7CisvL2ltcG9ydCBqYXZhLnV0aWwuVGltZVpvbmU7CitpbXBvcnQgY29tLmlibS51dGlsLlRpbWVab25lOworCisvKioKKyAqIEEgRnJhbWUgaXMgYSB0b3AtbGV2ZWwgd2luZG93IHdpdGggYSB0aXRsZS4gVGhlIGRlZmF1bHQgbGF5b3V0IGZvciBhIGZyYW1lCisgKiBpcyBCb3JkZXJMYXlvdXQuICBUaGUgQ2FsZW5kYXJGcmFtZSBjbGFzcyBkZWZpbmVzIHRoZSB3aW5kb3cgbGF5b3V0IG9mCisgKiBDYWxlbmRhckRlbW8uCisgKi8KK2NsYXNzIENhbGVuZGFyRnJhbWUgZXh0ZW5kcyBGcmFtZQoreworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKKworICAgIHByaXZhdGUgRGVtb0FwcGxldCBhcHBsZXQ7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IENhbGVuZGFyRnJhbWUgdGhhdCBpcyBpbml0aWFsbHkgaW52aXNpYmxlLgorICAgICAqLworICAgIHB1YmxpYyBDYWxlbmRhckZyYW1lKERlbW9BcHBsZXQgbXlBcHBsZXQpCisgICAgeworICAgICAgICBzdXBlcigiQ2FsZW5kYXIgRGVtbyIpOworICAgICAgICB0aGlzLmFwcGxldCA9IG15QXBwbGV0OworICAgICAgICBpbml0KCk7CisKKyAgICAgICAgLy8gV2hlbiB0aGUgd2luZG93IGlzIGNsb3NlZCwgd2Ugd2FudCB0byBzaHV0IGRvd24gdGhlIGFwcGxldCBvciBhcHBsaWNhdGlvbgorICAgICAgICBhZGRXaW5kb3dMaXN0ZW5lcigKKyAgICAgICAgICAgIG5ldyBXaW5kb3dBZGFwdGVyKCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHdpbmRvd0Nsb3NpbmcoV2luZG93RXZlbnQgZSkgeworICAgICAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgZGlzcG9zZSgpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChhcHBsZXQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGV0LmRlbW9DbG9zZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIFN5c3RlbS5leGl0KDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gKTsKKyAgICB9CisKKyAgICBwcml2YXRlIENob2ljZSAgICAgICAgICBkaXNwbGF5TWVudTsKKyAgICBwcml2YXRlIExvY2FsZVtdICAgICAgICBsb2NhbGVzID0gRGVtb1V0aWxpdHkuZ2V0RzdMb2NhbGVzKCk7CisKKyAgICBwcml2YXRlIENhbGVuZGFyICAgICAgICBjYWxlbmRhcnNbXSAgID0gbmV3IENhbGVuZGFyWzJdOworICAgIHByaXZhdGUgQ2hvaWNlICAgICAgICAgIGNhbE1lbnVbXSAgICAgPSBuZXcgQ2hvaWNlWzJdOworICAgIHByaXZhdGUgQ29sb3JlZExhYmVsICAgIG1vbnRoTGFiZWxbXSAgPSBuZXcgQ29sb3JlZExhYmVsWzJdOworICAgIHByaXZhdGUgRGF0ZUZvcm1hdCAgICAgIG1vbnRoRm9ybWF0W10gPSBuZXcgRGF0ZUZvcm1hdFsyXTsKKworICAgIHByaXZhdGUgQnV0dG9uICAgICAgICAgIHByZXZZZWFyOworICAgIHByaXZhdGUgQnV0dG9uICAgICAgICAgIHByZXZNb250aDsKKyAgICBwcml2YXRlIEJ1dHRvbiAgICAgICAgICBnb3RvVG9kYXk7CisgICAgcHJpdmF0ZSBCdXR0b24gICAgICAgICAgbmV4dE1vbnRoOworICAgIHByaXZhdGUgQnV0dG9uICAgICAgICAgIG5leHRZZWFyOworICAgIHByaXZhdGUgQ2FsZW5kYXJQYW5lbCAgIGNhbGVuZGFyUGFuZWw7CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGFkZChDb250YWluZXIgY29udGFpbmVyLCBDb21wb25lbnQgY29tcG9uZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyaWRCYWdMYXlvdXQgZywgR3JpZEJhZ0NvbnN0cmFpbnRzIGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGdyaWR3aWR0aCwgaW50IHdlaWdodHgpCisgICAgeworICAgICAgICBjLmdyaWR3aWR0aCA9IGdyaWR3aWR0aDsKKyAgICAgICAgYy53ZWlnaHR4ID0gd2VpZ2h0eDsKKyAgICAgICAgZy5zZXRDb25zdHJhaW50cyhjb21wb25lbnQsIGMpOworICAgICAgICBjb250YWluZXIuYWRkKGNvbXBvbmVudCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW5pdGlhbGl6ZXMgdGhlIGFwcGxldC4gWW91IG5ldmVyIG5lZWQgdG8gY2FsbCB0aGlzIGRpcmVjdGx5LCBpdAorICAgICAqIGlzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBzeXN0ZW0gb25jZSB0aGUgYXBwbGV0IGlzIGNyZWF0ZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgaW5pdCgpIHsKKyAgICAgICAgc2V0QmFja2dyb3VuZChEZW1vVXRpbGl0eS5iZ0NvbG9yKTsKKyAgICAgICAgc2V0TGF5b3V0KG5ldyBCb3JkZXJMYXlvdXQoMTAsMTApKTsKKworICAgICAgICBQYW5lbCB0b3BQYW5lbCA9IG5ldyBQYW5lbCgpOworICAgICAgICBHcmlkQmFnTGF5b3V0IGcgPSBuZXcgR3JpZEJhZ0xheW91dCgpOworICAgICAgICB0b3BQYW5lbC5zZXRMYXlvdXQoZyk7CisgICAgICAgIEdyaWRCYWdDb25zdHJhaW50cyBjID0gbmV3IEdyaWRCYWdDb25zdHJhaW50cygpOworICAgICAgICBjLmZpbGwgPSBHcmlkQmFnQ29uc3RyYWludHMuSE9SSVpPTlRBTDsKKworICAgICAgICAvLyBCdWlsZCB0aGUgdHdvIG1lbnVzIGZvciBzZWxlY3Rpbmcgd2hpY2ggY2FsZW5kYXIgaXMgZGlzcGxheWVkLAorICAgICAgICAvLyBwbHVzIHRoZSBtb250aC95ZWFyIGxhYmVsIGZvciBlYWNoIGNhbGVuZGFyCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKSB7CisgICAgICAgICAgICBjYWxNZW51W2ldID0gbmV3IENob2ljZSgpOworICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBDQUxFTkRBUlMubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgICAgICBjYWxNZW51W2ldLmFkZEl0ZW0oQ0FMRU5EQVJTW2pdLm5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FsTWVudVtpXS5zZXRCYWNrZ3JvdW5kKERlbW9VdGlsaXR5LmNob2ljZUNvbG9yKTsKKyAgICAgICAgICAgIGNhbE1lbnVbaV0uc2VsZWN0KGkpOworICAgICAgICAgICAgY2FsTWVudVtpXS5hZGRJdGVtTGlzdGVuZXIobmV3IENhbE1lbnVMaXN0ZW5lcigpKTsKKworICAgICAgICAgICAgLy8gTGFiZWwgZm9yIHRoZSBjdXJyZW50IG1vbnRoIG5hbWUKKyAgICAgICAgICAgIG1vbnRoTGFiZWxbaV0gPSBuZXcgQ29sb3JlZExhYmVsKCIiLCBDT0xPUlNbaV0pOworICAgICAgICAgICAgbW9udGhMYWJlbFtpXS5zZXRGb250KERlbW9VdGlsaXR5LnRpdGxlRm9udCk7CisKKyAgICAgICAgICAgIC8vIEFuZCB0aGUgZGVmYXVsdCBjYWxlbmRhciB0byB1c2UgZm9yIHRoaXMgc2xvdAorICAgICAgICAgICAgY2FsZW5kYXJzW2ldID0gQ0FMRU5EQVJTW2ldLmNhbGVuZGFyOworCisgICAgICAgICAgICBhZGQodG9wUGFuZWwsIGNhbE1lbnVbaV0sIGcsIGMsIDUsIDApOworICAgICAgICAgICAgYWRkKHRvcFBhbmVsLCBtb250aExhYmVsW2ldLCBnLCBjLCBHcmlkQmFnQ29uc3RyYWludHMuUkVNQUlOREVSLCAxKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE5vdyBhZGQgdGhlIG5leHQvcHJldmlvdXMgeWVhci9tb250aCBidXR0b25zOgorICAgICAgICBwcmV2WWVhciA9IG5ldyBCdXR0b24oIjw8Iik7CisgICAgICAgIHByZXZZZWFyLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBBZGRBY3Rpb24oQ2FsZW5kYXIuWUVBUiwgLTEpKTsKKworICAgICAgICBwcmV2TW9udGggPSBuZXcgQnV0dG9uKCI8Iik7CisgICAgICAgIHByZXZNb250aC5hZGRBY3Rpb25MaXN0ZW5lcihuZXcgQWRkQWN0aW9uKENhbGVuZGFyLk1PTlRILCAtMSkpOworCisgICAgICAgIGdvdG9Ub2RheSA9IG5ldyBCdXR0b24oIlRvZGF5Iik7CisgICAgICAgIGdvdG9Ub2RheS5hZGRBY3Rpb25MaXN0ZW5lciggbmV3IEFjdGlvbkxpc3RlbmVyKCkKKyAgICAgICAgeworICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBjYWxlbmRhclBhbmVsLnNldERhdGUoIG5ldyBEYXRlKCkgKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVNb250aE5hbWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworCisgICAgICAgIG5leHRNb250aCA9IG5ldyBCdXR0b24oIj4iKTsKKyAgICAgICAgbmV4dE1vbnRoLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBBZGRBY3Rpb24oQ2FsZW5kYXIuTU9OVEgsIDEpKTsKKworICAgICAgICBuZXh0WWVhciA9IG5ldyBCdXR0b24oIj4+Iik7CisgICAgICAgIG5leHRZZWFyLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBBZGRBY3Rpb24oQ2FsZW5kYXIuWUVBUiwgMSkpOworCisgICAgICAgIGMuZmlsbCA9IEdyaWRCYWdDb25zdHJhaW50cy5OT05FOworICAgICAgICBhZGQodG9wUGFuZWwsIHByZXZZZWFyLCAgZywgYywgMSwgMCk7CisgICAgICAgIGFkZCh0b3BQYW5lbCwgcHJldk1vbnRoLCBnLCBjLCAxLCAwKTsKKyAgICAgICAgYWRkKHRvcFBhbmVsLCBnb3RvVG9kYXksIGcsIGMsIDEsIDApOworICAgICAgICBhZGQodG9wUGFuZWwsIG5leHRNb250aCwgZywgYywgMSwgMCk7CisgICAgICAgIGFkZCh0b3BQYW5lbCwgbmV4dFllYXIsICBnLCBjLCAxLCAwKTsKKworICAgICAgICAvLyBOb3cgYWRkIHRoZSBtZW51IGZvciBzZWxlY3RpbmcgdGhlIGRpc3BsYXkgbGFuZ3VhZ2UKKyAgICAgICAgUGFuZWwgZGlzcGxheVBhbmVsID0gbmV3IFBhbmVsKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGRpc3BsYXlNZW51ID0gbmV3IENob2ljZSgpOworICAgICAgICAgICAgTG9jYWxlIGRlZmF1bHRMb2NhbGUgPSBMb2NhbGUuZ2V0RGVmYXVsdCgpOworICAgICAgICAgICAgaW50IGJlc3RNYXRjaCA9IC0xLCB0aGlzTWF0Y2ggPSAtMTsKKyAgICAgICAgICAgIGludCBzZWxlY3RNZSA9IDA7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbG9jYWxlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChpID4gMCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlc1tpXS5nZXRMYW5ndWFnZSgpLmVxdWFscyhsb2NhbGVzW2ktMV0uZ2V0TGFuZ3VhZ2UoKSkgfHwKKyAgICAgICAgICAgICAgICAgICAgaSA8IGxvY2FsZXMubGVuZ3RoIC0gMSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlc1tpXS5nZXRMYW5ndWFnZSgpLmVxdWFscyhsb2NhbGVzW2krMV0uZ2V0TGFuZ3VhZ2UoKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TWVudS5hZGRJdGVtKCBsb2NhbGVzW2ldLmdldERpc3BsYXlOYW1lKCkgKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TWVudS5hZGRJdGVtKCBsb2NhbGVzW2ldLmdldERpc3BsYXlMYW5ndWFnZSgpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0aGlzTWF0Y2ggPSBEZW1vVXRpbGl0eS5jb21wYXJlTG9jYWxlcyhsb2NhbGVzW2ldLCBkZWZhdWx0TG9jYWxlKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAodGhpc01hdGNoID49IGJlc3RNYXRjaCkgeworICAgICAgICAgICAgICAgICAgICBiZXN0TWF0Y2ggPSB0aGlzTWF0Y2g7CisgICAgICAgICAgICAgICAgICAgIHNlbGVjdE1lID0gaTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGRpc3BsYXlNZW51LnNldEJhY2tncm91bmQoRGVtb1V0aWxpdHkuY2hvaWNlQ29sb3IpOworICAgICAgICAgICAgZGlzcGxheU1lbnUuc2VsZWN0KHNlbGVjdE1lKTsKKworICAgICAgICAgICAgZGlzcGxheU1lbnUuYWRkSXRlbUxpc3RlbmVyKCBuZXcgSXRlbUxpc3RlbmVyKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgaXRlbVN0YXRlQ2hhbmdlZChJdGVtRXZlbnQgZSkgeworICAgICAgICAgICAgICAgICAgICBMb2NhbGUgbG9jID0gbG9jYWxlc1tkaXNwbGF5TWVudS5nZXRTZWxlY3RlZEluZGV4KCldOworICAgICAgICAgICAgICAgICAgICBjYWxlbmRhclBhbmVsLnNldExvY2FsZSggbG9jICk7CisgICAgICAgICAgICAgICAgICAgIG1vbnRoRm9ybWF0WzBdID0gbW9udGhGb3JtYXRbMV0gPSBudWxsOworICAgICAgICAgICAgICAgICAgICB1cGRhdGVNb250aE5hbWUoKTsKKyAgICAgICAgICAgICAgICAgICAgcmVwYWludCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gKTsKKworICAgICAgICAgICAgTGFiZWwgbDEgPSBuZXcgTGFiZWwoIkRpc3BsYXkgTGFuZ3VhZ2U6IiwgTGFiZWwuUklHSFQpOworICAgICAgICAgICAgbDEuc2V0Rm9udChEZW1vVXRpbGl0eS5sYWJlbEZvbnQpOworCisgICAgICAgICAgICBkaXNwbGF5UGFuZWwuc2V0TGF5b3V0KG5ldyBGbG93TGF5b3V0KCkpOworICAgICAgICAgICAgZGlzcGxheVBhbmVsLmFkZChsMSk7CisgICAgICAgICAgICBkaXNwbGF5UGFuZWwuYWRkKGRpc3BsYXlNZW51KTsKKworICAgICAgICB9CisgICAgICAgIGMuZmlsbCA9IEdyaWRCYWdDb25zdHJhaW50cy5OT05FOworICAgICAgICBjLmFuY2hvciA9IEdyaWRCYWdDb25zdHJhaW50cy5FQVNUOworCisgICAgICAgIGFkZCh0b3BQYW5lbCwgZGlzcGxheVBhbmVsLCBnLCBjLCBHcmlkQmFnQ29uc3RyYWludHMuUkVNQUlOREVSLCAwKTsKKworICAgICAgICAvLyBUaGUgdGl0bGUsIGJ1dHRvbnMsIGV0Yy4gZ28gaW4gYSBwYW5lbCBhdCB0aGUgdG9wIG9mIHRoZSB3aW5kb3cKKyAgICAgICAgYWRkKCJOb3J0aCIsIHRvcFBhbmVsKTsKKworICAgICAgICAvLyBUaGUgY29weXJpZ2h0IG5vdGljZSBnb2VzIGF0IHRoZSBib3R0b20gb2YgdGhlIHdpbmRvdworICAgICAgICBMYWJlbCBjb3B5cmlnaHQgPSBuZXcgTGFiZWwoRGVtb1V0aWxpdHkuY29weXJpZ2h0MSwgTGFiZWwuTEVGVCk7CisgICAgICAgIGNvcHlyaWdodC5zZXRGb250KERlbW9VdGlsaXR5LmNyZWRpdEZvbnQpOworICAgICAgICBhZGQoIlNvdXRoIiwgY29weXJpZ2h0KTsKKworICAgICAgICAvLyBOb3cgY3JlYXRlIHRoZSBiaWcgY2FsZW5kYXIgcGFuZWwgYW5kIHN0aWNrIGl0IGluIHRoZSBtaWRkbGUKKyAgICAgICAgY2FsZW5kYXJQYW5lbCA9IG5ldyBDYWxlbmRhclBhbmVsKCBsb2NhbGVzW2Rpc3BsYXlNZW51LmdldFNlbGVjdGVkSW5kZXgoKV0gKTsKKyAgICAgICAgYWRkKCJDZW50ZXIiLCBjYWxlbmRhclBhbmVsKTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgeworICAgICAgICAgICAgY2FsZW5kYXJQYW5lbC5zZXRDYWxlbmRhcihpLCBjYWxlbmRhcnNbaV0pOworICAgICAgICAgICAgY2FsZW5kYXJQYW5lbC5zZXRDb2xvcihpLCBDT0xPUlNbaV0pOworICAgICAgICB9CisKKyAgICAgICAgdXBkYXRlTW9udGhOYW1lKCk7CisgICAgfTsKKworCisgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZU1vbnRoTmFtZSgpCisgICAgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyOyBpKyspIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBpZiAobW9udGhGb3JtYXRbaV0gPT0gbnVsbCkgeyAgICAgLy8gVE9ETzogb3B0aW1pemUKKyAgICAgICAgICAgICAgICAgICAgICAgIERhdGVGb3JtYXQgZiA9IERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyc1tpXSwgRGF0ZUZvcm1hdC5NRURJVU0sIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlc1tkaXNwbGF5TWVudS5nZXRTZWxlY3RlZEluZGV4KCldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmIGluc3RhbmNlb2YgY29tLmlibS50ZXh0LlNpbXBsZURhdGVGb3JtYXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb20uaWJtLnRleHQuU2ltcGxlRGF0ZUZvcm1hdCBmMSA9IChjb20uaWJtLnRleHQuU2ltcGxlRGF0ZUZvcm1hdCkgZjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMS5hcHBseVBhdHRlcm4oIk1NTU0sIHl5eXkgRyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYxLnNldFRpbWVab25lKG5ldyBTaW1wbGVUaW1lWm9uZSgwLCAiVVRDIikpOworLy9oZXkge2FsfSAtCisvLyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZiBpbnN0YW5jZW9mIGphdmEudGV4dC5TaW1wbGVEYXRlRm9ybWF0KSB7CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLnRleHQuU2ltcGxlRGF0ZUZvcm1hdCBmMSA9IChqYXZhLnRleHQuU2ltcGxlRGF0ZUZvcm1hdCkgZjsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYxLmFwcGx5UGF0dGVybigiTU1NTSwgeXl5eSBHIik7CisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmMS5zZXRUaW1lWm9uZShuZXcgU2ltcGxlVGltZVpvbmUoMCwgIlVUQyIpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoRm9ybWF0W2ldID0gZjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vaGV5IHtsd30gLSB0aGVyZSdzIHNvbWV0aGluZyB3cm9uZyBpbiB0aGlzIHJvdXRpbmUgdGhhdCBjdWFzZXMgZXhjZXB0aW9ucy4KKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGUpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1vbnRoTGFiZWxbaV0uc2V0VGV4dCggbW9udGhGb3JtYXRbaV0uZm9ybWF0KCBjYWxlbmRhclBhbmVsLmZpcnN0T2ZNb250aCgpICkpOworICAgICAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENhbE1lbnVMaXN0ZW5lciByZXNwb25kcyB0byBldmVudHMgaW4gdGhlIHR3byBwb3B1cCBtZW51cyB0aGF0IHNlbGVjdAorICAgICAqIHRoZSBjYWxlbmRhciBzeXN0ZW1zIHRvIGJlIHVzZWQgaW4gdGhlIGRpc3BsYXkuICBJdCBmaWd1cmVzIG91dCB3aGljaAorICAgICAqIG9mIHRoZSB0d28gbWVudXMgdGhlIGV2ZW50IG9jY3VycmVkIGluIGFuZCB1cGRhdGVzIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICogZWxlbWVudCBvZiB0aGUgY2FsZW5kYXJzW10gYXJyYXkgdG8gbWF0Y2ggdGhlIG5ldyBzZWxlY3Rpb24uCisgICAgICovCisgICAgcHJpdmF0ZSBjbGFzcyBDYWxNZW51TGlzdGVuZXIgaW1wbGVtZW50cyBJdGVtTGlzdGVuZXIKKyAgICB7CisgICAgICAgICBwdWJsaWMgdm9pZCBpdGVtU3RhdGVDaGFuZ2VkKEl0ZW1FdmVudCBlKQorICAgICAgICAgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjYWxNZW51Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChlLmdldEl0ZW1TZWxlY3RhYmxlKCkgPT0gY2FsTWVudVtpXSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGZvdW5kIHRoZSBtZW51IHRoYXQgdGhlIGV2ZW50IGhhcHBlbmVkIGluLgorICAgICAgICAgICAgICAgICAgICAvLyBGaWd1cmUgb3V0IHdoaWNoIG5ldyBjYWxlbmRhciB0aGV5IHNlbGVjdGVkLgorICAgICAgICAgICAgICAgICAgICBDYWxlbmRhciBuZXdDYWwgPSBDQUxFTkRBUlNbIGNhbE1lbnVbaV0uZ2V0U2VsZWN0ZWRJbmRleCgpIF0uY2FsZW5kYXI7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0NhbCAhPSBjYWxlbmRhcnNbaV0pCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGFueSBvZiB0aGUgb3RoZXIgbWVudXMgYXJlIHNldCB0byB0aGUgc2FtZSBuZXcgY2FsZW5kYXIKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdlJ3JlIGFib3V0IHRvIHVzZSBmb3IgdGhpcyBtZW51LCBzZXQgdGhlbSB0byB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsZW5kYXIgZnJvbSAqdGhpcyogbWVudSBzbyB3ZSB3b24ndCBoYXZlIHR3byB0aGUgc2FtZQorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjYWxlbmRhcnMubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaiAhPSBpICYmIGNhbGVuZGFyc1tqXSA9PSBuZXdDYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXJzW2pdID0gY2FsZW5kYXJzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhclBhbmVsLnNldENhbGVuZGFyKGosIGNhbGVuZGFyc1tqXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoRm9ybWF0W2pdID0gbnVsbDsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IENBTEVOREFSUy5sZW5ndGg7IGsrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGVuZGFyc1tqXSA9PSBDQUxFTkRBUlNba10uY2FsZW5kYXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxNZW51W2pdLnNlbGVjdChrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdyB1cGRhdGUgdGhpcyBtZW51IHRvIHVzZSB0aGUgbmV3IGNhbGVuZGFyIHRoZSB1c2VyIHNlbGVjdGVkCisgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhcnNbaV0gPSBuZXdDYWw7CisgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhclBhbmVsLnNldENhbGVuZGFyKGksIG5ld0NhbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtb250aEZvcm1hdFtpXSA9IG51bGw7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZU1vbnRoTmFtZSgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQWRkQWN0aW9uIGhhbmRsZXMgdGhlIG5leHQvcHJldmlvdXMgeWVhci9tb250aCBidXR0b25zLi4uCisgICAgICovCisgICAgcHJpdmF0ZSBjbGFzcyBBZGRBY3Rpb24gaW1wbGVtZW50cyBBY3Rpb25MaXN0ZW5lciB7CisgICAgICAgIEFkZEFjdGlvbihpbnQgZmllbGQsIGludCBhbW91bnQpIHsKKyAgICAgICAgICAgIHRoaXMuZmllbGQgPSBmaWVsZDsKKyAgICAgICAgICAgIHRoaXMuYW1vdW50ID0gYW1vdW50OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgIGNhbGVuZGFyUGFuZWwuYWRkKGZpZWxkLCBhbW91bnQpOworICAgICAgICAgICAgdXBkYXRlTW9udGhOYW1lKCk7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIGludCBmaWVsZCwgYW1vdW50OworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbG9yZWRMYWJlbCBpcyBzaW1pbGFyIHRvIGphdmEuYXd0LkxhYmVsLCB3aXRoIHR3byBkaWZmZXJlbmNlczoKKyAgICAgKgorICAgICAqICAtIFlvdSBjYW4gc2V0IGl0cyB0ZXh0IGNvbG9yCisgICAgICoKKyAgICAgKiAgLSBJdCBkcmF3cyB0ZXh0IHVzaW5nIGRyYXdTdHJpbmcgcmF0aGVyIHRoYW4gdXNpbmcgYSBob3N0LXNwZWNpZmljCisgICAgICogICAgIlBlZXIiIG9iamVjdCBsaWtlIEFXVCBkb2VzLiAgT24gMS4yLCB1c2luZyBkcmF3U3RyaW5nIGdpdmVzCisgICAgICogICAgdXMgQmlkaSByZW9yZGVyaW5nIGZvciBmcmVlLgorICAgICAqLworICAgIHN0YXRpYyBwcml2YXRlIGNsYXNzIENvbG9yZWRMYWJlbCBleHRlbmRzIENvbXBvbmVudCB7CisgICAgICAgIHB1YmxpYyBDb2xvcmVkTGFiZWwoU3RyaW5nIGxhYmVsKSB7CisgICAgICAgICAgICB0ZXh0ID0gbGFiZWw7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQ29sb3JlZExhYmVsKFN0cmluZyBsYWJlbCwgQ29sb3IgYykgeworICAgICAgICAgICAgdGV4dCA9IGxhYmVsOworICAgICAgICAgICAgY29sb3IgPSBjOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgc2V0VGV4dChTdHJpbmcgbGFiZWwpIHsKKyAgICAgICAgICAgIHRleHQgPSBsYWJlbDsKKyAgICAgICAgICAgIHJlcGFpbnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHNldEZvbnQoRm9udCBmKSB7CisgICAgICAgICAgICBmb250ID0gZjsKKyAgICAgICAgICAgIHJlcGFpbnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHBhaW50KEdyYXBoaWNzIGcpIHsKKyAgICAgICAgICAgIEZvbnRNZXRyaWNzIGZtID0gZy5nZXRGb250TWV0cmljcyhmb250KTsKKworICAgICAgICAgICAgUmVjdGFuZ2xlIGJvdW5kcyA9IGdldEJvdW5kcygpOworCisgICAgICAgICAgICBnLnNldENvbG9yKGNvbG9yKTsKKyAgICAgICAgICAgIGcuc2V0Rm9udChmb250KTsKKyAgICAgICAgICAgIGcuZHJhd1N0cmluZyh0ZXh0LCBmbS5zdHJpbmdXaWR0aCgiXHUwMGEwIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzLmhlaWdodC8yICsgZm0uZ2V0SGVpZ2h0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAtIGZtLmdldEFzY2VudCgpICsgZm0uZ2V0TGVhZGluZygpLzIpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIERpbWVuc2lvbiBnZXRQcmVmZXJyZWRTaXplKCkgeworICAgICAgICAgICAgcmV0dXJuIGdldE1pbmltdW1TaXplKCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgRGltZW5zaW9uIGdldE1pbmltdW1TaXplKCkgeworICAgICAgICAgICAgRm9udE1ldHJpY3MgZm0gPSBnZXRGb250TWV0cmljcyhmb250KTsKKworICAgICAgICAgICAgcmV0dXJuIG5ldyBEaW1lbnNpb24oIGZtLnN0cmluZ1dpZHRoKHRleHQpICsgMipmbS5zdHJpbmdXaWR0aCgiXHUwMGEwIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm0uZ2V0SGVpZ2h0KCkgKyBmbS5nZXRMZWFkaW5nKCkqMik7CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmcgdGV4dDsKKyAgICAgICAgQ29sb3IgY29sb3IgPSBDb2xvci5ibGFjazsKKyAgICAgICAgRm9udCBmb250ID0gRGVtb1V0aWxpdHkubGFiZWxGb250OworICAgIH0KKworICAgIC8qKgorICAgICAqIFByaW50IG91dCB0aGUgZXJyb3IgbWVzc2FnZSB3aGlsZSBkZWJ1Z2dpbmcgdGhpcyBwcm9ncmFtLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGVycm9yVGV4dChTdHJpbmcgcykKKyAgICB7CisgICAgICAgIGlmIChERUJVRykKKyAgICAgICAgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICAgICAgICB9CisgICAgfQorCisgICAgY2xhc3MgQ2FsZW5kYXJSZWMgeworICAgICAgICBwdWJsaWMgQ2FsZW5kYXJSZWMoU3RyaW5nIG5hbWVTdHIsIENhbGVuZGFyIGNhbCkKKyAgICAgICAgeworICAgICAgICAgICAgbmFtZSA9IG5hbWVTdHI7CisgICAgICAgICAgICBjYWxlbmRhciA9IGNhbDsKKyAgICAgICAgfQorCisgICAgICAgIENhbGVuZGFyICBjYWxlbmRhcjsKKyAgICAgICAgU3RyaW5nICAgICAgICAgICAgICBuYW1lOworICAgIH07CisKKyAgICBwcml2YXRlIGZpbmFsIENhbGVuZGFyUmVjW10gQ0FMRU5EQVJTID0geworICAgICAgICBuZXcgQ2FsZW5kYXJSZWMoIkdyZWdvcmlhbiBDYWxlbmRhciIsICAgICAgIG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpKSwKKyAgICAgICAgbmV3IENhbGVuZGFyUmVjKCJIZWJyZXcgQ2FsZW5kYXIiLCAgICAgICAgICBuZXcgSGVicmV3Q2FsZW5kYXIoKSksCisgICAgICAgIG5ldyBDYWxlbmRhclJlYygiSXNsYW1pYyBDYWxlbmRhciIsICAgICAgICAgbWFrZUlzbGFtaWMoZmFsc2UpKSwKKyAgICAgICAgbmV3IENhbGVuZGFyUmVjKCJJc2xhbWljIENpdmlsIENhbGVuZGFyICIsICBtYWtlSXNsYW1pYyh0cnVlKSksCisgICAgICAgIG5ldyBDYWxlbmRhclJlYygiQnVkZGhpc3QgQ2FsZW5kYXIiLCAgICAgICAgbmV3IEJ1ZGRoaXN0Q2FsZW5kYXIoKSksCisgICAgICAgIG5ldyBDYWxlbmRhclJlYygiSmFwYW5lc2UgQ2FsZW5kYXIiLCAgICAgICAgbmV3IEphcGFuZXNlQ2FsZW5kYXIoKSksCisgICAgfTsKKworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIENhbGVuZGFyIG1ha2VJc2xhbWljKGJvb2xlYW4gY2l2aWwpIHsKKyAgICAgICAgSXNsYW1pY0NhbGVuZGFyIGNhbCA9IG5ldyBJc2xhbWljQ2FsZW5kYXIoKTsKKyAgICAgICAgY2FsLnNldENpdmlsKGNpdmlsKTsKKyAgICAgICAgcmV0dXJuIGNhbDsKKyAgICB9OworCisgICAgc3RhdGljIGZpbmFsIENvbG9yW10gQ09MT1JTID0geyBDb2xvci5ibHVlLCBDb2xvci5ibGFjayB9OworfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9kZW1vL2NhbGVuZGFyL0NhbGVuZGFyUGFuZWwuamF2YSBiL3NyYy9jb20vaWJtL2RlbW8vY2FsZW5kYXIvQ2FsZW5kYXJQYW5lbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjFiOTdkY2IKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9kZW1vL2NhbGVuZGFyL0NhbGVuZGFyUGFuZWwuamF2YQpAQCAtMCwwICsxLDM2OCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTctMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vZGVtby9jYWxlbmRhci9BdHRpYy9DYWxlbmRhclBhbmVsLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMTAvMTkgMDA6Mjc6MTYgJCAKKyAqICRSZXZpc2lvbjogMS42ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0uZGVtby5jYWxlbmRhcjsKKworaW1wb3J0IGNvbS5pYm0uZGVtby4qOworCitpbXBvcnQgamF2YS5hcHBsZXQuQXBwbGV0OworaW1wb3J0IGphdmEuYXd0Lio7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuKjsKKy8vaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGphdmEubmV0Lio7CitpbXBvcnQgamF2YS5pby4qOworCisvL2ltcG9ydCBqYXZhLnRleHQuRGF0ZUZvcm1hdDsKK2ltcG9ydCBjb20uaWJtLnRleHQuRGF0ZUZvcm1hdDsKKy8vaW1wb3J0IGphdmEudXRpbC5TaW1wbGVUaW1lWm9uZTsKK2ltcG9ydCBjb20uaWJtLnV0aWwuU2ltcGxlVGltZVpvbmU7CisvL2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworCitpbXBvcnQgY29tLmlibS51dGlsLio7CitpbXBvcnQgY29tLmlibS50ZXh0Lio7CisKK2NsYXNzIENhbGVuZGFyUGFuZWwgZXh0ZW5kcyBDYW52YXMgeworCisgICAgcHVibGljIENhbGVuZGFyUGFuZWwoIExvY2FsZSBsb2NhbGUgKSB7CisgICAgICAgIHNldExvY2FsZShsb2NhbGUpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldExvY2FsZShMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIGlmIChmRGlzcGxheUxvY2FsZSA9PSBudWxsIHx8ICFmRGlzcGxheUxvY2FsZS5lcXVhbHMobG9jYWxlKSkgeworICAgICAgICAgICAgZkRpc3BsYXlMb2NhbGUgPSBsb2NhbGU7CisgICAgICAgICAgICBkaXJ0eSA9IHRydWU7CisKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZkNhbGVuZGFyLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGZDYWxlbmRhcltpXSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGZTeW1ib2xzW2ldID0gbmV3IERhdGVGb3JtYXRTeW1ib2xzKGZDYWxlbmRhcltpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkRpc3BsYXlMb2NhbGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFN0cmluZyBsYW5nID0gbG9jYWxlLmdldExhbmd1YWdlKCk7CisgICAgICAgICAgICBsZWZ0VG9SaWdodCA9ICEobGFuZy5lcXVhbHMoIml3IikgfHwgbGFuZy5lcXVhbHMoImFyIikpOworCisgICAgICAgICAgICByZXBhaW50KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXREYXRlKERhdGUgZGF0ZSkgeworICAgICAgICBmU3RhcnRPZk1vbnRoID0gZGF0ZTsKKyAgICAgICAgZGlydHkgPSB0cnVlOworICAgICAgICByZXBhaW50KCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWRkKGludCBmaWVsZCwgaW50IGRlbHRhKQorICAgIHsKKyAgICAgICAgc3luY2hyb25pemVkKGZDYWxlbmRhcikgeworICAgICAgICAgICAgZkNhbGVuZGFyWzBdLnNldFRpbWUoZlN0YXJ0T2ZNb250aCk7CisgICAgICAgICAgICBmQ2FsZW5kYXJbMF0uYWRkKGZpZWxkLCBkZWx0YSk7CisgICAgICAgICAgICBmU3RhcnRPZk1vbnRoID0gZkNhbGVuZGFyWzBdLmdldFRpbWUoKTsKKyAgICAgICAgfQorICAgICAgICBkaXJ0eSA9IHRydWU7CisgICAgICAgIHJlcGFpbnQoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRDb2xvcihpbnQgaW5kZXgsIENvbG9yIGMpIHsKKyAgICAgICAgZkNvbG9yW2luZGV4XSA9IGM7CisgICAgICAgIHJlcGFpbnQoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRDYWxlbmRhcihpbnQgaW5kZXgsIENhbGVuZGFyIGMpIHsKKyAgICAgICAgRGF0ZSBkYXRlID0gKGZDYWxlbmRhcltpbmRleF0gPT0gbnVsbCkgPyBuZXcgRGF0ZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZkNhbGVuZGFyW2luZGV4XS5nZXRUaW1lKCk7CisKKyAgICAgICAgZkNhbGVuZGFyW2luZGV4XSA9IGM7CisgICAgICAgIGZDYWxlbmRhcltpbmRleF0uc2V0VGltZShkYXRlKTsKKworICAgICAgICBmU3ltYm9sc1tpbmRleF0gPSBuZXcgRGF0ZUZvcm1hdFN5bWJvbHMoYywgZkRpc3BsYXlMb2NhbGUpOworICAgICAgICBkaXJ0eSA9IHRydWU7CisgICAgICAgIHJlcGFpbnQoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgQ2FsZW5kYXIgZ2V0Q2FsZW5kYXIoaW50IGluZGV4KSB7CisgICAgICAgIHJldHVybiBmQ2FsZW5kYXJbaW5kZXhdOworICAgIH0KKworICAgIHB1YmxpYyBMb2NhbGUgZ2V0RGlzcGxheUxvY2FsZSgpIHsKKyAgICAgICAgcmV0dXJuIGZEaXNwbGF5TG9jYWxlOworICAgIH0KKworICAgIHB1YmxpYyBEYXRlIGZpcnN0T2ZNb250aCgpIHsKKyAgICAgICAgcmV0dXJuIGZTdGFydE9mTW9udGg7CisgICAgfQorCisgICAgcHJpdmF0ZSBEYXRlIHN0YXJ0T2ZNb250aChEYXRlIGRhdGVJbk1vbnRoKQorICAgIHsKKyAgICAgICAgc3luY2hyb25pemVkKGZDYWxlbmRhcikgeworICAgICAgICAgICAgZkNhbGVuZGFyWzBdLnNldFRpbWUoZGF0ZUluTW9udGgpOworCisgICAgICAgICAgICBpbnQgZXJhID0gZkNhbGVuZGFyWzBdLmdldChDYWxlbmRhci5FUkEpOworICAgICAgICAgICAgaW50IHllYXIgPSBmQ2FsZW5kYXJbMF0uZ2V0KENhbGVuZGFyLllFQVIpOworICAgICAgICAgICAgaW50IG1vbnRoID0gZkNhbGVuZGFyWzBdLmdldChDYWxlbmRhci5NT05USCk7CisKKyAgICAgICAgICAgIGZDYWxlbmRhclswXS5jbGVhcigpOworICAgICAgICAgICAgZkNhbGVuZGFyWzBdLnNldChDYWxlbmRhci5FUkEsIGVyYSk7CisgICAgICAgICAgICBmQ2FsZW5kYXJbMF0uc2V0KENhbGVuZGFyLllFQVIsIHllYXIpOworICAgICAgICAgICAgZkNhbGVuZGFyWzBdLnNldChDYWxlbmRhci5NT05USCwgbW9udGgpOworICAgICAgICAgICAgZkNhbGVuZGFyWzBdLnNldChDYWxlbmRhci5EQVRFLCAxKTsKKworICAgICAgICAgICAgcmV0dXJuIGZDYWxlbmRhclswXS5nZXRUaW1lKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgY2FsY3VsYXRlKCkKKyAgICB7CisgICAgICAgIC8vCisgICAgICAgIC8vIEFzIGEgd29ya2Fyb3VuZCBmb3IgSkRLIDEuMS4zIGFuZCBiZWxvdywgd2hlcmUgQ2FsZW5kYXJzIGFuZCB0aW1lCisgICAgICAgIC8vIHpvbmVzIGFyZSBhIGJpdCBnb29meSwgYWx3YXlzIHNldCBteSBjYWxlbmRhcidzIHRpbWUgem9uZSB0byBVVEMuCisgICAgICAgIC8vIFlvdSB3b3VsZCB0aGluayBJIHdvdWxkIHdhbnQgdG8gZG8gdGhpcyBpbiB0aGUgInNldCIgZnVuY3Rpb24gYWJvdmUsCisgICAgICAgIC8vIGJ1dCBpZiBJIGRvIHRoYXQsIHRoZSBwcm9ncmFtIGhhbmdzIHdoZW4gdGhpcyBjbGFzcyBpcyBsb2FkZWQsCisgICAgICAgIC8vIHBlcmhhcHMgZHVlIHRvIHNvbWUgc29ydCBvZiBzdGF0aWMgaW5pdGlhbGl6YXRpb24gb3JkZXJpbmcgcHJvYmxlbS4KKyAgICAgICAgLy8gU28gSSBkbyBpdCBoZXJlIGluc3RlYWQuCisgICAgICAgIC8vCisgICAgICAgIGZDYWxlbmRhclswXS5zZXRUaW1lWm9uZShuZXcgU2ltcGxlVGltZVpvbmUoMCwgIlVUQyIpKTsKKworICAgICAgICBDYWxlbmRhciBjID0gKENhbGVuZGFyKWZDYWxlbmRhclswXS5jbG9uZSgpOyAvLyBUZW1wb3JhcnkgY29weQorCisgICAgICAgIGZTdGFydE9mTW9udGggPSBzdGFydE9mTW9udGgoZlN0YXJ0T2ZNb250aCk7CisKKyAgICAgICAgLy8gU3Rhc2ggYXdheSBhIGZldyB1c2VmdWwgY29uc3RhbnRzIGZvciB0aGlzIGNhbGVuZGFyIGFuZCBkaXNwbGF5CisgICAgICAgIG1pbkRheSA9IGMuZ2V0TWluaW11bShDYWxlbmRhci5EQVlfT0ZfV0VFSyk7CisgICAgICAgIGRheXNJbldlZWsgPSBjLmdldE1heGltdW0oQ2FsZW5kYXIuREFZX09GX1dFRUspIC0gbWluRGF5ICsgMTsKKworICAgICAgICBmaXJzdERheU9mV2VlayA9IENhbGVuZGFyLmdldEluc3RhbmNlKGZEaXNwbGF5TG9jYWxlKS5nZXRGaXJzdERheU9mV2VlaygpOworCisgICAgICAgIC8vIFN0YXNoIGF3YXkgYSBEYXRlIGZvciB0aGUgc3RhcnQgb2YgdGhpcyBtb250aAorCisgICAgICAgIC8vIEZpbmQgdGhlIGRheSBvZiB3ZWVrIG9mIHRoZSBmaXJzdCBkYXkgaW4gdGhpcyBtb250aAorICAgICAgICBjLnNldFRpbWUoZlN0YXJ0T2ZNb250aCk7CisgICAgICAgIGZpcnN0RGF5SW5Nb250aCA9IGMuZ2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLKTsKKyAgICAgICAgaW50IGZpcnN0V2VlayA9IGMuZ2V0KENhbGVuZGFyLldFRUtfT0ZfTU9OVEgpOworCisgICAgICAgIC8vIE5vdyBmaW5kIHRoZSAjIG9mIGRheXMgaW4gdGhlIG1vbnRoCisgICAgICAgIGMucm9sbChDYWxlbmRhci5EQVRFLCBmYWxzZSk7CisgICAgICAgIGRheXNJbk1vbnRoID0gYy5nZXQoQ2FsZW5kYXIuREFURSk7CisKKyAgICAgICAgLy8gRmluYWxseSwgZmluZCB0aGUgZW5kIG9mIHRoZSBtb250aCwgaS5lLiB0aGUgc3RhcnQgb2YgdGhlIG5leHQgb25lCisgICAgICAgIGMucm9sbChDYWxlbmRhci5EQVRFLCB0cnVlKTsKKyAgICAgICAgYy5hZGQoQ2FsZW5kYXIuTU9OVEgsIDEpOworICAgICAgICBjLmdldFRpbWUoKTsgICAgICAgIC8vIEpESyAxLjEuMiBidWcgd29ya2Fyb3VuZAorICAgICAgICBjLmFkZChDYWxlbmRhci5TRUNPTkQsIC0xKTsKKyAgICAgICAgRGF0ZSBlbmRPZk1vbnRoID0gYy5nZXRUaW1lKCk7CisgICAgICAgIGludCBsYXN0V2VlayA9IGMuZ2V0KENhbGVuZGFyLldFRUtfT0ZfTU9OVEgpOworCisgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIGZ1bGwgb3IgcGFydGlhbCB3ZWVrcyBpbiB0aGlzIG1vbnRoLgorICAgICAgICBudW1XZWVrcyA9IGxhc3RXZWVrIC0gZmlyc3RXZWVrICsgMTsKKworICAgICAgICBkaXJ0eSA9IGZhbHNlOworICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBpbnQgWElOU0VUID0gNDsKKyAgICBzdGF0aWMgZmluYWwgaW50IFlJTlNFVCA9IDI7CisKKyAgICAvKgorICAgICAqIENvbnZlcnQgZnJvbSB0aGUgZGF5IG51bWJlciB3aXRoaW4gYSBtb250aCAoMS1iYXNlZCkKKyAgICAgKiB0byB0aGUgY2VsbCBjb29yZGluYXRlcyBvbiB0aGUgY2FsZW5kYXIgKDAtYmFzZWQpCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGRhdGVUb0NlbGwoaW50IGRhdGUsIFBvaW50IHBvcykKKyAgICB7CisgICAgICAgIGludCBjZWxsID0gKGRhdGUgKyBmaXJzdERheUluTW9udGggLSBmaXJzdERheU9mV2VlayAtIG1pbkRheSk7CisgICAgICAgIGlmIChmaXJzdERheUluTW9udGggPCBmaXJzdERheU9mV2VlaykgeworICAgICAgICAgICAgY2VsbCArPSBkYXlzSW5XZWVrOworICAgICAgICB9CisKKyAgICAgICAgcG9zLnggPSBjZWxsICUgZGF5c0luV2VlazsKKyAgICAgICAgcG9zLnkgPSBjZWxsIC8gZGF5c0luV2VlazsKKyAgICB9CisgICAgcHJpdmF0ZSBQb2ludCBkYXRlVG9DZWxsKGludCBkYXRlKSB7CisgICAgICAgIFBvaW50IHAgPSBuZXcgUG9pbnQoMCwwKTsKKyAgICAgICAgZGF0ZVRvQ2VsbChkYXRlLCBwKTsKKyAgICAgICAgcmV0dXJuIHA7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcGFpbnQoR3JhcGhpY3MgZykgeworCisgICAgICAgIGlmIChkaXJ0eSkgeworICAgICAgICAgICAgY2FsY3VsYXRlKCk7CisgICAgICAgIH0KKworICAgICAgICBQb2ludCBjZWxsUG9zID0gbmV3IFBvaW50KDAsMCk7ICAgICAvLyBUZW1wb3JhcnkgdmFyaWFibGUKKyAgICAgICAgRGltZW5zaW9uIGQgPSB0aGlzLmdldFNpemUoKTsKKworICAgICAgICBnLnNldENvbG9yKENvbG9yLmxpZ2h0R3JheSk7CisgICAgICAgIGcuZmlsbFJlY3QoMCwwLGQud2lkdGgsZC5oZWlnaHQpOworCisgICAgICAgIC8vIERyYXcgdGhlIGRheSBuYW1lcyBhdCB0aGUgdG9wCisgICAgICAgIGcuc2V0Q29sb3IoQ29sb3IuYmxhY2spOworICAgICAgICBnLnNldEZvbnQoRGVtb1V0aWxpdHkubGFiZWxGb250KTsKKyAgICAgICAgRm9udE1ldHJpY3MgZm0gPSBnLmdldEZvbnRNZXRyaWNzKCk7CisgICAgICAgIGludCBsYWJlbEhlaWdodCA9IGZtLmdldEhlaWdodCgpICsgWUlOU0VUICogMjsKKworICAgICAgICBpbnQgdiA9IGZtLmdldEFzY2VudCgpICsgWUlOU0VUOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGRheXNJbldlZWs7IGkrKykgeworICAgICAgICAgICAgaW50IGRheU51bSA9IChpICsgbWluRGF5ICsgZmlyc3REYXlPZldlZWsgLSAyKSAlIGRheXNJbldlZWsgKyAxOworICAgICAgICAgICAgU3RyaW5nIGRheU5hbWUgPSBmU3ltYm9sc1swXS5nZXRXZWVrZGF5cygpW2RheU51bV07CisKKworICAgICAgICAgICAgZG91YmxlIGg7CisgICAgICAgICAgICBpZiAobGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAgICAgICBoID0gZC53aWR0aCooaSArIDAuNSkgLyBkYXlzSW5XZWVrOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBoID0gZC53aWR0aCooZGF5c0luV2VlayAtIGkgLSAwLjUpIC8gZGF5c0luV2VlazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGggLT0gZm0uc3RyaW5nV2lkdGgoZGF5TmFtZSkgLyAyOworCisgICAgICAgICAgICBnLmRyYXdTdHJpbmcoZGF5TmFtZSwgKGludCloLCB2KTsKKyAgICAgICAgfQorCisgICAgICAgIGRvdWJsZSBjZWxsSGVpZ2h0ID0gKGQuaGVpZ2h0IC0gbGFiZWxIZWlnaHQgLSAxKSAvIG51bVdlZWtzOworICAgICAgICBkb3VibGUgY2VsbFdpZHRoID0gKGRvdWJsZSkoZC53aWR0aCAtIDEpIC8gZGF5c0luV2VlazsKKworICAgICAgICAvLyBEcmF3IGEgd2hpdGUgYmFja2dyb3VuZCBpbiB0aGUgcGFydCBvZiB0aGUgY2FsZW5kYXIKKyAgICAgICAgLy8gdGhhdCBkaXNwbGF5cyB0aGlzIG1vbnRoLgorICAgICAgICAvLyBGaXJzdCBmaWd1cmUgb3V0IGhvdyBtdWNoIG9mIHRoZSBmaXJzdCB3ZWVrIHNob3VsZCBiZSBzaGFkZWQuCisgICAgICAgIHsKKyAgICAgICAgICAgIGcuc2V0Q29sb3IoQ29sb3Iud2hpdGUpOworICAgICAgICAgICAgZGF0ZVRvQ2VsbCgxLCBjZWxsUG9zKTsKKyAgICAgICAgICAgIGludCB3aWR0aCA9IChpbnQpKGNlbGxQb3MueCpjZWxsV2lkdGgpOyAgLy8gV2lkdGggb2YgdW5zaGFkZWQgYXJlYQorCisgICAgICAgICAgICBpZiAobGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAgICAgICBnLmZpbGxSZWN0KChpbnQpKHdpZHRoKSwgbGFiZWxIZWlnaHQgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZC53aWR0aCAtIHdpZHRoLCAoaW50KWNlbGxIZWlnaHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBnLmZpbGxSZWN0KDAsIGxhYmVsSGVpZ2h0ICwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGQud2lkdGggLSB3aWR0aCwgKGludCljZWxsSGVpZ2h0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQWxsIG9mIHRoZSBpbnRlcm1lZGlhdGUgd2Vla3MgZ2V0IHNoYWRlZCBjb21wbGV0ZWx5CisgICAgICAgICAgICBnLmZpbGxSZWN0KDAsIChpbnQpKGxhYmVsSGVpZ2h0ICsgY2VsbEhlaWdodCksCisgICAgICAgICAgICAgICAgICAgICAgICBkLndpZHRoLCAoaW50KShjZWxsSGVpZ2h0ICogKG51bVdlZWtzIC0gMikpKTsKKworICAgICAgICAgICAgLy8gTm93IGZpZ3VyZSBvdXQgdGhlIGxhc3Qgd2Vlay4KKyAgICAgICAgICAgIGRhdGVUb0NlbGwoZGF5c0luTW9udGgsIGNlbGxQb3MpOworICAgICAgICAgICAgd2lkdGggPSAoaW50KSgoY2VsbFBvcy54KzEpKmNlbGxXaWR0aCk7ICAvLyBXaWR0aCBvZiBzaGFkZWQgYXJlYQorCisgICAgICAgICAgICBpZiAobGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAgICAgICBnLmZpbGxSZWN0KDAsIChpbnQpKGxhYmVsSGVpZ2h0ICsgKG51bVdlZWtzLTEpICogY2VsbEhlaWdodCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgKGludCljZWxsSGVpZ2h0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZy5maWxsUmVjdChkLndpZHRoIC0gd2lkdGgsIChpbnQpKGxhYmVsSGVpZ2h0ICsgKG51bVdlZWtzLTEpICogY2VsbEhlaWdodCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCwgKGludCljZWxsSGVpZ2h0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICB9CisgICAgICAgIC8vIERyYXcgdGhlIFgvWSBncmlkIGxpbmVzCisgICAgICAgIGcuc2V0Q29sb3IoQ29sb3IuYmxhY2spOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBudW1XZWVrczsgaSsrKSB7CisgICAgICAgICAgICBpbnQgeSA9IChpbnQpKGxhYmVsSGVpZ2h0ICsgaSAqIGNlbGxIZWlnaHQpOworICAgICAgICAgICAgZy5kcmF3TGluZSgwLCB5LCBkLndpZHRoIC0gMSwgeSk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gZGF5c0luV2VlazsgaSsrKSB7CisgICAgICAgICAgICBpbnQgeCA9IChpbnQpKGkgKiBjZWxsV2lkdGgpOworICAgICAgICAgICAgZy5kcmF3TGluZSh4LCBsYWJlbEhlaWdodCwgeCwgZC5oZWlnaHQgLSAxKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE5vdyBsb29wIHRocm91Z2ggYWxsIG9mIHRoZSBkYXlzIGluIHRoZSBtb250aCwgZmlndXJlIG91dCB3aGVyZQorICAgICAgICAvLyB0aGV5IGdvIGluIHRoZSBncmlkLCBhbmQgZHJhdyB0aGUgZGF5ICMgZm9yIGVhY2ggb25lCisKKyAgICAgICAgLy8gRmlndXJlIG91dCB0aGUgZGF0ZSBvZiB0aGUgZmlyc3QgY2VsbCBpbiB0aGUgY2FsZW5kYXIgZGlzcGxheQorICAgICAgICBpbnQgY2VsbCA9ICgxICsgZmlyc3REYXlJbk1vbnRoIC0gZmlyc3REYXlPZldlZWsgLSBtaW5EYXkpOworICAgICAgICBpZiAoZmlyc3REYXlJbk1vbnRoIDwgZmlyc3REYXlPZldlZWspIHsKKyAgICAgICAgICAgIGNlbGwgKz0gZGF5c0luV2VlazsKKyAgICAgICAgfQorCisgICAgICAgIENhbGVuZGFyIGMgPSAoQ2FsZW5kYXIpZkNhbGVuZGFyWzBdLmNsb25lKCk7CisgICAgICAgIGMuc2V0VGltZShmU3RhcnRPZk1vbnRoKTsKKyAgICAgICAgYy5hZGQoQ2FsZW5kYXIuREFURSwgLWNlbGwpOworCisgICAgICAgIFN0cmluZ0J1ZmZlciBidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAgICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgbnVtV2Vla3M7IHJvdysrKSB7CisgICAgICAgICAgICBmb3IgKGludCBjb2wgPSAwOyBjb2wgPCBkYXlzSW5XZWVrOyBjb2wrKykgeworCisgICAgICAgICAgICAgICAgZy5zZXRGb250KERlbW9VdGlsaXR5Lm51bWJlckZvbnQpOworICAgICAgICAgICAgICAgIGcuc2V0Q29sb3IoQ29sb3IuYmxhY2spOworICAgICAgICAgICAgICAgIGZtID0gZy5nZXRGb250TWV0cmljcygpOworCisgICAgICAgICAgICAgICAgaW50IGNlbGx4OworICAgICAgICAgICAgICAgIGlmIChsZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgICAgICAgICBjZWxseCA9IChpbnQpKChjb2wpICogY2VsbFdpZHRoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjZWxseCA9IChpbnQpKChkYXlzSW5XZWVrIC0gY29sIC0gMSkgKiBjZWxsV2lkdGgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGludCBjZWxseSA9IChpbnQpKHJvdyAqIGNlbGxIZWlnaHQgKyBsYWJlbEhlaWdodCk7CisKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDI7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBmQ2FsZW5kYXJbaV0uc2V0VGltZShjLmdldFRpbWUoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaW50IGRhdGUgPSBmQ2FsZW5kYXJbaV0uZ2V0KENhbGVuZGFyLkRBVEUpOworICAgICAgICAgICAgICAgICAgICBidWZmZXIuc2V0TGVuZ3RoKDApOworICAgICAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGRhdGUpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGF5TnVtID0gYnVmZmVyLnRvU3RyaW5nKCk7CisKKyAgICAgICAgICAgICAgICAgICAgaW50IHg7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gY2VsbHggKyAoaW50KWNlbGxXaWR0aCAtIFhJTlNFVCAtIGZtLnN0cmluZ1dpZHRoKGRheU51bSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB4ID0gY2VsbHggKyBYSU5TRVQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaW50IHkgPSBjZWxseSArICsgZm0uZ2V0QXNjZW50KCkgKyBZSU5TRVQgKyBpICogZm0uZ2V0SGVpZ2h0KCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZDb2xvcltpXSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnLnNldENvbG9yKGZDb2xvcltpXSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZy5kcmF3U3RyaW5nKGRheU51bSwgeCwgeSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGUgPT0gMSB8fCByb3cgPT0gMCAmJiBjb2wgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZy5zZXRGb250KERlbW9VdGlsaXR5Lm51bWJlckZvbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG1vbnRoID0gZlN5bWJvbHNbaV0uZ2V0TW9udGhzKClbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZDYWxlbmRhcltpXS5nZXQoQ2FsZW5kYXIuTU9OVEgpXTsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGNlbGx4ICsgWElOU0VUOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gY2VsbHggKyAoaW50KWNlbGxXaWR0aCAtIFhJTlNFVCAtIGZtLnN0cmluZ1dpZHRoKG1vbnRoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGcuZHJhd1N0cmluZyhtb250aCwgeCwgeSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjLmFkZChDYWxlbmRhci5EQVRFLCAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEltcG9ydGFudCBzdGF0ZSB2YXJpYWJsZXMKKyAgICBwcml2YXRlIENhbGVuZGFyW10gICAgICAgICAgZkNhbGVuZGFyID0gbmV3IENhbGVuZGFyWzRdOworICAgIHByaXZhdGUgQ29sb3JbXSAgICAgICAgICAgICBmQ29sb3IgPSBuZXcgQ29sb3JbNF07CisKKyAgICBwcml2YXRlIExvY2FsZSAgICAgICAgICAgICAgZkRpc3BsYXlMb2NhbGU7CisgICAgcHJpdmF0ZSBEYXRlRm9ybWF0U3ltYm9sc1tdIGZTeW1ib2xzID0gbmV3IERhdGVGb3JtYXRTeW1ib2xzWzRdOworCisgICAgcHJpdmF0ZSBEYXRlICAgICAgICAgICAgICAgIGZTdGFydE9mTW9udGggPSBuZXcgRGF0ZSgpOyAgICAgLy8gMDA6MDA6MDAgb24gZmlyc3QgZGF5IG9mIG1vbnRoCisKKyAgICAvLyBDYWNoZWQgY2FsY3VsYXRpb25zIHRvIG1ha2UgZHJhd2luZyBmYXN0ZXIuCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgaW50ICAgICAgIG1pbkRheTsgICAgICAgICAgIC8vIE1pbmltdW0gbGVnYWwgZGF5ICMKKyAgICBwcml2YXRlIHRyYW5zaWVudCBpbnQgICAgICAgZGF5c0luV2VlazsgICAgICAgLy8gIyBvZiBkYXlzIGluIGEgd2VlaworICAgIHByaXZhdGUgdHJhbnNpZW50IGludCAgICAgICBmaXJzdERheU9mV2VlazsgICAvLyBGaXJzdCBkYXkgdG8gZGlzcGxheSBpbiB3ZWVrCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgaW50ICAgICAgIG51bVdlZWtzOyAgICAgICAgIC8vICMgZnVsbCBvciBwYXJ0aWFsIHdlZWtzIGluIG1vbnRoCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgaW50ICAgICAgIGRheXNJbk1vbnRoOyAgICAgIC8vICMgZGF5cyBpbiB0aGlzIG1vbnRoCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgaW50ICAgICAgIGZpcnN0RGF5SW5Nb250aDsgIC8vIERheSBvZiB3ZWVrIG9mIGZpcnN0IGRheSBpbiBtb250aAorICAgIHByaXZhdGUgdHJhbnNpZW50IGJvb2xlYW4gICBsZWZ0VG9SaWdodDsKKworICAgIHByaXZhdGUgdHJhbnNpZW50IGJvb2xlYW4gZGlydHkgPSB0cnVlOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vZGVtby9jYWxlbmRhci9wYWNrYWdlLmh0bWwgYi9zcmMvY29tL2libS9kZW1vL2NhbGVuZGFyL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41Mjc1Yjg5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vZGVtby9jYWxlbmRhci9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzwhLS0gIENvcHlyaWdodCAoQykgMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2RlbW8vY2FsZW5kYXIvQXR0aWMvcGFja2FnZS5odG1sLHYgJAorICAkUmV2aXNpb246IDEuMSAkCisgICREYXRlOiAyMDAwLzAzLzE1IDA2OjI4OjQ4ICQKKy0tPgorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0id2hpdGUiPgorQ2FsZW5kYXIgZGVtbyBhcHBsaWNhdGlvbnMgaW5jbHVkaW5nIGRhdGUvdGltZSBhcml0aG1ldGljLgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2RlbW8vaG9saWRheS9Ib2xpZGF5Qm9yZGVyUGFuZWwuamF2YSBiL3NyYy9jb20vaWJtL2RlbW8vaG9saWRheS9Ib2xpZGF5Qm9yZGVyUGFuZWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kODM4MTQyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vZGVtby9ob2xpZGF5L0hvbGlkYXlCb3JkZXJQYW5lbC5qYXZhCkBAIC0wLDAgKzEsNTUwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ny0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9kZW1vL2hvbGlkYXkvQXR0aWMvSG9saWRheUJvcmRlclBhbmVsLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDMvMTAgMDM6NDc6NDMgJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmRlbW8uaG9saWRheTsKKworaW1wb3J0IGNvbS5pYm0uZGVtby4qOworaW1wb3J0IGphdmEuYXd0Lio7CisKKy8qKgorICogVmFyaW91cyBncmFwaGljYWwgYm9yZGVycy4gVGhlIGJvcmRlciBpdHNlbGYgaXMgYSBQYW5lbCBzbyB0aGF0IGl0IGNhbgorICogY29udGFpbiBvdGhlciBDb21wb25lbnRzIChpLmUuIGl0IGJvcmRlcnMgc29tZXRoaW5nKS4gWW91IHVzZSB0aGUKKyAqIEhvbGlkYXlCb3JkZXJQYW5lbCBsaWtlIGFueSBvdGhlciBQYW5lbDogeW91IHNldCB0aGUgbGF5b3V0IHRoYXQgeW91IHByZWZlciBhbmQKKyAqIGFkZCBDb21wb25lbnRzIHRvIGl0LiBCZXdhcmUgdGhhdCBhIG51bGwgbGF5b3V0IGRvZXMgbm90IG9iZXkgdGhlIGluc2V0cworICogb2YgdGhlIHBhbmVsIHNvIGlmIHlvdSB1c2UgbnVsbCBsYXlvdXRzLCBhZGp1c3QgeW91ciBtZWFzdXJlbWVudHMgdG8KKyAqIGhhbmRsZSB0aGUgYm9yZGVyIGJ5IGNhbGxpbmcgaW5zZXRzKCkuCisgKgorICogQGF1dGhvciAgQW5keSBDbGFyaywgVGFsaWdlbnQgSW5jLgorICogQHZlcnNpb24gMS4wCisgKi8KK3B1YmxpYyBjbGFzcyBIb2xpZGF5Qm9yZGVyUGFuZWwgZXh0ZW5kcyBQYW5lbCB7CisgICAgLy8gQ29uc3RhbnRzCisKKyAgICAvKiogU29saWQgYm9yZGVyLiAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFNPTElEID0gMDsKKyAgICAvKiogQSByYWlzZWQgYm9yZGVyLiAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFJBSVNFRCA9IDE7CisgICAgLyoqIEEgbG93ZXJlZCBib3JkZXIuICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgTE9XRVJFRCA9IDI7CisgICAgLyoqIEFuIGV0Y2hlZCBpbiBib3JkZXIuICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgSU4gPSAzOworICAgIC8qKiBBbiBldGNoZWQgb3V0IGJvcmRlci4gKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBPVVQgPSA0OworCisgICAgLyoqIExlZnQgYWxpZ25tZW50LiAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IExFRlQgPSAwOworICAgIC8qKiBDZW50ZXIgYWxpZ25tZW50LiAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IENFTlRFUiA9IDE7CisgICAgLyoqIFJpZ2h0IGFsaWdubWVudC4gKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBSSUdIVCA9IDI7CisKKyAgICAvKiogRGVmYXVsdCBzdHlsZSAoSU4pLiAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IERFRkFVTFRfU1RZTEUgPSBJTjsKKyAgICAvKiogRGVmYXVsdCB0aGlja25lc3MgKDEwKS4gKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBERUZBVUxUX1RISUNLTkVTUyA9IDEwOworICAgIC8qKiBEZWZhdWx0IHRoaWNrbmVzcyBmb3Igc29saWQgYm9yZGVycyAoNCkuICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgREVGQVVMVF9TT0xJRF9USElDS05FU1MgPSA0OworICAgIC8qKiBEZWZhdWx0IHRoaWNrbmVzcyBmb3IgcmFpc2VkIGJvcmRlcnMgKDIpLiAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IERFRkFVTFRfUkFJU0VEX1RISUNLTkVTUyA9IDI7CisgICAgLyoqIERlZmF1bHQgdGhpY2tuZXNzIGZvciBsb3dlcmVkIGJvcmRlcnMgKDIpLiAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IERFRkFVTFRfTE9XRVJFRF9USElDS05FU1MgPSAyOworICAgIC8qKiBEZWZhdWx0IHRoaWNrbmVzcyBmb3IgZXRjaGVkLWluIGJvcmRlcnMgKDEwKS4gKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBERUZBVUxUX0lOX1RISUNLTkVTUyA9IDEwOworICAgIC8qKiBEZWZhdWx0IHRoaWNrbmVzcyBmb3IgZXRjaGVkLW91dCBib3JkZXJzICgxMCkuICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgREVGQVVMVF9PVVRfVEhJQ0tORVNTID0gMTA7CisgICAgLyoqIERlZmF1bHQgZ2FwIGJldHdlZW4gYm9yZGVyIGFuZCBjb250YWluZWQgY29tcG9uZW50ICg1KS4gKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBERUZBVUxUX0dBUCA9IDU7CisgICAgLyoqIERlZmF1bHQgY29sb3IgKGJsYWNrKS4gQXBwbGllcyB0byBTT0xJRCBhbmQgZXRjaGVkIGJvcmRlcnMuICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBDb2xvciBERUZBVUxUX0NPTE9SID0gQ29sb3IuYmxhY2s7CisKKyAgICAvKiogRGVmYXVsdCBmb250IChUaW1lc1JvbWFuLFBMQUlOLDE0KS4gT25seSBhcHBsaWVzIHRvIGV0Y2hlZCBib3JkZXJzLiAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgRm9udCBERUZBVUxUX0ZPTlQgPSBuZXcgRm9udCgiVGltZXNSb21hbiIsIEZvbnQuUExBSU4sIDE0KTsKKyAgICAvKiogRGVmYXVsdCBhbGlnbm1lbnQgKExFRlQpLiBPbmx5IGFwcGxpZXMgdG8gZXRjaGVkIGJvcmRlcnMuICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgREVGQVVMVF9BTElHTk1FTlQgPSBMRUZUOworCisgICAgLy8gRGF0YQorICAgIHByaXZhdGUgaW50IHN0eWxlOworICAgIHByaXZhdGUgaW50IHRoaWNrbmVzczsKKyAgICBwcml2YXRlIGludCBnYXA7CisgICAgcHJpdmF0ZSBDb2xvciBjb2xvcjsKKworICAgIHByaXZhdGUgRm9udCBmb250OworICAgIHByaXZhdGUgU3RyaW5nIHRleHQ7CisgICAgcHJpdmF0ZSBpbnQgYWxpZ25tZW50OworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IuIE1ha2VzIGRlZmF1bHQgYm9yZGVyLgorICAgICAqLworICAgIHB1YmxpYyBIb2xpZGF5Qm9yZGVyUGFuZWwoKSB7CisKKyAgICAgICAgLy8gaW5pdGlhbGl6ZSBkYXRhCisgICAgICAgIHN0eWxlICAgICAgID0gREVGQVVMVF9TVFlMRTsKKyAgICAgICAgdGhpY2tuZXNzICAgPSBERUZBVUxUX1RISUNLTkVTUzsKKyAgICAgICAgZ2FwICAgICAgICAgPSBERUZBVUxUX0dBUDsKKyAgICAgICAgY29sb3IgICAgICAgPSBERUZBVUxUX0NPTE9SOworCisgICAgICAgIHRleHQgICAgICAgID0gbnVsbDsKKyAgICAgICAgZm9udCAgICAgICAgPSBERUZBVUxUX0ZPTlQ7CisgICAgICAgIGFsaWdubWVudCAgID0gREVGQVVMVF9BTElHTk1FTlQ7CisKKyAgICAgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IuIE1ha2VzIGFuIGV0Y2hlZCBJTiBib3JkZXIgd2l0aCBnaXZlbiB0ZXh0IGNhcHRpb24uCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGV4dCAgVGV4dCBjYXB0aW9uCisgICAgICovCisgICAgcHVibGljIEhvbGlkYXlCb3JkZXJQYW5lbChTdHJpbmcgdGV4dCkgeworICAgICAgICB0aGlzKCk7CisKKyAgICAgICAgc3R5bGUgPSBJTjsKKyAgICAgICAgdGhpcy50ZXh0ID0gdGV4dDsKKyAgICAgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IuIE1ha2VzIFNPTElEIGJvcmRlciB3aXRoIGNvbG9yIGFuZCB0aGlja25lc3MgZ2l2ZW4uCisgICAgICoKKyAgICAgKiBAcGFyYW0gY29sb3IgICAgIFRoZSBjb2xvciBmb3IgdGhlIGJvcmRlci4KKyAgICAgKiBAcGFyYW0gdGhpY2tuZXNzIFRoZSB0aGlja25lc3Mgb2YgdGhlIGJvcmRlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgSG9saWRheUJvcmRlclBhbmVsKENvbG9yIGNvbG9yLCBpbnQgdGhpY2tuZXNzKSB7CisgICAgICAgIHRoaXMoKTsKKworICAgICAgICBzdHlsZSA9IFNPTElEOworICAgICAgICB0aGlzLmNvbG9yID0gY29sb3I7CisgICAgICAgIHRoaXMudGhpY2tuZXNzID0gdGhpY2tuZXNzOworICAgICAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3Rvci4gTWFrZXMgYSBib3JkZXIgb2YgdGhlIGdpdmVuIHN0eWxlIHdpdGggdGhlIGRlZmF1bHQKKyAgICAgKiB0aGlja25lc3MgZm9yIHRoYXQgc3R5bGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc3R5bGUgVGhlIHN0eWxlIGZvciB0aGlzIGJvcmRlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgSG9saWRheUJvcmRlclBhbmVsKGludCBzdHlsZSkgeworICAgICAgICB0aGlzKCk7CisKKyAgICAgICAgLy8gc2V0IHRoaWNrbmVzcyBhcHByb3ByaWF0ZSB0byB0aGlzIHN0eWxlCisgICAgICAgIGludCB0aGlja25lc3M7CisgICAgICAgIHN3aXRjaCAoc3R5bGUpIHsKKyAgICAgICAgICAgIGNhc2UgU09MSUQ6IHRoaWNrbmVzcyA9IERFRkFVTFRfU09MSURfVEhJQ0tORVNTOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUkFJU0VEOiB0aGlja25lc3MgPSBERUZBVUxUX1JBSVNFRF9USElDS05FU1M7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBMT1dFUkVEOiB0aGlja25lc3MgPSBERUZBVUxUX0xPV0VSRURfVEhJQ0tORVNTOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSU46IHRoaWNrbmVzcyA9IERFRkFVTFRfSU5fVEhJQ0tORVNTOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgT1VUOiB0aGlja25lc3MgPSBERUZBVUxUX09VVF9USElDS05FU1M7IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aGlja25lc3MgPSBERUZBVUxUX1RISUNLTkVTUzsKKyAgICAgICAgICAgIH0KKworICAgICAgICB0aGlzLnN0eWxlID0gc3R5bGU7CisgICAgICAgIHRoaXMudGhpY2tuZXNzID0gdGhpY2tuZXNzOworICAgICAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3Rvci4gTWFrZXMgYm9yZGVyIHdpdGggZ2l2ZW4gc3R5bGUgYW5kIHRoaWNrbmVzcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzdHlsZSAgICAgVGhlIHN0eWxlIGZvciB0aGlzIGJvcmRlci4KKyAgICAgKiBAcGFyYW0gdGhpY2tuZXNzIFRoZSB0aGlja25lc3MgZm9yIHRoaXMgYm9yZGVyLgorICAgICAqLworICAgIHB1YmxpYyBIb2xpZGF5Qm9yZGVyUGFuZWwoaW50IHN0eWxlLCBpbnQgdGhpY2tuZXNzKSB7CisgICAgICAgIHRoaXMoKTsKKworICAgICAgICB0aGlzLnN0eWxlID0gc3R5bGU7CisgICAgICAgIHRoaXMudGhpY2tuZXNzID0gdGhpY2tuZXNzOworICAgICAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBpbnNldHMgb2YgdGhpcyBwYW5lbC4uCisgICAgICovCisgICAgcHVibGljIEluc2V0cyBpbnNldHMoKSB7CisgICAgICAgIGludCBhZGp1c3RtZW50ID0gMDsKKworICAgICAgICAvLyBhZGp1c3QgZm9yIHRleHQgc3RyaW5nCisgICAgICAgIGlmIChzdHlsZSA9PSBJTiB8fCBzdHlsZSA9PSBPVVQpIHsKKyAgICAgICAgICAgIGlmICh0ZXh0ICE9IG51bGwgJiYgdGV4dC5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAvLyBzZXQgZm9udCBhbmQgZ2V0IGluZm8KKyAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCA9IGdldEdyYXBoaWNzKCkuZ2V0Rm9udE1ldHJpY3MoZm9udCkuZ2V0SGVpZ2h0KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChoZWlnaHQgPiB0aGlja25lc3MpCisgICAgICAgICAgICAgICAgICAgICAgICBhZGp1c3RtZW50ID0gaGVpZ2h0IC0gdGhpY2tuZXNzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIG5vdGhpbmc6IGp1c3QgaW4gY2FzZSB0aGVyZSBpcyBubyBncmFwaGljcyBjb250ZXh0CisgICAgICAgICAgICAgICAgICAgIC8vICAgYXQgdGhlIGJlZ2lubmluZy4KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAvLyByZXR1cm4gYXBwcm9wcmlhdGUgaW5zZXRzCisgICAgICAgIGludCBkaXN0ID0gdGhpY2tuZXNzICsgZ2FwOworICAgICAgICByZXR1cm4gbmV3IEluc2V0cyhkaXN0ICsgYWRqdXN0bWVudCwgZGlzdCwgZGlzdCwgZGlzdCk7CisgICAgICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHN0eWxlIG9mIHRoZSBib3JkZXIKKyAgICAgKgorICAgICAqIEBwYXJhbSBzdHlsZSBUaGUgbmV3IHN0eWxlLgorICAgICAqLworICAgIHB1YmxpYyBIb2xpZGF5Qm9yZGVyUGFuZWwgc2V0U3R5bGUoaW50IHN0eWxlKSB7CisKKyAgICAgICAgLy8gc2V0IHRoZSBzdHlsZSBhbmQgcmUtbGF5b3V0IHRoZSBwYW5lbAorICAgICAgICB0aGlzLnN0eWxlID0gc3R5bGU7CisgICAgICAgIGxheW91dCgpOworICAgICAgICByZXBhaW50KCk7CisKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIHN0eWxlIG9mIHRoZSBib3JkZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFN0eWxlKCkgeworCisgICAgICAgIHJldHVybiBzdHlsZTsKKyAgICAgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgdGhpY2tuZXNzIG9mIHRoZSBib3JkZXIuCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGhpY2tuZXNzIFRoZSBuZXcgdGhpY2tuZXNzCisgICAgICovCisgICAgcHVibGljIEhvbGlkYXlCb3JkZXJQYW5lbCBzZXRUaGlja25lc3MoaW50IHRoaWNrbmVzcykgeworCisgICAgICAgIGlmICh0aGlja25lc3MgPiAwKSB7CisgICAgICAgICAgICB0aGlzLnRoaWNrbmVzcyA9IHRoaWNrbmVzczsKKyAgICAgICAgICAgIGxheW91dCgpOworICAgICAgICAgICAgcmVwYWludCgpOworICAgICAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSB0aGlja25lc3Mgb2YgdGhlIGJvcmRlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFRoaWNrbmVzcygpIHsKKworICAgICAgICByZXR1cm4gdGhpY2tuZXNzOworICAgICAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBnYXAgYmV0d2VlbiB0aGUgYm9yZGVyIGFuZCB0aGUgY29udGFpbmVkIENvbXBvbmVudC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBnYXAgVGhlIG5ldyBnYXAsIGluIHBpeGVscy4KKyAgICAgKi8KKyAgICBwdWJsaWMgSG9saWRheUJvcmRlclBhbmVsIHNldEdhcChpbnQgZ2FwKSB7CisKKyAgICAgICAgaWYgKGdhcCA+IC0xKSB7CisgICAgICAgICAgICB0aGlzLmdhcCA9IGdhcDsKKyAgICAgICAgICAgIGxheW91dCgpOworICAgICAgICAgICAgcmVwYWludCgpOworICAgICAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBnYXAgYmV0d2VlbiB0aGUgYm9yZGVyIGFuZCB0aGUgY29udGFpbmVkIENvbXBvbmVudC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEdhcCgpIHsKKworICAgICAgICByZXR1cm4gZ2FwOworICAgICAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBjdXJyZW50IGNvbG9yIGZvciBTT0xJRCBib3JkZXJzIGFuZCB0aGUgY2FwdGlvbiB0ZXh0CisgICAgICogY29sb3IgZm9yIGV0Y2hlZCBib3JkZXJzLgorICAgICAqCisgICAgICogQHBhcmFtIGNvbG9yIFRoZSBuZXcgY29sb3IuCisgICAgICovCisgICAgcHVibGljIEhvbGlkYXlCb3JkZXJQYW5lbCBzZXRDb2xvcihDb2xvciBjb2xvcikgeworCisgICAgICAgIHRoaXMuY29sb3IgPSBjb2xvcjsKKyAgICAgICAgaWYgKHN0eWxlID09IFNPTElEIHx8IHN0eWxlID09IElOIHx8IHN0eWxlID09IE9VVCkKKyAgICAgICAgICAgIHJlcGFpbnQoKTsKKworICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgY3VycmVudCBjb2xvciBmb3IgU09MSUQgYm9yZGVycyBhbmQgdGhlIGNhcHRpb24KKyAgICAgKiB0ZXh0IGNvbG9yIGZvciBldGNoZWQgYm9yZGVycy4KKyAgICAgKi8KKyAgICBwdWJsaWMgQ29sb3IgZ2V0Q29sb3IoKSB7CisKKyAgICAgICAgcmV0dXJuIGNvbG9yOworICAgICAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBmb250LiBPbmx5IGFwcGxpZXMgdG8gZXRjaGVkIGJvcmRlcnMuCisgICAgICovCisgICAgcHVibGljIEhvbGlkYXlCb3JkZXJQYW5lbCBzZXRUZXh0Rm9udChGb250IGZvbnQpIHsKKworICAgICAgICAvLyBzZXQgZm9udAorICAgICAgICBpZiAoZm9udCAhPSBudWxsKSB7CisgICAgICAgICAgICB0aGlzLmZvbnQgPSBmb250OworICAgICAgICAgICAgaWYgKHN0eWxlID09IElOIHx8IHN0eWxlID09IE9VVCkgeworICAgICAgICAgICAgICAgIGxheW91dCgpOworICAgICAgICAgICAgICAgIHJlcGFpbnQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGZvbnQgb2YgdGhlIHRleHQuIE9ubHkgYXBwbGllcyB0byBldGNoZWQgYm9yZGVycy4KKyAgICAgKi8KKyAgICBwdWJsaWMgRm9udCBnZXRUZXh0Rm9udCgpIHsKKworICAgICAgICByZXR1cm4gZm9udDsKKyAgICAgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgdGV4dC4gT25seSBhcHBsaWVzIHRvIGV0Y2hlZCBib3JkZXJzLgorICAgICAqCisgICAgICogQHBhcmFtIHRleHQgIFRoZSBuZXcgdGV4dC4KKyAgICAgKi8KKyAgICBwdWJsaWMgSG9saWRheUJvcmRlclBhbmVsIHNldFRleHQoU3RyaW5nIHRleHQpIHsKKworICAgICAgICB0aGlzLnRleHQgPSB0ZXh0OworICAgICAgICBpZiAoc3R5bGUgPT0gSU4gfHwgc3R5bGUgPT0gT1VUKSB7CisgICAgICAgICAgICBsYXlvdXQoKTsKKyAgICAgICAgICAgIHJlcGFpbnQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgdGV4dC4gT25seSBhcHBsaWVzIHRvIGV0Y2hlZCBib3JkZXJzLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0VGV4dCgpIHsKKworICAgICAgICByZXR1cm4gdGV4dDsKKyAgICAgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgdGV4dCBhbGlnbm1lbnQuIE9ubHkgYXBwbGllcyB0byBldGNoZWQgYm9yZGVycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBhbGlnbm1lbnQgVGhlIG5ldyBhbGlnbm1lbnQuCisgICAgICovCisgICAgcHVibGljIEhvbGlkYXlCb3JkZXJQYW5lbCBzZXRBbGlnbm1lbnQoaW50IGFsaWdubWVudCkgeworCisgICAgICAgIHRoaXMuYWxpZ25tZW50ID0gYWxpZ25tZW50OworICAgICAgICBpZiAoc3R5bGUgPT0gSU4gfHwgc3R5bGUgPT0gT1VUKSB7CisgICAgICAgICAgICBsYXlvdXQoKTsKKyAgICAgICAgICAgIHJlcGFpbnQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdGhpczsKKyAgICAgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgdGV4dCBhbGlnbm1lbnQuCisgICAgICovCisgICAgcHVibGljIGludCBnZXRBbGlnbm1lbnQoKSB7CisKKyAgICAgICAgcmV0dXJuIGFsaWdubWVudDsKKyAgICAgICAgfQorCisgICAgLyoqCisgICAgICogUmVwYWludHMgdGhlIGJvcmRlci4KKyAgICAgKgorICAgICAqIEBwYXJhbSBnIFRoZSBncmFwaGljcyBjb250ZXh0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHBhaW50KEdyYXBoaWNzIGcpIHsKKworICAgICAgICAvLyBnZXQgY3VycmVudCBkaW1lbnNpb25zCisgICAgICAgIERpbWVuc2lvbiBzaXplID0gc2l6ZSgpOworICAgICAgICBpbnQgd2lkdGggPSBzaXplLndpZHRoOworICAgICAgICBpbnQgaGVpZ2h0ID0gc2l6ZS5oZWlnaHQ7CisKKyAgICAgICAgLy8gc2V0IGNvbG9ycworICAgICAgICBDb2xvciBsaWdodCA9IGdldEJhY2tncm91bmQoKS5icmlnaHRlcigpLmJyaWdodGVyKCkuYnJpZ2h0ZXIoKTsKKyAgICAgICAgQ29sb3IgZGFyayA9IGdldEJhY2tncm91bmQoKS5kYXJrZXIoKS5kYXJrZXIoKS5kYXJrZXIoKTsKKworICAgICAgICAvLyBEcmF3IGJvcmRlcgorICAgICAgICBzd2l0Y2ggKHN0eWxlKSB7CisgICAgICAgICAgICBjYXNlIFJBSVNFRDogICAgLy8gM0QgQm9yZGVyIChpbiBvciBvdXQpCisgICAgICAgICAgICBjYXNlIExPV0VSRUQ6CisgICAgICAgICAgICAgICAgQ29sb3IgdG9wbGVmdCA9IG51bGw7CisgICAgICAgICAgICAgICAgQ29sb3IgYm90dG9tcmlnaHQgPSBudWxsOworCisgICAgICAgICAgICAgICAgLy8gc2V0IGNvbG9ycworICAgICAgICAgICAgICAgIGlmIChzdHlsZSA9PSBSQUlTRUQpIHsKKyAgICAgICAgICAgICAgICAgICAgdG9wbGVmdCA9IGxpZ2h0OworICAgICAgICAgICAgICAgICAgICBib3R0b21yaWdodCA9IGRhcms7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdG9wbGVmdCA9IGRhcms7CisgICAgICAgICAgICAgICAgICAgIGJvdHRvbXJpZ2h0ID0gbGlnaHQ7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGRyYXcgYm9yZGVyCisgICAgICAgICAgICAgICAgZy5zZXRDb2xvcih0b3BsZWZ0KTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRoaWNrbmVzczsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGcuZHJhd0xpbmUoaSwgaSwgd2lkdGggLSBpIC0gMiwgaSk7CisgICAgICAgICAgICAgICAgICAgIGcuZHJhd0xpbmUoaSwgaSArIDEsIGksIGhlaWdodCAtIGkgLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGcuc2V0Q29sb3IoYm90dG9tcmlnaHQpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGhpY2tuZXNzOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgZy5kcmF3TGluZShpICsgMSwgaGVpZ2h0IC0gaSAtIDEsIHdpZHRoIC0gaSAtIDEsIGhlaWdodCAtIGkgLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgZy5kcmF3TGluZSh3aWR0aCAtIGkgLSAxLCBpLCB3aWR0aCAtIGkgLSAxLCBoZWlnaHQgLSBpIC0gMik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBJTjogICAgLy8gRXRjaGVkIEJvcmRlciAoaW4gb3Igb3V0KQorICAgICAgICAgICAgY2FzZSBPVVQ6CisgICAgICAgICAgICAgICAgaW50IGFkanVzdDEgPSAwOworICAgICAgICAgICAgICAgIGludCBhZGp1c3QyID0gMDsKKworICAgICAgICAgICAgICAgIC8vIHNldCBmb250IGFuZCBnZXQgaW5mbworICAgICAgICAgICAgICAgIEZvbnQgb2xkZm9udCA9IGcuZ2V0Rm9udCgpOworICAgICAgICAgICAgICAgIGcuc2V0Rm9udChmb250KTsKKyAgICAgICAgICAgICAgICBGb250TWV0cmljcyBmbSA9IGcuZ2V0Rm9udE1ldHJpY3MoKTsKKyAgICAgICAgICAgICAgICBpbnQgYXNjZW50ID0gZm0uZ2V0QXNjZW50KCk7CisKKyAgICAgICAgICAgICAgICAvLyBzZXQgYWRqdXN0bWVudAorICAgICAgICAgICAgICAgIGlmIChzdHlsZSA9PSBJTikKKyAgICAgICAgICAgICAgICAgICAgYWRqdXN0MSA9IDE7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBhZGp1c3QyID0gMTsKKworICAgICAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBhZGp1c3RtZW50IGZvciB0ZXh0CisgICAgICAgICAgICAgICAgaW50IGFkanVzdG1lbnQgPSAwOworICAgICAgICAgICAgICAgIGlmICh0ZXh0ICE9IG51bGwgJiYgdGV4dC5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFzY2VudCA+IHRoaWNrbmVzcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkanVzdG1lbnQgPSAoYXNjZW50IC0gdGhpY2tuZXNzKSAvIDI7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFRoZSBhZGp1c3RtZW50IGlzIHRoZXJlIHNvIHRoYXQgd2UgYWx3YXlzIGRyYXcgdGhlCisgICAgICAgICAgICAgICAgLy8gbGlnaHQgcmVjdGFuZ2xlIGZpcnN0LiBPdGhlcndpc2UsIHlvdXIgZXllIHBpY2tzIHVwCisgICAgICAgICAgICAgICAgLy8gdGhlIGRpc2NyZXBhbmN5IHdoZXJlIHRoZSBsaWdodCByZWN0LiBwYXNzZXMgb3ZlcgorICAgICAgICAgICAgICAgIC8vIHRoZSBkYXJrZXIgcmVjdC4KKyAgICAgICAgICAgICAgICBpbnQgeCA9IHRoaWNrbmVzcyAvIDI7CisgICAgICAgICAgICAgICAgaW50IHkgPSB0aGlja25lc3MgLyAyICsgYWRqdXN0bWVudDsKKyAgICAgICAgICAgICAgICBpbnQgdyA9IHdpZHRoIC0gdGhpY2tuZXNzIC0gMTsKKyAgICAgICAgICAgICAgICBpbnQgaCA9IGhlaWdodCAtIHRoaWNrbmVzcyAtIDEgLSBhZGp1c3RtZW50OworCisgICAgICAgICAgICAgICAgLy8gZHJhdyByZWN0YW5nbGVzCisgICAgICAgICAgICAgICAgZy5zZXRDb2xvcihsaWdodCk7CisgICAgICAgICAgICAgICAgZy5kcmF3UmVjdCh4ICsgYWRqdXN0MSwgeSArIGFkanVzdDEsIHcsIGgpOworICAgICAgICAgICAgICAgIGcuc2V0Q29sb3IoZGFyayk7CisgICAgICAgICAgICAgICAgZy5kcmF3UmVjdCh4ICsgYWRqdXN0MiwgeSArIGFkanVzdDIsIHcsIGgpOworCisgICAgICAgICAgICAgICAgLy8gZHJhdyB0ZXh0LCBpZiBhcHBsaWNhYmxlCisgICAgICAgICAgICAgICAgaWYgKHRleHQgIT0gbnVsbCAmJiB0ZXh0Lmxlbmd0aCgpID4gMCkgeworICAgICAgICAgICAgICAgICAgICAvLyBjYWxjdWxhdGUgZHJhd2luZyBhcmVhCisgICAgICAgICAgICAgICAgICAgIGludCBmb250aGVpZ2h0ID0gZm0uZ2V0SGVpZ2h0KCk7CisgICAgICAgICAgICAgICAgICAgIGludCBzdHJ3aWR0aCA9IGZtLnN0cmluZ1dpZHRoKHRleHQpOworCisgICAgICAgICAgICAgICAgICAgIGludCB0ZXh0d2lkdGggPSB3aWR0aCAtIDIgKiAodGhpY2tuZXNzICsgNSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdHJ3aWR0aCA+IHRleHR3aWR0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cndpZHRoID0gdGV4dHdpZHRoOworCisgICAgICAgICAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSBvZmZzZXQgZm9yIGFsaWdubWVudAorICAgICAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0OworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFsaWdubWVudCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBDRU5URVI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gKHdpZHRoIC0gc3Ryd2lkdGgpIC8gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUklHSFQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gd2lkdGggLSBzdHJ3aWR0aCAtIHRoaWNrbmVzcyAtIDU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIExFRlQ6CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiAvLyBhc3N1bWUgbGVmdCBhbGlnbm1lbnQgaWYgaW52YWxpZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHRoaWNrbmVzcyArIDU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXIgZHJhd2luZyBhcmVhIGFuZCBzZXQgY2xpcHBpbmcgcmVnaW9uCisgICAgICAgICAgICAgICAgICAgIGcuY2xlYXJSZWN0KG9mZnNldCAtIDUsIDAsIHN0cndpZHRoICArIDEwLCBmb250aGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgZy5jbGlwUmVjdChvZmZzZXQsIDAsIHN0cndpZHRoLCBmb250aGVpZ2h0KTsKKworICAgICAgICAgICAgICAgICAgICAvLyBkcmF3IHRleHQKKyAgICAgICAgICAgICAgICAgICAgZy5zZXRDb2xvcihjb2xvcik7CisgICAgICAgICAgICAgICAgICAgIGcuZHJhd1N0cmluZyh0ZXh0LCBvZmZzZXQsIGFzY2VudCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gcmVzdG9yZSBvbGQgY2xpcHBpbmcgYXJlYQorICAgICAgICAgICAgICAgICAgICBnLmNsaXBSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBnLnNldEZvbnQob2xkZm9udCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgU09MSUQ6CisgICAgICAgICAgICBkZWZhdWx0OiAvLyBhc3N1bWUgU09MSUQKKyAgICAgICAgICAgICAgICBnLnNldENvbG9yKGNvbG9yKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRoaWNrbmVzczsgaSsrKQorICAgICAgICAgICAgICAgICAgICBnLmRyYXdSZWN0KGksIGksIHdpZHRoIC0gMiAqIGkgLSAxLCBoZWlnaHQgLSAyICogaSAtIDEpOworICAgICAgICAgICAgfQorCisgICAgICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHNldHRpbmdzIG9mIHRoaXMgSG9saWRheUJvcmRlclBhbmVsIGluc3RhbmNlIGFzIGEgc3RyaW5nLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBzdHIgPSBuZXcgU3RyaW5nQnVmZmVyKCJIb2xpZGF5Qm9yZGVyUGFuZWxbIik7CisKKyAgICAgICAgLy8gc3R5bGUKKyAgICAgICAgc3RyLmFwcGVuZCgic3R5bGU9Iik7CisgICAgICAgIHN3aXRjaCAoc3R5bGUpIHsKKyAgICAgICAgICAgIGNhc2UgU09MSUQ6IHN0ci5hcHBlbmQoIlNPTElEIik7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBSQUlTRUQ6IHN0ci5hcHBlbmQoIlJBSVNFRCIpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTE9XRVJFRDogc3RyLmFwcGVuZCgiTE9XRVJFRCIpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSU46IHN0ci5hcHBlbmQoIklOIik7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBPVVQ6IHN0ci5hcHBlbmQoIk9VVCIpOyBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6IHN0ci5hcHBlbmQoInVua25vd24iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgc3RyLmFwcGVuZCgiLCIpOworCisgICAgICAgIC8vIHRoaWNrbmVzcworICAgICAgICBzdHIuYXBwZW5kKCJ0aGlja25lc3M9Iik7CisgICAgICAgIHN0ci5hcHBlbmQodGhpY2tuZXNzKTsKKyAgICAgICAgc3RyLmFwcGVuZCgiLCIpOworCisgICAgICAgIC8vIGdhcAorICAgICAgICBzdHIuYXBwZW5kKCJnYXA9Iik7CisgICAgICAgIHN0ci5hcHBlbmQoZ2FwKTsKKyAgICAgICAgc3RyLmFwcGVuZCgiLCIpOworCisgICAgICAgIC8vIGNvbG9yCisgICAgICAgIHN0ci5hcHBlbmQoY29sb3IpOworICAgICAgICBzdHIuYXBwZW5kKCIsIik7CisKKyAgICAgICAgLy8gZm9udAorICAgICAgICBzdHIuYXBwZW5kKGZvbnQpOworICAgICAgICBzdHIuYXBwZW5kKCIsIik7CisKKyAgICAgICAgLy8gdGV4dAorICAgICAgICBzdHIuYXBwZW5kKCJ0ZXh0PSIpOworICAgICAgICBzdHIuYXBwZW5kKHRleHQpOworICAgICAgICBzdHIuYXBwZW5kKCIsIik7CisKKyAgICAgICAgLy8gYWxpZ25tZW50CisgICAgICAgIHN0ci5hcHBlbmQoImFsaWdubWVudD0iKTsKKyAgICAgICAgc3dpdGNoIChhbGlnbm1lbnQpIHsKKyAgICAgICAgICAgIGNhc2UgTEVGVDogc3RyLmFwcGVuZCgiTEVGVCIpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ0VOVEVSOiBzdHIuYXBwZW5kKCJDRU5URVIiKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFJJR0hUOiBzdHIuYXBwZW5kKCJSSUdIVCIpOyBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6IHN0ci5hcHBlbmQoInVua25vd24iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICBzdHIuYXBwZW5kKCJdIik7CisKKyAgICAgICAgcmV0dXJuIHN0ci50b1N0cmluZygpOworICAgICAgICB9CisKKyAgICB9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2RlbW8vaG9saWRheS9Ib2xpZGF5Q2FsZW5kYXJEZW1vLmphdmEgYi9zcmMvY29tL2libS9kZW1vL2hvbGlkYXkvSG9saWRheUNhbGVuZGFyRGVtby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmIyMWFhY2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9kZW1vL2hvbGlkYXkvSG9saWRheUNhbGVuZGFyRGVtby5qYXZhCkBAIC0wLDAgKzEsNzIwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9kZW1vL2hvbGlkYXkvQXR0aWMvSG9saWRheUNhbGVuZGFyRGVtby5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA1LzEyIDIzOjIxOjMyICQgCisgKiAkUmV2aXNpb246IDEuNSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLmRlbW8uaG9saWRheTsKKworaW1wb3J0IGNvbS5pYm0uZGVtby4qOworaW1wb3J0IGphdmEuYXBwbGV0LkFwcGxldDsKK2ltcG9ydCBqYXZhLmF3dC4qOworLy9pbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgamF2YS5uZXQuKjsKK2ltcG9ydCBqYXZhLmlvLio7CisKKy8vaW1wb3J0IGphdmEudGV4dC5TaW1wbGVEYXRlRm9ybWF0OworaW1wb3J0IGNvbS5pYm0udGV4dC5TaW1wbGVEYXRlRm9ybWF0OworaW1wb3J0IGphdmEudGV4dC5EYXRlRm9ybWF0U3ltYm9sczsKKy8vaW1wb3J0IGphdmEudXRpbC5TaW1wbGVUaW1lWm9uZTsKK2ltcG9ydCBjb20uaWJtLnV0aWwuU2ltcGxlVGltZVpvbmU7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCitpbXBvcnQgY29tLmlibS51dGlsLio7CisKKy8qKgorICogQ2FsZW5kYXJEZW1vIGRlbW9uc3RyYXRlcyBob3cgQ2FsZW5kYXIgd29ya3MuCisgKi8KK3B1YmxpYyBjbGFzcyBIb2xpZGF5Q2FsZW5kYXJEZW1vIGV4dGVuZHMgRGVtb0FwcGxldAoreworICAgIC8qKgorICAgICAqIFRoZSBtYWluIGZ1bmN0aW9uIHdoaWNoIGRlZmluZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBDYWxlbmRhckRlbW8KKyAgICAgKiBhcHBsZXQgd2hlbiBhbiBhcHBsZXQgaXMgc3RhcnRlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJndltdKSB7CisKKyAgICAgICAgbmV3IEhvbGlkYXlDYWxlbmRhckRlbW8oKS5zaG93RGVtbygpOworICAgIH0KKworICAgIC8qIFRoaXMgY3JlYXRlcyBhIENhbGVuZGFyRnJhbWUgZm9yIHRoZSBkZW1vIGFwcGxldC4gKi8KKyAgICBwdWJsaWMgRnJhbWUgY3JlYXRlRGVtb0ZyYW1lKERlbW9BcHBsZXQgYXBwbGV0KSB7CisgICAgICAgIHJldHVybiBuZXcgQ2FsZW5kYXJGcmFtZShhcHBsZXQpOworICAgIH0KKworCS8qKgorCSogQSBGcmFtZSBpcyBhIHRvcC1sZXZlbCB3aW5kb3cgd2l0aCBhIHRpdGxlLiBUaGUgZGVmYXVsdCBsYXlvdXQgZm9yIGEgZnJhbWUKKwkqIGlzIEJvcmRlckxheW91dC4gIFRoZSBDYWxlbmRhckZyYW1lIGNsYXNzIGRlZmluZXMgdGhlIHdpbmRvdyBsYXlvdXQgb2YKKwkqIENhbGVuZGFyRGVtby4KKwkqLworCXByaXZhdGUgc3RhdGljIGNsYXNzIENhbGVuZGFyRnJhbWUgZXh0ZW5kcyBGcmFtZQorCXsKKyAgICAJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGNyZWRpdFN0cmluZyA9ICIiOworCisgICAgCXByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKKworICAgIAlwcml2YXRlIExvY2FsZSBjdXJMb2NhbGUgPSBMb2NhbGUuVVM7CisKKyAgICAJcHJpdmF0ZSBEZW1vQXBwbGV0IGFwcGxldDsKKworICAgIAlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2NhbGVbXSBjYWxlbmRhcnMgPSB7CisgICAgICAgIAkvL25ldyBMb2NhbGUoImRlIiwiQVQiKSwKKyAgICAgICAgCUxvY2FsZS5DQU5BREEsCisgICAgICAgIAlMb2NhbGUuQ0FOQURBX0ZSRU5DSCwKKyAgICAgICAgCUxvY2FsZS5GUkFOQ0UsCisgICAgICAgIAlMb2NhbGUuR0VSTUFOWSwKKyAgICAgICAgCW5ldyBMb2NhbGUoIml3IiwiSUwiKSwKKyAgICAgICAgCW5ldyBMb2NhbGUoImVsIiwiR1IiKSwKKyAgICAgICAgCS8vbmV3IExvY2FsZSgiZXMiLCJNWCIpLAorICAgICAgICAJTG9jYWxlLlVLLAorICAgICAgICAJTG9jYWxlLlVTLAorICAgIAl9OworICAgIAlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2NhbGVbXSBkaXNwbGF5cyA9IHsKKyAgICAgICAgCUxvY2FsZS5DQU5BREEsCisgICAgICAgIAlMb2NhbGUuVUssCisgICAgICAgIAlMb2NhbGUuVVMsCisgICAgICAgIAlMb2NhbGUuRlJBTkNFLAorICAgICAgICAJTG9jYWxlLkNBTkFEQV9GUkVOQ0gsCisgICAgICAgIAkvL25ldyBMb2NhbGUoImRlIiwiQVQiKSwKKyAgICAgICAgCUxvY2FsZS5HRVJNQU4sCisgICAgICAgIAluZXcgTG9jYWxlKCJlbCIsIkdSIiksCisgICAgICAgIAkvL25ldyBMb2NhbGUoIml3IiwiSUwiKSwKKyAgICAgICAgCW5ldyBMb2NhbGUoImVzIiwiTVgiKSwKKyAgICAJfTsKKworICAgIAkvKioKKyAgICAJKiBDb25zdHJ1Y3RzIGEgbmV3IENhbGVuZGFyRnJhbWUgdGhhdCBpcyBpbml0aWFsbHkgaW52aXNpYmxlLgorICAgIAkqLworICAgIAlwdWJsaWMgQ2FsZW5kYXJGcmFtZShEZW1vQXBwbGV0IGFwcGxldCkKKyAgICAJeworICAgICAgICAJc3VwZXIoIkNhbGVuZGFyIERlbW8iKTsKKyAgICAgICAgCXRoaXMuYXBwbGV0ID0gYXBwbGV0OworICAgICAgICAJaW5pdCgpOworICAgICAgICAJc3RhcnQoKTsKKyAgICAJfQorCisgICAgCS8qKgorICAgIAkqIEluaXRpYWxpemVzIHRoZSBhcHBsZXQuIFlvdSBuZXZlciBuZWVkIHRvIGNhbGwgdGhpcyBkaXJlY3RseSwgaXQKKyAgICAJKiBpcyBjYWxsZWQgYXV0b21hdGljYWxseSBieSB0aGUgc3lzdGVtIG9uY2UgdGhlIGFwcGxldCBpcyBjcmVhdGVkLgorICAgIAkqLworICAgIAlwdWJsaWMgdm9pZCBpbml0KCkKKyAgICAJeworICAgICAgICAJLy8gR2V0IEc3IGxvY2FsZXMgb25seSBmb3IgZGVtbyBwdXJwb3NlLiBUbyBnZXQgYWxsIHRoZSBsb2NhbGVzCisgICAgICAgIAkvLyBzdXBwb3J0ZWQsIHN3aXRjaCB0byBjYWxsaW5nIENhbGVuZGFyLmdldEF2YWlsYWJsZUxvY2FsZXMoKS4KKyAgICAgICAgCS8vIGNvbW1lbnRlZAorICAgICAgICAJbG9jYWxlcyA9IGRpc3BsYXlzOworCisgICAgICAgIAlidWlsZEdVSSgpOworICAgIAl9CisKKyAgICAJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAJLy8gcGFja2FnZSBwcml2YXRlCisgICAgCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCXZvaWQgYWRkV2l0aEZvbnQoQ29udGFpbmVyIGNvbnRhaW5lciwgQ29tcG9uZW50IGZvbywgRm9udCBmb250KSB7CisgICAgICAgIAlpZiAoZm9udCAhPSBudWxsKQorICAgICAgICAgICAgCWZvby5zZXRGb250KGZvbnQpOworICAgICAgICAJY29udGFpbmVyLmFkZChmb28pOworICAgIAl9CisKKyAgICAJLyoqCisgICAgCSogQ2FsbGVkIHRvIHN0YXJ0IHRoZSBhcHBsZXQuIFlvdSBuZXZlciBuZWVkIHRvIGNhbGwgdGhpcyBtZXRob2QKKyAgICAJKiBkaXJlY3RseSwgaXQgaXMgY2FsbGVkIHdoZW4gdGhlIGFwcGxldCdzIGRvY3VtZW50IGlzIHZpc2l0ZWQuCisgICAgCSovCisgICAgCXB1YmxpYyB2b2lkIHN0YXJ0KCkKKyAgICAJeworICAgICAgICAJLy8gZG8gbm90aGluZworICAgIAl9CisKKyAgICAJcHJpdmF0ZSBDaG9pY2UgICAgICAgICAgbG9jYWxlTWVudTsKKyAgICAJcHJpdmF0ZSBDaG9pY2UgICAgICAgICAgZGlzcGxheU1lbnU7CisgICAgCXByaXZhdGUgTG9jYWxlW10gICAgICAgIGxvY2FsZXM7CisKKyAgICAJcHJpdmF0ZSBMYWJlbCAgICAgICAgICAgbW9udGhMYWJlbDsKKyAgICAJcHJpdmF0ZSBCdXR0b24gICAgICAgICAgcHJldlllYXI7CisgICAgCXByaXZhdGUgQnV0dG9uICAgICAgICAgIHByZXZNb250aDsKKyAgICAJcHJpdmF0ZSBCdXR0b24gICAgICAgICAgZ290b1RvZGF5OworICAgIAlwcml2YXRlIEJ1dHRvbiAgICAgICAgICBuZXh0TW9udGg7CisgICAgCXByaXZhdGUgQnV0dG9uICAgICAgICAgIG5leHRZZWFyOworICAgIAlwcml2YXRlIENhbGVuZGFyUGFuZWwgICBjYWxlbmRhclBhbmVsOworCisgICAgCXByaXZhdGUgc3RhdGljIGZpbmFsIExvY2FsZSBrRmlyc3RMb2NhbGUgPSBMb2NhbGUuVVM7CisKKyAgICAJcHJpdmF0ZSBzdGF0aWMgdm9pZCBhZGQoQ29udGFpbmVyIGNvbnRhaW5lciwgQ29tcG9uZW50IGNvbXBvbmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAJR3JpZEJhZ0xheW91dCBnLCBHcmlkQmFnQ29uc3RyYWludHMgYykKKyAgICAJeworICAgICAgICAJZy5zZXRDb25zdHJhaW50cyhjb21wb25lbnQsIGMpOworICAgICAgICAJY29udGFpbmVyLmFkZChjb21wb25lbnQpOworICAgIAl9CisKKyAgICAJcHVibGljIHZvaWQgYnVpbGRHVUkoKQorICAgIAl7CisgICAgICAgIAlzZXRCYWNrZ3JvdW5kKERlbW9VdGlsaXR5LmJnQ29sb3IpOworICAgICAgICAJc2V0TGF5b3V0KG5ldyBCb3JkZXJMYXlvdXQoMTAsMTApKTsKKworICAgICAgICAJLy8gTGFiZWwgZm9yIHRoZSBkZW1vJ3MgdGl0bGUKKyAgICAgICAgCUxhYmVsIHRpdGxlTGFiZWwgPSBuZXcgTGFiZWwoIkNhbGVuZGFyIERlbW8iLCBMYWJlbC5DRU5URVIpOworICAgICAgICAJdGl0bGVMYWJlbC5zZXRGb250KERlbW9VdGlsaXR5LnRpdGxlRm9udCk7CisKKyAgICAgICAgCS8vIExhYmVsIGZvciB0aGUgY3VycmVudCBtb250aCBuYW1lCisgICAgICAgIAltb250aExhYmVsID0gbmV3IExhYmVsKCIiLCBMYWJlbC5MRUZUKTsKKyAgICAgICAgCW1vbnRoTGFiZWwuc2V0Rm9udChuZXcgRm9udChEZW1vVXRpbGl0eS50aXRsZUZvbnQuZ2V0TmFtZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCURlbW9VdGlsaXR5LnRpdGxlRm9udC5nZXRTdHlsZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCShEZW1vVXRpbGl0eS50aXRsZUZvbnQuZ2V0U2l6ZSgpICogMykvMikpOworCisgICAgICAgIAkvLyBNYWtlIHRoZSBsb2NhbGUgcG9wdXAgbWVudXMKKyAgICAgICAgCWxvY2FsZU1lbnU9IG5ldyBDaG9pY2UoKTsKKyAgICAgICAgCWludCBzZWxlY3RNZSA9IDA7CisgICAgICAgIAkKKyAgICAgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgY2FsZW5kYXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAJaWYgKGkgPiAwICYmCisgICAgICAgICAgICAgICAgICAgIAljYWxlbmRhcnNbaV0uZ2V0Q291bnRyeSgpLmVxdWFscyhjYWxlbmRhcnNbaS0xXS5nZXRDb3VudHJ5KCkpIHx8CisgICAgICAgICAgICAgICAgCWkgPCBjYWxlbmRhcnMubGVuZ3RoIC0gMSAmJgorICAgICAgICAgICAgICAgICAgICAJY2FsZW5kYXJzW2ldLmdldENvdW50cnkoKS5lcXVhbHMoY2FsZW5kYXJzW2krMV0uZ2V0Q291bnRyeSgpKSkKKyAgICAgICAgICAgIAl7CisgICAgICAgICAgICAgICAgCWxvY2FsZU1lbnUuYWRkSXRlbShjYWxlbmRhcnNbaV0uZ2V0RGlzcGxheUNvdW50cnkoKSArICIgKCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJY2FsZW5kYXJzW2ldLmdldERpc3BsYXlMYW5ndWFnZSgpICsgIikiKTsKKyAgICAgICAgICAgIAl9IGVsc2UgeworICAgICAgICAgICAgICAgIAlsb2NhbGVNZW51LmFkZEl0ZW0oIGNhbGVuZGFyc1tpXS5nZXREaXNwbGF5Q291bnRyeSgpICk7CisgICAgICAgICAgICAJfQorICAgICAgICAgICAgCQorICAgICAgICAgICAgCWlmIChjYWxlbmRhcnNbaV0uZXF1YWxzKGtGaXJzdExvY2FsZSkpIHsKKyAgICAgICAgICAgICAgICAJc2VsZWN0TWUgPSBpOworICAgICAgICAgICAgCX0KKyAgICAgICAgCX0KKyAgICAgICAgCQorICAgICAgICAJbG9jYWxlTWVudS5zZXRCYWNrZ3JvdW5kKERlbW9VdGlsaXR5LmNob2ljZUNvbG9yKTsKKyAgICAgICAgCWxvY2FsZU1lbnUuc2VsZWN0KHNlbGVjdE1lKTsKKworICAgICAgICAJZGlzcGxheU1lbnUgPSBuZXcgQ2hvaWNlKCk7CisgICAgICAgIAkKKyAgICAgICAgCXNlbGVjdE1lID0gMDsKKyAgICAgICAgCWZvciAoaW50IGkgPSAwOyBpIDwgbG9jYWxlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgCWlmIChpID4gMCAmJgorICAgICAgICAgICAgICAgICAgICAJbG9jYWxlc1tpXS5nZXRMYW5ndWFnZSgpLmVxdWFscyhsb2NhbGVzW2ktMV0uZ2V0TGFuZ3VhZ2UoKSkgfHwKKyAgICAgICAgICAgICAgICAJaSA8IGxvY2FsZXMubGVuZ3RoIC0gMSAmJgorICAgICAgICAgICAgICAgICAgICAJbG9jYWxlc1tpXS5nZXRMYW5ndWFnZSgpLmVxdWFscyhsb2NhbGVzW2krMV0uZ2V0TGFuZ3VhZ2UoKSkpCisgICAgICAgICAgICAJeworICAgICAgICAgICAgICAgIAlkaXNwbGF5TWVudS5hZGRJdGVtKCBsb2NhbGVzW2ldLmdldERpc3BsYXlOYW1lKCkgKTsKKyAgICAgICAgICAgIAl9IGVsc2UgeworICAgICAgICAgICAgICAgIAlkaXNwbGF5TWVudS5hZGRJdGVtKCBsb2NhbGVzW2ldLmdldERpc3BsYXlMYW5ndWFnZSgpKTsKKyAgICAgICAgICAgIAl9CisgICAgICAgICAgICAJCisgICAgICAgICAgICAJaWYgKGxvY2FsZXNbaV0uZXF1YWxzKGtGaXJzdExvY2FsZSkpIHsKKyAgICAgICAgICAgIAkgICAgc2VsZWN0TWUgPSBpOworICAgICAgICAgICAgCX0KKyAgICAgICAgCX0KKyAgICAgICAgCQorICAgICAgICAJZGlzcGxheU1lbnUuc2V0QmFja2dyb3VuZChEZW1vVXRpbGl0eS5jaG9pY2VDb2xvcik7CisgICAgICAgIAlkaXNwbGF5TWVudS5zZWxlY3Qoc2VsZWN0TWUpOworCisgICAgICAgIAkvLyBNYWtlIGFsbCB0aGUgbmV4dC9wcmV2aW91cy90b2RheSBidXR0b25zCisgICAgICAgIAlwcmV2WWVhciA9IG5ldyBCdXR0b24oIjw8Iik7CisgICAgICAgIAlwcmV2TW9udGggPSBuZXcgQnV0dG9uKCI8Iik7CisgICAgICAgIAlnb3RvVG9kYXkgPSBuZXcgQnV0dG9uKCJUb2RheSIpOworICAgICAgICAJbmV4dE1vbnRoID0gbmV3IEJ1dHRvbigiPiIpOworICAgICAgICAJbmV4dFllYXIgPSBuZXcgQnV0dG9uKCI+PiIpOworCisgICAgICAgIAkvLyBUaGUgbW9udGggbmFtZSBhbmQgdGhlIGNvbnRyb2wgYnV0dG9ucyBhcmUgYnVuY2hlZCB0b2dldGhlcgorICAgICAgICAJUGFuZWwgbW9udGhQYW5lbCA9IG5ldyBQYW5lbCgpOworICAgICAgICAJeworICAgICAgICAgICAgCUdyaWRCYWdMYXlvdXQgZyA9IG5ldyBHcmlkQmFnTGF5b3V0KCk7CisgICAgICAgICAgICAJR3JpZEJhZ0NvbnN0cmFpbnRzIGMgPSBuZXcgR3JpZEJhZ0NvbnN0cmFpbnRzKCk7CisgICAgICAgICAgICAJbW9udGhQYW5lbC5zZXRMYXlvdXQoZyk7CisKKyAgICAgICAgICAgIAljLndlaWdodHggPSAxOworICAgICAgICAgICAgCWMud2VpZ2h0eSA9IDE7CisKKyAgICAgICAgICAgIAljLmdyaWR3aWR0aCA9IDE7CisgICAgICAgICAgICAJYy5maWxsID0gR3JpZEJhZ0NvbnN0cmFpbnRzLkhPUklaT05UQUw7CisgICAgICAgICAgICAJYy5ncmlkd2lkdGggPSBHcmlkQmFnQ29uc3RyYWludHMuUkVNQUlOREVSOworICAgICAgICAgICAgCWFkZChtb250aFBhbmVsLCBtb250aExhYmVsLCBnLCBjKTsKKworICAgICAgICAgICAgCWMuZ3JpZHdpZHRoID0gMTsKKyAgICAgICAgICAgIAlhZGQobW9udGhQYW5lbCwgcHJldlllYXIsIGcsIGMpOworICAgICAgICAgICAgCWFkZChtb250aFBhbmVsLCBwcmV2TW9udGgsIGcsIGMpOworICAgICAgICAgICAgCWFkZChtb250aFBhbmVsLCBnb3RvVG9kYXksIGcsIGMpOworICAgICAgICAgICAgCWFkZChtb250aFBhbmVsLCBuZXh0TW9udGgsIGcsIGMpOworICAgICAgICAgICAgCWMuZ3JpZHdpZHRoID0gR3JpZEJhZ0NvbnN0cmFpbnRzLlJFTUFJTkRFUjsKKyAgICAgICAgICAgIAlhZGQobW9udGhQYW5lbCwgbmV4dFllYXIsIGcsIGMpOworICAgICAgICAJfQorCisgICAgICAgIAkvLyBTdGljayB0aGUgbWVudSBhbmQgYnV0dG9ucyBpbiBhIGxpdHRsZSAiY29udHJvbCBwYW5lbCIKKyAgICAgICAgCVBhbmVsIG1lbnVQYW5lbCA9IG5ldyBQYW5lbCgpOworICAgICAgICAJeworICAgICAgICAgICAgCUdyaWRCYWdMYXlvdXQgZyA9IG5ldyBHcmlkQmFnTGF5b3V0KCk7CisgICAgICAgICAgICAJR3JpZEJhZ0NvbnN0cmFpbnRzIGMgPSBuZXcgR3JpZEJhZ0NvbnN0cmFpbnRzKCk7CisgICAgICAgICAgICAJbWVudVBhbmVsLnNldExheW91dChnKTsKKworICAgICAgICAgICAgCWMud2VpZ2h0eCA9IDE7CisgICAgICAgICAgICAJYy53ZWlnaHR5ID0gMTsKKworICAgICAgICAgICAgCWMuZmlsbCA9IEdyaWRCYWdDb25zdHJhaW50cy5IT1JJWk9OVEFMOworCisgICAgICAgICAgICAJYy5ncmlkd2lkdGggPSBHcmlkQmFnQ29uc3RyYWludHMuUkVMQVRJVkU7CisgICAgICAgICAgICAJTGFiZWwgbDEgPSBuZXcgTGFiZWwoIkhvbGlkYXlzIik7CisgICAgICAgICAgICAJbDEuc2V0Rm9udChEZW1vVXRpbGl0eS5sYWJlbEZvbnQpOworICAgICAgICAgICAgCWFkZChtZW51UGFuZWwsIGwxLCBnLCBjKTsKKworICAgICAgICAgICAgCWMuZ3JpZHdpZHRoID0gR3JpZEJhZ0NvbnN0cmFpbnRzLlJFTUFJTkRFUjsKKyAgICAgICAgICAgIAlhZGQobWVudVBhbmVsLCBsb2NhbGVNZW51LCBnLCBjKTsKKworICAgICAgICAgICAgCWMuZ3JpZHdpZHRoID0gR3JpZEJhZ0NvbnN0cmFpbnRzLlJFTEFUSVZFOworICAgICAgICAgICAgCUxhYmVsIGwyID0gbmV3IExhYmVsKCJEaXNwbGF5OiIpOworICAgICAgICAgICAgCWwyLnNldEZvbnQoRGVtb1V0aWxpdHkubGFiZWxGb250KTsKKyAgICAgICAgICAgIAlhZGQobWVudVBhbmVsLCBsMiwgZywgYyk7CisKKyAgICAgICAgICAgIAljLmdyaWR3aWR0aCA9IEdyaWRCYWdDb25zdHJhaW50cy5SRU1BSU5ERVI7CisgICAgICAgICAgICAJYWRkKG1lbnVQYW5lbCwgZGlzcGxheU1lbnUsIGcsIGMpOworICAgICAgICAJfQorCisgICAgICAgIAkvLyBUaGUgdGl0bGUsIGJ1dHRvbnMsIGV0Yy4gZ28gaW4gYSBwYW5lbCBhdCB0aGUgdG9wIG9mIHRoZSB3aW5kb3cKKyAgICAgICAgCVBhbmVsIHRvcFBhbmVsID0gbmV3IFBhbmVsKCk7CisgICAgICAgIAl7CisgICAgICAgICAgICAJdG9wUGFuZWwuc2V0TGF5b3V0KG5ldyBCb3JkZXJMYXlvdXQoKSk7CisKKyAgICAgICAgICAgIAkvL3RvcFBhbmVsLmFkZCgiTm9ydGgiLCB0aXRsZUxhYmVsKTsKKyAgICAgICAgICAgIAl0b3BQYW5lbC5hZGQoIkNlbnRlciIsIG1vbnRoUGFuZWwpOworICAgICAgICAgICAgCXRvcFBhbmVsLmFkZCgiRWFzdCIsIG1lbnVQYW5lbCk7CisgICAgICAgIAl9CisgICAgICAgIAlhZGQoIk5vcnRoIiwgdG9wUGFuZWwpOworCisgICAgICAgIAkvLyBUaGUgY29weXJpZ2h0IG5vdGljZSBnb2VzIGF0IHRoZSBib3R0b20gb2YgdGhlIHdpbmRvdworICAgICAgICAJTGFiZWwgY29weXJpZ2h0ID0gbmV3IExhYmVsKERlbW9VdGlsaXR5LmNvcHlyaWdodDEsIExhYmVsLkxFRlQpOworICAgICAgICAJY29weXJpZ2h0LnNldEZvbnQoRGVtb1V0aWxpdHkuY3JlZGl0Rm9udCk7CisgICAgICAgIAlhZGQoIlNvdXRoIiwgY29weXJpZ2h0KTsKKworICAgICAgICAJLy8gTm93IGNyZWF0ZSB0aGUgYmlnIGNhbGVuZGFyIHBhbmVsIGFuZCBzdGljayBpdCBpbiB0aGUgbWlkZGxlCisgICAgICAgIAljYWxlbmRhclBhbmVsID0gbmV3IENhbGVuZGFyUGFuZWwoIGtGaXJzdExvY2FsZSApOworICAgICAgICAJYWRkKCJDZW50ZXIiLCBjYWxlbmRhclBhbmVsKTsKKworICAgICAgICAJdXBkYXRlTW9udGhOYW1lKCk7CisgICAgCX0KKworICAgIAkvKioKKyAgICAJKiBDYWxsZWQgaWYgYW4gYWN0aW9uIG9jY3VycyBpbiB0aGUgQ2FsZW5kYXJGcmFtZSBvYmplY3QuCisgICAgCSovCisgICAgCXB1YmxpYyBib29sZWFuIGFjdGlvbihFdmVudCBldnQsIE9iamVjdCBvYmopCisgICAgCXsKKyAgICAgICAgCS8vICoqKiBCdXR0b24gZXZlbnRzIGFyZSBoYW5kbGVkIGhlcmUuCisgICAgICAgIAlib29sZWFuIGhhbmRsZWQgPSBmYWxzZTsKKworICAgICAgICAJaWYgKGV2dC50YXJnZXQgaW5zdGFuY2VvZiBCdXR0b24pIHsKKyAgICAgICAgICAgIAlpZiAoZXZ0LnRhcmdldCA9PSBuZXh0TW9udGgpIHsKKyAgICAgICAgICAgICAgICAJY2FsZW5kYXJQYW5lbC5hZGQoQ2FsZW5kYXIuTU9OVEgsICsxKTsKKyAgICAgICAgICAgICAgICAJaGFuZGxlZCA9IHRydWU7CisgICAgICAgICAgICAJfQorICAgICAgICAgICAgCWVsc2UKKyAgICAgICAgICAgIAlpZiAoZXZ0LnRhcmdldCA9PSBwcmV2TW9udGgpIHsKKyAgICAgICAgICAgICAgICAJY2FsZW5kYXJQYW5lbC5hZGQoQ2FsZW5kYXIuTU9OVEgsIC0xKTsKKyAgICAgICAgICAgICAgICAJaGFuZGxlZCA9IHRydWU7CisgICAgICAgICAgICAJfQorICAgICAgICAgICAgCWVsc2UKKyAgICAgICAgICAgIAlpZiAoZXZ0LnRhcmdldCA9PSBwcmV2WWVhcikgeworICAgICAgICAgICAgICAgIAljYWxlbmRhclBhbmVsLmFkZChDYWxlbmRhci5ZRUFSLCAtMSk7CisgICAgICAgICAgICAgICAgCWhhbmRsZWQgPSB0cnVlOworICAgICAgICAgICAgCX0KKyAgICAgICAgICAgIAllbHNlCisgICAgICAgICAgICAJaWYgKGV2dC50YXJnZXQgPT0gbmV4dFllYXIpIHsKKyAgICAgICAgICAgICAgICAJY2FsZW5kYXJQYW5lbC5hZGQoQ2FsZW5kYXIuWUVBUiwgKzEpOworICAgICAgICAgICAgICAgIAloYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIAl9CisgICAgICAgICAgICAJZWxzZQorICAgICAgICAgICAgCWlmIChldnQudGFyZ2V0ID09IGdvdG9Ub2RheSkgeworICAgICAgICAgICAgICAgIAljYWxlbmRhclBhbmVsLnNldCggbmV3IERhdGUoKSApOworICAgICAgICAgICAgICAgIAloYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIAl9CisgICAgICAgICAgICAJaWYgKGhhbmRsZWQpIHsKKyAgICAgICAgICAgICAgICAJdXBkYXRlTW9udGhOYW1lKCk7CisgICAgICAgICAgICAJfQorICAgICAgICAJfQorICAgICAgICAJcmV0dXJuIGhhbmRsZWQgfHwgc3VwZXIuYWN0aW9uKGV2dCwgb2JqKTsKKyAgICAJfQorCisgICAgCXByaXZhdGUgdm9pZCB1cGRhdGVNb250aE5hbWUoKQorICAgIAl7CisgICAgICAgIAlTaW1wbGVEYXRlRm9ybWF0IGYgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgiTU1NTSB5eXl5eSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCWNhbGVuZGFyUGFuZWwuZ2V0RGlzcGxheUxvY2FsZSgpKTsKKyAgICAgICAgCWYuc2V0Q2FsZW5kYXIoY2FsZW5kYXJQYW5lbC5nZXRDYWxlbmRhcigpKTsKKyAgICAgICAgCWYuc2V0VGltZVpvbmUobmV3IFNpbXBsZVRpbWVab25lKDAsICJVVEMiKSk7ICAgICAgICAvLyBKREsgMS4xLjIgd29ya2Fyb3VuZAorICAgICAgICAJbW9udGhMYWJlbC5zZXRUZXh0KCBmLmZvcm1hdCggY2FsZW5kYXJQYW5lbC5maXJzdE9mTW9udGgoKSApKTsKKyAgICAJfQorCisgICAgCS8qKgorICAgIAkqIEhhbmRsZXMgdGhlIGV2ZW50LiBSZXR1cm5zIHRydWUgaWYgdGhlIGV2ZW50IGlzIGhhbmRsZWQgYW5kIHNob3VsZCBub3QKKyAgICAJKiBiZSBwYXNzZWQgdG8gdGhlIHBhcmVudCBvZiB0aGlzIGNvbXBvbmVudC4gVGhlIGRlZmF1bHQgZXZlbnQgaGFuZGxlcgorICAgIAkqIGNhbGxzIHNvbWUgaGVscGVyIG1ldGhvZHMgdG8gbWFrZSBsaWZlIGVhc2llciBvbiB0aGUgcHJvZ3JhbW1lci4KKyAgICAJKi8KKyAgICAJcHVibGljIGJvb2xlYW4gaGFuZGxlRXZlbnQoRXZlbnQgZXZ0KQorICAgIAl7CisgICAgICAgIAlpZiAoZXZ0LmlkID09IEV2ZW50LkFDVElPTl9FVkVOVCAmJiBldnQudGFyZ2V0ID09IGxvY2FsZU1lbnUpIHsKKyAgICAgICAgICAgIAljYWxlbmRhclBhbmVsLnNldENhbGVuZGFyTG9jYWxlKGNhbGVuZGFyc1tsb2NhbGVNZW51LmdldFNlbGVjdGVkSW5kZXgoKV0pOworICAgICAgICAgICAgCXVwZGF0ZU1vbnRoTmFtZSgpOworICAgICAgICAgICAgCXJldHVybiB0cnVlOworICAgICAgICAJfQorICAgICAgICAJaWYgKGV2dC5pZCA9PSBFdmVudC5BQ1RJT05fRVZFTlQgJiYgZXZ0LnRhcmdldCA9PSBkaXNwbGF5TWVudSkgeworICAgICAgICAgICAgCWNhbGVuZGFyUGFuZWwuc2V0RGlzcGxheUxvY2FsZShsb2NhbGVzW2Rpc3BsYXlNZW51LmdldFNlbGVjdGVkSW5kZXgoKV0pOworICAgICAgICAgICAgCXVwZGF0ZU1vbnRoTmFtZSgpOworICAgICAgICAgICAgCXJldHVybiB0cnVlOworICAgICAgICAJfQorICAgICAgICAJZWxzZQorICAgICAgICAJaWYgKGV2dC5pZCA9PSBFdmVudC5XSU5ET1dfREVTVFJPWSAmJiBldnQudGFyZ2V0ID09IHRoaXMpIHsKKyAgICAgICAgICAgIAl0aGlzLmhpZGUoKTsKKyAgICAgICAgICAgIAl0aGlzLmRpc3Bvc2UoKTsKKworICAgICAgICAgICAgCWlmIChhcHBsZXQgIT0gbnVsbCkgeworICAgICAgICAgICAgCWFwcGxldC5kZW1vQ2xvc2VkKCk7CisgICAgICAgICAgICAJfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAJU3lzdGVtLmV4aXQoMCk7CisgICAgICAgICAgICAJfQorICAgICAgICAgICAgCXJldHVybiB0cnVlOworICAgICAgICAJfQorICAgICAgICAJcmV0dXJuIHN1cGVyLmhhbmRsZUV2ZW50KGV2dCk7CisgICAgCX0KKworICAgIAkvKioKKyAgICAJKiBQcmludCBvdXQgdGhlIGVycm9yIG1lc3NhZ2Ugd2hpbGUgZGVidWdnaW5nIHRoaXMgcHJvZ3JhbS4KKyAgICAJKi8KKyAgICAJcHVibGljIHZvaWQgZXJyb3JUZXh0KFN0cmluZyBzKQorICAgIAl7CisgICAgICAgIAlpZiAoREVCVUcpCisgICAgICAgIAl7CisgICAgICAgICAgICAJU3lzdGVtLm91dC5wcmludGxuKHMpOworICAgICAgICAJfQorICAgIAl9CisJfQorCisKKwlwcml2YXRlIHN0YXRpYyBjbGFzcyBDYWxlbmRhclBhbmVsIGV4dGVuZHMgQ2FudmFzIHsKKworICAgIAlwdWJsaWMgQ2FsZW5kYXJQYW5lbCggTG9jYWxlIGxvY2FsZSApIHsKKyAgICAgICAgCXNldChsb2NhbGUsIGxvY2FsZSwgbmV3IERhdGUoKSk7CisgICAgCX0KKworICAgIAlwdWJsaWMgdm9pZCBzZXRDYWxlbmRhckxvY2FsZShMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIAlzZXQobG9jYWxlLCBmRGlzcGxheUxvY2FsZSwgZkNhbGVuZGFyLmdldFRpbWUoKSk7CisgICAgCX0KKworICAgIAlwdWJsaWMgdm9pZCBzZXREaXNwbGF5TG9jYWxlKExvY2FsZSBsb2NhbGUpIHsKKyAgICAgICAgCXNldChmQ2FsZW5kYXJMb2NhbGUsIGxvY2FsZSwgZkNhbGVuZGFyLmdldFRpbWUoKSk7CisgICAgCX0KKworICAgIAlwdWJsaWMgdm9pZCBzZXQoRGF0ZSBkYXRlKSB7CisgICAgICAgIAlzZXQoZkNhbGVuZGFyTG9jYWxlLCBmRGlzcGxheUxvY2FsZSwgZGF0ZSk7CisgICAgCX0KKworICAgIAlwdWJsaWMgdm9pZCBzZXQoTG9jYWxlIGxvYywgTG9jYWxlIGRpc3BsYXksIERhdGUgZGF0ZSkKKyAgICAJeworICAgICAgICAJaWYgKGZDYWxlbmRhckxvY2FsZSA9PSBudWxsIHx8ICFsb2MuZXF1YWxzKGZDYWxlbmRhckxvY2FsZSkpIHsKKyAgICAgICAgICAgIAlmQ2FsZW5kYXJMb2NhbGUgPSBsb2M7CisgICAgICAgICAgICAJZkNhbGVuZGFyID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoZkNhbGVuZGFyTG9jYWxlKTsKKyAgICAgICAgICAgIAlmQWxsSG9saWRheXMgPSBIb2xpZGF5LmdldEhvbGlkYXlzKGZDYWxlbmRhckxvY2FsZSk7CisgICAgICAgIAl9CisgICAgICAgIAlpZiAoZkRpc3BsYXlMb2NhbGUgPT0gbnVsbCB8fCAhZGlzcGxheS5lcXVhbHMoZkRpc3BsYXlMb2NhbGUpKSB7CisgICAgICAgICAgICAJZkRpc3BsYXlMb2NhbGUgPSBkaXNwbGF5OworICAgICAgICAgICAgCWZTeW1ib2xzID0gbmV3IERhdGVGb3JtYXRTeW1ib2xzKGZEaXNwbGF5TG9jYWxlKTsKKyAgICAgICAgCX0KKworICAgICAgICAJZlN0YXJ0T2ZNb250aCA9IGRhdGU7CisKKyAgICAgICAgCWRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgCXJlcGFpbnQoKTsKKyAgICAJfQorCisgICAgCXB1YmxpYyB2b2lkIGFkZChpbnQgZmllbGQsIGludCBkZWx0YSkKKyAgICAJeworICAgICAgICAJc3luY2hyb25pemVkKGZDYWxlbmRhcikgeworICAgICAgICAgICAgCWZDYWxlbmRhci5zZXRUaW1lKGZTdGFydE9mTW9udGgpOworICAgICAgICAgICAgCWZDYWxlbmRhci5hZGQoZmllbGQsIGRlbHRhKTsKKyAgICAgICAgICAgIAlmU3RhcnRPZk1vbnRoID0gZkNhbGVuZGFyLmdldFRpbWUoKTsKKyAgICAgICAgCX0KKyAgICAgICAgCWRpcnR5ID0gdHJ1ZTsKKyAgICAgICAgCXJlcGFpbnQoKTsKKyAgICAJfQorCisgICAgCXB1YmxpYyBjb20uaWJtLnV0aWwuQ2FsZW5kYXIgZ2V0Q2FsZW5kYXIoKSB7CisgICAgICAgIAlyZXR1cm4gZkNhbGVuZGFyOworICAgIAl9CisKKyAgICAJcHVibGljIExvY2FsZSBnZXRDYWxlbmRhckxvY2FsZSgpIHsKKyAgICAgICAgCXJldHVybiBmQ2FsZW5kYXJMb2NhbGU7CisgICAgCX0KKworICAgIAlwdWJsaWMgTG9jYWxlIGdldERpc3BsYXlMb2NhbGUoKSB7CisgICAgICAgIAlyZXR1cm4gZkRpc3BsYXlMb2NhbGU7CisgICAgCX0KKworCisgICAgCXB1YmxpYyBEYXRlIGZpcnN0T2ZNb250aCgpIHsKKyAgICAgICAgCXJldHVybiBmU3RhcnRPZk1vbnRoOworICAgIAl9CisKKyAgICAJcHJpdmF0ZSBEYXRlIHN0YXJ0T2ZNb250aChEYXRlIGRhdGVJbk1vbnRoKQorICAgIAl7CisgICAgICAgIAlzeW5jaHJvbml6ZWQoZkNhbGVuZGFyKSB7CisgICAgICAgICAgICAJZkNhbGVuZGFyLnNldFRpbWUoZGF0ZUluTW9udGgpOyAgICAgICAgICAgICAvLyBUT0RPOiBzeW5jaHJvbml6YXRpb24KKworICAgICAgICAgICAgCWludCBlcmEgPSBmQ2FsZW5kYXIuZ2V0KENhbGVuZGFyLkVSQSk7CisgICAgICAgICAgICAJaW50IHllYXIgPSBmQ2FsZW5kYXIuZ2V0KENhbGVuZGFyLllFQVIpOworICAgICAgICAgICAgCWludCBtb250aCA9IGZDYWxlbmRhci5nZXQoQ2FsZW5kYXIuTU9OVEgpOworCisgICAgICAgICAgICAJZkNhbGVuZGFyLmNsZWFyKCk7CisgICAgICAgICAgICAJZkNhbGVuZGFyLnNldChDYWxlbmRhci5FUkEsIGVyYSk7CisgICAgICAgICAgICAJZkNhbGVuZGFyLnNldChDYWxlbmRhci5ZRUFSLCB5ZWFyKTsKKyAgICAgICAgICAgIAlmQ2FsZW5kYXIuc2V0KENhbGVuZGFyLk1PTlRILCBtb250aCk7CisgICAgICAgICAgICAJZkNhbGVuZGFyLnNldChDYWxlbmRhci5EQVRFLCAxKTsKKworICAgICAgICAgICAgCXJldHVybiBmQ2FsZW5kYXIuZ2V0VGltZSgpOworICAgICAgICAJfQorICAgIAl9CisKKyAgICAJcHJpdmF0ZSB2b2lkIGNhbGN1bGF0ZSgpCisgICAgCXsKKyAgICAgICAgCS8vCisgICAgICAgIAkvLyBBcyBhIHdvcmthcm91bmQgZm9yIEpESyAxLjEuMyBhbmQgYmVsb3csIHdoZXJlIENhbGVuZGFycyBhbmQgdGltZQorICAgICAgICAJLy8gem9uZXMgYXJlIGEgYml0IGdvb2Z5LCBhbHdheXMgc2V0IG15IGNhbGVuZGFyJ3MgdGltZSB6b25lIHRvIFVUQy4KKyAgICAgICAgCS8vIFlvdSB3b3VsZCB0aGluayBJIHdvdWxkIHdhbnQgdG8gZG8gdGhpcyBpbiB0aGUgInNldCIgZnVuY3Rpb24gYWJvdmUsCisgICAgICAgIAkvLyBidXQgaWYgSSBkbyB0aGF0LCB0aGUgcHJvZ3JhbSBoYW5ncyB3aGVuIHRoaXMgY2xhc3MgaXMgbG9hZGVkLAorICAgICAgICAJLy8gcGVyaGFwcyBkdWUgdG8gc29tZSBzb3J0IG9mIHN0YXRpYyBpbml0aWFsaXphdGlvbiBvcmRlcmluZyBwcm9ibGVtLgorICAgICAgICAJLy8gU28gSSBkbyBpdCBoZXJlIGluc3RlYWQuCisgICAgICAgIAkvLworICAgICAgICAJZkNhbGVuZGFyLnNldFRpbWVab25lKG5ldyBTaW1wbGVUaW1lWm9uZSgwLCAiVVRDIikpOworCisgICAgICAgIAlDYWxlbmRhciBjID0gKENhbGVuZGFyKWZDYWxlbmRhci5jbG9uZSgpOyAvLyBUZW1wb3JhcnkgY29weQorCisgICAgICAgIAlmU3RhcnRPZk1vbnRoID0gc3RhcnRPZk1vbnRoKGZTdGFydE9mTW9udGgpOworCisgICAgICAgIAkvLyBTdGFzaCBhd2F5IGEgZmV3IHVzZWZ1bCBjb25zdGFudHMgZm9yIHRoaXMgY2FsZW5kYXIgYW5kIGRpc3BsYXkKKyAgICAgICAgCW1pbkRheSA9IGMuZ2V0TWluaW11bShDYWxlbmRhci5EQVlfT0ZfV0VFSyk7CisgICAgICAgIAlkYXlzSW5XZWVrID0gYy5nZXRNYXhpbXVtKENhbGVuZGFyLkRBWV9PRl9XRUVLKSAtIG1pbkRheSArIDE7CisKKyAgICAgICAgCWZpcnN0RGF5T2ZXZWVrID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoZkRpc3BsYXlMb2NhbGUpLmdldEZpcnN0RGF5T2ZXZWVrKCk7CisKKyAgICAgICAgCS8vIFN0YXNoIGF3YXkgYSBEYXRlIGZvciB0aGUgc3RhcnQgb2YgdGhpcyBtb250aAorCisgICAgICAgIAkvLyBGaW5kIHRoZSBkYXkgb2Ygd2VlayBvZiB0aGUgZmlyc3QgZGF5IGluIHRoaXMgbW9udGgKKyAgICAgICAgCWMuc2V0VGltZShmU3RhcnRPZk1vbnRoKTsKKyAgICAgICAgCWZpcnN0RGF5SW5Nb250aCA9IGMuZ2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLKTsKKworICAgICAgICAJLy8gTm93IGZpbmQgdGhlICMgb2YgZGF5cyBpbiB0aGUgbW9udGgKKyAgICAgICAgCWMucm9sbChDYWxlbmRhci5EQVRFLCBmYWxzZSk7CisgICAgICAgIAlkYXlzSW5Nb250aCA9IGMuZ2V0KENhbGVuZGFyLkRBVEUpOworCisgICAgICAgIAkvLyBGaW5hbGx5LCBmaW5kIHRoZSBlbmQgb2YgdGhlIG1vbnRoLCBpLmUuIHRoZSBzdGFydCBvZiB0aGUgbmV4dCBvbmUKKyAgICAgICAgCWMucm9sbChDYWxlbmRhci5EQVRFLCB0cnVlKTsKKyAgICAgICAgCWMuYWRkKENhbGVuZGFyLk1PTlRILCAxKTsKKyAgICAgICAgCWMuZ2V0VGltZSgpOyAgICAgICAgLy8gSkRLIDEuMS4yIGJ1ZyB3b3JrYXJvdW5kCisgICAgICAgIAljLmFkZChDYWxlbmRhci5TRUNPTkQsIC0xKTsKKyAgICAgICAgCURhdGUgZW5kT2ZNb250aCA9IGMuZ2V0VGltZSgpOworCisgICAgICAgIAkvLworICAgICAgICAJLy8gQ2FsY3VsYXRlIHRoZSBudW1iZXIgb2YgZnVsbCBvciBwYXJ0aWFsIHdlZWtzIGluIHRoaXMgbW9udGguCisgICAgICAgIAkvLyBUbyBkbyB0aGlzIEkgY2FuIGp1c3QgcmV1c2UgdGhlIGNvZGUgdGhhdCBjYWxjdWxhdGVzIHdoaWNoCisgICAgICAgIAkvLyBjYWxlbmRhciBjZWxsIGNvbnRhaW5zIGEgZ2l2ZW4gZGF0ZS4KKyAgICAgICAgCS8vCisgICAgICAgIAludW1XZWVrcyA9IGRhdGVUb0NlbGwoZGF5c0luTW9udGgpLnkgLSBkYXRlVG9DZWxsKDEpLnkgKyAxOworCisgICAgICAgIAkvLyBSZW1lbWJlciB3aGljaCBob2xpZGF5cyBmYWxsIG9uIHdoaWNoIGRheXMgaW4gdGhpcyBtb250aCwKKyAgICAgICAgCS8vIHRvIHNhdmUgdGhlIHRyb3VibGUgb2YgaGF2aW5nIHRvIGRvIGl0IGxhdGVyCisgICAgICAgIAlmSG9saWRheXMuc2V0U2l6ZSgwKTsKKworICAgICAgICAJZm9yIChpbnQgaCA9IDA7IGggPCBmQWxsSG9saWRheXMubGVuZ3RoOyBoKyspCisgICAgICAgIAl7CisgICAgICAgICAgICAJRGF0ZSBkID0gZlN0YXJ0T2ZNb250aDsKKyAgICAgICAgICAgIAl3aGlsZSAoIChkID0gZkFsbEhvbGlkYXlzW2hdLmZpcnN0QmV0d2VlbihkLCBlbmRPZk1vbnRoKSApICE9IG51bGwpCisgICAgICAgICAgICAJeworICAgICAgICAgICAgICAgIAljLnNldFRpbWUoZCk7CisgICAgICAgICAgICAgICAgCWZIb2xpZGF5cy5hZGRFbGVtZW50KCBuZXcgSG9saWRheUluZm8oYy5nZXQoQ2FsZW5kYXIuREFURSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCWZBbGxIb2xpZGF5c1toXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJZkFsbEhvbGlkYXlzW2hdLmdldERpc3BsYXlOYW1lKGZEaXNwbGF5TG9jYWxlKSApKTsKKworICAgICAgICAgICAgICAgIAlkLnNldFRpbWUoIGQuZ2V0VGltZSgpICsgMTAwMCApOyAgICAvLyAiZCsrIgorICAgICAgICAgICAgCX0KKyAgICAgICAgCX0KKyAgICAgICAgCWRpcnR5ID0gZmFsc2U7CisgICAgCX0KKworICAgIAlzdGF0aWMgZmluYWwgaW50IElOU0VUID0gMjsKKworICAgIAkvKgorICAgIAkqIENvbnZlcnQgZnJvbSB0aGUgZGF5IG51bWJlciB3aXRoaW4gYSBtb250aCAoMS1iYXNlZCkKKyAgICAJKiB0byB0aGUgY2VsbCBjb29yZGluYXRlcyBvbiB0aGUgY2FsZW5kYXIgKDAtYmFzZWQpCisgICAgCSovCisgICAgCXByaXZhdGUgdm9pZCBkYXRlVG9DZWxsKGludCBkYXRlLCBQb2ludCBwb3MpCisgICAgCXsKKyAgICAgICAgCWludCBjZWxsID0gKGRhdGUgKyBmaXJzdERheUluTW9udGggLSBmaXJzdERheU9mV2VlayAtIG1pbkRheSk7CisgICAgICAgIAlpZiAoZmlyc3REYXlJbk1vbnRoIDwgZmlyc3REYXlPZldlZWspIHsKKyAgICAgICAgICAgIAljZWxsICs9IGRheXNJbldlZWs7CisgICAgICAgIAl9CisKKyAgICAgICAgCXBvcy54ID0gY2VsbCAlIGRheXNJbldlZWs7CisgICAgICAgIAlwb3MueSA9IGNlbGwgLyBkYXlzSW5XZWVrOworICAgIAl9CisgICAgCXByaXZhdGUgUG9pbnQgZGF0ZVRvQ2VsbChpbnQgZGF0ZSkgeworICAgICAgICAJUG9pbnQgcCA9IG5ldyBQb2ludCgwLDApOworICAgICAgICAJZGF0ZVRvQ2VsbChkYXRlLCBwKTsKKyAgICAgICAgCXJldHVybiBwOworICAgIAl9CisKKyAgICAJcHVibGljIHZvaWQgcGFpbnQoR3JhcGhpY3MgZykgeworCisgICAgICAgIAlpZiAoZGlydHkpIHsKKyAgICAgICAgICAgIAljYWxjdWxhdGUoKTsKKyAgICAgICAgCX0KKworICAgICAgICAJUG9pbnQgY2VsbFBvcyA9IG5ldyBQb2ludCgwLDApOyAgICAgLy8gVGVtcG9yYXJ5IHZhcmlhYmxlCisgICAgICAgIAlEaW1lbnNpb24gZCA9IHRoaXMuc2l6ZSgpOworCisgICAgICAgIAlnLnNldENvbG9yKERlbW9VdGlsaXR5LmJnQ29sb3IpOworICAgICAgICAJZy5maWxsUmVjdCgwLDAsZC53aWR0aCxkLmhlaWdodCk7CisKKyAgICAgICAgCS8vIERyYXcgdGhlIGRheSBuYW1lcyBhdCB0aGUgdG9wCisgICAgICAgIAlnLnNldENvbG9yKENvbG9yLmJsYWNrKTsKKyAgICAgICAgCWcuc2V0Rm9udChEZW1vVXRpbGl0eS5sYWJlbEZvbnQpOworICAgICAgICAJRm9udE1ldHJpY3MgZm0gPSBnLmdldEZvbnRNZXRyaWNzKCk7CisgICAgICAgIAlpbnQgbGFiZWxIZWlnaHQgPSBmbS5nZXRIZWlnaHQoKSArIElOU0VUICogMjsKKworICAgICAgICAJaW50IHYgPSBmbS5nZXRBc2NlbnQoKSArIElOU0VUOworICAgICAgICAJZm9yIChpbnQgaSA9IDA7IGkgPCBkYXlzSW5XZWVrOyBpKyspIHsKKyAgICAgICAgICAgIAlpbnQgZGF5TnVtID0gKGkgKyBtaW5EYXkgKyBmaXJzdERheU9mV2VlayAtIDIpICUgZGF5c0luV2VlayArIDE7CisgICAgICAgICAgICAJU3RyaW5nIGRheU5hbWUgPSBmU3ltYm9scy5nZXRXZWVrZGF5cygpW2RheU51bV07CisKKyAgICAgICAgICAgIAlpbnQgaCA9IChpbnQpIChkLndpZHRoICogKGkgKyAwLjUpKSAvIGRheXNJbldlZWs7CisgICAgICAgICAgICAJaCAtPSBmbS5zdHJpbmdXaWR0aChkYXlOYW1lKSAvIDI7CisKKyAgICAgICAgICAgIAlnLmRyYXdTdHJpbmcoZGF5TmFtZSwgaCwgdik7CisgICAgICAgIAl9CisKKyAgICAgICAgCWRvdWJsZSBjZWxsSGVpZ2h0ID0gKGQuaGVpZ2h0IC0gbGFiZWxIZWlnaHQgLSAxKSAvIG51bVdlZWtzOworICAgICAgICAJZG91YmxlIGNlbGxXaWR0aCA9IChkb3VibGUpKGQud2lkdGggLSAxKSAvIGRheXNJbldlZWs7CisKKyAgICAgICAgCS8vIERyYXcgYSB3aGl0ZSBiYWNrZ3JvdW5kIGluIHRoZSBwYXJ0IG9mIHRoZSBjYWxlbmRhcgorICAgICAgICAJLy8gdGhhdCBkaXNwbGF5cyB0aGlzIG1vbnRoLgorICAgICAgICAJLy8gRmlyc3QgZmlndXJlIG91dCBob3cgbXVjaCBvZiB0aGUgZmlyc3Qgd2VlayBzaG91bGQgYmUgc2hhZGVkLgorICAgICAgICAJeworICAgICAgICAgICAgCWcuc2V0Q29sb3IoQ29sb3Iud2hpdGUpOworICAgICAgICAgICAgCWRhdGVUb0NlbGwoMSwgY2VsbFBvcyk7CisgICAgICAgICAgICAJaW50IHdpZHRoID0gKGludCkoY2VsbFBvcy54KmNlbGxXaWR0aCk7ICAvLyBXaWR0aCBvZiB1bnNoYWRlZCBhcmVhCisKKyAgICAgICAgICAgIAlnLmZpbGxSZWN0KChpbnQpKHdpZHRoKSwgbGFiZWxIZWlnaHQgLAorICAgICAgICAgICAgICAgICAgICAJKGludCkoZC53aWR0aCAtIHdpZHRoKSwgKGludCljZWxsSGVpZ2h0KTsKKworICAgICAgICAgICAgCS8vIEFsbCBvZiB0aGUgaW50ZXJtZWRpYXRlIHdlZWtzIGdldCBzaGFkZWQgY29tcGxldGVseQorICAgICAgICAgICAgCWcuZmlsbFJlY3QoMCwgKGludCkobGFiZWxIZWlnaHQgKyBjZWxsSGVpZ2h0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIAlkLndpZHRoLCAoaW50KShjZWxsSGVpZ2h0ICogKG51bVdlZWtzIC0gMikpKTsKKworICAgICAgICAgICAgCS8vIE5vdyBmaWd1cmUgb3V0IHRoZSBsYXN0IHdlZWsuCisgICAgICAgICAgICAJZGF0ZVRvQ2VsbChkYXlzSW5Nb250aCwgY2VsbFBvcyk7CisgICAgICAgICAgICAJd2lkdGggPSAoaW50KSgoY2VsbFBvcy54KzEpKmNlbGxXaWR0aCk7ICAvLyBXaWR0aCBvZiBzaGFkZWQgYXJlYQorCisgICAgICAgICAgICAJZy5maWxsUmVjdCgwLCAoaW50KShsYWJlbEhlaWdodCArIChudW1XZWVrcy0xKSAqIGNlbGxIZWlnaHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgCXdpZHRoLCAoaW50KShjZWxsSGVpZ2h0KSk7CisKKyAgICAgICAgCX0KKyAgICAgICAgCS8vIERyYXcgdGhlIFgvWSBncmlkIGxpbmVzCisgICAgICAgIAlnLnNldENvbG9yKENvbG9yLmJsYWNrKTsKKyAgICAgICAgCWZvciAoaW50IGkgPSAwOyBpIDw9IG51bVdlZWtzOyBpKyspIHsKKyAgICAgICAgICAgIAlpbnQgeSA9IChpbnQpKGxhYmVsSGVpZ2h0ICsgaSAqIGNlbGxIZWlnaHQpOworICAgICAgICAgICAgCWcuZHJhd0xpbmUoMCwgeSwgZC53aWR0aCAtIDEsIHkpOworICAgICAgICAJfQorICAgICAgICAJZm9yIChpbnQgaSA9IDA7IGkgPD0gZGF5c0luV2VlazsgaSsrKSB7CisgICAgICAgICAgICAJaW50IHggPSAoaW50KShpICogY2VsbFdpZHRoKTsKKyAgICAgICAgICAgIAlnLmRyYXdMaW5lKHgsIGxhYmVsSGVpZ2h0LCB4LCBkLmhlaWdodCAtIDEpOworICAgICAgICAJfQorCisgICAgICAgIAkvLyBOb3cgbG9vcCB0aHJvdWdoIGFsbCBvZiB0aGUgZGF5cyBpbiB0aGUgbW9udGgsIGZpZ3VyZSBvdXQgd2hlcmUKKyAgICAgICAgCS8vIHRoZXkgZ28gaW4gdGhlIGdyaWQsIGFuZCBkcmF3IHRoZSBkYXkgIyBmb3IgZWFjaCBvbmUKKyAgICAgICAgCUZvbnQgbnVtYmVyRm9udCA9IG5ldyBGb250KCJIZWx2ZXRpY2EiLEZvbnQuUExBSU4sMTIpOworICAgICAgICAJRm9udCBob2xpZGF5Rm9udCA9IERlbW9VdGlsaXR5LmNyZWRpdEZvbnQ7CisKKyAgICAgICAgCUNhbGVuZGFyIGMgPSAoQ2FsZW5kYXIpZkNhbGVuZGFyLmNsb25lKCk7CisgICAgICAgIAljLnNldFRpbWUoZlN0YXJ0T2ZNb250aCk7CisKKyAgICAgICAgCWZvciAoaW50IGkgPSAxLCBoID0gMDsgaSA8PSBkYXlzSW5Nb250aDsgaSsrKSB7CisgICAgICAgICAgICAJZy5zZXRGb250KG51bWJlckZvbnQpOworICAgICAgICAgICAgCWcuc2V0Q29sb3IoQ29sb3IuYmxhY2spOworICAgICAgICAgICAgCWZtID0gZy5nZXRGb250TWV0cmljcygpOworCisgICAgICAgICAgICAJZGF0ZVRvQ2VsbChpLCBjZWxsUG9zKTsKKyAgICAgICAgICAgIAlpbnQgeCA9IChpbnQpKChjZWxsUG9zLnggKyAxKSAqIGNlbGxXaWR0aCk7CisgICAgICAgICAgICAJaW50IHkgPSAoaW50KShjZWxsUG9zLnkgKiBjZWxsSGVpZ2h0ICsgbGFiZWxIZWlnaHQpOworCisgICAgICAgICAgICAJU3RyaW5nQnVmZmVyIGJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgICAgIAlidWZmZXIuYXBwZW5kKGkpOworICAgICAgICAgICAgCVN0cmluZyBkYXlOdW0gPSBidWZmZXIudG9TdHJpbmcoKTsKKworICAgICAgICAgICAgCXggPSB4IC0gSU5TRVQgLSBmbS5zdHJpbmdXaWR0aChkYXlOdW0pOworICAgICAgICAgICAgCXkgPSB5ICsgZm0uZ2V0QXNjZW50KCkgKyBJTlNFVDsKKworICAgICAgICAgICAgCWcuZHJhd1N0cmluZyhkYXlOdW0sIHgsIHkpOworCisgICAgICAgICAgICAJLy8gU2VlIGlmIGFueSBvZiB0aGUgaG9saWRheXMgbGFuZCBvbiB0aGlzIGRheS4uLi4KKyAgICAgICAgICAgIAlIb2xpZGF5SW5mbyBpbmZvID0gbnVsbDsKKyAgICAgICAgICAgIAlpbnQgY291bnQgPSAwOworCisgICAgICAgICAgICAJLy8gQ29vcmRpbmF0ZXMgb2YgbG93ZXItbGVmdCBjb3JuZXIgb2YgY2VsbC4KKyAgICAgICAgICAgIAl4ID0gKGludCkoKGNlbGxQb3MueCkgKiBjZWxsV2lkdGgpOworICAgICAgICAgICAgCXkgPSAoaW50KSgoY2VsbFBvcy55KzEpICogY2VsbEhlaWdodCkgKyBsYWJlbEhlaWdodDsKKworICAgICAgICAgICAgCXdoaWxlIChoIDwgZkhvbGlkYXlzLnNpemUoKSAmJgorICAgICAgICAgICAgICAgICAgICAJKGluZm8gPSAoSG9saWRheUluZm8pZkhvbGlkYXlzLmVsZW1lbnRBdChoKSkuZGF0ZSA8PSBpKQorICAgICAgICAgICAgCXsKKyAgICAgICAgICAgICAgICAJaWYgKGluZm8uZGF0ZSA9PSBpKSB7CisgICAgICAgICAgICAgICAgICAgIAkvLyBEcmF3IHRoZSBob2xpZGF5IGhlcmUuCisgICAgICAgICAgICAgICAgICAgIAlnLnNldEZvbnQobnVtYmVyRm9udCk7CisgICAgICAgICAgICAgICAgICAgIAlnLnNldENvbG9yKENvbG9yLnJlZCk7CisKKyAgICAgICAgICAgICAgICAgICAgCURlbW9UZXh0Qm94IGJveCA9IG5ldyBEZW1vVGV4dEJveChnLCBpbmZvLm5hbWUsIChpbnQpKGNlbGxXaWR0aCAtIElOU0VUKSk7CisgICAgICAgICAgICAgICAgICAgIAlib3guZHJhdyhnLCB4ICsgSU5TRVQsIHkgLSBJTlNFVCAtIGJveC5nZXRIZWlnaHQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgCXkgLT0gKGJveC5nZXRIZWlnaHQoKSArIElOU0VUKTsKKyAgICAgICAgICAgICAgICAgICAgCWNvdW50Kys7CisgICAgICAgICAgICAgICAgCX0KKyAgICAgICAgICAgICAgICAJaCsrOworICAgICAgICAgICAgCX0KKyAgICAgICAgCX0KKyAgICAJfQorCisgICAgCS8vIEltcG9ydGFudCBzdGF0ZSB2YXJpYWJsZXMKKyAgICAJcHJpdmF0ZSBMb2NhbGUgICAgICAgICAgICAgIGZDYWxlbmRhckxvY2FsZTsgICAgLy8gV2hvc2UgY2FsZW5kYXIKKyAgICAJcHJpdmF0ZSBDYWxlbmRhciAgICAgICAgICAgIGZDYWxlbmRhcjsgICAgICAgICAgLy8gQ2FsZW5kYXIgZm9yIGNhbGN1bGF0aW9ucworCisgICAgCXByaXZhdGUgTG9jYWxlICAgICAgICAgICAgICBmRGlzcGxheUxvY2FsZTsgICAgIC8vIEhvdyB0byBkaXNwbGF5IGl0CisgICAgCXByaXZhdGUgRGF0ZUZvcm1hdFN5bWJvbHMgICBmU3ltYm9sczsgICAgICAgICAgIC8vIFN5bWJvbHMgZm9yIGRyYXdpbmcKKworICAgIAlwcml2YXRlIERhdGUgICAgICAgICAgICAgICAgZlN0YXJ0T2ZNb250aDsgICAgICAvLyAwMDowMDowMCBvbiBmaXJzdCBkYXkgb2YgbW9udGgKKworICAgIAkvLyBDYWNoZWQgY2FsY3VsYXRpb25zIHRvIG1ha2UgZHJhd2luZyBmYXN0ZXIuCisgICAgCXByaXZhdGUgdHJhbnNpZW50IGludCBtaW5EYXk7ICAgICAgICAgICAvLyBNaW5pbXVtIGxlZ2FsIGRheSAjCisgICAgCXByaXZhdGUgdHJhbnNpZW50IGludCBkYXlzSW5XZWVrOyAgICAgICAvLyAjIG9mIGRheXMgaW4gYSB3ZWVrCisgICAgCXByaXZhdGUgdHJhbnNpZW50IGludCBmaXJzdERheU9mV2VlazsgICAvLyBGaXJzdCBkYXkgdG8gZGlzcGxheSBpbiB3ZWVrCisgICAgCXByaXZhdGUgdHJhbnNpZW50IGludCBudW1XZWVrczsgICAgICAgICAvLyAjIGZ1bGwgb3IgcGFydGlhbCB3ZWVrcyBpbiBtb250aAorICAgIAlwcml2YXRlIHRyYW5zaWVudCBpbnQgZGF5c0luTW9udGg7ICAgICAgLy8gIyBkYXlzIGluIHRoaXMgbW9udGgKKyAgICAJcHJpdmF0ZSB0cmFuc2llbnQgaW50IGZpcnN0RGF5SW5Nb250aDsgIC8vIERheSBvZiB3ZWVrIG9mIGZpcnN0IGRheSBpbiBtb250aAorCisgICAgCXByaXZhdGUgdHJhbnNpZW50IEhvbGlkYXlbXSBmQWxsSG9saWRheXM7CisgICAgCXByaXZhdGUgdHJhbnNpZW50IFZlY3RvciAgICBmSG9saWRheXMgPSBuZXcgVmVjdG9yKDUsNSk7CisKKyAgICAJcHJpdmF0ZSB0cmFuc2llbnQgYm9vbGVhbiBkaXJ0eSA9IHRydWU7CisJfQorCisJcHJpdmF0ZSBzdGF0aWMgY2xhc3MgSG9saWRheUluZm8geworICAgIAlwdWJsaWMgSG9saWRheUluZm8oaW50IGRhdGUsIEhvbGlkYXkgaG9saWRheSwgU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgCXRoaXMuZGF0ZSA9IGRhdGU7CisgICAgICAgIAl0aGlzLmhvbGlkYXkgPSBob2xpZGF5OworICAgICAgICAJdGhpcy5uYW1lID0gbmFtZTsKKyAgICAJfQorCisgICAgCXB1YmxpYyBIb2xpZGF5IGhvbGlkYXk7CisgICAgCXB1YmxpYyBpbnQgZGF0ZTsKKyAgICAJcHVibGljIFN0cmluZyBuYW1lOworCX0KK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vZGVtby9ob2xpZGF5L3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL2RlbW8vaG9saWRheS9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODJjYTE0NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2RlbW8vaG9saWRheS9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzwhLS0gIENvcHlyaWdodCAoQykgMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2RlbW8vaG9saWRheS9BdHRpYy9wYWNrYWdlLmh0bWwsdiAkCisgICRSZXZpc2lvbjogMS4xICQKKyAgJERhdGU6IDIwMDAvMDMvMTUgMDY6NTQ6NTAgJAorLS0+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CitIb2xpZGF5IGRlbW8gYXBwbGljYXRpb24uCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vZGVtby9wYWNrYWdlLmh0bWwgYi9zcmMvY29tL2libS9kZW1vL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wNDVjNmMzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vZGVtby9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzwhLS0gIENvcHlyaWdodCAoQykgMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2RlbW8vQXR0aWMvcGFja2FnZS5odG1sLHYgJAorICAkUmV2aXNpb246IDEuMSAkCisgICREYXRlOiAyMDAwLzAzLzE1IDE3OjQzOjQwICQKKy0tPgorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0id2hpdGUiPgorU2hhcmVkIHV0aWxpdGllcyBmb3IgZGVtbyBhcHBsaWNhdGlvbnMgYW5kIEFwcGxldHMuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vZGVtby9yYmJpL0JyZWFrSXRlcmF0b3JSdWxlc19lbl9VU19ERU1PLmphdmEgYi9zcmMvY29tL2libS9kZW1vL3JiYmkvQnJlYWtJdGVyYXRvclJ1bGVzX2VuX1VTX0RFTU8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MDk5Y2UyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vZGVtby9yYmJpL0JyZWFrSXRlcmF0b3JSdWxlc19lbl9VU19ERU1PLmphdmEKQEAgLTAsMCArMSwyMjMgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2RlbW8vcmJiaS9BdHRpYy9CcmVha0l0ZXJhdG9yUnVsZXNfZW5fVVNfREVNTy5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAxLzAyLzIwIDIyOjUwOjEyICQgCisgKiAkUmV2aXNpb246IDEuNiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXh0LnJlc291cmNlczsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CitpbXBvcnQgamF2YS5uZXQuVVJMOworCisvKioKKyAqIFRoaXMgcmVzb3VyY2UgYnVuZGxlIGlzIGluY2x1ZGVkIGZvciB0ZXN0aW5nIGFuZCBkZW1vbnN0cmF0aW9uIHB1cnBvc2VzIG9ubHkuCisgKiBJdCBhcHBsaWVzIHRoZSBkaWN0aW9uYXJ5LWJhc2VkIGFsZ29yaXRobSB0byBFbmdsaXNoIHRleHQgdGhhdCBoYXMgaGFkIGFsbCB0aGUKKyAqIHNwYWNlcyByZW1vdmVkLiAgT25jZSB3ZSBoYXZlIGdvb2QgdGVzdCBjYXNlcyBmb3IgVGhhaSwgd2Ugd2lsbCByZXBsYWNlIHRoaXMKKyAqIHdpdGggZ29vZCByZXNvdXJjZSBkYXRhIChhbmQgYSBnb29kIGRpY3Rpb25hcnkgZmlsZSkgZm9yIFRoYWkKKyAqLworcHVibGljIGNsYXNzIEJyZWFrSXRlcmF0b3JSdWxlc19lbl9VU19ERU1PIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBVUkwgdXJsID0KKyAgICAgICAgQnJlYWtJdGVyYXRvclJ1bGVzX2VuX1VTX0RFTU8uY2xhc3MuZ2V0UmVzb3VyY2UoIi9jb20vaWJtL2RhdGEvbWlzYy9lbmdsaXNoLmRpY3QiKTsKKyAgICAKKyAgICBwdWJsaWMgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRzOworICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBPYmplY3RbXVtdIGNvbnRlbnRzID0geworICAgICAgICAvLyBuYW1lcyBvZiBjbGFzc2VzIHRvIGluc3RhbnRpYXRlIGZvciB0aGUgZGlmZmVyZW50IGtpbmRzIG9mIGJyZWFrCisgICAgICAgIC8vIGl0ZXJhdG9yLiAgTm90aWNlIHdlJ3JlIG5vdyB1c2luZyBEaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yCisgICAgICAgIC8vIGZvciB3b3JkIGFuZCBsaW5lIGJyZWFraW5nLgorICAgICAgICB7ICJCcmVha0l0ZXJhdG9yQ2xhc3NlcyIsCisgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAiUnVsZUJhc2VkQnJlYWtJdGVyYXRvciIsICAgICAgICAgICAvLyBjaGFyYWN0ZXItYnJlYWsgaXRlcmF0b3IgY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJEaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yIiwgICAgIC8vIHdvcmQtYnJlYWsgaXRlcmF0b3IgY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJEaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yIiwgICAgIC8vIGxpbmUtYnJlYWsgaXRlcmF0b3IgY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIiB9ICAgICAgICAgIC8vIHNlbnRlbmNlLWJyZWFrIGl0ZXJhdG9yIGNsYXNzCisgICAgICAgIH0sCisgICAgICAgIAorICAgICAgICAvLyBUaGVzZSBhcmUgdGhlIHNhbWUgd29yZC1icmVha2luZyBydWxlcyBhcyBhcmUgc3BlY2lmaWVkIGluIHRoZSBkZWZhdWx0CisgICAgICAgIC8vIHJlc291cmNlLCBleGNlcHQgdGhhdCB0aGUgTGF0aW4gbGV0dGVycywgYXBvc3Ryb3BoZSwgYW5kIGh5cGhlbiBhcmUKKyAgICAgICAgLy8gc3BlY2lmaWVkIGFzIGRpY3Rpb25hcnkgY2hhcmFjdGVycworICAgICAgICB7ICJXb3JkQnJlYWtSdWxlcyIsCisgICAgICAgICAgICAvLyBpZ25vcmUgbm9uLXNwYWNpbmcgbWFya3MsIGVuY2xvc2luZyBtYXJrcywgYW5kIGZvcm1hdCBjaGFyYWN0ZXJzLAorICAgICAgICAgICAgLy8gYWxsIG9mIHdoaWNoIHNob3VsZCBub3QgaW5mbHVlbmNlIHRoZSBhbGdvcml0aG0KKyAgICAgICAgICAgICIkX2lnbm9yZV89W1s6TW46XVs6TWU6XVs6Q2Y6XV07IgorCisgICAgICAgICAgICAvLyBsb3dlciBhbmQgdXBwZXIgY2FzZSBSb21hbiBsZXR0ZXJzLCBhcG9zdHJvcGh5IGFuZCBkYXNoIGFyZQorICAgICAgICAgICAgLy8gaW4gdGhlIEVuZ2xpc2ggZGljdGlvbmFyeQorICAgICAgICAgICAgKyAiJF9kaWN0aW9uYXJ5Xz1bYS16QS1aXFwnXFwtXTsiCisKKyAgICAgICAgICAgIC8vIEhpbmRpIHBocmFzZSBzZXBhcmF0b3IsIGthbmppLCBrYXRha2FuYSwgaGlyYWdhbmEsIENKSyBkaWFjcml0aWNhbHMsCisgICAgICAgICAgICAvLyBvdGhlciBsZXR0ZXJzLCBhbmQgZGlnaXRzCisgICAgICAgICAgICArICIkZGFuZGE9W1x1MDk2NFx1MDk2NV07IgorICAgICAgICAgICAgKyAiJGthbmppPVtcdTMwMDVcdTRlMDAtXHU5ZmE1XHVmOTAwLVx1ZmEyZF07IgorICAgICAgICAgICAgKyAiJGthdGE9W1x1MzA5OS1cdTMwOWNcdTMwYTEtXHUzMGZlXTsiCisgICAgICAgICAgICArICIkaGlyYT1bXHUzMDQxLVx1MzA5ZVx1MzBmY107IgorICAgICAgICAgICAgKyAiJGxldD1bW1s6TDpdWzpNYzpdXS1bJGthbmppJGthdGEkaGlyYV1dOyIKKyAgICAgICAgICAgICsgIiRkZ3Q9WzpOOl07IgorCisgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbiB0aGF0IGNhbiBvY2N1ciBpbiB0aGUgbWlkZGxlIG9mIGEgd29yZDogY3VycmVudGx5CisgICAgICAgICAgICAvLyBkYXNoZXMsIGFwb3N0cm9waGVzLCBhbmQgcXVvdGF0aW9uIG1hcmtzCisgICAgICAgICAgICArICIkbWlkX3dvcmQ9W1s6UGQ6XVx1MDBhZFx1MjAyN1xcXCJcXFwnXTsiCisKKyAgICAgICAgICAgIC8vIHB1bmN0dWF0aW9uIHRoYXQgY2FuIG9jY3VyIGluIHRoZSBtaWRkbGUgb2YgYSBudW1iZXI6IGN1cnJlbnRseQorICAgICAgICAgICAgLy8gYXBvc3Ryb3BoZXMsIHFvdXRhdGlvbiBtYXJrcywgcGVyaW9kcywgY29tbWFzLCBhbmQgdGhlIEFyYWJpYworICAgICAgICAgICAgLy8gZGVjaW1hbCBwb2ludAorICAgICAgICAgICAgKyAiJG1pZF9udW09W1xcXCJcXFwnXFwsXHUwNjZiXFwuXTsiCisKKyAgICAgICAgICAgIC8vIHB1bmN0dWF0aW9uIHRoYXQgY2FuIG9jY3VyIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBudW1iZXI6IGN1cnJlbnRseQorICAgICAgICAgICAgLy8gdGhlIHBlcmlvZCwgdGhlIG51bWJlciBzaWduLCBhbmQgYWxsIGN1cnJlbmN5IHN5bWJvbHMgZXhjZXB0IHRoZSBjZW50cyBzaWduCisgICAgICAgICAgICArICIkcHJlX251bT1bW1s6U2M6XS1bXHUwMGEyXV1cXCNcXC5dOyIKKworICAgICAgICAgICAgLy8gcHVuY3R1YXRpb24gdGhhdCBjYW4gb2NjdXIgYXQgdGhlIGVuZCBvZiBhIG51bWJlcjogY3VycmVudGx5CisgICAgICAgICAgICAvLyB0aGUgcGVyY2VudCwgcGVyLXRob3VzYW5kLCBwZXItdGVuLXRob3VzYW5kLCBhbmQgQXJhYmljIHBlcmNlbnQKKyAgICAgICAgICAgIC8vIHNpZ25zLCB0aGUgY2VudHMgc2lnbiwgYW5kIHRoZSBhbXBlcnNhbmQKKyAgICAgICAgICAgICsgIiRwb3N0X251bT1bXFwlXFwmXHUwMGEyXHUwNjZhXHUyMDMwXHUyMDMxXTsiCisKKyAgICAgICAgICAgIC8vIGxpbmUgc2VwYXJhdG9yczogY3VycmVudGx5IExGLCBGRiwgUFMsIGFuZCBMUworICAgICAgICAgICAgKyAiJGxzPVtcblx1MDAwY1x1MjAyOFx1MjAyOV07IgorCisgICAgICAgICAgICAvLyB3aGl0ZXNwYWNlOiBhbGwgc3BhY2Ugc2VwYXJhdG9ycyBhbmQgdGhlIHRhYiBjaGFyYWN0ZXIKKyAgICAgICAgICAgICsgIiR3cz1bWzpaczpdXHRdOyIKKworICAgICAgICAgICAgLy8gYSB3b3JkIGlzIGEgc2VxdWVuY2Ugb2YgbGV0dGVycyB0aGF0IG1heSBjb250YWluIGludGVybmFsCisgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbiwgYXMgbG9uZyBhcyBpdCBiZWdpbnMgYW5kIGVuZHMgd2l0aCBhIGxldHRlciBhbmQKKyAgICAgICAgICAgIC8vIG5ldmVyIGNvbnRhaW5zIHR3byBwdW5jdHVhdGlvbiBtYXJrcyBpbiBhIHJvdworICAgICAgICAgICAgKyAiJHdvcmQ9KCRsZXQrKCRtaWRfd29yZCRsZXQrKSokZGFuZGE/KTsiCisKKyAgICAgICAgICAgIC8vIGEgbnVtYmVyIGlzIGEgc2VxdWVuY2Ugb2YgZGlnaXRzIHRoYXQgbWF5IGNvbnRhaW4gaW50ZXJuYWwKKyAgICAgICAgICAgIC8vIHB1bmN0dWF0aW9uLCBhcyBsb25nIGFzIGl0IGJlZ2lucyBhbmQgZW5kcyB3aXRoIGEgZGlnaXQgYW5kCisgICAgICAgICAgICAvLyBuZXZlciBjb250YWlucyB0d28gcHVuY3R1YXRpb24gbWFya3MgaW4gYSByb3cuCisgICAgICAgICAgICArICIkbnVtYmVyPSgkZGd0KygkbWlkX251bSRkZ3QrKSopOyIKKworICAgICAgICAgICAgLy8gYnJlYWsgYWZ0ZXIgZXZlcnkgY2hhcmFjdGVyLCB3aXRoIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9ucworICAgICAgICAgICAgLy8gKHRoaXMgd2lsbCBjYXVzZSBwdW5jdHVhdGlvbiBtYXJrcyB0aGF0IGFyZW4ndCBjb25zaWRlcmVkCisgICAgICAgICAgICAvLyBwYXJ0IG9mIHdvcmRzIG9yIG51bWJlcnMgdG8gYmUgdHJlYXRlZCBhcyB3b3JkcyB1bnRvIHRoZW1zZWx2ZXMpCisgICAgICAgICAgICArICIuOyIKKworICAgICAgICAgICAgLy8ga2VlcCB0b2dldGhlciBhbnkgc2VxdWVuY2Ugb2YgY29udGlndW91cyB3b3JkcyBhbmQgbnVtYmVycworICAgICAgICAgICAgLy8gKGluY2x1ZGluZyBqdXN0IG9uZSBvZiBlaXRoZXIpLCBwbHVzIGFuIG9wdGlvbmFsIHRyYWlsaW5nCisgICAgICAgICAgICAvLyBudW1iZXItc3VmZml4IGNoYXJhY3RlcgorICAgICAgICAgICAgKyAiJHdvcmQ/KCRudW1iZXIkd29yZCkqKCRudW1iZXIkcG9zdF9udW0/KT87IgorCisgICAgICAgICAgICAvLyBrZWVwIHRvZ2V0aGVyIGFuZCBzZXF1ZW5jZSBvZiBjb250aWd1b3VzIHdvcmRzIGFuZCBudW1iZXJzCisgICAgICAgICAgICAvLyB0aGF0IHN0YXJ0cyB3aXRoIGEgbnVtYmVyLXByZWZpeCBjaGFyYWN0ZXIgYW5kIGEgbnVtYmVyLAorICAgICAgICAgICAgLy8gYW5kIG1heSBlbmQgd2l0aCBhIG51bWJlci1zdWZmaXggY2hhcmFjdGVyCisgICAgICAgICAgICArICIkcHJlX251bSgkbnVtYmVyJHdvcmQpKigkbnVtYmVyJHBvc3RfbnVtPyk/OyIKKworICAgICAgICAgICAgLy8ga2VlcCB0b2dldGhlciBydW5zIG9mIHdoaXRlc3BhY2UgKG9wdGlvbmFsbHkgd2l0aCBhIHNpbmdsZSB0cmFpbGluZworICAgICAgICAgICAgLy8gbGluZSBzZXBhcmF0b3Igb3IgQ1JMRiBzZXF1ZW5jZSkKKyAgICAgICAgICAgICsgIiR3cypccj8kbHM/OyIKKworICAgICAgICAgICAgLy8ga2VlcCB0b2dldGhlciBydW5zIG9mIEthdGFrYW5hCisgICAgICAgICAgICArICIka2F0YSo7IgorCisgICAgICAgICAgICAvLyBrZWVwIHRvZ2V0aGVyIHJ1bnMgb2YgSGlyYWdhbmEKKyAgICAgICAgICAgICsgIiRoaXJhKjsiCisKKyAgICAgICAgICAgIC8vIGtlZXAgdG9nZXRoZXIgcnVucyBvZiBLYW5qaQorICAgICAgICAgICAgKyAiJGthbmppKjsifSwKKyAgICAgICAgCisgICAgICAgIC8vIFRoZXNlIGFyZSB0aGUgc2FtZSBsaW5lLWJyZWFraW5nIHJ1bGVzIGFzIGFyZSBzcGVjaWZpZWQgaW4gdGhlIGRlZmF1bHQKKyAgICAgICAgLy8gcmVzb3VyY2UsIGV4Y2VwdCB0aGF0IHRoZSBMYXRpbiBsZXR0ZXJzLCBhcG9zdHJvcGhlLCBhbmQgaHlwaGVuIGFyZQorICAgICAgICAvLyBzcGVjaWZpZWQgYXMgZGljdGlvbmFyeSBjaGFyYWN0ZXJzCisgICAgICAgIHsgIkxpbmVCcmVha1J1bGVzIiwKKyAgICAgICAgICAgIC8vIGlnbm9yZSBub24tc3BhY2luZyBtYXJrcywgZW5jbG9zaW5nIG1hcmtzLCBhbmQgZm9ybWF0IGNoYXJhY3RlcnMKKyAgICAgICAgICAgICIkX2lnbm9yZV89W1s6TW46XVs6TWU6XVs6Q2Y6XV07IgorCisgICAgICAgICAgICAvLyBsb3dlciBhbmQgdXBwZXIgY2FzZSBSb21hbiBsZXR0ZXJzLCBhcG9zdHJvcGh5IGFuZCBkYXNoCisgICAgICAgICAgICAvLyBhcmUgaW4gdGhlIEVuZ2xpc2ggZGljdGlvbmFyeQorICAgICAgICAgICAgKyAiJF9kaWN0aW9uYXJ5Xz1bYS16QS1aXFwnXFwtXTsiCisKKyAgICAgICAgICAgIC8vIEhpbmRpIHBocmFzZSBzZXBhcmF0b3JzCisgICAgICAgICAgICArICIkZGFuZGE9W1x1MDk2NFx1MDk2NV07IgorCisgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzIHRoYXQgYWx3YXlzIGNhdXNlIGEgYnJlYWs6IEVUWCwgdGFiLCBMRiwgRkYsIExTLCBhbmQgUFMKKyAgICAgICAgICAgICsgIiRicmVhaz1bXHUwMDAzXHRcblxmXHUyMDI4XHUyMDI5XTsiCisKKyAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMgdGhhdCBhbHdheXMgcHJldmVudCBhIGJyZWFrOiB0aGUgbm9uLWJyZWFraW5nIHNwYWNlCisgICAgICAgICAgICAvLyBhbmQgc2ltaWxhciBjaGFyYWN0ZXJzCisgICAgICAgICAgICArICIkbmJzcD1bXHUwMGEwXHUyMDA3XHUyMDExXHVmZWZmXTsiCisKKyAgICAgICAgICAgIC8vIHdoaXRlc3BhY2U6IHNwYWNlIHNlcGFyYXRvcnMgYW5kIGNvbnRyb2wgY2hhcmFjdGVycywgZXhjZXB0IGZvcgorICAgICAgICAgICAgLy8gQ1IgYW5kIHRoZSBvdGhlciBjaGFyYWN0ZXJzIG1lbnRpb25lZCBhYm92ZQorICAgICAgICAgICAgKyAiJHNwYWNlPVtbWzpaczpdWzpDYzpdXS1bJG5ic3AkYnJlYWtccl1dOyIKKworICAgICAgICAgICAgLy8gZGFzaGVzOiBkYXNoIHB1bmN0dWF0aW9uIGFuZCB0aGUgZGlzY3JldGlvbmFyeSBoeXBoZW4sIGV4Y2VwdCBmb3IKKyAgICAgICAgICAgIC8vIG5vbi1icmVha2luZyBoeXBoZW5zCisgICAgICAgICAgICArICIkZGFzaD1bW1s6UGQ6XVx1MDBhZF0tWyRuYnNwXV07IgorCisgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzIHRoYXQgc3RpY2sgdG8gYSB3b3JkIGlmIHRoZXkgcHJlY2VkZSBpdDogY3VycmVuY3kgc3ltYm9scworICAgICAgICAgICAgLy8gKGV4Y2VwdCB0aGUgY2VudHMgc2lnbikgYW5kIHN0YXJ0aW5nIHB1bmN0dWF0aW9uCisgICAgICAgICAgICArICIkcHJlX3dvcmQ9W1tbOlNjOl0tW1x1MDBhMl1dWzpQczpdXFxcIlxcXCddOyIKKworICAgICAgICAgICAgLy8gY2hhcmFjdGVycyB0aGF0IHN0aWNrIHRvIGEgd29yZCBpZiB0aGV5IGZvbGxvdyBpdDogZW5kaW5nIHB1bmN0dWF0aW9uLAorICAgICAgICAgICAgLy8gb3RoZXIgcHVuY3R1YXRpb24gdGhhdCB1c3VhbGx5IG9jY3VycyBhdCB0aGUgZW5kIG9mIGEgc2VudGVuY2UsCisgICAgICAgICAgICAvLyBzbWFsbCBLYW5hIGNoYXJhY3RlcnMsIHNvbWUgQ0pLIGRpYWNyaXRpY3MsIGV0Yy4KKyAgICAgICAgICAgICsgIiRwb3N0X3dvcmQ9W1s6UGU6XVxcIVxcXCJcXFwnXFwlXFwuXFwsXFw6XFw7XFw/XHUwMGEyXHUwMGIwXHUwNjZhXHUyMDMwLVx1MjAzNCIKKyAgICAgICAgICAgICAgICAgICAgKyAiXHUyMTAzXHUyMTA1XHUyMTA5XHUzMDAxXHUzMDAyXHUzMDA1XHUzMDQxXHUzMDQzXHUzMDQ1XHUzMDQ3XHUzMDQ5XHUzMDYzIgorICAgICAgICAgICAgICAgICAgICArICJcdTMwODNcdTMwODVcdTMwODdcdTMwOGVcdTMwOTktXHUzMDllXHUzMGExXHUzMGEzXHUzMGE1XHUzMGE3XHUzMGE5IgorICAgICAgICAgICAgICAgICAgICArICJcdTMwYzNcdTMwZTNcdTMwZTVcdTMwZTdcdTMwZWVcdTMwZjVcdTMwZjZcdTMwZmMtXHUzMGZlXHVmZjAxXHVmZjBjIgorICAgICAgICAgICAgICAgICAgICArICJcdWZmMGVcdWZmMWZdOyIKKworICAgICAgICAgICAgLy8gS2Fuamk6IGFjdHVhbGx5IGluY2x1ZGVzIGJvdGggS2FuamkgYW5kIEthbmEsIGV4Y2VwdCBmb3Igc21hbGwgS2FuYSBhbmQKKyAgICAgICAgICAgIC8vIENKSyBkaWFjcml0aWNzCisgICAgICAgICAgICArICIka2Fuamk9W1tcdTRlMDAtXHU5ZmE1XHVmOTAwLVx1ZmEyZFx1MzA0MS1cdTMwOTRcdTMwYTEtXHUzMGZhXS1bJHBvc3Rfd29yZCRfaWdub3JlX11dOyIKKworICAgICAgICAgICAgLy8gZGlnaXRzCisgICAgICAgICAgICArICIkZGlnaXQ9W1s6TmQ6XVs6Tm86XV07IgorCisgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbiB0aGF0IGNhbiBvY2N1ciBpbiB0aGUgbWlkZGxlIG9mIGEgbnVtYmVyOiBwZXJpb2RzIGFuZCBjb21tYXMKKyAgICAgICAgICAgICsgIiRtaWRfbnVtPVtcXC5cXCxdOyIKKworICAgICAgICAgICAgLy8gZXZlcnl0aGluZyBub3QgbWVudGlvbmVkIGFib3ZlLCBwbHVzIHRoZSBxdW90ZSBtYXJrcyAod2hpY2ggYXJlIGJvdGgKKyAgICAgICAgICAgIC8vIDxwcmUtd29yZD4sIDxwb3N0LXdvcmQ+LCBhbmQgPGNoYXI+KQorICAgICAgICAgICAgKyAiJGNoYXI9W14kYnJlYWskc3BhY2UkZGFzaCRrYW5qaSRuYnNwJF9pZ25vcmVfJHByZV93b3JkJHBvc3Rfd29yZCRtaWRfbnVtJGRhbmRhXHJcXFwiXFxcJ107IgorCisgICAgICAgICAgICAvLyBhICJudW1iZXIiIGlzIGEgcnVuIG9mIHByZWZpeCBjaGFyYWN0ZXJzIGFuZCBkYXNoZXMsIGZvbGxvd2VkIGJ5IG9uZSBvcgorICAgICAgICAgICAgLy8gbW9yZSBkaWdpdHMgd2l0aCBpc29sYXRlZCBudW1iZXItcHVuY3R1YXRpb24gY2hhcmFjdGVycyBpbnRlcnNwZXJzZWQKKyAgICAgICAgICAgICsgIiRudW1iZXI9KFskcHJlX3dvcmQkZGFzaF0qJGRpZ2l0KygkbWlkX251bSRkaWdpdCspKik7IgorCisgICAgICAgICAgICAvLyB0aGUgYmFzaWMgY29yZSBvZiBhIHdvcmQgY2FuIGJlIGVpdGhlciBhICJudW1iZXIiIGFzIGRlZmluZWQgYWJvdmUsIGEgc2luZ2xlCisgICAgICAgICAgICAvLyAiS2FuamkiIGNoYXJhY3Rlciwgb3IgYSBydW4gb2YgYW55IG51bWJlciBvZiBub3QtZXhwbGljaXRseS1tZW50aW9uZWQKKyAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMgKHRoaXMgaW5jbHVkZXMgTGF0aW4gbGV0dGVycykKKyAgICAgICAgICAgICsgIiR3b3JkX2NvcmU9KFskcHJlX3dvcmQkY2hhcl0qfCRrYW5qaXwkbnVtYmVyKTsiCisKKyAgICAgICAgICAgIC8vIGEgd29yZCBtYXkgZW5kIHdpdGggYW4gb3B0aW9uYWwgc3VmZml4IHRoYXQgYmUgZWl0aGVyIGEgcnVuIG9mIG9uZSBvcgorICAgICAgICAgICAgLy8gbW9yZSBkYXNoZXMgb3IgYSBydW4gb2Ygd29yZC1zdWZmaXggY2hhcmFjdGVycywgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwKKyAgICAgICAgICAgIC8vIHJ1biBvZiB3aGl0ZXNwYWNlCisgICAgICAgICAgICArICIkd29yZF9zdWZmaXg9KCgkZGFzaCt8JHBvc3Rfd29yZCopJHNwYWNlKik7IgorCisgICAgICAgICAgICAvLyBhIHdvcmQsIHRodXMsIGlzIGFuIG9wdGlvbmFsIHJ1biBvZiB3b3JkLXByZWZpeCBjaGFyYWN0ZXJzLCBmb2xsb3dlZCBieQorICAgICAgICAgICAgLy8gYSB3b3JkIGNvcmUgYW5kIGEgd29yZCBzdWZmaXggKHRoZSBzeW50YXggb2YgPHdvcmQtY29yZT4gYW5kIDx3b3JkLXN1ZmZpeD4KKyAgICAgICAgICAgIC8vIGFjdHVhbGx5IGFsbG93cyBlaXRoZXIgb2YgdGhlbSB0byBtYXRjaCB0aGUgZW1wdHkgc3RyaW5nLCBwdXR0aW5nIGEgYnJlYWsKKyAgICAgICAgICAgIC8vIGJldHdlZW4gdGhpbmdzIGxpa2UgIikoIiBvciAiYWFhKGFhYSIKKyAgICAgICAgICAgICsgIiR3b3JkPSgkcHJlX3dvcmQqJHdvcmRfY29yZSR3b3JkX3N1ZmZpeCk7IgorCisgICAgICAgICAgICAvLyBmaW5hbGx5LCB0aGUgcnVsZSB0aGF0IGRvZXMgdGhlIHdvcms6IEtlZXAgdG9nZXRoZXIgYW55IHJ1biBvZiB3b3JkcyB0aGF0CisgICAgICAgICAgICAvLyBhcmUgam9pbmVkIGJ5IHJ1bnMgb2Ygb25lIG9mIG1vcmUgbm9uLXNwYWNpbmcgbWFyay4gIEFsc28ga2VlcCBhIHRyYWlsaW5nCisgICAgICAgICAgICAvLyBsaW5lLWJyZWFrIGNoYXJhY3RlciBvciBDUkxGIGNvbWJpbmF0aW9uIHdpdGggdGhlIHdvcmQuICAobGluZSBzZXBhcmF0b3JzCisgICAgICAgICAgICAvLyAid2luIiBvdmVyIG5ic3AncykKKyAgICAgICAgICAgICsgIiR3b3JkKCRuYnNwKyR3b3JkKSpccj8kYnJlYWs/OyIgfSwKKyAgICAgICAgICAgIAorICAgICAgICAvLyB0aGVzZSB0d28gcmVzb3VyY2VzIHNwZWNpZnkgdGhlIHBhdGhuYW1lcyBvZiB0aGUgZGljdGlvbmFyeSBmaWxlcyB0bworICAgICAgICAvLyB1c2UgZm9yIHdvcmQgYnJlYWtpbmcgYW5kIGxpbmUgYnJlYWtpbmcuICBCb3RoIGN1cnJlbnRseSByZWZlciB0byAKKyAgICAgICAgLy8gYSBmaWxlIGNhbGxlZCBlbmdsaXNoLmRpY3QgcGxhY2VkIGluIGNvbVxpYm1cdGV4dFxyZXNvdXJjZXMKKyAgICAgICAgLy8gc29tZXdoZXJlIGluIHRoZSBjbGFzcyBwYXRoLiAgSXQncyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0CisgICAgICAgIC8vIGVuZ2xpc2guZGljdCB3YXMgY3JlYXRlZCBmb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5LCBhbmQgZG9lc24ndAorICAgICAgICAvLyBjb21lIGFueXdoZXJlIGNsb3NlIHRvIGJlaW5nIGFuIGV4aGF1c3RpdmUgZGljdGlvbmFyeSBvZiBFbmdsaXNoCisgICAgICAgIC8vIHdvcmRzIChiYXNpY2FsbHksIGl0IGNvbnRhaW5zIGFsbCB0aGUgd29yZHMgaW4gdGhlIERlY2xhcmF0aW9uIG9mCisgICAgICAgIC8vIEluZGVwZW5kZW5jZSwgYW5kIHRoZSBSZXZpc2VkIFN0YW5kYXJkIFZlcnNpb24gb2YgdGhlIGJvb2sgb2YgR2VuZXNpcywKKyAgICAgICAgLy8gcGx1cyBhIGZldyBvdGhlciB3b3JkcyB0aHJvd24gaW4gdG8gc2hvdyBtb3JlIGludGVyZXN0aW5nIGNhc2VzKS4KKyAgICAgICAgLy8geyAiV29yZEJyZWFrRGljdGlvbmFyeSIsICJjb21cXGlibVxcdGV4dFxccmVzb3VyY2VzXFxlbmdsaXNoLmRpY3QiIH0sCisgICAgICAgIC8vIHsgIkxpbmVCcmVha0RpY3Rpb25hcnkiLCAiY29tXFxpYm1cXHRleHRcXHJlc291cmNlc1xcZW5nbGlzaC5kaWN0IiB9CisgICAgICAgIHsgIldvcmRCcmVha0RpY3Rpb25hcnkiLCB1cmwgfSwKKyAgICAgICAgeyAiTGluZUJyZWFrRGljdGlvbmFyeSIsIHVybCB9CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2RlbW8vcmJiaS9EQkJJRGVtby5qYXZhIGIvc3JjL2NvbS9pYm0vZGVtby9yYmJpL0RCQklEZW1vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTBiZGIxZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2RlbW8vcmJiaS9EQkJJRGVtby5qYXZhCkBAIC0wLDAgKzEsNDU4IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9kZW1vL3JiYmkvQXR0aWMvREJCSURlbW8uamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMS8wMi8yMCAyMjo0ODoxOSAkIAorICogJFJldmlzaW9uOiAxLjYgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0uZGVtby5yYmJpOworCitpbXBvcnQgY29tLmlibS5kZW1vLio7CitpbXBvcnQgamF2YS5hcHBsZXQuQXBwbGV0OworaW1wb3J0IGphdmEuYXd0Lio7CitpbXBvcnQgamF2YXguc3dpbmcuSlRleHRBcmVhOworaW1wb3J0IGphdmF4LnN3aW5nLkpTY3JvbGxQYW5lOworaW1wb3J0IGphdmF4LnN3aW5nLkJvcmRlckZhY3Rvcnk7CitpbXBvcnQgamF2YS51dGlsLio7CisKK2ltcG9ydCBjb20uaWJtLnRleHQuQnJlYWtJdGVyYXRvcjsKKworcHVibGljIGNsYXNzIERCQklEZW1vIGV4dGVuZHMgRGVtb0FwcGxldAoreworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmd2W10pIHsKKyAgICAgICAgTG9jYWxlLnNldERlZmF1bHQobmV3IExvY2FsZSgiZW4iLCAiVVMiLCAiREVNTyIpKTsKKwkJbmV3IERCQklEZW1vKCkuc2hvd0RlbW8oKTsKKyAgICB9CisKKyAgICBwdWJsaWMgRnJhbWUgY3JlYXRlRGVtb0ZyYW1lKERlbW9BcHBsZXQgYXBwbGV0KSB7CisgICAgICAgIHJldHVybiBuZXcgREJCSUZyYW1lKGFwcGxldCk7CisgICAgfQorfQorCisKKworY2xhc3MgREJCSUZyYW1lIGV4dGVuZHMgRnJhbWUKK3sKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY3JlZGl0U3RyaW5nID0KKyAgICAgICAgInYxLjFhOSwgRGVtbyI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRklFTERfQ09MVU1OUyA9IDQ1OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEZvbnQgY2hvaWNlRm9udCA9IG51bGw7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlOworICAgIHByaXZhdGUgRGVtb0FwcGxldCBhcHBsZXQ7CisKKyAgICBmaW5hbCBTdHJpbmcgcmlnaHQgPSAiLS0+IjsKKyAgICBmaW5hbCBTdHJpbmcgbGVmdCA9ICI8LS0iOworCisgICAgcHJpdmF0ZSBCcmVha0l0ZXJhdG9yIGVudW07CisKK0pUZXh0QXJlYSB0ZXh0OworLy8gICAgVGV4dEFyZWEgdGV4dDsKKyAgICBDaG9pY2UgYm91bmQ7CisKKyAgICBwdWJsaWMgREJCSUZyYW1lKERlbW9BcHBsZXQgYXBwbGV0KQorICAgIHsKKyAgICAgICAgdGhpcy5hcHBsZXQgPSBhcHBsZXQ7CisgICAgICAgIGluaXQoKTsKKyAgICAgICAgc3RhcnQoKTsKKyAgICB9CisKKworCisgICAgcHVibGljIHZvaWQgcnVuKCkKKyAgICB7CisgICAgICAgIC8qCisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGNoZWNrQ2hhbmdlKCk7CisgICAgICAgICAgICAgICAgVGhyZWFkLnNsZWVwKDI1MCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaCAoVGhyb3dhYmxlIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAqLworICAgIH0KKworICAgIGludCBzLCBlOworICAgIGludCB0cywgdGU7CisKKyAgICBwdWJsaWMgdm9pZCBjaGVja0NoYW5nZSgpCisgICAgeworLy8gICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiY2hlY2tDaGFuZ2UuLi4iKTsKKyAgICAgICAgaWYgKCh0ZXh0LmdldFNlbGVjdGlvblN0YXJ0KCkgJiAweDdGRkYpICE9IHRzIHx8CisgICAgICAgICAgICAodGV4dC5nZXRTZWxlY3Rpb25FbmQoKSAmIDB4N0ZGRikgIT0gdGUpIHsKKworICAgICAgICAgICAgaW50IHRlbXBTID0gdGV4dC5nZXRTZWxlY3Rpb25TdGFydCgpICYgMHg3RkZGOworICAgICAgICAgICAgaW50IHRlbXBFID0gdGV4dC5nZXRTZWxlY3Rpb25FbmQoKSAmIDB4N0ZGRjsKKworLy8gICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCI+Iik7CisvLyAgICAgICAgICBzZWxlY3QoMCwgMCk7CisvLyAgICAgICAgICBzZWxlY3QodGVtcFMsIHRlbXBFKTsKKyAgICAgICAgICAgIC8vc2VsZWN0KHRlbXBTIC0gKHRzIC0gcyksIHRlbXBFIC0gKHRlIC0gZSkpOworLy8gICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCI8Iik7CisKKworLy8gICAgICAgICAgaWYgKHMgIT0gdHMgfHwgZSAhPSB0ZSkgU3lzdGVtLm91dC5wcmludGxuKCIgICAgIHMoIitzKyIpIHRzKCIrdHMrIikgZSgiK2UrIikgdGUoIit0ZSsiKSIpOworLy8gICAgICAgICAgaWYgKHRlbXBTICE9IHRzIHx8IHRlbXBFICE9IHRlKSBTeXN0ZW0ub3V0LnByaW50bG4oIj5zKCIrcysiKSB0ZW1wUygiK3RlbXBTKyIpIGUoIitlKyIpIHRlbXBFKCIrdGVtcEUrIikiKTsKKy8vICAgICAgICAgIHNlbGVjdChzIC0gKHRzIC0gcyksIGUgLSAodGUgLSBlKSk7CisvLyAgICAgICAgICBpZiAodGVtcFMgIT0gdHMgfHwgdGVtcEUgIT0gdGUpIFN5c3RlbS5vdXQucHJpbnRsbigicygiK3MrIikgdGVtcFMoIit0ZW1wUysiKSBlKCIrZSsiKSB0ZW1wRSgiK3RlbXBFKyIpIik7CisKKy8vICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigibGtkc2xrc2oiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNlbGVjdChpbnQgc0luLCBpbnQgZUluKQorICAgIHsKKyAgICAgICAgcyA9IHNJbjsKKyAgICAgICAgZSA9IGVJbjsKKyAgICAgICAgdGV4dC5zZWxlY3QocywgZSk7CisgICAgICAgIHRzID0gdGV4dC5nZXRTZWxlY3Rpb25TdGFydCgpICYgMHg3RkZGOworICAgICAgICB0ZSA9IHRleHQuZ2V0U2VsZWN0aW9uRW5kKCkgJiAweDdGRkY7CisvLyAgICAgICAgaWYgKHMgIT0gdHMgfHwgZSAhPSB0ZSkgeworLy8gICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIj5zKCIrcysiKSB0cygiK3RzKyIpIGUoIitlKyIpIHRlKCIrdGUrIikiKTsKKy8vICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAiKyh0cy1zKSsiLCIrKHRlLWUpKTsKKy8vICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRTZWxlY3Rpb25TdGFydCgpCisgICAgeworICAgICAgICBjaGVja0NoYW5nZSgpOworLy8gICAgICByZXR1cm4gczsKKyAgICAgICAgcmV0dXJuIHRleHQuZ2V0U2VsZWN0aW9uU3RhcnQoKSAmIDB4N0ZGRjsKKyAgICB9CisKKworICAgIHB1YmxpYyBpbnQgZ2V0U2VsZWN0aW9uRW5kKCkKKyAgICB7CisgICAgICAgIGNoZWNrQ2hhbmdlKCk7CisvLyAgICAgIHJldHVybiBlOworICAgICAgICByZXR1cm4gdGV4dC5nZXRTZWxlY3Rpb25FbmQoKSAmIDB4N0ZGRjsKKyAgICB9CisKKyAgICBwdWJsaWMgZmluYWwgc3luY2hyb25pemVkIHZvaWQgc2VsZWN0UmFuZ2UoaW50IHMsIGludCBlKQorICAgIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIC8vaWYgKGdldFNlbGVjdGlvblN0YXJ0KCkgIT0gcyB8fCBnZXRTZWxlY3Rpb25FbmQoKSAhPSBlKSB7CisgICAgICAgICAgICAgICAgLy90ZXh0LnNlbGVjdChzLCBlKTsKKyAgICAgICAgICAgICAgICBzZWxlY3QocyxlKTsKKyAgICAgICAgICAgIC8vfQorLy8gICAgICAgICAgaWYgKGdldFNlbGVjdGlvblN0YXJ0KCkgIT0gcyB8fCBnZXRTZWxlY3Rpb25FbmQoKSAhPSBlKSB7CisvLyAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJBR0ghIHNlbGVjdCgiK3MrIiwiK2UrIikgLT4gKCIrCisvLyAgICAgICAgICAgICAgZ2V0U2VsZWN0aW9uU3RhcnQoKSsiLCIrZ2V0U2VsZWN0aW9uRW5kKCkrIikiKTsKKy8vICAgICAgICAgICAgICB0ZXh0LnNlbGVjdChzIC0gKGdldFNlbGVjdGlvblN0YXJ0KCkgLSBzKSwgZSAtIChnZXRTZWxlY3Rpb25FbmQoKSAtIGUpKTsKKy8vICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4cCkgeworICAgICAgICAgICAgZXJyb3JUZXh0KGV4cC50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KKworCisKKyAgICBwdWJsaWMgdm9pZCBpbml0KCkKKyAgICB7CisgICAgICAgIGJ1aWxkR1VJKCk7CisgICAgfQorCisKKyAgICBwdWJsaWMgdm9pZCBzdGFydCgpCisgICAgeworICAgIH0KKworCisgICAgdm9pZCBhZGRXaXRoRm9udChDb250YWluZXIgY29udGFpbmVyLCBDb21wb25lbnQgZm9vLCBGb250IGZvbnQpIHsKKyAgICAgICAgaWYgKGZvbnQgIT0gbnVsbCkKKyAgICAgICAgICAgIGZvby5zZXRGb250KGZvbnQpOworICAgICAgICBjb250YWluZXIuYWRkKGZvbyk7CisgICAgfQorCisKKworICAgcHVibGljIHZvaWQgYnVpbGRHVUkoKQorICAgIHsKKyAgICAgICAgc2V0QmFja2dyb3VuZChEZW1vVXRpbGl0eS5iZ0NvbG9yKTsKKyAgICAgICAgc2V0TGF5b3V0KG5ldyBCb3JkZXJMYXlvdXQoKSk7CisKKyAgICAgICBQYW5lbCB0b3BQYW5lbCA9IG5ldyBQYW5lbCgpOworCisgICAgICAgICAgICBMYWJlbCB0aXRsZUxhYmVsID0KKyAgICAgICAgICAgICAgICBuZXcgTGFiZWwoIlRleHQgQm91bmRhcnkgRGVtbyIsIExhYmVsLkNFTlRFUik7CisgICAgICAgICAgICB0aXRsZUxhYmVsLnNldEZvbnQoRGVtb1V0aWxpdHkudGl0bGVGb250KTsKKyAgICAgICAgICAgIHRvcFBhbmVsLmFkZCh0aXRsZUxhYmVsKTsKKworICAgICAgICAgICAgLy9MYWJlbCBkZW1vPW5ldyBMYWJlbChjcmVkaXRTdHJpbmcsIExhYmVsLkNFTlRFUik7CisgICAgICAgICAgICAvL2RlbW8uc2V0Rm9udChEZW1vVXRpbGl0eS5jcmVkaXRGb250KTsKKyAgICAgICAgICAgIC8vdG9wUGFuZWwuYWRkKGRlbW8pOworCisgICAgICAgICAgICBQYW5lbCBjaG9pY2VQYW5lbCA9IG5ldyBQYW5lbCgpOworCisgICAgICAgICAgICBMYWJlbCBkZW1vMT1uZXcgTGFiZWwoIkJvdW5kYXJpZXMiLCBMYWJlbC5MRUZUKTsKKyAgICAgICAgICAgIGRlbW8xLnNldEZvbnQoRGVtb1V0aWxpdHkubGFiZWxGb250KTsKKyAgICAgICAgICAgIGNob2ljZVBhbmVsLmFkZChkZW1vMSk7CisKKyAgICAgICAgICAgIGJvdW5kID0gbmV3IENob2ljZSgpOworICAgICAgICAgICAgICAgIGJvdW5kLnNldEJhY2tncm91bmQoRGVtb1V0aWxpdHkuY2hvaWNlQ29sb3IpOworICAgICAgICAgICAgYm91bmQuYWRkSXRlbSgiU2VudGVuY2UiKTsKKyAgICAgICAgICAgIGJvdW5kLmFkZEl0ZW0oIkxpbmUgQnJlYWsiKTsKKyAgICAgICAgICAgIGJvdW5kLmFkZEl0ZW0oIldvcmQiKTsKKyAgICAgICAgICAgIGJvdW5kLmFkZEl0ZW0oIkNoYXIiKTsKKyAgICAgICAgICAgIGlmIChjaG9pY2VGb250ICE9IG51bGwpCisgICAgICAgICAgICAgICAgYm91bmQuc2V0Rm9udChjaG9pY2VGb250KTsKKworICAgICAgICAgICAgY2hvaWNlUGFuZWwuYWRkKGJvdW5kKTsKKyAgICAgICAgICAgIHRvcFBhbmVsLmFkZChjaG9pY2VQYW5lbCk7CisKKyAgICAgICAgICAgIERlbW9VdGlsaXR5LmZpeEdyaWQodG9wUGFuZWwsMSk7CisKKworICAgICAgICBhZGQoIk5vcnRoIiwgdG9wUGFuZWwpOworCisKKyAgICAgICAgICAgIGludCBST1dTID0gMTU7CisgICAgICAgICAgICBpbnQgQ09MVU1OUyA9IDUwOworLy8gICAgICAgICAgICB0ZXh0ID0gbmV3IFRleHRBcmVhKGdldEluaXRpYWxUZXh0KCksIFJPV1MsIENPTFVNTlMpOwordGV4dCA9IG5ldyBKVGV4dEFyZWEoZ2V0SW5pdGlhbFRleHQoKSwgUk9XUywgQ09MVU1OUyk7Cit0ZXh0LnNldExpbmVXcmFwKHRydWUpOwordGV4dC5zZXRXcmFwU3R5bGVXb3JkKHRydWUpOworICAgICAgICAgICAgdGV4dC5zZXRFZGl0YWJsZSh0cnVlKTsKKyAgICAgICAgICAgIHRleHQuc2VsZWN0QWxsKCk7CisgICAgICAgICAgICB0ZXh0LnNldEZvbnQoRGVtb1V0aWxpdHkuZWRpdEZvbnQpOworICAgICAgICAgICAgdGV4dC5zZXRCb3JkZXIoQm9yZGVyRmFjdG9yeS5jcmVhdGVFbXB0eUJvcmRlcigyLCAyLCAyLCAyKSk7CisKKyAgICAgICAgYWRkKCJDZW50ZXIiLCBuZXcgSlNjcm9sbFBhbmUodGV4dCwgSlNjcm9sbFBhbmUuVkVSVElDQUxfU0NST0xMQkFSX0FMV0FZUywKKyAgICAgICAgICAgICAgICAgICAgICAgIEpTY3JvbGxQYW5lLkhPUklaT05UQUxfU0NST0xMQkFSX05FVkVSKSk7CisKKyAgICAgICAgUGFuZWwgY29weXJpZ2h0UGFuZWwgPSBuZXcgUGFuZWwoKTsKKyAgICAgICAgYWRkV2l0aEZvbnQgKGNvcHlyaWdodFBhbmVsLAorICAgICAgICAgICAgbmV3IExhYmVsKERlbW9VdGlsaXR5LmNvcHlyaWdodDEsIExhYmVsLkxFRlQpLERlbW9VdGlsaXR5LmNyZWRpdEZvbnQpOworICAgICAgICBhZGRXaXRoRm9udCAoY29weXJpZ2h0UGFuZWwsCisgICAgICAgICAgICBuZXcgTGFiZWwoRGVtb1V0aWxpdHkuY29weXJpZ2h0MiwgTGFiZWwuTEVGVCksRGVtb1V0aWxpdHkuY3JlZGl0Rm9udCk7CisgICAgICAgIERlbW9VdGlsaXR5LmZpeEdyaWQoY29weXJpZ2h0UGFuZWwsMSk7CisgICAgICAgIGFkZCgiU291dGgiLCBjb3B5cmlnaHRQYW5lbCk7CisKKyAgICAgICAgLy9sYXlvdXQoKTsKKyAgICAgICAgaGFuZGxlRW51bUNoYW5nZWQoKTsKKworICAgICAgICAvLyAobmV3IFRocmVhZCh0aGlzKSkuc3RhcnQoKTsKKyAgICB9CisKKworCisgICAgcHVibGljIFN0cmluZyBnZXRJbml0aWFsVGV4dCgpCisgICAgeworICAgICAgICByZXR1cm4KKyJXaGVuLGludGhlY291cnNlb2ZodW1hbmV2ZW50cyxpdGJlY29tZXNuZWNlc3Nhcnlmb3JvbmVwZW9wbGV0b2Rpc3NvbHZldGhlcG9saXRpY2FsYm9uZHN3aGljaGhhdmUiCisrICJjb25uZWN0ZWR0aGVtd2l0aGFub3RoZXIsYW5kdG9hc3N1bWVhbW9uZ3RoZXBvd2Vyc29mdGhlZWFydGgsdGhlc2VwYXJhdGVhbmRlcXVhbHN0YXRpb250b3doaWNodGhlbGF3cyIKKysgIm9mbmF0dXJlYW5kb2ZuYXR1cmUnc0dvZGVudGl0bGV0aGVtLGFkZWNlbnRyZXNwZWN0dG90aGVvcGluaW9uc29mbWFua2luZHJlcXVpcmVzdGhhdHRoZXlzaG91bGRkZWNsYXJldGhlIgorKyAiY2F1c2Vzd2hpY2hpbXBlbHRoZW10b3RoZXNlcGFyYXRpb24uXG4iCisrICJXZWhvbGR0aGVzZXRydXRoc3RvYmVzZWxmLWV2aWRlbnQsdGhhdGFsbG1lbmFyZWNyZWF0ZWRlcXVhbCx0aGF0dGhleWFyZWVuZG93ZWRieXRoZWlyQ3JlYXRvcndpdGhjZXJ0YWluIgorKyAidW5hbGllbmFibGVyaWdodHMsdGhhdGFtb25ndGhlc2VhcmVsaWZlLGxpYmVydHlhbmR0aGVwdXJzdWl0b2ZoYXBwaW5lc3MuVGhhdHRvc2VjdXJldGhlc2VyaWdodHMsZ292ZXJubWVudHNhcmUiCisrICJpbnN0aXR1dGVkYW1vbmdtZW4sZGVyaXZpbmd0aGVpcmp1c3Rwb3dlcnNmcm9tdGhlY29uc2VudG9mdGhlZ292ZXJuZWQuVGhhdHdoZW5ldmVyYW55Zm9ybW9mZ292ZXJubWVudCIKKysgImJlY29tZXNkZXN0cnVjdGl2ZXRvdGhlc2VlbmRzLGl0aXN0aGVyaWdodG9mdGhlcGVvcGxldG9hbHRlcm9ydG9hYm9saXNoaXQsYW5kdG9pbnN0aXR1dGVuZXdnb3Zlcm5tZW50LGxheWluZyIKKysgIml0c2ZvdW5kYXRpb25vbnN1Y2hwcmluY2lwbGVzYW5kb3JnYW5pemluZ2l0c3Bvd2Vyc2luc3VjaGZvcm0sYXN0b3RoZW1zaGFsbHNlZW1tb3N0bGlrZWx5dG9lZmZlY3R0aGVpcnNhZmV0eSIKKysgImFuZGhhcHBpbmVzcy5QcnVkZW5jZSxpbmRlZWQsd2lsbGRpY3RhdGV0aGF0Z292ZXJubWVudHNsb25nZXN0YWJsaXNoZWRzaG91bGRub3RiZWNoYW5nZWRmb3JsaWdodGFuZHRyYW5zaWVudCIKKysgImNhdXNlczthbmRhY2NvcmRpbmdseWFsbGV4cGVyaWVuY2VoYXRoc2hvd250aGF0bWFua2luZGFyZW1vcmVkaXNwb3NlZHRvc3VmZmVyLHdoaWxlZXZpbHNhcmVzdWZmZXJhYmxlLHRoYW4iCisrICJ0b3JpZ2h0dGhlbXNlbHZlc2J5YWJvbGlzaGluZ3RoZWZvcm1zdG93aGljaHRoZXlhcmVhY2N1c3RvbWVkLkJ1dHdoZW5hbG9uZ3RyYWlub2ZhYnVzZXNhbmR1c3VycGF0aW9ucywiCisrICJwdXJzdWluZ2ludmFyaWFibHl0aGVzYW1lb2JqZWN0ZXZpbmNlc2FkZXNpZ250b3JlZHVjZXRoZW11bmRlcmFic29sdXRlZGVzcG90aXNtLGl0aXN0aGVpcnJpZ2h0LGl0aXN0aGVpcmR1dHksIgorKyAidG90aHJvd29mZnN1Y2hnb3Zlcm5tZW50LGFuZHRvcHJvdmlkZW5ld2d1YXJkc2ZvcnRoZWlyZnV0dXJlc2VjdXJpdHkuLS1TdWNoaGFzYmVlbnRoZXBhdGllbnRzdWZmZXJhbmNlb2YiCisrICJ0aGVzZWNvbG9uaWVzO2FuZHN1Y2hpc25vd3RoZW5lY2Vzc2l0eXdoaWNoY29uc3RyYWluc3RoZW10b2FsdGVydGhlaXJmb3JtZXJzeXN0ZW1zb2Znb3Zlcm5tZW50LlRoZWhpc3RvcnkiCisrICJvZnRoZXByZXNlbnRLaW5nb2ZHcmVhdEJyaXRhaW5pc2FoaXN0b3J5b2ZyZXBlYXRlZGluanVyaWVzYW5kdXN1cnBhdGlvbnMsYWxsaGF2aW5naW5kaXJlY3RvYmplY3R0aGUiCisrICJlc3RhYmxpc2htZW50b2ZhbmFic29sdXRldHlyYW5ueW92ZXJ0aGVzZXN0YXRlcy5Ub3Byb3ZldGhpcyxsZXRmYWN0c2Jlc3VibWl0dGVkdG9hY2FuZGlkd29ybGQuXG4iCisrICJIZWhhc3JlZnVzZWRoaXNhc3NlbnR0b2xhd3MsdGhlbW9zdHdob2xlc29tZWFuZG5lY2Vzc2FyeWZvcnRoZXB1YmxpY2dvb2QuXG4iCisrICJIZWhhc2ZvcmJpZGRlbmhpc2dvdmVybm9yc3RvcGFzc2xhd3NvZmltbWVkaWF0ZWFuZHByZXNzaW5naW1wb3J0YW5jZSx1bmxlc3NzdXNwZW5kZWRpbnRoZWlyb3BlcmF0aW9udGlsbCIKKysgImhpc2Fzc2VudHNob3VsZGJlb2J0YWluZWQ7YW5kd2hlbnNvc3VzcGVuZGVkLGhlaGFzdXR0ZXJseW5lZ2xlY3RlZHRvYXR0ZW5kdG90aGVtLlxuIgorKyAiSGVoYXNyZWZ1c2VkdG9wYXNzb3RoZXJsYXdzZm9ydGhlYWNjb21tb2RhdGlvbm9mbGFyZ2VkaXN0cmljdHNvZnBlb3BsZSx1bmxlc3N0aG9zZXBlb3BsZXdvdWxkcmVsaW5xdWlzaCIKKysgInRoZXJpZ2h0b2ZyZXByZXNlbnRhdGlvbmludGhlbGVnaXNsYXR1cmUsYXJpZ2h0aW5lc3RpbWFibGV0b3RoZW1hbmRmb3JtaWRhYmxldG90eXJhbnRzb25seS5cbiIKKysgIkhlaGFzY2FsbGVkdG9nZXRoZXJsZWdpc2xhdGl2ZWJvZGllc2F0cGxhY2VzdW51c3VhbCx1bmNvbWZvcnRhYmxlLGFuZGRpc3RhbnRmcm9tdGhlZGVwb3NpdG9yeW9mdGhlaXJwdWJsaWMiCisrICJyZWNvcmRzLGZvcnRoZXNvbGVwdXJwb3Nlb2ZmYXRpZ3Vpbmd0aGVtaW50b2NvbXBsaWFuY2V3aXRoaGlzbWVhc3VyZXMuXG4iCisrICJIZWhhc2Rpc3NvbHZlZHJlcHJlc2VudGF0aXZlaG91c2VzcmVwZWF0ZWRseSxmb3JvcHBvc2luZ3dpdGhtYW5seWZpcm1uZXNzaGlzaW52YXNpb25zb250aGVyaWdodHNvZnRoZXBlb3BsZS5cbiIKKysgIkhlaGFzcmVmdXNlZGZvcmFsb25ndGltZSxhZnRlcnN1Y2hkaXNzb2x1dGlvbnMsdG9jYXVzZW90aGVyc3RvYmVlbGVjdGVkO3doZXJlYnl0aGVsZWdpc2xhdGl2ZXBvd2VycywiCisrICJpbmNhcGFibGVvZmFubmloaWxhdGlvbixoYXZlcmV0dXJuZWR0b3RoZXBlb3BsZWF0bGFyZ2Vmb3J0aGVpcmV4ZXJjaXNlO3RoZXN0YXRlcmVtYWluaW5naW50aGVtZWFudGltZWV4cG9zZWQiCisrICJ0b2FsbHRoZWRhbmdlcnNvZmludmFzaW9uZnJvbXdpdGhvdXQsYW5kY29udnVsc2lvbnN3aXRoaW4uXG4iCisrICJIZWhhc2VuZGVhdm9yZWR0b3ByZXZlbnR0aGVwb3B1bGF0aW9ub2Z0aGVzZXN0YXRlcztmb3J0aGF0cHVycG9zZW9ic3RydWN0aW5ndGhlbGF3c2Zvcm5hdHVyYWxpemF0aW9ub2YiCisrICJmb3JlaWduZXJzO3JlZnVzaW5ndG9wYXNzb3RoZXJzdG9lbmNvdXJhZ2V0aGVpcm1pZ3JhdGlvbmhpdGhlcixhbmRyYWlzaW5ndGhlY29uZGl0aW9uc29mbmV3YXBwcm9wcmlhdGlvbnNvZiIKKysgImxhbmRzLlxuIgorKyAiSGVoYXNvYnN0cnVjdGVkdGhlYWRtaW5pc3RyYXRpb25vZmp1c3RpY2UsYnlyZWZ1c2luZ2hpc2Fzc2VudHRvbGF3c2ZvcmVzdGFibGlzaGluZ2p1ZGljaWFyeXBvd2Vycy5cbiIKKysgIkhlaGFzbWFkZWp1ZGdlc2RlcGVuZGVudG9uaGlzd2lsbGFsb25lLGZvcnRoZXRlbnVyZW9mdGhlaXJvZmZpY2VzLGFuZHRoZWFtb3VudGFuZHBheW1lbnRvZnRoZWlyc2FsYXJpZXMuXG4iCisrICJIZWhhc2VyZWN0ZWRhbXVsdGl0dWRlb2ZuZXdvZmZpY2VzLGFuZHNlbnRoaXRoZXJzd2FybXNvZm9mZmljZXJzdG9oYXJhc3NvdXJwZW9wbGUsYW5kZWF0b3V0dGhlaXIiCisrICJzdWJzdGFuY2UuXG4iCisrICJIZWhhc2tlcHRhbW9uZ3VzLGludGltZXNvZnBlYWNlLHN0YW5kaW5nYXJtaWVzd2l0aG91dHRoZWNvbnNlbnRvZm91cmxlZ2lzbGF0dXJlLlxuIgorKyAiSGVoYXNhZmZlY3RlZHRvcmVuZGVydGhlbWlsaXRhcnlpbmRlcGVuZGVudG9mYW5kc3VwZXJpb3J0b2NpdmlscG93ZXIuXG4iCisrICJIZWhhc2NvbWJpbmVkd2l0aG90aGVyc3Rvc3ViamVjdHVzdG9hanVyaXNkaWN0aW9uZm9yZWlnbnRvb3VyY29uc3RpdHV0aW9uLGFuZHVuYWNrbm93bGVkZ2VkYnlvdXJsYXdzOyIKKysgImdpdmluZ2hpc2Fzc2VudHRvdGhlaXJhY3Rzb2ZwcmV0ZW5kZWRsZWdpc2xhdGlvbjpcbiIKKysgIkZvcnF1YXJ0ZXJpbmdsYXJnZWJvZGllc29mYXJtZWR0cm9vcHNhbW9uZ3VzOlxuIgorKyAiRm9ycHJvdGVjdGluZ3RoZW0sYnltb2NrdHJpYWwsZnJvbXB1bmlzaG1lbnRmb3JhbnltdXJkZXJzd2hpY2h0aGV5c2hvdWxkY29tbWl0b250aGVpbmhhYml0YW50c29mdGhlc2UiCisrICJzdGF0ZXM6XG4iCisrICJGb3JjdXR0aW5nb2Zmb3VydHJhZGV3aXRoYWxscGFydHNvZnRoZXdvcmxkOlxuIgorKyAiRm9yaW1wb3Npbmd0YXhlc29udXN3aXRob3V0b3VyY29uc2VudDpcbiIKKysgIkZvcmRlcHJpdmluZ3VzaW5tYW55Y2FzZXMsb2Z0aGViZW5lZml0c29mdHJpYWxieWp1cnk6XG4iCisrICJGb3J0cmFuc3BvcnRpbmd1c2JleW9uZHNlYXN0b2JldHJpZWRmb3JwcmV0ZW5kZWRvZmZlbnNlczpcbiIKKysgIkZvcmFib2xpc2hpbmd0aGVmcmVlc3lzdGVtb2ZFbmdsaXNobGF3c2luYW5laWdoYm9yaW5ncHJvdmluY2UsZXN0YWJsaXNoaW5ndGhlcmVpbmFuYXJiaXRyYXJ5Z292ZXJubWVudCxhbmQiCisrICJlbmxhcmdpbmdpdHNib3VuZGFyaWVzc29hc3RvcmVuZGVyaXRhdG9uY2VhbmV4YW1wbGVhbmRmaXRpbnN0cnVtZW50Zm9yaW50cm9kdWNpbmd0aGVzYW1lYWJzb2x1dGVydWxlaW50aGVzZSIKKysgImNvbG9uaWVzOlxuIgorKyAiRm9ydGFraW5nYXdheW91cmNoYXJ0ZXJzLGFib2xpc2hpbmdvdXJtb3N0dmFsdWFibGVsYXdzLGFuZGFsdGVyaW5nZnVuZGFtZW50YWxseXRoZWZvcm1zb2ZvdXJnb3Zlcm5tZW50czpcbiIKKysgIkZvcnN1c3BlbmRpbmdvdXJvd25sZWdpc2xhdHVyZXMsYW5kZGVjbGFyaW5ndGhlbXNlbHZlc2ludmVzdGVkd2l0aHBvd2VydG9sZWdpc2xhdGVmb3J1c2luYWxsY2FzZXN3aGF0c29ldmVyLlxuIgorKyAiSGVoYXNhYmRpY2F0ZWRnb3Zlcm5tZW50aGVyZSxieWRlY2xhcmluZ3Vzb3V0b2ZoaXNwcm90ZWN0aW9uYW5kd2FnaW5nd2FyYWdhaW5zdHVzLlxuIgorKyAiSGVoYXNwbHVuZGVyZWRvdXJzZWFzLHJhdmFnZWRvdXJjb2FzdHMsYnVybmVkb3VydG93bnMsYW5kZGVzdHJveWVkdGhlbGl2ZXNvZm91cnBlb3BsZS5cbiIKKysgIkhlaXNhdHRoaXN0aW1ldHJhbnNwb3J0aW5nbGFyZ2Vhcm1pZXNvZmZvcmVpZ25tZXJjZW5hcmllc3RvY29tcGxldGV0aGV3b3Jrc29mZGVhdGgsZGVzb2xhdGlvbmFuZHR5cmFubnksIgorKyAiYWxyZWFkeWJlZ3Vud2l0aGNpcmN1bXN0YW5jZXNvZmNydWVsdHlhbmRwZXJmaWR5c2NhcmNlbHlwYXJhbGxlbGVkaW50aGVtb3N0YmFyYmFyb3VzYWdlcyxhbmR0b3RhbGx5dW53b3J0aHkiCisrICJ0aGVoZWFkb2ZhY2l2aWxpemVkbmF0aW9uLlxuIgorKyAiSGVoYXNjb25zdHJhaW5lZG91cmZlbGxvd2NpdGl6ZW5zdGFrZW5jYXB0aXZlb250aGVoaWdoc2Vhc3RvYmVhcmFybXNhZ2FpbnN0dGhlaXJjb3VudHJ5LHRvYmVjb21ldGhlIgorKyAiZXhlY3V0aW9uZXJzb2Z0aGVpcmZyaWVuZHNhbmRicmV0aHJlbixvcnRvZmFsbHRoZW1zZWx2ZXNieXRoZWlyaGFuZHMuXG4iCisrICJIZWhhc2V4Y2l0ZWRkb21lc3RpY2luc3VycmVjdGlvbnNhbW9uZ3N0dXMsYW5kaGFzZW5kZWF2b3JlZHRvYnJpbmdvbnRoZWluaGFiaXRhbnRzb2ZvdXJmcm9udGllcnMsdGhlIgorKyAibWVyY2lsZXNzSW5kaWFuc2F2YWdlcyx3aG9zZWtub3ducnVsZW9md2FyZmFyZSxpc3VuZGlzdGluZ3Vpc2hlZGRlc3RydWN0aW9ub2ZhbGxhZ2VzLHNleGVzYW5kY29uZGl0aW9ucy5cbiIKKysgIkluZXZlcnlzdGFnZW9mdGhlc2VvcHByZXNzaW9uc3dlaGF2ZXBldGl0aW9uZWRmb3JyZWRyZXNzaW50aGVtb3N0aHVtYmxldGVybXM6b3VycmVwZWF0ZWRwZXRpdGlvbnNoYXZlIgorKyAiYmVlbmFuc3dlcmVkb25seWJ5cmVwZWF0ZWRpbmp1cnkuQXByaW5jZSx3aG9zZWNoYXJhY3RlcmlzdGh1c21hcmtlZGJ5ZXZlcnlhY3R3aGljaG1heWRlZmluZWF0eXJhbnQsaXMiCisrICJ1bmZpdHRvYmV0aGVydWxlcm9mYWZyZWVwZW9wbGUuXG4iCisrICJOb3JoYXZld2ViZWVud2FudGluZ2luYXR0ZW50aW9udG9vdXJCcml0aXNoYnJldGhyZW4uV2VoYXZld2FybmVkdGhlbWZyb210aW1ldG90aW1lb2ZhdHRlbXB0c2J5dGhlaXIiCisrICJsZWdpc2xhdHVyZXRvZXh0ZW5kYW51bndhcnJhbnRhYmxlanVyaXNkaWN0aW9ub3ZlcnVzLldlaGF2ZXJlbWluZGVkdGhlbW9mdGhlY2lyY3Vtc3RhbmNlc29mb3VyZW1pZ3JhdGlvbiIKKysgImFuZHNldHRsZW1lbnRoZXJlLldlaGF2ZWFwcGVhbGVkdG90aGVpcm5hdGl2ZWp1c3RpY2VhbmRtYWduYW5pbWl0eSxhbmR3ZWhhdmVjb25qdXJlZHRoZW1ieXRoZXRpZXNvZm91ciIKKysgImNvbW1vbmtpbmRyZWR0b2Rpc2F2b3d0aGVzZXVzdXJwYXRpb25zLHdoaWNoLHdvdWxkaW5ldml0YWJseWludGVycnVwdG91cmNvbm5lY3Rpb25zYW5kY29ycmVzcG9uZGVuY2UuV2UiCisrICJtdXN0LHRoZXJlZm9yZSxhY3F1aWVzY2VpbnRoZW5lY2Vzc2l0eSx3aGljaGRlbm91bmNlc291cnNlcGFyYXRpb24sYW5kaG9sZHRoZW0sYXN3ZWhvbGR0aGVyZXN0b2ZtYW5raW5kLCIKKysgImVuZW1pZXNpbndhcixpbnBlYWNlZnJpZW5kcy5cbiIKKysgIldlLHRoZXJlZm9yZSx0aGVyZXByZXNlbnRhdGl2ZXNvZnRoZVVuaXRlZFN0YXRlc29mQW1lcmljYSxpbkdlbmVyYWxDb25ncmVzcyxhc3NlbWJsZWQsYXBwZWFsaW5ndG90aGUiCisrICJTdXByZW1lSnVkZ2VvZnRoZXdvcmxkZm9ydGhlcmVjdGl0dWRlb2ZvdXJpbnRlbnRpb25zLGRvLGludGhlbmFtZSxhbmRieXRoZWF1dGhvcml0eW9mdGhlZ29vZHBlb3BsZW9mIgorKyAidGhlc2Vjb2xvbmllcyxzb2xlbW5seXB1Ymxpc2hhbmRkZWNsYXJlLHRoYXR0aGVzZXVuaXRlZGNvbG9uaWVzYXJlLGFuZG9mcmlnaHRvdWdodHRvYmVmcmVlYW5kaW5kZXBlbmRlbnQiCisrICJzdGF0ZXM7dGhhdHRoZXlhcmVhYnNvbHZlZGZyb21hbGxhbGxlZ2lhbmNldG90aGVCcml0aXNoQ3Jvd24sYW5kdGhhdGFsbHBvbGl0aWNhbGNvbm5lY3Rpb25iZXR3ZWVudGhlbWFuZHRoZSIKKysgInN0YXRlb2ZHcmVhdEJyaXRhaW4saXNhbmRvdWdodHRvYmV0b3RhbGx5ZGlzc29sdmVkO2FuZHRoYXRhc2ZyZWVhbmRpbmRlcGVuZGVudHN0YXRlcyx0aGV5aGF2ZWZ1bGxwb3dlcnRvIgorKyAibGV2ZXl3YXIsY29uY2x1ZGVwZWFjZSxjb250cmFjdGFsbGlhbmNlcyxlc3RhYmxpc2hjb21tZXJjZSxhbmR0b2RvYWxsb3RoZXJhY3RzYW5kdGhpbmdzd2hpY2hpbmRlcGVuZGVudCIKKysgInN0YXRlc21heW9mcmlnaHRkby5BbmRmb3J0aGVzdXBwb3J0b2Z0aGlzZGVjbGFyYXRpb24sd2l0aGFmaXJtcmVsaWFuY2VvbnRoZXByb3RlY3Rpb25vZkRpdmluZVByb3ZpZGVuY2Usd2UiCisrICJtdXR1YWxseXBsZWRnZXRvZWFjaG90aGVyb3VybGl2ZXMsb3VyZm9ydHVuZXNhbmRvdXJzYWNyZWRob25vci5cbiI7CisgICAgfQorCisKKyAgICBwdWJsaWMgdm9pZCBoYW5kbGVFbnVtQ2hhbmdlZCgpCisgICAgeworICAgICAgICBTdHJpbmcgcyA9IGJvdW5kLmdldFNlbGVjdGVkSXRlbSgpOworICAgICAgICBpZiAocy5lcXVhbHMoIkNoYXIiKSkgeworICAgICAgICAgICAgZXJyb3JUZXh0KCJnZXRDaGFyYWN0ZXJJbnN0YW5jZSIpOworICAgICAgICAgICAgZW51bSA9IEJyZWFrSXRlcmF0b3IuZ2V0Q2hhcmFjdGVySW5zdGFuY2UoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzLmVxdWFscygiV29yZCIpKSB7CisgICAgICAgICAgICBlcnJvclRleHQoImdldFdvcmRJbnN0YW5jZSIpOworICAgICAgICAgICAgZW51bSA9IEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocy5lcXVhbHMoIkxpbmUgQnJlYWsiKSkgeworICAgICAgICAgICAgZXJyb3JUZXh0KCJnZXRMaW5lSW5zdGFuY2UiKTsKKyAgICAgICAgICAgIGVudW0gPSBCcmVha0l0ZXJhdG9yLmdldExpbmVJbnN0YW5jZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgLyogaWYgKHMuZXF1YWxzKCJTZW50ZW5jZSIpKSAqLyB7CisgICAgICAgICAgICBlcnJvclRleHQoImdldFNlbnRlbmNlSW5zdGFuY2UiKTsKKyAgICAgICAgICAgIGVudW0gPSBCcmVha0l0ZXJhdG9yLmdldFNlbnRlbmNlSW5zdGFuY2UoKTsKKyAgICAgICAgfQorICAgICAgICBlbnVtLnNldFRleHQodGV4dC5nZXRUZXh0KCkpOworICAgICAgICBzZWxlY3RSYW5nZSgwLCAwKTsKKyAgICAgICAgLy90ZXh0LnNlbGVjdCgwLDApOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGhhbmRsZUZvcndhcmQoKQorICAgIHsKKyAgICAgICAgdHJ5IHsKKy8vICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZW50ZXJpbmcgaGFuZGxlRm9yd2FyZCIpOworICAgICAgICAgICAgZW51bS5zZXRUZXh0KHRleHQuZ2V0VGV4dCgpKTsKKyAgICAgICAgICAgIGludCBvbGRTdGFydCA9IGdldFNlbGVjdGlvblN0YXJ0KCk7CisgICAgICAgICAgICBpbnQgb2xkRW5kID0gZ2V0U2VsZWN0aW9uRW5kKCk7CisKKy8vICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaGFuZGxlRm9yd2FyZDogb2xkU3RhcnQ9IiArIG9sZFN0YXJ0ICsgIiwgb2xkRW5kPSIgKyBvbGRFbmQpOworCisgICAgICAgICAgICBpZiAob2xkRW5kIDwgMSkgeworICAgICAgICAgICAgICAgIHNlbGVjdFJhbmdlKDAsIGVudW0uZm9sbG93aW5nKDApKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGludCBzID0gZW51bS5mb2xsb3dpbmcob2xkRW5kLTEpOworICAgICAgICAgICAgICAgIGludCBlID0gZW51bS5uZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKGUgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgZSA9IHM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNlbGVjdFJhbmdlKHMsIGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy90ZXh0LnNlbGVjdChzLCBlKTsKKyAgICAgICAgICAgIGVycm9yVGV4dCgiPCIgKyBvbGRTdGFydCArICIsIiArIG9sZEVuZCArICI+IC0+IDwiICsKKyAgICAgICAgICAgICAgICBzICsgIiwiICsgZSArICI+Iik7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBleHApIHsKKyAgICAgICAgICAgIGVycm9yVGV4dChleHAudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBoYW5kbGVCYWNrd2FyZCgpCisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgZW51bS5zZXRUZXh0KHRleHQuZ2V0VGV4dCgpKTsKKyAgICAgICAgICAgIGludCBvbGRTdGFydCA9IGdldFNlbGVjdGlvblN0YXJ0KCk7CisgICAgICAgICAgICBpbnQgb2xkRW5kID0gZ2V0U2VsZWN0aW9uRW5kKCk7CisgICAgICAgICAgICBpZiAob2xkU3RhcnQgPCAxKSB7CisgICAgICAgICAgICAgICAgc2VsZWN0UmFuZ2UoMCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnQgZSA9IGVudW0uZm9sbG93aW5nKG9sZFN0YXJ0LTEpOworICAgICAgICAgICAgICAgIGludCBzID0gZW51bS5wcmV2aW91cygpOworICAgICAgICAgICAgICAgIHNlbGVjdFJhbmdlKHMsIGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy90ZXh0LnNlbGVjdChzLCBlKTsKKyAgICAgICAgICAgIGVycm9yVGV4dCgiPCIgKyBvbGRTdGFydCArICIsIiArIG9sZEVuZCArICI+IC0+IDwiICsgcyArICIsIiArIGUgKyAiPiIpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZXhwKSB7CisgICAgICAgICAgICBlcnJvclRleHQoZXhwLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gYWN0aW9uKEV2ZW50IGV2dCwgT2JqZWN0IG9iaikKKyAgICB7CisKKyAgICAgICAgaWYoZXZ0LnRhcmdldCBpbnN0YW5jZW9mIEJ1dHRvbiAmJiBsZWZ0LmVxdWFscyhvYmopKQorICAgICAgICB7CisgICAgICAgICAgICBoYW5kbGVCYWNrd2FyZCgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZihldnQudGFyZ2V0IGluc3RhbmNlb2YgQnV0dG9uICYmIHJpZ2h0LmVxdWFscyhvYmopKQorICAgICAgICB7CisgICAgICAgICAgICBoYW5kbGVGb3J3YXJkKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKGV2dC50YXJnZXQgaW5zdGFuY2VvZiBDaG9pY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGhhbmRsZUVudW1DaGFuZ2VkKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaGFuZGxlRXZlbnQoRXZlbnQgZXZ0KQorICAgIHsKKyAgICAgICAgaWYgKGV2dC5pZCA9PSBFdmVudC5LRVlfUFJFU1MgfHwgZXZ0LmlkID09IEV2ZW50LktFWV9BQ1RJT04pIHsKKyAgICAgICAgICAgIGlmIChldnQua2V5ID09IEV2ZW50LlJJR0hUIHx8IChldnQua2V5ID09IDB4MEUgJiYgZXZ0LmNvbnRyb2xEb3duKCkpKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlRm9yd2FyZCgpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoZXZ0LmtleSA9PSBFdmVudC5MRUZUIHx8IChldnQua2V5ID09IDB4MTAgJiYgZXZ0LmNvbnRyb2xEb3duKCkpKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlQmFja3dhcmQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIGlmIChldnQuaWQgPT0gRXZlbnQuV0lORE9XX0RFU1RST1kgJiYgZXZ0LnRhcmdldCA9PSB0aGlzKSB7CisgICAgICAgICAgICB0aGlzLmhpZGUoKTsKKyAgICAgICAgICAgIHRoaXMuZGlzcG9zZSgpOworICAgICAgICAgICAgICAgIGlmIChhcHBsZXQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgYXBwbGV0LmRlbW9DbG9zZWQoKTsKKyAgICAgICAgICAgICAgIH0gZWxzZSBTeXN0ZW0uZXhpdCgwKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzdXBlci5oYW5kbGVFdmVudChldnQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGVycm9yVGV4dChTdHJpbmcgcykKKyAgICB7CisgICAgICAgaWYgKERFQlVHKQorICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vZGVtby9yYmJpL1JCQklEZW1vLmphdmEgYi9zcmMvY29tL2libS9kZW1vL3JiYmkvUkJCSURlbW8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44M2FiNDViCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vZGVtby9yYmJpL1JCQklEZW1vLmphdmEKQEAgLTAsMCArMSwzOTcgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2RlbW8vcmJiaS9BdHRpYy9SQkJJRGVtby5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA5LzI2IDIxOjQ2OjU0ICQgCisgKiAkUmV2aXNpb246IDEuMSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5kZW1vLnJiYmk7CisKK2ltcG9ydCBjb20uaWJtLmRlbW8uKjsKK2ltcG9ydCBqYXZhLmFwcGxldC5BcHBsZXQ7CitpbXBvcnQgamF2YS5hd3QuKjsKK2ltcG9ydCBqYXZheC5zd2luZy5KVGV4dEFyZWE7CitpbXBvcnQgamF2YXguc3dpbmcuSlNjcm9sbFBhbmU7CitpbXBvcnQgamF2YXguc3dpbmcuQm9yZGVyRmFjdG9yeTsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworaW1wb3J0IGNvbS5pYm0udGV4dC5CcmVha0l0ZXJhdG9yOworCitwdWJsaWMgY2xhc3MgUkJCSURlbW8gZXh0ZW5kcyBEZW1vQXBwbGV0Cit7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3ZbXSkgeworICAgICAgICBMb2NhbGUuc2V0RGVmYXVsdChuZXcgTG9jYWxlKCJlbiIsICJVUyIpKTsKKwkJbmV3IFJCQklEZW1vKCkuc2hvd0RlbW8oKTsKKyAgICB9CisKKyAgICBwdWJsaWMgRnJhbWUgY3JlYXRlRGVtb0ZyYW1lKERlbW9BcHBsZXQgYXBwbGV0KSB7CisgICAgICAgIHJldHVybiBuZXcgUkJCSUZyYW1lKGFwcGxldCk7CisgICAgfQorfQorCisKKworY2xhc3MgUkJCSUZyYW1lIGV4dGVuZHMgRnJhbWUKK3sKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY3JlZGl0U3RyaW5nID0KKyAgICAgICAgInYxLjFhOSwgRGVtbyI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRklFTERfQ09MVU1OUyA9IDQ1OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEZvbnQgY2hvaWNlRm9udCA9IG51bGw7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlOworICAgIHByaXZhdGUgRGVtb0FwcGxldCBhcHBsZXQ7CisKKyAgICBmaW5hbCBTdHJpbmcgcmlnaHQgPSAiLS0+IjsKKyAgICBmaW5hbCBTdHJpbmcgbGVmdCA9ICI8LS0iOworCisgICAgcHJpdmF0ZSBCcmVha0l0ZXJhdG9yIGVudW07CisKK0pUZXh0QXJlYSB0ZXh0OworLy8gICAgVGV4dEFyZWEgdGV4dDsKKyAgICBDaG9pY2UgYm91bmQ7CisKKyAgICBwdWJsaWMgUkJCSUZyYW1lKERlbW9BcHBsZXQgYXBwbGV0KQorICAgIHsKKyAgICAgICAgdGhpcy5hcHBsZXQgPSBhcHBsZXQ7CisgICAgICAgIGluaXQoKTsKKyAgICAgICAgc3RhcnQoKTsKKyAgICB9CisKKworCisgICAgcHVibGljIHZvaWQgcnVuKCkKKyAgICB7CisgICAgICAgIC8qCisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGNoZWNrQ2hhbmdlKCk7CisgICAgICAgICAgICAgICAgVGhyZWFkLnNsZWVwKDI1MCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaCAoVGhyb3dhYmxlIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAqLworICAgIH0KKworICAgIGludCBzLCBlOworICAgIGludCB0cywgdGU7CisKKyAgICBwdWJsaWMgdm9pZCBjaGVja0NoYW5nZSgpCisgICAgeworLy8gICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiY2hlY2tDaGFuZ2UuLi4iKTsKKyAgICAgICAgaWYgKCh0ZXh0LmdldFNlbGVjdGlvblN0YXJ0KCkgJiAweDdGRkYpICE9IHRzIHx8CisgICAgICAgICAgICAodGV4dC5nZXRTZWxlY3Rpb25FbmQoKSAmIDB4N0ZGRikgIT0gdGUpIHsKKworICAgICAgICAgICAgaW50IHRlbXBTID0gdGV4dC5nZXRTZWxlY3Rpb25TdGFydCgpICYgMHg3RkZGOworICAgICAgICAgICAgaW50IHRlbXBFID0gdGV4dC5nZXRTZWxlY3Rpb25FbmQoKSAmIDB4N0ZGRjsKKworLy8gICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCI+Iik7CisvLyAgICAgICAgICBzZWxlY3QoMCwgMCk7CisvLyAgICAgICAgICBzZWxlY3QodGVtcFMsIHRlbXBFKTsKKyAgICAgICAgICAgIC8vc2VsZWN0KHRlbXBTIC0gKHRzIC0gcyksIHRlbXBFIC0gKHRlIC0gZSkpOworLy8gICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCI8Iik7CisKKworLy8gICAgICAgICAgaWYgKHMgIT0gdHMgfHwgZSAhPSB0ZSkgU3lzdGVtLm91dC5wcmludGxuKCIgICAgIHMoIitzKyIpIHRzKCIrdHMrIikgZSgiK2UrIikgdGUoIit0ZSsiKSIpOworLy8gICAgICAgICAgaWYgKHRlbXBTICE9IHRzIHx8IHRlbXBFICE9IHRlKSBTeXN0ZW0ub3V0LnByaW50bG4oIj5zKCIrcysiKSB0ZW1wUygiK3RlbXBTKyIpIGUoIitlKyIpIHRlbXBFKCIrdGVtcEUrIikiKTsKKy8vICAgICAgICAgIHNlbGVjdChzIC0gKHRzIC0gcyksIGUgLSAodGUgLSBlKSk7CisvLyAgICAgICAgICBpZiAodGVtcFMgIT0gdHMgfHwgdGVtcEUgIT0gdGUpIFN5c3RlbS5vdXQucHJpbnRsbigicygiK3MrIikgdGVtcFMoIit0ZW1wUysiKSBlKCIrZSsiKSB0ZW1wRSgiK3RlbXBFKyIpIik7CisKKy8vICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigibGtkc2xrc2oiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNlbGVjdChpbnQgc0luLCBpbnQgZUluKQorICAgIHsKKyAgICAgICAgcyA9IHNJbjsKKyAgICAgICAgZSA9IGVJbjsKKyAgICAgICAgdGV4dC5zZWxlY3QocywgZSk7CisgICAgICAgIHRzID0gdGV4dC5nZXRTZWxlY3Rpb25TdGFydCgpICYgMHg3RkZGOworICAgICAgICB0ZSA9IHRleHQuZ2V0U2VsZWN0aW9uRW5kKCkgJiAweDdGRkY7CisvLyAgICAgICAgaWYgKHMgIT0gdHMgfHwgZSAhPSB0ZSkgeworLy8gICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIj5zKCIrcysiKSB0cygiK3RzKyIpIGUoIitlKyIpIHRlKCIrdGUrIikiKTsKKy8vICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAiKyh0cy1zKSsiLCIrKHRlLWUpKTsKKy8vICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRTZWxlY3Rpb25TdGFydCgpCisgICAgeworICAgICAgICBjaGVja0NoYW5nZSgpOworLy8gICAgICByZXR1cm4gczsKKyAgICAgICAgcmV0dXJuIHRleHQuZ2V0U2VsZWN0aW9uU3RhcnQoKSAmIDB4N0ZGRjsKKyAgICB9CisKKworICAgIHB1YmxpYyBpbnQgZ2V0U2VsZWN0aW9uRW5kKCkKKyAgICB7CisgICAgICAgIGNoZWNrQ2hhbmdlKCk7CisvLyAgICAgIHJldHVybiBlOworICAgICAgICByZXR1cm4gdGV4dC5nZXRTZWxlY3Rpb25FbmQoKSAmIDB4N0ZGRjsKKyAgICB9CisKKyAgICBwdWJsaWMgZmluYWwgc3luY2hyb25pemVkIHZvaWQgc2VsZWN0UmFuZ2UoaW50IHMsIGludCBlKQorICAgIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIC8vaWYgKGdldFNlbGVjdGlvblN0YXJ0KCkgIT0gcyB8fCBnZXRTZWxlY3Rpb25FbmQoKSAhPSBlKSB7CisgICAgICAgICAgICAgICAgLy90ZXh0LnNlbGVjdChzLCBlKTsKKyAgICAgICAgICAgICAgICBzZWxlY3QocyxlKTsKKyAgICAgICAgICAgIC8vfQorLy8gICAgICAgICAgaWYgKGdldFNlbGVjdGlvblN0YXJ0KCkgIT0gcyB8fCBnZXRTZWxlY3Rpb25FbmQoKSAhPSBlKSB7CisvLyAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJBR0ghIHNlbGVjdCgiK3MrIiwiK2UrIikgLT4gKCIrCisvLyAgICAgICAgICAgICAgZ2V0U2VsZWN0aW9uU3RhcnQoKSsiLCIrZ2V0U2VsZWN0aW9uRW5kKCkrIikiKTsKKy8vICAgICAgICAgICAgICB0ZXh0LnNlbGVjdChzIC0gKGdldFNlbGVjdGlvblN0YXJ0KCkgLSBzKSwgZSAtIChnZXRTZWxlY3Rpb25FbmQoKSAtIGUpKTsKKy8vICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4cCkgeworICAgICAgICAgICAgZXJyb3JUZXh0KGV4cC50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KKworCisKKyAgICBwdWJsaWMgdm9pZCBpbml0KCkKKyAgICB7CisgICAgICAgIGJ1aWxkR1VJKCk7CisgICAgfQorCisKKyAgICBwdWJsaWMgdm9pZCBzdGFydCgpCisgICAgeworICAgIH0KKworCisgICAgdm9pZCBhZGRXaXRoRm9udChDb250YWluZXIgY29udGFpbmVyLCBDb21wb25lbnQgZm9vLCBGb250IGZvbnQpIHsKKyAgICAgICAgaWYgKGZvbnQgIT0gbnVsbCkKKyAgICAgICAgICAgIGZvby5zZXRGb250KGZvbnQpOworICAgICAgICBjb250YWluZXIuYWRkKGZvbyk7CisgICAgfQorCisKKworICAgcHVibGljIHZvaWQgYnVpbGRHVUkoKQorICAgIHsKKyAgICAgICAgc2V0QmFja2dyb3VuZChEZW1vVXRpbGl0eS5iZ0NvbG9yKTsKKyAgICAgICAgc2V0TGF5b3V0KG5ldyBCb3JkZXJMYXlvdXQoKSk7CisKKyAgICAgICBQYW5lbCB0b3BQYW5lbCA9IG5ldyBQYW5lbCgpOworCisgICAgICAgICAgICBMYWJlbCB0aXRsZUxhYmVsID0KKyAgICAgICAgICAgICAgICBuZXcgTGFiZWwoIkRldmEgVGV4dCBCb3VuZGFyeSBEZW1vIiwgTGFiZWwuQ0VOVEVSKTsKKyAgICAgICAgICAgIHRpdGxlTGFiZWwuc2V0Rm9udChEZW1vVXRpbGl0eS50aXRsZUZvbnQpOworICAgICAgICAgICAgdG9wUGFuZWwuYWRkKHRpdGxlTGFiZWwpOworCisgICAgICAgICAgICAvL0xhYmVsIGRlbW89bmV3IExhYmVsKGNyZWRpdFN0cmluZywgTGFiZWwuQ0VOVEVSKTsKKyAgICAgICAgICAgIC8vZGVtby5zZXRGb250KERlbW9VdGlsaXR5LmNyZWRpdEZvbnQpOworICAgICAgICAgICAgLy90b3BQYW5lbC5hZGQoZGVtbyk7CisKKyAgICAgICAgICAgIFBhbmVsIGNob2ljZVBhbmVsID0gbmV3IFBhbmVsKCk7CisKKyAgICAgICAgICAgIExhYmVsIGRlbW8xPW5ldyBMYWJlbCgiQm91bmRhcmllcyIsIExhYmVsLkxFRlQpOworICAgICAgICAgICAgZGVtbzEuc2V0Rm9udChEZW1vVXRpbGl0eS5sYWJlbEZvbnQpOworICAgICAgICAgICAgY2hvaWNlUGFuZWwuYWRkKGRlbW8xKTsKKworICAgICAgICAgICAgYm91bmQgPSBuZXcgQ2hvaWNlKCk7CisgICAgICAgICAgICAgICAgYm91bmQuc2V0QmFja2dyb3VuZChEZW1vVXRpbGl0eS5jaG9pY2VDb2xvcik7CisgICAgICAgICAgICBib3VuZC5hZGRJdGVtKCJTZW50ZW5jZSIpOworICAgICAgICAgICAgYm91bmQuYWRkSXRlbSgiTGluZSBCcmVhayIpOworICAgICAgICAgICAgYm91bmQuYWRkSXRlbSgiV29yZCIpOworICAgICAgICAgICAgYm91bmQuYWRkSXRlbSgiQ2hhciIpOworICAgICAgICAgICAgaWYgKGNob2ljZUZvbnQgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICBib3VuZC5zZXRGb250KGNob2ljZUZvbnQpOworCisgICAgICAgICAgICBjaG9pY2VQYW5lbC5hZGQoYm91bmQpOworICAgICAgICAgICAgdG9wUGFuZWwuYWRkKGNob2ljZVBhbmVsKTsKKworICAgICAgICAgICAgRGVtb1V0aWxpdHkuZml4R3JpZCh0b3BQYW5lbCwxKTsKKworCisgICAgICAgIGFkZCgiTm9ydGgiLCB0b3BQYW5lbCk7CisKKworICAgICAgICAgICAgaW50IFJPV1MgPSAxNTsKKyAgICAgICAgICAgIGludCBDT0xVTU5TID0gNTA7CisvLyAgICAgICAgICAgIHRleHQgPSBuZXcgVGV4dEFyZWEoZ2V0SW5pdGlhbFRleHQoKSwgUk9XUywgQ09MVU1OUyk7CisgICAgICAgICAgICB0ZXh0ID0gbmV3IEpUZXh0QXJlYShnZXRJbml0aWFsVGV4dCgpLCBST1dTLCBDT0xVTU5TKTsKKyAgICAgICAgICAgIHRleHQuc2V0TGluZVdyYXAodHJ1ZSk7CisgICAgICAgICAgICB0ZXh0LnNldFdyYXBTdHlsZVdvcmQodHJ1ZSk7CisgICAgICAgICAgICB0ZXh0LnNldEVkaXRhYmxlKHRydWUpOworICAgICAgICAgICAgdGV4dC5zZWxlY3RBbGwoKTsKKyAgICAgICAgICAgIHRleHQuc2V0Rm9udChuZXcgRm9udCgiRGV2YW5hZ2FyaSBNVCBmb3IgSUJNIiwgRm9udC5QTEFJTiwgNDgpKTsKKyAgICAgICAgICAgIHRleHQuc2V0Qm9yZGVyKEJvcmRlckZhY3RvcnkuY3JlYXRlRW1wdHlCb3JkZXIoMiwgMiwgMiwgMikpOworCisgICAgICAgIGFkZCgiQ2VudGVyIiwgbmV3IEpTY3JvbGxQYW5lKHRleHQsIEpTY3JvbGxQYW5lLlZFUlRJQ0FMX1NDUk9MTEJBUl9BTFdBWVMsCisgICAgICAgICAgICAgICAgICAgICAgICBKU2Nyb2xsUGFuZS5IT1JJWk9OVEFMX1NDUk9MTEJBUl9ORVZFUikpOworCisgICAgICAgIFBhbmVsIGNvcHlyaWdodFBhbmVsID0gbmV3IFBhbmVsKCk7CisgICAgICAgIGFkZFdpdGhGb250IChjb3B5cmlnaHRQYW5lbCwKKyAgICAgICAgICAgIG5ldyBMYWJlbChEZW1vVXRpbGl0eS5jb3B5cmlnaHQxLCBMYWJlbC5MRUZUKSxEZW1vVXRpbGl0eS5jcmVkaXRGb250KTsKKyAgICAgICAgYWRkV2l0aEZvbnQgKGNvcHlyaWdodFBhbmVsLAorICAgICAgICAgICAgbmV3IExhYmVsKERlbW9VdGlsaXR5LmNvcHlyaWdodDIsIExhYmVsLkxFRlQpLERlbW9VdGlsaXR5LmNyZWRpdEZvbnQpOworICAgICAgICBEZW1vVXRpbGl0eS5maXhHcmlkKGNvcHlyaWdodFBhbmVsLDEpOworICAgICAgICBhZGQoIlNvdXRoIiwgY29weXJpZ2h0UGFuZWwpOworCisgICAgICAgIC8vbGF5b3V0KCk7CisgICAgICAgIGhhbmRsZUVudW1DaGFuZ2VkKCk7CisKKyAgICAgICAgLy8gKG5ldyBUaHJlYWQodGhpcykpLnN0YXJ0KCk7CisgICAgfQorCisKKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0SW5pdGlhbFRleHQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAiXHUwOTM2XHUwOTRkXHUwOTMwXHUwOTQwXHUwOTJlXHUwOTI2XHUwOTRkICIgKworICAgICAgICAgICAgIlx1MDkyZFx1MDkxN1x1MDkzNVx1MDkyNlx1MDk0ZFx1MDkxN1x1MDk0MFx1MDkyNFx1MDkzZSAiICsKKyAgICAgICAgICAgICJcdTA5MDVcdTA5MjdcdTA5NGRcdTA5MmZcdTA5M2VcdTA5MmYgIiArCisgICAgICAgICAgICAiXHUwOTA1XHUwOTMwXHUwOTRkXHUwOTFjXHUwOTQxXHUwOTI4ICIgKworICAgICAgICAgICAgIlx1MDkzNVx1MDkzZlx1MDkzN1x1MDkzZVx1MDkyNiAiICsKKyAgICAgICAgICAgICJcdTA5MmZcdTA5NGJcdTA5MTcgIiArCisgICAgICAgICAgICAiXHUwOTI3XHUwOTQzXHUwOTI0XHUwOTMwXHUwOTNlXHUwOTM3XHUwOTRkXHUwOTFmXHUwOTRkXHUwOTMwICIgKworICAgICAgICAgICAgIlx1MDkwOVx1MDkzNVx1MDkzRVx1MDkxQVx1MDk0MyAiICsKKyAgICAgICAgICAgICJcdTA5MjdcdTA5MzBcdTA5NGRcdTA5MmVcdTA5MTVcdTA5NGRcdTA5MzdcdTA5NDdcdTA5MjRcdTA5NGRcdTA5MzBcdTA5NDcgIiArCisgICAgICAgICAgICAiXHUwOTE1XHUwOTQxXHUwOTMwXHUwOTQxXHUwOTE1XHUwOTRkXHUwOTM3XHUwOTQ3XHUwOTI0XHUwOTRkXHUwOTMwXHUwOTQ3ICIgKworICAgICAgICAgICAgIlx1MDkzOFx1MDkyZVx1MDkzNVx1MDk0N1x1MDkyNFx1MDkzZSAiICsKKyAgICAgICAgICAgICJcdTA5MmZcdTA5NDFcdTA5MmZcdTA5NDFcdTA5MjRcdTA5NGRcdTA5MzhcdTA5MzVcdTA5MDMgIiArCisgICAgICAgICAgICAiXHUwOTJlXHUwOTNlXHUwOTJlXHUwOTE1XHUwOTNlXHUwOTAzICIgKworICAgICAgICAgICAgIlx1MDkyYVx1MDkzZVx1MDkyM1x1MDk0ZFx1MDkyMVx1MDkzNVx1MDkzZVx1MDkzNlx1MDk0ZFx1MDkxYVx1MDk0OFx1MDkzNSAiICsKKyAgICAgICAgICAgICJcdTA5MTVcdTA5M2ZcdTA5MmVcdTA5MTVcdTA5NDFcdTA5MzBcdTA5NGRcdTA5MzVcdTA5MjQgIiArCisgICAgICAgICAgICAiXHUwOTM4XHUwOTAyXHUwOTFjXHUwOTM1IjsKKyAgICB9CisKKworICAgIHB1YmxpYyB2b2lkIGhhbmRsZUVudW1DaGFuZ2VkKCkKKyAgICB7CisgICAgICAgIFN0cmluZyBzID0gYm91bmQuZ2V0U2VsZWN0ZWRJdGVtKCk7CisgICAgICAgIGlmIChzLmVxdWFscygiQ2hhciIpKSB7CisgICAgICAgICAgICBlcnJvclRleHQoImdldENoYXJhY3Rlckluc3RhbmNlIik7CisgICAgICAgICAgICBlbnVtID0gQnJlYWtJdGVyYXRvci5nZXRDaGFyYWN0ZXJJbnN0YW5jZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHMuZXF1YWxzKCJXb3JkIikpIHsKKyAgICAgICAgICAgIGVycm9yVGV4dCgidFdvcmRCcmVhayIpOworICAgICAgICAgICAgZW51bSA9IEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocy5lcXVhbHMoIkxpbmUgQnJlYWsiKSkgeworICAgICAgICAgICAgZXJyb3JUZXh0KCJnZXRMaW5lSW5zdGFuY2UiKTsKKyAgICAgICAgICAgIGVudW0gPSBCcmVha0l0ZXJhdG9yLmdldExpbmVJbnN0YW5jZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgLyogaWYgKHMuZXF1YWxzKCJTZW50ZW5jZSIpKSAqLyB7CisgICAgICAgICAgICBlcnJvclRleHQoImdldFNlbnRlbmNlSW5zdGFuY2UiKTsKKyAgICAgICAgICAgIGVudW0gPSBCcmVha0l0ZXJhdG9yLmdldFNlbnRlbmNlSW5zdGFuY2UoKTsKKyAgICAgICAgfQorICAgICAgICBlbnVtLnNldFRleHQodGV4dC5nZXRUZXh0KCkpOworICAgICAgICBzZWxlY3RSYW5nZSgwLCAwKTsKKyAgICAgICAgLy90ZXh0LnNlbGVjdCgwLDApOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGhhbmRsZUZvcndhcmQoKQorICAgIHsKKyAgICAgICAgdHJ5IHsKKy8vICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZW50ZXJpbmcgaGFuZGxlRm9yd2FyZCIpOworICAgICAgICAgICAgZW51bS5zZXRUZXh0KHRleHQuZ2V0VGV4dCgpKTsKKyAgICAgICAgICAgIGludCBvbGRTdGFydCA9IGdldFNlbGVjdGlvblN0YXJ0KCk7CisgICAgICAgICAgICBpbnQgb2xkRW5kID0gZ2V0U2VsZWN0aW9uRW5kKCk7CisKKy8vICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaGFuZGxlRm9yd2FyZDogb2xkU3RhcnQ9IiArIG9sZFN0YXJ0ICsgIiwgb2xkRW5kPSIgKyBvbGRFbmQpOworCisgICAgICAgICAgICBpZiAob2xkRW5kIDwgMSkgeworICAgICAgICAgICAgICAgIHNlbGVjdFJhbmdlKDAsIGVudW0uZm9sbG93aW5nKDApKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGludCBzID0gZW51bS5mb2xsb3dpbmcob2xkRW5kLTEpOworICAgICAgICAgICAgICAgIGludCBlID0gZW51bS5uZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKGUgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgZSA9IHM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNlbGVjdFJhbmdlKHMsIGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy90ZXh0LnNlbGVjdChzLCBlKTsKKyAgICAgICAgICAgIGVycm9yVGV4dCgiPCIgKyBvbGRTdGFydCArICIsIiArIG9sZEVuZCArICI+IC0+IDwiICsKKyAgICAgICAgICAgICAgICBzICsgIiwiICsgZSArICI+Iik7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBleHApIHsKKyAgICAgICAgICAgIGVycm9yVGV4dChleHAudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBoYW5kbGVCYWNrd2FyZCgpCisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgZW51bS5zZXRUZXh0KHRleHQuZ2V0VGV4dCgpKTsKKyAgICAgICAgICAgIGludCBvbGRTdGFydCA9IGdldFNlbGVjdGlvblN0YXJ0KCk7CisgICAgICAgICAgICBpbnQgb2xkRW5kID0gZ2V0U2VsZWN0aW9uRW5kKCk7CisgICAgICAgICAgICBpZiAob2xkU3RhcnQgPCAxKSB7CisgICAgICAgICAgICAgICAgc2VsZWN0UmFuZ2UoMCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnQgZSA9IGVudW0uZm9sbG93aW5nKG9sZFN0YXJ0LTEpOworICAgICAgICAgICAgICAgIGludCBzID0gZW51bS5wcmV2aW91cygpOworICAgICAgICAgICAgICAgIHNlbGVjdFJhbmdlKHMsIGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy90ZXh0LnNlbGVjdChzLCBlKTsKKyAgICAgICAgICAgIGVycm9yVGV4dCgiPCIgKyBvbGRTdGFydCArICIsIiArIG9sZEVuZCArICI+IC0+IDwiICsgcyArICIsIiArIGUgKyAiPiIpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZXhwKSB7CisgICAgICAgICAgICBlcnJvclRleHQoZXhwLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gYWN0aW9uKEV2ZW50IGV2dCwgT2JqZWN0IG9iaikKKyAgICB7CisKKyAgICAgICAgaWYoZXZ0LnRhcmdldCBpbnN0YW5jZW9mIEJ1dHRvbiAmJiBsZWZ0LmVxdWFscyhvYmopKQorICAgICAgICB7CisgICAgICAgICAgICBoYW5kbGVCYWNrd2FyZCgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZihldnQudGFyZ2V0IGluc3RhbmNlb2YgQnV0dG9uICYmIHJpZ2h0LmVxdWFscyhvYmopKQorICAgICAgICB7CisgICAgICAgICAgICBoYW5kbGVGb3J3YXJkKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmKGV2dC50YXJnZXQgaW5zdGFuY2VvZiBDaG9pY2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGhhbmRsZUVudW1DaGFuZ2VkKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaGFuZGxlRXZlbnQoRXZlbnQgZXZ0KQorICAgIHsKKyAgICAgICAgaWYgKGV2dC5pZCA9PSBFdmVudC5LRVlfUFJFU1MgfHwgZXZ0LmlkID09IEV2ZW50LktFWV9BQ1RJT04pIHsKKyAgICAgICAgICAgIGlmIChldnQua2V5ID09IEV2ZW50LlJJR0hUIHx8IChldnQua2V5ID09IDB4MEUgJiYgZXZ0LmNvbnRyb2xEb3duKCkpKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlRm9yd2FyZCgpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoZXZ0LmtleSA9PSBFdmVudC5MRUZUIHx8IChldnQua2V5ID09IDB4MTAgJiYgZXZ0LmNvbnRyb2xEb3duKCkpKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlQmFja3dhcmQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIGlmIChldnQuaWQgPT0gRXZlbnQuV0lORE9XX0RFU1RST1kgJiYgZXZ0LnRhcmdldCA9PSB0aGlzKSB7CisgICAgICAgICAgICB0aGlzLmhpZGUoKTsKKyAgICAgICAgICAgIHRoaXMuZGlzcG9zZSgpOworICAgICAgICAgICAgICAgIGlmIChhcHBsZXQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgYXBwbGV0LmRlbW9DbG9zZWQoKTsKKyAgICAgICAgICAgICAgIH0gZWxzZSBTeXN0ZW0uZXhpdCgwKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzdXBlci5oYW5kbGVFdmVudChldnQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGVycm9yVGV4dChTdHJpbmcgcykKKyAgICB7CisgICAgICAgaWYgKERFQlVHKQorICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ocyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vZGVtby9yYmJpL1RleHRCb3VuZERlbW8uamF2YSBiL3NyYy9jb20vaWJtL2RlbW8vcmJiaS9UZXh0Qm91bmREZW1vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTYwOTAxOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2RlbW8vcmJiaS9UZXh0Qm91bmREZW1vLmphdmEKQEAgLTAsMCArMSw0MjQgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2RlbW8vcmJiaS9BdHRpYy9UZXh0Qm91bmREZW1vLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDMvMTAgMDM6NDc6NDMgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmRlbW8ucmJiaTsKKworaW1wb3J0IGNvbS5pYm0uZGVtby4qOworaW1wb3J0IGphdmEuYXBwbGV0LkFwcGxldDsKK2ltcG9ydCBqYXZhLmF3dC4qOworaW1wb3J0IGphdmF4LnN3aW5nLkpUZXh0QXJlYTsKK2ltcG9ydCBqYXZheC5zd2luZy5KU2Nyb2xsUGFuZTsKK2ltcG9ydCBqYXZheC5zd2luZy5Cb3JkZXJGYWN0b3J5OworaW1wb3J0IGphdmEudXRpbC4qOworCitpbXBvcnQgY29tLmlibS50ZXh0LkJyZWFrSXRlcmF0b3I7CisKK3B1YmxpYyBjbGFzcyBUZXh0Qm91bmREZW1vIGV4dGVuZHMgRGVtb0FwcGxldAoreworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmd2W10pIHsKKyAgICAgICAgbmV3IFRleHRCb3VuZERlbW8oKS5zaG93RGVtbygpOworICAgIH0KKworICAgIHB1YmxpYyBGcmFtZSBjcmVhdGVEZW1vRnJhbWUoRGVtb0FwcGxldCBhcHBsZXQpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBUZXh0Qm91bmRGcmFtZShhcHBsZXQpOworICAgIH0KK30KKworCisKK2NsYXNzIFRleHRCb3VuZEZyYW1lIGV4dGVuZHMgRnJhbWUKK3sKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY3JlZGl0U3RyaW5nID0KKyAgICAgICAgInYxLjFhOSwgRGVtbyI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRklFTERfQ09MVU1OUyA9IDQ1OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEZvbnQgY2hvaWNlRm9udCA9IG51bGw7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlOworICAgIHByaXZhdGUgRGVtb0FwcGxldCBhcHBsZXQ7CisKKyAgICBmaW5hbCBTdHJpbmcgcmlnaHQgPSAiLS0+IjsKKyAgICBmaW5hbCBTdHJpbmcgbGVmdCA9ICI8LS0iOworCisgICAgcHJpdmF0ZSBCcmVha0l0ZXJhdG9yIGVudW07CisKK0pUZXh0QXJlYSB0ZXh0OworLy8gICAgVGV4dEFyZWEgdGV4dDsKKyAgICBDaG9pY2UgYm91bmQ7CisKKyAgICBwdWJsaWMgVGV4dEJvdW5kRnJhbWUoRGVtb0FwcGxldCBhcHBsZXQpCisgICAgeworICAgICAgICB0aGlzLmFwcGxldCA9IGFwcGxldDsKKyAgICAgICAgaW5pdCgpOworICAgICAgICBzdGFydCgpOworICAgIH0KKworCisKKyAgICBwdWJsaWMgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgLyoKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgY2hlY2tDaGFuZ2UoKTsKKyAgICAgICAgICAgICAgICBUaHJlYWQuc2xlZXAoMjUwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoIChUaHJvd2FibGUgZSkgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICovCisgICAgfQorCisgICAgaW50IHMsIGU7CisgICAgaW50IHRzLCB0ZTsKKworICAgIHB1YmxpYyB2b2lkIGNoZWNrQ2hhbmdlKCkKKyAgICB7CisvLyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJjaGVja0NoYW5nZS4uLiIpOworICAgICAgICBpZiAoKHRleHQuZ2V0U2VsZWN0aW9uU3RhcnQoKSAmIDB4N0ZGRikgIT0gdHMgfHwKKyAgICAgICAgICAgICh0ZXh0LmdldFNlbGVjdGlvbkVuZCgpICYgMHg3RkZGKSAhPSB0ZSkgeworCisgICAgICAgICAgICBpbnQgdGVtcFMgPSB0ZXh0LmdldFNlbGVjdGlvblN0YXJ0KCkgJiAweDdGRkY7CisgICAgICAgICAgICBpbnQgdGVtcEUgPSB0ZXh0LmdldFNlbGVjdGlvbkVuZCgpICYgMHg3RkZGOworCisvLyAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIj4iKTsKKy8vICAgICAgICAgIHNlbGVjdCgwLCAwKTsKKy8vICAgICAgICAgIHNlbGVjdCh0ZW1wUywgdGVtcEUpOworICAgICAgICAgICAgLy9zZWxlY3QodGVtcFMgLSAodHMgLSBzKSwgdGVtcEUgLSAodGUgLSBlKSk7CisvLyAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIjwiKTsKKworCisvLyAgICAgICAgICBpZiAocyAhPSB0cyB8fCBlICE9IHRlKSBTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgcygiK3MrIikgdHMoIit0cysiKSBlKCIrZSsiKSB0ZSgiK3RlKyIpIik7CisvLyAgICAgICAgICBpZiAodGVtcFMgIT0gdHMgfHwgdGVtcEUgIT0gdGUpIFN5c3RlbS5vdXQucHJpbnRsbigiPnMoIitzKyIpIHRlbXBTKCIrdGVtcFMrIikgZSgiK2UrIikgdGVtcEUoIit0ZW1wRSsiKSIpOworLy8gICAgICAgICAgc2VsZWN0KHMgLSAodHMgLSBzKSwgZSAtICh0ZSAtIGUpKTsKKy8vICAgICAgICAgIGlmICh0ZW1wUyAhPSB0cyB8fCB0ZW1wRSAhPSB0ZSkgU3lzdGVtLm91dC5wcmludGxuKCJzKCIrcysiKSB0ZW1wUygiK3RlbXBTKyIpIGUoIitlKyIpIHRlbXBFKCIrdGVtcEUrIikiKTsKKworLy8gICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJsa2RzbGtzaiIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2VsZWN0KGludCBzSW4sIGludCBlSW4pCisgICAgeworICAgICAgICBzID0gc0luOworICAgICAgICBlID0gZUluOworICAgICAgICB0ZXh0LnNlbGVjdChzLCBlKTsKKyAgICAgICAgdHMgPSB0ZXh0LmdldFNlbGVjdGlvblN0YXJ0KCkgJiAweDdGRkY7CisgICAgICAgIHRlID0gdGV4dC5nZXRTZWxlY3Rpb25FbmQoKSAmIDB4N0ZGRjsKKy8vICAgICAgICBpZiAocyAhPSB0cyB8fCBlICE9IHRlKSB7CisvLyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiPnMoIitzKyIpIHRzKCIrdHMrIikgZSgiK2UrIikgdGUoIit0ZSsiKSIpOworLy8gICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAgICIrKHRzLXMpKyIsIisodGUtZSkpOworLy8gICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldFNlbGVjdGlvblN0YXJ0KCkKKyAgICB7CisgICAgICAgIGNoZWNrQ2hhbmdlKCk7CisvLyAgICAgIHJldHVybiBzOworICAgICAgICByZXR1cm4gdGV4dC5nZXRTZWxlY3Rpb25TdGFydCgpICYgMHg3RkZGOworICAgIH0KKworCisgICAgcHVibGljIGludCBnZXRTZWxlY3Rpb25FbmQoKQorICAgIHsKKyAgICAgICAgY2hlY2tDaGFuZ2UoKTsKKy8vICAgICAgcmV0dXJuIGU7CisgICAgICAgIHJldHVybiB0ZXh0LmdldFNlbGVjdGlvbkVuZCgpICYgMHg3RkZGOworICAgIH0KKworICAgIHB1YmxpYyBmaW5hbCBzeW5jaHJvbml6ZWQgdm9pZCBzZWxlY3RSYW5nZShpbnQgcywgaW50IGUpCisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgLy9pZiAoZ2V0U2VsZWN0aW9uU3RhcnQoKSAhPSBzIHx8IGdldFNlbGVjdGlvbkVuZCgpICE9IGUpIHsKKyAgICAgICAgICAgICAgICAvL3RleHQuc2VsZWN0KHMsIGUpOworICAgICAgICAgICAgICAgIHNlbGVjdChzLGUpOworICAgICAgICAgICAgLy99CisvLyAgICAgICAgICBpZiAoZ2V0U2VsZWN0aW9uU3RhcnQoKSAhPSBzIHx8IGdldFNlbGVjdGlvbkVuZCgpICE9IGUpIHsKKy8vICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkFHSCEgc2VsZWN0KCIrcysiLCIrZSsiKSAtPiAoIisKKy8vICAgICAgICAgICAgICBnZXRTZWxlY3Rpb25TdGFydCgpKyIsIitnZXRTZWxlY3Rpb25FbmQoKSsiKSIpOworLy8gICAgICAgICAgICAgIHRleHQuc2VsZWN0KHMgLSAoZ2V0U2VsZWN0aW9uU3RhcnQoKSAtIHMpLCBlIC0gKGdldFNlbGVjdGlvbkVuZCgpIC0gZSkpOworLy8gICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXhwKSB7CisgICAgICAgICAgICBlcnJvclRleHQoZXhwLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgfQorCisKKworICAgIHB1YmxpYyB2b2lkIGluaXQoKQorICAgIHsKKyAgICAgICAgYnVpbGRHVUkoKTsKKyAgICB9CisKKworICAgIHB1YmxpYyB2b2lkIHN0YXJ0KCkKKyAgICB7CisgICAgfQorCisKKyAgICB2b2lkIGFkZFdpdGhGb250KENvbnRhaW5lciBjb250YWluZXIsIENvbXBvbmVudCBmb28sIEZvbnQgZm9udCkgeworICAgICAgICBpZiAoZm9udCAhPSBudWxsKQorICAgICAgICAgICAgZm9vLnNldEZvbnQoZm9udCk7CisgICAgICAgIGNvbnRhaW5lci5hZGQoZm9vKTsKKyAgICB9CisKKworCisgICBwdWJsaWMgdm9pZCBidWlsZEdVSSgpCisgICAgeworICAgICAgICBzZXRCYWNrZ3JvdW5kKERlbW9VdGlsaXR5LmJnQ29sb3IpOworICAgICAgICBzZXRMYXlvdXQobmV3IEJvcmRlckxheW91dCgpKTsKKworICAgICAgIFBhbmVsIHRvcFBhbmVsID0gbmV3IFBhbmVsKCk7CisKKyAgICAgICAgICAgIExhYmVsIHRpdGxlTGFiZWwgPQorICAgICAgICAgICAgICAgIG5ldyBMYWJlbCgiVGV4dCBCb3VuZGFyeSBEZW1vIiwgTGFiZWwuQ0VOVEVSKTsKKyAgICAgICAgICAgIHRpdGxlTGFiZWwuc2V0Rm9udChEZW1vVXRpbGl0eS50aXRsZUZvbnQpOworICAgICAgICAgICAgdG9wUGFuZWwuYWRkKHRpdGxlTGFiZWwpOworCisgICAgICAgICAgICAvL0xhYmVsIGRlbW89bmV3IExhYmVsKGNyZWRpdFN0cmluZywgTGFiZWwuQ0VOVEVSKTsKKyAgICAgICAgICAgIC8vZGVtby5zZXRGb250KERlbW9VdGlsaXR5LmNyZWRpdEZvbnQpOworICAgICAgICAgICAgLy90b3BQYW5lbC5hZGQoZGVtbyk7CisKKyAgICAgICAgICAgIFBhbmVsIGNob2ljZVBhbmVsID0gbmV3IFBhbmVsKCk7CisKKyAgICAgICAgICAgIExhYmVsIGRlbW8xPW5ldyBMYWJlbCgiQm91bmRhcmllcyIsIExhYmVsLkxFRlQpOworICAgICAgICAgICAgZGVtbzEuc2V0Rm9udChEZW1vVXRpbGl0eS5sYWJlbEZvbnQpOworICAgICAgICAgICAgY2hvaWNlUGFuZWwuYWRkKGRlbW8xKTsKKworICAgICAgICAgICAgYm91bmQgPSBuZXcgQ2hvaWNlKCk7CisgICAgICAgICAgICAgICAgYm91bmQuc2V0QmFja2dyb3VuZChEZW1vVXRpbGl0eS5jaG9pY2VDb2xvcik7CisgICAgICAgICAgICBib3VuZC5hZGRJdGVtKCJTZW50ZW5jZSIpOworICAgICAgICAgICAgYm91bmQuYWRkSXRlbSgiTGluZSBCcmVhayIpOworICAgICAgICAgICAgYm91bmQuYWRkSXRlbSgiV29yZCIpOworICAgICAgICAgICAgYm91bmQuYWRkSXRlbSgiQ2hhciIpOworICAgICAgICAgICAgaWYgKGNob2ljZUZvbnQgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICBib3VuZC5zZXRGb250KGNob2ljZUZvbnQpOworCisgICAgICAgICAgICBjaG9pY2VQYW5lbC5hZGQoYm91bmQpOworICAgICAgICAgICAgdG9wUGFuZWwuYWRkKGNob2ljZVBhbmVsKTsKKworICAgICAgICAgICAgRGVtb1V0aWxpdHkuZml4R3JpZCh0b3BQYW5lbCwxKTsKKworCisgICAgICAgIGFkZCgiTm9ydGgiLCB0b3BQYW5lbCk7CisKKworICAgICAgICAgICAgaW50IFJPV1MgPSAxNTsKKyAgICAgICAgICAgIGludCBDT0xVTU5TID0gNTA7CisvLyAgICAgICAgICAgIHRleHQgPSBuZXcgVGV4dEFyZWEoZ2V0SW5pdGlhbFRleHQoKSwgUk9XUywgQ09MVU1OUyk7Cit0ZXh0ID0gbmV3IEpUZXh0QXJlYShnZXRJbml0aWFsVGV4dCgpLCBST1dTLCBDT0xVTU5TKTsKK3RleHQuc2V0TGluZVdyYXAodHJ1ZSk7Cit0ZXh0LnNldFdyYXBTdHlsZVdvcmQodHJ1ZSk7CisgICAgICAgICAgICB0ZXh0LnNldEVkaXRhYmxlKHRydWUpOworICAgICAgICAgICAgdGV4dC5zZWxlY3RBbGwoKTsKKyAgICAgICAgICAgIHRleHQuc2V0Rm9udChEZW1vVXRpbGl0eS5lZGl0Rm9udCk7CisgICAgICAgICAgICB0ZXh0LnNldEJvcmRlcihCb3JkZXJGYWN0b3J5LmNyZWF0ZUVtcHR5Qm9yZGVyKDIsIDIsIDIsIDIpKTsKKworICAgICAgICBhZGQoIkNlbnRlciIsIG5ldyBKU2Nyb2xsUGFuZSh0ZXh0LCBKU2Nyb2xsUGFuZS5WRVJUSUNBTF9TQ1JPTExCQVJfQUxXQVlTLAorICAgICAgICAgICAgICAgICAgICAgICAgSlNjcm9sbFBhbmUuSE9SSVpPTlRBTF9TQ1JPTExCQVJfTkVWRVIpKTsKKworICAgICAgICBQYW5lbCBjb3B5cmlnaHRQYW5lbCA9IG5ldyBQYW5lbCgpOworICAgICAgICBhZGRXaXRoRm9udCAoY29weXJpZ2h0UGFuZWwsCisgICAgICAgICAgICBuZXcgTGFiZWwoRGVtb1V0aWxpdHkuY29weXJpZ2h0MSwgTGFiZWwuTEVGVCksRGVtb1V0aWxpdHkuY3JlZGl0Rm9udCk7CisgICAgICAgIGFkZFdpdGhGb250IChjb3B5cmlnaHRQYW5lbCwKKyAgICAgICAgICAgIG5ldyBMYWJlbChEZW1vVXRpbGl0eS5jb3B5cmlnaHQyLCBMYWJlbC5MRUZUKSxEZW1vVXRpbGl0eS5jcmVkaXRGb250KTsKKyAgICAgICAgRGVtb1V0aWxpdHkuZml4R3JpZChjb3B5cmlnaHRQYW5lbCwxKTsKKyAgICAgICAgYWRkKCJTb3V0aCIsIGNvcHlyaWdodFBhbmVsKTsKKworICAgICAgICAvL2xheW91dCgpOworICAgICAgICBoYW5kbGVFbnVtQ2hhbmdlZCgpOworCisgICAgICAgIC8vIChuZXcgVGhyZWFkKHRoaXMpKS5zdGFydCgpOworICAgIH0KKworCisKKyAgICBwdWJsaWMgU3RyaW5nIGdldEluaXRpYWxUZXh0KCkKKyAgICB7CisgICAgICAgIHJldHVybgorICAgIC8qCisgICAgICAgICAgICAiXCJUaGlzIGlzIGEgc2VudGVuY2UuXCIgVGhpcyBpcyBub3QuXCIgXCJiZWNhdXNlLiBBbmQgZ28uICIgKworICAgICAgICAgICAgIlRoaXMgaXMgYSBzaW1wbGUgMDEyLjU2Niw1IHNhbXBsZSBzZW50ZW5jZS4gXG4iKworICAgICAgICAgICAgIkl0IGRvZXMgbm90IGhhdmUgdG8gbWFrZSBhbnkgc2Vuc2UgYXMgeW91IGNhbiBzZWUuIFxuIisKKyAgICAgICAgICAgICJOZWwgbWV6em8gZGVsIGNhbW1pbiBkaSBub3N0cmEgdml0YSwgbWkgcml0cm92YWkgaW4gIisKKyAgICAgICAgICAgICAgICAidW5hIHNlbHZhIG9zY3VyYS4gXG4iKworICAgICAgICAgICAgIkNoZSBsYSBkcml0dGEgdmlhIGF2ZW8gc21hcnJpdGEuIFxuIisKKyAgICAgICAgICAgICJIZSBzYWlkLCB0aGF0IEkgc2FpZCwgdGhhdCB5b3Ugc2FpZCEhIFxuIisKKyAgICAgICAgICAgICJEb24ndCByb2NrIHRoZSBib2F0LlxuXG4iKworICAgICAgICAgICAgIkJlY2F1c2UgSSBhbSB0aGUgZGFkZHksIHRoYXQgaXMgd2h5LiBcbiIrCisgICAgICAgICAgICAiTm90IG9uIG15IHRpbWUgKGVsIHRpbW8uKSEgXG4iKworICAgICAgICAgICAgIlRhYlx0VGFiXHJUYWJcdFdvdy4iKworICAgICAgICAgICAgIlNvIHdoYXQhIVxuXG4iKworICAgICAgICAgICAgIklzIHRoaXMgYSBxdWVzdGlvbj8/PyAgIiArCisgICAgICAgICAgICAiSSB3b25kZXIuLi5IbW0uXG4iICsKKyAgICAgICAgICAgICJIYXJyaXMgdGh1bWJlZCBkb3duIHNldmVyYWwsIGluY2x1ZGluZyBcIkF3YXkgV2UgR29cIiAiKworICAgICAgICAgICAgICAgICIod2hpY2ggYmVjYW1lIHRoZSBodWdlIHN1Y2Nlc3MgT2tsYWhvbWEhKS4gXG4iKworICAgICAgICAgICAgIk9uZSBzcGVjaWVzLCBCLiBhbnRocmFjaXMsIGlzIGhpZ2hseSB2aXJ1bGVudC5cbiIrCisgICAgICAgICAgICAiV29sZiBzYWlkIGFib3V0IFNvdW5kZXI6IFwiQmVhdXRpZnVsbHkgdGhvdWdodC1vdXQgYW5kICIrCisgICAgICAgICAgICAgICAgImRpcmVjdGVkLlwiXG4iKworICAgICAgICAgICAgIkhhdmUgeW91IGV2ZXIgc2FpZCwgXCJUaGlzIGlzIHdoZXJlIEkgc2hhbGwgbGl2ZVwiPyBcbiIrCisgICAgICAgICAgICAiSGUgMTAwMCwyMzMsNDU2LjAwMCBhbnN3ZXJlZCwgXCJZb3UgbWF5IG5vdCFcIiBcbiIrCisgICAgICAgICAgICAiQW5vdGhlciBwb3B1bGFyIHNheWluZyBpczogXCJIb3cgZG8geW91IGRvP1wiLiBcbiIrCisgICAgICAgICAgICAiV2hhdCBpcyB0aGUgcHJvcGVyIHVzZSBvZiB0aGUgYWJicmV2aWF0aW9uIHBwLj8gXG4iKworICAgICAgICAgICAgIlllcywgSSBhbSAxLDIzLjMyMiUgZGVmaW5hdGVsbHkgMTJcIiB0YWxsISEiOworICAgICovCisgICAgICAgICAgICAiKFwiVGhpcyBpcyBhIGNvbXBsZXRlIHNlbnRlbmNlLlwiKSBUaGlzIGlzIChcIm5vdC5cIikgYWxzby4gICIKKyAgICAgICAgICAgICsiQW4gYWJicmV2aWF0aW9uIGluIHRoZSBtaWRkbGUsIGV0Yy4gYW5kIG9uZSBhdCB0aGUgZW5kLCBldGMuICIrCisgICAgICAgICAgICAgICAgIlRoaXMgIgorICAgICAgICAgICAgKyJpcyBhIHNpbXBsZSBzYW1wbGUgMDEyLjU2Niw1IHNlbnRlbmNlLiBJdCBkb2Vzbid0ICIKKyAgICAgICAgICAgICsiaGF2ZSB0byBtYWtlIGFueSBzZW5zZSwgYXMgeW91IGNhbiBzZWUuIE5lbCBtZXp6byBkZWwgIGMiCisgICAgICAgICAgICArImFtbWluIGRpIG5vc3RyYSB2aXRhLCBtaSByaXRyb3ZhaSBpbiB1bmEgc2VsdmEgb3NjdXJhLiBDaGUgIgorICAgICAgICAgICAgKyJsYSBkcml0dGEgdmlhIGF2ZW8gc21hcnJpdGEuIE5vdCBvbiBteSB0aW1lIChlbCB0aW1vLikhIEFuZCAiCisgICAgICAgICAgICArInRhYnVsYXRlZCBjb2x1bW5zOiBcdENvbDFcdENvbDJcdDMsNDU2JS5cdCAiCisgICAgICAgICAgICArIklzIHRoaXMgYSBxdWVzdGlvbj8/PyAgSSB3b25kZXIuLi4gSG1tLiBIYXJyaXMgdGh1bWJlZCAiCisgICAgICAgICAgICArImRvd24gc2V2ZXJhbCwgaW5jbHVkaW5nIFwiQXdheSBXZSBHb1wiICh3aGljaCBiZWNhbWUgdGhlICAiCisgICAgICAgICAgICArImh1Z2Ugc3VjY2VzcyBPa2xhaG9tYSEpLiBPbmUgc3BlY2llcywgQi4gYW50aHJhY2lzLCBpcyAgIgorICAgICAgICAgICAgKyJoaWdobHkgdmlydWxlbnQuIFdvbGYgc2FpZCBhYm91dCBTb3VuZGVyOiBcIkJlYXV0aWZ1bGx5ICAiCisgICAgICAgICAgICArInRob3VnaHQtb3V0IGFuZCBkaXJlY3RlZC5cIiBIYXZlIHlvdSBldmVyIHNhaWQsIFwiVGhpcyBpcyAiKworICAgICAgICAgICAgICAgICJ3aGVyZSBJICIKKyAgICAgICAgICAgICsic2hhbGwgbGl2ZVwiPyBIZSBzYWlkIDEwMDAsMjMzLDQ1Ni4wMDAgYW5kIGFuc3dlcmVkLCBcIllvdSAiKworICAgICAgICAgICAgICAgICJtYXkgbm90IVwiICAiCisgICAgICAgICAgICArIkFub3RoZXIgcG9wdWxhciBzYXlpbmcgaXM6IFwiSG93IGRvIHlvdSBkbz9cIi4gV2hhdCBpcyB0aGUgICIKKyAgICAgICAgICAgICsicHJvcGVyIHVzZSBvZiB0aGUgYWJicmV2aWF0aW9uIHBwLj8gWWVzLCBJIGFtIDEyXCcgM1wiIHRhbGwhISI7CisgICAgfQorCisKKyAgICBwdWJsaWMgdm9pZCBoYW5kbGVFbnVtQ2hhbmdlZCgpCisgICAgeworICAgICAgICBTdHJpbmcgcyA9IGJvdW5kLmdldFNlbGVjdGVkSXRlbSgpOworICAgICAgICBpZiAocy5lcXVhbHMoIkNoYXIiKSkgeworICAgICAgICAgICAgZXJyb3JUZXh0KCJnZXRDaGFyYWN0ZXJJbnN0YW5jZSIpOworICAgICAgICAgICAgZW51bSA9IEJyZWFrSXRlcmF0b3IuZ2V0Q2hhcmFjdGVySW5zdGFuY2UoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzLmVxdWFscygiV29yZCIpKSB7CisgICAgICAgICAgICBlcnJvclRleHQoInRXb3JkQnJlYWsiKTsKKyAgICAgICAgICAgIGVudW0gPSBCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHMuZXF1YWxzKCJMaW5lIEJyZWFrIikpIHsKKyAgICAgICAgICAgIGVycm9yVGV4dCgiZ2V0TGluZUluc3RhbmNlIik7CisgICAgICAgICAgICBlbnVtID0gQnJlYWtJdGVyYXRvci5nZXRMaW5lSW5zdGFuY2UoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIC8qIGlmIChzLmVxdWFscygiU2VudGVuY2UiKSkgKi8geworICAgICAgICAgICAgZXJyb3JUZXh0KCJnZXRTZW50ZW5jZUluc3RhbmNlIik7CisgICAgICAgICAgICBlbnVtID0gQnJlYWtJdGVyYXRvci5nZXRTZW50ZW5jZUluc3RhbmNlKCk7CisgICAgICAgIH0KKyAgICAgICAgZW51bS5zZXRUZXh0KHRleHQuZ2V0VGV4dCgpKTsKKyAgICAgICAgc2VsZWN0UmFuZ2UoMCwgMCk7CisgICAgICAgIC8vdGV4dC5zZWxlY3QoMCwwKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBoYW5kbGVGb3J3YXJkKCkKKyAgICB7CisgICAgICAgIHRyeSB7CisvLyAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImVudGVyaW5nIGhhbmRsZUZvcndhcmQiKTsKKyAgICAgICAgICAgIGVudW0uc2V0VGV4dCh0ZXh0LmdldFRleHQoKSk7CisgICAgICAgICAgICBpbnQgb2xkU3RhcnQgPSBnZXRTZWxlY3Rpb25TdGFydCgpOworICAgICAgICAgICAgaW50IG9sZEVuZCA9IGdldFNlbGVjdGlvbkVuZCgpOworCisvLyAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImhhbmRsZUZvcndhcmQ6IG9sZFN0YXJ0PSIgKyBvbGRTdGFydCArICIsIG9sZEVuZD0iICsgb2xkRW5kKTsKKworICAgICAgICAgICAgaWYgKG9sZEVuZCA8IDEpIHsKKyAgICAgICAgICAgICAgICBzZWxlY3RSYW5nZSgwLCBlbnVtLmZvbGxvd2luZygwKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnQgcyA9IGVudW0uZm9sbG93aW5nKG9sZEVuZC0xKTsKKyAgICAgICAgICAgICAgICBpbnQgZSA9IGVudW0ubmV4dCgpOworICAgICAgICAgICAgICAgIGlmIChlID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIGUgPSBzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzZWxlY3RSYW5nZShzLCBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vdGV4dC5zZWxlY3QocywgZSk7CisgICAgICAgICAgICBlcnJvclRleHQoIjwiICsgb2xkU3RhcnQgKyAiLCIgKyBvbGRFbmQgKyAiPiAtPiA8IiArCisgICAgICAgICAgICAgICAgcyArICIsIiArIGUgKyAiPiIpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZXhwKSB7CisgICAgICAgICAgICBlcnJvclRleHQoZXhwLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgaGFuZGxlQmFja3dhcmQoKQorICAgIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGVudW0uc2V0VGV4dCh0ZXh0LmdldFRleHQoKSk7CisgICAgICAgICAgICBpbnQgb2xkU3RhcnQgPSBnZXRTZWxlY3Rpb25TdGFydCgpOworICAgICAgICAgICAgaW50IG9sZEVuZCA9IGdldFNlbGVjdGlvbkVuZCgpOworICAgICAgICAgICAgaWYgKG9sZFN0YXJ0IDwgMSkgeworICAgICAgICAgICAgICAgIHNlbGVjdFJhbmdlKDAsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaW50IGUgPSBlbnVtLmZvbGxvd2luZyhvbGRTdGFydC0xKTsKKyAgICAgICAgICAgICAgICBpbnQgcyA9IGVudW0ucHJldmlvdXMoKTsKKyAgICAgICAgICAgICAgICBzZWxlY3RSYW5nZShzLCBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vdGV4dC5zZWxlY3QocywgZSk7CisgICAgICAgICAgICBlcnJvclRleHQoIjwiICsgb2xkU3RhcnQgKyAiLCIgKyBvbGRFbmQgKyAiPiAtPiA8IiArIHMgKyAiLCIgKyBlICsgIj4iKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGV4cCkgeworICAgICAgICAgICAgZXJyb3JUZXh0KGV4cC50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGFjdGlvbihFdmVudCBldnQsIE9iamVjdCBvYmopCisgICAgeworCisgICAgICAgIGlmKGV2dC50YXJnZXQgaW5zdGFuY2VvZiBCdXR0b24gJiYgbGVmdC5lcXVhbHMob2JqKSkKKyAgICAgICAgeworICAgICAgICAgICAgaGFuZGxlQmFja3dhcmQoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYoZXZ0LnRhcmdldCBpbnN0YW5jZW9mIEJ1dHRvbiAmJiByaWdodC5lcXVhbHMob2JqKSkKKyAgICAgICAgeworICAgICAgICAgICAgaGFuZGxlRm9yd2FyZCgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZihldnQudGFyZ2V0IGluc3RhbmNlb2YgQ2hvaWNlKQorICAgICAgICB7CisgICAgICAgICAgICBoYW5kbGVFbnVtQ2hhbmdlZCgpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGhhbmRsZUV2ZW50KEV2ZW50IGV2dCkKKyAgICB7CisgICAgICAgIGlmIChldnQuaWQgPT0gRXZlbnQuS0VZX1BSRVNTIHx8IGV2dC5pZCA9PSBFdmVudC5LRVlfQUNUSU9OKSB7CisgICAgICAgICAgICBpZiAoZXZ0LmtleSA9PSBFdmVudC5SSUdIVCB8fCAoZXZ0LmtleSA9PSAweDBFICYmIGV2dC5jb250cm9sRG93bigpKSkgeworICAgICAgICAgICAgICAgIGhhbmRsZUZvcndhcmQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGV2dC5rZXkgPT0gRXZlbnQuTEVGVCB8fCAoZXZ0LmtleSA9PSAweDEwICYmIGV2dC5jb250cm9sRG93bigpKSkgeworICAgICAgICAgICAgICAgIGhhbmRsZUJhY2t3YXJkKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICBpZiAoZXZ0LmlkID09IEV2ZW50LldJTkRPV19ERVNUUk9ZICYmIGV2dC50YXJnZXQgPT0gdGhpcykgeworICAgICAgICAgICAgdGhpcy5oaWRlKCk7CisgICAgICAgICAgICB0aGlzLmRpc3Bvc2UoKTsKKyAgICAgICAgICAgICAgICBpZiAoYXBwbGV0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgIGFwcGxldC5kZW1vQ2xvc2VkKCk7CisgICAgICAgICAgICAgICB9IGVsc2UgU3lzdGVtLmV4aXQoMCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3VwZXIuaGFuZGxlRXZlbnQoZXZ0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBlcnJvclRleHQoU3RyaW5nIHMpCisgICAgeworICAgICAgIGlmIChERUJVRykKKyAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2RlbW8vcmJiaS9wYWNrYWdlLmh0bWwgYi9zcmMvY29tL2libS9kZW1vL3JiYmkvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQ1ZWI0NmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9kZW1vL3JiYmkvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8IS0tICBDb3B5cmlnaHQgKEMpIDIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisgIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9kZW1vL3JiYmkvQXR0aWMvcGFja2FnZS5odG1sLHYgJAorICAkUmV2aXNpb246IDEuMSAkCisgICREYXRlOiAyMDAwLzAzLzE1IDE3OjQzOjUzICQKKy0tPgorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0id2hpdGUiPgorUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBhbmQgRGljdGlvbmFyeUJhc2VkQnJlYWtJdGVyYXRvciBkZW1vIGFwcGxpY2F0aW9ucy4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9kZW1vL3JibmYvUmJuZkRlbW8uamF2YSBiL3NyYy9jb20vaWJtL2RlbW8vcmJuZi9SYm5mRGVtby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmU3ODI5NWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9kZW1vL3JibmYvUmJuZkRlbW8uamF2YQpAQCAtMCwwICsxLDUzMyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vZGVtby9yYm5mL0F0dGljL1JibmZEZW1vLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDMvMTAgMDM6NDc6NDMgJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmRlbW8ucmJuZjsKKworaW1wb3J0IGNvbS5pYm0uZGVtby4qOworaW1wb3J0IGphdmEuYXBwbGV0LkFwcGxldDsKK2ltcG9ydCBqYXZhLmF3dC4qOworaW1wb3J0IGphdmEuYXd0LmV2ZW50Lio7CitpbXBvcnQgamF2YS50ZXh0LkRlY2ltYWxGb3JtYXQ7CitpbXBvcnQgamF2YS50ZXh0LkJyZWFrSXRlcmF0b3I7CitpbXBvcnQgamF2YS50ZXh0LlBhcnNlUG9zaXRpb247CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKworaW1wb3J0IGNvbS5pYm0udGV4dC5SdWxlQmFzZWROdW1iZXJGb3JtYXQ7CisKK3B1YmxpYyBjbGFzcyBSYm5mRGVtbyBleHRlbmRzIERlbW9BcHBsZXQgeworICAgIC8qKgorICAgICAqIFB1dHMgYSBjb3B5cmlnaHQgaW4gdGhlIC5jbGFzcyBmaWxlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodE5vdGljZQorICAgICAgICA9ICJDb3B5cmlnaHQgXHUwMGE5MTk5Ny0xOTk4IElCTSBDb3JwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4iOworCisgICAgLyoKKyAgICAgKiBjb2RlIHRvIHJ1biB0aGUgZGVtbyBhcyBhbiBhcHBsaWNhdGlvbgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3YpIHsKKyAgICAJbmV3IFJibmZEZW1vKCkuc2hvd0RlbW8oKTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgRGltZW5zaW9uIGdldERlZmF1bHRGcmFtZVNpemUoRGVtb0FwcGxldCBhcHBsZXQsIEZyYW1lIGYpIHsKKyAgICAJcmV0dXJuIG5ldyBEaW1lbnNpb24oNDMwLDI3MCk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIEZyYW1lIGNyZWF0ZURlbW9GcmFtZShEZW1vQXBwbGV0IGFwcGxldCkgeworICAgICAgICBmaW5hbCBGcmFtZSB3aW5kb3cgPSBuZXcgRnJhbWUoIk51bWJlciBTcGVsbG91dCBEZW1vIik7CisgICAgICAgIHdpbmRvdy5zZXRTaXplKDgwMCwgNjAwKTsKKyAgICAgICAgd2luZG93LnNldExheW91dChuZXcgQm9yZGVyTGF5b3V0KCkpOworCisgICAgICAgIFBhbmVsIG1haW5QYW5lbCA9IG5ldyBQYW5lbCgpOworICAgICAgICBtYWluUGFuZWwuc2V0TGF5b3V0KG5ldyBHcmlkTGF5b3V0KDEsMikpOworCisgICAgICAgIGNvbW1lbnRhcnlGaWVsZCA9IG5ldyBUZXh0QXJlYSgiIiwgMCwgMCwgVGV4dEFyZWEuU0NST0xMQkFSU19WRVJUSUNBTF9PTkxZKTsKKyAgICAgICAgY29tbWVudGFyeUZpZWxkLnNldFNpemUoODAwLCA1MCk7CisgICAgICAgIGNvbW1lbnRhcnlGaWVsZC5zZXRUZXh0KFJibmZTYW1wbGVSdWxlU2V0cy5zYW1wbGVSdWxlU2V0Q29tbWVudGFyeVswXSk7CisgICAgICAgIGNvbW1lbnRhcnlGaWVsZC5zZXRFZGl0YWJsZShmYWxzZSk7CisgICAgICAgIGNvbW1lbnRhcnlGaWVsZC5zZXRGb250KG5ldyBGb250KCJIZWx2ZXRpY2EiLCBGb250LlBMQUlOLCAxNCkpOworCisgICAgICAgIHNwZWxsb3V0Rm9ybWF0dGVyID0gbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChSYm5mU2FtcGxlUnVsZVNldHMudXNFbmdsaXNoLCBMb2NhbGUuVVMpOworICAgICAgICBzcGVsbG91dEZvcm1hdHRlci5zZXRMZW5pZW50UGFyc2VNb2RlKGxlbmllbnRQYXJzZSk7CisgICAgICAgIHBvcHVsYXRlUnVsZVNldE1lbnUoKTsKKyAgICAgICAgbnVtYmVyRm9ybWF0dGVyID0gbmV3IERlY2ltYWxGb3JtYXQoIiMsIyMwLiMjIyMjIyMjIyMiKTsKKyAgICAgICAgcGFyc2VQb3NpdGlvbiA9IG5ldyBQYXJzZVBvc2l0aW9uKDApOworICAgICAgICB0aGVOdW1iZXIgPSAwOworCisgICAgICAgIG51bWJlckZpZWxkID0gbmV3IFRleHRGaWVsZCgpOworICAgICAgICBudW1iZXJGaWVsZC5zZXRGb250KG5ldyBGb250KCJTZXJpZiIsIEZvbnQuUExBSU4sIDI0KSk7CisgICAgICAgIHRleHRGaWVsZCA9IG5ldyBEZW1vVGV4dEZpZWxkSG9sZGVyKCk7CisgICAgICAgIHRleHRGaWVsZC5zZXRGb250KG5ldyBGb250KCJTZXJpZiIsIEZvbnQuUExBSU4sIDI0KSk7CisgICAgICAgIHJ1bGVzRmllbGQgPSBuZXcgRGVtb1RleHRGaWVsZEhvbGRlcigpOworICAgICAgICBydWxlc0ZpZWxkLnNldEZvbnQobmV3IEZvbnQoIlNlcmlmIiwgRm9udC5QTEFJTiwgMTQpKTsKKyAgICAgICAgbGVuaWVudFBhcnNlQnV0dG9uID0gbmV3IENoZWNrYm94KCJMZW5pZW50IHBhcnNlIiwgbGVuaWVudFBhcnNlKTsKKworICAgICAgICBudW1iZXJGaWVsZC5hZGRUZXh0TGlzdGVuZXIobmV3IFRleHRMaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHRleHRWYWx1ZUNoYW5nZWQoVGV4dEV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW51bWJlckZpZWxkSGFzRm9jdXMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIFN0cmluZyBmaWVsZFRleHQgPSAoKFRleHRDb21wb25lbnQpKGUuZ2V0U291cmNlKCkpKS5nZXRUZXh0KCk7CisgICAgICAgICAgICAgICAgcGFyc2VQb3NpdGlvbi5zZXRJbmRleCgwKTsKKyAgICAgICAgICAgICAgICBOdW1iZXIgdGVtcCA9IG51bWJlckZvcm1hdHRlci5wYXJzZShmaWVsZFRleHQsIHBhcnNlUG9zaXRpb24pOworICAgICAgICAgICAgICAgIGlmICh0ZW1wID09IG51bGwgfHwgcGFyc2VQb3NpdGlvbi5nZXRJbmRleCgpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdGhlTnVtYmVyID0gMDsKKyAgICAgICAgICAgICAgICAgICAgdGV4dEZpZWxkLnNldFRleHQoIlBBUlNFIEVSUk9SIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aGVOdW1iZXIgPSB0ZW1wLmRvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIHRleHRGaWVsZC5zZXRUZXh0KHNwZWxsb3V0Rm9ybWF0dGVyLmZvcm1hdCh0aGVOdW1iZXIsIHJ1bGVTZXROYW1lKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisKKyAgICAgICAgbnVtYmVyRmllbGQuYWRkRm9jdXNMaXN0ZW5lcihuZXcgRm9jdXNBZGFwdGVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgZm9jdXNMb3N0KEZvY3VzRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIG51bWJlckZpZWxkSGFzRm9jdXMgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBudW1iZXJGaWVsZC5zZXRUZXh0KG51bWJlckZvcm1hdHRlci5mb3JtYXQodGhlTnVtYmVyKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGZvY3VzR2FpbmVkKEZvY3VzRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIG51bWJlckZpZWxkSGFzRm9jdXMgPSB0cnVlOworICAgICAgICAgICAgICAgIG51bWJlckZpZWxkLnNlbGVjdEFsbCgpOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisKKyAgICAgICAgdGV4dEZpZWxkLmFkZEtleUxpc3RlbmVyKG5ldyBLZXlBZGFwdGVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQga2V5VHlwZWQoS2V5RXZlbnQgZSkgeworICAgICAgICAgICAgICAgIGlmIChlLmdldEtleUNoYXIoKSA9PSAnXHQnKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBmaWVsZFRleHQgPSAoKFRleHRDb21wb25lbnQpKGUuZ2V0U291cmNlKCkpKS5nZXRUZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIHBhcnNlUG9zaXRpb24uc2V0SW5kZXgoMCk7CisgICAgICAgICAgICAgICAgICAgIHRoZU51bWJlciA9IHNwZWxsb3V0Rm9ybWF0dGVyLnBhcnNlKGZpZWxkVGV4dCwgcGFyc2VQb3NpdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGVOdW1iZXIgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyRmllbGQuc2V0VGV4dCgiUEFSU0UgRVJST1IiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHRGaWVsZC5zZWxlY3RBbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChwYXJzZVBvc2l0aW9uLmdldEluZGV4KCkgPCBmaWVsZFRleHQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHRGaWVsZC5zZWxlY3QocGFyc2VQb3NpdGlvbi5nZXRJbmRleCgpLCBmaWVsZFRleHQubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyRmllbGQuc2V0VGV4dChudW1iZXJGb3JtYXR0ZXIuZm9ybWF0KHRoZU51bWJlcikpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEZpZWxkLnNlbGVjdEFsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyRmllbGQuc2V0VGV4dChudW1iZXJGb3JtYXR0ZXIuZm9ybWF0KHRoZU51bWJlcikpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGUuY29uc3VtZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworCisgICAgICAgIHRleHRGaWVsZC5hZGRGb2N1c0xpc3RlbmVyKG5ldyBGb2N1c0FkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBmb2N1c0xvc3QoRm9jdXNFdmVudCBlKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGZpZWxkVGV4dCA9ICgoVGV4dENvbXBvbmVudCkoZS5nZXRTb3VyY2UoKSkpLmdldFRleHQoKTsKKyAgICAgICAgICAgICAgICBwYXJzZVBvc2l0aW9uLnNldEluZGV4KDApOworICAgICAgICAgICAgICAgIHRoZU51bWJlciA9IHNwZWxsb3V0Rm9ybWF0dGVyLnBhcnNlKGZpZWxkVGV4dCwgcGFyc2VQb3NpdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmRvdWJsZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSA9PSAwKQorICAgICAgICAgICAgICAgICAgICBudW1iZXJGaWVsZC5zZXRUZXh0KCJQQVJTRSBFUlJPUiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbnVtYmVyRmllbGQuc2V0VGV4dChudW1iZXJGb3JtYXR0ZXIuZm9ybWF0KHRoZU51bWJlcikpOworICAgICAgICAgICAgICAgIHRleHRGaWVsZC5zZXRUZXh0KHRleHRGaWVsZC5nZXRUZXh0KCkpOyAvLyB0ZXh0RmllbGQucmVwYWludCgpIGRpZG4ndCB3b3JrIHJpZ2h0CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGZvY3VzR2FpbmVkKEZvY3VzRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIHRleHRGaWVsZC5zZWxlY3RBbGwoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworCisgICAgICAgIHJ1bGVzRmllbGQuYWRkS2V5TGlzdGVuZXIobmV3IEtleUFkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBrZXlUeXBlZChLZXlFdmVudCBlKSB7CisgICAgICAgICAgICAgICAgaWYgKGUuZ2V0S2V5Q2hhcigpID09ICdcdCcpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGZpZWxkVGV4dCA9ICgoVGV4dENvbXBvbmVudCkoZS5nZXRTb3VyY2UoKSkpLmdldFRleHQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1hdHRlck1lbnUuZ2V0U2VsZWN0ZWRJdGVtKCkuZXF1YWxzKCJDdXN0b20iKSB8fCAhZmllbGRUZXh0LmVxdWFscygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJibmZTYW1wbGVSdWxlU2V0cy5zYW1wbGVSdWxlU2V0c1tmb3JtYXR0ZXJNZW51LmdldFNlbGVjdGVkSW5kZXgoKV0pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCB0ZW1wID0gbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChmaWVsZFRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAuc2V0TGVuaWVudFBhcnNlTW9kZShsZW5pZW50UGFyc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVsYXRlUnVsZVNldE1lbnUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVsbG91dEZvcm1hdHRlciA9IHRlbXA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tUnVsZVNldCA9IGZpZWxkVGV4dDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXJNZW51LnNlbGVjdCgiQ3VzdG9tIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudGFyeUZpZWxkLnNldFRleHQoUmJuZlNhbXBsZVJ1bGVTZXRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVSdWxlU2V0Q29tbWVudGFyeVtSYm5mU2FtcGxlUnVsZVNldHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZVJ1bGVTZXRDb21tZW50YXJ5Lmxlbmd0aCAtIDFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpc3BsYXkoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24geCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRGaWVsZC5zZXRUZXh0KHgudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZS5jb25zdW1lKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisKKyAgICAgICAgcnVsZXNGaWVsZC5hZGRGb2N1c0xpc3RlbmVyKG5ldyBGb2N1c0FkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBmb2N1c0xvc3QoRm9jdXNFdmVudCBlKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGZpZWxkVGV4dCA9ICgoVGV4dENvbXBvbmVudCkoZS5nZXRTb3VyY2UoKSkpLmdldFRleHQoKTsKKyAgICAgICAgICAgICAgICBpZiAoZm9ybWF0dGVyTWVudS5nZXRTZWxlY3RlZEl0ZW0oKS5lcXVhbHMoIkN1c3RvbSIpIHx8ICFmaWVsZFRleHQuZXF1YWxzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYm5mU2FtcGxlUnVsZVNldHMuc2FtcGxlUnVsZVNldHNbZm9ybWF0dGVyTWVudS5nZXRTZWxlY3RlZEluZGV4KCldKSkgeworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IHRlbXAgPSBuZXcgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KGZpZWxkVGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLnNldExlbmllbnRQYXJzZU1vZGUobGVuaWVudFBhcnNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvcHVsYXRlUnVsZVNldE1lbnUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNwZWxsb3V0Rm9ybWF0dGVyID0gdGVtcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbVJ1bGVTZXQgPSBmaWVsZFRleHQ7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXJNZW51LnNlbGVjdCgiQ3VzdG9tIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZWRpc3BsYXkoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIHgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHRGaWVsZC5zZXRUZXh0KHgudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcnVsZXNGaWVsZC5zZXRUZXh0KHJ1bGVzRmllbGQuZ2V0VGV4dCgpKTsgLy8gcnVsZXNGaWVsZC5yZXBhaW50KCkgZGlkbid0IHdvcmsgcmlnaHQKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworCisgICAgICAgIGxlbmllbnRQYXJzZUJ1dHRvbi5hZGRJdGVtTGlzdGVuZXIobmV3IEl0ZW1MaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGl0ZW1TdGF0ZUNoYW5nZWQoSXRlbUV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBsZW5pZW50UGFyc2UgPSBsZW5pZW50UGFyc2VCdXR0b24uZ2V0U3RhdGUoKTsKKyAgICAgICAgICAgICAgICBzcGVsbG91dEZvcm1hdHRlci5zZXRMZW5pZW50UGFyc2VNb2RlKGxlbmllbnRQYXJzZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKworICAgICAgICBudW1iZXJGaWVsZC5zZXRUZXh0KG51bWJlckZvcm1hdHRlci5mb3JtYXQodGhlTnVtYmVyKSk7CisgICAgICAgIG51bWJlckZpZWxkLnNlbGVjdEFsbCgpOworICAgICAgICB0ZXh0RmllbGQuc2V0VGV4dChzcGVsbG91dEZvcm1hdHRlci5mb3JtYXQodGhlTnVtYmVyLCBydWxlU2V0TmFtZSkpOworCisgICAgICAgIFBhbmVsIGxlZnRQYW5lbCA9IG5ldyBQYW5lbCgpOworICAgICAgICBsZWZ0UGFuZWwuc2V0TGF5b3V0KG5ldyBCb3JkZXJMYXlvdXQoKSk7CisgICAgICAgIFBhbmVsIHBhbmVsID0gbmV3IFBhbmVsKCk7CisgICAgICAgIHBhbmVsLnNldExheW91dChuZXcgQm9yZGVyTGF5b3V0KCkpOworICAgICAgICBQYW5lbCBwYW5lbDEgPSBuZXcgUGFuZWwoKTsKKyAgICAgICAgcGFuZWwxLnNldExheW91dChuZXcgR3JpZExheW91dCgzLCAxKSk7CisgICAgICAgIHBhbmVsMS5hZGQobmV3IFBhbmVsKCkpOworICAgICAgICBwYW5lbDEuYWRkKG51bWJlckZpZWxkLCAiQ2VudGVyIik7CisgICAgICAgIHBhbmVsMS5hZGQobGVuaWVudFBhcnNlQnV0dG9uKTsKKyAgICAgICAgcGFuZWwuYWRkKHBhbmVsMSwgIkNlbnRlciIpOworICAgICAgICBQYW5lbCBwYW5lbDIgPSBuZXcgUGFuZWwoKTsKKyAgICAgICAgcGFuZWwyLnNldExheW91dChuZXcgR3JpZExheW91dCgzLCAzKSk7CisgICAgICAgIEJ1dHRvbiBidXR0b24gPSBuZXcgQnV0dG9uKCIrMTAwIik7CisgICAgICAgIGJ1dHRvbi5hZGRBY3Rpb25MaXN0ZW5lciggbmV3IEFjdGlvbkxpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICByb2xsKDEwMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICAgICAgcGFuZWwyLmFkZChidXR0b24pOworICAgICAgICBidXR0b24gPSBuZXcgQnV0dG9uKCIrMTAiKTsKKyAgICAgICAgYnV0dG9uLmFkZEFjdGlvbkxpc3RlbmVyKCBuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIHJvbGwoMTApOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgICAgIHBhbmVsMi5hZGQoYnV0dG9uKTsKKyAgICAgICAgYnV0dG9uID0gbmV3IEJ1dHRvbigiKzEiKTsKKyAgICAgICAgYnV0dG9uLmFkZEFjdGlvbkxpc3RlbmVyKCBuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIHJvbGwoMSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICAgICAgcGFuZWwyLmFkZChidXR0b24pOworICAgICAgICBidXR0b24gPSBuZXcgQnV0dG9uKCI8Iik7CisgICAgICAgIGJ1dHRvbi5hZGRBY3Rpb25MaXN0ZW5lciggbmV3IEFjdGlvbkxpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICB0aGVOdW1iZXIgKj0gMTA7CisgICAgICAgICAgICAgICAgcmVkaXNwbGF5KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gKTsKKyAgICAgICAgcGFuZWwyLmFkZChidXR0b24pOworICAgICAgICBwYW5lbDIuYWRkKG5ldyBQYW5lbCgpKTsKKyAgICAgICAgYnV0dG9uID0gbmV3IEJ1dHRvbigiPiIpOworICAgICAgICBidXR0b24uYWRkQWN0aW9uTGlzdGVuZXIoIG5ldyBBY3Rpb25MaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisgICAgICAgICAgICAgICAgdGhlTnVtYmVyIC89IDEwOworICAgICAgICAgICAgICAgIHJlZGlzcGxheSgpOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgICAgIHBhbmVsMi5hZGQoYnV0dG9uKTsKKyAgICAgICAgYnV0dG9uID0gbmV3IEJ1dHRvbigiLTEwMCIpOworICAgICAgICBidXR0b24uYWRkQWN0aW9uTGlzdGVuZXIoIG5ldyBBY3Rpb25MaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisgICAgICAgICAgICAgICAgcm9sbCgtMTAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSApOworICAgICAgICBwYW5lbDIuYWRkKGJ1dHRvbik7CisgICAgICAgIGJ1dHRvbiA9IG5ldyBCdXR0b24oIi0xMCIpOworICAgICAgICBidXR0b24uYWRkQWN0aW9uTGlzdGVuZXIoIG5ldyBBY3Rpb25MaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisgICAgICAgICAgICAgICAgcm9sbCgtMTApOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgICAgIHBhbmVsMi5hZGQoYnV0dG9uKTsKKyAgICAgICAgYnV0dG9uID0gbmV3IEJ1dHRvbigiLTEiKTsKKyAgICAgICAgYnV0dG9uLmFkZEFjdGlvbkxpc3RlbmVyKCBuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIHJvbGwoLTEpOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisgICAgICAgIHBhbmVsMi5hZGQoYnV0dG9uKTsKKyAgICAgICAgcGFuZWwuYWRkKHBhbmVsMiwgIkVhc3QiKTsKKyAgICAgICAgbGVmdFBhbmVsLmFkZChwYW5lbCwgIk5vcnRoIik7CisgICAgICAgIGxlZnRQYW5lbC5hZGQodGV4dEZpZWxkLCAiQ2VudGVyIik7CisKKyAgICAgICAgUGFuZWwgcmlnaHRQYW5lbCA9IG5ldyBQYW5lbCgpOworICAgICAgICByaWdodFBhbmVsLnNldExheW91dChuZXcgQm9yZGVyTGF5b3V0KCkpOworICAgICAgICBmb3JtYXR0ZXJNZW51ID0gbmV3IENob2ljZSgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IFJibmZTYW1wbGVSdWxlU2V0cy5zYW1wbGVSdWxlU2V0TmFtZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBmb3JtYXR0ZXJNZW51LmFkZEl0ZW0oUmJuZlNhbXBsZVJ1bGVTZXRzLnNhbXBsZVJ1bGVTZXROYW1lc1tpXSk7CisgICAgICAgIGZvcm1hdHRlck1lbnUuYWRkSXRlbSgiQ3VzdG9tIik7CisgICAgICAgIGZvcm1hdHRlck1lbnUuYWRkSXRlbUxpc3RlbmVyKG5ldyBJdGVtTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBpdGVtU3RhdGVDaGFuZ2VkKEl0ZW1FdmVudCBlKSB7CisgICAgICAgICAgICAgICAgQ2hvaWNlIHNvdXJjZSA9IChDaG9pY2UpKGUuZ2V0U291cmNlKCkpOworICAgICAgICAgICAgICAgIGludCBpdGVtID0gc291cmNlLmdldFNlbGVjdGVkSW5kZXgoKTsKKyAgICAgICAgICAgICAgICBMb2NhbGUgbG9jYWxlID0gUmJuZlNhbXBsZVJ1bGVTZXRzLnNhbXBsZVJ1bGVTZXRMb2NhbGVzW2l0ZW1dOworCisgICAgICAgICAgICAgICAgY29tbWVudGFyeUZpZWxkLnNldFRleHQoUmJuZlNhbXBsZVJ1bGVTZXRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVSdWxlU2V0Q29tbWVudGFyeVtpdGVtXSk7CisKKyAgICAgICAgICAgICAgICBpZiAobG9jYWxlICE9IG51bGwgJiYgKGxvY2FsZS5nZXRMYW5ndWFnZSgpLmVxdWFscygiaXciKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgbG9jYWxlLmdldExhbmd1YWdlKCkuZXF1YWxzKCJydSIpIHx8IGxvY2FsZS5nZXRMYW5ndWFnZSgpLmVxdWFscygiamEiKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgbG9jYWxlLmdldExhbmd1YWdlKCkuZXF1YWxzKCJlbCIpCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBsb2NhbGUuZ2V0TGFuZ3VhZ2UoKS5lcXVhbHMoInpoIikpKSB7CisgICAgICAgICAgICAgICAgICAgIHRleHRGaWVsZC50b2dnbGVQYW5lcyhmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHJ1bGVzRmllbGQudG9nZ2xlUGFuZXMoZmFsc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGV4dEZpZWxkLnRvZ2dsZVBhbmVzKHRydWUpOworICAgICAgICAgICAgICAgICAgICBydWxlc0ZpZWxkLnRvZ2dsZVBhbmVzKHRydWUpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1ha2VOZXdTcGVsbG91dEZvcm1hdHRlcigpOworICAgICAgICAgICAgICAgIHJlZGlzcGxheSgpOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisKKyAgICAgICAgcnVsZVNldE1lbnUgPSBuZXcgQ2hvaWNlKCk7CisgICAgICAgIHBvcHVsYXRlUnVsZVNldE1lbnUoKTsKKworICAgICAgICBydWxlU2V0TWVudS5hZGRJdGVtTGlzdGVuZXIobmV3IEl0ZW1MaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGl0ZW1TdGF0ZUNoYW5nZWQoSXRlbUV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBydWxlU2V0TmFtZSA9IHJ1bGVTZXRNZW51LmdldFNlbGVjdGVkSXRlbSgpOworICAgICAgICAgICAgICAgIHJlZGlzcGxheSgpOworICAgICAgICAgICAgfQorICAgICAgICB9ICk7CisKKyAgICAgICAgUGFuZWwgbWVudVBhbmVsID0gbmV3IFBhbmVsKCk7CisgICAgICAgIG1lbnVQYW5lbC5zZXRMYXlvdXQobmV3IEdyaWRMYXlvdXQoMSwgMikpOworICAgICAgICBtZW51UGFuZWwuYWRkKGZvcm1hdHRlck1lbnUpOworICAgICAgICBtZW51UGFuZWwuYWRkKHJ1bGVTZXRNZW51KTsKKyAgICAgICAgcmlnaHRQYW5lbC5hZGQobWVudVBhbmVsLCAiTm9ydGgiKTsKKworICAgICAgICBydWxlc0ZpZWxkLnNldFRleHQoUmJuZlNhbXBsZVJ1bGVTZXRzLnNhbXBsZVJ1bGVTZXRzW2Zvcm1hdHRlck1lbnUuZ2V0U2VsZWN0ZWRJbmRleCgpXSk7CisgICAgICAgIHJpZ2h0UGFuZWwuYWRkKHJ1bGVzRmllbGQsICJDZW50ZXIiKTsKKworICAgICAgICBtYWluUGFuZWwuYWRkKGxlZnRQYW5lbCk7CisgICAgICAgIG1haW5QYW5lbC5hZGQocmlnaHRQYW5lbCk7CisKKyAgICAgICAgd2luZG93LmFkZChtYWluUGFuZWwsICJDZW50ZXIiKTsKKyAgICAgICAgd2luZG93LmFkZChjb21tZW50YXJ5RmllbGQsICJTb3V0aCIpOworCisgICAgICAgIHdpbmRvdy5kb0xheW91dCgpOworICAgICAgICB3aW5kb3cuc2hvdygpOworICAgICAgICByZXR1cm4gd2luZG93OworICAgIH0KKworICAgIHZvaWQgcm9sbChpbnQgZGVsdGEpIHsKKyAgICAgICAgdGhlTnVtYmVyICs9IGRlbHRhOworICAgICAgICByZWRpc3BsYXkoKTsKKyAgICB9CisKKyAgICB2b2lkIHJlZGlzcGxheSgpIHsKKyAgICAgICAgbnVtYmVyRmllbGQuc2V0VGV4dChudW1iZXJGb3JtYXR0ZXIuZm9ybWF0KHRoZU51bWJlcikpOworICAgICAgICB0ZXh0RmllbGQuc2V0VGV4dChzcGVsbG91dEZvcm1hdHRlci5mb3JtYXQodGhlTnVtYmVyLCBydWxlU2V0TmFtZSkpOworICAgIH0KKworICAgIHZvaWQgbWFrZU5ld1NwZWxsb3V0Rm9ybWF0dGVyKCkgeworICAgICAgICBpbnQgaXRlbSA9IGZvcm1hdHRlck1lbnUuZ2V0U2VsZWN0ZWRJbmRleCgpOworICAgICAgICBTdHJpbmcgZm9ybWF0dGVyTWVudUl0ZW0gPSBmb3JtYXR0ZXJNZW51LmdldFNlbGVjdGVkSXRlbSgpOworCisgICAgICAgIGlmIChmb3JtYXR0ZXJNZW51SXRlbS5lcXVhbHMoIkN1c3RvbSIpKSB7CisgICAgICAgICAgICBydWxlc0ZpZWxkLnNldFRleHQoY3VzdG9tUnVsZVNldCk7CisgICAgICAgICAgICBzcGVsbG91dEZvcm1hdHRlciA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQoY3VzdG9tUnVsZVNldCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBydWxlc0ZpZWxkLnNldFRleHQoUmJuZlNhbXBsZVJ1bGVTZXRzLnNhbXBsZVJ1bGVTZXRzW2l0ZW1dKTsKKworICAgICAgICAgICAgTG9jYWxlIGxvY2FsZSA9IFJibmZTYW1wbGVSdWxlU2V0cy5zYW1wbGVSdWxlU2V0TG9jYWxlc1tpdGVtXTsKKyAgICAgICAgICAgIGlmIChsb2NhbGUgPT0gbnVsbCkKKyAgICAgICAgICAgICAgICBsb2NhbGUgPSBMb2NhbGUuZ2V0RGVmYXVsdCgpOworCisgICAgICAgICAgICBzcGVsbG91dEZvcm1hdHRlciA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQoUmJuZlNhbXBsZVJ1bGVTZXRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZVJ1bGVTZXRzW2l0ZW1dLCBsb2NhbGUpOworICAgICAgICB9CisgICAgICAgIHNwZWxsb3V0Rm9ybWF0dGVyLnNldExlbmllbnRQYXJzZU1vZGUobGVuaWVudFBhcnNlKTsKKyAgICAgICAgcG9wdWxhdGVSdWxlU2V0TWVudSgpOworICAgIH0KKworICAgIHZvaWQgcG9wdWxhdGVSdWxlU2V0TWVudSgpIHsKKyAgICAgICAgU3RyaW5nW10gcnVsZVNldE5hbWVzID0gc3BlbGxvdXRGb3JtYXR0ZXIuZ2V0UnVsZVNldE5hbWVzKCk7CisKKyAgICAgICAgaWYgKHJ1bGVTZXRNZW51ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJ1bGVTZXRNZW51LnJlbW92ZUFsbCgpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBydWxlU2V0TmFtZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICAgICAgcnVsZVNldE1lbnUuYWRkSXRlbShydWxlU2V0TmFtZXNbaV0pOworCisgICAgICAgICAgICBydWxlU2V0TmFtZSA9IHJ1bGVTZXRNZW51LmdldFNlbGVjdGVkSXRlbSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJ1bGVTZXROYW1lID0gcnVsZVNldE5hbWVzWzBdOworICAgIH0KKworICAgIHByaXZhdGUgRnJhbWUgZGVtb1dpbmRvdyA9IG51bGw7CisKKyAgICBwcml2YXRlIFRleHRDb21wb25lbnQgbnVtYmVyRmllbGQ7CisgICAgcHJpdmF0ZSBEZW1vVGV4dEZpZWxkSG9sZGVyIHRleHRGaWVsZDsKKyAgICBwcml2YXRlIERlbW9UZXh0RmllbGRIb2xkZXIgcnVsZXNGaWVsZDsKKyAgICBwcml2YXRlIFRleHRDb21wb25lbnQgY29tbWVudGFyeUZpZWxkOworICAgIHByaXZhdGUgQ2hlY2tib3ggbGVuaWVudFBhcnNlQnV0dG9uOworCisgICAgcHJpdmF0ZSBib29sZWFuIG51bWJlckZpZWxkSGFzRm9jdXMgPSB0cnVlOworCisgICAgcHJpdmF0ZSBSdWxlQmFzZWROdW1iZXJGb3JtYXQgc3BlbGxvdXRGb3JtYXR0ZXI7CisgICAgcHJpdmF0ZSBEZWNpbWFsRm9ybWF0IG51bWJlckZvcm1hdHRlcjsKKyAgICBwcml2YXRlIFBhcnNlUG9zaXRpb24gcGFyc2VQb3NpdGlvbjsKKworICAgIHByaXZhdGUgYm9vbGVhbiBsZW5pZW50UGFyc2UgPSB0cnVlOworCisgICAgcHJpdmF0ZSBkb3VibGUgdGhlTnVtYmVyID0gMDsKKyAgICBwcml2YXRlIGJvb2xlYW4gY2FuRWRpdCA9IHRydWU7CisKKyAgICBwcml2YXRlIENob2ljZSBmb3JtYXR0ZXJNZW51OworICAgIHByaXZhdGUgQ2hvaWNlIHJ1bGVTZXRNZW51OworICAgIHByaXZhdGUgU3RyaW5nIHJ1bGVTZXROYW1lOworCisgICAgcHJpdmF0ZSBTdHJpbmcgY3VzdG9tUnVsZVNldCA9ICJOTyBSVUxFUyEiOworfQorCitjbGFzcyBEZW1vVGV4dEZpZWxkIGV4dGVuZHMgQ29tcG9uZW50IHsKKyAgICBwdWJsaWMgRGVtb1RleHRGaWVsZCgpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRUZXh0KFN0cmluZyB0ZXh0KSB7CisgICAgICAgIHRoaXMudGV4dCA9IHRleHQ7CisgICAgICAgIHRoaXMucmVwYWludCgpOworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0VGV4dCgpIHsKKyAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcGFpbnQoR3JhcGhpY3MgZykgeworICAgICAgICBGb250IGZvbnQgPSBnZXRGb250KCk7CisgICAgICAgIEZvbnRNZXRyaWNzIGZtID0gZy5nZXRGb250TWV0cmljcygpOworICAgICAgICBnLnNldEZvbnQoZm9udCk7CisgICAgICAgIFN0cmluZyB0ZXh0ID0gZ2V0VGV4dCgpOworICAgICAgICBCcmVha0l0ZXJhdG9yIGJpID0gQnJlYWtJdGVyYXRvci5nZXRMaW5lSW5zdGFuY2UoKTsKKyAgICAgICAgYmkuc2V0VGV4dCh0ZXh0KTsKKyAgICAgICAgaW50IGxpbmVIZWlnaHQgPSBmbS5nZXRIZWlnaHQoKTsKKyAgICAgICAgaW50IHdpZHRoID0gZ2V0U2l6ZSgpLndpZHRoOworICAgICAgICBpbnQgcGVuWSA9IGZtLmdldEFzY2VudCgpOworICAgICAgICBpbnQgbGluZVN0YXJ0ID0gMDsKKyAgICAgICAgaW50IHRlbXBMaW5lRW5kID0gYmkuZmlyc3QoKTsKKyAgICAgICAgaW50IGxpbmVFbmQgPSAwOworICAgICAgICBpbnQgbWF4TGluZUVuZCA9IDA7CisgICAgICAgIHRvdGFsSGVpZ2h0ID0gMDsKKworICAgICAgICB3aGlsZSAobGluZVN0YXJ0IDwgdGV4dC5sZW5ndGgoKSkgeworICAgICAgICAgICAgbWF4TGluZUVuZCA9IHRleHQuaW5kZXhPZignXG4nLCBsaW5lU3RhcnQpOworICAgICAgICAgICAgaWYgKG1heExpbmVFbmQgPT0gLTEpCisgICAgICAgICAgICAgICAgbWF4TGluZUVuZCA9IEludGVnZXIuTUFYX1ZBTFVFOworICAgICAgICAgICAgd2hpbGUgKHRlbXBMaW5lRW5kICE9IEJyZWFrSXRlcmF0b3IuRE9ORSAmJiBmbS5zdHJpbmdXaWR0aCh0ZXh0LnN1YnN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lU3RhcnQsIHRlbXBMaW5lRW5kKSkgPCB3aWR0aCkgeworICAgICAgICAgICAgICAgIGxpbmVFbmQgPSB0ZW1wTGluZUVuZDsKKyAgICAgICAgICAgICAgICB0ZW1wTGluZUVuZCA9IGJpLm5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChsaW5lU3RhcnQgPj0gbGluZUVuZCkgeworICAgICAgICAgICAgICAgIGlmICh0ZW1wTGluZUVuZCA9PSBCcmVha0l0ZXJhdG9yLkRPTkUpCisgICAgICAgICAgICAgICAgICAgIGxpbmVFbmQgPSB0ZXh0Lmxlbmd0aCgpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbGluZUVuZCA9IHRlbXBMaW5lRW5kOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGxpbmVFbmQgPiBtYXhMaW5lRW5kKQorICAgICAgICAgICAgICAgIGxpbmVFbmQgPSBtYXhMaW5lRW5kOworICAgICAgICAgICAgZy5kcmF3U3RyaW5nKHRleHQuc3Vic3RyaW5nKGxpbmVTdGFydCwgbGluZUVuZCksIDAsIHBlblkpOworICAgICAgICAgICAgcGVuWSArPSBsaW5lSGVpZ2h0OworICAgICAgICAgICAgdG90YWxIZWlnaHQgKz0gbGluZUhlaWdodDsKKyAgICAgICAgICAgIGxpbmVTdGFydCA9IGxpbmVFbmQ7CisgICAgICAgICAgICBpZiAobGluZVN0YXJ0IDwgdGV4dC5sZW5ndGgoKSAmJiB0ZXh0LmNoYXJBdChsaW5lU3RhcnQpID09ICdcbicpCisgICAgICAgICAgICAgICAgKytsaW5lU3RhcnQ7CisgICAgICAgIH0KKyAgICB9CisKKy8qCisgICAgcHVibGljIERpbWVuc2lvbiBnZXRQcmVmZXJyZWRTaXplKCkgeworICAgICAgICBEaW1lbnNpb24gc2l6ZSA9IGdldFBhcmVudCgpLmdldFNpemUoKTsKKyAgICAgICAgcmV0dXJuIG5ldyBEaW1lbnNpb24oc2l6ZS53aWR0aCwgdG90YWxIZWlnaHQpOworICAgIH0KKyovCisKKyAgICBwcml2YXRlIFN0cmluZyB0ZXh0OworICAgIHByaXZhdGUgaW50IHRvdGFsSGVpZ2h0OworfQorCitjbGFzcyBEZW1vVGV4dEZpZWxkSG9sZGVyIGV4dGVuZHMgUGFuZWwgeworICAgIHB1YmxpYyBEZW1vVGV4dEZpZWxkSG9sZGVyKCkgeworICAgICAgICB0ZjEgPSBuZXcgVGV4dEFyZWEoIiIsIDAsIDAsIFRleHRBcmVhLlNDUk9MTEJBUlNfVkVSVElDQUxfT05MWSk7CisgICAgICAgIHRmMiA9IG5ldyBEZW1vVGV4dEZpZWxkKCk7CisgICAgICAgIHNwID0gbmV3IFNjcm9sbFBhbmUoKTsKKworICAgICAgICBzZXRMYXlvdXQobmV3IENhcmRMYXlvdXQoKSk7CisKKyAgICAgICAgc3AuYWRkKHRmMiwgIlRleHRGaWVsZDEiKTsKKyAgICAgICAgc3Auc2V0VmlzaWJsZShmYWxzZSk7CisgICAgICAgIGFkZCh0ZjEsICJUZXN0RmllbGQyIik7CisgICAgICAgIGFkZChzcCwgIlNjcm9sbFBhbmUiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBhZGRGb2N1c0xpc3RlbmVyKEZvY3VzTGlzdGVuZXIgbCkgeworICAgICAgICB0ZjEuYWRkRm9jdXNMaXN0ZW5lcihsKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBhZGRLZXlMaXN0ZW5lcihLZXlMaXN0ZW5lciBsKSB7CisgICAgICAgIHRmMS5hZGRLZXlMaXN0ZW5lcihsKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRUZXh0KFN0cmluZyB0ZXh0KSB7CisgICAgICAgIHRmMS5zZXRUZXh0KHRleHQpOworICAgICAgICB0ZjIuc2V0VGV4dCh0ZXh0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldFRleHQoKSB7CisgICAgICAgIHJldHVybiB0ZjEuZ2V0VGV4dCgpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNlbGVjdChpbnQgc3RhcnQsIGludCBlbmQpIHsKKyAgICAgICAgdGYxLnNlbGVjdChzdGFydCwgZW5kKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZWxlY3RBbGwoKSB7CisgICAgICAgIHRmMS5zZWxlY3RBbGwoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0b2dnbGVQYW5lcyhib29sZWFuIGNhblNob3dSZWFsVGV4dEZpZWxkKSB7CisgICAgICAgIGlmIChjYW5TaG93UmVhbFRleHRGaWVsZCAhPSBzaG93aW5nUmVhbFRleHRGaWVsZCkgeworICAgICAgICAgICAgQ2FyZExheW91dCBsYXlvdXQgPSAoQ2FyZExheW91dCkoZ2V0TGF5b3V0KCkpOworICAgICAgICAgICAgbGF5b3V0Lm5leHQodGhpcyk7CisgICAgICAgICAgICBzaG93aW5nUmVhbFRleHRGaWVsZCA9IGNhblNob3dSZWFsVGV4dEZpZWxkOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBUZXh0QXJlYSB0ZjEgPSBudWxsOworICAgIHByaXZhdGUgRGVtb1RleHRGaWVsZCB0ZjIgPSBudWxsOworICAgIHByaXZhdGUgU2Nyb2xsUGFuZSBzcCA9IG51bGw7CisgICAgcHJpdmF0ZSBib29sZWFuIHNob3dpbmdSZWFsVGV4dEZpZWxkID0gdHJ1ZTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2RlbW8vcmJuZi9SYm5mU2FtcGxlUnVsZVNldHMuamF2YSBiL3NyYy9jb20vaWJtL2RlbW8vcmJuZi9SYm5mU2FtcGxlUnVsZVNldHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yMjk0MjEyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vZGVtby9yYm5mL1JibmZTYW1wbGVSdWxlU2V0cy5qYXZhCkBAIC0wLDAgKzEsMTk0OSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vZGVtby9yYm5mL0F0dGljL1JibmZTYW1wbGVSdWxlU2V0cy5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDAzOjQ3OjQ0ICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5kZW1vLnJibmY7CisKK2ltcG9ydCBjb20uaWJtLmRlbW8uKjsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworCisvKioKKyAqIEEgY29sbGVjdGlvbiBvZiBleGFtcGxlIHJ1bGUgc2V0cyBmb3IgdXNlIHdpdGggUnVsZUJhc2VkTnVtYmVyRm9ybWF0LgorICogVGhlc2UgZXhhbXBsZXMgYXJlIGludGVuZGVkIHRvIHNlcnZlIGJvdGggYXMgZGVtb25zdHJhdGlvbnMgb2Ygd2hhdCBjYW4KKyAqIGJlIGRvbmUgd2l0aCB0aGlzIGZyYW1ld29yaywgYW5kIGFzIHN0YXJ0aW5nIHBvaW50cyBmb3IgZGVzaWduaW5nIG5ldworICogcnVsZSBzZXRzLgorICoKKyAqIEZvciB0aG9zZSB0aGF0IGNsYWltIHRvIHJlcHJlc2VudCBudW1iZXItc3BlbGxvdXQgcnVsZXMgZm9yIGxhbmd1YWdlcworICogb3RoZXIgdGhhbiBVLlMuIEVuZ2xpc2gsIHdlIG1ha2Ugbm8gY2xhaW1zIG9mIGVpdGhlciBhY2N1cmFjeSBvcgorICogY29tcGxldGVuZXNzLiAgSW4gZmFjdCwgd2Uga25vdyB0aGVtIHRvIGJlIGluY29tcGxldGUsIGFuZCBzdXNwZWN0CisgKiBtb3N0IGhhdmUgbWlzdGFrZXMgaW4gdGhlbS4gIElmIHlvdSBzZWUgc29tZXRoaW5nIHRoYXQgeW91IGtub3cgaXMgd3JvbmcsCisgKiBwbGVhc2UgdGVsbCB1cyEKKyAqCisgKiBAYXV0aG9yIFJpY2hhcmQgR2lsbGFtCisgKiBAdmVyc2lvbiAkVmVyc2lvbiQgJERhdGU6IDIwMDAvMDMvMTAgMDM6NDc6NDQgJAorICovCitwdWJsaWMgY2xhc3MgUmJuZlNhbXBsZVJ1bGVTZXRzIHsKKyAgICAvKioKKyAgICAgKiBQdXRzIGEgY29weXJpZ2h0IGluIHRoZSAuY2xhc3MgZmlsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHROb3RpY2UKKyAgICAgICAgPSAiQ29weXJpZ2h0IFx1MDBhOTE5OTctMTk5OCBJQk0gQ29ycC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gU3BlbGxvdXQgcnVsZXMgZm9yIHZhcmlvdXMgbGFuZ3VhZ2VzCisgICAgLy8KKyAgICAvLyBUaGUgZm9sbG93aW5nIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBkZXNjcmlwdGlvbnMgc2hvdyB0aGUgcnVsZXMgZm9yCisgICAgLy8gc3BlbGxpbmcgb3V0IG51bWVyaWMgdmFsdWVzIGluIHZhcmlvdXMgbGFuZ3VhZ2VzLiAgQXMgbWVudGlvbmVkCisgICAgLy8gYmVmb3JlLCB3ZSBjYW5ub3Qgdm91Y2ggZm9yIHRoZSBhY2N1cmFjeSBvciBjb21wbGV0ZW5lc3Mgb2YgdGhpcworICAgIC8vIGRhdGEsIGFsdGhvdWdoIHdlIGJlbGlldmUgaXQncyBwcmV0dHkgY2xvc2UuICBCYXNpY2FsbHksIHRoaXMKKyAgICAvLyByZXByZXNlbnRzIG9uZSBkYXkncyB3b3J0aCBvZiBXZWItc3VyZmluZy4gIElmIHlvdSBjYW4gc3VwcGx5IHRoZQorICAgIC8vIG1pc3NpbmcgaW5mb3JtYXRpb24gaW4gYW55IG9mIHRoZXNlIHJ1bGUgc2V0cywgb3IgaWYgeW91IGZpbmQgZXJyb3JzLAorICAgIC8vIG9yIGlmIHlvdSBjYW4gc3VwcGx5IHNwZWxsb3V0IHJ1bGVzIGZvciBsYW5ndWFnZXMgdGhhdCBhcmVuJ3Qgc2hvd24KKyAgICAvLyBoZXJlLCB3ZSB3YW50IHRvIGhlYXIgZnJvbSB5b3UhCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8qKgorICAgICAqIFNwZWxsb3V0IHJ1bGVzIGZvciBVLlMuIEVuZ2xpc2guICBUaGlzIGRlbW9uc3RyYXRpb24gdmVyc2lvbiBvZiB0aGUKKyAgICAgKiBVLlMuIEVuZ2xpc2ggc3BlbGxvdXQgcnVsZXMgaGFzIGZvdXIgdmFyaWFudHM6IDEpICVzaW1wbGlmaWVkIGlzIGEKKyAgICAgKiBzZXQgb2YgcnVsZXMgc2hvd2luZyB0aGUgc2ltcGxlIG1ldGhvZCBvZiBzcGVsbGluZyBvdXQgbnVtYmVycyBpbgorICAgICAqIEVuZ2xpc2g6IDI4OSBpcyBmb3JtYXR0ZWQgYXMgInR3byBodW5kcmVkIGVpZ2h0eS1uaW5lIi4gIDIpICVhbHQtdGVlbnMKKyAgICAgKiBpcyB0aGUgc2FtZSBhcyAlc2ltcGxpZmllZCwgZXhjZXB0IHRoYXQgdmFsdWVzIGJldHdlZW4gMSwwMDAgYW5kIDksOTk5CisgICAgICogd2hvc2UgaHVuZHJlZHMgcGxhY2UgaXNuJ3QgemVybyBhcmUgZm9ybWF0dGVkIGluIGh1bmRyZWRzLiAgRm9yIGV4YW1wbGUsCisgICAgICogMSw5ODMgaXMgZm9ybWF0dGVkIGFzICJuaW5ldGVlbiBodW5kcmVkIGVpZ2h0eS10aHJlZSwiIGFuZCAyLDE4MyBpcworICAgICAqIGZvcm1hdHRlZCBhcyAidHdlbnR5LW9uZSBodW5kcmVkIGVpZ2h0eS10aHJlZSwiIGJ1dCAyLDA4MyBpcyBzdGlsbAorICAgICAqIGZvcm1hdHRlZCBhcyAidHdvIHRob3VzYW5kIGVpZ2h0eS10aHJlZS4iICAzKSAlb3JkaW5hbCBmb3JtYXRzIHRoZQorICAgICAqIHZhbHVlcyBhcyBvcmRpbmFsIG51bWJlcnMgaW4gRW5nbGlzaCAoZS5nLiwgMjg5IGlzICJ0d28gaHVuZHJlZCBlaWdodHktCisgICAgICogbmludGgiKS4gIDQpICVkZWZhdWx0IHVzZXMgYSBtb3JlIGNvbXBsaWNhdGVkIGFsZ29yaXRobSB0byBmb3JtYXQKKyAgICAgKiBudW1iZXJzIGluIGEgbW9yZSBuYXR1cmFsIHdheTogMjg5IGlzIGZvcm1hdHRlZCBhcyAidHdvIGh1bmRyZWQgQU5ECisgICAgICogZWlnaHR5LW5pbmUiIGFuZCBjb21tYXMgYXJlIGluc2VydGVkIGJldHdlZW4gdGhlIHRob3VzYW5kcyBncm91cHMgZm9yCisgICAgICogdmFsdWVzIGFib3ZlIDEwMCwwMDAuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgdXNFbmdsaXNoID0KKyAgICAgICAgLy8gVGhpcyBydWxlIHNldCBzaG93cyB0aGUgbm9ybWFsIHNpbXBsZSBmb3JtYXR0aW5nIHJ1bGVzIGZvciBFbmdsaXNoCisgICAgICAgICIlc2ltcGxpZmllZDpcbiIKKyAgICAgICAgICAgICAgIC8vIG5lZ2F0aXZlIG51bWJlciBydWxlLiAgVGhpcyBydWxlIGlzIHVzZWQgdG8gZm9ybWF0IG5lZ2F0aXZlCisgICAgICAgICAgICAgICAvLyBudW1iZXJzLiAgVGhlIHJlc3VsdCBvZiBmb3JtYXR0aW5nIHRoZSBudW1iZXIncyBhYnNvbHV0ZQorICAgICAgICAgICAgICAgLy8gdmFsdWUgaXMgcGxhY2VkIHdoZXJlIHRoZSA+PiBpcy4KKyAgICAgICAgKyAiICAgIC14OiBtaW51cyA+PjtcbiIKKyAgICAgICAgICAgICAgIC8vIGZhY3Rpb24gcnVsZS4gIFRoaXMgcnVsZSBpcyB1c2VkIGZvciBmb3JtYXR0aW5nIG51bWJlcnMKKyAgICAgICAgICAgICAgIC8vIHdpdGggZnJhY3Rpb25hbCBwYXJ0cy4gIFRoZSByZXN1bHQgb2YgZm9ybWF0dGluZyB0aGUKKyAgICAgICAgICAgICAgIC8vIG51bWJlcidzIGludGVncmFsIHBhcnQgaXMgc3Vic3RpdHV0ZWQgZm9yIHRoZSA8PCwgYW5kCisgICAgICAgICAgICAgICAvLyB0aGUgcmVzdWx0IG9mIGZvcm1hdHRpbmcgdGhlIG51bWJlcidzIGZyYWN0aW9uYWwgcGFydAorICAgICAgICAgICAgICAgLy8gKG9uZSBkaWdpdCBhdCBhIHRpbWUsIGUuZy4sIDAuMTIzIGlzICJ6ZXJvIHBvaW50IG9uZSB0d28KKyAgICAgICAgICAgICAgIC8vIHRocmVlIikgcmVwbGFjZXMgdGhlID4+LgorICAgICAgICArICIgICAgeC54OiA8PCBwb2ludCA+PjtcbiIKKyAgICAgICAgICAgICAgIC8vIHRoZSBydWxlcyBmb3IgdGhlIHZhbHVlcyBmcm9tIDAgdG8gMTkgYXJlIHNpbXBseSB0aGUKKyAgICAgICAgICAgICAgIC8vIHdvcmRzIGZvciB0aG9zZSBudW1iZXJzCisgICAgICAgICsgIiAgICB6ZXJvOyBvbmU7IHR3bzsgdGhyZWU7IGZvdXI7IGZpdmU7IHNpeDsgc2V2ZW47IGVpZ2h0OyBuaW5lO1xuIgorICAgICAgICArICIgICAgdGVuOyBlbGV2ZW47IHR3ZWx2ZTsgdGhpcnRlZW47IGZvdXJ0ZWVuOyBmaWZ0ZWVuOyBzaXh0ZWVuO1xuIgorICAgICAgICArICIgICAgICAgIHNldmVudGVlbjsgZWlnaHRlZW47IG5pbmV0ZWVuO1xuIgorICAgICAgICAgICAgICAgLy8gYmVnaW5uaW5nIGF0IDIwLCB3ZSB1c2UgdGhlID4+IHRvIG1hcmsgdGhlIHBvc2l0aW9uIHdoZXJlCisgICAgICAgICAgICAgICAvLyB0aGUgcmVzdWx0IG9mIGZvcm1hdHRpbmcgdGhlIG51bWJlcidzIG9uZXMgZGlnaXQuICBUaHVzLAorICAgICAgICAgICAgICAgLy8gd2Ugb25seSBuZWVkIGEgbmV3IHJ1bGUgYXQgZXZlcnkgbXVsdGlwbGUgb2YgMTAuICBUZXh0IGluCisgICAgICAgICAgICAgICAvLyBiYWNrZXRzIGlzIG9taXR0ZWQgaWYgdGhlIHZhbHVlIGJlaW5nIGZvcm1hdHRlZCBpcyBhbgorICAgICAgICAgICAgICAgLy8gZXZlbiBtdWx0aXBsZSBvZiAxMC4KKyAgICAgICAgKyAiICAgIDIwOiB0d2VudHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDMwOiB0aGlydHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDQwOiBmb3J0eVstPj5dO1xuIgorICAgICAgICArICIgICAgNTA6IGZpZnR5Wy0+Pl07XG4iCisgICAgICAgICsgIiAgICA2MDogc2l4dHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDcwOiBzZXZlbnR5Wy0+Pl07XG4iCisgICAgICAgICsgIiAgICA4MDogZWlnaHR5Wy0+Pl07XG4iCisgICAgICAgICsgIiAgICA5MDogbmluZXR5Wy0+Pl07XG4iCisgICAgICAgICAgICAgICAvLyBiZWdpbm5pbmcgYXQgMTAwLCB3ZSBjYW4gdXNlIDw8IHRvIG1hcmsgdGhlIHBvc2l0aW9uIHdoZXJlCisgICAgICAgICAgICAgICAvLyB0aGUgcmVzdWx0IG9mIGZvcm1hdHRpbmcgdGhlIG11bHRpcGxlIG9mIDEwMCBpcyB0byBiZQorICAgICAgICAgICAgICAgLy8gaW5zZXJ0ZWQuICBOb3RpY2UgYWxzbyB0aGF0IHRoZSBtZWFuaW5nIG9mID4+IGhhcyBzaGlmdGVkOgorICAgICAgICAgICAgICAgLy8gaGVyZSwgaXQgcmVmZXJzIHRvIGJvdGggdGhlIG9uZXMgcGxhY2UgYW5kIHRoZSB0ZW5zIHBsYWNlLgorICAgICAgICAgICAgICAgLy8gVGhlIG1lYW5pbmdzIG9mIHRoZSA8PCBhbmQgPj4gdG9rZW5zIGRlcGVuZCBvbiB0aGUgYmFzZSB2YWx1ZQorICAgICAgICAgICAgICAgLy8gb2YgdGhlIHJ1bGUuICBBIHJ1bGUncyBkaXZpc29yIGlzICh1c3VhbGx5KSB0aGUgaGlnaGVzdAorICAgICAgICAgICAgICAgLy8gcG93ZXIgb2YgMTAgdGhhdCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHJ1bGUncyBiYXNlCisgICAgICAgICAgICAgICAvLyB2YWx1ZS4gIFRoZSB2YWx1ZSBiZWluZyBmb3JtYXR0ZWQgaXMgZGl2aWRlZCBieSB0aGUgcnVsZSdzCisgICAgICAgICAgICAgICAvLyBkaXZpc29yLCBhbmQgdGhlIGludGVncmFsIHF1b3RpZW50IGlzIHVzZWQgdG8gZ2V0IHRoZSB0ZXh0CisgICAgICAgICAgICAgICAvLyBmb3IgPDwsIHdoaWxlIHRoZSByZW1haW5kZXIgaXMgdXNlZCB0byBwcm9kdWNlIHRoZSB0ZXh0CisgICAgICAgICAgICAgICAvLyBmb3IgPj4uICBBZ2FpbiwgdGV4dCBpbiBicmFja2V0cyBpcyBvbWl0dGVkIGlmIHRoZSB2YWx1ZQorICAgICAgICAgICAgICAgLy8gYmVpbmcgZm9ybWF0dGVkIGlzIGFuIGV2ZW4gbXVsdGlwbGUgb2YgdGhlIHJ1bGUncyBkaXZpc29yCisgICAgICAgICAgICAgICAvLyAoaW4gdGhpcyBjYXNlLCBhbiBldmVuIG11bHRpcGxlIG9mIDEwMCkKKyAgICAgICAgKyAiICAgIDEwMDogPDwgaHVuZHJlZFsgPj5dO1xuIgorICAgICAgICAgICAgICAgLy8gVGhlIHJ1bGVzIGZvciB0aGUgaGlnaGVyIG51bWJlcnMgd29yayB0aGUgc2FtZSB3YXkgYXMgdGhlCisgICAgICAgICAgICAgICAvLyBydWxlIGZvciAxMDA6IEFnYWluLCB0aGUgPDwgYW5kID4+IHRva2VucyBkZXBlbmQgb24gdGhlCisgICAgICAgICAgICAgICAvLyBydWxlJ3MgZGl2aXNvciwgd2hpY2ggZm9yIGFsbCB0aGVzZSBydWxlcyBpcyBhbHNvIHRoZSBydWxlJ3MKKyAgICAgICAgICAgICAgIC8vIGJhc2UgdmFsdWUuICBUbyBncm91cCBieSB0aG91c2FuZCwgd2Ugc2ltcGx5IGRvbid0IGhhdmUgYW55CisgICAgICAgICAgICAgICAvLyBydWxlcyBiZXR3ZWVuIDEsMDAwIGFuZCAxLDAwMCwwMDAuCisgICAgICAgICsgIiAgICAxMDAwOiA8PCB0aG91c2FuZFsgPj5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwOiA8PCBtaWxsaW9uWyA+Pl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwOiA8PCBiaWxsaW9uWyA+Pl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMDogPDwgdHJpbGxpb25bID4+XTtcbiIKKyAgICAgICAgICAgICAgIC8vIG92ZXJmbG93IHJ1bGUuICBUaGlzIHJ1bGUgc3BlY2lmaWVzIHRoYXQgdmFsdWVzIG9mIGEKKyAgICAgICAgICAgICAgIC8vIHF1YWRyaWxsaW9uIG9yIG1vcmUgYXJlIHNob3duIGluIG51bWVyYWxzIHJhdGhlciB0aGFuIHdvcmRzLgorICAgICAgICAgICAgICAgLy8gVGhlID09IHRva2VuIG1lYW5zIHRvIGZvcm1hdCAod2l0aCBuZXcgcnVsZXMpIHRoZSB2YWx1ZQorICAgICAgICAgICAgICAgLy8gYmVpbmcgZm9ybWF0dGVkIGJ5IHRoaXMgcnVsZSBhbmQgcGxhY2UgdGhlIHJlc3VsdCB3aGVyZQorICAgICAgICAgICAgICAgLy8gdGhlID09IGlzLiAgVGhlICMsIyMwIGluc2lkZSB0aGUgPT0gc2lnbnMgaXMgYQorICAgICAgICAgICAgICAgLy8gRGVjaW1hbEZvcm1hdCBwYXR0ZXJuLiAgSXQgc3BlY2lmaWVzIHRoYXQgdGhlIHZhbHVlIHNob3VsZAorICAgICAgICAgICAgICAgLy8gYmUgZm9ybWF0dGVkIHdpdGggYSBEZWNpbWFsRm9ybWF0IG9iamVjdCwgYW5kIHRoYXQgaXQKKyAgICAgICAgICAgICAgIC8vIHNob3VsZCBiZSBmb3JtYXR0ZWQgd2l0aCBubyBkZWNpbWFsIHBsYWNlcywgYXQgbGVhc3Qgb25lCisgICAgICAgICAgICAgICAvLyBkaWdpdCwgYW5kIGEgdGhvdXNhbmRzIHNlcGFyYXRvci4KKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDAsMDAwLDAwMDogPSMsIyMwPTtcbiIKKworICAgICAgICAvLyBUaGlzIHJ1bGUgc2V0IGZvcm1hdHMgbnVtYmVycyBiZXR3ZWVuIDEsMDAwIGFuZCA5LDk5OSBzb21ld2hhdAorICAgICAgICAvLyBkaWZmZXJlbnRseTogSWYgdGhlIGh1bmRyZWRzIGRpZ2l0IGlzIG5vdCB6ZXJvLCB0aGUgZmlyc3QgdHdvCisgICAgICAgIC8vIGRpZ2l0cyBhcmUgdHJlYXRlZCBhcyBhIG51bWJlciBvZiBodW5kcmVkcy4gIEZvciBleGFtcGxlLCAyLDE5NworICAgICAgICAvLyB3b3VsZCBjb21lIG91dCBhcyAidHdlbnR5LW9uZSBodW5kcmVkIG5pbmV0eS1zZXZlbi4iCisgICAgICAgICsgIiVhbHQtdGVlbnM6XG4iCisgICAgICAgICAgICAgICAvLyBqdXN0IHVzZSAlc2ltcGxpZmllZCB0byBmb3JtYXQgdmFsdWVzIGJlbG93IDEsMDAwCisgICAgICAgICsgIiAgICA9JXNpbXBsaWZpZWQ9O1xuIgorICAgICAgICAgICAgICAgLy8gdmFsdWVzIGJldHdlZW4gMSwwMDAgYW5kIDksOTk5IGFyZSBkZWxlZ2F0ZWQgdG8gJSVhbHQtaHVuZHJlZHMKKyAgICAgICAgICAgICAgIC8vIGZvciBmb3JtYXR0aW5nLiAgVGhlID4gYWZ0ZXIgIjEwMDAiIGRlY3JlYXNlcyB0aGUgZXhwb25lbnQKKyAgICAgICAgICAgICAgIC8vIG9mIHRoZSBydWxlJ3MgcmFkaXggYnkgb25lLCBjYXVzaW5nIHRoZSBydWxlJ3MgZGl2aXNvcgorICAgICAgICAgICAgICAgLy8gdG8gYmUgMTAwIGluc3RlYWQgb2YgMSwwMDAuICBUaGlzIGNhdXNlcyB0aGUgZmlyc3QgVFdPCisgICAgICAgICAgICAgICAvLyBkaWdpdHMgb2YgdGhlIG51bWJlciwgaW5zdGVhZCBvZiBqdXN0IHRoZSBmaXJzdCBkaWdpdCwKKyAgICAgICAgICAgICAgIC8vIHRvIGJlIHNlbnQgdG8gJSVhbHQtaHVuZHJlZHMKKyAgICAgICAgKyAiICAgIDEwMDA+OiA8JSVhbHQtaHVuZHJlZHM8WyA+Pl07XG4iCisgICAgICAgICAgICAgICAvLyBmb3IgdmFsdWVzIG9mIDEwLDAwMCBhbmQgbW9yZSwgd2UgYWdhaW4ganVzdCB1c2UgJXNpbXBsaWZpZWQKKyAgICAgICAgKyAiICAgIDEwLDAwMDogPSVzaW1wbGlmaWVkPTtcbiIKKyAgICAgICAgLy8gVGhpcyBydWxlIHNldCB1c2VzIHNvbWUgb2JzY3VyZSB2b29kb28gb2YgdGhlIGRlc2NyaXB0aW9uIGxhbmd1YWdlCisgICAgICAgIC8vIHRvIGZvcm1hdCB0aGUgZmlyc3QgdHdvIGRpZ2l0cyBvZiBhIHZhbHVlIGluIHRoZSB0aG91c2FuZHMuCisgICAgICAgIC8vIFRoZSBydWxlIGF0IDEwIGZvcm1hdHMgdGhlIGZpcnN0IHR3byBkaWdpdHMgYXMgYSBtdWx0aXBsZSBvZiAxLDAwMAorICAgICAgICAvLyBhbmQgdGhlIHJ1bGUgYXQgMTEgZm9ybWF0cyB0aGUgZmlyc3QgdHdvIGRpZ2l0cyBhcyBhIG11bHRpcGxlIG9mCisgICAgICAgIC8vIDEwMC4gIFRoaXMgd29ya3MgYmVjYXVzZSBvZiBzb21ldGhpbmcga25vd24gYXMgdGhlICJyb2xsYmFjayBydWxlIjoKKyAgICAgICAgLy8gaWYgdGhlIHJ1bGUgYXBwbGljYWJsZSB0byB0aGUgdmFsdWUgYmVpbmcgZm9ybWF0dGVkIGhhcyB0d28KKyAgICAgICAgLy8gc3Vic3RpdHV0aW9ucywgdGhlIHZhbHVlIGJlaW5nIGZvcm1hdHRlZCBpcyBhbiBldmVuIG11bHRpcGxlIG9mCisgICAgICAgIC8vIHRoZSBydWxlJ3MgZGl2aXNvciwgYW5kIHRoZSBydWxlJ3MgYmFzZSB2YWx1ZSBJU04nVCBhbiBldmVuIG11bHRpcGxlCisgICAgICAgIC8vIGlmIHRoZSBydWxlJ3MgZGl2aXNvciwgdGhlbiB0aGUgcnVsZSB0aGF0IHByZWNlZGVzIHRoaXMgb25lIGluIHRoZQorICAgICAgICAvLyBsaXN0IGlzIHVzZWQgaW5zdGVhZC4gIChUaGUgW10gbm90YXRpb24gaXMgaW1wbGVtZW50ZWQgaW50ZXJuYWxseQorICAgICAgICAvLyB1c2luZyB0aGlzIG5vdGF0aW9uOiBhIHJ1bGUgY29udGFpbmluZyBbXSBpcyBzcGxpdCBpbnRvIHR3byBydWxlcywKKyAgICAgICAgLy8gYW5kIHRoZSByaWdodCBvbmUgaXMgY2hvc2VuIHVzaW5nIHRoZSByb2xsYmFjayBydWxlLikgSW4gdGhpcyBjYXNlLAorICAgICAgICAvLyBpdCBtZWFucyB0aGF0IGlmIHRoZSBmaXJzdCB0d28gZGlnaXRzIGFyZSBhbiBldmVuIG11bHRpcGxlIG9mIDEwLAorICAgICAgICAvLyB0aGV5J3JlIGZvcm1hdHRlZCB3aXRoIHRoZSAxMCBydWxlIChjb250YWluaW5nICJ0aG91c2FuZCIpLCBhbmQgaWYKKyAgICAgICAgLy8gdGhleSdyZSBub3QsIHRoZXkncmUgZm9ybWF0dGVkIHdpdGggdGhlIDExIHJ1bGUgKGNvbnRhaW5pbmcKKyAgICAgICAgLy8gImh1bmRyZWQiKS4gICUlZW1wdHkgaXMgYSBoYWNrIHRvIGNhdXNlIHRoZSByb2xsYmFjayBydWxlIHRvIGJlCisgICAgICAgIC8vIGludm9rZWQ6IGl0IG1ha2VzIHRoZSAxMSBydWxlIGhhdmUgdHdvIHN1YnN0aXR1dGlvbnMsIGV2ZW4gdGhvdWdoCisgICAgICAgIC8vIHRoZSBzZWNvbmQgc3Vic3RpdHV0aW9uIChjYWxsaW5nICUlZW1wdHkpIGRvZXNuJ3QgYWN0dWFsbHkgZG8KKyAgICAgICAgLy8gYW55dGhpbmcuCisgICAgICAgICsgIiUlYWx0LWh1bmRyZWRzOlxuIgorICAgICAgICArICIgICAgMDogU0hPVUxEIE5FVkVSIEdFVCBIRVJFITtcbiIKKyAgICAgICAgKyAiICAgIDEwOiA8JXNpbXBsaWZpZWQ8IHRob3VzYW5kO1xuIgorICAgICAgICArICIgICAgMTE6ID0lc2ltcGxpZmllZD0gaHVuZHJlZD4lJWVtcHR5PjtcbiIKKyAgICAgICAgKyAiJSVlbXB0eTpcbiIKKyAgICAgICAgKyAiICAgIDA6OyIKKworICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IGlzIHRoZSBzYW1lIGFzICVzaW1wbGlmaWVkLCBleGNlcHQgdGhhdCBpdCBmb3JtYXRzCisgICAgICAgIC8vIHRoZSB2YWx1ZSBhcyBhbiBvcmRpbmFsIG51bWJlcjogMjM0IGlzIGZvcm1hdHRlZCBhcyAidHdvIGh1bmRyZWQKKyAgICAgICAgLy8gdGhpcnR5LWZvdXJ0aCIuICBOb3RpY2UgdGhlIGNhbGxzIHRvIF5zaW1wbGlmaWVkOiB3ZSBoYXZlIHRvCisgICAgICAgIC8vIGNhbGwgJXNpbXBsaWZpZWQgdG8gYXZvaWQgZ2V0dGluZyAic2Vjb25kIGh1bmRyZWQgdGhpcnR5LWZvdXJ0aC4iCisgICAgICAgICsgIiVvcmRpbmFsOlxuIgorICAgICAgICArICIgICAgemVyb3RoOyBmaXJzdDsgc2Vjb25kOyB0aGlyZDsgZm91cnRoOyBmaWZ0aDsgc2l4dGg7IHNldmVudGg7XG4iCisgICAgICAgICsgIiAgICAgICAgZWlnaHRoOyBuaW50aDtcbiIKKyAgICAgICAgKyAiICAgIHRlbnRoOyBlbGV2ZW50aDsgdHdlbGZ0aDsgdGhpcnRlZW50aDsgZm91cnRlZW50aDtcbiIKKyAgICAgICAgKyAiICAgICAgICBmaWZ0ZWVudGg7IHNpeHRlZW50aDsgc2V2ZW50ZWVudGg7IGVpZ2h0ZWVudGg7XG4iCisgICAgICAgICsgIiAgICAgICAgbmluZXRlZW50aDtcbiIKKyAgICAgICAgKyAiICAgIHR3ZW50aWV0aDsgdHdlbnR5LT4+O1xuIgorICAgICAgICArICIgICAgMzA6IHRoaXJ0aWV0aDsgdGhpcnR5LT4+O1xuIgorICAgICAgICArICIgICAgNDA6IGZvcnRpZXRoOyBmb3J0eS0+PjtcbiIKKyAgICAgICAgKyAiICAgIDUwOiBmaWZ0aWV0aDsgZmlmdHktPj47XG4iCisgICAgICAgICsgIiAgICA2MDogc2l4dGlldGg7IHNpeHR5LT4+O1xuIgorICAgICAgICArICIgICAgNzA6IHNldmVudGlldGg7IHNldmVudHktPj47XG4iCisgICAgICAgICsgIiAgICA4MDogZWlnaHRpZXRoOyBlaWdodHktPj47XG4iCisgICAgICAgICsgIiAgICA5MDogbmluZXRpZXRoOyBuaW5ldHktPj47XG4iCisgICAgICAgICsgIiAgICAxMDA6IDwlc2ltcGxpZmllZDwgaHVuZHJlZHRoOyA8JXNpbXBsaWZpZWQ8IGh1bmRyZWQgPj47XG4iCisgICAgICAgICsgIiAgICAxMDAwOiA8JXNpbXBsaWZpZWQ8IHRob3VzYW5kdGg7IDwlc2ltcGxpZmllZDwgdGhvdXNhbmQgPj47XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDA6IDwlc2ltcGxpZmllZDwgbWlsbGlvbnRoOyA8JXNpbXBsaWZpZWQ8IG1pbGxpb24gPj47XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwOiA8JXNpbXBsaWZpZWQ8IGJpbGxpb250aDtcbiIKKyAgICAgICAgKyAiICAgICAgICA8JXNpbXBsaWZpZWQ8IGJpbGxpb24gPj47XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMDogPCVzaW1wbGlmaWVkPCB0cmlsbGlvbnRoO1xuIgorICAgICAgICArICIgICAgICAgIDwlc2ltcGxpZmllZDwgdHJpbGxpb24gPj47XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMCwwMDA6ID0jLCMjMD07IgorCisgICAgICAgIC8vICVkZWZhdWx0IGlzIGEgbW9yZSBlbGFib3JhdGUgZm9ybSBvZiAlc2ltcGxpZmllZDsgIEl0IGlzIGJhc2ljYWxseQorICAgICAgICAvLyB0aGUgc2FtZSwgZXhjZXB0IHRoYXQgaXQgaW50cm9kdWNlcyAiYW5kIiBiZWZvcmUgdGhlIG9uZXMgZGlnaXQKKyAgICAgICAgLy8gd2hlbiBhcHByb3ByaWF0ZSAoYmFzaWNhbGx5LCBiZXR3ZWVuIHRoZSB0ZW5zIGFuZCBvbmVzIGRpZ2l0cykgYW5kCisgICAgICAgIC8vIHNlcGFyYXRlcyB0aGUgdGhvdXNhbmRzIGdyb3VwcyB3aXRoIGNvbW1hcyBpbiB2YWx1ZXMgb3ZlciAxMDAsMDAwLgorICAgICAgICArICIlZGVmYXVsdDpcbiIKKyAgICAgICAgICAgICAgIC8vIG5lZ2F0aXZlLW51bWJlciBhbmQgZnJhY3Rpb24gcnVsZXMuICBUaGVzZSBhcmUgdGhlIHNhbWUKKyAgICAgICAgICAgICAgIC8vIGFzIHRob3NlIGZvciAlc2ltcGxpZmllZCwgYnV0IGF2ZSB0byBiZSBzdGF0ZWQgaGVyZSB0b28KKyAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhpcyBpcyBhbiBlbnRyeSBwb2ludAorICAgICAgICArICIgICAgLXg6IG1pbnVzID4+O1xuIgorICAgICAgICArICIgICAgeC54OiA8PCBwb2ludCA+PjtcbiIKKyAgICAgICAgICAgICAgIC8vIGp1c3QgdXNlICVzaW1wbGlmaWVkIGZvciB2YWx1ZXMgYmVsb3cgMTAwCisgICAgICAgICsgIiAgICA9JXNpbXBsaWZpZWQ9O1xuIgorICAgICAgICAgICAgICAgLy8gZm9yIHZhbHVlcyBmcm9tIDEwMCB0byA5LDk5OSB1c2UgJSVhbmQgdG8gZGVjaWRlIHdoZXRoZXIgb3IKKyAgICAgICAgICAgICAgIC8vIG5vdCB0byBpbnRlcnBvc2UgdGhlICJhbmQiCisgICAgICAgICsgIiAgICAxMDA6IDw8IGh1bmRyZWRbID4lJWFuZD5dO1xuIgorICAgICAgICArICIgICAgMTAwMDogPDwgdGhvdXNhbmRbID4lJWFuZD5dO1xuIgorICAgICAgICAgICAgICAgLy8gZm9yIHZhbHVlcyBvZiAxMDAsMDAwIGFuZCB1cCwgdXNlICUlY29tbWFzIHRvIGludGVycG9zZSB0aGUKKyAgICAgICAgICAgICAgIC8vIGNvbW1hcyBpbiB0aGUgcmlnaHQgcGxhY2VzIChhbmQgYWxzbyB0byBpbnRlcnBvc2UgdGhlICJhbmQiKQorICAgICAgICArICIgICAgMTAwLDAwMD4+OiA8PCB0aG91c2FuZFs+JSVjb21tYXM+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMDogPDwgbWlsbGlvbls+JSVjb21tYXM+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDA6IDw8IGJpbGxpb25bPiUlY29tbWFzPl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMDogPDwgdHJpbGxpb25bPiUlY29tbWFzPl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMCwwMDA6ID0jLCMjMD07XG4iCisgICAgICAgIC8vIGlmIHRoZSB2YWx1ZSBwYXNzZWQgdG8gdGhpcyBydWxlIHNldCBpcyBncmVhdGVyIHRoYW4gMTAwLCBkb24ndAorICAgICAgICAvLyBhZGQgdGhlICJhbmQiOyBpZiBpdCdzIGxlc3MgdGhhbiAxMDAsIGFkZCAiYW5kIiBiZWZvcmUgdGhlIGxhc3QKKyAgICAgICAgLy8gZGlnaXRzCisgICAgICAgICsgIiUlYW5kOlxuIgorICAgICAgICArICIgICAgYW5kID0lZGVmYXVsdD07XG4iCisgICAgICAgICsgIiAgICAxMDA6ID0lZGVmYXVsdD07XG4iCisgICAgICAgIC8vIHRoaXMgcnVsZSBzZXQgaXMgdXNlZCB0byBwbGFjZSB0aGUgY29tbWFzCisgICAgICAgICsgIiUlY29tbWFzOlxuIgorICAgICAgICAgICAgICAgLy8gZm9yIHZhbHVlcyBiZWxvdyAxMDAsIGFkZCAiYW5kIiAodGhlIGFwb3N0cm9waGUgYXQgdGhlCisgICAgICAgICAgICAgICAvLyBiZWdpbm5pbmcgaXMgaWdub3JlZCwgYnV0IGNhdXNlcyB0aGUgc3BhY2UgdGhhdCBmb2xsb3dzIGl0CisgICAgICAgICAgICAgICAvLyB0byBiZSBzaWduaWZpY2FudDogdGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgcnVsZXMKKyAgICAgICAgICAgICAgIC8vIGNhbGxpbmcgJSVjb21tYXMgZG9uJ3QgcHV0IGEgc3BhY2UgYmVmb3JlIGl0KQorICAgICAgICArICIgICAgJyBhbmQgPSVkZWZhdWx0PTtcbiIKKyAgICAgICAgICAgICAgIC8vIHB1dCBhIGNvbW1hIGFmdGVyIHRoZSB0aG91c2FuZHMgKG9yIHdoYXRldmVyIHByZWNlZGVkIHRoZQorICAgICAgICAgICAgICAgLy8gaHVuZHJlZHMpCisgICAgICAgICsgIiAgICAxMDA6ICwgPSVkZWZhdWx0PTtcbiIKKyAgICAgICAgICAgICAgIC8vIHB1dCBhIGNvbW1hIGFmdGVyIHRoZSBtaWxsaW9ucyAob3Igd2hhdGV2ZXIgcHJlY2VkZXMgdGhlCisgICAgICAgICAgICAgICAvLyB0aG91c2FuZHMpCisgICAgICAgICsgIiAgICAxMDAwOiAsIDwlZGVmYXVsdDwgdGhvdXNhbmQsID4lZGVmYXVsdD47XG4iCisgICAgICAgICAgICAgICAvLyBhbmQgc28gb24uLi4KKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMDogLCA9JWRlZmF1bHQ9OyIKKyAgICAgICAgLy8gJSVsZW5pZW50LXBhcnNlIGlzbid0IHJlYWxseSBhIHNldCBvZiBudW1iZXIgZm9ybWF0dGluZyBydWxlczsKKyAgICAgICAgLy8gaXQncyBhIHNldCBvZiBjb2xsYXRpb24gcnVsZXMuICBMZW5pZW50LXBhcnNlIG1vZGUgdXNlcyBhIENvbGxhdG9yCisgICAgICAgIC8vIG9iamVjdCB0byBjb21wYXJlIGZyYWdtZW50cyBvZiB0aGUgdGV4dCBiZWluZyBwYXJzZWQgdG8gdGhlIHRleHQKKyAgICAgICAgLy8gaW4gdGhlIHJ1bGVzLCBhbGxvd2luZyBtb3JlIGxlZXdheSBpbiB0aGUgbWF0Y2hpbmcgdGV4dC4gIFRoaXMgc2V0CisgICAgICAgIC8vIG9mIHJ1bGVzIHRlbGxzIHRoZSBmb3JtYXR0ZXIgdG8gaWdub3JlIGNvbW1hcyB3aGVuIHBhcnNpbmcgKGl0CisgICAgICAgIC8vIGFscmVhZHkgaWdub3JlcyBzcGFjZXMsIHdoaWNoIGlzIHdoeSB3ZSByZWZlciB0byB0aGUgc3BhY2U7IGl0IGFsc28KKyAgICAgICAgLy8gaWdub3JlcyBoeXBoZW5zLCBtYWtpbmcgInR3ZW50eSBvbmUiIGFuZCAidHdlbnR5LW9uZSIgcGFyc2UKKyAgICAgICAgLy8gaWRlbnRpY2FsbHkpCisgICAgICAgICsgIiUlbGVuaWVudC1wYXJzZTpcbiIKKyAgICAgICAgKyAiICAgICYgJyAnICwgJywnIDtcbiI7CisKKyAgICAvKioKKyAgICAgKiBTcGVsbG91dCBydWxlcyBmb3IgVS5LLiBFbmdsaXNoLiAgVS5LLiBFbmdsaXNoIGhhcyBvbmUgc2lnbmlmaWNhbnQKKyAgICAgKiBkaWZmZXJlbmNlIGZyb20gVS5TLiBFbmdsaXNoOiB0aGUgbmFtZXMgZm9yIHZhbHVlcyBvZiAxLDAwMCwwMDAsMDAwCisgICAgICogYW5kIGhpZ2hlci4gIEluIEFtZXJpY2FuIEVuZ2xpc2gsIGVhY2ggc3VjY2Vzc2l2ZSAiLWlsbGlvbiIgaXMgMSwwMDAKKyAgICAgKiB0aW1lcyBncmVhdGVyIHRoYW4gdGhlIHByZWNlZGluZyBvbmU6IDEsMDAwLDAwMCwwMDAgaXMgIm9uZSBiaWxsaW9uIgorICAgICAqIGFuZCAxLDAwMCwwMDAsMDAwLDAwMCBpcyAib25lIHRyaWxsaW9uLiIgIEluIEJyaXRpc2ggRW5nbGlzaCwgZWFjaAorICAgICAqIHN1Y2Nlc3NpdmUgIi1pbGxpb24iIGlzIG9uZSBtaWxsaW9uIHRpbWVzIGdyZWF0ZXIgdGhhbiB0aGUgb25lIGJlZm9yZToKKyAgICAgKiAib25lIGJpbGxpb24iIGlzIDEsMDAwLDAwMCwwMDAsMDAwIChvciB3aGF0IEFtZXJpY2FucyB3b3VsZCBjYWxsIGEKKyAgICAgKiAidHJpbGxpb24iKSwgYW5kICJvbmUgdHJpbGxpb24iIGlzIDEsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDAuCisgICAgICogMSwwMDAsMDAwLDAwMCBpbiBCcml0aXNoIEVuZ2xpc2ggaXMgIm9uZSB0aG91c2FuZCBtaWxsaW9uLiIgIChUaGlzCisgICAgICogdmFsdWUgaXMgc29tZXRpbWVzIGNhbGxlZCBhICJtaWxsaWFyZCwiIGJ1dCB0aGlzIHdvcmQgc2VlbXMgdG8gaGF2ZQorICAgICAqIGZhbGxlbiBpbnRvIGRpc3VzZS4pCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgdWtFbmdsaXNoID0KKyAgICAgICAgIiVzaW1wbGlmaWVkOlxuIgorICAgICAgICArICIgICAgLXg6IG1pbnVzID4+O1xuIgorICAgICAgICArICIgICAgeC54OiA8PCBwb2ludCA+PjtcbiIKKyAgICAgICAgKyAiICAgIHplcm87IG9uZTsgdHdvOyB0aHJlZTsgZm91cjsgZml2ZTsgc2l4OyBzZXZlbjsgZWlnaHQ7IG5pbmU7XG4iCisgICAgICAgICsgIiAgICB0ZW47IGVsZXZlbjsgdHdlbHZlOyB0aGlydGVlbjsgZm91cnRlZW47IGZpZnRlZW47IHNpeHRlZW47XG4iCisgICAgICAgICsgIiAgICAgICAgc2V2ZW50ZWVuOyBlaWdodGVlbjsgbmluZXRlZW47XG4iCisgICAgICAgICsgIiAgICAyMDogdHdlbnR5Wy0+Pl07XG4iCisgICAgICAgICsgIiAgICAzMDogdGhpcnR5Wy0+Pl07XG4iCisgICAgICAgICsgIiAgICA0MDogZm9ydHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDUwOiBmaWZ0eVstPj5dO1xuIgorICAgICAgICArICIgICAgNjA6IHNpeHR5Wy0+Pl07XG4iCisgICAgICAgICsgIiAgICA3MDogc2V2ZW50eVstPj5dO1xuIgorICAgICAgICArICIgICAgODA6IGVpZ2h0eVstPj5dO1xuIgorICAgICAgICArICIgICAgOTA6IG5pbmV0eVstPj5dO1xuIgorICAgICAgICArICIgICAgMTAwOiA8PCBodW5kcmVkWyA+Pl07XG4iCisgICAgICAgICsgIiAgICAxMDAwOiA8PCB0aG91c2FuZFsgPj5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwOiA8PCBtaWxsaW9uWyA+Pl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMDogPDwgYmlsbGlvblsgPj5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9O1xuIgorICAgICAgICArICIlYWx0LXRlZW5zOlxuIgorICAgICAgICArICIgICAgPSVzaW1wbGlmaWVkPTtcbiIKKyAgICAgICAgKyAiICAgIDEwMDA+OiA8JSVhbHQtaHVuZHJlZHM8WyA+Pl07XG4iCisgICAgICAgICsgIiAgICAxMCwwMDA6ID0lc2ltcGxpZmllZD07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDA6IDw8IG1pbGxpb25bID4lc2ltcGxpZmllZD5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IDw8IGJpbGxpb25bID4lc2ltcGxpZmllZD5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9O1xuIgorICAgICAgICArICIlJWFsdC1odW5kcmVkczpcbiIKKyAgICAgICAgKyAiICAgIDA6IFNIT1VMRCBORVZFUiBHRVQgSEVSRSE7XG4iCisgICAgICAgICsgIiAgICAxMDogPCVzaW1wbGlmaWVkPCB0aG91c2FuZDtcbiIKKyAgICAgICAgKyAiICAgIDExOiA9JXNpbXBsaWZpZWQ9IGh1bmRyZWQ+JSVlbXB0eT47XG4iCisgICAgICAgICsgIiUlZW1wdHk6XG4iCisgICAgICAgICsgIiAgICAwOjsiCisgICAgICAgICsgIiVvcmRpbmFsOlxuIgorICAgICAgICArICIgICAgemVyb3RoOyBmaXJzdDsgc2Vjb25kOyB0aGlyZDsgZm91cnRoOyBmaWZ0aDsgc2l4dGg7IHNldmVudGg7XG4iCisgICAgICAgICsgIiAgICAgICAgZWlnaHRoOyBuaW50aDtcbiIKKyAgICAgICAgKyAiICAgIHRlbnRoOyBlbGV2ZW50aDsgdHdlbGZ0aDsgdGhpcnRlZW50aDsgZm91cnRlZW50aDtcbiIKKyAgICAgICAgKyAiICAgICAgICBmaWZ0ZWVudGg7IHNpeHRlZW50aDsgc2V2ZW50ZWVudGg7IGVpZ2h0ZWVudGg7XG4iCisgICAgICAgICsgIiAgICAgICAgbmluZXRlZW50aDtcbiIKKyAgICAgICAgKyAiICAgIHR3ZW50aWV0aDsgdHdlbnR5LT4+O1xuIgorICAgICAgICArICIgICAgMzA6IHRoaXJ0aWV0aDsgdGhpcnR5LT4+O1xuIgorICAgICAgICArICIgICAgNDA6IGZvcnRpZXRoOyBmb3J0eS0+PjtcbiIKKyAgICAgICAgKyAiICAgIDUwOiBmaWZ0aWV0aDsgZmlmdHktPj47XG4iCisgICAgICAgICsgIiAgICA2MDogc2l4dGlldGg7IHNpeHR5LT4+O1xuIgorICAgICAgICArICIgICAgNzA6IHNldmVudGlldGg7IHNldmVudHktPj47XG4iCisgICAgICAgICsgIiAgICA4MDogZWlnaHRpZXRoOyBlaWdodHktPj47XG4iCisgICAgICAgICsgIiAgICA5MDogbmluZXRpZXRoOyBuaW5ldHktPj47XG4iCisgICAgICAgICsgIiAgICAxMDA6IDwlc2ltcGxpZmllZDwgaHVuZHJlZHRoOyA8JXNpbXBsaWZpZWQ8IGh1bmRyZWQgPj47XG4iCisgICAgICAgICsgIiAgICAxMDAwOiA8JXNpbXBsaWZpZWQ8IHRob3VzYW5kdGg7IDwlc2ltcGxpZmllZDwgdGhvdXNhbmQgPj47XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDA6IDwlc2ltcGxpZmllZDwgbWlsbGlvbnRoOyA8JXNpbXBsaWZpZWQ8IG1pbGxpb24gPj47XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMDogPCVzaW1wbGlmaWVkPCBiaWxsaW9udGg7XG4iCisgICAgICAgICsgIiAgICAgICAgPCVzaW1wbGlmaWVkPCBiaWxsaW9uID4+O1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9OyIKKyAgICAgICAgKyAiJWRlZmF1bHQ6XG4iCisgICAgICAgICsgIiAgICAteDogbWludXMgPj47XG4iCisgICAgICAgICsgIiAgICB4Lng6IDw8IHBvaW50ID4+O1xuIgorICAgICAgICArICIgICAgPSVzaW1wbGlmaWVkPTtcbiIKKyAgICAgICAgKyAiICAgIDEwMDogPDwgaHVuZHJlZFsgPiUlYW5kPl07XG4iCisgICAgICAgICsgIiAgICAxMDAwOiA8PCB0aG91c2FuZFsgPiUlYW5kPl07XG4iCisgICAgICAgICsgIiAgICAxMDAsMDAwPj46IDw8IHRob3VzYW5kWz4lJWNvbW1hcz5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwOiA8PCBtaWxsaW9uWz4lJWNvbW1hcz5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IDw8IGJpbGxpb25bPiUlY29tbWFzPl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMCwwMDA6ID0jLCMjMD07XG4iCisgICAgICAgICsgIiUlYW5kOlxuIgorICAgICAgICArICIgICAgYW5kID0lZGVmYXVsdD07XG4iCisgICAgICAgICsgIiAgICAxMDA6ID0lZGVmYXVsdD07XG4iCisgICAgICAgICsgIiUlY29tbWFzOlxuIgorICAgICAgICArICIgICAgJyBhbmQgPSVkZWZhdWx0PTtcbiIKKyAgICAgICAgKyAiICAgIDEwMDogLCA9JWRlZmF1bHQ9O1xuIgorICAgICAgICArICIgICAgMTAwMDogLCA8JWRlZmF1bHQ8IHRob3VzYW5kLCA+JWRlZmF1bHQ+O1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwOiAsID0lZGVmYXVsdD07IgorICAgICAgICArICIlJWxlbmllbnQtcGFyc2U6XG4iCisgICAgICAgICsgIiAgICAmICcgJyAsICcsJyA7XG4iOworICAgIC8vIENvdWxkIHNvbWVvbmUgcGxlYXNlIGNvcnJlY3QgbWUgaWYgSSdtIHdyb25nIGFib3V0ICJtaWxsaWFyZCIgZmFsbGluZworICAgIC8vIGludG8gZGlzdXNlLCBvciBoYXZlIG1pc3NlZCBhbnkgb3RoZXIgZGV0YWlscyBvZiBob3cgbGFyZ2UgbnVtYmVycworICAgIC8vIGFyZSByZW5kZXJlZC4gIEFsc28sIGNvdWxkIHNvbWVvbmUgcGxlYXNlIHByb3ZpZGUgbWUgd2l0aCBpbmZvcm1hdGlvbgorICAgIC8vIG9uIHdoaWNoIG90aGVyIEVuZ2xpc2gtc3BlYWtpbmcgY291bnRyaWVzIHVzZSB3aGljaCBzeXN0ZW0/ICBSaWdodCBub3csCisgICAgLy8gSSdtIGFzc3VtaW5nIHRoYXQgdGhlIFUuUy4gc3lzdGVtIGlzIHVzZWQgaW4gQ2FuYWRhIGFuZCB0aGF0IGFsbCB0aGUKKyAgICAvLyBvdGhlciBFbmdsaXNoLXNwZWFraW5nIGNvdW50cmllcyBmb2xsb3cgdGhlIEJyaXRpc2ggc3lzdGVtLiAgQ2FuCisgICAgLy8gc29tZW9uZSBvdXQgdGhlcmUgY29uZmlybSB0aGlzPworCisgICAgLyoqCisgICAgICogU3BlbGxvdXQgcnVsZXMgZm9yIFNwYW5pc2guICBUaGUgU3BhbmlzaCBydWxlcyBhcmUgcXVpdGUgc2ltaWxhciB0bworICAgICAqIHRoZSBFbmdsaXNoIHJ1bGVzLCBidXQgdGhlcmUgYXJlIHNvbWUgaW1wb3J0YW50IGRpZmZlcmVuY2VzOgorICAgICAqIEZpcnN0LCB3ZSBoYXZlIHRvIHByb3ZpZGUgc2VwYXJhdGUgcnVsZXMgZm9yIG1vc3Qgb2YgdGhlIHR3ZW50aWVzCisgICAgICogYmVjYXVzZSB0aGUgb25lcyBkaWdpdCBmcmVxdWVudGx5IHBpY2tzIHVwIGFuIGFjY2VudCBtYXJrIHRoYXQgaXQKKyAgICAgKiBkb2Vzbid0IGhhdmUgd2hlbiBzdGFuZGluZyBhbG9uZS4gIFNlY29uZCwgZWFjaCBtdWx0aXBsZSBvZiAxMDAgaGFzCisgICAgICogdG8gYmUgc3BlY2lmaWVkIHNlcGFyYXRlbHkgYmVjYXVzZSB0aGUgbXVsdGlwbGllciBvbiAxMDAgdmVyeSBvZnRlbgorICAgICAqIGNoYW5nZXMgZm9ybSBpbiB0aGUgY29udHJhY3Rpb246IDUwMCBpcyAicXVpbmllbnRvcywiIG5vdAorICAgICAqICJjaW5jb2NpZW50b3MuIiAgSW4gYWRkaXRpb24sIHRoZSB3b3JkIGZvciAxMDAgaXMgImNpZW4iIHdoZW4KKyAgICAgKiBzdGFuZGluZyBhbG9uZSwgYnV0IGNoYW5nZXMgdG8gImNpZW50byIgd2hlbiBmb2xsb3dlZCBieSBtb3JlIGRpZ2l0cy4KKyAgICAgKiBUaGVyZSBhbHNvIHNvbWUgb3RoZXIgZGlmZmVyZW5jZXMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgc3BhbmlzaCA9CisgICAgICAgIC8vIG5lZ2F0aXZlLW51bWJlciBhbmQgZnJhY3Rpb24gcnVsZXMKKyAgICAgICAgIi14OiBtZW5vcyA+PjtcbiIKKyAgICAgICAgKyAieC54OiA8PCBwdW50byA+PjtcbiIKKyAgICAgICAgLy8gd29yZHMgZm9yIHZhbHVlcyBmcm9tIDAgdG8gMTkKKyAgICAgICAgKyAiY2VybzsgdW5vOyBkb3M7IHRyZXM7IGN1YXRybzsgY2luY287IHNlaXM7IHNpZXRlOyBvY2hvOyBudWV2ZTtcbiIKKyAgICAgICAgKyAiZGllejsgb25jZTsgZG9jZTsgdHJlY2U7IGNhdG9yY2U7IHF1aW5jZTsgZGllY2lzXHUwMGU5aXM7XG4iCisgICAgICAgICsgIiAgICBkaWVjaXNpZXRlOyBkaWVjaW9jaG87IGRpZWNpbnVldmU7XG4iCisgICAgICAgIC8vIHdvcmRzIGZvciB2YWx1ZXMgZnJvbSAyMCB0byAyOSAobmVjZXNzYXJ5IGJlY2F1c2UgdGhlIG9uZXMgZGlnaXQKKyAgICAgICAgLy8gb2Z0ZW4gcGlja3MgdXAgYW4gYWNjZW50IG1hcmsgaXQgZG9lc24ndCBoYXZlIHdoZW4gc3RhbmRpbmcgYWxvbmUpCisgICAgICAgICsgInZlaW50ZTsgdmVpbnRpdW5vOyB2ZWludGlkXHUwMGYzczsgdmVpbnRpdHJcdTAwZTlzOyB2ZWludGljdWF0cm87XG4iCisgICAgICAgICsgIiAgICB2ZWludGljaW5jbzsgdmVpbnRpc1x1MDBlOWlzOyB2ZWludGlzaWV0ZTsgdmVpbnRpb2NobztcbiIKKyAgICAgICAgKyAiICAgIHZlaW50aW51ZXZlO1xuIgorICAgICAgICAvLyB3b3JkcyBmb3IgbXVsdGlwbGVzIG9mIDEwIChub3RpY2UgdGhhdCB0aGUgdGVucyBkaWdpdCBpcyBzZXBhcmF0ZWQKKyAgICAgICAgLy8gZnJvbSB0aGUgb25lcyBkaWdpdCBieSB0aGUgd29yZCAieSIuKQorICAgICAgICArICIzMDogdHJlaW50YVsgeSA+Pl07XG4iCisgICAgICAgICsgIjQwOiBjdWFyZW50YVsgeSA+Pl07XG4iCisgICAgICAgICsgIjUwOiBjaW5jdWVudGFbIHkgPj5dO1xuIgorICAgICAgICArICI2MDogc2VzZW50YVsgeSA+Pl07XG4iCisgICAgICAgICsgIjcwOiBzZXRlbnRhWyB5ID4+XTtcbiIKKyAgICAgICAgKyAiODA6IG9jaGVudGFbIHkgPj5dO1xuIgorICAgICAgICArICI5MDogbm92ZW50YVsgeSA+Pl07XG4iCisgICAgICAgIC8vIDEwMCBieSBpdHNlbGYgaXMgImNpZW4sIiBidXQgMTAwIGZvbGxvd2VkIGJ5IHNvbWV0aGluZyBpcyAiY2luZXRvIgorICAgICAgICArICIxMDA6IGNpZW47XG4iCisgICAgICAgICsgIjEwMTogY2llbnRvID4+O1xuIgorICAgICAgICAvLyB3b3JkcyBmb3IgbXVsdGlwbGVzIG9mIDEwMCAobXVzdCBiZSBzdGF0ZWQgYmVjYXVzZSB0aGV5J3JlCisgICAgICAgIC8vIHJhcmVseSBzaW1wbGUgY29uY2F0ZW5hdGlvbnMpCisgICAgICAgICsgIjIwMDogZG9zY2llbnRvc1sgPj5dO1xuIgorICAgICAgICArICIzMDA6IHRyZXNjaWVudG9zWyA+Pl07XG4iCisgICAgICAgICsgIjQwMDogY3VhdHJvY2llbnRvc1sgPj5dO1xuIgorICAgICAgICArICI1MDA6IHF1aW5pZW50b3NbID4+XTtcbiIKKyAgICAgICAgKyAiNjAwOiBzZWlzY2llbnRvc1sgPj5dO1xuIgorICAgICAgICArICI3MDA6IHNldGVjaWVudG9zWyA+Pl07XG4iCisgICAgICAgICsgIjgwMDogb2Nob2NpZW50b3NbID4+XTtcbiIKKyAgICAgICAgKyAiOTAwOiBub3ZlY2llbnRvc1sgPj5dO1xuIgorICAgICAgICAvLyBmb3IgMSwwMDAsIHRoZSBtdWx0aXBsaWVyIG9uICJtaWwiIGlzIG9taXR0ZWQ6IDIsMDAwIGlzICJkb3MgbWlsLCIKKyAgICAgICAgLy8gYnV0IDEsMDAwIGlzIGp1c3QgIm1pbC4iCisgICAgICAgICsgIjEwMDA6IG1pbFsgPj5dO1xuIgorICAgICAgICArICIyMDAwOiA8PCBtaWxbID4+XTtcbiIKKyAgICAgICAgLy8gMSwwMDAsMDAwIGlzICJ1biBtaWxsb24sIiBub3QgInVubyBtaWxsb24iCisgICAgICAgICsgIjEsMDAwLDAwMDogdW4gbWlsbFx1MDBmM25bID4+XTtcbiIKKyAgICAgICAgKyAiMiwwMDAsMDAwOiA8PCBtaWxsXHUwMGYzblsgPj5dO1xuIgorICAgICAgICAvLyBvdmVyZmxvdyBydWxlCisgICAgICAgICsgIjEsMDAwLDAwMCwwMDA6ID0jLCMjMD0gKGluY29tcGxldGUgZGF0YSk7IjsKKyAgICAvLyBUaGUgU3BhbmlzaCBydWxlcyBhcmUgaW5jb21wbGV0ZS4gIEknbSBtaXNzaW5nIGluZm9ybWF0aW9uIG9uIG5lZ2F0aXZlCisgICAgLy8gbnVtYmVycyBhbmQgbnVtYmVycyB3aXRoIGZyYWN0aW9uYWwgcGFydHMuICBJIGFsc28gZG9uJ3QgaGF2ZQorICAgIC8vIGluZm9ybWF0aW9uIG9uIG51bWJlcnMgaGlnaGVyIHRoYW4gdGhlIG1pbGxpb25zCisKKyAgICAvKioKKyAgICAgKiBTcGVsbG91dCBydWxlcyBmb3IgRnJlbmNoLiAgRnJlbmNoIGFkZHMgc29tZSBpbnRlcmVzdGluZyBxdWlya3Mgb2YgaXRzCisgICAgICogb3duOiAxKSBUaGUgd29yZCAiZXQiIGlzIGludGVycG9zZWQgYmV0d2VlbiB0aGUgdGVucyBhbmQgb25lcyBkaWdpdHMsCisgICAgICogYnV0IG9ubHkgaWYgdGhlIG9uZXMgZGlnaXQgaWYgMTogMjAgaXMgInZpbmd0LCIgYW5kIDIgaXMgInZpbmd0LWRldXgsIgorICAgICAqIGJ1dCAyMSBpcyAidmluZ3QtZXQtdW4uIiAgMikgIFRoZXJlIGFyZSBubyB3b3JkcyBmb3IgNzAsIDgwLCBvciA5MC4KKyAgICAgKiAicXVhdHJlLXZpbmd0cyIgKCJmb3VyIHR3ZW50aWVzIikgaXMgdXNlZCBmb3IgODAsIGFuZCB2YWx1ZXMgcHJvY2VlZAorICAgICAqIGJ5IHNjb3JlIGZyb20gNjAgdG8gOTkgKGUuZy4sIDczIGlzICJzb2l4YW50ZS10cmVpemUiIFsic2l4dHktdGhpcnRlZW4iXSkuCisgICAgICogTnVtYmVycyBmcm9tIDEsMTAwIHRvIDEsMTk5IGFyZSByZW5kZXJlZCBhcyBodW5kcmVkcyByYXRoZXIgdGhhbgorICAgICAqIHRob3VzYW5kczogMSwxMDAgaXMgIm9uemUgY2VudHMiICgiZWxldmVuIGh1bmRyZWQiKSwgcmF0aGVyIHRoYW4KKyAgICAgKiAibWlsbGUgY2VudCIgKCJvbmUgdGhvdXNhbmQgb25lIGh1bmRyZWQiKQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGZyZW5jaCA9CisgICAgICAgIC8vIHRoZSBtYWluIHJ1bGUgc2V0CisgICAgICAgICIlbWFpbjpcbiIKKyAgICAgICAgICAgICAgIC8vIG5lZ2F0aXZlLW51bWJlciBhbmQgZnJhY3Rpb24gcnVsZXMKKyAgICAgICAgKyAiICAgIC14OiBtb2lucyA+PjtcbiIKKyAgICAgICAgKyAiICAgIHgueDogPDwgdmlyZ3VsZSA+PjtcbiIKKyAgICAgICAgICAgICAgIC8vIHdvcmRzIGZvciBudW1iZXJzIGZyb20gMCB0byAxMAorICAgICAgICArICIgICAgelx1MDBlOXJvOyB1bjsgZGV1eDsgdHJvaXM7IHF1YXRyZTsgY2lucTsgc2l4OyBzZXB0OyBodWl0OyBuZXVmO1xuIgorICAgICAgICArICIgICAgZGl4OyBvbnplOyBkb3V6ZTsgdHJlaXplOyBxdWF0b3J6ZTsgcXVpbnplOyBzZWl6ZTtcbiIKKyAgICAgICAgKyAiICAgICAgICBkaXgtc2VwdDsgZGl4LWh1aXQ7IGRpeC1uZXVmO1xuIgorICAgICAgICAgICAgICAgLy8gb3JkcyBmb3IgdGhlIG11bHRpcGxlcyBvZiAxMDogJSVhbHQtb25lcyBpbnNlcnRzICJldCIKKyAgICAgICAgICAgICAgIC8vIHdoZW4gbmVlZGVkCisgICAgICAgICsgIiAgICAyMDogdmluZ3RbLT4lJWFsdC1vbmVzPl07XG4iCisgICAgICAgICsgIiAgICAzMDogdHJlbnRlWy0+JSVhbHQtb25lcz5dO1xuIgorICAgICAgICArICIgICAgNDA6IHF1YXJhbnRlWy0+JSVhbHQtb25lcz5dO1xuIgorICAgICAgICArICIgICAgNTA6IGNpbnF1YW50ZVstPiUlYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgICAgICAgIC8vIHJ1bGUgZm9yIDYwLiAgVGhlIC8yMCBjYXVzZXMgdGhpcyBydWxlJ3MgbXVsdGlwbGllciB0byBiZQorICAgICAgICAgICAgICAgLy8gMjAgcmF0aGVyIHRoYW4gMTAsIGFsbG93aW5oZyB1cyB0byByZWN1cnNlIGZvciBhbGwgdmFsdWVzCisgICAgICAgICAgICAgICAvLyBmcm9tIDYwIHRvIDc5Li4uCisgICAgICAgICsgIiAgICA2MC8yMDogc29peGFudGVbLT4lJWFsdC1vbmVzPl07XG4iCisgICAgICAgICAgICAgICAvLyAuLi5leGNlcHQgZm9yIDcxLCB3aGljaCBtdXN0IGJlIHNwZWNpYWwtY2FzZWQKKyAgICAgICAgKyAiICAgIDcxOiBzb2l4YW50ZSBldCBvbnplO1xuIgorICAgICAgICAgICAgICAgLy8gYXQgNzIsIHdlIGhhdmUgdG8gcmVwZWF0IHRoZSBydWxlIGZvciA2MCB0byBnZXQgdXMgdG8gNzkKKyAgICAgICAgKyAiICAgIDcyLzIwOiBzb2l4YW50ZS0+JSVhbHQtb25lcz47XG4iCisgICAgICAgICAgICAgICAvLyBhdCA4MCwgd2Ugc3RhdGUgYSBuZXcgcnVsZSB3aXRoIHRoZSBwaHJhc2UgZm9yIDgwLiAgU2luY2UKKyAgICAgICAgICAgICAgIC8vIGl0IGNoYW5nZXMgZm9ybSB3aGVuIHRoZXJlJ3MgYSBvbmVzIGRpZ2l0LCB3ZSBuZWVkIGEgc2Vjb25kCisgICAgICAgICAgICAgICAvLyBydWxlIGF0IDgxLiAgVGhpcyBydWxlIGFsc28gaW5jbHVkZXMgIi8yMCwiIGFsbG93aW5nIGl0IHRvCisgICAgICAgICAgICAgICAvLyBiZSB1c2VkIGNvcnJlY3RseSBmb3IgYWxsIHZhbHVlcyB1cCB0byA5OQorICAgICAgICArICIgICAgODA6IHF1YXRyZS12aW5ndHM7IDgxLzIwOiBxdWF0cmUtdmluZ3QtPj47XG4iCisgICAgICAgICAgICAgICAvLyAiY2VudCIgYmVjb21lcyBwbHVyYWwgd2hlbiBwcmVjZWRlZCBieSBhIG11bHRpcGxpZXIsIGFuZAorICAgICAgICAgICAgICAgLy8gdGhlIG11bHRpcGxpZXIgaXMgb21pdHRlZCBmcm9tIHRoZSBzaW5ndWxhciBmb3JtCisgICAgICAgICsgIiAgICAxMDA6IGNlbnRbID4+XTtcbiIKKyAgICAgICAgKyAiICAgIDIwMDogPDwgY2VudHNbID4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwMDA6IG1pbGxlWyA+Pl07XG4iCisgICAgICAgICAgICAgICAvLyB2YWx1ZXMgZnJvbSAxLDEwMCB0byAxLDE5OSBhcmUgcmVuZGVyZWQgYXMgIm9uemUgY2VudHMuLi4iCisgICAgICAgICAgICAgICAvLyBpbnN0ZWFkIG9mICJtaWxsZSBjZW50Li4uIiAgVGhlID4gYWZ0ZXIgIjEwMDAiIGRlY3JlYXNlcworICAgICAgICAgICAgICAgLy8gdGhlIHJ1bGUncyBleHBvbmVudCwgY2F1c2luZyBpdHMgbXVsdGlwbGllciB0byBiZSAxMDAgaW5zdGVhZAorICAgICAgICAgICAgICAgLy8gb2YgMSwwMDAuICBUaGlzIHByZXZlbnRzIHVzIGZyb20gZ2V0dGluZyAib256ZSBjZW50cyBjZW50CisgICAgICAgICAgICAgICAvLyB2aW5ndC1kZXV4IiAoImVsZXZlbiBodW5kcmVkIG9uZSBodW5kcmVkIHR3ZW50eS10d28iKS4KKyAgICAgICAgKyAiICAgIDExMDA+OiBvbnplIGNlbnRzWyA+Pl07XG4iCisgICAgICAgICAgICAgICAvLyBhdCAxLDIwMCwgd2UgZ28gYmFjayB0byBmb3JtYXRpbmcgaW4gdGhvdXNhbmRzLCBzbyB3ZQorICAgICAgICAgICAgICAgLy8gcmVwZWF0IHRoZSBydWxlIGZvciAxLDAwMAorICAgICAgICArICIgICAgMTIwMDogbWlsbGUgPj47XG4iCisgICAgICAgICAgICAgICAvLyBhdCAyLDAwMCwgdGhlIG11bHRpcGxpZXIgaXMgYWRkZWQKKyAgICAgICAgKyAiICAgIDIwMDA6IDw8IG1pbGxlWyA+Pl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDA6IDw8IG1pbGxpb25bID4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDA6IDw8IG1pbGxpYXJkZVsgPj5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IDw8IGJpbGxpb25bID4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDAsMDAwLDAwMDogPSMsIyMwPTtcbiIKKyAgICAgICAgLy8gJSVhbHQtb25lcyBpcyB1c2VkIHRvIGluc2VydCAiZXQiIHdoZW4gdGhlIG9uZXMgZGlnaXQgaXMgMQorICAgICAgICArICIlJWFsdC1vbmVzOlxuIgorICAgICAgICArICIgICAgOyBldC11bjsgPSVtYWluPTsiOworCisgICAgLyoqCisgICAgICogU3BlbGxvdXQgcnVsZXMgZm9yIFN3aXNzIEZyZW5jaC4gIFN3aXNzIEZyZW5jaCBkaWZmZXJzIGZyb20gRnJlbmNoIEZyZW5jaAorICAgICAqIGluIHRoYXQgaXQgZG9lcyBoYXZlIHdvcmRzIGZvciA3MCwgODAsIGFuZCA5MC4gIFRoaXMgcnVsZSBzZXQgc2hvd3MgdGhlbSwKKyAgICAgKiBhbmQgaXMgc2ltcGxlciBhcyBhIHJlc3VsdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBzd2lzc0ZyZW5jaCA9CisgICAgICAgICIlbWFpbjpcbiIKKyAgICAgICAgKyAiICAgIC14OiBtb2lucyA+PjtcbiIKKyAgICAgICAgKyAiICAgIHgueDogPDwgdmlyZ3VsZSA+PjtcbiIKKyAgICAgICAgKyAiICAgIHpcdTAwZTlybzsgdW47IGRldXg7IHRyb2lzOyBxdWF0cmU7IGNpbnE7IHNpeDsgc2VwdDsgaHVpdDsgbmV1ZjtcbiIKKyAgICAgICAgKyAiICAgIGRpeDsgb256ZTsgZG91emU7IHRyZWl6ZTsgcXVhdG9yemU7IHF1aW56ZTsgc2VpemU7XG4iCisgICAgICAgICsgIiAgICAgICAgZGl4LXNlcHQ7IGRpeC1odWl0OyBkaXgtbmV1ZjtcbiIKKyAgICAgICAgKyAiICAgIDIwOiB2aW5ndFstPiUlYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgKyAiICAgIDMwOiB0cmVudGVbLT4lJWFsdC1vbmVzPl07XG4iCisgICAgICAgICsgIiAgICA0MDogcXVhcmFudGVbLT4lJWFsdC1vbmVzPl07XG4iCisgICAgICAgICsgIiAgICA1MDogY2lucXVhbnRlWy0+JSVhbHQtb25lcz5dO1xuIgorICAgICAgICArICIgICAgNjA6IHNvaXhhbnRlWy0+JSVhbHQtb25lcz5dO1xuIgorICAgICAgICAgICAgICAgLy8gbm90aWNlIG5ldyB3b3JkcyBmb3IgNzAsIDgwLCBhbmQgOTAKKyAgICAgICAgKyAiICAgIDcwOiBzZXB0YW50ZVstPiUlYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgKyAiICAgIDgwOiBvY3RhbnRlWy0+JSVhbHQtb25lcz5dO1xuIgorICAgICAgICArICIgICAgOTA6IG5vbmFudGVbLT4lJWFsdC1vbmVzPl07XG4iCisgICAgICAgICsgIiAgICAxMDA6IGNlbnRbID4+XTtcbiIKKyAgICAgICAgKyAiICAgIDIwMDogPDwgY2VudHNbID4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwMDA6IG1pbGxlWyA+Pl07XG4iCisgICAgICAgICsgIiAgICAxMTAwPjogb256ZSBjZW50c1sgPj5dO1xuIgorICAgICAgICArICIgICAgMTIwMDogbWlsbGUgPj47XG4iCisgICAgICAgICsgIiAgICAyMDAwOiA8PCBtaWxsZVsgPj5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwOiA8PCBtaWxsaW9uWyA+Pl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwOiA8PCBtaWxsaWFyZGVbID4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDAsMDAwOiA8PCBiaWxsaW9uWyA+Pl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMCwwMDA6ID0jLCMjMD07XG4iCisgICAgICAgICsgIiUlYWx0LW9uZXM6XG4iCisgICAgICAgICsgIiAgICA7IGV0LXVuOyA9JW1haW49OyI7CisgICAgLy8gSSdtIG5vdCAxMDAlIHN1cmUgYWJvdXQgU3dpc3MgRnJlbmNoLiAgSXMKKyAgICAvLyB0aGlzIGNvcnJlY3Q/ICBJcyAib256ZSBjZW50cyIgY29tbW9ubHkgdXNlZCBmb3IgMSwxMDAgaW4gYm90aCBGcmFuY2UKKyAgICAvLyBhbmQgU3dpdHplcmxhbmQ/ICBDYW4gc29tZW9uZSBmaWxsIG1lIGluIG9uIHRoZSBydWxlcyBmb3IgdGhlIG90aGVyCisgICAgLy8gRnJlbmNoLXNwZWFraW5nIGNvdW50cmllcz8gIEkndmUgaGVhcmQgY29uZmxpY3Rpbmcgb3BpbmlvbnMgb24gd2hpY2gKKyAgICAvLyB2ZXJzaW9uIGlzIHVzZWQgaW4gQ2FuYWRhLCBhbmQgSSB1bmRlcnN0YW5kIHRoZXJlJ3MgYW4gYWx0ZXJuYXRlIHNldAorICAgIC8vIG9mIHdvcmRzIGZvciA3MCwgODAsIGFuZCA5MCB0aGF0IGlzIHVzZWQgc29tZXdoZXJlLCBidXQgSSBkb24ndCBrbm93CisgICAgLy8gd2hhdCB0aG9zZSB3b3JkcyBhcmUgb3Igd2hlcmUgdGhleSdyZSB1c2VkLgorCisgICAgLyoqCisgICAgICogU3BlbGxvdXQgcnVsZXMgZm9yIEdlcm1hbi4gIEdlcm1hbiBhbHNvIGFkZHMgc29tZSBpbnRlcmVzdGluZworICAgICAqIGNoYXJhY3RlcmlzdGljcy4gIEZvciB2YWx1ZXMgYmVsb3cgMSwwMDAsMDAwLCBudW1iZXJzIGFyZSBjdXN0b21hcmlseQorICAgICAqIHdyaXR0ZW4gb3V0IGFzIGEgc2luZ2xlIHdvcmQuICBBbmQgdGhlIG9uZXMgZGlnaXQgUFJFQ0VERVMgdGhlIHRlbnMKKyAgICAgKiBkaWdpdCAoZS5nLiwgMjMgaXMgImRyZWl1bmR6d2FuemlnLCIgbm90ICJ6d2FuemlndW5kZHJlaSIpLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGdlcm1hbiA9CisgICAgICAgIC8vIDEgaXMgImVpbnMiIHdoZW4gYnkgaXRzZWxmLCBidXQgdHVybnMgaW50byAiZWluIiBpbiBtb3N0CisgICAgICAgIC8vIGNvbWJpbmF0aW9ucworICAgICAgICAiJWFsdC1vbmVzOlxuIgorICAgICAgICArICIgICAgbnVsbDsgZWluczsgPSUlbWFpbj07XG4iCisgICAgICAgICsgIiUlbWFpbjpcbiIKKyAgICAgICAgICAgICAgIC8vIHdvcmRzIGZvciBudW1iZXJzIGZyb20gMCB0byAxMi4gIE5vdGljZSB0aGF0IHRoZSB2YWx1ZXMKKyAgICAgICAgICAgICAgIC8vIGZyb20gMTMgdG8gMTkgY2FuIGRlcml2ZWQgYWxnb3JpdGhtaWNhbGx5LCB1bmxpa2UgaW4gbW9zdAorICAgICAgICAgICAgICAgLy8gb3RoZXIgbGFuZ3VhZ2VzCisgICAgICAgICsgIiAgICBudWxsOyBlaW47IHp3ZWk7IGRyZWk7IHZpZXI7IGZcdTAwZmNuZjsgc2VjaHM7IHNpZWJlbjsgYWNodDsgbmV1bjtcbiIKKyAgICAgICAgKyAiICAgIHplaG47IGVsZjsgendcdTAwZjZsZjsgPj56ZWhuO1xuIgorICAgICAgICAgICAgICAgLy8gcnVsZXMgZm9yIHRoZSBtdWx0aXBsZXMgb2YgMTAuICBOb3RpY2UgdGhhdCB0aGUgb25lcyBkaWdpdAorICAgICAgICAgICAgICAgLy8gZ29lcyBvbiB0aGUgZnJvbnQKKyAgICAgICAgKyAiICAgIDIwOiBbPj51bmRdendhbnppZztcbiIKKyAgICAgICAgKyAiICAgIDMwOiBbPj51bmRdZHJlaVx1MDBkZmlnO1xuIgorICAgICAgICArICIgICAgNDA6IFs+PnVuZF12aWVyemlnO1xuIgorICAgICAgICArICIgICAgNTA6IFs+PnVuZF1mXHUwMGZjbmZ6aWc7XG4iCisgICAgICAgICsgIiAgICA2MDogWz4+dW5kXXNlY2h6aWc7XG4iCisgICAgICAgICsgIiAgICA3MDogWz4+dW5kXXNpZWJ6aWc7XG4iCisgICAgICAgICsgIiAgICA4MDogWz4+dW5kXWFjaHR6aWc7XG4iCisgICAgICAgICsgIiAgICA5MDogWz4+dW5kXW5ldW56aWc7XG4iCisgICAgICAgICsgIiAgICAxMDA6IGh1bmRlcnRbPiVhbHQtb25lcz5dO1xuIgorICAgICAgICArICIgICAgMjAwOiA8PGh1bmRlcnRbPiVhbHQtb25lcz5dO1xuIgorICAgICAgICArICIgICAgMTAwMDogdGF1c2VuZFs+JWFsdC1vbmVzPl07XG4iCisgICAgICAgICsgIiAgICAyMDAwOiA8PHRhdXNlbmRbPiVhbHQtb25lcz5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwOiBlaW5lIE1pbGxpb25bID4lYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgKyAiICAgIDIsMDAwLDAwMDogPDwgTWlsbGlvbmVuWyA+JWFsdC1vbmVzPl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwOiBlaW5lIE1pbGxpYXJkZVsgPiVhbHQtb25lcz5dO1xuIgorICAgICAgICArICIgICAgMiwwMDAsMDAwLDAwMDogPDwgTWlsbGlhcmRlblsgPiVhbHQtb25lcz5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IGVpbmUgQmlsbGlvblsgPiVhbHQtb25lcz5dO1xuIgorICAgICAgICArICIgICAgMiwwMDAsMDAwLDAwMCwwMDA6IDw8IEJpbGxpb25lblsgPiVhbHQtb25lcz5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9OyI7CisgICAgLy8gYWdhaW4sIEknbSBub3QgMTAwJSBzdXJlIG9mIHRoZXNlIHJ1bGVzLiAgSSB0aGluayBib3RoICJodW5kZXJ0IiBhbmQKKyAgICAvLyAiZWluaHVuZGVydCIgYXJlIGNvcnJlY3Qgb3IgMTAwLCBidXQgSSdtIG5vdCBzdXJlIHdoaWNoIGlzIHByZWZlcmFibGUKKyAgICAvLyBpbiBzaXR1YXRpb25zIHdoZXJlIHRoaXMgZnJhbWV3b3JrIGlzIGxpa2VseSB0byBiZSB1c2VkLiAgQWxzbywgaXMgaXQKKyAgICAvLyByZWFsbHkgdHJ1ZSB0aGF0IG51bWJlcnMgYXJlIHJ1biB0b2dldGhlciBpbnRvIGNvbXBvdW5kIHdvcmRzIGFsbCB0aGUKKyAgICAvLyB0aW1lPyAgQW5kIGFnYWluLCBJJ20gbWlzc2luZyBpbmZvcm1hdGlvbiBvbiBuZWdhdGl2ZSBudW1iZXJzIGFuZAorICAgIC8vIGRlY2ltYXMuCisKKyAgICAvKioKKyAgICAgKiBTcGVsbG91dCBydWxlcyBmb3IgSXRhbGlhbi4gIExpa2UgR2VybWFuLCBtb3N0IEl0YWxpYW4gbnVtYmVycyBhcmUKKyAgICAgKiB3cml0dGVuIGFzIHNpbmdsZSB3b3Jkcy4gIFdoYXQgbWFrZXMgdGhlc2UgcnVsZXMgY29tcGxpY2F0ZWQgaXMgdGhlIHJ1bGUKKyAgICAgKiB0aGF0IHNheXMgdGhhdCB3aGVuIGEgd29yZCBlbmRpbmcgaW4gYSB2b3dlbCBhbmQgYSB3b3JkIGJlZ2lubmluZyB3aXRoCisgICAgICogYSB2b3dlbCBhcmUgY29tYmluZWQgaW50byBhIGNvbXBvdW5kLCB0aGUgdm93ZWwgaXMgZHJvcHBlZCBmcm9tIHRoZQorICAgICAqIGVuZCBvZiB0aGUgZmlyc3Qgd29yZDogMTgwIGlzICJjZW50b3R0YW50YSwiIG5vdCAiY2VudG9vdHRhbnRhLiIKKyAgICAgKiBUaGUgY29tcGxleGl0eSBvZiB0aGlzIHJ1bGUgc2V0IGlzIHRvIHByb2R1Y2UgdGhpcyBiZWhhdmlvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBpdGFsaWFuID0KKyAgICAgICAgLy8gbWFpbiBydWxlIHNldC4gIEZvbGxvd3MgdGhlIHBhdHRlcm5zIG9mIHRoZSBwcmVjZWRpbmcgcnVsZSBzZXRzLAorICAgICAgICAvLyBleGNlcHQgdGhhdCB0aGUgZmluYWwgdm93ZWwgaXMgb21pdHRlZCBmcm9tIHdvcmRzIGVuZGluZyBpbgorICAgICAgICAvLyB2b3dlbHMgd2hlbiB0aGV5IGFyZSBmb2xsb3dlZCBieSBhbm90aGVyIHdvcmQ7IGluc3RlYWQsIHdlIGhhdmUKKyAgICAgICAgLy8gc2VwYXJhdGUgcnVsZSBzZXRzIHRoYXQgYXJlIGlkZW50aWNhbCB0byB0aGlzIG9uZSwgZXhjZXB0IHRoYXQKKyAgICAgICAgLy8gYWxsIHRoZSB3b3JkcyB0aGF0IGRvbid0IGJlZ2luIHdpdGggYSB2b3dlbCBoYXZlIGEgdm93ZWwgdGFja2VkCisgICAgICAgIC8vIG9udG8gdGhlbSBhdCB0aGUgZnJvbnQuICBBIHdvcmQgZW5kaW5nIGluIGEgdm93ZWwgY2FsbHMgYQorICAgICAgICAvLyBzdWJzdGl0dXRpb24gdGhhdCB3aWxsIHN1cHBseSB0aGF0IHZvd2VsLCB1bmxlc3MgdGhhdCB2b3dlbCBpcyB0bworICAgICAgICAvLyBiZSBlbGlkZWQuCisgICAgICAgICIlbWFpbjpcbiIKKyAgICAgICAgKyAiICAgIC14OiBtZW5vID4+O1xuIgorICAgICAgICArICIgICAgeC54OiA8PCB2aXJnb2xhID4+O1xuIgorICAgICAgICArICIgICAgemVybzsgdW5vOyBkdWU7IHRyZTsgcXVhdHRybzsgY2lucXVlOyBzZWk7IHNldHRlOyBvdHRvO1xuIgorICAgICAgICArICIgICAgICAgIG5vdmU7XG4iCisgICAgICAgICsgIiAgICBkaWVjaTsgdW5kaWNpOyBkb2RpY2k7IHRyZWRpY2k7IHF1YXR0b3JkaWNpOyBxdWluZGljaTsgc2VkaWNpO1xuIgorICAgICAgICArICIgICAgICAgIGRpY2lhc2V0dGU7IGRpY2lvdHRvOyBkaWNpYW5ub3ZlO1xuIgorICAgICAgICArICIgICAgMjA6IHZlbnRpOyB2ZW50PiUld2l0aC1pPjtcbiIKKyAgICAgICAgKyAiICAgIDMwOiB0cmVudGE7IHRyZW50PiUld2l0aC1pPjtcbiIKKyAgICAgICAgKyAiICAgIDQwOiBxdWFyYW50YTsgcXVhcmFudD4lJXdpdGgtYT47XG4iCisgICAgICAgICsgIiAgICA1MDogY2lucXVhbnRhOyBjaW5xdWFudD4lJXdpdGgtYT47XG4iCisgICAgICAgICsgIiAgICA2MDogc2Vzc2FudGE7IHNlc3NhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICArICIgICAgNzA6IHNldHRhbnRhOyBzZXR0YW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgKyAiICAgIDgwOiBvdHRhbnRhOyBvdHRhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICArICIgICAgOTA6IG5vdmFudGE7IG5vdmFudD4lJXdpdGgtYT47XG4iCisgICAgICAgICsgIiAgICAxMDA6IGNlbnRvOyBjZW50Wz4lJXdpdGgtbz5dO1xuIgorICAgICAgICArICIgICAgMjAwOiA8PGNlbnRvOyA8PGNlbnRbPiUld2l0aC1vPl07XG4iCisgICAgICAgICsgIiAgICAxMDAwOiBtaWxsZTsgbWlsbFs+JSV3aXRoLWk+XTtcbiIKKyAgICAgICAgKyAiICAgIDIwMDA6IDw8bWlsYTsgPDxtaWxbPiUld2l0aC1hPl07XG4iCisgICAgICAgICsgIiAgICAxMDAsMDAwPj46IDw8bWlsYVsgPj5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwOiA9IywjIzA9IChpbmNvbXBsZXRlIGRhdGEpO1xuIgorICAgICAgICArICIlJXdpdGgtYTpcbiIKKyAgICAgICAgKyAiICAgIGF6ZXJvOyB1bm87IGFkdWU7IGF0cmU7IGFxdWF0dHJvOyBhY2lucXVlOyBhc2VpOyBhc2V0dGU7IG90dG87XG4iCisgICAgICAgICsgIiAgICAgICAgYW5vdmU7XG4iCisgICAgICAgICsgIiAgICBhZGllY2k7IHVuZGljaTsgYWRvZGljaTsgYXRyZWRpY2k7IGFxdWF0dG9yZGljaTsgYXF1aW5kaWNpOyBhc2VkaWNpO1xuIgorICAgICAgICArICIgICAgICAgIGFkaWNpYXNldHRlOyBhZGljaW90dG87IGFkaWNpYW5ub3ZlO1xuIgorICAgICAgICArICIgICAgMjA6IGF2ZW50aTsgYXZlbnQ+JSV3aXRoLWk+O1xuIgorICAgICAgICArICIgICAgMzA6IGF0cmVudGE7IGF0cmVudD4lJXdpdGgtaT47XG4iCisgICAgICAgICsgIiAgICA0MDogYXF1YXJhbnRhOyBhcXVhcmFudD4lJXdpdGgtYT47XG4iCisgICAgICAgICsgIiAgICA1MDogYWNpbnF1YW50YTsgYWNpbnF1YW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgKyAiICAgIDYwOiBhc2Vzc2FudGE7IGFzZXNzYW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgKyAiICAgIDcwOiBhc2V0dGFudGE7IGFzZXR0YW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgKyAiICAgIDgwOiBvdHRhbnRhOyBvdHRhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICArICIgICAgOTA6IGFub3ZhbnRhOyBhbm92YW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgKyAiICAgIDEwMDogYWNlbnRvOyBhY2VudFs+JSV3aXRoLW8+XTtcbiIKKyAgICAgICAgKyAiICAgIDIwMDogPCUld2l0aC1hPGNlbnRvOyA8JSV3aXRoLWE8Y2VudFs+JSV3aXRoLW8+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwMDA6IGFtaWxsZTsgYW1pbGxbPiUld2l0aC1pPl07XG4iCisgICAgICAgICsgIiAgICAyMDAwOiA8JSV3aXRoLWE8bWlsYTsgPCUld2l0aC1hPG1pbFs+JSV3aXRoLWE+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwMCwwMDA6ID0lbWFpbj07XG4iCisgICAgICAgICsgIiUld2l0aC1pOlxuIgorICAgICAgICArICIgICAgaXplcm87IHVubzsgaWR1ZTsgaXRyZTsgaXF1YXR0cm87IGljaW5xdWU7IGlzZWk7IGlzZXR0ZTsgb3R0bztcbiIKKyAgICAgICAgKyAiICAgICAgICBpbm92ZTtcbiIKKyAgICAgICAgKyAiICAgIGlkaWVjaTsgdW5kaWNpOyBpZG9kaWNpOyBpdHJlZGljaTsgaXF1YXR0b3JkaWNpOyBpcXVpbmRpY2k7IGlzZWRpY2k7XG4iCisgICAgICAgICsgIiAgICAgICAgaWRpY2lhc2V0dGU7IGlkaWNpb3R0bzsgaWRpY2lhbm5vdmU7XG4iCisgICAgICAgICsgIiAgICAyMDogaXZlbnRpOyBpdmVudD4lJXdpdGgtaT47XG4iCisgICAgICAgICsgIiAgICAzMDogaXRyZW50YTsgaXRyZW50PiUld2l0aC1pPjtcbiIKKyAgICAgICAgKyAiICAgIDQwOiBpcXVhcmFudGE7IGlxdWFyYW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgKyAiICAgIDUwOiBpY2lucXVhbnRhOyBpY2lucXVhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICArICIgICAgNjA6IGlzZXNzYW50YTsgaXNlc3NhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICArICIgICAgNzA6IGlzZXR0YW50YTsgaXNldHRhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICArICIgICAgODA6IG90dGFudGE7IG90dGFudD4lJXdpdGgtYT47XG4iCisgICAgICAgICsgIiAgICA5MDogaW5vdmFudGE7IGlub3ZhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICArICIgICAgMTAwOiBpY2VudG87IGljZW50Wz4lJXdpdGgtbz5dO1xuIgorICAgICAgICArICIgICAgMjAwOiA8JSV3aXRoLWk8Y2VudG87IDwlJXdpdGgtaTxjZW50Wz4lJXdpdGgtbz5dO1xuIgorICAgICAgICArICIgICAgMTAwMDogaW1pbGxlOyBpbWlsbFs+JSV3aXRoLWk+XTtcbiIKKyAgICAgICAgKyAiICAgIDIwMDA6IDwlJXdpdGgtaTxtaWxhOyA8JSV3aXRoLWk8bWlsWz4lJXdpdGgtYT5dO1xuIgorICAgICAgICArICIgICAgMTAwLDAwMDogPSVtYWluPTtcbiIKKyAgICAgICAgKyAiJSV3aXRoLW86XG4iCisgICAgICAgICsgIiAgICBvemVybzsgdW5vOyBvZHVlOyBvdHJlOyBvcXVhdHRybzsgb2NpbnF1ZTsgb3NlaTsgb3NldHRlOyBvdHRvO1xuIgorICAgICAgICArICIgICAgICAgIG9ub3ZlO1xuIgorICAgICAgICArICIgICAgb2RpZWNpOyB1bmRpY2k7IG9kb2RpY2k7IG90cmVkaWNpOyBvcXVhdHRvcmRpY2k7IG9xdWluZGljaTsgb3NlZGljaTtcbiIKKyAgICAgICAgKyAiICAgICAgICBvZGljaWFzZXR0ZTsgb2RpY2lvdHRvOyBvZGljaWFubm92ZTtcbiIKKyAgICAgICAgKyAiICAgIDIwOiBvdmVudGk7IG92ZW50PiUld2l0aC1pPjtcbiIKKyAgICAgICAgKyAiICAgIDMwOiBvdHJlbnRhOyBvdHJlbnQ+JSV3aXRoLWk+O1xuIgorICAgICAgICArICIgICAgNDA6IG9xdWFyYW50YTsgb3F1YXJhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICArICIgICAgNTA6IG9jaW5xdWFudGE7IG9jaW5xdWFudD4lJXdpdGgtYT47XG4iCisgICAgICAgICsgIiAgICA2MDogb3Nlc3NhbnRhOyBvc2Vzc2FudD4lJXdpdGgtYT47XG4iCisgICAgICAgICsgIiAgICA3MDogb3NldHRhbnRhOyBvc2V0dGFudD4lJXdpdGgtYT47XG4iCisgICAgICAgICsgIiAgICA4MDogb3R0YW50YTsgb3R0YW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgKyAiICAgIDkwOiBvbm92YW50YTsgb25vdmFudD4lJXdpdGgtYT47XG4iCisgICAgICAgICsgIiAgICAxMDA6IG9jZW50bzsgb2NlbnRbPiUld2l0aC1vPl07XG4iCisgICAgICAgICsgIiAgICAyMDA6IDwlJXdpdGgtbzxjZW50bzsgPCUld2l0aC1vPGNlbnRbPiUld2l0aC1vPl07XG4iCisgICAgICAgICsgIiAgICAxMDAwOiBvbWlsbGU7IG9taWxsWz4lJXdpdGgtaT5dO1xuIgorICAgICAgICArICIgICAgMjAwMDogPCUld2l0aC1vPG1pbGE7IDwlJXdpdGgtbzxtaWxbPiUld2l0aC1hPl07XG4iCisgICAgICAgICsgIiAgICAxMDAsMDAwOiA9JW1haW49O1xuIjsKKyAgICAvLyBDYW4gc29tZW9uZSBjb25maXJtIHRoYXQgSSBkaWQgdGhlIHZvd2VsLWVsaWRpbmcgdGhpbmcgcmlnaHQ/ICBJJ20KKyAgICAvLyBub3QgMTAwJSBzdXJlIEknbSBkb2luZyBpdCBpbiBhbGwgdGhlIHJpZ2h0IHBsYWNlcywgb3IgY29tcGxldGVseQorICAgIC8vIGNvcnJlY3RseS4gIEFsc28sIEkgZG9uJ3QgaGF2ZSBpbmZvcm1hdGlvbiBmb3IgbmVnYXRpdmVzIGFuZCBkZWNpbWFscywKKyAgICAvLyBhbmQgSSBsYWNrIHdvcmRzIGZyb3IgdmFsdWVzIGZyb20gMSwwMDAsMDAwIG9uIHVwLgorCisgICAgLyoqCisgICAgICogU3BlbGxvdXQgcnVsZXMgZm9yIFN3ZWRpc2guCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgc3dlZGlzaCA9CisgICAgICAgICJub2xsOyBldHQ7IHR2XHUwMGU1OyB0cmU7IGZ5cmE7IGZlbTsgc2V4OyBzam87IFx1MDBlNXR0YTsgbmlvO1xuIgorICAgICAgICArICJ0aW87IGVsdmE7IHRvbHY7IHRyZXR0b247IGZqb3J0b247IGZlbXRvbjsgc2V4dG9uOyBzanV0dG9uOyBhcnRvbjsgbml0dG9uO1xuIgorICAgICAgICArICIyMDogdGp1Z29bPj5dO1xuIgorICAgICAgICArICIzMDogdHJldHRpb1s+Pl07XG4iCisgICAgICAgICsgIjQwOiBmeXJ0aW9bPj5dO1xuIgorICAgICAgICArICI1MDogZmVtdGlvWz4+XTtcbiIKKyAgICAgICAgKyAiNjA6IHNleHRpb1s+Pl07XG4iCisgICAgICAgICsgIjcwOiBzanV0dGlvWz4+XTtcbiIKKyAgICAgICAgKyAiODA6IFx1MDBlNXR0aW9bPj5dO1xuIgorICAgICAgICArICI5MDogbml0dGlvWz4+XTtcbiIKKyAgICAgICAgKyAiMTAwOiBodW5kcmFbPj5dO1xuIgorICAgICAgICArICIyMDA6IDw8aHVuZHJhWz4+XTtcbiIKKyAgICAgICAgKyAiMTAwMDogdHVzZW5bID4+XTtcbiIKKyAgICAgICAgKyAiMjAwMDogPDwgdHVzZW5bID4+XTtcbiIKKyAgICAgICAgKyAiMSwwMDAsMDAwOiBlbiBtaWxqb25bID4+XTtcbiIKKyAgICAgICAgKyAiMiwwMDAsMDAwOiA8PCBtaWxqb25bID4+XTtcbiIKKyAgICAgICAgKyAiMSwwMDAsMDAwLDAwMDogZW4gbWlsamFyZFsgPj5dO1xuIgorICAgICAgICArICIyLDAwMCwwMDAsMDAwOiA8PCBtaWxqYXJkWyA+Pl07XG4iCisgICAgICAgICsgIjEsMDAwLDAwMCwwMDAsMDAwOiBlbiBiaWxqb25bID4+XTtcbiIKKyAgICAgICAgKyAiMiwwMDAsMDAwLDAwMCwwMDA6IDw8IGJpbGpvblsgPj5dO1xuIgorICAgICAgICArICIxLDAwMCwwMDAsMDAwLDAwMCwwMDA6ID0jLCMjMD0iOworICAgIC8vIGNhbiBzb21lb25lIHN1cHBseSBtZSB3aXRoIGluZm9ybWF0aW9uIG9uIG5lZ2F0aXZlcyBhbmQgZGVjaW1hbHM/CisKKyAgICAvKioKKyAgICAgKiBTcGVsbG91dCBydWxlcyBmb3IgRHV0Y2guICBOb3RpY2UgdGhhdCBpbiBEdXRjaCwgYXMgaW4gR2VybWFuLAorICAgICAqIHRoZSBvbmVzIGRpZ2l0IHByZWNlZGVzIHRoZSB0ZW5zIGRpZ2l0LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGR1dGNoID0KKyAgICAgICAgIiAteDogbWluID4+O1xuIgorICAgICAgICArICJ4Lng6IDw8IGtvbW1hID4+O1xuIgorICAgICAgICArICIoemVybz8pOyBlZW47IHR3ZWU7IGRyaWU7IHZpZXI7IHZpamY7IHplczsgemV2ZW47IGFjaHQ7IG5lZ2VuO1xuIgorICAgICAgICArICJ0aWVuOyBlbGY7IHR3YWFsZjsgZGVydGllbjsgdmVlcnRpZW47IHZpamZ0aWVuOyB6ZXN0aWVuO1xuIgorICAgICAgICArICJ6ZXZlbnRpZW47IGFjaHRpZW47IG5lZ2VudGllbjtcbiIKKyAgICAgICAgKyAiMjA6IFs+PiBlbiBddHdpbnRpZztcbiIKKyAgICAgICAgKyAiMzA6IFs+PiBlbiBdZGVydGlnO1xuIgorICAgICAgICArICI0MDogWz4+IGVuIF12ZWVydGlnO1xuIgorICAgICAgICArICI1MDogWz4+IGVuIF12aWpmdGlnO1xuIgorICAgICAgICArICI2MDogWz4+IGVuIF16ZXN0aWc7XG4iCisgICAgICAgICsgIjcwOiBbPj4gZW4gXXpldmVudGlnO1xuIgorICAgICAgICArICI4MDogWz4+IGVuIF10YWNodGlnO1xuIgorICAgICAgICArICI5MDogWz4+IGVuIF1uZWdlbnRpZztcbiIKKyAgICAgICAgKyAiMTAwOiA8PCBob25kZXJkWyA+Pl07XG4iCisgICAgICAgICsgIjEwMDA6IDw8IGR1aXplbmRbID4+XTtcbiIKKyAgICAgICAgKyAiMSwwMDAsMDAwOiA8PCBtaWxqb2VuWyA+Pl07XG4iCisgICAgICAgICsgIjEsMDAwLDAwMCwwMDA6IDw8IGJpbGpvZW5bID4+XTtcbiIKKyAgICAgICAgKyAiMSwwMDAsMDAwLDAwMCwwMDA6ID0jLCMjMD0iOworCisgICAgLyoqCisgICAgICogU3BlbGxvdXQgcnVsZXMgZm9yIEphcGFuZXNlLiAgSW4gSmFwYW5lc2UsIHRoZXJlIHJlYWxseSBpc24ndCBhbnkKKyAgICAgKiBkaXN0aW5jdGlvbiBiZXR3ZWVuIGEgbnVtYmVyIHdyaXR0ZW4gb3V0IGluIGRpZ2l0cyBhbmQgYSBudW1iZXIKKyAgICAgKiB3cml0dGVuIG91dCBpbiB3b3JkczogdGhlIGlkZW9ncmFwaGljIGNoYXJhY3RlcnMgYXJlIGJvdGggZGlnaXRzCisgICAgICogYW5kIHdvcmRzLiAgVGhpcyBydWxlIHNldCBwcm92aWRlcyB0d28gdmFyaWFudHM6ICAldHJhZGl0aW9uYWwKKyAgICAgKiB1c2VzIHRoZSB0cmFkaXRpb25hbCBDSksgbnVtZXJhbHMgKHdoaWNoIGFyZSBhbHNvIHVzZWQgaW4gQ2hpbmEKKyAgICAgKiBhbmQgS29yZWEpLiAgJWZpbmFuY2lhbCB1c2VzIGFsdGVybmF0ZSBpZGVvZ3JhcGhzIGZvciBtYW55IG51bWJlcnMKKyAgICAgKiB0aGF0IGFyZSBoYXJkZXIgdG8gYWx0ZXIgdGhhbiB0aGUgdHJhZGl0aW9uYWwgbnVtZXJhbHMgKG9uZSBjb3VsZAorICAgICAqIGZhaXJseSBlYXNpbHkgY2hhbmdlIGEgb25lIHRvCisgICAgICogYSB0aHJlZSBqdXN0IGJ5IGFkZGluZyB0d28gc3Ryb2tlcywgZm9yIGV4YW1wbGUpLiAgVGhpcyBpcyBhbHNvIGRvbmUgaW4KKyAgICAgKiB0aGUgb3RoZXIgY291bnRyaWVzIHVzaW5nIENoaW5lc2UgaWRvZ3JhcGhzLCBidXQgZGlmZmVyZW50IGlkZW9ncmFwaHMKKyAgICAgKiBhcmUgdXNlZCBpbiB0aG9zZSBwbGFjZXMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgamFwYW5lc2UgPQorICAgICAgICAiJWZpbmFuY2lhbDpcbiIKKyAgICAgICAgKyAiICAgIFx1OTZmNjsgXHU1OGYxOyBcdTVmMTA7IFx1NTNjMjsgXHU1NmRiOyBcdTRmMGQ7IFx1NTE2ZDsgXHU0ZTAzOyBcdTUxNmI7IFx1NGU1ZDtcbiIKKyAgICAgICAgKyAiICAgIFx1NjJmZVs+Pl07XG4iCisgICAgICAgICsgIiAgICAyMDogPDxcdTYyZmVbPj5dO1xuIgorICAgICAgICArICIgICAgMTAwOiA8PFx1NzY3ZVs+Pl07XG4iCisgICAgICAgICsgIiAgICAxMDAwOiA8PFx1NTM0M1s+Pl07XG4iCisgICAgICAgICsgIiAgICAxMCwwMDA6IDw8XHU0ZTA3Wz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwMCwwMDAsMDAwOiA8PFx1NTEwNFs+Pl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMDogPDxcdTUxNDZbPj5dO1xuIgorICAgICAgICArICIgICAgMTAsMDAwLDAwMCwwMDAsMDAwLDAwMDogPSMsIyMwPTtcbiIKKyAgICAgICAgKyAiJXRyYWRpdGlvbmFsOlxuIgorICAgICAgICArICIgICAgXHU5NmY2OyBcdTRlMDA7IFx1NGU4YzsgXHU0ZTA5OyBcdTU2ZGI7IFx1NGU5NDsgXHU1MTZkOyBcdTRlMDM7IFx1NTE2YjsgXHU0ZTVkO1xuIgorICAgICAgICArICIgICAgXHU1MzQxWz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDIwOiA8PFx1NTM0MVs+Pl07XG4iCisgICAgICAgICsgIiAgICAxMDA6IDw8XHU3NjdlWz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwMDA6IDw8XHU1MzQzWz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwLDAwMDogPDxcdTRlMDdbPj5dO1xuIgorICAgICAgICArICIgICAgMTAwLDAwMCwwMDA6IDw8XHU1MTA0Wz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDAsMDAwOiA8PFx1NTE0Nls+Pl07XG4iCisgICAgICAgICsgIiAgICAxMCwwMDAsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9OyI7CisgICAgLy8gQ2FuIHNvbWVvbmUgc3VwcGx5IG1lIHdpdGggdGhlIHJpZ2h0IGZyYXVkLXByb29mIGlkZW9ncmFwaHMgZm9yCisgICAgLy8gU2ltcGxpZmllZCBhbmQgVHJhZGl0aW9uYWwgQ2hpbmVzZSwgYW5kIGZvciBLb3JlYW4/ICBDYW4gc29tZW9uZQorICAgIC8vIHN1cHBseSBtZSB3aXRoIGluZm9ybWF0aW9uIG9uIG5lZ2F0aXZlcyBhbmQgZGVjaW1hbHM/CisKKyAgICAvKioKKyAgICAgKiBTcGVsbG91dCBydWxlcyBmb3IgR3JlZWsuICBBZ2FpbiBpbiBHcmVlayB3ZSBoYXZlIHRvIHN1cHBseSB0aGUgd29yZHMKKyAgICAgKiBmb3IgdGhlIG11bHRpcGxlcyBvZiAxMDAgYmVjYXVzZSB0aGV5IGNhbid0IGJlIGRlcml2ZWQgYWxnb3JpdGhtaWNhbGx5LgorICAgICAqIEFsc28sIHRoZSB0ZW5zIGRnaXQgY2hhbmdlcyBmb3JtIHdoZW4gZm9sbG93ZWQgYnkgYSBvbmVzIGRpZ2l0OiBhbgorICAgICAqIGFjY2VudCBtYXJrIGRpc2FwcGVhcnMgZnJvbSB0aGUgdGVucyBkaWdpdCBhbmQgbW92ZXMgdG8gdGhlIG9uZXMgZGlnaXQuCisgICAgICogVGhlcmVmb3JlLCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBbXSBub3RhdGlvbiwgd2UgYWN0dWFsbHkgaGF2ZSB0byB1c2UKKyAgICAgKiB0d28gc2VwYXJhdGUgcnVsZXMgZm9yIGVhY2ggbXVsdGlwbGUgb2YgMTAgdG8gc2hvdyB0aGUgdHdvIGZvcm1zIG9mCisgICAgICogdGhlIHdvcmQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZ3JlZWsgPQorICAgICAgICAiemVybyAoaW5jb21wbGV0ZSBkYXRhKTsgXHUwM2FkXHUwM2JkXHUwM2IxOyBcdTAzYjRcdTAzY2RcdTAzYmY7IFx1MDNiNFx1MDNjMVx1MDNhZlx1MDNiMTsgIgorICAgICAgICArICJcdTAzYzRcdTAzYWRcdTAzYzNcdTAzYzNcdTAzYjVcdTAzYzFcdTAzYjE7IFx1MDNjMFx1MDNhZFx1MDNiZFx1MDNjNFx1MDNiNTsgIgorICAgICAgICArICJcdTAzYWRcdTAzYmVcdTAzYjk7IFx1MDNiNVx1MDNjMFx1MDNjNFx1MDNhYzsgXHUwM2JmXHUwM2JhXHUwM2M0XHUwM2NlOyAiCisgICAgICAgICsgIlx1MDNiNVx1MDNiZFx1MDNiZFx1MDNhZFx1MDNiMTtcbiIKKyAgICAgICAgKyAiMTA6IFx1MDNiNFx1MDNhZFx1MDNiYVx1MDNiMTsgIgorICAgICAgICArICJcdTAzYWRcdTAzYmRcdTAzYjRcdTAzYjVcdTAzYmFcdTAzYjE7IFx1MDNiNFx1MDNjZVx1MDNiNFx1MDNiNVx1MDNiYVx1MDNiMTsgIgorICAgICAgICArICJcdTAzYjRcdTAzYjVcdTAzYmFcdTAzYjE+PjtcbiIKKyAgICAgICAgKyAiMjA6IFx1MDNiNVx1MDNhZlx1MDNiYVx1MDNiZlx1MDNjM1x1MDNiOTsgXHUwM2I1XHUwM2I5XHUwM2JhXHUwM2JmXHUwM2MzXHUwM2I5Pj47XG4iCisgICAgICAgICsgIjMwOiBcdTAzYzRcdTAzYzFcdTAzYjlcdTAzYWNcdTAzYmRcdTAzYzRcdTAzYjE7IFx1MDNjNFx1MDNjMVx1MDNiOVx1MDNiMVx1MDNiZFx1MDNjNFx1MDNiMT4+O1xuIgorICAgICAgICArICI0MDogXHUwM2MzXHUwM2IxXHUwM2MxXHUwM2FjXHUwM2JkXHUwM2M0XHUwM2IxOyBcdTAzYzNcdTAzYjFcdTAzYzFcdTAzYjFcdTAzYmRcdTAzYzRcdTAzYjE+PjtcbiIKKyAgICAgICAgKyAiNTA6IFx1MDNjMFx1MDNiNVx1MDNiZFx1MDNhZVx1MDNiZFx1MDNjNFx1MDNiMTsgXHUwM2MwXHUwM2I1XHUwM2JkXHUwM2I3XHUwM2JkXHUwM2M0XHUwM2IxPj47XG4iCisgICAgICAgICsgIjYwOiBcdTAzYjVcdTAzYmVcdTAzYWVcdTAzYmRcdTAzYzRcdTAzYjE7IFx1MDNiNVx1MDNiZVx1MDNiN1x1MDNiZFx1MDNjNFx1MDNiMT4+O1xuIgorICAgICAgICArICI3MDogXHUwM2I1XHUwM2IyXHUwM2I0XHUwM2JmXHUwM2JjXHUwM2FlXHUwM2JkXHUwM2M0XHUwM2IxOyAiCisgICAgICAgICsgIlx1MDNiNVx1MDNiMlx1MDNiNFx1MDNiZlx1MDNiY1x1MDNiN1x1MDNiZFx1MDNjNFx1MDNiMT4+O1xuIgorICAgICAgICArICI4MDogXHUwM2JmXHUwM2IzXHUwM2I0XHUwM2NjXHUwM2JkXHUwM2M0XHUwM2IxOyBcdTAzYmZcdTAzYjNcdTAzYjRcdTAzYmZcdTAzYmRcdTAzYzRcdTAzYjE+PjtcbiIKKyAgICAgICAgKyAiOTA6IFx1MDNiNVx1MDNiZFx1MDNiZFx1MDNiNVx1MDNiZFx1MDNhZVx1MDNiZFx1MDNjNFx1MDNiMTsgIgorICAgICAgICArICJcdTAzYjVcdTAzYmRcdTAzYmRcdTAzYjVcdTAzYmRcdTAzYjdcdTAzYmRcdTAzYzRcdTAzYjE+PjtcbiIKKyAgICAgICAgKyAiMTAwOiBcdTAzYjVcdTAzYmFcdTAzYjFcdTAzYzRcdTAzY2NbXHUwM2JkID4+XTtcbiIKKyAgICAgICAgKyAiMjAwOiBcdTAzYjRcdTAzYjlcdTAzYjFcdTAzYmFcdTAzY2NcdTAzYzNcdTAzYjlcdTAzYjFbID4+XTtcbiIKKyAgICAgICAgKyAiMzAwOiBcdTAzYzRcdTAzYzFcdTAzYjlcdTAzYjFcdTAzYmFcdTAzY2NcdTAzYzNcdTAzYjlcdTAzYjFbID4+XTtcbiIKKyAgICAgICAgKyAiNDAwOiBcdTAzYzRcdTAzYjVcdTAzYzRcdTAzYzFcdTAzYjFcdTAzYmFcdTAzY2NcdTAzYzNcdTAzYjlcdTAzYjFbID4+XTtcbiIKKyAgICAgICAgKyAiNTAwOiBcdTAzYzBcdTAzYjVcdTAzYmRcdTAzYzRcdTAzYjFcdTAzYmFcdTAzY2NcdTAzYzNcdTAzYjlcdTAzYjFbID4+XTtcbiIKKyAgICAgICAgKyAiNjAwOiBcdTAzYjVcdTAzYmVcdTAzYjFcdTAzYmFcdTAzY2NcdTAzYzNcdTAzYjlcdTAzYjFbID4+XTtcbiIKKyAgICAgICAgKyAiNzAwOiBcdTAzYjVcdTAzYzBcdTAzYzRcdTAzYjFcdTAzYmFcdTAzY2NcdTAzYzNcdTAzYjlcdTAzYjFbID4+XTtcbiIKKyAgICAgICAgKyAiODAwOiBcdTAzYmZcdTAzYmFcdTAzYzRcdTAzYjFcdTAzYmFcdTAzY2NcdTAzYzNcdTAzYjlcdTAzYjFbID4+XTtcbiIKKyAgICAgICAgKyAiOTAwOiBcdTAzYjVcdTAzYmRcdTAzYmRcdTAzYjlcdTAzYjFcdTAzYmFcdTAzY2NcdTAzYzNcdTAzYjlcdTAzYjFbID4+XTtcbiIKKyAgICAgICAgKyAiMTAwMDogXHUwM2M3XHUwM2FmXHUwM2JiXHUwM2I5XHUwM2IxWyA+Pl07XG4iCisgICAgICAgICsgIjIwMDA6IDw8IFx1MDNjN1x1MDNhZlx1MDNiYlx1MDNiOVx1MDNiMVsgPj5dO1xuIgorICAgICAgICArICIxLDAwMCwwMDA6IDw8IFx1MDNiNVx1MDNiYVx1MDNiMVx1MDNjNFx1MDNiZlx1MDNiY1x1MDNiY1x1MDNiOVx1MDNjY1x1MDNjMVx1MDNiOVx1MDNiZlsgPj5dO1xuIgorICAgICAgICArICIxLDAwMCwwMDAsMDAwOiA8PCBcdTAzYjRcdTAzYjlcdTAzYzNcdTAzYjVcdTAzYmFcdTAzYjFcdTAzYzRcdTAzYmZcdTAzYmNcdTAzYmNcdTAzYjlcdTAzY2NcdTAzYzFcdTAzYjlcdTAzYmZbID4+XTtcbiIKKyAgICAgICAgKyAiMSwwMDAsMDAwLDAwMCwwMDA6ID0jLCMjMD0iOworICAgIC8vIENhbiBzb21lb25lIHN1cHBseSBtZSB3aXRoIGluZm9ybWF0aW9uIG9uIG5lZ2F0aXZlcyBhbmQgZGVjaW1hbHM/CisgICAgLy8gSSdtIGFsc28gbWlzc2luZyB0aGUgd29yZCBmb3IgemVyby4gIENhbiBzb21lb25lIGNsdWUgbWUgaW4/CisKKyAgICAvKioKKyAgICAgKiBTcGVsbG91dCBydWxlcyBmb3IgUnVzc2lhbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBydXNzaWFuID0KKyAgICAgICAgIlx1MDQzZFx1MDQzZVx1MDQzYlx1MDQ0YzsgXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkOyBcdTA0MzRcdTA0MzJcdTA0MzA7IFx1MDQ0Mlx1MDQ0MFx1MDQzODsgIgorICAgICAgICArICJcdTA0NDdcdTA0MzVcdTA0NDJcdTA0NGJcdTA0NDBcdTA0MzU7IFx1MDQzZlx1MDQ0Zlx1MDQ0MjsgXHUwNDQ4XHUwNDM1XHUwNDQxXHUwNDQyOyAiCisgICAgICAgICsgIlx1MDQ0MVx1MDQzNVx1MDQzY1x1MDQ0YzsgXHUwNDMyXHUwNDNlXHUwNDQxXHUwNDM1XHUwNDNjXHUwNDRjOyBcdTA0MzRcdTA0MzVcdTA0MzJcdTA0NGZcdTA0NDI7XG4iCisgICAgICAgICsgIjEwOiBcdTA0MzRcdTA0MzVcdTA0NDFcdTA0NGZcdTA0NDI7ICIKKyAgICAgICAgKyAiXHUwNDNlXHUwNDM0XHUwNDM4XHUwNDNkXHUwNDNkXHUwNDMwXHUwNDM0XHUwNDQ2XHUwNDMwXHUwNDQyXHUwNDRjO1xuIgorICAgICAgICArICJcdTA0MzRcdTA0MzJcdTA0MzVcdTA0M2RcdTA0M2RcdTA0MzBcdTA0MzRcdTA0NDZcdTA0MzBcdTA0NDJcdTA0NGM7ICIKKyAgICAgICAgKyAiXHUwNDQyXHUwNDQwXHUwNDM4XHUwNDNkXHUwNDMwXHUwNDM0XHUwNDQ2XHUwNDMwXHUwNDQyXHUwNDRjOyAiCisgICAgICAgICsgIlx1MDQ0N1x1MDQzNVx1MDQ0Mlx1MDQ0Ylx1MDQ0MFx1MDQzZFx1MDQzMFx1MDQzNFx1MDQ0Nlx1MDQzMFx1MDQ0Mlx1MDQ0YztcbiIKKyAgICAgICAgKyAiMTU6IFx1MDQzZlx1MDQ0Zlx1MDQ0Mlx1MDQzZFx1MDQzMFx1MDQzNFx1MDQ0Nlx1MDQzMFx1MDQ0Mlx1MDQ0YzsgIgorICAgICAgICArICJcdTA0NDhcdTA0MzVcdTA0NDFcdTA0NDJcdTA0M2RcdTA0MzBcdTA0MzRcdTA0NDZcdTA0MzBcdTA0NDJcdTA0NGM7ICIKKyAgICAgICAgKyAiXHUwNDQxXHUwNDM1XHUwNDNjXHUwNDNkXHUwNDMwXHUwNDM0XHUwNDQ2XHUwNDMwXHUwNDQyXHUwNDRjOyAiCisgICAgICAgICsgIlx1MDQzMlx1MDQzZVx1MDQ0MVx1MDQzNVx1MDQzY1x1MDQzZFx1MDQzMFx1MDQzNFx1MDQ0Nlx1MDQzMFx1MDQ0Mlx1MDQ0YzsgIgorICAgICAgICArICJcdTA0MzRcdTA0MzVcdTA0MzJcdTA0NGZcdTA0NDJcdTA0M2RcdTA0MzBcdTA0MzRcdTA0NDZcdTA0MzBcdTA0NDJcdTA0NGM7XG4iCisgICAgICAgICsgIjIwOiBcdTA0MzRcdTA0MzJcdTA0MzBcdTA0MzRcdTA0NDZcdTA0MzBcdTA0NDJcdTA0NGNbID4+XTtcbiIKKyAgICAgICAgKyAiMzA6IFx1MDQ0Mlx1MDQ0MFx1MDQzYlx1MDQzNFx1MDQ0Nlx1MDQzMFx1MDQ0Mlx1MDQ0Y1sgPj5dO1xuIgorICAgICAgICArICI0MDogXHUwNDQxXHUwNDNlXHUwNDQwXHUwNDNlXHUwNDNhWyA+Pl07XG4iCisgICAgICAgICsgIjUwOiBcdTA0M2ZcdTA0NGZcdTA0NDJcdTA0NGNcdTA0MzRcdTA0MzVcdTA0NDFcdTA0NGZcdTA0NDJbID4+XTtcbiIKKyAgICAgICAgKyAiNjA6IFx1MDQ0OFx1MDQzNVx1MDQ0MVx1MDQ0Mlx1MDQ0Y1x1MDQzNFx1MDQzNVx1MDQ0MVx1MDQ0Zlx1MDQ0MlsgPj5dO1xuIgorICAgICAgICArICI3MDogXHUwNDQxXHUwNDM1XHUwNDNjXHUwNDRjXHUwNDM0XHUwNDM1XHUwNDQxXHUwNDRmXHUwNDQyWyA+Pl07XG4iCisgICAgICAgICsgIjgwOiBcdTA0MzJcdTA0M2VcdTA0NDFcdTA0MzVcdTA0M2NcdTA0NGNcdTA0MzRcdTA0MzVcdTA0NDFcdTA0NGZcdTA0NDJbID4+XTtcbiIKKyAgICAgICAgKyAiOTA6IFx1MDQzNFx1MDQzNVx1MDQzMlx1MDQ0Zlx1MDQzZFx1MDQzZVx1MDQ0MVx1MDQ0Mlx1MDQzZVsgPj5dO1xuIgorICAgICAgICArICIxMDA6IFx1MDQ0MVx1MDQ0Mlx1MDQzZVsgPj5dO1xuIgorICAgICAgICArICIyMDA6IDw8IFx1MDQ0MVx1MDQ0Mlx1MDQzZVsgPj5dO1xuIgorICAgICAgICArICIxMDAwOiBcdTA0NDJcdTA0NGJcdTA0NDFcdTA0NGZcdTA0NDdcdTA0MzBbID4+XTtcbiIKKyAgICAgICAgKyAiMjAwMDogPDwgXHUwNDQyXHUwNDRiXHUwNDQxXHUwNDRmXHUwNDQ3XHUwNDMwWyA+Pl07XG4iCisgICAgICAgICsgIjEsMDAwLDAwMDogXHUwNDNjXHUwNDM4XHUwNDNiXHUwNDNiXHUwNDM4XHUwNDNlXHUwNDNkWyA+Pl07XG4iCisgICAgICAgICsgIjIsMDAwLDAwMDogPDwgXHUwNDNjXHUwNDM4XHUwNDNiXHUwNDNiXHUwNDM4XHUwNDNlXHUwNDNkWyA+Pl07XG4iCisgICAgICAgICsgIjEsMDAwLDAwMCwwMDA6ID0jLCMjMD07IjsKKyAgICAvLyBDYW4gc29tZW9uZSBzdXBwbHkgbWUgd2l0aCBpbmZvcm1hdGlvbiBvbiBuZWdhdGl2ZXMgYW5kIGRlY2ltYWxzPworICAgIC8vIEhvdyBhYm91dCB3b3JkcyBmb3IgYmlsbGlvbnMgYW5kIHRyaWxsaW9ucz8KKworICAgIC8qKgorICAgICAqIFNwZWxsb3V0IHJ1bGVzIGZvciBIZWJyZXcuICBIZWJyZXcgYWN0dWFsbHkgaGFzIGluZmxlY3RlZCBmb3JtcyBmb3IKKyAgICAgKiBtb3N0IG9mIHRoZSBsb3dlci1vcmRlciBudW1iZXJzLiAgVGhlIG1hc2N1bGluZSBmb3JtcyBhcmUgc2hvd24KKyAgICAgKiBoZXJlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGhlYnJldyA9CisgICAgICAgICJ6ZXJvIChpbmNvbXBsZXRlIGRhdGEpOyBcdTA1ZDBcdTA1ZDRcdTA1ZDM7IFx1MDVlOVx1MDVkMlx1MDVkOVx1MDVkOVx1MDVkZDsgXHUwNWU5XHUwNWRjXHUwNWQ1XHUwNWU5XHUwNWQ0O1xuIgorICAgICAgICArICI0OiBcdTA1ZDBcdTA1ZDNcdTA1ZDFcdTA1ZTZcdTA1ZDQ7IFx1MDVkN1x1MDVkMlx1MDVkNVx1MDVkOVx1MDVlOVx1MDVkNDsgXHUwNWU5XHUwNWU5XHUwNWQ0O1xuIgorICAgICAgICArICI3OiBcdTA1ZTlcdTA1ZDFcdTA1ZTZcdTA1ZDQ7IFx1MDVlOVx1MDVkZVx1MDVkNVx1MDVkMlx1MDVkNDsgXHUwNWVhXHUwNWU5XHUwNWU2XHUwNWQ0O1xuIgorICAgICAgICArICIxMDogXHUwNWU2XHUwNWU5XHUwNWQzXHUwNWQ0WyA+Pl07XG4iCisgICAgICAgICsgIjIwOiBcdTA1ZTZcdTA1ZTlcdTA1ZDNcdTA1ZDlcdTA1ZGRbID4+XTtcbiIKKyAgICAgICAgKyAiMzA6IFx1MDVlOVx1MDVkY1x1MDVkNVx1MDVlOVx1MDVkOVx1MDVkZFsgPj5dO1xuIgorICAgICAgICArICI0MDogXHUwNWQwXHUwNWQzXHUwNWQxXHUwNWU2XHUwNWQ5XHUwNWRkWyA+Pl07XG4iCisgICAgICAgICsgIjUwOiBcdTA1ZDdcdTA1ZGVcdTA1ZDlcdTA1ZTlcdTA1ZDlcdTA1ZGRbID4+XTtcbiIKKyAgICAgICAgKyAiNjA6IFx1MDVlOVx1MDVlOVx1MDVkOVx1MDVkZFsgPj5dO1xuIgorICAgICAgICArICI3MDogXHUwNWU5XHUwNWQxXHUwNWU2XHUwNWQ5XHUwNWRkWyA+Pl07XG4iCisgICAgICAgICsgIjgwOiBcdTA1ZTlcdTA1ZGVcdTA1ZDVcdTA1ZDJcdTA1ZDlcdTA1ZGRbID4+XTtcbiIKKyAgICAgICAgKyAiOTA6IFx1MDVlYVx1MDVlOVx1MDVlNlx1MDVkOVx1MDVkZFsgPj5dO1xuIgorICAgICAgICArICIxMDA6IFx1MDVkZVx1MDVkMFx1MDVkNFsgPj5dO1xuIgorICAgICAgICArICIyMDA6IDw8IFx1MDVkZVx1MDVkMFx1MDVkNFsgPj5dO1xuIgorICAgICAgICArICIxMDAwOiBcdTA1ZDBcdTA1ZGNcdTA1ZTNbID4+XTtcbiIKKyAgICAgICAgKyAiMjAwMDogPDwgXHUwNWQwXHUwNWRjXHUwNWUzWyA+Pl07XG4iCisgICAgICAgICsgIjEsMDAwLDAwMDogPSMsIyMwPSAoaW5jb21wbGV0ZSBkYXRhKTsiOworICAgIC8vIFRoaXMgZGF0YSBpcyB3b2VmdWxseSBpbmNvbXBsZXRlLiAgQ2FuIHNvbWVvbmUgZmlsbCBtZSBpbiBvbiB0aGUKKyAgICAvLyB2YXJpb3VzIGluZmxlY3RlZCBmb3JtcyBvZiB0aGUgbnVtYmVycywgd2hpY2ggc2VlbSB0byBiZSBuZWNlc3NhcnkKKyAgICAvLyB0byBkbyBIZWJyZXcgY29ycmVjdGx5PyAgQ2FuIHNvbW9uZSBzdXBwbHkgbWUgd2l0aCBkYXRhIGZvciB2YWx1ZXMKKyAgICAvLyBmcm9tIDEsMDAwLDAwMCBvbiB1cD8gIFdoYXQgYWJvdXQgdGhlIHdvcmQgZm9yIHplcm8/ICBXaGF0IGFib3V0CisgICAgLy8gaW5mb3JtYXRpb24gb24gbmVnYXRpdmVzIGFuZCBkZWNpbWFscz8KKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gU2ltcGxlIGV4YW1wbGVzCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8qKgorICAgICAqIFRoaXMgcnVsZSBzZXQgYWRkcyBhbiBFbmdsaXNoIG9yZGluYWwgYWJicmV2aWF0aW9uIHRvIHRoZSBlbmQgb2YgYQorICAgICAqIG51bWJlci4gIEZvciBleGFtcGxlLCAyIGlzIGZvcm1hdHRlZCBhcyAiMm5kIi4gIFBhcnNpbmcgZG9lc24ndCB3b3JrIHdpdGgKKyAgICAgKiB0aGlzIHJ1bGUgc2V0LiAgVG8gcGFyc2UsIHVzZSBEZWNpbWFsRm9ybWF0IG9uIHRoZSBudW1lcmFsLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIG9yZGluYWwgPQorICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IGZvcm1hdHMgdGhlIG51bWVyYWwgYW5kIGNhbGxzICUlYWJicmV2IHRvCisgICAgICAgIC8vIHN1cHBseSB0aGUgYWJicmV2aWF0aW9uCisgICAgICAgICIlbWFpbjpcbiIKKyAgICAgICAgKyAiICAgID0jLCMjMD09JSVhYmJyZXY9O1xuIgorICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IHN1cHBsaWVzIHRoZSBhYmJyZXZpYXRpb24KKyAgICAgICAgKyAiJSVhYmJyZXY6XG4iCisgICAgICAgICAgICAgICAvLyB0aGUgYWJicmV2aWF0aW9ucy4gIEV2ZXJ5dGhpbmcgZnJvbSA0IHRvIDE5IGVuZHMgaW4gInRoIgorICAgICAgICArICIgICAgdGg7IHN0OyBuZDsgcmQ7IHRoO1xuIgorICAgICAgICAgICAgICAgLy8gYXQgMjAsIHdlIGJlZ2luIHJlcGVhdGluZyB0aGUgY3ljbGUgZXZlcnkgMTAgKDEzIGlzICIxM3RoIiwKKyAgICAgICAgICAgICAgIC8vIGJ1dCAyMyBhbmQgMzMgYXJlICIyM3JkIiBhbmQgIjMzcmQiKSAgV2UgZG8gdGhpcyBieQorICAgICAgICAgICAgICAgLy8gaWdub3JpbmcgYWxsIGJ1ZyB0aGUgb25lcyBkaWdpdCBpbiBzZWxlY3RpbmcgdGhlIGFiYnJldmlhdGlvbgorICAgICAgICArICIgICAgMjA6ID4+O1xuIgorICAgICAgICAgICAgICAgLy8gYXQgMTAwLCB3ZSByZXBlYXQgdGhlIHdob2xlIGN5Y2xlIGJ5IGNvbnNpZGVyaW5nIG9ubHkgdGhlCisgICAgICAgICAgICAgICAvLyB0ZW5zIGFuZCBvbmVzIGRpZ2l0cyBpbiBwaWNraW5nIGFuIGFiYnJldmlhdGlvbgorICAgICAgICArICIgICAgMTAwOiA+PjtcbiI7CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGlzIGEgc2ltcGxlIG1lc3NhZ2UtZm9ybWF0dGluZyBleGFtcGxlLiAgTm9ybWFsbHkgb25lIHdvdWxkCisgICAgICogdXNlIENob2ljZUZvcm1hdCBhbmQgTWVzc2FnZUZvcm1hdCB0byBkbyBzb21ldGhpbmcgdGhpcyBzaW1wbGUsCisgICAgICogYnV0IHRoaXMgc2hvd3MgaXQgY291bGQgYmUgZG9uZSB3aXRoIFJ1bGVCYXNlZE51bWJlckZvcm1hdCB0b28uCisgICAgICogQSBtZXNzYWdlLWZvcm1hdHRpbmcgZXhhbXBsZSB0aGF0IG1pZ2h0IHdvcmsgYmV0dGVyIHdpdGgKKyAgICAgKiBSdWxlQmFzZWROdW1iZXJGb3JtYXQgYXBwZWFycyBsYXRlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBtZXNzYWdlMSA9CisgICAgICAgIC8vIHRoaXMgcnVsZSBzdXJyb3VuZHMgd2hhdGV2ZXIgdGhlIG90aGVyIHJ1bGVzIHByb2R1Y2Ugd2l0aCB0aGUKKyAgICAgICAgLy8gcmVzdCBvZiB0aGUgc2VudGVuY2UKKyAgICAgICAgInguMDogVGhlIHNlYXJjaCBmb3VuZCA8PC47XG4iCisgICAgICAgIC8vIHVzZSB3b3JkcyBmb3IgdmFsdWVzIGJlbG93IDEwIChhbmQgY2hhbmdlIHRvICJmaWxlIiBmb3IgMSkKKyAgICAgICAgKyAibm8gZmlsZXM7IG9uZSBmaWxlOyB0d28gZmlsZXM7IHRocmVlIGZpbGVzOyBmb3VyIGZpbGVzOyBmaXZlIGZpbGVzO1xuIgorICAgICAgICArICIgICAgc2l4IGZpbGVzOyBzZXZlbiBmaWxlczsgZWlnaHQgZmlsZXM7IG5pbmUgZmlsZXM7XG4iCisgICAgICAgIC8vIHVzZSBudW1lcmFscyBmb3IgdmFsdWVzIGhpZ2hlciB0aGFuIDEwCisgICAgICAgICsgIj0jLCMjMD0gZmlsZXM7IjsKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gRnJhY3Rpb24gaGFuZGxpbmcKKyAgICAvLworICAgIC8vIFRoZSBuZXh0IGZldyBleGFtcGxlcyBzaG93IGhvdyBSdWxlQmFzZWROdW1iZXJGb3JtYXQgY2FuIGJlIHVzZWQgZm9yCisgICAgLy8gbW9yZSBmbGV4aWJsZSBoYW5kbGluZyBvZiBmcmFjdGlvbnMKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgLyoqCisgICAgICogVGhpcyBleGFtcGxlIGZvcm1hdHMgYSBudW1iZXIgaW4gb25lIG9mIHRoZSB0d28gc3R5bGVzIG9mdGVuIHVzZWQKKyAgICAgKiBvbiBjaGVja3MuICAlZG9sbGFycy1hbmQtaHVuZHJlZHRocyBmb3JtYXRzIGNlbnRzIGFzIGh1bmRyZWR0aHMgb2YKKyAgICAgKiBhIGRvbGxhciAoMjMuNDAgY29tZXMgb3V0IGFzICJ0d2VudHktdGhyZWUgYW5kIDQwLzEwMCBkb2xsYXJzIikuCisgICAgICogJWRvbGxhcnMtYW5kLWNlbnRzIGZvcm1hdHMgaW4gZG9sbGFycyBhbmQgY2VudHMgKDIzLjQwIGNvbWVzIG91dCBhcworICAgICAqICJ0d2VudHktdGhyZWUgZG9sbGFycyBhbmQgZm9ydHkgY2VudHMiKQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGRvbGxhcnNBbmRDZW50cyA9CisgICAgICAgIC8vIHRoaXMgcnVsZSBzZXQgZm9ybWF0cyBudW1iZXJzIGFzIGRvbGxhcnMgYW5kIGNlbnRzCisgICAgICAgICIlZG9sbGFycy1hbmQtY2VudHM6XG4iCisgICAgICAgICAgICAgICAvLyBpZiB0aGUgdmFsdWUgaXMgMSBvciBtb3JlLCBwdXQgInh4IGRvbGxhcnMgYW5kIHl5IGNlbnRzIi4KKyAgICAgICAgICAgICAgIC8vIHRoZSAiYW5kIHkgY2VudHMiIHBhcnQgaXMgc3VwcHJlc3NlZCBpZiB0aGUgdmFsdWUgaXMgYW4KKyAgICAgICAgICAgICAgIC8vIGV2ZW4gbnVtYmVyIG9mIGRvbGxhcnMKKyAgICAgICAgKyAiICAgIHguMDogPDwgW2FuZCA+JSVjZW50cz5dO1xuIgorICAgICAgICAgICAgICAgLy8gaWYgdGhlIHZhbHVlIGlzIGJldHdlZW4gMCBhbmQgMSwgcHV0ICJ4eCBjZW50cyIKKyAgICAgICAgKyAiICAgIDAueDogPiUlY2VudHM+O1xuIgorICAgICAgICAgICAgICAgLy8gdGhlc2UgdGhyZWUgcnVsZXMgdGFrZSBjYXJlIG9mIHRoZSBzaW5ndWxhciBhbmQgcGx1cmFsCisgICAgICAgICAgICAgICAvLyBmb3JtcyBvZiAiZG9sbGFyIiBhbmQgdXNlICUlbWFpbiB0byBmb3JtYXQgdGhlIG51bWJlcgorICAgICAgICArICIgICAgMDogemVybyBkb2xsYXJzOyBvbmUgZG9sbGFyOyA9JSVtYWluPSBkb2xsYXJzO1xuIgorICAgICAgICAvLyB0aGVzZSBhcmUgdGhlIHJlZ3VsYXIgVS5TLiBFbmdsaXNoIG51bWJlciBzcGVsbG91dCBydWxlcworICAgICAgICArICIlJW1haW46XG4iCisgICAgICAgICsgIiAgICB6ZXJvOyBvbmU7IHR3bzsgdGhyZWU7IGZvdXI7IGZpdmU7IHNpeDsgc2V2ZW47IGVpZ2h0OyBuaW5lO1xuIgorICAgICAgICArICIgICAgdGVuOyBlbGV2ZW47IHR3ZWx2ZTsgdGhpcnRlZW47IGZvdXJ0ZWVuOyBmaWZ0ZWVuOyBzaXh0ZWVuO1xuIgorICAgICAgICArICIgICAgICAgIHNldmVudGVlbjsgZWlnaHRlZW47IG5pbmV0ZWVuO1xuIgorICAgICAgICArICIgICAgMjA6IHR3ZW50eVstPj5dO1xuIgorICAgICAgICArICIgICAgMzA6IHRoaXJ0eVstPj5dO1xuIgorICAgICAgICArICIgICAgNDA6IGZvcnR5Wy0+Pl07XG4iCisgICAgICAgICsgIiAgICA1MDogZmlmdHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDYwOiBzaXh0eVstPj5dO1xuIgorICAgICAgICArICIgICAgNzA6IHNldmVudHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDgwOiBlaWdodHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDkwOiBuaW5ldHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwMDogPDwgaHVuZHJlZFsgPj5dO1xuIgorICAgICAgICArICIgICAgMTAwMDogPDwgdGhvdXNhbmRbID4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMDogPDwgbWlsbGlvblsgPj5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMDogPDwgYmlsbGlvblsgPj5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IDw8IHRyaWxsaW9uWyA+Pl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMCwwMDA6ID0jLCMjMD07XG4iCisgICAgICAgIC8vIHRoaXMgcnVsZSB0YWtlcyBjYXJlIG9mIHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIHZhbHVlLiAgSXQKKyAgICAgICAgLy8gbXVsdGlwbGllcyB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkIGJ5CisgICAgICAgIC8vIDEwMCwgZm9ybWF0cyBpdCB3aXRoICUlbWFpbiwgYW5kIHRoZW4gYWRkZXMgdGhlIHdvcmQgImNlbnQiIG9yCisgICAgICAgIC8vICJjZW50cyIgdG8gdGhlIGVuZC4gIChUaGUgdGV4dCBpbiBicmFja2V0cyBpcyBvbWl0dGVkIGlmIHRoZQorICAgICAgICAvLyBudW1lcmF0b3Igb2YgdGhlIGZyYWN0aW9uIGlzIDEuKQorICAgICAgICArICIlJWNlbnRzOlxuIgorICAgICAgICArICIgICAgMTAwOiA8JSVtYWluPCBjZW50W3NdO1xuIgorCisgICAgICAgIC8vIHRoaXMgcnVsZSBzZXQgZm9ybWF0cyBudW1iZXJzIGFzIGRvbGxhcnMgYW5kIGh1bmRyZWR0aHMgb2YgZG9sbGFycworICAgICAgICArICIlZG9sbGFycy1hbmQtaHVuZHJlZHRoczpcbiIKKyAgICAgICAgICAgICAgIC8vIHRoaXMgcnVsZSB0YWtlcyBjYXJlIG9mIHRoZSBnZW5lcmFsIHNoZWxsIG9mIHRoZSBvdXRwdXQKKyAgICAgICAgICAgICAgIC8vIHN0cmluZy4gIFdlIGFsd2F5cyBzaG93IHRoZSBjZW50cywgZXZlbiB3aGVuIHRoZXJlIGFyZW4ndAorICAgICAgICAgICAgICAgLy8gYW55LiAgQmVjYXVzZSBvZiB0aGlzLCB0aGUgd29yZCBpcyBhbHdheXMgImRvbGxhcnMiLS0KKyAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgdGhlIHNpbmd1bGFyIGZvcm0uICBXZSB1c2UKKyAgICAgICAgICAgICAgIC8vICUlbWFpbiB0byBmb3JtYXQgdGhlIG51bWJlciBvZiBkb2xsYXJzIGFuZCAlJWh1bmRyZWR0aHMgdG8KKyAgICAgICAgICAgICAgIC8vIGZvcm1hdCB0aGUgbnVtYmVyIG9mIGNlbnRzCisgICAgICAgICsgIiAgICB4LjA6IDwlJW1haW48IGFuZCA+JSVodW5kcmVkdGhzPi8xMDAgZG9sbGFycztcbiIKKyAgICAgICAgLy8gdGhpcyBydWxlIHNldCBmb3JtYXRzIHRoZSBjZW50cyBmb3IgJWRvbGxhcnMtYW5kLWh1bmRyZWR0aHMuCisgICAgICAgIC8vIEl0IG11bHRpcGxpZXMgdGhlIGZyYWN0aW9uYWwgcGFydCBvZiB0aGUgbnVtYmVyIGJ5IDEwMCBhbmQgZm9ybWF0cworICAgICAgICAvLyB0aGUgcmVzdWx0IHVzaW5nIGEgRGVjaW1hbEZvcm1hdCAoIjAwIiB0ZWxscyB0aGUgRGVjaW1hbEZvcm1hdCB0bworICAgICAgICAvLyBhbHdheXMgdXNlIHR3byBkaWdpdHMsIGV2ZW4gZm9yIG51bWJlcnMgdW5kZXIgMTApCisgICAgICAgICsgIiUlaHVuZHJlZHRoczpcbiIKKyAgICAgICAgKyAiICAgIDEwMDogPDAwPDtcbiI7CisKKyAgICAvKioKKyAgICAgKiBUaGlzIHJ1bGUgc2V0IHNob3dzIHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIG51bWJlciBhcyBhIGZyYWN0aW9uCisgICAgICogd2l0aCBhIHBvd2VyIG9mIDEwIGFzIHRoZSBkZW5vbWluYXRvci4gIFNvbWUgbGFuZ3VhZ2VzIGRvbid0IHNwZWxsCisgICAgICogb3V0IHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgYSBudW1iZXIgYXMgInBvaW50IG9uZSB0d28gdGhyZWUsIiBidXQKKyAgICAgKiBhbHdheXMgcmVuZGVyIGl0IGFzIGEgZnJhY3Rpb24uICBJZiB3ZSBzdGlsbCB3YW50IHRvIHRyZWF0IHRoZSBmcmFjdGlvbmFsCisgICAgICogcGFydCBvZiB0aGUgbnVtYmVyIGFzIGEgZGVjaW1hbCwgdGhlbiB0aGUgZnJhY3Rpb24ncyBkZW5vbWluYXRvcgorICAgICAqIGlzIGFsd2F5cyBhIHBvd2VyIG9mIDEwLiAgVGhpcyBleGFtcGxlIGRvZXMgdGhhdDogMjMuMTI1IGlzIGZvcm1hdHRlZAorICAgICAqIGFzICJ0d2VudHktdGhyZWUgYW5kIG9uZSBodW5kcmVkIHR3ZW50eS1maXZlIHRob3VzYW5kdGhzIiAoYXMgb3Bwb3NlZAorICAgICAqIHRvICJ0d2VudHktdGhyZWUgcG9pbnQgb25lIHR3byBmaXZlIiBvciAidHdlbnR5LXRocmVlIGFuZCBvbmUgZWlnaHRoIikuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZGVjaW1hbEFzRnJhY3Rpb24gPQorICAgICAgICAvLyB0aGUgcmVndWxhciBVLlMuIEVuZ2xpc2ggc3BlbGxvdXQgcnVsZXMsIHdpdGggb25lIGRpZmZlcmVuY2UKKyAgICAgICAgIiVtYWluOlxuIgorICAgICAgICArICIgICAgLXg6IG1pbnVzID4+O1xuIgorICAgICAgICAgICAgICAgLy8gdGhlIGRpZmZlcmVuY2UuICBUaGlzIHJ1bGUgdXNlcyAlJWZyYWMgdG8gc2hvdyB0aGUgZnJhY3Rpb25hbAorICAgICAgICAgICAgICAgLy8gcGFydCBvZiB0aGUgbnVtYmVyLiAgVGV4dCBpbiBicmFja2V0cyBpcyBvbWl0dGVkIHdoZW4gdGhlCisgICAgICAgICAgICAgICAvLyB2YWx1ZSBpcyBiZXR3ZWVuIDAgYW5kIDEgKGNhdXNpbmcgMC4zIHRvIGNvbWUgb3V0IGFzICJ0aHJlZQorICAgICAgICAgICAgICAgLy8gdGVudGhzIiBpbnN0ZWFkIG9mICJ6ZXJvIGFuZCB0aHJlZSB0ZW50aHMiKS4KKyAgICAgICAgKyAiICAgIHgueDogWzw8IGFuZCBdPiUlZnJhYz47XG4iCisgICAgICAgICsgIiAgICB6ZXJvOyBvbmU7IHR3bzsgdGhyZWU7IGZvdXI7IGZpdmU7IHNpeDsgc2V2ZW47IGVpZ2h0OyBuaW5lO1xuIgorICAgICAgICArICIgICAgdGVuOyBlbGV2ZW47IHR3ZWx2ZTsgdGhpcnRlZW47IGZvdXJ0ZWVuOyBmaWZ0ZWVuOyBzaXh0ZWVuO1xuIgorICAgICAgICArICIgICAgICAgIHNldmVudGVlbjsgZWlnaHRlZW47IG5pbmV0ZWVuO1xuIgorICAgICAgICArICIgICAgdHdlbnR5Wy0+Pl07XG4iCisgICAgICAgICsgIiAgICAzMDogdGhpcnR5Wy0+Pl07XG4iCisgICAgICAgICsgIiAgICA0MDogZm9ydHlbLT4+XTtcbiIKKyAgICAgICAgKyAiICAgIDUwOiBmaWZ0eVstPj5dO1xuIgorICAgICAgICArICIgICAgNjA6IHNpeHR5Wy0+Pl07XG4iCisgICAgICAgICsgIiAgICA3MDogc2V2ZW50eVstPj5dO1xuIgorICAgICAgICArICIgICAgODA6IGVpZ2h0eVstPj5dO1xuIgorICAgICAgICArICIgICAgOTA6IG5pbmV0eVstPj5dO1xuIgorICAgICAgICArICIgICAgMTAwOiA8PCBodW5kcmVkWyA+Pl07XG4iCisgICAgICAgICsgIiAgICAxMDAwOiA8PCB0aG91c2FuZFsgPj5dO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwOiA8PCBtaWxsaW9uWyA+Pl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwOiA8PCBiaWxsaW9uWyA+Pl07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMDogPDwgdHJpbGxpb25bID4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDAsMDAwLDAwMDogPSMsIyMwPTtcbiIKKyAgICAgICAgLy8gdGhlIHJ1bGUgc2V0IHRoYXQgZm9ybWF0cyB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSBudW1iZXIuCisgICAgICAgIC8vIFRoZSBydWxlIHRoYXQgaXMgdXNlZCBpcyB0aGUgb25lIHRoYXQsIHdoZW4gaXRzIGJhYXNlIHZhbHVlIGlzCisgICAgICAgIC8vIG11bHRpcGxpZWQgYnkgdGhlIGZyYWN0aW9uYWwgcGFydCBvZiB0aGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZCwKKyAgICAgICAgLy8gcHJvZHVjZXMgdGhlIHJlc3VsdCBjbG9zZXN0IHRvIHplcm8uICBUaHVzLCB0aGUgYmFzZSB2YWx1ZXMgYXJlCisgICAgICAgIC8vIHByb3NwZWN0aXZlIGRlbm9taW5hdG9ycyBvZiB0aGUgZnJhY3Rpb24uICBUaGUgPDwgbWFya3MgdGhlIHBsYWNlCisgICAgICAgIC8vIHdoZXJlIHRoZSBudW1lcmF0b3Igb2YgdGhlIGZyYWN0aW9uICh0aGUgcmVzdWx0IG9mIG11bHRpcGx5aW5nIHRoZQorICAgICAgICAvLyBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIG51bWJlciBieSB0aGUgcnVsZSdzIGJhc2UgdmFsdWUpIGlzCisgICAgICAgIC8vIHBsYWNlZC4gIFRleHQgaW4gYnJhY2tldHMgaXMgb21pdHRlZCB3aGVuIHRoZSBudW1lcmF0b3IgaXMgMSwgZ2l2aW5nCisgICAgICAgIC8vIHVzIHRoZSBzaW5ndWxhciBhbmQgcGx1cmFsIGZvcm1zIG9mIHRoZSB3b3Jkcy4KKyAgICAgICAgLy8gW0luIGxhbmd1YWdlcyB3aGVyZSB0aGUgc2luZ3VsYXIgYW5kIHBsdXJhbCBhcmUgY29tcGxldGVseSBkaWZmZXJlbnQKKyAgICAgICAgLy8gd29yZHMsIHRoZSBydWxlIGNhbiBqdXN0IGJlIHN0YXRlZCB0d2ljZTogdGhlIHNlY29uZCB0aW1lIHdpdGgKKyAgICAgICAgLy8gdGhlIHBsdXJhbCBmb3JtLl0KKyAgICAgICAgKyAiJSVmcmFjOlxuIgorICAgICAgICArICIgICAgMTA6IDw8IHRlbnRoW3NdO1xuIgorICAgICAgICArICIgICAgMTAwOiA8PCBodW5kcmVkdGhbc107XG4iCisgICAgICAgICsgIiAgICAxMDAwOiA8PCB0aG91c2FuZHRoW3NdO1xuIgorICAgICAgICArICIgICAgMTAsMDAwOiA8PCB0ZW4tdGhvdXNhbmR0aFtzXTtcbiIKKyAgICAgICAgKyAiICAgIDEwMCwwMDA6IDw8IGh1bmRyZWQtdGhvdXNhbmR0aFtzXTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMDogPDwgbWlsbGlvbnRoW3NdOyI7CisKKyAgICAvKioKKyAgICAgKiBOdW1iZXIgd2l0aCBjbG9zZXN0IGZyYWN0aW9uLiAgVGhpcyBleGFtcGxlIGZvcm1hdHMgYSB2YWx1ZSB1c2luZworICAgICAqIG51bWVyYWxzLCBidXQgc2hvd3MgdGhlIGZyYWN0aW9uYWwgcGFydCBhcyBhIHJhdGlvIChmcmFjdGlvbikgcmF0aGVyCisgICAgICogdGhhbiBhIGRlY2ltYWwuICBUaGUgZnJhY3Rpb24gYWx3YXlzIGhhcyBhIGRlbm9taW5hdG9yIGJldHdlZW4gMiBhbmQgMTAuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY2xvc2VzdEZyYWN0aW9uID0KKyAgICAgICAgIiVtYWluOlxuIgorICAgICAgICAgICAgICAgLy8gdGhpcyBydWxlIGZvcm1hdHMgdGhlIG51bWJlciBpZiBpdCdzIDEgb3IgbW9yZS4gIEl0IGZvcm1hdHMKKyAgICAgICAgICAgICAgIC8vIHRoZSBpbnRlZ3JhbCBwYXJ0IHVzaW5nIGEgRGVjaW1hbEZvcm1hdCAoIiMsIyMwIiBwdXRzCisgICAgICAgICAgICAgICAvLyB0aG91c2FuZHMgc2VwYXJhdG9ycyBpbiB0aGUgcmlnaHQgcGxhY2VzKSBhbmQgdGhlIGZyYWN0aW9uYWwKKyAgICAgICAgICAgICAgIC8vIHBhcnQgdXNpbmcgJSVmcmFjLiAgSWYgdGhlcmUgaXMgbm8gZnJhY3Rpb25hbCBwYXJ0LCBpdAorICAgICAgICAgICAgICAgLy8ganVzdCBzaG93cyB0aGUgaW50ZWdyYWwgcGFydC4KKyAgICAgICAgKyAiICAgIHguMDogPCMsIyMwPFsgPiUlZnJhYz5dO1xuIgorICAgICAgICAgICAgICAgLy8gdGhpcyBydWxlIGZvcm1hdHMgdGhlIG51bWJlciBpZiBpdCdzIGJldHdlZW4gMCBhbmQgMS4gIEl0CisgICAgICAgICAgICAgICAvLyBzaG93cyBvbmx5IHRoZSBmcmFjdGlvbmFsIHBhcnQgKDAuNSBzaG93cyB1cCBhcyAiMS8yLCIgbm90CisgICAgICAgICAgICAgICAvLyAiMCAxLzIiKQorICAgICAgICArICIgICAgMC54OiA+JSVmcmFjPjtcbiIKKyAgICAgICAgLy8gdGhlIGZyYWN0aW9uIHJ1bGUgc2V0LiAgVGhpcyB3b3JrcyB0aGUgc2FtZSB3YXkgYXMgdGhlIG9uZSBpbiB0aGUKKyAgICAgICAgLy8gcHJlY2VkaW5nIGV4YW1wbGU6IFdlIG11bHRpcGx5IHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIG51bWJlcgorICAgICAgICAvLyBiZWluZyBmb3JtYXR0ZWQgYnkgZWFjaCBydWxlJ3MgYmFzZSB2YWx1ZSBhbmQgdXNlIHRoZSBydWxlIHRoYXQKKyAgICAgICAgLy8gcHJvZHVjZXMgdGhlIHJlc3VsdCBjbG9zZXN0IHRvIDAgKG9yIHRoZSBmaXJzdCBydWxlIHRoYXQgcHJvZHVjZXMgMCkuCisgICAgICAgIC8vIFNpbmNlIHdlIG9ubHkgcHJvdmlkZSBydWxlcyBmb3IgdGhlIG51bWJlcnMgZnJvbSAyIHRvIDEwLCB3ZSBrbm93CisgICAgICAgIC8vIHdlJ2xsIGdldCBhIGZyYWN0aW9uIHdpdGggYSBkZW5vbWluYXRvciBiZXR3ZWVuIDIgYW5kIDEwLgorICAgICAgICAvLyAiPDA8IiBjYXVzZXMgdGhlIG51bWVyYXRvciBvZiB0aGUgZnJhY3Rpb24gdG8gYmUgZm9ybWF0dGVkCisgICAgICAgIC8vIHVzaW5nIG51bWVyYWxzCisgICAgICAgICsgIiUlZnJhYzpcbiIKKyAgICAgICAgKyAiICAgIDI6IDEvMjtcbiIKKyAgICAgICAgKyAiICAgIDM6IDwwPC8zO1xuIgorICAgICAgICArICIgICAgNDogPDA8LzQ7XG4iCisgICAgICAgICsgIiAgICA1OiA8MDwvNTtcbiIKKyAgICAgICAgKyAiICAgIDY6IDwwPC82O1xuIgorICAgICAgICArICIgICAgNzogPDA8Lzc7XG4iCisgICAgICAgICsgIiAgICA4OiA8MDwvODtcbiIKKyAgICAgICAgKyAiICAgIDk6IDwwPC85O1xuIgorICAgICAgICArICIgICAgMTA6IDwwPC8xMDtcbiI7CisKKyAgICAvKioKKyAgICAgKiBBbWVyaWNhbiBzdG9jay1wcmljZSBmb3JtYXR0aW5nLiAgTm9uLWludGVncmFsIHN0b2NrIHByaWNlcyBhcmUgc3RpbGwKKyAgICAgKiBnZW5lcmFsbHkgc2hvd24gaW4gZWlnaHRocyBvciBzaXh0ZWVudGhzIG9mIGRvbGxhcnMgaW5zdGVhZCBvZiBkb2xsYXJzCisgICAgICogYW5kIGNlbnRzLiAgVGhpcyBleGFtcGxlIGZvcm1hdHMgc3RvY2sgcHJpY2VzIGluIHRoaXMgd2F5IGlmIHBvc3NpYmxlLAorICAgICAqIGFuZCBpbiBkb2xsYXJzIGFuZCBjZW50cyBpZiBub3QuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgc3RvY2sgPQorICAgICAgICAiJW1haW46XG4iCisgICAgICAgICAgICAgICAvLyB0aGlzIHJ1bGUgZm9ybWF0cyB0aGUgaW50ZWdyYWwgcGFydCBvZiB0aGUgbnVtYmVyIGluIG51bWVyYWxzCisgICAgICAgICAgICAgICAvLyBhbmQgKGlmIG5lY2Vzc2FyeSkgdGhlIGZyYWN0aW9uYWwgcGFydCB1c2luZyAlJWZyYWMxCisgICAgICAgICsgIiAgICB4LjA6IDwjLCMjMDxbPiUlZnJhYzE+XTtcbiIKKyAgICAgICAgICAgICAgIC8vIHRoaXMgcnVsZSBpcyB1c2VkIGZvciB2YWx1ZXMgYmV0d2VlbiAwIGFuZCAxIGFuZCBvbWl0cyB0aGUKKyAgICAgICAgICAgICAgIC8vIGludGVncmFsIHBhcnQKKyAgICAgICAgKyAiICAgIDAueDogPiUlZnJhYzI+O1xuIgorICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IGlzIHVzZWQgdG8gZm9ybWF0IHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIG51bWJlciB3aGVuCisgICAgICAgIC8vIHRoZXJlJ3MgYW4gaW50ZWdyYWwgcGFydCBiZWZvcmUgaXQgKGFnYWluLCB3ZSB0cnkgYWxsIGRlbm9taW5hdG9ycworICAgICAgICAvLyBhbmQgdXNlIHRoZSAiYmVzdCIgb25lKQorICAgICAgICArICIlJWZyYWMxOlxuIgorICAgICAgICAgICAgICAgLy8gZm9yIGV2ZW4gbXVsdGlwbGVzIG9mIDEvNCwgZm9ybWF0IHRoZSBmcmFjdGlvbiB1c2luZyB0aGUKKyAgICAgICAgICAgICAgIC8vIHR5cG9ncmFwaGVyJ3MgZnJhY3Rpb25zCisgICAgICAgICsgIiAgICA0OiA8JSVxdWFydGVyczw7XG4iCisgICAgICAgICAgICAgICAvLyBmb3JtYXQgdGhlIHZhbHVlIGFzIGEgbnVtYmVyIG9mIGVpZ2h0aHMsIHNpeHRlZW50aHMsIG9yCisgICAgICAgICAgICAgICAvLyB0aGlydHktc2Vjb25kcywgd2hpY2hldmVyIHByb2R1Y2VzIHRoZSBtb3N0IGFjY3VyYXRlIHZhbHVlLgorICAgICAgICAgICAgICAgLy8gVGhlIGFwb3N0cm9waGUgYXQgdGhlIGZyb250IG9mIHRoZXNlIHJ1bGVzIGlzIGlnbm9yZWQsIGJ1dAorICAgICAgICAgICAgICAgLy8gaXQgbWFrZXMgdGhlIHNwYWNlIHRoYXQgZm9sbG93cyBpdCBzaWduaWZpY2FudC4gIFRoaXMgcHV0cyBhCisgICAgICAgICAgICAgICAvLyBzcGFjZSBiZXR3ZWVuIHRoZSB2YWx1ZSdzIGludGVncmFsIGFuZCBmcmFjdGlvbmFsIHBhcnRzIHNvCisgICAgICAgICAgICAgICAvLyB5b3UgY2FuIHJlYWQgaXQKKyAgICAgICAgKyAiICAgIDg6ICcgPDA8Lzg7XG4iCisgICAgICAgICsgIiAgICAxNjogJyA8MDwvMTY7XG4iCisgICAgICAgICsgIiAgICAzMjogJyA8MDwvMzI7XG4iCisgICAgICAgICAgICAgICAvLyBpZiB3ZSBjYW4ndCByZWFzb25hYmx5IGZvcm1hdCB0aGUgbnVtYmVyIGluIHBvd2VycyBvZiAyLAorICAgICAgICAgICAgICAgLy8gdGhlbiBzaG93IGl0IGFzIGRvbGxhcnMgYW5kIGNlbnRzCisgICAgICAgICsgIiAgICAxMDA6IC48MDA8O1xuIgorICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IGlzIHVzZWQgd2hlbiB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSB2YWx1ZSBzdGFuZHMKKyAgICAgICAgLy8gYWxvbmUKKyAgICAgICAgKyAiJSVmcmFjMjpcbiIKKyAgICAgICAgKyAiICAgIDQ6IDwlJXF1YXJ0ZXJzPDtcbiIKKyAgICAgICAgICAgICAgIC8vIGZvciBmcmFjdGlvbnMgdGhhdCB3ZSBjYW4ndCBzaG93IHVzaW5nIHR5cG9ncmFwaGVyJ3MgZnJhY3Rpb25zLAorICAgICAgICAgICAgICAgLy8gd2UgZG9uJ3QgaGF2ZSB0byBwdXQgYSBzcGFjZSBiZWZvcmUgdGhlIGZyYWN0aW9uCisgICAgICAgICsgIiAgICA4OiA8MDwvODtcbiIKKyAgICAgICAgKyAiICAgIDE2OiA8MDwvMTY7XG4iCisgICAgICAgICsgIiAgICAzMjogPDA8LzMyO1xuIgorICAgICAgICAgICAgICAgLy8gYnV0IGRvbGxhcnMgYW5kIGNlbnRzIGxvb2sgYmV0dGVyIHdpdGggYSBsZWFkaW5nIDAKKyAgICAgICAgKyAiICAgIDEwMDogMC48MDA8O1xuIgorICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IGZvcm1hdHMgMS80LCAxLzIsIGFuZCAzLzQgdXNpbmcgdHlwb2dyYXBoZXIncyBmcmFjdGlvbnMKKyAgICAgICAgKyAiJSVxdWFydGVyczpcbiIKKyAgICAgICAgKyAiICAgIDsgXHUwMGJjOyBcdTAwYmQ7IFx1MDBiZTtcbiIKKyAgICAgICAgLy8gdGhlcmUgYXJlIHRoZSBsZW5pZW50LXBhcnNlIHJ1bGVzLiAgVGhlc2UgYWxsb3cgdGhlIHVzZXIgdG8gdHlwZQorICAgICAgICAvLyAiMS80LCIgIjEvMiwiIGFuZCAiMy80IiBpbnN0ZWFkIG9mIHRoZWlyIHR5cG9ncmFwaGljYWwgY291bnRlcnBhcnRzCisgICAgICAgIC8vIGFuZCBzdGlsbCBoYXZlIHRoZW0gYmUgdW5kZXJzdG9vZCBieSB0aGUgZm9ybWF0dGVyCisgICAgICAgICsgIiUlbGVuaWVudC1wYXJzZTpcbiIKKyAgICAgICAgKyAiICAgICYgJzEvNCcgLCBcdTAwYmNcbiIKKyAgICAgICAgKyAiICAgICYgJzEvMicgLCBcdTAwYmRcbiIKKyAgICAgICAgKyAiICAgICYgJzMvNCcgLCBcdTAwYmVcbjsiOworCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBDaGFuZ2luZyBkaW1lbnNpb25zCisgICAgLy8KKyAgICAvLyBUaGUgbmV4dCBmZXcgZXhhbXBsZXMgZGVtb25zdHJhdGUgdXNpbmcgYSBSdWxlQmFzZWROdW1iZXJGb3JtYXQgdG8KKyAgICAvLyBjaGFuZ2UgdGhlIHVuaXRzIGEgdmFsdWUgaXMgZGVub21pbmF0ZWQgaW4gZGVwZW5kaW5nIG9uIGl0cyBtYWduaXR1ZGUKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgLyoqCisgICAgICogVGhlIGV4YW1wbGUgc2hvd3MgbGFyZ2UgbnVtYmVycyB0aGUgd2F5IHRoZXkgb2Z0ZW4gYXBwZWFyIGlzIG53ZXNwYXBlcnM6CisgICAgICogMSwyMDAsMDAwIGlzIGZvcm1hdHRlZCBhcyAiMS4yIG1pbGxpb24iLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGFiYkVuZ2xpc2ggPQorICAgICAgICAiPSMsIyMwPTtcbiIKKyAgICAgICAgLy8gdGhpcyBpcyBmYWlybHkgc2VsZi1leHBsYW5hdG9yeSwgYnV0IG5vdGUgdGhhdCB0aGUgPDwgc3Vic3RpdHV0aW9uCisgICAgICAgIC8vIGNhbiBzaG93IHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIHN1YnN0aXR1dGlvbiB2YWx1ZSBpZiB0aGUgdXNlcgorICAgICAgICAvLyB3YW50cyBpdAorICAgICAgICArICIxLDAwMCwwMDA6IDwjIzAuIyMjPCBtaWxsaW9uO1xuIgorICAgICAgICArICIxLDAwMCwwMDAsMDAwOiA8IyMwLiMjIzwgYmlsbGlvbjtcbiIKKyAgICAgICAgKyAiMSwwMDAsMDAwLDAwMCwwMDA6IDwjIzAuIyMjPCB0cmlsbGlvbjtcbiI7CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGV4YW1wbGUgdGFrZXMgYSBudW1iZXIgb2YgbWV0ZXJzIGFuZCBmb3JtYXRzIGl0IGluIHdoYXRldmVyIHVuaXQKKyAgICAgKiB3aWxsIHByb2R1Y2UgYSBudW1iZXIgd2l0aCBmcm9tIG9uZSB0byB0aHJlZSBkaWdpdHMgYmVmb3JlIHRoZSBkZWNpbWFsCisgICAgICogcG9pbnQuICBGb3IgZXhhbXBsZSwgMjMwLDAwMCBpcyBmb3JtYXR0ZWQgYXMgIjIzMCBrbSIuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgdW5pdHMgPQorICAgICAgICAiJW1haW46XG4iCisgICAgICAgICAgICAgICAvLyBmb3IgdmFsdWVzIGJldHdlZW4gMCBhbmQgMSwgZGVsZWdhdGUgdG8gJSVzbWFsbAorICAgICAgICArICIgICAgMC54OiA+JSVzbWFsbD47XG4iCisgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UsIHNob3cgYmV0d2VlbiAzIGFuZCA2IHNpZ25pZmljYW50IGRpZ2l0cyBvZiB0aGUgdmFsdWUKKyAgICAgICAgICAgICAgIC8vIGFsb25nIHdpdGggdGhlIG1vc3QgYXBwcm9wcmlhdGUgdW5pdAorICAgICAgICArICIgICAgMDogPSMjMC4jIyM9IG07XG4iCisgICAgICAgICsgIiAgICAxLDAwMDogPCMjMC4jIyM8IGttO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwOiA8IyMwLiMjIzwgTW07XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwOiA8IyMwLiMjIzwgR207XG4iCisgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMDogPCMsIyMwLiMjIzwgVG07XG4iCisgICAgICAgIC8vICUlc21hbGwgZm9ybWF0cyB0aGUgbnVtYmVyIHdoZW4gaXQncyBsZXNzIHRoZW4gMS4gIEl0IG11bHRpcGxpZXMgdGhlCisgICAgICAgIC8vIHZhbHVlIGJ5IG9uZSBiaWxsaW9uLCBhbmQgdGhlbiB1c2VzICUlc21hbGwyIHRvIGFjdHVhbGx5IGRvIHRoZQorICAgICAgICAvLyBmb3JtYXR0aW5nLgorICAgICAgICArICIlJXNtYWxsOlxuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IDwlJXNtYWxsMjw7XG4iCisgICAgICAgIC8vIHRoaXMgcnVsZSBzZXQgYWN0dWFsbHkgZm9ybWF0cyBzbWFsbCB2YWx1ZXMuICAlJXNtYWxsIHBhc3NlcyB0aGlzCisgICAgICAgIC8vIHJ1bGUgc2V0IGEgbnVtYmVyIG9mIHBpY29tZXRlcnMsIGFuZCBpdCB0YWtlcyBjYXJlIG9mIHNjYWxpbmcgdXAgYXMKKyAgICAgICAgLy8gYXBwcm9wcmlhdGUgaW4gZXhhY3RseSB0aGUgc2FtZSB3YXkgJW1haW4gZG9lcyAod2UgY2FuJ3Qgbm9ybWFsbHkKKyAgICAgICAgLy8gaGFuZGxlIGZyYWN0aW9uYWwgdmFsdWVzIHRoaXMgd2F5OiBoZXJlLCB3ZSdyZSBjb25jZXJuZWQgYWJvdXQKKyAgICAgICAgLy8gbWFnbml0dWRlOyBtb3N0IG9mIHRoZSB0aW1lLCB3ZSdyZSBjb25jZXJuZWQgYWJvdXQgcHJlY3Npb24pCisgICAgICAgICsgIiUlc21hbGwyOlxuIgorICAgICAgICArICIgICAgMDogPSMjMD0gcG07XG4iCisgICAgICAgICsgIiAgICAxLDAwMDogPCMjMC4jIyM8IG5tO1xuIgorICAgICAgICArICIgICAgMSwwMDAsMDAwOiA8IyMwLiMjIzwgXHUwMGI1bTtcbiIKKyAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDA6IDwjIzAuIyMjPCBtbTtcbiI7CisKKyAgICAvKioKKyAgICAgKiBBIG1vcmUgY29tcGxpY2F0ZWQgbWVzc2FnZS1mb3JtYXR0aW5nIGV4YW1wbGUuICBIZXJlLCBpbiBhZGRpdGlvbiB0bworICAgICAqIGhhbmRsaW5nIHRoZSBzaW5ndWxhciBhbmQgcGx1cmFsIHZlcnNpb25zIG9mIHRoZSB3b3JkLCB0aGUgdmFsdWUgaXMKKyAgICAgKiBkZW5vbWluYXRlZCBpbiBieXRlcywga2lsb2J5dGVzLCBvciBtZWdhYnl0ZXMgZGVwZW5kaW5nIG9uIGl0cyBtYWduaXR1ZGUuCisgICAgICogQWxzbyBub3RpY2UgdGhhdCBpdCBjb3JyZWN0bHkgdHJlYXRzIGEga2lsb2J5dGUgYXMgMSwwMjQgYnl0ZXMgKG5vdCAxLDAwMCksCisgICAgICogYW5kIGEgbWVnYWJ5dGUgYXMgMSwwMjQga2lsb2J5dGVzIChub3QgMSwwMDApLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIG1lc3NhZ2UyID0KKyAgICAgICAgLy8gdGhpcyBydWxlIHN1cHBsaWVzIHRoZSBzaGVsbCBvZiB0aGUgc2VudGVuY2UKKyAgICAgICAgInguMDogVGhlcmUgPDwgZnJlZSBzcGFjZSBvbiB0aGUgZGlzay47XG4iCisgICAgICAgIC8vIGhhbmRsZSBzaW5ndWxhciBhbmQgcGx1cmFsIGZvcm1zIG9mICJieXRlIiAoYW5kIGZvcm1hdCAwIGFzCisgICAgICAgIC8vICJUaGVyZSBpcyBubyBmcmVlIHNwYWNlLi4uIikKKyAgICAgICAgKyAiMDogaXMgbm87XG4iCisgICAgICAgICsgImlzIG9uZSBieXRlIG9mO1xuIgorICAgICAgICArICJhcmUgPTA9IGJ5dGVzIG9mO1xuIgorICAgICAgICAvLyBmb3IgdmFsdWVzIGFib3ZlIDEsMDI0LCBmb3JtYXQgdGhlIG51bWJlciBpbiBLIChzaW5jZSAiSyIgaXMgdXN1YWxseQorICAgICAgICAvLyBwcm9tb3VuY2VkICJLIiByZWdhcmRsZXNzIG9mIHdoZXRoZXIgaXQncyBzaW5ndWxhciBvciBwbHVyYWwsIHdlCisgICAgICAgIC8vIGRvbid0IHdvcnJ5IGFib3V0IHRoZSBwbHVyYWwgZm9ybSkuICBUaGUgIi8xMDI0IiBoZXJlIGNhdXNlcyB1cyB0bworICAgICAgICAvLyB0cmVhdCBhIEsgYXMgMSwwMjQgYnl0ZXMgcmF0aGVyIHRoYW4gMSwwMDAgYnl0ZXMuCisgICAgICAgICsgIjEwMjQvMTAyNDogaXMgPDA8SyBvZjtcbiIKKyAgICAgICAgLy8gZm9yIHZhbHVlcyBhYm91dCAxLDA0OCw1NzYsIGZvcm1hdCB0aGUgbnVtYmVyIGluIE1iLiAgU2luY2UgIk1iIiBpcworICAgICAgICAvLyB1c3VhbGx5IHByb21vdW5jZWQgIm1lZyIgaW4gc2luZ3VsYXIgYW5kICJtZWdzIiBpbiBwbHVyYWwsIHdlIGRvIGhhdmUKKyAgICAgICAgLy8gYm90aCBzaW5ndWxhciBhbmQgcGx1cmFsIGZvcm1zLiAgQWdhaW4sIG5vdGljZSB3ZSB0cmVhdCBhIG1lZ2FieXRlCisgICAgICAgIC8vIGFzIDEsMDI0IGtpbG9ieXRlcy4KKyAgICAgICAgKyAiMSwwNDgsNTc2LzEwMjQ6IGlzIDEgTWIgb2Y7XG4iCisgICAgICAgICsgIjIsMDk3LDE1Mi8xMDI0OiBhcmUgPDA8IE1iIG9mOyI7CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIEFsdGVybmF0ZSByYWRpY2VzCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8qKgorICAgICAqIFRoaXMgZXhhbXBsZSBmb3JtYXRzIGEgbnVtYmVyIGluIGRvemVucyBhbmQgZ3Jvc3MuICBUaGlzIGlzIGludGVuZGVkIHRvCisgICAgICogZGVtb25zdHJhdGUgaG93IHRoaXMgcnVsZSBzZXQgY2FuIGJlIHVzZWQgdG8gZm9ybWF0IG51bWJlcnMgaW4gc3lzdGVtcworICAgICAqIG90aGVyIHRoYW4gYmFzZSAxMC4gIFRoZSAiLzEyIiBhZnRlciB0aGUgcnVsZXMnIGJhc2UgdmFsdWVzIGNvbnRyb2xzIHRoaXMuCisgICAgICogQWxzbyBub3RpY2UgdGhhdCB0aGUgYmFzZSBkb2Vzbid0IGhhdmUgdG8gYmUgY29uc2lzdGVudCB0aHJvdWdob3V0IHRoZQorICAgICAqIHdob2xlIHJ1bGUgc2V0OiB3ZSBnbyBiYWNrIHRvIGJhc2UgMTAgZm9yIHZhbHVlcyBvdmVyIDEsMDAwLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGRvemVucyA9CisgICAgICAgIC8vIHdvcmRzIGZvciBudW1iZXJzLi4uCisgICAgICAgICJ6ZXJvOyBvbmU7IHR3bzsgdGhyZWU7IGZvdXI7IGZpdmU7IHNpeDtcbiIKKyAgICAgICAgKyAic2V2ZW47IGVpZ2h0OyBuaW5lOyB0ZW47IGVsZXZlbjtcbiIKKyAgICAgICAgLy8gZm9ybWF0IHZhbHVlcyBvdmVyIDEyIGluIGRvemVucworICAgICAgICArICIxMi8xMjogPDwgZG96ZW5bIGFuZCA+Pl07XG4iCisgICAgICAgIC8vIGZvcm1hdCB2YWx1ZXMgb3ZlciAxNDQgaW4gZ3Jvc3MKKyAgICAgICAgKyAiMTQ0LzEyOiA8PCBncm9zc1ssID4+XTtcbiIKKyAgICAgICAgLy8gZm9ybWF0IHZhbHVlcyBvdmVyIDEsMDAwIGluIHRob3VzYW5kcworICAgICAgICArICIxMDAwOiA8PCB0aG91c2FuZFssID4+XTtcbiIKKyAgICAgICAgLy8gb3ZlcmZsb3cgcnVsZS4gIEZvcm1hdCB2YWx1ZXMgb3ZlciAxMCwwMDAgaW4gbnVtZXJhbHMKKyAgICAgICAgKyAiMTAsMDAwOiA9IywjIzA9O1xuIjsKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gTWFqb3IgYW5kIG1pbm9yIHVuaXRzCisgICAgLy8KKyAgICAvLyBUaGVzZSBleGFtcGxlcyBzaG93IGhvdyBhIHNpbmdsZSB2YWx1ZSBjYW4gYmUgZGl2aWRlZCB1cCBpbnRvIG1ham9yCisgICAgLy8gYW5kIG1pbm9yIHVuaXRzIHRoYXQgZG9uJ3QgcmVsYXRlIHRvIGVhY2ggb3RoZXIgYnkgYSBmYWN0b3Igb2YgMTAuCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8qKgorICAgICAqIFRoaXMgZXhhbXBsZSBmb3JtYXRzIGEgbnVtYmVyIG9mIHNlY29uZHMgaW4gc2V4YWdlc2ltYWwgbm90YXRpb24KKyAgICAgKiAoaS5lLiwgaG91cnMsIG1pbnV0ZXMsIGFuZCBzZWNvbmRzKS4gICV3aXRoLXdvcmRzIGZvcm1hdHMgaXQgd2l0aAorICAgICAqIHdvcmRzICgzNzQwIGlzICIxIGhvdXIsIDIgbWludXRlcywgMjAgc2Vjb25kcyIpIGFuZCAlaW4tbnVtZXJhbHMKKyAgICAgKiBmb3JtYXRzIGl0IGVudGlyZWx5IGluIG51bWVyYWxzICgzNzQwIGlzICIxOjAyOjIwIikuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZHVyYXRpb25JblNlY29uZHMgPQorICAgICAgICAvLyBtYWluIHJ1bGUgc2V0IGZvciBmb3JtYXR0aW5nIHdpdGggd29yZHMKKyAgICAgICAgIiV3aXRoLXdvcmRzOlxuIgorICAgICAgICAgICAgICAgLy8gdGFrZSBjYXJlIG9mIHNpbmd1bGFyIGFuZCBwbHVyYWwgZm9ybXMgb2YgInNlY29uZCIKKyAgICAgICAgKyAiICAgIDAgc2Vjb25kczsgMSBzZWNvbmQ7ID0wPSBzZWNvbmRzO1xuIgorICAgICAgICAgICAgICAgLy8gdXNlICUlbWluIHRvIGZvcm1hdCB2YWx1ZXMgZ3JlYXRlciB0aGFuIDYwIHNlY29uZHMKKyAgICAgICAgKyAiICAgIDYwLzYwOiA8JSVtaW48WywgPj5dO1xuIgorICAgICAgICAgICAgICAgLy8gdXNlICUlaHIgdG8gZm9ybWF0IHZhbHVlcyBncmVhdGVyIHRoYW4gMyw2MDAgc2Vjb25kcworICAgICAgICAgICAgICAgLy8gKHRoZSAiPj4+IiBiZWxvdyBjYXVzZXMgdXMgdG8gc2VlIHRoZSBudW1iZXIgb2YgbWludXRlcworICAgICAgICAgICAgICAgLy8gd2hlbiB3aGVuIHRoZXJlIGFyZSB6ZXJvIG1pbnV0ZXMpCisgICAgICAgICsgIiAgICAzNjAwLzYwOiA8JSVocjxbLCA+Pj5dO1xuIgorICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IHRha2VzIGNhcmUgb2YgdGhlIHNpbmd1bGFyIGFuZCBwbHVyYWwgZm9ybXMKKyAgICAgICAgLy8gb2YgIm1pbnV0ZSIKKyAgICAgICAgKyAiJSVtaW46XG4iCisgICAgICAgICsgIiAgICAwIG1pbnV0ZXM7IDEgbWludXRlOyA9MD0gbWludXRlcztcbiIKKyAgICAgICAgLy8gdGhpcyBydWxlIHNldCB0YWtlcyBjYXJlIG9mIHRoZSBzaW5ndWxhciBhbmQgcGx1cmFsIGZvcm1zCisgICAgICAgIC8vIG9mICJob3VyIgorICAgICAgICArICIlJWhyOlxuIgorICAgICAgICArICIgICAgMCBob3VyczsgMSBob3VyOyA9MD0gaG91cnM7XG4iCisKKyAgICAgICAgLy8gbWFpbiBydWxlIHNldCBmb3IgZm9ybWF0dGluZyBpbiBudW1lcmFscworICAgICAgICArICIlaW4tbnVtZXJhbHM6XG4iCisgICAgICAgICAgICAgICAvLyB2YWx1ZXMgYmVsb3cgNjAgc2Vjb25kcyBhcmUgc2hvd24gd2l0aCAic2VjLiIKKyAgICAgICAgKyAiICAgID0wPSBzZWMuO1xuIgorICAgICAgICAgICAgICAgLy8gaGlnaGVyIHZhbHVlcyBhcmUgc2hvd24gd2l0aCBjb2xvbnM6ICUlbWluLXNlYyBpcyB1c2VkIGZvcgorICAgICAgICAgICAgICAgLy8gdmFsdWVzIGJlbG93IDMsNjAwIHNlY29uZHMuLi4KKyAgICAgICAgKyAiICAgIDYwOiA9JSVtaW4tc2VjPTtcbiIKKyAgICAgICAgICAgICAgIC8vIC4uLmFuZCAlJWhyLW1pbi1zZWMgaXMgdXNlZCBmb3IgdmFsdWVzIG9mIDMsNjAwIHNlY29uZHMKKyAgICAgICAgICAgICAgIC8vIGFuZCBhYm92ZQorICAgICAgICArICIgICAgMzYwMDogPSUlaHItbWluLXNlYz07XG4iCisgICAgICAgIC8vIHRoaXMgcnVsZSBjYXVzZXMgdmFsdWVzIG9mIGxlc3MgdGhhbiAxMCBtaW51dGVzIHRvIHNob3cgd2l0aG91dAorICAgICAgICAvLyBhIGxlYWRpbmcgemVybworICAgICAgICArICIlJW1pbi1zZWM6XG4iCisgICAgICAgICsgIiAgICAwOiA6PTAwPTtcbiIKKyAgICAgICAgKyAiICAgIDYwLzYwOiA8MDw+PjtcbiIKKyAgICAgICAgLy8gdGhpcyBydWxlIHNldCBpcyB1c2VkIGZvciB2YWx1ZXMgb2YgMyw2MDAgb3IgbW9yZS4gIE1pbnV0ZXMgYXJlIGFsd2F5cworICAgICAgICAvLyBzaG93biwgYW5kIGFsd2F5cyBzaG93biB3aXRoIHR3byBkaWdpdHMKKyAgICAgICAgKyAiJSVoci1taW4tc2VjOlxuIgorICAgICAgICArICIgICAgMDogOj0wMD07XG4iCisgICAgICAgICsgIiAgICA2MC82MDogPDAwPD4+O1xuIgorICAgICAgICArICIgICAgMzYwMC82MDogPCMsIyMwPDo+Pj47XG4iCisgICAgICAgIC8vIHRoZSBsZW5pZW50LXBhcnNlIHJ1bGVzIGFsbG93IHNldmVyYWwgZGlmZmVyZW50IGNoYXJhY3RlcnMgdG8gYmUgdXNlZAorICAgICAgICAvLyBhcyBkZWxpbWl0ZXJzIGJldHdlZW4gaG91cnMsIG1pbnV0ZXMsIGFuZCBzZWNvbmRzCisgICAgICAgICsgIiUlbGVuaWVudC1wYXJzZTpcbiIKKyAgICAgICAgKyAiICAgICYgOiA9IC4gPSAnICcgPSAtO1xuIjsKKworICAgIC8qKgorICAgICAqIFRoaXMgZXhhbXBsZSBmb3JtYXRzIGEgbnVtYmVyIG9mIGhvdXJzIGluIHNleGFnZXNpbWFsIG5vdGF0aW9uIChpLmUuLAorICAgICAqIGhvdXJzLCBtaW51dGVzLCBhbmQgc2Vjb25kcykuICAld2l0aC13b3JkcyBmb3JtYXRzIHRoZSB2YWx1ZSB1c2luZworICAgICAqIHdvcmRzIGZvciB0aGUgdW5pdHMsIGFuZCAlaW4tbnVtZXJhbHMgZm9ybWF0cyB0aGUgdmFsdWUgdXNpbmcgb25seQorICAgICAqIG51bWVyYWxzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGR1cmF0aW9uSW5Ib3VycyA9CisgICAgICAgIC8vIG1haW4gZW50cnkgcG9pbnQgZm9yIGZvcm1hdHRpbmcgd2l0aCB3b3JkcworICAgICAgICAiJXdpdGgtd29yZHM6XG4iCisgICAgICAgICAgICAgICAvLyB0aGlzIHJ1bGUgb21pdHMgbWludXRlcyBhbmQgc2Vjb25kcyB3aGVuIHRoZSB2YWx1ZSBpcworICAgICAgICAgICAgICAgLy8gYW4gZXZlbiBudW1iZXIgb2YgaG91cnMKKyAgICAgICAgKyAiICAgIHguMDogPDxbLCA+JSVtaW4tc2VjPl07XG4iCisgICAgICAgICAgICAgICAvLyB0aGVzZSBydWxlcyB0YWtlIGNhcmUgb2YgdGhlIHNpbmd1bGFyIGFuZCBwbHVyYWwgZm9ybXMKKyAgICAgICAgICAgICAgIC8vIG9mIGhvdXJzCisgICAgICAgICsgIiAgICAwIGhvdXJzOyAxIGhvdXI7ID0jLCMjMD0gaG91cnM7XG4iCisgICAgICAgIC8vIHRoaXMgcnVsZSBzZXQgdGFrZXMgdGhlIGZyYWN0aW9uYWwgcGFydCBvZiB0aGUgbnVtYmVyIGFuZCBtdWx0aXBsaWVzCisgICAgICAgIC8vIGl0IGJ5IDMsNjAwICh0dXJuaW5nIGl0IGludG8gYSBudW1iZXIgb2Ygc2Vjb25kcykuICBUaGVuIGl0IGRlbGVnYXRlcworICAgICAgICAvLyB0byAlJW1pbi1zZWMtaW1wbGVtZW50YXRpb24gdG8gZm9ybWF0IHRoZSByZXN1bHRpbmcgdmFsdWUKKyAgICAgICAgKyAiJSVtaW4tc2VjOlxuIgorICAgICAgICArICIgICAgMzYwMDogPSUlbWluLXNlYy1pbXBsZW1lbnRhdGlvbj07XG4iCisgICAgICAgIC8vIHRoaXMgcnVsZSBzZXQgZm9ybWF0cyB0aGUgc2Vjb25kcyBhcyBlaXRoZXIgc2Vjb25kcyBvciBtaW51dGVzIGFuZAorICAgICAgICAvLyBzZWNvbmRzLCBhbmQgdGFrZXMgY2FyZSBvZiB0aGUgc2luZ3VsYXIgYW5kIHBsdXJhbCBmb3JtcyBvZgorICAgICAgICAvLyAibWludXRlIiBhbmQgInNlY29uZCIKKyAgICAgICAgKyAiJSVtaW4tc2VjLWltcGxlbWVudGF0aW9uOlxuIgorICAgICAgICArICIgICAgMCBzZWNvbmRzOyAxIHNlY29uZDsgPTA9IHNlY29uZHM7XG4iCisgICAgICAgICsgIiAgICA2MC82MDogMSBtaW51dGVbLCA+Pl07XG4iCisgICAgICAgICsgIiAgICAxMjAvNjA6IDwwPCBtaW51dGVzWywgPj5dO1xuIgorCisgICAgICAgIC8vIG1haW4gZW50cnkgcG9pbnQgZm9yIGZvcm1hdHRpbmcgaW4gbnVtZXJhbHMKKyAgICAgICAgKyAiJWluLW51bWVyYWxzOlxuIgorICAgICAgICAgICAgICAgLy8gc2hvdyBtaW51dGVzIGV2ZW4gZm9yIGV2ZW4gbnVtYmVycyBvZiBob3VycworICAgICAgICArICIgICAgeC4wOiA8IywjIzA8OjAwO1xuIgorICAgICAgICAgICAgICAgLy8gZGVsZWdhdGUgdG8gJSVtaW4tc2VjMiB0byBmb3JtYXQgbWludXRlcyBhbmQgc2Vjb25kcworICAgICAgICArICIgICAgeC54OiA8IywjIzA8Oj4lJW1pbi1zZWMyPjtcbiIKKyAgICAgICAgLy8gdGhpcyBydWxlIHNldCBmb3JtYXRzIG1pbnV0ZXMgd2hlbiB0aGVyZSBpcyBhbiBldmVuIG51bWJlciBvZgorICAgICAgICAvLyBtaW51dGVzLCBhbmQgZGVsZWdhdGVzIHRvICUlbWluLXNlYzItaW1wbGVtZW50YXRpb24gd2hlbiB0aGVyZQorICAgICAgICAvLyBhcmUgc2Vjb25kcworICAgICAgICArICIlJW1pbi1zZWMyOlxuIgorICAgICAgICArICIgICAgNjA6IDwwMDw7XG4iCisgICAgICAgICsgIiAgICAzNjAwOiA8JSVtaW4tc2VjMi1pbXBsZW1lbnRhdGlvbjw7XG4iCisgICAgICAgIC8vIHRoZXNlIHR3byBydWxlIHNldHMgYXJlIHVzZWQgdG8gZm9ybWF0IHRoZSBtaW51dGVzIGFuZCBzZWNvbmRzCisgICAgICAgICsgIiUlbWluLXNlYzItaW1wbGVtZW50YXRpb246XG4iCisgICAgICAgICAgICAgICAvLyBpZiB0aGVyZSBhcmUgZmV3ZXIgdGhhbiA2MCBzZWNvbmRzLCBzaG93IHRoZSBtaW51dGVzIGFueXdheQorICAgICAgICArICIgICAgMDogMDA6PTAwPTtcbiIKKyAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlIGFyZSBtaW51dGVzLCBmb3JtYXQgdGhlbSB0b28sIGFuZCBhbHdheXMgdXNlIDIgZGlnaXRzCisgICAgICAgICAgICAgICAvLyBmb3IgYm90aCBtaW51dGVzIGFuZCBzZWNvbmRzCisgICAgICAgICsgIiAgICA2MDogPSUlbWluLXNlYzM9O1xuIgorICAgICAgICArICIlJW1pbi1zZWMzOlxuIgorICAgICAgICArICIgICAgMDogOj0wMD07XG4iCisgICAgICAgICsgIiAgICA2MC82MDogPDAwPD4+O1xuIgorICAgICAgICAvLyB0aGUgbGVuaWVudC1wYXJzZSBydWxlcyBhbGxvdyB0aGUgdXNlciB0byB1c2UgYW55IG9mIHNldmVyYWwKKyAgICAgICAgLy8gY2hhcmFjdGVycyBhcyBkZWxpbWl0ZXJzIGJldHdlZW4gaG91cnMsIG1pbnV0ZXMsIGFuZCBzZWNvbmRzCisgICAgICAgICsgIiUlbGVuaWVudC1wYXJzZTpcbiIKKyAgICAgICAgKyAiICAgICYgOiA9IC4gPSAnICcgPSAtO1xuIjsKKworICAgIC8qKgorICAgICAqIFRoaXMgcnVsZSBzZXQgZm9ybWF0cyBhIG51bWJlciBvZiBwb3VuZHMgYXMgcG91bmRzLCBzaGlsbGluZ3MsIGFuZAorICAgICAqIHBlbmNlIGluIHRoZSBvbGQgRW5nbGlzaCBzeXN0ZW0gb2YgY3VycmVuY3kuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgcG91bmRzU2hpbGxpbmdzQW5kUGVuY2UgPQorICAgICAgICAvLyBmb3IgdmFsdWVzIG9mIDEgb3IgbW9yZSwgZm9ybWF0IHRoZSBpbnRlZ3JhbCBwYXJ0IHdpdGggYSBwb3VuZAorICAgICAgICAvLyBzaWduIGluIGZyb250LCBhbmQgc2hvdyBzaGlsbGluZ3MgYW5kIHBlbmNlIGlmIG5lY2Vzc2FyeQorICAgICAgICAiJW1haW46XG4iCisgICAgICAgICsgIiAgICB4LjA6IFx1MDBhMzwjLCMjMDxbID4lJXNoaWxsaW5ncy1hbmQtcGVuY2U+XTtcbiIKKyAgICAgICAgLy8gZm9yIHZhbHVlcyBiZXR3ZWVuIDAgYW5kIDEsIG9taXQgdGhlIG51bWJlciBvZiBwb3VuZHMKKyAgICAgICAgKyAiICAgIDAueDogPiUlcGVuY2UtYWxvbmU+O1xuIgorICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IGlzIHVzZWQgdG8gc2hvdyBzaGlsbGluZ3MgYW5kIHBlbmNlLiAgSXQgbXVsdGlwbGllcworICAgICAgICAvLyB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSBudW1iZXIgYnkgMjQwICh0aGUgbnVtYmVyIG9mIHBlbmNlIGluIGEKKyAgICAgICAgLy8gcG91bmQpIGFuZCB1c2VzICUlc2hpbGxpbmdzLWFuZC1wZW5jZS1pbXBsZW1lbnRhdGlvbiB0byBmb3JtYXQKKyAgICAgICAgLy8gdGhlIHJlc3VsdAorICAgICAgICArICIlJXNoaWxsaW5ncy1hbmQtcGVuY2U6XG4iCisgICAgICAgICsgIiAgICAyNDA6IDwlJXNoaWxsaW5ncy1hbmQtcGVuY2UtaW1wbGVtZW50YXRpb248O1xuIgorICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IGlzIHVzZWQgdG8gc2hvdyBzaGlsbGluZ3MgYW5kIHBlbmNlIHdoZW4gdGhlcmUgYXJlCisgICAgICAgIC8vIG5vIHBvdW5kcy4gIEl0IGFsc28gbXVsdGlwbGllcyB0aGUgdmFsdWUgYnkgMjQwLCBhbmQgdGhlbiBpdCB1c2VzCisgICAgICAgIC8vICUlcGVuY2UtYWxvbmUtaW1wbGVtZW50YXRpb24gdG8gZm9ybWF0IHRoZSByZXN1bHQuCisgICAgICAgICsgIiUlcGVuY2UtYWxvbmU6XG4iCisgICAgICAgICsgIiAgICAyNDA6IDwlJXBlbmNlLWFsb25lLWltcGxlbWVudGF0aW9uPDtcbiIKKyAgICAgICAgLy8gdGhpcyBydWxlIHNldCBmb3JtYXRzIGEgbnVtYmVyIG9mIHBlbmNlIHdoZW4gd2Uga25vdyB3ZSBhbHNvCisgICAgICAgIC8vIGhhdmUgcG91bmRzLiAgV2UgYWx3YXlzIHNob3cgc2hpbGxpbmdzICh3aXRoIGEgMCBpZiBuZWNlc3NhcnkpLAorICAgICAgICAvLyBidXQgb25seSBzaG93IHBlbmNlIGlmIHRoZSB2YWx1ZSBpc24ndCBhbiBldmVuIG51bWJlciBvZiBzaGlsbGluZ3MKKyAgICAgICAgKyAiJSVzaGlsbGluZ3MtYW5kLXBlbmNlLWltcGxlbWVudGF0aW9uOlxuIgorICAgICAgICArICIgICAgMC87IDAvPTA9O1xuIgorICAgICAgICArICIgICAgMTIvMTI6IDwwPC9bPjA+XTtcbiIKKyAgICAgICAgLy8gdGhpcyBydWxlIHNldCBmb3JtYXRzIGEgbnVtYmVyIG9mIHBlbmNlIHdoZW4gd2Uga25vdyB0aGVyZSBhcmUKKyAgICAgICAgLy8gbm8gcG91bmRzLiAgVmFsdWVzIGxlc3MgdGhhbiBhIHNoaWxsaW5nIGFyZSBzaG93biB3aXRoICJkLiIgKHRoZQorICAgICAgICAvLyBhYmJyZXZpYXRpb24gZm9yIHBlbmNlKSwgYW5kIHZhbHVlcyBncmVhdGVyIHRoYW4gYSBzaGlsbGluZyBhcmUKKyAgICAgICAgLy8gc2hvd24gd2l0aCBhIHNoaWxsaW5nIGJhciAoYW5kIHdpdGhvdXQgcGVuY2Ugd2hlbiB0aGUgdmFsdWUgaXMKKyAgICAgICAgLy8gYW4gZXZlbiBudW1iZXIgb2Ygc2hpbGxpbmdzKQorICAgICAgICArICIlJXBlbmNlLWFsb25lLWltcGxlbWVudGF0aW9uOlxuIgorICAgICAgICArICIgICAgPTA9IGQuO1xuIgorICAgICAgICArICIgICAgMTIvMTI6IDwwPC9bPjA+XTtcbiI7CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIEFsdGVybmF0ZSBudW1lcmF0aW9uIHN5c3RlbXMKKyAgICAvLworICAgIC8vIFRoZXNlIGV4YW1wbGVzIHNob3cgaG93IFJ1bGVCYXNlZE51bWJlckZvcm1hdCBjYW4gYmUgdXNlZCB0byBmb3JtYXQKKyAgICAvLyBudW1iZXJzIHVzaW5nIG5vbi1wb3NpdGlvbmFsIG51bWVyYXRpb24gc3lzdGVtcy4KKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgLyoqCisgICAgICogQXJhYmljIGRpZ2l0cy4gIFRoaXMgZXhhbXBsZSBmb3JtYXRzIG51bWJlcnMgaW4gQXJhYmljIG51bWVyYWxzLgorICAgICAqIE5vcm1hbGx5LCB5b3UnZCBkbyB0aGlzIHdpdGggRGVjaW1hbEZvcm1hdCwgYnV0IHRoaXMgc2hvd3MgdGhhdAorICAgICAqIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBjYW4gaGFuZGxlIGl0IHRvby4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBhcmFiaWNOdW1lcmFscyA9CisgICAgICAgICIwOyAxOyAyOyAzOyA0OyA1OyA2OyA3OyA4OyA5O1xuIgorICAgICAgICArICIxMDogPDw+PjtcbiIKKyAgICAgICAgKyAiMTAwOiA8PD4+PjtcbiIKKyAgICAgICAgKyAiMTAwMDogPDwsPj4+O1xuIgorICAgICAgICArICIxLDAwMCwwMDA6IDw8LD4+PjtcbiIKKyAgICAgICAgKyAiMSwwMDAsMDAwLDAwMDogPDwsPj4+O1xuIgorICAgICAgICArICIxLDAwMCwwMDAsMDAwLDAwMDogPDwsPj4+O1xuIgorICAgICAgICArICIxLDAwMCwwMDAsMDAwLDAwMCwwMDA6ID0jLCMjMD07XG4iCisgICAgICAgICsgIi14OiAtPj47XG4iCisgICAgICAgICsgIngueDogPDwuPj47IjsKKworICAgIC8qKgorICAgICAqIFdvcmRzIGZvciBkaWdpdHMuICBGb2xsb3dzIHRoZSBzYW1lIHBhdHRlcm4gYXMgdGhlIEFyYWJpYy1udW1lcmFscworICAgICAqIGV4YW1wbGUgYWJvdmUsIGJ1dCB1c2VzIHdvcmRzIGZvciB0aGUgdmFyaW91cyBkaWdpdHMgKGUuZy4sIDEyMyBjb21lcworICAgICAqIG91dCBhcyAib25lIHR3byB0aHJlZSIpLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIHdvcmRzRm9yRGlnaXRzID0KKyAgICAgICAgIi14OiBtaW51cyA+PjtcbiIKKyAgICAgICAgKyAieC54OiA8PCBwb2ludCA+PjtcbiIKKyAgICAgICAgKyAiemVybzsgb25lOyB0d287IHRocmVlOyBmb3VyOyBmaXZlOyBzaXg7XG4iCisgICAgICAgICsgIiAgICBzZXZlbjsgZWlnaHQ7IG5pbmU7XG4iCisgICAgICAgICsgIjEwOiA8PCA+PjtcbiIKKyAgICAgICAgKyAiMTAwOiA8PCA+Pj47XG4iCisgICAgICAgICsgIjEwMDA6IDw8LCA+Pj47XG4iCisgICAgICAgICsgIjEsMDAwLDAwMDogPDwsID4+PjtcbiIKKyAgICAgICAgKyAiMSwwMDAsMDAwLDAwMDogPDwsID4+PjtcbiIKKyAgICAgICAgKyAiMSwwMDAsMDAwLDAwMCwwMDA6IDw8LCA+Pj47XG4iCisgICAgICAgICsgIjEsMDAwLDAwMCwwMDAsMDAwLDAwMDogPSMsIyMwPTtcbiI7CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGV4YW1wbGUgZm9ybWF0cyBudW1iZXJzIHVzaW5nIENoaW5lc2UgY2hhcmFjdGVycyBpbiB0aGUgQXJhYmljCisgICAgICogcGxhY2UtdmFsdWUgbWV0aG9kLiAgVGhpcyB3YXMgdXNlZCBoaXN0b3JpY2FsbHkgaW4gQ2hpbmEgZm9yIGEgd2hpbGUuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgY2hpbmVzZVBsYWNlVmFsdWUgPQorICAgICAgICAiXHUzMDA3OyBcdTRlMDA7IFx1NGU4YzsgXHU0ZTA5OyBcdTU2ZGI7IFx1NGU5NDsgXHU1MTZkOyBcdTRlMDM7IFx1NTE2YjsgXHU0ZTVkO1xuIgorICAgICAgICArICIxMDogPDw+PjtcbiIKKyAgICAgICAgKyAiMTAwOiA8PD4+PjtcbiIKKyAgICAgICAgKyAiMTAwMDogPDw+Pj47XG4iCisgICAgICAgICsgIjEsMDAwLDAwMDogPDw+Pj47XG4iCisgICAgICAgICsgIjEsMDAwLDAwMCwwMDA6IDw8Pj4+O1xuIgorICAgICAgICArICIxLDAwMCwwMDAsMDAwLDAwMDogPDw+Pj47XG4iCisgICAgICAgICsgIjEsMDAwLDAwMCwwMDAsMDAwLDAwMDogPSMsIyMwPTtcbiI7CisKKyAgICAvKioKKyAgICAgKiBSb21hbiBudW1lcmFscy4gIFRoaXMgZXhhbXBsZSBoYXMgdHdvIHZhcmlhbnRzOiAlbW9kZXJuIHNob3dzIGhvdyBsYXJnZQorICAgICAqIG51bWJlcnMgYXJlIHVzdWFsbHkgaGFuZGxlZCB0b2RheTsgJWhpc3RvcmljYWwgc2VzIHRoZSBvbGRlciBzeW1ib2xzIGZvcgorICAgICAqIHRob3VzYW5kcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyByb21hbk51bWVyYWxzID0KKyAgICAgICAgIiVoaXN0b3JpY2FsOlxuIgorICAgICAgICArICIgICAgPSVtb2Rlcm49O1xuIgorICAgICAgICAgICAgICAgLy8gaW4gZWFybHkgUm9tYW4gbnVtZXJhbHMsIDEsMDAwIHdhcyBzaG93biB3aXRoIGEgY2lyY2xlCisgICAgICAgICAgICAgICAvLyBiaXNlY3RlZCBieSBhIHZlcnRpY2FsIGxpbmUuICBBZGRpdGlvbmFsIHRob3VzYW5kcyB3ZXJlCisgICAgICAgICAgICAgICAvLyBzaG93biBieSBhZGRpbmcgbW9yZSBjb25jZW50cmljIGNpcmNsZXMsIGFuZCBmaXZlcyB3ZXJlCisgICAgICAgICAgICAgICAvLyBzaG93biBieSBjdXR0aW5nIHRoZSBzeW1ib2wgZm9yIG5leHQtaGlnaGVyIHBvd2VyIG9mIDEwCisgICAgICAgICAgICAgICAvLyBpbiBoYWxmICh0aGUgbGV0dGVyIEQgZm9yIDUwMCBldm9sdmVkIGZyb20gdGhpcykuCisgICAgICAgICAgICAgICAvLyBXZSBjb3VsZCBnbyBiZXlvbmQgNDAsMDAwLCBidXQgVW5pY29kZSBkb2Vzbid0IGVuY29kZQorICAgICAgICAgICAgICAgLy8gdGhlIHN5bWJvbHMgZm9yIGhpZ2hlciBudW1iZXJzLworICAgICAgICArICIgICAgMTAwMDogXHUyMTgwWz4+XTsgMjAwMDogXHUyMTgwXHUyMTgwWz4+XTsgMzAwMDogXHUyMTgwXHUyMTgwXHUyMTgwWz4+XTsgNDAwMDogXHUyMTgwXHUyMTgxWz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDUwMDA6IFx1MjE4MVs+Pl07IDYwMDA6IFx1MjE4MVx1MjE4MFs+Pl07IDcwMDA6IFx1MjE4MVx1MjE4MFx1MjE4MFs+Pl07XG4iCisgICAgICAgICsgIiAgICA4MDAwOiBcdTIxODFcdTIxODBcdTIxODBcdTIxODBbPj5dOyA5MDAwOiBcdTIxODBcdTIxODJbPj5dO1xuIgorICAgICAgICArICIgICAgMTAsMDAwOiBcdTIxODJbPj5dOyAyMCwwMDA6IFx1MjE4Mlx1MjE4Mls+Pl07IDMwLDAwMDogXHUyMTgyXHUyMTgyXHUyMTgyWz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDQwLDAwMDogPSMsIyMwPTtcbiIKKyAgICAgICAgKyAiJW1vZGVybjpcbiIKKyAgICAgICAgKyAiICAgIDsgSTsgSUk7IElJSTsgSVY7IFY7IFZJOyBWSUk7IFZJSUk7IElYO1xuIgorICAgICAgICArICIgICAgMTA6IFhbPj5dOyAyMDogWFhbPj5dOyAzMDogWFhYWz4+XTsgNDA6IFhMWz4+XTsgNTA6IExbPj5dO1xuIgorICAgICAgICArICIgICAgNjA6IExYWz4+XTsgNzA6IExYWFs+Pl07IDgwOiBMWFhYWz4+XTsgOTA6IFhDWz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDEwMDogQ1s+Pl07IDIwMDogQ0NbPj5dOyAzMDA6IENDQ1s+Pl07IDQwMDogQ0RbPj5dOyA1MDA6IERbPj5dO1xuIgorICAgICAgICArICIgICAgNjAwOiBEQ1s+Pl07IDcwMDogRENDWz4+XTsgODAwOiBEQ0NDWz4+XTsgOTAwOiBDTVs+Pl07XG4iCisgICAgICAgICAgICAgICAvLyBpbiBtb2Rlcm4gUm9tYW4gbnVtZXJhbHMsIGhpZ2ggbnVtYmVycyBhcmUgZ2VuZXJhbGx5IHNob3duCisgICAgICAgICAgICAgICAvLyBieSBwbGFjaW5nIGEgYmFyIG92ZXIgdGhlIGxldHRlcnMgZm9yIHRoZSBsb3dlciBudW1iZXJzOgorICAgICAgICAgICAgICAgLy8gdGhlIGJhciBtdWx0aXBsaWVkIGEgbGV0dGVyJ3MgdmFsdWUgYnkgMSwwMDAKKyAgICAgICAgKyAiICAgIDEwMDA6IE1bPj5dOyAyMDAwOiBNTVs+Pl07IDMwMDA6IE1NTVs+Pl07IDQwMDA6IE1WXHUwMzA2Wz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDUwMDA6IFZcdTAzMDZbPj5dOyA2MDAwOiBWXHUwMzA2TVs+Pl07IDcwMDA6IFZcdTAzMDZNTVs+Pl07XG4iCisgICAgICAgICsgIiAgICA4MDAwOiBWXHUwMzA2TU1NWz4+XTsgOTAwMDogTVhcdTAzMDZbPj5dO1xuIgorICAgICAgICArICIgICAgMTAsMDAwOiBYXHUwMzA2Wz4+XTsgMjAsMDAwOiBYXHUwMzA2WFx1MDMwNls+Pl07IDMwLDAwMDogWFx1MDMwNlhcdTAzMDZYXHUwMzA2Wz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDQwLDAwMDogWFx1MDMwNkxcdTAzMDZbPj5dOyA1MCwwMDA6IExcdTAzMDZbPj5dOyA2MCwwMDA6IExcdTAzMDZYXHUwMzA2Wz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDcwLDAwMDogTFx1MDMwNlhcdTAzMDZYXHUwMzA2Wz4+XTsgODAsMDAwOiBMXHUwMzA2WFx1MDMwNlhcdTAzMDZYXHUwMzA2Wz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDkwLDAwMDogWFx1MDMwNkNcdTAzMDZbPj5dO1xuIgorICAgICAgICArICIgICAgMTAwLDAwMDogQ1x1MDMwNls+Pl07IDIwMCwwMDA6IENcdTAzMDZDXHUwMzA2Wz4+XTsgMzAwLDAwMDogQ1x1MDMwNkNcdTAzMDZbPj5dO1xuIgorICAgICAgICArICIgICAgNDAwLDAwMDogQ1x1MDMwNkRcdTAzMDZbPj5dOyA1MDAsMDAwOiBEXHUwMzA2Wz4+XTsgNjAwLDAwMDogRFx1MDMwNkNcdTAzMDZbPj5dO1xuIgorICAgICAgICArICIgICAgNzAwLDAwMDogRFx1MDMwNkNcdTAzMDZDXHUwMzA2Wz4+XTsgODAwLDAwMDogRFx1MDMwNkNcdTAzMDZDXHUwMzA2Q1x1MDMwNls+Pl07XG4iCisgICAgICAgICsgIiAgICA5MDAsMDAwOiA9IywjIzA9O1xuIjsKKworICAgIC8qKgorICAgICAqIEhlYnJldyBhbHBoYWJldGljIG51bWVyYWxzLiAgQmVmb3JlIGFkb3B0aW9uIG9mIEFyYWJpYyBudW1lcmFscywgSGVicmV3IHNwZWFrZXJzCisgICAgICogdXNlZCB0aGUgbGV0dGVyIG9mIHRoZWlyIGFscGhhYmV0IGFzIG51bWVyYWxzLiAgVGhlIGZpcnN0IG5pbmUgbGV0dGVycyBvZgorICAgICAqIHRoZSBhbHBoYWJldCByZXBlc2VudGVkIHRoZSB2YWx1ZXMgZnJvbSAxIHRvIDksIHRoZSBzZWNvbmQgbmluZSBsZXR0ZXJzIHRoZQorICAgICAqIG11bHRpcGxlcyBvZiAxMCwgYW5kIHRoZSByZW1haW5pbmcgbGV0dGVycyB0aGUgbXVsdGlwbGVzIG9mIDEwMC4gIFNpbmNlIHRoZXkKKyAgICAgKiByYW4gb3V0IG9mIGxldHRlcnMgYXQgNDAwLCB0aGUgcmVtYWluaW5nIG11bHRpcGxlcyBvZiAxMDAgd2VyZSByZXByZXNlbnRlZAorICAgICAqIHVzaW5nIGNvbWJpbmF0aW9ucyBvZiB0aGUgZXhpc3RpbmcgbGV0dGVycyBmb3IgdGhlIGh1bmRyZWRzLiAgTnVtYmVycyB3ZXJlCisgICAgICogZGlzdGluZ3Vpc2hlZCBmcm9tIHdvcmRzIGluIGEgbnVtYmVyIG9mIGRpZmZlcmVudCB3YXlzOiB0aGUgd2F5IHNob3duIGhlcmUKKyAgICAgKiB1c2VzIGEgc2luZ2xlIG1hcmsgYWZ0ZXIgYSBudW1iZXIgY29uc2lzdGluZyBvZiBvbmUgbGV0dGVyLCBhbmQgYSBkb3VibGUKKyAgICAgKiBtYXJrIGJldHdlZW4gdGhlIGxhc3QgdHdvIGxldHRlcnMgb2YgYSBudW1iZXIgY29uc2lzdGluZyBvZiB0d28gb3IgbW9yZQorICAgICAqIGxldHRlcnMuICBUd28gZG90cyBvdmVyIGEgbGV0dGVyIG11bHRpcGxpZWQgaXRzIHZhbHVlIGJ5IDEsMDAwLiAgQWxzbywgc2luY2UKKyAgICAgKiB0aGUgbGV0dGVyIGZvciAxMCBpcyB0aGUgZmlyc3QgbGV0dGVyIG9mIEdvZCdzIG5hbWUgYW5kIHRoZSBsZXR0ZXJzIGZvciA1IGFuZCA2CisgICAgICogYXJlIGxldHRlcnMgaW4gR29kJ3MgbmFtZSwgd2hpY2ggd2Fzbid0IHN1cHBvc2VkIHRvIGJlIHdyaXR0ZW4gb3Igc3Bva2VuLCAxNSBhbmQKKyAgICAgKiAxNiB3ZXJlIHVzdWFsbHkgd3JpdHRlbiBhcyA5ICsgNiBhbmQgOSArIDcgaW5zdGVhZCBvZiAxMCArIDUgYW5kIDEwICsgNi4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBoZWJyZXdBbHBoYWJldGljID0KKyAgICAgICAgLy8gbGV0dGVycyBmb3IgdGhlIG9uZXMKKyAgICAgICAgIiUlb25lczpcbiIKKyAgICAgICAgKyAiICAgIChubyB6ZXJvKTsgXHUwNWQwOyBcdTA1ZDE7IFx1MDVkMjsgXHUwNWQzOyBcdTA1ZDQ7IFx1MDVkNTsgXHUwNWQ2OyBcdTA1ZDc7IFx1MDVkODtcbiIKKyAgICAgICAgLy8gbGV0dGVycyBmb3IgdGhlIHRlbnMKKyAgICAgICAgKyAiJSV0ZW5zOlxuIgorICAgICAgICArICIgICAgOyBcdTA1ZDk7IFx1MDVkYjsgXHUwNWRjOyBcdTA1ZGU7IFx1MDVlMDsgXHUwNWUxOyBcdTA1ZTI7IFx1MDVlNDsgXHUwNWU2O1xuIgorICAgICAgICAvLyBsZXR0ZXJzIGZvciB0aGUgZmlyc3QgZm91ciBodW5kcmVkcworICAgICAgICArICIlJWh1bmRyZWRzOlxuIgorICAgICAgICArICIgICAgOyBcdTA1ZTc7IFx1MDVlODsgXHUwNWU5OyBcdTA1ZWE7XG4iCisgICAgICAgIC8vIHRoaXMgcnVsZSBzZXQgaXMgdXNlZCB0byB3cml0ZSB0aGUgY29tYmluYXRpb24gb2YgdGhlIHRlbnMgYW5kIG9uZXMgZGlnaXRzCisgICAgICAgIC8vIHdoZW4gd2Uga25vdyB0aGF0IG5vIG90aGVyIGRpZ2l0cyBwcmVjZWRlIHRoZW06IHRoZXkgcHV0IHRoZSBudW1lcmFsIG1hcmtzCisgICAgICAgIC8vIGluIHRoZSByaWdodCBwbGFjZSBhbmQgcHJvcGVybHkgaGFuZGxlIDE1IGFuZCAxNiAoSSdtIHVzaW5nIHRoZSBtYXRoZW1hdGljYWwKKyAgICAgICAgLy8gcHJpbWUgY2hhcmFjdGVycyBmb3IgdGhlIG51bWVyYWwgbWFya3MgYmVjYXVzZSBteSBVbmljb2RlIGZvbnQgZG9lc24ndAorICAgICAgICAvLyBpbmNsdWRlIHRoZSByZWFsIEhlYnJldyBjaGFyYWN0ZXJzLCB3aGljaCBsb29rIGp1c3QgbGlrZSB0aGUgcHJpbWUgbWFya3MpCisgICAgICAgICsgIiUldGVucy1hbmQtb25lczpcbiIKKyAgICAgICAgICAgICAgIC8vIGZvciB2YWx1ZXMgbGVzcyB0aGFuIDEwLCBqdXN0IHVzZSAlJW9uZXMgYW5kIHB1dCB0aGUgbnVtZXJhbCBtYXJrCisgICAgICAgICAgICAgICAvLyBhZnRlcndhcmQKKyAgICAgICAgKyAiICAgID0lJW9uZXM9XHUyMDMyO1xuIgorICAgICAgICAgICAgICAgLy8gcHV0IHRoZSBudW1lcmFsIG1hcmsgYXQgdGhlIGVuZCBmb3IgMTAsIGJ1dCBpbiB0aGUgbWlkZGxlIGZvcgorICAgICAgICAgICAgICAgLy8gMTEgdGhyb3VnaCAxNAorICAgICAgICArICIgICAgMTA6IDwlJXRlbnM8XHUyMDMyOyA8JSV0ZW5zPFx1MjAzMz4lJW9uZXM+O1xuIgorICAgICAgICAgICAgICAgLy8gc3BlY2lhbC1jYXNlIDE1IGFuZCAxNgorICAgICAgICArICIgICAgMTU6IFx1MDVkOFx1MjAzM1x1MDVkNTsgMTY6IFx1MDVkOFx1MjAzM1x1MDVkNjtcbiIKKyAgICAgICAgICAgICAgIC8vIGdvIGJhY2sgdG8gdGhlIG5vcm1hbCBtZXRob2QgYXQgMTcKKyAgICAgICAgKyAiICAgIDE3OiA8JSV0ZW5zPFx1MjAzMz4lJW9uZXM+O1xuIgorICAgICAgICAgICAgICAgLy8gcmVwZWF0IHRoZSBydWxlcyBmb3IgMTAgYW5kIDExIHRvIGNvdmVyIHRoZSB2YWx1ZXMgZnJvbSAyMCB0byA5OQorICAgICAgICArICIgICAgMjA6IDwlJXRlbnM8XHUyMDMyOyA8JSV0ZW5zPFx1MjAzMz4lJW9uZXM+O1xuIgorICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IGlzIHVzZWQgdG8gZm9ybWF0IG51bWJlcnMgYmVsb3cgMSwwMDAuICBJdCByZWxpZXMgb24KKyAgICAgICAgLy8gJSV0ZW5zLWFuZC1vbmVzIHRvIGZvcm1hdCB0aGUgdGVucyBhbmQgb25lcyBwbGFjZXMsIGFuZCBhZGRzIGxvZ2ljCisgICAgICAgIC8vIHRvIGhhbmRsZSB0aGUgaGlnaCBodW5kcmVkcyBhbmQgdGhlIG51bWVyYWwgbWFya3Mgd2hlbiB0aGVyZSBpcyBubworICAgICAgICAvLyB0ZW5zIGRpZ2l0LiAgTm90aWNlIGhvdyB0aGUgcnVsZXMgYXJlIHBhaXJlZDogYWxsIG9mIHRoZXNlIHBhaXJzIG9mCisgICAgICAgIC8vIHJ1bGVzIHRha2UgYWR2YW50YWdlIG9mIHRoZSByb2xsYmFjayBydWxlOiBpZiB0aGUgdmFsdWUgKGJldHdlZW4gMTAwCisgICAgICAgIC8vIGFuZCA0OTkpIGlzIGFuIGV2ZW4gbXVsdGlwbGUgb2YgMTAwLCB0aGUgcnVsZSBmb3IgMTAwIGlzIHVzZWQ7IG90aGVyd2lzZSwKKyAgICAgICAgLy8gdGhlIHJ1bGUgZm9yIDEwMSAodGhlIGZvbGxvd2luZyBydWxlKSBpcyB1c2VkLiAgVGhlIGZpcnN0IHJ1bGUgaW4gZWFjaAorICAgICAgICAvLyBwYWlyICh0aGUgb25lIGZvciB0aGUgZXZlbiBtdWx0aXBsZSkgcGxhY2VzIHRoZSBudW1lcmFsIG1hcmsgaW4gYSBkaWZmZXJlbnQKKyAgICAgICAgLy8gc3BvdCB0aGFuIHRoZSBzZWNvbmQgcnVsZSBpbiBlYWNoIHBhaXIgKHdoaWNoIGtub3dzIHRoZXJlIGFyZSBtb3JlIGRpZ2l0cworICAgICAgICAvLyBhbmQgcmVsaWVzIG9uIHRoZSBydWxlIHN1cHBseWluZyB0aGVtIHRvIGFsc28gc3VwcGx5IHRoZSBudW1lcmFsIG1hcmspLgorICAgICAgICAvLyBUaGUgY2FsbCB0byAlJW51bGwgaW4gbGluZSAxMCBpcyB0aGVyZSBzaW1wbHkgdG8gaW52b2tlIHRoZSByb2xsYmFjaworICAgICAgICAvLyBydWxlLgorICAgICAgICArICIlJWxvdy1vcmRlcjpcbiIKKyAgICAgICAgICAgICAgIC8vIHRoaXMgcnVsZSBpcyBvbmx5IGNhbGxlZCB3aGVuIHRoZXJlIGFyZSBvdGhlciBjaGFyYWN0ZXJzIGJlZm9yZS4KKyAgICAgICAgICAgICAgIC8vIEl0IHBsYWNlcyB0aGUgbnVtZXJhbCBtYXJrIGJlZm9yZSB0aGUgbGFzdCBkaWdpdAorICAgICAgICArICIgICAgXHUyMDMzPSUlb25lcz07XG4iCisgICAgICAgICAgICAgICAvLyB0aGUgcnVsZSBmb3IgMTAgcGxhY2VzIHRoZSBudW1lcmFsIG1hcmsgYmVmb3JlIHRoZSAxMCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgIC8vIChiZWNhdXNlIHdlIGtub3cgaXQncyB0aGUgbGFzdCBjaGFyYWN0ZXIpOyB0aGUgcnVsZSBmb3IgMTEgcmVsaWVzCisgICAgICAgICAgICAgICAvLyBvbiAlJXRlbnMtYW5kLW9uZXMgdG8gcGxhY2UgdGhlIG51bWVyYWwgbWFyaworICAgICAgICArICIgICAgMTA6IFx1MjAzMzwlJXRlbnM8OyA9JSV0ZW5zLWFuZC1vbmVzPT4lJW51bGw+O1xuIgorICAgICAgICAgICAgICAgLy8gdGhlIHJ1bGUgZm9yIDEwMCBwbGFjZXMgdGhlIG51bWVyYWwgbWFyayBiZWZvcmUgdGhlIDEwMCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgIC8vICh3ZSBrbm93IGl0J3MgdGhlIGxhc3QgY2hhcmFjdGVyKTsgdGhlIHJ1bGUgZm9yIDEwMSByZWN1cnNlcyB0bworICAgICAgICAgICAgICAgLy8gZmlsbCBpbiB0aGUgcmVtYWluaW5nIGRpZ2l0cyBhbmQgdGhlIG51bWVyYWwgbWFyaworICAgICAgICArICIgICAgMTAwOiA8JSVodW5kcmVkczxcdTIwMzI7IDwlJWh1bmRyZWRzPD4+O1xuIgorICAgICAgICAgICAgICAgLy8gc3BlY2lhbC1jYXNlIHRoZSBodW5kcmVkcyBmcm9tIDUwMCB0byA5MDAgYmVjYXVzZSB0aGV5IGNvbnNpc3Qgb2YKKyAgICAgICAgICAgICAgIC8vIG1vcmUgdGhhbiBvbmUgY2hhcmFjdGVyCisgICAgICAgICsgIiAgICA1MDA6IFx1MDVlYVx1MjAzM1x1MDVlNzsgXHUwNWVhXHUwNWU3Pj47XG4iCisgICAgICAgICsgIiAgICA2MDA6IFx1MDVlYVx1MjAzM1x1MDVlODsgXHUwNWVhXHUwNWU4Pj47XG4iCisgICAgICAgICsgIiAgICA3MDA6IFx1MDVlYVx1MjAzM1x1MDVlOTsgXHUwNWVhXHUwNWU5Pj47XG4iCisgICAgICAgICsgIiAgICA4MDA6IFx1MDVlYVx1MjAzM1x1MDVlYTsgXHUwNWVhXHUwNWVhPj47XG4iCisgICAgICAgICsgIiAgICA5MDA6IFx1MDVlYVx1MDVlYVx1MjAzM1x1MDVlNzsgXHUwNWVhXHUwNWVhXHUwNWU3Pj47XG4iCisgICAgICAgIC8vIHRoaXMgcnVsZSBzZXQgaXMgdXNlZCB0byBmb3JtYXQgdmFsdWVzIG9mIDEsMDAwIG9yIG1vcmUuICBIZXJlLCB3ZSBkb24ndAorICAgICAgICAvLyB3b3JyeSBhYm91dCB0aGUgbnVtZXJhbCBtYXJrLCBhbmQgd2UgYWRkIHR3byBkb3RzICh0aGUgVW5pY29kZSBjb21iaW5pbmcKKyAgICAgICAgLy8gZGlhZXJlc2lzIGNoYXJhY3RlcikgdG8gZXZlciBsZXR0ZXIKKyAgICAgICAgKyAiJSVoaWdoLW9yZGVyOlxuIgorICAgICAgICAgICAgICAgLy8gcHV0IHRoZSBvbmVzIGRpZ2l0LCBmb2xsb3dlZCBieSB0aGUgZGlhZXJlc2lzCisgICAgICAgICsgIiAgICA9JSVvbmVzPVx1MDMwODtcbiIKKyAgICAgICAgICAgICAgIC8vIHRoZSB0ZW5zIGNhbiBiZSBoYW5kbGVkIHdpdGggcmVjdXJzaW9uCisgICAgICAgICsgIiAgICAxMDogPCUldGVuczxcdTAzMDhbPj5dO1xuIgorICAgICAgICAgICAgICAgLy8gc3RpbGwgaGF2ZSB0byBzcGVjaWFsLWNhc2UgMTUgYW5kIDE2CisgICAgICAgICsgIiAgICAxNTogXHUwNWQ4XHUwMzA4XHUwNWQ1XHUwMzA4OyAxNjogXHUwNWQ4XHUwMDMwNzhcdTA1ZDZcdTAzMDg7XG4iCisgICAgICAgICAgICAgICAvLyBiYWNrIHRvIHRoZSByZWd1bGFyIHJ1bGVzIGF0IDE3CisgICAgICAgICsgIiAgICAxNzogPCUldGVuczxcdTAzMDhbPj5dO1xuIgorICAgICAgICAgICAgICAgLy8gdGhlIGh1bmRyZWRzIHdpdGggdGhlIGRvdHMgYWRkZWQgKGFuZCB3aXRob3V0IHdvcnJ5aW5nIGFib3V0CisgICAgICAgICAgICAgICAvLyBwbGFjaW5nIHRoZSBudW1lcmFsIG1hcmspCisgICAgICAgICsgIiAgICAxMDA6IDwlJWh1bmRyZWRzPFx1MDMwOFs+Pl07XG4iCisgICAgICAgICsgIiAgICA1MDA6IFx1MDVlYVx1MDMwOFx1MDVlN1x1MDMwOFs+Pl07XG4iCisgICAgICAgICsgIiAgICA2MDA6IFx1MDVlYVx1MDMwOFx1MDVlOFx1MDMwOFs+Pl07XG4iCisgICAgICAgICsgIiAgICA3MDA6IFx1MDVlYVx1MDMwOFx1MDVlOVx1MDMwOFs+Pl07XG4iCisgICAgICAgICsgIiAgICA4MDA6IFx1MDVlYVx1MDMwOFx1MDVlYVx1MDMwOFs+Pl07XG4iCisgICAgICAgICsgIiAgICA5MDA6IFx1MDVlYVx1MDMwOFx1MDVlYVx1MDMwOFx1MDVlN1x1MDMwOFs+Pl07XG4iCisgICAgICAgIC8vIHRoaXMgcnVsZSBzZXQgZG9lc24ndCBkbyBhbnl0aGluZzsgaXQncyB1c2VkIGJ5IHNvbWUgb3RoZXIgcnVsZXMgdG8KKyAgICAgICAgLy8gaW52b2tlIHRoZSByb2xsYmFjayBydWxlCisgICAgICAgICsgIiAlJW51bGw6XG4iCisgICAgICAgICsgIiAgICA7XG4iCisgICAgICAgIC8vIHRoZSBtYWluIHJ1bGUgc2V0LgorICAgICAgICArICIlbWFpbjpcbiIKKyAgICAgICAgICAgICAgIC8vIGZvciB2YWx1ZXMgYmVsb3cgMTAsIGp1c3Qgb3V0cHV0IHRoZSBsZXR0ZXIgYW5kIHRoZSBudW1lcmFsIG1hcmsKKyAgICAgICAgKyAiICAgID0lJW9uZXM9XHUyMDMyO1xuIgorICAgICAgICAgICAgICAgLy8gZm9yIHZhbHVlcyBmcm9tIDEwIHRvIDk5LCB1c2UgJSV0ZW5zLWFuZC1vbmVzIHRvIGRvIHRoZSBmb3JtYXR0aW5nCisgICAgICAgICsgIiAgICAxMDogPSUldGVucy1hbmQtb25lcz07XG4iCisgICAgICAgICAgICAgICAvLyBmb3IgdmFsdWVzIGZyb20gMTAwIHRvIDk5OSwgdXNlICUlbG93LW9yZGVyIHRvIGRvIHRoZSBmb3JtYXR0aW5nCisgICAgICAgICsgIiAgICAxMDA6ID0lJWxvdy1vcmRlcj07XG4iCisgICAgICAgICAgICAgICAvLyBmb3IgdmFsdWVzIG9mIDEsMDAwIGFuZCBvdmVyLCB1c2UgJSVoaWdoLW9yZGVyIHRvIGRvIHRoZSBmb3JtYXR0aW5nCisgICAgICAgICsgIiAgICAxMDAwOiA8JSVoaWdoLW9yZGVyPFs+JSVsb3ctb3JkZXI+XTtcbiI7CisKKyAgICAvKioKKyAgICAgKiBHcmVlayBhbHBoYWJldGljIG51bWVyYWxzLiAgVGhlIEdyZWVrcywgYmVmb3JlIGFkb3B0aW5nIHRoZSBBcmFiaWMgbnVtZXJhbHMsCisgICAgICogYWxzbyB1c2VkIHRoZSBsZXR0ZXJzIG9mIHRoZWlyIGFscGhhYmV0IGFzIG51bWVyYWxzLiAgVGhlcmUgYXJlIHRocmVlIG5vdy0KKyAgICAgKiBvYnNvbGV0ZSBHcmVlayBsZXR0ZXJzIHRoYXQgYXJlIHVzZWQgYXMgbnVtZXJhbHM7IG1hbnkgZm9udHMgZG9uJ3QgaGF2ZSB0aGVtLgorICAgICAqIExhcmdlIG51bWJlcnMgd2VyZSBoYW5kbGVkIG1hbnkgZGlmZmVyZW50IHdheXM7IHRoZSB3YXkgc2hvd24gaGVyZSBkaXZpZGVzCisgICAgICogbGFyZ2UgbnVtYmVycyBpbnRvIGdyb3VwcyBvZiBmb3VyIGxldHRlcnMgKGZhY3RvcnMgb2YgMTAsMDAwKSwgYW5kIHNlcGFyYXRlcworICAgICAqIHRoZSBncm91cHMgd2l0aCB0aGUgY2FwaXRhbCBsZXR0ZXIgbXUgKGZvciBteXJpYWQpLiAgQ2FwaXRhbCBsZXR0ZXJzIGFyZSB1c2VkCisgICAgICogZm9yIHZhbHVlcyBiZWxvdyAxMCwwMDA7IHNtYWxsIGxldHRlcnMgZm9yIGhpZ2hlciBudW1iZXJzICh0byBtYWtlIHRoZSBjYXBpdGFsCisgICAgICogbXUgc3RhbmQgb3V0KS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBncmVla0FscGhhYmV0aWMgPQorICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IGlzIHVzZWQgZm9yIGZvcm1hdHRpbmcgbnVtYmVycyBiZWxvdyAxMCwwMDAuICBJdCB1c2VzCisgICAgICAgIC8vIGNhcGl0YWwgbGV0dGVycy4KKyAgICAgICAgIiUlbG93LW9yZGVyOlxuIgorICAgICAgICArICIgICAgKG5vIHplcm8pOyBcdTAzOTE7IFx1MDM5MjsgXHUwMzkzOyBcdTAzOTQ7IFx1MDM5NTsgXHUwM2RjOyBcdTAzOTY7IFx1MDM5NzsgXHUwMzk4O1xuIgorICAgICAgICArICIgICAgMTA6IFx1MDM5OVs+Pl07IDIwOiBcdTAzOWFbPj5dOyAzMDogXHUwMzliWz4+XTsgNDA6IFx1MDM5Y1s+Pl07IDUwOiBcdTAzOWRbPj5dO1xuIgorICAgICAgICArICIgICAgNjA6IFx1MDM5ZVs+Pl07IDcwOiBcdTAzOWZbPj5dOyA4MDogXHUwM2EwWz4+XTsgOTA6IFx1MDNkZVs+Pl07XG4iCisgICAgICAgICsgIiAgICAxMDA6IFx1MDNhMVs+Pl07IDIwMDogXHUwM2EzWz4+XTsgMzAwOiBcdTAzYTRbPj5dOyA0MDA6IFx1MDNhNVs+Pl07XG4iCisgICAgICAgICsgIiAgICA1MDA6IFx1MDNhNls+Pl07IDYwMDogXHUwM2E3Wz4+XTsgNzAwOiBcdTAzYThbPj5dOyA4MDA6IFx1MDNhOVs+Pl07XG4iCisgICAgICAgICsgIiAgICA5MDA6IFx1MDNlMFs+Pl07XG4iCisgICAgICAgICAgICAgICAvLyB0aGUgdGhvdXNhbmRzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgc2FtZSBudW1iZXJzIGFzIHRoZSBvbmVzLCBidXQKKyAgICAgICAgICAgICAgIC8vIHdpdGggYSBjb21tYS1saWtlIG1hcmsgYWRkZWQgdG8gdGhlaXIgbGVmdCBzaG91bGRlcgorICAgICAgICArICIgICAgMTAwMDogXHUwMzkxXHUwMzEzWz4+XTsgMjAwMDogXHUwMzkyXHUwMzEzWz4+XTsgMzAwMDogXHUwMzkzXHUwMzEzWz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDQwMDA6IFx1MDM5NFx1MDMxM1s+Pl07IDUwMDA6IFx1MDM5NVx1MDMxM1s+Pl07IDYwMDA6IFx1MDNkY1x1MDMxM1s+Pl07XG4iCisgICAgICAgICsgIiAgICA3MDAwOiBcdTAzOTZcdTAzMTNbPj5dOyA4MDAwOiBcdTAzOTdcdTAzMTNbPj5dOyA5MDAwOiBcdTAzOThcdTAzMTNbPj5dO1xuIgorICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IGlzIHRoZSBzYW1lIGFzIGFib3ZlLCBidXQgdXNlcyBsb3dlcmNhc2UgbGV0dGVycy4gIEl0IGlzIHVzZWQKKyAgICAgICAgLy8gZm9yIGZvcm1hdHRpbmcgdGhlIGdyb3VwcyBpbiBudW1iZXJzIGFib3ZlIDEwLDAwMC4KKyAgICAgICAgKyAiJSVoaWdoLW9yZGVyOlxuIgorICAgICAgICArICIgICAgKG5vIHplcm8pOyBcdTAzYjE7IFx1MDNiMjsgXHUwM2IzOyBcdTAzYjQ7IFx1MDNiNTsgXHUwM2RjOyBcdTAzYjY7IFx1MDNiNzsgXHUwM2I4O1xuIgorICAgICAgICArICIgICAgMTA6IFx1MDNiOVs+Pl07IDIwOiBcdTAzYmFbPj5dOyAzMDogXHUwM2JiWz4+XTsgNDA6IFx1MDNiY1s+Pl07IDUwOiBcdTAzYmRbPj5dO1xuIgorICAgICAgICArICIgICAgNjA6IFx1MDNiZVs+Pl07IDcwOiBcdTAzYmZbPj5dOyA4MDogXHUwM2MwWz4+XTsgOTA6IFx1MDNkZVs+Pl07XG4iCisgICAgICAgICsgIiAgICAxMDA6IFx1MDNjMVs+Pl07IDIwMDogXHUwM2MzWz4+XTsgMzAwOiBcdTAzYzRbPj5dOyA0MDA6IFx1MDNjNVs+Pl07XG4iCisgICAgICAgICsgIiAgICA1MDA6IFx1MDNjNls+Pl07IDYwMDogXHUwM2M3Wz4+XTsgNzAwOiBcdTAzYzhbPj5dOyA4MDA6IFx1MDNjOVs+Pl07XG4iCisgICAgICAgICsgIiAgICA5MDA6IFx1MDNjMFs+Pl07XG4iCisgICAgICAgICsgIiAgICAxMDAwOiBcdTAzYjFcdTAzMTNbPj5dOyAyMDAwOiBcdTAzYjJcdTAzMTNbPj5dOyAzMDAwOiBcdTAzYjNcdTAzMTNbPj5dO1xuIgorICAgICAgICArICIgICAgNDAwMDogXHUwM2I0XHUwMzEzWz4+XTsgNTAwMDogXHUwM2I1XHUwMzEzWz4+XTsgNjAwMDogXHUwM2RjXHUwMzEzWz4+XTtcbiIKKyAgICAgICAgKyAiICAgIDcwMDA6IFx1MDNiNlx1MDMxM1s+Pl07IDgwMDA6IFx1MDNiN1x1MDMxM1s+Pl07IDkwMDA6IFx1MDNiOFx1MDMxM1s+Pl07XG4iCisgICAgICAgIC8vIHRoZSBtYWluIHJ1bGUgc2V0CisgICAgICAgICsgIiVtYWluOlxuIgorICAgICAgICAgICAgICAgLy8gZm9yIHZhbHVlcyBiZWxvdyAxMCwwMDAsIGp1c3QgdXNlICUlbG93LW9yZGVyCisgICAgICAgICsgIiAgICA9JSVsb3ctb3JkZXI9O1xuIgorICAgICAgICAgICAgICAgLy8gZm9yIHZhbHVlcyBhYm92ZSAxMCwwMDAsIHNwbGl0IGludG8gdHdvIGdyb3VwcyBvZiBmb3VyIGRpZ2l0cworICAgICAgICAgICAgICAgLy8gYW5kIGZvcm1hdCBlYWNoIHdpdGggJSVoaWdoLW9yZGVyIChwdXR0aW5nIGFuIE0gaW4gYmV0d2VuKQorICAgICAgICArICIgICAgMTAsMDAwOiA8JSVoaWdoLW9yZGVyPFx1MDM5Yz4lJWhpZ2gtb3JkZXI+O1xuIgorICAgICAgICAgICAgICAgLy8gZm9yIHZhbHVlcyBhYm92ZSAxMDAsMDAwLDAwMCwgYWRkIGFub3RoZXIgZ3JvdXAgb250byB0aGUgZnJvbnQKKyAgICAgICAgICAgICAgIC8vIGFuZCBhbm90aGVyIE0KKyAgICAgICAgKyAiICAgIDEwMCwwMDAsMDAwOiA8JSVoaWdoLW9yZGVyPFx1MDM5Yz4+XG4iOworCisgICAgLyoqCisgICAgICogQSBsaXN0IG9mIGFsbCB0aGUgc2FtcGxlIHJ1bGUgc2V0cywgdXNlZCBieSB0aGUgZGVtbyBwcm9ncmFtLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nW10gc2FtcGxlUnVsZVNldHMgPQorICAgICAgICB7IHVzRW5nbGlzaCwKKyAgICAgICAgICB1a0VuZ2xpc2gsCisgICAgICAgICAgc3BhbmlzaCwKKyAgICAgICAgICBmcmVuY2gsCisgICAgICAgICAgc3dpc3NGcmVuY2gsCisgICAgICAgICAgZ2VybWFuLAorICAgICAgICAgIGl0YWxpYW4sCisgICAgICAgICAgc3dlZGlzaCwKKyAgICAgICAgICBkdXRjaCwKKyAgICAgICAgICBqYXBhbmVzZSwKKyAgICAgICAgICBncmVlaywKKyAgICAgICAgICBydXNzaWFuLAorICAgICAgICAgIGhlYnJldywKKyAgICAgICAgICBvcmRpbmFsLAorICAgICAgICAgIG1lc3NhZ2UxLAorICAgICAgICAgIGRvbGxhcnNBbmRDZW50cywKKyAgICAgICAgICBkZWNpbWFsQXNGcmFjdGlvbiwKKyAgICAgICAgICBjbG9zZXN0RnJhY3Rpb24sCisgICAgICAgICAgc3RvY2ssCisgICAgICAgICAgYWJiRW5nbGlzaCwKKyAgICAgICAgICB1bml0cywKKyAgICAgICAgICBtZXNzYWdlMiwKKyAgICAgICAgICBkb3plbnMsCisgICAgICAgICAgZHVyYXRpb25JblNlY29uZHMsCisgICAgICAgICAgZHVyYXRpb25JbkhvdXJzLAorICAgICAgICAgIHBvdW5kc1NoaWxsaW5nc0FuZFBlbmNlLAorICAgICAgICAgIGFyYWJpY051bWVyYWxzLAorICAgICAgICAgIHdvcmRzRm9yRGlnaXRzLAorICAgICAgICAgIGNoaW5lc2VQbGFjZVZhbHVlLAorICAgICAgICAgIHJvbWFuTnVtZXJhbHMsCisgICAgICAgICAgaGVicmV3QWxwaGFiZXRpYywKKyAgICAgICAgICBncmVla0FscGhhYmV0aWMgfTsKKworICAgIC8qKgorICAgICAqIFRoZSBkaXNwbGF5YWJsZSBuYW1lcyBmb3IgYWxsIHRoZSBzYW1wbGUgcnVsZSBzZXRzLCBpbiB0aGUgc2FtZSBvcmRlciBhcworICAgICAqIHRoZSBwcmVjZWRpbmcgYXJyYXkuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBzYW1wbGVSdWxlU2V0TmFtZXMgPQorICAgICAgICB7ICJFbmdsaXNoIChVUykiLAorICAgICAgICAgICJFbmdsaXNoIChVSykiLAorICAgICAgICAgICJTcGFuaXNoIiwKKyAgICAgICAgICAiRnJlbmNoIChGcmFuY2UpIiwKKyAgICAgICAgICAiRnJlbmNoIChTd2l0emVybGFuZCkiLAorICAgICAgICAgICJHZXJtYW4iLAorICAgICAgICAgICJJdGFsaWFuIiwKKyAgICAgICAgICAiU3dlZGlzaCIsCisgICAgICAgICAgIkR1dGNoIiwKKyAgICAgICAgICAiSmFwYW5lc2UiLAorICAgICAgICAgICJHcmVlayIsCisgICAgICAgICAgIlJ1c3NpYW4iLAorICAgICAgICAgICJIZWJyZXciLAorICAgICAgICAgICJFbmdsaXNoIG9yZGluYWwgYWJicmV2aWF0aW9ucyIsCisgICAgICAgICAgIlNpbXBsZSBtZXNzYWdlIGZvcm1hdHRpbmciLAorICAgICAgICAgICJEb2xsYXJzIGFuZCBjZW50cyIsCisgICAgICAgICAgIkRlY2ltYWxzIGFzIGZyYWN0aW9ucyIsCisgICAgICAgICAgIkNsb3Nlc3QgZnJhY3Rpb24iLAorICAgICAgICAgICJTdG9jayBwcmljZXMiLAorICAgICAgICAgICJBYmJyZXZpYXRlZCBVUyBFbmdsaXNoIiwKKyAgICAgICAgICAiQ2hhbmdpbmcgZGltZW5zaW9ucyIsCisgICAgICAgICAgIkNvbXBsZXggbWVzc2FnZSBmb3JtYXR0aW5nIiwKKyAgICAgICAgICAiRG96ZW5zIiwKKyAgICAgICAgICAiRHVyYXRpb24gKHZhbHVlIGluIHNlY29uZHMpIiwKKyAgICAgICAgICAiRHVyYXRpb24gKHZhbHVlIGluIGhvdXJzKSIsCisgICAgICAgICAgIlBvdW5kcywgc2hpbGxpbmdzLCBhbmQgcGVuY2UiLAorICAgICAgICAgICJBcmFiaWMgbnVtZXJhbHMiLAorICAgICAgICAgICJXb3JkcyBmb3IgZGlnaXRzIiwKKyAgICAgICAgICAiQ2hpbmVzZSBwbGFjZS12YWx1ZSBub3RhdGlvbiIsCisgICAgICAgICAgIlJvbWFuIG51bWVyYWxzIiwKKyAgICAgICAgICAiSGVicmV3IGFobHBoYWJldGljIG51bWVyYWxzIiwKKyAgICAgICAgICAiR3JlZWsgYWxwaGFiZXRpYyBudW1lcmFscyIgfTsKKworICAgIC8qKgorICAgICAqIFRoZSBiYXNlIGxvY2FsZSBmb3IgZWFjaCBvZiB0aGUgc2FtcGxlIHJ1bGUgc2V0cy4gIFRoZSBsb2NhbGUgaXMgdXNlZCB0bworICAgICAqIGRldGVybWluZSBEZWNpbWFsRm9ybWF0IGJlaGF2aW9yLCBsZW5pZW50LXBhcnNlIGJlaGF2aW9yLCBhbmQgdGV4dC1kaXNwbGF5CisgICAgICogc2VsZWN0aW9uICh3ZSBoYXZlIGEgaGFjayBpbiBoZXJlIHRvIGFsbG93IGRpc3BsYXkgb2Ygbm9uLUxhdGluIHNjcmlwdHMpLgorICAgICAqIE51bGwgbWVhbnMgdGhlIGxvY2FsZSBzZXR0aW5nIGlzIGlycmVsZXZhbnQgYW5kIHRoZSBkZWZhdWx0IGNhbiBiZSB1c2VkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgTG9jYWxlW10gc2FtcGxlUnVsZVNldExvY2FsZXMgPQorICAgICAgICB7IExvY2FsZS5VUywKKyAgICAgICAgICBMb2NhbGUuVUssCisgICAgICAgICAgbmV3IExvY2FsZSgiZXMiLCAiIiwgIiIpLAorICAgICAgICAgIExvY2FsZS5GUkFOQ0UsCisgICAgICAgICAgbmV3IExvY2FsZSgiZnIiLCAiQ0giLCAiIiksCisgICAgICAgICAgTG9jYWxlLkdFUk1BTiwKKyAgICAgICAgICBMb2NhbGUuSVRBTElBTiwKKyAgICAgICAgICBuZXcgTG9jYWxlKCJzdiIsICIiLCAiIiksCisgICAgICAgICAgbmV3IExvY2FsZSgibmwiLCAiIiwgIiIpLAorICAgICAgICAgIExvY2FsZS5KQVBBTkVTRSwKKyAgICAgICAgICBuZXcgTG9jYWxlKCJlbCIsICIiLCAiIiksCisgICAgICAgICAgbmV3IExvY2FsZSgicnUiLCAiIiwgIiIpLAorICAgICAgICAgIG5ldyBMb2NhbGUoIml3IiwgIiIsICIiKSwKKyAgICAgICAgICBMb2NhbGUuRU5HTElTSCwKKyAgICAgICAgICBMb2NhbGUuRU5HTElTSCwKKyAgICAgICAgICBMb2NhbGUuVVMsCisgICAgICAgICAgTG9jYWxlLkVOR0xJU0gsCisgICAgICAgICAgbnVsbCwKKyAgICAgICAgICBudWxsLAorICAgICAgICAgIExvY2FsZS5FTkdMSVNILAorICAgICAgICAgIG51bGwsCisgICAgICAgICAgTG9jYWxlLkVOR0xJU0gsCisgICAgICAgICAgTG9jYWxlLkVOR0xJU0gsCisgICAgICAgICAgbnVsbCwKKyAgICAgICAgICBudWxsLAorICAgICAgICAgIExvY2FsZS5VSywKKyAgICAgICAgICBudWxsLAorICAgICAgICAgIExvY2FsZS5FTkdMSVNILAorICAgICAgICAgIG5ldyBMb2NhbGUoInpoIiwgIiIsICIiKSwKKyAgICAgICAgICBudWxsLAorICAgICAgICAgIG5ldyBMb2NhbGUoIml3IiwgIiIsICIiKSwKKyAgICAgICAgICBuZXcgTG9jYWxlKCJlbCIsICIiLCAiIiksCisgICAgICAgICAgbnVsbCB9OworCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nW10gc2FtcGxlUnVsZVNldENvbW1lbnRhcnkgPSB7CisgICAgICAgICAgICAiVGhpcyBkZW1vbnN0cmF0aW9uIHZlcnNpb24gb2YgdGhlICIKKyAgICAgICAgICAgICsgIlUuUy4gRW5nbGlzaCBzcGVsbG91dCBydWxlcyBoYXMgZm91ciB2YXJpYW50czogMSkgJXNpbXBsaWZpZWQgaXMgYSAiCisgICAgICAgICAgICArICJzZXQgb2YgcnVsZXMgc2hvd2luZyB0aGUgc2ltcGxlIG1ldGhvZCBvZiBzcGVsbGluZyBvdXQgbnVtYmVycyBpbiAiCisgICAgICAgICAgICArICJFbmdsaXNoOiAyODkgaXMgZm9ybWF0dGVkIGFzIFwidHdvIGh1bmRyZWQgZWlnaHR5LW5pbmVcIi4gIDIpICVhbHQtdGVlbnMgIgorICAgICAgICAgICAgKyAiaXMgdGhlIHNhbWUgYXMgJXNpbXBsaWZpZWQsIGV4Y2VwdCB0aGF0IHZhbHVlcyBiZXR3ZWVuIDEsMDAwIGFuZCA5LDk5OSAiCisgICAgICAgICAgICArICJ3aG9zZSBodW5kcmVkcyBwbGFjZSBpc24ndCB6ZXJvIGFyZSBmb3JtYXR0ZWQgaW4gaHVuZHJlZHMuICBGb3IgZXhhbXBsZSwgIgorICAgICAgICAgICAgKyAiMSw5ODMgaXMgZm9ybWF0dGVkIGFzIFwibmluZXRlZW4gaHVuZHJlZCBlaWdodHktdGhyZWUsXCIgYW5kIDIsMTgzIGlzICIKKyAgICAgICAgICAgICsgImZvcm1hdHRlZCBhcyBcInR3ZW50eS1vbmUgaHVuZHJlZCBlaWdodHktdGhyZWUsXCIgYnV0IDIsMDgzIGlzIHN0aWxsICIKKyAgICAgICAgICAgICsgImZvcm1hdHRlZCBhcyBcInR3byB0aG91c2FuZCBlaWdodHktdGhyZWUuXCIgIDMpICVvcmRpbmFsIGZvcm1hdHMgdGhlICIKKyAgICAgICAgICAgICsgInZhbHVlcyBhcyBvcmRpbmFsIG51bWJlcnMgaW4gRW5nbGlzaCAoZS5nLiwgMjg5IGlzIFwidHdvIGh1bmRyZWQgZWlnaHR5LSIKKyAgICAgICAgICAgICsgIm5pbnRoXCIpLiAgNCkgJWRlZmF1bHQgdXNlcyBhIG1vcmUgY29tcGxpY2F0ZWQgYWxnb3JpdGhtIHRvIGZvcm1hdCAiCisgICAgICAgICAgICArICJudW1iZXJzIGluIGEgbW9yZSBuYXR1cmFsIHdheTogMjg5IGlzIGZvcm1hdHRlZCBhcyBcInR3byBodW5kcmVkIEFORCAiCisgICAgICAgICAgICArICJlaWdodHktbmluZVwiIGFuZCBjb21tYXMgYXJlIGluc2VydGVkIGJldHdlZW4gdGhlIHRob3VzYW5kcyBncm91cHMgZm9yICIKKyAgICAgICAgICAgICsgInZhbHVlcyBhYm92ZSAxMDAsMDAwLiIsCisKKyAgICAgICAgICAgICJVLksuIEVuZ2xpc2ggaGFzIG9uZSBzaWduaWZpY2FudCAiCisgICAgICAgICAgICArICJkaWZmZXJlbmNlIGZyb20gVS5TLiBFbmdsaXNoOiB0aGUgbmFtZXMgZm9yIHZhbHVlcyBvZiAxLDAwMCwwMDAsMDAwICIKKyAgICAgICAgICAgICsgImFuZCBoaWdoZXIuICBJbiBBbWVyaWNhbiBFbmdsaXNoLCBlYWNoIHN1Y2Nlc3NpdmUgXCItaWxsaW9uXCIgaXMgMSwwMDAgIgorICAgICAgICAgICAgKyAidGltZXMgZ3JlYXRlciB0aGFuIHRoZSBwcmVjZWRpbmcgb25lOiAxLDAwMCwwMDAsMDAwIGlzIFwib25lIGJpbGxpb25cIiAiCisgICAgICAgICAgICArICJhbmQgMSwwMDAsMDAwLDAwMCwwMDAgaXMgXCJvbmUgdHJpbGxpb24uXCIgIEluIEJyaXRpc2ggRW5nbGlzaCwgZWFjaCAiCisgICAgICAgICAgICArICJzdWNjZXNzaXZlIFwiLWlsbGlvblwiIGlzIG9uZSBtaWxsaW9uIHRpbWVzIGdyZWF0ZXIgdGhhbiB0aGUgb25lIGJlZm9yZTogIgorICAgICAgICAgICAgKyAiXCJvbmUgYmlsbGlvblwiIGlzIDEsMDAwLDAwMCwwMDAsMDAwIChvciB3aGF0IEFtZXJpY2FucyB3b3VsZCBjYWxsIGEgIgorICAgICAgICAgICAgKyAiXCJ0cmlsbGlvblwiKSwgYW5kIFwib25lIHRyaWxsaW9uXCIgaXMgMSwwMDAsMDAwLDAwMCwwMDAsMDAwLDAwMC4gICIKKyAgICAgICAgICAgICsgIjEsMDAwLDAwMCwwMDAgaW4gQnJpdGlzaCBFbmdsaXNoIGlzIFwib25lIHRob3VzYW5kIG1pbGxpb24uXCIgIChUaGlzICIKKyAgICAgICAgICAgICsgInZhbHVlIGlzIHNvbWV0aW1lcyBjYWxsZWQgYSBcIm1pbGxpYXJkLFwiIGJ1dCB0aGlzIHdvcmQgc2VlbXMgdG8gaGF2ZSAiCisgICAgICAgICAgICArICJmYWxsZW4gaW50byBkaXN1c2UuKSIsCisKKyAgICAgICAgICAgICJUaGUgU3BhbmlzaCBydWxlcyBhcmUgcXVpdGUgc2ltaWxhciB0byAiCisgICAgICAgICAgICArICJ0aGUgRW5nbGlzaCBydWxlcywgYnV0IHRoZXJlIGFyZSBzb21lIGltcG9ydGFudCBkaWZmZXJlbmNlczogIgorICAgICAgICAgICAgKyAiRmlyc3QsIHdlIGhhdmUgdG8gcHJvdmlkZSBzZXBhcmF0ZSBydWxlcyBmb3IgbW9zdCBvZiB0aGUgdHdlbnRpZXMgIgorICAgICAgICAgICAgKyAiYmVjYXVzZSB0aGUgb25lcyBkaWdpdCBmcmVxdWVudGx5IHBpY2tzIHVwIGFuIGFjY2VudCBtYXJrIHRoYXQgaXQgIgorICAgICAgICAgICAgKyAiZG9lc24ndCBoYXZlIHdoZW4gc3RhbmRpbmcgYWxvbmUuICBTZWNvbmQsIGVhY2ggbXVsdGlwbGUgb2YgMTAwIGhhcyAiCisgICAgICAgICAgICArICJ0byBiZSBzcGVjaWZpZWQgc2VwYXJhdGVseSBiZWNhdXNlIHRoZSBtdWx0aXBsaWVyIG9uIDEwMCB2ZXJ5IG9mdGVuICIKKyAgICAgICAgICAgICsgImNoYW5nZXMgZm9ybSBpbiB0aGUgY29udHJhY3Rpb246IDUwMCBpcyBcInF1aW5pZW50b3MsXCIgbm90ICIKKyAgICAgICAgICAgICsgIlwiY2luY29jaWVudG9zLlwiICBJbiBhZGRpdGlvbiwgdGhlIHdvcmQgZm9yIDEwMCBpcyBcImNpZW5cIiB3aGVuICIKKyAgICAgICAgICAgICsgInN0YW5kaW5nIGFsb25lLCBidXQgY2hhbmdlcyB0byBcImNpZW50b1wiIHdoZW4gZm9sbG93ZWQgYnkgbW9yZSBkaWdpdHMuICAiCisgICAgICAgICAgICArICJUaGVyZSBhbHNvIHNvbWUgb3RoZXIgZGlmZmVyZW5jZXMuIiwKKworICAgICAgICAgICAgIkZyZW5jaCBhZGRzIHNvbWUgaW50ZXJlc3RpbmcgcXVpcmtzIG9mIGl0cyAiCisgICAgICAgICAgICArICJvd246IDEpIFRoZSB3b3JkIFwiZXRcIiBpcyBpbnRlcnBvc2VkIGJldHdlZW4gdGhlIHRlbnMgYW5kIG9uZXMgZGlnaXRzLCAiCisgICAgICAgICAgICArICJidXQgb25seSBpZiB0aGUgb25lcyBkaWdpdCBpZiAxOiAyMCBpcyBcInZpbmd0LFwiIGFuZCAyIGlzIFwidmluZ3QtZGV1eCxcIiAiCisgICAgICAgICAgICArICJidXQgMjEgaXMgXCJ2aW5ndC1ldC11bi5cIiAgMikgIFRoZXJlIGFyZSBubyB3b3JkcyBmb3IgNzAsIDgwLCBvciA5MC4gICIKKyAgICAgICAgICAgICsgIlwicXVhdHJlLXZpbmd0c1wiIChcImZvdXIgdHdlbnRpZXNcIikgaXMgdXNlZCBmb3IgODAsIGFuZCB2YWx1ZXMgcHJvY2VlZCAiCisgICAgICAgICAgICArICJieSBzY29yZSBmcm9tIDYwIHRvIDk5IChlLmcuLCA3MyBpcyBcInNvaXhhbnRlLXRyZWl6ZVwiIFtcInNpeHR5LXRoaXJ0ZWVuXCJdKS4gICIKKyAgICAgICAgICAgICsgIk51bWJlcnMgZnJvbSAxLDEwMCB0byAxLDE5OSBhcmUgcmVuZGVyZWQgYXMgaHVuZHJlZHMgcmF0aGVyIHRoYW4gIgorICAgICAgICAgICAgKyAidGhvdXNhbmRzOiAxLDEwMCBpcyBcIm9uemUgY2VudHNcIiAoXCJlbGV2ZW4gaHVuZHJlZFwiKSwgcmF0aGVyIHRoYW4gIgorICAgICAgICAgICAgKyAiXCJtaWxsZSBjZW50XCIgKFwib25lIHRob3VzYW5kIG9uZSBodW5kcmVkXCIpIiwKKworICAgICAgICAgICAgIlN3aXNzIEZyZW5jaCBkaWZmZXJzIGZyb20gRnJlbmNoIEZyZW5jaCAiCisgICAgICAgICAgICArICJpbiB0aGF0IGl0IGRvZXMgaGF2ZSB3b3JkcyBmb3IgNzAsIDgwLCBhbmQgOTAuICBUaGlzIHJ1bGUgc2V0IHNob3dzIHRoZW0sICIKKyAgICAgICAgICAgICsgImFuZCBpcyBzaW1wbGVyIGFzIGEgcmVzdWx0LiIsCisKKyAgICAgICAgICAgICJHZXJtYW4gYWxzbyBhZGRzIHNvbWUgaW50ZXJlc3RpbmcgIgorICAgICAgICAgICAgKyAiY2hhcmFjdGVyaXN0aWNzLiAgRm9yIHZhbHVlcyBiZWxvdyAxLDAwMCwwMDAsIG51bWJlcnMgYXJlIGN1c3RvbWFyaWx5ICIKKyAgICAgICAgICAgICsgIndyaXR0ZW4gb3V0IGFzIGEgc2luZ2xlIHdvcmQuICBBbmQgdGhlIG9uZXMgZGlnaXQgUFJFQ0VERVMgdGhlIHRlbnMgIgorICAgICAgICAgICAgKyAiZGlnaXQgKGUuZy4sIDIzIGlzIFwiZHJlaXVuZHp3YW56aWcsXCIgbm90IFwiendhbnppZ3VuZGRyZWlcIikuIiwKKworICAgICAgICAgICAgIkxpa2UgR2VybWFuLCBtb3N0IEl0YWxpYW4gbnVtYmVycyBhcmUgIgorICAgICAgICAgICAgKyAid3JpdHRlbiBhcyBzaW5nbGUgd29yZHMuICBXaGF0IG1ha2VzIHRoZXNlIHJ1bGVzIGNvbXBsaWNhdGVkIGlzIHRoZSBydWxlICIKKyAgICAgICAgICAgICsgInRoYXQgc2F5cyB0aGF0IHdoZW4gYSB3b3JkIGVuZGluZyBpbiBhIHZvd2VsIGFuZCBhIHdvcmQgYmVnaW5uaW5nIHdpdGggIgorICAgICAgICAgICAgKyAiYSB2b3dlbCBhcmUgY29tYmluZWQgaW50byBhIGNvbXBvdW5kLCB0aGUgdm93ZWwgaXMgZHJvcHBlZCBmcm9tIHRoZSAiCisgICAgICAgICAgICArICJlbmQgb2YgdGhlIGZpcnN0IHdvcmQ6IDE4MCBpcyBcImNlbnRvdHRhbnRhLFwiIG5vdCBcImNlbnRvb3R0YW50YS5cIiAgIgorICAgICAgICAgICAgKyAiVGhlIGNvbXBsZXhpdHkgb2YgdGhpcyBydWxlIHNldCBpcyB0byBwcm9kdWNlIHRoaXMgYmVoYXZpb3IuIiwKKworICAgICAgICAgICAgIlNwZWxsb3V0IHJ1bGVzIGZvciBTd2VkaXNoLiIsCisKKyAgICAgICAgICAgICJTcGVsbG91dCBydWxlcyBmb3IgRHV0Y2guICBOb3RpY2UgdGhhdCBpbiBEdXRjaCwgYXMgaW4gR2VybWFuLCIKKyAgICAgICAgICAgICsgInRoZSBvbmVzIGRpZ2l0IHByZWNlZGVzIHRoZSB0ZW5zIGRpZ2l0LiIsCisKKyAgICAgICAgICAgICJJbiBKYXBhbmVzZSwgdGhlcmUgcmVhbGx5IGlzbid0IGFueSAiCisgICAgICAgICAgICArICJkaXN0aW5jdGlvbiBiZXR3ZWVuIGEgbnVtYmVyIHdyaXR0ZW4gb3V0IGluIGRpZ2l0cyBhbmQgYSBudW1iZXIgIgorICAgICAgICAgICAgKyAid3JpdHRlbiBvdXQgaW4gd29yZHM6IHRoZSBpZGVvZ3JhcGhpYyBjaGFyYWN0ZXJzIGFyZSBib3RoIGRpZ2l0cyAiCisgICAgICAgICAgICArICJhbmQgd29yZHMuICBUaGlzIHJ1bGUgc2V0IHByb3ZpZGVzIHR3byB2YXJpYW50czogICV0cmFkaXRpb25hbCAiCisgICAgICAgICAgICArICJ1c2VzIHRoZSB0cmFkaXRpb25hbCBDSksgbnVtZXJhbHMgKHdoaWNoIGFyZSBhbHNvIHVzZWQgaW4gQ2hpbmEgIgorICAgICAgICAgICAgKyAiYW5kIEtvcmVhKS4gICVmaW5hbmNpYWwgdXNlcyBhbHRlcm5hdGUgaWRlb2dyYXBocyBmb3IgbWFueSBudW1iZXJzICIKKyAgICAgICAgICAgICsgInRoYXQgYXJlIGhhcmRlciB0byBhbHRlciB0aGFuIHRoZSB0cmFkaXRpb25hbCBudW1lcmFscyAob25lIGNvdWxkICIKKyAgICAgICAgICAgICsgImZhaXJseSBlYXNpbHkgY2hhbmdlIGEgb25lIHRvICIKKyAgICAgICAgICAgICsgImEgdGhyZWUganVzdCBieSBhZGRpbmcgdHdvIHN0cm9rZXMsIGZvciBleGFtcGxlKS4gIFRoaXMgaXMgYWxzbyBkb25lIGluICIKKyAgICAgICAgICAgICsgInRoZSBvdGhlciBjb3VudHJpZXMgdXNpbmcgQ2hpbmVzZSBpZG9ncmFwaHMsIGJ1dCBkaWZmZXJlbnQgaWRlb2dyYXBocyAiCisgICAgICAgICAgICArICJhcmUgdXNlZCBpbiB0aG9zZSBwbGFjZXMuIiwKKworICAgICAgICAgICAgIkFnYWluIGluIEdyZWVrIHdlIGhhdmUgdG8gc3VwcGx5IHRoZSB3b3JkcyAiCisgICAgICAgICAgICArICJmb3IgdGhlIG11bHRpcGxlcyBvZiAxMDAgYmVjYXVzZSB0aGV5IGNhbid0IGJlIGRlcml2ZWQgYWxnb3JpdGhtaWNhbGx5LiAgIgorICAgICAgICAgICAgKyAiQWxzbywgdGhlIHRlbnMgZGdpdCBjaGFuZ2VzIGZvcm0gd2hlbiBmb2xsb3dlZCBieSBhIG9uZXMgZGlnaXQ6IGFuICIKKyAgICAgICAgICAgICsgImFjY2VudCBtYXJrIGRpc2FwcGVhcnMgZnJvbSB0aGUgdGVucyBkaWdpdCBhbmQgbW92ZXMgdG8gdGhlIG9uZXMgZGlnaXQuICAiCisgICAgICAgICAgICArICJUaGVyZWZvcmUsIGluc3RlYWQgb2YgdXNpbmcgdGhlIFtdIG5vdGF0aW9uLCB3ZSBhY3R1YWxseSBoYXZlIHRvIHVzZSAiCisgICAgICAgICAgICArICJ0d28gc2VwYXJhdGUgcnVsZXMgZm9yIGVhY2ggbXVsdGlwbGUgb2YgMTAgdG8gc2hvdyB0aGUgdHdvIGZvcm1zIG9mICIKKyAgICAgICAgICAgICsgInRoZSB3b3JkLiIsCisKKyAgICAgICAgICAgICJTcGVsbG91dCBydWxlcyBmb3IgUnVzc2lhbi4iLAorCisgICAgICAgICAgICAiU3BlbGxvdXQgcnVsZXMgZm9yIEhlYnJldy4gIEhlYnJldyBhY3R1YWxseSBoYXMgaW5mbGVjdGVkIGZvcm1zIGZvciAiCisgICAgICAgICAgICArICJtb3N0IG9mIHRoZSBsb3dlci1vcmRlciBudW1iZXJzLiAgVGhlIG1hc2N1bGluZSBmb3JtcyBhcmUgc2hvd24gIgorICAgICAgICAgICAgKyAiaGVyZS4iLAorCisgICAgICAgICAgICAiVGhpcyBydWxlIHNldCBhZGRzIGFuIEVuZ2xpc2ggb3JkaW5hbCBhYmJyZXZpYXRpb24gdG8gdGhlIGVuZCBvZiBhICIKKyAgICAgICAgICAgICsgIm51bWJlci4gIEZvciBleGFtcGxlLCAyIGlzIGZvcm1hdHRlZCBhcyBcIjJuZFwiLiAgUGFyc2luZyBkb2Vzbid0IHdvcmsgd2l0aCAiCisgICAgICAgICAgICArICJ0aGlzIHJ1bGUgc2V0LiAgVG8gcGFyc2UsIHVzZSBEZWNpbWFsRm9ybWF0IG9uIHRoZSBudW1lcmFsLiIsCisKKyAgICAgICAgICAgICJUaGlzIGlzIGEgc2ltcGxlIG1lc3NhZ2UtZm9ybWF0dGluZyBleGFtcGxlLiAgTm9ybWFsbHkgb25lIHdvdWxkICIKKyAgICAgICAgICAgICsgInVzZSBDaG9pY2VGb3JtYXQgYW5kIE1lc3NhZ2VGb3JtYXQgdG8gZG8gc29tZXRoaW5nIHRoaXMgc2ltcGxlLCAiCisgICAgICAgICAgICArICJidXQgdGhpcyBzaG93cyBpdCBjb3VsZCBiZSBkb25lIHdpdGggUnVsZUJhc2VkTnVtYmVyRm9ybWF0IHRvby4gICIKKyAgICAgICAgICAgICsgIkEgbWVzc2FnZS1mb3JtYXR0aW5nIGV4YW1wbGUgdGhhdCBtaWdodCB3b3JrIGJldHRlciB3aXRoICIKKyAgICAgICAgICAgICsgIlJ1bGVCYXNlZE51bWJlckZvcm1hdCBhcHBlYXJzIGxhdGVyLiIsCisKKyAgICAgICAgICAgICJUaGUgbmV4dCBmZXcgZXhhbXBsZXMgZGVtb25zdHJhdGUgZnJhY3Rpb24gaGFuZGxpbmcuICAiCisgICAgICAgICAgICArICJUaGlzIGV4YW1wbGUgZm9ybWF0cyBhIG51bWJlciBpbiBvbmUgb2YgdGhlIHR3byBzdHlsZXMgb2Z0ZW4gdXNlZCAiCisgICAgICAgICAgICArICJvbiBjaGVja3MuICAlZG9sbGFycy1hbmQtaHVuZHJlZHRocyBmb3JtYXRzIGNlbnRzIGFzIGh1bmRyZWR0aHMgb2YgIgorICAgICAgICAgICAgKyAiYSBkb2xsYXIgKDIzLjQwIGNvbWVzIG91dCBhcyBcInR3ZW50eS10aHJlZSBhbmQgNDAvMTAwIGRvbGxhcnNcIikuICAiCisgICAgICAgICAgICArICIlZG9sbGFycy1hbmQtY2VudHMgZm9ybWF0cyBpbiBkb2xsYXJzIGFuZCBjZW50cyAoMjMuNDAgY29tZXMgb3V0IGFzICIKKyAgICAgICAgICAgICsgIlwidHdlbnR5LXRocmVlIGRvbGxhcnMgYW5kIGZvcnR5IGNlbnRzXCIpIiwKKworICAgICAgICAgICAgIlRoaXMgcnVsZSBzZXQgc2hvd3MgdGhlIGZyYWN0aW9uYWwgcGFydCBvZiB0aGUgbnVtYmVyIGFzIGEgZnJhY3Rpb24gIgorICAgICAgICAgICAgKyAid2l0aCBhIHBvd2VyIG9mIDEwIGFzIHRoZSBkZW5vbWluYXRvci4gIFNvbWUgbGFuZ3VhZ2VzIGRvbid0IHNwZWxsICIKKyAgICAgICAgICAgICsgIm91dCB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIGEgbnVtYmVyIGFzIFwicG9pbnQgb25lIHR3byB0aHJlZSxcIiBidXQgIgorICAgICAgICAgICAgKyAiYWx3YXlzIHJlbmRlciBpdCBhcyBhIGZyYWN0aW9uLiAgSWYgd2Ugc3RpbGwgd2FudCB0byB0cmVhdCB0aGUgZnJhY3Rpb25hbCAiCisgICAgICAgICAgICArICJwYXJ0IG9mIHRoZSBudW1iZXIgYXMgYSBkZWNpbWFsLCB0aGVuIHRoZSBmcmFjdGlvbidzIGRlbm9taW5hdG9yICIKKyAgICAgICAgICAgICsgImlzIGFsd2F5cyBhIHBvd2VyIG9mIDEwLiAgVGhpcyBleGFtcGxlIGRvZXMgdGhhdDogMjMuMTI1IGlzIGZvcm1hdHRlZCAiCisgICAgICAgICAgICArICJhcyBcInR3ZW50eS10aHJlZSBhbmQgb25lIGh1bmRyZWQgdHdlbnR5LWZpdmUgdGhvdXNhbmR0aHNcIiAoYXMgb3Bwb3NlZCAiCisgICAgICAgICAgICArICJ0byBcInR3ZW50eS10aHJlZSBwb2ludCBvbmUgdHdvIGZpdmVcIiBvciBcInR3ZW50eS10aHJlZSBhbmQgb25lIGVpZ2h0aFwiKS4iLAorCisgICAgICAgICAgICAiTnVtYmVyIHdpdGggY2xvc2VzdCBmcmFjdGlvbi4gIFRoaXMgZXhhbXBsZSBmb3JtYXRzIGEgdmFsdWUgdXNpbmcgIgorICAgICAgICAgICAgKyAibnVtZXJhbHMsIGJ1dCBzaG93cyB0aGUgZnJhY3Rpb25hbCBwYXJ0IGFzIGEgcmF0aW8gKGZyYWN0aW9uKSByYXRoZXIgIgorICAgICAgICAgICAgKyAidGhhbiBhIGRlY2ltYWwuICBUaGUgZnJhY3Rpb24gYWx3YXlzIGhhcyBhIGRlbm9taW5hdG9yIGJldHdlZW4gMiBhbmQgMTAuIiwKKworICAgICAgICAgICAgIkFtZXJpY2FuIHN0b2NrLXByaWNlIGZvcm1hdHRpbmcuICBOb24taW50ZWdyYWwgc3RvY2sgcHJpY2VzIGFyZSBzdGlsbCAiCisgICAgICAgICAgICArICJnZW5lcmFsbHkgc2hvd24gaW4gZWlnaHRocyBvciBzaXh0ZWVudGhzIG9mIGRvbGxhcnMgaW5zdGVhZCBvZiBkb2xsYXJzICIKKyAgICAgICAgICAgICsgImFuZCBjZW50cy4gIFRoaXMgZXhhbXBsZSBmb3JtYXRzIHN0b2NrIHByaWNlcyBpbiB0aGlzIHdheSBpZiBwb3NzaWJsZSwgIgorICAgICAgICAgICAgKyAiYW5kIGluIGRvbGxhcnMgYW5kIGNlbnRzIGlmIG5vdC4iLAorCisgICAgICAgICAgICAiVGhlIG5leHQgZmV3IGV4YW1wbGVzIGRlbW9uc3RyYXRlIHVzaW5nIGEgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IHRvICIKKyAgICAgICAgICAgICsgImNoYW5nZSB0aGUgdW5pdHMgYSB2YWx1ZSBpcyBkZW5vbWluYXRlZCBpbiBkZXBlbmRpbmcgb24gaXRzIG1hZ25pdHVkZS4gICIKKyAgICAgICAgICAgICsgIlRoZSBleGFtcGxlIHNob3dzIGxhcmdlIG51bWJlcnMgdGhlIHdheSB0aGV5IG9mdGVuIGFwcGVhciBpcyBud2VzcGFwZXJzOiAiCisgICAgICAgICAgICArICIxLDIwMCwwMDAgaXMgZm9ybWF0dGVkIGFzIFwiMS4yIG1pbGxpb25cIi4iLAorCisgICAgICAgICAgICAiVGhpcyBleGFtcGxlIHRha2VzIGEgbnVtYmVyIG9mIG1ldGVycyBhbmQgZm9ybWF0cyBpdCBpbiB3aGF0ZXZlciB1bml0ICIKKyAgICAgICAgICAgICsgIndpbGwgcHJvZHVjZSBhIG51bWJlciB3aXRoIGZyb20gb25lIHRvIHRocmVlIGRpZ2l0cyBiZWZvcmUgdGhlIGRlY2ltYWwgIgorICAgICAgICAgICAgKyAicG9pbnQuICBGb3IgZXhhbXBsZSwgMjMwLDAwMCBpcyBmb3JtYXR0ZWQgYXMgXCIyMzAga21cIi4iLAorCisgICAgICAgICAgICAiQSBtb3JlIGNvbXBsaWNhdGVkIG1lc3NhZ2UtZm9ybWF0dGluZyBleGFtcGxlLiAgSGVyZSwgaW4gYWRkaXRpb24gdG8gIgorICAgICAgICAgICAgKyAiaGFuZGxpbmcgdGhlIHNpbmd1bGFyIGFuZCBwbHVyYWwgdmVyc2lvbnMgb2YgdGhlIHdvcmQsIHRoZSB2YWx1ZSBpcyAiCisgICAgICAgICAgICArICJkZW5vbWluYXRlZCBpbiBieXRlcywga2lsb2J5dGVzLCBvciBtZWdhYnl0ZXMgZGVwZW5kaW5nIG9uIGl0cyBtYWduaXR1ZGUuICAiCisgICAgICAgICAgICArICJBbHNvIG5vdGljZSB0aGF0IGl0IGNvcnJlY3RseSB0cmVhdHMgYSBraWxvYnl0ZSBhcyAxLDAyNCBieXRlcyAobm90IDEsMDAwKSwgIgorICAgICAgICAgICAgKyAiYW5kIGEgbWVnYWJ5dGUgYXMgMSwwMjQga2lsb2J5dGVzIChub3QgMSwwMDApLiIsCisKKyAgICAgICAgICAgICJUaGlzIGV4YW1wbGUgZm9ybWF0cyBhIG51bWJlciBpbiBkb3plbnMgYW5kIGdyb3NzLiAgVGhpcyBpcyBpbnRlbmRlZCB0byAiCisgICAgICAgICAgICArICJkZW1vbnN0cmF0ZSBob3cgdGhpcyBydWxlIHNldCBjYW4gYmUgdXNlZCB0byBmb3JtYXQgbnVtYmVycyBpbiBzeXN0ZW1zICIKKyAgICAgICAgICAgICsgIm90aGVyIHRoYW4gYmFzZSAxMC4gIFRoZSBcIi8xMlwiIGFmdGVyIHRoZSBydWxlcycgYmFzZSB2YWx1ZXMgY29udHJvbHMgdGhpcy4gICIKKyAgICAgICAgICAgICsgIkFsc28gbm90aWNlIHRoYXQgdGhlIGJhc2UgZG9lc24ndCBoYXZlIHRvIGJlIGNvbnNpc3RlbnQgdGhyb3VnaG91dCB0aGUgIgorICAgICAgICAgICAgKyAid2hvbGUgcnVsZSBzZXQ6IHdlIGdvIGJhY2sgdG8gYmFzZSAxMCBmb3IgdmFsdWVzIG92ZXIgMSwwMDAuIiwKKworICAgICAgICAgICAgIlRoZSBuZXh0IGZldyBleGFtcGxlcyBzaG93IGhvdyBhIHNpbmdsZSB2YWx1ZSBjYW4gYmUgZGl2aWRlZCB1cCBpbnRvIG1ham9yICIKKyAgICAgICAgICAgICsgImFuZCBtaW5vciB1bml0cyB0aGF0IGRvbid0IHJlbGF0ZSB0byBlYWNoIG90aGVyIGJ5IGEgZmFjdG9yIG9mIDEwLiAgIgorICAgICAgICAgICAgKyAiVGhpcyBleGFtcGxlIGZvcm1hdHMgYSBudW1iZXIgb2Ygc2Vjb25kcyBpbiBzZXhhZ2VzaW1hbCBub3RhdGlvbiAiCisgICAgICAgICAgICArICIoaS5lLiwgaG91cnMsIG1pbnV0ZXMsIGFuZCBzZWNvbmRzKS4gICV3aXRoLXdvcmRzIGZvcm1hdHMgaXQgd2l0aCAiCisgICAgICAgICAgICArICJ3b3JkcyAoMzc0MCBpcyBcIjEgaG91ciwgMiBtaW51dGVzLCAyMCBzZWNvbmRzXCIpIGFuZCAlaW4tbnVtZXJhbHMgIgorICAgICAgICAgICAgKyAiZm9ybWF0cyBpdCBlbnRpcmVseSBpbiBudW1lcmFscyAoMzc0MCBpcyBcIjE6MDI6MjBcIikuIiwKKworICAgICAgICAgICAgIlRoaXMgZXhhbXBsZSBmb3JtYXRzIGEgbnVtYmVyIG9mIGhvdXJzIGluIHNleGFnZXNpbWFsIG5vdGF0aW9uIChpLmUuLCAiCisgICAgICAgICAgICArICJob3VycywgbWludXRlcywgYW5kIHNlY29uZHMpLiAgJXdpdGgtd29yZHMgZm9ybWF0cyB0aGUgdmFsdWUgdXNpbmcgIgorICAgICAgICAgICAgKyAid29yZHMgZm9yIHRoZSB1bml0cywgYW5kICVpbi1udW1lcmFscyBmb3JtYXRzIHRoZSB2YWx1ZSB1c2luZyBvbmx5ICIKKyAgICAgICAgICAgICsgIm51bWVyYWxzLiIsCisKKyAgICAgICAgICAgICJUaGlzIHJ1bGUgc2V0IGZvcm1hdHMgYSBudW1iZXIgb2YgcG91bmRzIGFzIHBvdW5kcywgc2hpbGxpbmdzLCBhbmQgIgorICAgICAgICAgICAgKyAicGVuY2UgaW4gdGhlIG9sZCBFbmdsaXNoIHN5c3RlbSBvZiBjdXJyZW5jeS4iLAorCisgICAgICAgICAgICAiVGhlc2UgZXhhbXBsZXMgc2hvdyBob3cgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGNhbiBiZSB1c2VkIHRvIGZvcm1hdCAiCisgICAgICAgICAgICArICJudW1iZXJzIHVzaW5nIG5vbi1wb3NpdGlvbmFsIG51bWVyYXRpb24gc3lzdGVtcy4gICIKKyAgICAgICAgICAgICsgIlRoaXMgZXhhbXBsZSBmb3JtYXRzIG51bWJlcnMgaW4gQXJhYmljIG51bWVyYWxzLiAgIgorICAgICAgICAgICAgKyAiTm9ybWFsbHksIHlvdSdkIGRvIHRoaXMgd2l0aCBEZWNpbWFsRm9ybWF0LCBidXQgdGhpcyBzaG93cyB0aGF0ICIKKyAgICAgICAgICAgICsgIlJ1bGVCYXNlZE51bWJlckZvcm1hdCBjYW4gaGFuZGxlIGl0IHRvby4iLAorCisgICAgICAgICAgICAiVGhpcyBleGFtcGxlIGZvbGxvd3MgdGhlIHNhbWUgcGF0dGVybiBhcyB0aGUgQXJhYmljLW51bWVyYWxzICIKKyAgICAgICAgICAgICsgImV4YW1wbGUsIGJ1dCB1c2VzIHdvcmRzIGZvciB0aGUgdmFyaW91cyBkaWdpdHMgKGUuZy4sIDEyMyBjb21lcyAiCisgICAgICAgICAgICArICJvdXQgYXMgXCJvbmUgdHdvIHRocmVlXCIpLiIsCisKKyAgICAgICAgICAgICJUaGlzIGV4YW1wbGUgZm9ybWF0cyBudW1iZXJzIHVzaW5nIENoaW5lc2UgY2hhcmFjdGVycyBpbiB0aGUgQXJhYmljICIKKyAgICAgICAgICAgICsgInBsYWNlLXZhbHVlIG1ldGhvZC4gIFRoaXMgd2FzIHVzZWQgaGlzdG9yaWNhbGx5IGluIENoaW5hIGZvciBhIHdoaWxlLiIsCisKKyAgICAgICAgICAgICJSb21hbiBudW1lcmFscy4gIFRoaXMgZXhhbXBsZSBoYXMgdHdvIHZhcmlhbnRzOiAlbW9kZXJuIHNob3dzIGhvdyBsYXJnZSAiCisgICAgICAgICAgICArICJudW1iZXJzIGFyZSB1c3VhbGx5IGhhbmRsZWQgdG9kYXk7ICVoaXN0b3JpY2FsIHNlcyB0aGUgb2xkZXIgc3ltYm9scyBmb3IgIgorICAgICAgICAgICAgKyAidGhvdXNhbmRzLiAgTm90IGFsbCBvZiB0aGUgY2hhcmFjdGVycyBhcmUgZGlzcGxheWFibGUgd2l0aCBtb3N0IGZvbnRzLiIsCisKKyAgICAgICAgICAgICJIZWJyZXcgYWxwaGFiZXRpYyBudW1lcmFscy4gIEJlZm9yZSBhZG9wdGlvbiBvZiBBcmFiaWMgbnVtZXJhbHMsIEhlYnJldyBzcGVha2VycyAiCisgICAgICAgICAgICArICJ1c2VkIHRoZSBsZXR0ZXIgb2YgdGhlaXIgYWxwaGFiZXQgYXMgbnVtZXJhbHMuICBUaGUgZmlyc3QgbmluZSBsZXR0ZXJzIG9mICIKKyAgICAgICAgICAgICsgInRoZSBhbHBoYWJldCByZXBlc2VudGVkIHRoZSB2YWx1ZXMgZnJvbSAxIHRvIDksIHRoZSBzZWNvbmQgbmluZSBsZXR0ZXJzIHRoZSAiCisgICAgICAgICAgICArICJtdWx0aXBsZXMgb2YgMTAsIGFuZCB0aGUgcmVtYWluaW5nIGxldHRlcnMgdGhlIG11bHRpcGxlcyBvZiAxMDAuICBTaW5jZSB0aGV5ICIKKyAgICAgICAgICAgICsgInJhbiBvdXQgb2YgbGV0dGVycyBhdCA0MDAsIHRoZSByZW1haW5pbmcgbXVsdGlwbGVzIG9mIDEwMCB3ZXJlIHJlcHJlc2VudGVkICIKKyAgICAgICAgICAgICsgInVzaW5nIGNvbWJpbmF0aW9ucyBvZiB0aGUgZXhpc3RpbmcgbGV0dGVycyBmb3IgdGhlIGh1bmRyZWRzLiAgTnVtYmVycyB3ZXJlICIKKyAgICAgICAgICAgICsgImRpc3Rpbmd1aXNoZWQgZnJvbSB3b3JkcyBpbiBhIG51bWJlciBvZiBkaWZmZXJlbnQgd2F5czogdGhlIHdheSBzaG93biBoZXJlICIKKyAgICAgICAgICAgICsgInVzZXMgYSBzaW5nbGUgbWFyayBhZnRlciBhIG51bWJlciBjb25zaXN0aW5nIG9mIG9uZSBsZXR0ZXIsIGFuZCBhIGRvdWJsZSAiCisgICAgICAgICAgICArICJtYXJrIGJldHdlZW4gdGhlIGxhc3QgdHdvIGxldHRlcnMgb2YgYSBudW1iZXIgY29uc2lzdGluZyBvZiB0d28gb3IgbW9yZSAiCisgICAgICAgICAgICArICJsZXR0ZXJzLiAgVHdvIGRvdHMgb3ZlciBhIGxldHRlciBtdWx0aXBsaWVkIGl0cyB2YWx1ZSBieSAxLDAwMC4gIEFsc28sIHNpbmNlICIKKyAgICAgICAgICAgICsgInRoZSBsZXR0ZXIgZm9yIDEwIGlzIHRoZSBmaXJzdCBsZXR0ZXIgb2YgR29kJ3MgbmFtZSBhbmQgdGhlIGxldHRlcnMgZm9yIDUgYW5kIDYgIgorICAgICAgICAgICAgKyAiYXJlIGxldHRlcnMgaW4gR29kJ3MgbmFtZSwgd2hpY2ggd2Fzbid0IHN1cHBvc2VkIHRvIGJlIHdyaXR0ZW4gb3Igc3Bva2VuLCAxNSBhbmQgIgorICAgICAgICAgICAgKyAiMTYgd2VyZSB1c3VhbGx5IHdyaXR0ZW4gYXMgOSArIDYgYW5kIDkgKyA3IGluc3RlYWQgb2YgMTAgKyA1IGFuZCAxMCArIDYuIiwKKworICAgICAgICAgICAgIkdyZWVrIGFscGhhYmV0aWMgbnVtZXJhbHMuICBUaGUgR3JlZWtzLCBiZWZvcmUgYWRvcHRpbmcgdGhlIEFyYWJpYyBudW1lcmFscywgIgorICAgICAgICAgICAgKyAiYWxzbyB1c2VkIHRoZSBsZXR0ZXJzIG9mIHRoZWlyIGFscGhhYmV0IGFzIG51bWVyYWxzLiAgVGhlcmUgYXJlIHRocmVlIG5vdy0iCisgICAgICAgICAgICArICJvYnNvbGV0ZSBHcmVlayBsZXR0ZXJzIHRoYXQgYXJlIHVzZWQgYXMgbnVtZXJhbHM7IG1hbnkgZm9udHMgZG9uJ3QgaGF2ZSB0aGVtLiAgIgorICAgICAgICAgICAgKyAiTGFyZ2UgbnVtYmVycyB3ZXJlIGhhbmRsZWQgbWFueSBkaWZmZXJlbnQgd2F5czsgdGhlIHdheSBzaG93biBoZXJlIGRpdmlkZXMgIgorICAgICAgICAgICAgKyAibGFyZ2UgbnVtYmVycyBpbnRvIGdyb3VwcyBvZiBmb3VyIGxldHRlcnMgKGZhY3RvcnMgb2YgMTAsMDAwKSwgYW5kIHNlcGFyYXRlcyAiCisgICAgICAgICAgICArICJ0aGUgZ3JvdXBzIHdpdGggdGhlIGNhcGl0YWwgbGV0dGVyIG11IChmb3IgbXlyaWFkKS4gIENhcGl0YWwgbGV0dGVycyBhcmUgdXNlZCAiCisgICAgICAgICAgICArICJmb3IgdmFsdWVzIGJlbG93IDEwLDAwMDsgc21hbGwgbGV0dGVycyBmb3IgaGlnaGVyIG51bWJlcnMgKHRvIG1ha2UgdGhlIGNhcGl0YWwgIgorICAgICAgICAgICAgKyAibXUgc3RhbmQgb3V0KS4iLAorCisgICAgICAgICAgICAiVGhpcyBpcyBhIGN1c3RvbSAodXNlci1kZWZpbmVkKSBydWxlIHNldC4iCisgICAgICAgIH07Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9kZW1vL3JibmYvcGFja2FnZS5odG1sIGIvc3JjL2NvbS9pYm0vZGVtby9yYm5mL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40ODkxN2FlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vZGVtby9yYm5mL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPCEtLSAgQ29weXJpZ2h0IChDKSAyMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorICBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vZGVtby9yYm5mL0F0dGljL3BhY2thZ2UuaHRtbCx2ICQKKyAgJFJldmlzaW9uOiAxLjEgJAorICAkRGF0ZTogMjAwMC8wMy8xNSAxNzo0NDowMiAkCistLT4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIj4KK1J1bGVCYXNlZE51bWJlckZvcm1hdCBkZW1vIGFwcGxpYXRpb24uCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vZGVtby90cmFuc2xpdC9EZW1vLmphdmEgYi9zcmMvY29tL2libS9kZW1vL3RyYW5zbGl0L0RlbW8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44M2I5MWZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vZGVtby90cmFuc2xpdC9EZW1vLmphdmEKQEAgLTAsMCArMSwyNjYgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2RlbW8vdHJhbnNsaXQvQXR0aWMvRGVtby5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDAzOjQ3OjQ0ICQgCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS5kZW1vLnRyYW5zbGl0OworaW1wb3J0IGphdmEuYXBwbGV0Lio7CitpbXBvcnQgamF2YS5hd3QuKjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC4qOworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGNvbS5pYm0udGV4dC5jb21wb25lbnRzLio7CitpbXBvcnQgY29tLmlibS50ZXh0Lio7CisKKy8qKgorICogQSBmcmFtZSB0aGF0IGFsbG93cyB0aGUgdXNlciB0byBleHBlcmltZW50IHdpdGgga2V5Ym9hcmQKKyAqIHRyYW5zbGl0ZXJhdGlvbi4gIFRoaXMgY2xhc3MgaGFzIGEgbWFpbigpIG1ldGhvZCBzbyBpdCBjYW4gYmUgcnVuCisgKiBhcyBhbiBhcHBsaWNhdGlvbi4gIFRoZSBmcmFtZSBjb250YWlucyBhbiBlZGl0YWJsZSB0ZXh0IGNvbXBvbmVudAorICogYW5kIHVzZXMga2V5Ym9hcmQgdHJhbnNsaXRlcmF0aW9uIHRvIHByb2Nlc3Mga2V5Ym9hcmQgZXZlbnRzLgorICoKKyAqIDxwPkNvcHlyaWdodCAoYykgSUJNIENvcnBvcmF0aW9uIDE5OTkuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqIEB2ZXJzaW9uICRSQ1NmaWxlOiBEZW1vLmphdmEsdiAkICRSZXZpc2lvbjogMS40ICQgJERhdGU6IDIwMDAvMDMvMTAgMDM6NDc6NDQgJAorICovCitwdWJsaWMgY2xhc3MgRGVtbyBleHRlbmRzIEZyYW1lIHsKKworICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHID0gZmFsc2U7CisKKyAgICBUcmFuc2xpdGVyYXRvciB0cmFuc2xpdCA9IG51bGw7CisKKyAgICBib29sZWFuIGNvbXBvdW5kID0gZmFsc2U7CisgICAgVHJhbnNsaXRlcmF0b3JbXSBjb21wb3VuZFRyYW5zbGl0ID0gbmV3IFRyYW5zbGl0ZXJhdG9yW01BWF9DT01QT1VORF07CisgICAgc3RhdGljIGZpbmFsIGludCBNQVhfQ09NUE9VTkQgPSAxMjg7CisgICAgaW50IGNvbXBvdW5kQ291bnQgPSAwOworCisgICAgVHJhbnNsaXRlcmF0aW5nVGV4dENvbXBvbmVudCB0ZXh0ID0gbnVsbDsKKworICAgIE1lbnUgdHJhbnNsaXRNZW51OworICAgIENoZWNrYm94TWVudUl0ZW0gdHJhbnNsaXRJdGVtOworICAgIENoZWNrYm94TWVudUl0ZW0gbm9UcmFuc2xpdEl0ZW07CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIE5PX1RSQU5TTElURVJBVE9SID0gIk5vbmUiOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICJcdTAwQTkgSUJNIENvcnBvcmF0aW9uIDE5OTkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgRnJhbWUgZiA9IG5ldyBEZW1vKDYwMCwgMjAwKTsKKyAgICAgICAgZi5hZGRXaW5kb3dMaXN0ZW5lcihuZXcgV2luZG93QWRhcHRlcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHdpbmRvd0Nsb3NpbmcoV2luZG93RXZlbnQgZSkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5leGl0KDApOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgZi5zZXRWaXNpYmxlKHRydWUpOworICAgIH0KKworCXB1YmxpYyBEZW1vKGludCB3aWR0aCwgaW50IGhlaWdodCkgeworICAgICAgICBzdXBlcigiVHJhbnNsaXRlcmF0aW9uIERlbW8iKTsKKworICAgICAgICBpbml0TWVudXMoKTsKKworICAgICAgICBhZGRXaW5kb3dMaXN0ZW5lcihuZXcgV2luZG93QWRhcHRlcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHdpbmRvd0Nsb3NpbmcoV2luZG93RXZlbnQgZSkgeworICAgICAgICAgICAgICAgIGhhbmRsZUNsb3NlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgdGV4dCA9IG5ldyBUcmFuc2xpdGVyYXRpbmdUZXh0Q29tcG9uZW50KCk7CisgICAgICAgIEZvbnQgZm9udCA9IG5ldyBGb250KCJzZXJpZiIsIEZvbnQuUExBSU4sIDQ4KTsKKyAgICAgICAgdGV4dC5zZXRGb250KGZvbnQpOworICAgICAgICB0ZXh0LnNldFNpemUod2lkdGgsIGhlaWdodCk7CisgICAgICAgIHRleHQuc2V0VmlzaWJsZSh0cnVlKTsKKyAgICAgICAgdGV4dC5zZXRUZXh0KCJcdTAzQjFcdTA1RDBcdTMwNDJcdTRFODAiKTsKKyAgICAgICAgYWRkKHRleHQpOworCisgICAgICAgIHNldFNpemUod2lkdGgsIGhlaWdodCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGluaXRNZW51cygpIHsKKyAgICAgICAgTWVudUJhciBtYmFyOworICAgICAgICBNZW51IG1lbnU7CisgICAgICAgIE1lbnVJdGVtIG1pdGVtOworICAgICAgICBDaGVja2JveE1lbnVJdGVtIGNpdGVtOworICAgICAgICAKKyAgICAgICAgc2V0TWVudUJhcihtYmFyID0gbmV3IE1lbnVCYXIoKSk7CisgICAgICAgIG1iYXIuYWRkKG1lbnUgPSBuZXcgTWVudSgiRmlsZSIpKTsKKyAgICAgICAgbWVudS5hZGQobWl0ZW0gPSBuZXcgTWVudUl0ZW0oIlF1aXQiKSk7CisgICAgICAgIG1pdGVtLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBBY3Rpb25MaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlQ2xvc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgZmluYWwgSXRlbUxpc3RlbmVyIHNldFRyYW5zbGl0ZXJhdG9yTGlzdGVuZXIgPSBuZXcgSXRlbUxpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgaXRlbVN0YXRlQ2hhbmdlZChJdGVtRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIENoZWNrYm94TWVudUl0ZW0gaXRlbSA9IChDaGVja2JveE1lbnVJdGVtKSBlLmdldFNvdXJjZSgpOworICAgICAgICAgICAgICAgIGlmIChlLmdldFN0YXRlQ2hhbmdlKCkgPT0gSXRlbUV2ZW50LkRFU0VMRUNURUQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgbGV0IHRoZSBjdXJyZW50IHRyYW5zbGl0ZXJhdG9yIGJlIGRlc2VsZWN0ZWQuCisgICAgICAgICAgICAgICAgICAgIC8vIEp1c3QgcmVzZWxlY3QgaXQuCisgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0U3RhdGUodHJ1ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb21wb3VuZCkgeworICAgICAgICAgICAgICAgICAgICAvLyBBZGRpbmcgYW4gaXRlbSB0byBhIGNvbXBvdW5kIHRyYW5zbGl0ZXJhdG9yCisgICAgICAgICAgICAgICAgICAgIGhhbmRsZUFkZFRvQ29tcG91bmQoaXRlbS5nZXRMYWJlbCgpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW0gIT0gdHJhbnNsaXRJdGVtKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIERlc2VsZWN0IHByZXZpb3VzIGNob2ljZS4gIERvbid0IG5lZWQgdG8gY2FsbAorICAgICAgICAgICAgICAgICAgICAvLyBzZXRTdGF0ZSh0cnVlKSBvbiBuZXcgY2hvaWNlLgorICAgICAgICAgICAgICAgICAgICB0cmFuc2xpdEl0ZW0uc2V0U3RhdGUoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB0cmFuc2xpdEl0ZW0gPSBpdGVtOworICAgICAgICAgICAgICAgICAgICBoYW5kbGVTZXRUcmFuc2xpdGVyYXRvcihpdGVtLmdldExhYmVsKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICB0cmFuc2xpdCA9IG51bGw7CisgICAgICAgIG1iYXIuYWRkKHRyYW5zbGl0TWVudSA9IG5ldyBNZW51KCJUcmFuc2xpdGVyYXRvciIpKTsKKyAgICAgICAgdHJhbnNsaXRNZW51LmFkZCh0cmFuc2xpdEl0ZW0gPSBub1RyYW5zbGl0SXRlbSA9CisgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IENoZWNrYm94TWVudUl0ZW0oTk9fVFJBTlNMSVRFUkFUT1IsIHRydWUpKTsKKyAgICAgICAgbm9UcmFuc2xpdEl0ZW0uYWRkSXRlbUxpc3RlbmVyKG5ldyBJdGVtTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBpdGVtU3RhdGVDaGFuZ2VkKEl0ZW1FdmVudCBlKSB7CisgICAgICAgICAgICAgICAgLy8gQ2FuJ3QgdW5jaGVjayBOb25lIC0tIGFueSBhY3Rpb24gaGVyZSBzZXRzIE5vbmUgdG8gdHJ1ZQorICAgICAgICAgICAgICAgIHNldE5vVHJhbnNsaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgdHJhbnNsaXRNZW51LmFkZFNlcGFyYXRvcigpOworCisgICAgICAgIHRyYW5zbGl0TWVudS5hZGQoY2l0ZW0gPSBuZXcgQ2hlY2tib3hNZW51SXRlbSgiQ29tcG91bmQiKSk7CisgICAgICAgIGNpdGVtLmFkZEl0ZW1MaXN0ZW5lcihuZXcgSXRlbUxpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgaXRlbVN0YXRlQ2hhbmdlZChJdGVtRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIENoZWNrYm94TWVudUl0ZW0gaXRlbSA9IChDaGVja2JveE1lbnVJdGVtKSBlLmdldFNvdXJjZSgpOworICAgICAgICAgICAgICAgIGlmIChlLmdldFN0YXRlQ2hhbmdlKCkgPT0gSXRlbUV2ZW50LkRFU0VMRUNURUQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgY29tcG91bmQgZ2V0cyBkZXNlbGVjdGVkLCB0aGVuIHNlbGVjdCBOT05FCisgICAgICAgICAgICAgICAgICAgIHNldE5vVHJhbnNsaXRlcmF0b3IoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFjb21wb3VuZCkgeworICAgICAgICAgICAgICAgICAgICAvLyBTd2l0Y2hpbmcgZnJvbSBub24tY29tcG91bmQgdG8gY29tcG91bmQKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNsaXRJdGVtLnNldFN0YXRlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNsaXRJdGVtID0gaXRlbTsKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNsaXQgPSBudWxsOworICAgICAgICAgICAgICAgICAgICBjb21wb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kQ291bnQgPSAwOworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TUFYX0NPTVBPVU5EOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBvdW5kVHJhbnNsaXRbaV0gPSBudWxsOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgIAorICAgICAgICB0cmFuc2xpdE1lbnUuYWRkU2VwYXJhdG9yKCk7CisKKyAgICAgICAgZm9yIChFbnVtZXJhdGlvbiBlPWdldFN5c3RlbVRyYW5zbGl0ZXJhdG9yTmFtZXMoKS5lbGVtZW50cygpOworICAgICAgICAgICAgIGUuaGFzTW9yZUVsZW1lbnRzKCk7ICkgeworICAgICAgICAgICAgU3RyaW5nIHMgPSAoU3RyaW5nKSBlLm5leHRFbGVtZW50KCk7CisgICAgICAgICAgICB0cmFuc2xpdE1lbnUuYWRkKGNpdGVtID0gbmV3IENoZWNrYm94TWVudUl0ZW0ocykpOworICAgICAgICAgICAgY2l0ZW0uYWRkSXRlbUxpc3RlbmVyKHNldFRyYW5zbGl0ZXJhdG9yTGlzdGVuZXIpOworICAgICAgICB9CisKKyAgICAgICAgbWJhci5hZGQobWVudSA9IG5ldyBNZW51KCJCYXRjaCIpKTsKKyAgICAgICAgbWVudS5hZGQobWl0ZW0gPSBuZXcgTWVudUl0ZW0oIlRyYW5zbGl0ZXJhdGUgU2VsZWN0aW9uIikpOworICAgICAgICBtaXRlbS5hZGRBY3Rpb25MaXN0ZW5lcihuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIGhhbmRsZUJhdGNoVHJhbnNsaXRlcmF0ZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXQgYSBzb3J0ZWQgbGlzdCBvZiB0aGUgc3lzdGVtIHRyYW5zbGl0ZXJhdG9ycy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBWZWN0b3IgZ2V0U3lzdGVtVHJhbnNsaXRlcmF0b3JOYW1lcygpIHsKKyAgICAgICAgVmVjdG9yIHYgPSBuZXcgVmVjdG9yKCk7CisgICAgICAgIGZvciAoRW51bWVyYXRpb24gZT1UcmFuc2xpdGVyYXRvci5nZXRBdmFpbGFibGVJRHMoKTsKKyAgICAgICAgICAgICBlLmhhc01vcmVFbGVtZW50cygpOyApIHsKKyAgICAgICAgICAgIHYuYWRkRWxlbWVudChlLm5leHRFbGVtZW50KCkpOworICAgICAgICB9CisgICAgICAgIC8vIEluc2VydGlvbiBzb3J0LCBPKG5eMikgYWNjZXB0YWJsZSBmb3Igc21hbGwgbgorICAgICAgICBmb3IgKGludCBpPTA7IGk8KHYuc2l6ZSgpLTEpOyArK2kpIHsKKyAgICAgICAgICAgIFN0cmluZyBhID0gKFN0cmluZykgdi5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICBmb3IgKGludCBqPWkrMTsgajx2LnNpemUoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGIgPSAoU3RyaW5nKSB2LmVsZW1lbnRBdChqKTsKKyAgICAgICAgICAgICAgICBpZiAoYS5jb21wYXJlVG8oYikgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHYuc2V0RWxlbWVudEF0KGIsIGkpOworICAgICAgICAgICAgICAgICAgICB2LnNldEVsZW1lbnRBdChhLCBqKTsKKyAgICAgICAgICAgICAgICAgICAgYSA9IGI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB2OworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzZXROb1RyYW5zbGl0ZXJhdG9yKCkgeworICAgICAgICB0cmFuc2xpdEl0ZW0gPSBub1RyYW5zbGl0SXRlbTsKKyAgICAgICAgbm9UcmFuc2xpdEl0ZW0uc2V0U3RhdGUodHJ1ZSk7CisgICAgICAgIGhhbmRsZVNldFRyYW5zbGl0ZXJhdG9yKG5vVHJhbnNsaXRJdGVtLmdldExhYmVsKCkpOworICAgICAgICBjb21wb3VuZCA9IGZhbHNlOworICAgICAgICBmb3IgKGludCBpPTA7IGk8dHJhbnNsaXRNZW51LmdldEl0ZW1Db3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgIE1lbnVJdGVtIGl0ID0gdHJhbnNsaXRNZW51LmdldEl0ZW0oaSk7CisgICAgICAgICAgICBpZiAoaXQgIT0gbm9UcmFuc2xpdEl0ZW0gJiYgaXQgaW5zdGFuY2VvZiBDaGVja2JveE1lbnVJdGVtKSB7CisgICAgICAgICAgICAgICAgKChDaGVja2JveE1lbnVJdGVtKSBpdCkuc2V0U3RhdGUoZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZUFkZFRvQ29tcG91bmQoU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgaWYgKGNvbXBvdW5kQ291bnQgPCBNQVhfQ09NUE9VTkQpIHsKKyAgICAgICAgICAgIGNvbXBvdW5kVHJhbnNsaXRbY29tcG91bmRDb3VudF0gPSBkZWNvZGVUcmFuc2xpdEl0ZW0obmFtZSk7CisgICAgICAgICAgICArK2NvbXBvdW5kQ291bnQ7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0W10gPSBuZXcgVHJhbnNsaXRlcmF0b3JbY29tcG91bmRDb3VudF07CisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGNvbXBvdW5kVHJhbnNsaXQsIDAsIHQsIDAsIGNvbXBvdW5kQ291bnQpOworICAgICAgICAgICAgdHJhbnNsaXQgPSBuZXcgQ29tcG91bmRUcmFuc2xpdGVyYXRvcih0KTsKKyAgICAgICAgICAgIHRleHQuc2V0VHJhbnNsaXRlcmF0b3IodHJhbnNsaXQpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVNldFRyYW5zbGl0ZXJhdG9yKFN0cmluZyBuYW1lKSB7CisgICAgICAgIHRyYW5zbGl0ID0gZGVjb2RlVHJhbnNsaXRJdGVtKG5hbWUpOworICAgICAgICB0ZXh0LnNldFRyYW5zbGl0ZXJhdG9yKHRyYW5zbGl0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZWNvZGUgYSBtZW51IGl0ZW0gdGhhdCBsb29rcyBsaWtlIDx0cmFuc2xpdCBuYW1lPi4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBUcmFuc2xpdGVyYXRvciBkZWNvZGVUcmFuc2xpdEl0ZW0oU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgcmV0dXJuIChuYW1lLmVxdWFscyhOT19UUkFOU0xJVEVSQVRPUikpCisgICAgICAgICAgICA/IG51bGwgOiBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZShuYW1lKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlQmF0Y2hUcmFuc2xpdGVyYXRlKCkgeworICAgICAgICBpZiAodHJhbnNsaXQgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaW50IHN0YXJ0ID0gdGV4dC5nZXRTZWxlY3Rpb25TdGFydCgpOworICAgICAgICBpbnQgZW5kID0gdGV4dC5nZXRTZWxlY3Rpb25FbmQoKTsKKyAgICAgICAgUmVwbGFjZWFibGVTdHJpbmcgcyA9CisgICAgICAgICAgICBuZXcgUmVwbGFjZWFibGVTdHJpbmcodGV4dC5nZXRUZXh0KCkuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpKTsKKworICAgICAgICBTdHJpbmdCdWZmZXIgbG9nID0gbnVsbDsKKyAgICAgICAgaWYgKERFQlVHKSB7CisgICAgICAgICAgICBsb2cgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICBsb2cuYXBwZW5kKCciJyArIHMudG9TdHJpbmcoKSArICJcIiAoc3RhcnQgIiArIHN0YXJ0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgIiwgZW5kICIgKyBlbmQgKyAiKSAtPiBcIiIpOworICAgICAgICB9CisKKyAgICAgICAgdHJhbnNsaXQudHJhbnNsaXRlcmF0ZShzKTsKKyAgICAgICAgU3RyaW5nIHN0ciA9IHMudG9TdHJpbmcoKTsKKworICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgIGxvZy5hcHBlbmQoc3RyICsgIlwiIik7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkJhdGNoICIgKyB0cmFuc2xpdC5nZXRJRCgpICsgIjogIiArIGxvZy50b1N0cmluZygpKTsKKyAgICAgICAgfQorCisgICAgICAgIHRleHQucmVwbGFjZVJhbmdlKHN0ciwgc3RhcnQsIGVuZCk7CisgICAgICAgIHRleHQuc2VsZWN0KHN0YXJ0LCBzdGFydCArIHN0ci5sZW5ndGgoKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZUNsb3NlKCkgeworICAgICAgICBkaXNwb3NlKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vZGVtby90cmFuc2xpdC9EZW1vQXBwbGV0LmphdmEgYi9zcmMvY29tL2libS9kZW1vL3RyYW5zbGl0L0RlbW9BcHBsZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43N2ZiODE1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vZGVtby90cmFuc2xpdC9EZW1vQXBwbGV0LmphdmEKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vZGVtby90cmFuc2xpdC9BdHRpYy9EZW1vQXBwbGV0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDMvMTAgMDM6NDc6NDQgJCAKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLmRlbW8udHJhbnNsaXQ7CitpbXBvcnQgamF2YS5hd3QuKjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC4qOworaW1wb3J0IGphdmEuYXBwbGV0Lio7CitpbXBvcnQgY29tLmlibS50ZXh0LmNvbXBvbmVudHMuQXBwbGV0RnJhbWU7CisKKy8qKgorICogQSBzaW1wbGUgQXBwbGV0IHRoYXQgc2hvd3MgYSBidXR0b24uICBXaGVuIHByZXNzZWQsIHRoZSBidXR0b24KKyAqIHNob3dzIHRoZSBEZW1vQXBwbGV0RnJhbWUuICBUaGlzIEFwcGxldCBpcyBtZWFudCB0byBiZSBlbWJlZGRlZAorICogaW4gYSB3ZWIgcGFnZS4KKyAqCisgKiA8cD5Db3B5cmlnaHQgKGMpIElCTSBDb3Jwb3JhdGlvbiAxOTk5LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAdmVyc2lvbiAkUkNTZmlsZTogRGVtb0FwcGxldC5qYXZhLHYgJCAkUmV2aXNpb246IDEuNCAkICREYXRlOiAyMDAwLzAzLzEwIDAzOjQ3OjQ0ICQKKyAqLworcHVibGljIGNsYXNzIERlbW9BcHBsZXQgZXh0ZW5kcyBBcHBsZXQgeworCisgICAgRGVtbyBmcmFtZSA9IG51bGw7CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICJcdTAwQTkgSUJNIENvcnBvcmF0aW9uIDE5OTkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdzW10pIHsKKyAgICAgICAgZmluYWwgRGVtb0FwcGxldCBhcHBsZXQgPSBuZXcgRGVtb0FwcGxldCgpOworICAgICAgICBuZXcgQXBwbGV0RnJhbWUoIlRyYW5zbGl0ZXJhdGlvbiBEZW1vIiwgYXBwbGV0LCA2NDAsIDQ4MCk7CisgICAgfQorCisJcHVibGljIHZvaWQgaW5pdCgpIHsKKworCQlCdXR0b24gYnV0dG9uID0gbmV3IEJ1dHRvbigiVHJhbnNsaXRlcmF0aW9uIERlbW8iKTsKKwkJYnV0dG9uLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBBY3Rpb25MaXN0ZW5lcigpIHsKKwkJICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisJCSAgICAgICAgaWYgKGZyYW1lID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUgPSBuZXcgRGVtbyg2MDAsIDIwMCk7CisgICAgICAgICAgICAgICAgICAgIGZyYW1lLmFkZFdpbmRvd0xpc3RlbmVyKG5ldyBXaW5kb3dBZGFwdGVyKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgd2luZG93Q2xvc2luZyhXaW5kb3dFdmVudCB3ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZyYW1lLnNldFZpc2libGUodHJ1ZSk7CisgICAgICAgICAgICAgICAgZnJhbWUudG9Gcm9udCgpOworCQkgICAgfQorCQl9KTsKKworCQlhZGQoYnV0dG9uKTsKKworICAgICAgICBEaW1lbnNpb24gc2l6ZSA9IGJ1dHRvbi5nZXRQcmVmZXJyZWRTaXplKCk7CisgICAgICAgIHNpemUud2lkdGggKz0gMTA7CisgICAgICAgIHNpemUuaGVpZ2h0ICs9IDEwOworCisJCXJlc2l6ZShzaXplKTsKKwl9CisJCisgICAgcHVibGljIHZvaWQgc3RvcCgpIHsKKyAgICAgICAgaWYgKGZyYW1lICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZyYW1lLmRpc3Bvc2UoKTsKKyAgICAgICAgfQorICAgICAgICBmcmFtZSA9IG51bGw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vZGVtby90cmFuc2xpdC9kZW1vLmJhdCBiL3NyYy9jb20vaWJtL2RlbW8vdHJhbnNsaXQvZGVtby5iYXQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzZmOGI3OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2RlbW8vdHJhbnNsaXQvZGVtby5iYXQKQEAgLTAsMCArMSwxOSBAQAorUkVNIC8qCitSRU0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorUkVNICAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCitSRU0gICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKK1JFTSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorUkVNICAqCitSRU0gICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vZGVtby90cmFuc2xpdC9BdHRpYy9kZW1vLmJhdCx2ICQgCitSRU0gICogJERhdGU6IDIwMDAvMDMvMTAgMDM6NDc6NDQgJCAKK1JFTSAgKiAkUmV2aXNpb246IDEuMiAkCitSRU0gICoKK1JFTSAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK1JFTSAgKi8KK1JFTSBGb3IgYmVzdCByZXN1bHRzLCBydW4gdGhlIGRlbW8gYXMgYW4gYXBwbGV0IGluc2lkZSBvZiBOZXRzY2FwZQorUkVNIHdpdGggQml0c3RyZWFtIEN5YmVyYml0IGluc3RhbGxlZC4KKworUkVNIHNldHVwIHlvdXIgSkRLIDEuMS54IHBhdGggYW5kIGNsYXNzcGF0aCBoZXJlOgorY2FsbCBKREsxMQorc2V0IENMQVNTUEFUSD0uLi90cmFuc2xpdC5qYXI7JUNMQVNTUEFUSCUKK2phdmF3IERlbW8KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2RlbW8vdHJhbnNsaXQvZGVtby5odG1sIGIvc3JjL2NvbS9pYm0vZGVtby90cmFuc2xpdC9kZW1vLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzY1NWRjOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2RlbW8vdHJhbnNsaXQvZGVtby5odG1sCkBAIC0wLDAgKzEsMjcgQEAKKzxIVE1MPgorPEhFQUQ+Cis8VElUTEU+VHJhbnNsaXRlcmF0aW9uIERlbW88L1RJVExFPgorPC9IRUFEPgorPEJPRFk+CisKKzxBUFBMRVQgQ09ERT0iY29tLmlibS5kZW1vLnRyYW5zbGl0LkRlbW9BcHBsZXQuY2xhc3MiIFdJRFRIPTE0MCBIRUlHSFQ9MzM+PC9BUFBMRVQ+CisKKzxIUj4KKworSWYgeW91IGRvbid0IHNlZSBhIGJ1dHRvbiBhYm92ZSwgdGhlbiB5b3VyIGJyb3dzZXIgaXMgZmFpbGluZyB0bworbG9jYXRlIHRoZSBuZWNlc3NhcnkgSmF2YSBjbGFzcyBmaWxlcy4KKworPFA+CisKK09uZSB3YXkgdG8gbWFrZSB0aGlzIHdvcmsgaXMgdG8gY29weSB0aGlzIEhUTUwgZmlsZSB0bworPGNvZGU+aWN1NGovc3JjPC9jb2RlPiwgYW5kIG1ha2Ugc3VyZSB0aGUgSmF2YSBmaWxlcyBpbiB0aGUgZGlyZWN0b3JpZXMKK3VuZGVyIDxjb2RlPmljdTRqL3NyYy9jb208L2NvZGU+IGFyZSBidWlsdC4gIFRoZW4gb3BlbiB0aGlzIEhUTUwgZmlsZQordXNpbmcgYSBicm93c2VyIG9yIGFwcGxldHZpZXdlci4KKworPFA+CisKK0ZvciBiZXN0IHJlc3VsdHMsIHJ1biB0aGlzIGRlbW8gYXMgYW4gYXBwbGV0IHdpdGhpbiBOZXRzY2FwZSB3aXRoCitCaXRzdHJlYW0gQ3liZXJiaXQgaW5zdGFsbGVkLgorCis8L0JPRFk+Cis8L0hUTUw+CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9kZW1vL3RyYW5zbGl0L3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL2RlbW8vdHJhbnNsaXQvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNmNGU1YjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9kZW1vL3RyYW5zbGl0L3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPCEtLSAgQ29weXJpZ2h0IChDKSAyMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorICBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vZGVtby90cmFuc2xpdC9BdHRpYy9wYWNrYWdlLmh0bWwsdiAkCisgICRSZXZpc2lvbjogMS4xICQKKyAgJERhdGU6IDIwMDAvMDMvMTUgMTc6NDQ6MTIgJAorLS0+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CitUcmFuc2xpdGVyYXRvciBkZW1vIGFwcGxpYXRpb24uCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L2ludGVybmFsL1VJbmZvLmphdmEgYi9zcmMvY29tL2libS9pY3UvaW50ZXJuYWwvVUluZm8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wOThkY2E5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L2ludGVybmFsL1VJbmZvLmphdmEKQEAgLTAsMCArMSw2MDggQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS9pbnRlcm5hbC9BdHRpYy9VSW5mby5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAxLzAzLzE1IDIzOjMxOjEyICQgCisgKiAkUmV2aXNpb246IDEuMSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLmljdS5pbnRlcm5hbDsKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBjb20uaWJtLnV0aWwuVXRpbGl0eTsKKworcHVibGljIGZpbmFsIGNsYXNzIFVJbmZvIHsKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlOworICAgIHN0YXRpYyBmaW5hbCBpbnQgVUlORk9fVkVSU0lPTiA9IDU7CisKKyAgICAvLyB0aGVzZSB2YWx1ZXMgYXJlIGFsaWduZWQgd2l0aCB0aGUgamF2YS5sYW5nLkNoYXJhY3RlciBjb25zdGFudHMKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgYnl0ZQorICAgIFVOQVNTSUdORUQgICAgICA9IDAsCisgICAgVVBQRVJDQVNFX0xFVFRFUiAgICA9IDEsCisgICAgTE9XRVJDQVNFX0xFVFRFUiAgICA9IDIsCisgICAgVElUTEVDQVNFX0xFVFRFUiAgICA9IDMsCisgICAgTU9ESUZJRVJfTEVUVEVSICAgICA9IDQsCisgICAgT1RIRVJfTEVUVEVSICAgICAgICA9IDUsCisgICAgTk9OX1NQQUNJTkdfTUFSSyAgICA9IDYsCisgICAgRU5DTE9TSU5HX01BUksgICAgICA9IDcsCisgICAgQ09NQklOSU5HX1NQQUNJTkdfTUFSSyAgPSA4LAorICAgIERFQ0lNQUxfRElHSVRfTlVNQkVSICAgID0gOSwKKyAgICBMRVRURVJfTlVNQkVSICAgICAgID0gMTAsCisgICAgT1RIRVJfTlVNQkVSICAgICAgICA9IDExLAorICAgIFNQQUNFX1NFUEFSQVRPUiAgICAgPSAxMiwKKyAgICBMSU5FX1NFUEFSQVRPUiAgICAgID0gMTMsCisgICAgUEFSQUdSQVBIX1NFUEFSQVRPUiA9IDE0LAorICAgIENPTlRST0wgICAgICAgICA9IDE1LAorICAgIEZPUk1BVCAgICAgICAgICA9IDE2LAorICAgIFBSSVZBVEVfVVNFICAgICA9IDE4LAorICAgIFNVUlJPR0FURSAgICAgICA9IDE5LAorICAgIERBU0hfUFVOQ1RVQVRJT04gICAgPSAyMCwKKyAgICBTVEFSVF9QVU5DVFVBVElPTiAgID0gMjEsCisgICAgRU5EX1BVTkNUVUFUSU9OICAgICA9IDIyLAorICAgIENPTk5FQ1RPUl9QVU5DVFVBVElPTiAgID0gMjMsCisgICAgT1RIRVJfUFVOQ1RVQVRJT04gICA9IDI0LAorICAgIE1BVEhfU1lNQk9MICAgICA9IDI1LAorICAgIENVUlJFTkNZX1NZTUJPTCAgICAgPSAyNiwKKyAgICBNT0RJRklFUl9TWU1CT0wgICAgID0gMjcsCisgICAgT1RIRVJfU1lNQk9MICAgICAgICA9IDI4OworCisgICAgcHVibGljIFN0cmluZyBnZXROYW1lKGNoYXIgY2gpIHtyZXR1cm4gZ2V0SW5mbyhjaCkubmFtZTt9CisgICAgcHVibGljIFN0cmluZyBnZXREZWNvbXBvc2l0aW9uKGNoYXIgY2gpIHtyZXR1cm4gZ2V0SW5mbyhjaCkuZGVjb21wb3NpdGlvbjt9CisgICAgcHVibGljIFN0cmluZyBnZXROYW1lMTAoY2hhciBjaCkge3JldHVybiBnZXRJbmZvKGNoKS5uYW1lMTA7fQorICAgIHB1YmxpYyBTdHJpbmcgZ2V0Q29tbWVudChjaGFyIGNoKSB7cmV0dXJuIGdldEluZm8oY2gpLmNvbW1lbnQ7fQorCisgICAgcHVibGljIGZsb2F0IGdldE51bWVyaWMoY2hhciBjaCkge3JldHVybiBnZXRJbmZvKGNoKS5udW1lcmljO30KKworICAgIHB1YmxpYyBzaG9ydCBnZXRDYW5vbmljYWxDbGFzcyhjaGFyIGNoKSB7cmV0dXJuIGdldEluZm8oY2gpLmNhbm9uaWNhbDt9CisgICAgcHVibGljIHNob3J0IGdldERlY2ltYWwoY2hhciBjaCkge3JldHVybiBnZXRJbmZvKGNoKS5kZWNpbWFsO30KKyAgICBwdWJsaWMgc2hvcnQgZ2V0RGlnaXQoY2hhciBjaCkge3JldHVybiBnZXRJbmZvKGNoKS5kaWdpdDt9CisKKyAgICBwdWJsaWMgY2hhciBnZXRVcHBlcmNhc2UoY2hhciBjaCkge3JldHVybiBnZXRJbmZvKGNoKS51cHBlcmNhc2U7fQorICAgIHB1YmxpYyBjaGFyIGdldExvd2VyY2FzZShjaGFyIGNoKSB7cmV0dXJuIGdldEluZm8oY2gpLmxvd2VyY2FzZTt9CisgICAgcHVibGljIGNoYXIgZ2V0VGl0bGVjYXNlKGNoYXIgY2gpIHtyZXR1cm4gZ2V0SW5mbyhjaCkudGl0bGVjYXNlO30KKworICAgIHB1YmxpYyBieXRlIGdldENhdGVnb3J5KGNoYXIgY2gpIHtyZXR1cm4gZ2V0SW5mbyhjaCkuY2F0ZWdvcnk7fQorICAgIHB1YmxpYyBieXRlIGdldEJpZGlDbGFzcyhjaGFyIGNoKSB7cmV0dXJuIGdldEluZm8oY2gpLmJpZGk7fQorICAgIHB1YmxpYyBib29sZWFuIGdldE1pcnJvcmVkKGNoYXIgY2gpIHtyZXR1cm4gZ2V0SW5mbyhjaCkubWlycm9yZWQ7fQorCisgICAgcHVibGljIGJvb2xlYW4gaXNEaXNwYXJhZ2VkKGNoYXIgY2gpIHsgcmV0dXJuIGdldERlY29tcG9zaXRpb24oY2gpLmxlbmd0aCgpID09IDQ7IH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzTGV0dGVyKGNoYXIgY2gpIHsKKyAgICAgICAgcmV0dXJuICgwICE9ICgoMTw8Z2V0Q2F0ZWdvcnkoY2gpKSAmCisgICAgICAgICAgKCgxPDxVUFBFUkNBU0VfTEVUVEVSKQorICAgICAgICAgIHwgKDE8PExPV0VSQ0FTRV9MRVRURVIpCisgICAgICAgICAgfCAoMTw8VElUTEVDQVNFX0xFVFRFUikKKyAgICAgICAgICB8ICgxPDxNT0RJRklFUl9MRVRURVIpCisgICAgICAgICAgfCAoMTw8TU9ESUZJRVJfTEVUVEVSKSkpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc01hcmsoY2hhciBjaCkgeworICAgICAgICByZXR1cm4gKDAgIT0gKCgxPDxnZXRDYXRlZ29yeShjaCkpICYKKyAgICAgICAgICAoKDE8PE5PTl9TUEFDSU5HX01BUkspCisgICAgICAgICAgfCAoMTw8RU5DTE9TSU5HX01BUkspCisgICAgICAgICAgfCAoMTw8Q09NQklOSU5HX1NQQUNJTkdfTUFSSykpKSk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNOdW1iZXIoY2hhciBjaCkgeworICAgICAgICByZXR1cm4gKDAgIT0gKCgxPDxnZXRDYXRlZ29yeShjaCkpICYKKyAgICAgICAgICAoKDE8PERFQ0lNQUxfRElHSVRfTlVNQkVSKQorICAgICAgICAgIHwgKDE8PExFVFRFUl9OVU1CRVIpCisgICAgICAgICAgfCAoMTw8T1RIRVJfTlVNQkVSKSkpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc1NlcGFyYXRvcihjaGFyIGNoKSB7CisgICAgICAgIHJldHVybiAoMCAhPSAoKDE8PGdldENhdGVnb3J5KGNoKSkgJgorICAgICAgICAgICgoMTw8U1BBQ0VfU0VQQVJBVE9SKQorICAgICAgICAgIHwgKDE8PExJTkVfU0VQQVJBVE9SKQorICAgICAgICAgIHwgKDE8PFBBUkFHUkFQSF9TRVBBUkFUT1IpKSkpOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzRm9ybWF0KGNoYXIgY2gpIHsKKyAgICAgICAgcmV0dXJuICgwICE9ICgoMTw8Z2V0Q2F0ZWdvcnkoY2gpKSAmCisgICAgICAgICAgKCgxPDxDT05UUk9MKQorICAgICAgICAgIHwgKDE8PEZPUk1BVCkpKSk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNQdW5jdHVhdGlvbihjaGFyIGNoKSB7CisgICAgICAgIHJldHVybiAoMCAhPSAoKDE8PGdldENhdGVnb3J5KGNoKSkgJgorICAgICAgICAgICgoMTw8REFTSF9QVU5DVFVBVElPTikKKyAgICAgICAgICB8ICgxPDxTVEFSVF9QVU5DVFVBVElPTikKKyAgICAgICAgICB8ICgxPDxFTkRfUFVOQ1RVQVRJT04pCisgICAgICAgICAgfCAoMTw8Q09OTkVDVE9SX1BVTkNUVUFUSU9OKQorICAgICAgICAgIHwgKDE8PFNUQVJUX1BVTkNUVUFUSU9OKQorICAgICAgICAgIHwgKDE8PEVORF9QVU5DVFVBVElPTikKKyAgICAgICAgICB8ICgxPDxPVEhFUl9QVU5DVFVBVElPTikpKSk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNTeW1ib2woY2hhciBjaCkgeworICAgICAgICByZXR1cm4gKDAgIT0gKCgxPDxnZXRDYXRlZ29yeShjaCkpICYKKyAgICAgICAgICAoKDE8PE1BVEhfU1lNQk9MKQorICAgICAgICAgIHwgKDE8PENVUlJFTkNZX1NZTUJPTCkKKyAgICAgICAgICB8ICgxPDxNT0RJRklFUl9TWU1CT0wpCisgICAgICAgICAgfCAoMTw8T1RIRVJfU1lNQk9MKSkpKTsKKyAgICB9CisKKyAgICAvLworICAgIC8vIENoYXJhY3RlcnMgZXhjbHVkZWQgZnJvbSBjb21wb3NpdGlvbi4gIFRoaXMgaXMgcmVhZCBmcm9tIHRoZSBVbmljb2RlCisgICAgLy8gZmlsZSBDb21wb3NpdGlvbkV4Y2x1c2lvbnMudHh0LgorICAgIC8vCisgICAgU3RyaW5nIGNvbXBvc2VFeGNsdWRlID0gIiI7CisKKyAgICAvKioKKyAgICAgKiBJcyB0aGlzIGNoYXJhY3RlciBleGNsdWRlZCBmcm9tIHRoZSBjb21wb3NpdGlvbiBhbGdvcml0aG0gYnkgdmlydHVlCisgICAgICogb2YgYmVpbmcgbGlzdGVkIGluIHRoZSBjb21wb3NpdGlvbiBleGNsdXNpb24gdGFibGUgaW4gVGVjaCBSZXBvcnQgIzE1PworICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzRXhjbHVkZWRDb21wb3NpdGlvbihjaGFyIGNoKSB7CisgICAgICAgIHJldHVybiBpc0Rpc3BhcmFnZWQoY2gpCisgICAgICAgICAgICB8fCBjb21wb3NlRXhjbHVkZS5pbmRleE9mKGNoKSA+PSAwCisgICAgICAgICAgICB8fCBnZXRDYW5vbmljYWxDbGFzcyhnZXREZWNvbXBvc2l0aW9uQ2hhcnMoY2gpLmNoYXJBdCgwKSkgIT0gMDsKKyAgICB9CisKKworCisgICAgcHVibGljIFN0cmluZyBnZXROYW1lKFN0cmluZyBzKSB7CisgICAgICAgIHJldHVybiBnZXROYW1lKHMsdHJ1ZSk7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXROYW1lKFN0cmluZyBzLCBib29sZWFuIHNob3J0VmVyc2lvbikgeworICAgICAgICBTdHJpbmdCdWZmZXIgdGVtcCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpICE9IDApIHRlbXAuYXBwZW5kKCIsICIpOworICAgICAgICAgICAgdGVtcC5hcHBlbmQoZ2V0TmFtZShzLmNoYXJBdChpKSwgc2hvcnRWZXJzaW9uKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRlbXAudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoY2hhciBjaCwgYm9vbGVhbiBzaG9ydFZlcnNpb24pIHsKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9IGdldE5hbWUoY2gpOworICAgICAgICBpZiAoIXNob3J0VmVyc2lvbikgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0ID0gcmVwbGFjZShyZXN1bHQsIkxFVFRFUiAiLCIiKTsKKyAgICAgICAgcmVzdWx0ID0gcmVwbGFjZShyZXN1bHQsIkNIQVJBQ1RFUiAiLCIiKTsKKyAgICAgICAgcmVzdWx0ID0gcmVwbGFjZShyZXN1bHQsIlNJR04gIiwiIik7CisgICAgICAgIHJlc3VsdCA9IHJlcGxhY2UocmVzdWx0LCJDQVBJVEFMICIsIlVDICIpOworICAgICAgICBpZiAoZ2V0Q2F0ZWdvcnkoY2gpID09IExPV0VSQ0FTRV9MRVRURVIpCisgICAgICAgICAgcmVzdWx0ID0gcmVwbGFjZShyZXN1bHQsIlNNQUxMICIsIkxDICIpOworICAgICAgICByZXN1bHQgPSByZXBsYWNlKHJlc3VsdCwiQ09NQklOSU5HICIsIi0iKTsKKyAgICAgICAgcmVzdWx0ID0gcmVwbGFjZShyZXN1bHQsIldJVEggIiwiIik7CisgICAgICAgIHJlc3VsdCA9IHJlcGxhY2UocmVzdWx0LCJBTkQgIiwiIik7CisgICAgICAgIHJlc3VsdCA9IHJlcGxhY2UocmVzdWx0LCJWQVJJQSIsIkdSQVZFIik7CisgICAgICAgIHJlc3VsdCA9IHJlcGxhY2UocmVzdWx0LCJPWElBIiwiQUNVVEUiKTsKKyAgICAgICAgcmVzdWx0ID0gcmVwbGFjZShyZXN1bHQsIlZSQUNIWSIsIkJSRVZFIik7CisgICAgICAgIHJlc3VsdCA9IHJlcGxhY2UocmVzdWx0LCJWRVJUSUNBTCBMSU5FIEFCT1ZFIiwiVE9OT1MiKTsKKyAgICAgICAgcmVzdWx0ID0gcmVwbGFjZShyZXN1bHQsIlBTSUxJIiwiU01PT1RIIik7CisgICAgICAgIHJlc3VsdCA9IHJlcGxhY2UocmVzdWx0LCJEQVNJQSIsIlJPVUdIIik7CisgICAgICAgIHJlc3VsdCA9IHJlcGxhY2UocmVzdWx0LCJDT01NQSBBQk9WRSIsIlNNT09USCIpOworICAgICAgICByZXN1bHQgPSByZXBsYWNlKHJlc3VsdCwiUkVWRVJTRUQgQ09NTUEgQUJPVkUiLCJST1VHSCIpOworICAgICAgICByZXN1bHQgPSByZXBsYWNlKHJlc3VsdCwiWVBPR0VHUkFNTUVOSSIsIklPVEEtU1VCIik7CisgICAgICAgIHJlc3VsdCA9IHJlcGxhY2UocmVzdWx0LCJQUk9TR0VHUkFNTUVOSSIsIklPVEEtQUQiKTsKKyAgICAgICAgcmVzdWx0ID0gcmVwbGFjZShyZXN1bHQsIkRJQUxZVElLQSIsIkRJQUVSRVNJUyIpOworICAgICAgICByZXN1bHQgPSByZXBsYWNlKHJlc3VsdCwiUEVSSVNQT01FTkkiLCJDSVJDVU1GTEVYIik7CisgICAgICAgIHJlc3VsdCA9IHJlcGxhY2UocmVzdWx0LCJWT0lDRUQgU09VTkQgTUFSSyIsIlZPSUNFRCBTSUdOIik7CisgICAgICAgIHJlc3VsdCA9IHJlcGxhY2UocmVzdWx0LCJQUk9MT05HRUQgU09VTkQgTUFSSyIsIlZPSUNFRCBTSUdOIik7CisgICAgICAgIHJlc3VsdCA9IHJlcGxhY2UocmVzdWx0LCJLQVRBS0FOQS1ISVJBR0FOQSIsIktBTkEiKTsKKyAgICAgICAgcmVzdWx0ID0gcmVwbGFjZShyZXN1bHQsIkNPTVBBVElCSUxJVFkgSURFT0dSQVBILSIsIiIpOworICAgICAgICByZXN1bHQgPSByZXBsYWNlKHJlc3VsdCwiQ0hPU0VPTkciLCJJTklUSUFMIik7CisgICAgICAgIHJlc3VsdCA9IHJlcGxhY2UocmVzdWx0LCJKVU5HU0VPTkciLCJNRURJQUwiKTsKKyAgICAgICAgcmVzdWx0ID0gcmVwbGFjZShyZXN1bHQsIkpPTkdTRU9ORyIsIkZJTkFMIik7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdC5zdWJzdHJpbmcoMCwxKQorICAgICAgICAgICsgcmVzdWx0LnN1YnN0cmluZygxLHJlc3VsdC5sZW5ndGgoKSkudG9Mb3dlckNhc2UoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIHJlcGxhY2UoU3RyaW5nIHNvdXJjZSwKKyAgICAgIFN0cmluZyByZXBsYWNlZSwgU3RyaW5nIHJlcGxhY2VyKSB7CisgICAgICAgIGludCBwID0gc291cmNlLmluZGV4T2YocmVwbGFjZWUpOworICAgICAgICBpZiAocCA9PSAtMSkgcmV0dXJuIHNvdXJjZTsKKyAgICAgICAgcmV0dXJuIHNvdXJjZS5zdWJzdHJpbmcoMCxwKQorICAgICAgICAgICsgcmVwbGFjZXIKKyAgICAgICAgICArIHNvdXJjZS5zdWJzdHJpbmcocCtyZXBsYWNlZS5sZW5ndGgoKSxzb3VyY2UubGVuZ3RoKCkpOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzQ0NTKFN0cmluZyBzKSB7CisgICAgICAgIGlmIChzLmxlbmd0aCgpIDwgMikgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoaXNNYXJrKHMuY2hhckF0KDApKSkgcmV0dXJuIGZhbHNlOworICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IHMubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKCFpc01hcmsocy5jaGFyQXQoaSkpKSByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gY29tYmluaW5nIGJhc2Ugc2VxdWVuY2UgOj0gPGNhdF96ZXJvPisgPGNhdF9wb3M+KgorICAgIHB1YmxpYyBib29sZWFuIGlzQ0JTKFN0cmluZyBzKSB7CisgICAgICAgIGlmIChzLmxlbmd0aCgpID09IDApIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGdldENhbm9uaWNhbENsYXNzKHMuY2hhckF0KDApKSAhPSAwKSByZXR1cm4gZmFsc2U7CisgICAgICAgIGJvb2xlYW4gZ290R3JlYXRlciA9IGZhbHNlOworICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IHMubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGdldENhbm9uaWNhbENsYXNzKHMuY2hhckF0KGkpKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGdvdEdyZWF0ZXIpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZ290R3JlYXRlciA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaGFzQ2Fub25pY2FsRGVjb21wb3NpdGlvbihjaGFyIGNoKSB7CisgICAgICAgIFN0cmluZyBkZWNvbXAgPSBnZXREZWNvbXBvc2l0aW9uKGNoKTsKKyAgICAgICAgcmV0dXJuIChkZWNvbXAubGVuZ3RoKCkgIT0gMCAmJiBkZWNvbXAuaW5kZXhPZignPCcpID09IC0xKTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBoYXNDb21wYXRpYmlsaXR5RGVjb21wb3NpdGlvbihjaGFyIGNoKSB7CisgICAgICAgIFN0cmluZyBkZWNvbXAgPSBnZXREZWNvbXBvc2l0aW9uKGNoKTsKKyAgICAgICAgcmV0dXJuIChkZWNvbXAubGVuZ3RoKCkgIT0gMCAmJiBkZWNvbXAuaW5kZXhPZignPCcpICE9IC0xKTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc0VxdWl2YWxlbnQoCisgICAgICBTdHJpbmcgYSwgU3RyaW5nIGIsIGJvb2xlYW4gY2Fub25pY2FsKSB7CisgICAgICAgIHJldHVybiBnZXRGdWxsRGVjb21wb3NpdGlvbihhLCBjYW5vbmljYWwpLmVxdWFscygKKyAgICAgICAgICBnZXRGdWxsRGVjb21wb3NpdGlvbihiLCBjYW5vbmljYWwpKTsKKyAgICB9CisKKyAgICAvLyB1c2UgdmVyeSBkdW1iIGFsZ29yaXRobS4gRG9uJ3QgbmVlZCBsb3dlciBvcmRlciBvbmUuCisKKyAgICBwdWJsaWMgU3RyaW5nIGdldEZ1bGxEZWNvbXBvc2l0aW9uKAorICAgICAgU3RyaW5nIHMsIGJvb2xlYW4gY2Fub25pY2FsKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBvdXRwdXQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBnZXRGdWxsRGVjb21wMihzLmNoYXJBdChpKSxjYW5vbmljYWwsb3V0cHV0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZml4Q2Fub25pY2FsKG91dHB1dCkudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nQnVmZmVyIGdldEZ1bGxEZWNvbXBvc2l0aW9uKAorICAgICAgY2hhciBjaCwgYm9vbGVhbiBjYW5vbmljYWwsIFN0cmluZ0J1ZmZlciBvdXRwdXQpIHsKKworICAgICAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gZ2V0RnVsbERlY29tcDIoY2gsY2Fub25pY2FsLG91dHB1dCk7CisgICAgICAgIHJldHVybiBmaXhDYW5vbmljYWwocmVzdWx0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldEZ1bGxEZWNvbXBvc2l0aW9uKAorICAgICAgY2hhciBjaCwgYm9vbGVhbiBjYW5vbmljYWwpIHsKKyAgICAgICAgcmV0dXJuIGdldEZ1bGxEZWNvbXBvc2l0aW9uKGNoLCBjYW5vbmljYWwsIG5ldyBTdHJpbmdCdWZmZXIoKSkudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHaXZlbiBhIGRlY29tcG9zZWQgc3RyaW5nIG9mIGNoYXJhY3RlcnMsIHB1dCBpdCBpbiBjYW5vbmljYWwKKyAgICAgKiBvcmRlciBieSBmaW5kaW5nIGFuZCBwcm9jZXNzaW5nIGFsbCBleGNoYW5nZWFibGUgcGFpcnMuCisgICAgICovCisgICAgcHVibGljIFN0cmluZ0J1ZmZlciBmaXhDYW5vbmljYWwoU3RyaW5nQnVmZmVyIHRhcmdldCkgeworICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IHRhcmdldC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBjaGFyIGNoID0gdGFyZ2V0LmNoYXJBdChpKTsKKyAgICAgICAgICAgIHNob3J0IGNhbkNsYXNzID0gZ2V0Q2Fub25pY2FsQ2xhc3MoY2gpOworICAgICAgICAgICAgY2hhciBjaFByZXYgPSB0YXJnZXQuY2hhckF0KGktMSk7CisgICAgICAgICAgICBzaG9ydCBjYW5DbGFzc1ByZXYgPSBnZXRDYW5vbmljYWxDbGFzcyhjaFByZXYpOworICAgICAgICAgICAgaWYgKGNhbkNsYXNzICE9IDAgJiYgY2FuQ2xhc3MgPCBjYW5DbGFzc1ByZXYpIHsKKyAgICAgICAgICAgICAgICB0YXJnZXQuc2V0Q2hhckF0KGktMSwgY2gpOworICAgICAgICAgICAgICAgIHRhcmdldC5zZXRDaGFyQXQoaSwgY2hQcmV2KTsKKyAgICAgICAgICAgICAgICBpZiAoaSA+IDEpIGkgLT0gMjsgLy8gYmFja3VwICgtMSB0byBjb21wZW5zYXRlIGZvciBsb29wKQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0YXJnZXQ7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBmaXhDYW5vbmljYWwoU3RyaW5nIHNvdXJjZSkgeworICAgICAgICByZXR1cm4gZml4Q2Fub25pY2FsKG5ldyBTdHJpbmdCdWZmZXIoc291cmNlKSkudG9TdHJpbmcoKTsKKyAgICB9CisKKworICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gICAgICAgICAgICAgICAgICBQUklWQVRFUworICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICBzdGF0aWMgY2xhc3MgQ2hhckRhdGEgeworICAgICAgICBwdWJsaWMgQ2hhckRhdGEoKSB7CisgICAgICAgIH07CisKKyAgICAgICAgU3RyaW5nIG5hbWUgPSAiIjsKKyAgICAgICAgU3RyaW5nIGRlY29tcG9zaXRpb24gPSAiIjsKKyAgICAgICAgU3RyaW5nIG5hbWUxMCA9ICIiOworICAgICAgICBTdHJpbmcgY29tbWVudCA9ICIiOworCisgICAgICAgIGZsb2F0IG51bWVyaWMgPSBGbG9hdC5NSU5fVkFMVUU7CisKKyAgICAgICAgc2hvcnQgY2Fub25pY2FsID0gMDsKKyAgICAgICAgc2hvcnQgZGVjaW1hbCA9IFNob3J0Lk1JTl9WQUxVRTsKKyAgICAgICAgc2hvcnQgZGlnaXQgPSBTaG9ydC5NSU5fVkFMVUU7CisKKyAgICAgICAgY2hhciB1cHBlcmNhc2U7CisgICAgICAgIGNoYXIgbG93ZXJjYXNlOworICAgICAgICBjaGFyIHRpdGxlY2FzZTsKKworICAgICAgICBieXRlIGNhdGVnb3J5OworICAgICAgICBieXRlIGJpZGkgPSAwOworCisgICAgICAgIGJvb2xlYW4gbWlycm9yZWQ7CisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIENoYXJEYXRhIFVOQVNTSUdORURfSU5GTyA9IG5ldyBDaGFyRGF0YSgpOworICAgIHByaXZhdGUgc3RhdGljIGNoYXIgY2FjaGVkQ2hhciA9IDB4RkZGRjsKKworICAgIHByaXZhdGUgQ2hhckRhdGEgZ2V0SW5mbyhjaGFyIGNoKSB7CisgICAgICAgIGlmIChjaCA9PSBjYWNoZWRDaGFyKSByZXR1cm4gVU5BU1NJR05FRF9JTkZPOworICAgICAgICAvLyByZW1hcCBzcGVjaWFsIHJhbmdlcworICAgICAgICBpZiAoY2ggPj0gMHg0RTAwICYmIGNoIDwgMHhGOTAwKSB7CisgICAgICAgICAgICBpZiAoY2ggPD0gMHg5RkE1KSBjaCA9IDB4NEUwMDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGNoID49IDB4QUMwMCAmJiBjaCA8PSAweEQ3QTMpIGNoID0gMHhBQzAwOworICAgICAgICAgICAgZWxzZSBpZiAoY2ggPj0gMHhEODAwICYmIGNoIDw9IDB4REZGRikgY2ggPSAweEQ4MDA7CisgICAgICAgICAgICBlbHNlIGlmIChjaCA+PSAweEUwMDApIGNoID0gMHhFMDAwOworICAgICAgICB9CisgICAgICAgIE9iamVjdCB2YWx1ZSA9IGNhY2hlW2NoXTsKKyAgICAgICAgQ2hhckRhdGEgcmVzdWx0OworICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkgeworICAgICAgICAgICAgcmVzdWx0ID0gVU5BU1NJR05FRF9JTkZPOworICAgICAgICB9IGVsc2UgaWYgKHZhbHVlIGluc3RhbmNlb2YgU3RyaW5nKSB7CisgICAgICAgICAgICByZXN1bHQgPSB1cGRhdGVDYWNoZSgoU3RyaW5nKXZhbHVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IChDaGFyRGF0YSl2YWx1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHByaXZhdGUgU3RyaW5nQnVmZmVyIGdldEZ1bGxEZWNvbXAyKAorICAgICAgY2hhciBjaCwgYm9vbGVhbiBjYW5vbmljYWwsIFN0cmluZ0J1ZmZlciBvdXRwdXQpIHsKKworICAgICAgICBTdHJpbmcgZGVjb21wID0gZ2V0RGVjb21wb3NpdGlvbihjaCk7CisgICAgICAgIGlmIChkZWNvbXAubGVuZ3RoKCkgPT0gMAorICAgICAgICAgIHx8IChjYW5vbmljYWwgJiYgZGVjb21wLmluZGV4T2YoJzwnKSAhPSAtMSkpIHsKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoY2gpOworICAgICAgICAgICAgcmV0dXJuIG91dHB1dDsKKyAgICAgICAgfQorICAgICAgICBib29sZWFuIGluQnJhY2tldHMgPSBmYWxzZTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkZWNvbXAubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgY2hhciBjID0gZGVjb21wLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGlmIChjID09ICc8JykgaW5CcmFja2V0cyA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmIChjID09ICc+JykgaW5CcmFja2V0cyA9IGZhbHNlOworICAgICAgICAgICAgZWxzZSBpZiAoaW5CcmFja2V0cykgOyAvLyBza2lwCisgICAgICAgICAgICBlbHNlIGlmIChjID09ICcgJykgOyAvLyBza2lwCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgdGVtcFN0cmluZyA9IGRlY29tcC5zdWJzdHJpbmcoaSxpKzQpOworICAgICAgICAgICAgICAgIGNoYXIgdGVtcCA9IChjaGFyKUludGVnZXIucGFyc2VJbnQodGVtcFN0cmluZywxNik7CisgICAgICAgICAgICAgICAgZ2V0RnVsbERlY29tcG9zaXRpb24odGVtcCxjYW5vbmljYWwsb3V0cHV0KTsKKyAgICAgICAgICAgICAgICBpKz0gMzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gb3V0cHV0OworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0RGVjb21wb3NpdGlvbkNoYXJzKGNoYXIgY2gpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIG91dHB1dCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgU3RyaW5nIGRlY29tcCA9IGdldERlY29tcG9zaXRpb24oY2gpOworICAgICAgICBpZiAoZGVjb21wLmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoY2gpOworICAgICAgICAgICAgcmV0dXJuIG91dHB1dC50b1N0cmluZygpOworICAgICAgICB9CisgICAgICAgIGJvb2xlYW4gaW5CcmFja2V0cyA9IGZhbHNlOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGRlY29tcC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBjaGFyIGMgPSBkZWNvbXAuY2hhckF0KGkpOworICAgICAgICAgICAgaWYgKGMgPT0gJzwnKSBpbkJyYWNrZXRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJz4nKSBpbkJyYWNrZXRzID0gZmFsc2U7CisgICAgICAgICAgICBlbHNlIGlmIChpbkJyYWNrZXRzKSA7IC8vIHNraXAKKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJyAnKSA7IC8vIHNraXAKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFN0cmluZyB0ZW1wU3RyaW5nID0gZGVjb21wLnN1YnN0cmluZyhpLGkrNCk7CisgICAgICAgICAgICAgICAgY2hhciB0ZW1wID0gKGNoYXIpSW50ZWdlci5wYXJzZUludCh0ZW1wU3RyaW5nLDE2KTsKKyAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKHRlbXApOworICAgICAgICAgICAgICAgIGkrPSAzOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBvdXRwdXQudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgVUluZm8oU3RyaW5nIGZpbGVOYW1lLCBTdHJpbmcgY29tcG9zZUV4Y2x1ZGVGaWxlTmFtZSkgeworICAgICAgICBsb25nIHN0YXJ0VGltZSxlbmRUaW1lOworCisgICAgICAgIEJ1ZmZlcmVkUmVhZGVyIGlucHV0ID0gbnVsbDsKKyAgICAgICAgU3RyaW5nIGxpbmUgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgaW5wdXQgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IEZpbGVSZWFkZXIoZmlsZU5hbWUpLDY0KjEwMjQpOworICAgICAgICAgICAgZm9yIChpbnQgY291bnQgPSAwOzsrK2NvdW50KSB7CisgICAgICAgICAgICAgICAgbGluZSA9IGlucHV0LnJlYWRMaW5lKCk7CisgICAgICAgICAgICAgICAgaWYgKGxpbmUgPT0gbnVsbCkgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGxpbmUubGVuZ3RoKCkgPT0gMCkgY29udGludWU7CisgICAgICAgICAgICAgICAgY2hhciBjaCA9IGNoYXJGcm9tKGxpbmUuc3Vic3RyaW5nKDAsNCkpOworICAgICAgICAgICAgICAgIGlmIChERUJVRykgaWYgKChjb3VudCAlIDEwMCkgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJbIiArIGNvdW50ICsgIiwiICsgVXRpbGl0eS5oZXgoY2gpICsgJ10nKTsKKyAgICAgICAgICAgICAgICBjYWNoZVtjaF0gPSBsaW5lOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBSZWFkIGNvbXBvc2l0aW9uIGV4bHVzaW9ucworICAgICAgICAgICAgaW5wdXQgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IEZpbGVSZWFkZXIoY29tcG9zZUV4Y2x1ZGVGaWxlTmFtZSksNjQqMTAyNCk7CisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgY2UgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgbGluZSA9IGlucHV0LnJlYWRMaW5lKCk7CisgICAgICAgICAgICAgICAgaWYgKGxpbmUgPT0gbnVsbCkgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGxpbmUubGVuZ3RoKCkgPT0gMCB8fAorICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXIuZGlnaXQobGluZS5jaGFyQXQoMCksIDE2KSA8IDApIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGNlLmFwcGVuZChjaGFyRnJvbShsaW5lLnN1YnN0cmluZygwLDQpKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb21wb3NlRXhjbHVkZSA9IGNlLnRvU3RyaW5nKCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpbnB1dC5jbG9zZSgpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4Mikge30KKyAgICAgICAgICAgIGV4LnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQ291bGRuJ3QgcmVhZCBmaWxlICIKKyAgICAgICAgICAgICAgKyBleC5nZXRDbGFzcygpLmdldE5hbWUoKSArICIgIiArIGV4LmdldE1lc3NhZ2UoKQorICAgICAgICAgICAgICArICIgbGluZSA9ICIgKyBsaW5lCisgICAgICAgICAgICAgICk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgVUluZm8oKSB7CisgICAgICAgIC8vIEZJWAorICAgICAgICAvLyBUaGlzIGlzIGJhZC4uLnRoaXMgcGF0aCBtdXN0IGJlIGNvcnJlY3QgcmVsYXRpdmUgdG8gdGhlCisgICAgICAgIC8vIHVzZXIncyBjdXJyZW50IGRpcmVjdG9yeS4gIEkgaGF2ZSBjaGFuZ2VkIGl0IHNvIHRoYXQgaXQncworICAgICAgICAvLyByZWxhdGl2ZSB0byB0aGUgcm9vdCBpY3U0aiBkaXJlY3RvcnksIHNvIGl0IHdvcmtzIGFzIGxvbmcKKyAgICAgICAgLy8gYXMgY29kZSBpcyBydW4gZnJvbSB0aGF0IGRpcmVjdG9yeSwgZS5nLiwgImphdmEgLWNsYXNzcGF0aAorICAgICAgICAvLyBjbGFzc2VzLi4uIi4gIEEgYmV0dGVyIHdheSB0byBkbyB0aGlzIG1pZ2h0IGJlIHRvIGdldCBpdAorICAgICAgICAvLyBmcm9tIGEgc3lzdGVtIHByb3BlcnR5IHRoYXQgaXMgZGVmaW5lZCBvbiB0aGUgY29tbWFuZCBsaW5lLAorICAgICAgICAvLyBlLmcuLCAiamF2YSAtRGljdTRqPUQ6L2ljdTRqLi4uIiAtIGxpdQorICAgICAgICB0aGlzKCJzcmMvZGF0YS91bmljb2RlL1VuaWNvZGVEYXRhLnR4dCIsCisgICAgICAgICAgICAgInNyYy9kYXRhL3VuaWNvZGUvQ29tcG9zaXRpb25FeGNsdXNpb25zLnR4dCIpOworICAgIH0KKworICAgIC8qCisgIDAgQ29kZSB2YWx1ZSBpbiA0LWRpZ2l0IGhleGFkZWNpbWFsIGZvcm1hdC4KKyAgMSBVbmljb2RlIDIuMSBDaGFyYWN0ZXIgTmFtZS4gVGhlc2UgbmFtZXMgbWF0Y2ggZXhhY3RseSB0aGUKKyAgMiBHZW5lcmFsIENhdGVnb3J5LiBUaGlzIGlzIGEgdXNlZnVsIGJyZWFrZG93biBpbnRvIHZhcmlvdXMgImNoYXJhY3RlcgorICAzIENhbm9uaWNhbCBDb21iaW5pbmcgQ2xhc3Nlcy4gVGhlIGNsYXNzZXMgdXNlZCBmb3IgdGhlCisgIDQgQmlkaXJlY3Rpb25hbCBDYXRlZ29yeS4gU2VlIHRoZSBsaXN0IGJlbG93IGZvciBhbiBleHBsYW5hdGlvbiBvZiB0aGUKKyAgNSBDaGFyYWN0ZXIgRGVjb21wb3NpdGlvbi4gSW4gdGhlIFVuaWNvZGUgU3RhbmRhcmQsIG5vdCBhbGwgb2YKKyAgNiBEZWNpbWFsIGRpZ2l0IHZhbHVlLiBUaGlzIGlzIGEgbnVtZXJpYyBmaWVsZC4gSWYgdGhlIGNoYXJhY3RlcgorICA3IERpZ2l0IHZhbHVlLiBUaGlzIGlzIGEgbnVtZXJpYyBmaWVsZC4gSWYgdGhlIGNoYXJhY3RlciByZXByZXNlbnRzIGEKKyAgOCBOdW1lcmljIHZhbHVlLiBUaGlzIGlzIGEgbnVtZXJpYyBmaWVsZC4gSWYgdGhlIGNoYXJhY3RlciBoYXMgdGhlCisgIDkgSWYgdGhlIGNoYXJhY3RlcnMgaGFzIGJlZW4gaWRlbnRpZmllZCBhcyBhICJtaXJyb3JlZCIgY2hhcmFjdGVyIGluCisgMTAgVW5pY29kZSAxLjAgTmFtZS4gVGhpcyBpcyB0aGUgb2xkIG5hbWUgYXMgcHVibGlzaGVkIGluIFVuaWNvZGUgMS4wLgorIDExIDEwNjQ2IENvbW1lbnQgZmllbGQuIFRoaXMgZmllbGQgaXMgaW5mb3JtYXRpdmUuCisgMTIgVXBwZXIgY2FzZSBlcXVpdmFsZW50IG1hcHBpbmcuIElmIGEgY2hhcmFjdGVyIGlzIHBhcnQgb2YgYW4KKyAxMyBMb3dlciBjYXNlIGVxdWl2YWxlbnQgbWFwcGluZy4gU2ltaWxhciB0byAxMi4gVGhpcyBmaWVsZCBpcyBpbmZvcm1hdGl2ZS4KKyAxNCBUaXRsZSBjYXNlIGVxdWl2YWxlbnQgbWFwcGluZy4gU2ltaWxhciB0byAxMi4gVGhpcyBmaWVsZCBpcyBpbmZvcm1hdGl2ZS4KKyAgICAqLworCisgICAgcHJpdmF0ZSBDaGFyRGF0YSB1cGRhdGVDYWNoZShTdHJpbmcgbGluZSkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgU3RyaW5nW10gcGFydHMgPSBuZXcgU3RyaW5nWzMwXTsKKyAgICAgICAgICAgIFV0aWxpdHkuc3BsaXQobGluZSwnOycscGFydHMpOworICAgICAgICAgICAgQ2hhckRhdGEgaW5mbyA9IG5ldyBDaGFyRGF0YSgpOworICAgICAgICAgICAgY2hhciBjaCA9IGNoYXJGcm9tKHBhcnRzWzBdKTsKKyAgICAgICAgICAgIGluZm8ubmFtZSA9IHBhcnRzWzFdOworICAgICAgICAgICAgaW5mby5jYXRlZ29yeSA9IChieXRlKVV0aWxpdHkubG9va3VwKHBhcnRzWzJdLCBDQVRFR09SWV9UQUJMRSk7CisgICAgICAgICAgICBpbmZvLmNhbm9uaWNhbCA9IHNob3J0RnJvbShwYXJ0c1szXSk7CisgICAgICAgICAgICBpbmZvLmJpZGkgPSAoYnl0ZSlVdGlsaXR5Lmxvb2t1cChwYXJ0c1s0XSwgQklESV9UQUJMRSk7CisgICAgICAgICAgICBpbmZvLmRlY29tcG9zaXRpb24gPSBwYXJ0c1s1XTsKKyAgICAgICAgICAgIGluZm8uZGVjaW1hbCA9IHNob3J0RnJvbShwYXJ0c1s2XSk7CisgICAgICAgICAgICBpbmZvLmRpZ2l0ID0gc2hvcnRGcm9tKHBhcnRzWzddKTsKKyAgICAgICAgICAgIGluZm8ubnVtZXJpYyA9IGZsb2F0RnJvbShwYXJ0c1s4XSk7CisgICAgICAgICAgICBpbmZvLm1pcnJvcmVkID0gY2hhckZyb20ocGFydHNbOV0pID09ICdZJzsKKyAgICAgICAgICAgIGluZm8ubmFtZTEwID0gcGFydHNbMTBdOworICAgICAgICAgICAgaW5mby5jb21tZW50ID0gcGFydHNbMTFdOworICAgICAgICAgICAgaW5mby51cHBlcmNhc2UgPSBjaGFyRnJvbShwYXJ0c1sxMl0pOworICAgICAgICAgICAgaWYgKGluZm8udXBwZXJjYXNlID09IDApIGluZm8udXBwZXJjYXNlID0gY2g7CisgICAgICAgICAgICBpbmZvLmxvd2VyY2FzZSA9IGNoYXJGcm9tKHBhcnRzWzEzXSk7CisgICAgICAgICAgICBpZiAoaW5mby5sb3dlcmNhc2UgPT0gMCkgaW5mby5sb3dlcmNhc2UgPSBjaDsKKyAgICAgICAgICAgIGluZm8udGl0bGVjYXNlID0gY2hhckZyb20ocGFydHNbMTRdKTsKKyAgICAgICAgICAgIGlmIChpbmZvLnRpdGxlY2FzZSA9PSAwKSBpbmZvLnRpdGxlY2FzZSA9IGluZm8udXBwZXJjYXNlOworICAgICAgICAgICAgU3RyaW5nIHRyaWFsID0gVXRpbGl0eS5oZXgoY2gpICsgIjsiICsgaW5mbzsKKyAgICAgICAgICAgIGlmIChERUJVRykgaWYgKCF0cmlhbC5lcXVhbHMobGluZSkpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkRpZmZlcmVuY2UgYmV0d2VlbjoiKTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4obGluZSk7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHRyaWFsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhY2hlW2NoXSA9IGluZm87CisgICAgICAgICAgICByZXR1cm4gaW5mbzsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigidXBkYXRlQ2FjaGU6IGVycm9yIHBhcnNpbmcgJyIgKyBsaW5lICsgIiciKTsKKyAgICAgICAgICAgIHRocm93IGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBDaGFyRGF0YSB0eXBlSW5mbyA9IG5ldyBDaGFyRGF0YSgpOworCisgICAgcHJpdmF0ZSBib29sZWFuIGxhdGluMShjaGFyIGMpIHsKKyAgICAgICAgcmV0dXJuICgoYyA+PSAyMCAmJiBjIDw9IDB4N0YpIHx8IGMgPiAweEEwKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBZTl9UQUJMRSA9IHsiTiIsICJZIn07CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBDQVRFR09SWV9UQUJMRSA9IHsKKyAgICAgICAgIkNuIiwgLy8gPSBPdGhlciwgTm90IEFzc2lnbmVkCisKKyAgICAgICAgIkx1IiwgLy8gPSBMZXR0ZXIsIFVwcGVyY2FzZQorICAgICAgICAiTGwiLCAvLyA9IExldHRlciwgTG93ZXJjYXNlCisgICAgICAgICJMdCIsIC8vID0gTGV0dGVyLCBUaXRsZWNhc2UKKyAgICAgICAgIkxtIiwgLy8gPSBMZXR0ZXIsIE1vZGlmaWVyCisgICAgICAgICJMbyIsIC8vID0gTGV0dGVyLCBPdGhlcgorCisgICAgICAgICJNbiIsIC8vID0gTWFyaywgTm9uLVNwYWNpbmcKKyAgICAgICAgIk1lIiwgLy8gPSBNYXJrLCBFbmNsb3NpbmcKKyAgICAgICAgIk1jIiwgLy8gPSBNYXJrLCBTcGFjaW5nIENvbWJpbmluZworCisgICAgICAgICJOZCIsIC8vID0gTnVtYmVyLCBEZWNpbWFsIERpZ2l0CisgICAgICAgICJObCIsIC8vID0gTnVtYmVyLCBMZXR0ZXIKKyAgICAgICAgIk5vIiwgLy8gPSBOdW1iZXIsIE90aGVyCisKKyAgICAgICAgIlpzIiwgLy8gPSBTZXBhcmF0b3IsIFNwYWNlCisgICAgICAgICJabCIsIC8vID0gU2VwYXJhdG9yLCBMaW5lCisgICAgICAgICJacCIsIC8vID0gU2VwYXJhdG9yLCBQYXJhZ3JhcGgKKworICAgICAgICAiQ2MiLCAvLyA9IE90aGVyLCBDb250cm9sCisgICAgICAgICJDZiIsIC8vID0gT3RoZXIsIEZvcm1hdAorICAgICAgICAiIiwgICAvLyB1bnVzZWQKKyAgICAgICAgIkNvIiwgLy8gPSBPdGhlciwgUHJpdmF0ZSBVc2UKKyAgICAgICAgIkNzIiwgLy8gPSBPdGhlciwgU3Vycm9nYXRlCisKKworICAgICAgICAiUGQiLCAvLyA9IFB1bmN0dWF0aW9uLCBEYXNoCisgICAgICAgICJQcyIsIC8vID0gUHVuY3R1YXRpb24sIE9wZW4KKyAgICAgICAgIlBlIiwgLy8gPSBQdW5jdHVhdGlvbiwgQ2xvc2UKKyAgICAgICAgIlBjIiwgLy8gPSBQdW5jdHVhdGlvbiwgQ29ubmVjdG9yCisgICAgICAgICJQbyIsIC8vID0gUHVuY3R1YXRpb24sIE90aGVyCisKKyAgICAgICAgIlNtIiwgLy8gPSBTeW1ib2wsIE1hdGgKKyAgICAgICAgIlNjIiwgLy8gPSBTeW1ib2wsIEN1cnJlbmN5CisgICAgICAgICJTayIsIC8vID0gU3ltYm9sLCBNb2RpZmllcgorICAgICAgICAiU28iLCAvLyA9IFN5bWJvbCwgT3RoZXIKKworICAgICAgICAiUGkiLCAvLyA9IFB1bmN0dWF0aW9uLCBJbml0aWFsIHF1b3RlIChtYXkgYmVoYXZlIGxpa2UgUHMgb3IgUGUgZGVwZW5kaW5nIG9uIHVzYWdlKQorICAgICAgICAiUGYiLCAvLyA9IFB1bmN0dWF0aW9uLCBGaW5hbCBxdW90ZSAobWF5IGJlaGF2ZSBsaWtlIFBzIG9yIFBlIGRlcGVuZGluZ29uIHVzYWdlKQorICAgIH07CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmdbXSBCSURJX1RBQkxFID0geworICAgICAgICAiTCIsIC8vIExlZnQtUmlnaHQ7IE1vc3QgYWxwaGFiZXRpYywgc3lsbGFiaWMsIGFuZCBsb2dvZ3JhcGhpYyBjaGFyYWN0ZXJzIChlLmcuLCBDSksgaWRlb2dyYXBocykKKyAgICAgICAgIlIiLCAvLyBSaWdodC1MZWZ0OyBBcmFiaWMsIEhlYnJldywgYW5kIHB1bmN0dWF0aW9uIHNwZWNpZmljIHRvIHRob3NlIHNjcmlwdHMKKyAgICAgICAgIkVOIiwgLy8gICAgRXVyb3BlYW4gTnVtYmVyCisgICAgICAgICJFUyIsIC8vICAgIEV1cm9wZWFuIE51bWJlciBTZXBhcmF0b3IKKyAgICAgICAgIkVUIiwgLy8gICAgRXVyb3BlYW4gTnVtYmVyIFRlcm1pbmF0b3IKKyAgICAgICAgIkFOIiwgLy8gICAgQXJhYmljIE51bWJlcgorICAgICAgICAiQ1MiLCAvLyAgICBDb21tb24gTnVtYmVyIFNlcGFyYXRvcgorICAgICAgICAiQiIsIC8vIEJsb2NrIFNlcGFyYXRvcgorICAgICAgICAiUyIsIC8vIFNlZ21lbnQgU2VwYXJhdG9yCisgICAgICAgICJXUyIsIC8vICAgIFdoaXRlc3BhY2UKKyAgICAgICAgIk9OIiAvLyBPdGhlciBOZXV0cmFscyA7IEFsbCBvdGhlciBjaGFyYWN0ZXJzOiBwdW5jdHVhdGlvbiwgc3ltYm9scworICAgIH07CisKKyAgICBwcml2YXRlIHN0YXRpYyBzaG9ydCBzaG9ydEZyb20oU3RyaW5nIHApIHsKKyAgICAgICAgaWYgKHAubGVuZ3RoKCkgPT0gMCkgcmV0dXJuIFNob3J0Lk1JTl9WQUxVRTsKKyAgICAgICAgcmV0dXJuIFNob3J0LnBhcnNlU2hvcnQocCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmxvYXQgZmxvYXRGcm9tKFN0cmluZyBwKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAocC5sZW5ndGgoKSA9PSAwKSByZXR1cm4gRmxvYXQuTUlOX1ZBTFVFOworICAgICAgICAgICAgaW50IGZyYWN0ID0gcC5pbmRleE9mKCcvJyk7CisgICAgICAgICAgICBpZiAoZnJhY3QgPT0gLTEpIHJldHVybiBGbG9hdC52YWx1ZU9mKHApLmZsb2F0VmFsdWUoKTsKKyAgICAgICAgICAgIFN0cmluZyBxID0gcC5zdWJzdHJpbmcoMCxmcmFjdCk7CisgICAgICAgICAgICBmbG9hdCBudW0gPSAwOworICAgICAgICAgICAgaWYgKHEubGVuZ3RoKCkgIT0gMCkgbnVtID0gSW50ZWdlci5wYXJzZUludChxKTsKKyAgICAgICAgICAgIHAgPSBwLnN1YnN0cmluZyhmcmFjdCsxLHAubGVuZ3RoKCkpOworICAgICAgICAgICAgZmxvYXQgZGVuID0gMDsKKyAgICAgICAgICAgIGlmIChwLmxlbmd0aCgpICE9IDApIGRlbiA9IEludGVnZXIucGFyc2VJbnQocCk7CisgICAgICAgICAgICByZXR1cm4gbnVtL2RlbjsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZmxvYXRGcm9tOiBlcnJvciBwYXJzaW5nICciICsgcCArICInIik7CisgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2hhciBjaGFyRnJvbShTdHJpbmcgcCkgeworICAgICAgICBpZiAocC5sZW5ndGgoKSA9PSAwKSByZXR1cm4gJ1x1MDAwMCc7CisgICAgICAgIGVsc2UgaWYgKHAubGVuZ3RoKCkgPT0gMSkgcmV0dXJuIHAuY2hhckF0KDApOworICAgICAgICBpbnQgdGVtcCA9IEludGVnZXIucGFyc2VJbnQocCwgMTYpOworICAgICAgICBpZiAodGVtcCA8IDAgfHwgdGVtcCA+IDB4RkZGRikKKyAgICAgICAgICAgIHRocm93IG5ldyBOdW1iZXJGb3JtYXRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgIkhleCBjaGFyIG91dCBvZiByYW5nZTogIiArIHApOworICAgICAgICByZXR1cm4gKGNoYXIpdGVtcDsKKyAgICB9CisKKworICAgIHByaXZhdGUgT2JqZWN0W10gY2FjaGUgPSBuZXcgT2JqZWN0WzY1NTM2XTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXN0L3RleHQvQXJhYmljU2hhcGluZ1JlZ1Rlc3QuamF2YSBiL3NyYy9jb20vaWJtL2ljdS90ZXN0L3RleHQvQXJhYmljU2hhcGluZ1JlZ1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kMWVlYmJiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vaWN1L3Rlc3QvdGV4dC9BcmFiaWNTaGFwaW5nUmVnVGVzdC5qYXZhCkBAIC0wLDAgKzEsNDE1IEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgIENvcHlyaWdodCAoQykgMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworcGFja2FnZSBjb20uaWJtLmljdS50ZXN0LnRleHQ7CisKK2ltcG9ydCBjb20uaWJtLnRlc3QuVGVzdEZtd2s7CitpbXBvcnQgY29tLmlibS50ZXh0LkFyYWJpY1NoYXBpbmc7CitpbXBvcnQgY29tLmlibS50ZXh0LkFyYWJpY1NoYXBpbmdFeGNlcHRpb247CisKKy8qKgorICogUmVncmVzc2lvbiB0ZXN0IGZvciBBcmFiaWMgc2hhcGluZy4KKyAqLworcHVibGljIGNsYXNzIEFyYWJpY1NoYXBpbmdSZWdUZXN0IGV4dGVuZHMgVGVzdEZtd2sgeworCisgICAgLyogY29uc3RhbnRzIGNvcGllZCBmcm9tIEFyYWJpY1NoYXBpbmcgZm9yIGNvbnZlbmllbmNlICovCisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMRU5HVEhfR1JPV19TSFJJTksgPSAwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExFTkdUSF9GSVhFRF9TUEFDRVNfTkVBUiA9IDE7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTEVOR1RIX0ZJWEVEX1NQQUNFU19BVF9FTkQgPSAyOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExFTkdUSF9GSVhFRF9TUEFDRVNfQVRfQkVHSU5OSU5HID0gMzsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRFWFRfRElSRUNUSU9OX0xPR0lDQUwgPSAwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRFWFRfRElSRUNUSU9OX1ZJU1VBTF9MVFIgPSA0OworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTEVUVEVSU19OT09QID0gMDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMRVRURVJTX1NIQVBFID0gODsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMRVRURVJTX1VOU0hBUEUgPSAweDEwOworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElHSVRTX05PT1AgPSAwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERJR0lUU19FTjJBTiA9IDB4MjA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElHSVRTX0FOMkVOID0gMHg0MDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBESUdJVFNfRU4yQU5fSU5JVF9MUiA9IDB4NjA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElHSVRTX0VOMkFOX0lOSVRfQUwgPSAweDgwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBESUdJVFNfUkVTRVJWRUQgPSAweGEwOworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElHSVRfVFlQRV9BTiA9IDA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElHSVRfVFlQRV9BTl9FWFRFTkRFRCA9IDB4MTAwOworCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBUZXN0RGF0YSB7CisgICAgICAgIHB1YmxpYyBpbnQgdHlwZTsKKyAgICAgICAgcHVibGljIFN0cmluZyBzb3VyY2U7CisgICAgICAgIHB1YmxpYyBpbnQgZmxhZ3M7CisgICAgICAgIHB1YmxpYyBTdHJpbmcgcmVzdWx0OworICAgICAgICBwdWJsaWMgaW50IGxlbmd0aDsKKyAgICAgICAgcHVibGljIENsYXNzIGVycm9yOworCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQU5EQVJEID0gMDsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUFJFRkxJR0hUID0gMTsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRVJST1IgPSAyOworCisgICAgICAgIHB1YmxpYyBzdGF0aWMgVGVzdERhdGEgc3RhbmRhcmQoU3RyaW5nIHNvdXJjZSwgaW50IGZsYWdzLCBTdHJpbmcgcmVzdWx0KSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFRlc3REYXRhKFNUQU5EQVJELCBzb3VyY2UsIGZsYWdzLCByZXN1bHQsIDAsIG51bGwpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgc3RhdGljIFRlc3REYXRhIHByZWZsaWdodChTdHJpbmcgc291cmNlLCBpbnQgZmxhZ3MsIGludCBsZW5ndGgpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgVGVzdERhdGEoUFJFRkxJR0hULCBzb3VyY2UsIGZsYWdzLCBudWxsLCBsZW5ndGgsIG51bGwpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHN0YXRpYyBUZXN0RGF0YSBlcnJvcihTdHJpbmcgc291cmNlLCBpbnQgZmxhZ3MsIENsYXNzIGVycm9yKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFRlc3REYXRhKEVSUk9SLCBzb3VyY2UsIGZsYWdzLCBudWxsLCAwLCBlcnJvcik7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIFRlc3REYXRhKGludCB0eXBlLCBTdHJpbmcgc291cmNlLCBpbnQgZmxhZ3MsIFN0cmluZyByZXN1bHQsIGludCBsZW5ndGgsIENsYXNzIGVycm9yKSB7CisgICAgICAgICAgICB0aGlzLnR5cGUgPSB0eXBlOworICAgICAgICAgICAgdGhpcy5zb3VyY2UgPSBzb3VyY2U7CisgICAgICAgICAgICB0aGlzLmZsYWdzID0gZmxhZ3M7CisgICAgICAgICAgICB0aGlzLnJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoOworICAgICAgICAgICAgdGhpcy5lcnJvciA9IGVycm9yOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nW10gdHlwZW5hbWVzID0geyAic3RhbmRhcmQiLCAicHJlZmxpZ2h0IiwgImVycm9yIiB9OworCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIltcbiIpOworICAgICAgICAgICAgYnVmLmFwcGVuZCh0eXBlbmFtZXNbdHlwZV0pOworICAgICAgICAgICAgYnVmLmFwcGVuZCgiLFxuIik7CisgICAgICAgICAgICBpZiAoc291cmNlID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCJudWxsIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJyInKTsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKGVzY2FwZWRTdHJpbmcoc291cmNlKSk7CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgnIicpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnVmLmFwcGVuZCgiLFxuIik7CisgICAgICAgICAgICBidWYuYXBwZW5kKEludGVnZXIudG9IZXhTdHJpbmcoZmxhZ3MpKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIixcbiIpOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgibnVsbCIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCciJyk7CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChlc2NhcGVkU3RyaW5nKHJlc3VsdCkpOworICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJyInKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIixcbiIpOworICAgICAgICAgICAgYnVmLmFwcGVuZChsZW5ndGgpOworICAgICAgICAgICAgYnVmLmFwcGVuZCgiLFxuIik7CisgICAgICAgICAgICBidWYuYXBwZW5kKGVycm9yKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJ10nKTsKKyAgICAgICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBsYW1BbGVmU3BlY2lhbFZMVFIgPQorICAgICAgICAiXHUwMDIwXHUwNjQ2XHUwNjIyXHUwNjQ0XHUwNjI3XHUwMDIwIiArCisgICAgIAkiXHUwNjQ2XHUwNjIzXHUwNjRFXHUwNjQ0XHUwNjI3XHUwMDIwIiArCisgICAgIAkiXHUwNjQ2XHUwNjI3XHUwNjcwXHUwNjQ0XHUwNjI3XHUwMDIwIiArCisgICAgIAkiXHUwNjQ2XHUwNjIyXHUwNjUzXHUwNjQ0XHUwNjI3XHUwMDIwIiArCisgICAgIAkiXHUwNjQ2XHUwNjI1XHUwNjU1XHUwNjQ0XHUwNjI3XHUwMDIwIiArCisgICAgIAkiXHUwNjQ2XHUwNjIyXHUwNjU0XHUwNjQ0XHUwNjI3XHUwMDIwIiArCisgICAgIAkiXHVGRUZDXHUwNjM5IjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyB0YXNoa2VlbFNwZWNpYWxWTFRSID0gCisgICAgICAgICJcdTA2NEFcdTA2MjhcdTA2MzFcdTA2MzlcdTAwMjAiICsKKyAgICAgICAgIlx1MDY0QVx1MDYyOFx1MDY1MVx1MDYzMVx1MDY0RVx1MDYzOVx1MDAyMCIgKworICAgICAgICAiXHUwNjRDXHUwNjRBXHUwNjI4XHUwNjMxXHUwNjRGXHUwNjM5XHUwMDIwIiArCisgICAgICAgICJcdTA2MjhcdTA2NzBcdTA2MzFcdTA2NzBcdTA2MzlcdTAwMjAiICsKKyAgICAgICAgIlx1MDYyOFx1MDY1M1x1MDYzMVx1MDY1M1x1MDYzOVx1MDAyMCIgKworICAgICAgICAiXHUwNjI4XHUwNjU0XHUwNjMxXHUwNjU0XHUwNjM5XHUwMDIwIiArCisgICAgICAgICJcdTA2MjhcdTA2NTVcdTA2MzFcdTA2NTVcdTA2MzlcdTAwMjAiOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGxvZ2ljYWxVbnNoYXBlID0gCisgICAgICAgICJcdTAwMjBcdTAwMjBcdTAwMjBcdUZFOERcdUZFRjVcdTAwMjBcdUZFRTVcdTAwMjBcdUZFOERcdUZFRjdcdTAwMjAiICsKKyAgICAgICAgIlx1RkVEN1x1RkVGQ1x1MDAyMFx1RkVFMVx1MDAyMFx1RkU4RFx1RkVERlx1RkVDQ1x1RkVBRVx1RkU5MVx1RkVGNCIgKworICAgICAgICAiXHVGRTk0XHUwMDIwXHVGRThEXHVGRURGXHVGRUE0XHVGRUFFXHVGRTkzXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwIjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBudW1Tb3VyY2UgPQorICAgICAgICAiXHUwMDMxIiArICAvKiBlbjoxICovCisgICAgICAgICJcdTA2MjciICsgIC8qIGFyYWJpYzphbGVmICovCisgICAgICAgICJcdTAwMzIiICsgIC8qIGVuOjIgKi8KKyAgICAgICAgIlx1MDZmMyIgKyAgLyogYW46MyAqLworICAgICAgICAiXHUwMDYxIiArICAvKiBsYXRpbjphICovCisgICAgICAgICJcdTAwMzQiOyAgIC8qIGVuOjQgKi8KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFRlc3REYXRhW10gdGVzdHMgPSB7CisgICAgICAgIC8qIGxhbSBhbGVmIHNwZWNpYWwgdmlzdWFsIGx0ciAqLworICAgICAgICBUZXN0RGF0YS5zdGFuZGFyZChsYW1BbGVmU3BlY2lhbFZMVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIExFVFRFUlNfU0hBUEUgfCBURVhUX0RJUkVDVElPTl9WSVNVQUxfTFRSIHwgTEVOR1RIX0ZJWEVEX1NQQUNFU19ORUFSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMDIwXHVmZWU1XHUwMDIwXHVmZWY1XHVmZThkXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlZTVcdTAwMjBcdWZlNzZcdWZlZjdcdWZlOGRcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmVlNVx1MDAyMFx1MDY3MFx1ZmVmYlx1ZmU4ZFx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWU1XHUwMDIwXHUwNjUzXHVmZWY1XHVmZThkXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlZTVcdTAwMjBcdTA2NTVcdWZlZjlcdWZlOGRcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmVlNVx1MDAyMFx1MDY1NFx1ZmVmNVx1ZmU4ZFx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWZjXHVmZWNiIiksCisgICAgICAgIFRlc3REYXRhLnN0YW5kYXJkKGxhbUFsZWZTcGVjaWFsVkxUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTEVUVEVSU19TSEFQRSB8IFRFWFRfRElSRUNUSU9OX1ZJU1VBTF9MVFIgfCBMRU5HVEhfRklYRURfU1BBQ0VTX0FUX0VORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAyMFx1ZmVlNVx1ZmVmNVx1ZmU4ZFx1MDAyMFx1ZmVlNSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZTc2XHVmZWY3XHVmZThkXHUwMDIwXHVmZWU1XHUwNjcwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlZmJcdWZlOGRcdTAwMjBcdWZlZTVcdTA2NTNcdWZlZjUiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmU4ZFx1MDAyMFx1ZmVlNVx1MDY1NVx1ZmVmOVx1ZmU4ZCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMDIwXHVmZWU1XHUwNjU0XHVmZWY1XHVmZThkXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlZmNcdWZlY2JcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAyMFx1MDAyMCIpLAorICAgICAgICBUZXN0RGF0YS5zdGFuZGFyZChsYW1BbGVmU3BlY2lhbFZMVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIExFVFRFUlNfU0hBUEUgfCBURVhUX0RJUkVDVElPTl9WSVNVQUxfTFRSIHwgTEVOR1RIX0ZJWEVEX1NQQUNFU19BVF9CRUdJTk5JTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAyMFx1ZmVlNVx1ZmVmNVx1ZmU4ZFx1MDAyMFx1ZmVlNSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZTc2XHVmZWY3XHVmZThkXHUwMDIwXHVmZWU1XHUwNjcwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlZmJcdWZlOGRcdTAwMjBcdWZlZTVcdTA2NTNcdWZlZjUiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmU4ZFx1MDAyMFx1ZmVlNVx1MDY1NVx1ZmVmOVx1ZmU4ZCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMDIwXHVmZWU1XHUwNjU0XHVmZWY1XHVmZThkXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlZmNcdWZlY2IiKSwKKyAgICAgICAgVGVzdERhdGEuc3RhbmRhcmQobGFtQWxlZlNwZWNpYWxWTFRSLAorICAgICAgICAgICAgICAgICAgICAgICAgICBMRVRURVJTX1NIQVBFIHwgVEVYVF9ESVJFQ1RJT05fVklTVUFMX0xUUiB8IExFTkdUSF9HUk9XX1NIUklOSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAyMFx1ZmVlNVx1ZmVmNVx1ZmU4ZFx1MDAyMFx1ZmVlNSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZTc2XHVmZWY3XHVmZThkXHUwMDIwXHVmZWU1XHUwNjcwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlZmJcdWZlOGRcdTAwMjBcdWZlZTVcdTA2NTNcdWZlZjUiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmU4ZFx1MDAyMFx1ZmVlNVx1MDY1NVx1ZmVmOVx1ZmU4ZCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMDIwXHVmZWU1XHUwNjU0XHVmZWY1XHVmZThkXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlZmNcdWZlY2IiKSwKKyAgICAgICAgLyogVEFTSEtFRUwgdW5zdXBwb3J0ZWQKKyAgICAgICAgVGVzdERhdGEuc3RhbmRhcmQobGFtQWxlZlNwZWNpYWxWTFRSLAorICAgICAgICAgICAgICAgICAgICAgICAgICBMRVRURVJTX1NIQVBFX0VYQ0VQVF9UQVNIS0VFTCB8IFRFWFRfRElSRUNUSU9OX1ZJU1VBTF9MVFIgfCBMRU5HVEhfRklYRURfU1BBQ0VTX05FQVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwMjBcdWZlZTVcdTAwMjBcdWZlZjVcdWZlOGRcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmVlNVx1MDAyMFx1ZmU3Nlx1ZmVmN1x1ZmU4ZFx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWU1XHUwMDIwXHUwNjcwXHVmZWZiXHVmZThkXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlZTVcdTAwMjBcdTA2NTNcdWZlZjVcdWZlOGRcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmVlNVx1MDAyMFx1MDY1NVx1ZmVmOVx1ZmU4ZFx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWU1XHUwMDIwXHUwNjU0XHVmZWY1XHVmZThkXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlZmNcdWZlY2IiKSwKKyAgICAgICAgVGVzdERhdGEuc3RhbmRhcmQobGFtQWxlZlNwZWNpYWxWTFRSLAorICAgICAgICAgICAgICAgICAgICAgICAgICBMRVRURVJTX1NIQVBFX0VYQ0VQVF9UQVNIS0VFTCB8IFRFWFRfRElSRUNUSU9OX1ZJU1VBTF9MVFIgfCBMRU5HVEhfRklYRURfU1BBQ0VTX0FUX0VORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAyMFx1ZmVlNVx1ZmVmNVx1ZmU4ZFx1MDAyMFx1ZmVlNSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZTc2XHVmZWY3XHVmZThkXHUwMDIwXHVmZWU1XHUwNjcwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlZmJcdWZlOGRcdTAwMjBcdWZlZTVcdTA2NTNcdWZlZjUiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmU4ZFx1MDAyMFx1ZmVlNVx1MDY1NVx1ZmVmOVx1ZmU4ZCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMDIwXHVmZWU1XHUwNjU0XHVmZWY1XHVmZThkXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlZmNcdWZlY2JcdTAwMjBcdTAwMjBcdTAwMjBcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAyMFx1MDAyMCIpLAorICAgICAgICBUZXN0RGF0YS5zdGFuZGFyZChsYW1BbGVmU3BlY2lhbFZMVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIExFVFRFUlNfU0hBUEVfRVhDRVBUX1RBU0hLRUVMIHwgVEVYVF9ESVJFQ1RJT05fVklTVUFMX0xUUiB8IExFTkdUSF9GSVhFRF9TUEFDRVNfQVRfQkVHSU5OSU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwMjBcdWZlZTVcdWZlZjVcdWZlOGRcdTAwMjBcdWZlZTUiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmU3Nlx1ZmVmN1x1ZmU4ZFx1MDAyMFx1ZmVlNVx1MDY3MCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWZiXHVmZThkXHUwMDIwXHVmZWU1XHUwNjUzXHVmZWY1IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlOGRcdTAwMjBcdWZlZTVcdTA2NTVcdWZlZjlcdWZlOGQiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAyMFx1ZmVlNVx1MDY1NFx1ZmVmNVx1ZmU4ZFx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWZjXHVmZWNiIiksCisgICAgICAgIFRlc3REYXRhLnN0YW5kYXJkKGxhbUFsZWZTcGVjaWFsVkxUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTEVUVEVSU19TSEFQRV9FWENFUFRfVEFTSEtFRUwgfCBURVhUX0RJUkVDVElPTl9WSVNVQUxfTFRSIHwgTEVOR1RIX0dST1dfU0hSSU5LLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMDIwXHVmZWU1XHVmZWY1XHVmZThkXHUwMDIwXHVmZWU1IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlNzZcdWZlZjdcdWZlOGRcdTAwMjBcdWZlZTVcdTA2NzAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmVmYlx1ZmU4ZFx1MDAyMFx1ZmVlNVx1MDY1M1x1ZmVmNSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZThkXHUwMDIwXHVmZWU1XHUwNjU1XHVmZWY5XHVmZThkIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwMjBcdWZlZTVcdTA2NTRcdWZlZjVcdWZlOGRcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmVmY1x1ZmVjYiIpLAorICAgICAgICAqLworCisgICAgICAgIC8qIHRhc2hrZWVsIHNwZWNpYWwgdmlzdWFsIGx0ciAqLworICAgICAgICBUZXN0RGF0YS5zdGFuZGFyZCh0YXNoa2VlbFNwZWNpYWxWTFRSLAorICAgICAgICAgICAgICAgICAgICAgICAgICBMRVRURVJTX1NIQVBFIHwgVEVYVF9ESVJFQ1RJT05fVklTVUFMX0xUUiB8IExFTkdUSF9GSVhFRF9TUEFDRVNfTkVBUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmVmMlx1ZmU5MVx1ZmVhZVx1ZmVjYlx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZWYyXHVmZTkxXHVmZTdjXHVmZWFlXHVmZTc3XHVmZWNiXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlNzJcdWZlZjJcdWZlOTFcdWZlYWVcdWZlNzlcdWZlY2JcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmU4Zlx1MDY3MFx1ZmVhZVx1MDY3MFx1ZmVjYlx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZThmXHUwNjUzXHVmZWFlXHUwNjUzXHVmZWNiXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlOGZcdTA2NTRcdWZlYWVcdTA2NTRcdWZlY2JcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmU4Zlx1MDY1NVx1ZmVhZVx1MDY1NVx1ZmVjYlx1MDAyMCIpLAorICAgICAgICAvKiBUQVNIS0VFTCB1bnN1cHBvcnRlZAorICAgICAgICBUZXN0RGF0YS5zdGFuZGFyZCh0YXNoa2VlbFNwZWNpYWxWTFRSLAorICAgICAgICAgICAgICAgICAgICAgICAgICBMRVRURVJTX1NIQVBFX0VYQ0VQVF9UQVNIS0VFTCB8IFRFWFRfRElSRUNUSU9OX1ZJU1VBTF9MVFIgfCBMRU5HVEhfRklYRURfU1BBQ0VTX05FQVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlZjJcdWZlOTFcdWZlYWVcdWZlY2JcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmVmMlx1ZmU5MVx1ZmU3Y1x1ZmVhZVx1ZmU3Nlx1ZmVjYlx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZTcyXHVmZWYyXHVmZTkxXHVmZWFlXHVmZTc4XHVmZWNiXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlOGZcdTA2NzBcdWZlYWVcdTA2NzBcdWZlY2JcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1ZmU4Zlx1MDY1M1x1ZmVhZVx1MDY1M1x1ZmVjYlx1MDAyMCIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVmZThmXHUwNjU0XHVmZWFlXHUwNjU0XHVmZWNiXHUwMDIwIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdWZlOGZcdTA2NTVcdWZlYWVcdTA2NTVcdWZlY2JcdTAwMjAiKSwKKyAgICAgICAgKi8KKworICAgICAgICAvKiBsb2dpY2FsIHVuc2hhcGUgKi8KKyAgICAgICAgVGVzdERhdGEuc3RhbmRhcmQobG9naWNhbFVuc2hhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIExFVFRFUlNfVU5TSEFQRSB8IFRFWFRfRElSRUNUSU9OX0xPR0lDQUwgfCBMRU5HVEhfRklYRURfU1BBQ0VTX05FQVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwMjBcdTAwMjBcdTAwMjBcdTA2MjdcdTA2NDRcdTA2MjJcdTA2NDZcdTAwMjBcdTA2MjdcdTA2NDRcdTA2MjNcdTA2NDJcdTA2NDRcdTA2MjciICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDY0NVx1MDAyMFx1MDYyN1x1MDY0NFx1MDYzOVx1MDYzMVx1MDYyOFx1MDY0YVx1MDYyOVx1MDAyMFx1MDYyN1x1MDY0NFx1MDYyZFx1MDYzMSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwNjI5XHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwIiksCisgICAgICAgIFRlc3REYXRhLnN0YW5kYXJkKGxvZ2ljYWxVbnNoYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBMRVRURVJTX1VOU0hBUEUgfCBURVhUX0RJUkVDVElPTl9MT0dJQ0FMIHwgTEVOR1RIX0ZJWEVEX1NQQUNFU19BVF9FTkQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwMjBcdTAwMjBcdTAwMjBcdTA2MjdcdTA2NDRcdTA2MjJcdTAwMjBcdTA2NDZcdTAwMjBcdTA2MjdcdTA2NDRcdTA2MjNcdTAwMjBcdTA2NDIiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDY0NFx1MDYyN1x1MDAyMFx1MDY0NVx1MDAyMFx1MDYyN1x1MDY0NFx1MDYzOVx1MDYzMVx1MDYyOFx1MDY0YVx1MDYyOVx1MDAyMFx1MDYyNyIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwNjQ0XHUwNjJkXHUwNjMxXHUwNjI5XHUwMDIwIiksCisgICAgICAgIFRlc3REYXRhLnN0YW5kYXJkKGxvZ2ljYWxVbnNoYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBMRVRURVJTX1VOU0hBUEUgfCBURVhUX0RJUkVDVElPTl9MT0dJQ0FMIHwgTEVOR1RIX0ZJWEVEX1NQQUNFU19BVF9CRUdJTk5JTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTA2MjdcdTA2NDRcdTA2MjJcdTAwMjBcdTA2NDZcdTAwMjBcdTA2MjdcdTA2NDRcdTA2MjNcdTAwMjBcdTA2NDJcdTA2NDRcdTA2MjdcdTAwMjAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDY0NVx1MDAyMFx1MDYyN1x1MDY0NFx1MDYzOVx1MDYzMVx1MDYyOFx1MDY0YVx1MDYyOVx1MDAyMFx1MDYyN1x1MDY0NFx1MDYyZFx1MDYzMSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwNjI5XHUwMDIwXHUwMDIwXHUwMDIwXHUwMDIwIiksCisgICAgICAgIFRlc3REYXRhLnN0YW5kYXJkKGxvZ2ljYWxVbnNoYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBMRVRURVJTX1VOU0hBUEUgfCBURVhUX0RJUkVDVElPTl9MT0dJQ0FMIHwgTEVOR1RIX0dST1dfU0hSSU5LLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwMDIwXHUwMDIwXHUwMDIwXHUwNjI3XHUwNjQ0XHUwNjIyXHUwMDIwXHUwNjQ2XHUwMDIwXHUwNjI3XHUwNjQ0XHUwNjIzXHUwMDIwXHUwNjQyIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTA2NDRcdTA2MjdcdTAwMjBcdTA2NDVcdTAwMjBcdTA2MjdcdTA2NDRcdTA2MzlcdTA2MzFcdTA2MjhcdTA2NGFcdTA2MjlcdTAwMjBcdTA2MjciICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDY0NFx1MDYyZFx1MDYzMVx1MDYyOVx1MDAyMFx1MDAyMFx1MDAyMFx1MDAyMCIpLAorCisgICAgICAgIC8qIG51bWJlcnMgKi8KKyAgICAgICAgVGVzdERhdGEuc3RhbmRhcmQobnVtU291cmNlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRElHSVRTX0VOMkFOIHwgRElHSVRfVFlQRV9BTiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTA2NjFcdTA2MjdcdTA2NjJcdTA2ZjNcdTAwNjFcdTA2NjQiKSwKKyAgICAgICAgVGVzdERhdGEuc3RhbmRhcmQobnVtU291cmNlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRElHSVRTX0FOMkVOIHwgRElHSVRfVFlQRV9BTl9FWFRFTkRFRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTAwMzFcdTA2MjdcdTAwMzJcdTAwMzNcdTAwNjFcdTAwMzQiKSwKKyAgICAgICAgVGVzdERhdGEuc3RhbmRhcmQobnVtU291cmNlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRElHSVRTX0VOMkFOX0lOSVRfTFIgfCBESUdJVF9UWVBFX0FOLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDAzMVx1MDYyN1x1MDY2Mlx1MDZmM1x1MDA2MVx1MDAzNCIpLAorICAgICAgICBUZXN0RGF0YS5zdGFuZGFyZChudW1Tb3VyY2UsIAorICAgICAgICAgICAgICAgICAgICAgICAgICBESUdJVFNfRU4yQU5fSU5JVF9BTCB8IERJR0lUX1RZUEVfQU5fRVhURU5ERUQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUwNmYxXHUwNjI3XHUwNmYyXHUwNmYzXHUwMDYxXHUwMDM0IiksCisgICAgICAgIFRlc3REYXRhLnN0YW5kYXJkKG51bVNvdXJjZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgIERJR0lUU19FTjJBTl9JTklUX0xSIHwgRElHSVRfVFlQRV9BTiB8IFRFWFRfRElSRUNUSU9OX1ZJU1VBTF9MVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTA2NjFcdTA2MjdcdTAwMzJcdTA2ZjNcdTAwNjFcdTAwMzQiKSwKKyAgICAgICAgVGVzdERhdGEuc3RhbmRhcmQobnVtU291cmNlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRElHSVRTX0VOMkFOX0lOSVRfQUwgfCBESUdJVF9UWVBFX0FOX0VYVEVOREVEIHwgVEVYVF9ESVJFQ1RJT05fVklTVUFMX0xUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIlx1MDZmMVx1MDYyN1x1MDAzMlx1MDZmM1x1MDA2MVx1MDZmNCIpLAorCisgICAgICAgIC8qIG5vLW9wICovCisgICAgICAgIFRlc3REYXRhLnN0YW5kYXJkKG51bVNvdXJjZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG51bVNvdXJjZSksCisKKyAgICAgICAgLyogcHJlZmxpZ2h0ICovCisgICAgICAgIFRlc3REYXRhLnByZWZsaWdodCgiXHUwNjQ0XHUwNjI3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIExFVFRFUlNfU0hBUEUgfCBMRU5HVEhfR1JPV19TSFJJTkssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSwKKworICAgICAgICBUZXN0RGF0YS5wcmVmbGlnaHQoIlx1MDY0NFx1MDYyN1x1MDAzMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBESUdJVFNfRU4yQU4gfCBESUdJVF9UWVBFX0FOX0VYVEVOREVEIHwgTEVOR1RIX0dST1dfU0hSSU5LLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgMyksCisKKyAgICAgICAgVGVzdERhdGEucHJlZmxpZ2h0KCJcdTA2NDRcdTA2NDQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTEVUVEVSU19TSEFQRSB8IExFTkdUSF9HUk9XX1NIUklOSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDIpLAorCisgICAgICAgIFRlc3REYXRhLnByZWZsaWdodCgiXHVmZWY3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIExFVFRFUlNfVU5TSEFQRSB8IExFTkdUSF9HUk9XX1NIUklOSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDIpLAorCisgICAgICAgIC8qIGJhZCBkYXRhICovCisgICAgICAgIFRlc3REYXRhLmVycm9yKCJcdTAwMjBcdWZlZjdcdTA2NDRcdTAwMjAiLAorICAgICAgICAgICAgICAgICAgICAgICBMRVRURVJTX1VOU0hBUEUgfCBMRU5HVEhfRklYRURfU1BBQ0VTX05FQVIsCisgICAgICAgICAgICAgICAgICAgICAgIEFyYWJpY1NoYXBpbmdFeGNlcHRpb24uY2xhc3MpLAorCisgICAgICAgIFRlc3REYXRhLmVycm9yKCJcdTAwMjBcdWZlZjciLAorICAgICAgICAgICAgICAgICAgICAgICBMRVRURVJTX1VOU0hBUEUgfCBMRU5HVEhfRklYRURfU1BBQ0VTX0FUX0VORCwKKyAgICAgICAgICAgICAgICAgICAgICAgQXJhYmljU2hhcGluZ0V4Y2VwdGlvbi5jbGFzcyksCisKKyAgICAgICAgVGVzdERhdGEuZXJyb3IoIlx1ZmVmN1x1MDAyMCIsCisgICAgICAgICAgICAgICAgICAgICAgIExFVFRFUlNfVU5TSEFQRSB8IExFTkdUSF9GSVhFRF9TUEFDRVNfQVRfQkVHSU5OSU5HLAorICAgICAgICAgICAgICAgICAgICAgICBBcmFiaWNTaGFwaW5nRXhjZXB0aW9uLmNsYXNzKSwKKworICAgICAgICAvKiBiYWQgb3B0aW9ucyAqLworICAgICAgICBUZXN0RGF0YS5lcnJvcigiXHVmZWY3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgMHhmZmZmZmZmZiwKKyAgICAgICAgICAgICAgICAgICAgICAgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLmNsYXNzKSwKKyAgICB9OworCisgICAgcHVibGljIHZvaWQgdGVzdFN0YW5kYXJkKCkgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBUZXN0RGF0YSB0ZXN0ID0gdGVzdHNbaV07CisKKyAgICAgICAgICAgIEV4Y2VwdGlvbiBleCA9IG51bGw7CisgICAgICAgICAgICBTdHJpbmcgcmVzdWx0ID0gbnVsbDsKKyAgICAgICAgICAgIEFyYWJpY1NoYXBpbmcgc2hhcGVyID0gbnVsbDsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgc2hhcGVyID0gbmV3IEFyYWJpY1NoYXBpbmcodGVzdC5mbGFncyk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2hhcGVyLnNoYXBlKHRlc3Quc291cmNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGV4ID0gZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3dpdGNoICh0ZXN0LnR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgVGVzdERhdGEuU1RBTkRBUkQ6CisgICAgICAgICAgICAgICAgaWYgKCF0ZXN0LnJlc3VsdC5lcXVhbHMocmVzdWx0KSkgeworICAgICAgICAgICAgICAgICAgICByZXBvcnRUZXN0RmFpbHVyZShpLCB0ZXN0LCBzaGFwZXIsIHJlc3VsdCwgZXgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgVGVzdERhdGEuUFJFRkxJR0hUOgorICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCB8fCB0ZXN0Lmxlbmd0aCAhPSByZXN1bHQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVwb3J0VGVzdEZhaWx1cmUoaSwgdGVzdCwgc2hhcGVyLCByZXN1bHQsIGV4KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgVGVzdERhdGEuRVJST1I6CisgICAgICAgICAgICAgICAgaWYgKCF0ZXN0LmVycm9yLmlzSW5zdGFuY2UoZXgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlcG9ydFRlc3RGYWlsdXJlKGksIHRlc3QsIHNoYXBlciwgcmVzdWx0LCBleCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZXBvcnRUZXN0RmFpbHVyZShpbnQgaW5kZXgsIFRlc3REYXRhIHRlc3QsIEFyYWJpY1NoYXBpbmcgc2hhcGVyLCBTdHJpbmcgcmVzdWx0LCBFeGNlcHRpb24gZXJyb3IpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgYnVmLmFwcGVuZCgiKioqIHRlc3QgZmFpbHVyZSAqKipcbiIpOworICAgICAgICBidWYuYXBwZW5kKCJpbmRleDogIiArIGluZGV4ICsgIlxuIik7CisgICAgICAgIGJ1Zi5hcHBlbmQoInRlc3Q6ICIgKyB0ZXN0ICsgIlxuIik7CisgICAgICAgIGJ1Zi5hcHBlbmQoInNoYXBlcjogIiArIHNoYXBlciArICJcbiIpOworICAgICAgICBidWYuYXBwZW5kKCJyZXN1bHQ6ICIgKyBlc2NhcGVkU3RyaW5nKHJlc3VsdCkgKyAiXG4iKTsKKyAgICAgICAgYnVmLmFwcGVuZCgiZXJyb3I6ICIgKyBlcnJvciArICJcbiIpOworCisgICAgICAgIGlmIChyZXN1bHQgIT0gbnVsbCAmJiB0ZXN0LnJlc3VsdCAhPSBudWxsICYmICF0ZXN0LnJlc3VsdC5lcXVhbHMocmVzdWx0KSkgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBNYXRoLm1heCh0ZXN0LnJlc3VsdC5sZW5ndGgoKSwgcmVzdWx0Lmxlbmd0aCgpKTsgKytpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHRlbXAgPSBJbnRlZ2VyLnRvU3RyaW5nKGkpOworICAgICAgICAgICAgICAgIGlmICh0ZW1wLmxlbmd0aCgpIDwgMikgeworICAgICAgICAgICAgICAgICAgICB0ZW1wID0gIiAiLmNvbmNhdCh0ZW1wKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2hhciB0cmcgPSBpIDwgdGVzdC5yZXN1bHQubGVuZ3RoKCkgPyB0ZXN0LnJlc3VsdC5jaGFyQXQoaSkgOiAnXHVmZmZmJzsKKyAgICAgICAgICAgICAgICBjaGFyIHJlcyA9IGkgPCByZXN1bHQubGVuZ3RoKCkgPyByZXN1bHQuY2hhckF0KGkpIDogJ1x1ZmZmZic7CisKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCJbIiArIHRlbXAgKyAiXSAiKTsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKGVzY2FwZWRTdHJpbmcoIiIgKyB0cmcpICsgIiAiKTsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKGVzY2FwZWRTdHJpbmcoIiIgKyByZXMpICsgIiAiKTsKKyAgICAgICAgICAgICAgICBpZiAodHJnICE9IHJlcykgeworICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCIqKioiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiXG4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlcnIoYnVmLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBlc2NhcGVkU3RyaW5nKFN0cmluZyBzdHIpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoc3RyLmxlbmd0aCgpICogNik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RyLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGNoYXIgY2ggPSBzdHIuY2hhckF0KGkpOworICAgICAgICAgICAgYnVmLmFwcGVuZCgiXFx1Iik7CisgICAgICAgICAgICBpZiAoY2ggPCAweDEwMDApIHsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY2ggPCAweDAxMDApIHsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY2ggPCAweDAwMTApIHsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidWYuYXBwZW5kKEludGVnZXIudG9IZXhTdHJpbmcoY2gpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVmLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgbmV3IEFyYWJpY1NoYXBpbmdSZWdUZXN0KCkucnVuKGFyZ3MpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGUpOworICAgICAgICB9CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGVzdC90ZXh0L0FyYWJpY1NoYXBpbmdUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvdGVzdC90ZXh0L0FyYWJpY1NoYXBpbmdUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjcwZjVjNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXN0L3RleHQvQXJhYmljU2hhcGluZ1Rlc3QuamF2YQpAQCAtMCwwICsxLDI4OCBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBDb3B5cmlnaHQgKEMpIDIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS5pY3UudGVzdC50ZXh0OworCitpbXBvcnQgY29tLmlibS50ZXh0LkFyYWJpY1NoYXBpbmc7CitpbXBvcnQgY29tLmlibS50ZXh0LkFyYWJpY1NoYXBpbmdFeGNlcHRpb247CisKKy8qKgorICogSW50ZXJhY3RpdmUgdGVzdCBmb3IgQXJhYmljIHNoYXBpbmcuCisgKiBJbnZva2UgZnJvbSBhIGNvbW1hbmQgbGluZSBwYXNzaW5nIGFyZ3MgYW5kIHN0cmluZ3MuICBVc2UgJy1oZWxwJyB0byBzZWUgZGVzY3JpcHRpb24gb2YgYXJndW1lbnRzLgorICovCitwdWJsaWMgY2xhc3MgQXJhYmljU2hhcGluZ1Rlc3QgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDT1BZID0gMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSU5QTEFDRSA9IDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNUUklORyA9IDI7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIGludCB0ZXN0dHlwZSA9IENPUFk7CisgICAgICAgIGludCBvcHRpb25zID0gMDsKKyAgICAgICAgaW50IHNzID0gMDsKKyAgICAgICAgaW50IHNsID0gLTE7CisgICAgICAgIGludCBkcyA9IDA7CisgICAgICAgIGludCBkbCA9IC0xOworICAgICAgICBTdHJpbmcgdGV4dCA9ICIkMjIuNCB0ZXN0IDEyMyBcdWZlZjZcdTA2NDRcdTA2MjIgNDU2IFx1MDY2NFx1MDY2NVx1MDY2NiEiOworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgU3RyaW5nIGFyZyA9IGFyZ3NbaV07CisgICAgICAgICAgICBpZiAoYXJnLmNoYXJBdCgwKSA9PSAnLScpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgb3B0ID0gYXJnLnN1YnN0cmluZygxKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgdmFsID0gb3B0OworICAgICAgICAgICAgICAgIGludCBpbmRleCA9IGFyZy5pbmRleE9mKCc6Jyk7CisgICAgICAgICAgICAgICAgaWYgKGluZGV4ICE9IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIG9wdCA9IG9wdC5zdWJzdHJpbmcoMCwgTWF0aC5taW4oaW5kZXgsIDMpKTsKKyAgICAgICAgICAgICAgICAgICAgdmFsID0gYXJnLnN1YnN0cmluZyhpbmRleCArIDEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAob3B0LmVxdWFsc0lnbm9yZUNhc2UoImxlbiIpKSB7CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgJj0gfkFyYWJpY1NoYXBpbmcuTEVOR1RIX01BU0s7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWwuZXF1YWxzSWdub3JlQ2FzZSgiZ3MiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBBcmFiaWNTaGFwaW5nLkxFTkdUSF9HUk9XX1NIUklOSzsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwuZXF1YWxzSWdub3JlQ2FzZSgic24iKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBBcmFiaWNTaGFwaW5nLkxFTkdUSF9GSVhFRF9TUEFDRVNfTkVBUjsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwuZXF1YWxzSWdub3JlQ2FzZSgic2UiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBBcmFiaWNTaGFwaW5nLkxFTkdUSF9GSVhFRF9TUEFDRVNfQVRfRU5EOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbC5lcXVhbHNJZ25vcmVDYXNlKCJzYiIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IEFyYWJpY1NoYXBpbmcuTEVOR1RIX0ZJWEVEX1NQQUNFU19BVF9CRUdJTk5JTkc7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd1ZhbEVycm9yKG9wdCwgdmFsKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0LmVxdWFsc0lnbm9yZUNhc2UoImRpciIpKSB7CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgJj0gfkFyYWJpY1NoYXBpbmcuVEVYVF9ESVJFQ1RJT05fTUFTSzsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbC5lcXVhbHNJZ25vcmVDYXNlKCJsb2ciKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBBcmFiaWNTaGFwaW5nLlRFWFRfRElSRUNUSU9OX0xPR0lDQUw7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsLmVxdWFsc0lnbm9yZUNhc2UoInZpcyIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IEFyYWJpY1NoYXBpbmcuVEVYVF9ESVJFQ1RJT05fVklTVUFMX0xUUjsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93VmFsRXJyb3Iob3B0LCB2YWwpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvcHQuZXF1YWxzSWdub3JlQ2FzZSgibGV0IikpIHsKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyAmPSB+QXJhYmljU2hhcGluZy5MRVRURVJTX01BU0s7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWwuZXF1YWxzSWdub3JlQ2FzZSgibm8iKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBBcmFiaWNTaGFwaW5nLkxFVFRFUlNfTk9PUDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwuZXF1YWxzSWdub3JlQ2FzZSgic2giKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBBcmFiaWNTaGFwaW5nLkxFVFRFUlNfU0hBUEU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsLmVxdWFsc0lnbm9yZUNhc2UoInVuIikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgfD0gQXJhYmljU2hhcGluZy5MRVRURVJTX1VOU0hBUEU7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBUQVNIS0VFTCB1bnN1cHBvcnRlZAorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbC5lcXVhbHNJZ25vcmVDYXNlKCJ0YSIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IEFyYWJpY1NoYXBpbmcuTEVUVEVSU19TSEFQRV9FWENFUFRfVEFTSEtFRUw7CisgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dWYWxFcnJvcihvcHQsIHZhbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wdC5lcXVhbHNJZ25vcmVDYXNlKCJkaWciKSkgeworICAgICAgICAgICAgICAgICAgICBvcHRpb25zICY9IH5BcmFiaWNTaGFwaW5nLkRJR0lUU19NQVNLOworICAgICAgICAgICAgICAgICAgICBpZiAodmFsLmVxdWFsc0lnbm9yZUNhc2UoIm5vIikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgfD0gQXJhYmljU2hhcGluZy5ESUdJVFNfTk9PUDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwuZXF1YWxzSWdub3JlQ2FzZSgiZWEiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBBcmFiaWNTaGFwaW5nLkRJR0lUU19FTjJBTjsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwuZXF1YWxzSWdub3JlQ2FzZSgiYWUiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBBcmFiaWNTaGFwaW5nLkRJR0lUU19BTjJFTjsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwuZXF1YWxzSWdub3JlQ2FzZSgibHIiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucyB8PSBBcmFiaWNTaGFwaW5nLkRJR0lUU19FTjJBTl9JTklUX0xSOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbC5lcXVhbHNJZ25vcmVDYXNlKCJhbCIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IEFyYWJpY1NoYXBpbmcuRElHSVRTX0VOMkFOX0lOSVRfQUw7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd1ZhbEVycm9yKG9wdCwgdmFsKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0LmVxdWFsc0lnbm9yZUNhc2UoInR5cCIpKSB7CisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgJj0gfkFyYWJpY1NoYXBpbmcuRElHSVRfVFlQRV9NQVNLOworICAgICAgICAgICAgICAgICAgICBpZiAodmFsLmVxdWFsc0lnbm9yZUNhc2UoImFuIikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMgfD0gQXJhYmljU2hhcGluZy5ESUdJVF9UWVBFX0FOOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbC5lcXVhbHNJZ25vcmVDYXNlKCJleCIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zIHw9IEFyYWJpY1NoYXBpbmcuRElHSVRfVFlQRV9BTl9FWFRFTkRFRDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93VmFsRXJyb3Iob3B0LCB2YWwpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvcHQuZXF1YWxzSWdub3JlQ2FzZSgiZHN0IikpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRzID0gSW50ZWdlci5wYXJzZUludCh2YWwpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dWYWxFcnJvcihvcHQsIHZhbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wdC5lcXVhbHNJZ25vcmVDYXNlKCJkbG4iKSkgeworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgZGwgPSBJbnRlZ2VyLnBhcnNlSW50KHZhbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd1ZhbEVycm9yKG9wdCwgdmFsKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAob3B0LmVxdWFsc0lnbm9yZUNhc2UoInNzdCIpKSB7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzcyA9IEludGVnZXIucGFyc2VJbnQodmFsKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93VmFsRXJyb3Iob3B0LCB2YWwpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvcHQuZXF1YWxzSWdub3JlQ2FzZSgic2xuIikpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNsID0gSW50ZWdlci5wYXJzZUludCh2YWwpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dWYWxFcnJvcihvcHQsIHZhbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG9wdC5lcXVhbHNJZ25vcmVDYXNlKCJ0ZXMiKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodmFsLmVxdWFsc0lnbm9yZUNhc2UoImNwIikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlc3R0eXBlID0gQ09QWTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWwuZXF1YWxzSWdub3JlQ2FzZSgiaXAiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHR5cGUgPSBJTlBMQUNFOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbC5lcXVhbHNJZ25vcmVDYXNlKCJzdCIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0dHlwZSA9IFNUUklORzsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93VmFsRXJyb3Iob3B0LCB2YWwpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvcHQuZXF1YWxzSWdub3JlQ2FzZSgiaGVscCIpKSB7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbih1c2FnZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3dPcHRFcnJvcihvcHQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gYXNzdW1lIHRleHQKKyAgICAgICAgICAgICAgICB0ZXh0ID0gcGFyc2VUZXh0KGFyZyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2wgPCAwKSB7CisgICAgICAgICAgICBzbCA9IHRleHQubGVuZ3RoKCkgLSBzczsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigic2wgZGVmYXVsdGluZyB0byAiICsgc2wpOworICAgICAgICB9CisgICAgICAgIGlmIChkbCA8IDApIHsKKyAgICAgICAgICAgIGRsID0gMiAqIHNsOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJkbCBkZWZhdWx0aW5nIHRvICIgKyBkbCk7CisgICAgICAgIH0KKworICAgICAgICBBcmFiaWNTaGFwaW5nIHNoYXBlciA9IG5ldyBBcmFiaWNTaGFwaW5nKG9wdGlvbnMpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInNoYXBlcjogIiArIHNoYXBlcik7CisKKyAgICAgICAgY2hhcltdIHNyYyA9IHRleHQudG9DaGFyQXJyYXkoKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIgaW5wdXQ6ICciICsgZXNjYXBlZFRleHQoc3JjLCBzcywgc2wpICsgIiciKTsKKyAgICAgICAgaWYgKHRlc3R0eXBlICE9IFNUUklORykgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJzdGFydDogIiArIHNzICsgIiBsZW5ndGg6ICIgKyBzbCArICIgdG90YWwgbGVuZ3RoOiAiICsgc3JjLmxlbmd0aCk7CisgICAgICAgIH0KKworICAgICAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgICAgIGNoYXJbXSBkZXN0ID0gbnVsbDsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgc3dpdGNoICh0ZXN0dHlwZSkgeworICAgICAgICAgICAgY2FzZSBDT1BZOgorICAgICAgICAgICAgICAgIGRlc3QgPSBuZXcgY2hhcltkcyArIGRsXTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBzaGFwZXIuc2hhcGUoc3JjLCBzcywgc2wsIGRlc3QsIGRzLCBkbCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgSU5QTEFDRToKKyAgICAgICAgICAgICAgICBzaGFwZXIuc2hhcGUoc3JjLCBzcywgc2wpOworICAgICAgICAgICAgICAgIGRzID0gc3M7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2w7CisgICAgICAgICAgICAgICAgZGVzdCA9IHNyYzsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBTVFJJTkc6CisgICAgICAgICAgICAgICAgZGVzdCA9IHNoYXBlci5zaGFwZSh0ZXh0KS50b0NoYXJBcnJheSgpOworICAgICAgICAgICAgICAgIGRzID0gMDsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBkZXN0Lmxlbmd0aDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJvdXRwdXQ6ICciICsgZXNjYXBlZFRleHQoZGVzdCwgZHMsIHJlc3VsdCkgKyAiJyIpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJsZW5ndGg6ICIgKyByZXN1bHQpOworICAgICAgICAgICAgaWYgKGRzICE9IDAgfHwgcmVzdWx0ICE9IGRlc3QubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJmdWxsIG91dHB1dDogJyIgKyBlc2NhcGVkVGV4dChkZXN0LCAwLCBkZXN0Lmxlbmd0aCkgKyAiJyIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhdGNoIChBcmFiaWNTaGFwaW5nRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ2F1Z2h0IEFyYWJpY1NoYXBpbmdFeGNlcHRpb24iKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihlKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ2F1Z2h0IEV4Y2VwdGlvbiIpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGUpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB0aHJvd09wdEVycm9yKFN0cmluZyBvcHQpIHsKKyAgICAgICAgdGhyb3dVc2FnZUVycm9yKCJ1bmtub3duIG9wdGlvbjogIiArIG9wdCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB0aHJvd1ZhbEVycm9yKFN0cmluZyBvcHQsIFN0cmluZyB2YWwpIHsKKyAgICAgICAgdGhyb3dVc2FnZUVycm9yKCJ1bmtub3duIHZhbHVlOiAiICsgdmFsICsgIiBmb3Igb3B0aW9uOiAiICsgb3B0KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHRocm93VXNhZ2VFcnJvcihTdHJpbmcgbWVzc2FnZSkgeworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigiKioqIHVzYWdlIGVycm9yICoqKlxuIik7CisgICAgICAgIGJ1Zi5hcHBlbmQobWVzc2FnZSk7CisgICAgICAgIGJ1Zi5hcHBlbmQoIlxuIik7CisgICAgICAgIGJ1Zi5hcHBlbmQodXNhZ2UpOworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYnVmLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyB1c2FnZSA9IAorICAgICAgICAiVXNhZ2U6IFtvcHRpb25dKiBbdGV4dF1cbiIgKworICAgICAgICAiICB3aGVyZSBvcHRpb24gaXMgaW4gdGhlIGZvcm1hdCAnLW9wdFs6dmFsXSdcbiIgKworICAgICAgICAiICBvcHRpb25zIGFyZTpcbiIgKworICAgICAgICAiICAgIC1sZW46W2dzfHNufHNlfHNiXSAgICAobGVuZ3RoOiBncm93L3Nocmluaywgc3BhY2VzIG5lYXIsIHNwYWNlcyBlbmQsIHNwYWNlcyBiZWdpbm5pbmcpXG4iICsKKyAgICAgICAgIiAgICAtZGlyOltsb2d8dmlzXSAgICAgICAgKGRpcmVjdGlvbjogbG9naWNhbCwgdmlzdWFsKVxuIiArCisgICAgICAgIC8vICAgICAgICAiICAgIC1sZXQ6W25vfHNofHVufHRhXSAgICAobGV0dGVyczogbm9vcCwgc2hhcGUsIHVuc2hhcGUsIHRhc2hrZWVsKVxuIiArCisgICAgICAgICIgICAgLWxldDpbbm98c2h8dW5dICAgICAgIChsZXR0ZXJzOiBub29wLCBzaGFwZSwgdW5zaGFwZSlcbiIgKworICAgICAgICAiICAgIC1kaWc6W25vfGVhfGFlfGxyfGFsXSAoZGlnaXRzOiBub29wLCBlbjJhbiwgYW4yZW4sIGVuMmFuX2xyLCBlbjJhbl9hbClcbiIgKworICAgICAgICAiICAgIC10eXA6W2FufGV4XSAgICAgICAgICAoZGlnaXQgdHlwZTogYXJhYmljLCBhcmFiaWMgZXh0ZW5kZWQpXG4iICsKKyAgICAgICAgIiAgICAtZHN0OiMgICAgICAgICAgICAgICAgKGRlc3Qgc3RhcnQ6IFtpbnRlZ2VyXSlcbiIgKworICAgICAgICAiICAgIC1kbG46IyAgICAgICAgICAgICAgICAoZGVzdCBsZW5ndGggKG1heCBzaXplKTogW2ludGVnZXJdKVxuIiArCisgICAgICAgICIgICAgLXNzdDojICAgICAgICAgICAgICAgIChzb3VyY2Ugc3RhcnQ6IFtpbnRlZ2VyXSlcbiIgKworICAgICAgICAiICAgIC1zbG46IyAgICAgICAgICAgICAgICAoc291cmNlIGxlbmd0aDogW2ludGVnZXJdKVxuIiArCisgICAgICAgICIgICAgLXRlczpbY3B8aXB8c3RdICAgICAgICh0ZXN0IHR5cGU6IGNvcHksIGluIHBsYWNlLCBzdHJpbmcpXG4iICsKKyAgICAgICAgIiAgICAtaGVscCAgICAgICAgICAgICAgICAgKHByaW50IHRoaXMgaGVscCBtZXNzYWdlKVxuIiArCisgICAgICAgICIgIHRleHQgY2FuIGNvbnRhaW4gdW5pY29kZSBlc2NhcGUgdmFsdWVzIGluIHRoZSBmb3JtYXQgJ1xcdVhYWFgnIG9ubHlcbiI7CisgICAgICAgIAorICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBlc2NhcGVkVGV4dChjaGFyW10gdGV4dCwgaW50IHN0YXJ0LCBpbnQgbGVuZ3RoKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGZvciAoaW50IGkgPSBzdGFydCwgZSA9IHN0YXJ0ICsgbGVuZ3RoOyBpIDwgZTsgKytpKSB7CisgICAgICAgICAgICBjaGFyIGNoID0gdGV4dFtpXTsKKyAgICAgICAgICAgIGlmIChjaCA8IDB4MjAgfHwgY2ggPiAweDdlKSB7CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiXFx1Iik7CisgICAgICAgICAgICAgICAgaWYgKGNoIDwgMHgxMDAwKSB7CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJzAnKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGNoIDwgMHgxMDApIHsKKyAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgnMCcpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY2ggPCAweDEwKSB7CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJzAnKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChJbnRlZ2VyLnRvSGV4U3RyaW5nKGNoKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoY2gpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgcGFyc2VUZXh0KFN0cmluZyB0ZXh0KSB7CisgICAgICAgIC8vIHByb2Nlc3MgdW5pY29kZSBlc2NhcGVzIChvbmx5KQorICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBjaGFyW10gY2hhcnMgPSB0ZXh0LnRvQ2hhckFycmF5KCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2hhcnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGNoYXIgY2ggPSBjaGFyc1tpXTsKKyAgICAgICAgICAgIGlmIChjaCA9PSAnXFwnKSB7CisgICAgICAgICAgICAgICAgaWYgKChpIDwgY2hhcnMubGVuZ3RoIC0gMSkgJiYKKyAgICAgICAgICAgICAgICAgICAgKGNoYXJzW2krMV0gPT0gJ3UnKSkgeworICAgICAgICAgICAgICAgICAgICBpbnQgdmFsID0gSW50ZWdlci5wYXJzZUludCh0ZXh0LnN1YnN0cmluZyhpKzIsIGkrNiksIDE2KTsKKyAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgoY2hhcil2YWwpOworICAgICAgICAgICAgICAgICAgICBpICs9IDU7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgnXFwnKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoY2gpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9pY3UvdGVzdC90ZXh0L1VDaGFyYWN0ZXJDb21wYXJlLmphdmEgYi9zcmMvY29tL2libS9pY3UvdGVzdC90ZXh0L1VDaGFyYWN0ZXJDb21wYXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTI0MTA4YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL2ljdS90ZXN0L3RleHQvVUNoYXJhY3RlckNvbXBhcmUuamF2YQpAQCAtMCwwICsxLDMxMyBAQAorLyoqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXN0L3RleHQvQXR0aWMvVUNoYXJhY3RlckNvbXBhcmUuamF2YSx2ICQgCisqICREYXRlOiAyMDAxLzAzLzIzIDE5OjUyOjAzICQgCisqICRSZXZpc2lvbjogMS42ICQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS5pY3UudGVzdC50ZXh0OworCitpbXBvcnQgY29tLmlibS50ZXh0LlVDaGFyYWN0ZXI7CitpbXBvcnQgY29tLmlibS50ZXh0LlVDaGFyYWN0ZXJDYXRlZ29yeTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVXcml0ZXI7CitpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKKworLyoqCisqIEEgY2xhc3MgdG8gY29tcGFyZSB0aGUgZGlmZmVyZW5jZSBpbiBtZXRob2RzIGJldHdlZW4gamF2YS5sYW5nLkNoYXJhY3RlciBhbmQKKyogVUNoYXJhY3RlcgorKiBAYXV0aG9yIFN5biBXZWUgUXVlaworKiBAc2luY2Ugb2N0IDA2IDIwMDAKKyogQHNlZSBjb20uaWJtLnRleHQuVUNoYXJhY3RlcgorKi8KKworcHVibGljIGZpbmFsIGNsYXNzIFVDaGFyYWN0ZXJDb21wYXJlCit7IAorICAvLyBwcml2YXRlIHZhcmlhYmxlcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIHByaXZhdGUgc3RhdGljIEhhc2h0YWJsZSBtX2hhc2h0YWJsZV8gPSBuZXcgSGFzaHRhYmxlKCk7CisgIAorICAvLyBwdWJsaWMgbWV0aG9kcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIE1haW4gdGVzdGluZyBtZXRob2QKKyAgKi8KKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ1tdKQorICB7CisgICAgdHJ5CisgICAgeworICAgICAgRmlsZVdyaXRlciBmOworICAgICAgaWYgKGFyZy5sZW5ndGggPT0gMCkKKyAgICAgICAgZiA9IG5ldyBGaWxlV3JpdGVyKCJjb21wYXJlLnR4dCIpOworICAgICAgZWxzZQorICAgICAgICBmID0gbmV3IEZpbGVXcml0ZXIoYXJnWzBdKTsKKyAgICAgIFByaW50V3JpdGVyIHAgPSBuZXcgUHJpbnRXcml0ZXIoZik7CisgICAgICBwLnByaW50KCJjaGFyICBjaGFyYWN0ZXIgbmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIik7CisgICAgICBwLnByaW50bG4oIm1ldGhvZCBuYW1lICAgICAgICAgICAgICAgdWNoYXJhY3RlciBjaGFyYWN0ZXIiKTsKKyAgICAgIGZvciAoY2hhciBpID0gQ2hhcmFjdGVyLk1JTl9WQUxVRTsgaSA8IENoYXJhY3Rlci5NQVhfVkFMVUU7IGkgKyspCisgICAgICB7CisgICAgICAgIGlmIChVQ2hhcmFjdGVyLmlzRGVmaW5lZChpKSAhPSBDaGFyYWN0ZXIuaXNEZWZpbmVkKGkpKQorICAgICAgICAgIHRyYWNrRGlmZmVyZW5jZShwLCBpLCAiaXNEZWZpbmVkKCkiLCAiIiArIFVDaGFyYWN0ZXIuaXNEZWZpbmVkKGkpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBDaGFyYWN0ZXIuaXNEZWZpbmVkKGkpKTsKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgaWYgKFVDaGFyYWN0ZXIuZGlnaXQoaSwgMTApICE9IENoYXJhY3Rlci5kaWdpdChpLCAxMCkpCisgICAgICAgICAgICB0cmFja0RpZmZlcmVuY2UocCwgaSwgImRpZ2l0KCkiLCAiIiArIFVDaGFyYWN0ZXIuZGlnaXQoaSwgMTApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiICsgQ2hhcmFjdGVyLmRpZ2l0KGksIDEwKSk7CisgICAgICAgICAgaWYgKFVDaGFyYWN0ZXIuZ2V0TnVtZXJpY1ZhbHVlKGkpICE9IENoYXJhY3Rlci5nZXROdW1lcmljVmFsdWUoaSkpCisgICAgICAgICAgICB0cmFja0RpZmZlcmVuY2UocCwgaSwgImdldE51bWVyaWNWYWx1ZSgpIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBVQ2hhcmFjdGVyLmdldE51bWVyaWNWYWx1ZShpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiArIENoYXJhY3Rlci5nZXROdW1lcmljVmFsdWUoaSkpOworICAgICAgICAgIGlmICghY29tcGFyZVR5cGUoVUNoYXJhY3Rlci5nZXRUeXBlKGkpLCBDaGFyYWN0ZXIuZ2V0VHlwZShpKSkpCisgICAgICAgICAgICB0cmFja0RpZmZlcmVuY2UocCwgaSwgImdldFR5cGUoKSIsICIiICsgVUNoYXJhY3Rlci5nZXRUeXBlKGkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiICsgQ2hhcmFjdGVyLmdldFR5cGUoaSkpOworICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmlzRGlnaXQoaSkgIT0gQ2hhcmFjdGVyLmlzRGlnaXQoaSkpCisgICAgICAgICAgICB0cmFja0RpZmZlcmVuY2UocCwgaSwgImlzRGlnaXQoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBVQ2hhcmFjdGVyLmlzRGlnaXQoaSksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiICsgQ2hhcmFjdGVyLmlzRGlnaXQoaSkpOworICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmlzSVNPQ29udHJvbChpKSAhPSBDaGFyYWN0ZXIuaXNJU09Db250cm9sKGkpKQorICAgICAgICAgICAgdHJhY2tEaWZmZXJlbmNlKHAsIGksICJpc0lTT0NvbnRyb2woKSIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiICsgVUNoYXJhY3Rlci5pc0lTT0NvbnRyb2woaSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBDaGFyYWN0ZXIuaXNJU09Db250cm9sKGkpKTsKKyAgICAgICAgICBpZiAoVUNoYXJhY3Rlci5pc0xldHRlcihpKSAhPSBDaGFyYWN0ZXIuaXNMZXR0ZXIoaSkpCisgICAgICAgICAgICB0cmFja0RpZmZlcmVuY2UocCwgaSwgImlzTGV0dGVyKCkiLCAiIiArIFVDaGFyYWN0ZXIuaXNMZXR0ZXIoaSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBDaGFyYWN0ZXIuaXNMZXR0ZXIoaSkpOworICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmlzTGV0dGVyT3JEaWdpdChpKSAhPSBDaGFyYWN0ZXIuaXNMZXR0ZXJPckRpZ2l0KGkpKQorICAgICAgICAgICAgdHJhY2tEaWZmZXJlbmNlKHAsIGksICJpc0xldHRlck9yRGlnaXQoKSIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiICsgVUNoYXJhY3Rlci5pc0xldHRlck9yRGlnaXQoaSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBDaGFyYWN0ZXIuaXNMZXR0ZXJPckRpZ2l0KGkpKTsKKyAgICAgICAgICBpZiAoVUNoYXJhY3Rlci5pc0xvd2VyQ2FzZShpKSAhPSBDaGFyYWN0ZXIuaXNMb3dlckNhc2UoaSkpCisgICAgICAgICAgICB0cmFja0RpZmZlcmVuY2UocCwgaSwgImlzTG93ZXJDYXNlKCkiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiArIFVDaGFyYWN0ZXIuaXNMb3dlckNhc2UoaSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBDaGFyYWN0ZXIuaXNMb3dlckNhc2UoaSkpOworICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZShpKSAhPSBDaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKGkpKQorICAgICAgICAgICAgdHJhY2tEaWZmZXJlbmNlKHAsIGksICJpc1doaXRlc3BhY2UoKSIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiICsgVUNoYXJhY3Rlci5pc1doaXRlc3BhY2UoaSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBDaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKGkpKTsKKyAgICAgICAgICBpZiAoVUNoYXJhY3Rlci5pc1NwYWNlQ2hhcihpKSAhPSBDaGFyYWN0ZXIuaXNTcGFjZUNoYXIoaSkpCisgICAgICAgICAgICB0cmFja0RpZmZlcmVuY2UocCwgaSwgImlzU3BhY2VDaGFyKCkiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiArIFVDaGFyYWN0ZXIuaXNTcGFjZUNoYXIoaSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBDaGFyYWN0ZXIuaXNTcGFjZUNoYXIoaSkpOworICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmlzVGl0bGVDYXNlKGkpICE9IENoYXJhY3Rlci5pc1RpdGxlQ2FzZShpKSkKKyAgICAgICAgICAgIHRyYWNrRGlmZmVyZW5jZShwLCBpLCAiaXNUaXRsZUNoYXIoKSIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiICsgVUNoYXJhY3Rlci5pc1RpdGxlQ2FzZShpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiArIENoYXJhY3Rlci5pc1RpdGxlQ2FzZShpKSk7CisgICAgICAgICAgaWYgKFVDaGFyYWN0ZXIuaXNVbmljb2RlSWRlbnRpZmllclBhcnQoaSkgIT0gCisgICAgICAgICAgICAgIENoYXJhY3Rlci5pc1VuaWNvZGVJZGVudGlmaWVyUGFydChpKSkKKyAgICAgICAgICAgIHRyYWNrRGlmZmVyZW5jZShwLCBpLCAiaXNVbmljb2RlSWRlbnRpZmllclBhcnQoKSIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiICsgVUNoYXJhY3Rlci5pc1VuaWNvZGVJZGVudGlmaWVyUGFydChpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiArIENoYXJhY3Rlci5pc1VuaWNvZGVJZGVudGlmaWVyUGFydChpKSk7CisgICAgICAgICAgaWYgKFVDaGFyYWN0ZXIuaXNVbmljb2RlSWRlbnRpZmllclN0YXJ0KGkpICE9IAorICAgICAgICAgICAgICBDaGFyYWN0ZXIuaXNVbmljb2RlSWRlbnRpZmllclN0YXJ0KGkpKQorICAgICAgICAgICAgdHJhY2tEaWZmZXJlbmNlKHAsIGksICJpc1VuaWNvZGVJZGVudGlmaWVyU3RhcnQoKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBVQ2hhcmFjdGVyLmlzVW5pY29kZUlkZW50aWZpZXJTdGFydChpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiArIENoYXJhY3Rlci5pc1VuaWNvZGVJZGVudGlmaWVyU3RhcnQoaSkpOworICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLmlzSWRlbnRpZmllcklnbm9yYWJsZShpKSAhPSAKKyAgICAgICAgICAgICAgQ2hhcmFjdGVyLmlzSWRlbnRpZmllcklnbm9yYWJsZShpKSkKKyAgICAgICAgICAgIHRyYWNrRGlmZmVyZW5jZShwLCBpLCAiaXNJZGVudGlmaWVySWdub3JhYmxlKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiICsgVUNoYXJhY3Rlci5pc0lkZW50aWZpZXJJZ25vcmFibGUoaSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBDaGFyYWN0ZXIuaXNJZGVudGlmaWVySWdub3JhYmxlKGkpKTsKKyAgICAgICAgICBpZiAoVUNoYXJhY3Rlci5pc1VwcGVyQ2FzZShpKSAhPSBDaGFyYWN0ZXIuaXNVcHBlckNhc2UoaSkpCisgICAgICAgICAgICB0cmFja0RpZmZlcmVuY2UocCwgaSwgImlzVXBwZXJDYXNlKCkiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIiArIFVDaGFyYWN0ZXIuaXNVcHBlckNhc2UoaSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIgKyBDaGFyYWN0ZXIuaXNVcHBlckNhc2UoaSkpOworICAgICAgICAgIGlmIChVQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKGkpICE9IENoYXJhY3Rlci50b0xvd2VyQ2FzZShpKSkKKyAgICAgICAgICAgIHRyYWNrRGlmZmVyZW5jZShwLCBpLCAidG9Mb3dlckNhc2UoKSIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcoVUNoYXJhY3Rlci50b0xvd2VyQ2FzZShpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhDaGFyYWN0ZXIudG9Mb3dlckNhc2UoaSkpKTsKKyAgICAgICAgICBpZiAoIVVDaGFyYWN0ZXIudG9TdHJpbmcoaSkuZXF1YWxzKG5ldyBDaGFyYWN0ZXIoaSkudG9TdHJpbmcoKSkpCisgICAgICAgICAgICB0cmFja0RpZmZlcmVuY2UocCwgaSwgInRvU3RyaW5nKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIudG9TdHJpbmcoaSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IENoYXJhY3RlcihpKS50b1N0cmluZygpKTsKKyAgICAgICAgICBpZiAoVUNoYXJhY3Rlci50b1RpdGxlQ2FzZShpKSAhPSBDaGFyYWN0ZXIudG9UaXRsZUNhc2UoaSkpCisgICAgICAgICAgICB0cmFja0RpZmZlcmVuY2UocCwgaSwgInRvVGl0bGVDYXNlKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcoVUNoYXJhY3Rlci50b1RpdGxlQ2FzZShpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhDaGFyYWN0ZXIudG9UaXRsZUNhc2UoaSkpKTsKKyAgICAgICAgICBpZiAoVUNoYXJhY3Rlci50b1VwcGVyQ2FzZShpKSAhPSBDaGFyYWN0ZXIudG9VcHBlckNhc2UoaSkpCisgICAgICAgICAgICB0cmFja0RpZmZlcmVuY2UocCwgaSwgInRvVXBwZXJDYXNlKCkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcoVUNoYXJhY3Rlci50b1VwcGVyQ2FzZShpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhDaGFyYWN0ZXIudG9VcHBlckNhc2UoaSkpKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgc3VtbWFyeShwKTsKKyAgICAgIHAuY2xvc2UoKTsKKyAgICB9IAorICAgIGNhdGNoIChFeGNlcHRpb24gZSkKKyAgICB7CisgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgIH0KKyAgfQorICAKKyAgLy8gcHJpdmF0ZSBtZXRob2RzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAKKyAgLyoqCisgICogQ29tcGFyaW5nIHR5cGVzCisgICogQHBhcmFtIHVjaGFydHlwZSBVQ2hhcmFjdGVyIHR5cGUKKyAgKiBAcGFyYW0gamNoYXJ0eXBlIGphdmEubGFuZy5DaGFyYWN0ZXIgdHlwZQorICAqLworICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGNvbXBhcmVUeXBlKGludCB1Y2hhcnR5cGUsIGludCBqY2hhcnR5cGUpCisgIHsKKyAgICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5VTkFTU0lHTkVEICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLlVOQVNTSUdORUQpCisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5VUFBFUkNBU0VfTEVUVEVSICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLlVQUEVSQ0FTRV9MRVRURVIpCisgICAgICByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5MT1dFUkNBU0VfTEVUVEVSICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLkxPV0VSQ0FTRV9MRVRURVIpCisgICAgICByZXR1cm4gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5USVRMRUNBU0VfTEVUVEVSICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLlRJVExFQ0FTRV9MRVRURVIpCisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5NT0RJRklFUl9MRVRURVIgJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuTU9ESUZJRVJfTEVUVEVSKQorICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHVjaGFydHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuT1RIRVJfTEVUVEVSICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLk9USEVSX0xFVFRFUikKKyAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5Lk5PTl9TUEFDSU5HX01BUksgJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuTk9OX1NQQUNJTkdfTUFSSykKKyAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkVOQ0xPU0lOR19NQVJLICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLkVOQ0xPU0lOR19NQVJLKQorICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHVjaGFydHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuQ09NQklOSU5HX1NQQUNJTkdfTUFSSyAmJiAKKyAgICAgICAgamNoYXJ0eXBlID09IENoYXJhY3Rlci5DT01CSU5JTkdfU1BBQ0lOR19NQVJLKQorICAgICAgcmV0dXJuIHRydWU7CisJICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5ERUNJTUFMX0RJR0lUX05VTUJFUiAmJiAKKyAgICAgICAgamNoYXJ0eXBlID09IENoYXJhY3Rlci5ERUNJTUFMX0RJR0lUX05VTUJFUikKKyAgICAgIHJldHVybiB0cnVlOworCSAgaWYgKHVjaGFydHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTEVUVEVSX05VTUJFUiAmJiAKKyAgICAgICAgamNoYXJ0eXBlID09IENoYXJhY3Rlci5MRVRURVJfTlVNQkVSKQorICAgICAgcmV0dXJuIHRydWU7CisJICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5PVEhFUl9OVU1CRVIgJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuT1RIRVJfTlVNQkVSKQorICAgICAgcmV0dXJuIHRydWU7CisJICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5TUEFDRV9TRVBBUkFUT1IgJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuU1BBQ0VfU0VQQVJBVE9SKQorICAgICAgcmV0dXJuIHRydWU7CisJICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5MSU5FX1NFUEFSQVRPUiAmJiAKKyAgICAgICAgamNoYXJ0eXBlID09IENoYXJhY3Rlci5MSU5FX1NFUEFSQVRPUikKKyAgICAgIHJldHVybiB0cnVlOworCSAgaWYgKHVjaGFydHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuUEFSQUdSQVBIX1NFUEFSQVRPUiAmJiAKKyAgICAgICAgamNoYXJ0eXBlID09IENoYXJhY3Rlci5QQVJBR1JBUEhfU0VQQVJBVE9SKQorICAgICAgcmV0dXJuIHRydWU7CisJICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5DT05UUk9MICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLkNPTlRST0wpCisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5GT1JNQVQgJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuRk9STUFUKQorICAgICAgcmV0dXJuIHRydWU7CisJICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5QUklWQVRFX1VTRSAmJiAKKyAgICAgICAgamNoYXJ0eXBlID09IENoYXJhY3Rlci5QUklWQVRFX1VTRSkKKyAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlNVUlJPR0FURSAmJiAKKyAgICAgICAgamNoYXJ0eXBlID09IENoYXJhY3Rlci5TVVJST0dBVEUpCisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5EQVNIX1BVTkNUVUFUSU9OICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLkRBU0hfUFVOQ1RVQVRJT04pCisgICAgICByZXR1cm4gdHJ1ZTsKKwkgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlNUQVJUX1BVTkNUVUFUSU9OICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLlNUQVJUX1BVTkNUVUFUSU9OKQorICAgICAgcmV0dXJuIHRydWU7CisJICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5FTkRfUFVOQ1RVQVRJT04gJiYgCisgICAgICAgIGpjaGFydHlwZSA9PSBDaGFyYWN0ZXIuRU5EX1BVTkNUVUFUSU9OKQorICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHVjaGFydHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuQ09OTkVDVE9SX1BVTkNUVUFUSU9OICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLkNPTk5FQ1RPUl9QVU5DVFVBVElPTikKKyAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5Lk9USEVSX1BVTkNUVUFUSU9OICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLk9USEVSX1BVTkNUVUFUSU9OKQorICAgICAgcmV0dXJuIHRydWU7CisJICBpZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5NQVRIX1NZTUJPTCAmJiAKKyAgICAgICAgamNoYXJ0eXBlID09IENoYXJhY3Rlci5NQVRIX1NZTUJPTCkKKyAgICAgIHJldHVybiB0cnVlOworCSAgaWYgKHVjaGFydHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuQ1VSUkVOQ1lfU1lNQk9MICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLkNVUlJFTkNZX1NZTUJPTCkKKyAgICAgIHJldHVybiB0cnVlOworCSAgaWYgKHVjaGFydHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTU9ESUZJRVJfU1lNQk9MICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLk1PRElGSUVSX1NZTUJPTCkKKyAgICAgIHJldHVybiB0cnVlOworCSAgaWYgKHVjaGFydHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuT1RIRVJfU1lNQk9MICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLk9USEVSX1NZTUJPTCkKKyAgICAgIHJldHVybiB0cnVlOworCSAgaWYgKHVjaGFydHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuSU5JVElBTF9QVU5DVFVBVElPTiAmJiAKKyAgICAgICAgamNoYXJ0eXBlID09IENoYXJhY3Rlci5TVEFSVF9QVU5DVFVBVElPTikKKyAgICAgIHJldHVybiB0cnVlOworICAgIGlmICh1Y2hhcnR5cGUgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkZJTkFMX1BVTkNUVUFUSU9OICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLkVORF9QVU5DVFVBVElPTikKKyAgICAgIHJldHVybiB0cnVlOworCSAgLyppZiAodWNoYXJ0eXBlID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5HRU5FUkFMX09USEVSX1RZUEVTICYmIAorICAgICAgICBqY2hhcnR5cGUgPT0gQ2hhcmFjdGVyLkdFTkVSQUxfT1RIRVJfVFlQRVMpCisgICAgICByZXR1cm4gdHJ1ZTsqLworICAgIHJldHVybiBmYWxzZTsKKwl9CisJCisJLyoqCisJKiBEaWZmZXJlbmNlIHdyaXRpbmcgdG8gZmlsZQorCSogQHBhcmFtIGYgZmlsZSBvdXRwdXRzdHJlYW0KKwkqIEBwYXJhbSBjaCBjb2RlIHBvaW50CisJKiBAcGFyYW0gbWV0aG9kIGZvciB0ZXN0aW5nCisJKiBAcGFyYW0gdWNoYXJ2YWwgVUNoYXJhY3RlciB2YWx1ZSBhZnRlciBydW5uaW5nIG1ldGhvZAorCSogQHBhcmFtIGNoYXJ2YWwgQ2hhcmFjdGVyIHZhbHVlIGFmdGVyIHJ1bm5pbmcgbWV0aG9kCisJKiBAZXhjZXB0aW9uIHRocm93biB3aGVuIGVycm9yIG9jY3VyIGluIHdyaXRpbmcgdG8gZmlsZQorCSovCisJcHJpdmF0ZSBzdGF0aWMgdm9pZCB0cmFja0RpZmZlcmVuY2UoUHJpbnRXcml0ZXIgZiwgaW50IGNoLCBTdHJpbmcgbWV0aG9kLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB1Y2hhcnZhbCwgU3RyaW5nIGNoYXJ2YWwpCisJICB0aHJvd3MgRXhjZXB0aW9uCisJeworCSAgaWYgKG1faGFzaHRhYmxlXy5jb250YWluc0tleShtZXRob2QpKQorCSAgeworCSAgICBJbnRlZ2VyIHZhbHVlID0gKEludGVnZXIpbV9oYXNodGFibGVfLmdldChtZXRob2QpOworCSAgICBtX2hhc2h0YWJsZV8ucHV0KG1ldGhvZCwgbmV3IEludGVnZXIodmFsdWUuaW50VmFsdWUoKSArIDEpKTsKKwkgIH0KKwkgIGVsc2UKKwkgICAgbV9oYXNodGFibGVfLnB1dChtZXRob2QsIG5ldyBJbnRlZ2VyKDEpKTsKKwkgIAorCSAgU3RyaW5nIHRlbXAgPSBJbnRlZ2VyLnRvSGV4U3RyaW5nKGNoKTsKKwkgIFN0cmluZ0J1ZmZlciBzID0gbmV3IFN0cmluZ0J1ZmZlcih0ZW1wKTsKKwkgIGZvciAoaW50IGkgPSAwOyBpIDwgNiAtIHRlbXAubGVuZ3RoKCk7IGkgKyspCisJICAgIHMuYXBwZW5kKCcgJyk7CisJICB0ZW1wID0gVUNoYXJhY3Rlci5nZXROYW1lKGNoKTsKKwkgIGlmICh0ZW1wID09IG51bGwpCisJICAgIHRlbXAgPSAiICI7CisJICBzLmFwcGVuZCh0ZW1wKTsKKwkgIGZvciAoaW50IGkgPSAwOyBpIDwgNzMgLSB0ZW1wLmxlbmd0aCgpOyBpICsrKQorCSAgICBzLmFwcGVuZCgnICcpOworCSAgCisJICBzLmFwcGVuZChtZXRob2QpOworCSAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNyAtIG1ldGhvZC5sZW5ndGgoKTsgaSArKykKKwkgICAgcy5hcHBlbmQoJyAnKTsKKwkgIHMuYXBwZW5kKHVjaGFydmFsKTsKKwkgIGZvciAoaW50IGkgPSAwOyBpIDwgMTEgLSB1Y2hhcnZhbC5sZW5ndGgoKTsgaSArKykKKwkgICAgcy5hcHBlbmQoJyAnKTsKKwkgIHMuYXBwZW5kKGNoYXJ2YWwpOworCSAgZi5wcmludGxuKHMudG9TdHJpbmcoKSk7CisJfQorCQorCS8qKgorCSogRG9lcyB1cCBhIHN1bW1hcnkgb2YgdGhlIGRpZmZlcmVuY2VzCisJKiBAcGFyYW0gZiBmaWxlIG91dHB1dHN0cmVhbQorCSovCisJcHJpdmF0ZSBzdGF0aWMgdm9pZCBzdW1tYXJ5KFByaW50V3JpdGVyIGYpCisJeworCSAgZi5wcmludGxuKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpOworCSAgZi5wcmludGxuKCJTdW1tYXJ5IG9mIGRpZmZlcmVuY2VzIik7CisJICBmb3IgKEVudW1lcmF0aW9uIGUgPSBtX2hhc2h0YWJsZV8ua2V5cygpIDsgZS5oYXNNb3JlRWxlbWVudHMoKSA7KSAKKwkgIHsKKwkgICAgU3RyaW5nQnVmZmVyIG1ldGhvZCA9IG5ldyBTdHJpbmdCdWZmZXIoKFN0cmluZyllLm5leHRFbGVtZW50KCkpOworCSAgICBpbnQgY291bnQgPSAoKEludGVnZXIpbV9oYXNodGFibGVfLmdldChtZXRob2QudG9TdHJpbmcoKSkpLmludFZhbHVlKCk7CisJICAgIGZvciAoaW50IGkgPSAzMCAtIG1ldGhvZC5sZW5ndGgoKTsgaSA+IDA7IGkgLS0pCisJICAgICAgbWV0aG9kLmFwcGVuZCgnICcpOworICAgICAgZi5wcmludGxuKG1ldGhvZCArICIgICIgKyBjb3VudCk7CisgICAgfQorCX0KK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vaWN1L3Rlc3QvdGV4dC9VQ2hhcmFjdGVyVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vaWN1L3Rlc3QvdGV4dC9VQ2hhcmFjdGVyVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmZjNjQ3YTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGVzdC90ZXh0L1VDaGFyYWN0ZXJUZXN0LmphdmEKQEAgLTAsMCArMSw2NzggQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9pY3UvdGVzdC90ZXh0L0F0dGljL1VDaGFyYWN0ZXJUZXN0LmphdmEsdiAkIAorKiAkRGF0ZTogMjAwMS8wMy8yMyAxOTo1MjowMyAkIAorKiAkUmV2aXNpb246IDEuOSAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0uaWN1LnRlc3QudGV4dDsKKworaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7CitpbXBvcnQgamF2YS5pby5GaWxlUmVhZGVyOworaW1wb3J0IGphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgY29tLmlibS50ZXN0LlRlc3RGbXdrOworaW1wb3J0IGNvbS5pYm0udGV4dC5VQ2hhcmFjdGVyOworaW1wb3J0IGNvbS5pYm0udGV4dC5VQ2hhcmFjdGVyQ2F0ZWdvcnk7CitpbXBvcnQgY29tLmlibS50ZXh0LlVDaGFyYWN0ZXJEaXJlY3Rpb247CitpbXBvcnQgY29tLmlibS50ZXh0LlVURjE2OworCisvKioKKyogVGVzdGluZyBjbGFzcyBmb3IgVUNoYXJhY3RlcgorKiBNb3N0bHkgZm9sbG93aW5nIHRoZSB0ZXN0IGNhc2VzIGZvciBJQ1UKKyogQGF1dGhvciBTeW4gV2VlIFF1ZWsKKyogQHNpbmNlIG5vdiAwNCAyMDAwCisqLworcHVibGljIGZpbmFsIGNsYXNzIFVDaGFyYWN0ZXJUZXN0IGV4dGVuZHMgVGVzdEZtd2sKK3sgCisgIC8vIHByaXZhdGUgdmFyaWFibGVzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAKKyAgLyoqCisgICogSUNVNEogZGF0YSB2ZXJzaW9uIG51bWJlcgorICAqLworICBwcml2YXRlIGZpbmFsIFN0cmluZyBWRVJTSU9OXyA9ICIzLjAuMC4wIjsKKyAgCisgIC8vIGNvbnN0cnVjdG9yID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAKKyAgLyoqCisgICogQ29uc3RydWN0b3IKKyAgKi8KKyAgcHVibGljIFVDaGFyYWN0ZXJUZXN0KCkKKyAgeworICB9CisgIAorICAvLyBwdWJsaWMgbWV0aG9kcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIFRlc3RpbmcgdGhlIHVwcGVyY2FzZSBhbmQgbG93ZXJjYXNlIGZ1bmN0aW9uIG9mIFVDaGFyYWN0ZXIKKyAgKi8KKyAgcHVibGljIHZvaWQgVGVzdFVwcGVyTG93ZXIoKQorICB7CisgICAgLy8gdmFyaWFibGVzIHRvIHRlc3QgdGhlIHVwcGVyY2FzZSBhbmQgbG93ZXJjYXNlIGNoYXJhY3RlcnMKKyAgICBpbnQgdXBwZXJbXSA9IHsweDQxLCAweDQyLCAweDQzLCAweDQ0LCAweDQ1LCAweDQ2LCAweDQ3LCAweGIxLCAweGIyLCAKKyAgICAgICAgICAgICAgICAgICAweGIzLCAweDQ4LCAweDQ5LCAweDRhLCAweDJlLCAweDNmLCAweDNhLCAweDRiLCAweDRjLAorICAgICAgICAgICAgICAgICAgIDB4NGQsIDB4NGUsIDB4NGYsIDB4MDFjNCwgMHgwMWM4LCAweDAwMGMsIDB4MDAwMH07CisgICAgaW50IGxvd2VyW10gPSB7MHg2MSwgMHg2MiwgMHg2MywgMHg2NCwgMHg2NSwgMHg2NiwgMHg2NywgMHhiMSwgMHgwMGIyLCAKKyAgICAgICAgICAgICAgICAgICAweGIzLCAweDY4LCAweDY5LCAweDZhLCAweDJlLCAweDNmLCAweDNhLCAweDZiLCAweDZjLAorICAgICAgICAgICAgICAgICAgIDB4NmQsIDB4NmUsIDB4NmYsIDB4MDFjNiwgMHgwMWM5LCAweDAwMGMsIDB4MDAwMH07CisgICAgCisgICAgaW50IHNpemUgPSB1cHBlci5sZW5ndGg7CisgICAgCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKSAKKyAgICB7CisgICAgICBpZiAoVUNoYXJhY3Rlci5pc0xldHRlcihsb3dlcltpXSkgJiYgIVVDaGFyYWN0ZXIuaXNMb3dlckNhc2UobG93ZXJbaV0pKQorICAgICAgeworICAgICAgICBlcnJsbigiRkFJTCBpc0xvd2VyQ2FzZSB0ZXN0IGZvciAweCIgKyAKKyAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhsb3dlcltpXSkpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmIChVQ2hhcmFjdGVyLmlzTGV0dGVyKHVwcGVyW2ldKSAmJiAhKFVDaGFyYWN0ZXIuaXNVcHBlckNhc2UodXBwZXJbaV0pIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgVUNoYXJhY3Rlci5pc1RpdGxlQ2FzZSh1cHBlcltpXSkpKSAgICAgCisgICAgICB7CisgICAgICAgIGVycmxuKCJGQUlMIGlzVXBwZXJDYXNlIHRlc3QgZm9yIDB4IiArIAorICAgICAgICAgICAgICBJbnRlZ2VyLnRvSGV4U3RyaW5nKHVwcGVyW2ldKSk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgaWYgKGxvd2VyW2ldICE9IFVDaGFyYWN0ZXIudG9Mb3dlckNhc2UodXBwZXJbaV0pIHx8IAorICAgICAgICAgICh1cHBlcltpXSAhPSBVQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKGxvd2VyW2ldKSAmJgorICAgICAgICAgICAgdXBwZXJbaV0gIT0gVUNoYXJhY3Rlci50b1RpdGxlQ2FzZShsb3dlcltpXSkpKQorICAgICAgeworICAgICAgICBlcnJsbigiRkFJTCBjYXNlIGNvbnZlcnNpb24gdGVzdCBmb3IgMHgiICsgCisgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcodXBwZXJbaV0pICsgIiB0byAweCIgKyAKKyAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhsb3dlcltpXSkpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmIChsb3dlcltpXSAhPSBVQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKGxvd2VyW2ldKSkKKyAgICAgIHsKKyAgICAgICAgZXJybG4oIkZBSUwgbG93ZXIgY2FzZSBjb252ZXJzaW9uIHRlc3QgZm9yIDB4IiArIAorICAgICAgICBJbnRlZ2VyLnRvSGV4U3RyaW5nKGxvd2VyW2ldKSk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgaWYgKHVwcGVyW2ldICE9IFVDaGFyYWN0ZXIudG9VcHBlckNhc2UodXBwZXJbaV0pICYmIAorICAgICAgICAgIHVwcGVyW2ldICE9IFVDaGFyYWN0ZXIudG9UaXRsZUNhc2UodXBwZXJbaV0pKQorICAgICAgeworICAgICAgICBlcnJsbigiRkFJTCB1cHBlciBjYXNlIGNvbnZlcnNpb24gdGVzdCBmb3IgMHgiICsgCisgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcodXBwZXJbaV0pKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBsb2dsbigiT2sgICAgMHgiICsgSW50ZWdlci50b0hleFN0cmluZyh1cHBlcltpXSkgKyAiIGFuZCAweCIgKworICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhsb3dlcltpXSkpOworICAgIH0KKyAgfQorICAKKyAgLyoqCisgICogVGVzdGluZyB0aGUgbGV0dGVyIGFuZCBudW1iZXIgZGV0ZXJtaW5hdGlvbiBpbiBVQ2hhcmFjdGVyCisgICovCisgIHB1YmxpYyB2b2lkIFRlc3RMZXR0ZXJOdW1iZXIoKQorICB7CisgICAgZm9yIChpbnQgaSA9IDB4MDA0MTsgaSA8IDB4MDA1QjsgaSArKykgCisgICAgICBpZiAoIVVDaGFyYWN0ZXIuaXNMZXR0ZXIoaSkpCisgICAgICAgIGVycmxuKCJGQUlMIDB4IiArIEludGVnZXIudG9IZXhTdHJpbmcoaSkgKyAiIGV4cGVjdGVkIHRvIGJlIGEgbGV0dGVyIik7CisgICAgICAgIAorICAgIGZvciAoaW50IGkgPSAweDA2NjA7IGkgPCAweDA2NkE7IGkgKyspIAorICAgICAgaWYgKFVDaGFyYWN0ZXIuaXNMZXR0ZXIoaSkpCisgICAgICAgIGVycmxuKCJGQUlMIDB4IiArIEludGVnZXIudG9IZXhTdHJpbmcoaSkgKyAKKyAgICAgICAgICAgICAgIiBleHBlY3RlZCBub3QgdG8gYmUgYSBsZXR0ZXIiKTsKKyAgICAKKyAgICBmb3IgKGludCBpID0gMHgwNjYwOyBpIDwgMHgwNjZBOyBpICsrKSAKKyAgICAgIGlmICghVUNoYXJhY3Rlci5pc0RpZ2l0KGkpKQorICAgICAgICBlcnJsbigiRkFJTCAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGkpICsgIiBleHBlY3RlZCB0byBiZSBhIGRpZ2l0Iik7CisgICAgCisgICAgZm9yIChpbnQgaSA9IDB4MDA0MTsgaSA8IDB4MDA1QjsgaSArKykgCisgICAgICBpZiAoIVVDaGFyYWN0ZXIuaXNMZXR0ZXJPckRpZ2l0KGkpKQorICAgICAgICBlcnJsbigiRkFJTCAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGkpICsgCisgICAgICAgICAgICAgICIgZXhwZWN0ZWQgbm90IHRvIGJlIGEgZGlnaXQiKTsKKyAgICAgICAgCisgICAgZm9yIChpbnQgaSA9IDB4MDY2MDsgaSA8IDB4MDY2QTsgaSArKykgCisgICAgICBpZiAoIVVDaGFyYWN0ZXIuaXNMZXR0ZXJPckRpZ2l0KGkpKQorICAgICAgICBlcnJsbigiRkFJTCAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGkpICsgCisgICAgICAgICAgICAgICJleHBlY3RlZCB0byBiZSBlaXRoZXIgYSBsZXR0ZXIgb3IgYSBkaWdpdCIpOworICB9CisKKyAgLyoqCisgICogVGVzdHMgZm9yIHNwYWNlIGRldGVybWluYXRpb24gaW4gVUNoYXJhY3RlcgorICAqLworICBwdWJsaWMgdm9pZCBUZXN0U3BhY2VzKCkKKyAgeworICAgIGludCBzcGFjZXNbXSA9IHsweDAwMjAsIDB4MDBhMCwgMHgyMDAwLCAweDIwMDEsIDB4MjAwNX07CisgICAgaW50IG5vbnNwYWNlc1tdID0gezB4NjEsIDB4NjIsIDB4NjMsIDB4NjQsIDB4NzR9OworICAgIGludCB3aGl0ZXNwYWNlc1tdID0gezB4MjAwOCwgMHgyMDA5LCAweDIwMGEsIDB4MDAxYywgMHgwMDBjfTsKKyAgICBpbnQgbm9ud2hpdGVzcGFjZXNbXSA9IHsweDYxLCAweDYyLCAweDNjLCAweDI4LCAweDNmfTsKKyAgICAgICAgICAgICAgICAgICAgICAgCisgICAgaW50IHNpemUgPSBzcGFjZXMubGVuZ3RoOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykKKyAgICB7CisgICAgICBpZiAoIVVDaGFyYWN0ZXIuaXNTcGFjZUNoYXIoc3BhY2VzW2ldKSkKKyAgICAgIHsKKyAgICAgICAgZXJybG4oIkZBSUwgMHgiICsgSW50ZWdlci50b0hleFN0cmluZyhzcGFjZXNbaV0pICsgCisgICAgICAgICAgICAgICIgZXhwZWN0ZWQgdG8gYmUgYSBzcGFjZSBjaGFyYWN0ZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICAKKyAgICAgIGlmIChVQ2hhcmFjdGVyLmlzU3BhY2VDaGFyKG5vbnNwYWNlc1tpXSkpCisgICAgICB7CisgICAgICAgIGVycmxuKCJGQUlMIDB4IiArIEludGVnZXIudG9IZXhTdHJpbmcobm9uc3BhY2VzW2ldKSArIAorICAgICAgICAgICAgICAiIGV4cGVjdGVkIG5vdCB0byBiZSBzcGFjZSBjaGFyYWN0ZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgCisgICAgICBpZiAoIVVDaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKHdoaXRlc3BhY2VzW2ldKSkKKyAgICAgIHsKKyAgICAgICAgZXJybG4oIkZBSUwgMHgiICsgSW50ZWdlci50b0hleFN0cmluZyh3aGl0ZXNwYWNlc1tpXSkgKyAKKyAgICAgICAgICAgICAgIiBleHBlY3RlZCB0byBiZSBhIHdoaXRlIHNwYWNlIGNoYXJhY3RlciIpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmIChVQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZShub253aGl0ZXNwYWNlc1tpXSkpCisgICAgICB7CisgICAgICAgIGVycmxuKCJGQUlMIDB4IiArIEludGVnZXIudG9IZXhTdHJpbmcobm9ud2hpdGVzcGFjZXNbaV0pICsgCisgICAgICAgICAgICAgICIgZXhwZWN0ZWQgbm90IHRvIGJlIGEgc3BhY2UgY2hhcmFjdGVyIik7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgbG9nbG4oIk9rICAgIDB4IiArIEludGVnZXIudG9IZXhTdHJpbmcoc3BhY2VzW2ldKSArICIgYW5kIDB4IiArCisgICAgICAgICAgICBJbnRlZ2VyLnRvSGV4U3RyaW5nKG5vbnNwYWNlc1tpXSkgKyAiIGFuZCAweCIgKworICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyh3aGl0ZXNwYWNlc1tpXSkgKyAiIGFuZCAweCIgKworICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhub253aGl0ZXNwYWNlc1tpXSkpOworICAgIH0KKyAgfQorICAKKyAgLyoqCisgICogVGVzdHMgZm9yIGRlZmluZWQgYW5kIHVuZGVmaW5lZCBjaGFyYWN0ZXJzCisgICovCisgIHB1YmxpYyB2b2lkIFRlc3REZWZpbmVkKCkKKyAgeworICAgIGludCB1bmRlZmluZWRbXSA9IHsweGZmZjEsIDB4ZmZmNywgMHhmYTMwfTsKKyAgICBpbnQgZGVmaW5lZFtdID0gezB4NTIzRSwgMHg0Zjg4LCAweGZmZmR9OworICAgIAorICAgIGludCBzaXplID0gdW5kZWZpbmVkLmxlbmd0aDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkgKyspIAorICAgIHsKKyAgICAgIGlmIChVQ2hhcmFjdGVyLmlzRGVmaW5lZCh1bmRlZmluZWRbaV0pKQorICAgICAgeworICAgICAgICBlcnJsbigiRkFJTCAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKHVuZGVmaW5lZFtpXSkgKyAKKyAgICAgICAgICAgICAgIiBleHBlY3RlZCBub3QgdG8gYmUgZGVmaW5lZCIpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmICghVUNoYXJhY3Rlci5pc0RlZmluZWQoZGVmaW5lZFtpXSkpCisgICAgICB7CisgICAgICAgIGVycmxuKCJGQUlMIDB4IiArIEludGVnZXIudG9IZXhTdHJpbmcoZGVmaW5lZFtpXSkgKyAKKyAgICAgICAgICAgICAgIiBleHBlY3RlZCBkZWZpbmVkIik7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgfQorICAKKyAgLyoqCisgICogVGVzdHMgZm9yIGJhc2UgY2hhcmFjdGVycyBhbmQgdGhlaXIgY2VsbHdpZHRoCisgICovCisgIHB1YmxpYyB2b2lkIFRlc3RCYXNlKCkKKyAgeworICAgIGludCBiYXNlW10gPSB7MHgwMDYxLCAweDAwMzEsIDB4MDNkMn07CisgICAgaW50IG5vbmJhc2VbXSA9IHsweDAwMkIsIDB4MDAyMCwgMHgyMDNCfTsgICAgCisgICAgaW50IHNpemUgPSBiYXNlLmxlbmd0aDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkgKyspIAorICAgIHsKKyAgICAgIGlmIChVQ2hhcmFjdGVyLmlzQmFzZUZvcm0obm9uYmFzZVtpXSkpCisgICAgICB7CisgICAgICAgIGVycmxuKCJGQUlMIDB4IiArIEludGVnZXIudG9IZXhTdHJpbmcobm9uYmFzZVtpXSkgKyAKKyAgICAgICAgICAgICAgIiBleHBlY3RlZCBub3QgdG8gYmUgYSBiYXNlIGNoYXJhY3RlciIpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmICghVUNoYXJhY3Rlci5pc0Jhc2VGb3JtKGJhc2VbaV0pKQorICAgICAgeworICAgICAgICBlcnJsbigiRkFJTCAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGJhc2VbaV0pICsgCisgICAgICAgICAgICAgICIgZXhwZWN0ZWQgdG8gYmUgYSBiYXNlIGNoYXJhY3RlciIpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgICAKKyAgLyoqCisgICogVGVzdHMgZm9yIGRpZ2l0IGNoYXJhY3RlcnMgCisgICovCisgIHB1YmxpYyB2b2lkIFRlc3REaWdpdHMoKQorICB7CisgICAgaW50IGRpZ2l0c1tdID0gezB4MDAzMCwgMHgwNjYyLCAweDBGMjMsIDB4MEVENSwgMHgyMTYwfTsKKyAgICAKKyAgICAvL3NwZWNpYWwgY2hhcmFjdGVycyBub3QgaW4gdGhlIHByb3BlcnRpZXMgdGFibGUKKyAgICBpbnQgZGlnaXRzMltdID0gezB4MzAwNywgMHg0ZTAwLCAweDRlOGMsIDB4NGUwOSwgMHg1NmQ4LCAweDRlOTQsIDB4NTE2ZCwgCisgICAgICAgICAgICAgICAgICAgICAweDRlMDMsIDB4NTE2YiwgMHg0ZTVkfTsgCisgICAgaW50IG5vbmRpZ2l0c1tdID0gezB4MDAxMCwgMHgwMDQxLCAweDAxMjIsIDB4NjhGRX07CisgICAgCisgICAgaW50IGRpZ2l0dmFsdWVzW10gPSB7MCwgMiwgMywgNSwgMX07CisgICAgaW50IGRpZ2l0dmFsdWVzMltdID0gezAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDl9OyAgICAgCisgICAgCisgICAgaW50IHNpemUgID0gZGlnaXRzLmxlbmd0aDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkgKyspIAorICAgICAgaWYgKFVDaGFyYWN0ZXIuaXNEaWdpdChkaWdpdHNbaV0pICYmIAorICAgICAgICAgIFVDaGFyYWN0ZXIuZGlnaXQoZGlnaXRzW2ldKSAhPSBkaWdpdHZhbHVlc1tpXSkgCisgICAgICB7CisgICAgICAgIGVycmxuKCJGQUlMIDB4IiArIEludGVnZXIudG9IZXhTdHJpbmcoZGlnaXRzW2ldKSArIAorICAgICAgICAgICAgICAiIGV4cGVjdGVkIGRpZ2l0IHdpdGggdmFsdWUgIiArIGRpZ2l0dmFsdWVzW2ldKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgCisgICAgc2l6ZSA9IG5vbmRpZ2l0cy5sZW5ndGg7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKQorICAgICAgaWYgKFVDaGFyYWN0ZXIuaXNEaWdpdChub25kaWdpdHNbaV0pKQorICAgICAgeworICAgICAgICBlcnJsbigiRkFJTCAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG5vbmRpZ2l0c1tpXSkgKyAKKyAgICAgICAgICAgICAgIiBleHBlY3RlZCBub25kaWdpdCIpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIAorICAgIHNpemUgPSBkaWdpdHMyLmxlbmd0aDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IDEwOyBpICsrKSAKKyAgICAgIGlmIChVQ2hhcmFjdGVyLmlzRGlnaXQoZGlnaXRzMltpXSkgJiYKKyAgICAgICAgICBVQ2hhcmFjdGVyLmRpZ2l0KGRpZ2l0czJbaV0pICE9IGRpZ2l0dmFsdWVzMltpXSkgCisgICAgICB7CisgICAgICAgIGVycmxuKCJGQUlMIDB4IiArIEludGVnZXIudG9IZXhTdHJpbmcoZGlnaXRzMltpXSkgKyAKKyAgICAgICAgICAgICAgIiBleHBlY3RlZCBkaWdpdCB3aXRoIHZhbHVlICIgKyBkaWdpdHZhbHVlczJbaV0pOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgfQorCisgIC8qKgorICAqIFRlc3RzIGZvciB2ZXJzaW9uIAorICAqLworICBwdWJsaWMgdm9pZCBUZXN0VmVyc2lvbigpCisgIHsKKyAgICBTdHJpbmcgdmVyc2lvbiA9IFVDaGFyYWN0ZXIuZ2V0VW5pY29kZVZlcnNpb24oKTsKKyAgICBpZiAoIXZlcnNpb24uZXF1YWxzKFZFUlNJT05fKSkKKyAgICAgIGVycmxuKCJGQUlMIGV4cGVjdGVkICIgKyBWRVJTSU9OXyk7CisgIH0KKyAgCisgIC8qKgorICAqIFRlc3RzIGZvciBjb250cm9sIGNoYXJhY3RlcnMKKyAgKi8KKyAgLyoKKyAgcHVibGljIHZvaWQgVGVzdENvbnRyb2woKQorICB7CisgICAgaW50IGNvbnRyb2xbXSA9IHsweDAwMWIsIDB4MDA5NywgMHgwMDgyfTsKKyAgICBpbnQgbm9uY29udHJvbFtdID0gezB4NjEsIDB4MDAzMSwgMHgwMGUyfTsKKyAgICAKKyAgICBpbnQgc2l6ZSA9IGNvbnRyb2wubGVuZ3RoOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgCisgICAgeworICAgICAgaWYgKCFVQ2hhcmFjdGVyLmlzQ29udHJvbChjb250cm9sW2ldKSkKKyAgICAgIHsKKyAgICAgICAgZXJybG4oIkZBSUwgMHgiICsgSW50ZWdlci50b0hleFN0cmluZyhjb250cm9sW2ldKSArIAorICAgICAgICAgICAgICAiIGV4cGVjdGVkIHRvIGJlIGEgY29udHJvbCBjaGFyYWN0ZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9ICAKKyAgICAgIGlmIChVQ2hhcmFjdGVyLmlzQ29udHJvbChub25jb250cm9sW2ldKSkKKyAgICAgIHsKKyAgICAgICAgZXJybG4oIkZBSUwgMHgiICsgSW50ZWdlci50b0hleFN0cmluZyhub25jb250cm9sW2ldKSArIAorICAgICAgICAgICAgICAiIGV4cGVjdGVkIHRvIGJlIG5vdCBhIGNvbnRyb2wgY2hhcmFjdGVyIik7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgCisgICAgICBsb2dsbigiT2sgICAgMHgiICsgSW50ZWdlci50b0hleFN0cmluZyhjb250cm9sW2ldKSArICIgYW5kIDB4IiArCisgICAgICAgICAgICBJbnRlZ2VyLnRvSGV4U3RyaW5nKG5vbmNvbnRyb2xbaV0pKTsKKyAgICB9CisgIH0KKyAgKi8KKyAgCisgIC8qKgorICAqIFRlc3RzIGZvciBwcmludGFibGUgY2hhcmFjdGVycworICAqLworICBwdWJsaWMgdm9pZCBUZXN0UHJpbnQoKQorICB7CisgICAgaW50IHByaW50YWJsZVtdID0gezB4MDA0MiwgMHgwMDVmLCAweDIwMTR9OworICAgIGludCBub25wcmludGFibGVbXSA9IHsweDIwMGMsIDB4MDA5ZiwgMHgwMDFifTsKKyAgICAKKyAgICBpbnQgc2l6ZSA9IHByaW50YWJsZS5sZW5ndGg7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKQorICAgIHsKKyAgICAgIGlmICghVUNoYXJhY3Rlci5pc1ByaW50YWJsZShwcmludGFibGVbaV0pKQorICAgICAgeworICAgICAgICBlcnJsbigiRkFJTCAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKHByaW50YWJsZVtpXSkgKyAKKyAgICAgICAgICAgICAgIiBleHBlY3RlZCB0byBiZSBhIHByaW50YWJsZSBjaGFyYWN0ZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBpZiAoVUNoYXJhY3Rlci5pc1ByaW50YWJsZShub25wcmludGFibGVbaV0pKQorICAgICAgeworICAgICAgICBlcnJsbigiRkFJTCAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG5vbnByaW50YWJsZVtpXSkgKworICAgICAgICAgICAgICAiIGV4cGVjdGVkIG5vdCB0byBiZSBhIHByaW50YWJsZSBjaGFyYWN0ZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBsb2dsbigiT2sgICAgMHgiICsgSW50ZWdlci50b0hleFN0cmluZyhwcmludGFibGVbaV0pICsgIiBhbmQgMHgiICsKKyAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcobm9ucHJpbnRhYmxlW2ldKSk7CisgICAgfQorICAgIAorICAgIC8vIHRlc3QgYWxsIElTTyA4IGNvbnRyb2xzCisgICAgZm9yIChpbnQgY2ggPSAwOyBjaCA8PSAweDlmOyArKyBjaCkgeworICAgICAgaWYgKGNoID09IDB4MjApIHsKKyAgICAgIC8vIHNraXAgQVNDSUkgZ3JhcGhpYyBjaGFyYWN0ZXJzIGFuZCBjb250aW51ZSB3aXRoIERFTAorICAgICAgICBjaCA9IDB4N2Y7CisgICAgICB9CisgICAgICBpZiAoVUNoYXJhY3Rlci5pc1ByaW50YWJsZShjaCkpIHsKKyAgICAgICAgZXJybG4oIkZhaWwgMHgiICsgSW50ZWdlci50b0hleFN0cmluZyhjaCkgKyAKKyAgICAgICAgICAgICAgIiBpcyBhIElTTyA4IGNvbnRyb2wgY2hhcmFjdGVyIGhlbmNlIG5vdCBwcmludGFibGVcbiIpOworICAgICAgfQorICAgIH0KKworICAgIC8qIHRlc3QgYWxsIExhdGluLTEgZ3JhcGhpYyBjaGFyYWN0ZXJzICovCisgICAgZm9yIChpbnQgY2ggPSAweDIwOyBjaCA8PSAweGZmOyArKyBjaCkgeworICAgICAgaWYgKGNoID09IDB4N2YpIHsKKyAgICAgICAgY2ggPSAweGEwOworICAgICAgfQorICAgICAgaWYgKCFVQ2hhcmFjdGVyLmlzUHJpbnRhYmxlKGNoKSkgeworICAgICAgICBlcnJsbigiRmFpbCAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGNoKSArIAorICAgICAgICAgICAgICAiIGlzIGEgTGF0aW4tMSBncmFwaGljIGNoYXJhY3RlclxuIik7CisgICAgICAgIH0KKyAgICB9CisgIH0KKyAgCisgIC8qKiAKKyAgKiBUZXN0aW5nIGZvciBpZGVudGlmaWVyIGNoYXJhY3RlcnMKKyAgKi8KKyAgcHVibGljIHZvaWQgVGVzdElkZW50aWZpZXIoKQorICB7CisgICAgaW50IHVuaWNvZGVpZHN0YXJ0W10gPSB7MHgwMjUwLCAweDAwZTIsIDB4MDA2MX07CisgICAgaW50IG5vbnVuaWNvZGVpZHN0YXJ0W10gPSB7MHgyMDAwLCAweDAwMGEsIDB4MjAxOX07CisgICAgaW50IHVuaWNvZGVpZHBhcnRbXSA9IHsweDAwNWYsIDB4MDAzMiwgMHgwMDQ1fTsKKyAgICBpbnQgbm9udW5pY29kZWlkcGFydFtdID0gezB4MjAzMCwgMHgwMGEzLCAweDAwMjB9OworICAgIGludCBpZGlnbm9yZVtdID0gezB4MDcwRiwgMHgxODBCLCAweDE4MEN9OworICAgIGludCBub25pZGlnbm9yZVtdID0gezB4MDA3NSwgMHgwMGEzLCAweDAwNjF9OworCisgICAgaW50IHNpemUgPSB1bmljb2RlaWRzdGFydC5sZW5ndGg7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKSAKKyAgICB7CisgICAgICBpZiAoIVVDaGFyYWN0ZXIuaXNVbmljb2RlSWRlbnRpZmllclN0YXJ0KHVuaWNvZGVpZHN0YXJ0W2ldKSkKKyAgICAgIHsKKyAgICAgICAgZXJybG4oIkZBSUwgMHgiICsgSW50ZWdlci50b0hleFN0cmluZyh1bmljb2RlaWRzdGFydFtpXSkgKyAKKyAgICAgICAgICAgICAgIiBleHBlY3RlZCB0byBiZSBhIHVuaWNvZGUgaWRlbnRpZmllciBzdGFydCBjaGFyYWN0ZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBpZiAoVUNoYXJhY3Rlci5pc1VuaWNvZGVJZGVudGlmaWVyU3RhcnQobm9udW5pY29kZWlkc3RhcnRbaV0pKQorICAgICAgeworICAgICAgICBlcnJsbigiRkFJTCAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG5vbnVuaWNvZGVpZHN0YXJ0W2ldKSArIAorICAgICAgICAgICAgICAiIGV4cGVjdGVkIG5vdCB0byBiZSBhIHVuaWNvZGUgaWRlbnRpZmllciBzdGFydCBjaGFyYWN0ZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBpZiAoIVVDaGFyYWN0ZXIuaXNVbmljb2RlSWRlbnRpZmllclBhcnQodW5pY29kZWlkcGFydFtpXSkpCisgICAgICB7CisgICAgICAgIGVycmxuKCJGQUlMIDB4IiArIEludGVnZXIudG9IZXhTdHJpbmcodW5pY29kZWlkcGFydFtpXSkgKyAKKyAgICAgICAgICAgICAgIiBleHBlY3RlZCB0byBiZSBhIHVuaWNvZGUgaWRlbnRpZmllciBwYXJ0IGNoYXJhY3RlciIpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGlmIChVQ2hhcmFjdGVyLmlzVW5pY29kZUlkZW50aWZpZXJQYXJ0KG5vbnVuaWNvZGVpZHBhcnRbaV0pKQorICAgICAgeworICAgICAgICBlcnJsbigiRkFJTCAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG5vbnVuaWNvZGVpZHBhcnRbaV0pICsgCisgICAgICAgICAgICAgICIgZXhwZWN0ZWQgbm90IHRvIGJlIGEgdW5pY29kZSBpZGVudGlmaWVyIHBhcnQgY2hhcmFjdGVyIik7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgaWYgKCFVQ2hhcmFjdGVyLmlzSWRlbnRpZmllcklnbm9yYWJsZShpZGlnbm9yZVtpXSkpCisgICAgICB7CisgICAgICAgIGVycmxuKCJGQUlMIDB4IiArIEludGVnZXIudG9IZXhTdHJpbmcoaWRpZ25vcmVbaV0pICsgCisgICAgICAgICAgICAgICIgZXhwZWN0ZWQgdG8gYmUgYSBpZ25vcmFibGUgdW5pY29kZSBjaGFyYWN0ZXIiKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBpZiAoVUNoYXJhY3Rlci5pc0lkZW50aWZpZXJJZ25vcmFibGUobm9uaWRpZ25vcmVbaV0pKQorICAgICAgeworICAgICAgICBlcnJsbigiRkFJTCAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG5vbmlkaWdub3JlW2ldKSArIAorICAgICAgICAgICAgICAiIGV4cGVjdGVkIG5vdCB0byBiZSBhIGlnbm9yYWJsZSB1bmljb2RlIGNoYXJhY3RlciIpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGxvZ2xuKCJPayAgICAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKHVuaWNvZGVpZHN0YXJ0W2ldKSArICIgYW5kIDB4IiArCisgICAgICAgICAgICBJbnRlZ2VyLnRvSGV4U3RyaW5nKG5vbnVuaWNvZGVpZHN0YXJ0W2ldKSArICIgYW5kIDB4IiArCisgICAgICAgICAgICBJbnRlZ2VyLnRvSGV4U3RyaW5nKHVuaWNvZGVpZHBhcnRbaV0pICsgIiBhbmQgMHgiICsKKyAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcobm9udW5pY29kZWlkcGFydFtpXSkgKyAiIGFuZCAweCIgKworICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhpZGlnbm9yZVtpXSkgKyAiIGFuZCAweCIgKworICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhub25pZGlnbm9yZVtpXSkpOworICAgIH0KKyAgfQorICAKKyAgLyoqCisgICogVGVzdHMgZm9yIHRoZSBjaGFyYWN0ZXIgdHlwZXMsIGRpcmVjdGlvbi48YnI+CisgICogVGhpcyBtZXRob2QgcmVhZHMgaW4gVW5pY29kZURhdGEudHh0IGZpbGUgZm9yIHRlc3RpbmcgcHVycG9zZXMuIEEgZGVmYXVsdCAKKyAgKiBwYXRoIGlzIHByb3ZpZGVkIHJlbGF0aXZlIHRvIHRoZSBjbGFzcyBwYXRoLCBob3dldmVyIGlmIHRoZSB1c2VyIGNvdWxkIAorICAqIHNldCBhIHN5c3RlbSBwcm9wZXJ0eSB0byBjaGFuZ2UgdGhlIHBhdGguPGJyPgorICAqIGUuZy4gamF2YSAtRFVuaWNvZGVEYXRhPSJhbnlmaWxlLmRhdCIgY29tLmlibS50ZXN0LnRleHQuVUNoYXJhY3RlclRlc3QKKyAgKi8KKyAgcHVibGljIHZvaWQgVGVzdFVuaWNvZGVEYXRhKCkKKyAgeworICAgIC8vIHRoaXMgaXMgdGhlIDIgY2hhciBjYXRlZ29yeSB0eXBlcyB1c2VkIGluIHRoZSBVbmljb2RlRGF0YSBmaWxlCisgICAgZmluYWwgU3RyaW5nIFRZUEUgPSAKKyAgICAgICJMdUxsTHRMbUxvTW5NZU1jTmRObE5vWnNabFpwQ2NDZkNvQ3NQZFBzUGVQY1BvU21TY1NrU29QaVBmIjsKKyAgICAKKyAgICAvLyBkaXJlY3RvcnkgdHlwZXMgdXNlZCBpbiB0aGUgVW5pY29kZURhdGEgZmlsZQorICAgIC8vIHBhZGRlZCBieSBzcGFjZXMgdG8gbWFrZSBlYWNoIHR5cGUgc2l6ZSA0CisgICAgZmluYWwgU3RyaW5nIERJUiA9IAorICAgICAgIkwgICBSICAgRU4gIEVTICBFVCAgQU4gIENTICBCICAgUyAgIFdTICBPTiAgTFJFIExSTyBBTCAgUkxFIFJMTyBQREYgTlNNIEJOICAiOworICAgICAgCisgICAgLy8gZGVmYXVsdCB1bmljb2RlIGRhdGEgZmlsZSBuYW1lCisgICAgZmluYWwgU3RyaW5nIFVOSUNPREVfREFUQV9GSUxFID0gInNyYy8vZGF0YS8vdW5pY29kZS8vVW5pY29kZURhdGEudHh0IjsKKyAgICAKKyAgICAvLyB1bmljb2RlIGRhdGEgZmlsZSBwYXRoIHN5c3RlbSBuYW1lCisgICAgZmluYWwgU3RyaW5nIFVOSUNPREVfREFUQV9TWVNURU1fTkFNRSA9ICJVbmljb2RlRGF0YSI7CisgICAgU3RyaW5nIHMgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoVU5JQ09ERV9EQVRBX1NZU1RFTV9OQU1FKTsKKyAgICBpZiAocyA9PSBudWxsKQorICAgIC8vIGFzc3VtaW5nIHJ1bnRpbWUgZGlyZWN0b3J5IGlzIG9uIHRoZSBzYW1lIGxldmVsIGFzIHRoZSBzb3VyY2UKKyAgICAgIHMgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoInVzZXIuZGlyIikgKyAiLy8uLi8vIiArIFVOSUNPREVfREFUQV9GSUxFOworICAgIAorICAgIGZpbmFsIGludCBMQVNUVU5JQ09ERUNIQVIgPSAweEZGRkQ7CisgICAgaW50IGNoID0gMCwKKyAgICAgICAgaW5kZXggPSAwLAorICAgICAgICB0eXBlID0gMCwKKyAgICAgICAgZGlyID0gMDsKKwkKKwkgIHRyeQorCSAgeworCSAgICAvLyByZWFkaW5nIGluIHRoZSBVbmljb2RlRGF0YSBmaWxlCisJICAgIEZpbGVSZWFkZXIgZnIgPSBuZXcgRmlsZVJlYWRlcihzKTsKKwkgICAgQnVmZmVyZWRSZWFkZXIgaW5wdXQgPSBuZXcgQnVmZmVyZWRSZWFkZXIoZnIpOworCSAgICAKKyAgICAgIHdoaWxlIChjaCAhPSBMQVNUVU5JQ09ERUNIQVIpCisgICAgICB7CisgICAgICAgIHM9IGlucHV0LnJlYWRMaW5lKCk7CisgICAgICAgIAorICAgICAgICAvLyBnZXRpbmcgdGhlIHVuaWNvZGUgY2hhcmFjdGVyLCBpdHMgdHlwZSBhbmQgaXRzIGRpcmVjdGlvbgorICAgICAgICBjaCA9IEludGVnZXIucGFyc2VJbnQocy5zdWJzdHJpbmcoMCwgNCksIDE2KTsKKyAgICAgICAgaW5kZXggPSBzLmluZGV4T2YoJzsnLCA1KTsKKyAgICAgICAgU3RyaW5nIHQgPSBzLnN1YnN0cmluZyhpbmRleCArIDEsIGluZGV4ICsgMyk7CisgICAgICAgIGluZGV4ICs9IDQ7CisgICAgICAgIGJ5dGUgY2MgPSAoYnl0ZSkoSW50ZWdlci5wYXJzZUludChzLnN1YnN0cmluZyhpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmluZGV4T2YoJzsnLCBpbmRleCkpKSk7CisgICAgICAgIGluZGV4ID0gcy5pbmRleE9mKCc7JywgaW5kZXgpOworICAgICAgICBTdHJpbmcgZCA9IHMuc3Vic3RyaW5nKGluZGV4ICsgMSwgcy5pbmRleE9mKCc7JywgaW5kZXggKyAxKSk7CisgICAgICAgIAorICAgICAgICAvLyB0ZXN0aW5nIHRoZSBjYXRlZ29yeQorICAgICAgICAvLyB3ZSBvdmVycmlkZSB0aGUgZ2VuZXJhbCBjYXRlZ29yeSBvZiBzb21lIGNvbnRyb2wgY2hhcmFjdGVycworICAgICAgICBpZiAoY2ggPT0gOSB8fCBjaCA9PSAweGIgfHwgY2ggPT0gMHgxZikKKyAgICAgICAgICB0eXBlID0gVUNoYXJhY3RlckNhdGVnb3J5LlNQQUNFX1NFUEFSQVRPUjsKKyAgICAgICAgZWxzZQorICAgICAgICAgIGlmIChjaCA9PSAweGMpCisgICAgICAgICAgICB0eXBlID0gVUNoYXJhY3RlckNhdGVnb3J5LkxJTkVfU0VQQVJBVE9SOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGlmIChjaCA9PSAweGEgfHwgY2ggPT0gMHhkIHx8IGNoID09IDB4MWMgfHwgY2ggPT0gMHgxZCB8fCAKKyAgICAgICAgICAgICAgICBjaCA9PSAweDFlIHx8IGNoID09IDB4ODUpCisgICAgICAgICAgICAgICB0eXBlID0gVUNoYXJhY3RlckNhdGVnb3J5LlBBUkFHUkFQSF9TRVBBUkFUT1I7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIHR5cGUgPSBUWVBFLmluZGV4T2YodCk7CisgICAgICAgICAgICAgIGlmICh0eXBlIDwgMCkKKyAgICAgICAgICAgICAgICB0eXBlID0gMDsKKyAgICAgICAgICAgICAgZWxzZSAKKyAgICAgICAgICAgICAgICB0eXBlID0gKHR5cGUgPj4gMSkgKyAxOyAgCisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKFVDaGFyYWN0ZXIuZ2V0VHlwZShjaCkgIT0gdHlwZSkKKyAgICAgICAgeworICAgICAgICAgIGVycmxuKCJGQUlMIDB4IiArIEludGVnZXIudG9IZXhTdHJpbmcoY2gpICsgIiBleHBlY3RlZCB0eXBlICIgKyAKKyAgICAgICAgICAgICAgICB0eXBlKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gdGVzdGluZyBjb21iaW5pbmcgY2xhc3MKKyAgICAgICAgaWYgKFVDaGFyYWN0ZXIuZ2V0Q29tYmluaW5nQ2xhc3MoY2gpICE9IGNjKQorICAgICAgICB7CisgICAgICAgICAgZXJybG4oIkZBSUwgMHgiICsgSW50ZWdlci50b0hleFN0cmluZyhjaCkgKyAiIGV4cGVjdGVkIGNvbWJpbmluZyAiICsKKyAgICAgICAgICAgICAgICAiY2xhc3MgIiArIGNjKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gdGVzdGluZyB0aGUgZGlyZWN0aW9uCisgICAgICAgIGlmIChkLmxlbmd0aCgpID09IDEpCisgICAgICAgICAgZCA9IGQgKyAiICAgIjsgIAorICAgICAgICAgIAorICAgICAgICBkaXIgPSBESVIuaW5kZXhPZihkKSA+PiAyOworICAgICAgICBpZiAoVUNoYXJhY3Rlci5nZXREaXJlY3Rpb24oY2gpICE9IGRpcikgCisgICAgICAgIHsKKyAgICAgICAgICBlcnJsbigiRkFJTCAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGNoKSArIAorICAgICAgICAgICAgICAgICIgZXhwZWN0ZWQgd3JvbmcgZGlyZWN0aW9uICIgKyBkaXIpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAgICBpbnB1dC5jbG9zZSgpOworICAgIH0KKyAgICBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGUpCisgICAgeworICAgICAgZXJybG4oIkZBSUwgVW5pY29kZURhdGEudHh0IG5vdCBmb3VuZFxuIiArCisgICAgICAgICAgICAiQ29uZmlndXJlIHRoZSBzeXN0ZW0gc2V0dGluZyBVbmljb2RlRGF0YSB0byB0aGUgcmlnaHQgcGF0aFxuIiArCisgICAgICAgICAgICAiZS5nLiBqYXZhIC1EVW5pY29kZURhdGE9XCJhbnlmaWxlLmRhdFwiICIgKworICAgICAgICAgICAgImNvbS5pYm0uaWN1LnRlc3QudGV4dC5VQ2hhcmFjdGVyVGVzdCIpOworICAgIH0KKyAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCisgICAgeworICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICB9CisgICAgCisgICAgaWYgKFVDaGFyYWN0ZXIuZ2V0RGlyZWN0aW9uKDB4MTAwMDEpICE9IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyRGlyZWN0aW9uLkxFRlRfVE9fUklHSFQpIAorICAgICAgZXJybG4oIkZBSUwgMHgxMDAwMSBleHBlY3RlZCBkaXJlY3Rpb24gIiArIAorICAgICAgVUNoYXJhY3RlckRpcmVjdGlvbi50b1N0cmluZyhVQ2hhcmFjdGVyRGlyZWN0aW9uLkxFRlRfVE9fUklHSFQpKTsKKyAgfQorICAKKyAgLyoqCisgICogVGVzdCBmb3IgdGhlIGNoYXJhY3RlciBuYW1lcworICAqLworICBwdWJsaWMgdm9pZCBUZXN0TmFtZXMoKQorICB7CisgICAgaW50IGNbXSA9IHsweDAwNjEsIDB4MDI4NCwgMHgzNDAxLCAweDdmZWQsIDB4YWMwMCwgMHhkN2EzLCAweGZmMDgsIDB4ZmZlNX07CisgICAgU3RyaW5nIG5hbWVbXSA9IHsiTEFUSU4gU01BTEwgTEVUVEVSIEEiLCAKKyAgICAgICAgICAgICAgICAgICAgICJMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKIFdJVEggU1RST0tFIEFORCBIT09LIiwgCisgICAgICAgICAgICAgICAgICAgICAiQ0pLIFVOSUZJRUQgSURFT0dSQVBILTM0MDEiLCAKKyAgICAgICAgICAgICAgICAgICAgICJDSksgVU5JRklFRCBJREVPR1JBUEgtN0ZFRCIsICJIQU5HVUwgU1lMTEFCTEUgR0EiLCAKKyAgICAgICAgICAgICAgICAgICAgICJIQU5HVUwgU1lMTEFCTEUgSElIIiwgIkZVTExXSURUSCBMRUZUIFBBUkVOVEhFU0lTIiwKKyAgICAgICAgICAgICAgICAgICAgICJGVUxMV0lEVEggWUVOIFNJR04ifTsKKyAgICBTdHJpbmcgb2xkbmFtZVtdID0geyIiLCAiTEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSiBCQVIgSE9PSyIsICIiLCAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICIiLCAiIiwgIkZVTExXSURUSCBPUEVOSU5HIFBBUkVOVEhFU0lTIiwgIiJ9OworICAgIGludCBzaXplID0gYy5sZW5ndGg7CisgICAgU3RyaW5nIHN0cjsKKyAgICBpbnQgdWM7CisgICAgCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKSAKKyAgICB7CisgICAgICAvLyBtb2Rlcm4gVW5pY29kZSBjaGFyYWN0ZXIgbmFtZQorICAgICAgc3RyID0gVUNoYXJhY3Rlci5nZXROYW1lKGNbaV0pOworICAgICAgaWYgKCFzdHIuZXF1YWxzSWdub3JlQ2FzZShuYW1lW2ldKSkKKyAgICAgIHsKKyAgICAgICAgZXJybG4oIkZBSUwgMHgiICsgSW50ZWdlci50b0hleFN0cmluZyhjW2ldKSArICIgZXhwZWN0ZWQgbmFtZSAiICsKKyAgICAgICAgICAgICAgbmFtZVtpXSk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAKKyAgICAgIC8vIDEuMCBVbmljb2RlIGNoYXJhY3RlciBuYW1lCisgICAgICBzdHIgPSBVQ2hhcmFjdGVyLmdldE5hbWUxXzAoY1tpXSk7CisgICAgICBpZiAoKHN0ciA9PSBudWxsICYmIG9sZG5hbWVbaV0ubGVuZ3RoKCkgPiAwKSB8fCAKKyAgICAgICAgICAoc3RyICE9IG51bGwgJiYgIXN0ci5lcXVhbHNJZ25vcmVDYXNlKG9sZG5hbWVbaV0pKSkKKyAgICAgIHsKKyAgICAgICAgZXJybG4oIkZBSUwgMHgiICsgSW50ZWdlci50b0hleFN0cmluZyhjW2ldKSArICIgZXhwZWN0ZWQgMS4wIG5hbWUgIiArCisgICAgICAgICAgICAgIG9sZG5hbWVbaV0pOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIAorICAgICAgLy8gcmV0cmlldmluZyB1bmljb2RlIGNoYXJhY3RlciBmcm9tIG1vZGVybiBuYW1lCisgICAgICB1YyA9IFVDaGFyYWN0ZXIuZ2V0Q2hhckZyb21OYW1lKG5hbWVbaV0pOworICAgICAgaWYgKHVjICE9IGNbaV0pCisgICAgICB7CisgICAgICAgIGVycmxuKCJGQUlMICIgKyBuYW1lW2ldICsgIiBleHBlY3RlZCBjaGFyYWN0ZXIgMHgiICsgCisgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcoY1tpXSkpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIAorICAgICAgLy9yZXRyaWV2aW5nIHVuaWNvZGUgY2hhcmFjdGVyIGZyb20gMS4wIG5hbWUKKyAgICAgIHVjID0gVUNoYXJhY3Rlci5nZXRDaGFyRnJvbU5hbWUxXzAob2xkbmFtZVtpXSk7CisgICAgICBpZiAodWMgIT0gY1tpXSAmJiBpICE9IDAgJiYgKGkgPT0gMSB8fCBpID09IDYpKQorICAgICAgeworICAgICAgICBlcnJsbigiRkFJTCAiICsgbmFtZVtpXSArICIgZXhwZWN0ZWQgMS4wIGNoYXJhY3RlciAiICsgCisgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcoY1tpXSkpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gZXh0cmEgdGVzdGluZyBkaWZmZXJlbnQgZnJvbSBpY3UKKyAgICBmb3IgKGludCBpID0gVUNoYXJhY3Rlci5NSU5fVkFMVUU7IGkgPCBVQ2hhcmFjdGVyLk1BWF9WQUxVRTsgaSArKykKKyAgICB7CisgICAgICBzdHIgPSBVQ2hhcmFjdGVyLmdldE5hbWUoaSk7CisgICAgICBpZiAoc3RyICE9IG51bGwgJiYgVUNoYXJhY3Rlci5nZXRDaGFyRnJvbU5hbWUoc3RyKSAhPSBpKQorICAgICAgeworICAgICAgICBlcnJsbigiRkFJTCAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGkpICsgIiAiICsgc3RyICArIAorICAgICAgICAgICAgICAiIHJldHJpZXZhbCBvZiBuYW1lIGFuZCB2aWNlIHZlcnNhIiApOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgCisgIC8qKgorICAqIFRlc3RpbmcgdGhlIHN0cmluZ3MgY2FzZSBtYXBwaW5nIG1ldGhvZHMKKyAgKi8KKyAgcHVibGljIHZvaWQgVGVzdENhc2VNYXBwaW5nKCkgCisgIHsKKyAgICBTdHJpbmcgYmVmb3JlTG93ZXIgPSAgIlx1MDA2MVx1MDA0Mlx1MDA0OVx1MDNhM1x1MDBkZlx1MDNhM1x1MDAyZlx1ZDkzZlx1ZGZmZiIsCisgICAgICAgICAgIGxvd2VyUm9vdCA9ICAgICJcdTAwNjFcdTAwNjJcdTAwNjlcdTAzYzNcdTAwZGZcdTAzYzJcdTAwMmZcdWQ5M2ZcdWRmZmYiLAorICAgICAgICAgICBsb3dlclR1cmtpc2ggPSAiXHUwMDYxXHUwMDYyXHUwMTMxXHUwM2MzXHUwMGRmXHUwM2MyXHUwMDJmXHVkOTNmXHVkZmZmIiwKKyAgICAgICAgICAgYmVmb3JlVXBwZXIgPSAgIlx1MDA2MVx1MDA0Mlx1MDA2OVx1MDNjMlx1MDBkZlx1MDNjM1x1MDAyZlx1ZmIwM1x1ZDkzZlx1ZGZmZiIsCisgICAgICAgICAgIHVwcGVyUm9vdCA9ICAgICJcdTAwNDFcdTAwNDJcdTAwNDlcdTAzYTNcdTAwNTNcdTAwNTNcdTAzYTNcdTAwMmZcdTAwNDZcdTAwNDZcdTAwNDlcdWQ5M2ZcdWRmZmYiLAorICAgICAgICAgICB1cHBlclR1cmtpc2ggPSAiXHUwMDQxXHUwMDQyXHUwMTMwXHUwM2EzXHUwMDUzXHUwMDUzXHUwM2EzXHUwMDJmXHUwMDQ2XHUwMDQ2XHUwMDQ5XHVkOTNmXHVkZmZmIjsKKworICAgIFN0cmluZyByZXN1bHQgPSBVQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKGJlZm9yZUxvd2VyKTsKKyAgICBpZiAoIWxvd2VyUm9vdC5lcXVhbHMocmVzdWx0KSkgCisgICAgICBlcnJsbigiRmFpbCAiICsgYmVmb3JlTG93ZXIgKyAiIGFmdGVyIGxvd2VyY2FzZSBzaG91bGQgYmUgIiArIGxvd2VyUm9vdCk7CisgICAKKyAgICAvLyBsb3dlcmNhc2Ugd2l0aCB0dXJraXNoIGxvY2FsZQorICAgIHJlc3VsdCA9IFVDaGFyYWN0ZXIudG9Mb3dlckNhc2UobmV3IExvY2FsZSgidHIiLCAiVFIiKSwgYmVmb3JlTG93ZXIpOworICAgIGlmICghbG93ZXJUdXJraXNoLmVxdWFscyhyZXN1bHQpKSAKKyAgICAgIGVycmxuKCJGYWlsICIgKyBiZWZvcmVMb3dlciArICIgYWZ0ZXIgdHVya2lzaC1zZW5zaXRpdmUgbG93ZXJjYXNlICIgKworICAgICAgICAgICAgInNob3VsZCBiZSAiICsgbG93ZXJSb290KTsKKyAgICAgICAgICAgIAorICAgIC8vIHVwcGVyY2FzZSB3aXRoIHJvb3QgbG9jYWxlIGFuZCBpbiB0aGUgc2FtZSBidWZmZXIKKyAgICByZXN1bHQgPSBVQ2hhcmFjdGVyLnRvVXBwZXJDYXNlKGJlZm9yZVVwcGVyKTsKKyAgICBpZiAoIXVwcGVyUm9vdC5lcXVhbHMocmVzdWx0KSkgCisgICAgICBlcnJsbigiRmFpbCAiICsgYmVmb3JlVXBwZXIgKyAiIGFmdGVyIHVwcGVyY2FzZSBzaG91bGQgYmUgIiArIHVwcGVyUm9vdCk7CisgICAgICAKKyAgICAvLyB1cHBlcmNhc2Ugd2l0aCB0dXJraXNoIGxvY2FsZSBhbmQgc2VwYXJhdGUgYnVmZmVycworICAgIHJlc3VsdCA9IFVDaGFyYWN0ZXIudG9VcHBlckNhc2UobmV3IExvY2FsZSgidHIiLCAiVFIiKSwgYmVmb3JlVXBwZXIpOworICAgIGlmICghdXBwZXJUdXJraXNoLmVxdWFscyhyZXN1bHQpKSAKKyAgICAgIGVycmxuKCJGYWlsICIgKyBiZWZvcmVVcHBlciArICIgYWZ0ZXIgdHVya2lzaC1zZW5zaXRpdmUgdXBwZXJjYXNlICIgKworICAgICAgICAgICAgInNob3VsZCBiZSAiICsgdXBwZXJUdXJraXNoKTsKKyAgICAgICAgICAgIAorICAgIC8vIHRlc3QgcHJlZmxpZ2h0aW5nCisgICAgcmVzdWx0ID0gVUNoYXJhY3Rlci50b0xvd2VyQ2FzZShiZWZvcmVMb3dlcik7CisgICAgaWYgKCFsb3dlclJvb3QuZXF1YWxzKHJlc3VsdCkpIAorICAgICAgZXJybG4oIkZhaWwgIiArIGJlZm9yZUxvd2VyICsgIiBhZnRlciBsb3dlciBjYXNlIHNob3VsZCBiZSAiICsgCisgICAgICAgICAgICBsb3dlclJvb3QpOworICB9CisKKyAKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJnKQorICB7CisgICAgdHJ5CisgICAgeworICAgICAgVUNoYXJhY3RlclRlc3QgdGVzdCA9IG5ldyBVQ2hhcmFjdGVyVGVzdCgpOworICAgICAgdGVzdC5ydW4oYXJnKTsKKyAgICB9CisgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQorICAgIHsKKyAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgfQorICB9Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL2ljdS90ZXN0L3RleHQvVVRGMTZUZXN0LmphdmEgYi9zcmMvY29tL2libS9pY3UvdGVzdC90ZXh0L1VURjE2VGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjM3MmI3YzYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9pY3UvdGVzdC90ZXh0L1VURjE2VGVzdC5qYXZhCkBAIC0wLDAgKzEsMjI2IEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vaWN1L3Rlc3QvdGV4dC9BdHRpYy9VVEYxNlRlc3QuamF2YSx2ICQgCisqICREYXRlOiAyMDAxLzAzLzIzIDE5OjUyOjAzICQgCisqICRSZXZpc2lvbjogMS41ICQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS5pY3UudGVzdC50ZXh0OworCitpbXBvcnQgY29tLmlibS50ZXN0LlRlc3RGbXdrOworaW1wb3J0IGNvbS5pYm0udGV4dC5VQ2hhcmFjdGVyOworaW1wb3J0IGNvbS5pYm0udGV4dC5VVEYxNjsKKworLyoqCisqIFRlc3RpbmcgY2xhc3MgZm9yIFVURjE2CisqIEBhdXRob3IgU3luIFdlZSBRdWVrCisqIEBzaW5jZSBmZWIgMDkgMjAwMQorKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBVVEYxNlRlc3QgZXh0ZW5kcyBUZXN0Rm13aworeyAKKyAgLy8gY29uc3RydWN0b3IgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICAvKioKKyAgKiBDb25zdHJ1Y3RvcgorICAqLworICBwdWJsaWMgVVRGMTZUZXN0KCkKKyAgeworICB9CisgIAorICAvLyBwdWJsaWMgbWV0aG9kcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIFRlc3RpbmcgVVRGMTYgY2xhc3MgbWV0aG9kcyBhcHBlbmQsIGdldENoYXJDb3VudCBhbmQgYm91bmRzCisgICovCisgIHB1YmxpYyB2b2lkIFRlc3RVVEYxNkFwcGVuZEJvdW5kQ291bnQoKQorICB7CisgICAgU3RyaW5nQnVmZmVyIHN0ciA9IG5ldyBTdHJpbmdCdWZmZXIoInRoaXMgaXMgYSBzdHJpbmcgIik7CisgICAgaW50IGluaXRzdHJzaXplID0gc3RyLmxlbmd0aCgpOworICAgIGludCBsZW5ndGg7CisgICAgCisgICAgZm9yIChpbnQgaSA9IFVDaGFyYWN0ZXIuTUlOX1ZBTFVFOyBpIDwgVUNoYXJhY3Rlci5NQVhfVkFMVUU7IGkgKz0gMTAwKQorICAgIHsKKyAgICAgIGxlbmd0aCA9IHN0ci5sZW5ndGgoKTsKKyAgICAgIFVURjE2LmFwcGVuZChzdHIsIGkpOworICAgICAgCisgICAgICAvLyB0aGlzIGlzIHRvIGNhdGVyIGZvciB0aGUgY29tYmluYXRpb24gb2YgMHhEQlhYIDB4REM1MCB3aGljaCBmb3JtcworICAgICAgLy8gYSBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcgorICAgICAgaWYgKGkgPT0gMHhEQzUwKQorICAgICAgICBpbml0c3Ryc2l6ZSAtLTsKKyAgICAgICAgCisgICAgICBpZiAoVVRGMTYuY291bnRDb2RlUG9pbnQoc3RyLnRvU3RyaW5nKCkpICE9IGluaXRzdHJzaXplICsgKGkgLyAxMDApICsgMSkKKyAgICAgIHsKKyAgICAgICAgZXJybG4oIkZBSUwgQ291bnRpbmcgY29kZSBwb2ludHMgaW4gc3RyaW5nIGFwcGVuZGVkIHdpdGggIiArIAorICAgICAgICAgICAgICAiIDB4IiArIEludGVnZXIudG9IZXhTdHJpbmcoaSkpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgICAKKyAgICAgIGlmICghVUNoYXJhY3Rlci5pc1N1cHBsZW1lbnRhcnkoaSkpCisgICAgICB7CisgICAgICAgIGlmIChVVEYxNi5nZXRDaGFyQ291bnQoaSkgIT0gMSkKKyAgICAgICAgeworICAgICAgICAgIGVycmxuKCJGQUlMIENvdW50aW5nIEJNUCBjaGFyYWN0ZXIgc2l6ZSBlcnJvciIgKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfSAgCisgICAgICAgIGlmIChzdHIubGVuZ3RoKCkgIT0gbGVuZ3RoICsgMSkKKyAgICAgICAgeworICAgICAgICAgIGVycmxuKCJGQUlMIEFkZGluZyBhIEJNUCBjaGFyYWN0ZXIgZXJyb3IiICk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFVVEYxNi5pc1N1cnJvZ2F0ZSgoY2hhcilpKSAmJiAKKyAgICAgICAgICAgIChVVEYxNi5ib3VuZHMoc3RyLnRvU3RyaW5nKCksIHN0ci5sZW5ndGgoKSAtIDEpICE9IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVRGMTYuU0lOR0xFX0NIQVJfQk9VTkRBUlkgfHwKKyAgICAgICAgICAgICBVVEYxNi5ib3VuZHNBdENvZGVQb2ludE9mZnNldChzdHIudG9TdHJpbmcoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdHN0cnNpemUgKyAoaSAvMTAwKSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gVVRGMTYuU0lOR0xFX0NIQVJfQk9VTkRBUlkpKQorICAgICAgICB7CisgICAgICAgICAgZXJybG4oIkZBSUwgRmluZGluZyBCTVAgY2hhcmFjdGVyIGJvdW5kcyBlcnJvciIgKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSAKKyAgICAgIHsKKyAgICAgICAgaWYgKFVURjE2LmdldENoYXJDb3VudChpKSAhPSAyKQorICAgICAgICB7CisgICAgICAgICAgZXJybG4oIkZBSUwgQ291bnRpbmcgU3VwcGxlbWVudGFyeSBjaGFyYWN0ZXIgc2l6ZSBlcnJvciIgKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3RyLmxlbmd0aCgpICE9IGxlbmd0aCArIDIpCisgICAgICAgIHsKKyAgICAgICAgICBlcnJsbigiRkFJTCBBZGRpbmcgYSBTdXBwbGVtZW50YXJ5IGNoYXJhY3RlciBlcnJvciIgKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBsZW5ndGggPSBzdHIubGVuZ3RoKCk7CisgICAgICAgIGlmIChVVEYxNi5ib3VuZHMoc3RyLnRvU3RyaW5nKCksIHN0ci5sZW5ndGgoKSAtIDIpICE9IAorICAgICAgICAgICAgVVRGMTYuTEVBRF9TVVJST0dBVEVfQk9VTkRBUlkgfHwgCisgICAgICAgICAgICBVVEYxNi5ib3VuZHMoc3RyLnRvU3RyaW5nKCksIHN0ci5sZW5ndGgoKSAtIDEpICE9IAorICAgICAgICAgICAgVVRGMTYuVFJBSUxfU1VSUk9HQVRFX0JPVU5EQVJZIHx8CisgICAgICAgICAgICBVVEYxNi5ib3VuZHNBdENvZGVQb2ludE9mZnNldChzdHIudG9TdHJpbmcoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0c3Ryc2l6ZSArIChpIC8gMTAwKSkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE9IFVURjE2LkxFQURfU1VSUk9HQVRFX0JPVU5EQVJZKQorICAgICAgICB7CisgICAgICAgICAgZXJybG4oIkZBSUwgRmluZGluZyBTdXBwbGVtZW50YXJ5IGNoYXJhY3RlciBib3VuZHMgZXJyb3Igd2l0aCAiICsKKyAgICAgICAgICAgICAgICAic3RyaW5nIGFwcGVuZGVkIHdpdGggMHgiICsgSW50ZWdlci50b0hleFN0cmluZyhpKSk7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IAorICB9CisgIAorICAvKioKKyAgKiBUZXN0aW5nIFVURjE2IGNsYXNzIG1ldGhvZHMgZmluZENvZGVQb2ludE9mZnNldCwgZmluZE9mZnNldEZyb21Db2RlUG9pbnQsIGNoYXJBdCBhbmQKKyAgKiBjaGFyQXRDb2RlUG9pbnQgCisgICovCisgIHB1YmxpYyB2b2lkIFRlc3RVVEYxNk9mZnNldENoYXJBdCgpCisgIHsKKyAgICBTdHJpbmdCdWZmZXIgc3RyID0gbmV3IFN0cmluZ0J1ZmZlcigiMTIzNDUiKTsKKyAgICBVVEYxNi5hcHBlbmQoc3RyLCAweDEwMDAxKTsKKyAgICBzdHIuYXBwZW5kKCI2Nzg5MCIpOworICAgIFVURjE2LmFwcGVuZChzdHIsIDB4MTAwMDIpOworICAgIFN0cmluZyBzID0gc3RyLnRvU3RyaW5nKCk7CisgICAgaWYgKFVURjE2LmNoYXJBdChzLCAwKSAhPSAnMScgfHwgVVRGMTYuY2hhckF0KHMsIDIpICE9ICczJyB8fCAKKyAgICAgICAgVVRGMTYuY2hhckF0KHMsIDUpICE9IDB4MTAwMDEgfHwgVVRGMTYuY2hhckF0KHMsIDYpICE9IDB4MTAwMDEgfHwgCisgICAgICAgIFVURjE2LmNoYXJBdChzLCAxMikgIT0gMHgxMDAwMiB8fCBVVEYxNi5jaGFyQXQocywgMTMpICE9IDB4MTAwMDIgfHwKKyAgICAgICAgVVRGMTYuY2hhckF0Q29kZVBvaW50T2Zmc2V0KHMsIDApICE9ICcxJyB8fCAKKyAgICAgICAgVVRGMTYuY2hhckF0Q29kZVBvaW50T2Zmc2V0KHMsIDIpICE9ICczJyB8fCAKKyAgICAgICAgVVRGMTYuY2hhckF0Q29kZVBvaW50T2Zmc2V0KHMsIDUpICE9IDB4MTAwMDEgfHwgCisgICAgICAgIFVURjE2LmNoYXJBdENvZGVQb2ludE9mZnNldChzLCA2KSAhPSAnNicgfHwgCisgICAgICAgIFVURjE2LmNoYXJBdENvZGVQb2ludE9mZnNldChzLCAxMSkgIT0gMHgxMDAwMikKKyAgICAgIGVycmxuKCJGQUlMIEdldHRpbmcgY2hhcmFjdGVyIGZyb20gc3RyaW5nIGVycm9yIiApOworCisgICAgaWYgKFVURjE2LmZpbmRDb2RlUG9pbnRPZmZzZXQocywgMykgIT0gMyB8fCAKKyAgICAgICAgVVRGMTYuZmluZENvZGVQb2ludE9mZnNldChzLCA1KSAhPSA1IHx8IAorICAgICAgICBVVEYxNi5maW5kQ29kZVBvaW50T2Zmc2V0KHMsIDYpICE9IDUpCisgICAgICBlcnJsbigiRkFJTCBHZXR0aW5nIGNvZGVwb2ludCBvZmZzZXQgZnJvbSBzdHJpbmcgZXJyb3IiICk7CisgICAgaWYgKFVURjE2LmZpbmRPZmZzZXRGcm9tQ29kZVBvaW50KHMsIDMpICE9IDMgfHwgCisgICAgICAgIFVURjE2LmZpbmRPZmZzZXRGcm9tQ29kZVBvaW50KHMsIDUpICE9IDUgfHwgCisgICAgICAgIFVURjE2LmZpbmRPZmZzZXRGcm9tQ29kZVBvaW50KHMsIDYpICE9IDcpCisgICAgICBlcnJsbigiRkFJTCBHZXR0aW5nIFVURjE2IG9mZnNldCBmcm9tIGNvZGVwb2ludCBpbiBzdHJpbmcgZXJyb3IiICk7CisgICAgICAKKyAgICBVVEYxNi5zZXRDaGFyQXQoc3RyLCAzLCAnMycpOworICAgIFVURjE2LnNldENoYXJBdENvZGVQb2ludE9mZnNldChzdHIsIDQsICczJyk7CisgICAgaWYgKFVURjE2LmNoYXJBdChzdHIudG9TdHJpbmcoKSwgMykgIT0gJzMnIHx8IAorICAgICAgICBVVEYxNi5jaGFyQXRDb2RlUG9pbnRPZmZzZXQoc3RyLnRvU3RyaW5nKCksIDMpICE9ICczJyB8fAorICAgICAgICBVVEYxNi5jaGFyQXQoc3RyLnRvU3RyaW5nKCksIDQpICE9ICczJyB8fCAKKyAgICAgICAgVVRGMTYuY2hhckF0Q29kZVBvaW50T2Zmc2V0KHN0ci50b1N0cmluZygpLCA0KSAhPSAnMycpCisgICAgICBlcnJsbigiRkFJTCBTZXR0aW5nIG5vbi1zdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMgYXQgYSAiICsKKyAgICAgICAgICAgICJub24tc3VwcGxlbWVudGFyeSBwb3NpdGlvbiIpOworICAgICAgICAgICAgCisgICAgVVRGMTYuc2V0Q2hhckF0KHN0ciwgNSwgJzMnKTsKKyAgICBpZiAoVVRGMTYuY2hhckF0KHN0ci50b1N0cmluZygpLCA1KSAhPSAnMycgfHwgCisgICAgICAgIFVURjE2LmNoYXJBdENvZGVQb2ludE9mZnNldChzdHIudG9TdHJpbmcoKSwgNSkgIT0gJzMnIHx8IAorICAgICAgICBVVEYxNi5jaGFyQXQoc3RyLnRvU3RyaW5nKCksIDYpICE9ICc2JyB8fCAKKyAgICAgICAgVVRGMTYuY2hhckF0Q29kZVBvaW50T2Zmc2V0KHN0ci50b1N0cmluZygpLCA1KSAhPSAnMycgfHwgCisgICAgICAgIFVURjE2LmNoYXJBdENvZGVQb2ludE9mZnNldChzdHIudG9TdHJpbmcoKSwgNikgIT0gJzYnKQorICAgICAgZXJybG4oIkZBSUwgU2V0dGluZyBub24tc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIGF0IGEgIiArCisgICAgICAgICAgICAic3VwcGxlbWVudGFyeSBwb3NpdGlvbiIpOworICAgICAgICAgICAgCisgICAgVVRGMTYuc2V0Q2hhckF0KHN0ciwgNSwgMHgxMDAwMSk7CisgICAgaWYgKFVURjE2LmNoYXJBdChzdHIudG9TdHJpbmcoKSwgNSkgIT0gMHgxMDAwMSB8fCAKKyAgICAgICAgVVRGMTYuY2hhckF0Q29kZVBvaW50T2Zmc2V0KHN0ci50b1N0cmluZygpLCA1KSAhPSAweDEwMDAxIHx8CisgICAgICAgIFVURjE2LmNoYXJBdChzdHIudG9TdHJpbmcoKSwgNykgIT0gJzYnIHx8IAorICAgICAgICBVVEYxNi5jaGFyQXRDb2RlUG9pbnRPZmZzZXQoc3RyLnRvU3RyaW5nKCksIDYpICE9ICc2JykKKyAgICAgIGVycmxuKCJGQUlMIFNldHRpbmcgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIGF0IGEgIiArCisgICAgICAgICAgICAibm9uLXN1cHBsZW1lbnRhcnkgcG9zaXRpb24iKTsKKyAgICAgICAgICAgIAorICAgIFVURjE2LnNldENoYXJBdENvZGVQb2ludE9mZnNldChzdHIsIDUsICczJyk7CisgICAgaWYgKFVURjE2LmNoYXJBdChzdHIudG9TdHJpbmcoKSwgNSkgIT0gJzMnIHx8IAorICAgICAgICBVVEYxNi5jaGFyQXRDb2RlUG9pbnRPZmZzZXQoc3RyLnRvU3RyaW5nKCksIDUpICE9ICczJyB8fAorICAgICAgICBVVEYxNi5jaGFyQXQoc3RyLnRvU3RyaW5nKCksIDYpICE9ICc2JyB8fCAKKyAgICAgICAgVVRGMTYuY2hhckF0Q29kZVBvaW50T2Zmc2V0KHN0ci50b1N0cmluZygpLCA2KSAhPSAnNicpCisgICAgICBlcnJsbigiRkFJTCBTZXR0aW5nIG5vbi1zdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMgYXQgYSAiICsKKyAgICAgICAgICAgICJzdXBwbGVtZW50YXJ5IHBvc2l0aW9uIik7CisgICAgICAgICAgICAKKyAgICBVVEYxNi5zZXRDaGFyQXQoc3RyLCA1LCAweDEwMDAxKTsKKyAgICBpZiAoVVRGMTYuY2hhckF0KHN0ci50b1N0cmluZygpLCA1KSAhPSAweDEwMDAxIHx8IAorICAgICAgICBVVEYxNi5jaGFyQXRDb2RlUG9pbnRPZmZzZXQoc3RyLnRvU3RyaW5nKCksIDUpICE9IDB4MTAwMDEgfHwKKyAgICAgICAgVVRGMTYuY2hhckF0KHN0ci50b1N0cmluZygpLCA3KSAhPSAnNicgfHwgCisgICAgICAgIFVURjE2LmNoYXJBdENvZGVQb2ludE9mZnNldChzdHIudG9TdHJpbmcoKSwgNikgIT0gJzYnKQorICAgICAgZXJybG4oIkZBSUwgU2V0dGluZyBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcnMgYXQgYSAiICsKKyAgICAgICAgICAgICJub24tc3VwcGxlbWVudGFyeSBwb3NpdGlvbiIpOworICAgICAgICAgICAgCisgICAgIAorICAgVVRGMTYuc2V0Q2hhckF0KHN0ciwgNSwgMHhEODAwKTsKKyAgIFVURjE2LnNldENoYXJBdChzdHIsIDYsIDB4RDgwMCk7CisgICBpZiAoVVRGMTYuY2hhckF0KHN0ci50b1N0cmluZygpLCA1KSAhPSAweEQ4MDAgfHwKKyAgICAgICBVVEYxNi5jaGFyQXQoc3RyLnRvU3RyaW5nKCksIDYpICE9IDB4RDgwMCB8fAorICAgICAgIFVURjE2LmNoYXJBdENvZGVQb2ludE9mZnNldChzdHIudG9TdHJpbmcoKSwgNSkgIT0gMHhEODAwIHx8CisgICAgICAgVVRGMTYuY2hhckF0Q29kZVBvaW50T2Zmc2V0KHN0ci50b1N0cmluZygpLCA2KSAhPSAweEQ4MDApCisgICAgICBlcnJsbigiRkFJTCBTZXR0aW5nIGxlYWQgY2hhcmFjdGVycyBhdCBhIHN1cHBsZW1lbnRhcnkgcG9zaXRpb24iKTsgICAKKyAgICAgIAorICAgVVRGMTYuc2V0Q2hhckF0KHN0ciwgNSwgMHhEREREKTsKKyAgIGlmIChVVEYxNi5jaGFyQXQoc3RyLnRvU3RyaW5nKCksIDUpICE9IDB4RERERCB8fAorICAgICAgIFVURjE2LmNoYXJBdChzdHIudG9TdHJpbmcoKSwgNikgIT0gMHhEODAwIHx8CisgICAgICAgVVRGMTYuY2hhckF0Q29kZVBvaW50T2Zmc2V0KHN0ci50b1N0cmluZygpLCA1KSAhPSAweEREREQgfHwKKyAgICAgICBVVEYxNi5jaGFyQXRDb2RlUG9pbnRPZmZzZXQoc3RyLnRvU3RyaW5nKCksIDYpICE9IDB4RDgwMCkKKyAgICAgIGVycmxuKCJGQUlMIFNldHRpbmcgdHJhaWwgY2hhcmFjdGVycyBhdCBhIHN1cnJvZ2F0ZSBwb3NpdGlvbiIpOworICAgICAgCisgICBVVEYxNi5zZXRDaGFyQXQoc3RyLCA1LCAnMycpOworICAgaWYgKFVURjE2LmNoYXJBdChzdHIudG9TdHJpbmcoKSwgNSkgIT0gJzMnIHx8CisgICAgICAgVVRGMTYuY2hhckF0KHN0ci50b1N0cmluZygpLCA2KSAhPSAweEQ4MDAgfHwKKyAgICAgICBVVEYxNi5jaGFyQXRDb2RlUG9pbnRPZmZzZXQoc3RyLnRvU3RyaW5nKCksIDUpICE9ICczJyB8fAorICAgICAgIFVURjE2LmNoYXJBdENvZGVQb2ludE9mZnNldChzdHIudG9TdHJpbmcoKSwgNikgIT0gMHhEODAwKQorICAgICAgZXJybG4oIkZBSUwgU2V0dGluZyBub24tc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXJzIGF0IGEgc3Vycm9nYXRlICIgKworICAgICAgICAgICAgInBvc2l0aW9uIik7CisgIH0KKyAKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJnKQorICB7CisgICAgdHJ5CisgICAgeworICAgICAgVVRGMTZUZXN0IHRlc3QgPSBuZXcgVVRGMTZUZXN0KCk7CisgICAgICB0ZXN0LnJ1bihhcmcpOworICAgIH0KKyAgICBjYXRjaCAoRXhjZXB0aW9uIGUpCisgICAgeworICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICB9CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vbWF0aC9CaWdEZWNpbWFsLmphdmEgYi9zcmMvY29tL2libS9tYXRoL0JpZ0RlY2ltYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kZjkyZTVhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vbWF0aC9CaWdEZWNpbWFsLmphdmEKQEAgLTAsMCArMSw0MzU4IEBACisvKiBHZW5lcmF0ZWQgZnJvbSAnQmlnRGVjaW1hbC5ucngnIDggU2VwIDIwMDAgMTE6MTA6NTAgW3YyLjAwXSAqLworLyogT3B0aW9uczogQmluYXJ5IENvbW1lbnRzIENyb3NzcmVmIEZvcm1hdCBKYXZhIExvZ28gU3RyaWN0YXJncyBTdHJpY3RjYXNlIFRyYWNlMiBWZXJib3NlMyAqLworcGFja2FnZSBjb20uaWJtLm1hdGg7CitpbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogQmlnRGVjaW1hbCAtLSBEZWNpbWFsIGFyaXRobWV0aWMgZm9yIEphdmEgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24sIDE5OTYsIDIwMDAuICBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBUaGUgQmlnRGVjaW1hbCBjbGFzcyBwcm92aWRlcyBpbW11dGFibGUgYXJiaXRyYXJ5LXByZWNpc2lvbiAgICAgICAgKi8KKy8qIGZsb2F0aW5nIHBvaW50IChpbmNsdWRpbmcgaW50ZWdlcikgZGVjaW1hbCBudW1iZXJzLiAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiBBcyB0aGUgbnVtYmVycyBhcmUgZGVjaW1hbCwgdGhlcmUgaXMgYW4gZXhhY3QgY29ycmVzcG9uZGVuY2UgICAgICAgKi8KKy8qIGJldHdlZW4gYW4gaW5zdGFuY2Ugb2YgYSBCaWdEZWNpbWFsIG9iamVjdCBhbmQgaXRzIFN0cmluZyAgICAgICAgICAqLworLyogcmVwcmVzZW50YXRpb247IHRoZSBCaWdEZWNpbWFsIGNsYXNzIHByb3ZpZGVzIGRpcmVjdCBjb252ZXJzaW9ucyAgICovCisvKiB0byBhbmQgZnJvbSBTdHJpbmcgYW5kIGNoYXJhY3RlciBhcnJheSBvYmplY3RzLCBhbmQgd2VsbCBhcyAgICAgICAgKi8KKy8qIGNvbnZlcnNpb25zIHRvIGFuZCBmcm9tIHRoZSBKYXZhIHByaW1pdGl2ZSB0eXBlcyAod2hpY2ggbWF5IG5vdCAgICAqLworLyogYmUgZXhhY3QpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIE5vdGVzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxLiBBIEJpZ0RlY2ltYWwgb2JqZWN0IGlzIG5ldmVyIGNoYW5nZWQgaW4gdmFsdWUgb25jZSBjb25zdHJ1Y3RlZDsgKi8KKy8qICAgIHRoaXMgYXZvaWRzIHRoZSBuZWVkIGZvciBsb2NraW5nLiAgTm90ZSBpbiBwYXJ0aWN1bGFyIHRoYXQgdGhlICAqLworLyogICAgbWFudGlzc2EgYXJyYXkgbWF5IGJlIHNoYXJlZCBiZXR3ZWVuIG1hbnkgQmlnRGVjaW1hbCBvYmplY3RzLCAgICovCisvKiAgICBzbyB0aGF0IG9uY2UgZXhwb3NlZCBpdCBtdXN0IG5vdCBiZSBhbHRlcmVkLiAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogMi4gVGhpcyBjbGFzcyBsb29rcyBhdCBNYXRoQ29udGV4dCBjbGFzcyBmaWVsZHMgZGlyZWN0bHkgKGZvciAgICAgICovCisvKiAgICBwZXJmb3JtYW5jZSkuICBJdCBtdXN0IG5vdCBhbmQgZG9lcyBub3QgY2hhbmdlIHRoZW0uICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogMy4gRXhwb25lbnQgY2hlY2tpbmcgaXMgZGVsYXllZCB1bnRpbCBmaW5pc2goKSwgYXMgd2Uga25vdyAgICAgICAgICovCisvKiAgICBpbnRlcm1lZGlhdGUgY2FsY3VsYXRpb25zIGNhbm5vdCBjYXVzZSAzMS1iaXQgb3ZlcmZsb3cuICAgICAgICAgKi8KKy8qICAgIFtUaGlzIGFzc2VydGlvbiBkZXBlbmRzIG9uIE1BWF9ESUdJVFMgaW4gTWF0aENvbnRleHQuXSAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiA0LiBDb21tZW50cyBmb3IgdGhlIHB1YmxpYyBBUEkgbm93IGZvbGxvdyB0aGUgamF2YWRvYyBjb252ZW50aW9ucy4gKi8KKy8qICAgIFRoZSBOZXRSZXh4IC1jb21tZW50cyBvcHRpb24gaXMgdXNlZCB0byBwYXNzIHRoZXNlIGNvbW1lbnRzICAgICAqLworLyogICAgdGhyb3VnaCB0byB0aGUgZ2VuZXJhdGVkIEphdmEgY29kZSAod2l0aCAtZm9ybWF0LCBpZiBkZXNpcmVkKS4gICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDUuIFN5c3RlbS5hcnJheWNvcHkgaXMgZmFzdGVyIHRoYW4gZXhwbGljaXQgbG9vcCBhcyBmb2xsb3dzICAgICAgICAqLworLyogICAgICBNZWFuIGxlbmd0aCA0OiAgZXF1YWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgIE1lYW4gbGVuZ3RoIDg6ICB4MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgTWVhbiBsZW5ndGggMTY6IHgzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICBNZWFuIGxlbmd0aCAyNDogeDQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICBGcm9tIHByaW9yIGV4cGVyaWVuY2UsIHdlIGV4cGVjdCBtZWFuIGxlbmd0aCBhIGxpdHRsZSBiZWxvdyA4LCAgKi8KKy8qICAgIGJ1dCBhcnJheWNvcHkgaXMgc3RpbGwgdGhlIG9uZSB0byB1c2UsIGluIGdlbmVyYWwsIHVudGlsIGxhdGVyICAqLworLyogICAgbWVhc3VyZW1lbnRzIHN1Z2dlc3Qgb3RoZXJ3aXNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDYuICdETVNSQ04nIHJlZmVycmVkIHRvIGJlbG93IGlzIHRoZSBvcmlnaW5hbCAoMTk4MSkgSUJNIFMvMzcwICAgICAqLworLyogICAgYXNzZW1ibGVyIGNvZGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGFsZ29yaXRobXMgYmVsb3c7IGl0IGlzICAgICovCisvKiAgICBub3cgY2FsbGVkIElYWFJDTiBhbmQgaXMgYXZhaWxhYmxlIHdpdGggdGhlIE9TLzM5MCBhbmQgVk0vRVNBICAgKi8KKy8qICAgIG9wZXJhdGluZyBzeXN0ZW1zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBDaGFuZ2UgSGlzdG9yeTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTcuMDkuMDIgSW5pdGlhbCB2ZXJzaW9uIChkZXJpdmVkIGZyb20gbmV0cmV4eC5sYW5nIGNsYXNzZXMpICAgICAqLworLyogMTk5Ny4wOS4xMiBBZGQgbG9zdERpZ2l0cyBjaGVja2luZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk3LjEwLjA2IENoYW5nZSBtYW50aXNzYSB0byBhIGJ5dGUgYXJyYXkgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTcuMTEuMjIgUmV3b3JrIHBvd2VyIFtkaWQgbm90IHByZXBhcmUgYXJndW1lbnRzLCBldGMuXSAgICAgICAgICAqLworLyogMTk5Ny4xMi4xMyBtdWx0aXBseSBkaWQgbm90IHByZXBhcmUgYXJndW1lbnRzICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk3LjEyLjE0IGFkZCBkaWQgbm90IHByZXBhcmUgYW5kIGFsaWduIGFyZ3VtZW50cyBjb3JyZWN0bHkgICAgICAgKi8KKy8qIDE5OTguMDUuMDIgMC4wNyBwYWNrYWdpbmcgY2hhbmdlcyBzdWdnZXN0ZWQgYnkgU3VuIGFuZCBPcmFjbGUgICAgICAqLworLyogMTk5OC4wNS4yMSBhZGp1c3QgcmVtYWluZGVyIG9wZXJhdG9yIGZpbmFsaXphdGlvbiAgICAgICAgICAgICAgICAgICovCisvKiAxOTk4LjA2LjA0IHJld29yayB0byBwYXNzIE1hdGhDb250ZXh0IHRvIGZpbmlzaCgpIGFuZCByb3VuZCgpICAgICAgKi8KKy8qIDE5OTguMDYuMDYgY2hhbmdlIGZvcm1hdCB0byB1c2Ugcm91bmQoKTsgc3VwcG9ydCByb3VuZGluZyBtb2RlcyAgICAqLworLyogMTk5OC4wNi4yNSByZW5hbWUgdG8gQmlnRGVjaW1hbCBhbmQgYmVnaW4gbWVyZ2UgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgIHplcm8gY2FuIG5vdyBoYXZlIHRyYWlsaW5nIHplcm9zIChpLmUuLCBleHBcPTApICAgICAgICAgKi8KKy8qIDE5OTguMDYuMjggbmV3IG1ldGhvZHM6IG1vdmVQb2ludFh4eHgsIHNjYWxlLCB0b0JpZ0ludGVnZXIgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgdW5zY2FsZWRWYWx1ZSwgdmFsdWVvZiAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk4LjA3LjAxIGltcHJvdmUgYnl0ZWFkZHN1YiB0byBhbGxvdyBhcnJheSByZXVzZSwgZXRjLiAgICAgICAgICAgKi8KKy8qIDE5OTguMDcuMDEgbWFrZSBudWxsIHRlc3RpbmcgZXhwbGljaXQgdG8gYXZvaWQgSklUIGJ1ZyBbV2luMzJdICAgICAqLworLyogMTk5OC4wNy4wNyBzY2FsZWQgZGl2aXNpb24gIFtkaXZpZGUoQmlnRGVjaW1hbCwgaW50LCBpbnQpXSAgICAgICAgICovCisvKiAxOTk4LjA3LjA4IHNldFNjYWxlLCBmYXN0ZXIgZXF1YWxzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTguMDcuMTEgYWxsb3cgMUU2IChubyBzaWduKSA8c2lnaD47IG5ldyBkb3VibGUvZmxvYXQgY29udmVyc2lvbiAqLworLyogMTk5OC4xMC4xMiBjaGFuZ2UgcGFja2FnZSB0byBjb20uaWJtLm1hdGggICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk4LjEyLjE0IHBvd2VyIG9wZXJhdG9yIG5vIGxvbmdlciByb3VuZHMgUkhTIFt0byBtYXRjaCBBTlNJXSAgICAgKi8KKy8qICAgICAgICAgICAgYWRkIHRvQmlnRGVjaW1hbCgpIGFuZCBCaWdEZWNpbWFsKGphdmEubWF0aC5CaWdEZWNpbWFsKSAqLworLyogMTk5OC4xMi4yOSBpbXByb3ZlIGJ5dGVhZGRzdWIgYnkgdXNpbmcgdGFibGUgbG9va3VwICAgICAgICAgICAgICAgICovCisvKiAxOTk5LjAyLjA0IGxvc3RkaWdpdHM9MCBiZWhhdmlvdXIgcm91bmRzIGluc3RlYWQgb2YgZGlnaXRzKzEgZ3VhcmQgKi8KKy8qIDE5OTkuMDIuMDUgY2xlYW5lciBjb2RlIGZvciBCaWdEZWNpbWFsKGNoYXJbXSkgICAgICAgICAgICAgICAgICAgICAqLworLyogMTk5OS4wMi4wNiBhZGQgamF2YWRvYyBjb21tZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk5LjAyLjExIGZvcm1hdCgpIGNoYW5nZWQgZnJvbSA3IHRvIDIgbWV0aG9kIGZvcm0gICAgICAgICAgICAgICAgKi8KKy8qIDE5OTkuMDMuMDUgbnVsbCBwb2ludGVyIGNoZWNraW5nIGlzIG5vIGxvbmdlciBleHBsaWNpdCAgICAgICAgICAgICAqLworLyogMTk5OS4wMy4wNSBzaW1wbGlmeTsgY2hhbmdlcyBmcm9tIGRpc2N1c3Npb24gd2l0aCBKLiBCbG9jaDogICAgICAgICovCisvKiAgICAgICAgICAgIG51bGwgbm8gbG9uZ2VyIHBlcm1pdHRlZCBmb3IgTWF0aENvbnRleHQ7IGRyb3AgYm9vbGVhbiwgKi8KKy8qICAgICAgICAgICAgYnl0ZSwgY2hhciwgZmxvYXQsIHNob3J0IGNvbnN0cnVjdG9yLCBkZXByZWNhdGUgZG91YmxlICAqLworLyogICAgICAgICAgICBjb25zdHJ1Y3Rvciwgbm8gYmxhbmtzIGluIHN0cmluZyBjb25zdHJ1Y3RvciwgYWRkICAgICAgICovCisvKiAgICAgICAgICAgIG9mZnNldCBhbmQgbGVuZ3RoIHZlcnNpb24gb2YgY2hhcltdIGNvbnN0cnVjdG9yOyAgICAgICAgKi8KKy8qICAgICAgICAgICAgYWRkIHZhbHVlT2YoZG91YmxlKTsgZHJvcCBib29sZWFuVmFsdWUsIGNoYXJWYWx1ZTsgICAgICAqLworLyogICAgICAgICAgICBhZGQgLi4uRXhhY3QgdmVyc2lvbnMgb2YgcmVtYWluaW5nIGNvbnZlcnRvcnMgICAgICAgICAgICovCisvKiAxOTk5LjAzLjEzIGFkZCB0b0JpZ0ludGVnZXJFeGFjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTkuMDMuMTMgMS4wMCByZWxlYXNlIHRvIElCTSBDZW50cmUgZm9yIEphdmEgVGVjaG5vbG9neSAgICAgICAgICAqLworLyogMTk5OS4wNS4yNyAxLjAxIGNvcnJlY3QgMC0wLjIgYnVnIHVuZGVyIHNjYWxlZCBhcml0aG1ldGljICAgICAgICAgICovCisvKiAxOTk5LjA2LjI5IDEuMDIgY29uc3RydWN0b3JzIHNob3VsZCBub3QgYWxsb3cgZXhwb25lbnQgPiA5IGRpZ2l0cyAgKi8KKy8qIDE5OTkuMDcuMDMgMS4wMyBsb3N0IGRpZ2l0cyBzaG91bGQgbm90IGJlIGNoZWNrZWQgaWYgZGlnaXRzPTAgICAgICAqLworLyogMTk5OS4wNy4wNiAgICAgIGxvc3QgZGlnaXRzIEV4Y2VwdGlvbiBtZXNzYWdlIGNoYW5nZWQgICAgICAgICAgICAgICovCisvKiAxOTk5LjA3LjEwIDEuMDQgbW9yZSB3b3JrIG9uIDAtMC4yIChzY2FsZWQgYXJpdGhtZXRpYykgICAgICAgICAgICAgKi8KKy8qIDE5OTkuMDcuMTcgICAgICBpbXByb3ZlIG1lc3NhZ2VzIGZyb20gcG93IG1ldGhvZCAgICAgICAgICAgICAgICAgICAqLworLyogMTk5OS4wOC4wOCAgICAgIHBlcmZvcm1hbmNlIHR3ZWFrcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk5LjA4LjE1ICAgICAgZmFzdHBhdGggaW4gbXVsdGlwbHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTkuMTEuMDUgMS4wNSBmaXggcHJvYmxlbSBpbiBpbnRWYWx1ZUV4YWN0IFtlLmcuLCA1NTU1NTU1NTU1XSAgICAqLworLyogMTk5OS4xMi4yMiAxLjA2IHJlbW92ZSBtdWx0aXBseSBmYXN0cGF0aCwgYW5kIGltcHJvdmUgcGVyZm9ybWFuY2UgICovCisvKiAyMDAwLjAxLjAxICAgICAgY29weXJpZ2h0IHVwZGF0ZSBbWTJLIGhhcyBhcnJpdmVkXSAgICAgICAgICAgICAgICAgKi8KKy8qIDIwMDAuMDYuMTggMS4wOCBubyBsb25nZXIgZGVwcmVjYXRlIEJpZ0RlY2ltYWwoZG91YmxlKSAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKworCisKKworLyoqCisgKiBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gY2xhc3MgaW1wbGVtZW50cyBpbW11dGFibGUKKyAqIGFyYml0cmFyeS1wcmVjaXNpb24gZGVjaW1hbCBudW1iZXJzLiAgVGhlIG1ldGhvZHMgb2YgdGhlCisgKiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBjbGFzcyBwcm92aWRlIG9wZXJhdGlvbnMgZm9yIGZpeGVkIGFuZAorICogZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYywgY29tcGFyaXNvbiwgZm9ybWF0IGNvbnZlcnNpb25zLCBhbmQKKyAqIGhhc2hpbmcuCisgKiA8cD4KKyAqIEFzIHRoZSBudW1iZXJzIGFyZSBkZWNpbWFsLCB0aGVyZSBpcyBhbiBleGFjdCBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuCisgKiBhbiBpbnN0YW5jZSBvZiBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdCBhbmQgaXRzCisgKiA8Y29kZT5TdHJpbmc8L2NvZGU+IHJlcHJlc2VudGF0aW9uOyB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gY2xhc3MKKyAqIHByb3ZpZGVzIGRpcmVjdCBjb252ZXJzaW9ucyB0byBhbmQgZnJvbSA8Y29kZT5TdHJpbmc8L2NvZGU+IGFuZAorICogY2hhcmFjdGVyIGFycmF5ICg8Y29kZT5jaGFyW108L2NvZGU+KSBvYmplY3RzLCBhcyB3ZWxsIGFzIGNvbnZlcnNpb25zCisgKiB0byBhbmQgZnJvbSB0aGUgSmF2YSBwcmltaXRpdmUgdHlwZXMgKHdoaWNoIG1heSBub3QgYmUgZXhhY3QpIGFuZAorICogPGNvZGU+QmlnSW50ZWdlcjwvY29kZT4uCisgKiA8cD4KKyAqIEluIHRoZSBkZXNjcmlwdGlvbnMgb2YgY29uc3RydWN0b3JzIGFuZCBtZXRob2RzIGluIHRoaXMgZG9jdW1lbnRhdGlvbiwKKyAqIHRoZSB2YWx1ZSBvZiBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG51bWJlciBvYmplY3QgaXMgc2hvd24gYXMgdGhlCisgKiByZXN1bHQgb2YgaW52b2tpbmcgdGhlIDxjb2RlPnRvU3RyaW5nKCk8L2NvZGU+IG1ldGhvZCBvbiB0aGUgb2JqZWN0LgorICogVGhlIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGEgZGVjaW1hbCBudW1iZXIgaXMgbmVpdGhlciBkZWZpbmVkCisgKiBub3IgZXhwb3NlZCwgYW5kIGlzIG5vdCBwZXJtaXR0ZWQgdG8gYWZmZWN0IHRoZSByZXN1bHQgb2YgYW55CisgKiBvcGVyYXRpb24uCisgKiA8cD4KKyAqIFRoZSBmbG9hdGluZyBwb2ludCBhcml0aG1ldGljIHByb3ZpZGVkIGJ5IHRoaXMgY2xhc3MgaXMgZGVmaW5lZCBieQorICogdGhlIEFOU0kgWDMuMjc0LTE5OTYgc3RhbmRhcmQsIGFuZCBpcyBhbHNvIGRvY3VtZW50ZWQgYXQKKyAqIDxjb2RlPmh0dHA6Ly93d3cyLmh1cnNsZXkuaWJtLmNvbS9kZWNpbWFsPC9jb2RlPgorICogPGJyPjxpPltUaGlzIFVSTCB3aWxsIGNoYW5nZS5dPC9pPgorICoKKyAqIDxoMz5PcGVyYXRvciBtZXRob2RzPC9oMz4KKyAqIDxwPgorICogT3BlcmF0aW9ucyBvbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBudW1iZXJzIGFyZSBjb250cm9sbGVkIGJ5IGEKKyAqIHtAbGluayBNYXRoQ29udGV4dH0gb2JqZWN0LCB3aGljaCBwcm92aWRlcyB0aGUgY29udGV4dCAocHJlY2lzaW9uIGFuZAorICogb3RoZXIgaW5mb3JtYXRpb24pIGZvciB0aGUgb3BlcmF0aW9uLiBNZXRob2RzIHRoYXQgY2FuIHRha2UgYQorICogPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IHBhcmFtZXRlciBpbXBsZW1lbnQgdGhlIHN0YW5kYXJkIGFyaXRobWV0aWMKKyAqIG9wZXJhdG9ycyBmb3IgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb2JqZWN0cyBhbmQgYXJlIGtub3duIGFzCisgKiA8aT5vcGVyYXRvciBtZXRob2RzPC9pPi4gIFRoZSBkZWZhdWx0IHNldHRpbmdzIHByb3ZpZGVkIGJ5IHRoZQorICogY29uc3RhbnQge0BsaW5rIE1hdGhDb250ZXh0I0RFRkFVTFR9ICg8Y29kZT5kaWdpdHM9OSwKKyAqIGZvcm09U0NJRU5USUZJQywgbG9zdERpZ2l0cz1mYWxzZSwgcm91bmRpbmdNb2RlPVJPVU5EX0hBTEZfVVA8L2NvZGU+KQorICogcGVyZm9ybSBnZW5lcmFsLXB1cnBvc2UgZmxvYXRpbmcgcG9pbnQgYXJpdGhtZXRpYyB0byBuaW5lIGRpZ2l0cyBvZgorICogcHJlY2lzaW9uLiAgVGhlIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBwYXJhbWV0ZXIgbXVzdCBub3QgYmUKKyAqIDxjb2RlPm51bGw8L2NvZGU+LgorICogPHA+CisgKiBFYWNoIG9wZXJhdG9yIG1ldGhvZCBhbHNvIGhhcyBhIHZlcnNpb24gcHJvdmlkZWQgd2hpY2ggZG9lcworICogbm90IHRha2UgYSA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gcGFyYW1ldGVyLiAgRm9yIHRoaXMgdmVyc2lvbiBvZgorICogZWFjaCBtZXRob2QsIHRoZSBjb250ZXh0IHNldHRpbmdzIHVzZWQgYXJlIDxjb2RlPmRpZ2l0cz0wLAorICogZm9ybT1QTEFJTiwgbG9zdERpZ2l0cz1mYWxzZSwgcm91bmRpbmdNb2RlPVJPVU5EX0hBTEZfVVA8L2NvZGU+OworICogdGhlc2Ugc2V0dGluZ3MgcGVyZm9ybSBmaXhlZCBwb2ludCBhcml0aG1ldGljIHdpdGggdW5saW1pdGVkCisgKiBwcmVjaXNpb24sIGFzIGRlZmluZWQgZm9yIHRoZSBvcmlnaW5hbCBCaWdEZWNpbWFsIGNsYXNzIGluIEphdmEgMS4xCisgKiBhbmQgSmF2YSAxLjIuCisgKiA8cD4KKyAqIEZvciBtb25hZGljIG9wZXJhdG9ycywgb25seSB0aGUgb3B0aW9uYWwgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+CisgKiBwYXJhbWV0ZXIgaXMgcHJlc2VudDsgdGhlIG9wZXJhdGlvbiBhY3RzIHVwb24gdGhlIGN1cnJlbnQgb2JqZWN0LgorICogPHA+CisgKiBGb3IgZHlhZGljIG9wZXJhdG9ycywgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBwYXJhbWV0ZXIgaXMgYWx3YXlzCisgKiBwcmVzZW50OyBpdCBtdXN0IG5vdCBiZSA8Y29kZT5udWxsPC9jb2RlPi4KKyAqIFRoZSBvcGVyYXRpb24gYWN0cyB3aXRoIHRoZSBjdXJyZW50IG9iamVjdCBiZWluZyB0aGUgbGVmdC1oYW5kIG9wZXJhbmQKKyAqIGFuZCB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gcGFyYW1ldGVyIGJlaW5nIHRoZSByaWdodC1oYW5kIG9wZXJhbmQuCisgKiA8cD4KKyAqIEZvciBleGFtcGxlLCBhZGRpbmcgdHdvIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdHMgcmVmZXJyZWQgdG8KKyAqIGJ5IHRoZSBuYW1lcyA8Y29kZT5hd2FyZDwvY29kZT4gYW5kIDxjb2RlPmV4dHJhPC9jb2RlPiBjb3VsZCBiZQorICogd3JpdHRlbiBhcyBhbnkgb2Y6CisgKiA8cD48Y29kZT4KKyAqICAgICBhd2FyZC5hZGQoZXh0cmEpCisgKiA8YnI+YXdhcmQuYWRkKGV4dHJhLCBNYXRoQ29udGV4dC5ERUZBVUxUKQorICogPGJyPmF3YXJkLmFkZChleHRyYSwgYWNvbnRleHQpCisgKiA8L2NvZGU+CisgKiA8cD4KKyAqICh3aGVyZSA8Y29kZT5hY29udGV4dDwvY29kZT4gaXMgYSA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gb2JqZWN0KSwKKyAqIHdoaWNoIHdvdWxkIHJldHVybiBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdCB3aG9zZSB2YWx1ZSBpcworICogdGhlIHJlc3VsdCBvZiBhZGRpbmcgPGNvZGU+YXdhcmQ8L2NvZGU+IGFuZCA8Y29kZT5leHRyYTwvY29kZT4gdW5kZXIKKyAqIHRoZSBhcHByb3ByaWF0ZSBjb250ZXh0IHNldHRpbmdzLgorICogPHA+CisgKiBXaGVuIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb3BlcmF0b3IgbWV0aG9kIGlzIHVzZWQsIGEgc2V0IG9mCisgKiBydWxlcyBkZWZpbmUgd2hhdCB0aGUgcmVzdWx0IHdpbGwgYmUgKGFuZCwgYnkgaW1wbGljYXRpb24sIGhvdyB0aGUKKyAqIHJlc3VsdCB3b3VsZCBiZSByZXByZXNlbnRlZCBhcyBhIGNoYXJhY3RlciBzdHJpbmcpLgorICogVGhlc2UgcnVsZXMgYXJlIGRlZmluZWQgaW4gdGhlIEJpZ0RlY2ltYWwgYXJpdGhtZXRpYyBkb2N1bWVudGF0aW9uCisgKiAoc2VlIHRoZSBVUkwgYWJvdmUpLCBidXQgaW4gc3VtbWFyeToKKyAqIDx1bD4KKyAqIDxsaT5SZXN1bHRzIGFyZSBub3JtYWxseSBjYWxjdWxhdGVkIHdpdGggdXAgdG8gc29tZSBtYXhpbXVtIG51bWJlciBvZgorICogc2lnbmlmaWNhbnQgZGlnaXRzLgorICogRm9yIGV4YW1wbGUsIGlmIHRoZSA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gcGFyYW1ldGVyIGZvciBhbiBvcGVyYXRpb24KKyAqIHdlcmUgPGNvZGU+TWF0aENvbnRleHQuREVGQVVMVDwvY29kZT4gdGhlbiB0aGUgcmVzdWx0IHdvdWxkIGJlCisgKiByb3VuZGVkIHRvIDkgZGlnaXRzOyB0aGUgZGl2aXNpb24gb2YgMiBieSAzIHdvdWxkIHRoZW4gcmVzdWx0IGluCisgKiAwLjY2NjY2NjY2Ny4KKyAqIDxicj4KKyAqIFlvdSBjYW4gY2hhbmdlIHRoZSBkZWZhdWx0IG9mIDkgc2lnbmlmaWNhbnQgZGlnaXRzIGJ5IHByb3ZpZGluZyB0aGUKKyAqIG1ldGhvZCB3aXRoIGEgc3VpdGFibGUgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IG9iamVjdC4gVGhpcyBsZXRzIHlvdQorICogY2FsY3VsYXRlIHVzaW5nIGFzIG1hbnkgZGlnaXRzIGFzIHlvdSBuZWVkIC0tIHRob3VzYW5kcywgaWYgbmVjZXNzYXJ5LgorICogRml4ZWQgcG9pbnQgKHNjYWxlZCkgYXJpdGhtZXRpYyBpcyBpbmRpY2F0ZWQgYnkgdXNpbmcgYQorICogPGNvZGU+ZGlnaXRzPC9jb2RlPiBzZXR0aW5nIG9mIDAgKG9yIG9taXR0aW5nIHRoZQorICogPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IHBhcmFtZXRlcikuCisgKiA8YnI+CisgKiBTaW1pbGFybHksIHlvdSBjYW4gY2hhbmdlIHRoZSBhbGdvcml0aG0gdXNlZCBmb3Igcm91bmRpbmcgZnJvbSB0aGUKKyAqIGRlZmF1bHQgImNsYXNzaWMiIGFsZ29yaXRobS4KKyAqIDxsaT4KKyAqIEluIHN0YW5kYXJkIGFyaXRobWV0aWMgKHRoYXQgaXMsIHdoZW4gdGhlIDxjb2RlPmZvcm08L2NvZGU+IHNldHRpbmcKKyAqIGlzIG5vdCA8Y29kZT5QTEFJTjwvY29kZT4pLCBhIHplcm8gcmVzdWx0IGlzIGFsd2F5cyBleHByZXNzZWQgYXMgdGhlCisgKiBzaW5nbGUgZGlnaXQgPGNvZGU+JzAnPC9jb2RlPiAodGhhdCBpcywgd2l0aCBubyBzaWduLCBkZWNpbWFsIHBvaW50LAorICogb3IgZXhwb25lbnQgcGFydCkuCisgKiA8bGk+CisgKiBFeGNlcHQgZm9yIHRoZSBkaXZpc2lvbiBhbmQgcG93ZXIgb3BlcmF0b3JzIGluIHN0YW5kYXJkIGFyaXRobWV0aWMsCisgKiB0cmFpbGluZyB6ZXJvcyBhcmUgcHJlc2VydmVkICh0aGlzIGlzIGluIGNvbnRyYXN0IHRvIGJpbmFyeSBmbG9hdGluZworICogcG9pbnQgb3BlcmF0aW9ucyBhbmQgbW9zdCBlbGVjdHJvbmljIGNhbGN1bGF0b3JzLCB3aGljaCBsb3NlIHRoZQorICogaW5mb3JtYXRpb24gYWJvdXQgdHJhaWxpbmcgemVyb3MgaW4gdGhlIGZyYWN0aW9uYWwgcGFydCBvZiByZXN1bHRzKS4KKyAqIDxicj4KKyAqIFNvLCBmb3IgZXhhbXBsZToKKyAqIDxwPjxjb2RlPgorICogICAgIG5ldyBCaWdEZWNpbWFsKCIyLjQwIikuYWRkKCAgICAgbmV3IEJpZ0RlY2ltYWwoIjIiKSkgICAgICA9Jmd0OyAiNC40MCIKKyAqIDxicj5uZXcgQmlnRGVjaW1hbCgiMi40MCIpLnN1YnRyYWN0KG5ldyBCaWdEZWNpbWFsKCIyIikpICAgICAgPSZndDsgIjAuNDAiCisgKiA8YnI+bmV3IEJpZ0RlY2ltYWwoIjIuNDAiKS5tdWx0aXBseShuZXcgQmlnRGVjaW1hbCgiMiIpKSAgICAgID0mZ3Q7ICI0LjgwIgorICogPGJyPm5ldyBCaWdEZWNpbWFsKCIyLjQwIikuZGl2aWRlKCAgbmV3IEJpZ0RlY2ltYWwoIjIiKSwgZGVmKSA9Jmd0OyAiMS4yIgorICogPC9jb2RlPgorICogPHA+d2hlcmUgdGhlIHZhbHVlIG9uIHRoZSByaWdodCBvZiB0aGUgPGNvZGU+PSZndDs8L2NvZGU+IHdvdWxkIGJlIHRoZQorICogcmVzdWx0IG9mIHRoZSBvcGVyYXRpb24sIGV4cHJlc3NlZCBhcyBhIDxjb2RlPlN0cmluZzwvY29kZT4sIGFuZAorICogPGNvZGU+ZGVmPC9jb2RlPiAoaW4gdGhpcyBhbmQgZm9sbG93aW5nIGV4YW1wbGVzKSByZWZlcnMgdG8KKyAqIDxjb2RlPk1hdGhDb250ZXh0LkRFRkFVTFQ8L2NvZGU+KS4KKyAqIFRoaXMgcHJlc2VydmF0aW9uIG9mIHRyYWlsaW5nIHplcm9zIGlzIGRlc2lyYWJsZSBmb3IgbW9zdAorICogY2FsY3VsYXRpb25zIChpbmNsdWRpbmcgZmluYW5jaWFsIGNhbGN1bGF0aW9ucykuCisgKiBJZiBuZWNlc3NhcnksIHRyYWlsaW5nIHplcm9zIG1heSBiZSBlYXNpbHkgcmVtb3ZlZCB1c2luZyBkaXZpc2lvbiBieSAxLgorICogPGxpPgorICogSW4gc3RhbmRhcmQgYXJpdGhtZXRpYywgZXhwb25lbnRpYWwgZm9ybSBpcyB1c2VkIGZvciBhIHJlc3VsdAorICogZGVwZW5kaW5nIG9uIGl0cyB2YWx1ZSBhbmQgdGhlIGN1cnJlbnQgc2V0dGluZyBvZiA8Y29kZT5kaWdpdHM8L2NvZGU+CisgKiAodGhlIGRlZmF1bHQgaXMgOSBkaWdpdHMpLgorICogSWYgdGhlIG51bWJlciBvZiBwbGFjZXMgbmVlZGVkIGJlZm9yZSB0aGUgZGVjaW1hbCBwb2ludCBleGNlZWRzIHRoZQorICogPGNvZGU+ZGlnaXRzPC9jb2RlPiBzZXR0aW5nLCBvciB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIG51bWJlciBpcworICogbGVzcyB0aGFuIDxjb2RlPjAuMDAwMDAxPC9jb2RlPiwgdGhlbiB0aGUgbnVtYmVyIHdpbGwgYmUgZXhwcmVzc2VkIGluCisgKiBleHBvbmVudGlhbCBub3RhdGlvbjsgdGh1cworICogPHA+PGNvZGU+CisgKiAgIG5ldyBCaWdEZWNpbWFsKCIxZSs2IikubXVsdGlwbHkobmV3IEJpZ0RlY2ltYWwoIjFlKzYiKSwgZGVmKQorICogPC9jb2RlPgorICogPHA+cmVzdWx0cyBpbiA8Y29kZT4xRSsxMjwvY29kZT4gaW5zdGVhZCBvZgorICogPGNvZGU+MTAwMDAwMDAwMDAwMDwvY29kZT4sIGFuZAorICogPHA+PGNvZGU+CisgKiAgIG5ldyBCaWdEZWNpbWFsKCIxIikuZGl2aWRlKG5ldyBCaWdEZWNpbWFsKCIzRSsxMCIpLCBkZWYpCisgKiA8L2NvZGU+CisgKiA8cD5yZXN1bHRzIGluIDxjb2RlPjMuMzMzMzMzMzNFLTExPC9jb2RlPiBpbnN0ZWFkIG9mCisgKiA8Y29kZT4wLjAwMDAwMDAwMDAzMzMzMzMzMzM8L2NvZGU+LgorICogPHA+CisgKiBUaGUgZm9ybSBvZiB0aGUgZXhwb25lbnRpYWwgbm90YXRpb24gKHNjaWVudGlmaWMgb3IgZW5naW5lZXJpbmcpIGlzCisgKiBkZXRlcm1pbmVkIGJ5IHRoZSA8Y29kZT5mb3JtPC9jb2RlPiBzZXR0aW5nLgorICogPGV1bD4KKyAqIDxwPgorICogVGhlIG5hbWVzIG9mIG1ldGhvZHMgaW4gdGhpcyBjbGFzcyBmb2xsb3cgdGhlIGNvbnZlbnRpb25zIGVzdGFibGlzaGVkCisgKiBieSA8Y29kZT5qYXZhLmxhbmcuTnVtYmVyPC9jb2RlPiwgPGNvZGU+amF2YS5tYXRoLkJpZ0ludGVnZXI8L2NvZGU+LAorICogYW5kIDxjb2RlPmphdmEubWF0aC5CaWdEZWNpbWFsPC9jb2RlPiBpbiBKYXZhIDEuMSBhbmQgSmF2YSAxLjIuCisgKgorICogQHNlZSAgICAgTWF0aENvbnRleHQKKyAqIEB2ZXJzaW9uIDEuMDggMjAwMC4wNi4xOAorICogQGF1dGhvciAgTWlrZSBDb3dsaXNoYXcKKyAqLworCitwdWJsaWMgY2xhc3MgQmlnRGVjaW1hbCBleHRlbmRzIGphdmEubGFuZy5OdW1iZXIgaW1wbGVtZW50cyBqYXZhLmlvLlNlcmlhbGl6YWJsZSxqYXZhLmxhbmcuQ29tcGFyYWJsZXsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nICQwPSJCaWdEZWNpbWFsLm5yeCI7CisgCisgCisgCisgLyogLS0tLS0gQ29uc3RhbnRzIC0tLS0tICovCisgLyogcHJvcGVydGllcyBjb25zdGFudCBwdWJsaWMgKi8gLy8gdXNlZnVsIHRvIG90aGVycworIC8qKgorICAqIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBjb25zdGFudCAiMCIuCisgICoKKyAgKiBAc2VlICNPTkUKKyAgKiBAc2VlICNURU4KKyAgKiBAc2luY2UgSUJNIEpESyAxLjEuOAorICAqLworIHB1YmxpYyBzdGF0aWMgZmluYWwgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgWkVSTz1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoKGxvbmcpMCk7IC8vIHVzZSBsb25nIGFzIHdlIHdhbnQgdGhlIGludCBjb25zdHJ1Y3RvcgorIC8vIC4uIHRvIGJlIGFibGUgdG8gdXNlIHRoaXMsIGZvciBzcGVlZAorIAorIC8qKgorICAqIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBjb25zdGFudCAiMSIuCisgICoKKyAgKiBAc2VlICNURU4KKyAgKiBAc2VlICNaRVJPCisgICogQHNpbmNlIElCTSBKREsgMS4xLjgKKyAgKi8KKyBwdWJsaWMgc3RhdGljIGZpbmFsIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIE9ORT1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoKGxvbmcpMSk7IC8vIHVzZSBsb25nIGFzIHdlIHdhbnQgdGhlIGludCBjb25zdHJ1Y3RvcgorIC8vIC4uIHRvIGJlIGFibGUgdG8gdXNlIHRoaXMsIGZvciBzcGVlZAorIAorIC8qKgorICAqIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBjb25zdGFudCAiMTAiLgorICAqCisgICogQHNlZSAjT05FCisgICogQHNlZSAjWkVSTworICAqIEBzaW5jZSBJQk0gSkRLIDEuMS44CisgICovCisgcHVibGljIHN0YXRpYyBmaW5hbCBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBURU49bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDEwKTsKKyAKKyAvLyB0aGUgcm91bmRpbmcgbW9kZXMgKGNvcGllZCBoZXJlIGZvciB1cHdhcmRzIGNvbXBhdGliaWxpdHkpCisgLyoqCisgICogUm91bmRpbmcgbW9kZSB0byByb3VuZCB0byBhIG1vcmUgcG9zaXRpdmUgbnVtYmVyLgorICAqIFNlZSB7QExpbmsgTWF0aENvbnRleHQjUk9VTkRfQ0VJTElOR30uCisgICovCisgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUk9VTkRfQ0VJTElORz1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfQ0VJTElORzsKKyAKKyAvKioKKyAgKiBSb3VuZGluZyBtb2RlIHRvIHJvdW5kIHRvd2FyZHMgemVyby4KKyAgKiBTZWUge0BMaW5rIE1hdGhDb250ZXh0I1JPVU5EX0RPV059LgorICAqLworIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJPVU5EX0RPV049Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0RPV047CisgCisgLyoqCisgICogUm91bmRpbmcgbW9kZSB0byByb3VuZCB0byBhIG1vcmUgbmVnYXRpdmUgbnVtYmVyLgorICAqIFNlZSB7QExpbmsgTWF0aENvbnRleHQjUk9VTkRfRkxPT1J9LgorICAqLworIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJPVU5EX0ZMT09SPWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUjsKKyAKKyAvKioKKyAgKiBSb3VuZGluZyBtb2RlIHRvIHJvdW5kIHRvIG5lYXJlc3QgbmVpZ2hib3IsIHdoZXJlIGFuIGVxdWlkaXN0YW50CisgICogdmFsdWUgaXMgcm91bmRlZCBkb3duLgorICAqIFNlZSB7QExpbmsgTWF0aENvbnRleHQjUk9VTkRfSEFMRl9ET1dOfS4KKyAgKi8KKyBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBST1VORF9IQUxGX0RPV049Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTjsKKyAKKyAvKioKKyAgKiBSb3VuZGluZyBtb2RlIHRvIHJvdW5kIHRvIG5lYXJlc3QgbmVpZ2hib3IsIHdoZXJlIGFuIGVxdWlkaXN0YW50CisgICogdmFsdWUgaXMgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBldmVuIG5laWdoYm9yLgorICAqIFNlZSB7QExpbmsgTWF0aENvbnRleHQjUk9VTkRfSEFMRl9FVkVOfS4KKyAgKi8KKyBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBST1VORF9IQUxGX0VWRU49Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTjsKKyAKKyAvKioKKyAgKiBSb3VuZGluZyBtb2RlIHRvIHJvdW5kIHRvIG5lYXJlc3QgbmVpZ2hib3IsIHdoZXJlIGFuIGVxdWlkaXN0YW50CisgICogdmFsdWUgaXMgcm91bmRlZCB1cC4KKyAgKiBTZWUge0BMaW5rIE1hdGhDb250ZXh0I1JPVU5EX0hBTEZfVVB9LgorICAqLworIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJPVU5EX0hBTEZfVVA9Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVA7CisgCisgLyoqCisgICogUm91bmRpbmcgbW9kZSB0byBhc3NlcnQgdGhhdCBubyByb3VuZGluZyBpcyBuZWNlc3NhcnkuCisgICogU2VlIHtATGluayBNYXRoQ29udGV4dCNST1VORF9VTk5FQ0VTU0FSWX0uCisgICovCisgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUk9VTkRfVU5ORUNFU1NBUlk9Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZOworIAorIC8qKgorICAqIFJvdW5kaW5nIG1vZGUgdG8gcm91bmQgYXdheSBmcm9tIHplcm8uCisgICogU2VlIHtATGluayBNYXRoQ29udGV4dCNST1VORF9VUH0uCisgICovCisgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUk9VTkRfVVA9Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VQOworIAorIC8qIHByb3BlcnRpZXMgY29uc3RhbnQgcHJpdmF0ZSAqLyAvLyBsb2NhbHMKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIGlzcG9zPTE7IC8vIGluZDogaW5kaWNhdGVzIHBvc2l0aXZlIChtdXN0IGJlIDEpCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBpc3plcm89MDsgLy8gaW5kOiBpbmRpY2F0ZXMgemVybyAgICAgKG11c3QgYmUgMCkKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIGlzbmVnPS0xOyAvLyBpbmQ6IGluZGljYXRlcyBuZWdhdGl2ZSAobXVzdCBiZSAtMSkKKyAvLyBbbGF0ZXIgY291bGQgYWRkIE5hTiwgKy8tIGluZmluaXR5LCBoZXJlXQorIAorIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNaW5FeHA9LTk5OTk5OTk5OTsgLy8gbWluaW11bSBleHBvbmVudCBhbGxvd2VkCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1heEV4cD05OTk5OTk5OTk7IC8vIG1heGltdW0gZXhwb25lbnQgYWxsb3dlZAorIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNaW5Bcmc9LTk5OTk5OTk5OTsgLy8gbWluaW11bSBhcmd1bWVudCBpbnRlZ2VyCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1heEFyZz05OTk5OTk5OTk7IC8vIG1heGltdW0gYXJndW1lbnQgaW50ZWdlcgorIAorIHByaXZhdGUgc3RhdGljIGZpbmFsIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBwbGFpbk1DPW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUExBSU4pOyAvLyBjb250ZXh0IGZvciBwbGFpbiB1bmxpbWl0ZWQgbWF0aAorIAorIC8qIHByb3BlcnRpZXMgY29uc3RhbnQgcHJpdmF0ZSB1bnVzZWQgKi8gLy8gcHJlc2VudCBidXQgbm90IHJlZmVyZW5jZWQKKyAKKyAvLyBTZXJpYWxpemF0aW9uIHZlcnNpb24KKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQ9ODI0NTM1NTgwNDk3NDE5ODgzMkw7CisgCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBjb3B5cmlnaHQ9IiBDb3B5cmlnaHQgKGMpIElCTSBDb3Jwb3JhdGlvbiAxOTk2LCAyMDAwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIjsKKyAKKyAvKiBwcm9wZXJ0aWVzIHN0YXRpYyBwcml2YXRlICovCisgLy8gUHJlY2FsY3VsYXRlZCBjb25zdGFudCBhcnJheXMgKHVzZWQgYnkgYnl0ZWFkZHN1YikKKyBwcml2YXRlIHN0YXRpYyBieXRlIGJ5dGVjYXJbXT1uZXcgYnl0ZVsoOTArOTkpKzFdOyAvLyBjYXJyeS9ib3Jyb3cgYXJyYXkKKyBwcml2YXRlIHN0YXRpYyBieXRlIGJ5dGVkaWdbXT1kaWdpbml0KCk7IC8vIG5leHQgZGlnaXQgYXJyYXkKKyAKKyAvKiAtLS0tLSBJbnN0YW5jZSBwcm9wZXJ0aWVzIFthbGwgcHJpdmF0ZSBhbmQgaW1tdXRhYmxlXSAtLS0tLSAqLworIC8qIHByb3BlcnRpZXMgcHJpdmF0ZSAqLworIAorIC8qKgorICAqIFRoZSBpbmRpY2F0b3IuIFRoaXMgbWF5IHRha2UgdGhlIHZhbHVlczoKKyAgKiA8dWw+CisgICogPGxpPmlzcG9zICAtLSB0aGUgbnVtYmVyIGlzIHBvc2l0aXZlCisgICogPGxpPmlzemVybyAtLSB0aGUgbnVtYmVyIGlzIHplcm8KKyAgKiA8bGk+aXNuZWcgIC0tIHRoZSBudW1iZXIgaXMgbmVnYXRpdmUKKyAgKiA8L3VsPgorICAqCisgICogQHNlcmlhbAorICAqLworIHByaXZhdGUgYnl0ZSBpbmQ7IC8vIGFzc3VtZWQgdW5kZWZpbmVkCisgLy8gTm90ZTogc29tZSBjb2RlIGJlbG93IGFzc3VtZXMgSU5EID0gU2lnbiBbLTEsIDAsIDFdLCBhdCBwcmVzZW50LgorIC8vIFdlIG9ubHkgbmVlZCB0d28gYml0cyBmb3IgdGhpcywgYnV0IHVzZSBhIGJ5dGUgW2Fsc28gcGVybWl0cworIC8vIHNtb290aCBmdXR1cmUgZXh0ZW5zaW9uXS4KKyAKKyAvKioKKyAgKiBUaGUgZm9ybWF0dGluZyBzdHlsZS4gVGhpcyBtYXkgdGFrZSB0aGUgdmFsdWVzOgorICAqIDx1bD4KKyAgKiA8bGk+TWF0aENvbnRleHQuUExBSU4gICAgICAgIC0tIG5vIGV4cG9uZW50IG5lZWRlZAorICAqIDxsaT5NYXRoQ29udGV4dC5TQ0lFTlRJRklDICAgLS0gc2NpZW50aWZpYyBub3RhdGlvbiByZXF1aXJlZAorICAqIDxsaT5NYXRoQ29udGV4dC5FTkdJTkVFUklORyAgLS0gZW5naW5lZXJpbmcgbm90YXRpb24gcmVxdWlyZWQKKyAgKiA8L3VsPgorICAqIDxwPgorICAqIFRoaXMgcHJvcGVydHkgaXMgYW4gb3B0aW1pemF0aW9uOyBpdCBhbGxvd3MgdXMgdG8gZGVmZXIgbnVtYmVyCisgICogbGF5b3V0IHVudGlsIGl0IGlzIGFjdHVhbGx5IG5lZWRlZCBhcyBhIHN0cmluZywgaGVuY2UgYXZvaWRpbmcKKyAgKiB1bm5lY2Vzc2FyeSBmb3JtYXR0aW5nLgorICAqCisgICogQHNlcmlhbAorICAqLworIHByaXZhdGUgYnl0ZSBmb3JtPShieXRlKWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTjsgLy8gYXNzdW1lZCBQTEFJTgorIC8vIFdlIG9ubHkgbmVlZCB0d28gYml0cyBmb3IgdGhpcywgYXQgcHJlc2VudCwgYnV0IHVzZSBhIGJ5dGUKKyAvLyBbYWdhaW4sIHRvIGFsbG93IGZvciBzbW9vdGggZnV0dXJlIGV4dGVuc2lvbl0KKyAKKyAvKioKKyAgKiBUaGUgdmFsdWUgb2YgdGhlIG1hbnRpc3NhLgorICAqIDxwPgorICAqIE9uY2UgY29uc3RydWN0ZWQsIHRoaXMgbWF5IGJlY29tZSBzaGFyZWQgYmV0d2VlbiBzZXZlcmFsIEJpZ0RlY2ltYWwKKyAgKiBvYmplY3RzLCBzbyBtdXN0IG5vdCBiZSBhbHRlcmVkLgorICAqIDxwPgorICAqIEZvciBlZmZpY2llbmN5IChzcGVlZCksIHRoaXMgaXMgYSBieXRlIGFycmF5LCB3aXRoIGVhY2ggYnl0ZQorICAqIHRha2luZyBhIHZhbHVlIG9mIDAgLT4gOS4KKyAgKiA8cD4KKyAgKiBJZiB0aGUgZmlyc3QgYnl0ZSBpcyAwIHRoZW4gdGhlIHZhbHVlIG9mIHRoZSBudW1iZXIgaXMgemVybyAoYW5kCisgICogbWFudC5sZW5ndGg9MSwgZXhjZXB0IHdoZW4gY29uc3RydWN0ZWQgZnJvbSBhIHBsYWluIG51bWJlciwgZm9yCisgICogZXhhbXBsZSwgMC4wMDApLgorICAqCisgICogQHNlcmlhbAorICAqLworIHByaXZhdGUgYnl0ZSBtYW50W107IC8vIGFzc3VtZWQgbnVsbAorIAorIC8qKgorICAqIFRoZSBleHBvbmVudC4KKyAgKiA8cD4KKyAgKiBGb3IgZml4ZWQgcG9pbnQgYXJpdGhtZXRpYywgc2NhbGUgaXMgPGNvZGU+LWV4cDwvY29kZT4sIGFuZCBjYW4KKyAgKiBhcHBseSB0byB6ZXJvLgorICAqCisgICogTm90ZSB0aGF0IHRoaXMgcHJvcGVydHkgY2FuIGhhdmUgYSB2YWx1ZSBsZXNzIHRoYW4gTWluRXhwIHdoZW4KKyAgKiB0aGUgbWFudGlzc2EgaGFzIG1vcmUgdGhhbiBvbmUgZGlnaXQuCisgICoKKyAgKiBAc2VyaWFsCisgICovCisgcHJpdmF0ZSBpbnQgZXhwOworIC8vIGFzc3VtZWQgMAorIAorIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAvKiBDb25zdHJ1Y3RvcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKgorICAqIENvbnN0cnVjdHMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBvYmplY3QgZnJvbSBhCisgICogPGNvZGU+amF2YS5tYXRoLkJpZ0RlY2ltYWw8L2NvZGU+LgorICAqIDxwPgorICAqIENvbnN0cnVjdHMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBhcyB0aG91Z2ggdGhlIHBhcmFtZXRlciBoYWQKKyAgKiBiZWVuIHJlcHJlc2VudGVkIGFzIGEgPGNvZGU+U3RyaW5nPC9jb2RlPiAodXNpbmcgaXRzCisgICogPGNvZGU+dG9TdHJpbmc8L2NvZGU+IG1ldGhvZCkgYW5kIHRoZQorICAqIHtAbGluayAjQmlnRGVjaW1hbChqYXZhLmxhbmcuU3RyaW5nKX0gY29uc3RydWN0b3IgaGFkIHRoZW4gYmVlbgorICAqIHVzZWQuCisgICogVGhlIHBhcmFtZXRlciBtdXN0IG5vdCBiZSA8Y29kZT5udWxsPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiA8aT4oTm90ZTogdGhpcyBjb25zdHJ1Y3RvciBpcyBwcm92aWRlZCBvbmx5IGluIHRoZQorICAqIDxjb2RlPmNvbS5pYm0ubWF0aDwvY29kZT4gdmVyc2lvbiBvZiB0aGUgQmlnRGVjaW1hbCBjbGFzcy4KKyAgKiBJdCB3b3VsZCBub3QgYmUgcHJlc2VudCBpbiBhIDxjb2RlPmphdmEubWF0aDwvY29kZT4gdmVyc2lvbi4pPC9pPgorICAqCisgICogQHBhcmFtIGJkIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB0byBiZSB0cmFuc2xhdGVkLgorICAqIEBzaW5jZSBJQk0gSkRLIDEuMS44CisgICovCisgCisgcHVibGljIEJpZ0RlY2ltYWwoamF2YS5tYXRoLkJpZ0RlY2ltYWwgYmQpeworICB0aGlzKGJkLnRvU3RyaW5nKCkpOworICByZXR1cm47fQorCisgLyoqCisgICogQ29uc3RydWN0cyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdCBmcm9tIGEKKyAgKiA8Y29kZT5CaWdJbnRlZ2VyPC9jb2RlPiwgd2l0aCBzY2FsZSAwLgorICAqIDxwPgorICAqIENvbnN0cnVjdHMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aGljaCBpcyB0aGUgZXhhY3QgZGVjaW1hbAorICAqIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA8Y29kZT5CaWdJbnRlZ2VyPC9jb2RlPiwgd2l0aCBhIHNjYWxlIG9mCisgICogemVyby4KKyAgKiBUaGUgdmFsdWUgb2YgdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGlzIGlkZW50aWNhbCB0byB0aGUgdmFsdWUKKyAgKiBvZiB0aGUgPGNvZGU+QmlnSW50ZWdlcjwvY29kZT4uCisgICogVGhlIHBhcmFtZXRlciBtdXN0IG5vdCBiZSA8Y29kZT5udWxsPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2lsbCBjb250YWluIG9ubHkgZGVjaW1hbCBkaWdpdHMsCisgICogcHJlZml4ZWQgd2l0aCBhIGxlYWRpbmcgbWludXMgc2lnbiAoaHlwaGVuKSBpZiB0aGUKKyAgKiA8Y29kZT5CaWdJbnRlZ2VyPC9jb2RlPiBpcyBuZWdhdGl2ZS4gIEEgbGVhZGluZyB6ZXJvIHdpbGwgYmUKKyAgKiBwcmVzZW50IG9ubHkgaWYgdGhlIDxjb2RlPkJpZ0ludGVnZXI8L2NvZGU+IGlzIHplcm8uCisgICoKKyAgKiBAcGFyYW0gYmkgVGhlIDxjb2RlPkJpZ0ludGVnZXI8L2NvZGU+IHRvIGJlIGNvbnZlcnRlZC4KKyAgKi8KKyAKKyBwdWJsaWMgQmlnRGVjaW1hbChqYXZhLm1hdGguQmlnSW50ZWdlciBiaSl7CisgIHRoaXMoYmkudG9TdHJpbmcoMTApKTsKKyAgcmV0dXJuO30KKyAvLyBleHAgcmVtYWlucyAwCisgCisgLyoqCisgICogQ29uc3RydWN0cyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdCBmcm9tIGEKKyAgKiA8Y29kZT5CaWdJbnRlZ2VyPC9jb2RlPiBhbmQgYSBzY2FsZS4KKyAgKiA8cD4KKyAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hpY2ggaXMgdGhlIGV4YWN0IGRlY2ltYWwKKyAgKiByZXByZXNlbnRhdGlvbiBvZiB0aGUgPGNvZGU+QmlnSW50ZWdlcjwvY29kZT4sIHNjYWxlZCBieSB0aGUKKyAgKiBzZWNvbmQgcGFyYW1ldGVyLCB3aGljaCBtYXkgbm90IGJlIG5lZ2F0aXZlLgorICAqIFRoZSB2YWx1ZSBvZiB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gaXMgdGhlCisgICogPGNvZGU+QmlnSW50ZWdlcjwvY29kZT4gZGl2aWRlZCBieSB0ZW4gdG8gdGhlIHBvd2VyIG9mIHRoZSBzY2FsZS4KKyAgKiBUaGUgPGNvZGU+QmlnSW50ZWdlcjwvY29kZT4gcGFyYW1ldGVyIG11c3Qgbm90IGJlCisgICogPGNvZGU+bnVsbDwvY29kZT4uCisgICogPHA+CisgICogVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdpbGwgY29udGFpbiBvbmx5IGRlY2ltYWwgZGlnaXRzLCAod2l0aAorICAqIGFuIGVtYmVkZGVkIGRlY2ltYWwgcG9pbnQgZm9sbG93ZWQgYnkgPGNvZGU+c2NhbGU8L2NvZGU+IGRlY2ltYWwKKyAgKiBkaWdpdHMgaWYgdGhlIHNjYWxlIGlzIHBvc2l0aXZlKSwgcHJlZml4ZWQgd2l0aCBhIGxlYWRpbmcgbWludXMKKyAgKiBzaWduIChoeXBoZW4pIGlmIHRoZSA8Y29kZT5CaWdJbnRlZ2VyPC9jb2RlPiBpcyBuZWdhdGl2ZS4gIEEKKyAgKiBsZWFkaW5nIHplcm8gd2lsbCBiZSBwcmVzZW50IG9ubHkgaWYgdGhlIDxjb2RlPkJpZ0ludGVnZXI8L2NvZGU+IGlzCisgICogemVyby4KKyAgKgorICAqIEBwYXJhbSAgYmkgICAgVGhlIDxjb2RlPkJpZ0ludGVnZXI8L2NvZGU+IHRvIGJlIGNvbnZlcnRlZC4KKyAgKiBAcGFyYW0gIHNjYWxlIFRoZSA8Y29kZT5pbnQ8L2NvZGU+IHNwZWNpZnlpbmcgdGhlIHNjYWxlLgorICAqIEB0aHJvd3MgTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGlmIHRoZSBzY2FsZSBpcyBuZWdhdGl2ZS4KKyAgKi8KKyAKKyBwdWJsaWMgQmlnRGVjaW1hbChqYXZhLm1hdGguQmlnSW50ZWdlciBiaSxpbnQgc2NhbGUpeworICB0aGlzKGJpLnRvU3RyaW5nKDEwKSk7CisgIGlmIChzY2FsZTwwKSAKKyAgIHRocm93IG5ldyBqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uKCJOZWdhdGl2ZSBzY2FsZToiKyIgIitzY2FsZSk7CisgIGV4cD0oaW50KS1zY2FsZTsgLy8gZXhwb25lbnQgaXMgLXNjYWxlCisgIHJldHVybjt9CisKKyAvKioKKyAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb2JqZWN0IGZyb20gYW4gYXJyYXkgb2YgY2hhcmFjdGVycy4KKyAgKiA8cD4KKyAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gYXMgdGhvdWdoIGEKKyAgKiA8Y29kZT5TdHJpbmc8L2NvZGU+IGhhZCBiZWVuIGNvbnN0cnVjdGVkIGZyb20gdGhlIGNoYXJhY3RlciBhcnJheQorICAqIGFuZCB0aGUge0BsaW5rICNCaWdEZWNpbWFsKGphdmEubGFuZy5TdHJpbmcpfSBjb25zdHJ1Y3RvciBoYWQgdGhlbgorICAqIGJlZW4gdXNlZC4gVGhlIHBhcmFtZXRlciBtdXN0IG5vdCBiZSA8Y29kZT5udWxsPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBVc2luZyB0aGlzIGNvbnN0cnVjdG9yIGlzIGZhc3RlciB0aGFuIHVzaW5nIHRoZQorICAqIDxjb2RlPkJpZ0RlY2ltYWwoU3RyaW5nKTwvY29kZT4gY29uc3RydWN0b3IgaWYgdGhlIHN0cmluZyBpcworICAqIGFscmVhZHkgYXZhaWxhYmxlIGluIGNoYXJhY3RlciBhcnJheSBmb3JtLgorICAqCisgICogQHBhcmFtIGluY2hhcnMgVGhlIDxjb2RlPmNoYXJbXTwvY29kZT4gYXJyYXkgY29udGFpbmluZyB0aGUgbnVtYmVyCisgICogICAgICAgICAgICAgICAgdG8gYmUgY29udmVydGVkLgorICAqIEB0aHJvd3MgTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGlmIHRoZSBwYXJhbWV0ZXIgaXMgbm90IGEgdmFsaWQKKyAgKiAgICAgICAgICAgICAgICBudW1iZXIuCisgICogQHNpbmNlIElCTSBKREsgMS4xLjgKKyAgKi8KKyAKKyBwdWJsaWMgQmlnRGVjaW1hbChjaGFyIGluY2hhcnNbXSl7CisgIHRoaXMoaW5jaGFycywwLGluY2hhcnMubGVuZ3RoKTsKKyAgcmV0dXJuO30KKworIC8qKgorICAqIENvbnN0cnVjdHMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBvYmplY3QgZnJvbSBhbiBhcnJheSBvZiBjaGFyYWN0ZXJzLgorICAqIDxwPgorICAqIENvbnN0cnVjdHMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBhcyB0aG91Z2ggYQorICAqIDxjb2RlPlN0cmluZzwvY29kZT4gaGFkIGJlZW4gY29uc3RydWN0ZWQgZnJvbSB0aGUgY2hhcmFjdGVyIGFycmF5CisgICogKG9yIGEgc3ViYXJyYXkgb2YgdGhhdCBhcnJheSkgYW5kIHRoZQorICAqIHtAbGluayAjQmlnRGVjaW1hbChqYXZhLmxhbmcuU3RyaW5nKX0gY29uc3RydWN0b3IgaGFkIHRoZW4gYmVlbgorICAqIHVzZWQuIFRoZSBmaXJzdCBwYXJhbWV0ZXIgbXVzdCBub3QgYmUgPGNvZGU+bnVsbDwvY29kZT4sIGFuZCB0aGUKKyAgKiBzdWJhcnJheSBtdXN0IGJlIHdob2xseSBjb250YWluZWQgd2l0aGluIGl0LgorICAqIDxwPgorICAqIFVzaW5nIHRoaXMgY29uc3RydWN0b3IgaXMgZmFzdGVyIHRoYW4gdXNpbmcgdGhlCisgICogPGNvZGU+QmlnRGVjaW1hbChTdHJpbmcpPC9jb2RlPiBjb25zdHJ1Y3RvciBpZiB0aGUgc3RyaW5nIGlzCisgICogYWxyZWFkeSBhdmFpbGFibGUgd2l0aGluIGEgY2hhcmFjdGVyIGFycmF5LgorICAqCisgICogQHBhcmFtIGluY2hhcnMgVGhlIDxjb2RlPmNoYXJbXTwvY29kZT4gYXJyYXkgY29udGFpbmluZyB0aGUgbnVtYmVyCisgICogICAgICAgICAgICAgICAgdG8gYmUgY29udmVydGVkLgorICAqIEBwYXJhbSBvZmZzZXQgIFRoZSA8Y29kZT5pbnQ8L2NvZGU+IG9mZnNldCBpbnRvIHRoZSBhcnJheSBvZiB0aGUKKyAgKiAgICAgICAgICAgICAgICBzdGFydCBvZiB0aGUgbnVtYmVyIHRvIGJlIGNvbnZlcnRlZC4KKyAgKiBAcGFyYW0gbGVuZ3RoICBUaGUgPGNvZGU+aW50PC9jb2RlPiBsZW5ndGggb2YgdGhlIG51bWJlci4KKyAgKiBAdGhyb3dzIE51bWJlckZvcm1hdEV4Y2VwdGlvbiBpZiB0aGUgcGFyYW1ldGVyIGlzIG5vdCBhIHZhbGlkCisgICogICAgICAgICAgICAgICAgbnVtYmVyIGZvciBhbnkgcmVhc29uLgorICAqIEBzaW5jZSBJQk0gSkRLIDEuMS44CisgICovCisgCisgcHVibGljIEJpZ0RlY2ltYWwoY2hhciBpbmNoYXJzW10saW50IG9mZnNldCxpbnQgbGVuZ3RoKXtzdXBlcigpOworICBib29sZWFuIGV4b3RpYzsKKyAgYm9vbGVhbiBoYWRleHA7CisgIGludCBkOworICBpbnQgZG90b2ZmOworICBpbnQgbGFzdDsKKyAgaW50IGk9MDsKKyAgY2hhciBzaT0wOworICBib29sZWFuIGVuZWc9ZmFsc2U7CisgIGludCBrPTA7CisgIGludCBlbGVuPTA7CisgIGludCBqPTA7CisgIGNoYXIgc2o9MDsKKyAgaW50IGR2YWx1ZT0wOworICBpbnQgbWFnPTA7CisgIC8vIFRoaXMgaXMgdGhlIHByaW1hcnkgY29uc3RydWN0b3I7IGFsbCBpbmNvbWluZyBzdHJpbmdzIGVuZCB1cAorICAvLyBoZXJlOyBpdCB1c2VzIGV4cGxpY2l0IChpbmxpbmUpIHBhcnNpbmcgZm9yIHNwZWVkIGFuZCB0byBhdm9pZAorICAvLyBnZW5lcmF0aW5nIGludGVybWVkaWF0ZSAodGVtcG9yYXJ5KSBvYmplY3RzIG9mIGFueSBraW5kLgorICAvLyAxOTk4LjA2LjI1OiBleHBvbmVudCBmb3JtIGJ1aWx0IG9ubHkgaWYgRS9lIGluIHN0cmluZworICAvLyAxOTk4LjA2LjI1OiB0cmFpbGluZyB6ZXJvcyBub3QgcmVtb3ZlZCBmb3IgemVybworICAvLyAxOTk5LjAzLjA2OiBubyBlbWJlZGRlZCBibGFua3M7IGFsbG93IG9mZnNldCBhbmQgbGVuZ3RoCisgIGlmIChsZW5ndGg8PTApIAorICAgYmFkKGluY2hhcnMpOyAvLyBiYWQgY29udmVyc2lvbiAoZW1wdHkgc3RyaW5nKQorICAvLyBbYmFkIG9mZnNldCB3aWxsIHJhaXNlIGFycmF5IGJvdW5kcyBleGNlcHRpb25dCisgIAorICAvKiBIYW5kbGUgYW5kIHN0ZXAgcGFzdCBzaWduICovCisgIGluZD1pc3BvczsgLy8gYXNzdW1lIHBvc2l0aXZlCisgIGlmIChpbmNoYXJzWzBdPT0oJy0nKSkgCisgICB7CisgICAgbGVuZ3RoLS07CisgICAgaWYgKGxlbmd0aD09MCkgCisgICAgIGJhZChpbmNoYXJzKTsgLy8gbm90aGluZyBhZnRlciBzaWduCisgICAgaW5kPWlzbmVnOworICAgIG9mZnNldCsrOworICAgfQorICBlbHNlIAorICAgaWYgKGluY2hhcnNbMF09PSgnKycpKSAKKyAgICB7CisgICAgIGxlbmd0aC0tOworICAgICBpZiAobGVuZ3RoPT0wKSAKKyAgICAgIGJhZChpbmNoYXJzKTsgLy8gbm90aGluZyBhZnRlciBzaWduCisgICAgIG9mZnNldCsrOworICAgIH0KKyAgCisgIC8qIFdlJ3JlIGF0IHRoZSBzdGFydCBvZiB0aGUgbnVtYmVyICovCisgIGV4b3RpYz1mYWxzZTsgLy8gaGF2ZSBleHRyYSBkaWdpdHMKKyAgaGFkZXhwPWZhbHNlOyAvLyBoYWQgZXhwbGljaXQgZXhwb25lbnQKKyAgZD0wOyAvLyBjb3VudCBvZiBkaWdpdHMgZm91bmQKKyAgZG90b2ZmPS0xOyAvLyBvZmZzZXQgd2hlcmUgZG90IHdhcyBmb3VuZAorICBsYXN0PS0xOyAvLyBsYXN0IGNoYXJhY3RlciBvZiBtYW50aXNzYQorICB7aW50ICQxPWxlbmd0aDtpPW9mZnNldDtpOmZvcig7JDE+MDskMS0tLGkrKyl7CisgICBzaT1pbmNoYXJzW2ldOworICAgaWYgKHNpPj0nMCcpICAvLyB0ZXN0IGZvciBBcmFiaWMgZGlnaXQKKyAgICBpZiAoc2k8PSc5JykgCisgICAgIHsKKyAgICAgIGxhc3Q9aTsKKyAgICAgIGQrKzsgLy8gc3RpbGwgaW4gbWFudGlzc2EKKyAgICAgIGNvbnRpbnVlIGk7CisgICAgIH0KKyAgIGlmIChzaT09Jy4nKSAKKyAgICB7IC8vIHJlY29yZCBhbmQgaWdub3JlCisgICAgIGlmIChkb3RvZmY+PTApIAorICAgICAgYmFkKGluY2hhcnMpOyAvLyB0d28gZG90cworICAgICBkb3RvZmY9aS1vZmZzZXQ7IC8vIG9mZnNldCBpbnRvIG1hbnRpc3NhCisgICAgIGNvbnRpbnVlIGk7CisgICAgfQorICAgaWYgKHNpIT0nZScpIAorICAgIGlmIChzaSE9J0UnKSAKKyAgICAgeyAvLyBleHBlY3QgYW4gZXh0cmEgZGlnaXQKKyAgICAgIGlmICgoIShqYXZhLmxhbmcuQ2hhcmFjdGVyLmlzRGlnaXQoc2kpKSkpIAorICAgICAgIGJhZChpbmNoYXJzKTsgLy8gbm90IGEgbnVtYmVyCisgICAgICAvLyBkZWZlciB0aGUgYmFzZSAxMCBjaGVjayB1bnRpbCBsYXRlciB0byBhdm9pZCBleHRyYSBtZXRob2QgY2FsbAorICAgICAgZXhvdGljPXRydWU7IC8vIHdpbGwgbmVlZCBjb252ZXJzaW9uIGxhdGVyCisgICAgICBsYXN0PWk7CisgICAgICBkKys7IC8vIHN0aWxsIGluIG1hbnRpc3NhCisgICAgICBjb250aW51ZSBpOworICAgICB9CisgICAvKiBGb3VuZCAnZScgb3IgJ0UnIC0tIG5vdyBwcm9jZXNzIGV4cGxpY2l0IGV4cG9uZW50ICovCisgICAvLyAxOTk4LjA3LjExOiBzaWduIG5vIGxvbmdlciByZXF1aXJlZAorICAgaWYgKChpLW9mZnNldCk+KGxlbmd0aC0yKSkgCisgICAgYmFkKGluY2hhcnMpOyAvLyBubyByb29tIGZvciBldmVuIG9uZSBkaWdpdAorICAgZW5lZz1mYWxzZTsKKyAgIGlmICgoaW5jaGFyc1tpKzFdKT09KCctJykpIAorICAgIHsKKyAgICAgZW5lZz10cnVlOworICAgICBrPWkrMjsKKyAgICB9CisgICBlbHNlIAorICAgIGlmICgoaW5jaGFyc1tpKzFdKT09KCcrJykpIAorICAgICBrPWkrMjsKKyAgICBlbHNlIAorICAgICBrPWkrMTsKKyAgIC8vIGsgaXMgb2Zmc2V0IG9mIGZpcnN0IGV4cGVjdGVkIGRpZ2l0CisgICBlbGVuPWxlbmd0aC0oKGstb2Zmc2V0KSk7IC8vIHBvc3NpYmxlIG51bWJlciBvZiBkaWdpdHMKKyAgIGlmICgoZWxlbj09MCl8KGVsZW4+OSkpIAorICAgIGJhZChpbmNoYXJzKTsgLy8gMCBvciBtb3JlIHRoYW4gOSBkaWdpdHMKKyAgIHtpbnQgJDI9ZWxlbjtqPWs7ajpmb3IoOyQyPjA7JDItLSxqKyspeworICAgIHNqPWluY2hhcnNbal07CisgICAgaWYgKHNqPCcwJykgCisgICAgIGJhZChpbmNoYXJzKTsgLy8gYWx3YXlzIGJhZAorICAgIGlmIChzaj4nOScpIAorICAgICB7IC8vIG1heWJlIGFuIGV4b3RpYyBkaWdpdAorICAgICAgaWYgKCghKGphdmEubGFuZy5DaGFyYWN0ZXIuaXNEaWdpdChzaikpKSkgCisgICAgICAgYmFkKGluY2hhcnMpOyAvLyBub3QgYSBudW1iZXIKKyAgICAgIGR2YWx1ZT1qYXZhLmxhbmcuQ2hhcmFjdGVyLmRpZ2l0KHNqLDEwKTsgLy8gY2hlY2sgYmFzZQorICAgICAgaWYgKGR2YWx1ZTwwKSAKKyAgICAgICBiYWQoaW5jaGFycyk7IC8vIG5vdCBiYXNlIDEwCisgICAgIH0KKyAgICBlbHNlIAorICAgICBkdmFsdWU9KChpbnQpKHNqKSktKChpbnQpKCcwJykpOworICAgIGV4cD0oZXhwKjEwKStkdmFsdWU7CisgICAgfQorICAgfS8qaiovCisgICBpZiAoZW5lZykgCisgICAgZXhwPShpbnQpLWV4cDsgLy8gd2FzIG5lZ2F0aXZlCisgICBoYWRleHA9dHJ1ZTsgLy8gcmVtZW1iZXIgd2UgaGFkIG9uZQorICAgYnJlYWsgaTsgLy8gd2UgYXJlIGRvbmUKKyAgIH0KKyAgfS8qaSovCisgIAorICAvKiBIZXJlIHdoZW4gYWxsIGluc3BlY3RlZCAqLworICBpZiAoZD09MCkgCisgICBiYWQoaW5jaGFycyk7IC8vIG5vIG1hbnRpc3NhIGRpZ2l0cworICBpZiAoZG90b2ZmPj0wKSAKKyAgIGV4cD0oZXhwK2RvdG9mZiktZDsgLy8gYWRqdXN0IGV4cG9uZW50IGlmIGhhZCBkb3QKKyAgCisgIC8qIHN0cmlwIGxlYWRpbmcgemVyb3MvZG90IChsZWF2ZSBmaW5hbCBpZiBhbGwgMCdzKSAqLworICB7aW50ICQzPWxhc3QtMTtpPW9mZnNldDtpOmZvcig7aTw9JDM7aSsrKXsKKyAgIHNpPWluY2hhcnNbaV07CisgICBpZiAoc2k9PScwJykgCisgICAgeworICAgICBvZmZzZXQrKzsKKyAgICAgZG90b2ZmLS07CisgICAgIGQtLTsKKyAgICB9CisgICBlbHNlIAorICAgIGlmIChzaT09Jy4nKSAKKyAgICAgeworICAgICAgb2Zmc2V0Kys7IC8vIHN0ZXAgcGFzdCBkb3QKKyAgICAgIGRvdG9mZi0tOworICAgICB9CisgICAgZWxzZSAKKyAgICAgaWYgKHNpPD0nOScpIAorICAgICAgYnJlYWsgaTsvKiBub24tMCAqLworICAgICBlbHNlIAorICAgICAgey8qIGV4b3RpYyAqLworICAgICAgIGlmICgoamF2YS5sYW5nLkNoYXJhY3Rlci5kaWdpdChzaSwxMCkpIT0wKSAKKyAgICAgICAgYnJlYWsgaTsgLy8gbm9uLTAgb3IgYmFkCisgICAgICAgLy8gaXMgMCAuLiBzdHJpcCBsaWtlICcwJworICAgICAgIG9mZnNldCsrOworICAgICAgIGRvdG9mZi0tOworICAgICAgIGQtLTsKKyAgICAgIH0KKyAgIH0KKyAgfS8qaSovCisgIAorICAvKiBDcmVhdGUgdGhlIG1hbnRpc3NhIGFycmF5ICovCisgIG1hbnQ9bmV3IGJ5dGVbZF07IC8vIHdlIGtub3cgdGhlIGxlbmd0aAorICBqPW9mZnNldDsgLy8gaW5wdXQgb2Zmc2V0CisgIGlmIChleG90aWMpIAorICAge2V4b3RpY2E6ZG97IC8vIHNsb3c6IGNoZWNrIGZvciBleG90aWNhCisgICAge2ludCAkND1kO2k9MDtpOmZvcig7JDQ+MDskNC0tLGkrKyl7CisgICAgIGlmIChpPT1kb3RvZmYpIAorICAgICAgaisrOyAvLyBhdCBkb3QKKyAgICAgc2o9aW5jaGFyc1tqXTsKKyAgICAgaWYgKHNqPD0nOScpIAorICAgICAgbWFudFtpXT0oYnl0ZSkoKChpbnQpKHNqKSktKChpbnQpKCcwJykpKTsvKiBlYXN5ICovCisgICAgIGVsc2UgCisgICAgICB7CisgICAgICAgZHZhbHVlPWphdmEubGFuZy5DaGFyYWN0ZXIuZGlnaXQoc2osMTApOworICAgICAgIGlmIChkdmFsdWU8MCkgCisgICAgICAgIGJhZChpbmNoYXJzKTsgLy8gbm90IGEgbnVtYmVyIGFmdGVyIGFsbAorICAgICAgIG1hbnRbaV09KGJ5dGUpZHZhbHVlOworICAgICAgfQorICAgICBqKys7CisgICAgIH0KKyAgICB9LyppKi8KKyAgIH13aGlsZShmYWxzZSk7fS8qZXhvdGljYSovCisgIGVsc2UgCisgICB7c2ltcGxlOmRveworICAgIHtpbnQgJDU9ZDtpPTA7aTpmb3IoOyQ1PjA7JDUtLSxpKyspeworICAgICBpZiAoaT09ZG90b2ZmKSAKKyAgICAgIGorKzsKKyAgICAgbWFudFtpXT0oYnl0ZSkoKChpbnQpKGluY2hhcnNbal0pKS0oKGludCkoJzAnKSkpOworICAgICBqKys7CisgICAgIH0KKyAgICB9LyppKi8KKyAgIH13aGlsZShmYWxzZSk7fS8qc2ltcGxlKi8KKyAgCisgIC8qIExvb2tzIGdvb2QuICBTZXQgdGhlIHNpZ24gaW5kaWNhdG9yIGFuZCBmb3JtLCBhcyBuZWVkZWQuICovCisgIC8vIFRyYWlsaW5nIHplcm9zIGFyZSBwcmVzZXJ2ZWQKKyAgLy8gVGhlIHJ1bGUgaGVyZSBmb3IgZm9ybSBpczoKKyAgLy8gICBJZiBubyBFLW5vdGF0aW9uLCB0aGVuIHJlcXVlc3QgcGxhaW4gbm90YXRpb24KKyAgLy8gICBPdGhlcndpc2UgYWN0IGFzIHRob3VnaCBhZGQoMCxERUZBVUxUKSBhbmQgcmVxdWVzdCBzY2llbnRpZmljIG5vdGF0aW9uCisgIC8vIFtmb3JtIGlzIGFscmVhZHkgUExBSU5dCisgIGlmIChtYW50WzBdPT0wKSAKKyAgIHsKKyAgICBpbmQ9aXN6ZXJvOyAvLyBmb3JjZSB0byBzaG93IHplcm8KKyAgICAvLyBuZWdhdGl2ZSBleHBvbmVudCBpcyBzaWduaWZpY2FudCAoZS5nLiwgLTMgZm9yIDAuMDAwKSBpZiBwbGFpbgorICAgIGlmIChleHA+MCkgCisgICAgIGV4cD0wOyAvLyBwb3NpdGl2ZSBleHBvbmVudCBjYW4gYmUgaWdub3JlZAorICAgIGlmIChoYWRleHApIAorICAgICB7IC8vIHplcm8gYmVjb21lcyBzaW5nbGUgZGlnaXQgZnJvbSBhZGQKKyAgICAgIG1hbnQ9WkVSTy5tYW50OworICAgICAgZXhwPTA7CisgICAgIH0KKyAgIH0KKyAgZWxzZSAKKyAgIHsgLy8gbm9uLXplcm8KKyAgICAvLyBbaW5kIHdhcyBzZXQgZWFybGllcl0KKyAgICAvLyBub3cgZGV0ZXJtaW5lIGZvcm0KKyAgICBpZiAoaGFkZXhwKSAKKyAgICAgeworICAgICAgZm9ybT0oYnl0ZSljb20uaWJtLm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQzsKKyAgICAgIC8vIDE5OTkuMDYuMjkgY2hlY2sgZm9yIG92ZXJmbG93CisgICAgICBtYWc9KGV4cCttYW50Lmxlbmd0aCktMTsgLy8gdHJ1ZSBleHBvbmVudCBpbiBzY2llbnRpZmljIG5vdGF0aW9uCisgICAgICBpZiAoKG1hZzxNaW5FeHApfChtYWc+TWF4RXhwKSkgCisgICAgICAgYmFkKGluY2hhcnMpOworICAgICB9CisgICB9CisgIC8vIHNheSAnQkQoY1tdKTogbWFudFswXSBtYW50bGVuIGV4cCBpbmQgZm9ybTonIG1hbnRbMF0gbWFudC5sZW5ndGggZXhwIGluZCBmb3JtCisgIHJldHVybjsKKyAgfQorCisgLyoqCisgICogQ29uc3RydWN0cyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdCBkaXJlY3RseSBmcm9tIGEKKyAgKiA8Y29kZT5kb3VibGU8L2NvZGU+LgorICAqIDxwPgorICAqIENvbnN0cnVjdHMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aGljaCBpcyB0aGUgZXhhY3QgZGVjaW1hbAorICAqIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA2NC1iaXQgc2lnbmVkIGJpbmFyeSBmbG9hdGluZyBwb2ludAorICAqIHBhcmFtZXRlci4KKyAgKiA8cD4KKyAgKiBOb3RlIHRoYXQgdGhpcyBjb25zdHJ1Y3RvciBpdCBhbiBleGFjdCBjb252ZXJzaW9uOyBpdCBkb2VzIG5vdCBnaXZlCisgICogdGhlIHNhbWUgcmVzdWx0IGFzIGNvbnZlcnRpbmcgPGNvZGU+bnVtPC9jb2RlPiB0byBhCisgICogPGNvZGU+U3RyaW5nPC9jb2RlPiB1c2luZyB0aGUgPGNvZGU+RG91YmxlLnRvU3RyaW5nKCk8L2NvZGU+IG1ldGhvZAorICAqIGFuZCB0aGVuIHVzaW5nIHRoZSB7QGxpbmsgI0JpZ0RlY2ltYWwoamF2YS5sYW5nLlN0cmluZyl9CisgICogY29uc3RydWN0b3IuCisgICogVG8gZ2V0IHRoYXQgcmVzdWx0LCB1c2UgdGhlIHN0YXRpYyB7QGxpbmsgI3ZhbHVlT2YoZG91YmxlKX0KKyAgKiBtZXRob2QgdG8gY29uc3RydWN0IGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZnJvbSBhCisgICogPGNvZGU+ZG91YmxlPC9jb2RlPi4KKyAgKgorICAqIEBwYXJhbSBudW0gVGhlIDxjb2RlPmRvdWJsZTwvY29kZT4gdG8gYmUgY29udmVydGVkLgorICAqIEB0aHJvd3MgTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGlmIHRoZSBwYXJhbWV0ZXIgaXMgaW5maW5pdGUgb3IKKyAgKiAgICAgICAgICAgIG5vdCBhIG51bWJlci4KKyAgKi8KKyAKKyBwdWJsaWMgQmlnRGVjaW1hbChkb3VibGUgbnVtKXsKKyAgLy8gMTk5OS4wMy4wNjogdXNlIGV4YWN0bHkgdGhlIG9sZCBhbGdvcml0aG0KKyAgLy8gMjAwMC4wMS4wMTogbm90ZSB0aGF0IHRoaXMgY29uc3RydWN0b3IgZG9lcyBnaXZlIGFuIGV4YWN0IHJlc3VsdCwKKyAgLy8gICAgICAgICAgICAgc28gcGVyaGFwcyBpdCBzaG91bGQgbm90IGJlIGRlcHJlY2F0ZWQKKyAgLy8gMjAwMC4wNi4xODogbm8gbG9uZ2VyIGRlcHJlY2F0ZWQKKyAgdGhpcygobmV3IGphdmEubWF0aC5CaWdEZWNpbWFsKG51bSkpLnRvU3RyaW5nKCkpOworICByZXR1cm47fQorCisgLyoqCisgICogQ29uc3RydWN0cyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdCBkaXJlY3RseSBmcm9tIGEKKyAgKiA8Y29kZT5pbnQ8L2NvZGU+LgorICAqIDxwPgorICAqIENvbnN0cnVjdHMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aGljaCBpcyB0aGUgZXhhY3QgZGVjaW1hbAorICAqIHJlcHJlc2VudGF0aW9uIG9mIHRoZSAzMi1iaXQgc2lnbmVkIGJpbmFyeSBpbnRlZ2VyIHBhcmFtZXRlci4KKyAgKiBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2lsbCBjb250YWluIG9ubHkgZGVjaW1hbCBkaWdpdHMsCisgICogcHJlZml4ZWQgd2l0aCBhIGxlYWRpbmcgbWludXMgc2lnbiAoaHlwaGVuKSBpZiB0aGUgcGFyYW1ldGVyIGlzCisgICogbmVnYXRpdmUuCisgICogQSBsZWFkaW5nIHplcm8gd2lsbCBiZSBwcmVzZW50IG9ubHkgaWYgdGhlIHBhcmFtZXRlciBpcyB6ZXJvLgorICAqCisgICogQHBhcmFtIG51bSBUaGUgPGNvZGU+aW50PC9jb2RlPiB0byBiZSBjb252ZXJ0ZWQuCisgICogQHNpbmNlIElCTSBKREsgMS4xLjgKKyAgKi8KKyAKKyBwdWJsaWMgQmlnRGVjaW1hbChpbnQgbnVtKXtzdXBlcigpOworICBpbnQgbXVuOworICBpbnQgaT0wOworICAvLyBXZSBmYXN0cGF0aCBjb21tb25lcnMKKyAgaWYgKG51bTw9OSkgCisgICBpZiAobnVtPj0oLTkpKSAKKyAgICB7c2luZ2xlZGlnaXQ6ZG97CisgICAgIC8vIHZlcnkgY29tbW9uIHNpbmdsZSBkaWdpdCBjYXNlCisgICAgIHsvKnNlbGVjdCovCisgICAgIGlmIChudW09PTApCisgICAgICB7CisgICAgICAgbWFudD1aRVJPLm1hbnQ7CisgICAgICAgaW5kPWlzemVybzsKKyAgICAgIH0KKyAgICAgZWxzZSBpZiAobnVtPT0xKQorICAgICAgeworICAgICAgIG1hbnQ9T05FLm1hbnQ7CisgICAgICAgaW5kPWlzcG9zOworICAgICAgfQorICAgICBlbHNlIGlmIChudW09PSgtMSkpCisgICAgICB7CisgICAgICAgbWFudD1PTkUubWFudDsKKyAgICAgICBpbmQ9aXNuZWc7CisgICAgICB9CisgICAgIGVsc2V7CisgICAgICB7CisgICAgICAgbWFudD1uZXcgYnl0ZVsxXTsKKyAgICAgICBpZiAobnVtPjApIAorICAgICAgICB7CisgICAgICAgICBtYW50WzBdPShieXRlKW51bTsKKyAgICAgICAgIGluZD1pc3BvczsKKyAgICAgICAgfQorICAgICAgIGVsc2UgCisgICAgICAgIHsgLy8gbnVtPC0xCisgICAgICAgICBtYW50WzBdPShieXRlKSgoaW50KS1udW0pOworICAgICAgICAgaW5kPWlzbmVnOworICAgICAgICB9CisgICAgICB9CisgICAgIH0KKyAgICAgfQorICAgICByZXR1cm47CisgICAgfXdoaWxlKGZhbHNlKTt9LypzaW5nbGVkaWdpdCovCisgIAorICAvKiBXZSB3b3JrIG9uIG5lZ2F0aXZlIG51bWJlcnMgc28gd2UgaGFuZGxlIHRoZSBtb3N0IG5lZ2F0aXZlIG51bWJlciAqLworICBpZiAobnVtPjApIAorICAgeworICAgIGluZD1pc3BvczsKKyAgICBudW09KGludCktbnVtOworICAgfQorICBlbHNlIAorICAgaW5kPWlzbmVnOy8qIG5lZ2F0aXZlICovIC8vIFswIGNhc2UgYWxyZWFkeSBoYW5kbGVkXQorICAvLyBbaXQgaXMgcXVpY2tlciwgaGVyZSwgdG8gcHJlLWNhbGN1bGF0ZSB0aGUgbGVuZ3RoIHdpdGgKKyAgLy8gb25lIGxvb3AsIHRoZW4gYWxsb2NhdGUgZXhhY3RseSB0aGUgcmlnaHQgbGVuZ3RoIG9mIGJ5dGUgYXJyYXksCisgIC8vIHRoZW4gcmUtZmlsbCBpdCB3aXRoIGFub3RoZXIgbG9vcF0KKyAgbXVuPW51bTsgLy8gd29ya2luZyBjb3B5CisgIHtpPTk7aTpmb3IoOztpLS0peworICAgbXVuPW11bi8xMDsKKyAgIGlmIChtdW49PTApIAorICAgIGJyZWFrIGk7CisgICB9CisgIH0vKmkqLworICAvLyBpIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgbGVmdG1vc3QgZGlnaXQgcGxhY2VkCisgIG1hbnQ9bmV3IGJ5dGVbMTAtaV07CisgIHtpPSgxMC1pKS0xO2k6Zm9yKDs7aS0tKXsKKyAgIG1hbnRbaV09KGJ5dGUpLSgoKGJ5dGUpKG51bSUxMCkpKTsKKyAgIG51bT1udW0vMTA7CisgICBpZiAobnVtPT0wKSAKKyAgICBicmVhayBpOworICAgfQorICB9LyppKi8KKyAgcmV0dXJuOworICB9CisKKyAvKioKKyAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb2JqZWN0IGRpcmVjdGx5IGZyb20gYQorICAqIDxjb2RlPmxvbmc8L2NvZGU+LgorICAqIDxwPgorICAqIENvbnN0cnVjdHMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aGljaCBpcyB0aGUgZXhhY3QgZGVjaW1hbAorICAqIHJlcHJlc2VudGF0aW9uIG9mIHRoZSA2NC1iaXQgc2lnbmVkIGJpbmFyeSBpbnRlZ2VyIHBhcmFtZXRlci4KKyAgKiBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2lsbCBjb250YWluIG9ubHkgZGVjaW1hbCBkaWdpdHMsCisgICogcHJlZml4ZWQgd2l0aCBhIGxlYWRpbmcgbWludXMgc2lnbiAoaHlwaGVuKSBpZiB0aGUgcGFyYW1ldGVyIGlzCisgICogbmVnYXRpdmUuCisgICogQSBsZWFkaW5nIHplcm8gd2lsbCBiZSBwcmVzZW50IG9ubHkgaWYgdGhlIHBhcmFtZXRlciBpcyB6ZXJvLgorICAqCisgICogQHBhcmFtIG51bSBUaGUgPGNvZGU+bG9uZzwvY29kZT4gdG8gYmUgY29udmVydGVkLgorICAqIEBzaW5jZSBJQk0gSkRLIDEuMS44CisgICovCisgCisgcHVibGljIEJpZ0RlY2ltYWwobG9uZyBudW0pe3N1cGVyKCk7CisgIGxvbmcgbXVuOworICBpbnQgaT0wOworICAvLyBOb3QgcmVhbGx5IHdvcnRoIGZhc3RwYXRoaW5nIGNvbW1vbmVycyBpbiB0aGlzIGNvbnN0cnVjdG9yIFthbHNvLAorICAvLyB3ZSB1c2UgdGhpcyB0byBjb25zdHJ1Y3QgdGhlIHN0YXRpYyBjb25zdGFudHNdLgorICAvLyBUaGlzIGlzIG11Y2ggZmFzdGVyIHRoYW46IHRoaXMoU3RyaW5nLnZhbHVlT2YobnVtKS50b0NoYXJBcnJheSgpKQorICAvKiBXZSB3b3JrIG9uIG5lZ2F0aXZlIG51bSBzbyB3ZSBoYW5kbGUgdGhlIG1vc3QgbmVnYXRpdmUgbnVtYmVyICovCisgIGlmIChudW0+MCkgCisgICB7CisgICAgaW5kPWlzcG9zOworICAgIG51bT0obG9uZyktbnVtOworICAgfQorICBlbHNlIAorICAgaWYgKG51bT09MCkgCisgICAgaW5kPWlzemVybzsKKyAgIGVsc2UgCisgICAgaW5kPWlzbmVnOy8qIG5lZ2F0aXZlICovCisgIG11bj1udW07CisgIHtpPTE4O2k6Zm9yKDs7aS0tKXsKKyAgIG11bj1tdW4vMTA7CisgICBpZiAobXVuPT0wKSAKKyAgICBicmVhayBpOworICAgfQorICB9LyppKi8KKyAgLy8gaSBpcyB0aGUgcG9zaXRpb24gb2YgdGhlIGxlZnRtb3N0IGRpZ2l0IHBsYWNlZAorICBtYW50PW5ldyBieXRlWzE5LWldOworICB7aT0oMTktaSktMTtpOmZvcig7O2ktLSl7CisgICBtYW50W2ldPShieXRlKS0oKChieXRlKShudW0lMTApKSk7CisgICBudW09bnVtLzEwOworICAgaWYgKG51bT09MCkgCisgICAgYnJlYWsgaTsKKyAgIH0KKyAgfS8qaSovCisgIHJldHVybjsKKyAgfQorCisgLyoqCisgICogQ29uc3RydWN0cyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdCBmcm9tIGEgPGNvZGU+U3RyaW5nPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZnJvbSB0aGUgcGFyYW1ldGVyLCB3aGljaCBtdXN0CisgICogbm90IGJlIDxjb2RlPm51bGw8L2NvZGU+IGFuZCBtdXN0IHJlcHJlc2VudCBhIHZhbGlkIDxpPm51bWJlcjwvaT4sCisgICogYXMgZGVzY3JpYmVkIGZvcm1hbGx5IGluIHRoZSBkb2N1bWVudGF0aW9uIHJlZmVycmVkIHRvCisgICoge0BsaW5rIEJpZ0RlY2ltYWwgYWJvdmV9LgorICAqIDxwPgorICAqIEluIHN1bW1hcnksIG51bWJlcnMgaW4gPGNvZGU+U3RyaW5nPC9jb2RlPiBmb3JtIG11c3QgaGF2ZSBhdCBsZWFzdAorICAqIG9uZSBkaWdpdCwgbWF5IGhhdmUgYSBsZWFkaW5nIHNpZ24sIG1heSBoYXZlIGEgZGVjaW1hbCBwb2ludCwgYW5kCisgICogZXhwb25lbnRpYWwgbm90YXRpb24gbWF5IGJlIHVzZWQuICBUaGV5IGZvbGxvdyBjb252ZW50aW9uYWwgc3ludGF4LAorICAqIGFuZCBtYXkgbm90IGNvbnRhaW4gYmxhbmtzLgorICAqIDxwPgorICAqIFNvbWUgdmFsaWQgc3RyaW5ncyBmcm9tIHdoaWNoIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gbWlnaHQKKyAgKiBiZSBjb25zdHJ1Y3RlZCBhcmU6CisgICogPHByZT4KKyAgKiAgICAgICAiMCIgICAgICAgICAtLSBaZXJvCisgICogICAgICAiMTIiICAgICAgICAgLS0gQSB3aG9sZSBudW1iZXIKKyAgKiAgICAgIi03NiIgICAgICAgICAtLSBBIHNpZ25lZCB3aG9sZSBudW1iZXIKKyAgKiAgICAgICIxMi43MCIgICAgICAtLSBTb21lIGRlY2ltYWwgcGxhY2VzCisgICogICAgICIrMC4wMDMiICAgICAgLS0gUGx1cyBzaWduIGlzIGFsbG93ZWQKKyAgKiAgICAgICIxNy4iICAgICAgICAtLSBUaGUgc2FtZSBhcyAxNworICAqICAgICAgICAiLjUiICAgICAgIC0tIFRoZSBzYW1lIGFzIDAuNQorICAqICAgICAgIjRFKzkiICAgICAgIC0tIEV4cG9uZW50aWFsIG5vdGF0aW9uCisgICogICAgICAgIjAuNzNlLTciICAgLS0gRXhwb25lbnRpYWwgbm90YXRpb24KKyAgKiA8L3ByZT4KKyAgKiA8cD4KKyAgKiAoRXhwb25lbnRpYWwgbm90YXRpb24gbWVhbnMgdGhhdCB0aGUgbnVtYmVyIGluY2x1ZGVzIGFuIG9wdGlvbmFsCisgICogc2lnbiBhbmQgYSBwb3dlciBvZiB0ZW4gZm9sbG93aW5nIGFuICc8L2NvZGU+RTwvY29kZT4nIHRoYXQKKyAgKiBpbmRpY2F0ZXMgaG93IHRoZSBkZWNpbWFsIHBvaW50IHdpbGwgYmUgc2hpZnRlZC4gIFRodXMgdGhlCisgICogPGNvZGU+IjRFKzkiPC9jb2RlPiBhYm92ZSBpcyBqdXN0IGEgc2hvcnQgd2F5IG9mIHdyaXRpbmcKKyAgKiA8Y29kZT40MDAwMDAwMDAwPC9jb2RlPiwgYW5kIHRoZSA8Y29kZT4iMC43M2UtNyI8L2NvZGU+IGlzIHNob3J0CisgICogZm9yIDxjb2RlPjAuMDAwMDAwMDczPC9jb2RlPi4pCisgICogPHA+CisgICogVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGNvbnN0cnVjdGVkIGZyb20gdGhlIFN0cmluZyBpcyBpbiBhCisgICogc3RhbmRhcmQgZm9ybSwgd2l0aCBubyBibGFua3MsIGFzIHRob3VnaCB0aGUKKyAgKiB7QGxpbmsgI2FkZChCaWdEZWNpbWFsKX0gbWV0aG9kIGhhZCBiZWVuIHVzZWQgdG8gYWRkIHplcm8gdG8gdGhlCisgICogbnVtYmVyIHdpdGggdW5saW1pdGVkIHByZWNpc2lvbi4KKyAgKiBJZiB0aGUgc3RyaW5nIHVzZXMgZXhwb25lbnRpYWwgbm90YXRpb24gKHRoYXQgaXMsIGluY2x1ZGVzIGFuCisgICogPGNvZGU+ZTwvY29kZT4gb3IgYW4gPGNvZGU+RTwvY29kZT4pLCB0aGVuIHRoZQorICAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG51bWJlciB3aWxsIGJlIGV4cHJlc3NlZCBpbiBzY2llbnRpZmljCisgICogbm90YXRpb24gKHdoZXJlIHRoZSBwb3dlciBvZiB0ZW4gaXMgYWRqdXN0ZWQgc28gdGhlcmUgaXMgYSBzaW5nbGUKKyAgKiBub24temVybyBkaWdpdCB0byB0aGUgbGVmdCBvZiB0aGUgZGVjaW1hbCBwb2ludCk7IGluIHRoaXMgY2FzZSBpZgorICAqIHRoZSBudW1iZXIgaXMgemVybyB0aGVuIGl0IHdpbGwgYmUgZXhwcmVzc2VkIGFzIHRoZSBzaW5nbGUgZGlnaXQgMCwKKyAgKiBhbmQgaWYgbm9uLXplcm8gaXQgd2lsbCBoYXZlIGFuIGV4cG9uZW50IHVubGVzcyB0aGF0IGV4cG9uZW50IHdvdWxkCisgICogYmUgMC4gIFRoZSBleHBvbmVudCBtdXN0IGZpdCBpbiBuaW5lIGRpZ2l0cyBib3RoIGJlZm9yZSBhbmQgYWZ0ZXIgaXQKKyAgKiBpcyBleHByZXNzZWQgaW4gc2NpZW50aWZpYyBub3RhdGlvbi4KKyAgKiA8cD4KKyAgKiBBbnkgZGlnaXRzIGluIHRoZSBwYXJhbWV0ZXIgbXVzdCBiZSBkZWNpbWFsOyB0aGF0IGlzLAorICAqIDxjb2RlPkNoYXJhY3Rlci5kaWdpdChjLCAxMCk8L2NvZGU+ICh3aGVyZSA8L2NvZGU+YzwvY29kZT4gaXMgdGhlCisgICogY2hhcmFjdGVyIGluIHF1ZXN0aW9uKSB3b3VsZCBub3QgcmV0dXJuIC0xLgorICAqCisgICogQHBhcmFtIHN0cmluZyBUaGUgPGNvZGU+U3RyaW5nPC9jb2RlPiB0byBiZSBjb252ZXJ0ZWQuCisgICogQHRocm93cyBOdW1iZXJGb3JtYXRFeGNlcHRpb24gaWYgdGhlIHBhcmFtZXRlciBpcyBub3QgYSB2YWxpZAorICAqIG51bWJlci4KKyAgKi8KKyAKKyBwdWJsaWMgQmlnRGVjaW1hbChqYXZhLmxhbmcuU3RyaW5nIHN0cmluZyl7CisgIHRoaXMoc3RyaW5nLnRvQ2hhckFycmF5KCksMCxzdHJpbmcubGVuZ3RoKCkpOworICByZXR1cm47fQorCisgLyogPHNnbWw+IE1ha2UgYSBkZWZhdWx0IEJpZ0RlY2ltYWwgb2JqZWN0IGZvciBsb2NhbCB1c2UuIDwvc2dtbD4gKi8KKyAKKyBwcml2YXRlIEJpZ0RlY2ltYWwoKXtzdXBlcigpOworICByZXR1cm47CisgIH0KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAvKiBPcGVyYXRvciBtZXRob2RzIFttZXRob2RzIHdoaWNoIHRha2UgYSBjb250ZXh0IHBhcmFtZXRlcl0gICAgICAgICovCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKgorICAqIFJldHVybnMgYSBwbGFpbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcyB0aGUgYWJzb2x1dGUKKyAgKiB2YWx1ZSBvZiB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+LgorICAqIDxwPgorICAqIFRoZSBzYW1lIGFzIHtAbGluayAjYWJzKE1hdGhDb250ZXh0KX0sIHdoZXJlIHRoZSBjb250ZXh0IGlzCisgICogPGNvZGU+bmV3IE1hdGhDb250ZXh0KDAsIE1hdGhDb250ZXh0LlBMQUlOKTwvY29kZT4uCisgICogPHA+CisgICogVGhlIGxlbmd0aCBvZiB0aGUgZGVjaW1hbCBwYXJ0ICh0aGUgc2NhbGUpIG9mIHRoZSByZXN1bHQgd2lsbAorICAqIGJlIDxjb2RlPnRoaXMuc2NhbGUoKTwvY29kZT4KKyAgKgorICAqIEByZXR1cm4gQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcyB0aGUgYWJzb2x1dGUKKyAgKiAgICAgICAgIHZhbHVlIG9mIHRoaXMgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4uCisgICovCisgCisgcHVibGljIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGFicygpeworICByZXR1cm4gdGhpcy5hYnMocGxhaW5NQyk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcyB0aGUgYWJzb2x1dGUgdmFsdWUKKyAgKiBvZiB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+LgorICAqIDxwPgorICAqIElmIHRoZSBjdXJyZW50IG9iamVjdCBpcyB6ZXJvIG9yIHBvc2l0aXZlLCB0aGVuIHRoZSBzYW1lIHJlc3VsdCBhcworICAqIGludm9raW5nIHRoZSB7QGxpbmsgI3BsdXMoTWF0aENvbnRleHQpfSBtZXRob2Qgd2l0aCB0aGUgc2FtZQorICAqIHBhcmFtZXRlciBpcyByZXR1cm5lZC4KKyAgKiBPdGhlcndpc2UsIHRoZSBzYW1lIHJlc3VsdCBhcyBpbnZva2luZyB0aGUKKyAgKiB7QGxpbmsgI25lZ2F0ZShNYXRoQ29udGV4dCl9IG1ldGhvZCB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlciBpcworICAqIHJldHVybmVkLgorICAqCisgICogQHBhcmFtICBzZXQgVGhlIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBhcml0aG1ldGljIHNldHRpbmdzLgorICAqIEByZXR1cm4gICAgIEEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMgdGhlIGFic29sdXRlCisgICogICAgICAgICAgICAgdmFsdWUgb2YgdGhpcyA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPi4KKyAgKiBAc2luY2UgIElCTSBKREsgMS4xLjgKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgYWJzKGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBzZXQpeworICBpZiAodGhpcy5pbmQ9PWlzbmVnKSAKKyAgIHJldHVybiB0aGlzLm5lZ2F0ZShzZXQpOworICByZXR1cm4gdGhpcy5wbHVzKHNldCk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSBwbGFpbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqIDxjb2RlPnRoaXMrcmhzPC9jb2RlPiwgdXNpbmcgZml4ZWQgcG9pbnQgYXJpdGhtZXRpYy4KKyAgKiA8cD4KKyAgKiBUaGUgc2FtZSBhcyB7QGxpbmsgI2FkZChCaWdEZWNpbWFsLCBNYXRoQ29udGV4dCl9LAorICAqIHdoZXJlIHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBpcyA8Y29kZT5yaHM8L2NvZGU+LAorICAqIGFuZCB0aGUgY29udGV4dCBpcyA8Y29kZT5uZXcgTWF0aENvbnRleHQoMCwgTWF0aENvbnRleHQuUExBSU4pPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBUaGUgbGVuZ3RoIG9mIHRoZSBkZWNpbWFsIHBhcnQgKHRoZSBzY2FsZSkgb2YgdGhlIHJlc3VsdCB3aWxsIGJlCisgICogdGhlIG1heGltdW0gb2YgdGhlIHNjYWxlcyBvZiB0aGUgdHdvIG9wZXJhbmRzLgorICAqCisgICogQHBhcmFtICByaHMgVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGZvciB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mCisgICogICAgICAgICAgICAgdGhlIGFkZGl0aW9uLgorICAqIEByZXR1cm4gICAgIEEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiAgICAgICAgICAgICA8Y29kZT50aGlzK3JoczwvY29kZT4sIHVzaW5nIGZpeGVkIHBvaW50IGFyaXRobWV0aWMuCisgICovCisgCisgcHVibGljIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGFkZChjb20uaWJtLm1hdGguQmlnRGVjaW1hbCByaHMpeworICByZXR1cm4gdGhpcy5hZGQocmhzLHBsYWluTUMpOworICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMgPGNvZGU+dGhpcytyaHM8L2NvZGU+LgorICAqIDxwPgorICAqIEltcGxlbWVudHMgdGhlIGFkZGl0aW9uICg8Yj48Y29kZT4rPC9jb2RlPjwvYj4pIG9wZXJhdG9yCisgICogKGFzIGRlZmluZWQgaW4gdGhlIGRlY2ltYWwgZG9jdW1lbnRhdGlvbiwgc2VlIHtAbGluayBCaWdEZWNpbWFsCisgICogY2xhc3MgaGVhZGVyfSksCisgICogYW5kIHJldHVybnMgdGhlIHJlc3VsdCBhcyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdC4KKyAgKgorICAqIEBwYXJhbSAgcmhzIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBmb3IgdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZgorICAqICAgICAgICAgICAgIHRoZSBhZGRpdGlvbi4KKyAgKiBAcGFyYW0gIHNldCBUaGUgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IGFyaXRobWV0aWMgc2V0dGluZ3MuCisgICogQHJldHVybiAgICAgQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqICAgICAgICAgICAgIDxjb2RlPnRoaXMrcmhzPC9jb2RlPi4KKyAgKiBAc2luY2UgIElCTSBKREsgMS4xLjgKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgYWRkKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHJocyxjb20uaWJtLm1hdGguTWF0aENvbnRleHQgc2V0KXsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgbGhzOworICBpbnQgcmVxZGlnOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCByZXM7CisgIGJ5dGUgdXNlbFtdOworICBpbnQgdXNlbGxlbjsKKyAgYnl0ZSB1c2VyW107CisgIGludCB1c2VybGVuOworICBpbnQgbmV3bGVuPTA7CisgIGludCB0bGVuPTA7CisgIGludCBtdWx0PTA7CisgIGJ5dGUgdFtdPW51bGw7CisgIGludCBpYT0wOworICBpbnQgaWI9MDsKKyAgaW50IGVhPTA7CisgIGludCBlYj0wOworICBieXRlIGNhPTA7CisgIGJ5dGUgY2I9MDsKKyAgLyogZGV0ZXJtaW5lIHJlcXVlc3RlZCBkaWdpdHMgYW5kIGZvcm0gKi8KKyAgaWYgKHNldC5sb3N0RGlnaXRzKSAKKyAgIGNoZWNrZGlnaXRzKHJocyxzZXQuZGlnaXRzKTsKKyAgbGhzPXRoaXM7IC8vIG5hbWUgZm9yIGNsYXJpdHkgYW5kIHByb3h5CisgIAorICAvKiBRdWljayBleGl0IGZvciBhZGQgZmxvYXRpbmcgMCAqLworICAvLyBwbHVzKCkgd2lsbCBvcHRpbWl6ZSB0byByZXR1cm4gc2FtZSBvYmplY3QgaWYgcG9zc2libGUKKyAgaWYgKGxocy5pbmQ9PTApIAorICAgaWYgKHNldC5mb3JtIT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUExBSU4pIAorICAgIHJldHVybiByaHMucGx1cyhzZXQpOworICBpZiAocmhzLmluZD09MCkgCisgICBpZiAoc2V0LmZvcm0hPWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTikgCisgICAgcmV0dXJuIGxocy5wbHVzKHNldCk7CisgIAorICAvKiBQcmVwYXJlIG51bWJlcnMgKHJvdW5kLCB1bmxlc3MgdW5saW1pdGVkIHByZWNpc2lvbikgKi8KKyAgcmVxZGlnPXNldC5kaWdpdHM7IC8vIGxvY2FsIGNvcHkgKGhlYXZpbHkgdXNlZCkKKyAgaWYgKHJlcWRpZz4wKSAKKyAgIHsKKyAgICBpZiAobGhzLm1hbnQubGVuZ3RoPnJlcWRpZykgCisgICAgIGxocz1jbG9uZShsaHMpLnJvdW5kKHNldCk7CisgICAgaWYgKHJocy5tYW50Lmxlbmd0aD5yZXFkaWcpIAorICAgICByaHM9Y2xvbmUocmhzKS5yb3VuZChzZXQpOworICAgLy8gW3dlIGNvdWxkIHJldXNlIHRoZSBuZXcgTEhTIGZvciByZXN1bHQgaW4gdGhpcyBjYXNlXQorICAgfQorICAKKyAgcmVzPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgpOyAvLyBidWlsZCByZXN1bHQgaGVyZQorICAKKyAgLyogTm93IHNlZSBob3cgbXVjaCB3ZSBoYXZlIHRvIHBhZCBvciB0cnVuY2F0ZSBsaHMgb3IgcmhzIGluIG9yZGVyCisgICAgIHRvIGFsaWduIHRoZSBudW1iZXJzLiAgSWYgb25lIG51bWJlciBpcyBtdWNoIGxhcmdlciB0aGFuIHRoZQorICAgICBvdGhlciwgdGhlbiB0aGUgc21hbGxlciBjYW5ub3QgYWZmZWN0IHRoZSBhbnN3ZXIgW2J1dCB3ZSBtYXkKKyAgICAgc3RpbGwgbmVlZCB0byBwYWQgd2l0aCB1cCB0byBESUdJVFMgdHJhaWxpbmcgemVyb3NdLiAqLworICAvLyBOb3RlIHNpZ24gbWF5IGJlIDAgaWYgZGlnaXRzIChyZXFkaWcpIGlzIDAKKyAgLy8gdXNlbCBhbmQgdXNlciB3aWxsIGJlIHRoZSBieXRlIGFycmF5cyBwYXNzZWQgdG8gdGhlIGFkZGVyOyB3ZSdsbAorICAvLyB1c2UgdGhlbSBvbiBhbGwgcGF0aHMgZXhjZXB0IHF1aWNrIGV4aXRzCisgIHVzZWw9bGhzLm1hbnQ7CisgIHVzZWxsZW49bGhzLm1hbnQubGVuZ3RoOworICB1c2VyPXJocy5tYW50OworICB1c2VybGVuPXJocy5tYW50Lmxlbmd0aDsKKyAge3BhZGRlcjpkb3svKnNlbGVjdCovCisgIGlmIChsaHMuZXhwPT1yaHMuZXhwKQorICAgey8qIG5vIHBhZGRpbmcgbmVlZGVkICovCisgICAgLy8gVGhpcyBpcyB0aGUgbW9zdCBjb21tb24sIGFuZCBmYXN0ZXN0LCBwYXRoCisgICAgcmVzLmV4cD1saHMuZXhwOworICAgfQorICBlbHNlIGlmIChsaHMuZXhwPnJocy5leHApCisgICB7IC8vIG5lZWQgdG8gcGFkIGxocyBhbmQvb3IgdHJ1bmNhdGUgcmhzCisgICAgbmV3bGVuPSh1c2VsbGVuK2xocy5leHApLXJocy5leHA7CisgICAgLyogSWYsIGFmdGVyIHBhZCwgbGhzIHdvdWxkIGJlIGxvbmdlciB0aGFuIHJocyBieSBkaWdpdHMrMSBvcgorICAgICAgIG1vcmUgKGFuZCBkaWdpdHM+MCkgdGhlbiByaHMgY2Fubm90IGFmZmVjdCBhbnN3ZXIsIHNvIHdlIG9ubHkKKyAgICAgICBuZWVkIHRvIHBhZCB1cCB0byBhIGxlbmd0aCBvZiBESUdJVFMrMS4gKi8KKyAgICBpZiAobmV3bGVuPj0oKHVzZXJsZW4rcmVxZGlnKSsxKSkgCisgICAgIGlmIChyZXFkaWc+MCkgCisgICAgICB7CisgICAgICAgLy8gTEhTIGlzIHN1ZmZpY2llbnQKKyAgICAgICByZXMubWFudD11c2VsOworICAgICAgIHJlcy5leHA9bGhzLmV4cDsKKyAgICAgICByZXMuaW5kPWxocy5pbmQ7CisgICAgICAgaWYgKHVzZWxsZW48cmVxZGlnKSAKKyAgICAgICAgeyAvLyBuZWVkIDAgcGFkZGluZworICAgICAgICAgcmVzLm1hbnQ9ZXh0ZW5kKGxocy5tYW50LHJlcWRpZyk7CisgICAgICAgICByZXMuZXhwPXJlcy5leHAtKChyZXFkaWctdXNlbGxlbikpOworICAgICAgICB9CisgICAgICAgcmV0dXJuIHJlcy5maW5pc2goc2V0LGZhbHNlKTsKKyAgICAgIH0KKyAgICAvLyBSSFMgbWF5IGFmZmVjdCByZXN1bHQKKyAgICByZXMuZXhwPXJocy5leHA7IC8vIGV4cGVjdGVkIGZpbmFsIGV4cG9uZW50CisgICAgaWYgKG5ld2xlbj4ocmVxZGlnKzEpKSAKKyAgICAgaWYgKHJlcWRpZz4wKSAKKyAgICAgIHsKKyAgICAgICAvLyBMSFMgd2lsbCBiZSBtYXg7IFJIUyB0cnVuY2F0ZWQKKyAgICAgICB0bGVuPShuZXdsZW4tcmVxZGlnKS0xOyAvLyB0cnVuY2F0aW9uIGxlbmd0aAorICAgICAgIHVzZXJsZW49dXNlcmxlbi10bGVuOworICAgICAgIHJlcy5leHA9cmVzLmV4cCt0bGVuOworICAgICAgIG5ld2xlbj1yZXFkaWcrMTsKKyAgICAgIH0KKyAgICBpZiAobmV3bGVuPnVzZWxsZW4pIAorICAgICB1c2VsbGVuPW5ld2xlbjsgLy8gbmVlZCB0byBwYWQgTEhTCisgICB9CisgIGVsc2V7IC8vIG5lZWQgdG8gcGFkIHJocyBhbmQvb3IgdHJ1bmNhdGUgbGhzCisgICBuZXdsZW49KHVzZXJsZW4rcmhzLmV4cCktbGhzLmV4cDsKKyAgIGlmIChuZXdsZW4+PSgodXNlbGxlbityZXFkaWcpKzEpKSAKKyAgICBpZiAocmVxZGlnPjApIAorICAgICB7CisgICAgICAvLyBSSFMgaXMgc3VmZmljaWVudAorICAgICAgcmVzLm1hbnQ9dXNlcjsKKyAgICAgIHJlcy5leHA9cmhzLmV4cDsKKyAgICAgIHJlcy5pbmQ9cmhzLmluZDsKKyAgICAgIGlmICh1c2VybGVuPHJlcWRpZykgCisgICAgICAgeyAvLyBuZWVkIDAgcGFkZGluZworICAgICAgICByZXMubWFudD1leHRlbmQocmhzLm1hbnQscmVxZGlnKTsKKyAgICAgICAgcmVzLmV4cD1yZXMuZXhwLSgocmVxZGlnLXVzZXJsZW4pKTsKKyAgICAgICB9CisgICAgICByZXR1cm4gcmVzLmZpbmlzaChzZXQsZmFsc2UpOworICAgICB9CisgICAvLyBMSFMgbWF5IGFmZmVjdCByZXN1bHQKKyAgIHJlcy5leHA9bGhzLmV4cDsgLy8gZXhwZWN0ZWQgZmluYWwgZXhwb25lbnQKKyAgIGlmIChuZXdsZW4+KHJlcWRpZysxKSkgCisgICAgaWYgKHJlcWRpZz4wKSAKKyAgICAgeworICAgICAgLy8gUkhTIHdpbGwgYmUgbWF4OyBMSFMgdHJ1bmNhdGVkCisgICAgICB0bGVuPShuZXdsZW4tcmVxZGlnKS0xOyAvLyB0cnVuY2F0aW9uIGxlbmd0aAorICAgICAgdXNlbGxlbj11c2VsbGVuLXRsZW47CisgICAgICByZXMuZXhwPXJlcy5leHArdGxlbjsKKyAgICAgIG5ld2xlbj1yZXFkaWcrMTsKKyAgICAgfQorICAgaWYgKG5ld2xlbj51c2VybGVuKSAKKyAgICB1c2VybGVuPW5ld2xlbjsgLy8gbmVlZCB0byBwYWQgUkhTCisgIH0KKyAgfXdoaWxlKGZhbHNlKTt9LypwYWRkZXIqLworICAKKyAgLyogT0ssIHdlIGhhdmUgYWxpZ25lZCBtYW50aXNzYXMuICBOb3cgYWRkIG9yIHN1YnRyYWN0LiAqLworICAvLyAxOTk4LjA2LjI3IFNpZ24gbWF5IG5vdyBiZSAwIFtlLmcuLCAwLjAwMF0gLi4gdHJlYXQgYXMgcG9zaXRpdmUKKyAgLy8gMTk5OS4wNS4yNyBBbGxvdyBmb3IgMDAgb24gbGhzIFtpcyBub3QgbGFyZ2VyIHRoYW4gMiBvbiByaHNdCisgIC8vIDE5OTkuMDcuMTAgQWxsb3cgZm9yIDAwIG9uIHJocyBbaXMgbm90IGxhcmdlciB0aGFuIDIgb24gcmhzXQorICBpZiAobGhzLmluZD09aXN6ZXJvKSAKKyAgIHJlcy5pbmQ9aXNwb3M7CisgIGVsc2UgCisgICByZXMuaW5kPWxocy5pbmQ7IC8vIGxpa2VseSBzaWduLCBhbGwgcGF0aHMKKyAgaWYgKCgobGhzLmluZD09aXNuZWcpPzE6MCk9PSgocmhzLmluZD09aXNuZWcpPzE6MCkpICAvLyBzYW1lIHNpZ24sIDAgbm9uLW5lZ2F0aXZlCisgICBtdWx0PTE7CisgIGVsc2UgCisgICB7c2lnbmRpZmY6ZG97IC8vIGRpZmZlcmVudCBzaWducywgc28gc3VidHJhY3Rpb24gaXMgbmVlZGVkCisgICAgbXVsdD0tMTsgLy8gd2lsbCBjYXVzZSBzdWJ0cmFjdAorICAgIC8qIEJlZm9yZSB3ZSBjYW4gc3VidHJhY3Qgd2UgbXVzdCBkZXRlcm1pbmUgd2hpY2ggaXMgdGhlIGxhcmdlciwKKyAgICAgICBhcyBvdXIgYWRkL3N1YnRyYWN0IHJvdXRpbmUgb25seSBoYW5kbGVzIG5vbi1uZWdhdGl2ZSByZXN1bHRzCisgICAgICAgc28gd2UgbWF5IG5lZWQgdG8gc3dhcCB0aGUgb3BlcmFuZHMuICovCisgICAge3N3YXB0ZXN0OmRvey8qc2VsZWN0Ki8KKyAgICBpZiAocmhzLmluZD09aXN6ZXJvKQorICAgICA7IC8vIG9yaWdpbmFsIEEgYmlnZ2VyCisgICAgZWxzZSBpZiAoKHVzZWxsZW48dXNlcmxlbil8KGxocy5pbmQ9PWlzemVybykpCisgICAgIHsgLy8gb3JpZ2luYWwgQiBiaWdnZXIKKyAgICAgIHQ9dXNlbDsKKyAgICAgIHVzZWw9dXNlcjsKKyAgICAgIHVzZXI9dDsgLy8gc3dhcAorICAgICAgdGxlbj11c2VsbGVuOworICAgICAgdXNlbGxlbj11c2VybGVuOworICAgICAgdXNlcmxlbj10bGVuOyAvLyAuLgorICAgICAgcmVzLmluZD0oYnl0ZSktcmVzLmluZDsgLy8gYW5kIHNldCBzaWduCisgICAgIH0KKyAgICBlbHNlIGlmICh1c2VsbGVuPnVzZXJsZW4pCisgICAgIDsgLy8gb3JpZ2luYWwgQSBiaWdnZXIKKyAgICBlbHNleworICAgICB7LyogbG9naWNhbCBsZW5ndGhzIHRoZSBzYW1lICovIC8vIG5lZWQgY29tcGFyZQorICAgICAgLyogbWF5IHN0aWxsIG5lZWQgdG8gc3dhcDogY29tcGFyZSB0aGUgc3RyaW5ncyAqLworICAgICAgaWE9MDsKKyAgICAgIGliPTA7CisgICAgICBlYT11c2VsLmxlbmd0aC0xOworICAgICAgZWI9dXNlci5sZW5ndGgtMTsKKyAgICAgIHtjb21wYXJlOmZvcig7Oyl7CisgICAgICAgaWYgKGlhPD1lYSkgCisgICAgICAgIGNhPXVzZWxbaWFdOworICAgICAgIGVsc2UgCisgICAgICAgIHsKKyAgICAgICAgIGlmIChpYj5lYikgCisgICAgICAgICAgey8qIGlkZW50aWNhbCAqLworICAgICAgICAgICBpZiAoc2V0LmZvcm0hPWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTikgCisgICAgICAgICAgICByZXR1cm4gWkVSTzsKKyAgICAgICAgICAgLy8gW2lmIFBMQUlOIHdlIG11c3QgZG8gdGhlIHN1YnRyYWN0LCBpbiBjYXNlIG9mIDAuMDAwIHJlc3VsdHNdCisgICAgICAgICAgIGJyZWFrIGNvbXBhcmU7CisgICAgICAgICAgfQorICAgICAgICAgY2E9KGJ5dGUpMDsKKyAgICAgICAgfQorICAgICAgIGlmIChpYjw9ZWIpIAorICAgICAgICBjYj11c2VyW2liXTsKKyAgICAgICBlbHNlIAorICAgICAgICBjYj0oYnl0ZSkwOworICAgICAgIGlmIChjYSE9Y2IpIAorICAgICAgICB7CisgICAgICAgICBpZiAoY2E8Y2IpIAorICAgICAgICAgIHsvKiBzd2FwIG5lZWRlZCAqLworICAgICAgICAgICB0PXVzZWw7CisgICAgICAgICAgIHVzZWw9dXNlcjsKKyAgICAgICAgICAgdXNlcj10OyAvLyBzd2FwCisgICAgICAgICAgIHRsZW49dXNlbGxlbjsKKyAgICAgICAgICAgdXNlbGxlbj11c2VybGVuOworICAgICAgICAgICB1c2VybGVuPXRsZW47IC8vIC4uCisgICAgICAgICAgIHJlcy5pbmQ9KGJ5dGUpLXJlcy5pbmQ7CisgICAgICAgICAgfQorICAgICAgICAgYnJlYWsgY29tcGFyZTsKKyAgICAgICAgfQorICAgICAgIC8qIG1hbnRpc3NhcyB0aGUgc2FtZSwgc28gZmFyICovCisgICAgICAgaWErKzsKKyAgICAgICBpYisrOworICAgICAgIH0KKyAgICAgIH0vKmNvbXBhcmUqLworICAgICB9IC8vIGxlbmd0aHMgdGhlIHNhbWUKKyAgICB9CisgICAgfXdoaWxlKGZhbHNlKTt9Lypzd2FwdGVzdCovCisgICB9d2hpbGUoZmFsc2UpO30vKnNpZ25kaWZmKi8KKyAgCisgIC8qIGhlcmUsIEEgaXMgPiBCIGlmIHN1YnRyYWN0aW5nICovCisgIC8vIGFkZCBbQStCKjFdIG9yIHN1YnRyYWN0IFtBKyhCKi0xKV0KKyAgcmVzLm1hbnQ9Ynl0ZWFkZHN1Yih1c2VsLHVzZWxsZW4sdXNlcix1c2VybGVuLG11bHQsZmFsc2UpOworICAvLyBbcmV1c2UgcG9zc2libGUgb25seSBhZnRlciBjaG9wOyBhY2NvdW50aW5nIG1ha2VzIG5vdCB3b3J0aHdoaWxlXQorICAKKyAgLy8gRmluaXNoKCkgcm91bmRzIGJlZm9yZSBzdHJpcHBpbmcgbGVhZGluZyAwJ3MsIHRoZW4gc2V0cyBmb3JtLCBldGMuCisgIHJldHVybiByZXMuZmluaXNoKHNldCxmYWxzZSk7CisgIH0KKworIC8qKgorICAqIENvbXBhcmVzIHRoaXMgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gdG8gYW5vdGhlciwgdXNpbmcgdW5saW1pdGVkCisgICogcHJlY2lzaW9uLgorICAqIDxwPgorICAqIFRoZSBzYW1lIGFzIHtAbGluayAjY29tcGFyZVRvKEJpZ0RlY2ltYWwsIE1hdGhDb250ZXh0KX0sCisgICogd2hlcmUgdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGlzIDxjb2RlPnJoczwvY29kZT4sCisgICogYW5kIHRoZSBjb250ZXh0IGlzIDxjb2RlPm5ldyBNYXRoQ29udGV4dCgwLCBNYXRoQ29udGV4dC5QTEFJTik8L2NvZGU+LgorICAqCisgICogQHBhcmFtICByaHMgVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGZvciB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mCisgICogICAgICAgICAgICAgdGhlIGNvbXBhcmlzb24uCisgICogQHJldHVybiAgICAgQW4gPGNvZGU+aW50PC9jb2RlPiB3aG9zZSB2YWx1ZSBpcyAtMSwgMCwgb3IgMSBhcworICAqICAgICAgICAgICAgIDxjb2RlPnRoaXM8L2NvZGU+IGlzIG51bWVyaWNhbGx5IGxlc3MgdGhhbiwgZXF1YWwgdG8sCisgICogICAgICAgICAgICAgb3IgZ3JlYXRlciB0aGFuIDxjb2RlPnJoczwvY29kZT4uCisgICogQHNlZSAgICAjY29tcGFyZVRvKE9iamVjdCkKKyAgKi8KKyAKKyBwdWJsaWMgaW50IGNvbXBhcmVUbyhjb20uaWJtLm1hdGguQmlnRGVjaW1hbCByaHMpeworICByZXR1cm4gdGhpcy5jb21wYXJlVG8ocmhzLHBsYWluTUMpOworICB9CisKKyAvKioKKyAgKiBDb21wYXJlcyB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHRvIGFub3RoZXIuCisgICogPHA+CisgICogSW1wbGVtZW50cyBudW1lcmljIGNvbXBhcmlzb24sCisgICogKGFzIGRlZmluZWQgaW4gdGhlIGRlY2ltYWwgZG9jdW1lbnRhdGlvbiwgc2VlIHtAbGluayBCaWdEZWNpbWFsCisgICogY2xhc3MgaGVhZGVyfSksCisgICogYW5kIHJldHVybnMgYSByZXN1bHQgb2YgdHlwZSA8Y29kZT5pbnQ8L2NvZGU+LgorICAqIDxwPgorICAqIFRoZSByZXN1bHQgd2lsbCBiZToKKyAgKiA8dGFibGUgY2VsbHBhZGRpbmc9Mj48dHI+CisgICogPHRkIGFsaWduPXJpZ2h0PjxiPi0xPC9iPjwvdGQ+CisgICogPHRkPmlmIHRoZSBjdXJyZW50IG9iamVjdCBpcyBsZXNzIHRoYW4gdGhlIGZpcnN0IHBhcmFtZXRlcjwvdGQ+CisgICogPC90cj48dHI+CisgICogPHRkIGFsaWduPXJpZ2h0PjxiPjA8L2I+PC90ZD4KKyAgKiA8dGQ+aWYgdGhlIGN1cnJlbnQgb2JqZWN0IGlzIGVxdWFsIHRvIHRoZSBmaXJzdCBwYXJhbWV0ZXI8L3RkPgorICAqIDwvdHI+PHRyPgorICAqIDx0ZCBhbGlnbj1yaWdodD48Yj4xPC9iPjwvdGQ+CisgICogPHRkPmlmIHRoZSBjdXJyZW50IG9iamVjdCBpcyBncmVhdGVyIHRoYW4gdGhlIGZpcnN0IHBhcmFtZXRlci48L3RkPgorICAqIDwvdHI+PC90YWJsZT4KKyAgKiA8cD4KKyAgKiBBIHtAbGluayAjY29tcGFyZVRvKE9iamVjdCl9IG1ldGhvZCBpcyBhbHNvIHByb3ZpZGVkLgorICAqCisgICogQHBhcmFtICByaHMgVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGZvciB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mCisgICogICAgICAgICAgICAgdGhlIGNvbXBhcmlzb24uCisgICogQHBhcmFtICBzZXQgVGhlIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBhcml0aG1ldGljIHNldHRpbmdzLgorICAqIEByZXR1cm4gICAgIEFuIDxjb2RlPmludDwvY29kZT4gd2hvc2UgdmFsdWUgaXMgLTEsIDAsIG9yIDEgYXMKKyAgKiAgICAgICAgICAgICA8Y29kZT50aGlzPC9jb2RlPiBpcyBudW1lcmljYWxseSBsZXNzIHRoYW4sIGVxdWFsIHRvLAorICAqICAgICAgICAgICAgIG9yIGdyZWF0ZXIgdGhhbiA8Y29kZT5yaHM8L2NvZGU+LgorICAqIEBzZWUgICAgI2NvbXBhcmVUbyhPYmplY3QpCisgICogQHNpbmNlICBJQk0gSkRLIDEuMS44CisgICovCisgCisgcHVibGljIGludCBjb21wYXJlVG8oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgcmhzLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBzZXQpeworICBpbnQgdGhpc2xlbmd0aD0wOworICBpbnQgaT0wOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBuZXdyaHM7CisgIC8vIHJocz1udWxsIHdpbGwgcmFpc2UgTnVsbFBvaW50ZXJFeGNlcHRpb24sIGFzIHBlciBDb21wYXJhYmxlIGludGVyZmFjZQorICBpZiAoc2V0Lmxvc3REaWdpdHMpIAorICAgY2hlY2tkaWdpdHMocmhzLHNldC5kaWdpdHMpOworICAvLyBbYWRkIHdpbGwgcmVjaGVjayBpbiBzbG93cGF0aCBjYXNlcyAuLiBidXQgd291bGQgcmVwb3J0IC1yaHNdCisgIGlmICgodGhpcy5pbmQ9PXJocy5pbmQpJih0aGlzLmV4cD09cmhzLmV4cCkpIAorICAgeworICAgIC8qIHNpZ24gJiBleHBvbmVudCB0aGUgc2FtZSBbdmVyeSBjb21tb25dICovCisgICAgdGhpc2xlbmd0aD10aGlzLm1hbnQubGVuZ3RoOworICAgIGlmICh0aGlzbGVuZ3RoPHJocy5tYW50Lmxlbmd0aCkgCisgICAgIHJldHVybiAoYnl0ZSktdGhpcy5pbmQ7CisgICAgaWYgKHRoaXNsZW5ndGg+cmhzLm1hbnQubGVuZ3RoKSAKKyAgICAgcmV0dXJuIHRoaXMuaW5kOworICAgIC8qIGxlbmd0aHMgYXJlIHRoZSBzYW1lOyB3ZSBjYW4gZG8gYSBzdHJhaWdodCBtYW50aXNzYSBjb21wYXJlCisgICAgICAgdW5sZXNzIG1heWJlIHJvdW5kaW5nIFtyb3VuZGluZyBpcyB2ZXJ5IHVudXN1YWxdICovCisgICAgaWYgKCh0aGlzbGVuZ3RoPD1zZXQuZGlnaXRzKXwoc2V0LmRpZ2l0cz09MCkpIAorICAgICB7CisgICAgICB7aW50ICQ2PXRoaXNsZW5ndGg7aT0wO2k6Zm9yKDskNj4wOyQ2LS0saSsrKXsKKyAgICAgICBpZiAodGhpcy5tYW50W2ldPHJocy5tYW50W2ldKSAKKyAgICAgICAgcmV0dXJuIChieXRlKS10aGlzLmluZDsKKyAgICAgICBpZiAodGhpcy5tYW50W2ldPnJocy5tYW50W2ldKSAKKyAgICAgICAgcmV0dXJuIHRoaXMuaW5kOworICAgICAgIH0KKyAgICAgIH0vKmkqLworICAgICAgcmV0dXJuIDA7IC8vIGlkZW50aWNhbAorICAgICB9CisgICAvKiBkcm9wIHRocm91Z2ggZm9yIGZ1bGwgY29tcGFyaXNvbiAqLworICAgfQorICBlbHNlIAorICAgeworICAgIC8qIE1vcmUgZmFzdHBhdGhzIHBvc3NpYmxlICovCisgICAgaWYgKHRoaXMuaW5kPHJocy5pbmQpIAorICAgICByZXR1cm4gLTE7CisgICAgaWYgKHRoaXMuaW5kPnJocy5pbmQpIAorICAgICByZXR1cm4gMTsKKyAgIH0KKyAgLyogY2Fycnkgb3V0IGEgc3VidHJhY3QgdG8gbWFrZSB0aGUgY29tcGFyaXNvbiAqLworICBuZXdyaHM9Y2xvbmUocmhzKTsgLy8gc2FmZSBjb3B5CisgIG5ld3Jocy5pbmQ9KGJ5dGUpLW5ld3Jocy5pbmQ7IC8vIHByZXBhcmUgdG8gc3VidHJhY3QKKyAgcmV0dXJuIHRoaXMuYWRkKG5ld3JocyxzZXQpLmluZDsgLy8gYWRkLCBhbmQgcmV0dXJuIHNpZ24gb2YgcmVzdWx0CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSBwbGFpbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqIDxjb2RlPnRoaXMvcmhzPC9jb2RlPiwgdXNpbmcgZml4ZWQgcG9pbnQgYXJpdGhtZXRpYy4KKyAgKiA8cD4KKyAgKiBUaGUgc2FtZSBhcyB7QGxpbmsgI2RpdmlkZShCaWdEZWNpbWFsLCBpbnQpfSwKKyAgKiB3aGVyZSB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gaXMgPGNvZGU+cmhzPC9jb2RlPiwKKyAgKiBhbmQgdGhlIHJvdW5kaW5nIG1vZGUgaXMge0BsaW5rIE1hdGhDb250ZXh0I1JPVU5EX0hBTEZfVVB9LgorICAqCisgICogVGhlIGxlbmd0aCBvZiB0aGUgZGVjaW1hbCBwYXJ0ICh0aGUgc2NhbGUpIG9mIHRoZSByZXN1bHQgd2lsbCBiZQorICAqIHRoZSBzYW1lIGFzIHRoZSBzY2FsZSBvZiB0aGUgY3VycmVudCBvYmplY3QsIGlmIHRoZSBsYXR0ZXIgd2VyZQorICAqIGZvcm1hdHRlZCB3aXRob3V0IGV4cG9uZW50aWFsIG5vdGF0aW9uLgorICAqCisgICogQHBhcmFtICByaHMgVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGZvciB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mCisgICogICAgICAgICAgICAgdGhlIGRpdmlzaW9uLgorICAqIEByZXR1cm4gICAgIEEgcGxhaW4gPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiAgICAgICAgICAgICA8Y29kZT50aGlzL3JoczwvY29kZT4sIHVzaW5nIGZpeGVkIHBvaW50IGFyaXRobWV0aWMuCisgICogQHRocm93cyBBcml0aG1ldGljRXhjZXB0aW9uIGlmIDxjb2RlPnJoczwvY29kZT4gaXMgemVyby4KKyAgKiBAc2luY2UgIElCTSBKREsgMS4xLjgKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgZGl2aWRlKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHJocyl7CisgIHJldHVybiB0aGlzLmRvZGl2aWRlKCdEJyxyaHMscGxhaW5NQywtMSk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSBwbGFpbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqIDxjb2RlPnRoaXMvcmhzPC9jb2RlPiwgdXNpbmcgZml4ZWQgcG9pbnQgYXJpdGhtZXRpYyBhbmQgYQorICAqIHJvdW5kaW5nIG1vZGUuCisgICogPHA+CisgICogVGhlIHNhbWUgYXMge0BsaW5rICNkaXZpZGUoQmlnRGVjaW1hbCwgaW50LCBpbnQpfSwKKyAgKiB3aGVyZSB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gaXMgPGNvZGU+cmhzPC9jb2RlPiwKKyAgKiBhbmQgdGhlIHNlY29uZCBwYXJhbWV0ZXIgaXMgPGNvZGU+dGhpcy5zY2FsZSgpPC9jb2RlPiwgYW5kCisgICogdGhlIHRoaXJkIGlzIDxjb2RlPnJvdW5kPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBUaGUgbGVuZ3RoIG9mIHRoZSBkZWNpbWFsIHBhcnQgKHRoZSBzY2FsZSkgb2YgdGhlIHJlc3VsdCB3aWxsCisgICogdGhlcmVmb3JlIGJlIHRoZSBzYW1lIGFzIHRoZSBzY2FsZSBvZiB0aGUgY3VycmVudCBvYmplY3QsIGlmIHRoZQorICAqIGxhdHRlciB3ZXJlIGZvcm1hdHRlZCB3aXRob3V0IGV4cG9uZW50aWFsIG5vdGF0aW9uLgorICAqIDxwPgorICAqIEBwYXJhbSAgcmhzICAgVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGZvciB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mCisgICogICAgICAgICAgICAgICB0aGUgZGl2aXNpb24uCisgICogQHBhcmFtICByb3VuZCBUaGUgPGNvZGU+aW50PC9jb2RlPiByb3VuZGluZyBtb2RlIHRvIGJlIHVzZWQgZm9yCisgICogICAgICAgICAgICAgICB0aGUgZGl2aXNpb24gKHNlZSB0aGUge0BsaW5rIE1hdGhDb250ZXh0fSBjbGFzcykuCisgICogQHJldHVybiAgICAgICBBIHBsYWluIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzCisgICogICAgICAgICAgICAgICA8Y29kZT50aGlzL3JoczwvY29kZT4sIHVzaW5nIGZpeGVkIHBvaW50IGFyaXRobWV0aWMKKyAgKiAgICAgICAgICAgICAgIGFuZCB0aGUgc3BlY2lmaWVkIHJvdW5kaW5nIG1vZGUuCisgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgPGNvZGU+cm91bmQ8L2NvZGU+IGlzIG5vdCBhCisgICogICAgICAgICAgICAgICB2YWxpZCByb3VuZGluZyBtb2RlLgorICAqIEB0aHJvd3MgQXJpdGhtZXRpY0V4Y2VwdGlvbiBpZiA8Y29kZT5yaHM8L2NvZGU+IGlzIHplcm8uCisgICogQHRocm93cyBBcml0aG1ldGljRXhjZXB0aW9uIGlmIDxjb2RlPnJvdW5kPC9jb2RlPiBpcyB7QGxpbmsKKyAgKiAgICAgICAgICAgICAgIE1hdGhDb250ZXh0I1JPVU5EX1VOTkVDRVNTQVJZfSBhbmQKKyAgKiAgICAgICAgICAgICAgIDxjb2RlPnRoaXMuc2NhbGUoKTwvY29kZT4gaXMgaW5zdWZmaWNpZW50IHRvCisgICogICAgICAgICAgICAgICByZXByZXNlbnQgdGhlIHJlc3VsdCBleGFjdGx5LgorICAqLworIAorIHB1YmxpYyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkaXZpZGUoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgcmhzLGludCByb3VuZCl7CisgIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBzZXQ7CisgIHNldD1uZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOLGZhbHNlLHJvdW5kKTsgLy8gW2NoZWNrcyByb3VuZCwgdG9vXQorICByZXR1cm4gdGhpcy5kb2RpdmlkZSgnRCcscmhzLHNldCwtMSk7IC8vIHRha2Ugc2NhbGUgZnJvbSBMSFMKKyAgfQorCisgLyoqCisgICogUmV0dXJucyBhIHBsYWluIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzCisgICogPGNvZGU+dGhpcy9yaHM8L2NvZGU+LCB1c2luZyBmaXhlZCBwb2ludCBhcml0aG1ldGljIGFuZCBhCisgICogZ2l2ZW4gc2NhbGUgYW5kIHJvdW5kaW5nIG1vZGUuCisgICogPHA+CisgICogVGhlIHNhbWUgYXMge0BsaW5rICNkaXZpZGUoQmlnRGVjaW1hbCwgTWF0aENvbnRleHQpfSwKKyAgKiB3aGVyZSB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gaXMgPGNvZGU+cmhzPC9jb2RlPiwKKyAgKiA8Y29kZT5uZXcgTWF0aENvbnRleHQoMCwgTWF0aENvbnRleHQuUExBSU4sIGZhbHNlLCByb3VuZCk8L2NvZGU+LAorICAqIGV4Y2VwdCB0aGF0IHRoZSBsZW5ndGggb2YgdGhlIGRlY2ltYWwgcGFydCAodGhlIHNjYWxlKSB0byBiZSB1c2VkCisgICogZm9yIHRoZSByZXN1bHQgaXMgZXhwbGljaXQgcmF0aGVyIHRoYW4gYmVpbmcgdGFrZW4gZnJvbQorICAqIDxjb2RlPnRoaXM8L2NvZGU+LgorICAqIDxwPgorICAqIFRoZSBsZW5ndGggb2YgdGhlIGRlY2ltYWwgcGFydCAodGhlIHNjYWxlKSBvZiB0aGUgcmVzdWx0IHdpbGwgYmUKKyAgKiB0aGUgc2FtZSBhcyB0aGUgc2NhbGUgb2YgdGhlIGN1cnJlbnQgb2JqZWN0LCBpZiB0aGUgbGF0dGVyIHdlcmUKKyAgKiBmb3JtYXR0ZWQgd2l0aG91dCBleHBvbmVudGlhbCBub3RhdGlvbi4KKyAgKiA8cD4KKyAgKiBAcGFyYW0gIHJocyAgIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBmb3IgdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZgorICAqICAgICAgICAgICAgICAgdGhlIGRpdmlzaW9uLgorICAqIEBwYXJhbSAgc2NhbGUgVGhlIDxjb2RlPmludDwvY29kZT4gc2NhbGUgdG8gYmUgdXNlZCBmb3IgdGhlIHJlc3VsdC4KKyAgKiBAcGFyYW0gIHJvdW5kIFRoZSA8Y29kZT5pbnQ8L2NvZGU+IHJvdW5kaW5nIG1vZGUgdG8gYmUgdXNlZCBmb3IKKyAgKiAgICAgICAgICAgICAgIHRoZSBkaXZpc2lvbiAoc2VlIHRoZSB7QGxpbmsgTWF0aENvbnRleHR9IGNsYXNzKS4KKyAgKiBAcmV0dXJuICAgICAgIEEgcGxhaW4gPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiAgICAgICAgICAgICAgIDxjb2RlPnRoaXMvcmhzPC9jb2RlPiwgdXNpbmcgZml4ZWQgcG9pbnQgYXJpdGhtZXRpYworICAqICAgICAgICAgICAgICAgYW5kIHRoZSBzcGVjaWZpZWQgcm91bmRpbmcgbW9kZS4KKyAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiA8Y29kZT5yb3VuZDwvY29kZT4gaXMgbm90IGEKKyAgKiAgICAgICAgICAgICAgIHZhbGlkIHJvdW5kaW5nIG1vZGUuCisgICogQHRocm93cyBBcml0aG1ldGljRXhjZXB0aW9uIGlmIDxjb2RlPnJoczwvY29kZT4gaXMgemVyby4KKyAgKiBAdGhyb3dzIEFyaXRobWV0aWNFeGNlcHRpb24gaWYgPGNvZGU+c2NhbGU8L2NvZGU+IGlzIG5lZ2F0aXZlLgorICAqIEB0aHJvd3MgQXJpdGhtZXRpY0V4Y2VwdGlvbiBpZiA8Y29kZT5yb3VuZDwvY29kZT4gaXMge0BsaW5rCisgICogICAgICAgICAgICAgICBNYXRoQ29udGV4dCNST1VORF9VTk5FQ0VTU0FSWX0gYW5kIDxjb2RlPnNjYWxlPC9jb2RlPgorICAqICAgICAgICAgICAgICAgaXMgaW5zdWZmaWNpZW50IHRvIHJlcHJlc2VudCB0aGUgcmVzdWx0IGV4YWN0bHkuCisgICovCisgCisgcHVibGljIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGRpdmlkZShjb20uaWJtLm1hdGguQmlnRGVjaW1hbCByaHMsaW50IHNjYWxlLGludCByb3VuZCl7CisgIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBzZXQ7CisgIGlmIChzY2FsZTwwKSAKKyAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiTmVnYXRpdmUgc2NhbGU6IisiICIrc2NhbGUpOworICBzZXQ9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTixmYWxzZSxyb3VuZCk7IC8vIFtjaGVja3Mgcm91bmRdCisgIHJldHVybiB0aGlzLmRvZGl2aWRlKCdEJyxyaHMsc2V0LHNjYWxlKTsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzIDxjb2RlPnRoaXMvcmhzPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBJbXBsZW1lbnRzIHRoZSBkaXZpc2lvbiAoPGI+PGNvZGU+LzwvY29kZT48L2I+KSBvcGVyYXRvcgorICAqIChhcyBkZWZpbmVkIGluIHRoZSBkZWNpbWFsIGRvY3VtZW50YXRpb24sIHNlZSB7QGxpbmsgQmlnRGVjaW1hbAorICAqIGNsYXNzIGhlYWRlcn0pLAorICAqIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgYXMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBvYmplY3QuCisgICoKKyAgKiBAcGFyYW0gIHJocyBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZm9yIHRoZSByaWdodCBoYW5kIHNpZGUgb2YKKyAgKiAgICAgICAgICAgICB0aGUgZGl2aXNpb24uCisgICogQHBhcmFtICBzZXQgVGhlIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBhcml0aG1ldGljIHNldHRpbmdzLgorICAqIEByZXR1cm4gICAgIEEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiAgICAgICAgICAgICA8Y29kZT50aGlzL3JoczwvY29kZT4uCisgICogQHRocm93cyBBcml0aG1ldGljRXhjZXB0aW9uIGlmIDxjb2RlPnJoczwvY29kZT4gaXMgemVyby4KKyAgKiBAc2luY2UgIElCTSBKREsgMS4xLjgKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgZGl2aWRlKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHJocyxjb20uaWJtLm1hdGguTWF0aENvbnRleHQgc2V0KXsKKyAgcmV0dXJuIHRoaXMuZG9kaXZpZGUoJ0QnLHJocyxzZXQsLTEpOworICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIGEgcGxhaW4gPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMgdGhlIGludGVnZXIKKyAgKiBwYXJ0IG9mIDxjb2RlPnRoaXMvcmhzPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBUaGUgc2FtZSBhcyB7QGxpbmsgI2RpdmlkZUludGVnZXIoQmlnRGVjaW1hbCwgTWF0aENvbnRleHQpfSwKKyAgKiB3aGVyZSB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gaXMgPGNvZGU+cmhzPC9jb2RlPiwKKyAgKiBhbmQgdGhlIGNvbnRleHQgaXMgPGNvZGU+bmV3IE1hdGhDb250ZXh0KDAsIE1hdGhDb250ZXh0LlBMQUlOKTwvY29kZT4uCisgICoKKyAgKiBAcGFyYW0gIHJocyBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZm9yIHRoZSByaWdodCBoYW5kIHNpZGUgb2YKKyAgKiAgICAgICAgICAgICB0aGUgaW50ZWdlciBkaXZpc2lvbi4KKyAgKiBAcmV0dXJuICAgICBBIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzIHRoZSBpbnRlZ2VyCisgICogICAgICAgICAgICAgcGFydCBvZiA8Y29kZT50aGlzL3JoczwvY29kZT4uCisgICogQHRocm93cyBBcml0aG1ldGljRXhjZXB0aW9uIGlmIDxjb2RlPnJoczwvY29kZT4gaXMgemVyby4KKyAgKiBAc2luY2UgIElCTSBKREsgMS4xLjgKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgZGl2aWRlSW50ZWdlcihjb20uaWJtLm1hdGguQmlnRGVjaW1hbCByaHMpeworICAvLyBzY2FsZSAwIHRvIGRyb3AgLjAwMCB3aGVuIHBsYWluCisgIHJldHVybiB0aGlzLmRvZGl2aWRlKCdJJyxyaHMscGxhaW5NQywwKTsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzIHRoZSBpbnRlZ2VyCisgICogcGFydCBvZiA8Y29kZT50aGlzL3JoczwvY29kZT4uCisgICogPHA+CisgICogSW1wbGVtZW50cyB0aGUgaW50ZWdlciBkaXZpc2lvbiBvcGVyYXRvcgorICAqIChhcyBkZWZpbmVkIGluIHRoZSBkZWNpbWFsIGRvY3VtZW50YXRpb24sIHNlZSB7QGxpbmsgQmlnRGVjaW1hbAorICAqIGNsYXNzIGhlYWRlcn0pLAorICAqIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgYXMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBvYmplY3QuCisgICoKKyAgKiBAcGFyYW0gIHJocyBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZm9yIHRoZSByaWdodCBoYW5kIHNpZGUgb2YKKyAgKiAgICAgICAgICAgICB0aGUgaW50ZWdlciBkaXZpc2lvbi4KKyAgKiBAcGFyYW0gIHNldCBUaGUgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IGFyaXRobWV0aWMgc2V0dGluZ3MuCisgICogQHJldHVybiAgICAgQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcyB0aGUgaW50ZWdlcgorICAqICAgICAgICAgICAgIHBhcnQgb2YgPGNvZGU+dGhpcy9yaHM8L2NvZGU+LgorICAqIEB0aHJvd3MgQXJpdGhtZXRpY0V4Y2VwdGlvbiBpZiA8Y29kZT5yaHM8L2NvZGU+IGlzIHplcm8uCisgICogQHRocm93cyBBcml0aG1ldGljRXhjZXB0aW9uIGlmIHRoZSByZXN1bHQgd2lsbCBub3QgZml0IGluIHRoZQorICAqICAgICAgICAgICAgIG51bWJlciBvZiBkaWdpdHMgc3BlY2lmaWVkIGZvciB0aGUgY29udGV4dC4KKyAgKiBAc2luY2UgIElCTSBKREsgMS4xLjgKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgZGl2aWRlSW50ZWdlcihjb20uaWJtLm1hdGguQmlnRGVjaW1hbCByaHMsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IHNldCl7CisgIC8vIHNjYWxlIDAgdG8gZHJvcCAuMDAwIHdoZW4gcGxhaW4KKyAgcmV0dXJuIHRoaXMuZG9kaXZpZGUoJ0knLHJocyxzZXQsMCk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSBwbGFpbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqIHRoZSBtYXhpbXVtIG9mIDxjb2RlPnRoaXM8L2NvZGU+IGFuZCA8Y29kZT5yaHM8L2NvZGU+LgorICAqIDxwPgorICAqIFRoZSBzYW1lIGFzIHtAbGluayAjbWF4KEJpZ0RlY2ltYWwsIE1hdGhDb250ZXh0KX0sCisgICogd2hlcmUgdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGlzIDxjb2RlPnJoczwvY29kZT4sCisgICogYW5kIHRoZSBjb250ZXh0IGlzIDxjb2RlPm5ldyBNYXRoQ29udGV4dCgwLCBNYXRoQ29udGV4dC5QTEFJTik8L2NvZGU+LgorICAqCisgICogQHBhcmFtICByaHMgVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGZvciB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mCisgICogICAgICAgICAgICAgdGhlIGNvbXBhcmlzb24uCisgICogQHJldHVybiAgICAgQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqICAgICAgICAgICAgIHRoZSBtYXhpbXVtIG9mIDxjb2RlPnRoaXM8L2NvZGU+IGFuZCA8Y29kZT5yaHM8L2NvZGU+LgorICAqLworIAorIHB1YmxpYyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBtYXgoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgcmhzKXsKKyAgcmV0dXJuIHRoaXMubWF4KHJocyxwbGFpbk1DKTsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzCisgICogdGhlIG1heGltdW0gb2YgPGNvZGU+dGhpczwvY29kZT4gYW5kIDxjb2RlPnJoczwvY29kZT4uCisgICogPHA+CisgICogUmV0dXJucyB0aGUgbGFyZ2VyIG9mIHRoZSBjdXJyZW50IG9iamVjdCBhbmQgdGhlIGZpcnN0IHBhcmFtZXRlci4KKyAgKiA8cD4KKyAgKiBJZiBjYWxsaW5nIHRoZSB7QGxpbmsgI2NvbXBhcmVUbyhCaWdEZWNpbWFsLCBNYXRoQ29udGV4dCl9IG1ldGhvZAorICAqIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycyB3b3VsZCByZXR1cm4gPGNvZGU+MTwvY29kZT4gb3IKKyAgKiA8Y29kZT4wPC9jb2RlPiwgdGhlbiB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlCisgICoge0BsaW5rICNwbHVzKE1hdGhDb250ZXh0KX0gbWV0aG9kIG9uIHRoZSBjdXJyZW50IG9iamVjdCAodXNpbmcgdGhlCisgICogc2FtZSA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gcGFyYW1ldGVyKSBpcyByZXR1cm5lZC4KKyAgKiBPdGhlcndpc2UsIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUge0BsaW5rICNwbHVzKE1hdGhDb250ZXh0KX0KKyAgKiBtZXRob2Qgb24gdGhlIGZpcnN0IHBhcmFtZXRlciBvYmplY3QgKHVzaW5nIHRoZSBzYW1lCisgICogPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IHBhcmFtZXRlcikgaXMgcmV0dXJuZWQuCisgICoKKyAgKiBAcGFyYW0gIHJocyBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZm9yIHRoZSByaWdodCBoYW5kIHNpZGUgb2YKKyAgKiAgICAgICAgICAgICB0aGUgY29tcGFyaXNvbi4KKyAgKiBAcGFyYW0gIHNldCBUaGUgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IGFyaXRobWV0aWMgc2V0dGluZ3MuCisgICogQHJldHVybiAgICAgQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqICAgICAgICAgICAgIHRoZSBtYXhpbXVtIG9mIDxjb2RlPnRoaXM8L2NvZGU+IGFuZCA8Y29kZT5yaHM8L2NvZGU+LgorICAqIEBzaW5jZSAgSUJNIEpESyAxLjEuOAorICAqLworIAorIHB1YmxpYyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBtYXgoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgcmhzLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBzZXQpeworICBpZiAoKHRoaXMuY29tcGFyZVRvKHJocyxzZXQpKT49MCkgCisgICByZXR1cm4gdGhpcy5wbHVzKHNldCk7CisgIGVsc2UgCisgICByZXR1cm4gcmhzLnBsdXMoc2V0KTsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyBhIHBsYWluIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzCisgICogdGhlIG1pbmltdW0gb2YgPGNvZGU+dGhpczwvY29kZT4gYW5kIDxjb2RlPnJoczwvY29kZT4uCisgICogPHA+CisgICogVGhlIHNhbWUgYXMge0BsaW5rICNtaW4oQmlnRGVjaW1hbCwgTWF0aENvbnRleHQpfSwKKyAgKiB3aGVyZSB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gaXMgPGNvZGU+cmhzPC9jb2RlPiwKKyAgKiBhbmQgdGhlIGNvbnRleHQgaXMgPGNvZGU+bmV3IE1hdGhDb250ZXh0KDAsIE1hdGhDb250ZXh0LlBMQUlOKTwvY29kZT4uCisgICoKKyAgKiBAcGFyYW0gIHJocyBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZm9yIHRoZSByaWdodCBoYW5kIHNpZGUgb2YKKyAgKiAgICAgICAgICAgICB0aGUgY29tcGFyaXNvbi4KKyAgKiBAcmV0dXJuICAgICBBIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzCisgICogICAgICAgICAgICAgdGhlIG1pbmltdW0gb2YgPGNvZGU+dGhpczwvY29kZT4gYW5kIDxjb2RlPnJoczwvY29kZT4uCisgICovCisgCisgcHVibGljIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIG1pbihjb20uaWJtLm1hdGguQmlnRGVjaW1hbCByaHMpeworICByZXR1cm4gdGhpcy5taW4ocmhzLHBsYWluTUMpOworICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiB0aGUgbWluaW11bSBvZiA8Y29kZT50aGlzPC9jb2RlPiBhbmQgPGNvZGU+cmhzPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBSZXR1cm5zIHRoZSBzbWFsbGVyIG9mIHRoZSBjdXJyZW50IG9iamVjdCBhbmQgdGhlIGZpcnN0IHBhcmFtZXRlci4KKyAgKiA8cD4KKyAgKiBJZiBjYWxsaW5nIHRoZSB7QGxpbmsgI2NvbXBhcmVUbyhCaWdEZWNpbWFsLCBNYXRoQ29udGV4dCl9IG1ldGhvZAorICAqIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycyB3b3VsZCByZXR1cm4gPGNvZGU+LTE8L2NvZGU+IG9yCisgICogPGNvZGU+MDwvY29kZT4sIHRoZW4gdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZQorICAqIHtAbGluayAjcGx1cyhNYXRoQ29udGV4dCl9IG1ldGhvZCBvbiB0aGUgY3VycmVudCBvYmplY3QgKHVzaW5nIHRoZQorICAqIHNhbWUgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IHBhcmFtZXRlcikgaXMgcmV0dXJuZWQuCisgICogT3RoZXJ3aXNlLCB0aGUgcmVzdWx0IG9mIGNhbGxpbmcgdGhlIHtAbGluayAjcGx1cyhNYXRoQ29udGV4dCl9CisgICogbWV0aG9kIG9uIHRoZSBmaXJzdCBwYXJhbWV0ZXIgb2JqZWN0ICh1c2luZyB0aGUgc2FtZQorICAqIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBwYXJhbWV0ZXIpIGlzIHJldHVybmVkLgorICAqCisgICogQHBhcmFtICByaHMgVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGZvciB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mCisgICogICAgICAgICAgICAgdGhlIGNvbXBhcmlzb24uCisgICogQHBhcmFtICBzZXQgVGhlIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBhcml0aG1ldGljIHNldHRpbmdzLgorICAqIEByZXR1cm4gICAgIEEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiAgICAgICAgICAgICB0aGUgbWluaW11bSBvZiA8Y29kZT50aGlzPC9jb2RlPiBhbmQgPGNvZGU+cmhzPC9jb2RlPi4KKyAgKiBAc2luY2UgIElCTSBKREsgMS4xLjgKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgbWluKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHJocyxjb20uaWJtLm1hdGguTWF0aENvbnRleHQgc2V0KXsKKyAgaWYgKCh0aGlzLmNvbXBhcmVUbyhyaHMsc2V0KSk8PTApIAorICAgcmV0dXJuIHRoaXMucGx1cyhzZXQpOworICBlbHNlIAorICAgcmV0dXJuIHJocy5wbHVzKHNldCk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSBwbGFpbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqIDxjb2RlPnRoaXMqcmhzPC9jb2RlPiwgdXNpbmcgZml4ZWQgcG9pbnQgYXJpdGhtZXRpYy4KKyAgKiA8cD4KKyAgKiBUaGUgc2FtZSBhcyB7QGxpbmsgI2FkZChCaWdEZWNpbWFsLCBNYXRoQ29udGV4dCl9LAorICAqIHdoZXJlIHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBpcyA8Y29kZT5yaHM8L2NvZGU+LAorICAqIGFuZCB0aGUgY29udGV4dCBpcyA8Y29kZT5uZXcgTWF0aENvbnRleHQoMCwgTWF0aENvbnRleHQuUExBSU4pPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBUaGUgbGVuZ3RoIG9mIHRoZSBkZWNpbWFsIHBhcnQgKHRoZSBzY2FsZSkgb2YgdGhlIHJlc3VsdCB3aWxsIGJlCisgICogdGhlIHN1bSBvZiB0aGUgc2NhbGVzIG9mIHRoZSBvcGVyYW5kcywgaWYgdGhleSB3ZXJlIGZvcm1hdHRlZAorICAqIHdpdGhvdXQgZXhwb25lbnRpYWwgbm90YXRpb24uCisgICoKKyAgKiBAcGFyYW0gIHJocyBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZm9yIHRoZSByaWdodCBoYW5kIHNpZGUgb2YKKyAgKiAgICAgICAgICAgICB0aGUgbXVsdGlwbGljYXRpb24uCisgICogQHJldHVybiAgICAgQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqICAgICAgICAgICAgIDxjb2RlPnRoaXMqcmhzPC9jb2RlPiwgdXNpbmcgZml4ZWQgcG9pbnQgYXJpdGhtZXRpYy4KKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgbXVsdGlwbHkoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgcmhzKXsKKyAgcmV0dXJuIHRoaXMubXVsdGlwbHkocmhzLHBsYWluTUMpOworICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMgPGNvZGU+dGhpcypyaHM8L2NvZGU+LgorICAqIDxwPgorICAqIEltcGxlbWVudHMgdGhlIG11bHRpcGxpY2F0aW9uICg8Yj48Y29kZT4qPC9jb2RlPjwvYj4pIG9wZXJhdG9yCisgICogKGFzIGRlZmluZWQgaW4gdGhlIGRlY2ltYWwgZG9jdW1lbnRhdGlvbiwgc2VlIHtAbGluayBCaWdEZWNpbWFsCisgICogY2xhc3MgaGVhZGVyfSksCisgICogYW5kIHJldHVybnMgdGhlIHJlc3VsdCBhcyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdC4KKyAgKgorICAqIEBwYXJhbSAgcmhzIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBmb3IgdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZgorICAqICAgICAgICAgICAgIHRoZSBtdWx0aXBsaWNhdGlvbi4KKyAgKiBAcGFyYW0gIHNldCBUaGUgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IGFyaXRobWV0aWMgc2V0dGluZ3MuCisgICogQHJldHVybiAgICAgQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqICAgICAgICAgICAgIDxjb2RlPnRoaXMqcmhzPC9jb2RlPi4KKyAgKiBAc2luY2UgIElCTSBKREsgMS4xLjgKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgbXVsdGlwbHkoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgcmhzLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBzZXQpeworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBsaHM7CisgIGludCBwYWRkaW5nOworICBpbnQgcmVxZGlnOworICBieXRlIG11bHRlcltdPW51bGw7CisgIGJ5dGUgbXVsdGFuZFtdPW51bGw7CisgIGludCBtdWx0YW5kbGVuOworICBpbnQgYWNjbGVuPTA7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHJlczsKKyAgYnl0ZSBhY2NbXTsKKyAgaW50IG49MDsKKyAgYnl0ZSBtdWx0PTA7CisgIGlmIChzZXQubG9zdERpZ2l0cykgCisgICBjaGVja2RpZ2l0cyhyaHMsc2V0LmRpZ2l0cyk7CisgIGxocz10aGlzOyAvLyBuYW1lIGZvciBjbGFyaXR5IGFuZCBwcm94eQorICAKKyAgLyogUHJlcGFyZSBudW1iZXJzICh0cnVuY2F0ZSwgdW5sZXNzIHVubGltaXRlZCBwcmVjaXNpb24pICovCisgIHBhZGRpbmc9MDsgLy8gdHJhaWxpbmcgMCdzIHRvIGFkZAorICByZXFkaWc9c2V0LmRpZ2l0czsgLy8gbG9jYWwgY29weQorICBpZiAocmVxZGlnPjApIAorICAgeworICAgIGlmIChsaHMubWFudC5sZW5ndGg+cmVxZGlnKSAKKyAgICAgbGhzPWNsb25lKGxocykucm91bmQoc2V0KTsKKyAgICBpZiAocmhzLm1hbnQubGVuZ3RoPnJlcWRpZykgCisgICAgIHJocz1jbG9uZShyaHMpLnJvdW5kKHNldCk7CisgICAvLyBbd2UgY291bGQgcmV1c2UgdGhlIG5ldyBMSFMgZm9yIHJlc3VsdCBpbiB0aGlzIGNhc2VdCisgICB9CisgIGVsc2UgCisgICB7LyogdW5saW1pdGVkICovCisgICAgLy8gZml4ZWQgcG9pbnQgYXJpdGhtZXRpYyB3aWxsIHdhbnQgZXZlcnkgdHJhaWxpbmcgMDsgd2UgYWRkIHRoZXNlCisgICAgLy8gYWZ0ZXIgdGhlIGNhbGN1bGF0aW9uIHJhdGhlciB0aGFuIGJlZm9yZSwgZm9yIHNwZWVkLgorICAgIGlmIChsaHMuZXhwPjApIAorICAgICBwYWRkaW5nPXBhZGRpbmcrbGhzLmV4cDsKKyAgICBpZiAocmhzLmV4cD4wKSAKKyAgICAgcGFkZGluZz1wYWRkaW5nK3Jocy5leHA7CisgICB9CisgIAorICAvLyBGb3IgYmVzdCBzcGVlZCwgYXMgaW4gRE1TUkNOLCB3ZSB1c2UgdGhlIHNob3J0ZXIgbnVtYmVyIGFzIHRoZQorICAvLyBtdWx0aXBsaWVyIGFuZCB0aGUgbG9uZ2VyIGFzIHRoZSBtdWx0aXBsaWNhbmQuCisgIC8vIDE5OTkuMTIuMjI6IFdlIHVzZWQgdG8gc3BlY2lhbCBjYXNlIHdoZW4gdGhlIHJlc3VsdCB3b3VsZCBmaXQgaW4KKyAgLy8gICAgICAgICAgICAgYSBsb25nLCBidXQgd2l0aCBKYXZhIDEuMyB0aGlzIGdhdmUgbm8gYWR2YW50YWdlLgorICBpZiAobGhzLm1hbnQubGVuZ3RoPHJocy5tYW50Lmxlbmd0aCkgCisgICB7CisgICAgbXVsdGVyPWxocy5tYW50OworICAgIG11bHRhbmQ9cmhzLm1hbnQ7CisgICB9CisgIGVsc2UgCisgICB7CisgICAgbXVsdGVyPXJocy5tYW50OworICAgIG11bHRhbmQ9bGhzLm1hbnQ7CisgICB9CisgIAorICAvKiBDYWxjdWxhdGUgaG93IGxvbmcgcmVzdWx0IGJ5dGUgYXJyYXkgd2lsbCBiZSAqLworICBtdWx0YW5kbGVuPShtdWx0ZXIubGVuZ3RoK211bHRhbmQubGVuZ3RoKS0xOyAvLyBlZmZlY3RpdmUgbGVuZ3RoCisgIC8vIG9wdGltaXplIGZvciA3NSUgb2YgdGhlIGNhc2VzIHdoZXJlIGEgY2FycnkgaXMgZXhwZWN0ZWQuLi4KKyAgaWYgKChtdWx0ZXJbMF0qbXVsdGFuZFswXSk+OSkgCisgICBhY2NsZW49bXVsdGFuZGxlbisxOworICBlbHNlIAorICAgYWNjbGVuPW11bHRhbmRsZW47CisgIAorICAvKiBOb3cgdGhlIG1haW4gbG9uZyBtdWx0aXBsaWNhdGlvbiBsb29wICovCisgIHJlcz1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoKTsgLy8gd2hlcmUgd2UnbGwgYnVpbGQgcmVzdWx0CisgIGFjYz1uZXcgYnl0ZVthY2NsZW5dOyAvLyBhY2N1bXVsYXRvciwgYWxsIHplcm9zCisgIC8vIDE5OTguMDcuMDE6IGNhbGN1bGF0ZSBmcm9tIGxlZnQgdG8gcmlnaHQgc28gdGhhdCBhY2N1bXVsYXRvciBnb2VzCisgIC8vIHRvIGxpa2VseSBmaW5hbCBsZW5ndGggb24gZmlyc3QgYWRkaXRpb247IHRoaXMgYXZvaWRzIGEgb25lLWRpZ2l0CisgIC8vIGV4dGVuc2lvbiAoYW5kIG9iamVjdCBhbGxvY2F0aW9uKSBlYWNoIHRpbWUgYXJvdW5kIHRoZSBsb29wLgorICAvLyBJbml0aWFsIG51bWJlciB0aGVyZWZvcmUgaGFzIHZpcnR1YWwgemVyb3MgYWRkZWQgdG8gcmlnaHQuCisgIHtpbnQgJDc9bXVsdGVyLmxlbmd0aDtuPTA7bjpmb3IoOyQ3PjA7JDctLSxuKyspeworICAgbXVsdD1tdWx0ZXJbbl07CisgICBpZiAobXVsdCE9MCkgCisgICAgeyAvLyBbb3B0aW1pemF0aW9uXQorICAgICAvLyBhY2N1bXVsYXRlIFthY2N1bXVsYXRvciBpcyByZXVzYWJsZSBhcnJheV0KKyAgICAgYWNjPWJ5dGVhZGRzdWIoYWNjLGFjYy5sZW5ndGgsbXVsdGFuZCxtdWx0YW5kbGVuLG11bHQsdHJ1ZSk7CisgICAgfQorICAgLy8gZGl2aWRlIG11bHRpcGxpY2FuZCBieSAxMCBmb3IgbmV4dCBkaWdpdCB0byByaWdodAorICAgbXVsdGFuZGxlbi0tOyAvLyAndmlydHVhbCBsZW5ndGgnCisgICB9CisgIH0vKm4qLworICAKKyAgcmVzLmluZD0oYnl0ZSkobGhzLmluZCpyaHMuaW5kKTsgLy8gZmluYWwgc2lnbgorICByZXMuZXhwPShsaHMuZXhwK3Jocy5leHApLXBhZGRpbmc7IC8vIGZpbmFsIGV4cG9uZW50CisgIC8vIFtvdmVyZmxvdyBpcyBjaGVja2VkIGJ5IGZpbmlzaF0KKyAgCisgIC8qIGFkZCB0cmFpbGluZyB6ZXJvcyB0byB0aGUgcmVzdWx0LCBpZiBuZWNlc3NhcnkgKi8KKyAgaWYgKHBhZGRpbmc9PTApIAorICAgcmVzLm1hbnQ9YWNjOworICBlbHNlIAorICAgcmVzLm1hbnQ9ZXh0ZW5kKGFjYyxhY2MubGVuZ3RoK3BhZGRpbmcpOyAvLyBhZGQgdHJhaWxpbmcgMHMKKyAgcmV0dXJuIHJlcy5maW5pc2goc2V0LGZhbHNlKTsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyBhIHBsYWluIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzCisgICogPGNvZGU+LXRoaXM8L2NvZGU+LgorICAqIDxwPgorICAqIFRoZSBzYW1lIGFzIHtAbGluayAjbmVnYXRlKE1hdGhDb250ZXh0KX0sIHdoZXJlIHRoZSBjb250ZXh0IGlzCisgICogPGNvZGU+bmV3IE1hdGhDb250ZXh0KDAsIE1hdGhDb250ZXh0LlBMQUlOKTwvY29kZT4uCisgICogPHA+CisgICogVGhlIGxlbmd0aCBvZiB0aGUgZGVjaW1hbCBwYXJ0ICh0aGUgc2NhbGUpIG9mIHRoZSByZXN1bHQgd2lsbCBiZQorICAqIGJlIDxjb2RlPnRoaXMuc2NhbGUoKTwvY29kZT4KKyAgKgorICAqCisgICogQHJldHVybiBBIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzCisgICogICAgICAgICA8Y29kZT4tdGhpczwvY29kZT4uCisgICovCisgCisgcHVibGljIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIG5lZ2F0ZSgpeworICByZXR1cm4gdGhpcy5uZWdhdGUocGxhaW5NQyk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcyA8Y29kZT4tdGhpczwvY29kZT4uCisgICogPHA+CisgICogSW1wbGVtZW50cyB0aGUgbmVnYXRpb24gKFByZWZpeCA8Yj48Y29kZT4tPC9jb2RlPjwvYj4pIG9wZXJhdG9yCisgICogKGFzIGRlZmluZWQgaW4gdGhlIGRlY2ltYWwgZG9jdW1lbnRhdGlvbiwgc2VlIHtAbGluayBCaWdEZWNpbWFsCisgICogY2xhc3MgaGVhZGVyfSksCisgICogYW5kIHJldHVybnMgdGhlIHJlc3VsdCBhcyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdC4KKyAgKgorICAqIEBwYXJhbSAgc2V0IFRoZSA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gYXJpdGhtZXRpYyBzZXR0aW5ncy4KKyAgKiBAcmV0dXJuIEEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiAgICAgICAgIDxjb2RlPi10aGlzPC9jb2RlPi4KKyAgKiBAc2luY2UgIElCTSBKREsgMS4xLjgKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgbmVnYXRlKGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBzZXQpeworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCByZXM7CisgIC8vIE9yaWdpbmFsbHkgY2FsbGVkIG1pbnVzKCksIGNoYW5nZWQgdG8gbWF0Y2hlZCBKYXZhIHByZWNlZGVudHMKKyAgLy8gVGhpcyBzaW1wbHkgY2xvbmVzLCBmbGlwcyB0aGUgc2lnbiwgYW5kIHBvc3NpYmx5IHJvdW5kcworICBpZiAoc2V0Lmxvc3REaWdpdHMpIAorICAgY2hlY2tkaWdpdHMoKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKW51bGwsc2V0LmRpZ2l0cyk7CisgIHJlcz1jbG9uZSh0aGlzKTsgLy8gc2FmZSBjb3B5CisgIHJlcy5pbmQ9KGJ5dGUpLXJlcy5pbmQ7CisgIHJldHVybiByZXMuZmluaXNoKHNldCxmYWxzZSk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSBwbGFpbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqIDxjb2RlPit0aGlzPC9jb2RlPi4KKyAgKiBOb3RlIHRoYXQgPGNvZGU+dGhpczwvY29kZT4gaXMgbm90IG5lY2Vzc2FyaWx5IGEKKyAgKiBwbGFpbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiwgYnV0IHRoZSByZXN1bHQgd2lsbCBhbHdheXMgYmUuCisgICogPHA+CisgICogVGhlIHNhbWUgYXMge0BsaW5rICNwbHVzKE1hdGhDb250ZXh0KX0sIHdoZXJlIHRoZSBjb250ZXh0IGlzCisgICogPGNvZGU+bmV3IE1hdGhDb250ZXh0KDAsIE1hdGhDb250ZXh0LlBMQUlOKTwvY29kZT4uCisgICogPHA+CisgICogVGhlIGxlbmd0aCBvZiB0aGUgZGVjaW1hbCBwYXJ0ICh0aGUgc2NhbGUpIG9mIHRoZSByZXN1bHQgd2lsbCBiZQorICAqIGJlIDxjb2RlPnRoaXMuc2NhbGUoKTwvY29kZT4KKyAgKgorICAqIEByZXR1cm4gQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqICAgICAgICAgPGNvZGU+K3RoaXM8L2NvZGU+LgorICAqLworIAorIHB1YmxpYyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBwbHVzKCl7CisgIHJldHVybiB0aGlzLnBsdXMocGxhaW5NQyk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqIDxjb2RlPit0aGlzPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBJbXBsZW1lbnRzIHRoZSBwbHVzIChQcmVmaXggPGI+PGNvZGU+KzwvY29kZT48L2I+KSBvcGVyYXRvcgorICAqIChhcyBkZWZpbmVkIGluIHRoZSBkZWNpbWFsIGRvY3VtZW50YXRpb24sIHNlZSB7QGxpbmsgQmlnRGVjaW1hbAorICAqIGNsYXNzIGhlYWRlcn0pLAorICAqIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgYXMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBvYmplY3QuCisgICogPHA+CisgICogVGhpcyBtZXRob2QgaXMgdXNlZnVsIGZvciByb3VuZGluZyBvciBvdGhlcndpc2UgYXBwbHlpbmcgYSBjb250ZXh0CisgICogdG8gYSBkZWNpbWFsIHZhbHVlLgorICAqCisgICogQHBhcmFtICBzZXQgVGhlIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBhcml0aG1ldGljIHNldHRpbmdzLgorICAqIEByZXR1cm4gQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcworICAqICAgICAgICAgPGNvZGU+K3RoaXM8L2NvZGU+LgorICAqIEBzaW5jZSAgSUJNIEpESyAxLjEuOAorICAqLworIAorIHB1YmxpYyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBwbHVzKGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBzZXQpeworICAvLyBUaGlzIGNsb25lcyBhbmQgZm9yY2VzIHRoZSByZXN1bHQgdG8gdGhlIG5ldyBzZXR0aW5ncworICAvLyBNYXkgcmV0dXJuIHNhbWUgb2JqZWN0CisgIGlmIChzZXQubG9zdERpZ2l0cykgCisgICBjaGVja2RpZ2l0cygoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwpbnVsbCxzZXQuZGlnaXRzKTsKKyAgLy8gT3B0aW1pemF0aW9uOiByZXR1cm5zIHNhbWUgb2JqZWN0IGZvciBzb21lIGNvbW1vbiBjYXNlcworICBpZiAoc2V0LmZvcm09PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTikgCisgICBpZiAodGhpcy5mb3JtPT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUExBSU4pIAorICAgIHsKKyAgICAgaWYgKHRoaXMubWFudC5sZW5ndGg8PXNldC5kaWdpdHMpIAorICAgICAgcmV0dXJuIHRoaXM7CisgICAgIGlmIChzZXQuZGlnaXRzPT0wKSAKKyAgICAgIHJldHVybiB0aGlzOworICAgIH0KKyAgcmV0dXJuIGNsb25lKHRoaXMpLmZpbmlzaChzZXQsZmFsc2UpOworICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIGEgcGxhaW4gPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiA8Y29kZT50aGlzKipyaHM8L2NvZGU+LCB1c2luZyBmaXhlZCBwb2ludCBhcml0aG1ldGljLgorICAqIDxwPgorICAqIFRoZSBzYW1lIGFzIHtAbGluayAjcG93KEJpZ0RlY2ltYWwsIE1hdGhDb250ZXh0KX0sCisgICogd2hlcmUgdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGlzIDxjb2RlPnJoczwvY29kZT4sCisgICogYW5kIHRoZSBjb250ZXh0IGlzIDxjb2RlPm5ldyBNYXRoQ29udGV4dCgwLCBNYXRoQ29udGV4dC5QTEFJTik8L2NvZGU+LgorICAqIDxwPgorICAqIFRoZSBwYXJhbWV0ZXIgaXMgdGhlIHBvd2VyIHRvIHdoaWNoIHRoZSA8Y29kZT50aGlzPC9jb2RlPiB3aWxsIGJlCisgICogcmFpc2VkOyBpdCBtdXN0IGJlIGluIHRoZSByYW5nZSAwIHRocm91Z2ggOTk5OTk5OTk5LCBhbmQgbXVzdAorICAqIGhhdmUgYSBkZWNpbWFsIHBhcnQgb2YgemVyby4gIE5vdGUgdGhhdCB0aGVzZSByZXN0cmljdGlvbnMgbWF5IGJlCisgICogcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLCBzbyB0aGV5IHNob3VsZCBub3QgYmUgdXNlZCBhcyBhIHRlc3QgZm9yIGEKKyAgKiB3aG9sZSBudW1iZXIuCisgICogPHA+CisgICogSW4gYWRkaXRpb24sIHRoZSBwb3dlciBtdXN0IG5vdCBiZSBuZWdhdGl2ZSwgYXMgbm8KKyAgKiA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gaXMgdXNlZCBhbmQgc28gdGhlIHJlc3VsdCB3b3VsZCB0aGVuCisgICogYWx3YXlzIGJlIDAuCisgICoKKyAgKiBAcGFyYW0gIHJocyBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZm9yIHRoZSByaWdodCBoYW5kIHNpZGUgb2YKKyAgKiAgICAgICAgICAgICB0aGUgb3BlcmF0aW9uICh0aGUgcG93ZXIpLgorICAqIEByZXR1cm4gICAgIEEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiAgICAgICAgICAgICA8Y29kZT50aGlzKipyaHM8L2NvZGU+LCB1c2luZyBmaXhlZCBwb2ludCBhcml0aG1ldGljLgorICAqIEB0aHJvd3MgQXJpdGhtZXRpY0V4Y2VwdGlvbiBpZiA8Y29kZT5yaHM8L2NvZGU+IGlzIG91dCBvZiByYW5nZSBvcgorICAqICAgICAgICAgICAgIGlzIG5vdCBhIHdob2xlIG51bWJlci4KKyAgKiBAc2luY2UgIElCTSBKREsgMS4xLjgKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgcG93KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHJocyl7CisgIHJldHVybiB0aGlzLnBvdyhyaHMscGxhaW5NQyk7CisgIH0KKyAvLyBUaGUgbmFtZSBmb3IgdGhpcyBtZXRob2QgaXMgaW5oZXJpdGVkIGZyb20gdGhlIHByZWNlZGVudCBzZXQgYnkgdGhlCisgLy8gQmlnSW50ZWdlciBhbmQgTWF0aCBjbGFzc2VzLgorIAorIC8qKgorICAqIFJldHVybnMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcyA8Y29kZT50aGlzKipyaHM8L2NvZGU+LgorICAqIDxwPgorICAqIEltcGxlbWVudHMgdGhlIHBvd2VyICg8Yj48Y29kZT4qKjwvY29kZT48L2I+KSBvcGVyYXRvcgorICAqIChhcyBkZWZpbmVkIGluIHRoZSBkZWNpbWFsIGRvY3VtZW50YXRpb24sIHNlZSB7QGxpbmsgQmlnRGVjaW1hbAorICAqIGNsYXNzIGhlYWRlcn0pLAorICAqIGFuZCByZXR1cm5zIHRoZSByZXN1bHQgYXMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBvYmplY3QuCisgICogPHA+CisgICogVGhlIGZpcnN0IHBhcmFtZXRlciBpcyB0aGUgcG93ZXIgdG8gd2hpY2ggdGhlIDxjb2RlPnRoaXM8L2NvZGU+CisgICogd2lsbCBiZSByYWlzZWQ7IGl0IG11c3QgYmUgaW4gdGhlIHJhbmdlIC05OTk5OTk5OTkgdGhyb3VnaAorICAqIDk5OTk5OTk5OSwgYW5kIG11c3QgaGF2ZSBhIGRlY2ltYWwgcGFydCBvZiB6ZXJvLiAgTm90ZSB0aGF0IHRoZXNlCisgICogcmVzdHJpY3Rpb25zIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUsIHNvIHRoZXkgc2hvdWxkIG5vdCBiZQorICAqIHVzZWQgYXMgYSB0ZXN0IGZvciBhIHdob2xlIG51bWJlci4KKyAgKiA8cD4KKyAgKiBJZiB0aGUgPGNvZGU+ZGlnaXRzPC9jb2RlPiBzZXR0aW5nIG9mIHRoZSA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4KKyAgKiBwYXJhbWV0ZXIgaXMgMCwgdGhlIHBvd2VyIG11c3QgYmUgemVybyBvciBwb3NpdGl2ZS4KKyAgKgorICAqIEBwYXJhbSAgcmhzIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBmb3IgdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZgorICAqICAgICAgICAgICAgIHRoZSBvcGVyYXRpb24gKHRoZSBwb3dlcikuCisgICogQHBhcmFtICBzZXQgVGhlIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBhcml0aG1ldGljIHNldHRpbmdzLgorICAqIEByZXR1cm4gICAgIEEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiAgICAgICAgICAgICA8Y29kZT50aGlzKipyaHM8L2NvZGU+LgorICAqIEB0aHJvd3MgQXJpdGhtZXRpY0V4Y2VwdGlvbiBpZiA8Y29kZT5yaHM8L2NvZGU+IGlzIG91dCBvZiByYW5nZSBvcgorICAqICAgICAgICAgICAgIGlzIG5vdCBhIHdob2xlIG51bWJlci4KKyAgKiBAc2luY2UgIElCTSBKREsgMS4xLjgKKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgcG93KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHJocyxjb20uaWJtLm1hdGguTWF0aENvbnRleHQgc2V0KXsKKyAgaW50IG47CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGxoczsKKyAgaW50IHJlcWRpZzsKKyAgaW50IHdvcmtkaWdpdHM9MDsKKyAgaW50IEw9MDsKKyAgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IHdvcmtzZXQ7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHJlczsKKyAgYm9vbGVhbiBzZWVuYml0OworICBpbnQgaT0wOworICBpZiAoc2V0Lmxvc3REaWdpdHMpIAorICAgY2hlY2tkaWdpdHMocmhzLHNldC5kaWdpdHMpOworICBuPXJocy5pbnRjaGVjayhNaW5BcmcsTWF4QXJnKTsgLy8gY2hlY2sgUkhTIGJ5IHRoZSBydWxlcworICBsaHM9dGhpczsgLy8gY2xhcmlmaWVkIG5hbWUKKyAgCisgIHJlcWRpZz1zZXQuZGlnaXRzOyAvLyBsb2NhbCBjb3B5IChoZWF2aWx5IHVzZWQpCisgIGlmIChyZXFkaWc9PTApIAorICAgeworICAgIGlmIChyaHMuaW5kPT1pc25lZykgCisgICAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiTmVnYXRpdmUgcG93ZXI6IisiICIrcmhzLnRvU3RyaW5nKCkpOworICAgIHdvcmtkaWdpdHM9MDsKKyAgIH0KKyAgZWxzZSAKKyAgIHsvKiBub24tMCBkaWdpdHMgKi8KKyAgICBpZiAoKHJocy5tYW50Lmxlbmd0aCtyaHMuZXhwKT5yZXFkaWcpIAorICAgICB0aHJvdyBuZXcgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24oIlRvbyBtYW55IGRpZ2l0czoiKyIgIityaHMudG9TdHJpbmcoKSk7CisgICAgCisgICAgLyogUm91bmQgdGhlIGxocyB0byBESUdJVFMgaWYgbmVlZCBiZSAqLworICAgIGlmIChsaHMubWFudC5sZW5ndGg+cmVxZGlnKSAKKyAgICAgbGhzPWNsb25lKGxocykucm91bmQoc2V0KTsKKyAgICAKKyAgICAvKiBMIGZvciBwcmVjaXNpb24gY2FsY3VsYXRpb24gW3NlZSBBTlNJIFgzLjI3NC0xOTk2XSAqLworICAgIEw9cmhzLm1hbnQubGVuZ3RoK3Jocy5leHA7IC8vIGxlbmd0aCB3aXRob3V0IGRlY2ltYWwgemVyb3MvZXhwCisgICAgd29ya2RpZ2l0cz0ocmVxZGlnK0wpKzE7IC8vIGNhbGN1bGF0ZSB0aGUgd29ya2luZyBESUdJVFMKKyAgIH0KKyAgCisgIC8qIENyZWF0ZSBhIGNvcHkgb2Ygc2V0IGZvciB3b3JraW5nIHNldHRpbmdzICovCisgIC8vIE5vdGU6IG5vIG5lZWQgdG8gY2hlY2sgZm9yIGxvc3REaWdpdHMgYWdhaW4uCisgIC8vIDE5OTkuMDcuMTcgTm90ZTogdGhpcyBjb25zdHJ1Y3Rpb24gbXVzdCBmb2xsb3cgUkhTIGNoZWNrCisgIHdvcmtzZXQ9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCh3b3JrZGlnaXRzLHNldC5mb3JtLGZhbHNlLHNldC5yb3VuZGluZ01vZGUpOworICAKKyAgcmVzPU9ORTsgLy8gYWNjdW11bGF0b3IKKyAgaWYgKG49PTApIAorICAgcmV0dXJuIHJlczsgLy8geCoqMCA9PSAxCisgIGlmIChuPDApIAorICAgbj0oaW50KS1uOyAvLyBbcmhzLmluZCByZWNvcmRzIHRoZSBzaWduXQorICBzZWVuYml0PWZhbHNlOyAvLyBzZXQgb25jZSB3ZSd2ZSBzZWVuIGEgMS1iaXQKKyAge2k9MTtpOmZvcig7O2krKyl7IC8vIGZvciBlYWNoIGJpdCBbdG9wIGJpdCBpZ25vcmVkXQorICAgbj1uK247IC8vIHNoaWZ0IGxlZnQgMSBiaXQKKyAgIGlmIChuPDApIAorICAgIHsgLy8gdG9wIGJpdCBpcyBzZXQKKyAgICAgc2VlbmJpdD10cnVlOyAvLyBPSywgd2UncmUgb2ZmCisgICAgIHJlcz1yZXMubXVsdGlwbHkobGhzLHdvcmtzZXQpOyAvLyBhY2M9YWNjKngKKyAgICB9CisgICBpZiAoaT09MzEpIAorICAgIGJyZWFrIGk7IC8vIHRoYXQgd2FzIHRoZSBsYXN0IGJpdAorICAgaWYgKCghc2VlbmJpdCkpIAorICAgIGNvbnRpbnVlIGk7IC8vIHdlIGRvbid0IGhhdmUgdG8gc3F1YXJlIDEKKyAgIHJlcz1yZXMubXVsdGlwbHkocmVzLHdvcmtzZXQpOyAvLyBhY2M9YWNjKmFjYyBbc3F1YXJlXQorICAgfQorICB9LyppKi8gLy8gMzIgYml0cworICBpZiAocmhzLmluZDwwKSAgLy8gd2FzIGEgKiotbiBbaGVuY2UgZGlnaXRzPjBdCisgICByZXM9T05FLmRpdmlkZShyZXMsd29ya3NldCk7IC8vIC4uIHNvIGFjYz0xL2FjYworICByZXR1cm4gcmVzLmZpbmlzaChzZXQsdHJ1ZSk7IC8vIHJvdW5kIGFuZCBzdHJpcCBbb3JpZ2luYWwgZGlnaXRzXQorICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIGEgcGxhaW4gPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiB0aGUgcmVtYWluZGVyIG9mIDxjb2RlPnRoaXMvcmhzPC9jb2RlPiwgdXNpbmcgZml4ZWQgcG9pbnQgYXJpdGhtZXRpYy4KKyAgKiA8cD4KKyAgKiBUaGUgc2FtZSBhcyB7QGxpbmsgI3JlbWFpbmRlcihCaWdEZWNpbWFsLCBNYXRoQ29udGV4dCl9LAorICAqIHdoZXJlIHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBpcyA8Y29kZT5yaHM8L2NvZGU+LAorICAqIGFuZCB0aGUgY29udGV4dCBpcyA8Y29kZT5uZXcgTWF0aENvbnRleHQoMCwgTWF0aENvbnRleHQuUExBSU4pPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBUaGlzIGlzIG5vdCB0aGUgbW9kdWxvIG9wZXJhdG9yIC0tIHRoZSByZXN1bHQgbWF5IGJlIG5lZ2F0aXZlLgorICAqCisgICogQHBhcmFtICByaHMgVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGZvciB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mCisgICogICAgICAgICAgICAgdGhlIHJlbWFpbmRlciBvcGVyYXRpb24uCisgICogQHJldHVybiAgICAgQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcyB0aGUgcmVtYWluZGVyCisgICogICAgICAgICAgICAgb2YgPGNvZGU+dGhpcy9yaHM8L2NvZGU+LCB1c2luZyBmaXhlZCBwb2ludCBhcml0aG1ldGljLgorICAqIEB0aHJvd3MgQXJpdGhtZXRpY0V4Y2VwdGlvbiBpZiA8Y29kZT5yaHM8L2NvZGU+IGlzIHplcm8uCisgICogQHNpbmNlICBJQk0gSkRLIDEuMS44CisgICovCisgCisgcHVibGljIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHJlbWFpbmRlcihjb20uaWJtLm1hdGguQmlnRGVjaW1hbCByaHMpeworICByZXR1cm4gdGhpcy5kb2RpdmlkZSgnUicscmhzLHBsYWluTUMsLTEpOworICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMgdGhlIHJlbWFpbmRlciBvZgorICAqIDxjb2RlPnRoaXMvcmhzPC9jb2RlPi4KKyAgKiA8cD4KKyAgKiBJbXBsZW1lbnRzIHRoZSByZW1haW5kZXIgb3BlcmF0b3IKKyAgKiAoYXMgZGVmaW5lZCBpbiB0aGUgZGVjaW1hbCBkb2N1bWVudGF0aW9uLCBzZWUge0BsaW5rIEJpZ0RlY2ltYWwKKyAgKiBjbGFzcyBoZWFkZXJ9KSwKKyAgKiBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGFzIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb2JqZWN0LgorICAqIDxwPgorICAqIFRoaXMgaXMgbm90IHRoZSBtb2R1bG8gb3BlcmF0b3IgLS0gdGhlIHJlc3VsdCBtYXkgYmUgbmVnYXRpdmUuCisgICoKKyAgKiBAcGFyYW0gIHJocyBUaGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gZm9yIHRoZSByaWdodCBoYW5kIHNpZGUgb2YKKyAgKiAgICAgICAgICAgICB0aGUgcmVtYWluZGVyIG9wZXJhdGlvbi4KKyAgKiBAcGFyYW0gIHNldCBUaGUgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IGFyaXRobWV0aWMgc2V0dGluZ3MuCisgICogQHJldHVybiAgICAgQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcyB0aGUgcmVtYWluZGVyCisgICogICAgICAgICAgICAgb2YgPGNvZGU+dGhpcytyaHM8L2NvZGU+LgorICAqIEB0aHJvd3MgQXJpdGhtZXRpY0V4Y2VwdGlvbiBpZiA8Y29kZT5yaHM8L2NvZGU+IGlzIHplcm8uCisgICogQHRocm93cyBBcml0aG1ldGljRXhjZXB0aW9uIGlmIHRoZSBpbnRlZ2VyIHBhcnQgb2YgdGhlIHJlc3VsdCB3aWxsCisgICogICAgICAgICAgICAgbm90IGZpdCBpbiB0aGUgbnVtYmVyIG9mIGRpZ2l0cyBzcGVjaWZpZWQgZm9yIHRoZQorICAqICAgICAgICAgICAgIGNvbnRleHQuCisgICogQHNpbmNlICBJQk0gSkRLIDEuMS44CisgICovCisgCisgcHVibGljIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHJlbWFpbmRlcihjb20uaWJtLm1hdGguQmlnRGVjaW1hbCByaHMsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IHNldCl7CisgIHJldHVybiB0aGlzLmRvZGl2aWRlKCdSJyxyaHMsc2V0LC0xKTsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyBhIHBsYWluIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzCisgICogPGNvZGU+dGhpcy1yaHM8L2NvZGU+LCB1c2luZyBmaXhlZCBwb2ludCBhcml0aG1ldGljLgorICAqIDxwPgorICAqIFRoZSBzYW1lIGFzIHtAbGluayAjc3VidHJhY3QoQmlnRGVjaW1hbCwgTWF0aENvbnRleHQpfSwKKyAgKiB3aGVyZSB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gaXMgPGNvZGU+cmhzPC9jb2RlPiwKKyAgKiBhbmQgdGhlIGNvbnRleHQgaXMgPGNvZGU+bmV3IE1hdGhDb250ZXh0KDAsIE1hdGhDb250ZXh0LlBMQUlOKTwvY29kZT4uCisgICogPHA+CisgICogVGhlIGxlbmd0aCBvZiB0aGUgZGVjaW1hbCBwYXJ0ICh0aGUgc2NhbGUpIG9mIHRoZSByZXN1bHQgd2lsbCBiZQorICAqIHRoZSBtYXhpbXVtIG9mIHRoZSBzY2FsZXMgb2YgdGhlIHR3byBvcGVyYW5kcy4KKyAgKgorICAqIEBwYXJhbSAgcmhzIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBmb3IgdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZgorICAqICAgICAgICAgICAgIHRoZSBzdWJ0cmFjdGlvbi4KKyAgKiBAcmV0dXJuICAgICBBIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzCisgICogICAgICAgICAgICAgPGNvZGU+dGhpcy1yaHM8L2NvZGU+LCB1c2luZyBmaXhlZCBwb2ludCBhcml0aG1ldGljLgorICAqLworIAorIHB1YmxpYyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBzdWJ0cmFjdChjb20uaWJtLm1hdGguQmlnRGVjaW1hbCByaHMpeworICByZXR1cm4gdGhpcy5zdWJ0cmFjdChyaHMscGxhaW5NQyk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSB2YWx1ZSBpcyA8Y29kZT50aGlzLXJoczwvY29kZT4uCisgICogPHA+CisgICogSW1wbGVtZW50cyB0aGUgc3VidHJhY3Rpb24gKDxiPjxjb2RlPi08L2NvZGU+PC9iPikgb3BlcmF0b3IKKyAgKiAoYXMgZGVmaW5lZCBpbiB0aGUgZGVjaW1hbCBkb2N1bWVudGF0aW9uLCBzZWUge0BsaW5rIEJpZ0RlY2ltYWwKKyAgKiBjbGFzcyBoZWFkZXJ9KSwKKyAgKiBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IGFzIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb2JqZWN0LgorICAqCisgICogQHBhcmFtICByaHMgVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGZvciB0aGUgcmlnaHQgaGFuZCBzaWRlIG9mCisgICogICAgICAgICAgICAgdGhlIHN1YnRyYWN0aW9uLgorICAqIEBwYXJhbSAgc2V0IFRoZSA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gYXJpdGhtZXRpYyBzZXR0aW5ncy4KKyAgKiBAcmV0dXJuICAgICBBIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHZhbHVlIGlzCisgICogICAgICAgICAgICAgPGNvZGU+dGhpcy1yaHM8L2NvZGU+LgorICAqIEBzaW5jZSAgSUJNIEpESyAxLjEuOAorICAqLworIAorIHB1YmxpYyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBzdWJ0cmFjdChjb20uaWJtLm1hdGguQmlnRGVjaW1hbCByaHMsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IHNldCl7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIG5ld3JoczsKKyAgaWYgKHNldC5sb3N0RGlnaXRzKSAKKyAgIGNoZWNrZGlnaXRzKHJocyxzZXQuZGlnaXRzKTsKKyAgLy8gW2FkZCB3aWxsIHJlY2hlY2sgLi4gYnV0IHdvdWxkIHJlcG9ydCAtcmhzXQorICAvKiBjYXJyeSBvdXQgdGhlIHN1YnRyYWN0aW9uICovCisgIC8vIHdlIGNvdWxkIGZhc3RwYXRoIC0wLCBidXQgaXQgaXMgdG9vIHJhcmUuCisgIG5ld3Jocz1jbG9uZShyaHMpOyAvLyBzYWZlIGNvcHkKKyAgbmV3cmhzLmluZD0oYnl0ZSktbmV3cmhzLmluZDsgLy8gcHJlcGFyZSB0byBzdWJ0cmFjdAorICByZXR1cm4gdGhpcy5hZGQobmV3cmhzLHNldCk7IC8vIGFyaXRobWV0aWMKKyAgfQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qIE90aGVyIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqCisgICogQ29udmVydHMgdGhpcyA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB0byBhIDxjb2RlPmJ5dGU8L2NvZGU+LgorICAqIElmIHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBoYXMgYSBub24temVybyBkZWNpbWFsIHBhcnQgb3IgaXMKKyAgKiBvdXQgb2YgdGhlIHBvc3NpYmxlIHJhbmdlIGZvciBhIDxjb2RlPmJ5dGU8L2NvZGU+ICg4LWJpdCBzaWduZWQKKyAgKiBpbnRlZ2VyKSByZXN1bHQgdGhlbiBhbiA8Y29kZT5Bcml0aG1ldGljRXhjZXB0aW9uPC9jb2RlPiBpcyB0aHJvd24uCisgICoKKyAgKiBAcmV0dXJuIEEgPGNvZGU+Ynl0ZTwvY29kZT4gZXF1YWwgaW4gdmFsdWUgdG8gPGNvZGU+dGhpczwvY29kZT4uCisgICogQHRocm93cyBBcml0aG1ldGljRXhjZXB0aW9uIGlmIDxjb2RlPnRoaXM8L2NvZGU+IGhhcyBhIG5vbi16ZXJvCisgICogICAgICAgICAgICAgICAgIGRlY2ltYWwgcGFydCwgb3Igd2lsbCBub3QgZml0IGluIGEgPGNvZGU+Ynl0ZTwvY29kZT4uCisgICogQHNpbmNlICBJQk0gSkRLIDEuMS44CisgICovCisgCisgcHVibGljIGJ5dGUgYnl0ZVZhbHVlRXhhY3QoKXsKKyAgaW50IG51bTsKKyAgbnVtPXRoaXMuaW50VmFsdWVFeGFjdCgpOyAvLyB3aWxsIGNoZWNrIGRlY2ltYWwgcGFydCB0b28KKyAgaWYgKChudW0+MTI3KXwobnVtPCgtMTI4KSkpIAorICAgdGhyb3cgbmV3IGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK3RoaXMudG9TdHJpbmcoKSk7CisgIHJldHVybiAoYnl0ZSludW07CisgIH0KKworIC8qKgorICAqIENvbXBhcmVzIHRoaXMgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2l0aCB0aGUgdmFsdWUgb2YgdGhlIHBhcmFtZXRlci4KKyAgKiA8cD4KKyAgKiBJZiB0aGUgcGFyYW1ldGVyIGlzIDxjb2RlPm51bGw8L2NvZGU+LCBvciBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgdGhlCisgICogPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gdHlwZSwgYW4gZXhjZXB0aW9uIGlzIHRocm93bi4KKyAgKiBPdGhlcndpc2UsIHRoZSBwYXJhbWV0ZXIgaXMgY2FzdCB0byB0eXBlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+CisgICogYW5kIHRoZSByZXN1bHQgb2YgdGhlIHtAbGluayAjY29tcGFyZVRvKEJpZ0RlY2ltYWwpfSBtZXRob2QsCisgICogdXNpbmcgdGhlIGNhc3QgcGFyYW1ldGVyLCBpcyByZXR1cm5lZC4KKyAgKiA8cD4KKyAgKiBUaGUge0BsaW5rICNjb21wYXJlVG8oQmlnRGVjaW1hbCwgTWF0aENvbnRleHQpfSBtZXRob2Qgc2hvdWxkIGJlCisgICogdXNlZCB3aGVuIGEgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IGlzIG5lZWRlZCBmb3IgdGhlIGNvbXBhcmlzb24uCisgICoKKyAgKiBAcGFyYW0gIHJocyBUaGUgPGNvZGU+T2JqZWN0PC9jb2RlPiBmb3IgdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZgorICAqICAgICAgICAgICAgIHRoZSBjb21wYXJpc29uLgorICAqIEByZXR1cm4gICAgIEFuIDxjb2RlPmludDwvY29kZT4gd2hvc2UgdmFsdWUgaXMgLTEsIDAsIG9yIDEgYXMKKyAgKiAgICAgICAgICAgICA8Y29kZT50aGlzPC9jb2RlPiBpcyBudW1lcmljYWxseSBsZXNzIHRoYW4sIGVxdWFsIHRvLAorICAqICAgICAgICAgICAgIG9yIGdyZWF0ZXIgdGhhbiA8Y29kZT5yaHM8L2NvZGU+LgorICAqIEB0aHJvd3MgQ2xhc3NDYXN0RXhjZXB0aW9uIGlmIDxjb2RlPnJoczwvY29kZT4gY2Fubm90IGJlIGNhc3QgdG8KKyAgKiAgICAgICAgICAgICAgICAgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBvYmplY3QuCisgICogQHNlZSAgICAjY29tcGFyZVRvKEJpZ0RlY2ltYWwpCisgICogQHNpbmNlICBKREsxLjIKKyAgKi8KKyAKKyBwdWJsaWMgaW50IGNvbXBhcmVUbyhqYXZhLmxhbmcuT2JqZWN0IHJoc29iail7CisgIC8vIHRoZSBjYXN0IGluIHRoZSBuZXh0IGxpbmUgd2lsbCByYWlzZSBDbGFzc0Nhc3RFeGNlcHRpb24gaWYgbmVjZXNzYXJ5CisgIHJldHVybiBjb21wYXJlVG8oKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKXJoc29iaixwbGFpbk1DKTsKKyAgfQorCisgLyoqCisgICogQ29udmVydHMgdGhpcyA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB0byBhIDxjb2RlPmRvdWJsZTwvY29kZT4uCisgICogSWYgdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGlzIG91dCBvZiB0aGUgcG9zc2libGUgcmFuZ2UgZm9yIGEKKyAgKiA8Y29kZT5kb3VibGU8L2NvZGU+ICg2NC1iaXQgc2lnbmVkIGZsb2F0aW5nIHBvaW50KSByZXN1bHQgdGhlbiBhbgorICAqIDxjb2RlPkFyaXRobWV0aWNFeGNlcHRpb248L2NvZGU+IGlzIHRocm93bi4KKyAgKiA8cD4KKyAgKiBUaGUgZG91YmxlIHByb2R1Y2VkIGlzIGlkZW50aWNhbCB0byByZXN1bHQgb2YgZXhwcmVzc2luZyB0aGUKKyAgKiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBhcyBhIDxjb2RlPlN0cmluZzwvY29kZT4gYW5kIHRoZW4KKyAgKiBjb252ZXJ0aW5nIGl0IHVzaW5nIHRoZSA8Y29kZT5Eb3VibGUoU3RyaW5nKTwvY29kZT4gY29uc3RydWN0b3I7CisgICogdGhpcyBjYW4gcmVzdWx0IGluIHZhbHVlcyBvZiA8Y29kZT5Eb3VibGUuTkVHQVRJVkVfSU5GSU5JVFk8L2NvZGU+CisgICogb3IgPGNvZGU+RG91YmxlLlBPU0lUSVZFX0lORklOSVRZPC9jb2RlPi4KKyAgKgorICAqIEByZXR1cm4gQSA8Y29kZT5kb3VibGU8L2NvZGU+IGNvcnJlc3BvbmRpbmcgdG8gPGNvZGU+dGhpczwvY29kZT4uCisgICovCisgCisgcHVibGljIGRvdWJsZSBkb3VibGVWYWx1ZSgpeworICAvLyBXZSBnbyB2aWEgYSBTdHJpbmcgW2FzIGRvZXMgQmlnRGVjaW1hbCBpbiBKREsgMS4yXQorICAvLyBOZXh0IGxpbmUgY291bGQgcG9zc2libHkgcmFpc2UgTnVtYmVyRm9ybWF0RXhjZXB0aW9uCisgIHJldHVybiBqYXZhLmxhbmcuRG91YmxlLnZhbHVlT2YodGhpcy50b1N0cmluZygpKS5kb3VibGVWYWx1ZSgpOworICB9CisKKyAvKioKKyAgKiBDb21wYXJlcyB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdpdGggPGNvZGU+cmhzPC9jb2RlPiBmb3IKKyAgKiBlcXVhbGl0eS4KKyAgKiA8cD4KKyAgKiBJZiB0aGUgcGFyYW1ldGVyIGlzIDxjb2RlPm51bGw8L2NvZGU+LCBvciBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgdGhlCisgICogQmlnRGVjaW1hbCB0eXBlLCBvciBpcyBub3QgZXhhY3RseSBlcXVhbCB0byB0aGUgY3VycmVudAorICAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdCwgdGhlbiA8aT5mYWxzZTwvaT4gaXMgcmV0dXJuZWQuCisgICogT3RoZXJ3aXNlLCA8aT50cnVlPC9pPiBpcyByZXR1cm5lZC4KKyAgKiA8cD4KKyAgKiAiRXhhY3RseSBlcXVhbCIsIGhlcmUsIG1lYW5zIHRoYXQgdGhlIDxjb2RlPlN0cmluZzwvY29kZT4KKyAgKiByZXByZXNlbnRhdGlvbnMgb2YgdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG51bWJlcnMgYXJlCisgICogaWRlbnRpY2FsICh0aGV5IGhhdmUgdGhlIHNhbWUgY2hhcmFjdGVycyBpbiB0aGUgc2FtZSBzZXF1ZW5jZSkuCisgICogPHA+CisgICogVGhlIHtAbGluayAjY29tcGFyZVRvKEJpZ0RlY2ltYWwsIE1hdGhDb250ZXh0KX0gbWV0aG9kIHNob3VsZCBiZQorICAqIHVzZWQgZm9yIG1vcmUgZ2VuZXJhbCBjb21wYXJpc29ucy4KKyAgKiBAcGFyYW0gIHJocyBUaGUgPGNvZGU+T2JqZWN0PC9jb2RlPiBmb3IgdGhlIHJpZ2h0IGhhbmQgc2lkZSBvZgorICAqICAgICAgICAgICAgIHRoZSBjb21wYXJpc29uLgorICAqIEByZXR1cm4gICAgIEEgPGNvZGU+Ym9vbGVhbjwvY29kZT4gd2hvc2UgdmFsdWUgPGk+dHJ1ZTwvaT4gaWYgYW5kCisgICogICAgICAgICAgICAgb25seSBpZiB0aGUgb3BlcmFuZHMgaGF2ZSBpZGVudGljYWwgc3RyaW5nIHJlcHJlc2VudGF0aW9ucy4KKyAgKiBAdGhyb3dzIENsYXNzQ2FzdEV4Y2VwdGlvbiBpZiA8Y29kZT5yaHM8L2NvZGU+IGNhbm5vdCBiZSBjYXN0IHRvCisgICogICAgICAgICAgICAgICAgIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb2JqZWN0LgorICAqIEBzZWUgICAgI2NvbXBhcmVUbyhPYmplY3QpCisgICogQHNlZSAgICAjY29tcGFyZVRvKEJpZ0RlY2ltYWwpCisgICogQHNlZSAgICAjY29tcGFyZVRvKEJpZ0RlY2ltYWwsIE1hdGhDb250ZXh0KQorICAqLworIAorIHB1YmxpYyBib29sZWFuIGVxdWFscyhqYXZhLmxhbmcuT2JqZWN0IG9iail7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHJoczsKKyAgaW50IGk9MDsKKyAgY2hhciBsY2FbXT1udWxsOworICBjaGFyIHJjYVtdPW51bGw7CisgIC8vIFdlIGFyZSBlcXVhbCBpZmYgdG9TdHJpbmcgb2YgYm90aCBhcmUgZXhhY3RseSB0aGUgc2FtZQorICBpZiAob2JqPT1udWxsKSAKKyAgIHJldHVybiBmYWxzZTsgLy8gbm90IGVxdWFsCisgIGlmICgoISgoKG9iaiBpbnN0YW5jZW9mIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKSkpKSkgCisgICByZXR1cm4gZmFsc2U7IC8vIG5vdCBhIGRlY2ltYWwKKyAgcmhzPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbClvYmo7IC8vIGNhc3Q7IHdlIGtub3cgaXQgd2lsbCB3b3JrCisgIGlmICh0aGlzLmluZCE9cmhzLmluZCkgCisgICByZXR1cm4gZmFsc2U7IC8vIGRpZmZlcmVudCBzaWducyBuZXZlciBtYXRjaAorICBpZiAoKCh0aGlzLm1hbnQubGVuZ3RoPT1yaHMubWFudC5sZW5ndGgpJih0aGlzLmV4cD09cmhzLmV4cCkpJih0aGlzLmZvcm09PXJocy5mb3JtKSkgCisgICAKKyAgIHsgLy8gbWFudGlzc2FzIHNheSBhbGwKKyAgICAvLyBoZXJlIHdpdGggZXF1YWwtbGVuZ3RoIGJ5dGUgYXJyYXlzIHRvIGNvbXBhcmUKKyAgICB7aW50ICQ4PXRoaXMubWFudC5sZW5ndGg7aT0wO2k6Zm9yKDskOD4wOyQ4LS0saSsrKXsKKyAgICAgaWYgKHRoaXMubWFudFtpXSE9cmhzLm1hbnRbaV0pIAorICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CisgICAgfS8qaSovCisgICB9CisgIGVsc2UgCisgICB7IC8vIG5lZWQgcHJvcGVyIGxheW91dAorICAgIGxjYT10aGlzLmxheW91dCgpOyAvLyBsYXlvdXQgdG8gY2hhcmFjdGVyIGFycmF5CisgICAgcmNhPXJocy5sYXlvdXQoKTsKKyAgICBpZiAobGNhLmxlbmd0aCE9cmNhLmxlbmd0aCkgCisgICAgIHJldHVybiBmYWxzZTsgLy8gbWlzbWF0Y2gKKyAgICAvLyBoZXJlIHdpdGggZXF1YWwtbGVuZ3RoIGNoYXJhY3RlciBhcnJheXMgdG8gY29tcGFyZQorICAgIHtpbnQgJDk9bGNhLmxlbmd0aDtpPTA7aTpmb3IoOyQ5PjA7JDktLSxpKyspeworICAgICBpZiAobGNhW2ldIT1yY2FbaV0pIAorICAgICAgcmV0dXJuIGZhbHNlOworICAgICB9CisgICAgfS8qaSovCisgICB9CisgIHJldHVybiB0cnVlOyAvLyBhcnJheXMgaGF2ZSBpZGVudGljYWwgY29udGVudAorICB9CisKKyAvKioKKyAgKiBDb252ZXJ0cyB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHRvIGEgPGNvZGU+ZmxvYXQ8L2NvZGU+LgorICAqIElmIHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBpcyBvdXQgb2YgdGhlIHBvc3NpYmxlIHJhbmdlIGZvciBhCisgICogPGNvZGU+ZmxvYXQ8L2NvZGU+ICgzMi1iaXQgc2lnbmVkIGZsb2F0aW5nIHBvaW50KSByZXN1bHQgdGhlbiBhbgorICAqIDxjb2RlPkFyaXRobWV0aWNFeGNlcHRpb248L2NvZGU+IGlzIHRocm93bi4KKyAgKiA8cD4KKyAgKiBUaGUgZmxvYXQgcHJvZHVjZWQgaXMgaWRlbnRpY2FsIHRvIHJlc3VsdCBvZiBleHByZXNzaW5nIHRoZQorICAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGFzIGEgPGNvZGU+U3RyaW5nPC9jb2RlPiBhbmQgdGhlbgorICAqIGNvbnZlcnRpbmcgaXQgdXNpbmcgdGhlIDxjb2RlPkZsb2F0KFN0cmluZyk8L2NvZGU+IGNvbnN0cnVjdG9yOworICAqIHRoaXMgY2FuIHJlc3VsdCBpbiB2YWx1ZXMgb2YgPGNvZGU+RmxvYXQuTkVHQVRJVkVfSU5GSU5JVFk8L2NvZGU+CisgICogb3IgPGNvZGU+RmxvYXQuUE9TSVRJVkVfSU5GSU5JVFk8L2NvZGU+LgorICAqCisgICogQHJldHVybiBBIDxjb2RlPmZsb2F0PC9jb2RlPiBjb3JyZXNwb25kaW5nIHRvIDxjb2RlPnRoaXM8L2NvZGU+LgorICAqLworIAorIHB1YmxpYyBmbG9hdCBmbG9hdFZhbHVlKCl7CisgIHJldHVybiBqYXZhLmxhbmcuRmxvYXQudmFsdWVPZih0aGlzLnRvU3RyaW5nKCkpLmZsb2F0VmFsdWUoKTsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyB0aGUgPGNvZGU+U3RyaW5nPC9jb2RlPiByZXByZXNlbnRhdGlvbiBvZiB0aGlzCisgICogPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4sIG1vZGlmaWVkIGJ5IGxheW91dCBwYXJhbWV0ZXJzLgorICAqIDxwPgorICAqIDxpPlRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGEgcHJpbWl0aXZlIGZvciB1c2UgYnkgbW9yZQorICAqIHNvcGhpc3RpY2F0ZWQgY2xhc3Nlcywgc3VjaCBhcyA8Y29kZT5EZWNpbWFsRm9ybWF0PC9jb2RlPiwgdGhhdAorICAqIGNhbiBhcHBseSBsb2NhbGUtc2Vuc2l0aXZlIGVkaXRpbmcgb2YgdGhlIHJlc3VsdC4gIFRoZSBsZXZlbCBvZgorICAqIGZvcm1hdHRpbmcgdGhhdCBpdCBwcm92aWRlcyBpcyBhIG5lY2Vzc2FyeSBwYXJ0IG9mIHRoZSBCaWdEZWNpbWFsCisgICogY2xhc3MgYXMgaXQgaXMgc2Vuc2l0aXZlIHRvIGFuZCBtdXN0IGZvbGxvdyB0aGUgY2FsY3VsYXRpb24gYW5kCisgICogcm91bmRpbmcgcnVsZXMgZm9yIEJpZ0RlY2ltYWwgYXJpdGhtZXRpYy4KKyAgKiBIb3dldmVyLCBpZiB0aGUgZnVuY3Rpb24gaXMgcHJvdmlkZWQgZWxzZXdoZXJlLCBpdCBtYXkgYmUgcmVtb3ZlZAorICAqIGZyb20gdGhpcyBjbGFzcy4gPC9pPgorICAqIDxwPgorICAqIFRoZSBwYXJhbWV0ZXJzLCBmb3IgYm90aCBmb3JtcyBvZiB0aGUgPGNvZGU+Zm9ybWF0PC9jb2RlPiBtZXRob2QKKyAgKiBhcmUgYWxsIG9mIHR5cGUgPGNvZGU+aW50PC9jb2RlPi4KKyAgKiBBIHZhbHVlIG9mIC0xIGZvciBhbnkgcGFyYW1ldGVyIGluZGljYXRlcyB0aGF0IHRoZSBkZWZhdWx0IGFjdGlvbgorICAqIG9yIHZhbHVlIGZvciB0aGF0IHBhcmFtZXRlciBzaG91bGQgYmUgdXNlZC4KKyAgKiA8cD4KKyAgKiBUaGUgcGFyYW1ldGVycywgPGNvZGU+YmVmb3JlPC9jb2RlPiBhbmQgPGNvZGU+YWZ0ZXI8L2NvZGU+LAorICAqIHNwZWNpZnkgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRvIGJlIHVzZWQgZm9yIHRoZSBpbnRlZ2VyIHBhcnQKKyAgKiBhbmQgZGVjaW1hbCBwYXJ0IG9mIHRoZSByZXN1bHQgcmVzcGVjdGl2ZWx5LiAgRXhwb25lbnRpYWwgbm90YXRpb24KKyAgKiBpcyBub3QgdXNlZC4gSWYgZWl0aGVyIHBhcmFtZXRlciBpcyAtMSAod2hpY2ggaW5kaWNhdGVzIHRoZSBkZWZhdWx0CisgICogYWN0aW9uKSwgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHVzZWQgd2lsbCBiZSBleGFjdGx5IGFzIG1hbnkgYXMKKyAgKiBhcmUgbmVlZGVkIGZvciB0aGF0IHBhcnQuCisgICogPHA+CisgICogPGNvZGU+YmVmb3JlPC9jb2RlPiBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyOyBpZiBpdCBpcyBsYXJnZXIgdGhhbgorICAqIGlzIG5lZWRlZCB0byBjb250YWluIHRoZSBpbnRlZ2VyIHBhcnQsIHRoYXQgcGFydCBpcyBwYWRkZWQgb24gdGhlCisgICogbGVmdCB3aXRoIGJsYW5rcyB0byB0aGUgcmVxdWVzdGVkIGxlbmd0aC4gSWYgPGNvZGU+YmVmb3JlPC9jb2RlPiBpcworICAqIG5vdCBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiB0aGUgaW50ZWdlciBwYXJ0IG9mIHRoZSBudW1iZXIKKyAgKiAoaW5jbHVkaW5nIHRoZSBzaWduLCBmb3IgbmVnYXRpdmUgbnVtYmVycykgYW4gZXhjZXB0aW9uIGlzIHRocm93bi4KKyAgKiA8cD4KKyAgKiA8Y29kZT5hZnRlcjwvY29kZT4gbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXI7IGlmIGl0IGlzIG5vdCB0aGUKKyAgKiBzYW1lIHNpemUgYXMgdGhlIGRlY2ltYWwgcGFydCBvZiB0aGUgbnVtYmVyLCB0aGUgbnVtYmVyIHdpbGwgYmUKKyAgKiByb3VuZGVkIChvciBleHRlbmRlZCB3aXRoIHplcm9zKSB0byBmaXQuICBTcGVjaWZ5aW5nIDAgZm9yCisgICogPGNvZGU+YWZ0ZXI8L2NvZGU+IHdpbGwgY2F1c2UgdGhlIG51bWJlciB0byBiZSByb3VuZGVkIHRvIGFuCisgICogaW50ZWdlciAodGhhdCBpcywgaXQgd2lsbCBoYXZlIG5vIGRlY2ltYWwgcGFydCBvciBkZWNpbWFsIHBvaW50KS4KKyAgKiBUaGUgcm91bmRpbmcgbWV0aG9kIHdpbGwgYmUgdGhlIGRlZmF1bHQsCisgICogPGNvZGU+TWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUDwvY29kZT4uCisgICogPHA+CisgICogT3RoZXIgcm91bmRpbmcgbWV0aG9kcywgYW5kIHRoZSB1c2Ugb2YgZXhwb25lbnRpYWwgbm90YXRpb24sIGNhbgorICAqIGJlIHNlbGVjdGVkIGJ5IHVzaW5nIHtAbGluayAjZm9ybWF0KGludCxpbnQsaW50LGludCxpbnQsaW50KX0uCisgICogVXNpbmcgdGhlIHR3by1wYXJhbWV0ZXIgZm9ybSBvZiB0aGUgbWV0aG9kIGhhcyBleGFjdGx5IHRoZSBzYW1lCisgICogZWZmZWN0IGFzIHVzaW5nIHRoZSBzaXgtcGFyYW1ldGVyIGZvcm0gd2l0aCB0aGUgZmluYWwgZm91cgorICAqIHBhcmFtZXRlcnMgYWxsIGJlaW5nIC0xLgorICAqCisgICogQHBhcmFtICBiZWZvcmUgVGhlIDxjb2RlPmludDwvY29kZT4gc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIHBsYWNlcworICAqICAgICAgICAgICAgICAgIGJlZm9yZSB0aGUgZGVjaW1hbCBwb2ludC4gIFVzZSAtMSBmb3IgJ2FzIG1hbnkgYXMKKyAgKiAgICAgICAgICAgICAgICBhcmUgbmVlZGVkJy4KKyAgKiBAcGFyYW0gIGFmdGVyICBUaGUgPGNvZGU+aW50PC9jb2RlPiBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgcGxhY2VzCisgICogICAgICAgICAgICAgICAgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQuICBVc2UgLTEgZm9yICdhcyBtYW55IGFzIGFyZQorICAqICAgICAgICAgICAgICAgIG5lZWRlZCcuCisgICogQHJldHVybiAgICAgICAgQSA8Y29kZT5TdHJpbmc8L2NvZGU+IHJlcHJlc2VudGluZyB0aGlzCisgICogICAgICAgICAgICAgICAgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4sIGxhaWQgb3V0IGFjY29yZGluZyB0byB0aGUKKyAgKiAgICAgICAgICAgICAgICBzcGVjaWZpZWQgcGFyYW1ldGVycworICAqIEB0aHJvd3MgQXJpdGhtZXRpY0V4Y2VwdGlvbiBpZiB0aGUgbnVtYmVyIGNhbm5vdCBiZSBsYWlkIG91dCBhcworICAqICAgICAgICAgICAgICAgIHJlcXVlc3RlZC4KKyAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBhIHBhcmFtZXRlciBpcyBvdXQgb2YgcmFuZ2UuCisgICogQHNlZSAgICAjdG9TdHJpbmcKKyAgKiBAc2VlICAgICN0b0NoYXJBcnJheQorICAqIEBzaW5jZSAgSUJNIEpESyAxLjEuOAorICAqLworIAorIHB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIGZvcm1hdChpbnQgYmVmb3JlLGludCBhZnRlcil7CisgIHJldHVybiBmb3JtYXQoYmVmb3JlLGFmdGVyLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDLFJPVU5EX0hBTEZfVVApOworICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIHRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+IHJlcHJlc2VudGF0aW9uIG9mIHRoaXMKKyAgKiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiwgbW9kaWZpZWQgYnkgbGF5b3V0IHBhcmFtZXRlcnMgYW5kIGFsbG93aW5nCisgICogZXhwb25lbnRpYWwgbm90YXRpb24uCisgICogPHA+CisgICogPGk+VGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYSBwcmltaXRpdmUgZm9yIHVzZSBieSBtb3JlCisgICogc29waGlzdGljYXRlZCBjbGFzc2VzLCBzdWNoIGFzIDxjb2RlPkRlY2ltYWxGb3JtYXQ8L2NvZGU+LCB0aGF0CisgICogY2FuIGFwcGx5IGxvY2FsZS1zZW5zaXRpdmUgZWRpdGluZyBvZiB0aGUgcmVzdWx0LiAgVGhlIGxldmVsIG9mCisgICogZm9ybWF0dGluZyB0aGF0IGl0IHByb3ZpZGVzIGlzIGEgbmVjZXNzYXJ5IHBhcnQgb2YgdGhlIEJpZ0RlY2ltYWwKKyAgKiBjbGFzcyBhcyBpdCBpcyBzZW5zaXRpdmUgdG8gYW5kIG11c3QgZm9sbG93IHRoZSBjYWxjdWxhdGlvbiBhbmQKKyAgKiByb3VuZGluZyBydWxlcyBmb3IgQmlnRGVjaW1hbCBhcml0aG1ldGljLgorICAqIEhvd2V2ZXIsIGlmIHRoZSBmdW5jdGlvbiBpcyBwcm92aWRlZCBlbHNld2hlcmUsIGl0IG1heSBiZSByZW1vdmVkCisgICogZnJvbSB0aGlzIGNsYXNzLiA8L2k+CisgICogPHA+CisgICogVGhlIHBhcmFtZXRlcnMgYXJlIGFsbCBvZiB0eXBlIDxjb2RlPmludDwvY29kZT4uCisgICogQSB2YWx1ZSBvZiAtMSBmb3IgYW55IHBhcmFtZXRlciBpbmRpY2F0ZXMgdGhhdCB0aGUgZGVmYXVsdCBhY3Rpb24KKyAgKiBvciB2YWx1ZSBmb3IgdGhhdCBwYXJhbWV0ZXIgc2hvdWxkIGJlIHVzZWQuCisgICogPHA+CisgICogVGhlIGZpcnN0IHR3byBwYXJhbWV0ZXJzICg8Y29kZT5iZWZvcmU8L2NvZGU+IGFuZAorICAqIDxjb2RlPmFmdGVyPC9jb2RlPikgc3BlY2lmeSB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdG8gYmUgdXNlZCBmb3IKKyAgKiB0aGUgaW50ZWdlciBwYXJ0IGFuZCBkZWNpbWFsIHBhcnQgb2YgdGhlIHJlc3VsdCByZXNwZWN0aXZlbHksIGFzCisgICogZGVmaW5lZCBmb3Ige0BsaW5rICNmb3JtYXQoaW50LGludCl9LgorICAqIElmIGVpdGhlciBvZiB0aGVzZSBpcyAtMSAod2hpY2ggaW5kaWNhdGVzIHRoZSBkZWZhdWx0IGFjdGlvbiksIHRoZQorICAqIG51bWJlciBvZiBjaGFyYWN0ZXJzIHVzZWQgd2lsbCBiZSBleGFjdGx5IGFzIG1hbnkgYXMgYXJlIG5lZWRlZCBmb3IKKyAgKiB0aGF0IHBhcnQuCisgICogPHA+CisgICogVGhlIHJlbWFpbmluZyBwYXJhbWV0ZXJzIGNvbnRyb2wgdGhlIHVzZSBvZiBleHBvbmVudGlhbCBub3RhdGlvbgorICAqIGFuZCByb3VuZGluZy4gIFRocmVlICg8Y29kZT5leHBsYWNlczwvY29kZT4sIDxjb2RlPmV4ZGlnaXRzPC9jb2RlPiwKKyAgKiBhbmQgPGNvZGU+ZXhmb3JtPC9jb2RlPikgY29udHJvbCB0aGUgZXhwb25lbnQgcGFydCBvZiB0aGUgcmVzdWx0LgorICAqIEFzIGJlZm9yZSwgdGhlIGRlZmF1bHQgYWN0aW9uIGZvciBhbnkgb2YgdGhlc2UgcGFyYW1ldGVycyBtYXkgYmUKKyAgKiBzZWxlY3RlZCBieSB1c2luZyB0aGUgdmFsdWUgLTEuCisgICogPHA+CisgICogPGNvZGU+ZXhwbGFjZXM8L2NvZGU+IG11c3QgYmUgYSBwb3NpdGl2ZSBudW1iZXI7IGl0IHNldHMgdGhlIG51bWJlcgorICAqIG9mIHBsYWNlcyAoZGlnaXRzIGFmdGVyIHRoZSBzaWduIG9mIHRoZSBleHBvbmVudCkgdG8gYmUgdXNlZCBmb3IKKyAgKiBhbnkgZXhwb25lbnQgcGFydCwgdGhlIGRlZmF1bHQgKHdoZW4gPGNvZGU+ZXhwbGFjZXM8L2NvZGU+IGlzIC0xKQorICAqIGJlaW5nIHRvIHVzZSBhcyBtYW55IGFzIGFyZSBuZWVkZWQuCisgICogSWYgPGNvZGU+ZXhwbGFjZXM8L2NvZGU+IGlzIG5vdCAtMSwgc3BhY2UgaXMgYWx3YXlzIHJlc2VydmVkIGZvcgorICAqIGFuIGV4cG9uZW50OyBpZiBvbmUgaXMgbm90IG5lZWRlZCAoZm9yIGV4YW1wbGUsIGlmIHRoZSBleHBvbmVudAorICAqIHdpbGwgYmUgMCkgdGhlbiA8Y29kZT5leHBsYWNlczwvY29kZT4rMiBibGFua3MgYXJlIGFwcGVuZGVkIHRvIHRoZQorICAqIHJlc3VsdC4KKyAgKiA8IS0tIChUaGlzIHByZXNlcnZlcyB2ZXJ0aWNhbCBhbGlnbm1lbnQgb2Ygc2ltaWxhcmx5IGZvcm1hdHRlZAorICAqICAgICAgIG51bWJlcnMgaW4gYSBtb25vc3BhY2UgZm9udC4pIC0tPgorICAqIElmIDxjb2RlPmV4cGxhY2VzPC9jb2RlPiBpcyBub3QgLTEgYW5kIGlzIG5vdCBsYXJnZSBlbm91Z2ggdG8KKyAgKiBjb250YWluIHRoZSBleHBvbmVudCwgYW4gZXhjZXB0aW9uIGlzIHRocm93bi4KKyAgKiA8cD4KKyAgKiA8Y29kZT5leGRpZ2l0czwvY29kZT4gc2V0cyB0aGUgdHJpZ2dlciBwb2ludCBmb3IgdXNlIG9mIGV4cG9uZW50aWFsCisgICogbm90YXRpb24uIElmLCBiZWZvcmUgYW55IHJvdW5kaW5nLCB0aGUgbnVtYmVyIG9mIHBsYWNlcyBuZWVkZWQKKyAgKiBiZWZvcmUgdGhlIGRlY2ltYWwgcG9pbnQgZXhjZWVkcyA8Y29kZT5leGRpZ2l0czwvY29kZT4sIG9yIGlmIHRoZQorICAqIGFic29sdXRlIHZhbHVlIG9mIHRoZSByZXN1bHQgaXMgbGVzcyB0aGFuIDxjb2RlPjAuMDAwMDAxPC9jb2RlPiwKKyAgKiB0aGVuIGV4cG9uZW50aWFsIGZvcm0gd2lsbCBiZSB1c2VkLCBwcm92aWRlZCB0aGF0CisgICogPGNvZGU+ZXhkaWdpdHM8L2NvZGU+IHdhcyBzcGVjaWZpZWQuCisgICogV2hlbiA8Y29kZT5leGRpZ2l0czwvY29kZT4gaXMgLTEsIGV4cG9uZW50aWFsIG5vdGF0aW9uIHdpbGwgbmV2ZXIKKyAgKiBiZSB1c2VkLiBJZiAwIGlzIHNwZWNpZmllZCBmb3IgPGNvZGU+ZXhkaWdpdHM8L2NvZGU+LCBleHBvbmVudGlhbAorICAqIG5vdGF0aW9uIGlzIGFsd2F5cyB1c2VkIHVubGVzcyB0aGUgZXhwb25lbnQgd291bGQgYmUgMC4KKyAgKiA8cD4KKyAgKiA8Y29kZT5leGZvcm08L2NvZGU+IHNldHMgdGhlIGZvcm0gZm9yIGV4cG9uZW50aWFsIG5vdGF0aW9uIChpZgorICAqIG5lZWRlZCkuCisgICogSXQgIG1heSBiZSBlaXRoZXIge0BsaW5rIE1hdGhDb250ZXh0I1NDSUVOVElGSUN9IG9yCisgICoge0BsaW5rIE1hdGhDb250ZXh0I0VOR0lORUVSSU5HfS4KKyAgKiBJZiB0aGUgbGF0dGVyLCBlbmdpbmVlcmluZywgZm9ybSBpcyByZXF1ZXN0ZWQsIHVwIHRvIHRocmVlIGRpZ2l0cworICAqIChwbHVzIHNpZ24sIGlmIG5lZ2F0aXZlKSBtYXkgYmUgbmVlZGVkIGZvciB0aGUgaW50ZWdlciBwYXJ0IG9mIHRoZQorICAqIHJlc3VsdCAoPGNvZGU+YmVmb3JlPC9jb2RlPikuICBPdGhlcndpc2UsIG9ubHkgb25lIGRpZ2l0IChwbHVzCisgICogc2lnbiwgaWYgbmVnYXRpdmUpIGlzIG5lZWRlZC4KKyAgKiA8cD4KKyAgKiBGaW5hbGx5LCB0aGUgc2l4dGggYXJndW1lbnQsIDxjb2RlPmV4cm91bmQ8L2NvZGU+LCBzZWxlY3RzIHRoZQorICAqIHJvdW5kaW5nIGFsZ29yaXRobSB0byBiZSB1c2VkLCBhbmQgbXVzdCBiZSBvbmUgb2YgdGhlIHZhbHVlcworICAqIGluZGljYXRlZCBieSBhIHB1YmxpYyBjb25zdGFudCBpbiB0aGUge0BsaW5rIE1hdGhDb250ZXh0fSBjbGFzcworICAqIHdob3NlIG5hbWUgc3RhcnRzIHdpdGggPGNvZGU+Uk9VTkRfPC9jb2RlPi4KKyAgKiBUaGUgZGVmYXVsdCAoPGNvZGU+Uk9VTkRfSEFMRl9VUDwvY29kZT4pIG1heSBhbHNvIGJlIHNlbGVjdGVkIGJ5CisgICogdXNpbmcgdGhlIHZhbHVlIC0xLCBhcyBiZWZvcmUuCisgICogPHA+CisgICogVGhlIHNwZWNpYWwgdmFsdWUgPGNvZGU+TWF0aENvbnRleHQuUk9VTkRfVU5ORUNFU1NBUlk8L2NvZGU+IG1heSBiZQorICAqIHVzZWQgdG8gZGV0ZWN0IHdoZXRoZXIgbm9uLXplcm8gZGlnaXRzIGFyZSBkaXNjYXJkZWQgLS0gaWYKKyAgKiA8Y29kZT5leHJvdW5kPC9jb2RlPiBoYXMgdGhpcyB2YWx1ZSB0aGFuIGlmIG5vbi16ZXJvIGRpZ2l0cyB3b3VsZAorICAqIGJlIGRpc2NhcmRlZCAocm91bmRlZCkgZHVyaW5nIGZvcm1hdHRpbmcgdGhlbiBhbgorICAqIDxjb2RlPkFyaXRobWV0aWNFeGNlcHRpb248L2NvZGU+IGlzIHRocm93bi4KKyAgKgorICAqIEBwYXJhbSAgYmVmb3JlICAgVGhlIDxjb2RlPmludDwvY29kZT4gc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIHBsYWNlcworICAqICAgICAgICAgICAgICAgICAgYmVmb3JlIHRoZSBkZWNpbWFsIHBvaW50LgorICAqICAgICAgICAgICAgICAgICAgVXNlIC0xIGZvciAnYXMgbWFueSBhcyBhcmUgbmVlZGVkJy4KKyAgKiBAcGFyYW0gIGFmdGVyICAgIFRoZSA8Y29kZT5pbnQ8L2NvZGU+IHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBwbGFjZXMKKyAgKiAgICAgICAgICAgICAgICAgIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LgorICAqICAgICAgICAgICAgICAgICAgVXNlIC0xIGZvciAnYXMgbWFueSBhcyBhcmUgbmVlZGVkJy4KKyAgKiBAcGFyYW0gIGV4cGxhY2VzIFRoZSA8Y29kZT5pbnQ8L2NvZGU+IHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBwbGFjZXMKKyAgKiAgICAgICAgICAgICAgICAgIHRvIGJlIHVzZWQgZm9yIGFueSBleHBvbmVudC4KKyAgKiAgICAgICAgICAgICAgICAgIFVzZSAtMSBmb3IgJ2FzIG1hbnkgYXMgYXJlIG5lZWRlZCcuCisgICogQHBhcmFtICBleGRpZ2l0cyBUaGUgPGNvZGU+aW50PC9jb2RlPiBzcGVjaWZ5aW5nIHRoZSB0cmlnZ2VyCisgICogICAgICAgICAgICAgICAgICAoZGlnaXRzIGJlZm9yZSB0aGUgZGVjaW1hbCBwb2ludCkgd2hpY2ggaWYKKyAgKiAgICAgICAgICAgICAgICAgIGV4Y2VlZGVkIGNhdXNlcyBleHBvbmVudGlhbCBub3RhdGlvbiB0byBiZSB1c2VkLgorICAqICAgICAgICAgICAgICAgICAgVXNlIDAgdG8gZm9yY2UgZXhwb25lbnRpYWwgbm90YXRpb24uCisgICogICAgICAgICAgICAgICAgICBVc2UgLTEgdG8gZm9yY2UgcGxhaW4gbm90YXRpb24gKG5vIGV4cG9uZW50aWFsCisgICogICAgICAgICAgICAgICAgICBub3RhdGlvbikuCisgICogQHBhcmFtICBleGZvcm0gICBUaGUgPGNvZGU+aW50PC9jb2RlPiBzcGVjaWZ5aW5nIHRoZSBmb3JtIG9mCisgICogICAgICAgICAgICAgICAgICBleHBvbmVudGlhbCBub3RhdGlvbiB0byBiZSB1c2VkCisgICogICAgICAgICAgICAgICAgICAoe0BsaW5rIE1hdGhDb250ZXh0I1NDSUVOVElGSUN9IG9yCisgICogICAgICAgICAgICAgICAgICB7QGxpbmsgTWF0aENvbnRleHQjRU5HSU5FRVJJTkd9KS4KKyAgKiBAcGFyYW0gIGV4cm91bmQgIFRoZSA8Y29kZT5pbnQ8L2NvZGU+IHNwZWNpZnlpbmcgdGhlIHJvdW5kaW5nIG1vZGUKKyAgKiAgICAgICAgICAgICAgICAgIHRvIHVzZS4KKyAgKiAgICAgICAgICAgICAgICAgIFVzZSAtMSBmb3IgdGhlIGRlZmF1bHQsIHtAbGluayBNYXRoQ29udGV4dCNST1VORF9IQUxGX1VQfS4KKyAgKiBAcmV0dXJuICAgICAgICAgIEEgPGNvZGU+U3RyaW5nPC9jb2RlPiByZXByZXNlbnRpbmcgdGhpcworICAqICAgICAgICAgICAgICAgICAgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4sIGxhaWQgb3V0IGFjY29yZGluZyB0byB0aGUKKyAgKiAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCBwYXJhbWV0ZXJzCisgICogQHRocm93cyBBcml0aG1ldGljRXhjZXB0aW9uIGlmIHRoZSBudW1iZXIgY2Fubm90IGJlIGxhaWQgb3V0IGFzCisgICogICAgICAgICAgICAgICAgICByZXF1ZXN0ZWQuCisgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgYSBwYXJhbWV0ZXIgaXMgb3V0IG9mIHJhbmdlLgorICAqIEBzZWUgICAgI3RvU3RyaW5nCisgICogQHNlZSAgICAjdG9DaGFyQXJyYXkKKyAgKiBAc2luY2UgIElCTSBKREsgMS4xLjgKKyAgKi8KKyAKKyBwdWJsaWMgamF2YS5sYW5nLlN0cmluZyBmb3JtYXQoaW50IGJlZm9yZSxpbnQgYWZ0ZXIsaW50IGV4cGxhY2VzLGludCBleGRpZ2l0cyxpbnQgZXhmb3JtaW50LGludCBleHJvdW5kKXsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgbnVtOworICBpbnQgbWFnPTA7CisgIGludCB0aGlzYWZ0ZXI9MDsKKyAgaW50IGxlYWQ9MDsKKyAgYnl0ZSBuZXdtYW50W109bnVsbDsKKyAgaW50IGNob3A9MDsKKyAgaW50IG5lZWQ9MDsKKyAgaW50IG9sZGV4cD0wOworICBjaGFyIGFbXTsKKyAgaW50IHA9MDsKKyAgY2hhciBuZXdhW109bnVsbDsKKyAgaW50IGk9MDsKKyAgaW50IHBsYWNlcz0wOworICAKKyAgCisgIC8qIENoZWNrIGFyZ3VtZW50cyAqLworICBpZiAoKGJlZm9yZTwoLTEpKXwoYmVmb3JlPT0wKSkgCisgICBiYWRhcmcoImZvcm1hdCIsMSxqYXZhLmxhbmcuU3RyaW5nLnZhbHVlT2YoYmVmb3JlKSk7CisgIGlmIChhZnRlcjwoLTEpKSAKKyAgIGJhZGFyZygiZm9ybWF0IiwyLGphdmEubGFuZy5TdHJpbmcudmFsdWVPZihhZnRlcikpOworICBpZiAoKGV4cGxhY2VzPCgtMSkpfChleHBsYWNlcz09MCkpIAorICAgYmFkYXJnKCJmb3JtYXQiLDMsamF2YS5sYW5nLlN0cmluZy52YWx1ZU9mKGV4cGxhY2VzKSk7CisgIGlmIChleGRpZ2l0czwoLTEpKSAKKyAgIGJhZGFyZygiZm9ybWF0Iiw0LGphdmEubGFuZy5TdHJpbmcudmFsdWVPZihleHBsYWNlcykpOworICB7LypzZWxlY3QqLworICBpZiAoZXhmb3JtaW50PT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQykKKyAgIDsKKyAgZWxzZSBpZiAoZXhmb3JtaW50PT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuRU5HSU5FRVJJTkcpCisgICA7CisgIGVsc2UgaWYgKGV4Zm9ybWludD09KC0xKSkKKyAgIGV4Zm9ybWludD1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQzsKKyAgIC8vIG5vdGUgUExBSU4gaXNuJ3QgYWxsb3dlZAorICBlbHNleworICAgYmFkYXJnKCJmb3JtYXQiLDUsamF2YS5sYW5nLlN0cmluZy52YWx1ZU9mKGV4Zm9ybWludCkpOworICB9CisgIH0KKyAgLy8gY2hlY2tpbmcgdGhlIHJvdW5kaW5nIG1vZGUgaXMgZG9uZSBieSB0cnlpbmcgdG8gY29uc3RydWN0IGEKKyAgLy8gTWF0aENvbnRleHQgb2JqZWN0IHdpdGggdGhhdCBtb2RlOyBpdCB3aWxsIGZhaWwgaWYgYmFkCisgIGlmIChleHJvdW5kIT1ST1VORF9IQUxGX1VQKSAKKyAgIHt0cnl7IC8vIGlmIG5vbi1kZWZhdWx0Li4uCisgICAgaWYgKGV4cm91bmQ9PSgtMSkpIAorICAgICBleHJvdW5kPVJPVU5EX0hBTEZfVVA7CisgICAgZWxzZSAKKyAgICAgbmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCg5LGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDLGZhbHNlLGV4cm91bmQpOworICAgfQorICAgY2F0Y2ggKGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gJDEwKXsKKyAgICBiYWRhcmcoImZvcm1hdCIsNixqYXZhLmxhbmcuU3RyaW5nLnZhbHVlT2YoZXhyb3VuZCkpOworICAgfX0KKyAgCisgIG51bT1jbG9uZSh0aGlzKTsgLy8gbWFrZSBwcml2YXRlIGNvcHkKKyAgCisgIC8qIEhlcmU6CisgICAgIG51bSAgICAgICBpcyBCaWdEZWNpbWFsIHRvIGZvcm1hdAorICAgICBiZWZvcmUgICAgaXMgcGxhY2VzIGJlZm9yZSBwb2ludCBbPjBdCisgICAgIGFmdGVyICAgICBpcyBwbGFjZXMgYWZ0ZXIgcG9pbnQgIFs+PTBdCisgICAgIGV4cGxhY2VzICBpcyBleHBvbmVudCBwbGFjZXMgICAgIFs+MF0KKyAgICAgZXhkaWdpdHMgIGlzIGV4cG9uZW50IGRpZ2l0cyAgICAgWz49MF0KKyAgICAgZXhmb3JtaW50IGlzIGV4cG9uZW50IGZvcm0gICAgICAgW29uZSBvZiB0d29dCisgICAgIGV4cm91bmQgICBpcyByb3VuZGluZyBtb2RlICAgICAgIFtvbmUgb2YgZWlnaHRdCisgICAgICdiZWZvcmUnIHRocm91Z2ggJ2V4ZGlnaXRzJyBhcmUgLTEgaWYgbm90IHNwZWNpZmllZAorICAqLworICAKKyAgLyogZGV0ZXJtaW5lIGZvcm0gKi8KKyAge3NldGZvcm06ZG97LypzZWxlY3QqLworICBpZiAoZXhkaWdpdHM9PSgtMSkpCisgICBudW0uZm9ybT0oYnl0ZSljb20uaWJtLm1hdGguTWF0aENvbnRleHQuUExBSU47CisgIGVsc2UgaWYgKG51bS5pbmQ9PWlzemVybykKKyAgIG51bS5mb3JtPShieXRlKWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTjsKKyAgZWxzZXsKKyAgIC8vIGRldGVybWluZSB3aGV0aGVyIHRyaWdnZXJzCisgICBtYWc9bnVtLmV4cCtudW0ubWFudC5sZW5ndGg7CisgICBpZiAobWFnPmV4ZGlnaXRzKSAKKyAgICBudW0uZm9ybT0oYnl0ZSlleGZvcm1pbnQ7CisgICBlbHNlIAorICAgIGlmIChtYWc8KC01KSkgCisgICAgIG51bS5mb3JtPShieXRlKWV4Zm9ybWludDsKKyAgICBlbHNlIAorICAgICBudW0uZm9ybT0oYnl0ZSljb20uaWJtLm1hdGguTWF0aENvbnRleHQuUExBSU47CisgIH0KKyAgfXdoaWxlKGZhbHNlKTt9LypzZXRmb3JtKi8KKyAgCisgIC8qIElmICdhZnRlcicgd2FzIHNwZWNpZmllZCB0aGVuIHdlIG1heSBuZWVkIHRvIGFkanVzdCB0aGUKKyAgICAgbWFudGlzc2EuICBUaGlzIGlzIGEgbGl0dGxlIHRyaWNreSwgYXMgd2UgbXVzdCBjb25mb3JtIHRvIHRoZQorICAgICBydWxlcyBvZiBleHBvbmVudGlhbCBsYXlvdXQgaWYgbmVjZXNzYXJ5IChlLmcuLCB3ZSBjYW5ub3QgZW5kIHVwCisgICAgIHdpdGggMTAuMCBpZiBzY2llbnRpZmljKS4gKi8KKyAgaWYgKGFmdGVyPj0wKSAKKyAgIHtzZXRhZnRlcjpmb3IoOzspeworICAgIC8vIGNhbGN1bGF0ZSB0aGUgY3VycmVudCBhZnRlci1sZW5ndGgKKyAgICB7LypzZWxlY3QqLworICAgIGlmIChudW0uZm9ybT09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOKQorICAgICB0aGlzYWZ0ZXI9KGludCktbnVtLmV4cDsgLy8gaGFzIGRlY2ltYWwgcGFydAorICAgIGVsc2UgaWYgKG51bS5mb3JtPT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQykKKyAgICAgdGhpc2FmdGVyPW51bS5tYW50Lmxlbmd0aC0xOworICAgIGVsc2V7IC8vIGVuZ2luZWVyaW5nCisgICAgIGxlYWQ9KCgobnVtLmV4cCtudW0ubWFudC5sZW5ndGgpLTEpKSUzOyAvLyBleHBvbmVudCB0byB1c2UKKyAgICAgaWYgKGxlYWQ8MCkgCisgICAgICBsZWFkPTMrbGVhZDsgLy8gbmVnYXRpdmUgZXhwb25lbnQgY2FzZQorICAgICBsZWFkKys7IC8vIG51bWJlciBvZiBsZWFkaW5nIGRpZ2l0cworICAgICBpZiAobGVhZD49bnVtLm1hbnQubGVuZ3RoKSAKKyAgICAgIHRoaXNhZnRlcj0wOworICAgICBlbHNlIAorICAgICAgdGhpc2FmdGVyPW51bS5tYW50Lmxlbmd0aC1sZWFkOworICAgIH0KKyAgICB9CisgICAgaWYgKHRoaXNhZnRlcj09YWZ0ZXIpIAorICAgICBicmVhayBzZXRhZnRlcjsgLy8gd2UncmUgaW4gbHVjaworICAgIGlmICh0aGlzYWZ0ZXI8YWZ0ZXIpIAorICAgICB7IC8vIG5lZWQgYWRkZWQgdHJhaWxpbmcgemVyb3MKKyAgICAgIC8vIFt0aGlzYWZ0ZXIgY2FuIGJlIG5lZ2F0aXZlXQorICAgICAgbmV3bWFudD1leHRlbmQobnVtLm1hbnQsKG51bS5tYW50Lmxlbmd0aCthZnRlciktdGhpc2FmdGVyKTsKKyAgICAgIG51bS5tYW50PW5ld21hbnQ7CisgICAgICBudW0uZXhwPW51bS5leHAtKChhZnRlci10aGlzYWZ0ZXIpKTsgLy8gYWRqdXN0IGV4cG9uZW50CisgICAgICBpZiAobnVtLmV4cDxNaW5FeHApIAorICAgICAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiRXhwb25lbnQgT3ZlcmZsb3c6IisiICIrbnVtLmV4cCk7CisgICAgICBicmVhayBzZXRhZnRlcjsKKyAgICAgfQorICAgIC8vIFdlIGhhdmUgdG9vIG1hbnkgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50OyB0aGlzIGNvdWxkCisgICAgLy8gY2F1c2UgYSBjYXJyeSwgd2hpY2ggY291bGQgY2hhbmdlIHRoZSBtYW50aXNzYS4uLgorICAgIC8vIFdhdGNoIG91dCBmb3IgaW1wbGllZCBsZWFkaW5nIHplcm9zIGluIFBMQUlOIGNhc2UKKyAgICBjaG9wPXRoaXNhZnRlci1hZnRlcjsgLy8gZGlnaXRzIHRvIGxvcCBbaXMgPjBdCisgICAgaWYgKGNob3A+bnVtLm1hbnQubGVuZ3RoKSAKKyAgICAgeyAvLyBhbGwgZGlnaXRzIGdvLCBubyBjaGFuY2Ugb2YgY2FycnkKKyAgICAgIC8vIGNhcnJ5IG9uIHdpdGggemVybworICAgICAgbnVtLm1hbnQ9WkVSTy5tYW50OworICAgICAgbnVtLmluZD1pc3plcm87CisgICAgICBudW0uZXhwPTA7CisgICAgICBjb250aW51ZSBzZXRhZnRlcjsgLy8gcmVjaGVjazogd2UgbWF5IG5lZWQgdHJhaWxpbmcgemVyb3MKKyAgICAgfQorICAgIC8vIHdlIGhhdmUgYSBkaWdpdCB0byBpbnNwZWN0IGZyb20gZXhpc3RpbmcgbWFudGlzc2EKKyAgICAvLyByb3VuZCB0aGUgbnVtYmVyIGFzIHJlcXVpcmVkCisgICAgbmVlZD1udW0ubWFudC5sZW5ndGgtY2hvcDsgLy8gZGlnaXRzIHRvIGVuZCB1cCB3aXRoIFttYXkgYmUgMF0KKyAgICBvbGRleHA9bnVtLmV4cDsgLy8gc2F2ZSBvbGQgZXhwb25lbnQKKyAgICBudW0ucm91bmQobmVlZCxleHJvdW5kKTsKKyAgICAvLyBpZiB0aGUgZXhwb25lbnQgZ3JldyBieSBtb3JlIHRoYW4gdGhlIGRpZ2l0cyB3ZSBjaG9wcGVkLCB0aGVuCisgICAgLy8gd2UgbXVzdCBoYXZlIGhhZCBhIGNhcnJ5LCBzbyB3aWxsIG5lZWQgdG8gcmVjaGVjayB0aGUgbGF5b3V0CisgICAgaWYgKChudW0uZXhwLW9sZGV4cCk9PWNob3ApIAorICAgICBicmVhayBzZXRhZnRlcjsgLy8gbnVtYmVyIGRpZCBub3QgaGF2ZSBjYXJyeQorICAgIC8vIG1hbnRpc3NhIGdvdCBleHRlbmRlZCAuLiBzbyBnbyBhcm91bmQgYW5kIGNoZWNrIGFnYWluCisgICAgfQorICAgfS8qc2V0YWZ0ZXIqLworICAKKyAgYT1udW0ubGF5b3V0KCk7IC8vIGxheSBvdXQsIHdpdGggZXhwb25lbnQgaWYgcmVxdWlyZWQsIGV0Yy4KKyAgCisgIC8qIEhlcmUgd2UgaGF2ZSBsYWlkLW91dCBudW1iZXIgaW4gJ2EnICovCisgIC8vIG5vdyBhcHBseSAnYmVmb3JlJyBhbmQgJ2V4cGxhY2VzJyBhcyBuZWVkZWQKKyAgaWYgKGJlZm9yZT4wKSAKKyAgIHsKKyAgICAvLyBsb29rIGZvciAnLicgb3IgJ0UnCisgICAge2ludCAkMTE9YS5sZW5ndGg7cD0wO3A6Zm9yKDskMTE+MDskMTEtLSxwKyspeworICAgICBpZiAoYVtwXT09Jy4nKSAKKyAgICAgIGJyZWFrIHA7CisgICAgIGlmIChhW3BdPT0nRScpIAorICAgICAgYnJlYWsgcDsKKyAgICAgfQorICAgIH0vKnAqLworICAgIC8vIHAgaXMgbm93IG9mZnNldCBvZiAnLicsICdFJywgb3IgY2hhcmFjdGVyIGFmdGVyIGVuZCBvZiBhcnJheQorICAgIC8vIHRoYXQgaXMsIHRoZSBjdXJyZW50IGxlbmd0aCBvZiBiZWZvcmUgcGFydAorICAgIGlmIChwPmJlZm9yZSkgCisgICAgIGJhZGFyZygiZm9ybWF0IiwxLGphdmEubGFuZy5TdHJpbmcudmFsdWVPZihiZWZvcmUpKTsgLy8gd29uJ3QgZml0CisgICAgaWYgKHA8YmVmb3JlKSAKKyAgICAgeyAvLyBuZWVkIGxlYWRpbmcgYmxhbmtzCisgICAgICBuZXdhPW5ldyBjaGFyWyhhLmxlbmd0aCtiZWZvcmUpLXBdOworICAgICAge2ludCAkMTI9YmVmb3JlLXA7aT0wO2k6Zm9yKDskMTI+MDskMTItLSxpKyspeworICAgICAgIG5ld2FbaV09JyAnOworICAgICAgIH0KKyAgICAgIH0vKmkqLworICAgICAgamF2YS5sYW5nLlN5c3RlbS5hcnJheWNvcHkoKGphdmEubGFuZy5PYmplY3QpYSwwLChqYXZhLmxhbmcuT2JqZWN0KW5ld2EsaSxhLmxlbmd0aCk7CisgICAgICBhPW5ld2E7CisgICAgIH0KKyAgIC8vIFtpZiBwPWJlZm9yZSB0aGVuIGl0J3MganVzdCB0aGUgcmlnaHQgbGVuZ3RoXQorICAgfQorICAKKyAgaWYgKGV4cGxhY2VzPjApIAorICAgeworICAgIC8vIGxvb2sgZm9yICdFJyBbY2Fubm90IGJlIGF0IG9mZnNldCAwXQorICAgIHtpbnQgJDEzPWEubGVuZ3RoLTE7cD1hLmxlbmd0aC0xO3A6Zm9yKDskMTM+MDskMTMtLSxwLS0peworICAgICBpZiAoYVtwXT09J0UnKSAKKyAgICAgIGJyZWFrIHA7CisgICAgIH0KKyAgICB9LypwKi8KKyAgICAvLyBwIGlzIG5vdyBvZmZzZXQgb2YgJ0UnLCBvciAwCisgICAgaWYgKHA9PTApIAorICAgICB7IC8vIG5vIEUgcGFydDsgYWRkIHRyYWlsaW5nIGJsYW5rcworICAgICAgbmV3YT1uZXcgY2hhclsoYS5sZW5ndGgrZXhwbGFjZXMpKzJdOworICAgICAgamF2YS5sYW5nLlN5c3RlbS5hcnJheWNvcHkoKGphdmEubGFuZy5PYmplY3QpYSwwLChqYXZhLmxhbmcuT2JqZWN0KW5ld2EsMCxhLmxlbmd0aCk7CisgICAgICB7aW50ICQxND1leHBsYWNlcysyO2k9YS5sZW5ndGg7aTpmb3IoOyQxND4wOyQxNC0tLGkrKyl7CisgICAgICAgbmV3YVtpXT0nICc7CisgICAgICAgfQorICAgICAgfS8qaSovCisgICAgICBhPW5ld2E7CisgICAgIH0KKyAgICBlbHNlIAorICAgICB7LyogZm91bmQgRSAqLyAvLyBtYXkgbmVlZCB0byBpbnNlcnQgemVyb3MKKyAgICAgIHBsYWNlcz0oYS5sZW5ndGgtcCktMjsgLy8gbnVtYmVyIHNvIGZhcgorICAgICAgaWYgKHBsYWNlcz5leHBsYWNlcykgCisgICAgICAgYmFkYXJnKCJmb3JtYXQiLDMsamF2YS5sYW5nLlN0cmluZy52YWx1ZU9mKGV4cGxhY2VzKSk7CisgICAgICBpZiAocGxhY2VzPGV4cGxhY2VzKSAKKyAgICAgICB7IC8vIG5lZWQgdG8gaW5zZXJ0IHplcm9zCisgICAgICAgIG5ld2E9bmV3IGNoYXJbKGEubGVuZ3RoK2V4cGxhY2VzKS1wbGFjZXNdOworICAgICAgICBqYXZhLmxhbmcuU3lzdGVtLmFycmF5Y29weSgoamF2YS5sYW5nLk9iamVjdClhLDAsKGphdmEubGFuZy5PYmplY3QpbmV3YSwwLHArMik7IC8vIHRocm91Z2ggRSBhbmQgc2lnbgorICAgICAgICB7aW50ICQxNT1leHBsYWNlcy1wbGFjZXM7aT1wKzI7aTpmb3IoOyQxNT4wOyQxNS0tLGkrKyl7CisgICAgICAgICBuZXdhW2ldPScwJzsKKyAgICAgICAgIH0KKyAgICAgICAgfS8qaSovCisgICAgICAgIGphdmEubGFuZy5TeXN0ZW0uYXJyYXljb3B5KChqYXZhLmxhbmcuT2JqZWN0KWEscCsyLChqYXZhLmxhbmcuT2JqZWN0KW5ld2EsaSxwbGFjZXMpOyAvLyByZW1haW5kZXIgb2YgZXhwb25lbnQKKyAgICAgICAgYT1uZXdhOworICAgICAgIH0KKyAgICAgLy8gW2lmIHBsYWNlcz1leHBsYWNlcyB0aGVuIGl0J3MganVzdCB0aGUgcmlnaHQgbGVuZ3RoXQorICAgICB9CisgICB9CisgIHJldHVybiBuZXcgamF2YS5sYW5nLlN0cmluZyhhKTsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyB0aGUgaGFzaGNvZGUgZm9yIHRoaXMgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4uCisgICogVGhpcyBoYXNoY29kZSBpcyBzdWl0YWJsZSBmb3IgdXNlIGJ5IHRoZQorICAqIDxjb2RlPmphdmEudXRpbC5IYXNodGFibGU8L2NvZGU+IGNsYXNzLgorICAqIDxwPgorICAqIE5vdGUgdGhhdCB0d28gPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb2JqZWN0cyBhcmUgb25seSBndWFyYW50ZWVkCisgICogdG8gcHJvZHVjZSB0aGUgc2FtZSBoYXNoY29kZSBpZiB0aGV5IGFyZSBleGFjdGx5IGVxdWFsICh0aGF0IGlzLAorICAqIHRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+IHJlcHJlc2VudGF0aW9ucyBvZiB0aGUKKyAgKiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBudW1iZXJzIGFyZSBpZGVudGljYWwgLS0gdGhleSBoYXZlIHRoZSBzYW1lCisgICogY2hhcmFjdGVycyBpbiB0aGUgc2FtZSBzZXF1ZW5jZSkuCisgICoKKyAgKiBAcmV0dXJuIEFuIDxjb2RlPmludDwvY29kZT4gdGhhdCBpcyB0aGUgaGFzaGNvZGUgZm9yIDxjb2RlPnRoaXM8L2NvZGU+LgorICAqLworIAorIHB1YmxpYyBpbnQgaGFzaENvZGUoKXsKKyAgLy8gTWF5YmUgY2FsY3VsYXRlIG91cnNlbHZlcywgbGF0ZXIuICBJZiBzbywgbm90ZSB0aGF0IHRoZXJlIGNhbiBiZQorICAvLyBtb3JlIHRoYW4gb25lIGludGVybmFsIHJlcHJlc2VudGF0aW9uIGZvciBhIGdpdmVuIHRvU3RyaW5nKCkgcmVzdWx0LgorICByZXR1cm4gdGhpcy50b1N0cmluZygpLmhhc2hDb2RlKCk7CisgIH0KKworIC8qKgorICAqIENvbnZlcnRzIHRoaXMgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gdG8gYW4gPGNvZGU+aW50PC9jb2RlPi4KKyAgKiBJZiB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gaGFzIGEgbm9uLXplcm8gZGVjaW1hbCBwYXJ0IGl0IGlzCisgICogZGlzY2FyZGVkLiBJZiB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gaXMgb3V0IG9mIHRoZSBwb3NzaWJsZQorICAqIHJhbmdlIGZvciBhbiA8Y29kZT5pbnQ8L2NvZGU+ICgzMi1iaXQgc2lnbmVkIGludGVnZXIpIHJlc3VsdCB0aGVuCisgICogb25seSB0aGUgbG93LW9yZGVyIDMyIGJpdHMgYXJlIHVzZWQuIChUaGF0IGlzLCB0aGUgbnVtYmVyIG1heSBiZQorICAqIDxpPmRlY2FwaXRhdGVkPC9pPi4pICBUbyBhdm9pZCB1bmV4cGVjdGVkIGVycm9ycyB3aGVuIHRoZXNlCisgICogY29uZGl0aW9ucyBvY2N1ciwgdXNlIHRoZSB7QGxpbmsgI2ludFZhbHVlRXhhY3R9IG1ldGhvZC4KKyAgKgorICAqIEByZXR1cm4gQW4gPGNvZGU+aW50PC9jb2RlPiBjb252ZXJ0ZWQgZnJvbSA8Y29kZT50aGlzPC9jb2RlPiwKKyAgKiAgICAgICAgIHRydW5jYXRlZCBhbmQgZGVjYXBpdGF0ZWQgaWYgbmVjZXNzYXJ5LgorICAqLworIAorIHB1YmxpYyBpbnQgaW50VmFsdWUoKXsKKyAgcmV0dXJuIHRvQmlnSW50ZWdlcigpLmludFZhbHVlKCk7CisgIH0KKworIC8qKgorICAqIENvbnZlcnRzIHRoaXMgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gdG8gYW4gPGNvZGU+aW50PC9jb2RlPi4KKyAgKiBJZiB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gaGFzIGEgbm9uLXplcm8gZGVjaW1hbCBwYXJ0IG9yIGlzCisgICogb3V0IG9mIHRoZSBwb3NzaWJsZSByYW5nZSBmb3IgYW4gPGNvZGU+aW50PC9jb2RlPiAoMzItYml0IHNpZ25lZAorICAqIGludGVnZXIpIHJlc3VsdCB0aGVuIGFuIDxjb2RlPkFyaXRobWV0aWNFeGNlcHRpb248L2NvZGU+IGlzIHRocm93bi4KKyAgKgorICAqIEByZXR1cm4gQW4gPGNvZGU+aW50PC9jb2RlPiBlcXVhbCBpbiB2YWx1ZSB0byA8Y29kZT50aGlzPC9jb2RlPi4KKyAgKiBAdGhyb3dzIEFyaXRobWV0aWNFeGNlcHRpb24gaWYgPGNvZGU+dGhpczwvY29kZT4gaGFzIGEgbm9uLXplcm8KKyAgKiAgICAgICAgICAgICAgICAgZGVjaW1hbCBwYXJ0LCBvciB3aWxsIG5vdCBmaXQgaW4gYW4KKyAgKiAgICAgICAgICAgICAgICAgPGNvZGU+aW50PC9jb2RlPi4KKyAgKiBAc2luY2UgIElCTSBKREsgMS4xLjgKKyAgKi8KKyAKKyBwdWJsaWMgaW50IGludFZhbHVlRXhhY3QoKXsKKyAgaW50IGxvZGlnaXQ7CisgIGludCB1c2VleHA9MDsKKyAgaW50IHJlc3VsdDsKKyAgaW50IGk9MDsKKyAgaW50IHRvcGRpZz0wOworICAvLyBUaGlzIGRvZXMgbm90IHVzZSBsb25nVmFsdWVFeGFjdCgpIGFzIHRoZSBsYXR0ZXIgY2FuIGJlIG11Y2gKKyAgLy8gc2xvd2VyLgorICAvLyBpbnRjaGVjayAoZnJvbSBwb3cpIHJlbGllcyBvbiB0aGlzIHRvIGNoZWNrIGRlY2ltYWwgcGFydAorICBpZiAoaW5kPT1pc3plcm8pIAorICAgcmV0dXJuIDA7IC8vIGVhc3ksIGFuZCBxdWl0ZSBjb21tb24KKyAgLyogdGVzdCBhbmQgZHJvcCBhbnkgdHJhaWxpbmcgZGVjaW1hbCBwYXJ0ICovCisgIGxvZGlnaXQ9bWFudC5sZW5ndGgtMTsKKyAgaWYgKGV4cDwwKSAKKyAgIHsKKyAgICBsb2RpZ2l0PWxvZGlnaXQrZXhwOyAvLyByZWR1Y2VzIGJ5IC0oLWV4cCkKKyAgICAvKiBhbGwgZGVjaW1hbCBwbGFjZXMgbXVzdCBiZSAwICovCisgICAgaWYgKCghKGFsbHplcm8obWFudCxsb2RpZ2l0KzEpKSkpIAorICAgICB0aHJvdyBuZXcgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24oIkRlY2ltYWwgcGFydCBub24temVybzoiKyIgIit0aGlzLnRvU3RyaW5nKCkpOworICAgIGlmIChsb2RpZ2l0PDApIAorICAgICByZXR1cm4gMDsgLy8gLTE8dGhpczwxCisgICAgdXNlZXhwPTA7CisgICB9CisgIGVsc2UgCisgICB7LyogPj0wICovCisgICAgaWYgKChleHArbG9kaWdpdCk+OSkgIC8vIGVhcmx5IGV4aXQKKyAgICAgdGhyb3cgbmV3IGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK3RoaXMudG9TdHJpbmcoKSk7CisgICAgdXNlZXhwPWV4cDsKKyAgIH0KKyAgLyogY29udmVydCB0aGUgbWFudGlzc2EgdG8gYmluYXJ5LCBpbmxpbmUgZm9yIHNwZWVkICovCisgIHJlc3VsdD0wOworICB7aW50ICQxNj1sb2RpZ2l0K3VzZWV4cDtpPTA7aTpmb3IoO2k8PSQxNjtpKyspeworICAgcmVzdWx0PXJlc3VsdCoxMDsKKyAgIGlmIChpPD1sb2RpZ2l0KSAKKyAgICByZXN1bHQ9cmVzdWx0K21hbnRbaV07CisgICB9CisgIH0vKmkqLworICAKKyAgLyogTm93LCBpZiB0aGUgcmlza3kgbGVuZ3RoLCBjaGVjayBmb3Igb3ZlcmZsb3cgKi8KKyAgaWYgKChsb2RpZ2l0K3VzZWV4cCk9PTkpIAorICAgeworICAgIC8vIG5vdGUgd2UgY2Fubm90IGp1c3QgdGVzdCBmb3IgLXZlIHJlc3VsdCwgYXMgb3ZlcmZsb3cgY2FuIG1vdmUgYQorICAgIC8vIHplcm8gaW50byB0aGUgdG9wIGJpdCBbY29uc2lkZXIgNTU1NTU1NTU1NV0KKyAgICB0b3BkaWc9cmVzdWx0LzEwMDAwMDAwMDA7IC8vIGdldCB0b3AgZGlnaXQsIHByZXNlcnZpbmcgc2lnbgorICAgIGlmICh0b3BkaWchPW1hbnRbMF0pIAorICAgICB7IC8vIGRpZ2l0IG11c3QgbWF0Y2ggYW5kIGJlIHBvc2l0aXZlCisgICAgICAvLyBleGNlcHQgaW4gdGhlIHNwZWNpYWwgY2FzZSAuLi4KKyAgICAgIGlmIChyZXN1bHQ9PWphdmEubGFuZy5JbnRlZ2VyLk1JTl9WQUxVRSkgIC8vIGxvb2tzIGxpa2UgdGhlIHNwZWNpYWwKKyAgICAgICBpZiAoaW5kPT1pc25lZykgIC8vIHJlYWxseSB3YXMgbmVnYXRpdmUKKyAgICAgICAgaWYgKG1hbnRbMF09PTIpIAorICAgICAgICAgcmV0dXJuIHJlc3VsdDsgLy8gcmVhbGx5IGhhZCB0b3AgZGlnaXQgMgorICAgICAgdGhyb3cgbmV3IGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK3RoaXMudG9TdHJpbmcoKSk7CisgICAgIH0KKyAgIH0KKyAgCisgIC8qIExvb2tzIGdvb2QgKi8KKyAgaWYgKGluZD09aXNwb3MpIAorICAgcmV0dXJuIHJlc3VsdDsKKyAgcmV0dXJuIChpbnQpLXJlc3VsdDsKKyAgfQorCisgLyoqCisgICogQ29udmVydHMgdGhpcyA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB0byBhIDxjb2RlPmxvbmc8L2NvZGU+LgorICAqIElmIHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBoYXMgYSBub24temVybyBkZWNpbWFsIHBhcnQgaXQgaXMKKyAgKiBkaXNjYXJkZWQuIElmIHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBpcyBvdXQgb2YgdGhlIHBvc3NpYmxlCisgICogcmFuZ2UgZm9yIGEgPGNvZGU+bG9uZzwvY29kZT4gKDY0LWJpdCBzaWduZWQgaW50ZWdlcikgcmVzdWx0IHRoZW4KKyAgKiBvbmx5IHRoZSBsb3ctb3JkZXIgNjQgYml0cyBhcmUgdXNlZC4gKFRoYXQgaXMsIHRoZSBudW1iZXIgbWF5IGJlCisgICogPGk+ZGVjYXBpdGF0ZWQ8L2k+LikgIFRvIGF2b2lkIHVuZXhwZWN0ZWQgZXJyb3JzIHdoZW4gdGhlc2UKKyAgKiBjb25kaXRpb25zIG9jY3VyLCB1c2UgdGhlIHtAbGluayAjbG9uZ1ZhbHVlRXhhY3R9IG1ldGhvZC4KKyAgKgorICAqIEByZXR1cm4gQSA8Y29kZT5sb25nPC9jb2RlPiBjb252ZXJ0ZWQgZnJvbSA8Y29kZT50aGlzPC9jb2RlPiwKKyAgKiAgICAgICAgIHRydW5jYXRlZCBhbmQgZGVjYXBpdGF0ZWQgaWYgbmVjZXNzYXJ5LgorICAqLworIAorIHB1YmxpYyBsb25nIGxvbmdWYWx1ZSgpeworICByZXR1cm4gdG9CaWdJbnRlZ2VyKCkubG9uZ1ZhbHVlKCk7CisgIH0KKworIC8qKgorICAqIENvbnZlcnRzIHRoaXMgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gdG8gYSA8Y29kZT5sb25nPC9jb2RlPi4KKyAgKiBJZiB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gaGFzIGEgbm9uLXplcm8gZGVjaW1hbCBwYXJ0IG9yIGlzCisgICogb3V0IG9mIHRoZSBwb3NzaWJsZSByYW5nZSBmb3IgYSA8Y29kZT5sb25nPC9jb2RlPiAoNjQtYml0IHNpZ25lZAorICAqIGludGVnZXIpIHJlc3VsdCB0aGVuIGFuIDxjb2RlPkFyaXRobWV0aWNFeGNlcHRpb248L2NvZGU+IGlzIHRocm93bi4KKyAgKgorICAqIEByZXR1cm4gQSA8Y29kZT5sb25nPC9jb2RlPiBlcXVhbCBpbiB2YWx1ZSB0byA8Y29kZT50aGlzPC9jb2RlPi4KKyAgKiBAdGhyb3dzIEFyaXRobWV0aWNFeGNlcHRpb24gaWYgPGNvZGU+dGhpczwvY29kZT4gaGFzIGEgbm9uLXplcm8KKyAgKiAgICAgICAgICAgICAgICAgZGVjaW1hbCBwYXJ0LCBvciB3aWxsIG5vdCBmaXQgaW4gYQorICAqICAgICAgICAgICAgICAgICA8Y29kZT5sb25nPC9jb2RlPi4KKyAgKiBAc2luY2UgIElCTSBKREsgMS4xLjgKKyAgKi8KKyAKKyBwdWJsaWMgbG9uZyBsb25nVmFsdWVFeGFjdCgpeworICBpbnQgbG9kaWdpdDsKKyAgaW50IGNzdGFydD0wOworICBpbnQgdXNlZXhwPTA7CisgIGxvbmcgcmVzdWx0OworICBpbnQgaT0wOworICBsb25nIHRvcGRpZz0wOworICAvLyBJZGVudGljYWwgdG8gaW50VmFsdWVFeGFjdCBleGNlcHQgZm9yIHJlc3VsdD1sb25nLCBhbmQgZXhwPj0yMCB0ZXN0CisgIGlmIChpbmQ9PTApIAorICAgcmV0dXJuIDA7IC8vIGVhc3ksIGFuZCBxdWl0ZSBjb21tb24KKyAgbG9kaWdpdD1tYW50Lmxlbmd0aC0xOyAvLyBsYXN0IGluY2x1ZGVkIGRpZ2l0CisgIGlmIChleHA8MCkgCisgICB7CisgICAgbG9kaWdpdD1sb2RpZ2l0K2V4cDsgLy8gLSgtZXhwKQorICAgIC8qIGFsbCBkZWNpbWFsIHBsYWNlcyBtdXN0IGJlIDAgKi8KKyAgICBpZiAobG9kaWdpdDwwKSAKKyAgICAgY3N0YXJ0PTA7CisgICAgZWxzZSAKKyAgICAgY3N0YXJ0PWxvZGlnaXQrMTsKKyAgICBpZiAoKCEoYWxsemVybyhtYW50LGNzdGFydCkpKSkgCisgICAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiRGVjaW1hbCBwYXJ0IG5vbi16ZXJvOiIrIiAiK3RoaXMudG9TdHJpbmcoKSk7CisgICAgaWYgKGxvZGlnaXQ8MCkgCisgICAgIHJldHVybiAwOyAvLyAtMTx0aGlzPDEKKyAgICB1c2VleHA9MDsKKyAgIH0KKyAgZWxzZSAKKyAgIHsvKiA+PTAgKi8KKyAgICBpZiAoKGV4cCttYW50Lmxlbmd0aCk+MTgpICAvLyBlYXJseSBleGl0CisgICAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiQ29udmVyc2lvbiBvdmVyZmxvdzoiKyIgIit0aGlzLnRvU3RyaW5nKCkpOworICAgIHVzZWV4cD1leHA7CisgICB9CisgIAorICAvKiBjb252ZXJ0IHRoZSBtYW50aXNzYSB0byBiaW5hcnksIGlubGluZSBmb3Igc3BlZWQgKi8KKyAgLy8gbm90ZSB0aGF0IHdlIGNvdWxkIHNhZmVseSB1c2UgdGhlICd0ZXN0IGZvciB3cmFwIHRvIG5lZ2F0aXZlJworICAvLyBhbGdvcml0aG0gaGVyZSwgYnV0IGluc3RlYWQgd2UgcGFyYWxsZWwgdGhlIGludFZhbHVlRXhhY3QKKyAgLy8gYWxnb3JpdGhtIGZvciBlYXNlIG9mIGNoZWNraW5nIGFuZCBtYWludGVuYW5jZS4KKyAgcmVzdWx0PShsb25nKTA7CisgIHtpbnQgJDE3PWxvZGlnaXQrdXNlZXhwO2k9MDtpOmZvcig7aTw9JDE3O2krKyl7CisgICByZXN1bHQ9cmVzdWx0KjEwOworICAgaWYgKGk8PWxvZGlnaXQpIAorICAgIHJlc3VsdD1yZXN1bHQrbWFudFtpXTsKKyAgIH0KKyAgfS8qaSovCisgIAorICAvKiBOb3csIGlmIHRoZSByaXNreSBsZW5ndGgsIGNoZWNrIGZvciBvdmVyZmxvdyAqLworICBpZiAoKGxvZGlnaXQrdXNlZXhwKT09MTgpIAorICAgeworICAgIHRvcGRpZz1yZXN1bHQvMTAwMDAwMDAwMDAwMDAwMDAwMEw7IC8vIGdldCB0b3AgZGlnaXQsIHByZXNlcnZpbmcgc2lnbgorICAgIGlmICh0b3BkaWchPW1hbnRbMF0pIAorICAgICB7IC8vIGRpZ2l0IG11c3QgbWF0Y2ggYW5kIGJlIHBvc2l0aXZlCisgICAgICAvLyBleGNlcHQgaW4gdGhlIHNwZWNpYWwgY2FzZSAuLi4KKyAgICAgIGlmIChyZXN1bHQ9PWphdmEubGFuZy5Mb25nLk1JTl9WQUxVRSkgIC8vIGxvb2tzIGxpa2UgdGhlIHNwZWNpYWwKKyAgICAgICBpZiAoaW5kPT1pc25lZykgIC8vIHJlYWxseSB3YXMgbmVnYXRpdmUKKyAgICAgICAgaWYgKG1hbnRbMF09PTkpIAorICAgICAgICAgcmV0dXJuIHJlc3VsdDsgLy8gcmVhbGx5IGhhZCB0b3AgZGlnaXQgOQorICAgICAgdGhyb3cgbmV3IGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK3RoaXMudG9TdHJpbmcoKSk7CisgICAgIH0KKyAgIH0KKyAgCisgIC8qIExvb2tzIGdvb2QgKi8KKyAgaWYgKGluZD09aXNwb3MpIAorICAgcmV0dXJuIHJlc3VsdDsKKyAgcmV0dXJuIChsb25nKS1yZXN1bHQ7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSBwbGFpbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aG9zZSBkZWNpbWFsIHBvaW50IGhhcworICAqIGJlZW4gbW92ZWQgdG8gdGhlIGxlZnQgYnkgYSBzcGVjaWZpZWQgbnVtYmVyIG9mIHBvc2l0aW9ucy4KKyAgKiBUaGUgcGFyYW1ldGVyLCA8Y29kZT5uPC9jb2RlPiwgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25zIHRvCisgICogbW92ZSB0aGUgZGVjaW1hbCBwb2ludC4KKyAgKiBUaGF0IGlzLCBpZiA8Y29kZT5uPC9jb2RlPiBpcyAwIG9yIHBvc2l0aXZlLCB0aGUgbnVtYmVyIHJldHVybmVkIGlzCisgICogZ2l2ZW4gYnk6CisgICogPHA+PGNvZGU+CisgICogdGhpcy5tdWx0aXBseShURU4ucG93KG5ldyBCaWdEZWNpbWFsKC1uKSkpCisgICogPC9jb2RlPgorICAqIDxwPgorICAqIDxjb2RlPm48L2NvZGU+IG1heSBiZSBuZWdhdGl2ZSwgaW4gd2hpY2ggY2FzZSB0aGUgbWV0aG9kIHJldHVybnMKKyAgKiB0aGUgc2FtZSByZXN1bHQgYXMgPGNvZGU+bW92ZVBvaW50UmlnaHQoLW4pPC9jb2RlPi4KKyAgKgorICAqIEBwYXJhbSAgbiBUaGUgPGNvZGU+aW50PC9jb2RlPiBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgcGxhY2VzIHRvCisgICogICAgICAgICAgIG1vdmUgdGhlIGRlY2ltYWwgcG9pbnQgbGVmdHdhcmRzLgorICAqIEByZXR1cm4gICBBIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGRlcml2ZWQgZnJvbQorICAqICAgICAgICAgICA8Y29kZT50aGlzPC9jb2RlPiwgd2l0aCB0aGUgZGVjaW1hbCBwb2ludCBtb3ZlZAorICAqICAgICAgICAgICA8Y29kZT5uPC9jb2RlPiBwbGFjZXMgdG8gdGhlIGxlZnQuCisgICovCisgCisgcHVibGljIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIG1vdmVQb2ludExlZnQoaW50IG4peworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCByZXM7CisgIC8vIHZlcnkgbGl0dGxlIHBvaW50IGluIG9wdGltaXppbmcgZm9yIHNoaWZ0IG9mIDAKKyAgcmVzPWNsb25lKHRoaXMpOworICByZXMuZXhwPXJlcy5leHAtbjsKKyAgcmV0dXJuIHJlcy5maW5pc2gocGxhaW5NQyxmYWxzZSk7IC8vIGZpbmlzaCBzZXRzIGZvcm0gYW5kIGNoZWNrcyBleHBvbmVudAorICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIGEgcGxhaW4gPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgZGVjaW1hbCBwb2ludCBoYXMKKyAgKiBiZWVuIG1vdmVkIHRvIHRoZSByaWdodCBieSBhIHNwZWNpZmllZCBudW1iZXIgb2YgcG9zaXRpb25zLgorICAqIFRoZSBwYXJhbWV0ZXIsIDxjb2RlPm48L2NvZGU+LCBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBwb3NpdGlvbnMgdG8KKyAgKiBtb3ZlIHRoZSBkZWNpbWFsIHBvaW50LgorICAqIFRoYXQgaXMsIGlmIDxjb2RlPm48L2NvZGU+IGlzIDAgb3IgcG9zaXRpdmUsIHRoZSBudW1iZXIgcmV0dXJuZWQgaXMKKyAgKiBnaXZlbiBieToKKyAgKiA8cD48Y29kZT4KKyAgKiB0aGlzLm11bHRpcGx5KFRFTi5wb3cobmV3IEJpZ0RlY2ltYWwobikpKQorICAqIDwvY29kZT4KKyAgKiA8cD4KKyAgKiA8Y29kZT5uPC9jb2RlPiBtYXkgYmUgbmVnYXRpdmUsIGluIHdoaWNoIGNhc2UgdGhlIG1ldGhvZCByZXR1cm5zCisgICogdGhlIHNhbWUgcmVzdWx0IGFzIDxjb2RlPm1vdmVQb2ludExlZnQoLW4pPC9jb2RlPi4KKyAgKgorICAqIEBwYXJhbSAgbiBUaGUgPGNvZGU+aW50PC9jb2RlPiBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgcGxhY2VzIHRvCisgICogICAgICAgICAgIG1vdmUgdGhlIGRlY2ltYWwgcG9pbnQgcmlnaHR3YXJkcy4KKyAgKiBAcmV0dXJuICAgQSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBkZXJpdmVkIGZyb20KKyAgKiAgICAgICAgICAgPGNvZGU+dGhpczwvY29kZT4sIHdpdGggdGhlIGRlY2ltYWwgcG9pbnQgbW92ZWQKKyAgKiAgICAgICAgICAgPGNvZGU+bjwvY29kZT4gcGxhY2VzIHRvIHRoZSByaWdodC4KKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgbW92ZVBvaW50UmlnaHQoaW50IG4peworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCByZXM7CisgIHJlcz1jbG9uZSh0aGlzKTsKKyAgcmVzLmV4cD1yZXMuZXhwK247CisgIHJldHVybiByZXMuZmluaXNoKHBsYWluTUMsZmFsc2UpOworICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIHRoZSBzY2FsZSBvZiB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+LgorICAqIFJldHVybnMgYSBub24tbmVnYXRpdmUgPGNvZGU+aW50PC9jb2RlPiB3aGljaCBpcyB0aGUgc2NhbGUgb2YgdGhlCisgICogbnVtYmVyLiBUaGUgc2NhbGUgaXMgdGhlIG51bWJlciBvZiBkaWdpdHMgaW4gdGhlIGRlY2ltYWwgcGFydCBvZgorICAqIHRoZSBudW1iZXIgaWYgdGhlIG51bWJlciB3ZXJlIGZvcm1hdHRlZCB3aXRob3V0IGV4cG9uZW50aWFsCisgICogbm90YXRpb24uCisgICoKKyAgKiBAcmV0dXJuIEFuIDxjb2RlPmludDwvY29kZT4gd2hvc2UgdmFsdWUgaXMgdGhlIHNjYWxlIG9mIHRoaXMKKyAgKiAgICAgICAgIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+LgorICAqLworIAorIHB1YmxpYyBpbnQgc2NhbGUoKXsKKyAgaWYgKGV4cD49MCkgCisgICByZXR1cm4gMDsgLy8gc2NhbGUgY2FuIG5ldmVyIGJlIG5lZ2F0aXZlCisgIHJldHVybiAoaW50KS1leHA7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSBwbGFpbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aXRoIGEgZ2l2ZW4gc2NhbGUuCisgICogPHA+CisgICogSWYgdGhlIGdpdmVuIHNjYWxlICh3aGljaCBtdXN0IGJlIHplcm8gb3IgcG9zaXRpdmUpIGlzIHRoZSBzYW1lIGFzCisgICogb3IgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIGRlY2ltYWwgcGFydCAodGhlIHNjYWxlKSBvZiB0aGlzCisgICogPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gdGhlbiB0cmFpbGluZyB6ZXJvcyB3aWxsIGJlIGFkZGVkIHRvIHRoZQorICAqIGRlY2ltYWwgcGFydCBhcyBuZWNlc3NhcnkuCisgICogPHA+CisgICogSWYgdGhlIGdpdmVuIHNjYWxlIGlzIGxlc3MgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSBkZWNpbWFsIHBhcnQgKHRoZQorICAqIHNjYWxlKSBvZiB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHRoZW4gdHJhaWxpbmcgZGlnaXRzCisgICogd2lsbCBiZSByZW1vdmVkLCBhbmQgaW4gdGhpcyBjYXNlIGFuCisgICogPGNvZGU+QXJpdGhtZXRpY0V4Y2VwdGlvbjwvY29kZT4gaXMgdGhyb3duIGlmIGFueSBkaXNjYXJkZWQgZGlnaXRzCisgICogYXJlIG5vbi16ZXJvLgorICAqIDxwPgorICAqIFRoZSBzYW1lIGFzIHtAbGluayAjc2V0U2NhbGUoaW50LCBpbnQpfSwgd2hlcmUgdGhlIGZpcnN0IHBhcmFtZXRlcgorICAqIGlzIHRoZSBzY2FsZSwgYW5kIHRoZSBzZWNvbmQgaXMKKyAgKiA8Y29kZT5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWTwvY29kZT4uCisgICoKKyAgKiBAcGFyYW0gIHNjYWxlIFRoZSA8Y29kZT5pbnQ8L2NvZGU+IHNwZWNpZnlpbmcgdGhlIHNjYWxlIG9mIHRoZQorICAqICAgICAgICAgICAgICAgcmVzdWx0aW5nIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+LgorICAqIEByZXR1cm4gICAgICAgQSBwbGFpbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aXRoIHRoZSBnaXZlbiBzY2FsZS4KKyAgKiBAdGhyb3dzIEFyaXRobWV0aWNFeGNlcHRpb24gaWYgPGNvZGU+c2NhbGU8L2NvZGU+IGlzIG5lZ2F0aXZlLgorICAqIEB0aHJvd3MgQXJpdGhtZXRpY0V4Y2VwdGlvbiBpZiByZWR1Y2luZyBzY2FsZSB3b3VsZCBkaXNjYXJkCisgICogICAgICAgICAgICAgICBub24temVybyBkaWdpdHMuCisgICovCisgCisgcHVibGljIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHNldFNjYWxlKGludCBzY2FsZSl7CisgIHJldHVybiBzZXRTY2FsZShzY2FsZSxST1VORF9VTk5FQ0VTU0FSWSk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgYSBwbGFpbiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3aXRoIGEgZ2l2ZW4gc2NhbGUuCisgICogPHA+CisgICogSWYgdGhlIGdpdmVuIHNjYWxlICh3aGljaCBtdXN0IGJlIHplcm8gb3IgcG9zaXRpdmUpIGlzIHRoZSBzYW1lIGFzCisgICogb3IgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhlIGRlY2ltYWwgcGFydCAodGhlIHNjYWxlKSBvZiB0aGlzCisgICogPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gdGhlbiB0cmFpbGluZyB6ZXJvcyB3aWxsIGJlIGFkZGVkIHRvIHRoZQorICAqIGRlY2ltYWwgcGFydCBhcyBuZWNlc3NhcnkuCisgICogPHA+CisgICogSWYgdGhlIGdpdmVuIHNjYWxlIGlzIGxlc3MgdGhhbiB0aGUgbGVuZ3RoIG9mIHRoZSBkZWNpbWFsIHBhcnQgKHRoZQorICAqIHNjYWxlKSBvZiB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHRoZW4gdHJhaWxpbmcgZGlnaXRzCisgICogd2lsbCBiZSByZW1vdmVkLCBhbmQgdGhlIHJvdW5kaW5nIG1vZGUgZ2l2ZW4gYnkgdGhlIHNlY29uZAorICAqIHBhcmFtZXRlciBpcyB1c2VkIHRvIGRldGVybWluZSBpZiB0aGUgcmVtYWluaW5nIGRpZ2l0cyBhcmUKKyAgKiBhZmZlY3RlZCBieSBhIGNhcnJ5LgorICAqIEluIHRoaXMgY2FzZSwgYW4gPGNvZGU+SWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uPC9jb2RlPiBpcyB0aHJvd24gaWYKKyAgKiA8Y29kZT5yb3VuZDwvY29kZT4gaXMgbm90IGEgdmFsaWQgcm91bmRpbmcgbW9kZS4KKyAgKiA8cD4KKyAgKiBJZiA8Y29kZT5yb3VuZDwvY29kZT4gaXMgPGNvZGU+TWF0aENvbnRleHQuUk9VTkRfVU5ORUNFU1NBUlk8L2NvZGU+LAorICAqIGFuIDxjb2RlPkFyaXRobWV0aWNFeGNlcHRpb248L2NvZGU+IGlzIHRocm93biBpZiBhbnkgZGlzY2FyZGVkCisgICogZGlnaXRzIGFyZSBub24temVyby4KKyAgKgorICAqIEBwYXJhbSAgc2NhbGUgVGhlIDxjb2RlPmludDwvY29kZT4gc3BlY2lmeWluZyB0aGUgc2NhbGUgb2YgdGhlCisgICogICAgICAgICAgICAgICByZXN1bHRpbmcgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4uCisgICogQHBhcmFtICByb3VuZCBUaGUgPGNvZGU+aW50PC9jb2RlPiByb3VuZGluZyBtb2RlIHRvIGJlIHVzZWQgZm9yCisgICogICAgICAgICAgICAgICB0aGUgZGl2aXNpb24gKHNlZSB0aGUge0BsaW5rIE1hdGhDb250ZXh0fSBjbGFzcykuCisgICogQHJldHVybiAgICAgICBBIHBsYWluIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdpdGggdGhlIGdpdmVuIHNjYWxlLgorICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIDxjb2RlPnJvdW5kPC9jb2RlPiBpcyBub3QgYQorICAqICAgICAgICAgICAgICAgdmFsaWQgcm91bmRpbmcgbW9kZS4KKyAgKiBAdGhyb3dzIEFyaXRobWV0aWNFeGNlcHRpb24gaWYgPGNvZGU+c2NhbGU8L2NvZGU+IGlzIG5lZ2F0aXZlLgorICAqIEB0aHJvd3MgQXJpdGhtZXRpY0V4Y2VwdGlvbiBpZiA8Y29kZT5yb3VuZDwvY29kZT4gaXMKKyAgKiAgICAgICAgICAgICAgIDxjb2RlPk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZPC9jb2RlPiwgYW5kCisgICogICAgICAgICAgICAgICByZWR1Y2luZyBzY2FsZSB3b3VsZCBkaXNjYXJkIG5vbi16ZXJvIGRpZ2l0cy4KKyAgKi8KKyAKKyBwdWJsaWMgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgc2V0U2NhbGUoaW50IHNjYWxlLGludCByb3VuZCl7CisgIGludCBvdXJzY2FsZTsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgcmVzOworICBpbnQgcGFkZGluZz0wOworICBpbnQgbmV3bGVuPTA7CisgIC8vIGF0IHByZXNlbnQgdGhpcyBuYXVnaHRpbHkgb25seSBjaGVja3MgdGhlIHJvdW5kIHZhbHVlIGlmIGl0IGlzCisgIC8vIG5lZWRlZCAodXNlZCksIGZvciBzcGVlZAorICBvdXJzY2FsZT10aGlzLnNjYWxlKCk7CisgIGlmIChvdXJzY2FsZT09c2NhbGUpICAvLyBhbHJlYWR5IGNvcnJlY3Qgc2NhbGUKKyAgIGlmICh0aGlzLmZvcm09PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTikgIC8vIC4uIGFuZCBmb3JtCisgICAgcmV0dXJuIHRoaXM7CisgIHJlcz1jbG9uZSh0aGlzKTsgLy8gbmVlZCBjb3B5CisgIGlmIChvdXJzY2FsZTw9c2NhbGUpIAorICAgeyAvLyBzaW1wbHkgemVyby1wYWRkaW5nL2NoYW5naW5nIGZvcm0KKyAgICAvLyBpZiBvdXJzY2FsZSBpcyAwIHdlIG1heSBoYXZlIGxvdHMgb2YgMHMgdG8gYWRkCisgICAgaWYgKG91cnNjYWxlPT0wKSAKKyAgICAgcGFkZGluZz1yZXMuZXhwK3NjYWxlOworICAgIGVsc2UgCisgICAgIHBhZGRpbmc9c2NhbGUtb3Vyc2NhbGU7CisgICAgcmVzLm1hbnQ9ZXh0ZW5kKHJlcy5tYW50LHJlcy5tYW50Lmxlbmd0aCtwYWRkaW5nKTsKKyAgICByZXMuZXhwPShpbnQpLXNjYWxlOyAvLyBhcyByZXF1ZXN0ZWQKKyAgIH0KKyAgZWxzZSAKKyAgIHsvKiBvdXJzY2FsZT5zY2FsZTogc2hvcnRlbmluZywgcHJvYmFibHkgKi8KKyAgICBpZiAoc2NhbGU8MCkgCisgICAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiTmVnYXRpdmUgc2NhbGU6IisiICIrc2NhbGUpOworICAgIC8vIFtyb3VuZCgpIHdpbGwgcmFpc2UgZXhjZXB0aW9uIGlmIGludmFsaWQgcm91bmRdCisgICAgbmV3bGVuPXJlcy5tYW50Lmxlbmd0aC0oKG91cnNjYWxlLXNjYWxlKSk7IC8vIFs8PTAgaXMgT0tdCisgICAgcmVzPXJlcy5yb3VuZChuZXdsZW4scm91bmQpOyAvLyByb3VuZCB0byByZXF1aXJlZCBsZW5ndGgKKyAgICAvLyBUaGlzIGNvdWxkIGhhdmUgc2hpZnRlZCBsZWZ0IGlmIHJvdW5kIChzYXkpIDAuOS0+MVsuMF0KKyAgICAvLyBSZXBhaXIgaWYgc28gYnkgYWRkaW5nIGEgemVybyBhbmQgcmVkdWNpbmcgZXhwb25lbnQKKyAgICBpZiAocmVzLmV4cCE9KChpbnQpLXNjYWxlKSkgCisgICAgIHsKKyAgICAgIHJlcy5tYW50PWV4dGVuZChyZXMubWFudCxyZXMubWFudC5sZW5ndGgrMSk7CisgICAgICByZXMuZXhwPXJlcy5leHAtMTsKKyAgICAgfQorICAgfQorICByZXMuZm9ybT0oYnl0ZSljb20uaWJtLm1hdGguTWF0aENvbnRleHQuUExBSU47IC8vIGJ5IGRlZmluaXRpb24KKyAgcmV0dXJuIHJlczsKKyAgfQorCisgLyoqCisgICogQ29udmVydHMgdGhpcyA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB0byBhIDxjb2RlPnNob3J0PC9jb2RlPi4KKyAgKiBJZiB0aGUgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gaGFzIGEgbm9uLXplcm8gZGVjaW1hbCBwYXJ0IG9yIGlzCisgICogb3V0IG9mIHRoZSBwb3NzaWJsZSByYW5nZSBmb3IgYSA8Y29kZT5zaG9ydDwvY29kZT4gKDE2LWJpdCBzaWduZWQKKyAgKiBpbnRlZ2VyKSByZXN1bHQgdGhlbiBhbiA8Y29kZT5Bcml0aG1ldGljRXhjZXB0aW9uPC9jb2RlPiBpcyB0aHJvd24uCisgICoKKyAgKiBAcmV0dXJuIEEgPGNvZGU+c2hvcnQ8L2NvZGU+IGVxdWFsIGluIHZhbHVlIHRvIDxjb2RlPnRoaXM8L2NvZGU+LgorICAqIEB0aHJvd3MgQXJpdGhtZXRpY0V4Y2VwdGlvbiBpZiA8Y29kZT50aGlzPC9jb2RlPiBoYXMgYSBub24temVybworICAqICAgICAgICAgICAgICAgICBkZWNpbWFsIHBhcnQsIG9yIHdpbGwgbm90IGZpdCBpbiBhCisgICogICAgICAgICAgICAgICAgIDxjb2RlPnNob3J0PC9jb2RlPi4KKyAgKiBAc2luY2UgIElCTSBKREsgMS4xLjgKKyAgKi8KKyAKKyBwdWJsaWMgc2hvcnQgc2hvcnRWYWx1ZUV4YWN0KCl7CisgIGludCBudW07CisgIG51bT10aGlzLmludFZhbHVlRXhhY3QoKTsgLy8gd2lsbCBjaGVjayBkZWNpbWFsIHBhcnQgdG9vCisgIGlmICgobnVtPjMyNzY3KXwobnVtPCgtMzI3NjgpKSkgCisgICB0aHJvdyBuZXcgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24oIkNvbnZlcnNpb24gb3ZlcmZsb3c6IisiICIrdGhpcy50b1N0cmluZygpKTsKKyAgcmV0dXJuIChzaG9ydCludW07CisgIH0KKworIC8qKgorICAqIFJldHVybnMgdGhlIHNpZ24gb2YgdGhpcyA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiwgYXMgYW4KKyAgKiA8Y29kZT5pbnQ8L2NvZGU+LgorICAqIFRoaXMgcmV0dXJucyB0aGUgPGk+c2lnbnVtPC9pPiBmdW5jdGlvbiB2YWx1ZSB0aGF0IHJlcHJlc2VudHMgdGhlCisgICogc2lnbiBvZiB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+LgorICAqIFRoYXQgaXMsIC0xIGlmIHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBpcyBuZWdhdGl2ZSwgMCBpZiBpdCBpcworICAqIG51bWVyaWNhbGx5IGVxdWFsIHRvIHplcm8sIG9yIDEgaWYgaXQgaXMgcG9zaXRpdmUuCisgICoKKyAgKiBAcmV0dXJuIEFuIDxjb2RlPmludDwvY29kZT4gd2hpY2ggaXMgLTEgaWYgdGhlCisgICogICAgICAgICA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBpcyBuZWdhdGl2ZSwgMCBpZiBpdCBpcworICAqICAgICAgICAgbnVtZXJpY2FsbHkgZXF1YWwgdG8gemVybywgb3IgMSBpZiBpdCBpcyBwb3NpdGl2ZS4KKyAgKi8KKyAKKyBwdWJsaWMgaW50IHNpZ251bSgpeworICByZXR1cm4gKGludCl0aGlzLmluZDsgLy8gW25vdGUgdGhpcyBhc3N1bWVzIHZhbHVlcyBmb3IgaW5kLl0KKyAgfQorCisgLyoqCisgICogQ29udmVydHMgdGhpcyA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB0byBhCisgICogPGNvZGU+amF2YS5tYXRoLkJpZ0RlY2ltYWw8L2NvZGU+LgorICAqIDxwPgorICAqIFRoaXMgaXMgYW4gZXhhY3QgY29udmVyc2lvbjsgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBhcyBpZiB0aGUKKyAgKiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB3ZXJlIGZvcm1hdHRlZCBhcyBhIHBsYWluIG51bWJlciB3aXRob3V0CisgICogYW55IHJvdW5kaW5nIG9yIGV4cG9uZW50IGFuZCB0aGVuIHRoZQorICAqIDxjb2RlPmphdmEubWF0aC5CaWdEZWNpbWFsKGphdmEubGFuZy5TdHJpbmcpPC9jb2RlPiBjb25zdHJ1Y3RvcgorICAqIHdlcmUgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIHJlc3VsdC4KKyAgKiA8cD4KKyAgKiA8aT4oTm90ZTogdGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgb25seSBpbiB0aGUKKyAgKiA8Y29kZT5jb20uaWJtLm1hdGg8L2NvZGU+IHZlcnNpb24gb2YgdGhlIEJpZ0RlY2ltYWwgY2xhc3MuCisgICogSXQgd291bGQgbm90IGJlIHByZXNlbnQgaW4gYSA8Y29kZT5qYXZhLm1hdGg8L2NvZGU+IHZlcnNpb24uKTwvaT4KKyAgKgorICAqIEByZXR1cm4gVGhlIDxjb2RlPmphdmEubWF0aC5CaWdEZWNpbWFsPC9jb2RlPiBlcXVhbCBpbiB2YWx1ZQorICAqICAgICAgICAgdG8gdGhpcyA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPi4KKyAgKiBAc2luY2UgSUJNIEpESyAxLjEuOAorICAqLworIAorIHB1YmxpYyBqYXZhLm1hdGguQmlnRGVjaW1hbCB0b0JpZ0RlY2ltYWwoKXsKKyAgcmV0dXJuIG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbCh0aGlzLnVuc2NhbGVkVmFsdWUoKSx0aGlzLnNjYWxlKCkpOworICB9CisKKyAvKioKKyAgKiBDb252ZXJ0cyB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHRvIGEKKyAgKiA8Y29kZT5qYXZhLm1hdGguQmlnSW50ZWdlcjwvY29kZT4uCisgICogPHA+CisgICogQW55IGRlY2ltYWwgcGFydCBpcyB0cnVuY2F0ZWQgKGRpc2NhcmRlZCkuCisgICogSWYgYW4gZXhjZXB0aW9uIGlzIGRlc2lyZWQgc2hvdWxkIHRoZSBkZWNpbWFsIHBhcnQgYmUgbm9uLXplcm8sCisgICogdXNlIHtAbGluayAjdG9CaWdJbnRlZ2VyRXhhY3QoKX0uCisgICoKKyAgKiBAcmV0dXJuIFRoZSA8Y29kZT5qYXZhLm1hdGguQmlnSW50ZWdlcjwvY29kZT4gZXF1YWwgaW4gdmFsdWUKKyAgKiAgICAgICAgIHRvIHRoZSBpbnRlZ2VyIHBhcnQgb2YgdGhpcyA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPi4KKyAgKi8KKyAKKyBwdWJsaWMgamF2YS5tYXRoLkJpZ0ludGVnZXIgdG9CaWdJbnRlZ2VyKCl7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHJlcz1udWxsOworICBpbnQgbmV3bGVuPTA7CisgIGJ5dGUgbmV3bWFudFtdPW51bGw7CisgIHsvKnNlbGVjdCovCisgIGlmICgoZXhwPj0wKSYoZm9ybT09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOKSkKKyAgIHJlcz10aGlzOyAvLyBjYW4gbGF5b3V0IHNpbXBseQorICBlbHNlIGlmIChleHA+PTApCisgICB7CisgICAgcmVzPWNsb25lKHRoaXMpOyAvLyBzYWZlIGNvcHkKKyAgICByZXMuZm9ybT0oYnl0ZSljb20uaWJtLm1hdGguTWF0aENvbnRleHQuUExBSU47IC8vIC4uIGFuZCByZXF1ZXN0IFBMQUlOCisgICB9CisgIGVsc2V7CisgICB7IC8vIGV4cDwwOyBzY2FsZSB0byBiZSB0cnVuY2F0ZWQKKyAgICAvLyB3ZSBjb3VsZCB1c2UgZGl2aWRlSW50ZWdlciwgYnV0IHdlIG1heSBhcyB3ZWxsIGJlIHF1aWNrZXIKKyAgICBpZiAoKChpbnQpLXRoaXMuZXhwKT49dGhpcy5tYW50Lmxlbmd0aCkgCisgICAgIHJlcz1aRVJPOyAvLyBhbGwgYmxvd3MgYXdheQorICAgIGVsc2UgCisgICAgIHsKKyAgICAgIHJlcz1jbG9uZSh0aGlzKTsgLy8gc2FmZSBjb3B5CisgICAgICBuZXdsZW49cmVzLm1hbnQubGVuZ3RoK3Jlcy5leHA7CisgICAgICBuZXdtYW50PW5ldyBieXRlW25ld2xlbl07IC8vIFtzaG9ydGVyXQorICAgICAgamF2YS5sYW5nLlN5c3RlbS5hcnJheWNvcHkoKGphdmEubGFuZy5PYmplY3QpcmVzLm1hbnQsMCwoamF2YS5sYW5nLk9iamVjdCluZXdtYW50LDAsbmV3bGVuKTsKKyAgICAgIHJlcy5tYW50PW5ld21hbnQ7CisgICAgICByZXMuZm9ybT0oYnl0ZSljb20uaWJtLm1hdGguTWF0aENvbnRleHQuUExBSU47CisgICAgICByZXMuZXhwPTA7CisgICAgIH0KKyAgIH0KKyAgfQorICB9CisgIHJldHVybiBuZXcgQmlnSW50ZWdlcihuZXcgamF2YS5sYW5nLlN0cmluZyhyZXMubGF5b3V0KCkpKTsKKyAgfQorCisgLyoqCisgICogQ29udmVydHMgdGhpcyA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB0byBhCisgICogPGNvZGU+amF2YS5tYXRoLkJpZ0ludGVnZXI8L2NvZGU+LgorICAqIDxwPgorICAqIEFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gaWYgdGhlIGRlY2ltYWwgcGFydCAoaWYgYW55KSBpcyBub24temVyby4KKyAgKgorICAqIEByZXR1cm4gVGhlIDxjb2RlPmphdmEubWF0aC5CaWdJbnRlZ2VyPC9jb2RlPiBlcXVhbCBpbiB2YWx1ZQorICAqICAgICAgICAgdG8gdGhlIGludGVnZXIgcGFydCBvZiB0aGlzIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+LgorICAqIEB0aHJvd3MgQXJpdGhtZXRpY0V4Y2VwdGlvbiBpZiA8Y29kZT50aGlzPC9jb2RlPiBoYXMgYSBub24temVybworICAqICAgICAgICAgZGVjaW1hbCBwYXJ0LgorICAqIEBzaW5jZSAgSUJNIEpESyAxLjEuOAorICAqLworIAorIHB1YmxpYyBqYXZhLm1hdGguQmlnSW50ZWdlciB0b0JpZ0ludGVnZXJFeGFjdCgpeworICAvKiB0ZXN0IGFueSB0cmFpbGluZyBkZWNpbWFsIHBhcnQgKi8KKyAgaWYgKGV4cDwwKSAKKyAgIHsgLy8gcG9zc2libGUgZGVjaW1hbCBwYXJ0CisgICAgLyogYWxsIGRlY2ltYWwgcGxhY2VzIG11c3QgYmUgMDsgbm90ZSBleHA8MCAqLworICAgIGlmICgoIShhbGx6ZXJvKG1hbnQsbWFudC5sZW5ndGgrZXhwKSkpKSAKKyAgICAgdGhyb3cgbmV3IGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uKCJEZWNpbWFsIHBhcnQgbm9uLXplcm86IisiICIrdGhpcy50b1N0cmluZygpKTsKKyAgIH0KKyAgcmV0dXJuIHRvQmlnSW50ZWdlcigpOworICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBhcyBhIGNoYXJhY3RlciBhcnJheS4KKyAgKiBUaGUgcmVzdWx0IG9mIHRoaXMgbWV0aG9kIGlzIHRoZSBzYW1lIGFzIHVzaW5nIHRoZQorICAqIHNlcXVlbmNlIDxjb2RlPnRvU3RyaW5nKCkudG9DaGFyQXJyYXkoKTwvY29kZT4sIGJ1dCBhdm9pZHMgY3JlYXRpbmcKKyAgKiB0aGUgaW50ZXJtZWRpYXRlIDxjb2RlPlN0cmluZzwvY29kZT4gYW5kIDxjb2RlPmNoYXJbXTwvY29kZT4KKyAgKiBvYmplY3RzLgorICAqCisgICogQHJldHVybiBUaGUgPGNvZGU+Y2hhcltdPC9jb2RlPiBhcnJheSBjb3JyZXNwb25kaW5nIHRvIHRoaXMKKyAgKiAgICAgICAgIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+LgorICAqIEBzaW5jZSBJQk0gSkRLIDEuMS44CisgICovCisgCisgcHVibGljIGNoYXJbXSB0b0NoYXJBcnJheSgpeworICByZXR1cm4gbGF5b3V0KCk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGFzIGEgPGNvZGU+U3RyaW5nPC9jb2RlPi4KKyAgKiBUaGlzIHJldHVybnMgYSA8Y29kZT5TdHJpbmc8L2NvZGU+IHRoYXQgZXhhY3RseSByZXByZXNlbnRzIHRoaXMKKyAgKiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiwgYXMgZGVmaW5lZCBpbiB0aGUgZGVjaW1hbCBkb2N1bWVudGF0aW9uCisgICogKHNlZSB7QGxpbmsgQmlnRGVjaW1hbCBjbGFzcyBoZWFkZXJ9KS4KKyAgKiA8cD4KKyAgKiBCeSBkZWZpbml0aW9uLCB1c2luZyB0aGUge0BsaW5rICNCaWdEZWNpbWFsKFN0cmluZyl9IGNvbnN0cnVjdG9yCisgICogb24gdGhlIHJlc3VsdCA8Y29kZT5TdHJpbmc8L2NvZGU+IHdpbGwgY3JlYXRlIGEKKyAgKiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiB0aGF0IGlzIGV4YWN0bHkgZXF1YWwgdG8gdGhlIG9yaWdpbmFsCisgICogPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4uCisgICoKKyAgKiBAcmV0dXJuIFRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+IGV4YWN0bHkgY29ycmVzcG9uZGluZyB0byB0aGlzCisgICogICAgICAgICA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPi4KKyAgKiBAc2VlICAgICNmb3JtYXQoaW50LCBpbnQpCisgICogQHNlZSAgICAjZm9ybWF0KGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpCisgICogQHNlZSAgICAjdG9DaGFyQXJyYXkoKQorICAqLworIAorIHB1YmxpYyBqYXZhLmxhbmcuU3RyaW5nIHRvU3RyaW5nKCl7CisgIHJldHVybiBuZXcgamF2YS5sYW5nLlN0cmluZyhsYXlvdXQoKSk7CisgIH0KKworIC8qKgorICAqIFJldHVybnMgdGhlIG51bWJlciBhcyBhIDxjb2RlPkJpZ0ludGVnZXI8L2NvZGU+IGFmdGVyIHJlbW92aW5nIHRoZQorICAqIHNjYWxlLgorICAqIFRoYXQgaXMsIHRoZSBudW1iZXIgaXMgZXhwcmVzc2VkIGFzIGEgcGxhaW4gbnVtYmVyLCBhbnkgZGVjaW1hbAorICAqIHBvaW50IGlzIHRoZW4gcmVtb3ZlZCAocmV0YWluaW5nIHRoZSBkaWdpdHMgb2YgYW55IGRlY2ltYWwgcGFydCksCisgICogYW5kIHRoZSByZXN1bHQgaXMgdGhlbiBjb252ZXJ0ZWQgdG8gYSA8Y29kZT5CaWdJbnRlZ2VyPC9jb2RlPi4KKyAgKgorICAqIEByZXR1cm4gVGhlIDxjb2RlPmphdmEubWF0aC5CaWdJbnRlZ2VyPC9jb2RlPiBlcXVhbCBpbiB2YWx1ZSB0bworICAqICAgICAgICAgdGhpcyA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBtdWx0aXBsaWVkIGJ5IHRlbiB0byB0aGUKKyAgKiAgICAgICAgIHBvd2VyIG9mIDxjb2RlPnRoaXMuc2NhbGUoKTwvY29kZT4uCisgICogQHNpbmNlIEpESzEuMgorICAqLworIAorIHB1YmxpYyBqYXZhLm1hdGguQmlnSW50ZWdlciB1bnNjYWxlZFZhbHVlKCl7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHJlcz1udWxsOworICBpZiAoZXhwPj0wKSAKKyAgIHJlcz10aGlzOworICBlbHNlIAorICAgeworICAgIHJlcz1jbG9uZSh0aGlzKTsgLy8gc2FmZSBjb3B5CisgICAgcmVzLmV4cD0wOyAvLyBkcm9wIHNjYWxlCisgICB9CisgIHJldHVybiByZXMudG9CaWdJbnRlZ2VyKCk7CisgIH0KKworIC8qKgorICAqIFRyYW5zbGF0ZXMgYSA8Y29kZT5kb3VibGU8L2NvZGU+IHRvIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4uCisgICogPHA+CisgICogUmV0dXJucyBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdoaWNoIGlzIHRoZSBkZWNpbWFsCisgICogcmVwcmVzZW50YXRpb24gb2YgdGhlIDY0LWJpdCBzaWduZWQgYmluYXJ5IGZsb2F0aW5nIHBvaW50CisgICogcGFyYW1ldGVyLiBJZiB0aGUgcGFyYW1ldGVyIGlzIGluZmluaXRlLCBvciBpcyBub3QgYSBudW1iZXIgKE5hTiksCisgICogYSA8Y29kZT5OdW1iZXJGb3JtYXRFeGNlcHRpb248L2NvZGU+IGlzIHRocm93bi4KKyAgKiA8cD4KKyAgKiBUaGUgbnVtYmVyIGlzIGNvbnN0cnVjdGVkIGFzIHRob3VnaCA8Y29kZT5udW08L2NvZGU+IGhhZCBiZWVuCisgICogY29udmVydGVkIHRvIGEgPGNvZGU+U3RyaW5nPC9jb2RlPiB1c2luZyB0aGUKKyAgKiA8Y29kZT5Eb3VibGUudG9TdHJpbmcoKTwvY29kZT4gbWV0aG9kIGFuZCB0aGUKKyAgKiB7QGxpbmsgI0JpZ0RlY2ltYWwoamF2YS5sYW5nLlN0cmluZyl9IGNvbnN0cnVjdG9yIGhhZCB0aGVuIGJlZW4gdXNlZC4KKyAgKiBUaGlzIGlzIHR5cGljYWxseSBub3QgYW4gZXhhY3QgY29udmVyc2lvbi4KKyAgKgorICAqIEBwYXJhbSAgZHViIFRoZSA8Y29kZT5kb3VibGU8L2NvZGU+IHRvIGJlIHRyYW5zbGF0ZWQuCisgICogQHJldHVybiAgICAgVGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGVxdWFsIGluIHZhbHVlIHRvCisgICogICAgICAgICAgICAgPGNvZGU+ZHViPC9jb2RlPi4KKyAgKiBAdGhyb3dzIE51bWJlckZvcm1hdEV4Y2VwdGlvbiBpZiB0aGUgcGFyYW1ldGVyIGlzIGluZmluaXRlIG9yCisgICogICAgICAgICAgICAgbm90IGEgbnVtYmVyLgorICAqIEBzaW5jZSBJQk0gSkRLIDEuMS44CisgICovCisgCisgcHVibGljIHN0YXRpYyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCB2YWx1ZU9mKGRvdWJsZSBkdWIpeworICAvLyBSZW1pbmRlcjogYSB6ZXJvIGRvdWJsZSByZXR1cm5zICcwLjAnLCBzbyB3ZSBjYW5ub3QgZmFzdHBhdGggdG8KKyAgLy8gdXNlIHRoZSBjb25zdGFudCBaRVJPLiAgVGhpcyBtaWdodCBiZSBpbXBvcnRhbnQgZW5vdWdoIHRvIGp1c3RpZnkKKyAgLy8gYSBmYWN0b3J5IGFwcHJvYWNoLCBhIGNhY2hlLCBvciBhIGZldyBwcml2YXRlIGNvbnN0YW50cywgbGF0ZXIuCisgIHJldHVybiBuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoKG5ldyBqYXZhLmxhbmcuRG91YmxlKGR1YikpLnRvU3RyaW5nKCkpOworICB9CisKKyAvKioKKyAgKiBUcmFuc2xhdGVzIGEgPGNvZGU+bG9uZzwvY29kZT4gdG8gYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPi4KKyAgKiBUaGF0IGlzLCByZXR1cm5zIGEgcGxhaW4gPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2hvc2UgdmFsdWUgaXMKKyAgKiBlcXVhbCB0byB0aGUgZ2l2ZW4gPGNvZGU+bG9uZzwvY29kZT4uCisgICoKKyAgKiBAcGFyYW0gIGxpbnQgVGhlIDxjb2RlPmxvbmc8L2NvZGU+IHRvIGJlIHRyYW5zbGF0ZWQuCisgICogQHJldHVybiAgICAgIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBlcXVhbCBpbiB2YWx1ZSB0bworICAqICAgICAgICAgICAgICA8Y29kZT5saW50PC9jb2RlPi4KKyAgKi8KKyAKKyBwdWJsaWMgc3RhdGljIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHZhbHVlT2YobG9uZyBsaW50KXsKKyAgcmV0dXJuIHZhbHVlT2YobGludCwwKTsKKyAgfQorCisgLyoqCisgICogVHJhbnNsYXRlcyBhIDxjb2RlPmxvbmc8L2NvZGU+IHRvIGEgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gd2l0aCBhCisgICogZ2l2ZW4gc2NhbGUuCisgICogVGhhdCBpcywgcmV0dXJucyBhIHBsYWluIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdob3NlIHVuc2NhbGVkCisgICogdmFsdWUgaXMgZXF1YWwgdG8gdGhlIGdpdmVuIDxjb2RlPmxvbmc8L2NvZGU+LCBhZGp1c3RlZCBieSB0aGUKKyAgKiBzZWNvbmQgcGFyYW1ldGVyLCA8Y29kZT5zY2FsZTwvY29kZT4uCisgICogPHA+CisgICogVGhlIHJlc3VsdCBpcyBnaXZlbiBieToKKyAgKiA8cD48Y29kZT4KKyAgKiAobmV3IEJpZ0RlY2ltYWwobGludCkpLmRpdmlkZShURU4ucG93KG5ldyBCaWdEZWNpbWFsKHNjYWxlKSkpCisgICogPC9jb2RlPgorICAqIDxwPgorICAqIEEgPGNvZGU+TnVtYmVyRm9ybWF0RXhjZXB0aW9uPC9jb2RlPiBpcyB0aHJvd24gaWYgPGNvZGU+c2NhbGU8L2NvZGU+CisgICogaXMgbmVnYXRpdmUuCisgICoKKyAgKiBAcGFyYW0gIGxpbnQgIFRoZSA8Y29kZT5sb25nPC9jb2RlPiB0byBiZSB0cmFuc2xhdGVkLgorICAqIEBwYXJhbSAgc2NhbGUgVGhlIDxjb2RlPmludDwvY29kZT4gc2NhbGUgdG8gYmUgYXBwbGllZC4KKyAgKiBAcmV0dXJuICAgICAgIFRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBlcXVhbCBpbiB2YWx1ZSB0bworICAqICAgICAgICAgICAgICAgPGNvZGU+bGludDwvY29kZT4uCisgICogQHRocm93cyBOdW1iZXJGb3JtYXRFeGNlcHRpb24gaWYgdGhlIHNjYWxlIGlzIG5lZ2F0aXZlLgorICAqLworIAorIHB1YmxpYyBzdGF0aWMgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgdmFsdWVPZihsb25nIGxpbnQsaW50IHNjYWxlKXsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgcmVzPW51bGw7CisgIHsvKnNlbGVjdCovCisgIGlmIChsaW50PT0wKQorICAgcmVzPVpFUk87CisgIGVsc2UgaWYgKGxpbnQ9PTEpCisgICByZXM9T05FOworICBlbHNlIGlmIChsaW50PT0xMCkKKyAgIHJlcz1URU47CisgIGVsc2V7CisgICByZXM9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGxpbnQpOworICB9CisgIH0KKyAgaWYgKHNjYWxlPT0wKSAKKyAgIHJldHVybiByZXM7CisgIGlmIChzY2FsZTwwKSAKKyAgIHRocm93IG5ldyBqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uKCJOZWdhdGl2ZSBzY2FsZToiKyIgIitzY2FsZSk7CisgIHJlcz1jbG9uZShyZXMpOyAvLyBzYWZlIGNvcHkgW2RvIG5vdCBtdXRhdGVdCisgIHJlcy5leHA9KGludCktc2NhbGU7IC8vIGV4cG9uZW50IGlzIC1zY2FsZQorICByZXR1cm4gcmVzOworICB9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogUHJpdmF0ZSBtZXRob2RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiA8c2dtbD4gUmV0dXJuIGNoYXIgYXJyYXkgdmFsdWUgb2YgYSBCaWdEZWNpbWFsIChjb252ZXJzaW9uIGZyb20KKyAgICAgICBCaWdEZWNpbWFsIHRvIGxhaWQtb3V0IGNhbm9uaWNhbCBjaGFyIGFycmF5KS4KKyAgICA8cD5UaGUgbWFudGlzc2Egd2lsbCBlaXRoZXIgYWxyZWFkeSBoYXZlIGJlZW4gcm91bmRlZCAoZm9sbG93aW5nIGFuCisgICAgICAgb3BlcmF0aW9uKSBvciB3aWxsIGJlIG9mIGxlbmd0aCBhcHByb3ByaWF0ZSAoaW4gdGhlIGNhc2Ugb2YKKyAgICAgICBjb25zdHJ1Y3Rpb24gZnJvbSBhbiBpbnQsIGZvciBleGFtcGxlKS4KKyAgICA8cD5XZSBtdXN0IG5vdCBhbHRlciB0aGUgbWFudGlzc2EsIGhlcmUuCisgICAgPHA+J2Zvcm0nIGRlc2NyaWJlcyB3aGV0aGVyIHdlIGFyZSB0byB1c2UgZXhwb25lbnRpYWwgbm90YXRpb24gKGFuZAorICAgICAgIGlmIHNvLCB3aGljaCksIG9yIGlmIHdlIGFyZSB0byBsYXkgb3V0IGFzIGEgcGxhaW4vcHVyZSBudW1lcmljLgorICAgIDwvc2dtbD4gKi8KKyAKKyBwcml2YXRlIGNoYXJbXSBsYXlvdXQoKXsKKyAgY2hhciBjbWFudFtdOworICBpbnQgaT0wOworICBqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIHNiPW51bGw7CisgIGludCBldXNlPTA7CisgIGludCBzaWc9MDsKKyAgY2hhciBjc2lnbj0wOworICBjaGFyIHJlY1tdPW51bGw7CisgIGludCBuZWVkc2lnbjsKKyAgaW50IG1hZzsKKyAgaW50IGxlbj0wOworICBjbWFudD1uZXcgY2hhclttYW50Lmxlbmd0aF07IC8vIGNvcHkgYnl0ZVtdIHRvIGEgY2hhcltdCisgIHtpbnQgJDE4PW1hbnQubGVuZ3RoO2k9MDtpOmZvcig7JDE4PjA7JDE4LS0saSsrKXsKKyAgIGNtYW50W2ldPShjaGFyKShtYW50W2ldKygoaW50KSgnMCcpKSk7CisgICB9CisgIH0vKmkqLworICAKKyAgaWYgKGZvcm0hPWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTikgCisgICB7LyogZXhwb25lbnRpYWwgbm90YXRpb24gbmVlZGVkICovCisgICAgc2I9bmV3IGphdmEubGFuZy5TdHJpbmdCdWZmZXIoY21hbnQubGVuZ3RoKzE1KTsgLy8gLXgueHh4RSs5OTk5OTk5OTkKKyAgICBpZiAoaW5kPT1pc25lZykgCisgICAgIHNiLmFwcGVuZCgnLScpOworICAgIGV1c2U9KGV4cCtjbWFudC5sZW5ndGgpLTE7IC8vIGV4cG9uZW50IHRvIHVzZQorICAgIC8qIHNldHVwIHNpZz1zaWduaWZpY2FudCBkaWdpdHMgYW5kIGNvcHkgdG8gcmVzdWx0ICovCisgICAgaWYgKGZvcm09PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDKSAKKyAgICAgeyAvLyBbZGVmYXVsdF0KKyAgICAgIHNiLmFwcGVuZChjbWFudFswXSk7IC8vIHNpZ25pZmljYW50IGNoYXJhY3RlcgorICAgICAgaWYgKGNtYW50Lmxlbmd0aD4xKSAgLy8gaGF2ZSBkZWNpbWFsIHBhcnQKKyAgICAgICBzYi5hcHBlbmQoJy4nKS5hcHBlbmQoY21hbnQsMSxjbWFudC5sZW5ndGgtMSk7CisgICAgIH0KKyAgICBlbHNlIAorICAgICB7ZW5naW5lZXJpbmc6ZG97CisgICAgICBzaWc9ZXVzZSUzOyAvLyBjb21tb24KKyAgICAgIGlmIChzaWc8MCkgCisgICAgICAgc2lnPTMrc2lnOyAvLyBuZWdhdGl2ZSBleHBvbmVudAorICAgICAgZXVzZT1ldXNlLXNpZzsKKyAgICAgIHNpZysrOworICAgICAgaWYgKHNpZz49Y21hbnQubGVuZ3RoKSAKKyAgICAgICB7IC8vIHplcm8gcGFkZGluZyBtYXkgYmUgbmVlZGVkCisgICAgICAgIHNiLmFwcGVuZChjbWFudCwwLGNtYW50Lmxlbmd0aCk7CisgICAgICAgIHtpbnQgJDE5PXNpZy1jbWFudC5sZW5ndGg7Zm9yKDskMTk+MDskMTktLSl7CisgICAgICAgICBzYi5hcHBlbmQoJzAnKTsKKyAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgIH0KKyAgICAgIGVsc2UgCisgICAgICAgeyAvLyBkZWNpbWFsIHBvaW50IG5lZWRlZAorICAgICAgICBzYi5hcHBlbmQoY21hbnQsMCxzaWcpLmFwcGVuZCgnLicpLmFwcGVuZChjbWFudCxzaWcsY21hbnQubGVuZ3RoLXNpZyk7CisgICAgICAgfQorICAgICB9d2hpbGUoZmFsc2UpO30vKmVuZ2luZWVyaW5nKi8KKyAgICBpZiAoZXVzZSE9MCkgCisgICAgIHsKKyAgICAgIGlmIChldXNlPDApIAorICAgICAgIHsKKyAgICAgICAgY3NpZ249Jy0nOworICAgICAgICBldXNlPShpbnQpLWV1c2U7CisgICAgICAgfQorICAgICAgZWxzZSAKKyAgICAgICBjc2lnbj0nKyc7CisgICAgICBzYi5hcHBlbmQoJ0UnKS5hcHBlbmQoY3NpZ24pLmFwcGVuZChldXNlKTsKKyAgICAgfQorICAgIHJlYz1uZXcgY2hhcltzYi5sZW5ndGgoKV07CisgICAgc2IuZ2V0Q2hhcnMoMCxzYi5sZW5ndGgoKSxyZWMsMCk7CisgICAgcmV0dXJuIHJlYzsKKyAgIH0KKyAgCisgIC8qIEhlcmUgZm9yIG5vbi1leHBvbmVudGlhbCAocGxhaW4pIG5vdGF0aW9uICovCisgIGlmIChleHA9PTApIAorICAgey8qIGVhc3kgKi8KKyAgICBpZiAoaW5kPj0wKSAKKyAgICAgcmV0dXJuIGNtYW50OyAvLyBub24tbmVnYXRpdmUgaW50ZWdlcgorICAgIHJlYz1uZXcgY2hhcltjbWFudC5sZW5ndGgrMV07CisgICAgcmVjWzBdPSctJzsKKyAgICBqYXZhLmxhbmcuU3lzdGVtLmFycmF5Y29weSgoamF2YS5sYW5nLk9iamVjdCljbWFudCwwLChqYXZhLmxhbmcuT2JqZWN0KXJlYywxLGNtYW50Lmxlbmd0aCk7CisgICAgcmV0dXJuIHJlYzsKKyAgIH0KKyAgCisgIC8qIE5lZWQgYSAnLicgYW5kL29yIHNvbWUgemVyb3MgKi8KKyAgbmVlZHNpZ249KGludCkoKGluZD09aXNuZWcpPzE6MCk7IC8vIHNwYWNlIGZvciBzaWduPyAgMCBvciAxCisgIAorICAvKiBNQUcgaXMgdGhlIHBvc2l0aW9uIG9mIHRoZSBwb2ludCBpbiB0aGUgbWFudGlzc2EgKGluZGV4IG9mIHRoZQorICAgICBjaGFyYWN0ZXIgaXQgZm9sbG93cykgKi8KKyAgbWFnPWV4cCtjbWFudC5sZW5ndGg7CisgIAorICBpZiAobWFnPDEpIAorICAgey8qIDAuMDB4eHh4IGZvcm0gKi8KKyAgICBsZW49KG5lZWRzaWduKzIpLWV4cDsgLy8gbmVlZHNpZ24rMisoLW1hZykrY21hbnQubGVuZ3RoCisgICAgcmVjPW5ldyBjaGFyW2xlbl07CisgICAgaWYgKG5lZWRzaWduIT0wKSAKKyAgICAgcmVjWzBdPSctJzsKKyAgICByZWNbbmVlZHNpZ25dPScwJzsKKyAgICByZWNbbmVlZHNpZ24rMV09Jy4nOworICAgIHtpbnQgJDIwPShpbnQpLW1hZztpPW5lZWRzaWduKzI7aTpmb3IoOyQyMD4wOyQyMC0tLGkrKyl7IC8vIG1heWJlIG5vbmUKKyAgICAgcmVjW2ldPScwJzsKKyAgICAgfQorICAgIH0vKmkqLworICAgIGphdmEubGFuZy5TeXN0ZW0uYXJyYXljb3B5KChqYXZhLmxhbmcuT2JqZWN0KWNtYW50LDAsKGphdmEubGFuZy5PYmplY3QpcmVjLChuZWVkc2lnbisyKS1tYWcsY21hbnQubGVuZ3RoKTsKKyAgICByZXR1cm4gcmVjOworICAgfQorICAKKyAgaWYgKG1hZz5jbWFudC5sZW5ndGgpIAorICAgey8qIHh4eHgwMDAwIGZvcm0gKi8KKyAgICBsZW49bmVlZHNpZ24rbWFnOworICAgIHJlYz1uZXcgY2hhcltsZW5dOworICAgIGlmIChuZWVkc2lnbiE9MCkgCisgICAgIHJlY1swXT0nLSc7CisgICAgamF2YS5sYW5nLlN5c3RlbS5hcnJheWNvcHkoKGphdmEubGFuZy5PYmplY3QpY21hbnQsMCwoamF2YS5sYW5nLk9iamVjdClyZWMsbmVlZHNpZ24sY21hbnQubGVuZ3RoKTsKKyAgICB7aW50ICQyMT1tYWctY21hbnQubGVuZ3RoO2k9bmVlZHNpZ24rY21hbnQubGVuZ3RoO2k6Zm9yKDskMjE+MDskMjEtLSxpKyspeyAvLyBuZXZlciAwCisgICAgIHJlY1tpXT0nMCc7CisgICAgIH0KKyAgICB9LyppKi8KKyAgICByZXR1cm4gcmVjOworICAgfQorICAKKyAgLyogZGVjaW1hbCBwb2ludCBpcyBpbiB0aGUgbWlkZGxlIG9mIHRoZSBtYW50aXNzYSAqLworICBsZW49KG5lZWRzaWduKzEpK2NtYW50Lmxlbmd0aDsKKyAgcmVjPW5ldyBjaGFyW2xlbl07CisgIGlmIChuZWVkc2lnbiE9MCkgCisgICByZWNbMF09Jy0nOworICBqYXZhLmxhbmcuU3lzdGVtLmFycmF5Y29weSgoamF2YS5sYW5nLk9iamVjdCljbWFudCwwLChqYXZhLmxhbmcuT2JqZWN0KXJlYyxuZWVkc2lnbixtYWcpOworICByZWNbbmVlZHNpZ24rbWFnXT0nLic7CisgIGphdmEubGFuZy5TeXN0ZW0uYXJyYXljb3B5KChqYXZhLmxhbmcuT2JqZWN0KWNtYW50LG1hZywoamF2YS5sYW5nLk9iamVjdClyZWMsKG5lZWRzaWduK21hZykrMSxjbWFudC5sZW5ndGgtbWFnKTsKKyAgcmV0dXJuIHJlYzsKKyAgfQorCisgLyogPHNnbWw+IENoZWNrcyBhIEJpZ0RlY2ltYWwgYXJndW1lbnQgdG8gZW5zdXJlIGl0J3MgYSB0cnVlIGludGVnZXIKKyAgICAgICBpbiBhIGdpdmVuIHJhbmdlLgorICAgIDxwPklmIE9LLCByZXR1cm5zIGl0IGFzIGFuIGludC4gPC9zZ21sPiAqLworIC8vIFtjdXJyZW50bHkgb25seSB1c2VkIGJ5IHBvd10KKyAKKyBwcml2YXRlIGludCBpbnRjaGVjayhpbnQgbWluLGludCBtYXgpeworICBpbnQgaTsKKyAgaT10aGlzLmludFZhbHVlRXhhY3QoKTsgLy8gW2NoZWNrcyBmb3Igbm9uLTAgZGVjaW1hbCBwYXJ0XQorICAvLyBVc2Ugc2FtZSBtZXNzYWdlIGFzIHRob3VnaCBpbnRWYWx1ZUV4YWN0IGZhaWxlZCBkdWUgdG8gc2l6ZQorICBpZiAoKGk8bWluKXwoaT5tYXgpKSAKKyAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiQ29udmVyc2lvbiBvdmVyZmxvdzoiKyIgIitpKTsKKyAgcmV0dXJuIGk7CisgIH0KKworIC8qIDxzZ21sPiBDYXJyeSBvdXQgZGl2aXNpb24gb3BlcmF0aW9ucy4gPC9zZ21sPiAqLworIC8qCisgICAgQXJnMSBpcyBvcGVyYXRpb24gY29kZTogRD1kaXZpZGUsIEk9aW50ZWdlciBkaXZpZGUsIFI9cmVtYWluZGVyCisgICAgQXJnMiBpcyB0aGUgcmhzLgorICAgIEFyZzMgaXMgdGhlIGNvbnRleHQuCisgICAgQXJnNCBpcyBleHBsaWNpdCBzY2FsZSBpZmYgY29kZT0nRCcgb3IgJ0knICgtMSBpZiBub25lKS4KKyAKKyAgICBVbmRlcmx5aW5nIGFsZ29yaXRobSAoY29tcGxpY2F0aW9ucyBmb3IgUmVtYWluZGVyIGZ1bmN0aW9uIGFuZAorICAgIHNjYWxlZCBkaXZpc2lvbiBhcmUgb21pdHRlZCBmb3IgY2xhcml0eSk6CisgCisgICAgICBUZXN0IGZvciB4LzAgYW5kIHRoZW4gMC94CisgICAgICBFeHAgPUV4cDEgLSBFeHAyCisgICAgICBFeHAgPUV4cCArbGVuKHZhcjEpIC1sZW4odmFyMikKKyAgICAgIFNpZ249U2lnbjEgKiBTaWduMgorICAgICAgUGFkIGFjY3VtdWxhdG9yIChWYXIxKSB0byBkb3VibGUtbGVuZ3RoIHdpdGggMCdzIChwYWQxKQorICAgICAgUGFkIFZhcjIgdG8gc2FtZSBsZW5ndGggYXMgVmFyMQorICAgICAgQjJCPTFzdCB0d28gZGlnaXRzIG9mIHZhcjIsICsxIHRvIGFsbG93IGZvciByb3VuZHVwCisgICAgICBoYXZlPTAKKyAgICAgIERvIHVudGlsIChoYXZlPWRpZ2l0cysxIE9SIHJlc2lkdWU9MCkKKyAgICAgICAgaWYgZXhwPDAgdGhlbiBpZiBpbnRlZ2VyIGRpdmlkZS9yZXNpZHVlIHRoZW4gbGVhdmUKKyAgICAgICAgdGhpc19kaWdpdD0wCisgICAgICAgIERvIGZvcmV2ZXIKKyAgICAgICAgICAgY29tcGFyZSBudW1iZXJzCisgICAgICAgICAgIGlmIDwwIHRoZW4gbGVhdmUgaW5uZXJfbG9vcAorICAgICAgICAgICBpZiA9MCB0aGVuICgtIHF1aWNrIGV4aXQgd2l0aG91dCBzdWJ0cmFjdCAtKSBkbworICAgICAgICAgICAgICB0aGlzX2RpZ2l0PXRoaXNfZGlnaXQrMTsgb3V0cHV0IHRoaXNfZGlnaXQKKyAgICAgICAgICAgICAgbGVhdmUgb3V0ZXJfbG9vcDsgZW5kCisgICAgICAgICAgIENvbXBhcmUgbGVuZ3RocyBvZiBudW1iZXJzIChtYW50aXNzYWUpOgorICAgICAgICAgICBJZiBzYW1lIHRoZW4gQ0E9Zmlyc3RfZGlnaXRfb2ZfVmFyMQorICAgICAgICAgICAgICAgICAgIGVsc2UgQ0E9Zmlyc3RfdHdvX2RpZ2l0c19vZl9WYXIxCisgICAgICAgICAgIG11bHQ9Y2EqMTAvYjJiICAgLS0gR29vZCBhbmQgc2FmZSBndWVzcyBhdCBkaXZpc29yCisgICAgICAgICAgIGlmIG11bHQ9MCB0aGVuIG11bHQ9MQorICAgICAgICAgICB0aGlzX2RpZ2l0PXRoaXNfZGlnaXQrbXVsdAorICAgICAgICAgICBzdWJ0cmFjdAorICAgICAgICAgICBlbmQgaW5uZXJfbG9vcAorICAgICAgICAgaWYgaGF2ZVw9MCB8IHRoaXNfZGlnaXRcPTAgdGhlbiBkbworICAgICAgICAgICBvdXRwdXQgdGhpc19kaWdpdAorICAgICAgICAgICBoYXZlPWhhdmUrMTsgZW5kCisgICAgICAgICB2YXIyPXZhcjIvMTAKKyAgICAgICAgIGV4cD1leHAtMQorICAgICAgICAgZW5kIG91dGVyX2xvb3AKKyAgICAgIGV4cD1leHArMSAgIC0tIHNldCB0aGUgcHJvcGVyIGV4cG9uZW50CisgICAgICBpZiBoYXZlPTAgdGhlbiBnZW5lcmF0ZSBhbnN3ZXI9MAorICAgICAgUmV0dXJuIHRvIEZJTklTSEVECisgICAgICBSZXN1bHQgZGVmaW5lZCBieSBNQVRIVjEKKyAKKyAgICBGb3IgZXh0ZW5kZWQgY29tbWVudGFyeSwgc2VlIERNU1JDTi4KKyAgKi8KKyAKKyBwcml2YXRlIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGRvZGl2aWRlKGNoYXIgY29kZSxjb20uaWJtLm1hdGguQmlnRGVjaW1hbCByaHMsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IHNldCxpbnQgc2NhbGUpeworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBsaHM7CisgIGludCByZXFkaWc7CisgIGludCBuZXdleHA7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHJlczsKKyAgaW50IG5ld2xlbjsKKyAgYnl0ZSB2YXIxW107CisgIGludCB2YXIxbGVuOworICBieXRlIHZhcjJbXTsKKyAgaW50IHZhcjJsZW47CisgIGludCBiMmI7CisgIGludCBoYXZlOworICBpbnQgdGhpc2RpZ2l0PTA7CisgIGludCBpPTA7CisgIGJ5dGUgdjI9MDsKKyAgaW50IGJhPTA7CisgIGludCBtdWx0PTA7CisgIGludCBzdGFydD0wOworICBpbnQgcGFkZGluZz0wOworICBpbnQgZD0wOworICBieXRlIG5ld3ZhcjFbXT1udWxsOworICBieXRlIGxhc3RoYXZlPTA7CisgIGludCBhY3RkaWc9MDsKKyAgYnl0ZSBuZXdtYW50W109bnVsbDsKKyAgCisgIGlmIChzZXQubG9zdERpZ2l0cykgCisgICBjaGVja2RpZ2l0cyhyaHMsc2V0LmRpZ2l0cyk7CisgIGxocz10aGlzOyAvLyBuYW1lIGZvciBjbGFyaXR5CisgIAorICAvLyBbbm90ZSB3ZSBtdXN0IGhhdmUgY2hlY2tlZCBsb3N0RGlnaXRzIGJlZm9yZSB0aGUgZm9sbG93aW5nIGNoZWNrc10KKyAgaWYgKHJocy5pbmQ9PTApIAorICAgdGhyb3cgbmV3IGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uKCJEaXZpZGUgYnkgMCIpOyAvLyBpbmNsdWRlcyAwLzAKKyAgaWYgKGxocy5pbmQ9PTApIAorICAgeyAvLyAwL3ggPT4gMCBbcG9zc2libHkgd2l0aCAuMHNdCisgICAgaWYgKHNldC5mb3JtIT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUExBSU4pIAorICAgICByZXR1cm4gWkVSTzsKKyAgICBpZiAoc2NhbGU9PSgtMSkpIAorICAgICByZXR1cm4gbGhzOworICAgIHJldHVybiBsaHMuc2V0U2NhbGUoc2NhbGUpOworICAgfQorICAKKyAgLyogUHJlcGFyZSBudW1iZXJzIGFjY29yZGluZyB0byBCaWdEZWNpbWFsIHJ1bGVzICovCisgIHJlcWRpZz1zZXQuZGlnaXRzOyAvLyBsb2NhbCBjb3B5IChoZWF2aWx5IHVzZWQpCisgIGlmIChyZXFkaWc+MCkgCisgICB7CisgICAgaWYgKGxocy5tYW50Lmxlbmd0aD5yZXFkaWcpIAorICAgICBsaHM9Y2xvbmUobGhzKS5yb3VuZChzZXQpOworICAgIGlmIChyaHMubWFudC5sZW5ndGg+cmVxZGlnKSAKKyAgICAgcmhzPWNsb25lKHJocykucm91bmQoc2V0KTsKKyAgIH0KKyAgZWxzZSAKKyAgIHsvKiBzY2FsZWQgZGl2aWRlICovCisgICAgaWYgKHNjYWxlPT0oLTEpKSAKKyAgICAgc2NhbGU9bGhzLnNjYWxlKCk7CisgICAgLy8gc2V0IHJlcWRpZyB0byBiZSBhdCBsZWFzdCBsYXJnZSBlbm91Z2ggZm9yIHRoZSBjb21wdXRhdGlvbgorICAgIHJlcWRpZz1saHMubWFudC5sZW5ndGg7IC8vIGJhc2UgbGVuZ3RoCisgICAgLy8gbmV4dCBsaW5lIGhhbmRsZXMgYm90aCBwb3NpdGl2ZSBsaHMuZXhwIGFuZCBhbHNvIHNjYWxlIG1pc21hdGNoCisgICAgaWYgKHNjYWxlIT0oKGludCktbGhzLmV4cCkpIAorICAgICByZXFkaWc9KHJlcWRpZytzY2FsZSkrbGhzLmV4cDsKKyAgICByZXFkaWc9KHJlcWRpZy0oKHJocy5tYW50Lmxlbmd0aC0xKSkpLXJocy5leHA7IC8vIHJlZHVjZSBieSBSSFMgZWZmZWN0CisgICAgaWYgKHJlcWRpZzxsaHMubWFudC5sZW5ndGgpIAorICAgICByZXFkaWc9bGhzLm1hbnQubGVuZ3RoOyAvLyBjbGFtcAorICAgIGlmIChyZXFkaWc8cmhzLm1hbnQubGVuZ3RoKSAKKyAgICAgcmVxZGlnPXJocy5tYW50Lmxlbmd0aDsgLy8gLi4KKyAgIH0KKyAgCisgIC8qIHByZWNhbGN1bGF0ZSBleHBvbmVudCAqLworICBuZXdleHA9KChsaHMuZXhwLXJocy5leHApK2xocy5tYW50Lmxlbmd0aCktcmhzLm1hbnQubGVuZ3RoOworICAvKiBJZiBuZXcgZXhwb25lbnQgLXZlLCB0aGVuIHNvbWUgcXVpY2sgZXhpdHMgYXJlIHBvc3NpYmxlICovCisgIGlmIChuZXdleHA8MCkgCisgICBpZiAoY29kZSE9J0QnKSAKKyAgICB7CisgICAgIGlmIChjb2RlPT0nSScpIAorICAgICAgcmV0dXJuIFpFUk87IC8vIGVhc3kgLSBubyBpbnRlZ2VyIHBhcnQKKyAgICAgLyogTXVzdCBiZSAnUic7IHJlbWFpbmRlciBpcyBbZmluaXNoZWQgY2xvbmUgb2ZdIGlucHV0IHZhbHVlICovCisgICAgIHJldHVybiBjbG9uZShsaHMpLmZpbmlzaChzZXQsZmFsc2UpOworICAgIH0KKyAgCisgIC8qIFdlIG5lZWQgc2xvdyBkaXZpc2lvbiAqLworICByZXM9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCk7IC8vIHdoZXJlIHdlJ2xsIGJ1aWxkIHJlc3VsdAorICByZXMuaW5kPShieXRlKShsaHMuaW5kKnJocy5pbmQpOyAvLyBmaW5hbCBzaWduIChmb3IgRC9JKQorICByZXMuZXhwPW5ld2V4cDsgLy8gaW5pdGlhbCBleHBvbmVudCAoZm9yIEQvSSkKKyAgcmVzLm1hbnQ9bmV3IGJ5dGVbcmVxZGlnKzFdOyAvLyB3aGVyZSBidWlsZCB0aGUgcmVzdWx0CisgIAorICAvKiBOb3cgW3ZpcnR1YWxseSBwYWQgdGhlIG1hbnRpc3NhZSB3aXRoIHRyYWlsaW5nIHplcm9zICovCisgIC8vIEFsc28gY29weSB0aGUgTEhTLCB3aGljaCB3aWxsIGJlIG91ciB3b3JraW5nIGFycmF5CisgIG5ld2xlbj0ocmVxZGlnK3JlcWRpZykrMTsKKyAgdmFyMT1leHRlbmQobGhzLm1hbnQsbmV3bGVuKTsgLy8gYWx3YXlzIG1ha2VzIGxvbmdlciwgc28gbmV3IHNhZmUgYXJyYXkKKyAgdmFyMWxlbj1uZXdsZW47IC8vIFtyZW1haW5pbmcgZGlnaXRzIGFyZSAwXQorICAKKyAgdmFyMj1yaHMubWFudDsKKyAgdmFyMmxlbj1uZXdsZW47CisgIAorICAvKiBDYWxjdWxhdGUgZmlyc3QgdHdvIGRpZ2l0cyBvZiByaHMgKHZhcjIpLCArMSBmb3IgbGF0ZXIgZXN0aW1hdGlvbnMgKi8KKyAgYjJiPSh2YXIyWzBdKjEwKSsxOworICBpZiAodmFyMi5sZW5ndGg+MSkgCisgICBiMmI9YjJiK3ZhcjJbMV07CisgIAorICAvKiBzdGFydCB0aGUgbG9uZy1kaXZpc2lvbiBsb29wcyAqLworICBoYXZlPTA7CisgIHtvdXRlcjpmb3IoOzspeworICAgdGhpc2RpZ2l0PTA7CisgICAvKiBmaW5kIHRoZSBuZXh0IGRpZ2l0ICovCisgICB7aW5uZXI6Zm9yKDs7KXsKKyAgICBpZiAodmFyMWxlbjx2YXIybGVuKSAKKyAgICAgYnJlYWsgaW5uZXI7IC8vIFYxIHRvbyBsb3cKKyAgICBpZiAodmFyMWxlbj09dmFyMmxlbikgCisgICAgIHsgLy8gY29tcGFyZSBuZWVkZWQKKyAgICAgIHtjb21wYXJlOmRveyAvLyBjb21wYXJpc29uCisgICAgICAge2ludCAkMjI9dmFyMWxlbjtpPTA7aTpmb3IoOyQyMj4wOyQyMi0tLGkrKyl7CisgICAgICAgIC8vIHZhcjFsZW4gaXMgYWx3YXlzIDw9IHZhcjEubGVuZ3RoCisgICAgICAgIGlmIChpPHZhcjIubGVuZ3RoKSAKKyAgICAgICAgIHYyPXZhcjJbaV07CisgICAgICAgIGVsc2UgCisgICAgICAgICB2Mj0oYnl0ZSkwOworICAgICAgICBpZiAodmFyMVtpXTx2MikgCisgICAgICAgICBicmVhayBpbm5lcjsgLy8gVjEgdG9vIGxvdworICAgICAgICBpZiAodmFyMVtpXT52MikgCisgICAgICAgICBicmVhayBjb21wYXJlOyAvLyBPSyB0byBzdWJ0cmFjdAorICAgICAgICB9CisgICAgICAgfS8qaSovCisgICAgICAgLyogcmVhY2ggaGVyZSBpZiBsaHMgYW5kIHJocyBhcmUgaWRlbnRpY2FsOyBzdWJ0cmFjdGlvbiB3aWxsCisgICAgICAgICAgaW5jcmVhc2UgZGlnaXQgYnkgb25lLCBhbmQgdGhlIHJlc2lkdWUgd2lsbCBiZSAwIHNvIHdlCisgICAgICAgICAgYXJlIGRvbmU7IGxlYXZlIHRoZSBsb29wIHdpdGggcmVzaWR1ZSBzZXQgdG8gMCAoaW4gY2FzZQorICAgICAgICAgIGNvZGUgaXMgJ1InIG9yIFJPVU5EX1VOTkVDRVNTQVJZIG9yIGEgUk9VTkRfSEFMRl94eHh4IGlzCisgICAgICAgICAgYmVpbmcgY2hlY2tlZCkgKi8KKyAgICAgICB0aGlzZGlnaXQrKzsKKyAgICAgICByZXMubWFudFtoYXZlXT0oYnl0ZSl0aGlzZGlnaXQ7CisgICAgICAgaGF2ZSsrOworICAgICAgIHZhcjFbMF09KGJ5dGUpMDsgLy8gcmVzaWR1ZSB0byAwIFt0aGlzIGlzIGFsbCB3ZSdsbCB0ZXN0XQorICAgICAgIC8vIHZhcjFsZW49MSAgICAgIC0tIFtvcHRpbWl6ZWQgb3V0XQorICAgICAgIGJyZWFrIG91dGVyOworICAgICAgfXdoaWxlKGZhbHNlKTt9Lypjb21wYXJlKi8KKyAgICAgIC8qIHByZXBhcmUgZm9yIHN1YnRyYWN0aW9uLiAgRXN0aW1hdGUgQkEgKGxlbmd0aHMgdGhlIHNhbWUpICovCisgICAgICBiYT0oaW50KXZhcjFbMF07IC8vIHVzZSBvbmx5IGZpcnN0IGRpZ2l0CisgICAgIH0gLy8gbGVuZ3RocyB0aGUgc2FtZQorICAgIGVsc2UgCisgICAgIHsvKiBsaHMgbG9uZ2VyIHRoYW4gcmhzICovCisgICAgICAvKiB1c2UgZmlyc3QgdHdvIGRpZ2l0cyBmb3IgZXN0aW1hdGUgKi8KKyAgICAgIGJhPXZhcjFbMF0qMTA7CisgICAgICBpZiAodmFyMWxlbj4xKSAKKyAgICAgICBiYT1iYSt2YXIxWzFdOworICAgICB9CisgICAgLyogc3VidHJhY3Rpb24gbmVlZGVkOyBWMT49VjIgKi8KKyAgICBtdWx0PShiYSoxMCkvYjJiOworICAgIGlmIChtdWx0PT0wKSAKKyAgICAgbXVsdD0xOworICAgIHRoaXNkaWdpdD10aGlzZGlnaXQrbXVsdDsKKyAgICAvLyBzdWJ0cmFjdDsgdmFyMSByZXVzYWJsZQorICAgIHZhcjE9Ynl0ZWFkZHN1Yih2YXIxLHZhcjFsZW4sdmFyMix2YXIybGVuLChpbnQpLW11bHQsdHJ1ZSk7CisgICAgaWYgKHZhcjFbMF0hPTApIAorICAgICBjb250aW51ZSBpbm5lcjsgLy8gbWF5YmUgYW5vdGhlciBzdWJ0cmFjdCBuZWVkZWQKKyAgICAvKiBWMSBub3cgcHJvYmFibHkgaGFzIGxlYWRpbmcgemVyb3MsIHJlbW92ZSBsZWFkaW5nIDAncyBhbmQgdHJ5CisgICAgICAgYWdhaW4uIChJdCBjb3VsZCBiZSBsb25nZXIgdGhhbiBWMikgKi8KKyAgICB7aW50ICQyMz12YXIxbGVuLTI7c3RhcnQ9MDtzdGFydDpmb3IoO3N0YXJ0PD0kMjM7c3RhcnQrKyl7CisgICAgIGlmICh2YXIxW3N0YXJ0XSE9MCkgCisgICAgICBicmVhayBzdGFydDsKKyAgICAgdmFyMWxlbi0tOworICAgICB9CisgICAgfS8qc3RhcnQqLworICAgIGlmIChzdGFydD09MCkgCisgICAgIGNvbnRpbnVlIGlubmVyOworICAgIC8vIHNoaWZ0IGxlZnQKKyAgICBqYXZhLmxhbmcuU3lzdGVtLmFycmF5Y29weSgoamF2YS5sYW5nLk9iamVjdCl2YXIxLHN0YXJ0LChqYXZhLmxhbmcuT2JqZWN0KXZhcjEsMCx2YXIxbGVuKTsKKyAgICB9CisgICB9Lyppbm5lciovCisgICAKKyAgIC8qIFdlIGhhdmUgdGhlIG5leHQgZGlnaXQgKi8KKyAgIGlmICgoaGF2ZSE9MCl8KHRoaXNkaWdpdCE9MCkpIAorICAgIHsgLy8gcHV0IHRoZSBkaWdpdCB3ZSBnb3QKKyAgICAgcmVzLm1hbnRbaGF2ZV09KGJ5dGUpdGhpc2RpZ2l0OworICAgICBoYXZlKys7CisgICAgIGlmIChoYXZlPT0ocmVxZGlnKzEpKSAKKyAgICAgIGJyZWFrIG91dGVyOyAvLyB3ZSBoYXZlIGFsbCB3ZSBuZWVkCisgICAgIGlmICh2YXIxWzBdPT0wKSAKKyAgICAgIGJyZWFrIG91dGVyOyAvLyByZXNpZHVlIG5vdyAwCisgICAgfQorICAgLyogY2FuIGxlYXZlIG5vdyBpZiBhIHNjYWxlZCBkaXZpZGUgYW5kIGV4cG9uZW50IGlzIHNtYWxsIGVub3VnaCAqLworICAgaWYgKHNjYWxlPj0wKSAKKyAgICBpZiAoKChpbnQpLXJlcy5leHApPnNjYWxlKSAKKyAgICAgYnJlYWsgb3V0ZXI7CisgICAvKiBjYW4gbGVhdmUgbm93IGlmIG5vdCBEaXZpZGUgYW5kIG5vIGludGVnZXIgcGFydCBsZWZ0ICAqLworICAgaWYgKGNvZGUhPSdEJykgCisgICAgaWYgKHJlcy5leHA8PTApIAorICAgICBicmVhayBvdXRlcjsKKyAgIHJlcy5leHA9cmVzLmV4cC0xOyAvLyByZWR1Y2UgdGhlIGV4cG9uZW50CisgICAvKiB0byBnZXQgaGVyZSwgVjEgaXMgbGVzcyB0aGFuIFYyLCBzbyBkaXZpZGUgVjIgYnkgMTAgYW5kIGdvIGZvcgorICAgICAgdGhlIG5leHQgZGlnaXQgKi8KKyAgIHZhcjJsZW4tLTsKKyAgIH0KKyAgfS8qb3V0ZXIqLworICAKKyAgLyogaGVyZSB3aGVuIHdlIGhhdmUgZmluaXNoZWQgZGl2aWRpbmcsIGZvciBzb21lIHJlYXNvbiAqLworICAvLyBoYXZlIGlzIHRoZSBudW1iZXIgb2YgZGlnaXRzIHdlIGNvbGxlY3RlZCBpbiByZXMubWFudAorICBpZiAoaGF2ZT09MCkgCisgICBoYXZlPTE7IC8vIHJlcy5tYW50WzBdIGlzIDA7IHdlIGFsd2F5cyB3YW50IGEgZGlnaXQKKyAgCisgIGlmICgoY29kZT09J0knKXwoY29kZT09J1InKSkgCisgICB7LyogY2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgbmVlZGVkICovCisgICAgaWYgKChoYXZlK3Jlcy5leHApPnJlcWRpZykgCisgICAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiSW50ZWdlciBvdmVyZmxvdyIpOworICAgIAorICAgIGlmIChjb2RlPT0nUicpIAorICAgICB7cmVtYWluZGVyOmRveworICAgICAgLyogV2Ugd2VyZSBkb2luZyBSZW1haW5kZXIgLS0gcmV0dXJuIHRoZSByZXNpZHVlICovCisgICAgICBpZiAocmVzLm1hbnRbMF09PTApICAvLyBubyBpbnRlZ2VyIHBhcnQgd2FzIGZvdW5kCisgICAgICAgcmV0dXJuIGNsb25lKGxocykuZmluaXNoKHNldCxmYWxzZSk7IC8vIC4uIHNvIHJldHVybiBsaHMsIGNhbm9uaWNhbAorICAgICAgaWYgKHZhcjFbMF09PTApIAorICAgICAgIHJldHVybiBaRVJPOyAvLyBzaW1wbGUgMCByZXNpZHVlCisgICAgICByZXMuaW5kPWxocy5pbmQ7IC8vIHNpZ24gaXMgYWx3YXlzIGFzIExIUworICAgICAgLyogQ2FsY3VsYXRlIHRoZSBleHBvbmVudCBieSBzdWJ0cmFjdGluZyB0aGUgbnVtYmVyIG9mIHBhZGRpbmcgemVyb3MKKyAgICAgICAgIHdlIGFkZGVkIGFuZCBhZGRpbmcgdGhlIG9yaWdpbmFsIGV4cG9uZW50ICovCisgICAgICBwYWRkaW5nPSgocmVxZGlnK3JlcWRpZykrMSktbGhzLm1hbnQubGVuZ3RoOworICAgICAgcmVzLmV4cD0ocmVzLmV4cC1wYWRkaW5nKStsaHMuZXhwOworICAgICAgCisgICAgICAvKiBzdHJpcCBpbnNpZ25pZmljYW50IHBhZGRpbmcgemVyb3MgZnJvbSByZXNpZHVlLCBhbmQgY3JlYXRlL2NvcHkKKyAgICAgICAgIHRoZSByZXN1bHRpbmcgbWFudGlzc2EgaWYgbmVlZCBiZSAqLworICAgICAgZD12YXIxbGVuOworICAgICAge2k9ZC0xO2k6Zm9yKDtpPj0xO2ktLSl7aWYoISgocmVzLmV4cDxsaHMuZXhwKSYocmVzLmV4cDxyaHMuZXhwKSkpYnJlYWs7CisgICAgICAgaWYgKHZhcjFbaV0hPTApIAorICAgICAgICBicmVhayBpOworICAgICAgIGQtLTsKKyAgICAgICByZXMuZXhwPXJlcy5leHArMTsKKyAgICAgICB9CisgICAgICB9LyppKi8KKyAgICAgIGlmIChkPHZhcjEubGVuZ3RoKSAKKyAgICAgICB7LyogbmVlZCB0byByZWR1Y2UgKi8KKyAgICAgICAgbmV3dmFyMT1uZXcgYnl0ZVtkXTsKKyAgICAgICAgamF2YS5sYW5nLlN5c3RlbS5hcnJheWNvcHkoKGphdmEubGFuZy5PYmplY3QpdmFyMSwwLChqYXZhLmxhbmcuT2JqZWN0KW5ld3ZhcjEsMCxkKTsgLy8gc2hvcnRlbgorICAgICAgICB2YXIxPW5ld3ZhcjE7CisgICAgICAgfQorICAgICAgcmVzLm1hbnQ9dmFyMTsKKyAgICAgIHJldHVybiByZXMuZmluaXNoKHNldCxmYWxzZSk7CisgICAgIH13aGlsZShmYWxzZSk7fS8qcmVtYWluZGVyKi8KKyAgIH0KKyAgIAorICBlbHNlIAorICAgey8qICdEJyAtLSBubyBvdmVyZmxvdyBjaGVjayBuZWVkZWQgKi8KKyAgICAvLyBJZiB0aGVyZSB3YXMgYSByZXNpZHVlIHRoZW4gYnVtcCB0aGUgZmluYWwgZGlnaXQgKGlmZiAwIG9yIDUpCisgICAgLy8gc28gdGhhdCB0aGUgcmVzaWR1ZSBpcyB2aXNpYmxlIGZvciBST1VORF9VUCwgUk9VTkRfSEFMRl94eHggYW5kCisgICAgLy8gUk9VTkRfVU5ORUNFU1NBUlkgY2hlY2tzIChldGMuKSBsYXRlci4KKyAgICAvLyBbaWYgd2UgZmluaXNoZWQgZWFybHksIHRoZSByZXNpZHVlIHdpbGwgYmUgMF0KKyAgICBpZiAodmFyMVswXSE9MCkgCisgICAgIHsgLy8gcmVzaWR1ZSBub3QgMAorICAgICAgbGFzdGhhdmU9cmVzLm1hbnRbaGF2ZS0xXTsKKyAgICAgIGlmICgoKGxhc3RoYXZlJTUpKT09MCkgCisgICAgICAgcmVzLm1hbnRbaGF2ZS0xXT0oYnl0ZSkobGFzdGhhdmUrMSk7CisgICAgIH0KKyAgIH0KKyAgCisgIC8qIEhlcmUgZm9yIERpdmlkZSBvciBJbnRlZ2VyIERpdmlkZSAqLworICAvLyBoYW5kbGUgc2NhbGVkIHJlc3VsdHMgZmlyc3QgWydJJyBhbHdheXMgc2NhbGUgMCwgb3B0aW9uYWwgZm9yICdEJ10KKyAgaWYgKHNjYWxlPj0wKSAKKyAgIHtzY2FsZWQ6ZG97CisgICAgLy8gc2F5ICdzY2FsZSBoYXZlIHJlcy5leHAgbGVuJyBzY2FsZSBoYXZlIHJlcy5leHAgcmVzLm1hbnQubGVuZ3RoCisgICAgaWYgKGhhdmUhPXJlcy5tYW50Lmxlbmd0aCkgCisgICAgIC8vIGFscmVhZHkgcGFkZGVkIHdpdGggMCdzLCBzbyBqdXN0IGFkanVzdCBleHBvbmVudAorICAgICByZXMuZXhwPXJlcy5leHAtKChyZXMubWFudC5sZW5ndGgtaGF2ZSkpOworICAgIC8vIGNhbGN1bGF0ZSBudW1iZXIgb2YgZGlnaXRzIHdlIHJlYWxseSB3YW50IFttYXkgYmUgMF0KKyAgICBhY3RkaWc9cmVzLm1hbnQubGVuZ3RoLSgoKChpbnQpLXJlcy5leHApLXNjYWxlKSk7CisgICAgcmVzLnJvdW5kKGFjdGRpZyxzZXQucm91bmRpbmdNb2RlKTsgLy8gcm91bmQgdG8gZGVzaXJlZCBsZW5ndGgKKyAgICAvLyBUaGlzIGNvdWxkIGhhdmUgc2hpZnRlZCBsZWZ0IGlmIHJvdW5kIChzYXkpIDAuOS0+MVsuMF0KKyAgICAvLyBSZXBhaXIgaWYgc28gYnkgYWRkaW5nIGEgemVybyBhbmQgcmVkdWNpbmcgZXhwb25lbnQKKyAgICBpZiAocmVzLmV4cCE9KChpbnQpLXNjYWxlKSkgCisgICAgIHsKKyAgICAgIHJlcy5tYW50PWV4dGVuZChyZXMubWFudCxyZXMubWFudC5sZW5ndGgrMSk7CisgICAgICByZXMuZXhwPXJlcy5leHAtMTsKKyAgICAgfQorICAgIHJldHVybiByZXMuZmluaXNoKHNldCx0cnVlKTsgLy8gW3N0cmlwIGlmIG5vdCBQTEFJTl0KKyAgIH13aGlsZShmYWxzZSk7fS8qc2NhbGVkKi8KKyAgCisgIC8vIHJlYWNoIGhlcmUgb25seSBpZiBhIG5vbi1zY2FsZWQKKyAgaWYgKGhhdmU9PXJlcy5tYW50Lmxlbmd0aCkgCisgICB7IC8vIGdvdCBkaWdpdHMrMSBkaWdpdHMKKyAgICByZXMucm91bmQoc2V0KTsKKyAgICBoYXZlPXJlcWRpZzsKKyAgIH0KKyAgZWxzZSAKKyAgIHsvKiBoYXZlPD1yZXFkaWcgKi8KKyAgICBpZiAocmVzLm1hbnRbMF09PTApIAorICAgICByZXR1cm4gWkVSTzsgLy8gZmFzdHBhdGgKKyAgICAvLyBtYWtlIHRoZSBtYW50aXNzYSB0cnVseSBqdXN0ICdoYXZlJyBsb25nCisgICAgLy8gW3dlIGNvdWxkIGxldCBmaW5pc2ggZG8gdGhpcywgZHVyaW5nIHN0cmlwLCBpZiB3ZSBhZGp1c3RlZAorICAgIC8vIHRoZSBleHBvbmVudDsgaG93ZXZlciwgdHJ1bmNhdGlvbiBhdm9pZHMgdGhlIHN0cmlwIGxvb3BdCisgICAgbmV3bWFudD1uZXcgYnl0ZVtoYXZlXTsgLy8gc2hvcnRlbgorICAgIGphdmEubGFuZy5TeXN0ZW0uYXJyYXljb3B5KChqYXZhLmxhbmcuT2JqZWN0KXJlcy5tYW50LDAsKGphdmEubGFuZy5PYmplY3QpbmV3bWFudCwwLGhhdmUpOworICAgIHJlcy5tYW50PW5ld21hbnQ7CisgICB9CisgIHJldHVybiByZXMuZmluaXNoKHNldCx0cnVlKTsKKyAgfQorCisgCisgLyogPHNnbWw+IFJlcG9ydCBhIGNvbnZlcnNpb24gZXhjZXB0aW9uLiA8L3NnbWw+ICovCisgCisgcHJpdmF0ZSB2b2lkIGJhZChjaGFyIHNbXSl7CisgIHRocm93IG5ldyBqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uKCJOb3QgYSBudW1iZXI6IisiICIramF2YS5sYW5nLlN0cmluZy52YWx1ZU9mKHMpKTsKKyAgfQorCisgLyogPHNnbWw+IFJlcG9ydCBhIGJhZCBhcmd1bWVudCB0byBhIG1ldGhvZC4gPC9zZ21sPgorICAgIEFyZzEgaXMgbWV0aG9kIG5hbWUKKyAgICBBcmcyIGlzIGFyZ3VtZW50IHBvc2l0aW9uCisgICAgQXJnMyBpcyB3aGF0IHdhcyBmb3VuZCAqLworIAorIHByaXZhdGUgdm9pZCBiYWRhcmcoamF2YS5sYW5nLlN0cmluZyBuYW1lLGludCBwb3MsamF2YS5sYW5nLlN0cmluZyB2YWx1ZSl7CisgIHRocm93IG5ldyBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJCYWQgYXJndW1lbnQiKyIgIitwb3MrIiAiKyJ0byIrIiAiK25hbWUrIjoiKyIgIit2YWx1ZSk7CisgIH0KKworIC8qIDxzZ21sPiBFeHRlbmQgYnl0ZSBhcnJheSB0byBnaXZlbiBsZW5ndGgsIHBhZGRpbmcgd2l0aCAwcy4gIElmIG5vCisgICAgZXh0ZW5zaW9uIGlzIHJlcXVpcmVkIHRoZW4gcmV0dXJuIHRoZSBzYW1lIGFycmF5LiA8L3NnbWw+CisgCisgICAgQXJnMSBpcyB0aGUgc291cmNlIGJ5dGUgYXJyYXkKKyAgICBBcmcyIGlzIHRoZSBuZXcgbGVuZ3RoIChsb25nZXIpCisgICAgKi8KKyAKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlW10gZXh0ZW5kKGJ5dGUgaW5hcnJbXSxpbnQgbmV3bGVuKXsKKyAgYnl0ZSBuZXdhcnJbXTsKKyAgaWYgKGluYXJyLmxlbmd0aD09bmV3bGVuKSAKKyAgIHJldHVybiBpbmFycjsKKyAgbmV3YXJyPW5ldyBieXRlW25ld2xlbl07CisgIGphdmEubGFuZy5TeXN0ZW0uYXJyYXljb3B5KChqYXZhLmxhbmcuT2JqZWN0KWluYXJyLDAsKGphdmEubGFuZy5PYmplY3QpbmV3YXJyLDAsaW5hcnIubGVuZ3RoKTsKKyAgLy8gMCBwYWRkaW5nIGlzIGNhcnJpZWQgb3V0IGJ5IHRoZSBKVk0gb24gYWxsb2NhdGlvbiBpbml0aWFsaXphdGlvbgorICByZXR1cm4gbmV3YXJyOworICB9CisKKyAvKiA8c2dtbD4gQWRkIG9yIHN1YnRyYWN0IHR3byA+PTAgaW50ZWdlcnMgaW4gYnl0ZSBhcnJheXMKKyAgICA8cD5UaGlzIHJvdXRpbmUgcGVyZm9ybXMgdGhlIGNhbGN1bGF0aW9uOgorICAgIDxwcmU+CisgICAgQz1BKyhCKk0pCisgICAgPC9wcmU+CisgICAgV2hlcmUgTSBpcyBpbiB0aGUgcmFuZ2UgLTkgdGhyb3VnaCArOQorICAgIDxwPgorICAgIElmIE08MCB0aGVuIEE+PUIgbXVzdCBiZSB0cnVlLCBzbyB0aGUgcmVzdWx0IGlzIGFsd2F5cworICAgIG5vbi1uZWdhdGl2ZS4KKyAKKyAgICBMZWFkaW5nIHplcm9zIGFyZSBub3QgcmVtb3ZlZCBhZnRlciBhIHN1YnRyYWN0aW9uLiAgVGhlIHJlc3VsdCBpcworICAgIGVpdGhlciB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIGxvbmdlciBvZiBBIGFuZCBCLCBvciAxIGxvbmdlciB0aGFuCisgICAgdGhhdCAoaWYgYSBjYXJyeSBvY2N1cnJlZCkuCisgCisgICAgQSBpcyBub3QgYWx0ZXJlZCB1bmxlc3MgQXJnNiBpcyAxLgorICAgIEIgaXMgbmV2ZXIgYWx0ZXJlZC4KKyAKKyAgICBBcmcxIGlzIEEKKyAgICBBcmcyIGlzIEEgbGVuZ3RoIHRvIHVzZSAoaWYgbG9uZ2VyIHRoYW4gQSwgcGFkIHdpdGggMCdzKQorICAgIEFyZzMgaXMgQgorICAgIEFyZzQgaXMgQiBsZW5ndGggdG8gdXNlIChpZiBsb25nZXIgdGhhbiBCLCBwYWQgd2l0aCAwJ3MpCisgICAgQXJnNSBpcyBNLCB0aGUgbXVsdGlwbGllcgorICAgIEFyZzYgaXMgMSBpZiBBIGNhbiBiZSB1c2VkIHRvIGJ1aWxkIHRoZSByZXN1bHQgKGlmIGl0IGZpdHMpCisgCisgICAgVGhpcyByb3V0aW5lIGlzIHNldmVyZWx5IHBlcmZvcm1hbmNlLWNyaXRpY2FsOyAqYW55KiBjaGFuZ2UgaGVyZQorICAgIG11c3QgYmUgbWVhc3VyZWQgKHRpbWVkKSB0byBhc3N1cmUgbm8gcGVyZm9ybWFuY2UgZGVncmFkYXRpb24uCisgICAgKi8KKyAvLyAxOTk2LjAyLjIwIC0tIGVuaGFuY2VkIHZlcnNpb24gb2YgRE1TUkNOIGFsZ29yaXRobSAoMTk4MSkKKyAvLyAxOTk3LjEwLjA1IC0tIGNoYW5nZWQgdG8gYnl0ZSBhcnJheXMgKGZyb20gY2hhciBhcnJheXMpCisgLy8gMTk5OC4wNy4wMSAtLSBjaGFuZ2VkIHRvIGFsbG93IGRlc3RydWN0aXZlIHJldXNlIG9mIExIUworIC8vIDE5OTguMDcuMDEgLS0gY2hhbmdlZCB0byBhbGxvdyB2aXJ0dWFsIGxlbmd0aHMgZm9yIHRoZSBhcnJheXMKKyAvLyAxOTk4LjEyLjI5IC0tIHVzZSBsb29rYXNpZGUgZm9yIGRpZ2l0L2NhcnJ5IGNhbGN1bGF0aW9uCisgLy8gMTk5OS4wOC4wNyAtLSBhdm9pZCBtdWx0aXBseSB3aGVuIG11bHQ9MSwgYW5kIG1ha2UgZGIgYW4gaW50CisgLy8gMTk5OS4xMi4yMiAtLSBzcGVjaWFsIGNhc2UgbT0tMSwgYWxzbyBkcm9wIDAgc3BlY2lhbCBjYXNlCisgCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZVtdIGJ5dGVhZGRzdWIoYnl0ZSBhW10saW50IGF2bGVuLGJ5dGUgYltdLGludCBidmxlbixpbnQgbSxib29sZWFuIHJldXNlKXsKKyAgaW50IGFsZW5ndGg7CisgIGludCBibGVuZ3RoOworICBpbnQgYXA7CisgIGludCBicDsKKyAgaW50IG1heGFycjsKKyAgYnl0ZSByZWJbXTsKKyAgYm9vbGVhbiBxdWlja207CisgIGludCBkaWdpdDsKKyAgaW50IG9wPTA7CisgIGludCBkcDkwPTA7CisgIGJ5dGUgbmV3YXJyW107CisgIGludCBpPTA7CisgIAorICAKKyAgCisgIAorICAvLyBXZSdsbCB1c3VhbGx5IGJlIHJpZ2h0IGlmIHdlIGFzc3VtZSBubyBjYXJyeQorICBhbGVuZ3RoPWEubGVuZ3RoOyAvLyBwaHlzaWNhbCBsZW5ndGhzCisgIGJsZW5ndGg9Yi5sZW5ndGg7IC8vIC4uCisgIGFwPWF2bGVuLTE7IC8vIC0+IGZpbmFsIChyaWdodG1vc3QpIGRpZ2l0CisgIGJwPWJ2bGVuLTE7IC8vIC4uCisgIG1heGFycj1icDsKKyAgaWYgKG1heGFycjxhcCkgCisgICBtYXhhcnI9YXA7CisgIHJlYj0oYnl0ZVtdKW51bGw7IC8vIHJlc3VsdCBieXRlIGFycmF5CisgIGlmIChyZXVzZSkgCisgICBpZiAoKG1heGFycisxKT09YWxlbmd0aCkgCisgICAgcmViPWE7IC8vIE9LIHRvIHJldXNlIEEKKyAgaWYgKHJlYj09bnVsbCkgCisgICByZWI9bmV3IGJ5dGVbbWF4YXJyKzFdOyAvLyBuZWVkIG5ldyBhcnJheQorICAKKyAgcXVpY2ttPWZhbHNlOyAvLyAxIGlmIG5vIG11bHRpcGx5IG5lZWRlZAorICBpZiAobT09MSkgCisgICBxdWlja209dHJ1ZTsgLy8gbW9zdCBjb21tb24KKyAgZWxzZSAKKyAgIGlmIChtPT0oLTEpKSAKKyAgICBxdWlja209dHJ1ZTsgLy8gYWxzbyBjb21tb24KKyAgCisgIGRpZ2l0PTA7IC8vIGRpZ2l0LCB3aXRoIGNhcnJ5IG9yIGJvcnJvdworICB7b3A9bWF4YXJyO29wOmZvcig7b3A+PTA7b3AtLSl7CisgICBpZiAoYXA+PTApIAorICAgIHsKKyAgICAgaWYgKGFwPGFsZW5ndGgpIAorICAgICAgZGlnaXQ9ZGlnaXQrYVthcF07IC8vIHdpdGhpbiBBCisgICAgIGFwLS07CisgICAgfQorICAgaWYgKGJwPj0wKSAKKyAgICB7CisgICAgIGlmIChicDxibGVuZ3RoKSAKKyAgICAgIHsgLy8gd2l0aGluIEIKKyAgICAgICBpZiAocXVpY2ttKSAKKyAgICAgICAgeworICAgICAgICAgaWYgKG0+MCkgCisgICAgICAgICAgZGlnaXQ9ZGlnaXQrYlticF07IC8vIG1vc3QgY29tbW9uCisgICAgICAgICBlbHNlIAorICAgICAgICAgIGRpZ2l0PWRpZ2l0LWJbYnBdOyAvLyBhbHNvIGNvbW1vbgorICAgICAgICB9CisgICAgICAgZWxzZSAKKyAgICAgICAgZGlnaXQ9ZGlnaXQrKGJbYnBdKm0pOworICAgICAgfQorICAgICBicC0tOworICAgIH0KKyAgIC8qIHJlc3VsdCBzbyBmYXIgKGRpZ2l0KSBjb3VsZCBiZSAtOTAgdGhyb3VnaCA5OSAqLworICAgaWYgKGRpZ2l0PDEwKSAKKyAgICBpZiAoZGlnaXQ+PTApIAorICAgICB7cXVpY2s6ZG97IC8vIDAtOQorICAgICAgcmViW29wXT0oYnl0ZSlkaWdpdDsKKyAgICAgIGRpZ2l0PTA7IC8vIG5vIGNhcnJ5CisgICAgICBjb250aW51ZSBvcDsKKyAgICAgfXdoaWxlKGZhbHNlKTt9LypxdWljayovCisgICBkcDkwPWRpZ2l0KzkwOworICAgcmViW29wXT1ieXRlZGlnW2RwOTBdOyAvLyB0aGlzIGRpZ2l0CisgICBkaWdpdD1ieXRlY2FyW2RwOTBdOyAvLyBjYXJyeSBvciBib3Jyb3cKKyAgIH0KKyAgfS8qb3AqLworICAKKyAgaWYgKGRpZ2l0PT0wKSAKKyAgIHJldHVybiByZWI7IC8vIG5vIGNhcnJ5CisgIC8vIGZvbGxvd2luZyBsaW5lIHdpbGwgYmVjb21lIGFuIEFzc2VydCwgbGF0ZXIKKyAgLy8gaWYgZGlnaXQ8MCB0aGVuIHNpZ25hbCBBcml0aG1ldGljRXhjZXB0aW9uKCJpbnRlcm5hbC5lcnJvciBbImRpZ2l0Il0iKQorICAKKyAgLyogV2UgaGF2ZSBjYXJyeSAtLSBuZWVkIHRvIG1ha2Ugc3BhY2UgZm9yIHRoZSBleHRyYSBkaWdpdCAqLworICBuZXdhcnI9KGJ5dGVbXSludWxsOworICBpZiAocmV1c2UpIAorICAgaWYgKChtYXhhcnIrMik9PWEubGVuZ3RoKSAKKyAgICBuZXdhcnI9YTsgLy8gT0sgdG8gcmV1c2UgQQorICBpZiAobmV3YXJyPT1udWxsKSAKKyAgIG5ld2Fycj1uZXcgYnl0ZVttYXhhcnIrMl07CisgIG5ld2FyclswXT0oYnl0ZSlkaWdpdDsgLy8gdGhlIGNhcnJpZWQgZGlnaXQgLi4KKyAgLy8gLi4gYW5kIGFsbCB0aGUgcmVzdCBbdXNlIGxvY2FsIGxvb3AgZm9yIHNob3J0IG51bWJlcnNdCisgIGlmIChtYXhhcnI8MTApIAorICAge2ludCAkMjQ9bWF4YXJyKzE7aT0wO2k6Zm9yKDskMjQ+MDskMjQtLSxpKyspeworICAgIG5ld2FycltpKzFdPXJlYltpXTsKKyAgICB9CisgICB9LyppKi8KKyAgZWxzZSAKKyAgIGphdmEubGFuZy5TeXN0ZW0uYXJyYXljb3B5KChqYXZhLmxhbmcuT2JqZWN0KXJlYiwwLChqYXZhLmxhbmcuT2JqZWN0KW5ld2FyciwxLG1heGFycisxKTsKKyAgcmV0dXJuIG5ld2FycjsKKyAgfQorCisgLyogPHNnbWw+IEluaXRpYWxpemVyIGZvciBkaWdpdCBhcnJheSBwcm9wZXJ0aWVzIChsb29rYXNpZGUpLiA8L3NnbWw+CisgICAgUmV0dXJucyB0aGUgZGlnaXQgYXJyYXksIGFuZCBpbml0aWFsaXplcyB0aGUgY2FycnkgYXJyYXkuICovCisgCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZVtdIGRpZ2luaXQoKXsKKyAgYnl0ZSB3b3JrW107CisgIGludCBvcD0wOworICBpbnQgZGlnaXQ9MDsKKyAgd29yaz1uZXcgYnl0ZVsoOTArOTkpKzFdOworICB7b3A9MDtvcDpmb3IoO29wPD0oOTArOTkpO29wKyspeworICAgZGlnaXQ9b3AtOTA7CisgICBpZiAoZGlnaXQ+PTApIAorICAgIHsKKyAgICAgd29ya1tvcF09KGJ5dGUpKGRpZ2l0JTEwKTsKKyAgICAgYnl0ZWNhcltvcF09KGJ5dGUpKGRpZ2l0LzEwKTsgLy8gY2FsY3VsYXRlIGNhcnJ5CisgICAgIGNvbnRpbnVlIG9wOworICAgIH0KKyAgIC8vIGJvcnJvd2luZy4uLgorICAgZGlnaXQ9ZGlnaXQrMTAwOyAvLyB5ZXMsIHRoaXMgaXMgcmlnaHQgW2NvbnNpZGVyIC01MF0KKyAgIHdvcmtbb3BdPShieXRlKShkaWdpdCUxMCk7CisgICBieXRlY2FyW29wXT0oYnl0ZSkoKGRpZ2l0LzEwKS0xMCk7IC8vIGNhbGN1bGF0ZSBib3Jyb3cgW05COiAtIGFmdGVyICVdCisgICB9CisgIH0vKm9wKi8KKyAgcmV0dXJuIHdvcms7CisgIH0KKworIC8qIDxzZ21sPiBDcmVhdGUgYSBjb3B5IG9mIEJpZ0RlY2ltYWwgb2JqZWN0IGZvciBsb2NhbCB1c2UuCisgICAgPHA+VGhpcyBkb2VzIE5PVCBtYWtlIGEgY29weSBvZiB0aGUgbWFudGlzc2EgYXJyYXkuCisgICAgPC9zZ21sPgorICAgIEFyZzEgaXMgdGhlIEJpZ0RlY2ltYWwgdG8gY2xvbmUgKG5vbi1udWxsKQorICAgICovCisgCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgY2xvbmUoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgZGVjKXsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgY29weTsKKyAgY29weT1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoKTsKKyAgY29weS5pbmQ9ZGVjLmluZDsKKyAgY29weS5leHA9ZGVjLmV4cDsKKyAgY29weS5mb3JtPWRlYy5mb3JtOworICBjb3B5Lm1hbnQ9ZGVjLm1hbnQ7CisgIHJldHVybiBjb3B5OworICB9CisKKyAvKiA8c2dtbD4gQ2hlY2sgb25lIG9yIHR3byBudW1iZXJzIGZvciBsb3N0IGRpZ2l0cy4gPC9zZ21sPgorICAgIEFyZzEgaXMgUkhTIChvciBudWxsLCBpZiBub25lKQorICAgIEFyZzIgaXMgY3VycmVudCBESUdJVFMgc2V0dGluZworICAgIHJldHVybnMgcXVpZXRseSBvciB0aHJvd3MgYW4gZXhjZXB0aW9uICovCisgCisgcHJpdmF0ZSB2b2lkIGNoZWNrZGlnaXRzKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHJocyxpbnQgZGlnKXsKKyAgaWYgKGRpZz09MCkgCisgICByZXR1cm47IC8vIGRvbid0IGNoZWNrIGlmIGRpZ2l0cz0wCisgIC8vIGZpcnN0IGNoZWNrIGxocy4uLgorICBpZiAodGhpcy5tYW50Lmxlbmd0aD5kaWcpIAorICAgaWYgKCghKGFsbHplcm8odGhpcy5tYW50LGRpZykpKSkgCisgICAgdGhyb3cgbmV3IGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGhpcy50b1N0cmluZygpKTsKKyAgaWYgKHJocz09bnVsbCkgCisgICByZXR1cm47IC8vIG1vbmFkaWMKKyAgaWYgKHJocy5tYW50Lmxlbmd0aD5kaWcpIAorICAgaWYgKCghKGFsbHplcm8ocmhzLm1hbnQsZGlnKSkpKSAKKyAgICB0aHJvdyBuZXcgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24oIlRvbyBtYW55IGRpZ2l0czoiKyIgIityaHMudG9TdHJpbmcoKSk7CisgIHJldHVybjsKKyAgfQorCisgLyogPHNnbWw+IFJvdW5kIHRvIHNwZWNpZmllZCBkaWdpdHMsIGlmIG5lY2Vzc2FyeS4gPC9zZ21sPgorICAgIEFyZzEgaXMgcmVxdWVzdGVkIE1hdGhDb250ZXh0IFt3aXRoIGxlbmd0aCBhbmQgcm91bmRpbmcgbW9kZV0KKyAgICByZXR1cm5zIHRoaXMsIGZvciBjb252ZW5pZW5jZSAqLworIAorIHByaXZhdGUgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgcm91bmQoY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IHNldCl7CisgIHJldHVybiByb3VuZChzZXQuZGlnaXRzLHNldC5yb3VuZGluZ01vZGUpOworICB9CisKKyAvKiA8c2dtbD4gUm91bmQgdG8gc3BlY2lmaWVkIGRpZ2l0cywgaWYgbmVjZXNzYXJ5LgorICAgIEFyZzEgaXMgcmVxdWVzdGVkIGxlbmd0aCAoZGlnaXRzIHRvIHJvdW5kIHRvKQorICAgICAgICAgICAgW21heSBiZSA8PTAgd2hlbiBjYWxsZWQgZnJvbSBmb3JtYXQsIGRvZGl2aWRlLCBldGMuXQorICAgIEFyZzIgaXMgcm91bmRpbmcgbW9kZQorICAgIHJldHVybnMgdGhpcywgZm9yIGNvbnZlbmllbmNlCisgCisgICAgaW5kIGFuZCBleHAgYXJlIGFkanVzdGVkLCBidXQgbm90IGNsZWFyZWQgZm9yIGEgbWFudGlzc2Egb2YgemVybworIAorICAgIFRoZSBsZW5ndGggb2YgdGhlIG1hbnRpc3NhIHJldHVybmVkIHdpbGwgYmUgQXJnMSwgZXhjZXB0IHdoZW4gQXJnMQorICAgIGlzIDAsIGluIHdoaWNoIGNhc2UgdGhlIHJldHVybmVkIG1hbnRpc3NhIGxlbmd0aCB3aWxsIGJlIDEuCisgICAgPC9zZ21sPgorICAgICovCisgCisgcHJpdmF0ZSBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCByb3VuZChpbnQgbGVuLGludCBtb2RlKXsKKyAgaW50IGFkanVzdDsKKyAgaW50IHNpZ247CisgIGJ5dGUgb2xkbWFudFtdOworICBib29sZWFuIHJldXNlPWZhbHNlOworICBieXRlIGZpcnN0PTA7CisgIGludCBpbmNyZW1lbnQ7CisgIGJ5dGUgbmV3bWFudFtdPW51bGw7CisgIGFkanVzdD1tYW50Lmxlbmd0aC1sZW47CisgIGlmIChhZGp1c3Q8PTApIAorICAgcmV0dXJuIHRoaXM7IC8vIG5vd3QgdG8gZG8KKyAgCisgIGV4cD1leHArYWRqdXN0OyAvLyBleHBvbmVudCBvZiByZXN1bHQKKyAgc2lnbj0oaW50KWluZDsgLy8gc2F2ZSBbYXNzdW1lcyAtMSwgMCwgMV0KKyAgb2xkbWFudD1tYW50OyAvLyBzYXZlCisgIGlmIChsZW4+MCkgCisgICB7CisgICAgLy8gcmVtb3ZlIHRoZSB1bndhbnRlZCBkaWdpdHMKKyAgICBtYW50PW5ldyBieXRlW2xlbl07CisgICAgamF2YS5sYW5nLlN5c3RlbS5hcnJheWNvcHkoKGphdmEubGFuZy5PYmplY3Qpb2xkbWFudCwwLChqYXZhLmxhbmcuT2JqZWN0KW1hbnQsMCxsZW4pOworICAgIHJldXNlPXRydWU7IC8vIGNhbiByZXVzZSBtYW50aXNzYQorICAgIGZpcnN0PW9sZG1hbnRbbGVuXTsgLy8gZmlyc3Qgb2YgZGlzY2FyZGVkIGRpZ2l0cworICAgfQorICBlbHNlIAorICAgey8qIGxlbjw9MCAqLworICAgIG1hbnQ9WkVSTy5tYW50OworICAgIGluZD1pc3plcm87CisgICAgcmV1c2U9ZmFsc2U7IC8vIGNhbm5vdCByZXVzZSBtYW50aXNzYQorICAgIGlmIChsZW49PTApIAorICAgICBmaXJzdD1vbGRtYW50WzBdOworICAgIGVsc2UgCisgICAgIGZpcnN0PShieXRlKTA7IC8vIFt2aXJ0dWFsIGRpZ2l0XQorICAgfQorICAKKyAgLy8gZGVjaWRlIHJvdW5kaW5nIGFkanVzdG1lbnQgZGVwZW5kaW5nIG9uIG1vZGUsIHNpZ24sIGFuZCBkaXNjYXJkZWQgZGlnaXRzCisgIGluY3JlbWVudD0wOyAvLyBidW1wZXIKKyAge21vZGVzOmRvey8qc2VsZWN0Ki8KKyAgaWYgKG1vZGU9PVJPVU5EX0hBTEZfVVApCisgICB7IC8vIGRlZmF1bHQgZmlyc3QgW21vc3QgY29tbW9uXQorICAgIGlmIChmaXJzdD49NSkgCisgICAgIGluY3JlbWVudD1zaWduOworICAgfQorICBlbHNlIGlmIChtb2RlPT1ST1VORF9VTk5FQ0VTU0FSWSkKKyAgIHsgLy8gZGVmYXVsdCBmb3Igc2V0U2NhbGUoKQorICAgIC8vIGRpc2NhcmRpbmcgYW55IG5vbi16ZXJvIGRpZ2l0cyBpcyBhbiBlcnJvcgorICAgIGlmICgoIShhbGx6ZXJvKG9sZG1hbnQsbGVuKSkpKSAKKyAgICAgdGhyb3cgbmV3IGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uKCJSb3VuZGluZyBuZWNlc3NhcnkiKTsKKyAgIH0KKyAgZWxzZSBpZiAobW9kZT09Uk9VTkRfSEFMRl9ET1dOKQorICAgeyAvLyAwLjUwMDAgZ29lcyBkb3duCisgICAgaWYgKGZpcnN0PjUpIAorICAgICBpbmNyZW1lbnQ9c2lnbjsKKyAgICBlbHNlIAorICAgICBpZiAoZmlyc3Q9PTUpIAorICAgICAgaWYgKCghKGFsbHplcm8ob2xkbWFudCxsZW4rMSkpKSkgCisgICAgICAgaW5jcmVtZW50PXNpZ247CisgICB9CisgIGVsc2UgaWYgKG1vZGU9PVJPVU5EX0hBTEZfRVZFTikKKyAgIHsgLy8gMC41MDAwIGdvZXMgZG93biBpZiBsZWZ0IGRpZ2l0IGV2ZW4KKyAgICBpZiAoZmlyc3Q+NSkgCisgICAgIGluY3JlbWVudD1zaWduOworICAgIGVsc2UgCisgICAgIGlmIChmaXJzdD09NSkgCisgICAgICB7CisgICAgICAgaWYgKCghKGFsbHplcm8ob2xkbWFudCxsZW4rMSkpKSkgCisgICAgICAgIGluY3JlbWVudD1zaWduOworICAgICAgIGVsc2UgLyogMC41MDAwICovCisgICAgICAgIGlmICgoKChtYW50W21hbnQubGVuZ3RoLTFdKSUyKSk9PTEpIAorICAgICAgICAgaW5jcmVtZW50PXNpZ247CisgICAgICB9CisgICB9CisgIGVsc2UgaWYgKG1vZGU9PVJPVU5EX0RPV04pCisgICA7IC8vIG5ldmVyIGluY3JlbWVudAorICBlbHNlIGlmIChtb2RlPT1ST1VORF9VUCkKKyAgIHsgLy8gaW5jcmVtZW50IGlmIGRpc2NhcmRlZCBub24temVybworICAgIGlmICgoIShhbGx6ZXJvKG9sZG1hbnQsbGVuKSkpKSAKKyAgICAgaW5jcmVtZW50PXNpZ247CisgICB9CisgIGVsc2UgaWYgKG1vZGU9PVJPVU5EX0NFSUxJTkcpCisgICB7IC8vIG1vcmUgcG9zaXRpdmUKKyAgICBpZiAoc2lnbj4wKSAKKyAgICAgaWYgKCghKGFsbHplcm8ob2xkbWFudCxsZW4pKSkpIAorICAgICAgaW5jcmVtZW50PXNpZ247CisgICB9CisgIGVsc2UgaWYgKG1vZGU9PVJPVU5EX0ZMT09SKQorICAgeyAvLyBtb3JlIG5lZ2F0aXZlCisgICAgaWYgKHNpZ248MCkgCisgICAgIGlmICgoIShhbGx6ZXJvKG9sZG1hbnQsbGVuKSkpKSAKKyAgICAgIGluY3JlbWVudD1zaWduOworICAgfQorICBlbHNleworICAgdGhyb3cgbmV3IGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkJhZCByb3VuZCB2YWx1ZToiKyIgIittb2RlKTsKKyAgfQorICB9d2hpbGUoZmFsc2UpO30vKm1vZGVzKi8KKyAgCisgIGlmIChpbmNyZW1lbnQhPTApIAorICAge2J1bXA6ZG97CisgICAgaWYgKGluZD09aXN6ZXJvKSAKKyAgICAgeworICAgICAgLy8gd2UgbXVzdCBub3Qgc3VidHJhY3QgZnJvbSAwLCBidXQgcmVzdWx0IGlzIHRyaXZpYWwgYW55d2F5CisgICAgICBtYW50PU9ORS5tYW50OworICAgICAgaW5kPShieXRlKWluY3JlbWVudDsKKyAgICAgfQorICAgIGVsc2UgCisgICAgIHsKKyAgICAgIC8vIG1hbnRpc3NhIGlzIG5vbi0wOyB3ZSBjYW4gc2FmZWx5IGFkZCBvciBzdWJ0cmFjdCAxCisgICAgICBpZiAoaW5kPT1pc25lZykgCisgICAgICAgaW5jcmVtZW50PShpbnQpLWluY3JlbWVudDsKKyAgICAgIG5ld21hbnQ9Ynl0ZWFkZHN1YihtYW50LG1hbnQubGVuZ3RoLE9ORS5tYW50LDEsaW5jcmVtZW50LHJldXNlKTsKKyAgICAgIGlmIChuZXdtYW50Lmxlbmd0aD5tYW50Lmxlbmd0aCkgCisgICAgICAgeyAvLyBoYWQgYSBjYXJyeQorICAgICAgICAvLyBkcm9wIHJpZ2h0bW9zdCBkaWdpdCBhbmQgcmFpc2UgZXhwb25lbnQKKyAgICAgICAgZXhwKys7CisgICAgICAgIC8vIG1hbnQgaXMgYWxyZWFkeSB0aGUgY29ycmVjdCBsZW5ndGgKKyAgICAgICAgamF2YS5sYW5nLlN5c3RlbS5hcnJheWNvcHkoKGphdmEubGFuZy5PYmplY3QpbmV3bWFudCwwLChqYXZhLmxhbmcuT2JqZWN0KW1hbnQsMCxtYW50Lmxlbmd0aCk7CisgICAgICAgfQorICAgICAgZWxzZSAKKyAgICAgICBtYW50PW5ld21hbnQ7CisgICAgIH0KKyAgIH13aGlsZShmYWxzZSk7fS8qYnVtcCovCisgIC8vIHJvdW5kaW5nIGNhbiBpbmNyZWFzZSBleHBvbmVudCBzaWduaWZpY2FudGx5CisgIGlmIChleHA+TWF4RXhwKSAKKyAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiRXhwb25lbnQgT3ZlcmZsb3c6IisiICIrZXhwKTsKKyAgcmV0dXJuIHRoaXM7CisgIH0KKworIC8qIDxzZ21sPiBUZXN0IGlmIHJpZ2h0bW9zdCBkaWdpdHMgYXJlIGFsbCAwLgorICAgIEFyZzEgaXMgYSBtYW50aXNzYSBhcnJheSB0byB0ZXN0CisgICAgQXJnMiBpcyB0aGUgb2Zmc2V0IG9mIGZpcnN0IGRpZ2l0IHRvIGNoZWNrCisgICAgICAgICAgICBbbWF5IGJlIG5lZ2F0aXZlOyBpZiBzbywgZGlnaXRzIHRvIGxlZnQgYXJlIDAnc10KKyAgICByZXR1cm5zIDEgaWYgYWxsIHRoZSBkaWdpdHMgc3RhcnRpbmcgYXQgQXJnMiBhcmUgMAorIAorICAgIEFyZzIgbWF5IGJlIGJleW9uZCBhcnJheSBib3VuZHMsIGluIHdoaWNoIGNhc2UgMSBpcyByZXR1cm5lZAorICAgIDwvc2dtbD4gKi8KKyAKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIGFsbHplcm8oYnl0ZSBhcnJheVtdLGludCBzdGFydCl7CisgIGludCBpPTA7CisgIGlmIChzdGFydDwwKSAKKyAgIHN0YXJ0PTA7CisgIHtpbnQgJDI1PWFycmF5Lmxlbmd0aC0xO2k9c3RhcnQ7aTpmb3IoO2k8PSQyNTtpKyspeworICAgaWYgKGFycmF5W2ldIT0wKSAKKyAgICByZXR1cm4gZmFsc2U7CisgICB9CisgIH0vKmkqLworICByZXR1cm4gdHJ1ZTsKKyAgfQorCisgLyogPHNnbWw+IENhcnJ5IG91dCBmaW5hbCBjaGVja3MgYW5kIGNhbm9uaWNhbGl6YXRpb24KKyAgICA8cD4KKyAgICBUaGlzIGZpbmlzaGVzIG9mZiB0aGUgY3VycmVudCBudW1iZXIgYnk6CisgICAgICAxLiBSb3VuZGluZyBpZiBuZWNlc3NhcnkgKE5COiBsZW5ndGggaW5jbHVkZXMgbGVhZGluZyB6ZXJvcykKKyAgICAgIDIuIFN0cmlwcGluZyB0cmFpbGluZyB6ZXJvcyAoaWYgcmVxdWVzdGVkIGFuZCBcUExBSU4pCisgICAgICAzLiBTdHJpcHBpbmcgbGVhZGluZyB6ZXJvcyAoYWx3YXlzKQorICAgICAgNC4gU2VsZWN0aW5nIGV4cG9uZW50aWFsIG5vdGF0aW9uIChpZiByZXF1aXJlZCkKKyAgICAgIDUuIENvbnZlcnRpbmcgYSB6ZXJvIHJlc3VsdCB0byBqdXN0ICcwJyAoaWYgXFBMQUlOKQorICAgIEluIHByYWN0aWNlLCB0aGVzZSBvcGVyYXRpb25zIG92ZXJsYXAgYW5kIHNoYXJlIGNvZGUuCisgICAgSXQgYWx3YXlzIHNldHMgZm9ybS4KKyAgICA8L3NnbWw+CisgICAgQXJnMSBpcyByZXF1ZXN0ZWQgTWF0aENvbnRleHQgKGxlbmd0aCB0byByb3VuZCB0bywgdHJpZ2dlciwgYW5kIEZPUk0pCisgICAgQXJnMiBpcyAxIGlmIHRyYWlsaW5nIGluc2lnbmlmaWNhbnQgemVyb3Mgc2hvdWxkIGJlIHJlbW92ZWQgYWZ0ZXIKKyAgICAgICAgIHJvdW5kIChmb3IgZGl2aXNpb24sIGV0Yy4pLCBwcm92aWRlZCB0aGF0IHNldC5mb3JtIGlzbid0IFBMQUlOLgorICAgcmV0dXJucyB0aGlzLCBmb3IgY29udmVuaWVuY2UKKyAgICovCisgCisgcHJpdmF0ZSBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBmaW5pc2goY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IHNldCxib29sZWFuIHN0cmlwKXsKKyAgaW50IGQ9MDsKKyAgaW50IGk9MDsKKyAgYnl0ZSBuZXdtYW50W109bnVsbDsKKyAgaW50IG1hZz0wOworICBpbnQgc2lnPTA7CisgIC8qIFJvdW5kIGlmIG1hbnRpc3NhIHRvbyBsb25nIGFuZCBkaWdpdHMgcmVxdWVzdGVkICovCisgIGlmIChzZXQuZGlnaXRzIT0wKSAKKyAgIGlmICh0aGlzLm1hbnQubGVuZ3RoPnNldC5kaWdpdHMpIAorICAgIHRoaXMucm91bmQoc2V0KTsKKyAgCisgIC8qIElmIHN0cmlwIHJlcXVlc3RlZCAoYW5kIHN0YW5kYXJkIGZvcm1hdHRpbmcpLCByZW1vdmUKKyAgICAgaW5zaWduaWZpY2FudCB0cmFpbGluZyB6ZXJvcy4gKi8KKyAgaWYgKHN0cmlwKSAKKyAgIGlmIChzZXQuZm9ybSE9Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOKSAKKyAgICB7CisgICAgIGQ9dGhpcy5tYW50Lmxlbmd0aDsKKyAgICAgLyogc2VlIGlmIHdlIG5lZWQgdG8gZHJvcCBhbnkgdHJhaWxpbmcgemVyb3MgKi8KKyAgICAge2k9ZC0xO2k6Zm9yKDtpPj0xO2ktLSl7CisgICAgICBpZiAodGhpcy5tYW50W2ldIT0wKSAKKyAgICAgICBicmVhayBpOworICAgICAgZC0tOworICAgICAgZXhwKys7CisgICAgICB9CisgICAgIH0vKmkqLworICAgICBpZiAoZDx0aGlzLm1hbnQubGVuZ3RoKSAKKyAgICAgIHsvKiBuZWVkIHRvIHJlZHVjZSAqLworICAgICAgIG5ld21hbnQ9bmV3IGJ5dGVbZF07CisgICAgICAgamF2YS5sYW5nLlN5c3RlbS5hcnJheWNvcHkoKGphdmEubGFuZy5PYmplY3QpdGhpcy5tYW50LDAsKGphdmEubGFuZy5PYmplY3QpbmV3bWFudCwwLGQpOworICAgICAgIHRoaXMubWFudD1uZXdtYW50OworICAgICAgfQorICAgIH0KKyAgCisgIGZvcm09KGJ5dGUpY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOOyAvLyBwcmVzZXQKKyAgCisgIC8qIE5vdyBjaGVjayBmb3IgbGVhZGluZy0gYW5kIGFsbC0gemVyb3MgaW4gbWFudGlzc2EgKi8KKyAge2ludCAkMjY9dGhpcy5tYW50Lmxlbmd0aDtpPTA7aTpmb3IoOyQyNj4wOyQyNi0tLGkrKyl7CisgICBpZiAodGhpcy5tYW50W2ldIT0wKSAKKyAgICB7CisgICAgIC8vIG5vbi0wIHJlc3VsdDsgaW5kIHdpbGwgYmUgY29ycmVjdAorICAgICAvLyByZW1vdmUgbGVhZGluZyB6ZXJvcyBbZS5nLiwgYWZ0ZXIgc3VidHJhY3RdCisgICAgIGlmIChpPjApIAorICAgICAge2RlbGVhZDpkb3sKKyAgICAgICBuZXdtYW50PW5ldyBieXRlW3RoaXMubWFudC5sZW5ndGgtaV07CisgICAgICAgamF2YS5sYW5nLlN5c3RlbS5hcnJheWNvcHkoKGphdmEubGFuZy5PYmplY3QpdGhpcy5tYW50LGksKGphdmEubGFuZy5PYmplY3QpbmV3bWFudCwwLHRoaXMubWFudC5sZW5ndGgtaSk7CisgICAgICAgdGhpcy5tYW50PW5ld21hbnQ7CisgICAgICB9d2hpbGUoZmFsc2UpO30vKmRlbGVhZCovCisgICAgIC8vIG5vdyBkZXRlcm1pbmUgZm9ybSBpZiBub3QgUExBSU4KKyAgICAgbWFnPWV4cCttYW50Lmxlbmd0aDsKKyAgICAgaWYgKG1hZz4wKSAKKyAgICAgIHsgLy8gbW9zdCBjb21tb24gcGF0aAorICAgICAgIGlmIChtYWc+c2V0LmRpZ2l0cykgCisgICAgICAgIGlmIChzZXQuZGlnaXRzIT0wKSAKKyAgICAgICAgIGZvcm09KGJ5dGUpc2V0LmZvcm07CisgICAgICAgaWYgKChtYWctMSk8PU1heEV4cCkgCisgICAgICAgIHJldHVybiB0aGlzOyAvLyBubyBvdmVyZmxvdzsgcXVpY2sgcmV0dXJuCisgICAgICB9CisgICAgIGVsc2UgCisgICAgICBpZiAobWFnPCgtNSkpIAorICAgICAgIGZvcm09KGJ5dGUpc2V0LmZvcm07CisgICAgIC8qIGNoZWNrIGZvciBvdmVyZmxvdyAqLworICAgICBtYWctLTsKKyAgICAgaWYgKChtYWc8TWluRXhwKXwobWFnPk1heEV4cCkpIAorICAgICAge292ZXJmbG93OmRveworICAgICAgIC8vIHBvc3NpYmxlIHJlcHJpZXZlIGlmIGZvcm0gaXMgZW5naW5lZXJpbmcKKyAgICAgICBpZiAoZm9ybT09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LkVOR0lORUVSSU5HKSAKKyAgICAgICAgeworICAgICAgICAgc2lnPW1hZyUzOyAvLyBsZWZ0b3ZlcgorICAgICAgICAgaWYgKHNpZzwwKSAKKyAgICAgICAgICBzaWc9MytzaWc7IC8vIG5lZ2F0aXZlIGV4cG9uZW50CisgICAgICAgICBtYWc9bWFnLXNpZzsgLy8gZXhwb25lbnQgdG8gdXNlCisgICAgICAgICAvLyAxOTk5LjA2LjI5OiBzZWNvbmQgdGVzdCBoZXJlIG11c3QgYmUgTWF4RXhwCisgICAgICAgICBpZiAobWFnPj1NaW5FeHApIAorICAgICAgICAgIGlmIChtYWc8PU1heEV4cCkgCisgICAgICAgICAgIGJyZWFrIG92ZXJmbG93OworICAgICAgICB9CisgICAgICAgdGhyb3cgbmV3IGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uKCJFeHBvbmVudCBPdmVyZmxvdzoiKyIgIittYWcpOworICAgICAgfXdoaWxlKGZhbHNlKTt9LypvdmVyZmxvdyovCisgICAgIHJldHVybiB0aGlzOworICAgIH0KKyAgIH0KKyAgfS8qaSovCisgIAorICAvLyBEcm9wIHRocm91Z2ggdG8gaGVyZSBvbmx5IGlmIG1hbnRpc3NhIGlzIGFsbCB6ZXJvcworICBpbmQ9aXN6ZXJvOworICB7LypzZWxlY3QqLworICBpZiAoc2V0LmZvcm0hPWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTikKKyAgIGV4cD0wOyAvLyBzdGFuZGFyZCByZXN1bHQ7IGdvIHRvICcwJworICBlbHNlIGlmIChleHA+MCkKKyAgIGV4cD0wOyAvLyArdmUgZXhwb25lbnQgYWxzbyBnb2VzIHRvICcwJworICBlbHNleworICAgLy8gYSBwbGFpbiBudW1iZXIgd2l0aCAtdmUgZXhwb25lbnQ7IHByZXNlcnZlIGFuZCBjaGVjayBleHBvbmVudAorICAgaWYgKGV4cDxNaW5FeHApIAorICAgIHRocm93IG5ldyBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbigiRXhwb25lbnQgT3ZlcmZsb3c6IisiICIrZXhwKTsKKyAgfQorICB9CisgIG1hbnQ9WkVSTy5tYW50OyAvLyBjYW5vbmljYWwgbWFudGlzc2EKKyAgcmV0dXJuIHRoaXM7CisgIH0KKyB9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9tYXRoL0RpYWdCaWdEZWNpbWFsLmphdmEgYi9zcmMvY29tL2libS9tYXRoL0RpYWdCaWdEZWNpbWFsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNWJhM2ExYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL21hdGgvRGlhZ0JpZ0RlY2ltYWwuamF2YQpAQCAtMCwwICsxLDUzNDIgQEAKKy8qIEdlbmVyYXRlZCBmcm9tICdEaWFnQmlnRGVjaW1hbC5ucngnIDggU2VwIDIwMDAgMTE6MDg6MjggW3YyLjAwXSAqLworLyogT3B0aW9uczogQmluYXJ5IENvbW1lbnRzIENyb3NzcmVmIEZvcm1hdCBKYXZhIExvZ28gVHJhY2UxIFZlcmJvc2UzICovCitwYWNrYWdlIGNvbS5pYm0ubWF0aDsKK2ltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBEZWNpbWFsIGRpYWdub3N0aWMgdGVzdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZmMgKi8KKy8qIENvcHlyaWdodCAoYykgSUJNIENvcnBvcmF0aW9uIDE5OTYsIDIwMDAuICBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBEaWFnQmlnRGVjaW1hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICBBIGNsYXNzIHRoYXQgdGVzdHMgdGhlIEJpZ0RlY2ltYWwgYW5kIE1hdGhDb250ZXh0IGNsYXNzZXMuICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgVGhlIHRlc3RzIGhlcmUgYXJlIGRlcml2ZWQgZnJvbSBvciBjb3ZlciB0aGUgc2FtZSBwYXRocyBhczogICAgICAqLworLyogICAgICAtLSBBTlNJIFgzLTI3NCB0ZXN0Y2FzZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgIC0tIEphdmEgSkNLIHRlc3RjYXNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgLS0gTmV0UmV4eCB0ZXN0Y2FzZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAtLSBWTS9DTVMgUy8zNzAgUkVYWCBpbXBsZW1lbnRhdGlvbiB0ZXN0Y2FzZXMgWzE5ODErXSAgICAgICAgICovCisvKiAgICAgIC0tIElCTSBWaWVubmEgTGFib3JhdG9yeSBSZXh4IGNvbXBpbGVyIHRlc3RjYXNlcyBbMTk4OCtdICAgICAgKi8KKy8qICAgICAgLS0gTmV3IHRlc3RjYXNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgIFRoZSBhdXRob3JpdGF0aXZlIHNvdXJjZXMgZm9yIGhvdyB0aGUgdW5kZXJseWluZyB0ZWNobm9sb2d5ICAgICAgKi8KKy8qICAgKGFyaXRobWV0aWMpIHNob3VsZCB3b3JrIGFyZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAtLSBmb3IgZGlnaXRzPTAgKGZpeGVkIHBvaW50KTogamF2YS5tYXRoLkJpZ0RlY2ltYWwgICAgICAgICAgICovCisvKiAgICAgIC0tIGZvciBkaWdpdHM+MCAoZmxvYXRpbmcgcG9pbnQpOiBBTlNJIFgzLjI3NC0xOTk2ICsgZXJyYXRhICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBDaGFuZ2UgbGlzdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTcuMDkuMDUgSW5pdGlhbCBpbXBsZW1lbnRhdGlvbiwgZnJvbSBEaWFnUmV4eCBbTmV0UmV4eCB0ZXN0c10gICAqLworLyogMTk5OC4wNS4wMiAwLjA3IGNoYW5nZXMgKGUuZy4sIGNvbXBhcmVUbykgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk4LjA2LjA2IFJvdW5kaW5nIG1vZGVzIGFuZCBmb3JtYXQgYWRkaXRpb25zICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTguMDYuMjUgUmVuYW1lIGZyb20gRGlhZ0RlY2ltYWw7IG1ha2Ugc3RhbmQtYWxvbmUgW2FkZCAgICAgICAgICAqLworLyogICAgICAgICAgICBEaWFnRXhjZXB0aW9uIGFzIGEgTWlub3IgY2xhc3NdICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk4LjA2LjI3IFN0YXJ0IGFkZGluZyB0ZXN0Y2FzZXMgZm9yIERJR0lUUz0wL0ZPUk09UExBSU4gY2FzZXMgICAgKi8KKy8qICAgICAgICAgICAgUmVvcmdhbml6ZSBmb3IgZmFzdGVyIHRyYWNlIGNvbXBpbGF0aW9uICAgICAgICAgICAgICAgICAqLworLyogMTk5OC4wNi4yOCBuZXc6IHZhbHVlb2YsIHNjYWxlLCBtb3ZlUG9pbnRYLCB1bnNjYWxlZFZhbHVlLCBldGMuICAgICovCisvKiAxOTk4LjA3LjA3IFNjYWxlZCBkaXZpZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTguMDcuMDggc2V0U2NhbGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogMTk5OC4wNy4xNSBuZXcgc2NhZmZvbGRpbmcgKE1pbm9yIFRlc3QgY2xhc3MpIC0tIHNlZSBkaWFnYWJzICAgICAgICovCisvKiAxOTk4LjEyLjE0IGFkZCB0b0JpZ0RlY2ltYWwgYW5kIEJpZ0RlY2ltYWwoamF2YS5tYXRoLkJpZ0RlY2ltYWwpICAgKi8KKy8qIDE5OTkuMDIuMDQgbnVtYmVyIHByZXBhcmF0aW9uIHJvdW5kcyBpbnN0ZWFkIG9mIGRpZ2l0cysxIHRydW5jICAgICAqLworLyogMTk5OS4wMi4wOSBmb3JtYXQgbWV0aG9kIG5vdyBvbmx5IGhhcyB0d28gc2lnbmF0dXJlcyAgICAgICAgICAgICAgICovCisvKiAxOTk5LjAyLjI3IG5vIGxvbmdlciB1c2UgUmV4eCBjbGFzcyBvciBSZXh4SU8gY2xhc3MgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTkuMDMuMDUgYWRkIE1hdGhDb250ZXh0IHRlc3RzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogMTk5OS4wMy4wNSB1cGRhdGUgZm9yIDAuOTYgW25vIG51bGwgc2V0dGluZ3MsIGV0Yy5dICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgIGRyb3Agc3VuZHJ5IGNvbnN0cnVjdG9yczsgbm8gYmxhbmtzOyBjaGFyW10gZ2V0cyBpbnRzICAgKi8KKy8qICAgICAgICAgICAgZHJvcCBzdW5kcnkgY29udmVydGVycywgYWRkIEV4YWN0IGNvbnZlcnRlcnMgICAgICAgICAgICAqLworLyogMTk5OS4wNS4yNyBhZGRpdGlvbmFsIHRlc3RzIGZvciBzY2FsZWQgYXJpdGhtZXRpYyAgICAgICAgICAgICAgICAgICovCisvKiAxOTk5LjA2LjI5IGFkZGl0aW9uYWwgdGVzdHMgZm9yIGV4cG9uZW50IG92ZXJmbG93cyAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTkuMDcuMDMgYWRkICdjb250aW51ZScgb3B0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogMTk5OS4wNy4xMCBhZGRpdGlvbmFsIHRlc3RzIGZvciBzY2FsZWQgYXJpdGhtZXRpYyAgICAgICAgICAgICAgICAgICovCisvKiAxOTk5LjA3LjE4IHJhbmRvbWx5LWdlbmVyYXRlZCB0ZXN0cyBhZGRlZCBmb3IgYmFzZSBvcGVyYXRvcnMgICAgICAgKi8KKy8qIDE5OTkuMTAuMjggd2VpcmQgaW50VmFsdWVFeGFjdCBiYWQgY2FzZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogMTk5OS4xMi4yMSBtdWx0aXBsaWNhdGlvbiBmYXN0IHBhdGggZmFpbHVyZSBhbmQgZWRnZSBjYXNlcyAgICAgICAgICovCisvKiAyMDAwLjAxLjAxIGNvcHlyaWdodCB1cGRhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDIwMDAuMDMuMjYgY29zbWV0aWMgdXBkYXRlczsgYWRkIGV4dHJhIGZvcm1hdCgpIHRlc3RjYXNlcyAgICAgICAgICAqLworLyogMjAwMC4wMy4yNyAxLjAwIG1vdmUgdG8gY29tLmlibS5tYXRoIHBhY2thZ2U7IG9wZW4gc291cmNlIHJlbGVhc2U7ICovCisvKiAgICAgICAgICAgICAgICAgY2hhbmdlIHRvIGphdmFkb2MgY29tbWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisvLyBub3RlIEJJTkFSWSBmb3IgY29udmVyc2lvbnMgY2hlY2tpbmcKKworCisKKworLyoqCisgKiBUaGUgPGNvZGU+RGlhZ0JpZ0RlY2ltYWw8L2NvZGU+IGNsYXNzIGZvcm1zIGEgc3RhbmRhbG9uZSB0ZXN0IHN1aXRlCisgKiBmb3IgdGhlIDxjb2RlPmNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsPC9jb2RlPiBhbmQKKyAqIDxjb2RlPmNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dDwvY29kZT4gY2xhc3NlcyAob3IsIGJ5IGNoYW5naW5nIHRoZQorICogPGNvZGU+cGFja2FnZTwvY29kZT4gc3RhdGVtZW50LCBvdGhlciBjbGFzc2VzIG9mIHRoZSBzYW1lIG5hbWVzIGFuZAorICogZGVmaW5pdGlvbiBpbiBvdGhlciBwYWNrYWdlcykuICBJdCBtYXkgYWxzbyBiZSB1c2VkIGFzIGEgY29uc3RydWN0ZWQKKyAqIG9iamVjdCB0byBlbWJlZCB0aGUgdGVzdHMgaW4gYW4gZXh0ZXJuYWwgdGVzdCBoYXJuZXNzLgorICogPHA+CisgKiBUaGUgdGVzdHMgYXJlIGNvbGxlY3RlZCBpbnRvIDxpPmdyb3VwczwvaT4sIGVhY2ggY29ycmVzcG9uZGluZyB0byBhCisgKiB0ZXN0ZWQgbWV0aG9kIG9yIGEgbW9yZSBnZW5lcmFsIGdyb3VwaW5nLiAgQnkgZGVmYXVsdCwgd2hlbiBydW4gZnJvbQorICogdGhlIHN0YXRpYyB7QGxpbmsgI21haW4oamF2YS5sYW5nLlN0cmluZ1tdKX0gbWV0aG9kLCB0aGUgcnVuIHdpbGwgZW5kCisgKiBpZiBhbnkgdGVzdCBmYWlscyBpbiBhIGdyb3VwLiAgVGhlIDxjb2RlPmNvbnRpbnVlPC9jb2RlPiBhcmd1bWVudCBtYXkKKyAqIGJlIHNwZWNpZmllZCB0byBmb3JjZSB0aGUgdGVzdHMgdG8gcnVuIHRvIGNvbXBsZXRpb24uCisgKiA8cD4KKyAqIFR3byBtaW5vciAoaW5uZXIpIGNsYXNzZXMgYXJlIHVzZWQ7IHtAbGluaworICogRGlhZ0JpZ0RlY2ltYWwuRGlhZ0V4Y2VwdGlvbn0gaXMgdXNlZCB0byBzaWduYWwgdGhlIGZhaWx1cmUgb2YgYSB0ZXN0CisgKiBncm91cCwgYW5kIHtAbGluayBEaWFnQmlnRGVjaW1hbC5UZXN0fSwgYSBkZXBlbmRlbnQgbWlub3IgY2xhc3MsIGlzCisgKiB1c2VkIHRvIHJlZ2lzdGVyIHRlc3RzIHNvIHRoYXQgYSBzdW1tYXJ5IG9mIGZhaWx1cmVzIChvciBzdWNjZXNzKSBjYW4gYmUKKyAqIHByZXNlbnRlZCBhcyBlYWNoIGdyb3VwIGlzIGNvbXBsZXRlZC4KKyAqCisgKiBAc2VlICAgICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbAorICogQHNlZSAgICAgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0CisgKiBAdmVyc2lvbiAxLjAwIDIwMDAuMDMuMjcKKyAqIEBhdXRob3IgIE1pa2UgQ293bGlzaGF3CisgKi8KKworcHVibGljIGNsYXNzIERpYWdCaWdEZWNpbWFseworIHByaXZhdGUgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgJDA9IkRpYWdCaWdEZWNpbWFsLm5yeCI7CisgCisgLyogcHJvcGVydGllcyBzaGFyZWQgKi8KKyBqYXZhLnV0aWwuVmVjdG9yIFRlc3RzPW5ldyBqYXZhLnV0aWwuVmVjdG9yKDEwMCk7IC8vIHNjYWZmb2xkaW5nCisgCisgLyogcHJvcGVydGllcyBwcml2YXRlICovCisgcHJpdmF0ZSBpbnQgdG90YWxjb3VudD0wOyAvLyBjb3VudHMgdGVzdHMgcnVuCisgCisgLyogcHJvcGVydGllcyBjb25zdGFudCBwcml2YXRlICovCisgCisgLyogQ291bnQgb2YgdGVzdCBncm91cHMgKi8KKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgdGVzdGNvdW50PTM4OworIAorIHByaXZhdGUgc3RhdGljIGZpbmFsIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHplcm89Y29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuWkVSTzsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBvbmU9Y29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FOworIHByaXZhdGUgc3RhdGljIGZpbmFsIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHR3bz1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMik7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgdGVuPWNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLlRFTjsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCB0ZW5sb25nPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgobG9uZykxMjM0NTU0MzIxKTsgLy8gMTAtZGlnaXRlcgorIAorIC8qIFNvbWUgY29udGV4dCBvYmplY3RzIC0tIFtzb21lIG9mIHRoZXNlIGFyZSBjaGVja2VkIGxhdGVyXSAqLworIHByaXZhdGUgc3RhdGljIGZpbmFsIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBtY2RlZj1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuREVGQVVMVDsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBjb20uaWJtLm1hdGguTWF0aENvbnRleHQgbWMzPW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoMyk7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IG1jNj1uZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KDYpOworIHByaXZhdGUgc3RhdGljIGZpbmFsIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBtYzk9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCg5KTsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBjb20uaWJtLm1hdGguTWF0aENvbnRleHQgbWM1MD1uZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KDUwKTsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBjb20uaWJtLm1hdGguTWF0aENvbnRleHQgbWNzPW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoOSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQyk7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IG1jZT1uZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KDksY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LkVOR0lORUVSSU5HKTsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBjb20uaWJtLm1hdGguTWF0aENvbnRleHQgbWNsZD1uZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KDksY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlNDSUVOVElGSUMsdHJ1ZSk7IC8vIGxvc3QgZGlnaXRzCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IG1jbGQwPW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQyx0cnVlKTsgLy8gbG9zdCBkaWdpdHMsIGRpZ2l0cz0wCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IG1jZmQ9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTik7IC8vIGZpeGVkIGRlY2ltYWwgc3R5bGUKKyAKKyAvKiBib3VuZGFyeSBwcmltaXRpdmUgdmFsdWVzICovCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBibWluPS0xMjg7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBibWF4PTEyNzsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIGJ6ZXI9MDsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIGJuZWc9LTE7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBicG9zPTE7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGltaW49LTIxNDc0ODM2NDg7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGltYXg9MjE0NzQ4MzY0NzsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgaXplcj0wOworIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBpbmVnPS0xOworIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBpcG9zPTE7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBsbWluPS05MjIzMzcyMDM2ODU0Nzc1ODA4TDsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIGxtYXg9OTIyMzM3MjAzNjg1NDc3NTgwN0w7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBsemVyPShsb25nKTA7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBsbmVnPShsb25nKS0xOworIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgbHBvcz0obG9uZykxOworIHByaXZhdGUgc3RhdGljIGZpbmFsIHNob3J0IHNtaW49LTMyNzY4OworIHByaXZhdGUgc3RhdGljIGZpbmFsIHNob3J0IHNtYXg9MzI3Njc7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgc2hvcnQgc3plcj0oc2hvcnQpMDsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBzaG9ydCBzbmVnPShzaG9ydCkoLTEpOworIHByaXZhdGUgc3RhdGljIGZpbmFsIHNob3J0IHNwb3M9KHNob3J0KTE7CisgCisgCisgLyogcHJvcGVydGllcyBjb25zdGFudCBwcml2YXRlIHVudXNlZCAqLyAvLyBwcmVzZW50IGJ1dCBub3QgcmVmZXJlbmNlZAorIHByaXZhdGUgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgY29weXJpZ2h0PSIgQ29weXJpZ2h0IChjKSBJQk0gQ29ycG9yYXRpb24gMTk5NiwgMjAwMC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICI7CisKKyAKKyAvKiogQ29uc3RydWN0cyBhIDxjb2RlPkRpYWdCaWdEZWNpbWFsPC9jb2RlPiB0ZXN0IHN1aXRlLgorICAgKiA8cD4KKyAgICogSW52b2tlIGl0cyB7QGxpbmsgI2RpYWdydW59IG1ldGhvZCB0byBydW4gdGhlIHRlc3RzLgorICAgKi8KKyAKKyBwdWJsaWMgRGlhZ0JpZ0RlY2ltYWwoKXtzdXBlcigpOworICByZXR1cm47CisgIH0KKworIC8qKiBSdW4gdGhlIHRlc3RzIGluIHRoZSB0ZXN0IHN1aXRlLgorICAqCisgICogQHBhcmFtIGlzQ29udGludWUgVGhlIDxjb2RlPmJvb2xlYW48L2NvZGU+IHdoaWNoIGRldGVybWluZXMgd2hldGhlcgorICAqICAgICAgICAgICAgICAgICAgIHRvIHN0b3AgcnVubmluZyBhZnRlciBhIGdyb3VwIGZhaWxzLiAgSWYgMSAodHJ1ZSkKKyAgKiAgICAgICAgICAgICAgICAgICB0aGVuIHRoZSB0ZXN0cyBzaG91bGQgYmUgcnVuIHRvIGNvbXBsZXRpb24gaWYKKyAgKiAgICAgICAgICAgICAgICAgICBwb3NzaWJsZTsgaWYgMCAoZmFsc2UpIHRoZW4gdGhlIHJ1biB3aWxsIGVuZCBpZiBhCisgICogICAgICAgICAgICAgICAgICAgZ3JvdXAgZmFpbHMuCisgICogQHJldHVybiBhbiA8Y29kZT5pbnQ8L2NvZGU+IHdoaWNoIGlzIDAgaWYgYWxsIHRlc3RzIHdlcmUKKyAgKiBzdWNjZXNzZnVsLCA+MCAodGhlIGNvdW50IG9mIGZhaWx1cmVzKSBpZiBzb21lIGZhaWx1cmVzIHdlcmUKKyAgKiBkZXRlY3RlZCwgb3IgPDAgaWYgYW4gdW5leHBlY3RlZCBFeGNlcHRpb24gd2FzIHNpZ25hbGxlZC4KKyAgKi8KKyAKKyBwdWJsaWMgaW50IGRpYWdydW4oYm9vbGVhbiBpc0NvbnRpbnVlKXsKKyAgaW50IGZhaWxzOworICBpbnQgbnVtPTA7CisgIGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5EaWFnRXhjZXB0aW9uIGRlPW51bGw7CisgIGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIGU9bnVsbDsKKyAgamF2YS5sYW5nLlN0cmluZyByZXN0PW51bGw7CisgIAorICBmYWlscz0wOyAvLyBjb3VudCBvZiBmYWlsdXJlcworICB7dHJ5e251bT0xO251bTpmb3IoO251bTw9dGVzdGNvdW50O251bSsrKXsgLy8gW3Rlc3Rjb3VudCBpcyBjb25zdGFudCBzZXQgYWJvdmVdCisgICB7dHJ5eworICAgIGRvdGVzdChudW0pOworICAgfQorICAgY2F0Y2ggKGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5EaWFnRXhjZXB0aW9uICQxKXtkZT0kMTsKKyAgICBzYXkoKTsKKyAgICBzYXkoIioqKiogRmFpbGVkOiIrIiAiK2RlLmdldE1lc3NhZ2UoKSsiICIrIioqKioiKTsKKyAgICBzYXkoKTsKKyAgICBmYWlscz1mYWlscytkZS5mYWlsY291bnQ7CisgICAgaWYgKCghaXNDb250aW51ZSkpIAorICAgICBicmVhayBudW07CisgICB9fQorICAgfQorICB9CisgIGNhdGNoIChqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiAkMil7ZT0kMjsgLy8gYW55IG90aGVyIGV4Y2VwdGlvbiBpcyB0b3RhbCBmYWlsdXJlOyBqdXN0IHNob3cgdHJhY2UgYW5kIHF1aXQKKyAgIHNheSgpOworICAgc2F5KCIqKioqIEZhaWxlZDogdW5leHBlY3RlZCBleGNlcHRpb24gKioqKiIpOworICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgIHJldHVybiAtMTsKKyAgfX0vKm51bSovCisgIAorICBpZiAoZmFpbHM9PTApIAorICAgc2F5KCItLS0gQWxsIE9LIC0tLSIrIiAiK3JpZ2h0KCJbIit0b3RhbGNvdW50KyIgIisidGVzdHNdIiwxNSkpOworICBlbHNlIAorICAgeworICAgIGlmIChpc0NvbnRpbnVlKSAKKyAgICAgeworICAgICAgaWYgKGZhaWxzPjEpIAorICAgICAgIHJlc3Q9InRlc3RzIjsKKyAgICAgIGVsc2UgCisgICAgICAgcmVzdD0idGVzdCI7CisgICAgICBzYXkoIi0tLSBBbGwgcnVuIC0tLSIrIiAiK3JpZ2h0KCJbIit0b3RhbGNvdW50KyIgIisidGVzdHMsIiwxNCkrIiAiKyJmYWlsZWQiKyIgIitmYWlscysiICIrcmVzdCsiXSIpOworICAgICAKKyAgICAgfQorICAgfQorICAKKyAgcmV0dXJuIGZhaWxzOworICB9CisKKyAvKiBSdW4gdGVzdCBieSBudW1iZXIgLS0gbWV0aG9kIGZvciBkZXZlbG9wbWVudC9wcml2YXRlIHN3aXRjaGluZyAqLworIAorIHByaXZhdGUgdm9pZCBkb3Rlc3QoaW50IG51bSl7CisgIHsvKnNlbGVjdCovc3dpdGNoKG51bSl7CisgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworICAgLyogTWF0aENvbnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgIGNhc2UgMToKKyAgIGRpYWdtYXRoY29udGV4dCgpO2JyZWFrOworICAgCisgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworICAgLyogQ29uc3RydWN0b3JzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgIGNhc2UgMjoKKyAgIGRpYWdjb25zdHJ1Y3RvcnMoKTticmVhazsKKyAgIAorICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAgIC8qIE9wZXJhdG9yIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworICBjYXNlIDM6CisgICBkaWFnYWJzKCk7YnJlYWs7CisgIGNhc2UgNDoKKyAgIGRpYWdhZGQoKTticmVhazsKKyAgY2FzZSA1OgorICAgZGlhZ2NvbXBhcmV0bygpO2JyZWFrOworICBjYXNlIDY6CisgICBkaWFnZGl2aWRlKCk7YnJlYWs7CisgIGNhc2UgNzoKKyAgIGRpYWdkaXZpZGVJbnRlZ2VyKCk7YnJlYWs7CisgIGNhc2UgODoKKyAgIGRpYWdtYXgoKTticmVhazsKKyAgY2FzZSA5OgorICAgZGlhZ21pbigpO2JyZWFrOworICBjYXNlIDEwOgorICAgZGlhZ211bHRpcGx5KCk7YnJlYWs7CisgIGNhc2UgMTE6CisgICBkaWFnbmVnYXRlKCk7YnJlYWs7CisgIGNhc2UgMTI6CisgICBkaWFncGx1cygpO2JyZWFrOworICBjYXNlIDEzOgorICAgZGlhZ3BvdygpO2JyZWFrOworICBjYXNlIDE0OgorICAgZGlhZ3JlbWFpbmRlcigpO2JyZWFrOworICBjYXNlIDE1OgorICAgZGlhZ3N1YnRyYWN0KCk7YnJlYWs7CisgIGNhc2UgMTY6CisgICBkaWFnbWF0aCgpO2JyZWFrOyAvLyBnZW5lcmFsIG1hdGgKKyAgIAorICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAgIC8qIE90aGVyIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworICBjYXNlIDE3OgorICAgZGlhZ2J5dGVWYWx1ZSgpO2JyZWFrOworICBjYXNlIDE4OgorICAgZGlhZ2NvbXBhcmV0b09iaigpO2JyZWFrOworICBjYXNlIDE5OgorICAgZGlhZ2RvdWJsZXZhbHVlKCk7YnJlYWs7CisgIGNhc2UgMjA6CisgICBkaWFnZXF1YWxzKCk7YnJlYWs7CisgIGNhc2UgMjE6CisgICBkaWFnZmxvYXR2YWx1ZSgpO2JyZWFrOworICBjYXNlIDIyOgorICAgZGlhZ2Zvcm1hdCgpO2JyZWFrOworICBjYXNlIDIzOgorICAgZGlhZ2hhc2hjb2RlKCk7YnJlYWs7CisgIGNhc2UgMjQ6CisgICBkaWFnaW50dmFsdWUoKTticmVhazsKKyAgY2FzZSAyNToKKyAgIGRpYWdsb25ndmFsdWUoKTticmVhazsKKyAgY2FzZSAyNjoKKyAgIGRpYWdtb3ZlcG9pbnRsZWZ0KCk7YnJlYWs7CisgIGNhc2UgMjc6CisgICBkaWFnbW92ZXBvaW50cmlnaHQoKTticmVhazsKKyAgY2FzZSAyODoKKyAgIGRpYWdzY2FsZSgpO2JyZWFrOworICBjYXNlIDI5OgorICAgZGlhZ3NldHNjYWxlKCk7YnJlYWs7CisgIGNhc2UgMzA6CisgICBkaWFnc2hvcnR2YWx1ZSgpO2JyZWFrOworICBjYXNlIDMxOgorICAgZGlhZ3NpZ251bSgpO2JyZWFrOworICBjYXNlIDMyOgorICAgZGlhZ3RvYmlnZGVjaW1hbCgpO2JyZWFrOworICBjYXNlIDMzOgorICAgZGlhZ3RvYmlnaW50ZWdlcigpO2JyZWFrOworICBjYXNlIDM0OgorICAgZGlhZ3RvY2hhcmFycmF5KCk7YnJlYWs7CisgIGNhc2UgMzU6CisgICBkaWFndG9zdHJpbmcoKTticmVhazsKKyAgY2FzZSAzNjoKKyAgIGRpYWd1bnNjYWxlZHZhbHVlKCk7YnJlYWs7CisgIGNhc2UgMzc6CisgICBkaWFndmFsdWVvZigpO2JyZWFrOworICAgCisgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworICAgLyogTXV0YXRpb24gdGVzdCBbbXVzdCBiZSB0aGUgbGFzdCB0ZXN0XSAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgIGNhc2UgMzg6CisgICBkaWFnbXV0YXRpb24oKTticmVhazsKKyAgIC8vIGlmIGFueSBtb3JlLCBpbmNyZWFzZSB0ZXN0Y291bnQgYWJvdmUKKyAgZGVmYXVsdDp7CisgICBzYXkoIioqKiBkb3Rlc3QgY2FzZSBub3QgZm91bmQ6IisiICIrbnVtKyIgIisiKioqIik7CisgIH19CisgIH0KKyAgcmV0dXJuOworICB9CisKKyAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyAvKiBEaWFnbm9zdGljIGdyb3VwIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyAKKyAvKiogVGVzdCBjb25zdHJ1Y3RvcnMgKGFuZCB7QGxpbmsgI3RvU3RyaW5nKCl9IGZvciBlcXVhbGl0aWVzKS4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnY29uc3RydWN0b3JzKCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgamF2YS5sYW5nLlN0cmluZyBudW07CisgIGphdmEubWF0aC5CaWdJbnRlZ2VyIGJpcDsKKyAgamF2YS5tYXRoLkJpZ0ludGVnZXIgYml6OworICBqYXZhLm1hdGguQmlnSW50ZWdlciBiaW47CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGJkYTsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgYmRiOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBibWM7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGJtZDsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgYm1lOworICBqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiBlPW51bGw7CisgIGNoYXIgY2FbXTsKKyAgZG91YmxlIGR6ZXI7CisgIGRvdWJsZSBkcG9zOworICBkb3VibGUgZG5lZzsKKyAgZG91YmxlIGRwb3M1OworICBkb3VibGUgZG5lZzU7CisgIGRvdWJsZSBkbWluOworICBkb3VibGUgZG1heDsKKyAgZG91YmxlIGQ7CisgIGphdmEubGFuZy5TdHJpbmcgYmFkc3RyaW5nc1tdOworICBpbnQgaT0wOworICAKKyAgLy8gY29uc3RhbnRzIFtzdGF0aWNhbGx5LWNhbGxlZCBjb25zdHJ1Y3RvcnNdCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNvbjAwMSIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuWkVSTy50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY29uMDAyIikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNvbjAwMyIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuVEVOLnRvU3RyaW5nKCkpLmVxdWFscygiMTAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY29uMDA0IikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5aRVJPLmludFZhbHVlRXhhY3QoKSk9PTA7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNvbjAwNSIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLmludFZhbHVlRXhhY3QoKSk9PTE7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNvbjAwNiIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuVEVOLmludFZhbHVlRXhhY3QoKSk9PTEwOworICAKKyAgLy8gW2phdmEubWF0aC5dIEJpZ0RlY2ltYWwKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2JkMDAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbCgiMCIpKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNiZDAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChuZXcgamF2YS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjYmQwMDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwobmV3IGphdmEubWF0aC5CaWdEZWNpbWFsKCIxMCIpKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjYmQwMDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwobmV3IGphdmEubWF0aC5CaWdEZWNpbWFsKCIxMDAwIikpKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2JkMDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbCgiMTAuMCIpKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMC4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNiZDAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChuZXcgamF2YS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjEiKSkpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAuMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjYmQwMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwobmV3IGphdmEubWF0aC5CaWdEZWNpbWFsKCItMS4xIikpKS50b1N0cmluZygpKS5lcXVhbHMoIi0xLjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2JkMDA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbCgiLTkuMCIpKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItOS4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNiZDAwOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChuZXcgamF2YS5tYXRoLkJpZ0RlY2ltYWwoIjAuOSIpKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjkiKTsKKyAgCisgIG51bT0iMTIzNDU2Nzg5LjEyMzQ1Njc4OSI7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNiZDAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChuZXcgamF2YS5tYXRoLkJpZ0RlY2ltYWwobnVtKSkpLnRvU3RyaW5nKCkpLmVxdWFscyhudW0pOworICBudW09IjEyMzQ1Njc4OS4wMDAwMDAwMDAiOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjYmQwMTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwobmV3IGphdmEubWF0aC5CaWdEZWNpbWFsKG51bSkpKS50b1N0cmluZygpKS5lcXVhbHMobnVtKTsKKyAgbnVtPSIxMjM0NTY3ODkwMDAwMDAwMDAiOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjYmQwMTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwobmV3IGphdmEubWF0aC5CaWdEZWNpbWFsKG51bSkpKS50b1N0cmluZygpKS5lcXVhbHMobnVtKTsKKyAgbnVtPSIwLjAwMDAwMTIzNDU2Nzg5IjsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2JkMDEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbChudW0pKSkudG9TdHJpbmcoKSkuZXF1YWxzKG51bSk7CisgIG51bT0iMC4wMDAwMDAxMjM0NTY3ODkiOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjYmQwMTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwobmV3IGphdmEubWF0aC5CaWdEZWNpbWFsKG51bSkpKS50b1N0cmluZygpKS5lcXVhbHMobnVtKTsKKyAgCisgIHt0cnl7Y2hlY2tudWxsOmRveworICAgbmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKChqYXZhLm1hdGguQmlnRGVjaW1hbCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQzKXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfX0vKmNoZWNrbnVsbCovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNiaTAxNSIpKS5vaz1mbGFnOworICAKKyAgLy8gQmlnSW50ZWdlcgorICBiaXA9bmV3IEJpZ0ludGVnZXIoIjk4NzY1NDMyMTk4NzY1NDMyMTk4NzY1NDMyMSIpOyAvLyBiaWdnaWUgK3ZlCisgIGJpej1uZXcgQmlnSW50ZWdlcigiMCIpOyAvLyBiaWdnaWUgMAorICBiaW49bmV3IEJpZ0ludGVnZXIoIi0xMjM0NTY3ODk5ODc2NTQzMjExMjM0NTY3OCIpOyAvLyBiaWdnaWUgLXZlCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNiaTAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChiaXApKS50b1N0cmluZygpKS5lcXVhbHMoYmlwLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjYmkwMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYml6KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNiaTAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChiaW4pKS50b1N0cmluZygpKS5lcXVhbHMoYmluLnRvU3RyaW5nKCkpOworICB7dHJ5e2NoZWNrbnVsbDpkb3sKKyAgIG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgoamF2YS5tYXRoLkJpZ0ludGVnZXIpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkNCl7CisgICBmbGFnPXRydWU7CisgIH19LypjaGVja251bGwqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjYmkwMDQiKSkub2s9ZmxhZzsKKyAgCisgIC8vIEJpZ0ludGVnZXIgd2l0aCBzY2FsZQorICBiaXA9bmV3IEJpZ0ludGVnZXIoIjEyMzQ1Njc4OSIpOyAvLyBiaWdpc2gKKyAgYmRhPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChiaXApOworICBiZGI9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGJpcCw1KTsKKyAgYm1jPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChiaXAsMTUpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjYnMwMDEiKSkub2s9KGJkYS50b1N0cmluZygpKS5lcXVhbHMoIjEyMzQ1Njc4OSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjYnMwMDIiKSkub2s9KGJkYi50b1N0cmluZygpKS5lcXVhbHMoIjEyMzQuNTY3ODkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2JzMDAzIikpLm9rPShibWMudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMDEyMzQ1Njc4OSIpOworICBiaXA9bmV3IEJpZ0ludGVnZXIoIjEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4OSIpOyAvLyBiaWdnaWUKKyAgYmRhPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChiaXApOworICBiZGI9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGJpcCw3KTsKKyAgYm1jPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChiaXAsMTMpOworICBibWQ9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGJpcCwxOSk7CisgIGJtZT1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYmlwLDI5KTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2JzMDExIikpLm9rPShiZGEudG9TdHJpbmcoKSkuZXF1YWxzKCIxMjM0NTY3ODkxMjM0NTY3ODkxMjM0NTY3ODkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2JzMDEyIikpLm9rPShiZGIudG9TdHJpbmcoKSkuZXF1YWxzKCIxMjM0NTY3ODkxMjM0NTY3ODkxMi4zNDU2Nzg5Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNiczAxMyIpKS5vaz0oYm1jLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNDU2Nzg5MTIzNDUuNjc4OTEyMzQ1Njc4OSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjYnMwMTQiKSkub2s9KGJtZC50b1N0cmluZygpKS5lcXVhbHMoIjEyMzQ1Njc4LjkxMjM0NTY3ODkxMjM0NTY3ODkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2JzMDE1IikpLm9rPShibWUudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMTIzNDU2Nzg5MTIzNDU2Nzg5MTIzNDU2Nzg5Iik7CisgIHt0cnl7Y2hlY2tudWxsOmRveworICAgbmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKChqYXZhLm1hdGguQmlnSW50ZWdlciludWxsLDEpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDUpeworICAgZmxhZz10cnVlOworICB9fS8qY2hlY2tudWxsKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2JzMDA0IikpLm9rPWZsYWc7CisgIHt0cnl7Y2hlY2tzY2FsZTpkb3sKKyAgIG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChiaXAsLTgpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiAkNil7ZT0kNjsKKyAgIGZsYWc9KGUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIk5lZ2F0aXZlIHNjYWxlOiAtOCIpOworICB9fS8qY2hlY2tzY2FsZSovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNiczAwNSIpKS5vaz1mbGFnOworICAKKyAgLy8gY2hhcltdCisgIC8vIFdlIGp1c3QgdGVzdCBpdCdzIHRoZXJlCisgIC8vIEZ1bmN0aW9uYWxpdHkgaXMgdGVzdGVkIGJ5IEJpZ0RlY2ltYWwoU3RyaW5nKS4KKyAgY2E9KCIxMjMuNDUiKS50b0NoYXJBcnJheSgpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjY2EwMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EpKS50b1N0cmluZygpKS5lcXVhbHMoIjEyMy40NSIpOworICB7dHJ5e2NoZWNrbnVsbDpkb3sKKyAgIG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgoY2hhcltdKW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDcpeworICAgZmxhZz10cnVlOworICB9fS8qY2hlY2tudWxsKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2NhMDEwIikpLm9rPWZsYWc7CisgIAorICAvLyBjaGFyW10saW50LGludAorICAvLyBXZSBqdXN0IHRlc3QgaXQncyB0aGVyZSwgYW5kIHRoYXQgb2Zmc2V0cyB3b3JrLgorICAvLyBGdW5jdGlvbmFsaXR5IGlzIHRlc3RlZCBieSBCaWdEZWNpbWFsKFN0cmluZykuCisgIGNhPSgiMTIzLjQ1IikudG9DaGFyQXJyYXkoKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2NhMTAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGNhLDAsNikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzLjQ1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNjYTEwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChjYSwxLDUpKS50b1N0cmluZygpKS5lcXVhbHMoIjIzLjQ1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNjYTEwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChjYSwyLDQpKS50b1N0cmluZygpKS5lcXVhbHMoIjMuNDUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2NhMTA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGNhLDMsMykpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40NSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjY2ExMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsNCwyKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI0NSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjY2ExMDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsNSwxKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI1Iik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjY2ExMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsMCwxKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNjYTExMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChjYSwxLDEpKS50b1N0cmluZygpKS5lcXVhbHMoIjIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2NhMTEyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGNhLDIsMSkpLnRvU3RyaW5nKCkpLmVxdWFscygiMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjY2ExMTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsNCwxKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI0Iik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjY2ExMjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsMCwyKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjY2ExMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsMSwyKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjY2ExMjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsMiwyKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNjYTEyMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChjYSwzLDIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2NhMTMwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGNhLDAsMykpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNjYTEzMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChjYSwxLDMpKS50b1N0cmluZygpKS5lcXVhbHMoIjIzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNjYTEzMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChjYSwyLDMpKS50b1N0cmluZygpKS5lcXVhbHMoIjMuNCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2NhMTQwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGNhLDAsNCkpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNjYTE0MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChjYSwxLDQpKS50b1N0cmluZygpKS5lcXVhbHMoIjIzLjQiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNjYTE1MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChjYSwwLDUpKS50b1N0cmluZygpKS5lcXVhbHMoIjEyMy40Iik7CisgIAorICAvLyBhIGNvdXBsZSBvZiBvZGRpZXMKKyAgY2E9KCJ4MjMuNHgiKS50b0NoYXJBcnJheSgpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjY2ExNjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsMSw0KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyMy40Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNjYTE2MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChjYSwxLDEpKS50b1N0cmluZygpKS5lcXVhbHMoIjIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2NhMTYyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGNhLDQsMSkpLnRvU3RyaW5nKCkpLmVxdWFscygiNCIpOworICAKKyAgY2E9KCIwMTIzNDU2Nzg5Ljk4NzY1NDMyMTAiKS50b0NoYXJBcnJheSgpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjY2ExNjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsMCwyMSkpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNDU2Nzg5Ljk4NzY1NDMyMTAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2NhMTY0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGNhLDEsMjApKS50b1N0cmluZygpKS5lcXVhbHMoIjEyMzQ1Njc4OS45ODc2NTQzMjEwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNjYTE2NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChjYSwyLDE5KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyMzQ1Njc4OS45ODc2NTQzMjEwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNjYTE2NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChjYSwyLDE4KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyMzQ1Njc4OS45ODc2NTQzMjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2NhMTY3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGNhLDIsMTcpKS50b1N0cmluZygpKS5lcXVhbHMoIjIzNDU2Nzg5Ljk4NzY1NDMyIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNjYTE2OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChjYSwyLDE2KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyMzQ1Njc4OS45ODc2NTQzIik7CisgIAorICB7dHJ5e2NoZWNrbnVsbDpkb3sKKyAgIG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgoY2hhcltdKW51bGwsMCwxKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ4KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfX0vKmNoZWNrbnVsbCovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNjYTIwMCIpKS5vaz1mbGFnOworICAKKyAge3RyeXtjaGVja2xlbjpkb3sKKyAgIG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzIi50b0NoYXJBcnJheSgpLDAsMCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24gJDkpeworICAgZmxhZz10cnVlOworICB9fS8qY2hlY2tsZW4qLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjY2EyMDEiKSkub2s9ZmxhZzsKKyAgCisgIHt0cnl7Y2hlY2tib3VuZDpkb3sKKyAgIG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzIi50b0NoYXJBcnJheSgpLDIsNCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uICQxMCl7IC8vIGFueXRoaW5nIE9LCisgICBmbGFnPXRydWU7CisgIH19LypjaGVja2JvdW5kKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2NhMjAyIikpLm9rPWZsYWc7CisgIHt0cnl7Y2hlY2tib3VuZDI6ZG97CisgICBuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMyIudG9DaGFyQXJyYXkoKSwtMSwyKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24gJDExKXsgLy8gYW55dGhpbmcgT0sKKyAgIGZsYWc9dHJ1ZTsKKyAgfX0vKmNoZWNrYm91bmQyKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2NhMjAzIikpLm9rPWZsYWc7CisgIHt0cnl7Y2hlY2tib3VuZDM6ZG97CisgICBuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMyIudG9DaGFyQXJyYXkoKSwxLC0yKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24gJDEyKXsgLy8gYW55dGhpbmcgT0sKKyAgIGZsYWc9dHJ1ZTsKKyAgfX0vKmNoZWNrYm91bmQzKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2NhMjA0IikpLm9rPWZsYWc7CisgIAorICAvLyBkb3VibGUgW2RlcHJlY2F0ZWRdCisgIC8vIE5vdGUgdGhhdCBtYW55IG9mIHRoZXNlIGRpZmZlciBmcm9tIHRoZSB2YWx1ZU9mKGRvdWJsZSkgcmVzdWx0cy4KKyAgZHplcj0oZG91YmxlKTA7CisgIGRwb3M9KGRvdWJsZSkxOworICBkcG9zPWRwb3MvKChkb3VibGUpMTApOworICBkbmVnPShkb3VibGUpLWRwb3M7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNkbzAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChkbmVnKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4xMDAwMDAwMDAwMDAwMDAwMDU1NTExMTUxMjMxMjU3ODI3MDIxMTgxNTgzNDA0NTQxMDE1NjI1Iik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjZG8wMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoZHplcikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOyAvLyBOQiwgbm90ICcwLjAnCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNkbzAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChkcG9zKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwMDAwMDAwMDAwMDAwMDAwNTU1MTExNTEyMzEyNTc4MjcwMjExODE1ODM0MDQ1NDEwMTU2MjUiKTsKKyAgCisgIGRwb3M1PShkb3VibGUpMC41RDsKKyAgZG5lZzU9KGRvdWJsZSktZHBvczU7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNkbzAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChkbmVnNSkpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjZG8wMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoZHBvczUpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNSIpOworICBkbWluPWphdmEubGFuZy5Eb3VibGUuTUlOX1ZBTFVFOworICBkbWF4PWphdmEubGFuZy5Eb3VibGUuTUFYX1ZBTFVFOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjZG8wMDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoZG1pbikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDQ5NDA2NTY0NTg0MTI0NjU0NDE3NjU2ODc5Mjg2ODIyMTM3MjM2NTA1OTgwMjYxNDMyNDc2NDQyNTU4NTY4MjUwMDY3NTUwNzI3MDIwODc1MTg2NTI5OTgzNjM2MTYzNTk5MjM3OTc5NjU2NDY5NTQ0NTcxNzczMDkyNjY1NjcxMDM1NTkzOTc5NjM5ODc3NDc5NjAxMDc4MTg3ODEyNjMwMDcxMzE5MDMxMTQwNDUyNzg0NTgxNzE2Nzg0ODk4MjEwMzY4ODcxODYzNjA1Njk5ODczMDcyMzA1MDAwNjM4NzQwOTE1MzU2NDk4NDM4NzMxMjQ3MzM5NzI3MzE2OTYxNTE0MDAzMTcxNTM4NTM5ODA3NDEyNjIzODU2NTU5MTE3MTAyNjY1ODU1NjY4Njc2ODE4NzAzOTU2MDMxMDYyNDkzMTk0NTI3MTU5MTQ5MjQ1NTMyOTMwNTQ1NjU0NDQwMTEyNzQ4MDEyOTcwOTk5OTU0MTkzMTk4OTQwOTA4MDQxNjU2MzMyNDUyNDc1NzE0Nzg2OTAxNDcyNjc4MDE1OTM1NTIzODYxMTU1MDEzNDgwMzUyNjQ5MzQ3MjAxOTM3OTAyNjgxMDcxMDc0OTE3MDMzMzIyMjY4NDQ3NTMzMzU3MjA4MzI0MzE5MzYwOTIzODI4OTM0NTgzNjgwNjAxMDYwMTE1MDYxNjk4MDk3NTMwNzgzNDIyNzczMTgzMjkyNDc5MDQ5ODI1MjQ3MzA3NzYzNzU5MjcyNDc4NzQ2NTYwODQ3NzgyMDM3MzQ0Njk2OTk1MzM2NDcwMTc5NzI2Nzc3MTc1ODUxMjU2NjA1NTExOTkxMzE1MDQ4OTExMDE0NTEwMzc4NjI3MzgxNjcyNTA5NTU4MzczODk3MzM1OTg5OTM2NjQ4MDk5NDExNjQyMDU3MDI2MzcwOTAyNzkyNDI3Njc1NDQ1NjUyMjkwODc1Mzg2ODI1MDY0MTk3MTgyNjU1MzM0NDcyNjU2MjUiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNkbzAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChkbWF4KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxNzk3NjkzMTM0ODYyMzE1NzA4MTQ1Mjc0MjM3MzE3MDQzNTY3OTgwNzA1Njc1MjU4NDQ5OTY1OTg5MTc0NzY4MDMxNTcyNjA3ODAwMjg1Mzg3NjA1ODk1NTg2MzI3NjY4NzgxNzE1NDA0NTg5NTM1MTQzODI0NjQyMzQzMjEzMjY4ODk0NjQxODI3Njg0Njc1NDY3MDM1Mzc1MTY5ODYwNDk5MTA1NzY1NTEyODIwNzYyNDU0OTAwOTAzODkzMjg5NDQwNzU4Njg1MDg0NTUxMzM5NDIzMDQ1ODMyMzY5MDMyMjI5NDgxNjU4MDg1NTkzMzIxMjMzNDgyNzQ3OTc4MjYyMDQxNDQ3MjMxNjg3MzgxNzcxODA5MTkyOTk4ODEyNTA0MDQwMjYxODQxMjQ4NTgzNjgiKTsKKyAgCisgIAorICAvLyBuYXN0aWVzCisgIGQ9KGRvdWJsZSk5OworICBkPWQvKChkb3VibGUpMTApOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjZG8wMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoZCkpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45MDAwMDAwMDAwMDAwMDAwMjIyMDQ0NjA0OTI1MDMxMzA4MDg0NzI2MzMzNjE4MTY0MDYyNSIpOworICAKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2RvMDExIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGQpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDg5OTk5OTk5OTk5OTk5OTk2NjY5MzMwOTI2MTI0NTMwMzc4NzI5MTA0OTk1NzI3NTM5MDYyNSIpOworICAKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2RvMDEyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGQpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDA4OTk5OTk5OTk5OTk5OTk5MzE5OTg4Mzk3NDE3MDkxNjE4OTkwNTI1NjAzMjk0MzcyNTU4NTkzNzUiKTsKKyAgCisgIGQ9ZC8oKGRvdWJsZSkxMCk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNkbzAxMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChkKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDg5OTk5OTk5OTk5OTk5OTk3NTM2NjkyNjY0MTEyOTMzOTI1OTM1MDY3MjM2NDIzNDkyNDMxNjQwNjI1Iik7CisgIAorICBkPWQvKChkb3VibGUpMTApOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjZG8wMTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoZCkpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwODk5OTk5OTk5OTk5OTk5OTIxMTU2ODE4MDE2ODU0MTE3NTU4OTc4MDMyMzIwNzM3ODM4NzQ1MTE3MTg3NSIpOworICAKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2RvMDE1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGQpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDA4OTk5OTk5OTk5OTk5OTk4NTMzOTQxODIyMzY1MTAwOTA0MzM1MTIyMzIyNjYzNjY0ODE3ODEwMDU4NTkzNzUiKTsKKyAgCisgIGQ9ZC8oKGRvdWJsZSkxMCk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNkbzAxNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChkKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMDg5OTk5OTk5OTk5OTk5OTg1MzM5NDE4MjIzNjUxMDA5MDQzMzUxMjIzMjI2NjM2NjQ4MTc4MTAwNTg1OTM3NSIpOworICAKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2RvMDE3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGQpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwMDg5OTk5OTk5OTk5OTk5OTg1MzM5NDE4MjIzNjUxMDA5MDQzMzUxMjIzMjI2NjM2NjQ4MTc4MTAwNTg1OTM3NSIpOworICAKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2RvMDE4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGQpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwMDA4OTk5OTk5OTk5OTk5OTk3ODcyMTk3MzMyMzIyNjc4NzY0NDM3OTk1MzY5MDA3Njk0NTM0OTU3NDA4OTA1MDI5Mjk2ODc1Iik7CisgIAorICAKKyAge3RyeXtjaGVja3Bpbjpkb3sKKyAgIG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChqYXZhLmxhbmcuRG91YmxlLlBPU0lUSVZFX0lORklOSVRZKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiAkMTMpeworICAgZmxhZz10cnVlOworICB9fS8qY2hlY2twaW4qLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjZG8xMDEiKSkub2s9ZmxhZzsKKyAge3RyeXtjaGVja25pbjpkb3sKKyAgIG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChqYXZhLmxhbmcuRG91YmxlLk5FR0FUSVZFX0lORklOSVRZKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiAkMTQpeworICAgZmxhZz10cnVlOworICB9fS8qY2hlY2tuaW4qLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjZG8xMDIiKSkub2s9ZmxhZzsKKyAge3RyeXtjaGVja25hbjpkb3sKKyAgIG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChqYXZhLmxhbmcuRG91YmxlLk5hTik7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24gJDE1KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfX0vKmNoZWNrbmFuKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2RvMTAzIikpLm9rPWZsYWc7CisgIAorICAvLyBpbnQKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2luMDAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGltaW4pKS50b1N0cmluZygpKS5lcXVhbHMoIi0yMTQ3NDgzNjQ4Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNpbjAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChpbWF4KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyMTQ3NDgzNjQ3Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNpbjAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChpbmVnKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjaW4wMDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoaXplcikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjaW4wMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoaXBvcykpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjaW4wMDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMTApKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNpbjAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCg5KSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNpbjAwOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCg1KSkudG9TdHJpbmcoKSkuZXF1YWxzKCI1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNpbjAwOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgyKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNpbjAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgtMikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2luMDExIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKC01KSkudG9TdHJpbmcoKSkuZXF1YWxzKCItNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjaW4wMTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoLTkpKS50b1N0cmluZygpKS5lcXVhbHMoIi05Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNpbjAxMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgtMTApKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjaW4wMTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoLTExKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2luMDE1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKC05OSkpLnRvU3RyaW5nKCkpLmVxdWFscygiLTk5Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNpbjAxNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgtMTAwKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMTAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNpbjAxNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgtOTk5KSkudG9TdHJpbmcoKSkuZXF1YWxzKCItOTk5Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNpbjAxOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgtMTAwMCkpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEwMDAiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNpbjAxOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgxMSkpLnRvU3RyaW5nKCkpLmVxdWFscygiMTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2luMDIwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDk5KSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5OSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjaW4wMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMTAwKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2luMDIyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDk5OSkpLnRvU3RyaW5nKCkpLmVxdWFscygiOTk5Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNpbjAyMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgxMDAwKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwIik7CisgIAorICAvLyBsb25nCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNsbzAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChsbWluKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItOTIyMzM3MjAzNjg1NDc3NTgwOCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjbG8wMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwobG1heCkpLnRvU3RyaW5nKCkpLmVxdWFscygiOTIyMzM3MjAzNjg1NDc3NTgwNyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjbG8wMDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwobG5lZykpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2xvMDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGx6ZXIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY2xvMDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGxwb3MpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgCisgIC8vIFN0cmluZyBbbWFueSBtb3JlIGV4YW1wbGVzIGFyZSBlbHNld2hlcmVdCisgIC8vIHN0cmluZ3Mgd2l0aG91dCBFIGNhbm5vdCBnZW5lcmF0ZSBFIGluIHJlc3VsdAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNzYiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItNzYiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMi43NiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEyLjc2Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzEyLjc2IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIuNzYiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMTIuNzYiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMi43NiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwMDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIiswLjAwMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTcuIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuNSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwMDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjA0NCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjQ0Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDA0NCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjQ0Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDA1IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDA1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDAuMDAwMDUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDA1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDAxMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDAwMDUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwMTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwMDAwNSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwNSIpOyAvLyBcTlIKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDE1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDAwMDA1IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMDAwNSIpOyAvLyBcTlIKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDE2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NTY3OC44NzY1NDMyMTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMjM0NTY3OC44NzY1NDMyMTAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDE3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyMzQ1Njc4Ljg3NjU0MzIxMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIzNDU2NzguODc2NTQzMjEwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDAxOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMzQ1Njc4Ljg3NjU0MzIxMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjM0NTY3OC44NzY1NDMyMTAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDE5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMzQ1Njc4Ljg3NjU0MzIxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMzQ1Njc4Ljg3NjU0MzIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDAyMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMzQ1Njc4Ljg3NjU0MzIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzNDU2NzguODc2NTQzMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIiszNDU2NzguODc2NTQzMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjM0NTY3OC44NzY1NDMyIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDAyMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzAzNDU2NzguODc2NTQzMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjM0NTY3OC44NzY1NDMyIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDAyMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzAwMzQ1Njc4Ljg3NjU0MzIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzNDU2NzguODc2NTQzMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwMjQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0zNDU2NzguODc2NTQzMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0zNDU2NzguODc2NTQzMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwMjUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wMzQ1Njc4Ljg3NjU0MzIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMzQ1Njc4Ljg3NjU0MzIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDI2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMDAzNDU2NzguODc2NTQzMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0zNDU2NzguODc2NTQzMiIpOworICAKKyAgLy8gZXhvdGljcyAtLQorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwMzUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIlx1MGU1Ny5cdTBlNTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI3LjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDM2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCJcdTBiNjYuXHUwYjY3IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDAzNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiXHUwYjY2XHUwYjY2IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwMzgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIlx1MGI2YVx1MGI2NiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjQwIik7CisgIAorICAvLyBzdHJpbmdzIHdpdGggRQorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwNDAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFFKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA0MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMWUrMDkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA0MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMUUrOTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5MCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwNDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxRSswMDkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA0NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMEUrOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDQ1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRSs5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrOSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwNDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFFKzA5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrOSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwNDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFlKzkwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrOTAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDQ4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRSswMDkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA0OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMEUrOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDUwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRTkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA1MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMWUwOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjFFKzkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDUyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRTkwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrOTAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDUzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRTAwOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjFFKzkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDU0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwRTkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA1NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDBlKzAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA1NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDBFLTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA1NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNEUrOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjRFKzkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDU4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI0NEUrOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjQuNEUrMTAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDU5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjczZS03IikpLnRvU3RyaW5nKCkpLmVxdWFscygiNy4zRS04Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA2MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDBFKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA2MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDBFLTkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA2MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTBFKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjBFKzEwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA2MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTBFKzA5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wRSsxMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwNjQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwZSs5MCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMEUrOTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDY1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMEUrMDA5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wRSsxMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwNjYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMGUrOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDBFKzExIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA2NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwZSswOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDBFKzExIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA2OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwRSs5MCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDBFKzkyIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA2OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwZSswMDkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwRSsxMSIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDcwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI2NSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA3MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yNjVFLTIwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA3MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yNjVFLTgiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtOCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwNzMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjY1RS00IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDc0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI2NUUtMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS0zIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA3NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yNjVFLTIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwNzYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjY1RS0xIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDc3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI2NUUtMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA3OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yNjVFKzEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwNzkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjY1RSsyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDgwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI2NUUrMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSszIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA4MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yNjVFKzQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrNCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwODIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjY1RSs4IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzgiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDgzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI2NUUrMjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMjAiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA5MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIuNjUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMi42NSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwOTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RS0yMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS0xOSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwOTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RS04IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDkzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMi42NUUtNCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS0zIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA5NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIuNjVFLTMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwOTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RS0yIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDk2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMi42NUUtMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDA5NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIuNjVFLTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QwOTgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RSsxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MDk5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMi42NUUrMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSszIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDEwMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIuNjVFKzMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrNCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RSs0IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMi42NUUrOCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSs5Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDEwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIuNjVFKzIwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzIxIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNi41IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTI2LjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTExIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjYuNUUtMjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtMTgiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTEyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjYuNUUtOCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS02Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDExMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI2LjVFLTQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxMTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNi41RS0zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTE1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjYuNUUtMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDExNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI2LjVFLTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxMTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNi41RS0wIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTE4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjYuNUUrMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSszIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDExOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI2LjVFKzIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrNCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxMjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNi41RSszIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTIxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjYuNUUrNCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSs2Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDEyMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI2LjVFKzgiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMTAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTIzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjYuNUUrMjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMjIiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDEzMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI2NSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEyNjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTMxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjY1RS0yMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS0xNyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxMzIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFLTgiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxMzMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFLTQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxMzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFLTMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxMzUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFLTIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxMzYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFLTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxMzciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFLTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxMzgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFKzEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrNCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxMzkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFKzIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxNDAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFKzMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrNiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxNDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFKzQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrNyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxNDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFKzgiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTQzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjY1RSsyMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSsyMyIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTUwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEyNjUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEyNjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTUxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEyNjVFLTIwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDE1MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4xMjY1RS04IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTUzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEyNjVFLTQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxNTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTI2NUUtMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS00Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDE1NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4xMjY1RS0yIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTU2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEyNjVFLTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxNTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTI2NUUtMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS0xIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDE1OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4xMjY1RSsxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTU5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEyNjVFKzIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxNjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTI2NUUrMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSsyIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDE2MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4xMjY1RSs0IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTYyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEyNjVFKzgiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrNyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxNjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTI2NUUrMjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMTkiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDE3MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wOWU5OTk5OTk5OTkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5RSs5OTk5OTk5OTciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTcxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjllOTk5OTk5OTk5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiOUUrOTk5OTk5OTk4Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDE3MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOWU5OTk5OTk5OTkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5RSs5OTk5OTk5OTkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTczIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5LjllOTk5OTk5OTk5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiOS45RSs5OTk5OTk5OTkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTc0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljk5ZTk5OTk5OTk5OSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkuOTlFKzk5OTk5OTk5OSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxNzUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuOTllLTk5OTk5OTk5OSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkuOTlFLTk5OTk5OTk5OSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QxNzYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuOWUtOTk5OTk5OTk5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiOS45RS05OTk5OTk5OTkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTc3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5ZS05OTk5OTk5OTkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5RS05OTk5OTk5OTkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTc5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OWUtOTk5OTk5OTk5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiOS45RS05OTk5OTk5OTgiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3N0MTgwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTllLTk5OTk5OTk5OSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkuOTlFLTk5OTk5OTk5NyIpOworICAKKyAgLy8gYmFkZGllcyAtLQorICBiYWRzdHJpbmdzPW5ldyBqYXZhLmxhbmcuU3RyaW5nW117IjEuLjIiLCIuIiwiLi4iLCIrKzEiLCItLTEiLCItKzEiLCIrLTEiLCIxMmUiLCIxMmUrKyIsIjEyZjQiLCIgKzEiLCIrIDEiLCIxMiAiLCIgKyAxIiwiIC0gMSAiLCJ4IiwiLTEtIiwiMTItIiwiMysiLCIiLCIxZS0iLCI3ZTEwMDAwMDAwMDAiLCIiLCJlMTAwIiwiXHUwZTVhIiwiXHUwYjY1IiwiOTllOTk5OTk5OTk5IiwiOTk5ZTk5OTk5OTk5OSIsIjAuOWUtOTk5OTk5OTk5IiwiMC4wOWUtOTk5OTk5OTk5IiwiMC4xZTEwMDAwMDAwMDAiLCIxMGUtMTAwMDAwMDAwMCIsIjAuOWU5OTk5OTk5OTk5IiwiOTllLTk5OTk5OTk5OTkiLCIxMTFlOTk5OTk5OTk5OSIsIjExMTFlLTk5OTk5OTk5OTkiKyIgIisiMTExZSoxMjMiLCIxMTFlMTIzLSIsIjExMWUrMTIrIiwiMTExZTEtMy0iLCIxMTFlMSoyMyIsIjExMWUxZSszIiwiMWUxLjAiLCIxZTEyM2UiLCJ0ZW4iLCJPTkUiLCIxZS4xIiwiMWUxLiIsIjFlZSIsImUrMSJ9OyAvLyAyMDAtMjAzCisgIC8vIDIwNC0yMDcKKyAgLy8gMjA4LTIxMQorICAvLyAyMTEtMjE0CisgIC8vIDIxNS0yMTkKKyAgLy8gMjIwLTIyMgorICAvLyAyMjMtMjI0CisgIC8vIDIyNS0yMjYKKyAgLy8gMjI3LTIyOAorICAvLyAyMjktMjMwCisgIC8vIDIzMS0yMzIKKyAgLy8gMjMzLTIzNAorICAvLyAyMzUtMjM3CisgIC8vIDIzOC0yNDAKKyAgLy8gMjQxLTI0NAorICAvLyAyNDUtMjQ4CisgIAorICAvLyB3YXRjaCBvdXQgZm9yIGNvbW1hcyBvbiBjb250aW51YXRpb24gbGluZXMKKyAgCisgIHtpbnQgJDE2PWJhZHN0cmluZ3MubGVuZ3RoO2k9MDtpOmZvcig7JDE2PjA7JDE2LS0saSsrKXsKKyAgIHt0cnl7CisgICAgbmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGJhZHN0cmluZ3NbaV0pOworICAgIHNheSgiPj4+IGNzdCIrKDIwMCtpKSsiOiIrIiAiK2JhZHN0cmluZ3NbaV0rIiAiKyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYmFkc3RyaW5nc1tpXSkpLnRvU3RyaW5nKCkpOworICAgIGZsYWc9ZmFsc2U7CisgICB9CisgICBjYXRjaCAoamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiAkMTcpeworICAgIGZsYWc9dHJ1ZTsKKyAgIH19CisgICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjc3QiKygyMDAraSkpKS5vaz1mbGFnOworICAgfQorICB9LyppKi8KKyAgCisgIHt0cnl7Y2hlY2tudWxsOmRveworICAgbmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKChqYXZhLmxhbmcuU3RyaW5nKW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDE4KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfX0vKmNoZWNrbnVsbCovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNzdDMwMSIpKS5vaz1mbGFnOworICAKKyAgc3VtbWFyeSgiQ29uc3RydWN0b3JzIik7CisgIHJldHVybjsKKyAgfQorCisgLyoqIE11dGF0aW9uIHRlc3RzIChjaGVja3MgdGhhdCBjb250ZW50cyBvZiBjb25zdGFudCBvYmplY3RzIGFyZSB1bmNoYW5nZWQpLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdtdXRhdGlvbigpeworICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgIC8qIEZpbmFsIHRlc3RzIC0tIGNoZWNrIGNvbnN0YW50cyBoYXZlbid0IG11dGF0ZWQgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgLS0gYWxzbyB0aGF0IE1DIG9iamVjdHMgaGF2ZW4ndCBtdXRhdGVkICAgICAgICAgICAgICAqLworICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImN1YzAwMSIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuWkVSTy50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3VjMDAyIikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImN1YzAwMyIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuVEVOLnRvU3RyaW5nKCkpLmVxdWFscygiMTAiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImN1YzAxMCIpKS5vaz1jb20uaWJtLm1hdGguQmlnRGVjaW1hbC5ST1VORF9DRUlMSU5HPT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfQ0VJTElORzsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3VjMDExIikpLm9rPWNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLlJPVU5EX0RPV049PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9ET1dOOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjdWMwMTIiKSkub2s9Y29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuUk9VTkRfRkxPT1I9PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUjsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3VjMDEzIikpLm9rPWNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLlJPVU5EX0hBTEZfRE9XTj09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTjsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3VjMDE0IikpLm9rPWNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLlJPVU5EX0hBTEZfRVZFTj09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTjsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3VjMDE1IikpLm9rPWNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLlJPVU5EX0hBTEZfVVA9PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjdWMwMTYiKSkub2s9Y29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuUk9VTkRfVU5ORUNFU1NBUlk9PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3VjMDE3IikpLm9rPWNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLlJPVU5EX1VQPT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVVA7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjdWMwMjAiKSkub2s9KGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ERUZBVUxULmdldERpZ2l0cygpKT09OTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3VjMDIxIikpLm9rPShjb20uaWJtLm1hdGguTWF0aENvbnRleHQuREVGQVVMVC5nZXRGb3JtKCkpPT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQzsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3VjMDIyIikpLm9rPShjb20uaWJtLm1hdGguTWF0aENvbnRleHQuREVGQVVMVC5nZXRMb3N0RGlnaXRzKCk/MTowKT09MDsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3VjMDIzIikpLm9rPShjb20uaWJtLm1hdGguTWF0aENvbnRleHQuREVGQVVMVC5nZXRSb3VuZGluZ01vZGUoKSk9PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQOworICAKKyAgLy8gbWM5ICA9TWF0aENvbnRleHQoOSkKKyAgLy8gbWNsZCA9TWF0aENvbnRleHQoOSwgU0NJRU5USUZJQywgMSkKKyAgLy8gbWNmZCA9TWF0aENvbnRleHQoMCwgUExBSU4pCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImN1YzAzMCIpKS5vaz0obWM5LmdldERpZ2l0cygpKT09OTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3VjMDMxIikpLm9rPShtYzkuZ2V0Rm9ybSgpKT09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlNDSUVOVElGSUM7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImN1YzAzMiIpKS5vaz0obWM5LmdldExvc3REaWdpdHMoKT8xOjApPT0wOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjdWMwMzMiKSkub2s9KG1jOS5nZXRSb3VuZGluZ01vZGUoKSk9PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjdWMwMzQiKSkub2s9KG1jbGQuZ2V0RGlnaXRzKCkpPT05OworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjdWMwMzUiKSkub2s9KG1jbGQuZ2V0Rm9ybSgpKT09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlNDSUVOVElGSUM7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImN1YzAzNiIpKS5vaz0obWNsZC5nZXRMb3N0RGlnaXRzKCk/MTowKT09MTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3VjMDM3IikpLm9rPShtY2xkLmdldFJvdW5kaW5nTW9kZSgpKT09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVA7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImN1YzAzOCIpKS5vaz0obWNmZC5nZXREaWdpdHMoKSk9PTA7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImN1YzAzOSIpKS5vaz0obWNmZC5nZXRGb3JtKCkpPT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUExBSU47CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImN1YzA0MCIpKS5vaz0obWNmZC5nZXRMb3N0RGlnaXRzKCk/MTowKT09MDsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3VjMDQxIikpLm9rPShtY2ZkLmdldFJvdW5kaW5nTW9kZSgpKT09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVA7CisgIAorICBzdW1tYXJ5KCJObyBtdXRhdGlvbiIpOworICByZXR1cm47fQorCisgCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAvKiBPcGVyYXRvciB0ZXN0IG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLy8gVGhlIHVzZSBvZiBjb250ZXh0IGluIHRoZXNlIHRlc3RzIGFyZSBwcmltYXJpbHkgdG8gc2hvdyB0aGF0IHRoZXkKKyAvLyBhcmUgY29ycmVjdGx5IHBhc3NlZCB0byB0aGUgbWV0aG9kcywgZXhjZXB0IHRoYXQgd2UgY2hlY2sgdGhhdAorIC8vIGVhY2ggbWV0aG9kIGNoZWNrcyBmb3IgbG9zdERpZ2l0cy4KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjYWJzfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ2FicygpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uIGFlPW51bGw7CisgIAorICAvLyBtb3N0IG9mIHRoZSBmdW5jdGlvbiBvZiB0aGlzIGlzIHRlc3RlZCBieSBhZGQKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWJzMDAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLmFicygpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhYnMwMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yIikpLmFicygpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhYnMwMDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIiswLjAwMCIpKS5hYnMoKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFiczAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDAuMDAwIikpLmFicygpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWJzMDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4wMDAiKSkuYWJzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhYnMwMDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIiswLjAwMCIpKS5hYnMobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhYnMwMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAwMCIpKS5hYnMobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhYnMwMDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjAwMCIpKS5hYnMobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhYnMwMDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yMDAwMDAwIikpLmFicygpLnRvU3RyaW5nKCkpLmVxdWFscygiMjAwMDAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhYnMwMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yMDAwMDAwIikpLmFicyhtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFiczAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTIwMDAwMDAiKSkuYWJzKG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjAwMDAwRSs2Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFiczAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMjAwMDAwMCIpKS5hYnMobWM2KS50b1N0cmluZygpKS5lcXVhbHMoIjIuMDAwMDBFKzYiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWJzMDEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjIiKSkuYWJzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWJzMDE0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4yIikpLmFicygpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFiczAxNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMSIpKS5hYnMoKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWJzMDE2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4wMSIpKS5hYnMoKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDEiKTsKKyAge3RyeXtjaGVja2RpZ2l0czpkb3sKKyAgIHRlbmxvbmcuYWJzKG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTkpe2FlPSQxOTsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfX0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWJzMDIwIikpLm9rPWZsYWc7CisgIC8vIGNoZWNrIGxvc3RkaWdpdHMgbm90IHJhaXNlZCBpZiBkaWdpdHM9MCBbbW9uYWRpYyBtZXRob2RdCisgIHt0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICB0ZW5sb25nLmFicyhtY2xkMCk7CisgICBmbGFnPXRydWU7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDIwKXthZT0kMjA7CisgICBmbGFnPWZhbHNlOworICB9fS8qY2hlY2tkaWdpdHMqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhYnMwMjEiKSkub2s9ZmxhZzsKKyAge3RyeXtjaGVja251bGw6ZG97CisgICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5URU4uYWJzKChjb20uaWJtLm1hdGguTWF0aENvbnRleHQpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkMjEpeworICAgZmxhZz10cnVlOworICB9fS8qY2hlY2tudWxsKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWJzMDIyIikpLm9rPWZsYWc7CisgIAorICBzdW1tYXJ5KCJhYnMiKTsKKyAgcmV0dXJuO30KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI2FkZH0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdhZGQoKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBhbGhzOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBhcmhzOworICBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiBhZT1udWxsOworICAKKyAgLy8gW2ZpcnN0IGdyb3VwIGFyZSAncXVpY2sgY29uZmlkZW5jZSBjaGVjayddCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgyKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgzKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCI1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNS43NSIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzLjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCI5LjA1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNSIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIi04Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTciKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi41IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTQuNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQwMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNyIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI1IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjUiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjUwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDAwOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yMzQ1Njc4OSIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwMDAwMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi4yMzQ1Njc4OSIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjIzNDU2Nzg5IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMDAwMTEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjIzNDU2ODAwIik7CisgIAorICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDExIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDQiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41NTU1NTU1NTU1IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMDAwMCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDEyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41NTU1NTU1NTU1IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMDAwMCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDQiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41NTU1NTU1NTUwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45OTk5OTk5OTkiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDAxNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC40NDQ0NDQ0NDQ0OTk5IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQ0NDQ0NDQ0NCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDE1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDUwMDAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDQ0NDQ0NDQ1Iik7CisgIAorICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDE2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MCIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDAwMDBFKzEzIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQwMTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMCIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDAwMDBFKzEzIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQwMTgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAwMDAwRSsxMyIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDE5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAwMCIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDAwMDFFKzEzIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQwMjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwMCIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDAwMDdFKzEzIik7CisgIAorICAKKyAgLy8gW05vdyB0aGUgc2FtZSBncm91cCB3aXRoIGZpeGVkIGFyaXRobWV0aWNdCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDAzMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgyKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgzKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDAzMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNS43NSIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5LjA1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDAzMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDMzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNSIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIi04Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDAzNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTciKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi41IikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTQuNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQwMzUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNyIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDM2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI1IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjUwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDAzNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yMzQ1Njc4OSIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMi4yMzQ1Njc4OSIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDM4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjIzNDU2Nzg5IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMDAwMTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjIzNDU2ODAwIik7CisgIAorICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDM5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDQiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41NTU1NTU1NTU1IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45OTk5OTk5OTk5Iik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQwNDAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNDQ0NDQ0NDQ0MCIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjU1NTU1NTU1NTUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk5OTk5OTk5OTUiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDA0MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC40NDQ0NDQ0NDQ0IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTU1NTU1NTU1MCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTk5OTk5OTk5NCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDQyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDQ5OTkiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDQ0NDQ0NDQ0NDk5OSIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDQzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDUwMDAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDQ0NDQ0NDQ0NTAwMCIpOworICAKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDA0NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNzAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAwMDAwMDA3MCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDQ1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAwMDAwMDcwMCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDQ2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAwIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwMDAwMDcwMDAiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDA0NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNzAwMDAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAwMDA3MDAwMCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDQ4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAwMDAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAwMDcwMDAwMCIpOworICAKKyAgCisgIC8vIHN5bW1ldHJ5OgorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQwNDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMDAwMEUrMTMiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDA1MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNzAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMDAwMEUrMTMiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDA1MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNzAwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDAwMDBFKzEzIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQwNTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMDAwMUUrMTMiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDA1MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNzAwMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMDAwN0UrMTMiKTsKKyAgCisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQwNTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwMDAwMDAwNzAiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDA1NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNzAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwMDAwMDA3MDAiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDA1NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNzAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAwMDAwMDA3MDAwIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQwNTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwMDAwNzAwMDAiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDA1OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNzAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwMDA3MDAwMDAiKTsKKyAgCisgIC8vIHNvbWUgcm91bmRpbmcgZWZmZWN0cworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQwNTkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuOTk5OCIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk5OTgiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDA2MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC45OTk4IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTk5OSIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDYxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjk5OTgiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDAyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQwNjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuOTk5OCIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDEiKTsKKyAgCisgIAorICAvLyBNQworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQwNzAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIiksbWNmZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAwMDA3MDAwMCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDcxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDAwMDFFKzEzIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQwNzIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIiksbWM2KS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDBFKzEzIik7CisgIAorICAKKyAgLy8gemVybyBwcmVzZXJ2YXRpb24KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDgwIikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDAxIiksbWM2KS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMSIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDgxIikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDAwMSIpLG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAxIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQwODIiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDAwMSIpLG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAwIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQwODMiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDAwMDEiKSxtYzYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDg0IikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDAwMDAwMSIpLG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAwIik7CisgIAorICAKKyAgLy8gbW9yZSBmaXhlZCwgTEhTIHN3YXBzCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDA5MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS0xMCIpKS5hZGQoemVybykudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4wMDAwMDU2MjY3Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDA5MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS02IikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjA1NjI2NyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQwOTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtNSIpKS5hZGQoemVybykudG9TdHJpbmcoKSkuZXF1YWxzKCItMC41NjI2NyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQwOTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtNCIpKS5hZGQoemVybykudG9TdHJpbmcoKSkuZXF1YWxzKCItNS42MjY3Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDA5NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS0zIikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi01Ni4yNjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMDk1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTIiKSkuYWRkKHplcm8pLnRvU3RyaW5nKCkpLmVxdWFscygiLTU2Mi42NyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQwOTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMSIpKS5hZGQoemVybykudG9TdHJpbmcoKSkuZXF1YWxzKCItNTYyNi43Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDA5NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS0wIikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi01NjI2NyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQwOTgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01RS0xMCIpKS5hZGQoemVybykudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4wMDAwMDAwMDA1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDA5OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTVFLTUiKSkuYWRkKHplcm8pLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMDAwMDUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTAwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNUUtMSIpKS5hZGQoemVybykudG9TdHJpbmcoKSkuZXF1YWxzKCItMC41Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDEwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTVFLTEwIikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjAwMDAwMDAwMDUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNUUtNSIpKS5hZGQoemVybykudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4wMDAwNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQxMDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01RS0xIikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNUUxMCIpKS5hZGQoemVybykudG9TdHJpbmcoKSkuZXF1YWxzKCItNTAwMDAwMDAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNUU1IikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi01MDAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTA2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNUUxIikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi01MCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQxMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01RTAiKSkuYWRkKHplcm8pLnRvU3RyaW5nKCkpLmVxdWFscygiLTUiKTsKKyAgCisgIC8vIG1vcmUgZml4ZWQsIFJIUyBzd2FwcworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQxMDgiKSkub2s9KHplcm8uYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS0xMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjAwMDAwNTYyNjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTA5IikpLm9rPSh6ZXJvLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtNiIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjA1NjI2NyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQxMTAiKSkub2s9KHplcm8uYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS01IikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuNTYyNjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTExIikpLm9rPSh6ZXJvLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtNCIpKS50b1N0cmluZygpKS5lcXVhbHMoIi01LjYyNjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTEyIikpLm9rPSh6ZXJvLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIi01Ni4yNjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTEzIikpLm9rPSh6ZXJvLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIi01NjIuNjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTE0IikpLm9rPSh6ZXJvLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIi01NjI2LjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTE1IikpLm9rPSh6ZXJvLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIi01NjI2NyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQxMTYiKSkub2s9KHplcm8uYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTVFLTEwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMDAwMDAwMDAwNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQxMTciKSkub2s9KHplcm8uYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTVFLTUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4wMDAwNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQxMTgiKSkub2s9KHplcm8uYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTVFLTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC41Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDEyOSIpKS5vaz0oemVyby5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNUUtMTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4wMDAwMDAwMDA1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDEzMCIpKS5vaz0oemVyby5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNUUtNSIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjAwMDA1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDEzMSIpKS5vaz0oemVyby5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNUUtMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTMyIikpLm9rPSh6ZXJvLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01RTEwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTUwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDEzMyIpKS5vaz0oemVyby5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNUU1IikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTUwMDAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQxMzQiKSkub2s9KHplcm8uYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTVFMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIi01MCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQxMzUiKSkub2s9KHplcm8uYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTVFMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIi01Iik7CisgIAorICAvLyBbc29tZSBvZiB0aGUgbmV4dCBncm91cCBhcmUgcmVhbGx5IGNvbnN0cnVjdG9yIHRlc3RzXQorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQxNDAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTQxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDE0MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjMuMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQxNDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMuIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMy4zIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDE0NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMy4wIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMy4zIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDE0NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMy4wMCIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjMuMzAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTQ2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCI2Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDE0NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjYiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTQ4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQxNDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDMiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMDMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQxNTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTUxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDE1MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjMuMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQxNTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMuIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMy4zIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDE1NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMy4wIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMy4zIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDE1NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMy4wMCIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjMuMzAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTU2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI2Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDE1NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjYiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTU4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQxNTkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDE2MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMyIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4wMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTYxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3RSsxMiIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpLG1jZmQpLnRvU3RyaW5nKCkpLmVxdWFscygiNjk5OTk5OTk5OTk5OSIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTYyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3RSsxMiIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjExIiksbWNmZCkudG9TdHJpbmcoKSkuZXF1YWxzKCI3MDAwMDAwMDAwMDAxLjExIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQxNjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMTEiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiN0UrMTIiKSxtY2ZkKS50b1N0cmluZygpKS5lcXVhbHMoIjcwMDAwMDAwMDAwMDEuMTEiKTsKKyAgCisgIAorICAvLyBpbnB1dCBwcmVwYXJhdGlvbiB0ZXN0cworICBhbGhzPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5MDAwMDAiKTsKKyAgYXJocz1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5OTk5OTk5OTkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTcwIikpLm9rPShhbGhzLmFkZChhcmhzLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjIzRSsxMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQxNzEiKSkub2s9KGFyaHMuYWRkKGFsaHMsbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIjIuMjNFKzEzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDE3MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTJFKzMiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMzQ1NiIpLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjU1RSs0Iik7CisgIC8vIG5leHQgd2FzIDEuNTRFKzQgdW5kZXIgb2xkIFt0cnVuY2F0ZSB0byBkaWdpdHMrMV0gcnVsZXMKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTczIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMkUrMyIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzNDQ2IiksbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNTVFKzQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTc0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMkUrMyIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzNDU0IiksbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNTVFKzQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTc1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMkUrMyIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzNDQ0IiksbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNTRFKzQiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDE3NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMzQ1NiIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMkUrMyIpLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjU1RSs0Iik7CisgIC8vIG5leHQgd2FzIDEuNTRFKzQgdW5kZXIgb2xkIFt0cnVuY2F0ZSB0byBkaWdpdHMrMV0gcnVsZXMKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTc3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzNDQ2IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyRSszIiksbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNTVFKzQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTc4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzNDU0IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyRSszIiksbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNTVFKzQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMTc5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzNDQ0IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyRSszIiksbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNTRFKzQiKTsKKyAgCisgIHt0cnl7Y2hlY2tudWxsOmRveworICAgdGVuLmFkZCgoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkMjIpeworICAgZmxhZz10cnVlOworICB9fS8qY2hlY2tudWxsKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMjAwIikpLm9rPWZsYWc7CisgIHt0cnl7Y2hlY2tudWxsMjpkb3sKKyAgIHRlbi5hZGQodGVuLChjb20uaWJtLm1hdGguTWF0aENvbnRleHQpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkMjMpeworICAgZmxhZz10cnVlOworICB9fS8qY2hlY2tudWxsMiovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDIwMSIpKS5vaz1mbGFnOworICAKKyAge3RyeXtjaGVja2RpZ2l0czpkb3sKKyAgIHRlbmxvbmcuYWRkKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLlpFUk8sbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQyNCl7YWU9JDI0OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9fS8qY2hlY2tkaWdpdHMqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQyMDIiKSkub2s9ZmxhZzsKKyAge3RyeXtjaGVja2RpZ2l0czpkb3sKKyAgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLlpFUk8uYWRkKHRlbmxvbmcsbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQyNSl7YWU9JDI1OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9fS8qY2hlY2tkaWdpdHMqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJhZGQyMDMiKSkub2s9ZmxhZzsKKyAgCisgIC8vIGNoZWNrIGxvc3RkaWdpdHMgbm90IHJhaXNlZCBpZiBkaWdpdHM9MCBbZHlhZGljIG1ldGhvZF0KKyAge3RyeXtjaGVja2RpZ2l0czpkb3sKKyAgIHRlbmxvbmcuYWRkKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLlpFUk8sbWNsZDApOworICAgZmxhZz10cnVlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQyNil7YWU9JDI2OworICAgZmxhZz1mYWxzZTsKKyAgfX0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYWRkMjA0IikpLm9rPWZsYWc7CisgIHt0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5aRVJPLmFkZCh0ZW5sb25nLG1jbGQwKTsKKyAgIGZsYWc9dHJ1ZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMjcpe2FlPSQyNzsKKyAgIGZsYWc9ZmFsc2U7CisgIH19LypjaGVja2RpZ2l0cyovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImFkZDIwNSIpKS5vaz1mbGFnOworICAKKyAgc3VtbWFyeSgiYWRkIik7CisgIHJldHVybjt9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNjb21wYXJlVG8oQmlnRGVjaW1hbCl9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnY29tcGFyZXRvKCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgLy8gd2UgYXNzdW1lIGFkZC9zdWJ0cmFjdCB0ZXN0IGZ1bmN0aW9uOyB0aGlzIGp1c3QKKyAgLy8gdGVzdHMgZXhpc3RlbmNlLCBleGNlcHRpb25zLCBhbmQgcG9zc2libGUgcmVzdWx0cworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3B0MDAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLmNvbXBhcmVUbyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkpPT0xOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjcHQwMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkuY29tcGFyZVRvKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKSk9PTA7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNwdDAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5jb21wYXJlVG8obmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1LjAwIikpKT09MDsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3B0MDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkuY29tcGFyZVRvKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41IikpKT09MDsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3B0MDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLmNvbXBhcmVUbyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkpPT0oLTEpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjcHQwMDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuY29tcGFyZVRvKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpLG1jZGVmKSk9PSgtMSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNwdDAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5jb21wYXJlVG8obmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IiksbWM2KSk9PSgtMSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNwdDAwOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5jb21wYXJlVG8obmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IiksbWNmZCkpPT0oLTEpOworICB7dHJ5e2NoZWNrbnVsbDpkb3sKKyAgIHRlbi5jb21wYXJlVG8oKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDI4KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfX0vKmNoZWNrbnVsbCovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNwdDEwMCIpKS5vaz1mbGFnOworICB7dHJ5e2NoZWNrbnVsbDI6ZG97CisgICB0ZW4uY29tcGFyZVRvKHRlbiwoY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDI5KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfX0vKmNoZWNrbnVsbDIqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjcHQxMDEiKSkub2s9ZmxhZzsKKyAgCisgIHt0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICB0ZW5sb25nLmNvbXBhcmVUbyhjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUsbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQzMCl7YWU9JDMwOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9fS8qY2hlY2tkaWdpdHMqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjcHQxMDIiKSkub2s9ZmxhZzsKKyAge3RyeXtjaGVja2RpZ2l0czpkb3sKKyAgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORS5jb21wYXJlVG8odGVubG9uZyxtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDMxKXthZT0kMzE7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH19LypjaGVja2RpZ2l0cyovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImNwdDEwMyIpKS5vaz1mbGFnOworICAKKyAgc3VtbWFyeSgiY29tcGFyZVRvIik7CisgIHJldHVybjt9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNkaXZpZGV9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnZGl2aWRlKCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IHJtY2Q7CisgIGludCByaHU7CisgIGludCByZDsKKyAgaW50IHJ1OworICBqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiBlPW51bGw7CisgIGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uIGFlPW51bGw7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYzMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMzMzMzMzMzMzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjMwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC42NjY2NjY2NjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYzMDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIi0yLjQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMi40IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCItMi40Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjMwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTIuNCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYzMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYzMDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzA5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYzMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzExIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLiIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYzMTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYzMTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjE4NyIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxODciKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjMxNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi41Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjMxNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzE2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi41Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjMxNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjIwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjI1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjMxOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCI5OTk5OTk5OTkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzE5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTk5OTkuNCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiOTk5OTk5OTk5Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjMyMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5LjUiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjFFKzkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzIxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTk5OTkuOSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrOSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYzMjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5OTk5OS45OTkiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjFFKzkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzIzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDBFLTUwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIC8vIE1DCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjMyNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCI5OTk5OTk5OTkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzI2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTk5OTkiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjMyNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIiksbWM2KS50b1N0cmluZygpKS5lcXVhbHMoIjFFKzciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzI4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTkiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCI5OTk5OTkiKTsKKyAgCisgIC8vIGNoZWNrIHJvdW5kaW5nIGV4cGxpY2l0bHkgW25vdGU6IGRpZ2l0cysxIHRydW5jYXRpb25dCisgIHJtY2Q9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDLGZhbHNlLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9DRUlMSU5HKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzMwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjUwIikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzMxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjUxIikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjYiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzMyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjU1IikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjYiKTsKKyAgcm1jZD1uZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlNDSUVOVElGSUMsZmFsc2UsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0RPV04pOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYzMzMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuNTUiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYzMzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuNTkiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNSIpOworICBybWNkPW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQyxmYWxzZSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRkxPT1IpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYzMzUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuNTUiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYzMzYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuNTkiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNSIpOworICBybWNkPW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQyxmYWxzZSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzM3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjQ1IikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzM4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjUwIikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzM5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjU1IikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjUiKTsKKyAgcm1jZD1uZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlNDSUVOVElGSUMsZmFsc2UsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjM0MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS40NSIpKS5kaXZpZGUob25lLHJtY2QpLnRvU3RyaW5nKCkpLmVxdWFscygiMS40Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjM0MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS41MCIpKS5kaXZpZGUob25lLHJtY2QpLnRvU3RyaW5nKCkpLmVxdWFscygiMS41Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjM0MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS41NSIpKS5kaXZpZGUob25lLHJtY2QpLnRvU3RyaW5nKCkpLmVxdWFscygiMS42Iik7CisgIHJtY2Q9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDLGZhbHNlLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzQzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjQ1IikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzQ0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjUwIikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzQ1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjU1IikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjYiKTsKKyAgcm1jZD1uZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlNDSUVOVElGSUMsZmFsc2UsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VQKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzQ2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjUwIikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzQ3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjUxIikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjYiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzQ4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjU1IikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjYiKTsKKyAgCisgIC8vIGZpeGVkIHBvaW50Li4uCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjM1MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYzNTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzUyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYzNTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0yLjQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzU0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMi40IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMi40Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjM1NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTIuNCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYzNTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzU3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQwMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMi40MDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzU4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYzNTkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjIwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYzNjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjM2MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMjAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjM2MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTg3IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjE4NyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzYzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjM2NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjM2NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzY2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMjAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzY3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1LjAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYzNjgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzY5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1LjAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi4wMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzcwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1LjAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4yMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyNS4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjM3MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5OTk5OTk5OTkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzcyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTk5OTkuNCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTk5OTk5OTk5LjQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MzczIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTk5OTkuNSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTk5OTk5OTk5LjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2Mzc0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTk5OTkuOSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTk5OTk5OTk5LjkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2Mzc1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTk5OTkuOTk5IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5OTk5OTk5OTkuOTk5Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjM3NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDAwRS01IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjM3NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDAwMDAwMDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwMDAwIik7CisgIAorICAvLy0gRml4ZWQgcG9pbnQ7IGV4cGxpY2l0IHNjYWxlcyAmIHJvdW5kcyBbb2xkIEJpZ0RlY2ltYWwgZGl2aWRlc10KKyAgcmh1PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQOworICByZD1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRE9XTjsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSwwLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIiksMSxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjAwNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIiksMixyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYwMDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLDMscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjAwOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYwMDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIiksMCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYwMTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLDEscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYwMTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLDIscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMzMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSwzLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMzMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYwMTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLDQscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMzMzMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYwMTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDE2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYwMTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLDAscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDE4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSwxLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDE5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSwyLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjY3Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjAyMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIiksMyxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC42NjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDIxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjY2NjciKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjAzMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyMDAwIiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41MDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjAzMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyMDAwIiksMyxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41MDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDMyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIwMDAiKSwyLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjUwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjAzMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyMDAwIiksMSxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjAzNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyMDAwIiksMCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDM1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNTAwMCIpLDQscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDIwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYwMzYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1MDAwIiksMyxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDM3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNTAwMCIpLDIscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDM4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNTAwMCIpLDEscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYwMzkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1MDAwIiksMCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDQwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OTk5IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuNzc3Nzc3NzciKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAyMjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDQxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OTkiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3Nzc3IiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMjI3Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjA0MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTkiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3NzciKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAyMjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDQzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljc3Nzc3Nzc3IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuOTk5OTk5OTkiKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk3NzgiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDQ0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljc3Nzc3NzciKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTk5IiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45Nzc4Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjA0NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3NzciKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTkiKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk3NzgiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDQ2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljc3Nzc3IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuOTk5OTkiKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk3NzgiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDQ3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljc3NzciKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5IiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45Nzc4Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjA0OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS43NzciKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTkiKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk3NzgiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDQ5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljc3IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuOTkiKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk3ODAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDUwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5LjciKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45IiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45Nzk4Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjA1MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS4iKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS4iKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjA2MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTk5OSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljc3Nzc3Nzc3Iikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDIyNzI3MjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDYxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OTkiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3Nzc3Iikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDIyNzI3MyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYwNjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuOTk5OTk5IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuNzc3Nzc3Iikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDIyNzI3Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjA2MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3Nzc3NyIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OTk5Iikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTc3Nzc3NzgiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDY0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljc3Nzc3NzciKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTk5Iikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTc3Nzc3OCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYwNjUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuNzc3Nzc3IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuOTk5OTk5Iikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTc3Nzc4Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjA2NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3NyIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5Iikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTc3NzgiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDY3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljc3NzciKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5Iikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTc3OCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYwNjgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuNzc3IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuOTk5Iikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTc4Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjA2OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS43NyIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljk5Iikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTgiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDcwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5LjciKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45Iikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjEuMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYwNzEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuIikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgCisgIHJkPWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9ET1dOOyAvLyB0ZXN0IHRoaXMgaXMgYWN0dWFsbHkgYmVpbmcgdXNlZAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYwODAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLDAscmQpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYwODEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLDEscmQpLnRvU3RyaW5nKCkpLmVxdWFscygiMC42Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjA4MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIiksMixyZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjY2Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjA4MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIiksMyxyZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjY2NiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYwODQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLDQscmQpLnRvU3RyaW5nKCkpLmVxdWFscygiMC42NjY2Iik7CisgIAorICBydT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVU5ORUNFU1NBUlk7IC8vIGNoZWNrIGZvciBzb21lIDAgcmVzaWR1ZXMKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDkwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSw0LHJ1KS50b1N0cmluZygpKS5lcXVhbHMoIjIwMC4wMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjA5MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1MCIpLDQscnUpLnRvU3RyaW5nKCkpLmVxdWFscygiMjAuMDAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYwOTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNTAwIiksNCxydSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDkzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUwMDAiKSw0LHJ1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMjAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYwOTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNTAwMCIpLDMscnUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDk1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUwMDAiKSwyLHJ1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MDk2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUwMDAiKSwxLHJ1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMiIpOworICAKKyAgLy8gY2hlY2sgcm91bmRpbmcgZXhwbGljaXRseQorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYxMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfQ0VJTElORykudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjA2Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjEwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNTUiKSkuZGl2aWRlKG9uZSwxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9DRUlMSU5HKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYxMDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfQ0VJTElORykudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjEwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNTUiKSkuZGl2aWRlKG9uZSwyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MTA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1NSIpKS5kaXZpZGUob25lLDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjEwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNTUiKSkuZGl2aWRlKG9uZSwwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MTA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1NSIpKS5kaXZpZGUob25lLDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0ZMT09SKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MTA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1NSIpKS5kaXZpZGUob25lLDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0ZMT09SKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYxMDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRkxPT1IpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MTEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA0NSIpKS5kaXZpZGUob25lLDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjA0Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjExMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNDUiKSkuZGl2aWRlKG9uZSwxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjExMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNDUiKSkuZGl2aWRlKG9uZSwwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYxMTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDUwIikpLmRpdmlkZShvbmUsMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MTE0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1MCIpKS5kaXZpZGUob25lLDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MTE1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1MCIpKS5kaXZpZGUob25lLDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjExNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNTUiKSkuZGl2aWRlKG9uZSwyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYxMTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYxMTgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjEyMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNDUiKSkuZGl2aWRlKG9uZSwyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wNCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYxMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDQ1IikpLmRpdmlkZShvbmUsMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYxMjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDQ1IikpLmRpdmlkZShvbmUsMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MTIzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1MCIpKS5kaXZpZGUob25lLDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjA1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjEyNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNTAiKSkuZGl2aWRlKG9uZSwxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjEyNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNTAiKSkuZGl2aWRlKG9uZSwwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYxMjYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTUwIikpLmRpdmlkZShvbmUsMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MTI3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjE1MCIpKS5kaXZpZGUob25lLDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MTI4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjE1MCIpKS5kaXZpZGUob25lLDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjEyOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNTUiKSkuZGl2aWRlKG9uZSwyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wNiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYxMzAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYxMzEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjE0MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNDUiKSkuZGl2aWRlKG9uZSwyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MTQxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA0NSIpKS5kaXZpZGUob25lLDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjE0MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNDUiKSkuZGl2aWRlKG9uZSwwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MTQzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1MCIpKS5kaXZpZGUob25lLDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYxNDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDUwIikpLmRpdmlkZShvbmUsMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MTQ1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1MCIpKS5kaXZpZGUob25lLDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYxNDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjA2Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjE0NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNTUiKSkuZGl2aWRlKG9uZSwxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYxNDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYxNTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wNiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYxNTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjUyLiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNTUiKSkuZGl2aWRlKG9uZSwwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIAorICAvLy0gZXJyb3IgY29uZGl0aW9ucyAtLS0KKyAge3RyeXtjaGVja251bGw6ZG97CisgICB0ZW4uZGl2aWRlKChjb20uaWJtLm1hdGguQmlnRGVjaW1hbCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQzMil7CisgICBmbGFnPXRydWU7CisgIH19LypjaGVja251bGwqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYyMDEiKSkub2s9ZmxhZzsKKyAge3RyeXtjaGVja251bGwyOmRveworICAgdGVuLmRpdmlkZSh0ZW4sKGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQzMyl7CisgICBmbGFnPXRydWU7CisgIH19LypjaGVja251bGwyKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MjAyIikpLm9rPWZsYWc7CisgIAorICB7dHJ5e2NoZWNrc2NhbGU6ZG97CisgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSwtOCwwKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24gJDM0KXtlPSQzNDsKKyAgIGZsYWc9ZmxhZyYoZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiTmVnYXRpdmUgc2NhbGU6IC04Iik7CisgIH19LypjaGVja3NjYWxlKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MjAzIikpLm9rPWZsYWc7CisgIAorICB7dHJ5e3JvdW5uOmRveworICAgKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1MDAwIiksMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVU5ORUNFU1NBUlkpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMzUpe2FlPSQzNTsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJSb3VuZGluZyBuZWNlc3NhcnkiKTsKKyAgfX0vKnJvdW5uKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MjA0IikpLm9rPWZsYWc7CisgIHt0cnl7cm91bm46ZG97CisgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAxIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIiksMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVU5ORUNFU1NBUlkpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMzYpe2FlPSQzNjsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJSb3VuZGluZyBuZWNlc3NhcnkiKTsKKyAgfX0vKnJvdW5uKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MjA1IikpLm9rPWZsYWc7CisgIHt0cnl7cm91bm46ZG97CisgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAxIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMCIpLDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDM3KXthZT0kMzc7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiUm91bmRpbmcgbmVjZXNzYXJ5Iik7CisgIH19Lypyb3VubiovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRpdjIwNiIpKS5vaz1mbGFnOworICB7dHJ5e3JvdW5uOmRveworICAgKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDEiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDAiKSwxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWSk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQzOCl7YWU9JDM4OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlJvdW5kaW5nIG5lY2Vzc2FyeSIpOworICB9fS8qcm91bm4qLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYyMDciKSkub2s9ZmxhZzsKKyAge3RyeXtyb3Vubjpkb3sKKyAgIChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIiksMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVU5ORUNFU1NBUlkpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMzkpe2FlPSQzOTsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJSb3VuZGluZyBuZWNlc3NhcnkiKTsKKyAgfX0vKnJvdW5uKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MjA4IikpLm9rPWZsYWc7CisgIAorICB7dHJ5e2RpdjA6ZG97CisgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAiKSk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ0MCl7YWU9JDQwOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkRpdmlkZSBieSAwIik7CisgIH19LypkaXYwKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MjA5IikpLm9rPWZsYWc7CisgIAorICB7dHJ5e2NoZWNrZGlnaXRzOmRveworICAgdGVubG9uZy5kaXZpZGUoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNDEpe2FlPSQ0MTsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfX0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZGl2MjEwIikpLm9rPWZsYWc7CisgIHt0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUuZGl2aWRlKHRlbmxvbmcsbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ0Mil7YWU9JDQyOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9fS8qY2hlY2tkaWdpdHMqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkaXYyMTEiKSkub2s9ZmxhZzsKKyAgCisgIHN1bW1hcnkoImRpdmlkZSIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjZGl2aWRlSW50ZWdlcn0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdkaXZpZGVJbnRlZ2VyKCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImR2STAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAxLjMiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZHZJMDAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDEuMCIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkdkkwMDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMS4zIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMzMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZHZJMDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDEuMCIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjMzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImR2STAwNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi40IikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkdkkwMDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAwIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkdkkwMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjE4IikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxOCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZHZJMDA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMTIwIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkdkkwMDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNCIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZHZJMDEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQwMCIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZHZJMDExIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkdkkwMTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjguMDA1IikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkdkkwMTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImR2STAxNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZHZJMDE1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAvLyBNQworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkdkkwMTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2UpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkdkkwMTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtYzYpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAKKyAgLy8gRml4ZWQgLS0KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZHZJMDIxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDEuMyIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkdkkwMjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMS4wIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImR2STAyMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAxLjMiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkdkkwMjQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMS4wIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMzMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZHZJMDI1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImR2STAyNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi40MDAiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImR2STAyNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTgiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjE4IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkdkkwMjgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjExMjAiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImR2STAyOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi40IikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkdkkwMzAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAwIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkdkkwMzEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNSIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi4wMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImR2STAzMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOC4wMDUiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjciKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImR2STAzMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZHZJMDM0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkdkkwMzUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICB7dHJ5e2NoZWNrbnVsbDpkb3sKKyAgIHRlbi5kaXZpZGVJbnRlZ2VyKChjb20uaWJtLm1hdGguQmlnRGVjaW1hbCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ0Myl7CisgICBmbGFnPXRydWU7CisgIH19LypjaGVja251bGwqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkdkkxMDEiKSkub2s9ZmxhZzsKKyAge3RyeXtjaGVja251bGwyOmRveworICAgdGVuLmRpdmlkZUludGVnZXIodGVuLChjb20uaWJtLm1hdGguTWF0aENvbnRleHQpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkNDQpeworICAgZmxhZz10cnVlOworICB9fS8qY2hlY2tudWxsMiovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImR2STEwMiIpKS5vaz1mbGFnOworICAKKyAge3RyeXtjaGVja2RpZ2l0czpkb3sKKyAgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORS5kaXZpZGVJbnRlZ2VyKHRlbmxvbmcsbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ0NSl7YWU9JDQ1OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9fS8qY2hlY2tkaWdpdHMqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkdkkxMDMiKSkub2s9ZmxhZzsKKyAgCisgIHt0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICB0ZW5sb25nLmRpdmlkZUludGVnZXIoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNDYpe2FlPSQ0NjsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfX0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZHZJMTA0IikpLm9rPWZsYWc7CisgIAorICBzdW1tYXJ5KCJkaXZpZGVJbnRlZ2VyIik7CisgIHJldHVybjt9CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNtYXh9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnbWF4KCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgCisgIC8vIHdlIGFzc3VtZSBhZGQvc3VidHJhY3QgdGVzdCBmdW5jdGlvbjsgdGhpcyBhbmQgbWluIGp1c3QKKyAgLy8gdGVzdCBleGlzdGVuY2UgYW5kIHRlc3QgdGhlIHRydXRoIHRhYmxlCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1heDAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5tYXgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtYXgwMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkubWF4KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibWF4MDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLm1heChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjciKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI3Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1heDAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5tYXgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiNyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtYXgwMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkubWF4KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNyIpLG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCI3Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1heDAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMkUrMyIpKS5tYXgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMjAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtYXgwMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjJFKzMiKSkubWF4KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNyIpLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCIyRSszIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1heDAwOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNyIpKS5tYXgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyRSszIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMjAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtYXgwMDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjciKSkubWF4KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMkUrMyIpLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCIyRSszIik7CisgIHt0cnl7Y2hlY2tudWxsOmRveworICAgdGVuLm1heCgoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkNDcpeworICAgZmxhZz10cnVlOworICB9fS8qY2hlY2tudWxsKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibWF4MDEwIikpLm9rPWZsYWc7CisgIHt0cnl7Y2hlY2tudWxsMjpkb3sKKyAgIHRlbi5tYXgodGVuLChjb20uaWJtLm1hdGguTWF0aENvbnRleHQpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkNDgpeworICAgZmxhZz10cnVlOworICB9fS8qY2hlY2tudWxsMiovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1heDAxMSIpKS5vaz1mbGFnOworICB7dHJ5e2NoZWNrZGlnaXRzOmRveworICAgdGVubG9uZy5tYXgoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNDkpe2FlPSQ0OTsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfX0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibWF4MDEyIikpLm9rPWZsYWc7CisgIHt0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUubWF4KHRlbmxvbmcsbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ1MCl7YWU9JDUwOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9fS8qY2hlY2tkaWdpdHMqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtYXgwMTMiKSkub2s9ZmxhZzsKKyAgc3VtbWFyeSgibWF4Iik7CisgIHJldHVybjt9CisKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjbWlufSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ21pbigpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIG1pbng9bnVsbDsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgLy8gd2UgYXNzdW1lIGFkZC9zdWJ0cmFjdCB0ZXN0IGZ1bmN0aW9uOyB0aGlzIGFuZCBtYXgganVzdAorICAvLyB0ZXN0IGV4aXN0ZW5jZSBhbmQgdGVzdCB0aGUgdHJ1dGggdGFibGUKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1pbjAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5taW4obmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtaW4wMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkubWluKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibWluMDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLm1pbihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjciKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1pbjAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5taW4obmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtaW4wMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkubWluKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNyIpLG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1pbjAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTJFKzMiKSkubWluKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNyIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0yMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1pbjAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTJFKzMiKSkubWluKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNyIpLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCItMkUrMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtaW4wMDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjciKSkubWluKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTJFKzMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMjAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtaW4wMDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjciKSkubWluKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTJFKzMiKSxtYzMpLnRvU3RyaW5nKCkpLmVxdWFscygiLTJFKzMiKTsKKyAge3RyeXtjaGVja251bGw6ZG97CisgICBtaW54PXRlbjsKKyAgIG1pbngubWluKChjb20uaWJtLm1hdGguQmlnRGVjaW1hbCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ1MSl7CisgICBmbGFnPXRydWU7CisgIH19LypjaGVja251bGwqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtaW4wMTAiKSkub2s9ZmxhZzsKKyAge3RyeXtjaGVja251bGwyOmRveworICAgbWlueD10ZW47CisgICBtaW54Lm1pbih0ZW4sKGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ1Mil7CisgICBmbGFnPXRydWU7CisgIH19LypjaGVja251bGwyKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibWluMDExIikpLm9rPWZsYWc7CisgIAorICB7dHJ5e2NoZWNrZGlnaXRzOmRveworICAgdGVubG9uZy5taW4oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNTMpe2FlPSQ1MzsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfX0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibWluMDEyIikpLm9rPWZsYWc7CisgIHt0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDkpKS5taW4odGVubG9uZyxtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDU0KXthZT0kNTQ7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH19LypjaGVja2RpZ2l0cyovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1pbjAxMyIpKS5vaz1mbGFnOworICBzdW1tYXJ5KCJtaW4iKTsKKyAgcmV0dXJuO30KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI211bHRpcGx5fSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ211bHRpcGx5KCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgbDk7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGw3N2U7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGwxMjM0NTsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgZWRnZTsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgdGVuZWRnZTsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgaHVuZWRnZTsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgb3BvOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkMT1udWxsOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkMj1udWxsOworICBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiBvZT1udWxsOworICBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiBhZT1udWxsOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjYiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjQwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDAwNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIuNDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMS4yMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCItMi40MCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwMDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjIwIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDA5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMS4yMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi40MCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuMDkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3LjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIzNi4xMzkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDExIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjUiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI0IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAuMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwMTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNTAiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI0IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjIzNDU2Nzg5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wMDAwMDAwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjM0NTY3ODkiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDAxNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTk5OTkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OTk5OSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMC4wMDAwMDAiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDAxNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi41MCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjQiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxMC4wMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwMTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNTAiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI0IiksbWM2KS50b1N0cmluZygpKS5lcXVhbHMoIjEwLjAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDAxNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTk5OTkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OTk5OSIpLG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAuMDAwIik7CisgIAorICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDIwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjYiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDIxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDIyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDAyMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjQwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDAyNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDAyNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIuNDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDI2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMS4yMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMi40MCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwMjciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjIwIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDI4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMS4yMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMi40MCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwMjkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuMDkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3LjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzNi4xMzkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDMwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjUiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI0IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAuMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwMzEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNTAiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI0IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDMyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjIzNDU2Nzg5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjM0NTY3ODkwMDAwMDAwMCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDMzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0LjU2Nzg5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEwMDAuMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMTIzNDU2Ny44OTAwMDAwMDAwIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwMzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xMjM0LjU2Nzg5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMC4wMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMjM0NTY3Ljg5MDAwMDAwMDAiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDAzNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTk5OTkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OTk5OSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjk5Ljk5OTk5OTk4MDAwMDAwMDAwMSIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDM2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1LjAwIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMUUtMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDA1MDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDM3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMC4wMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwMzgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAwIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMEUtMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsgLy8gcmhzIGlzICcwJworICAvLyAxOTk5LjEyLjIxOiBuZXh0IG9uZSBpcyBhIGVkZ2UgY2FzZSBpZiBpbnRlcm1lZGlhdGUgbG9uZ3MgYXJlIHVzZWQKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDM5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTk5OTk5OTkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5NzY1NjI1IikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTc2NTYyNDk5OTk5MDIzNDM3NSIpOworICAKKyAgbDk9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NTY3ODlFKzEwIik7CisgIGw3N2U9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3N0UtMjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDQwIikpLm9rPShsOS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjM0NTY3NTciKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI0MjY3NjAxMTk1NzMyNzMwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDA0MSIpKS5vaz0obDkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzNDU2NzU3IiksbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIjQuMjZFKzI0Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDA0MiIpKS5vaz0obDkubXVsdGlwbHkobDc3ZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk1MDYxNzI3NTMwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDA0MyIpKS5vaz0obDkubXVsdGlwbHkobDc3ZSxtYzMpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45NDciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDQ0IikpLm9rPShsNzdlLm11bHRpcGx5KGw5LG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk0NyIpOworICAKKyAgbDEyMzQ1PW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzLjQ1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDA1MCIpKS5vaz0obDEyMzQ1Lm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMWUxMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjM0NUUrMTMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDUxIikpLm9rPShsMTIzNDUubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxZTExIiksbWNzKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjM0NUUrMTMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDUyIikpLm9rPShsMTIzNDUubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxZSs5IiksbWNlKS50b1N0cmluZygpKS5lcXVhbHMoIjEyMy40NUUrOSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwNTMiKSkub2s9KGwxMjM0NS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFlMTAiKSxtY2UpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yMzQ1RSsxMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwNTQiKSkub2s9KGwxMjM0NS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFlMTEiKSxtY2UpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIuMzQ1RSsxMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwNTUiKSkub2s9KGwxMjM0NS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFlMTIiKSxtY2UpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzLjQ1RSsxMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwNTYiKSkub2s9KGwxMjM0NS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFlMTMiKSxtY2UpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yMzQ1RSsxNSIpOworICAKKyAgLy8gdGVzdCBzb21lIGNhc2VzIHRoYXQgYXJlIGNsb3NlIHRvIGV4cG9uZW50IG92ZXJmbG93CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDA2MCIpKS5vaz0ob25lLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOWU5OTk5OTk5OTkiKSxtY3MpLnRvU3RyaW5nKCkpLmVxdWFscygiOUUrOTk5OTk5OTk5Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDA2MSIpKS5vaz0ob25lLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45ZTk5OTk5OTk5OSIpLG1jcykudG9TdHJpbmcoKSkuZXF1YWxzKCI5LjlFKzk5OTk5OTk5OSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwNjIiKSkub2s9KG9uZS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuOTllOTk5OTk5OTk5IiksbWNzKS50b1N0cmluZygpKS5lcXVhbHMoIjkuOTlFKzk5OTk5OTk5OSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwNjMiKSkub2s9KHRlbi5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjllOTk5OTk5OTk5IiksbWNlKS50b1N0cmluZygpKS5lcXVhbHMoIjkwRSs5OTk5OTk5OTkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDY0IikpLm9rPSh0ZW4ubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5LjllOTk5OTk5OTk5IiksbWNlKS50b1N0cmluZygpKS5lcXVhbHMoIjk5LjBFKzk5OTk5OTk5OSIpOworICBlZGdlPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTllOTk5OTk5OTk5Iik7CisgIHRlbmVkZ2U9dGVuLm11bHRpcGx5KGVkZ2UsbWNlKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDY1IikpLm9rPSh0ZW5lZGdlLnRvU3RyaW5nKCkpLmVxdWFscygiOTkuOTkwRSs5OTk5OTk5OTkiKTsKKyAgaHVuZWRnZT10ZW4ubXVsdGlwbHkodGVuZWRnZSxtY2UpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwNjYiKSkub2s9KGh1bmVkZ2UudG9TdHJpbmcoKSkuZXF1YWxzKCI5OTkuOTAwRSs5OTk5OTk5OTkiKTsKKyAgb3BvPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4xIik7IC8vIG9uZSB0ZW50aAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwNjciKSkub2s9KG9wby5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjllLTk5OTk5OTk5OCIpLG1jcykudG9TdHJpbmcoKSkuZXF1YWxzKCI5RS05OTk5OTk5OTkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDY4IikpLm9rPShvcG8ubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OWUtOTk5OTk5OTk4IiksbWNzKS50b1N0cmluZygpKS5lcXVhbHMoIjkuOUUtOTk5OTk5OTk4Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDA2OSIpKS5vaz0ob3BvLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5ZS05OTk5OTk5OTgiKSxtY3MpLnRvU3RyaW5nKCkpLmVxdWFscygiOS45OUUtOTk5OTk5OTk3Iik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwNzAiKSkub2s9KG9wby5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjllLTk5OTk5OTk5OCIpLG1jZSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5RS05OTk5OTk5OTkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDcxIikpLm9rPShvcG8ubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OWUtOTk5OTk5OTk4IiksbWNlKS50b1N0cmluZygpKS5lcXVhbHMoIjk5RS05OTk5OTk5OTkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDcyIikpLm9rPShvcG8ubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTllLTk5OTk5OTk5OCIpLG1jZSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5OTlFLTk5OTk5OTk5OSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwNzMiKSkub2s9KG9wby5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5OWUtOTk5OTk5OTk3IiksbWNlKS50b1N0cmluZygpKS5lcXVhbHMoIjkuOTlFLTk5OTk5OTk5NiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwNzQiKSkub2s9KG9wby5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTllLTk5OTk5OTk5NyIpLG1jZSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5OS45OUUtOTk5OTk5OTk2Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDA3NCIpKS5vaz0ob3BvLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTllLTk5OTk5OTk5NyIpLG1jZSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5OTkuOTlFLTk5OTk5OTk5NiIpOworICAKKyAgLy8gdGVzdCBzb21lIGludGVybWVkaWF0ZSBsZW5ndGhzCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDA4MCIpKS5vaz0ob3BvLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5IiksbWNzKS50b1N0cmluZygpKS5lcXVhbHMoIjEyMzQ1Njc4LjkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDgxIikpLm9rPShvcG8ubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NTY3ODkwMTIzNCIpLG1jcykudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjIzNDU2Nzg5RSsxMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwODIiKSkub2s9KG9wby5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1Njc4OTEyMzQ1Njc4OSIpLG1jcykudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjIzNDU2Nzg5RSsxNiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwODMiKSkub2s9KG9wby5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1Njc4OSIpLG1jZmQpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNDU2NzguOSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwODQiKSkub2s9KG9wby5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1Njc4OTAxMjM0IiksbWNmZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMjM0NTY3ODkwMTIzLjQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDg1IikpLm9rPShvcG8ubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NTY3ODkxMjM0NTY3ODkiKSxtY2ZkKS50b1N0cmluZygpKS5lcXVhbHMoIjEyMzQ1Njc4OTEyMzQ1Njc4LjkiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDA5MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5IikpLm11bHRpcGx5KG9wbyxtY3MpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNDU2NzguOSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwOTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1Njc4OTAxMjM0IikpLm11bHRpcGx5KG9wbyxtY3MpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yMzQ1Njc4OUUrMTIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMDkyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NTY3ODkxMjM0NTY3ODkiKSkubXVsdGlwbHkob3BvLG1jcykudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjIzNDU2Nzg5RSsxNiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwwOTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1Njc4OSIpKS5tdWx0aXBseShvcG8sbWNmZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMjM0NTY3OC45Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDA5NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5MDEyMzQiKSkubXVsdGlwbHkob3BvLG1jZmQpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNDU2Nzg5MDEyMy40Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDA5NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5MTIzNDU2Nzg5IikpLm11bHRpcGx5KG9wbyxtY2ZkKS50b1N0cmluZygpKS5lcXVhbHMoIjEyMzQ1Njc4OTEyMzQ1Njc4LjkiKTsKKyAgCisgIC8vIHRlc3Qgc29tZSBtb3JlIGVkZ2UgY2FzZXMgYW5kIGNhcnJpZXMKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMTAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDEwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiODEwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDEwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMTA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDEwNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiODEwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDEwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMTA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDEwOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiODEwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDEwOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMTEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDExMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiODEwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDExMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMTEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDExNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiODEwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDExNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMTE2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDExNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkwMDAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiODEwMDAwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDExOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkwMDAwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMTE5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDEyMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkwMDAwMDAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiODEwMDAwMDAwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDEyMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkwMDAwMDAwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMTIyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDEyMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiODEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIik7CisgIC8vIHRlc3Qgc29tZSBtb3JlIGVkZ2UgY2FzZXMgd2l0aG91dCBjYXJyaWVzCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDEzMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDEzMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMTMzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMzAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDEzNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5MDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDEzNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMTM2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMzAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDEzNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5MDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDEzOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMTM5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMzAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDE0MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5MDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDE0MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMTQyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMzAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDE0MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5MDAwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDE0NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMTQ1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMzAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDE0NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5MDAwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDE0NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMTQ4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMzAwMDAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDE0OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5MDAwMDAwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDE1MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMTUxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMzAwMDAwMDAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDE1MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5MDAwMDAwMDAwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDE1MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiKTsKKyAgCisgIHt0cnl7Y2hlY2tudWxsOmRveworICAgdGVuLm11bHRpcGx5KChjb20uaWJtLm1hdGguQmlnRGVjaW1hbCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ1NSl7CisgICBmbGFnPXRydWU7CisgIH19LypjaGVja251bGwqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwyMDAiKSkub2s9ZmxhZzsKKyAge3RyeXtjaGVja251bGwyOmRveworICAgdGVuLm11bHRpcGx5KHRlbiwoY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDU2KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfX0vKmNoZWNrbnVsbDIqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwyMDEiKSkub2s9ZmxhZzsKKyAgCisgIHt0cnl7Y2hlY2tvdmVyOmRveworICAgZDE9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMS4yMzQ1Njc4OTAxMjM0NUUtMCIpOworICAgZDI9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5RSs5OTk5OTk5OTkiKTsKKyAgIGQxLm11bHRpcGx5KGQyLG1jZGVmKTsgLy8gbWFyZ2luYWwgb3ZlcmZsb3cKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDU3KXtvZT0kNTc7CisgICBmbGFnPShvZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiRXhwb25lbnQgT3ZlcmZsb3c6IDEwMDAwMDAwMDAiKTsKKyAgfX0vKmNoZWNrb3ZlciovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDIwMiIpKS5vaz1mbGFnOworICB7dHJ5e2NoZWNrb3Zlcjpkb3sKKyAgIGQxPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTEyIik7CisgICBkMj1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjlFKzk5OTk5OTk5OSIpOworICAgZDEubXVsdGlwbHkoZDIsbWNlKTsgLy8gbWFyZ2luYWwgb3ZlcmZsb3csIGVuZ2luZWVyaW5nCisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ1OCl7b2U9JDU4OworICAgZmxhZz0ob2UuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkV4cG9uZW50IE92ZXJmbG93OiAxMDAwMDAwMDAyIik7CisgIH19LypjaGVja292ZXIqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwyMDMiKSkub2s9ZmxhZzsKKyAgCisgIHt0cnl7Y2hlY2tvdmVyOmRveworICAgZDE9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjkiKTsKKyAgIGQyPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMUUtOTk5OTk5OTk5Iik7CisgICBkMS5tdWx0aXBseShkMixtY2RlZik7IC8vIG1hcmdpbmFsIG5lZ2F0aXZlIG92ZXJmbG93CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ1OSl7b2U9JDU5OworICAgZmxhZz0ob2UuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkV4cG9uZW50IE92ZXJmbG93OiAtMTAwMDAwMDAwMCIpOworICB9fS8qY2hlY2tvdmVyKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXVsMjA0IikpLm9rPWZsYWc7CisgIHt0cnl7Y2hlY2tvdmVyOmRveworICAgZDE9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjkiKTsKKyAgIGQyPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMUUtOTk5OTk5OTk5Iik7CisgICBkMS5tdWx0aXBseShkMixtY2UpOyAvLyBtYXJnaW5hbCBuZWdhdGl2ZSBvdmVyZmxvdywgZW5naW5lZXJpbmcKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDYwKXtvZT0kNjA7CisgICBmbGFnPShvZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiRXhwb25lbnQgT3ZlcmZsb3c6IC0xMDAwMDAwMDAyIik7CisgIH19LypjaGVja292ZXIqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwyMDUiKSkub2s9ZmxhZzsKKyAgCisgIHt0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICB0ZW5sb25nLm11bHRpcGx5KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORSxtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDYxKXthZT0kNjE7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH19LypjaGVja2RpZ2l0cyovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm11bDIwNiIpKS5vaz1mbGFnOworICB7dHJ5e2NoZWNrZGlnaXRzOmRveworICAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuVEVOLm11bHRpcGx5KHRlbmxvbmcsbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ2Mil7YWU9JDYyOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9fS8qY2hlY2tkaWdpdHMqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtdWwyMDciKSkub2s9ZmxhZzsKKyAgCisgIHN1bW1hcnkoIm11bHRpcGx5Iik7CisgIHJldHVybjt9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNuZWdhdGV9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnbmVnYXRlKCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm5lZzAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5uZWdhdGUoKS50b1N0cmluZygpKS5lcXVhbHMoIi0yIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm5lZzAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTIiKSkubmVnYXRlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm5lZzAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi4wMCIpKS5uZWdhdGUobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibmVnMDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMi4wMCIpKS5uZWdhdGUobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi4wMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJuZWcwMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkubmVnYXRlKG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibmVnMDA2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLm5lZ2F0ZShtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm5lZzAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDAuMCIpKS5uZWdhdGUobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJuZWcwMDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwIikpLm5lZ2F0ZShtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJuZWcwMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuMDAiKSkubmVnYXRlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMi4wMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJuZWcwMTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yLjAwIikpLm5lZ2F0ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMi4wMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJuZWcwMTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkubmVnYXRlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm5lZzAxMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMCIpKS5uZWdhdGUoKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibmVnMDE0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMC4wIikpLm5lZ2F0ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm5lZzAxNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDAuMDAiKSkubmVnYXRlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm5lZzAxNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDAiKSkubmVnYXRlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJuZWcwMjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yMDAwMDAwIikpLm5lZ2F0ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMjAwMDAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJuZWcwMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yMDAwMDAwIikpLm5lZ2F0ZShtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm5lZzAyMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTIwMDAwMDAiKSkubmVnYXRlKG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjAwMDAwRSs2Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm5lZzAyMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMjAwMDAwMCIpKS5uZWdhdGUobWM2KS50b1N0cmluZygpKS5lcXVhbHMoIi0yLjAwMDAwRSs2Iik7CisgIAorICB7dHJ5e2NoZWNrbnVsbDpkb3sKKyAgIHRlbi5uZWdhdGUoKGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ2Myl7CisgICBmbGFnPXRydWU7CisgIH19LypjaGVja251bGwqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJuZWcxMDAiKSkub2s9ZmxhZzsKKyAgCisgIHt0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICB0ZW5sb25nLm5lZ2F0ZShtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDY0KXthZT0kNjQ7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH19LypjaGVja2RpZ2l0cyovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm5lZzEwMSIpKS5vaz1mbGFnOworICBzdW1tYXJ5KCJuZWdhdGUiKTsKKyAgcmV0dXJuO30KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI3BsdXN9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFncGx1cygpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBtY2hlMTsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBsdTAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5wbHVzKG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicGx1MDAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMiIpKS5wbHVzKG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIi0yIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBsdTAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi4wMCIpKS5wbHVzKG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicGx1MDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMi4wMCIpKS5wbHVzKG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIi0yLjAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBsdTAwNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5wbHVzKG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicGx1MDA2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLnBsdXMobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwbHUwMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAiKSkucGx1cyhtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBsdTAwOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDAiKSkucGx1cyhtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwbHUwMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkucGx1cygpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwbHUwMTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yIikpLnBsdXMoKS50b1N0cmluZygpKS5lcXVhbHMoIi0yIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBsdTAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi4wMCIpKS5wbHVzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBsdTAxMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTIuMDAiKSkucGx1cygpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicGx1MDE0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnBsdXMoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicGx1MDE1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLnBsdXMoKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicGx1MDE2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMC4wIikpLnBsdXMoKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwbHUwMTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAwIikpLnBsdXMoKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicGx1MDE4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMCIpKS5wbHVzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwbHUwMjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yMDAwMDAwIikpLnBsdXMoKS50b1N0cmluZygpKS5lcXVhbHMoIi0yMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBsdTAyMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTIwMDAwMDAiKSkucGx1cyhtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCItMjAwMDAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwbHUwMjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yMDAwMDAwIikpLnBsdXMobWM2KS50b1N0cmluZygpKS5lcXVhbHMoIi0yLjAwMDAwRSs2Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBsdTAyMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMjAwMDAwMCIpKS5wbHVzKG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjAwMDAwRSs2Iik7CisgIAorICAvLyB0cnkgc29tZSBleG90aWMgYnV0IHNpbGx5IHJvdW5kaW5nIFtmb3JtYXQgY2hlY2tzIG1vcmUgdmFyaWV0aWVzXQorICAvLyBbdGhpcyBtb3N0bHkgZW5zdXJlcyB3ZSBjYW4gc2V0IHVwIGFuZCBwYXNzIHRoZSBzZXR0aW5nXQorICBtY2hlMT1uZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlNDSUVOVElGSUMsZmFsc2UsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBsdTAzMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4yNCIpKS5wbHVzKG1jaGUxKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwbHUwMzEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMjUiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicGx1MDMyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjI2IikpLnBsdXMobWNoZTEpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4zIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBsdTAzMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4xNCIpKS5wbHVzKG1jaGUxKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwbHUwMzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTUiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicGx1MDM1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjE2IikpLnBsdXMobWNoZTEpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwbHUwNDAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMjUxIikpLnBsdXMobWNoZTEpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4zIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBsdTA0MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4xNTEiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBsdTA1MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMjQiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4yIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBsdTA1MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMjUiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4yIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBsdTA1MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMjYiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4zIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBsdTA1MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMTQiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4xIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBsdTA1NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMTUiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4yIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBsdTA1NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMTYiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4yIik7CisgIAorICAvLyBtb3JlIGZpeGVkLCBwb3RlbnRpYWwgTEhTIHN3YXBzIGlmIGRvbmUgYnkgYWRkIDAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicGx1MDYwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTEwIikpLnBsdXMoKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjAwMDAwNTYyNjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicGx1MDYxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTUiKSkucGx1cygpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuNTYyNjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicGx1MDYyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTIiKSkucGx1cygpLnRvU3RyaW5nKCkpLmVxdWFscygiLTU2Mi42NyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwbHUwNjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMSIpKS5wbHVzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItNTYyNi43Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBsdTA2NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS0wIikpLnBsdXMoKS50b1N0cmluZygpKS5lcXVhbHMoIi01NjI2NyIpOworICAKKyAge3RyeXtjaGVja251bGw6ZG97CisgICB0ZW4ucGx1cygoY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDY1KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfX0vKmNoZWNrbnVsbCovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBsdTEwMCIpKS5vaz1mbGFnOworICAKKyAge3RyeXtjaGVja2RpZ2l0czpkb3sKKyAgIHRlbmxvbmcucGx1cyhtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDY2KXthZT0kNjY7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH19LypjaGVja2RpZ2l0cyovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBsdTEwMSIpKS5vaz1mbGFnOworICBzdW1tYXJ5KCJwbHVzIik7CisgIHJldHVybjt9CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNwb3d9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFncG93KCl7CisgIGJvb2xlYW4gZmxhZzsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgeDsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgdGVtcDsKKyAgaW50IG49MDsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgdng7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHZuOworICBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiBhZT1udWxsOworICBmbGFnPXRydWU7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzAwMSIpKS5vaz0iMSIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwMDIiKSkub2s9IjAuMyIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwMDMiKSkub2s9IjAuMyIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwIiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwMDQiKSkub2s9IjAuMDkiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi4wMCIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicG93MDA1IikpLm9rPSIwLjA5Ii5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuMDAwMDAwMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwMDYiKSkub2s9KCIxRS04IikuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi04IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwMDciKSkub2s9KCIxRS03IikuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi03IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwMDgiKSkub2s9IjAuMDAwMDAxIi5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTYiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzAwOSIpKS5vaz0iMC4wMDAwMSIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwMTAiKSkub2s9IjAuMDAwMSIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi00IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwMTEiKSkub2s9IjAuMDAxIi5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTMiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzAxMiIpKS5vaz0iMC4wMSIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yIiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwMTMiKSkub2s9IjAuMSIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwMTQiKSkub2s9IjEiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwMTUiKSkub2s9IjEwIi5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicG93MDE2IikpLm9rPSIxMDAwMDAwMDAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI4IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwMTciKSkub2s9KCIxRSs5IikuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzAxOCIpKS5vaz0oIjFFKzk5IikuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwMTkiKSkub2s9KCIxRSs5OTk5OTk5OTkiKS5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwMjAiKSkub2s9KCIxRSs5OTk5OTk5OTgiKS5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk4IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwMjEiKSkub2s9KCIxRSs5OTk5OTk5OTciKS5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk3IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwMjIiKSkub2s9KCIxRSszMzMzMzMzMzMiKS5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMzMzMzMzMzMzIiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwMjMiKSkub2s9KCIxRS0zMzMzMzMzMzMiKS5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTMzMzMzMzMzMyIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicG93MDI0IikpLm9rPSgiMUUtOTk5OTk5OTk4IikuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi05OTk5OTk5OTgiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzAyNSIpKS5vaz0oIjFFLTk5OTk5OTk5OSIpLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItOTk5OTk5OTk5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwMjYiKSkub2s9IjAuNSIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzAyNyIpKS5vaz0iMC4yNSIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTIiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzAyOCIpKS5vaz0iMC4wNjI1Ii5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNCIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzA1MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwNTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicG93MDUyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzA1MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwNTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicG93MDU1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzA1NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzA1NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrOTk5OTk5OTk5Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzA1OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk4IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrOTk5OTk5OTk4Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzA1OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk3IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrOTk5OTk5OTk3Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzA2MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMzMzMzMzMzMzIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrMzMzMzMzMzMzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzA2MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNzciKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs3NyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwNjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrMjIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicG93MDYzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNzciKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxRS03NyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwNjQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjFFLTIyIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzA2NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwNjYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjI1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzA2NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDYyNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwNjgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjYuMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMzYiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicG93MDY5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMyIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiOSIpOy8qIGZyb20gYm9vayAqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwNzAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiNjQiKTsvKiBmcm9tIGJvb2sgKi8KKyAgCisgIC8vIDE5OTguMTIuMTQgTmV4dCB0ZXN0IHJlbW92ZWQgYXMgcG93KCkgbm8gbG9uZ2VyIHJvdW5kcyBSSFMgW2FzIHBlciBBTlNJXQorICAvLyBUZXN0KCdwb3cwNzEnKS5vaz1CaWdEZWNpbWFsKCcyJykucG93KEJpZ0RlY2ltYWwoJzIuMDAwMDAwMDAxJyksbWNkZWYpLnRvU3RyaW5nID09ICc0Jy8qIGNoZWNrIGlucHV0IHJvdW5kaW5nICovCisgIAorICAvKiBHZW5lcmFsIHRlc3RzIGZyb20gb3JpZ2luYWwgUmV4eCBkaWFnbm9zdGljcyAqLworICB4PW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41Iik7CisgIHRlbXA9Y29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FOworICBmbGFnPXRydWU7CisgIHtuPTE7bjpmb3IoO248PTEwO24rKyl7CisgICB0ZW1wPXRlbXAubXVsdGlwbHkoeCkuZGl2aWRlKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORSk7CisgICBmbGFnPWZsYWcmKHgucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChuKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKHRlbXAudG9TdHJpbmcoKSk7CisgICB9CisgIH0vKm4qLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cwODAiKSkub2s9ZmxhZzsKKyAgCisgIHg9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIik7CisgIHRlbXA9Y29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FOworICBmbGFnPXRydWU7CisgIHtuPTE7bjpmb3IoO248PTI5O24rKyl7CisgICB0ZW1wPXRlbXAubXVsdGlwbHkoeCkuZGl2aWRlKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORSk7CisgICBmbGFnPWZsYWcmKHgucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChuKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKHRlbXAudG9TdHJpbmcoKSk7CisgICBmbGFnPWZsYWcmKHgucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgoaW50KS1uKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORS5kaXZpZGUodGVtcCxtY2RlZikudG9TdHJpbmcoKSk7CisgICAvKiBOb3RlIHRoYXQgcm91bmRpbmcgZXJyb3JzIGFyZSBwb3NzaWJsZSBmb3IgbGFyZ2VyICJuIiAqLworICAgLyogZHVlIHRvIHRoZSBpbmZvcm1hdGlvbiBjb250ZW50IG9mIHRoZSBleHBvbmVudCAgICAgICAgKi8KKyAgIH0KKyAgfS8qbiovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzA4MSIpKS5vaz1mbGFnOworICAKKyAgLyogVGhlIFZpZW5uYSBjYXNlLiAgQ2hlY2tzIGJvdGggc2V0dXAgYW5kIDEvYWNjIHdvcmtpbmcgcHJlY2lzaW9uICovCisgIC8vIE1vZGlmaWVkIDE5OTguMTIuMTQgYXMgUkhTIG5vIGxvbmdlciByb3VuZGVkIGJlZm9yZSB1c2UgKG11c3QgZml0KQorICAvLyBNb2RpZmllZCAxOTkwLjAyLjA0IGFzIExIUyBpcyBub3cgcm91bmRlZCAoaW5zdGVhZCBvZiB0cnVuY2F0ZWQgdG8gZ3VhcmQpCisgIHZ4PW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5RSsxMCIpOyAvLyBsaHMgLi4gcm91bmRlZCB0byAxLjIzRSsxOAorICB2bj1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjIzMDAwZSsyIik7IC8vIHJocyAuLiBbd2FzOiAtMS4yMzQ1NWUrMiwgcm91bmRzIHRvIC0xMjNdCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzA5MCIpKS5vaz0odngucG93KHZuLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCI4Ljc0RS0yMjI2Iik7CisgIAorICAvLy0gZml4ZWQgcG9pbnQgdmVyc2lvbnMgLS0tCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzEwMSIpKS5vaz0iMSIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cxMDIiKSkub2s9IjAuMyIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cxMDMiKSkub2s9IjAuMyIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwIikpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cxMDQiKSkub2s9IjAuMDkiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicG93MTA1IikpLm9rPSIwLjA5Ii5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuMDAiKSkudG9TdHJpbmcoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzEwNiIpKS5vaz0iMTAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cxMDciKSkub2s9IjEwMDAwMDAwMCIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjgiKSkudG9TdHJpbmcoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzEwOCIpKS5vaz0iMTAwMDAwMDAwMCIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkudG9TdHJpbmcoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzEwOSIpKS5vaz0iMTAwMDAwMDAwMDAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS50b1N0cmluZygpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicG93MTEwIikpLm9rPSIxIi5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cxMTEiKSkub2s9IjE2Ii5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI0IikpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cxMTIiKSkub2s9IjI1NiIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOCIpKS50b1N0cmluZygpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicG93MTEzIikpLm9rPSIxMDI0Ii5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS50b1N0cmluZygpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicG93MTE0IikpLm9rPSIxLjA1MTAxMDA1MDEiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAxIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkudG9TdHJpbmcoKSk7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cxMjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicG93MTIxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzEyMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cxMjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicG93MTQ0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzEyNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cxMjYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cxMjciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjciKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cxMjgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjYuMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMzYuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicG93MTI5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI2LjAwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzNi4wMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzEzMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNi4wMDAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjM2LjAwMDAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cxMzEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0zIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzEzMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI2NCIpOworICAKKyAgLyogZXJyb3JzICovCisgIHt0cnl7Y2hlY2tudWxsOmRveworICAgdGVuLnBvdygoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkNjcpeworICAgZmxhZz10cnVlOworICB9fS8qY2hlY2tudWxsKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicG93MTUwIikpLm9rPWZsYWc7CisgIHt0cnl7Y2hlY2tudWxsMjpkb3sKKyAgIHRlbi5wb3codGVuLChjb20uaWJtLm1hdGguTWF0aENvbnRleHQpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkNjgpeworICAgZmxhZz10cnVlOworICB9fS8qY2hlY2tudWxsMiovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzE1MSIpKS5vaz1mbGFnOworICAKKyAgZmxhZz10cnVlOworICB7dHJ5e2NoZWNrZGlnaXRzOmRveworICAgdGVubG9uZy5wb3coY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNjkpe2FlPSQ2OTsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfX0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicG93MTUyIikpLm9rPWZsYWc7CisgIAorICB7dHJ5e2NoZWNrZGlnaXRzOmRveworICAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLnBvdyh0ZW5sb25nLG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNzApe2FlPSQ3MDsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfX0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicG93MTUzIikpLm9rPWZsYWc7CisgIAorICB7dHJ5e2NoZWNrcG9zOmRveworICAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi03MSIpKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDcxKXthZT0kNzE7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiTmVnYXRpdmUgcG93ZXI6IC03MSIpOworICB9fS8qY2hlY2twb3MqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cxNTQiKSkub2s9ZmxhZzsKKyAgCisgIHt0cnl7Y2hlY2t3aG9sZTpkb3sKKyAgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0IiksbWMzKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDcyKXthZT0kNzI7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiAxMjM0Iik7CisgIH19LypjaGVja3dob2xlKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicG93MTU1IikpLm9rPWZsYWc7CisgIAorICB7dHJ5e2NoZWNrd2hvbGUxOmRveworICAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjM0ZSsyIiksbWMzKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDczKXthZT0kNzM7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiAxLjIzNEUrMyIpOworICB9fS8qY2hlY2t3aG9sZTEqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJwb3cxNTYiKSkub2s9ZmxhZzsKKyAgCisgIHt0cnl7Y2hlY2t3aG9sZTI6ZG97CisgICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIuNCIpLG1jZGVmKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDc0KXthZT0kNzQ7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiRGVjaW1hbCBwYXJ0IG5vbi16ZXJvOiAxMi40Iik7CisgIH19LypjaGVja3dob2xlMiovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzE1NyIpKS5vaz1mbGFnOworICAKKyAge3RyeXtjaGVja3dob2xlMzpkb3sKKyAgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAxIiksbWNkZWYpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNzUpe2FlPSQ3NTsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJEZWNpbWFsIHBhcnQgbm9uLXplcm86IDEuMDEiKTsKKyAgfX0vKmNoZWNrd2hvbGUzKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicG93MTU4IikpLm9rPWZsYWc7CisgIAorICB7dHJ5e2NoZWNrd2hvbGU0OmRveworICAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMDAwMDAxIiksbWNkZWYpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNzYpe2FlPSQ3NjsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJEZWNpbWFsIHBhcnQgbm9uLXplcm86IDEuMDAwMDAwMDAxIik7CisgIH19LypjaGVja3dob2xlNCovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzE1OSIpKS5vaz1mbGFnOworICAKKyAge3RyeXtjaGVja3dob2xlNTpkb3sKKyAgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwMDAwMDAwMSIpLG1jMyk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ3Nyl7YWU9JDc3OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkRlY2ltYWwgcGFydCBub24temVybzogMS4wMDAwMDAwMDEiKTsKKyAgfX0vKmNoZWNrd2hvbGU1Ki8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicG93MTYwIikpLm9rPWZsYWc7CisgIAorICB7dHJ5e2NoZWNrd2hvbGU2OmRveworICAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuNjdFLTk4NzY1NDMyMSIpLG1jMyk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ3OCl7YWU9JDc4OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkRlY2ltYWwgcGFydCBub24temVybzogNS42N0UtOTg3NjU0MzIxIik7CisgIH19LypjaGVja3dob2xlNiovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInBvdzE2MSIpKS5vaz1mbGFnOworICAKKyAgc3VtbWFyeSgicG93Iik7CisgIHJldHVybjt9CisKKyAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjcmVtYWluZGVyfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ3JlbWFpbmRlcigpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uIGFlPW51bGw7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMDAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTMiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTMiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNTAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEzIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTMiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjEzIikpLnJlbWFpbmRlcihvbmUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wMDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTMzIikpLnJlbWFpbmRlcihvbmUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMzMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMDA5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEwMzMiKSkucmVtYWluZGVyKG9uZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwMzMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMDEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAzMyIpKS5yZW1haW5kZXIob25lKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDMzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAuMzMiKSkucmVtYWluZGVyKG9uZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAuMzMiKSkucmVtYWluZGVyKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLlRFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTAxMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAzLjMiKSkucmVtYWluZGVyKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMDE0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMzMiKSkucmVtYWluZGVyKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLlRFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTAxNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAzMyIpKS5yZW1haW5kZXIoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuVEVOKS50b1N0cmluZygpKS5lcXVhbHMoIjMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMDE2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDMzIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoNTApLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjMzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTAxNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAxLjAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgzKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMDE4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDIuMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDMpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMDE5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDMuMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDMpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wMjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAiKSkucmVtYWluZGVyKG9uZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTAyMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi40MDAiKSkucmVtYWluZGVyKG9uZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wMjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNCIpKS5yZW1haW5kZXIob25lKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wMjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wMjQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAwIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40MDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMDI1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wMjYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMDI3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMzAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMDI4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMzAwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wMjkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMDMwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMDMxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wMzIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMDMzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi4wMDEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjUiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTA0MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTAwMDAwMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wNDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUwMDAwMDAxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTA0MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTAwMDAwMDAxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTA0MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTAwMDAwMDAwMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMDQ0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41MDAwMDAwMDAwMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMDQ1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC40OTk5OTk5IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUtNyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wNDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ5OTk5OTk5IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUtOCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wNDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ5OTk5OTk5OSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjFFLTkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMDQ4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC40OTk5OTk5OTk5IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wNDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ5OTk5OTk5OTk5IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMDUwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAzIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjciKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTA1MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wNTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjQuMSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTA1MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNC4wMSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wNTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjQuMDAxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wNTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjQuMDAwMSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTA1NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNC4wMDAwMSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wNTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjQuMDAwMDAxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wNTgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjQuMDAwMDAwMSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUtNyIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMDYwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjIiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC43MzQ1IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40NjU1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTA2MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC44IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC44Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTA2MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC44IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMDYzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjgiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTA2NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC44MDAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjgwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wNjUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuODAwIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuNyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuODAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTA2NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi40MDAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgyKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQwMCIpOworICAKKyAgLy8gTUMgLS0KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMDcxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQwMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDIpLG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0wNzIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1Njc4OTAwMDAwIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyZSsxMiIpLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCIzRSsxMSIpOworICAKKyAgLy8gRml4ZWQgLS0KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMTAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTEwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0xMDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEzIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0xMDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEzIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMTA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMyIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0xMDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEzIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0xMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4xMyIpKS5yZW1haW5kZXIob25lKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMTA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEzMyIpKS5yZW1haW5kZXIob25lKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTMzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTEwOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4xMDMzIikpLnJlbWFpbmRlcihvbmUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMDMzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTExMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wMzMiKSkucmVtYWluZGVyKG9uZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAzMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0xMTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjMzIikpLnJlbWFpbmRlcihvbmUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4zMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0xMTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjMzIikpLnJlbWFpbmRlcihjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5URU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4zMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0xMTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMy4zIikpLnJlbWFpbmRlcihjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4zIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTExNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTMzIikpLnJlbWFpbmRlcihjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5URU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0xMTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMzMiKSkucmVtYWluZGVyKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLlRFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTExNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAzMyIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDUwKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0xMTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMS4wIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMykpLnRvU3RyaW5nKCkpLmVxdWFscygiMi4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTExOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAyLjAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgzKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTExOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAzLjAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgzKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMTIwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQwIikpLnJlbWFpbmRlcihvbmUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40MCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0xMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAwIikpLnJlbWFpbmRlcihvbmUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40MDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMTIyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQiKSkucmVtYWluZGVyKG9uZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMTIzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgyKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMTI0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQwMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTEyNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMTI2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMzAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTEyNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjMwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTEyOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjMwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMTI5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTEzMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTEzMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wMDAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMTMyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwMDAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTEzMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuMDAxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTEzNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTAwMDAwMDAxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTEzNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTAwMDAwMDAwMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0xMzYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDMiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMTM3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTEzOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNC4xIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMTM5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI0LjAxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTE0MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNC4wMDEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTE0MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNC4wMDAxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMTQyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI0LjAwMDAxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTE0MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNC4wMDAwMDEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTE0NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNC4wMDAwMDAxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMDEiKTsgLy8gMUUtNywgcGxhaW4KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMTQ1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjIiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC43MzQ1IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40NjU1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTE0NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC44IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC44Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTE0NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC44IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMTQ4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjgiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTE0OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC44MDAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjgwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0xNTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuODAwIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuNyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuODAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInJlbTE1MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi40MDAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgyKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQwMCIpOworICAKKyAge3RyeXtjaGVja251bGw6ZG97CisgICB0ZW4ucmVtYWluZGVyKChjb20uaWJtLm1hdGguQmlnRGVjaW1hbCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ3OSl7CisgICBmbGFnPXRydWU7CisgIH19LypjaGVja251bGwqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJyZW0yMDAiKSkub2s9ZmxhZzsKKyAge3RyeXtjaGVja251bGwyOmRveworICAgdGVuLnJlbWFpbmRlcih0ZW4sKGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ4MCl7CisgICBmbGFnPXRydWU7CisgIH19LypjaGVja251bGwyKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMjAxIikpLm9rPWZsYWc7CisgIAorICB7dHJ5e2NoZWNrZGlnaXRzOmRveworICAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLnJlbWFpbmRlcih0ZW5sb25nLG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkODEpe2FlPSQ4MTsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfX0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMjAyIikpLm9rPWZsYWc7CisgIAorICB7dHJ5e2NoZWNrZGlnaXRzOmRveworICAgdGVubG9uZy5yZW1haW5kZXIob25lLG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkODIpe2FlPSQ4MjsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfX0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgicmVtMjAzIikpLm9rPWZsYWc7CisgIAorICBzdW1tYXJ5KCJyZW1haW5kZXIiKTsKKyAgcmV0dXJuO30KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNzdWJ0cmFjdH0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdzdWJ0cmFjdCgpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGFsaHM7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGFyaHM7CisgIGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uIGFlPW51bGw7CisgIAorICAvLyBbZmlyc3QgZ3JvdXAgYXJlICdxdWljayBjb25maWRlbmNlIGNoZWNrJ10KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMzAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMyksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMzAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1Ljc1IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMy4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi40NSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIzMDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjgiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMzA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMzA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIi05LjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMzA2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjciKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMzA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjMiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMzA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI1IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yNSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMzA5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjIzNDU2Nzg5IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wMDAwMDAwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMjM0NTY3ODkiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjMxMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yMzQ1Njc4OSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMDAwODkiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIzNDU2NzAwIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIzMTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTU1NTU1NTU1OSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwMDAwMDAwMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNTU1NTU1NTU2Iik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIzMTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTU1NTU1NTU1OSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwMDAwMDAwNSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNTU1NTU1NTU2Iik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIzMTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNDQ0NDQ0NDQ0NCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTExMTExMTExMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMzMzMzMzMzMzIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIzMTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMDAwMDAwMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwMDAwMDEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk5OTk5OTk5Iik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIzMTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNDQ0NDQ0NDQ0NDk5OSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQ0NDQ0NDQ0NCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMzE2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDUwMDAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40NDQ0NDQ0NDUiKTsKKyAgCisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIzMTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCItMS4wMDAwMDAwMEUrMTMiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjMxOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNzAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCItMS4wMDAwMDAwMEUrMTMiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjMxOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNzAwMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEuMDAwMDAwMDBFKzEzIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIzMjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCItOS45OTk5OTk5RSsxMiIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMzIxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAwMDAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIi05Ljk5OTk5OTNFKzEyIik7CisgIAorICAvLyBzeW1tZXRyeToKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMzIyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMDAwMEUrMTMiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjMyMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAwMDAwRSsxMyIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMzI0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAwMDAwRSsxMyIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMzI1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiOS45OTk5OTk5RSsxMiIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMzI2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjkuOTk5OTk5M0UrMTIiKTsKKyAgCisgIAorICAvLyBbc2FtZSB3aXRoIGZpeGVkIHBvaW50IGFyaXRobWV0aWNdCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgyKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDMpKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNS43NSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMuMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNDUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI4Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTUiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0yIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjAwNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTciKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItOS41Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC43IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4zIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjAwOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yNSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjAwOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMiIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjM0NTY3ODkiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yMzQ1Njc4OSIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMDExIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjIzNDU2Nzg5IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wMDAwMDA4OSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMjM0NTY3MDAiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41NTU1NTU1NTU5IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDAwMDAwMDAxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41NTU1NTU1NTU4Iik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwMTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTU1NTU1NTU1OSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwMDAwMDAwNSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNTU1NTU1NTU1NCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMDE0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDQiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjExMTExMTExMTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMzMzMzMzMzMzMiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjAxNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wMDAwMDAwMDAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDAwMDAwMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTk5OTk5OTkwMCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMDE2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDQ5OTkiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40NDQ0NDQ0NDQ0OTk5Iik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwMTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNDQ0NDQ0NDQ0NTAwMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQ0NDQ0NDQ0NDUwMDAiKTsKKyAgCisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwMTgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItOTk5OTk5OTk5OTkzMCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMDE5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIi05OTk5OTk5OTk5MzAwIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwMjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIi05OTk5OTk5OTkzMDAwIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItOTk5OTk5OTkzMDAwMCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMDIyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAwMDAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIi05OTk5OTk5MzAwMDAwIik7CisgIAorICAvLyBzeW1tZXRyeToKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMDIzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTk5OTk5OTk5OTkzMCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMDI0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjk5OTk5OTk5OTkzMDAiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjAyNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTk5OTk5OTk5MzAwMCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMDI2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTk5OTk5OTkzMDAwMCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMDI3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjk5OTk5OTkzMDAwMDAiKTsKKyAgCisgIC8vIE1DCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjAzMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjkuOTk5OTk5OUUrMTIiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjAzMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAwMCIpLG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAwRSsxMyIpOworICAKKyAgCisgIC8vIHNvbWUgb2YgdGhlIG5leHQgZ3JvdXAgYXJlIHJlYWxseSBjb25zdHJ1Y3RvciB0ZXN0cworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwNDAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMDQxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMC4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMDQyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDAuMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMDQzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMC4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMDQ0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDAuMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMDQ1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMDQ2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzLiIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi43Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjA0NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMy4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMDQ4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzLjAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjcwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjA0OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjA1MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIiszIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwNTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjYiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMDUyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMDUzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzLiIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMi43Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjA1NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMy4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMDU1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzLjAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjcwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjA1NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjA1NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIiszIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwNTgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjYiKTsKKyAgCisgIC8vIHRoZSBhYm92ZSBhbGwgZnJvbSBhZGQ7IG1hc3NhZ2VkIGFuZCBleHRlbmRlZC4gIE5vdyBzb21lIG5ldyBvbmVzLi4uCisgIC8vIFtwYXJ0aWN1bGFybHkgaW1wb3J0YW50IGZvciBjb21wYXJpc29uc10KKyAgLy8gTkI6IC0xRS03IGJlbG93IHdlcmUgbm9uLWV4cG9uZW50cyBwcmUtQU5TSQorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwODAiKSkub2s9KCItMUUtNyIpLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwODEiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwODIiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NiIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwODMiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwODQiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4OCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwODUiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4OSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwODYiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc5MCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwODciKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc5MSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwODgiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc5MiIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwODkiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc5MyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwOTAiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc5NCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwOTEiKSkub2s9KCItMUUtNyIpLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4MSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg2IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwOTIiKSkub2s9KCItMUUtNyIpLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4MiIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg2IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwOTMiKSkub2s9KCItMUUtNyIpLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4MyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg2IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwOTQiKSkub2s9KCItMUUtNyIpLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg2IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwOTUiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg2IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwOTYiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NiIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg2IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwOTciKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg2IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwOTgiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4OCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg2IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIwOTkiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4OSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg2IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxMDAiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc5MCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg2IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxMDEiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc5MSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg2IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxMDIiKSkub2s9IjAiLmVxdWFscyhjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjk5OTk5OTk5OSIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTAzIikpLm9rPSIwIi5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC45OTk5OTk5OTkiKSkuc3VidHJhY3QoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLG1jZGVmKS50b1N0cmluZygpKTsKKyAgCisgIGFsaHM9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NTY3ODkwMDAwMCIpOworICBhcmhzPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5OTk5OSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxMTAiKSkub2s9KGFsaHMuc3VidHJhY3QoYXJocyxtYzMpLnRvU3RyaW5nKCkpLmVxdWFscygiMi4zRSsxMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxMTEiKSkub2s9KGFyaHMuc3VidHJhY3QoYWxocyxtYzMpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIuM0UrMTIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTEyIikpLm9rPShhbGhzLnN1YnRyYWN0KGFyaHMpLnRvU3RyaW5nKCkpLmVxdWFscygiMjM0NTY3ODkwMDAwMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxMTMiKSkub2s9KGFyaHMuc3VidHJhY3QoYWxocykudG9TdHJpbmcoKSkuZXF1YWxzKCItMjM0NTY3ODkwMDAwMSIpOworICAKKyAgLy8gYWRkaXRpb25hbCBzY2FsZWQgYXJpdGhtZXRpYyB0ZXN0cyBbMC45NyBwcm9ibGVtXQorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxMjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTIxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi45Nzk4MyIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjk3OTgzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjEyMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi45IikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuOSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxMjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEwMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjEwMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxMjQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuNCIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTI1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjMwNyIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjMwNyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxMjYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuNDM4MjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC40MzgyMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxMjciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuOTExIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuOTExIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjEyOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuMDIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4wMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxMjkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjM5MiIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjM5MiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxMzAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuMjYiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4yNiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxMzEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuNTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTMyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjIyMzQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4yMjM0Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjEzMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4yIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxMzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjAwMDgiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4wMDA4Iik7CisgIC8vIDAuIG9uIGxlZnQKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTQwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItLjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTQxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS45Nzk4MyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTc5ODMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTQyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItLjkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTQzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4xMDIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxNDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0uNCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxNDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0uMzA3IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4zMDciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTQ2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItLjQzODIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40MzgyMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxNDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0uOTExIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45MTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTQ4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItLjAyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxNDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItLjM5MiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMzkyIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjE1MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS4yNiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMjYiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTUxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC41MSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTUyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItLjIyMzQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIyMzQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTUzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItLjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTU0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItLjAwMDgiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDgiKTsKKyAgLy8gbmVnYXRpdmVzIG9mIHNhbWUKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTYwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS4xIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjE2MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItLjk3OTgzIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45Nzk4MyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxNjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItLjkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjkiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTYzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMTAyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMDIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTY0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS40IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjE2NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0uMzA3IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4zMDciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTY2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS40MzgyMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDM4MjIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTY3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS45MTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjkxMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxNjgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS4wMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTY5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0uMzkyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4zOTIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTcwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS4yNiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMjYiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTcxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuNTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjUxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjE3MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0uMjIzNCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMjIzNCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxNzMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItLjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTc0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0uMDAwOCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwOCIpOworICAKKyAgLy8gbW9yZSBmaXhlZCwgTEhTIHN3YXBzIFtyZWFsbHkgc2FtZSBhcyB0ZXN0Y2FzZXMgdW5kZXIgYWRkXQorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxODAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMTAiKSkuc3VidHJhY3QoemVybykudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4wMDAwMDU2MjY3Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjE4MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS01IikpLnN1YnRyYWN0KHplcm8pLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuNTYyNjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMTgyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTIiKSkuc3VidHJhY3QoemVybykudG9TdHJpbmcoKSkuZXF1YWxzKCItNTYyLjY3Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjE4MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS0xIikpLnN1YnRyYWN0KHplcm8pLnRvU3RyaW5nKCkpLmVxdWFscygiLTU2MjYuNyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzdWIxODUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMCIpKS5zdWJ0cmFjdCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi01NjI2NyIpOworICAKKyAge3RyeXtjaGVja251bGw6ZG97CisgICB0ZW4uc3VidHJhY3QoKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDgzKXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfX0vKmNoZWNrbnVsbCovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjIwMCIpKS5vaz1mbGFnOworICB7dHJ5e2NoZWNrbnVsbDI6ZG97CisgICB0ZW4uc3VidHJhY3QodGVuLChjb20uaWJtLm1hdGguTWF0aENvbnRleHQpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkODQpeworICAgZmxhZz10cnVlOworICB9fS8qY2hlY2tudWxsMiovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjIwMSIpKS5vaz1mbGFnOworICAKKyAge3RyeXtjaGVja2RpZ2l0czpkb3sKKyAgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORS5zdWJ0cmFjdCh0ZW5sb25nLG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkODUpe2FlPSQ4NTsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfX0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3ViMjAyIikpLm9rPWZsYWc7CisgIHt0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICB0ZW5sb25nLnN1YnRyYWN0KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORSxtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDg2KXthZT0kODY7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH19LypjaGVja2RpZ2l0cyovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInN1YjIwMyIpKS5vaz1mbGFnOworICBzdW1tYXJ5KCJzdWJ0cmFjdCIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qIE90aGVyIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUgPGNvZGU+QmlnRGVjaW1hbC5ieXRlVmFsdWUoKTwvY29kZT4gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdieXRlVmFsdWUoKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBqYXZhLmxhbmcuU3RyaW5nIHY9bnVsbDsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgamF2YS5sYW5nLlN0cmluZyBiYWRzdHJpbmdzW107CisgIGludCBpPTA7CisgIGphdmEubGFuZy5TdHJpbmcgbm9ybT1udWxsOworICAKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImJ5djAwMSIpKS5vaz0oKCgoYnl0ZSktMTI4KSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEyOCIpKS5ieXRlVmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImJ5djAwMiIpKS5vaz0oKDApKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuYnl0ZVZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJieXYwMDMiKSkub2s9KCgxKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLmJ5dGVWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYnl2MDA0IikpLm9rPSgoOTkpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5IikpLmJ5dGVWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYnl2MDA1IikpLm9rPSgoMTI3KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjciKSkuYnl0ZVZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJieXYwMDYiKSkub2s9KCgtMTI4KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjgiKSkuYnl0ZVZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJieXYwMDciKSkub2s9KCgtMTI3KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjkiKSkuYnl0ZVZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJieXYwMDgiKSkub2s9KCgxMjcpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xMjkiKSkuYnl0ZVZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJieXYwMDkiKSkub2s9KCgxMjYpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xMzAiKSkuYnl0ZVZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJieXYwMTAiKSkub2s9KChibWF4KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGJtYXgpKS5ieXRlVmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImJ5djAxMSIpKS5vaz0oKGJtaW4pKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYm1pbikpLmJ5dGVWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYnl2MDEyIikpLm9rPSgoYm5lZykpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChibmVnKSkuYnl0ZVZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJieXYwMTMiKSkub2s9KChiemVyKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGJ6ZXIpKS5ieXRlVmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImJ5djAxNCIpKS5vaz0oKGJwb3MpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYnBvcykpLmJ5dGVWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYnl2MDE1IikpLm9rPSgoYm1pbikpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChibWF4KzEpKS5ieXRlVmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImJ5djAxNiIpKS5vaz0oKGJtYXgpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYm1pbi0xKSkuYnl0ZVZhbHVlKCkpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYnl2MDIxIikpLm9rPSgoKChieXRlKS0xMjgpKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMTI4IikpLmJ5dGVWYWx1ZUV4YWN0KCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJieXYwMjIiKSkub2s9KCgwKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLmJ5dGVWYWx1ZUV4YWN0KCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJieXYwMjMiKSkub2s9KCgxKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLmJ5dGVWYWx1ZUV4YWN0KCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJieXYwMjQiKSkub2s9KCg5OSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTkiKSkuYnl0ZVZhbHVlRXhhY3QoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImJ5djAyNSIpKS5vaz0oKDEyNykpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI3IikpLmJ5dGVWYWx1ZUV4YWN0KCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJieXYwMjYiKSkub2s9KChibWF4KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGJtYXgpKS5ieXRlVmFsdWVFeGFjdCgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYnl2MDI3IikpLm9rPSgoYm1pbikpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChibWluKSkuYnl0ZVZhbHVlRXhhY3QoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImJ5djAyOCIpKS5vaz0oKGJuZWcpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYm5lZykpLmJ5dGVWYWx1ZUV4YWN0KCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJieXYwMjkiKSkub2s9KChiemVyKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGJ6ZXIpKS5ieXRlVmFsdWVFeGFjdCgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYnl2MDMwIikpLm9rPSgoYnBvcykpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChicG9zKSkuYnl0ZVZhbHVlRXhhY3QoKSk7CisgIHt0cnl7CisgICB2PSItMTI5IjsKKyAgIChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodikpLmJ5dGVWYWx1ZUV4YWN0KCk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkODcpe2FlPSQ4NzsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK3YpOworICB9fQorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJieXYxMDAiKSkub2s9ZmxhZzsKKyAge3RyeXsKKyAgIHY9IjEyOCI7CisgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHYpKS5ieXRlVmFsdWVFeGFjdCgpOworICAgZmxhZz1mYWxzZTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDg4KXthZT0kODg7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiQ29udmVyc2lvbiBvdmVyZmxvdzoiKyIgIit2KTsKKyAgfX0KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYnl2MTAxIikpLm9rPWZsYWc7CisgIHt0cnl7CisgICB2PSIxLjUiOworICAgKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2KSkuYnl0ZVZhbHVlRXhhY3QoKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ4OSl7YWU9JDg5OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkRlY2ltYWwgcGFydCBub24temVybzoiKyIgIit2KTsKKyAgfX0KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiYnl2MTAyIikpLm9rPWZsYWc7CisgIAorICBiYWRzdHJpbmdzPW5ldyBqYXZhLmxhbmcuU3RyaW5nW117IjEyMzQiLChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYm1heCkpLmFkZChvbmUpLnRvU3RyaW5nKCksKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChibWluKSkuc3VidHJhY3Qob25lKS50b1N0cmluZygpLCIxNzAiLCIyNzAiLCIzNzAiLCI0NzAiLCI1NzAiLCI2NzAiLCI3NzAiLCI4NzAiLCI5NzAiLCItMTcwIiwiLTI3MCIsIi0zNzAiLCItNDcwIiwiLTU3MCIsIi02NzAiLCItNzcwIiwiLTg3MCIsIi05NzAiLChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYm1pbikpLm11bHRpcGx5KHR3bykudG9TdHJpbmcoKSwobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGJtYXgpKS5tdWx0aXBseSh0d28pLnRvU3RyaW5nKCksKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChibWluKSkubXVsdGlwbHkodGVuKS50b1N0cmluZygpLChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYm1heCkpLm11bHRpcGx5KHRlbikudG9TdHJpbmcoKSwiLTEyMzQifTsgLy8gMjIwCisgIC8vIDIyMQorICAvLyAyMjIKKyAgLy8gMjIzCisgIC8vIDIyNAorICAvLyAyMjUKKyAgLy8gMjI2CisgIC8vIDIyNworICAvLyAyMjgKKyAgLy8gMjI5CisgIC8vIDIzMAorICAvLyAyMzEKKyAgLy8gMjMyCisgIC8vIDIzMworICAvLyAyMzQKKyAgLy8gMjM1CisgIC8vIDIzNgorICAvLyAyMzcKKyAgLy8gMjM4CisgIC8vIDIzOQorICAvLyAyNDAKKyAgLy8gMjQxCisgIC8vIDI0MgorICAvLyAyNDMKKyAgLy8gMjQ0CisgIC8vIDI0NQorICB7aW50ICQ5MD1iYWRzdHJpbmdzLmxlbmd0aDtpPTA7aTpmb3IoOyQ5MD4wOyQ5MC0tLGkrKyl7CisgICB7dHJ5eworICAgIHY9YmFkc3RyaW5nc1tpXTsKKyAgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHYpKS5ieXRlVmFsdWVFeGFjdCgpOworICAgIGZsYWc9ZmFsc2U7CisgICB9CisgICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDkxKXthZT0kOTE7CisgICAgbm9ybT0obmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHYpKS50b1N0cmluZygpOworICAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK25vcm0pOworICAgfX0KKyAgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImJ5diIrKDIyMCtpKSkpLm9rPWZsYWc7CisgICB9CisgIH0vKmkqLworICAKKyAgc3VtbWFyeSgiYnl0ZVZhbHVlKyIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjY29tcGFyZVRvKGphdmEubGFuZy5PYmplY3QpfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ2NvbXBhcmV0b09iaigpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGQ7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGxvbmcxOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBsb25nMjsKKyAgCisgIGQ9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDE3KTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3RvMDAxIikpLm9rPShkLmNvbXBhcmVUbygoamF2YS5sYW5nLk9iamVjdCkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDY2KSkpKT09KC0xKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3RvMDAyIikpLm9rPShkLmNvbXBhcmVUbygoamF2YS5sYW5nLk9iamVjdCkoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgxMCkpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoNykpKSkpPT0wOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjdG8wMDMiKSkub2s9KGQuY29tcGFyZVRvKChqYXZhLmxhbmcuT2JqZWN0KShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMTApKSkpPT0xOworICBsb25nMT1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1Njc4OTAzIik7CisgIGxvbmcyPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5MDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3RvMDA0IikpLm9rPShsb25nMS5jb21wYXJlVG8oKGphdmEubGFuZy5PYmplY3QpbG9uZzIpKT09MTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3RvMDA1IikpLm9rPShsb25nMi5jb21wYXJlVG8oKGphdmEubGFuZy5PYmplY3QpbG9uZzEpKT09KC0xKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiY3RvMDA2IikpLm9rPShsb25nMi5jb21wYXJlVG8oKGphdmEubGFuZy5PYmplY3QpbG9uZzIpKT09MDsKKyAge3RyeXsKKyAgIGQuY29tcGFyZVRvKChqYXZhLmxhbmcuT2JqZWN0KW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ5Mil7CisgICBmbGFnPXRydWU7IC8vIHNob3VsZCBnZXQgaGVyZQorICB9fQorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJjdG8xMDEiKSkub2s9ZmxhZzsKKyAge3RyeXsKKyAgIGQuY29tcGFyZVRvKChqYXZhLmxhbmcuT2JqZWN0KSJmb28iKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5DbGFzc0Nhc3RFeGNlcHRpb24gJDkzKXsKKyAgIGZsYWc9dHJ1ZTsgLy8gc2hvdWxkIGdldCBoZXJlCisgIH19CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImN0bzEwMiIpKS5vaz1mbGFnOworICBzdW1tYXJ5KCJjb21wYXJlVG8oT2JqKSIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjZG91YmxlVmFsdWV9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnZG91YmxldmFsdWUoKXsKKyAgamF2YS5sYW5nLlN0cmluZyB2YWw7CisgIC8vIDE5OTkuMDMuMDcgSW5maW5pdGllcyBubyBsb25nZXIgZXJyb3JzCisgIHZhbD0iLTEiOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJkb3YwMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodmFsKSkuZG91YmxlVmFsdWUoKSk9PSgobmV3IGphdmEubGFuZy5Eb3VibGUodmFsKSkuZG91YmxlVmFsdWUoKSk7CisgIHZhbD0iLTAuMSI7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRvdjAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2YWwpKS5kb3VibGVWYWx1ZSgpKT09KChuZXcgamF2YS5sYW5nLkRvdWJsZSh2YWwpKS5kb3VibGVWYWx1ZSgpKTsKKyAgdmFsPSIwIjsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZG92MDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHZhbCkpLmRvdWJsZVZhbHVlKCkpPT0oKG5ldyBqYXZhLmxhbmcuRG91YmxlKHZhbCkpLmRvdWJsZVZhbHVlKCkpOworICB2YWw9IjAuMSI7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRvdjAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2YWwpKS5kb3VibGVWYWx1ZSgpKT09KChuZXcgamF2YS5sYW5nLkRvdWJsZSh2YWwpKS5kb3VibGVWYWx1ZSgpKTsKKyAgdmFsPSIxIjsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZG92MDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHZhbCkpLmRvdWJsZVZhbHVlKCkpPT0oKG5ldyBqYXZhLmxhbmcuRG91YmxlKHZhbCkpLmRvdWJsZVZhbHVlKCkpOworICB2YWw9IjFlMTAwMCI7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImRvdjAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2YWwpKS5kb3VibGVWYWx1ZSgpKT09amF2YS5sYW5nLkRvdWJsZS5QT1NJVElWRV9JTkZJTklUWTsKKyAgdmFsPSItMWUxMDAwIjsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZG92MDA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHZhbCkpLmRvdWJsZVZhbHVlKCkpPT1qYXZhLmxhbmcuRG91YmxlLk5FR0FUSVZFX0lORklOSVRZOworICBzdW1tYXJ5KCJkb3VibGVWYWx1ZSIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjZXF1YWxzfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ2VxdWFscygpeworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkOworICBkPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgxNyk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImVxdTAwMSIpKS5vaz0oIShkLmVxdWFscygoamF2YS5sYW5nLk9iamVjdCludWxsKSkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJlcXUwMDIiKSkub2s9KCEoZC5lcXVhbHMoKGphdmEubGFuZy5PYmplY3QpImZvbyIpKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImVxdTAwMyIpKS5vaz0oIShkLmVxdWFscygoamF2YS5sYW5nLk9iamVjdCkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDY2KSkpKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImVxdTAwNCIpKS5vaz1kLmVxdWFscygoamF2YS5sYW5nLk9iamVjdClkKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZXF1MDA1IikpLm9rPWQuZXF1YWxzKChqYXZhLmxhbmcuT2JqZWN0KSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDEwKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCg3KSkpKTsKKyAgc3VtbWFyeSgiZXF1YWxzIik7CisgIHJldHVybjt9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNmbG9hdFZhbHVlfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ2Zsb2F0dmFsdWUoKXsKKyAgamF2YS5sYW5nLlN0cmluZyB2YWw7CisgIC8vIDE5OTkuMDMuMDcgSW5maW5pdGllcyBubyBsb25nZXIgZXJyb3JzCisgIHZhbD0iLTEiOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmbHYwMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodmFsKSkuZmxvYXRWYWx1ZSgpKT09KChuZXcgamF2YS5sYW5nLkZsb2F0KHZhbCkpLmZsb2F0VmFsdWUoKSk7CisgIHZhbD0iLTAuMSI7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZsdjAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2YWwpKS5mbG9hdFZhbHVlKCkpPT0oKG5ldyBqYXZhLmxhbmcuRmxvYXQodmFsKSkuZmxvYXRWYWx1ZSgpKTsKKyAgdmFsPSIwIjsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZmx2MDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHZhbCkpLmZsb2F0VmFsdWUoKSk9PSgobmV3IGphdmEubGFuZy5GbG9hdCh2YWwpKS5mbG9hdFZhbHVlKCkpOworICB2YWw9IjAuMSI7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZsdjAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2YWwpKS5mbG9hdFZhbHVlKCkpPT0oKG5ldyBqYXZhLmxhbmcuRmxvYXQodmFsKSkuZmxvYXRWYWx1ZSgpKTsKKyAgdmFsPSIxIjsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZmx2MDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHZhbCkpLmZsb2F0VmFsdWUoKSk9PSgobmV3IGphdmEubGFuZy5GbG9hdCh2YWwpKS5mbG9hdFZhbHVlKCkpOworICB2YWw9IjFlMjAwIjsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZmx2MDA2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHZhbCkpLmZsb2F0VmFsdWUoKSk9PWphdmEubGFuZy5GbG9hdC5QT1NJVElWRV9JTkZJTklUWTsKKyAgdmFsPSItMWUyMDAiOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmbHYwMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodmFsKSkuZmxvYXRWYWx1ZSgpKT09amF2YS5sYW5nLkZsb2F0Lk5FR0FUSVZFX0lORklOSVRZOworICB2YWw9IjFlMTAwMCI7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZsdjAwOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2YWwpKS5mbG9hdFZhbHVlKCkpPT1qYXZhLmxhbmcuRmxvYXQuUE9TSVRJVkVfSU5GSU5JVFk7CisgIHZhbD0iLTFlMTAwMCI7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZsdjAwOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2YWwpKS5mbG9hdFZhbHVlKCkpPT1qYXZhLmxhbmcuRmxvYXQuTkVHQVRJVkVfSU5GSU5JVFk7CisgIHN1bW1hcnkoImZsb2F0VmFsdWUiKTsKKyAgcmV0dXJuO30KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI2Zvcm1hdH0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdmb3JtYXQoKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBpbnQgZW5nOworICBpbnQgc2NpOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkMDQ7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGQwNTsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgZDA2OworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkMTU7CisgIGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlPW51bGw7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGQwNTA7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGQxNTA7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIG0wNTA7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIG0xNTA7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGQwNTE7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGQxNTE7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGQwMDA7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGQ1MDA7CisgIGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uIGFlPW51bGw7CisgIC8vIDE5OTkuMDIuMDkgbm93IG9ubHkgdHdvIHNpZ25hdHVyZXMgZm9yIGZvcm1hdCgpLCBzbyBzb21lIHRlc3RzIGJlbG93CisgIC8vICAgICAgICAgICAgbWF5IG5vdyBiZSByZWR1bmRhbnQKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIuMyIpKS5mb3JtYXQoLTEsLTEpKS5lcXVhbHMoIjEyLjMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMTIuNzMiKSkuZm9ybWF0KC0xLC0xKSkuZXF1YWxzKCItMTIuNzMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwMCIpKS5mb3JtYXQoLTEsLTEpKS5lcXVhbHMoIjAuMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiM0UrMyIpKS5mb3JtYXQoLTEsLTEpKS5lcXVhbHMoIjMwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLmZvcm1hdCg0LC0xKSkuZXF1YWxzKCIgICAzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS43MyIpKS5mb3JtYXQoNCwwKSkuZXF1YWxzKCIgICAyIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS43MyIpKS5mb3JtYXQoNCwxKSkuZXF1YWxzKCIgICAxLjciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjc1IikpLmZvcm1hdCg0LDEpKS5lcXVhbHMoIiAgIDEuOCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwMDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNSIpKS5mb3JtYXQoNCwxKSkuZXF1YWxzKCIgICAwLjUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1IikpLmZvcm1hdCg0LDEpKS5lcXVhbHMoIiAgIDAuMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwMTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDQiKSkuZm9ybWF0KDQsMSkpLmVxdWFscygiICAgMC4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5mb3JtYXQoNCwwKSkuZXF1YWxzKCIgICAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjAxMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5mb3JtYXQoNCwxKSkuZXF1YWxzKCIgICAwLjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDE0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLmZvcm1hdCg0LDIpKS5lcXVhbHMoIiAgIDAuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDE1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLmZvcm1hdCg0LDMpKS5lcXVhbHMoIiAgIDAuMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjAxNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5mb3JtYXQoNCw0KSkuZXF1YWxzKCIgICAwLjAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDE3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5mb3JtYXQoNCwwKSkuZXF1YWxzKCIgICAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjAxOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuZm9ybWF0KDQsMSkpLmVxdWFscygiICAgMC4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjAxOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuZm9ybWF0KDQsMikpLmVxdWFscygiICAgMC4wMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwMjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA0IikpLmZvcm1hdCg0LDIpKS5lcXVhbHMoIiAgIDAuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDIxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5mb3JtYXQoNCwzKSkuZXF1YWxzKCIgICAwLjAwNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwMjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLmZvcm1hdCg0LDQpKS5lcXVhbHMoIiAgIDAuMDA1MCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDIzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjczIikpLmZvcm1hdCg0LDIpKS5lcXVhbHMoIiAgIDEuNzMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDI0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjczIikpLmZvcm1hdCg0LDMpKS5lcXVhbHMoIiAgIDEuNzMwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjAyNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS43NiIpKS5mb3JtYXQoNCwxKSkuZXF1YWxzKCIgIC0wLjgiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDI2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMTIuNzMiKSkuZm9ybWF0KC0xLDQpKS5lcXVhbHMoIi0xMi43MzAwIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwMjciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMuMDMiKSkuZm9ybWF0KDQsLTEpKS5lcXVhbHMoIiAgIDMuMDMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDI4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzLjAzIikpLmZvcm1hdCg0LDEpKS5lcXVhbHMoIiAgIDMuMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwMjkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMuMDMiKSkuZm9ybWF0KDQsLTEsMywtMSwtMSwtMSkpLmVxdWFscygiICAgMy4wMyAgICAgIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjAzMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMy4wMyIpKS5mb3JtYXQoLTEsLTEsMywtMSwtMSwtMSkpLmVxdWFscygiMy4wMyAgICAgIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjAzMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNzMiKSkuZm9ybWF0KC0xLC0xLC0xLDQsLTEsLTEpKS5lcXVhbHMoIjEuMjM0NTczRSs0Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjAzMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNzMiKSkuZm9ybWF0KC0xLC0xLC0xLDUsLTEsLTEpKS5lcXVhbHMoIjEyMzQ1LjczIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjAzMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNzMiKSkuZm9ybWF0KC0xLC0xLC0xLDYsLTEsLTEpKS5lcXVhbHMoIjEyMzQ1LjczIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwMzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1LjczIikpLmZvcm1hdCgtMSw4LC0xLDMsLTEsLTEpKS5lcXVhbHMoIjEuMjM0NTczMDBFKzQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDM1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NS43MyIpKS5mb3JtYXQoLTEsNywtMSwzLC0xLC0xKSkuZXF1YWxzKCIxLjIzNDU3MzBFKzQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDM2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NS43MyIpKS5mb3JtYXQoLTEsNiwtMSwzLC0xLC0xKSkuZXF1YWxzKCIxLjIzNDU3M0UrNCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwMzciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1LjczIikpLmZvcm1hdCgtMSw1LC0xLDMsLTEsLTEpKS5lcXVhbHMoIjEuMjM0NTdFKzQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDM4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NS43MyIpKS5mb3JtYXQoLTEsNCwtMSwzLC0xLC0xKSkuZXF1YWxzKCIxLjIzNDZFKzQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDM5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NS43MyIpKS5mb3JtYXQoLTEsMywtMSwzLC0xLC0xKSkuZXF1YWxzKCIxLjIzNUUrNCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwNDAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1LjczIikpLmZvcm1hdCgtMSwyLC0xLDMsLTEsLTEpKS5lcXVhbHMoIjEuMjNFKzQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDQxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NS43MyIpKS5mb3JtYXQoLTEsMSwtMSwzLC0xLC0xKSkuZXF1YWxzKCIxLjJFKzQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDQyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NS43MyIpKS5mb3JtYXQoLTEsMCwtMSwzLC0xLC0xKSkuZXF1YWxzKCIxRSs0Iik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwNDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5Ljk5IikpLmZvcm1hdCgtMSw2LC0xLDMsLTEsLTEpKS5lcXVhbHMoIjkuOTk5OTk5RSs0Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjA0NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTkuOTkiKSkuZm9ybWF0KC0xLDUsLTEsMywtMSwtMSkpLmVxdWFscygiMS4wMDAwMEUrNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwNDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5Ljk5IikpLmZvcm1hdCgtMSwyLC0xLDMsLTEsLTEpKS5lcXVhbHMoIjEuMDBFKzUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDQ2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTk5OS45OSIpKS5mb3JtYXQoLTEsMCwtMSwzLC0xLC0xKSkuZXF1YWxzKCIxRSs1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjA0NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTkuOTkiKSkuZm9ybWF0KDMsMCwtMSwzLC0xLC0xKSkuZXF1YWxzKCIgIDFFKzUiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjA0OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNzMiKSkuZm9ybWF0KC0xLC0xLDIsMiwtMSwtMSkpLmVxdWFscygiMS4yMzQ1NzNFKzA0Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjA0OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNzMiKSkuZm9ybWF0KC0xLDMsLTEsMCwtMSwtMSkpLmVxdWFscygiMS4yMzVFKzQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDUwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjIzNDU3MyIpKS5mb3JtYXQoLTEsMywtMSwwLC0xLC0xKSkuZXF1YWxzKCIxLjIzNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwNTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMy40NSIpKS5mb3JtYXQoLTEsMywyLDAsLTEsLTEpKS5lcXVhbHMoIjEuMjM1RSswMiIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDUyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NCIpKS5mb3JtYXQoLTEsMCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwNTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjQ0NCIpKS5mb3JtYXQoLTEsMCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwNTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNCIpKS5mb3JtYXQoLTEsMCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwNTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjQiKSkuZm9ybWF0KC0xLDApKS5lcXVhbHMoIjAiKTsKKyAgCisgIGVuZz1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuRU5HSU5FRVJJTkc7CisgIHNjaT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQzsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDYwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0LjUiKSkuZm9ybWF0KC0xLDMsMiwwLGVuZywtMSkpLmVxdWFscygiMS4yMzVFKzAzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjA2MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDUiKSkuZm9ybWF0KC0xLDMsMywwLGVuZywtMSkpLmVxdWFscygiMTIuMzQ1RSswMDMiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDYyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NSIpKS5mb3JtYXQoLTEsMywzLDAsc2NpLC0xKSkuZXF1YWxzKCIxLjIzNUUrMDA0Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjA2MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNC41IikpLmZvcm1hdCg0LDMsMiwwLGVuZywtMSkpLmVxdWFscygiICAgMS4yMzVFKzAzIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjA2NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDUiKSkuZm9ybWF0KDUsMywzLDAsZW5nLC0xKSkuZXF1YWxzKCIgICAxMi4zNDVFKzAwMyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwNjUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1IikpLmZvcm1hdCg2LDMsMywwLHNjaSwtMSkpLmVxdWFscygiICAgICAxLjIzNUUrMDA0Iik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwNjYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjM0NSIpKS5mb3JtYXQoLTEsMywyLDAsLTEsLTEpKS5lcXVhbHMoIjEuMjM1ICAgICIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwNjciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1LjczIikpLmZvcm1hdCgtMSwtMSwzLDYsLTEsLTEpKS5lcXVhbHMoIjEyMzQ1LjczICAgICAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDY4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NWUrNSIpKS5mb3JtYXQoLTEsMCkpLmVxdWFscygiMTIzNDUwMDAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwNjkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1ZSs1IikpLmZvcm1hdCgtMSwxKSkuZXF1YWxzKCIxMjM0NTAwMDAwLjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDcwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NWUrNSIpKS5mb3JtYXQoLTEsMikpLmVxdWFscygiMTIzNDUwMDAwMC4wMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwNzEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1ZSs1IikpLmZvcm1hdCgtMSwzKSkuZXF1YWxzKCIxMjM0NTAwMDAwLjAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwNzIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1ZSs1IikpLmZvcm1hdCgtMSw0KSkuZXF1YWxzKCIxMjM0NTAwMDAwLjAwMDAiKTsKKyAgCisgIC8vIHNvbWUgZnJvbSBBTlNJIERhbGxhcyBbTm92IDE5OThdCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjA3MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTkuOTk5IikpLmZvcm1hdCgtMSwyLC0xLDIsLTEsLTEpKS5lcXVhbHMoIjEwMC4wMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwNzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuOTk5OTkiKSkuZm9ybWF0KC0xLDQsMiwyLC0xLC0xKSkuZXF1YWxzKCIxLjAwMDAgICAgIik7CisgIAorICAvLyB0cnkgc29tZSByb3VuZGluZyBtb2RlcyBbZGVmYXVsdCBST1VORF9IQUxGX1VQIHdpZGVseSB0ZXN0ZWQgYWJvdmVdCisgIC8vIHRoZSBmaXJzdCBmZXcgYWxzbyB0ZXN0cyB0aGF0IGRlZmF1bHRzIGFyZSBhY2NlcHRlZCBmb3IgdGhlIG90aGVycworICBkMDQ9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA0Iik7CisgIGQwNT1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDUiKTsKKyAgZDA2PW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNiIpOworICBkMTU9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjE1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjA4MCIpKS5vaz0oZDA1LmZvcm1hdCgtMSwxKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDgxIikpLm9rPShkMDUuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApKS5lcXVhbHMoIjAuMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwODIiKSkub2s9KGQwNS5mb3JtYXQoLTEsMSwtMSwtMSwtMSwtMSkpLmVxdWFscygiMC4xIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjA4MyIpKS5vaz0oZDA1LmZvcm1hdCgtMSwtMSwtMSwtMSwtMSwtMSkpLmVxdWFscygiMC4wNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwODQiKSkub2s9KGQwNS5mb3JtYXQoLTEsLTEpKS5lcXVhbHMoIjAuMDUiKTsKKyAge3RyeXsKKyAgIGQwNS5mb3JtYXQoLTEsLTEsLTEsLTEsLTEsMzApOyAvLyBiYWQgbW9kZQorICAgZmxhZz1mYWxzZTsgLy8gc2hvdWxkbid0IGdldCBoZXJlCisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gJDk0KXtpYWU9JDk0OworICAgZmxhZz0oaWFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJCYWQgYXJndW1lbnQgNiB0byBmb3JtYXQ6IDMwIik7CisgIH19CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjA4NSIpKS5vaz1mbGFnOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDkwIikpLm9rPShkMDQuZm9ybWF0KC0xLDEpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwOTEiKSkub2s9KGQwNi5mb3JtYXQoLTEsMSkpLmVxdWFscygiMC4xIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjA5MiIpKS5vaz0oZDA0LmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04pKS5lcXVhbHMoIjAuMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwOTMiKSkub2s9KGQwNS5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDk0IikpLm9rPShkMDYuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTikpLmVxdWFscygiMC4xIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwOTUiKSkub2s9KGQwNC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMDk2IikpLm9rPShkMDUuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikpLmVxdWFscygiMC4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjA5NyIpKS5vaz0oZDA2LmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pKS5lcXVhbHMoIjAuMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwOTgiKSkub2s9KGQxNS5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKSkuZXF1YWxzKCIwLjIiKTsKKyAgZDA1MD1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDUwIik7CisgIGQxNTA9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjE1MCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IwOTkiKSkub2s9KGQwNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikpLmVxdWFscygiMC4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjEwMCIpKS5vaz0oZDE1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKSkuZXF1YWxzKCIwLjIiKTsKKyAgbTA1MD1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjA1MCIpOworICBtMTUwPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMTUwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjEwMSIpKS5vaz0obTA1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMTAyIikpLm9rPShtMTUwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pKS5lcXVhbHMoIi0wLjIiKTsKKyAgZDA1MT1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDUxIik7CisgIGQxNTE9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjE1MSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IxMDMiKSkub2s9KGQwNTEuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikpLmVxdWFscygiMC4xIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjEwNCIpKS5vaz0oZDE1MS5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKSkuZXF1YWxzKCIwLjIiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjEwNSIpKS5vaz0obTA1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfQ0VJTElORykpLmVxdWFscygiMC4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjEwNiIpKS5vaz0obTE1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfQ0VJTElORykpLmVxdWFscygiLTAuMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IxMDciKSkub2s9KGQwNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0NFSUxJTkcpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IxMDgiKSkub2s9KGQxNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0NFSUxJTkcpKS5lcXVhbHMoIjAuMiIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMTA5IikpLm9rPShtMDUwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUikpLmVxdWFscygiLTAuMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IxMTAiKSkub2s9KG0xNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0ZMT09SKSkuZXF1YWxzKCItMC4yIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjExMSIpKS5vaz0oZDA1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRkxPT1IpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IxMTIiKSkub2s9KGQxNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0ZMT09SKSkuZXF1YWxzKCIwLjEiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjExMyIpKS5vaz0obTA1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVVApKS5lcXVhbHMoIi0wLjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMTE0IikpLm9rPShtMTUwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VUCkpLmVxdWFscygiLTAuMiIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IxMTUiKSkub2s9KGQwNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VQKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMTE2IikpLm9rPShkMTUwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VUCkpLmVxdWFscygiMC4yIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IxMTciKSkub2s9KG0wNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0RPV04pKS5lcXVhbHMoIjAuMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IxMTgiKSkub2s9KG0xNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0RPV04pKS5lcXVhbHMoIi0wLjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMTE5IikpLm9rPShkMDUwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9ET1dOKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMTIwIikpLm9rPShkMTUwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9ET1dOKSkuZXF1YWxzKCIwLjEiKTsKKyAgCisgIGQwMDA9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwMCIpOworICBkNTAwPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41MDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMTIxIikpLm9rPShkMDAwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWSkpLmVxdWFscygiMC4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjEyMiIpKS5vaz0oZDAwMC5mb3JtYXQoLTEsMiwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVU5ORUNFU1NBUlkpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMTIzIikpLm9rPShkMDAwLmZvcm1hdCgtMSwzLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWSkpLmVxdWFscygiMC4wMDAiKTsKKyAge3RyeXsgLy8gdGhpcyBzaG91bGQgdHJhcC4uCisgICBkMDUwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWSk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkOTUpe2FlPSQ5NTsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJSb3VuZGluZyBuZWNlc3NhcnkiKTsKKyAgfX0KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMTI0IikpLm9rPWZsYWc7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjEyNSIpKS5vaz0oZDA1MC5mb3JtYXQoLTEsMiwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVU5ORUNFU1NBUlkpKS5lcXVhbHMoIjAuMDUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMTI2IikpLm9rPShkMDUwLmZvcm1hdCgtMSwzLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWSkpLmVxdWFscygiMC4wNTAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMTI3IikpLm9rPShkNTAwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWSkpLmVxdWFscygiMC41Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjEyOCIpKS5vaz0oZDUwMC5mb3JtYXQoLTEsMiwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVU5ORUNFU1NBUlkpKS5lcXVhbHMoIjAuNTAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMTI5IikpLm9rPShkNTAwLmZvcm1hdCgtMSwzLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWSkpLmVxdWFscygiMC41MDAiKTsKKyAgCisgIC8vIGJhZCBuZWdzIC0tCisgIHt0cnl7CisgICBkMDUwLmZvcm1hdCgtMiwtMSwtMSwtMSwtMSwtMSk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uICQ5Nil7CisgICBmbGFnPXRydWU7CisgIH19CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjEzMSIpKS5vaz1mbGFnOworICB7dHJ5eworICAgZDA1MC5mb3JtYXQoLTEsLTIsLTEsLTEsLTEsLTEpOworICAgZmxhZz1mYWxzZTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiAkOTcpeworICAgZmxhZz10cnVlOworICB9fQorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IxMzIiKSkub2s9ZmxhZzsKKyAge3RyeXsKKyAgIGQwNTAuZm9ybWF0KC0xLC0xLC0yLC0xLC0xLC0xKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gJDk4KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfX0KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMTMzIikpLm9rPWZsYWc7CisgIHt0cnl7CisgICBkMDUwLmZvcm1hdCgtMSwtMSwtMSwtMiwtMSwtMSk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uICQ5OSl7CisgICBmbGFnPXRydWU7CisgIH19CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImZvcjEzNCIpKS5vaz1mbGFnOworICB7dHJ5eworICAgZDA1MC5mb3JtYXQoLTEsLTEsLTEsLTEsLTIsLTEpOworICAgZmxhZz1mYWxzZTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiAkMTAwKXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfX0KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiZm9yMTM1IikpLm9rPWZsYWc7CisgIHt0cnl7CisgICBkMDUwLmZvcm1hdCgtMSwtMSwtMSwtMSwtMSwtMik7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uICQxMDEpeworICAgZmxhZz10cnVlOworICB9fQorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJmb3IxMzYiKSkub2s9ZmxhZzsKKyAgCisgIHN1bW1hcnkoImZvcm1hdCIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjaGFzaENvZGV9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnaGFzaGNvZGUoKXsKKyAgamF2YS5sYW5nLlN0cmluZyBoczsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgZDsKKyAgaHM9IjI3ODI3ODE3IjsKKyAgZD1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoaHMpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJoYXMwMDEiKSkub2s9KGQuaGFzaENvZGUoKSk9PShocy5oYXNoQ29kZSgpKTsKKyAgaHM9IjEuMjY1RSsyMDAiOworICBkPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChocyk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImhhczAwMiIpKS5vaz0oZC5oYXNoQ29kZSgpKT09KGhzLmhhc2hDb2RlKCkpOworICBocz0iMTI2LjVFKzIwMCI7CisgIGQ9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGhzKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiaGFzMDAzIikpLm9rPShkLmhhc2hDb2RlKCkpIT0oaHMuaGFzaENvZGUoKSk7CisgIHN1bW1hcnkoImhhc2hDb2RlIik7CisgIHJldHVybjt9CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNpbnRWYWx1ZX0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdpbnR2YWx1ZSgpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGphdmEubGFuZy5TdHJpbmcgdj1udWxsOworICBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiBhZT1udWxsOworICBqYXZhLmxhbmcuU3RyaW5nIGJhZHN0cmluZ3NbXTsKKyAgaW50IGk9MDsKKyAgamF2YS5sYW5nLlN0cmluZyBub3JtPW51bGw7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGRpbWF4OworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBudW09bnVsbDsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgZHY9bnVsbDsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgZGltaW47CisgIAorICAKKyAgLy8gaW50VmFsdWUgLS0KKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImludjAwMSIpKS5vaz1pbWluPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChpbWluKSkuaW50VmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImludjAwMiIpKS5vaz0oKDk5KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OSIpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiaW52MDAzIikpLm9rPSgoMSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiaW52MDA0IikpLm9rPSgoMCkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiaW52MDA1IikpLm9rPSgoLTEpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLmludFZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJpbnYwMDYiKSkub2s9KCgtOTkpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi05OSIpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiaW52MDA3IikpLm9rPWltYXg9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGltYXgpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiaW52MDA4IikpLm9rPSgoNSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNS4wIikpLmludFZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJpbnYwMDkiKSkub2s9KCg1KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1LjMiKSkuaW50VmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImludjAxMCIpKS5vaz0oKDUpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuNSIpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiaW52MDExIikpLm9rPSgoNSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNS43IikpLmludFZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJpbnYwMTIiKSkub2s9KCg1KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1LjkiKSkuaW50VmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImludjAxMyIpKS5vaz0oKC01KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNS4wIikpLmludFZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJpbnYwMTQiKSkub2s9KCgtNSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTUuMyIpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiaW52MDE1IikpLm9rPSgoLTUpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01LjUiKSkuaW50VmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImludjAxNiIpKS5vaz0oKC01KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNS43IikpLmludFZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJpbnYwMTciKSkub2s9KCgtNSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTUuOSIpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiaW52MDE4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI4ODg4ODg4ODg4OCIpKS5pbnRWYWx1ZSgpKT09KC0xMzA1NDI0MzI4KTsgLy8gdWdoCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImludjAxOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTg4ODg4ODg4ODg4IikpLmludFZhbHVlKCkpPT0xMzA1NDI0MzI4OyAvLyB1Z2gKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiaW52MDIwIikpLm9rPSgoaW1pbikpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgoKChsb25nKWltYXgpKSsxKSkuaW50VmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImludjAyMSIpKS5vaz0oKGltYXgpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoKCgobG9uZylpbWluKSktMSkpLmludFZhbHVlKCkpOworICAKKyAgLy8gaW50VmFsdWVFeGFjdCAtLQorICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiaW52MTAxIikpLm9rPWltaW49PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGltaW4pKS5pbnRWYWx1ZUV4YWN0KCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJpbnYxMDIiKSkub2s9KCg5OSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTkiKSkuaW50VmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImludjEwMyIpKS5vaz0oKDEpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuaW50VmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImludjEwNCIpKS5vaz0oKDApKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuaW50VmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImludjEwNSIpKS5vaz0oKC0xKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiaW52MTA2IikpLm9rPSgoLTk5KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItOTkiKSkuaW50VmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImludjEwNyIpKS5vaz1pbWF4PT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChpbWF4KSkuaW50VmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImludjEwOCIpKS5vaz0oKDUpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuMCIpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiaW52MTA5IikpLm9rPSgoLTUpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01LjAiKSkuaW50VmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImludjExMCIpKS5vaz1pbWF4PT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChpbWF4KSkuaW50VmFsdWVFeGFjdCgpKTsKKyAgCisgIHt0cnl7CisgICB2PSItODg1ODg2ODg4ODgiOworICAgKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2KSkuaW50VmFsdWVFeGFjdCgpOworICAgZmxhZz1mYWxzZTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDEwMil7YWU9JDEwMjsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK3YpOworICB9fQorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJpbnYyMDAiKSkub2s9ZmxhZzsKKyAgCisgIC8vIHRoaXMgb25lIGNvdWxkIHJhaXNlIGVpdGhlciBvdmVyZmxvdyBvciBiYWQgZGVjaW1hbCBwYXJ0CisgIHt0cnl7CisgICB2PSI4ODA4ODgxODg4OC4wMDAwMSI7CisgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHYpKS5pbnRWYWx1ZUV4YWN0KCk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTAzKXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfX0KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgiaW52MjAxIikpLm9rPWZsYWc7CisgIAorICAvLyAxOTk5LjEwLjI4OiB0aGUgdGVzdGNhc2VzIG1hcmtlZCAnKicgZmFpbGVkCisgIGJhZHN0cmluZ3M9bmV3IGphdmEubGFuZy5TdHJpbmdbXXsiMTIzNDU2Nzg5MDEiLChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoaW1heCkpLmFkZChvbmUpLnRvU3RyaW5nKCksKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChpbWluKSkuc3VidHJhY3Qob25lKS50b1N0cmluZygpLCIzNzMxMzY3MjkzIiwiNDczMTM2NzI5MyIsIjU3MzEzNjcyOTMiLCI2NzMxMzY3MjkzIiwiNzczMTM2NzI5MyIsIjg3MzEzNjcyOTMiLCI5NzMxMzY3MjkzIiwiLTM3MzEzNjcyOTMiLCItNDczMTM2NzI5MyIsIi01NzMxMzY3MjkzIiwiLTY3MzEzNjcyOTMiLCItNzczMTM2NzI5MyIsIi04NzMxMzY3MjkzIiwiLTk3MzEzNjcyOTMiLChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoaW1pbikpLm11bHRpcGx5KHR3bykudG9TdHJpbmcoKSwobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGltYXgpKS5tdWx0aXBseSh0d28pLnRvU3RyaW5nKCksKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChpbWluKSkubXVsdGlwbHkodGVuKS50b1N0cmluZygpLChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoaW1heCkpLm11bHRpcGx5KHRlbikudG9TdHJpbmcoKSwiNDczMTM2NzI5MyIsIjQ4MzEzNjcyOTMiLCI0OTMxMzY3MjkzIiwiNTAzMTM2NzI5MyIsIjUxMzEzNjcyOTMiLCI1MjMxMzY3MjkzIiwiNTMzMTM2NzI5MyIsIjU0MzEzNjcyOTMiLCI1NTMxMzY3MjkzIiwiNTYzMTM2NzI5MyIsIjU3MzEzNjcyOTMiLCI1ODMxMzY3MjkzIiwiNTkzMTM2NzI5MyIsIjYwMzEzNjcyOTMiLCI2MTMxMzY3MjkzIiwiNjIzMTM2NzI5MyIsIjYzMzEzNjcyOTMiLCI2NDMxMzY3MjkzIiwiNjUzMTM2NzI5MyIsIjY2MzEzNjcyOTMiLCI2NzMxMzY3MjkzIiwiMjIwMDAwMDAwMCIsIjIzMDAwMDAwMDAiLCIyNDAwMDAwMDAwIiwiMjUwMDAwMDAwMCIsIjI2MDAwMDAwMDAiLCIyNzAwMDAwMDAwIiwiMjgwMDAwMDAwMCIsIjI5MDAwMDAwMDAiLCItMjIwMDAwMDAwMCIsIi0yMzAwMDAwMDAwIiwiLTI0MDAwMDAwMDAiLCItMjUwMDAwMDAwMCIsIi0yNjAwMDAwMDAwIiwiLTI3MDAwMDAwMDAiLCItMjgwMDAwMDAwMCIsIi0yOTAwMDAwMDAwIiwiMjVFKzgiLCItMjVFKzgiLCItMTIzNDU2Nzg5MDEifTsgLy8gMjIwCisgIC8vIDIyMQorICAvLyAyMjIKKyAgLy8gMjIzCisgIC8vIDIyNAorICAvLyAyMjUgICoKKyAgLy8gMjI2CisgIC8vIDIyNworICAvLyAyMjgKKyAgLy8gMjI5ICAqCisgIC8vIDIzMAorICAvLyAyMzEKKyAgLy8gMjMyICAqCisgIC8vIDIzMworICAvLyAyMzQKKyAgLy8gMjM1CisgIC8vIDIzNiAgKgorICAvLyAyMzcKKyAgLy8gMjM4CisgIC8vIDIzOQorICAvLyAyNDAKKyAgLy8gMjQxCisgIC8vIDI0MiAgKgorICAvLyAyNDMgICoKKyAgLy8gMjQ0ICAqCisgIC8vIDI0NSAgKgorICAvLyAyNDYgICoKKyAgLy8gMjQ3ICAqCisgIC8vIDI0OCAgKgorICAvLyAyNDkgICoKKyAgLy8gMjUwICAqCisgIC8vIDI1MSAgKgorICAvLyAyNTIgICoKKyAgLy8gMjUzICAqCisgIC8vIDI1NCAgKgorICAvLyAyNTUgICoKKyAgLy8gMjU2ICAqCisgIC8vIDI1NyAgKgorICAvLyAyNTggICoKKyAgLy8gMjU5CisgIC8vIDI2MAorICAvLyAyNjEKKyAgLy8gMjYyCisgIC8vIDI2MworICAvLyAyNjQKKyAgLy8gMjY1CisgIC8vIDI2NgorICAvLyAyNjcKKyAgLy8gMjY4CisgIC8vIDI2OQorICAvLyAyNzAKKyAgLy8gMjcxCisgIC8vIDI3MgorICAvLyAyNzMKKyAgLy8gMjc0CisgIC8vIDI3NQorICAvLyAyNzYKKyAgLy8gMjc3CisgIC8vIDI3OAorICAvLyAyNzkKKyAgLy8gMjgwCisgIHtpbnQgJDEwND1iYWRzdHJpbmdzLmxlbmd0aDtpPTA7aTpmb3IoOyQxMDQ+MDskMTA0LS0saSsrKXsKKyAgIHt0cnl7CisgICAgdj1iYWRzdHJpbmdzW2ldOworICAgIChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodikpLmludFZhbHVlRXhhY3QoKTsKKyAgICBmbGFnPWZhbHNlOworICAgfQorICAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMDUpe2FlPSQxMDU7CisgICAgbm9ybT0obmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHYpKS50b1N0cmluZygpOworICAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK25vcm0pOworICAgfX0KKyAgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImludiIrKDIyMCtpKSkpLm9rPWZsYWc7CisgICB9CisgIH0vKmkqLworICAKKyAgLy8gbm93IHNsaXAgaW4gc29tZSBzaW5nbGUgYml0cy4uLgorICBkaW1heD1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoaW1heCk7CisgIHtpPTA7aTpmb3IoO2k8PTQ5O2krKyl7CisgICB7dHJ5eworICAgIG51bT10d28ucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChpKSxtYzUwKTsKKyAgICBkdj1kaW1heC5hZGQobnVtLG1jNTApOworICAgIGR2LmludFZhbHVlRXhhY3QoKTsKKyAgICBmbGFnPWZhbHNlOworICAgfQorICAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMDYpe2FlPSQxMDY7CisgICAgbm9ybT1kdi50b1N0cmluZygpOworICAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK25vcm0pOworICAgfX0KKyAgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImludiIrKDMwMCtpKSkpLm9rPWZsYWc7CisgICB9CisgIH0vKmkqLworICBkaW1pbj1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoaW1pbik7CisgIHtpPTUwO2k6Zm9yKDtpPD05OTtpKyspeworICAge3RyeXsKKyAgICBudW09dHdvLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoaSksbWM1MCk7CisgICAgZHY9ZGltaW4uc3VidHJhY3QobnVtLG1jNTApOworICAgIGR2LmludFZhbHVlRXhhY3QoKTsKKyAgICBmbGFnPWZhbHNlOworICAgfQorICAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMDcpe2FlPSQxMDc7CisgICAgbm9ybT1kdi50b1N0cmluZygpOworICAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK25vcm0pOworICAgfX0KKyAgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImludiIrKDMwMCtpKSkpLm9rPWZsYWc7CisgICB9CisgIH0vKmkqLworICAKKyAgLy8gdGhlIGZvbGxvd2luZyBzaG91bGQgYWxsIHJhaXNlIGJhZC1kZWNpbWFsLXBhcnQgZXhjZXB0aW9ucworICBiYWRzdHJpbmdzPW5ldyBqYXZhLmxhbmcuU3RyaW5nW117IjAuMDkiLCIwLjkiLCIwLjAxIiwiMC4xIiwiLTAuMDEiLCItMC4xIiwiMS4wMSIsIi0xLjAxIiwiLTEuMSIsIi0xMTEuMTExIiwiKzExMS4xMTEiLCIxLjA5IiwiMS4wNSIsIjEuMDQiLCIxLjk5IiwiMS45IiwiMS41IiwiMS40IiwiLTEuMDkiLCItMS4wNSIsIi0xLjA0IiwiLTEuOTkiLCItMS45IiwiLTEuNSIsIi0xLjQiLCIxRS0xMDAwIiwiLTFFLTEwMDAiLCIxMUUtMSIsIjEuNSJ9OyAvLyA0MDAtNDAzCisgIC8vIDQwNC00MDcKKyAgLy8gNDA4LTQxMQorICAvLyA0MTItNDE2CisgIC8vIDQxNy00MjAKKyAgLy8gNDIxLTQyNAorICAvLyA0MjUtNDI4CisgIAorICB7aW50ICQxMDg9YmFkc3RyaW5ncy5sZW5ndGg7aT0wO2k6Zm9yKDskMTA4PjA7JDEwOC0tLGkrKyl7CisgICB7dHJ5eworICAgIHY9YmFkc3RyaW5nc1tpXTsKKyAgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHYpKS5pbnRWYWx1ZUV4YWN0KCk7CisgICAgZmxhZz1mYWxzZTsKKyAgIH0KKyAgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTA5KXthZT0kMTA5OworICAgIG5vcm09KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2KSkudG9TdHJpbmcoKTsKKyAgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiRGVjaW1hbCBwYXJ0IG5vbi16ZXJvOiIrIiAiK25vcm0pOworICAgfX0KKyAgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImludiIrKDQwMCtpKSkpLm9rPWZsYWc7CisgICB9CisgIH0vKmkqLworICAKKyAgc3VtbWFyeSgiaW50VmFsdWUrIik7CisgIHJldHVybjt9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNsb25nVmFsdWV9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnbG9uZ3ZhbHVlKCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgamF2YS5sYW5nLlN0cmluZyB2PW51bGw7CisgIGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uIGFlPW51bGw7CisgIGphdmEubGFuZy5TdHJpbmcgYmFkc3RyaW5nc1tdOworICBpbnQgaT0wOworICBqYXZhLmxhbmcuU3RyaW5nIG5vcm09bnVsbDsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgZGxtYXg7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIG51bT1udWxsOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkdj1udWxsOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkbG1pbjsKKyAgCisgIAorICAvLyBsb25nVmFsdWUgLS0KKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImxvdjAwMSIpKS5vaz1sbWluPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChsbWluKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJsb3YwMDIiKSkub2s9KCgobG9uZyk5OSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTkiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJsb3YwMDMiKSkub2s9KCgobG9uZykxKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibG92MDA0IikpLm9rPSgoKGxvbmcpMCkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImxvdjAwNSIpKS5vaz0oKChsb25nKS0xKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImxvdjAwNiIpKS5vaz0oKChsb25nKS05OSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTk5IikpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibG92MDA3IikpLm9rPWxtYXg9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGxtYXgpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImxvdjAwOCIpKS5vaz0oKChsb25nKTUpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuMCIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImxvdjAwOSIpKS5vaz0oKChsb25nKTUpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuMyIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImxvdjAxMCIpKS5vaz0oKChsb25nKTUpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuNSIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImxvdjAxMSIpKS5vaz0oKChsb25nKTUpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuNyIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImxvdjAxMiIpKS5vaz0oKChsb25nKTUpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuOSIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImxvdjAxMyIpKS5vaz0oKChsb25nKS01KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNS4wIikpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibG92MDE0IikpLm9rPSgoKGxvbmcpLTUpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01LjMiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJsb3YwMTUiKSkub2s9KCgobG9uZyktNSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTUuNSIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImxvdjAxNiIpKS5vaz0oKChsb25nKS01KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNS43IikpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibG92MDE3IikpLm9rPSgoKGxvbmcpLTUpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01LjkiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJsb3YwMTgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjg4ODg4ODg4ODg5OTk5OTk5OTk5OCIpKS5sb25nVmFsdWUoKSk9PTM0NDUxNzMzNjE5NDE1MjI0MzBMOyAvLyB1Z2gKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibG92MDE5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItODg4ODg4ODg4ODk5OTk5OTk5OTk4IikpLmxvbmdWYWx1ZSgpKT09KC0zNDQ1MTczMzYxOTQxNTIyNDMwTCk7IC8vIHVnaAorICAKKyAgLy8gbG9uZ1ZhbHVlRXhhY3QgLS0KKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImxvdjEwMSIpKS5vaz1sbWluPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChsbWluKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJsb3YxMDIiKSkub2s9KCgobG9uZyk5OSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTkiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJsb3YxMDMiKSkub2s9KCgobG9uZykxKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibG92MTA0IikpLm9rPSgoKGxvbmcpMCkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImxvdjEwNSIpKS5vaz0oKChsb25nKS0xKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImxvdjEwNiIpKS5vaz0oKChsb25nKS05OSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTk5IikpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibG92MTA3IikpLm9rPWxtYXg9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGxtYXgpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImxvdjEwOCIpKS5vaz0oKChsb25nKTUpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuMCIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImxvdjEwOSIpKS5vaz0oKChsb25nKS01KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNS4wIikpLmxvbmdWYWx1ZSgpKTsKKyAgCisgIHt0cnl7CisgICB2PSItODg4ODg4ODg4ODk5OTk5OTk5OTk4IjsKKyAgIChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodikpLmxvbmdWYWx1ZUV4YWN0KCk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTEwKXthZT0kMTEwOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkNvbnZlcnNpb24gb3ZlcmZsb3c6IisiICIrdik7CisgIH19CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImxvdjIwMCIpKS5vaz1mbGFnOworICB7dHJ5eworICAgdj0iODg4ODg4ODc0ODc0ODc0Nzk0ODg4ODgiOworICAgKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2KSkubG9uZ1ZhbHVlRXhhY3QoKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMTEpe2FlPSQxMTE7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiQ29udmVyc2lvbiBvdmVyZmxvdzoiKyIgIit2KTsKKyAgfX0KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibG92MjAxIikpLm9rPWZsYWc7CisgIHt0cnl7CisgICB2PSIxLjUiOworICAgKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2KSkubG9uZ1ZhbHVlRXhhY3QoKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMTIpe2FlPSQxMTI7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiRGVjaW1hbCBwYXJ0IG5vbi16ZXJvOiIrIiAiK3YpOworICB9fQorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJsb3YyMDIiKSkub2s9ZmxhZzsKKyAgCisgIGJhZHN0cmluZ3M9bmV3IGphdmEubGFuZy5TdHJpbmdbXXsiMTIzNDU2Nzg5MDExMDk4NzY1NDMyMSIsIi0xMjM0NTY3ODkwMTEwOTg3NjU0MzIxIiwobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGxtYXgpKS5hZGQob25lKS50b1N0cmluZygpLChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwobG1pbikpLnN1YnRyYWN0KG9uZSkudG9TdHJpbmcoKSwobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGxtaW4pKS5tdWx0aXBseSh0d28pLnRvU3RyaW5nKCksKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChsbWF4KSkubXVsdGlwbHkodHdvKS50b1N0cmluZygpLChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwobG1pbikpLm11bHRpcGx5KHRlbikudG9TdHJpbmcoKSwobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGxtYXgpKS5tdWx0aXBseSh0ZW4pLnRvU3RyaW5nKCksIjkyMjMzNzIwMzY4NTQ3NzU4MTgiLCI5MzIzMzcyMDM2ODU0Nzc1ODE4IiwiOTQyMzM3MjAzNjg1NDc3NTgxOCIsIjk1MjMzNzIwMzY4NTQ3NzU4MTgiLCI5NjIzMzcyMDM2ODU0Nzc1ODE4IiwiOTcyMzM3MjAzNjg1NDc3NTgxOCIsIjk4MjMzNzIwMzY4NTQ3NzU4MTgiLCI5OTIzMzcyMDM2ODU0Nzc1ODE4IiwiLTkyMjMzNzIwMzY4NTQ3NzU4MTgiLCItOTMyMzM3MjAzNjg1NDc3NTgxOCIsIi05NDIzMzcyMDM2ODU0Nzc1ODE4IiwiLTk1MjMzNzIwMzY4NTQ3NzU4MTgiLCItOTYyMzM3MjAzNjg1NDc3NTgxOCIsIi05NzIzMzcyMDM2ODU0Nzc1ODE4IiwiLTk4MjMzNzIwMzY4NTQ3NzU4MTgiLCItOTkyMzM3MjAzNjg1NDc3NTgxOCIsIjEyMzQ1Njc4OTAxMjM0NTY3ODkwIn07IC8vIDIyMAorICAvLyAyMjEKKyAgLy8gMjIyCisgIC8vIDIyMworICAvLyAyMjQKKyAgLy8gMjI1CisgIC8vIDIyNgorICAvLyAyMjcKKyAgLy8gMjI4CisgIC8vIDIyOQorICAvLyAyMzAKKyAgLy8gMjMxCisgIC8vIDIzMgorICAvLyAyMzMKKyAgLy8gMjM0CisgIC8vIDIzNQorICAvLyAyMzYKKyAgLy8gMjM3CisgIC8vIDIzOAorICAvLyAyMzkKKyAgLy8gMjQwCisgIC8vIDI0MQorICAvLyAyNDIKKyAgLy8gMjQzCisgIC8vIDI0NAorICB7aW50ICQxMTM9YmFkc3RyaW5ncy5sZW5ndGg7aT0wO2k6Zm9yKDskMTEzPjA7JDExMy0tLGkrKyl7CisgICB7dHJ5eworICAgIHY9YmFkc3RyaW5nc1tpXTsKKyAgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHYpKS5sb25nVmFsdWVFeGFjdCgpOworICAgIGZsYWc9ZmFsc2U7CisgICB9CisgICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDExNCl7YWU9JDExNDsKKyAgICBub3JtPShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodikpLnRvU3RyaW5nKCk7CisgICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkNvbnZlcnNpb24gb3ZlcmZsb3c6IisiICIrbm9ybSk7CisgICB9fQorICAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibG92IisoMjIwK2kpKSkub2s9ZmxhZzsKKyAgIH0KKyAgfS8qaSovCisgIAorICAvLyBub3cgc2xpcCBpbiBzb21lIHNpbmdsZSBiaXRzLi4uCisgIGRsbWF4PW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChsbWF4KTsKKyAge2k9MDtpOmZvcig7aTw9OTk7aSsrKXsKKyAgIHt0cnl7CisgICAgbnVtPXR3by5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGkpLG1jNTApOworICAgIGR2PWRsbWF4LmFkZChudW0sbWM1MCk7CisgICAgZHYubG9uZ1ZhbHVlRXhhY3QoKTsKKyAgICBmbGFnPWZhbHNlOworICAgfQorICAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMTUpe2FlPSQxMTU7CisgICAgbm9ybT1kdi50b1N0cmluZygpOworICAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK25vcm0pOworICAgfX0KKyAgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImxvdiIrKDMwMCtpKSkpLm9rPWZsYWc7CisgICB9CisgIH0vKmkqLworICBkbG1pbj1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwobG1pbik7CisgIHtpPTA7aTpmb3IoO2k8PTk5O2krKyl7CisgICB7dHJ5eworICAgIG51bT10d28ucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChpKSxtYzUwKTsKKyAgICBkdj1kbG1pbi5zdWJ0cmFjdChudW0sbWM1MCk7CisgICAgZHYubG9uZ1ZhbHVlRXhhY3QoKTsKKyAgICBmbGFnPWZhbHNlOworICAgfQorICAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMTYpe2FlPSQxMTY7CisgICAgbm9ybT1kdi50b1N0cmluZygpOworICAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK25vcm0pOworICAgfX0KKyAgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoImxvdiIrKDQwMCtpKSkpLm9rPWZsYWc7CisgICB9CisgIH0vKmkqLworICAKKyAgc3VtbWFyeSgibG9uZ1ZhbHVlKyIpOworICByZXR1cm47fQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjbW92ZVBvaW50TGVmdH0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdtb3ZlcG9pbnRsZWZ0KCl7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1wbDAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkubW92ZVBvaW50TGVmdCgtMTApLnRvU3RyaW5nKCkpLmVxdWFscygiLTEwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1wbDAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkubW92ZVBvaW50TGVmdCgtNSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMTAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1wbDAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkubW92ZVBvaW50TGVmdCgtMSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMTAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXBsMDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpKS5tb3ZlUG9pbnRMZWZ0KDApLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXBsMDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpKS5tb3ZlUG9pbnRMZWZ0KCsxKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXBsMDA2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpKS5tb3ZlUG9pbnRMZWZ0KCs1KS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjAwMDAxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1wbDAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkubW92ZVBvaW50TGVmdCgrMTApLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMDAwMDAwMDAwMSIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXBsMDEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLm1vdmVQb2ludExlZnQoLTEwKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXBsMDEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLm1vdmVQb2ludExlZnQoLTUpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtcGwwMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkubW92ZVBvaW50TGVmdCgtMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1wbDAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5tb3ZlUG9pbnRMZWZ0KDApLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtcGwwMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkubW92ZVBvaW50TGVmdCgrMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXBsMDEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLm1vdmVQb2ludExlZnQoKzUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtcGwwMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkubW92ZVBvaW50TGVmdCgrMTApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMDAwMDAwIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtcGwwMjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLm1vdmVQb2ludExlZnQoLTEwKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1wbDAyMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzEiKSkubW92ZVBvaW50TGVmdCgtNSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXBsMDIyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS5tb3ZlUG9pbnRMZWZ0KC0xKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1wbDAyMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzEiKSkubW92ZVBvaW50TGVmdCgwKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXBsMDI0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS5tb3ZlUG9pbnRMZWZ0KCsxKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtcGwwMjUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLm1vdmVQb2ludExlZnQoKzUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtcGwwMjYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLm1vdmVQb2ludExlZnQoKzEwKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwMDAwMSIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXBsMDMwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjVFKzEiKSkubW92ZVBvaW50TGVmdCgtMTApLnRvU3RyaW5nKCkpLmVxdWFscygiNTAwMDAwMDAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXBsMDMxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjVFKzEiKSkubW92ZVBvaW50TGVmdCgtNSkudG9TdHJpbmcoKSkuZXF1YWxzKCI1MDAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXBsMDMyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjVFKzEiKSkubW92ZVBvaW50TGVmdCgtMSkudG9TdHJpbmcoKSkuZXF1YWxzKCI1MCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtcGwwMzMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNUUrMSIpKS5tb3ZlUG9pbnRMZWZ0KDApLnRvU3RyaW5nKCkpLmVxdWFscygiNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtcGwwMzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNUUrMSIpKS5tb3ZlUG9pbnRMZWZ0KCsxKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtcGwwMzUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNUUrMSIpKS5tb3ZlUG9pbnRMZWZ0KCs1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXBsMDM2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjVFKzEiKSkubW92ZVBvaW50TGVmdCgrMTApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMDAwMDA1Iik7CisgIAorICBzdW1tYXJ5KCJtb3ZlUG9pbnRMZWZ0Iik7CisgIHJldHVybjt9CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNtb3ZlUG9pbnRSaWdodH0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdtb3ZlcG9pbnRyaWdodCgpeworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtcHIwMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLm1vdmVQb2ludFJpZ2h0KCsxMCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMTAwMDAwMDAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXByMDAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpKS5tb3ZlUG9pbnRSaWdodCgrNSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMTAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1wcjAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkubW92ZVBvaW50UmlnaHQoKzEpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1wcjAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkubW92ZVBvaW50UmlnaHQoMCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtcHIwMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLm1vdmVQb2ludFJpZ2h0KC0xKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXByMDA2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpKS5tb3ZlUG9pbnRSaWdodCgtNSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4wMDAwMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtcHIwMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLm1vdmVQb2ludFJpZ2h0KC0xMCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4wMDAwMDAwMDAxIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtcHIwMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkubW92ZVBvaW50UmlnaHQoKzEwKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXByMDExIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLm1vdmVQb2ludFJpZ2h0KCs1KS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXByMDEyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLm1vdmVQb2ludFJpZ2h0KCsxKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXByMDEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLm1vdmVQb2ludFJpZ2h0KDApLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtcHIwMTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkubW92ZVBvaW50UmlnaHQoLTEpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1wcjAxNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5tb3ZlUG9pbnRSaWdodCgtNSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1wcjAxNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5tb3ZlUG9pbnRSaWdodCgtMTApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMDAwMDAwIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtcHIwMjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLm1vdmVQb2ludFJpZ2h0KCsxMCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAwMDAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtcHIwMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLm1vdmVQb2ludFJpZ2h0KCs1KS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtcHIwMjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLm1vdmVQb2ludFJpZ2h0KCsxKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1wcjAyMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzEiKSkubW92ZVBvaW50UmlnaHQoMCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1wcjAyNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzEiKSkubW92ZVBvaW50UmlnaHQoLTEpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1wcjAyNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzEiKSkubW92ZVBvaW50UmlnaHQoLTUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtcHIwMjYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLm1vdmVQb2ludFJpZ2h0KC0xMCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMDAwMDEiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1wcjAzMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41RSsxIikpLm1vdmVQb2ludFJpZ2h0KCsxMCkudG9TdHJpbmcoKSkuZXF1YWxzKCI1MDAwMDAwMDAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtcHIwMzEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNUUrMSIpKS5tb3ZlUG9pbnRSaWdodCgrNSkudG9TdHJpbmcoKSkuZXF1YWxzKCI1MDAwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXByMDMyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjVFKzEiKSkubW92ZVBvaW50UmlnaHQoKzEpLnRvU3RyaW5nKCkpLmVxdWFscygiNTAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibXByMDMzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjVFKzEiKSkubW92ZVBvaW50UmlnaHQoMCkudG9TdHJpbmcoKSkuZXF1YWxzKCI1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1wcjAzNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41RSsxIikpLm1vdmVQb2ludFJpZ2h0KC0xKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtcHIwMzUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNUUrMSIpKS5tb3ZlUG9pbnRSaWdodCgtNSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDA1Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1wcjAzNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41RSsxIikpLm1vdmVQb2ludFJpZ2h0KC0xMCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMDAwMDUiKTsKKyAgCisgIHN1bW1hcnkoIm1vdmVQb2ludFJpZ2h0Iik7CisgIHJldHVybjt9CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNzY2FsZX0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdzY2FsZSgpeworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzY2EwMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLnNjYWxlKCkpPT0wOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzY2EwMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xMCIpKS5zY2FsZSgpKT09MDsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic2NhMDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS5zY2FsZSgpKT09MDsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic2NhMDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMTAiKSkuc2NhbGUoKSk9PTA7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNjYTAwNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMUUrMTAiKSkuc2NhbGUoKSk9PTA7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNjYTAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMUUtMTAiKSkuc2NhbGUoKSk9PTEwOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzY2EwMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjBFLTEwIikpLnNjYWxlKCkpPT0wOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzY2EwMDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwIikpLnNjYWxlKCkpPT0zOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzY2EwMDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAiKSkuc2NhbGUoKSk9PTI7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNjYTAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wIikpLnNjYWxlKCkpPT0xOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzY2EwMTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMSIpKS5zY2FsZSgpKT09MTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic2NhMDEyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEyIikpLnNjYWxlKCkpPT0yOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzY2EwMTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTIzIikpLnNjYWxlKCkpPT0zOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzY2EwMTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjAiKSkuc2NhbGUoKSk9PTE7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNjYTAxNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMSIpKS5zY2FsZSgpKT09MTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic2NhMDE2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4xMiIpKS5zY2FsZSgpKT09MjsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic2NhMDE3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4xMjMiKSkuc2NhbGUoKSk9PTM7CisgIHN1bW1hcnkoInNjYWxlIik7CisgIHJldHVybjt9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNzZXRTY2FsZX0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdzZXRzY2FsZSgpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIGU9bnVsbDsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkuc2V0U2NhbGUoMCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLnNldFNjYWxlKDEpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEuMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwMDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLnNldFNjYWxlKDIpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnNldFNjYWxlKDApLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc2V0U2NhbGUoMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDA2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnNldFNjYWxlKDIpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLnNldFNjYWxlKDApLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwMDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLnNldFNjYWxlKDEpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzAwOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzEiKSkuc2V0U2NhbGUoMikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkuc2V0U2NhbGUoMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwMTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLnNldFNjYWxlKDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiLTEuMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwMTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLnNldFNjYWxlKDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiLTEuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnNldFNjYWxlKDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwMTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc2V0U2NhbGUoMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDE1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnNldFNjYWxlKDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwMTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLnNldFNjYWxlKDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwMTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLnNldFNjYWxlKDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzAxOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzEiKSkuc2V0U2NhbGUoMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwMjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDQiKSkuc2V0U2NhbGUoMyxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjA0MCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDQiKSkuc2V0U2NhbGUoMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjA0Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzAyMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wNCIpKS5zZXRTY2FsZSgxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwMjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDQiKSkuc2V0U2NhbGUoMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzAyNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wNSIpKS5zZXRTY2FsZSgzLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDUwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzAyNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wNSIpKS5zZXRTY2FsZSgyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDI2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjA1IikpLnNldFNjYWxlKDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMS4xIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzAyNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wNSIpKS5zZXRTY2FsZSgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDI4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjA1IikpLnNldFNjYWxlKDMsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjA1MCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwMjkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDUiKSkuc2V0U2NhbGUoMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDUiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDMwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjA1IikpLnNldFNjYWxlKDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDMxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjA1IikpLnNldFNjYWxlKDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTikudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzAzMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wNiIpKS5zZXRTY2FsZSgzLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDYwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzAzMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wNiIpKS5zZXRTY2FsZSgyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDYiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDM0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjA2IikpLnNldFNjYWxlKDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMS4xIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzAzNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wNiIpKS5zZXRTY2FsZSgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzA0MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEwIikpLnNldFNjYWxlKDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiLTEwLjAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzA0MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzEiKSkuc2V0U2NhbGUoMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzA0MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzEwIikpLnNldFNjYWxlKDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMTAuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDQzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRSsxMCIpKS5zZXRTY2FsZSgyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAwMDAwMDAwLjAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzA0NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMUUtMTAiKSkuc2V0U2NhbGUoMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzA0NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMUUtMiIpKS5zZXRTY2FsZSgyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDQ2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwRS0xMCIpKS5zZXRTY2FsZSgyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgCisgIC8vIGNoZWNrIHJvdW5kaW5nCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzA1MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuc2V0U2NhbGUoMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfQ0VJTElORykudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzA1MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuc2V0U2NhbGUoMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfQ0VJTElORykudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDUyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9DRUlMSU5HKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDUzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDU0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwNTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwNTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0ZMT09SKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDU3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDU4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzA1OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuc2V0U2NhbGUoMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDYwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzA2MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuc2V0U2NhbGUoMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDYyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwNjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDY0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwNjUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDE1IikpLnNldFNjYWxlKDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAyIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzA2NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMTUiKSkuc2V0U2NhbGUoMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwNjciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDE1IikpLnNldFNjYWxlKDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzA2OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuc2V0U2NhbGUoMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzA2OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuc2V0U2NhbGUoMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDcwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDcxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA5NSIpKS5zZXRTY2FsZSgyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDcyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA5NSIpKS5zZXRTY2FsZSgxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwNzMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDk1IikpLnNldFNjYWxlKDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MwNzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDc1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic3NjMDc2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIAorICB7dHJ5e2NoZWNrc2NhbGU6ZG97CisgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDEpKS5zZXRTY2FsZSgtOCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uICQxMTcpe2U9JDExNzsKKyAgIGZsYWc9KGUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIk5lZ2F0aXZlIHNjYWxlOiAtOCIpOworICB9fS8qY2hlY2tzY2FsZSovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzEwMCIpKS5vaz1mbGFnOworICB7dHJ5e2NoZWNrcnVubjpkb3sKKyAgIChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMS4wMDAxRCkpLnNldFNjYWxlKDMpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiAkMTE4KXtlPSQxMTg7CisgICBmbGFnPShlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJSb3VuZGluZyBuZWNlc3NhcnkiKTsKKyAgfX0vKmNoZWNrcnVubiovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNzYzEwMSIpKS5vaz1mbGFnOworICB7dHJ5e2NoZWNrcnVubjpkb3sKKyAgIChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMUUtOEQpKS5zZXRTY2FsZSgzKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24gJDExOSl7ZT0kMTE5OworICAgZmxhZz0oZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiUm91bmRpbmcgbmVjZXNzYXJ5Iik7CisgIH19LypjaGVja3J1bm4qLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzc2MxMDIiKSkub2s9ZmxhZzsKKyAgc3VtbWFyeSgic2V0U2NhbGUiKTsKKyAgcmV0dXJuO30KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIDxjb2RlPkJpZ0RlY2ltYWwuc2hvcnRWYWx1ZSgpPC9jb2RlPiBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ3Nob3J0dmFsdWUoKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBqYXZhLmxhbmcuU3RyaW5nIHY9bnVsbDsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgamF2YS5sYW5nLlN0cmluZyBiYWRzdHJpbmdzW107CisgIGludCBpPTA7CisgIGphdmEubGFuZy5TdHJpbmcgbm9ybT1udWxsOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic2h2MDAyIikpLm9rPSgoKHNob3J0KTApKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc2hvcnRWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic2h2MDAzIikpLm9rPSgoKHNob3J0KTEpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuc2hvcnRWYWx1ZSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic2h2MDA0IikpLm9rPSgoKHNob3J0KTk5KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OSIpKS5zaG9ydFZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzaHYwMDYiKSkub2s9KChzbWF4KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHNtYXgpKS5zaG9ydFZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzaHYwMDciKSkub2s9KChzbWluKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHNtaW4pKS5zaG9ydFZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzaHYwMDgiKSkub2s9KChzbmVnKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHNuZWcpKS5zaG9ydFZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzaHYwMDkiKSkub2s9KChzemVyKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHN6ZXIpKS5zaG9ydFZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzaHYwMTAiKSkub2s9KChzcG9zKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHNwb3MpKS5zaG9ydFZhbHVlKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzaHYwMTEiKSkub2s9KChzbWluKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHNtYXgrMSkpLnNob3J0VmFsdWUoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNodjAxMiIpKS5vaz0oKHNtYXgpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoc21pbi0xKSkuc2hvcnRWYWx1ZSgpKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNodjAyMiIpKS5vaz0oKChzaG9ydCkwKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnNob3J0VmFsdWVFeGFjdCgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic2h2MDIzIikpLm9rPSgoKHNob3J0KTEpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuc2hvcnRWYWx1ZUV4YWN0KCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzaHYwMjQiKSkub2s9KCgoc2hvcnQpOTkpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5IikpLnNob3J0VmFsdWVFeGFjdCgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic2h2MDI2IikpLm9rPSgoc21heCkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChzbWF4KSkuc2hvcnRWYWx1ZUV4YWN0KCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzaHYwMjciKSkub2s9KChzbWluKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHNtaW4pKS5zaG9ydFZhbHVlRXhhY3QoKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNodjAyOCIpKS5vaz0oKHNuZWcpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoc25lZykpLnNob3J0VmFsdWVFeGFjdCgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic2h2MDI5IikpLm9rPSgoc3plcikpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChzemVyKSkuc2hvcnRWYWx1ZUV4YWN0KCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzaHYwMzAiKSkub2s9KChzcG9zKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHNwb3MpKS5zaG9ydFZhbHVlRXhhY3QoKSk7CisgIHt0cnl7CisgICB2PSItODg4ODg4ODg4ODgiOworICAgKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2KSkuc2hvcnRWYWx1ZUV4YWN0KCk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTIwKXthZT0kMTIwOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkNvbnZlcnNpb24gb3ZlcmZsb3c6IisiICIrdik7CisgIH19CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNodjEwMCIpKS5vaz1mbGFnOworICB7dHJ5eworICAgdj0iODg4ODg4ODg4ODgiOworICAgKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2KSkuc2hvcnRWYWx1ZUV4YWN0KCk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTIxKXthZT0kMTIxOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkNvbnZlcnNpb24gb3ZlcmZsb3c6IisiICIrdik7CisgIH19CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNodjEwMSIpKS5vaz1mbGFnOworICB7dHJ5eworICAgdj0iMS41IjsKKyAgIChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodikpLnNob3J0VmFsdWVFeGFjdCgpOworICAgZmxhZz1mYWxzZTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDEyMil7YWU9JDEyMjsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJEZWNpbWFsIHBhcnQgbm9uLXplcm86IisiICIrdik7CisgIH19CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNodjEwMiIpKS5vaz1mbGFnOworICAKKyAgYmFkc3RyaW5ncz1uZXcgamF2YS5sYW5nLlN0cmluZ1tdeyIxMjM0NTYiLChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoc21heCkpLmFkZChvbmUpLnRvU3RyaW5nKCksKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChzbWluKSkuc3VidHJhY3Qob25lKS50b1N0cmluZygpLCI3MTExMSIsIjgxMTExIiwiOTExMTEiLCItNzExMTEiLCItODExMTEiLCItOTExMTEiLChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoc21pbikpLm11bHRpcGx5KHR3bykudG9TdHJpbmcoKSwobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHNtYXgpKS5tdWx0aXBseSh0d28pLnRvU3RyaW5nKCksKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChzbWluKSkubXVsdGlwbHkodGVuKS50b1N0cmluZygpLChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoc21heCkpLm11bHRpcGx5KHRlbikudG9TdHJpbmcoKSwiLTEyMzQ1NiJ9OyAvLyAyMjAKKyAgLy8gMjIxCisgIC8vIDIyMgorICAvLyAyMjMKKyAgLy8gMjI0CisgIC8vIDIyNQorICAvLyAyMjYKKyAgLy8gMjI3CisgIC8vIDIyOAorICAvLyAyMjkKKyAgLy8gMjMwCisgIC8vIDIzMQorICAvLyAyMzIKKyAgLy8gMjMzCisgIHtpbnQgJDEyMz1iYWRzdHJpbmdzLmxlbmd0aDtpPTA7aTpmb3IoOyQxMjM+MDskMTIzLS0saSsrKXsKKyAgIHt0cnl7CisgICAgdj1iYWRzdHJpbmdzW2ldOworICAgIChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodikpLnNob3J0VmFsdWVFeGFjdCgpOworICAgIGZsYWc9ZmFsc2U7CisgICB9CisgICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDEyNCl7YWU9JDEyNDsKKyAgICBub3JtPShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodikpLnRvU3RyaW5nKCk7CisgICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkNvbnZlcnNpb24gb3ZlcmZsb3c6IisiICIrbm9ybSk7CisgICB9fQorICAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic2h2IisoMjIwK2kpKSkub2s9ZmxhZzsKKyAgIH0KKyAgfS8qaSovCisgIAorICAKKyAgc3VtbWFyeSgic2hvcnRWYWx1ZSsiKTsKKyAgcmV0dXJuO30KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI3NpZ251bX0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdzaWdudW0oKXsKKyAgLy8gbmVjZXNzYXJpbHkgY2hlY2tzIHNvbWUgb2JzY3VyZSBjb25zdHJ1Y3Rpb25zLCB0b28KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic2lnMDAxIikpLm9rPSgtMSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpKS5zaWdudW0oKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNpZzAwMiIpKS5vaz0oLTEpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMDAxMCIpKS5zaWdudW0oKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNpZzAwMyIpKS5vaz0oLTEpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMDAxIikpLnNpZ251bSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic2lnMDA0IikpLm9rPTA9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4wMCIpKS5zaWdudW0oKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNpZzAwNSIpKS5vaz0wPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAiKSkuc2lnbnVtKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzaWcwMDYiKSkub2s9MD09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc2lnbnVtKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzaWcwMDciKSkub2s9MD09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwIikpLnNpZ251bSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic2lnMDA4IikpLm9rPTA9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMC4wIikpLnNpZ251bSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic2lnMDA5IikpLm9rPTE9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMC4wMSIpKS5zaWdudW0oKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNpZzAxMCIpKS5vaz0xPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDAuMDEiKSkuc2lnbnVtKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzaWcwMTEiKSkub2s9MT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAxMCIpKS5zaWdudW0oKSk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInNpZzAxMiIpKS5vaz0xPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDEuMDEiKSkuc2lnbnVtKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzaWcwMTMiKSkub2s9MT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIiswLjAxIikpLnNpZ251bSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic2lnMDE0IikpLm9rPTE9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMC4wMDEiKSkuc2lnbnVtKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzaWcwMTUiKSkub2s9MT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuc2lnbnVtKCkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJzaWcwMTYiKSkub2s9MT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFlKzEyIikpLnNpZ251bSgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgic2lnMDE3IikpLm9rPTA9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMGUrMTIiKSkuc2lnbnVtKCkpOworICBzdW1tYXJ5KCJzaWdudW0iKTsKKyAgcmV0dXJuO30KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI3RvQmlnRGVjaW1hbH0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWd0b2JpZ2RlY2ltYWwoKXsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJkMDAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnRvQmlnRGVjaW1hbCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmQwMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLnRvQmlnRGVjaW1hbCgpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJkMDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS50b0JpZ0RlY2ltYWwoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJkMDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvQmlnRGVjaW1hbCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmQwMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFFKzIiKSkudG9CaWdEZWNpbWFsKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJkMDA2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRS0yIikpLnRvQmlnRGVjaW1hbCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmQwMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFFLTgiKSkudG9CaWdEZWNpbWFsKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMDAxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiZDAwOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMUUtOSIpKS50b0JpZ0RlY2ltYWwoKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwMDAxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiZDAwOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMUUxMCIpKS50b0JpZ0RlY2ltYWwoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAwMDAwMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiZDAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMUUxMiIpKS50b0JpZ0RlY2ltYWwoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAwMDAwMDAwMDAiKTsKKyAgc3VtbWFyeSgidG9CaWdEZWNpbWFsIik7CisgIHJldHVybjt9CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCN0b0JpZ0ludGVnZXJ9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFndG9iaWdpbnRlZ2VyKCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgamF2YS5sYW5nLlN0cmluZyBiYWRzdHJpbmdzW107CisgIGludCBpPTA7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkwMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzEiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkwMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTFFKzAiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkwMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjBFKzAiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTAwOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzFFKzAiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTAwOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTBFKzAiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkwMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFFKzMiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMDEyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAxIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkwMTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMDE0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTAxNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMDAiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTAxNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMDEiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTAxNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMDE4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4xIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkwMTkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTAyMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wMSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMDIxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTAyMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4xIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkwMjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjAwIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMDI0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMS4wMSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTAyNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEuMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTAyNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEuMSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTAyNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTExMS4xMTEiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMTExIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTAyOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzExMS4xMTEiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMDI5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA5IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkwMzAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuOSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMDMxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjA5IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkwMzIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDUiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTAzMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wNCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMDM0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjk5IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkwMzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuOSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMDM1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjUiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTAzNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS40IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkwMzciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjA5IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMDM4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMS4wNSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTAzOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEuMDQiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkwNDAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjk5IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMDQxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMS45IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMDQyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMS41IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMDQzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMS40IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMDQ0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRS0xMDAwIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkwNDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xRS0xMDAwIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAKKyAgLy8gRXhhY3QgdmFyaWV0eSAtLQorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkxMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkxMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkudG9CaWdJbnRlZ2VyRXhhY3QoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMTAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS50b0JpZ0ludGVnZXJFeGFjdCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkxMDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkxMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAiKSkudG9CaWdJbnRlZ2VyRXhhY3QoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMTA2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMUUrMCIpKS50b0JpZ0ludGVnZXJFeGFjdCgpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMTA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwRSswIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTEwOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzFFKzAiKSkudG9CaWdJbnRlZ2VyRXhhY3QoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMTA5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMEUrMCIpKS50b0JpZ0ludGVnZXJFeGFjdCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMTEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRSszIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTExMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMCIpKS50b0JpZ0ludGVnZXJFeGFjdCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkxMTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMCIpKS50b0JpZ0ludGVnZXJFeGFjdCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkxMTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjAwIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRiaTExNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMCIpKS50b0JpZ0ludGVnZXJFeGFjdCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkxMTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAiKSkudG9CaWdJbnRlZ2VyRXhhY3QoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMTE2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAiKSkudG9CaWdJbnRlZ2VyRXhhY3QoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMTE3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMS4wMCIpKS50b0JpZ0ludGVnZXJFeGFjdCgpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGJpMTE4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMS4wIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkxMTkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiKSkudG9CaWdJbnRlZ2VyRXhhY3QoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgCisgIC8vIHRoZSBmb2xsb3dpbmcgc2hvdWxkIGFsbCByYWlzZSBleGNlcHRpb25zCisgIAorICBiYWRzdHJpbmdzPW5ldyBqYXZhLmxhbmcuU3RyaW5nW117IjAuMDkiLCIwLjkiLCIwLjAxIiwiMC4xIiwiLTAuMDEiLCItMC4xIiwiMS4wMSIsIi0xLjAxIiwiLTEuMSIsIi0xMTEuMTExIiwiKzExMS4xMTEiLCIxLjA5IiwiMS4wNSIsIjEuMDQiLCIxLjk5IiwiMS45IiwiMS41IiwiMS40IiwiLTEuMDkiLCItMS4wNSIsIi0xLjA0IiwiLTEuOTkiLCItMS45IiwiLTEuNSIsIi0xLjQiLCIxRS0xMDAwIiwiLTFFLTEwMDAiLCIxMUUtMSIsIjEuMSIsIjEyNzYyMzE1NjEyMzY1NjU2MTM1NjEyMzUxMjMxNTYzMTIzMTU1MTMxMjM1Ni4wMDAwMDEiLCIwLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMSJ9OyAvLyAzMDAtMzAzCisgIC8vIDMwNC0zMDcKKyAgLy8gMzA4LTMxMQorICAvLyAzMTItMzE2CisgIC8vIDMxNy0zMjAKKyAgLy8gMzIxLTMyNAorICAvLyAzMjUtMzI4CisgIC8vIDMyOQorICAvLyAzMzAKKyAgCisgIHtpbnQgJDEyNT1iYWRzdHJpbmdzLmxlbmd0aDtpPTA7aTpmb3IoOyQxMjU+MDskMTI1LS0saSsrKXsKKyAgIHt0cnl7CisgICAgKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChiYWRzdHJpbmdzW2ldKSkudG9CaWdJbnRlZ2VyRXhhY3QoKTsKKyAgICBmbGFnPWZhbHNlOworICAgfQorICAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMjYpeworICAgIGZsYWc9dHJ1ZTsKKyAgIH19CisgICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0YmkiKygzMDAraSkpKS5vaz1mbGFnOworICAgfQorICB9LyppKi8KKyAgCisgIHN1bW1hcnkoInRvQmlnSW50ZWdlcisiKTsKKyAgcmV0dXJuO30KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI3RvQ2hhckFycmF5fSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ3RvY2hhcmFycmF5KCl7CisgIGphdmEubGFuZy5TdHJpbmcgc3RyOworICBjaGFyIGNhcltdOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkOworICBjaGFyIGNhW107CisgIC8vIHRoZSBmdW5jdGlvbiBvZiB0aGlzIGhhcyBiZWVuIHRlc3RlZCBhYm92ZSwgdGhpcyBpcyBzaW1wbHkgYW4KKyAgLy8gZXhpc3RlbmNlIHByb29mIGFuZCB0eXBlLWNoZWNrCisgIHN0cj0iLTEyMy40NSI7CisgIGNhcj0oc3RyKS50b0NoYXJBcnJheSgpOworICBkPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChzdHIpOworICBjYT1kLnRvQ2hhckFycmF5KCk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRjYTAwMSIpKS5vaz1jYS5sZW5ndGg9PWNhci5sZW5ndGg7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRjYTAwMiIpKS5vaz0obmV3IGphdmEubGFuZy5TdHJpbmcoY2EpKS5lcXVhbHMoKGphdmEubGFuZy5PYmplY3QpKG5ldyBqYXZhLmxhbmcuU3RyaW5nKGNhcikpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidGNhMDAzIikpLm9rPShkLnRvQ2hhckFycmF5KCkgaW5zdGFuY2VvZiBjaGFyW10pOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0Y2EwMDQiKSkub2s9KGNhIGluc3RhbmNlb2YgY2hhcltdKTsKKyAgc3VtbWFyeSgidG9DaGFyQXJyYXkiKTsKKyAgcmV0dXJuO30KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI3RvU3RyaW5nfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ3Rvc3RyaW5nKCl7CisgIGphdmEubGFuZy5TdHJpbmcgc3RyOworICBjaGFyIGNhcltdOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkOworICBjaGFyIGNhW107CisgIGphdmEubGFuZy5TdHJpbmcgY3M7CisgIC8vIHRoZSBmdW5jdGlvbiBvZiB0aGlzIGhhcyBiZWVuIHRlc3RlZCBhYm92ZSwgdGhpcyBpcyBzaW1wbHkgYW4KKyAgLy8gZXhpc3RlbmNlIHByb29mIGFuZCB0eXBlLWNoZWNrCisgIHN0cj0iMTIzLjQ1IjsKKyAgY2FyPShzdHIpLnRvQ2hhckFycmF5KCk7CisgIGQ9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGNhciwwLGNhci5sZW5ndGgpOworICBjYT1kLnRvQ2hhckFycmF5KCk7CisgIGNzPWQudG9TdHJpbmcoKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidG9zMDAxIikpLm9rPShzdHIudG9DaGFyQXJyYXkoKS5sZW5ndGgpPT1jYS5sZW5ndGg7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRvczAwMiIpKS5vaz0oc3RyLmxlbmd0aCgpKT09KGNzLmxlbmd0aCgpKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidG9zMDAzIikpLm9rPXN0ci5lcXVhbHMoKGphdmEubGFuZy5PYmplY3QpKG5ldyBqYXZhLmxhbmcuU3RyaW5nKGNhKSkpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ0b3MwMDQiKSkub2s9c3RyLmVxdWFscygoamF2YS5sYW5nLk9iamVjdCljcyk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInRvczAwNSIpKS5vaz0oY3MgaW5zdGFuY2VvZiBqYXZhLmxhbmcuU3RyaW5nKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidG9zMDA2IikpLm9rPShkLnRvU3RyaW5nKCkgaW5zdGFuY2VvZiBqYXZhLmxhbmcuU3RyaW5nKTsKKyAgc3VtbWFyeSgidG9TdHJpbmciKTsKKyAgcmV0dXJuO30KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI3Vuc2NhbGVkVmFsdWV9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFndW5zY2FsZWR2YWx1ZSgpeworICAvLyBqdXN0IGxpa2UgdG9CaWdJbnRlZ2VyLCBidXQgc2NhbHkgYml0cyBhcmUgcHJlc2VydmVkIFt3aXRob3V0IGRvdHNdCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInVuczAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidW5zMDAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidW5zMDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInVuczAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidW5zMDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidW5zMDA2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMUUrMCIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ1bnMwMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjBFKzAiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ1bnMwMDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxRSswIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidW5zMDA5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMEUrMCIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ1bnMwMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFFKzMiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ1bnMwMTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ1bnMwMTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDEiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ1bnMwMTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMCIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInVuczAxNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4xIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidW5zMDE1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4wMCIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInVuczAxNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMDEiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidW5zMDE3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4wIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidW5zMDE4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4xIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInVuczAxOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wMCIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidW5zMDIwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAxIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ1bnMwMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMCIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ1bnMwMjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMSIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ1bnMwMjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjAwIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidW5zMDI0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMS4wMSIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMTAxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInVuczAyNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEuMCIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMTAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidW5zMDI2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMS4xIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ1bnMwMjciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xMTEuMTExIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMTExMTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidW5zMDI4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMTExLjExMSIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMTExMTEiKTsKKyAgc3VtbWFyeSgidW5zY2FsZWRWYWx1ZSIpOworICByZXR1cm47fQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjdmFsdWVPZn0gbWV0aG9kIFtsb25nIGFuZCBkb3VibGVdLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWd2YWx1ZW9mKCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiBlPW51bGw7CisgIGRvdWJsZSBkemVyOworICBkb3VibGUgZHBvczsKKyAgZG91YmxlIGRuZWc7CisgIGRvdWJsZSBkcG9zNTsKKyAgZG91YmxlIGRuZWc1OworICBkb3VibGUgZG1pbjsKKyAgZG91YmxlIGRtYXg7CisgIGRvdWJsZSBkOworICAKKyAgLy8gdmFsdWVPZihsb25nIFssc2NhbGVdKSAtLQorICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidmFsMDAxIikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKChsb25nKSgoYnl0ZSktMikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidmFsMDAyIikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKChsb25nKSgoYnl0ZSktMSkpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidmFsMDAzIikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKChsb25nKSgoYnl0ZSktMCkpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ2YWwwMDQiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoKGxvbmcpKChieXRlKSsxKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInZhbDAwNSIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZigobG9uZykoKGJ5dGUpKzIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidmFsMDA2IikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKChsb25nKSgoYnl0ZSkxMCkpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidmFsMDA3IikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKChsb25nKSgoYnl0ZSkxMSkpLnRvU3RyaW5nKCkpLmVxdWFscygiMTEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidmFsMDA4IikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGxtaW4pLnRvU3RyaW5nKCkpLmVxdWFscygiLTkyMjMzNzIwMzY4NTQ3NzU4MDgiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidmFsMDA5IikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGxtYXgpLnRvU3RyaW5nKCkpLmVxdWFscygiOTIyMzM3MjAzNjg1NDc3NTgwNyIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ2YWwwMTAiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobG5lZykudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ2YWwwMTEiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobHplcikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInZhbDAxMiIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihscG9zKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidmFsMDEzIikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGxtaW4sMCkudG9TdHJpbmcoKSkuZXF1YWxzKCItOTIyMzM3MjAzNjg1NDc3NTgwOCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ2YWwwMTQiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobG1heCwwKS50b1N0cmluZygpKS5lcXVhbHMoIjkyMjMzNzIwMzY4NTQ3NzU4MDciKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidmFsMDE1IikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGxuZWcsMCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ2YWwwMTYiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobHBvcywwKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInZhbDAxNyIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihsemVyLDApLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ2YWwwMTgiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobHplciwxKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ2YWwwMTkiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobHplciwyKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidmFsMDIwIikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGx6ZXIsMykudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMCIpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ2YWwwMjEiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobHplciwxMCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMDAwMDAiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInZhbDAyMiIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihsbWluLDcpLnRvU3RyaW5nKCkpLmVxdWFscygiLTkyMjMzNzIwMzY4NS40Nzc1ODA4Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInZhbDAyMyIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihsbWF4LDExKS50b1N0cmluZygpKS5lcXVhbHMoIjkyMjMzNzIwLjM2ODU0Nzc1ODA3Iik7CisgIAorICAKKyAge3RyeXtjaGVja3NjYWxlOmRveworICAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZigobG9uZykyMywtOCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24gJDEyNyl7ZT0kMTI3OworICAgZmxhZz0oZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiTmVnYXRpdmUgc2NhbGU6IC04Iik7CisgIH19LypjaGVja3NjYWxlKi8KKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidmFsMTAwIikpLm9rPWZsYWc7CisgIAorICAvLyB2YWx1ZU9mKGRvdWJsZSkgLS0KKyAgCisgIGR6ZXI9KGRvdWJsZSkwOworICBkcG9zPShkb3VibGUpMTsKKyAgZHBvcz1kcG9zLygoZG91YmxlKTEwKTsKKyAgZG5lZz0oZG91YmxlKS1kcG9zOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ2YWwyMDEiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoZG5lZykudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4xIik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInZhbDIwMiIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihkemVyKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOyAvLyBjZi4gY29uc3RydWN0b3IKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidmFsMjAzIikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGRwb3MpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIGRwb3M1PShkb3VibGUpMC41RDsKKyAgZG5lZzU9KGRvdWJsZSktZHBvczU7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInZhbDIwNCIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihkbmVnNSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC41Iik7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInZhbDIwNSIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihkcG9zNSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjUiKTsKKyAgZG1pbj1qYXZhLmxhbmcuRG91YmxlLk1JTl9WQUxVRTsKKyAgZG1heD1qYXZhLmxhbmcuRG91YmxlLk1BWF9WQUxVRTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidmFsMjA2IikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGRtaW4pLnRvU3RyaW5nKCkpLmVxdWFscygiNC45RS0zMjQiKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidmFsMjA3IikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGRtYXgpLnRvU3RyaW5nKCkpLmVxdWFscygiMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgiKTsKKyAgCisgIC8vIG5hc3RpZXMKKyAgZD0oZG91YmxlKTk7CisgIGQ9ZC8oKGRvdWJsZSkxMCk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInZhbDIxMCIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihkKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOSIpOworICBkPWQvKChkb3VibGUpMTApOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ2YWwyMTEiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjA5Iik7CisgIGQ9ZC8oKGRvdWJsZSkxMCk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInZhbDIxMiIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihkKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDA5MCIpOworICBkPWQvKChkb3VibGUpMTApOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ2YWwyMTMiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoZCkudG9TdHJpbmcoKSkuZXF1YWxzKCI5LjBFLTQiKTsKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidmFsMjE0IikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGQpLnRvU3RyaW5nKCkpLmVxdWFscygiOC45OTk5OTk5OTk5OTk5OTlFLTUiKTsKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidmFsMjE1IikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGQpLnRvU3RyaW5nKCkpLmVxdWFscygiOC45OTk5OTk5OTk5OTk5OTlFLTYiKTsKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidmFsMjE2IikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGQpLnRvU3RyaW5nKCkpLmVxdWFscygiOC45OTk5OTk5OTk5OTk5OTlFLTciKTsKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidmFsMjE3IikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGQpLnRvU3RyaW5nKCkpLmVxdWFscygiOC45OTk5OTk5OTk5OTk5OTlFLTgiKTsKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgidmFsMjE4IikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGQpLnRvU3RyaW5nKCkpLmVxdWFscygiOC45OTk5OTk5OTk5OTk5OThFLTkiKTsKKyAgCisgIHt0cnl7Y2hlY2twaW46ZG97CisgICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGphdmEubGFuZy5Eb3VibGUuUE9TSVRJVkVfSU5GSU5JVFkpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uICQxMjgpeworICAgZmxhZz10cnVlOworICB9fS8qY2hlY2twaW4qLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJ2YWwzMDEiKSkub2s9ZmxhZzsKKyAge3RyeXtjaGVja25pbjpkb3sKKyAgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoamF2YS5sYW5nLkRvdWJsZS5ORUdBVElWRV9JTkZJTklUWSk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24gJDEyOSl7CisgICBmbGFnPXRydWU7CisgIH19LypjaGVja25pbiovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInZhbDMwMiIpKS5vaz1mbGFnOworICB7dHJ5e2NoZWNrbmFuOmRveworICAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihqYXZhLmxhbmcuRG91YmxlLk5hTik7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24gJDEzMCl7CisgICBmbGFnPXRydWU7CisgIH19LypjaGVja25hbiovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoInZhbDMwMyIpKS5vaz1mbGFnOworICAKKyAgc3VtbWFyeSgidmFsdWVPZiIpOworICByZXR1cm47fQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIE1hdGhDb250ZXh0fSBjbGFzcy4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnbWF0aGNvbnRleHQoKXsKKyAgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IG1jY29uMTsKKyAgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IG1jY29uMjsKKyAgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IG1jY29uMzsKKyAgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IG1jY29uNDsKKyAgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IG1jcm1jOworICBjb20uaWJtLm1hdGguTWF0aENvbnRleHQgbWNybWQ7CisgIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBtY3JtZjsKKyAgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IG1jcm1oZDsKKyAgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IG1jcm1oZTsKKyAgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IG1jcm1odTsKKyAgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IG1jcm11bjsKKyAgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IG1jcm11OworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZT1udWxsOworICAvLyB0aGVzZSB0ZXN0cyBhcmUgbW9zdGx5IGV4aXN0ZW5jZSBjaGVja3MKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibWNuMDAxIikpLm9rPShjb20uaWJtLm1hdGguTWF0aENvbnRleHQuREVGQVVMVC5nZXREaWdpdHMoKSk9PTk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1jbjAwMiIpKS5vaz0oY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LkRFRkFVTFQuZ2V0Rm9ybSgpKT09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlNDSUVOVElGSUM7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1jbjAwMyIpKS5vaz0oY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LkRFRkFVTFQuZ2V0Rm9ybSgpKSE9Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LkVOR0lORUVSSU5HOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtY24wMDQiKSkub2s9KGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ERUZBVUxULmdldEZvcm0oKSkhPWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTjsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibWNuMDA1IikpLm9rPShjb20uaWJtLm1hdGguTWF0aENvbnRleHQuREVGQVVMVC5nZXRMb3N0RGlnaXRzKCk/MTowKT09MDsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibWNuMDA2IikpLm9rPShjb20uaWJtLm1hdGguTWF0aENvbnRleHQuREVGQVVMVC5nZXRSb3VuZGluZ01vZGUoKSk9PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibWNuMDEwIikpLm9rPWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9DRUlMSU5HPj0wOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtY24wMTEiKSkub2s9Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0RPV04+PTA7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1jbjAxMiIpKS5vaz1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRkxPT1I+PTA7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1jbjAxMyIpKS5vaz1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOPj0wOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtY24wMTQiKSkub2s9Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTj49MDsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibWNuMDE1IikpLm9rPWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQPj0wOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtY24wMTYiKSkub2s9Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZPj0wOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtY24wMTciKSkub2s9Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VQPj0wOworICAKKyAgbWNjb24xPW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoMTExKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibWNuMDIxIikpLm9rPShtY2NvbjEuZ2V0RGlnaXRzKCkpPT0xMTE7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1jbjAyMiIpKS5vaz0obWNjb24xLmdldEZvcm0oKSk9PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtY24wMjMiKSkub2s9KG1jY29uMS5nZXRMb3N0RGlnaXRzKCk/MTowKT09MDsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibWNuMDI0IikpLm9rPShtY2NvbjEuZ2V0Um91bmRpbmdNb2RlKCkpPT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUDsKKyAgCisgIG1jY29uMj1uZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KDc4LGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5FTkdJTkVFUklORyk7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1jbjAzMSIpKS5vaz0obWNjb24yLmdldERpZ2l0cygpKT09Nzg7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1jbjAzMiIpKS5vaz0obWNjb24yLmdldEZvcm0oKSk9PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5FTkdJTkVFUklORzsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibWNuMDMzIikpLm9rPShtY2NvbjIuZ2V0TG9zdERpZ2l0cygpPzE6MCk9PTA7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1jbjAzNCIpKS5vaz0obWNjb24yLmdldFJvdW5kaW5nTW9kZSgpKT09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVA7CisgIAorICBtY2NvbjM9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCg1LGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTix0cnVlKTsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibWNuMDQxIikpLm9rPShtY2NvbjMuZ2V0RGlnaXRzKCkpPT01OworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtY24wNDIiKSkub2s9KG1jY29uMy5nZXRGb3JtKCkpPT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUExBSU47CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1jbjA0MyIpKS5vaz0obWNjb24zLmdldExvc3REaWdpdHMoKT8xOjApPT0xOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtY24wNDQiKSkub2s9KG1jY29uMy5nZXRSb3VuZGluZ01vZGUoKSk9PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQOworICAKKyAgbWNjb240PW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQyxmYWxzZSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRkxPT1IpOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtY24wNTEiKSkub2s9KG1jY29uNC5nZXREaWdpdHMoKSk9PTA7CisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1jbjA1MiIpKS5vaz0obWNjb240LmdldEZvcm0oKSk9PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDOworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtY24wNTMiKSkub2s9KG1jY29uNC5nZXRMb3N0RGlnaXRzKCk/MTowKT09MDsKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibWNuMDU0IikpLm9rPShtY2NvbjQuZ2V0Um91bmRpbmdNb2RlKCkpPT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRkxPT1I7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtY24wNjEiKSkub2s9KG1jY29uMS50b1N0cmluZygpKS5lcXVhbHMoImRpZ2l0cz0xMTEgZm9ybT1TQ0lFTlRJRklDIGxvc3REaWdpdHM9MCByb3VuZGluZ01vZGU9Uk9VTkRfSEFMRl9VUCIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibWNuMDYyIikpLm9rPShtY2NvbjIudG9TdHJpbmcoKSkuZXF1YWxzKCJkaWdpdHM9NzggZm9ybT1FTkdJTkVFUklORyBsb3N0RGlnaXRzPTAgcm91bmRpbmdNb2RlPVJPVU5EX0hBTEZfVVAiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1jbjA2MyIpKS5vaz0obWNjb24zLnRvU3RyaW5nKCkpLmVxdWFscygiZGlnaXRzPTUgZm9ybT1QTEFJTiBsb3N0RGlnaXRzPTEgcm91bmRpbmdNb2RlPVJPVU5EX0hBTEZfVVAiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1jbjA2NCIpKS5vaz0obWNjb240LnRvU3RyaW5nKCkpLmVxdWFscygiZGlnaXRzPTAgZm9ybT1TQ0lFTlRJRklDIGxvc3REaWdpdHM9MCByb3VuZGluZ01vZGU9Uk9VTkRfRkxPT1IiKTsKKyAgCisgIAorICAvLyBjb21wbGV0ZSB0ZXN0aW5nIHJvdW5kaW5nIG1vZGVzIHJvdW5kIHRyaXBzCisgIG1jcm1jPW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUExBSU4sZmFsc2UsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0NFSUxJTkcpOworICBtY3JtZD1uZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOLGZhbHNlLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9ET1dOKTsKKyAgbWNybWY9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTixmYWxzZSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRkxPT1IpOworICBtY3JtaGQ9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTixmYWxzZSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKTsKKyAgbWNybWhlPW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUExBSU4sZmFsc2UsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTik7CisgIG1jcm1odT1uZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOLGZhbHNlLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKTsKKyAgbWNybXVuPW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUExBSU4sZmFsc2UsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZKTsKKyAgbWNybXU9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTixmYWxzZSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVVApOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibWNuMDcxIikpLm9rPShtY3JtYy50b1N0cmluZygpKS5lcXVhbHMoImRpZ2l0cz0wIGZvcm09UExBSU4gbG9zdERpZ2l0cz0wIHJvdW5kaW5nTW9kZT1ST1VORF9DRUlMSU5HIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtY24wNzIiKSkub2s9KG1jcm1kLnRvU3RyaW5nKCkpLmVxdWFscygiZGlnaXRzPTAgZm9ybT1QTEFJTiBsb3N0RGlnaXRzPTAgcm91bmRpbmdNb2RlPVJPVU5EX0RPV04iKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1jbjA3MyIpKS5vaz0obWNybWYudG9TdHJpbmcoKSkuZXF1YWxzKCJkaWdpdHM9MCBmb3JtPVBMQUlOIGxvc3REaWdpdHM9MCByb3VuZGluZ01vZGU9Uk9VTkRfRkxPT1IiKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1jbjA3NCIpKS5vaz0obWNybWhkLnRvU3RyaW5nKCkpLmVxdWFscygiZGlnaXRzPTAgZm9ybT1QTEFJTiBsb3N0RGlnaXRzPTAgcm91bmRpbmdNb2RlPVJPVU5EX0hBTEZfRE9XTiIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibWNuMDc1IikpLm9rPShtY3JtaGUudG9TdHJpbmcoKSkuZXF1YWxzKCJkaWdpdHM9MCBmb3JtPVBMQUlOIGxvc3REaWdpdHM9MCByb3VuZGluZ01vZGU9Uk9VTkRfSEFMRl9FVkVOIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtY24wNzYiKSkub2s9KG1jcm1odS50b1N0cmluZygpKS5lcXVhbHMoImRpZ2l0cz0wIGZvcm09UExBSU4gbG9zdERpZ2l0cz0wIHJvdW5kaW5nTW9kZT1ST1VORF9IQUxGX1VQIik7CisgIAorICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtY24wNzciKSkub2s9KG1jcm11bi50b1N0cmluZygpKS5lcXVhbHMoImRpZ2l0cz0wIGZvcm09UExBSU4gbG9zdERpZ2l0cz0wIHJvdW5kaW5nTW9kZT1ST1VORF9VTk5FQ0VTU0FSWSIpOworICAKKyAgKG5ldyBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwuVGVzdCgibWNuMDc4IikpLm9rPShtY3JtdS50b1N0cmluZygpKS5lcXVhbHMoImRpZ2l0cz0wIGZvcm09UExBSU4gbG9zdERpZ2l0cz0wIHJvdW5kaW5nTW9kZT1ST1VORF9VUCIpOworICAKKyAgCisgIC8vIFtnZXQgbWV0aG9kcyB0ZXN0ZWQgYWxyZWFkeV0KKyAgCisgIC8vIGVycm9ycy4uLgorICAKKyAge3RyeXtjaGVja2RpZzpkb3sKKyAgIG5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoLTEpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uICQxMzEpe2U9JDEzMTsKKyAgIGZsYWc9KGUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkRpZ2l0cyB0b28gc21hbGw6IC0xIik7CisgIH19LypjaGVja2RpZyovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1jbjEwMSIpKS5vaz1mbGFnOworICB7dHJ5e2NoZWNrZGlnYmlnOmRveworICAgbmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgxMDAwMDAwMDAwKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiAkMTMyKXtlPSQxMzI7CisgICBmbGFnPShlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJEaWdpdHMgdG9vIGxhcmdlOiAxMDAwMDAwMDAwIik7CisgIH19LypjaGVja2RpZ2JpZyovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1jbjEwMiIpKS5vaz1mbGFnOworICAKKyAge3RyeXtjaGVja2Zvcm06ZG97CisgICBuZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KDAsNSk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gJDEzMyl7ZT0kMTMzOworICAgZmxhZz0oZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiQmFkIGZvcm0gdmFsdWU6IDUiKTsKKyAgfX0vKmNoZWNrZm9ybSovCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QoIm1jbjExMSIpKS5vaz1mbGFnOworICB7dHJ5e2NoZWNrZm9ybW5lZzpkb3sKKyAgIG5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoMCwtMSk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gJDEzNCl7ZT0kMTM0OworICAgZmxhZz0oZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiQmFkIGZvcm0gdmFsdWU6IC0xIik7CisgIH19LypjaGVja2Zvcm1uZWcqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtY24xMTIiKSkub2s9ZmxhZzsKKyAgCisgIC8vIFtsb3N0RGlnaXRzIGNhbm5vdCBiZSBpbnZhbGlkXQorICAKKyAge3RyeXtjaGVja3JvdW5kOmRveworICAgbmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTixmYWxzZSwxMik7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gJDEzNSl7ZT0kMTM1OworICAgZmxhZz0oZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiQmFkIHJvdW5kaW5nTW9kZSB2YWx1ZTogMTIiKTsKKyAgfX0vKmNoZWNrcm91bmQqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtY24xMjEiKSkub2s9ZmxhZzsKKyAge3RyeXtjaGVja3JvdW5kbmVnOmRveworICAgbmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTixmYWxzZSwtMSk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gJDEzNil7ZT0kMTM2OworICAgZmxhZz0oZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiQmFkIHJvdW5kaW5nTW9kZSB2YWx1ZTogLTEiKTsKKyAgfX0vKmNoZWNrcm91bmRuZWcqLworICAobmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0KCJtY24xMjIiKSkub2s9ZmxhZzsKKyAgCisgIHN1bW1hcnkoIk1hdGhDb250ZXh0Iik7CisgIHJldHVybjt9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IGdlbmVyYWwgYXJpdGhtZXRpYyAoYmFzZSBvcGVyYXRvcnMpLgorICAqIDxwPlVubGlrZSB0aGUgc3BlY2lmaWMgbWV0aG9kIHRlc3RzLCB0aGVzZSB0ZXN0cyB3ZXJlIHJhbmRvbWx5CisgICogZ2VuZXJhdGVkIGJ5IGFuIElCTSBPYmplY3QgUmV4eCBwcm9jZWR1cmUsIHRoZW4gbWFudWFsbHkgY29ycmVjdGVkCisgICogZm9yIGtub3duIGRpZmZlcmVuY2VzIGZyb20gQU5TSSBYMy0yNzQuICBUaGVzZSBkaWZmZXJlbmNlcyBhcmU6CisgICogPG9sPgorICAqIDxsaT50aGUgdHJpZ2dlciBwb2ludCBpbiBleHBvbmVudGlhbCBub3RhdGlvbiBpcyBmaXhlZCBpbiBBTlNJCisgICogICAgIFgzLTI3NCBidXQgdmFyaWVzIHdpdGggRElHSVRTIGluIENsYXNzaWMgYW5kIE9iamVjdCBSZXh4CisgICogPGxpPnNvbWUgdHJhaWxpbmcgemVyb3Mgd2VyZSBtaXNzaW5nIChlLmcuLCAxLjMgKyAxRS02MCBzaG91bGQgc2hvdworICAqICAgICBzZXZlbiB0cmFpbGluZyB6ZXJvcykKKyAgKiA8bGk+dGhlIHBvd2VyIG9wZXJhdG9yIGlzIGxlc3MgYWNjdXJhdGUgaW4gT2JqZWN0IFJleHgKKyAgKiA8bGk+QU5TSSBYMy0yNzQgW2VycmF0YSAxOTk5XSByb3VuZHMgaW5wdXQgbnVtYmVycyB0byBESUdJVFMgKHJhdGhlcgorICAqICAgICB0aGFuIHRydW5jYXRpbmcgdG8gRElHSVRTKzEpLgorICAqIDwvb2w+CisgICovCisgCisgcHVibGljIHZvaWQgZGlhZ21hdGgoKXsKKyAgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IGRlZjsKKyAgZGVmPWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ERUZBVUxUOworICBtYXRodGVzdCgxLGRlZiwiLTkzNzUyODQuNDIiLCI1NTE2Ljk5ODMyRSsyNzI3Njk4NCIsIjUuNTE2OTk4MzJFKzI3Mjc2OTg3IiwiLTUuNTE2OTk4MzJFKzI3Mjc2OTg3IiwiLTUuMTcyMzQyODRFKzI3Mjc2OTk0IiwiLTEuNjk5MzQ1MTZFLTI3Mjc2OTgxIiwiMCIsIi05Mzc1Mjg0LjQyIiwiNi43OTA1Nzc1MkUrNDEiKTsKKyAgbWF0aHRlc3QoMixkZWYsIi00MTAuODMyNzEwIiwiOTkuMzU4ODI0M0UtNTAyNzQwODYyIiwiLTQxMC44MzI3MTAiLCItNDEwLjgzMjcxMCIsIi00LjA4MTk4NTUwRS01MDI3NDA4NTgiLCItNC4xMzQ4Mzg2OEUrNTAyNzQwODYyIiwiIiwiIiwiMS4zNjk3Nzc4NkUrMjYiKTsKKyAgbWF0aHRlc3QoMyxkZWYsIjgwMDI1LjIzNDAiLCItOC4wMzA5NzU4MSIsIjgwMDE3LjIwMzAiLCI4MDAzMy4yNjUwIiwiLTY0MjY4MC43MTgiLCItOTk2NC41NzE2NyIsIi05OTY0IiwiNC41OTEwMjkxNiIsIjUuOTQ1NDQ1MTdFLTQwIik7CisgIG1hdGh0ZXN0KDQsZGVmLCI4MTA1MjAyMC4yIiwiLTQ2NDUyNTQ5NSIsIi0zODM0NzM0NzUiLCI1NDU1Nzc1MTUiLCItMy43NjUwNzI5OEUrMTYiLCItMC4xNzQ0ODM0NyIsIjAiLCI4MTA1MjAyMC4yIiwiIik7CisgIG1hdGh0ZXN0KDUsZGVmLCI3MTUuMDY5Mjk0RS0yNjkyMzE1MSIsIjg1LjQ0MDQxMjhFKzc5NjM4ODU1NyIsIjguNTQ0MDQxMjhFKzc5NjM4ODU1OCIsIi04LjU0NDA0MTI4RSs3OTYzODg1NTgiLCI2LjEwOTU4MTU3RSs3Njk0NjU0MTAiLCI4LjM2OTIxNjI4RS04MjMzMTE3MDgiLCIwIiwiNy4xNTA2OTI5NEUtMjY5MjMxNDkiLCI0Ljg4ODAyMjEzRS0yNDIzMDgzMzQiKTsKKyAgbWF0aHRlc3QoNixkZWYsIi0yMTk3MTU3NS4wRSszMTQ1NDQ0MSIsIi03MDk0NDk2MC4zRSsxMTEyMzgyMjEiLCItNy4wOTQ0OTYwM0UrMTExMjM4MjI4IiwiNy4wOTQ0OTYwM0UrMTExMjM4MjI4IiwiMS41NTg3NzI1MkUrMTQyNjkyNjc3IiwiMy4wOTY5ODg4NEUtNzk3ODM3ODEiLCIwIiwiLTIuMTk3MTU3NTBFKzMxNDU0NDQ4IiwiLTQuMDQ1NDk1MDJFLTIyMDE4MTEzOSIpOworICBtYXRodGVzdCg3LGRlZiwiNjgyLjI1MzE2IiwiNTQ0NzAxODUuNiIsIjU0NDcwODY3LjkiLCItNTQ0Njk1MDMuNCIsIjMuNzE2MjQ1NjNFKzEwIiwiMC4wMDAwMTI1MjUyNTg2IiwiMCIsIjY4Mi4yNTMxNiIsIjMuNDg1Nzg2OTlFKzE1NDM2NTU0MSIpOworICBtYXRodGVzdCg4LGRlZiwiLTI1NzU4Njc1Ny4iLCIyMDgyODg4LjcxIiwiLTI1NTUwMzg2OCIsIi0yNTk2Njk2NDYiLCItNS4zNjUyNDU0OEUrMTQiLCItMTIzLjY2ODAzNiIsIi0xMjMiLCItMTM5MTQ0NS42NyIsIi0xLjI2ODc5NTE1RSsxNzUxOTAyMCIpOworICBtYXRodGVzdCg5LGRlZiwiMzE5NTc3NTQwLkUrMjQyNTk5NzYxIiwiNjAuNzEyNDU2MSIsIjMuMTk1Nzc1NDBFKzI0MjU5OTc2OSIsIjMuMTk1Nzc1NDBFKzI0MjU5OTc2OSIsIjEuOTQwMjMzNzRFKzI0MjU5OTc3MSIsIjUuMjYzNzg4NjlFKzI0MjU5OTc2NyIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxMCxkZWYsIi0xMzc2OTk3Ny4wIiwiMjQzNzEuMzM4MSIsIi0xMzc0NTYwNS43IiwiLTEzNzk0MzQ4LjMiLCItMy4zNTU5Mjc2NUUrMTEiLCItNTY1LjAwNzAxNSIsIi01NjUiLCItMTcwLjk3MzUiLCItOC43MzczNDAwMUUrMTczOTgyIik7CisgIG1hdGh0ZXN0KDExLGRlZiwiLTQ3NS40MzQ5NzJFLTcyNTQ2NDMxMSIsIi0zLjIyMjE0MDY2RS04NjU0NzY4MzYiLCItNC43NTQzNDk3MkUtNzI1NDY0MzA5IiwiLTQuNzU0MzQ5NzJFLTcyNTQ2NDMwOSIsIiIsIjEuNDc1NTI1MTlFKzE0MDAxMjUyNyIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxMixkZWYsIjg0Mi4wMTI1MCIsIjE5NzE5OTg5MyIsIjE5NzIwMDczNSIsIi0xOTcxOTkwNTEiLCIxLjY2MDQ0Nzc1RSsxMSIsIjAuMDAwMDA0MjY5ODQyNTgiLCIwIiwiODQyLjAxMjUwIiwiNy4wMDY3NDE2NEUrNTc2ODcyNTAyIik7CisgIG1hdGh0ZXN0KDEzLGRlZiwiNTcyLjE3MzEwM0UrMjgwMTI4NDI4IiwiLTcxNDAuMTk0MjgiLCI1LjcyMTczMTAzRSsyODAxMjg0MzAiLCI1LjcyMTczMTAzRSsyODAxMjg0MzAiLCItNC4wODU0MjcxMkUrMjgwMTI4NDM0IiwiLTguMDEzNDEwODVFKzI4MDEyODQyNiIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxNCxkZWYsIjY3NDIzNS45NTRFKzQ3NjEzNTI5MSIsIjk2ODQuODIyNDUiLCI2Ljc0MjM1OTU0RSs0NzYxMzUyOTYiLCI2Ljc0MjM1OTU0RSs0NzYxMzUyOTYiLCI2LjUyOTg1NTUwRSs0NzYxMzUzMDAiLCI2Ljk2MTc3OTE5RSs0NzYxMzUyOTIiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTUsZGVmLCItMzYwNTU3LjkyMUUrNDM3MTE2NTE0IiwiOTMwNDI4ODUwIiwiLTMuNjA1NTc5MjFFKzQzNzExNjUxOSIsIi0zLjYwNTU3OTIxRSs0MzcxMTY1MTkiLCItMy4zNTQ3MzQ5MkUrNDM3MTE2NTI4IiwiLTMuODc1MTc5OTNFKzQzNzExNjUxMCIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxNixkZWYsIjk1NzE2NTkxOEUtMzk0NTk1NzA1IiwiMTY3Ni41OTA3M0UtODI5NjE4OTQ0IiwiOS41NzE2NTkxOEUtMzk0NTk1Njk3IiwiOS41NzE2NTkxOEUtMzk0NTk1Njk3IiwiIiwiNS43MDkwMDE2MUUrNDM1MDIzMjQ0IiwiIiwiIiwiOS4xNjE2NjU5NUUtNzg5MTkxMzkzIik7CisgIG1hdGh0ZXN0KDE3LGRlZiwiLTI2MTA4NjQuNDAiLCIzMTI0NTkxMi43IiwiMjg2MzUwNDguMyIsIi0zMzg1Njc3Ny4xIiwiLTguMTU3ODg0MTFFKzEzIiwiLTAuMDgzNTU4NTg5NyIsIjAiLCItMjYxMDg2NC40MCIsIi0zLjEyMDA4OTA1RSsyMDA0OTgyODQiKTsKKyAgbWF0aHRlc3QoMTgsZGVmLCI5NTkuNTQ4NDYxIiwiOTguOTk0NTc3RSs3NzY3NzU0MjYiLCI5Ljg5OTQ1NzcwRSs3NzY3NzU0MjciLCItOS44OTk0NTc3MEUrNzc2Nzc1NDI3IiwiOS40OTkwMDk0MEUrNzc2Nzc1NDMwIiwiOS42OTI5Mzk2NUUtNzc2Nzc1NDI2IiwiMCIsIjk1OS41NDg0NjEiLCI2LjYxNzEyMTg1RSsyOSIpOworICBtYXRodGVzdCgxOSxkZWYsIi00MTA4NS4wMjY4IiwiMzExNTQ3Ny42MSIsIjMwNzQzOTIuNTgiLCItMzE1NjU2Mi42NCIsIi0xLjI3OTk5NDgxRSsxMSIsIi0wLjAxMzE4NzM5MjciLCIwIiwiLTQxMDg1LjAyNjgiLCI0LjczODQ0MTczRSsxNDM3MzgyOSIpOworICBtYXRodGVzdCgyMCxkZWYsIi03MjM0MjAyODUuIiwiMjY4MTY2MC4zNSIsIi03MjA3Mzg2MjUiLCItNzI2MTAxOTQ1IiwiLTEuOTM5OTY3NDlFKzE1IiwiLTI2OS43NjU4MTMiLCItMjY5IiwiLTIwNTM2NTAuODUiLCI0LjE0MzI0MTEzRSsyMzc1Nzg3MyIpOworICBtYXRodGVzdCgyMSxkZWYsIjYzNTQyMDE4LjBFLTgxNzczMjIzMCIsIi04ODM2MjQzLjIyIiwiLTg4MzYyNDMuMjIiLCI4ODM2MjQzLjIyIiwiLTUuNjE0NzI3MjZFLTgxNzczMjIxNiIsIi03LjE5MTA2NzExRS04MTc3MzIyMzAiLCIwIiwiNi4zNTQyMDE4MEUtODE3NzMyMjIzIiwiIik7CisgIG1hdGh0ZXN0KDIyLGRlZiwiLTk2MDUxLjcxMDgiLCItMjkxMjAxLjk1NSIsIi0zODcyNTMuNjY2IiwiMTk1MTUwLjI0NCIsIjIuNzk3MDQ0NjBFKzEwIiwiMC4zMjk4NDU2OTQiLCIwIiwiLTk2MDUxLjcxMDgiLCIzLjUzNjE3MTUzRS0xNDUwOTE2Iik7CisgIG1hdGh0ZXN0KDIzLGRlZiwiMTA4NDkwLjg1MyIsIjkxNjg1OTk2LjUiLCI5MTc5NDQ4Ny40IiwiLTkxNTc3NTA1LjciLCI5Ljk0NzA5MTk3RSsxMiIsIjAuMDAxMTgzMjg3MDYiLCIwIiwiMTA4NDkwLjg1MyIsIjYuOTgxMjQyNjVFKzQ2MTY3NTAzOCIpOworICBtYXRodGVzdCgyNCxkZWYsIi0yNzQ4OS4xNzM1IiwiLTk4MzU4MzUuNEUtNTA2NDExNjQ5IiwiLTI3NDg5LjE3MzUiLCItMjc0ODkuMTczNSIsIjIuNzAzNzg5ODZFLTUwNjQxMTYzOCIsIjIuNzk0Nzk4MDRFKzUwNjQxMTY0NiIsIiIsIiIsIjQuMDU4NjY0NzJFLTQ1Iik7CisgIG1hdGh0ZXN0KDI1LGRlZiwiLTg5MjIwNDA2LjYiLCI5OTMzOTEuMDA4RS02MTEwNDExNzUiLCItODkyMjA0MDYuNiIsIi04OTIyMDQwNi42IiwiLTguODYzMDc0OTZFLTYxMTA0MTE2MiIsIi04Ljk4MTM5ODY1RSs2MTEwNDExNzYiLCIiLCIiLCIzLjE5NjI1OTEzRSs3OSIpOworICBtYXRodGVzdCgyNixkZWYsIjQuNzU1MDIwMjAiLCItMTcwODkxNDQuOSIsIi0xNzA4OTE0MC4yIiwiMTcwODkxNDkuNyIsIi04MTI1OTIyOS4yIiwiLTIuNzgyNDc5ODlFLTciLCIwIiwiNC43NTUwMjAyMCIsIjEuMDYzMDE5MUUtMTE1NzE5NTUiKTsKKyAgbWF0aHRlc3QoMjcsZGVmLCI2ODAyNzkxNi4yIiwiLTc5Njg4My44MzkiLCI2NzIzMTAzMi40IiwiNjg4MjQ4MDAuMCIsIi01LjQyMTAzNDcwRSsxMyIsIi04NS4zNjc0MTg1IiwiLTg1IiwiMjkyNzg5Ljg4NSIsIjguMjk0MTUzNzRFLTYyNDE3NDQiKTsKKyAgbWF0aHRlc3QoMjgsZGVmLCItOC4wMTk2OTQzOUUrNzg4NjA1NDc4IiwiOTIxNTQxNTYuMCIsIi04LjAxOTY5NDM5RSs3ODg2MDU0NzgiLCItOC4wMTk2OTQzOUUrNzg4NjA1NDc4IiwiLTcuMzkwNDgxNjhFKzc4ODYwNTQ4NiIsIi04LjcwMjQ3NzE3RSs3ODg2MDU0NzAiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjksZGVmLCItODAxMi45ODM0MSIsIjk2MTg4Ljg2NTEiLCI4ODE3NS44ODE3IiwiLTEwNDIwMS44NDkiLCItNzcwNzU5NzgwIiwiLTAuMDgzMzA0Njg4MSIsIjAiLCItODAxMi45ODM0MSIsIi0xLjE2MDEwMTU2RSszNzU1MDIiKTsKKyAgbWF0aHRlc3QoMzAsZGVmLCIyMTc2MTQ3NkUrNTkyMzMwNjc3IiwiLTkuNzA3NDQ1MDYiLCIyLjE3NjE0NzYwRSs1OTIzMzA2ODQiLCIyLjE3NjE0NzYwRSs1OTIzMzA2ODQiLCItMi4xMTI0ODMzM0UrNTkyMzMwNjg1IiwiLTIuMjQxNzMwNTNFKzU5MjMzMDY4MyIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzMSxkZWYsIi05ODQwNzc4LjUxIiwiLTE3OTA3LjIxOSIsIi05ODU4Njg1LjczIiwiLTk4MjI4NzEuMjkiLCIxLjc2MjIwOTc2RSsxMSIsIjU0OS41NDI1MzQiLCI1NDkiLCItOTcxNS4yNzkiLCItNi42Mjk5NzQzN0UtMTI1MjI1Iik7CisgIG1hdGh0ZXN0KDMyLGRlZiwiLTQuMTA5NzYxNCIsIi04MTkuMjI1Nzc2RS0xNDUyMTQ3NTEiLCItNC4xMDk3NjE0MCIsIi00LjEwOTc2MTQwIiwiMy4zNjY4MjI0N0UtMTQ1MjE0NzQ4IiwiNS4wMTY2NDA3NEUrMTQ1MjE0NzQ4IiwiIiwiIiwiMC4wMDAwMTIyODc2MDE4Iik7CisgIG1hdGh0ZXN0KDMzLGRlZiwiLTQ0OC44ODA5ODUiLCItMzk0LjA4NzM3NEUtNDQyNTExNDM1IiwiLTQ0OC44ODA5ODUiLCItNDQ4Ljg4MDk4NSIsIjEuNzY4OTgzMjlFLTQ0MjUxMTQzMCIsIjEuMTM5MDM5MjVFKzQ0MjUxMTQzNSIsIiIsIiIsIjIuNDYzMDYwOTlFLTExIik7CisgIG1hdGh0ZXN0KDM0LGRlZiwiNzc5LjQ0NTMwNEUrODgyNjg4NTQ0IiwiLTc5Nzg2ODUxOSIsIjcuNzk0NDUzMDRFKzg4MjY4ODU0NiIsIjcuNzk0NDUzMDRFKzg4MjY4ODU0NiIsIi02LjIxODk0ODcwRSs4ODI2ODg1NTUiLCItOS43NjkwOTQ2RSs4ODI2ODg1MzciLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMzUsZGVmLCI3OTk5OTU0NzciLCItNi4yMzY3NTIwOEUrMTU2MzA5NDQwIiwiLTYuMjM2NzUyMDhFKzE1NjMwOTQ0MCIsIjYuMjM2NzUyMDhFKzE1NjMwOTQ0MCIsIi00Ljk4OTM3MzQ2RSsxNTYzMDk0NDkiLCItMS4yODI3MTE2OUUtMTU2MzA5NDMyIiwiMCIsIjc5OTk5NTQ3NyIsIjMuODE0ODI2NjdFLTU0Iik7CisgIG1hdGh0ZXN0KDM2LGRlZiwiLTUxOTMyLjgxNzAiLCI1OTE4NDAyNzVFLTI3ODQ4MDI4OSIsIi01MTkzMi44MTcwIiwiLTUxOTMyLjgxNzAiLCItMy4wNzM1OTMyN0UtMjc4NDgwMjc2IiwiLTguNzc0ODAyOEUrMjc4NDgwMjg0IiwiIiwiIiwiMS45NjE3ODQ0M0UrMjgiKTsKKyAgbWF0aHRlc3QoMzcsZGVmLCI3MC4zNTUyMzkyIiwiLTQyMjg2NTYuNzMiLCItNDIyODU4Ni4zOCIsIjQyMjg3MjcuMDkiLCItMjk3NTA4MTU2IiwiLTAuMDAwMDE2NjM3NzI3NyIsIjAiLCI3MC4zNTUyMzkyIiwiOS4xNDc0MjM4MkUtNzgxMTU4NCIpOworICBtYXRodGVzdCgzOCxkZWYsIjE1ODgzNTkuMzQiLCItMTIyMzI3OTkuMiIsIi0xMDY0NDQzOS45IiwiMTM4MjExNTguNSIsIi0xLjk0MzAwODA5RSsxMyIsIi0wLjEyOTg0NDMwNyIsIjAiLCIxNTg4MzU5LjM0IiwiMS41NjkxMDA4NkUtNzU4NTQ5NjAiKTsKKyAgbWF0aHRlc3QoMzksZGVmLCIyODQyLjE2MjA2IiwiLTMuMjMyMzQzNDUiLCIyODM4LjkyOTcyIiwiMjg0NS4zOTQ0MCIsIi05MTg2Ljg0MzkyIiwiLTg3OS4yODgzODgiLCItODc5IiwiMC45MzIxNjc0NSIsIjQuMzU1NjU1MTRFLTExIik7CisgIG1hdGh0ZXN0KDQwLGRlZiwiMjk5NjAuMjMwNSIsIjQ1LjI3MzU3NDdFLTk1MjA1NDc1IiwiMjk5NjAuMjMwNSIsIjI5OTYwLjIzMDUiLCIxLjM1NjQwNjczRS05NTIwNTQ2OSIsIjYuNjE3NTk3NzNFKzk1MjA1NDc3IiwiIiwiIiwiMi40MTM5MzZFKzIyIik7CisgIG1hdGh0ZXN0KDQxLGRlZiwiMjkxNjU2NS43NyIsIjExNTE5MzUuNDNFLTc4NzExODcyNCIsIjI5MTY1NjUuNzciLCIyOTE2NTY1Ljc3IiwiMy4zNTk2OTU0NEUtNzg3MTE4NzEyIiwiMi41MzE4ODMwM0UrNzg3MTE4NzI0IiwiIiwiIiwiMjkxNjU2NS43NyIpOworICBtYXRodGVzdCg0MixkZWYsIi01MjcyMzAxMi45RS05NjcxNDM3ODciLCI3OS40MDg4MjM3IiwiNzkuNDA4ODIzNyIsIi03OS40MDg4MjM3IiwiLTQuMTg2NjcyNDRFLTk2NzE0Mzc3OCIsIi02LjYzOTQ0MDExRS05NjcxNDM3ODIiLCIwIiwiLTUuMjcyMzAxMjlFLTk2NzE0Mzc4MCIsIiIpOworICBtYXRodGVzdCg0MyxkZWYsIi0xNjc0NzM0NjUiLCI3OTM2NDYuNTk3IiwiLTE2NjY3OTgxOSIsIi0xNjgyNjcxMTIiLCItMS4zMjkxNDc0NkUrMTQiLCItMjExLjAxNzY4MiIsIi0yMTEiLCItMTQwMzMuMDMzIiwiLTEuMTkwNTM3ODlFKzY1MjY5MTAiKTsKKyAgbWF0aHRlc3QoNDQsZGVmLCItMzE3NjkwNzEuMCIsIjEzMy40MzYwIiwiLTMxNzY4OTM3LjYiLCItMzE3NjkyMDQuNCIsIi00LjIzOTEzNzc2RSs5IiwiLTIzODA4NC43MDciLCItMjM4MDg0IiwiLTk0LjM3NjAiLCItNS44NDI1MjQzMkUrOTk3Iik7CisgIG1hdGh0ZXN0KDQ1LGRlZiwiNDU5NjAuNjM4MyIsIi05MzM1Mi43NDY4IiwiLTQ3MzkyLjEwODUiLCIxMzkzMTMuMzg1IiwiLTQuMjkwNTUxODNFKzkiLCItMC40OTIzMzMwMDQiLCIwIiwiNDU5NjAuNjM4MyIsIjEuODgzMzUzMjNFLTQzNTI0OCIpOworICBtYXRodGVzdCg0NixkZWYsIjYwNi4xNzU2NDgiLCI1LjI4NTI4NDU4RS05ODE5ODM2MjAiLCI2MDYuMTc1NjQ4IiwiNjA2LjE3NTY0OCIsIjMuMjAzODEwODFFLTk4MTk4MzYxNyIsIjEuMTQ2OTEyMDNFKzk4MTk4MzYyMiIsIiIsIiIsIjguMTg0NTA1MTZFKzEzIik7CisgIG1hdGh0ZXN0KDQ3LGRlZiwiMTcxNTc4LjYxN0UrNjQzMDA2MTEwIiwiLTQwNzc3NC4yOTMiLCIxLjcxNTc4NjE3RSs2NDMwMDYxMTUiLCIxLjcxNTc4NjE3RSs2NDMwMDYxMTUiLCItNi45OTY1MzQ5MkUrNjQzMDA2MTIwIiwiLTQuMjA3Njg1OTdFKzY0MzAwNjEwOSIsIiIsIiIsIiIpOworICBtYXRodGVzdCg0OCxkZWYsIi02ODIyODYzMzIuIiwiLTQ2NC44NzE2OTkiLCItNjgyMjg2Nzk3IiwiLTY4MjI4NTg2NyIsIjMuMTcxNzU2MDZFKzExIiwiMTQ2NzY4Ny4zOSIsIjE0Njc2ODciLCItMTgyLjcwOTc4NyIsIi0xLjYwNTA4NDNFLTQxMDgiKTsKKyAgbWF0aHRlc3QoNDksZGVmLCI0OTIwODguNDI4IiwiNjUzLjcyMTcwIiwiNDkyNzQyLjE1MCIsIjQ5MTQzNC43MDYiLCIzMjE2ODg4ODQiLCI3NTIuNzQ5MTEiLCI3NTIiLCI0ODkuNzA5NjAiLCIzLjk0NjU4NTk2RSszNzIyIik7CisgIG1hdGh0ZXN0KDUwLGRlZiwiNzQzMDM3ODIuNSIsIjExNDEuNjgwNTgiLCI3NDMwNDkyNC4yIiwiNzQzMDI2NDAuOCIsIjguNDgzMTE4NTVFKzEwIiwiNjUwODIuODEyIiwiNjUwODIiLCI5MjYuOTkyNDQiLCI0Ljk0ODQ5ODY5RSs4OTg4Iik7CisgIG1hdGh0ZXN0KDUxLGRlZiwiNzQuNzc5NDA4NEUrMTE5Mzc1MzI5IiwiLTM0Nzk5MzU1LjYiLCI3LjQ3Nzk0MDg0RSsxMTkzNzUzMzAiLCI3LjQ3Nzk0MDg0RSsxMTkzNzUzMzAiLCItMi42MDIyNzUyMkUrMTE5Mzc1MzM4IiwiLTIuMTQ4ODczMzdFKzExOTM3NTMyMyIsIiIsIiIsIiIpOworICBtYXRodGVzdCg1MixkZWYsIi05NDMyLjA4MzY5IiwiMzM3MzUuNTA1OCIsIjI0MzAzLjQyMjEiLCItNDMxNjcuNTg5NSIsIi0zMTgxOTYxMTQiLCItMC4yNzk1ODkyMTgiLCIwIiwiLTk0MzIuMDgzNjkiLCIyLjMwOTU2N0UrMTM0MDg3Iik7CisgIG1hdGh0ZXN0KDUzLGRlZiwiNDI0OTE5OC43OEUtMTEyNDMzMTU1IiwiNDE4NjczMDUxLiIsIjQxODY3MzA1MSIsIi00MTg2NzMwNTEiLCIxLjc3OTAyNTAyRS0xMTI0MzMxNDAiLCIxLjAxNDkyMDU0RS0xMTI0MzMxNTciLCIwIiwiNC4yNDkxOTg3OEUtMTEyNDMzMTQ5IiwiIik7CisgIG1hdGh0ZXN0KDU0LGRlZiwiLTI5NjA5MzMuMDIiLCItMjA3OTMzLjM4IiwiLTMxNjg4NjYuNDAiLCItMjc1Mjk5OS42NCIsIjYuMTU2NzY4MTFFKzExIiwiMTQuMjM5ODE1OCIsIjE0IiwiLTQ5ODY1LjcwIiwiLTIuNzU2ODAzOTdFLTEzNDU2MjQiKTsKKyAgbWF0aHRlc3QoNTUsZGVmLCIyOTMxNy43NTE5RSs5NDU2MDAwMzUiLCIxLjQzNTU1NzUwIiwiMi45MzE3NzUxOUUrOTQ1NjAwMDM5IiwiMi45MzE3NzUxOUUrOTQ1NjAwMDM5IiwiNC4yMDg3MzE4NkUrOTQ1NjAwMDM5IiwiMi4wNDIyNTU0OUUrOTQ1NjAwMDM5IiwiIiwiIiwiMi45MzE3NzUxOUUrOTQ1NjAwMDM5Iik7CisgIG1hdGh0ZXN0KDU2LGRlZiwiLTUxLjE2OTM3NzAiLCItNjM4MDU1LjQxNCIsIi02MzgxMDYuNTgzIiwiNjM4MDA0LjI0NSIsIjMyNjQ4ODk4LjAiLCIwLjAwMDA4MDE5NTgxOTgiLCIwIiwiLTUxLjE2OTM3NzAiLCItMy40ODI2NjA3NUUtMTA5MDQ0MyIpOworICBtYXRodGVzdCg1NyxkZWYsIi03NTYzNDMwNTUuIiwiLTY4LjkyNDgzNDRFKzIxNzEwMDk3NSIsIi02Ljg5MjQ4MzQ0RSsyMTcxMDA5NzYiLCI2Ljg5MjQ4MzQ0RSsyMTcxMDA5NzYiLCI1LjIxMzA4MTk4RSsyMTcxMDA5ODUiLCIxLjA5NzM0NDc1RS0yMTcxMDA5NjgiLCIwIiwiLTc1NjM0MzA1NSIsIi03LjA2MjY1ODk3RS02MyIpOworICBtYXRodGVzdCg1OCxkZWYsIjI1MzguODA0MDZFKzY5NDE4NTE5NyIsIi0zMzg2NDk5LjY1IiwiMi41Mzg4MDQwNkUrNjk0MTg1MjAwIiwiMi41Mzg4MDQwNkUrNjk0MTg1MjAwIiwiLTguNTk3NjU5MDZFKzY5NDE4NTIwNiIsIi03LjQ5NjgzODM5RSs2OTQxODUxOTMiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNTksZGVmLCItNTQzNDQuMDY3MiIsIi04MDg2LjQ1MjM1IiwiLTYyNDMwLjUxOTYiLCItNDYyNTcuNjE0OSIsIjQzOTQ1MDcxMCIsIjYuNzIwMzg0MjciLCI2IiwiLTU4MjUuMzUzMTAiLCIzLjYyOTE2ODYxRS0zODI4OSIpOworICBtYXRodGVzdCg2MCxkZWYsIjMuMzE2MDAwNTQiLCIyMTc0ODE2NDgiLCIyMTc0ODE2NTEiLCItMjE3NDgxNjQ1IiwiNzIxMTY5MjYyIiwiMS41MjQ3MjY2RS04IiwiMCIsIjMuMzE2MDAwNTQiLCIzLjczMTM0OTY5RSsxMTMyMjQxMTkiKTsKKyAgbWF0aHRlc3QoNjEsZGVmLCI2ODE4MzIuNjcxIiwiMzIwMzQxLjE2MUUrNjI5NDY3NTYwIiwiMy4yMDM0MTE2MUUrNjI5NDY3NTY1IiwiLTMuMjAzNDExNjFFKzYyOTQ2NzU2NSIsIjIuMTg0MTkwNjlFKzYyOTQ2NzU3MSIsIjIuMTI4NDU3ODlFLTYyOTQ2NzU2MCIsIjAiLCI2ODE4MzIuNjcxIiwiMy4xNjk4MTEzOUUrMTciKTsKKyAgbWF0aHRlc3QoNjIsZGVmLCI4MzI2ODk0ODEiLCIzNDgwNDAwMjRFLTg4MjEyMjUwMSIsIjgzMjY4OTQ4MSIsIjgzMjY4OTQ4MSIsIjIuODk4MDkyNjdFLTg4MjEyMjQ4NCIsIjIuMzkyNTEwN0UrODgyMTIyNTAxIiwiIiwiIiwiNS43NzM2MzM4MUUrMjYiKTsKKyAgbWF0aHRlc3QoNjMsZGVmLCIxNC41NTEyMzI2RSsyNTc1MDA4MTEiLCI2MC45OTc5NTc3RS02NDczMTQ3MjQiLCIxLjQ1NTEyMzI2RSsyNTc1MDA4MTIiLCIxLjQ1NTEyMzI2RSsyNTc1MDA4MTIiLCI4Ljg3NTk1NDcxRS0zODk4MTM5MTEiLCIyLjM4NTUyNzg0RSs5MDQ4MTU1MzQiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNjQsZGVmLCItOTAxLjI3ODg0NCIsIjQ0OTQ2MTY2Ny4iLCI0NDk0NjA3NjYiLCItNDQ5NDYyNTY4IiwiLTQuMDUwOTAyOTJFKzExIiwiLTAuMDAwMDAyMDA1MjQwNzQiLCIwIiwiLTkwMS4yNzg4NDQiLCIiKTsKKyAgbWF0aHRlc3QoNjUsZGVmLCItNS4zMjYyNzY3NSIsIi03Mzg4NjAyMTZFLTIzODI3MzIyNCIsIi01LjMyNjI3Njc1IiwiLTUuMzI2Mjc2NzUiLCIzLjkzNTM3Mzk5RS0yMzgyNzMyMTUiLCI3LjIwODc3NDU5RSsyMzgyNzMyMTUiLCIiLCIiLCItMC4wMDAwMDgyMjMwNjgzOCIpOworICBtYXRodGVzdCg2NixkZWYsIi01MDUzODM0NjMuIiwiMy4xODc1NjMyOCIsIi01MDUzODM0NjAiLCItNTA1MzgzNDY2IiwiLTEuNjEwOTQxNzdFKzkiLCItMTU4NTQ4NTI3IiwiLTE1ODU0ODUyNyIsIi0wLjIzNjcxMTQ0IiwiLTEuMjkwODEyMjZFKzI2Iik7CisgIG1hdGh0ZXN0KDY3LGRlZiwiNzY5MjQxLjQ0RS03MjA5MjczMjAiLCItMTQ1MzgyNjMxLiIsIi0xNDUzODI2MzEiLCIxNDUzODI2MzEiLCItMS4xMTgzNDM0NEUtNzIwOTI3MzA2IiwiLTUuMjkxMTUwOTFFLTcyMDkyNzMyMyIsIjAiLCI3LjY5MjQxNDRFLTcyMDkyNzMxNSIsIiIpOworICBtYXRodGVzdCg2OCxkZWYsIi02LjQ1MDM4OTEwIiwiNTY3MzYuNDQxMUUrNDQwOTM3MTY3IiwiNS42NzM2NDQxMUUrNDQwOTM3MTcxIiwiLTUuNjczNjQ0MTFFKzQ0MDkzNzE3MSIsIi0zLjY1OTcyMTIxRSs0NDA5MzcxNzIiLCItMS4xMzY5MDQwN0UtNDQwOTM3MTcxIiwiMCIsIi02LjQ1MDM4OTEwIiwiNzIwMzAuMzQyMSIpOworICBtYXRodGVzdCg2OSxkZWYsIjU4LjQ3MjEwNzUiLCItNzEyMTg2ODI5IiwiLTcxMjE4Njc3MSIsIjcxMjE4Njg4NyIsIi00LjE2NDMwNjQ4RSsxMCIsIi04LjIxMDIyMDI4RS04IiwiMCIsIjU4LjQ3MjEwNzUiLCIiKTsKKyAgbWF0aHRlc3QoNzAsZGVmLCI4MjQ0LjA4MzU3IiwiMjQ1LjMwMjgyOEUrNjUyMDA3OTU5IiwiMi40NTMwMjgyOEUrNjUyMDA3OTYxIiwiLTIuNDUzMDI4MjhFKzY1MjAwNzk2MSIsIjIuMDIyMjk3MDFFKzY1MjAwNzk2NSIsIjMuMzYwNzc4MDRFLTY1MjAwNzk1OCIsIjAiLCI4MjQ0LjA4MzU3IiwiNjc5NjQ5MTMuOSIpOworICBtYXRodGVzdCg3MSxkZWYsIjQ1LjUzNjEzOTciLCItNzY1NzkwNjMuOSIsIi03NjU3OTAxOC40IiwiNzY1NzkxMDkuNCIsIi0zLjQ4NzExNDk1RSs5IiwiLTUuOTQ2MjkwOThFLTciLCIwIiwiNDUuNTM2MTM5NyIsIjMuOTgzMzUzNzRFLTEyNjk5NTM2NyIpOworICBtYXRodGVzdCg3MixkZWYsIjU5NDQyMC41NEUrNjg1MjYzMDM5IiwiLTk1MjQyMC4xNzkiLCI1Ljk0NDIwNTQwRSs2ODUyNjMwNDQiLCI1Ljk0NDIwNTQwRSs2ODUyNjMwNDQiLCItNS42NjEzODExN0UrNjg1MjYzMDUwIiwiLTYuMjQxMTU4NjFFKzY4NTI2MzAzOCIsIiIsIiIsIiIpOworICBtYXRodGVzdCg3MyxkZWYsIi04NDEzMTA3MDEuIiwiOTM5ODExMC40IiwiLTgzMTkxMjU5MSIsIi04NTA3MDg4MTEiLCItNy45MDY3MzA4NUUrMTUiLCItODkuNTE5MTMzNyIsIi04OSIsIi00ODc4ODc1LjQiLCIxLjMwMDAxNDY2RSs4Mzg3NzcyMiIpOworICBtYXRodGVzdCg3NCxkZWYsIjkwNDM5MjE0NkUtMTQwMTAwMjc2IiwiMTY4MTE2MDkzLiIsIjE2ODExNjA5MyIsIi0xNjgxMTYwOTMiLCIxLjUyMDQyODc0RS0xNDAxMDAyNTkiLCI1LjM3OTU2OTE0RS0xNDAxMDAyNzYiLCIwIiwiOS4wNDM5MjE0NkUtMTQwMTAwMjY4IiwiIik7CisgIG1hdGh0ZXN0KDc1LGRlZiwiLTkwNzMyNDc5MkUrNjg1NTM5NjcwIiwiLTE1LjY5MDIxNzEiLCItOS4wNzMyNDc5MkUrNjg1NTM5Njc4IiwiLTkuMDczMjQ3OTJFKzY4NTUzOTY3OCIsIjEuNDIzNjEyMzBFKzY4NTUzOTY4MCIsIjUuNzgyNzQyMTFFKzY4NTUzOTY3NyIsIiIsIiIsIiIpOworICBtYXRodGVzdCg3NixkZWYsIjk4NzAxMzYwNi4iLCItMjY4MTguMzU3MkUrNTYwOTA3NDQyIiwiLTIuNjgxODM1NzJFKzU2MDkwNzQ0NiIsIjIuNjgxODM1NzJFKzU2MDkwNzQ0NiIsIi0yLjY0NzAwODM0RSs1NjA5MDc0NTUiLCItMy42ODAzNjU2NUUtNTYwOTA3NDM4IiwiMCIsIjk4NzAxMzYwNiIsIjEuMDM5OTkzNEUtMjciKTsKKyAgbWF0aHRlc3QoNzcsZGVmLCItNzQxMzE3NTY0IiwiNjMwLjI0MTUzMEUtMjEyNzgyOTQ2IiwiLTc0MTMxNzU2NCIsIi03NDEzMTc1NjQiLCItNC42NzIwOTExNkUtMjEyNzgyOTM1IiwiLTEuMTc2MjQzNkUrMjEyNzgyOTUyIiwiIiwiIiwiMS42NTk2ODUyN0UrNTMiKTsKKyAgbWF0aHRlc3QoNzgsZGVmLCI2MTg2NzkwNy4yIiwiLTEzOTIwNDY3MCIsIi03NzMzNjc2MyIsIjIwMTA3MjU3NyIsIi04LjYxMjMwMTYxRSsxNSIsIi0wLjQ0NDQzODQ0NiIsIjAiLCI2MTg2NzkwNy4yIiwiIik7CisgIG1hdGh0ZXN0KDc5LGRlZiwiLTI3My42MjI3NDNFKzUzMTI4MjcxNyIsIi00NTQzLjY4Njg0IiwiLTIuNzM2MjI3NDNFKzUzMTI4MjcxOSIsIi0yLjczNjIyNzQzRSs1MzEyODI3MTkiLCIxLjI0MzI1NjA2RSs1MzEyODI3MjMiLCI2LjAyMjA0MjI5RSs1MzEyODI3MTUiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoODAsZGVmLCItMzgzNTg4OTQ5LiIsIi00Mjg2NDA1ODMuIiwiLTgxMjIyOTUzMiIsIjQ1MDUxNjM0IiwiMS42NDQyMTc5MUUrMTciLCIwLjg5NDg5NjQ4IiwiMCIsIi0zODM1ODg5NDkiLCIiKTsKKyAgbWF0aHRlc3QoODEsZGVmLCItNTYxODIuMjY4NiIsIjMyLjc3NDE2NDkiLCItNTYxNDkuNDk0NCIsIi01NjIxNS4wNDI4IiwiLTE4NDEzMjYuOTQiLCItMTcxNC4yMjQyNiIsIi0xNzE0IiwiLTcuMzQ5OTYxNCIsIi01LjQ1NDc2NDAyRSsxNTYiKTsKKyAgbWF0aHRlc3QoODIsZGVmLCItNjM2NjM4NC4zMCIsIjMzMjAxNC45ODAiLCItNjAzNDM2OS4zMiIsIi02Njk4Mzk5LjI4IiwiLTIuMTEzNzM0OTZFKzEyIiwiLTE5LjE3NDk5MTEiLCItMTkiLCItNTgwOTkuNjgwIiwiLTMuMDUzOTIzOTlFKzIyNTg5OTQiKTsKKyAgbWF0aHRlc3QoODMsZGVmLCItMS4yNzg5NzcwMiIsIi04MjEzNzc2LjAzRS02ODY1MTkxMjMiLCItMS4yNzg5NzcwMiIsIi0xLjI3ODk3NzAyIiwiMS4wNTA1MjMwOEUtNjg2NTE5MTE2IiwiMS41NTcxMTIxMkUrNjg2NTE5MTE2IiwiIiwiIiwiMC4xMzk2NjgzNzEiKTsKKyAgbWF0aHRlc3QoODQsZGVmLCI2NS40MDU5MDM2IiwiNDAxMTYyMTQ1RSs4ODQxNTU1MDYiLCI0LjAxMTYyMTQ1RSs4ODQxNTU1MTQiLCItNC4wMTE2MjE0NUUrODg0MTU1NTE0IiwiMi42MjM4MzcyNkUrODg0MTU1NTE2IiwiMS42MzA0MTA2NkUtODg0MTU1NTEzIiwiMCIsIjY1LjQwNTkwMzYiLCIxODMwMDcwNC4xIik7CisgIG1hdGh0ZXN0KDg1LGRlZiwiLTIwNjMwOTE2LjgiLCIxNTg5ODc0MTEuRS00ODA1MDA2MTIiLCItMjA2MzA5MTYuOCIsIi0yMDYzMDkxNi44IiwiLTMuMjgwMDU2MDVFLTQ4MDUwMDU5NyIsIi0xLjI5NzY0NDY4RSs0ODA1MDA2MTEiLCIiLCIiLCI0LjI1NjM0NzI4RSsxNCIpOworICBtYXRodGVzdCg4NixkZWYsIi00LjcyNzA1ODUzIiwiLTk3NjI2NzQyLjQiLCItOTc2MjY3NDcuMSIsIjk3NjI2NzM3LjciLCI0NjE0ODczMjUiLCI0Ljg0MTk3MDk3RS04IiwiMCIsIi00LjcyNzA1ODUzIiwiMi45MjY1NDQ0OUUtNjU4NTgxMjAiKTsKKyAgbWF0aHRlc3QoODcsZGVmLCI4LjQzNTI4MTY5IiwiLTQ1NzMuNDU3NTIiLCItNDU2NS4wMjIyNCIsIjQ1ODEuODkyODAiLCItMzg1NzguNDAyNSIsIi0wLjAwMTg0NDM5OTI3IiwiMCIsIjguNDM1MjgxNjkiLCI4Ljg0MjQ4Njg4RS00MjM2Iik7CisgIG1hdGh0ZXN0KDg4LGRlZiwiMS45MTA3NTE4OSIsIi03MDQyNDcwODkuIiwiLTcwNDI0NzA4NyIsIjcwNDI0NzA5MSIsIi0xLjM0NTY0MTQ2RSs5IiwiLTIuNzEzMTgzOTRFLTkiLCIwIiwiMS45MTA3NTE4OSIsIjYuODQ1NDc0OTRFLTE5ODAzNzMwOSIpOworICBtYXRodGVzdCg4OSxkZWYsIjMxOTk3MTk4RS01NTE3NDYzMDgiLCIzMjYuODkyNTg0IiwiMzI2Ljg5MjU4NCIsIi0zMjYuODkyNTg0IiwiMS4wNDU5NjQ2N0UtNTUxNzQ2Mjk4IiwiOS43ODgyOTExOUUtNTUxNzQ2MzA0IiwiMCIsIjMuMTk5NzE5OEUtNTUxNzQ2MzAxIiwiIik7CisgIG1hdGh0ZXN0KDkwLGRlZiwiMTI3NTg5LjIxMyIsIjg0MTg0MzA0LiIsIjg0MzExODkzLjIiLCItODQwNTY3MTQuOCIsIjEuMDc0MTAwOTFFKzEzIiwiMC4wMDE1MTU1OTM4NSIsIjAiLCIxMjc1ODkuMjEzIiwiMi44NzkxNzA0MkUrNDI5ODI5Mzk0Iik7CisgIG1hdGh0ZXN0KDkxLGRlZiwiNzE0NDk0MjQ4IiwiLTcwMjUwNjMuNTkiLCI3MDc0NjkxODUiLCI3MjE1MTkzMTIiLCItNS4wMTkzNjc1M0UrMTUiLCItMTAxLjcwNjQ0NiIsIi0xMDEiLCI0OTYyODI1LjQxIiwiMS42NTAxODUxNkUtNjIxOTk5MDgiKTsKKyAgbWF0aHRlc3QoOTIsZGVmLCItNTI5ODc2ODAuMkUrMjc5NTMzNTAzIiwiLTQyMDE0MTE0LjgiLCItNS4yOTg3NjgwMkUrMjc5NTMzNTEwIiwiLTUuMjk4NzY4MDJFKzI3OTUzMzUxMCIsIjIuMjI2MjMwNDhFKzI3OTUzMzUxOCIsIjEuMjYxMTg3NTlFKzI3OTUzMzUwMyIsIiIsIiIsIiIpOworICBtYXRodGVzdCg5MyxkZWYsIi04Nzk1LjA1MTMiLCItMjI1Mjk0LjM5NEUtODg0NDE0MjM4IiwiLTg3OTUuMDUxMzAiLCItODc5NS4wNTEzMCIsIjEuOTgxNDc1NzVFLTg4NDQxNDIyOSIsIjMuOTAzODAzODhFKzg4NDQxNDIzNiIsIiIsIiIsIjEuMjkyNzc1OUUtOCIpOworICBtYXRodGVzdCg5NCxkZWYsIjgzMjgwLjEzOTQiLCIxNjE1NjYzNTQuIiwiMTYxNjQ5NjM0IiwiLTE2MTQ4MzA3NCIsIjEuMzQ1NTI2ODVFKzEzIiwiMC4wMDA1MTU0NTQ3MTgiLCIwIiwiODMyODAuMTM5NCIsIjUuMzA3NzQ4MDlFKzc5NDk5Mzk0MCIpOworICBtYXRodGVzdCg5NSxkZWYsIjExMi44Nzc4OTciLCItOS45NjQ4MTY2NiIsIjEwMi45MTMwODAiLCIxMjIuODQyNzE0IiwiLTExMjQuODA3NTUiLCItMTEuMzI3NjQ0MSIsIi0xMSIsIjMuMjY0OTEzNzQiLCIyLjk3NzkwNTQ1RS0yMSIpOworICBtYXRodGVzdCg5NixkZWYsIi01NzI1NDIuMTIxRSs4NDc0ODczOTciLCI0MzMuODQzNDIwIiwiLTUuNzI1NDIxMjFFKzg0NzQ4NzQwMiIsIi01LjcyNTQyMTIxRSs4NDc0ODc0MDIiLCItMi40ODM5MzYzMkUrODQ3NDg3NDA1IiwiLTEuMzE5Njk3NkUrODQ3NDg3NDAwIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDk3LGRlZiwiNDcwOTY0OS44OSIsIjIwOTQ5MjY2LjQiLCIyNTY1ODkxNi4zIiwiLTE2MjM5NjE2LjUiLCI5Ljg2NjM3MTAyRSsxMyIsIjAuMjI0ODEyMTYzIiwiMCIsIjQ3MDk2NDkuODkiLCI0Ljg1MjkzNjQ0RSsxMzk3OTQyMTMiKTsKKyAgbWF0aHRlc3QoOTgsZGVmLCItOTQ3NS4xOTMyMiIsIi0zMDg4NS4yNDc1RSs1ODQ0ODczNDEiLCItMy4wODg1MjQ3NUUrNTg0NDg3MzQ1IiwiMy4wODg1MjQ3NUUrNTg0NDg3MzQ1IiwiMi45MjY0MzY4OEUrNTg0NDg3MzQ5IiwiMy4wNjc4NzAyNkUtNTg0NDg3MzQyIiwiMCIsIi05NDc1LjE5MzIyIiwiLTEuMTc1NTM1NTdFLTEyIik7CisgIG1hdGh0ZXN0KDk5LGRlZiwiLTIxMzIzMDQ0Ny4iLCI4NjQuODE1ODIyRSsxMjc3ODMwNDYiLCI4LjY0ODE1ODIyRSsxMjc3ODMwNDgiLCItOC42NDgxNTgyMkUrMTI3NzgzMDQ4IiwiLTEuODQ0MDUwNjRFKzEyNzc4MzA1NyIsIi0yLjQ2NTYxNjg2RS0xMjc3ODMwNDEiLCIwIiwiLTIxMzIzMDQ0NyIsIi05LjExMjYxMzYxRSs3NCIpOworICBtYXRodGVzdCgxMDAsZGVmLCItODkuMTE2ODc4NkUrNDAzMzc1ODczIiwiNjQ2NC4wNTc0NCIsIi04LjkxMTY4Nzg2RSs0MDMzNzU4NzQiLCItOC45MTE2ODc4NkUrNDAzMzc1ODc0IiwiLTUuNzYwNTY2MjJFKzQwMzM3NTg3OCIsIi0xLjM3ODY1MjMzRSs0MDMzNzU4NzEiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTAxLGRlZiwiNjE3NzQuNDk1OCIsIi0xNDAwMC43NzA2IiwiNDc3NzMuNzI1MiIsIjc1Nzc1LjI2NjQiLCItODY0ODkwNTQ1IiwiLTQuNDEyMjIxMTIiLCItNCIsIjU3NzEuNDEzNCIsIjcuNTkwMzA0MDdFLTY3MDc3Iik7CisgIG1hdGh0ZXN0KDEwMixkZWYsIjEuNjA3MzE0MTQiLCI3LjA0MzMwMjkzRS00MjcwMzM0MTkiLCIxLjYwNzMxNDE0IiwiMS42MDczMTQxNCIsIjEuMTMyMDgwMDRFLTQyNzAzMzQxOCIsIjIuMjgyMDQ2MDJFKzQyNzAzMzQxOCIsIiIsIiIsIjI3LjcxNDM5MjEiKTsKKyAgbWF0aHRlc3QoMTAzLGRlZiwiNzk1NTAxMi41MSIsIi0yMzAxMTc2NjIuIiwiLTIyMjE2MjY1MCIsIjIzODA3MjY3NSIsIi0xLjgzMDU4ODg4RSsxNSIsIi0wLjAzNDU2OTMyNjEiLCIwIiwiNzk1NTAxMi41MSIsIiIpOworICBtYXRodGVzdCgxMDQsZGVmLCI0MDg2NjYxLjA4IiwiMS43NzYyMTk5NCIsIjQwODY2NjIuODYiLCI0MDg2NjU5LjMwIiwiNzI1ODgwOC45MCIsIjIzMDA3NjIuOTgiLCIyMzAwNzYyIiwiMS43Mzg0MDU3MiIsIjEuNjcwMDc5ODhFKzEzIik7CisgIG1hdGh0ZXN0KDEwNSxkZWYsIi02MTAuMDc2OTMxIiwiLTIwNy42NTgzMDYiLCItODE3LjczNTIzNyIsIi00MDIuNDE4NjI1IiwiMTI2Njg3LjU0MiIsIjIuOTM3ODg4NDEiLCIyIiwiLTE5NC43NjAzMTkiLCI0LjM2NTE4Mzc3RS01ODAiKTsKKyAgbWF0aHRlc3QoMTA2LGRlZiwiLTk4LjYzNTM2OTciLCItOTkyNTMuMzg5OUUtNzE2MzA5NjUzIiwiLTk4LjYzNTM2OTciLCItOTguNjM1MzY5NyIsIjkuNzg5ODk0ODFFLTcxNjMwOTY0NyIsIjkuOTM3NzMzMDlFKzcxNjMwOTY0OSIsIiIsIiIsIjEuMTQ3MjkwMDdFLTIwIik7CisgIG1hdGh0ZXN0KDEwNyxkZWYsIi05NTk5MjM3MzAiLCI0MDkuMTI1NTQyRS05MDAyOTU1MjgiLCItOTU5OTIzNzMwIiwiLTk1OTkyMzczMCIsIi0zLjkyNzI5MzE2RS05MDAyOTU1MTciLCItMi4zNDYyODE2RSs5MDAyOTU1MzQiLCIiLCIiLCI4LjQ5MDc2Njc3RSszNSIpOworICBtYXRodGVzdCgxMDgsZGVmLCIzNzk5NjUxMzMiLCItOC4xNTg2OTY1NyIsIjM3OTk2NTEyNSIsIjM3OTk2NTE0MSIsIi0zLjEwMDAyMDIzRSs5IiwiLTQ2NTcxNzkzLjYiLCItNDY1NzE3OTMiLCI1LjE5MjE0OTk5IiwiMi4zMDE3MDY5N0UtNjkiKTsKKyAgbWF0aHRlc3QoMTA5LGRlZiwiODMzLjY0Njc5NyIsIjEzODk0OTkuNDZFLTQ0MzQwNzI1MSIsIjgzMy42NDY3OTciLCI4MzMuNjQ2Nzk3IiwiMS4xNTgzNTE3N0UtNDQzNDA3MjQyIiwiNS45OTk2MTk0NEUrNDQzNDA3MjQ3IiwiIiwiIiwiODMzLjY0Njc5NyIpOworICBtYXRodGVzdCgxMTAsZGVmLCIyMzE0OTMzLjRFLTY0NjQ4OTE5NCIsIi03NDAxNTM4LjE3IiwiLTc0MDE1MzguMTciLCI3NDAxNTM4LjE3IiwiLTEuNzEzNDA2NzlFLTY0NjQ4OTE4MSIsIi0zLjEyNzYzODI2RS02NDY0ODkxOTUiLCIwIiwiMi4zMTQ5MzM0RS02NDY0ODkxODgiLCIiKTsKKyAgbWF0aHRlc3QoMTExLGRlZiwiODA4NTI1MzQ3IiwiLTU5NTkuNzQ2NjdFKzU4MjMyMTY4IiwiLTUuOTU5NzQ2NjdFKzU4MjMyMTcxIiwiNS45NTk3NDY2N0UrNTgyMzIxNzEiLCItNC44MTg2MDYyNEUrNTgyMzIxODAiLCItMS4zNTY2NDM4MkUtNTgyMzIxNjMiLCIwIiwiODA4NTI1MzQ3IiwiMy41Nzk2MzAyRS01NCIpOworICBtYXRodGVzdCgxMTIsZGVmLCItMTcyMjA0OTAuNkUrNzI2NDI4NzA0IiwiMTkuOTg1NTY4OCIsIi0xLjcyMjA0OTA2RSs3MjY0Mjg3MTEiLCItMS43MjIwNDkwNkUrNzI2NDI4NzExIiwiLTMuNDQxNjEzMDBFKzcyNjQyODcxMiIsIi04LjYxNjQ2MjU5RSs3MjY0Mjg3MDkiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTEzLGRlZiwiNTkwMTUuOTcwNSIsIi03MjA3MDQwNS40RSszMjI5NTcyNzkiLCItNy4yMDcwNDA1NEUrMzIyOTU3Mjg2IiwiNy4yMDcwNDA1NEUrMzIyOTU3Mjg2IiwiLTQuMjUzMzA0OTJFKzMyMjk1NzI5MSIsIi04LjE4ODY1NTI3RS0zMjI5NTcyODMiLCIwIiwiNTkwMTUuOTcwNSIsIjQuMDEwNjM0ODhFLTM0Iik7CisgIG1hdGh0ZXN0KDExNCxkZWYsIjE2NDExNDcwRSs1NzgxOTIwMDgiLCI0OTc0NzAuMDA1RS0zNzc0NzM2MjEiLCIxLjY0MTE0NzAwRSs1NzgxOTIwMTUiLCIxLjY0MTE0NzAwRSs1NzgxOTIwMTUiLCI4LjE2NDIxNDA2RSsyMDA3MTgzOTkiLCIzLjI5ODk4Njg0RSs5NTU2NjU2MzAiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTE1LGRlZiwiLTEwNy4zNTM1NDRFKzYwOTY4OTgwOCIsIi02NTkuNTAxMzZFLTQ1NjcxMTc0MyIsIi0xLjA3MzUzNTQ0RSs2MDk2ODk4MTAiLCItMS4wNzM1MzU0NEUrNjA5Njg5ODEwIiwiNy4wNzk5ODA4M0UrMTUyOTc4MDY5IiwiIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDExNixkZWYsIjc4Ni4xMzQxNjMiLCItNTMuMDI5MjI3NUUtNjY0NDE5NzY4IiwiNzg2LjEzNDE2MyIsIjc4Ni4xMzQxNjMiLCItNC4xNjg4MDg3NEUtNjY0NDE5NzY0IiwiLTEuNDgyNDU0NDlFKzY2NDQxOTc2OSIsIiIsIiIsIjMuMzMwNTU1MzJFLTE1Iik7CisgIG1hdGh0ZXN0KDExNyxkZWYsIjIzLjU0MTQ3MTQiLCI1MDAwNzg2LjkxIiwiNTAwMDgxMC40NSIsIi01MDAwNzYzLjM3IiwiMTE3NzI1ODgyIiwiMC4wMDAwMDQ3MDc1NTM0IiwiMCIsIjIzLjU0MTQ3MTQiLCI0LjQ4OTU2MThFKzY4NjAyNDciKTsKKyAgbWF0aHRlc3QoMTE4LGRlZiwiLTY5Nzc1LjYxMTMiLCI1NjEyOTIxMjAuIiwiNTYxMjIyMzQ0IiwiLTU2MTM2MTg5NiIsIi0zLjkxNjQ1MDA4RSsxMyIsIi0wLjAwMDEyNDMxMjQ3MyIsIjAiLCItNjk3NzUuNjExMyIsIiIpOworICBtYXRodGVzdCgxMTksZGVmLCI5MTkwNDMuODcxIiwiLTcxNjA2NjEzLjciLCItNzA2ODc1NjkuOCIsIjcyNTI1NjU3LjYiLCItNi41ODA5NjE5NEUrMTMiLCItMC4wMTI4MzQ2MjI3IiwiMCIsIjkxOTA0My44NzEiLCIzLjA1ODYyNDI5RS00MjcwMTQzMTciKTsKKyAgbWF0aHRlc3QoMTIwLGRlZiwiLTI3NjY3LjE5MTUiLCItMjkzNDU1LjEwN0UtNzg5MTgxOTI0IiwiLTI3NjY3LjE5MTUiLCItMjc2NjcuMTkxNSIsIjguMTE5MDc4NjRFLTc4OTE4MTkxNSIsIjkuNDI4MDgzMTVFKzc4OTE4MTkyMiIsIiIsIiIsIi00LjcyMTc2OTM4RS0xNCIpOworICBtYXRodGVzdCgxMjEsZGVmLCItOTA4NjAzNjI1LiIsIi05ODIuNDA5MjczRSs0NDk0NDExMzQiLCItOS44MjQwOTI3M0UrNDQ5NDQxMTM2IiwiOS44MjQwOTI3M0UrNDQ5NDQxMTM2IiwiOC45MjYyMDYyN0UrNDQ5NDQxMTQ1IiwiOS4yNDg3MjgxRS00NDk0NDExMjkiLCIwIiwiLTkwODYwMzYyNSIsIjIuNjA3Njg2MzJFLTkwIik7CisgIG1hdGh0ZXN0KDEyMixkZWYsIjg0Ny4xMTMzNTEiLCI1LjcxNTExMjY4IiwiODUyLjgyODQ2NCIsIjg0MS4zOTgyMzgiLCI0ODQxLjM0ODI1IiwiMTQ4LjIyMzM4NiIsIjE0OCIsIjEuMjc2Njc0MzYiLCIzLjY5NTI5NTM4RSsxNyIpOworICBtYXRodGVzdCgxMjMsZGVmLCItOTkyMTQwNDc1IiwiMy44MjkxODIxOCIsIi05OTIxNDA0NzEiLCItOTkyMTQwNDc5IiwiLTMuNzk5MDg2NjNFKzkiLCItMjU5MDk5ODM2IiwiLTI1OTA5OTgzNiIsIi0wLjE0Nzg3NzUyIiwiOS42ODkzMDU5NUUrMzUiKTsKKyAgbWF0aHRlc3QoMTI0LGRlZiwiLTEyNjA2NDM3LjUiLCIyNjgxMjMxNDVFKzM2Mjc5ODg1OCIsIjIuNjgxMjMxNDVFKzM2Mjc5ODg2NiIsIi0yLjY4MTIzMTQ1RSszNjI3OTg4NjYiLCItMy4zODAwNzc2N0UrMzYyNzk4ODczIiwiLTQuNzAxNzM0MTZFLTM2Mjc5ODg2MCIsIjAiLCItMTI2MDY0MzcuNSIsIi0yLjAwMzQ0MzYyRSsyMSIpOworICBtYXRodGVzdCgxMjUsZGVmLCIzNzk5NDcwLjY0IiwiLTI2NC43MDM5OTIiLCIzNzk5MjA1Ljk0IiwiMzc5OTczNS4zNCIsIi0xLjAwNTczNTA1RSs5IiwiLTE0MzUzLjY1ODMiLCItMTQzNTMiLCIxNzQuMjQyODI0IiwiMi4zNjI1NDY2RS0xNzQ0Iik7CisgIG1hdGh0ZXN0KDEyNixkZWYsIi04LjExMDcwMjQ3IiwiLTkzMTI4NDA1Ni5FLTY1NDI4ODk3NCIsIi04LjExMDcwMjQ3IiwiLTguMTEwNzAyNDciLCI3LjU1MzM2Nzg5RS02NTQyODg5NjUiLCI4LjcwOTE2MDY3RSs2NTQyODg5NjUiLCIiLCIiLCItNi41ODM3NTY2MkUtOSIpOworICBtYXRodGVzdCgxMjcsZGVmLCItMjQyNjYwMTc3LiIsIi02LjA5ODMyNzE1RS05NDM3NDI0MTUiLCItMjQyNjYwMTc3IiwiLTI0MjY2MDE3NyIsIjEuNDc5ODIxMTVFLTk0Mzc0MjQwNiIsIjMuOTc5MTI2OTJFKzk0Mzc0MjQyMiIsIiIsIiIsIjQuODk3ODg5MDFFLTUxIik7CisgIG1hdGh0ZXN0KDEyOCxkZWYsIjc2LjE0NjM4MDMiLCItNDUuNjc1ODAwNkUtNjM2OTA3OTk2IiwiNzYuMTQ2MzgwMyIsIjc2LjE0NjM4MDMiLCItMy40NzgwNDY4OEUtNjM2OTA3OTkzIiwiLTEuNjY3MTA1NTRFKzYzNjkwNzk5NiIsIiIsIiIsIjMuOTA2MTkyODdFLTEwIik7CisgIG1hdGh0ZXN0KDEyOSxkZWYsIjc2MTE4NS44NjIiLCItNzA4Nzg0NzAuOUUrMjIxMjE0NzEyIiwiLTcuMDg3ODQ3MDlFKzIyMTIxNDcxOSIsIjcuMDg3ODQ3MDlFKzIyMTIxNDcxOSIsIi01LjM5NTE2OTAwRSsyMjEyMTQ3MjUiLCItMS4wNzM5MzA5OUUtMjIxMjE0NzE0IiwiMCIsIjc2MTE4NS44NjIiLCI2Ljc1NDA2MTQ0RS00MiIpOworICBtYXRodGVzdCgxMzAsZGVmLCI2MjAzNjA2LjU0IiwiLTE5NS45Mjc0OEUtODMzNTEyMDYxIiwiNjIwMzYwNi41NCIsIjYyMDM2MDYuNTQiLCItMS4yMTU0NTcwMEUtODMzNTEyMDUyIiwiLTMuMTY2Mjc2OUUrODMzNTEyMDY1IiwiIiwiIiwiMi41OTg0MzI5MkUtMTQiKTsKKyAgbWF0aHRlc3QoMTMxLGRlZiwiLTE2MzI3NDgzNy4iLCI5NS4wNDQ4NTUwRSs4ODc4NzY1MzMiLCI5LjUwNDQ4NTUwRSs4ODc4NzY1MzQiLCItOS41MDQ0ODU1MEUrODg3ODc2NTM0IiwiLTEuNTUxODQzMzJFKzg4Nzg3NjU0MyIsIi0xLjcxNzg3MTM5RS04ODc4NzY1MjciLCIwIiwiLTE2MzI3NDgzNyIsIjEuMzQ2NDU3MzFFKzgyIik7CisgIG1hdGh0ZXN0KDEzMixkZWYsIjIuMzg2MzgxOTAiLCItODA3OTg2MTc5LiIsIi04MDc5ODYxNzciLCI4MDc5ODYxODEiLCItMS45MjgxNjM1OUUrOSIsIi0yLjk1MzQ5MzQ3RS05IiwiMCIsIjIuMzg2MzgxOTAiLCIxLjE5MDI5MzA1RS0zMDUyMDg2NTYiKTsKKyAgbWF0aHRlc3QoMTMzLGRlZiwiLTEwOTAyMjI5NkUtODExOTgxMTU4IiwiNy4xOTY4NTY4MCIsIjcuMTk2ODU2ODAiLCItNy4xOTY4NTY4MCIsIi03Ljg0NjE3ODUyRS04MTE5ODExNTAiLCItMS41MTQ4NTk4OEUtODExOTgxMTUxIiwiMCIsIi0xLjA5MDIyMjk2RS04MTE5ODExNTAiLCIiKTsKKyAgbWF0aHRlc3QoMTM0LGRlZiwiLTU1OTI1MC43ODBFLTI3MzcxMDQyMSIsIi0zOTM3ODA4MTEuIiwiLTM5Mzc4MDgxMSIsIjM5Mzc4MDgxMSIsIjIuMjAyMjIyMjZFLTI3MzcxMDQwNyIsIjEuNDIwMjA4MzFFLTI3MzcxMDQyNCIsIjAiLCItNS41OTI1MDc4MEUtMjczNzEwNDE2IiwiIik7CisgIG1hdGh0ZXN0KDEzNSxkZWYsIi04ODAyMS45OTY2RSs1NTUzMzQ2NDIiLCI3NTk5Njg2LjY0RSs4MTg4ODQwNTMiLCI3LjU5OTY4NjY0RSs4MTg4ODQwNTkiLCItNy41OTk2ODY2NEUrODE4ODg0MDU5IiwiIiwiLTEuMTU4MjMxOTJFLTI2MzU0OTQxMyIsIjAiLCItOC44MDIxOTk2NkUrNTU1MzM0NjQ2IiwiIik7CisgIG1hdGh0ZXN0KDEzNixkZWYsIjE5NC4zMTc2NDhFLTE5NzQ1MDAwOSIsIi05MzAuOTc5MDY0IiwiLTkzMC45NzkwNjQiLCI5MzAuOTc5MDY0IiwiLTEuODA5MDU2NjJFLTE5NzQ1MDAwNCIsIi0yLjA4NzIzOTcyRS0xOTc0NTAwMTAiLCIwIiwiMS45NDMxNzY0OEUtMTk3NDUwMDA3IiwiIik7CisgIG1hdGh0ZXN0KDEzNyxkZWYsIjk0OTU0NzkuNjUiLCI3NDA1Njk3Ljk2IiwiMTY5MDExNzcuNiIsIjIwODk3ODEuNjkiLCI3LjAzMjA2NTQzRSsxMyIsIjEuMjgyMTg1NjUiLCIxIiwiMjA4OTc4MS42OSIsIjEuMDEzNTQ0NkUrNTE2NzMzODMiKTsKKyAgbWF0aHRlc3QoMTM4LGRlZiwiLTE2NTYuMjg5MjUiLCItMTYzMDUwNTExRS02ODI4ODIzODAiLCItMTY1Ni4yODkyNSIsIi0xNjU2LjI4OTI1IiwiMi43MDA1ODgwOUUtNjgyODgyMzY5IiwiMS4wMTU4MTM1OUUrNjgyODgyMzc1IiwiIiwiIiwiMy42NDUyNTI2NUUtNyIpOworICBtYXRodGVzdCgxMzksZGVmLCI5NTU4MS4zNzg0RSs2NDI2MjE0OSIsIi05OS4yODc5MzY1IiwiOS41NTgxMzc4NEUrNjQyNjIxNTMiLCI5LjU1ODEzNzg0RSs2NDI2MjE1MyIsIi05LjQ5MDA3NzgzRSs2NDI2MjE1NSIsIi05LjYyNjY4NTk2RSs2NDI2MjE1MSIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxNDAsZGVmLCI2NDM3NjEuNDUyIiwiMy43MzQ0NjkzOSIsIjY0Mzc2NS4xODYiLCI2NDM3NTcuNzE4IiwiMjQwNDEwNy40NCIsIjE3MjM4My42NDciLCIxNzIzODMiLCIyLjQxNTE0MzYzIiwiMS43MTc1MTIzNkUrMjMiKTsKKyAgbWF0aHRlc3QoMTQxLGRlZiwiNzk2MC40OTg2NkUtMTI5ODI3NDIzIiwiMzIyMC4yMjg1MCIsIjMyMjAuMjI4NTAiLCItMzIyMC4yMjg1MCIsIjIuNTYzNDYyNDdFLTEyOTgyNzQxNiIsIjIuNDcyMDI5MTNFLTEyOTgyNzQyMyIsIjAiLCI3Ljk2MDQ5ODY2RS0xMjk4Mjc0MjAiLCIiKTsKKyAgbWF0aHRlc3QoMTQyLGRlZiwiLTYzNTYuNjQxMTJFLTcwNzIwMzgxOCIsIjE4MDUwNTQuOTgiLCIxODA1MDU0Ljk4IiwiLTE4MDUwNTQuOTgiLCItMS4xNDc0MDg2N0UtNzA3MjAzODA4IiwiLTMuNTIxNTc3NTZFLTcwNzIwMzgyMSIsIjAiLCItNi4zNTY2NDExMkUtNzA3MjAzODE1IiwiIik7CisgIG1hdGh0ZXN0KDE0MyxkZWYsIjIuMzkwNDA0MiIsIjg0NzYuNTIwMDYiLCI4NDc4LjkxMDQ2IiwiLTg0NzQuMTI5NjYiLCIyMDI2Mi4zMDkyIiwiMC4wMDAyODIwMDMwMTMiLCIwIiwiMi4zOTA0MDQyIiwiMi4wMDI1MTc1MkUrMzIwOCIpOworICBtYXRodGVzdCgxNDQsZGVmLCItNzEzMjk4LjY1OCIsIi05NTcuNzgyNzI5IiwiLTcxNDI1Ni40NDEiLCItNzEyMzQwLjg3NSIsIjY4MzE4NTEzNSIsIjc0NC43Mzk1MjgiLCI3NDQiLCItNzA4LjMwNzYyNCIsIjMuNjgxMjIzMjFFLTU2MDgiKTsKKyAgbWF0aHRlc3QoMTQ1LGRlZiwiNjA3Nzc5MjMzLkUtODIwNDk3MzY1IiwiLTIwLjExODg3NDJFLTg1NzMxODMyMyIsIjYuMDc3NzkyMzNFLTgyMDQ5NzM1NyIsIjYuMDc3NzkyMzNFLTgyMDQ5NzM1NyIsIiIsIi0zLjAyMDk0MDU3RSszNjgyMDk2NSIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxNDYsZGVmLCItMjA1ODg4MjUxIiwiLTkwOC43OTI5MjJFKzI1MDY4MDYxMyIsIi05LjA4NzkyOTIyRSsyNTA2ODA2MTUiLCI5LjA4NzkyOTIyRSsyNTA2ODA2MTUiLCIxLjg3MTA5Nzg1RSsyNTA2ODA2MjQiLCIyLjI2NTUxMzM2RS0yNTA2ODA2MDgiLCIwIiwiLTIwNTg4ODI1MSIsIi0xLjUwNDIzNThFLTc1Iik7CisgIG1hdGh0ZXN0KDE0NyxkZWYsIjUxNTQyMzk5LjEiLCItMjMyMTIuMjQxNCIsIjUxNTE5MTg2LjkiLCI1MTU2NTYxMS4zIiwiLTEuMTk2NDE0NjFFKzEyIiwiLTIyMjAuNDgzNSIsIi0yMjIwIiwiMTEyMjMuMTkyMCIsIjEuNzE2NDEzNDhFLTE3OTAxNSIpOworICBtYXRodGVzdCgxNDgsZGVmLCI0LjQ0Mjg3MjMwIiwiMTU4OTIzMDIzIiwiMTU4OTIzMDI3IiwiLTE1ODkyMzAxOSIsIjcwNjA3NDY5NyIsIjIuNzk1NjEyNzVFLTgiLCIwIiwiNC40NDI4NzIzMCIsIjcuMTI1NzM0MTZFKzEwMjkyODY5MyIpOworICBtYXRodGVzdCgxNDksZGVmLCItNzkxMjM2ODIuNiIsIi0zLjg1NzE3NzAiLCItNzkxMjM2ODYuNSIsIi03OTEyMzY3OC44IiwiMzA1MTk0MDQ5IiwiMjA1MTMzNjUuOCIsIjIwNTEzMzY1IiwiLTIuOTI5Mzk1MCIsIjIuNTUxMzczNDVFLTMyIik7CisgIG1hdGh0ZXN0KDE1MCxkZWYsIi04MC4zMzI0MzQ3RS01Njk3MTUwMzAiLCI4ODMxNDIuMzUxIiwiODgzMTQyLjM1MSIsIi04ODMxNDIuMzUxIiwiLTcuMDk0NDk3NTJFLTU2OTcxNTAyMyIsIi05LjA5NjIwNDU1RS01Njk3MTUwMzUiLCIwIiwiLTguMDMzMjQzNDdFLTU2OTcxNTAyOSIsIiIpOworICBtYXRodGVzdCgxNTEsZGVmLCIxMzYzNy40ODMiLCItNTI3OTguNTYzMSIsIi0zOTE2MS4wODAxIiwiNjY0MzYuMDQ2MSIsIi03MjAwMzk1MDciLCItMC4yNTgyOTI2OTIiLCIwIiwiMTM2MzcuNDgzIiwiMS40NzE2Mzc5MUUtMjE4MzEwIik7CisgIG1hdGh0ZXN0KDE1MixkZWYsIjYuNDI5MzQ4NDNFLTI3NjQ3NjQ1OCIsIjg0MDU3NDQwLjBFLTM4ODAzOTc4MiIsIjYuNDI5MzQ4NDNFLTI3NjQ3NjQ1OCIsIjYuNDI5MzQ4NDNFLTI3NjQ3NjQ1OCIsIjUuNDA0MzQ1NzBFLTY2NDUxNjIzMiIsIjcuNjQ4NzU1OTNFKzExMTU2MzMxNiIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxNTMsZGVmLCItNS42NDEzMzA4NyIsIi0xNzQwMTI5Ny4iLCItMTc0MDEzMDIuNiIsIjE3NDAxMjkxLjQiLCI5ODE2NjQ3My45IiwiMy4yNDE5MDI1M0UtNyIsIjAiLCItNS42NDEzMzA4NyIsIi0xLjI1OTA4OTE2RS0xMzA3NTAxNCIpOworICBtYXRodGVzdCgxNTQsZGVmLCI5NTQ2OS43MDU3RSs4NjU3MzM4MjQiLCIxOTguODI5NzQ5IiwiOS41NDY5NzA1N0UrODY1NzMzODI4IiwiOS41NDY5NzA1N0UrODY1NzMzODI4IiwiMS44OTgyMjE3NkUrODY1NzMzODMxIiwiNC44MDE1ODA1NkUrODY1NzMzODI2IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDE1NSxkZWYsIi00MTY0NjYuMjA5IiwiLTkzMDE1MzQyNyIsIi05MzA1Njk4OTMiLCI5Mjk3MzY5NjEiLCIzLjg3Mzc3NDcyRSsxNCIsIjAuMDAwNDQ3NzM5MjYyIiwiMCIsIi00MTY0NjYuMjA5IiwiIik7CisgIG1hdGh0ZXN0KDE1NixkZWYsIi0xNTQxNzMzLjg1IiwiLTEuOTkyMDg3MDgiLCItMTU0MTczNS44NCIsIi0xNTQxNzMxLjg2IiwiMzA3MTI2OC4wOCIsIjc3MzkyOC45NDQiLCI3NzM5MjgiLCItMS44ODAzNDk3NiIsIjQuMjA3MDg0MDFFLTEzIik7CisgIG1hdGh0ZXN0KDE1NyxkZWYsIi0zOTE1MjY5MS44IiwiLTY0NTEzMTc0OC4iLCItNjg0Mjg0NDQwIiwiNjA1OTc5MDU2IiwiMi41MjU4NjQ0NUUrMTYiLCIwLjA2MDY4OTQ1MTMiLCIwIiwiLTM5MTUyNjkxLjgiLCIiKTsKKyAgbWF0aHRlc3QoMTU4LGRlZiwiMTEzLjkzOTk3OSIsIi01ODI4MjU1MC40IiwiLTU4MjgyNDM2LjUiLCI1ODI4MjY2NC4zIiwiLTYuNjQwNzEyNTdFKzkiLCItMC4wMDAwMDE5NTQ5NTg3IiwiMCIsIjExMy45Mzk5NzkiLCIyLjEwNjU1N0UtMTE5ODY4MzMwIik7CisgIG1hdGh0ZXN0KDE1OSxkZWYsIi0zMjQ5NzEuNzM2IiwiLTk1MTcuMTUxNTQiLCItMzM0NDg4Ljg4OCIsIi0zMTU0NTQuNTg1IiwiMy4wOTI4MDUyNkUrOSIsIjM0LjE0NTkwMzMiLCIzNCIsIi0xMzg4LjU4MzY0IiwiLTUuODI3OTUyNjNFLTUyNDU3Iik7CisgIG1hdGh0ZXN0KDE2MCxkZWYsIi03Ni45NDM2NzQ0IiwiLTk1NDgxMjIuNzVFLTI3MzU5OTcyOCIsIi03Ni45NDM2NzQ0IiwiLTc2Ljk0MzY3NDQiLCI3LjM0NjY3NjQ4RS0yNzM1OTk3MjAiLCI4LjA1ODUxMzMyRSsyNzM1OTk3MjIiLCIiLCIiLCIxLjM3NDg5ODk1RS0xOSIpOworICBtYXRodGVzdCgxNjEsZGVmLCItNDMwMzkzLjI4MiIsIi03MC4yNTUxNTA1IiwiLTQzMDQ2My41MzciLCItNDMwMzIzLjAyNyIsIjMwMjM3MzQ0LjgiLCI2MTI2LjE0NTYxIiwiNjEyNiIsIi0xMC4yMzAwMzcwIiwiNC4yNjAwNjQwOUUtMzk1Iik7CisgIG1hdGh0ZXN0KDE2MixkZWYsIi0zMzA4MDUxLjkwIiwiLTM0OTQzMzc5OS5FKzM5NzgxMzE4OCIsIi0zLjQ5NDMzNzk5RSszOTc4MTMxOTYiLCIzLjQ5NDMzNzk5RSszOTc4MTMxOTYiLCIxLjE1NTk0NTE0RSszOTc4MTMyMDMiLCI5LjQ2Njg5MTYxRS0zOTc4MTMxOTEiLCIwIiwiLTMzMDgwNTEuOTAiLCItMi43NjIzNzc2OEUtMjAiKTsKKyAgbWF0aHRlc3QoMTYzLGRlZiwiMjMuMTU0MzIxMkUtNjU1ODIyNzEyIiwiNTg0OC4yMDg1MyIsIjU4NDguMjA4NTMiLCItNTg0OC4yMDg1MyIsIjEuMzU0MTEyOTlFLTY1NTgyMjcwNyIsIjMuOTU5MjE2MDdFLTY1NTgyMjcxNSIsIjAiLCIyLjMxNTQzMjEyRS02NTU4MjI3MTEiLCIiKTsKKyAgbWF0aHRlc3QoMTY0LGRlZiwiLTE3NC4yNjEzMDhFLTgyOTAyMDc3IiwiLTIwMDA5NjIwNC4iLCItMjAwMDk2MjA0IiwiMjAwMDk2MjA0IiwiMy40ODY5MDI2MkUtODI5MDIwNjciLCI4LjcwODg3NjI2RS04MjkwMjA4NCIsIjAiLCItMS43NDI2MTMwOEUtODI5MDIwNzUiLCIiKTsKKyAgbWF0aHRlc3QoMTY1LGRlZiwiLTUwNjY5MTA1LjIiLCI5MTA1Nzg5LjAxRSs2MDk4ODk3MDAiLCI5LjEwNTc4OTAxRSs2MDk4ODk3MDYiLCItOS4xMDU3ODkwMUUrNjA5ODg5NzA2IiwiLTQuNjEzODIxODFFKzYwOTg4OTcxNCIsIi01LjU2NDQ5MzY2RS02MDk4ODk3MDAiLCIwIiwiLTUwNjY5MTA1LjIiLCItMi4yMDEzNTAwOEUrNjkiKTsKKyAgbWF0aHRlc3QoMTY2LGRlZiwiNDI0NzY4ODU2LiIsIi05NzEuNzE3NTciLCI0MjQ3Njc4ODQiLCI0MjQ3Njk4MjgiLCItNC4xMjc1NTM2MUUrMTEiLCItNDM3MTMyLjAxMiIsIi00MzcxMzIiLCIxMS4xOTA3NiIsIjIuNzI2NTE0NzNFLTgzODciKTsKKyAgbWF0aHRlc3QoMTY3LGRlZiwiNzE4MS4yNzY3IiwiOTk5MTE3LjkxOCIsIjEwMDYyOTkuMTkiLCItOTkxOTM2LjY0MSIsIjcuMTc0OTQyMjNFKzkiLCIwLjAwNzE4NzYxNjc3IiwiMCIsIjcxODEuMjc2NyIsIjMuMDk2NTUxMjRFKzM4NTI4MDAiKTsKKyAgbWF0aHRlc3QoMTY4LGRlZiwiODA5NjQxNy4wN0UtNDMzNjk0NTI4IiwiLTY4LjQ4NjMzNjMiLCItNjguNDg2MzM2MyIsIjY4LjQ4NjMzNjMiLCItNS41NDQ5Mzk0MkUtNDMzNjk0NTIwIiwiLTEuMTgyMTk0NTFFLTQzMzY5NDUyMyIsIjAiLCI4LjA5NjQxNzA3RS00MzM2OTQ1MjIiLCIiKTsKKyAgbWF0aHRlc3QoMTY5LGRlZiwiMTIzNjI4Ny41IiwiLTcxMTkuOTcyOTlFLTE3NjIwMDQ5OCIsIjEyMzYyODcuNTAiLCIxMjM2Mjg3LjUwIiwiLTguODAyMzMzNjFFLTE3NjIwMDQ4OSIsIi0xLjczNjM2NTQ0RSsxNzYyMDA1MDAiLCIiLCIiLCIyLjI2NTQ5Nzg0RS00MyIpOworICBtYXRodGVzdCgxNzAsZGVmLCItNzUyOTk1ODMzRS02NTQ0MDEwNjciLCItMTUuMjczNjkzMEUrODAzOTM5OTgzIiwiLTEuNTI3MzY5MzBFKzgwMzkzOTk4NCIsIjEuNTI3MzY5MzBFKzgwMzkzOTk4NCIsIjEuMTUwMTAyNzJFKzE0OTUzODkyNiIsIiIsIjAiLCItNy41Mjk5NTgzM0UtNjU0NDAxMDU5IiwiIik7CisgIG1hdGh0ZXN0KDE3MSxkZWYsIjcwMjk5Mi40NTkiLCItMzEyLjY4OTQ3NCIsIjcwMjY3OS43NzAiLCI3MDMzMDUuMTQ4IiwiLTIxOTgxODM0MiIsIi0yMjQ4LjIxMjc0IiwiLTIyNDgiLCI2Ni41MjE0NDgiLCI4LjAyNDkzMzIyRS0xODMxIik7CisgIG1hdGh0ZXN0KDE3MixkZWYsIi00NDE0LjM4ODA1IiwiLTE3NjgwLjQ2MzBFLTU4NDM2NDUzNiIsIi00NDE0LjM4ODA1IiwiLTQ0MTQuMzg4MDUiLCI3LjgwNDg0MjQ2RS01ODQzNjQ1MjkiLCIyLjQ5Njc2MDQ0RSs1ODQzNjQ1MzUiLCIiLCIiLCI1LjEzMTY3MzEyRS04Iik7CisgIG1hdGh0ZXN0KDE3MyxkZWYsIjkuNDYzNTA4MDciLCI3ODI2LjY1NDI0IiwiNzgzNi4xMTc3NSIsIi03ODE3LjE5MDczIiwiNzQwNjcuNjA1NiIsIjAuMDAxMjA5MTM4MzkiLCIwIiwiOS40NjM1MDgwNyIsIjMuNjMyNzE0OTVFKzc2MzkiKTsKKyAgbWF0aHRlc3QoMTc0LGRlZiwiMjA3ODE1My43IiwiLTE2OTM0NjA3LjNFKzIzMzU5NDQzOSIsIi0xLjY5MzQ2MDczRSsyMzM1OTQ0NDYiLCIxLjY5MzQ2MDczRSsyMzM1OTQ0NDYiLCItMy41MTkyNzE2OEUrMjMzNTk0NDUyIiwiLTEuMjI3MTYzOEUtMjMzNTk0NDQwIiwiMCIsIjIwNzgxNTMuNyIsIjIuMzE1NDk5MzlFLTEzIik7CisgIG1hdGh0ZXN0KDE3NSxkZWYsIi05MzU5Ljc0NjI5IiwiNy4wNzc2MTc4OEUrMjUyNDU3Njk2IiwiNy4wNzc2MTc4OEUrMjUyNDU3Njk2IiwiLTcuMDc3NjE3ODhFKzI1MjQ1NzY5NiIsIi02LjYyNDQ3MDc3RSsyNTI0NTc3MDAiLCItMS4zMjI0NDMwMUUtMjUyNDU3NjkzIiwiMCIsIi05MzU5Ljc0NjI5IiwiLTYuMjkyODY2NzdFKzI3Iik7CisgIG1hdGh0ZXN0KDE3NixkZWYsIjY2LjIzMTkyODRFKzczMDQ2ODQ3OSIsIjI1LjkzOTE2ODVFKzIyMTE0NzA0NCIsIjYuNjIzMTkyODRFKzczMDQ2ODQ4MCIsIjYuNjIzMTkyODRFKzczMDQ2ODQ4MCIsIjEuNzE4MDAxMTVFKzk1MTYxNTUyNiIsIjIuNTUzMzU1ODhFKzUwOTMyMTQzNSIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxNzcsZGVmLCIzMTc5OTcwODguRS05MDk2ODc0MiIsIi05Nzc0MjYuNDYxIiwiLTk3NzQyNi40NjEiLCI5Nzc0MjYuNDYxIiwiLTMuMTA4MTg3NjhFLTkwOTY4NzI4IiwiLTMuMjUzNDExOUUtOTA5Njg3NDAiLCIwIiwiMy4xNzk5NzA4OEUtOTA5Njg3MzQiLCIiKTsKKyAgbWF0aHRlc3QoMTc4LGRlZiwiMjI3NDczMzg2IiwiLTY3NTkuNjEzOTAiLCIyMjc0NjY2MjYiLCIyMjc0ODAxNDYiLCItMS41Mzc2MzIyNkUrMTIiLCItMzM2NTEuODMxMiIsIi0zMzY1MSIsIjU2MTguNjUxMTAiLCIxLjQwOTkyNjI3RS01NjQ5MyIpOworICBtYXRodGVzdCgxNzksZGVmLCItMzkyMDE5LjQ2MiIsIi0yNDU0NTYuNTAzIiwiLTYzNzQ3NS45NjUiLCItMTQ2NTYyLjk1OSIsIjkuNjIyMzcyNjNFKzEwIiwiMS41OTcxMDM1OSIsIjEiLCItMTQ2NTYyLjk1OSIsIi0zLjA4NjU2NTMzRS0xMzcyOTE3Iik7CisgIG1hdGh0ZXN0KDE4MCxkZWYsIi0zNjE5NTU2LjI4RSs1ODc2NzM1ODMiLCItMy40NTIzNjk3MiIsIi0zLjYxOTU1NjI4RSs1ODc2NzM1ODkiLCItMy42MTk1NTYyOEUrNTg3NjczNTg5IiwiMS4yNDk2MDQ2NUUrNTg3NjczNTkwIiwiMS4wNDg0MjY2MUUrNTg3NjczNTg5IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDE4MSxkZWYsIi0yNDkuNDAwNzA0RS05MjM5MzA4NDgiLCI4MzExMDIuOTE5IiwiODMxMTAyLjkxOSIsIi04MzExMDIuOTE5IiwiLTIuMDcyNzc2NTNFLTkyMzkzMDg0MCIsIi0zLjAwMDg0MDE5RS05MjM5MzA4NTIiLCIwIiwiLTIuNDk0MDA3MDRFLTkyMzkzMDg0NiIsIiIpOworICBtYXRodGVzdCgxODIsZGVmLCI2NTIzNC4yNzM5RSsxNTQ5NDk5MTQiLCItNjk0NTgxODk1IiwiNi41MjM0MjczOUUrMTU0OTQ5OTE4IiwiNi41MjM0MjczOUUrMTU0OTQ5OTE4IiwiLTQuNTMxMDU0NTZFKzE1NDk0OTkyNyIsIi05LjM5MTg3NjUyRSsxNTQ5NDk5MDkiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTgzLGRlZiwiNDUuMjMxNjIxMyIsIi04ODc3NTA4My40IiwiLTg4Nzc1MDM4LjIiLCI4ODc3NTEyOC42IiwiLTQuMDE1NDQwOTVFKzkiLCItNS4wOTUwODA2OUUtNyIsIjAiLCI0NS4yMzE2MjEzIiwiMS45MjMxNDI1NEUtMTQ2OTYyMDE1Iik7CisgIG1hdGh0ZXN0KDE4NCxkZWYsIjMzMTEwMDM3NS4iLCI0NDIuMzQzMzc4IiwiMzMxMTAwODE3IiwiMzMxMDk5OTMzIiwiMS40NjQ2MDA1OEUrMTEiLCI3NDg1MTQuMzciLCI3NDg1MTQiLCIxNjMuNzU5NzA4IiwiNi42NDAxMTA0M0UrMzc2NSIpOworICBtYXRodGVzdCgxODUsZGVmLCI4MS44MTYyNzY1IiwiNS42MTIzOTUxNUUrNDY3MzcyMTYzIiwiNS42MTIzOTUxNUUrNDY3MzcyMTYzIiwiLTUuNjEyMzk1MTVFKzQ2NzM3MjE2MyIsIjQuNTkxODUyNzNFKzQ2NzM3MjE2NSIsIjEuNDU3Nzc4MjZFLTQ2NzM3MjE2MiIsIjAiLCI4MS44MTYyNzY1IiwiMi45OTk0MjY3N0UrMTEiKTsKKyAgbWF0aHRlc3QoMTg2LGRlZiwiLTU3MzguMTMwNjlFKzc4OTQ2NDA3OCIsIjMzOTY5NzE1LjAiLCItNS43MzgxMzA2OUUrNzg5NDY0MDgxIiwiLTUuNzM4MTMwNjlFKzc4OTQ2NDA4MSIsIi0xLjk0OTIyNjY0RSs3ODk0NjQwODkiLCItMS42ODkxOTAxMkUrNzg5NDY0MDc0IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDE4NyxkZWYsIi03NDEzLjAzOTExIiwiMi43MDYzMDMyMEUtMjU0ODU4MjY0IiwiLTc0MTMuMDM5MTEiLCItNzQxMy4wMzkxMSIsIi0yLjAwNjE5MzE1RS0yNTQ4NTgyNjAiLCItMi43MzkxNzUzOUUrMjU0ODU4MjY3IiwiIiwiIiwiLTQuMDczNjk4NDJFKzExIik7CisgIG1hdGh0ZXN0KDE4OCxkZWYsIi00MTc2OTYuMTgyIiwiMjc0MDAuNjAwMiIsIi0zOTAyOTUuNTgyIiwiLTQ0NTA5Ni43ODIiLCItMS4xNDQ1MTI2MUUrMTAiLCItMTUuMjQ0MDUyMyIsIi0xNSIsIi02Njg3LjE3OTAiLCItMS41ODAyMDMzNEUrMTU0MDE3Iik7CisgIG1hdGh0ZXN0KDE4OSxkZWYsIjY4Ljg1Mzg3MzVFKzY1NTY0NzI4NyIsIjMxOTguMTc5MzNFLTEzMjQ1NDgyNiIsIjYuODg1Mzg3MzVFKzY1NTY0NzI4OCIsIjYuODg1Mzg3MzVFKzY1NTY0NzI4OCIsIjIuMjAyMDcwMzVFKzUyMzE5MjQ2NiIsIjIuMTUyOTA4NDZFKzc4ODEwMjExMSIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxOTAsZGVmLCItNjgxNy4wNDI0NiIsIjQzNDQyMC40MzkiLCI0Mjc2MDMuMzk3IiwiLTQ0MTIzNy40ODEiLCItMi45NjE0NjI1OEUrOSIsIi0wLjAxNTY5MjI2OTIiLCIwIiwiLTY4MTcuMDQyNDYiLCI1Ljk0MTQzNTE4RSsxNjY1MzkwIik7CisgIG1hdGh0ZXN0KDE5MSxkZWYsIjg1NzguMjc1MTEiLCI2NDcwNDIuMzQxRS00OTA5MjQzMzQiLCI4NTc4LjI3NTExIiwiODU3OC4yNzUxMSIsIjUuNTUwNTA3MjFFLTQ5MDkyNDMyNSIsIjEuMzI1NzY3MkUrNDkwOTI0MzMyIiwiIiwiIiwiMy45ODQ3Mzg0NkUrMjMiKTsKKyAgbWF0aHRlc3QoMTkyLGRlZiwiNDEyNC4xMTYxNUUrNzMzMTA5NDI0IiwiNTk3Mzg1ODI4RSszNzU5Mjg3NDUiLCI0LjEyNDExNjE1RSs3MzMxMDk0MjciLCI0LjEyNDExNjE1RSs3MzMxMDk0MjciLCIiLCI2LjkwMzYwNTZFKzM1NzE4MDY3MyIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxOTMsZGVmLCIxMDIuNzE0NDAwIiwiLTkxOTAxNy40NjgiLCItOTE4OTE0Ljc1NCIsIjkxOTEyMC4xODIiLCItOTQzOTYzMjcuOCIsIi0wLjAwMDExMTc2NTQ0OSIsIjAiLCIxMDIuNzE0NDAwIiwiNC4wNDI5NTY4OUUtMTg0ODcyNCIpOworICBtYXRodGVzdCgxOTQsZGVmLCItNDYxNC4zMzAxNUUrOTk2Nzc4NzMzIiwiLTQzMy41NjA4MTJFKzIyODYwNTk5IiwiLTQuNjE0MzMwMTVFKzk5Njc3ODczNiIsIi00LjYxNDMzMDE1RSs5OTY3Nzg3MzYiLCIiLCIxLjA2NDI4NjcyRSs5NzM5MTgxMzUiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTk1LGRlZiwiNDU3NDU1MTcwLiIsIjM3MDkyMzAuNDhFKzY3NzAxMDg3OSIsIjMuNzA5MjMwNDhFKzY3NzAxMDg4NSIsIi0zLjcwOTIzMDQ4RSs2NzcwMTA4ODUiLCIxLjY5NjgwNjY2RSs2NzcwMTA4OTQiLCIxLjIzMzI4ODYxRS02NzcwMTA4NzciLCIwIiwiNDU3NDU1MTcwIiwiNC4zNzkxOTM3NkUrMzQiKTsKKyAgbWF0aHRlc3QoMTk2LGRlZiwiLTI1MjI0NjguMTUiLCItNDg0ODIwNDMuNSIsIi01MTAwNDUxMS43IiwiNDU5NTk1NzUuNCIsIjEuMjIyOTQ0MTFFKzE0IiwiMC4wNTIwMjg5MTU2IiwiMCIsIi0yNTIyNDY4LjE1IiwiMS40MjM0ODE3OEUtMzEwMzczNTk1Iik7CisgIG1hdGh0ZXN0KDE5NyxkZWYsIi02NTk4MTEzODQiLCI2Mjc3Ny42MTE4IiwiLTY1OTc0ODYwNiIsIi02NTk4NzQxNjIiLCItNC4xNDIxMzgyOUUrMTMiLCItMTA1MTAuMjk3NiIsIi0xMDUxMCIsIi0xODY4My45ODIwIiwiMy40MzkzNTI0RSs1NTM2NjUiKTsKKyAgbWF0aHRlc3QoMTk4LGRlZiwiNDQyNC45NDE3NiIsIi04MjU4NDguMjAiLCItODIxNDIzLjI1OCIsIjgzMDI3My4xNDIiLCItMy42NTQzMzAxOUUrOSIsIi0wLjAwNTM1ODA1NzA0IiwiMCIsIjQ0MjQuOTQxNzYiLCIzLjQyMTUyNzc1RS0zMDEwOTY2Iik7CisgIG1hdGh0ZXN0KDE5OSxkZWYsIjQzLjY0NDE4ODQiLCItNjUwOS44OTY2M0UtNjE0MTY5Mzc3IiwiNDMuNjQ0MTg4NCIsIjQzLjY0NDE4ODQiLCItMi44NDExOTE1NUUtNjE0MTY5MzcyIiwiLTYuNzA0MjgyODZFKzYxNDE2OTM3NCIsIiIsIiIsIjMuMzE1MjQwNTZFLTEyIik7CisgIG1hdGh0ZXN0KDIwMCxkZWYsIjg5Ny4zODgzODFFLTg0Mzg2NDg3NiIsIjg0MTk1LjEzNjkiLCI4NDE5NS4xMzY5IiwiLTg0MTk1LjEzNjkiLCI3LjU1NTU3Mzc2RS04NDM4NjQ4NjkiLCIxLjA2NTg0MzQ4RS04NDM4NjQ4NzgiLCIwIiwiOC45NzM4ODM4MUUtODQzODY0ODc0IiwiIik7CisgIG1hdGh0ZXN0KDIwMSxkZWYsIjc5NjE5OTgyNSIsIjQ5Ni43NjgzNCIsIjc5NjIwMDMyMiIsIjc5NjE5OTMyOCIsIjMuOTU1MjY4NjVFKzExIiwiMTYwMjc1OC43OSIsIjE2MDI3NTgiLCIzOTMuOTE4MjgiLCI2LjQyNjQ3MjY0RSs0NDIzIik7CisgIG1hdGh0ZXN0KDIwMixkZWYsIjU3MzU4MzU4MiIsIjE1OTguNjk1MjEiLCI1NzM1ODUxODEiLCI1NzM1ODE5ODMiLCI5LjE2OTg1MzI1RSsxMSIsIjM1ODc4Mi4zMjMiLCIzNTg3ODIiLCI1MTcuMTY1NzgiLCI5LjkxMTU2MzAyRSsxNDAwNCIpOworICBtYXRodGVzdCgyMDMsZGVmLCItNzgzMTQ0MjcwLiIsIjYzNDcuNzE0OTYiLCItNzgzMTM3OTIyIiwiLTc4MzE1MDYxOCIsIi00Ljk3MTE3NjYwRSsxMiIsIi0xMjMzNzQuMjAyIiwiLTEyMzM3NCIsIi0xMjg0LjUyNDk2IiwiMS4yODExMDgwM0UrNTY0NTgiKTsKKyAgbWF0aHRlc3QoMjA0LGRlZiwiMjY5MDkyMzQuNyIsIjUyNDExLjUwODEiLCIyNjk2MTY0Ni4yIiwiMjY4NTY4MjMuMiIsIjEuNDEwMzUzNTdFKzEyIiwiNTEzLjQyMjI1NSIsIjUxMyIsIjIyMTMxLjA0NDciLCI5Ljc1ODM2NTI4RSszODk0MTUiKTsKKyAgbWF0aHRlc3QoMjA1LGRlZiwiOC4yMTkxNTI4MiIsIjI0ODU5Ljc4NDFFLTg0MzI4Mjk1OSIsIjguMjE5MTUyODIiLCI4LjIxOTE1MjgyIiwiMi4wNDMyNjM2NUUtODQzMjgyOTU0IiwiMy4zMDYyMDQ0M0UrODQzMjgyOTU1IiwiIiwiIiwiNjcuNTU0NDczMSIpOworICBtYXRodGVzdCgyMDYsZGVmLCItNjg4LjM4NzcxMCIsIjgyNzgzLjUyMDdFLTgzMTg3MDg1OCIsIi02ODguMzg3NzEwIiwiLTY4OC4zODc3MTAiLCItNS42OTg3MTU4MkUtODMxODcwODUxIiwiLTguMzE1NTE2MjNFKzgzMTg3MDg1NSIsIiIsIiIsIjUuMDQyNzIwMTJFKzIyIik7CisgIG1hdGh0ZXN0KDIwNyxkZWYsIi05NzkyMjMyLiIsIi0xNzQ5LjAxMTY2IiwiLTk3OTM5ODEuMDEiLCItOTc5MDQ4Mi45OSIsIjEuNzEyNjcyNzlFKzEwIiwiNTU5OC43MjMxMSIsIjU1OTgiLCItMTI2NC43MjczMiIsIi04Ljg2OTg1Njc0RS0xMjIyOCIpOworICBtYXRodGVzdCgyMDgsZGVmLCItMTMwLjc2NTYwMCIsIjguNjc0Mzc0MjciLCItMTIyLjA5MTIyNiIsIi0xMzkuNDM5OTc0IiwiLTExMzQuMzA5NzYiLCItMTUuMDc0OTMxNyIsIi0xNSIsIi0wLjY0OTk4NTk1IiwiLTEuMTE3OTk5NDdFKzE5Iik7CisgIG1hdGh0ZXN0KDIwOSxkZWYsIjkxNy4yNTkxMDIiLCItMzY4NjQwLjQyNiIsIi0zNjc3MjMuMTY3IiwiMzY5NTU3LjY4NSIsIi0zMzgxMzg3ODYiLCItMC4wMDI0ODgyMjE2OSIsIjAiLCI5MTcuMjU5MTAyIiwiOC42NzEwNDI1NUUtMTA5MjA5NCIpOworICBtYXRodGVzdCgyMTAsZGVmLCItNC45NzI1NjMxIiwiLTI5NDU2MzcxNy4iLCItMjk0NTYzNzIyIiwiMjk0NTYzNzEyIiwiMS40NjQ3MzY2N0UrOSIsIjEuNjg4MTExMkUtOCIsIjAiLCItNC45NzI1NjMxIiwiLTYuMjc5NjI1ODRFLTIwNTE4NzI4NCIpOworICBtYXRodGVzdCgyMTEsZGVmLCItNjA5NjI4ODcuMkUtNTE0MjQ5NjYxIiwiLTI0MzAyMS40MDciLCItMjQzMDIxLjQwNyIsIjI0MzAyMS40MDciLCIxLjQ4MTUyODY2RS01MTQyNDk2NDgiLCIyLjUwODUzOThFLTUxNDI0OTY1OSIsIjAiLCItNi4wOTYyODg3MkUtNTE0MjQ5NjU0IiwiIik7CisgIG1hdGh0ZXN0KDIxMixkZWYsIi01NTM4OTIxOS44IiwiLTM3NzIyMDBFKzk4MTg2NjM5MyIsIi0zLjc3MjIwMDAwRSs5ODE4NjYzOTkiLCIzLjc3MjIwMDAwRSs5ODE4NjYzOTkiLCIyLjA4OTM5MjE1RSs5ODE4NjY0MDciLCIxLjQ2ODM1MzIxRS05ODE4NjYzOTIiLCIwIiwiLTU1Mzg5MjE5LjgiLCIxLjA2MjQyNjc4RS0zMSIpOworICBtYXRodGVzdCgyMTMsZGVmLCI2ODEuNjY2MDEwIiwiNjI2ODg2NzAwIiwiNjI2ODg3MzgyIiwiLTYyNjg4NjAxOCIsIjQuMjczMjczNTZFKzExIiwiMC4wMDAwMDEwODczODMxMSIsIjAiLCI2ODEuNjY2MDEwIiwiIik7CisgIG1hdGh0ZXN0KDIxNCxkZWYsIjYuNDI2NTIxMzgiLCI1MzQ2NTg5NC41IiwiNTM0NjU5MDAuOSIsIi01MzQ2NTg4OC4xIiwiMzQzNTk5NzE0IiwiMS4yMDE5ODUyRS03IiwiMCIsIjYuNDI2NTIxMzgiLCI0LjYxMTU1NTMyRSs0MzE5OTE1NyIpOworICBtYXRodGVzdCgyMTUsZGVmLCI1NjE1NDY2NTYiLCI2NTE0MDguNDc2IiwiNTYyMTk4MDY0IiwiNTYwODk1MjQ4IiwiMy42NTc5NjI1MUUrMTQiLCI4NjIuMDQ5OTY4IiwiODYyIiwiMzI1NDkuNjg4IiwiOC42MDUyMzc3RSs1Njk5NDE5Iik7CisgIG1hdGh0ZXN0KDIxNixkZWYsIjc4NDU3NzguMzZFLTc5OTUxMTM5IiwiOS40NTg1OTA0NyIsIjkuNDU4NTkwNDciLCItOS40NTg1OTA0NyIsIjcuNDIxMDAwNDRFLTc5OTUxMTMyIiwiOC4yOTQ4NzA1NkUtNzk5NTExMzQiLCIwIiwiNy44NDU3NzgzNkUtNzk5NTExMzMiLCIxLjEyNjQ4MjE2RS03MTk1NjAxODkiKTsKKyAgbWF0aHRlc3QoMjE3LGRlZiwiNTQ0ODYuMjExMiIsIjEwLjc1NjUwNzgiLCI1NDQ5Ni45Njc3IiwiNTQ0NzUuNDU0NyIsIjU4NjA4MS4zNTYiLCI1MDY1LjQxODI4IiwiNTA2NSIsIjQuNDk5MTkzMCIsIjEuMjU2NDcxNjhFKzUyIik7CisgIG1hdGh0ZXN0KDIxOCxkZWYsIjE2NTc2NDgyLjUiLCItMjIxNzcyMC44MyIsIjE0MzU4NzYxLjciLCIxODc5NDIwMy4zIiwiLTMuNjc2MjAxMDVFKzEzIiwiLTcuNDc0NTU3NzkiLCItNyIsIjEwNTI0MzYuNjkiLCIxLjM4MjU5Mzc0RS0xNjAxMDgyMCIpOworICBtYXRodGVzdCgyMTksZGVmLCI2MS4yNzkzNzg3RS0zOTIwNzAxMTEiLCI2LjIyNTc1NjUxIiwiNi4yMjU3NTY1MSIsIi02LjIyNTc1NjUxIiwiMy44MTUxMDQ5MUUtMzkyMDcwMTA5IiwiOS44NDI4ODA3MkUtMzkyMDcwMTExIiwiMCIsIjYuMTI3OTM3ODdFLTM5MjA3MDExMCIsIiIpOworICBtYXRodGVzdCgyMjAsZGVmLCI1MTE1MTM2LjM5IiwiLTY1MzY3NDM3Mi4iLCItNjQ4NTU5MjM2IiwiNjU4Nzg5NTA4IiwiLTMuMzQzNjMzNTdFKzE1IiwiLTAuMDA3ODI1MjA1NjUiLCIwIiwiNTExNTEzNi4zOSIsIiIpOworICBtYXRodGVzdCgyMjEsZGVmLCItNy44NDIzODM2NkUtNDE2NDc3MzM5IiwiLTM3NDMyNzU4LjlFKzk3MzY5MzkzIiwiLTMuNzQzMjc1ODlFKzk3MzY5NDAwIiwiMy43NDMyNzU4OUUrOTczNjk0MDAiLCIyLjkzNTYyMDU3RS0zMTkxMDc5MzgiLCIyLjA5NTA1ODk1RS01MTM4NDY3MzkiLCIwIiwiLTcuODQyMzgzNjZFLTQxNjQ3NzMzOSIsIiIpOworICBtYXRodGVzdCgyMjIsZGVmLCItMzg3NzgxLjNFKzI4NDEwODM4MCIsIi0yMTgwODUuNTkyIiwiLTMuODc3ODEzMDBFKzI4NDEwODM4NSIsIi0zLjg3NzgxMzAwRSsyODQxMDgzODUiLCI4LjQ1Njk1MTQ0RSsyODQxMDgzOTAiLCIxLjc3ODExNTE3RSsyODQxMDgzODAiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjIzLGRlZiwiLTUzNTMuMTc3MzYiLCIzLjM5MzMyMzQ2RSs1NDY2ODUzNTkiLCIzLjM5MzMyMzQ2RSs1NDY2ODUzNTkiLCItMy4zOTMzMjM0NkUrNTQ2Njg1MzU5IiwiLTEuODE2NTA2MjNFKzU0NjY4NTM2MyIsIi0xLjU3NzU2MTc3RS01NDY2ODUzNTYiLCIwIiwiLTUzNTMuMTc3MzYiLCItMS41MzQwMzM2OUUrMTEiKTsKKyAgbWF0aHRlc3QoMjI0LGRlZiwiLTIwODM3LjI5MDBFLTE2ODY1Mjc3MiIsIi04MjM2Ljc4MzA1RS03MTI4MTkxNzMiLCItMi4wODM3MjkwMEUtMTY4NjUyNzY4IiwiLTIuMDgzNzI5MDBFLTE2ODY1Mjc2OCIsIjEuNzE2MzIyMzdFLTg4MTQ3MTkzNyIsIjIuNTI5Nzg0OTdFKzU0NDE2NjQwMSIsIiIsIiIsIiIpOworICBtYXRodGVzdCgyMjUsZGVmLCItOTg1NzMuODcyMkUrODI5MDIyMzY2IiwiMzA5MDExLjAwNyIsIi05Ljg1NzM4NzIyRSs4MjkwMjIzNzAiLCItOS44NTczODcyMkUrODI5MDIyMzcwIiwiLTMuMDQ2MDQxMTVFKzgyOTAyMjM3NiIsIi0zLjE4OTk3OTMyRSs4MjkwMjIzNjUiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjI2LGRlZiwiNDk3MzA3NTAuNyIsIi01MzE1LjEwNjM2RS0yOTk1ODY5OTEiLCI0OTczMDc1MC43IiwiNDk3MzA3NTAuNyIsIi0yLjY0MzI0MjI5RS0yOTk1ODY5ODAiLCItOS4zNTY0OTIxMUUrMjk5NTg2OTk0IiwiIiwiIiwiMy4yODc1NjkzNkUtMzkiKTsKKyAgbWF0aHRlc3QoMjI3LGRlZiwiMTUzOTUyMy40MCIsIi05NjIzODguNTgxIiwiNTc3MTM0LjgyIiwiMjUwMTkxMS45OCIsIi0xLjQ4MTYxOTc0RSsxMiIsIi0xLjU5OTY5MDAxIiwiLTEiLCI1NzcxMzQuODE5IiwiMy4xMDE0NDgzNEUtNTk1NDY3MyIpOworICBtYXRodGVzdCgyMjgsZGVmLCI4MTU5Ni4yMTIxIiwiLTM3NjAwLjk2NTMiLCI0Mzk5NS4yNDY4IiwiMTE5MTk3LjE3NyIsIi0zLjA2ODA5NjM0RSs5IiwiLTIuMTcwMDU2MzEiLCItMiIsIjYzOTQuMjgxNSIsIjEuOTc4NzgyOTlFLTE4NDY4NCIpOworICBtYXRodGVzdCgyMjksZGVmLCI1OTAxNDYxOTkiLCItMTQyNTQwNC42MSIsIjU4ODcyMDc5NCIsIjU5MTU3MTYwNCIsIi04LjQxMTk3MTEzRSsxNCIsIi00MTQuMDIwMTI4IiwiLTQxNCIsIjI4NjkwLjQ2IiwiMi4wNDY1MDk5NEUtMTI1MDIxNzAiKTsKKyAgbWF0aHRlc3QoMjMwLGRlZiwiMTk2LjA1NTQzIiwiNTA1LjkzNjMwNSIsIjcwMS45OTE3MzUiLCItMzA5Ljg4MDg3NSIsIjk5MTkxLjU1OTgiLCIwLjM4NzUxMDEwNCIsIjAiLCIxOTYuMDU1NDMiLCI4Ljc4NDM3Mzk3RSsxMTU5Iik7CisgIG1hdGh0ZXN0KDIzMSxkZWYsIjc3LjgwNTg0NDkiLCItNjQyLjI3NTI3NCIsIi01NjQuNDY5NDI5IiwiNzIwLjA4MTExOSIsIi00OTk3Mi43NzA0IiwiLTAuMTIxMTQwOTYzIiwiMCIsIjc3LjgwNTg0NDkiLCI5LjMzNTgyNjI2RS0xMjE1Iik7CisgIG1hdGh0ZXN0KDIzMixkZWYsIjE0NjguNjA2ODQiLCIxMDA2OC4xMzgiLCIxMTUzNi43NDQ4IiwiLTg1OTkuNTMxMiIsIjE0Nzg2MTM2LjMiLCIwLjE0NTg2Njc3NyIsIjAiLCIxNDY4LjYwNjg0IiwiMi41NDEyMjQ4NEUrMzE4ODQiKTsKKyAgbWF0aHRlc3QoMjMzLGRlZiwiNC45ODc3NDc2N0UtMzg3OTY4NjMyIiwiNC40MTczMTQzOUUtNTc4ODEyMzc2IiwiNC45ODc3NDc2N0UtMzg3OTY4NjMyIiwiNC45ODc3NDc2N0UtMzg3OTY4NjMyIiwiMi4yMDMyNDQ5NkUtOTY2NzgxMDA3IiwiMS4xMjkxMzU3N0UrMTkwODQzNzQ0IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDIzNCxkZWYsIjk4MS4wOTEwNTkiLCItOTIyMzguOTkzMCIsIi05MTI1Ny45MDIwIiwiOTMyMjAuMDg0MSIsIi05MDQ5NDg1MS4zIiwiLTAuMDEwNjM2NDAyNSIsIjAiLCI5ODEuMDkxMDU5IiwiNS4yOTk0MzM0MkUtMjc1OTUzIik7CisgIG1hdGh0ZXN0KDIzNSxkZWYsIi0zNjA2LjI0OTkyIiwiODI5MDIyNC43MCIsIjgyODY2MTguNDUiLCItODI5MzgzMC45NSIsIi0yLjk4OTY2MjIyRSsxMCIsIi0wLjAwMDQzNTAwMDI2MiIsIjAiLCItMzYwNi4yNDk5MiIsIi0xLjIzNzQ3MTA3RSsyOTQ4ODc5MyIpOworICBtYXRodGVzdCgyMzYsZGVmLCItODk3ODU3MS4zNSIsIjkyMjQzLjQ3OTYiLCItODg4NjMyNy44NyIsIi05MDcwODE0LjgzIiwiLTguMjgyMTQ2NjNFKzExIiwiLTk3LjMzNTU2NjYiLCItOTciLCItMzA5NTMuODI4OCIsIi00Ljk1NzYyODEzRSs2NDEzODQiKTsKKyAgbWF0aHRlc3QoMjM3LGRlZiwiLTYxOTY4LjE5OTJFKzgxMDA2MDQ3OCIsIjQ3NDI5NDY3MS5FKzE3OTI2MzQxNCIsIi02LjE5NjgxOTkyRSs4MTAwNjA0ODIiLCItNi4xOTY4MTk5MkUrODEwMDYwNDgyIiwiLTIuOTM5MTE4NjdFKzk4OTMyMzkwNSIsIi0xLjMwNjUzMzc0RSs2MzA3OTcwNjAiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjM4LGRlZiwiNjEyOTg0MzEuNkUtNzU0NDI5MDQxIiwiLTI1ODQ4NjIuNzkiLCItMjU4NDg2Mi43OSIsIjI1ODQ4NjIuNzkiLCItMS41ODQ0ODAzNUUtNzU0NDI5MDI3IiwiLTIuMzcxNDM4NTFFLTc1NDQyOTA0MCIsIjAiLCI2LjEyOTg0MzE2RS03NTQ0MjkwMzQiLCIiKTsKKyAgbWF0aHRlc3QoMjM5LGRlZiwiNjIxMDM5LjA2NCIsIi01MzUxNTM5LjYyIiwiLTQ3MzA1MDAuNTYiLCI1OTcyNTc4LjY4IiwiLTMuMzIzNTE1MTZFKzEyIiwiLTAuMTE2MDQ4NjcyIiwiMCIsIjYyMTAzOS4wNjQiLCIyLjQxMTYzMzEyRS0zMTAwMjEwOCIpOworICBtYXRodGVzdCgyNDAsZGVmLCItMTkuNjAwNzYwNSIsIi01NzkwNTY5Ni4iLCItNTc5MDU3MTUuNiIsIjU3OTA1Njc2LjQiLCIxLjEzNDk5NTY4RSs5IiwiMy4zODQ5NDUxNUUtNyIsIjAiLCItMTkuNjAwNzYwNSIsIjEuMDU2NjM2NDZFLTc0ODI5OTYzIik7CisgIG1hdGh0ZXN0KDI0MSxkZWYsIjM2MjYuMTMxMDlFKzY4NzAzMDM0NiIsIjE4OS44OTYwMDQiLCIzLjYyNjEzMTA5RSs2ODcwMzAzNDkiLCIzLjYyNjEzMTA5RSs2ODcwMzAzNDkiLCI2Ljg4NTg3ODA0RSs2ODcwMzAzNTEiLCIxLjkwOTUzNTIzRSs2ODcwMzAzNDciLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjQyLGRlZiwiLTI0OTMzNC4wMjYiLCItNy41NDczNTgzNEUtMTQxMzcxODgiLCItMjQ5MzM0LjAyNiIsIi0yNDkzMzQuMDI2IiwiMS44ODE4MTMyNEUtMTQxMzcxODIiLCIzLjMwMzU5MzMyRSsxNDEzNzE5MiIsIiIsIiIsIjYuNjk0OTU0MDhFLTQ0Iik7CisgIG1hdGh0ZXN0KDI0MyxkZWYsIjQxNzYxMzkyOC4iLCItOTI1MjEzLjIxNiIsIjQxNjY4ODcxNSIsIjQxODUzOTE0MSIsIi0zLjg2MzgxOTI1RSsxNCIsIi00NTEuMzcwNDc0IiwiLTQ1MSIsIjM0Mjc2Ny41ODQiLCI4LjM4NDMwMDg1RS03OTc2MDU0Iik7CisgIG1hdGh0ZXN0KDI0NCxkZWYsIjIzLjgzMjAzMDkiLCItNTAwNzQ5OTYuMSIsIi01MDA3NDk3Mi4zIiwiNTAwNzUwMTkuOSIsIi0xLjE5MzM4ODg1RSs5IiwiLTQuNzU5MjY3NjVFLTciLCIwIiwiMjMuODMyMDMwOSIsIjUuODE0NjYzODdFLTY4OTYxMzM1Iik7CisgIG1hdGh0ZXN0KDI0NSxkZWYsIjQ5Nzg5Njc3LjciLCItMTMxODI3ODEyRSsxNTY0MTI1MzQiLCItMS4zMTgyNzgxMkUrMTU2NDEyNTQyIiwiMS4zMTgyNzgxMkUrMTU2NDEyNTQyIiwiLTYuNTYzNjY0MjdFKzE1NjQxMjU0OSIsIi0zLjc3Njg3MjA0RS0xNTY0MTI1MzUiLCIwIiwiNDk3ODk2NzcuNyIsIjIuMDA4NDQ4NDNFLTgiKTsKKyAgbWF0aHRlc3QoMjQ2LGRlZiwiLTg5MDcxNjMuNjFFLTc0MTg2NzI0NiIsIjc3MzY1MS4yODhFLTQ3MjAzMzI4MiIsIjcuNzM2NTEyODhFLTQ3MjAzMzI3NyIsIi03LjczNjUxMjg4RS00NzIwMzMyNzciLCIiLCItMS4xNTEzMTUwNEUtMjY5ODMzOTYzIiwiMCIsIi04LjkwNzE2MzYxRS03NDE4NjcyNDAiLCIiKTsKKyAgbWF0aHRlc3QoMjQ3LGRlZiwiNTE0MDIxNzExLkUrNDYzNTM2NjQ2IiwiNjE3NDQxNjU5LiIsIjUuMTQwMjE3MTFFKzQ2MzUzNjY1NCIsIjUuMTQwMjE3MTFFKzQ2MzUzNjY1NCIsIjMuMTczNzg0MThFKzQ2MzUzNjY2MyIsIjguMzI1MDI0NzhFKzQ2MzUzNjY0NSIsIiIsIiIsIiIpOworICBtYXRodGVzdCgyNDgsZGVmLCI5OTgxNzU3NTAiLCIyLjM5Mjg1NDc4IiwiOTk4MTc1NzUyIiwiOTk4MTc1NzQ4IiwiMi4zODg0ODk2MUUrOSIsIjQxNzE0ODQ4NyIsIjQxNzE0ODQ4NiIsIjEuMzA1MTM2OTIiLCI5Ljk2MzU0ODI4RSsxNyIpOworICBtYXRodGVzdCgyNDksZGVmLCI4NzM1NzU0MjYuIiwiNjQ3ODUzLjE1MkUrNDk3NDUwNzgxIiwiNi40Nzg1MzE1MkUrNDk3NDUwNzg2IiwiLTYuNDc4NTMxNTJFKzQ5NzQ1MDc4NiIsIjUuNjU5NDg1OTNFKzQ5NzQ1MDc5NSIsIjEuMzQ4NDE1OEUtNDk3NDUwNzc4IiwiMCIsIjg3MzU3NTQyNiIsIjQuNDQ0MjkwNjRFKzUzIik7CisgIG1hdGh0ZXN0KDI1MCxkZWYsIjQzNTI2MjYuOCIsIi0xMzAzMzgwNDguRS03NDQ1NjA5MTEiLCI0MzUyNjI2LjgwIiwiNDM1MjYyNi44MCIsIi01LjY3MzEyODgxRS03NDQ1NjA4OTciLCItMy4zMzk0OTA1NUUrNzQ0NTYwOTA5IiwiIiwiIiwiMi4yOTc0NjMyMkUtNyIpOworICBtYXRodGVzdCgyNTEsZGVmLCI0MzcuMjg2OTYwIiwiNy4zNzU2MDgzNSIsIjQ0NC42NjI1NjgiLCI0MjkuOTExMzUyIiwiMzIyNS4yNTczNSIsIjU5LjI4ODI1NjUiLCI1OSIsIjIuMTI2MDY3MzUiLCIzLjA1NzQ5NDUyRSsxOCIpOworICBtYXRodGVzdCgyNTIsZGVmLCI4NDk4MjgwLjQ1RSsyMjA1MTE1MjIiLCI1ODg2MTc2MTIiLCI4LjQ5ODI4MDQ1RSsyMjA1MTE1MjgiLCI4LjQ5ODI4MDQ1RSsyMjA1MTE1MjgiLCI1LjAwMjIzNzU0RSsyMjA1MTE1MzciLCIxLjQ0Mzc2OTMxRSsyMjA1MTE1MjAiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjUzLGRlZiwiLTUzMjAzODcuNzciLCItNzY3MzIzNy40NiIsIi0xMjk5MzYyNS4yIiwiMjM1Mjg0OS42OSIsIjQuMDgyNDU5ODdFKzEzIiwiMC42OTMzNjkzNjMiLCIwIiwiLTUzMjAzODcuNzciLCItMS4zMDExMzc0NUUtNTE2MDk3NTciKTsKKyAgbWF0aHRlc3QoMjU0LGRlZiwiNTg3NjU1Mzc1IiwiLTQuOTc0ODM2NiIsIjU4NzY1NTM3MCIsIjU4NzY1NTM4MCIsIi0yLjkyMzQ4OTQ3RSs5IiwiLTExODEyNTU2MyIsIi0xMTgxMjU1NjMiLCIwLjc5MTk5NDIiLCIxLjQyNjg3NjY3RS00NCIpOworICBtYXRodGVzdCgyNTUsZGVmLCIxMjY2MDk4LjQ0IiwiLTI2NjEuNjQ5MDRFLTY0MjYwMTE0MiIsIjEyNjYwOTguNDQiLCIxMjY2MDk4LjQ0IiwiLTMuMzY5OTA5NzBFLTY0MjYwMTEzMyIsIi00Ljc1NjgxOTYzRSs2NDI2MDExNDQiLCIiLCIiLCI0LjkyNzE3MDM2RS0xOSIpOworICBtYXRodGVzdCgyNTYsZGVmLCIzLjkyNzM3NDYzRSs0ODI4NzM0ODMiLCItNjg1LjUyMjc0NyIsIjMuOTI3Mzc0NjNFKzQ4Mjg3MzQ4MyIsIjMuOTI3Mzc0NjNFKzQ4Mjg3MzQ4MyIsIi0yLjY5MjMwNDY0RSs0ODI4NzM0ODYiLCItNS43MjkwMjE2MUUrNDgyODczNDgwIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDI1NyxkZWYsIjIyODI2NDk0LjEiLCI5ODYxODk0NzQuIiwiMS4wMDkwMTU5N0UrOSIsIi05NjMzNjI5ODAiLCIyLjI1MTEyNDgyRSsxNiIsIjAuMDIzMTQ2MTU0NyIsIjAiLCIyMjgyNjQ5NC4xIiwiIik7CisgIG1hdGh0ZXN0KDI1OCxkZWYsIi02NDczNDIuMzgwIiwiLTQ5ODgxNjM4NiIsIi00OTk0NjM3MjgiLCI0OTgxNjkwNDQiLCIzLjIyOTA0OTg2RSsxNCIsIjAuMDAxMjk3NzU2ODUiLCIwIiwiLTY0NzM0Mi4zODAiLCIiKTsKKyAgbWF0aHRlc3QoMjU5LGRlZiwiMzkzMDkyMzczLiIsIi0yNS43MjI2ODIyIiwiMzkzMDkyMzQ3IiwiMzkzMDkyMzk5IiwiLTEuMDExMTM5MDJFKzEwIiwiLTE1MjgxOTM1LjYiLCItMTUyODE5MzUiLCIxNS41OTM5NDMwIiwiMy40OTI1MjgzOUUtMjI0Iik7CisgIG1hdGh0ZXN0KDI2MCxkZWYsIjIuOTYyNTM0OTIiLCIyMC43NDQ0ODg4IiwiMjMuNzA3MDIzNyIsIi0xNy43ODE5NTM5IiwiNjEuNDU2MjcyNSIsIjAuMTQyODEwNjk4IiwiMCIsIjIuOTYyNTM0OTIiLCI4LjAzNDAyMjQ2RSs5Iik7CisgIG1hdGh0ZXN0KDI2MSxkZWYsIjUzNTUzLjM3NTBFKzM4Njk1NTQyMyIsIi03MzI0NzA4NzYiLCI1LjM1NTMzNzUwRSszODY5NTU0MjciLCI1LjM1NTMzNzUwRSszODY5NTU0MjciLCItMy45MjI2Mjg3NUUrMzg2OTU1NDM2IiwiLTcuMzExMzMxNjVFKzM4Njk1NTQxOCIsIiIsIiIsIiIpOworICBtYXRodGVzdCgyNjIsZGVmLCItNjk2NDUxLjQwNkUtMjg2NTM1OTE3IiwiLTczMDg2MDkwLjgiLCItNzMwODYwOTAuOCIsIjczMDg2MDkwLjgiLCI1LjA5MDA5MTA3RS0yODY1MzU5MDQiLCI5LjUyOTE5MjE5RS0yODY1MzU5MjAiLCIwIiwiLTYuOTY0NTE0MDZFLTI4NjUzNTkxMiIsIiIpOworICBtYXRodGVzdCgyNjMsZGVmLCIxNTUxLjI5OTU3IiwiLTU4MDM1ODYyMi5FKzExNzAxNzI2NSIsIi01LjgwMzU4NjIyRSsxMTcwMTcyNzMiLCI1LjgwMzU4NjIyRSsxMTcwMTcyNzMiLCItOS4wMDMxMDA4MUUrMTE3MDE3Mjc2IiwiLTIuNjczMDAxNjhFLTExNzAxNzI3MSIsIjAiLCIxNTUxLjI5OTU3IiwiNy4xNzUwNjcxMUUtMjAiKTsKKyAgbWF0aHRlc3QoMjY0LGRlZiwiLTIwNTEyMzAwNi5FLTIxMzc1Mjc5OSIsIi03ODYzODQ2OC42IiwiLTc4NjM4NDY4LjYiLCI3ODYzODQ2OC42IiwiMS42MTMwNTU5MUUtMjEzNzUyNzgzIiwiMi42MDg0MzA4M0UtMjEzNzUyNzk5IiwiMCIsIi0yLjA1MTIzMDA2RS0yMTM3NTI3OTEiLCIiKTsKKyAgbWF0aHRlc3QoMjY1LGRlZiwiNzc2MzIuODA3MyIsIi0zMzc4NTQyLjg4RSs2Nzc0NDEzMTkiLCItMy4zNzg1NDI4OEUrNjc3NDQxMzI1IiwiMy4zNzg1NDI4OEUrNjc3NDQxMzI1IiwiLTIuNjIyODU3NjhFKzY3NzQ0MTMzMCIsIi0yLjI5NzgxOTIxRS02Nzc0NDEzMjEiLCIwIiwiNzc2MzIuODA3MyIsIjIuMTM3MjkzMzFFLTE1Iik7CisgIG1hdGh0ZXN0KDI2NixkZWYsIjMwNjg5OTkuMzciLCIyLjIxMDA2MjEyIiwiMzA2OTAwMS41OCIsIjMwNjg5OTcuMTYiLCI2NzgyNjc5LjI1IiwiMTM4ODY0OC40NiIsIjEzODg2NDgiLCIxLjAyNzE4NjI0IiwiOS40MTg3NTcxM0UrMTIiKTsKKyAgbWF0aHRlc3QoMjY3LGRlZiwiNjI1NTI0Mjc0LiIsIjU1LjI0Njg2MjQiLCI2MjU1MjQzMjkiLCI2MjU1MjQyMTkiLCIzLjQ1NTgyNTM1RSsxMCIsIjExMzIyMzQ5LjMiLCIxMTMyMjM0OSIsIjE2Ljc1MjIyMjQiLCI2LjIxNDgyOTQzRSs0ODMiKTsKKyAgbWF0aHRlc3QoMjY4LGRlZiwiNjEyNjkxMzQuOSIsIi04NDU3NjEzMDMuIiwiLTc4NDQ5MjE2OCIsIjkwNzAzMDQzOCIsIi01LjE4MTkwNjM0RSsxNiIsIi0wLjA3MjQ0MjU4NDgiLCIwIiwiNjEyNjkxMzQuOSIsIiIpOworICBtYXRodGVzdCgyNjksZGVmLCItMjg0MC4xMjA5OSIsIi0yODU2Ljc2NzMxRS04Mjc0MzY1MCIsIi0yODQwLjEyMDk5IiwiLTI4NDAuMTIwOTkiLCI4LjExMzU2NDgwRS04Mjc0MzY0NCIsIjkuOTQxNzMwMjJFKzgyNzQzNjQ5IiwiIiwiIiwiLTQuMzY1MDUyNTRFLTExIik7CisgIG1hdGh0ZXN0KDI3MCxkZWYsIjguOTUzODc4MSIsIi03LjU2NjAzMzkxIiwiMS4zODc4NDQxOSIsIjE2LjUxOTkxMjAiLCItNjcuNzQ1MzQ1MyIsIi0xLjE4MzQzMDg3IiwiLTEiLCIxLjM4Nzg0NDE5IiwiMi40MjA1MzA2MUUtOCIpOworICBtYXRodGVzdCgyNzEsZGVmLCItNTYyMzM1NDcuMiIsIjUwOTc1MjUzMCIsIjQ1MzUxODk4MyIsIi01NjU5ODYwNzciLCItMi44NjY1MTkzMEUrMTYiLCItMC4xMTAzMTUzODYiLCIwIiwiLTU2MjMzNTQ3LjIiLCIiKTsKKyAgbWF0aHRlc3QoMjcyLGRlZiwiLTMxNjcuNDc4NTNFLTg1NDg1OTQ5NyIsIi0xMTA4NTIxMTUiLCItMTEwODUyMTE1IiwiMTEwODUyMTE1IiwiMy41MTEyMTY5NEUtODU0ODU5NDg2IiwiMi44NTczOTExNkUtODU0ODU5NTAyIiwiMCIsIi0zLjE2NzQ3ODUzRS04NTQ4NTk0OTQiLCIiKTsKKyAgbWF0aHRlc3QoMjczLGRlZiwiLTU2NTIuNTIwOTIiLCItNjMyMjQzMjQ0LiIsIi02MzIyNDg4OTciLCI2MzIyMzc1OTIiLCIzLjU3Mzc2ODE2RSsxMiIsIjAuMDAwMDA4OTQwNDIxMjMiLCIwIiwiLTU2NTIuNTIwOTIiLCIiKTsKKyAgbWF0aHRlc3QoMjc0LGRlZiwiLTk0Ni4wMDk5MjgiLCI4MjAwOTAuNjZFLTU4OTI3ODAxNSIsIi05NDYuMDA5OTI4IiwiLTk0Ni4wMDk5MjgiLCItNy43NTgxMzkwNkUtNTg5Mjc4MDA3IiwiLTEuMTUzNTQzMTFFKzU4OTI3ODAxMiIsIiIsIiIsIjYuNDE0NTQwNTNFKzIzIik7CisgIG1hdGh0ZXN0KDI3NSxkZWYsIi0zNjcuNzU3NzU4IiwiLTk1OS42MjYwMTYiLCItMTMyNy4zODM3NyIsIjU5MS44NjgyNTgiLCIzNTI5MDkuOTEyIiwiMC4zODMyMzAyOTIiLCIwIiwiLTM2Ny43NTc3NTgiLCIxLjE0OTgyMTk5RS0yNDYzIik7CisgIG1hdGh0ZXN0KDI3NixkZWYsIjgwOTkyNjcyMS5FLTc0NDYxMTU1NCIsIi02Ny42NTYwNTQ5IiwiLTY3LjY1NjA1NDkiLCI2Ny42NTYwNTQ5IiwiLTUuNDc5NjQ0NjdFLTc0NDYxMTU0NCIsIi0xLjE5NzEyMzc4RS03NDQ2MTE1NDciLCIwIiwiOC4wOTkyNjcyMUUtNzQ0NjExNTQ2IiwiIik7CisgIG1hdGh0ZXN0KDI3NyxkZWYsIi0xNzI1LjA4NTU1IiwiNzU1ODYuMzAzMSIsIjczODYxLjIxNzYiLCItNzczMTEuMzg4NyIsIi0xMzAzOTI4MzkiLCItMC4wMjI4MjI3MjY5IiwiMCIsIi0xNzI1LjA4NTU1IiwiMy43MDU0MDU4N0UrMjQ0NjU3Iik7CisgIG1hdGh0ZXN0KDI3OCxkZWYsIjI2NTkuODQxOTFFKzI5MzE0NDkyIiwiLTc0MzcyLjQ1NTFFKzUxODE5NjY4MCIsIi03LjQzNzI0NTUxRSs1MTgxOTY2ODQiLCI3LjQzNzI0NTUxRSs1MTgxOTY2ODQiLCItMS45NzgxODk3M0UrNTQ3NTExMTgwIiwiLTMuNTc2MzgwNEUtNDg4ODgyMTkwIiwiMCIsIjIuNjU5ODQxOTFFKzI5MzE0NDk1IiwiMS4wNjE3MTgxMUUtMjA1MjAxNDY4Iik7CisgIG1hdGh0ZXN0KDI3OSxkZWYsIi05MS4xNDMxMTEzIiwiMTIxNDc1MDcuMCIsIjEyMTQ3NDE1LjkiLCItMTIxNDc1OTguMSIsIi0xLjEwNzE2MTU4RSs5IiwiLTAuMDAwMDA3NTAzMDMwMTUiLCIwIiwiLTkxLjE0MzExMTMiLCItMS41MjQxNzAwNkUrMjM4MDU3NTkiKTsKKyAgbWF0aHRlc3QoMjgwLGRlZiwiLTExMzY3NzguOTFFKzY5Nzc4Mzg3OCIsIi04MDE1NTI1NjkuIiwiLTEuMTM2Nzc4OTFFKzY5Nzc4Mzg4NCIsIi0xLjEzNjc3ODkxRSs2OTc3ODM4ODQiLCI5LjExMTg4MDU2RSs2OTc3ODM4OTIiLCIxLjQxODIyMTI4RSs2OTc3ODM4NzUiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjgxLGRlZiwiNzMxMjM3NzMuMEUrNDMzMzM0MTQ5IiwiNjMuMzU0ODkzMCIsIjcuMzEyMzc3MzBFKzQzMzMzNDE1NiIsIjcuMzEyMzc3MzBFKzQzMzMzNDE1NiIsIjQuNjMyNzQ4ODFFKzQzMzMzNDE1OCIsIjEuMTU0MTkyOThFKzQzMzMzNDE1NSIsIiIsIiIsIiIpOworICBtYXRodGVzdCgyODIsZGVmLCItOTc2NTQ4NC44IiwiNzk3OS45MDgwMkUtMjM0MDI5NzE1IiwiLTk3NjU0ODQuODAiLCItOTc2NTQ4NC44MCIsIi03Ljc5Mjc2NzA1RS0yMzQwMjk3MDUiLCItMS4yMjM3NTkwN0UrMjM0MDI5NzE4IiwiIiwiIiwiOC4yNzA4NTYxNEUrNTUiKTsKKyAgbWF0aHRlc3QoMjgzLGRlZiwiLTY5NTAxMDI4OCIsIi04LjI2NTgyODIwIiwiLTY5NTAxMDI5NiIsIi02OTUwMTAyODAiLCI1Ljc0NDgzNTY0RSs5IiwiODQwODIzNTMuNCIsIjg0MDgyMzUzIiwiLTMuNDUwMjQ1NDAiLCIxLjgzNjgzNDk1RS03MSIpOworICBtYXRodGVzdCgyODQsZGVmLCIyMzk3NTY0My4zRS0xNTU5NTUyNjQiLCItNTA1NTQ3LjY5MkUrMTM3MjU4OTQ4IiwiLTUuMDU1NDc2OTJFKzEzNzI1ODk1MyIsIjUuMDU1NDc2OTJFKzEzNzI1ODk1MyIsIi0xLjIxMjA4MzExRS0xODY5NjMwMyIsIi00Ljc0MjUwODdFLTI5MzIxNDIxMSIsIjAiLCIyLjM5NzU2NDMzRS0xNTU5NTUyNTciLCIxLjI2MjI1OTUyRSs3Nzk3NzYyODMiKTsKKyAgbWF0aHRlc3QoMjg1LGRlZiwiMjg2Mi45NTkyMSIsIi0zMjYwMTI0OC42RS02MDU4NjEzMzMiLCIyODYyLjk1OTIxIiwiMjg2Mi45NTkyMSIsIi05LjMzMzYwNDQ5RS02MDU4NjEzMjMiLCItOC43ODE3NDcxMkUrNjA1ODYxMzI4IiwiIiwiIiwiNC4yNjE0MjE3NUUtMTEiKTsKKyAgbWF0aHRlc3QoMjg2LGRlZiwiLTEzLjEzMzUxOEUrMjQ2MDkwNTE2IiwiLTguNzEyNjk5MjVFLTk0NTA5MjEwOCIsIi0xLjMxMzM1MTgwRSsyNDYwOTA1MTciLCItMS4zMTMzNTE4MEUrMjQ2MDkwNTE3IiwiMS4xNDQyODM5MkUtNjk5MDAxNTkwIiwiIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDI4NyxkZWYsIi0zNDY3MS4yMjMyIiwiODE3NzEwLjc2MiIsIjc4MzAzOS41MzkiLCItODUyMzgxLjk4NSIsIi0yLjgzNTEwMzIzRSsxMCIsIi0wLjA0MjQwMDM1MDgiLCIwIiwiLTM0NjcxLjIyMzIiLCItNS4zMDc4ODgyOEUrMzcxMjM4MiIpOworICBtYXRodGVzdCgyODgsZGVmLCItMjI0NjQ3NjkiLCI2Mi40MzY2MDYwIiwiLTIyNDY0NzA2LjYiLCItMjI0NjQ4MzEuNCIsIi0xLjQwMjYyMzkzRSs5IiwiLTM1OTgwMS4yNTIiLCItMzU5ODAxIiwiLTE1LjcyNDU5NDAiLCI2LjIxMDQyNTM2RSs0NTUiKTsKKyAgbWF0aHRlc3QoMjg5LGRlZiwiLTk0NTguNjA4ODdFLTU2MzA1MTk2MyIsIjU2NzYwNTYuMDEiLCI1Njc2MDU2LjAxIiwiLTU2NzYwNTYuMDEiLCItNS4zNjg3NTkzN0UtNTYzMDUxOTUzIiwiLTEuNjY2NDA1MTNFLTU2MzA1MTk2NiIsIjAiLCItOS40NTg2MDg4N0UtNTYzMDUxOTYwIiwiIik7CisgIG1hdGh0ZXN0KDI5MCxkZWYsIi01OTEuOTI0MTIzRS05NTMzMTg3NCIsIi0xMzQuNTk2MTg4IiwiLTEzNC41OTYxODgiLCIxMzQuNTk2MTg4IiwiNy45NjcwNzMwNUUtOTUzMzE4NzAiLCI0LjM5Nzc3Nzc3RS05NTMzMTg3NCIsIjAiLCItNS45MTkyNDEyM0UtOTUzMzE4NzIiLCIiKTsKKyAgbWF0aHRlc3QoMjkxLGRlZiwiLTE4MjU2NjA4NS5FKzY4ODcwNjQ2IiwiLTk2MDM0NTk5My4iLCItMS44MjU2NjA4NUUrNjg4NzA2NTQiLCItMS44MjU2NjA4NUUrNjg4NzA2NTQiLCIxLjc1MzI2NjA4RSs2ODg3MDY2MyIsIjEuOTAxMDQ0OUUrNjg4NzA2NDUiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjkyLGRlZiwiODIzMi41NDg5MyIsIi05OTgyMjAwNEUrODkxOTc5ODQ1IiwiLTkuOTgyMjAwNDBFKzg5MTk3OTg1MiIsIjkuOTgyMjAwNDBFKzg5MTk3OTg1MiIsIi04LjIxNzg5NTMyRSs4OTE5Nzk4NTYiLCItOC4yNDcyMjg2N0UtODkxOTc5ODUwIiwiMCIsIjgyMzIuNTQ4OTMiLCI2Ljk5Mjg5MTU2RS00MCIpOworICBtYXRodGVzdCgyOTMsZGVmLCItNDMzNi45NDMxNyIsIi04MTkzNzMuNjAxRSs1NjMyMzM0MzAiLCItOC4xOTM3MzYwMUUrNTYzMjMzNDM1IiwiOC4xOTM3MzYwMUUrNTYzMjMzNDM1IiwiMy41NTM1NzY3NEUrNTYzMjMzNDM5IiwiNS4yOTI5OTg0MUUtNTYzMjMzNDMzIiwiMCIsIi00MzM2Ljk0MzE3IiwiNy45ODk2OTQwNUUtMzAiKTsKKyAgbWF0aHRlc3QoMjk0LGRlZiwiLTIuMDkwNDQzNjJFLTg3NjUyNzkwOCIsIi02NTE1NDYzLjMzIiwiLTY1MTU0NjMuMzMiLCI2NTE1NDYzLjMzIiwiMS4zNjIwMjA4N0UtODc2NTI3OTAxIiwiMy4yMDg0MzQzM0UtODc2NTI3OTE1IiwiMCIsIi0yLjA5MDQ0MzYyRS04NzY1Mjc5MDgiLCIiKTsKKyAgbWF0aHRlc3QoMjk1LGRlZiwiLTE5NDM0My4zNDQiLCIxLjk1OTI5OTc3IiwiLTE5NDM0MS4zODUiLCItMTk0MzQ1LjMwMyIsIi0zODA3NzYuODY5IiwiLTk5MTkwLjIwNDEiLCItOTkxOTAiLCItMC4zOTk4MTM3MCIsIjMuNzc2OTMzNTRFKzEwIik7CisgIG1hdGh0ZXN0KDI5NixkZWYsIi0zMjYwMDIuOTI3IiwiNDIxNS45OTAzMCIsIi0zMjE3ODYuOTM3IiwiLTMzMDIxOC45MTciLCItMS4zNzQ0MjUxOEUrOSIsIi03Ny4zMjUzNTAzIiwiLTc3IiwiLTEzNzEuNjczOTAiLCI1LjUxODc1ODIxRSsyMzI0MyIpOworICBtYXRodGVzdCgyOTcsZGVmLCItMTIwMzcuODU5MEUrODc2NDI5MDQ0IiwiMzE0LjgxODI3IiwiLTEuMjAzNzg1OTBFKzg3NjQyOTA0OCIsIi0xLjIwMzc4NTkwRSs4NzY0MjkwNDgiLCItMy43ODk3Mzc5NEUrODc2NDI5MDUwIiwiLTMuODIzNzQ4NTRFKzg3NjQyOTA0NSIsIiIsIiIsIiIpOworICBtYXRodGVzdCgyOTgsZGVmLCIyMTAzNjA0NS40RS0xNjI4MDQ4MDkiLCItOTEuNzE0OTIxOSIsIi05MS43MTQ5MjE5IiwiOTEuNzE0OTIxOSIsIi0xLjkyOTMxOTI2RS0xNjI4MDQ4MDAiLCItMi4yOTM2MzM5RS0xNjI4MDQ4MDQiLCIwIiwiMi4xMDM2MDQ1NEUtMTYyODA0ODAyIiwiIik7CisgIG1hdGh0ZXN0KDI5OSxkZWYsIi05NDcwMTkuNTM0IiwiOTkxNi4yOTI4MCIsIi05MzcxMDMuMjQxIiwiLTk1NjkzNS44MjciLCItOS4zOTA5MjI5OUUrOSIsIi05NS41MDEzNjg2IiwiLTk1IiwiLTQ5NzEuNzE4MDAiLCIzLjc2MDI5MDIyRSs1OTI2MSIpOworICBtYXRodGVzdCgzMDAsZGVmLCItNTk4NS44NDEzNiIsIi0xMi40MDkwMTg0RS0xMjM2NDIwNCIsIi01OTg1Ljg0MTM2IiwiLTU5ODUuODQxMzYiLCI3LjQyNzg0MTU2RS0xMjM2NDIwMCIsIjQuODIzNzgzMTNFKzEyMzY0MjA2IiwiIiwiIiwiLTAuMDAwMTY3MDYwODkzIik7CisgIG1hdGh0ZXN0KDMwMSxkZWYsIi04NTM0NDM3OS40IiwiLTY3ODMuMDg2NjlFKzIxODg0MDIxNSIsIi02Ljc4MzA4NjY5RSsyMTg4NDAyMTgiLCI2Ljc4MzA4NjY5RSsyMTg4NDAyMTgiLCI1Ljc4ODk4MzI0RSsyMTg4NDAyMjYiLCIxLjI1ODE5Mzg1RS0yMTg4NDAyMTEiLCIwIiwiLTg1MzQ0Mzc5LjQiLCItMy4wMzIzMjM0N0UtNTYiKTsKKyAgbWF0aHRlc3QoMzAyLGRlZiwiLTk0LjE5NDcwNzBFLTkzODI1NzEwMyIsIjE1MDAzLjI0MCIsIjE1MDAzLjI0MDAiLCItMTUwMDMuMjQwMCIsIi0xLjQxMzIyNTgwRS05MzgyNTcwOTciLCItNi4yNzgyOTEwMkUtOTM4MjU3MTA2IiwiMCIsIi05LjQxOTQ3MDcwRS05MzgyNTcxMDIiLCIiKTsKKyAgbWF0aHRlc3QoMzAzLGRlZiwiLTQ4NDYyMzMuNiIsIi04Mjg5NzY5Ljc2IiwiLTEzMTM2MDAzLjQiLCIzNDQzNTM2LjE2IiwiNC4wMTc0MTYwN0UrMTMiLCIwLjU4NDYwNDEyNSIsIjAiLCItNDg0NjIzMy42IiwiNC4yNTA3NzUyNEUtNTU0MjA0NjUiKTsKKyAgbWF0aHRlc3QoMzA0LGRlZiwiNjcuOTE0NzE5OCIsIi0xMDgzNzM2NDUuRSsyOTE3MTU0MTUiLCItMS4wODM3MzY0NUUrMjkxNzE1NDIzIiwiMS4wODM3MzY0NUUrMjkxNzE1NDIzIiwiLTcuMzYwMTY1NzNFKzI5MTcxNTQyNCIsIi02LjI2NjcxOTE2RS0yOTE3MTU0MjIiLCIwIiwiNjcuOTE0NzE5OCIsIjAuMDE0NzI0MzQ4NSIpOworICBtYXRodGVzdCgzMDUsZGVmLCIxOTU4Ljc3OTk0IiwiNS41NzI4NTEzN0UrNjkwMTM3ODI2IiwiNS41NzI4NTEzN0UrNjkwMTM3ODI2IiwiLTUuNTcyODUxMzdFKzY5MDEzNzgyNiIsIjEuMDkxNTk4OTVFKzY5MDEzNzgzMCIsIjMuNTE0ODYxMjZFLTY5MDEzNzgyNCIsIjAiLCIxOTU4Ljc3OTk0IiwiNS42NDgyNDk2OEUrMTkiKTsKKyAgbWF0aHRlc3QoMzA2LGRlZiwiMjI3ODAzMTQuMyIsIjg4MDUyNzkuODMiLCIzMTU4NTU5NC4xIiwiMTM5NzUwMzQuNSIsIjIuMDA1ODcwNDJFKzE0IiwiMi41ODcxMTk4NiIsIjIiLCI1MTY5NzU0LjY0IiwiMi4zOTEzMjE2OUUrNjQ3ODUzNzMiKTsKKyAgbWF0aHRlc3QoMzA3LGRlZiwiNTk2NzQ1LjE4NCIsIjE5NzYwMjQyMy4iLCIxOTgxOTkxNjgiLCItMTk3MDA1Njc4IiwiMS4xNzkxODI5NEUrMTQiLCIwLjAwMzAxOTkyODQ4IiwiMCIsIjU5Njc0NS4xODQiLCIiKTsKKyAgbWF0aHRlc3QoMzA4LGRlZiwiMTcxLjM0MDQ5NyIsIi00ODAzNDkuOTI0IiwiLTQ4MDE3OC41ODQiLCI0ODA1MjEuMjY0IiwiLTgyMzAzMzk0LjciLCItMC4wMDAzNTY2OTkzMzIiLCIwIiwiMTcxLjM0MDQ5NyIsIjIuMTc5MTQxMDJFLTEwNzMwMzUiKTsKKyAgbWF0aHRlc3QoMzA5LGRlZiwiODI0LjY1NTU1IiwiLTM3OTI4Ny41MzAiLCItMzc4NDYyLjg3NSIsIjM4MDExMi4xODYiLCItMzEyNzgxNTY3IiwiLTAuMDAyMTc0MjIyNjgiLCIwIiwiODI0LjY1NTU1IiwiNi4zNTgyOTI1NkUtMTEwNjEwOCIpOworICBtYXRodGVzdCgzMTAsZGVmLCIxOS4zMTY0MDMxIiwiLTkyMDc2NDQuMjRFKzk4ODExNTA2OSIsIi05LjIwNzY0NDI0RSs5ODgxMTUwNzUiLCI5LjIwNzY0NDI0RSs5ODgxMTUwNzUiLCItMS43Nzg1ODU2OEUrOTg4MTE1MDc3IiwiLTIuMDk3ODY1OTJFLTk4ODExNTA3NSIsIjAiLCIxOS4zMTY0MDMxIiwiMi42NzA5MzcxMUUtMTIiKTsKKyAgbWF0aHRlc3QoMzExLGRlZiwiLTMxMjMuNzc2NDZFKzE3NzgxNDI2NSIsIjk3MzI4NDQzNS5FKzM4MzI1NjExMiIsIjkuNzMyODQ0MzVFKzM4MzI1NjEyMCIsIi05LjczMjg0NDM1RSszODMyNTYxMjAiLCItMy4wNDAzMjMwMUUrNTYxMDcwMzg5IiwiLTMuMjA5NTIwNjJFLTIwNTQ0MTg1MyIsIjAiLCItMy4xMjM3NzY0NkUrMTc3ODE0MjY4IiwiIik7CisgIG1hdGh0ZXN0KDMxMixkZWYsIi04NTAuMTIzOTE1RSs2NjI5NTUzMDkiLCI2Nzc0ODQ5LjgxRS04NDY1NzY4NjUiLCItOC41MDEyMzkxNUUrNjYyOTU1MzExIiwiLTguNTAxMjM5MTVFKzY2Mjk1NTMxMSIsIi01Ljc1OTQ2MTg0RS0xODM2MjE1NDciLCIiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMzEzLGRlZiwiLTIzMzQ5Ljc3MjQiLCIyOTIxLjM1MzU1IiwiLTIwNDI4LjQxODkiLCItMjYyNzEuMTI2MCIsIi02ODIxMjk0MC41IiwiLTcuOTkyNzkyMzgiLCItNyIsIi0yOTAwLjI5NzU1IiwiLTUuNjcwNTU0NkUrMTI3NTkiKTsKKyAgbWF0aHRlc3QoMzE0LGRlZiwiMTg4ODY2NTMuMyIsIjU2ODcwNzQ3Ni4iLCI1ODc1OTQxMjkiLCItNTQ5ODIwODIzIiwiMS4wNzQwOTgwOUUrMTYiLCIwLjAzMzIwOTc4NTUiLCIwIiwiMTg4ODY2NTMuMyIsIiIpOworICBtYXRodGVzdCgzMTUsZGVmLCItOTA1NTI4MTguMCIsIi01NDIuMDM1NjNFLTk4NjYwNjg3OCIsIi05MDU1MjgxOC4wIiwiLTkwNTUyODE4LjAiLCI0LjkwODI4NTM4RS05ODY2MDY4NjgiLCIxLjY3MDYwNjM4RSs5ODY2MDY4ODMiLCIiLCIiLCItMS42NDI0NDI0MUUtNDAiKTsKKyAgbWF0aHRlc3QoMzE2LGRlZiwiNDE1MDExMjYuMUUrNzkxODM4NzY1IiwiLTY5LjY2NTE2NzVFKzIwNDI2ODM0OCIsIjQuMTUwMTEyNjFFKzc5MTgzODc3MiIsIjQuMTUwMTEyNjFFKzc5MTgzODc3MiIsIi0yLjg5MTE4MjkwRSs5OTYxMDcxMjIiLCItNS45NTcyMjc2M0UrNTg3NTcwNDIyIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDMxNyxkZWYsIjc2NzgzMTkzLjNFLTI3MTQ4ODE1NCIsIjM3NjUuMDE4MjlFLTUyMDM0NjAwMyIsIjcuNjc4MzE5MzNFLTI3MTQ4ODE0NyIsIjcuNjc4MzE5MzNFLTI3MTQ4ODE0NyIsIjIuODkwOTAxMjdFLTc5MTgzNDE0NiIsIjIuMDM5Mzg0MzRFKzI0ODg1Nzg1MyIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzMTgsZGVmLCI0MTkyLjk5MjgiLCI5ODc4MjIwMDdFLTE0NjU2MDk4OSIsIjQxOTIuOTkyODAiLCI0MTkyLjk5MjgwIiwiNC4xNDE5MzA1NkUtMTQ2NTYwOTc3IiwiNC4yNDQ2ODQ1NEUrMTQ2NTYwOTgzIiwiIiwiIiwiMS42Nzk3MzY1M0UrMzYiKTsKKyAgbWF0aHRlc3QoMzE5LGRlZiwiLTg5MTg0NS42MjkiLCI0ODI3Nzk1NS4iLCI0NzM4NjEwOS40IiwiLTQ5MTY5ODAwLjYiLCItNC4zMDU2NDgzMUUrMTMiLCItMC4wMTg0NzMxNDQzIiwiMCIsIi04OTE4NDUuNjI5IiwiLTYuMzI5NjQxNDdFKzI4NzI2NzgxNyIpOworICBtYXRodGVzdCgzMjAsZGVmLCIzMzQuOTAxMTc2IiwiLTc2MDkyOTYuNTVFKzQ0NzM0MDIyOCIsIi03LjYwOTI5NjU1RSs0NDczNDAyMzQiLCI3LjYwOTI5NjU1RSs0NDczNDAyMzQiLCItMi41NDgzNjIzNkUrNDQ3MzQwMjM3IiwiLTQuNDAxMjEwNzNFLTQ0NzM0MDIzMyIsIjAiLCIzMzQuOTAxMTc2IiwiNi4zMTkyNjU3NUUtMjEiKTsKKyAgbWF0aHRlc3QoMzIxLGRlZiwiNC40OTg2ODYzNiIsIi0zNDE4ODA4OTZFLTQ0NzI1MTg3MyIsIjQuNDk4Njg2MzYiLCI0LjQ5ODY4NjM2IiwiLTEuNTM4MDE0OTJFLTQ0NzI1MTg2NCIsIi0xLjMxNTg2MzYzRSs0NDcyNTE4NjUiLCIiLCIiLCIwLjAxMDk4MzU1MyIpOworICBtYXRodGVzdCgzMjIsZGVmLCI4MDc2MTUuNTgiLCItMzE0Mjg2NDgwIiwiLTMxMzQ3ODg2NSIsIjMxNTA5NDA5NiIsIi0yLjUzODIyNjU4RSsxNCIsIi0wLjAwMjU2OTY3OTY4IiwiMCIsIjgwNzYxNS41OCIsIiIpOworICBtYXRodGVzdCgzMjMsZGVmLCItMzcuNzQ1Nzk1NCIsIjUzMjc3LjgxMjlFLTg1OTIyNTUzOCIsIi0zNy43NDU3OTU0IiwiLTM3Ljc0NTc5NTQiLCItMi4wMTEwMTM0M0UtODU5MjI1NTMyIiwiLTcuMDg0NzExODhFKzg1OTIyNTUzNCIsIiIsIiIsIi03NjYyMDEzNC4xIik7CisgIG1hdGh0ZXN0KDMyNCxkZWYsIi0yODY3MTA4MS4iLCI5OC44ODE5NjIzIiwiLTI4NjcwOTgyLjEiLCItMjg2NzExNzkuOSIsIi0yLjgzNTA1Mjc1RSs5IiwiLTI4OTk1Mi41ODkiLCItMjg5OTUyIiwiLTU4LjI2NzE5MDQiLCItMS45MzYyNTU2NkUrNzM4Iik7CisgIG1hdGh0ZXN0KDMyNSxkZWYsIi04OTc1Mi4yMTA2RS00Njk0OTY4OTYiLCI5OS45ODc5OTYxIiwiOTkuOTg3OTk2MSIsIi05OS45ODc5OTYxIiwiLTguOTc0MTQzNjhFLTQ2OTQ5Njg5MCIsIi04Ljk3NjI5ODU3RS00Njk0OTY4OTQiLCIwIiwiLTguOTc1MjIxMDZFLTQ2OTQ5Njg5MiIsIiIpOworICBtYXRodGVzdCgzMjYsZGVmLCItNDk3OTgzNTY3RS0xMzUzODA1MiIsIjM5LjQ1Nzg3NDIiLCIzOS40NTc4NzQyIiwiLTM5LjQ1Nzg3NDIiLCItMS45NjQ5MzcyOUUtMTM1MzgwNDIiLCItMS4yNjIwNjM4NUUtMTM1MzgwNDUiLCIwIiwiLTQuOTc5ODM1NjdFLTEzNTM4MDQ0IiwiLTEuNTUzNzY1NDNFLTUyNzk4MzY4OSIpOworICBtYXRodGVzdCgzMjcsZGVmLCI4NDU3MzkyMjFFLTY1NDIwMjU2NSIsIi0zMzMxMy4xNTUxIiwiLTMzMzEzLjE1NTEiLCIzMzMxMy4xNTUxIiwiLTIuODE3NDI0MThFLTY1NDIwMjU1MiIsIi0yLjUzODc1NDQ5RS02NTQyMDI1NjEiLCIwIiwiOC40NTczOTIyMUUtNjU0MjAyNTU3IiwiIik7CisgIG1hdGh0ZXN0KDMyOCxkZWYsIjc0Mi4zMzIwNjdFKzUzNzgyNzg0MyIsIi00NTMyLjcwMDIzRS04NTUzODc0MTQiLCI3LjQyMzMyMDY3RSs1Mzc4Mjc4NDUiLCI3LjQyMzMyMDY3RSs1Mzc4Mjc4NDUiLCItMy4zNjQ3Njg3M0UtMzE3NTU5NTY1IiwiIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDMyOSxkZWYsIi04OTMuNDg2NTQiLCI2NzAzODk5NjAiLCI2NzAzODkwNjciLCItNjcwMzkwODUzIiwiLTUuOTg5ODQ0MDZFKzExIiwiLTAuMDAwMDAxMzMyNzg2MjgiLCIwIiwiLTg5My40ODY1NCIsIiIpOworICBtYXRodGVzdCgzMzAsZGVmLCIxLjM3Njk3MTYyIiwiLTkxNS43Mzc0NzRFLTM1MTU3ODcyNCIsIjEuMzc2OTcxNjIiLCIxLjM3Njk3MTYyIiwiLTEuMjYwOTQ0NTFFLTM1MTU3ODcyMSIsIi0xLjUwMzY3NTA4RSszNTE1Nzg3MjEiLCIiLCIiLCIwLjA1NjE5MjA3ODQiKTsKKyAgbWF0aHRlc3QoMzMxLGRlZiwiLTY1LjI4Mzk4MDhFKzU1MDI4ODQwMyIsIi0xMjEzODkuMzA2IiwiLTYuNTI4Mzk4MDhFKzU1MDI4ODQwNCIsIi02LjUyODM5ODA4RSs1NTAyODg0MDQiLCI3LjkyNDc3NzEyRSs1NTAyODg0MDkiLCI1LjM3ODA2Njg5RSs1NTAyODgzOTkiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMzMyLGRlZiwiLTMwMzQ2NjAzLkUrMzQ2MDY3MzkwIiwiNzkyNjYxLjU0NCIsIi0zLjAzNDY2MDMwRSszNDYwNjczOTciLCItMy4wMzQ2NjAzMEUrMzQ2MDY3Mzk3IiwiLTIuNDA1NDU4NTJFKzM0NjA2NzQwMyIsIi0zLjgyODQ0Mzk2RSszNDYwNjczOTEiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMzMzLGRlZiwiLTYxMTcwLjcwNjUiLCItNDUzNzMxMTMxLiIsIi00NTM3OTIzMDIiLCI0NTM2Njk5NjAiLCIyLjc3NTUwNTM4RSsxMyIsIjAuMDAwMTM0ODE3MDgxIiwiMCIsIi02MTE3MC43MDY1IiwiIik7CisgIG1hdGh0ZXN0KDMzNCxkZWYsIjY1NjkuNTExMzMiLCIxMy44NzA2MzUxRSszOTk0MzQ5MTQiLCIxLjM4NzA2MzUxRSszOTk0MzQ5MTUiLCItMS4zODcwNjM1MUUrMzk5NDM0OTE1IiwiOS4xMTIzMjk0NEUrMzk5NDM0OTE4IiwiNC43MzYyNzI5MUUtMzk5NDM0OTEyIiwiMCIsIjY1NjkuNTExMzMiLCI2NTY5LjUxMTMzIik7CisgIG1hdGh0ZXN0KDMzNSxkZWYsIjMwMDcwMzkyNS4iLCItMzE1NjczNi44IiwiMjk3NTQ3MTg4IiwiMzAzODYwNjYyIiwiLTkuNDkyNDMxNDZFKzE0IiwiLTk1LjI1NzgzODciLCItOTUiLCI4MTM5MjkuMCIsIjQuMTg2MDkxMTRFLTI2NzYzMjU2Iik7CisgIG1hdGh0ZXN0KDMzNixkZWYsIjE5MjEzODIxNkUrMzUzMDExNTkyIiwiLTQ3My4wODA2MzMiLCIxLjkyMTM4MjE2RSszNTMwMTE2MDAiLCIxLjkyMTM4MjE2RSszNTMwMTE2MDAiLCItOS4wODk2ODY4OEUrMzUzMDExNjAyIiwiLTQuMDYxNDI2MzdFKzM1MzAxMTU5NyIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzMzcsZGVmLCI4NjA3LjY0Nzk0IiwiLTM0NzQwLjMzNjciLCItMjYxMzIuNjg4OCIsIjQzMzQ3Ljk4NDYiLCItMjk5MDMyNTg4IiwiLTAuMjQ3NzcwOTk5IiwiMCIsIjg2MDcuNjQ3OTQiLCIxLjI5NjA0NTE5RS0xMzY2OTgiKTsKKyAgbWF0aHRlc3QoMzM4LGRlZiwiLTY3OTEzLjgyNDEiLCItOTM4MTUuNDIyOSIsIi0xNjE3MjkuMjQ3IiwiMjU5MDEuNTk4OCIsIjYuMzcxMzY0MTNFKzkiLCIwLjcyMzkwODk0OCIsIjAiLCItNjc5MTMuODI0MSIsIi02Ljk2MzU1MjAzRS00NTMzMTEiKTsKKyAgbWF0aHRlc3QoMzM5LGRlZiwiMzQuNTU1OTQ1NSIsIi05OTg3OTkzOTguIiwiLTk5ODc5OTM2NCIsIjk5ODc5OTQzMyIsIi0zLjQ1MTQ0NTc2RSsxMCIsIi0zLjQ1OTc0ODMzRS04IiwiMCIsIjM0LjU1NTk0NTUiLCIiKTsKKyAgbWF0aHRlc3QoMzQwLGRlZiwiMzg3OTk1LjMyOCIsIjk5MDE5OTU0My5FLTEyNDYyMzYwNyIsIjM4Nzk5NS4zMjgiLCIzODc5OTUuMzI4IiwiMy44NDE5Mjc5NkUtMTI0NjIzNTkzIiwiMy45MTgzNTQ5NUUrMTI0NjIzNjAzIiwiIiwiIiwiNy43MzE1MjEzOEUrNTUiKTsKKyAgbWF0aHRlc3QoMzQxLGRlZiwiLTQ3MS4wOTE2NkUtODM1MjE5MTkiLCItNDQxMjIyMzY4IiwiLTQ0MTIyMjM2OCIsIjQ0MTIyMjM2OCIsIjIuMDc4NTYxNzhFLTgzNTIxOTA4IiwiMS4wNjc2OTY2OUUtODM1MjE5MjUiLCIwIiwiLTQuNzEwOTE2NkUtODM1MjE5MTciLCIiKTsKKyAgbWF0aHRlc3QoMzQyLGRlZiwiLTk3ODM0LjM4NTgiLCI3MDc3OTc4OS44RSs1MDIxNjYwNjUiLCI3LjA3Nzk3ODk4RSs1MDIxNjYwNzIiLCItNy4wNzc5Nzg5OEUrNTAyMTY2MDcyIiwiLTYuOTI0Njk3MjZFKzUwMjE2NjA3NyIsIi0xLjM4MjIzNjE3RS01MDIxNjYwNjgiLCIwIiwiLTk3ODM0LjM4NTgiLCItOC41NzkwNzg4NkUrMzQiKTsKKyAgbWF0aHRlc3QoMzQzLGRlZiwiNzczMjMzMS4wNiIsIi05NTI3MTkuNDgyRSsxMTUzMjU1MDUiLCItOS41MjcxOTQ4MkUrMTE1MzI1NTEwIiwiOS41MjcxOTQ4MkUrMTE1MzI1NTEwIiwiLTcuMzY2NzQyNDRFKzExNTMyNTUxNyIsIi04LjExNjA2MjcxRS0xMTUzMjU1MDUiLCIwIiwiNzczMjMzMS4wNiIsIjEuMzA4ODY3MjRFLTY5Iik7CisgIG1hdGh0ZXN0KDM0NCxkZWYsIjIzLjI3NDU1NDciLCIyLjIzMTk0MjQ1RS0yMjEwNjI1OTIiLCIyMy4yNzQ1NTQ3IiwiMjMuMjc0NTU0NyIsIjUuMTk0NzQ2NjZFLTIyMTA2MjU5MSIsIjEuMDQyNzkzNjhFKzIyMTA2MjU5MyIsIiIsIiIsIjU0MS43MDQ4OTYiKTsKKyAgbWF0aHRlc3QoMzQ1LGRlZiwiNjcxLjA4MzM2M0UtMjE4MzI0MjA1IiwiLTc4NzE1MDAzMSIsIi03ODcxNTAwMzEiLCI3ODcxNTAwMzEiLCItNS4yODI0MzI5MEUtMjE4MzI0MTk0IiwiLTguNTI1NDgyMjdFLTIxODMyNDIxMiIsIjAiLCI2LjcxMDgzMzYzRS0yMTgzMjQyMDMiLCIiKTsKKyAgbWF0aHRlc3QoMzQ2LGRlZiwiMzY1MTY3LjgwIiwiLTgwMjYzLjY1MTYiLCIyODQ5MDQuMTQ4IiwiNDQ1NDMxLjQ1MiIsIi0yLjkzMDk3MDExRSsxMCIsIi00LjU0OTYwMzYyIiwiLTQiLCI0NDExMy4xOTM2IiwiMS4yNzA1MjIyN0UtNDQ2NDY4Iik7CisgIG1hdGh0ZXN0KDM0NyxkZWYsIi0xLjQzMjk3NjA0RS02NTEyOTc4MCIsIjU2LjU5ODczM0UtMTM1NTgxOTQyIiwiLTEuNDMyOTc2MDRFLTY1MTI5NzgwIiwiLTEuNDMyOTc2MDRFLTY1MTI5NzgwIiwiLTguMTEwNDYyODNFLTIwMDcxMTcyMSIsIi0yLjUzMTgxNjQ2RSs3MDQ1MjE2MCIsIiIsIiIsIjguNjU4MzE4ODFFLTM5MDc3ODY4MCIpOworICBtYXRodGVzdCgzNDgsZGVmLCI0MTY5OTg4NTkuIiwiMjYwLjIyMDMyM0UtMzQ5Mjg1NTkzIiwiNDE2OTk4ODU5IiwiNDE2OTk4ODU5IiwiMS4wODUxMTU3OEUtMzQ5Mjg1NTgyIiwiMS42MDI0ODM4M0UrMzQ5Mjg1NTk5IiwiIiwiIiwiNy4yNTExMTE3OEUrMjUiKTsKKyAgbWF0aHRlc3QoMzQ5LGRlZiwiNzI2Ny4xNzYxMUUrODYyNjMwNjA3IiwiNDAyMS41Njg2MSIsIjcuMjY3MTc2MTFFKzg2MjYzMDYxMCIsIjcuMjY3MTc2MTFFKzg2MjYzMDYxMCIsIjIuOTIyNTQ0NzNFKzg2MjYzMDYxNCIsIjEuODA3MDUwMTRFKzg2MjYzMDYwNyIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzNTAsZGVmLCIxMi4yMTQyNDM0RSs1OTM5MDg3NDAiLCI1LjI3MjM2NTcxRS0zOTYwNTA3NDgiLCIxLjIyMTQyNDM0RSs1OTM5MDg3NDEiLCIxLjIyMTQyNDM0RSs1OTM5MDg3NDEiLCI2LjQzOTc5NTgxRSsxOTc4NTc5OTMiLCIyLjMxNjY1MzNFKzk4OTk1OTQ4OCIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzNTEsZGVmLCItMjguNTkxOTMyIiwiLTEuNzkxNTMyMzhFLTgxNzA2NDU3NiIsIi0yOC41OTE5MzIwIiwiLTI4LjU5MTkzMjAiLCI1LjEyMjMzNzIwRS04MTcwNjQ1NzUiLCIxLjU5NTk0ODM4RSs4MTcwNjQ1NzciLCIiLCIiLCIwLjAwMTIyMzI0MzcyIik7CisgIG1hdGh0ZXN0KDM1MixkZWYsIjU5MC44NDk2NjYiLCI3NTM0MjQuMzA2RSsyNzcyMzI3NDQiLCI3LjUzNDI0MzA2RSsyNzcyMzI3NDkiLCItNy41MzQyNDMwNkUrMjc3MjMyNzQ5IiwiNC40NTE2MDUwMEUrMjc3MjMyNzUyIiwiNy44NDIxOTAxNEUtMjc3MjMyNzQ4IiwiMCIsIjU5MC44NDk2NjYiLCIxLjQ4NTMwNjA3RSsyMiIpOworICBtYXRodGVzdCgzNTMsZGVmLCIxLjcyNzA2MjgiLCItMTMyNTAyNi42NyIsIi0xMzI1MDI0Ljk0IiwiMTMyNTAyOC40MCIsIi0yMjg4NDA0LjI3IiwiLTAuMDAwMDAxMzAzNDE3MzkiLCIwIiwiMS43MjcwNjI4IiwiMi4wOTI2MDAzNkUtMzE0NDQwIik7CisgIG1hdGh0ZXN0KDM1NCxkZWYsIjMzNDAyMTE4LiIsIi01NTM0LjgzNzQ1IiwiMzMzOTY1ODMuMiIsIjMzNDA3NjUyLjgiLCItMS44NDg3NTI5NEUrMTEiLCItNjAzNC44ODY5IiwiLTYwMzQiLCI0OTA4LjgyNjcwIiwiOC4xNDQ3MzkxM0UtNDE2NDUiKTsKKyAgbWF0aHRlc3QoMzU1LGRlZiwiLTQzOTg0Mi41MDYiLCItNzc1MTEwLjgwNyIsIi0xMjE0OTUzLjMxIiwiMzM1MjY4LjMwMSIsIjMuNDA5MjY2ODBFKzExIiwiMC41Njc0NTc1ODQiLCIwIiwiLTQzOTg0Mi41MDYiLCItMS44NDY3ODQ3MkUtNDM3NDE4MiIpOworICBtYXRodGVzdCgzNTYsZGVmLCItMjQ4NjY0Ljc3OSIsIi00NDA4OTAuNDRFKzY2NjQzMzk0NCIsIi00LjQwODkwNDQwRSs2NjY0MzM5NDkiLCI0LjQwODkwNDQwRSs2NjY0MzM5NDkiLCIxLjA5NjMzOTI0RSs2NjY0MzM5NTUiLCI1LjY0MDA1ODMxRS02NjY0MzM5NDUiLCIwIiwiLTI0ODY2NC43NzkiLCIyLjYxNTQyODc3RS0yMiIpOworICBtYXRodGVzdCgzNTcsZGVmLCItMTQxNjEuOTE0MiIsIjgzMDYuNDk0OTMiLCItNTg1NS40MTkzIiwiLTIyNDY4LjQwOTEiLCItMTE3NjM1ODY5IiwiLTEuNzA0OTIwNTkiLCItMSIsIi01ODU1LjQxOTI3IiwiMS42NTU3MzM3MkUrMzQ0NzkiKTsKKyAgbWF0aHRlc3QoMzU4LGRlZiwiLTY0MTcyMjcuMTMiLCIxNjY3OS44ODQyIiwiLTY0MDA1NDcuMjUiLCItNjQzMzkwNy4wMSIsIi0xLjA3MDM4NjA1RSsxMSIsIi0zODQuNzI4NTE4IiwiLTM4NCIsIi0xMjE1MS41OTcyIiwiMy41ODc2Nzk3OEUrMTEzNTQ2Iik7CisgIG1hdGh0ZXN0KDM1OSxkZWYsIjUxNDgyNTAyNC4iLCItMjUuMDQ0NjM0NUUtMTAzODA5NDU3IiwiNTE0ODI1MDI0IiwiNTE0ODI1MDI0IiwiLTEuMjg5MzYwNDZFLTEwMzgwOTQ0NyIsIi0yLjA1NTYzMDAyRSsxMDM4MDk0NjQiLCIiLCIiLCI3LjMyODYwMDYyRS0yNyIpOworICBtYXRodGVzdCgzNjAsZGVmLCI1MjU5NDgxOTYiLCIyMTk0NTAzOTAiLCI3NDUzOTg1ODYiLCIzMDY0OTc4MDYiLCIxLjE1NDE5NTM3RSsxNyIsIjIuMzk2NjYxMDIiLCIyIiwiODcwNDc0MTYiLCIiKTsKKyAgbWF0aHRlc3QoMzYxLGRlZiwiLTYzODUwOS4xODEiLCI0NTU4MDE4OS4wRSsyNjkyMTI1NTkiLCI0LjU1ODAxODkwRSsyNjkyMTI1NjYiLCItNC41NTgwMTg5MEUrMjY5MjEyNTY2IiwiLTIuOTEwMzM2OTFFKzI2OTIxMjU3MiIsIi0xLjQwMDg0ODAzRS0yNjkyMTI1NjEiLCIwIiwiLTYzODUwOS4xODEiLCItMS4wNjEyOTQwNUUrMjkiKTsKKyAgbWF0aHRlc3QoMzYyLGRlZiwiMzMwNTkwNDIyIiwiNzQuMzU5OTI4RSs1MzUzNzc5NjUiLCI3LjQzNTk5MjgwRSs1MzUzNzc5NjYiLCItNy40MzU5OTI4MEUrNTM1Mzc3OTY2IiwiMi40NTgyNjgwMEUrNTM1Mzc3OTc1IiwiNC40NDU4MTQxOEUtNTM1Mzc3OTU5IiwiMCIsIjMzMDU5MDQyMiIsIjQuMzE1NTA3NDJFKzU5Iik7CisgIG1hdGh0ZXN0KDM2MyxkZWYsIi0zLjQ4NTkzODcxRS05NDA1Nzk5MDQiLCItMjAyNjUuOTY0MEUtMzIyOTg4OTg3IiwiLTIuMDI2NTk2NDBFLTMyMjk4ODk4MyIsIjIuMDI2NTk2NDBFLTMyMjk4ODk4MyIsIiIsIjEuNzIwMDk1MTlFLTYxNzU5MDkyMSIsIjAiLCItMy40ODU5Mzg3MUUtOTQwNTc5OTA0IiwiIik7CisgIG1hdGh0ZXN0KDM2NCxkZWYsIi0zMjgxMDM0ODAuIiwiLTcyMS45NDkzNzFFLTkyMzkzODY2NSIsIi0zMjgxMDM0ODAiLCItMzI4MTAzNDgwIiwiMi4zNjg3NDEwMUUtOTIzOTM4NjU0IiwiNC41NDQ2ODgyMkUrOTIzOTM4NjcwIiwiIiwiIiwiLTIuNDQzMDAzOEUtNjAiKTsKKyAgbWF0aHRlc3QoMzY1LGRlZiwiLTE4NTcuMDE0NDgiLCIxOTA4MTU3OC4xIiwiMTkwNzk3MjEuMSIsIi0xOTA4MzQzNS4xIiwiLTMuNTQzNDc2NjhFKzEwIiwiLTAuMDAwMDk3MzE5NzUzNyIsIjAiLCItMTg1Ny4wMTQ0OCIsIjguNDQzOTcwODdFKzYyMzc0MTUzIik7CisgIG1hdGh0ZXN0KDM2NixkZWYsIjM0Ny4yODcyMEUrMTQ1OTMwNzcxIiwiLTYyODIxLjk5MDZFLTY3NjU2NDEwNiIsIjMuNDcyODcyMDBFKzE0NTkzMDc3MyIsIjMuNDcyODcyMDBFKzE0NTkzMDc3MyIsIi0yLjE4MTcyNzMyRS01MzA2MzMzMjgiLCItNS41MjgxMTUxOEUrODIyNDk0ODc0IiwiIiwiIiwiNS42OTk5MDEzNUUtODc1NTg0NjQyIik7CisgIG1hdGh0ZXN0KDM2NyxkZWYsIi02NDMuMjExMzk5RSs0NDE4MDcwMDMiLCItNTA3MzM0MTkuMiIsIi02LjQzMjExMzk5RSs0NDE4MDcwMDUiLCItNi40MzIxMTM5OUUrNDQxODA3MDA1IiwiMy4yNjMyMzEzNUUrNDQxODA3MDEzIiwiMS4yNjc4MjU4NEUrNDQxODA2OTk4IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDM2OCxkZWYsIi01Mzk5MTY2MS40RS04NDMzMzk1NTQiLCIyMDcxOC43MzQ2IiwiMjA3MTguNzM0NiIsIi0yMDcxOC43MzQ2IiwiLTEuMTE4NjM4OTBFLTg0MzMzOTU0MiIsIi0yLjYwNTkzNDMxRS04NDMzMzk1NTEiLCIwIiwiLTUuMzk5MTY2MTRFLTg0MzMzOTU0NyIsIiIpOworICBtYXRodGVzdCgzNjksZGVmLCItOTAwMTgxNDI0IiwiLTEwNTc2Mzk4Mi4iLCItMS4wMDU5NDU0MUUrOSIsIi03OTQ0MTc0NDIiLCI5LjUyMDY3NzE5RSsxNiIsIjguNTExMjI4NTYiLCI4IiwiLTU0MDY5NTY4IiwiMS4zMjYyNzA2MUUtOTQ3MDQ1NjAyIik7CisgIG1hdGh0ZXN0KDM3MCxkZWYsIjk0MjE4Ljc0NjJFKzU2MzIzMzk1MSIsIjE5MjYyLjYzODJFKzc2NTI2Mzg5MCIsIjEuOTI2MjYzODJFKzc2NTI2Mzg5NCIsIi0xLjkyNjI2MzgyRSs3NjUyNjM4OTQiLCIiLCI0Ljg5MTI2OTA2RS0yMDIwMjk5MzkiLCIwIiwiOS40MjE4NzQ2MkUrNTYzMjMzOTU1IiwiIik7CisgIG1hdGh0ZXN0KDM3MSxkZWYsIjI4NTQ5LjI3MUUrOTIxMzMxODI4IiwiLTIxNTA1OTAuNDAiLCIyLjg1NDkyNzEwRSs5MjEzMzE4MzIiLCIyLjg1NDkyNzEwRSs5MjEzMzE4MzIiLCItNi4xMzk3Nzg4MUUrOTIxMzMxODM4IiwiLTEuMzI3NTA4NTNFKzkyMTMzMTgyNiIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzNzIsZGVmLCI4MTAuNzA4MEUrNzc5NjI1NzYzIiwiNTk1Ny45NDA0NCIsIjguMTA3MDgwMDBFKzc3OTYyNTc2NSIsIjguMTA3MDgwMDBFKzc3OTYyNTc2NSIsIjQuODMwMTQ5OThFKzc3OTYyNTc2OSIsIjEuMzYwNzE4NTRFKzc3OTYyNTc2MiIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzNzMsZGVmLCItMjMuNzM1NzU0OUUrNzcxMTY5MDgiLCIzNTEuMTAwNjQ5RSs4NjQzNDgwMjIiLCIzLjUxMTAwNjQ5RSs4NjQzNDgwMjQiLCItMy41MTEwMDY0OUUrODY0MzQ4MDI0IiwiLTguMzMzNjM4OTVFKzk0MTQ2NDkzMyIsIi02Ljc2MDM4NDhFLTc4NzIzMTExNiIsIjAiLCItMi4zNzM1NzU0OUUrNzcxMTY5MDkiLCIzLjE3NDAzODUzRSszMDg0Njc2MzciKTsKKyAgbWF0aHRlc3QoMzc0LGRlZiwiNDAyMTYxMDIuMkUrMjkyNzI0NTQ0IiwiNjYxLjAyNTk2MiIsIjQuMDIxNjEwMjJFKzI5MjcyNDU1MSIsIjQuMDIxNjEwMjJFKzI5MjcyNDU1MSIsIjIuNjU4Mzg4NzZFKzI5MjcyNDU1NCIsIjYuMDgzODkxNDhFKzI5MjcyNDU0OCIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzNzUsZGVmLCIyMjc4NTAyNC4zRSs3ODM3MTkxNjgiLCIzOTkuNTA1OTg5RSsxMzc0Nzg2NjYiLCIyLjI3ODUwMjQzRSs3ODM3MTkxNzUiLCIyLjI3ODUwMjQzRSs3ODM3MTkxNzUiLCI5LjEwMjc1MzY3RSs5MjExOTc4NDMiLCI1LjcwMzI5OTgxRSs2NDYyNDA1MDYiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMzc2LGRlZiwiNTE1LjU5MTgxOUUrODIxMzcxMzY0IiwiLTY5MjEzNzkxNC5FLTE0OTQ5ODY5MCIsIjUuMTU1OTE4MTlFKzgyMTM3MTM2NiIsIjUuMTU1OTE4MTlFKzgyMTM3MTM2NiIsIi0zLjU2ODYwNjQ2RSs2NzE4NzI2ODUiLCItNy40NDkyNjQyMUUrOTcwODcwMDQ3IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDM3NyxkZWYsIi01MzY4ODMwNzJFKzQ3NzkxMTI1MSIsIjYyNDk5Ni4zMDEiLCItNS4zNjg4MzA3MkUrNDc3OTExMjU5IiwiLTUuMzY4ODMwNzJFKzQ3NzkxMTI1OSIsIi0zLjM1NTQ5OTM0RSs0Nzc5MTEyNjUiLCItOC41OTAxNzk5OUUrNDc3OTExMjUzIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDM3OCxkZWYsIi0zOTk0OTIuOTE0RS0zMzQzNjkxOTIiLCI1MjAyMTE5Ljg3RSs0NDI0NDIyNTgiLCI1LjIwMjExOTg3RSs0NDI0NDIyNjQiLCItNS4yMDIxMTk4N0UrNDQyNDQyMjY0IiwiLTIuMDc4MjEwMDNFKzEwODA3MzA3OCIsIi03LjY3OTQyNTM5RS03NzY4MTE0NTIiLCIwIiwiLTMuOTk0OTI5MTRFLTMzNDM2OTE4NyIsIiIpOworICBtYXRodGVzdCgzNzksZGVmLCI3NjIuMDcxMTg0IiwiOTg1MTYzMS4zNyIsIjk4NTIzOTMuNDQiLCItOTg1MDg2OS4zMCIsIjcuNTA3NjQ0MzhFKzkiLCIwLjAwMDA3NzM1NDgyMTMiLCIwIiwiNzYyLjA3MTE4NCIsIjQuMDIxOTg0MzZFKzI4MzkyMzU2Iik7CisgIG1hdGh0ZXN0KDM4MCxkZWYsIjU2MjYuMTI0NzEiLCI3Mjk4OTgxOC4zIiwiNzI5OTU0NDQuNCIsIi03Mjk4NDE5Mi4yIiwiNC4xMDY0OTgyMEUrMTEiLCIwLjAwMDA3NzA4MDk1MjQiLCIwIiwiNTYyNi4xMjQ3MSIsIjEuNzk4MTQ3NTdFKzI3MzcyNzA5OCIpOworICBtYXRodGVzdCgzODEsZGVmLCItNDcyMDcyNjAuMSIsIi0yMDczLjMxNTIiLCItNDcyMDkzMzMuNCIsIi00NzIwNTE4Ni44IiwiOS43ODc1NTI5OUUrMTAiLCIyMjc2OC45NzQxIiwiMjI3NjgiLCItMjAxOS42MjY0IiwiLTYuMDIyMzgzMTlFLTE1OTA5Iik7CisgIG1hdGh0ZXN0KDM4MixkZWYsIjIwNy43NDA4NjAiLCItNTEuMDM5MDA5MCIsIjE1Ni43MDE4NTEiLCIyNTguNzc5ODY5IiwiLTEwNjAyLjg4NzYiLCItNC4wNzAyMzY5NCIsIi00IiwiMy41ODQ4MjQwIiwiNi40MDI5NzUxNUUtMTE5Iik7CisgIG1hdGh0ZXN0KDM4MyxkZWYsIi01NzIuODEyNDY0RS03NDU5MzQwMjEiLCItMTgyODA1ODcyLkUrNjA0NTA4NjgxIiwiLTEuODI4MDU4NzJFKzYwNDUwODY4OSIsIjEuODI4MDU4NzJFKzYwNDUwODY4OSIsIjEuMDQ3MTM0ODJFLTE0MTQyNTMyOSIsIiIsIjAiLCItNS43MjgxMjQ2NEUtNzQ1OTM0MDE5IiwiIik7CisgIG1hdGh0ZXN0KDM4NCxkZWYsIi02NDE4NTA0RSszNTMxNDA3IiwiODQ1OTQxNi4xIiwiLTYuNDE4NTA0MDBFKzM1MzE0MTMiLCItNi40MTg1MDQwMEUrMzUzMTQxMyIsIi01LjQyOTY3OTYxRSszNTMxNDIwIiwiLTcuNTg3NDA3ODRFKzM1MzE0MDYiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMzg1LGRlZiwiMjgwNjg5LjUzMSIsIi0xMjgyMTI1NDMiLCItMTI3OTMxODU0IiwiMTI4NDkzMjMzIiwiLTMuNTk4NzkxODZFKzEzIiwiLTAuMDAyMTg5MjUxNzMiLCIwIiwiMjgwNjg5LjUzMSIsIjEuNDIxNzM4MDlFLTY5ODUzMDkzOCIpOworICBtYXRodGVzdCgzODYsZGVmLCIxNS44MDM1NTFFLTc4MzQyMjc5MyIsIjIzOTEwODAzOEUtNDg5MTg2MzA4IiwiMi4zOTEwODAzOEUtNDg5MTg2MzAwIiwiLTIuMzkxMDgwMzhFLTQ4OTE4NjMwMCIsIiIsIjYuNjA5Mzc2NzJFLTI5NDIzNjQ5MyIsIjAiLCIxLjU4MDM1NTFFLTc4MzQyMjc5MiIsIiIpOworICBtYXRodGVzdCgzODcsZGVmLCIyNi41MTU5MjIiLCItOTQxODI0Mi45NkUtMTA1NDgxNjI4IiwiMjYuNTE1OTIyMCIsIjI2LjUxNTkyMjAiLCItMi40OTczMzM5NkUtMTA1NDgxNjIwIiwiLTIuODE1Mzc4ODVFKzEwNTQ4MTYyMiIsIiIsIiIsIjEuNTQzMjYxMDhFLTEzIik7CisgIG1hdGh0ZXN0KDM4OCxkZWYsIi04OC4xMDk0NTU3IiwiLTU0MDI5OTM0LjEiLCItNTQwMzAwMjIuMiIsIjU0MDI5ODQ2LjAiLCI0Ljc2MDU0ODA5RSs5IiwiMC4wMDAwMDE2MzA3NTI2IiwiMCIsIi04OC4xMDk0NTU3IiwiNS4wNTI4OTgyNkUtMTA1MDg5NDM5Iik7CisgIG1hdGh0ZXN0KDM4OSxkZWYsIjY3NzAuNjg2MDJFLTQ5ODQyMDM5NyIsIi02LjExMjQ4OTA4RS03Mjk2MTY5MDgiLCI2Ljc3MDY4NjAyRS00OTg0MjAzOTQiLCI2Ljc3MDY4NjAyRS00OTg0MjAzOTQiLCIiLCItMS4xMDc2ODA2N0UrMjMxMTk2NTE0IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDM5MCxkZWYsIi04OTI5NzM4MTguRS03ODE5MDQ0NDEiLCI1NTUyMDEyOTkuIiwiNTU1MjAxMjk5IiwiLTU1NTIwMTI5OSIsIi00Ljk1NzgwMjI0RS03ODE5MDQ0MjQiLCItMS42MDgzNzg0N0UtNzgxOTA0NDQxIiwiMCIsIi04LjkyOTczODE4RS03ODE5MDQ0MzMiLCIiKTsKKyAgbWF0aHRlc3QoMzkxLGRlZiwiNjcwMTc1ODAyRSsxMzU0MzA2ODAiLCIyNzM1NTE5NS40IiwiNi43MDE3NTgwMkUrMTM1NDMwNjg4IiwiNi43MDE3NTgwMkUrMTM1NDMwNjg4IiwiMS44MzMyNzkwMEUrMTM1NDMwNjk2IiwiMi40NDk5MDMxOEUrMTM1NDMwNjgxIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDM5MixkZWYsIi00NDA5NTAuMjYiLCIyMDUuNDc3NDY5RS02NzczNDU1NjEiLCItNDQwOTUwLjI2MCIsIi00NDA5NTAuMjYwIiwiLTkuMDYwNTM0MzRFLTY3NzM0NTU1NCIsIi0yLjE0NTk3ODY0RSs2NzczNDU1NjQiLCIiLCIiLCIxLjk0NDM3MTMyRSsxMSIpOworICBtYXRodGVzdCgzOTMsZGVmLCItOC4yMzM1Nzc5IiwiNTczNjY1MDEwRSs3NDI3MjIwNzUiLCI1LjczNjY1MDEwRSs3NDI3MjIwODMiLCItNS43MzY2NTAxMEUrNzQyNzIyMDgzIiwiLTQuNzIzMzE1NTVFKzc0MjcyMjA4NCIsIi0xLjQzNTI1ODg2RS03NDI3MjIwODMiLCIwIiwiLTguMjMzNTc3OSIsIjMxMTU1Mi43NTMiKTsKKyAgbWF0aHRlc3QoMzk0LGRlZiwiNDUyOTQzLjg2MyIsIjcwMjIuMjM2MjkiLCI0NTk5NjYuMDk5IiwiNDQ1OTIxLjYyNyIsIjMuMTgwNjc4ODNFKzkiLCI2NC41MDEzNzAzIiwiNjQiLCIzNTIwLjc0MDQ0IiwiNS41NDE1ODk3NkUrMzk3MTYiKTsKKyAgbWF0aHRlc3QoMzk1LGRlZiwiNjI4NzQuMTA3OSIsIi01MjcxOTY1NC4xIiwiLTUyNjU2NzgwLjAiLCI1Mjc4MjUyOC4yIiwiLTMuMzE0NzAxMjJFKzEyIiwiLTAuMDAxMTkyNjEyMyIsIjAiLCI2Mjg3NC4xMDc5IiwiMS4xODgxOTkzNkUtMjUyOTczNzc1Iik7CisgIG1hdGh0ZXN0KDM5NixkZWYsIi03NDI4LjQxNzQxRSs2MDk3NzIwMzciLCItNDYwMjQ4MTkuMyIsIi03LjQyODQxNzQxRSs2MDk3NzIwNDAiLCItNy40Mjg0MTc0MUUrNjA5NzcyMDQwIiwiMy40MTg5MTU2OUUrNjA5NzcyMDQ4IiwiMS42MTQwMDI1MUUrNjA5NzcyMDMzIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDM5NyxkZWYsIjIuMjc5NTkyOTciLCI0MTkzNy4wMTkiLCI0MTkzOS4yOTg2IiwiLTQxOTM0LjczOTQiLCI5NTU5OS4zMzM3IiwiMC4wMDAwNTQzNTc1MzQ4IiwiMCIsIjIuMjc5NTkyOTciLCIyLjg5NzEyNDIzRSsxNTAwNyIpOworICBtYXRodGVzdCgzOTgsZGVmLCI1MDg2OTI0MDhFLTY3MTk2Nzc4MiIsIjg0OTE5ODkuMjAiLCI4NDkxOTg5LjIwIiwiLTg0OTE5ODkuMjAiLCI0LjMxOTgxMDQzRS02NzE5Njc3NjciLCI1Ljk5MDI2MjA3RS02NzE5Njc3ODEiLCIwIiwiNS4wODY5MjQwOEUtNjcxOTY3Nzc0IiwiIik7CisgIG1hdGh0ZXN0KDM5OSxkZWYsIjk0MC41MzM3MDVFLTM3OTMxMDQyMSIsIi00LjAxMTc2OTYxRSs0NjQ2MjAwMzciLCItNC4wMTE3Njk2MUUrNDY0NjIwMDM3IiwiNC4wMTE3Njk2MUUrNDY0NjIwMDM3IiwiLTMuNzczMjA0NTNFKzg1MzA5NjE5IiwiLTIuMzQ0NDM1OTlFLTg0MzkzMDQ1NiIsIjAiLCI5LjQwNTMzNzA1RS0zNzkzMTA0MTkiLCIiKTsKKyAgbWF0aHRlc3QoNDAwLGRlZiwiOTcuMDY0OTY1MiIsIi05Mi40NDg1NjQ5RS0xNTE5ODkwOTgiLCI5Ny4wNjQ5NjUyIiwiOTcuMDY0OTY1MiIsIi04Ljk3MzUxNjczRS0xNTE5ODkwOTUiLCItMS4wNDk5MzQ4RSsxNTE5ODkwOTgiLCIiLCIiLCIxLjMwNzQ4NzI4RS0xOCIpOworICBtYXRodGVzdCg0MDEsZGVmLCIyOTc1NDQuNTM2RSszNjAyNzk0NzMiLCI4LjgwMjc1MDA3IiwiMi45NzU0NDUzNkUrMzYwMjc5NDc4IiwiMi45NzU0NDUzNkUrMzYwMjc5NDc4IiwiMi42MTkyMTAxOUUrMzYwMjc5NDc5IiwiMy4zODAxMzE1OUUrMzYwMjc5NDc3IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDQwMixkZWYsIi0yODg2MTAyOC4iLCI4MjgxOC44MjBFKzEzODM2ODc1OCIsIjguMjgxODgyMDBFKzEzODM2ODc2MiIsIi04LjI4MTg4MjAwRSsxMzgzNjg3NjIiLCItMi4zOTAyMzYyOEUrMTM4MzY4NzcwIiwiLTMuNDg0ODM5MzJFLTEzODM2ODc1NiIsIjAiLCItMjg4NjEwMjgiLCI0LjgxMzg3MDEzRSs1OSIpOworICBtYXRodGVzdCg0MDMsZGVmLCIzNi4yNDk2MjM4RSs2ODgyODAzOSIsIjQ5MjQzLjAwIiwiMy42MjQ5NjIzOEUrNjg4MjgwNDAiLCIzLjYyNDk2MjM4RSs2ODgyODA0MCIsIjEuNzg1MDQwMjJFKzY4ODI4MDQ1IiwiNy4zNjEzNzU5OUUrNjg4MjgwMzUiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNDA0LGRlZiwiMjIuNDQ3ODI4RS00NzYwMTQ2ODMiLCItNTYwNjcuNTUyMCIsIi01NjA2Ny41NTIwIiwiNTYwNjcuNTUyMCIsIi0xLjI1ODU5NDc2RS00NzYwMTQ2NzciLCItNC4wMDM3MTEwOUUtNDc2MDE0Njg3IiwiMCIsIjIuMjQ0NzgyOEUtNDc2MDE0NjgyIiwiIik7CisgIG1hdGh0ZXN0KDQwNSxkZWYsIjI4MjY4OC43OTFFKzc1MDExOTUyIiwiNS45OTc4OTA1MSIsIjIuODI2ODg3OTFFKzc1MDExOTU3IiwiMi44MjY4ODc5MUUrNzUwMTE5NTciLCIxLjY5NTUzNjQyRSs3NTAxMTk1OCIsIjQuNzEzMTM2OUUrNzUwMTE5NTYiLCIiLCIiLCI1LjEwMzMwNTA3RSs0NTAwNzE3NDQiKTsKKyAgbWF0aHRlc3QoNDA2LGRlZiwiLTk4MS44NjAzMTBFLTczNzM4NzAwMiIsIi05OTQwNDYyODkiLCItOTk0MDQ2Mjg5IiwiOTk0MDQ2Mjg5IiwiOS43NjAxNDU5N0UtNzM3Mzg2OTkxIiwiOS44Nzc0MTAzNUUtNzM3Mzg3MDA5IiwiMCIsIi05LjgxODYwMzEwRS03MzczODcwMDAiLCIiKTsKKyAgbWF0aHRlc3QoNDA3LGRlZiwiLTcwMi45MTIxMCIsIi02NDQ0OTAzLjU1IiwiLTY0NDU2MDYuNDYiLCI2NDQ0MjAwLjY0IiwiNC41MzAyMDA2OUUrOSIsIjAuMDAwMTA5MDY0Nzk3IiwiMCIsIi03MDIuOTEyMTAiLCIxLjcwODY2NzAzRS0xODM0ODAwNCIpOworICBtYXRodGVzdCg0MDgsZGVmLCI5NzI0NTY3MjBFLTE3NTM2ODIzIiwiMTYzNzEuMjU5MCIsIjE2MzcxLjI1OTAiLCItMTYzNzEuMjU5MCIsIjEuNTkyMDM0MDhFLTE3NTM2ODEwIiwiNS45NDAwMjQwNEUtMTc1MzY4MTkiLCIwIiwiOS43MjQ1NjcyMEUtMTc1MzY4MTUiLCIiKTsKKyAgbWF0aHRlc3QoNDA5LGRlZiwiNzE0NzEuMjA0NSIsIi03NDMwMzI3OC40IiwiLTc0MjMxODA3LjIiLCI3NDM3NDc0OS42IiwiLTUuMzEwNTQ0ODFFKzEyIiwiLTAuMDAwOTYxODg0OTQiLCIwIiwiNzE0NzEuMjA0NSIsIjIuMTQ1MzUzNzRFLTM2MDY3Nzg1MyIpOworICBtYXRodGVzdCg0MTAsZGVmLCI2NDMuMTAzOTUxRSs0Mzk3MDg0NDEiLCI3ODgyNTE5MjUuIiwiNi40MzEwMzk1MUUrNDM5NzA4NDQzIiwiNi40MzEwMzk1MUUrNDM5NzA4NDQzIiwiNS4wNjkyNzkyN0UrNDM5NzA4NDUyIiwiOC4xNTg2MDkzM0UrNDM5NzA4NDM0IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDQxMSxkZWYsIjQuMzA4Mzg2NjMiLCItNy40MzExMDgyNyIsIi0zLjEyMjcyMTY0IiwiMTEuNzM5NDk0OSIsIi0zMi4wMTYwODc1IiwiLTAuNTc5Nzc3MTMxIiwiMCIsIjQuMzA4Mzg2NjMiLCIwLjAwMDAzNjI5MDg2NDUiKTsKKyAgbWF0aHRlc3QoNDEyLGRlZiwiODIzLjY3ODAyNSIsIi01MTMuNTgxODQwRS0zMjQ0NTMxNDEiLCI4MjMuNjc4MDI1IiwiODIzLjY3ODAyNSIsIi00LjIzMDI2MDc2RS0zMjQ0NTMxMzYiLCItMS42MDM3OTExOEUrMzI0NDUzMTQxIiwiIiwiIiwiMi42Mzc2MjIyOEUtMTUiKTsKKyAgbWF0aHRlc3QoNDEzLGRlZiwiNDQ2MS44MTE2MiIsIjMuMjIwODE2ODAiLCI0NDY1LjAzMjQ0IiwiNDQ1OC41OTA4MCIsIjE0MzcwLjY3NzgiLCIxMzg1LjMwNDM4IiwiMTM4NSIsIjAuOTgwMzUyMDAiLCI4Ljg4MjQ2ODhFKzEwIik7CisgIG1hdGh0ZXN0KDQxNCxkZWYsIi00NDU4NTI3LjEwIiwiLTk5MDcyNjA1IiwiLTEwMzUzMTEzMiIsIjk0NjE0MDc3LjkiLCI0LjQxNzE3ODk0RSsxNCIsIjAuMDQ1MDAyNjIzMSIsIjAiLCItNDQ1ODUyNy4xMCIsIi02LjIzOTI4MDk5RS02NTg3NTI3MTUiKTsKKyAgbWF0aHRlc3QoNDE1LGRlZiwiLTU3Nzk2NDYxOCIsIjQ4NzQyNDM2OC4iLCItOTA1NDAyNTAiLCItMS4wNjUzODg5OUUrOSIsIi0yLjgxNzE0MDM5RSsxNyIsIi0xLjE4NTc1MjQxIiwiLTEiLCItOTA1NDAyNTAiLCIiKTsKKyAgbWF0aHRlc3QoNDE2LGRlZiwiLTg2Ny4wMzYxODQiLCItNTcuMTc2ODYwOCIsIi05MjQuMjEzMDQ1IiwiLTgwOS44NTkzMjMiLCI0OTU3NC40MDcyIiwiMTUuMTY0MTA5NiIsIjE1IiwiLTkuMzgzMjcyMCIsIi0zLjQwMzEyODM3RS0xNjgiKTsKKyAgbWF0aHRlc3QoNDE3LGRlZiwiNzcxODcxOTIxRS0zMzA1MDQ3NzAiLCI1LjM0Mjg1MjM2IiwiNS4zNDI4NTIzNiIsIi01LjM0Mjg1MjM2IiwiNC4xMjM5OTc3MUUtMzMwNTA0NzYxIiwiMS40NDQ2ODEzNkUtMzMwNTA0NzYyIiwiMCIsIjcuNzE4NzE5MjFFLTMzMDUwNDc2MiIsIiIpOworICBtYXRodGVzdCg0MTgsZGVmLCItMzM4NjgzLjA2MkUtNzI4Nzc3NTE4IiwiMTY2NDQxOTMxIiwiMTY2NDQxOTMxIiwiLTE2NjQ0MTkzMSIsIi01LjYzNzEwNjI4RS03Mjg3Nzc1MDUiLCItMi4wMzQ4NDIxOEUtNzI4Nzc3NTIxIiwiMCIsIi0zLjM4NjgzMDYyRS03Mjg3Nzc1MTMiLCIiKTsKKyAgbWF0aHRlc3QoNDE5LGRlZiwiLTUxMjU2ODc0MyIsIi00MTYzNzY4ODcuRS05NjU5NDUyOTUiLCItNTEyNTY4NzQzIiwiLTUxMjU2ODc0MyIsIjIuMTM0MjE3NzhFLTk2NTk0NTI3OCIsIjEuMjMxMDIxMTJFKzk2NTk0NTI5NSIsIiIsIiIsIjEuNDQ4NzQzNThFLTM1Iik7CisgIG1hdGh0ZXN0KDQyMCxkZWYsIjc0NDcxODEuOTkiLCI1MzE4NDM4LjUyIiwiMTI3NjU2MjAuNSIsIjIxMjg3NDMuNDciLCIzLjk2MDczNzk2RSsxMyIsIjEuNDAwMjU3MjMiLCIxIiwiMjEyODc0My40NyIsIjEuMjE2MzQ3ODJFKzM2NTQ4MjcwIik7CisgIG1hdGh0ZXN0KDQyMSxkZWYsIjU0Nzg5LjgyMDciLCI5MzE2NTQzNS4yIiwiOTMyMjAyMjUuMCIsIi05MzExMDY0NS40IiwiNS4xMDQ1MTc0OUUrMTIiLCIwLjAwMDU4ODA5MTcxNiIsIjAiLCI1NDc4OS44MjA3IiwiMy44MDc2OTgyNUUrNDQxNDgzMDM1Iik7CisgIG1hdGh0ZXN0KDQyMixkZWYsIjQxNDg4LjU5NjAiLCIxNDYuNzk3MDk0IiwiNDE2MzUuMzkzMSIsIjQxMzQxLjc5ODkiLCI2MDkwNDA1LjMzIiwiMjgyLjYyNTQ1OSIsIjI4MiIsIjkxLjgxNTQ5MiIsIjYuODQ3MzgxNTNFKzY3OCIpOworICBtYXRodGVzdCg0MjMsZGVmLCI3ODU3NDEuNjYzRSs1Njc1NDUyOSIsIi00NjEuNTMxNzMyIiwiNy44NTc0MTY2M0UrNTY3NTQ1MzQiLCI3Ljg1NzQxNjYzRSs1Njc1NDUzNCIsIi0zLjYyNjQ0NzExRSs1Njc1NDUzNyIsIi0xLjcwMjQ2NTA5RSs1Njc1NDUzMiIsIiIsIiIsIiIpOworICBtYXRodGVzdCg0MjQsZGVmLCItNC45NTQzNjc4NiIsIi0zMTMyLjQyMzMiLCItMzEzNy4zNzc2NyIsIjMxMjcuNDY4OTMiLCIxNTUxOS4xNzczIiwiMC4wMDE1ODE2NDA2IiwiMCIsIi00Ljk1NDM2Nzg2IiwiMS45ODA2MjQyMkUtMjE3NyIpOworICBtYXRodGVzdCg0MjUsZGVmLCI3NzMyMS44NDc4RSs0MDQ2MjY4NzQiLCI4Mi40Nzk3Njg4IiwiNy43MzIxODQ3OEUrNDA0NjI2ODc4IiwiNy43MzIxODQ3OEUrNDA0NjI2ODc4IiwiNi4zNzc0ODgxM0UrNDA0NjI2ODgwIiwiOS4zNzQ2NDQxRSs0MDQ2MjY4NzYiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNDI2LGRlZiwiLTcuOTkzMDc3MjUiLCItMjkxNTMuNzI3MyIsIi0yOTE2MS43MjA0IiwiMjkxNDUuNzM0MiIsIjIzMzAyNy45OTQiLCIwLjAwMDI3NDE2OTk5NCIsIjAiLCItNy45OTMwNzcyNSIsIjEuODg2ODgwMjhFLTI2MzE4Iik7CisgIG1hdGh0ZXN0KDQyNyxkZWYsIi02MS42MzM3NDAxRSs0NzQ5OTk1MTciLCI1MjU0Ljg3MDkyIiwiLTYuMTYzMzc0MDFFKzQ3NDk5OTUxOCIsIi02LjE2MzM3NDAxRSs0NzQ5OTk1MTgiLCItMy4yMzg3NzM0OUUrNDc0OTk5NTIyIiwiLTEuMTcyODg3OEUrNDc0OTk5NTE1IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDQyOCxkZWYsIi0xNi40MDQzMDg4IiwiMzUuMDA2NDgxMiIsIjE4LjYwMjE3MjQiLCItNTEuNDEwNzkwMCIsIi01NzQuMjU3MTI4IiwiLTAuNDY4NjA3NzYyIiwiMCIsIi0xNi40MDQzMDg4IiwiLTMuMzM4MzE4NDNFKzQyIik7CisgIG1hdGh0ZXN0KDQyOSxkZWYsIi04LjQxMTU2NTIwIiwiLTU2NTA4OTU4LjkiLCItNTY1MDg5NjcuMyIsIjU2NTA4OTUwLjUiLCI0NzUzMjg3OTIiLCIxLjQ4ODUzNjU3RS03IiwiMCIsIi04LjQxMTU2NTIwIiwiLTguODYzNjU0NThFLTUyMjYzODI3Iik7CisgIG1hdGh0ZXN0KDQzMCxkZWYsIi0zNjAxNjUuNzlFKzUwMzU1OTgzNSIsIi0xOTY2ODguNTE1IiwiLTMuNjAxNjU3OTBFKzUwMzU1OTg0MCIsIi0zLjYwMTY1NzkwRSs1MDM1NTk4NDAiLCI3LjA4NDA0NzQ0RSs1MDM1NTk4NDUiLCIxLjgzMTE0ODA1RSs1MDM1NTk4MzUiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNDMxLGRlZiwiLTY1MzIzNjQ4MC5FKzU2NTY0ODQ5NSIsIi05MzAuNDQ1Mjc0IiwiLTYuNTMyMzY0ODBFKzU2NTY0ODUwMyIsIi02LjUzMjM2NDgwRSs1NjU2NDg1MDMiLCI2LjA3ODAwNzk2RSs1NjU2NDg1MDYiLCI3LjAyMDY4Njc0RSs1NjU2NDg1MDAiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNDMyLGRlZiwiLTMuNzMzNDI5MDMiLCI4NTUuMDI5Mjg5IiwiODUxLjI5NTg2MCIsIi04NTguNzYyNzE4IiwiLTMxOTIuMTkxMTciLCItMC4wMDQzNjY0MzQwOCIsIjAiLCItMy43MzM0MjkwMyIsIi0xLjQxOTg4OTYxRSs0ODkiKTsKKyAgbWF0aHRlc3QoNDMzLGRlZiwiLTUuMTQ4OTA1MzJFKzU2MjA0ODAxMSIsIjEwODQ3MTI3LjhFLTM5MDkxODkxMCIsIi01LjE0ODkwNTMyRSs1NjIwNDgwMTEiLCItNS4xNDg5MDUzMkUrNTYyMDQ4MDExIiwiLTUuNTg1MDgzNDBFKzE3MTEyOTEwOCIsIi00Ljc0Njc5MTQyRSs5NTI5NjY5MTQiLCIiLCIiLCItNS4xNDg5MDUzMkUrNTYyMDQ4MDExIik7CisgIG1hdGh0ZXN0KDQzNCxkZWYsIjY1MzMxMTkwNyIsIi04MTAuMDM2OTY1RSs3NDQ1Mzc4MjMiLCItOC4xMDAzNjk2NUUrNzQ0NTM3ODI1IiwiOC4xMDAzNjk2NUUrNzQ0NTM3ODI1IiwiLTUuMjkyMDY3OTRFKzc0NDUzNzgzNCIsIi04LjA2NTIxMTA0RS03NDQ1Mzc4MTgiLCIwIiwiNjUzMzExOTA3IiwiMy4wMTMyNTE3MUUtNzEiKTsKKyAgbWF0aHRlc3QoNDM1LGRlZiwiLTEuMzE1NTc5MDciLCI5OC45MTM5MzAwRS01NzkyODE4MDIiLCItMS4zMTU1NzkwNyIsIi0xLjMxNTU3OTA3IiwiLTEuMzAxMjkwOTZFLTU3OTI4MTgwMCIsIi0xLjMzMDAyNDA2RSs1NzkyODE4MDAiLCIiLCIiLCIxNS41Mjk5MzIiKTsKKyAgbWF0aHRlc3QoNDM2LGRlZiwiLTg3NTE5MjM4OSIsIi03MjA3MTU2NS42IiwiLTk0NzI2Mzk1NSIsIi04MDMxMjA4MjMiLCI2LjMwNzY0ODU3RSsxNiIsIjEyLjE0MzM3OTciLCIxMiIsIi0xMDMzMzYwMS44IiwiMS4yNTU2NDQwOEUtNjQ0NDcxNDA1Iik7CisgIG1hdGh0ZXN0KDQzNyxkZWYsIi03MjgzODA3OC44IiwiLTM5MS4zOTg0MjMiLCItNzI4Mzg0NzAuMiIsIi03MjgzNzY4Ny40IiwiMi44NTA4NzA5MkUrMTAiLCIxODYwOTcuMDE3IiwiMTg2MDk3IiwiLTYuNDc0OTY5IiwiLTYuNTc0MDU3RS0zMDc1Iik7CisgIG1hdGh0ZXN0KDQzOCxkZWYsIjI5MTg2NTYwLjkiLCItNzkuNzQxOTk4OCIsIjI5MTg2NDgxLjIiLCIyOTE4NjY0MC42IiwiLTIuMzI3Mzk0NzBFKzkiLCItMzY2MDEyLjQwNyIsIi0zNjYwMTIiLCIzMi40MzUyMTQ0IiwiNi4xMDA1MDg2OUUtNTk4Iik7CisgIG1hdGh0ZXN0KDQzOSxkZWYsIi0zMjk4MDE2NjBFLTczMDI0OTQ2NSIsIi02NDg5LjkyNTYiLCItNjQ4OS45MjU2MCIsIjY0ODkuOTI1NjAiLCIyLjE0MDM4ODI0RS03MzAyNDk0NTMiLCI1LjA4MTc0NzkzRS03MzAyNDk0NjEiLCIwIiwiLTMuMjk4MDE2NjBFLTczMDI0OTQ1NyIsIiIpOworICBtYXRodGVzdCg0NDAsZGVmLCI5MS44NDI5MTE3RSsxMDMxNjQ4ODMiLCI3MTMxNDU1LjE2IiwiOS4xODQyOTExN0UrMTAzMTY0ODg0IiwiOS4xODQyOTExN0UrMTAzMTY0ODg0IiwiNi41NDk3MzYwN0UrMTAzMTY0ODkxIiwiMS4yODc4NTY1NEUrMTAzMTY0ODc4IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDQ0MSxkZWYsIjM5NDM4NjYuMzhFKzE1MDg1NTExMyIsIi0zMTkyNzAwNy4zIiwiMy45NDM4NjYzOEUrMTUwODU1MTE5IiwiMy45NDM4NjYzOEUrMTUwODU1MTE5IiwiLTEuMjU5MTU4NTFFKzE1MDg1NTEyNyIsIi0xLjIzNTI3NTk0RSsxNTA4NTUxMTIiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNDQyLGRlZiwiLTcwMDIuMDQ2OEUtNzk1OTYyMTU2IiwiLTU5Mzc4OTEuMDUiLCItNTkzNzg5MS4wNSIsIjU5Mzc4OTEuMDUiLCI0LjE1NzczOTEwRS03OTU5NjIxNDYiLCIxLjE3OTIxNDQzRS03OTU5NjIxNTkiLCIwIiwiLTcuMDAyMDQ2OEUtNzk1OTYyMTUzIiwiIik7CisgIG1hdGh0ZXN0KDQ0MyxkZWYsIjY5NjUwNDYwNS4iLCI1NDUwNi40NjE3IiwiNjk2NTU5MTExIiwiNjk2NDUwMDk5IiwiMy43OTY0MDAxNkUrMTMiLCIxMjc3OC4zODYiLCIxMjc3OCIsIjIxMDM3LjM5NzQiLCIyLjYwMDg1MzJFKzQ4MTk5MiIpOworICBtYXRodGVzdCg0NDQsZGVmLCItNTExNS43NjQ2NyIsIjY5MC45NjA5NzlFKzgxNTEyNjcwMSIsIjYuOTA5NjA5NzlFKzgxNTEyNjcwMyIsIi02LjkwOTYwOTc5RSs4MTUxMjY3MDMiLCItMy41MzQ3OTM3NkUrODE1MTI2NzA3IiwiLTcuNDAzODQwMkUtODE1MTI2NzAxIiwiMCIsIi01MTE1Ljc2NDY3IiwiLTkuMTcwMDk2NTVFKzI1Iik7CisgIG1hdGh0ZXN0KDQ0NSxkZWYsIi0yNjEuMjc5MzkyIiwiLTYxMy4wNzkzNTciLCItODc0LjM1ODc0OSIsIjM1MS43OTk5NjUiLCIxNjAxODUuMDAyIiwiMC40MjYxNzU0ODQiLCIwIiwiLTI2MS4yNzkzOTIiLCItMi4wNjMxODg0MUUtMTQ4MiIpOworICBtYXRodGVzdCg0NDYsZGVmLCItNTkxNDA3NzYzIiwiLTgwMTQ1ODIyLjgiLCItNjcxNTUzNTg2IiwiLTUxMTI2MTk0MCIsIjQuNzM5ODg2MThFKzE2IiwiNy4zNzkxNDY0NCIsIjciLCItMzAzODcwMDMuNCIsIi0yLjc5MzM0NTIyRS03MDMwMzAxMDUiKTsKKyAgbWF0aHRlc3QoNDQ3LGRlZiwiNjE1NjMwNDA3IiwiLTY5LjQ2NjE4NjkiLCI2MTU2MzAzMzgiLCI2MTU2MzA0NzYiLCItNC4yNzY1NDk2OUUrMTAiLCItODg2MjMwMy4xNSIsIi04ODYyMzAzIiwiMTAuNDM3NTY5MyIsIjMuNDQyODMxMDJFLTYwNyIpOworICBtYXRodGVzdCg0NDgsZGVmLCIxMDc4NzU3LjUwIiwiMjc0MDI1NjkuMEUtNzEzNzQyMDgyIiwiMTA3ODc1Ny41MCIsIjEwNzg3NTcuNTAiLCIyLjk1NjA3MjY4RS03MTM3NDIwNjkiLCIzLjkzNjcwMjA3RSs3MTM3NDIwODAiLCIiLCIiLCIxLjI1NTM2OTI0RSsxOCIpOworICBtYXRodGVzdCg0NDksZGVmLCItNDg2NS42MDM1OEUtNDAxMTE2NTE1IiwiNjY5NTIuNTMxNSIsIjY2OTUyLjUzMTUiLCItNjY5NTIuNTMxNSIsIi0zLjI1NzY0NDc3RS00MDExMTY1MDciLCItNy4yNjcyNDM2M0UtNDAxMTE2NTE3IiwiMCIsIi00Ljg2NTYwMzU4RS00MDExMTY1MTIiLCIiKTsKKyAgbWF0aHRlc3QoNDUwLGRlZiwiLTg3ODA1LjM5MjFFLTkzNDg5NjY5MCIsIi0xODc1LjE0NzQ1IiwiLTE4NzUuMTQ3NDUiLCIxODc1LjE0NzQ1IiwiMS42NDY0ODA1N0UtOTM0ODk2NjgyIiwiNC42ODI1ODYwMUUtOTM0ODk2Njg5IiwiMCIsIi04Ljc4MDUzOTIxRS05MzQ4OTY2ODYiLCIiKTsKKyAgbWF0aHRlc3QoNDUxLGRlZiwiLTIzMjU0MDYwOS5FKzYwMjcwMjUyMCIsIjY4LjA4MzQyMjMiLCItMi4zMjU0MDYwOUUrNjAyNzAyNTI4IiwiLTIuMzI1NDA2MDlFKzYwMjcwMjUyOCIsIi0xLjU4MzIxNjA1RSs2MDI3MDI1MzAiLCItMy40MTU1MjQ2OEUrNjAyNzAyNTI2IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDQ1MixkZWYsIi0zMjA2MTA4MDMuIiwiLTg2Mzg3MTIzNS4iLCItMS4xODQ0ODIwNEUrOSIsIjU0MzI2MDQzMiIsIjIuNzY5NjY0NTBFKzE3IiwiMC4zNzExMzI2MyIsIjAiLCItMzIwNjEwODAzIiwiIik7CisgIG1hdGh0ZXN0KDQ1MyxkZWYsIi0zMDM5NTYzNjRFKzI3ODEzOTk3OSIsIjIyOTUzNy45MjBFKzQ3OTYwMzcyNSIsIjIuMjk1Mzc5MjBFKzQ3OTYwMzczMCIsIi0yLjI5NTM3OTIwRSs0Nzk2MDM3MzAiLCItNi45NzY5NTExNkUrNzU3NzQzNzE3IiwiLTEuMzI0MjA5OEUtMjAxNDYzNzQzIiwiMCIsIi0zLjAzOTU2MzY0RSsyNzgxMzk5ODciLCI5LjIzODk0NzEyRSs1NTYyNzk5NzQiKTsKKyAgbWF0aHRlc3QoNDU0LGRlZiwiLTQzOS43NDczNDgiLCI3NC45NDk0NDU3RS0zNTMxMTc1ODIiLCItNDM5Ljc0NzM0OCIsIi00MzkuNzQ3MzQ4IiwiLTMuMjk1ODgyMDBFLTM1MzExNzU3OCIsIi01Ljg2NzI1Mjg0RSszNTMxMTc1ODIiLCIiLCIiLCItMy4xNzk5NjY5M0UrMTgiKTsKKyAgbWF0aHRlc3QoNDU1LGRlZiwiLTg5NzAyMjMxLjkiLCIxLjI4OTkzOTkzIiwiLTg5NzAyMjMwLjYiLCItODk3MDIyMzMuMiIsIi0xMTU3MTA0OTEiLCItNjk1Mzk4NTIuMSIsIi02OTUzOTg1MiIsIi0wLjA3ODkwOTY0IiwiLTg5NzAyMjMxLjkiKTsKKyAgbWF0aHRlc3QoNDU2LGRlZiwiLTU4NTY5MzkuMTQiLCItNjc0MzM3NS4zNCIsIi0xMjYwMDMxNC41IiwiODg2NDM2LjIwIiwiMy45NDk1NTM5MEUrMTMiLCIwLjg2ODU0NzEwNyIsIjAiLCItNTg1NjkzOS4xNCIsIi0zLjI5MjEzMjQ4RS00NTYzNjk0MiIpOworICBtYXRodGVzdCg0NTcsZGVmLCI3MzMzMTcuNjY5RSsxMDAzODEzNDkiLCItMTM4MzIuNjc5MkUrMTc0MDU1NjA3IiwiLTEuMzgzMjY3OTJFKzE3NDA1NTYxMSIsIjEuMzgzMjY3OTJFKzE3NDA1NTYxMSIsIi0xLjAxNDM3NDgxRSsyNzQ0MzY5NjYiLCItNS4zMDEzNDIyN0UtNzM2NzQyNTciLCIwIiwiNy4zMzMxNzY2OUUrMTAwMzgxMzU0IiwiMS4zNjM2NjU0OUUtMTAwMzgxMzU1Iik7CisgIG1hdGh0ZXN0KDQ1OCxkZWYsIjg3LjQ3OTg3ODdFLTgwMTI0NzA0IiwiMTA4NDk3LjMyIiwiMTA4NDk3LjMyMCIsIi0xMDg0OTcuMzIwIiwiOS40OTEzMzIzOUUtODAxMjQ2OTgiLCI4LjA2Mjg2MDc5RS04MDEyNDcwOCIsIjAiLCI4Ljc0Nzk4Nzg3RS04MDEyNDcwMyIsIiIpOworICBtYXRodGVzdCg0NTksZGVmLCItNjk0NTYyMDUyIiwiMzEwNjgxLjMxOUUrNTQ5NDQ1MjY0IiwiMy4xMDY4MTMxOUUrNTQ5NDQ1MjY5IiwiLTMuMTA2ODEzMTlFKzU0OTQ0NTI2OSIsIi0yLjE1Nzg3NDU0RSs1NDk0NDUyNzgiLCItMi4yMzU2MDkzMkUtNTQ5NDQ1MjYxIiwiMCIsIi02OTQ1NjIwNTIiLCItMy4zNTA2ODE1NUUrMjYiKTsKKyAgbWF0aHRlc3QoNDYwLGRlZiwiLTk3NDQxMzUuODUiLCIxNzk3MDE2LjA0IiwiLTc5NDcxMTkuODEiLCItMTE1NDExNTEuOSIsIi0xLjc1MTAzNjg0RSsxMyIsIi01LjQyMjM5NzgyIiwiLTUiLCItNzU5MDU1LjY1IiwiMy44Mzg0ODAwNkUrMTI1NTg4ODMiKTsKKyAgbWF0aHRlc3QoNDYxLGRlZiwiMzYyNS44NzMwOCIsIi01MC4yMjA4NTM2RSs2NTg2Mjc0ODciLCItNS4wMjIwODUzNkUrNjU4NjI3NDg4IiwiNS4wMjIwODUzNkUrNjU4NjI3NDg4IiwiLTEuODIwOTQ0NDFFKzY1ODYyNzQ5MiIsIi03LjIxOTg1NTU0RS02NTg2Mjc0ODYiLCIwIiwiMzYyNS44NzMwOCIsIjEuNTk1NjQ3N0UtMTgiKTsKKyAgbWF0aHRlc3QoNDYyLGRlZiwiMzY1MzQ3LjUyIiwiLTM2NTU0MTQuNDciLCItMzI5MDA2Ni45NSIsIjQwMjA3NjEuOTkiLCItMS4zMzU0OTY2MUUrMTIiLCItMC4wOTk5NDY5NDgiLCIwIiwiMzY1MzQ3LjUyIiwiMS4wMjY2MzI1N0UtMjAzMzM5OTQiKTsKKyAgbWF0aHRlc3QoNDYzLGRlZiwiLTE5NzA2MzMzLjZFLTgxNjkyMzA1MCIsIi0zODM4NTgwMzIuIiwiLTM4Mzg1ODAzMiIsIjM4Mzg1ODAzMiIsIjcuNTY0NDM0NDNFLTgxNjkyMzAzNSIsIjUuMTMzNzU1N0UtODE2OTIzMDUyIiwiMCIsIi0xLjk3MDYzMzM2RS04MTY5MjMwNDMiLCIiKTsKKyAgbWF0aHRlc3QoNDY0LGRlZiwiLTg2MzQ2LjI2MTYiLCItOTguODA2Mzc4NSIsIi04NjQ0NS4wNjgwIiwiLTg2MjQ3LjQ1NTIiLCI4NTMxNTYxLjQxIiwiODczLjg5MzU5OCIsIjg3MyIsIi04OC4yOTMxNjk1IiwiLTIuMDUwNjQwODZFLTQ4OSIpOworICBtYXRodGVzdCg0NjUsZGVmLCItNDQ1NTg4LjE2MEUtNDk2NTkyMjE1IiwiMzI4LjgyMjk3NiIsIjMyOC44MjI5NzYiLCItMzI4LjgyMjk3NiIsIi0xLjQ2NTE5NjI1RS00OTY1OTIyMDciLCItMS4zNTUxMDA0NEUtNDk2NTkyMjEyIiwiMCIsIi00LjQ1NTg4MTYwRS00OTY1OTIyMTAiLCIiKTsKKyAgbWF0aHRlc3QoNDY2LGRlZiwiLTk3MDkyMTMuNzEiLCItMzQuNjY5MDEzNyIsIi05NzA5MjQ4LjM4IiwiLTk3MDkxNzkuMDQiLCIzMzY2MDg4NjMiLCIyODAwNTQuNTEyIiwiMjgwMDU0IiwiLTE3Ljc0NzI2MDIiLCItMi44MDkwMzk3NEUtMjQ1Iik7CisgIG1hdGh0ZXN0KDQ2NyxkZWYsIjc0MjM5NTUzNi4iLCItNDM1MzMuNjg4OSIsIjc0MjM1MjAwMiIsIjc0MjQzOTA3MCIsIi0zLjIzMTkyMTYzRSsxMyIsIi0xNzA1My4zNTY5IiwiLTE3MDUzIiwiMTU1MzkuMTg4MyIsIjUuNzYyMjczNEUtMzg2MTc1Iik7CisgIG1hdGh0ZXN0KDQ2OCxkZWYsIi04Nzg4NDkxOTMuIiwiLTU4NDI5ODIuNDdFLTk3MjUzNzM0MiIsIi04Nzg4NDkxOTMiLCItODc4ODQ5MTkzIiwiNS4xMzUxMDA0M0UtOTcyNTM3MzI3IiwiMS41MDQxMTA2MUUrOTcyNTM3MzQ0IiwiIiwiIiwiMi4xNzAyNzA0MkUtNTQiKTsKKyAgbWF0aHRlc3QoNDY5LGRlZiwiLTc4MDE0MTQyLjEiLCItNjI0NjU4LjUyMiIsIi03ODYzODgwMC42IiwiLTc3Mzg5NDgzLjYiLCI0Ljg3MzIxOTg3RSsxMyIsIjEyNC44OTA4NjMiLCIxMjQiLCItNTU2NDg1LjM3MiIsIi03Ljg2MDYzODY1RS00OTI5OTE4Iik7CisgIG1hdGh0ZXN0KDQ3MCxkZWYsIjg1NzAzOS4zNzEiLCI0NTQuMzc5NjcyIiwiODU3NDkzLjc1MSIsIjg1NjU4NC45OTEiLCIzODk0MjEyNjgiLCIxODg2LjE3NDU0IiwiMTg4NiIsIjc5LjMwOTYwOCIsIjMuODIyNTMxMDFFKzI2OTMiKTsKKyAgbWF0aHRlc3QoNDcxLGRlZiwiMTY2NTM0MDEwLiIsIi0xNzMuMDEyMjM2IiwiMTY2NTMzODM3IiwiMTY2NTM0MTgzIiwiLTIuODgxMjQyMTRFKzEwIiwiLTk2MjU1Ni4yNTUiLCItOTYyNTU2IiwiNDQuMTY0Nzg0IiwiNC43ODYyMDY2NEUtMTQyMyIpOworICBtYXRodGVzdCg0NzIsZGVmLCItODEwLjg3OTA2MyIsIjQzNzc2LjYxMCIsIjQyOTY1LjczMDkiLCItNDQ1ODcuNDg5MSIsIi0zNTQ5NzUzNi41IiwiLTAuMDE4NTIzMTEyMyIsIjAiLCItODEwLjg3OTA2MyIsIi0yLjM0NzU4NjkxRSsxMjczNDUiKTsKKyAgbWF0aHRlc3QoNDczLGRlZiwiLTMyNy4xMjc5MzUiLCI5MzQ1ODk0NCIsIjkzNDU4NjE2LjkiLCItOTM0NTkyNzEuMSIsIi0zLjA1NzMwMzE0RSsxMCIsIi0wLjAwMDAwMzUwMDIzMTQ1IiwiMCIsIi0zMjcuMTI3OTM1IiwiMi4yOTMyMzAyMUUrMjM1MDIyODU0Iik7CisgIG1hdGh0ZXN0KDQ3NCxkZWYsIjUzOTI5NTIxOC4iLCItOTU4Nzk0MS4xMEUtMzA5NjQzMDk4IiwiNTM5Mjk1MjE4IiwiNTM5Mjk1MjE4IiwiLTUuMTcwNzMwNzlFLTMwOTY0MzA4MyIsIi01LjYyNDcyMzk0RSszMDk2NDMwOTkiLCIiLCIiLCI0LjgwNTQ1MjY5RS04OCIpOworICBtYXRodGVzdCg0NzUsZGVmLCItMzg2MjcwMi42NSIsIjg3OTYxNi43MzMiLCItMjk4MzA4NS45MiIsIi00NzQyMzE5LjM4IiwiLTMuMzk3Njk3ODlFKzEyIiwiLTQuMzkxMzQ3NCIsIi00IiwiLTM0NDIzNS43MTgiLCItMy41MDY1MDE2N0UrNTc5Mzk0MSIpOworICBtYXRodGVzdCg0NzYsZGVmLCItOC4yNTI5MDUwMCIsIjk5Mi4wOTE1ODRFKzI1NjA3MDI1NyIsIjkuOTIwOTE1ODRFKzI1NjA3MDI1OSIsIi05LjkyMDkxNTg0RSsyNTYwNzAyNTkiLCItOC4xODc2Mzc1OUUrMjU2MDcwMjYwIiwiLTguMzE4NjkyNjhFLTI1NjA3MDI2MCIsIjAiLCItOC4yNTI5MDUwMCIsIjEuNDY1Nzc4ODhFKzkiKTsKKyAgbWF0aHRlc3QoNDc3LGRlZiwiNTQ2ODc1MjA1LiIsIjQ0Ny41Mjg1N0UrNTU3MzU3MTAxIiwiNC40NzUyODU3MEUrNTU3MzU3MTAzIiwiLTQuNDc1Mjg1NzBFKzU1NzM1NzEwMyIsIjIuNDQ3NDIyNzhFKzU1NzM1NzExMiIsIjEuMjIxOTg5NDhFLTU1NzM1NzA5NSIsIjAiLCI1NDY4NzUyMDUiLCI4Ljk0NDQzNTQyRSszNCIpOworICBtYXRodGVzdCg0NzgsZGVmLCIxNzc2MjM0MzciLCItNzc3OTExNi4xNCIsIjE2OTg0NDMyMSIsIjE4NTQwMjU1MyIsIi0xLjM4MTc1MzM1RSsxNSIsIi0yMi44MzMzNyIsIi0yMiIsIjY0ODI4ODEuOTIiLCIyLjkwMDg1MzA5RS02NDE3MzgyMCIpOworICBtYXRodGVzdCg0NzksZGVmLCIzNzcyMDQ3MzUuIiwiMTM3NjguMTQwMSIsIjM3NzIxODUwMyIsIjM3NzE5MDk2NyIsIjUuMTkzNDA3NjRFKzEyIiwiMjczOTYuOTI3NCIsIjI3Mzk2IiwiMTI3NjguODIwNCIsIjIuMDYwNjUyOTdFKzExODA4MiIpOworICBtYXRodGVzdCg0ODAsZGVmLCItMjQzNS40OTIzOSIsIi0xMTczMi4wNjQwRS0yMzMzMTUwNCIsIi0yNDM1LjQ5MjM5IiwiLTI0MzUuNDkyMzkiLCIyLjg1NzMzNTI2RS0yMzMzMTQ5NyIsIjIuMDc1OTI4MzJFKzIzMzMxNTAzIiwiIiwiIiwiLTAuMDAwNDEwNTk0NTkiKTsKKyAgbWF0aHRlc3QoNDgxLGRlZiwiLTYxMjg0NjUuMTRFLTEzNzEyMzI5NCIsIi01NzQyMjY0LjI3IiwiLTU3NDIyNjQuMjciLCI1NzQyMjY0LjI3IiwiMy41MTkxMjY2NEUtMTM3MTIzMjgxIiwiMS4wNjcyNTU4NUUtMTM3MTIzMjk0IiwiMCIsIi02LjEyODQ2NTE0RS0xMzcxMjMyODgiLCIiKTsKKyAgbWF0aHRlc3QoNDgyLGRlZiwiLTI4OTgwNjUuNDQiLCItNS4xMTYzODEwNSIsIi0yODk4MDcwLjU2IiwiLTI4OTgwNjAuMzIiLCIxNDgyNzYwNy4xIiwiNTY2NDI4Ljc3MyIsIjU2NjQyOCIsIi0zLjk1NDYxMDYwIiwiLTQuODkxNjkxNTFFLTMzIik7CisgIG1hdGh0ZXN0KDQ4MyxkZWYsIjE4NTEzOTUuMzFFKzU5NDM4MzE2MCIsIi01NTAzMDEuNDc1IiwiMS44NTEzOTUzMUUrNTk0MzgzMTY2IiwiMS44NTEzOTUzMUUrNTk0MzgzMTY2IiwiLTEuMDE4ODI1NTdFKzU5NDM4MzE3MiIsIi0zLjM2NDMyOTE4RSs1OTQzODMxNjAiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNDg0LGRlZiwiNTM2NDEyNTg5LkUrMzc5NTgzOTc3IiwiODk5LjYwMTE2MSIsIjUuMzY0MTI1ODlFKzM3OTU4Mzk4NSIsIjUuMzY0MTI1ODlFKzM3OTU4Mzk4NSIsIjQuODI1NTczODhFKzM3OTU4Mzk4OCIsIjUuOTYyNzgyMzFFKzM3OTU4Mzk4MiIsIiIsIiIsIiIpOworICBtYXRodGVzdCg0ODUsZGVmLCIxODUuODUyOTciLCI4Njc0MTk0ODAuIiwiODY3NDE5NjY2IiwiLTg2NzQxOTI5NCIsIjEuNjEyMTI0ODdFKzExIiwiMi4xNDI1OTYyMkUtNyIsIjAiLCIxODUuODUyOTciLCIiKTsKKyAgbWF0aHRlc3QoNDg2LGRlZiwiLTUuMjY2MzEwNTMiLCItMzgxNTk0MS4zNUUrMTgzMjkxNzYzIiwiLTMuODE1OTQxMzVFKzE4MzI5MTc2OSIsIjMuODE1OTQxMzVFKzE4MzI5MTc2OSIsIjIuMDA5NTkzMjFFKzE4MzI5MTc3MCIsIjEuMzgwMDgxNjJFLTE4MzI5MTc2OSIsIjAiLCItNS4yNjYzMTA1MyIsIjAuMDAxMzAwMDkyMTgiKTsKKyAgbWF0aHRlc3QoNDg3LGRlZiwiLTguMTE1ODcwMjFFLTI0NTk0MjgwNiIsIjQ1NTMuMDY3NTNFKzk0MzQxMjA0OCIsIjQuNTUzMDY3NTNFKzk0MzQxMjA1MSIsIi00LjU1MzA2NzUzRSs5NDM0MTIwNTEiLCItMy42OTUyMTA1MUUrNjk3NDY5MjQ2IiwiIiwiMCIsIi04LjExNTg3MDIxRS0yNDU5NDI4MDYiLCIiKTsKKyAgbWF0aHRlc3QoNDg4LGRlZiwiLTQwNTc2NS4zNTIiLCI4NTQ5NjMyMzEiLCI4NTQ1NTc0NjYiLCItODU1MzY4OTk2IiwiLTMuNDY5MTQ0NTZFKzE0IiwiLTAuMDAwNDc0NTk5NzY5IiwiMCIsIi00MDU3NjUuMzUyIiwiIik7CisgIG1hdGh0ZXN0KDQ4OSxkZWYsIi0xNTkuNjA5NzU3IiwiLTQzMzU2Ljc1NjciLCItNDM1MTYuMzY2NSIsIjQzMTk3LjE0NzAiLCI2OTIwMTYxLjQwIiwiMC4wMDM2ODEzMTIxOSIsIjAiLCItMTU5LjYwOTc1NyIsIi04Ljk1Mzk3ODQ5RS05NTUxOSIpOworICBtYXRodGVzdCg0OTAsZGVmLCItNTY0MjQwLjI0MUUtNTAxMzE2NjcyIiwiLTU1Ny43ODE5NzciLCItNTU3Ljc4MTk3NyIsIjU1Ny43ODE5NzciLCIzLjE0NzIzMDM3RS01MDEzMTY2NjQiLCIxLjAxMTU3ODQ3RS01MDEzMTY2NjkiLCIwIiwiLTUuNjQyNDAyNDFFLTUwMTMxNjY2NyIsIiIpOworICBtYXRodGVzdCg0OTEsZGVmLCIzMTg4NDcuMjcwIiwiNTgyMTA3ODc4LkUrMzk5NjMzNDEyIiwiNS44MjEwNzg3OEUrMzk5NjMzNDIwIiwiLTUuODIxMDc4NzhFKzM5OTYzMzQyMCIsIjEuODU2MDM1MDhFKzM5OTYzMzQyNiIsIjUuNDc3NDYwMTRFLTM5OTYzMzQxNiIsIjAiLCIzMTg4NDcuMjcwIiwiMS4wNTA3NDIzRSszMyIpOworICBtYXRodGVzdCg0OTIsZGVmLCItNDQyNi41OTY2MyIsIjk1LjEwOTY3NjUiLCItNDMzMS40ODY5NSIsIi00NTIxLjcwNjMxIiwiLTQyMTAxMi4xNzMiLCItNDYuNTQyMDIxNyIsIi00NiIsIi01MS41NTE1MTEwIiwiLTIuMzgwMzczNzlFKzM0NiIpOworICBtYXRodGVzdCg0OTMsZGVmLCI2MDM3LjI4MzEwIiwiNTc4MjY0LjEwNSIsIjU4NDMwMS4zODgiLCItNTcyMjI2LjgyMiIsIjMuNDkxMTQ0MTFFKzkiLCIwLjAxMDQ0MDM1NiIsIjAiLCI2MDM3LjI4MzEwIiwiMy41NzI3OTQ4M0UrMjE4NjMyNCIpOworICBtYXRodGVzdCg0OTQsZGVmLCItNjYuOTU1NjY5MiIsIi01My44NTE5NDA0IiwiLTEyMC44MDc2MTAiLCItMTMuMTAzNzI4OCIsIjM2MDUuNjkyNzEiLCIxLjI0MzMyODgxIiwiMSIsIi0xMy4xMDM3Mjg4IiwiMi41NTU1NDA4NkUtOTkiKTsKKyAgbWF0aHRlc3QoNDk1LGRlZiwiLTkyNDg2LjAyMjIiLCItNTk5MzUuODU0NCIsIi0xNTI0MjEuODc3IiwiLTMyNTUwLjE2NzgiLCI1LjU0MzIyODc2RSs5IiwiMS41NDMwODM0IiwiMSIsIi0zMjU1MC4xNjc4IiwiMS44MzE1MjY1NkUtMjk3NjQ3Iik7CisgIG1hdGh0ZXN0KDQ5NixkZWYsIjg1MjEzNjIxOS5FKzkxNzc4NzM1MSIsIjkyNDYyMjEuOTEiLCI4LjUyMTM2MjE5RSs5MTc3ODczNTkiLCI4LjUyMTM2MjE5RSs5MTc3ODczNTkiLCI3Ljg3OTA0MDU4RSs5MTc3ODczNjYiLCI5LjIxNjA0NzY3RSs5MTc3ODczNTIiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNDk3LGRlZiwiLTIxMjAwOTYuMTZFLTI2OTI1MzcxOCIsIjk0MzcuMDA1MTQiLCI5NDM3LjAwNTE0IiwiLTk0MzcuMDA1MTQiLCItMi4wMDA3MzU4NEUtMjY5MjUzNzA4IiwiLTIuMjQ2NTc3MzFFLTI2OTI1MzcxNiIsIjAiLCItMi4xMjAwOTYxNkUtMjY5MjUzNzEyIiwiIik7CisgIG1hdGh0ZXN0KDQ5OCxkZWYsIi01MjQ2NTMuMTY5RS04NjU3ODQyMjYiLCIyMjgwNTQuNjk4IiwiMjI4MDU0LjY5OCIsIi0yMjgwNTQuNjk4IiwiLTEuMTk2NDk2MjBFLTg2NTc4NDIxNSIsIi0yLjMwMDU1ODQ4RS04NjU3ODQyMjYiLCIwIiwiLTUuMjQ2NTMxNjlFLTg2NTc4NDIyMSIsIiIpOworICBtYXRodGVzdCg0OTksZGVmLCItMjg4MTkzMTMzIiwiLTMxMjI2ODczNy4iLCItNjAwNDYxODcwIiwiMjQwNzU2MDQiLCI4Ljk5OTM3MDU3RSsxNiIsIjAuOTIyOTAxMDExIiwiMCIsIi0yODgxOTMxMzMiLCIiKTsKKyAgbWF0aHRlc3QoNTAwLGRlZiwiLTM3MzQ4NDc1OUUtMTEzNTg5OTY0IiwiODQ0MTAxOTU4RS04NTI1MzgyNDAiLCItMy43MzQ4NDc1OUUtMTEzNTg5OTU2IiwiLTMuNzM0ODQ3NTlFLTExMzU4OTk1NiIsIi0zLjE1MjU5MjE2RS05NjYxMjgxODciLCItNC40MjQ2NDAzNkUrNzM4OTQ4Mjc1IiwiIiwiIiwiMy43ODYwMjE0N0UtOTA4NzE5NjQ0Iik7CisgIAorICBzdW1tYXJ5KCJBcml0aG1ldGljIik7CisgIHJldHVybjt9CisKKyAvKiBtYXRodGVzdCAtLSBnZW5lcmFsIGFyaXRobWV0aWMgdGVzdCByb3V0aW5lCisgICAgQXJnMSAgaXMgdGVzdCBudW1iZXIKKyAgICBBcmcyICBpcyBNYXRoQ29udGV4dAorICAgIEFyZzMgIGlzIGxlZnQgaGFuZCBzaWRlIChMSFMpCisgICAgQXJnNCAgaXMgcmlnaHQgaGFuZCBzaWRlIChSSFMpCisgICAgQXJnNSAgaXMgdGhlIGV4cGVjdGVkIHJlc3VsdCBmb3IgYWRkCisgICAgQXJnNiAgaXMgdGhlIGV4cGVjdGVkIHJlc3VsdCBmb3Igc3VidHJhY3QKKyAgICBBcmc3ICBpcyB0aGUgZXhwZWN0ZWQgcmVzdWx0IGZvciBtdWx0aXBseQorICAgIEFyZzggIGlzIHRoZSBleHBlY3RlZCByZXN1bHQgZm9yIGRpdmlkZQorICAgIEFyZzkgIGlzIHRoZSBleHBlY3RlZCByZXN1bHQgZm9yIGludGVnZXJEaXZpZGUKKyAgICBBcmcxMCBpcyB0aGUgZXhwZWN0ZWQgcmVzdWx0IGZvciByZW1haW5kZXIKKyAgICBBcmcxMSBpcyB0aGUgZXhwZWN0ZWQgcmVzdWx0IGZvciBwb3dlcgorIAorICBGb3IgcG93ZXIgUkhTLCAwIGlzIGFkZGVkIHRvIHRoZSBudW1iZXIsIGFueSBleHBvbmVudCBpcyByZW1vdmVkIGFuZAorICB0aGUgbnVtYmVyIGlzIHRoZW4gcm91bmRlZCB0byBhbiBpbnRlZ2VyLCB1c2luZyBmb3JtYXQocmhzKzAsLDApCisgCisgIElmIGFuIGVycm9yIHNob3VsZCByZXN1bHQgZm9yIGFuIG9wZXJhdGlvbiwgdGhlICdleHBlY3RlZCByZXN1bHQnIGlzCisgIGFuIGVtcHR5IHN0cmluZy4KKyAgKi8KKyAKKyBwcml2YXRlIHZvaWQgbWF0aHRlc3QoaW50IHRlc3QsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IG1jLGphdmEubGFuZy5TdHJpbmcgc2xocyxqYXZhLmxhbmcuU3RyaW5nIHNyaHMsamF2YS5sYW5nLlN0cmluZyBhZGQsamF2YS5sYW5nLlN0cmluZyBzdWIsamF2YS5sYW5nLlN0cmluZyBtdWwsamF2YS5sYW5nLlN0cmluZyBkaXYsamF2YS5sYW5nLlN0cmluZyBpZHYsamF2YS5sYW5nLlN0cmluZyByZW0samF2YS5sYW5nLlN0cmluZyBwb3cpeworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBsaHM7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHJoczsKKyAgamF2YS5sYW5nLlN0cmluZyByZXM9bnVsbDsKKyAgamF2YS5sYW5nLlN0cmluZyBzbj1udWxsOworICBpbnQgZT0wOworICAKKyAgCisgIAorICBsaHM9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHNsaHMpOworICByaHM9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHNyaHMpOworICAKKyAge3RyeXsKKyAgIHJlcz1saHMuYWRkKHJocyxtYykudG9TdHJpbmcoKTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDEzNyl7CisgICByZXM9IiI7CisgIH19CisgIG1hdGh0ZXN0Y2hlY2sodGVzdCxsaHMscmhzLCJhZGQiLHJlcyxhZGQpOworICAKKyAge3RyeXsKKyAgIHJlcz1saHMuc3VidHJhY3QocmhzLG1jKS50b1N0cmluZygpOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTM4KXsKKyAgIHJlcz0iIjsKKyAgfX0KKyAgbWF0aHRlc3RjaGVjayh0ZXN0LGxocyxyaHMsInN1YiIscmVzLHN1Yik7CisgIAorICB7dHJ5eworICAgcmVzPWxocy5tdWx0aXBseShyaHMsbWMpLnRvU3RyaW5nKCk7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMzkpeworICAgcmVzPSIiOworICB9fQorICBtYXRodGVzdGNoZWNrKHRlc3QsbGhzLHJocywibXVsIixyZXMsbXVsKTsKKyAgCisgIHt0cnl7CisgICByZXM9bGhzLmRpdmlkZShyaHMsbWMpLnRvU3RyaW5nKCk7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxNDApeworICAgcmVzPSIiOworICB9fQorICBtYXRodGVzdGNoZWNrKHRlc3QsbGhzLHJocywiZGl2IixyZXMsZGl2KTsKKyAgCisgIHt0cnl7CisgICByZXM9bGhzLmRpdmlkZUludGVnZXIocmhzLG1jKS50b1N0cmluZygpOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTQxKXsKKyAgIHJlcz0iIjsKKyAgfX0KKyAgbWF0aHRlc3RjaGVjayh0ZXN0LGxocyxyaHMsImlkdiIscmVzLGlkdik7CisgIAorICB7dHJ5eworICAgcmVzPWxocy5yZW1haW5kZXIocmhzLG1jKS50b1N0cmluZygpOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTQyKXsKKyAgIHJlcz0iIjsKKyAgfX0KKyAgbWF0aHRlc3RjaGVjayh0ZXN0LGxocyxyaHMsInJlbSIscmVzLHJlbSk7CisgIAorICB7dHJ5eworICAgLy8gcHJlcGFyZSBhbiBpbnRlZ2VyIGZyb20gdGhlIHJocworICAgLy8gaW4gUmV4eDoKKyAgIC8vICAgbj1yaHMrMAorICAgLy8gICBlPXBvcygnRScsIG4pCisgICAvLyAgIGlmIGU+MCB0aGVuIG49bGVmdChuLGUtMSkKKyAgIC8vICAgbj1mb3JtYXQobiwsMCkKKyAgIAorICAgc249cmhzLnBsdXMobWMpLnRvU3RyaW5nKCk7CisgICBlPXNuLmluZGV4T2YoIkUiLDApOworICAgaWYgKGU+MCkgCisgICAgc249c24uc3Vic3RyaW5nKDAsZSk7CisgICBzbj0obmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHNuKSkuZm9ybWF0KC0xLDApOworICAgCisgICByZXM9bGhzLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoc24pLG1jKS50b1N0cmluZygpOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTQzKXsKKyAgIHJlcz0iIjsKKyAgfX0KKyAgbWF0aHRlc3RjaGVjayh0ZXN0LGxocyxyaHMsInBvdyIscmVzLHBvdyk7CisgIHJldHVybjsKKyAgfQorCisgLyogbWF0aHRlc3RjaGVjayAtLSBjaGVjayBmb3IgZ2VuZXJhbCBtYXRodGVzdCBlcnJvcgorICAgIEFyZzEgIGlzIHRlc3QgbnVtYmVyCisgICAgQXJnMiAgaXMgbGVmdCBoYW5kIHNpZGUgKExIUykKKyAgICBBcmczICBpcyByaWdodCBoYW5kIHNpZGUgKFJIUykKKyAgICBBcmc0ICBpcyB0aGUgb3BlcmF0aW9uCisgICAgQXJnNSAgaXMgdGhlIGFjdHVhbCByZXN1bHQKKyAgICBBcmc2ICBpcyB0aGUgZXhwZWN0ZWQgcmVzdWx0CisgICAgU2hvdyBlcnJvciBtZXNzYWdlIGlmIGEgcHJvYmxlbSwgb3RoZXJ3aXNlIHJldHVybiBxdWlldGx5CisgICAgKi8KKyAKKyBwcml2YXRlIHZvaWQgbWF0aHRlc3RjaGVjayhpbnQgdGVzdCxjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBsaHMsY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgcmhzLGphdmEubGFuZy5TdHJpbmcgb3AsamF2YS5sYW5nLlN0cmluZyBnb3QsamF2YS5sYW5nLlN0cmluZyB3YW50KXsKKyAgYm9vbGVhbiBmbGFnOworICBqYXZhLmxhbmcuU3RyaW5nIHRlc3RudW07CisgIAorICBmbGFnPXdhbnQuZXF1YWxzKChqYXZhLmxhbmcuT2JqZWN0KWdvdCk7CisgIAorICBpZiAoKCFmbGFnKSkgCisgICBzYXkoIj4iK3Rlc3QrIj4iKyIgIitsaHMudG9TdHJpbmcoKSsiICIrb3ArIiAiK3Jocy50b1N0cmluZygpKyIgIisiPSIrIiAiK3dhbnQrIiAiKyJbZ290IisiICIrZ290KyJdIik7CisgIAorICB0ZXN0bnVtPSJnZW4iK3JpZ2h0KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodGVzdCsxMDAwKSkudG9TdHJpbmcoKSwzKTsKKyAgCisgIChuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QodGVzdG51bSkpLm9rPWZsYWc7CisgIHJldHVybjsKKyAgfQorCisgCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogU3VwcG9ydCByb3V0aW5lcyBhbmQgbWlub3IgY2xhc3NlcyBmb2xsb3cgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAvKiBNZXRob2QgY2FsbGVkIHRvIHN1bW1hcmlzZSBwZW5kaW5nIHRlc3RzICAgICAgICAgICAgICAgICAgICAgICAgICAqLworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogQXJnMSBpcyBzZWN0aW9uIG5hbWUgKi8KKyAKKyBwcml2YXRlIHZvaWQgc3VtbWFyeShqYXZhLmxhbmcuU3RyaW5nIHNlY3Rpb24peworICBpbnQgYmFkOworICBpbnQgY291bnQ7CisgIGludCBpPTA7CisgIGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbC5UZXN0IGl0ZW09bnVsbDsKKyAgYmFkPTA7CisgIGNvdW50PVRlc3RzLnNpemUoKTsKKyAge2ludCAkMTQ0PWNvdW50O2k9MDtpOmZvcig7JDE0ND4wOyQxNDQtLSxpKyspeworICAgaXRlbT0oY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLlRlc3QpKFRlc3RzLmVsZW1lbnRBdChpKSk7CisgICBpZiAoKCFpdGVtLm9rKSkgCisgICAgeworICAgICBiYWQrKzsKKyAgICAgc2F5KCJGYWlsZWQ6IisiICIraXRlbS5uYW1lKTsKKyAgICB9CisgICB9CisgIH0vKmkqLworICB0b3RhbGNvdW50PXRvdGFsY291bnQrY291bnQ7CisgIFRlc3RzPW5ldyBqYXZhLnV0aWwuVmVjdG9yKDEwMCk7IC8vIHJlaW5pdGlhbGl6ZQorICBpZiAoYmFkPT0wKSAKKyAgIHNheSgiT0siKyIgIitsZWZ0KHNlY3Rpb24sMTQpKyIgIityaWdodCgiWyIrY291bnQrIiAiKyJ0ZXN0c10iLDEyKSk7CisgIGVsc2UgCisgICB0aHJvdyBuZXcgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsLkRpYWdFeGNlcHRpb24oc2VjdGlvbisiICIrIltmYWlsZWQiKyIgIitiYWQrIiAiKyJvZiIrIiAiK2NvdW50KyIgIisidGVzdHNdIixiYWQpOworICByZXR1cm47fQorCisgCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAvKiByaWdodCAtIFV0aWxpdHkgdG8gZG8gYSAncmlnaHQnIG9uIGEgSmF2YSBTdHJpbmcgICAgICAgICAgICAgICAgICAqLworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogQXJnMSBpcyBzdHJpbmcgdG8gcmlnaHQtanVzdGlmeSAqLworIC8qIEFyZzIgaXMgZGVzaXJlZCBsZW5ndGggKi8KKyAKKyBwcml2YXRlIHN0YXRpYyBqYXZhLmxhbmcuU3RyaW5nIHJpZ2h0KGphdmEubGFuZy5TdHJpbmcgcyxpbnQgbGVuKXsKKyAgaW50IHNsZW47CisgIHNsZW49cy5sZW5ndGgoKTsKKyAgaWYgKHNsZW49PWxlbikgCisgICByZXR1cm4gczsgLy8gbGVuZ3RoIGp1c3QgcmlnaHQKKyAgaWYgKHNsZW4+bGVuKSAKKyAgIHJldHVybiBzLnN1YnN0cmluZyhzbGVuLWxlbik7IC8vIHRydW5jYXRlIG9uIGxlZnQKKyAgLy8gdG9vIHNob3J0CisgIHJldHVybiAobmV3IGphdmEubGFuZy5TdHJpbmcobmV3IGNoYXJbbGVuLXNsZW5dKSkucmVwbGFjZSgnXDAwMCcsJyAnKS5jb25jYXQocyk7CisgIH0KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogbGVmdCAtIFV0aWxpdHkgdG8gZG8gYSAnbGVmdCcgb24gYSBKYXZhIFN0cmluZyAgICAgICAgICAgICAgICAgICAgKi8KKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qIEFyZzEgaXMgc3RyaW5nIHRvIGxlZnQtanVzdGlmeSAqLworIC8qIEFyZzIgaXMgZGVzaXJlZCBsZW5ndGggKi8KKyAKKyBwcml2YXRlIHN0YXRpYyBqYXZhLmxhbmcuU3RyaW5nIGxlZnQoamF2YS5sYW5nLlN0cmluZyBzLGludCBsZW4peworICBpbnQgc2xlbjsKKyAgc2xlbj1zLmxlbmd0aCgpOworICBpZiAoc2xlbj09bGVuKSAKKyAgIHJldHVybiBzOyAvLyBsZW5ndGgganVzdCByaWdodAorICBpZiAoc2xlbj5sZW4pIAorICAgcmV0dXJuIHMuc3Vic3RyaW5nKDAsbGVuKTsgLy8gdHJ1bmNhdGUgb24gcmlnaHQKKyAgLy8gdG9vIHNob3J0CisgIHJldHVybiBzLmNvbmNhdCgobmV3IGphdmEubGFuZy5TdHJpbmcobmV3IGNoYXJbbGVuLXNsZW5dKSkucmVwbGFjZSgnXDAwMCcsJyAnKSk7CisgIH0KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogc2F5IC0gVXRpbGl0eSB0byBkbyBhIGRpc3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qIEFyZzEgaXMgc3RyaW5nIHRvIGRpc3BsYXksIG9taXR0ZWQgaWYgbm9uZSAqLworIC8qICAgICAgICAgW251bGwgb3Igb21pdHRlZCBnaXZlcyBibGFuayBsaW5lXSAqLworIC8vIHRoaXMgdmVyc2lvbiBkb2Vzbid0IGhlZWQgY29udGludWF0aW9uIGZpbmFsIGNoYXJhY3RlcgorIAorIHByaXZhdGUgc3RhdGljIHZvaWQgc2F5KCl7CisgIHNheSgoamF2YS5sYW5nLlN0cmluZyludWxsKTtyZXR1cm47CisgIH0KKyBwcml2YXRlIHN0YXRpYyB2b2lkIHNheShqYXZhLmxhbmcuU3RyaW5nIHMpeworICBpZiAocz09bnVsbCkgCisgICBzPSIiOworICBqYXZhLmxhbmcuU3lzdGVtLm91dC5wcmludGxuKHMpOworICByZXR1cm47fQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAvKiBTY2FmZm9sZGluZyBmb3Igc3RhbmQtYWxvbmUgcnVuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyoqIEVudHJ5IHBvaW50IGZvciBzdGFuZC1hbG9uZSBydW4uICBJdCBjb25zdHJ1Y3RzIGEKKyAgKiAgPGNvZGU+RGlhZ0JpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdCBhbmQgdGhlbiBpbnZva2VzIGl0cworICAqICB7QGxpbmsgI2RpYWdydW4oYm9vbGVhbil9IG1ldGhvZCB0byBydW4gdGhlIHRlc3QKKyAgKiAgc3VpdGUuCisgICoKKyAgKiBAcGFyYW0gYXJncyBUaGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50IHN0cmluZyBhcnJheS4KKyAgKiAgIGlmIHRoZSBmaXJzdCB3b3JkIGlzICc8Y29kZT5jb250aW51ZTwvY29kZT4nIHRoZW4gdHJ5IGFuZCBydW4KKyAgKiAgIGFsbCB0ZXN0cywgb3RoZXJ3aXNlIHN0b3AgYWZ0ZXIgdGhlIGZpcnN0IGZhaWxpbmcgdGVzdCBncm91cC4KKyAgKi8KKyAKKyBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihqYXZhLmxhbmcuU3RyaW5nIGFyZ3NbXSl7CisgIGJvb2xlYW4gJGNvbnRpbnVlOworICBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwgZGJkOworICBpbnQgZmFpbHM7CisgICRjb250aW51ZT1mYWxzZTsKKyAgaWYgKGFyZ3MubGVuZ3RoPjApIAorICAgJGNvbnRpbnVlPWFyZ3NbMF0uZXF1YWxzKCJjb250aW51ZSIpOworICBkYmQ9bmV3IGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbCgpOyAvLyBtYWtlIHRoZSBydW5uZXIKKyAgZmFpbHM9ZGJkLmRpYWdydW4oJGNvbnRpbnVlKTsgLy8gYW5kIHJ1biB0aGUgdGVzdHMKKyAgaWYgKGZhaWxzPT0wKSAKKyAgIHtTeXN0ZW0uZXhpdCgwKTtyZXR1cm47fQorICB7U3lzdGVtLmV4aXQoMSk7cmV0dXJuO30KKyAgfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIFRlc3QgLS0gcmVwcmVzZW50cyBhIHRlc3QgYW5kIGl0cyBzdGF0dXMgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDE5OTgsIDIwMDAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgICAgICAgKi8KKy8qIEF1dGhvcjogTWlrZSBDb3dsaXNoYXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiAxOTk4LjA3LjE1IEluaXRpYWwgdmVyc2lvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDIwMDAuMDMuMjcgQ2hhbmdlIHRvIGphdmFkb2MgY29tbWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisvKioKKyAqIFRoZSA8Y29kZT5UZXN0PC9jb2RlPiBjbGFzcyBpcyB1c2VkIHRvIHJlY29yZCBhIHNwZWNpZmljIHRlc3QuCisgKiBXaGVuIGNvbnN0cnVjdGVkLCBpdCBub3RlcyB0aGUgbmFtZSBvZiB0aGUgdGVzdCBhbmQgYWRkcyB0aGUgdGVzdAorICogdG8gdGhlIGxpc3Qgb2YgdGVzdHMgaGVsZCBieSB0aGUgcGFyZW50LgorICoKKyAqIEl0cyA8Y29kZT5vazwvZmxhZz4gaXMgYXNzaWduZWQgZGlyZWN0bHkgdG8gcmVjb3JkIHdoZXRoZXIgdGhlCisgKiB0ZXN0IHN1Y2NlZWRlZCAoMSkgb3IgZmFpbGVkICgwKS4KKyAqCisgKiBAc2VlICAgICBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwKKyAqIEB2ZXJzaW9uIDEuMDAgMjAwMC4wMy4yNworICogQGF1dGhvciAgTWlrZSBDb3dsaXNoYXcKKyAqLworIAorIHB1YmxpYyBjbGFzcyBUZXN0eworICBwcml2YXRlIGZpbmFsIHRyYW5zaWVudCBqYXZhLmxhbmcuU3RyaW5nICQwPSJEaWFnQmlnRGVjaW1hbC5ucngiOworICAvKiBwcm9wZXJ0aWVzIHNoYXJlZCB0cmFuc2llbnQgKi8KKyAvKiogVGhlIG5hbWUgb2YgdGhlIHRlc3QuICovCisgIHRyYW5zaWVudCBqYXZhLmxhbmcuU3RyaW5nIG5hbWU7CisgLyoqIFN1Y2Nlc3MgZmxhZzsgd2lsbCBiZSBzZXQgdG8gMSAodHJ1ZSkgaWYgdGhlIHRlc3Qgc3VjY2VlZGVkLCBvciAwCisgICogKGZhbHNlKSBpZiB0aGUgdGVzdCBmYWlsZWQuCisgICovCisgIHRyYW5zaWVudCBib29sZWFuIG9rOworCisgCisgLyoqCisgICogQ29uc3RydWN0cyBhIG5ldyA8Y29kZT5UZXN0PC9jb2RlPiB3aXRoIGEgc3BlY2lmaWVkIG5hbWUuCisgICoKKyAgKiBAcGFyYW0gdGVzdG5hbWUgVGhlIDxjb2RlPlN0cmluZzwvY29kZT4gbmFtaW5nIHRoZSB0ZXN0LgorICAqLworICAKKyAgcHVibGljIFRlc3QoamF2YS5sYW5nLlN0cmluZyB0ZXN0bmFtZSl7c3VwZXIoKTsKKyAgIG5hbWU9dGVzdG5hbWU7IC8vIHNhdmUgdGhlIG5hbWUKKyAgIERpYWdCaWdEZWNpbWFsLnRoaXMuVGVzdHMuYWRkRWxlbWVudCgoamF2YS5sYW5nLk9iamVjdCl0aGlzKTsgLy8gYW5kIGFkZCB0byBwYXJlbnQncyBsaXN0CisgICByZXR1cm47fQorICB9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAvKiBEaWFnRXhjZXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAvKiBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDE5OTYsIDIwMDAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgICAgICAgKi8KKyAvKiBBdXRob3I6IE1pa2UgQ293bGlzaGF3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAvKiAxOTk2LjA1LjI3IEluaXRpYWwgdmVyc2lvbiBpbiBOZXRSZXh4IChhcyBEaWFnWCkgICAgICAgICAgICAgICAgICAgKi8KKyAvKiAxOTk4LjA2LjI1IENvcGllZCBmcm9tIE5ldFJleHggdGVzdCBzdWl0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAvKiAxOTk5LjA3LjAzIEFkZCBmYWlsIGNvdW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAvKiAyMDAwLjAzLjI3IENoYW5nZSB0byBqYXZhZG9jIGNvbW1lbnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAKKyAvKioKKyAgKiBUaGUgPGNvZGU+RGlhZ0V4Y2VwdGlvbjwvY29kZT4gY2xhc3MgaXMgdXNlZCB0byBzaWduYWwgdGhlIGZhaWx1cmUKKyAgKiBvZiBhIHRlc3QgZ3JvdXAuICBJdCByZWNvcmRzIHRoZSBudW1iZXIgb2YgZmFpbHVyZXMgaW4gdGhlIGdyb3VwLgorICAqCisgICogQHNlZSAgICAgY29tLmlibS5tYXRoLkRpYWdCaWdEZWNpbWFsCisgICogQHZlcnNpb24gMS4wMCAyMDAwLjAzLjI3CisgICogQGF1dGhvciAgTWlrZSBDb3dsaXNoYXcKKyAgKi8KKyAKKyBwdWJsaWMgc3RhdGljIGNsYXNzIERpYWdFeGNlcHRpb24gZXh0ZW5kcyBqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbnsKKyAgcHJpdmF0ZSBmaW5hbCB0cmFuc2llbnQgamF2YS5sYW5nLlN0cmluZyAkMD0iRGlhZ0JpZ0RlY2ltYWwubnJ4IjsKKyAKKyAgLyogcHJvcGVydGllcyBzaGFyZWQgdHJhbnNpZW50ICovCisgLyoqIHRoZSBjb3VudCBvZiBmYWlsZWQgdGVzdHMgaW4gdGhlIGdyb3VwIHdoaWNoIHNpZ25hbGxlZCB0aGlzCisgICAqIGV4Y2VwdGlvbi4KKyAgICovCisgIHRyYW5zaWVudCBpbnQgZmFpbGNvdW50PTA7CisgLy8gbnVtYmVyIG9mIHRlc3RzIHdoaWNoIGZhaWxlZAorIAorIC8qKgorICAqIENvbnN0cnVjdHMgYSBuZXcgPGNvZGU+RGlhZ0V4Y2VwdGlvbjwvY29kZT4gd2l0aCBhIG1lc3NhZ2UgYW5kCisgICogZmFpbHVyZSBjb3VudC4gIFRoaXMgaXMgdGhyb3duIHdoZW4gYSBncm91cCBvZiB0ZXN0cyBmYWlscy4KKyAgKgorICAqIEBwYXJhbSBtZXNzYWdlIFRoZSA8Y29kZT5TdHJpbmc8L2NvZGU+IG1lc3NhZ2UgZGVzY3JpYmluZyB0aGUgZ3JvdXAuCisgICogQHBhcmFtIGZhaWxzICAgVGhlIDxjb2RlPmludDwvY29kZT4gbnVtYmVyIG9mIGZhaWxlZCB0ZXN0cyBpbiB0aGUgIGdyb3VwLgorICAqLworICAKKyAgcHVibGljIERpYWdFeGNlcHRpb24oamF2YS5sYW5nLlN0cmluZyBtZXNzYWdlLGludCBmYWlscyl7CisgICBzdXBlcihtZXNzYWdlKTsKKyAgIGZhaWxjb3VudD1mYWlsczsKKyAgIHJldHVybjt9CisgfX0KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL21hdGgvTWF0aENvbnRleHQuamF2YSBiL3NyYy9jb20vaWJtL21hdGgvTWF0aENvbnRleHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iNWExZDE4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vbWF0aC9NYXRoQ29udGV4dC5qYXZhCkBAIC0wLDAgKzEsNTgyIEBACisvKiBHZW5lcmF0ZWQgZnJvbSAnTWF0aENvbnRleHQubnJ4JyA4IFNlcCAyMDAwIDExOjA3OjQ4IFt2Mi4wMF0gKi8KKy8qIE9wdGlvbnM6IEJpbmFyeSBDb21tZW50cyBDcm9zc3JlZiBGb3JtYXQgSmF2YSBMb2dvIFN0cmljdGFyZ3MgU3RyaWN0Y2FzZSBUcmFjZTIgVmVyYm9zZTMgKi8KK3BhY2thZ2UgY29tLmlibS5tYXRoOworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIE1hdGhDb250ZXh0IC0tIE1hdGggY29udGV4dCBzZXR0aW5ncyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uLCAxOTk3LCAyMDAwLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICBUaGUgTWF0aENvbnRleHQgb2JqZWN0IGVuY2Fwc3VsYXRlcyB0aGUgc2V0dGluZ3MgdXNlZCBieSB0aGUgICAgICovCisvKiAgIEJpZ0RlY2ltYWwgY2xhc3M7IGl0IGNvdWxkIGFsc28gYmUgdXNlZCBieSBvdGhlciBhcml0aG1ldGljcy4gICAgKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogTm90ZXM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDEuIFRoZSBwcm9wZXJ0aWVzIGFyZSBjaGVja2VkIGZvciB2YWxpZGl0eSBvbiBjb25zdHJ1Y3Rpb24sIHNvICAgICAqLworLyogICAgdGhlIEJpZ0RlY2ltYWwgY2xhc3MgbWF5IGFzc3VtZSB0aGF0IHRoZXkgYXJlIGNvcnJlY3QuICAgICAgICAgICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIEF1dGhvcjogICAgTWlrZSBDb3dsaXNoYXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogMTk5Ny4wOS4wMyBJbml0aWFsIHZlcnNpb24gKGVkaXRlZCBmcm9tIG5ldHJleHgubGFuZy5SZXh4U2V0KSAgICAgICovCisvKiAxOTk3LjA5LjEyIEFkZCBsb3N0RGlnaXRzIHByb3BlcnR5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTguMDUuMDIgTWFrZSB0aGUgY2xhc3MgaW1tdXRhYmxlIGFuZCBmaW5hbDsgZHJvcCBzZXQgbWV0aG9kcyAgICAqLworLyogMTk5OC4wNi4wNSBBZGQgUm91bmQgKHJvdW5kaW5nIG1vZGVzKSBwcm9wZXJ0eSAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk4LjA2LjI1IFJlbmFtZSBmcm9tIERlY2ltYWxDb250ZXh0OyBhbGxvdyBkaWdpdHM9MCAgICAgICAgICAgICAgKi8KKy8qIDE5OTguMTAuMTIgY2hhbmdlIHRvIGNvbS5pYm0ubWF0aCBwYWNrYWdlICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogMTk5OS4wMi4wNiBhZGQgamF2YWRvYyBjb21tZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk5LjAzLjA1IHNpbXBsaWZ5OyBjaGFuZ2VzIGZyb20gZGlzY3Vzc2lvbiB3aXRoIEouIEJsb2NoICAgICAgICAgKi8KKy8qIDE5OTkuMDMuMTMgMS4wMCByZWxlYXNlIHRvIElCTSBDZW50cmUgZm9yIEphdmEgVGVjaG5vbG9neSAgICAgICAgICAqLworLyogMTk5OS4wNy4xMCAxLjA0IGZsYWcgc2VyaWFsaXphdGlvbiB1bnVzZWQgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAyMDAwLjAxLjAxIDEuMDYgY29weXJpZ2h0IHVwZGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworCisKKworCisvKioKKyAqIFRoZSA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gaW1tdXRhYmxlIGNsYXNzIGVuY2Fwc3VsYXRlcyB0aGUKKyAqIHNldHRpbmdzIHVuZGVyc3Rvb2QgYnkgdGhlIG9wZXJhdG9yIG1ldGhvZHMgb2YgdGhlIHtAbGluayBCaWdEZWNpbWFsfQorICogY2xhc3MgKGFuZCBwb3RlbnRpYWxseSBvdGhlciBjbGFzc2VzKS4gIE9wZXJhdG9yIG1ldGhvZHMgYXJlIHRob3NlCisgKiB0aGF0IGVmZmVjdCBhbiBvcGVyYXRpb24gb24gYSBudW1iZXIgb3IgYSBwYWlyIG9mIG51bWJlcnMuCisgKiA8cD4KKyAqIFRoZSBzZXR0aW5ncywgd2hpY2ggYXJlIG5vdCBiYXNlLWRlcGVuZGVudCwgY29tcHJpc2U6CisgKiA8b2w+CisgKiA8bGk+PGNvZGU+ZGlnaXRzPC9jb2RlPjoKKyAqIHRoZSBudW1iZXIgb2YgZGlnaXRzIChwcmVjaXNpb24pIHRvIGJlIHVzZWQgZm9yIGFuIG9wZXJhdGlvbgorICogPGxpPjxjb2RlPmZvcm08L2NvZGU+OgorICogdGhlIGZvcm0gb2YgYW55IGV4cG9uZW50IHRoYXQgcmVzdWx0cyBmcm9tIHRoZSBvcGVyYXRpb24KKyAqIDxsaT48Y29kZT5sb3N0RGlnaXRzPC9jb2RlPjoKKyAqIHdoZXRoZXIgY2hlY2tpbmcgZm9yIGxvc3QgZGlnaXRzIGlzIGVuYWJsZWQKKyAqIDxsaT48Y29kZT5yb3VuZGluZ01vZGU8L2NvZGU+OgorICogdGhlIGFsZ29yaXRobSB0byBiZSB1c2VkIGZvciByb3VuZGluZy4KKyAqIDwvb2w+CisgKiA8cD4KKyAqIFdoZW4gcHJvdmlkZWQsIGEgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IG9iamVjdCBzdXBwbGllcyB0aGUKKyAqIHNldHRpbmdzIGZvciBhbiBvcGVyYXRpb24gZGlyZWN0bHkuCisgKiA8cD4KKyAqIFdoZW4gPGNvZGU+TWF0aENvbnRleHQuREVGQVVMVDwvY29kZT4gaXMgcHJvdmlkZWQgZm9yIGEKKyAqIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBwYXJhbWV0ZXIgdGhlbiB0aGUgZGVmYXVsdCBzZXR0aW5ncyBhcmUgdXNlZAorICogKDxjb2RlPjksIFNDSUVOVElGSUMsIGZhbHNlLCBST1VORF9IQUxGX1VQPC9jb2RlPikuCisgKiA8cD4KKyAqIEluIHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBjbGFzcywgYWxsIG1ldGhvZHMgd2hpY2ggYWNjZXB0IGEKKyAqIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiBvYmplY3QgZGVmYXVsdHMpIGFsc28gaGF2ZSBhIHZlcnNpb24gb2YgdGhlCisgKiBtZXRob2Qgd2hpY2ggZG9lcyBub3QgYWNjZXB0IGEgTWF0aENvbnRleHQgcGFyYW1ldGVyLiAgVGhlc2UgdmVyc2lvbnMKKyAqIGNhcnJ5IG91dCB1bmxpbWl0ZWQgcHJlY2lzaW9uIGZpeGVkIHBvaW50IGFyaXRobWV0aWMgKGFzIHRob3VnaCB0aGUKKyAqIHNldHRpbmdzIHdlcmUgKDxjb2RlPjAsIFBMQUlOLCBmYWxzZSwgUk9VTkRfSEFMRl9VUDwvY29kZT4pLgorICogPHA+CisgKiBUaGUgaW5zdGFuY2UgdmFyaWFibGVzIGFyZSBzaGFyZWQgd2l0aCBkZWZhdWx0IGFjY2VzcyAoc28gdGhleSBhcmUKKyAqIGRpcmVjdGx5IGFjY2Vzc2libGUgdG8gdGhlIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IGNsYXNzKSwgYnV0IG11c3QKKyAqIG5ldmVyIGJlIGNoYW5nZWQuCisgKiA8cD4KKyAqIFRoZSByb3VuZGluZyBtb2RlIGNvbnN0YW50cyBoYXZlIHRoZSBzYW1lIG5hbWVzIGFuZCB2YWx1ZXMgYXMgdGhlCisgKiBjb25zdGFudHMgb2YgdGhlIHNhbWUgbmFtZSBpbiA8Y29kZT5qYXZhLm1hdGguQmlnRGVjaW1hbDwvY29kZT4sIHRvCisgKiBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGggZWFybGllciB2ZXJzaW9ucyBvZgorICogPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4uCisgKgorICogQHNlZSAgICAgQmlnRGVjaW1hbAorICogQHZlcnNpb24gMS4wOCAyMDAwLjA2LjE4CisgKiBAYXV0aG9yICBNaWtlIENvd2xpc2hhdworICovCisKK3B1YmxpYyBmaW5hbCBjbGFzcyBNYXRoQ29udGV4dCBpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxleworIHByaXZhdGUgc3RhdGljIGZpbmFsIGphdmEubGFuZy5TdHJpbmcgJDA9Ik1hdGhDb250ZXh0Lm5yeCI7CisgCisgLyogLS0tLS0gUHJvcGVydGllcyAtLS0tLSAqLworIC8qIHByb3BlcnRpZXMgcHVibGljIGNvbnN0YW50ICovCisgLyoqCisgICogUGxhaW4gKGZpeGVkIHBvaW50KSBub3RhdGlvbiwgd2l0aG91dCBhbnkgZXhwb25lbnQuCisgICogVXNlZCBhcyBhIHNldHRpbmcgdG8gY29udHJvbCB0aGUgZm9ybSBvZiB0aGUgcmVzdWx0IG9mIGEKKyAgKiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBvcGVyYXRpb24uCisgICogQSB6ZXJvIHJlc3VsdCBpbiBwbGFpbiBmb3JtIG1heSBoYXZlIGEgZGVjaW1hbCBwYXJ0IG9mIG9uZSBvcgorICAqIG1vcmUgemVyb3MuCisgICoKKyAgKiBAc2VlICNFTkdJTkVFUklORworICAqIEBzZWUgI1NDSUVOVElGSUMKKyAgKi8KKyBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQTEFJTj0wOyAvLyBbbm8gZXhwb25lbnRdCisgCisgLyoqCisgICogU3RhbmRhcmQgZmxvYXRpbmcgcG9pbnQgbm90YXRpb24gKHdpdGggc2NpZW50aWZpYyBleHBvbmVudGlhbAorICAqIGZvcm1hdCwgd2hlcmUgdGhlcmUgaXMgb25lIGRpZ2l0IGJlZm9yZSBhbnkgZGVjaW1hbCBwb2ludCkuCisgICogVXNlZCBhcyBhIHNldHRpbmcgdG8gY29udHJvbCB0aGUgZm9ybSBvZiB0aGUgcmVzdWx0IG9mIGEKKyAgKiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBvcGVyYXRpb24uCisgICogQSB6ZXJvIHJlc3VsdCBpbiBwbGFpbiBmb3JtIG1heSBoYXZlIGEgZGVjaW1hbCBwYXJ0IG9mIG9uZSBvcgorICAqIG1vcmUgemVyb3MuCisgICoKKyAgKiBAc2VlICNFTkdJTkVFUklORworICAqIEBzZWUgI1BMQUlOCisgICovCisgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0NJRU5USUZJQz0xOyAvLyAxIGRpZ2l0IGJlZm9yZSAuCisgCisgLyoqCisgICogU3RhbmRhcmQgZmxvYXRpbmcgcG9pbnQgbm90YXRpb24gKHdpdGggZW5naW5lZXJpbmcgZXhwb25lbnRpYWwKKyAgKiBmb3JtYXQsIHdoZXJlIHRoZSBwb3dlciBvZiB0ZW4gaXMgYSBtdWx0aXBsZSBvZiAzKS4KKyAgKiBVc2VkIGFzIGEgc2V0dGluZyB0byBjb250cm9sIHRoZSBmb3JtIG9mIHRoZSByZXN1bHQgb2YgYQorICAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9wZXJhdGlvbi4KKyAgKiBBIHplcm8gcmVzdWx0IGluIHBsYWluIGZvcm0gbWF5IGhhdmUgYSBkZWNpbWFsIHBhcnQgb2Ygb25lIG9yCisgICogbW9yZSB6ZXJvcy4KKyAgKgorICAqIEBzZWUgI1BMQUlOCisgICogQHNlZSAjU0NJRU5USUZJQworICAqLworIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVOR0lORUVSSU5HPTI7IC8vIDEtMyBkaWdpdHMgYmVmb3JlIC4KKyAKKyAvLyBUaGUgcm91bmRpbmcgbW9kZXMgbWF0Y2ggdGhlIG9yaWdpbmFsIEJpZ0RlY2ltYWwgY2xhc3MgdmFsdWVzCisgLyoqCisgICogUm91bmRpbmcgbW9kZSB0byByb3VuZCB0byBhIG1vcmUgcG9zaXRpdmUgbnVtYmVyLgorICAqIFVzZWQgYXMgYSBzZXR0aW5nIHRvIGNvbnRyb2wgdGhlIHJvdW5kaW5nIG1vZGUgdXNlZCBkdXJpbmcgYQorICAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9wZXJhdGlvbi4KKyAgKiA8cD4KKyAgKiBJZiBhbnkgb2YgdGhlIGRpc2NhcmRlZCBkaWdpdHMgYXJlIG5vbi16ZXJvIHRoZW4gdGhlIHJlc3VsdAorICAqIHNob3VsZCBiZSByb3VuZGVkIHRvd2FyZHMgdGhlIG5leHQgbW9yZSBwb3NpdGl2ZSBkaWdpdC4KKyAgKi8KKyBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBST1VORF9DRUlMSU5HPTI7CisgCisgLyoqCisgICogUm91bmRpbmcgbW9kZSB0byByb3VuZCB0b3dhcmRzIHplcm8uCisgICogVXNlZCBhcyBhIHNldHRpbmcgdG8gY29udHJvbCB0aGUgcm91bmRpbmcgbW9kZSB1c2VkIGR1cmluZyBhCisgICogPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb3BlcmF0aW9uLgorICAqIDxwPgorICAqIEFsbCBkaXNjYXJkZWQgZGlnaXRzIGFyZSBpZ25vcmVkICh0cnVuY2F0ZWQpLiAgVGhlIHJlc3VsdCBpcworICAqIG5laXRoZXIgaW5jcmVtZW50ZWQgbm9yIGRlY3JlbWVudGVkLgorICAqLworIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJPVU5EX0RPV049MTsKKyAKKyAvKioKKyAgKiBSb3VuZGluZyBtb2RlIHRvIHJvdW5kIHRvIGEgbW9yZSBuZWdhdGl2ZSBudW1iZXIuCisgICogVXNlZCBhcyBhIHNldHRpbmcgdG8gY29udHJvbCB0aGUgcm91bmRpbmcgbW9kZSB1c2VkIGR1cmluZyBhCisgICogPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gb3BlcmF0aW9uLgorICAqIDxwPgorICAqIElmIGFueSBvZiB0aGUgZGlzY2FyZGVkIGRpZ2l0cyBhcmUgbm9uLXplcm8gdGhlbiB0aGUgcmVzdWx0CisgICogc2hvdWxkIGJlIHJvdW5kZWQgdG93YXJkcyB0aGUgbmV4dCBtb3JlIG5lZ2F0aXZlIGRpZ2l0LgorICAqLworIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJPVU5EX0ZMT09SPTM7CisgCisgLyoqCisgICogUm91bmRpbmcgbW9kZSB0byByb3VuZCB0byBuZWFyZXN0IG5laWdoYm9yLCB3aGVyZSBhbiBlcXVpZGlzdGFudAorICAqIHZhbHVlIGlzIHJvdW5kZWQgZG93bi4KKyAgKiBVc2VkIGFzIGEgc2V0dGluZyB0byBjb250cm9sIHRoZSByb3VuZGluZyBtb2RlIHVzZWQgZHVyaW5nIGEKKyAgKiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBvcGVyYXRpb24uCisgICogPHA+CisgICogSWYgdGhlIGRpc2NhcmRlZCBkaWdpdHMgcmVwcmVzZW50IGdyZWF0ZXIgdGhhbiBoYWxmICgwLjUgdGltZXMpCisgICogdGhlIHZhbHVlIG9mIGEgb25lIGluIHRoZSBuZXh0IHBvc2l0aW9uIHRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUKKyAgKiByb3VuZGVkIHVwIChhd2F5IGZyb20gemVybykuICBPdGhlcndpc2UgdGhlIGRpc2NhcmRlZCBkaWdpdHMgYXJlCisgICogaWdub3JlZC4KKyAgKi8KKyBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBST1VORF9IQUxGX0RPV049NTsKKyAKKyAvKioKKyAgKiBSb3VuZGluZyBtb2RlIHRvIHJvdW5kIHRvIG5lYXJlc3QgbmVpZ2hib3IsIHdoZXJlIGFuIGVxdWlkaXN0YW50CisgICogdmFsdWUgaXMgcm91bmRlZCB0byB0aGUgbmVhcmVzdCBldmVuIG5laWdoYm9yLgorICAqIFVzZWQgYXMgYSBzZXR0aW5nIHRvIGNvbnRyb2wgdGhlIHJvdW5kaW5nIG1vZGUgdXNlZCBkdXJpbmcgYQorICAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9wZXJhdGlvbi4KKyAgKiA8cD4KKyAgKiBJZiB0aGUgZGlzY2FyZGVkIGRpZ2l0cyByZXByZXNlbnQgZ3JlYXRlciB0aGFuIGhhbGYgKDAuNSB0aW1lcykKKyAgKiB0aGUgdmFsdWUgb2YgYSBvbmUgaW4gdGhlIG5leHQgcG9zaXRpb24gdGhlbiB0aGUgcmVzdWx0IHNob3VsZCBiZQorICAqIHJvdW5kZWQgdXAgKGF3YXkgZnJvbSB6ZXJvKS4gIElmIHRoZXkgcmVwcmVzZW50IGxlc3MgdGhhbiBoYWxmLAorICAqIHRoZW4gdGhlIHJlc3VsdCBzaG91bGQgYmUgcm91bmRlZCBkb3duLgorICAqIDxwPgorICAqIE90aGVyd2lzZSAodGhleSByZXByZXNlbnQgZXhhY3RseSBoYWxmKSB0aGUgcmVzdWx0IGlzIHJvdW5kZWQKKyAgKiBkb3duIGlmIGl0cyByaWdodG1vc3QgZGlnaXQgaXMgZXZlbiwgb3Igcm91bmRlZCB1cCBpZiBpdHMKKyAgKiByaWdodG1vc3QgZGlnaXQgaXMgb2RkICh0byBtYWtlIGFuIGV2ZW4gZGlnaXQpLgorICAqLworIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJPVU5EX0hBTEZfRVZFTj02OworIAorIC8qKgorICAqIFJvdW5kaW5nIG1vZGUgdG8gcm91bmQgdG8gbmVhcmVzdCBuZWlnaGJvciwgd2hlcmUgYW4gZXF1aWRpc3RhbnQKKyAgKiB2YWx1ZSBpcyByb3VuZGVkIHVwLgorICAqIFVzZWQgYXMgYSBzZXR0aW5nIHRvIGNvbnRyb2wgdGhlIHJvdW5kaW5nIG1vZGUgdXNlZCBkdXJpbmcgYQorICAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9wZXJhdGlvbi4KKyAgKiA8cD4KKyAgKiBJZiB0aGUgZGlzY2FyZGVkIGRpZ2l0cyByZXByZXNlbnQgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIGhhbGYKKyAgKiAoMC41IHRpbWVzKSB0aGUgdmFsdWUgb2YgYSBvbmUgaW4gdGhlIG5leHQgcG9zaXRpb24gdGhlbiB0aGUgcmVzdWx0CisgICogc2hvdWxkIGJlIHJvdW5kZWQgdXAgKGF3YXkgZnJvbSB6ZXJvKS4gIE90aGVyd2lzZSB0aGUgZGlzY2FyZGVkCisgICogZGlnaXRzIGFyZSBpZ25vcmVkLgorICAqLworIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJPVU5EX0hBTEZfVVA9NDsKKyAKKyAvKioKKyAgKiBSb3VuZGluZyBtb2RlIHRvIGFzc2VydCB0aGF0IG5vIHJvdW5kaW5nIGlzIG5lY2Vzc2FyeS4KKyAgKiBVc2VkIGFzIGEgc2V0dGluZyB0byBjb250cm9sIHRoZSByb3VuZGluZyBtb2RlIHVzZWQgZHVyaW5nIGEKKyAgKiA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiBvcGVyYXRpb24uCisgICogPHA+CisgICogUm91bmRpbmcgKHBvdGVudGlhbCBsb3NzIG9mIGluZm9ybWF0aW9uKSBpcyBub3QgcGVybWl0dGVkLgorICAqIElmIGFueSBvZiB0aGUgZGlzY2FyZGVkIGRpZ2l0cyBhcmUgbm9uLXplcm8gdGhlbiBhbgorICAqIDxjb2RlPkFyaXRobWV0aWNFeGNlcHRpb248L2NvZGU+IHNob3VsZCBiZSB0aHJvd24uCisgICovCisgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUk9VTkRfVU5ORUNFU1NBUlk9NzsKKyAKKyAvKioKKyAgKiBSb3VuZGluZyBtb2RlIHRvIHJvdW5kIGF3YXkgZnJvbSB6ZXJvLgorICAqIFVzZWQgYXMgYSBzZXR0aW5nIHRvIGNvbnRyb2wgdGhlIHJvdW5kaW5nIG1vZGUgdXNlZCBkdXJpbmcgYQorICAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9wZXJhdGlvbi4KKyAgKiA8cD4KKyAgKiBJZiBhbnkgb2YgdGhlIGRpc2NhcmRlZCBkaWdpdHMgYXJlIG5vbi16ZXJvIHRoZW4gdGhlIHJlc3VsdCB3aWxsCisgICogYmUgcm91bmRlZCB1cCAoYXdheSBmcm9tIHplcm8pLgorICAqLworIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJPVU5EX1VQPTA7CisgCisgCisgLyogcHJvcGVydGllcyBzaGFyZWQgKi8KKyAvKioKKyAgKiBUaGUgbnVtYmVyIG9mIGRpZ2l0cyAocHJlY2lzaW9uKSB0byBiZSB1c2VkIGZvciBhbiBvcGVyYXRpb24uCisgICogQSB2YWx1ZSBvZiAwIGluZGljYXRlcyB0aGF0IHVubGltaXRlZCBwcmVjaXNpb24gKGFzIG1hbnkgZGlnaXRzCisgICogYXMgYXJlIHJlcXVpcmVkKSB3aWxsIGJlIHVzZWQuCisgICogPHA+CisgICogVGhlIHtAbGluayBCaWdEZWNpbWFsfSBvcGVyYXRvciBtZXRob2RzIHVzZSB0aGlzIHZhbHVlIHRvCisgICogZGV0ZXJtaW5lIHRoZSBwcmVjaXNpb24gb2YgcmVzdWx0cy4KKyAgKiBOb3RlIHRoYXQgbGVhZGluZyB6ZXJvcyAoaW4gdGhlIGludGVnZXIgcGFydCBvZiBhIG51bWJlcikgYXJlCisgICogbmV2ZXIgc2lnbmlmaWNhbnQuCisgICogPHA+CisgICogPGNvZGU+ZGlnaXRzPC9jb2RlPiB3aWxsIGFsd2F5cyBiZSBub24tbmVnYXRpdmUuCisgICoKKyAgKiBAc2VyaWFsCisgICovCisgaW50IGRpZ2l0czsKKyAKKyAvKioKKyAgKiBUaGUgZm9ybSBvZiByZXN1bHRzIGZyb20gYW4gb3BlcmF0aW9uLgorICAqIDxwPgorICAqIFRoZSB7QGxpbmsgQmlnRGVjaW1hbH0gb3BlcmF0b3IgbWV0aG9kcyB1c2UgdGhpcyB2YWx1ZSB0bworICAqIGRldGVybWluZSB0aGUgZm9ybSBvZiByZXN1bHRzLCBpbiBwYXJ0aWN1bGFyIHdoZXRoZXIgYW5kIGhvdworICAqIGV4cG9uZW50aWFsIG5vdGF0aW9uIHNob3VsZCBiZSB1c2VkLgorICAqCisgICogQHNlZSAjRU5HSU5FRVJJTkcKKyAgKiBAc2VlICNQTEFJTgorICAqIEBzZWUgI1NDSUVOVElGSUMKKyAgKiBAc2VyaWFsCisgICovCisgaW50IGZvcm07IC8vIHZhbHVlcyBmb3IgdGhpcyBtdXN0IGZpdCBpbiBhIGJ5dGUKKyAKKyAvKioKKyAgKiBDb250cm9scyB3aGV0aGVyIGxvc3QgZGlnaXRzIGNoZWNraW5nIGlzIGVuYWJsZWQgZm9yIGFuCisgICogb3BlcmF0aW9uLgorICAqIFNldCB0byA8Y29kZT50cnVlPC9jb2RlPiB0byBlbmFibGUgY2hlY2tpbmcsIG9yCisgICogdG8gPGNvZGU+ZmFsc2U8L2NvZGU+IHRvIGRpc2FibGUgY2hlY2tpbmcuCisgICogPHA+CisgICogV2hlbiBlbmFibGVkLCB0aGUge0BsaW5rIEJpZ0RlY2ltYWx9IG9wZXJhdG9yIG1ldGhvZHMgY2hlY2sKKyAgKiB0aGUgcHJlY2lzaW9uIG9mIHRoZWlyIG9wZXJhbmQgb3Igb3BlcmFuZHMsIGFuZCB0aHJvdyBhbgorICAqIDxjb2RlPkFyaXRobWV0aWNFeGNlcHRpb248L2NvZGU+IGlmIGFuIG9wZXJhbmQgaXMgbW9yZSBwcmVjaXNlCisgICogdGhhbiB0aGUgZGlnaXRzIHNldHRpbmcgKHRoYXQgaXMsIGRpZ2l0cyB3b3VsZCBiZSBsb3N0KS4KKyAgKiBXaGVuIGRpc2FibGVkLCBvcGVyYW5kcyBhcmUgcm91bmRlZCB0byB0aGUgc3BlY2lmaWVkIGRpZ2l0cy4KKyAgKgorICAqIEBzZXJpYWwKKyAgKi8KKyBib29sZWFuIGxvc3REaWdpdHM7CisgCisgLyoqCisgICogVGhlIHJvdW5kaW5nIGFsZ29yaXRobSB0byBiZSB1c2VkIGZvciBhbiBvcGVyYXRpb24uCisgICogPHA+CisgICogVGhlIHtAbGluayBCaWdEZWNpbWFsfSBvcGVyYXRvciBtZXRob2RzIHVzZSB0aGlzIHZhbHVlIHRvCisgICogZGV0ZXJtaW5lIHRoZSBhbGdvcml0aG0gdG8gYmUgdXNlZCB3aGVuIG5vbi16ZXJvIGRpZ2l0cyBoYXZlIHRvCisgICogYmUgZGlzY2FyZGVkIGluIG9yZGVyIHRvIHJlZHVjZSB0aGUgcHJlY2lzaW9uIG9mIGEgcmVzdWx0LgorICAqIFRoZSB2YWx1ZSBtdXN0IGJlIG9uZSBvZiB0aGUgcHVibGljIGNvbnN0YW50cyB3aG9zZSBuYW1lIHN0YXJ0cworICAqIHdpdGggPGNvZGU+Uk9VTkRfPC9jb2RlPi4KKyAgKgorICAqIEBzZWUgI1JPVU5EX0NFSUxJTkcKKyAgKiBAc2VlICNST1VORF9ET1dOCisgICogQHNlZSAjUk9VTkRfRkxPT1IKKyAgKiBAc2VlICNST1VORF9IQUxGX0RPV04KKyAgKiBAc2VlICNST1VORF9IQUxGX0VWRU4KKyAgKiBAc2VlICNST1VORF9IQUxGX1VQCisgICogQHNlZSAjUk9VTkRfVU5ORUNFU1NBUlkKKyAgKiBAc2VlICNST1VORF9VUAorICAqIEBzZXJpYWwKKyAgKi8KKyBpbnQgcm91bmRpbmdNb2RlOworIAorIC8qIHByb3BlcnRpZXMgcHJpdmF0ZSBjb25zdGFudCAqLworIC8vIGRlZmF1bHQgc2V0dGluZ3MKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgREVGQVVMVF9GT1JNPVNDSUVOVElGSUM7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERFRkFVTFRfRElHSVRTPTk7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUZBVUxUX0xPU1RESUdJVFM9ZmFsc2U7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERFRkFVTFRfUk9VTkRJTkdNT0RFPVJPVU5EX0hBTEZfVVA7CisgCisgLyogcHJvcGVydGllcyBwcml2YXRlIGNvbnN0YW50ICovCisgCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1JTl9ESUdJVFM9MDsgLy8gc21hbGxlc3QgdmFsdWUgZm9yIERJR0lUUy4KKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUFYX0RJR0lUUz05OTk5OTk5OTk7IC8vIGxhcmdlc3QgdmFsdWUgZm9yIERJR0lUUy4gIElmIGluY3JlYXNlZCwKKyAvLyB0aGUgQmlnRGVjaW1hbCBjbGFzcyBtYXkgbmVlZCB1cGRhdGUuCisgLy8gbGlzdCBvZiB2YWxpZCByb3VuZGluZyBtb2RlIHZhbHVlcywgbW9zdCBjb21tb24gdHdvIGZpcnN0CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFJPVU5EU1tdPW5ldyBpbnRbXXtST1VORF9IQUxGX1VQLFJPVU5EX1VOTkVDRVNTQVJZLFJPVU5EX0NFSUxJTkcsUk9VTkRfRE9XTixST1VORF9GTE9PUixST1VORF9IQUxGX0RPV04sUk9VTkRfSEFMRl9FVkVOLFJPVU5EX1VQfTsKKyAKKyAKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBqYXZhLmxhbmcuU3RyaW5nIFJPVU5EV09SRFNbXT1uZXcgamF2YS5sYW5nLlN0cmluZ1tdeyJST1VORF9IQUxGX1VQIiwiUk9VTkRfVU5ORUNFU1NBUlkiLCJST1VORF9DRUlMSU5HIiwiUk9VTkRfRE9XTiIsIlJPVU5EX0ZMT09SIiwiUk9VTkRfSEFMRl9ET1dOIiwiUk9VTkRfSEFMRl9FVkVOIiwiUk9VTkRfVVAifTsgLy8gbWF0Y2hpbmcgbmFtZXMgb2YgdGhlIFJPVU5EUyB2YWx1ZXMKKyAKKyAKKyAKKyAKKyAvKiBwcm9wZXJ0aWVzIHByaXZhdGUgY29uc3RhbnQgdW51c2VkICovCisgCisgLy8gU2VyaWFsaXphdGlvbiB2ZXJzaW9uCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEPTcxNjMzNzY5OTg4OTI1MTUzNzZMOworIAorIC8qIHByb3BlcnRpZXMgcHVibGljIGNvbnN0YW50ICovCisgLyoqCisgICogQSA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gb2JqZWN0IGluaXRpYWxpemVkIHRvIHRoZSBkZWZhdWx0CisgICogc2V0dGluZ3MgZm9yIGdlbmVyYWwtcHVycG9zZSBhcml0aG1ldGljLiAgVGhhdCBpcywKKyAgKiA8Y29kZT5kaWdpdHM9OSBmb3JtPVNDSUVOVElGSUMgbG9zdERpZ2l0cz1mYWxzZQorICAqIHJvdW5kaW5nTW9kZT1ST1VORF9IQUxGX1VQPC9jb2RlPi4KKyAgKgorICAqIEBzZWUgI1NDSUVOVElGSUMKKyAgKiBAc2VlICNST1VORF9IQUxGX1VQCisgICovCisgcHVibGljIHN0YXRpYyBmaW5hbCBjb20uaWJtLm1hdGguTWF0aENvbnRleHQgREVGQVVMVD1uZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KERFRkFVTFRfRElHSVRTLERFRkFVTFRfRk9STSxERUZBVUxUX0xPU1RESUdJVFMsREVGQVVMVF9ST1VORElOR01PREUpOworCisgCisgCisgCisgLyogLS0tLS0gQ29uc3RydWN0b3JzIC0tLS0tICovCisgCisgLyoqCisgICogQ29uc3RydWN0cyBhIG5ldyA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gd2l0aCBhIHNwZWNpZmllZAorICAqIHByZWNpc2lvbi4KKyAgKiBUaGUgb3RoZXIgc2V0dGluZ3MgYXJlIHNldCB0byB0aGUgZGVmYXVsdCB2YWx1ZXMKKyAgKiAoc2VlIHtAbGluayAjREVGQVVMVH0pLgorICAqCisgICogQW4gPGNvZGU+SWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uPC9jb2RlPiBpcyB0aHJvd24gaWYgdGhlCisgICogPGNvZGU+c2V0ZGlnaXRzPC9jb2RlPiBwYXJhbWV0ZXIgaXMgb3V0IG9mIHJhbmdlCisgICogKCZsdDswIG9yICZndDs5OTk5OTk5OTkpLgorICAqCisgICogQHBhcmFtIHNldGRpZ2l0cyAgICAgVGhlIDxjb2RlPmludDwvY29kZT4gZGlnaXRzIHNldHRpbmcKKyAgKiAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4uCisgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gcGFyYW1ldGVyIG91dCBvZiByYW5nZS4KKyAgKi8KKyAKKyBwdWJsaWMgTWF0aENvbnRleHQoaW50IHNldGRpZ2l0cyl7CisgIHRoaXMoc2V0ZGlnaXRzLERFRkFVTFRfRk9STSxERUZBVUxUX0xPU1RESUdJVFMsREVGQVVMVF9ST1VORElOR01PREUpOworICByZXR1cm47fQorCisgCisgLyoqCisgICogQ29uc3RydWN0cyBhIG5ldyA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gd2l0aCBhIHNwZWNpZmllZAorICAqIHByZWNpc2lvbiBhbmQgZm9ybS4KKyAgKiBUaGUgb3RoZXIgc2V0dGluZ3MgYXJlIHNldCB0byB0aGUgZGVmYXVsdCB2YWx1ZXMKKyAgKiAoc2VlIHtAbGluayAjREVGQVVMVH0pLgorICAqCisgICogQW4gPGNvZGU+SWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uPC9jb2RlPiBpcyB0aHJvd24gaWYgdGhlCisgICogPGNvZGU+c2V0ZGlnaXRzPC9jb2RlPiBwYXJhbWV0ZXIgaXMgb3V0IG9mIHJhbmdlCisgICogKCZsdDswIG9yICZndDs5OTk5OTk5OTkpLCBvciBpZiB0aGUgdmFsdWUgZ2l2ZW4gZm9yIHRoZQorICAqIDxjb2RlPnNldGZvcm08L2NvZGU+IHBhcmFtZXRlciBpcyBub3Qgb25lIG9mIHRoZSBhcHByb3ByaWF0ZQorICAqIGNvbnN0YW50cy4KKyAgKgorICAqIEBwYXJhbSBzZXRkaWdpdHMgICAgIFRoZSA8Y29kZT5pbnQ8L2NvZGU+IGRpZ2l0cyBzZXR0aW5nCisgICogICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+LgorICAqIEBwYXJhbSBzZXRmb3JtICAgICAgIFRoZSA8Y29kZT5pbnQ8L2NvZGU+IGZvcm0gc2V0dGluZworICAqICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPi4KKyAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBwYXJhbWV0ZXIgb3V0IG9mIHJhbmdlLgorICAqLworIAorIHB1YmxpYyBNYXRoQ29udGV4dChpbnQgc2V0ZGlnaXRzLGludCBzZXRmb3JtKXsKKyAgdGhpcyhzZXRkaWdpdHMsc2V0Zm9ybSxERUZBVUxUX0xPU1RESUdJVFMsREVGQVVMVF9ST1VORElOR01PREUpOworICByZXR1cm47fQorCisgLyoqCisgICogQ29uc3RydWN0cyBhIG5ldyA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gd2l0aCBhIHNwZWNpZmllZAorICAqIHByZWNpc2lvbiwgZm9ybSwgYW5kIGxvc3REaWdpdHMgc2V0dGluZy4KKyAgKiBUaGUgcm91bmRpbmdNb2RlIHNldHRpbmcgaXMgc2V0IHRvIGl0cyBkZWZhdWx0IHZhbHVlCisgICogKHNlZSB7QGxpbmsgI0RFRkFVTFR9KS4KKyAgKgorICAqIEFuIDxjb2RlPklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjwvY29kZT4gaXMgdGhyb3duIGlmIHRoZQorICAqIDxjb2RlPnNldGRpZ2l0czwvY29kZT4gcGFyYW1ldGVyIGlzIG91dCBvZiByYW5nZQorICAqICgmbHQ7MCBvciAmZ3Q7OTk5OTk5OTk5KSwgb3IgaWYgdGhlIHZhbHVlIGdpdmVuIGZvciB0aGUKKyAgKiA8Y29kZT5zZXRmb3JtPC9jb2RlPiBwYXJhbWV0ZXIgaXMgbm90IG9uZSBvZiB0aGUgYXBwcm9wcmlhdGUKKyAgKiBjb25zdGFudHMuCisgICoKKyAgKiBAcGFyYW0gc2V0ZGlnaXRzICAgICBUaGUgPGNvZGU+aW50PC9jb2RlPiBkaWdpdHMgc2V0dGluZworICAqICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPi4KKyAgKiBAcGFyYW0gc2V0Zm9ybSAgICAgICBUaGUgPGNvZGU+aW50PC9jb2RlPiBmb3JtIHNldHRpbmcKKyAgKiAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4uCisgICogQHBhcmFtIHNldGxvc3RkaWdpdHMgVGhlIDxjb2RlPmJvb2xlYW48L2NvZGU+IGxvc3REaWdpdHMKKyAgKiAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5nIGZvciB0aGlzIDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPi4KKyAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBwYXJhbWV0ZXIgb3V0IG9mIHJhbmdlLgorICAqLworIAorIHB1YmxpYyBNYXRoQ29udGV4dChpbnQgc2V0ZGlnaXRzLGludCBzZXRmb3JtLGJvb2xlYW4gc2V0bG9zdGRpZ2l0cyl7CisgIHRoaXMoc2V0ZGlnaXRzLHNldGZvcm0sc2V0bG9zdGRpZ2l0cyxERUZBVUxUX1JPVU5ESU5HTU9ERSk7CisgIHJldHVybjt9CisKKyAvKioKKyAgKiBDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPk1hdGhDb250ZXh0PC9jb2RlPiB3aXRoIGEgc3BlY2lmaWVkCisgICogcHJlY2lzaW9uLCBmb3JtLCBsb3N0RGlnaXRzLCBhbmQgcm91bmRpbmdNb2RlIHNldHRpbmcuCisgICoKKyAgKiBBbiA8Y29kZT5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb248L2NvZGU+IGlzIHRocm93biBpZiB0aGUKKyAgKiA8Y29kZT5zZXRkaWdpdHM8L2NvZGU+IHBhcmFtZXRlciBpcyBvdXQgb2YgcmFuZ2UKKyAgKiAoJmx0OzAgb3IgJmd0Ozk5OTk5OTk5OSksIG9yIGlmIHRoZSB2YWx1ZSBnaXZlbiBmb3IgdGhlCisgICogPGNvZGU+c2V0Zm9ybTwvY29kZT4gb3IgPGNvZGU+c2V0cm91bmRpbmdtb2RlPC9jb2RlPiBwYXJhbWV0ZXJzIGlzCisgICogbm90IG9uZSBvZiB0aGUgYXBwcm9wcmlhdGUgY29uc3RhbnRzLgorICAqCisgICogQHBhcmFtIHNldGRpZ2l0cyAgICAgICBUaGUgPGNvZGU+aW50PC9jb2RlPiBkaWdpdHMgc2V0dGluZworICAqICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+LgorICAqIEBwYXJhbSBzZXRmb3JtICAgICAgICAgVGhlIDxjb2RlPmludDwvY29kZT4gZm9ybSBzZXR0aW5nCisgICogICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4uCisgICogQHBhcmFtIHNldGxvc3RkaWdpdHMgICBUaGUgPGNvZGU+Ym9vbGVhbjwvY29kZT4gbG9zdERpZ2l0cworICAqICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZyBmb3IgdGhpcyA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4uCisgICogQHBhcmFtIHNldHJvdW5kaW5nbW9kZSBUaGUgPGNvZGU+aW50PC9jb2RlPiByb3VuZGluZ01vZGUgc2V0dGluZworICAqICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+LgorICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHBhcmFtZXRlciBvdXQgb2YgcmFuZ2UuCisgICovCisgCisgcHVibGljIE1hdGhDb250ZXh0KGludCBzZXRkaWdpdHMsaW50IHNldGZvcm0sYm9vbGVhbiBzZXRsb3N0ZGlnaXRzLGludCBzZXRyb3VuZGluZ21vZGUpe3N1cGVyKCk7CisgIAorICAKKyAgLy8gc2V0IHZhbHVlcywgYWZ0ZXIgY2hlY2tpbmcKKyAgaWYgKHNldGRpZ2l0cyE9REVGQVVMVF9ESUdJVFMpIAorICAgeworICAgIGlmIChzZXRkaWdpdHM8TUlOX0RJR0lUUykgCisgICAgIHRocm93IG5ldyBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJEaWdpdHMgdG9vIHNtYWxsOiIrIiAiK3NldGRpZ2l0cyk7CisgICAgaWYgKHNldGRpZ2l0cz5NQVhfRElHSVRTKSAKKyAgICAgdGhyb3cgbmV3IGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkRpZ2l0cyB0b28gbGFyZ2U6IisiICIrc2V0ZGlnaXRzKTsKKyAgIH0KKyAgey8qc2VsZWN0Ki8KKyAgaWYgKHNldGZvcm09PVNDSUVOVElGSUMpCisgICA7IC8vIFttb3N0IGNvbW1vbl0KKyAgZWxzZSBpZiAoc2V0Zm9ybT09RU5HSU5FRVJJTkcpCisgICA7CisgIGVsc2UgaWYgKHNldGZvcm09PVBMQUlOKQorICAgOworICBlbHNleworICAgdGhyb3cgbmV3IGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkJhZCBmb3JtIHZhbHVlOiIrIiAiK3NldGZvcm0pOworICB9CisgIH0KKyAgaWYgKCghKGlzVmFsaWRSb3VuZChzZXRyb3VuZGluZ21vZGUpKSkpIAorICAgdGhyb3cgbmV3IGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkJhZCByb3VuZGluZ01vZGUgdmFsdWU6IisiICIrc2V0cm91bmRpbmdtb2RlKTsKKyAgZGlnaXRzPXNldGRpZ2l0czsKKyAgZm9ybT1zZXRmb3JtOworICBsb3N0RGlnaXRzPXNldGxvc3RkaWdpdHM7IC8vIFtubyBiYWQgdmFsdWUgcG9zc2libGVdCisgIHJvdW5kaW5nTW9kZT1zZXRyb3VuZGluZ21vZGU7CisgIHJldHVybjt9CisKKyAvKioKKyAgKiBSZXR1cm5zIHRoZSBkaWdpdHMgc2V0dGluZy4KKyAgKiBUaGlzIHZhbHVlIGlzIGFsd2F5cyBub24tbmVnYXRpdmUuCisgICoKKyAgKiBAcmV0dXJuIGFuIDxjb2RlPmludDwvY29kZT4gd2hpY2ggaXMgdGhlIHZhbHVlIG9mIHRoZSBkaWdpdHMKKyAgKiAgICAgICAgIHNldHRpbmcKKyAgKi8KKyAKKyBwdWJsaWMgaW50IGdldERpZ2l0cygpeworICByZXR1cm4gZGlnaXRzOworICB9CisKKyAvKioKKyAgKiBSZXR1cm5zIHRoZSBmb3JtIHNldHRpbmcuCisgICogVGhpcyB3aWxsIGJlIG9uZSBvZgorICAqIHtAbGluayAjRU5HSU5FRVJJTkd9LAorICAqIHtAbGluayAjUExBSU59LCBvcgorICAqIHtAbGluayAjU0NJRU5USUZJQ30uCisgICoKKyAgKiBAcmV0dXJuIGFuIDxjb2RlPmludDwvY29kZT4gd2hpY2ggaXMgdGhlIHZhbHVlIG9mIHRoZSBmb3JtIHNldHRpbmcKKyAgKi8KKyAKKyBwdWJsaWMgaW50IGdldEZvcm0oKXsKKyAgcmV0dXJuIGZvcm07CisgIH0KKworIC8qKgorICAqIFJldHVybnMgdGhlIGxvc3REaWdpdHMgc2V0dGluZy4KKyAgKiBUaGlzIHdpbGwgYmUgZWl0aGVyIDxjb2RlPnRydWU8L2NvZGU+IChlbmFibGVkKSBvcgorICAqIDxjb2RlPmZhbHNlPC9jb2RlPiAoZGlzYWJsZWQpLgorICAqCisgICogQHJldHVybiBhIDxjb2RlPmJvb2xlYW48L2NvZGU+IHdoaWNoIGlzIHRoZSB2YWx1ZSBvZiB0aGUgbG9zdERpZ2l0cworICAqICAgICAgICAgICBzZXR0aW5nCisgICovCisgCisgcHVibGljIGJvb2xlYW4gZ2V0TG9zdERpZ2l0cygpeworICByZXR1cm4gbG9zdERpZ2l0czsKKyAgfQorCisgLyoqCisgICogUmV0dXJucyB0aGUgcm91bmRpbmdNb2RlIHNldHRpbmcuCisgICogVGhpcyB3aWxsIGJlIG9uZSBvZgorICAqIHtAbGluayAgI1JPVU5EX0NFSUxJTkd9LAorICAqIHtAbGluayAgI1JPVU5EX0RPV059LAorICAqIHtAbGluayAgI1JPVU5EX0ZMT09SfSwKKyAgKiB7QGxpbmsgICNST1VORF9IQUxGX0RPV059LAorICAqIHtAbGluayAgI1JPVU5EX0hBTEZfRVZFTn0sCisgICoge0BsaW5rICAjUk9VTkRfSEFMRl9VUH0sCisgICoge0BsaW5rICAjUk9VTkRfVU5ORUNFU1NBUll9LCBvcgorICAqIHtAbGluayAgI1JPVU5EX1VQfS4KKyAgKgorICAqIEByZXR1cm4gYW4gPGNvZGU+aW50PC9jb2RlPiB3aGljaCBpcyB0aGUgdmFsdWUgb2YgdGhlIHJvdW5kaW5nTW9kZQorICAqICAgICAgICAgc2V0dGluZworICAqLworIAorIHB1YmxpYyBpbnQgZ2V0Um91bmRpbmdNb2RlKCl7CisgIHJldHVybiByb3VuZGluZ01vZGU7CisgIH0KKworIC8qKiBSZXR1cm5zIHRoZSA8Y29kZT5NYXRoQ29udGV4dDwvY29kZT4gYXMgYSByZWFkYWJsZSBzdHJpbmcuCisgICogVGhlIDxjb2RlPlN0cmluZzwvY29kZT4gcmV0dXJuZWQgcmVwcmVzZW50cyB0aGUgc2V0dGluZ3Mgb2YgdGhlCisgICogPGNvZGU+TWF0aENvbnRleHQ8L2NvZGU+IG9iamVjdCBhcyBmb3VyIGJsYW5rLWRlbGltaXRlZCB3b3JkcworICAqIHNlcGFyYXRlZCBieSBhIHNpbmdsZSBibGFuayBhbmQgd2l0aCBubyBsZWFkaW5nIG9yIHRyYWlsaW5nIGJsYW5rcywKKyAgKiBhcyBmb2xsb3dzOgorICAqIDxvbD4KKyAgKiA8bGk+CisgICogPGNvZGU+ZGlnaXRzPTwvY29kZT4sIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5CisgICogdGhlIHZhbHVlIG9mIHRoZSBkaWdpdHMgc2V0dGluZyBhcyBhIG51bWVyaWMgd29yZC4KKyAgKiA8bGk+CisgICogPGNvZGU+Zm9ybT08L2NvZGU+LCBpbW1lZGlhdGVseSBmb2xsb3dlZCBieQorICAqIHRoZSB2YWx1ZSBvZiB0aGUgZm9ybSBzZXR0aW5nIGFzIGFuIHVwcGVyY2FzZSB3b3JkCisgICogKG9uZSBvZiA8Y29kZT5TQ0lFTlRJRklDPC9jb2RlPiwgPGNvZGU+UExBSU48L2NvZGU+LCBvcgorICAqIDxjb2RlPkVOR0lORUVSSU5HPC9jb2RlPikuCisgICogPGxpPgorICAqIDxjb2RlPmxvc3REaWdpdHM9PC9jb2RlPiwgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkKKyAgKiB0aGUgdmFsdWUgb2YgdGhlIGxvc3REaWdpdHMgc2V0dGluZworICAqICg8Y29kZT4xPC9jb2RlPiBpZiBlbmFibGVkLCA8Y29kZT4wPC9jb2RlPiBpZiBkaXNhYmxlZCkuCisgICogPGxpPgorICAqIDxjb2RlPnJvdW5kaW5nTW9kZT08L2NvZGU+LCBpbW1lZGlhdGVseSBmb2xsb3dlZCBieQorICAqIHRoZSB2YWx1ZSBvZiB0aGUgcm91bmRpbmdNb2RlIHNldHRpbmcgYXMgYSB3b3JkLgorICAqIFRoaXMgd29yZCB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBuYW1lIG9mIHRoZSBjb3JyZXNwb25kaW5nIHB1YmxpYworICAqIGNvbnN0YW50LgorICAqIDwvb2w+CisgICogPHA+CisgICogRm9yIGV4YW1wbGU6CisgICogPGJyPjxjb2RlPgorICAqIGRpZ2l0cz05IGZvcm09U0NJRU5USUZJQyBsb3N0RGlnaXRzPTAgcm91bmRpbmdNb2RlPVJPVU5EX0hBTEZfVVAKKyAgKiA8L2NvZGU+CisgICogPHA+CisgICogQWRkaXRpb25hbCB3b3JkcyBtYXkgYmUgYXBwZW5kZWQgdG8gdGhlIHJlc3VsdCBvZgorICAqIDxjb2RlPnRvU3RyaW5nPC9jb2RlPiBpbiB0aGUgZnV0dXJlIGlmIG1vcmUgcHJvcGVydGllcyBhcmUgYWRkZWQKKyAgKiB0byB0aGUgY2xhc3MuCisgICoKKyAgKiBAcmV0dXJuIGEgPGNvZGU+U3RyaW5nPC9jb2RlPiByZXByZXNlbnRpbmcgdGhlIGNvbnRleHQgc2V0dGluZ3MuCisgICovCisgCisgcHVibGljIGphdmEubGFuZy5TdHJpbmcgdG9TdHJpbmcoKXsKKyAgamF2YS5sYW5nLlN0cmluZyBmb3Jtc3RyPW51bGw7CisgIGludCByPTA7CisgIGphdmEubGFuZy5TdHJpbmcgcm91bmR3b3JkPW51bGw7CisgIHsvKnNlbGVjdCovCisgIGlmIChmb3JtPT1TQ0lFTlRJRklDKQorICAgZm9ybXN0cj0iU0NJRU5USUZJQyI7CisgIGVsc2UgaWYgKGZvcm09PUVOR0lORUVSSU5HKQorICAgZm9ybXN0cj0iRU5HSU5FRVJJTkciOworICBlbHNleworICAgZm9ybXN0cj0iUExBSU4iOy8qIGZvcm09UExBSU4gKi8KKyAgfQorICB9CisgIHtpbnQgJDE9Uk9VTkRTLmxlbmd0aDtyPTA7cjpmb3IoOyQxPjA7JDEtLSxyKyspeworICAgaWYgKHJvdW5kaW5nTW9kZT09Uk9VTkRTW3JdKSAKKyAgICB7CisgICAgIHJvdW5kd29yZD1ST1VORFdPUkRTW3JdOworICAgICBicmVhayByOworICAgIH0KKyAgIH0KKyAgfS8qciovCisgIHJldHVybiAiZGlnaXRzPSIrZGlnaXRzKyIgIisiZm9ybT0iK2Zvcm1zdHIrIiAiKyJsb3N0RGlnaXRzPSIrKGxvc3REaWdpdHM/IjEiOiIwIikrIiAiKyJyb3VuZGluZ01vZGU9Iityb3VuZHdvcmQ7CisgIH0KKworIAorIC8qIDxzZ21sPiBUZXN0IHdoZXRoZXIgcm91bmQgaXMgdmFsaWQuIDwvc2dtbD4gKi8KKyAvLyBUaGlzIGNvdWxkIGJlIG1hZGUgc2hhcmVkIGZvciB1c2UgYnkgQmlnRGVjaW1hbCBmb3Igc2V0U2NhbGUuCisgCisgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc1ZhbGlkUm91bmQoaW50IHRlc3Ryb3VuZCl7CisgIGludCByPTA7CisgIHtpbnQgJDI9Uk9VTkRTLmxlbmd0aDtyPTA7cjpmb3IoOyQyPjA7JDItLSxyKyspeworICAgaWYgKHRlc3Ryb3VuZD09Uk9VTkRTW3JdKSAKKyAgICByZXR1cm4gdHJ1ZTsKKyAgIH0KKyAgfS8qciovCisgIHJldHVybiBmYWxzZTsKKyAgfQorIH0KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL21hdGgvcGFja2FnZS5odG1sIGIvc3JjL2NvbS9pYm0vbWF0aC9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2ZiNTU2MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL21hdGgvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorCis8aGVhZD48IS0tICBDb3B5cmlnaHQgKEMpIDIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisgIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS9tYXRoL0F0dGljL3BhY2thZ2UuaHRtbCx2ICQKKyAgJFJldmlzaW9uOiAxLjEgJAorICAkRGF0ZTogMjAwMC8wNC8wNSAxODowNToxMSAkCistLT4KKworPHRpdGxlPkM6XGN2c1xpY3U0alxzcmNcY29tXGlibVxkZW1vXHBhY2thZ2UuaHRtbDwvdGl0bGU+Cis8L2hlYWQ+CisKKzxib2R5IGJnY29sb3I9IndoaXRlIj4KKworPHA+SUJNIEJpZ0RlY2ltYWwgc3VwcG9ydC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9hd3R1aS9Bd3RNZW51QnVpbGRlci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvYXd0dWkvQXd0TWVudUJ1aWxkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lZGU5MTdiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvYXd0dWkvQXd0TWVudUJ1aWxkZXIuamF2YQpAQCAtMCwwICsxLDIzOCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogQXd0TWVudUJ1aWxkZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0MTo0OSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LmF3dHVpOworCitpbXBvcnQgamF2YS5hd3QuRnJhbWU7CitpbXBvcnQgamF2YS5hd3QuTWVudTsKK2ltcG9ydCBqYXZhLmF3dC5NZW51QmFyOworaW1wb3J0IGphdmEuYXd0LldpbmRvdzsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLk1UZXh0UGFuZWw7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5yZXNvdXJjZXMuRnJhbWVSZXNvdXJjZXM7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC4qOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLkRpYWxvZ0l0ZW0uRGlhbG9nRmFjdG9yeTsKKworLy8gVE8gRE86ICBEb24ndCBoYXJkLWNvZGUgbWVudSBjb25maWd1cmF0aW9ucy4gIEluc3RlYWQsIHNwZWNpZnkgdGhlbSB3aXRoCisvLyBzdHJpbmdzIHNvbWVob3cuICBUaGlzIGlzIGFuIGltcHJvdmVtZW50IG92ZXIgd2hhdCB3ZSBoYWQsIGFuZCBpdCdsbCBkbworLy8gZm9yIG5vdy4KKworLyoqCisgKiBBd3RNZW51QnVpbGRlciBjcmVhdGVzIGEgc2V0IG9mIEFXVCBtZW51cyBmb3IgaW50ZXJhY3RpbmcKKyAqIHdpdGggYW4gTVRleHRQYW5lbC4gIEZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGlzIGNsYXNzIG1heSBhbGxvdworICogY2xpZW50cyB0byBjb250cm9sIHRoZSBtZW51IGNvbnRlbnRzLgorICogQHNlZSBNVGV4dFBhbmVsCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBBd3RNZW51QnVpbGRlciBleHRlbmRzIE1lbnVCdWlsZGVyIHsKKyAgICAKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEF3dE1lbnVCdWlsZGVyIElOU1RBTkNFID0gbmV3IEF3dE1lbnVCdWlsZGVyKCk7CisgICAgCisgICAgLyoqCisgICAgICogSWQgZm9yIGFuIEVkaXQgbWVudS4gIFRoZSBFZGl0IG1lbnUgaGFzIHRoZSBmb2xsb3dpbmcgaXRlbXM6CisgICAgICogPHVsPgorICAgICAqIDxsaT48Yj5VbmRvPC9iPiAtIGludm9rZSB1bmRvKCkgb24gdGhlIE1UZXh0UGFuZWw8L2xpPgorICAgICAqIDxsaT48Yj5SZWRvPC9iPiAtIGludm9rZSByZWRvKCkgb24gdGhlIE1UZXh0UGFuZWw8L2xpPgorICAgICAqIDxsaT48Yj5DdXQ8L2I+IC0gaW52b2tlIGN1dCgpIG9uIHRoZSBNVGV4dFBhbmVsPC9saT4KKyAgICAgKiA8bGk+PGI+Q29weTwvYj4gLSBpbnZva2UgY29weSgpIG9uIHRoZSBNVGV4dFBhbmVsPC9saT4KKyAgICAgKiA8bGk+PGI+UGFzdGU8L2I+IC0gaW52b2tlIHBhc3RlKCkgb24gdGhlIE1UZXh0UGFuZWw8L2xpPgorICAgICAqIDxsaT48Yj5DbGVhcjwvYj4gLSBpbnZva2UgY2xlYXIoKSBvbiB0aGUgTVRleHRQYW5lbDwvbGk+CisgICAgICogPGxpPjxiPlNlbGVjdCBBbGw8L2I+IC0gaW52b2tlIHNlbGVjdEFsbCgpIG9uIHRoZSBNVGV4dFBhbmVsPC9saT4KKyAgICAgKiA8L3VsPgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVESVQgPSBNZW51QnVpbGRlci5FRElUOworICAgIC8qKgorICAgICAqIElkIGZvciB0aGUgcG9pbnQgc2l6ZXMgbWVudS4gIFRoZSBtZW51IGhhcyBpdGVtcyB0aGF0IHNldCB0aGUgc2l6ZSBvZiBhIGNoYXJhY3RlcgorICAgICAqIGluIGEgdHlwZWZhY2UuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0laRSA9IE1lbnVCdWlsZGVyLlNJWkU7CisgICAgLyoqCisgICAgICogSWQgZm9yIGEgU3R5bGUgbWVudS4gIFRoZSBTdHlsZSBtZW51IGhhcyB0aGUgZm9sbG93aW5nIGl0ZW1zOgorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+PGI+UGxhaW48L2I+IC0gcmVtb3ZlIDxjb2RlPldFSUdIVDwvY29kZT4sCisgICAgICogICAgICAgICAgICAgICAgICAgIDxjb2RlPlBPU1RVUkU8L2NvZGU+LAorICAgICAqICAgICAgICAgICAgICAgICAgICA8Y29kZT5VTkRFUkxJTkU8L2NvZGU+IGFuZAorICAgICAqICAgICAgICAgICAgICAgICAgICA8Y29kZT5TVFJJS0VUSFJPVUdIPC9jb2RlPiBhdHRyaWJ1dGVzIGZyb20gdGhlCisgICAgICogY3VycmVudCBzZWxlY3Rpb248L2xpPgorICAgICAqIDxsaT48Yj5Cb2xkPC9iPiAtIGFkZCA8Y29kZT57V0VJR0hULFdFSUdIVF9CT0xEfTwvY29kZT4gdG8KKyAgICAgKiB0aGUgY3VycmVudCBzZWxlY3Rpb248L2xpPgorICAgICAqIDxsaT48Yj5JdGFsaWM8L2I+IC0gYWRkIDxjb2RlPntQT1NUVVJFLFBPU1RVUkVfSVRBTElDfTwvY29kZT4gdG8KKyAgICAgKiB0aGUgY3VycmVudCBzZWxlY3Rpb248L2xpPgorICAgICAqIDxsaT48Yj5VbmRlcmxpbmU8L2I+IC0gYWRkIDxjb2RlPntVTkRFUkxJTkUsVU5ERVJMSU5FX09OfTwvY29kZT4gdG8KKyAgICAgKiB0aGUgY3VycmVudCBzZWxlY3Rpb248L2xpPgorICAgICAqIDxsaT48Yj5TdHJpa2V0aHJvdWdoPC9iPiAtIGFkZCA8Y29kZT57U1RSSUtFVEhST1VHSCxTVFJJS0VUSFJPVUdIX09OfTwvY29kZT4KKyAgICAgKiB0byB0aGUgY3VycmVudCBzZWxlY3Rpb248L2xpPgorICAgICAqIDxsaT48Yj5Gb250Li4uPC9iPiAtIGRpc3BsYXkgYSBkaWFsb2cgYWxsb3dpbmcgdGhlIHVzZXIgdG8KKyAgICAgKiBzZWxlY3QgYSB0eXBlZmFjZSAoZm9udCBmYW1pbHkpIGZvciB0aGUgY3VycmVudCBzZWxlY3Rpb248L2xpPgorICAgICAqIDxsaT48Yj5Gb3JlY29sb3IuLi48L2I+IC0gZGlzcGxheSBhIGRpYWxvZyBhbGxvd2luZyB0aGUgdXNlciB0bworICAgICAqIHNlbGVjdCBhIGZvcmVncm91bmQgY29sb3IgZm9yIHRoZSBjdXJyZW50IHNlbGVjdGlvbjwvbGk+CisgICAgICogPGxpPjxiPkJhY2tjb2xvci4uLjwvYj4gLSBkaXNwbGF5IGEgZGlhbG9nIGFsbG93aW5nIHRoZSB1c2VyIHRvCisgICAgICogc2VsZWN0IGEgYmFja2dyb3VuZCBjb2xvciBmb3IgdGhlIGN1cnJlbnQgc2VsZWN0aW9uPC9saT4KKyAgICAgKiA8L3VsPgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUWUxFID0gTWVudUJ1aWxkZXIuU1RZTEU7CisgICAgLyoqCisgICAgICogSWQgZm9yIGEgcGFyYWdyYXBoIGFsaWdubWVudCBtZW51LiAgVGhlIG1lbnUgaGFzIHRoZSBmb2xsb3dpbmcgaXRlbXM6CisgICAgICogPHVsPgorICAgICAqIDxsaT48Yj5MZWFkaW5nPC9iPiAtIGdpdmUgc2VsZWN0ZWQgcGFyYWdyYXBoKHMpIExFQURJTkcgZmx1c2g8L2xpPgorICAgICAqIDxsaT48Yj5DZW50ZXI8L2I+IC0gZ2l2ZSBzZWxlY3RlZCBwYXJhZ3JhcGgocykgQ0VOVEVSIGZsdXNoPC9saT4KKyAgICAgKiA8bGk+PGI+VHJhaWxpbmc8L2I+IC0gZ2l2ZSBzZWxlY3RlZCBwYXJhZ3JhcGgocykgVFJBSUxJTkcgZmx1c2g8L2xpPgorICAgICAqIDxsaT48Yj5KdXN0aWZpZWQ8L2I+IC0gZ2l2ZSBzZWxlY3RlZCBwYXJhZ3JhcGgocykgZnVsbCBqdXN0aWZpY2F0aW9uPC9saT4KKyAgICAgKiA8L3VsPgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMVVNIID0gTWVudUJ1aWxkZXIuRkxVU0g7CisgICAgLyoqCisgICAgICogSWQgZm9yIGEgbWVudSB0aGF0IHNldHMgdGhlIEtleVJlbWFwCisgICAgICogb24gYW4gTVRleHRQYW5lbC4gIFRoZSBtZW51IGhhcyB0aGUgZm9sbG93aW5nIGl0ZW1zOgorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+PGI+RGVmYXVsdDwvYj4gLSBzZXQgS2V5UmVtYXAgdG8gaWRlbnRpdHkgcmVtYXA8L2xpPgorICAgICAqIDxsaT48Yj5BcmFiaWM8L2I+IC0gc2V0IEtleVJlbWFwIHRvIEFyYWJpYyB0cmFuc2xpdGVyYXRpb248L2xpPgorICAgICAqIDxsaT48Yj5IZWJyZXc8L2I+IC0gc2V0IEtleVJlbWFwIHRvIEhlYnJldyB0cmFuc2xpdGVyYXRpb248L2xpPgorICAgICAqIDxsaT48Yj5Jc3JhZWwgTmlrdWQ8L2I+IC0gc2V0IEtleVJlbWFwIHRvIElzcmFlbCBOaWt1ZDwvbGk+CisgICAgICogPGxpPjxiPlRoYWkgS2V0bWFuZWU8L2I+IC0gc2V0IEtleVJlbWFwIHRvIFRoYWkgS2V0bWFuZWU8L2xpPgorICAgICAqIDwvdWw+CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgS0VZTUFQID0gTWVudUJ1aWxkZXIuS0VZTUFQOworICAgIC8qKgorICAgICAqIElkIGZvciBhIG1lbnUgdGhhdCBzZXRzCisgICAgICogdGhlIHByaW1hcnkgcnVuIGRpcmVjdGlvbiBmb3IgYSBwYXJhZ3JhcGguICBSdW4gZGlyZWN0aW9uIGNhbiBiZSBsZWZ0LXRvLXJpZ2h0LAorICAgICAqIHJpZ2h0LXRvLWxlZnQsIG9yIGNhbiB1c2UgdGhlIGRlZmF1bHQgcnVuIGRpcmVjdGlvbiBmcm9tIHRoZSBVbmljb2RlIGJpZGkgYWxnb3JpdGhtLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJJREkgPSBNZW51QnVpbGRlci5CSURJOworICAgIC8qKgorICAgICAqIElkIGZvciBhIG1lbnUgd2l0aCBhbiA8Yj5BYm91dDwvYj4gaXRlbS4gIFdoZW4gc2VsZWN0ZWQsIAorICAgICAqIHRoZSBpdGVtIGRpc3BsYXlzIGEgRnJhbWUgY29udGFpbmluZyBzb21lCisgICAgICogc2VsZi1wcm9tb3Rpb25hbCB0ZXh0LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFCT1VUID0gTWVudUJ1aWxkZXIuQUJPVVQ7CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIGFuIGluc3RhbmNlIG9mIEF3dE1lbnVCdWlsZGVyLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgQXd0TWVudUJ1aWxkZXIgZ2V0SW5zdGFuY2UoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gSU5TVEFOQ0U7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgTWVudUJhciBmTWVudUJhcjsKKyAgICAKKyAgICBwcml2YXRlIEF3dE1lbnVCdWlsZGVyKCkgeworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBBZGQgYSBzdGFuZGFyZCBzZXQgb2YgbWVudXMgdG8gdGhlIGdpdmVuIG1lbnUgYmFyLiAgVGhlIG1lbnVzIAorICAgICAqIHdpbGwgaW50ZXJhY3Qgd2l0aCB0aGUgZ2l2ZW4gTVRleHRQYW5lbC4KKyAgICAgKiBAcGFyYW0gbWVudUJhciB0aGUgTWVudUJhciB0byB3aGljaCBtZW51cyBhcmUgYWRkZWQKKyAgICAgKiBAcGFyYW0gdGV4dFBhbmVsIHRoZSBNVGV4dFBhbmVsIHdpdGggd2hpY2ggdGhlIG1lbnVzIGludGVyYWN0CisgICAgICogQHBhcmFtIGZyYW1lIGEgRnJhbWUgdG8gdXNlIGFzIHRoZSBwYXJlbnQgb2YgYW55IGRpYWxvZ3MgY3JlYXRlZCBieSBhIAorICAgICAqICAgYSBtZW51IGl0ZW0uICBJZiBudWxsLCBtZW51IGl0ZW1zIHdoaWNoIGNyZWF0ZSBkaWFsb2dzIHdpbGwgYmUgb21pdHRlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjcmVhdGVNZW51cyhNZW51QmFyIG1lbnVCYXIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1UZXh0UGFuZWwgdGV4dFBhbmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lIGZyYW1lKSB7CisgICAgICAgIAorICAgICAgICBjcmVhdGVNZW51cyhtZW51QmFyLCB0ZXh0UGFuZWwsIGZyYW1lLCBkZWZhdWx0TWVudXMpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBBZGQgYSBzZXQgb2YgbWVudXMgdG8gdGhlIGdpdmVuIG1lbnUgYmFyLiAgVGhlIG1lbnVzIAorICAgICAqIHdpbGwgaW50ZXJhY3Qgd2l0aCB0aGUgZ2l2ZW4gTVRleHRQYW5lbC4KKyAgICAgKiBAcGFyYW0gbWVudUJhciB0aGUgTWVudUJhciB0byB3aGljaCBtZW51cyBhcmUgYWRkZWQKKyAgICAgKiBAcGFyYW0gdGV4dFBhbmVsIHRoZSBNVGV4dFBhbmVsIHdpdGggd2hpY2ggdGhlIG1lbnVzIGludGVyYWN0CisgICAgICogQHBhcmFtIGZyYW1lIGEgRnJhbWUgdG8gdXNlIGFzIHRoZSBwYXJlbnQgb2YgYW55IGRpYWxvZ3MgY3JlYXRlZCBieSBhIAorICAgICAqICAgYSBtZW51IGl0ZW0uICBJZiBudWxsLCBtZW51IGl0ZW1zIHdoaWNoIGNyZWF0ZSBkaWFsb2dzIHdpbGwgYmUgb21pdHRlZC4KKyAgICAgKiBAcGFyYW0gbWVudXMgYW4gYXJyYXkgb2YgaW50ZWdlciBtZW51IGlkJ3MuICBFYWNoIGVsZW1lbnQgb2YgdGhlCisgICAgICogICBhcnJheSBtdXN0IGJlIG9uZSBvZiB0aGlzIGNsYXNzJ3MgbWVudSBpZCBjb25zdGFudHMuICBJZiBudWxsLAorICAgICAqICAgdGhlIGRlZmF1bHQgbWVudXMgYXJlIGNyZWF0ZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgY3JlYXRlTWVudXMoTWVudUJhciBtZW51QmFyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVGV4dFBhbmVsIHRleHRQYW5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZSBmcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRbXSBtZW51cykgeworICAgICAgICAKKyAgICAgICAgaWYgKG1lbnVzID09IG51bGwpIHsKKyAgICAgICAgICAgIG1lbnVzID0gZGVmYXVsdE1lbnVzOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzeW5jaHJvbml6ZWQgKE1JdGVtLkxPQ0spIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZk1lbnVCYXIgPSBtZW51QmFyOworICAgICAgICAgICAgZG9DcmVhdGVNZW51cyh0ZXh0UGFuZWwsIGZyYW1lLCBtZW51cyk7CisgICAgICAgICAgICBmTWVudUJhciA9IG51bGw7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlQWRkTWVudShTdHJpbmcga2V5KSB7CisgICAgICAgIAorICAgICAgICBNZW51IG1lbnUgPSBuZXcgTWVudShSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKGtleSkpOworICAgICAgICBmTWVudUJhci5hZGQobWVudSk7CisgICAgICAgIE1JdGVtLnNldEl0ZW1GYWN0b3J5KG5ldyBBd3RNZW51RmFjdG9yeShtZW51KSk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIERpYWxvZ0ZhY3RvcnkgY3JlYXRlT2JqZWN0RGlhbG9nRmFjdG9yeShmaW5hbCBTdHJpbmcgZGlhbG9nVGl0bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgZGlhbG9nTWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIE9iamVjdCBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBib29sZWFuIGNoYXJhY3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZ1tdIG5hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgT2JqZWN0W10gdmFsdWVzKSB7CisgICAgICAgIAorICAgICAgICBmaW5hbCBGcmFtZSBkaWFsb2dQYXJlbnQgPSBmRGlhbG9nUGFyZW50OworCisgICAgICAgIHJldHVybiBuZXcgRGlhbG9nRmFjdG9yeSgpIHsgICAgCisgICAgICAgICAgICBwdWJsaWMgV2luZG93IGNyZWF0ZURpYWxvZyhNVGV4dFBhbmVsIHRleHRQYW5lbCkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgT2JqZWN0RGlhbG9nKGRpYWxvZ1BhcmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFsb2dUaXRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFsb2dNZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRleHRQYW5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCBEaWFsb2dGYWN0b3J5IGNyZWF0ZU51bWJlckRpYWxvZ0ZhY3RvcnkoZmluYWwgU3RyaW5nIGRpYWxvZ1RpdGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIGRpYWxvZ01lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBPYmplY3Qga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBjaGFyYWN0ZXIpIHsKKyAgICAgICAgCisgICAgICAgIGZpbmFsIEZyYW1lIGRpYWxvZ1BhcmVudCA9IGZEaWFsb2dQYXJlbnQ7CisgICAgICAgICAgICAKKyAgICAgICAgcmV0dXJuIG5ldyBEaWFsb2dGYWN0b3J5KCkgeworICAgICAgICAgICAgcHVibGljIFdpbmRvdyBjcmVhdGVEaWFsb2coTVRleHRQYW5lbCB0ZXh0UGFuZWwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE51bWJlckRpYWxvZyhkaWFsb2dQYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nVGl0bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nTWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0UGFuZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9ICAgIAorICAgIAorICAgIHByb3RlY3RlZCBEaWFsb2dGYWN0b3J5IGNyZWF0ZUFib3V0RGlhbG9nRmFjdG9yeSgpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBuZXcgRGlhbG9nRmFjdG9yeSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyBXaW5kb3cgY3JlYXRlRGlhbG9nKE1UZXh0UGFuZWwgdGV4dFBhbmVsKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHRpdGxlID0gUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5BQk9VVF9USVRMRSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNZXNzYWdlRGlhbG9nKHRpdGxlLCBBYm91dFRleHQuZ2V0QWJvdXRUZXh0KCkpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9hd3R1aS9Bd3RNZW51RmFjdG9yeS5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvYXd0dWkvQXd0TWVudUZhY3RvcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45ZTI2MTc5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvYXd0dWkvQXd0TWVudUZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogQXd0TWVudUZhY3RvcnkuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMC8wNC8yMCAxOToyOTowOCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LmF3dHVpOworCitpbXBvcnQgamF2YS5hd3QuQ2hlY2tib3hNZW51SXRlbTsKK2ltcG9ydCBqYXZhLmF3dC5NZW51OworaW1wb3J0IGphdmEuYXd0Lk1lbnVJdGVtOworaW1wb3J0IGphdmEuYXd0Lk1lbnVTaG9ydGN1dDsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkxpc3RlbmVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50Lkl0ZW1FdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5JdGVtTGlzdGVuZXI7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5yZXNvdXJjZXMuTWVudURhdGE7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwuTUl0ZW07CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwuTUl0ZW0uSXRlbUZhY3Rvcnk7CisKK2ZpbmFsIGNsYXNzIEF3dE1lbnVGYWN0b3J5IGltcGxlbWVudHMgSXRlbUZhY3RvcnkgeworICAgICAgICAKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgZmluYWwgY2xhc3MgQXd0TUl0ZW0gZXh0ZW5kcyBNSXRlbSB7CisgICAgICAgIAorICAgICAgICBwcml2YXRlIE1lbnVJdGVtIGZJdGVtOworICAgICAgICAKKyAgICAgICAgQXd0TUl0ZW0oTWVudUl0ZW0gaXRlbSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBmSXRlbSA9IGl0ZW07CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIENoZWNrYm94TWVudUl0ZW0gY2hJdGVtID0gKENoZWNrYm94TWVudUl0ZW0pIGZJdGVtOworICAgICAgICAgICAgICAgIGNoSXRlbS5hZGRJdGVtTGlzdGVuZXIobmV3IEl0ZW1MaXN0ZW5lcigpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgaXRlbVN0YXRlQ2hhbmdlZChJdGVtRXZlbnQgZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0ZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2goQ2xhc3NDYXN0RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBpdGVtLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBBY3Rpb25MaXN0ZW5lcigpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGV2dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0ZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBBY2sgLSBob3cgZG8geW91IGRvIHRoaXMgZnJvbSBpbm5lciBjbGFzc2VzPz8KKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlU2VsZWN0ZWQoKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN1cGVyLmhhbmRsZVNlbGVjdGVkKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldEVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZJdGVtLnNldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyB2b2lkIHNldFN0YXRlKGJvb2xlYW4gY2hlY2tlZCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIENoZWNrYm94TWVudUl0ZW0gaXRlbSA9IChDaGVja2JveE1lbnVJdGVtKSBmSXRlbTsKKyAgICAgICAgICAgICAgICBpdGVtLnNldFN0YXRlKGNoZWNrZWQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2goQ2xhc3NDYXN0RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBwZXJmb3JtIHNldENoZWNrZWQgb24gbm9uLWNoZWNrYm94IGl0ZW0iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIE1lbnUgZk1lbnU7CisgICAgICAgIAorICAgIEF3dE1lbnVGYWN0b3J5KE1lbnUgbWVudSkgeworICAgICAgICAgICAgCisgICAgICAgIGZNZW51ID0gbWVudTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBNSXRlbSBoYW5kbGVDcmVhdGUoTWVudUl0ZW0gaXRlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW51RGF0YSBtZW51RGF0YSkgeworCisgICAgICAgIGlmIChtZW51RGF0YS5oYXNTaG9ydGN1dCgpKSB7CisgICAgICAgICAgICBpdGVtLnNldFNob3J0Y3V0KG5ldyBNZW51U2hvcnRjdXQobWVudURhdGEuZ2V0U2hvcnRjdXRDaGFyKCkpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZk1lbnUuYWRkKGl0ZW0pOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIG5ldyBBd3RNSXRlbShpdGVtKTsKKyAgICB9CisgICAgICAgIAorICAgIHB1YmxpYyBNSXRlbSBjcmVhdGVJdGVtKE1lbnVEYXRhIG1lbnVEYXRhKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gaGFuZGxlQ3JlYXRlKG5ldyBNZW51SXRlbShtZW51RGF0YS5nZXROYW1lKCkpLCBtZW51RGF0YSk7CisgICAgfSAgICAgICAgCisKKyAgICBwdWJsaWMgTUl0ZW0gY3JlYXRlQ2hlY2tib3hJdGVtKE1lbnVEYXRhIG1lbnVEYXRhKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gaGFuZGxlQ3JlYXRlKG5ldyBDaGVja2JveE1lbnVJdGVtKG1lbnVEYXRhLmdldE5hbWUoKSksIG1lbnVEYXRhKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgY3JlYXRlU2VwYXJhdG9yKCkgeworICAgICAgICAKKyAgICAgICAgZk1lbnUuYWRkKG5ldyBNZW51SXRlbSgiLSIpKTsKKyAgICB9Cit9CisgICAgCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9hd3R1aS9NVGFiUnVsZXJDb21wb25lbnQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2F3dHVpL01UYWJSdWxlckNvbXBvbmVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQ2YjQ3YmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9hd3R1aS9NVGFiUnVsZXJDb21wb25lbnQuamF2YQpAQCAtMCwwICsxLDkyIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBNVGFiUnVsZXJDb21wb25lbnQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0MTo0OSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LmF3dHVpOworCitpbXBvcnQgamF2YS5hd3QuQ29sb3I7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1UYWJSdWxlcjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworCisvKioKKyAqIE1UYWJSdWxlckNvbXBvbmVudCBpcyBpbXBsZW1lbnRlZCBieSBjb21wb25lbnRzIHdoaWNoIHByb3ZpZGUgYSB0YWItcnVsZXIKKyAqIGludGVyZmFjZSBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBhbiBNVGV4dFBhbmVsLgorICogPHA+CisgKiBVc2VycyBpbnRlcmFjdCB3aXRoIE1UYWJSdWxlckNvbXBvbmVudCBpbXBsZW1lbnRhdGlvbnMgYXMgZm9sbG93czoKKyAqIDx1bD4KKyAqIDxsaT5UaGUgbGVhZGluZyBtYXJnaW4gY2FuIGJlIHNldCBieSBkcmFnZ2luZyB0aGUgYm90dG9tIGhhbGYKKyAqIG9mIHRoZSBsZWZ0bW9zdCB0cmlhbmdsZS4gIFRoZSBmaXJzdC1saW5lIGluZGVudCB3aWxsICJzdGljayIgd2l0aAorICogdGhlIGxlYWRpbmcgbWFyZ2luLjwvbGk+CisgKiA8bGk+VGhlIGZpcnN0LWxpbmUgaW5kZW50IGNhbiBiZSBzZXQgYnkgZHJhZ2dpbmcgdGhlIHRvcCBoYWxmIG9mIHRoZQorICogbGVmdG1vc3QgdHJpYW5nbGUuICBUaGUgZmlyc3QtbGluZSBpbmRlbnQgYXBwbGllcyB0byB0aGUgZmlyc3QgbGluZSBvZgorICogYSBwYXJhZ3JhcGguPC9saT4KKyAqIDxsaT5UaGUgdHJhaWxpbmcgbWFyZ2luIGNhbiBiZSBzZXQgYnkgZHJhZ2dpbmcgdGhlIHJpZ2h0bW9zdCB0cmlhbmdsZS48L2xpPgorICogPGxpPlRhYnMgY2FuIGJlIGFkZGVkIHRvIHRoZSBydWxlciBieSBjbGlja2luZyB0aGUgbW91c2Ugb24gdGhlIHJ1bGVyIHdpdGggdGhlCisgKiBjb250cm9sIGtleSBwcmVzc2VkLiAgRm91ciBraW5kcyBvZiB0YWJzIGFyZSBwcm92aWRlZDogIGxlYWRpbmcsIHRyYWlsaW5nLCBjZW50ZXIsCisgKiBhbmQgZGVjaW1hbC4gIFRoZSB0eXBlIG9mIGEgdGFiIGNhbiBiZSBjaGFuZ2VkIGJ5IGRvdWJsZS1jbGlja2luZyB0aGUgdGFiLjwvbGk+CisgKiA8bGk+VGFicyBjYW4gYmUgcmVwb3NpdGlvbmVkIGJ5IGRyYWdnaW5nIHRoZW0gd2l0aCB0aGUgbW91c2UuPC9saT4KKyAqIDwvdWw+CisgKiA8cD4KKyAqIE1UYWJSdWxlckNvbXBvbmVudCdzIGFwcGVhcmFuY2Ugd2lsbCByZWZsZWN0IHRoZSBwYXJhZ3JhcGggc3R5bGVzIGluIHRoZQorICogZmlyc3Qgc2VsZWN0ZWQgcGFyYWdyYXBoLiAgU3R5bGUgY2hhbmdlcyBwZXJmb3JtZWQgd2l0aCBhbiAKKyAqIE1UYWJSdWxlckNvbXBvbmVudCB3aWxsIGFwcGx5IHRvIGFsbCBzZWxlY3RlZCBwYXJhZ3JhcGhzLgorICovCitwdWJsaWMgaW50ZXJmYWNlIE1UYWJSdWxlckNvbXBvbmVudCB7CisgICAgCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKworICAgIC8qKgorICAgICAqIExpc3RlbiB0byB0aGUgZ2l2ZW4gTVRleHRQYW5lbCBhbmQgcmVmbGVjdCBpdHMgY2hhbmdlcywKKyAgICAgKiBhbmQgdXBkYXRlIGl0cyBwYXJhZ3JhcGggc3R5bGVzIHdoZW4gVGFiUnVsZXIgaXMKKyAgICAgKiBtYW5pcHVsYXRlZC4KKyAgICAgKiBAcGFyYW0gdGV4dFBhbmVsIHRoZSBNVGV4dFBhbmVsIHRvIGxpc3RlbiB0bworICAgICAqLworICAgIHB1YmxpYyB2b2lkIGxpc3RlblRvVGV4dFBhbmVsKE1UZXh0UGFuZWwgdGV4dFBhbmVsKTsKKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGlzIFRhYlJ1bGVyLgorICAgICAqIEByZXR1cm4gdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhpcyBUYWJSdWxlcgorICAgICAqLworICAgIHB1YmxpYyBDb2xvciBnZXRCYWNrQ29sb3IoKTsKKworICAgIC8qKgorICAgICAqIFNldCB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGlzIFRhYlJ1bGVyLgorICAgICAqIEBwYXJhbSBiYWNrQ29sb3IgdGhlIG5ldyBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoaXMgVGFiUnVsZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRCYWNrQ29sb3IoQ29sb3IgYmFja0NvbG9yKTsKKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgTVRhYlJ1bGVyIHJlcHJlc2VudGVkIGJ5IHRoaXMgVGFiUnVsZXIuCisgICAgICogQHJldHVybiB0aGUgTVRhYlJ1bGVyIHJlcHJlc2VudGVkIGJ5IHRoaXMgVGFiUnVsZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgTVRhYlJ1bGVyIGdldFJ1bGVyKCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGxlYWRpbmcgbWFyZ2luIG9mIHRoaXMgVGFiUnVsZXIuCisgICAgICogQHJldHVybiB0aGUgbGVhZGluZyBtYXJnaW4gb2YgdGhpcyBUYWJSdWxlcgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0TGVhZGluZ01hcmdpbigpOworCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBmaXJzdCBsaW5lIGluZGVudCBvZiB0aGlzIFRhYlJ1bGVyLgorICAgICAqIEByZXR1cm4gdGhlIGZpcnN0IGxpbmUgaW5kZW50IG9mIHRoaXMgVGFiUnVsZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEZpcnN0TGluZUluZGVudCgpOworCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSB0cmFpbGluZyBtYXJnaW4gb2YgdGhpcyBUYWJSdWxlci4KKyAgICAgKiBAcmV0dXJuIHRoZSB0cmFpbGluZyBtYXJnaW4gb2YgdGhpcyBUYWJSdWxlcgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0VHJhaWxpbmdNYXJnaW4oKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2F3dHVpL01lc3NhZ2VEaWFsb2cuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2F3dHVpL01lc3NhZ2VEaWFsb2cuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40N2M5MzhkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvYXd0dWkvTWVzc2FnZURpYWxvZy5qYXZhCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IE1lc3NhZ2VEaWFsb2cuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0MTo0OSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LmF3dHVpOworCitpbXBvcnQgamF2YS5hd3QuQ29sb3I7CitpbXBvcnQgamF2YS5hd3QuRnJhbWU7CitpbXBvcnQgamF2YS5hd3QuQ2FyZExheW91dDsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0FkYXB0ZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93RXZlbnQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxTZXR0aW5nczsKKworLyoqCisgKiBNZXNzYWdlRGlhbG9nIGlzIGEgc2ltcGxlIEZyYW1lIHdoaWNoIGRpc3BsYXlzIGEgc3R5bGVkCisgKiB0ZXh0IG1lc3NhZ2UgaW4gYSBUZXh0UGFuZWwuCisgKiBUaGUgdGV4dCBpbiB0aGUgbWVzc2FnZSBpcyBub3Qgc2VsZWN0YWJsZSBvciBlZGl0YWJsZS4KKyAqIEBzZWUgTUNvbnN0VGV4dAorICogQHNlZSBUZXh0UGFuZWwKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIE1lc3NhZ2VEaWFsb2cgZXh0ZW5kcyBGcmFtZSB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIC8qKgorICAgICogQ3JlYXRlIGEgbmV3IE1lc3NhZ2VEaWFsb2cuCisgICAgKiBAcGFyYW0gdGl0bGUgdGhlIGRpYWxvZydzIHRpdGxlCisgICAgKiBAcGFyYW0gbWVzc2FnZSB0aGUgdGV4dCB3aGljaCB3aWxsIGFwcGVhciBpbiB0aGUgZGlhbG9nCisgICAgKi8KKyAgICBwdWJsaWMgTWVzc2FnZURpYWxvZyhTdHJpbmcgdGl0bGUsIE1Db25zdFRleHQgbWVzc2FnZSkKKyAgICB7CisgICAgICAgIHN1cGVyKHRpdGxlKTsKKworICAgICAgICBzZXRMYXlvdXQobmV3IENhcmRMYXlvdXQoKSk7CisgICAgICAgIFRleHRQYW5lbFNldHRpbmdzIHNldHRpbmdzID0gVGV4dFBhbmVsLmdldERlZmF1bHRTZXR0aW5ncygpOworICAgICAgICBzZXR0aW5ncy5zZXRTY3JvbGxhYmxlKGZhbHNlKTsKKyAgICAgICAgc2V0dGluZ3Muc2V0U2VsZWN0YWJsZShmYWxzZSk7CisgICAgICAgIFRleHRQYW5lbCBwYW5lbCA9IG5ldyBUZXh0UGFuZWwoc2V0dGluZ3MsIG1lc3NhZ2UsIG51bGwpOworCisgICAgICAgIHBhbmVsLnNldEJhY2tncm91bmQoQ29sb3IuYmxhY2spOworICAgICAgICBhZGQoIkNlbnRlciIsIHBhbmVsKTsKKworICAgICAgICBhZGRXaW5kb3dMaXN0ZW5lcihuZXcgV2luZG93QWRhcHRlcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHdpbmRvd0Nsb3NpbmcoV2luZG93RXZlbnQgZSkgeworICAgICAgICAgICAgICAgIHNldFZpc2libGUoZmFsc2UpOworICAgICAgICAgICAgICAgIGRpc3Bvc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgc2V0U2l6ZSg0NTAsMzIwKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9hd3R1aS9OdW1iZXJEaWFsb2cuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2F3dHVpL051bWJlckRpYWxvZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmYzYzk3NmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9hd3R1aS9OdW1iZXJEaWFsb2cuamF2YQpAQCAtMCwwICsxLDE1NSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogTnVtYmVyRGlhbG9nLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDE6NDkgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5hd3R1aTsKKworaW1wb3J0IGphdmEuYXd0LkZsb3dMYXlvdXQ7CitpbXBvcnQgamF2YS5hd3QuRGlhbG9nOworaW1wb3J0IGphdmEuYXd0LlRleHRGaWVsZDsKK2ltcG9ydCBqYXZhLmF3dC5CdXR0b247CitpbXBvcnQgamF2YS5hd3QuRnJhbWU7CitpbXBvcnQgamF2YS5hd3QuUGFuZWw7CitpbXBvcnQgamF2YS5hd3QuTGFiZWw7CisKK2ltcG9ydCBqYXZhLnRleHQuTnVtYmVyRm9ybWF0OworaW1wb3J0IGphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbjsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkxpc3RlbmVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0V2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0FkYXB0ZXI7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5yZXNvdXJjZXMuRnJhbWVSZXNvdXJjZXM7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwuTWVudUl0ZW1TZXQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwuUmVzb3VyY2VVdGlsczsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZU1vZGlmaWVyOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLk1UZXh0UGFuZWw7CisKKy8qKgorKiBTaW1wbGUgZGlhbG9nIHdoaWNoIGdldHMgYSBudW1iZXIsIGFuZCBzZW5kcyBhbiBhcHByb3ByaWF0ZSBjb21tYW5kCisqLworZmluYWwgY2xhc3MgTnVtYmVyRGlhbG9nIGV4dGVuZHMgRGlhbG9nIGltcGxlbWVudHMgQWN0aW9uTGlzdGVuZXIKK3sKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgTVRleHRQYW5lbCBmVGV4dFBhbmVsOworICAgIHByaXZhdGUgVGV4dEZpZWxkIGZJbnB1dCA9IG51bGw7CisgICAgcHJpdmF0ZSBCdXR0b24gZk9LQnV0dG9uID0gbnVsbDsKKyAgICBwcml2YXRlIEJ1dHRvbiBmQ2FuY2VsQnV0dG9uID0gbnVsbDsKKyAgICBwcml2YXRlIGJvb2xlYW4gZkNoYXJhY3RlcjsKKyAgICBwcml2YXRlIE9iamVjdCBmS2V5OworICAgIHByaXZhdGUgZmxvYXQgZk11bHRpcGxpZXI7IAorCisgICAgLyoqCisgICAgICogQHBhcmFtIG11bHRpcGxpZXIgdGhlIGZhY3RvciBieSB3aGljaCB0byBtdWx0aXBseSB0aGUgdXNlcidzCisgICAgICogICAgICAgIHNlbGVjdGlvbiBiZWZvcmUgY3JlYXRpbmcgdGhlIGF0dHJpYnV0ZSB2YWx1ZS4gICBUaGlzCisgICAgICogICAgICAgIGlzIHVzZWZ1bCBmb3Igc3Vic2NyaXB0aW5nLgorICAgICAqLworICAgIE51bWJlckRpYWxvZyhGcmFtZSBwYXJlbnQsCisgICAgICAgICAgICAgICAgIFN0cmluZyB0aXRsZSwKKyAgICAgICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgIE1UZXh0UGFuZWwgdGV4dFBhbmVsLAorICAgICAgICAgICAgICAgICBPYmplY3Qga2V5LAorICAgICAgICAgICAgICAgICBib29sZWFuIGNoYXJhY3RlciwKKyAgICAgICAgICAgICAgICAgZmxvYXQgbXVsdGlwbGllcikgeworCisgICAgICAgIHN1cGVyKHBhcmVudCwgdGl0bGUsIGZhbHNlKTsKKyAgICAgICAgZlRleHRQYW5lbCA9IHRleHRQYW5lbDsKKyAgICAgICAgZktleSA9IGtleTsKKyAgICAgICAgZkNoYXJhY3RlciA9IGNoYXJhY3RlcjsKKyAgICAgICAgZk11bHRpcGxpZXIgPSBtdWx0aXBsaWVyOworICAgICAgICBzZXRMYXlvdXQobmV3IGphdmEuYXd0LkdyaWRMYXlvdXQoMiwxKSk7CisKKyAgICAgICAgUGFuZWwgcGFuZWwgPSBuZXcgUGFuZWwoKTsKKyAgICAgICAgcGFuZWwuc2V0TGF5b3V0KG5ldyBGbG93TGF5b3V0KEZsb3dMYXlvdXQuQ0VOVEVSLCAxMCwgMTUpKTsKKyAgICAgICAgZklucHV0ID0gbmV3IFRleHRGaWVsZCg1KTsKKyAgICAgICAgcGFuZWwuYWRkKG5ldyBMYWJlbChtZXNzYWdlKSk7CisgICAgICAgIHBhbmVsLmFkZChmSW5wdXQpOworICAgICAgICBhZGQoIkNlbnRlciIsIHBhbmVsKTsKKworICAgICAgICBmQ2FuY2VsQnV0dG9uID0gbmV3IEJ1dHRvbihSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLkNBTkNFTCkpOworICAgICAgICBmT0tCdXR0b24gPSBuZXcgQnV0dG9uKFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VTdHJpbmcoRnJhbWVSZXNvdXJjZXMuT0spKTsKKyAgICAgICAgUGFuZWwgcCA9IG5ldyBQYW5lbCgpOworICAgICAgICBwLnNldExheW91dChuZXcgRmxvd0xheW91dChGbG93TGF5b3V0LkNFTlRFUiwgNSwgNSkpOworICAgICAgICBwLmFkZChmQ2FuY2VsQnV0dG9uKTsKKyAgICAgICAgcC5hZGQoZk9LQnV0dG9uKTsKKyAgICAgICAgYWRkKCJTb3V0aCIsIHApOworCisgICAgICAgIHBhY2soKTsKKworICAgICAgICBhZGRXaW5kb3dMaXN0ZW5lcihuZXcgV2luZG93QWRhcHRlcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHdpbmRvd0Nsb3NpbmcoV2luZG93RXZlbnQgZSkgeworICAgICAgICAgICAgICAgIGNsb3NlV2luZG93KGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIAorICAgICAgICBmT0tCdXR0b24uYWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7CisgICAgICAgIGZDYW5jZWxCdXR0b24uYWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGNsb3NlV2luZG93KGJvb2xlYW4gc2VuZEFjdGlvbikgeworCisgICAgICAgIHNldFZpc2libGUoZmFsc2UpOworCisgICAgICAgIGludCBudW0gPSAwOworICAgICAgICBpZiAoc2VuZEFjdGlvbikgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgdGV4dCA9IGZJbnB1dC5nZXRUZXh0KCk7CisgICAgICAgICAgICAgICAgbnVtID0gTnVtYmVyRm9ybWF0LmdldEluc3RhbmNlKCkucGFyc2UodGV4dCkuaW50VmFsdWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoIChQYXJzZUV4Y2VwdGlvbiBleGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICBzZW5kQWN0aW9uID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2VuZEFjdGlvbikgeworICAgICAgICAgICAgc2VuZEFjdGlvbihudW0pOworICAgICAgICB9CisKKyAgICAgICAgZGlzcG9zZSgpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisKKyAgICAgICAgT2JqZWN0IHNvdXJjZSA9IGUuZ2V0U291cmNlKCk7CisKKyAgICAgICAgaWYgKHNvdXJjZSA9PSBmT0tCdXR0b24pIHsKKyAgICAgICAgICAgIGNsb3NlV2luZG93KHRydWUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNvdXJjZSA9PSBmQ2FuY2VsQnV0dG9uKSB7CisgICAgICAgICAgICBjbG9zZVdpbmRvdyhmYWxzZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIEFjdGlvbkV2ZW50ISIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgKiBIYW5kbGUgdGhlIHVzZXIgaW5wdXQKKyAgICAqIEBwYXJhbSB0aGUgbnVtYmVyIHRoZSB1c2VyIHR5cGVkIGluCisgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgc2VuZEFjdGlvbihpbnQgbnVtYmVyKSB7CisgICAgICAgIGZsb2F0IG51bSA9IG51bWJlciAqIGZNdWx0aXBsaWVyOworICAgICAgICBTdHlsZU1vZGlmaWVyIG1vZGlmaWVyID0gU3R5bGVNb2RpZmllci5jcmVhdGVBZGRNb2RpZmllcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZLZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRmxvYXQobnVtKSk7CisgICAgICAgIGlmIChmQ2hhcmFjdGVyID09IE1lbnVJdGVtU2V0LkNIQVJBQ1RFUikgeworICAgICAgICAgICAgZlRleHRQYW5lbC5tb2RpZnlDaGFyYWN0ZXJTdHlsZU9uU2VsZWN0aW9uKG1vZGlmaWVyKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZUZXh0UGFuZWwubW9kaWZ5UGFyYWdyYXBoU3R5bGVPblNlbGVjdGlvbihtb2RpZmllcik7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9hd3R1aS9PYmplY3REaWFsb2cuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2F3dHVpL09iamVjdERpYWxvZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmUzYzZhOTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9hd3R1aS9PYmplY3REaWFsb2cuamF2YQpAQCAtMCwwICsxLDE3MCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogT2JqZWN0RGlhbG9nLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDE6NDkgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5hd3R1aTsKKworaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7CisKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlU2V0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZU1vZGlmaWVyOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLk1UZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwuTWVudUl0ZW1TZXQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5yZXNvdXJjZXMuRnJhbWVSZXNvdXJjZXM7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwuUmVzb3VyY2VVdGlsczsKKworaW1wb3J0IGphdmEuYXd0LkRpYWxvZzsKK2ltcG9ydCBqYXZhLmF3dC5GcmFtZTsKK2ltcG9ydCBqYXZhLmF3dC5CdXR0b247CitpbXBvcnQgamF2YS5hd3QuQ2hvaWNlOworaW1wb3J0IGphdmEuYXd0LkxhYmVsOworaW1wb3J0IGphdmEuYXd0LkJvcmRlckxheW91dDsKK2ltcG9ydCBqYXZhLmF3dC5GbG93TGF5b3V0OworaW1wb3J0IGphdmEuYXd0LlBhbmVsOworaW1wb3J0IGphdmEuYXd0LkdyaWRMYXlvdXQ7CisKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25FdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25MaXN0ZW5lcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dFdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dBZGFwdGVyOworCisvKioKKyogU2ltcGxlIGRpYWxvZyB3aGljaCBnZXRzIGEgY29sb3IKKyovCitmaW5hbCBjbGFzcyBPYmplY3REaWFsb2cgZXh0ZW5kcyBEaWFsb2cgaW1wbGVtZW50cyBBY3Rpb25MaXN0ZW5lcgoreworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisKKyAgICBwcml2YXRlIGZpbmFsIE1UZXh0UGFuZWwgZlRleHRQYW5lbDsKKyAgICBwcml2YXRlIGZpbmFsIE9iamVjdCBmS2V5OworICAgIHByaXZhdGUgYm9vbGVhbiBmQ2hhcmFjdGVyOworCisgICAgcHJpdmF0ZSBmaW5hbCBCdXR0b24gZk9LQnV0dG9uOworICAgIHByaXZhdGUgZmluYWwgQnV0dG9uIGZDYW5jZWxCdXR0b247CisgICAgcHJpdmF0ZSBmaW5hbCBDaG9pY2UgZkl0ZW1zOworICAgIHByaXZhdGUgZmluYWwgSGFzaHRhYmxlIGZOYW1lVG9WYWx1ZU1hcDsKKyAgICAvKioKKyAgICAqIENvbnN0cnVjdCBhIG5ldyBDb2xvckRpYWxvZy4KKyAgICAqIEBwYXJhbSBwYXJlbnQgdGhlIGRpYWxvZydzIHBhcmVudCBmcmFtZQorICAgICogQHBhcmFtIHRpdGxlIHRoZSBkaWFsb2dzIHRpdGxlCisgICAgKiBAcGFyYW0gbWVzc2FnZSB0aGUgbWVzc2FnZSBkaXNwbGF5ZWQgbmV4dCB0byB0aGUgaW5wdXQgYm94CisgICAgKi8KKyAgICBPYmplY3REaWFsb2coRnJhbWUgcGFyZW50LCAKKyAgICAgICAgICAgICAgICAgU3RyaW5nIHRpdGxlLCAKKyAgICAgICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UsIAorICAgICAgICAgICAgICAgICBNVGV4dFBhbmVsIHRleHRQYW5lbCwKKyAgICAgICAgICAgICAgICAgT2JqZWN0IGtleSwKKyAgICAgICAgICAgICAgICAgYm9vbGVhbiBjaGFyYWN0ZXIsCisgICAgICAgICAgICAgICAgIFN0cmluZ1tdIG5hbWVzLAorICAgICAgICAgICAgICAgICBPYmplY3RbXSB2YWx1ZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHN1cGVyKHBhcmVudCwgdGl0bGUsIGZhbHNlKTsKKyAgICAgICAgZlRleHRQYW5lbCA9IHRleHRQYW5lbDsKKyAgICAgICAgZktleSA9IGtleTsKKyAgICAgICAgZkNoYXJhY3RlciA9IGNoYXJhY3RlcjsKKyAgICAgICAgCisgICAgICAgIHNldExheW91dChuZXcgR3JpZExheW91dCgyLCAxKSk7CisKKyAgICAgICAgUGFuZWwgcGFuZWwgPSBuZXcgUGFuZWwoKTsKKyAgICAgICAgcGFuZWwuc2V0TGF5b3V0KG5ldyBGbG93TGF5b3V0KEZsb3dMYXlvdXQuQ0VOVEVSLCAxMCwgMTApKTsKKyAgICAgICAgZkl0ZW1zID0gbmV3IENob2ljZSgpOworCisgICAgICAgIGlmIChuYW1lcy5sZW5ndGggIT0gdmFsdWVzLmxlbmd0aCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiTXVzdCBoYXZlIHNhbWUgbnVtYmVyIG9mIG5hbWVzIGFuZCB2YWx1ZXMuIik7CisgICAgICAgIH0KKworICAgICAgICBmTmFtZVRvVmFsdWVNYXAgPSBuZXcgSGFzaHRhYmxlKG5hbWVzLmxlbmd0aCk7CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgZkl0ZW1zLmFkZChuYW1lc1tpXSk7CisgICAgICAgICAgICBpZiAodmFsdWVzW2ldICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBmTmFtZVRvVmFsdWVNYXAucHV0KG5hbWVzW2ldLCB2YWx1ZXNbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcGFuZWwuYWRkKG5ldyBMYWJlbChtZXNzYWdlKSk7ICAgICAgICAKKyAgICAgICAgcGFuZWwuYWRkKGZJdGVtcyk7CisgICAgICAgIAorICAgICAgICBhZGQoIk5vcnRoIiwgcGFuZWwpOworCisgICAgICAgIGZDYW5jZWxCdXR0b24gPSBuZXcgQnV0dG9uKFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VTdHJpbmcoRnJhbWVSZXNvdXJjZXMuQ0FOQ0VMKSk7CisgICAgICAgIGZPS0J1dHRvbiA9IG5ldyBCdXR0b24oUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5PSykpOworICAgICAgICBQYW5lbCBwID0gbmV3IFBhbmVsKCk7CisgICAgICAgIHAuc2V0TGF5b3V0KG5ldyBGbG93TGF5b3V0KEZsb3dMYXlvdXQuQ0VOVEVSLCA1LCA1KSk7CisgICAgICAgIHAuYWRkKGZDYW5jZWxCdXR0b24pOworICAgICAgICBwLmFkZChmT0tCdXR0b24pOworICAgICAgICBhZGQoIlNvdXRoIiwgcCk7CisKKyAgICAgICAgcGFjaygpOworCisgICAgICAgIGFkZFdpbmRvd0xpc3RlbmVyKG5ldyBXaW5kb3dBZGFwdGVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgd2luZG93Q2xvc2luZyhXaW5kb3dFdmVudCBlKSB7CisgICAgICAgICAgICAgICAgY2xvc2VXaW5kb3coZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIGZPS0J1dHRvbi5hZGRBY3Rpb25MaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgZkNhbmNlbEJ1dHRvbi5hZGRBY3Rpb25MaXN0ZW5lcih0aGlzKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgY2xvc2VXaW5kb3coYm9vbGVhbiBzZW5kQWN0aW9uKSB7CisKKyAgICAgICAgc2V0VmlzaWJsZShmYWxzZSk7CisgICAgICAgIGlmIChzZW5kQWN0aW9uKSB7CisgICAgICAgICAgICBPYmplY3QgdmFsdWUgPSBmTmFtZVRvVmFsdWVNYXAuZ2V0KGZJdGVtcy5nZXRTZWxlY3RlZEl0ZW0oKSk7CisgICAgICAgICAgICBzZW5kQWN0aW9uKHZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBkaXNwb3NlKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKworICAgICAgICBPYmplY3Qgc291cmNlID0gZS5nZXRTb3VyY2UoKTsKKworICAgICAgICBpZiAoc291cmNlID09IGZPS0J1dHRvbikgeworICAgICAgICAgICAgY2xvc2VXaW5kb3codHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc291cmNlID09IGZDYW5jZWxCdXR0b24pIHsKKyAgICAgICAgICAgIGNsb3NlV2luZG93KGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgQWN0aW9uRXZlbnQhIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAqIEhhbmRsZSB0aGUgdXNlciBpbnB1dAorICAgICogQHBhcmFtIG9iaiB0aGUgdmFsdWUgb2JqZWN0CisgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgc2VuZEFjdGlvbihPYmplY3QgdmFsdWUpIHsKKworICAgICAgICBTdHlsZU1vZGlmaWVyIG1vZGlmaWVyOworICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkgeworICAgICAgICAgICAgbW9kaWZpZXIgPSBTdHlsZU1vZGlmaWVyLmNyZWF0ZUFkZE1vZGlmaWVyKGZLZXksIHZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEF0dHJpYnV0ZVNldCBzZXQgPSBuZXcgQXR0cmlidXRlU2V0KGZLZXkpOworICAgICAgICAgICAgbW9kaWZpZXIgPSBTdHlsZU1vZGlmaWVyLmNyZWF0ZVJlbW92ZU1vZGlmaWVyKHNldCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChmQ2hhcmFjdGVyID09IE1lbnVJdGVtU2V0LkNIQVJBQ1RFUikgeworICAgICAgICAgICAgZlRleHRQYW5lbC5tb2RpZnlDaGFyYWN0ZXJTdHlsZU9uU2VsZWN0aW9uKG1vZGlmaWVyKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZUZXh0UGFuZWwubW9kaWZ5UGFyYWdyYXBoU3R5bGVPblNlbGVjdGlvbihtb2RpZmllcik7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9hd3R1aS9UYWJSdWxlci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvYXd0dWkvVGFiUnVsZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40NDgyNWQ1YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2F3dHVpL1RhYlJ1bGVyLmphdmEKQEAgLTAsMCArMSwxMzEgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRhYlJ1bGVyLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDE6NDkgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5hd3R1aTsKKworaW1wb3J0IGphdmEuYXd0LkNvbG9yOworaW1wb3J0IGphdmEuYXd0LkNvbXBvbmVudDsKK2ltcG9ydCBqYXZhLmF3dC5EaW1lbnNpb247CitpbXBvcnQgamF2YS5hd3QuR3JhcGhpY3M7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLlRhYlJ1bGVySW1wbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTVRhYlJ1bGVyOworCisvKioKKyAqIFRhYlJ1bGVyIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIE1UYWJSdWxlckNvbXBvbmVudCBpbiBhbiBBV1QgY29tcG9uZW50LgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgVGFiUnVsZXIgZXh0ZW5kcyBDb21wb25lbnQgaW1wbGVtZW50cyBNVGFiUnVsZXJDb21wb25lbnQgeworICAgIAorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBUYWJSdWxlckltcGwgZkltcGw7CisgICAgCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgbmV3IFRhYlJ1bGVyLgorICAgICAqIEBwYXJhbSBiYXNlbGluZSB0aGUgeS1jb29yZGluYXRlIG9mIHRoZSBydWxlcidzIGJhc2VsaW5lCisgICAgICogQHBhcmFtIG9yaWdpbiB0aGUgeC1jb29yZGluYXRlIGluIHRoaXMgQ29tcG9uZW50IHdoZXJlCisgICAgICogICAgIHRoZSBsZWZ0IG1hcmdpbiBhcHBlYXJzCisgICAgICogQHBhcmFtIHRleHRQYW5lbCB0aGUgTVRleHRQYW5lbCB0byBsaXN0ZW4gdG8uICBUaGlzIFRhYlJ1bGVyCisgICAgICogICAgIHdpbGwgcmVmbGVjdCB0aGUgTVRleHRQYW5lbCdzIHBhcmFncmFwaCBzdHlsZXMsIGFuZCB1cGRhdGUKKyAgICAgKiAgICAgdGhlIHBhcmFncmFwaCBzdHlsZXMgd2hlbiBtYW5pcHVsYXRlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgVGFiUnVsZXIoaW50IGJhc2VsaW5lLCBpbnQgb3JpZ2luLCBNVGV4dFBhbmVsIHRleHRQYW5lbCkgeworICAgICAgICAKKyAgICAgICAgZkltcGwgPSBuZXcgVGFiUnVsZXJJbXBsKGJhc2VsaW5lLCBvcmlnaW4sIHRleHRQYW5lbCwgdGhpcyk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIExpc3RlbiB0byB0aGUgZ2l2ZW4gTVRleHRQYW5lbCBhbmQgcmVmbGVjdCBpdHMgY2hhbmdlcywKKyAgICAgKiBhbmQgdXBkYXRlIGl0cyBwYXJhZ3JhcGggc3R5bGVzIHdoZW4gVGFiUnVsZXIgaXMKKyAgICAgKiBtYW5pcHVsYXRlZC4KKyAgICAgKiBAcGFyYW0gdGV4dFBhbmVsIHRoZSBNVGV4dFBhbmVsIHRvIGxpc3RlbiB0bworICAgICAqLworICAgIHB1YmxpYyB2b2lkIGxpc3RlblRvVGV4dFBhbmVsKE1UZXh0UGFuZWwgdGV4dFBhbmVsKSB7CisKKyAgICAgICAgZkltcGwubGlzdGVuVG9UZXh0UGFuZWwodGV4dFBhbmVsKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoaXMgVGFiUnVsZXIuCisgICAgICogQHJldHVybiB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGlzIFRhYlJ1bGVyCisgICAgICovCisgICAgcHVibGljIENvbG9yIGdldEJhY2tDb2xvcigpIHsKKworICAgICAgICByZXR1cm4gZkltcGwuZ2V0QmFja0NvbG9yKCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFNldCB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGlzIFRhYlJ1bGVyLgorICAgICAqIEBwYXJhbSBiYWNrQ29sb3IgdGhlIG5ldyBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoaXMgVGFiUnVsZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRCYWNrQ29sb3IoQ29sb3IgYmFja0NvbG9yKSB7CisKKyAgICAgICAgZkltcGwuc2V0QmFja0NvbG9yKGJhY2tDb2xvcik7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgTVRhYlJ1bGVyIHJlcHJlc2VudGVkIGJ5IHRoaXMgVGFiUnVsZXIuCisgICAgICogQHJldHVybiB0aGUgTVRhYlJ1bGVyIHJlcHJlc2VudGVkIGJ5IHRoaXMgVGFiUnVsZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgTVRhYlJ1bGVyIGdldFJ1bGVyKCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZJbXBsLmdldFJ1bGVyKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBsZWFkaW5nIG1hcmdpbiBvZiB0aGlzIFRhYlJ1bGVyLgorICAgICAqIEByZXR1cm4gdGhlIGxlYWRpbmcgbWFyZ2luIG9mIHRoaXMgVGFiUnVsZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldExlYWRpbmdNYXJnaW4oKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkltcGwuZ2V0TGVhZGluZ01hcmdpbigpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgZmlyc3QgbGluZSBpbmRlbnQgb2YgdGhpcyBUYWJSdWxlci4KKyAgICAgKiBAcmV0dXJuIHRoZSBmaXJzdCBsaW5lIGluZGVudCBvZiB0aGlzIFRhYlJ1bGVyCisgICAgICovCisgICAgcHVibGljIGludCBnZXRGaXJzdExpbmVJbmRlbnQoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkltcGwuZ2V0Rmlyc3RMaW5lSW5kZW50KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSB0cmFpbGluZyBtYXJnaW4gb2YgdGhpcyBUYWJSdWxlci4KKyAgICAgKiBAcmV0dXJuIHRoZSB0cmFpbGluZyBtYXJnaW4gb2YgdGhpcyBUYWJSdWxlcgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBpbnQgZ2V0VHJhaWxpbmdNYXJnaW4oKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkltcGwuZ2V0VHJhaWxpbmdNYXJnaW4oKTsKKyAgICB9CisgICAgCisgICAgLy8gVGhlIGZvbGxvd2luZyBhcmUgQ29tcG9uZW50IG1ldGhvZHMgd2hpY2ggbmVlZCB0byBiZSBkZWxlZ2F0ZWQgdG8KKyAgICAvLyB0aGUgaW1wbGVtZW50YXRpb246CisgICAgCisgICAgcHVibGljIHZvaWQgcGFpbnQoR3JhcGhpY3MgZykgeworICAgICAgICAKKyAgICAgICAgZkltcGwucGFpbnQoZyk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBEaW1lbnNpb24gZ2V0UHJlZmVycmVkU2l6ZSgpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmSW1wbC5nZXRQcmVmZXJyZWRTaXplKCk7CisgICAgfQorCisgICAgcHVibGljIERpbWVuc2lvbiBnZXRNaW5pbXVtU2l6ZSgpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmSW1wbC5nZXRNaW5pbXVtU2l6ZSgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2F3dHVpL1RleHRGcmFtZS5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvYXd0dWkvVGV4dEZyYW1lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjM5NmZkOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2F3dHVpL1RleHRGcmFtZS5qYXZhCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBUZXh0RnJhbWUuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0MTo0OSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LmF3dHVpOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuTVRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlTW9kaWZpZXI7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5SZXNvdXJjZVV0aWxzOworCitpbXBvcnQgamF2YS5hd3QuQm9yZGVyTGF5b3V0OworaW1wb3J0IGphdmEuYXd0LkZyYW1lOworaW1wb3J0IGphdmEuYXd0Lk1lbnU7CitpbXBvcnQgamF2YS5hd3QuTWVudUJhcjsKK2ltcG9ydCBqYXZhLmF3dC5Ub29sa2l0OworCitpbXBvcnQgamF2YS5hd3QuZGF0YXRyYW5zZmVyLkNsaXBib2FyZDsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0FkYXB0ZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93RXZlbnQ7CisKKy8qKgorICogVGV4dEZyYW1lIGlzIGEgRnJhbWUgY29udGFpbmluZyBhbiBlZGl0YWJsZSBUZXh0UGFuZWwsIGEgc2V0IG9mIHN0YW5kYXJkCisgKiBtZW51cywgYW5kIGEgVGFiUnVsZXIuICBUaGlzIGNsYXNzIGNhbiBiZSB1c2VkIGFzLWlzLCBidXQgaXMKKyAqIHByaW1hcmlseSBpbnRlbmRlZCB0byBiZSBhIHNpbXBsZSBleGFtcGxlIG9mIGhvdyB0byB1c2UgdGhlIG90aGVyIGNsYXNzZXMKKyAqIGluIHRoaXMgcGFja2FnZS4KKyAqIEBzZWUgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsCisgKiBAc2VlIEF3dE1lbnVCdWlsZGVyCisgKiBAc2VlIFRhYlJ1bGVyCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBUZXh0RnJhbWUgZXh0ZW5kcyBGcmFtZSB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgVGV4dFBhbmVsIGZUZXh0UGFuZWw7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgVGV4dEZyYW1lIHdpdGggbm8gdGV4dCBhbmQgbm8gdGl0bGUuCisgICAgICovCisgICAgcHVibGljIFRleHRGcmFtZSgpIHsKKyAgICAgICAgCisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIGluaXQobnVsbCwgVG9vbGtpdC5nZXREZWZhdWx0VG9vbGtpdCgpLmdldFN5c3RlbUNsaXBib2FyZCgpKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgbmV3IFRleHRGcmFtZSB3aXRoIG5vIHRleHQgYW5kIHRoZSBnaXZlbiB0aXRsZS4KKyAgICAgKiBAcGFyYW0gdGl0bGUgdGhlIHRpdGxlIG9mIHRoaXMgRnJhbWUKKyAgICAgKi8KKyAgICBwdWJsaWMgVGV4dEZyYW1lKFN0cmluZyB0aXRsZSkgeworICAgICAgICAKKyAgICAgICAgc3VwZXIodGl0bGUpOworICAgICAgICBpbml0KG51bGwsIFRvb2xraXQuZ2V0RGVmYXVsdFRvb2xraXQoKS5nZXRTeXN0ZW1DbGlwYm9hcmQoKSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENyZWF0ZSBhIG5ldyBUZXh0RnJhbWUgd2l0aCB0aGUgZ2l2ZW4gdGV4dCBhbmQgdGl0bGUsIHdob3NlCisgICAgICogVGV4dFBhbmVsIHdpbGwgdXNlIHRoZSBnaXZlbiBjbGlwYm9hcmQuCisgICAgICogQHBhcmFtIHRleHQgdGhlIGluaXRpYWwgdGV4dCBpbiB0aGUgVGV4dFBhbmVsLiAgSWYgbnVsbCB0aGUKKyAgICAgKiAgICAgIFRleHRQYW5lbCB3aWxsIGluaXRpYWxseSBiZSBlbXB0eQorICAgICAqIEBwYXJhbSB0aXRsZSB0aGUgdGl0bGUgb2YgdGhpcyBGcmFtZQorICAgICAqIEBwYXJhbSBjbGlwYm9hcmQgdGhlIENsaXBib2FyZCB3aGljaCB0aGUgVGV4dFBhbmVsIHdpbGwgdXNlLgorICAgICAqICAgICAgSWYgbnVsbCB0aGUgVGV4dFBhbmVsIHdpbGwgdXNlIGEgcHJpdmF0ZSBDbGlwYm9hcmQKKyAgICAgKi8KKyAgICBwdWJsaWMgVGV4dEZyYW1lKE1Db25zdFRleHQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0aXRsZSwKKyAgICAgICAgICAgICAgICAgICAgIENsaXBib2FyZCBjbGlwYm9hcmQpIHsKKworICAgICAgICBzdXBlcih0aXRsZSk7CisgICAgICAgIGluaXQodGV4dCwgY2xpcGJvYXJkKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgaW5pdChNQ29uc3RUZXh0IHRleHQsIENsaXBib2FyZCBjbGlwYm9hcmQpIHsKKyAgICAgICAgCisgICAgICAgIGZUZXh0UGFuZWwgPSBuZXcgVGV4dFBhbmVsKHRleHQsIGNsaXBib2FyZCk7CisKKyAgICAgICAgVGFiUnVsZXIgdGFiUnVsZXIgPSBuZXcgVGFiUnVsZXIoMTQsIDEwLCBmVGV4dFBhbmVsKTsKKworICAgICAgICBjcmVhdGVNZW51cygpOworCisgICAgICAgIHNldExheW91dChuZXcgQm9yZGVyTGF5b3V0KCkpOworICAgICAgICBhZGQoZlRleHRQYW5lbCwgIkNlbnRlciIpOworICAgICAgICBhZGQodGFiUnVsZXIsICJOb3J0aCIpOworICAgICAgICBwYWNrKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGNyZWF0ZU1lbnVzKCkgeworCisgICAgICAgIE1lbnVCYXIgbWVudUJhciA9IG5ldyBNZW51QmFyKCk7CisKKyAgICAgICAgQXd0TWVudUJ1aWxkZXIuZ2V0SW5zdGFuY2UoKS5jcmVhdGVNZW51cyhtZW51QmFyLCBmVGV4dFBhbmVsLCB0aGlzKTsKKworICAgICAgICBzZXRNZW51QmFyKG1lbnVCYXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgTVRleHRQYW5lbCBpbiB0aGlzIGZyYW1lLgorICAgICAqLworICAgIHB1YmxpYyBNVGV4dFBhbmVsIGdldFRleHRQYW5lbCgpIHsKKworICAgICAgICByZXR1cm4gZlRleHRQYW5lbDsKKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICAKKyAgICAgICAgVGV4dEZyYW1lIGZyYW1lID0gbmV3IFRleHRGcmFtZSgpOworICAgICAgICBmcmFtZS5hZGRXaW5kb3dMaXN0ZW5lcihuZXcgV2luZG93QWRhcHRlcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHdpbmRvd0Nsb3NpbmcoV2luZG93RXZlbnQgZSkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5leGl0KDApOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgZnJhbWUuc2V0U2l6ZSg1NTAsIDcwMCk7CisgICAgICAgIGZyYW1lLnNob3coKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvYXd0dWkvcGFja2FnZS5odG1sIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvYXd0dWkvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU3ZmNjNDEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9hd3R1aS9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5IGJnY29sb3I9IndoaXRlIj4KK1Byb3ZpZGVzIGNsYXNzZXMgZm9yIGJ1aWxkaW5nIGFuIEFXVC1iYXNlZCB1c2VyIGludGVyZmFjZSBmb3IgYSBUZXh0UGFuZWwuCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL0F3dERvY3VtZW50V2luZG93LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL0F3dERvY3VtZW50V2luZG93LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTU3NTg5NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vQXd0RG9jdW1lbnRXaW5kb3cuamF2YQpAQCAtMCwwICsxLDM2NSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogQXd0RG9jdW1lbnRXaW5kb3cuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0MzowOSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LmRlbW87CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LmF3dHVpLlRhYlJ1bGVyOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbExpc3RlbmVyOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbFNldHRpbmdzOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlZFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlTW9kaWZpZXI7CisKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LmF3dHVpLkF3dE1lbnVCdWlsZGVyOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5wcmludC5QcmludGluZ1V0aWxzOworCitpbXBvcnQgamF2YS5hd3QuQm9yZGVyTGF5b3V0OworaW1wb3J0IGphdmEuYXd0LkJ1dHRvbjsKK2ltcG9ydCBqYXZhLmF3dC5EaWFsb2c7CitpbXBvcnQgamF2YS5hd3QuRmlsZURpYWxvZzsKK2ltcG9ydCBqYXZhLmF3dC5HcmlkTGF5b3V0OworaW1wb3J0IGphdmEuYXd0LkZyYW1lOworaW1wb3J0IGphdmEuYXd0Lk1lbnU7CitpbXBvcnQgamF2YS5hd3QuTWVudUJhcjsKK2ltcG9ydCBqYXZhLmF3dC5MYWJlbDsKK2ltcG9ydCBqYXZhLmF3dC5QYW5lbDsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkxpc3RlbmVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0FkYXB0ZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93RXZlbnQ7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CisKK2ltcG9ydCBqYXZhLnRleHQuTWVzc2FnZUZvcm1hdDsKKworLyoqCisgKiBBd3REb2N1bWVudFdpbmRvdyBpcyBhIEZyYW1lIGNvbnRhaW5pbmcgYSBUZXh0UGFuZWwsIHdpdGggYSBkb2N1bWVudAorICogZm9yIHN0b3JpbmcgdGhlIHRleHQgaW4gdGhlIFRleHRQYW5lbC4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIEF3dERvY3VtZW50V2luZG93IGV4dGVuZHMgRnJhbWUgaW1wbGVtZW50cyBEb2N1bWVudFdpbmRvdyB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworCisgICAgcHJpdmF0ZSBUZXh0UGFuZWwgZlRleHRQYW5lbDsKKyAgICBwcml2YXRlIEVkaXRBcHBsaWNhdGlvbiBmQXBwbGljYXRpb247CisgICAgcHJpdmF0ZSBUZXh0RG9jdW1lbnQgZkRvY3VtZW50OworCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgbmV3IEF3dERvY3VtZW50V2luZG93LgorICAgICAqIEBwYXJhbSBhcHBsaWNhdGlvbiB0aGUgYXBwbGljYXRpb24gdGhhdCBvd25zIHRoaXMgZG9jdW1lbnQKKyAgICAgKiBAcGFyYW0gY2xpcGJvYXJkIHRoZSBjbGlwYm9hcmQgdG8gdXNlCisgICAgICogQHBhcmFtIGRvY3VtZW50IHRoZSBkb2N1bWVudCB0byBzaG93IGluIHRoaXMgQXd0RG9jdW1lbnRXaW5kb3cKKyAgICAgKi8KKyAgICBBd3REb2N1bWVudFdpbmRvdyhFZGl0QXBwbGljYXRpb24gYXBwbGljYXRpb24sCisgICAgICAgICAgICAgICAgICAgVGV4dERvY3VtZW50IGRvY3VtZW50LAorICAgICAgICAgICAgICAgICAgIFRleHRQYW5lbFNldHRpbmdzIHRleHRQYW5lbFNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gdXNlVGFiUnVsZXIsCisgICAgICAgICAgICAgICAgICAgVGV4dFBhbmVsTGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBzdXBwb3J0U3R5bGVkVGV4dCwKKyAgICAgICAgICAgICAgICAgICBib29sZWFuIHN1cHBvcnRQbGFpblRleHQsCisgICAgICAgICAgICAgICAgICAgaW50W10gbWVudXMpIHsKKworICAgICAgICBmQXBwbGljYXRpb24gPSBhcHBsaWNhdGlvbjsKKyAgICAgICAgCisgICAgICAgIGZUZXh0UGFuZWwgPSBuZXcgVGV4dFBhbmVsKHRleHRQYW5lbFNldHRpbmdzLCBudWxsLCBhcHBsaWNhdGlvbi5nZXRDbGlwYm9hcmQoKSk7CisgICAgICAgIGlmIChsaXN0ZW5lciAhPSBudWxsKSB7CisgICAgICAgICAgICBmVGV4dFBhbmVsLmFkZExpc3RlbmVyKGxpc3RlbmVyKTsKKyAgICAgICAgfQorICAgICAgICBzZXREb2N1bWVudChkb2N1bWVudCk7CisKKyAgICAgICAgYWRkTWVudUJhcihzdXBwb3J0U3R5bGVkVGV4dCwgc3VwcG9ydFBsYWluVGV4dCwgbWVudXMpOworCisgICAgICAgIHNldExheW91dChuZXcgQm9yZGVyTGF5b3V0KCkpOworCisgICAgICAgIGlmICh1c2VUYWJSdWxlcikgeworICAgICAgICAgICAgVGFiUnVsZXIgdGFiUnVsZXIgPSBuZXcgVGFiUnVsZXIoMTQsIDEwLCBmVGV4dFBhbmVsKTsKKyAgICAgICAgICAgIGFkZCh0YWJSdWxlciwgIk5vcnRoIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGFkZChmVGV4dFBhbmVsLCAiQ2VudGVyIik7CisgICAgICAgIHBhY2soKTsKKyAgICAgICAgYWRkV2luZG93TGlzdGVuZXIobmV3IFdpbmRvd0FkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBkb0Nsb3NlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBhZGRNZW51QmFyKGJvb2xlYW4gc3VwcG9ydFN0eWxlZFRleHQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gc3VwcG9ydFBsYWluVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRbXSBtZW51cykgeworICAgICAgICAKKyAgICAgICAgTWVudUJhciBtZW51QmFyID0gbmV3IE1lbnVCYXIoKTsKKyAgICAgICAgU3RyaW5nIG1lbnVUaXRsZSA9IFJlc291cmNlVXRpbHMuZ2V0U3RyaW5nKEVkaXRvclJlc291cmNlcy5GSUxFKTsKKyAgICAgICAgTWVudSBtZW51ID0gbmV3IE1lbnUobWVudVRpdGxlKTsKKyAgICAgICAgbmV3IEF3dEZpbGVNZW51TWFuYWdlcihtZW51LCBmQXBwbGljYXRpb24sIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRTdHlsZWRUZXh0LCBzdXBwb3J0UGxhaW5UZXh0KTsKKyAgICAgICAgbWVudUJhci5hZGQobWVudSk7CisKKyAgICAgICAgQXd0TWVudUJ1aWxkZXIuZ2V0SW5zdGFuY2UoKS5jcmVhdGVNZW51cyhtZW51QmFyLCBmVGV4dFBhbmVsLCB0aGlzLCBtZW51cyk7CisgICAgICAgIHNldE1lbnVCYXIobWVudUJhcik7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIGl0IGlzIE9LIHRvIHNldCB0aGUgZG9jdW1lbnQgdGV4dCBhbmQgZmlsZSB0bworICAgICAqIHNvbWV0aGluZyBkaWZmZXJlbnQuCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGNhbkNoYW5nZURvY3VtZW50cygpIHsKKworICAgICAgICAvLyBJZiB0aGUgdGV4dCBpcyBtb2RpZmllZCwgZ2l2ZSB0aGUgdXNlciBhIGNoYW5jZSB0bworICAgICAgICAvLyBzYXZlIGl0LiAgT3RoZXJ3aXNlIHJldHVybiB0cnVlLgorCisgICAgICAgIGlmIChmRG9jdW1lbnQuaXNNb2RpZmllZCgpKSB7CisgICAgICAgICAgICBieXRlIHNhdmUgPSBhc2tTYXZlKHRoaXMsIGdldFRpdGxlKCkpOworICAgICAgICAgICAgaWYgKHNhdmUgPT0gWUVTKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGRvU2F2ZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHNhdmUgPT0gTk87CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzZXREb2N1bWVudChUZXh0RG9jdW1lbnQgZG9jdW1lbnQpIHsKKworICAgICAgICBmRG9jdW1lbnQgPSBkb2N1bWVudDsKKyAgICAgICAgZkRvY3VtZW50LnNldFRleHRQYW5lbChmVGV4dFBhbmVsKTsKKyAgICAgICAgc2V0VGl0bGUoZkRvY3VtZW50LmdldFRpdGxlKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgZG9jdW1lbnQgdG8gZW1wdHkgdGV4dCB3aXRoIG5vIGFzc29jaWF0ZWQgZmlsZS4gIElmCisgICAgICogdGhlIGRvY3VtZW50IHRleHQgaXMgbm90IHNhdmVkLCBwcm9tcHQgdGhlIHVzZXIgdG8gc2F2ZSB0aGUKKyAgICAgKiB0aGUgdGV4dCBmaXJzdC4gIElmIHRoaXMgb3BlcmF0aW9uIGlzIGNhbmNlbGVkLCB0aGUgZG9jdW1lbnQKKyAgICAgKiBpcyB1bmNoYW5nZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgZG9OZXcoKSB7CisKKyAgICAgICAgaWYgKCFjYW5DaGFuZ2VEb2N1bWVudHMoKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzZXREb2N1bWVudChmQXBwbGljYXRpb24uY3JlYXRlTmV3RG9jdW1lbnQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJvbXB0IHRoZSB1c2VyIGZvciBhIGZpbGUgZnJvbSB3aGljaCB0byBsb2FkIGEgdGV4dCBkb2N1bWVudC4KKyAgICAgKiBJZiB0aGUgY3VycmVudCB0ZXh0IGlzIG5vdCBzYXZlZCwgZmlyc3QgcHJvbXB0IHRoZSB1c2VyIHRvCisgICAgICogc2F2ZS4gIElmIGVpdGhlciBvcGVyYXRpb24gaXMgY2FuY2VsZWQgb3IgZmFpbHMsIHRoZSBkb2N1bWVudAorICAgICAqIGlzIHVuY2hhbmdlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBkb09wZW4oKSB7CisKKyAgICAgICAgaWYgKCFjYW5DaGFuZ2VEb2N1bWVudHMoKSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgVGV4dERvY3VtZW50IGRvY3VtZW50ID0gZkFwcGxpY2F0aW9uLm9wZW5Eb2N1bWVudCh0aGlzKTsKKworICAgICAgICBpZiAoZG9jdW1lbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgc2V0RG9jdW1lbnQoZG9jdW1lbnQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJvbXB0IHRoZSB1c2VyIGZvciBhIGZpbGUgaW4gd2hpY2ggdG8gc2F2ZSB0aGUgZG9jdW1lbnQgdGV4dC4KKyAgICAgKiBJZiB0aGlzIG9wZXJhdGlvbiBpcyBub3QgY2FuY2VsZWQsIHNhdmUgdGhlIHRleHQgaW4gdGhlIGZpbGUuCisgICAgICogVGhlIGZpbGUgYmVjb21lcyB0aGlzIGRvY3VtZW50J3MgZmlsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBkb1NhdmVBcyhpbnQgZm9ybWF0KSB7CisKKyAgICAgICAgU3RyaW5nIHRpdGxlID0gUmVzb3VyY2VVdGlscy5nZXRTdHJpbmcoRWRpdG9yUmVzb3VyY2VzLlNBVkVfVElUTEUpOworICAgICAgICBGaWxlIGZpbGUgPSBnZXRGaWxlRnJvbURpYWxvZyhmRG9jdW1lbnQuZ2V0RmlsZSgpLCB0aXRsZSwgdGhpcywgRmlsZURpYWxvZy5TQVZFKTsKKyAgICAgICAgCisgICAgICAgIGlmIChmaWxlID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZkRvY3VtZW50LnNldEZpbGUoZmlsZSk7CisgICAgICAgIHNldFRpdGxlKGZEb2N1bWVudC5nZXRUaXRsZSgpKTsKKworICAgICAgICBmRG9jdW1lbnQuc2V0Rm9ybWF0KGZvcm1hdCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkRvY3VtZW50LnNhdmUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTYXZlIHRoZSB0ZXh0IGluIHRoaXMgZG9jdW1lbnQuICBJZiB0aGVyZSBpcyBubyBmaWxlIGFzc29jaWF0ZWQKKyAgICAgKiB3aXRoIHRoZSB0ZXh0LCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gPGNvZGU+ZG9TYXZlQXM8L2NvZGU+LgorICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdHJ1ZSBpZiB0aGUgZG9jdW1lbnQgd2FzIHN1Y2Nlc3NmdWxseSBzYXZlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBkb1NhdmUoKSB7CisKKyAgICAgICAgaWYgKGZEb2N1bWVudC5nZXRGaWxlKCkgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGRvU2F2ZUFzKGZEb2N1bWVudC5nZXRGb3JtYXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBmRG9jdW1lbnQuc2F2ZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFByaW50IHRoZSBjb250ZW50cyBvZiB0aGlzIHdpbmRvdy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBkb1ByaW50KCkgeworCisgICAgICAgIFByaW50aW5nVXRpbHMudXNlclByaW50VGV4dChmRG9jdW1lbnQuZ2V0VGV4dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlRleHRQYW5lbC5nZXREZWZhdWx0VmFsdWVzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRUaXRsZSgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBdHRlbXB0IHRvIGNsb3NlIHRoaXMgd2luZG93LiAgSWYgdGhlIHRleHQgaGFzIG5vdCBiZWVuIHNhdmVkLAorICAgICAqIGdpdmUgdGhlIHVzZXIgYSBjaGFuY2UgdG8gc2F2ZSB0aGUgdGV4dCBiZWZvcmUgY2xvc2luZyB0aGUKKyAgICAgKiB3aW5kb3cuICBJZiB0aGUgdXNlciBjYW5jZWxzIHRoaXMgb3BlcmF0aW9uLCB0aGlzIG1ldGhvZCByZXR1cm5zCisgICAgICogZmFsc2UgYW5kIHRoZSB3aW5kb3cgaXMgbm90IGNsb3NlZDsgIG90aGVyd2lzZSB0aGlzIG1ldGhvZAorICAgICAqIHJldHVybnMgdHJ1ZSBhbmQgdGhlIHdpbmRvdyBpcyBjbG9zZWQuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZG9DbG9zZSgpIHsKKworICAgICAgICBpZiAoY2FuQ2hhbmdlRG9jdW1lbnRzKCkpIHsKKyAgICAgICAgICAgIHNldFZpc2libGUoZmFsc2UpOworICAgICAgICAgICAgZGlzcG9zZSgpOworICAgICAgICAgICAgZkFwcGxpY2F0aW9uLnJlbW92ZURvY3VtZW50V2luZG93KHRoaXMpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXRyaWV2ZSBhIGZpbGUgZnJvbSBhIGRpYWxvZy4gIElmIHRoZSB1c2VyIGRvZXMgbm90CisgICAgICogc2VsZWN0IGEgZmlsZSBpbiB0aGUgZGlhbG9nIHRoaXMgbWV0aG9kIHJldHVybnMgbnVsbC4KKyAgICAgKiBAcGFyYW0ga2luZCBlaXRoZXIgRmlsZURpYWxvZy5MT0FEIG9yIEZpbGVEaWFsb2cuU0FWRS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEZpbGUgZ2V0RmlsZUZyb21EaWFsb2coRmlsZSBvcmlnRmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGRpYWxvZ1RpdGxlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWUgb3duZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBraW5kKSB7CisgICAgICAgIAorICAgICAgICBGaWxlRGlhbG9nIGRpYWxvZyA9IG5ldyBGaWxlRGlhbG9nKG93bmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWFsb2dUaXRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kKTsKKyAgICAgICAgaWYgKG9yaWdGaWxlICE9IG51bGwpIHsKKyAgICAgICAgICAgIGRpYWxvZy5zZXREaXJlY3Rvcnkob3JpZ0ZpbGUuZ2V0UGFyZW50KCkpOworICAgICAgICAgICAgZGlhbG9nLnNldEZpbGUob3JpZ0ZpbGUuZ2V0TmFtZSgpKTsKKyAgICAgICAgfQorICAgICAgICBkaWFsb2cuc2hvdygpOworICAgICAgICBTdHJpbmcgZmlsZVN0ciA9IGRpYWxvZy5nZXRGaWxlKCk7CisgICAgICAgIFN0cmluZyBkaXJTdHIgPSBkaWFsb2cuZ2V0RGlyZWN0b3J5KCk7CisgICAgICAgIAorICAgICAgICBGaWxlIGZpbGUgPSBudWxsOworICAgICAgICAKKyAgICAgICAgaWYgKGZpbGVTdHIgIT0gbnVsbCkgeworICAgICAgICAgICAgZmlsZSA9IG5ldyBGaWxlKGRpclN0ciwgZmlsZVN0cik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBmaWxlOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIFlFUyA9IDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBOTyA9IDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBDQU5DRUwgPSAyOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgRGlhbG9nTGlzdGVuZXIgaW1wbGVtZW50cyBBY3Rpb25MaXN0ZW5lciB7CisKKyAgICAgICAgRGlhbG9nIGZEaWFsb2c7CisgICAgICAgIEJ1dHRvbiBmWWVzLCBmTm8sIGZDYW5jZWw7CisgICAgICAgIGJ5dGUgZlN0YXRlOworCisgICAgICAgIERpYWxvZ0xpc3RlbmVyKERpYWxvZyBkaWFsb2csCisgICAgICAgICAgICAgICAgICAgICAgIEJ1dHRvbiB5ZXMsCisgICAgICAgICAgICAgICAgICAgICAgIEJ1dHRvbiBubywKKyAgICAgICAgICAgICAgICAgICAgICAgQnV0dG9uIGNhbmNlbCkgeworCisgICAgICAgICAgICBmRGlhbG9nID0gZGlhbG9nOworICAgICAgICAgICAgZlllcyA9IHllczsKKyAgICAgICAgICAgIGZObyA9IG5vOworICAgICAgICAgICAgZkNhbmNlbCA9IGNhbmNlbDsKKyAgICAgICAgICAgIGZZZXMuYWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7CisgICAgICAgICAgICBmTm8uYWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7CisgICAgICAgICAgICBmQ2FuY2VsLmFkZEFjdGlvbkxpc3RlbmVyKHRoaXMpOworICAgICAgICAgICAgZlN0YXRlID0gLTE7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZXZlbnQpIHsKKworICAgICAgICAgICAgT2JqZWN0IHNvdXJjZSA9IGV2ZW50LmdldFNvdXJjZSgpOworICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBmWWVzKSB7CisgICAgICAgICAgICAgICAgZlN0YXRlID0gWUVTOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoc291cmNlID09IGZObykgeworICAgICAgICAgICAgICAgIGZTdGF0ZSA9IE5POworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoc291cmNlID09IGZDYW5jZWwpIHsKKyAgICAgICAgICAgICAgICBmU3RhdGUgPSBDQU5DRUw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZEaWFsb2cuZGlzcG9zZSgpOworICAgICAgICB9CisKKyAgICAgICAgYnl0ZSBnZXRTdGF0ZSgpIHsKKworICAgICAgICAgICAgcmV0dXJuIGZTdGF0ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIERpc3BsYXkgYSBkaWFsb2cgdGhhdCBhc2tzIHdoZXRoZXIgdGhlIHVzZXIgd2FudHMgdG8KKyAgICAgKiBzYXZlIGEgZG9jdW1lbnQuICBQb3NzaWJsZSByZXBvbnNlcyBhcmUgWWVzLCBObywgYW5kCisgICAgICogQ2FuY2VsLiAgVGhlIHJldHVybmVkIHZhbHVlIGluZGljYXRlcyB3aGljaCByZXNwb25zZQorICAgICAqIHdhcyBjaG9zZW4uCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgYnl0ZSBhc2tTYXZlKEZyYW1lIHBhcmVudCwgU3RyaW5nIGZpbGVOYW1lKSB7CisKKyAgICAgICAgRGlhbG9nIGRpYWxvZyA9IG5ldyBEaWFsb2cocGFyZW50LCB0cnVlKTsKKyAgICAgICAgZGlhbG9nLnNldExheW91dChuZXcgR3JpZExheW91dCgwLCAxKSk7CisgICAgICAgIAorICAgICAgICBTdHJpbmcgcGF0dGVybiA9IFJlc291cmNlVXRpbHMuZ2V0U3RyaW5nKEVkaXRvclJlc291cmNlcy5TQVZFX01TRyk7CisgICAgICAgIFN0cmluZyB0ZXh0ID0gTWVzc2FnZUZvcm1hdC5mb3JtYXQocGF0dGVybiwgbmV3IE9iamVjdFtdIHtmaWxlTmFtZX0pOworICAgICAgICBkaWFsb2cuYWRkKG5ldyBMYWJlbCh0ZXh0LCBMYWJlbC5DRU5URVIpKTsKKyAgICAgICAgCisgICAgICAgIEJ1dHRvbiB5ZXMgPSBuZXcgQnV0dG9uKFJlc291cmNlVXRpbHMuZ2V0U3RyaW5nKEVkaXRvclJlc291cmNlcy5ZRVMpKTsKKyAgICAgICAgQnV0dG9uIG5vID0gbmV3IEJ1dHRvbihSZXNvdXJjZVV0aWxzLmdldFN0cmluZyhFZGl0b3JSZXNvdXJjZXMuTk8pKTsKKyAgICAgICAgQnV0dG9uIGNhbmNlbCA9IG5ldyBCdXR0b24oUmVzb3VyY2VVdGlscy5nZXRTdHJpbmcoRWRpdG9yUmVzb3VyY2VzLkNBTkNFTCkpOworCisgICAgICAgIFBhbmVsIHBhbmVsID0gbmV3IFBhbmVsKCk7CisgICAgICAgIHBhbmVsLmFkZCh5ZXMpOworICAgICAgICBwYW5lbC5hZGQobm8pOworICAgICAgICBwYW5lbC5hZGQoY2FuY2VsKTsKKyAgICAgICAgZGlhbG9nLmFkZChwYW5lbCk7CisKKyAgICAgICAgRGlhbG9nTGlzdGVuZXIgbGlzdGVuZXIgPSBuZXcgRGlhbG9nTGlzdGVuZXIoZGlhbG9nLCB5ZXMsIG5vLCBjYW5jZWwpOworCisgICAgICAgIGRpYWxvZy5zZXRTaXplKDIyMCwgMTMwKTsKKyAgICAgICAgZGlhbG9nLnNob3coKTsKKworICAgICAgICByZXR1cm4gbGlzdGVuZXIuZ2V0U3RhdGUoKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9Bd3RGaWxlTWVudU1hbmFnZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vQXd0RmlsZU1lbnVNYW5hZ2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjlkZjJkNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vQXd0RmlsZU1lbnVNYW5hZ2VyLmphdmEKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogQXd0RmlsZU1lbnVNYW5hZ2VyLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDM6MDkgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5kZW1vOworCitpbXBvcnQgamF2YS5hd3QuTWVudTsKK2ltcG9ydCBqYXZhLmF3dC5NZW51SXRlbTsKKworZmluYWwgY2xhc3MgQXd0RmlsZU1lbnVNYW5hZ2VyIGV4dGVuZHMgRmlsZU1lbnVNYW5hZ2VyIHsKKworICAgIHByaXZhdGUgTWVudSBmTWVudTsKKyAgICAKKyAgICBwdWJsaWMgQXd0RmlsZU1lbnVNYW5hZ2VyKE1lbnUgbWVudSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVkaXRBcHBsaWNhdGlvbiBhcHBsaWNhdGlvbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudFdpbmRvdyBkb2N1bWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gc3VwcG9ydFN0eWxlZEZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gc3VwcG9ydFBsYWluRm9ybWF0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBzdXBlcihhcHBsaWNhdGlvbiwgZG9jdW1lbnQpOworICAgICAgICAKKyAgICAgICAgZk1lbnUgPSBtZW51OworICAgICAgICBjcmVhdGVJdGVtcyhzdXBwb3J0U3R5bGVkRm9ybWF0LCBzdXBwb3J0UGxhaW5Gb3JtYXQpOworICAgICAgICBmTWVudSA9IG51bGw7CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCBPYmplY3QgYWRkTWVudUl0ZW0oU3RyaW5nIGtleSkgeworCisgICAgICAgIE1lbnVJdGVtIGl0ZW0gPSBSZXNvdXJjZVV0aWxzLmNyZWF0ZU1lbnVJdGVtKGtleSk7CisgICAgICAgIGl0ZW0uYWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7CisgICAgICAgIGZNZW51LmFkZChpdGVtKTsKKyAgICAgICAgcmV0dXJuIGl0ZW07CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCB2b2lkIGFkZFNlcGFyYXRvcigpIHsKKyAgICAKKyAgICAgICAgZk1lbnUuYWRkKG5ldyBNZW51SXRlbSgiLSIpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL0NvZGVFZGl0LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL0NvZGVFZGl0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMGE2MTNiNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vQ29kZUVkaXQuamF2YQpAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogQ29kZUVkaXQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0MzowOSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LmRlbW87CisKK2ltcG9ydCBqYXZhLmF3dC5GaWxlRGlhbG9nOworaW1wb3J0IGphdmEuYXd0LkZyYW1lOworaW1wb3J0IGphdmEuYXd0Lk1lbnU7CitpbXBvcnQgamF2YS5hd3QuTWVudUJhcjsKK2ltcG9ydCBqYXZhLmF3dC5Ub29sa2l0OworCitpbXBvcnQgamF2YS5pby5GaWxlOworCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLlRleHRBdHRyaWJ1dGU7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxTZXR0aW5nczsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LmF3dHVpLkF3dE1lbnVCdWlsZGVyOworCitwdWJsaWMgY2xhc3MgQ29kZUVkaXQgZXh0ZW5kcyBFZGl0QXBwbGljYXRpb24geworICAgIAorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgCisgICAgcHJvdGVjdGVkIGZpbmFsIFRleHRQYW5lbFNldHRpbmdzIGZTZXR0aW5nczsKKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIHN5bmNocm9uaXplZCB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworCisgICAgICAgIGlmIChhcmdzLmxlbmd0aCA+IDAgJiYgYXJnc1swXS5lcXVhbHMoIi1zd2luZyIpKSB7CisgICAgICAgICAgICBuZXcgY29tLmlibS5yaWNodGV4dC5zd2luZ2RlbW8uU3dpbmdDb2RlRWRpdChhcmdzLDEpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbmV3IENvZGVFZGl0KGFyZ3MsIDApOworICAgICAgICB9CisgICAgfQorCisgICAgcHJvdGVjdGVkIENvZGVFZGl0KFN0cmluZ1tdIGFyZ3MsIGludCBzdGFydCkgeworCisgICAgICAgIHN1cGVyKFRvb2xraXQuZ2V0RGVmYXVsdFRvb2xraXQoKS5nZXRTeXN0ZW1DbGlwYm9hcmQoKSwKKyAgICAgICAgICAgICAgVGV4dERvY3VtZW50LlBMQUlOX1RFWFQpOworCisgICAgICAgIEF0dHJpYnV0ZU1hcCBkZWZhdWx0U3R5bGUgPSBuZXcgQXR0cmlidXRlTWFwKFRleHRBdHRyaWJ1dGUuU0laRSwgbmV3IEZsb2F0KDEyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hZGRBdHRyaWJ1dGUoVGV4dEF0dHJpYnV0ZS5GQU1JTFksICJNb25vc3BhY2VkIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgZlNldHRpbmdzID0gVGV4dFBhbmVsLmdldERlZmF1bHRTZXR0aW5ncygpOworICAgICAgICBmU2V0dGluZ3Muc2V0V3JhcHMoZmFsc2UpOworICAgICAgICBmU2V0dGluZ3MuYWRkRGVmYXVsdFZhbHVlcyhkZWZhdWx0U3R5bGUpOworICAgICAgICAKKyAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09IHN0YXJ0KSB7CisgICAgICAgICAgICBkb05ld1dpbmRvdygpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYm9vbGVhbiBvcGVuZWRBRG9jdW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9c3RhcnQ7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7CisKKyAgICAgICAgICAgICAgICBGaWxlIGZpbGUgPSBuZXcgRmlsZShhcmdzW2ldKTsKKyAgICAgICAgICAgICAgICBUZXh0RG9jdW1lbnQgZG9jdW1lbnQgPSBudWxsOworICAgICAgICAgICAgICAgIFRocm93YWJsZSBlcnJvciA9IG51bGw7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQgPSBUZXh0RG9jdW1lbnQuY3JlYXRlRnJvbUZpbGUoZmlsZSwgVGV4dERvY3VtZW50LlBMQUlOX1RFWFQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXRjaChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChlcnJvciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGVycm9yLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkRG9jdW1lbnQoZG9jdW1lbnQpOworICAgICAgICAgICAgICAgICAgICBvcGVuZWRBRG9jdW1lbnQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghb3BlbmVkQURvY3VtZW50KSB7CisgICAgICAgICAgICAgICAgcXVpdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCBEb2N1bWVudFdpbmRvdyBjcmVhdGVEb2N1bWVudFdpbmRvdyhUZXh0RG9jdW1lbnQgZG9jdW1lbnQpIHsKKworICAgICAgICByZXR1cm4gbmV3IEF3dERvY3VtZW50V2luZG93KHRoaXMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZTZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgU3ludGF4Q29sb3JlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVudXMpOworICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludFtdIG1lbnVzID0geyBBd3RNZW51QnVpbGRlci5FRElULCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBd3RNZW51QnVpbGRlci5CSURJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF3dE1lbnVCdWlsZGVyLkFCT1VUIH07CisKKyAgICBwdWJsaWMgVGV4dERvY3VtZW50IG9wZW5Eb2N1bWVudChGcmFtZSBkaWFsb2dQYXJlbnQpIHsKKyAgICAKKyAgICAgICAgU3RyaW5nIHRpdGxlID0gUmVzb3VyY2VVdGlscy5nZXRTdHJpbmcoRWRpdG9yUmVzb3VyY2VzLk9QRU5fVElUTEUpOworICAgICAgICAKKyAgICAgICAgRmlsZSBmaWxlID0gQXd0RG9jdW1lbnRXaW5kb3cuZ2V0RmlsZUZyb21EaWFsb2cobnVsbCwgdGl0bGUsIGRpYWxvZ1BhcmVudCwgRmlsZURpYWxvZy5MT0FEKTsKKyAgICAgICAgaWYgKGZpbGUgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gVGV4dERvY3VtZW50LmNyZWF0ZUZyb21GaWxlKGZpbGUsIFRleHREb2N1bWVudC5QTEFJTl9URVhUKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vRG9jdW1lbnRXaW5kb3cuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vRG9jdW1lbnRXaW5kb3cuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MDY0MDAzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9Eb2N1bWVudFdpbmRvdy5qYXZhCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IERvY3VtZW50V2luZG93LmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDM6MDkgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5kZW1vOworCitwdWJsaWMgaW50ZXJmYWNlIERvY3VtZW50V2luZG93IHsKKworICAgIHB1YmxpYyB2b2lkIGRvTmV3KCk7CisgICAgCisgICAgcHVibGljIHZvaWQgZG9PcGVuKCk7CisgICAgCisgICAgcHVibGljIGJvb2xlYW4gZG9DbG9zZSgpOworICAgIAorICAgIHB1YmxpYyBib29sZWFuIGRvU2F2ZSgpOworICAgIAorICAgIHB1YmxpYyBib29sZWFuIGRvU2F2ZUFzKGludCBmb3JtYXQpOworICAgIAorICAgIHB1YmxpYyB2b2lkIGRvUHJpbnQoKTsKKyAgICAKKyAgICBwdWJsaWMgdm9pZCBzZXRTaXplKGludCB3ZCwgaW50IGh0KTsKKyAgICAKKyAgICBwdWJsaWMgdm9pZCBzaG93KCk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9FZGl0QXBwbGljYXRpb24uamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vRWRpdEFwcGxpY2F0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2EyZTQ5NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vRWRpdEFwcGxpY2F0aW9uLmphdmEKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEVkaXRBcHBsaWNhdGlvbi5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjQzOjA5ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuZGVtbzsKKworaW1wb3J0IGphdmEuYXd0LkZyYW1lOworaW1wb3J0IGphdmEuYXd0Lk1lbnVCYXI7CisKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuQ2xpcGJvYXJkOworCitpbXBvcnQgamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQ7CisKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuTVRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxTZXR0aW5nczsKKworcHVibGljIGFic3RyYWN0IGNsYXNzIEVkaXRBcHBsaWNhdGlvbiB7CisKKyAgICBwcml2YXRlIENsaXBib2FyZCBmQ2xpcGJvYXJkOworICAgIHByaXZhdGUgaW50IGZEZWZhdWx0Rm9ybWF0OworICAgIHByaXZhdGUgVmVjdG9yIGZXaW5kb3dzID0gbmV3IFZlY3RvcigpOworICAgIHByaXZhdGUgaW50IGZVbnRpdGxlZENvdW50ID0gMDsKKyAgICAKKyAgICBwcm90ZWN0ZWQgRWRpdEFwcGxpY2F0aW9uKENsaXBib2FyZCBjbGlwYm9hcmQsIGludCBkZWZhdWx0Rm9ybWF0KSB7CisgICAgICAgIAorICAgICAgICBmQ2xpcGJvYXJkID0gY2xpcGJvYXJkOworICAgICAgICBmRGVmYXVsdEZvcm1hdCA9IGRlZmF1bHRGb3JtYXQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIE5ldyBkb2N1bWVudHMgYXJlIG5hbWVkICJVbnRpdGxlZCAxIiwgIlVudGl0bGVkIDIiLCBldGMuICBUaGlzCisgICAgICogbWV0aG9kIHJldHVybnMgdGhlIGFwcHJvcHJpYXRlIG5hbWUgZm9yIHRoZSBuZXh0IG5ldyBkb2N1bWVudC4KKyAgICAgKiBAcmV0dXJuIHRoZSBuZXh0IG5ldyBkb2N1bWVudCBuYW1lCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgZ2V0TmV4dE5ld05hbWUoKSB7CisKKyAgICAgICAgZlVudGl0bGVkQ291bnQgKz0gMTsKKyAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSBSZXNvdXJjZVV0aWxzLmdldFN0cmluZyhFZGl0b3JSZXNvdXJjZXMuVU5USVRMRURfTVNHKTsKKyAgICAgICAgcmV0dXJuIE1lc3NhZ2VGb3JtYXQuZm9ybWF0KHBhdHRlcm4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W117bmV3IEludGVnZXIoZlVudGl0bGVkQ291bnQpfSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBmaW5hbCBDbGlwYm9hcmQgZ2V0Q2xpcGJvYXJkKCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZDbGlwYm9hcmQ7CisgICAgfQorCisgICAgcHJvdGVjdGVkIGFic3RyYWN0IERvY3VtZW50V2luZG93IGNyZWF0ZURvY3VtZW50V2luZG93KFRleHREb2N1bWVudCBkb2N1bWVudCk7CisgICAgCisgICAgcHVibGljIGFic3RyYWN0IFRleHREb2N1bWVudCBvcGVuRG9jdW1lbnQoRnJhbWUgZGlhbG9nUGFyZW50KTsKKyAgICAKKyAgICBwdWJsaWMgZmluYWwgVGV4dERvY3VtZW50IGNyZWF0ZU5ld0RvY3VtZW50KCkgeworICAgIAorICAgICAgICBTdHJpbmcgbmFtZSA9IGdldE5leHROZXdOYW1lKCk7CisgICAgICAgIGludCBmb3JtYXQgPSBmRGVmYXVsdEZvcm1hdDsKKyAgICAgICAgcmV0dXJuIFRleHREb2N1bWVudC5jcmVhdGVFbXB0eShuYW1lLCBmb3JtYXQpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBkb05ld1dpbmRvdygpIHsKKyAgICAgICAgCisgICAgICAgIGFkZERvY3VtZW50KFRleHREb2N1bWVudC5jcmVhdGVFbXB0eShnZXROZXh0TmV3TmFtZSgpLCBmRGVmYXVsdEZvcm1hdCkpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBhZGREb2N1bWVudChUZXh0RG9jdW1lbnQgZG9jdW1lbnQpIHsKKyAgICAgICAgCisgICAgICAgIGZpbmFsIERvY3VtZW50V2luZG93IHdpbmRvdyA9IGNyZWF0ZURvY3VtZW50V2luZG93KGRvY3VtZW50KTsKKworICAgICAgICB3aW5kb3cuc2V0U2l6ZSg1MDAsIDQwMCk7CisgICAgICAgIHdpbmRvdy5zaG93KCk7CisgICAgICAgIGZXaW5kb3dzLmFkZEVsZW1lbnQod2luZG93KTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmVtb3ZlIGRvY3VtZW50IGZyb20gbGlzdCBvZiBkb2N1bWVudHMuICBRdWl0IGFwcGxpY2F0aW9uIGlmIGxpc3QKKyAgICAgKiBsZW5ndGggZmFsbHMgdG8gemVyby4KKyAgICAgKiBAcGFyYW0gZG9jdW1lbnQgdGhlIGRvY3VtZW50IHRvIHJlbW92ZQorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHJlbW92ZURvY3VtZW50V2luZG93KERvY3VtZW50V2luZG93IHdpbmRvdykgeworCisgICAgICAgIGZXaW5kb3dzLnJlbW92ZUVsZW1lbnQod2luZG93KTsKKyAgICAgICAgaWYgKGZXaW5kb3dzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgcXVpdCgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogR28gdGhyb3VnaCBsaXN0IG9mIGRvY3VtZW50cyBhbmQgYXR0ZW1wdCB0byBjbG9zZSBlYWNoIGRvY3VtZW50LgorICAgICAqIElmIGFsbCBkb2N1bWVudHMgY2xvc2Ugc3VjY2Vzc2Z1bGx5LCB0aGVuIGV4aXQuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgZG9FeGl0KCkgeworCisgICAgICAgIC8vIENsb25lIGZXaW5kb3dzIHNpbmNlIGl0IGNhbiBnZXQgbW9kaWZpZWQgd2hpbGUgYmVpbmcgdHJhdmVyc2VkLgorICAgICAgICBWZWN0b3Igd2luZG93cyA9IChWZWN0b3IpIGZXaW5kb3dzLmNsb25lKCk7CisKKyAgICAgICAgaW50IHNpemUgPSB3aW5kb3dzLnNpemUoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBEb2N1bWVudFdpbmRvdyB3aW5kb3cgPSAoRG9jdW1lbnRXaW5kb3cpIHdpbmRvd3MuZWxlbWVudEF0KGkpOworICAgICAgICAgICAgaWYgKCF3aW5kb3cuZG9DbG9zZSgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gcXVpdCB3aWxsIGJlIGNhbGxlZCB3aGVuIGxhc3QgZG9jdW1lbnQgcmVtb3ZlcyBpdHNlbGYKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDYWxsZWQgd2hlbiBsYXN0IGRvY3VtZW50IHdpbmRvdyBjbG9zZXMuICBEZWZhdWx0IGltcGxlbWVudGF0aW9uCisgICAgICogY2FsbHMgU3lzdGVtLmV4aXQuCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgcXVpdCgpIHsKKworICAgICAgICBTeXN0ZW0uZXhpdCgwKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9FZGl0RGVtby5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9FZGl0RGVtby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI3ZTA4ODQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL0VkaXREZW1vLmphdmEKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEVkaXREZW1vLmphdmEsdiAkICRSZXZpc2lvbjogMS4yICQgJERhdGU6IDIwMDAvMDQvMjIgMDM6MzA6NTIgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5kZW1vOworCitpbXBvcnQgamF2YS5hd3QuRmlsZURpYWxvZzsKK2ltcG9ydCBqYXZhLmF3dC5GcmFtZTsKK2ltcG9ydCBqYXZhLmF3dC5NZW51OworaW1wb3J0IGphdmEuYXd0Lk1lbnVCYXI7CitpbXBvcnQgamF2YS5hd3QuVG9vbGtpdDsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLlN0cmVhbUNvcnJ1cHRlZEV4Y2VwdGlvbjsKKworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxTZXR0aW5nczsKKworLyoqCisgKiBFZGl0RGVtbyBpcyB0aGUgbWFpbiBjbGFzcyBmb3IgYSBzaW1wbGUsIG11bHRpcGxlLWRvY3VtZW50CisgKiBzdHlsZWQgdGV4dCBlZGl0b3IsIGJ1aWx0IHdpdGggdGhlIGNsYXNzZXMgaW4gdGhlIHRleHRwYW5lbAorICogYW5kIHRleHRmcmFtZSBwYWNrYWdlcy4KKyAqIDxwPgorICogVG8gcnVuIEVkaXREZW1vLCB0eXBlOgorICogPGJsb2NrcXVvdGU+PHByZT4KKyAqIGphdmEgY29tLmlibS5yaWNodGV4dC5kZW1vLkVkaXREZW1vIFtmaWxlMV0gW2ZpbGUyXSBbLi4uXQorICogPC9wcmU+PC9ibG9ja3F1b3RlPgorICogd2hlcmUgdGhlIGZpbGVuYW1lcyBhcmUgZmlsZXMgc2F2ZWQgd2l0aCB0aGlzIGRlbW8uCisgKi8KK3B1YmxpYyBjbGFzcyBFZGl0RGVtbyBleHRlbmRzIEVkaXRBcHBsaWNhdGlvbiB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIAorICAgIHB1YmxpYyBzdGF0aWMgc3luY2hyb25pemVkIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisKKyAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID4gMCAmJiBhcmdzWzBdLmVxdWFscygiLXN3aW5nIikpIHsKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLnJpY2h0ZXh0LnN3aW5nZGVtby5Td2luZ0VkaXREZW1vKGFyZ3MsMSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBuZXcgRWRpdERlbW8oYXJncywgMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgRWRpdERlbW8oU3RyaW5nW10gYXJncywgaW50IHN0YXJ0KSB7CisKKyAgICAgICAgc3VwZXIoVG9vbGtpdC5nZXREZWZhdWx0VG9vbGtpdCgpLmdldFN5c3RlbUNsaXBib2FyZCgpLCAKKyAgICAgICAgICAgICAgVGV4dERvY3VtZW50LlNUWUxFRF9URVhUKTsKKworICAgICAgICBpZiAoYXJncy5sZW5ndGggPT0gc3RhcnQpIHsKKyAgICAgICAgICAgIGRvTmV3V2luZG93KCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBib29sZWFuIG9wZW5lZEFEb2N1bWVudCA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChpbnQgaT1zdGFydDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspIHsKKworICAgICAgICAgICAgICAgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKGFyZ3NbaV0pOworICAgICAgICAgICAgICAgIFRleHREb2N1bWVudCBkb2N1bWVudCA9IGdldERvY3VtZW50RnJvbUZpbGUoZmlsZSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkRG9jdW1lbnQoZG9jdW1lbnQpOworICAgICAgICAgICAgICAgICAgICBvcGVuZWRBRG9jdW1lbnQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghb3BlbmVkQURvY3VtZW50KSB7CisgICAgICAgICAgICAgICAgcXVpdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgVGV4dERvY3VtZW50IGdldERvY3VtZW50RnJvbUZpbGUoRmlsZSBmaWxlKSB7CisgICAgCisgICAgICAgIEV4Y2VwdGlvbiBleGNlcHRpb24gPSBudWxsOworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBUZXh0RG9jdW1lbnQuY3JlYXRlRnJvbUZpbGUoZmlsZSwgVGV4dERvY3VtZW50LlNUWUxFRF9URVhUKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChTdHJlYW1Db3JydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gVGV4dERvY3VtZW50LmNyZWF0ZUZyb21GaWxlKGZpbGUsIFRleHREb2N1bWVudC5QTEFJTl9URVhUKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoKEV4Y2VwdGlvbiBlMikgeworICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiA9IGUyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhdGNoKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBleGNlcHRpb24gPSBlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIkV4Y2VwdGlvbiBvcGVuaW5nIGZpbGUuIik7CisgICAgICAgIGV4Y2VwdGlvbi5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgRG9jdW1lbnRXaW5kb3cgY3JlYXRlRG9jdW1lbnRXaW5kb3coVGV4dERvY3VtZW50IGRvY3VtZW50KSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gbmV3IEF3dERvY3VtZW50V2luZG93KHRoaXMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRQYW5lbC5nZXREZWZhdWx0U2V0dGluZ3MoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgVGV4dERvY3VtZW50IG9wZW5Eb2N1bWVudChGcmFtZSBkaWFsb2dQYXJlbnQpIHsKKyAgICAKKyAgICAgICAgU3RyaW5nIHRpdGxlID0gUmVzb3VyY2VVdGlscy5nZXRTdHJpbmcoRWRpdG9yUmVzb3VyY2VzLk9QRU5fVElUTEUpOworICAgICAgICBGaWxlIGZpbGUgPSBBd3REb2N1bWVudFdpbmRvdy5nZXRGaWxlRnJvbURpYWxvZyhudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nUGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlRGlhbG9nLkxPQUQpOworICAgICAgICBpZiAoZmlsZSAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZ2V0RG9jdW1lbnRGcm9tRmlsZShmaWxlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vRWRpdG9yUmVzb3VyY2VzLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL0VkaXRvclJlc291cmNlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNmNDNlYjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL0VkaXRvclJlc291cmNlcy5qYXZhCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBFZGl0b3JSZXNvdXJjZXMuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0MzowOSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LmRlbW87CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LktleUV2ZW50OworCitwdWJsaWMgZmluYWwgY2xhc3MgRWRpdG9yUmVzb3VyY2VzIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgLy8gbWVudSBuYW1lcyAtIHZhbHVlcyBhcmUgU3RyaW5ncworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZJTEUgPSAiRmlsZSI7CisKKyAgICAvLyBmaWxlIG1lbnUgaXRlbXMgLSB2YWx1ZXMgYXJlIE1lbnVEYXRhIGluc3RhbmNlcworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5FVyA9ICJOZXciOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5FV19XSU5ET1cgPSAiTmV3IFdpbmRvdyI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1BFTiA9ICJPcGVuLi4uIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTQVZFID0gIlNhdmUiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNBVkVfQVMgPSAiU2F2ZSBBcy4uLiI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0FWRV9BU19TVFlMRUQgPSAiU2F2ZSBBcyBTdHlsZWQgVGV4dC4uLiI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0FWRV9BU19URVhUID0gIlNhdmUgQXMgUGxhaW4gVGV4dC4uLiI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0xPU0UgPSAiQ2xvc2UiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBSSU5UID0gIlByaW50IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFWElUID0gIkV4aXQiOworCisgICAgLy8gYnV0dG9uIGxhYmVscyAtIHZhbHVlcyBhcmUgU3RyaW5ncworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFlFUyA9ICJZZXMiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE5PID0gIk5vIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDQU5DRUwgPSAiQ2FuY2VsIjsKKworICAgIC8vIG1lc3NhZ2Ugc3RyaW5ncyAtIHZhbHVlcyBhcmUgU3RyaW5ncworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNBVkVfTVNHID0gIlNhdmUgezB9IGJlZm9yZSBjbG9zaW5nPyI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVU5USVRMRURfTVNHID0gIlVudGl0bGVkIHswfSI7CisKKyAgICAvLyB3aW5kb3cgYW5kIGRpYWxvZyB0aXRsZXMgLSB2YWx1ZXMgYXJlIFN0cmluZ3MKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUEVOX1RJVExFID0gIk9wZW4gRG9jdW1lbnQiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNBVkVfVElUTEUgPSAiU2F2ZSBBcyI7CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QgdGhhdCByZXR1cm5zIGEgdHdvLWVsZW1lbnQKKyAgICAgKiBPYmplY3QgYXJyYXkuICBUaGUgZmlyc3QgZWxlbWVudCBpcyBuYW1lLCB0aGUKKyAgICAgKiBzZWNvbmQgaXMgYSBNZW51RGF0YSBpbnN0YW5jZSB3aXRoIHRoZSBnaXZlbgorICAgICAqIHNob3J0Y3V0LgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIE9iamVjdFtdIG1ha2VFbnRyeShTdHJpbmcgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBzaG9ydEN1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGtleUNvZGUpIHsKKworICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdIHsgbmFtZSwgbmV3IE1lbnVEYXRhKG5hbWUsIHNob3J0Q3V0LCBrZXlDb2RlKSB9OworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG1ldGhvZCB0aGF0IHJldHVybnMgYSB0d28tZWxlbWVudAorICAgICAqIE9iamVjdCBhcnJheS4gIFRoZSBmaXJzdCBlbGVtZW50IGlzIG5hbWUsIHRoZQorICAgICAqIHNlY29uZCBpcyBhIE1lbnVEYXRhIGluc3RhbmNlLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIE9iamVjdFtdIG1ha2VFbnRyeShTdHJpbmcgbmFtZSkgeworCisgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W10geyBuYW1lLCBuZXcgTWVudURhdGEobmFtZSkgfTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QgdGhhdCByZXR1cm5zIGEgdHdvLWVsZW1lbnQKKyAgICAgKiBPYmplY3QgYXJyYXkgaW4gd2hpY2ggYm90aCBlbGVtZW50cyBhcmUgb2JqLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIE9iamVjdFtdIGR1cGxpY2F0ZShPYmplY3Qgb2JqKSB7CisKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXSB7IG9iaiwgb2JqIH07CisgICAgfQorCisgICAgcHJvdGVjdGVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXVtdIHsKKyAgICAgICAgICAgIGR1cGxpY2F0ZShGSUxFKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShZRVMpLAorICAgICAgICAgICAgZHVwbGljYXRlKE5PKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShDQU5DRUwpLAorICAgICAgICAgICAgZHVwbGljYXRlKFNBVkVfTVNHKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShTQVZFX1RJVExFKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShPUEVOX1RJVExFKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShVTlRJVExFRF9NU0cpLAorICAgICAgICAgICAgbWFrZUVudHJ5KE5FVywgJ24nLCBLZXlFdmVudC5WS19OKSwKKyAgICAgICAgICAgIG1ha2VFbnRyeShORVdfV0lORE9XKSwKKyAgICAgICAgICAgIG1ha2VFbnRyeShPUEVOLCAnbycsIEtleUV2ZW50LlZLX08pLAorICAgICAgICAgICAgbWFrZUVudHJ5KFNBVkUsICdzJywgS2V5RXZlbnQuVktfUyksCisgICAgICAgICAgICBtYWtlRW50cnkoU0FWRV9BUyksCisgICAgICAgICAgICBtYWtlRW50cnkoU0FWRV9BU19TVFlMRUQpLAorICAgICAgICAgICAgbWFrZUVudHJ5KFNBVkVfQVNfVEVYVCksCisgICAgICAgICAgICBtYWtlRW50cnkoQ0xPU0UpLAorICAgICAgICAgICAgbWFrZUVudHJ5KFBSSU5UKSwKKyAgICAgICAgICAgIG1ha2VFbnRyeShFWElUKSwKKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL0ZpbGVNZW51TWFuYWdlci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9GaWxlTWVudU1hbmFnZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hMTljMDRkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9GaWxlTWVudU1hbmFnZXIuamF2YQpAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogRmlsZU1lbnVNYW5hZ2VyLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDM6MDkgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5kZW1vOworCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uTGlzdGVuZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uRXZlbnQ7CisKKy8qKgorICogVGhpcyBjbGFzcyBjcmVhdGVzIGEgRmlsZSBtZW51IGFuZCBtYW5hZ2VzIHVzZXIgaW50ZXJhY3Rpb25zCisgKiB3aXRoIHRoZSBtZW51LgorICovCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgRmlsZU1lbnVNYW5hZ2VyIGltcGxlbWVudHMgQWN0aW9uTGlzdGVuZXIgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIEVkaXRBcHBsaWNhdGlvbiBmQXBwbGljYXRpb247CisgICAgcHJpdmF0ZSBEb2N1bWVudFdpbmRvdyBmRG9jdW1lbnRXaW5kb3c7CisgICAgcHJpdmF0ZSBPYmplY3QgZk5ldywgZk5ld1dpbmRvdywgZk9wZW4sIGZTYXZlOworICAgIHByaXZhdGUgT2JqZWN0IGZTYXZlQXNTdHlsZWQsIGZTYXZlQXNUZXh0LCBmQ2xvc2UsIGZQcmludCwgZkV4aXQ7CisKKyAgICBwcm90ZWN0ZWQgRmlsZU1lbnVNYW5hZ2VyKEVkaXRBcHBsaWNhdGlvbiBhcHBsaWNhdGlvbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudFdpbmRvdyBkb2N1bWVudCkgeworCisgICAgICAgIGZBcHBsaWNhdGlvbiA9IGFwcGxpY2F0aW9uOworICAgICAgICBmRG9jdW1lbnRXaW5kb3cgPSBkb2N1bWVudDsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgY3JlYXRlSXRlbXMoYm9vbGVhbiBzdXBwb3J0U3R5bGVkRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gc3VwcG9ydFBsYWluRm9ybWF0KSB7CisgICAgICAgIAorICAgICAgICBpZiAoIXN1cHBvcnRTdHlsZWRGb3JtYXQgJiYgIXN1cHBvcnRQbGFpbkZvcm1hdCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiTXVzdCBzdXBwb3J0IGF0IGxlYXN0IG9uZSBmb3JtYXQuIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZOZXcgPSBhZGRNZW51SXRlbShFZGl0b3JSZXNvdXJjZXMuTkVXKTsKKyAgICAgICAgZk5ld1dpbmRvdyA9IGFkZE1lbnVJdGVtKEVkaXRvclJlc291cmNlcy5ORVdfV0lORE9XKTsKKyAgICAgICAgCisgICAgICAgIGFkZFNlcGFyYXRvcigpOworCisgICAgICAgIGZPcGVuID0gYWRkTWVudUl0ZW0oRWRpdG9yUmVzb3VyY2VzLk9QRU4pOworCisgICAgICAgIGZTYXZlID0gYWRkTWVudUl0ZW0oRWRpdG9yUmVzb3VyY2VzLlNBVkUpOworICAgICAgICAKKyAgICAgICAgaWYgKHN1cHBvcnRTdHlsZWRGb3JtYXQpIHsKKyAgICAgICAgICAgIGlmIChzdXBwb3J0UGxhaW5Gb3JtYXQpIHsKKyAgICAgICAgICAgICAgICBmU2F2ZUFzU3R5bGVkID0gYWRkTWVudUl0ZW0oRWRpdG9yUmVzb3VyY2VzLlNBVkVfQVNfU1RZTEVEKTsKKyAgICAgICAgICAgICAgICBmU2F2ZUFzVGV4dCA9IGFkZE1lbnVJdGVtKEVkaXRvclJlc291cmNlcy5TQVZFX0FTX1RFWFQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZlNhdmVBc1N0eWxlZCA9IGFkZE1lbnVJdGVtKEVkaXRvclJlc291cmNlcy5TQVZFX0FTKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZTYXZlQXNUZXh0ID0gYWRkTWVudUl0ZW0oRWRpdG9yUmVzb3VyY2VzLlNBVkVfQVMpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBhZGRTZXBhcmF0b3IoKTsKKyAgICAgICAgZkNsb3NlID0gYWRkTWVudUl0ZW0oRWRpdG9yUmVzb3VyY2VzLkNMT1NFKTsKKyAgICAgICAgYWRkU2VwYXJhdG9yKCk7CisgICAgICAgIGZQcmludCA9IGFkZE1lbnVJdGVtKEVkaXRvclJlc291cmNlcy5QUklOVCk7CisgICAgICAgIGFkZFNlcGFyYXRvcigpOworICAgICAgICBmRXhpdCA9IGFkZE1lbnVJdGVtKEVkaXRvclJlc291cmNlcy5FWElUKTsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIGFic3RyYWN0IE9iamVjdCBhZGRNZW51SXRlbShTdHJpbmcga2V5KTsKKworICAgIHByb3RlY3RlZCBhYnN0cmFjdCB2b2lkIGFkZFNlcGFyYXRvcigpOworICAgIAorICAgIHB1YmxpYyBmaW5hbCB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBldmVudCkgeworCisgICAgICAgIE9iamVjdCBzb3VyY2UgPSBldmVudC5nZXRTb3VyY2UoKTsKKworICAgICAgICBpZiAoc291cmNlID09IGZOZXcpIHsKKyAgICAgICAgICAgIGZEb2N1bWVudFdpbmRvdy5kb05ldygpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNvdXJjZSA9PSBmTmV3V2luZG93KSB7CisgICAgICAgICAgICBmQXBwbGljYXRpb24uZG9OZXdXaW5kb3coKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzb3VyY2UgPT0gZk9wZW4pIHsKKyAgICAgICAgICAgIGZEb2N1bWVudFdpbmRvdy5kb09wZW4oKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzb3VyY2UgPT0gZkNsb3NlKSB7CisgICAgICAgICAgICBmRG9jdW1lbnRXaW5kb3cuZG9DbG9zZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNvdXJjZSA9PSBmU2F2ZSkgeworICAgICAgICAgICAgZkRvY3VtZW50V2luZG93LmRvU2F2ZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHNvdXJjZSA9PSBmU2F2ZUFzU3R5bGVkKSB7CisgICAgICAgICAgICBmRG9jdW1lbnRXaW5kb3cuZG9TYXZlQXMoVGV4dERvY3VtZW50LlNUWUxFRF9URVhUKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzb3VyY2UgPT0gZlNhdmVBc1RleHQpIHsKKyAgICAgICAgICAgIGZEb2N1bWVudFdpbmRvdy5kb1NhdmVBcyhUZXh0RG9jdW1lbnQuUExBSU5fVEVYVCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc291cmNlID09IGZQcmludCkgeworICAgICAgICAgICAgZkRvY3VtZW50V2luZG93LmRvUHJpbnQoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzb3VyY2UgPT0gZkV4aXQpIHsKKyAgICAgICAgICAgIGZBcHBsaWNhdGlvbi5kb0V4aXQoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiVW5rbm93biBldmVudCBzb3VyY2U6ICIgKyBzb3VyY2UpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vTWVudURhdGEuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vTWVudURhdGEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jZGY0MWU5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9NZW51RGF0YS5qYXZhCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IE1lbnVEYXRhLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDM6MDkgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5kZW1vOworCitwdWJsaWMgZmluYWwgY2xhc3MgTWVudURhdGEgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIFN0cmluZyBmTmFtZTsKKyAgICBwcml2YXRlIGJvb2xlYW4gZkhhc1Nob3J0Y3V0OworICAgIHByaXZhdGUgY2hhciBmU2hvcnRjdXQ7CisgICAgcHJpdmF0ZSBpbnQgZlNob3J0Y3V0S2V5Q29kZTsKKworICAgIHB1YmxpYyBNZW51RGF0YShTdHJpbmcgbmFtZSkgeworCisgICAgICAgIGZOYW1lID0gbmFtZTsKKyAgICAgICAgZkhhc1Nob3J0Y3V0ID0gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIE1lbnVEYXRhKFN0cmluZyBuYW1lLCBjaGFyIGNoLCBpbnQga2V5Q29kZSkgeworCisgICAgICAgIGZOYW1lID0gbmFtZTsKKyAgICAgICAgZkhhc1Nob3J0Y3V0ID0gdHJ1ZTsKKyAgICAgICAgZlNob3J0Y3V0ID0gY2g7CisgICAgICAgIGZTaG9ydGN1dEtleUNvZGUgPSBrZXlDb2RlOworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKKworICAgICAgICByZXR1cm4gZk5hbWU7CisgICAgfQorCisgICAgcHVibGljIGNoYXIgZ2V0U2hvcnRjdXQoKSB7CisKKyAgICAgICAgaWYgKCFmSGFzU2hvcnRjdXQpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTWVudSBkb2Vzbid0IGhhdmUgc2hvcnRjdXQiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZlNob3J0Y3V0OworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgaW50IGdldFNob3J0Y3V0S2V5Q29kZSgpIHsKKyAgICAKKyAgICAgICAgcmV0dXJuIGZTaG9ydGN1dEtleUNvZGU7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaGFzU2hvcnRjdXQoKSB7CisKKyAgICAgICAgcmV0dXJuIGZIYXNTaG9ydGN1dDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9SZXNvdXJjZVV0aWxzLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL1Jlc291cmNlVXRpbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lNjdkZjgxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9SZXNvdXJjZVV0aWxzLmphdmEKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogUmVzb3VyY2VVdGlscy5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjQzOjA5ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuZGVtbzsKKworaW1wb3J0IGphdmEuYXd0Lk1lbnVJdGVtOworaW1wb3J0IGphdmEuYXd0Lk1lbnVTaG9ydGN1dDsKKworaW1wb3J0IGphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOworCisvKioKKyAqIFV0aWxpdHkgY2xhc3MgZm9yIGRlYWxpbmcgd2l0aCByZXNvdXJjZSBkYXRhLgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgUmVzb3VyY2VVdGlscyB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgc3RhdGljIFJlc291cmNlQnVuZGxlIEJVTkRMRTsKKyAgICBzdGF0aWMgeworICAgICAgICBTdHJpbmcgYnVuZGxlTmFtZSA9ICJjb20uaWJtLnJpY2h0ZXh0LmRlbW8uRWRpdG9yUmVzb3VyY2VzIjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIEJVTkRMRSA9IFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZShidW5kbGVOYW1lKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDb3VsZG4ndCBsb2FkICIgKyBidW5kbGVOYW1lICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOyAgRXhjZXB0aW9uOiAiICsgZSk7CisgICAgICAgICAgICBCVU5ETEUgPSBuZXcgRWRpdG9yUmVzb3VyY2VzKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRTdHJpbmcoU3RyaW5nIGtleSkgeworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gQlVORExFLmdldFN0cmluZyhrZXkpOworICAgICAgICB9CisgICAgICAgIGNhdGNoKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICByZXR1cm4ga2V5OworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBNZW51RGF0YSBnZXRNZW51RGF0YShTdHJpbmcga2V5KSB7CisgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gKE1lbnVEYXRhKSBCVU5ETEUuZ2V0T2JqZWN0KGtleSk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgTWVudURhdGEoa2V5KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAgICAgCisgICAgcHVibGljIHN0YXRpYyBNZW51SXRlbSBjcmVhdGVNZW51SXRlbShTdHJpbmcga2V5KSB7CisKKyAgICAgICAgTWVudURhdGEgbWVudURhdGEgPSBnZXRNZW51RGF0YShrZXkpOworCisgICAgICAgIGlmIChtZW51RGF0YS5oYXNTaG9ydGN1dCgpKSB7CisgICAgICAgICAgICBNZW51U2hvcnRjdXQgc2hvcnRjdXQgPSBuZXcgTWVudVNob3J0Y3V0KG1lbnVEYXRhLmdldFNob3J0Y3V0KCkpOworICAgICAgICAgICAgcmV0dXJuIG5ldyBNZW51SXRlbShtZW51RGF0YS5nZXROYW1lKCksIHNob3J0Y3V0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgTWVudUl0ZW0obWVudURhdGEuZ2V0TmFtZSgpKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL1N5bnRheENvbG9yZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vU3ludGF4Q29sb3Jlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmNmNDg3MzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9kZW1vL1N5bnRheENvbG9yZXIuamF2YQpAQCAtMCwwICsxLDI4OCBAQAorLyoKKyAqICRSQ1NmaWxlOiBTeW50YXhDb2xvcmVyLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDM6MDkgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCisKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5kZW1vOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5hd3R1aS5UZXh0RnJhbWU7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuTVRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxFdmVudDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5UZXh0UGFuZWxMaXN0ZW5lcjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVkVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVNb2RpZmllcjsKKworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5UZXh0QXR0cmlidXRlOworCitpbXBvcnQgamF2YS5hd3QuQ29sb3I7CisKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dBZGFwdGVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0V2ZW50OworCitpbXBvcnQgamF2YS50ZXh0LkJyZWFrSXRlcmF0b3I7CitpbXBvcnQgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGphdmEudGV4dC5Db2xsYXRpb25LZXk7CitpbXBvcnQgamF2YS50ZXh0LkNvbGxhdG9yOworCitpbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOworaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7CisKKy8qKgorICogU3ludGF4Q29sb3JlciBpcyBhIFRleHRQYW5lbExpc3RlbmVyIHRoYXQgYXBwbGllcyBhIHN0eWxlCisgKiB0byBhIHNldCBvZiB3b3JkcyBpbiB0aGUgVGV4dFBhbmVsLgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgU3ludGF4Q29sb3JlciBpbXBsZW1lbnRzIFRleHRQYW5lbExpc3RlbmVyIHsKKyAgICAKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIENvbG9yZXIgeworICAgICAgICAKKyAgICAgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAgICAgcHJpdmF0ZSBpbnQgZlN0YXJ0OworICAgICAgICBwcml2YXRlIEhhc2h0YWJsZSBmU3R5bGVNYXA7CisgICAgICAgIHByaXZhdGUgQ29sbGF0b3IgZkNvbGxhdG9yID0gQ29sbGF0b3IuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgcHJpdmF0ZSBCcmVha0l0ZXJhdG9yIGZCcmVha0l0ZXIgPSBCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZSgpOworCisgICAgICAgIHByaXZhdGUgU3RyaW5nIGZUZXh0OworICAgICAgICBwcml2YXRlIGludCBmQ3VycmVudFN0YXJ0OworICAgICAgICBwcml2YXRlIGludCBmQ3VycmVudExpbWl0OworICAgICAgICBwcml2YXRlIEF0dHJpYnV0ZU1hcCBmQ3VycmVudFN0eWxlOworICAgICAgICAKKyAgICAgICAgQ29sb3JlcihIYXNodGFibGUgc3R5bGVzKSB7CisKKyAgICAgICAgICAgIGZTdHlsZU1hcCA9IG5ldyBIYXNodGFibGUoc3R5bGVzLnNpemUoKSk7CisKKyAgICAgICAgICAgIEVudW1lcmF0aW9uIGUgPSBzdHlsZXMua2V5cygpOworICAgICAgICAgICAgd2hpbGUgKGUuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgayA9IChTdHJpbmcpIGUubmV4dEVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICBmU3R5bGVNYXAucHV0KGZDb2xsYXRvci5nZXRDb2xsYXRpb25LZXkoayksIHN0eWxlcy5nZXQoaykpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIHNldChDaGFyYWN0ZXJJdGVyYXRvciB0ZXh0LCBpbnQgc3RhcnQsIGludCBsaW1pdCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBmU3RhcnQgPSBzdGFydDsKKworICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHNiID0gbmV3IFN0cmluZ0J1ZmZlcihsaW1pdC1zdGFydCk7CisgICAgICAgICAgICBmb3IgKGNoYXIgYz10ZXh0LnNldEluZGV4KHN0YXJ0KTsgdGV4dC5nZXRJbmRleCgpICE9IGxpbWl0OyBjPXRleHQubmV4dCgpKSB7CisgICAgICAgICAgICAgICAgc2IuYXBwZW5kKGMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZlRleHQgPSBzYi50b1N0cmluZygpOworICAgICAgICAgICAgZkN1cnJlbnRTdGFydCA9IGZDdXJyZW50TGltaXQgPSAwOworICAgICAgICAgICAgZkN1cnJlbnRTdHlsZSA9IEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQOworICAgICAgICAgICAgCisgICAgICAgICAgICBmQnJlYWtJdGVyLnNldFRleHQoZlRleHQpOworICAgICAgICAgICAgZkJyZWFrSXRlci5maXJzdCgpOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgYm9vbGVhbiBuZXh0KCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZkN1cnJlbnRMaW1pdCA9PSBmVGV4dC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGZUZXh0ID0gbnVsbDsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZDdXJyZW50U3RhcnQgPSBmQ3VycmVudExpbWl0OworICAgICAgICAgICAgZkN1cnJlbnRMaW1pdCA9IGZCcmVha0l0ZXIubmV4dCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgd29yZCA9IGZUZXh0LnN1YnN0cmluZyhmQ3VycmVudFN0YXJ0LCBmQ3VycmVudExpbWl0KTsKKyAgICAgICAgICAgIENvbGxhdGlvbktleSBjayA9IGZDb2xsYXRvci5nZXRDb2xsYXRpb25LZXkod29yZCk7CisgICAgICAgICAgICBmQ3VycmVudFN0eWxlID0gKEF0dHJpYnV0ZU1hcCkgZlN0eWxlTWFwLmdldChjayk7CisgICAgICAgICAgICBpZiAoZkN1cnJlbnRTdHlsZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgZkN1cnJlbnRTdHlsZSA9IEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGludCBjdXJyZW50U3RhcnQoKSB7CisgICAgICAgICAgICByZXR1cm4gZkN1cnJlbnRTdGFydCArIGZTdGFydDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50IGN1cnJlbnRMaW1pdCgpIHsKKyAgICAgICAgICAgIHJldHVybiBmQ3VycmVudExpbWl0ICsgZlN0YXJ0OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBBdHRyaWJ1dGVNYXAgY3VycmVudFN0eWxlKCkgeworICAgICAgICAgICAgcmV0dXJuIGZDdXJyZW50U3R5bGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIEJyZWFrSXRlcmF0b3IgZkJyZWFrSXRlciA9IEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKCk7CisgICAgcHJpdmF0ZSBDb2xvcmVyIGZDb2xvcmVyOworICAgIHByaXZhdGUgYm9vbGVhbiBmTW9kaWZ5aW5nID0gZmFsc2U7CisgICAgcHJpdmF0ZSBBdHRyaWJ1dGVNYXAgZkRlZmF1bHRLZXl3b3JkU3R5bGUgPSBBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUDsKKyAgICBwcml2YXRlIEhhc2h0YWJsZSBmTW9kaWZpZXJDYWNoZTsKKyAgICAKKyAgICBwdWJsaWMgU3ludGF4Q29sb3JlcigpIHsKKyAgICAgICAgCisgICAgICAgIHRoaXMobnVsbCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBTeW50YXhDb2xvcmVyKE1UZXh0UGFuZWwgcGFuZWwpIHsKKyAgICAgICAgCisgICAgICAgIEhhc2h0YWJsZSBodCA9IG5ldyBIYXNodGFibGUoKTsKKworICAgICAgICAvL1VuY29tbWVudCB0aGlzIHRvIG1ha2Uga2V5d29yZHMgYXBwZWFyIHJpZ2h0LXRvLWxlZnQhCisgICAgICAgIC8vZkRlZmF1bHRLZXl3b3JkU3R5bGUgPSBmRGVmYXVsdEtleXdvcmRTdHlsZS5hZGRBdHRyaWJ1dGUoVGV4dEF0dHJpYnV0ZS5CSURJX0VNQkVERElORywgCisgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEludGVnZXIoLTEpKTsKKyAgICAgICAgCisgICAgICAgIGZEZWZhdWx0S2V5d29yZFN0eWxlID0gZkRlZmF1bHRLZXl3b3JkU3R5bGUuYWRkQXR0cmlidXRlKFRleHRBdHRyaWJ1dGUuVU5ERVJMSU5FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLlVOREVSTElORV9PTik7CisgICAgICAgIGZEZWZhdWx0S2V5d29yZFN0eWxlID0gZkRlZmF1bHRLZXl3b3JkU3R5bGUuYWRkQXR0cmlidXRlKFRleHRBdHRyaWJ1dGUuRk9SRUdST1VORCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yLmJsdWUpOworICAgICAgICAKKyAgICAgICAgU3RyaW5nW10gamF2YVdvcmRzID0geyJhYnN0cmFjdCIgLCAiYm9vbGVhbiIsICJicmVhayIsICJieXRlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJieXZhbHVlIiwgImNhc2UiLCAiY2FzdCIsICJkZWZhdWx0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkbyIsICJkb3VibGUiLCAiZWxzZSIsICJleHRlbmRzIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmFsc2UiLCAiZmluYWwiLCAiZ290byIsICJpZiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1wbGVtZW50cyIsICJpbXBvcnQiLCAiaW5uZXIiLCAiaW5zdGFuY2VvZiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW50IiwgIm9wZXJhdG9yIiwgIm91dGVyIiwgInBhY2thZ2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByaXZhdGUiLCAicHJvdGVjdGVkIiwgInB1YmxpYyIsICJyZXN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzeW5jaHJvbml6ZWQiLCAidGhpcyIsICJ0aHJvdyIsICJ0aHJvd3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYW5zaWVudCIsICJ0cnVlIiwgInRyeSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2F0Y2giLCAiY2hhciIsICJjb25zdCIsICJjb250aW51ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmluYWxseSIsICJmbG9hdCIsICJmb3IiLCAiZnV0dXJlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZW5lcmljIiwgImludGVyZmFjZSIsICJsb25nIiwgIm5hdGl2ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmV3IiwgIm51bGwiLCAicmV0dXJuIiwgInNob3J0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0aWMiLCAic3VwZXIiLCAic3dpdGNoIiwgInZhciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidm9pZCIsICJ2b2xhdGlsZSIsICJ3aGlsZSIsICJjbGFzcyJ9OworCisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGphdmFXb3Jkcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaHQucHV0KGphdmFXb3Jkc1tpXSwgZkRlZmF1bHRLZXl3b3JkU3R5bGUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmQ29sb3JlciA9IG5ldyBDb2xvcmVyKGh0KTsKKyAgICAgICAgCisgICAgICAgIGlmIChwYW5lbCAhPSBudWxsKSB7CisgICAgICAgICAgICBNQ29uc3RUZXh0IHRleHQgPSBwYW5lbC5nZXRUZXh0KCk7CisgICAgICAgICAgICBjb2xvclJhbmdlKDAsIHRleHQubGVuZ3RoKCksIHRleHQuY3JlYXRlQ2hhcmFjdGVySXRlcmF0b3IoKSwgcGFuZWwpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmTW9kaWZpZXJDYWNoZSA9IG5ldyBIYXNodGFibGUoMik7CisgICAgICAgIGZNb2RpZmllckNhY2hlLnB1dChmRGVmYXVsdEtleXdvcmRTdHlsZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZVJlcGxhY2VNb2RpZmllcihmRGVmYXVsdEtleXdvcmRTdHlsZSkpOworICAgICAgICBmTW9kaWZpZXJDYWNoZS5wdXQoQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVAsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU3R5bGVNb2RpZmllci5jcmVhdGVSZXBsYWNlTW9kaWZpZXIoQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVApKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIGJvb2xlYW4gcmVzcG9uZHNUb0V2ZW50VHlwZShpbnQgdHlwZSkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHR5cGUgPT0gVGV4dFBhbmVsRXZlbnQuVEVYVF9DSEFOR0VEOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB0ZXh0RXZlbnRPY2N1cnJlZChUZXh0UGFuZWxFdmVudCBlKSB7CisKKyAgICAgICAgaWYgKGZNb2RpZnlpbmcpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgTVRleHRQYW5lbCBwYW5lbCA9IChNVGV4dFBhbmVsKSBlLmdldFNvdXJjZSgpOworICAgICAgICAKKyAgICAgICAgZmluYWwgTUNvbnN0VGV4dCB0ZXh0ID0gcGFuZWwuZ2V0VGV4dCgpOworICAgICAgICBpbnQgc3RhcnQgPSB0ZXh0LmRhbWFnZWRSYW5nZVN0YXJ0KCk7CisgICAgICAgIGludCBsaW1pdCA9IHRleHQuZGFtYWdlZFJhbmdlTGltaXQoKTsKKyAgICAgICAgaWYgKHN0YXJ0ID4gbGltaXQpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgdGV4dEl0ZXIgPSB0ZXh0LmNyZWF0ZUNoYXJhY3Rlckl0ZXJhdG9yKCk7CisgICAgICAgIAorICAgICAgICBmQnJlYWtJdGVyLnNldFRleHQodGV4dEl0ZXIpOworICAgICAgICBpZiAoc3RhcnQgPiAwKSB7CisgICAgICAgICAgICBpZiAoc3RhcnQgPT0gdGV4dC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGZCcmVha0l0ZXIubGFzdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZkJyZWFrSXRlci5mb2xsb3dpbmcoc3RhcnQtMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGFydCA9IGZCcmVha0l0ZXIucHJldmlvdXMoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobGltaXQgPCB0ZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICBmQnJlYWtJdGVyLmZvbGxvd2luZyhsaW1pdCk7CisgICAgICAgICAgICBpbnQgbDsKKyAgICAgICAgICAgIGlmICgobD1mQnJlYWtJdGVyLnByZXZpb3VzKCkpIDw9IGxpbWl0KSB7CisgICAgICAgICAgICAgICAgbGltaXQgPSBmQnJlYWtJdGVyLm5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZk1vZGlmeWluZyA9IHRydWU7CisgICAgICAgIGNvbG9yUmFuZ2Uoc3RhcnQsIGxpbWl0LCB0ZXh0SXRlciwgcGFuZWwpOworICAgICAgICBmTW9kaWZ5aW5nID0gZmFsc2U7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBjb2xvclJhbmdlKGZpbmFsIGludCBzdGFydCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IGxpbWl0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciB0ZXh0SXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVGV4dFBhbmVsIHBhbmVsKSB7CisgICAgICAgIAorICAgICAgICBmQ29sb3Jlci5zZXQodGV4dEl0ZXIsIHN0YXJ0LCBsaW1pdCk7CisKKyAgICAgICAgTUNvbnN0VGV4dCBvbGRUZXh0ID0gcGFuZWwuZ2V0VGV4dCgpOworICAgICAgICBNVGV4dCBuZXdUZXh0ID0gbnVsbDsKKyAgICAgICAgCisgICAgICAgIHdoaWxlIChmQ29sb3Jlci5uZXh0KCkpIHsKKworICAgICAgICAgICAgaW50IHJhbmdlU3RhcnQgPSBmQ29sb3Jlci5jdXJyZW50U3RhcnQoKTsKKyAgICAgICAgICAgIGludCByYW5nZUxpbWl0ID0gZkNvbG9yZXIuY3VycmVudExpbWl0KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBzdHlsZSA9IGZDb2xvcmVyLmN1cnJlbnRTdHlsZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAob2xkVGV4dC5jaGFyYWN0ZXJTdHlsZUxpbWl0KHJhbmdlU3RhcnQpIDwgcmFuZ2VMaW1pdCB8fAorICAgICAgICAgICAgICAgICAgICBvbGRUZXh0LmNoYXJhY3RlclN0eWxlQXQocmFuZ2VTdGFydCkgIT0gc3R5bGUpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGludCBjc3RhcnQgPSByYW5nZVN0YXJ0LXN0YXJ0OworICAgICAgICAgICAgICAgIGludCBjbGltaXQgPSByYW5nZUxpbWl0LXN0YXJ0OworICAgICAgICAgICAgICAgIGlmIChuZXdUZXh0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3VGV4dCA9IG5ldyBTdHlsZWRUZXh0KG9sZFRleHQsIHN0YXJ0LCBsaW1pdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFN0eWxlTW9kaWZpZXIgbW9kID0gKFN0eWxlTW9kaWZpZXIpIGZNb2RpZmllckNhY2hlLmdldChzdHlsZSk7CisgICAgICAgICAgICAgICAgbmV3VGV4dC5tb2RpZnlDaGFyYWN0ZXJTdHlsZXMoY3N0YXJ0LCBjbGltaXQsIG1vZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChuZXdUZXh0ICE9IG51bGwpIHsKKyAgICAgICAgCisgICAgICAgICAgICBpbnQgb2xkU3RhcnQgPSBwYW5lbC5nZXRTZWxlY3Rpb25TdGFydCgpOworICAgICAgICAgICAgaW50IG9sZExpbWl0ID0gcGFuZWwuZ2V0U2VsZWN0aW9uRW5kKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBhbmVsLnJlcGxhY2VSYW5nZShuZXdUZXh0LCBzdGFydCwgbGltaXQpOyAgICAgICAgICAgIAorICAgIAorICAgICAgICAgICAgcGFuZWwuc2VsZWN0KG9sZFN0YXJ0LCBvbGRMaW1pdCk7CisgICAgICAgICAgICBpZiAob2xkU3RhcnQgPT0gb2xkTGltaXQpIHsKKyAgICAgICAgICAgICAgICBTdHlsZU1vZGlmaWVyIG1vZCA9IChTdHlsZU1vZGlmaWVyKSBmTW9kaWZpZXJDYWNoZS5nZXQoQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVApOyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBwYW5lbC5tb2RpZnlDaGFyYWN0ZXJTdHlsZU9uU2VsZWN0aW9uKG1vZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgICAgICAKKyAgICAgICAgVGV4dEZyYW1lIGYgPSBuZXcgVGV4dEZyYW1lKCk7CisgICAgICAgIGYuYWRkV2luZG93TGlzdGVuZXIobmV3IFdpbmRvd0FkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uZXhpdCgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIGYuc2V0U2l6ZSg0MDAsIDMwMCk7CisgICAgICAgIE1UZXh0UGFuZWwgcGFuZWwgPSBmLmdldFRleHRQYW5lbCgpOworICAgICAgICBwYW5lbC5hZGRMaXN0ZW5lcihuZXcgU3ludGF4Q29sb3JlcihwYW5lbCkpOworICAgICAgICBmLnNob3coKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvZGVtby9UZXh0RG9jdW1lbnQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vVGV4dERvY3VtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMmUxNGU5ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L2RlbW8vVGV4dERvY3VtZW50LmphdmEKQEAgLTAsMCArMSwzNDcgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRleHREb2N1bWVudC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjQzOjA5ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuZGVtbzsKKworaW1wb3J0IGphdmEuaW8uKjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVkVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKKworLyoqCisgKiBBIFRleHREb2N1bWVudCBoYW5kbGVzIHRoZSBhc3NvY2lhdGlvbiBiZXR3ZWVuIGEgZmlsZSBvbiBkaXNrCisgKiBhbmQgYSBUZXh0UGFuZWwuCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBUZXh0RG9jdW1lbnQgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQlVGX1NJWkUgPSAxMDI0OworICAgIAorICAgIHByaXZhdGUgU3RyaW5nIGZUaXRsZTsKKyAgICBwcml2YXRlIE1Db25zdFRleHQgZlRleHQ7CisgICAgcHJpdmF0ZSBGaWxlIGZGaWxlOworICAgIHByaXZhdGUgTVRleHRQYW5lbCBmVGV4dFBhbmVsID0gbnVsbDsKKyAgICBwcml2YXRlIGJvb2xlYW4gaXNNb2RpZmllZCA9IGZhbHNlOworICAgIHByaXZhdGUgaW50IGZGb3JtYXQgPSBTVFlMRURfVEVYVDsKKyAgICAKKyAgICBwcml2YXRlIFRleHREb2N1bWVudChTdHJpbmcgdGl0bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgTUNvbnN0VGV4dCB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGUgZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZm9ybWF0KSB7CisgICAgICAgIAorICAgICAgICBmVGl0bGUgPSB0aXRsZTsKKyAgICAgICAgZlRleHQgPSB0ZXh0OworICAgICAgICBmRmlsZSA9IGZpbGU7CisgICAgICAgIHNldEZvcm1hdChmb3JtYXQpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVFlMRURfVEVYVCA9IDA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUExBSU5fVEVYVCA9IDE7CisgICAgCisgICAgLyoqIAorICAgICAqIFJldHVybiBhIG5ldyBUZXh0RG9jdW1lbnQgd2l0aCBubyBhc3NvY2lhdGVkIGZpbGUgYW5kCisgICAgICogZW1wdHkgdGV4dC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFRleHREb2N1bWVudCBjcmVhdGVFbXB0eShTdHJpbmcgdGl0bGUsIGludCBmb3JtYXQpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBuZXcgVGV4dERvY3VtZW50KHRpdGxlLCBuZXcgU3R5bGVkVGV4dCgpLCBudWxsLCBmb3JtYXQpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBUZXh0RG9jdW1lbnQgY3JlYXRlZCBmcm9tIHRoZSBjb250ZW50cyBvZiB0aGUgZ2l2ZW4KKyAgICAgKiBmaWxlLiAgVGhpcyBtZXRob2QgbWF5IHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgZmlsZSBjYW5ub3QKKyAgICAgKiBiZSByZWFkLiAgSW4gcGFydGljdWxhciwgaWYgdGhlIGZvcm1hdCBpcyBnaXZlbiBhcyBTVFlMRURfVEVYVAorICAgICAqIGJ1dCB0aGUgZmlsZSBkb2VzIG5vdCBjb250YWluIGEgc2VyaWFsaXplZCBNQ29uc3RUZXh0LCAKKyAgICAgKiB0aGlzIG1ldGhvZCB3aWxsIHRocm93IFN0cmVhbUNvcnJ1cHRlZEV4Y2VwdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFRleHREb2N1bWVudCBjcmVhdGVGcm9tRmlsZShGaWxlIGZpbGUsIGludCBmb3JtYXQpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICAKKyAgICAgICAgaWYgKGZvcm1hdCAhPSBTVFlMRURfVEVYVCAmJiBmb3JtYXQgIT0gUExBSU5fVEVYVCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBmb3JtYXQiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgTUNvbnN0VGV4dCB0ZXh0OworICAgICAgICBpZiAoZm9ybWF0ID09IFNUWUxFRF9URVhUKSB7CisgICAgICAgICAgICB0ZXh0ID0gcmVhZE1UZXh0KGZpbGUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGV4dCA9IHJlYWRNVGV4dEZyb21UZXh0RmlsZShmaWxlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgVGV4dERvY3VtZW50IGRvY3VtZW50ID0gbmV3IFRleHREb2N1bWVudChmaWxlLmdldE5hbWUoKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCk7CisgICAgICAgIHJldHVybiBkb2N1bWVudDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhpcyBkb2N1bWVudCdzIHRleHQgZGlmZmVycyBmcm9tIHRoZSBjb250ZW50cworICAgICAqIG9mIGl0cyBmaWxlLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzTW9kaWZpZWQoKSB7CisgICAgICAgIAorICAgICAgICBpZiAoZlRleHRQYW5lbCA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gaXNNb2RpZmllZDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmVGV4dFBhbmVsLmlzTW9kaWZpZWQoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIE1UZXh0UGFuZWwgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZWRpdCB0aGUgZG9jdW1lbnQncworICAgICAqIHRleHQuICBUaGUgZG9jdW1lbnQncyB0ZXh0IGJlY29tZXMgdGhlIGNvbnRlbnRzIG9mIHRoZQorICAgICAqIE1UZXh0UGFuZWwuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0VGV4dFBhbmVsKE1UZXh0UGFuZWwgdGV4dFBhbmVsKSB7CisKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwgIT0gbnVsbCkgeworICAgICAgICAgICAgZlRleHQgPSBmVGV4dFBhbmVsLmdldFRleHQoKTsKKyAgICAgICAgICAgIGlzTW9kaWZpZWQgPSBmVGV4dFBhbmVsLmlzTW9kaWZpZWQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZlRleHRQYW5lbCA9IHRleHRQYW5lbDsKKyAgICAgICAgCisgICAgICAgIGlmIChmVGV4dFBhbmVsICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZUZXh0UGFuZWwuc2V0VGV4dChmVGV4dCk7CisgICAgICAgICAgICBmVGV4dCA9IG51bGw7CisgICAgICAgICAgICBmVGV4dFBhbmVsLnNldE1vZGlmaWVkKGlzTW9kaWZpZWQpOworICAgICAgICAgICAgZlRleHRQYW5lbC5jbGVhckNvbW1hbmRMb2coKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgRmlsZSBnZXRGaWxlKCkgeworICAgIAorICAgICAgICByZXR1cm4gZkZpbGU7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFNldCB0aGlzIGRvY3VtZW50J3MgZmlsZS4gIFRoZSBkb2N1bWVudCdzIHRpdGxlIHdpbGwKKyAgICAgKiBjaGFuZ2UgdG8gdGhlIGZpbGUgbmFtZS4gIFRoZSBmaWxlIGNhbm5vdCBiZSBudWxsLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEZpbGUoRmlsZSBmaWxlKSB7CisgICAgICAgIAorICAgICAgICBmRmlsZSA9IGZpbGU7CisgICAgICAgIGZUaXRsZSA9IGZpbGUuZ2V0TmFtZSgpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGZvcm1hdCBvZiB0aGlzIGRvY3VtZW50LiAgVGhlIGZvcm1hdCBkZXRlcm1pbmVzCisgICAgICogd2hldGhlciB0aGUgZG9jdW1lbnQgd2lsbCBiZSB3cml0dGVuIHRvIGZpbGVzIGFzIHN0eWxlZAorICAgICAqIHRleHQgb3IgcGxhaW4gY2hhcmFjdGVycy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRGb3JtYXQoaW50IGZvcm1hdCkgeworICAgICAgICAKKyAgICAgICAgaWYgKGZvcm1hdCAhPSBTVFlMRURfVEVYVCAmJiBmb3JtYXQgIT0gUExBSU5fVEVYVCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBmb3JtYXQiKTsKKyAgICAgICAgfQorICAgICAgICBmRm9ybWF0ID0gZm9ybWF0OworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGZvcm1hdCBvZiB0aGlzIGRvY3VtZW50LgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0Rm9ybWF0KCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZGb3JtYXQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFdyaXRlIHRoZSBkb2N1bWVudCdzIHRleHQgdG8gaXRzIGZpbGUuICBJZiB0aGUgZG9jdW1lbnQgZG9lcworICAgICAqIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQgZmlsZSB0aGVuIHRoaXMgbWV0aG9kIGlzIGVxdWl2YWxlbnQgdG8KKyAgICAgKiBzYXZlQXMuICBUaGlzIG1ldGhvZCByZXR1cm5zIHRydWUgaWYgdGhlIHNhdmUgb3BlcmF0aW9uIHN1Y2NlZWRzLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIHNhdmUoKSB7CisKKyAgICAgICAgaWYgKGZGaWxlID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJDYW4ndCBzYXZlIHdpdGhvdXQgYSBmaWxlLiIpOworICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgIE1Db25zdFRleHQgdGV4dCA9IGdldFRleHQoKTsKKyAgICAgICAgYm9vbGVhbiBzdWNjZXNzID0gZkZvcm1hdD09U1RZTEVEX1RFWFQ/IHdyaXRlTVRleHQoZkZpbGUsIHRleHQpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRlUGxhaW5NVGV4dChmRmlsZSwgdGV4dCk7CisgICAgICAgIGlmIChzdWNjZXNzICYmIGZUZXh0UGFuZWwgIT0gbnVsbCkgeworICAgICAgICAgICAgZlRleHRQYW5lbC5zZXRNb2RpZmllZChmYWxzZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7CisgICAgfQorICAgIAorICAgIC8qKiAKKyAgICAgKiBSZXR1cm4gdGhpcyBkb2N1bWVudCdzIHN0eWxlZCB0ZXh0LgorICAgICAqLworICAgIHB1YmxpYyBNQ29uc3RUZXh0IGdldFRleHQoKSB7CisgICAgICAgIAorICAgICAgICBpZiAoZlRleHRQYW5lbCA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZlRleHQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZlRleHRQYW5lbC5nZXRUZXh0KCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSB0aXRsZSBvZiB0aGlzIGRvY3VtZW50LgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0VGl0bGUoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZlRpdGxlOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIE1UZXh0IHNlcmlhbGl6ZWQgaW4gdGhlIGdpdmVuIGZpbGUuCisgICAgICogSW4gY2FzZSBvZiBhbiBlcnJvciByZXR1cm4gbnVsbC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBNQ29uc3RUZXh0IHJlYWRNVGV4dChGaWxlIGZpbGUpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICAgIEZpbGVJbnB1dFN0cmVhbSBpblN0cmVhbSA9IG51bGw7CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgaW5TdHJlYW0gPSBuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGUpOworICAgICAgICAgICAgT2JqZWN0SW5wdXRTdHJlYW0gb2JqU3RyZWFtID0gbmV3IE9iamVjdElucHV0U3RyZWFtKGluU3RyZWFtKTsKKworICAgICAgICAgICAgcmV0dXJuIChNQ29uc3RUZXh0KSBvYmpTdHJlYW0ucmVhZE9iamVjdCgpOworICAgICAgICB9CisgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgaWYgKGluU3RyZWFtICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBpblN0cmVhbS5jbG9zZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXRjaChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJlYWQgdGhlIGdpdmVuIGZpbGUgYXMgYSBwbGFpbiB0ZXh0IGZpbGUsIGFuZCByZXR1cm4gaXRzCisgICAgICogY29udGVudHMgYXMgYW4gTUNvbnN0VGV4dC4gIFRoZSBjaGFyYWN0ZXIgYW5kIHBhcmFncmFwaCBzdHlsZXMgaW4gCisgICAgICogdGhlIHJldHVybmVkIHRleHQgd2lsbCBiZSBFTVBUWV9BVFRSSUJVVEVfTUFQLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIE1Db25zdFRleHQgcmVhZE1UZXh0RnJvbVRleHRGaWxlKEZpbGUgZmlsZSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIAorICAgICAgICBJbnB1dFN0cmVhbVJlYWRlciBpbiA9IG51bGw7CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgaW4gPSBuZXcgRmlsZVJlYWRlcihmaWxlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTVRleHQgdGV4dCA9IG5ldyBTdHlsZWRUZXh0KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNoYXJbXSBidWYgPSBuZXcgY2hhcltCVUZfU0laRV07CisgICAgICAgICAgICBpbnQgcmVhZDsKKyAgICAgICAgICAgIHdoaWxlICgocmVhZD1pbi5yZWFkKGJ1ZiwgMCwgYnVmLmxlbmd0aCkpICE9IC0xKSB7CisgICAgICAgICAgICAgICAgaW50IGxlbiA9IHRleHQubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgdGV4dC5yZXBsYWNlKGxlbiwgbGVuLCBidWYsIDAsIHJlYWQsIEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0ZXh0OworICAgICAgICB9CisgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgaWYgKGluICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBpbi5jbG9zZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXRjaChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQXR0ZW1wdCB0byBzYXZlIHRoZSBnaXZlbiB0ZXh0IGluIHRoZSBnaXZlbiBmaWxlLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRlZAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gd3JpdGVNVGV4dChGaWxlIGZpbGUsIE1Db25zdFRleHQgdGV4dCkgeworCisgICAgICAgIFRocm93YWJsZSBlcnJvciA9IG51bGw7CisgICAgICAgIE91dHB1dFN0cmVhbSBvdXRTdHJlYW0gPSBudWxsOworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG91dFN0cmVhbSA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKGZpbGUpOworICAgICAgICAgICAgT2JqZWN0T3V0cHV0U3RyZWFtIG9ialN0cmVhbSA9IG5ldyBPYmplY3RPdXRwdXRTdHJlYW0ob3V0U3RyZWFtKTsKKworICAgICAgICAgICAgb2JqU3RyZWFtLndyaXRlT2JqZWN0KHRleHQpOworICAgICAgICB9CisgICAgICAgIGNhdGNoKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChDbGFzc0Nhc3RFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgaWYgKG91dFN0cmVhbSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgb3V0U3RyZWFtLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhdGNoKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworCisgICAgICAgIGlmIChlcnJvciAhPSBudWxsKSB7CisgICAgICAgICAgICBlcnJvci5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogV3JpdGUgdGhlIGdpdmVuIE1Db25zdFRleHQgdG8gdGhlIGdpdmVuIGZpbGUgYXMgcGxhaW4gdGV4dC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIHdyaXRlUGxhaW5NVGV4dChGaWxlIGZpbGUsIE1Db25zdFRleHQgdGV4dCkgeworCisgICAgICAgIFRocm93YWJsZSBlcnJvciA9IG51bGw7CisgICAgICAgIE91dHB1dFN0cmVhbVdyaXRlciBvdXRTdHJlYW0gPSBudWxsOworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG91dFN0cmVhbSA9IG5ldyBGaWxlV3JpdGVyKGZpbGUpOworICAgICAgICAgICAgY2hhcltdIGJ1ZiA9IG5ldyBjaGFyW0JVRl9TSVpFXTsKKyAgICAgICAgICAgIGludCBsZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOworICAgICAgICAgICAgaW50IHN0YXJ0ID0gMDsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBpbnQgY291bnQgPSBNYXRoLm1pbihsZW5ndGgtc3RhcnQsIGJ1Zi5sZW5ndGgpOworICAgICAgICAgICAgICAgIHRleHQuZXh0cmFjdENoYXJzKHN0YXJ0LCBzdGFydCtjb3VudCwgYnVmLCAwKTsKKyAgICAgICAgICAgICAgICBvdXRTdHJlYW0ud3JpdGUoYnVmLCAwLCBjb3VudCk7CisgICAgICAgICAgICAgICAgc3RhcnQgKz0gY291bnQ7CisgICAgICAgICAgICB9IHdoaWxlIChzdGFydCA8IGxlbmd0aCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgaWYgKG91dFN0cmVhbSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgb3V0U3RyZWFtLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhdGNoKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworCisgICAgICAgIGlmIChlcnJvciAhPSBudWxsKSB7CisgICAgICAgICAgICBlcnJvci5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3ByaW50L01Db25zdFRleHRQcmludGFibGUuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3ByaW50L01Db25zdFRleHRQcmludGFibGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44M2ZiZGJjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvcHJpbnQvTUNvbnN0VGV4dFByaW50YWJsZS5qYXZhCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBNQ29uc3RUZXh0UHJpbnRhYmxlLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDQ6MzMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5wcmludDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0Zm9ybWF0Lk1Gb3JtYXR0ZXI7CisKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CisKK2ltcG9ydCBqYXZhLmF3dC5Db2xvcjsKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczsKK2ltcG9ydCBqYXZhLmF3dC5Qb2ludDsKK2ltcG9ydCBqYXZhLmF3dC5SZWN0YW5nbGU7CisKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworCisvKioKKyAqIFRoaXMgY2xhc3MncyBpbnRlcmZhY2UgaXMgdmVyeSBjbG9zZSB0byB0aGF0IG9mIHRoZSBKREsgMS4yIFByaW50YWJsZSAKKyAqIGludGVyZmFjZSwgYnV0IGNhbiBleGVjdXRlIG9uIEpESyAxLjEuICBPbiAxLjIsIHRoaXMgY2xhc3MgaXMgd3JhcHBlZAorICogaW4gYSByZWFsIFByaW50YWJsZS4gIE9uIDEuMSwgdGhlIFByaW50Q29udGV4dCBjbGFzcyB1c2VzIHRoaXMgY2xhc3MKKyAqIGFuZCBhIFByaW50Sm9iIGZvciBwcmludGluZy4KKyAqCisgKiBOb3RlIHRoYXQgdGhpcyBjbGFzcyBwYWdpbmF0ZXMgdGhlIHRleHQgaW4gdGhlIGZpcnN0IGNhbGwgdG8gcHJpbnQsCisgKiBvciB0byBnZXRQYWdlQ291bnQuCisgKiBBZnRlciBjb25zdHJ1Y3Rpb24sIGl0cyBwYWdlIHNpemUgaXMgZXNzZW50aWFsbHkgZml4ZWQuICBUaGlzIGlzIG5vdCAKKyAqIGFzIGZsZXhpYmxlIGFzIHRoZSAxLjIgY2xhc3NlcyBhbGxvdywgYnV0IGl0IHNob3VsZCBzdWZmaWNlLgorICovCitmaW5hbCBjbGFzcyBNQ29uc3RUZXh0UHJpbnRhYmxlIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisKKyAgICBzdGF0aWMgZmluYWwgaW50IFBBR0VfRVhJU1RTID0gMDsKKyAgICBzdGF0aWMgZmluYWwgaW50IE5PX1NVQ0hfUEFHRSA9IDE7CisgICAgCisgICAgcHJpdmF0ZSBNQ29uc3RUZXh0IGZUZXh0OworICAgIHByaXZhdGUgQXR0cmlidXRlTWFwIGZEZWZhdWx0U3R5bGVzOworICAgIHByaXZhdGUgUmVjdGFuZ2xlIGZQYWdlUmVjdDsKKyAgICAKKyAgICAvLyBJZiB0aGVzZSB0d28gZmllbGRzIGFyZSBudWxsIHRoZSB0ZXh0IGhhcyBub3QgYmVlbiBwYWdpbmF0ZWQuCisgICAgcHJpdmF0ZSBNRm9ybWF0dGVyIGZGb3JtYXR0ZXI7CisgICAgcHJpdmF0ZSBWZWN0b3IgZlBhZ2VTdGFydHM7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYW4gTUNvbnN0VGV4dFByaW50YWJsZSB0byBwcmludCB0aGUgZ2l2ZW4gdGV4dC4gIEVhY2ggcGFnZSB3aWxsIGZpdAorICAgICAqIGludG8gcGFnZVJlY3QuCisgICAgICovCisgICAgTUNvbnN0VGV4dFByaW50YWJsZShNQ29uc3RUZXh0IHRleHQsIAorICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwIGRlZmF1bHRTdHlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICBSZWN0YW5nbGUgcGFnZVJlY3QpIHsKKworICAgICAgICBmVGV4dCA9IHRleHQ7CisgICAgICAgIGZEZWZhdWx0U3R5bGVzID0gZGVmYXVsdFN0eWxlczsKKyAgICAgICAgZlBhZ2VSZWN0ID0gbmV3IFJlY3RhbmdsZShwYWdlUmVjdCk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gZW1wdHlQYXJhZ3JhcGhBdEVuZE9mVGV4dChNQ29uc3RUZXh0IHRleHQpIHsKKworICAgICAgICBpZiAodGV4dC5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgIGNoYXIgY2ggPSB0ZXh0LmF0KHRleHQubGVuZ3RoKCktMSk7CisgICAgICAgICAgICByZXR1cm4gY2ggPT0gJ1xuJyB8fCBjaCA9PSAnXHUyMDI5JzsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBwYWdpbmF0ZShHcmFwaGljcyBncmFwaGljcykgeworICAgICAgICAKKyAgICAgICAgaWYgKGZQYWdlU3RhcnRzID09IG51bGwpIHsKKworICAgICAgICAgICAgZkZvcm1hdHRlciA9IE1Gb3JtYXR0ZXIuY3JlYXRlRm9ybWF0dGVyKGZUZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZEZWZhdWx0U3R5bGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZQYWdlUmVjdC53aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyYXBoaWNzKTsKKyAKKyAgICAgICAgICAgIGZGb3JtYXR0ZXIuZm9ybWF0VG9IZWlnaHQoSW50ZWdlci5NQVhfVkFMVUUpOworICAgICAgICAgICAgZkZvcm1hdHRlci5zdG9wQmFja2dyb3VuZEZvcm1hdHRpbmcoKTsKKworICAgICAgICAgICAgZlBhZ2VTdGFydHMgPSBuZXcgVmVjdG9yKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCBsaW5lQ291bnQgPSBmRm9ybWF0dGVyLmdldExpbmVDb3VudCgpOworICAgICAgICAgICAgaWYgKGVtcHR5UGFyYWdyYXBoQXRFbmRPZlRleHQoZlRleHQpKSB7CisgICAgICAgICAgICAgICAgbGluZUNvdW50IC09IDE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCBzdGFydExpbmUgPSAwOworICAgICAgICAgICAgZlBhZ2VTdGFydHMuYWRkRWxlbWVudChuZXcgSW50ZWdlcihzdGFydExpbmUpKTsKKyAgICAgICAgICAgIGludCBzdGFydEhlaWdodCA9IDA7CisgICAgICAgICAgICBmaW5hbCBpbnQgcGFnZUhlaWdodCA9IGZQYWdlUmVjdC5oZWlnaHQ7CisKKyAgICAgICAgICAgIHdoaWxlIChzdGFydExpbmUgPCBsaW5lQ291bnQpIHsKKworICAgICAgICAgICAgICAgIGludCBuZXh0U3RhcnQgPSBmRm9ybWF0dGVyLmxpbmVBdEhlaWdodChzdGFydEhlaWdodCArIHBhZ2VIZWlnaHQpOworICAgICAgICAgICAgICAgIGZQYWdlU3RhcnRzLmFkZEVsZW1lbnQobmV3IEludGVnZXIobmV4dFN0YXJ0KSk7CisgICAgICAgICAgICAgICAgc3RhcnRIZWlnaHQgPSBmRm9ybWF0dGVyLmxpbmVHcmFwaGljU3RhcnQobmV4dFN0YXJ0KTsKKyAgICAgICAgICAgICAgICBzdGFydExpbmUgPSBuZXh0U3RhcnQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcmludCB0aGUgZ2l2ZW4gcGFnZSBpbiB0aGUgZ2l2ZW4gZ3JhcGhpY3MuICBQYWdlIG51bWJlcnMgYXJlCisgICAgICogMC1iYXNlZC4gIFRoZSB0aGUgcmV0dXJuIHZhbHVlIGluZGljYXRlcyB3aGV0aGVyCisgICAgICogdGhlIHBhZ2UgbnVtYmVyIGlzIHZhbGlkIChhcyBpbiBKREsgMS4yKS4gIFNpbmNlIHlvdSBjYW4gZ2V0IHRoZSBwYWdlIGNvdW50CisgICAgICogZGlyZWN0bHksIHRoZXJlJ3MgcmVhbGx5IG5vIGV4Y3VzZSBmb3IgcGFzc2luZyBpbiBhbiBpbnZhbGlkIHBhZ2UKKyAgICAgKiBpbmRleC4KKyAgICAgKiBAcGFyYW0gZ3JhcGhpY3MgdGhlIEdyYXBoaWNzIHRvIHByaW50IHRvCisgICAgICogQHBhcmFtIHBhZ2VOdW1iZXIgdGhlIDAtYmFzZWQgcGFnZSBudW1iZXIuICBTaG91bGQgYmUgbm9ubmVnYXRpdmUgYW5kCisgICAgICogbGVzcyB0aGFuIGdldFBhZ2VDb3VudCgpCisgICAgICogQHJldHVybiBQQUdFX0VYSVNUUyBpZiB0aGUgcGFnZSBudW1iZXIgaXMgdmFsaWQsIG9yIAorICAgICAqICAgICAgICAgTk9fU1VDSF9QQUdFIG90aGVyd2lzZQorICAgICAqLworICAgIGludCBwcmludChHcmFwaGljcyBncmFwaGljcywgaW50IHBhZ2VOdW1iZXIpIHsKKyAgICAgICAgCisgICAgICAgIHBhZ2luYXRlKGdyYXBoaWNzKTsKKyAgICAgICAgCisgICAgICAgIGlmIChwYWdlTnVtYmVyIDwgZ2V0UGFnZUNvdW50KGdyYXBoaWNzKSAmJiBwYWdlTnVtYmVyID49IDApIHsKKyAgICAgICAgICAgIGdyYXBoaWNzLnNldENvbG9yKENvbG9yLmJsYWNrKTsgLy8gd29ya2Fyb3VuZCBmb3IgMS4yIHByaW50aW5nIGJ1ZworICAgICAgICAgICAgaW50IHN0YXJ0TGluZSA9ICgoSW50ZWdlcilmUGFnZVN0YXJ0cy5lbGVtZW50QXQocGFnZU51bWJlcikpLmludFZhbHVlKCk7CisgICAgICAgICAgICBpbnQgbGltaXRMaW5lID0gKChJbnRlZ2VyKWZQYWdlU3RhcnRzLmVsZW1lbnRBdChwYWdlTnVtYmVyKzEpKS5pbnRWYWx1ZSgpOworCisgICAgICAgICAgICBpbnQgdG9wT2ZQYWdlID0gZkZvcm1hdHRlci5saW5lR3JhcGhpY1N0YXJ0KHN0YXJ0TGluZSk7CisgICAgICAgICAgICBpbnQgcGFnZUhlaWdodCA9IGZGb3JtYXR0ZXIubGluZUdyYXBoaWNTdGFydChsaW1pdExpbmUpIC0gdG9wT2ZQYWdlOworCisgICAgICAgICAgICBQb2ludCBvcmlnaW4gPSBuZXcgUG9pbnQoZlBhZ2VSZWN0LngsIGZQYWdlUmVjdC55IC0gdG9wT2ZQYWdlKTsKKyAgICAgICAgICAgIFJlY3RhbmdsZSBkcmF3UmVjdCA9IG5ldyBSZWN0YW5nbGUoZlBhZ2VSZWN0KTsKKyAgICAgICAgICAgIGRyYXdSZWN0LmhlaWdodCA9IHBhZ2VIZWlnaHQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZGb3JtYXR0ZXIuZHJhdyhncmFwaGljcywgZHJhd1JlY3QsIG9yaWdpbik7CisgICAgICAgICAgICByZXR1cm4gUEFHRV9FWElTVFM7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gTk9fU1VDSF9QQUdFOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHBhZ2VzIHRoYXQgY2FuIGJlIHByaW50ZWQuCisgICAgICogQHBhcmFtIGdyYXBoaWNzIGEgR3JhcGhpY3MgaW5zdGFuY2UgcmVwcmVzZW50YXRpdmUgb2YgdGhvc2UgCisgICAgICogd2hpY2ggd2lsbCBiZSBwcmludGVkIGludG8KKyAgICAgKi8KKyAgICBpbnQgZ2V0UGFnZUNvdW50KEdyYXBoaWNzIGdyYXBoaWNzKSB7CisgICAgICAgIAorICAgICAgICBwYWdpbmF0ZShncmFwaGljcyk7CisgICAgICAgIHJldHVybiBmUGFnZVN0YXJ0cy5zaXplKCkgLSAxOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9wcmludC9QcmludENvbnRleHQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3ByaW50L1ByaW50Q29udGV4dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjk4N2Q3MmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9wcmludC9QcmludENvbnRleHQuamF2YQpAQCAtMCwwICsxLDgxIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBQcmludENvbnRleHQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0NDozMyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworLy8gUmVxdWlyZXMgSmF2YTIKKworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnByaW50OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCitpbXBvcnQgamF2YS5hd3QuRnJhbWU7CitpbXBvcnQgamF2YS5hd3QuR3JhcGhpY3M7CitpbXBvcnQgamF2YS5hd3QuUmVjdGFuZ2xlOworCitpbXBvcnQgamF2YS5hd3QucHJpbnQuUGFnZUZvcm1hdDsKK2ltcG9ydCBqYXZhLmF3dC5wcmludC5QcmludGFibGU7CitpbXBvcnQgamF2YS5hd3QucHJpbnQuUHJpbnRlckpvYjsKK2ltcG9ydCBqYXZhLmF3dC5wcmludC5QcmludGVyRXhjZXB0aW9uOworCitmaW5hbCBjbGFzcyBQcmludENvbnRleHQgaW1wbGVtZW50cyBQcmludGFibGUgeworICAgIAorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisKKyAgICBwcml2YXRlIE1Db25zdFRleHRQcmludGFibGUgZlByaW50YWJsZTsKKyAgICAKKyAgICBQcmludENvbnRleHQoTUNvbnN0VGV4dCB0ZXh0LCBBdHRyaWJ1dGVNYXAgZGVmYXVsdFN0eWxlcywgUGFnZUZvcm1hdCBwZikgeworICAgICAgICAKKyAgICAgICAgaW50IHdpZHRoID0gKGludCkgTWF0aC5yb3VuZChwZi5nZXRJbWFnZWFibGVXaWR0aCgpKTsKKyAgICAgICAgaW50IGhlaWdodCA9IChpbnQpIE1hdGgucm91bmQocGYuZ2V0SW1hZ2VhYmxlSGVpZ2h0KCkpOworICAgICAgICBpbnQgbGVmdCA9ICgoKGludClNYXRoLnJvdW5kKHBmLmdldFdpZHRoKCkpKSAtIHdpZHRoKSAvIDI7CisgICAgICAgIGludCB0b3AgPSAoKChpbnQpTWF0aC5yb3VuZChwZi5nZXRIZWlnaHQoKSkpIC0gaGVpZ2h0KSAvIDI7CisgICAgICAgIAorICAgICAgICBSZWN0YW5nbGUgcGFnZVJlY3QgPSBuZXcgUmVjdGFuZ2xlKGxlZnQsIHRvcCwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIGZQcmludGFibGUgPSBuZXcgTUNvbnN0VGV4dFByaW50YWJsZSh0ZXh0LCBkZWZhdWx0U3R5bGVzLCBwYWdlUmVjdCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBpbnQgcHJpbnQoR3JhcGhpY3MgZ3JhcGhpY3MsCisgICAgICAgICAgICAgICAgICAgICBQYWdlRm9ybWF0IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgIGludCBwYWdlSW5kZXgpIHRocm93cyBQcmludGVyRXhjZXB0aW9uIHsKKyAgICAgICAgCisgICAgICAgIGlmIChmYWxzZSkKKyAgICAgICAgICAgIHRocm93IG5ldyBQcmludGVyRXhjZXB0aW9uKCJzYXZlIHRyZWVzIik7CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKGZQcmludGFibGUucHJpbnQoZ3JhcGhpY3MsIHBhZ2VJbmRleCkgPT0gZlByaW50YWJsZS5QQUdFX0VYSVNUUykgeworICAgICAgICAgICAgcmV0dXJuIFBBR0VfRVhJU1RTOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIE5PX1NVQ0hfUEFHRTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdm9pZCB1c2VyUHJpbnRUZXh0KE1Db25zdFRleHQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBkZWZhdWx0U3R5bGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWUgZnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgam9iVGl0bGUpIHsKKworICAgICAgICBQcmludGVySm9iIGpvYiA9IFByaW50ZXJKb2IuZ2V0UHJpbnRlckpvYigpOworICAgICAgICBqb2Iuc2V0Sm9iTmFtZShqb2JUaXRsZSk7CisgICAgICAgIGlmIChqb2IucHJpbnREaWFsb2coKSkgeworICAgICAgICAgICAgam9iLnNldFByaW50YWJsZShuZXcgUHJpbnRDb250ZXh0KHRleHQsIGRlZmF1bHRTdHlsZXMsIGpvYi5kZWZhdWx0UGFnZSgpKSk7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGpvYi5wcmludCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2goUHJpbnRlckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJQcmludGVyIGV4Y2VwdGlvbjogIiArIGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvcHJpbnQvUHJpbnRpbmdVdGlscy5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvcHJpbnQvUHJpbnRpbmdVdGlscy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjkxNGJlM2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9wcmludC9QcmludGluZ1V0aWxzLmphdmEKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogUHJpbnRpbmdVdGlscy5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjQ0OjMzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQucHJpbnQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKKworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKKworaW1wb3J0IGphdmEuYXd0LkZyYW1lOworCisvKioKKyAqIFByaW50aW5nVXRpbHMgY29udGFpbnMgYSBzdGF0aWMgbWV0aG9kIGZvciBwcmludGluZyBzdHlsZWQgdGV4dC4KKyAqIEBzZWUgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIFByaW50aW5nVXRpbHMgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKworICAgIC8vIEtlZXAgaXQgb3V0IG9mIEphdmFkb2MuLi4KKyAgICBwcml2YXRlIFByaW50aW5nVXRpbHMoKSB7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFByaW50IHRoZSBnaXZlbiB0ZXh0LiAgQSBQcmludCBkaWFsb2cgaXMgcHJlc2VudGVkIHRvIHRoZSB1c2VyOworICAgICAqIHVubGVzcyB0aGUgdXNlciBjYW5jZWxzLCB0aGUgdGV4dCBpcyBwcmludGVkLgorICAgICAqIEBwYXJhbSB0ZXh0IHRoZSB0ZXh0IHRvIHByaW50CisgICAgICogQHBhcmFtIGRlZmF1bHRTdHlsZXMgZGVmYXVsdCB2YWx1ZXMgZm9yIHVuc3BlY2lmaWVkIGF0dHJpYnV0ZXMKKyAgICAgKiBAcGFyYW0gZnJhbWUgdGhlIHBhcmVudCBvZiB0aGUgUHJpbnQgZGlhbG9nCisgICAgICogQHBhcmFtIGpvYlRpdGxlIHRoZSB0aXRsZSBvZiB0aGUgUHJpbnRKb2IKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgdXNlclByaW50VGV4dChNQ29uc3RUZXh0IHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwIGRlZmF1bHRTdHlsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWUgZnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGpvYlRpdGxlKSB7CisKKyAgICAgICAgUHJpbnRDb250ZXh0LnVzZXJQcmludFRleHQodGV4dCwgZGVmYXVsdFN0eWxlcywgZnJhbWUsIGpvYlRpdGxlKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvcHJpbnQvcGFja2FnZS5odG1sIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvcHJpbnQvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjUzODZiMjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9wcmludC9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSw1IEBACis8aHRtbD4KKzxib2R5IGJnY29sb3I9IndoaXRlIj4KK1Byb3ZpZGVzIHByaW50aW5nIGZvciBzdHlsZWQgdGV4dC4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvQ2hhckJ1ZmZlci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9DaGFyQnVmZmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNzEwOGY3YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvQ2hhckJ1ZmZlci5qYXZhCkBAIC0wLDAgKzEsMzc5IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBDaGFyQnVmZmVyLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDU6MTAgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8qKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiBNQ2hhckJ1ZmZlciB0aGF0IHN0b3JlcyBjaGFycyBpbiBhbiBhcnJheSB3aXRoIGFuIGluc2VydGlvbiBnYXAuICovCisvKgorICAgIENoYW5nZSBoaXN0b3J5CisgICAgMDcyMzk2IGpmICAgLSBmaXhlZCBhIGJ1ZyBpbiByZXBsYWNlKGludCwgaW50LCBjaGFyW10sIGludCwgaW50KSBzbyB0aGF0IGl0IGNvcnJlY3RseQorICAgICAgICAgICAgICAgIGluc2VydGVkIGludG8gdGhlIG1pZGRsZSBvZiB0aGUgYnVmZmVyLgorICAgIDA4MDI5NiBqZiAgIC0gYWRkZWQgdGltZXN0YW1wLiAgVGhpcyBpcyBzdHJpY3RseSBhIGRlYnVnZ2luZyBkZXZpY2UgdG8gaGVscCBjYXRjaAorICAgICAgICAgICAgICAgIHN0YWxlIGl0ZXJhdG9ycy4KKworICAgIDA4MjI5NiBqYnIgIGFkZGVkIGNoZWNrIGZvciAwLWxlbmd0aCBpdGVyYXRvciBpbiByZXBsYWNlCisqLworCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dDsKKworaW1wb3J0IGphdmEuaW8uRXh0ZXJuYWxpemFibGU7CitpbXBvcnQgamF2YS5pby5PYmplY3RJbnB1dDsKK2ltcG9ydCBqYXZhLmlvLk9iamVjdE91dHB1dDsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCitpbXBvcnQgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yOworCitmaW5hbCBjbGFzcyBDaGFyQnVmZmVyCisgICAgZXh0ZW5kcyBNQ2hhckJ1ZmZlciBpbXBsZW1lbnRzIEV4dGVybmFsaXphYmxlCit7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQga0dyb3dTaXplID0gMHg4MDsgLy8gc21hbGwgc2l6ZSBmb3IgdGVzdGluZworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ1VSUkVOVF9WRVJTSU9OID0gMTsgLy8gdmVyc2lvbiBjb2RlIGZvciBzdHJlYW1pbmcKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gNTYzMTc0OworCisgIHRyYW5zaWVudCBWYWxpZGF0aW9uIGZWYWxpZGF0aW9uID0gbnVsbDsKKyAgcHJpdmF0ZSBjaGFyW10gZkFycmF5OworICB0cmFuc2llbnQgcHJpdmF0ZSBpbnQgZkFycmF5U2l6ZTsKKyAgdHJhbnNpZW50IHByaXZhdGUgaW50IGZHYXA7CisKKyAgLyoqIENyZWF0ZSBhbiBlbXB0eSBjaGFyIGJ1ZmZlci4gKi8KKyAgcHVibGljIENoYXJCdWZmZXIoKQorICB7CisgIH0KKworICAvKiogQ3JlYXRlIGEgY2hhciBidWZmZXIgdGhhdCBjYW4gaG9sZCBhdCBsZWFzdCBjYXBhY2l0eSBjaGFycy4gKi8KKworICBwdWJsaWMgQ2hhckJ1ZmZlcihpbnQgY2FwYWNpdHkpCisgIHsKKyAgICBmQXJyYXkgPSBhbGxvY2F0ZShjYXBhY2l0eSk7CisgIH0KKworICBwdWJsaWMgdm9pZCByZWFkRXh0ZXJuYWwoT2JqZWN0SW5wdXQgaW4pIHRocm93cyBJT0V4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiB7CisKKyAgICBpZiAoaW4ucmVhZEludCgpICE9IENVUlJFTlRfVkVSU0lPTikgeworICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oIkludmFsaWQgdmVyc2lvbiBvZiBDaGFyQnVmZmVyIik7CisgICAgfQorCisgICAgZkFycmF5ID0gKGNoYXJbXSkgaW4ucmVhZE9iamVjdCgpOworICAgIGlmIChmQXJyYXkgIT0gbnVsbCkgeworICAgICAgICBmQXJyYXlTaXplID0gZkFycmF5Lmxlbmd0aDsKKyAgICAgICAgZkdhcCA9IGZBcnJheVNpemU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBmQXJyYXlTaXplID0gMDsKKyAgICAgICAgZkdhcCA9IDA7CisgICAgfQorICB9CisKKyAgcHVibGljIHZvaWQgd3JpdGVFeHRlcm5hbChPYmplY3RPdXRwdXQgb3V0KSB0aHJvd3MgSU9FeGNlcHRpb24geworCisgICAgY29tcHJlc3MoKTsKKyAgICBvdXQud3JpdGVJbnQoQ1VSUkVOVF9WRVJTSU9OKTsKKyAgICBvdXQud3JpdGVPYmplY3QoZkFycmF5KTsKKyAgfQorCisgIHByaXZhdGUgdm9pZCBpbnZhbGlkYXRlKCkgeworCisgICAgaWYgKGZWYWxpZGF0aW9uICE9IG51bGwpIHsKKyAgICAgICAgZlZhbGlkYXRpb24uaW52YWxpZGF0ZSgpOworICAgICAgICBmVmFsaWRhdGlvbiA9IG51bGw7CisgICAgfQorICB9CisKKyAgLy8gbm90IFRocmVhZFNhZmUgLSBjb3VsZCBlbmQgdXAgd2l0aCB0d28gVmFsaWRhdGlvbnMKKyAgLy8gYmVpbmcgZ2VuZXJhdGVkCisgIHByaXZhdGUgVmFsaWRhdGlvbiBnZXRWYWxpZGF0aW9uKCkgeworCisgICAgaWYgKGZWYWxpZGF0aW9uID09IG51bGwpIHsKKyAgICAgICAgZlZhbGlkYXRpb24gPSBuZXcgVmFsaWRhdGlvbigpOworICAgIH0KKyAgICByZXR1cm4gZlZhbGlkYXRpb247CisgIH0KKworICAvKiogUmVwbGFjZSB0aGUgY2hhcnMgZnJvbSBzdGFydCB0byBsaW1pdCB3aXRoIHRoZSBjaGFycyBmcm9tIHNyY1N0YXJ0IHRvIHNyY0xpbWl0IGluIHNyY0J1ZmZlci4gKi8KKworICAvKiogUmVwbGFjZSB0aGUgY2hhcnMgZnJvbSBzdGFydCB0byBsaW1pdCB3aXRoIHRoZSBjaGFycyBmcm9tIHNyY1N0YXJ0IHRvIHNyY0xpbWl0IGluIHNyY0NoYXJzLgorICAqIFRoaXMgaXMgdGhlIGNvcmUgcm91dGluZSBmb3IgbWFuaXB1bGF0aW5nIHRoZSBidWZmZXIuCisgICovCisgIHB1YmxpYyB2b2lkIHJlcGxhY2UoaW50IHN0YXJ0LCBpbnQgbGltaXQsIGNoYXJbXSBzcmNDaGFycywgaW50IHNyY1N0YXJ0LCBpbnQgc3JjTGltaXQpCisgIHsKKyAgICBpbnZhbGlkYXRlKCk7CisgICAgaW50IGRzdExlbmd0aCA9IGxpbWl0IC0gc3RhcnQ7CisgICAgaW50IHNyY0xlbmd0aCA9IHNyY0xpbWl0IC0gc3JjU3RhcnQ7CisKKyAgICBpZiAoZHN0TGVuZ3RoIDwgMCB8fCBzcmNMZW5ndGggPCAwKSB7CisgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInJlcGxhY2UoaW50IHN0YXJ0LCBpbnQgbGltaXQsIGNoYXJbXSBzcmNDaGFycywgaW50IHNyY1N0YXJ0LCBpbnQgc3JjTGltaXQpIik7CisgICAgfQorCisgICAgaW50IGdhcEFsbG9jID0gMDsKKyAgICBpZiAoc3JjQ2hhcnMgPT0gbnVsbCkgeworICAgICAgICBnYXBBbGxvYyA9IHNyY0xlbmd0aDsKKyAgICAgICAgc3JjTGVuZ3RoID0gMDsKKyAgICB9CisKKyAgICBpbnQgbmV3U2l6ZSA9IGZBcnJheVNpemUgLSBkc3RMZW5ndGggKyBzcmNMZW5ndGg7CisKKyAgICBpZiAoZkFycmF5ID09IG51bGwpIHsKKyAgICAgICAgaWYgKHN0YXJ0ICE9IDAgfHwgbGltaXQgIT0gMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigicmVwbGFjZShpbnQgc3RhcnQsIGludCBsaW1pdCwgY2hhcltdIHNyY0NoYXJzLCBpbnQgc3JjU3RhcnQsIGludCBzcmNMaW1pdCkiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobmV3U2l6ZSArIGdhcEFsbG9jID4gMCkgeworICAgICAgICAgICAgZkFycmF5ID0gYWxsb2NhdGUobmV3U2l6ZSArIGdhcEFsbG9jKTsKKyAgICAgICAgICAgIGlmIChzcmNMZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShzcmNDaGFycywgc3JjU3RhcnQsIGZBcnJheSwgMCwgc3JjTGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBmQXJyYXlTaXplID0gc3JjTGVuZ3RoOworICAgICAgICAgICAgICAgIGZHYXAgPSBzcmNMZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpbnQgbmV3R2FwID0gc3RhcnQgKyBzcmNMZW5ndGg7CisgICAgICAgIGludCBnYXBMaW1pdCA9IGZBcnJheS5sZW5ndGggLSBmQXJyYXlTaXplICsgZkdhcDsKKworICAgICAgICBpZiAobmV3U2l6ZSArIGdhcEFsbG9jID4gZkFycmF5Lmxlbmd0aCkgeworICAgICAgICAgICAgY2hhcltdIHRlbXAgPSBhbGxvY2F0ZShuZXdTaXplICsgZ2FwQWxsb2MpOworCisgICAgICAgICAgICAvL21vdmUgc3R1ZmYgYXQgYmVnaW5uaW5nIHRoYXQgd2UgYXJlbid0IHdyaXRpbmcgb3ZlcgorICAgICAgICAgICAgaWYgKHN0YXJ0ID4gMCkgeworICAgICAgICAgICAgICAgIGF0KDAsIHN0YXJ0LCB0ZW1wLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vbW92ZSBzdHVmZiBmcm9tIHNyYyBhcnJheSB0aGF0IHdlIGFyZSBjb3B5aW5nCisgICAgICAgICAgICBpZiAoc3JjTGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoc3JjQ2hhcnMsIHNyY1N0YXJ0LCB0ZW1wLCBzdGFydCwgc3JjTGVuZ3RoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vbW92ZSBzdHVmZiBhdCBlbmQgdGhhdCB3ZSBhcmVuJ3QgY29weWluZyBvdmVyCisgICAgICAgICAgICBpZiAobGltaXQgPCBmQXJyYXlTaXplKSB7CisgICAgICAgICAgICAgICAgYXQobGltaXQsIGZBcnJheVNpemUsIHRlbXAsIHRlbXAubGVuZ3RoIC0gbmV3U2l6ZSArIG5ld0dhcCk7CisgICAgICAgICAgICAvL2NoYW5nZSA3LTIzLTk2CisgICAgICAgICAgICAvLyAgICBhdChsaW1pdCwgZkFycmF5U2l6ZSAtIGxpbWl0LCB0ZW1wLCB0ZW1wLmxlbmd0aCAtIG5ld1NpemUgKyBuZXdHYXApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmQXJyYXkgPSB0ZW1wOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHN0YXJ0ID4gZkdhcCkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZkFycmF5LCBnYXBMaW1pdCwgZkFycmF5LCBmR2FwLCBzdGFydCAtIGZHYXApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGxpbWl0IDwgZkdhcCkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZkFycmF5LCBsaW1pdCwgZkFycmF5LCBmQXJyYXkubGVuZ3RoIC0gbmV3U2l6ZSArIG5ld0dhcCwgZkdhcCAtIGxpbWl0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzcmNMZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShzcmNDaGFycywgc3JjU3RhcnQsIGZBcnJheSwgc3RhcnQsIHNyY0xlbmd0aCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmQXJyYXlTaXplID0gbmV3U2l6ZTsKKyAgICAgICAgZkdhcCA9IG5ld0dhcDsKKyAgICB9CisgIH0KKworICAvKiogUmVwbGFjZSB0aGUgY2hhcnMgZnJvbSBzdGFydCB0byBsaW1pdCB3aXRoIHRoZSBjaGFycyBmcm9tIHNyY1N0YXJ0IHRvIHNyY0xpbWl0IGluIHNyY1N0cmluZy4gKi8KKworICAvKiBUaGlzIGltcGxlbWVudHMgb3B0aW1pemF0aW9ucyBmb3IgbnVsbCB0ZXh0IG9yIGluc2VydGluZyB0ZXh0IHRoYXQgZml0cyBhdCB0aGUgZ2FwLAorICAgICBhbmQgZGVmYXVsdHMgdG8gY2FsbCB0aGUgY29yZSByZXBsYWNlIHJvdXRpbmUgaWYgdGhlc2Ugb3B0aW1pemF0aW9ucyBmYWlsLiAqLworCisgIHB1YmxpYyB2b2lkIHJlcGxhY2UoaW50IHN0YXJ0LCBpbnQgbGltaXQsIFN0cmluZyBzcmNTdHJpbmcsIGludCBzcmNTdGFydCwgaW50IHNyY0xpbWl0KQorICB7CisgICAgaW52YWxpZGF0ZSgpOworICAgIGludCBsZW5ndGggPSBsaW1pdCAtIHN0YXJ0OworICAgIGludCBzcmNMZW5ndGggPSBzcmNMaW1pdCAtIHNyY1N0YXJ0OworCisgICAgaWYgKGZBcnJheSA9PSBudWxsKSB7CisgICAgICAgIGlmIChzdGFydCAhPSAwIHx8IGxpbWl0ICE9IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInJlcGxhY2UoaW50IHN0YXJ0LCBpbnQgbGltaXQsIFN0cmluZyBzcmNTdHJpbmcsIGludCBzcmNTdGFydCwgaW50IHNyY0xpbWl0KSIpOworICAgICAgICB9CisgICAgICAgIGlmIChzcmNMZW5ndGggPiAwKSB7CisgICAgICAgICAgICBmQXJyYXkgPSBhbGxvY2F0ZShzcmNMZW5ndGgpOworICAgICAgICAgICAgc3JjU3RyaW5nLmdldENoYXJzKHNyY1N0YXJ0LCBzcmNMaW1pdCwgZkFycmF5LCAwKTsKKyAgICAgICAgICAgIGZBcnJheVNpemUgPSBzcmNMZW5ndGg7CisgICAgICAgICAgICBmR2FwID0gc3JjTGVuZ3RoOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHN0YXJ0ID09IGZHYXAgJiYgZkFycmF5Lmxlbmd0aCA+PSBmQXJyYXlTaXplIC0gbGVuZ3RoICsgc3JjTGVuZ3RoKSB7CisgICAgICAgICAgICBpZiAoc3JjTGltaXQgPiAwKSB7CisgICAgICAgICAgICAgICAgc3JjU3RyaW5nLmdldENoYXJzKHNyY1N0YXJ0LCBzcmNMaW1pdCwgZkFycmF5LCBmR2FwKTsKKyAgICAgICAgICAgICAgICBmR2FwICs9IHNyY0xlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZBcnJheVNpemUgKz0gc3JjTGVuZ3RoIC0gbGVuZ3RoOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVwbGFjZShzdGFydCwgbGltaXQsIHNyY1N0cmluZyAhPSBudWxsID8gc3JjU3RyaW5nLnRvQ2hhckFycmF5KCkgOiBudWxsLCBzcmNTdGFydCwgc3JjTGltaXQpOworICAgICAgICB9CisgICAgfQorICB9CisKKyAgcHVibGljIHZvaWQgcmVwbGFjZShpbnQgc3RhcnQsIGludCBsaW1pdCwgTUNvbnN0VGV4dCBzcmNUZXh0LCBpbnQgc3JjU3RhcnQsIGludCBzcmNMaW1pdCkKKyAgeworICAgIGludmFsaWRhdGUoKTsKKyAgICBpbnQgbGVuZ3RoID0gbGltaXQgLSBzdGFydDsKKyAgICBpbnQgc3JjTGVuZ3RoID0gc3JjTGltaXQgLSBzcmNTdGFydDsKKworICAgIGlmIChmQXJyYXkgPT0gbnVsbCkgeworICAgICAgICBpZiAoc3RhcnQgIT0gMCB8fCBsaW1pdCAhPSAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJyZXBsYWNlKGludCBzdGFydCwgaW50IGxpbWl0LCBTdHJpbmcgc3JjU3RyaW5nLCBpbnQgc3JjU3RhcnQsIGludCBzcmNMaW1pdCkiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3JjTGVuZ3RoID4gMCkgeworICAgICAgICAgICAgZkFycmF5ID0gYWxsb2NhdGUoc3JjTGVuZ3RoKTsKKyAgICAgICAgICAgIHNyY1RleHQuZXh0cmFjdENoYXJzKHNyY1N0YXJ0LCBzcmNMaW1pdCwgZkFycmF5LCAwKTsKKyAgICAgICAgICAgIGZBcnJheVNpemUgPSBzcmNMZW5ndGg7CisgICAgICAgICAgICBmR2FwID0gc3JjTGVuZ3RoOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKHN0YXJ0ID09IGZHYXAgJiYgZkFycmF5Lmxlbmd0aCA+PSBmQXJyYXlTaXplIC0gbGVuZ3RoICsgc3JjTGVuZ3RoKSB7CisgICAgICAgICAgICBpZiAoc3JjTGltaXQgPiAwKSB7CisgICAgICAgICAgICAgICAgc3JjVGV4dC5leHRyYWN0Q2hhcnMoc3JjU3RhcnQsIHNyY0xpbWl0LCBmQXJyYXksIGZHYXApOworICAgICAgICAgICAgICAgIGZHYXAgKz0gc3JjTGVuZ3RoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZkFycmF5U2l6ZSArPSBzcmNMZW5ndGggLSBsZW5ndGg7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjaGFyW10gdGVtcCA9IHNyY0xlbmd0aCA9PSAwPyBudWxsIDogbmV3IGNoYXJbc3JjTGVuZ3RoXTsKKyAgICAgICAgICAgIGlmICh0ZW1wICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzcmNUZXh0LmV4dHJhY3RDaGFycyhzcmNTdGFydCwgc3JjTGltaXQsIHRlbXAsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVwbGFjZShzdGFydCwgbGltaXQsIHRlbXAsIDAsIHNyY0xpbWl0IC0gc3JjU3RhcnQpOworICAgICAgICB9CisgICAgfQorICB9CisKKyAgLyoqIFJlcGxhY2UgdGhlIGNoYXJzIGZyb20gc3RhcnQgdG8gbGltaXQgd2l0aCBzcmNDaGFyLiAqLworCisgIC8qIFRoaXMgaW1wbGVtZW50cyBvcHRpbWl6YXRpb25zIGZvciBudWxsIHRleHQgb3IgcmVwbGFjaW5nIGEgY2hhcmFjdGVyIHRoYXQgZml0cyBpbnRvIHRoZSBnYXAsCisgICAgIGFuZCBkZWZhdWx0cyB0byBjYWxsIHRoZSBjb3JlIHJlcGxhY2Ugcm91dGluZSBpZiB0aGVzZSBvcHRpbWl6YXRpb25zIGZhaWwuICovCisKKyAgcHVibGljIHZvaWQgcmVwbGFjZShpbnQgc3RhcnQsIGludCBsaW1pdCwgY2hhciBzcmNDaGFyKQorICB7CisgICAgaW52YWxpZGF0ZSgpOworICAgIGlmIChmQXJyYXkgPT0gbnVsbCkgeworICAgICAgICBpZiAoc3RhcnQgIT0gMCB8fCBsaW1pdCAhPSAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJyZXBsYWNlKGludCBzdGFydCwgaW50IGxpbWl0LCBjaGFyIHNyY0NoYXIpIik7CisgICAgICAgIH0KKyAgICAgICAgZkFycmF5ID0gYWxsb2NhdGUoMSk7CisgICAgICAgIGZBcnJheVswXSA9IHNyY0NoYXI7CisgICAgICAgIGZBcnJheVNpemUgPSAxOworICAgICAgICBmR2FwID0gMTsKKyAgICB9IGVsc2UgeworICAgICAgICBpbnQgbGVuZ3RoID0gbGltaXQgLSBzdGFydDsKKyAgICAgICAgaWYgKHN0YXJ0ID09IGZHYXAgJiYgZkFycmF5Lmxlbmd0aCA+IGZBcnJheVNpemUgLSBsZW5ndGgpIHsKKyAgICAgICAgICAgIGZBcnJheVtmR2FwXSA9IHNyY0NoYXI7CisgICAgICAgICAgICBmR2FwICs9IDE7CisgICAgICAgICAgICBmQXJyYXlTaXplICs9IDEgLSBsZW5ndGg7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXBsYWNlKHN0YXJ0LCBsaW1pdCwgbmV3IGNoYXJbXSB7IHNyY0NoYXJ9ICwgMCwgMSk7CisgICAgICAgIH0KKyAgICB9CisgIH0KKworICAvKiogUmV0dXJuIHRoZSBjaGFyIGF0IHBvcy4gKi8KKworICBwdWJsaWMgY2hhciBhdChpbnQgcG9zKQorICB7CisgICAgaWYgKHBvcyA8IDAgfHwgcG9zID49IGZBcnJheVNpemUpIHsKKyAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKyAgICB9CisgICAgcmV0dXJuIHBvcyA8IGZHYXAgPyBmQXJyYXlbcG9zXSA6IGZBcnJheVtmQXJyYXkubGVuZ3RoIC0gZkFycmF5U2l6ZSArIHBvc107CisgIH0KKworICAvKiogQ29weSB0aGUgY2hhcnMgZnJvbSBzdGFydCB0byBsaW1pdCB0byBkc3Qgc3RhcnRpbmcgYXQgZHN0U3RhcnQuICovCisKKyAgcHVibGljIHZvaWQgYXQoaW50IHN0YXJ0LCBpbnQgbGltaXQsIGNoYXJbXSBkc3QsIGludCBkc3RTdGFydCkKKyAgeworICAgIGludCBsZW5ndGggPSBsaW1pdCAtIHN0YXJ0OworCisgICAgaWYgKHN0YXJ0IDwgMCB8fCBsaW1pdCA8IHN0YXJ0IHx8IGxpbWl0ID4gZkFycmF5U2l6ZSkgeworICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7CisgICAgfQorCisgICAgaWYgKGxpbWl0IDw9IGZHYXApIHsKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShmQXJyYXksIHN0YXJ0LCBkc3QsIGRzdFN0YXJ0LCBsZW5ndGgpOworICAgIH0gZWxzZSBpZiAoc3RhcnQgPj0gZkdhcCkgeworICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGZBcnJheSwgZkFycmF5Lmxlbmd0aCAtIGZBcnJheVNpemUgKyBzdGFydCwgZHN0LCBkc3RTdGFydCwgbGVuZ3RoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGZBcnJheSwgc3RhcnQsIGRzdCwgZHN0U3RhcnQsIGZHYXAgLSBzdGFydCk7CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZkFycmF5LCBmQXJyYXkubGVuZ3RoIC0gZkFycmF5U2l6ZSArIGZHYXAsIGRzdCwgZHN0U3RhcnQgKyBmR2FwIC0gc3RhcnQsIGxpbWl0IC0gZkdhcCk7CisgICAgfQorICB9CisKKyAgLyoqIFJldHVybiB0aGUgbnVtYmVyIG9mIGNoYXJzIGluIHRoZSBidWZmZXIuICovCisKKyAgcHVibGljIGZpbmFsIGludCBsZW5ndGgoKQorICB7CisgICAgcmV0dXJuIGZBcnJheVNpemU7CisgIH0KKworICAvKiogUmV0dXJuIHRoZSBudW1iZXIgb2YgY2hhcnMgdGhlIGJ1ZmZlciBjYW4gaG9sZCBiZWZvcmUgaXQgbXVzdCByZWFsbG9jYXRlLiAqLworCisgIHB1YmxpYyBmaW5hbCBpbnQgY2FwYWNpdHkoKQorICB7CisgICAgcmV0dXJuIGZBcnJheSAhPSBudWxsID8gZkFycmF5Lmxlbmd0aCA6IDA7CisgIH0KKworICAvKiogUmVzZXJ2ZSBjYXBhY2l0eSBjaGFycyBhdCBzdGFydC4gVXRpbGl0eSB0byBvcHRpbWl6ZSBhIHNlcXVlbmNlIG9mIG9wZXJhdGlvbnMgYXQgc3RhcnQuICovCisKKyAgcHVibGljIHZvaWQgcmVzZXJ2ZUNhcGFjaXR5KGludCBzdGFydCwgaW50IGNhcGFjaXR5KQorICB7CisgICAgcmVwbGFjZShzdGFydCwgc3RhcnQsIChjaGFyW10pbnVsbCwgMCwgY2FwYWNpdHkpOworICB9CisKKyAgLyoqIE1pbmltaXplIHRoZSBzdG9yYWdlIHVzZWQgYnkgdGhlIGJ1ZmZlci4gKi8KKworICBwdWJsaWMgdm9pZCBjb21wcmVzcygpCisgIHsKKyAgICBpbnZhbGlkYXRlKCk7CisgICAgaWYgKGZBcnJheVNpemUgPT0gMCkgeworICAgICAgICBmQXJyYXkgPSBudWxsOworICAgICAgICBmR2FwID0gMDsKKyAgICB9IGVsc2UgaWYgKGZBcnJheVNpemUgIT0gZkFycmF5Lmxlbmd0aCkgeworICAgICAgICBjaGFyW10gdGVtcCA9IG5ldyBjaGFyW2ZBcnJheVNpemVdOworICAgICAgICBhdCgwLCBmQXJyYXlTaXplLCB0ZW1wLCAwKTsKKyAgICAgICAgZkFycmF5ID0gdGVtcDsKKyAgICAgICAgZkdhcCA9IGZBcnJheVNpemU7CisgICAgfQorICB9CisKKyAgLyoqIERpc3BsYXkgdGhlIGJ1ZmZlci4gKi8KKworICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKKyAgeworICAgIGlmIChmQXJyYXkgIT0gbnVsbCkgeworICAgICAgICByZXR1cm4gbmV3IFN0cmluZ0J1ZmZlcigpCisgICAgICAgIC5hcHBlbmQoImxpbWl0OiAiKS5hcHBlbmQoZkFycmF5Lmxlbmd0aCkKKyAgICAgICAgLmFwcGVuZCgiLCBzaXplOiAiKS5hcHBlbmQoZkFycmF5U2l6ZSkKKyAgICAgICAgLmFwcGVuZCgiLCBnYXA6ICIpLmFwcGVuZChmR2FwKQorICAgICAgICAuYXBwZW5kKCIsICIpLmFwcGVuZChmQXJyYXksIDAsIGZHYXApCisgICAgICAgIC5hcHBlbmQoZkFycmF5LCBmQXJyYXkubGVuZ3RoIC0gZkFycmF5U2l6ZSArIGZHYXAsIGZBcnJheVNpemUgLSBmR2FwKQorICAgICAgICAudG9TdHJpbmcoKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gbmV3IFN0cmluZygiVGhlIGJ1ZmZlciBpcyBlbXB0eS4iKTsKKyAgICB9CisgIH0KKworICBwdWJsaWMgQ2hhcmFjdGVySXRlcmF0b3IgY3JlYXRlQ2hhcmFjdGVySXRlcmF0b3IoaW50IHN0YXJ0LCBpbnQgbGltaXQpIHsKKworICAgIFZhbGlkYXRpb24gdmFsID0gZ2V0VmFsaWRhdGlvbigpOworICAgIHJldHVybiBuZXcgQ2hhckJ1ZmZlckl0ZXJhdG9yKHN0YXJ0LCBsaW1pdCwgZkFycmF5LCBmQXJyYXlTaXplLCBmR2FwLCB2YWwpOworICB9CisKKyAgLyoqIFRoZSByZXNpemluZyBhbGdvcml0aG0uIFJldHVybiBhIHZhbHVlID49IG1pblNpemUuICovCisKKyAgcHJvdGVjdGVkIGludCBhbGxvY2F0aW9uKGludCBtaW5TaXplKQorICB7CisgICAgLy8gICAgcmV0dXJuIChtaW5TaXplICsga0dyb3dTaXplKSAmIH4oa0dyb3dTaXplIC0gMSk7CisgICAgcmV0dXJuIG1pblNpemUgPCBrR3Jvd1NpemUgPyBrR3Jvd1NpemUgOiAobWluU2l6ZSAqIDIgKyBrR3Jvd1NpemUpICYgfihrR3Jvd1NpemUgLSAxKTsKKyAgfQorCisgIC8qKiBBbGxvY2F0ZSBhIG5ldyBjaGFyYWN0ZXIgYXJyYXkgb2YgbGltaXQgPj0gbWluU2l6ZS4gKi8KKworICBwcm90ZWN0ZWQgY2hhcltdIGFsbG9jYXRlKGludCBtaW5TaXplKQorICB7CisgICAgcmV0dXJuIG5ldyBjaGFyW2FsbG9jYXRpb24obWluU2l6ZSldOworICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L0NoYXJCdWZmZXJJdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9DaGFyQnVmZmVySXRlcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42YTBhYzE2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9DaGFyQnVmZmVySXRlcmF0b3IuamF2YQpAQCAtMCwwICsxLDEzMSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogQ2hhckJ1ZmZlckl0ZXJhdG9yLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDU6MTAgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0OworCitpbXBvcnQgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yOworCitmaW5hbCBjbGFzcyBDaGFyQnVmZmVySXRlcmF0b3IgaW1wbGVtZW50cyBDaGFyYWN0ZXJJdGVyYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb25lYWJsZQoreworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBpbnQgZlJhbmdlU3RhcnQ7CisgICAgcHJpdmF0ZSBpbnQgZlJhbmdlTGltaXQ7CisgICAgcHJpdmF0ZSBpbnQgZkN1cnJlbnRJbmRleDsKKyAgICBwcml2YXRlIGNoYXIgZlN0b3JhZ2VbXTsKKyAgICBwcml2YXRlIGludCBmR2FwOworICAgIHByaXZhdGUgaW50IGZHYXBMZW5ndGg7CisgICAgcHJpdmF0ZSBWYWxpZGF0aW9uIGZWYWxpZGF0aW9uOworCisgICAgQ2hhckJ1ZmZlckl0ZXJhdG9yKGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICBjaGFyW10gc3RvcmFnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IGdhcCwKKyAgICAgICAgICAgICAgICAgICAgICAgVmFsaWRhdGlvbiB2YWxpZGF0aW9uKSB7CisKKyAgICAgICAgaWYgKHN0YXJ0ID4gbGltaXQpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInN0YXJ0ID4gbGltaXQiKTsKKyAgICAgICAgfQorICAgICAgICBmUmFuZ2VTdGFydCA9IHN0YXJ0OworICAgICAgICBmUmFuZ2VMaW1pdCA9IGxpbWl0OworICAgICAgICBmQ3VycmVudEluZGV4ID0gZlJhbmdlU3RhcnQ7CisgICAgICAgIGZTdG9yYWdlID0gc3RvcmFnZTsKKyAgICAgICAgZkdhcCA9IGdhcDsKKyAgICAgICAgZkdhcExlbmd0aCA9IChzdG9yYWdlPT1udWxsPyAwIDogc3RvcmFnZS5sZW5ndGgpIC0gbGVuZ3RoOworICAgICAgICBmVmFsaWRhdGlvbiA9IHZhbGlkYXRpb247CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGNoZWNrVmFsaWRhdGlvbigpIHsKKworICAgICAgICBpZiAoIWZWYWxpZGF0aW9uLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJdGVyYXRvciBpcyBubyBsb25nZXIgdmFsaWQiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBjaGFyIGZpcnN0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBzZXRJbmRleChmUmFuZ2VTdGFydCk7CisgICAgfQorCisgICAgcHVibGljIGNoYXIgbGFzdCgpCisgICAgeworICAgICAgICByZXR1cm4gc2V0SW5kZXgoZlJhbmdlTGltaXQgLSAxKTsKKyAgICB9CisKKyAgICBwdWJsaWMgY2hhciBjdXJyZW50KCkKKyAgICB7CisgICAgICAgIGNoZWNrVmFsaWRhdGlvbigpOworICAgICAgICBpZiAoZkN1cnJlbnRJbmRleCA8IGZSYW5nZVN0YXJ0IHx8IGZDdXJyZW50SW5kZXggPj0gZlJhbmdlTGltaXQpCisgICAgICAgICAgICByZXR1cm4gRE9ORTsKKyAgICAgICAgaW50IGkgPSAoZkN1cnJlbnRJbmRleCA8IGZHYXApID8gZkN1cnJlbnRJbmRleCA6IChmQ3VycmVudEluZGV4ICsgZkdhcExlbmd0aCk7CisgICAgICAgIHJldHVybiBmU3RvcmFnZVtpXTsKKyAgICB9CisKKyAgICBwdWJsaWMgY2hhciBuZXh0KCkKKyAgICB7CisgICAgICAgIGNoZWNrVmFsaWRhdGlvbigpOworICAgICAgICBmQ3VycmVudEluZGV4Kys7CisgICAgICAgIGlmIChmQ3VycmVudEluZGV4ID49IGZSYW5nZUxpbWl0KQorICAgICAgICB7CisgICAgICAgICAgICBmQ3VycmVudEluZGV4ID0gZlJhbmdlTGltaXQ7CisgICAgICAgICAgICByZXR1cm4gRE9ORTsKKyAgICAgICAgfQorICAgICAgICBpbnQgaSA9IChmQ3VycmVudEluZGV4IDwgZkdhcCkgPyBmQ3VycmVudEluZGV4IDogKGZDdXJyZW50SW5kZXggKyBmR2FwTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGZTdG9yYWdlW2ldOworICAgIH0KKworICAgIHB1YmxpYyBjaGFyIHByZXZpb3VzKCkKKyAgICB7CisgICAgICAgIGZDdXJyZW50SW5kZXgtLTsKKyAgICAgICAgaWYgKGZDdXJyZW50SW5kZXggPj0gZlJhbmdlU3RhcnQpCisgICAgICAgICAgICByZXR1cm4gY3VycmVudCgpOworICAgICAgICBmQ3VycmVudEluZGV4ID0gZlJhbmdlU3RhcnQ7CisgICAgICAgIHJldHVybiBET05FOworICAgIH0KKworICAgIHB1YmxpYyBjaGFyIHNldEluZGV4KGludCBpKQorICAgIHsKKyAgICAgICAgaWYgKGkgPCBmUmFuZ2VTdGFydCB8fCBpID4gZlJhbmdlTGltaXQpCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIHBvc2l0aW9uIik7CisgICAgICAgIGZDdXJyZW50SW5kZXggPSBpOworICAgICAgICByZXR1cm4gY3VycmVudCgpOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0QmVnaW5JbmRleCgpCisgICAgeworICAgICAgICByZXR1cm4gZlJhbmdlU3RhcnQ7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRFbmRJbmRleCgpCisgICAgeworICAgICAgICByZXR1cm4gZlJhbmdlTGltaXQ7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRJbmRleCgpCisgICAgeworICAgICAgICByZXR1cm4gZkN1cnJlbnRJbmRleDsKKyAgICB9CisKKyAgICBwdWJsaWMgT2JqZWN0IGNsb25lKCkKKyAgICB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuY2xvbmUoKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L0Zhc3RJbnRCaW5hcnlTZWFyY2guamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvRmFzdEludEJpbmFyeVNlYXJjaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmUyOTdhN2IKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L0Zhc3RJbnRCaW5hcnlTZWFyY2guamF2YQpAQCAtMCwwICsxLDEzNiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogRmFzdEludEJpbmFyeVNlYXJjaC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjQ1OjEwICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCisvKgorKEMpIENvcHlyaWdodCBUYWxpZ2VudCwgSW5jLiAxOTk2IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZAorKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5NiAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQKKworICBUaGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGlzIHNvdXJjZSBjb2RlIGFuZCBkb2N1bWVudGF0aW9uIGlzIGNvcHlyaWdodGVkIGFuZAorb3duZWQgYnkgVGFsaWdlbnQsIEluYy4sIGEgd2hvbGx5LW93bmVkIHN1YnNpZGlhcnkgb2YgSUJNLiBUaGVzZSBtYXRlcmlhbHMgYXJlCitwcm92aWRlZCB1bmRlciB0ZXJtcyBvZiBhIExpY2Vuc2UgQWdyZWVtZW50IGJldHdlZW4gVGFsaWdlbnQgYW5kIFN1bi4gVGhpcwordGVjaG5vbG9neSBpcyBwcm90ZWN0ZWQgYnkgbXVsdGlwbGUgVVMgYW5kIEludGVybmF0aW9uYWwgcGF0ZW50cy4gVGhpcyBub3RpY2UgYW5kCithdHRyaWJ1dGlvbiB0byBUYWxpZ2VudCBtYXkgbm90IGJlIHJlbW92ZWQuCisgIFRhbGlnZW50IGlzIGEgcmVnaXN0ZXJlZCB0cmFkZW1hcmsgb2YgVGFsaWdlbnQsIEluYy4KKyovCisKKy8qCisgICAgNy8yOS85NgorICAgICAgICBNb2RpZmllZCB0byBzZWFyY2ggcG9ydGlvbnMgb2YgYW4gaW50ZWdlciBhcnJheS4gIFNob3VsZCBiZSByZXRlc3RlZC4KKyovCisKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0OworCisvKioKKyAqIFRoaXMgY2xhc3Mgc2VhcmNoZXMgYSBzZWdtZW50IG9mIGFuIGFycmF5IG9mIGludGVnZXJzLiAgVGhlIHNlZ21lbnQKKyAqIG11c3QgYmUgc29ydGVkIGluIGFzY2VuZGluZyBvcmRlciAoYnV0IHRoaXMgY2xhc3MgZG9lcyBub3QgdmVyaWZ5IHRoaXMpLgorICogQWxzbywgdGhpcyBjbGFzcyBhbGlhc2VzIHRoZSBhcnJheTsgIGlmIHRoZSBhcnJheSBpcyBtb2RpZmllZCBsYXRlciB0aGUKKyAqIHNlYXJjaCByZXN1bHRzIGFyZSB1bmRlZmluZWQuCisgKi8KK2ZpbmFsIGNsYXNzIEZhc3RJbnRCaW5hcnlTZWFyY2gKK3sKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgaW50IGRhdGFBcnJheVtdOworICAgIHByaXZhdGUgaW50IGF1eFN0YXJ0OworICAgIHByaXZhdGUgaW50IHBvd2VyOworCisgICAgcHJpdmF0ZSBpbnQgZkZpcnN0SW5kZXg7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgZXhwMltdID0geyAxLCAyLCA0LCA4LCAxNiwgMzIsIDY0LCAxMjgsIDI1NiwgNTEyLCAxMDI0LCAyMDQ4LCA0MDk2LCA4MTkyLCAxNjM4NCwgMzI3NjgsIDY1NTM2LCAxMzEwNzIgfTsKKworICAgIHB1YmxpYyBGYXN0SW50QmluYXJ5U2VhcmNoKGludCBkYXRhW10pCisgICAgeworICAgICAgICB0aGlzKGRhdGEsIDAsIGRhdGEubGVuZ3RoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgRmFzdEludEJpbmFyeVNlYXJjaChpbnQgZGF0YVtdLCBpbnQgZmlyc3RWYWxpZEluZGV4LCBpbnQgdmFsaWRMZW5ndGgpCisgICAgeworICAgICAgICBzZXREYXRhKGRhdGEsIGZpcnN0VmFsaWRJbmRleCwgdmFsaWRMZW5ndGgpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBzZXREYXRhKGludCBkYXRhW10pIHsKKyAgICAgICAgCisgICAgICAgIHNldERhdGEoZGF0YSwgMCwgZGF0YS5sZW5ndGgpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBzZXREYXRhKGludCBkYXRhW10sIGludCBmaXJzdFZhbGlkSW5kZXgsIGludCB2YWxpZExlbmd0aCkgeworCisgICAgICAgIGlmIChkYXRhLmxlbmd0aCA8IDEpIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKyAgICAgICAgaWYgKGRhdGEubGVuZ3RoID49IGV4cDJbZXhwMi5sZW5ndGgtMV0pIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKworICAgICAgICBkYXRhQXJyYXkgPSBkYXRhOworICAgICAgICBmRmlyc3RJbmRleCA9IGZpcnN0VmFsaWRJbmRleDsKKworICAgICAgICBmb3IgKHBvd2VyID0gZXhwMi5sZW5ndGgtMTsgcG93ZXIgPiAwICYmIHZhbGlkTGVuZ3RoIDwgZXhwMltwb3dlcl07IHBvd2VyLS0pIHt9CisKKyAgICAgICAgLy8gYXQgdGhpcyBwb2ludCwgYXJyYXkubGVuZ3RoID49IDJecG93ZXIKKworICAgICAgICBhdXhTdGFydCA9IHZhbGlkTGVuZ3RoIC0gZXhwMltwb3dlcl07CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgaW5kZXggaW4gdGhlIGFycmF5IG9mIHRoZSBmaXJzdCBlbGVtZW50IHdoaWNoIGlzIGF0IGxlYXN0CisgICAgICogYXMgbGFyZ2UgYXMgPHR0PnZhbHVlPC90dD4uICBJZiB2YWx1ZSBpcyBsYXJnZXIgdGhhbiB0aGUgbGFyZ2VzdAorICAgICAqIGVsZW1lbnQgaW4gdGhlIGFycmF5IHRoZSBsYXN0IHZhbGlkIGluZGV4IGluIHRoZSBhcnJheSBpcyByZXR1cm5lZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGZpbmRJbmRleChpbnQgdmFsdWUpCisgICAgeworICAgICAgICBpbnQgaW5kZXggPSBleHAyW3Bvd2VyXS0xICsgZkZpcnN0SW5kZXg7CisgICAgICAgIGlmICh2YWx1ZSA+PSBkYXRhQXJyYXlbYXV4U3RhcnQgKyBmRmlyc3RJbmRleF0pIHsKKyAgICAgICAgICAgIGluZGV4ICs9IGF1eFN0YXJ0OworICAgICAgICB9CisKKyAgICAgICAgLy8gYXQgdGhpcyBwb2ludCwgaW5kZXggaXMgdGhlICJ1cHBlciBsaW1pdCIgb2YgdGhlIHNlYXJjaAorCisgICAgICAgIHN3aXRjaCAocG93ZXIpIHsKKyAgICAgICAgY2FzZSAxNzoKKyAgICAgICAgICAgIGlmICh2YWx1ZSA8IGRhdGFBcnJheVtpbmRleC02NTUzNl0pIGluZGV4IC09IDY1NTM2OworICAgICAgICBjYXNlIDE2OgorICAgICAgICAgICAgaWYgKHZhbHVlIDwgZGF0YUFycmF5W2luZGV4LTMyNzY4XSkgaW5kZXggLT0gMzI3Njg7CisgICAgICAgIGNhc2UgMTU6CisgICAgICAgICAgICBpZiAodmFsdWUgPCBkYXRhQXJyYXlbaW5kZXgtMTYzODRdKSBpbmRleCAtPSAxNjM4NDsKKyAgICAgICAgY2FzZSAxNDoKKyAgICAgICAgICAgIGlmICh2YWx1ZSA8IGRhdGFBcnJheVtpbmRleC04MTkyXSkgaW5kZXggLT0gODE5MjsKKyAgICAgICAgY2FzZSAxMzoKKyAgICAgICAgICAgIGlmICh2YWx1ZSA8IGRhdGFBcnJheVtpbmRleC00MDk2XSkgaW5kZXggLT0gNDA5NjsKKyAgICAgICAgY2FzZSAxMjoKKyAgICAgICAgICAgIGlmICh2YWx1ZSA8IGRhdGFBcnJheVtpbmRleC0yMDQ4XSkgaW5kZXggLT0gMjA0ODsKKyAgICAgICAgY2FzZSAxMToKKyAgICAgICAgICAgIGlmICh2YWx1ZSA8IGRhdGFBcnJheVtpbmRleC0xMDI0XSkgaW5kZXggLT0gMTAyNDsKKyAgICAgICAgY2FzZSAxMDoKKyAgICAgICAgICAgIGlmICh2YWx1ZSA8IGRhdGFBcnJheVtpbmRleC01MTJdKSBpbmRleCAtPSA1MTI7CisgICAgICAgIGNhc2UgOToKKyAgICAgICAgICAgIGlmICh2YWx1ZSA8IGRhdGFBcnJheVtpbmRleC0yNTZdKSBpbmRleCAtPSAyNTY7CisgICAgICAgIGNhc2UgODoKKyAgICAgICAgICAgIGlmICh2YWx1ZSA8IGRhdGFBcnJheVtpbmRleC0xMjhdKSBpbmRleCAtPSAxMjg7CisgICAgICAgIGNhc2UgNzoKKyAgICAgICAgICAgIGlmICh2YWx1ZSA8IGRhdGFBcnJheVtpbmRleC02NF0pIGluZGV4IC09IDY0OworICAgICAgICBjYXNlIDY6CisgICAgICAgICAgICBpZiAodmFsdWUgPCBkYXRhQXJyYXlbaW5kZXgtMzJdKSBpbmRleCAtPSAzMjsKKyAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgaWYgKHZhbHVlIDwgZGF0YUFycmF5W2luZGV4LTE2XSkgaW5kZXggLT0gMTY7CisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgIGlmICh2YWx1ZSA8IGRhdGFBcnJheVtpbmRleC04XSkgaW5kZXggLT0gODsKKyAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgaWYgKHZhbHVlIDwgZGF0YUFycmF5W2luZGV4LTRdKSBpbmRleCAtPSA0OworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICBpZiAodmFsdWUgPCBkYXRhQXJyYXlbaW5kZXgtMl0pIGluZGV4IC09IDI7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgIGlmICh2YWx1ZSA8IGRhdGFBcnJheVtpbmRleC0xXSkgaW5kZXggLT0gMTsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgaWYgKHZhbHVlIDwgZGF0YUFycmF5W2luZGV4XSkgaW5kZXggLT0gMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9NQ2hhckJ1ZmZlci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9NQ2hhckJ1ZmZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjBlZWJmZjEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L01DaGFyQnVmZmVyLmphdmEKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogTUNoYXJCdWZmZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0NToxMCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQ7CitpbXBvcnQgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yOworCisvKiogQSBkeW5hbWljIGNoYXJhY3RlciBhcnJheSBvcHRpbWl6ZWQgZm9yIHNlcXVlbmNlcyBvZiBpbnNlcnQKKyAgICBvciBkZWxldGUgb3BlcmF0aW9ucyBpbiBhIGxvY2FsIHJlZ2lvbi4gKi8KKworYWJzdHJhY3QgY2xhc3MgTUNoYXJCdWZmZXIKK3sKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIGFic3RyYWN0IHZvaWQgcmVwbGFjZShpbnQgc3RhcnQsIGludCBsaW1pdCwgTUNvbnN0VGV4dCB0ZXh0LCBpbnQgc3JjU3RhcnQsIGludCBzcmNMaW1pdCk7CisgICAgYWJzdHJhY3Qgdm9pZCByZXBsYWNlKGludCBzdGFydCwgaW50IGxpbWl0LCBjaGFyW10gc3JjQ2hhcnMsIGludCBzcmNTdGFydCwgaW50IHNyY0xpbWl0KTsKKyAgICBhYnN0cmFjdCB2b2lkIHJlcGxhY2UoaW50IHN0YXJ0LCBpbnQgbGltaXQsIFN0cmluZyBzcmNTdHJpbmcsIGludCBzcmNTdGFydCwgaW50IHNyY0xpbWl0KTsKKyAgICBhYnN0cmFjdCB2b2lkIHJlcGxhY2UoaW50IHN0YXJ0LCBpbnQgbGltaXQsIGNoYXIgc3JjQ2hhcik7CisgICAgYWJzdHJhY3QgQ2hhcmFjdGVySXRlcmF0b3IgY3JlYXRlQ2hhcmFjdGVySXRlcmF0b3IoaW50IHN0YXJ0LCBpbnQgbGltaXQpOworICAgIGFic3RyYWN0IGNoYXIgYXQoaW50IHBvcyk7CisgICAgYWJzdHJhY3Qgdm9pZCBhdChpbnQgc3RhcnQsIGludCBsaW1pdCwgY2hhcltdIGRzdCwgaW50IGRzdFN0YXJ0KTsKKworICAgIGFic3RyYWN0IGludCAgbGVuZ3RoKCk7CisKKyAgICBhYnN0cmFjdCBpbnQgIGNhcGFjaXR5KCk7CisgICAgYWJzdHJhY3Qgdm9pZCByZXNlcnZlQ2FwYWNpdHkoaW50IHBvcywgaW50IGxlbmd0aCk7CisgICAgYWJzdHJhY3Qgdm9pZCBjb21wcmVzcygpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9NQ29uc3RUZXh0LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L01Db25zdFRleHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lYTZlNDE5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9NQ29uc3RUZXh0LmphdmEKQEAgLTAsMCArMSwzMjUgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IE1Db25zdFRleHQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0NToxMCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQ7CisKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CitpbXBvcnQgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGphdmEuYXd0LmRhdGF0cmFuc2Zlci5EYXRhRmxhdm9yOworCisvKioKKyAqIE1Db25zdFRleHQgaXMgYSBiYXNlIGNsYXNzIGZvciB0ZXh0IHdpdGggbXVsdGlwbGUgY2hhcmFjdGVyIGFuZAorICogcGFyYWdyYXBoIHN0eWxlcy4gIFRoZSB0ZXh0IGlzIGEgc2VxdWVuY2Ugb2YgVW5pY29kZSBjaGFyYWN0ZXJzLAorICogcmVwcmVzZW50ZWQgYnkgPGNvZGU+Y2hhcjwvY29kZT4uICBDaGFyYWN0ZXIgYW5kIHBhcmFncmFwaAorICogc3R5bGVzIGFyZSByZXByZXNlbnRlZCBieSB0aGUgPGNvZGU+QXR0cmlidXRlTWFwPC9jb2RlPiBjbGFzcy4KKyAqIDxwPgorICogQ2hhcmFjdGVycyBpbiB0aGUgdGV4dCBhcmUgYWNjZXNzZWQgd2l0aCBhbiBpbnRlZ2VyIGluZGV4IHVzaW5nIHRoZQorICogPGNvZGU+YXQ8L2NvZGU+IG1ldGhvZC4KKyAqIFZhbGlkIGluZGljZXMgYXJlIGJldHdlZW4gMCBhbmQgKGxlbmd0aC0xKSwgd2hlcmUgbGVuZ3RoIGlzIHRoZSBudW1iZXIKKyAqIG9mIGNoYXJhY3RlcnMgaW4gdGhlIHRleHQuICBBZGRpdGlvbmFsbHksIHRoZQorICogY2hhcmFjdGVycyBpbiB0aGUgdGV4dCBtYXkgYmUgYWNjZXNzZWQgdGhyb3VnaCBhCisgKiA8Y29kZT5qYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I8L2NvZGU+LgorICogPHA+CisgKiBFdmVyeSBjaGFyYWN0ZXIgaW4gdGhlIHRleHQgaGFzIGEgY2hhcmFjdGVyIHN0eWxlIGFzc29jaWF0ZWQgd2l0aCBpdCwKKyAqIHJlcHJlc2VudGVkIGJ5IHRoZSA8Y29kZT5BdHRyaWJ1dGVNYXA8L2NvZGU+IGNsYXNzLiAgVGhlIGNoYXJhY3RlcgorICogc3R5bGUgZm9yIGEgcGFydGljdWxhciBjaGFyYWN0ZXIgY2FuIGJlIG9idGFpbmVkIHVzaW5nIHRoZQorICogPGNvZGU+Y2hhcmFjdGVyU3R5bGVBdDwvY29kZT4gbWV0aG9kLgorICogPHA+CisgKiBFYWNoIGNoYXJhY3RlciBpbiB0aGUgdGV4dCBpcyBjb250YWluZWQgaW4gYSBwYXJhZ3JhcGguICBBIHBhcmFncmFwaAorICogaXMgYSByYW5nZSBvZiB0ZXh0IGluY2x1ZGluZyBhbmQgdGVybWluYXRlZCBieSBhCisgKiBwYXJhZ3JhcGggc2VwYXJhdG9yIChlaXRoZXIgPGNvZGU+XG48L2NvZGU+IG9yIDxjb2RlPlUrMjAyOTwvY29kZT4pLgorICogRXZlcnkKKyAqIHBhcmFncmFwaCBoYXMgYSBwYXJhZ3JhcGggc3R5bGUgYXNzb2NpYXRlZCB3aXRoIGl0LCByZXByZXNlbnRlZAorICogYnkgdGhlIDxjb2RlPkF0dHJpYnV0ZU1hcDwvY29kZT4gY2xhc3MuICBQYXJhZ3JhcGggYm91bmRhcmllcyBhbmQKKyAqIHN0eWxlcyBjYW4gYmUgb2J0YWluZWQgZnJvbSB0aGUgTUNvbnN0VGV4dC4KKyAqIDxwPgorICogVGhpcyBjbGFzcyBkb2VzIG5vdCBoYXZlIG1ldGhvZHMgZm9yIG1vZGlmeWluZyB0aGUgdGV4dCBvciBzdHlsZXMuCisgKiBIb3dldmVyLCBzdWJjbGFzc2VzIG1heSBhZGQgdGhpcyBjYXBhYmlsaXR5LCBzbyBpdCBpcyBub3Qgc2FmZSB0bworICogYXNzdW1lIHRoYXQgYW4gTUNvbnN0VGV4dCBpbnN0YW5jZSBpcyBpbW11dGFibGUuICBJbiBwYXJ0aWN1bGFyLAorICogdGhlIE1UZXh0IGNsYXNzIGFkZHMgbW9kaWZpY2F0aW9uIHByb3RvY29sIHRvIHRoaXMgY2xhc3MuICBDbGllbnRzCisgKiBjYW4gZGV0ZWN0IHdoZXRoZXIgYW4gTUNvbnN0VGV4dCBoYXMgY2hhbmdlZCBieSBrZWVwaW5nIHRyYWNrIG9mIGl0cworICogdGltZXN0YW1wLgorICogPHA+CisgKiBBIERhdGFGbGF2b3IgZm9yIGNsaXBib2FyZCBjb250ZW50IGlzIGRlZmluZWQgaW4gdGhpcyBjbGFzcy4gIFVzaW5nCisgKiB0aGlzIERhdGFGbGF2b3IgaW5zdXJlcyB0aGF0IGFsbCBjbGllbnRzIHdpbGwgcmVjb2duaXplIE1Db25zdFRleHQKKyAqIGNvbnRlbnQgb24gdGhlIGNsaXBib2FyZC4KKyAqIEBzZWUgTVRleHQKKyAqIEBzZWUgQXR0cmlidXRlTWFwCisgKiBAc2VlIGphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvcgorICogQHNlZSBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuRGF0YUZsYXZvcgorICovCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgTUNvbnN0VGV4dCB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIC8qKgorICAgICAqIFRoZSBEYXRhRmxhdm9yIGZvciBNQ29uc3RUZXh0IGNsaXBib2FyZCBjb250ZW50LiAgVXNlZCB0bworICAgICAqIGluZGljYXRlIHRoYXQgY2xpcGJvYXJkIGRhdGEgaGFzIGFuIE1Db25zdFRleHQgcmVwcmVzZW50YXRpb24uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBEYXRhRmxhdm9yIHN0eWxlZFRleHRGbGF2b3IgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEYXRhRmxhdm9yKE1Db25zdFRleHQuY2xhc3MsICJTdHlsZWQgVGV4dCIpOworCisgICAgcHJvdGVjdGVkIE1Db25zdFRleHQoKSB7CisgICAgfQorCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBDSEFSQUNURVIgQUNDRVNTCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvKioKKyogUmV0dXJuIHRoZSBjaGFyYWN0ZXIgYXQgb2Zmc2V0IDxjb2RlPnBvczwvY29kZT4uCisqIEBwYXJhbSBwb3MgYSB2YWxpZCBvZmZzZXQgaW50byB0aGUgdGV4dAorKiBAcmV0dXJucyB0aGUgY2hhcmFjdGVyIGF0IG9mZnNldCA8Y29kZT5wb3M8L2NvZGU+CisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBjaGFyIGF0KGludCBwb3MpOworCisvKioKKyogQ29weSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgWzxjb2RlPnN0YXJ0PC9jb2RlPiwgPGNvZGU+bGltaXQ8L2NvZGU+KQorKiBpbnRvIHRoZSBhcnJheSA8Y29kZT5kc3Q8L2NvZGU+LCBiZWdpbm5pbmcgYXQgPGNvZGU+ZHN0U3RhcnQ8L2NvZGU+LgorKiBAcGFyYW0gc3RhcnQgb2Zmc2V0IG9mIGZpcnN0IGNoYXJhY3RlciB3aGljaCB3aWxsIGJlIGNvcGllZCBpbnRvIHRoZSBhcnJheQorKiBAcGFyYW0gbGltaXQgb2Zmc2V0IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBsYXN0IGNoYXJhY3RlciB3aGljaCB3aWxsIGJlIGNvcGllZCBpbnRvIHRoZSBhcnJheQorKiBAcGFyYW0gZHN0IGFycmF5IGluIHdoaWNoIHRvIGNvcHkgY2hhcmFjdGVycy4gIFRoZSBsZW5ndGggb2YgPGNvZGU+ZHN0PC9jb2RlPiBtdXN0IGJlIGF0IGxlYXN0CisqICg8Y29kZT5kc3RTdGFydCArIGxpbWl0IC0gc3RhcnQ8L2NvZGU+KS4KKyovCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgZXh0cmFjdENoYXJzKGludCBzdGFydCwgaW50IGxpbWl0LCBjaGFyW10gZHN0LCBpbnQgZHN0U3RhcnQpOworCisvKioKKyogQ3JlYXRlIGFuIE1Db25zdFRleHQgY29udGFpbmluZyB0aGUgY2hhcmFjdGVycyBhbmQgc3R5bGVzIGluIHRoZSByYW5nZQorKiBbPGNvZGU+c3RhcnQ8L2NvZGU+LCA8Y29kZT5saW1pdDwvY29kZT4pLgorKiBAcGFyYW0gc3RhcnQgb2Zmc2V0IG9mIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgbmV3IHRleHQKKyogQHBhcmFtIGxpbWl0IG9mZnNldCBpbW1lZGlhdGVseSBhZnRlciB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIG5ldyB0ZXh0CisqIEByZXR1cm4gYW4gTUNvbnN0VGV4dCBvYmplY3QgY29udGFpbmluZyB0aGUgY2hhcmFjdGVycyBhbmQgc3R5bGVzIGluIHRoZSBnaXZlbiByYW5nZQorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgTUNvbnN0VGV4dCBleHRyYWN0KGludCBzdGFydCwgaW50IGxpbWl0KTsKKworLyoqCisqIENyZWF0ZSBhIDxjb2RlPmphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvcjwvY29kZT4gb3ZlciBhbGwKKyogb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHRleHQuICBEZWZhdWx0IGltcGxlbWVudGF0aW9uIGNhbGxzCisqIDxjb2RlPmNyZWF0ZUNoYXJhY3Rlckl0ZXJhdG9yKDAsIGxlbmd0aCgpKTwvY29kZT4KKyogQHJldHVybiBhIDxjb2RlPmphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvcjwvY29kZT4gb3ZlciBhbGwKKyogICAgICBvZiB0aGUgY2hhcmFjdGVycyBpbiB0aGUgdGV4dAorKi8KKyAgICBwdWJsaWMgQ2hhcmFjdGVySXRlcmF0b3IgY3JlYXRlQ2hhcmFjdGVySXRlcmF0b3IoKSB7CisKKyAgICAgICAgcmV0dXJuIGNyZWF0ZUNoYXJhY3Rlckl0ZXJhdG9yKDAsIGxlbmd0aCgpKTsKKyAgICB9CisKKy8qKgorKiBDcmVhdGUgYSA8Y29kZT5qYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I8L2NvZGU+IG92ZXIgdGhlCisqIGdpdmVuIHJhbmdlIG9mIGNoYXJhY3RlcnMgaW4gdGhlIHRleHQuCisqIEBwYXJhbSBzdGFydCB0aGUgZmlyc3QgaW5kZXggaW4gdGhlIGl0ZXJhdGlvbiByYW5nZQorKiBAcGFyYW0gbGltaXQgdGhlIGluZGV4IGFmdGVyIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgaXRlcmF0aW9uIHJhbmdlCisqIEByZXR1cm4gYSA8Y29kZT5qYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I8L2NvZGU+IG92ZXIgdGhlCisqICAgICBnaXZlbiByYW5nZQorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgQ2hhcmFjdGVySXRlcmF0b3IgY3JlYXRlQ2hhcmFjdGVySXRlcmF0b3IoaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQpOworCisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFNJWkUvQ0FQQUNJVFkKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8qKgorKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgTUNvbnN0VGV4dCBvYmplY3QuICBUaGUgbGVuZ3RoIGlzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgdGV4dC4KKyogQHJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBNQ29uc3RUZXh0IG9iamVjdAorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGxlbmd0aCgpOworCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBDaGFyYWN0ZXIgc3R5bGVzCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy8qKgorKiBSZXR1cm4gdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIGNoYXJhY3RlciBzdHlsZSBydW4KKyogY29udGFpbmluZyBwb3MuICBBbGwgY2hhcmFjdGVycyBpbiBhIHN0eWxlIHJ1biBoYXZlIHRoZSBzYW1lIGNoYXJhY3RlcgorKiBzdHlsZS4KKyogQHJldHVybnMgdGhlIHN0eWxlIGF0IG9mZnNldCA8Y29kZT5wb3M8L2NvZGU+CisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgY2hhcmFjdGVyU3R5bGVTdGFydChpbnQgcG9zKTsKKworLyoqCisqIFJldHVybiB0aGUgaW5kZXggYWZ0ZXIgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSBjaGFyYWN0ZXIgc3R5bGUgcnVuCisqIGNvbnRhaW5pbmcgcG9zLiAgQWxsIGNoYXJhY3RlcnMgaW4gYSBzdHlsZSBydW4gaGF2ZSB0aGUgc2FtZSBjaGFyYWN0ZXIKKyogc3R5bGUuCisqIEByZXR1cm5zIHRoZSBzdHlsZSBhdCBvZmZzZXQgPGNvZGU+cG9zPC9jb2RlPgorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGNoYXJhY3RlclN0eWxlTGltaXQoaW50IHBvcyk7CisKKy8qKgorKiBSZXR1cm4gdGhlIHN0eWxlIGFwcGxpZWQgdG8gdGhlIGNoYXJhY3RlciBhdCBvZmZzZXQgPGNvZGU+cG9zPC9jb2RlPi4KKyogQHBhcmFtIHBvcyBhIHZhbGlkIG9mZnNldCBpbnRvIHRoZSB0ZXh0CisqIEByZXR1cm5zIHRoZSBzdHlsZSBhdCBvZmZzZXQgPGNvZGU+cG9zPC9jb2RlPgorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgQXR0cmlidXRlTWFwIGNoYXJhY3RlclN0eWxlQXQoaW50IHBvcyk7CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFBBUkFHUkFQSCBCT1VOREFSSUVTCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvKioKKyogUmV0dXJuIHRoZSBzdGFydCBvZiB0aGUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgdGhlIGNoYXJhY3RlciBhdCBvZmZzZXQgPGNvZGU+cG9zPC9jb2RlPi4KKyogQHBhcmFtIHBvcyBhIHZhbGlkIG9mZnNldCBpbnRvIHRoZSB0ZXh0CisqIEByZXR1cm5zIHRoZSBzdGFydCBvZiB0aGUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgdGhlIGNoYXJhY3RlciBhdCBvZmZzZXQgPGNvZGU+cG9zPC9jb2RlPgorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IHBhcmFncmFwaFN0YXJ0KGludCBwb3MpOworCisvKioKKyogUmV0dXJuIHRoZSBsaW1pdCBvZiB0aGUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgdGhlIGNoYXJhY3RlciBhdCBvZmZzZXQgPGNvZGU+cG9zPC9jb2RlPi4KKyogQHBhcmFtIHBvcyBhIHZhbGlkIG9mZnNldCBpbnRvIHRoZSB0ZXh0CisqIEByZXR1cm5zIHRoZSBsaW1pdCBvZiB0aGUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgdGhlIGNoYXJhY3RlciBhdCBvZmZzZXQgPGNvZGU+cG9zPC9jb2RlPgorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IHBhcmFncmFwaExpbWl0KGludCBwb3MpOworCisvKioKKyogUmV0dXJuIHRoZSBwYXJhZ3JhcGggc3R5bGUgYXBwbGllZCB0byB0aGUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgb2Zmc2V0IDxjb2RlPnBvczwvY29kZT4uCisqIEBwYXJhbSBwb3MgYSB2YWxpZCBvZmZzZXQgaW50byB0aGUgdGV4dAorKiBAcmV0dXJucyB0aGUgcGFyYWdyYXBoIHN0eWxlIGluIGVmZmVjdCBhdCA8Y29kZT5wb3M8L2NvZGU+CisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBBdHRyaWJ1dGVNYXAgcGFyYWdyYXBoU3R5bGVBdChpbnQgcG9zKTsKKworLyoqCisqIFJldHVybiB0aGUgY3VycmVudCB0aW1lIHN0YW1wLiAgVGhlIHRpbWUgc3RhbXAgaXMKKyogaW5jcmVtZW50ZWQgd2hlbmV2ZXIgdGhlIGNvbnRlbnRzIG9mIHRoZSBNQ29uc3RUZXh0IGNoYW5nZXMuCisqIEByZXR1cm4gdGhlIGN1cnJlbnQgcGFyYWdyYXBoIHN0eWxlIHRpbWUgc3RhbXAKKyovCisgICAgcHVibGljIGFic3RyYWN0IGludCBnZXRUaW1lU3RhbXAoKTsKKworLyoqCisqIFJldHVybiB0aGUgc3RhcnQgb2YgdGhlIGRhbWFnZWQgcmFuZ2UuICBJZiB0aGUgc3RhcnQgaXMgbm90IGxlc3MKKyogdGhhbiB0aGUgdGhlIGxpbWl0IG9mIHRoZSBkYW1hZ2VkIHJhbmdlLCB0aGVuIHRoZSBkYW1hZ2VkIHJhbmdlCisqIGlzIGVtcHR5LgorKiBAcmV0dXJuIHRoZSBzdGFydCBvZiB0aGUgZGFtYWdlZCByYW5nZQorKiBAc2VlICNkYW1hZ2VkUmFuZ2VMaW1pdAorKiBAc2VlIE1UZXh0I3Jlc2V0RGFtYWdlZFJhbmdlCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgZGFtYWdlZFJhbmdlU3RhcnQoKTsKKworLyoqCisqIFJldHVybiB0aGUgbGltaXQgb2YgdGhlIGRhbWFnZWQgcmFuZ2UuICBJZiB0aGUgc3RhcnQgaXMgbm90IGxlc3MKKyogdGhhbiB0aGUgdGhlIGxpbWl0IG9mIHRoZSBkYW1hZ2VkIHJhbmdlLCB0aGVuIHRoZSBkYW1hZ2VkIHJhbmdlCisqIGlzIGVtcHR5LgorKiBAcmV0dXJuIHRoZSBzdGFydCBvZiB0aGUgZGFtYWdlZCByYW5nZQorKiBAc2VlICNkYW1hZ2VkUmFuZ2VTdGFydAorKiBAc2VlIE1UZXh0I3Jlc2V0RGFtYWdlZFJhbmdlCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgZGFtYWdlZFJhbmdlTGltaXQoKTsKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gRXF1YWxpdHkgYW5kIGhhc2hDb2RlCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvKioKKyogQ29tcGFyZSB0aGlzIHRvIGFub3RoZXIgT2JqZWN0IGZvciBlcXVhbGl0eS4gIFRoaXMgaXMKKyogZXF1YWwgdG8gcmhzIGlmIHJocyBpcyBhbiBNQ29uc3RUZXh0IHdoaWNoIGlzIGVxdWFsCisqIHRvIHRoaXMuCisqIEBwYXJhbSByaHMgT2JqZWN0IHRvIGNvbXBhcmUgdG8KKyogQHJldHVybiB0cnVlIGlmIHRoaXMgZXF1YWxzIDxjb2RlPnJoczwvY29kZT4KKyovCisgICAgcHVibGljIGZpbmFsIGJvb2xlYW4gZXF1YWxzKE9iamVjdCByaHMpIHsKKworICAgICAgICBNQ29uc3RUZXh0IG90aGVyVGV4dDsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgb3RoZXJUZXh0ID0gKE1Db25zdFRleHQpIHJoczsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChDbGFzc0Nhc3RFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGVxdWFscyhvdGhlclRleHQpOworICAgIH0KKworLyoqCisqIENvbXBhcmUgdGhpcyB0byBhbm90aGVyIE1Db25zdFRleHQgZm9yIGVxdWFsaXR5LiAgVGhpcyBpcworKiBlcXVhbCB0byByaHMgaWYgdGhlIGNoYXJhY3RlcnMgYW5kIHN0eWxlcyBpbiByaHMgYXJlIHRoZQorKiBzYW1lIGFzIHRoaXMuICBTdWJjbGFzc2VzIG1heSBvdmVycmlkZSB0aGlzIGltcGxlbWVudGF0aW9uCisqIGZvciBlZmZpY2llbmN5LCBidXQgdGhleSBzaG91bGQgcHJlc2VydmUgdGhlc2Ugc2VtYW50aWNzLgorKiBEZXRlcm1pbmluZyB0aGF0IHR3byBNQ29uc3RUZXh0IGluc3RhbmNlcyBhcmUgZXF1YWwgbWF5IGJlCisqIGFuIGV4cGVuc2l2ZSBvcGVyYXRpb24sIHNpbmNlIGV2ZXJ5IGNoYXJhY3RlciBhbmQgc3R5bGUgbXVzdAorKiBiZSBjb21wYXJlZC4KKyogQHBhcmFtIHJocyBPYmplY3QgdG8gY29tcGFyZSB0bworKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBlcXVhbHMgPGNvZGU+cmhzPC9jb2RlPgorKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoTUNvbnN0VGV4dCByaHMpIHsKKworICAgICAgICBpZiAocmhzID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyaHMgPT0gdGhpcykgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaGFzaENvZGUoKSAhPSByaHMuaGFzaENvZGUoKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaW50IGxlbmd0aCA9IGxlbmd0aCgpOworICAgICAgICBpZiAobGVuZ3RoICE9IHJocy5sZW5ndGgoKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChpIDwgbGVuZ3RoICYmIGF0KGkpICE9IHJocy5hdChpKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50IHN0YXJ0ID0gMDsgc3RhcnQgPCBsZW5ndGg7KSB7CisgICAgICAgICAgICBpZiAoIWNoYXJhY3RlclN0eWxlQXQoc3RhcnQpLmVxdWFscyhyaHMuY2hhcmFjdGVyU3R5bGVBdChzdGFydCkpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IGxpbWl0ID0gY2hhcmFjdGVyU3R5bGVMaW1pdChzdGFydCk7CisgICAgICAgICAgICBpZiAobGltaXQgIT0gcmhzLmNoYXJhY3RlclN0eWxlTGltaXQoc3RhcnQpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhcnQgPSBsaW1pdDsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50IHN0YXJ0ID0gMDsgc3RhcnQgPCBsZW5ndGg7KSB7CisKKyAgICAgICAgICAgIGlmICghcGFyYWdyYXBoU3R5bGVBdChzdGFydCkuZXF1YWxzKHJocy5wYXJhZ3JhcGhTdHlsZUF0KHN0YXJ0KSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGFydCA9IHBhcmFncmFwaExpbWl0KHN0YXJ0KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBwYXJhZ3JhcGhTdHlsZUF0KGxlbmd0aCkuZXF1YWxzKHJocy5wYXJhZ3JhcGhTdHlsZUF0KGxlbmd0aCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgaGFzaENvZGUgZm9yIHRoaXMgTUNvbnN0VGV4dC4gIEFuIGVtcHR5IE1Db25zdFRleHQKKyAgICAgKiBoYXMgaGFzaENvZGUgMDsgIGEgbm9uZW1wdHkgTUNvbnN0VGV4dCdzIGhhc2hDb2RlIGlzCisgICAgICogPGJsb2NrcXVvdGU+PHByZT4KKyAgICAgKiAgICAgICBhdCgwKSArCisgICAgICogICAgICAgYXQobGVuZ3RoLzIpKjMxXjEgKworICAgICAqICAgICAgIGF0KGxlbmd0aC0xKSozMV4yICsKKyAgICAgKiAgICAgICBjaGFyYWN0ZXJTdHlsZUF0KDApLmhhc2hDb2RlKCkqMzFeMyArCisgICAgICogICAgICAgcGFyYWdyYXBoU3R5bGVBdChsZW5ndGgtMSkuaGFzaENvZGUoKSozMV40CisgICAgICogPC9wcmU+PC9ibG9ja3F1b3RlPgorICAgICAqIHdoZXJlIDxjb2RlPl48L2NvZGU+IGlzIGV4cG9uZW50aWF0aW9uIChub3QgYml0d2lzZSBYT1IpLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBpbnQgaGFzaENvZGUoKSB7CisKKyAgICAgICAgaW50IGhhc2hDb2RlID0gMDsKKyAgICAgICAgaW50IGxlbmd0aCA9IGxlbmd0aCgpOworCisgICAgICAgIGlmIChsZW5ndGggPiAwKSB7CisgICAgICAgICAgICBoYXNoQ29kZSA9IHBhcmFncmFwaFN0eWxlQXQobGVuZ3RoLTEpLmhhc2hDb2RlKCk7CisgICAgICAgICAgICBoYXNoQ29kZSA9IGhhc2hDb2RlKjMxICsgY2hhcmFjdGVyU3R5bGVBdCgwKS5oYXNoQ29kZSgpOworICAgICAgICAgICAgaGFzaENvZGUgPSBoYXNoQ29kZSozMSArIGF0KGxlbmd0aC0xKTsKKyAgICAgICAgICAgIGhhc2hDb2RlID0gaGFzaENvZGUqMzEgKyBhdChsZW5ndGgvMik7CisgICAgICAgICAgICBoYXNoQ29kZSA9IGhhc2hDb2RlKjMxICsgYXQoMCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gaGFzaENvZGU7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvTVBhcmFncmFwaEJ1ZmZlci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9NUGFyYWdyYXBoQnVmZmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmZiNGYzMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvTVBhcmFncmFwaEJ1ZmZlci5qYXZhCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IE1QYXJhZ3JhcGhCdWZmZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0NToxMCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQ7CisKK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CisKK2Fic3RyYWN0IGNsYXNzIE1QYXJhZ3JhcGhCdWZmZXIKK3sKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworCisvKioKKyogUmV0dXJucyB0aGUgc3RhcnQgb2YgdGhlIHBhcmFncmFwaCBjb250YWluaW5nIG9mZnNldCA8dHQ+cG9zPC90dD4uCisqLworICAgIGFic3RyYWN0IGludCBwYXJhZ3JhcGhTdGFydChpbnQgcG9zKTsKKworLyoqCisqIFJldHVybnMgdGhlIGxpbWl0IG9mIHRoZSBwYXJhZ3JhcGggY29udGFpbmluZyBvZmZzZXQgPHR0PnBvczwvdHQ+LgorKi8KKyAgICBhYnN0cmFjdCBpbnQgcGFyYWdyYXBoTGltaXQoaW50IHBvcyk7CisKKy8qKgorKiBSZXR1cm5zIHRoZSBzdHlsZSBvZiB0aGUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgb2Zmc2V0IDx0dD5wb3M8L3R0Pi4KKyovCisgICAgYWJzdHJhY3QgQXR0cmlidXRlTWFwIHBhcmFncmFwaFN0eWxlQXQoaW50IG9mZnNldCk7CisKKy8qKgorKiBQcm9jZXNzIGEgY2hhcmFjdGVyIGluc2VydGlvbiBhdCBvZmZzZXQgPHR0PnN0YXJ0PC90dD4uCisqIElmIGEgcGFyYWdyYXBoIGJyZWFrIHdhcyBpbnNlcnRlZCwgcHJvcG9nYXRlIHBhcmFncmFwaCBzdHlsZSBhdAorKiA8dHQ+c3RhcnQ8L3R0PiB0byBuZXcgcGFyYWdyYXBoLgorKi8KKyAgICBhYnN0cmFjdCB2b2lkIGluc2VydFRleHQoaW50IHN0YXJ0LCBjaGFyIGluc2VydGVkQ2hhcik7CisKKy8qKgorKiBQcm9jZXNzIGNoYXJhY3RlciBpbnNlcnRpb24gYXQgb2Zmc2V0IDx0dD5zdGFydDwvdHQ+LgorKiBFYWNoIG5ldyBwYXJhZ3JhcGggZ2V0cyBwYXJhZ3JhcGggc3R5bGUgYXQKKyogPHR0PnN0YXJ0PC90dD4uCisqLworICAgIGFic3RyYWN0IHZvaWQgaW5zZXJ0VGV4dChpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJbXSBzcmNDaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY1N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3JjTGltaXQpOworCisvKioKKyogUHJvY2VzcyBkZWxldGlvbiBieSByZW1vdmluZyBwYXJhZ3JhcGggYnJlYWtzIGNvbnRhaW5lZCBpbgorKiBkZWxldGVkIHJhbmdlLiAgUHJvcG9nYXRlIHBhcmFncmFwaCBzdHlsZXMgYmFja3dhcmQsIGlmIG5lY2Vzc2FyeS4KKyovCisgICAgYWJzdHJhY3Qgdm9pZCBkZWxldGVUZXh0KGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRbXSBkYW1hZ2VkUmFuZ2UpOworCisvKgorKiBSZXBsYWNlIHBhcmFncmFwaCBicmVha3Mvc3R5bGVzIGJldHdlZW4gc3RhcnQgYW5kIGxpbWl0IHdpdGggcGFyYWdyYXBoIGJyZWFrcy9zdHlsZXMKKyogZnJvbSA8dHQ+c3JjVGV4dDwvdHQ+LgorKiBAcGFyYW0gc3RhcnQgYW4gb2Zmc2V0IGludG8gdGhlIHRleHQKKyogQHBhcmFtIGxpbWl0IHRoZSBpbmRleCBhZnRlciB0aGUgbGFzdCBjaGFyYWN0ZXIgdG8gcmVwbGFjZQorKiBAcGFyYW0gc3JjVGV4dCB0aGUgdGV4dCBmcm9tIHdoaWNoIG5ldyBwYXJhZ3JhcGhzIGFyZSB0YWtlbgorKiBAcGFyYW0gc3JjU3RhcnQgdGhlIHN0YXJ0IG9mIHRoZSByYW5nZSBpbiA8Y29kZT5zcmNUZXh0PC9jb2RlPiB0byBjb3B5CisqIEBwYXJhbSBzcmNMaW1pdCB0aGUgZmlyc3QgaW5kZXggYWZ0ZXIgdGhlIHJhbmdlIGluIDxjb2RlPnNyY1RleHQ8L2NvZGU+IHRvIGNvcHkKKyovCisgICAgYWJzdHJhY3Qgdm9pZCByZXBsYWNlKGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBNQ29uc3RUZXh0IHNyY1RleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNyY0xpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRbXSBkYW1hZ2VkUmFuZ2UpOworCisvKioKKyogU2V0IHRoZSBzdHlsZSBvZiBhbGwgcGFyYWdyYXBocyBjb250YWluaW5nIG9mZnNldHMgaW4gdGhlIHJhbmdlIFtzdGFydCwgbGltaXQpIHRvCisqIDx0dD5zdHlsZTwvdHQ+LgorKi8KKyAgICBhYnN0cmFjdCBib29sZWFuIG1vZGlmeVBhcmFncmFwaFN0eWxlcyhpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0eWxlTW9kaWZpZXIgbW9kaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50W10gZGFtYWdlZFJhbmdlKTsKKworLyoqCisqIE1pbmltaXplIHRoZSBhbW91bnQgb2YgbWVtb3J5IHVzZWQgYnkgdGhpcyBvYmplY3QuCisqLworICAgIGFic3RyYWN0IHZvaWQgY29tcHJlc3MoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvTVN0eWxlQnVmZmVyLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L01TdHlsZUJ1ZmZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjEzM2ZhMzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L01TdHlsZUJ1ZmZlci5qYXZhCkBAIC0wLDAgKzEsMTEyIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBNU3R5bGVCdWZmZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0NToxMCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQ7CitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCisvKgorICAgIDgvMS85NgorICAgICAgICBTdHlsZSAtPiBSZXNvbHZlZFN0eWxlCisgICAgOC83Lzk2IGpmCisgICAgICAgIGFkZGVkIGNvdW50U3R5bGVzIGFuZCBnZXRTdHlsZXMgcHJvdG9jb2wKKyAgICA4LzEzLzk2CisgICAgICAgIFJlc29sdmVkU3R5bGUtPlN0eWxlCisgICAgOC8yMi85NiBqZgorICAgICAgICBSZW1vdmVkIHRoZSBzZXRJdGVyYXRvciBtZXRob2RzLgorKi8KKy8qCisqIE1TdHlsZUJ1ZmZlciBpcyB0aGUgYWJzdHJhY3QgaW50ZXJmYWNlIGZvciBhIGNsYXNzIHdoaWNoIG1haW50YWlucworKiBzdHlsZSBydW5zIGluIGFuIDx0dD5NVGV4dDwvdHQ+LiAgQSAic3R5bGUgcnVuIiBjb25zaXN0cyBvZiBhCisqIHN0eWxlIGFuZCB0aGUgaW50ZXJ2YWwgb24gd2hpY2ggdGhlIHN0eWxlIGFwcGxpZXMuCisqIDxwPgorKiBNU3R5bGVCdWZmZXIgaW5jbHVkZXMgbWV0aG9kcyB0byBjYWxsIHdoZW4gdGV4dCBpcyBpbnNlcnRlZCBpbnRvCisqIG9yIGRlbGV0ZWQgZnJvbSB0aGUgPHR0Pk1UZXh0PC90dD4uICBUaGVzZSBtZXRob2RzIHVwZGF0ZSB0aGUKKyogc3R5bGUgcnVucyBpbiBhY2NvcmRhbmNlIHdpdGggdGhlIGNvbW1vbmx5IGFjY2VwdGVkIGJlaGF2aW9yIGZvcgorKiBzdHlsZSBydW5zLgorKiA8cD4KKyogQWRkaXRpb25hbGx5LCBNU3R5bGVCdWZmZXIgcHJvdmlkZXMgbWV0aG9kcyBmb3IgcmVwbGFjaW5nIHRoZSBzdHlsZSBydW5zIG9uIGEKKyogdGV4dCByYW5nZSB3aXRoIGFub3RoZXIgc2V0IG9mIHN0eWxlIHJ1bnMuICBNU3R5bGVCdWZmZXIgZG9lcyBub3QgZG8gc3R5bGUgImNvbWJpbmluZyIgKGZvcgorKiBleGFtcGxlLCBhZGRpbmcgdGhlIGJvbGQgYXR0cmlidXRlIHRvIHRleHQgd2hpY2ggaXMgaXRhbGljaXplZCk7ICBjbGllbnRzIGFyZQorKiByZXNwb25zaWJsZSBmb3IgY29tcHV0aW5nIHRoZSBjb21iaW5lZCBzdHlsZXMsIGFuZCBwYXNzaW5nIHRoZXNlIHN0eWxlcyBpbnRvCisqIE1TdHlsZUJ1ZmZlci4KKyogPHA+CisqIE1TdHlsZUJ1ZmZlciBzdXBwbGllcyBhIG1ldGhvZCBmb3IgcmVwbGFjaW5nIHRoZSBzdHlsZSBydW5zIG9uIGEgdGV4dCByYW5nZSB3aXRoIHRoZSBydW5zCisqIHJlcHJlc2VudGVkIGluIGFuIDx0dD5NU3R5bGVSdW5JdGVyYXRvcjwvdHQ+LiAgVGhpcyBpcyB1c2VmdWwgZm9yIGltcGxlbWVudGluZyBwYXN0ZQorKiBvcGVyYXRpb25zLCBpbiB3aGljaCB0aGUgc3R5bGUgcnVucyBvbiBhIHJhbmdlIG9mIHRleHQgYXJlIHJlcGxhY2VkIGJ5IHN0eWxlIHJ1bnMKKyogZnJvbSBhbiBleHRlcm5hbCBzb3VyY2UuCisqIDxwPgorKgorKiBAYXV0aG9yIEpvaG4gUmFsZXkKKyoKKyogQHNlZSBBdHRyaWJ1dGVNYXAKKyogQHNlZSBNVGV4dAorKi8KK2Fic3RyYWN0IGNsYXNzIE1TdHlsZUJ1ZmZlcgoreworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKy8qKgorKiBSZXNwb25kIHRvIGFuIGluc2VydGlvbiBpbiB0aGUgdGV4dC4gIFRoZSBsZW5ndGggb2YgdGhlIGxhc3Qgc3R5bGUgcnVuIHdoaWNoCisqIGJlZ2lucyBiZWZvcmUgPHR0PnN0YXJ0PC90dD4gaXMgaW5jcmVhc2VkIGJ5IDx0dD5saW1pdC1zdGFydDwvdHQ+LgorKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCB3aGVyZSB0aGUgaW5zZXJ0aW9uIGJlZ2FuCisqIEBwYXJhbSBsaW1pdCB0aGUgb2Zmc2V0IHdoZXJlIHRoZSBpbnNlcnRpb24gZW5kZWQKKyovCisgICAgYWJzdHJhY3Qgdm9pZCBpbnNlcnRUZXh0KGludCBzdGFydCwgaW50IGxpbWl0KTsKKworLyoqCisqIFJlc3BvbmQgdG8gYSBkZWxldGlvbiBpbiB0aGUgdGV4dC4gIFRoZSBsYXN0IHN0eWxlIHJ1biBiZWZvcmUKKyogPHR0PnN0YXJ0PC90dD4gaXMgdHJ1bmNhdGVkIHRvIGVuZCBhdCA8dHQ+c3RhcnQ8L3R0Pi4gIFRoZQorKiBzdHlsZSBydW4gY29udGFpbmluZyAoPHR0PnN0YXJ0PC90dD4rPHR0Pmxlbmd0aDwvdHQ+KSBpcyBzZXQgdG8gYmVnaW4KKyogYXQgKDx0dD5zdGFydDwvdHQ+Kzx0dD5sZW5ndGg8L3R0PikuICBSdW5zIGluIGJldHdlZW4gYXJlIGRlbGV0ZWQuCisqIElmIHRoZSBkZWxldGlvbiBvY2N1cnMgZW50aXJlbHkgd2l0aGluIG9uZSBzdHlsZSBydW4sIHRoZSBsZW5ndGggb2YgdGhlIHN0eWxlCisqIHJ1biBpcyByZWR1Y2VkIGJ5IDx0dD5sZW5ndGg8L3R0Pi4KKyogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgd2hlcmUgdGhlIGRlbGV0aW9uIGJlZ2FuCisqIEBwYXJhbSBsZW5ndGggdGhlIG9mZnNldCB3aGVyZSB0aGUgZGVsZXRpb24gZW5kZWQKKyovCisgICAgYWJzdHJhY3Qgdm9pZCBkZWxldGVUZXh0KGludCBzdGFydCwgaW50IGxpbWl0KTsKKworLyoKKyogUmVwbGFjZSBzdHlsZSBydW5zIGJldHdlZW4gb2Zmc2V0cyA8dHQ+c3RhcnQ8L3R0PiBhbmQgPHR0PmxpbWl0PC90dD4gd2l0aCBzdHlsZXMgaW4KKyogPHR0Pml0ZXI8L3R0Pi4gIFRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIHRvIHBlcmZvcm0gYSAicGFzdGUiIG9wZXJhdGlvbi4KKyogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgd2hlcmUgdGhlIHJlcGxhY2VtZW50IGJlZ2lucworKiBAcGFyYW0gbGltaXQgdGhlIG9mZnNldCB3aGVyZSB0aGUgcmVwbGFjZW1lbnQgZW5kcworKiBAcGFyYW0gaXRlciBhbiA8dHQ+TVN0eWxlUnVuSXRlcmF0b3I8L3R0PiBjb250YWluaW5nIHN0eWxlIHJ1bnMgd2hpY2ggd2lsbCByZXBsYWNlIG9sZAorKiBzdHlsZSBydW5zLgorKi8KKyAgICBhYnN0cmFjdCB2b2lkIHJlcGxhY2UoaW50IHN0YXJ0LCBpbnQgbGltaXQsIE1Db25zdFRleHQgc3JjVGV4dCwgaW50IHNyY1N0YXJ0LCBpbnQgc3JjTGltaXQpOworCisgICAgYWJzdHJhY3QgaW50IHN0eWxlU3RhcnQoaW50IHBvcyk7CisgICAgYWJzdHJhY3QgaW50IHN0eWxlTGltaXQoaW50IHBvcyk7CisKKy8qKgorKiBSZXR1cm4gc3R5bGUgYXQgbG9jYXRpb24gPHR0PnBvczwvdHQ+LgorKiBAcGFyYW0gcG9zIGFuIG9mZnNldCBpbnRvIHRoZSB0ZXh0CisqIEByZXR1cm5zIHRoZSBzdHlsZSBvZiB0aGUgY2hhcmFjdGVyIGF0IDx0dD5vZmZzZXQ8L3R0PgorKi8KKyAgICBhYnN0cmFjdCBBdHRyaWJ1dGVNYXAgc3R5bGVBdChpbnQgcG9zKTsKKworLyoqCisgKiBSZXR1cm4gdHJ1ZSBpZiBzdHlsZXMgd2VyZSBtb2RpZmllZC4KKyAqLworICAgIGFic3RyYWN0IGJvb2xlYW4gbW9kaWZ5U3R5bGVzKGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3R5bGVNb2RpZmllciBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRbXSBkYW1hZ2VkUmFuZ2UpOworCisvKioKKyogTWluaW1pemUgdGhlIGFtb3VudCBvZiBtZW1vcnkgdXNlZCBieSB0aGlzIG9iamVjdC4KKyovCisgICAgYWJzdHJhY3Qgdm9pZCBjb21wcmVzcygpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9NVGFiUnVsZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvTVRhYlJ1bGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDBmYTRlMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvTVRhYlJ1bGVyLmphdmEKQEAgLTAsMCArMSwxMTMgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IE1UYWJSdWxlci5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjQ1OjEwICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dDsKKworLyoqCisgKiBUaGlzIGludGVyZmFjZSByZXByZXNlbnRzIGEgc2VxdWVuY2Ugb2YgVGFiU3RvcHMsIG9yZGVyZWQgYnkgcG9zaXRpb24uCisgKiBUaGUgZmlyc3QKKyAqIFRhYlN0b3AgaW4gdGhlIHJ1bGVyIGNhbiBiZSBvYnRhaW5lZCB3aXRoIHRoZSA8Y29kZT5maXJzdFRhYjwvY29kZT4KKyAqIG1ldGhvZDsgIHN1YnNlcXVlbnQgVGFiU3RvcHMgYXJlIG9idGFpbmVkIHdpdGggdGhlIDxjb2RlPm5leHRUYWI8L2NvZGU+CisgKiBtZXRob2QuCisgKiA8cD4KKyAqIElmIGEgVGFiU3RvcCB3aXRoIHR5cGUgPGNvZGU+VGFiU3RvcC5rQXV0bzwvY29kZT4gaXMgcmV0dXJuZWQsIGFsbCB0YWJzCisgKiBhZnRlciB0aGF0IFRhYlN0b3Agd2lsbCBhbHNvIGhhdmUgdHlwZSA8Y29kZT5UYWJTdG9wLmtBdXRvPC9jb2RlPiwgYW5kCisgKiB0aGVpciBwb3NpdGlvbnMgd2lsbCBiZSBtdWx0aXBsZXMgb2YgPGNvZGU+YXV0b1NwYWNpbmc8L2NvZGU+LgorICogQHNlZSBUYWJTdG9wCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBNVGFiUnVsZXIKK3sKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIC8qKgorICAgICAqIFJldHVybiBmaXJzdCB0YWIgaW4gdGhlIHJ1bGVyLiAgSWYgYW4gYXV0b1RhYiwgaXQgaXMgYXQgcG9zaXRpb24gemVybywgYW5kCisgICAgICogYWxsIHN1YnNlcXVlbnQgdGFicyB3aWxsIGJlIGF1dG90YWJzIGF0IGF1dG9TcGFjaW5nIGludGVydmFscy4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgVGFiU3RvcCBmaXJzdFRhYigpOworCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBmaXJzdCB0YWIgaW4gdGhlIHJ1bGVyIHdpdGggZlBvc2l0aW9uID4gcG9zaXRpb24uICBJZiBpdCBpcyBhbgorICAgICAqIGF1dG90YWIsIGl0IGlzIGF0IGFuIGluY3JlbWVudCBvZiBhdXRvU3BhY2luZywgYW5kIGFsbCBzdWJzZXF1ZW50IHRhYnMgd2lsbCBiZQorICAgICAqIGF1dG90YWJzIGF0IGF1dG9TcGFjaW5nIGludGVydmFscy4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgVGFiU3RvcCBuZXh0VGFiKGludCBwb3NpdGlvbik7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGludGVydmFsIGZvciBhdXRvdGFicy4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGF1dG9TcGFjaW5nKCk7CisKKyAgICAvKioKKyAgICAgKiBDb21wdXRlIHRoZSBoYXNoQ29kZSBmb3IgdGhpcyBydWxlci4gIFRoZSBoYXNoQ29kZSBpcyB0aGUKKyAgICAgKiBoYXNoQ29kZSBvZiB0aGUgZmlyc3QgdGFiIG11bHRpcGxpZWQgYnkgdGhlIGF1dG9TcGFjaW5nCisgICAgICogaW50ZXJ2YWwuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIGludCBoYXNoQ29kZSgpIHsKKworICAgICAgICByZXR1cm4gZmlyc3RUYWIoKS5oYXNoQ29kZSgpICogYXV0b1NwYWNpbmcoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIHRhYiBydWxlciBjb250YWlucyB0aGUgZ2l2ZW4gdGFiLgorICAgICAqIEBwYXJhbSB0YWJUb1Rlc3QgdGhlIHRhYiB0byBzZWFyY2ggZm9yCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoaXMgdGFiIHJ1bGVyIGNvbnRhaW5zIDxjb2RlPnRhYlRvVGVzdDwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjb250YWluc1RhYihUYWJTdG9wIHRhYlRvVGVzdCkgeworCisgICAgICAgIGZvciAoVGFiU3RvcCB0YWIgPSBmaXJzdFRhYigpOworICAgICAgICAgICAgICAgICAgICAgICAgdGFiLmdldFR5cGUoKSAhPSBUYWJTdG9wLmtBdXRvOworICAgICAgICAgICAgICAgICAgICAgICAgdGFiID0gbmV4dFRhYih0YWIuZ2V0UG9zaXRpb24oKSkpIHsKKyAgICAgICAgICAgIGlmICh0YWIuZ2V0UG9zaXRpb24oKSA+PSB0YWJUb1Rlc3QuZ2V0UG9zaXRpb24oKSkgeworICAgICAgICAgICAgICAgIHJldHVybiB0YWJUb1Rlc3QuZXF1YWxzKHRhYik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgdGFiIHJ1bGVyIGlkZW50aWNhbCB0byB0aGlzIHJ1bGVyLCBleGNlcHQgd2l0aCB0aGUKKyAgICAgKiBnaXZlbiB0YWIgYWRkZWQuICBUaGlzIHJ1bGVyIGlzIG5vdCBtb2RpZmllZC4KKyAgICAgKiBAcGFyYW0gdGFiVG9BZGQgdGhlIHRhYiB0byBhZGQgdG8gdGhlIG5ldyB0YWIgcnVsZXIKKyAgICAgKiBAcmV0dXJuIGFuIE1UYWJSdWxlciByZXN1bHRpbmcgZnJvbSB0aGlzIG9wZXJhdGlvbgorICAgICAqLworICAgIHB1YmxpYyBNVGFiUnVsZXIgYWRkVGFiKFRhYlN0b3AgdGFiVG9BZGQpIHsKKworICAgICAgICByZXR1cm4gU3RhbmRhcmRUYWJSdWxlci5hZGRUYWJUb1J1bGVyKHRoaXMsIHRhYlRvQWRkKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSB0YWIgcnVsZXIgaWRlbnRpY2FsIHRvIHRoZSBnaXZlbiBydWxlciwgZXhjZXB0IHdpdGggdGhlCisgICAgICogdGFiIGF0IHRoZSBnaXZlbiBwb3NpdGlvbiByZW1vdmVkLiAgVGhpcyBydWxlciBpcyBub3QgbW9kaWZpZWQuCisgICAgICogQHBhcmFtIHBvc2l0aW9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgdGFiIHRvIHJlbW92ZSBmcm9tIHRoZSBuZXcgdGFiIHJ1bGVyCisgICAgICogQHJldHVybiBhbiBNVGFiUnVsZXIgcmVzdWx0aW5nIGZyb20gdGhpcyBvcGVyYXRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgTVRhYlJ1bGVyIHJlbW92ZVRhYihpbnQgcG9zaXRpb24pIHsKKworICAgICAgICByZXR1cm4gU3RhbmRhcmRUYWJSdWxlci5yZW1vdmVUYWJGcm9tUnVsZXIodGhpcywgcG9zaXRpb24pOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIHRhYiBydWxlciBpZGVudGljYWwgdG8gdGhpcyBydWxlciwgZXhjZXB0IHdpdGggdGhlCisgICAgICogdGFiIGF0IHBvc2l0aW9uIDxjb2RlPmZyb21Qb3NpdGlvbjwvY29kZT4gbW92ZWQgdG8gcG9zaXRpb24KKyAgICAgKiA8Y29kZT50b1Bvc2l0aW9uPC9jb2RlPi4gIFRoaXMgcnVsZXIgaXMgbm90IG1vZGlmaWVkLgorICAgICAqIEBwYXJhbSBmcm9tUG9zaXRpb24gdGhlIHBvc2l0aW9uIG9mIHRoZSB0YWIgdG8gbW92ZQorICAgICAqIEBwYXJhbSB0b1Bvc2l0aW9uIHRoZSBuZXcgcG9zaXRpb24gb2YgdGhlIHRhYgorICAgICAqIEByZXR1cm4gYW4gTVRhYlJ1bGVyIHJlc3VsdGluZyBmcm9tIHRoaXMgb3BlcmF0aW9uCisgICAgICovCisgICAgcHVibGljIE1UYWJSdWxlciBtb3ZlVGFiKGludCBmcm9tUG9zaXRpb24sIGludCB0b1Bvc2l0aW9uKSB7CisKKyAgICAgICAgcmV0dXJuIFN0YW5kYXJkVGFiUnVsZXIubW92ZVRhYk9uUnVsZXIodGhpcywgZnJvbVBvc2l0aW9uLCB0b1Bvc2l0aW9uKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9NVGV4dC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9NVGV4dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU0YmU1OTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L01UZXh0LmphdmEKQEAgLTAsMCArMSwyNDMgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IE1UZXh0LmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDU6MTAgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0OworCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCisvKgorICAgIENoYW5nZSBoaXN0b3J5OgorCisgICAgMTAvMjkvOTYgamVmICAgIHNwbGl0IHRoZSBjaGFyYWN0ZXIgYW5kIHBhcmFncmFwaCBzdHlsZSBhY2Nlc3MgZnVuY3Rpb25zCisgICAgOC8xNC85NiBzZmIgICAgIGVsaW1pbmF0ZWQgU3R5bGVTaGVldEl0ZXJhdG9yCisgICAgOC8yMS85NiBqZWYgICAgICAgIGNvbXBsZXRlZCBhYnN0cmFjdCBpbnRlcmZhY2UgKGNoYW5nZWQgaXRlcmF0b3IgY2xhc3NlcyBldGMuKQorICAgIDEvMzAvOTcgcnRnICAgICBjbGVhbmVkIHVwIGludGVyZmFjZSwgYnJvdWdodCBpbiBmdW5jdGlvbnMgZnJvbSBTaW1wbGVUZXh0VmlldworICAgIDcvMzEvOTggamJyIHN3aXRjaGVkIGZyb20gU3R5bGUgdG8gQXR0cmlidXRlTWFwCisKKyovCisKKy8qKgorICogVGhpcyBjbGFzcyBpcyBhIG11dGFibGUgZXh0ZW5zaW9uIG9mIE1Db25zdFRleHQuICBJdCBoYXMgbWV0aG9kcyBmb3IKKyAqIGluc2VydGluZywgYXBwZW5kaW5nLCByZXBsYWNpbmcsIGFuZCByZW1vdmluZyBzdHlsZWQgdGV4dC4gIEFkZGl0aW9uYWxseSwKKyAqIGl0IGhhcyBtZXRob2RzIGZvciBtb2RpZnlpbmcgcGFyYWdyYXBoIGFuZCBjaGFyYWN0ZXIgc3R5bGVzLgorICogPHA+CisgKiBTdHlsZWQgY2hhcmFjdGVycyAoZnJvbSBhbm90aGVyIDxjb2RlPk1Db25zdFRleHQ8L2NvZGU+IGluc3RhbmNlKSBhZGRlZAorICogdG8gdGhlIHRleHQgcmV0YWluIHRoZWlyIG9yaWdpbmFsIGNoYXJhY3RlciBzdHlsZXMuICBUaGUgc3R5bGUgb2YgcGxhaW4gY2hhcmFjdGVycworICogKHNwZWNpZmllZCBhcyBhIDxjb2RlPmNoYXI8L2NvZGU+IG9yIDxjb2RlPmNoYXJbXTwvY29kZT4pIGlzIGFsd2F5cworICogc3BlY2lmaWVkIGV4cGxpY2l0bHkgd2hlbiB0aGV5IGFyZSBhZGRlZCB0byB0aGUgdGV4dC4gIE1UZXh0IGRvZXMgbm90IGRvCisgKiBjaGFyYWN0ZXIgc3R5bGUgInByb3BhZ2F0aW9uIiwgd2hlcmUgdW5zdHlsZWQgY2hhcmFjdGVycyB0YWtlIG9uIHRoZQorICogc3R5bGUgb2YgcHJldmlvdXMgY2hhcmFjdGVycy4gIENsaWVudHMgY2FuIGltcGxlbWVudCB0aGlzIGJlaGF2aW9yIGJ5CisgKiBzcGVjaWZ5aW5nIHRoZSBzdHlsZXMgdG8gcHJvcGFnYXRlLgorICogPHA+CisgKiBXaGVuIHVuc3R5bGVkIGNoYXJhY3RlcnMgYXJlIGFkZGVkIHRvIHRoZSB0ZXh0LCB0aGVpciBwYXJhZ3JhcGggc3R5bGUKKyAqIGlzIHRoZSBwYXJhZ3JhcGggc3R5bGUgaW4gZWZmZWN0IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBsYXN0IG5ldyBjaGFyYWN0ZXIuCisgKiBJZiB0aGUgY2hhcmFjdGVycyBjb250YWluIHBhcmFncmFwaCBzZXBhcmF0b3JzLCB0aGVuIGV2ZXJ5IG5ldyBwYXJhZ3JhcGgKKyAqIHdpbGwgaGF2ZSB0aGUgc2FtZSBwYXJhZ3JhcGggc3R5bGUuICBXaGVuIHN0eWxlZCBjaGFyYWN0ZXJzIGFyZSBhZGRlZAorICogdG8gdGhlIHRleHQsIHRoZWlyIHJlc3VsdGluZyBwYXJhZ3JhcGggc3R5bGUgaXMgZGV0ZXJtaW5lZCBieSB0aGUKKyAqIGZvbGxvd2luZyBydWxlOgorICogPGJsb2NrcXVvdGU+CisgKiBUaGUgcGFyYWdyYXBoIHN0eWxlcyBpbiB0aGUgbmV3IHRleHQKKyAqIGJlY29tZSB0aGUgcGFyYWdyYXBoIHN0eWxlcyBpbiB0aGUgdGFyZ2V0IHRleHQsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUKKyAqIGxhc3QgcGFyYWdyYXBoIGluIHRoZSBuZXcgdGV4dCwgd2hpY2ggdGFrZXMgb24gdGhlIHBhcmFncmFwaCBzdHlsZSBpbgorICogZWZmZWN0IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBpbnNlcnRlZCB0ZXh0LgorICogSWYgdGhlIG5ldyB0ZXh0IGlzIGFkZGVkIGF0IHRoZSBlbmQgb2YgdGhlIHRhcmdldCB0ZXh0LCB0aGUgbmV3IHRleHQncworICogcGFyYWdyYXBoIHN0eWxlcyB0YWtlIGVmZmVjdCBpbiBhbnkgcGFyYWdyYXBoIGFmZmVjdGVkIGJ5IHRoZSBhZGRpdGlvbi4KKyAqIDwvYmxvY2txdW90ZT4KKyAqIEZvciBleGFtcGxlLCBzdXBwb3NlIHRoZXJlIGlzIGEgc2luZ2xlIHBhcmFncmFwaCBvZiB0ZXh0IHdpdGggc3R5bGUgJ0EnLAorICogZGVsaW1pdGVkIHdpdGggYSBwYXJhZ3JhcGggc2VwYXJhdG9yICdQJzoKKyAqIDxibG9ja3F1b3RlPgorICogQUFBQUFBUAorICogPC9ibG9ja3F1b3RlPgorICogU3VwcG9zZSB0aGUgZm9sbG93aW5nIHN0eWxlZCBwYXJhZ3JhcGhzIGFyZSBpbnNlcnRlZCBpbnRvIHRoZSBhYm92ZSB0ZXh0CisgKiBhZnRlciB0aGUgZm91cnRoIGNoYXJhY3RlcjoKKyAqIDxibG9ja3F1b3RlPgorICogQkJCQlBDQ0NQRERECisgKiA8L2Jsb2NrcXVvdGU+CisgKiBUaGVuIHRoZSBvcmlnaW5hbCBwYXJhZ3JhcGggc3R5bGUgb2YgZWFjaCBjaGFyYWN0ZXIgaXM6CisgKiA8YmxvY2txdW90ZT4KKyAqIEFBQUFCQkJCUENDQ1BERERBQVAKKyAqIDwvYmxvY2txdW90ZT4KKyAqIFRoZSByZXN1bHRpbmcgcGFyYWdyYXBoIHN0eWxlcyBhcmU6CisgKiA8YmxvY2txdW90ZT4KKyAqIEJCQkJCQkJCUENDQ1BBQUFBQVAKKyAqIDwvYmxvY2txdW90ZT4KKyAqIFNpbWlsYXJseSwgaWYgY2hhcmFjdGVycyBhcmUgZGVsZXRlZCwgdGhlIHBhcmFncmFwaCBzdHlsZSBpbW1lZGlhdGVseQorICogYWZ0ZXIgdGhlIGRlbGV0aW9uIHRha2VzIGVmZmVjdCBvbiB0aGUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgdGhlIGRlbGV0aW9uLgorICogU28sIGlmIGNoYXJhY3RlcnMgNC0xNiB3ZXJlIGRlbGV0ZWQgaW4gdGhlIGV4YW1wbGUgYWJvdmUsIHRoZSBwYXJhZ3JhcGgKKyAqIHN0eWxlcyB3b3VsZCBiZToKKyAqIDxibG9ja3F1b3RlPgorICogQUFBQUFBUAorICogPC9ibG9ja3F1b3RlPgorICogVGhpcyBwYXJhZ3JhcGgtc3R5bGUgcHJvcGFnYXRpb24gcG9saWN5IGlzIHNvbWV0aW1lcyByZWZlcnJlZCB0byBhcyA8c3Ryb25nPgorICogZm9sbG93aW5nIHN0eWxlcyB3aW48L3N0cm9uZz4sIHNpbmNlIHN0eWxlcyBhdCB0aGUgZW5kIG9mIHRoZSBwYXJhZ3JhcGgKKyAqIGJlY29tZSB0aGUgc3R5bGUgZm9yIHRoZSBlbnRpcmUgcGFyYWdyYXBoLgorICogPHA+CisgKiBUaGlzIGNsYXNzIGNhbiBhY2N1bXVsYXRlIGEgPHN0cm9uZz5kYW1hZ2VkIHJhbmdlPC9zdHJvbmc+IC0gYW4gaW50ZXJ2YWwgaW4KKyAqIHdoaWNoIGNoYXJhY3RlcnMsIGNoYXJhY3RlciBzdHlsZXMsIG9yIHBhcmFncmFwaCBzdHlsZXMgaGF2ZSBjaGFuZ2VkLiAgVGhpcyBpcworICogdXNlZnVsIGZvciBjbGllbnRzIHN1Y2ggYXMgdGV4dCBlZGl0b3JzIHdoaWNoIHJlZm9ybWF0IGFuZCBkcmF3IHRleHQgYWZ0ZXIKKyAqIGNoYW5nZXMuICBVc3VhbGx5IHRoZSBkYW1hZ2VkIHJhbmdlIGlzIGV4YWN0bHkgdGhlIHJhbmdlIG9mIGNoYXJhY3RlcnMKKyAqIG9wZXJhdGVkIHVwb247ICBob3dldmVyLCBsYXJnZXIgcmFuZ2VzIG1heSBiZSBkYW1hZ2VkIGlmIHBhcmFncmFwaCBzdHlsZXMKKyAqIGNoYW5nZS4KKyAqIEBzZWUgU3R5bGVNb2RpZmllcgorICovCisKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBNVGV4dCBleHRlbmRzIE1Db25zdFRleHQKK3sKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByb3RlY3RlZCBNVGV4dCgpIHsKKyAgICB9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIE1BSU4gQ0hBUkFDVEVSIE1PRElGSUNBVElPTiBGVU5DVElPTlMKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8qKgorKiBSZXBsYWNlIHRoZSBjaGFyYWN0ZXJzIGFuZCBzdHlsZXMgaW4gdGhlIHJhbmdlIFs8Y29kZT5zdGFydDwvY29kZT4sIDxjb2RlPmxpbWl0PC9jb2RlPikgd2l0aCB0aGUgY2hhcmFjdGVycworKiBhbmQgc3R5bGVzIGluIDxjb2RlPnNyY1RleHQ8L2NvZGU+IGluIHRoZSByYW5nZSBbPGNvZGU+c3JjU3RhcnQ8L2NvZGU+LCA8Y29kZT5zcmNMaW1pdDwvY29kZT4pLiAgPGNvZGU+c3JjVGV4dDwvY29kZT4gaXMgbm90CisqIG1vZGlmaWVkLgorKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgcmVwbGFjZSBvcGVyYXRpb24gYmVnaW5zCisqIEBwYXJhbSBsaW1pdCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoZSByZXBsYWNlIG9wZXJhdGlvbiBlbmRzLiAgVGhlIGNoYXJhY3RlciBhbmQgc3R5bGUgYXQKKyogPGNvZGU+bGltaXQ8L2NvZGU+IGlzIG5vdCBtb2RpZmllZC4KKyogQHBhcmFtIHNyY1RleHQgdGhlIHNvdXJjZSBmb3IgdGhlIG5ldyBjaGFyYWN0ZXJzIGFuZCBzdHlsZXMKKyogQHBhcmFtIHNyY1N0YXJ0IHRoZSBvZmZzZXQgaW50byA8Y29kZT5zcmNUZXh0PC9jb2RlPiB3aGVyZSBuZXcgY2hhcmFjdGVycyBhbmQgc3R5bGVzIHdpbGwgYmUgb2J0YWluZWQKKyogQHBhcmFtIHNyY0xpbWl0IHRoZSBvZmZzZXQgaW50byA8Y29kZT5zcmNUZXh0PC9jb2RlPiB3aGVyZSB0aGUgbmV3IGNoYXJhY3RlcnMgYW5kIHN0eWxlcyBlbmQKKyovCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgcmVwbGFjZShpbnQgc3RhcnQsIGludCBsaW1pdCwgTUNvbnN0VGV4dCBzcmNUZXh0LCBpbnQgc3JjU3RhcnQsIGludCBzcmNMaW1pdCk7CisKKy8qKgorKiBSZXBsYWNlIHRoZSBjaGFyYWN0ZXJzIGFuZCBzdHlsZXMgaW4gdGhlIHJhbmdlIFs8Y29kZT5zdGFydDwvY29kZT4sIDxjb2RlPmxpbWl0PC9jb2RlPikgd2l0aCB0aGUgY2hhcmFjdGVycworKiBhbmQgc3R5bGVzIGluIDxjb2RlPnNyY1RleHQ8L2NvZGU+LiAgPGNvZGU+c3JjVGV4dDwvY29kZT4gaXMgbm90CisqIG1vZGlmaWVkLgorKiBAcGFyYW0gc3RhcnQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgcmVwbGFjZSBvcGVyYXRpb24gYmVnaW5zCisqIEBwYXJhbSBsaW1pdCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoZSByZXBsYWNlIG9wZXJhdGlvbiBlbmRzLiAgVGhlIGNoYXJhY3RlciBhbmQgc3R5bGUgYXQKKyogPGNvZGU+bGltaXQ8L2NvZGU+IGlzIG5vdCBtb2RpZmllZC4KKyogQHBhcmFtIHNyY1RleHQgdGhlIHNvdXJjZSBmb3IgdGhlIG5ldyBjaGFyYWN0ZXJzIGFuZCBzdHlsZXMKKyovCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgcmVwbGFjZShpbnQgc3RhcnQsIGludCBsaW1pdCwgTUNvbnN0VGV4dCB0ZXh0KTsKKworLyoqCisqIFJlcGxhY2UgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIFs8Y29kZT5zdGFydDwvY29kZT4sIDxjb2RlPmxpbWl0PC9jb2RlPikgd2l0aCB0aGUgY2hhcmFjdGVycworKiBpbiA8Y29kZT5zcmNDaGFyczwvY29kZT4gaW4gdGhlIHJhbmdlIFs8Y29kZT5zcmNTdGFydDwvY29kZT4sIDxjb2RlPnNyY0xpbWl0PC9jb2RlPikuICBOZXcgY2hhcmFjdGVycyB0YWtlIG9uIHRoZSBzdHlsZQorKiA8Y29kZT5jaGFyc1N0eWxlPC9jb2RlPi4KKyogPGNvZGU+c3JjQ2hhcnM8L2NvZGU+IGlzIG5vdCBtb2RpZmllZC4KKyogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgYXQgd2hpY2ggdGhlIHJlcGxhY2Ugb3BlcmF0aW9uIGJlZ2lucworKiBAcGFyYW0gbGltaXQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgcmVwbGFjZSBvcGVyYXRpb24gZW5kcy4gIFRoZSBjaGFyYWN0ZXIgYXQKKyogPGNvZGU+bGltaXQ8L2NvZGU+IGlzIG5vdCBtb2RpZmllZC4KKyogQHBhcmFtIHNyY0NoYXJzIHRoZSBzb3VyY2UgZm9yIHRoZSBuZXcgY2hhcmFjdGVycworKiBAcGFyYW0gc3JjU3RhcnQgdGhlIG9mZnNldCBpbnRvIDxjb2RlPnNyY0NoYXJzPC9jb2RlPiB3aGVyZSBuZXcgY2hhcmFjdGVycyB3aWxsIGJlIG9idGFpbmVkCisqIEBwYXJhbSBzcmNMaW1pdCB0aGUgb2Zmc2V0IGludG8gPGNvZGU+c3JjQ2hhcnM8L2NvZGU+IHdoZXJlIHRoZSBuZXcgY2hhcmFjdGVycyBlbmQKKyogQHBhcmFtIGNoYXJzU3R5bGUgdGhlIHN0eWxlIG9mIHRoZSBuZXcgY2hhcmFjdGVycworKi8KKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCByZXBsYWNlKGludCBzdGFydCwgaW50IGxpbWl0LCBjaGFyW10gc3JjQ2hhcnMsIGludCBzcmNTdGFydCwgaW50IHNyY0xpbWl0LCBBdHRyaWJ1dGVNYXAgY2hhcnNTdHlsZSk7CisKKy8qKgorKiBSZXBsYWNlIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZSBbPGNvZGU+c3RhcnQ8L2NvZGU+LCA8Y29kZT5saW1pdDwvY29kZT4pIHdpdGggdGhlIGNoYXJhY3RlciA8Y29kZT5zcmNDaGFyPC9jb2RlPi4KKyogVGhlIG5ldyBjaGFyYWN0ZXIgdGFrZXMgb24gdGhlIHN0eWxlIDxjb2RlPmNoYXJTdHlsZTwvY29kZT4KKyogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgYXQgd2hpY2ggdGhlIHJlcGxhY2Ugb3BlcmF0aW9uIGJlZ2lucworKiBAcGFyYW0gbGltaXQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgcmVwbGFjZSBvcGVyYXRpb24gZW5kcy4gIFRoZSBjaGFyYWN0ZXIgYXQKKyogPGNvZGU+bGltaXQ8L2NvZGU+IGlzIG5vdCBtb2RpZmllZC4KKyogQHBhcmFtIHNyY0NoYXIgdGhlIG5ldyBjaGFyYWN0ZXIKKyogQHBhcmFtIGNoYXJzU3R5bGUgdGhlIHN0eWxlIG9mIHRoZSBuZXcgY2hhcmFjdGVyCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHJlcGxhY2UoaW50IHN0YXJ0LCBpbnQgbGltaXQsIGNoYXIgc3JjQ2hhciwgQXR0cmlidXRlTWFwIGNoYXJTdHlsZSk7CisKKy8qKgorKiBSZXBsYWNlIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhpcyBNVGV4dCAoYm90aCBjaGFyYWN0ZXJzIGFuZCBzdHlsZXMpIHdpdGgKKyogdGhlIGNvbnRlbnRzIG9mIDxjb2RlPnNyY1RleHQ8L2NvZGU+LgorKiBAcGFyYW0gc3JjVGV4dCB0aGUgc291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMgYW5kIHN0eWxlcworKi8KKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCByZXBsYWNlQWxsKE1Db25zdFRleHQgc3JjVGV4dCk7CisKKy8qKgorKiBJbnNlcnQgdGhlIGNvbnRlbnRzIG9mIDxjb2RlPnNyY1RleHQ8L2NvZGU+IChib3RoIGNoYXJhY3RlcnMgYW5kIHN0eWxlcykgaW50byB0aGlzCisqIE1UZXh0IGF0IHRoZSBwb3NpdGlvbiBzcGVjaWZpZWQgYnkgPGNvZGU+cG9zPC9jb2RlPi4KKyogQHBhcmFtIHBvcyBUaGUgY2hhcmFjdGVyIG9mZnNldCB3aGVyZSB0aGUgbmV3IHRleHQgaXMgdG8gYmUgaW5zZXJ0ZWQuCisqIEBwYXJhbSBzcmNUZXh0IFRoZSB0ZXh0IHRvIGluc2VydC4gKi8KKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBpbnNlcnQoaW50IHBvcywgTUNvbnN0VGV4dCBzcmNUZXh0KTsKKworLyoqCisqIEFwcGVuZCB0aGUgY29udGVudHMgb2YgPGNvZGU+c3JjVGV4dDwvY29kZT4gKGJvdGggY2hhcmFjdGVycyBhbmQgc3R5bGVzKSB0byB0aGUKKyogZW5kIG9mIHRoaXMgTVRleHQuCisqIEBwYXJhbSBzcmNUZXh0IFRoZSB0ZXh0IHRvIGFwcGVuZC4gKi8KKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBhcHBlbmQoTUNvbnN0VGV4dCBzcmNUZXh0KTsKKworLyoqCisqIERlbGV0ZSB0aGUgc3BlY2lmaWVkIHJhbmdlIG9mIGNoYXJhY3RlcnMgKGFuZCBzdHlsZXMpLgorKiBAcGFyYW0gc3RhcnQgT2Zmc2V0IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8gZGVsZXRlLgorKiBAcGFyYW0gbGltaXQgT2Zmc2V0IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIHJhbmdlIHRvIGRlbGV0ZS4gKi8KKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCByZW1vdmUoaW50IHN0YXJ0LCBpbnQgbGltaXQpOworCisvKioKKyogRGVsZXRlIGFsbCBjaGFyYWN0ZXJzIGFuZCBzdHlsZXMuCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHJlbW92ZSgpOworCisvKioKKyogQ3JlYXRlIGFuIE1UZXh0IGNvbnRhaW5pbmcgdGhlIGNoYXJhY3RlcnMgYW5kIHN0eWxlcyBpbiB0aGUgcmFuZ2UKKyogWzxjb2RlPnN0YXJ0PC9jb2RlPiwgPGNvZGU+bGltaXQ8L2NvZGU+KS4KKyogQHBhcmFtIHN0YXJ0IG9mZnNldCBvZiBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIG5ldyB0ZXh0CisqIEBwYXJhbSBsaW1pdCBvZmZzZXQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSBuZXcgdGV4dAorKiBAcmV0dXJuIGFuIE1Db25zdFRleHQgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNoYXJhY3RlcnMgYW5kIHN0eWxlcyBpbiB0aGUgZ2l2ZW4gcmFuZ2UKKyovCisgICAgcHVibGljIGFic3RyYWN0IE1UZXh0IGV4dHJhY3RXcml0YWJsZShpbnQgc3RhcnQsIGludCBsaW1pdCk7CisKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gU1RPUkFHRSBNQU5BR0VNRU5UCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy8qKgorKiBNaW5pbWl6ZSB0aGUgYW1vdW50IG9mIG1lbW9yeSB1c2VkIGJ5IHRoZSBNVGV4dCBvYmplY3QuCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGNvbXByZXNzKCk7CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIFNUWUxFIE1PRElGSUNBVElPTgorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisvKioKKyogU2V0IHRoZSBjaGFyYWN0ZXIgc3R5bGUgb2YgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIE1UZXh0IG9iamVjdCB0bworKiA8Y29kZT5BdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUDwvY29kZT4uCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHJlbW92ZUNoYXJhY3RlclN0eWxlcygpOworCisvKioKKyogSW52b2tlIHRoZSBnaXZlbiBtb2RpZmllciBvbiBhbGwgY2hhcmFjdGVyIHN0eWxlcyBmcm9tIHN0YXJ0IHRvIGxpbWl0LgorKiBAcGFyYW0gbW9kaWZpZXIgdGhlIG1vZGlmaWVyIHRvIGFwcGx5IHRvIHRoZSByYW5nZS4KKyogQHBhcmFtIHN0YXJ0IHRoZSBzdGFydCBvZiB0aGUgcmFuZ2Ugb2YgdGV4dCB0byBtb2RpZnkuCisqIEBwYXJhbSBsaW1pdCB0aGUgbGltaXQgb2YgdGhlIHJhbmdlIG9mIHRleHQgdG8gbW9kaWZ5LgorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBtb2RpZnlDaGFyYWN0ZXJTdHlsZXMoaW50IHN0YXJ0LCBpbnQgbGltaXQsIFN0eWxlTW9kaWZpZXIgbW9kaWZpZXIpOworCisvKioKKyogSW52b2tlIHRoZSBnaXZlbiBtb2RpZmllciBvbiBhbGwgcGFyYWdyYXBoIHN0eWxlcyBpbiBwYXJhZ3JhcGhzCisqIGNvbnRhaW5pbmcgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgW3N0YXJ0LCBsaW1pdCkuCisqIEBwYXJhbSBtb2RpZmllciB0aGUgbW9kaWZpZXIgdG8gYXBwbHkgdG8gdGhlIHJhbmdlLgorKiBAcGFyYW0gc3RhcnQgdGhlIHN0YXJ0IG9mIHRoZSByYW5nZSBvZiB0ZXh0IHRvIG1vZGlmeS4KKyogQHBhcmFtIGxpbWl0IHRoZSBsaW1pdCBvZiB0aGUgcmFuZ2Ugb2YgdGV4dCB0byBtb2RpZnkuCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG1vZGlmeVBhcmFncmFwaFN0eWxlcyhpbnQgc3RhcnQsIGludCBsaW1pdCwgU3R5bGVNb2RpZmllciBtb2RpZmllcik7CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIERBTUFHRUQgUkFOR0UKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8qKgorKiBSZXNldCB0aGUgZGFtYWdlZCByYW5nZSB0byBhbiBlbXB0eSBpbnRlcnZhbCwgYW5kIGJlZ2luIGFjY3VtdWxhdGluZyB0aGUgZGFtYWdlZAorKiByYW5nZS4gIFRoZSBkYW1hZ2VkIHJhbmdlIGluY2x1ZGVzIGV2ZXJ5IGluZGV4IHdoZXJlIGEgY2hhcmFjdGVyLCBjaGFyYWN0ZXIgc3R5bGUsCisqIG9yIHBhcmFncmFwaCBzdHlsZSBoYXMgY2hhbmdlZC4KKyogQHNlZSAjZGFtYWdlZFJhbmdlU3RhcnQKKyogQHNlZSAjZGFtYWdlZFJhbmdlTGltaXQKKyovCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgcmVzZXREYW1hZ2VkUmFuZ2UoKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvUGFyYWdyYXBoQnVmZmVyLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L1BhcmFncmFwaEJ1ZmZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU1NTczNzkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L1BhcmFncmFwaEJ1ZmZlci5qYXZhCkBAIC0wLDAgKzEsNzE2IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBQYXJhZ3JhcGhCdWZmZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0NToxMCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQ7CisKK2ltcG9ydCBqYXZhLmlvLkV4dGVybmFsaXphYmxlOworaW1wb3J0IGphdmEuaW8uT2JqZWN0SW5wdXQ7CitpbXBvcnQgamF2YS5pby5PYmplY3RPdXRwdXQ7CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKKworLyoKKyAgICBSaWdodCBub3csIHlvdSBoYXZlIHRvIGNvbnN0cnVjdCB0aGlzIGNsYXNzIHdpdGggYSBjaGFyQnVmZmVyLiAgVGhhdCdzIHByZXR0eSB1Z2x5Li4uICovCisKKy8qCisgICAgOC84Lzk2CisgICAgICAgIEFkZGVkIHJlcGxhY2UgbWV0aG9kLCB3aGljaCByZWFkcyBzdHlsZXMgZnJvbSBhIFBhcmFncmFwaEl0ZXJhdG9yLgorICAgICAgICBBbHNvLCBhZGRlZCBhIGNvbnN0cnVjdG9yIHdoaWNoIHRha2VzIGEgUGFyYWdyYXBoSXRlcmF0b3IuCisgICAgICAgIFRoZXNlIG1ldGhvZHMgYXJlIGZvciBjb3B5L3Bhc3RlIHN1cHBvcnQuCisKKyAgICA4LzIyLzk2CisgICAgICAgIFJlcGxhY2UgbWV0aG9kICh3aGljaCB0YWtlcyBhbiBpdGVyYXRvciBhcyBhbiBhcmd1bWVudCkgdGVzdHMgZm9yIGEKKyAgICAgICAgMC1sZW5ndGggaXRlcmF0b3IuCisKKyAgICA5LzMwLzk2CisgICAgICAgIHtqYnJ9IG1vZGlmaWVkIHBhcmFncmFwaExpbWl0KCk7CisKKyAgICAxMC8yMy85NgorICAgICAgICBUaGlzIGNsYXNzIG5vdyBtYWludGFpbnMgcGFyYWdyYXBoIHN0eWxlcy4gIEFsc28gaGFzIGEgdGltZXN0YW1wLgorCisgICAgMTAvMjUvOTYKKyAgICAgICAgSG9sZHMgb24gdG8gU3R5bGUgaW5zdGVhZCBvZiBTdHlsZS4KKworICAgIDcvMzEvOTggU3dpdGNoZWQgdG8gQXR0cmlidXRlTWFwCisKKyovCisKKy8qKgorKiBUaGlzIGNsYXNzIHN0b3JlcyBvZmZzZXRzIHdoZXJlIHBhcmFncmFwaCBicmVha3Mgb2NjdXIsIGFuZCB0aGUgc3R5bGUgYXBwbGllZCB0bworKiBlYWNoIHBhcmFncmFwaC4KKyoKKyogVGhlIG9mZnNldHMgd2hlcmUgcGFyYWdyYXBoIGJyZWFrcyBvY2N1ciBhcmUgc3RvcmVkIGluIGEgUnVuQXJyYXkgb2JqZWN0LiAgVGhpcyBpcworKiBub3Qgc3RyaWN0bHkgbmVjZXNzYXJ5LCBidXQgaXQgbWFrZXMgc2Nhbm5pbmcgdGhlIHRleHQgZm9yIHBhcmFncmFwaCBicmVha3MgdW5uZWNlc3NhcnkuCisqIEhvd2V2ZXIsIGl0IG1ha2VzIGRldGVybWluaW5nIHdoZXJlIHBhcmFncmFwaHMgc3RhcnQgYSBsaXR0bGUgY29uZnVzaW5nLiAgSWYgdGhlcmUgaXMgYQorKiBwYXJhZ3JhcGggYnJlYWsgYXQgb2Zmc2V0IHAsIHRoZW4gdGhlcmUgd2lsbCBiZSBhIHBhcmFncmFwaCBzdGFydCBhdCBvZmZzZXQgcCsxLgorKiBJZiB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQgaXMgYSBwYXJhZ3JhcGggYnJlYWssIHRoZXJlIHdpbGwgYmUgYSBydW4gYXJyYXkgZW50cnkKKyogZm9yIHRoYXQgY2hhcmFjdGVyIChhbmQgYWxzbyBhIHBhcmFncmFwaCBzdHlsZSBmb3IgdGhhdCBwYXJhZ3JhcGgsIGV2ZW4gdGhvdWdoIHRoZQorKiBzdHlsZSBkb2VzIG5vdCBhcHBseSB0byBhbnkgdGV4dCkuCisqCisqIFRoZSBzdHlsZSBvZiB0aGUgZmlyc3QgcGFyYWdyYXBoIGluIHRoZSB0ZXh0IGlzIGluIHRoZSBmRmlyc3RTdHlsZSBtZW1iZXIuICBPdGhlcgorKiBwYXJhZ3JhcGggc3R5bGVzIGFyZSBzdG9yZWQgaW4gdGhlIGZTdHlsZVRhYmxlIGFycmF5LCBpbiB0aGUgZm9sbG93aW5nIG1hbm5lcjogIHRoZQorKiBwYXJhZ3JhcGggd2l0aCBiZWdpbnMgYXQgb2Zmc2V0IGZSdW5BcnJheS5mUnVuU3RhcnRbaV0rMSBoYXMgc3R5bGUgZlN0eWxlVGFibGVbaV0uCisqIFRoZSBzdHlsZSB0YWJsZSdzICJnYXAgcmFuZ2UiIGlzIGtlcHQgaW4gc3luYyB3aXRoIHRoZSBSdW5BcnJheS4KKyoKKyogVGhpcyBjbGFzcyBwcm9wb2dhdGVzIHBhcmFncmFwaCBzdHlsZXMgaW4gdGhlICJNaWNyb3NvZnQgV29yZCIgZmFzaGlvbjogIHN0eWxlcworKiBwcm9wb2dhdGUgYmFja3dhcmQgZnJvbSBwYXJhZ3JhcGggYnJlYWtzLgorKgorKiBUaGlzIGNsYXNzIG1haW50YWlucyBhIHRpbWUgc3RhbXAsIHdoaWNoIGNoYW5nZXMgZXZlcnkgdGltZSBleHRyYSBmb3JtYXR0aW5nIChmb3JtYXR0aW5nCisqIG9uIGEgcmFuZ2Ugb3RoZXIgdGhhbiB0aGUgY3VycmVudCBzZWxlY3Rpb24pIGlzIG5lZWRlZDsgIGZvciBleGFtcGxlLCB3aGVuIGEgcGFyYWdyYXBoCisqIGJyZWFrIGlzIHJlbW92ZWQuCisqLworCisKK2ZpbmFsIGNsYXNzIFBhcmFncmFwaEJ1ZmZlciBleHRlbmRzIE1QYXJhZ3JhcGhCdWZmZXIgaW1wbGVtZW50cyBFeHRlcm5hbGl6YWJsZSB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBrSW5pdGlhbFNpemUgPSAxMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ1VSUkVOVF9WRVJTSU9OID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAyMjM1NjkzNDsKKworICAgIHByaXZhdGUgUnVuQXJyYXkgZlJ1bkFycmF5OworICAgIHByaXZhdGUgQXR0cmlidXRlTWFwW10gZlN0eWxlVGFibGU7CisgICAgcHJpdmF0ZSBBdHRyaWJ1dGVNYXAgZkZpcnN0U3R5bGU7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIGlzUGFyYWdyYXBoQnJlYWsoY2hhciBjKSB7CisKKyAgICAgICAgcmV0dXJuIGMgPT0nXHUyMDI5JyB8fCBjID09ICdcbic7CisgICAgfQorCisvKioKKyogQ29uc3RydWN0IGEgbmV3IHBhcmFncmFwaCBidWZmZXIgZnJvbSB0aGUgY2hhcmFjdGVycyBpbiA8dHQ+Y2hhckJ1ZmZlcjwvdHQ+LgorKi8KKyAgICBQYXJhZ3JhcGhCdWZmZXIoTUNoYXJCdWZmZXIgY2hhckJ1ZmZlcikgeworCisgICAgICAgIHRoaXMoY2hhckJ1ZmZlci5sZW5ndGgoKSk7CisKKyAgICAgICAgLy8gc2NhbiB0ZXh0IGZvciBwYXJhZ3JhcGggYm91bmRhcmllcworCisgICAgICAgIGludCB0ZXh0TGVuZ3RoID0gZlJ1bkFycmF5LmdldEN1clRleHRMZW5ndGgoKTsKKworICAgICAgICBmb3IgKGludCBwb3M9MDsgcG9zIDwgdGV4dExlbmd0aDsgcG9zKyspIHsKKworICAgICAgICAgICAgaWYgKGlzUGFyYWdyYXBoQnJlYWsoY2hhckJ1ZmZlci5hdChwb3MpKSkgeworICAgICAgICAgICAgICAgIGlmIChmUnVuQXJyYXkuZlBvc0VuZCsxID49IGZSdW5BcnJheS5mTmVnU3RhcnQpCisgICAgICAgICAgICAgICAgICAgIGV4cGFuZFN0eWxlVGFibGUoKTsKKyAgICAgICAgICAgICAgICBmUnVuQXJyYXkuZlJ1blN0YXJ0WysrZlJ1bkFycmF5LmZQb3NFbmRdID0gcG9zOworICAgICAgICAgICAgICAgIGZTdHlsZVRhYmxlW2ZSdW5BcnJheS5mUG9zRW5kXSA9IGZGaXJzdFN0eWxlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICB9CisKKy8qKgorKiBQcml2YXRlIGNvbnN0cnVjdG9yLgorKi8KKyAgICBwcml2YXRlIFBhcmFncmFwaEJ1ZmZlcihpbnQgaW5pdGlhbExlbmd0aCkgeworCisgICAgICAgIGZSdW5BcnJheSA9IG5ldyBSdW5BcnJheShrSW5pdGlhbFNpemUsIGluaXRpYWxMZW5ndGgpOworICAgICAgICBmU3R5bGVUYWJsZSA9IG5ldyBBdHRyaWJ1dGVNYXBbZlJ1bkFycmF5LmdldEFycmF5TGVuZ3RoKCldOworCisgICAgICAgIGZGaXJzdFN0eWxlID0gQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVA7CisgICAgfQorCisgICAgLyoqCisgICAgICogTm90ZTogdGhpcyBjb25zdHJ1Y3RvciBpcyBPTkxZIGZvciB1c2UgYnkgdGhlIFNlcmlhbGl6YXRpb24KKyAgICAgKiBtZWNoYW5pc20uICBJdCBkb2VzIG5vdCBsZWF2ZSB0aGlzIG9iamVjdCBpbiBhIHZhbGlkIHN0YXRlIQorICAgICAqLworICAgIHB1YmxpYyBQYXJhZ3JhcGhCdWZmZXIoKSB7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgd3JpdGVFeHRlcm5hbChPYmplY3RPdXRwdXQgb3V0KSB0aHJvd3MgSU9FeGNlcHRpb24geworCisgICAgICAgIGNvbXByZXNzKCk7CisgICAgICAgIG91dC53cml0ZUludChDVVJSRU5UX1ZFUlNJT04pOworICAgICAgICBvdXQud3JpdGVPYmplY3QoZlJ1bkFycmF5KTsKKyAgICAgICAgb3V0LndyaXRlT2JqZWN0KGZTdHlsZVRhYmxlKTsKKyAgICAgICAgb3V0LndyaXRlT2JqZWN0KGZGaXJzdFN0eWxlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZWFkRXh0ZXJuYWwoT2JqZWN0SW5wdXQgaW4pIHRocm93cyBJT0V4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzTm90Rm91bmRFeGNlcHRpb24geworCisgICAgICAgIGlmIChpbi5yZWFkSW50KCkgIT0gQ1VSUkVOVF9WRVJTSU9OKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oIkludmFsaWQgdmVyc2lvbiBvZiBQYXJhZ3JhcGhCdWZmZXIiKTsKKyAgICAgICAgfQorICAgICAgICBmUnVuQXJyYXkgPSAoUnVuQXJyYXkpIGluLnJlYWRPYmplY3QoKTsKKyAgICAgICAgZlN0eWxlVGFibGUgPSAoQXR0cmlidXRlTWFwW10pIGluLnJlYWRPYmplY3QoKTsKKyAgICAgICAgZkZpcnN0U3R5bGUgPSAoQXR0cmlidXRlTWFwKSBpbi5yZWFkT2JqZWN0KCk7CisgICAgfQorCisvKioKKyogU2hpZnQgdGFibGUgc3VjaCB0aGF0IHRoZSBsYXN0IHBvc2l0aXZlIHJ1biBzdGFydHMgYmVmb3JlIHBvcy4KKyovCisgICAgcHJpdmF0ZSB2b2lkIHNoaWZ0VGFibGVUbyhpbnQgcG9zKSB7CisKKyAgICAgICAgaW50IG9sZE5lZ1N0YXJ0ID0gZlJ1bkFycmF5LmZOZWdTdGFydDsKKyAgICAgICAgaW50IG9sZFBvc0VuZCA9IGZSdW5BcnJheS5mUG9zRW5kOworCisgICAgICAgIGZSdW5BcnJheS5zaGlmdFRhYmxlVG8ocG9zKTsKKworICAgICAgICBpZiAob2xkUG9zRW5kID4gZlJ1bkFycmF5LmZQb3NFbmQpCisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGZTdHlsZVRhYmxlLCBmUnVuQXJyYXkuZlBvc0VuZCsxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmU3R5bGVUYWJsZSwgZlJ1bkFycmF5LmZOZWdTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkUG9zRW5kLWZSdW5BcnJheS5mUG9zRW5kKTsKKyAgICAgICAgZWxzZSBpZiAob2xkTmVnU3RhcnQgPCBmUnVuQXJyYXkuZk5lZ1N0YXJ0KQorICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShmU3R5bGVUYWJsZSwgb2xkTmVnU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZTdHlsZVRhYmxlLCBvbGRQb3NFbmQrMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlJ1bkFycmF5LmZOZWdTdGFydC1vbGROZWdTdGFydCk7CisgICAgfQorCisvKioKKyogVXBkYXRlIHRoZSBzdHlsZSB0YWJsZSB0byByZWZsZWN0IGEgY2hhbmdlIGluIHRoZSBSdW5BcnJheSdzIHNpemUuCisqLworICAgIHByaXZhdGUgdm9pZCBoYW5kbGVBcnJheVJlc2l6ZShpbnQgb2xkTmVnU3RhcnQpIHsKKworICAgICAgICBBdHRyaWJ1dGVNYXAgbmV3U3R5bGVUYWJsZVtdID0gbmV3IEF0dHJpYnV0ZU1hcFtmUnVuQXJyYXkuZ2V0QXJyYXlMZW5ndGgoKV07CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZlN0eWxlVGFibGUsIDAsIG5ld1N0eWxlVGFibGUsIDAsIGZSdW5BcnJheS5mUG9zRW5kKzEpOworICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGZTdHlsZVRhYmxlLCBvbGROZWdTdGFydCwgbmV3U3R5bGVUYWJsZSwgZlJ1bkFycmF5LmZOZWdTdGFydCwgKGZSdW5BcnJheS5nZXRBcnJheUxlbmd0aCgpLWZSdW5BcnJheS5mTmVnU3RhcnQpKTsKKyAgICAgICAgZlN0eWxlVGFibGUgPSBuZXdTdHlsZVRhYmxlOworICAgIH0KKworICAgIHZvaWQgY29tcHJlc3MoKSB7CisKKyAgICAgICAgaW50IG9sZE5lZ1N0YXJ0ID0gZlJ1bkFycmF5LmZOZWdTdGFydDsKKyAgICAgICAgZlJ1bkFycmF5LmNvbXByZXNzKCk7CisgICAgICAgIGlmIChmUnVuQXJyYXkuZk5lZ1N0YXJ0ICE9IG9sZE5lZ1N0YXJ0KSB7CisgICAgICAgICAgICBoYW5kbGVBcnJheVJlc2l6ZShvbGROZWdTdGFydCk7CisgICAgICAgIH0KKyAgICB9CisKKy8qKgorKiBNYWtlIG1vcmUgcm9vbSBpbiBydW4vc3R5bGUgdGFibGVzLgorKi8KKyAgICBwcml2YXRlIHZvaWQgZXhwYW5kU3R5bGVUYWJsZSgpIHsKKworICAgICAgICBpbnQgb2xkTmVnU3RhcnQgPSBmUnVuQXJyYXkuZk5lZ1N0YXJ0OworICAgICAgICBmUnVuQXJyYXkuZXhwYW5kUnVuVGFibGUoKTsKKyAgICAgICAgaGFuZGxlQXJyYXlSZXNpemUob2xkTmVnU3RhcnQpOworICAgIH0KKworLyoqCisqIFByb2Nlc3MgYSBjaGFyYWN0ZXIgaW5zZXJ0aW9uIGF0IG9mZnNldCA8dHQ+c3RhcnQ8L3R0Pi4KKyogSWYgYSBwYXJhZ3JhcGggYnJlYWsgd2FzIGluc2VydGVkLCBwcm9wb2dhdGUgcGFyYWdyYXBoIHN0eWxlIGF0CisqIDx0dD5zdGFydDwvdHQ+IHRvIG5ldyBwYXJhZ3JhcGguCisqLworICAgIHB1YmxpYyB2b2lkIGluc2VydFRleHQoaW50IHN0YXJ0LCBjaGFyIGluc2VydGVkQ2hhcikgeworCisgICAgICAgIHNoaWZ0VGFibGVUbyhzdGFydCk7CisgICAgICAgIGlmIChpc1BhcmFncmFwaEJyZWFrKGluc2VydGVkQ2hhcikpIHsKKyAgICAgICAgICAgIGlmIChmUnVuQXJyYXkuZlBvc0VuZCsxID49IGZSdW5BcnJheS5mTmVnU3RhcnQpCisgICAgICAgICAgICAgICAgZXhwYW5kU3R5bGVUYWJsZSgpOworICAgICAgICAgICAgZlJ1bkFycmF5LmZSdW5TdGFydFsrK2ZSdW5BcnJheS5mUG9zRW5kXSA9IHN0YXJ0OworICAgICAgICAgICAgZlN0eWxlVGFibGVbZlJ1bkFycmF5LmZQb3NFbmRdID0KKyAgICAgICAgICAgICAgICAoZlJ1bkFycmF5LmZQb3NFbmQgPT0gMCk/IGZGaXJzdFN0eWxlIDogZlN0eWxlVGFibGVbZlJ1bkFycmF5LmZQb3NFbmQtMV07CisgICAgICAgICAgICBmUnVuQXJyYXkucnVuU3RhcnRzQ2hhbmdlZCgpOworICAgICAgICB9CisKKyAgICAgICAgLy9mUnVuQXJyYXkuZkN1clRleHRMZW5ndGgrKzsKKyAgICAgICAgZlJ1bkFycmF5LmFkZFRvQ3VyVGV4dExlbmd0aCgxKTsKKyAgICB9CisKKy8qKgorKiBQcm9jZXNzIGNoYXJhY3RlciBpbnNlcnRpb24gYXQgb2Zmc2V0IDx0dD5zdGFydDwvdHQ+LgorKiBFYWNoIG5ldyBwYXJhZ3JhcGggZ2V0cyBwYXJhZ3JhcGggc3R5bGUgYXQKKyogPHR0PnN0YXJ0PC90dD4uCisqLworICAgIHB1YmxpYyB2b2lkIGluc2VydFRleHQoaW50IHN0YXJ0LCBjaGFyIHNyY0NoYXJzW10sIGludCBzcmNTdGFydCwgaW50IHNyY0xpbWl0KSB7CisKKyAgICAgICAgc2hpZnRUYWJsZVRvKHN0YXJ0KTsKKworICAgICAgICBpbnQgYWRqdXN0ID0gc3RhcnQgLSBzcmNTdGFydDsKKworICAgICAgICBmb3IgKGludCBpPXNyY1N0YXJ0OyAgaSA8IHNyY0xpbWl0OyBpKyspCisgICAgICAgICAgICBpZiAoaXNQYXJhZ3JhcGhCcmVhayhzcmNDaGFyc1tpXSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoZlJ1bkFycmF5LmZQb3NFbmQrMSA+PSBmUnVuQXJyYXkuZk5lZ1N0YXJ0KQorICAgICAgICAgICAgICAgICAgICBleHBhbmRTdHlsZVRhYmxlKCk7CisgICAgICAgICAgICAgICAgZlJ1bkFycmF5LmZSdW5TdGFydFsrK2ZSdW5BcnJheS5mUG9zRW5kXSA9IGFkanVzdCArIGk7CisgICAgICAgICAgICAgICAgZlN0eWxlVGFibGVbZlJ1bkFycmF5LmZQb3NFbmRdID0KKyAgICAgICAgICAgICAgICAgICAgKGZSdW5BcnJheS5mUG9zRW5kID09IDApPyBmRmlyc3RTdHlsZSA6IGZTdHlsZVRhYmxlW2ZSdW5BcnJheS5mUG9zRW5kLTFdOworICAgICAgICAgICAgICAgIGZSdW5BcnJheS5ydW5TdGFydHNDaGFuZ2VkKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgLy9mUnVuQXJyYXkuZkN1clRleHRMZW5ndGggKz0gKHNyY0xpbWl0LXNyY1N0YXJ0KTsKKyAgICAgICAgZlJ1bkFycmF5LmFkZFRvQ3VyVGV4dExlbmd0aChzcmNMaW1pdC1zcmNTdGFydCk7CisgICAgfQorCisvKioKKyogUHJvY2VzcyBkZWxldGlvbiBieSByZW1vdmluZyBwYXJhZ3JhcGggYnJlYWtzIGNvbnRhaW5lZCBpbgorKiBkZWxldGVkIHJhbmdlLiAgUHJvcG9nYXRlIHBhcmFncmFwaCBzdHlsZXMgYmFja3dhcmQsIGlmIG5lY2Vzc2FyeS4KKyovCisgICAgcHVibGljIHZvaWQgZGVsZXRlVGV4dChpbnQgc3RhcnQsIGludCBsaW1pdCwgaW50W10gZGFtYWdlZFJhbmdlKSB7CisKKyAgICAgICAgaW50IGxlbmd0aCA9IGxpbWl0IC0gc3RhcnQ7CisgICAgICAgIGlmIChsZW5ndGggPCAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIHJhbmdlIik7CisgICAgICAgIH0KKworICAgICAgICBzaGlmdFRhYmxlVG8obGltaXQpOworCisgICAgICAgIGludCBuZXdFbmQgPSBmUnVuQXJyYXkuZmluZFJ1bkNvbnRhaW5pbmcoc3RhcnQtMSk7CisKKyAgICAgICAgaWYgKG5ld0VuZCAhPSBmUnVuQXJyYXkuZlBvc0VuZCkgeworCisgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgcHJvcFN0eWxlID0gZlN0eWxlVGFibGVbZlJ1bkFycmF5LmZQb3NFbmRdOworICAgICAgICAgICAgYm9vbGVhbiBwcm9wb2dhdGVkOworCisgICAgICAgICAgICBpZiAobmV3RW5kID09IC0xKSB7CisgICAgICAgICAgICAgICAgcHJvcG9nYXRlZCA9ICFwcm9wU3R5bGUuZXF1YWxzKGZGaXJzdFN0eWxlKTsKKyAgICAgICAgICAgICAgICBmRmlyc3RTdHlsZSA9IHByb3BTdHlsZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHByb3BvZ2F0ZWQgPSAhcHJvcFN0eWxlLmVxdWFscyhmU3R5bGVUYWJsZVtuZXdFbmRdKTsKKyAgICAgICAgICAgICAgICBmU3R5bGVUYWJsZVtuZXdFbmRdID0gcHJvcFN0eWxlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocHJvcG9nYXRlZCkgeworICAgICAgICAgICAgICAgIGludCBwU3RhcnQgPSAobmV3RW5kPT0tMSk/IDAgOiBmUnVuQXJyYXkuZlJ1blN0YXJ0W25ld0VuZF0gKyAxOworICAgICAgICAgICAgICAgIGRhbWFnZWRSYW5nZVswXSA9IE1hdGgubWluKGRhbWFnZWRSYW5nZVswXSwgcFN0YXJ0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZlJ1bkFycmF5LmZQb3NFbmQgPSBuZXdFbmQ7CisgICAgICAgIH0KKworICAgICAgICBmUnVuQXJyYXkuYWRkVG9DdXJUZXh0TGVuZ3RoKC1sZW5ndGgpOworCisgICAgICAgIGZSdW5BcnJheS5ydW5TdGFydHNDaGFuZ2VkKCk7CisgICAgfQorCisvKioKKyogUmV0dXJucyB0aGUgc3RhcnQgb2YgdGhlIHBhcmFncmFwaCBjb250YWluaW5nIG9mZnNldCA8dHQ+cG9zPC90dD4uCisqLworICAgIHB1YmxpYyBpbnQgcGFyYWdyYXBoU3RhcnQoaW50IHBvcykgeworCisgICAgICAgIGludCBydW4gPSBmUnVuQXJyYXkuZmluZFJ1bkNvbnRhaW5pbmcocG9zLTEpOworICAgICAgICBpZiAocnVuID09IC0xKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmUnVuQXJyYXkuZ2V0TG9naWNhbFJ1blN0YXJ0KHJ1bikgKyAxOworICAgICAgICB9CisgICAgfQorCisvKioKKyogUmV0dXJucyB0aGUgbGltaXQgb2YgdGhlIHBhcmFncmFwaCBjb250YWluaW5nIG9mZnNldCA8dHQ+cG9zPC90dD4uCisqLworICAgIHB1YmxpYyBpbnQgcGFyYWdyYXBoTGltaXQoaW50IHBvcykgeworCisgICAgICAgIGludCBydW4gPSBmUnVuQXJyYXkuZmluZFJ1bkNvbnRhaW5pbmcocG9zLTEpOworCisgICAgICAgIGlmIChydW4gPT0gZlJ1bkFycmF5LmZQb3NFbmQpCisgICAgICAgICAgICBydW4gPSBmUnVuQXJyYXkuZk5lZ1N0YXJ0OworICAgICAgICBlbHNlCisgICAgICAgICAgICBydW4rKzsKKworICAgICAgICBpZiAocnVuID09IGZSdW5BcnJheS5nZXRBcnJheUxlbmd0aCgpKSB7CisgICAgICAgICAgICByZXR1cm4gZlJ1bkFycmF5LmdldEN1clRleHRMZW5ndGgoKTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBzdGFydCA9IGZSdW5BcnJheS5nZXRMb2dpY2FsUnVuU3RhcnQocnVuKTsKKworICAgICAgICByZXR1cm4gc3RhcnQrMTsKKyAgICB9CisKKy8qKgorKiBSZXR1cm5zIHRoZSBzdHlsZSBvZiB0aGUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgb2Zmc2V0IDx0dD5wb3M8L3R0Pi4KKyovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBwYXJhZ3JhcGhTdHlsZUF0KGludCBvZmZzZXQpIHsKKworICAgICAgICBpbnQgcnVuID0gZlJ1bkFycmF5LmZpbmRSdW5Db250YWluaW5nKG9mZnNldC0xKTsKKyAgICAgICAgaWYgKHJ1biA8IDApCisgICAgICAgICAgICByZXR1cm4gZkZpcnN0U3R5bGU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmU3R5bGVUYWJsZVtydW5dOworICAgIH0KKworLyoqCisqIENyZWF0ZSBwYXJhZ3JhcGggaXRlcmF0b3IuCisqLworLyoKKyAgICBwdWJsaWMgTVBhcmFncmFwaEl0ZXJhdG9yIGNyZWF0ZVBhcmFncmFwaEl0ZXJhdG9yKGludCBzdGFydCwgaW50IGxpbWl0KSB7CisKKyAgICAgICAgcmV0dXJuIG5ldyBQYXJhZ3JhcGhJdGVyYXRvcihzdGFydCwgbGltaXQpOworICAgIH0KKyovCisKKy8qKgorKiBDYWxsZWQgYnkgaXRlcmF0b3IgdG8gZ2V0IHJ1biBpbmZvLgorKi8KKyAgICBwcml2YXRlIHZvaWQgc2V0SXRlcmF0b3IoaW50IHBvcywgUGFyYWdyYXBoSXRlcmF0b3IgaXRlcikgeworCisgICAgICAgIGlmICgocG9zIDwgMCkgfHwgKHBvcyA+PSBmUnVuQXJyYXkuZ2V0Q3VyVGV4dExlbmd0aCgpKSkgeworICAgICAgICAgICAgaXRlci5zZXQoMCwgMCwga05vUnVuLCBudWxsKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGludCBydW47CisKKyAgICAgICAgaWYgKHBvcyA+IDApCisgICAgICAgICAgICBydW4gPSBmUnVuQXJyYXkuZmluZFJ1bkNvbnRhaW5pbmcocG9zLTEpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBydW4gPSAtMTsKKworICAgICAgICBzZXRJdGVyYXRvclVzaW5nUnVuKHJ1biwgaXRlcik7CisgICAgfQorCisvKioKKyogQ2FsbGVkIGJ5IGl0ZXJhdG9yIHRvIGdldCBydW4gaW5mby4KKyovCisgICAgcHJpdmF0ZSB2b2lkIHNldEl0ZXJhdG9yVXNpbmdSdW4oaW50IHJ1biwgUGFyYWdyYXBoSXRlcmF0b3IgaXRlcikgeworCisgICAgICAgIGludCBsYXN0VmFsaWRSdW4gPSBmUnVuQXJyYXkubGFzdFJ1bigpOworCisgICAgICAgIGlmIChydW4gPCAtMSB8fCBydW4gPiBsYXN0VmFsaWRSdW4pIHsKKyAgICAgICAgICAgIGl0ZXIuc2V0KDAsIDAsIGtOb1J1biwgbnVsbCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAocnVuID09IGZSdW5BcnJheS5mUG9zRW5kKzEpCisgICAgICAgICAgICBydW4gPSBmUnVuQXJyYXkuZk5lZ1N0YXJ0OworICAgICAgICBlbHNlIGlmIChydW4gPT0gZlJ1bkFycmF5LmZOZWdTdGFydC0xKQorICAgICAgICAgICAgcnVuID0gZlJ1bkFycmF5LmZQb3NFbmQ7CisKKyAgICAgICAgaW50IHJ1blN0YXJ0OworICAgICAgICBBdHRyaWJ1dGVNYXAgc3R5bGU7CisKKyAgICAgICAgaWYgKHJ1biA8IDApIHsKKyAgICAgICAgICAgIHJ1blN0YXJ0ID0gMDsKKyAgICAgICAgICAgIHN0eWxlID0gZkZpcnN0U3R5bGU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBydW5TdGFydCA9IGZSdW5BcnJheS5mUnVuU3RhcnRbcnVuXTsKKyAgICAgICAgICAgIHN0eWxlID0gZlN0eWxlVGFibGVbcnVuXTsKKyAgICAgICAgICAgIGlmIChydW5TdGFydCA8IDApCisgICAgICAgICAgICAgICAgcnVuU3RhcnQgKz0gZlJ1bkFycmF5LmdldEN1clRleHRMZW5ndGgoKTsKKyAgICAgICAgICAgIHJ1blN0YXJ0Kys7CisgICAgICAgIH0KKworICAgICAgICBpbnQgbmV4dFJ1bjsKKworICAgICAgICBpZiAocnVuID09IGZSdW5BcnJheS5mUG9zRW5kKQorICAgICAgICAgICAgbmV4dFJ1biA9IGZSdW5BcnJheS5mTmVnU3RhcnQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG5leHRSdW4gPSBydW4gKyAxOworCisgICAgICAgIGludCBydW5MaW1pdDsKKworICAgICAgICBpZiAobmV4dFJ1biA+PSBmUnVuQXJyYXkuZ2V0QXJyYXlMZW5ndGgoKSkKKyAgICAgICAgICAgIHJ1bkxpbWl0ID0gZlJ1bkFycmF5LmdldEN1clRleHRMZW5ndGgoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBydW5MaW1pdCA9IGZSdW5BcnJheS5mUnVuU3RhcnRbbmV4dFJ1bl07CisgICAgICAgICAgICBpZiAocnVuTGltaXQgPCAwKQorICAgICAgICAgICAgICAgIHJ1bkxpbWl0ICs9IGZSdW5BcnJheS5nZXRDdXJUZXh0TGVuZ3RoKCk7CisgICAgICAgICAgICBydW5MaW1pdCsrOworICAgICAgICAgICAgfQorCisgICAgICAgIGl0ZXIuc2V0KHJ1blN0YXJ0LCBydW5MaW1pdCwgcnVuLCBzdHlsZSk7CisgICAgfQorCisvKioKKyogUmVwbGFjZSBwYXJhZ3JhcGggYnJlYWtzL3N0eWxlcyBiZXR3ZWVuIHN0YXJ0IGFuZCBsZW5ndGggd2l0aCBwYXJhZ3JhcGggYnJlYWtzL3N0eWxlcworKiBmcm9tIDx0dD5zcmNUZXh0PC90dD4uCisqIEBwYXJhbSBzdGFydCBhbiBvZmZzZXQgaW50byB0aGUgdGV4dAorKiBAcGFyYW0gbGltaXQgdGhlIGluZGV4IGFmdGVyIHRoZSBsYXN0IGNoYXJhY3RlciB0byByZXBsYWNlCisqIEBwYXJhbSBzcmNUZXh0IHRoZSB0ZXh0IGZyb20gd2hpY2ggbmV3IHBhcmFncmFwaHMgYXJlIHRha2VuCisqIEBwYXJhbSBzcmNTdGFydCB0aGUgc3RhcnQgb2YgdGhlIHJhbmdlIGluIDxjb2RlPnNyY1RleHQ8L2NvZGU+IHRvIGNvcHkKKyogQHBhcmFtIHNyY0xpbWl0IHRoZSBmaXJzdCBpbmRleCBhZnRlciB0aGUgcmFuZ2UgaW4gPGNvZGU+c3JjVGV4dDwvY29kZT4gdG8gY29weQorKi8KKyAgICBwdWJsaWMgdm9pZCByZXBsYWNlKGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIE1Db25zdFRleHQgc3JjVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzcmNMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludFtdIGRhbWFnZWRSYW5nZSkgeworCisgICAgICAgIGZpbmFsIGludCBpbnNMZW5ndGggPSBzcmNMaW1pdCAtIHNyY1N0YXJ0OworICAgICAgICBpZiAoaW5zTGVuZ3RoIDwgMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJpbnZhbGlkIHJhbmdlIik7CisgICAgICAgIH0KKyAgICAgICAgZmluYWwgaW50IG9yaWdMZW5ndGggPSBmUnVuQXJyYXkuZ2V0Q3VyVGV4dExlbmd0aCgpOworICAgICAgICBkZWxldGVUZXh0KHN0YXJ0LCBsaW1pdCwgZGFtYWdlZFJhbmdlKTsKKworICAgICAgICBpZiAoaW5zTGVuZ3RoID09IDApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZmluYWwgaW50IG9sZFBvc0VuZCA9IGZSdW5BcnJheS5mUG9zRW5kOworICAgICAgICBBdHRyaWJ1dGVNYXAgb3JpZ1N0eWxlOworICAgICAgICBpZiAobGltaXQgPCBvcmlnTGVuZ3RoKSB7CisgICAgICAgICAgICBvcmlnU3R5bGUgPSAoZlJ1bkFycmF5LmZQb3NFbmQ+PTApPyBmU3R5bGVUYWJsZVtmUnVuQXJyYXkuZlBvc0VuZF0gOiBmRmlyc3RTdHlsZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG9yaWdTdHlsZSA9IHNyY1RleHQucGFyYWdyYXBoU3R5bGVBdChzcmNMaW1pdCk7CisgICAgICAgIH0KKworICAgICAgICBpbnQgcGFyYWdyYXBoU3RhcnQgPSBzcmNTdGFydDsKKyAgICAgICAgaW50IGxhc3RQTGltaXQgPSBzcmNUZXh0LnBhcmFncmFwaFN0YXJ0KHNyY0xpbWl0KTsKKyAgICAgICAgYm9vbGVhbiBzZXBhcmF0b3JBdEVuZCA9IGxhc3RQTGltaXQgPiBzcmNTdGFydCAmJiBpc1BhcmFncmFwaEJyZWFrKHNyY1RleHQuYXQobGFzdFBMaW1pdC0xKSk7CisKKyAgICAgICAgaWYgKGxpbWl0ID09IG9yaWdMZW5ndGggJiYgbGFzdFBMaW1pdCA9PSBwYXJhZ3JhcGhTdGFydCkgeworICAgICAgICAgICAgaWYgKGZSdW5BcnJheS5mUG9zRW5kID4gMCkgeworICAgICAgICAgICAgICAgIGZTdHlsZVRhYmxlW2ZSdW5BcnJheS5mUG9zRW5kXSA9IG9yaWdTdHlsZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGZGaXJzdFN0eWxlID0gb3JpZ1N0eWxlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYm9vbGVhbiBmaXJzdFBhc3MgPSB0cnVlOworICAgICAgICAgICAgd2hpbGUgKHBhcmFncmFwaFN0YXJ0IDwgbGFzdFBMaW1pdCkgeworCisgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwIHN0eWxlID0gc3JjVGV4dC5wYXJhZ3JhcGhTdHlsZUF0KHBhcmFncmFwaFN0YXJ0KTsKKyAgICAgICAgICAgICAgICBpbnQgcGFyYWdyYXBoTGltaXQgPSBzcmNUZXh0LnBhcmFncmFwaExpbWl0KHBhcmFncmFwaFN0YXJ0KTsKKworICAgICAgICAgICAgICAgIGlmIChmUnVuQXJyYXkuZlBvc0VuZCsxID49IGZSdW5BcnJheS5mTmVnU3RhcnQpCisgICAgICAgICAgICAgICAgICAgIGV4cGFuZFN0eWxlVGFibGUoKTsKKworICAgICAgICAgICAgICAgIGlmIChmUnVuQXJyYXkuZlBvc0VuZCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghc3R5bGUuZXF1YWxzKGZTdHlsZVRhYmxlW2ZSdW5BcnJheS5mUG9zRW5kXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZTdHlsZVRhYmxlW2ZSdW5BcnJheS5mUG9zRW5kXSA9IHN0eWxlOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0UGFzcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwU3RhcnQgPSBmUnVuQXJyYXkuZlJ1blN0YXJ0W2ZSdW5BcnJheS5mUG9zRW5kXSsxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhbWFnZWRSYW5nZVswXSA9IE1hdGgubWluKGRhbWFnZWRSYW5nZVswXSwgcFN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmICghc3R5bGUuZXF1YWxzKGZGaXJzdFN0eWxlKSkgeworICAgICAgICAgICAgICAgICAgICBmRmlyc3RTdHlsZSA9IHN0eWxlOworICAgICAgICAgICAgICAgICAgICBkYW1hZ2VkUmFuZ2VbMF0gPSAwOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZpcnN0UGFzcyA9IGZhbHNlOworCisgICAgICAgICAgICAgICAgaWYgKHBhcmFncmFwaExpbWl0IDwgbGFzdFBMaW1pdCB8fCBzZXBhcmF0b3JBdEVuZCkgeworICAgICAgICAgICAgICAgICAgICBmUnVuQXJyYXkuZlJ1blN0YXJ0WysrZlJ1bkFycmF5LmZQb3NFbmRdID0gcGFyYWdyYXBoTGltaXQgLSAxICsgc3RhcnQgLSBzcmNTdGFydDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcGFyYWdyYXBoU3RhcnQgPSBwYXJhZ3JhcGhMaW1pdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChmUnVuQXJyYXkuZlBvc0VuZCAhPSBvbGRQb3NFbmQpIHsKKyAgICAgICAgICAgICAgICBmU3R5bGVUYWJsZVtmUnVuQXJyYXkuZlBvc0VuZF0gPSBvcmlnU3R5bGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmUnVuQXJyYXkuYWRkVG9DdXJUZXh0TGVuZ3RoKGluc0xlbmd0aCk7CisgICAgfQorCisvKioKKyogTW9kaWZ5IHRoZSBzdHlsZSBvZiBhbGwgcGFyYWdyYXBocyBjb250YWluaW5nIG9mZnNldHMgaW4gdGhlIHJhbmdlIFtzdGFydCwgbGltaXQpIHRvCisqIDx0dD5zdHlsZTwvdHQ+LgorKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBtb2RpZnlQYXJhZ3JhcGhTdHlsZXMoaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0eWxlTW9kaWZpZXIgbW9kaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludFtdIGRhbWFnZWRSYW5nZSkgIHsKKworICAgICAgICBpbnQgcnVuID0gZlJ1bkFycmF5LmZpbmRSdW5Db250YWluaW5nKHN0YXJ0LTEpOworICAgICAgICBpbnQgY3VycmVudFBTdGFydDsKKyAgICAgICAgaWYgKHJ1biA9PSAtMSkgeworICAgICAgICAgICAgY3VycmVudFBTdGFydCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjdXJyZW50UFN0YXJ0ID0gZlJ1bkFycmF5LmdldExvZ2ljYWxSdW5TdGFydChydW4pICsgMTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2xlYW4gbW9kaWZpZWRBbnl3aGVyZSA9IGZhbHNlOworCisgICAgICAgIGZvciAoOzspIHsKKworICAgICAgICAgICAgYm9vbGVhbiBtb2RpZmllZCA9IGZhbHNlOworCisgICAgICAgICAgICBpZiAocnVuIDwgMCkgeworCisgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwIG5ld1N0eWxlID0gbW9kaWZpZXIubW9kaWZ5U3R5bGUoZkZpcnN0U3R5bGUpOworCisgICAgICAgICAgICAgICAgaWYgKCFuZXdTdHlsZS5lcXVhbHMoZkZpcnN0U3R5bGUpKSB7CisgICAgICAgICAgICAgICAgICAgIGZGaXJzdFN0eWxlID0gbmV3U3R5bGU7CisgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKworICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBuZXdTdHlsZSA9IG1vZGlmaWVyLm1vZGlmeVN0eWxlKGZTdHlsZVRhYmxlW3J1bl0pOworCisgICAgICAgICAgICAgICAgaWYgKCFmU3R5bGVUYWJsZVtydW5dLmVxdWFscyhuZXdTdHlsZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZlN0eWxlVGFibGVbcnVuXSA9IG5ld1N0eWxlOworICAgICAgICAgICAgICAgICAgICBtb2RpZmllZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocnVuID09IGZSdW5BcnJheS5mUG9zRW5kKSB7CisgICAgICAgICAgICAgICAgcnVuID0gZlJ1bkFycmF5LmZOZWdTdGFydDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJ1bisrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpbnQgbmV4dFBTdGFydDsKKyAgICAgICAgICAgIGlmIChydW4gPT0gZlJ1bkFycmF5LmdldEFycmF5TGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBuZXh0UFN0YXJ0ID0gZlJ1bkFycmF5LmdldEN1clRleHRMZW5ndGgoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG5leHRQU3RhcnQgPSBmUnVuQXJyYXkuZ2V0TG9naWNhbFJ1blN0YXJ0KHJ1bikgKyAxOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobW9kaWZpZWQpIHsKKyAgICAgICAgICAgICAgICBtb2RpZmllZEFueXdoZXJlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBkYW1hZ2VkUmFuZ2VbMF0gPSBNYXRoLm1pbihkYW1hZ2VkUmFuZ2VbMF0sIGN1cnJlbnRQU3RhcnQpOworICAgICAgICAgICAgICAgIGRhbWFnZWRSYW5nZVsxXSA9IE1hdGgubWF4KGRhbWFnZWRSYW5nZVsxXSwgbmV4dFBTdGFydCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChsaW1pdCA8PSBuZXh0UFN0YXJ0KSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50UFN0YXJ0ID0gbmV4dFBTdGFydDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBtb2RpZmllZEFueXdoZXJlOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgZHVtcFBhcmFncmFwaFN0YXJ0cyhQYXJhZ3JhcGhCdWZmZXIgc3QpIHsKKworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImZSdW5BcnJheS5mUG9zRW5kPSIrc3QuZlJ1bkFycmF5LmZQb3NFbmQrIiwgZlJ1bkFycmF5LmZOZWdTdGFydD0iK3N0LmZSdW5BcnJheS5mTmVnU3RhcnQrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgZlJ1bkFycmF5LmdldEFycmF5TGVuZ3RoKCk9IitzdC5mUnVuQXJyYXkuZ2V0QXJyYXlMZW5ndGgoKSsiLCBmUnVuQXJyYXkuZ2V0Q3VyVGV4dExlbmd0aCgpPSIrc3QuZlJ1bkFycmF5LmdldEN1clRleHRMZW5ndGgoKSk7CisKKyAgICAgICAgaW50IGk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIlBvc2l0aXZlczogIik7CisgICAgICAgIGZvciAoaT0wOyBpPD1zdC5mUnVuQXJyYXkuZlBvc0VuZDsgaSsrKQorICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChzdC5mUnVuQXJyYXkuZlJ1blN0YXJ0W2ldKyIgIik7CisKKyAgICAgICAgU3lzdGVtLm91dC5wcmludCgiICAgTmVnYXRpdmVzOiAiKTsKKyAgICAgICAgZm9yIChpPXN0LmZSdW5BcnJheS5mTmVnU3RhcnQ7IGk8c3QuZlJ1bkFycmF5LmdldEFycmF5TGVuZ3RoKCk7IGkrKykKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoc3QuZlJ1bkFycmF5LmZSdW5TdGFydFtpXSsiICIpOworCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICIpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBrTm9SdW4gPSAtNDI7IC8vIGl0ZXJhdG9yIHVzZQorCisgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBQYXJhZ3JhcGhJdGVyYXRvciAvKmltcGxlbWVudHMgTVBhcmFncmFwaEl0ZXJhdG9yKi8KKyAgICB7CisgICAgICAgIFBhcmFncmFwaEl0ZXJhdG9yKGludCBzdGFydCwgaW50IGxpbWl0KQorICAgICAgICB7CisgICAgICAgICAgICByZXNldChzdGFydCwgbGltaXQsIHN0YXJ0KTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHJlc2V0KGludCBzdGFydCwgaW50IGxpbWl0LCBpbnQgcG9zKQorICAgICAgICB7CisgICAgICAgICAgICBmU3RhcnQgPSBzdGFydDsKKyAgICAgICAgICAgIGZMaW1pdCA9IGxpbWl0OworICAgICAgICAgICAgc2V0SXRlcmF0b3IoZlN0YXJ0LCB0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzVmFsaWQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZkN1cnJlbnRSdW4gIT0ga05vUnVuOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgbmV4dCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChmUnVuTGltaXQgPCBmTGltaXQpIHsKKyAgICAgICAgICAgICAgICBmQ3VycmVudFJ1bisrOworICAgICAgICAgICAgICAgIHNldEl0ZXJhdG9yVXNpbmdSdW4oZkN1cnJlbnRSdW4sIHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNldCgwLCAwLCBrTm9SdW4sIG51bGwpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgcHJldigpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChmUnVuU3RhcnQgPiBmU3RhcnQpIHsKKyAgICAgICAgICAgICAgICBmQ3VycmVudFJ1bi0tOworICAgICAgICAgICAgICAgIHNldEl0ZXJhdG9yVXNpbmdSdW4oZkN1cnJlbnRSdW4sIHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNldCgwLCAwLCBrTm9SdW4sIG51bGwpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgc2V0KGludCBwb3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChwb3MgPj0gZlN0YXJ0ICYmIHBvcyA8IGZMaW1pdCkgeworICAgICAgICAgICAgICAgIHNldEl0ZXJhdG9yKHBvcywgdGhpcyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNldCgwLCAwLCBrTm9SdW4sIG51bGwpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUGFyYWdyYXBoQnVmZmVyIGNhbGxzIGJhY2sgb24gdGhpcyB0byBzZXQgaXRlcmF0b3JzCisgICAgICAgIHZvaWQgc2V0KGludCBzdGFydCwgaW50IGxpbWl0LCBpbnQgY3VycmVudFJ1biwgQXR0cmlidXRlTWFwIHN0eWxlKQorICAgICAgICB7CisgICAgICAgICAgICBmUnVuU3RhcnQgPSBzdGFydCA8IGZTdGFydCA/IGZTdGFydCA6IHN0YXJ0OworICAgICAgICAgICAgZlJ1bkxpbWl0ID0gbGltaXQgPiBmTGltaXQgPyBmTGltaXQgOiBsaW1pdDsKKyAgICAgICAgICAgIGZDdXJyZW50UnVuID0gY3VycmVudFJ1bjsKKyAgICAgICAgICAgIGZTdHlsZSA9IHN0eWxlOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgcmVzZXQoaW50IHN0YXJ0LCBpbnQgbGltaXQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlc2V0KHN0YXJ0LCBsaW1pdCwgc3RhcnQpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgZmlyc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBzZXQoZlN0YXJ0KTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIGxhc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBzZXQoZkxpbWl0IC0gMSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IHJhbmdlU3RhcnQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZlN0YXJ0OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCByYW5nZUxpbWl0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZMaW1pdDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgcmFuZ2VMZW5ndGgoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZkxpbWl0IC0gZlN0YXJ0OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBydW5TdGFydCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmUnVuU3RhcnQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IHJ1bkxpbWl0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZSdW5MaW1pdDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgcnVuTGVuZ3RoKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZSdW5MaW1pdCAtIGZSdW5TdGFydDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBBdHRyaWJ1dGVNYXAgc3R5bGUoKSB7CisKKyAgICAgICAgICAgIHJldHVybiBmU3R5bGU7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIGludCBmU3RhcnQ7CisgICAgICAgIHByaXZhdGUgaW50IGZMaW1pdDsKKyAgICAgICAgcHJpdmF0ZSBpbnQgZlJ1blN0YXJ0OworICAgICAgICBwcml2YXRlIGludCBmUnVuTGltaXQ7CisgICAgICAgIHByaXZhdGUgaW50IGZDdXJyZW50UnVuOworICAgICAgICBwcml2YXRlIEF0dHJpYnV0ZU1hcCBmU3R5bGU7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9SdW5BcnJheS5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9SdW5BcnJheS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjdlMThmMDMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L1J1bkFycmF5LmphdmEKQEAgLTAsMCArMSwyODIgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFJ1bkFycmF5LmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDU6MTAgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8qKgorKiBUaGlzIGNsYXNzIG1haW50YWlucyBpbnRlcnZhbHMgd2l0aGluIGEgcGllY2Ugb2YgdGV4dC4gIEludGVydmFsIGJvdW5kYXJpZXMKKyogYXJlIHN0b3JlZCBpbiB0aGUgZlJ1blN0YXJ0IGFycmF5LiAgSW50ZXJ2YWwgYm91bmRhcmllcyBtYXkgaGF2ZSBhCisqIHBvc2l0aXZlIG9yIG5lZ2F0aXZlIHJlcHJlc2VudGF0aW9uLiAgQSBwb3NpdGl2ZSBib3VuZGFyeSBpcyBnaXZlbiBhcyBhbiBvZmZzZXQKKyogZnJvbSAwLiAgQSBuZWdhdGl2ZSBib3VuZGFyeSBpcyBnaXZlbiBhcyBhIG5lZ2F0aXZlIG9mZnNldCBmcm9tIHRoZSBuZWQgb2YgdGhlIHRleHQuCisqIFRoZSBSdW5BcnJheSBzdG9yZXMgcG9zaXRpdmUgYm91bmRhcmllcyBpbiB0aGUgZW50cmllcyBbMCwgZlBvc0VuZF0sIGFuZCBuZWdhdGl2ZQorKiBib3VuZGFyaWVzIGluIHRoZSBlbnRyaWVzIFtmTmVnU3RhcnQsIGZMZW5ndGgpLiAgTmV3IGJvdW5kYXJpZXMgbWF5IGJlIGluc2VydGVkIGludG8KKyogdGhlIHVuZGVmaW5lZCBtaWRkbGUgb2YgdGhlIFJ1bkFycmF5LiAgSWYgZlBvc0VuZCA8IDAsIHRoZXJlIGFyZSBubyBwb3NpdGl2ZSBlbnRyaWVzLgorKiBJZiBmTmVnU3RhcnQgPj0gZlJ1bkFycmF5Lmxlbmd0aCwgdGhlcmUgYXJlIG5vIG5lZ2F0aXZlIG5ldHJpZXMuICBJdCdzIHBvc3NpYmxlIHRvIGhhdmUKKyogYSBydW5hcnJheSB3aXRoIG5laXRoZXIgcG9zaXRpdmUgb3IgbmVnYXRpdmUgZW50cmllcy4KKyoKKyogQXMgYW4gZXhhbXBsZSBvZiBob3cgdGhlIFJ1bkFycmF5IHdvcmtzLCBjb25zaWRlciBhIHBpZWNlIG9mIHRleHQgd2l0aCA1IGludGVydmFscywKKyogd2hlcmUgZWFjaCBpbnRlcnZhbCBpcyAzIGNoYXJhY3RlcnMgaW4gbGVuZ3RoLiAgVGhlIFJ1bkFycmF5IGZvciB0aGlzIHRleHQgY291bGQKKyogbG9vayBsaWtlOgorKiAgICBmQ3VyVGV4dExlbmd0aCA9IDE1LCBmUG9zRW5kID0gNSwgZk5lZ1N0YXJ0ID0gMTAsCisqICAgIGZSdW5TdGFydCA9IHsgMCwgMywgNiwgOSwgMTIsIFUsIFUsIFUsIFUsIFUgfTsKKyogd2hlcmUgVSBpcyBhbiB1bmRlZmluZWQgYXJyYXkgZWxlbWVudC4KKworKiBBbiBlcXVpdmFsZW50IHJlcHJlc2VudGF0aW9uIHdvdWxkIGJlOgorKiAgICBmQ3VyVGV4dExlbmd0aCA9IDE1LCBmUG9zRW5kID0gMywgZk5lZ1N0YXJ0ID0gOCwKKyogICAgZlJ1blN0YXJ0ID0geyAwLCAzLCA2LCBVLCBVLCBVLCBVLCBVLCAtNiwgLTMgfTsKKyoKKyogVGhlIFJ1bkFycmF5IGNsYXNzIGlzIHVzZWQgaW4gdGhlIFN0eWxlQnVmZmVyIGFuZCB0aGUgUGFyYWdyYXBoQnVmZmVyLiAgSW4gdGhlIFN0eWxlQnVmZmVyLAorKiB0aGUgZW50cmllcyBpbiBmUnVuU3RhcnQgZ2l2ZSB0aGUgb2Zmc2V0cyB3aGVyZSBzdHlsZSBydW5zIGJlZ2luLiAgSW4gdGhlCisqIFBhcmFncmFwaEJ1ZmZlciwgdGhlIGZSdW5TdGFydCBlbnRyaWVzIHN0b3JlIG9mZnNldHMgb2YgcGFyYWdyYXBoIGJyZWFrcy4KKyoKKyogVGhpcyBjbGFzcyBwcm92aWRlcyBtZXRob2RzIGZvciBzaGlmdGluZyB0aGUgcnVuIHRhYmxlIHRvIGEgcGFydGljdWxhciBwb3NpdGlvbiwgZXhwYW5kaW5nIHRoZQorKiBydW4gdGFibGUsIGFuZCByZXR1cm5pbmcgdGhlIGluZGV4IG9mIHRoZSBydW4gY29udGFpbmluZyBhIHBhcnRpY3VsYXIgb2Zmc2V0IGluIHRoZSB0ZXh0LiAgQWxsCisqIG90aGVyIGZ1bmN0aW9uYWxpdHkgaXMgaW1wbGVtZW50ZWQgaW4gdGhlIFJ1bkFycmF5IGNsaWVudHMuCisqCisqIFJ1bkFycmF5IHVzZXMgRmFzdEludEJpbmFyeVNlYXJjaCBmb3Igc2VhcmNoZXMuICBUaGUgc2VhcmNoZXMgYXJlIGNvbnN0cnVjdGVkIG9uIGRlbWFuZCBpbgorKiB0aGUgZmluZFJ1bkNvbnRhaW5pbmcgbWV0aG9kLiAgVGhlIHNlYXJjaGVzIGFyZSBpbnZhbGlkYXRlZCB3aGVuIHRoZSBydW4gYXJyYXkgaXMgc2hpZnRlZDsKKyogaG93ZXZlciwgdGhlIFJ1bkFycmF5IGNhbiBiZSBtb2RpZmllZCBieSBvdGhlciBjbGFzc2VzLiAgVGh1cywgaWYgYW5vdGhlciBjbGFzcyBtb2RpZmllcworKiB0aGUgZW50cmllcyBpbiBmUnVuQXJyYXksIG9yIG1vZGlmaWVzIGZQb3NFbmQgb3IgZk5lZ1N0YXJ0LCBpdCBpcyByZXNwb25zaWJsZSBmb3IKKyogY2FsbGluZyBydW5TdGFydHNDaGFuZ2VkLgorKi8KKworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQ7CisKK2ltcG9ydCBqYXZhLmlvLkV4dGVybmFsaXphYmxlOworaW1wb3J0IGphdmEuaW8uT2JqZWN0SW5wdXQ7CitpbXBvcnQgamF2YS5pby5PYmplY3RPdXRwdXQ7CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworZmluYWwgY2xhc3MgUnVuQXJyYXkgaW1wbGVtZW50cyBFeHRlcm5hbGl6YWJsZSB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDIyMzU2OTM0OworCisgICAgaW50W10gZlJ1blN0YXJ0OworICAgIHByaXZhdGUgaW50IGZDdXJUZXh0TGVuZ3RoOworICAgIGludCBmUG9zRW5kLCBmTmVnU3RhcnQ7CisgICAgCisgICAgdHJhbnNpZW50IHByaXZhdGUgRmFzdEludEJpbmFyeVNlYXJjaCBmUG9zU2VhcmNoOworICAgIHRyYW5zaWVudCBwcml2YXRlIGJvb2xlYW4gZlBvc1NlYXJjaFZhbGlkOworICAgIHRyYW5zaWVudCBwcml2YXRlIEZhc3RJbnRCaW5hcnlTZWFyY2ggZk5lZ1NlYXJjaDsKKyAgICB0cmFuc2llbnQgcHJpdmF0ZSBib29sZWFuIGZOZWdTZWFyY2hWYWxpZDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDVVJSRU5UX1ZFUlNJT04gPSAxOworCisgICAgUnVuQXJyYXkoaW50IGluaXRpYWxTaXplLCBpbnQgY3VyVGV4dExlbmd0aCkgeworCisgICAgICAgIGZSdW5TdGFydCA9IG5ldyBpbnRbaW5pdGlhbFNpemVdOworICAgICAgICBmQ3VyVGV4dExlbmd0aCA9IGN1clRleHRMZW5ndGg7CisgICAgICAgIGZQb3NFbmQgPSAtMTsKKyAgICAgICAgZk5lZ1N0YXJ0ID0gaW5pdGlhbFNpemU7CisgICAgICAgIAorICAgICAgICBmUG9zU2VhcmNoID0gbmV3IEZhc3RJbnRCaW5hcnlTZWFyY2goZlJ1blN0YXJ0LCAwLCAxKTsKKyAgICAgICAgZk5lZ1NlYXJjaCA9IG5ldyBGYXN0SW50QmluYXJ5U2VhcmNoKGZSdW5TdGFydCwgMCwgMSk7CisgICAgICAgIGZQb3NTZWFyY2hWYWxpZCA9IGZOZWdTZWFyY2hWYWxpZCA9IGZhbHNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIE5vdGU6IHRoaXMgY29uc3RydWN0b3IgaXMgT05MWSBmb3IgdXNlIGJ5IHRoZSBTZXJpYWxpemF0aW9uCisgICAgICogbWVjaGFuaXNtLiAgSXQgZG9lcyBub3QgbGVhdmUgdGhpcyBvYmplY3QgaW4gYSB2YWxpZCBzdGF0ZSEKKyAgICAgKi8KKyAgICBwdWJsaWMgUnVuQXJyYXkoKSB7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgd3JpdGVFeHRlcm5hbChPYmplY3RPdXRwdXQgb3V0KSB0aHJvd3MgSU9FeGNlcHRpb24geworCisgICAgICAgIG91dC53cml0ZUludChDVVJSRU5UX1ZFUlNJT04pOworICAgICAgICBvdXQud3JpdGVPYmplY3QoZlJ1blN0YXJ0KTsKKyAgICAgICAgb3V0LndyaXRlSW50KGZDdXJUZXh0TGVuZ3RoKTsKKyAgICAgICAgb3V0LndyaXRlSW50KGZQb3NFbmQpOworICAgICAgICBvdXQud3JpdGVJbnQoZk5lZ1N0YXJ0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZWFkRXh0ZXJuYWwoT2JqZWN0SW5wdXQgaW4pIHRocm93cyBJT0V4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiB7CisKKyAgICAgICAgaWYgKGluLnJlYWRJbnQoKSAhPSBDVVJSRU5UX1ZFUlNJT04pIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiSW52YWxpZCB2ZXJzaW9uIG9mIFJ1bkFycmF5Iik7CisgICAgICAgIH0KKyAgICAgICAgZlJ1blN0YXJ0ID0gKGludFtdKSBpbi5yZWFkT2JqZWN0KCk7CisgICAgICAgIGZDdXJUZXh0TGVuZ3RoID0gaW4ucmVhZEludCgpOworICAgICAgICBmUG9zRW5kID0gaW4ucmVhZEludCgpOworICAgICAgICBmTmVnU3RhcnQgPSBpbi5yZWFkSW50KCk7CisgICAgICAgIAorICAgICAgICBmUG9zU2VhcmNoID0gbmV3IEZhc3RJbnRCaW5hcnlTZWFyY2goZlJ1blN0YXJ0LCAwLCAxKTsKKyAgICAgICAgZk5lZ1NlYXJjaCA9IG5ldyBGYXN0SW50QmluYXJ5U2VhcmNoKGZSdW5TdGFydCwgMCwgMSk7CisgICAgICAgIGZQb3NTZWFyY2hWYWxpZCA9IGZOZWdTZWFyY2hWYWxpZCA9IGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0Q3VyVGV4dExlbmd0aCgpIHsKKworICAgICAgICByZXR1cm4gZkN1clRleHRMZW5ndGg7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0Q3VyVGV4dExlbmd0aChpbnQgY3VyVGV4dExlbmd0aCkgeworCisgICAgICAgIGZDdXJUZXh0TGVuZ3RoID0gY3VyVGV4dExlbmd0aDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBhZGRUb0N1clRleHRMZW5ndGgoaW50IGRlbHRhKSB7CisKKyAgICAgICAgZkN1clRleHRMZW5ndGggKz0gZGVsdGE7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcnVuU3RhcnRzQ2hhbmdlZCgpIHsKKworICAgICAgICBmUG9zU2VhcmNoVmFsaWQgPSBmTmVnU2VhcmNoVmFsaWQgPSBmYWxzZTsKKyAgICB9CisKKy8qKgorKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCB2YWxpZCBydW4uCisqLworICAgIGludCBsYXN0UnVuKCkgeworCisgICAgICAgIHJldHVybiAoZk5lZ1N0YXJ0ID09IGZSdW5TdGFydC5sZW5ndGgpPyBmUG9zRW5kIDogZlJ1blN0YXJ0Lmxlbmd0aC0xOworICAgIH0KKworLyoqCisqIFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgcnVuIGFycmF5LiAgUmVwbGFjZXMgb2xkIGZMZW5ndGggbWVtYmVyLgorKi8KKyAgICBpbnQgZ2V0QXJyYXlMZW5ndGgoKSB7CisKKyAgICAgICAgcmV0dXJuIGZSdW5TdGFydC5sZW5ndGg7CisgICAgfQorCisvKioKKyogU2hpZnRzIHN0eWxlIHRhYmxlIHN1Y2ggdGhhdCB0aGUgbGFzdCBwb3NpdGl2ZSBydW4KKyogc3RhcnRzIGJlZm9yZSBwb3MuCisqLworICAgIHZvaWQgc2hpZnRUYWJsZVRvKGludCBwb3MpIHsKKworICAgICAgICBpbnQgb2xkUG9zRW5kID0gZlBvc0VuZDsKKworICAgICAgICB3aGlsZSAoZlBvc0VuZCA+PSAwICYmIGZSdW5TdGFydFtmUG9zRW5kXSA+PSBwb3MpIHsKKworICAgICAgICAgICAgZk5lZ1N0YXJ0LS07CisgICAgICAgICAgICBmUnVuU3RhcnRbZk5lZ1N0YXJ0XSA9IGZSdW5TdGFydFtmUG9zRW5kXSAtIGZDdXJUZXh0TGVuZ3RoOworICAgICAgICAgICAgZlBvc0VuZC0tOworCisgICAgICAgIH0KKworICAgICAgICBwb3MgLT0gZkN1clRleHRMZW5ndGg7CisKKyAgICAgICAgd2hpbGUgKGZOZWdTdGFydDxmUnVuU3RhcnQubGVuZ3RoICYmIGZSdW5TdGFydFtmTmVnU3RhcnRdIDwgcG9zKSB7CisKKyAgICAgICAgICAgIGZQb3NFbmQrKzsKKyAgICAgICAgICAgIGZSdW5TdGFydFtmUG9zRW5kXSA9IGZSdW5TdGFydFtmTmVnU3RhcnRdICsgZkN1clRleHRMZW5ndGg7CisgICAgICAgICAgICBmTmVnU3RhcnQrKzsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChvbGRQb3NFbmQgIT0gZlBvc0VuZCkgeworICAgICAgICAgICAgZlBvc1NlYXJjaFZhbGlkID0gZk5lZ1NlYXJjaFZhbGlkID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKy8qKgorKiBSZXR1cm5zIGluZGV4IG9mIHN0eWxlIHJ1biBjb250YWluaW5nIHBvcy4gIElmIGZpcnN0IHN0eWxlIHJ1biBzdGFydHMgYmVmb3JlCisqIHBvcywgLTEgaXMgcmV0dXJuZWQuICBJZiBwb3MgaXMgZ3JlYXRlciB0aGFuIHRleHQgbGVuZ3RoLCBsYXN0cnVuIGlzIHJldHVybmVkLgorKi8KKyAgICBpbnQgZmluZFJ1bkNvbnRhaW5pbmcoaW50IHBvcykgeworCisgICAgICAgIEZhc3RJbnRCaW5hcnlTZWFyY2ggc2VhcmNoOworICAgICAgICBmaW5hbCBpbnQgbGVuZ3RoID0gZlJ1blN0YXJ0Lmxlbmd0aDsKKworICAgICAgICBpZiAoZk5lZ1N0YXJ0IDwgbGVuZ3RoICYmIChwb3MtZkN1clRleHRMZW5ndGggPj0gZlJ1blN0YXJ0W2ZOZWdTdGFydF0pKSB7CisKKyAgICAgICAgICAgIHBvcyAtPSBmQ3VyVGV4dExlbmd0aDsKKworICAgICAgICAgICAgaWYgKCFmTmVnU2VhcmNoVmFsaWQpIHsKKyAgICAgICAgICAgICAgICBmTmVnU2VhcmNoLnNldERhdGEoZlJ1blN0YXJ0LCBmTmVnU3RhcnQsIGxlbmd0aC1mTmVnU3RhcnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2VhcmNoID0gZk5lZ1NlYXJjaDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChmUG9zRW5kID49IDApIHsKKworICAgICAgICAgICAgaWYgKCFmUG9zU2VhcmNoVmFsaWQpIHsKKyAgICAgICAgICAgICAgICBmUG9zU2VhcmNoLnNldERhdGEoZlJ1blN0YXJ0LCAwLCBmUG9zRW5kKzEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2VhcmNoID0gZlBvc1NlYXJjaDsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gLTE7CisKKyAgICAgICAgaW50IHJ1biA9IHNlYXJjaC5maW5kSW5kZXgocG9zKTsKKworICAgICAgICByZXR1cm4gcnVuOworICAgIH0KKworICAgIGludCBnZXRMb2dpY2FsUnVuU3RhcnQoaW50IHJ1bikgeworCisgICAgICAgIGlmIChydW4gPT0gLTEpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHJ1biA9PSBmUnVuU3RhcnQubGVuZ3RoKSB7CisgICAgICAgICAgICByZXR1cm4gZkN1clRleHRMZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAocnVuIDw9IGZQb3NFbmQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZlJ1blN0YXJ0W3J1bl07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChydW4gPj0gZk5lZ1N0YXJ0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZSdW5TdGFydFtydW5dICsgZkN1clRleHRMZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIHJ1biIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisvKioKKyogSW5jcmVhc2VzIHNpemUgb2YgcnVuIHRhYmxlLiAgQ3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb3VibGVzIHRoZSBydW4gdGFibGUncyBzaXplLgorKi8KKyAgICB2b2lkIGV4cGFuZFJ1blRhYmxlKCkgeworCisgICAgICAgIHJlc2l6ZVJ1blRhYmxlKGZSdW5TdGFydC5sZW5ndGggKiAyKTsKKyAgICB9CisKKy8qKgorKiBSZXR1cm4gdGhlIG1pbmltdW0gbnVtYmVyIG9mIGVsZW1lbnRzIHBvc3NpYmxlIGluIGZSdW5TdGFydC4KKyovCisgICAgcHJpdmF0ZSBpbnQgZ2V0TWluU2l6ZSgpIHsKKworICAgICAgICByZXR1cm4gTWF0aC5tYXgoZlBvc0VuZCArIChmUnVuU3RhcnQubGVuZ3RoLWZOZWdTdGFydCkgKyAxLCAxKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbXByZXNzKCkgeworCisgICAgICAgIGludCBtaW5TaXplID0gZ2V0TWluU2l6ZSgpOworICAgICAgICBpZiAoZlJ1blN0YXJ0Lmxlbmd0aCA+IG1pblNpemUpIHsKKyAgICAgICAgICAgIHJlc2l6ZVJ1blRhYmxlKG1pblNpemUpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHJlc2l6ZVJ1blRhYmxlKGludCBuZXdTaXplKSB7CisKKyAgICAgICAgaWYgKG5ld1NpemUgPCBnZXRNaW5TaXplKCkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkF0dGVtcHQgdG8gbWFrZSBSdW5BcnJheSB0b28gc21hbGwuIik7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBpbnQgb2xkTGVuZ3RoID0gZlJ1blN0YXJ0Lmxlbmd0aDsKKworICAgICAgICBpbnQgbmV3UnVuU3RhcnRbXSA9IG5ldyBpbnRbbmV3U2l6ZV07CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZlJ1blN0YXJ0LCAwLCBuZXdSdW5TdGFydCwgMCwgZlBvc0VuZCsxKTsKKyAgICAgICAgaW50IG5ld05lZ1N0YXJ0ID0gbmV3UnVuU3RhcnQubGVuZ3RoIC0gKG9sZExlbmd0aC1mTmVnU3RhcnQpOworICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGZSdW5TdGFydCwgZk5lZ1N0YXJ0LCBuZXdSdW5TdGFydCwgbmV3TmVnU3RhcnQsIChvbGRMZW5ndGgtZk5lZ1N0YXJ0KSk7CisKKyAgICAgICAgZk5lZ1N0YXJ0ID0gbmV3TmVnU3RhcnQ7CisgICAgICAgIGZSdW5TdGFydCA9IG5ld1J1blN0YXJ0OworCisgICAgICAgIGZQb3NTZWFyY2hWYWxpZCA9IGZOZWdTZWFyY2hWYWxpZCA9IGZhbHNlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvU3RhbmRhcmRUYWJSdWxlci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9TdGFuZGFyZFRhYlJ1bGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZTBiNTgzZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvU3RhbmRhcmRUYWJSdWxlci5qYXZhCkBAIC0wLDAgKzEsMzc0IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBTdGFuZGFyZFRhYlJ1bGVyLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDU6MTAgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0OworCitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKKworaW1wb3J0IGphdmEuaW8uRXh0ZXJuYWxpemFibGU7CitpbXBvcnQgamF2YS5pby5PYmplY3RJbnB1dDsKK2ltcG9ydCBqYXZhLmlvLk9iamVjdE91dHB1dDsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCisvKioKKyAqIFRoaXMgY2xhc3MgaXMgYSBzdGFuZGFyZCBpbXBsZW1lbnRhdGlvbiBvZiBNVGFiUnVsZXIuCisgKiBJdCBjYW4gaGF2ZSBhIGZpbml0ZSBudW1iZXIgb2YgY2xpZW50LXNwZWNpZmllZCBUYWJTdG9wcy4gIEFmdGVyCisgKiB0aGUgY2xpZW50LXNwZWNpZmllZCBUYWJTdG9wcywgYWxsIFRhYlN0b3BzIGhhdmUgdHlwZQorICogPGNvZGU+VGFiU3RvcC5rQXV0bzwvY29kZT4gYW5kIGFyZSBhdCB0aGUgYXV0b3NwYWNlIGludGVydmFscy4KKyAqIEBzZWUgVGFiU3RvcAorICovCitwdWJsaWMgZmluYWwgY2xhc3MgU3RhbmRhcmRUYWJSdWxlciBleHRlbmRzIE1UYWJSdWxlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50cyBFeHRlcm5hbGl6YWJsZQoreworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENVUlJFTlRfVkVSU0lPTiA9IDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMjIzNTY5MzQ7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBUYWJTdG9wIEFVVE9fWkVSTyA9IG5ldyBUYWJTdG9wKDAsIFRhYlN0b3Aua0F1dG8pOworCisgICAgcHJpdmF0ZSBUYWJTdG9wW10gZlRhYnMgPSBudWxsOworICAgIHByaXZhdGUgaW50IGZBdXRvU3BhY2luZyA9IDM2OyAvLyBldmVyeSAxLzIgaW5jaC4KKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIFN0YW5kYXJkVGFiUnVsZXIgd2l0aCBvbmx5IGF1dG8gdGFicywgd2l0aCBzcGFjaW5nIG9mIDM2LgorICAgICAqLworICAgIHB1YmxpYyBTdGFuZGFyZFRhYlJ1bGVyKCkKKyAgICB7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgU3RhbmRhcmRUYWJSdWxlciB3aXRoIG9ubHkgYXV0byB0YWJzLCB3aXRoIHRoZQorICAgICAqIGdpdmVuIGF1dG9TcGFjaW5nLgorICAgICAqIEBwYXJhbSBhdXRvU3BhY2luZyB0aGUgYXV0b1NwYWNpbmcgZm9yIHRoaXMgdGFiIHJ1bGVyCisgICAgICovCisgICAgcHVibGljIFN0YW5kYXJkVGFiUnVsZXIoaW50IGF1dG9TcGFjaW5nKQorICAgIHsKKyAgICAgICAgZkF1dG9TcGFjaW5nID0gYXV0b1NwYWNpbmc7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgU3RhbmRhcmRUYWJSdWxlci4gIFRoZSBmaXJzdCBUYWJTdG9wcyBvbiB0aGUgcnVsZXIgd2lsbCBiZQorICAgICAqIHRoZSBUYWJTdG9wcyBpbiB0aGUgPGNvZGU+dGFiczwvY29kZT4gYXJyYXkuICBBZnRlciB0aGVzZSB0YWJzIGFsbAorICAgICAqIHRhYnMgYXJlIGF1dG8gdGFicy4KKyAgICAgKiBAcGFyYW0gdGFicyBhbiBhcnJheSBvZiBUYWJTdG9wcy4gIFRoZSBUYWJTdG9wcyBpbiB0aGUgYXJyYXkgbXVzdAorICAgICAqICAgIGJlIGluIHN0cmljdGx5IGluY3JlYXNpbmcgb3JkZXIgKG9mIHBvc2l0aW9ucyksIGFuZCBjYW5ub3QgaGF2ZQorICAgICAqICAgIHR5cGUgPGNvZGU+VGFiU3RvcC5rQXV0bzwvY29kZT4uCisgICAgICogQHBhcmFtIGF1dG9TcGFjaW5nIHRoZSBhdXRvU3BhY2luZyBpbnRlcnZhbCB0byB1c2UgYWZ0ZXIgdGhlIGxhc3QKKyAgICAgKiAgICBjbGllbnQtc3BlY2lmaWVkIHRhYi4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RhbmRhcmRUYWJSdWxlcihUYWJTdG9wW10gdGFicywgaW50IGF1dG9TcGFjaW5nKQorICAgIHsKKyAgICAgICAgaWYgKHRhYnMubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgdmFsaWRhdGVUYWJBcnJheSh0YWJzKTsKKyAgICAgICAgICAgIGZUYWJzID0gKFRhYlN0b3BbXSkgdGFicy5jbG9uZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZlRhYnMgPSBudWxsOworICAgICAgICB9CisgICAgICAgIGZBdXRvU3BhY2luZyA9IGF1dG9TcGFjaW5nOworICAgIH0KKworICAgIC8qKiBUYWJzIGFzIHByb3ZpZGVkLCB0aGVuIGF1dG9TcGFjaW5nIGFmdGVyIHRoZSBsYXN0IHRhYiB0byBldGVybml0eS4gIFVzZSB0aGlzIGNvbnN0cnVjdG9yIHdoZW4KKyAgICAgICAgbXVuZ2luZyBhIHJ1bGVyLCBpdCBkb2VzIG5vIHZhbGlkYXRpb24gb24gdGhlIHRhYnMgaW4gdGhlIHZlY3Rvci4gVmVjdG9yIG1heSBub3QgYmUgbnVsbC4gKi8KKworICAgIC8qcHVibGljKi8gU3RhbmRhcmRUYWJSdWxlcihWZWN0b3IgdiwgaW50IGF1dG9TcGFjaW5nKQorICAgIHsKKyAgICAgICAgZlRhYnMgPSB0YWJBcnJheUZyb21WZWN0b3Iodik7CisgICAgICAgIGZBdXRvU3BhY2luZyA9IGF1dG9TcGFjaW5nOworICAgIH0KKworICAgIC8qKiBDb25zdHJ1Y3QgZnJvbSBhbm90aGVyIHJ1bGVyLiBObyB2YWxpZGF0aW9uLiBSdWxlciBtYXkgbm90IGJlIG51bGwuICovCisKKyAgICAvKnB1YmxpYyovIFN0YW5kYXJkVGFiUnVsZXIoTVRhYlJ1bGVyIHJ1bGVyKQorICAgIHsKKyAgICAgICAgaWYgKHJ1bGVyID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInJ1bGVyIG1heSBub3QgYmUgbnVsbCIpOworICAgICAgICB9CisKKyAgICAgICAgZlRhYnMgPSB0YWJBcnJheUZyb21WZWN0b3IodmVjdG9yRnJvbVRhYlJ1bGVyKHJ1bGVyKSk7CisgICAgICAgIGZBdXRvU3BhY2luZyA9IHJ1bGVyLmF1dG9TcGFjaW5nKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcmVhZEV4dGVybmFsKE9iamVjdElucHV0IGluKSB0aHJvd3MgSU9FeGNlcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzTm90Rm91bmRFeGNlcHRpb24geworCisgICAgICAgIGludCB2ZXJzaW9uID0gaW4ucmVhZEludCgpOworICAgICAgICBpZiAodmVyc2lvbiAhPSBDVVJSRU5UX1ZFUlNJT04pIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiSW52YWxpZCB2ZXJzaW9uIG9mIFN0eWxlZFRleHQ6ICIgKyB2ZXJzaW9uKTsKKyAgICAgICAgfQorICAgICAgICBmVGFicyA9IChUYWJTdG9wW10pIGluLnJlYWRPYmplY3QoKTsKKyAgICAgICAgZkF1dG9TcGFjaW5nID0gaW4ucmVhZEludCgpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHdyaXRlRXh0ZXJuYWwoT2JqZWN0T3V0cHV0IG91dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKworICAgICAgICBvdXQud3JpdGVJbnQoQ1VSUkVOVF9WRVJTSU9OKTsKKyAgICAgICAgb3V0LndyaXRlT2JqZWN0KGZUYWJzKTsKKyAgICAgICAgb3V0LndyaXRlSW50KGZBdXRvU3BhY2luZyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGZpcnN0IHRhYiBpbiB0aGUgcnVsZXIuICBJZiBhbiBhdXRvVGFiLCBpdCBpcyBhdCBwb3NpdGlvbiB6ZXJvLCBhbmQKKyAgICAgKiBhbGwgc3Vic2VxdWVudCB0YWJzIHdpbGwgYmUgYXV0b3RhYnMgYXQgYXV0b1NwYWNpbmcgaW50ZXJ2YWxzLgorICAgICAqLworICAgIHB1YmxpYyBUYWJTdG9wIGZpcnN0VGFiKCkKKyAgICB7CisgICAgICAgIGlmIChmVGFicyAhPSBudWxsICYmIGZUYWJzLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIHJldHVybiBmVGFic1swXTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBBVVRPX1pFUk87CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBmaXJzdCB0YWIgaW4gdGhlIHJ1bGVyIHdpdGggZlBvc2l0aW9uID4gcG9zaXRpb24uICBJZiBpdCBpcyBhbgorICAgICAqIGF1dG90YWIsIGl0IGlzIGF0IGFuIGluY3JlbWVudCBvZiBhdXRvU3BhY2luZywgYW5kIGFsbCBzdWJzZXF1ZW50IHRhYnMgd2lsbCBiZQorICAgICAqIGF1dG90YWJzIGF0IGF1dG9TcGFjaW5nIGludGVydmFscy4KKyAgICAgKiBAcGFyYW0gcG9zaXRpb24gdGhlIHBvc2l0aW9uIG9mIHRoZSBUYWJTdG9wIHJldHVybmVkIHdpbGwgYmUgZ3JlYXRlciB0aGFuIHRoaXMgcGFyYW1ldGVyCisgICAgICovCisgICAgcHVibGljIFRhYlN0b3AgbmV4dFRhYihpbnQgcG9zaXRpb24pCisgICAgeworICAgICAgICBpZiAoZlRhYnMgIT0gbnVsbCkgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmVGFicy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChwb3NpdGlvbiA8IGZUYWJzW2ldLmdldFBvc2l0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmVGFic1tpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChwb3NpdGlvbiA+PSA0MDAwKSB7IC8vIGRlYnVnOiBzYW5pdHkgY2hlY2sKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiYXV0byB0YWIgcGFzdCA0MDAwIik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IFRhYlN0b3AoKChwb3NpdGlvbiAvIGZBdXRvU3BhY2luZykgKyAxKSAqIGZBdXRvU3BhY2luZywgVGFiU3RvcC5rQXV0byk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBpbnRlcnZhbCBmb3IgYXV0b3RhYnMuCisgICAgICovCisgICAgcHVibGljIGludCBhdXRvU3BhY2luZygpCisgICAgeworICAgICAgICByZXR1cm4gZkF1dG9TcGFjaW5nOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBhcmUgdGhpcyB0byBhbm90aGVyIE9iamVjdC4gUmV0dXJucyB0cnVlIGlmIHRoZSBvYmplY3QKKyAgICAgKiBpcyBhbiBNVGFiUnVsZXIgd2l0aCB0aGUgc2FtZSBhdXRvU3BhY2luZyBhbmQgdGFicy4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG8pCisgICAgeworICAgICAgICBpZiAobyA9PSB0aGlzKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChvID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgTVRhYlJ1bGVyIHJoczsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJocyA9IChNVGFiUnVsZXIpbzsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChDbGFzc0Nhc3RFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZBdXRvU3BhY2luZyAhPSByaHMuYXV0b1NwYWNpbmcoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBUYWJTdG9wIHJoc1RhYiA9IHJocy5maXJzdFRhYigpOworCisgICAgICAgIGlmIChmVGFicyAhPSBudWxsKSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZUYWJzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFmVGFic1tpXS5lcXVhbHMocmhzVGFiKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgcmhzVGFiID0gcmhzLm5leHRUYWIocmhzVGFiLmdldFBvc2l0aW9uKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJoc1RhYi5nZXRUeXBlKCkgPT0gVGFiU3RvcC5rQXV0bzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gZGVidWcgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyB0YWIgcnVsZXIuCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCisgICAgeworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZCgiIGF1dG86ICIpOworICAgICAgICBidWZmZXIuYXBwZW5kKEludGVnZXIudG9TdHJpbmcoZkF1dG9TcGFjaW5nKSk7CisKKyAgICAgICAgaWYgKGZUYWJzICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZlRhYnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGZUYWJzW2ldLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKiBVdGlsaXR5IHRvIGNvbnZlcnQgYSB2ZWN0b3Igb2YgdGFicyB0byBhbiBhcnJheS4gKi8KKworICAgIHByaXZhdGUgc3RhdGljIFRhYlN0b3BbXSB0YWJBcnJheUZyb21WZWN0b3IoVmVjdG9yIHYpCisgICAgeworICAgICAgICBpbnQgY291bnQgPSB2LnNpemUoKTsKKyAgICAgICAgVGFiU3RvcFtdIHRhYnMgPSBuZXcgVGFiU3RvcFtjb3VudF07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICAgICAgdGFic1tpXSA9IChUYWJTdG9wKXYuZWxlbWVudEF0KGkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRhYnM7CisgICAgfQorCisgICAgLyoqIFV0aWxpdHkgdG8gY29udmVydCBhIHJ1bGVyIHRvIGEgdmVjdG9yIG9mIHRhYnMsIGZvciBtdW5naW5nLiAqLworCisgICAgcHJpdmF0ZSBzdGF0aWMgVmVjdG9yIHZlY3RvckZyb21UYWJSdWxlcihNVGFiUnVsZXIgcnVsZXIpCisgICAgeworICAgICAgICBWZWN0b3IgdiA9IG5ldyBWZWN0b3IoKTsKKyAgICAgICAgZm9yIChUYWJTdG9wIHRhYiA9IHJ1bGVyLmZpcnN0VGFiKCk7IHRhYiAhPSBudWxsICYmIHRhYi5nZXRUeXBlKCkgIT0gVGFiU3RvcC5rQXV0bzsgdGFiID0gcnVsZXIubmV4dFRhYih0YWIuZ2V0UG9zaXRpb24oKSkpIHsKKyAgICAgICAgICAgIHYuYWRkRWxlbWVudCh0YWIpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHY7CisgICAgfQorCisgICAgLyoqIFV0aWxpdHkgdG8gdmFsaWRhdGUgYW4gYXJyYXkgb2YgdGFicy4gIFRoZSBhcnJheSBtdXN0IG5vdCBiZSBudWxsLCBtdXN0IG5vdCBjb250YWluIG51bGwKKyAgICAgICAgZW50cmllcywgbXVzdCBub3QgYmUga0F1dG8sIGFuZCBwb3NpdGlvbnMgbXVzdCBpbiBpbmNyZWFzaW5nIG9yZGVyLiAqLworCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB2YWxpZGF0ZVRhYkFycmF5KFRhYlN0b3BbXSB0YWJzKQorICAgIHsKKyAgICAgICAgaW50IHBvcyA9IEludGVnZXIuTUlOX1ZBTFVFOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRhYnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmICh0YWJzW2ldLmdldFR5cGUoKSA9PSBUYWJTdG9wLmtBdXRvKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiY2FuJ3QgZXhwbGljaXRseSBzcGVjaWZ5IGFuIGF1dG8gdGFiLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IG5leHRwb3MgPSB0YWJzW2ldLmdldFBvc2l0aW9uKCk7CisgICAgICAgICAgICBpZiAobmV4dHBvcyA8PSBwb3MpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJ0YWIgcG9zaXRpb25zIG11c3QgYmUgaW4gaW5jcmVhc2luZyBvcmRlci4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBvcyA9IG5leHRwb3M7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSB0YWIgcnVsZXIgaWRlbnRpY2FsIHRvIHRoZSBnaXZlbiBydWxlciwgZXhjZXB0IHdpdGggdGhlCisgICAgICogZ2l2ZW4gdGFiIGFkZGVkLgorICAgICAqIEBwYXJhbSBydWxlciB0aGUgb3JpZ2luYWwgcnVsZXIuICBUaGUgTVRhYlJ1bGVyIHdpbGwgYmUgdGhlIHNhbWUgYXMKKyAgICAgKiAgIHRoaXMgZXhjZXB0IGZvciB0aGUgYWRkaXRpb25hbCB0YWIuICA8Y29kZT5ydWxlcjwvY29kZT4gaXMgbm90IG1vZGlmaWVkLgorICAgICAqIEBwYXJhbSB0YWJUb0FkZCB0aGUgdGFiIHRvIGFkZCB0byB0aGUgbmV3IHRhYiBydWxlcgorICAgICAqIEByZXR1cm4gYW4gTVRhYlJ1bGVyIHJlc3VsdGluZyBmcm9tIHRoaXMgb3BlcmF0aW9uCisgICAgICovCisgICAgLypwdWJsaWMqLyBzdGF0aWMgTVRhYlJ1bGVyIGFkZFRhYlRvUnVsZXIoTVRhYlJ1bGVyIHJ1bGVyLCBUYWJTdG9wIHRhYlRvQWRkKQorICAgIHsKKyAgICAgICAgaWYgKHJ1bGVyID09IG51bGwgfHwgdGFiVG9BZGQgPT0gbnVsbCkKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInJ1bGVyIGFuZCB0YWJUb0FkZCBtYXkgbm90IGJlIG51bGwiKTsKKworICAgICAgICBWZWN0b3IgdmVjdG9yID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIGludCBwb3MgPSAwOworICAgICAgICBib29sZWFuIGFkZGVkID0gZmFsc2U7CisgICAgICAgIGZvciAoVGFiU3RvcCB0YWIgPSBydWxlci5maXJzdFRhYigpOyB0YWIuZ2V0VHlwZSgpICE9IFRhYlN0b3Aua0F1dG87IHRhYiA9IHJ1bGVyLm5leHRUYWIocG9zKSkgeworICAgICAgICAgICAgcG9zID0gdGFiLmdldFBvc2l0aW9uKCk7CisKKyAgICAgICAgICAgIGlmICghYWRkZWQgJiYgcG9zID49IHRhYlRvQWRkLmdldFBvc2l0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAocG9zID09IHRhYlRvQWRkLmdldFBvc2l0aW9uKCkpCisgICAgICAgICAgICAgICAgICAgIHRhYiA9IG51bGw7CisgICAgICAgICAgICAgICAgdmVjdG9yLmFkZEVsZW1lbnQodGFiVG9BZGQpOworICAgICAgICAgICAgICAgIGFkZGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHRhYiAhPSBudWxsKQorICAgICAgICAgICAgICAgIHZlY3Rvci5hZGRFbGVtZW50KHRhYik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFhZGRlZCkKKyAgICAgICAgICAgIHZlY3Rvci5hZGRFbGVtZW50KHRhYlRvQWRkKTsKKworICAgICAgICByZXR1cm4gbmV3IFN0YW5kYXJkVGFiUnVsZXIodmVjdG9yLCBydWxlci5hdXRvU3BhY2luZygpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSB0YWIgcnVsZXIgaWRlbnRpY2FsIHRvIHRoZSBnaXZlbiBydWxlciwgZXhjZXB0IHdpdGggdGhlCisgICAgICogZ2l2ZW4gdGFiIHJlbW92ZWQuCisgICAgICogQHBhcmFtIHJ1bGVyIHRoZSBvcmlnaW5hbCBydWxlci4gIFRoZSBNVGFiUnVsZXIgd2lsbCBiZSB0aGUgc2FtZSBhcworICAgICAqICAgdGhpcyBleGNlcHQgZm9yIHRoZSByZW1vdmVkIHRhYi4gIDxjb2RlPnJ1bGVyPC9jb2RlPiBpcyBub3QgbW9kaWZpZWQuCisgICAgICogQHBhcmFtIHBvc2l0aW9uIHRoZSBwb3NpdGlvbiBvZiB0aGUgdGFiIHRvIHJlbW92ZSBmcm9tIHRoZSBuZXcgdGFiIHJ1bGVyCisgICAgICogQHJldHVybiBhbiBNVGFiUnVsZXIgcmVzdWx0aW5nIGZyb20gdGhpcyBvcGVyYXRpb24KKyAgICAgKi8KKyAgICAvKnB1YmxpYyovIHN0YXRpYyBNVGFiUnVsZXIgcmVtb3ZlVGFiRnJvbVJ1bGVyKE1UYWJSdWxlciBydWxlciwgaW50IHBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgaWYgKHJ1bGVyID09IG51bGwpCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJydWxlciBtYXkgbm90IGJlIG51bGwiKTsKKworICAgICAgICBWZWN0b3IgdmVjdG9yID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIGludCBwb3MgPSAwOworICAgICAgICBib29sZWFuIHJlbW92ZWQgPSBmYWxzZTsKKyAgICAgICAgZm9yIChUYWJTdG9wIHRhYiA9IHJ1bGVyLmZpcnN0VGFiKCk7IHRhYi5nZXRUeXBlKCkgIT0gVGFiU3RvcC5rQXV0bzsgdGFiID0gcnVsZXIubmV4dFRhYihwb3MpKSB7CisgICAgICAgICAgICBwb3MgPSB0YWIuZ2V0UG9zaXRpb24oKTsKKworICAgICAgICAgICAgaWYgKCFyZW1vdmVkICYmIHBvcyA+PSBwb3NpdGlvbikgeworICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gcG9zaXRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBza2lwIHRoaXMgdGFiIGFuZCBjb250aW51ZSB3aXRoIHRoZSByZW1haW5kZXIKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7IC8vIHdlIGRpZG4ndCByZW1vdmUgYSB0YWIsIGJ1dCBza2lwcGVkIHBvc2l0aW9uLCBzbyBkb24ndCBib3RoZXIgd2l0aCB0aGUgcmVzdAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2ZWN0b3IuYWRkRWxlbWVudCh0YWIpOworICAgICAgICB9CisgICAgICAgIGlmICghcmVtb3ZlZCkgLy8gbm8gY2hhbmdlCisgICAgICAgICAgICByZXR1cm4gcnVsZXI7CisKKyAgICAgICAgaWYgKHZlY3Rvci5zaXplKCkgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBuZXcgU3RhbmRhcmRUYWJSdWxlcihydWxlci5hdXRvU3BhY2luZygpKTsKKworICAgICAgICByZXR1cm4gbmV3IFN0YW5kYXJkVGFiUnVsZXIodmVjdG9yLCBydWxlci5hdXRvU3BhY2luZygpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSB0YWIgcnVsZXIgaWRlbnRpY2FsIHRvIHRoZSBnaXZlbiBydWxlciwgZXhjZXB0IHdpdGggdGhlCisgICAgICogdGFiIGF0IHBvc2l0aW9uIDxjb2RlPmZyb21Qb3NpdGlvbjwvY29kZT4gbW92ZWQgdG8gcG9zaXRpb24KKyAgICAgKiA8Y29kZT50b1Bvc2l0aW9uPC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gcnVsZXIgdGhlIG9yaWdpbmFsIHJ1bGVyLiAgVGhlIE1UYWJSdWxlciB3aWxsIGJlIHRoZSBzYW1lIGFzCisgICAgICogICB0aGlzIGV4Y2VwdCBmb3IgdGhlIG1vdmVkIHRhYi4gIDxjb2RlPnJ1bGVyPC9jb2RlPiBpcyBub3QgbW9kaWZpZWQuCisgICAgICogQHBhcmFtIGZyb21Qb3NpdGlvbiB0aGUgcG9zaXRpb24gb2YgdGhlIHRhYiB0byBtb3ZlCisgICAgICogQHBhcmFtIHRvUG9zaXRpb24gdGhlIG5ldyBwb3NpdGlvbiBvZiB0aGUgdGFiCisgICAgICogQHJldHVybiBhbiBNVGFiUnVsZXIgcmVzdWx0aW5nIGZyb20gdGhpcyBvcGVyYXRpb24KKyAgICAgKi8KKyAgICAvKnB1YmxpYyovIHN0YXRpYyBNVGFiUnVsZXIgbW92ZVRhYk9uUnVsZXIoTVRhYlJ1bGVyIHJ1bGVyLCBpbnQgZnJvbVBvc2l0aW9uLCBpbnQgdG9Qb3NpdGlvbikKKyAgICB7CisgICAgICAgIGlmIChydWxlciA9PSBudWxsKQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigicnVsZXIgbWF5IG5vdCBiZSBudWxsIik7CisKKyAgICAgICAgVmVjdG9yIHZlY3RvciA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICBpbnQgcG9zID0gMDsKKyAgICAgICAgYm9vbGVhbiBtb3ZlZCA9IGZhbHNlOworICAgICAgICBmb3IgKFRhYlN0b3AgdGFiID0gcnVsZXIuZmlyc3RUYWIoKTsgdGFiLmdldFR5cGUoKSAhPSBUYWJTdG9wLmtBdXRvOyB0YWIgPSBydWxlci5uZXh0VGFiKHBvcykpIHsKKyAgICAgICAgICAgIHBvcyA9IHRhYi5nZXRQb3NpdGlvbigpOworCisgICAgICAgICAgICBpZiAoIW1vdmVkICYmIHBvcyA9PSBmcm9tUG9zaXRpb24pIHsKKyAgICAgICAgICAgICAgICBtb3ZlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgdGFiID0gbmV3IFRhYlN0b3AodG9Qb3NpdGlvbiwgdGFiLmdldFR5cGUoKSk7IC8vIGNvcHkgaXQKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmVjdG9yLmFkZEVsZW1lbnQodGFiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIW1vdmVkKSAvLyBubyBjaGFuZ2UKKyAgICAgICAgICAgIHJldHVybiBydWxlcjsKKworICAgICAgICByZXR1cm4gbmV3IFN0YW5kYXJkVGFiUnVsZXIodmVjdG9yLCBydWxlci5hdXRvU3BhY2luZygpKTsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvU3R5bGVCdWZmZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvU3R5bGVCdWZmZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yM2NkYjEzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9TdHlsZUJ1ZmZlci5qYXZhCkBAIC0wLDAgKzEsNjcxIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBTdHlsZUJ1ZmZlci5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjQ1OjEwICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dDsKKworaW1wb3J0IGphdmEuaW8uRXh0ZXJuYWxpemFibGU7CitpbXBvcnQgamF2YS5pby5PYmplY3RJbnB1dDsKK2ltcG9ydCBqYXZhLmlvLk9iamVjdE91dHB1dDsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCisvKgorICAgIDgvMi85NgorICAgICAgICBBZGRlZCBzZXRJdGVyYXRvclVzaW5nUnVuIG1ldGhvZAorCisgICAgOC81Lzk2CisgICAgICAgIE5vIGxvbmdlciBoYXMgdG8gYmUgY29uc3RydWN0ZWQgd2l0aCBhbiBNVGV4dC4KKworICAgIDgvOC85NgorICAgICAgICBBZGRlZCByZXBsYWNlIG1ldGhvZCwgd2hpY2ggcmVhZHMgc3R5bGVzIGZyb20gYSBTdHlsZVJ1bkl0ZXJhdG9yLgorICAgICAgICBBbHNvLCBhZGRlZCBhIGNvbnN0cnVjdG9yIHdoaWNoIHRha2VzIGEgU3R5bGVSdW5JdGVyYXRvci4KKyAgICAgICAgVGhlc2UgbWV0aG9kcyBhcmUgZm9yIGNvcHkvcGFzdGUgc3VwcG9ydC4KKyAgICA4LzE2Lzk2CisgICAgICAgIFN0eWxlQnVmZmVyIG5vdyB0YWtlcyBNQ29uc3RUZXh0IGluc3RlYWQgb2YgTVRleHQgd2hlcmUgcG9zc2libGUuCisKKyAgICAxMC8yMy85NgorICAgICAgICBTb21lIG9sZCBjb21tZW50ZWQtb3V0IGNvZGUgcmVtb3ZlZCBmb3IgYWVzdGhldGljIHJlYXNvbnMuCisKKyAgICA3LzMxLzk4IFN3aXRjaGVkIHRvIEF0dHJpYnV0ZU1hcAorKi8KKworLyoqCisqIFN0eWxlQnVmZmVyIGltcGxlbWVudHMgPHR0Pk1TdHlsZUJ1ZmZlcjwvdHQ+LiAgSXQgbWFpbnRhaW5zCisqIDx0dD5BdHRyaWJ1dGVNYXA8L3R0PiBvYmplY3RzIHRvIGFwcGx5IHRvIHRoZSB0ZXh0IGluIGFuIDx0dD5NVGV4dDwvdHQ+IG9iamVjdCwKKyogYW5kIHRoZQorKiBpbnRlcnZhbHMgb24gd2hpY2ggdGhvc2Ugc3R5bGVzIGFwcGx5LgorKiA8cD4KKyogU3R5bGVCdWZmZXIgc3RvcmVzIHRoZSBpbnRlcnZhbHMgb24gd2hpY2ggc3R5bGVzIGFwcGx5IGluIGEgPHR0PlJ1bkFycmF5PC90dD4KKyogb2JqZWN0IChzZWUgPHR0PlJ1bkFycmF5PC90dD4gZm9yIG1vcmUgaW5mb3JtYXRpb24pLiAgVGhlIHN0eWxlcyBhcmUgc3RvcmVkIGluCisqIGFuIGFycmF5IG9mIDx0dD5BdHRyaWJ1dGVNYXA8L3R0PiBvYmplY3RzLgorKiA8cD4KKyogPHR0PlJ1bkFycmF5PC90dD4gbWFpbnRhaW5zIGFuIGFycmF5IG9mIGludGVnZXJzIHdoaWNoIHJlcHJlc2VudCBvZmZzZXRzIGludG8gdGV4dC4KKyogVGhlIGFycmF5IGhhcyBhICJwb3NpdGl2ZSIgcmVnaW9uIGluIHdoaWNoIG9mZnNldHMgYXJlIGdpdmVuIGFzIHBvc2l0aXZlIGRpc3RhbmNlcworKiBmcm9tIHRoZSBzdGFydCBvZiB0aGUgdGV4dCwgYW5kIGEgIm5lZ2F0aXZlIiByZWdpb24gaW4gd2hpY2ggb2Zmc2V0cyBhcmUgZ2l2ZW4gYXMKKyogbmVnYXRpdmUgZGlzdGFuY2VzIGZyb20gdGhlIGVuZCBvZiB0aGUgdGV4dC4gIEJldHdlZW4gdGhlIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSByZWdpb25zCisqIGlzIGEgZ2FwLCBpbnRvIHdoaWNoIG5ldyBvZmZzZXRzIG1heSBiZSBpbnNlcnRlZC4gIFRoaXMgc3RvcmFnZSBzY2hlbWUgYWxsb3dzIGZvcgorKiBlZmZpY2llbnQgcmVzcG9uc2UgdG8gYSBzZXJpZXMgb2YgZWRpdGluZyBvcGVyYXRpb25zIHdoaWNoIG9jY3VyIGluIHRoZSBzYW1lIGFyZWEgb2YgdGhlCisqIHRleHQuCisqIDxwPgorKiBTdHlsZUJ1ZmZlciB1c2VzIHRoZSBvZmZzZXRzIGluIDx0dD5SdW5BcnJheTwvdHQ+IGFzIHRoZSBib3VuZGFyaWVzIG9mIHN0eWxlIHJ1bnMuCisqIEEgc3R5bGUgcnVuIGJlZ2lucyBhdCBlYWNoIG9mZnNldCBpbiA8dHQ+UnVuQXJyYXk8L3R0PiwgYW5kIGVhY2ggc3R5bGUgcnVuIGNvbnRpbnVlcyB0bworKiB0aGUgbmV4dCBvZmZzZXQuICBUaGUgc3R5bGUgYXJyYXkgaXMga2VwdCBpbiBzeW5jIHdpdGggdGhlIGFycmF5IG9mIG9mZnNldHMgaW4gPHR0PlJ1bkFycmF5PC90dD47CisqIHRoYXQgaXMsIHRoZSBzdHlsZSB3aGljaCBiZWdpbnMgYXQgUnVuQXJyYXlbaV0gaXMgc3RvcmVkIGluIFN0eWxlQXJyYXlbaV0uCisqIDxwPgorKiBUaGUgZmlyc3QgZW50cnkgaW4gdGhlIDx0dD5SdW5BcnJheTwvdHQ+IGlzIGFsd2F5cyAwLgorKgorKiBAYXV0aG9yIEpvaG4gUmFsZXkKKyoKKyogQHNlZSBBdHRyaWJ1dGVNYXAKKyogQHNlZSBNVGV4dAorKiBAc2VlIFJ1bkFycmF5CisqLworCitmaW5hbCBjbGFzcyBTdHlsZUJ1ZmZlciBleHRlbmRzIE1TdHlsZUJ1ZmZlciBpbXBsZW1lbnRzIEV4dGVybmFsaXphYmxlIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgLyoqCisgICAgKiBDcmVhdGVzIGEgbmV3IHN0eWxlIGJ1ZmZlciB3aXRoIGxlbmd0aCBlcXVhbCB0byB0aGUgbGVuZ3RoIG9mIDx0dD50ZXh0PC90dD4sCisgICAgKiBhbmQgd2l0aCBhIHNpbmdsZSBydW4gb2YgPHR0PmRlZmF1bHRTdHlsZTwvdHQ+LgorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMjIzNTY5MzQ7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ1VSUkVOVF9WRVJTSU9OID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQga0luaXRpYWxTaXplID0gMTA7CisgICAgcHJpdmF0ZSBSdW5BcnJheSBmUnVuQXJyYXk7CisKKyAgICBwcml2YXRlIEF0dHJpYnV0ZU1hcCBmU3R5bGVUYWJsZVtdOworCisgICAgU3R5bGVCdWZmZXIoTUNvbnN0VGV4dCB0ZXh0LCBBdHRyaWJ1dGVNYXAgaW5pdGlhbFN0eWxlKSB7CisKKyAgICAgICAgdGhpcyh0ZXh0Lmxlbmd0aCgpLCBpbml0aWFsU3R5bGUpOworICAgIH0KKworICAgIC8qKgorICAgICogQ3JlYXRlcyBhIG5ldyBzdHlsZSBidWZmZXIgd2l0aCBsZW5ndGggPHR0PmluaXRpYWxMZW5ndGg8L3R0PiBhbmQgd2l0aCBhCisgICAgKiBzaW5nbGUgcnVuIG9mIDx0dD5kZWZhdWx0U3R5bGU8L3R0Pi4KKyAgICAqLworCisgICAgU3R5bGVCdWZmZXIoaW50IGluaXRpYWxMZW5ndGgsIEF0dHJpYnV0ZU1hcCBpbml0aWFsU3R5bGUpIHsKKworICAgICAgICBmUnVuQXJyYXkgPSBuZXcgUnVuQXJyYXkoa0luaXRpYWxTaXplLCBpbml0aWFsTGVuZ3RoKTsKKyAgICAgICAgZlJ1bkFycmF5LmZQb3NFbmQgPSAwOworICAgICAgICBmUnVuQXJyYXkuZlJ1blN0YXJ0WzBdID0gMDsKKworICAgICAgICBmU3R5bGVUYWJsZSA9IG5ldyBBdHRyaWJ1dGVNYXBba0luaXRpYWxTaXplXTsgLy8gZG8gSSByZWFsbHkgd2FudCB0byBkbyB0aGlzPz8/CisKKyAgICAgICAgZlN0eWxlVGFibGVbMF0gPSBpbml0aWFsU3R5bGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogTm90ZTogdGhpcyBjb25zdHJ1Y3RvciBpcyBPTkxZIGZvciB1c2UgYnkgdGhlIFNlcmlhbGl6YXRpb24KKyAgICAgKiBtZWNoYW5pc20uICBJdCBkb2VzIG5vdCBsZWF2ZSB0aGlzIG9iamVjdCBpbiBhIHZhbGlkIHN0YXRlIQorICAgICAqLworICAgIHB1YmxpYyBTdHlsZUJ1ZmZlcigpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB3cml0ZUV4dGVybmFsKE9iamVjdE91dHB1dCBvdXQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgICAgY29tcHJlc3MoKTsKKyAgICAgICAgb3V0LndyaXRlSW50KENVUlJFTlRfVkVSU0lPTik7CisgICAgICAgIG91dC53cml0ZU9iamVjdChmUnVuQXJyYXkpOworICAgICAgICBvdXQud3JpdGVPYmplY3QoZlN0eWxlVGFibGUpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJlYWRFeHRlcm5hbChPYmplY3RJbnB1dCBpbikgdGhyb3dzIElPRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiB7CisKKyAgICAgICAgaWYgKGluLnJlYWRJbnQoKSAhPSBDVVJSRU5UX1ZFUlNJT04pIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbigiSW52YWxpZCB2ZXJzaW9uIG9mIFN0eWxlQnVmZmVyIik7CisgICAgICAgIH0KKyAgICAgICAgZlJ1bkFycmF5ID0gKFJ1bkFycmF5KSBpbi5yZWFkT2JqZWN0KCk7CisgICAgICAgIGZTdHlsZVRhYmxlID0gKEF0dHJpYnV0ZU1hcFtdKSBpbi5yZWFkT2JqZWN0KCk7CisgICAgfQorCisvKioKKyogU2hpZnQgc3R5bGUgYW5kIHJ1biB0YWJsZXMgc3VjaCB0aGF0IHRoZSBsYXN0IHBvc2l0aXZlIHJ1biBiZWdpbnMgYmVmb3JlIHRoZSBnaXZlbiBwb3NpdGlvbi4KKyogU2luY2UgdGhlcmUgaXMgYWx3YXlzIGEgcnVuIHN0YXJ0IGF0IDAsIHRoaXMgbWV0aG9kIGVuc3VyZXMgdGhhdCB0aGUgZmlyc3QgcnVuIHdpbGwgbm90IGJlIHNoaWZ0ZWQuCisqIFRoaXMgaXMgY2FsbGVkIGJ5OiA8dHQ+aW5zZXJ0VGV4dDwvdHQ+IGFuZCA8dHQ+ZGVsZXRlVGV4dDwvdHQ+LgorKiBAcGFyYW0gcG9zIGEgcG9zaXRpb24gaW4gdGhlIHRleHQuCisqLworCisgICAgcHJpdmF0ZSB2b2lkIHNoaWZ0VGFibGVUbyhpbnQgcG9zKSB7CisKKyAgICAgICAgaWYgKHBvcyA9PSAwKQorICAgICAgICAgICAgcG9zID0gMTsKKworICAgICAgICBpbnQgb2xkTmVnU3RhcnQgPSBmUnVuQXJyYXkuZk5lZ1N0YXJ0OworICAgICAgICBpbnQgb2xkUG9zRW5kID0gZlJ1bkFycmF5LmZQb3NFbmQ7CisKKyAgICAgICAgZlJ1bkFycmF5LnNoaWZ0VGFibGVUbyhwb3MpOworCisgICAgICAgIGlmIChvbGRQb3NFbmQgPiBmUnVuQXJyYXkuZlBvc0VuZCkKKyAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZlN0eWxlVGFibGUsIGZSdW5BcnJheS5mUG9zRW5kKzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZTdHlsZVRhYmxlLCBmUnVuQXJyYXkuZk5lZ1N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRQb3NFbmQtZlJ1bkFycmF5LmZQb3NFbmQpOworICAgICAgICBlbHNlIGlmIChvbGROZWdTdGFydCA8IGZSdW5BcnJheS5mTmVnU3RhcnQpCisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGZTdHlsZVRhYmxlLCBvbGROZWdTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlN0eWxlVGFibGUsIG9sZFBvc0VuZCsxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmUnVuQXJyYXkuZk5lZ1N0YXJ0LW9sZE5lZ1N0YXJ0KTsKKyAgICB9CisKKy8qKgorKiBVcGRhdGUgdGhlIHN0eWxlIHRhYmxlIHRvIHJlZmxlY3QgYSBjaGFuZ2UgaW4gdGhlIFJ1bkFycmF5J3Mgc2l6ZS4KKyovCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZUFycmF5UmVzaXplKGludCBvbGROZWdTdGFydCkgeworCisgICAgICAgIEF0dHJpYnV0ZU1hcCBuZXdTdHlsZVRhYmxlW10gPSBuZXcgQXR0cmlidXRlTWFwW2ZSdW5BcnJheS5nZXRBcnJheUxlbmd0aCgpXTsKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShmU3R5bGVUYWJsZSwgMCwgbmV3U3R5bGVUYWJsZSwgMCwgZlJ1bkFycmF5LmZQb3NFbmQrMSk7CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZlN0eWxlVGFibGUsIG9sZE5lZ1N0YXJ0LCBuZXdTdHlsZVRhYmxlLCBmUnVuQXJyYXkuZk5lZ1N0YXJ0LCAoZlJ1bkFycmF5LmdldEFycmF5TGVuZ3RoKCktZlJ1bkFycmF5LmZOZWdTdGFydCkpOworICAgICAgICBmU3R5bGVUYWJsZSA9IG5ld1N0eWxlVGFibGU7CisgICAgfQorCisvKioKKyogTWluaW1pemUgdGhlIGFtb3VudCBvZiBzdG9yYWdlIHVzZWQgYnkgdGhpcyBvYmplY3QuCisqLworICAgIHZvaWQgY29tcHJlc3MoKSB7CisKKyAgICAgICAgaW50IG9sZE5lZ1N0YXJ0ID0gZlJ1bkFycmF5LmZOZWdTdGFydDsKKyAgICAgICAgZlJ1bkFycmF5LmNvbXByZXNzKCk7CisgICAgICAgIGlmIChmUnVuQXJyYXkuZk5lZ1N0YXJ0ICE9IG9sZE5lZ1N0YXJ0KSB7CisgICAgICAgICAgICBoYW5kbGVBcnJheVJlc2l6ZShvbGROZWdTdGFydCk7CisgICAgICAgIH0KKyAgICB9CisKKy8qKgorKiBJbmNyZWFzZSB0aGUgc3RvcmFnZSBjYXBhY2l0eSBvZiB0aGUgc3R5bGUgYW5kIHJ1biB0YWJsZXMgaWYgbm8gcm9vbSByZW1haW5zLgorKi8KKyAgICBwcml2YXRlIHZvaWQgZXhwYW5kU3R5bGVUYWJsZUlmRnVsbCgpIHsKKworICAgICAgICBpZiAoZlJ1bkFycmF5LmZQb3NFbmQgKyAxID09IGZSdW5BcnJheS5mTmVnU3RhcnQpIHsKKworICAgICAgICAgICAgaW50IG9sZE5lZ1N0YXJ0ID0gZlJ1bkFycmF5LmZOZWdTdGFydDsKKyAgICAgICAgICAgIGZSdW5BcnJheS5leHBhbmRSdW5UYWJsZSgpOworICAgICAgICAgICAgaGFuZGxlQXJyYXlSZXNpemUob2xkTmVnU3RhcnQpOworICAgICAgICB9CisgICAgfQorCisvKgorICAgIHB1YmxpYyBNU3R5bGVSdW5JdGVyYXRvciBjcmVhdGVTdHlsZVJ1bkl0ZXJhdG9yKGludCBzdGFydCwgaW50IGxpbWl0KSB7CisKKyAgICAgICAgcmV0dXJuIG5ldyBTdHlsZVJ1bkl0ZXJhdG9yKHN0YXJ0LCBsaW1pdCk7CisgICAgfQorKi8KKy8qKgorKiBSZXNwb25kIHRvIGFuIGluc2VydGlvbiBpbiB0aGUgdGV4dC4gIFRoZSBsZW5ndGggb2YgdGhlIGxhc3Qgc3R5bGUgcnVuIHdoaWNoCisqIGJlZ2lucyBiZWZvcmUgPHR0PnN0YXJ0PC90dD4gaXMgaW5jcmVhc2VkIGJ5IDx0dD5sZW5ndGg8L3R0Pi4gIFRoZSBydW4gdGFibGUKKyogaXMgc2hpZnRlZCBzdWNoIHRoYXQgdGhlIHJ1biBpbnRvIHdoaWNoIHRleHQgd2FzIGluc2VydGVkIGlzIHRoZSBsYXN0IHBvc2l0aXZlIHJ1bi4KKyogVGhpcyBpbXBsZW1lbnRhdGlvbiBhc3N1bWVzIHRoYXQgYWxsIHN0eWxlcyBwcm9wb2dhdGUuCisqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IHdoZXJlIHRoZSBpbnNlcnRpb24gYmVnYW4KKyogQHBhcmFtIGxlbmd0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW5zZXJ0ZWQKKyovCisgICAgcHVibGljIHZvaWQgaW5zZXJ0VGV4dChpbnQgc3RhcnQsIGludCBsaW1pdCkgeworCisgICAgICAgIHNoaWZ0VGFibGVUbyhzdGFydCk7CisgICAgICAgIGZSdW5BcnJheS5hZGRUb0N1clRleHRMZW5ndGgobGltaXQgLSBzdGFydCk7CisgICAgfQorCisvKioKKyogUmVzcG9uZCB0byBhIGRlbGV0aW9uIGluIHRoZSB0ZXh0LiAgVGhlIGxhc3Qgc3R5bGUgcnVuIGJlZm9yZQorKiA8dHQ+c3RhcnQ8L3R0PiBpcyB0cnVuY2F0ZWQgdG8gZW5kIGF0IDx0dD5zdGFydDwvdHQ+LiAgVGhlCisqIHN0eWxlIHJ1biBjb250YWluaW5nICg8dHQ+c3RhcnQ8L3R0Pis8dHQ+bGVuZ3RoPC90dD4pIGlzIHNldCB0byBiZWdpbgorKiBhdCAoPHR0PnN0YXJ0PC90dD4rPHR0Pmxlbmd0aDwvdHQ+KS4gIFJ1bnMgaW4gYmV0d2VlbiBhcmUgZGVsZXRlZC4KKyogSWYgdGhlIGRlbGV0aW9uIG9jY3VycyBlbnRpcmVseSB3aXRoaW4gb25lIHN0eWxlIHJ1biwgdGhlIGxlbmd0aCBvZiB0aGUgc3R5bGUKKyogcnVuIGlzIHJlZHVjZWQgYnkgPHR0Pmxlbmd0aDwvdHQ+LgorKiBUaGlzIGltcGxlbWVudGF0aW9uIGFzc3VtZXMgdGhhdCBhbGwgc3R5bGVzIHByb3BvZ2F0ZS4KKyogVGhpcyBtZXRob2Qgc2hpZnRzIHRoZSBydW4gdGFibGUgc3VjaCB0aGF0IHRoZSBydW4gaW4gd2hpY2ggdGhlIGRlbGV0ZSBiZWdhbgorKiBpcyB0aGUgbGFzdCBwb3NpdGl2ZSBydW4uICBPdGhlciBtZXRob2RzIGRlcGVuZCBvbiB0aGlzICJzaWRlIGVmZmVjdCIuCisqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IHdoZXJlIHRoZSBkZWxldGlvbiBiZWdhbgorKiBAcGFyYW0gbGVuZ3RoIHRoZSBvZmZzZXQgd2hlcmUgdGhlIGRlbGV0aW9uIHN0b3BwZWQKKyovCisgICAgcHVibGljIHZvaWQgZGVsZXRlVGV4dChpbnQgc3RhcnQsIGludCBsaW1pdCkgeworCisgICAgICAgIGludCBsZW5ndGggPSBsaW1pdCAtIHN0YXJ0OworCisgICAgICAgIC8vIEFuIG9wdGltaXphdGlvbiAtIGlmIGEgd2hvbGUgcnVuIHdhc24ndCBkZWxldGVkIHdlIGRvbid0CisgICAgICAgIC8vIG5lZWQgdG8gY2hlY2sgZm9yIHJ1biBtZXJnaW5nLCB3aGljaCBjb3VsZCBiZSBleHBlbnNpdmUuCisgICAgICAgIGJvb2xlYW4gd2hvbGVSdW5EZWxldGVkID0gZmFsc2U7CisKKyAgICAgICAgc2hpZnRUYWJsZVRvKHN0YXJ0KTsKKworICAgICAgICBpbnQgZmlyc3RSdW5MaW1pdCA9IGZSdW5BcnJheS5nZXRDdXJUZXh0TGVuZ3RoKCk7CisgICAgICAgIGlmIChmUnVuQXJyYXkuZk5lZ1N0YXJ0IDwgZlJ1bkFycmF5LmdldEFycmF5TGVuZ3RoKCkpCisgICAgICAgICAgICBmaXJzdFJ1bkxpbWl0ICs9IGZSdW5BcnJheS5mUnVuU3RhcnRbZlJ1bkFycmF5LmZOZWdTdGFydF07CisKKyAgICAgICAgaWYgKGxpbWl0ID09IGZSdW5BcnJheS5nZXRDdXJUZXh0TGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGZSdW5BcnJheS5mTmVnU3RhcnQgPSBmUnVuQXJyYXkuZ2V0QXJyYXlMZW5ndGgoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChsaW1pdCA+PSBmaXJzdFJ1bkxpbWl0KSB7CisKKyAgICAgICAgICAgIGludCBlbmQgPSBmUnVuQXJyYXkuZmluZFJ1bkNvbnRhaW5pbmcobGltaXQpOworICAgICAgICAgICAgaWYgKGVuZCAhPSBmUnVuQXJyYXkuZlBvc0VuZCkgeworICAgICAgICAgICAgICAgIGZSdW5BcnJheS5mUnVuU3RhcnRbZW5kXSA9IGxpbWl0IC0gZlJ1bkFycmF5LmdldEN1clRleHRMZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBmUnVuQXJyYXkuZk5lZ1N0YXJ0ID0gZW5kOworICAgICAgICAgICAgICAgIHdob2xlUnVuRGVsZXRlZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoZlJ1bkFycmF5LmZOZWdTdGFydCAhPSBmUnVuQXJyYXkuZ2V0QXJyYXlMZW5ndGgoKSkgeworICAgICAgICAgICAgaWYgKHN0YXJ0ID09IDAgJiYgbGltaXQgPj0gZmlyc3RSdW5MaW1pdCkgeworICAgICAgICAgICAgICAgIC8vIHRoZSBmaXJzdCBzdHlsZSBydW4gd2FzIGRlbGV0ZWQ7ICBtb3ZlIGZpcnN0ICJuZWdhdGl2ZSIgcnVuIGludG8KKyAgICAgICAgICAgICAgICAvLyBmaXJzdCBwb3NpdGlvbgorICAgICAgICAgICAgICAgIGZTdHlsZVRhYmxlWzBdID0gZlN0eWxlVGFibGVbZlJ1bkFycmF5LmZOZWdTdGFydCsrXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHdob2xlUnVuRGVsZXRlZCkgeworICAgICAgICAgICAgICAgIGlmIChmU3R5bGVUYWJsZVtmUnVuQXJyYXkuZk5lZ1N0YXJ0XS5lcXVhbHMoZlN0eWxlVGFibGVbZlJ1bkFycmF5LmZQb3NFbmRdKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBtZXJnZSBzdHlsZSBydW5zCisgICAgICAgICAgICAgICAgICAgIGZSdW5BcnJheS5mTmVnU3RhcnQrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmUnVuQXJyYXkuYWRkVG9DdXJUZXh0TGVuZ3RoKC1sZW5ndGgpOworCisgICAgICAgIGZSdW5BcnJheS5ydW5TdGFydHNDaGFuZ2VkKCk7CisgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJJbiBkZWxldGVUZXh0OiAgbnVtYmVyIG9mIHN0eWxlIHJ1bnMgPSAiICsgbnVtUnVucyh0aGlzKSk7CisgICAgfQorCisvKioKKyogQXJyYW5nZSBzdHlsZSB0YWJsZSBzbyB0aGF0IG9sZCBzdHlsZXMgaW4gdGhlIHByb3ZpZGVkIHJhbmdlIGFyZSByZW1vdmVkLCBhbmQKKyogbmV3IHN0eWxlcyBjYW4gYmUgaW5zZXJ0ZWQgaW50byB0aGUgaW5zZXJ0aW9uIGdhcC4KKyogQWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCwgbmV3IHN0eWxlIHN0YXJ0cyBhbmQgc3R5bGVzIG1heSBiZSBwbGFjZWQKKyogaW4gdGhlIGluc2VydGlvbiBnYXBzIG9mIGZSdW5BcnJheS5mU3R5bGVTdGFydCBhbmQgZlN0eWxlVGFibGUuCisqIEBwYXJhbSBzdGFydCBvZmZzZXQgaW4gdGhlIHRleHQgd2hlcmUgaW5zZXJ0aW9uIG9wZXJhdGlvbiBiZWdpbnMKKyogQHBhcmFtIGxpbWl0IG9mZnNldCBpbiB0aGUgdGV4dCB3aGVyZSBwcmV2aW91cyBzdHlsZXMgcmVzdW1lCisqLworICAgIHByaXZhdGUgdm9pZCBwcmVwYXJlU3R5bGVJbnNlcnQoaW50IHN0YXJ0KSB7CisKKyAgICAgICAgaWYgKHN0YXJ0ID09IDApIHsKKworICAgICAgICAgICAgLy8gZlJ1bkFycmF5LmZQb3NFbmQgc2hvdWxkIGJlIDAgaWYgd2UncmUgaW4gdGhpcyBicmFuY2guCisKKyAgICAgICAgICAgIGlmIChmUnVuQXJyYXkuZ2V0Q3VyVGV4dExlbmd0aCgpID4gMCkgeworCisgICAgICAgICAgICAgICAgLyogTW92ZSBmaXJzdCBleGlzdGluZyBzdHlsZSBydW4gdG8gbmVnYXRpdmUgZW5kIG9mIGJ1ZmZlci4KKyAgICAgICAgICAgICAgICAgICBEb24ndCBkbyB0aGlzIGlmIGxlbmd0aD09MDsgIHRoYXQgaXMsIGlmIHRoZXJlIGlzIG5vIHJlYWwKKyAgICAgICAgICAgICAgICAgICBzdHlsZSBydW4gYXQgMC4KKyAgICAgICAgICAgICAgICAgKi8KKworICAgICAgICAgICAgICAgIGZSdW5BcnJheS5mTmVnU3RhcnQtLTsKKyAgICAgICAgICAgICAgICBmU3R5bGVUYWJsZVtmUnVuQXJyYXkuZk5lZ1N0YXJ0XSA9IGZTdHlsZVRhYmxlWzBdOworICAgICAgICAgICAgICAgIGZSdW5BcnJheS5mUnVuU3RhcnRbZlJ1bkFycmF5LmZOZWdTdGFydF0gPSAtZlJ1bkFycmF5LmdldEN1clRleHRMZW5ndGgoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZlJ1bkFycmF5LmZQb3NFbmQgPSAtMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKworICAgICAgICAgICAgLy8gY29uc2lzdGVuY3kgY2hlY2s6IHN0YXJ0IHNob3VsZCBiZSBpbiBjdXJyZW50IGdhcAorICAgICAgICAgICAgaWYgKGZSdW5BcnJheS5mUnVuU3RhcnRbZlJ1bkFycmF5LmZQb3NFbmRdID49IHN0YXJ0KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbmNvbnNpc3RlbnQgc3RhdGUhICBTdGFydCBzaG91bGQgYmUgd2l0aGluIGluc2VydGlvbiBnYXAuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCBlbmRPZkluc2VydGlvbkdhcCA9IGZSdW5BcnJheS5nZXRDdXJUZXh0TGVuZ3RoKCk7CisgICAgICAgICAgICBpZiAoZlJ1bkFycmF5LmZOZWdTdGFydCA8IGZSdW5BcnJheS5nZXRBcnJheUxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgZW5kT2ZJbnNlcnRpb25HYXAgKz0gZlJ1bkFycmF5LmZSdW5TdGFydFtmUnVuQXJyYXkuZk5lZ1N0YXJ0XTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGVuZE9mSW5zZXJ0aW9uR2FwIDwgc3RhcnQpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkluY29uc2lzdGVudCBzdGF0ZSEgIFN0YXJ0IHNob3VsZCBiZSB3aXRoaW4gaW5zZXJ0aW9uIGdhcC4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gaWYgbm8gYnJlYWsgYXQgc3RhcnQgKG9uIG5lZ2F0aXZlIGVuZCBvZiBidWZmZXIpIG1ha2Ugb25lCisKKyAgICAgICAgICAgIGlmIChlbmRPZkluc2VydGlvbkdhcCAhPSBzdGFydCkgeworCisgICAgICAgICAgICAgICAgLy8gc3BsaXQgc3R5bGUgcnVuIGluIGluc2VydGlvbiBnYXAKKworICAgICAgICAgICAgICAgIGV4cGFuZFN0eWxlVGFibGVJZkZ1bGwoKTsKKworICAgICAgICAgICAgICAgIGZSdW5BcnJheS5mTmVnU3RhcnQtLTsKKyAgICAgICAgICAgICAgICBmU3R5bGVUYWJsZVtmUnVuQXJyYXkuZk5lZ1N0YXJ0XSA9IGZTdHlsZVRhYmxlW2ZSdW5BcnJheS5mUG9zRW5kXTsKKyAgICAgICAgICAgICAgICBmUnVuQXJyYXkuZlJ1blN0YXJ0W2ZSdW5BcnJheS5mTmVnU3RhcnRdID0gc3RhcnQgLSBmUnVuQXJyYXkuZ2V0Q3VyVGV4dExlbmd0aCgpOworCisgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oInNwbGl0dGluZyBydW4uIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBtb2RpZnlTdHlsZXMoaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0eWxlTW9kaWZpZXIgbW9kaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludFtdIGRhbWFnZWRSYW5nZSkgeworCisgICAgICAgIGlmIChsaW1pdCA9PSBzdGFydCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgc2hpZnRUYWJsZVRvKHN0YXJ0KTsKKworICAgICAgICBpbnQgY3VycmVudFJ1blN0YXJ0ID0gc3RhcnQ7CisgICAgICAgIEF0dHJpYnV0ZU1hcCBvbGRTdHlsZTsKKyAgICAgICAgQXR0cmlidXRlTWFwIG1lcmdlU3R5bGUgPSBmU3R5bGVUYWJsZVtmUnVuQXJyYXkuZlBvc0VuZF07CisKKyAgICAgICAgaWYgKGZSdW5BcnJheS5mTmVnU3RhcnQgPCBmUnVuQXJyYXkuZ2V0QXJyYXlMZW5ndGgoKSAmJgorICAgICAgICAgICAgICAgIGZSdW5BcnJheS5mUnVuU3RhcnRbZlJ1bkFycmF5LmZOZWdTdGFydF0rZlJ1bkFycmF5LmdldEN1clRleHRMZW5ndGgoKSA9PSBzdGFydCkgeworCisgICAgICAgICAgICBvbGRTdHlsZSA9IGZTdHlsZVRhYmxlW2ZSdW5BcnJheS5mTmVnU3RhcnRdOworICAgICAgICAgICAgKytmUnVuQXJyYXkuZk5lZ1N0YXJ0OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgb2xkU3R5bGUgPSBtZXJnZVN0eWxlOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbiBtb2RpZmllZEFueXdoZXJlID0gZmFsc2U7CisgICAgICAgIGZvcig7OykgeworCisgICAgICAgICAgICBib29sZWFuIG1vZGlmaWVkID0gZmFsc2U7CisKKyAgICAgICAgICAgIC8vIHB1c2ggbmV3IHN0eWxlIGludG8gZ2FwIG9uIHBvc2l0aXZlIHNpZGUKKyAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBuZXdTdHlsZSA9IG1vZGlmaWVyLm1vZGlmeVN0eWxlKG9sZFN0eWxlKTsKKyAgICAgICAgICAgIGlmIChkYW1hZ2VkUmFuZ2UgIT0gbnVsbCAmJiAhbmV3U3R5bGUuZXF1YWxzKG9sZFN0eWxlKSkgeworICAgICAgICAgICAgICAgIG1vZGlmaWVkID0gbW9kaWZpZWRBbnl3aGVyZSA9IHRydWU7CisgICAgICAgICAgICAgICAgZGFtYWdlZFJhbmdlWzBdID0gTWF0aC5taW4oY3VycmVudFJ1blN0YXJ0LCBkYW1hZ2VkUmFuZ2VbMF0pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIW5ld1N0eWxlLmVxdWFscyhtZXJnZVN0eWxlKSkgeworCisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRSdW5TdGFydCAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGV4cGFuZFN0eWxlVGFibGVJZkZ1bGwoKTsKKyAgICAgICAgICAgICAgICAgICAgKytmUnVuQXJyYXkuZlBvc0VuZDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmU3R5bGVUYWJsZVtmUnVuQXJyYXkuZlBvc0VuZF0gPSBuZXdTdHlsZTsKKyAgICAgICAgICAgICAgICBmUnVuQXJyYXkuZlJ1blN0YXJ0W2ZSdW5BcnJheS5mUG9zRW5kXSA9IGN1cnJlbnRSdW5TdGFydDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbWVyZ2VTdHlsZSA9IG5ld1N0eWxlOworCisgICAgICAgICAgICBpbnQgbmV4dFJ1blN0YXJ0ID0gZlJ1bkFycmF5LmdldExvZ2ljYWxSdW5TdGFydChmUnVuQXJyYXkuZk5lZ1N0YXJ0KTsKKworICAgICAgICAgICAgaWYgKGxpbWl0ID4gbmV4dFJ1blN0YXJ0KSB7CisgICAgICAgICAgICAgICAgb2xkU3R5bGUgPSBmU3R5bGVUYWJsZVtmUnVuQXJyYXkuZk5lZ1N0YXJ0XTsKKyAgICAgICAgICAgICAgICBjdXJyZW50UnVuU3RhcnQgPSBuZXh0UnVuU3RhcnQ7CisgICAgICAgICAgICAgICAgaWYgKG1vZGlmaWVkKSB7CisgICAgICAgICAgICAgICAgICAgIGRhbWFnZWRSYW5nZVsxXSA9IE1hdGgubWF4KGN1cnJlbnRSdW5TdGFydCwgZGFtYWdlZFJhbmdlWzFdKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKytmUnVuQXJyYXkuZk5lZ1N0YXJ0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGxpbWl0IDwgbmV4dFJ1blN0YXJ0ICYmICFvbGRTdHlsZS5lcXVhbHMobWVyZ2VTdHlsZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXhwYW5kU3R5bGVUYWJsZUlmRnVsbCgpOworICAgICAgICAgICAgICAgICAgICArK2ZSdW5BcnJheS5mUG9zRW5kOworICAgICAgICAgICAgICAgICAgICBmU3R5bGVUYWJsZVtmUnVuQXJyYXkuZlBvc0VuZF0gPSBvbGRTdHlsZTsKKyAgICAgICAgICAgICAgICAgICAgZlJ1bkFycmF5LmZSdW5TdGFydFtmUnVuQXJyYXkuZlBvc0VuZF0gPSBsaW1pdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1vZGlmaWVkKSB7CisgICAgICAgICAgICAgICAgICAgIGRhbWFnZWRSYW5nZVsxXSA9IE1hdGgubWF4KGxpbWl0LCBkYW1hZ2VkUmFuZ2VbMV0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIG1lcmdlIGxhc3QgcnVuIGlmIG5lZWRlZAorICAgICAgICBpZiAoKGZSdW5BcnJheS5mTmVnU3RhcnQgPCBmUnVuQXJyYXkuZ2V0QXJyYXlMZW5ndGgoKSkgJiYKKyAgICAgICAgICAgICAgICAgICAgKGZTdHlsZVRhYmxlW2ZSdW5BcnJheS5mTmVnU3RhcnRdLmVxdWFscyhmU3R5bGVUYWJsZVtmUnVuQXJyYXkuZlBvc0VuZF0pKSkgeworICAgICAgICAgICAgZlJ1bkFycmF5LmZOZWdTdGFydCsrOworICAgICAgICB9CisKKyAgICAgICAgZlJ1bkFycmF5LnJ1blN0YXJ0c0NoYW5nZWQoKTsKKworICAgICAgICByZXR1cm4gbW9kaWZpZWRBbnl3aGVyZTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IHN0eWxlU3RhcnQoaW50IHBvcykgeworCisgICAgICAgIGlmIChwb3MgPT0gZlJ1bkFycmF5LmdldEN1clRleHRMZW5ndGgoKSkgeworICAgICAgICAgICAgcmV0dXJuIHBvczsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmUnVuQXJyYXkuZ2V0TG9naWNhbFJ1blN0YXJ0KGZSdW5BcnJheS5maW5kUnVuQ29udGFpbmluZyhwb3MpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IHN0eWxlTGltaXQoaW50IHBvcykgeworCisgICAgICAgIGlmIChwb3MgPT0gZlJ1bkFycmF5LmdldEN1clRleHRMZW5ndGgoKSkgeworICAgICAgICAgICAgcmV0dXJuIHBvczsKKyAgICAgICAgfQorCisgICAgICAgIGludCBydW4gPSBmUnVuQXJyYXkuZmluZFJ1bkNvbnRhaW5pbmcocG9zKTsKKworICAgICAgICBpZiAocnVuID09IGZSdW5BcnJheS5mUG9zRW5kKSB7CisgICAgICAgICAgICBydW4gPSBmUnVuQXJyYXkuZk5lZ1N0YXJ0OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgKytydW47CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZlJ1bkFycmF5LmdldExvZ2ljYWxSdW5TdGFydChydW4pOworICAgIH0KKworLyoqCisqIFJldHVybiBzdHlsZSBhdCBsb2NhdGlvbiA8dHQ+cG9zPC90dD4uCisqIEBwYXJhbSBwb3MgYW4gb2Zmc2V0IGludG8gdGhlIHRleHQKKyogQHJldHVybnMgdGhlIHN0eWxlIG9mIHRoZSBjaGFyYWN0ZXIgYXQgPHR0Pm9mZnNldDwvdHQ+CisqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVNYXAgc3R5bGVBdChpbnQgcG9zKSB7CisKKyAgICAgICAgcmV0dXJuIGZTdHlsZVRhYmxlWyBmUnVuQXJyYXkuZmluZFJ1bkNvbnRhaW5pbmcocG9zKSBdOworICAgIH0KKworLyoKKyogU2V0IHJ1biBzdGFydCwgcnVuIGxlbmd0aCwgYW5kIHJ1biB2YWx1ZSBpbiBhbiBpdGVyYXRvci4gIFRoaXMgbWV0aG9kIGlzCisqIG9ubHkgY2FsbGVkIGJ5IGEgPHR0PlN0eWxlUnVuSXRlcmF0b3I8L3R0Pi4KKyogQHBhcmFtIHBvcyBhbiBvZmZzZXQgaW50byB0aGUgdGV4dC4gIFRoZSBpdGVyYXRvcidzIHJ1biBzdGFydCBhbmQgcnVuIGxpbWl0IGFyZQorKiBzZXQgdG8gdGhlIHJ1biBjb250YWluaW5nIDx0dD5wb3M8L3R0Pi4KKyogQHBhcmFtIGl0ZXIgdGhlIGl0ZXJhdG9yIHRvIHNldAorKi8KKyAgICB2b2lkIHNldEl0ZXJhdG9yKGludCBwb3MsIFN0eWxlUnVuSXRlcmF0b3IgaXRlcikgeworCisgICAgICAgIGlmICgocG9zIDwgMCkgfHwgKHBvcyA+IGZSdW5BcnJheS5nZXRDdXJUZXh0TGVuZ3RoKCkpKSB7CisKKyAgICAgICAgICAgIGl0ZXIuc2V0KG51bGwsIDAsIDAsIGtOb1J1bik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpbnQgcnVuID0gZlJ1bkFycmF5LmZpbmRSdW5Db250YWluaW5nKHBvcyk7CisKKyAgICAgICAgc2V0SXRlcmF0b3JVc2luZ1J1bihydW4sIGl0ZXIpOworICAgIH0KKworLyoqCisqIFNldCBydW4gc3RhcnQsIHJ1biBsZW5ndGgsIGFuZCBydW4gdmFsdWUgaW4gYW4gaXRlcmF0b3IuICBUaGlzIG1ldGhvZCBpcworKiBvbmx5IGNhbGxlZCBieSBhIDx0dD5TdHlsZVJ1bkl0ZXJhdG9yPC90dD4uCisqIEBwYXJhbSBydW4gdGhlIGluZGV4IG9mIHRoZSBydW4gdG8gd2hpY2ggdGhlIGl0ZXJhdG9yIHNob3VsZCBiZSBzZXQKKyogQHBhcmFtIGl0ZXIgdGhlIGl0ZXJhdG9yIHRvIHNldAorKi8KKyAgICBwcml2YXRlIHZvaWQgc2V0SXRlcmF0b3JVc2luZ1J1bihpbnQgcnVuLCBTdHlsZVJ1bkl0ZXJhdG9yIGl0ZXIpIHsKKworICAgICAgICBpbnQgbGFzdFZhbGlkUnVuID0gZlJ1bkFycmF5Lmxhc3RSdW4oKTsKKworICAgICAgICBpZiAocnVuIDwgMCB8fCBydW4gPiBsYXN0VmFsaWRSdW4pIHsKKworICAgICAgICAgICAgaXRlci5zZXQobnVsbCwgMCwgMCwga05vUnVuKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChydW4gPT0gZlJ1bkFycmF5LmZQb3NFbmQrMSkKKyAgICAgICAgICAgIHJ1biA9IGZSdW5BcnJheS5mTmVnU3RhcnQ7CisgICAgICAgIGVsc2UgaWYgKHJ1biA9PSBmUnVuQXJyYXkuZk5lZ1N0YXJ0LTEpCisgICAgICAgICAgICBydW4gPSBmUnVuQXJyYXkuZlBvc0VuZDsKKworICAgICAgICBpbnQgcnVuU3RhcnQgPSBmUnVuQXJyYXkuZlJ1blN0YXJ0W3J1bl07CisgICAgICAgIGlmIChydW5TdGFydCA8IDApCisgICAgICAgICAgICBydW5TdGFydCArPSBmUnVuQXJyYXkuZ2V0Q3VyVGV4dExlbmd0aCgpOworCisgICAgICAgIEF0dHJpYnV0ZU1hcCBzdHlsZSA9IGZTdHlsZVRhYmxlW3J1bl07CisKKyAgICAgICAgaW50IG5leHRSdW47CisKKyAgICAgICAgaWYgKHJ1biA9PSBmUnVuQXJyYXkuZlBvc0VuZCkKKyAgICAgICAgICAgIG5leHRSdW4gPSBmUnVuQXJyYXkuZk5lZ1N0YXJ0OworICAgICAgICBlbHNlCisgICAgICAgICAgICBuZXh0UnVuID0gcnVuICsgMTsKKworICAgICAgICBpbnQgcnVuTGltaXQ7CisKKyAgICAgICAgaWYgKG5leHRSdW4gPj0gZlJ1bkFycmF5LmdldEFycmF5TGVuZ3RoKCkpCisgICAgICAgICAgICBydW5MaW1pdCA9IGZSdW5BcnJheS5nZXRDdXJUZXh0TGVuZ3RoKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcnVuTGltaXQgPSBmUnVuQXJyYXkuZlJ1blN0YXJ0W25leHRSdW5dOworICAgICAgICAgICAgaWYgKHJ1bkxpbWl0IDwgMCkKKyAgICAgICAgICAgICAgICBydW5MaW1pdCArPSBmUnVuQXJyYXkuZ2V0Q3VyVGV4dExlbmd0aCgpOworICAgICAgICB9CisKKyAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oInNldEl0ZXJhdG9yOiBwb3M9Iitwb3MrIiwgcnVuU3RhcnQ9IitydW5TdGFydCsiLCBydW5MaW1pdD0iK3J1bkxpbWl0KworICAgICAgICAvLyAgICAgICAgICAgICAgICAgICIsIHJ1bj0iK3J1bisiLCBmUG9zRW5kPSIrZlBvc0VuZCk7CisKKyAgICAgICAgaXRlci5zZXQoc3R5bGUsIHJ1blN0YXJ0LCBydW5MaW1pdCwgcnVuKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZXBsYWNlKGludCBzdGFydCwgaW50IGxpbWl0LCBNQ29uc3RUZXh0IHNyY1RleHQsIGludCBzcmNTdGFydCwgaW50IHNyY0xpbWl0KQorICAgIHsKKyAgICAgICAgZGVsZXRlVGV4dChzdGFydCwgbGltaXQpOworICAgICAgICBpZiAoc3JjU3RhcnQgPT0gc3JjTGltaXQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHByZXBhcmVTdHlsZUluc2VydChzdGFydCk7CisgICAgICAgIGZvciAoaW50IGoyID0gc3JjU3RhcnQ7IGoyIDwgc3JjTGltaXQ7IGoyID0gc3JjVGV4dC5jaGFyYWN0ZXJTdHlsZUxpbWl0KGoyKSkKKyAgICAgICAgeworICAgICAgICAgICAgQXR0cmlidXRlTWFwIGF0dHJpYnV0ZU1hcCA9IHNyY1RleHQuY2hhcmFjdGVyU3R5bGVBdChqMik7CisgICAgICAgICAgICBpZiAoZlJ1bkFycmF5LmZQb3NFbmQgPCAwIHx8ICFmU3R5bGVUYWJsZVtmUnVuQXJyYXkuZlBvc0VuZF0uZXF1YWxzKGF0dHJpYnV0ZU1hcCkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXhwYW5kU3R5bGVUYWJsZUlmRnVsbCgpOworICAgICAgICAgICAgICAgIGZSdW5BcnJheS5mUG9zRW5kKys7CisgICAgICAgICAgICAgICAgZlJ1bkFycmF5LmZSdW5TdGFydFtmUnVuQXJyYXkuZlBvc0VuZF0gPSBqMiAtIHNyY1N0YXJ0ICsgc3RhcnQ7CisgICAgICAgICAgICAgICAgZlN0eWxlVGFibGVbZlJ1bkFycmF5LmZQb3NFbmRdID0gYXR0cmlidXRlTWFwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZSdW5BcnJheS5hZGRUb0N1clRleHRMZW5ndGgoc3JjTGltaXQgLSBzcmNTdGFydCk7CisgICAgICAgIGlmIChmUnVuQXJyYXkuZk5lZ1N0YXJ0IDwgZlJ1bkFycmF5LmdldEFycmF5TGVuZ3RoKCkgJiYgZlN0eWxlVGFibGVbZlJ1bkFycmF5LmZOZWdTdGFydF0uZXF1YWxzKGZTdHlsZVRhYmxlW2ZSdW5BcnJheS5mUG9zRW5kXSkpCisgICAgICAgICAgICBmUnVuQXJyYXkuZk5lZ1N0YXJ0Kys7CisgICAgfQorCisgICAgcHJpdmF0ZSAgc3RhdGljIGZpbmFsIGludCBrTm9SdW4gPSAtNDI7IC8vIGl0ZXJhdG9yIHVzZQorCisgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBTdHlsZVJ1bkl0ZXJhdG9yIC8qaW1wbGVtZW50cyBNU3R5bGVSdW5JdGVyYXRvciovIHsKKworICAgICAgICBTdHlsZVJ1bkl0ZXJhdG9yKGludCBzdGFydCwgaW50IGxpbWl0KQorICAgICAgICB7CisgICAgICAgICAgICByZXNldChzdGFydCwgbGltaXQsIHN0YXJ0KTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHJlc2V0KGludCBzdGFydCwgaW50IGxpbWl0LCBpbnQgcG9zKQorICAgICAgICB7CisgICAgICAgICAgICBmU3RhcnQgPSBzdGFydDsKKyAgICAgICAgICAgIGZMaW1pdCA9IGxpbWl0OworICAgICAgICAgICAgc2V0SXRlcmF0b3IoZlN0YXJ0LCB0aGlzKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzVmFsaWQoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZlN0eWxlICE9IG51bGw7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBuZXh0KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGZSdW5MaW1pdCA8IGZMaW1pdCkgeworICAgICAgICAgICAgICAgIGZDdXJyZW50UnVuKys7CisgICAgICAgICAgICAgICAgc2V0SXRlcmF0b3JVc2luZ1J1bihmQ3VycmVudFJ1biwgdGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2V0KG51bGwsIDAsIDAsIGtOb1J1bik7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBwcmV2KCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGZSdW5TdGFydCA+IGZTdGFydCkgeworICAgICAgICAgICAgICAgIGZDdXJyZW50UnVuLS07CisgICAgICAgICAgICAgICAgc2V0SXRlcmF0b3JVc2luZ1J1bihmQ3VycmVudFJ1biwgdGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2V0KG51bGwsIDAsIDAsIGtOb1J1bik7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBzZXQoaW50IHBvcykKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKHBvcyA+PSBmU3RhcnQgJiYgcG9zIDwgZkxpbWl0KSB7CisgICAgICAgICAgICAgICAgc2V0SXRlcmF0b3IocG9zLCB0aGlzKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2V0KG51bGwsIDAsIDAsIGtOb1J1bik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHNldChBdHRyaWJ1dGVNYXAgc3R5bGUsIGludCBzdGFydCwgaW50IGxpbWl0LCBpbnQgY3VycmVudFJ1bikKKyAgICAgICAgeworICAgICAgICAgICAgZlN0eWxlID0gc3R5bGU7CisgICAgICAgICAgICBmQ3VycmVudFJ1biA9IGN1cnJlbnRSdW47CisgICAgICAgICAgICBmUnVuU3RhcnQgPSBzdGFydCA8IGZTdGFydCA/IGZTdGFydCA6IHN0YXJ0OworICAgICAgICAgICAgZlJ1bkxpbWl0ID0gbGltaXQgPiBmTGltaXQgPyBmTGltaXQgOiBsaW1pdDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHJlc2V0KGludCBzdGFydCwgaW50IGxpbWl0KQorICAgICAgICB7CisgICAgICAgICAgICByZXNldChzdGFydCwgbGltaXQsIHN0YXJ0KTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIGZpcnN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgc2V0KGZTdGFydCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBsYXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgc2V0KGZMaW1pdCAtIDEpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCByYW5nZVN0YXJ0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZTdGFydDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgcmFuZ2VMaW1pdCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmTGltaXQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IHJhbmdlTGVuZ3RoKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZMaW1pdCAtIGZTdGFydDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBBdHRyaWJ1dGVNYXAgc3R5bGUoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gZlN0eWxlOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBydW5TdGFydCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmUnVuU3RhcnQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IHJ1bkxpbWl0KCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZSdW5MaW1pdDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgcnVuTGVuZ3RoKCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIGZSdW5MaW1pdCAtIGZSdW5TdGFydDsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgaW50IGZTdGFydDsKKyAgICAgICAgcHJpdmF0ZSBpbnQgZkxpbWl0OworICAgICAgICBwcml2YXRlIEF0dHJpYnV0ZU1hcCBmU3R5bGU7CisgICAgICAgIHByaXZhdGUgaW50IGZSdW5TdGFydDsKKyAgICAgICAgcHJpdmF0ZSBpbnQgZlJ1bkxpbWl0OworICAgICAgICBwcml2YXRlIGludCBmQ3VycmVudFJ1bjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9TdHlsZU1vZGlmaWVyLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L1N0eWxlTW9kaWZpZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45MDQ1M2MxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9TdHlsZU1vZGlmaWVyLmphdmEKQEAgLTAsMCArMSwxOTIgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFN0eWxlTW9kaWZpZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0NToxMCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQ7CisKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlU2V0OworCisvKioKKyAqIFN0eWxlTW9kaWZpZXIgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIG9wZXJhdGlvbnMgb24gQXR0cmlidXRlTWFwLiAgVG8gaW1wbGVtZW50CisgKiBhbiBvcGVyYXRpb24gb24gQXR0cmlidXRlTWFwLCBzdWJjbGFzcyBTdHlsZU1vZGlmaWVyIGFuZCBvdmVycmlkZQorICogPGNvZGU+bW9kaWZ5U3R5bGU8L2NvZGU+LiAgU3R5bGVNb2RpZmllcnMgYXJlIHVzZWQgYnkgTVRleHQuCisgKiA8cD4KKyAqIEZvciBjb252ZW5pZW5jZSwgdGhpcyBjbGFzcyBjb250YWlucyBmYWN0b3J5IG1ldGhvZHMgd2hpY2ggd2lsbCBjcmVhdGUgYQorICogU3R5bGVNb2RpZmllciBmb3IKKyAqIGNlcnRhaW4gY29tbW9uIG9wZXJhdGlvbnM6IGF0dHJpYnV0ZSB1bmlvbiwgYXR0cmlidXRlIHJlbW92YWwsIGFuZCBBdHRyaWJ1dGVNYXAKKyAqIHJlcGxhY2VtZW50LgorICogQHNlZSBBdHRyaWJ1dGVNYXAKKyAqIEBzZWUgQXR0cmlidXRlU2V0CisgKiBAc2VlIE1UZXh0CisgKi8KKy8qCisgKiB7amJyfSBTdHlsZU1vZGlmaWVyIGlzIG5vdCB0aGUgYmVzdCBuYW1lIGZvciB0aGlzIGNsYXNzIC0gc3R5bGVzIGFyZSBpbW11dGFibGUgYW5kIG5ldmVyCisgKiByZWFsbHkgbW9kaWZpZWQuCisgKi8KK3B1YmxpYyBjbGFzcyBTdHlsZU1vZGlmaWVyCit7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBTdHlsZU1vZGlmaWVyLgorICAgICAqLworICAgIHByb3RlY3RlZCBTdHlsZU1vZGlmaWVyKCkgeworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgcmVzdWx0IG9mIHRoaXMgU3R5bGVNb2RpZmllcidzIG9wZXJhdGlvbiBvbiB0aGUgZ2l2ZW4gc3R5bGUuCisgICAgICogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBqdXN0IHJldHVybnMgdGhlIGdpdmVuIHN0eWxlLgorICAgICAqIEBwYXJhbSBzdHlsZSB0aGUgQXR0cmlidXRlTWFwIHRvIHBlcmZvcm0gdGhlIG9wZXJhdGlvbiBvbgorICAgICAqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVNYXAgbW9kaWZ5U3R5bGUoQXR0cmlidXRlTWFwIHN0eWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0eWxlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEEgU3R5bGVNb2RpZmllciB3aGljaCBzaW1wbHkgcmV0dXJucyB0aGUgZ2l2ZW4gc3R5bGUuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHlsZU1vZGlmaWVyIElERU5USVRZID0gbmV3IFN0eWxlTW9kaWZpZXIoKTsKKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIFN0eWxlTW9kaWZpZXIgd2hvc2Ugb3BlcmF0aW9uIGlzCisgICAgICogPGNvZGU+c3R5bGUuYWRkQXR0cmlidXRlcyhzKTwvY29kZT4sCisgICAgICogd2hlcmUgPGNvZGU+c3R5bGU8L2NvZGU+IGlzIHRoZSBBdHRyaWJ1dGVNYXAgcGFzc2VkIHRvCisgICAgICogPGNvZGU+bW9kaWZ5U3R5bGU8L2NvZGU+LgorICAgICAqIEBwYXJhbSBzIHRoZSBBdHRyaWJ1dGVNYXAgdG8gdW5pb24gd2l0aAorICAgICAqIEByZXR1cm4gYSBTdHlsZU1vZGlmaWVyIGZvciB0aGlzIG9wZXJhdGlvbgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3R5bGVNb2RpZmllciBjcmVhdGVBZGRNb2RpZmllcihBdHRyaWJ1dGVNYXAgcykgeworCisgICAgICAgIHJldHVybiBuZXcgU3R5bGVBZGRNb2RpZmllcihzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBTdHlsZU1vZGlmaWVyIHdob3NlIG9wZXJhdGlvbiBpcworICAgICAqIDxjb2RlPnN0eWxlLmFkZEF0dHJpYnV0ZShrZXksIHZhbHVlKTwvY29kZT4sCisgICAgICogd2hlcmUgPGNvZGU+c3R5bGU8L2NvZGU+IGlzIHRoZSBBdHRyaWJ1dGVNYXAgcGFzc2VkIHRvCisgICAgICogPGNvZGU+bW9kaWZ5U3R5bGU8L2NvZGU+LgorICAgICAqIEBwYXJhbSBrZXkgdGhlIGtleSB0byBhZGQKKyAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIGFkZAorICAgICAqIEByZXR1cm4gYSBTdHlsZU1vZGlmaWVyIGZvciB0aGlzIG9wZXJhdGlvbgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3R5bGVNb2RpZmllciBjcmVhdGVBZGRNb2RpZmllcihPYmplY3Qga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QgdmFsdWUpIHsKKworICAgICAgICByZXR1cm4gbmV3IEF0dHJpYnV0ZUFkZE1vZGlmaWVyKGtleSwgdmFsdWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIFN0eWxlTW9kaWZpZXIgd2hvc2Ugb3BlcmF0aW9uIHJldHVybnMgPGNvZGU+czwvY29kZT4sCisgICAgICogaWdub3JpbmcgdGhlIHBhcmFtZXRlciB0byA8Y29kZT5tb2RpZnlTdHlsZTwvY29kZT4uCisgICAgICogQHBhcmFtIHMgdGhlIEF0dHJpYnV0ZU1hcCB3aGljaCB3aWxsIHJlcGxhY2UgYW55IG90aGVyIEF0dHJpYnV0ZU1hcAorICAgICAqIEByZXR1cm4gYSBTdHlsZU1vZGlmaWVyIGZvciB0aGlzIG9wZXJhdGlvbgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3R5bGVNb2RpZmllciBjcmVhdGVSZXBsYWNlTW9kaWZpZXIoQXR0cmlidXRlTWFwIHMpIHsKKworICAgICAgICByZXR1cm4gbmV3IFN0eWxlUmVwbGFjZU1vZGlmaWVyKHMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIFN0eWxlTW9kaWZpZXIgd2hvc2Ugb3BlcmF0aW9uIGlzCisgICAgICogPGNvZGU+c3R5bGUucmVtb3ZlQXR0cmlidXRlcyhzKTwvY29kZT4sCisgICAgICogd2hlcmUgPGNvZGU+c3R5bGU8L2NvZGU+IGlzIHRoZSBBdHRyaWJ1dGVNYXAgcGFzc2VkIHRvCisgICAgICogPGNvZGU+bW9kaWZ5U3R5bGU8L2NvZGU+LgorICAgICAqIEBwYXJhbSBzIHRoZSBBdHRyaWJ1dGVTZXQgb2YgYXR0cmlidXRlcyB0byByZW1vdmUKKyAgICAgKiBAcmV0dXJuIGEgU3R5bGVNb2RpZmllciBmb3IgdGhpcyBvcGVyYXRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0eWxlTW9kaWZpZXIgY3JlYXRlUmVtb3ZlTW9kaWZpZXIoQXR0cmlidXRlU2V0IHMpIHsKKworICAgICAgICByZXR1cm4gbmV3IFN0eWxlUmVtb3ZlTW9kaWZpZXIocyk7CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIGNsYXNzIEF0dHJpYnV0ZUFkZE1vZGlmaWVyIGV4dGVuZHMgU3R5bGVNb2RpZmllciB7CisKKyAgICAgICAgcHJpdmF0ZSBPYmplY3QgZktleTsKKyAgICAgICAgcHJpdmF0ZSBPYmplY3QgZlZhbHVlOworCisgICAgICAgIHB1YmxpYyBBdHRyaWJ1dGVBZGRNb2RpZmllcihPYmplY3Qga2V5LCBPYmplY3QgdmFsdWUpIHsKKworICAgICAgICAgICAgZktleSA9IGtleTsKKyAgICAgICAgICAgIGZWYWx1ZSA9IHZhbHVlOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBtb2RpZnlTdHlsZShBdHRyaWJ1dGVNYXAgc3R5bGUpIHsKKworICAgICAgICAgICAgcmV0dXJuIHN0eWxlLmFkZEF0dHJpYnV0ZShmS2V5LCBmVmFsdWUpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIHRoaXMgd2l0aCB0aGUgc3R5bGVzIHRvIGFkZC4gIFRoZXNlIHN0eWxlcyB3aWxsIGFkZCB0byBhbmQgb3ZlcnJpZGUgYW55IGFscmVhZHkKKyAgICAgKiBwcmVzZW50IGluIHRoZSBzdHlsZSBwYXNzZWQgdG8gbW9kaWZ5U3R5bGUuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGNsYXNzIFN0eWxlQWRkTW9kaWZpZXIgZXh0ZW5kcyBTdHlsZU1vZGlmaWVyCisgICAgeworICAgICAgICBwcml2YXRlIEF0dHJpYnV0ZU1hcCBmU3R5bGU7CisKKyAgICAgICAgcHVibGljIFN0eWxlQWRkTW9kaWZpZXIoQXR0cmlidXRlTWFwIHN0eWxlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoc3R5bGUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInN0eWxlIGlzIG51bGwiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZTdHlsZSA9IHN0eWxlOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBtb2RpZnlTdHlsZShBdHRyaWJ1dGVNYXAgc3R5bGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBzdHlsZS5hZGRBdHRyaWJ1dGVzKGZTdHlsZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgdGhpcyB3aXRoIHRoZSBzdHlsZXMgdG8gcmVwbGFjZS4gIEFsbCBzdHlsZSBydW5zIHdpbGwgaGF2ZSBvbmx5IHRoZXNlCisgICAgICogc3R5bGVzLgorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBjbGFzcyBTdHlsZVJlcGxhY2VNb2RpZmllciBleHRlbmRzIFN0eWxlTW9kaWZpZXIKKyAgICB7CisgICAgICAgIHByaXZhdGUgQXR0cmlidXRlTWFwIGZTdHlsZTsKKworICAgICAgICBwdWJsaWMgU3R5bGVSZXBsYWNlTW9kaWZpZXIoQXR0cmlidXRlTWFwIHN0eWxlKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoc3R5bGUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInN0eWxlIGlzIG51bGwiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZTdHlsZSA9IHN0eWxlOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBtb2RpZnlTdHlsZShBdHRyaWJ1dGVNYXAgc3R5bGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBmU3R5bGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgY2xhc3MgU3R5bGVSZW1vdmVNb2RpZmllciBleHRlbmRzIFN0eWxlTW9kaWZpZXIgeworCisgICAgICAgIHByaXZhdGUgQXR0cmlidXRlU2V0IGZSZW1vdmVTZXQ7CisKKyAgICAgICAgcHVibGljIFN0eWxlUmVtb3ZlTW9kaWZpZXIoQXR0cmlidXRlU2V0IHJlbW92ZVNldCkgeworCisgICAgICAgICAgICBpZiAocmVtb3ZlU2V0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJzZXQgaXMgbnVsbCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZlJlbW92ZVNldCA9IHJlbW92ZVNldDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBBdHRyaWJ1dGVNYXAgbW9kaWZ5U3R5bGUoQXR0cmlidXRlTWFwIHN0eWxlKSB7CisKKyAgICAgICAgICAgIHJldHVybiBzdHlsZS5yZW1vdmVBdHRyaWJ1dGVzKGZSZW1vdmVTZXQpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9TdHlsZWRUZXh0LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L1N0eWxlZFRleHQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41NTIwNjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9TdHlsZWRUZXh0LmphdmEKQEAgLTAsMCArMSw2ODYgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFN0eWxlZFRleHQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0NToxMCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQ7CisKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CisKK2ltcG9ydCBqYXZhLmlvLkV4dGVybmFsaXphYmxlOworaW1wb3J0IGphdmEuaW8uT2JqZWN0SW5wdXQ7CitpbXBvcnQgamF2YS5pby5PYmplY3RPdXRwdXQ7CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I7CisKKy8qKgorICogVGhpcyBjbGFzcyBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBNVGV4dCwgYSBtb2RpZnlhYmxlLCBzdHlsZWQgdGV4dAorICogc3RvcmFnZSBtb2RlbC4gIEFkZGl0aW9uYWxseSwgaXQgc3VwcG9ydHMgcGVyc2lzdGFuY2UgdGhyb3VnaCB0aGUKKyAqIEV4dGVybmFsaXphYmxlIGludGVyZmFjZS4KKyAqIEBzZWUgTVRleHQKKyAqLworCisvKgorICAgIDEwLzI4Lzk2IHtqZn0gLSBzcGxpdCB0aGUgY2hhcmFjdGVyIGFuZCBwYXJhZ3JhcGggc3R5bGUgYWNjZXNzIGFuZCBzZXR0ZXIgZnVuY3Rpb24gYXJvdW5kLi4uCisgICAgICAgICAgICBqdXN0IHRvIGtlZXAgdGhpbmdzIGludGVyZXN0aW5nLgorICAgIDgvNy85NiB7amZ9IC0gbW92ZWQgcGFyYWdyYXBoIGJyZWFrIGltcGxlbWVudGF0aW9uIGZyb20gQWJzdHJhY3RUZXh0IGludG8gU3R5bGUgdGV4dC4KKyAgICAgICAgICAgIC0gYWRkZWQgY291bnRTdHlsZXMsIGdldFN0eWxlcywgYW5kIFJlcGxhY2VTdHlsZXMgaW1wbGVtZW50YXRpb24uCisKKyAgICA4LzE0Lzk2IHNmYiAgZWxpbWluYXRlZCBTdHlsZVNoZWV0SXRlcmF0b3IKKworICAgIDgvMjkvOTYge2picn0gY2hhbmdlZCBpdGVyLWJhc2VkIHJlcGxhY2UgbWV0aG9kIC0gZG9lc24ndCBjYWxsIGF0KCkgdW5sZXNzIGl0IGlzIHNhZmUgdG8gZG8gc28KKyAgICAgICAgICAgIEFsc28sIGFkZGVkIGNoZWNrU3RhcnRBbmRMaW1pdCBmb3IgZGVidWdnaW5nCisKKyAgICA3LzMxLzk4IFN3aXRjaGVkIGZyb20gU3R5bGUgdG8gQXR0cmlidXRlTWFwCisKKyovCisKK3B1YmxpYyBmaW5hbCBjbGFzcyBTdHlsZWRUZXh0IGV4dGVuZHMgTVRleHQgaW1wbGVtZW50cyBFeHRlcm5hbGl6YWJsZQoreworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENVUlJFTlRfVkVSU0lPTiA9IDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMjIzNTY5MzQ7CisKKyAgICAvKiB1bmljb2RlIHN0b3JhZ2UgKi8KKyAgICBwcml2YXRlIE1DaGFyQnVmZmVyICAgICAgICAgZkNoYXJCdWZmZXI7CisgICAgLyogY2hhcmFjdGVyIHN0eWxlIHN0b3JhZ2UgKi8KKyAgICBwcml2YXRlIE1TdHlsZUJ1ZmZlciAgICAgICAgZlN0eWxlQnVmZmVyOworICAgIC8qIHBhcmFncmFwaCBzdHlsZSBzdG9yYWdlICovCisgICAgcHJpdmF0ZSBNUGFyYWdyYXBoQnVmZmVyICAgIGZQYXJhZ3JhcGhCdWZmZXI7CisKKyAgICBwcml2YXRlIHRyYW5zaWVudCBpbnQgZlRpbWVTdGFtcCA9IDA7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgaW50W10gZkRhbWFnZWRSYW5nZSA9IHsgSW50ZWdlci5NQVhfVkFMVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci5NSU5fVkFMVUUgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIEZvcmNlTW9kaWZpZXIgZXh0ZW5kcyBTdHlsZU1vZGlmaWVyIHsKKworICAgICAgICBwcml2YXRlIEF0dHJpYnV0ZU1hcCBmU3R5bGUgPSBBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUDsKKworICAgICAgICB2b2lkIHNldFN0eWxlKEF0dHJpYnV0ZU1hcCBzdHlsZSkgeworCisgICAgICAgICAgICBmU3R5bGUgPSBzdHlsZTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBBdHRyaWJ1dGVNYXAgbW9kaWZ5U3R5bGUoQXR0cmlidXRlTWFwIHN0eWxlKSB7CisKKyAgICAgICAgICAgIHJldHVybiBmU3R5bGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBLZWVwIHRoaXMgYXJvdW5kIGZvcnVzZSBpbiByZXBsYWNlQ2hhclN0eWxlc1dpdGguICBPSyBzaW5jZQorICAgIC8vIHRoaXMgY2xhc3MgaXNuJ3QgdGhyZWFkc2FmZSBhbnl3YXkuCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgRm9yY2VNb2RpZmllciBmb3JjZU1vZGlmaWVyID0gbnVsbDsKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gQ09OU1RSVUNUT1JTCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYW4gZW1wdHkgdGV4dCBvYmplY3QuCisgICAgICovCisgICAgcHVibGljIFN0eWxlZFRleHQoKQorICAgIHsKKyAgICAgICAgdGhpcygwKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYW4gZW1wdHkgdGV4dCBvYmplY3QgcmVhZHkgdG8gaG9sZCBhdCBsZWFzdCBjYXBhY2l0eSBjaGFycy4KKyAgICAgKiBAcGFyYW0gY2FwYWNpdHkgdGhlIG1pbmltdW0gY2FwYWNpdHkgb2YgdGhlIGludGVybmFsIHRleHQgYnVmZmVyCisgICAgICovCisgICAgcHVibGljIFN0eWxlZFRleHQoaW50IGNhcGFjaXR5KQorICAgIHsKKyAgICAgICAgZkNoYXJCdWZmZXIgICAgICAgICA9IGNhcGFjaXR5PjA/IG5ldyBDaGFyQnVmZmVyKGNhcGFjaXR5KSA6IG5ldyBDaGFyQnVmZmVyKCk7CisgICAgICAgIGZTdHlsZUJ1ZmZlciAgICAgICAgPSBuZXcgU3R5bGVCdWZmZXIodGhpcywgQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVApOworICAgICAgICBmUGFyYWdyYXBoQnVmZmVyICAgID0gbmV3IFBhcmFncmFwaEJ1ZmZlcihmQ2hhckJ1ZmZlcik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgdGV4dCBvYmplY3Qgd2l0aCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nLAorICAgICAqIGluIHRoZSBnaXZlbiBzdHlsZS4KKyAgICAgKiBAcGFyYW0gc3RyaW5nIHRoZSBpbml0aWFsIGNvbnRlbnRzCisgICAgICogQHBhcmFtIGluaXRpYWxTdHlsZSB0aGUgc3R5bGUgb2YgdGhlIGluaXRpYWwgdGV4dAorICAgICAqLworICAgIHB1YmxpYyBTdHlsZWRUZXh0KFN0cmluZyBzdHJpbmcsIEF0dHJpYnV0ZU1hcCBpbml0aWFsU3R5bGUpCisgICAgeworICAgICAgICBmQ2hhckJ1ZmZlciA9IG5ldyBDaGFyQnVmZmVyKHN0cmluZy5sZW5ndGgoKSk7CisgICAgICAgIGZDaGFyQnVmZmVyLnJlcGxhY2UoMCwgMCwgc3RyaW5nLCAwLCBzdHJpbmcubGVuZ3RoKCkpOworCisgICAgICAgIGZTdHlsZUJ1ZmZlciA9IG5ldyBTdHlsZUJ1ZmZlcih0aGlzLCBpbml0aWFsU3R5bGUpOworICAgICAgICBmUGFyYWdyYXBoQnVmZmVyID0gbmV3IFBhcmFncmFwaEJ1ZmZlcihmQ2hhckJ1ZmZlcik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgdGV4dCBvYmplY3QgZnJvbSB0aGUgZ2l2ZW4gc291cmNlLgorICAgICAqIEBwYXJhbSBzb3VyY2UgdGhlIHRleHQgdG8gY29weQorICAgICAqLworICAgIHB1YmxpYyBTdHlsZWRUZXh0KE1Db25zdFRleHQgc291cmNlKSB7CisgICAgICAgIHRoaXMoKTsKKyAgICAgICAgYXBwZW5kKHNvdXJjZSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENyZWF0ZSBhIHRleHQgb2JqZWN0IGZyb20gYSBzdWJyYW5nZSBvZiB0aGUgZ2l2ZW4gc291cmNlLgorICAgICAqIEBwYXJhbSBzb3VyY2UgdGhlIHRleHQgdG8gY29weSBmcm9tCisgICAgICogQHBhcmFtIHNyY1N0YXJ0IHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIHRvIGNvcHkKKyAgICAgKiBAcGFyYW0gc3JjTGltaXQgdGhlIGluZGV4IGFmdGVyIHRoZSBsYXN0IGNoYXJhY3RlciB0byBjb3B5CisgICAgICovCisgICAgcHVibGljIFN0eWxlZFRleHQoTUNvbnN0VGV4dCBzb3VyY2UsIGludCBzcmNTdGFydCwgaW50IHNyY0xpbWl0KSB7CisgICAgICAgIHRoaXMoKTsKKyAgICAgICAgcmVwbGFjZSgwLCAwLCBzb3VyY2UsIHNyY1N0YXJ0LCBzcmNMaW1pdCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgd3JpdGVFeHRlcm5hbChPYmplY3RPdXRwdXQgb3V0KSB0aHJvd3MgSU9FeGNlcHRpb24geworCisgICAgICAgIG91dC53cml0ZUludChDVVJSRU5UX1ZFUlNJT04pOworICAgICAgICBvdXQud3JpdGVPYmplY3QoZkNoYXJCdWZmZXIpOworICAgICAgICBvdXQud3JpdGVPYmplY3QoZlN0eWxlQnVmZmVyKTsKKyAgICAgICAgb3V0LndyaXRlT2JqZWN0KGZQYXJhZ3JhcGhCdWZmZXIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJlYWRFeHRlcm5hbChPYmplY3RJbnB1dCBpbikgdGhyb3dzIElPRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKKworICAgICAgICBpbnQgdmVyc2lvbiA9IGluLnJlYWRJbnQoKTsKKyAgICAgICAgaWYgKHZlcnNpb24gIT0gQ1VSUkVOVF9WRVJTSU9OKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSU9FeGNlcHRpb24oIkludmFsaWQgdmVyc2lvbiBvZiBTdHlsZWRUZXh0OiAiICsgdmVyc2lvbik7CisgICAgICAgIH0KKyAgICAgICAgZkNoYXJCdWZmZXIgPSAoTUNoYXJCdWZmZXIpIGluLnJlYWRPYmplY3QoKTsKKyAgICAgICAgZlN0eWxlQnVmZmVyID0gKE1TdHlsZUJ1ZmZlcikgaW4ucmVhZE9iamVjdCgpOworICAgICAgICBmUGFyYWdyYXBoQnVmZmVyID0gKE1QYXJhZ3JhcGhCdWZmZXIpIGluLnJlYWRPYmplY3QoKTsKKworICAgICAgICByZXNldERhbWFnZWRSYW5nZSgpOworICAgIH0KKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gTUNvbnN0VGV4dCBJTlRFUkZBQ0VTCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjaGFyYWN0ZXIgYWNjZXNzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLyoqCisqIFJldHVybiB0aGUgY2hhcmFjdGVyIGF0IG9mZnNldCA8Y29kZT5wb3M8L2NvZGU+LgorKiBAcGFyYW0gcG9zIGEgdmFsaWQgb2Zmc2V0IGludG8gdGhlIHRleHQKKyogQHJldHVybnMgdGhlIGNoYXJhY3RlciBhdCBvZmZzZXQgPGNvZGU+cG9zPC9jb2RlPgorKi8KKyAgICBwdWJsaWMgY2hhciBhdChpbnQgcG9zKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZDaGFyQnVmZmVyLmF0KHBvcyk7CisgICAgfQorCisvKioKKyogQ29weSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgWzxjb2RlPnN0YXJ0PC9jb2RlPiwgPGNvZGU+bGltaXQ8L2NvZGU+KQorKiBpbnRvIHRoZSBhcnJheSA8Y29kZT5kc3Q8L2NvZGU+LCBiZWdpbm5pbmcgYXQgPGNvZGU+ZHN0U3RhcnQ8L2NvZGU+LgorKiBAcGFyYW0gc3RhcnQgb2Zmc2V0IG9mIGZpcnN0IGNoYXJhY3RlciB3aGljaCB3aWxsIGJlIGNvcGllZCBpbnRvIHRoZSBhcnJheQorKiBAcGFyYW0gbGltaXQgb2Zmc2V0IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBsYXN0IGNoYXJhY3RlciB3aGljaCB3aWxsIGJlIGNvcGllZCBpbnRvIHRoZSBhcnJheQorKiBAcGFyYW0gZHN0IGFycmF5IGluIHdoaWNoIHRvIGNvcHkgY2hhcmFjdGVycy4gIFRoZSBsZW5ndGggb2YgPGNvZGU+ZHN0PC9jb2RlPiBtdXN0IGJlIGF0IGxlYXN0CisqICg8Y29kZT5kc3RTdGFydCArIGxpbWl0IC0gc3RhcnQ8L2NvZGU+KS4KKyovCisgICAgcHVibGljIHZvaWQgZXh0cmFjdENoYXJzKGludCBzdGFydCwgaW50IGxpbWl0LCBjaGFyW10gZHN0LCBpbnQgZHN0U3RhcnQpCisgICAgeworICAgICAgICBmQ2hhckJ1ZmZlci5hdChzdGFydCwgbGltaXQsIGRzdCwgZHN0U3RhcnQpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIHRleHQgbW9kZWwgY3JlYXRpb24KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8qKgorKiBDcmVhdGUgYW4gTUNvbnN0VGV4dCBjb250YWluaW5nIHRoZSBjaGFyYWN0ZXJzIGFuZCBzdHlsZXMgaW4gdGhlIHJhbmdlCisqIFs8Y29kZT5zdGFydDwvY29kZT4sIDxjb2RlPmxpbWl0PC9jb2RlPikuCisqIEBwYXJhbSBzdGFydCBvZmZzZXQgb2YgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSBuZXcgdGV4dAorKiBAcGFyYW0gbGltaXQgb2Zmc2V0IGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgbmV3IHRleHQKKyogQHJldHVybiBhbiBNQ29uc3RUZXh0IG9iamVjdCBjb250YWluaW5nIHRoZSBjaGFyYWN0ZXJzIGFuZCBzdHlsZXMgaW4gdGhlIGdpdmVuIHJhbmdlCisqLworICAgIHB1YmxpYyBNQ29uc3RUZXh0IGV4dHJhY3QoaW50IHN0YXJ0LCBpbnQgbGltaXQpCisgICAgeworICAgICAgICByZXR1cm4gZXh0cmFjdFdyaXRhYmxlKHN0YXJ0LCBsaW1pdCk7CisgICAgfQorCisvKioKKyogQ3JlYXRlIGFuIE1UZXh0IGNvbnRhaW5pbmcgdGhlIGNoYXJhY3RlcnMgYW5kIHN0eWxlcyBpbiB0aGUgcmFuZ2UKKyogWzxjb2RlPnN0YXJ0PC9jb2RlPiwgPGNvZGU+bGltaXQ8L2NvZGU+KS4KKyogQHBhcmFtIHN0YXJ0IG9mZnNldCBvZiBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIG5ldyB0ZXh0CisqIEBwYXJhbSBsaW1pdCBvZmZzZXQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSBuZXcgdGV4dAorKiBAcmV0dXJuIGFuIE1Db25zdFRleHQgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGNoYXJhY3RlcnMgYW5kIHN0eWxlcyBpbiB0aGUgZ2l2ZW4gcmFuZ2UKKyovCisgICAgcHVibGljIE1UZXh0IGV4dHJhY3RXcml0YWJsZShpbnQgc3RhcnQsIGludCBsaW1pdCkKKyAgICB7CisgICAgICAgIE1UZXh0IHRleHQgPSBuZXcgU3R5bGVkVGV4dCgpOworICAgICAgICB0ZXh0LnJlcGxhY2UoMCwgMCwgdGhpcywgc3RhcnQsIGxpbWl0KTsKKyAgICAgICAgdGV4dC5yZXNldERhbWFnZWRSYW5nZSgpOworICAgICAgICByZXR1cm4gdGV4dDsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gc2l6ZS9jYXBhY2l0eQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8qKgorKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgTUNvbnN0VGV4dCBvYmplY3QuICBUaGUgbGVuZ3RoIGlzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgdGV4dC4KKyogQHJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSBNQ29uc3RUZXh0IG9iamVjdAorKi8KKyAgICBwdWJsaWMgaW50IGxlbmd0aCgpCisgICAgeworICAgICAgICByZXR1cm4gZkNoYXJCdWZmZXIubGVuZ3RoKCk7CisgICAgfQorCisvKioKKyogQ3JlYXRlIGEgPGNvZGU+Q2hhcmFjdGVySXRlcmF0b3I8L2NvZGU+IG92ZXIgdGhlIHJhbmdlIFs8Y29kZT5zdGFydDwvY29kZT4sIDxjb2RlPmxpbWl0PC9jb2RlPikuCisqIEBwYXJhbSBzdGFydCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBpdGVyYXRvcidzIHJhbmdlCisqIEBwYXJhbSBsaW1pdCB0aGUgbGltaXQgb2YgdGhlIGl0ZXJhdG9yJ3MgcmFuZ2UKKyogQHJldHVybnMgYSB2YWxpZCA8Y29kZT5DaGFyYWN0ZXJJdGVyYXRvcjwvY29kZT4gb3ZlciB0aGUgc3BlY2lmaWVkIHJhbmdlCisqIEBzZWUgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yCisqLworICAgIHB1YmxpYyBDaGFyYWN0ZXJJdGVyYXRvciBjcmVhdGVDaGFyYWN0ZXJJdGVyYXRvcihpbnQgc3RhcnQsIGludCBsaW1pdCkKKyAgICB7CisgICAgICAgIHJldHVybiBmQ2hhckJ1ZmZlci5jcmVhdGVDaGFyYWN0ZXJJdGVyYXRvcihzdGFydCwgbGltaXQpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjaGFyYWN0ZXIgc3R5bGVzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvKioKKyogUmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSBjaGFyYWN0ZXIgc3R5bGUgcnVuCisqIGNvbnRhaW5pbmcgcG9zLiAgQWxsIGNoYXJhY3RlcnMgaW4gYSBzdHlsZSBydW4gaGF2ZSB0aGUgc2FtZSBjaGFyYWN0ZXIKKyogc3R5bGUuCisqIEByZXR1cm5zIHRoZSBzdHlsZSBhdCBvZmZzZXQgPGNvZGU+cG9zPC9jb2RlPgorKi8KKyAgICBwdWJsaWMgaW50IGNoYXJhY3RlclN0eWxlU3RhcnQoaW50IHBvcykgeworCisgICAgICAgIGNoZWNrUG9zKHBvcywgTEVTU19USEFOX0xFTkdUSCk7CisgICAgICAgIHJldHVybiBmU3R5bGVCdWZmZXIuc3R5bGVTdGFydChwb3MpOworICAgIH0KKworLyoqCisqIFJldHVybiB0aGUgaW5kZXggYWZ0ZXIgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSBjaGFyYWN0ZXIgc3R5bGUgcnVuCisqIGNvbnRhaW5pbmcgcG9zLiAgQWxsIGNoYXJhY3RlcnMgaW4gYSBzdHlsZSBydW4gaGF2ZSB0aGUgc2FtZSBjaGFyYWN0ZXIKKyogc3R5bGUuCisqIEByZXR1cm5zIHRoZSBzdHlsZSBhdCBvZmZzZXQgPGNvZGU+cG9zPC9jb2RlPgorKi8KKyAgICBwdWJsaWMgaW50IGNoYXJhY3RlclN0eWxlTGltaXQoaW50IHBvcykgeworCisgICAgICAgIGNoZWNrUG9zKHBvcywgTk9UX0dSRUFURVJfVEhBTl9MRU5HVEgpOworICAgICAgICByZXR1cm4gZlN0eWxlQnVmZmVyLnN0eWxlTGltaXQocG9zKTsKKyAgICB9CisKKy8qKgorKiBSZXR1cm4gdGhlIHN0eWxlIGFwcGxpZWQgdG8gdGhlIGNoYXJhY3RlciBhdCBvZmZzZXQgPGNvZGU+cG9zPC9jb2RlPi4KKyogQHBhcmFtIHBvcyBhIHZhbGlkIG9mZnNldCBpbnRvIHRoZSB0ZXh0CisqIEByZXR1cm5zIHRoZSBzdHlsZSBhdCBvZmZzZXQgPGNvZGU+cG9zPC9jb2RlPgorKi8KKyAgICBwdWJsaWMgQXR0cmlidXRlTWFwIGNoYXJhY3RlclN0eWxlQXQoaW50IHBvcykKKyAgICB7CisgICAgICAgIGNoZWNrUG9zKHBvcywgTk9UX0dSRUFURVJfVEhBTl9MRU5HVEgpOworICAgICAgICByZXR1cm4gZlN0eWxlQnVmZmVyLnN0eWxlQXQocG9zKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gcGFyYWdyYXBoIGJvdW5kYXJpZXMgYW5kIHN0eWxlcworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8qKgorKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGggY29udGFpbmluZyB0aGUgY2hhcmFjdGVyIGF0IG9mZnNldCA8Y29kZT5wb3M8L2NvZGU+LgorKiBAcGFyYW0gcG9zIGEgdmFsaWQgb2Zmc2V0IGludG8gdGhlIHRleHQKKyogQHJldHVybnMgdGhlIHN0YXJ0IG9mIHRoZSBwYXJhZ3JhcGggY29udGFpbmluZyB0aGUgY2hhcmFjdGVyIGF0IG9mZnNldCA8Y29kZT5wb3M8L2NvZGU+CisqLworICAgIHB1YmxpYyBpbnQgcGFyYWdyYXBoU3RhcnQoaW50IHBvcykKKyAgICB7CisgICAgICAgIGNoZWNrUG9zKHBvcywgTk9UX0dSRUFURVJfVEhBTl9MRU5HVEgpOworICAgICAgICByZXR1cm4gZlBhcmFncmFwaEJ1ZmZlci5wYXJhZ3JhcGhTdGFydChwb3MpOworICAgIH0KKworLyoqCisqIFJldHVybiB0aGUgbGltaXQgb2YgdGhlIHBhcmFncmFwaCBjb250YWluaW5nIHRoZSBjaGFyYWN0ZXIgYXQgb2Zmc2V0IDxjb2RlPnBvczwvY29kZT4uCisqIEBwYXJhbSBwb3MgYSB2YWxpZCBvZmZzZXQgaW50byB0aGUgdGV4dAorKiBAcmV0dXJucyB0aGUgbGltaXQgb2YgdGhlIHBhcmFncmFwaCBjb250YWluaW5nIHRoZSBjaGFyYWN0ZXIgYXQgb2Zmc2V0IDxjb2RlPnBvczwvY29kZT4KKyovCisgICAgcHVibGljIGludCBwYXJhZ3JhcGhMaW1pdChpbnQgcG9zKQorICAgIHsKKyAgICAgICAgY2hlY2tQb3MocG9zLCBOT1RfR1JFQVRFUl9USEFOX0xFTkdUSCk7CisgICAgICAgIHJldHVybiBmUGFyYWdyYXBoQnVmZmVyLnBhcmFncmFwaExpbWl0KHBvcyk7CisgICAgfQorCisvKioKKyogUmV0dXJuIHRoZSBwYXJhZ3JhcGggc3R5bGUgYXBwbGllZCB0byB0aGUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgb2Zmc2V0IDxjb2RlPnBvczwvY29kZT4uCisqIEBwYXJhbSBwb3MgYSB2YWxpZCBvZmZzZXQgaW50byB0aGUgdGV4dAorKiBAcmV0dXJucyB0aGUgcGFyYWdyYXBoIHN0eWxlIGluIGVmZmVjdCBhdCA8Y29kZT5wb3M8L2NvZGU+CisqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVNYXAgcGFyYWdyYXBoU3R5bGVBdChpbnQgcG9zKQorICAgIHsKKyAgICAgICAgY2hlY2tQb3MocG9zLCBOT1RfR1JFQVRFUl9USEFOX0xFTkdUSCk7CisgICAgICAgIHJldHVybiBmUGFyYWdyYXBoQnVmZmVyLnBhcmFncmFwaFN0eWxlQXQocG9zKTsKKyAgICB9CisKKy8qKgorKiBSZXR1cm4gdGhlIGN1cnJlbnQgdGltZSBzdGFtcC4gIFRoZSB0aW1lIHN0YW1wIGlzCisqIGluY3JlbWVudGVkIHdoZW5ldmVyIHRoZSBjb250ZW50cyBvZiB0aGUgTUNvbnN0VGV4dCBjaGFuZ2VzLgorKiBAcmV0dXJuIHRoZSBjdXJyZW50IHBhcmFncmFwaCBzdHlsZSB0aW1lIHN0YW1wCisqLworICAgIHB1YmxpYyBpbnQgZ2V0VGltZVN0YW1wKCkgeworCisgICAgICAgIHJldHVybiBmVGltZVN0YW1wOworICAgIH0KKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gTVRleHQgSU5URVJGQUNFUworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGNoYXJhY3RlciBtb2RmaWNhdGlvbiBmdW5jdGlvbnMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlRGFtYWdlZFJhbmdlKGludCBkZWxldGVTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZWxldGVMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnNlcnRMZW5ndGgpIHsKKworICAgICAgICBmRGFtYWdlZFJhbmdlWzBdID0gTWF0aC5taW4oZkRhbWFnZWRSYW5nZVswXSwgZGVsZXRlU3RhcnQpOworCisgICAgICAgIGlmIChmRGFtYWdlZFJhbmdlWzFdID49IGRlbGV0ZUxpbWl0KSB7CisgICAgICAgICAgICBpbnQgbGVuZ3RoQ2hhbmdlID0gaW5zZXJ0TGVuZ3RoIC0gKGRlbGV0ZUxpbWl0LWRlbGV0ZVN0YXJ0KTsKKyAgICAgICAgICAgIGZEYW1hZ2VkUmFuZ2VbMV0gKz0gbGVuZ3RoQ2hhbmdlOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZkRhbWFnZWRSYW5nZVsxXSA9IGRlbGV0ZVN0YXJ0ICsgaW5zZXJ0TGVuZ3RoOworICAgICAgICB9CisgICAgfQorCisvKioKKyogUmVwbGFjZSB0aGUgY2hhcmFjdGVycyBhbmQgc3R5bGVzIGluIHRoZSByYW5nZSBbPGNvZGU+c3RhcnQ8L2NvZGU+LCA8Y29kZT5saW1pdDwvY29kZT4pIHdpdGggdGhlIGNoYXJhY3RlcnMKKyogYW5kIHN0eWxlcyBpbiA8Y29kZT5zcmNUZXh0PC9jb2RlPiBpbiB0aGUgcmFuZ2UgWzxjb2RlPnNyY1N0YXJ0PC9jb2RlPiwgPGNvZGU+c3JjTGltaXQ8L2NvZGU+KS4gIDxjb2RlPnNyY1RleHQ8L2NvZGU+IGlzIG5vdAorKiBtb2RpZmllZC4KKyogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgYXQgd2hpY2ggdGhlIHJlcGxhY2Ugb3BlcmF0aW9uIGJlZ2lucworKiBAcGFyYW0gbGltaXQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgcmVwbGFjZSBvcGVyYXRpb24gZW5kcy4gIFRoZSBjaGFyYWN0ZXIgYW5kIHN0eWxlIGF0CisqIDxjb2RlPmxpbWl0PC9jb2RlPiBpcyBub3QgbW9kaWZpZWQuCisqIEBwYXJhbSBzcmNUZXh0IHRoZSBzb3VyY2UgZm9yIHRoZSBuZXcgY2hhcmFjdGVycyBhbmQgc3R5bGVzCisqIEBwYXJhbSBzcmNTdGFydCB0aGUgb2Zmc2V0IGludG8gPGNvZGU+c3JjVGV4dDwvY29kZT4gd2hlcmUgbmV3IGNoYXJhY3RlcnMgYW5kIHN0eWxlcyB3aWxsIGJlIG9idGFpbmVkCisqIEBwYXJhbSBzcmNMaW1pdCB0aGUgb2Zmc2V0IGludG8gPGNvZGU+c3JjVGV4dDwvY29kZT4gd2hlcmUgdGhlIG5ldyBjaGFyYWN0ZXJzIGFuZCBzdHlsZXMgZW5kCisqLworICAgIHB1YmxpYyB2b2lkIHJlcGxhY2UoaW50IHN0YXJ0LCBpbnQgbGltaXQsIE1Db25zdFRleHQgdGV4dCwgaW50IHNyY1N0YXJ0LCBpbnQgc3JjTGltaXQpCisgICAgeworICAgICAgICBpZiAodGV4dCA9PSB0aGlzKSB7CisgICAgICAgICAgICB0ZXh0ID0gbmV3IFN0eWxlZFRleHQodGV4dCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3RhcnQgPT0gbGltaXQgJiYgc3JjU3RhcnQgPT0gc3JjTGltaXQpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNoZWNrU3RhcnRMaW1pdChzdGFydCwgbGltaXQpOworCisgICAgICAgIHVwZGF0ZURhbWFnZWRSYW5nZShzdGFydCwgbGltaXQsIHNyY0xpbWl0LXNyY1N0YXJ0KTsKKworICAgICAgICBmQ2hhckJ1ZmZlci5yZXBsYWNlKHN0YXJ0LCBsaW1pdCwgdGV4dCwgc3JjU3RhcnQsIHNyY0xpbWl0KTsKKyAgICAgICAgZlN0eWxlQnVmZmVyLnJlcGxhY2Uoc3RhcnQsIGxpbWl0LCB0ZXh0LCBzcmNTdGFydCwgc3JjTGltaXQpOworICAgICAgICBmUGFyYWdyYXBoQnVmZmVyLnJlcGxhY2Uoc3RhcnQsIGxpbWl0LCB0ZXh0LCBzcmNTdGFydCwgc3JjTGltaXQsIGZEYW1hZ2VkUmFuZ2UpOworICAgICAgICBmVGltZVN0YW1wICs9IDE7CisgICAgfQorCisvKioKKyogUmVwbGFjZSB0aGUgY2hhcmFjdGVycyBhbmQgc3R5bGVzIGluIHRoZSByYW5nZSBbPGNvZGU+c3RhcnQ8L2NvZGU+LCA8Y29kZT5saW1pdDwvY29kZT4pIHdpdGggdGhlIGNoYXJhY3RlcnMKKyogYW5kIHN0eWxlcyBpbiA8Y29kZT5zcmNUZXh0PC9jb2RlPi4gIDxjb2RlPnNyY1RleHQ8L2NvZGU+IGlzIG5vdAorKiBtb2RpZmllZC4KKyogQHBhcmFtIHN0YXJ0IHRoZSBvZmZzZXQgYXQgd2hpY2ggdGhlIHJlcGxhY2Ugb3BlcmF0aW9uIGJlZ2lucworKiBAcGFyYW0gbGltaXQgdGhlIG9mZnNldCBhdCB3aGljaCB0aGUgcmVwbGFjZSBvcGVyYXRpb24gZW5kcy4gIFRoZSBjaGFyYWN0ZXIgYW5kIHN0eWxlIGF0CisqIDxjb2RlPmxpbWl0PC9jb2RlPiBpcyBub3QgbW9kaWZpZWQuCisqIEBwYXJhbSBzcmNUZXh0IHRoZSBzb3VyY2UgZm9yIHRoZSBuZXcgY2hhcmFjdGVycyBhbmQgc3R5bGVzCisqLworICAgIHB1YmxpYyB2b2lkIHJlcGxhY2UoaW50IHN0YXJ0LCBpbnQgbGltaXQsIE1Db25zdFRleHQgdGV4dCkgeworCisgICAgICAgIHJlcGxhY2Uoc3RhcnQsIGxpbWl0LCB0ZXh0LCAwLCB0ZXh0Lmxlbmd0aCgpKTsKKyAgICB9CisKKy8qKgorKiBSZXBsYWNlIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSByYW5nZSBbPGNvZGU+c3RhcnQ8L2NvZGU+LCA8Y29kZT5saW1pdDwvY29kZT4pIHdpdGggdGhlIGNoYXJhY3RlcnMKKyogaW4gPGNvZGU+c3JjQ2hhcnM8L2NvZGU+IGluIHRoZSByYW5nZSBbPGNvZGU+c3JjU3RhcnQ8L2NvZGU+LCA8Y29kZT5zcmNMaW1pdDwvY29kZT4pLiAgTmV3IGNoYXJhY3RlcnMgdGFrZSBvbiB0aGUgc3R5bGUKKyogPGNvZGU+Y2hhcnNTdHlsZTwvY29kZT4uCisqIDxjb2RlPnNyY0NoYXJzPC9jb2RlPiBpcyBub3QgbW9kaWZpZWQuCisqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoZSByZXBsYWNlIG9wZXJhdGlvbiBiZWdpbnMKKyogQHBhcmFtIGxpbWl0IHRoZSBvZmZzZXQgYXQgd2hpY2ggdGhlIHJlcGxhY2Ugb3BlcmF0aW9uIGVuZHMuICBUaGUgY2hhcmFjdGVyIGF0CisqIDxjb2RlPmxpbWl0PC9jb2RlPiBpcyBub3QgbW9kaWZpZWQuCisqIEBwYXJhbSBzcmNDaGFycyB0aGUgc291cmNlIGZvciB0aGUgbmV3IGNoYXJhY3RlcnMKKyogQHBhcmFtIHNyY1N0YXJ0IHRoZSBvZmZzZXQgaW50byA8Y29kZT5zcmNDaGFyczwvY29kZT4gd2hlcmUgbmV3IGNoYXJhY3RlcnMgd2lsbCBiZSBvYnRhaW5lZAorKiBAcGFyYW0gc3JjTGltaXQgdGhlIG9mZnNldCBpbnRvIDxjb2RlPnNyY0NoYXJzPC9jb2RlPiB3aGVyZSB0aGUgbmV3IGNoYXJhY3RlcnMgZW5kCisqIEBwYXJhbSBjaGFyc1N0eWxlIHRoZSBzdHlsZSBvZiB0aGUgbmV3IGNoYXJhY3RlcnMKKyovCisgICAgcHVibGljIHZvaWQgcmVwbGFjZShpbnQgc3RhcnQsIGludCBsaW1pdCwgY2hhcltdIHNyY0NoYXJzLCBpbnQgc3JjU3RhcnQsIGludCBzcmNMaW1pdCwgQXR0cmlidXRlTWFwIGNoYXJzU3R5bGUpCisgICAgeworICAgICAgICBjaGVja1N0YXJ0TGltaXQoc3RhcnQsIGxpbWl0KTsKKworICAgICAgICBpZiAoc3RhcnQgPT0gbGltaXQgJiYgc3JjU3RhcnQgPT0gc3JjTGltaXQpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHVwZGF0ZURhbWFnZWRSYW5nZShzdGFydCwgbGltaXQsIHNyY0xpbWl0LXNyY1N0YXJ0KTsKKworICAgICAgICBmQ2hhckJ1ZmZlci5yZXBsYWNlKHN0YXJ0LCBsaW1pdCwgc3JjQ2hhcnMsIHNyY1N0YXJ0LCBzcmNMaW1pdCk7CisKKyAgICAgICAgcmVwbGFjZUNoYXJTdHlsZXNXaXRoKHN0YXJ0LCBsaW1pdCwgc3RhcnQgKyAoc3JjTGltaXQtc3JjU3RhcnQpLCBjaGFyc1N0eWxlKTsKKworICAgICAgICBmUGFyYWdyYXBoQnVmZmVyLmRlbGV0ZVRleHQoc3RhcnQsIGxpbWl0LCBmRGFtYWdlZFJhbmdlKTsKKyAgICAgICAgZlBhcmFncmFwaEJ1ZmZlci5pbnNlcnRUZXh0KHN0YXJ0LCBzcmNDaGFycywgc3JjU3RhcnQsIHNyY0xpbWl0KTsKKworICAgICAgICBmVGltZVN0YW1wICs9IDE7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHJlcGxhY2VDaGFyU3R5bGVzV2l0aChpbnQgc3RhcnQsIGludCBvbGRMaW1pdCwgaW50IG5ld0xpbWl0LCBBdHRyaWJ1dGVNYXAgc3R5bGUpIHsKKworICAgICAgICBpZiAoc3RhcnQgPCBvbGRMaW1pdCkgeworICAgICAgICAgICAgZlN0eWxlQnVmZmVyLmRlbGV0ZVRleHQoc3RhcnQsIG9sZExpbWl0KTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3RhcnQgPCBuZXdMaW1pdCkgeworICAgICAgICAgICAgaWYgKGZvcmNlTW9kaWZpZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGZvcmNlTW9kaWZpZXIgPSBuZXcgRm9yY2VNb2RpZmllcigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yY2VNb2RpZmllci5zZXRTdHlsZShzdHlsZSk7CisgICAgICAgICAgICBmU3R5bGVCdWZmZXIuaW5zZXJ0VGV4dChzdGFydCwgbmV3TGltaXQpOworICAgICAgICAgICAgZlN0eWxlQnVmZmVyLm1vZGlmeVN0eWxlcyhzdGFydCwgbmV3TGltaXQsIGZvcmNlTW9kaWZpZXIsIG51bGwpOworICAgICAgICB9CisgICAgfQorCisvKioKKyogUmVwbGFjZSB0aGUgY2hhcmFjdGVycyBpbiB0aGUgcmFuZ2UgWzxjb2RlPnN0YXJ0PC9jb2RlPiwgPGNvZGU+bGltaXQ8L2NvZGU+KSB3aXRoIHRoZSBjaGFyYWN0ZXIgPGNvZGU+c3JjQ2hhcjwvY29kZT4uCisqIFRoZSBuZXcgY2hhcmFjdGVyIHRha2VzIG9uIHRoZSBzdHlsZSA8Y29kZT5jaGFyU3R5bGU8L2NvZGU+CisqIEBwYXJhbSBzdGFydCB0aGUgb2Zmc2V0IGF0IHdoaWNoIHRoZSByZXBsYWNlIG9wZXJhdGlvbiBiZWdpbnMKKyogQHBhcmFtIGxpbWl0IHRoZSBvZmZzZXQgYXQgd2hpY2ggdGhlIHJlcGxhY2Ugb3BlcmF0aW9uIGVuZHMuICBUaGUgY2hhcmFjdGVyIGF0CisqIDxjb2RlPmxpbWl0PC9jb2RlPiBpcyBub3QgbW9kaWZpZWQuCisqIEBwYXJhbSBzcmNDaGFyIHRoZSBuZXcgY2hhcmFjdGVyCisqIEBwYXJhbSBjaGFyc1N0eWxlIHRoZSBzdHlsZSBvZiB0aGUgbmV3IGNoYXJhY3RlcgorKi8KKyAgICBwdWJsaWMgdm9pZCByZXBsYWNlKGludCBzdGFydCwgaW50IGxpbWl0LCBjaGFyIHNyY0NoYXIsIEF0dHJpYnV0ZU1hcCBjaGFyU3R5bGUpCisgICAgeworICAgICAgICBjaGVja1N0YXJ0TGltaXQoc3RhcnQsIGxpbWl0KTsKKworICAgICAgICB1cGRhdGVEYW1hZ2VkUmFuZ2Uoc3RhcnQsIGxpbWl0LCAxKTsKKworICAgICAgICBmQ2hhckJ1ZmZlci5yZXBsYWNlKHN0YXJ0LCBsaW1pdCwgc3JjQ2hhcik7CisKKyAgICAgICAgcmVwbGFjZUNoYXJTdHlsZXNXaXRoKHN0YXJ0LCBsaW1pdCwgc3RhcnQgKyAxLCBjaGFyU3R5bGUpOworCisgICAgICAgIGlmIChzdGFydCA8IGxpbWl0KSB7CisgICAgICAgICAgICBmUGFyYWdyYXBoQnVmZmVyLmRlbGV0ZVRleHQoc3RhcnQsIGxpbWl0LCBmRGFtYWdlZFJhbmdlKTsKKyAgICAgICAgfQorCisgICAgICAgIGZQYXJhZ3JhcGhCdWZmZXIuaW5zZXJ0VGV4dChzdGFydCwgc3JjQ2hhcik7CisKKyAgICAgICAgZlRpbWVTdGFtcCArPSAxOworICAgIH0KKworLyoqCisqIFJlcGxhY2UgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGlzIE1UZXh0IChib3RoIGNoYXJhY3RlcnMgYW5kIHN0eWxlcykgd2l0aAorKiB0aGUgY29udGVudHMgb2YgPGNvZGU+c3JjVGV4dDwvY29kZT4uCisqIEBwYXJhbSBzcmNUZXh0IHRoZSBzb3VyY2UgZm9yIHRoZSBuZXcgY2hhcmFjdGVycyBhbmQgc3R5bGVzCisqLworICAgIHB1YmxpYyB2b2lkIHJlcGxhY2VBbGwoTUNvbnN0VGV4dCBzcmNUZXh0KQorICAgIHsKKyAgICAgICAgcmVwbGFjZSgwLCBsZW5ndGgoKSwgc3JjVGV4dCwgMCwgc3JjVGV4dC5sZW5ndGgoKSk7CisgICAgfQorCisvKioKKyogSW5zZXJ0IHRoZSBjb250ZW50cyBvZiA8Y29kZT5zcmNUZXh0PC9jb2RlPiAoYm90aCBjaGFyYWN0ZXJzIGFuZCBzdHlsZXMpIGludG8gdGhpcworKiBNVGV4dCBhdCB0aGUgcG9zaXRpb24gc3BlY2lmaWVkIGJ5IDxjb2RlPnBvczwvY29kZT4uCisqIEBwYXJhbSBwb3MgVGhlIGNoYXJhY3RlciBvZmZzZXQgd2hlcmUgdGhlIG5ldyB0ZXh0IGlzIHRvIGJlIGluc2VydGVkLgorKiBAcGFyYW0gc3JjVGV4dCBUaGUgdGV4dCB0byBpbnNlcnQuCisqLworICAgIHB1YmxpYyB2b2lkIGluc2VydChpbnQgcG9zLCBNQ29uc3RUZXh0IHNyY1RleHQpCisgICAgeworICAgICAgICByZXBsYWNlKHBvcywgcG9zLCBzcmNUZXh0LCAwLCBzcmNUZXh0Lmxlbmd0aCgpKTsKKyAgICB9CisKKy8qKgorKiBBcHBlbmQgdGhlIGNvbnRlbnRzIG9mIDxjb2RlPnNyY1RleHQ8L2NvZGU+IChib3RoIGNoYXJhY3RlcnMgYW5kIHN0eWxlcykgdG8gdGhlCisqIGVuZCBvZiB0aGlzIE1UZXh0LgorKiBAcGFyYW0gc3JjVGV4dCBUaGUgdGV4dCB0byBhcHBlbmQuCisqLworICAgIHB1YmxpYyB2b2lkIGFwcGVuZChNQ29uc3RUZXh0IHNyY1RleHQpCisgICAgeworICAgICAgICByZXBsYWNlKGxlbmd0aCgpLCBsZW5ndGgoKSwgc3JjVGV4dCwgMCwgc3JjVGV4dC5sZW5ndGgoKSk7CisgICAgfQorCisvKioKKyogRGVsZXRlIHRoZSBzcGVjaWZpZWQgcmFuZ2Ugb2YgY2hhcmFjdGVycyAoYW5kIHN0eWxlcykuCisqIEBwYXJhbSBzdGFydCBPZmZzZXQgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciB0byBkZWxldGUuCisqIEBwYXJhbSBsaW1pdCBPZmZzZXQgb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgcmFuZ2UgdG8gZGVsZXRlLgorKi8KKyAgICBwdWJsaWMgdm9pZCByZW1vdmUoaW50IHN0YXJ0LCBpbnQgbGltaXQpCisgICAgeworICAgICAgICByZXBsYWNlKHN0YXJ0LCBsaW1pdCwgKGNoYXJbXSludWxsLCAwLCAwLCBBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUCk7CisgICAgfQorCisvKioKKyogRGVsZXRlIGFsbCBjaGFyYWN0ZXJzIGFuZCBzdHlsZXMuICBBbHdheXMgaW5jcmVtZW50cyB0aW1lIHN0YW1wLgorKi8KKyAgICBwdWJsaWMgdm9pZCByZW1vdmUoKQorICAgIHsKKyAgICAgICAgLy8gcmF0aGVyIHRoYW4gZ29pbmcgdGhyb3VnaCByZXBsYWNlKCksIGp1c3QgcmVpbml0aWFsaXplIHRoZSBTdHlsZWRUZXh0LAorICAgICAgICAvLyBsZXR0aW5nIHRoZSBvbGQgZGF0YSBzdHJ1Y3R1cmVzIGZhbGwgb24gdGhlIGZsb29yCisgICAgICAgIGZDaGFyQnVmZmVyID0gbmV3IENoYXJCdWZmZXIoKTsKKyAgICAgICAgZlN0eWxlQnVmZmVyID0gbmV3IFN0eWxlQnVmZmVyKHRoaXMsIEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQKTsKKyAgICAgICAgZlBhcmFncmFwaEJ1ZmZlciA9IG5ldyBQYXJhZ3JhcGhCdWZmZXIoZkNoYXJCdWZmZXIpOworICAgICAgICBmVGltZVN0YW1wICs9IDE7CisgICAgICAgIGZEYW1hZ2VkUmFuZ2VbMF0gPSBmRGFtYWdlZFJhbmdlWzFdID0gMDsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gc3RvcmFnZSBtYW5hZ2VtZW50CisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvKioKKyogTWluaW1pemUgdGhlIGFtb3VudCBvZiBtZW1vcnkgdXNlZCBieSB0aGUgTVRleHQgb2JqZWN0LgorKi8KKyAgICBwdWJsaWMgdm9pZCBjb21wcmVzcygpIHsKKworICAgICAgICBmQ2hhckJ1ZmZlci5jb21wcmVzcygpOworICAgICAgICBmU3R5bGVCdWZmZXIuY29tcHJlc3MoKTsKKyAgICAgICAgZlBhcmFncmFwaEJ1ZmZlci5jb21wcmVzcygpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBzdHlsZSBtb2RpZmljYXRpb24KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8qKgorKiBTZXQgdGhlIHN0eWxlIG9mIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBNVGV4dCBvYmplY3QgdG8KKyogPGNvZGU+QXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVA8L2NvZGU+LgorKi8KKyAgICBwdWJsaWMgdm9pZCByZW1vdmVDaGFyYWN0ZXJTdHlsZXMoKSB7CisKKyAgICAgICAgZlN0eWxlQnVmZmVyID0gbmV3IFN0eWxlQnVmZmVyKHRoaXMsIEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQKTsKKyAgICAgICAgZlRpbWVTdGFtcCArPSAxOworICAgICAgICBmRGFtYWdlZFJhbmdlWzBdID0gMDsKKyAgICAgICAgZkRhbWFnZWRSYW5nZVsxXSA9IGxlbmd0aCgpOworICAgIH0KKworLyoqCisqIEludm9rZSB0aGUgZ2l2ZW4gbW9kaWZpZXIgb24gYWxsIGNoYXJhY3RlciBzdHlsZXMgZnJvbSBzdGFydCB0byBsaW1pdC4KKyogQHBhcmFtIG1vZGlmaWVyIHRoZSBtb2RpZmllciB0byBhcHBseSB0byB0aGUgcmFuZ2UuCisqIEBwYXJhbSBzdGFydCB0aGUgc3RhcnQgb2YgdGhlIHJhbmdlIG9mIHRleHQgdG8gbW9kaWZ5LgorKiBAcGFyYW0gbGltaXQgdGhlIGxpbWl0IG9mIHRoZSByYW5nZSBvZiB0ZXh0IHRvIG1vZGlmeS4KKyovCisgICAgcHVibGljIHZvaWQgbW9kaWZ5Q2hhcmFjdGVyU3R5bGVzKGludCBzdGFydCwgaW50IGxpbWl0LCBTdHlsZU1vZGlmaWVyIG1vZGlmaWVyKSB7CisKKyAgICAgICAgY2hlY2tTdGFydExpbWl0KHN0YXJ0LCBsaW1pdCk7CisgICAgICAgIGJvb2xlYW4gbW9kaWZpZWQgPSBmU3R5bGVCdWZmZXIubW9kaWZ5U3R5bGVzKHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZEYW1hZ2VkUmFuZ2UpOworICAgICAgICBpZiAobW9kaWZpZWQpIHsKKyAgICAgICAgICAgIGZUaW1lU3RhbXAgKz0gMTsKKyAgICAgICAgfQorICAgIH0KKworLyoqCisqIEludm9rZSB0aGUgZ2l2ZW4gbW9kaWZpZXIgb24gYWxsIHBhcmFncmFwaCBzdHlsZXMgaW4gcGFyYWdyYXBocworKiBjb250YWluaW5nIGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlIFtzdGFydCwgbGltaXQpLgorKiBAcGFyYW0gbW9kaWZpZXIgdGhlIG1vZGlmaWVyIHRvIGFwcGx5IHRvIHRoZSByYW5nZS4KKyogQHBhcmFtIHN0YXJ0IHRoZSBzdGFydCBvZiB0aGUgcmFuZ2Ugb2YgdGV4dCB0byBtb2RpZnkuCisqIEBwYXJhbSBsaW1pdCB0aGUgbGltaXQgb2YgdGhlIHJhbmdlIG9mIHRleHQgdG8gbW9kaWZ5LgorKi8KKyAgICBwdWJsaWMgdm9pZCBtb2RpZnlQYXJhZ3JhcGhTdHlsZXMoaW50IHN0YXJ0LCBpbnQgbGltaXQsIFN0eWxlTW9kaWZpZXIgbW9kaWZpZXIpIHsKKworICAgICAgICBjaGVja1N0YXJ0TGltaXQoc3RhcnQsIGxpbWl0KTsKKyAgICAgICAgYm9vbGVhbiBtb2RpZmllZCA9IGZQYXJhZ3JhcGhCdWZmZXIubW9kaWZ5UGFyYWdyYXBoU3R5bGVzKHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZEYW1hZ2VkUmFuZ2UpOworICAgICAgICBpZiAobW9kaWZpZWQpIHsKKyAgICAgICAgICAgIGZUaW1lU3RhbXAgKz0gMTsKKyAgICAgICAgfQorICAgIH0KKworLyoqCisqIFJlc2V0IHRoZSBkYW1hZ2VkIHJhbmdlIHRvIGFuIGVtcHR5IGludGVydmFsLCBhbmQgYmVnaW4gYWNjdW11bGF0aW5nIHRoZSBkYW1hZ2VkCisqIHJhbmdlLiAgVGhlIGRhbWFnZWQgcmFuZ2UgaW5jbHVkZXMgZXZlcnkgaW5kZXggd2hlcmUgYSBjaGFyYWN0ZXIsIGNoYXJhY3RlciBzdHlsZSwKKyogb3IgcGFyYWdyYXBoIHN0eWxlIGhhcyBjaGFuZ2VkLgorKiBAc2VlICNkYW1hZ2VkUmFuZ2VTdGFydAorKiBAc2VlICNkYW1hZ2VkUmFuZ2VMaW1pdAorKi8KKyAgICBwdWJsaWMgdm9pZCByZXNldERhbWFnZWRSYW5nZSgpIHsKKworICAgICAgICBmRGFtYWdlZFJhbmdlWzBdID0gSW50ZWdlci5NQVhfVkFMVUU7CisgICAgICAgIGZEYW1hZ2VkUmFuZ2VbMV0gPSBJbnRlZ2VyLk1JTl9WQUxVRTsKKyAgICB9CisKKy8qKgorKiBSZXR1cm4gdGhlIHN0YXJ0IG9mIHRoZSBkYW1hZ2VkIHJhbmdlLgorKiBJZiB0aGUgc3RhcnQgaXMKKyogPGNvZGU+SW50ZWdlci5NQVhfVkFMVUU8L2NvZGU+IGFuZCB0aGUgbGltaXQgaXMKKyogPGNvZGU+SW50ZWdlci5NSU5fVkFMVUU8L2NvZGU+LCB0aGVuIHRoZSBkYW1hZ2VkIHJhbmdlCisqIGlzIGVtcHR5LgorKiBAcmV0dXJuIHRoZSBzdGFydCBvZiB0aGUgZGFtYWdlZCByYW5nZQorKiBAc2VlICNkYW1hZ2VkUmFuZ2VMaW1pdAorKiBAc2VlICNyZXNldERhbWFnZWRSYW5nZQorKi8KKyAgICBwdWJsaWMgaW50IGRhbWFnZWRSYW5nZVN0YXJ0KCkgeworCisgICAgICAgIHJldHVybiBmRGFtYWdlZFJhbmdlWzBdOworICAgIH0KKworLyoqCisqIFJldHVybiB0aGUgbGltaXQgb2YgdGhlIGRhbWFnZWQgcmFuZ2UuCisqIElmIHRoZSBzdGFydCBpcworKiA8Y29kZT5JbnRlZ2VyLk1BWF9WQUxVRTwvY29kZT4gYW5kIHRoZSBsaW1pdCBpcworKiA8Y29kZT5JbnRlZ2VyLk1JTl9WQUxVRTwvY29kZT4sIHRoZW4gdGhlIGRhbWFnZWQgcmFuZ2UKKyogaXMgZW1wdHkuCisqIEByZXR1cm4gdGhlIGxpbWl0IG9mIHRoZSBkYW1hZ2VkIHJhbmdlCisqIEBzZWUgI2RhbWFnZWRSYW5nZVN0YXJ0CisqIEBzZWUgI3Jlc2V0RGFtYWdlZFJhbmdlCisqLworICAgIHB1YmxpYyBpbnQgZGFtYWdlZFJhbmdlTGltaXQoKSB7CisKKyAgICAgICAgcmV0dXJuIGZEYW1hZ2VkUmFuZ2VbMV07CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCisgICAgeworICAgICAgICBTdHJpbmcgcmVzdWx0ID0iIjsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICByZXN1bHQgKz0gYXQoaSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIElNUExFTUVOVEFUSU9OCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8qIGNoZWNrIGEgcmFuZ2UgdG8gc2VlIGlmIGl0IGlzIHdlbGwgZm9ybWVkIGFuZCB3aXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgdGV4dCAqLworICAgIHByaXZhdGUgdm9pZCBjaGVja1N0YXJ0TGltaXQoaW50IHN0YXJ0LCBpbnQgbGltaXQpCisgICAgeworICAgICAgICBpZiAoc3RhcnQgPiBsaW1pdCkgeworICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIlN0YXJ0IGlzIGxlc3MgdGhhbiBsaW1pdC4gc3RhcnQ6IitzdGFydCsiOyBsaW1pdDoiK2xpbWl0KTsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlN0YXJ0IGlzIGdyZWF0ZXIgdGhhbiBsaW1pdC4gc3RhcnQ6IitzdGFydCsiOyBsaW1pdDoiK2xpbWl0KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGFydCA8IDApIHsKKyAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJTdGFydCBpcyBuZWdhdGl2ZS4gc3RhcnQ6IitzdGFydCk7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJTdGFydCBpcyBuZWdhdGl2ZS4gc3RhcnQ6IitzdGFydCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobGltaXQgPiBsZW5ndGgoKSkgeworICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIkxpbWl0IGlzIGdyZWF0ZXIgdGhhbiBsZW5ndGguICBsaW1pdDoiK2xpbWl0KTsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkxpbWl0IGlzIGdyZWF0ZXIgdGhhbiBsZW5ndGguICBsaW1pdDoiK2xpbWl0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gTEVTU19USEFOX0xFTkdUSCA9IGZhbHNlOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gTk9UX0dSRUFURVJfVEhBTl9MRU5HVEggPSB0cnVlOworCisgICAgcHJpdmF0ZSB2b2lkIGNoZWNrUG9zKGludCBwb3MsIGJvb2xlYW4gZW5kQWxsb3dlZCkgeworCisgICAgICAgIGludCBsYXN0VmFsaWRQb3MgPSBsZW5ndGgoKTsKKyAgICAgICAgaWYgKGVuZEFsbG93ZWQgPT0gTEVTU19USEFOX0xFTkdUSCkgeworICAgICAgICAgICAgLS1sYXN0VmFsaWRQb3M7CisgICAgICAgIH0KKworICAgICAgICBpZiAocG9zIDwgMCB8fCBwb3MgPiBsYXN0VmFsaWRQb3MpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlBvc2l0aW9uIGlzIG91dCBvZiByYW5nZS4iKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvVGFiU3RvcC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9UYWJTdG9wLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYjU3ODg5YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvVGFiU3RvcC5qYXZhCkBAIC0wLDAgKzEsMTg1IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBUYWJTdG9wLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDU6MTAgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0OworCitpbXBvcnQgamF2YS5pby5FeHRlcm5hbGl6YWJsZTsKK2ltcG9ydCBqYXZhLmlvLk9iamVjdElucHV0OworaW1wb3J0IGphdmEuaW8uT2JqZWN0T3V0cHV0OworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKKy8qKgorICogVGFiU3RvcCByZXByZXNlbnRzIGEgcG9zaXRpb24gb24gYSB0YWIgcnVsZXIuICBFYWNoIHRhYiBzdG9wIGhhcyBhCisgKiBwb3NpdGlvbiwgZ2l2aW5nIGl0cyBsb2NhdGlvbiBvbiB0aGUgcnVsZXIsIGFuZCBvbmUgb2Ygc2V2ZXJhbAorICogdHlwZXMuICBUaGUgdHlwZSBkZXRlcm1pbmVzIGhvdyBhIHNlZ21lbnQgY29udHJvbGVkIGJ5IHRoaXMgVGFiU3RvcAorICogaXMgcG9zaXRpb25lZCBvbiBhIGxpbmU6CisgKiA8dWw+CisgKiA8bGk+PGNvZGU+a0xlYWRpbmc8L2NvZGU+IC0gdGhlIGxlYWRpbmcgZWRnZSBvZiB0aGUgc2VnbWVudCBpcyBhbGlnbmVkIHRvCisgKiAgICAgdGhlIFRhYlN0b3AncyBwb3NpdGlvbjwvbGk+CisgKiA8bGk+PGNvZGU+a0NlbnRlcjwvY29kZT4gLSB0aGUgc2VnbWVudCBpcyBjZW50ZXJlZCBvbiB0aGlzIFRhYlN0b3AncworICogICAgIHBvc2l0aW9uPC9saT4KKyAqIDxsaT48Y29kZT5rVHJhaWxpbmc8L2NvZGU+IC0gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHNlZ21lbnQgaXMgYWxpZ25lZCB0bworICogICAgIHRoZSBUYWJTdG9wJ3MgcG9zaXRpb248L2xpPgorICogPGxpPjxjb2RlPmtEZWNpbWFsPC9jb2RlPiAtIHRoZSBmaXJzdCBkZWNpbWFsIGluIHRoZSBzZWdtZW50IGlzIGFsaWduZWQgdG8KKyAqICAgICB0aGUgVGFiU3RvcCdzIHBvc2l0aW9uPC9saT4KKyAqIDxsaT48Y29kZT5rQXV0bzwvY29kZT4gLSBzZW1hbnRpY2FsbHkgdGhlIHNhbWUgYXMgPGNvZGU+a0xlYWRpbmc8L2NvZGU+LgorICogICAgIFVzZWQgYnkgdGFiIHJ1bGVycyB0byBpbmRpY2F0ZSB0aGF0IGFsbCBzdWJzZXF1ZW50IHRhYiBzdG9wcworICogICAgIHdpbGwgYmUgYXQgYXV0b3NwYWNlZCBpbnRlcnZhbHMuPC9saT4KKyAqIDwvdWw+CisgKiBAc2VlIE1UYWJSdWxlcgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgVGFiU3RvcCBpbXBsZW1lbnRzIEV4dGVybmFsaXphYmxlCit7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ1VSUkVOVF9WRVJTSU9OID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAyMjM1NjkzNDsKKworICAgIHByaXZhdGUgYnl0ZSBmVHlwZTsgICAgLy8gbGVmdCwgY2VudGVyLCByaWdodCwgZGVjaW1hbAorICAgIHByaXZhdGUgaW50IGZQb3NpdGlvbjsgLy8gdGFiIHN0b3AgcG9zaXRpb24gZnJvbSBsaW5lIG9yaWdpbi4KKworICAgIC8qKgorICAgICAqIEEgVGFiU3RvcCB3aXRoIHRoaXMgdHlwZSBhbGlnbnMgaXRzIHNlZ21lbnQncyBsZWFkaW5nIGVkZ2UKKyAgICAgKiB0byB0aGUgVGFiU3RvcCdzIHBvc2l0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgYnl0ZSBrTGVhZGluZyA9IDA7CisKKyAgICAvKioKKyAgICAgKiBBIFRhYlN0b3Agd2l0aCB0aGlzIHR5cGUgYWxpZ25zIGl0cyBzZWdtZW50J3MgY2VudGVyCisgICAgICogdG8gdGhlIFRhYlN0b3AncyBwb3NpdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGJ5dGUga0NlbnRlciA9IDE7CisKKyAgICAvKioKKyAgICAgKiBBIFRhYlN0b3Agd2l0aCB0aGlzIHR5cGUgYWxpZ25zIGl0cyBzZWdtZW50J3MgdHJhaWxpbmcgZWRnZQorICAgICAqIHRvIHRoZSBUYWJTdG9wJ3MgcG9zaXRpb24uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIGtUcmFpbGluZyA9IDI7CisKKyAgICAvKioKKyAgICAgKiBBIFRhYlN0b3Agd2l0aCB0aGlzIHR5cGUgYWxpZ25zIGl0cyBzZWdtZW50J3MgZmlyc3QgZGVjaW1hbAorICAgICAqIHRvIHRoZSBUYWJTdG9wJ3MgcG9zaXRpb24uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIGtEZWNpbWFsID0gMzsKKworICAgIC8qKgorICAgICAqIEEgVGFiU3RvcCB3aXRoIHRoaXMgdHlwZSBhbGlnbnMgaXRzIHNlZ21lbnQncyBsZWFkaW5nIGVkZ2UKKyAgICAgKiB0byB0aGUgVGFiU3RvcCdzIHBvc2l0aW9uLiAgQWZ0ZXIgYSBUYWJTdG9wIG9mIHRoaXMgdHlwZSwKKyAgICAgKiBhbGwgdGFicyBhcmUgYXQgYXV0b3NwYWNlIGludGVydmFscy4gIFVzdWFsbHksIGNsaWVudHMgd2lsbAorICAgICAqIG5vdCBjb25zdHJ1Y3QgVGFiU3RvcHMgd2l0aCB0aGlzIHR5cGUuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIGtBdXRvID0gNDsKKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIFRhYlN0b3Agd2l0aCBwb3NpdGlvbiAwIGFuZCB0eXBlIDxjb2RlPmtMZWFkaW5nPC9jb2RlPi4KKyAgICAgKi8KKyAgICBwdWJsaWMgVGFiU3RvcCgpIHsKKworICAgICAgIHRoaXMoMCwga0xlYWRpbmcpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIFRhYlN0b3Agd2l0aCB0aGUgZ2l2ZW4gcG9zaXRpb24gYW5kIHR5cGUuCisgICAgICogQHBhcmFtIHBvc2l0aW9uIHRoZSBUYWJTdG9wJ3MgcG9zaXRpb24KKyAgICAgKiBAcGFyYW0gdHlwZSB0aGUgVGFiU3RvcCdzIHR5cGUuICBNdXN0IGJlIG9uZSBvZiBjb25zdGFudHMKKyAgICAgKiAgICAgIGluIHRoaXMgY2xhc3MuCisgICAgICovCisgICAgcHVibGljIFRhYlN0b3AoaW50IHBvc2l0aW9uLCBieXRlIHR5cGUpIHsKKworICAgICAgICBpZiAodHlwZSA8IGtMZWFkaW5nIHx8IHR5cGUgPiBrQXV0bykgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCB0YWIgdHlwZSIpOworICAgICAgICB9CisKKyAgICAgICAgZlBvc2l0aW9uID0gcG9zaXRpb247CisgICAgICAgIGZUeXBlID0gdHlwZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZWFkRXh0ZXJuYWwoT2JqZWN0SW5wdXQgaW4pIHRocm93cyBJT0V4Y2VwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiB7CisKKyAgICAgICAgaW50IHZlcnNpb24gPSBpbi5yZWFkSW50KCk7CisgICAgICAgIGlmICh2ZXJzaW9uICE9IENVUlJFTlRfVkVSU0lPTikgeworICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJJbnZhbGlkIHZlcnNpb24gb2YgVGFiU3RvcC4iKTsKKyAgICAgICAgfQorICAgICAgICBmUG9zaXRpb24gPSBpbi5yZWFkSW50KCk7CisgICAgICAgIGZUeXBlID0gaW4ucmVhZEJ5dGUoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB3cml0ZUV4dGVybmFsKE9iamVjdE91dHB1dCBvdXQpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgICAgb3V0LndyaXRlSW50KENVUlJFTlRfVkVSU0lPTik7CisgICAgICAgIG91dC53cml0ZUludChmUG9zaXRpb24pOworICAgICAgICBvdXQud3JpdGVCeXRlKGZUeXBlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb21wYXJlIHRoaXMgdG8gYW5vdGhlciBPYmplY3QuICBUYWJTdG9wcyBhcmUgZXF1YWwgaWYKKyAgICAgKiB0aGVpciBwb3NpdGlvbiBhbmQgdHlwZSBhcmUgdGhlIHNhbWUuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCByaHMpCisgICAgeworICAgICAgICBpZiAocmhzID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIFRhYlN0b3AgcmhzVGFiOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmhzVGFiID0gKFRhYlN0b3ApIHJoczsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChDbGFzc0Nhc3RFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZUeXBlID09IHJoc1RhYi5mVHlwZSAmJiBmUG9zaXRpb24gPT0gcmhzVGFiLmZQb3NpdGlvbjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGhhc2ggY29kZSBmb3IgdGhpcyBUYWJTdG9wLiAgVGhlIGhhc2ggY29kZSBpcworICAgICAqIDxjb2RlPnBvc2l0aW9uIDw8IHR5cGU8L2NvZGU+LgorICAgICAqLworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisKKyAgICAgICAgcmV0dXJuIGZQb3NpdGlvbiA8PCBmVHlwZTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkKKyAgICB7CisgICAgICAgIGNoYXIgdHlwZUNoYXI7CisgICAgICAgIHN3aXRjaCAoZlR5cGUpIHsKKyAgICAgICAgICAgIGNhc2Uga0xlYWRpbmc6IHR5cGVDaGFyID0gJ0wnOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Uga0NlbnRlcjogdHlwZUNoYXIgPSAnQyc7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBrVHJhaWxpbmc6IHR5cGVDaGFyID0gJ1InOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Uga0RlY2ltYWw6IHR5cGVDaGFyID0gJ0QnOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Uga0F1dG86IHR5cGVDaGFyID0gJ0EnOyBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6IHR5cGVDaGFyID0gJz8nOyBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gIlRhYlN0b3BbIiArIEludGVnZXIudG9TdHJpbmcoZlBvc2l0aW9uKSArIHR5cGVDaGFyICsgJ10nOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgdHlwZSBvZiB0aGlzIFRhYlN0b3AuICBXaWxsIGJlIG9uZSBvZiB0aGUgY29uc3RhbnRzCisgICAgICogaW4gdGhpcyBjbGFzcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgYnl0ZSBnZXRUeXBlKCkgeworICAgICAgICByZXR1cm4gZlR5cGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBwb3NpdGlvbiBvZiB0aGlzIFRhYlN0b3AuCisgICAgICovCisgICAgcHVibGljIGludCBnZXRQb3NpdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIGZQb3NpdGlvbjsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvVGVzdEZhc3RJbnRCaW5hcnlTZWFyY2guamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvVGVzdEZhc3RJbnRCaW5hcnlTZWFyY2guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wNGNiZjBjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3R5bGVkdGV4dC9UZXN0RmFzdEludEJpbmFyeVNlYXJjaC5qYXZhCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRlc3RGYXN0SW50QmluYXJ5U2VhcmNoLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDU6MTAgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0OworCitmaW5hbCBjbGFzcyBUZXN0RmFzdEludEJpbmFyeVNlYXJjaCB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKworICAgICAgICBib29sZWFuIHJlc3VsdCA9IG5ldyBUZXN0RmFzdEludEJpbmFyeVNlYXJjaCgpLnRlc3QoKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHJlc3VsdD8gIlBBU1NFRCIgOiAiRkFJTEVEIik7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gdGVzdCgpIHsKKworICAgICAgICBib29sZWFuIHJlc3VsdCA9IHRydWU7CisgICAgICAgIGludFtdIHRlc3QgPSB7LTUsIC0zLCAwLCAyLCA1fTsKKyAgICAgICAgRmFzdEludEJpbmFyeVNlYXJjaCBmaWJzID0gbmV3IEZhc3RJbnRCaW5hcnlTZWFyY2godGVzdCk7CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgMjsgaSsrKSB7CisgICAgICAgICAgICBpbnQgYmVmb3JlQW55ID0gZmlicy5maW5kSW5kZXgoLTYpOworICAgICAgICAgICAgaWYgKGJlZm9yZUFueSAhPSAtMSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpbnQgYXRFbmQgPSBmaWJzLmZpbmRJbmRleCg1KTsKKyAgICAgICAgICAgIGlmIChhdEVuZCAhPSB0ZXN0Lmxlbmd0aC0xKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCBhZnRlckFueSA9IGZpYnMuZmluZEluZGV4KDYpOworICAgICAgICAgICAgaWYgKGFmdGVyQW55ICE9IHRlc3QubGVuZ3RoLTEpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IGV4YWN0bHkgPSBmaWJzLmZpbmRJbmRleCgtMyk7CisgICAgICAgICAgICBpZiAoZXhhY3RseSAhPSAxKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZpYnMgPSBuZXcgRmFzdEludEJpbmFyeVNlYXJjaChuZXcgaW50W10gezIwLCA0MH0pOworICAgICAgICAgICAgZmlicy5zZXREYXRhKHRlc3QpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L1ZhbGlkYXRpb24uamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvVmFsaWRhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjJlZjdiNTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L1ZhbGlkYXRpb24uamF2YQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBWYWxpZGF0aW9uLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDU6MTAgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0OworCisvKioKKyAqIEl0ZXJhdG9ycyB1c2UgdGhpcyBjbGFzcyB0byBrZWVwIGZyb20gZ2V0dGluZyBvdXQgb2Ygc3luYyB3aXRoCisgKiB0aGVpciB1bmRlcmx5aW5nIGRhdGEuICBXaGVuIGNyZWF0ZWQsIHRoZSBpdGVyYXRvciBnZXRzIGEKKyAqIFZhbGlkYXRpb24gaW5zdGFuY2UuICBJZiB0aGUgdW5kZXJseWluZyBkYXRhIGNoYW5nZXMsIHRoZSBWYWxpZGF0aW9uCisgKiBiZWNvbWVzIGludmFsaWQuICBVc3VhbGx5IGl0ZXJhdG9ycyB3aWxsIHRocm93IGV4Y2VwdGlvbnMgaWYgYWNjZXNzZWQKKyAqIGFmdGVyIGJlY29taW5nIGludmFsaWQuCisgKi8KK2ZpbmFsIGNsYXNzIFZhbGlkYXRpb24geworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIGJvb2xlYW4gZklzVmFsaWQgPSB0cnVlOworCisgICAgYm9vbGVhbiBpc1ZhbGlkKCkgeworCisgICAgICAgIHJldHVybiBmSXNWYWxpZDsKKyAgICB9CisKKyAgICB2b2lkIGludmFsaWRhdGUoKSB7CisKKyAgICAgICAgZklzVmFsaWQgPSBmYWxzZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N0eWxlZHRleHQvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmRkNTgwZDMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zdHlsZWR0ZXh0L3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPGJvZHkgYmdjb2xvcj0id2hpdGUiPgorUHJvdmlkZXMgc3R5bGVkIHRleHQgc3RvcmFnZSBhbmQgcmVsYXRlZCBjbGFzc2VzLgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmdkZW1vL1N3aW5nQ29kZUVkaXQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5nZGVtby9Td2luZ0NvZGVFZGl0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDJlZTQ5NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5nZGVtby9Td2luZ0NvZGVFZGl0LmphdmEKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogU3dpbmdDb2RlRWRpdC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjQ1OjQyICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuc3dpbmdkZW1vOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5kZW1vLkNvZGVFZGl0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuZGVtby5Eb2N1bWVudFdpbmRvdzsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LmRlbW8uU3ludGF4Q29sb3JlcjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LmRlbW8uVGV4dERvY3VtZW50OworCitwdWJsaWMgY2xhc3MgU3dpbmdDb2RlRWRpdCBleHRlbmRzIENvZGVFZGl0IHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgCisgICAgICAgIG5ldyBTd2luZ0NvZGVFZGl0KGFyZ3MsIDApOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgU3dpbmdDb2RlRWRpdChTdHJpbmdbXSBhcmdzLCBpbnQgc3RhcnQpIHsKKyAgICAKKyAgICAgICAgc3VwZXIoYXJncywgc3RhcnQpOworICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgRG9jdW1lbnRXaW5kb3cgY3JlYXRlRG9jdW1lbnRXaW5kb3coVGV4dERvY3VtZW50IGRvY3VtZW50KSB7CisKKyAgICAgICAgcmV0dXJuIG5ldyBTd2luZ0RvY3VtZW50V2luZG93KHRoaXMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmU2V0dGluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBTeW50YXhDb2xvcmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51cyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5nZGVtby9Td2luZ0RvY3VtZW50V2luZG93LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ2RlbW8vU3dpbmdEb2N1bWVudFdpbmRvdy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmVlZGM1YTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ2RlbW8vU3dpbmdEb2N1bWVudFdpbmRvdy5qYXZhCkBAIC0wLDAgKzEsMjgwIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBTd2luZ0RvY3VtZW50V2luZG93LmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDU6NDIgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zd2luZ2RlbW87CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5KVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbExpc3RlbmVyOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbFNldHRpbmdzOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlZFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlTW9kaWZpZXI7CisKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN3aW5ndWkuSlRhYlJ1bGVyOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3dpbmd1aS5Td2luZ01lbnVCdWlsZGVyOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5wcmludC5QcmludGluZ1V0aWxzOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5kZW1vLkF3dERvY3VtZW50V2luZG93OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuZGVtby5Eb2N1bWVudFdpbmRvdzsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LmRlbW8uRWRpdEFwcGxpY2F0aW9uOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuZGVtby5FZGl0b3JSZXNvdXJjZXM7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5kZW1vLlJlc291cmNlVXRpbHM7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5kZW1vLlRleHREb2N1bWVudDsKKworaW1wb3J0IGphdmEuYXd0LkJvcmRlckxheW91dDsKK2ltcG9ydCBqYXZhLmF3dC5GaWxlRGlhbG9nOworaW1wb3J0IGphdmEuYXd0LkZyYW1lOworCitpbXBvcnQgamF2YXguc3dpbmcuSkZyYW1lOworaW1wb3J0IGphdmF4LnN3aW5nLkpNZW51OworaW1wb3J0IGphdmF4LnN3aW5nLkpNZW51QmFyOworaW1wb3J0IGphdmF4LnN3aW5nLkpPcHRpb25QYW5lOworaW1wb3J0IGphdmF4LnN3aW5nLldpbmRvd0NvbnN0YW50czsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0FkYXB0ZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93RXZlbnQ7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CisKK2ltcG9ydCBqYXZhLnRleHQuTWVzc2FnZUZvcm1hdDsKKworLyoqCisgKiBBd3REb2N1bWVudFdpbmRvdyBpcyBhIEZyYW1lIGNvbnRhaW5pbmcgYSBUZXh0UGFuZWwsIHdpdGggYSBkb2N1bWVudAorICogZm9yIHN0b3JpbmcgdGhlIHRleHQgaW4gdGhlIFRleHRQYW5lbC4KKyAqLworZmluYWwgY2xhc3MgU3dpbmdEb2N1bWVudFdpbmRvdyBleHRlbmRzIEpGcmFtZSBpbXBsZW1lbnRzIERvY3VtZW50V2luZG93IHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisKKyAgICBwcml2YXRlIEpUZXh0UGFuZWwgZlRleHRQYW5lbDsKKyAgICBwcml2YXRlIEVkaXRBcHBsaWNhdGlvbiBmQXBwbGljYXRpb247CisgICAgcHJpdmF0ZSBUZXh0RG9jdW1lbnQgZkRvY3VtZW50OworCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgbmV3IEF3dERvY3VtZW50V2luZG93LgorICAgICAqIEBwYXJhbSBhcHBsaWNhdGlvbiB0aGUgYXBwbGljYXRpb24gdGhhdCBvd25zIHRoaXMgZG9jdW1lbnQKKyAgICAgKiBAcGFyYW0gY2xpcGJvYXJkIHRoZSBjbGlwYm9hcmQgdG8gdXNlCisgICAgICogQHBhcmFtIGRvY3VtZW50IHRoZSBkb2N1bWVudCB0byBzaG93IGluIHRoaXMgQXd0RG9jdW1lbnRXaW5kb3cKKyAgICAgKi8KKyAgICBTd2luZ0RvY3VtZW50V2luZG93KEVkaXRBcHBsaWNhdGlvbiBhcHBsaWNhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFRleHREb2N1bWVudCBkb2N1bWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFRleHRQYW5lbFNldHRpbmdzIHRleHRQYW5lbFNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiB1c2VUYWJSdWxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIFRleHRQYW5lbExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBzdXBwb3J0U3R5bGVkVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gc3VwcG9ydFBsYWluVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludFtdIG1lbnVzKSB7CisKKyAgICAgICAgZkFwcGxpY2F0aW9uID0gYXBwbGljYXRpb247CisgICAgICAgIHNldERlZmF1bHRDbG9zZU9wZXJhdGlvbihXaW5kb3dDb25zdGFudHMuRE9fTk9USElOR19PTl9DTE9TRSk7CisgICAgICAgIAorICAgICAgICBmVGV4dFBhbmVsID0gbmV3IEpUZXh0UGFuZWwodGV4dFBhbmVsU2V0dGluZ3MsIG51bGwsIGFwcGxpY2F0aW9uLmdldENsaXBib2FyZCgpKTsKKyAgICAgICAgaWYgKGxpc3RlbmVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZUZXh0UGFuZWwuYWRkTGlzdGVuZXIobGlzdGVuZXIpOworICAgICAgICB9CisgICAgICAgIHNldERvY3VtZW50KGRvY3VtZW50KTsKKworICAgICAgICBhZGRNZW51QmFyKHN1cHBvcnRTdHlsZWRUZXh0LCBzdXBwb3J0UGxhaW5UZXh0LCBtZW51cyk7CisKKyAgICAgICAgZ2V0Q29udGVudFBhbmUoKS5zZXRMYXlvdXQobmV3IEJvcmRlckxheW91dCgpKTsKKworICAgICAgICBpZiAodXNlVGFiUnVsZXIpIHsKKyAgICAgICAgICAgIEpUYWJSdWxlciB0YWJSdWxlciA9IG5ldyBKVGFiUnVsZXIoMTQsIDEwLCBmVGV4dFBhbmVsKTsKKyAgICAgICAgICAgIGdldENvbnRlbnRQYW5lKCkuYWRkKHRhYlJ1bGVyLCAiTm9ydGgiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZ2V0Q29udGVudFBhbmUoKS5hZGQoZlRleHRQYW5lbCwgIkNlbnRlciIpOworCisgICAgICAgIGFkZFdpbmRvd0xpc3RlbmVyKG5ldyBXaW5kb3dBZGFwdGVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgd2luZG93Q2xvc2luZyhXaW5kb3dFdmVudCBlKSB7CisgICAgICAgICAgICAgICAgZG9DbG9zZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgYWRkTWVudUJhcihib29sZWFuIHN1cHBvcnRTdHlsZWRUZXh0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHN1cHBvcnRQbGFpblRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50W10gbWVudXMpIHsKKyAgICAgICAgCisgICAgICAgIEpNZW51QmFyIG1lbnVCYXIgPSBuZXcgSk1lbnVCYXIoKTsKKyAgICAgICAgU3RyaW5nIG1lbnVUaXRsZSA9IFJlc291cmNlVXRpbHMuZ2V0U3RyaW5nKEVkaXRvclJlc291cmNlcy5GSUxFKTsKKyAgICAgICAgSk1lbnUgbWVudSA9IG5ldyBKTWVudShtZW51VGl0bGUpOworICAgICAgICBuZXcgU3dpbmdGaWxlTWVudU1hbmFnZXIobWVudSwgZkFwcGxpY2F0aW9uLCB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydFN0eWxlZFRleHQsIHN1cHBvcnRQbGFpblRleHQpOworICAgICAgICBtZW51QmFyLmFkZChtZW51KTsKKworICAgICAgICBTd2luZ01lbnVCdWlsZGVyLmdldEluc3RhbmNlKCkuY3JlYXRlTWVudXMobWVudUJhciwgZlRleHRQYW5lbCwgdGhpcywgbWVudXMpOworICAgICAgICBzZXRKTWVudUJhcihtZW51QmFyKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgaXQgaXMgT0sgdG8gc2V0IHRoZSBkb2N1bWVudCB0ZXh0IGFuZCBmaWxlIHRvCisgICAgICogc29tZXRoaW5nIGRpZmZlcmVudC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gY2FuQ2hhbmdlRG9jdW1lbnRzKCkgeworCisgICAgICAgIC8vIElmIHRoZSB0ZXh0IGlzIG1vZGlmaWVkLCBnaXZlIHRoZSB1c2VyIGEgY2hhbmNlIHRvCisgICAgICAgIC8vIHNhdmUgaXQuICBPdGhlcndpc2UgcmV0dXJuIHRydWUuCisKKyAgICAgICAgaWYgKGZEb2N1bWVudC5pc01vZGlmaWVkKCkpIHsKKyAgICAgICAgICAgIGludCBzYXZlID0gYXNrU2F2ZSgpOworICAgICAgICAgICAgaWYgKHNhdmUgPT0gSk9wdGlvblBhbmUuWUVTX09QVElPTikgeworICAgICAgICAgICAgICAgIHJldHVybiBkb1NhdmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBzYXZlID09IEpPcHRpb25QYW5lLk5PX09QVElPTjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNldERvY3VtZW50KFRleHREb2N1bWVudCBkb2N1bWVudCkgeworCisgICAgICAgIGZEb2N1bWVudCA9IGRvY3VtZW50OworICAgICAgICBmRG9jdW1lbnQuc2V0VGV4dFBhbmVsKGZUZXh0UGFuZWwpOworICAgICAgICBzZXRUaXRsZShmRG9jdW1lbnQuZ2V0VGl0bGUoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBkb2N1bWVudCB0byBlbXB0eSB0ZXh0IHdpdGggbm8gYXNzb2NpYXRlZCBmaWxlLiAgSWYKKyAgICAgKiB0aGUgZG9jdW1lbnQgdGV4dCBpcyBub3Qgc2F2ZWQsIHByb21wdCB0aGUgdXNlciB0byBzYXZlIHRoZQorICAgICAqIHRoZSB0ZXh0IGZpcnN0LiAgSWYgdGhpcyBvcGVyYXRpb24gaXMgY2FuY2VsZWQsIHRoZSBkb2N1bWVudAorICAgICAqIGlzIHVuY2hhbmdlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBkb05ldygpIHsKKworICAgICAgICBpZiAoIWNhbkNoYW5nZURvY3VtZW50cygpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHNldERvY3VtZW50KGZBcHBsaWNhdGlvbi5jcmVhdGVOZXdEb2N1bWVudCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcm9tcHQgdGhlIHVzZXIgZm9yIGEgZmlsZSBmcm9tIHdoaWNoIHRvIGxvYWQgYSB0ZXh0IGRvY3VtZW50LgorICAgICAqIElmIHRoZSBjdXJyZW50IHRleHQgaXMgbm90IHNhdmVkLCBmaXJzdCBwcm9tcHQgdGhlIHVzZXIgdG8KKyAgICAgKiBzYXZlLiAgSWYgZWl0aGVyIG9wZXJhdGlvbiBpcyBjYW5jZWxlZCBvciBmYWlscywgdGhlIGRvY3VtZW50CisgICAgICogaXMgdW5jaGFuZ2VkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGRvT3BlbigpIHsKKworICAgICAgICBpZiAoIWNhbkNoYW5nZURvY3VtZW50cygpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBUZXh0RG9jdW1lbnQgZG9jdW1lbnQgPSBmQXBwbGljYXRpb24ub3BlbkRvY3VtZW50KHRoaXMpOworCisgICAgICAgIGlmIChkb2N1bWVudCAhPSBudWxsKSB7CisgICAgICAgICAgICBzZXREb2N1bWVudChkb2N1bWVudCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcm9tcHQgdGhlIHVzZXIgZm9yIGEgZmlsZSBpbiB3aGljaCB0byBzYXZlIHRoZSBkb2N1bWVudCB0ZXh0LgorICAgICAqIElmIHRoaXMgb3BlcmF0aW9uIGlzIG5vdCBjYW5jZWxlZCwgc2F2ZSB0aGUgdGV4dCBpbiB0aGUgZmlsZS4KKyAgICAgKiBUaGUgZmlsZSBiZWNvbWVzIHRoaXMgZG9jdW1lbnQncyBmaWxlLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGRvU2F2ZUFzKGludCBmb3JtYXQpIHsKKworICAgICAgICBTdHJpbmcgdGl0bGUgPSBSZXNvdXJjZVV0aWxzLmdldFN0cmluZyhFZGl0b3JSZXNvdXJjZXMuU0FWRV9USVRMRSk7CisgICAgICAgIEZpbGUgZmlsZSA9IEF3dERvY3VtZW50V2luZG93LmdldEZpbGVGcm9tRGlhbG9nKGZEb2N1bWVudC5nZXRGaWxlKCksIHRpdGxlLCB0aGlzLCBGaWxlRGlhbG9nLlNBVkUpOworICAgICAgICAKKyAgICAgICAgaWYgKGZpbGUgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmRG9jdW1lbnQuc2V0RmlsZShmaWxlKTsKKyAgICAgICAgc2V0VGl0bGUoZkRvY3VtZW50LmdldFRpdGxlKCkpOworCisgICAgICAgIGZEb2N1bWVudC5zZXRGb3JtYXQoZm9ybWF0KTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmRG9jdW1lbnQuc2F2ZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNhdmUgdGhlIHRleHQgaW4gdGhpcyBkb2N1bWVudC4gIElmIHRoZXJlIGlzIG5vIGZpbGUgYXNzb2NpYXRlZAorICAgICAqIHdpdGggdGhlIHRleHQsIHRoaXMgaXMgZXF1aXZhbGVudCB0byA8Y29kZT5kb1NhdmVBczwvY29kZT4uCisgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0cnVlIGlmIHRoZSBkb2N1bWVudCB3YXMgc3VjY2Vzc2Z1bGx5IHNhdmVkLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGRvU2F2ZSgpIHsKKworICAgICAgICBpZiAoZkRvY3VtZW50LmdldEZpbGUoKSA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZG9TYXZlQXMoZkRvY3VtZW50LmdldEZvcm1hdCgpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZEb2N1bWVudC5zYXZlKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJpbnQgdGhlIGNvbnRlbnRzIG9mIHRoaXMgd2luZG93LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGRvUHJpbnQoKSB7CisKKyAgICAgICAgUHJpbnRpbmdVdGlscy51c2VyUHJpbnRUZXh0KGZEb2N1bWVudC5nZXRUZXh0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmVGV4dFBhbmVsLmdldERlZmF1bHRWYWx1ZXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFRpdGxlKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEF0dGVtcHQgdG8gY2xvc2UgdGhpcyB3aW5kb3cuICBJZiB0aGUgdGV4dCBoYXMgbm90IGJlZW4gc2F2ZWQsCisgICAgICogZ2l2ZSB0aGUgdXNlciBhIGNoYW5jZSB0byBzYXZlIHRoZSB0ZXh0IGJlZm9yZSBjbG9zaW5nIHRoZQorICAgICAqIHdpbmRvdy4gIElmIHRoZSB1c2VyIGNhbmNlbHMgdGhpcyBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHJldHVybnMKKyAgICAgKiBmYWxzZSBhbmQgdGhlIHdpbmRvdyBpcyBub3QgY2xvc2VkOyAgb3RoZXJ3aXNlIHRoaXMgbWV0aG9kCisgICAgICogcmV0dXJucyB0cnVlIGFuZCB0aGUgd2luZG93IGlzIGNsb3NlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBkb0Nsb3NlKCkgeworCisgICAgICAgIGlmIChjYW5DaGFuZ2VEb2N1bWVudHMoKSkgeworICAgICAgICAgICAgc2V0VmlzaWJsZShmYWxzZSk7CisgICAgICAgICAgICBkaXNwb3NlKCk7CisgICAgICAgICAgICBmQXBwbGljYXRpb24ucmVtb3ZlRG9jdW1lbnRXaW5kb3codGhpcyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIERpc3BsYXkgYSBkaWFsb2cgdGhhdCBhc2tzIHdoZXRoZXIgdGhlIHVzZXIgd2FudHMgdG8KKyAgICAgKiBzYXZlIGEgZG9jdW1lbnQuICBUaGUgcmV0dXJuZWQgdmFsdWUgd2lsbCBiZSBZRVNfT1BUSU9OLAorICAgICAqIE5PX09QVElPTiwgb3IgQ0FOQ0VMX09QVElPTiBmcm9tIEpPcHRpb25QYW5lLgorICAgICAqLworICAgIHByaXZhdGUgaW50IGFza1NhdmUoKSB7CisKKyAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSBSZXNvdXJjZVV0aWxzLmdldFN0cmluZyhFZGl0b3JSZXNvdXJjZXMuU0FWRV9NU0cpOworICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IE1lc3NhZ2VGb3JtYXQuZm9ybWF0KHBhdHRlcm4sIG5ldyBPYmplY3RbXSB7Z2V0VGl0bGUoKX0pOworICAgICAgICAKKyAgICAgICAgU3RyaW5nIHllcyA9IFJlc291cmNlVXRpbHMuZ2V0U3RyaW5nKEVkaXRvclJlc291cmNlcy5ZRVMpOworICAgICAgICBTdHJpbmcgbm8gPSBSZXNvdXJjZVV0aWxzLmdldFN0cmluZyhFZGl0b3JSZXNvdXJjZXMuTk8pOworICAgICAgICBTdHJpbmcgY2FuY2VsID0gUmVzb3VyY2VVdGlscy5nZXRTdHJpbmcoRWRpdG9yUmVzb3VyY2VzLkNBTkNFTCk7CisKKyAgICAgICAgcmV0dXJuIEpPcHRpb25QYW5lLnNob3dPcHRpb25EaWFsb2codGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpPcHRpb25QYW5lLllFU19OT19DQU5DRUxfT1BUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKT3B0aW9uUGFuZS5RVUVTVElPTl9NRVNTQUdFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0W117eWVzLG5vLGNhbmNlbH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHllcyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5nZGVtby9Td2luZ0VkaXREZW1vLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ2RlbW8vU3dpbmdFZGl0RGVtby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQ1ODExMjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ2RlbW8vU3dpbmdFZGl0RGVtby5qYXZhCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFN3aW5nRWRpdERlbW8uamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0NTo0MiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnN3aW5nZGVtbzsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuZGVtby5FZGl0RGVtbzsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LmRlbW8uRG9jdW1lbnRXaW5kb3c7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5kZW1vLlRleHREb2N1bWVudDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLkpUZXh0UGFuZWw7CisKK3B1YmxpYyBjbGFzcyBTd2luZ0VkaXREZW1vIGV4dGVuZHMgRWRpdERlbW8geworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAKKyAgICAgICAgbmV3IFN3aW5nQ29kZUVkaXQoYXJncywgMCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBTd2luZ0VkaXREZW1vKFN0cmluZ1tdIGFyZ3MsIGludCBzdGFydCkgeworICAgIAorICAgICAgICBzdXBlcihhcmdzLCBzdGFydCk7CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCBEb2N1bWVudFdpbmRvdyBjcmVhdGVEb2N1bWVudFdpbmRvdyhUZXh0RG9jdW1lbnQgZG9jdW1lbnQpIHsKKworICAgICAgICByZXR1cm4gbmV3IFN3aW5nRG9jdW1lbnRXaW5kb3codGhpcywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpUZXh0UGFuZWwuZ2V0RGVmYXVsdFNldHRpbmdzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5nZGVtby9Td2luZ0ZpbGVNZW51TWFuYWdlci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmdkZW1vL1N3aW5nRmlsZU1lbnVNYW5hZ2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMGYyNGQyYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5nZGVtby9Td2luZ0ZpbGVNZW51TWFuYWdlci5qYXZhCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFN3aW5nRmlsZU1lbnVNYW5hZ2VyLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDU6NDIgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zd2luZ2RlbW87CisKK2ltcG9ydCBqYXZhLmF3dC5FdmVudDsKKworaW1wb3J0IGphdmF4LnN3aW5nLkpNZW51OworaW1wb3J0IGphdmF4LnN3aW5nLkpNZW51SXRlbTsKK2ltcG9ydCBqYXZheC5zd2luZy5KU2VwYXJhdG9yOworaW1wb3J0IGphdmF4LnN3aW5nLktleVN0cm9rZTsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuZGVtby5Eb2N1bWVudFdpbmRvdzsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LmRlbW8uRWRpdEFwcGxpY2F0aW9uOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuZGVtby5GaWxlTWVudU1hbmFnZXI7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5kZW1vLk1lbnVEYXRhOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuZGVtby5SZXNvdXJjZVV0aWxzOworCitmaW5hbCBjbGFzcyBTd2luZ0ZpbGVNZW51TWFuYWdlciBleHRlbmRzIEZpbGVNZW51TWFuYWdlciB7CisKKyAgICBwcml2YXRlIEpNZW51IGZNZW51OworICAgIAorICAgIHB1YmxpYyBTd2luZ0ZpbGVNZW51TWFuYWdlcihKTWVudSBtZW51LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGl0QXBwbGljYXRpb24gYXBwbGljYXRpb24sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEb2N1bWVudFdpbmRvdyBkb2N1bWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBzdXBwb3J0U3R5bGVkRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHN1cHBvcnRQbGFpbkZvcm1hdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgc3VwZXIoYXBwbGljYXRpb24sIGRvY3VtZW50KTsKKyAgICAgICAgCisgICAgICAgIGZNZW51ID0gbWVudTsKKyAgICAgICAgY3JlYXRlSXRlbXMoc3VwcG9ydFN0eWxlZEZvcm1hdCwgc3VwcG9ydFBsYWluRm9ybWF0KTsKKyAgICAgICAgZk1lbnUgPSBudWxsOworICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgT2JqZWN0IGFkZE1lbnVJdGVtKFN0cmluZyBrZXkpIHsKKworICAgICAgICBNZW51RGF0YSBtZW51RGF0YSA9IFJlc291cmNlVXRpbHMuZ2V0TWVudURhdGEoa2V5KTsKKyAgICAgICAgSk1lbnVJdGVtIGl0ZW0gPSBuZXcgSk1lbnVJdGVtKG1lbnVEYXRhLmdldE5hbWUoKSk7CisgICAgICAgIGlmIChtZW51RGF0YS5oYXNTaG9ydGN1dCgpKSB7CisgICAgICAgICAgICBLZXlTdHJva2Uga3MgPSBLZXlTdHJva2UuZ2V0S2V5U3Ryb2tlKG1lbnVEYXRhLmdldFNob3J0Y3V0S2V5Q29kZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdmVudC5DVFJMX01BU0spOworICAgICAgICAgICAgaXRlbS5zZXRBY2NlbGVyYXRvcihrcyk7CisgICAgICAgIH0KKyAgICAgICAgaXRlbS5hZGRBY3Rpb25MaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgZk1lbnUuYWRkKGl0ZW0pOworICAgICAgICByZXR1cm4gaXRlbTsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIHZvaWQgYWRkU2VwYXJhdG9yKCkgeworICAgIAorICAgICAgICBmTWVudS5hZGQobmV3IEpTZXBhcmF0b3IoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmd1aS9KTWVzc2FnZURpYWxvZy5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmd1aS9KTWVzc2FnZURpYWxvZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ1NWZkNjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ3VpL0pNZXNzYWdlRGlhbG9nLmphdmEKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogSk1lc3NhZ2VEaWFsb2cuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0NjoyMiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnN3aW5ndWk7CisKK2ltcG9ydCBqYXZhLmF3dC5Db2xvcjsKK2ltcG9ydCBqYXZhLmF3dC5Db250YWluZXI7CitpbXBvcnQgamF2YS5hd3QuQ2FyZExheW91dDsKKworaW1wb3J0IGphdmF4LnN3aW5nLkpGcmFtZTsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0FkYXB0ZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93RXZlbnQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLkpUZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsU2V0dGluZ3M7CisKKy8qKgorICogTWVzc2FnZURpYWxvZyBpcyBhIHNpbXBsZSBGcmFtZSB3aGljaCBkaXNwbGF5cyBhIHN0eWxlZAorICogdGV4dCBtZXNzYWdlIGluIGEgVGV4dFBhbmVsLgorICogVGhlIHRleHQgaW4gdGhlIG1lc3NhZ2UgaXMgbm90IHNlbGVjdGFibGUgb3IgZWRpdGFibGUuCisgKiBAc2VlIE1Db25zdFRleHQKKyAqIEBzZWUgSlRleHRQYW5lbAorICovCitwdWJsaWMgZmluYWwgY2xhc3MgSk1lc3NhZ2VEaWFsb2cgZXh0ZW5kcyBKRnJhbWUgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAvKioKKyAgICAqIENyZWF0ZSBhIG5ldyBNZXNzYWdlRGlhbG9nLgorICAgICogQHBhcmFtIHRpdGxlIHRoZSBkaWFsb2cncyB0aXRsZQorICAgICogQHBhcmFtIG1lc3NhZ2UgdGhlIHRleHQgd2hpY2ggd2lsbCBhcHBlYXIgaW4gdGhlIGRpYWxvZworICAgICovCisgICAgcHVibGljIEpNZXNzYWdlRGlhbG9nKFN0cmluZyB0aXRsZSwgTUNvbnN0VGV4dCBtZXNzYWdlKQorICAgIHsKKyAgICAgICAgc3VwZXIodGl0bGUpOworCisgICAgICAgIENvbnRhaW5lciBjb250ZW50ID0gZ2V0Q29udGVudFBhbmUoKTsKKyAgICAgICAgY29udGVudC5zZXRMYXlvdXQobmV3IENhcmRMYXlvdXQoKSk7CisgICAgICAgIFRleHRQYW5lbFNldHRpbmdzIHNldHRpbmdzID0gSlRleHRQYW5lbC5nZXREZWZhdWx0U2V0dGluZ3MoKTsKKyAgICAgICAgc2V0dGluZ3Muc2V0U2Nyb2xsYWJsZShmYWxzZSk7CisgICAgICAgIHNldHRpbmdzLnNldFNlbGVjdGFibGUoZmFsc2UpOworICAgICAgICBKVGV4dFBhbmVsIHBhbmVsID0gbmV3IEpUZXh0UGFuZWwoc2V0dGluZ3MsIG1lc3NhZ2UsIG51bGwpOworCisgICAgICAgIHBhbmVsLnNldEJhY2tncm91bmQoQ29sb3IuYmxhY2spOworICAgICAgICBjb250ZW50LmFkZCgiQ2VudGVyIiwgcGFuZWwpOworCisgICAgICAgIGFkZFdpbmRvd0xpc3RlbmVyKG5ldyBXaW5kb3dBZGFwdGVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgd2luZG93Q2xvc2luZyhXaW5kb3dFdmVudCBlKSB7CisgICAgICAgICAgICAgICAgc2V0VmlzaWJsZShmYWxzZSk7CisgICAgICAgICAgICAgICAgZGlzcG9zZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKworICAgICAgICBzZXRTaXplKDQ1MCwzMjApOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5ndWkvSk51bWJlckRpYWxvZy5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmd1aS9KTnVtYmVyRGlhbG9nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOGMyMGFlNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5ndWkvSk51bWJlckRpYWxvZy5qYXZhCkBAIC0wLDAgKzEsMTYyIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBKTnVtYmVyRGlhbG9nLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDY6MjIgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zd2luZ3VpOworCitpbXBvcnQgamF2YS5hd3QuQ29udGFpbmVyOworaW1wb3J0IGphdmEuYXd0LkZsb3dMYXlvdXQ7CitpbXBvcnQgamF2YS5hd3QuRnJhbWU7CisKK2ltcG9ydCBqYXZhLnRleHQuTnVtYmVyRm9ybWF0OworaW1wb3J0IGphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbjsKKworaW1wb3J0IGphdmF4LnN3aW5nLkpEaWFsb2c7CitpbXBvcnQgamF2YXguc3dpbmcuSlBhbmVsOworaW1wb3J0IGphdmF4LnN3aW5nLkpUZXh0RmllbGQ7CitpbXBvcnQgamF2YXguc3dpbmcuSkJ1dHRvbjsKK2ltcG9ydCBqYXZheC5zd2luZy5KTGFiZWw7CisKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25FdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25MaXN0ZW5lcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dFdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dBZGFwdGVyOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwucmVzb3VyY2VzLkZyYW1lUmVzb3VyY2VzOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLk1lbnVJdGVtU2V0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLlJlc291cmNlVXRpbHM7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVNb2RpZmllcjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworCisvKioKKyogU2ltcGxlIGRpYWxvZyB3aGljaCBnZXRzIGEgbnVtYmVyLCBhbmQgc2VuZHMgYW4gYXBwcm9wcmlhdGUgY29tbWFuZAorKi8KK2ZpbmFsIGNsYXNzIEpOdW1iZXJEaWFsb2cgZXh0ZW5kcyBKRGlhbG9nIGltcGxlbWVudHMgQWN0aW9uTGlzdGVuZXIKK3sKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgTVRleHRQYW5lbCBmVGV4dFBhbmVsOworICAgIHByaXZhdGUgSlRleHRGaWVsZCBmSW5wdXQgPSBudWxsOworCisgICAgcHJpdmF0ZSBKQnV0dG9uIGZPS0J1dHRvbiA9IG51bGw7CisgICAgcHJpdmF0ZSBKQnV0dG9uIGZDYW5jZWxCdXR0b24gPSBudWxsOworICAgIHByaXZhdGUgYm9vbGVhbiBmQ2hhcmFjdGVyOworICAgIHByaXZhdGUgT2JqZWN0IGZLZXk7CisgICAgcHJpdmF0ZSBmbG9hdCBmTXVsdGlwbGllcjsgCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gbXVsdGlwbGllciB0aGUgZmFjdG9yIGJ5IHdoaWNoIHRvIG11bHRpcGx5IHRoZSB1c2VyJ3MKKyAgICAgKiAgICAgICAgc2VsZWN0aW9uIGJlZm9yZSBjcmVhdGluZyB0aGUgYXR0cmlidXRlIHZhbHVlLiAgIFRoaXMKKyAgICAgKiAgICAgICAgaXMgdXNlZnVsIGZvciBzdWJzY3JpcHRpbmcuCisgICAgICovCisgICAgSk51bWJlckRpYWxvZyhGcmFtZSBwYXJlbnQsCisgICAgICAgICAgICAgICAgICBTdHJpbmcgdGl0bGUsCisgICAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgIE1UZXh0UGFuZWwgdGV4dFBhbmVsLAorICAgICAgICAgICAgICAgICAgT2JqZWN0IGtleSwKKyAgICAgICAgICAgICAgICAgIGJvb2xlYW4gY2hhcmFjdGVyLAorICAgICAgICAgICAgICAgICAgZmxvYXQgbXVsdGlwbGllcikgeworCisgICAgICAgIHN1cGVyKHBhcmVudCwgdGl0bGUsIGZhbHNlKTsKKyAgICAgICAgZlRleHRQYW5lbCA9IHRleHRQYW5lbDsKKyAgICAgICAgZktleSA9IGtleTsKKyAgICAgICAgZkNoYXJhY3RlciA9IGNoYXJhY3RlcjsKKyAgICAgICAgZk11bHRpcGxpZXIgPSBtdWx0aXBsaWVyOworICAgICAgICAKKyAgICAgICAgQ29udGFpbmVyIGNvbnRlbnQgPSBnZXRDb250ZW50UGFuZSgpOworICAgICAgICAKKyAgICAgICAgY29udGVudC5zZXRMYXlvdXQobmV3IGphdmEuYXd0LkdyaWRMYXlvdXQoMiwxKSk7CisKKyAgICAgICAgSlBhbmVsIHBhbmVsID0gbmV3IEpQYW5lbCgpOworICAgICAgICBwYW5lbC5zZXRMYXlvdXQobmV3IEZsb3dMYXlvdXQoRmxvd0xheW91dC5DRU5URVIsIDEwLCAxNSkpOworICAgICAgICBmSW5wdXQgPSBuZXcgSlRleHRGaWVsZCg1KTsKKworICAgICAgICBwYW5lbC5hZGQobmV3IEpMYWJlbChtZXNzYWdlKSk7CisgICAgICAgIHBhbmVsLmFkZChmSW5wdXQpOworICAgICAgICBjb250ZW50LmFkZCgiQ2VudGVyIiwgcGFuZWwpOworCisgICAgICAgIGZDYW5jZWxCdXR0b24gPSBuZXcgSkJ1dHRvbihSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLkNBTkNFTCkpOworICAgICAgICBmT0tCdXR0b24gPSBuZXcgSkJ1dHRvbihSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLk9LKSk7CisgICAgICAgIEpQYW5lbCBwID0gbmV3IEpQYW5lbCgpOworICAgICAgICBwLnNldExheW91dChuZXcgRmxvd0xheW91dChGbG93TGF5b3V0LkNFTlRFUiwgNSwgNSkpOworICAgICAgICBwLmFkZChmQ2FuY2VsQnV0dG9uKTsKKyAgICAgICAgcC5hZGQoZk9LQnV0dG9uKTsKKyAgICAgICAgY29udGVudC5hZGQoIlNvdXRoIiwgcCk7CisKKyAgICAgICAgcGFjaygpOworCisgICAgICAgIGFkZFdpbmRvd0xpc3RlbmVyKG5ldyBXaW5kb3dBZGFwdGVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgd2luZG93Q2xvc2luZyhXaW5kb3dFdmVudCBlKSB7CisgICAgICAgICAgICAgICAgY2xvc2VXaW5kb3coZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIGZPS0J1dHRvbi5hZGRBY3Rpb25MaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgZkNhbmNlbEJ1dHRvbi5hZGRBY3Rpb25MaXN0ZW5lcih0aGlzKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgY2xvc2VXaW5kb3coYm9vbGVhbiBzZW5kQWN0aW9uKSB7CisKKyAgICAgICAgc2V0VmlzaWJsZShmYWxzZSk7CisKKyAgICAgICAgaW50IG51bSA9IDA7CisgICAgICAgIGlmIChzZW5kQWN0aW9uKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIFN0cmluZyB0ZXh0ID0gZklucHV0LmdldFRleHQoKTsKKyAgICAgICAgICAgICAgICBudW0gPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoKS5wYXJzZSh0ZXh0KS5pbnRWYWx1ZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2ggKFBhcnNlRXhjZXB0aW9uIGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAgIHNlbmRBY3Rpb24gPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChzZW5kQWN0aW9uKSB7CisgICAgICAgICAgICBzZW5kQWN0aW9uKG51bSk7CisgICAgICAgIH0KKworICAgICAgICBkaXNwb3NlKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGUpIHsKKworICAgICAgICBPYmplY3Qgc291cmNlID0gZS5nZXRTb3VyY2UoKTsKKworICAgICAgICBpZiAoc291cmNlID09IGZPS0J1dHRvbikgeworICAgICAgICAgICAgY2xvc2VXaW5kb3codHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoc291cmNlID09IGZDYW5jZWxCdXR0b24pIHsKKyAgICAgICAgICAgIGNsb3NlV2luZG93KGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgQWN0aW9uRXZlbnQhIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAqIEhhbmRsZSB0aGUgdXNlciBpbnB1dAorICAgICogQHBhcmFtIHRoZSBudW1iZXIgdGhlIHVzZXIgdHlwZWQgaW4KKyAgICAqLworICAgIHByaXZhdGUgdm9pZCBzZW5kQWN0aW9uKGludCBudW1iZXIpIHsKKyAgICAgICAgZmxvYXQgbnVtID0gbnVtYmVyICogZk11bHRpcGxpZXI7CisgICAgICAgIFN0eWxlTW9kaWZpZXIgbW9kaWZpZXIgPSBTdHlsZU1vZGlmaWVyLmNyZWF0ZUFkZE1vZGlmaWVyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZktleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBGbG9hdChudW0pKTsKKyAgICAgICAgaWYgKGZDaGFyYWN0ZXIgPT0gTWVudUl0ZW1TZXQuQ0hBUkFDVEVSKSB7CisgICAgICAgICAgICBmVGV4dFBhbmVsLm1vZGlmeUNoYXJhY3RlclN0eWxlT25TZWxlY3Rpb24obW9kaWZpZXIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZlRleHRQYW5lbC5tb2RpZnlQYXJhZ3JhcGhTdHlsZU9uU2VsZWN0aW9uKG1vZGlmaWVyKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5ndWkvSk9iamVjdERpYWxvZy5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmd1aS9KT2JqZWN0RGlhbG9nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOGQ2NDJiZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5ndWkvSk9iamVjdERpYWxvZy5qYXZhCkBAIC0wLDAgKzEsMjgwIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBKT2JqZWN0RGlhbG9nLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDY6MjIgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC5zd2luZ3VpOworCitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKKworaW1wb3J0IGphdmF4LnN3aW5nLkJveDsKK2ltcG9ydCBqYXZheC5zd2luZy5Cb3JkZXJGYWN0b3J5OworaW1wb3J0IGphdmF4LnN3aW5nLkJveExheW91dDsKK2ltcG9ydCBqYXZheC5zd2luZy5KRGlhbG9nOworaW1wb3J0IGphdmF4LnN3aW5nLkpQYW5lbDsKK2ltcG9ydCBqYXZheC5zd2luZy5KU2Nyb2xsUGFuZTsKK2ltcG9ydCBqYXZheC5zd2luZy5KQnV0dG9uOworaW1wb3J0IGphdmF4LnN3aW5nLkpMaXN0OworaW1wb3J0IGphdmF4LnN3aW5nLkpMYWJlbDsKK2ltcG9ydCBqYXZheC5zd2luZy5MaXN0U2VsZWN0aW9uTW9kZWw7CisKK2ltcG9ydCBqYXZheC5zd2luZy5ldmVudC5MaXN0U2VsZWN0aW9uRXZlbnQ7CitpbXBvcnQgamF2YXguc3dpbmcuZXZlbnQuTGlzdFNlbGVjdGlvbkxpc3RlbmVyOworCitpbXBvcnQgamF2YS5hd3QuQm9yZGVyTGF5b3V0OworaW1wb3J0IGphdmEuYXd0LkNvbnRhaW5lcjsKK2ltcG9ydCBqYXZhLmF3dC5EaW1lbnNpb247CitpbXBvcnQgamF2YS5hd3QuRnJhbWU7CitpbXBvcnQgamF2YS5hd3QuRmxvd0xheW91dDsKK2ltcG9ydCBqYXZhLmF3dC5HcmlkTGF5b3V0OworCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uRXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uTGlzdGVuZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuTW91c2VFdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5Nb3VzZUFkYXB0ZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93RXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93QWRhcHRlcjsKKworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlTW9kaWZpZXI7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuTVRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5NZW51SXRlbVNldDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLnJlc291cmNlcy5GcmFtZVJlc291cmNlczsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5SZXNvdXJjZVV0aWxzOworCisvKioKKyogU2ltcGxlIGRpYWxvZyB0aGF0IHNldHMgYW4gYXR0cmlidXRlLgorKi8KK2ZpbmFsIGNsYXNzIEpPYmplY3REaWFsb2cgZXh0ZW5kcyBKRGlhbG9nIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisKKyAgICBwcml2YXRlIGZpbmFsIE1UZXh0UGFuZWwgZlRleHRQYW5lbDsKKyAgICBwcml2YXRlIGZpbmFsIE9iamVjdCBmS2V5OworICAgIHByaXZhdGUgYm9vbGVhbiBmQ2hhcmFjdGVyOworICAgIHByaXZhdGUgSGFzaHRhYmxlIGZOYW1lVG9WYWx1ZU1hcDsKKyAgICAKKyAgICBwcml2YXRlIGZpbmFsIEpCdXR0b24gZk9LQnV0dG9uOworICAgIHByaXZhdGUgZmluYWwgSkJ1dHRvbiBmQ2FuY2VsQnV0dG9uOworICAgIHByaXZhdGUgZmluYWwgSkxpc3QgZkl0ZW1zOworICAgIAorICAgIC8qKgorICAgICogQ29uc3RydWN0IGEgbmV3IEpPYmplY3REaWFsb2cuCisgICAgKiBAcGFyYW0gcGFyZW50IHRoZSBkaWFsb2cncyBwYXJlbnQgZnJhbWUKKyAgICAqIEBwYXJhbSB0aXRsZSB0aGUgZGlhbG9ncyB0aXRsZQorICAgICogQHBhcmFtIG1lc3NhZ2UgdGhlIG1lc3NhZ2UgZGlzcGxheWVkIG5leHQgdG8gdGhlIGlucHV0IGJveAorICAgICovCisgICAgSk9iamVjdERpYWxvZyhGcmFtZSBwYXJlbnQsCisgICAgICAgICAgICAgICAgICBTdHJpbmcgdGl0bGUsIAorICAgICAgICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UsIAorICAgICAgICAgICAgICAgICAgTVRleHRQYW5lbCB0ZXh0UGFuZWwsCisgICAgICAgICAgICAgICAgICBPYmplY3Qga2V5LAorICAgICAgICAgICAgICAgICAgYm9vbGVhbiBjaGFyYWN0ZXIsCisgICAgICAgICAgICAgICAgICBTdHJpbmdbXSBuYW1lcywKKyAgICAgICAgICAgICAgICAgIE9iamVjdFtdIHZhbHVlcykgeworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgc3VwZXIocGFyZW50LCB0aXRsZSwgZmFsc2UpOworCisgICAgICAgIHNldHVwTWFwKG5hbWVzLCB2YWx1ZXMpOworICAgICAgICAKKyAgICAgICAgRGltZW5zaW9uIHNpemUgPSBuZXcgRGltZW5zaW9uKDI1MCwgMjAwKTsKKyAgICAgICAgCisgICAgICAgIGZUZXh0UGFuZWwgPSB0ZXh0UGFuZWw7CisgICAgICAgIGZLZXkgPSBrZXk7CisgICAgICAgIGZDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CisgICAgICAgIAorICAgICAgICBmSXRlbXMgPSBuZXcgSkxpc3QobmFtZXMpOworICAgICAgICBmSXRlbXMuc2V0U2VsZWN0aW9uTW9kZShMaXN0U2VsZWN0aW9uTW9kZWwuTVVMVElQTEVfSU5URVJWQUxfU0VMRUNUSU9OKTsKKyAgICAgICAgCisgICAgICAgIGZJdGVtcy5hZGRNb3VzZUxpc3RlbmVyKG5ldyBNb3VzZUFkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBtb3VzZUNsaWNrZWQoTW91c2VFdmVudCBlKSB7CisgICAgICAgICAgICAgICAgaWYgKGUuZ2V0Q2xpY2tDb3VudCgpID09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xvc2VXaW5kb3codHJ1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgCisgICAgICAgIEpTY3JvbGxQYW5lIGxpc3RTY3JvbGxlciA9IG5ldyBKU2Nyb2xsUGFuZShmSXRlbXMpOworICAgICAgICBsaXN0U2Nyb2xsZXIuc2V0UHJlZmVycmVkU2l6ZShzaXplKTsKKyAgICAgICAgbGlzdFNjcm9sbGVyLnNldFByZWZlcnJlZFNpemUoc2l6ZSk7CisgICAgICAgIGxpc3RTY3JvbGxlci5zZXRBbGlnbm1lbnRYKExFRlRfQUxJR05NRU5UKTsKKworICAgICAgICBKTGFiZWwgbGFiZWwgPSBuZXcgSkxhYmVsKG1lc3NhZ2UpOworICAgICAgICBsYWJlbC5zZXRMYWJlbEZvcihmSXRlbXMpOworICAgICAgICAKKyAgICAgICAgSlBhbmVsIGl0ZW1QYW5lbCA9IG5ldyBKUGFuZWwoKTsKKyAgICAgICAgaXRlbVBhbmVsLmFkZChsYWJlbCk7CisgICAgICAgIGl0ZW1QYW5lbC5hZGQoQm94LmNyZWF0ZVJpZ2lkQXJlYShuZXcgRGltZW5zaW9uKDAsNSkpKTsKKyAgICAgICAgaXRlbVBhbmVsLmFkZChsaXN0U2Nyb2xsZXIpOworICAgICAgICBpdGVtUGFuZWwuc2V0Qm9yZGVyKEJvcmRlckZhY3RvcnkuY3JlYXRlRW1wdHlCb3JkZXIoMTAsMTAsMTAsMTApKTsKKyAgICAgICAgCisgICAgICAgIGl0ZW1QYW5lbC5zZXRMYXlvdXQobmV3IEJveExheW91dChpdGVtUGFuZWwsIEJveExheW91dC5ZX0FYSVMpKTsKKyAgICAgICAgCisgICAgICAgIGZDYW5jZWxCdXR0b24gPSBuZXcgSkJ1dHRvbihSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLkNBTkNFTCkpOworICAgICAgICBmT0tCdXR0b24gPSBuZXcgSkJ1dHRvbihSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLk9LKSk7CisgICAgICAgIAorICAgICAgICBKUGFuZWwgYnV0dG9uUGFuZWwgPSBuZXcgSlBhbmVsKCk7CisgICAgICAgIGJ1dHRvblBhbmVsLnNldExheW91dChuZXcgRmxvd0xheW91dChGbG93TGF5b3V0LkNFTlRFUiwgNSwgNSkpOworICAgICAgICBidXR0b25QYW5lbC5hZGQoZkNhbmNlbEJ1dHRvbik7CisgICAgICAgIGJ1dHRvblBhbmVsLmFkZChmT0tCdXR0b24pOworICAgICAgICAKKyAgICAgICAgQ29udGFpbmVyIGNvbnRlbnQgPSBnZXRDb250ZW50UGFuZSgpOworICAgICAgICBjb250ZW50LmFkZChpdGVtUGFuZWwsIEJvcmRlckxheW91dC5DRU5URVIpOworICAgICAgICBjb250ZW50LmFkZChidXR0b25QYW5lbCwgQm9yZGVyTGF5b3V0LlNPVVRIKTsKKworICAgICAgICBwYWNrKCk7CisKKyAgICAgICAgYWRkV2luZG93TGlzdGVuZXIobmV3IFdpbmRvd0FkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBjbG9zZVdpbmRvdyhmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgQWN0aW9uTGlzdGVuZXIgbGlzdGVuZXIgPSBuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgT2JqZWN0IHNvdXJjZSA9IGUuZ2V0U291cmNlKCk7CisgICAgICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBmT0tCdXR0b24pIHsKKyAgICAgICAgICAgICAgICAgICAgY2xvc2VXaW5kb3codHJ1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNvdXJjZSA9PSBmQ2FuY2VsQnV0dG9uKSB7CisgICAgICAgICAgICAgICAgICAgIGNsb3NlV2luZG93KGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBmT0tCdXR0b24uYWRkQWN0aW9uTGlzdGVuZXIobGlzdGVuZXIpOworICAgICAgICBmQ2FuY2VsQnV0dG9uLmFkZEFjdGlvbkxpc3RlbmVyKGxpc3RlbmVyKTsKKyAgICAgICAgCisgICAgICAgIHNlbGVjdFN0eWxlcyh2YWx1ZXMpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgc2V0dXBNYXAoU3RyaW5nW10gbmFtZXMsIE9iamVjdFtdIHZhbHVlcykgeworICAgIAorICAgICAgICBpZiAobmFtZXMubGVuZ3RoICE9IHZhbHVlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIk11c3QgaGF2ZSBzYW1lIG51bWJlciBvZiBuYW1lcyBhbmQgdmFsdWVzLiIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmTmFtZVRvVmFsdWVNYXAgPSBuZXcgSGFzaHRhYmxlKG5hbWVzLmxlbmd0aCk7CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKHZhbHVlc1tpXSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgZk5hbWVUb1ZhbHVlTWFwLnB1dChuYW1lc1tpXSwgdmFsdWVzW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGNsb3NlV2luZG93KGJvb2xlYW4gc2VuZEFjdGlvbikgeworCisgICAgICAgIHNldFZpc2libGUoZmFsc2UpOworICAgICAgICAKKyAgICAgICAgaWYgKHNlbmRBY3Rpb24gJiYgZkl0ZW1zLmdldE1pblNlbGVjdGlvbkluZGV4KCkgIT0gZkl0ZW1zLmdldE1heFNlbGVjdGlvbkluZGV4KCkpIHsKKyAgICAgICAgICAgIHNlbmRBY3Rpb24gPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHNlbmRBY3Rpb24pIHsKKyAgICAgICAgICAgIE9iamVjdCB2YWx1ZSA9IGZOYW1lVG9WYWx1ZU1hcC5nZXQoZkl0ZW1zLmdldFNlbGVjdGVkVmFsdWUoKSk7CisgICAgICAgICAgICBzZW5kQWN0aW9uKHZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBkaXNwb3NlKCk7CisgICAgfQorCisgICAgLyoqCisgICAgKiBIYW5kbGUgdGhlIHVzZXIgaW5wdXQKKyAgICAqIEBwYXJhbSBvYmogdGhlIHZhbHVlIG9iamVjdAorICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHNlbmRBY3Rpb24oT2JqZWN0IHZhbHVlKSB7CisKKyAgICAgICAgU3R5bGVNb2RpZmllciBtb2RpZmllcjsKKyAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1vZGlmaWVyID0gU3R5bGVNb2RpZmllci5jcmVhdGVBZGRNb2RpZmllcihmS2V5LCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBBdHRyaWJ1dGVTZXQgc2V0ID0gbmV3IEF0dHJpYnV0ZVNldChmS2V5KTsKKyAgICAgICAgICAgIG1vZGlmaWVyID0gU3R5bGVNb2RpZmllci5jcmVhdGVSZW1vdmVNb2RpZmllcihzZXQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZDaGFyYWN0ZXIgPT0gTWVudUl0ZW1TZXQuQ0hBUkFDVEVSKSB7CisgICAgICAgICAgICBmVGV4dFBhbmVsLm1vZGlmeUNoYXJhY3RlclN0eWxlT25TZWxlY3Rpb24obW9kaWZpZXIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZlRleHRQYW5lbC5tb2RpZnlQYXJhZ3JhcGhTdHlsZU9uU2VsZWN0aW9uKG1vZGlmaWVyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgc2VsZWN0VmFsdWUoT2JqZWN0IHZhbHVlLCBPYmplY3RbXSB2YWx1ZXMpIHsKKyAgICAKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgIAorICAgICAgICAgICAgaWYgKCh2YWx1ZSAhPSBudWxsICYmIHZhbHVlLmVxdWFscyh2YWx1ZXNbaV0pKSB8fCAodmFsdWUgPT0gbnVsbCAmJiB2YWx1ZXNbaV0gPT0gbnVsbCkpIHsKKyAgICAgICAgICAgICAgICBmSXRlbXMuYWRkU2VsZWN0aW9uSW50ZXJ2YWwoaSwgaSk7CisgICAgICAgICAgICAgICAgZkl0ZW1zLmVuc3VyZUluZGV4SXNWaXNpYmxlKGkpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgc2VsZWN0U3R5bGVzKE9iamVjdFtdIHZhbHVlcykgeworICAgIAorICAgICAgICBPYmplY3QgdmFsdWU7CisgCisgICAgICAgIGlmIChmQ2hhcmFjdGVyKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGZUZXh0UGFuZWwuZ2V0Q2hhcmFjdGVyU3R5bGVPdmVyU2VsZWN0aW9uKGZLZXkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdmFsdWUgPSBmVGV4dFBhbmVsLmdldFBhcmFncmFwaFN0eWxlT3ZlclNlbGVjdGlvbihmS2V5KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHZhbHVlICE9IE1UZXh0UGFuZWwuTVVMVElQTEVfVkFMVUVTKSB7CisgICAgICAgICAgICBzZWxlY3RWYWx1ZSh2YWx1ZSwgdmFsdWVzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZPS0J1dHRvbi5zZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IHNlbExpbWl0ID0gZlRleHRQYW5lbC5nZXRTZWxlY3Rpb25FbmQoKTsKKyAgICAgICAgICAgIE1Db25zdFRleHQgdGV4dCA9IGZUZXh0UGFuZWwuZ2V0VGV4dCgpOworICAgICAgICAgICAgZm9yIChpbnQgcnVuU3RhcnQgPSBmVGV4dFBhbmVsLmdldFNlbGVjdGlvblN0YXJ0KCk7IHJ1blN0YXJ0IDw9IHNlbExpbWl0OworICAgICAgICAgICAgICAgICAgICBydW5TdGFydCA9IGZDaGFyYWN0ZXI/IHRleHQuY2hhcmFjdGVyU3R5bGVMaW1pdChydW5TdGFydCkgOiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LnBhcmFncmFwaExpbWl0KHJ1blN0YXJ0KSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgT2JqZWN0IHJ1blZhbDsKKyAgICAgICAgICAgICAgICBpZiAoZkNoYXJhY3RlcikgeworICAgICAgICAgICAgICAgICAgICBydW5WYWwgPSB0ZXh0LmNoYXJhY3RlclN0eWxlQXQocnVuU3RhcnQpLmdldChmS2V5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJ1blZhbCA9IHRleHQucGFyYWdyYXBoU3R5bGVBdChydW5TdGFydCkuZ2V0KGZLZXkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocnVuVmFsID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcnVuVmFsID0gZlRleHRQYW5lbC5nZXREZWZhdWx0VmFsdWVzKCkuZ2V0KGZLZXkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzZWxlY3RWYWx1ZShydW5WYWwsIHZhbHVlcyk7CisgICAgICAgICAgICAgICAgaWYgKHJ1blN0YXJ0ID09IHRleHQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmSXRlbXMuYWRkTGlzdFNlbGVjdGlvbkxpc3RlbmVyKG5ldyBMaXN0U2VsZWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCB2YWx1ZUNoYW5nZWQoTGlzdFNlbGVjdGlvbkV2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBmSXRlbXMuc2V0U2VsZWN0aW9uTW9kZShMaXN0U2VsZWN0aW9uTW9kZWwuU0lOR0xFX1NFTEVDVElPTik7CisgICAgICAgICAgICAgICAgZk9LQnV0dG9uLnNldEVuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAgZkl0ZW1zLnJlbW92ZUxpc3RTZWxlY3Rpb25MaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmd1aS9KVGFiUnVsZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5ndWkvSlRhYlJ1bGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDhiYzUwNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5ndWkvSlRhYlJ1bGVyLmphdmEKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEpUYWJSdWxlci5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjQ2OjIyICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuc3dpbmd1aTsKKworaW1wb3J0IGphdmEuYXd0LkNvbG9yOworaW1wb3J0IGphdmEuYXd0LkRpbWVuc2lvbjsKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczsKKworaW1wb3J0IGphdmF4LnN3aW5nLkpDb21wb25lbnQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NVGFiUnVsZXI7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5UYWJSdWxlckltcGw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5hd3R1aS5NVGFiUnVsZXJDb21wb25lbnQ7CisKKy8qKgorICogSlRhYlJ1bGVyIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIE1UYWJSdWxlckNvbXBvbmVudCBpbiBhIFN3aW5nIGNvbXBvbmVudC4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIEpUYWJSdWxlciBleHRlbmRzIEpDb21wb25lbnQgaW1wbGVtZW50cyBNVGFiUnVsZXJDb21wb25lbnQgeworICAgIAorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBUYWJSdWxlckltcGwgZkltcGw7CisgICAgCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgbmV3IFRhYlJ1bGVyLgorICAgICAqIEBwYXJhbSBiYXNlbGluZSB0aGUgeS1jb29yZGluYXRlIG9mIHRoZSBydWxlcidzIGJhc2VsaW5lCisgICAgICogQHBhcmFtIG9yaWdpbiB0aGUgeC1jb29yZGluYXRlIGluIHRoaXMgQ29tcG9uZW50IHdoZXJlCisgICAgICogICAgIHRoZSBsZWZ0IG1hcmdpbiBhcHBlYXJzCisgICAgICogQHBhcmFtIHRleHRQYW5lbCB0aGUgTVRleHRQYW5lbCB0byBsaXN0ZW4gdG8uICBUaGlzIFRhYlJ1bGVyCisgICAgICogICAgIHdpbGwgcmVmbGVjdCB0aGUgTVRleHRQYW5lbCdzIHBhcmFncmFwaCBzdHlsZXMsIGFuZCB1cGRhdGUKKyAgICAgKiAgICAgdGhlIHBhcmFncmFwaCBzdHlsZXMgd2hlbiBtYW5pcHVsYXRlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgSlRhYlJ1bGVyKGludCBiYXNlbGluZSwgaW50IG9yaWdpbiwgTVRleHRQYW5lbCB0ZXh0UGFuZWwpIHsKKyAgICAgICAgCisgICAgICAgIGZJbXBsID0gbmV3IFRhYlJ1bGVySW1wbChiYXNlbGluZSwgb3JpZ2luLCB0ZXh0UGFuZWwsIHRoaXMpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBMaXN0ZW4gdG8gdGhlIGdpdmVuIE1UZXh0UGFuZWwgYW5kIHJlZmxlY3QgaXRzIGNoYW5nZXMsCisgICAgICogYW5kIHVwZGF0ZSBpdHMgcGFyYWdyYXBoIHN0eWxlcyB3aGVuIFRhYlJ1bGVyIGlzCisgICAgICogbWFuaXB1bGF0ZWQuCisgICAgICogQHBhcmFtIHRleHRQYW5lbCB0aGUgTVRleHRQYW5lbCB0byBsaXN0ZW4gdG8KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBsaXN0ZW5Ub1RleHRQYW5lbChNVGV4dFBhbmVsIHRleHRQYW5lbCkgeworCisgICAgICAgIGZJbXBsLmxpc3RlblRvVGV4dFBhbmVsKHRleHRQYW5lbCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGlzIFRhYlJ1bGVyLgorICAgICAqIEByZXR1cm4gdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhpcyBUYWJSdWxlcgorICAgICAqLworICAgIHB1YmxpYyBDb2xvciBnZXRCYWNrQ29sb3IoKSB7CisKKyAgICAgICAgcmV0dXJuIGZJbXBsLmdldEJhY2tDb2xvcigpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhpcyBUYWJSdWxlci4KKyAgICAgKiBAcGFyYW0gYmFja0NvbG9yIHRoZSBuZXcgYmFja2dyb3VuZCBjb2xvciBvZiB0aGlzIFRhYlJ1bGVyCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0QmFja0NvbG9yKENvbG9yIGJhY2tDb2xvcikgeworCisgICAgICAgIGZJbXBsLnNldEJhY2tDb2xvcihiYWNrQ29sb3IpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIE1UYWJSdWxlciByZXByZXNlbnRlZCBieSB0aGlzIFRhYlJ1bGVyLgorICAgICAqIEByZXR1cm4gdGhlIE1UYWJSdWxlciByZXByZXNlbnRlZCBieSB0aGlzIFRhYlJ1bGVyCisgICAgICovCisgICAgcHVibGljIE1UYWJSdWxlciBnZXRSdWxlcigpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmSW1wbC5nZXRSdWxlcigpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbGVhZGluZyBtYXJnaW4gb2YgdGhpcyBUYWJSdWxlci4KKyAgICAgKiBAcmV0dXJuIHRoZSBsZWFkaW5nIG1hcmdpbiBvZiB0aGlzIFRhYlJ1bGVyCisgICAgICovCisgICAgcHVibGljIGludCBnZXRMZWFkaW5nTWFyZ2luKCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZJbXBsLmdldExlYWRpbmdNYXJnaW4oKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGZpcnN0IGxpbmUgaW5kZW50IG9mIHRoaXMgVGFiUnVsZXIuCisgICAgICogQHJldHVybiB0aGUgZmlyc3QgbGluZSBpbmRlbnQgb2YgdGhpcyBUYWJSdWxlcgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0Rmlyc3RMaW5lSW5kZW50KCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZJbXBsLmdldEZpcnN0TGluZUluZGVudCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgdHJhaWxpbmcgbWFyZ2luIG9mIHRoaXMgVGFiUnVsZXIuCisgICAgICogQHJldHVybiB0aGUgdHJhaWxpbmcgbWFyZ2luIG9mIHRoaXMgVGFiUnVsZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgaW50IGdldFRyYWlsaW5nTWFyZ2luKCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZJbXBsLmdldFRyYWlsaW5nTWFyZ2luKCk7CisgICAgfQorICAgIAorICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlIENvbXBvbmVudCBtZXRob2RzIHdoaWNoIG5lZWQgdG8gYmUgZGVsZWdhdGVkIHRvCisgICAgLy8gdGhlIGltcGxlbWVudGF0aW9uOgorICAgIAorICAgIHB1YmxpYyB2b2lkIHBhaW50KEdyYXBoaWNzIGcpIHsKKyAgICAgICAgCisgICAgICAgIGZJbXBsLnBhaW50KGcpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgRGltZW5zaW9uIGdldFByZWZlcnJlZFNpemUoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkltcGwuZ2V0UHJlZmVycmVkU2l6ZSgpOworICAgIH0KKworICAgIHB1YmxpYyBEaW1lbnNpb24gZ2V0TWluaW11bVNpemUoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkltcGwuZ2V0TWluaW11bVNpemUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ3VpL0pUZXh0RnJhbWUuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5ndWkvSlRleHRGcmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjdkZDQyMDcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ3VpL0pUZXh0RnJhbWUuamF2YQpAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogSlRleHRGcmFtZS5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjQ2OjIyICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQuc3dpbmd1aTsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLk1UZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuSlRleHRQYW5lbDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLnJlc291cmNlcy5GcmFtZVJlc291cmNlczsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5SZXNvdXJjZVV0aWxzOworCitpbXBvcnQgamF2YS5hd3QuQm9yZGVyTGF5b3V0OworaW1wb3J0IGphdmEuYXd0LlRvb2xraXQ7CitpbXBvcnQgamF2YS5hd3QuZGF0YXRyYW5zZmVyLkNsaXBib2FyZDsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0FkYXB0ZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93RXZlbnQ7CisKK2ltcG9ydCBqYXZheC5zd2luZy5KRnJhbWU7CitpbXBvcnQgamF2YXguc3dpbmcuSk1lbnVCYXI7CitpbXBvcnQgamF2YXguc3dpbmcuVUlNYW5hZ2VyOworCitpbXBvcnQgamF2YS5hd3QuQ29udGFpbmVyOworCisvKioKKyAqIEpUZXh0RnJhbWUgaXMgYSBKRnJhbWUgY29udGFpbmluZyBhbiBlZGl0YWJsZSBKVGV4dFBhbmVsLCBhIHNldCBvZiBzdGFuZGFyZAorICogbWVudXMsIGFuZCBhIEpUYWJSdWxlci4gIFRoaXMgY2xhc3MgY2FuIGJlIHVzZWQgYXMtaXMsIGJ1dCBpcworICogcHJpbWFyaWx5IGludGVuZGVkIHRvIGJlIGEgc2ltcGxlIGV4YW1wbGUgb2YgaG93IHRvIHVzZSB0aGUgb3RoZXIgY2xhc3NlcworICogaW4gdGhpcyBwYWNrYWdlLgorICogQHNlZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5KVGV4dFBhbmVsCisgKiBAc2VlIFN3aW5nTWVudUJ1aWxkZXIKKyAqIEBzZWUgSlRhYlJ1bGVyCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBKVGV4dEZyYW1lIGV4dGVuZHMgSkZyYW1lIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBKVGV4dFBhbmVsIGZUZXh0UGFuZWw7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgSlRleHRGcmFtZSB3aXRoIG5vIHRleHQsIG5vIHRpdGxlLCAKKyAgICAgKiBhbmQgYSBwcml2YXRlIGNsaXBib2FyZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgSlRleHRGcmFtZSgpIHsKKyAgICAgICAgCisgICAgICAgIHN1cGVyKCk7CisgICAgICAgIGluaXQobnVsbCwgVG9vbGtpdC5nZXREZWZhdWx0VG9vbGtpdCgpLmdldFN5c3RlbUNsaXBib2FyZCgpKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgbmV3IEpUZXh0RnJhbWUgd2l0aCBubyB0ZXh0IGFuZCB0aGUgZ2l2ZW4gdGl0bGUuCisgICAgICogVGhlIEpUZXh0UGFuZWwgd2lsbCB1c2UgYSBwcml2YXRlIGNsaXBib2FyZC4KKyAgICAgKiBAcGFyYW0gdGl0bGUgdGhlIHRpdGxlIG9mIHRoaXMgRnJhbWUKKyAgICAgKi8KKyAgICBwdWJsaWMgSlRleHRGcmFtZShTdHJpbmcgdGl0bGUpIHsKKyAgICAgICAgCisgICAgICAgIHN1cGVyKHRpdGxlKTsKKyAgICAgICAgaW5pdChudWxsLCBUb29sa2l0LmdldERlZmF1bHRUb29sa2l0KCkuZ2V0U3lzdGVtQ2xpcGJvYXJkKCkpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgSlRleHRGcmFtZSB3aXRoIHRoZSBnaXZlbiB0ZXh0IGFuZCB0aXRsZSwgd2hvc2UKKyAgICAgKiBUZXh0UGFuZWwgd2lsbCB1c2UgdGhlIGdpdmVuIGNsaXBib2FyZC4KKyAgICAgKiBAcGFyYW0gdGV4dCB0aGUgaW5pdGlhbCB0ZXh0IGluIHRoZSBUZXh0UGFuZWwuICBJZiBudWxsIHRoZQorICAgICAqICAgICAgVGV4dFBhbmVsIHdpbGwgaW5pdGlhbGx5IGJlIGVtcHR5CisgICAgICogQHBhcmFtIHRpdGxlIHRoZSB0aXRsZSBvZiB0aGlzIEZyYW1lCisgICAgICogQHBhcmFtIGNsaXBib2FyZCB0aGUgQ2xpcGJvYXJkIHdoaWNoIHRoZSBUZXh0UGFuZWwgd2lsbCB1c2UuCisgICAgICogICAgICBJZiBudWxsIHRoZSBUZXh0UGFuZWwgd2lsbCB1c2UgYSBwcml2YXRlIENsaXBib2FyZAorICAgICAqLworICAgIHB1YmxpYyBKVGV4dEZyYW1lKE1Db25zdFRleHQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0aXRsZSwKKyAgICAgICAgICAgICAgICAgICAgIENsaXBib2FyZCBjbGlwYm9hcmQpIHsKKworICAgICAgICBzdXBlcih0aXRsZSk7CisgICAgICAgIGluaXQodGV4dCwgY2xpcGJvYXJkKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgaW5pdChNQ29uc3RUZXh0IHRleHQsIENsaXBib2FyZCBjbGlwYm9hcmQpIHsKKyAgICAgICAgCisgICAgICAgIGZUZXh0UGFuZWwgPSBuZXcgSlRleHRQYW5lbCh0ZXh0LCBjbGlwYm9hcmQpOworCisgICAgICAgIEpUYWJSdWxlciB0YWJSdWxlciA9IG5ldyBKVGFiUnVsZXIoMTQsIDEwLCBmVGV4dFBhbmVsKTsKKworICAgICAgICBjcmVhdGVNZW51cygpOworCisgICAgICAgIENvbnRhaW5lciBjb250ZW50UGFuZSA9IGdldENvbnRlbnRQYW5lKCk7CisgICAgICAgIGNvbnRlbnRQYW5lLnNldExheW91dChuZXcgQm9yZGVyTGF5b3V0KCkpOworICAgICAgICBjb250ZW50UGFuZS5hZGQoZlRleHRQYW5lbCwgIkNlbnRlciIpOworICAgICAgICBjb250ZW50UGFuZS5hZGQodGFiUnVsZXIsICJOb3J0aCIpOworICAgICAgICBwYWNrKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGNyZWF0ZU1lbnVzKCkgeworCisgICAgICAgIEpNZW51QmFyIG1lbnVCYXIgPSBuZXcgSk1lbnVCYXIoKTsKKworICAgICAgICBTd2luZ01lbnVCdWlsZGVyLmdldEluc3RhbmNlKCkuY3JlYXRlTWVudXMobWVudUJhciwgZlRleHRQYW5lbCwgdGhpcyk7CisgICAgICAgIAorICAgICAgICBzZXRKTWVudUJhcihtZW51QmFyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIE1UZXh0UGFuZWwgaW4gdGhpcyBmcmFtZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgTVRleHRQYW5lbCBnZXRUZXh0UGFuZWwoKSB7CisKKyAgICAgICAgcmV0dXJuIGZUZXh0UGFuZWw7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgCisgICAgICAgIFN0cmluZyBsYWYgPSBVSU1hbmFnZXIuZ2V0U3lzdGVtTG9va0FuZEZlZWxDbGFzc05hbWUoKTsKKyAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09IDEpIHsKKyAgICAgICAgICAgIGlmIChhcmdzWzBdLmVxdWFscygiY3AiKSkgeworICAgICAgICAgICAgICAgIGxhZiA9IFVJTWFuYWdlci5nZXRDcm9zc1BsYXRmb3JtTG9va0FuZEZlZWxDbGFzc05hbWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgVUlNYW5hZ2VyLnNldExvb2tBbmRGZWVsKGxhZik7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goVGhyb3dhYmxlIHRoKSB7CisgICAgICAgICAgICB0aC5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgfQorICAgICAgICBKVGV4dEZyYW1lIGZyYW1lID0gbmV3IEpUZXh0RnJhbWUoKTsKKyAgICAgICAgZnJhbWUuYWRkV2luZG93TGlzdGVuZXIobmV3IFdpbmRvd0FkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uZXhpdCgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgICAgIGZyYW1lLnNldFNpemUoNTUwLCA3MDApOworICAgICAgICBmcmFtZS5zaG93KCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmd1aS9Td2luZ01lbnVCdWlsZGVyLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ3VpL1N3aW5nTWVudUJ1aWxkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hMjM2ZWQxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmd1aS9Td2luZ01lbnVCdWlsZGVyLmphdmEKQEAgLTAsMCArMSwyMzYgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFN3aW5nTWVudUJ1aWxkZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0NjoyMiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnN3aW5ndWk7CisKK2ltcG9ydCBqYXZhLmF3dC5GcmFtZTsKK2ltcG9ydCBqYXZhLmF3dC5XaW5kb3c7CisKK2ltcG9ydCBqYXZheC5zd2luZy5KTWVudTsKK2ltcG9ydCBqYXZheC5zd2luZy5KTWVudUJhcjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLk1UZXh0UGFuZWw7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5yZXNvdXJjZXMuRnJhbWVSZXNvdXJjZXM7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC4qOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLkRpYWxvZ0l0ZW0uRGlhbG9nRmFjdG9yeTsKKworLyoqCisgKiBTd2luZ01lbnVCdWlsZGVyIHByb3ZpZGVzIGEgbWV0aG9kIGZvciBjcmVhdGluZyBhIHNldCBvZiBTd2luZyBtZW51cyBmb3IgaW50ZXJhY3RpbmcKKyAqIHdpdGggYW4gTVRleHRQYW5lbC4gIEZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGlzIGNsYXNzIG1heSBwcm92aWRlIGdyZWF0ZXIgY29udHJvbAorICogb3ZlciB0aGUgbWVudSBjb250ZW50cy4KKyAqIEBzZWUgTVRleHRQYW5lbAorICovCitwdWJsaWMgZmluYWwgY2xhc3MgU3dpbmdNZW51QnVpbGRlciBleHRlbmRzIE1lbnVCdWlsZGVyIHsKKyAgICAKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN3aW5nTWVudUJ1aWxkZXIgSU5TVEFOQ0UgPSBuZXcgU3dpbmdNZW51QnVpbGRlcigpOworICAgIAorICAgIC8qKgorICAgICAqIElkIGZvciBhbiBFZGl0IG1lbnUuICBUaGUgRWRpdCBtZW51IGhhcyB0aGUgZm9sbG93aW5nIGl0ZW1zOgorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+PGI+VW5kbzwvYj4gLSBpbnZva2UgdW5kbygpIG9uIHRoZSBNVGV4dFBhbmVsPC9saT4KKyAgICAgKiA8bGk+PGI+UmVkbzwvYj4gLSBpbnZva2UgcmVkbygpIG9uIHRoZSBNVGV4dFBhbmVsPC9saT4KKyAgICAgKiA8bGk+PGI+Q3V0PC9iPiAtIGludm9rZSBjdXQoKSBvbiB0aGUgTVRleHRQYW5lbDwvbGk+CisgICAgICogPGxpPjxiPkNvcHk8L2I+IC0gaW52b2tlIGNvcHkoKSBvbiB0aGUgTVRleHRQYW5lbDwvbGk+CisgICAgICogPGxpPjxiPlBhc3RlPC9iPiAtIGludm9rZSBwYXN0ZSgpIG9uIHRoZSBNVGV4dFBhbmVsPC9saT4KKyAgICAgKiA8bGk+PGI+Q2xlYXI8L2I+IC0gaW52b2tlIGNsZWFyKCkgb24gdGhlIE1UZXh0UGFuZWw8L2xpPgorICAgICAqIDxsaT48Yj5TZWxlY3QgQWxsPC9iPiAtIGludm9rZSBzZWxlY3RBbGwoKSBvbiB0aGUgTVRleHRQYW5lbDwvbGk+CisgICAgICogPC91bD4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFRElUID0gTWVudUJ1aWxkZXIuRURJVDsKKyAgICAvKioKKyAgICAgKiBJZCBmb3IgdGhlIHBvaW50IHNpemVzIG1lbnUuICBUaGUgbWVudSBoYXMgaXRlbXMgdGhhdCBzZXQgdGhlIHNpemUgb2YgYSBjaGFyYWN0ZXIKKyAgICAgKiBpbiBhIHR5cGVmYWNlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNJWkUgPSBNZW51QnVpbGRlci5TSVpFOworICAgIC8qKgorICAgICAqIElkIGZvciBhIFN0eWxlIG1lbnUuICBUaGUgU3R5bGUgbWVudSBoYXMgdGhlIGZvbGxvd2luZyBpdGVtczoKKyAgICAgKiA8dWw+CisgICAgICogPGxpPjxiPlBsYWluPC9iPiAtIHJlbW92ZSA8Y29kZT5XRUlHSFQ8L2NvZGU+LAorICAgICAqICAgICAgICAgICAgICAgICAgICA8Y29kZT5QT1NUVVJFPC9jb2RlPiwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgPGNvZGU+VU5ERVJMSU5FPC9jb2RlPiBhbmQKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgPGNvZGU+U1RSSUtFVEhST1VHSDwvY29kZT4gYXR0cmlidXRlcyBmcm9tIHRoZQorICAgICAqIGN1cnJlbnQgc2VsZWN0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+Qm9sZDwvYj4gLSBhZGQgPGNvZGU+e1dFSUdIVCxXRUlHSFRfQk9MRH08L2NvZGU+IHRvCisgICAgICogdGhlIGN1cnJlbnQgc2VsZWN0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+SXRhbGljPC9iPiAtIGFkZCA8Y29kZT57UE9TVFVSRSxQT1NUVVJFX0lUQUxJQ308L2NvZGU+IHRvCisgICAgICogdGhlIGN1cnJlbnQgc2VsZWN0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+VW5kZXJsaW5lPC9iPiAtIGFkZCA8Y29kZT57VU5ERVJMSU5FLFVOREVSTElORV9PTn08L2NvZGU+IHRvCisgICAgICogdGhlIGN1cnJlbnQgc2VsZWN0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+U3RyaWtldGhyb3VnaDwvYj4gLSBhZGQgPGNvZGU+e1NUUklLRVRIUk9VR0gsU1RSSUtFVEhST1VHSF9PTn08L2NvZGU+CisgICAgICogdG8gdGhlIGN1cnJlbnQgc2VsZWN0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+Rm9udC4uLjwvYj4gLSBkaXNwbGF5IGEgZGlhbG9nIGFsbG93aW5nIHRoZSB1c2VyIHRvCisgICAgICogc2VsZWN0IGEgdHlwZWZhY2UgKGZvbnQgZmFtaWx5KSBmb3IgdGhlIGN1cnJlbnQgc2VsZWN0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+Rm9yZWNvbG9yLi4uPC9iPiAtIGRpc3BsYXkgYSBkaWFsb2cgYWxsb3dpbmcgdGhlIHVzZXIgdG8KKyAgICAgKiBzZWxlY3QgYSBmb3JlZ3JvdW5kIGNvbG9yIGZvciB0aGUgY3VycmVudCBzZWxlY3Rpb248L2xpPgorICAgICAqIDxsaT48Yj5CYWNrY29sb3IuLi48L2I+IC0gZGlzcGxheSBhIGRpYWxvZyBhbGxvd2luZyB0aGUgdXNlciB0bworICAgICAqIHNlbGVjdCBhIGJhY2tncm91bmQgY29sb3IgZm9yIHRoZSBjdXJyZW50IHNlbGVjdGlvbjwvbGk+CisgICAgICogPC91bD4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVFlMRSA9IE1lbnVCdWlsZGVyLlNUWUxFOworICAgIC8qKgorICAgICAqIElkIGZvciBhIHBhcmFncmFwaCBhbGlnbm1lbnQgbWVudS4gIFRoZSBtZW51IGhhcyB0aGUgZm9sbG93aW5nIGl0ZW1zOgorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+PGI+TGVhZGluZzwvYj4gLSBnaXZlIHNlbGVjdGVkIHBhcmFncmFwaChzKSBMRUFESU5HIGZsdXNoPC9saT4KKyAgICAgKiA8bGk+PGI+Q2VudGVyPC9iPiAtIGdpdmUgc2VsZWN0ZWQgcGFyYWdyYXBoKHMpIENFTlRFUiBmbHVzaDwvbGk+CisgICAgICogPGxpPjxiPlRyYWlsaW5nPC9iPiAtIGdpdmUgc2VsZWN0ZWQgcGFyYWdyYXBoKHMpIFRSQUlMSU5HIGZsdXNoPC9saT4KKyAgICAgKiA8bGk+PGI+SnVzdGlmaWVkPC9iPiAtIGdpdmUgc2VsZWN0ZWQgcGFyYWdyYXBoKHMpIGZ1bGwganVzdGlmaWNhdGlvbjwvbGk+CisgICAgICogPC91bD4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTFVTSCA9IE1lbnVCdWlsZGVyLkZMVVNIOworICAgIC8qKgorICAgICAqIElkIGZvciBhIG1lbnUgdGhhdCBzZXRzIHRoZSBLZXlSZW1hcAorICAgICAqIG9uIGFuIE1UZXh0UGFuZWwuICBUaGUgbWVudSBoYXMgdGhlIGZvbGxvd2luZyBpdGVtczoKKyAgICAgKiA8dWw+CisgICAgICogPGxpPjxiPkRlZmF1bHQ8L2I+IC0gc2V0IEtleVJlbWFwIHRvIGlkZW50aXR5IHJlbWFwPC9saT4KKyAgICAgKiA8bGk+PGI+QXJhYmljPC9iPiAtIHNldCBLZXlSZW1hcCB0byBBcmFiaWMgdHJhbnNsaXRlcmF0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+SGVicmV3PC9iPiAtIHNldCBLZXlSZW1hcCB0byBIZWJyZXcgdHJhbnNsaXRlcmF0aW9uPC9saT4KKyAgICAgKiA8bGk+PGI+SXNyYWVsIE5pa3VkPC9iPiAtIHNldCBLZXlSZW1hcCB0byBJc3JhZWwgTmlrdWQ8L2xpPgorICAgICAqIDxsaT48Yj5UaGFpIEtldG1hbmVlPC9iPiAtIHNldCBLZXlSZW1hcCB0byBUaGFpIEtldG1hbmVlPC9saT4KKyAgICAgKiA8L3VsPgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtFWU1BUCA9IE1lbnVCdWlsZGVyLktFWU1BUDsKKyAgICAvKioKKyAgICAgKiBJZCBmb3IgYSBtZW51IHRoYXQgc2V0cworICAgICAqIHRoZSBwcmltYXJ5IHJ1biBkaXJlY3Rpb24gZm9yIGEgcGFyYWdyYXBoLiAgUnVuIGRpcmVjdGlvbiBjYW4gYmUgbGVmdC10by1yaWdodCwKKyAgICAgKiByaWdodC10by1sZWZ0LCBvciBjYW4gdXNlIHRoZSBkZWZhdWx0IHJ1biBkaXJlY3Rpb24gZnJvbSB0aGUgVW5pY29kZSBiaWRpIGFsZ29yaXRobS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCSURJID0gTWVudUJ1aWxkZXIuQklESTsKKyAgICAvKioKKyAgICAgKiBJZCBmb3IgYSBtZW51IHdpdGggYW4gPGI+QWJvdXQ8L2I+IGl0ZW0uICBXaGVuIHNlbGVjdGVkLCAKKyAgICAgKiB0aGUgaXRlbSBkaXNwbGF5cyBhIEZyYW1lIGNvbnRhaW5pbmcgc29tZQorICAgICAqIHNlbGYtcHJvbW90aW9uYWwgdGV4dC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQk9VVCA9IE1lbnVCdWlsZGVyLkFCT1VUOworICAgIC8qKgorICAgICAqIFJldHVybiBhbiBpbnN0YW5jZSBvZiBTd2luZ01lbnVCdWlsZGVyLgorICAgICAqLworICAgICAKKyAgICBwdWJsaWMgc3RhdGljIFN3aW5nTWVudUJ1aWxkZXIgZ2V0SW5zdGFuY2UoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gSU5TVEFOQ0U7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgSk1lbnVCYXIgZk1lbnVCYXI7CisgICAgCisgICAgcHJpdmF0ZSBTd2luZ01lbnVCdWlsZGVyKCkgeworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBBZGQgYSBzdGFuZGFyZCBzZXQgb2YgbWVudXMgdG8gdGhlIGdpdmVuIG1lbnUgYmFyLiAgVGhlIG1lbnVzIAorICAgICAqIHdpbGwgaW50ZXJhY3Qgd2l0aCB0aGUgZ2l2ZW4gTVRleHRQYW5lbC4KKyAgICAgKiBAcGFyYW0gbWVudUJhciB0aGUgTWVudUJhciB0byB3aGljaCBtZW51cyBhcmUgYWRkZWQKKyAgICAgKiBAcGFyYW0gdGV4dFBhbmVsIHRoZSBNVGV4dFBhbmVsIHdpdGggd2hpY2ggdGhlIG1lbnVzIGludGVyYWN0CisgICAgICogQHBhcmFtIGZyYW1lIGEgRnJhbWUgdG8gdXNlIGFzIHRoZSBwYXJlbnQgb2YgYW55IGRpYWxvZ3MgY3JlYXRlZCBieSBhIAorICAgICAqICAgYSBtZW51IGl0ZW0uICBJZiBudWxsLCBtZW51IGl0ZW1zIHdoaWNoIGNyZWF0ZSBkaWFsb2dzIHdpbGwgYmUgb21pdHRlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjcmVhdGVNZW51cyhKTWVudUJhciBtZW51QmFyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNVGV4dFBhbmVsIHRleHRQYW5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZSBmcmFtZSkgeworCisgICAgICAgIGNyZWF0ZU1lbnVzKG1lbnVCYXIsIHRleHRQYW5lbCwgZnJhbWUsIGRlZmF1bHRNZW51cyk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEFkZCBhIHNldCBvZiBtZW51cyB0byB0aGUgZ2l2ZW4gbWVudSBiYXIuICBUaGUgbWVudXMgCisgICAgICogd2lsbCBpbnRlcmFjdCB3aXRoIHRoZSBnaXZlbiBNVGV4dFBhbmVsLgorICAgICAqIEBwYXJhbSBtZW51QmFyIHRoZSBNZW51QmFyIHRvIHdoaWNoIG1lbnVzIGFyZSBhZGRlZAorICAgICAqIEBwYXJhbSB0ZXh0UGFuZWwgdGhlIE1UZXh0UGFuZWwgd2l0aCB3aGljaCB0aGUgbWVudXMgaW50ZXJhY3QKKyAgICAgKiBAcGFyYW0gZnJhbWUgYSBGcmFtZSB0byB1c2UgYXMgdGhlIHBhcmVudCBvZiBhbnkgZGlhbG9ncyBjcmVhdGVkIGJ5IGEgCisgICAgICogICBhIG1lbnUgaXRlbS4gIElmIG51bGwsIG1lbnUgaXRlbXMgd2hpY2ggY3JlYXRlIGRpYWxvZ3Mgd2lsbCBiZSBvbWl0dGVkLgorICAgICAqIEBwYXJhbSBtZW51cyBhbiBhcnJheSBvZiBpbnRlZ2VyIG1lbnUgaWQncy4gIEVhY2ggZWxlbWVudCBvZiB0aGUKKyAgICAgKiAgIGFycmF5IG11c3QgYmUgb25lIG9mIHRoaXMgY2xhc3MncyBtZW51IGlkIGNvbnN0YW50cy4gIElmIG51bGwsCisgICAgICogICB0aGUgZGVmYXVsdCBtZW51cyBhcmUgY3JlYXRlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjcmVhdGVNZW51cyhKTWVudUJhciBtZW51QmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1UZXh0UGFuZWwgdGV4dFBhbmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZyYW1lIGZyYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludFtdIG1lbnVzKSB7CisgICAgICAgIAorICAgICAgICBpZiAobWVudXMgPT0gbnVsbCkgeworICAgICAgICAgICAgbWVudXMgPSBkZWZhdWx0TWVudXM7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN5bmNocm9uaXplZCAoTUl0ZW0uTE9DSykgeworICAgICAgICAgICAgCisgICAgICAgICAgICBmTWVudUJhciA9IG1lbnVCYXI7CisgICAgICAgICAgICBkb0NyZWF0ZU1lbnVzKHRleHRQYW5lbCwgZnJhbWUsIG1lbnVzKTsKKyAgICAgICAgICAgIGZNZW51QmFyID0gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVBZGRNZW51KFN0cmluZyBrZXkpIHsKKyAgICAgICAgCisgICAgICAgIEpNZW51IG1lbnUgPSBuZXcgSk1lbnUoUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhrZXkpKTsKKyAgICAgICAgZk1lbnVCYXIuYWRkKG1lbnUpOworICAgICAgICBNSXRlbS5zZXRJdGVtRmFjdG9yeShuZXcgU3dpbmdNZW51RmFjdG9yeShtZW51KSk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIERpYWxvZ0ZhY3RvcnkgY3JlYXRlT2JqZWN0RGlhbG9nRmFjdG9yeShmaW5hbCBTdHJpbmcgZGlhbG9nVGl0bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgZGlhbG9nTWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIE9iamVjdCBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBib29sZWFuIGNoYXJhY3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZ1tdIG5hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgT2JqZWN0W10gdmFsdWVzKSB7CisgICAgICAgIAorICAgICAgICBmaW5hbCBGcmFtZSBkaWFsb2dQYXJlbnQgPSBmRGlhbG9nUGFyZW50OworCisgICAgICAgIHJldHVybiBuZXcgRGlhbG9nRmFjdG9yeSgpIHsgICAgCisgICAgICAgICAgICBwdWJsaWMgV2luZG93IGNyZWF0ZURpYWxvZyhNVGV4dFBhbmVsIHRleHRQYW5lbCkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSk9iamVjdERpYWxvZyhkaWFsb2dQYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nVGl0bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nTWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0UGFuZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJhY3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgRGlhbG9nRmFjdG9yeSBjcmVhdGVOdW1iZXJEaWFsb2dGYWN0b3J5KGZpbmFsIFN0cmluZyBkaWFsb2dUaXRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBkaWFsb2dNZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgT2JqZWN0IGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gY2hhcmFjdGVyKSB7CisgICAgICAgIAorICAgICAgICBmaW5hbCBGcmFtZSBkaWFsb2dQYXJlbnQgPSBmRGlhbG9nUGFyZW50OworICAgICAgICBmaW5hbCBNVGV4dFBhbmVsIHRleHRQYW5lbCA9IGZUZXh0UGFuZWw7CisgICAgICAgICAgICAKKyAgICAgICAgcmV0dXJuIG5ldyBEaWFsb2dGYWN0b3J5KCkgeworICAgICAgICAgICAgcHVibGljIFdpbmRvdyBjcmVhdGVEaWFsb2coTVRleHRQYW5lbCBmVGV4dFBhbmVsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBKTnVtYmVyRGlhbG9nKGRpYWxvZ1BhcmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nVGl0bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpYWxvZ01lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZUZXh0UGFuZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcmFjdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9ICAgIAorICAgIAorICAgIHByb3RlY3RlZCBEaWFsb2dGYWN0b3J5IGNyZWF0ZUFib3V0RGlhbG9nRmFjdG9yeSgpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBuZXcgRGlhbG9nRmFjdG9yeSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyBXaW5kb3cgY3JlYXRlRGlhbG9nKE1UZXh0UGFuZWwgdGV4dFBhbmVsKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHRpdGxlID0gUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5BQk9VVF9USVRMRSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBKTWVzc2FnZURpYWxvZyh0aXRsZSwgQWJvdXRUZXh0LmdldEFib3V0VGV4dCgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmd1aS9Td2luZ01lbnVGYWN0b3J5LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ3VpL1N3aW5nTWVudUZhY3RvcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wYzE5YWU0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvc3dpbmd1aS9Td2luZ01lbnVGYWN0b3J5LmphdmEKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFN3aW5nTWVudUZhY3RvcnkuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0NjoyMiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnN3aW5ndWk7CisKK2ltcG9ydCBqYXZhLmF3dC5FdmVudDsKKworaW1wb3J0IGphdmF4LnN3aW5nLkpDaGVja0JveE1lbnVJdGVtOworaW1wb3J0IGphdmF4LnN3aW5nLkpNZW51OworaW1wb3J0IGphdmF4LnN3aW5nLkpNZW51SXRlbTsKK2ltcG9ydCBqYXZheC5zd2luZy5KU2VwYXJhdG9yOworaW1wb3J0IGphdmF4LnN3aW5nLktleVN0cm9rZTsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkxpc3RlbmVyOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwucmVzb3VyY2VzLk1lbnVEYXRhOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLkV2ZW50TGlzdGVuZXI7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwuTUl0ZW07CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwuTUl0ZW0uSXRlbUZhY3Rvcnk7CisKK2ZpbmFsIGNsYXNzIFN3aW5nTWVudUZhY3RvcnkgaW1wbGVtZW50cyBJdGVtRmFjdG9yeSB7CisgICAgICAgIAorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBTd2luZ01JdGVtIGV4dGVuZHMgTUl0ZW0geworICAgICAgICAKKyAgICAgICAgcHJpdmF0ZSBKTWVudUl0ZW0gZkl0ZW07CisgICAgICAgIAorICAgICAgICBTd2luZ01JdGVtKEpNZW51SXRlbSBpdGVtKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZJdGVtID0gaXRlbTsKKyAgICAgICAgICAgIGl0ZW0uYWRkQWN0aW9uTGlzdGVuZXIobmV3IEFjdGlvbkxpc3RlbmVyKCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdGVkKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVNlbGVjdGVkKCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBzdXBlci5oYW5kbGVTZWxlY3RlZCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBmSXRlbS5zZXRFbmFibGVkKGVuYWJsZWQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgdm9pZCBzZXRTdGF0ZShib29sZWFuIGNoZWNrZWQpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBKQ2hlY2tCb3hNZW51SXRlbSBpdGVtID0gKEpDaGVja0JveE1lbnVJdGVtKSBmSXRlbTsKKyAgICAgICAgICAgICAgICBpdGVtLnNldFN0YXRlKGNoZWNrZWQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2goQ2xhc3NDYXN0RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNhbm5vdCBwZXJmb3JtIHNldENoZWNrZWQgb24gbm9uLWNoZWNrYm94IGl0ZW0iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIEpNZW51IGZNZW51OworICAgICAgICAKKyAgICBTd2luZ01lbnVGYWN0b3J5KEpNZW51IG1lbnUpIHsKKyAgICAgICAgICAgIAorICAgICAgICBmTWVudSA9IG1lbnU7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgTUl0ZW0gaGFuZGxlQ3JlYXRlKEpNZW51SXRlbSBpdGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbnVEYXRhIG1lbnVEYXRhKSB7CisKKyAgICAgICAgaWYgKG1lbnVEYXRhLmhhc1Nob3J0Y3V0KCkpIHsKKyAgICAgICAgICAgIEtleVN0cm9rZSBrcyA9IEtleVN0cm9rZS5nZXRLZXlTdHJva2UobWVudURhdGEuZ2V0U2hvcnRjdXRLZXlDb2RlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEV2ZW50LkNUUkxfTUFTSyk7CisgICAgICAgICAgICBpdGVtLnNldEFjY2VsZXJhdG9yKGtzKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZk1lbnUuYWRkKGl0ZW0pOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIG5ldyBTd2luZ01JdGVtKGl0ZW0pOworICAgIH0KKyAgICAgICAgCisgICAgcHVibGljIE1JdGVtIGNyZWF0ZUl0ZW0oTWVudURhdGEgbWVudURhdGEpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBoYW5kbGVDcmVhdGUobmV3IEpNZW51SXRlbShtZW51RGF0YS5nZXROYW1lKCkpLCBtZW51RGF0YSk7CisgICAgfSAgICAgICAgCisKKyAgICBwdWJsaWMgTUl0ZW0gY3JlYXRlQ2hlY2tib3hJdGVtKE1lbnVEYXRhIG1lbnVEYXRhKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gaGFuZGxlQ3JlYXRlKG5ldyBKQ2hlY2tCb3hNZW51SXRlbShtZW51RGF0YS5nZXROYW1lKCkpLCBtZW51RGF0YSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIGNyZWF0ZVNlcGFyYXRvcigpIHsKKyAgICAgICAgCisgICAgICAgIGZNZW51LmFkZChuZXcgSlNlcGFyYXRvcigpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ3VpL3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3N3aW5ndWkvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ1MGJhZTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC9zd2luZ3VpL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDUgQEAKKzxodG1sPgorPGJvZHkgYmdjb2xvcj0id2hpdGUiPgorUHJvdmlkZXMgY2xhc3NlcyBmb3IgYnVpbGRpbmcgYSBTd2luZy1iYXNlZCB1c2VyIGludGVyZmFjZSBmb3IgYSBUZXh0UGFuZWwuCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXN0cy9EZWNsYXJhdGlvbi5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGVzdHMvRGVjbGFyYXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lNWZmNmU0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGVzdHMvRGVjbGFyYXRpb24uamF2YQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBEZWNsYXJhdGlvbi5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjQ2OjU3ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGVzdHM7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVkVGV4dDsKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CisKKy8qKgorICogVGhpcyBjbGFzcyBjb250YWlucyB0aGUgZmlyc3QgZm91ciBwYXJhZ3JhcGhzIG9mIHRoZSBEZWNsYXJhdGlvbgorICogb2YgSW5kZXBlbmRlbmNlLCBhcyBib3RoIHN0eWxlZCBhbmQgdW5zdHlsZWQgdGV4dC4gIFRoZSB2aWV3cworICogZXhwcmVzc2VkIHRoZXJlaW4gYXJlIG5vdCBuZWNlc3NhcmlseSB0aG9zZSBvZiB0aGUgcHJvZ3JhbW1lciBvciBvZgorICogaGlzL2hlciBlbXBsb3llci4gIE5vIGNyaXRpY2lzbSBvZiBhbnkgbW9uYXJjaHksIG9saWdhcmNoeSwgZGljdGF0b3JzaGlwLAorICogYXV0b2NyYWN5LCBwbHV0b2NyYWN5LCB0aGVvY3JhY3ksIGFuYXJjaGlzdCB0ZXJyaXRvcnksIGNvbG9uaWFsIHBvd2VyLAorICogb3IgYW55IG90aGVyIG5vbmRlbW9jcmF0aWMgZm9ybSBvZiBnb3Zlcm5tZW50IGlzIGludGVuZGVkLiAgVGhpcyBkb2N1bWVudAorICogaXMgcHJvdmlkZWQgImFzLWlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzZWQgb3IgaW1wbGllZC4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIERlY2xhcmF0aW9uIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZmdEZWNsYXJhdGlvblN0ciA9ICJJbiBDb25ncmVzcywgSnVseSA0LCAxNzc2LCBUSEUgVU5BTklNT1VTIERFQ0xBUkFUSU9OIE9GIFRIRSBUSElSVEVFTiBVTklURUQgU1RBVEVTIE9GIEFNRVJJQ0FcbiIgKworICAgICAgICAiXG4iICsKKyAgICAgICAgIldoZW4gaW4gdGhlIENvdXJzZSBvZiBodW1hbiBFdmVudHMsIGl0IGJlY29tZXMgbmVjZXNzYXJ5IGZvciBvbmUgUGVvcGxlIHRvIGRpc3NvbHZlIHRoZSBQb2xpdGljYWwgQmFuZHMgd2hpY2ggaGF2ZSBjb25uZWN0ZWQgdGhlbSB3aXRoIGFub3RoZXIsIGFuZCB0byBhc3N1bWUgYW1vbmcgdGhlIFBvd2VycyBvZiB0aGUgRWFydGgsIHRoZSBzZXBhcmF0ZSBhbmQgZXF1YWwgU3RhdGlvbiB0byB3aGljaCB0aGUgTGF3cyBvZiBOYXR1cmUgYW5kIG9mIE5hdHVyZSdzIEdvZCBlbnRpdGxlIHRoZW0sIGEgZGVjZW50IFJlc3BlY3QgdG8gdGhlIE9waW5pb25zIG9mIE1hbmtpbmQgcmVxdWlyZXMgdGhhdCB0aGV5IHNob3VsZCBkZWNsYXJlIHRoZSBjYXVzZXMgd2hpY2ggaW1wZWwgdGhlbSB0byB0aGUgU2VwYXJhdGlvbi5cbiIgKworICAgICAgICAiXG4iICsKKyAgICAgICAgIldlIGhvbGQgdGhlc2UgVHJ1dGhzIHRvIGJlIHNlbGYtZXZpZGVudCwgdGhhdCBhbGwgTWVuIGFyZSBjcmVhdGVkIGVxdWFsLCB0aGF0IHRoZXkgYXJlIGVuZG93ZWQgYnkgdGhlaXIgQ3JlYXRvciB3aXRoIGNlcnRhaW4gdW5hbGllbmFibGUgUmlnaHRzLCB0aGF0IGFtb25nIHRoZXNlIGFyZSBMaWZlLCBMaWJlcnR5LCBhbmQgdGhlIFB1cnN1aXQgb2YgSGFwcGluZXNzLlxuIiArCisgICAgICAgICJcbiIgKworICAgICAgICAiVGhhdCB0byBzZWN1cmUgdGhlc2UgUmlnaHRzLCBHb3Zlcm5tZW50cyBhcmUgaW5zdGl0dXRlZCBhbW9uZyBNZW4sIGRlcml2aW5nIHRoZWlyIGp1c3QgUG93ZXJzIGZyb20gdGhlIENvbnNlbnQgb2YgdGhlIEdvdmVybmVkLCB0aGF0IHdoZW5ldmVyIGFueSBGb3JtIG9mIEdvdmVybm1lbnQgYmVjb21lcyBkZXN0cnVjdGl2ZSBvZiB0aGVzZSBFbmRzLCBpdCBpcyB0aGUgUmlnaHQgb2YgdGhlIFBlb3BsZSB0byBhbHRlciBvciB0byBhYm9saXNoIGl0LCBhbmQgdG8gaW5zdGl0dXRlIG5ldyBHb3Zlcm5tZW50LCBsYXlpbmcgaXRzIEZvdW5kYXRpb24gb24gc3VjaCBQcmluY2lwbGVzLCBhbmQgb3JnYW5pemluZyBpdHMgUG93ZXJzIGluIHN1Y2ggRm9ybSwgYXMgdG8gdGhlbSBzaGFsbCBzZWVtIG1vc3QgbGlrZWx5IHRvIGVmZmVjdCB0aGVpciBTYWZldHkgYW5kIEhhcHBpbmVzcy4gUHJ1ZGVuY2UsIGluZGVlZCwgd2lsbCBkaWN0YXRlIHRoYXQgR292ZXJubWVudHMgbG9uZyBlc3RhYmxpc2hlZCBzaG91bGQgbm90IGJlIGNoYW5nZWQgZm9yIGxpZ2h0IGFuZCB0cmFuc2llbnQgQ2F1c2VzOyBhbmQgYWNjb3JkaW5nbHkgYWxsIEV4cGVyaWVuY2UgaGF0aCBzaGV3biwgdGhhdCBNYW5raW5kIGFyZSBtb3JlIGRpc3Bvc2VkIHRvIHN1ZmZlciwgd2hpbGUgRXZpbHMgYXJlIHN1ZmZlcmFibGUsIHRoYW4gdG8gcmlnaHQgdGhlbXNlbHZlcyBieSBhYm9saXNoaW5nIHRoZSBGb3JtcyB0byB3aGljaCB0aGV5IGFyZSBhY2N1c3RvbWVkLiBCdXQgd2hlbiBhIGxvbmcgVHJhaW4gb2YgQWJ1c2VzIGFuZCBVc3VycGF0aW9ucywgcHVyc3VpbmcgaW52YXJpYWJseSB0aGUgc2FtZSBPYmplY3QsIGV2aW5jZXMgYSBEZXNpZ24gdG8gcmVkdWNlIHRoZW0gdW5kZXIgYWJzb2x1dGUgRGVzcG90aXNtLCBpdCBpcyB0aGVpciBSaWdodCwgaXQgaXMgdGhlaXIgRHV0eSwgdG8gdGhyb3cgb2ZmIHN1Y2ggR292ZXJubWVudCwgYW5kIHRvIHByb3ZpZGUgbmV3IEd1YXJkcyBmb3IgdGhlaXIgZnV0dXJlIFNlY3VyaXR5LlxuIiArCisgICAgICAgICJcbiI7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE1Db25zdFRleHQgZmdEZWNsYXJhdGlvbiA9IG5ldyBTdHlsZWRUZXh0KGZnRGVjbGFyYXRpb25TdHIsIEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3Rlc3RzL0lUZXN0VGV4dFBhbmVsLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXN0cy9JVGVzdFRleHRQYW5lbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ4NTM0MjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXN0cy9JVGVzdFRleHRQYW5lbC5qYXZhCkBAIC0wLDAgKzEsMjE0IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBJVGVzdFRleHRQYW5lbC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMiAkICREYXRlOiAyMDAwLzA0LzIyIDAzOjMxOjM0ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGVzdHM7CisKK2ltcG9ydCBqYXZhLmF3dC5CdXR0b247CitpbXBvcnQgamF2YS5hd3QuRnJhbWU7CitpbXBvcnQgamF2YS5hd3QuR3JpZExheW91dDsKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuQ2xpcGJvYXJkOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkxpc3RlbmVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0V2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0FkYXB0ZXI7CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnRleHQuRGF0ZUZvcm1hdDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLk1UZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuYXd0dWkuVGV4dEZyYW1lOworCitwdWJsaWMgY2xhc3MgSVRlc3RUZXh0UGFuZWwgZXh0ZW5kcyBGcmFtZSBpbXBsZW1lbnRzIEFjdGlvbkxpc3RlbmVyIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBzdGF0aWMgbG9uZyBmZ09wQ291bnQgPSAwOworCisgICAgcHJpdmF0ZSBUZXN0VGV4dFBhbmVsIGZUZXN0OworICAgIAorICAgIHByaXZhdGUgTVRleHRQYW5lbCBmVGV4dFBhbmVsOworICAgIHByaXZhdGUgRnJhbWUgZlRleHRGcmFtZTsKKyAgICBwcml2YXRlIENsaXBib2FyZCBmQ2xpcGJvYXJkOworICAgIHByaXZhdGUgQnV0dG9uIGZFeGVyc2l6ZSwgZlN0cmVzc1Rlc3QsIGZSZXNpemU7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisKKyAgICAgICAgRGF0ZSBzdGFydERhdGUgPSBuZXcgRGF0ZSgpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBDbGlwYm9hcmQgY2xpcGJvYXJkID0gbmV3IENsaXBib2FyZCgiSVRleHRUZXN0UGFuZWwiKTsKKyAgICAgICAgICAgIFRleHRGcmFtZSBmcmFtZSA9IG5ldyBUZXh0RnJhbWUobnVsbCwgIkludGVyYWN0aXZlIFRlc3QiLCBjbGlwYm9hcmQpOworICAgICAgICAgICAgTVRleHRQYW5lbCBwYW5lbCA9IGZyYW1lLmdldFRleHRQYW5lbCgpOworCisgICAgICAgICAgICBuZXcgSVRlc3RUZXh0UGFuZWwocGFuZWwsIGZyYW1lLCBjbGlwYm9hcmQpLnNob3coKTsKKyAgICAgICAgfQorICAgICAgICBmaW5hbGx5IHsKKyAgICAgICAgICAgIERhdGVGb3JtYXQgZGYgPSBEYXRlRm9ybWF0LmdldERhdGVUaW1lSW5zdGFuY2UoKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU3RhcnQgdGltZTogIiArIGRmLmZvcm1hdChzdGFydERhdGUpKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRW5kIFRpbWU6ICIgKyBkZi5mb3JtYXQobmV3IERhdGUoKSkpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJPcCBjb3VudDogIiArIGZnT3BDb3VudCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgSVRlc3RUZXh0UGFuZWwoTVRleHRQYW5lbCBwYW5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRnJhbWUgZnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIENsaXBib2FyZCBjbGlwYm9hcmQpIHsKKworICAgICAgICBmVGV4dFBhbmVsID0gcGFuZWw7CisgICAgICAgIGZUZXN0ID0gbmV3IFRlc3RUZXh0UGFuZWwoZlRleHRQYW5lbCk7CisgICAgICAgIGZDbGlwYm9hcmQgPSBjbGlwYm9hcmQ7CisKKyAgICAgICAgc2V0TGF5b3V0KG5ldyBHcmlkTGF5b3V0KDAsIDEpKTsKKworICAgICAgICBmVGV4dEZyYW1lID0gZnJhbWU7CisgICAgICAgIGZUZXh0RnJhbWUuc2V0U2l6ZSgzNTAsIDUwMCk7CisgICAgICAgIGZUZXh0RnJhbWUuc2hvdygpOworCisgICAgICAgIC8vIGluaXRpYWxpemUgVUk6CisgICAgICAgIGZFeGVyc2l6ZSA9IG5ldyBCdXR0b24oIkV4ZXJjaXNlIik7CisgICAgICAgIGZFeGVyc2l6ZS5hZGRBY3Rpb25MaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgYWRkKGZFeGVyc2l6ZSk7CisKKyAgICAgICAgZlN0cmVzc1Rlc3QgPSBuZXcgQnV0dG9uKCJTdHJlc3MgVGVzdCIpOworICAgICAgICBmU3RyZXNzVGVzdC5hZGRBY3Rpb25MaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgYWRkKGZTdHJlc3NUZXN0KTsKKworICAgICAgICBwYWNrKCk7CisKKyAgICAgICAgYWRkV2luZG93TGlzdGVuZXIobmV3IFdpbmRvd0FkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dBY3RpdmF0ZWQoV2luZG93RXZlbnQgZSkgeworICAgICAgICAgICAgICAgIC8vYWN0aXZhdGVUZXh0RnJhbWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHdpbmRvd0Nsb3NpbmcoV2luZG93RXZlbnQgZSkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5leGl0KDApOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKworICAgICAgICBzZXRTaXplKDI4MCwgMTUwKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgYWN0aXZhdGVUZXh0RnJhbWUoKSB7CisKKyAgICAgICAgZlRleHRGcmFtZS50b0Zyb250KCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGV2ZW50KSB7CisKKyAgICAgICAgT2JqZWN0IHNvdXJjZSA9IGV2ZW50LmdldFNvdXJjZSgpOworICAgICAgICBhY3RpdmF0ZVRleHRGcmFtZSgpOworICAgICAgICBEYXRlIHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7CisgICAgICAgIGJvb2xlYW4gZXhpdGVkTm9ybWFsbHkgPSBmYWxzZTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKHNvdXJjZSA9PSBmRXhlcnNpemUpIHsKKyAgICAgICAgICAgICAgICBmVGVzdC5pbmNSYW5kU2VlZCgpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IDEwMDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHNlbGVjdE9wZXJhdGlvbihmVGV4dEZyYW1lLCBmQ2xpcGJvYXJkKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChzb3VyY2UgPT0gZlN0cmVzc1Rlc3QpIHsKKyAgICAgICAgICAgICAgICBmVGVzdC5pbmNSYW5kU2VlZCgpOworICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgIHNlbGVjdE9wZXJhdGlvbihmVGV4dEZyYW1lLCBmQ2xpcGJvYXJkKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBleGl0ZWROb3JtYWxseSA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZmluYWxseSB7CisgICAgICAgICAgICBpZiAoIWV4aXRlZE5vcm1hbGx5KSB7CisgICAgICAgICAgICAgICAgRGF0ZUZvcm1hdCBkZiA9IERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZSgpOworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU3RhcnQgdGltZTogIiArIGRmLmZvcm1hdChzdGFydERhdGUpKTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkVuZCBUaW1lOiAiICsgZGYuZm9ybWF0KG5ldyBEYXRlKCkpKTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlJhbmQgc2VlZDogIiArIGZUZXN0LmdldFJhbmRTZWVkKCkpOworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiT3AgY291bnQ6ICIgKyBmZ09wQ291bnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUGVyZm9ybSBhIHJhbmRvbSBvcGVyYXRpb24gb24gdGhlIE1UZXh0UGFuZWwuICBGcmFtZSBjYW4KKyAgICAgKiBiZSBudWxsLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBPUF9DT1VOVCA9IDE1OworCisgICAgcHVibGljIHZvaWQgc2VsZWN0T3BlcmF0aW9uKEZyYW1lIGZyYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGlwYm9hcmQgZkNsaXBib2FyZCkgeworCisgICAgICAgIGludCBvcCA9IGZUZXN0LnJhbmRJbnQoT1BfQ09VTlQpOworCisgICAgICAgIHN3aXRjaCAob3ApIHsKKworICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgIGZUZXN0Ll90ZXN0U2V0U2VsZWN0aW9uKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICBmVGVzdC5fdGVzdE1vZGlmaWNhdGlvbnMoZlRlc3QuTU9EX1RFWFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBmVGVzdC5fdGVzdEVkaXRNZW51T3BlcmF0aW9ucyhmQ2xpcGJvYXJkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgIGZUZXN0Ll90ZXN0TW9kRmxhZyhmVGV4dFBhbmVsLmdldENvbW1hbmRMb2dTaXplKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgZlRlc3QuYXBwbHlDaGFyYWN0ZXJTdHlsZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIDU6CisgICAgICAgICAgICAgICAgZlRlc3QuYXBwbHlQYXJhZ3JhcGhTdHlsZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIDY6CisgICAgICAgICAgICBjYXNlIDc6CisgICAgICAgICAgICBjYXNlIDg6CisgICAgICAgICAgICBjYXNlIDk6CisgICAgICAgICAgICAgICAgZlRlc3QudHlwZUtleXMoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAxMDoKKyAgICAgICAgICAgICAgICBmVGVzdC5zZWxlY3RUZXh0KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgMTE6CisgICAgICAgICAgICAgICAgZlRlc3QudW5kb1JlZG8oKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAxMjoKKyAgICAgICAgICAgICAgICAvL2lmIChmcmFtZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgLy8gICAgZlRlc3QucmVzaXplRnJhbWUoZnJhbWUpOworICAgICAgICAgICAgICAgIC8vICAgIGJyZWFrOworICAgICAgICAgICAgICAgIC8vfQorCisgICAgICAgICAgICBjYXNlIDEzOgorICAgICAgICAgICAgICAgIGZUZXN0LmFwcGx5S2V5UmVtYXAoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAxNDoKKyAgICAgICAgICAgICAgICBmVGVzdC5fdGVzdENvbW1hbmRMb2dDb250cm9sKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJPUF9DT1VOVCBpcyBpbmNvcnJlY3QiKTsKKyAgICAgICAgfQorICAgICAgICBmZ09wQ291bnQrKzsKKyAgICB9CisKKworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGVzdHMvVGVzdFRleHRQYW5lbC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGVzdHMvVGVzdFRleHRQYW5lbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjg3NTUyZWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXN0cy9UZXN0VGV4dFBhbmVsLmphdmEKQEAgLTAsMCArMSw4NDYgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRlc3RUZXh0UGFuZWwuamF2YSx2ICQgJFJldmlzaW9uOiAxLjcgJCAkRGF0ZTogMjAwMC8wNC8yNCAyMToxMTo0NSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRlc3RzOworCitpbXBvcnQgamF2YS51dGlsLlJhbmRvbTsKK2ltcG9ydCBqYXZhLmF3dC5Db2xvcjsKK2ltcG9ydCBqYXZhLmF3dC5GcmFtZTsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5LZXlFdmVudDsKKworaW1wb3J0IGphdmEuYXd0LmRhdGF0cmFuc2Zlci5DbGlwYm9hcmQ7CitpbXBvcnQgamF2YS5hd3QuZGF0YXRyYW5zZmVyLkNsaXBib2FyZE93bmVyOworaW1wb3J0IGphdmEuYXd0LmRhdGF0cmFuc2Zlci5TdHJpbmdTZWxlY3Rpb247CitpbXBvcnQgamF2YS5hd3QuZGF0YXRyYW5zZmVyLlRyYW5zZmVyYWJsZTsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLktleVJlbWFwOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLktleUV2ZW50Rm9yd2FyZGVyOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLk1UZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbEV2ZW50OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbExpc3RlbmVyOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlZFRleHQ7CitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuVGV4dEF0dHJpYnV0ZTsKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVNb2RpZmllcjsKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuVGV4dEF0dHJpYnV0ZTsKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CisKKy8vIE5vdGU6ICB0aGlzIHVzZWQgdG8gYmUgYSBUZXN0Rm13ayB0ZXN0LiAgSWYgeW91IGFkZAorLy8gbW9yZSB0ZXN0cyB0byBpdCwgYmUgc3VyZSB0byBhZGQgdGhlbSB0byAKKy8vIGNvbS5pYm0udGVzdC5yaWNodGV4dC5GbXdrVGVzdFRleHRQYW5lbC50ZXN0KCkgLQorLy8gb3RoZXJ3aXNlIHRoZXkgd29uJ3QgZ2V0IHJ1biEKKworcHVibGljIGNsYXNzIFRlc3RUZXh0UGFuZWwgLypleHRlbmRzIFRlc3RGbXdrKi8geworCisgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBUZXN0TGlzdGVuZXIgaW1wbGVtZW50cyBUZXh0UGFuZWxMaXN0ZW5lciB7CisgICAgICAgIAorICAgICAgICBwcml2YXRlIGludCBOT19XQVkgPSAwOworICAgICAgICBwcml2YXRlIGludCBERUZJTklURUxZID0gMTsKKyAgICAgICAgcHJpdmF0ZSBpbnQgTUFZQkUgPSAyOworICAgICAgICAKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBpbnRbXSBzdGF0dXM7CisgICAgICAgIAorICAgICAgICBUZXN0TGlzdGVuZXIoTVRleHRQYW5lbCB0ZXh0UGFuZWwpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IGxlbmd0aCA9IFRleHRQYW5lbEV2ZW50LlRFWFRfUEFORUxfTEFTVCAtCisgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dFBhbmVsRXZlbnQuVEVYVF9QQU5FTF9GSVJTVCArIDE7CisgICAgICAgICAgICBzdGF0dXMgPSBuZXcgaW50W2xlbmd0aF07CisgICAgICAgICAgICB0ZXh0UGFuZWwuYWRkTGlzdGVuZXIodGhpcyk7CisgICAgICAgICAgICBhbGxvd0FsbCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIHJlZnVzZUFsbCgpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgc3RhdHVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgc3RhdHVzW2ldID0gTk9fV0FZOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGFsbG93QWxsKCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBzdGF0dXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBzdGF0dXNbaV0gPSBNQVlCRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBleHBlY3RFdmVudChpbnQgdHlwZSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBpbnQgaW5kZXggPSB0eXBlIC0gVGV4dFBhbmVsRXZlbnQuVEVYVF9QQU5FTF9GSVJTVDsKKyAgICAgICAgICAgIHN0YXR1c1tpbmRleF0gPSBERUZJTklURUxZOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGFsbG93RXZlbnQoaW50IHR5cGUpIHsKKyAgICAgICAgICAgIGludCBpbmRleCA9IHR5cGUgLSBUZXh0UGFuZWxFdmVudC5URVhUX1BBTkVMX0ZJUlNUOworICAgICAgICAgICAgc3RhdHVzW2luZGV4XSA9IE1BWUJFOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGFzc2VydE5vdEV4cGVjdGluZ0V2ZW50cygpIHsKKyAgICAgICAgICAgIGFzc2VydE5vdEV4cGVjdGluZ0V2ZW50cyhmYWxzZSwgMCwgZmFsc2UpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGFzc2VydE5vdEV4cGVjdGluZ0V2ZW50cyhpbnQgaXRlcmF0aW9uQ291bnQsIGJvb2xlYW4gZXhwKSB7CisgICAgICAgICAgICBhc3NlcnROb3RFeHBlY3RpbmdFdmVudHModHJ1ZSwgaXRlcmF0aW9uQ291bnQsIGV4cCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHByaXZhdGUgdm9pZCBhc3NlcnROb3RFeHBlY3RpbmdFdmVudHMoYm9vbGVhbiBsb2dEZXRhaWxzLCBpbnQgaXRlcmF0aW9uQ291bnQsIGJvb2xlYW4gZXhwKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJvb2xlYW4gZSA9IGZhbHNlOworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgc3RhdHVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0YXR1c1tpXSA9PSBERUZJTklURUxZKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChsb2dEZXRhaWxzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2dNZXNzYWdlKCJFeHBlY3RpbmcgZXZlbnQgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkrVGV4dFBhbmVsRXZlbnQuVEVYVF9QQU5FTF9GSVJTVCkpOworICAgICAgICAgICAgICAgICAgICAgICAgbG9nTWVzc2FnZSgiaXRlcmF0aW9uQ291bnQ9IitpdGVyYXRpb25Db3VudCsiOyAgZXhwZXh0aW5nPSIrZXhwKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZSkgeworICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJTb21lIGV2ZW50cyBwZW5kaW5nIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyB2b2lkIHRleHRFdmVudE9jY3VycmVkKFRleHRQYW5lbEV2ZW50IGV2ZW50KSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCBpbmRleCA9IGV2ZW50LmdldElEKCkgLSBUZXh0UGFuZWxFdmVudC5URVhUX1BBTkVMX0ZJUlNUOworICAgICAgICAgICAgaWYgKHN0YXR1c1tpbmRleF0gPT0gTk9fV0FZKSB7CisgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IoIlVuZXhwZWN0ZWQgZXZlbnQ6ICIgKyBldmVudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChzdGF0dXNbaW5kZXhdID09IERFRklOSVRFTFkpIHsKKyAgICAgICAgICAgICAgICBzdGF0dXNbaW5kZXhdID0gTk9fV0FZOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgYm9vbGVhbiByZXNwb25kc1RvRXZlbnRUeXBlKGludCB0eXBlKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTVFJJTkdfQ09OVEVOVCA9ICJTb21lIGNvbnRlbnQiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBURVNUX0lURVJTID0gMjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE1Db25zdFRleHQgTU9EX1RFWFQgPQorICAgICAgICAgICAgICAgIG5ldyBTdHlsZWRUZXh0KCJTdHlsZWQiLCBBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUCk7CisKKyAgICBwcml2YXRlIENsaXBib2FyZCBmQ2xpcGJvYXJkOworICAgIHByaXZhdGUgTVRleHRQYW5lbCBmVGV4dFBhbmVsID0gbnVsbDsKKyAgICBwcml2YXRlIFRlc3RMaXN0ZW5lciBmTGlzdGVuZXIgPSBudWxsOworICAgIHByaXZhdGUgaW50IGZSYW5kU2VlZCA9IDA7CisgICAgcHJpdmF0ZSBSYW5kb20gcmFuZDsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQklHX0NPTU1BTkRfTE9HX1NJWkUgPSA0MDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU01BTExfQ09NTUFORF9MT0dfU0laRSA9IDg7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHlsZU1vZGlmaWVyW10gcGFyYU1vZHMgPSB7CisgICAgICAgIFN0eWxlTW9kaWZpZXIuY3JlYXRlQWRkTW9kaWZpZXIoCisgICAgICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZU1hcChUZXh0QXR0cmlidXRlLkxJTkVfRkxVU0gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLkZMVVNIX0xFQURJTkcpKSwKKyAgICAgICAgU3R5bGVNb2RpZmllci5jcmVhdGVBZGRNb2RpZmllcihUZXh0QXR0cmlidXRlLkxJTkVfRkxVU0gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLkZMVVNIX0NFTlRFUiksCisgICAgICAgIFN0eWxlTW9kaWZpZXIuY3JlYXRlQWRkTW9kaWZpZXIoVGV4dEF0dHJpYnV0ZS5MSU5FX0ZMVVNILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5GTFVTSF9UUkFJTElORyksCisgICAgICAgIFN0eWxlTW9kaWZpZXIuY3JlYXRlQWRkTW9kaWZpZXIoVGV4dEF0dHJpYnV0ZS5MSU5FX0ZMVVNILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5GVUxMWV9KVVNUSUZJRUQpLAorICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZUFkZE1vZGlmaWVyKFRleHRBdHRyaWJ1dGUuUlVOX0RJUkVDVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuUlVOX0RJUkVDVElPTl9SVEwpLAorICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZUFkZE1vZGlmaWVyKFRleHRBdHRyaWJ1dGUuUlVOX0RJUkVDVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuUlVOX0RJUkVDVElPTl9MVFIpLAorICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZVJlbW92ZU1vZGlmaWVyKAorICAgICAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGVTZXQoVGV4dEF0dHJpYnV0ZS5MSU5FX0ZMVVNIKSksCisgICAgICAgIFN0eWxlTW9kaWZpZXIuY3JlYXRlUmVtb3ZlTW9kaWZpZXIoCisgICAgICAgICAgICAgICAgbmV3IEF0dHJpYnV0ZVNldChUZXh0QXR0cmlidXRlLlJVTl9ESVJFQ1RJT04pKQorICAgIH07CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0VMRUNUID0gMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0VUX0NBUkVUX1BPUyA9IDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNFVF9TVEFSVCA9IDI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNFVF9FTkQgPSAzOworCisgICAgLy8gdXNpbmcgYm90aCBzdHlsZXMgb2YgYWRkIG1vZGlmaWVyOiBBdHRyaWJ1dGVNYXAgYW5kCisgICAgLy8ga2V5LXZhbHVlLCBqdXN0IGZvciB2YXJpZXR5Li4uCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3R5bGVNb2RpZmllcltdIGNoYXJNb2RzID0geworICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZUFkZE1vZGlmaWVyKAorICAgICAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5XRUlHSFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLldFSUdIVF9CT0xEKSksCisgICAgICAgIFN0eWxlTW9kaWZpZXIuY3JlYXRlQWRkTW9kaWZpZXIoVGV4dEF0dHJpYnV0ZS5GT1JFR1JPVU5ELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IuZ3JlZW4pLAorICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZUFkZE1vZGlmaWVyKAorICAgICAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5VTkRFUkxJTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLlVOREVSTElORV9PTikuYWRkQXR0cmlidXRlcygKKyAgICAgICAgICAgICAgICBuZXcgQXR0cmlidXRlTWFwKFRleHRBdHRyaWJ1dGUuU0laRSwgbmV3IEZsb2F0KDYpKSkpLAorICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZVJlcGxhY2VNb2RpZmllcigKKyAgICAgICAgICAgICAgICBuZXcgQXR0cmlidXRlTWFwKFRleHRBdHRyaWJ1dGUuRkFNSUxZLCAiRGlhbG9nIikpLAorICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZVJlbW92ZU1vZGlmaWVyKAorICAgICAgICAgICAgICAgIG5ldyBBdHRyaWJ1dGVTZXQoCisgICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsgVGV4dEF0dHJpYnV0ZS5XRUlHSFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLlBPU1RVUkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLlVOREVSTElORSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuU1RSSUtFVEhST1VHSCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuU1VQRVJTQ1JJUFQgfSkpLAorICAgICAgICBTdHlsZU1vZGlmaWVyLklERU5USVRZCisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXJbXSBUWVBFRF9DSEFSUyA9IG5ldyBjaGFyWzEyOCAtICcgJyArIDNdOworICAgIHN0YXRpYyB7CisgICAgICAgIFRZUEVEX0NIQVJTWzBdID0gODsgLy8gYmFja3NwYWNlCisgICAgICAgIFRZUEVEX0NIQVJTWzFdID0gJ1x0JzsKKyAgICAgICAgVFlQRURfQ0hBUlNbMl0gPSAnXG4nOworICAgICAgICBmb3IgKGludCBpPTM7IGkgPCBUWVBFRF9DSEFSUy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgVFlQRURfQ0hBUlNbaV0gPSAoY2hhcikgKCcgJyArIGkgLSAzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBUZXN0VGV4dFBhbmVsKCkgeworCisgICAgICAgIGZDbGlwYm9hcmQgPSBuZXcgQ2xpcGJvYXJkKCJUZXN0VGV4dFBhbmVsIik7CisgICAgICAgIGluY1JhbmRTZWVkKCk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIHZvaWQgcmVwb3J0RXJyb3IoU3RyaW5nIG1lc3NhZ2UpIHsKKyAgICAKKyAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKG1lc3NhZ2UpOworICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihtZXNzYWdlKTsKKyAgICAgICAgLy9zdXBlci5lcnJsbihtZXNzYWdlKTsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIHZvaWQgbG9nTWVzc2FnZShTdHJpbmcgbWVzc2FnZSkgeworICAgIAorICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4obWVzc2FnZSk7CisgICAgICAgIC8vc3VwZXIubG9nTWVzc2FnZShtZXNzYWdlKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIFRlc3RUZXh0UGFuZWwoTVRleHRQYW5lbCBwYW5lbCkgeworICAgICAgICAKKyAgICAgICAgdGhpcygpOworICAgICAgICBzZXRUZXh0UGFuZWwocGFuZWwpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGluY1JhbmRTZWVkKCkgeworICAgICAgICAKKyAgICAgICAgcmFuZCA9IG5ldyBSYW5kb20oKytmUmFuZFNlZWQpOworICAgIH0KKyAgICAKKyAgICBpbnQgZ2V0UmFuZFNlZWQoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZlJhbmRTZWVkOworICAgIH0KKworICAgIGludCByYW5kSW50KGludCBsaW1pdCkgeworCisgICAgICAgIHJldHVybiByYW5kSW50KDAsIGxpbWl0KTsKKyAgICB9CisKKyAgICBpbnQgcmFuZEludChpbnQgc3RhcnQsIGludCBsaW1pdCkgeworCisgICAgICAgIGlmIChzdGFydCA+IGxpbWl0KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJSYW5nZSBpcyAwLWxlbmd0aC4iKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzdGFydCA9PSBsaW1pdCkgeworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHN0YXJ0ICsgKE1hdGguYWJzKHJhbmQubmV4dEludCgpKSUobGltaXQtc3RhcnQpKSA7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKworICAgICAgICBBdHRyaWJ1dGVNYXAgYm9sZCA9IG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5XRUlHSFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLldFSUdIVF9CT0xEKTsKKyAgICAgICAgTUNvbnN0VGV4dCB0ZXh0MSA9IG5ldyBTdHlsZWRUZXh0KCJUZXN0IGNvbnRlbnRzLiAxMjM0XG5Ib3cgYWJvdXQgaXQ/IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUCk7CisgICAgICAgIE1Db25zdFRleHQgdGV4dDIgPSBuZXcgU3R5bGVkVGV4dCgiQW5vdGhlciB0ZXN0IHN0cmluZy4iLCBib2xkKTsKKworICAgICAgICBfdGVzdFdpdGhUZXh0KHRleHQxKTsKKyAgICAgICAgX3Rlc3RXaXRoVGV4dCh0ZXh0Mik7CisgICAgICAgIF90ZXN0V2l0aFRleHQobmV3IFN0eWxlZFRleHQoKSk7CisKKyAgICAgICAgU3R5bGVkVGV4dCBiaWcxID0gbmV3IFN0eWxlZFRleHQoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgNTA7IGkrKykgeworICAgICAgICAgICAgYmlnMS5hcHBlbmQodGV4dDEpOworICAgICAgICB9CisKKyAgICAgICAgX3Rlc3RXaXRoVGV4dChiaWcxKTsKKyAgICAgICAgU3R5bGVkVGV4dCBiaWcyID0gbmV3IFN0eWxlZFRleHQodGV4dDEpOworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCA4MDsgaSsrKSB7CisgICAgICAgICAgICBiaWcyLmFwcGVuZCh0ZXh0Mik7CisgICAgICAgIH0KKworICAgICAgICBfdGVzdFdpdGhUZXh0KGJpZzIpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgc2V0VGV4dFBhbmVsKE1UZXh0UGFuZWwgcGFuZWwpIHsKKyAgICAgICAgCisgICAgICAgIGZUZXh0UGFuZWwgPSBwYW5lbDsKKyAgICAgICAgZkxpc3RlbmVyID0gbmV3IFRlc3RMaXN0ZW5lcihwYW5lbCk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBfdGVzdFdpdGhUZXh0KE1Db25zdFRleHQgdGV4dCkgeworCisgICAgICAgIHNldFRleHRQYW5lbChuZXcgVGV4dFBhbmVsKHRleHQsIGZDbGlwYm9hcmQpKTsKKworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBURVNUX0lURVJTOyBpKyspIHsKKyAgICAgICAgICAgIF90ZXN0U2V0U2VsZWN0aW9uKCk7CisgICAgICAgICAgICBfdGVzdE1vZGlmaWNhdGlvbnMoTU9EX1RFWFQsIHRydWUpOworICAgICAgICAgICAgX3Rlc3RFZGl0TWVudU9wZXJhdGlvbnMoZkNsaXBib2FyZCk7CisgICAgICAgICAgICBfdGVzdE1vZEZsYWcoZlRleHRQYW5lbC5nZXRDb21tYW5kTG9nU2l6ZSgpKTsKKyAgICAgICAgICAgIF90ZXN0Q29tbWFuZExvZ0NvbnRyb2woKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBfdGVzdFNlbGVjdGlvbihpbnQgZnVuY3Rpb24sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIGludCBhU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IGFMaW1pdCkgeworCisgICAgICAgIGludCBvbGRTdGFydCA9IGZUZXh0UGFuZWwuZ2V0U2VsZWN0aW9uU3RhcnQoKTsKKyAgICAgICAgaW50IG9sZExpbWl0ID0gZlRleHRQYW5lbC5nZXRTZWxlY3Rpb25FbmQoKTsKKworICAgICAgICBmaW5hbCBpbnQgbGVuZ3RoID0gZlRleHRQYW5lbC5nZXRUZXh0TGVuZ3RoKCk7CisgICAgICAgIAorICAgICAgICBpbnQgc3RhcnQgPSBhU3RhcnQ7CisgICAgICAgIGludCBsaW1pdCA9IGFMaW1pdDsKKyAgICAgICAgCisgICAgICAgIGlmIChzdGFydCA8IDApIHsKKyAgICAgICAgICAgIHN0YXJ0ID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzdGFydCA+IGxlbmd0aCkgeworICAgICAgICAgICAgc3RhcnQgPSBsZW5ndGg7CisgICAgICAgIH0KKworICAgICAgICBpZiAobGltaXQgPCBzdGFydCkgeworICAgICAgICAgICAgbGltaXQgPSBzdGFydDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChsaW1pdCA+IGxlbmd0aCkgeworICAgICAgICAgICAgbGltaXQgPSBsZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZMaXN0ZW5lci5yZWZ1c2VBbGwoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChvbGRTdGFydCAhPSBzdGFydCB8fCBvbGRMaW1pdCAhPSBsaW1pdCkgeworICAgICAgICAgICAgZkxpc3RlbmVyLmV4cGVjdEV2ZW50KFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9SQU5HRV9DSEFOR0VEKTsKKyAgICAgICAgICAgIGZMaXN0ZW5lci5hbGxvd0V2ZW50KFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9TVFlMRVNfQ0hBTkdFRCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKChvbGRTdGFydD09b2xkTGltaXQpICE9IChzdGFydD09bGltaXQpKSB7CisgICAgICAgICAgICBmTGlzdGVuZXIuZXhwZWN0RXZlbnQoVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX0VNUFRZX0NIQU5HRUQpOworICAgICAgICB9CisgICAgICAgIGlmIChvbGRTdGFydD09b2xkTGltaXQpIHsKKyAgICAgICAgICAgIGZMaXN0ZW5lci5hbGxvd0V2ZW50KFRleHRQYW5lbEV2ZW50LlVORE9fU1RBVEVfQ0hBTkdFRCk7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2goZnVuY3Rpb24pIHsKKyAgICAgICAgICAgIGNhc2UgU0VMRUNUOgorICAgICAgICAgICAgICAgIGZUZXh0UGFuZWwuc2VsZWN0KGFTdGFydCwgYUxpbWl0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU0VUX0NBUkVUX1BPUzoKKyAgICAgICAgICAgICAgICBmVGV4dFBhbmVsLnNldENhcmV0UG9zaXRpb24oYVN0YXJ0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU0VUX1NUQVJUOgorICAgICAgICAgICAgICAgIGZUZXh0UGFuZWwuc2V0U2VsZWN0aW9uU3RhcnQoYVN0YXJ0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU0VUX0VORDoKKyAgICAgICAgICAgICAgICBmVGV4dFBhbmVsLnNldFNlbGVjdGlvbkVuZChhTGltaXQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGZ1bmN0aW9uIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChmVGV4dFBhbmVsLmdldFNlbGVjdGlvblN0YXJ0KCkgIT0gc3RhcnQpIHsKKyAgICAgICAgICAgIHJlcG9ydEVycm9yKCJnZXRTZWxlY3Rpb25TdGFydCBpcyBpbmNvcnJlY3QgYWZ0ZXIgc2V0Iik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuZ2V0U2VsZWN0aW9uRW5kKCkgIT0gbGltaXQpIHsKKyAgICAgICAgICAgIHJlcG9ydEVycm9yKCJnZXRTZWxlY3Rpb25FbmQgaXMgaW5jb3JyZWN0IGFmdGVyIHNldCIpOworICAgICAgICB9CisgICAgICAgIGZMaXN0ZW5lci5hc3NlcnROb3RFeHBlY3RpbmdFdmVudHMoKTsKKyAgICAgICAgZkxpc3RlbmVyLmFsbG93QWxsKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNldEFuZFRlc3RTZWxlY3Rpb24oaW50IHN0YXJ0LCBpbnQgbGltaXQpIHsKKyAgICAgICAgCisgICAgICAgIF90ZXN0U2VsZWN0aW9uKFNFTEVDVCwgc3RhcnQsIGxpbWl0KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgc2V0QW5kVGVzdENhcmV0KGludCBjYXJldFBvcykgeworCisgICAgICAgIF90ZXN0U2VsZWN0aW9uKFNFVF9DQVJFVF9QT1MsIGNhcmV0UG9zLCBjYXJldFBvcyk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNldEFuZFRlc3RTZWxlY3Rpb25TdGFydChpbnQgc2VsU3RhcnQpIHsKKworICAgICAgICBpbnQgbGltaXQgPSBmVGV4dFBhbmVsLmdldFNlbGVjdGlvbkVuZCgpOworICAgICAgICBfdGVzdFNlbGVjdGlvbihTRVRfU1RBUlQsIHNlbFN0YXJ0LCBsaW1pdCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNldEFuZFRlc3RTZWxlY3Rpb25FbmQoaW50IHNlbEVuZCkgeworCisgICAgICAgIGludCBzdGFydCA9IGZUZXh0UGFuZWwuZ2V0U2VsZWN0aW9uU3RhcnQoKTsKKyAgICAgICAgX3Rlc3RTZWxlY3Rpb24oU0VUX0VORCwgc3RhcnQsIHNlbEVuZCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgX3Rlc3RTZXRTZWxlY3Rpb24oKSB7CisKKyAgICAgICAgaW50IHRleHRMZW5ndGggPSBmVGV4dFBhbmVsLmdldFRleHRMZW5ndGgoKTsKKyAgICAgICAgaWYgKHRleHRMZW5ndGggIT0gZlRleHRQYW5lbC5nZXRUZXh0KCkubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIHJlcG9ydEVycm9yKCJUZXh0IHBhbmVsIGxlbmd0aCBpcyBub3QgY29ycmVjdCIpOworICAgICAgICB9CisKKyAgICAgICAgc2V0QW5kVGVzdFNlbGVjdGlvbigwLCB0ZXh0TGVuZ3RoIC8gMik7CisgICAgICAgIHNldEFuZFRlc3RTZWxlY3Rpb24odGV4dExlbmd0aCAvIDIsIHRleHRMZW5ndGgpOworICAgICAgICBzZXRBbmRUZXN0U2VsZWN0aW9uKDAsIHRleHRMZW5ndGgpOworICAgICAgICBzZXRBbmRUZXN0U2VsZWN0aW9uKC0xLCB0ZXh0TGVuZ3RoKzEpOworICAgICAgICBpZiAodGV4dExlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIHNldEFuZFRlc3RTZWxlY3Rpb24oMCwgdGV4dExlbmd0aCAtIDEpOworICAgICAgICAgICAgc2V0QW5kVGVzdFNlbGVjdGlvbigwLCAxKTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIGludCBpbmNBbW91bnQgPSBNYXRoLm1heCgxLCB0ZXh0TGVuZ3RoLzUpOworICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDw9IHRleHRMZW5ndGg7IGluZGV4ICs9IGluY0Ftb3VudCkgeworCisgICAgICAgICAgICBzZXRBbmRUZXN0Q2FyZXQoaW5kZXgpOworICAgICAgICAgICAgc2V0QW5kVGVzdFNlbGVjdGlvblN0YXJ0KHRleHRMZW5ndGgtaW5kZXgpOworICAgICAgICAgICAgc2V0QW5kVGVzdFNlbGVjdGlvbkVuZCh0ZXh0TGVuZ3RoKTsKKyAgICAgICAgICAgIHNldEFuZFRlc3RTZWxlY3Rpb25TdGFydCgwKTsKKyAgICAgICAgICAgIHNldEFuZFRlc3RTZWxlY3Rpb25FbmQodGV4dExlbmd0aC1pbmRleCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXh0IG11c3QgYmUgZWRpdGFibGUgdG8gcGFzcyB0aGlzIHRlc3QuCisgICAgICovCisgICAgcHVibGljIHZvaWQgX3Rlc3RNb2RpZmljYXRpb25zKE1Db25zdFRleHQgaW5zZXJ0aW9uVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiByZXN0b3JlT2xkVGV4dCkgeworCisgICAgICAgIE1Db25zdFRleHQgb2xkVGV4dCA9IG5ldyBTdHlsZWRUZXh0KGZUZXh0UGFuZWwuZ2V0VGV4dCgpKTsKKyAgICAgICAgZmluYWwgaW50IGluc0xlbmd0aCA9IGluc2VydGlvblRleHQubGVuZ3RoKCk7CisKKyAgICAgICAgZkxpc3RlbmVyLmFsbG93QWxsKCk7CisgICAgICAgIGZMaXN0ZW5lci5leHBlY3RFdmVudChUZXh0UGFuZWxFdmVudC5URVhUX0NIQU5HRUQpOworICAgICAgICBmTGlzdGVuZXIuZXhwZWN0RXZlbnQoVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX1JBTkdFX0NIQU5HRUQpOworICAgICAgICBmVGV4dFBhbmVsLmFwcGVuZChpbnNlcnRpb25UZXh0KTsKKyAgICAgICAgZkxpc3RlbmVyLmFzc2VydE5vdEV4cGVjdGluZ0V2ZW50cygpOworICAgICAgICAKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuZ2V0U2VsZWN0aW9uU3RhcnQoKSAhPSBvbGRUZXh0Lmxlbmd0aCgpICsgaW5zTGVuZ3RoKSB7CisgICAgICAgICAgICByZXBvcnRFcnJvcigiQXBwZW5kIGRpZG4ndCByZXN1bHQgaW4gY29ycmVjdCBzZWxlY3Rpb24iKTsKKyAgICAgICAgfQorCisgICAgICAgIGZMaXN0ZW5lci5leHBlY3RFdmVudChUZXh0UGFuZWxFdmVudC5URVhUX0NIQU5HRUQpOworICAgICAgICBmTGlzdGVuZXIuZXhwZWN0RXZlbnQoVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX1JBTkdFX0NIQU5HRUQpOworICAgICAgICBmVGV4dFBhbmVsLmluc2VydChpbnNlcnRpb25UZXh0LCAwKTsKKyAgICAgICAgZkxpc3RlbmVyLmFzc2VydE5vdEV4cGVjdGluZ0V2ZW50cygpOworICAgICAgICBmTGlzdGVuZXIuYWxsb3dBbGwoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChmVGV4dFBhbmVsLmdldFNlbGVjdGlvblN0YXJ0KCkgIT0gaW5zTGVuZ3RoKSB7CisgICAgICAgICAgICByZXBvcnRFcnJvcigiSW5zZXJ0IGRpZG4ndCByZXN1bHQgaW4gY29ycmVjdCBzZWxlY3Rpb24iKTsKKyAgICAgICAgfQorCisgICAgICAgIGZUZXh0UGFuZWwucmVwbGFjZVJhbmdlKGluc2VydGlvblRleHQsIGluc0xlbmd0aCwgaW5zTGVuZ3RoK29sZFRleHQubGVuZ3RoKCkpOworICAgICAgICBpZiAoZlRleHRQYW5lbC5nZXRTZWxlY3Rpb25TdGFydCgpICE9IGluc0xlbmd0aCoyKSB7CisgICAgICAgICAgICByZXBvcnRFcnJvcigiUmVwbGFjZSBkaWRuJ3QgcmVzdWx0IGluIGNvcnJlY3Qgc2VsZWN0aW9uIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuZ2V0U2VsZWN0aW9uRW5kKCkgIT0gaW5zTGVuZ3RoKjIpIHsKKyAgICAgICAgICAgIHJlcG9ydEVycm9yKCJSZXBsYWNlIGRpZG4ndCByZXN1bHQgaW4gY29ycmVjdCBzZWxlY3Rpb24iKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZlRleHRQYW5lbC5nZXRUZXh0TGVuZ3RoKCkgIT0gaW5zTGVuZ3RoKjMpIHsKKyAgICAgICAgICAgIHJlcG9ydEVycm9yKCJ0ZXh0TGVuZ3RoIGlzIGluY29ycmVjdCIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlc3RvcmVPbGRUZXh0KSB7CisgICAgICAgICAgICBmVGV4dFBhbmVsLnNldFRleHQob2xkVGV4dCk7CisgICAgICAgICAgICBpZiAoZlRleHRQYW5lbC5nZXRTZWxlY3Rpb25TdGFydCgpICE9IG9sZFRleHQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICByZXBvcnRFcnJvcigic2V0VGV4dCBkaWRuJ3QgcmVzdWx0IGluIGNvcnJlY3Qgc2VsZWN0aW9uIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZlRleHRQYW5lbC5nZXRUZXh0TGVuZ3RoKCkgIT0gb2xkVGV4dC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJsZW5ndGggaW5jb3JyZWN0IGFmdGVyIHNldFRleHQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZkxpc3RlbmVyLmFsbG93QWxsKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGl0ZXJhdGlvbkNvdW50ID0gMDsKKyAgICBwdWJsaWMgdm9pZCBfdGVzdENvbW1hbmRMb2dDb250cm9sKCkgeworCisgICAgICAgIGZMaXN0ZW5lci5yZWZ1c2VBbGwoKTsKKyAgICAgICAgaXRlcmF0aW9uQ291bnQrKzsKKyAgICAgICAgYm9vbGVhbiBleHAgPSBmYWxzZTsKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuY2FuUmVkbygpIHx8IEJJR19DT01NQU5EX0xPR19TSVpFPT0wKSB7CisgICAgICAgICAgICBmTGlzdGVuZXIuZXhwZWN0RXZlbnQoVGV4dFBhbmVsRXZlbnQuVU5ET19TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgICAgIGV4cCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgLy90cnkgeworICAgICAgICAgICAgZlRleHRQYW5lbC5zZXRDb21tYW5kTG9nU2l6ZShCSUdfQ09NTUFORF9MT0dfU0laRSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChmVGV4dFBhbmVsLmNhblJlZG8oKSkgeworICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJjYW5SZWRvIGFmdGVyIHNldENvbW1hbmRMb2dTaXplIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmTGlzdGVuZXIuYXNzZXJ0Tm90RXhwZWN0aW5nRXZlbnRzKGl0ZXJhdGlvbkNvdW50LCBleHApOworICAgICAgICAvL30KKyAgICAgICAgLy9jYXRjaChFcnJvciBlKSB7CisgICAgICAgIC8vICAgIGxvZ01lc3NhZ2UoIml0ZXJhdGlvbkNvdW50PSIraXRlcmF0aW9uQ291bnQrIjsgIGV4cGV4dGluZz0iK2V4cCk7CisgICAgICAgIC8vICAgIHRocm93IGU7CisgICAgICAgIC8vfQorCisgICAgICAgIE1Db25zdFRleHQgaW5zVGV4dCA9IG5ldyBTdHlsZWRUZXh0KCI3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVApOworCisgICAgICAgIGZpbmFsIGludCBvcmlnTGVuZ3RoID0gZlRleHRQYW5lbC5nZXRUZXh0TGVuZ3RoKCk7CisgICAgICAgIGludCBzdGFydCA9IG9yaWdMZW5ndGggLyAzOworICAgICAgICAKKyAgICAgICAgZkxpc3RlbmVyLmFsbG93RXZlbnQoVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX1JBTkdFX0NIQU5HRUQpOworICAgICAgICBmTGlzdGVuZXIuYWxsb3dFdmVudChUZXh0UGFuZWxFdmVudC5TRUxFQ1RJT05fU1RZTEVTX0NIQU5HRUQpOworCisgICAgICAgIGZvciAoaW50IGk9c3RhcnQ7IGkgPCBCSUdfQ09NTUFORF9MT0dfU0laRStzdGFydDsgaSsrKSB7CisgICAgICAgICAgICBmTGlzdGVuZXIuZXhwZWN0RXZlbnQoVGV4dFBhbmVsRXZlbnQuVU5ET19TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgICAgIGZMaXN0ZW5lci5leHBlY3RFdmVudChUZXh0UGFuZWxFdmVudC5URVhUX0NIQU5HRUQpOworICAgICAgICAgICAgaWYgKGZUZXh0UGFuZWwuZ2V0U2VsZWN0aW9uU3RhcnQoKSAhPSBmVGV4dFBhbmVsLmdldFNlbGVjdGlvbkVuZCgpKSB7CisgICAgICAgICAgICAgICAgZkxpc3RlbmVyLmV4cGVjdEV2ZW50KFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9FTVBUWV9DSEFOR0VEKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZUZXh0UGFuZWwuaW5zZXJ0KGluc1RleHQsIGkpOworICAgICAgICAgICAgZkxpc3RlbmVyLmFzc2VydE5vdEV4cGVjdGluZ0V2ZW50cygpOworICAgICAgICB9CisKKyAgICAgICAgZkxpc3RlbmVyLmFsbG93RXZlbnQoVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX0VNUFRZX0NIQU5HRUQpOworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgQklHX0NPTU1BTkRfTE9HX1NJWkUtMTsgaSsrKSB7CisgICAgICAgICAgICBmTGlzdGVuZXIuZXhwZWN0RXZlbnQoVGV4dFBhbmVsRXZlbnQuVU5ET19TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgICAgIGZMaXN0ZW5lci5leHBlY3RFdmVudChUZXh0UGFuZWxFdmVudC5URVhUX0NIQU5HRUQpOworICAgICAgICAgICAgZlRleHRQYW5lbC51bmRvKCk7CisgICAgICAgICAgICBmTGlzdGVuZXIuYXNzZXJ0Tm90RXhwZWN0aW5nRXZlbnRzKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmVGV4dFBhbmVsLmNhblVuZG8oKSkgeworICAgICAgICAgICAgcmVwb3J0RXJyb3IoIkNvbW1hbmQgbG9nIGlzIHRvbyBzbWFsbCIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmTGlzdGVuZXIuYWxsb3dBbGwoKTsKKyAgICAgICAgZlRleHRQYW5lbC51bmRvKCk7CisgICAgICAgIGlmIChmVGV4dFBhbmVsLmNhblVuZG8oKSkgeworICAgICAgICAgICAgcmVwb3J0RXJyb3IoIkNvbW1hbmQgbG9nIGlzIHRvbyBsYXJnZSIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuZ2V0VGV4dExlbmd0aCgpICE9IG9yaWdMZW5ndGggKiBpbnNUZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICByZXBvcnRFcnJvcigiVGV4dCBsZW5ndGggd2FzIG5vdCByZXN0b3JlZCIpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgQklHX0NPTU1BTkRfTE9HX1NJWkU7IGkrKykgeworICAgICAgICAgICAgZlRleHRQYW5lbC5yZWRvKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZlRleHRQYW5lbC5nZXRUZXh0TGVuZ3RoKCkgIT0gb3JpZ0xlbmd0aCtCSUdfQ09NTUFORF9MT0dfU0laRSkgeworICAgICAgICAgICAgcmVwb3J0RXJyb3IoIlRleHQgbGVuZ3RoIHdhcyBub3QgcmVzdG9yZWQgYWZ0ZXIgcmVkbyIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuY2FuUmVkbygpKSB7CisgICAgICAgICAgICByZXBvcnRFcnJvcigiU2hvdWxkIG5vdCBiZSBhYmxlIHRvIHJlZG8iKTsKKyAgICAgICAgfQorCisgICAgICAgIGZUZXh0UGFuZWwudW5kbygpOworCisgICAgICAgIGZUZXh0UGFuZWwuc2V0Q29tbWFuZExvZ1NpemUoU01BTExfQ09NTUFORF9MT0dfU0laRSk7CisKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuY2FuUmVkbygpKSB7CisgICAgICAgICAgICByZXBvcnRFcnJvcigiY2FuUmVkbyBhZnRlciBzZXRDb21tYW5kTG9nU2l6ZShzbWFsbCkiKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IFNNQUxMX0NPTU1BTkRfTE9HX1NJWkU7IGkrKykgeworICAgICAgICAgICAgaWYgKCFmVGV4dFBhbmVsLmNhblVuZG8oKSkgeworICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJzaG91bGQgYmUgYWJsZSB0byB1bmRvIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmVGV4dFBhbmVsLnVuZG8oKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZlRleHRQYW5lbC5jYW5VbmRvKCkpIHsKKyAgICAgICAgICAgIHJlcG9ydEVycm9yKCJzaG91bGQgbm90IGJlIGFibGUgdG8gdW5kbyBhZnRlciBzZXRDb21tYW5kTG9nU2l6ZShzbWFsbCkiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZUZXh0UGFuZWwuY2FuUmVkbygpKSB7CisgICAgICAgICAgICByZXBvcnRFcnJvcigid2h5IGNhbid0IHRoaXMgcmVkbz8/PyIpOworICAgICAgICB9CisgICAgICAgIGZUZXh0UGFuZWwucmVkbygpOworCisgICAgICAgIGZUZXh0UGFuZWwuY2xlYXJDb21tYW5kTG9nKCk7CisKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuY2FuVW5kbygpIHx8IGZUZXh0UGFuZWwuY2FuUmVkbygpKSB7CisgICAgICAgICAgICByZXBvcnRFcnJvcigiQ29tbWFuZCBsb2cgd2Fzbid0IGNsZWFyZWQiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgY3V0LCBjb3B5LCBwYXN0ZSwgdW5kbywgcmVkbywgY2xlYXIsIGNhblVuZG8sIGNhblJlZG8uCisgICAgICogVGV4dCBtdXN0IGJlIGVkaXRhYmxlIHRvIHBhc3MgdGhpcyB0ZXN0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIF90ZXN0RWRpdE1lbnVPcGVyYXRpb25zKENsaXBib2FyZCBjbGlwYm9hcmQpIHsKKyAgICAgICAgCisgICAgICAgIGlmIChjbGlwYm9hcmQgIT0gbnVsbCkgeworICAgICAgICAgICAgLy8gdGVzdCBwYXN0ZSBhbmQgdW5kbyAvIHJlZG8KKyAgICAgICAgICAgIFRyYW5zZmVyYWJsZSB0ciA9IG5ldyBTdHJpbmdTZWxlY3Rpb24oU1RSSU5HX0NPTlRFTlQpOworICAgICAgICAgICAgY2xpcGJvYXJkLnNldENvbnRlbnRzKHRyLCBuZXcgQ2xpcGJvYXJkT3duZXIoKSB7CisgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgbG9zdE93bmVyc2hpcChDbGlwYm9hcmQgYywgVHJhbnNmZXJhYmxlIHQpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGlmICghZlRleHRQYW5lbC5jbGlwYm9hcmROb3RFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IoIk1UZXh0UGFuZWwgZG9lc24ndCByZWNvZ25pemUgc3RyaW5nIGNvbnRlbnQuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZUZXh0UGFuZWwuc2V0Q2FyZXRQb3NpdGlvbihmVGV4dFBhbmVsLmdldFNlbGVjdGlvblN0YXJ0KCkpOworICAgICAgICAgICAgaW50IG9sZExlbmd0aCA9IGZUZXh0UGFuZWwuZ2V0VGV4dExlbmd0aCgpOworICAgICAgICAgICAgZlRleHRQYW5lbC5wYXN0ZSgpOworICAgICAgICAgICAgaWYgKGZUZXh0UGFuZWwuZ2V0VGV4dExlbmd0aCgpICE9IG9sZExlbmd0aCArIFNUUklOR19DT05URU5ULmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IoIlRleHQgbGVuZ3RoIGlzIHdyb25nIGFmdGVyIHBhc3RlLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWZUZXh0UGFuZWwuY2FuVW5kbygpKSB7CisgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IoImNhblVuZG8gc2hvdWxkIGJlIHRydWUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZUZXh0UGFuZWwudW5kbygpOworICAgICAgICAgICAgaWYgKGZUZXh0UGFuZWwuZ2V0VGV4dExlbmd0aCgpICE9IG9sZExlbmd0aCkgeworICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJMZW5ndGggaXMgd3JvbmcgYWZ0ZXIgdW5kbyIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFmVGV4dFBhbmVsLmNhblJlZG8oKSkgeworICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJjYW5SZWRvIHNob3VsZCBiZSB0cnVlIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmVGV4dFBhbmVsLnJlZG8oKTsKKyAgICAgICAgICAgIGlmIChmVGV4dFBhbmVsLmdldFRleHRMZW5ndGgoKSAhPSBvbGRMZW5ndGggKyBTVFJJTkdfQ09OVEVOVC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIHJlcG9ydEVycm9yKCJUZXh0IGxlbmd0aCBpcyB3cm9uZyBhZnRlciByZWRvLiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaW50IG9yaWdMZW5ndGggPSBmVGV4dFBhbmVsLmdldFRleHRMZW5ndGgoKTsKKyAgICAgICAgZlRleHRQYW5lbC5zZWxlY3RBbGwoKTsKKyAgICAgICAgZlRleHRQYW5lbC5jbGVhcigpOworICAgICAgICBpZiAoZlRleHRQYW5lbC5nZXRUZXh0TGVuZ3RoKCkgIT0gMCkgeworICAgICAgICAgICAgcmVwb3J0RXJyb3IoIkxlbmd0aCBpcyBub256ZXJvIGFmdGVyIGNsZWFyIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFmVGV4dFBhbmVsLmNhblVuZG8oKSkgeworICAgICAgICAgICAgcmVwb3J0RXJyb3IoImNhblVuZG8gc2hvdWxkIGJlIHRydWUiKTsKKyAgICAgICAgfQorICAgICAgICBmVGV4dFBhbmVsLnVuZG8oKTsKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuZ2V0VGV4dExlbmd0aCgpICE9IG9yaWdMZW5ndGgpIHsKKyAgICAgICAgICAgIHJlcG9ydEVycm9yKCJPbGQgdGV4dCBub3QgcmVzdG9yZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChvcmlnTGVuZ3RoID4gMCkgeworCisgICAgICAgICAgICBmVGV4dFBhbmVsLnNlbGVjdCgwLCAxKTsKKyAgICAgICAgICAgIGZUZXh0UGFuZWwuY3V0KCk7CisgICAgICAgICAgICBpZiAoZlRleHRQYW5lbC5nZXRUZXh0TGVuZ3RoKCkgIT0gb3JpZ0xlbmd0aC0xKSB7CisgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IoIkxlbmd0aCB3cm9uZyBhZnRlciBjdXQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZUZXh0UGFuZWwucGFzdGUoKTsKKyAgICAgICAgICAgIGlmIChmVGV4dFBhbmVsLmdldFRleHRMZW5ndGgoKSAhPSBvcmlnTGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IoIkxlbmd0aCB3cm9uZyBhZnRlciBwYXN0ZSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZlRleHRQYW5lbC5zZWxlY3QoMCwgb3JpZ0xlbmd0aCk7CisgICAgICAgICAgICBmVGV4dFBhbmVsLmNvcHkoKTsKKyAgICAgICAgICAgIGZUZXh0UGFuZWwuc2V0Q2FyZXRQb3NpdGlvbigwKTsKKyAgICAgICAgICAgIGZUZXh0UGFuZWwucGFzdGUoKTsKKyAgICAgICAgICAgIGlmIChmVGV4dFBhbmVsLmdldFRleHRMZW5ndGgoKSAhPSAyKm9yaWdMZW5ndGgpIHsKKyAgICAgICAgICAgICAgICByZXBvcnRFcnJvcigiTGVuZ3RoIHdyb25nIGFmdGVyIHBhc3RlIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmVGV4dFBhbmVsLnVuZG8oKTsKKyAgICAgICAgICAgIGlmIChmVGV4dFBhbmVsLmdldFRleHRMZW5ndGgoKSAhPSBvcmlnTGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IoIkxlbmd0aCB3cm9uZyBhZnRlciB1bmRvIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgc2V0QW5kVGVzdE1vZEZsYWcoZmluYWwgaW50IGRlcHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIG1vZGlmaWVkKSB7CisKKyAgICAgICAgZlRleHRQYW5lbC5zZXRNb2RpZmllZChtb2RpZmllZCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGRlcHRoOyBpKyspIHsKKyAgICAgICAgICAgIGlmICghZlRleHRQYW5lbC5jYW5VbmRvKCkpIHsKKyAgICAgICAgICAgICAgICByZXBvcnRFcnJvcigiUGFuZWwgY2Fubm90IHVuZG8gYXQgdmFsaWQgZGVwdGguICBEZXB0aD0iICsgaSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmVGV4dFBhbmVsLnVuZG8oKTsKKyAgICAgICAgICAgIGZUZXh0UGFuZWwuc2V0TW9kaWZpZWQobW9kaWZpZWQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gY2hlY2sgdGhhdCBhbGwgbW9kIGZsYWdzIGFyZSBmYWxzZToKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuaXNNb2RpZmllZCgpICE9IG1vZGlmaWVkKSB7CisgICAgICAgICAgICByZXBvcnRFcnJvcigiaXNNb2RpZmllZCBpcyBub3QgY29ycmVjdCIpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgZGVwdGg7IGkrKykgeworICAgICAgICAgICAgZlRleHRQYW5lbC5yZWRvKCk7CisgICAgICAgICAgICBpZiAoZlRleHRQYW5lbC5pc01vZGlmaWVkKCkgIT0gbW9kaWZpZWQpIHsKKyAgICAgICAgICAgICAgICByZXBvcnRFcnJvcigiaXNNb2RpZmllZCBpcyBub3QgY29ycmVjdCIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTWFrZSA8Y29kZT5kZXB0aDwvY29kZT4gbW9kaWZpY2F0aW9ucyB0byB0aGUgdGV4dCBpbiB0ZXh0ZlRleHRQYW5lbC4KKyAgICAgKiBTZXQgdGhlIG1vZGlmaWVkIGZsYWcgb24gZWFjaCBvcGVyYXRpb24sIGFuZCB0aGVuIHJldHJpZXZlIGl0cworICAgICAqIHZhbHVlLiAgRmluYWxseSwgdW5kbyB0aGUgbW9kaWZpY2F0aW9ucy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBfdGVzdE1vZEZsYWcoZmluYWwgaW50IGRlcHRoKSB7CisKKyAgICAgICAgZmluYWwgaW50IG9sZExlbmd0aCA9IGZUZXh0UGFuZWwuZ2V0VGV4dExlbmd0aCgpOworCisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGRlcHRoOyBpKyspIHsKKyAgICAgICAgICAgIGZUZXh0UGFuZWwuaW5zZXJ0KE1PRF9URVhULCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIHNldEFuZFRlc3RNb2RGbGFnKGRlcHRoLCBmYWxzZSk7CisgICAgICAgIHNldEFuZFRlc3RNb2RGbGFnKGRlcHRoLCB0cnVlKTsKKworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBkZXB0aDsgaSsrKSB7CisgICAgICAgICAgICBmVGV4dFBhbmVsLnVuZG8oKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmVGV4dFBhbmVsLmdldFRleHRMZW5ndGgoKSAhPSBvbGRMZW5ndGgpIHsKKyAgICAgICAgICAgIHJlcG9ydEVycm9yKCJVbmRvIGRpZCBub3QgcmVzdG9yZSBvbGQgdGV4dC4iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgYXBwbHlDaGFyYWN0ZXJTdHlsZSgpIHsKKworICAgICAgICBTdHlsZU1vZGlmaWVyIHN0TW9kID0gY2hhck1vZHNbcmFuZEludChjaGFyTW9kcy5sZW5ndGgpXTsKKyAgICAgICAgZkxpc3RlbmVyLnJlZnVzZUFsbCgpOworICAgICAgICBmTGlzdGVuZXIuZXhwZWN0RXZlbnQoVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX1NUWUxFU19DSEFOR0VEKTsKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwuZ2V0U2VsZWN0aW9uU3RhcnQoKSAhPSBmVGV4dFBhbmVsLmdldFNlbGVjdGlvbkVuZCgpKSB7CisgICAgICAgICAgICBmTGlzdGVuZXIuZXhwZWN0RXZlbnQoVGV4dFBhbmVsRXZlbnQuVEVYVF9DSEFOR0VEKTsKKyAgICAgICAgICAgIGZMaXN0ZW5lci5hbGxvd0V2ZW50KFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9SQU5HRV9DSEFOR0VEKTsKKyAgICAgICAgfQorICAgICAgICBmTGlzdGVuZXIuYWxsb3dFdmVudChUZXh0UGFuZWxFdmVudC5VTkRPX1NUQVRFX0NIQU5HRUQpOworICAgICAgICBmVGV4dFBhbmVsLm1vZGlmeUNoYXJhY3RlclN0eWxlT25TZWxlY3Rpb24oc3RNb2QpOworICAgICAgICBmTGlzdGVuZXIuYXNzZXJ0Tm90RXhwZWN0aW5nRXZlbnRzKCk7CisgICAgICAgIGZMaXN0ZW5lci5hbGxvd0FsbCgpOworICAgIH0KKworCisgICAgdm9pZCBhcHBseVBhcmFncmFwaFN0eWxlKCkgeworCisgICAgICAgIGZMaXN0ZW5lci5yZWZ1c2VBbGwoKTsKKyAgICAgICAgZkxpc3RlbmVyLmV4cGVjdEV2ZW50KFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9TVFlMRVNfQ0hBTkdFRCk7CisgICAgICAgIGZMaXN0ZW5lci5leHBlY3RFdmVudChUZXh0UGFuZWxFdmVudC5URVhUX0NIQU5HRUQpOworICAgICAgICBmTGlzdGVuZXIuYWxsb3dFdmVudChUZXh0UGFuZWxFdmVudC5VTkRPX1NUQVRFX0NIQU5HRUQpOworICAgICAgICBmTGlzdGVuZXIuYWxsb3dFdmVudChUZXh0UGFuZWxFdmVudC5TRUxFQ1RJT05fUkFOR0VfQ0hBTkdFRCk7CisgICAgICAgIFN0eWxlTW9kaWZpZXIgc3RNb2QgPSBwYXJhTW9kc1tyYW5kSW50KHBhcmFNb2RzLmxlbmd0aCldOworICAgICAgICBmVGV4dFBhbmVsLm1vZGlmeVBhcmFncmFwaFN0eWxlT25TZWxlY3Rpb24oc3RNb2QpOworICAgICAgICBmTGlzdGVuZXIuYXNzZXJ0Tm90RXhwZWN0aW5nRXZlbnRzKCk7CisgICAgICAgIGZMaXN0ZW5lci5hbGxvd0FsbCgpOworICAgIH0KKworICAgIHZvaWQgYXBwbHlLZXlSZW1hcCgpIHsKKworICAgICAgICBmTGlzdGVuZXIucmVmdXNlQWxsKCk7CisgICAgICAgIGZMaXN0ZW5lci5leHBlY3RFdmVudChUZXh0UGFuZWxFdmVudC5LRVlSRU1BUF9DSEFOR0VEKTsKKyAgICAgICAgaW50IG9wID0gcmFuZEludCg1KTsKKyAgICAgICAgc3dpdGNoIChvcCkgeworCisgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgZlRleHRQYW5lbC5zZXRLZXlSZW1hcChLZXlSZW1hcC5nZXRJZGVudGl0eVJlbWFwKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgZlRleHRQYW5lbC5zZXRLZXlSZW1hcChLZXlSZW1hcC5nZXRBcmFiaWNUcmFuc2xpdGVyYXRpb24oKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgMjoKKyAgICAgICAgICAgICAgICBmVGV4dFBhbmVsLnNldEtleVJlbWFwKEtleVJlbWFwLmdldEhlYnJld1RyYW5zbGl0ZXJhdGlvbigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAgIGZUZXh0UGFuZWwuc2V0S2V5UmVtYXAoS2V5UmVtYXAuZ2V0SXNyYWVsTmlrdWQoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICAvL2ZUZXh0UGFuZWwuc2V0S2V5UmVtYXAoS2V5UmVtYXAuZ2V0VGhhaUtldG1hbmVlKCkpOworICAgICAgICAgICAgICAgIGZUZXh0UGFuZWwuc2V0S2V5UmVtYXAoS2V5UmVtYXAuZ2V0SXNyYWVsTmlrdWQoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmVwb3J0RXJyb3IoIkludmFsaWQgb3BlcmF0aW9uISIpOworICAgICAgICB9CisgICAgICAgIGZMaXN0ZW5lci5hc3NlcnROb3RFeHBlY3RpbmdFdmVudHMoKTsKKyAgICAgICAgZkxpc3RlbmVyLmFsbG93QWxsKCk7CisgICAgfQorCisgICAgdm9pZCByZXNpemVGcmFtZShGcmFtZSBmcmFtZSkgeworCisgICAgICAgIGZMaXN0ZW5lci5yZWZ1c2VBbGwoKTsKKyAgICAgICAgZkxpc3RlbmVyLmFsbG93RXZlbnQoVGV4dFBhbmVsRXZlbnQuRk9STUFUX1dJRFRIX0NIQU5HRUQpOworICAgICAgICBpbnQgd2QgPSByYW5kSW50KDUwLCAxMDAwKTsKKyAgICAgICAgaW50IGh0ID0gcmFuZEludCgyMCwgODAwKTsKKworICAgICAgICBmcmFtZS5zZXRTaXplKHdkLCBodCk7CisgICAgICAgIGZMaXN0ZW5lci5hbGxvd0FsbCgpOworICAgIH0KKworICAgIHZvaWQgc2VsZWN0VGV4dCgpIHsKKworICAgICAgICBpbnQgc2VsU3RhcnQgPSByYW5kSW50KC0xMCwgZlRleHRQYW5lbC5nZXRUZXh0TGVuZ3RoKCkpOworICAgICAgICBpbnQgc2VsTGltaXQgPSByYW5kSW50KDAsIGZUZXh0UGFuZWwuZ2V0VGV4dExlbmd0aCgpICsgMTApOworICAgICAgICBfdGVzdFNlbGVjdGlvbihTRUxFQ1QsIHNlbFN0YXJ0LCBzZWxMaW1pdCk7CisgICAgfQorCisgICAgdm9pZCB1bmRvUmVkbygpIHsKKworICAgICAgICBmaW5hbCBpbnQgb3BDb3VudCA9IHJhbmRJbnQoLTEwLCAxNSk7CisKKyAgICAgICAgZm9yIChpbnQgaT1vcENvdW50OyBpIDw9IDA7IGkrKykgeworICAgICAgICAgICAgZlRleHRQYW5lbC5yZWRvKCk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgb3BDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBmVGV4dFBhbmVsLnVuZG8oKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIHR5cGVLZXlzKCkgeworCisgICAgICAgIGZpbmFsIGludCBrZXlDb3VudCA9IHJhbmRJbnQoMSwgMTAwKTsKKyAgICAgICAgVGV4dFBhbmVsIHRleHRQYW5lbCA9IChUZXh0UGFuZWwpIGZUZXh0UGFuZWw7CisgICAgICAgIAorICAgICAgICBLZXlFdmVudEZvcndhcmRlciBmb3J3YXJkZXIgPSBuZXcgS2V5RXZlbnRGb3J3YXJkZXIodGV4dFBhbmVsKTsKKyAgICAgICAgCisgICAgICAgIGZMaXN0ZW5lci5yZWZ1c2VBbGwoKTsKKyAgICAgICAgZkxpc3RlbmVyLmFsbG93RXZlbnQoVGV4dFBhbmVsRXZlbnQuVU5ET19TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgCisgICAgICAgIGlmIChmVGV4dFBhbmVsLmdldFNlbGVjdGlvblN0YXJ0KCkgIT0gZlRleHRQYW5lbC5nZXRTZWxlY3Rpb25FbmQoKSkgeworICAgICAgICAgICAgZkxpc3RlbmVyLmV4cGVjdEV2ZW50KFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9FTVBUWV9DSEFOR0VEKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwga2V5Q291bnQ7IGkrKykgeworICAgICAgICAgICAgY2hhciB0eXBlZENoYXIgPSBUWVBFRF9DSEFSU1tyYW5kSW50KFRZUEVEX0NIQVJTLmxlbmd0aCldOworICAgICAgICAgICAgS2V5RXZlbnQgZXZlbnQgPSBuZXcgS2V5RXZlbnQodGV4dFBhbmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5RXZlbnQuS0VZX1RZUEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXlFdmVudC5WS19VTkRFRklORUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlZENoYXIpOworICAgICAgICAgICAgaWYgKHR5cGVkQ2hhciA9PSA4IHx8IHR5cGVkQ2hhciA9PSAweDdmKSB7CisgICAgICAgICAgICAgICAgZkxpc3RlbmVyLmFsbG93RXZlbnQoVGV4dFBhbmVsRXZlbnQuVEVYVF9DSEFOR0VEKTsKKyAgICAgICAgICAgICAgICBmTGlzdGVuZXIuYWxsb3dFdmVudChUZXh0UGFuZWxFdmVudC5TRUxFQ1RJT05fUkFOR0VfQ0hBTkdFRCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBmTGlzdGVuZXIuZXhwZWN0RXZlbnQoVGV4dFBhbmVsRXZlbnQuVEVYVF9DSEFOR0VEKTsKKyAgICAgICAgICAgICAgICBmTGlzdGVuZXIuZXhwZWN0RXZlbnQoVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX1JBTkdFX0NIQU5HRUQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yd2FyZGVyLmhhbmRsZUtleUV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgIC8vdHJ5IHsKKyAgICAgICAgICAgICAgICBmTGlzdGVuZXIuYXNzZXJ0Tm90RXhwZWN0aW5nRXZlbnRzKGksIGZhbHNlKTsKKyAgICAgICAgICAgIC8vfQorICAgICAgICAgICAgLy9jYXRjaChFcnJvciBlKSB7CisgICAgICAgICAgICAvLyAgICBsb2dNZXNzYWdlKCJpPSIraSsiOyB0eXBlZENoYXI9IitJbnRlZ2VyLnRvSGV4U3RyaW5nKHR5cGVkQ2hhcikpOworICAgICAgICAgICAgLy8gICAgdGhyb3cgZTsKKyAgICAgICAgICAgIC8vfQorICAgICAgICB9CisgICAgICAgIGZMaXN0ZW5lci5hbGxvd0FsbCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXN0cy9UeXBpbmdQZXJmVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGVzdHMvVHlwaW5nUGVyZlRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iN2U1YTE5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGVzdHMvVHlwaW5nUGVyZlRlc3QuamF2YQpAQCAtMCwwICsxLDI0MiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogVHlwaW5nUGVyZlRlc3QuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMC8wNC8yMiAxNzowODo0NiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRlc3RzOworCitpbXBvcnQgamF2YS5hd3QuQnV0dG9uOworaW1wb3J0IGphdmEuYXd0LkdyaWRMYXlvdXQ7CitpbXBvcnQgamF2YS5hd3QuRnJhbWU7CitpbXBvcnQgamF2YS5hd3QuVG9vbGtpdDsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFjdGlvbkxpc3RlbmVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LktleUV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0FkYXB0ZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93RXZlbnQ7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworaW1wb3J0IGphdmEudGV4dC5EYXRlRm9ybWF0OworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuS2V5RXZlbnRGb3J3YXJkZXI7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuYXd0dWkuVGV4dEZyYW1lOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5kZW1vLkVkaXREZW1vOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuZGVtby5UZXh0RG9jdW1lbnQ7CisKK3B1YmxpYyBjbGFzcyBUeXBpbmdQZXJmVGVzdCBpbXBsZW1lbnRzIEFjdGlvbkxpc3RlbmVyIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBUZXh0RnJhbWUgZlRleHRGcmFtZTsKKyAgICBwcml2YXRlIEtleUV2ZW50Rm9yd2FyZGVyIGZLZXlFdmVudEZvcndhcmRlcjsKKyAgICBwcml2YXRlIFByaW50V3JpdGVyIGZPdXQ7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgZmdBdFN0YXJ0Q29tbWFuZCA9ICJJbnNlcnQgYXQgc3RhcnQiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBmZ0F0RW5kQ29tbWFuZCA9ICJJbnNlcnQgYXQgZW5kIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgZmdGd2REZWxldGUgPSAiRm9yd2FyZCBkZWxldGUiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBmZ0JhY2tzcGFjZSA9ICJCYWNrc3BhY2UiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBmZ0F0Q3VycmVudFBvc0NvbW1hbmQgPSAiSW5zZXJ0IGF0IGN1cnJlbnQgcG9zaXRpb24iOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBmZ0xvdHNPZlRleHRDb21tYW5kID0gIkluc2VydCBhIGxvdCBvZiB0ZXh0IjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBVU0FHRSA9ICJVc2FnZTogamF2YSBjb20uaWJtLnJpY2h0ZXh0LnRlc3RzLlR5cGluZ1BlcmZUZXN0IFtmaWxlXSBbLWluc2VydGlvblRleHQgdGV4dF0iOworICAgIHByaXZhdGUgY2hhcltdIGZJbnNUZXh0OworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIElPRXhjZXB0aW9uIHsKKworICAgICAgICBPdXRwdXRTdHJlYW0gb3V0U3RyZWFtID0gbnVsbDsKKyAgICAgICAgUHJpbnRXcml0ZXIgd3JpdGVyID0gbmV3IFByaW50V3JpdGVyKFN5c3RlbS5vdXQpOworCisgICAgICAgIE1Db25zdFRleHQgdGV4dCA9IERlY2xhcmF0aW9uLmZnRGVjbGFyYXRpb247CisgICAgICAgIGNoYXJbXSBpbnNUZXh0ID0gIlRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBkb2cuIFRoZSBlbmQuICIudG9DaGFyQXJyYXkoKTsKKyAgICAgICAgCisgICAgICAgIGludCBpbmRleCA9IDA7CisgICAgICAgIHdoaWxlIChpbmRleCA8IGFyZ3MubGVuZ3RoKSB7CisgICAgICAgICAgICBpZiAoYXJnc1tpbmRleF0uZXF1YWxzKCItaW5zZXJ0aW9uVGV4dCIpKSB7CisgICAgICAgICAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID09ICsraW5kZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFVTQUdFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaW5zVGV4dCA9IGFyZ3NbaW5kZXgrK10udG9DaGFyQXJyYXkoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCB0cnkgTUNvbnN0VGV4dCBmaXJzdCwgdGhlbiBwbGFpbiB0ZXh0LgorICAgICAgICAgICAgICAgIFRleHREb2N1bWVudCBkb2MgPSBFZGl0RGVtby5nZXREb2N1bWVudEZyb21GaWxlKG5ldyBGaWxlKGFyZ3NbaW5kZXgrK10pKTsKKyAgICAgICAgICAgICAgICBpZiAoZG9jID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJDb3VsZG4ndCBvcGVuIGZpbGUgIithcmdzW2luZGV4LTFdKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGV4dCA9IGRvYy5nZXRUZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChpbmRleCAhPSBhcmdzLmxlbmd0aCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFVTQUdFKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbmV3IFR5cGluZ1BlcmZUZXN0KHdyaXRlciwgdGV4dCwgaW5zVGV4dCk7CisgICAgfQorCisgICAgcHVibGljIFR5cGluZ1BlcmZUZXN0KFByaW50V3JpdGVyIG91dCwgTUNvbnN0VGV4dCB0ZXh0LCBjaGFyW10gaW5zVGV4dCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKworICAgICAgICBmSW5zVGV4dCA9IGluc1RleHQ7CisgICAgICAgIGZUZXh0RnJhbWUgPSBuZXcgVGV4dEZyYW1lKHRleHQsICIiLCBudWxsKTsKKyAgICAgICAgVGV4dFBhbmVsIHRleHRQYW5lbCA9IChUZXh0UGFuZWwpIGZUZXh0RnJhbWUuZ2V0VGV4dFBhbmVsKCk7CisgICAgICAgIGZLZXlFdmVudEZvcndhcmRlciA9IG5ldyBLZXlFdmVudEZvcndhcmRlcih0ZXh0UGFuZWwpOworICAgICAgICBmT3V0ID0gb3V0OworCisgICAgICAgIERhdGVGb3JtYXQgZGYgPSBEYXRlRm9ybWF0LmdldERhdGVUaW1lSW5zdGFuY2UoKTsKKyAgICAgICAgb3V0LnByaW50bG4oIlRlc3QgZGF0ZTogIiArIGRmLmZvcm1hdChuZXcgRGF0ZSgpKSk7CisKKyAgICAgICAgZlRleHRGcmFtZS5zZXRTaXplKDUwMCwgNzAwKTsKKyAgICAgICAgZlRleHRGcmFtZS5zaG93KCk7CisKKyAgICAgICAgRnJhbWUgZiA9IG5ldyBGcmFtZSgiVHlwaW5nIFBlcmYgVGVzdCIpOworICAgICAgICBmLnNldExheW91dChuZXcgR3JpZExheW91dCgwLCAxKSk7CisgICAgICAgIEJ1dHRvbiBiOworLyoKKyAgICAgICAgYiA9IG5ldyBCdXR0b24oZmdBdFN0YXJ0Q21kKTsKKyAgICAgICAgYi5hZGRBY3Rpb25MaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgZi5hZGQoYik7CisKKyAgICAgICAgYiA9IG5ldyBCdXR0b24oZmdBdEVuZENtZCk7CisgICAgICAgIGIuYWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7CisgICAgICAgIGYuYWRkKGIpOworKi8KKyAgICAgICAgYiA9IG5ldyBCdXR0b24oZmdBdEN1cnJlbnRQb3NDb21tYW5kKTsKKyAgICAgICAgYi5hZGRBY3Rpb25MaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgZi5hZGQoYik7CisKKyAgICAgICAgYiA9IG5ldyBCdXR0b24oZmdMb3RzT2ZUZXh0Q29tbWFuZCk7CisgICAgICAgIGIuYWRkQWN0aW9uTGlzdGVuZXIodGhpcyk7CisgICAgICAgIGYuYWRkKGIpOworCisgICAgICAgIGIgPSBuZXcgQnV0dG9uKGZnRndkRGVsZXRlKTsKKyAgICAgICAgYi5hZGRBY3Rpb25MaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgZi5hZGQoYik7CisKKyAgICAgICAgYiA9IG5ldyBCdXR0b24oZmdCYWNrc3BhY2UpOworICAgICAgICBiLmFkZEFjdGlvbkxpc3RlbmVyKHRoaXMpOworICAgICAgICBmLmFkZChiKTsKKworICAgICAgICBmLmRvTGF5b3V0KCk7CisgICAgICAgIFdpbmRvd0FkYXB0ZXIgY2xvc2VyID0gbmV3IFdpbmRvd0FkYXB0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUpIHsKKyAgICAgICAgICAgICAgICBmT3V0LmNsb3NlKCk7CisgICAgICAgICAgICAgICAgU3lzdGVtLmV4aXQoMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBmLmFkZFdpbmRvd0xpc3RlbmVyKGNsb3Nlcik7CisgICAgICAgIGZUZXh0RnJhbWUuYWRkV2luZG93TGlzdGVuZXIoY2xvc2VyKTsKKyAgICAgICAgCisgICAgICAgIGYuc2V0U2l6ZSgyMDAsIDgwKTsKKyAgICAgICAgZi5zaG93KCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGV2dCkgeworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAoZXZ0LmdldEFjdGlvbkNvbW1hbmQoKS5lcXVhbHMoZmdBdEN1cnJlbnRQb3NDb21tYW5kKSkgeworCisgICAgICAgICAgICAgICAgaW5zZXJ0QXRDdXJyZW50UG9zKDEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoZXZ0LmdldEFjdGlvbkNvbW1hbmQoKS5lcXVhbHMoZmdMb3RzT2ZUZXh0Q29tbWFuZCkpIHsKKworICAgICAgICAgICAgICAgIGluc2VydEF0Q3VycmVudFBvcyg4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGV2dC5nZXRBY3Rpb25Db21tYW5kKCkuZXF1YWxzKGZnRndkRGVsZXRlKSkgeworCisgICAgICAgICAgICAgICAgZm9yd2FyZERlbGV0ZSgxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGV2dC5nZXRBY3Rpb25Db21tYW5kKCkuZXF1YWxzKGZnQmFja3NwYWNlKSkgeworCisgICAgICAgICAgICAgICAgYmFja3NwYWNlKDEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhdGNoKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ2F1Z2h0IGV4Y2VwdGlvbjogIiArIGUpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGluc2VydEF0Q3VycmVudFBvcyhmaW5hbCBpbnQgdGltZXMpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisKKyAgICAgICAgZlRleHRGcmFtZS50b0Zyb250KCk7CisKKyAgICAgICAgU3lzdGVtLmdjKCk7CisKKyAgICAgICAgbG9uZyBzdGFydFRpbWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKworICAgICAgICBmb3IgKGludCB0PTA7IHQgPCB0aW1lczsgdCsrKSB7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBmSW5zVGV4dC5sZW5ndGg7IGkrKykgeworCisgICAgICAgICAgICAgICAgS2V5RXZlbnQgZXZlbnQgPSBuZXcgS2V5RXZlbnQoZlRleHRGcmFtZSwgS2V5RXZlbnQuS0VZX1RZUEVELCAwLCAwLCAwLCBmSW5zVGV4dFtpXSk7CisgICAgICAgICAgICAgICAgZktleUV2ZW50Rm9yd2FyZGVyLmhhbmRsZUtleUV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGxvbmcgdGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIC0gc3RhcnRUaW1lOworCisgICAgICAgIGZPdXQucHJpbnRsbigiVG90YWwgdGltZTogIiArIHRpbWUpOworICAgICAgICBmT3V0LnByaW50bG4oIk1pbGxpcyBwZXIgY2hhcmFjdGVyOiAiICsgKHRpbWUgLyAoZkluc1RleHQubGVuZ3RoKnRpbWVzKSkpOworICAgICAgICBmT3V0LmZsdXNoKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGZvcndhcmREZWxldGUoZmluYWwgaW50IHRpbWVzKSB0aHJvd3MgSU9FeGNlcHRpb24geworCisgICAgICAgIFN5c3RlbS5nYygpOworCisgICAgICAgIGxvbmcgc3RhcnRUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisKKyAgICAgICAgZm9yIChpbnQgdD0wOyB0IDwgdGltZXM7IHQrKykgeworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgZkluc1RleHQubGVuZ3RoOyBpKyspIHsKKworICAgICAgICAgICAgICAgIEtleUV2ZW50IGV2ZW50ID0gbmV3IEtleUV2ZW50KGZUZXh0RnJhbWUsIDAsIDAsIDAsIEtleUV2ZW50LlZLX0RFTEVURSwgJ1x1MDBGRicpOworICAgICAgICAgICAgICAgIGZLZXlFdmVudEZvcndhcmRlci5oYW5kbGVLZXlFdmVudChldmVudCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsb25nIHRpbWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSAtIHN0YXJ0VGltZTsKKworICAgICAgICBmT3V0LnByaW50bG4oIlRvdGFsIHRpbWU6ICIgKyB0aW1lKTsKKyAgICAgICAgZk91dC5wcmludGxuKCJNaWxsaXMgcGVyIGNoYXJhY3RlcjogIiArICh0aW1lIC8gKGZJbnNUZXh0Lmxlbmd0aCp0aW1lcykpKTsKKyAgICAgICAgZk91dC5mbHVzaCgpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBiYWNrc3BhY2UoZmluYWwgaW50IHRpbWVzKSB0aHJvd3MgSU9FeGNlcHRpb24geworCisgICAgICAgIFN5c3RlbS5nYygpOworCisgICAgICAgIGxvbmcgc3RhcnRUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisKKyAgICAgICAgZm9yIChpbnQgdD0wOyB0IDwgdGltZXM7IHQrKykgeworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgZkluc1RleHQubGVuZ3RoOyBpKyspIHsKKworICAgICAgICAgICAgICAgIEtleUV2ZW50IGV2ZW50ID0gbmV3IEtleUV2ZW50KGZUZXh0RnJhbWUsIDAsIDAsIDAsIEtleUV2ZW50LlZLX0JBQ0tfU1BBQ0UsICdcdTAwMTAnKTsKKyAgICAgICAgICAgICAgICBmS2V5RXZlbnRGb3J3YXJkZXIuaGFuZGxlS2V5RXZlbnQoZXZlbnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbG9uZyB0aW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgLSBzdGFydFRpbWU7CisKKyAgICAgICAgZk91dC5wcmludGxuKCJUb3RhbCB0aW1lOiAiICsgdGltZSk7CisgICAgICAgIGZPdXQucHJpbnRsbigiTWlsbGlzIHBlciBjaGFyYWN0ZXI6ICIgKyAodGltZSAvIChmSW5zVGV4dC5sZW5ndGgqdGltZXMpKSk7CisgICAgICAgIGZPdXQuZmx1c2goKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0YXBwcy9BcHBDbG9zZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRhcHBzL0FwcENsb3Nlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjYzZDdhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0YXBwcy9BcHBDbG9zZXIuamF2YQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBBcHBDbG9zZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0ODo1MSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRhcHBzOworCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93QWRhcHRlcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dFdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5GcmFtZTsKK2ltcG9ydCBqYXZhLmF3dC5XaW5kb3c7CisKK2NsYXNzIEFwcENsb3NlciB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgaW50IGZDb3VudCA9IDA7CisKKyAgICBwcml2YXRlIFdpbmRvd0FkYXB0ZXIgZkFkYXB0ZXIgPSBuZXcgV2luZG93QWRhcHRlcigpIHsKKworICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dDbG9zaW5nKFdpbmRvd0V2ZW50IGUpIHsKKyAgICAgICAgICAgIC0tZkNvdW50OworICAgICAgICAgICAgaWYgKGZDb3VudCA9PSAwKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLmV4aXQoMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBXaW5kb3cgdyA9IGUuZ2V0V2luZG93KCk7CisgICAgICAgICAgICB3LnNldFZpc2libGUoZmFsc2UpOworICAgICAgICAgICAgdy5kaXNwb3NlKCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHVibGljIHZvaWQgbGlzdGVuVG9GcmFtZShGcmFtZSBmcmFtZSkgeworCisgICAgICAgICsrZkNvdW50OworICAgICAgICBmcmFtZS5hZGRXaW5kb3dMaXN0ZW5lcihmQWRhcHRlcik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGFwcHMvQmlkaURlbW8uamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRhcHBzL0JpZGlEZW1vLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2NhNWQwNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRhcHBzL0JpZGlEZW1vLmphdmEKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogQmlkaURlbW8uamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0ODo1MSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRhcHBzOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlZFRleHQ7CitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuYXd0dWkuVGV4dEZyYW1lOworCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93QWRhcHRlcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dFdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5Ub29sa2l0OworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEubmV0LlVSTDsKK2ltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK3B1YmxpYyBjbGFzcyBCaWRpRGVtbyB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEFwcENsb3NlciBmZ0xpc3RlbmVyID0gbmV3IEFwcENsb3NlcigpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJVTkRMRV9OQU1FID0gInRleHRhcHBzLnJlc291cmNlcy5TYW1wbGUiOworICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKworICAgICAgICBTdHJpbmcgZG9jTmFtZTsKKyAgICAgICAgCisgICAgICAgIGlmIChhcmdzLmxlbmd0aCA9PSAwKSB7CisgICAgICAgICAgICBkb2NOYW1lID0gImRlZmF1bHQiOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZG9jTmFtZSA9IGFyZ3NbMF07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG9wZW5UZXh0KGRvY05hbWUpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgb3BlblRleHQoU3RyaW5nIGRvY05hbWUpIHsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgUmVzb3VyY2VCdW5kbGUgYnVuZGxlID0gUmVzb3VyY2VCdW5kbGUuZ2V0QnVuZGxlKEJVTkRMRV9OQU1FKTsKKworICAgICAgICAgICAgT2JqZWN0IGRvY3VtZW50ID0gYnVuZGxlLmdldE9iamVjdChkb2NOYW1lKyIuc2FtcGxlIik7CisgICAgICAgICAgICBNQ29uc3RUZXh0IHRleHQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChkb2N1bWVudCBpbnN0YW5jZW9mIFN0cmluZykgeworICAgICAgICAgICAgICAgIHRleHQgPSBuZXcgU3R5bGVkVGV4dCgoU3RyaW5nKWRvY3VtZW50LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgVVJMIHVybCA9IChVUkwpIGRvY3VtZW50OworICAgICAgICAgICAgICAgIE9iamVjdElucHV0U3RyZWFtIGluID0gbmV3IE9iamVjdElucHV0U3RyZWFtKHVybC5vcGVuU3RyZWFtKCkpOworICAgICAgICAgICAgICAgIHRleHQgPSAoTUNvbnN0VGV4dCkgaW4ucmVhZE9iamVjdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IGJ1bmRsZS5nZXRTdHJpbmcoZG9jTmFtZSsiLm5hbWUiKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbWFrZUZyYW1lKHRleHQsIG5hbWUpOworICAgICAgICB9CisgICAgICAgIGNhdGNoKFRocm93YWJsZSB0KSB7CisgICAgICAgICAgICB0LnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBtYWtlRnJhbWUoTUNvbnN0VGV4dCB0ZXh0LCBTdHJpbmcgdGl0bGUpIHsKKworICAgICAgICBUZXh0RnJhbWUgZnJhbWUgPSBuZXcgVGV4dEZyYW1lKHRleHQsIHRpdGxlLCAKKyAgICAgICAgICAgICAgICBUb29sa2l0LmdldERlZmF1bHRUb29sa2l0KCkuZ2V0U3lzdGVtQ2xpcGJvYXJkKCkpOworICAgICAgICBmcmFtZS5zZXRTaXplKDU1MCwgNzAwKTsKKyAgICAgICAgZnJhbWUuc2hvdygpOworICAgICAgICBmZ0xpc3RlbmVyLmxpc3RlblRvRnJhbWUoZnJhbWUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRhcHBzL0ZpbGVVdGlscy5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGFwcHMvRmlsZVV0aWxzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMGY3OGJlOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRhcHBzL0ZpbGVVdGlscy5qYXZhCkBAIC0wLDAgKzEsMTMwIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBGaWxlVXRpbHMuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo0ODo1MSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRhcHBzOworCitpbXBvcnQgamF2YS5hd3QuRmlsZURpYWxvZzsKK2ltcG9ydCBqYXZhLmF3dC5GcmFtZTsKK2ltcG9ydCBqYXZhLmlvLio7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTVRleHQ7CisKK3B1YmxpYyBjbGFzcyBGaWxlVXRpbHMgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAvKioKKyAgICAgKiBQcmVzZW50IHRoZSB1c2VyIHdpdGggYSBmaWxlIGRpYWxvZywgYW5kIHJlcGxhY2UKKyAgICAgKiBkZXN0IHdpdGggdGhlIE1UZXh0IGluIHRoZSBzZWxlY3RlZCBmaWxlLCBhbmQgcmV0dXJuCisgICAgICogdGhlIGZpbGUgb2JqY3QuICBJZiBhbnkgZXJyb3JzIG9jY3VyLCByZXR1cm4gbnVsbCBhbmQKKyAgICAgKiBkbyBub3QgbW9kaWZ5IGRlc3QuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBGaWxlIHVzZXJMb2FkTVRleHQoU3RyaW5nIHRpdGxlLCBNVGV4dCBkZXN0LCBGcmFtZSBvd25lcikgeworCisgICAgICAgIEZpbGVEaWFsb2cgZGlhbG9nID0gbmV3IEZpbGVEaWFsb2cob3duZXIsIHRpdGxlLCBGaWxlRGlhbG9nLkxPQUQpOworICAgICAgICBkaWFsb2cuc2hvdygpOworICAgICAgICBTdHJpbmcgZmlsZVN0ciA9IGRpYWxvZy5nZXRGaWxlKCk7CisgICAgICAgIFN0cmluZyBkaXJTdHIgPSBkaWFsb2cuZ2V0RGlyZWN0b3J5KCk7CisKKyAgICAgICAgaWYgKGZpbGVTdHIgIT0gbnVsbCkgeworICAgICAgICAgICAgRmlsZSBydmFsID0gbmV3IEZpbGUoZGlyU3RyLCBmaWxlU3RyKTsKKyAgICAgICAgICAgIE1Db25zdFRleHQgc3JjID0gbG9hZE1UZXh0KHJ2YWwpOworICAgICAgICAgICAgaWYgKHNyYyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgZGVzdC5yZXBsYWNlQWxsKHNyYyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJ2YWw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIE1UZXh0IHNlcmlhbGl6ZWQgaW4gdGhlIGdpdmVuIGZpbGUuCisgICAgICogSW4gY2FzZSBvZiBhbiBlcnJvciByZXR1cm4gbnVsbC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIE1Db25zdFRleHQgbG9hZE1UZXh0KEZpbGUgZmlsZSkgeworCisgICAgICAgIFRocm93YWJsZSBlcnJvcjsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgRmlsZUlucHV0U3RyZWFtIGluU3RyZWFtID0gbmV3IEZpbGVJbnB1dFN0cmVhbShmaWxlKTsKKyAgICAgICAgICAgIE9iamVjdElucHV0U3RyZWFtIG9ialN0cmVhbSA9IG5ldyBPYmplY3RJbnB1dFN0cmVhbShpblN0cmVhbSk7CisKKyAgICAgICAgICAgIE1Db25zdFRleHQgdGV4dCA9IChNQ29uc3RUZXh0KSBvYmpTdHJlYW0ucmVhZE9iamVjdCgpOworICAgICAgICAgICAgaW5TdHJlYW0uY2xvc2UoKTsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0OworICAgICAgICB9CisgICAgICAgIGNhdGNoKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChDbGFzc0Nhc3RFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisKKyAgICAgICAgZXJyb3IucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIFByb21wdCB0aGUgdXNlciBmb3IgdGhlIGZpbGUgaWYgZmlsZSBpcyBudWxsLiAgVGhlbiBzYXZlIHRoZQorICAgICAqIHRleHQgaW4gdGhlIGZpbGUsIGlmIGFueS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEZpbGUgdXNlclNhdmVNVGV4dChGaWxlIGZpbGUsIFN0cmluZyB0aXRsZSwgTUNvbnN0VGV4dCB0ZXh0LCBGcmFtZSBvd25lcikgeworCisgICAgICAgIGlmIChmaWxlID09IG51bGwpIHsKKworICAgICAgICAgICAgRmlsZURpYWxvZyBkaWFsb2cgPSBuZXcgRmlsZURpYWxvZyhvd25lciwgdGl0bGUsIEZpbGVEaWFsb2cuU0FWRSk7CisgICAgICAgICAgICBkaWFsb2cuc2hvdygpOworICAgICAgICAgICAgU3RyaW5nIGZpbGVTdHIgPSBkaWFsb2cuZ2V0RmlsZSgpOworICAgICAgICAgICAgU3RyaW5nIGRpclN0ciA9IGRpYWxvZy5nZXREaXJlY3RvcnkoKTsKKworICAgICAgICAgICAgaWYgKGZpbGVTdHIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGZpbGUgPSBuZXcgRmlsZShkaXJTdHIsIGZpbGVTdHIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGZpbGUgIT0gbnVsbCkgeworCisgICAgICAgICAgICBzYXZlTVRleHQoZmlsZSwgdGV4dCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmlsZTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgc2F2ZU1UZXh0KEZpbGUgZmlsZSwgTUNvbnN0VGV4dCB0ZXh0KSB7CisKKyAgICAgICAgVGhyb3dhYmxlIGVycm9yOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBPdXRwdXRTdHJlYW0gb3V0U3RyZWFtID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oZmlsZSk7CisgICAgICAgICAgICBPYmplY3RPdXRwdXRTdHJlYW0gb2JqU3RyZWFtID0gbmV3IE9iamVjdE91dHB1dFN0cmVhbShvdXRTdHJlYW0pOworCisgICAgICAgICAgICBvYmpTdHJlYW0ud3JpdGVPYmplY3QodGV4dCk7CisgICAgICAgICAgICBvdXRTdHJlYW0uY2xvc2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goQ2xhc3NDYXN0RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfQorCisgICAgICAgIGVycm9yLnByaW50U3RhY2tUcmFjZSgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0YXBwcy9NVGV4dFRvU3RyaW5nLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0YXBwcy9NVGV4dFRvU3RyaW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTUyZDc3MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRhcHBzL01UZXh0VG9TdHJpbmcuamF2YQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBNVGV4dFRvU3RyaW5nLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDg6NTEgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0YXBwczsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworCitpbXBvcnQgamF2YS5pby4qOworCitwdWJsaWMgZmluYWwgY2xhc3MgTVRleHRUb1N0cmluZyB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKworCisgICAgICAgIGlmIChhcmdzLmxlbmd0aCAhPSAyKSB7CisgICAgICAgICAgICB1c2FnZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgd3JpdGVNVGV4dEFzU3RyaW5nKGFyZ3NbMF0sIGFyZ3NbMV0pOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB1c2FnZSgpIHsKKworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlVzYWdlOiBNVGV4dFRvU3RyaW5nIGluRmlsZSBvdXRGaWxlIik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaW5GaWxlIG11c3QgYmUgYSBzZXJpYWxpemVkIE1Db25zdFRleHQiKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJPbiBleGl0LCBvdXRGaWxlIHdpbGwgYmUgYSBzZXJpYWxpemVkIFN0cmluZyAiKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJjb250YWluaW5nIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0LiIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImluRmlsZSBhbmQgb3V0RmlsZSBtdXN0IG5vdCBiZSB0aGUgc2FtZS4iKTsKKyAgICAgICAgU3lzdGVtLmV4aXQoMSk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHdyaXRlTVRleHRBc1N0cmluZyhTdHJpbmcgaW5GaWxlLCBTdHJpbmcgb3V0RmlsZSkgeworCisgICAgICAgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKGluRmlsZSk7CisgICAgICAgIE1Db25zdFRleHQgdGV4dCA9IEZpbGVVdGlscy5sb2FkTVRleHQoZmlsZSk7CisKKyAgICAgICAgaWYgKHRleHQgIT0gbnVsbCkgeworICAgICAgICAgICAgY2hhcltdIGNoID0gbmV3IGNoYXJbdGV4dC5sZW5ndGgoKV07CisgICAgICAgICAgICB0ZXh0LmV4dHJhY3RDaGFycygwLCBjaC5sZW5ndGgsIGNoLCAwKTsKKyAgICAgICAgICAgIFN0cmluZyBzdHIgPSBuZXcgU3RyaW5nKGNoKTsKKyAgICAgICAgICAgIHdyaXRlU3RyaW5nKHN0ciwgb3V0RmlsZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNhbid0IHJlYWQgaW5GaWxlLiIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHdyaXRlU3RyaW5nKFN0cmluZyBzdHJpbmdUb1dyaXRlLCBTdHJpbmcgb3V0RmlsZSkgeworCisgICAgICAgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKG91dEZpbGUpOworICAgICAgICBUaHJvd2FibGUgZXJyb3IgPSBudWxsOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBPdXRwdXRTdHJlYW0gb3V0U3RyZWFtID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oZmlsZSk7CisgICAgICAgICAgICBPYmplY3RPdXRwdXRTdHJlYW0gb2JqU3RyZWFtID0gbmV3IE9iamVjdE91dHB1dFN0cmVhbShvdXRTdHJlYW0pOworCisgICAgICAgICAgICBvYmpTdHJlYW0ud3JpdGVPYmplY3Qoc3RyaW5nVG9Xcml0ZSk7CisgICAgICAgICAgICBvdXRTdHJlYW0uY2xvc2UoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goQ2xhc3NDYXN0RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfQorCisgICAgICAgIGVycm9yLnByaW50U3RhY2tUcmFjZSgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0YXBwcy9TdHJpbmdUb01UZXh0LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0YXBwcy9TdHJpbmdUb01UZXh0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDIyZWZlNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRhcHBzL1N0cmluZ1RvTVRleHQuamF2YQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBTdHJpbmdUb01UZXh0LmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDg6NTEgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0YXBwczsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZWRUZXh0OworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKKworaW1wb3J0IGphdmEuaW8uKjsKKworcHVibGljIGZpbmFsIGNsYXNzIFN0cmluZ1RvTVRleHQgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisKKworICAgICAgICBpZiAoYXJncy5sZW5ndGggIT0gMiB8fCBhcmdzWzBdLmVxdWFscyhhcmdzWzFdKSkgeworICAgICAgICAgICAgdXNhZ2UoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFN0cmluZyBzdHIgPSBsb2FkU3RyaW5nKG5ldyBGaWxlKGFyZ3NbMF0pKTsKKyAgICAgICAgICAgIGlmIChzdHIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ291bGRuJ3QgbG9hZCBTdHJpbmcgZnJvbSBmaWxlICIgKyBhcmdzWzBdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE1Db25zdFRleHQgdGV4dCA9IG5ldyBTdHlsZWRUZXh0KHN0ciwgQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVApOworICAgICAgICAgICAgRmlsZVV0aWxzLnNhdmVNVGV4dChuZXcgRmlsZShhcmdzWzFdKSwgdGV4dCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHVzYWdlKCkgeworCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVXNhZ2U6IFN0cmluZ1RvTVRleHQgaW5GaWxlIG91dEZpbGUiKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJpbkZpbGUgbXVzdCBiZSBhIHNlcmlhbGl6ZWQgU3RyaW5nIik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiT24gZXhpdCwgb3V0RmlsZSB3aWxsIGJlIGEgc2VyaWFsaXplZCBNVGV4dCAiKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJjb250YWluaW5nIHRoZSBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcuIik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiaW5GaWxlIGFuZCBvdXRGaWxlIG11c3Qgbm90IGJlIHRoZSBzYW1lLiIpOworICAgICAgICBTeXN0ZW0uZXhpdCgxKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBsb2FkU3RyaW5nKEZpbGUgZmlsZSkgeworCisgICAgICAgIFRocm93YWJsZSBlcnJvcjsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgRmlsZUlucHV0U3RyZWFtIGluU3RyZWFtID0gbmV3IEZpbGVJbnB1dFN0cmVhbShmaWxlKTsKKyAgICAgICAgICAgIE9iamVjdElucHV0U3RyZWFtIG9ialN0cmVhbSA9IG5ldyBPYmplY3RJbnB1dFN0cmVhbShpblN0cmVhbSk7CisKKyAgICAgICAgICAgIFN0cmluZyBzdHIgPSAoU3RyaW5nKSBvYmpTdHJlYW0ucmVhZE9iamVjdCgpOworICAgICAgICAgICAgaW5TdHJlYW0uY2xvc2UoKTsKKyAgICAgICAgICAgIHJldHVybiBzdHI7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisgICAgICAgIGNhdGNoKENsYXNzTm90Rm91bmRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJyb3IgPSBlOworICAgICAgICB9CisgICAgICAgIGNhdGNoKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKworICAgICAgICBlcnJvci5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRhcHBzL1Rlc3RNVGV4dFRvU3RyaW5nLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0YXBwcy9UZXN0TVRleHRUb1N0cmluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjY5MDQ2OGIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0YXBwcy9UZXN0TVRleHRUb1N0cmluZy5qYXZhCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRlc3RNVGV4dFRvU3RyaW5nLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NDg6NTEgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0YXBwczsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGphdmEuaW8uRmlsZTsKKworcHVibGljIGZpbmFsIGNsYXNzIFRlc3RNVGV4dFRvU3RyaW5nIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworCisgICAgICAgIGlmIChhcmdzLmxlbmd0aCAhPSAyIHx8IGFyZ3NbMF0uZXF1YWxzKGFyZ3NbMV0pKSB7CisgICAgICAgICAgICB1c2FnZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYm9vbGVhbiBzdWNjZXNzID0gdGVzdE1UZXh0VG9TdHJpbmcoYXJnc1swXSwgYXJnc1sxXSk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oc3VjY2Vzcz8gIlBBU1NFRCIgOiAiRkFJTEVEIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHVzYWdlKCkgeworCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVXNhZ2U6IFRlc3RNVGV4dFRvU3RyaW5nIG10ZXh0RmlsZSBzdHJpbmdGaWxlIik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ29tcGFyZXMgdGhlIGNoYXJhY3RlcnMgaW4gbXRleHRGaWxlIHRvIHRoZSIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlN0cmluZyBpbiBzdHJpbmdGaWxlLiIpOworICAgICAgICBTeXN0ZW0uZXhpdCgwKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gdGVzdE1UZXh0VG9TdHJpbmcoU3RyaW5nIG10ZXh0RmlsZSwgU3RyaW5nIHN0cmluZ0ZpbGUpIHsKKworICAgICAgICBib29sZWFuIHN1Y2Nlc3MgPSBmYWxzZTsKKworICAgICAgICBGaWxlIG10ZXh0ID0gbmV3IEZpbGUobXRleHRGaWxlKTsKKyAgICAgICAgTUNvbnN0VGV4dCB0ZXh0ID0gRmlsZVV0aWxzLmxvYWRNVGV4dChtdGV4dCk7CisgICAgICAgIGlmICh0ZXh0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIFN0cmluZyBzdHIgPSBTdHJpbmdUb01UZXh0LmxvYWRTdHJpbmcobmV3IEZpbGUoc3RyaW5nRmlsZSkpOworICAgICAgICAgICAgaWYgKHN0ciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IGNvbXBhcmVNVGV4dFRvU3RyaW5nKHRleHQsIHN0cik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNvdWxkbid0IGxvYWQgU3RyaW5nLiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDb3VsZG4ndCBsb2FkIE1UZXh0LiIpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHN1Y2Nlc3M7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGNvbXBhcmVNVGV4dFRvU3RyaW5nKE1Db25zdFRleHQgdGV4dCwgU3RyaW5nIHN0cikgeworCisgICAgICAgIGlmICh0ZXh0Lmxlbmd0aCgpICE9IHN0ci5sZW5ndGgoKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGk9c3RyLmxlbmd0aCgpLTE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAgICBpZiAodGV4dC5hdChpKSAhPSBzdHIuY2hhckF0KGkpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0YXBwcy9yZXNvdXJjZXMvU2FtcGxlLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0YXBwcy9yZXNvdXJjZXMvU2FtcGxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODMyOGI1NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRhcHBzL3Jlc291cmNlcy9TYW1wbGUuamF2YQpAQCAtMCwwICsxLDE2IEBACitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dGFwcHMucmVzb3VyY2VzOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworcHVibGljIGZpbmFsIGNsYXNzIFNhbXBsZSBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgCisgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdW10geworICAgICAgICAgICAgeyAiZGVmYXVsdC5zYW1wbGUiLCB0aGlzLmdldENsYXNzKCkuZ2V0UmVzb3VyY2UoImhhZ2FuIikgfSwKKyAgICAgICAgICAgIHsgImRlZmF1bHQubmFtZSIsICJUaGUgR2FyZGVuIiB9LAorICAgICAgICAgICAgeyAiamFwYW5lc2Uuc2FtcGxlIiwgIlx1NmNlODogezF9IFx1MzA2ZVx1MzBlMVx1MzBiZFx1MzBjM1x1MzBjOSB7MH0gXHUzMDZmXHU2M2E4XHU1OTY4XHUzMDU1XHUzMDhjXHUzMDdlXHUzMDViXHUzMDkzXHUzMDAyIiB9LAorICAgICAgICAgICAgeyAiamFwYW5lc2UubmFtZSIsICJKYXBhbmVzZSBNZXNzYWdlIiB9LAorICAgICAgICB9OworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L0FzeW5jRm9ybWF0dGVyLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L0FzeW5jRm9ybWF0dGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmNhM2NmOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvQXN5bmNGb3JtYXR0ZXIuamF2YQpAQCAtMCwwICsxLDIwNTMgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEFzeW5jRm9ybWF0dGVyLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTA6MDMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8vIFJlcXVpcmVzIEphdmEyCisvLyBSZXZpc2lvbjogNzAgMS4zOCByaWNodGV4dC9Bc3luY0Zvcm1hdHRlci5qYXZhLCByaWNodGV4dCwgcmljaHRleHQKKworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRmb3JtYXQ7CisKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczsKK2ltcG9ydCBqYXZhLmF3dC5SZWN0YW5nbGU7CitpbXBvcnQgamF2YS5hd3QuUG9pbnQ7CitpbXBvcnQgamF2YS5hd3QuQ29sb3I7CisKK2ltcG9ydCBqYXZhLnRleHQuQnJlYWtJdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I7CisKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLlRleHRBdHRyaWJ1dGU7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKKworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5HcmFwaGljczJEQ29udmVyc2lvbjsKKworLy8vKkpESzEySU1QT1JUUworaW1wb3J0IGphdmEuYXd0LkdyYXBoaWNzMkQ7CitpbXBvcnQgamF2YS5hd3QuZm9udC5MaW5lQnJlYWtNZWFzdXJlcjsKK2ltcG9ydCBqYXZhLmF3dC5mb250LkZvbnRSZW5kZXJDb250ZXh0OworLy9KREsxMklNUE9SVFMqLworCisvKkpESzExSU1QT1JUUworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5HcmFwaGljczJEOworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5MaW5lQnJlYWtNZWFzdXJlcjsKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuRm9udFJlbmRlckNvbnRleHQ7CitKREsxMUlNUE9SVFMqLworCisvKgorICAgIENoYW5nZSBoaXN0b3J5OgorCisgICAgNy8yNS85NiAtCisKKyAgICA4LzE1Lzk2CisgICAgICAgIEZpeGVkIGJ1ZyBpbiB0ZXh0T2Zmc2V0VG9Qb2ludCAoZlBpeEhlaWdodCB3YXNuJ3QgYWRkZWQgdG8gbmVnYXRpdmUgaGVpZ2h0cykuIHtqYnJ9CisKKyAgICA4LzE5Lzk2CisgICAgICAgIFJlbW92ZWQgcmVmZXJlbmNlcyB0byBKdXN0aWZpY2F0aW9uU3R5bGUgY29uc3RhbnRzLCBhbmQgbW92ZWQgdGhlbSBpbnRvIE1Gb3JtYXR0ZXIge3NmYn0KKworICAgIDgvMjMvOTYKKyAgICAgICAgTW9kaWZpZWQgZmluZExpbmVBdCBhbmQgZ2V0TGluZUNvbnRhaW5pbmcgLSBhZGRlZCBvcHRpbWl6YXRpb24gaW4gc2VhcmNoIGxvb3AuICBBbHNvLAorICAgICAgICAgICAgdGhleSB3ZXJlIGZhaWxpbmcgd2hlbiBmTFRQb3NFbmQrMSA9PSBmTFROZWdTdGFydC4gIEZpeGVkLgorCisgICAgOC8yNi85NgorICAgICAgICBNb3ZlZCBGb3JtYXREYWVtb24gc3R1ZmYgaW50byB0aGlzIGNsYXNzLgorCisgICAgOS8xMS85NgorICAgICAgICBTaG9ydGVuZWQgbGluZSByZXR1cm5lZCBmcm9tIHRleHRPZmZzZXRUb1BvaW50IGJ5IDEgcGl4ZWwKKworICAgIDkvMjMvOTYKKyAgICAgICAgdGV4dE9mZnNldFRvUG9pbnQgbGluZSBsZW5ndGggcmVzdG9yZWQgKHNlZSBhYm92ZSkuICBkcmF3VGV4dCgpIG5vdyBkcmF3cyBvbmx5IGxpbmVzCisgICAgICAgIHdoaWNoIGZhbGwgaW4gcmVjdGFuZ2xlIHBhcmFtLgorCisgICAgOS8yNi85NgorICAgICAgICB3aGl0ZXNwYWNlIGF0IGVuZCBvZiBsaW5lIGlzIHVzZWQgZm9yIGNhcmV0IHBvc2l0aW9uaW5nCisKKyAgICAxMC80Lzk2CisgICAgICAgIEFkZGVkIHN0YXRpYyBUZXh0Qm94IG1ldGhvZC4KKworICAgIDEwLzgvOTYKKyAgICAgICAgTGluZSAxMzAwIC0gbGVzcyB0aGFuIGNoYW5nZWQgdG8gbGVzcyB0aGFuIG9yIGVxdWFsIGluIHRleHRPZmZzZXRUb1BvaW50LiAgV2F0Y2ggZm9yCisgICAgICAgICAgICBoYW5ncyBpbiBmb3JtYXRUZXh0LgorCisgICAgMTAvOS85NgorICAgICAgICBDaGFuZ2VkIHN5bmMuIG1vZGVsLiAgZkZvcm1hdEluQmFja2dyb3VuZCBpcyB1c2VkIHRvIHN0YXJ0L3N0b3AgYmcgZm9ybWF0dGluZworCisgICAgMTAvMTcvOTYKKyAgICAgICAgQWRkZWQgbmV3IGZsYWdzOiAgZkxpbmVJbmMsIGZGaWxsSW5jIGZvciBiaWRpIHN1cHBvcnQuICB1cGRhdGVGb3JtYXQsIHBvaW50VG9UZXh0T2Zmc2V0LCBnZXRCb3VuZGluZ1JlY3QsCisgICAgICAgIGFuZCBmaW5kTmV3SW5zZXJ0aW9uT2Zmc2V0IHNob3VsZCBub3cgZnVuY3Rpb24gY29ycmVjdGx5IGZvciBub24tUm9tYW4gZG9jdW1lbnRzLiAgTm90aGluZyBlbHNlIGhhcyBiZWVuCisgICAgICAgIG1vZGlmaWVkIHRvIHN1cHBvcnQgaW50bCB0ZXh0LgorCisgICAgMTAvMjEvOTYKKyAgICAgICAgUHVzaGVkIHBhcmFncmFwaCBmb3JtYXR0aW5nIGFuZCBjYXJldCBwb3NpdGlvbmluZyBpbnRvIExpbmVMYXlvdXQuICBJbiBwcm9jZXNzIG9mIHB1c2hpbmcKKyAgICAgICAgaGlnaGxpZ2h0aW5nIGludG8gTGluZUxheW91dC4KKworICAgIDEwLzI0Lzk2CisgICAgICAgIE5vdyBnZXR0aW5nIHBhcmFncmFwaCBzdHlsZXMgZnJvbSBwYXJhZ3JhcGggYnVmZmVyLgorCisgICAgNy83Lzk3CisgICAgICAgIFVwLWFycm93IGRvZXNuJ3QgbW92ZSB0byBiZWdpbm5pbmcgb2YgdGV4dCBpZiB5b3UncmUgb24gdGhlIGZpcnN0IGxpbmUuCisKKyAgICA3LzEvOTgKKyAgICAgICAgTm8gbG9uZ2VyIGludGVyc2VjdGluZyBkYW1hZ2VkIHJlY3Qgd2l0aCB2aWV3IHJlY3QgaW4gdXBkYXRlRm9ybWF0LgorKi8KKworLyoqCisqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBNRm9ybWF0dGVyLiAgSXQgbWFpbnRhaW5zIGEgdGFibGUgb2YKKyogPHR0PkxheW91dEluZm88L3R0PiBpbnN0YW5jZXMgd2hpY2ggY29udGFpbiBsYXlvdXQgaW5mb3JtYXRpb24KKyogZm9yIGVhY2ggbGluZSBpbiB0aGUgdGV4dC4gIFRoaXMgY2xhc3MgZm9ybWF0cyBsaW5lcyBvbiBkZW1hbmQsCisqIGFuZCBjcmVhdGVzIGEgbG93LXByaW9yaXR5IHRocmVhZCB0byBmb3JtYXQgdGV4dCBpbiB0aGUgYmFja2dyb3VuZC4KKyogTm90ZSB0aGF0LCBhdCB0aW1lcywgc29tZSB0ZXh0IG1heSBub3QgaGF2ZSBiZWVuIGZvcm1hdHRlZCwgZXNwZWNpYWxseQorKiBpZiB0aGUgdGV4dCBpcyBsYXJnZS4KKyogPHA+CisqIFRoZSBsaW5lIHRhYmxlIGlzIGFuIGFycmF5IG9mIDx0dD5MYXlvdXRJbmZvPC90dD4gb2JqZWN0cywgd2hpY2ggZXhwYW5kcyBhcyBuZWVkZWQgdG8gaG9sZAorKiBhbGwgY29tcHV0ZWQgbGluZXMgaW4gdGhlIHRleHQuICBUaGUgbGluZSB0YWJsZSBjb25zaXN0cyBvZiB0aHJlZQorKiByZWdpb25zOiAgYSAicG9zaXRpdmUiIHJlZ2lvbiwgYSAiZ2FwLCIgYW5kIGEgIm5lZ2F0aXZlIiByZWdpb24uCisqIEluIHRoZSBwb3NpdGl2ZSByZWdpb24sIGNoYXJhY3RlciBhbmQgZ3JhcGhpY3Mgb2Zmc2V0cyBhcmUgcG9zaXRpdmUKKyogaW50ZWdlcnMsIGNvbXB1dGVkIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUgdGV4dCAvIGRpc3BsYXkuICBJbiB0aGUKKyogZ2FwLCBsaW5lIHRhYmxlIGVudHJpZXMgYXJlIG51bGwuICBOZXcgbGluZXMgbWF5IGJlIGluc2VydGVkIGludG8gdGhlIGdhcC4KKyogSW4gdGhlIG5lZ2F0aXZlIHJlZ2lvbiwgY2hhcmFjdGVyIGFuZCBncmFwaGljcyBvZmZzZXRzIGFyZSBuZWdhdGl2ZTsKKyogdGhlaXIgYWJzb2x1dGUgdmFsdWVzIGluZGljYXRlIGRpc3RhbmNlcyBmcm9tIHRoZSBlbmQgb2YgdGhlIHRleHQgLyBkaXNwbGF5LgorKiBUaGUgPHR0PmZMVFBvc0VuZDwvdHQ+IG1lbWJlciBnaXZlcyB0aGUgaW5kZXggaW4gdGhlIGxpbmUgdGFibGUgb2YgdGhlCisqIGxhc3QgcG9zaXRpdmUgZW50cnkuICBUaGUgPHR0PmZMVE5lZ1N0YXJ0PC90dD4gZ2l2ZXMgdGhlIGluZGV4IG9mIGZpcnN0CisqIG5lZ2F0aXZlIGVudHJ5LiAgSWYgdGhlcmUgYXJlIG5vIG5lZ2F0aXZlIGVudHJpZXMsIDx0dD5mTFROZWdTdGFydDwvdHQ+IGlzCisqIGVxdWFsIHRvIDx0dD5mTFRTaXplPC90dD4sIHRoZSBzaXplIG9mIHRoZSBsaW5lIHRhYmxlLgorKiA8cD4KKyogQ2hhbmdlcyB0byB0aGUgbGluZSB0YWJsZSBvY2N1ciBvbmx5IGluIHRoZSA8dHQ+Zm9ybWF0VGV4dCgpPC90dD4gbWV0aG9kLgorKiBUaGlzIG1ldGhvZCBjYWxscyA8dHQ+TGluZUxheW91dC5sYXlvdXQoKTwvdHQ+IGZvciBlYWNoIGxpbmUgdG8gZm9ybWF0LgorKgorKiBAYXV0aG9yIEpvaG4gUmFsZXkKKyoKKyogQHNlZSBNRm9ybWF0dGVyCisqIEBzZWUgTGluZUxheW91dAorKiBAc2VlIExheW91dENvbnRleHQKKyogQHNlZSBMYXlvdXRJbmZvCisqLworCitmaW5hbCBjbGFzcyBBc3luY0Zvcm1hdHRlciBleHRlbmRzIE1Gb3JtYXR0ZXIgaW1wbGVtZW50cyBSdW5uYWJsZQoreworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgLyoqCisgICAgKiBUZXh0IHRvIGZvcm1hdC4KKyAgICAqLworICAgIHByaXZhdGUgTUNvbnN0VGV4dCBmVGV4dDsKKworICAgIC8qKgorICAgICogRGVmYXVsdCB2YWx1ZXMuCisgICAgKi8KKyAgICBwcml2YXRlIEF0dHJpYnV0ZU1hcCBmRGVmYXVsdFZhbHVlczsKKyAgICAKKyAgICAvKioKKyAgICAqIEZvbnQgcmVzb2x2ZXIuCisgICAgKi8KKyAgICBwcml2YXRlIEZvbnRSZXNvbHZlciBmRm9udFJlc29sdmVyOworICAgIAorICAgIC8qKgorICAgICogRGVmYXVsdCBjaGFyYWN0ZXIgbWV0cmljIC0gdXNlZCB0byBzZXQgaGVpZ2h0IG9mIGVtcHR5IHBhcmFncmFwaHMKKyAgICAqLworICAgIHByaXZhdGUgRGVmYXVsdENoYXJhY3Rlck1ldHJpYyBmRGVmYXVsdENoYXJNZXRyaWM7CisgICAgCisgICAgLyoqCisgICAgKiBMZW5ndGggdG8gd2hpY2ggbGluZXMgYXJlIGZvcm1hdHRlZC4KKyAgICAqLworICAgIHByaXZhdGUgaW50IGZMaW5lRGltOworCisgICAgLyoqCisgICAgKiBUYWJsZSBvZiBmb3JtYXR0ZWQgbGluZXMuCisgICAgKi8KKyAgICBwcml2YXRlIExheW91dEluZm8gZkxpbmVUYWJsZVtdOworCisgICAgLyoqCisgICAgKiBTaXplIG9mIGxpbmUgdGFibGUuCisgICAgKi8KKyAgICBwcml2YXRlIGludCBmTFRTaXplID0gMTA7IC8vIGluaXRpYWwgc2l6ZSBtdXN0IGJlID4gMAorCisgICAgLyoqCisgICAgKiBJbmRleCBvZiBsYXN0IHBvc2l0aXZlIGVudHJ5IGluIGxpbmUgdGFibGUuCisgICAgKi8KKyAgICBwcml2YXRlIGludCBmTFRQb3NFbmQ7CisKKyAgICAvKioKKyAgICAqIEluZGV4IG9mIGZpcnN0IG5lZ2F0aXZlIGVudHJ5IGluIGxpbmUgdGFibGUuCisgICAgKi8KKyAgICBwcml2YXRlIGludCBmTFROZWdTdGFydDsKKworICAgIC8qKgorICAgICogTGVuZ3RoIG9mIHRleHQgb24gd2hpY2ggbmVnYXRpdmUgbGluZSBvZmZzZXRzIGFyZSBiYXNlZC4KKyAgICAqIEBzZWUgI2Zvcm1hdFRleHQKKyAgICAqLworICAgIHByaXZhdGUgaW50IGZMVEN1clRleHRMZW47CisKKyAgICAvKioKKyAgICAqIExlbmd0aCBvZiBmb3JtYXR0ZWQgdGV4dCBpbiBmaWxsIGRpcmVjdGlvbiwgaW4gcGl4ZWxzLgorICAgICovCisgICAgcHJpdmF0ZSBpbnQgZlBpeEhlaWdodDsKKworICAgIC8qKgorICAgICogTGVuZ3RoIG9mIGZvcm1hdHRlZCB0ZXh0IGluY2x1ZGluZyBwc2V1ZG9saW5lLgorICAgICovCisgICAgcHJpdmF0ZSBpbnQgZkZ1bGxQaXhIZWlnaHQ7CisKKyAgICBwcml2YXRlIGludCBmTWluWDsKKyAgICBwcml2YXRlIGludCBmTWF4WDsKKworICAgIC8qKgorICAgICogPHR0PnRydWU8L3R0PiBpZiBsaW5lcyBzaG91bGQgYmUgZm9ybWF0dGVkIHRvIGZpdCBsaW5lIGRpbWVuc2lvbi4KKyAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBmV3JhcDsKKworICAgIC8qKgorICAgICogPHR0PnRydWU8L3R0PiBpZiBjaGFyYWN0ZXJzIHJ1biBob3Jpem9udGFsbHkuCisgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gZkhMaW5lID0gdHJ1ZTsKKworICAgIC8qKgorICAgICAqIDx0dD50cnVlPC90dD4gaWYgY2hhcmFjdGVycyBydW4gZnJvbSBmcm9tIGxvdyB0byBoaWdoIGNvb3JkaW5hdGVzIG9uIGxpbmUuCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGZMaW5lSW5jID0gdHJ1ZTsKKworICAgIC8qKgorICAgICAqIDx0dD50cnVlPC90dD4gaWYgbGluZXMgcnVuIGZyb20gbG93IHRvIGhpZ2ggY29vcmRpbmF0ZXMgd2l0aGluIHBhZ2UuCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGZGaWxsSW5jID0gdHJ1ZTsKKworICAgIC8qKgorICAgICogVmFsdWUgcmV0dXJuZWQgZnJvbSA8dHQ+ZmluZExpbmVBdCgpPC90dD4KKyAgICAqIGlmIHBpeGVsIGhlaWdodCBwcmVjZWRlcyB0b3Btb3N0IGxpbmUuCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQga0JlZm9yZUZpcnN0TGluZSA9IC0yOworCisgICAgLyoqCisgICAgKiBWYWx1ZSByZXR1cm5lZCBmcm9tIDx0dD5maW5kTGluZUF0KCk8L3R0PiBhbmQgPHR0PmdldExpbmVDb250YWluaW5nKCk8L3R0PgorICAgICogaWYgb2Zmc2V0IC8gcGl4ZWwgaGVpZ2h0IGlzIGFmdGVyIGFsbCBleGlzdGluZyBsaW5lcy4KKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBrQWZ0ZXJMYXN0TGluZSA9IC0xOworCisgICAgLyoqCisgICAgKiBUaHJlYWQgd2hpY2ggaW52b2tlcyBmb3JtYXR0ZXIgaW4gdGhlIGJhY2tncm91bmQuCisgICAgKi8KKyAgICBwcml2YXRlIFRocmVhZCBmRGFlbW9uOworCisgICAgLyoqCisgICAgKiBGb250UmVuZGVyQ29udGV4dCB0byBtZWFzdXJlIHdpdGguICBDdXJyZW50bHkgbm90IHNldHRhYmxlIGFmdGVyCisgICAgKiBjb25zdHJ1Y3Rpb24uCisgICAgKi8KKyAgICBwcml2YXRlIEZvbnRSZW5kZXJDb250ZXh0IGZGb250UmVuZGVyQ29udGV4dDsKKworICAgIC8qKgorICAgICogQ29udHJvbHMgd2hldGhlciBiYWNrZ3JvdW5kIGZvcm1hdHRpbmcgY2FuIHJ1bi4KKyAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBmQmdGb3JtYXRBbGxvd2VkID0gZmFsc2U7CisgICAgCisgICAgLyoqCisgICAgKiBDYWNoZWQgbGluZSBicmVhayBvYmplY3QuCisgICAgKi8KKyAgICBwcml2YXRlIEJyZWFrSXRlcmF0b3IgZkxpbmVCcmVhayA9IG51bGw7CisgICAgCisgICAgLyoqCisgICAgKiBDYWNoZWQgTGluZUJyZWFrTWVhc3VyZXIuCisgICAgKi8KKyAgICBwcml2YXRlIExpbmVCcmVha01lYXN1cmVyIGZDYWNoZWRNZWFzdXJlciA9IG51bGw7CisgICAgcHJpdmF0ZSBpbnQgZkNhY2hlZE1lYXN1cmVyU3RhcnQ7CisgICAgcHJpdmF0ZSBpbnQgZkNhY2hlZE1lYXN1cmVyTGltaXQ7CisgICAgCisgICAgLy8gU29tZSBKREsncyAoU3VuJ3MgMS4yLjIpIHRocm93IGV4Y2VwdGlvbnMgZnJvbSAKKyAgICAvLyBMaW5lQnJlYWtNZWFzdXJlci5pbnNlcnRDaGFyIGFuZCBkZWxldGVDaGFyLiAgVGhpcyBjbGFzcworICAgIC8vIGRldGVjdHMgdGhpcyBjb25kaXRpb24gYW5kIGRvZXNuJ3QgdXNlIHRoZXNlIHR3byBtZXRob2RzCisgICAgLy8gaWYgdGhleSB0aHJvdyBleGNlcHRpb25zLgorICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gZmdDYWNoZU1lYXN1cmVycyA9IHRydWU7CisgICAgCisgICAgLyoqCisgICAgKiBDdXJyZW50IHRleHQgdGltZSBzdGFtcC4gIFVzZWQgdG8gbWFpbnRhaW4gbW9kaWZpY2F0aW9uIGludmFyaWFudC4KKyAgICAqLworICAgIHByaXZhdGUgaW50IGZDdXJUaW1lU3RhbXA7CisgICAgCisgICAgLyoqCisgICAgKiBDYWNoZSBvZiBQYXJhZ3JhcGhSZW5kZXJlcnMuCisgICAgKi8KKyAgICBwcml2YXRlIEhhc2h0YWJsZSBmUmVuZGVyZXJDYWNoZSA9IG5ldyBIYXNodGFibGUoKTsKKyAgICAKKyAgICAvKioKKyAgICAqIERyYXcgdGV4dCBpbnNpZGUgYSByZWN0YW5nbGUuIERvZXMgbm90IGNhY2hlIGFueSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uLgorICAgICogVGhpcyBpcyBjb252ZW5pZW50IGZvciBzbWFsbCBhbW91bnRzIG9mIHRleHQ7IGNvbXBhcmFibGUgdG8gVEVUZXh0Qm94IG9uIHRoZSBNYWMuCisgICAgKiA8cD4KKyAgICAqIEBwYXJhbSB0ZXh0IHRoZSB0ZXh0IHRvIGRyYXcKKyAgICAqIEBwYXJhbSBnIEdyYXBoaWNzIG9uIHdoaWNoIHRvIGRyYXcKKyAgICAqIEBwYXJhbSBkcmF3UmVjdCByZWN0YW5nbGUgaW4gd2hpY2ggdGV4dCB3aWxsIGJlIGRyYXduCisgICAgKiBAcGFyYW0gZmlsbEluYyBpZiB0cnVlLCBsaW5lcyBydW4gZnJvbSBsb3cgdG8gaGlnaCBjb29yZGluYXRlcyBpbiBwYWdlLgorICAgICogQHBhcmFtIGhMaW5lIGlmIHRydWUsIGNoYXJhY3RlcnMgcnVuIGhvcml6b250YWxseSB3aXRoaW4gYSBsaW5lLgorICAgICovCisKKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzUGFyYWdyYXBoU2VwYXJhdG9yKGNoYXIgY2gpIHsKKworICAgICAgICByZXR1cm4gY2ggPT0gJ1xuJyB8fCBjaCA9PSAnXHUyMDI5JzsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIENyZWF0ZSBhbiA8dHQ+QXN5bmNGb3JtYXR0ZXI8L3R0Pi4KKyAgICAqIEBwYXJhbSB0ZXh0IHRoZSB0ZXh0IHRvIGZvcm1hdAorICAgICogQHBhcmFtIGxpbmVCb3VuZCBsZW5ndGggdG8gd2hpY2ggbGluZXMgYXJlIGZvcmFtdHRlZAorICAgICogQHBhcmFtIHdyYXAgPHR0PnRydWU8L3R0PiBpZiB0ZXh0IHNob3VsZCBiZSAibGluZSB3cmFwcGVkIiAoZm9ybWF0dGVkIHRvIGZpdCBkZXN0aW5hdGlvbiBhcmVhKQorICAgICovCisgICAgQXN5bmNGb3JtYXR0ZXIoTUNvbnN0VGV4dCB0ZXh0LCAKKyAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgZGVmYXVsdFZhbHVlcywKKyAgICAgICAgICAgICAgICAgICBpbnQgbGluZUJvdW5kLAorICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gd3JhcCwKKyAgICAgICAgICAgICAgICAgICBHcmFwaGljcyBnKQorICAgIHsKKyAgICAgICAgZlRleHQgPSB0ZXh0OworICAgICAgICBmRGVmYXVsdFZhbHVlcyA9IGRlZmF1bHRWYWx1ZXM7CisgICAgICAgIGZGb250UmVzb2x2ZXIgPSBuZXcgRm9udFJlc29sdmVyKGZEZWZhdWx0VmFsdWVzKTsKKyAgICAgICAgCisgICAgICAgIGZMaW5lRGltID0gbGluZUJvdW5kOworICAgICAgICBmV3JhcCA9IHdyYXA7CisgICAgICAgIEdyYXBoaWNzMkQgZzJkID0gR3JhcGhpY3MyRENvbnZlcnNpb24uZ2V0R3JhcGhpY3MyRChnKTsKKyAgICAgICAgZkZvbnRSZW5kZXJDb250ZXh0ID0gZzJkLmdldEZvbnRSZW5kZXJDb250ZXh0KCk7CisgICAgICAgIAorICAgICAgICBmRGVmYXVsdENoYXJNZXRyaWMgPSBuZXcgRGVmYXVsdENoYXJhY3Rlck1ldHJpYyhmRm9udFJlc29sdmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkZvbnRSZW5kZXJDb250ZXh0KTsKKyAgICAgICAgZkxUQ3VyVGV4dExlbiA9IHRleHQubGVuZ3RoKCk7CisgICAgICAgIHJlbW92ZUFsbExpbmVzKCk7CisKKyAgICAgICAgZkRhZW1vbiA9IG5ldyBUaHJlYWQodGhpcyk7CisgICAgICAgIGZEYWVtb24uc3RhcnQoKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBnZXREZWZhdWx0VmFsdWVzKCkgeworICAgIAorICAgICAgICByZXR1cm4gZkRlZmF1bHRWYWx1ZXM7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIGNoZWNrVGltZVN0YW1wKCkgeworICAgICAgICBTdHJpbmcgYWRtb25pdGlvbiA9ICJQcm9iYWJseSwgeW91IG1vZGlmaWVkICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgdGV4dCBiZWZvcmUgY2FsbGluZyBzdG9wQmFja2dyb3VuZEZvcm1hdHRpbmcoKS4iOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBpZiAoZlRleHQuZ2V0VGltZVN0YW1wKCkgIT0gZkN1clRpbWVTdGFtcCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJUaW1lIHN0YW1wIGlzIG91dCBvZiBzeW5jLiAgIiArIGFkbW9uaXRpb24pOworICAgICAgICB9CisgICAgICAgIGlmIChmVGV4dC5sZW5ndGgoKSAhPSBmTFRDdXJUZXh0TGVuKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkxlbmd0aCBjaGFuZ2VkIHVuZXhwZWN0ZWRseS4gICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmVGV4dC5sZW5ndGgoKT0iK2ZUZXh0Lmxlbmd0aCgpKyI7ICAiKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmTFRDdXJUZXh0TGVuPSIrZkxUQ3VyVGV4dExlbisiOyAgIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZm9ybWF0dGVyPSIrdGhpcysiOyAgIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGV4dD0iK2ZUZXh0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICogU3BlY2lmeSB3aGV0aGVyIHRvIHdyYXAgbGluZXMgdXNpbmcgdGhlIGxpbmUgZGltZW5zaW9uLgorICAgICogQHBhcmFtIHdyYXAgaWYgPHR0PnRydWU8L3R0PiBsaW5lcyB3aWxsIGJlIHdyYXBwZWQ7IG90aGVyd2lzZSBuZXcgbGluZXMgd2lsbCBvbmx5IGJlCisgICAgKiBzdGFydGVkIHdoZW4gYSBuZXdsaW5lIGlzIGVuY291bnRlcmVkLgorICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHNldFdyYXAoYm9vbGVhbiB3cmFwKQorICAgIHsKKyAgICAgICAgaWYgKHdyYXAgIT0gZldyYXApIHsKKyAgICAgICAgICAgIGZXcmFwID0gd3JhcDsKKyAgICAgICAgICAgIHJlbW92ZUFsbExpbmVzKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAqIFJldHVybiB0cnVlIGlmIGxpbmVzIGFyZSB3cmFwcGVkIHVzaW5nIHRoZSBsaW5lIGRpbWVuc2lvbi4KKyAgICAqIEBzZWUgI3NldFdyYXAKKyAgICAqLworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgYm9vbGVhbiB3cmFwKCkKKyAgICB7CisgICAgICAgIHJldHVybiBmV3JhcDsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIFNwZWNpZnkgdGhlIGxpbmVCb3VuZCBpbiBwaXhlbHMuICBJZiBsaW5lIHdyYXBwaW5nIGlzIG9uLCBsaW5lcworICAgICogd2lsbCBiZSB3cmFwcGVkIHRvIHRoaXMgdmFsdWUuCisgICAgKiA8cD4KKyAgICAqCisgICAgKiBAcGFyYW0gbGluZUJvdW5kIHRoZSBkaXN0YW5jZSwgaW4gcGl4ZWxzLCB1c2VkIHRvIHdyYXAgbGluZXMuCisgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgc2V0TGluZUJvdW5kKGludCBsaW5lQm91bmQpCisgICAgeworICAgICAgICBpZiAoZkxpbmVEaW0gIT0gbGluZUJvdW5kKSB7CisgICAgICAgICAgICBmTGluZURpbSA9IGxpbmVCb3VuZDsgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZldyYXApIHsKKyAgICAgICAgICAgICAgICByZW1vdmVBbGxMaW5lcygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgKiBSZXR1cm4gdGhlIG51bWJlciBvZiBwaXhlbHMgYWxvbmcgdGhlIGxpbmUgZGltZW5zaW9uLgorICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCBpbnQgbGluZUJvdW5kKCkKKyAgICB7CisgICAgICAgIHJldHVybiBmTGluZURpbTsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIFJldHVybiA8dHQ+dHJ1ZTwvdHQ+IGlmIGNoYXJhY3RlcnMgcnVuIGZyb20gbG93IHRvIGhpZ2ggY29vcmRpbmF0ZXMgb24gbGluZS4KKyAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBsaW5lSW5jKCkKKyAgICB7CisgICAgICAgIHJldHVybiBmTGluZUluYzsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIFJldHVybiA8dHQ+dHJ1ZTwvdHQ+IGlmIGxpbmVzIHJ1biBmcm9tIGxvdyB0byBoaWdoIGNvb3JkaW5hdGVzIG9uIHBhZ2UuCisgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gZmlsbEluYygpCisgICAgeworICAgICAgICByZXR1cm4gZkZpbGxJbmM7CisgICAgfQorCisgICAgLyoqCisgICAgKiBSZW1vdmUgYWxsIGxpbmVzIGluIHRoZSBsaW5lIHRhYmxlLiAgVXNlZCBhZnRlciBhbiBvcGVyYXRpb24gdGhhdAorICAgICogaW52YWxpZGF0ZXMgYWxsIGV4aXN0aW5nIGxpbmVzLCBzdWNoIGFzIGNoYW5naW5nIGxpbmUgd3JhcHBpbmcgb3IgdGhlCisgICAgKiBsaW5lIGRpbS4KKyAgICAqLworICAgIHByaXZhdGUgc3luY2hyb25pemVkIHZvaWQgcmVtb3ZlQWxsTGluZXMoKQorICAgIHsKKyAgICAgICAgZkN1clRpbWVTdGFtcCA9IGZUZXh0LmdldFRpbWVTdGFtcCgpOworICAgICAgICBzdG9wQmFja2dyb3VuZEZvcm1hdHRpbmcoKTsKKworICAgICAgICBmTWluWCA9IDA7CisgICAgICAgIGZNYXhYID0gZkxpbmVEaW07CisgICAgICAgIAorICAgICAgICBmTGluZVRhYmxlID0gbmV3IExheW91dEluZm9bZkxUU2l6ZV07IC8vIGZMVFNpemUgbXVzdCBiZSA+IDAKKyAgICAgICAgZkxUTmVnU3RhcnQgPSBmTFRTaXplOworICAgICAgICBmTFRQb3NFbmQgPSAwOworCisgICAgICAgIGZMaW5lVGFibGVbMF0gPSBwc2V1ZG9MaW5lSW5mbyhudWxsLCAwKTsKKworICAgICAgICBmUGl4SGVpZ2h0ID0gZkxpbmVUYWJsZVswXS5nZXRIZWlnaHQoKTsgLy8gPz8/IG9yIHNob3VsZCBpdCBiZSB6ZXJvPworICAgICAgICBmRnVsbFBpeEhlaWdodCA9IGZQaXhIZWlnaHQ7CisKKyAgICAgICAgLy8gZm9ybWF0IGF0IGxlYXN0IG9uZSBsaW5lOgorICAgICAgICBmb3JtYXRUb0hlaWdodChmUGl4SGVpZ2h0ICsgMSk7CisKKyAgICAgICAgZW5hYmxlQkdGb3JtYXQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGaWxsIHRoZSBsYXlvdXQgaW5mbyB3aXRoIGluZm9ybWF0aW9uIGFwcHJvcHJpYXRlIHRvIHRoZSBwc2V1ZG9saW5lLgorICAgICAqLworICAgIHByaXZhdGUgc3luY2hyb25pemVkIExheW91dEluZm8gcHNldWRvTGluZUluZm8oTGF5b3V0SW5mbyBpbmZvLCBpbnQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgQXR0cmlidXRlTWFwIHN0ID0gZlRleHQucGFyYWdyYXBoU3R5bGVBdChmTFRDdXJUZXh0TGVuKTsgLy8gPz8/IGlmIHRleHQgaXMgZW1wdHkgb3IgdGhpcyBpcyB0aGUgZW5kIG9mIHRoZSB0ZXh0LCB3aGF0IGhhcHBlbnM/CisgICAgICAgIFBhcmFncmFwaFJlbmRlcmVyIHJlbmRlcmVyID0gZ2V0UmVuZGVyZXJGb3Ioc3QpOworICAgICAgICBpbmZvID0gcmVuZGVyZXIubGF5b3V0KGZUZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExpbmVCcmVha01lYXN1cmVyKW51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkZvbnRSZW5kZXJDb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkxpbmVEaW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkxpbmVEaW0pOworCisgICAgICAgIHJldHVybiBpbmZvOworICAgIH0KKworICAgIC8qKgorICAgICogUmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgbGFzdCB2YWxpZCBsaW5lIGluIHRoZSBsaW5lIHRhYmxlLgorICAgICovCisgICAgcHJpdmF0ZSBpbnQgbGFzdExpbmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIChmTFROZWdTdGFydCA9PSBmTFRTaXplKSA/IGZMVFBvc0VuZCA6IGZMVFNpemUgLSAxOworICAgIH0KKworICAgIC8qKgorICAgICogU2hpZnQgbGluZSB0YWJsZSBzdWNoIHRoYXQgPHR0Pmxhc3RQb3M8L3R0PiBpcyB0aGUgbGFzdCBwb3NpdGl2ZQorICAgICogZW50cnkgaW4gdGhlIHRhYmxlLiA8Yj5OT1RFOiA8dHQ+bGFzdFBvczwvdHQ+IG11c3QgYmUgYSB2YWxpZCBsaW5lITwvYj4KKyAgICAqIDxwPgorICAgICogQHBhcmFtIGxhc3RQb3MgdGhlIGluZGV4IG9mIHRoZSBsaW5lIHdoaWNoIHdpbGwgYmVjb21lIHRoZSBsYXN0IHBvc2l0aXZlCisgICAgKiBlbnRyeSBpbiB0aGUgbGluZSB0YWJsZQorICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHNoaWZ0VGFibGVUbyhpbnQgbGFzdFBvcykKKyAgICB7CisgICAgICAgIExheW91dEluZm8gbGk7CisKKyAgICAgICAgd2hpbGUgKGxhc3RQb3MgPCBmTFRQb3NFbmQpICAgIHsgLy8gc2hpZnQgKydzIHRvIC0ncworICAgICAgICAgICAgbGkgPSBmTGluZVRhYmxlW2ZMVFBvc0VuZF07CisgICAgICAgICAgICBmTGluZVRhYmxlW2ZMVFBvc0VuZC0tXSA9IG51bGw7CisKKyAgICAgICAgICAgIGxpLm1ha2VSZWxhdGl2ZVRvRW5kKGZMVEN1clRleHRMZW4sIGZQaXhIZWlnaHQpOworCisgICAgICAgICAgICBmTGluZVRhYmxlWy0tZkxUTmVnU3RhcnRdID0gbGk7CisgICAgICAgIH0KKworICAgICAgICB3aGlsZSAobGFzdFBvcyA+PSBmTFROZWdTdGFydCkgeyAvLyBzaGlmdCAtJ3MgdG8gKydzCisgICAgICAgICAgICBsaSA9IGZMaW5lVGFibGVbZkxUTmVnU3RhcnRdOworICAgICAgICAgICAgZkxpbmVUYWJsZVtmTFROZWdTdGFydCsrXSA9ICAgIG51bGw7CisKKyAgICAgICAgICAgIGxpLm1ha2VSZWxhdGl2ZVRvQmVnaW5uaW5nKGZMVEN1clRleHRMZW4sIGZQaXhIZWlnaHQpOworCisgICAgICAgICAgICBmTGluZVRhYmxlWysrZkxUUG9zRW5kXSAgICA9IGxpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgKiBJbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgbGluZSB0YWJsZS4KKyAgICAqLworICAgIHByaXZhdGUgdm9pZCBleHBhbmRMaW5lVGFibGUoKQorICAgIHsKKyAgICAgICAgLy8gVGhpcyBqdXN0IGRvdWJsZXMgdGhlIHNpemUgb2YgdGhlIGxpbmUgdGFibGUuCisKKyAgICAgICAgTGF5b3V0SW5mbyBuZXdMaW5lVGFibGVbXSA9IG5ldyBMYXlvdXRJbmZvW2ZMaW5lVGFibGUubGVuZ3RoICogMl07CisgICAgICAgIGludCBuZXdOZWdTdGFydCA9IG5ld0xpbmVUYWJsZS5sZW5ndGggLSAoZkxpbmVUYWJsZS5sZW5ndGggLSBmTFROZWdTdGFydCk7CisKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShmTGluZVRhYmxlLCAwLCBuZXdMaW5lVGFibGUsIDAsIGZMVFBvc0VuZCArIDEpOworICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGZMaW5lVGFibGUsIGZMVE5lZ1N0YXJ0LCBuZXdMaW5lVGFibGUsIG5ld05lZ1N0YXJ0LCBmTFRTaXplIC0gZkxUTmVnU3RhcnQpOworCisgICAgICAgIGZMVE5lZ1N0YXJ0ID0gbmV3TmVnU3RhcnQ7CisgICAgICAgIGZMVFNpemUgPSBuZXdMaW5lVGFibGUubGVuZ3RoOworICAgICAgICBmTGluZVRhYmxlID0gbmV3TGluZVRhYmxlOworICAgIH0KKworICAgIC8qKgorICAgICogUmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgbGluZSBjb250YWluaW5nIHRoZSBwaXhlbCBwb3NpdGlvbiA8dHQ+ZmlsbENvb3JkPC90dD4uCisgICAgKiBJZiBmaWxsQ29vcmQgZXhjZWVkcyB0aGUgYm90dG9tIG9mIHRoZSB0ZXh0LCByZXR1cm4ga0FmdGVyTGFzdExpbmUuCisgICAgKiBJZiBmaWxsQ29vcmQgaXMgbGVzcyB0aGFuIHRoZSB0b3Agb2YgdGhlIHRleHQsIHJldHVybiBrQmVmb3JlRmlyc3RMaW5lLgorICAgICogPHA+CisgICAgKiBAcGFyYW0gZmlsbENvb3JkICJoZWlnaHQiIG9mIGxpbmUgdG8gbG9jYXRlLgorICAgICovCisgICAgcHJpdmF0ZSBpbnQgZmluZExpbmVBdChpbnQgZmlsbENvb3JkKQorICAgIHsKKyAgICAgICAgaW50IGxvdywgaGlnaCwgbWlkOworICAgICAgICBpbnQgbG93U3RhcnQsIGhpZ2hTdGFydCwgbWlkU3RhcnQ7CisKKyAgICAgICAgaWYgKGZpbGxDb29yZCA+PSBmUGl4SGVpZ2h0KQorICAgICAgICAgICAgcmV0dXJuIGtBZnRlckxhc3RMaW5lOworICAgICAgICBlbHNlIGlmIChmaWxsQ29vcmQgPCAwKQorICAgICAgICAgICAgcmV0dXJuIGtCZWZvcmVGaXJzdExpbmU7CisKKyAgICAgICAgaWYgKChmTFROZWdTdGFydCA8IGZMVFNpemUpICYmIChmaWxsQ29vcmQgPj0gZkxpbmVUYWJsZVtmTFROZWdTdGFydF0uZ2V0R3JhcGhpY1N0YXJ0KGZQaXhIZWlnaHQpKSkgeworICAgICAgICAgICAgZmlsbENvb3JkIC09IGZQaXhIZWlnaHQ7CisKKyAgICAgICAgICAgIGxvdyA9IGZMVE5lZ1N0YXJ0OworICAgICAgICAgICAgaGlnaCA9IGZMVFNpemU7CisgICAgICAgICAgICBoaWdoU3RhcnQgPSAwOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbG93ID0gMDsKKyAgICAgICAgICAgIGhpZ2ggPSBmTFRQb3NFbmQgKyAxOworICAgICAgICAgICAgaGlnaFN0YXJ0ID0gZkxpbmVUYWJsZVtmTFRQb3NFbmRdLmdldEdyYXBoaWNTdGFydCgwKSArIGZMaW5lVGFibGVbZkxUUG9zRW5kXS5nZXRIZWlnaHQoKTsKKyAgICAgICAgfQorICAgICAgICBsb3dTdGFydCA9IGZMaW5lVGFibGVbbG93XS5nZXRHcmFwaGljU3RhcnQoMCk7CisKKyAgICAgICAgZG8geworICAgICAgICAgICAgaWYgKGxvd1N0YXJ0ID09IGhpZ2hTdGFydCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbG93OworCisgICAgICAgICAgICBtaWQgPSBsb3cgKyAoZmlsbENvb3JkIC0gbG93U3RhcnQpIC8gKGhpZ2hTdGFydCAtIGxvd1N0YXJ0KSAqIChoaWdoIC0gbG93KTsKKyAgICAgICAgICAgIG1pZFN0YXJ0ID0gZkxpbmVUYWJsZVttaWRdLmdldEdyYXBoaWNTdGFydCgwKTsKKworICAgICAgICAgICAgaWYgKG1pZFN0YXJ0ID4gZmlsbENvb3JkKSB7CisgICAgICAgICAgICAgICAgaGlnaCA9IG1pZDsKKyAgICAgICAgICAgICAgICBoaWdoU3RhcnQgPSBmTGluZVRhYmxlW2hpZ2hdLmdldEdyYXBoaWNTdGFydCgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1pZFN0YXJ0ICsgZkxpbmVUYWJsZVttaWRdLmdldEhlaWdodCgpIDw9IGZpbGxDb29yZCkgeworICAgICAgICAgICAgICAgIGxvdyA9IG1pZCArIDE7CisgICAgICAgICAgICAgICAgbG93U3RhcnQgPSBmTGluZVRhYmxlW2xvd10uZ2V0R3JhcGhpY1N0YXJ0KDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBtaWQ7CisKKyAgICAgICAgfSB3aGlsZSAobG93IDwgaGlnaCk7CisKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSBsaW5lLgorICAgICAqIEBwYXJhbSBsaW5lIHRoZSBpbnRlcm5hbCBpbmRleCBvZiB0aGUgbGluZSAoZGlyZWN0IGluZGV4IGludG8gbGluZXRhYmxlKS4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBsaW5lQ2hhclN0YXJ0SW50ZXJuYWwoaW50IGxpbmUpCisgICAgeworICAgICAgICByZXR1cm4gZkxpbmVUYWJsZVtsaW5lXS5nZXRDaGFyU3RhcnQoZkxUQ3VyVGV4dExlbik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIGxpbmUuCisgICAgICogQHBhcmFtIGxpbmUgdGhlIGludGVybmFsIGluZGV4IG9mIHRoZSBsaW5lIChkaXJlY3QgaW5kZXggaW50byBsaW5ldGFibGUpLgorICAgICAqLworICAgIHByaXZhdGUgaW50IGxpbmVDaGFyTGltaXRJbnRlcm5hbChpbnQgbGluZSkKKyAgICB7CisgICAgICAgIHJldHVybiBsaW5lQ2hhclN0YXJ0SW50ZXJuYWwobGluZSkgKyBmTGluZVRhYmxlW2xpbmVdLmdldENoYXJMZW5ndGgoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGdyYXBoaWMgc3RhcnQgb2YgdGhlIGxpbmUsIHVuYWRqdXN0ZWQgZm9yIGZpbGwgZGlyZWN0aW9uLgorICAgICAqIEBwYXJhbSBsaW5lIHRoZSBpbnRlcm5hbCBpbmRleCBvZiB0aGUgbGluZSAoZGlyZWN0IGluZGV4IGludG8gbGluZXRhYmxlKS4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBsaW5lR3JhcGhpY1N0YXJ0SW50ZXJuYWwoaW50IGxpbmUpCisgICAgeworICAgICAgICByZXR1cm4gZkxpbmVUYWJsZVtsaW5lXS5nZXRHcmFwaGljU3RhcnQoZlBpeEhlaWdodCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBncmFwaGljIGxpbWl0IG9mIHRoZSBsaW5lLCB1bmFkanVzdGVkIGZvciBmaWxsIGRpcmVjdGlvbi4KKyAgICAgKiBAcGFyYW0gbGluZSB0aGUgaW50ZXJuYWwgaW5kZXggb2YgdGhlIGxpbmUgKGRpcmVjdCBpbmRleCBpbnRvIGxpbmV0YWJsZSkuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbGluZUdyYXBoaWNMaW1pdEludGVybmFsKGludCBsaW5lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGxpbmVHcmFwaGljU3RhcnRJbnRlcm5hbChsaW5lKSArIGZMaW5lVGFibGVbbGluZV0uZ2V0SGVpZ2h0KCk7CisgICAgfQorCisgICAgLyoqCisgICAgKiBSZXR1cm4gdGhlIG9mZnNldCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIHdoaWNoIGhhcyBub3QgYmVlbiBmb3JtYXR0ZWQuCisgICAgKiBJZiBhbGwgdGV4dCBoYXMgYmVlbiBmb3JtYXR0ZWQsIHJldHVybiB0aGUgY3VycmVudCB0ZXh0IGxlbmd0aC4KKyAgICAqLworICAgIHByaXZhdGUgaW50IGxhc3RMaW5lQ2hhclN0b3AoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGxpbmVDaGFyTGltaXRJbnRlcm5hbChsYXN0TGluZSgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSAndmFsaWQnIGxpbmUgY29udGFpbmluZyBvZmZzZXQuICBUaGlzIGRpZmZlcnMgZnJvbSBnZXRMaW5lQ29udGFpbmluZyBpbgorICAgICAqIHRoaXMgbWFwcyBrQWZ0ZXJMYXN0TGluZSB0byBsYXN0TGluZSgpLCBzbyB0aGF0IHRoZSByZXN1bHQgaXMgYWx3YXlzIGEgdmFsaWQKKyAgICAgKiBsaW5ldGFibGUgaW5kZXguCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZ2V0VmFsaWRMaW5lQ29udGFpbmluZyhUZXh0T2Zmc2V0IG9mZnNldCkgeworCisgICAgICAgIHJldHVybiBnZXRWYWxpZExpbmVDb250YWluaW5nKG9mZnNldC5mT2Zmc2V0LCBvZmZzZXQuZlBsYWNlbWVudCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgJ3ZhbGlkJyBsaW5lIGNvbnRhaW5pbmcgb2Zmc2V0LiAgVGhpcyBkaWZmZXJzIGZyb20gZ2V0TGluZUNvbnRhaW5pbmcgaW4KKyAgICAgKiB0aGlzIG1hcHMga0FmdGVyTGFzdExpbmUgdG8gbGFzdExpbmUoKSwgc28gdGhhdCB0aGUgcmVzdWx0IGlzIGFsd2F5cyBhIHZhbGlkCisgICAgICogbGluZXRhYmxlIGluZGV4LgorICAgICAqLworICAgIHByaXZhdGUgaW50IGdldFZhbGlkTGluZUNvbnRhaW5pbmcoaW50IGluc09mZnNldCwgYm9vbGVhbiBwbGFjZW1lbnQpCisgICAgeworICAgICAgICBpbnQgbGluZSA9IGdldExpbmVDb250YWluaW5nKGluc09mZnNldCwgcGxhY2VtZW50KTsKKyAgICAgICAgaWYgKGxpbmUgPT0ga0FmdGVyTGFzdExpbmUpCisgICAgICAgICAgICBsaW5lID0gbGFzdExpbmUoKTsKKyAgICAgICAgZWxzZSBpZiAobGluZSA9PSBrQmVmb3JlRmlyc3RMaW5lKQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiRGVidWc6IGdldExpbmVDb250YWluaW5nIHJldHVybmVkIGtCZWZvcmVGaXJzdExpbmUiKTsKKworICAgICAgICByZXR1cm4gbGluZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIFJldHVybiBpbmRleCBvZiBsaW5lIGNvbnRhaW5pbmcgPHR0Pm9mZnNldDwvdHQ+LgorICAgICogPz8/IElmIG9mZnNldCBpcyBhZnRlciBsYXN0IGZvcm1hdHRlZCBsaW5lLCByZXR1cm5zIGtBZnRlckxhc3RMaW5lLiAgSXMgdGhhdCBnb29kPworICAgICogPHA+CisgICAgKiBAcGFyYW0gb2Zmc2V0IHRoZSBvZmZzZXQgd2hvc2UgbGluZSBzaG91bGQgYmUgbG9jYXRlZAorICAgICogQHJldHVybnMgbGluZSBjb250YWluaW5nIDx0dD5vZmZzZXQ8L3R0PgorICAgICovCisgICAgcHJpdmF0ZSBpbnQgZ2V0TGluZUNvbnRhaW5pbmcoVGV4dE9mZnNldCBvZmZzZXQpIHsKKworICAgICAgICByZXR1cm4gZ2V0TGluZUNvbnRhaW5pbmcob2Zmc2V0LmZPZmZzZXQsIG9mZnNldC5mUGxhY2VtZW50KTsKKyAgICB9CisKKyAgICBwcml2YXRlIGludCBnZXRMaW5lQ29udGFpbmluZyhpbnQgaW5zT2Zmc2V0LCBib29sZWFuIHBsYWNlbWVudCkKKyAgICB7CisgICAgICAgIGludCBwb3MgPSBpbnNPZmZzZXQ7CisgICAgICAgIGlmIChwbGFjZW1lbnQgPT0gVGV4dE9mZnNldC5CRUZPUkVfT0ZGU0VUICYmIHBvcyA+IDApCisgICAgICAgICAgICAtLXBvczsKKworICAgICAgICBpZiAocG9zIDwgMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiRGVidWc6IGdldExpbmVDb250YWluaW5nIG9mZnNldCA8IDA6ICIgKyBwb3MpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBvcyA+PSBsYXN0TGluZUNoYXJTdG9wKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBlbXB0eVBhcmFncmFwaEF0RW5kT2ZUZXh0KCk/IGtBZnRlckxhc3RMaW5lIDogbGFzdExpbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBsb3csIGhpZ2gsIG1pZDsKKyAgICAgICAgaW50IGxvd1N0YXJ0LCBoaWdoU3RhcnQsIG1pZFN0YXJ0OworCisgICAgICAgIGlmICgoZkxUTmVnU3RhcnQgPCBmTFRTaXplKSAmJiAocG9zID49IGZMaW5lVGFibGVbZkxUTmVnU3RhcnRdLmdldENoYXJTdGFydChmTFRDdXJUZXh0TGVuKSkpIHsKKyAgICAgICAgICAgIHBvcyAtPSBmTFRDdXJUZXh0TGVuOworCisgICAgICAgICAgICBsb3cgPSBmTFROZWdTdGFydDsKKyAgICAgICAgICAgIGhpZ2ggPSBmTFRTaXplOworICAgICAgICAgICAgaGlnaFN0YXJ0ID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGxvdyA9IDA7CisgICAgICAgICAgICBoaWdoID0gZkxUUG9zRW5kICsgMTsKKyAgICAgICAgICAgIGhpZ2hTdGFydCA9IGZMaW5lVGFibGVbZkxUUG9zRW5kXS5nZXRDaGFyU3RhcnQoMCkgKyBmTGluZVRhYmxlW2ZMVFBvc0VuZF0uZ2V0Q2hhckxlbmd0aCgpOworICAgICAgICB9CisgICAgICAgIGxvd1N0YXJ0ID0gZkxpbmVUYWJsZVtsb3ddLmdldENoYXJTdGFydCgwKTsKKworICAgICAgICBkbyB7CisgICAgICAgICAgICBpZiAoaGlnaFN0YXJ0ID09IGxvd1N0YXJ0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGxvdzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbWlkID0gbG93ICsgKHBvcyAtIGxvd1N0YXJ0KSAvIChoaWdoU3RhcnQgLSBsb3dTdGFydCkgKiAoaGlnaCAtIGxvdyk7CisgICAgICAgICAgICBtaWRTdGFydCA9IGZMaW5lVGFibGVbbWlkXS5nZXRDaGFyU3RhcnQoMCk7CisKKyAgICAgICAgICAgIGlmIChtaWRTdGFydCA+IHBvcykgeworICAgICAgICAgICAgICAgIGhpZ2ggPSBtaWQ7CisgICAgICAgICAgICAgICAgaGlnaFN0YXJ0ID0gZkxpbmVUYWJsZVtoaWdoXS5nZXRDaGFyU3RhcnQoMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtaWRTdGFydCArIGZMaW5lVGFibGVbbWlkXS5nZXRDaGFyTGVuZ3RoKCkgPD0gcG9zKSB7CisgICAgICAgICAgICAgICAgbG93ID0gbWlkICsgMTsKKyAgICAgICAgICAgICAgICBsb3dTdGFydCA9IGZMaW5lVGFibGVbbG93XS5nZXRDaGFyU3RhcnQoMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWlkOworICAgICAgICAgICAgfQorCisgICAgICAgIH0gd2hpbGUgKGxvdyA8IGhpZ2gpOworCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qKgorICAgICogRGlzcGxheSB0ZXh0IGluIGRyYXdBcmVhLiBEb2VzIG5vdCByZWZvcm1hdCB0ZXh0LgorICAgICogPHA+CisgICAgKiBAcGFyYW0gZyB0aGUgR3JhcGhpY3Mgb2JqZWN0IGluIHdoaWNoIHRvIGRyYXcKKyAgICAqIEBwYXJhbSBkcmF3QXJlYSB0aGUgcmVjdGFuZ2xlLCBpbiBnJ3MgY29vcmRpbmF0ZSBzeXN0ZW0sIGluIHdoaWNoIHRvIGRyYXcKKyAgICAqIEBwYXJhbSBvcmlnaW4gdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgdGV4dCwgaW4gZydzIGNvb3JkaW5hdGUgc3lzdGVtCisgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgZHJhdyhHcmFwaGljcyBnLCBSZWN0YW5nbGUgZHJhd0FyZWEsIFBvaW50IG9yaWdpbikKKyAgICB7CisgICAgICAgIGRyYXcoZywgZHJhd0FyZWEsIG9yaWdpbiwgbnVsbCwgbnVsbCwgbnVsbCk7CisgICAgfQorCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIGRyYXcoR3JhcGhpY3MgZywgUmVjdGFuZ2xlIGRyYXdBcmVhLCBQb2ludCBvcmlnaW4sCisgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBzZWxTdGFydCwgVGV4dE9mZnNldCBzZWxTdG9wLCBDb2xvciBoaWdobGlnaHQpIHsKKworICAgICAgICBjaGVja1RpbWVTdGFtcCgpOworICAgICAgICBHcmFwaGljczJEIGcyZCA9IEdyYXBoaWNzMkRDb252ZXJzaW9uLmdldEdyYXBoaWNzMkQoZyk7CisKKyAgICAgICAgLy8gR2V0IHN0YXJ0aW5nIGFuZCBlbmRpbmcgZmlsbCAnaGVpZ2h0cy4nCisKKyAgICAgICAgaW50IHN0YXJ0RmlsbDsKKyAgICAgICAgaW50IGVuZEZpbGw7CisKKyAgICAgICAgaWYgKGZGaWxsSW5jKQorICAgICAgICAgICAgc3RhcnRGaWxsID0gZHJhd0FyZWEueSAtIG9yaWdpbi55OworICAgICAgICBlbHNlCisgICAgICAgICAgICBzdGFydEZpbGwgPSBvcmlnaW4ueSAtIChkcmF3QXJlYS55ICsgZHJhd0FyZWEuaGVpZ2h0KTsKKworICAgICAgICBlbmRGaWxsID0gc3RhcnRGaWxsICsgZHJhd0FyZWEuaGVpZ2h0OworCisgICAgICAgIC8vIFdlJ3JlIGRyYXdpbmcgb25lIG1vcmUgbGluZSB0aGFuIG5lY2Vzc2FyeSB3aGVuIHdlIHVwZGF0ZSBiZWNhdXNlIG9mIGEKKyAgICAgICAgLy8gc2VsZWN0aW9uIGNoYW5nZS4gIEJ1dCB3ZSdyZSBkcmF3aW5nIHRoZSByaWdodCBhbW91bnQgb2YgbGluZXMgd2hlbiB3ZQorICAgICAgICAvLyByZWZyZXNoIHRoZSB3aG9sZSBkaXNwbGF5LiAgVGhpcyBhZmZlY3RzIHJlbmRlcmluZyBzcGVlZCBzaWduaWZpY2FudGx5LAorICAgICAgICAvLyBhbmQgY3JlYXRpbmcgYSBuZXcgcGFyYWdyYXBoIHJlbmRlcmVyIGZvciBlYWNoIGxpbmUgZG9lc24ndCBoZWxwIGVpdGhlci4KKyAgICAgICAgLy8gRm9yIG5vdywgSSdtIGdvaW5nIHRvIHN1YnRyYWN0IG9uZSBmcm9tIHRoZSBmaWxsIGhlaWdodCwgb24gdGhlIHRoZW9yeQorICAgICAgICAvLyB0aGF0IHdlJ3JlIHBpY2tpbmcgdXAgdGhlIGV4dHJhIGxpbmUgYmVjYXVzZSBvZiBhIG9uZS1waXhlbCBzbG9wLgorICAgICAgICAvLyBUaGlzIHNlZW1zIHRvIHdvcmssIGFsdGhvdWdoIHBlcmhhcHMgaWYgb25lIHBpeGVsIG9mIGEgbGluZSBhdCB0aGUKKyAgICAgICAgLy8gYm90dG9tIHNob3VsZCBkcmF3LCBpdCB3b24ndC4KKworICAgICAgICAtLWVuZEZpbGw7CisKKyAgICAgICAgLy8gRm9ybWF0IHRvIGVuZGluZyBmaWxsIGhlaWdodCwgc28gbGluZSB0YWJsZSBpcyB2YWxpZCBmb3IgYWxsIGxpbmVzIHdlIG5lZWQgdG8gZHJhdy4KKworICAgICAgICBmb3JtYXRUb0hlaWdodChlbmRGaWxsKTsKKworICAgICAgICAvLyBHZXQgc3RhcnRpbmcgYW5kIGVuZGluZyBsaW5lcyBmb3IgZmlsbCBoZWlnaHQuICBJZiB0aGUgc3RhcnQgb2YgdGhlIGZpbGwgaXMgYWZ0ZXIgdGhlIGxhc3QgbGluZSwKKyAgICAgICAgLy8gb3IgdGhlIGVuZCBvZiB0aGUgZmlsbCBpcyBiZWZvcmUgdGhlIGZpcnN0IGxpbmUsIHJldHVybi4KKworICAgICAgICBpbnQgY3VyTGluZSA9IGZpbmRMaW5lQXQoc3RhcnRGaWxsKTsKKyAgICAgICAgaWYgKGN1ckxpbmUgPT0ga0FmdGVyTGFzdExpbmUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGVsc2UgaWYgKGN1ckxpbmUgPT0ga0JlZm9yZUZpcnN0TGluZSkKKyAgICAgICAgICAgIGN1ckxpbmUgPSAwOworCisgICAgICAgIGludCBsYXN0TGluZSA9IGZpbmRMaW5lQXQoZW5kRmlsbCk7CisgICAgICAgIGlmIChsYXN0TGluZSA9PSBrQmVmb3JlRmlyc3RMaW5lKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBlbHNlIGlmIChsYXN0TGluZSA9PSBrQWZ0ZXJMYXN0TGluZSkKKyAgICAgICAgICAgIGxhc3RMaW5lID0gbGFzdExpbmUoKTsKKworICAgICAgICAvLyBHZXQgdGhlIGJhc2UgY29vcmRpbmF0ZXMgKGxpbmVYLCBsaW5lWSkgZm9yIHRoZSBzdGFydGluZyBsaW5lLgorCisgICAgICAgIGludCBsaW5lWCwgbGluZVk7CisKKyAgICAgICAgaW50IGdTdGFydCA9IGxpbmVHcmFwaGljU3RhcnRJbnRlcm5hbChjdXJMaW5lKTsKKworICAgICAgICBpZiAoZkhMaW5lKSB7CisgICAgICAgICAgICBpZiAoZkxpbmVJbmMpCisgICAgICAgICAgICAgICAgbGluZVggPSBvcmlnaW4ueDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsaW5lWCA9IG9yaWdpbi54IC0gZkxpbmVEaW07CisgICAgICAgICAgICBpZiAoZkZpbGxJbmMpCisgICAgICAgICAgICAgICAgbGluZVkgPSBvcmlnaW4ueSArIGdTdGFydDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsaW5lWSA9IG9yaWdpbi55IC0gKGdTdGFydCArIGZMaW5lVGFibGVbY3VyTGluZV0uZ2V0SGVpZ2h0KCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGZMaW5lSW5jKQorICAgICAgICAgICAgICAgIGxpbmVZID0gb3JpZ2luLnk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGluZVkgPSBvcmlnaW4ueSAtIGZMaW5lRGltOworICAgICAgICAgICAgaWYgKGZGaWxsSW5jKQorICAgICAgICAgICAgICAgIGxpbmVYID0gb3JpZ2luLnggKyBnU3RhcnQ7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGluZVggPSBvcmlnaW4ueCAtIChnU3RhcnQgKyBmTGluZVRhYmxlW2N1ckxpbmVdLmdldEhlaWdodCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEl0ZXJhdGUgdGhyb3VnaCBsaW5lcywgZHJhd2luZyBlYWNoIG9uZSBhbmQgaW5jcmVtZW50aW5nIHRoZSBiYXNlIGNvb3JkaW5hdGUgYnkgdGhlIGxpbmUgaGVpZ2h0LgorCisKKyAgICAgICAgZm9yICg7IGN1ckxpbmUgPD0gbGFzdExpbmU7IGN1ckxpbmUrKykgeworICAgICAgICAgICAgLy8gQWRqdXN0IGN1ckxpbmUgYXJvdW5kIGdhcCBpbiBsaW5lIHRhYmxlLgorICAgICAgICAgICAgaWYgKChjdXJMaW5lID4gZkxUUG9zRW5kKSAmJiAoY3VyTGluZSA8IGZMVE5lZ1N0YXJ0KSkKKyAgICAgICAgICAgICAgICBjdXJMaW5lID0gZkxUTmVnU3RhcnQ7CisKKyAgICAgICAgICAgIGZMaW5lVGFibGVbY3VyTGluZV0ucmVuZGVyV2l0aEhpZ2hsaWdodChmTFRDdXJUZXh0TGVuLCBnMmQsIGZMaW5lRGltLCBsaW5lWCwgbGluZVksIHNlbFN0YXJ0LCBzZWxTdG9wLCBoaWdobGlnaHQpOworCisgICAgICAgICAgICAvLyBJbmNyZW1lbnQgbGluZSBiYXNlIGZvciBuZXh0IGl0ZXJhdGlvbi4KKyAgICAgICAgICAgIGludCBsaW5lSW5jID0gZkxpbmVUYWJsZVtjdXJMaW5lXS5nZXRIZWlnaHQoKTsKKyAgICAgICAgICAgIGlmIChmRmlsbEluYykgeworICAgICAgICAgICAgICAgIGlmIChmSExpbmUpCisgICAgICAgICAgICAgICAgICAgIGxpbmVZICs9IGxpbmVJbmM7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBsaW5lWCArPSBsaW5lSW5jOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoZkhMaW5lKQorICAgICAgICAgICAgICAgICAgICBsaW5lWSAtPSBsaW5lSW5jOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgbGluZVggLT0gbGluZUluYzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICogRm9ybWF0IHRleHQgdG8gZ2l2ZW4gaGVpZ2h0LgorICAgICogQHBhcmFtIGhlaWdodCB0aGUgaGVpZ2h0IHRvIHdoaWNoIHRleHQgd2lsbCBiZSBmb3JtYXR0ZWQuCisgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgZm9ybWF0VG9IZWlnaHQoaW50IHJlcUhlaWdodCkKKyAgICB7CisgICAgICAgIGNoZWNrVGltZVN0YW1wKCk7CisgICAgICAgIGlmIChyZXFIZWlnaHQgPD0gZlBpeEhlaWdodCkgLy8gYWxyZWFkeSBmb3JtYXR0ZWQgdG8gdGhpcyBoZWlnaHQKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoZlRleHQubGVuZ3RoKCkgPT0gbGFzdExpbmVDaGFyU3RvcCgpKSAvLyBhbHJlYWR5IGZvcm1hdHRlZCBhbGwgdGhlIHRleHQKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyArKysgc2hvdWxkIGRpc2FibGUgdXBkYXRlIHRocmVhZCBoZXJlCisKKyAgICAgICAgaWYgKGZMVE5lZ1N0YXJ0IDwgZkxUU2l6ZSkKKyAgICAgICAgICAgIHNoaWZ0VGFibGVUbyhmTFRTaXplIC0gMSk7CisKKyAgICAgICAgZm9ybWF0VGV4dCgwLCAwLCByZXFIZWlnaHQsIGZhbHNlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGb3JtYXQgdGV4dCB0byBnaXZlbiBvZmZzZXQuCisgICAgICogQHBhcmFtIG9mZnNldCB0aGUgb2Zmc2V0IHRvIHdoaWNoIHRleHQgd2lsbCBiZSBmb3JtYXR0ZWQuCisgICAgICovCisgICAgIHByaXZhdGUgdm9pZCBmb3JtYXRUb09mZnNldChUZXh0T2Zmc2V0IG9mZnNldCkKKyAgICAgeworICAgICAgICBmb3JtYXRUb09mZnNldChvZmZzZXQuZk9mZnNldCwgb2Zmc2V0LmZQbGFjZW1lbnQpOworICAgICB9CisgICAgIAorICAgICBwcml2YXRlIHN5bmNocm9uaXplZCB2b2lkIGZvcm1hdFRvT2Zmc2V0KGludCBvZmZzZXQsIGJvb2xlYW4gcGxhY2VtZW50KSB7CisgICAgICAgIAorICAgICAgICBjaGVja1RpbWVTdGFtcCgpOworICAgICAgICBpbnQgbGxjcyA9IGxhc3RMaW5lQ2hhclN0b3AoKTsKKyAgICAgICAgaWYgKGxsY3MgPCBmTFRDdXJUZXh0TGVuKSB7CisgICAgICAgICAgICBpbnQgbGltaXQgPSBvZmZzZXQ7CisgICAgICAgICAgICBpZiAocGxhY2VtZW50ID09IFRleHRPZmZzZXQuQUZURVJfT0ZGU0VUKSAvLyBmb3JtYXQgdG8gcGFzdCBjaGFyYWN0ZXIgb2Zmc2V0IGlzIGFzc29jaWF0ZWQgd2l0aAorICAgICAgICAgICAgICAgIGxpbWl0Kys7CisgICAgICAgICAgICBpZiAobGltaXQgPj0gbGxjcykgeyAvLyA/Pz8gd291bGQgJz4nIGJlIG9rIGluc3RlYWQgb3IgJz49Jz8KKyAgICAgICAgICAgICAgICBpZiAobGltaXQgPiBmTFRDdXJUZXh0TGVuKQorICAgICAgICAgICAgICAgICAgICBsaW1pdCA9IGZMVEN1clRleHRMZW47CisKKyAgICAgICAgICAgICAgICBzaGlmdFRhYmxlVG8obGFzdExpbmUoKSk7CisgICAgICAgICAgICAgICAgZm9ybWF0VGV4dChsbGNzLCBsaW1pdCAtIGxsY3MsIEludGVnZXIuTUFYX1ZBTFVFLCB0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICB9CisKKy8qKgorKiBSZWZvcm1hdCB0ZXh0IGFmdGVyIGEgY2hhbmdlLgorKiBBZnRlciB0aGUgZm9ybWF0dGVyJ3MgdGV4dCBjaGFuZ2VzLCBjYWxsIHRoaXMgbWV0aG9kIHRvIHJlZm9ybWF0LiAgRG9lcworKiBub3QgcmVkcmF3LgorKiBAcGFyYW0gYWZTdGFydCB0aGUgb2Zmc2V0IGludG8gdGhlIHRleHQgd2hlcmUgbW9kaWZpY2F0aW9uIGJlZ2FuOyAgaWUsIHRoZQorKiBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQgd2hpY2ggaXMgImRpZmZlcmVudCIgaW4gc29tZSB3YXkuICBEb2VzIG5vdAorKiBoYXZlIHRvIGJlIG5vbm5lZ2F0aXZlLgorKiBAcGFyYW0gYWZMZW5ndGggdGhlIG51bWJlciBvZiBuZXcgb3IgY2hhbmdlZCBjaGFyYWN0ZXJzIGluIHRoZSB0ZXh0LiAgU2hvdWxkIG5ldmVyCisqIGJlIGxlc3MgdGhhbiAwLgorKiBAcGFyYW0gdmlld1JlY3QgdGhlIFJlY3RhbmdsZSBpbiB3aGljaCB0aGUgdGV4dCB3aWxsIGJlIGRpc3BsYXllZC4gIFRoaXMgaXMgbmVlZGVkIGZvcgorKiByZXR1cm5pbmcgdGhlICJkYW1hZ2VkIiBhcmVhIC0gdGhlIGFyZWEgb2YgdGhlIHNjcmVlbiBpbiB3aGljaCB0aGUgdGV4dCBtdXN0IGJlIHJlZHJhd24uCisqIEBwYXJhbSBvcmlnaW4gdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgdGV4dCwgaW4gdGhlIGRpc3BsYXkncyBjb29yZGluYXRlIHN5c3RlbQorKiBAcmV0dXJucyBhIDx0dD5SZWN0YW5nbGU8L3R0PiB3aGljaCBzcGVjaWZpZXMgdGhlIGFyZWEgaW4gd2hpY2ggdGV4dCBtdXN0IGJlCisqIHJlZHJhd24gdG8gcmVmbGVjdCB0aGUgY2hhbmdlIHRvIHRoZSB0ZXh0LgorKi8KKyAgICBwdWJsaWMgUmVjdGFuZ2xlIHVwZGF0ZUZvcm1hdChmaW5hbCBpbnQgYWZTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IGFmTGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWN0YW5nbGUgdmlld1JlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50IG9yaWdpbikKKyAgICB7CisgICAgICAgIGlmIChhZlN0YXJ0IDwgMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiRGVidWc6IHVwZGF0ZUZvcm1hdCBhZlN0YXJ0IDwgMDogIiArIGFmU3RhcnQpOworICAgICAgICB9CisgICAgICAgIGlmIChmQmdGb3JtYXRBbGxvd2VkKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJCYWNrZ3JvdW5kIGZvcm1hdHRpbmcgc2hvdWxkIGhhdmUgYmVlbiBkaXNhYmxlZCIpOworICAgICAgICB9CisgICAgICAgIGZDdXJUaW1lU3RhbXAgPSBmVGV4dC5nZXRUaW1lU3RhbXAoKTsKKyAgICAgICAgCisgICAgICAgIGludCBjdXJMaW5lID0gZ2V0VmFsaWRMaW5lQ29udGFpbmluZyhhZlN0YXJ0LCBUZXh0T2Zmc2V0LkFGVEVSX09GRlNFVCk7CisgICAgICAgIGludCBsaW5lU3RhcnRQb3MgPSBsaW5lQ2hhclN0YXJ0SW50ZXJuYWwoY3VyTGluZSk7CisKKyAgICAgICAgLy8gb3B0aW1pemUgYnkgZmluZGluZyBvdXQgd2hldGhlciBjaGFuZ2Ugb2NjdXJyZWQKKyAgICAgICAgLy8gYWZ0ZXIgZmlyc3Qgd29yZCBicmVhayBvbiBjdXJsaW5lCisKKyAgICAgICAgaW50IGZpcnN0UG9zc2libGVCcmVhazsKKworICAgICAgICBpZiAobGluZVN0YXJ0UG9zIDwgZlRleHQubGVuZ3RoKCkpIHsKKworICAgICAgICAgICAgaWYgKGZMaW5lQnJlYWsgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGZMaW5lQnJlYWsgPSBCcmVha0l0ZXJhdG9yLmdldExpbmVJbnN0YW5jZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgY2hhckl0ZXIgPSBmVGV4dC5jcmVhdGVDaGFyYWN0ZXJJdGVyYXRvcigpOworICAgICAgICAgICAgY2hhckl0ZXIuc2V0SW5kZXgobGluZVN0YXJ0UG9zKTsKKyAgICAgICAgICAgIGZMaW5lQnJlYWsuc2V0VGV4dChjaGFySXRlcik7CisKKyAgICAgICAgICAgIGZpcnN0UG9zc2libGVCcmVhayA9IGZMaW5lQnJlYWsuZm9sbG93aW5nKGxpbmVTdGFydFBvcyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmlyc3RQb3NzaWJsZUJyZWFrID0gYWZTdGFydDsKKworICAgICAgICBpZiAoKGN1ckxpbmUgPiAwKSAmJiAoZmlyc3RQb3NzaWJsZUJyZWFrID09IEJyZWFrSXRlcmF0b3IuRE9ORSB8fCBhZlN0YXJ0IDw9IGZpcnN0UG9zc2libGVCcmVhaykpIHsKKyAgICAgICAgICAgIGN1ckxpbmUtLTsKKyAgICAgICAgICAgIGlmIChjdXJMaW5lIDwgZkxUTmVnU3RhcnQgJiYgY3VyTGluZSA+IGZMVFBvc0VuZCkKKyAgICAgICAgICAgICAgICBjdXJMaW5lID0gZkxUUG9zRW5kOworICAgICAgICB9CisKKyAgICAgICAgc2hpZnRUYWJsZVRvKGN1ckxpbmUpOworCisgICAgICAgIGludCBwaXhIZWlnaHQ7IC8vIGFmdGVyIHRoZSBmb3JtYXRUZXh0IGNhbGwsIGF0IGxlYXN0IHBpeEhlaWdodCB0ZXh0IG11c3QgYmUgZm9ybWF0dGVkCisKKyAgICAgICAgaWYgKGZITGluZSkgeworICAgICAgICAgICAgaWYgKGZGaWxsSW5jKQorICAgICAgICAgICAgICAgIHBpeEhlaWdodCA9IHZpZXdSZWN0LnkgKyB2aWV3UmVjdC5oZWlnaHQgLSBvcmlnaW4ueTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBwaXhIZWlnaHQgPSBvcmlnaW4ueSAtIHZpZXdSZWN0Lnk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoZkZpbGxJbmMpCisgICAgICAgICAgICAgICAgcGl4SGVpZ2h0ID0gdmlld1JlY3QueCArIHZpZXdSZWN0LndpZHRoIC0gb3JpZ2luLng7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcGl4SGVpZ2h0ID0gb3JpZ2luLnggLSB2aWV3UmVjdC54OworICAgICAgICB9CisKKyAgICAgICAgUmVjdGFuZ2xlIHIgPSBmb3JtYXRUZXh0KGFmU3RhcnQsIGFmTGVuZ3RoLCBwaXhIZWlnaHQsIGZhbHNlKTsKKworICAgICAgICAvL2R1bXBMaW5lVGFibGUoKTsKKworICAgICAgICBpZiAoKGZQaXhIZWlnaHQgPCBwaXhIZWlnaHQpICYmIChmTFROZWdTdGFydCA8IGZMVFNpemUpICYmIChmTFRDdXJUZXh0TGVuID4gbGFzdExpbmVDaGFyU3RvcCgpKSkgeworICAgICAgICAgICAgc2hpZnRUYWJsZVRvKGxhc3RMaW5lKCkpOworICAgICAgICAgICAgUmVjdGFuZ2xlIHMgPSBmb3JtYXRUZXh0KDAsIDAsIHBpeEhlaWdodCwgZmFsc2UpOworICAgICAgICAgICAgciA9IHIudW5pb24ocyk7CisgICAgICAgIH0KKworICAgICAgICBpbnRsUmVjdChvcmlnaW4sIHIpOworICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiRGFtYWdlZCByZWN0OiAiK3IrIjsgb3JpZ2luOiAiK29yaWdpbik7CisKKyAgICAgICAgLy8gZG9uJ3QgbmVlZCB0byBzeW5jaHJvbml6ZWQgaGVyZSwgYi9jIHRoZSBkYWVtb24gc2hvdWxkbid0IGJlIHJ1bm5pbmcgd2hlbgorICAgICAgICAvLyB0aGlzIGlzIGV4ZWN1dGluZworCisgICAgICAgIGlmIChmVGV4dC5sZW5ndGgoKSA8IGxhc3RMaW5lQ2hhclN0b3AoKSkKKyAgICAgICAgICAgIGVuYWJsZUJHRm9ybWF0KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN0b3BCYWNrZ3JvdW5kRm9ybWF0dGluZygpOworCisgICAgICAgIC8vZHVtcExpbmVUYWJsZSgpOworCisgICAgICAgIHJldHVybiByOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIExpbmVCcmVha01lYXN1cmVyIG1ha2VNZWFzdXJlcihpbnQgcGFyYWdyYXBoU3RhcnQsIGludCBwYXJhZ3JhcGhMaW1pdCkgeworCisgICAgICAgIE1UZXh0SXRlcmF0b3IgaXRlciA9IG5ldyBNVGV4dEl0ZXJhdG9yKGZUZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmRm9udFJlc29sdmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoTGltaXQpOworICAgICAgICBMaW5lQnJlYWtNZWFzdXJlciBtZWFzdXJlciA9IG5ldyBMaW5lQnJlYWtNZWFzdXJlcihpdGVyLCBmRm9udFJlbmRlckNvbnRleHQpOworICAgICAgICBpZiAoZmdDYWNoZU1lYXN1cmVycykgeworICAgICAgICAgICAgZkNhY2hlZE1lYXN1cmVyU3RhcnQgPSBwYXJhZ3JhcGhTdGFydDsKKyAgICAgICAgICAgIGZDYWNoZWRNZWFzdXJlckxpbWl0ID0gcGFyYWdyYXBoTGltaXQ7CisgICAgICAgICAgICBmQ2FjaGVkTWVhc3VyZXIgPSBtZWFzdXJlcjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbWVhc3VyZXI7CisgICAgfSAgICAgICAgCisKKy8qKgorKiBDb21wdXRlIHRleHQgZm9ybWF0LiAgVGhpcyBtZXRob2QgY2FsY3VsYXRlcyB0ZXh0IGZvcm1hdDsgIGl0IGNhbiBiZQorKiBjYWxsZWQgZm9yIHZhcmlvdXMgcHVycG9zZXM6ICB0byByZWZvcm1hdCB0ZXh0IGFmdGVyIGFuIGVkaXQsIHRvCisqIGZvcm1hdCB0ZXh0IHRvIGEgcGFydGljdWxhciBoZWlnaHQsIG9yIHRvIGZvcm1hdCB0ZXh0IHVwIHRvIGEKKyogcGFydGljdWxhciBvZmZzZXQuCisqIDxwPgorKiBUaGUgY2FsbGluZyBtZXRob2QgbXVzdCBlbnN1cmUgdGhhdCA8dHQ+ZkxpbmVUYWJsZTwvdHQ+IGhhcyBiZWVuIHNoaWZ0ZWQKKyogc3VjaCB0aGF0IHRoZSBsYXN0IHBvc2l0aXZlIGxpbmUgaXMgd2hlcmUgdGhlIGZvcm1hdHRpbmcgb3BlcmF0aW9uIHdpbGwKKyogYmVnaW4uCisqIDxwPgorKiBDYWxsZWQgYnk6IDx0dD5mb3JtYXRUb0hlaWdodCgpPC90dD4sIDx0dD51cGRhdGVGb3JtYXQoKTwvdHQ+LAorKiA8dHQ+dGV4dE9mZnNldFRvUG9pbnQoKTwvdHQ+LCA8dHQ+Z2V0Qm91bmRpbmdSZWN0KCk8L3R0PgorKiBAcGFyYW0gYWZTdGFydCB0aGUgb2Zmc2V0IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQgd2hpY2ggaGFzIGNoYW5nZWQKKyogQHBhcmFtIGFmTGVuZ3RoIHRoZSBudW1iZXIgb2YgbmV3IG9yIGNoYW5nZWQgY2hhcmFjdGVycyBpbiB0aGUgdGV4dAorKiBAcGFyYW0gcmVxSGVpZ2h0IHRoZSBwaXhlbCBoZWlnaHQgdG8gd2hpY2ggdGV4dCBtdXN0IGJlIGZvcm1hdHRlZC4gIElnbm9yZWQKKyogaWYgPHR0PmZvcm1hdEFsbE5ld1RleHQ8L3R0PiBpcyA8dHQ+dHJ1ZTwvdHQ+LCBvciBpZiBvbGQgbGluZXMgcmVtYWluIGluIHRoZQorKiBsaW5lIHRhYmxlIGFmdGVyIGFsbCBjaGFuZ2VkIHRleHQgaGFzIGJlZW4gZm9ybWF0dGVkLgorKiBAcGFyYW0gc2Vla09mZnNldEF0RW5kIGlmIDx0dD50cnVlPC90dD4sIGZvcm1hdHRpbmcgY29udGludWVzIHVudGlsIHRoZSBsaW5lCisqIGNvbnRhaW5pbmcgYWZTdGFydCthZkxlbmd0aCBoYXMgYmVlbiBmb3JtYXR0ZWQuICBJZiBmYWxzZSwgZm9ybWF0dGluZyBtYXkgc3RvcAorKiB3aGVuIHJlcUhlaWdodCBoYXMgYmVlbiByZWFjaGVkLiAgVGhpcyBwYXJhbWV0ZXIgc2hvdWxkIGJlIDx0dD50cnVlPC90dD4gPGI+b25seTwvYj4KKyogaWYgdGhlIG9iamVjdCBvZiB0aGUgZm9ybWF0dGluZyBvcGVyYXRpb24gaXMgdG8gZXh0ZW5kIGZvcm1hdHRpbmcgdG8gYSBwYXJ0aWN1bGFyCisqIG9mZnNldCB3aXRoaW4gdGhlIHRleHQ7ICBpdCBzaG91bGQgYmUgPHR0PmZhbHNlPC90dD4gZXZlcnl3aGVyZSBlbHNlLgorKiBAcmV0dXJucyBhIHJlY3RhbmdsZSwgcmVsYXRpdmUgdG8gdGhlIHRvcC1sZWZ0IG9mIHRoZSB0ZXh0LCB3aGljaCBlbmNsb3NlcyB0aGUKKyogc2NyZWVuIGFyZWEgd2hvc2UgYXBwZWFyYW5jZSBoYXMgY2hhbmdlZCBkdWUgdG8gdGhlIHJlZm9ybWF0dGluZy4KKyovCisKKyAgICBwcml2YXRlIFJlY3RhbmdsZSBmb3JtYXRUZXh0KGludCBhZlN0YXJ0LCBmaW5hbCBpbnQgYWZMZW5ndGgsIGludCByZXFIZWlnaHQsIGJvb2xlYW4gc2Vla09mZnNldEF0RW5kKQorICAgIHsKKyAgICAvKiBhc3N1bWVzIGxpbmUgdGFibGUgc2hpZnRlZCBzdWNoIHRoYXQgZmlyc3QgbGluZSB0byBmb3JtYXQgaXMKKyAgICBsYXN0IHBvc2l0aXZlIGxpbmUgKi8KKworICAgICAgICBpZiAoYWZMZW5ndGggPCAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJhZkxlbmd0aCA8IDAuICBhZkxlbmd0aD0iICsgYWZMZW5ndGgpOworICAgICAgICB9CisKKyAgICAgICAgaW50IG5ld1RleHRFbmQgPSBhZlN0YXJ0ICsgYWZMZW5ndGg7CisKKyAgICAgICAgZmluYWwgaW50IG5ld0N1clRleHRMZW4gPSBmVGV4dC5sZW5ndGgoKTsKKworICAgICAgICBpbnQgb2xkUGl4SGVpZ2h0ID0gZlBpeEhlaWdodDsKKyAgICAgICAgaW50IG9sZEZ1bGxQaXhIZWlnaHQgPSBmRnVsbFBpeEhlaWdodDsKKyAgICAgICAgZlBpeEhlaWdodCAtPSBmTGluZVRhYmxlW2ZMVFBvc0VuZF0uZ2V0SGVpZ2h0KCk7CisKKyAgICAgICAgaW50IGN1ckdyYXBoaWNTdGFydCA9IGZMaW5lVGFibGVbZkxUUG9zRW5kXS5nZXRHcmFwaGljU3RhcnQoZlBpeEhlaWdodCk7CisgICAgICAgIGludCBjdXJMaW5lU3RhcnQgPSBmTGluZVRhYmxlW2ZMVFBvc0VuZF0uZ2V0Q2hhclN0YXJ0KG5ld0N1clRleHRMZW4pOworICAgICAgICAKKyAgICAgICAgaW50IGN1clBhcmFncmFwaFN0YXJ0ID0gZlRleHQucGFyYWdyYXBoU3RhcnQoY3VyTGluZVN0YXJ0KTsKKyAgICAgICAgaW50IGN1clBhcmFncmFwaExpbWl0ID0gSW50ZWdlci5NSU5fVkFMVUU7IC8vIGR1bW15IHZhbHVlCisKKyAgICAgICAgaW50IGRhbWFnZVN0YXJ0ID0gY3VyR3JhcGhpY1N0YXJ0OworCisgICAgICAgIFBhcmFncmFwaFJlbmRlcmVyIHJlbmRlcmVyID0gbnVsbDsKKyAgICAgICAgTGluZUJyZWFrTWVhc3VyZXIgbWVhc3VyZXIgPSBudWxsOworICAgICAgICAKKyAgICAgICAgLy8gdHJ5IHRvIHVzZSBjYWNoZWQgTGluZUJyZWFrTWVhc3VyZXIgaWYgcG9zc2libGUKKyAgICAgICAgaWYgKGZDYWNoZWRNZWFzdXJlciAhPSBudWxsICYmIAorICAgICAgICAgICAgY3VyUGFyYWdyYXBoU3RhcnQgPT0gZkNhY2hlZE1lYXN1cmVyU3RhcnQpIHsKKworICAgICAgICAgICAgY3VyUGFyYWdyYXBoTGltaXQgPSBmVGV4dC5wYXJhZ3JhcGhMaW1pdChjdXJQYXJhZ3JhcGhTdGFydCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaWYgKG5ld0N1clRleHRMZW4gLSBmTFRDdXJUZXh0TGVuID09IDEgJiYgYWZMZW5ndGggPT0gMSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoY3VyUGFyYWdyYXBoTGltaXQgPT0gZkNhY2hlZE1lYXN1cmVyTGltaXQrMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgTVRleHRJdGVyYXRvciBpdGVyID0gbmV3IE1UZXh0SXRlcmF0b3IoZlRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmRm9udFJlc29sdmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1clBhcmFncmFwaFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyUGFyYWdyYXBoTGltaXQpOworICAgICAgICAgICAgICAgICAgICAgICAgZkNhY2hlZE1lYXN1cmVyLmluc2VydENoYXIoaXRlciwgYWZTdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICBmQ2FjaGVkTWVhc3VyZXJMaW1pdCArPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZXIgPSBmQ2FjaGVkTWVhc3VyZXI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZkxUQ3VyVGV4dExlbiAtIG5ld0N1clRleHRMZW4gPT0gMSAmJiBhZkxlbmd0aCA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChmQ2FjaGVkTWVhc3VyZXJMaW1pdCA+IGZDYWNoZWRNZWFzdXJlclN0YXJ0ICsgMSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJQYXJhZ3JhcGhMaW1pdCA9PSBmQ2FjaGVkTWVhc3VyZXJMaW1pdC0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBNVGV4dEl0ZXJhdG9yIGl0ZXIgPSBuZXcgTVRleHRJdGVyYXRvcihmVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZGb250UmVzb2x2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJQYXJhZ3JhcGhTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1clBhcmFncmFwaExpbWl0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZDYWNoZWRNZWFzdXJlci5kZWxldGVDaGFyKGl0ZXIsIGFmU3RhcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgZkNhY2hlZE1lYXN1cmVyTGltaXQgLT0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lYXN1cmVyID0gZkNhY2hlZE1lYXN1cmVyOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2goQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBmQ2FjaGVkTWVhc3VyZXIgPSBudWxsOworICAgICAgICAgICAgICAgIGZnQ2FjaGVNZWFzdXJlcnMgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1lYXN1cmVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAvLyBuZWVkIHRvIHNldCB1cCByZW5kZXJlciBzaW5jZSB0aGUgcGFyYWdyYXBoIHVwZGF0ZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAvLyBmb3JtYXR0aW5nIGxvb3Agd2lsbCBub3QgaGFwcGVuCisgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwIHN0eWxlID0gZlRleHQucGFyYWdyYXBoU3R5bGVBdChjdXJQYXJhZ3JhcGhTdGFydCk7CisgICAgICAgICAgICAgICAgcmVuZGVyZXIgPSBnZXRSZW5kZXJlckZvcihzdHlsZSk7CisgICAgICAgICAgICAgICAgbWVhc3VyZXIuc2V0UG9zaXRpb24oY3VyTGluZVN0YXJ0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG1lYXN1cmVyID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIHRyaWdnZXIgcGFyYWdyYXBoIHVwZGF0ZSBhdCBzdGFydCBvZiBmb3JtYXR0aW5nIGxvb3AKKyAgICAgICAgICAgIGN1clBhcmFncmFwaExpbWl0ID0gY3VyUGFyYWdyYXBoU3RhcnQ7CisgICAgICAgICAgICBjdXJQYXJhZ3JhcGhTdGFydCA9IDA7CisgICAgICAgIH0KKworICAgICAgICBmTFRDdXJUZXh0TGVuID0gbmV3Q3VyVGV4dExlbjsKKyAgICAgICAgCisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oImxpbmU6ICIgKyBmTFRQb3NFbmQgKyAiLCBjbHM6ICIgKyBjdXJMaW5lU3RhcnQpOworCisKKyAgICAgICAgICAgIGlmIChjdXJMaW5lU3RhcnQgPj0gY3VyUGFyYWdyYXBoTGltaXQpIHsKKyAgICAgICAgICAgICAgICBjdXJQYXJhZ3JhcGhTdGFydCA9IGN1clBhcmFncmFwaExpbWl0OworICAgICAgICAgICAgICAgIGN1clBhcmFncmFwaExpbWl0ID0gZlRleHQucGFyYWdyYXBoTGltaXQoY3VyUGFyYWdyYXBoU3RhcnQpOworCisgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwIHN0eWxlID0gZlRleHQucGFyYWdyYXBoU3R5bGVBdChjdXJQYXJhZ3JhcGhTdGFydCk7CisgICAgICAgICAgICAgICAgcmVuZGVyZXIgPSBnZXRSZW5kZXJlckZvcihzdHlsZSk7CisKKyAgICAgICAgICAgICAgICBpZiAoY3VyUGFyYWdyYXBoU3RhcnQgPCBjdXJQYXJhZ3JhcGhMaW1pdCkgeworICAgICAgICAgICAgICAgICAgICBtZWFzdXJlciA9IG1ha2VNZWFzdXJlcihjdXJQYXJhZ3JhcGhTdGFydCwgY3VyUGFyYWdyYXBoTGltaXQpOworICAgICAgICAgICAgICAgICAgICBtZWFzdXJlci5zZXRQb3NpdGlvbihjdXJMaW5lU3RhcnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbWVhc3VyZXIgPSBudWxsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGJvb2xlYW4gaGF2ZU9sZERpcmVjdGlvbiA9IGZMaW5lVGFibGVbZkxUUG9zRW5kXSAhPSBudWxsOworICAgICAgICAgICAgICAgIGJvb2xlYW4gb2xkRGlyZWN0aW9uID0gZmFsc2U7IC8vICBkdW1teSB2YWx1ZSBmb3IgY29tcGlsZXIKKyAgICAgICAgICAgICAgICBpZiAoaGF2ZU9sZERpcmVjdGlvbikgeworICAgICAgICAgICAgICAgICAgICBvbGREaXJlY3Rpb24gPSBmTGluZVRhYmxlW2ZMVFBvc0VuZF0uaXNMZWZ0VG9SaWdodCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZMaW5lVGFibGVbZkxUUG9zRW5kXSA9IHJlbmRlcmVyLmxheW91dChmVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkxpbmVUYWJsZVtmTFRQb3NFbmRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZWFzdXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkZvbnRSZW5kZXJDb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJQYXJhZ3JhcGhTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyUGFyYWdyYXBoTGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZXcmFwID8gZkxpbmVEaW0gOiBJbnRlZ2VyLk1BWF9WQUxVRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkxpbmVEaW0pOworICAgICAgICAgICAgICAgIGlmIChoYXZlT2xkRGlyZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChmTGluZVRhYmxlW2ZMVFBvc0VuZF0uaXNMZWZ0VG9SaWdodCgpICE9IG9sZERpcmVjdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV3VGV4dEVuZCA9IE1hdGgubWF4KG5ld1RleHRFbmQsIGN1clBhcmFncmFwaExpbWl0KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIExheW91dEluZm8gdGhlTGluZSA9IGZMaW5lVGFibGVbZkxUUG9zRW5kXTsKKworICAgICAgICAgICAgICAgIHRoZUxpbmUuc2V0R3JhcGhpY1N0YXJ0KGN1ckdyYXBoaWNTdGFydCk7CisgICAgICAgICAgICAgICAgY3VyR3JhcGhpY1N0YXJ0ICs9IHRoZUxpbmUuZ2V0SGVpZ2h0KCk7CisKKyAgICAgICAgICAgICAgICBmUGl4SGVpZ2h0ICs9IHRoZUxpbmUuZ2V0SGVpZ2h0KCk7CisgICAgICAgICAgICAgICAgY3VyTGluZVN0YXJ0ICs9IHRoZUxpbmUuZ2V0Q2hhckxlbmd0aCgpOworCisgICAgICAgICAgICAgICAgaWYgKCFmV3JhcCkgeworICAgICAgICAgICAgICAgICAgICBpbnQgbGluZVdpZHRoID0gdGhlTGluZS5nZXRUb3RhbEFkdmFuY2UoKSArIHRoZUxpbmUuZ2V0TGVhZGluZ01hcmdpbigpOworICAgICAgICAgICAgICAgICAgICBpZiAodGhlTGluZS5pc0xlZnRUb1JpZ2h0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmTWF4WCA8IGxpbmVXaWR0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZNYXhYID0gbGluZVdpZHRoOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZMaW5lRGltLWxpbmVXaWR0aCA8IGZNaW5YKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZk1pblggPSBmTGluZURpbS1saW5lV2lkdGg7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIE5leHQsIGRpc2NhcmQgb2Jzb2xldGUgbGluZXMuICBBIGxpbmUgaXMgb2Jzb2xldGUgaWYgaXQKKyAgICAgICAgICAgICAgICBjb250YWlucyBuZXcgdGV4dCBvciB0ZXh0IHdoaWNoIGhhcyBiZWVuIGZvcm1hdHRlZC4KKyAgICAgICAgICAgICovCisKKyAgICAgICAgICAgIHdoaWxlIChmTFROZWdTdGFydCA8IGZMVFNpemUpIHsKKyAgICAgICAgICAgICAgICBpbnQgbGluZVBvcyA9IGZMaW5lVGFibGVbZkxUTmVnU3RhcnRdLmdldENoYXJTdGFydChuZXdDdXJUZXh0TGVuKTsKKyAgICAgICAgICAgICAgICBpZiAobGluZVBvcyA+PSBjdXJMaW5lU3RhcnQgJiYgbGluZVBvcyA+PSBuZXdUZXh0RW5kKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiZGVsZXRlIG5lZyBsaW5lOiAiICsgZkxUTmVnU3RhcnQpOworICAgICAgICAgICAgICAgIGZQaXhIZWlnaHQgLT0gZkxpbmVUYWJsZVtmTFROZWdTdGFydF0uZ2V0SGVpZ2h0KCk7CisgICAgICAgICAgICAgICAgZkxpbmVUYWJsZVtmTFROZWdTdGFydCsrXSA9IG51bGw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCBzdG9wQXQ7CisgICAgICAgICAgICBpZiAoZkxUTmVnU3RhcnQgPCBmTFRTaXplKQorICAgICAgICAgICAgICAgIHN0b3BBdCA9IGZMaW5lVGFibGVbZkxUTmVnU3RhcnRdLmdldENoYXJTdGFydChuZXdDdXJUZXh0TGVuKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzdG9wQXQgPSBuZXdDdXJUZXh0TGVuOworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIE5vdywgaWYgZXhpdCBjb25kaXRpb25zIGFyZW4ndCBtZXQsIGNyZWF0ZSBhIG5ldyBsaW5lLgorICAgICAgICAgICAgKi8KKworICAgICAgICAgICAgaWYgKHNlZWtPZmZzZXRBdEVuZCkgeworICAgICAgICAgICAgICAgIGlmICgoY3VyTGluZVN0YXJ0ID49IG5ld1RleHRFbmQpICYmIChmTFROZWdTdGFydCA9PSBmTFRTaXplKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oImJyZWFrIDEiKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGN1ckxpbmVTdGFydCA+PSBzdG9wQXQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJjdXJMaW5lU3RhcnQ6ICIgKyBjdXJMaW5lU3RhcnQgKyAiID49IHN0b3BBdDogIiArIHN0b3BBdCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChmTFROZWdTdGFydD09ZkxUU2l6ZSAmJiBmUGl4SGVpZ2h0ID49IHJlcUhlaWdodCkgeworICAgICAgICAgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oImJyZWFrIDMiKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZkxUUG9zRW5kICsgMSA9PSBmTFROZWdTdGFydCkKKyAgICAgICAgICAgICAgICBleHBhbmRMaW5lVGFibGUoKTsKKworICAgICAgICAgICAgZkxpbmVUYWJsZVsrK2ZMVFBvc0VuZF0gPSBudWxsOyAvLyB3aWxsIGJlIGNyZWF0ZWQgYnkgUmVuZGVyZXIKKyAgICAgICAgfQorICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnQoIlxuIik7CisKKyAgICAgICAgaWYgKG5ld0N1clRleHRMZW4gPT0gMCkgeworICAgICAgICAgICAgZkxpbmVUYWJsZVswXSA9IHBzZXVkb0xpbmVJbmZvKGZMaW5lVGFibGVbMF0sIDApOworICAgICAgICAgICAgZlBpeEhlaWdodCA9IGZMaW5lVGFibGVbMF0uZ2V0SGVpZ2h0KCk7CisgICAgICAgIH0KKyAgICAgICAgZkZ1bGxQaXhIZWlnaHQgPSBmUGl4SGVpZ2h0OworCisgICAgICAgIGlmIChpc1BhcmFCcmVha0JlZm9yZShuZXdDdXJUZXh0TGVuKSkgeworICAgICAgICAgICAgZkZ1bGxQaXhIZWlnaHQgKz0gbGFzdENoYXJIZWlnaHQoKTsKKyAgICAgICAgfQorLyoKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJjdXJMaW5lU3RhcnQ6ICIgKyBjdXJMaW5lU3RhcnQgKworICAgICAgICAgICAgIiwgZkxUUG9zRW5kOiAiICsgZkxUUG9zRW5kICsKKyAgICAgICAgICAgICIsIGZMVE5lZ1N0YXJ0OiAiICsgZkxUTmVnU3RhcnQgKworICAgICAgICAgICAgIiwgZkxUU2l6ZTogIiArIGZMVFNpemUpOworCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigib2xkRnVsbFBpeEhlaWdodDogIiArIG9sZEZ1bGxQaXhIZWlnaHQgKyAiLCBuZXdGdWxsUGl4SGVpZ2h0OiAiICsgZkZ1bGxQaXhIZWlnaHQpOworKi8KKyAgICAgICAgaW50IGRhbWFnZUxlbmd0aDsKKyAgICAgICAgaWYgKGZGdWxsUGl4SGVpZ2h0ID09IG9sZEZ1bGxQaXhIZWlnaHQpIHsKKyAgICAgICAgICAgIGRhbWFnZUxlbmd0aCA9IGZMaW5lVGFibGVbZkxUUG9zRW5kXS5nZXRHcmFwaGljU3RhcnQoZlBpeEhlaWdodCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGZMaW5lVGFibGVbZkxUUG9zRW5kXS5nZXRIZWlnaHQoKSAtIGRhbWFnZVN0YXJ0OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZGFtYWdlTGVuZ3RoID0gTWF0aC5tYXgoZkZ1bGxQaXhIZWlnaHQsIG9sZEZ1bGxQaXhIZWlnaHQpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBSZWN0YW5nbGUoZk1pblgsIGRhbWFnZVN0YXJ0LCBmTWF4WC1mTWluWCwgZGFtYWdlTGVuZ3RoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZHVtcExpbmVUYWJsZSgpCisgICAgeworICAgICAgICBpbnQgaTsKKworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oImZMVEN1clRleHRMZW49IiArIGZMVEN1clRleHRMZW4gKyAiICIgKTsKKyAgICAgICAgZm9yIChpPTA7IGk8PSBmTFRQb3NFbmQ7IGkrKykKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiTGluZSAiICsgaSArICIgc3RhcnRzIGF0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBmTGluZVRhYmxlW2ldLmdldENoYXJTdGFydChmTFRDdXJUZXh0TGVuKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgYW5kIGV4dGVuZHMgIiArIGZMaW5lVGFibGVbaV0uZ2V0Q2hhckxlbmd0aCgpKTsKKworICAgICAgICBmb3IgKGk9ZkxUTmVnU3RhcnQ7IGk8IGZMVFNpemU7IGkrKykKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiTGluZSAiICsgKGktZkxUTmVnU3RhcnQrZkxUUG9zRW5kKzEpICsgIiBzdGFydHMgYXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGZMaW5lVGFibGVbaV0uZ2V0Q2hhclN0YXJ0KGZMVEN1clRleHRMZW4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBhbmQgZXh0ZW5kcyAiICsgZkxpbmVUYWJsZVtpXS5nZXRDaGFyTGVuZ3RoKCkpOworICAgIH0KKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgaW50IG1pblgoKSB7CisgICAgCisgICAgICAgIHJldHVybiBmTWluWDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgKiBSZXR1cm4gdGhlIGhvcml6b250YWwgZXh0ZW50IG9mIHRoZSB0ZXh0LCBpbiBwaXhlbHMuCisgICAgKiA8cD4KKyAgICAqIFRoaXMgcmV0dXJucyBhbiBhcHByb3hpbWF0aW9uIGJhc2VkIG9uIHRoZSBjdXJyZW50bHkgZm9ybWF0dGVkIHRleHQuCisgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGludCBtYXhYKCkKKyAgICB7CisgICAgICAgIGNoZWNrVGltZVN0YW1wKCk7CisKKyAgICAgICAgcmV0dXJuIGZNYXhYOworICAgIH0KKworICAgIC8qKgorICAgICogUmV0dXJuIHRoZSBoZWlnaHQgb2YgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSB0ZXh0LgorICAgICoKKyAgICAqIFRoaXMgaXMgdXNlZCBmb3IgdGhlICdleHRyYSBoZWlnaHQnIG5lZWRlZCB0byBkaXNwbGF5IGEgY2FyZXQgYXQgdGhlIGVuZCBvZiB0aGUgdGV4dCB3aGVuIHRoZQorICAgICogdGV4dCBpcyBlbXB0eSBvciBlbmRzIHdpdGggYSBuZXdsaW5lLgorICAgICovCisgICAgcHJpdmF0ZSBpbnQgbGFzdENoYXJIZWlnaHQoKQorICAgIHsKKyAgICAgICAgaW50IGNoYXJJbmRleCA9IGxhc3RMaW5lQ2hhclN0b3AoKSAtIDE7CisgICAgICAgIEF0dHJpYnV0ZU1hcCBzdCA9IGZUZXh0LmNoYXJhY3RlclN0eWxlQXQoY2hhckluZGV4KTsKKyAgICAgICAgRGVmYXVsdENoYXJhY3Rlck1ldHJpYy5NZXRyaWMgbWV0cmljID0gZkRlZmF1bHRDaGFyTWV0cmljLmdldE1ldHJpY0ZvclN0eWxlKHN0KTsKKworICAgICAgICBpbnQgaGVpZ2h0ID0gbWV0cmljLmdldEFzY2VudCgpOworICAgICAgICBoZWlnaHQgKz0gbWV0cmljLmdldERlc2NlbnQoKTsKKyAgICAgICAgaGVpZ2h0ICs9IG1ldHJpYy5nZXRMZWFkaW5nKCk7CisKKyAgICAgICAgcmV0dXJuIGhlaWdodDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgY2hhcmFjdGVyIGF0IHBvcyBpcyBhIHBhcmFncmFwaCBzZXBhcmF0b3IuCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGlzUGFyYUJyZWFrQmVmb3JlKGludCBwb3MpCisgICAgeworICAgICAgICByZXR1cm4gcG9zID4gMCAmJiAoZlRleHQuYXQocG9zIC0gMSkgPT0gJ1x1MjAyOScgfHwgZlRleHQuYXQocG9zIC0gMSkgPT0gJ1xuJyk7CisgICAgICAgIC8vIHdlIHJlYWxseSBuZWVkIHRvIHRha2UgbG9vayBhdCB0aGlzIGFuZCBkZXRlcm1pbmUgd2hhdCB0aGlzIGZ1bmN0aW9uCisgICAgICAgIC8vIHNob3VsZCBiZSBkb2luZy4gIFdoYXQgSSd2ZSBnb3QgaGVyZSByaWdodCBub3cgaXMgYSB0ZW1wb3JhcnkgaW1wbGVtZW50YXRpb24uCisgICAgfQorCisgICAgcHVibGljIHN5bmNocm9uaXplZCBpbnQgbWluWSgpIHsKKyAgICAKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICogUmV0dXJuIHRoZSB2ZXJ0aWNhbCBleHRlbnQgb2YgdGhlIHRleHQsIGluIHBpeGVscy4KKyAgICAqIDxwPgorICAgICogVGhpcyByZXR1cm5zIGFuIGFwcHJveGltYXRpb24gYmFzZWQgb24gdGhlIGN1cnJlbnRseSBmb3JtYXR0ZWQgdGV4dC4KKyAgICAqLworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgaW50IG1heFkoKQorICAgIHsKKyAgICAgICAgY2hlY2tUaW1lU3RhbXAoKTsKKworICAgICAgICBpbnQgbnVtQ2hhcnMgPSBsYXN0TGluZUNoYXJTdG9wKCk7CisKKyAgICAgICAgaW50IHBpeEhlaWdodCA9IGZQaXhIZWlnaHQ7CisgICAgICAgIGlmIChudW1DaGFycyA9PSBmTFRDdXJUZXh0TGVuICYmIGlzUGFyYUJyZWFrQmVmb3JlKGZMVEN1clRleHRMZW4pKSB7CisgICAgICAgICAgICBwaXhIZWlnaHQgKz0gbGFzdENoYXJIZWlnaHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChudW1DaGFycyAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIHBpeEhlaWdodCAqIGZUZXh0Lmxlbmd0aCgpIC8gbnVtQ2hhcnM7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qKgorICAgICogUmV0dXJuIHRoZSBhY3R1YWwgcGl4ZWwgbGVuZ3RoIG9mIHRoZSB0ZXh0IHdoaWNoIGhhcyBiZWVuIGZvcm1hdHRlZC4KKyAgICAqLworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgaW50IGZvcm1hdHRlZEhlaWdodCgpCisgICAgeworICAgICAgICBjaGVja1RpbWVTdGFtcCgpOworICAgICAgICByZXR1cm4gZlBpeEhlaWdodDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGVyZSBhcmUgdHdvIG1vZGVzIGZvciBkZWFsaW5nIHdpdGggY2FycmlhZ2UgcmV0dXJucyBhdCB0aGUgZW5kIG9mIGEgbGluZS4gIEluIHRoZSAnaW5maW5pdGUgd2lkdGgnCisgICAgICogbW9kZSwgdGhlIGxhc3QgY2hhcmFjdGVyIGlzIGNvbnNpZGVyZWQgdG8gaGF2ZSBpbmZpbml0ZSB3aWR0aC4gIFRodXMgaWYgdGhlIHBvaW50IGlzIHBhc3QgdGhlICdyZWFsJworICAgICAqIGVuZCBvZiB0aGUgbGluZSwgdGhlIG9mZnNldCBpcyB0aGUgcG9zaXRpb24gYmVmb3JlIHRoYXQgbGFzdCBjaGFyYWN0ZXIsIGFuZCB0aGUgb2Zmc2V0IGlzIGFzc29jaWF0ZWQKKyAgICAgKiB3aXRoIHRoYXQgY2hhcmFjdGVyIChwbGFjZW1lbnQgYWZ0ZXIpLiBJbiB0aGUgJ2FjdHVhbCB3aWR0aCcgbW9kZSwgdGhlIG9mZnNldCBpcyBwb3NpdGlvbmVkIGFmdGVyCisgICAgICogdGhhdCBjaGFyYWN0ZXIsIGJ1dCBzdGlsbCBhc3NvY2lhdGVkIHdpdGggaXQgKHBsYWNlbWVudCBiZWZvcmUpLgorICAgICAqLworCisgICAgcHJpdmF0ZSBUZXh0T2Zmc2V0IGxpbmVEaW1Ub09mZnNldChUZXh0T2Zmc2V0IHJlc3VsdCwgaW50IGxpbmUsIGludCBsaW5lWCwgaW50IGxpbmVZLCBUZXh0T2Zmc2V0IGFuY2hvciwgYm9vbGVhbiBpbmZpbml0ZU1vZGUpCisgICAgeworICAgIC8vIHRlbXBvcmFyaWx5IGFkanVzdCBsaW5lIGluZm8gdG8gcmVtb3ZlIHRoZSBuZWdhdGl2ZSBjaGFyIHN0YXJ0cyB1c2VkIGluIHRoZSBsaW5lIHRhYmxlLgorICAgIC8vIHRoZW4gY2FsbCB0aHJvdWdoIHRvIHRoZSBwYXJhZ3JhcGggcmVuZGVyZXIgdG8gZ2V0IHRoZSBvZmZzZXQuICBEb24ndCBwdXQgbGluZSBlbmQKKyAgICAvLyBvcHRpbWl6YXRpb24gaGVyZSwgbGV0IHRoZSByZW5kZXJlciBkbyBpdCAocGVyaGFwcyBpdCBkb2VzIGZhbmN5IHN0dWZmIHdpdGggdGhlIG1hcmdpbnMpLgorCisgICAgICAgIExheW91dEluZm8gbGluZUluZm8gPSBmTGluZVRhYmxlW2xpbmVdOworCisgICAgICAgIHJlc3VsdCA9IGxpbmVJbmZvLnBpeGVsVG9PZmZzZXQoZkxUQ3VyVGV4dExlbiwgcmVzdWx0LCBmTGluZURpbSwgbGluZVgsIGxpbmVZKTsKKworICAgICAgICBpZiAoaW5maW5pdGVNb2RlICYmCisgICAgICAgICAgICAocmVzdWx0LmZPZmZzZXQgPiBsaW5lSW5mby5nZXRDaGFyU3RhcnQoZkxUQ3VyVGV4dExlbikpICYmCisgICAgICAgICAgICBpc1BhcmFCcmVha0JlZm9yZShyZXN1bHQuZk9mZnNldCkgJiYKKyAgICAgICAgICAgIChhbmNob3IgPT0gbnVsbCB8fCBhbmNob3IuZk9mZnNldCA9PSByZXN1bHQuZk9mZnNldCAtIDEpKSB7CisKKyAgICAgICAgICAgIHJlc3VsdC5zZXRPZmZzZXQocmVzdWx0LmZPZmZzZXQgLSAxLCBUZXh0T2Zmc2V0LkFGVEVSX09GRlNFVCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICogR2l2ZW4gYSBzY3JlZW4gbG9jYXRpb24gcCwgcmV0dXJuIHRoZSBvZmZzZXQgb2YgdGhlIGNoYXJhY3RlciBpbiB0aGUgdGV4dCBuZWFyZXN0IHRvIHAuCisgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIFRleHRPZmZzZXQgcG9pbnRUb1RleHRPZmZzZXQoVGV4dE9mZnNldCByZXN1bHQsIGludCBweCwgaW50IHB5LCBQb2ludCBvcmlnaW4sIFRleHRPZmZzZXQgYW5jaG9yLCBib29sZWFuIGluZmluaXRlTW9kZSkKKyAgICB7CisgICAgICAgIGNoZWNrVGltZVN0YW1wKCk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBUZXh0T2Zmc2V0KCk7CisKKyAgICAgICAgaW50IGZpbGxEOworCisgICAgICAgIGlmIChmSExpbmUpCisgICAgICAgICAgICBmaWxsRCA9IHB5IC0gb3JpZ2luLnk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZpbGxEID0gcHggLSBvcmlnaW4ueDsKKworICAgICAgICBpZiAoIWZGaWxsSW5jKQorICAgICAgICAgICAgZmlsbEQgPSAtZmlsbEQ7CisKKyAgICAgICAgaWYgKGZpbGxEIDwgMCkgeworICAgICAgICAgICAgcmVzdWx0LnNldE9mZnNldCgwLCBUZXh0T2Zmc2V0LkFGVEVSX09GRlNFVCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgZm9ybWF0VG9IZWlnaHQoZmlsbEQpOworCisgICAgICAgIGlmIChmaWxsRCA+PSBmUGl4SGVpZ2h0KSB7CisgICAgICAgICAgICBib29sZWFuIGJpYXMgPSBmTFRDdXJUZXh0TGVuPT0wPyBUZXh0T2Zmc2V0LkFGVEVSX09GRlNFVCA6IFRleHRPZmZzZXQuQkVGT1JFX09GRlNFVDsKKyAgICAgICAgICAgIHJlc3VsdC5zZXRPZmZzZXQoZkxUQ3VyVGV4dExlbiwgYmlhcyk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgaW50IGxpbmUgPSBmaW5kTGluZUF0KGZpbGxEKTsgLy8gYWx3YXlzIGEgdmFsaWQgbGluZQorICAgICAgICBpbnQgZ1N0YXJ0ID0gbGluZUdyYXBoaWNTdGFydEludGVybmFsKGxpbmUpOworCisgICAgICAgIGludCBsaW5lWCwgbGluZVk7ICAvLyB1cHBlci1sZWZ0IGNvcm5lciBvZiBsaW5lCisgICAgICAgIGlmIChmSExpbmUpIHsKKyAgICAgICAgICAgIGxpbmVYID0gb3JpZ2luLng7CisgICAgICAgICAgICBsaW5lWSA9IGZGaWxsSW5jPyBvcmlnaW4ueSArIGdTdGFydCA6IG9yaWdpbi55IC0gKGdTdGFydCArIGZMaW5lVGFibGVbbGluZV0uZ2V0SGVpZ2h0KCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbGluZVkgPSBvcmlnaW4ueTsKKyAgICAgICAgICAgIGxpbmVYID0gZkZpbGxJbmM/IG9yaWdpbi54ICsgZ1N0YXJ0IDogb3JpZ2luLnggLSAoZ1N0YXJ0ICsgZkxpbmVUYWJsZVtsaW5lXS5nZXRIZWlnaHQoKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbGluZURpbVRvT2Zmc2V0KHJlc3VsdCwgbGluZSwgcHggLSBsaW5lWCwgcHkgLSBsaW5lWSwgYW5jaG9yLCBpbmZpbml0ZU1vZGUpOworICAgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiBlbXB0eVBhcmFncmFwaEF0RW5kT2ZUZXh0KCkgeworCisgICAgICAgIHJldHVybiBmTFRDdXJUZXh0TGVuID4gMCAmJgorICAgICAgICAgICAgICAgIGlzUGFyYWdyYXBoU2VwYXJhdG9yKGZUZXh0LmF0KGZMVEN1clRleHRMZW4tMSkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBvZmZzZXQgZGVzaWduYXRlcyBhIHBvaW50IG9uIHRoZSBwc2V1ZG9saW5lIGZvbGxvd2luZyBhIHBhcmFncmFwaAorICAgICAqIHNlcGFyYXRvciBhdCB0aGUgZW5kIG9mIHRleHQuICBUaGlzIGlzIHRydWUgaWYgdGhlIG9mZnNldCBpcyB0aGUgZW5kIG9mIHRleHQKKyAgICAgKiBhbmQgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSB0ZXh0IGlzIGEgcGFyYWdyYXBoIHNlcGFyYXRvci4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gYWZ0ZXJMYXN0UGFyYWdyYXBoKFRleHRPZmZzZXQgb2Zmc2V0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIG9mZnNldC5mT2Zmc2V0ID09IGZMVEN1clRleHRMZW4gJiYKKyAgICAgICAgICAgIGVtcHR5UGFyYWdyYXBoQXRFbmRPZlRleHQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIEdpdmVuIGFuIG9mZnNldCwgcmV0dXJuIHRoZSBSZWN0YW5nbGUgYm91bmRpbmcgdGhlIGNhcmV0IGF0IHRoZSBvZmZzZXQuCisgICAgKiBAcGFyYW0gb2Zmc2V0IGFuIG9mZnNldCBpbnRvIHRoZSB0ZXh0CisgICAgKiBAcGFyYW0gb3JpZ2luIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhlIHRleHQsIGluIHRoZSBkaXNwbGF5J3MgY29vcmRpbmF0ZSBzeXN0ZW0KKyAgICAqIEByZXR1cm4gYSBSZWN0YW5nbGUgYm91bmRpbmcgdGhlIGNhcmV0LgorICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCBSZWN0YW5nbGUgZ2V0Q2FyZXRSZWN0KFRleHRPZmZzZXQgb2Zmc2V0LCBQb2ludCBvcmlnaW4pIHsKKworICAgICAgICBSZWN0YW5nbGUgciA9IG5ldyBSZWN0YW5nbGUoKTsKKyAgICAgICAgZ2V0Q2FyZXRSZWN0KHIsIG9mZnNldCwgb3JpZ2luKTsKKyAgICAgICAgcmV0dXJuIHI7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBnZXRDYXJldFJlY3QoUmVjdGFuZ2xlIHIsIFRleHRPZmZzZXQgb2Zmc2V0LCBQb2ludCBvcmlnaW4pIHsKKyAgICAgICAgCisgICAgICAgIGNoZWNrVGltZVN0YW1wKCk7CisgICAgICAgIGZvcm1hdFRvT2Zmc2V0KG9mZnNldCk7CisKKyAgICAgICAgaWYgKGFmdGVyTGFzdFBhcmFncmFwaChvZmZzZXQpKSB7CisgICAgICAgICAgICBpbnQgcHNldWRvTGluZUhlaWdodCA9IGxhc3RDaGFySGVpZ2h0KCk7CisgICAgICAgICAgICBpZiAoZkhMaW5lKSB7CisgICAgICAgICAgICAgICAgaW50IGxpbmVZID0gZkZpbGxJbmMgPyBvcmlnaW4ueSArIGZQaXhIZWlnaHQgOiBvcmlnaW4ueSAtIGZQaXhIZWlnaHQgLSBwc2V1ZG9MaW5lSGVpZ2h0OworICAgICAgICAgICAgICAgIHIuc2V0Qm91bmRzKG9yaWdpbi54LCBsaW5lWSwgMCwgcHNldWRvTGluZUhlaWdodCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnQgbGluZVggPSBmRmlsbEluYz8gb3JpZ2luLnggKyBmUGl4SGVpZ2h0IDogb3JpZ2luLnggLSBmUGl4SGVpZ2h0IC0gcHNldWRvTGluZUhlaWdodDsKKyAgICAgICAgICAgICAgICByLnNldEJvdW5kcyhsaW5lWCwgb3JpZ2luLnksIHBzZXVkb0xpbmVIZWlnaHQsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaW50IGxpbmUgPSBnZXRWYWxpZExpbmVDb250YWluaW5nKG9mZnNldCk7CisKKyAgICAgICAgaW50IGdTdGFydCA9IGxpbmVHcmFwaGljU3RhcnRJbnRlcm5hbChsaW5lKTsKKworICAgICAgICBpbnQgbGluZVgsIGxpbmVZOworCisgICAgICAgIGlmIChmSExpbmUpIHsKKyAgICAgICAgICAgIGxpbmVYID0gb3JpZ2luLng7CisgICAgICAgICAgICBpZiAoZkZpbGxJbmMpCisgICAgICAgICAgICAgICAgbGluZVkgPSBvcmlnaW4ueSArIGdTdGFydDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsaW5lWSA9IG9yaWdpbi55IC0gKGdTdGFydCArIGZMaW5lVGFibGVbbGluZV0uZ2V0SGVpZ2h0KCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbGluZVkgPSBvcmlnaW4ueTsKKyAgICAgICAgICAgIGlmIChmRmlsbEluYykKKyAgICAgICAgICAgICAgICBsaW5lWCA9IG9yaWdpbi54ICsgZ1N0YXJ0OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxpbmVYID0gb3JpZ2luLnggLSAoZ1N0YXJ0ICsgZkxpbmVUYWJsZVtsaW5lXS5nZXRIZWlnaHQoKSk7CisgICAgICAgIH0KKworICAgICAgICBSZWN0YW5nbGUgYm91bmRzID0gZkxpbmVUYWJsZVtsaW5lXS5jYXJldEJvdW5kcyhmVGV4dCwgZkxUQ3VyVGV4dExlbiwgZkxpbmVEaW0sIG9mZnNldC5mT2Zmc2V0LCBsaW5lWCwgbGluZVkpOworCisgICAgICAgIHIuc2V0Qm91bmRzKGJvdW5kcyk7CisgICAgfQorCisgICAgLyoqCisgICAgKiBEcmF3IHRoZSBjYXJldChzKSBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIG9mZnNldCBpbnRvIHRoZSBnaXZlbiBHcmFwaGljcy4KKyAgICAqIEBwYXJhbSBnIHRoZSBHcmFwaGljcyB0byBkcmF3IGludG8KKyAgICAqIEBwYXJhbSBvZmZzZXQgdGhlIG9mZnNldCBpbiB0aGUgdGV4dCBmb3Igd2hpY2ggdGhlIGNhcmV0IGlzIGRyYXduCisgICAgKiBAcGFyYW0gb3JpZ2luIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhlIHRleHQsIGluIHRoZSBkaXNwbGF5J3MgY29vcmRpbmF0ZSBzeXN0ZW0KKyAgICAqIEBwYXJhbSBzdHJvbmdDYXJldENvbG9yIHRoZSBjb2xvciBvZiB0aGUgc3Ryb25nIGNhcmV0CisgICAgKiBAcGFyYW0gd2Vha0NhcmV0Q29sb3IgdGhlIGNvbG9yIG9mIHRoZSB3ZWFrIGNhcmV0IChpZiBhbnkpCisgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgZHJhd0NhcmV0KEdyYXBoaWNzIGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvaW50IG9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yIHN0cm9uZ0NhcmV0Q29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciB3ZWFrQ2FyZXRDb2xvcikgeworCisgICAgICAgIGNoZWNrVGltZVN0YW1wKCk7CisgICAgICAgIEdyYXBoaWNzMkQgZzJkID0gR3JhcGhpY3MyRENvbnZlcnNpb24uZ2V0R3JhcGhpY3MyRChnKTsKKyAgICAgICAgZm9ybWF0VG9PZmZzZXQob2Zmc2V0KTsKKworICAgICAgICBMYXlvdXRJbmZvIGxpbmU7CisgICAgICAgIGludCBnU3RhcnQ7CisgICAgICAgIAorICAgICAgICBpZiAoYWZ0ZXJMYXN0UGFyYWdyYXBoKG9mZnNldCkpIHsKKyAgICAgICAgICAgIGdTdGFydCA9IGZQaXhIZWlnaHQ7CisgICAgICAgICAgICBsaW5lID0gcHNldWRvTGluZUluZm8obnVsbCwgb2Zmc2V0LmZPZmZzZXQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW50IGxpbmVJbmRleCA9IGdldFZhbGlkTGluZUNvbnRhaW5pbmcob2Zmc2V0KTsKKyAgICAgICAgICAgIGdTdGFydCA9IGxpbmVHcmFwaGljU3RhcnRJbnRlcm5hbChsaW5lSW5kZXgpOworICAgICAgICAgICAgbGluZSA9IGZMaW5lVGFibGVbbGluZUluZGV4XTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50IGxpbmVYLCBsaW5lWTsKKworICAgICAgICBpZiAoZkhMaW5lKSB7CisgICAgICAgICAgICBsaW5lWCA9IG9yaWdpbi54OworICAgICAgICAgICAgaWYgKGZGaWxsSW5jKQorICAgICAgICAgICAgICAgIGxpbmVZID0gb3JpZ2luLnkgKyBnU3RhcnQ7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgbGluZVkgPSBvcmlnaW4ueSAtIChnU3RhcnQgKyBsaW5lLmdldEhlaWdodCgpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGxpbmVZID0gb3JpZ2luLnk7CisgICAgICAgICAgICBpZiAoZkZpbGxJbmMpCisgICAgICAgICAgICAgICAgbGluZVggPSBvcmlnaW4ueCArIGdTdGFydDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBsaW5lWCA9IG9yaWdpbi54IC0gKGdTdGFydCArIGxpbmUuZ2V0SGVpZ2h0KCkpOworICAgICAgICB9CisKKyAgICAgICAgbGluZS5yZW5kZXJDYXJldChmVGV4dCwgZkxUQ3VyVGV4dExlbiwgZzJkLCBmTGluZURpbSwgbGluZVgsIGxpbmVZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQuZk9mZnNldCwgc3Ryb25nQ2FyZXRDb2xvciwgd2Vha0NhcmV0Q29sb3IpOworICAgIH0KKworLyoqCisqIEdpdmVuIHR3byBvZmZzZXRzIGluIHRoZSB0ZXh0LCByZXR1cm4gYSByZWN0YW5nbGUgd2hpY2ggZW5jbG9zZXMgdGhlIGxpbmVzIGNvbnRhaW5pbmcgdGhlIG9mZnNldHMuCisqIE9mZnNldHMgZG8gbm90IG5lZWQgdG8gYmUgb3JkZXJlZCBvciBub25uZWdhdGl2ZS4KKyogQHBhcmFtIG9mZnNldDEsb2Zmc2V0MiBvZmZzZXRzIGludG8gdGhlIHRleHQKKyogQHBhcmFtIG9yaWdpbiB0aGUgdG9wLWxlZnQgY29ybmVyIG9mIHRoZSB0ZXh0LCBpbiB0aGUgZGlzcGxheSdzIGNvb3JkaW5hdGUgc3lzdGVtCisqIEByZXR1cm5zIGEgPHR0PlJlY3RhbmdsZTwvdHQ+LCByZWxhdGl2ZSB0byA8dHQ+b3JpZ2luPC90dD4sIHdoaWNoIGVuY2xvc2VzIHRoZSBsaW5lcyBjb250YWluaW5nIHRoZSBvZmZzZXRzCisqLworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgUmVjdGFuZ2xlIGdldEJvdW5kaW5nUmVjdChUZXh0T2Zmc2V0IG9mZnNldDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgb2Zmc2V0MiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9pbnQgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHRpZ2h0KSB7CisKKyAgICAgICAgUmVjdGFuZ2xlIHIgPSBuZXcgUmVjdGFuZ2xlKCk7CisgICAgICAgIGdldEJvdW5kaW5nUmVjdChyLCBvZmZzZXQxLCBvZmZzZXQyLCBvcmlnaW4sIHRpZ2h0KTsKKyAgICAgICAgcmV0dXJuIHI7CisgICAgfQorCisvKgorICAgIFRyYW5zZm9ybSByIGZyb20gInRleHQiIGNvb3JkaW5hdGVzIHRvICJzY3JlZW4iIGNvb3JkaW5hdGVzLgorKi8KKworICAgIHByaXZhdGUgdm9pZCBpbnRsUmVjdChQb2ludCBvcmlnaW4sIFJlY3RhbmdsZSByKSB7CisKKyAgICAgICAgaW50IGxpbmVPcmlnLCBmaWxsT3JpZzsKKworICAgICAgICBpZiAoZkhMaW5lKSB7CisgICAgICAgICAgICBsaW5lT3JpZyA9IG9yaWdpbi54OworICAgICAgICAgICAgZmlsbE9yaWcgPSBvcmlnaW4ueTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGxpbmVPcmlnID0gb3JpZ2luLnk7CisgICAgICAgICAgICBmaWxsT3JpZyA9IG9yaWdpbi54OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZMaW5lSW5jKQorICAgICAgICAgICAgci54ICs9IGxpbmVPcmlnOworICAgICAgICBlbHNlCisgICAgICAgICAgICByLnggPSBsaW5lT3JpZyAtIChyLnggKyByLndpZHRoKTsKKworICAgICAgICBpZiAoZkZpbGxJbmMpCisgICAgICAgICAgICByLnkgKz0gZmlsbE9yaWc7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHIueSA9IGZpbGxPcmlnIC0gKHIueSArIHIuaGVpZ2h0KTsKKworCisgICAgICAgIGlmICghZkhMaW5lKSB7CisgICAgICAgICAgICBpbnQgdCA9IHIueDsKKyAgICAgICAgICAgIHIueCA9IHIueTsKKyAgICAgICAgICAgIHIueSA9IHQ7CisgICAgICAgICAgICB0ID0gci53aWR0aDsKKyAgICAgICAgICAgIHIud2lkdGggPSByLmhlaWdodDsKKyAgICAgICAgICAgIHIuaGVpZ2h0ID0gdDsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIGdldEJvdW5kaW5nUmVjdChSZWN0YW5nbGUgciwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IG9mZnNldDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IG9mZnNldDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2ludCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHRpZ2h0KQorICAgIHsKKyAgICAgICAgY2hlY2tUaW1lU3RhbXAoKTsKKyAgICAgICAgaWYgKG9mZnNldDEuZXF1YWxzKG9mZnNldDIpKSB7CisgICAgICAgICAgICBnZXRDYXJldFJlY3Qociwgb2Zmc2V0MSwgb3JpZ2luKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAob2Zmc2V0MS5ncmVhdGVyVGhhbihvZmZzZXQyKSkgeworICAgICAgICAgICAgVGV4dE9mZnNldCB0OyB0ID0gb2Zmc2V0MTsgb2Zmc2V0MSA9IG9mZnNldDI7IG9mZnNldDIgPSB0OworICAgICAgICB9CisKKyAgICAgICAgZm9ybWF0VG9PZmZzZXQob2Zmc2V0Mik7CisKKyAgICAgICAgaW50IGxpbmUgPSBnZXRWYWxpZExpbmVDb250YWluaW5nKG9mZnNldDEpOworICAgICAgICByLnkgPSBsaW5lR3JhcGhpY1N0YXJ0SW50ZXJuYWwobGluZSk7CisgICAgICAgIAorICAgICAgICBpbnQgZ0xpbWl0OworICAgICAgICBib29sZWFuIHNhbWVMaW5lID0gZmFsc2U7CisgICAgICAgICAgICAgICAgCisgICAgICAgIGlmIChhZnRlckxhc3RQYXJhZ3JhcGgob2Zmc2V0MikpCisgICAgICAgICAgICBnTGltaXQgPSBmUGl4SGVpZ2h0ICsgbGFzdENoYXJIZWlnaHQoKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpbnQgbGluZTIgPSBnZXRWYWxpZExpbmVDb250YWluaW5nKG9mZnNldDIpOworICAgICAgICAgICAgZ0xpbWl0ID0gbGluZUdyYXBoaWNMaW1pdEludGVybmFsKGxpbmUyKTsKKyAgICAgICAgICAgIHNhbWVMaW5lID0gKGxpbmUgPT0gbGluZTIpOworICAgICAgICB9CisKKyAgICAgICAgci5oZWlnaHQgPSBnTGltaXQgLSByLnk7CisKKyAgICAgICAgaWYgKHNhbWVMaW5lICYmIHRpZ2h0PT1USUdIVCkgeworICAgICAgICAgICAgUmVjdGFuZ2xlIHJ0ID0gbmV3IFJlY3RhbmdsZSgpOworICAgICAgICAgICAgZ2V0Q2FyZXRSZWN0KHJ0LCBvZmZzZXQxLCBvcmlnaW4pOworICAgICAgICAgICAgci5zZXRCb3VuZHMocnQpOworICAgICAgICAgICAgaWYgKCFvZmZzZXQxLmVxdWFscyhvZmZzZXQyKSkgeworICAgICAgICAgICAgICAgIGdldENhcmV0UmVjdChydCwgb2Zmc2V0Miwgb3JpZ2luKTsKKyAgICAgICAgICAgICAgICByLmFkZChydCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByLnggPSBmTWluWDsKKyAgICAgICAgICAgIHIud2lkdGggPSBmTWF4WCAtIGZNaW5YOworICAgICAgICAgICAgaW50bFJlY3Qob3JpZ2luLCByKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnQoImdicjogIiArIHIueCArICIsICIgKyByLnkgKyAiLCAiICsgci53aWR0aCArICIsICIgKyByLmhlaWdodCk7CisKKyAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCIgLS0+ICIgKyByLnggKyAiLCAiICsgci55ICsgIiwgIiArIHIud2lkdGggKyAiLCAiICsgci5oZWlnaHQpOworICAgIH0KKworICAgIC8qKgorICAgICogQ29tcHV0ZSB0aGUgb2Zmc2V0IHJlc3VsdGluZyBmcm9tIG1vdmluZyBmcm9tIGEgcHJldmlvdXMgb2Zmc2V0IGluIGRpcmVjdGlvbiBkaXIuCisgICAgKiBGb3IgYXJyb3cga2V5cy4KKyAgICAqIEBwYXJhbSByZXN1bHQgdGhlIG9mZnNldCB0byBtb2RpZnkgYW5kIHJldHVybi4gIG1heSBiZSBudWxsLCBpZiBzbyBhIG5ldyBvZmZzZXQgaXMgYWxsb2NhdGVkLCBtb2RpZmllZCwgYW5kIHJldHVybmVkLgorICAgICogQHBhcmFtIHByZXZpb3VzT2Zmc2V0IHRoZSBpbnNlcnRpb24gb2Zmc2V0IHByaW9yIHRvIHRoZSBhcnJvdyBrZXkgcHJlc3MuCisgICAgKiBAcGFyYW0gZGlyZWN0aW9uIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGFycm93IGtleSAoZVVwLCBlRG93biwgZUxlZnQsIG9yIGVSaWdodCkKKyAgICAqIEByZXR1cm5zIG5ldyBvZmZzZXQgYmFzZWQgb24gZGlyZWN0aW9uIGFuZCBwcmV2aW91cyBvZmZzZXQuCisgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIFRleHRPZmZzZXQgZmluZEluc2VydGlvbk9mZnNldChUZXh0T2Zmc2V0IHJlc3VsdCwgVGV4dE9mZnNldCBwcmV2T2Zmc2V0LCBzaG9ydCBkaXIpCisgICAgeworICAgICAgICByZXR1cm4gZmluZE5ld0luc2VydGlvbk9mZnNldChyZXN1bHQsIHByZXZPZmZzZXQsIHByZXZPZmZzZXQsIGRpcik7CisgICAgfQorCisgICAgLyoqCisgICAgICogVHJhbnNmb3JtIGtleSBkaXJlY3Rpb246ICBhZnRlciB0aGlzIHN0ZXAsICJsZWZ0IiBtZWFucyBwcmV2aW91cyBnbHlwaCwgInJpZ2h0IiBtZWFucyBuZXh0IGdseXBoLAorICAgICAqInVwIiBtZWFucyBwcmV2aW91cyBsaW5lLCAiZG93biIgbWVhbnMgbmV4dCBsaW5lCisgICAgICovCisgICAgcHJpdmF0ZSBzaG9ydCByZW1hcEFycm93S2V5KHNob3J0IGRpcikgeworCisgICAgICAgIGlmICghZkxpbmVJbmMpIHsKKyAgICAgICAgICAgIGlmIChkaXIgPT0gZUxlZnQpCisgICAgICAgICAgICAgICAgZGlyID0gZVJpZ2h0OworICAgICAgICAgICAgZWxzZSBpZiAoZGlyID09IGVSaWdodCkKKyAgICAgICAgICAgICAgICBkaXIgPSBlTGVmdDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZkZpbGxJbmMpIHsKKyAgICAgICAgICAgIGlmIChkaXIgPT0gZVVwKQorICAgICAgICAgICAgICAgIGRpciA9IGVEb3duOworICAgICAgICAgICAgZWxzZSBpZiAoZGlyID09IGVEb3duKQorICAgICAgICAgICAgICAgIGRpciA9IGVVcDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZkhMaW5lKSB7CisgICAgICAgICAgICBpZiAoZGlyID09IGVMZWZ0KQorICAgICAgICAgICAgICAgIGRpciA9IGVVcDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGRpciA9PSBlUmlnaHQpCisgICAgICAgICAgICAgICAgZGlyID0gZURvd247CisgICAgICAgICAgICBlbHNlIGlmIChkaXIgPT0gZVVwKQorICAgICAgICAgICAgICAgIGRpciA9IGVMZWZ0OworICAgICAgICAgICAgZWxzZSBpZiAoZGlyID09IGVEb3duKQorICAgICAgICAgICAgICAgIGRpciA9IGVSaWdodDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBkaXI7CisgICAgfQorCisgICAgLyoqCisgICAgKiBDb21wdXRlIHRoZSBvZmZzZXQgcmVzdWx0aW5nIGZyb20gbW92aW5nIGZyb20gYSBwcmV2aW91cyBvZmZzZXQsIHN0YXJ0aW5nIGF0IGFuIG9yaWdpbmFsIG9mZnNldCwgaW4gZGlyZWN0aW9uIGRpci4KKyAgICAqIEZvciBhcnJvdyBrZXlzLiAgVXNlIHRoaXMgZm9yICJzbWFydCIgdXAvZG93biBrZXlzLgorICAgICogQHBhcmFtIHJlc3VsdCB0aGUgb2Zmc2V0IHRvIG1vZGlmeSBhbmQgcmV0dXJuLiAgTWF5IGJlIG51bGwsIGlmIHNvIGEgbmV3IG9mZnNldCBpcyBhbGxvY2F0ZWQsIG1vZGlmaWVkLCBhbmQgcmV0dXJuZWQuCisgICAgKiBAcGFyYW0gb3JpZ09mZnNldCB0aGUgb2Zmc2V0IGF0IHdoaWNoIGFuIHVwLWRvd24gYXJyb3cga2V5IHNlcXVlbmNlIGJlZ2FuLgorICAgICogQHBhcmFtIHByZXZPZmZzZXQgdGhlIGluc2VydGlvbiBvZmZzZXQgcHJpb3IgdG8gdGhlIGFycm93IGtleSBwcmVzcworICAgICogQHBhcmFtIGRpciB0aGUgZGlyZWN0aW9uIG9mIHRoZSBhcnJvdyBrZXkgKGVVcCwgZURvd24sIGVMZWZ0LCBvciBlUmlnaHQpCisgICAgKiBAcmV0dXJucyBuZXcgb2Zmc2V0IGJhc2VkIG9uIGRpcmVjdGlvbiwgb3JpZ2luYWwgb2Zmc2V0LCBhbmQgcHJldmlvdXMgb2Zmc2V0LgorICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCBUZXh0T2Zmc2V0IGZpbmROZXdJbnNlcnRpb25PZmZzZXQoVGV4dE9mZnNldCByZXN1bHQsIFRleHRPZmZzZXQgb3JpZ09mZnNldCwgVGV4dE9mZnNldCBwcmV2T2Zmc2V0LCBzaG9ydCBkaXIpCisgICAgeworICAgICAgICBjaGVja1RpbWVTdGFtcCgpOworICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpCisgICAgICAgICAgICByZXN1bHQgPSBuZXcgVGV4dE9mZnNldCgpOworCisgICAgICAgIGRpciA9IHJlbWFwQXJyb3dLZXkoZGlyKTsKKworICAgICAgICAvLyBhc3N1bWUgdGhhdCB0ZXh0IGF0IG9yaWdPZmZzZXQgYW5kIHByZXZPZmZzZXQgaGFzIGFscmVhZHkgYmVlbiBmb3JtYXR0ZWQKKworICAgICAgICBpZiAoZGlyID09IGVMZWZ0IHx8IGRpciA9PSBlUmlnaHQpIHsKKyAgICAgICAgICAgIGZvcm1hdFRvT2Zmc2V0KHByZXZPZmZzZXQpOworICAgICAgICAgICAgaW50IGxpbmUgPSBnZXRWYWxpZExpbmVDb250YWluaW5nKHByZXZPZmZzZXQpOworCisgICAgICAgICAgICByZXN1bHQuZlBsYWNlbWVudCA9IFRleHRPZmZzZXQuQUZURVJfT0ZGU0VUOworICAgICAgICAgICAgcmVzdWx0LmZPZmZzZXQgPSBmTGluZVRhYmxlW2xpbmVdLmdldE5leHRPZmZzZXQoZkxUQ3VyVGV4dExlbiwgcHJldk9mZnNldC5mT2Zmc2V0LCBkaXIpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5mT2Zmc2V0IDwgMCkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5mT2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHJlc3VsdC5mT2Zmc2V0ID49IGZMVEN1clRleHRMZW4pIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuc2V0T2Zmc2V0KGZMVEN1clRleHRMZW4sIFRleHRPZmZzZXQuQkVGT1JFX09GRlNFVCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpbnQgZGlzdE9uTGluZTsKKworICAgICAgICAgICAgaWYgKGFmdGVyTGFzdFBhcmFncmFwaChvcmlnT2Zmc2V0KSkKKyAgICAgICAgICAgICAgICBkaXN0T25MaW5lID0gMDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGludCBsaW5lID0gZ2V0VmFsaWRMaW5lQ29udGFpbmluZyhvcmlnT2Zmc2V0KTsKKworICAgICAgICAgICAgICAgIGRpc3RPbkxpbmUgPSBmTGluZVRhYmxlW2xpbmVdLnN0cm9uZ0NhcmV0QmFzZWxpbmVQb3NpdGlvbihmTFRDdXJUZXh0TGVuLCBmTGluZURpbSwgb3JpZ09mZnNldC5mT2Zmc2V0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gZ2V0IHByZXZPZmZzZXQncyBsaW5lCisgICAgICAgICAgICBpbnQgbGluZTsKKyAgICAgICAgICAgIGlmIChhZnRlckxhc3RQYXJhZ3JhcGgocHJldk9mZnNldCkpCisgICAgICAgICAgICAgICAgbGluZSA9IGxhc3RMaW5lKCkgKyAxOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbGluZSA9IGdldExpbmVDb250YWluaW5nKHByZXZPZmZzZXQpOworCisgICAgICAgICAgICAgICAgaWYgKGRpciA9PSBlRG93biAmJiAobGluZSA9PSBrQWZ0ZXJMYXN0TGluZSB8fCBsaW5lID09IGxhc3RMaW5lKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAobGFzdExpbmVDaGFyU3RvcCgpIDwgZlRleHQubGVuZ3RoKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIHNoaWZ0VGFibGVUbyhsYXN0TGluZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0VGV4dChsYXN0TGluZUNoYXJTdG9wKCksIDEsIEludGVnZXIuTUFYX1ZBTFVFLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGdldExpbmVDb250YWluaW5nKHByZXZPZmZzZXQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChsaW5lID09IGtCZWZvcmVGaXJzdExpbmUpCisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSAwOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGxpbmUgPT0ga0FmdGVyTGFzdExpbmUpCisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsYXN0TGluZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZGlyID09IGVVcCkKKyAgICAgICAgICAgICAgICBsaW5lLS07CisgICAgICAgICAgICBlbHNlIGlmIChkaXIgPT0gZURvd24pCisgICAgICAgICAgICAgICAgbGluZSsrOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkRlYnVnOiBJbGxlZ2FsIGRpcmVjdGlvbiBwYXJhbWV0ZXIgaW4gZmluZE5ld0luc2VydGlvbk9mZnNldCIpOworCisgICAgICAgICAgICBpZiAobGluZSA8IDApIHsKKyAgICAgICAgICAgICAgICAvL3Jlc3VsdC5zZXRPZmZzZXQoMCwgVGV4dE9mZnNldC5BRlRFUl9PRkZTRVQpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hc3NpZ24ocHJldk9mZnNldCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChsaW5lID4gbGFzdExpbmUoKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRPZmZzZXQoZkxUQ3VyVGV4dExlbiwgVGV4dE9mZnNldC5CRUZPUkVfT0ZGU0VUKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChmTGluZVRhYmxlW2xpbmVdID09IG51bGwpCisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSAoZGlyID09IGVVcCk/IGZMVFBvc0VuZCA6IGZMVE5lZ1N0YXJ0OworCisgICAgICAgICAgICAgICAgLy8gYW5jaG9yIGlzIG51bGwgc2luY2Ugd2UgbmV2ZXIgd2FudCBhIHBvc2l0aW9uIGFmdGVyIG5ld2xpbmUuICBJZiB3ZSB1c2VkIHRoZSByZWFsIGFuY2hvciwKKyAgICAgICAgICAgICAgICAvLyB3ZSBtaWdodCBub3QgaWdub3JlIHRoZSBuZXdsaW5lIGV2ZW4gdGhvdWdoIGluZmluaXRlTW9kZSBpcyB0cnVlLgorICAgICAgICAgICAgICAgIGxpbmVEaW1Ub09mZnNldChyZXN1bHQsIGxpbmUsIGRpc3RPbkxpbmUsIDAsIG51bGwsIHRydWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJmbmlvIHByZXY6ICIgKyBwcmV2T2Zmc2V0ICsgIiwgbmV3OiAiICsgcmVzdWx0KTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBzdG9wQmFja2dyb3VuZEZvcm1hdHRpbmcoKQorICAgIHsKKyAgICAgICAgY2hlY2tUaW1lU3RhbXAoKTsKKyAgICAgICAgZkJnRm9ybWF0QWxsb3dlZCA9IGZhbHNlOworICAgIH0KKworICAgIHByaXZhdGUgc3luY2hyb25pemVkIHZvaWQgZW5hYmxlQkdGb3JtYXQoKQorICAgIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZCZ0Zvcm1hdEFsbG93ZWQgPSB0cnVlOworICAgICAgICAgICAgbm90aWZ5KCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKElsbGVnYWxNb25pdG9yU3RhdGVFeGNlcHRpb24gZSkgeworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgbGluZUluZGV4VG9OdW1iZXIoaW50IGxpbmVJbmRleCkgeworCisgICAgICAgIGlmIChsaW5lSW5kZXggPD0gZkxUUG9zRW5kKSB7CisgICAgICAgICAgICByZXR1cm4gbGluZUluZGV4OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGxpbmVJbmRleCAtIChmTFROZWdTdGFydC1mTFRQb3NFbmQtMSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGludCBsaW5lTnVtYmVyVG9JbmRleChpbnQgbGluZU51bWJlcikgeworCisgICAgICAgIGlmIChsaW5lTnVtYmVyIDw9IGZMVFBvc0VuZCkgeworICAgICAgICAgICAgcmV0dXJuIGxpbmVOdW1iZXI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbGluZU51bWJlciArIChmTFROZWdTdGFydC1mTFRQb3NFbmQtMSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZm9ybWF0VG9MaW5lTnVtYmVyKGludCBsaW5lTnVtYmVyKSB7CisKKyAgICAgICAgd2hpbGUgKGxhc3RMaW5lQ2hhclN0b3AoKSA8IGZMVEN1clRleHRMZW4gJiYKKyAgICAgICAgICAgICAgICBsaW5lTnVtYmVyID49IGxpbmVJbmRleFRvTnVtYmVyKGZMVFNpemUpKSB7CisgICAgICAgICAgICAvLyBjb3VsZCBiZSBzbWFydGVyIGFuZCBjaG9vc2UgbGFyZ2VyIGFtb3VudHMgZm9yCisgICAgICAgICAgICAvLyBsYXJnZXIgbGluZXMsIGJ1dCBwcm9iYWJseSBub3Qgd29ydGggdGhlIGVmZm9ydAorICAgICAgICAgICAgZm9ybWF0VG9IZWlnaHQoZlBpeEhlaWdodCArIGtQaXhJbmNyZW1lbnQpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBTVFJJQ1QgPSB0cnVlOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gTEVOSUVOVCA9IGZhbHNlOworCisgICAgLyoqCisgICAgICogSW5zdXJlIHRoYXQgYXQgbGVhc3QgbGluZU51bWJlciBsaW5lcyBleGlzdCwgZG9pbmcKKyAgICAgKiBleHRyYSBmb3JtYXR0aW5nIGlmIG5lY2Vzc2FyeS4KKyAgICAgKiBUaHJvd3MgZXhjZXB0aW9uIGlmIGxpbmVOdW1iZXIgaXMgbm90IHZhbGlkLgorICAgICAqIEBwYXJhbSBzdHJpY3QgaWYgU1RSSUNULCBvbmx5IGxpbmVzIFswLi4ubWF4TGluZU51bWJlcigpXQorICAgICAqICAgICAgICBhcmUgcGVybWl0dGVkLiAgSWYgTEVOSUVOVCwgbWF4TGluZU51bWJlcigpKzEgaXMKKyAgICAgKiAgICAgICAgdGhlIGdyZWF0ZXN0IHZhbGlkIHZhbHVlLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCB2YWxpZGF0ZUxpbmVOdW1iZXIoaW50IGxpbmVOdW1iZXIsIGJvb2xlYW4gc3RyaWN0KSB7CisKKyAgICAgICAgZm9ybWF0VG9MaW5lTnVtYmVyKGxpbmVOdW1iZXIpOworCisgICAgICAgIGludCBtYXhOdW1iZXIgPSBsaW5lSW5kZXhUb051bWJlcihmTFRTaXplKTsKKyAgICAgICAgaWYgKHN0cmljdCA9PSBTVFJJQ1QpIHsKKyAgICAgICAgICAgIG1heE51bWJlciAtPSAxOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxpbmVOdW1iZXIgPiBtYXhOdW1iZXIrMSB8fAorICAgICAgICAgICAgICAgIChsaW5lTnVtYmVyID09IG1heE51bWJlcisxICYmICFlbXB0eVBhcmFncmFwaEF0RW5kT2ZUZXh0KCkpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGxpbmUgbnVtYmVyOiAiICsgbGluZU51bWJlcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGludCBnZXRMaW5lQ291bnQoKSB7CisKKyAgICAgICAgLy8gZm9ybWF0IGFsbCB0ZXh0OgorICAgICAgICBmb3JtYXRUb0hlaWdodChJbnRlZ2VyLk1BWF9WQUxVRSk7CisKKyAgICAgICAgaW50IGxpbmVDb3VudCA9IGxpbmVJbmRleFRvTnVtYmVyKGZMVFNpemUpOworCisgICAgICAgIGlmIChlbXB0eVBhcmFncmFwaEF0RW5kT2ZUZXh0KCkpIHsKKyAgICAgICAgICAgIGxpbmVDb3VudCArPSAxOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGxpbmVDb3VudDsKKyAgICB9CisgICAgCisgICAgcHVibGljIHN5bmNocm9uaXplZCBpbnQgbGluZUNvbnRhaW5pbmcoaW50IGNoYXJJbmRleCkgeworICAgICAgICAKKyAgICAgICAgZm9ybWF0VG9PZmZzZXQoY2hhckluZGV4LCBUZXh0T2Zmc2V0LkFGVEVSX09GRlNFVCk7CisgICAgICAgIAorICAgICAgICBib29sZWFuIHBsYWNlbWVudCA9IFRleHRPZmZzZXQuQUZURVJfT0ZGU0VUOworICAgICAgICBpZiAoY2hhckluZGV4ID09IGZMVEN1clRleHRMZW4gJiYgY2hhckluZGV4ID4gMCkgeworICAgICAgICAgICAgcGxhY2VtZW50ID0gZW1wdHlQYXJhZ3JhcGhBdEVuZE9mVGV4dCgpPyBUZXh0T2Zmc2V0LkFGVEVSX09GRlNFVCA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQuQkVGT1JFX09GRlNFVDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGxpbmVDb250YWluaW5nKGNoYXJJbmRleCwgcGxhY2VtZW50KTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGludCBsaW5lQ29udGFpbmluZyhUZXh0T2Zmc2V0IG9mZnNldCkgeworCisgICAgICAgIGZvcm1hdFRvT2Zmc2V0KG9mZnNldCk7CisKKyAgICAgICAgaWYgKGFmdGVyTGFzdFBhcmFncmFwaChvZmZzZXQpKSB7CisgICAgICAgICAgICByZXR1cm4gbGluZUluZGV4VG9OdW1iZXIoZkxUU2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBsaW5lQ29udGFpbmluZyhvZmZzZXQuZk9mZnNldCwgb2Zmc2V0LmZQbGFjZW1lbnQpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIGludCBsaW5lQ29udGFpbmluZyhpbnQgb2ZmLCBib29sZWFuIHBsYWNlbWVudCkgeworICAgICAgICAKKyAgICAgICAgaW50IGxpbmUgPSBvZmY9PTA/IDAgOiBnZXRMaW5lQ29udGFpbmluZyhvZmYsIHBsYWNlbWVudCk7CisgICAgICAgIAorICAgICAgICBpZiAobGluZSA9PSBrQWZ0ZXJMYXN0TGluZSkgeworICAgICAgICAgICAgbGluZSA9IGZMVFNpemU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobGluZSA9PSBrQmVmb3JlRmlyc3RMaW5lKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImxpbmVDb250YWluaW5nIGdvdCBpbnZhbGlkIHJlc3VsdCBmcm9tIGdldExpbmVDb250YWluaW5nKCkuIik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbGluZUluZGV4VG9OdW1iZXIobGluZSk7CisgICAgfQorCisgICAgcHVibGljIHN5bmNocm9uaXplZCBpbnQgbGluZVJhbmdlTG93KGludCBsaW5lTnVtYmVyKSB7CisKKyAgICAgICAgdmFsaWRhdGVMaW5lTnVtYmVyKGxpbmVOdW1iZXIsIFNUUklDVCk7CisgICAgICAgIGludCBpbmRleCA9IGxpbmVOdW1iZXJUb0luZGV4KGxpbmVOdW1iZXIpOworCisgICAgICAgIGlmIChpbmRleCA9PSBmTFRTaXplKSB7CisgICAgICAgICAgICBpZiAoZW1wdHlQYXJhZ3JhcGhBdEVuZE9mVGV4dCgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RMaW5lQ2hhclN0b3AoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChpbmRleCA+PSBmTFRTaXplKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJsaW5lTnVtYmVyIGlzIGludmFsaWQuIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbGluZUNoYXJTdGFydEludGVybmFsKGluZGV4KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgaW50IGxpbmVSYW5nZUxpbWl0KGludCBsaW5lTnVtYmVyKSB7CisKKyAgICAgICAgdmFsaWRhdGVMaW5lTnVtYmVyKGxpbmVOdW1iZXIsIFNUUklDVCk7CisgICAgICAgIGludCBpbmRleCA9IGxpbmVOdW1iZXJUb0luZGV4KGxpbmVOdW1iZXIpOworCisgICAgICAgIGlmIChpbmRleCA9PSBmTFRTaXplKSB7CisgICAgICAgICAgICBpZiAoZW1wdHlQYXJhZ3JhcGhBdEVuZE9mVGV4dCgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RMaW5lQ2hhclN0b3AoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChpbmRleCA+PSBmTFRTaXplKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJsaW5lTnVtYmVyIGlzIGludmFsaWQuIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbGluZUNoYXJMaW1pdEludGVybmFsKGluZGV4KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIHRoZSBsaW5lIGF0IHRoZSBnaXZlbiBncmFwaGljIGhlaWdodC4KKyAgICAgKiBJZiBoZWlnaHQgaXMgZ3JlYXRlciB0aGFuIGZ1bGwgaGVpZ2h0LCByZXR1cm4gbGluZSBjb3VudC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGludCBsaW5lQXRIZWlnaHQoaW50IGhlaWdodCkgeworCisgICAgICAgIGlmIChoZWlnaHQgPj0gZlBpeEhlaWdodCkgeworCisgICAgICAgICAgICBpbnQgbGluZSA9IGdldExpbmVDb3VudCgpOworICAgICAgICAgICAgaWYgKGhlaWdodCA8IGZGdWxsUGl4SGVpZ2h0KSB7CisgICAgICAgICAgICAgICAgbGluZSAtPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGxpbmU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoaGVpZ2h0IDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGxpbmVJbmRleFRvTnVtYmVyKGZpbmRMaW5lQXQoaGVpZ2h0KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGludCBsaW5lR3JhcGhpY1N0YXJ0KGludCBsaW5lTnVtYmVyKSB7CisKKyAgICAgICAgY2hlY2tUaW1lU3RhbXAoKTsKKyAgICAgICAgdmFsaWRhdGVMaW5lTnVtYmVyKGxpbmVOdW1iZXIsIExFTklFTlQpOworCisgICAgICAgIGludCBpbmRleCA9IGxpbmVOdW1iZXJUb0luZGV4KGxpbmVOdW1iZXIpOworCisgICAgICAgIGlmIChpbmRleCA8IGZMVFNpemUpIHsKKyAgICAgICAgICAgIHJldHVybiBsaW5lR3JhcGhpY1N0YXJ0SW50ZXJuYWwoaW5kZXgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGluZGV4ID09IGZMVFNpemUrMSkgeworICAgICAgICAgICAgICAgIHJldHVybiBmRnVsbFBpeEhlaWdodDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBmUGl4SGVpZ2h0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN5bmNocm9uaXplZCBib29sZWFuIGxpbmVJc0xlZnRUb1JpZ2h0KGludCBsaW5lTnVtYmVyKSB7CisgICAgICAgIAorICAgICAgICB2YWxpZGF0ZUxpbmVOdW1iZXIobGluZU51bWJlciwgU1RSSUNUKTsKKyAgICAgICAgCisgICAgICAgIGludCBpbmRleCA9IGxpbmVOdW1iZXJUb0luZGV4KGxpbmVOdW1iZXIpOworICAgICAgICAKKyAgICAgICAgaWYgKGluZGV4IDwgZkxUU2l6ZSkgeworICAgICAgICAgICAgcmV0dXJuIGZMaW5lVGFibGVbaW5kZXhdLmlzTGVmdFRvUmlnaHQoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBzdCA9IGZUZXh0LnBhcmFncmFwaFN0eWxlQXQoZkxUQ3VyVGV4dExlbik7CisgICAgICAgICAgICByZXR1cm4gIVRleHRBdHRyaWJ1dGUuUlVOX0RJUkVDVElPTl9SVEwuZXF1YWxzKHN0LmdldChUZXh0QXR0cmlidXRlLlJVTl9ESVJFQ1RJT04pKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICogTnVtYmVyIG9mIHBpeGVscyBieSB3aGljaCB0byBhZHZhbmNlIGZvcm1hdHRpbmcgaW4gdGhlIGJhY2tncm91bmQuCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQga1BpeEluY3JlbWVudCA9IDEwMDsKKworICAgIC8qKgorICAgICogVGltZSB0byBzbGVlcCBiZXR3ZWVuIGJhY2tncm91bmQgZm9ybWF0dGluZyBvcGVyYXRpb25zLgorICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGtJbnRlcnZhbCA9IDEwMDsKKworICAgIC8qKgorICAgICogUGVyZm9ybSBwZXJpb2RpYyBiYWNrZ3JvdW5kIGZvcm1hdHRpbmcuCisgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBydW4oKQorICAgIHsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgeworICAgICAgICAgICAgICAgIHdoaWxlKCFmQmdGb3JtYXRBbGxvd2VkKSB7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3YWl0KCk7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2goSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2hlY2tUaW1lU3RhbXAoKTsgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZm9ybWF0VG9IZWlnaHQoZlBpeEhlaWdodCArIGtQaXhJbmNyZW1lbnQpOworCisgICAgICAgICAgICAgICAgaWYgKGxhc3RMaW5lQ2hhclN0b3AoKSA9PSBmTFRDdXJUZXh0TGVuKSB7CisgICAgICAgICAgICAgICAgICAgIHN0b3BCYWNrZ3JvdW5kRm9ybWF0dGluZygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBUaHJlYWQuc2xlZXAoa0ludGVydmFsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgUGFyYWdyYXBoUmVuZGVyZXIgZ2V0UmVuZGVyZXJGb3IoQXR0cmlidXRlTWFwIHMpIHsKKyAgICAKKyAgICAgICAgLy8gTm90ZTogIGV2ZW50dWFsbHkgd2UgY291bGQgbGV0IGNsaWVudHMgcHV0IHRoZWlyIG93biByZW5kZXJlcnMKKyAgICAgICAgLy8gb24gdGhlIHRleHQuCisgICAgICAgIEJpZGlQYXJhZ3JhcGhSZW5kZXJlciByZW5kZXJlciA9IChCaWRpUGFyYWdyYXBoUmVuZGVyZXIpIGZSZW5kZXJlckNhY2hlLmdldChzKTsKKyAgICAgICAgaWYgKHJlbmRlcmVyID09IG51bGwpIHsKKyAgICAgICAgICAgIHJlbmRlcmVyID0gbmV3IEJpZGlQYXJhZ3JhcGhSZW5kZXJlcihmRGVmYXVsdFZhbHVlcy5hZGRBdHRyaWJ1dGVzKHMpLCBmRGVmYXVsdENoYXJNZXRyaWMpOworICAgICAgICAgICAgZlJlbmRlcmVyQ2FjaGUucHV0KHMsIHJlbmRlcmVyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVuZGVyZXI7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L0JpZGlQYXJhZ3JhcGhSZW5kZXJlci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9CaWRpUGFyYWdyYXBoUmVuZGVyZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41MDIzODQ1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9CaWRpUGFyYWdyYXBoUmVuZGVyZXIuamF2YQpAQCAtMCwwICsxLDExNTAgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEJpZGlQYXJhZ3JhcGhSZW5kZXJlci5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUwOjAzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCisvLyBSZXF1aXJlcyBKYXZhMgorcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRmb3JtYXQ7CisKK2ltcG9ydCBqYXZhLmF3dC5Db2xvcjsKK2ltcG9ydCBqYXZhLmF3dC5SZWN0YW5nbGU7CitpbXBvcnQgamF2YS5hd3QuU2hhcGU7CisKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTVRhYlJ1bGVyOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5UYWJTdG9wOworCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLlRleHRBdHRyaWJ1dGU7CisKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuR3JhcGhpY3MyRENvbnZlcnNpb247CisKKy8vLypKREsxMklNUE9SVFMKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczJEOworCitpbXBvcnQgamF2YS5hd3QuZm9udC5Gb250UmVuZGVyQ29udGV4dDsKK2ltcG9ydCBqYXZhLmF3dC5mb250LlRleHRMYXlvdXQ7CitpbXBvcnQgamF2YS5hd3QuZm9udC5MaW5lQnJlYWtNZWFzdXJlcjsKK2ltcG9ydCBqYXZhLmF3dC5mb250LlRleHRIaXRJbmZvOworCitpbXBvcnQgamF2YS5hd3QuZ2VvbS5BZmZpbmVUcmFuc2Zvcm07CitpbXBvcnQgamF2YS5hd3QuZ2VvbS5HZW5lcmFsUGF0aDsKK2ltcG9ydCBqYXZhLmF3dC5nZW9tLlJlY3RhbmdsZTJEOworLy9KREsxMklNUE9SVFMqLworLypKREsxMUlNUE9SVFMKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuR3JhcGhpY3MyRDsKKworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5Gb250UmVuZGVyQ29udGV4dDsKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuVGV4dExheW91dDsKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuTGluZUJyZWFrTWVhc3VyZXI7CitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LlRleHRIaXRJbmZvOworCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LkFmZmluZVRyYW5zZm9ybTsKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuR2VuZXJhbFBhdGg7CitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LlJlY3RhbmdsZTJEOworSkRLMTFJTVBPUlRTKi8KKworZmluYWwgY2xhc3MgQmlkaVBhcmFncmFwaFJlbmRlcmVyIGV4dGVuZHMgUGFyYWdyYXBoUmVuZGVyZXIgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIGZpbmFsIGNsYXNzIEJpZGlTZWdtZW50IHsKKyAgICAgICAgVGV4dExheW91dCBmTGF5b3V0OworICAgICAgICBSZWN0YW5nbGUyRC5GbG9hdCBmQm91bmRzOworICAgICAgICBpbnQgZkRpc3RhbmNlRnJvbUxlYWRpbmdNYXJnaW47CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBCaWRpTGF5b3V0SW5mbyBleHRlbmRzIExheW91dEluZm8KKyAgICB7ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgaW50IGZDaGFyTGVuZ3RoOyAgICAgIC8vIG51bWJlciBvZiBjaGFyYWN0ZXJzIG9uIGxpbmUgKHdhcyBmTGVuZ3RoKQorICAgICAgICBpbnQgZkFzY2VudDsKKyAgICAgICAgaW50IGZEZXNjZW50OworICAgICAgICBpbnQgZkxlYWRpbmc7CisgICAgICAgIGludCBmVmlzaWJsZUFkdmFuY2U7ICAvLyBkaXN0YW5jZSBhbG9uZyBsaW5lIGRpcmVjdGlvbiBpZSB3aWR0aAorICAgICAgICBpbnQgZlRvdGFsQWR2YW5jZTsgICAgLy8gZGlzdGFuY2UgYWxvbmcgbGluZSBkaXJlY3Rpb24gaW5jbHVkaW5nIHRyYWlsaW5nIHdoaXRlc3BhY2UKKworICAgICAgICBpbnQgZkxlYWRpbmdNYXJnaW47ICAgLy8gc2NyZWVuIGRpc3RhbmNlIGZyb20gbGVhZGluZyBtYXJnaW4KKworICAgICAgICBib29sZWFuIGZMZWZ0VG9SaWdodDsgLy8gdHJ1ZSBpZmYgdGhlIG9yaWVudGF0aW9uIGlzIGxlZnQtdG8tcmlnaHQKKworICAgICAgICBmaW5hbCBWZWN0b3IgZlNlZ21lbnRzID0gbmV3IFZlY3RvcigpOyAvLyBzZWdtZW50cyB0byByZW5kZXIsIGluIGxvZ2ljYWwgb3JkZXIKKworICAgICAgICBwdWJsaWMgaW50IGdldENoYXJMZW5ndGgoKSB7CisgICAgICAgICAgICByZXR1cm4gZkNoYXJMZW5ndGg7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IGdldEFzY2VudCgpIHsKKyAgICAgICAgICAgIHJldHVybiBmQXNjZW50OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXREZXNjZW50KCkgeworICAgICAgICAgICAgcmV0dXJuIGZEZXNjZW50OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRMZWFkaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuIGZMZWFkaW5nOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRWaXNpYmxlQWR2YW5jZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBmVmlzaWJsZUFkdmFuY2U7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IGdldFRvdGFsQWR2YW5jZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBmVG90YWxBZHZhbmNlOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRMZWFkaW5nTWFyZ2luKCkgeworICAgICAgICAgICAgcmV0dXJuIGZMZWFkaW5nTWFyZ2luOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNMZWZ0VG9SaWdodCgpIHsKKyAgICAgICAgICAgIHJldHVybiBmTGVmdFRvUmlnaHQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IGdldEhlaWdodCgpIHsKKyAgICAgICAgICAgIHJldHVybiBmQXNjZW50ICsgZkRlc2NlbnQgKyBmTGVhZGluZzsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gIkxheW91dEluZm8oY2hhclN0YXJ0OiAiICsgZ2V0Q2hhclN0YXJ0KDApICsKKyAgICAgICAgICAgICAgICAiLCBmQ2hhckxlbmd0aDogIiArIGZDaGFyTGVuZ3RoICsKKyAgICAgICAgICAgICAgICAiLCBmQXNjZW50OiAiICsgZkFzY2VudCArCisgICAgICAgICAgICAgICAgIiwgZkRlc2NlbnQ6ICIgKyBmRGVzY2VudCArCisgICAgICAgICAgICAgICAgIiwgZlZpc2libGVBZHZhbmNlOiAiICsgZlZpc2libGVBZHZhbmNlICsKKyAgICAgICAgICAgICAgICAiLCBmVG90YWxBZHZhbmNlOiAiICsgZlRvdGFsQWR2YW5jZSArCisgICAgICAgICAgICAgICAgIiwgZkxlYWRpbmdNYXJnaW46ICIgKyBmTGVhZGluZ01hcmdpbiArCisgICAgICAgICAgICAgICAgIikiOworICAgICAgICB9CisKKyAgICAgICAgQmlkaVBhcmFncmFwaFJlbmRlcmVyIGZSZW5kZXJlcjsKKworICAgICAgICAvLyBqdXN0IGRlbGVnYXRlIHRvIHJlbmRlcmVyIGZvciBub3cKKworICAgICAgICBwdWJsaWMgdm9pZCByZW5kZXJXaXRoSGlnaGxpZ2h0KGludCBsZW5ndGhCYXNpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljczJEIGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVCb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHNlbFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgc2VsU3RvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciBoaWdobGlnaHRDb2xvcikgeworCisgICAgICAgICAgICBmUmVuZGVyZXIucmVuZGVyV2l0aEhpZ2hsaWdodCh0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuZ3RoQmFzaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZUJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbFN0b3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRDb2xvcik7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCByZW5kZXIoaW50IGxlbmd0aEJhc2lzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3MyRCBnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVCb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHkpIHsKKyAgICAgICAgICAgIGZSZW5kZXJlci5yZW5kZXIodGhpcywgbGVuZ3RoQmFzaXMsIGcsIGxpbmVCb3VuZCwgeCwgeSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCByZW5kZXJDYXJldChNQ29uc3RUZXh0IHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGhCYXNpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3MyRCBnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZUJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjaGFyT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciBzdHJvbmdDYXJldENvbG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciB3ZWFrQ2FyZXRDb2xvcikgeworICAgICAgICAgICAgZlJlbmRlcmVyLnJlbmRlckNhcmV0KHRoaXMsIHRleHQsIGxlbmd0aEJhc2lzLCBnLCBsaW5lQm91bmQsIHgsIHksIGNoYXJPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb25nQ2FyZXRDb2xvciwgd2Vha0NhcmV0Q29sb3IpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFRleHRPZmZzZXQgcGl4ZWxUb09mZnNldChpbnQgbGVuZ3RoQmFzaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVCb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeSkgeworICAgICAgICAgICAgcmV0dXJuIGZSZW5kZXJlci5waXhlbFRvT2Zmc2V0KHRoaXMsIGxlbmd0aEJhc2lzLCByZXN1bHQsIGxpbmVCb3VuZCwgeCwgeSk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgUmVjdGFuZ2xlIGNhcmV0Qm91bmRzKE1Db25zdFRleHQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoQmFzaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVCb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hhck9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeSkgeworICAgICAgICAgICAgcmV0dXJuIGZSZW5kZXJlci5jYXJldEJvdW5kcyh0aGlzLCB0ZXh0LCBsZW5ndGhCYXNpcywgbGluZUJvdW5kLCBjaGFyT2Zmc2V0LCB4LCB5KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIGludCBzdHJvbmdDYXJldEJhc2VsaW5lUG9zaXRpb24oaW50IGxlbmd0aEJhc2lzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZUJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hhck9mZnNldCkgeworCisgICAgICAgICAgICByZXR1cm4gZlJlbmRlcmVyLnN0cm9uZ0NhcmV0QmFzZWxpbmVQb3NpdGlvbih0aGlzLCBsZW5ndGhCYXNpcywgbGluZUJvdW5kLCBjaGFyT2Zmc2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0TmV4dE9mZnNldChpbnQgbGVuZ3RoQmFzaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hhck9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0IGRpcikgeworCisgICAgICAgICAgICByZXR1cm4gZlJlbmRlcmVyLmdldE5leHRPZmZzZXQodGhpcywgbGVuZ3RoQmFzaXMsIGNoYXJPZmZzZXQsIGRpcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRkxVU0hfTEVBRElORyA9IFRleHRBdHRyaWJ1dGUuRkxVU0hfTEVBRElORy5pbnRWYWx1ZSgpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBGTFVTSF9DRU5URVIgPSBUZXh0QXR0cmlidXRlLkZMVVNIX0NFTlRFUi5pbnRWYWx1ZSgpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBGTFVTSF9UUkFJTElORyA9IFRleHRBdHRyaWJ1dGUuRkxVU0hfVFJBSUxJTkcuaW50VmFsdWUoKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRlVMTFlfSlVTVElGSUVEID0gVGV4dEF0dHJpYnV0ZS5GVUxMWV9KVVNUSUZJRUQuaW50VmFsdWUoKTsKKworICAgIHByaXZhdGUgQXR0cmlidXRlTWFwIGNhY2hlU3R5bGUgPSBudWxsOworCisgICAgcHJpdmF0ZSBmbG9hdCBmTGVhZGluZ01hcmdpbjsKKyAgICBwcml2YXRlIGZsb2F0IGZUcmFpbGluZ01hcmdpbjsKKyAgICBwcml2YXRlIGZsb2F0IGZGaXJzdExpbmVJbmRlbnQ7CisgICAgcHJpdmF0ZSBmbG9hdCBmTWluTGluZVNwYWNpbmc7CisgICAgcHJpdmF0ZSBmbG9hdCBmRXh0cmFMaW5lU3BhY2luZzsKKyAgICAKKyAgICBwcml2YXRlIGludCBmRmx1c2ggPSAtMTsKKyAgICBwcml2YXRlIE1UYWJSdWxlciBmVGFiUnVsZXI7CisgICAgCisgICAgcHJpdmF0ZSBib29sZWFuIGZMdHJEZWZhdWx0OworICAgIHByaXZhdGUgRGVmYXVsdENoYXJhY3Rlck1ldHJpYyBmRGVmYXVsdENoYXJNZXRyaWM7CisgICAgCisgICAgQmlkaVBhcmFncmFwaFJlbmRlcmVyKEF0dHJpYnV0ZU1hcCBwU3R5bGUsIERlZmF1bHRDaGFyYWN0ZXJNZXRyaWMgZGVmYXVsdENoYXJNZXRyaWMpIHsKKworICAgICAgICBmRGVmYXVsdENoYXJNZXRyaWMgPSBkZWZhdWx0Q2hhck1ldHJpYzsKKyAgICAgICAgaW5pdFJlbmRlcmVyKHBTdHlsZSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBmbG9hdCBnZXRGbG9hdFZhbHVlKE9iamVjdCBrZXksIEF0dHJpYnV0ZU1hcCBzdHlsZSkgeworICAgICAgICByZXR1cm4gKChGbG9hdClzdHlsZS5nZXQoa2V5KSkuZmxvYXRWYWx1ZSgpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIGludCBnZXRJbnRWYWx1ZShPYmplY3Qga2V5LCBBdHRyaWJ1dGVNYXAgc3R5bGUpIHsKKyAgICAgICAgcmV0dXJuICgoSW50ZWdlcilzdHlsZS5nZXQoa2V5KSkuaW50VmFsdWUoKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogTk9URTogIGl0IGlzIGlsbGVnYWwgdG8gaW5pdGlhbGl6ZSBhIFN0YW5kYXJkUGFyYWdyYXBoUmVuZGVyZXIgZm9yIGFueSBzdHlsZQorICAgICAqIG90aGVyIHRoYW4gdGhlIG9uZSBpdCB3YXMgY3JlYXRlZCB3aXRoLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGluaXRSZW5kZXJlcihBdHRyaWJ1dGVNYXAgcFN0eWxlKSB7CisKKyAgICAgICAgaWYgKGNhY2hlU3R5bGUgPT0gbnVsbCkgeworCisgICAgICAgICAgICBmTGVhZGluZ01hcmdpbiA9IGdldEZsb2F0VmFsdWUoVGV4dEF0dHJpYnV0ZS5MRUFESU5HX01BUkdJTiwgcFN0eWxlKTsKKyAgICAgICAgICAgIGZUcmFpbGluZ01hcmdpbiA9IGdldEZsb2F0VmFsdWUoVGV4dEF0dHJpYnV0ZS5UUkFJTElOR19NQVJHSU4sIHBTdHlsZSk7CisgICAgICAgICAgICBmRmlyc3RMaW5lSW5kZW50ID0gZ2V0RmxvYXRWYWx1ZShUZXh0QXR0cmlidXRlLkZJUlNUX0xJTkVfSU5ERU5ULCBwU3R5bGUpOworICAgICAgICAgICAgZk1pbkxpbmVTcGFjaW5nID0gZ2V0RmxvYXRWYWx1ZShUZXh0QXR0cmlidXRlLk1JTl9MSU5FX1NQQUNJTkcsIHBTdHlsZSk7CisgICAgICAgICAgICBmRXh0cmFMaW5lU3BhY2luZyA9IGdldEZsb2F0VmFsdWUoVGV4dEF0dHJpYnV0ZS5FWFRSQV9MSU5FX1NQQUNJTkcsIHBTdHlsZSk7CisKKyAgICAgICAgICAgIGZGbHVzaCA9IGdldEludFZhbHVlKFRleHRBdHRyaWJ1dGUuTElORV9GTFVTSCwgcFN0eWxlKTsKKworICAgICAgICAgICAgZlRhYlJ1bGVyID0gKE1UYWJSdWxlcikgcFN0eWxlLmdldChUZXh0QXR0cmlidXRlLlRBQl9SVUxFUik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE9iamVjdCBydW5EaXIgPSBwU3R5bGUuZ2V0KFRleHRBdHRyaWJ1dGUuUlVOX0RJUkVDVElPTik7CisgICAgICAgICAgICBmTHRyRGVmYXVsdCA9ICFUZXh0QXR0cmlidXRlLlJVTl9ESVJFQ1RJT05fUlRMLmVxdWFscyhydW5EaXIpOworCisgICAgICAgICAgICBjYWNoZVN0eWxlID0gcFN0eWxlOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHBTdHlsZSAhPSBjYWNoZVN0eWxlKSB7CisgICAgICAgICAgICBpZiAoIXBTdHlsZS5lcXVhbHMoY2FjaGVTdHlsZSkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkF0dGVtcHQgdG8gc2hhcmUgQmlkaVBhcmFncmFwaFJlbmRlcmVyIGJldHdlZW4gc3R5bGVzISIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgY2FjaGVTdHlsZSA9IHBTdHlsZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNUYWIoY2hhciBjaCkgeworICAgICAgICByZXR1cm4gY2ggPT0gJ1x0JzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGaWxsIGluIGluZm8gd2l0aCB0aGUgbmV4dCBsaW5lLgorICAgICAqIEBwYXJhbSBtZWFzdXJlciB0aGUgTGluZUJyZWFrTWVhc3VyZXIgZm9yIHRoaXMgcGFyYWdyYXBoLgorICAgICAqICBDdXJyZW50IHBvc2l0aW9uIHNob3VsZCBiZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9uIHRoZSBsaW5lLgorICAgICAqICBJZiBudWxsLCBhIDAtbGVuZ3RoIGxpbmUgaXMgZ2VuZXJhdGVkLiAgSWYgbWVhc3VyZXIgaXMgbnVsbAorICAgICAqICB0aGVuIHBhcmFncmFwaFN0YXJ0IGFuZCBwYXJhZ3JhcGhMaW1pdCBzaG91bGQgYmUgZXF1YWwuCisgICAgICovCisgICAgLy8gVXN1YWxseSB0b3RhbEZvcm1hdFdpZHRoIGFuZCBsaW5lQm91bmQgd2lsbCBiZSB0aGUgc2FtZS4KKyAgICAvLyB0b3RhbEZvcm1hdFdpZHRoIGlzIHVzZWQgZm9yIHdyYXBwaW5nLCBidXQgbGluZUJvdW5kIGlzCisgICAgLy8gZm9yIGZsdXNoaW5nLiAgVGhlc2UgbWF5IGJlIGRpZmZlcmVudCBmb3IgdW53cmFwcGVkIHRleHQsCisgICAgLy8gZm9yIGV4YW1wbGUuCisgICAgcHVibGljIExheW91dEluZm8gbGF5b3V0KE1Db25zdFRleHQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0SW5mbyBsYXlvdXRUb1JldXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5lQnJlYWtNZWFzdXJlciBtZWFzdXJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9udFJlbmRlckNvbnRleHQgZnJjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFyYWdyYXBoU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwYXJhZ3JhcGhMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRvdGFsRm9ybWF0V2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lQm91bmQpIHsKKworICAgICAgICBpZiAoKG1lYXN1cmVyPT1udWxsKSAhPSAocGFyYWdyYXBoU3RhcnQ9PXBhcmFncmFwaExpbWl0KSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgIm1lYXN1cmVyLCBwYXJhZ3JhcGhTdGFydCwgcGFyYWdyYXBoTGltaXQgYXJlIHdyb25nLiIpOworICAgICAgICB9CisgICAgICAgIEJpZGlMYXlvdXRJbmZvIGxpbmUgPSBudWxsOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBsaW5lID0gKEJpZGlMYXlvdXRJbmZvKSBsYXlvdXRUb1JldXNlOworICAgICAgICB9CisgICAgICAgIGNhdGNoKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgIH0KKworICAgICAgICBpZiAobGluZSA9PSBudWxsKSB7CisgICAgICAgICAgICBsaW5lID0gbmV3IEJpZGlMYXlvdXRJbmZvKCk7CisgICAgICAgIH0KKworICAgICAgICBsaW5lLmZSZW5kZXJlciA9IHRoaXM7CisKKyAgICAgICAgZmluYWwgaW50IGxpbmVDaGFyU3RhcnQgPSBtZWFzdXJlcj09bnVsbD8gcGFyYWdyYXBoU3RhcnQgOiBtZWFzdXJlci5nZXRQb3NpdGlvbigpOworICAgICAgICBsaW5lLnNldENoYXJTdGFydChsaW5lQ2hhclN0YXJ0KTsKKworICAgICAgICBmaW5hbCBpbnQgbGluZUluZGVudCA9IChsaW5lQ2hhclN0YXJ0PT1wYXJhZ3JhcGhTdGFydCk/IChpbnQpIGZGaXJzdExpbmVJbmRlbnQgOiAwOworCisgICAgICAgIGludCBmb3JtYXRXaWR0aCA9IHRvdGFsRm9ybWF0V2lkdGggLSAoaW50KSAoZkxlYWRpbmdNYXJnaW4gKyBmVHJhaWxpbmdNYXJnaW4pOworICAgICAgICBjb21wdXRlTGluZU1ldHJpY3ModGV4dCwgbGluZSwgbWVhc3VyZXIsIGZyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhTdGFydCwgcGFyYWdyYXBoTGltaXQsIGZvcm1hdFdpZHRoLCBsaW5lSW5kZW50KTsKKworICAgICAgICAvLyBwb3NpdGlvbiB0aGUgbGluZSBhY2NvcmRpbmcgdG8gdGhlIGxpbmUgZmx1c2gKKyAgICAgICAgaWYgKGZGbHVzaCA9PSBGTFVTSF9UUkFJTElORyB8fCBmRmx1c2ggPT0gRkxVU0hfQ0VOVEVSKSB7CisgICAgICAgICAgICBpbnQgbGluZUFyZWEgPSBsaW5lQm91bmQgLSAoaW50KSAoZkxlYWRpbmdNYXJnaW4gKyBmVHJhaWxpbmdNYXJnaW4pOworICAgICAgICAgICAgaW50IGFkdmFuY2VEaWZmZXJlbmNlID0gbGluZUFyZWEgLSBsaW5lLmZWaXNpYmxlQWR2YW5jZTsKKworICAgICAgICAgICAgaWYgKGZGbHVzaCA9PSBGTFVTSF9UUkFJTElORykgeworICAgICAgICAgICAgICAgIGxpbmUuZkxlYWRpbmdNYXJnaW4gPSAoKGludCkgKGZMZWFkaW5nTWFyZ2luKSkgKyBhZHZhbmNlRGlmZmVyZW5jZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGZGbHVzaCA9PSBGTFVTSF9DRU5URVIpIHsKKyAgICAgICAgICAgICAgICBsaW5lLmZMZWFkaW5nTWFyZ2luID0gKGludCkgKGZMZWFkaW5nTWFyZ2luICsgYWR2YW5jZURpZmZlcmVuY2UvMik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBsaW5lLmZMZWFkaW5nTWFyZ2luID0gKGludCkgZkxlYWRpbmdNYXJnaW47CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbGluZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGaWxsIGluIHRoZSBmb2xsb3dpbmcgZmllbGRzIGluIGxpbmU6CisgICAgICogZkNoYXJMZW5ndGgsIGZBc2NlbnQsIGZEZXNjZW50LCBmTGVhZGluZywgZlZpc2libGVBZHZhbmNlLAorICAgICAqIGZUb3RhbEFkdmFuY2UuCisgICAgICogVXNlczogbGluZS5mTGVhZGluZ01hcmdpbgorICAgICAqIEBwYXJhbSBmb3JtYXRXaWR0aCB0aGUgd2lkdGggdG8gZml0IHRoZSBsaW5lIGludG8uCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGNvbXB1dGVMaW5lTWV0cmljcyhNQ29uc3RUZXh0IHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWRpTGF5b3V0SW5mbyBsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZUJyZWFrTWVhc3VyZXIgbWVhc3VyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb250UmVuZGVyQ29udGV4dCBmcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgcGFyYWdyYXBoU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgcGFyYWdyYXBoTGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgZm9ybWF0V2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgbGluZUluZGVudCkgeworCisgICAgICAgIGludCBzZWdtZW50Q291bnQgPSAwOworICAgICAgICBib29sZWFuIGZpcnN0TGluZSA9IG1lYXN1cmVyPT1udWxsIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVhc3VyZXIuZ2V0UG9zaXRpb24oKSA9PSBwYXJhZ3JhcGhTdGFydDsKKworICAgICAgICBpZiAobWVhc3VyZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgY29tcHV0ZVNlZ21lbnRzKHRleHQsIGxpbmUsIG1lYXN1cmVyLCBwYXJhZ3JhcGhMaW1pdCwgZm9ybWF0V2lkdGgsIGxpbmVJbmRlbnQpOworCisgICAgICAgICAgICAvLyBpdGVyYXRlIHRocm91Z2ggc2VnbWVudHMgYW5kIGFjY3VtdWxhdGUgYXNjZW50LCBkZXNjZW50LAorICAgICAgICAgICAgLy8gbGVhZGluZywgY2hhciBsZW5ndGgKKyAgICAgICAgICAgIGZsb2F0IGFzY2VudCA9IDA7CisgICAgICAgICAgICBmbG9hdCBkZXNjZW50ID0gMDsKKyAgICAgICAgICAgIGZsb2F0IGRlc2NlbnRQbHVzTGVhZGluZyA9IDA7CisKKyAgICAgICAgICAgIHNlZ21lbnRDb3VudCA9IGxpbmUuZlNlZ21lbnRzLnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IHNlZ21lbnRDb3VudDsgaSsrKSB7CisgICAgICAgICAgICAgICAgVGV4dExheW91dCBsYXlvdXQgPSAoKEJpZGlTZWdtZW50KWxpbmUuZlNlZ21lbnRzLmVsZW1lbnRBdChpKSkuZkxheW91dDsKKyAgICAgICAgICAgICAgICBhc2NlbnQgPSBNYXRoLm1heChhc2NlbnQsIGxheW91dC5nZXRBc2NlbnQoKSk7CisgICAgICAgICAgICAgICAgZmxvYXQgc2VnRGVzY2VudCA9IGxheW91dC5nZXREZXNjZW50KCk7CisgICAgICAgICAgICAgICAgZGVzY2VudCA9IE1hdGgubWF4KGRlc2NlbnQsIHNlZ0Rlc2NlbnQpOworICAgICAgICAgICAgICAgIGRlc2NlbnRQbHVzTGVhZGluZyA9IE1hdGgubWF4KGRlc2NlbnRQbHVzTGVhZGluZywgc2VnRGVzY2VudCtsYXlvdXQuZ2V0TGVhZGluZygpKTsKKyAgICAgICAgICAgICAgICBsaW5lLmZDaGFyTGVuZ3RoICs9IGxheW91dC5nZXRDaGFyYWN0ZXJDb3VudCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsaW5lLmZBc2NlbnQgPSAoaW50KSBNYXRoLmNlaWwoYXNjZW50KTsKKyAgICAgICAgICAgIGxpbmUuZkRlc2NlbnQgPSAoaW50KSBNYXRoLmNlaWwoZGVzY2VudCk7CisgICAgICAgICAgICBsaW5lLmZMZWFkaW5nID0gKGludCkgTWF0aC5jZWlsKGRlc2NlbnRQbHVzTGVhZGluZykgLSBsaW5lLmZEZXNjZW50OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbGluZS5mTGVmdFRvUmlnaHQgPSBmTHRyRGVmYXVsdDsKKyAgICAgICAgICAgIGxpbmUuZlNlZ21lbnRzLnJlbW92ZUFsbEVsZW1lbnRzKCk7CisKKyAgICAgICAgICAgIGxpbmUuZkNoYXJMZW5ndGggPSAwOworCisgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgc3R5bGUgPSB0ZXh0LmNoYXJhY3RlclN0eWxlQXQocGFyYWdyYXBoU3RhcnQpOworICAgICAgICAgICAgRGVmYXVsdENoYXJhY3Rlck1ldHJpYy5NZXRyaWMgY20gPSBmRGVmYXVsdENoYXJNZXRyaWMuZ2V0TWV0cmljRm9yU3R5bGUoc3R5bGUpOworICAgICAgICAgICAgbGluZS5mQXNjZW50ID0gY20uZ2V0QXNjZW50KCk7CisgICAgICAgICAgICBsaW5lLmZEZXNjZW50ID0gY20uZ2V0RGVzY2VudCgpOworICAgICAgICAgICAgbGluZS5mTGVhZGluZyA9IGNtLmdldExlYWRpbmcoKTsKKworICAgICAgICAgICAgbGluZS5mVmlzaWJsZUFkdmFuY2UgPSBsaW5lLmZUb3RhbEFkdmFuY2UgPSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZFeHRyYUxpbmVTcGFjaW5nICE9IDApIHsKKyAgICAgICAgICAgIGxpbmUuZkFzY2VudCArPSAoaW50KSBNYXRoLmNlaWwoZkV4dHJhTGluZVNwYWNpbmcpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZNaW5MaW5lU3BhY2luZyAhPSAwKXsKKyAgICAgICAgICAgIGludCBoZWlnaHQgPSBsaW5lLmdldEhlaWdodCgpOworICAgICAgICAgICAgaWYgKGhlaWdodCA8IGZNaW5MaW5lU3BhY2luZykgeworICAgICAgICAgICAgICAgIGxpbmUuZkFzY2VudCArPSBNYXRoLmNlaWwoZk1pbkxpbmVTcGFjaW5nIC0gaGVpZ2h0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIGludCBsaW5lTmF0dXJhbEFkdmFuY2UgPSBsaW5lLmZUb3RhbEFkdmFuY2U7CisKKyAgICAgICAgbGluZS5mVG90YWxBZHZhbmNlICs9IGxpbmVJbmRlbnQ7CisgICAgICAgIGxpbmUuZlZpc2libGVBZHZhbmNlICs9IGxpbmVJbmRlbnQ7CisKKyAgICAgICAgaWYgKG1lYXN1cmVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIC8vIE5vdyBmaWxsIGluIGZCb3VuZHMgZmllbGQgb2YgQmlkaVNlZ21lbnRzLiAgZkJvdW5kcyBzaG91bGQgdGlsZQorICAgICAgICAgICAgLy8gdGhlIGxpbmUuCisgICAgICAgICAgICBmaW5hbCBmbG9hdCBsaW5lSGVpZ2h0ID0gbGluZS5nZXRIZWlnaHQoKTsKKworICAgICAgICAgICAgZm9yIChpbnQgaT0xOyBpIDwgc2VnbWVudENvdW50OyBpKyspIHsKKworICAgICAgICAgICAgICAgIEJpZGlTZWdtZW50IGN1cnJlbnRTZWdtZW50ID0gKEJpZGlTZWdtZW50KSBsaW5lLmZTZWdtZW50cy5lbGVtZW50QXQoaS0xKTsKKyAgICAgICAgICAgICAgICBCaWRpU2VnbWVudCBuZXh0U2VnbWVudCA9IChCaWRpU2VnbWVudCkgbGluZS5mU2VnbWVudHMuZWxlbWVudEF0KGkpOworCisgICAgICAgICAgICAgICAgZmxvYXQgb3JpZ2luOworICAgICAgICAgICAgICAgIGZsb2F0IHdpZHRoOworCisgICAgICAgICAgICAgICAgaWYgKGxpbmUuZkxlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAgIG9yaWdpbiA9IDA7CisgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gbmV4dFNlZ21lbnQuZkRpc3RhbmNlRnJvbUxlYWRpbmdNYXJnaW4gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50U2VnbWVudC5mRGlzdGFuY2VGcm9tTGVhZGluZ01hcmdpbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG9yaWdpbiA9IGN1cnJlbnRTZWdtZW50LmZEaXN0YW5jZUZyb21MZWFkaW5nTWFyZ2luOworICAgICAgICAgICAgICAgICAgICBvcmlnaW4gLT0gbmV4dFNlZ21lbnQuZkRpc3RhbmNlRnJvbUxlYWRpbmdNYXJnaW47CisgICAgICAgICAgICAgICAgICAgIG9yaWdpbiArPSAoZmxvYXQpIE1hdGguY2VpbChuZXh0U2VnbWVudC5mTGF5b3V0LmdldEFkdmFuY2UoKSk7CisgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gKGZsb2F0KSBNYXRoLmNlaWwoY3VycmVudFNlZ21lbnQuZkxheW91dC5nZXRBZHZhbmNlKCkpIC0gb3JpZ2luOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjdXJyZW50U2VnbWVudC5mQm91bmRzID0gbmV3IFJlY3RhbmdsZTJELkZsb2F0KG9yaWdpbiwgLWxpbmUuZkFzY2VudCwgd2lkdGgsIGxpbmVIZWlnaHQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBzZXQgbGFzdCBzZWdtZW50J3MgYm91bmRzCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQmlkaVNlZ21lbnQgY3VycmVudFNlZ21lbnQgPSAoQmlkaVNlZ21lbnQpIGxpbmUuZlNlZ21lbnRzLmVsZW1lbnRBdChzZWdtZW50Q291bnQtMSk7CisgICAgICAgICAgICAgICAgZmxvYXQgb3JpZ2luOworICAgICAgICAgICAgICAgIGZsb2F0IHdpZHRoOworCisgICAgICAgICAgICAgICAgaWYgKGxpbmUuZkxlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAgIG9yaWdpbiA9IDA7CisgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gbGluZU5hdHVyYWxBZHZhbmNlIC0gY3VycmVudFNlZ21lbnQuZkRpc3RhbmNlRnJvbUxlYWRpbmdNYXJnaW47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBvcmlnaW4gPSBjdXJyZW50U2VnbWVudC5mRGlzdGFuY2VGcm9tTGVhZGluZ01hcmdpbiAtIGxpbmVOYXR1cmFsQWR2YW5jZTsKKyAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAoZmxvYXQpIE1hdGguY2VpbChjdXJyZW50U2VnbWVudC5mTGF5b3V0LmdldEFkdmFuY2UoKSkgLSBvcmlnaW47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY3VycmVudFNlZ21lbnQuZkJvdW5kcyA9IG5ldyBSZWN0YW5nbGUyRC5GbG9hdChvcmlnaW4sIC1saW5lLmZBc2NlbnQsIHdpZHRoLCBsaW5lSGVpZ2h0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbGwgaW4gZlNlZ21lbnRzLCBmTGVmdFRvUmlnaHQuICBtZWFzdXJlciBtdXN0IG5vdCBiZSBudWxsCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGNvbXB1dGVTZWdtZW50cyhNQ29uc3RUZXh0IHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWRpTGF5b3V0SW5mbyBsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZUJyZWFrTWVhc3VyZXIgbWVhc3VyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgcGFyYWdyYXBoTGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgZm9ybWF0V2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgbGluZUluZGVudCkgeworCisgICAgICAgIC8vIE5vdGUgb24ganVzdGlmaWNhdGlvbjogIG9ubHkgdGhlIGxhc3Qgc2VnbWVudCBvZiBhIGxpbmUgaXMKKyAgICAgICAgLy8ganVzdGlmaWVkLiAgCisgICAgICAgIC8vIEFsc28sIGlmIGEgbGluZSBlbmRzIGluIGEgdGFiIGl0IHdpbGwgbm90IGJlIGp1c3RpZmllZC4KKyAgICAgICAgLy8gVGhpcyBiZWhhdmlvciBpcyBjb25zaXN0ZW50IHdpdGggb3RoZXIgd29yZCBwcm9jZXNzb3JzCisgICAgICAgIC8vIEkgdHJpZWQgKE1TIFdvcmQgYW5kIExvdHVzIFdvcmQgUHJvKS4KKyAgICAgICAgCisgICAgICAgIGxpbmUuZlNlZ21lbnRzLnJlbW92ZUFsbEVsZW1lbnRzKCk7CisgICAgICAgIGxpbmUuZkNoYXJMZW5ndGggPSAwOworCisgICAgICAgIFRhYlN0b3AgY3VycmVudFRhYlN0b3AgPSBuZXcgVGFiU3RvcCgoaW50KWZMZWFkaW5nTWFyZ2luK2xpbmVJbmRlbnQsIFRhYlN0b3Aua0xlYWRpbmcpOworCisgICAgICAgIGludCBzZWdtZW50TGltaXQgPSBtZWFzdXJlci5nZXRQb3NpdGlvbigpOworICAgICAgICBib29sZWFuIGZpcnN0U2VnbWVudCA9IHRydWU7CisKKyAgICAgICAgaW50IGFkdmFuY2VGcm9tTGVhZGluZ01hcmdpbiA9IGxpbmVJbmRlbnQ7CisKKyAgICAgICAgYm9vbGVhbiBjb21wdXRlU2VncyA9IHRydWU7CisgICAgICAgIAorICAgICAgICBjb21wdXRlVGFiYmVkU2VnbWVudHM6IGRvIHsKKworICAgICAgICAgICAgLy8gY29tcHV0ZSBzZW1lbnRMaW1pdDoKKyAgICAgICAgICAgIGlmIChzZWdtZW50TGltaXQgPD0gbWVhc3VyZXIuZ2V0UG9zaXRpb24oKSkgeworICAgICAgICAgICAgICAgIHdoaWxlIChzZWdtZW50TGltaXQgPCBwYXJhZ3JhcGhMaW1pdCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXNUYWIodGV4dC5hdChzZWdtZW50TGltaXQrKykpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gTk9URTogIGFkanVzdCBhdmFpbGFibGUgd2lkdGggZm9yIGNlbnRlciB0YWIhISEKKyAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJGb3JtYXQgd2lkdGg6ICIgKyAoZm9ybWF0V2lkdGgtYWR2YW5jZUZyb21MZWFkaW5nTWFyZ2luKSArCisgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAiOyAgc2VnbWVudExpbWl0OiAiICsgc2VnbWVudExpbWl0KTsKKworICAgICAgICAgICAgaW50IHdyYXBwaW5nV2lkdGggPSBNYXRoLm1heChmb3JtYXRXaWR0aC1hZHZhbmNlRnJvbUxlYWRpbmdNYXJnaW4sIDApOworICAgICAgICAgICAgVGV4dExheW91dCBsYXlvdXQgPSBudWxsOworICAgICAgICAgICAgaWYgKGZpcnN0U2VnbWVudCB8fCB3cmFwcGluZ1dpZHRoID4gMCB8fCBzZWdtZW50TGltaXQgPiBtZWFzdXJlci5nZXRQb3NpdGlvbigpKzEpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXQgPSBtZWFzdXJlci5uZXh0TGF5b3V0KHdyYXBwaW5nV2lkdGgsIHNlZ21lbnRMaW1pdCwgIWZpcnN0U2VnbWVudCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChsYXlvdXQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGlmIChmaXJzdFNlZ21lbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSSBkb3VidCB0aGlzIHdvdWxkIGhhcHBlbiwgYnV0IGNoZWNrIGFueXdheQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkZpcnN0IGxheW91dCBpcyBudWxsISIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhayBjb21wdXRlVGFiYmVkU2VnbWVudHM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZpbmFsIGludCBtZWFzdXJlclBvcyA9IG1lYXN1cmVyLmdldFBvc2l0aW9uKCk7CisgICAgICAgICAgICBpZiAobWVhc3VyZXJQb3MgPCBzZWdtZW50TGltaXQpIHsKKyAgICAgICAgICAgICAgICBjb21wdXRlU2VncyA9IGZhbHNlOworICAgICAgICAgICAgICAgIGlmIChmRmx1c2ggPT0gRlVMTFlfSlVTVElGSUVEKSB7CisgICAgICAgICAgICAgICAgICAgIGxheW91dCA9IGxheW91dC5nZXRKdXN0aWZpZWRMYXlvdXQod3JhcHBpbmdXaWR0aCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgY29tcHV0ZVNlZ3MgPSAhKG1lYXN1cmVyUG9zID09IHBhcmFncmFwaExpbWl0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGZpcnN0U2VnbWVudCkgeworICAgICAgICAgICAgICAgIGZpcnN0U2VnbWVudCA9IGZhbHNlOworICAgICAgICAgICAgICAgIC8vIEhhdmUgdG8gZ2V0IGx0ciBvZmYgb2YgbGF5b3V0LiAgTm90IGF2YWlsYWJsZSBmcm9tIG1lYXN1cmVyLAorICAgICAgICAgICAgICAgIC8vIHVuZm9ydHVuYXRlbHkuCisgICAgICAgICAgICAgICAgbGluZS5mTGVmdFRvUmlnaHQgPSBsYXlvdXQuaXNMZWZ0VG9SaWdodCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBCaWRpU2VnbWVudCBzZWdtZW50ID0gbmV3IEJpZGlTZWdtZW50KCk7CisgICAgICAgICAgICBzZWdtZW50LmZMYXlvdXQgPSBsYXlvdXQ7CisgICAgICAgICAgICBpbnQgbGF5b3V0QWR2YW5jZSA9IChpbnQpIE1hdGguY2VpbChsYXlvdXQuZ2V0QWR2YW5jZSgpKTsKKworICAgICAgICAgICAgLy8gcG9zaXRpb24gbGF5b3V0IHJlbGF0aXZlIHRvIGxlYWRpbmcgbWFyZ2luLCB1cGRhdGUgbG9naWNhbFBvc2l0aW9uT25MaW5lCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCByZWxhdGl2ZVRhYlBvc2l0aW9uID0gY3VycmVudFRhYlN0b3AuZ2V0UG9zaXRpb24oKS0oaW50KWZMZWFkaW5nTWFyZ2luOworICAgICAgICAgICAgaW50IGxvZ2ljYWxQb3NpdGlvbk9mTGF5b3V0OworICAgICAgICAgICAgc3dpdGNoIChjdXJyZW50VGFiU3RvcC5nZXRUeXBlKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFRhYlN0b3Aua1RyYWlsaW5nOgorICAgICAgICAgICAgICAgICAgICBsb2dpY2FsUG9zaXRpb25PZkxheW91dCA9IE1hdGgubWF4KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRpdmVUYWJQb3NpdGlvbi1sYXlvdXRBZHZhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWR2YW5jZUZyb21MZWFkaW5nTWFyZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBUYWJTdG9wLmtDZW50ZXI6CisgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxQb3NpdGlvbk9mTGF5b3V0ID0gTWF0aC5tYXgoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGl2ZVRhYlBvc2l0aW9uLShsYXlvdXRBZHZhbmNlLzIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWR2YW5jZUZyb21MZWFkaW5nTWFyZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDogIC8vIGluY2x1ZGVzIGRlY2ltYWwgdGFiIHJpZ2h0IG5vdworICAgICAgICAgICAgICAgICAgICBsb2dpY2FsUG9zaXRpb25PZkxheW91dCA9IHJlbGF0aXZlVGFiUG9zaXRpb247CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBwb3NpdGlvbiBsYXlvdXQgaW4gc2VnbWVudAorICAgICAgICAgICAgaWYgKGxpbmUuZkxlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgc2VnbWVudC5mRGlzdGFuY2VGcm9tTGVhZGluZ01hcmdpbiA9IGxvZ2ljYWxQb3NpdGlvbk9mTGF5b3V0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgc2VnbWVudC5mRGlzdGFuY2VGcm9tTGVhZGluZ01hcmdpbiA9IGxvZ2ljYWxQb3NpdGlvbk9mTGF5b3V0K2xheW91dEFkdmFuY2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHVwZGF0ZSBhZHZhbmNlRnJvbUxlYWRpbmdNYXJnaW4KKyAgICAgICAgICAgIGFkdmFuY2VGcm9tTGVhZGluZ01hcmdpbiA9IGxvZ2ljYWxQb3NpdGlvbk9mTGF5b3V0ICsgbGF5b3V0QWR2YW5jZTsKKworICAgICAgICAgICAgLy8gYWRkIHNlZ21lbnQgdG8gc2VnbWVudCBWZWN0b3IKKyAgICAgICAgICAgIGxpbmUuZlNlZ21lbnRzLmFkZEVsZW1lbnQoc2VnbWVudCk7CisKKyAgICAgICAgICAgIC8vIGdldCBuZXh0IHRhYgorICAgICAgICAgICAgY3VycmVudFRhYlN0b3AgPSBmVGFiUnVsZXIubmV4dFRhYigoaW50KWZMZWFkaW5nTWFyZ2luK2FkdmFuY2VGcm9tTGVhZGluZ01hcmdpbik7CisgICAgICAgICAgICBpZiAoY3VycmVudFRhYlN0b3AuZ2V0VHlwZSgpID09IFRhYlN0b3Aua0xlYWRpbmcgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50VGFiU3RvcC5nZXRUeXBlKCkgPT0gVGFiU3RvcC5rQXV0bykgIHsKKyAgICAgICAgICAgICAgICBhZHZhbmNlRnJvbUxlYWRpbmdNYXJnaW4gPSBjdXJyZW50VGFiU3RvcC5nZXRQb3NpdGlvbigpOworICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJBZHZhbmNlIGZyb20gbGVhZGluZyBtYXJnaW46IiArIGFkdmFuY2VGcm9tTGVhZGluZ01hcmdpbik7CisKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIk5vbi1sZWFkaW5nIHRhYiwgdHlwZT0iICsgY3VycmVudFRhYlN0b3AuZ2V0VHlwZSgpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICB9IHdoaWxlIChjb21wdXRlU2Vncyk7CisKKyAgICAgICAgLy8gTm93IGNvbXB1dGUgZlRvdGFsQWR2YW5jZSwgZlZpc2libGVBZHZhbmNlLiAgVGhlc2UgbWV0cmljcyBtYXkgYmUgYWZmZWN0ZWQKKyAgICAgICAgLy8gYnkgYSB0cmFpbGluZyB0YWIuCisKKyAgICAgICAgeworICAgICAgICAgICAgQmlkaVNlZ21lbnQgbGFzdFNlZ21lbnQgPSAoQmlkaVNlZ21lbnQpIGxpbmUuZlNlZ21lbnRzLmxhc3RFbGVtZW50KCk7CisgICAgICAgICAgICBUZXh0TGF5b3V0IGxhc3RMYXlvdXQgPSBsYXN0U2VnbWVudC5mTGF5b3V0OworCisgICAgICAgICAgICBpZiAobGluZS5mTGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAgICAgICBsaW5lLmZUb3RhbEFkdmFuY2UgPSAoaW50KSBNYXRoLmNlaWwobGFzdExheW91dC5nZXRBZHZhbmNlKCkpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0U2VnbWVudC5mRGlzdGFuY2VGcm9tTGVhZGluZ01hcmdpbjsKKyAgICAgICAgICAgICAgICBsaW5lLmZWaXNpYmxlQWR2YW5jZSA9IChpbnQpIE1hdGguY2VpbChsYXN0TGF5b3V0LmdldFZpc2libGVBZHZhbmNlKCkpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0U2VnbWVudC5mRGlzdGFuY2VGcm9tTGVhZGluZ01hcmdpbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGxpbmUuZlRvdGFsQWR2YW5jZSA9IGxhc3RTZWdtZW50LmZEaXN0YW5jZUZyb21MZWFkaW5nTWFyZ2luOworICAgICAgICAgICAgICAgIGxpbmUuZlZpc2libGVBZHZhbmNlID0gbGFzdFNlZ21lbnQuZkRpc3RhbmNlRnJvbUxlYWRpbmdNYXJnaW4gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpIE1hdGguY2VpbChsYXN0TGF5b3V0LmdldEFkdmFuY2UoKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RMYXlvdXQuZ2V0VmlzaWJsZUFkdmFuY2UoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc1RhYih0ZXh0LmF0KG1lYXN1cmVyLmdldFBvc2l0aW9uKCktMSkpKSB7CisgICAgICAgICAgICAgICAgbGluZS5mVG90YWxBZHZhbmNlID0gTWF0aC5tYXgobGluZS5mVG90YWxBZHZhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFRhYlN0b3AuZ2V0UG9zaXRpb24oKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGhpZ2hsaWdodCBzaGFwZSBmb3IgdGhlIGdpdmVuIGNoYXJhY3RlciBvZmZzZXRzLgorICAgICAqIFRoZSBTaGFwZSByZXR1cm5lZCBpcyByZWxhdGl2ZSB0byB0aGUgbGVmdG1vc3QgcG9pbnQgb24gdGhlCisgICAgICogYmFzZWxpbmUgb2YgbGluZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIFNoYXBlIGdldEhpZ2hsaWdodFNoYXBlKEJpZGlMYXlvdXRJbmZvIGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoQmFzaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZUJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhsU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGxMaW1pdCkgeworCisgICAgICAgIGlmIChobFN0YXJ0ID49IGhsTGltaXQpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkhpZ2hsaWdodCByYW5nZSBsZW5ndGggaXMgbm90IHBvc2l0aXZlLiIpOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgaW50IGxlYWRpbmdNYXJnaW4gPSAobGluZS5mTGVmdFRvUmlnaHQpPworICAgICAgICAgICAgICAgIGxpbmUuZkxlYWRpbmdNYXJnaW4gOiBsaW5lQm91bmQgLSBsaW5lLmZMZWFkaW5nTWFyZ2luOworICAgICAgICBmaW5hbCBpbnQgc2VnbWVudENvdW50ID0gbGluZS5mU2VnbWVudHMuc2l6ZSgpOworCisgICAgICAgIFNoYXBlIHJ2YWwgPSBudWxsOworICAgICAgICBHZW5lcmFsUGF0aCBoaWdobGlnaHRQYXRoID0gbnVsbDsKKworICAgICAgICBpbnQgY3VycmVudExheW91dFN0YXJ0ID0gbGluZS5nZXRDaGFyU3RhcnQobGVuZ3RoQmFzaXMpOworCisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IHNlZ21lbnRDb3VudDsgaSsrKSB7CisKKyAgICAgICAgICAgIEJpZGlTZWdtZW50IHNlZ21lbnQgPSAoQmlkaVNlZ21lbnQpIGxpbmUuZlNlZ21lbnRzLmVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgIFRleHRMYXlvdXQgbGF5b3V0ID0gc2VnbWVudC5mTGF5b3V0OworICAgICAgICAgICAgaW50IGNoYXJDb3VudCA9IGxheW91dC5nZXRDaGFyYWN0ZXJDb3VudCgpOworICAgICAgICAgICAgaW50IGN1cnJlbnRMYXlvdXRMaW1pdCA9IGN1cnJlbnRMYXlvdXRTdGFydCArIGNoYXJDb3VudDsKKyAgICAgICAgICAgIGJvb2xlYW4gcmFuZ2VzSW50ZXJzZWN0OworICAgICAgICAgICAgaWYgKGhsU3RhcnQgPD0gY3VycmVudExheW91dFN0YXJ0KSB7CisgICAgICAgICAgICAgICAgcmFuZ2VzSW50ZXJzZWN0ID0gaGxMaW1pdCA+IGN1cnJlbnRMYXlvdXRTdGFydDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJhbmdlc0ludGVyc2VjdCA9IGhsU3RhcnQgPCBjdXJyZW50TGF5b3V0TGltaXQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChyYW5nZXNJbnRlcnNlY3QpIHsKKworICAgICAgICAgICAgICAgIFNoYXBlIGN1cnJlbnRIbCA9IGxheW91dC5nZXRMb2dpY2FsSGlnaGxpZ2h0U2hhcGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0aC5tYXgoaGxTdGFydC1jdXJyZW50TGF5b3V0U3RhcnQsIDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGgubWluKGhsTGltaXQtY3VycmVudExheW91dFN0YXJ0LCBjaGFyQ291bnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZ21lbnQuZkJvdW5kcyk7CisKKyAgICAgICAgICAgICAgICBmbG9hdCB4VHJhbnNsYXRlOworICAgICAgICAgICAgICAgIGlmIChsaW5lLmZMZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgICAgICAgICB4VHJhbnNsYXRlID0gbGVhZGluZ01hcmdpbiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50LmZEaXN0YW5jZUZyb21MZWFkaW5nTWFyZ2luOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgeFRyYW5zbGF0ZSA9IGxlYWRpbmdNYXJnaW4gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5mRGlzdGFuY2VGcm9tTGVhZGluZ01hcmdpbjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoeFRyYW5zbGF0ZSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIEFmZmluZVRyYW5zZm9ybSB4Zm9ybSA9CisgICAgICAgICAgICAgICAgICAgICAgICBBZmZpbmVUcmFuc2Zvcm0uZ2V0VHJhbnNsYXRlSW5zdGFuY2UoeFRyYW5zbGF0ZSwgMCk7CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRIbCA9IHhmb3JtLmNyZWF0ZVRyYW5zZm9ybWVkU2hhcGUoY3VycmVudEhsKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAocnZhbCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHJ2YWwgPSBjdXJyZW50SGw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoaGlnaGxpZ2h0UGF0aCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRQYXRoID0gbmV3IEdlbmVyYWxQYXRoKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRQYXRoLmFwcGVuZChydmFsLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBydmFsID0gaGlnaGxpZ2h0UGF0aDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBoaWdobGlnaHRQYXRoLmFwcGVuZChjdXJyZW50SGwsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjdXJyZW50TGF5b3V0U3RhcnQgPSBjdXJyZW50TGF5b3V0TGltaXQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcnZhbDsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgcmVuZGVyV2l0aEhpZ2hsaWdodChCaWRpTGF5b3V0SW5mbyBsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGhCYXNpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljczJEIGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVCb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHNlbFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgc2VsU3RvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciBoaWdobGlnaHRDb2xvcikgeworCisgICAgICAgIGZpbmFsIGludCBsaW5lQ2hhclN0YXJ0ID0gbGluZS5nZXRDaGFyU3RhcnQobGVuZ3RoQmFzaXMpOworCisgICAgICAgIGlmIChzZWxTdGFydCAhPSBudWxsICYmIHNlbFN0b3AgIT0gbnVsbCAmJiAhc2VsU3RhcnQuZXF1YWxzKHNlbFN0b3ApICYmCisgICAgICAgICAgICAgICAgbGluZS5mQ2hhckxlbmd0aCAhPSAwICYmCisgICAgICAgICAgICAgICAgc2VsU3RhcnQuZk9mZnNldCA8IGxpbmVDaGFyU3RhcnQgKyBsaW5lLmZDaGFyTGVuZ3RoICYmCisgICAgICAgICAgICAgICAgc2VsU3RvcC5mT2Zmc2V0ID4gbGluZUNoYXJTdGFydCkgeworCisgICAgICAgICAgICBTaGFwZSBoaWdobGlnaHQgPSBnZXRIaWdobGlnaHRTaGFwZShsaW5lLCBsZW5ndGhCYXNpcywgbGluZUJvdW5kLCBzZWxTdGFydC5mT2Zmc2V0LCBzZWxTdG9wLmZPZmZzZXQpOworICAgICAgICAgICAgaWYgKGhpZ2hsaWdodCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgR3JhcGhpY3MyRCBobCA9IChHcmFwaGljczJEKSBnLmNyZWF0ZSgpOworICAgICAgICAgICAgICAgIGhsLnNldENvbG9yKGhpZ2hsaWdodENvbG9yKTsKKyAgICAgICAgICAgICAgICBobC50cmFuc2xhdGUoeCwgeSArIGxpbmUuZkFzY2VudCk7CisgICAgICAgICAgICAgICAgaGwuZmlsbChoaWdobGlnaHQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmVuZGVyKGxpbmUsIGxlbmd0aEJhc2lzLCBnLCBsaW5lQm91bmQsIHgsIHkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIERyYXcgdGhlIGxpbmUgaW50byB0aGUgZ3JhcGhpY3MuICAoeCwgeSkgaXMgdGhlIHVwcGVyLWxlZnQgY29ybmVyCisgICAgICogb2YgdGhlIGxpbmUuICBUaGUgbGVhZGluZyBlZGdlIG9mIGEgcmlnaHQtYWxpZ25lZCBsaW5lIGlzIGFsaWduZWQKKyAgICAgKiB0byAoeCArIGxpbmVCb3VuZCkuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHJlbmRlcihCaWRpTGF5b3V0SW5mbyBsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aEJhc2lzLAorICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY3MyRCBnLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVCb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHkpIHsKKworICAgICAgICBmaW5hbCBpbnQgbGVhZGluZ01hcmdpbiA9IChsaW5lLmZMZWZ0VG9SaWdodCk/CisgICAgICAgICAgICAgICAgeCArIGxpbmUuZkxlYWRpbmdNYXJnaW4gOiB4ICsgbGluZUJvdW5kIC0gbGluZS5mTGVhZGluZ01hcmdpbjsKKyAgICAgICAgZmluYWwgaW50IGJhc2VsaW5lID0geSArIGxpbmUuZkFzY2VudDsKKyAgICAgICAgZmluYWwgaW50IHNlZ21lbnRDb3VudCA9IGxpbmUuZlNlZ21lbnRzLnNpemUoKTsKKworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBzZWdtZW50Q291bnQ7IGkrKykgeworCisgICAgICAgICAgICBCaWRpU2VnbWVudCBzZWdtZW50ID0gKEJpZGlTZWdtZW50KSBsaW5lLmZTZWdtZW50cy5lbGVtZW50QXQoaSk7CisKKyAgICAgICAgICAgIGZsb2F0IGRyYXdYOworICAgICAgICAgICAgaWYgKGxpbmUuZkxlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgZHJhd1ggPSBsZWFkaW5nTWFyZ2luICsgc2VnbWVudC5mRGlzdGFuY2VGcm9tTGVhZGluZ01hcmdpbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGRyYXdYID0gbGVhZGluZ01hcmdpbiAtIHNlZ21lbnQuZkRpc3RhbmNlRnJvbUxlYWRpbmdNYXJnaW47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNlZ21lbnQuZkxheW91dC5kcmF3KGcsIGRyYXdYLCBiYXNlbGluZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIFRleHRPZmZzZXQgaGl0VGVzdFNlZ21lbnQoVGV4dE9mZnNldCByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZWdtZW50Q2hhclN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCaWRpU2VnbWVudCBzZWdtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeEluU2VnbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHlJblNlZ21lbnQpIHsKKworICAgICAgICBmaW5hbCBUZXh0TGF5b3V0IGxheW91dCA9IHNlZ21lbnQuZkxheW91dDsKKyAgICAgICAgZmluYWwgaW50IGNoYXJDb3VudCA9IGxheW91dC5nZXRDaGFyYWN0ZXJDb3VudCgpOworICAgICAgICBmaW5hbCBpbnQgbGF5b3V0QWR2YW5jZSA9IChpbnQpIE1hdGguY2VpbChsYXlvdXQuZ2V0QWR2YW5jZSgpKTsKKyAgICAgICAgUmVjdGFuZ2xlMkQgYm91bmRzID0gc2VnbWVudC5mQm91bmRzOworCisgICAgICAgIGZpbmFsIGJvb2xlYW4gbHRyID0gbGF5b3V0LmlzTGVmdFRvUmlnaHQoKTsKKworICAgICAgICBpZiAobHRyICYmICh4SW5TZWdtZW50ID49IGxheW91dEFkdmFuY2UpIHx8ICFsdHIgJiYgKHhJblNlZ21lbnQgPD0gMCkpIHsKKworICAgICAgICAgICAgLy8gcHJldGVuZCB0aGUgZXh0cmEgc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgbGluZSBpcyBhCisgICAgICAgICAgICAvLyB0YWIgYW5kICdoaXQtdGVzdCcgaXQuCisgICAgICAgICAgICBkb3VibGUgdGFiQ2VudGVyOworICAgICAgICAgICAgaWYgKGx0cikgeworICAgICAgICAgICAgICAgIHRhYkNlbnRlciA9IChsYXlvdXRBZHZhbmNlK2JvdW5kcy5nZXRNYXhYKCkpIC8gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHRhYkNlbnRlciA9IGJvdW5kcy5nZXRYKCkgLyAyOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoKHhJblNlZ21lbnQgPj0gdGFiQ2VudGVyKSA9PSBsdHIpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuZk9mZnNldCA9IGNoYXJDb3VudDsKKyAgICAgICAgICAgICAgICByZXN1bHQuZlBsYWNlbWVudCA9IFRleHRPZmZzZXQuQkVGT1JFX09GRlNFVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJlc3VsdC5mT2Zmc2V0ID0gY2hhckNvdW50LTE7CisgICAgICAgICAgICAgICAgcmVzdWx0LmZQbGFjZW1lbnQgPSBUZXh0T2Zmc2V0LkFGVEVSX09GRlNFVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFRleHRIaXRJbmZvIGluZm8gPSBsYXlvdXQuaGl0VGVzdENoYXIoeEluU2VnbWVudCwgeUluU2VnbWVudCwgc2VnbWVudC5mQm91bmRzKTsKKyAgICAgICAgICAgIHJlc3VsdC5mT2Zmc2V0ID0gaW5mby5nZXRJbnNlcnRpb25JbmRleCgpOworICAgICAgICAgICAgaWYgKHJlc3VsdC5mT2Zmc2V0ID09IDApIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuZlBsYWNlbWVudCA9IFRleHRPZmZzZXQuQUZURVJfT0ZGU0VUOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0LmZPZmZzZXQgPT0gY2hhckNvdW50KSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmZQbGFjZW1lbnQgPSBUZXh0T2Zmc2V0LkJFRk9SRV9PRkZTRVQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuZlBsYWNlbWVudCA9IGluZm8uaXNMZWFkaW5nRWRnZSgpPworICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldC5BRlRFUl9PRkZTRVQgOiBUZXh0T2Zmc2V0LkJFRk9SRV9PRkZTRVQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQuZk9mZnNldCArPSBzZWdtZW50Q2hhclN0YXJ0OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgb2Zmc2V0IGF0IHRoZSBwb2ludCAoeCwgeSkuICAoeCwgeSkgaXMgcmVsYXRpdmUgdG8gdGhlIHRvcC1sZWZ0CisgICAgICogb2YgdGhlIGxpbmUuICBUaGUgbGVhZGluZyBlZGdlIG9mIGEgcmlnaHQtYWxpZ25lZCBsaW5lIGlzIGFsaWduZWQKKyAgICAgKiB0byBsaW5lQm91bmQuCisgICAgICovCisgICAgcHJpdmF0ZSBUZXh0T2Zmc2V0IHBpeGVsVG9PZmZzZXQoQmlkaUxheW91dEluZm8gbGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoQmFzaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVCb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeSkgeworCisgICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkgeworICAgICAgICAgICAgcmVzdWx0ID0gbmV3IFRleHRPZmZzZXQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIGludCB5SW5TZWdtZW50ID0geSAtIGxpbmUuZkFzY2VudDsKKyAgICAgICAgZmluYWwgaW50IGxlYWRpbmdNYXJnaW4gPSAobGluZS5mTGVmdFRvUmlnaHQpPworICAgICAgICAgICAgICAgIGxpbmUuZkxlYWRpbmdNYXJnaW4gOiBsaW5lQm91bmQgLSBsaW5lLmZMZWFkaW5nTWFyZ2luOworICAgICAgICBmaW5hbCBpbnQgbGluZUNoYXJTdGFydCA9IGxpbmUuZ2V0Q2hhclN0YXJ0KGxlbmd0aEJhc2lzKTsKKworICAgICAgICAvLyBmaXJzdCBzZWUgaWYgcG9pbnQgaXMgYmVmb3JlIGxlYWRpbmcgZWRnZSBvZiBsaW5lCisgICAgICAgIGZpbmFsIGludCBzZWdtZW50Q291bnQgPSBsaW5lLmZTZWdtZW50cy5zaXplKCk7CisgICAgICAgIHsKKyAgICAgICAgICAgIGludCBzZWdMZWFkaW5nTWFyZ2luID0gbGVhZGluZ01hcmdpbjsKKyAgICAgICAgICAgIGlmIChzZWdtZW50Q291bnQgPiAwKSB7CisgICAgICAgICAgICAgICAgQmlkaVNlZ21lbnQgZmlyc3RTZWcgPSAoQmlkaVNlZ21lbnQpIGxpbmUuZlNlZ21lbnRzLmVsZW1lbnRBdCgwKTsKKyAgICAgICAgICAgICAgICBpZiAobGluZS5mTGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAgICAgICAgICAgc2VnTGVhZGluZ01hcmdpbiArPSBmaXJzdFNlZy5mRGlzdGFuY2VGcm9tTGVhZGluZ01hcmdpbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNlZ0xlYWRpbmdNYXJnaW4gLT0gZmlyc3RTZWcuZkRpc3RhbmNlRnJvbUxlYWRpbmdNYXJnaW47CisgICAgICAgICAgICAgICAgICAgIHNlZ0xlYWRpbmdNYXJnaW4gKz0gKGZsb2F0KSBmaXJzdFNlZy5mQm91bmRzLmdldE1heFgoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobGluZS5mTGVmdFRvUmlnaHQgPT0gKHggPD0gc2VnTGVhZGluZ01hcmdpbikpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuZk9mZnNldCA9IGxpbmVDaGFyU3RhcnQ7CisgICAgICAgICAgICAgICAgcmVzdWx0LmZQbGFjZW1lbnQgPSBUZXh0T2Zmc2V0LkFGVEVSX09GRlNFVDsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaW50IHNlZ21lbnRDaGFyU3RhcnQgPSBsaW5lQ2hhclN0YXJ0OworCisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IHNlZ21lbnRDb3VudDsgaSsrKSB7CisKKyAgICAgICAgICAgIEJpZGlTZWdtZW50IHNlZ21lbnQgPSAoQmlkaVNlZ21lbnQpIGxpbmUuZlNlZ21lbnRzLmVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgIGludCBzZWdtZW50T3JpZ2luID0gbGluZS5mTGVmdFRvUmlnaHQ/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVhZGluZ01hcmdpbitzZWdtZW50LmZEaXN0YW5jZUZyb21MZWFkaW5nTWFyZ2luIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWFkaW5nTWFyZ2luLXNlZ21lbnQuZkRpc3RhbmNlRnJvbUxlYWRpbmdNYXJnaW47CisgICAgICAgICAgICBpbnQgeEluU2VnbWVudCA9IHggLSBzZWdtZW50T3JpZ2luOworICAgICAgICAgICAgaWYgKGxpbmUuZkxlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgaWYgKHNlZ21lbnQuZkJvdW5kcy5nZXRNYXhYKCkgPiB4SW5TZWdtZW50KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBoaXRUZXN0U2VnbWVudChyZXN1bHQsIHNlZ21lbnRDaGFyU3RhcnQsIHNlZ21lbnQsIHhJblNlZ21lbnQsIHlJblNlZ21lbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChzZWdtZW50LmZCb3VuZHMuZ2V0WCgpIDwgeEluU2VnbWVudCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gaGl0VGVzdFNlZ21lbnQocmVzdWx0LCBzZWdtZW50Q2hhclN0YXJ0LCBzZWdtZW50LCB4SW5TZWdtZW50LCB5SW5TZWdtZW50KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzZWdtZW50Q2hhclN0YXJ0ICs9IHNlZ21lbnQuZkxheW91dC5nZXRDaGFyYWN0ZXJDb3VudCgpOworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0LmZPZmZzZXQgPSBsaW5lQ2hhclN0YXJ0ICsgbGluZS5mQ2hhckxlbmd0aDsKKyAgICAgICAgcmVzdWx0LmZQbGFjZW1lbnQgPSBUZXh0T2Zmc2V0LkJFRk9SRV9PRkZTRVQ7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHJlbmRlckNhcmV0KEJpZGlMYXlvdXRJbmZvIGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1Db25zdFRleHQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aEJhc2lzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljczJEIGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lQm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IGNoYXJPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yIHN0cm9uZ0NhcmV0Q29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yIHdlYWtDYXJldENvbG9yKQorICAgIHsKKyAgICAgICAgZmluYWwgaW50IHNlZ21lbnRDb3VudCA9IGxpbmUuZlNlZ21lbnRzLnNpemUoKTsKKyAgICAgICAgZmluYWwgaW50IGxpbmVTdGFydCA9IGxpbmUuZ2V0Q2hhclN0YXJ0KGxlbmd0aEJhc2lzKTsKKworICAgICAgICBpbnQgY3VycmVudFN0YXJ0ID0gbGluZVN0YXJ0OworICAgICAgICBCaWRpU2VnbWVudCBzZWdtZW50ID0gbnVsbDsKKyAgICAgICAgaW50IHNlZ21lbnRJbmRleDsKKworICAgICAgICBmb3IgKHNlZ21lbnRJbmRleD0wOyBzZWdtZW50SW5kZXggPCBzZWdtZW50Q291bnQ7IHNlZ21lbnRJbmRleCsrKSB7CisgICAgICAgICAgICBzZWdtZW50ID0gKEJpZGlTZWdtZW50KSBsaW5lLmZTZWdtZW50cy5lbGVtZW50QXQoc2VnbWVudEluZGV4KTsKKyAgICAgICAgICAgIGludCBjdXJyZW50RW5kcG9pbnQgPSBjdXJyZW50U3RhcnQgKyBzZWdtZW50LmZMYXlvdXQuZ2V0Q2hhcmFjdGVyQ291bnQoKTsKKyAgICAgICAgICAgIGlmIChjdXJyZW50RW5kcG9pbnQgPiBjaGFyT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjdXJyZW50U3RhcnQgPSBjdXJyZW50RW5kcG9pbnQ7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgICAgVGhlcmUgYXJlIHR3byBjaG9pY2VzIGhlcmU6CisgICAgICAgICAgICAxLiBnZXQgY2FyZXRzIGZyb20gYSBUZXh0TGF5b3V0IGFuZCByZW5kZXIgdGhlbSwgb3IKKyAgICAgICAgICAgIDIuIG1ha2UgdXAgYSBjYXJldCBvdXJzZWx2ZXMgYW5kIHJlbmRlciBpdC4KKyAgICAgICAgICAgIFdlIHdhbnQgdG8gZG8gMiB3aGVuOgorICAgICAgICAgICAgICAgICogdGhlcmUgaXMgbm8gdGV4dCBvbiB0aGUgbGluZSwgb3IKKyAgICAgICAgICAgICAgICAqIHRoZSBsaW5lIGVuZHMgd2l0aCBhIHRhYiBhbmQgd2UgYXJlIGRyYXdpbmcgdGhlIGxhc3QgY2FyZXQgb24gdGhlIGxpbmUKKyAgICAgICAgICAgIE90aGVyd2lzZSwgd2Ugd2FudCAxLgorICAgICAgICAqLworCisgICAgICAgIGlmIChzZWdtZW50SW5kZXggPT0gc2VnbWVudENvdW50ICYmIHNlZ21lbnRDb3VudCA+IDApIHsKKyAgICAgICAgICAgIC8vIElmIHdlIGdldCBoZXJlLCBsaW5lIGxlbmd0aCBpcyBub3QgMCwgYW5kIGNoYXJPZmZzZXQgaXMgYXQgZW5kIG9mIGxpbmUKKyAgICAgICAgICAgIGlmICghaXNUYWIodGV4dC5hdChjaGFyT2Zmc2V0LTEpKSkgeworICAgICAgICAgICAgICAgIHNlZ21lbnRJbmRleCA9IHNlZ21lbnRDb3VudC0xOworICAgICAgICAgICAgICAgIHNlZ21lbnQgPSAoQmlkaVNlZ21lbnQpIGxpbmUuZlNlZ21lbnRzLmVsZW1lbnRBdChzZWdtZW50SW5kZXgpOworICAgICAgICAgICAgICAgIGN1cnJlbnRTdGFydCA9IGxpbmVTdGFydCArIGxpbmUuZ2V0Q2hhckxlbmd0aCgpIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlZ21lbnQuZkxheW91dC5nZXRDaGFyYWN0ZXJDb3VudCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgT2JqZWN0IHNhdmVkUGFpbnQgPSBHcmFwaGljczJEQ29udmVyc2lvbi5nZXRDb2xvclN0YXRlKGcpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpZiAoc2VnbWVudEluZGV4IDwgc2VnbWVudENvdW50KSB7CisgICAgICAgICAgICAgICAgVGV4dExheW91dCBsYXlvdXQgPSBzZWdtZW50LmZMYXlvdXQ7CisgICAgICAgICAgICAgICAgaW50IG9mZnNldEluTGF5b3V0ID0gY2hhck9mZnNldCAtIGN1cnJlbnRTdGFydDsKKyAgICAgICAgICAgICAgICBTaGFwZVtdIGNhcmV0cyA9IGxheW91dC5nZXRDYXJldFNoYXBlcyhvZmZzZXRJbkxheW91dCwgc2VnbWVudC5mQm91bmRzKTsKKyAgICAgICAgICAgICAgICBnLnNldENvbG9yKHN0cm9uZ0NhcmV0Q29sb3IpOworICAgICAgICAgICAgICAgIGludCBsYXlvdXRQb3MgPSBsaW5lLmZMZWFkaW5nTWFyZ2luICsgc2VnbWVudC5mRGlzdGFuY2VGcm9tTGVhZGluZ01hcmdpbjsKKyAgICAgICAgICAgICAgICBpbnQgbGF5b3V0WCA9IGxpbmUuZkxlZnRUb1JpZ2h0PworICAgICAgICAgICAgICAgICAgICAgICAgeCArIGxheW91dFBvcyA6IHggKyBsaW5lQm91bmQgLSBsYXlvdXRQb3M7CisgICAgICAgICAgICAgICAgaW50IGxheW91dFkgPSB5ICsgbGluZS5mQXNjZW50OworCisgICAgICAgICAgICAgICAgLy8gVHJhbnNsYXRpbmcgYW5kIHRoZW4gY2xpcHBpbmcgZG9lc24ndCB3b3JrLiAgVHJ5IHRoaXM6CisgICAgICAgICAgICAgICAgUmVjdGFuZ2xlMkQuRmxvYXQgY2xpcFJlY3QgPSBuZXcgUmVjdGFuZ2xlMkQuRmxvYXQoKTsKKyAgICAgICAgICAgICAgICBjbGlwUmVjdC5zZXRSZWN0KHNlZ21lbnQuZkJvdW5kcyk7CisgICAgICAgICAgICAgICAgY2xpcFJlY3QueCArPSBsYXlvdXRYOworICAgICAgICAgICAgICAgIGNsaXBSZWN0LnkgKz0gbGF5b3V0WTsKKyAgICAgICAgICAgICAgICBjbGlwUmVjdC53aWR0aCArPSAxOworICAgICAgICAgICAgICAgIGNsaXBSZWN0LmhlaWdodCAtPSAxOworCisgICAgICAgICAgICAgICAgT2JqZWN0IHNhdmVkQ2xpcCA9IENsaXBXb3JrYXJvdW5kLnNhdmVDbGlwU3RhdGUoZyk7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgQ2xpcFdvcmthcm91bmQudHJhbnNsYXRlQW5kRHJhd1NoYXBlV2l0aENsaXAoZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXlvdXRYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcFJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FyZXRzWzBdKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhcmV0c1sxXSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnLnNldENvbG9yKHdlYWtDYXJldENvbG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENsaXBXb3JrYXJvdW5kLnRyYW5zbGF0ZUFuZERyYXdTaGFwZVdpdGhDbGlwKGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dFgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXBSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXJldHNbMV0pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgICAgICAgICBDbGlwV29ya2Fyb3VuZC5yZXN0b3JlQ2xpcFN0YXRlKGcsIHNhdmVkQ2xpcCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaW50IGxpbmVFbmQgPSBsaW5lLmZMZWFkaW5nTWFyZ2luICsgbGluZS5mVG90YWxBZHZhbmNlOworICAgICAgICAgICAgICAgIGludCBlbmRYID0gbGluZS5mTGVmdFRvUmlnaHQ/IGxpbmVFbmQgOiBsaW5lQm91bmQtbGluZUVuZDsKKyAgICAgICAgICAgICAgICBlbmRYICs9IHg7CisgICAgICAgICAgICAgICAgZy5kcmF3TGluZShlbmRYLCB5LCBlbmRYLCB5K2xpbmUuZ2V0SGVpZ2h0KCktMSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZmluYWxseSB7CisgICAgICAgICAgICBHcmFwaGljczJEQ29udmVyc2lvbi5yZXN0b3JlQ29sb3JTdGF0ZShnLCBzYXZlZFBhaW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgUmVjdGFuZ2xlIGNhcmV0Qm91bmRzKEJpZGlMYXlvdXRJbmZvIGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUNvbnN0VGV4dCB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGhCYXNpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZUJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjaGFyT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB5KSB7CisKKyAgICAgICAgZmluYWwgaW50IHNlZ21lbnRDb3VudCA9IGxpbmUuZlNlZ21lbnRzLnNpemUoKTsKKyAgICAgICAgZmluYWwgaW50IGxpbmVTdGFydCA9IGxpbmUuZ2V0Q2hhclN0YXJ0KGxlbmd0aEJhc2lzKTsKKyAgICAgICAgaW50IGN1cnJlbnRTdGFydCA9IGxpbmVTdGFydDsKKyAgICAgICAgQmlkaVNlZ21lbnQgc2VnbWVudCA9IG51bGw7CisgICAgICAgIGludCBzZWdtZW50SW5kZXg7CisKKyAgICAgICAgZm9yIChzZWdtZW50SW5kZXg9MDsgc2VnbWVudEluZGV4IDwgc2VnbWVudENvdW50OyBzZWdtZW50SW5kZXgrKykgeworICAgICAgICAgICAgc2VnbWVudCA9IChCaWRpU2VnbWVudCkgbGluZS5mU2VnbWVudHMuZWxlbWVudEF0KHNlZ21lbnRJbmRleCk7CisgICAgICAgICAgICBpbnQgY3VycmVudEVuZHBvaW50ID0gY3VycmVudFN0YXJ0ICsgc2VnbWVudC5mTGF5b3V0LmdldENoYXJhY3RlckNvdW50KCk7CisgICAgICAgICAgICBpZiAoY3VycmVudEVuZHBvaW50ID4gY2hhck9mZnNldCkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY3VycmVudFN0YXJ0ID0gY3VycmVudEVuZHBvaW50OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNlZ21lbnRJbmRleCA9PSBzZWdtZW50Q291bnQgJiYgc2VnbWVudENvdW50ID4gMCkgeworICAgICAgICAgICAgLy8gSWYgd2UgZ2V0IGhlcmUsIGxpbmUgbGVuZ3RoIGlzIG5vdCAwLCBhbmQgY2hhck9mZnNldCBpcyBhdCBlbmQgb2YgbGluZQorICAgICAgICAgICAgaWYgKCFpc1RhYih0ZXh0LmF0KGNoYXJPZmZzZXQtMSkpKSB7CisgICAgICAgICAgICAgICAgc2VnbWVudEluZGV4ID0gc2VnbWVudENvdW50LTE7CisgICAgICAgICAgICAgICAgc2VnbWVudCA9IChCaWRpU2VnbWVudCkgbGluZS5mU2VnbWVudHMuZWxlbWVudEF0KHNlZ21lbnRJbmRleCk7CisgICAgICAgICAgICAgICAgY3VycmVudFN0YXJ0ID0gbGluZVN0YXJ0ICsgbGluZS5nZXRDaGFyTGVuZ3RoKCkgLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudC5mTGF5b3V0LmdldENoYXJhY3RlckNvdW50KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBSZWN0YW5nbGUgcjsKKyAgICAgICAgCisgICAgICAgIGlmIChzZWdtZW50SW5kZXggPCBzZWdtZW50Q291bnQpIHsKKyAgICAgICAgICAgIFRleHRMYXlvdXQgbGF5b3V0ID0gc2VnbWVudC5mTGF5b3V0OworICAgICAgICAgICAgaW50IG9mZnNldEluTGF5b3V0ID0gY2hhck9mZnNldCAtIGN1cnJlbnRTdGFydDsKKyAgICAgICAgICAgIFNoYXBlW10gY2FyZXRzID0gbGF5b3V0LmdldENhcmV0U2hhcGVzKG9mZnNldEluTGF5b3V0LCBzZWdtZW50LmZCb3VuZHMpOworICAgICAgICAgICAgciA9IGNhcmV0c1swXS5nZXRCb3VuZHMoKTsKKyAgICAgICAgICAgIGlmIChjYXJldHNbMV0gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHIuYWRkKGNhcmV0c1sxXS5nZXRCb3VuZHMoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByLndpZHRoICs9IDE7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGludCBsYXlvdXRQb3MgPSBsaW5lLmZMZWFkaW5nTWFyZ2luICsgc2VnbWVudC5mRGlzdGFuY2VGcm9tTGVhZGluZ01hcmdpbjsKKyAgICAgICAgICAgIGlmIChsaW5lLmZMZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgICAgIHIueCArPSBsYXlvdXRQb3M7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByLnggKz0gbGluZUJvdW5kIC0gbGF5b3V0UG9zOworICAgICAgICAgICAgfQorICAgICAgICAgICAgci55ICs9IGxpbmUuZkFzY2VudDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHIgPSBuZXcgUmVjdGFuZ2xlKCk7CisgICAgICAgICAgICByLmhlaWdodCA9IGxpbmUuZ2V0SGVpZ2h0KCk7CisgICAgICAgICAgICByLndpZHRoID0gMTsKKyAgICAgICAgICAgIGludCBsaW5lRW5kID0gbGluZS5mTGVhZGluZ01hcmdpbiArIGxpbmUuZlRvdGFsQWR2YW5jZTsKKyAgICAgICAgICAgIGlmIChsaW5lLmZMZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgICAgIHIueCA9IGxpbmVFbmQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByLnggPSBsaW5lQm91bmQgLSBsaW5lRW5kOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICByLnRyYW5zbGF0ZSh4LCB5KTsKKyAgICAgICAgcmV0dXJuIHI7CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgc3Ryb25nQ2FyZXRCYXNlbGluZVBvc2l0aW9uKEJpZGlMYXlvdXRJbmZvIGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGhCYXNpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVCb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNoYXJPZmZzZXQpIHsKKworICAgICAgICBmaW5hbCBpbnQgc2VnbWVudENvdW50ID0gbGluZS5mU2VnbWVudHMuc2l6ZSgpOworICAgICAgICBpbnQgY3VycmVudFN0YXJ0ID0gbGluZS5nZXRDaGFyU3RhcnQobGVuZ3RoQmFzaXMpOworICAgICAgICBCaWRpU2VnbWVudCBzZWdtZW50ID0gbnVsbDsKKyAgICAgICAgaW50IHNlZ21lbnRJbmRleDsKKworICAgICAgICBmb3IgKHNlZ21lbnRJbmRleD0wOyBzZWdtZW50SW5kZXggPCBzZWdtZW50Q291bnQ7IHNlZ21lbnRJbmRleCsrKSB7CisgICAgICAgICAgICBzZWdtZW50ID0gKEJpZGlTZWdtZW50KSBsaW5lLmZTZWdtZW50cy5lbGVtZW50QXQoc2VnbWVudEluZGV4KTsKKyAgICAgICAgICAgIGludCBjdXJyZW50RW5kcG9pbnQgPSBjdXJyZW50U3RhcnQgKyBzZWdtZW50LmZMYXlvdXQuZ2V0Q2hhcmFjdGVyQ291bnQoKTsKKyAgICAgICAgICAgIGlmIChjdXJyZW50RW5kcG9pbnQgPiBjaGFyT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjdXJyZW50U3RhcnQgPSBjdXJyZW50RW5kcG9pbnQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2VnbWVudEluZGV4IDwgc2VnbWVudENvdW50KSB7CisgICAgICAgICAgICBUZXh0TGF5b3V0IGxheW91dCA9IHNlZ21lbnQuZkxheW91dDsKKyAgICAgICAgICAgIGludCBvZmZzZXRJbkxheW91dCA9IGNoYXJPZmZzZXQgLSBjdXJyZW50U3RhcnQ7CisgICAgICAgICAgICBUZXh0SGl0SW5mbyBoaXQgPSBUZXh0SGl0SW5mby5hZnRlck9mZnNldChvZmZzZXRJbkxheW91dCk7CisgICAgICAgICAgICBoaXQgPSBsYXlvdXQuREVGQVVMVF9DQVJFVF9QT0xJQ1kuZ2V0U3Ryb25nQ2FyZXQoaGl0LCBoaXQuZ2V0T3RoZXJIaXQoKSwgbGF5b3V0KTsKKyAgICAgICAgICAgIGZsb2F0W10gaW5mbyA9IGxheW91dC5nZXRDYXJldEluZm8oaGl0KTsKKyAgICAgICAgICAgIGludCBsYXlvdXRQb3MgPSBsaW5lLmZMZWFkaW5nTWFyZ2luICsgc2VnbWVudC5mRGlzdGFuY2VGcm9tTGVhZGluZ01hcmdpbjsKKyAgICAgICAgICAgIGlmIChsaW5lLmZMZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgICAgIHJldHVybiBsYXlvdXRQb3MgKyAoaW50KSBpbmZvWzBdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmVCb3VuZCAtIGxheW91dFBvcyArIChpbnQpIGluZm9bMF07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpbnQgbGluZUVuZCA9IGxpbmUuZkxlYWRpbmdNYXJnaW4gKyBsaW5lLmZUb3RhbEFkdmFuY2U7CisgICAgICAgICAgICBpZiAobGluZS5mTGVmdFRvUmlnaHQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbGluZUVuZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBsaW5lQm91bmQgLSBsaW5lRW5kOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgZ2V0TmV4dE9mZnNldChCaWRpTGF5b3V0SW5mbyBsaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aEJhc2lzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNoYXJPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydCBkaXIpIHsKKworICAgICAgICBpZiAoZGlyICE9IE1Gb3JtYXR0ZXIuZUxlZnQgJiYgZGlyICE9IE1Gb3JtYXR0ZXIuZVJpZ2h0KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGRpcmVjdGlvbi4iKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGZpbmQgc2VnbWVudCBjb250YWluaW5nIG9mZnNldDoKKyAgICAgICAgZmluYWwgaW50IHNlZ21lbnRDb3VudCA9IGxpbmUuZlNlZ21lbnRzLnNpemUoKTsKKyAgICAgICAgZmluYWwgaW50IGxpbmVDaGFyU3RhcnQgPSBsaW5lLmdldENoYXJTdGFydChsZW5ndGhCYXNpcyk7CisKKyAgICAgICAgaW50IGN1cnJlbnRTdGFydCA9IGxpbmVDaGFyU3RhcnQ7CisgICAgICAgIEJpZGlTZWdtZW50IHNlZ21lbnQgPSBudWxsOworICAgICAgICBpbnQgc2VnbWVudEluZGV4OworCisgICAgICAgIGZvciAoc2VnbWVudEluZGV4PTA7IHNlZ21lbnRJbmRleCA8IHNlZ21lbnRDb3VudDsgc2VnbWVudEluZGV4KyspIHsKKyAgICAgICAgICAgIHNlZ21lbnQgPSAoQmlkaVNlZ21lbnQpIGxpbmUuZlNlZ21lbnRzLmVsZW1lbnRBdChzZWdtZW50SW5kZXgpOworICAgICAgICAgICAgaW50IGN1cnJlbnRFbmRwb2ludCA9IGN1cnJlbnRTdGFydCArIHNlZ21lbnQuZkxheW91dC5nZXRDaGFyYWN0ZXJDb3VudCgpOworICAgICAgICAgICAgaWYgKGN1cnJlbnRFbmRwb2ludCA+IGNoYXJPZmZzZXQgfHwKKyAgICAgICAgICAgICAgICAgICAgKHNlZ21lbnRJbmRleCA9PSBzZWdtZW50Q291bnQtMSAmJiBjdXJyZW50RW5kcG9pbnQ9PWNoYXJPZmZzZXQpKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjdXJyZW50U3RhcnQgPSBjdXJyZW50RW5kcG9pbnQ7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBib29sZWFuIGxvZ0FkdmFuY2UgPSAoZGlyPT1NRm9ybWF0dGVyLmVSaWdodCk9PShsaW5lLmZMZWZ0VG9SaWdodCk7CisKKyAgICAgICAgaW50IHJlc3VsdDsKKworICAgICAgICBpZiAoc2VnbWVudEluZGV4IDwgc2VnbWVudENvdW50KSB7CisgICAgICAgICAgICBUZXh0TGF5b3V0IGxheW91dCA9IHNlZ21lbnQuZkxheW91dDsKKyAgICAgICAgICAgIGludCBvZmZzZXRJbkxheW91dCA9IGNoYXJPZmZzZXQgLSBjdXJyZW50U3RhcnQ7CisgICAgICAgICAgICBUZXh0SGl0SW5mbyBoaXQgPSAoZGlyPT1NRm9ybWF0dGVyLmVMZWZ0KT8KKyAgICAgICAgICAgICAgICAgICAgICAgIGxheW91dC5nZXROZXh0TGVmdEhpdChvZmZzZXRJbkxheW91dCkgOgorICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0LmdldE5leHRSaWdodEhpdChvZmZzZXRJbkxheW91dCk7CisgICAgICAgICAgICBpZiAoaGl0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBsb2dBZHZhbmNlPworICAgICAgICAgICAgICAgICAgICBjdXJyZW50U3RhcnQrbGF5b3V0LmdldENoYXJhY3RlckNvdW50KCkrMSA6IGN1cnJlbnRTdGFydC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gaGl0LmdldEluc2VydGlvbkluZGV4KCkgKyBjdXJyZW50U3RhcnQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXN1bHQgPSBsb2dBZHZhbmNlPyBsaW5lQ2hhclN0YXJ0ICsgbGluZS5mQ2hhckxlbmd0aCArIDEgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lQ2hhclN0YXJ0IC0gMTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvQ2xpcFdvcmthcm91bmQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvQ2xpcFdvcmthcm91bmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zMjdlYzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9DbGlwV29ya2Fyb3VuZC5qYXZhCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBDbGlwV29ya2Fyb3VuZC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUwOjAzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCisvLyBSZXF1aXJlcyBKYXZhMgorCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dGZvcm1hdDsKKworaW1wb3J0IGphdmEuYXd0LlNoYXBlOworLy8vKkpESzEySU1QT1JUUworaW1wb3J0IGphdmEuYXd0LkdyYXBoaWNzMkQ7CitpbXBvcnQgamF2YS5hd3QuZ2VvbS5SZWN0YW5nbGUyRDsKK2ltcG9ydCBqYXZhLmF3dC5nZW9tLlBhdGhJdGVyYXRvcjsKK2ltcG9ydCBqYXZhLmF3dC5nZW9tLkxpbmUyRDsKKy8vSkRLMTJJTVBPUlRTKi8KKy8qSkRLMTFJTVBPUlRTCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LkdyYXBoaWNzMkQ7CitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LlJlY3RhbmdsZTJEOworSkRLMTFJTVBPUlRTKi8KKworLyoqCisgKiBUaGlzIGNsYXNzIGV4aXN0cyB0byB3b3JrIGFyb3VuZCBhIGNsaXBwaW5nIGJ1ZyBpbiBKREsgMS4yLgorICovCitmaW5hbCBjbGFzcyBDbGlwV29ya2Fyb3VuZCB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworLy8vKkpESzEySU1QT1JUUworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBleGN1c2UgPQorICAgICAgICAiU29ycnksIHRoaXMgbWV0aG9kIGlzIGEgdmVyeSBsaW1pdGVkIHdvcmthcm91bmQgZm9yIGEgSkRLIDEuMiBidWcuIjsKKy8vSkRLMTJJTVBPUlRTKi8KKyAgICAKKyAgICBzdGF0aWMgT2JqZWN0IHNhdmVDbGlwU3RhdGUoR3JhcGhpY3MyRCBnKSB7CisvLy8qSkRLMTJJTVBPUlRTCisgICAgICAgIHJldHVybiBudWxsOworLy9KREsxMklNUE9SVFMqLworLypKREsxMUlNUE9SVFMKKyAgICAgICAgcmV0dXJuIGcuZ2V0Q2xpcCgpOworSkRLMTFJTVBPUlRTKi8KKyAgICB9CisgICAgCisgICAgc3RhdGljIHZvaWQgcmVzdG9yZUNsaXBTdGF0ZShHcmFwaGljczJEIGcsIE9iamVjdCBzdGF0ZSkgeworLy8vKkpESzEySU1QT1JUUworICAgICAgICBpZiAoc3RhdGUgIT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbnZhbGlkIGNsaXAgc3RhdGUgZm9yIHRoaXMgY2xhc3MuIik7CisgICAgICAgIH0KKy8vSkRLMTJJTVBPUlRTKi8KKy8qSkRLMTFJTVBPUlRTCisgICAgICAgIGcuc2V0Q2xpcCgoU2hhcGUpc3RhdGUpOworSkRLMTFJTVBPUlRTKi8KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogRHJhdyB0aGUgZ2l2ZW4gU2hhcGUgaW50byB0aGUgR3JhcGhpY3MsIHRyYW5zbGF0ZWQgYnkgKGR4LCBkeSkKKyAgICAgKiBhbmQgY2xpcHBlZCB0byBjbGlwUmVjdC4KKyAgICAgKi8KKyAgICBzdGF0aWMgdm9pZCB0cmFuc2xhdGVBbmREcmF3U2hhcGVXaXRoQ2xpcChHcmFwaGljczJEIGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWN0YW5nbGUyRCBjbGlwUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaGFwZSBzaGFwZSkgeworLy8vKkpESzEySU1QT1JUUworICAgICAgICAvLyByZWFsbHkgYm9ndXMgaW1wbGVtZW50YXRpb24gcmlnaHQgbm93OiAgYmFzaWNhbGx5IG9ubHkKKyAgICAgICAgLy8gZHJhd3MgY2FyZXRzIGZyb20gYSBUZXh0TGF5b3V0LgorICAgICAgICAvLyBPaCB5ZWFoLCBpdCBkb2Vzbid0IHJlYWxseSBjbGlwIGNvcnJlY3RseSBlaXRoZXIuLi4KKworICAgICAgICBQYXRoSXRlcmF0b3IgcGF0aEl0ZXIgPSBzaGFwZS5nZXRQYXRoSXRlcmF0b3IobnVsbCk7CisgICAgICAgIGZsb2F0W10gcG9pbnRzID0gbmV3IGZsb2F0WzZdOworCisgICAgICAgIGludCB0eXBlID0gcGF0aEl0ZXIuY3VycmVudFNlZ21lbnQocG9pbnRzKTsKKyAgICAgICAgaWYgKHR5cGUgIT0gUGF0aEl0ZXJhdG9yLlNFR19NT1ZFVE8pIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihleGN1c2UpOworICAgICAgICB9CisgICAgICAgIGZsb2F0IHgxID0gcG9pbnRzWzBdICsgZHg7CisgICAgICAgIGZsb2F0IHkxID0gcG9pbnRzWzFdICsgZHk7CisKKyAgICAgICAgaWYgKHBhdGhJdGVyLmlzRG9uZSgpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXhjdXNlKTsKKyAgICAgICAgfQorCisgICAgICAgIHBhdGhJdGVyLm5leHQoKTsKKyAgICAgICAgdHlwZSA9IHBhdGhJdGVyLmN1cnJlbnRTZWdtZW50KHBvaW50cyk7CisgICAgICAgIGlmICh0eXBlICE9IFBhdGhJdGVyYXRvci5TRUdfTElORVRPKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXhjdXNlKTsKKyAgICAgICAgfQorICAgICAgICBmbG9hdCB4MiA9IHBvaW50c1swXSArIGR4OworICAgICAgICBmbG9hdCB5MiA9IHBvaW50c1sxXSArIGR5OworCisgICAgICAgIGZsb2F0IG1pblkgPSAoZmxvYXQpIGNsaXBSZWN0LmdldFkoKTsKKyAgICAgICAgZmxvYXQgbWF4WSA9IChmbG9hdCkgY2xpcFJlY3QuZ2V0TWF4WSgpOworCisgICAgICAgIC8vIE5vdyBjbGlwIHdpdGhpbiB2ZXJ0aWNhbCBsaW1pdHMgaW4gY2xpcFJlY3QKKyAgICAgICAgaWYgKHkxID09IHkyKSB7CisgICAgICAgICAgICBpZiAoeTEgPCBtaW5ZIHx8IHkxID49IG1heFkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoeTEgPiB5MikgeworICAgICAgICAgICAgICAgIGZsb2F0IHQgPSB4MTsKKyAgICAgICAgICAgICAgICB4MSA9IHgyOworICAgICAgICAgICAgICAgIHgyID0gdDsKKyAgICAgICAgICAgICAgICB0ID0geTE7CisgICAgICAgICAgICAgICAgeTEgPSB5MjsKKyAgICAgICAgICAgICAgICB5MiA9IHQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZsb2F0IGludlNsb3BlID0gKHgyLXgxKSAvICh5Mi15MSk7CisgICAgICAgICAgICBpZiAoeTEgPCBtaW5ZKSB7CisgICAgICAgICAgICAgICAgeDEgLT0gKG1pblkteTEpICogaW52U2xvcGU7CisgICAgICAgICAgICAgICAgeTEgPSBtaW5ZOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHkyID49IG1heFkpIHsKKyAgICAgICAgICAgICAgICB4MSArPSAoeTItbWF4WSkgKiBpbnZTbG9wZTsKKyAgICAgICAgICAgICAgICB5MiA9IG1heFk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBnLmRyYXcobmV3IExpbmUyRC5GbG9hdCh4MSwgeTEsIHgyLCB5MikpOworLy9KREsxMklNUE9SVFMqLworLypKREsxMUlNUE9SVFMKKyAgICAgICAgZy5zZXRDbGlwKGNsaXBSZWN0KTsKKyAgICAgICAgZy50cmFuc2xhdGUoZHgsIGR5KTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGcuZHJhdyhzaGFwZSk7CisgICAgICAgIH0KKyAgICAgICAgZmluYWxseSB7CisgICAgICAgICAgICBnLnRyYW5zbGF0ZSgtZHgsIC1keSk7CisgICAgICAgIH0KK0pESzExSU1QT1JUUyovCisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9EZWZhdWx0Q2hhcmFjdGVyTWV0cmljLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L0RlZmF1bHRDaGFyYWN0ZXJNZXRyaWMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yYWVmMjQ1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9EZWZhdWx0Q2hhcmFjdGVyTWV0cmljLmphdmEKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogRGVmYXVsdENoYXJhY3Rlck1ldHJpYy5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUwOjAzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCisvLyBSZXF1aXJlcyBKYXZhMgorcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRmb3JtYXQ7CisKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCisvLy8qSkRLMTJJTVBPUlRTCitpbXBvcnQgamF2YS5hd3QuZm9udC5Gb250UmVuZGVyQ29udGV4dDsKK2ltcG9ydCBqYXZhLmF3dC5mb250LlRleHRMYXlvdXQ7CisvL0pESzEySU1QT1JUUyovCisKKy8qSkRLMTFJTVBPUlRTCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LkZvbnRSZW5kZXJDb250ZXh0OworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5UZXh0TGF5b3V0OworSkRLMTFJTVBPUlRTKi8KKworLyoqCisgKiBUaGlzIGNsYXNzIGlzIHVzZWQgYnkgdGhlIEZvcm1hdHRlciB0byBlc3RpbWF0ZSB0aGUgaGVpZ2h0CisgKiBvZiBjaGFyYWN0ZXJzIGluIGEgcGFydGljdWxhciBzdHlsZS4KKyAqLworZmluYWwgY2xhc3MgRGVmYXVsdENoYXJhY3Rlck1ldHJpYyB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIAorICAgIGZpbmFsIGNsYXNzIE1ldHJpYyB7CisgICAgCisgICAgICAgIHByaXZhdGUgZmxvYXQgZkFzY2VudDsKKyAgICAgICAgcHJpdmF0ZSBmbG9hdCBmRGVzY2VudDsKKyAgICAgICAgcHJpdmF0ZSBmbG9hdCBmTGVhZGluZzsKKyAgICAKKyAgICAgICAgcHJpdmF0ZSBNZXRyaWMoZmxvYXQgYXNjZW50LCBmbG9hdCBkZXNjZW50LCBmbG9hdCBsZWFkaW5nKSB7CisgICAgCisgICAgICAgICAgICBmQXNjZW50ID0gYXNjZW50OworICAgICAgICAgICAgZkRlc2NlbnQgPSBkZXNjZW50OworICAgICAgICAgICAgZkxlYWRpbmcgPSBsZWFkaW5nOworICAgICAgICB9CisgICAgCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0QXNjZW50KCkgeworICAgICAgICAgICAgcmV0dXJuIChpbnQpIE1hdGguY2VpbChmQXNjZW50KTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBwdWJsaWMgaW50IGdldERlc2NlbnQoKSB7CisgICAgICAgICAgICByZXR1cm4gKGludCkgTWF0aC5jZWlsKGZEZXNjZW50KTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBwdWJsaWMgaW50IGdldExlYWRpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gKGludCkgTWF0aC5jZWlsKGZMZWFkaW5nKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIGZpbmFsIEhhc2h0YWJsZSBmQ2FjaGUgPSBuZXcgSGFzaHRhYmxlKCk7CisgICAgcHJpdmF0ZSAvKmZpbmFsKi8gRm9udFJlc29sdmVyIGZSZXNvbHZlcjsKKyAgICBwcml2YXRlIC8qZmluYWwqLyBGb250UmVuZGVyQ29udGV4dCBmRnJjOworICAgIAorICAgIHB1YmxpYyBEZWZhdWx0Q2hhcmFjdGVyTWV0cmljKEZvbnRSZXNvbHZlciByZXNvbHZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb250UmVuZGVyQ29udGV4dCBmcmMpIHsKKyAgICAKKyAgICAgICAgZlJlc29sdmVyID0gcmVzb2x2ZXI7CisgICAgICAgIGZGcmMgPSBmcmM7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEdldCBhIERlZmF1bHRDaGFyYWN0ZXJNZXRyaWMgaW5zdGFuY2UgZm9yIHRoZSBnaXZlbiBzdHlsZS4gIFRoZQorICAgICAqIHN0eWxlIGlzIGZpcnN0IHJlc29sdmVkIHdpdGggRm9udFJlc29sdmVyLgorICAgICAqLworICAgIHB1YmxpYyBNZXRyaWMgZ2V0TWV0cmljRm9yU3R5bGUoQXR0cmlidXRlTWFwIHN0eWxlKSB7CisKKyAgICAgICAgc3R5bGUgPSBmUmVzb2x2ZXIuYXBwbHlGb250KHN0eWxlKTsKKyAgICAgICAgTWV0cmljIG1ldHJpYyA9IChNZXRyaWMpIGZDYWNoZS5nZXQoc3R5bGUpOworICAgICAgICBpZiAobWV0cmljID09IG51bGwpIHsKKyAgICAgICAgICAgIFRleHRMYXlvdXQgbGF5b3V0ID0gbmV3IFRleHRMYXlvdXQoIiAiLCBzdHlsZSwgZkZyYyk7CisgICAgICAgICAgICBtZXRyaWMgPSBuZXcgTWV0cmljKGxheW91dC5nZXRBc2NlbnQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0LmdldERlc2NlbnQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5b3V0LmdldExlYWRpbmcoKSk7CisgICAgICAgICAgICBmQ2FjaGUucHV0KHN0eWxlLCBtZXRyaWMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtZXRyaWM7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvRm9udFJlc29sdmVyLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L0ZvbnRSZXNvbHZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjllODZjYWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L0ZvbnRSZXNvbHZlci5qYXZhCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEZvbnRSZXNvbHZlci5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUwOjAzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCisvLyBSZXF1aXJlcyBKYXZhMgorcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRmb3JtYXQ7CisKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuVGV4dEF0dHJpYnV0ZTsKKworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5Gb250VXRpbHM7CisKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworaW1wb3J0IGphdmEuYXd0LkZvbnQ7CisKK2ZpbmFsIGNsYXNzIEZvbnRSZXNvbHZlciB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworCisgICAgc3RhdGljIHsKKy8vIEV2ZW4gdGhvdWdoIGl0IHZpb2xhdGVzIHRoZSBQcmltZSBEaXJlY3RpdmUgSSdsbCBjb25kaXRpb25hbGl6ZQorLy8gdGhpcyBhbnl3YXksIHNpbmNlIGl0IGlzIGp1c3QgYSAxLjIgd29ya2Fyb3VuZCB3aGljaCBJIGdyZWF0bHkKKy8vIHJlc2VudC4KKy8vLypKREsxMklNUE9SVFMKKyAgICAgICAgamF2YS5hd3QuR3JhcGhpY3NFbnZpcm9ubWVudC5nZXRMb2NhbEdyYXBoaWNzRW52aXJvbm1lbnQoKS5nZXRBbGxGb250cygpOworLy9KREsxMklNUE9SVFMqLworICAgIH0KKworICAgIHByaXZhdGUgSGFzaHRhYmxlIHN0eWxlTWFwOworICAgIHByaXZhdGUgZmluYWwgQXR0cmlidXRlTWFwIGZEZWZhdWx0Rm9udE1hcDsKKworICAgIHB1YmxpYyBGb250UmVzb2x2ZXIoQXR0cmlidXRlTWFwIGRlZmF1bHRzKSB7CisKKyAgICAgICAgc3R5bGVNYXAgPSBuZXcgSGFzaHRhYmxlKCk7CisgICAgICAgIEhhc2h0YWJsZSB0ZW1wTWFwID0gbmV3IEhhc2h0YWJsZSgpOworICAgICAgICB0ZW1wTWFwLnB1dChUZXh0QXR0cmlidXRlLkZBTUlMWSwgZGVmYXVsdHMuZ2V0KFRleHRBdHRyaWJ1dGUuRkFNSUxZKSk7CisgICAgICAgIHRlbXBNYXAucHV0KFRleHRBdHRyaWJ1dGUuV0VJR0hULCBkZWZhdWx0cy5nZXQoVGV4dEF0dHJpYnV0ZS5XRUlHSFQpKTsKKyAgICAgICAgdGVtcE1hcC5wdXQoVGV4dEF0dHJpYnV0ZS5QT1NUVVJFLCBkZWZhdWx0cy5nZXQoVGV4dEF0dHJpYnV0ZS5QT1NUVVJFKSk7CisgICAgICAgIHRlbXBNYXAucHV0KFRleHRBdHRyaWJ1dGUuU0laRSwgZGVmYXVsdHMuZ2V0KFRleHRBdHRyaWJ1dGUuU0laRSkpOworICAgICAgICBmRGVmYXVsdEZvbnRNYXAgPSBuZXcgQXR0cmlidXRlTWFwKHRlbXBNYXApOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZldGNoIHJlc3VsdCBvZiByZXNvbHZlKHN0eWxlKSBmcm9tIGNhY2hlLCBpZiBwcmVzZW50LgorICAgICAqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVNYXAgYXBwbHlGb250KEF0dHJpYnV0ZU1hcCBzdHlsZSkgeworCisgICAgICAgIE9iamVjdCBjYWNoZWRNYXAgPSBzdHlsZU1hcC5nZXQoc3R5bGUpOworCisgICAgICAgIGlmIChjYWNoZWRNYXAgPT0gbnVsbCkgeworICAgICAgICAgICAgQXR0cmlidXRlTWFwIHJlc29sdmVkTWFwID0gcmVzb2x2ZShzdHlsZSk7CisgICAgICAgICAgICBzdHlsZU1hcC5wdXQoc3R5bGUsIHJlc29sdmVkTWFwKTsKKyAgICAgICAgICAgIHJldHVybiByZXNvbHZlZE1hcDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAoQXR0cmlidXRlTWFwKSBjYWNoZWRNYXA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYW4gQXR0cmlidXRlTWFwIGNvbnRhaW5pbmcgYSBGb250IGNvbXB1dGVkIGZyb20gdGhlCisgICAgICogYXR0cmlidXRlcyBpbiA8dHQ+c3R5bGU8L3R0Pi4KKyAgICAgKi8KKyAgICBwdWJsaWMgQXR0cmlidXRlTWFwIHJlc29sdmUoQXR0cmlidXRlTWFwIHN0eWxlKSB7CisKKyAgICAgICAgaWYgKHN0eWxlLmdldChUZXh0QXR0cmlidXRlLkZPTlQpICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBzdHlsZTsKKyAgICAgICAgfQorCisgICAgICAgIEZvbnQgZm9udCA9IEZvbnRVdGlscy5nZXRGb250KGZEZWZhdWx0Rm9udE1hcC5hZGRBdHRyaWJ1dGVzKHN0eWxlKSk7CisKKyAgICAgICAgcmV0dXJuIHN0eWxlLmFkZEF0dHJpYnV0ZShUZXh0QXR0cmlidXRlLkZPTlQsIGZvbnQpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvTGF5b3V0SW5mby5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9MYXlvdXRJbmZvLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMGE2OTBlYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvTGF5b3V0SW5mby5qYXZhCkBAIC0wLDAgKzEsMTk5IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBMYXlvdXRJbmZvLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTA6MDMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8vIFJlcXVpcmVzIEphdmEyCisvKiogTGF5b3V0SW5mbworCisgICAgQSBsaW5lIG9mIHRleHQsIHBvc3NpYmx5IGNvbnRhaW5pbmcgdGFiLXNlZ21lbnRzLgorKi8KKworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRmb3JtYXQ7CisKK2ltcG9ydCBqYXZhLmF3dC5Db2xvcjsKK2ltcG9ydCBqYXZhLmF3dC5SZWN0YW5nbGU7CisKKy8vLypKREsxMklNUE9SVFMKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczJEOworLy9KREsxMklNUE9SVFMqLworCisvKkpESzExSU1QT1JUUworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5HcmFwaGljczJEOworSkRLMTFJTVBPUlRTKi8KKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworCithYnN0cmFjdCBjbGFzcyBMYXlvdXRJbmZvCit7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIGludCBmQ2hhclN0YXJ0OyAgICAgICAvLyBvZmZzZXQgaW4gdGV4dCB0byBzdGFydCBvZiBsaW5lICh3YXMgZlN0YXJ0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5lZy4gdmFsdWVzIGluZGljYXRlIGRpc3RhbmNlIGZyb20gZW5kIG9mIHRleHQKKyAgICBwcml2YXRlIGludCBmR3JhcGhpY1N0YXJ0OyAgICAvLyBtaW4gcGl4ZWwgb2Zmc2V0IGluIGZpbGwgZGlyZWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbmVnYXRpdmUgdmFsdWVzIGluZGljYXRlIGRpc3RhbmNlIGZyb20gYm90dG9tIG9mIHRleHQgdmlldworCisgICAgLyoKKyAgICAgICAgVGhlc2UgbWV0aG9kcyBhcmUgZm9yIHN0b3JpbmcgTGF5b3V0cyBpbiBhIGdhcC1zdG9yYWdlLAorICAgICAgICByZWxhdGl2ZSB0byBlaXRoZXIgdGhlIHN0YXJ0IG9mIGVuZCBvZiB0ZXh0LiAgU2VlIEFzeW5jRm9ybWF0dGVyLgorCisgICAgICAgIElmIHlvdSBqdXN0IHdhbnQgYWJzb2x1dGUgKHRoYXQgaXMsIHN0YXJ0LXJlbGF0aXZlKSBjaGFyIGFuZAorICAgICAgICBncmFwaGljIHN0YXJ0cywgZG9uJ3QgbWFrZSB0aGVtIGVuZC1yZWxhdGl2ZS4KKyAgICAqLworCisgICAgcHVibGljIGZpbmFsIGludCBnZXRDaGFyU3RhcnQoaW50IGxlbmd0aEJhc2lzKSB7CisKKyAgICAgICAgaWYgKGZDaGFyU3RhcnQgPj0gMCkgeworICAgICAgICAgICAgcmV0dXJuIGZDaGFyU3RhcnQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbGVuZ3RoQmFzaXMgKyBmQ2hhclN0YXJ0OworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGZpbmFsIGludCBnZXRHcmFwaGljU3RhcnQoaW50IGdyYXBoaWNCYXNpcykgeworCisgICAgICAgIGlmIChmR3JhcGhpY1N0YXJ0ID49IDApIHsKKyAgICAgICAgICAgIHJldHVybiBmR3JhcGhpY1N0YXJ0OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGdyYXBoaWNCYXNpcyArIGZHcmFwaGljU3RhcnQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRDaGFyU3RhcnQoaW50IGJlZ2lubmluZ1JlbGF0aXZlU3RhcnQpIHsKKworICAgICAgICBpZiAoYmVnaW5uaW5nUmVsYXRpdmVTdGFydCA8IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImNoYXJTdGFydCBtdXN0IGJlIG5vbm5lZ2F2aXR2ZSIpOworICAgICAgICB9CisgICAgICAgIGZDaGFyU3RhcnQgPSBiZWdpbm5pbmdSZWxhdGl2ZVN0YXJ0OworICAgIH0KKworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldEdyYXBoaWNTdGFydChpbnQgYmVnaW5uaW5nUmVsYXRpdmVTdGFydCkgeworCisgICAgICAgIGlmIChiZWdpbm5pbmdSZWxhdGl2ZVN0YXJ0IDwgMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiY2hhclN0YXJ0IG11c3QgYmUgbm9ubmVnYXZpdHZlIik7CisgICAgICAgIH0KKyAgICAgICAgZkdyYXBoaWNTdGFydCA9IGJlZ2lubmluZ1JlbGF0aXZlU3RhcnQ7CisgICAgfQorCisgICAgcHVibGljIGZpbmFsIHZvaWQgbWFrZVJlbGF0aXZlVG9CZWdpbm5pbmcoaW50IGxlbmd0aEJhc2lzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBncmFwaGljQmFzaXMpIHsKKworICAgICAgICBpZiAobGVuZ3RoQmFzaXMgPCAwIHx8IGdyYXBoaWNCYXNpcyA8IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkJhc2VzIG11c3QgYmUgcG9zaXRpdmUuIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZDaGFyU3RhcnQgPj0gMCB8fCBmR3JhcGhpY1N0YXJ0ID49IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQWxyZWFkeSBzdGFydC1yZWxhdGl2ZS4iKTsKKyAgICAgICAgfQorCisgICAgICAgIGZDaGFyU3RhcnQgKz0gbGVuZ3RoQmFzaXM7CisgICAgICAgIGZHcmFwaGljU3RhcnQgKz0gZ3JhcGhpY0Jhc2lzOworICAgIH0KKworICAgIHB1YmxpYyBmaW5hbCB2b2lkIG1ha2VSZWxhdGl2ZVRvRW5kKGludCBsZW5ndGhCYXNpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ3JhcGhpY0Jhc2lzKSB7CisKKyAgICAgICAgaWYgKGxlbmd0aEJhc2lzIDwgMCB8fCBncmFwaGljQmFzaXMgPCAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJCYXNlcyBtdXN0IGJlIHBvc2l0aXZlLiIpOworICAgICAgICB9CisgICAgICAgIGlmIChmQ2hhclN0YXJ0IDwgMCB8fCBmR3JhcGhpY1N0YXJ0IDwgMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJBbHJlYWR5IGVuZC1yZWxhdGl2ZS4iKTsKKyAgICAgICAgfQorCisgICAgICAgIGZDaGFyU3RhcnQgLT0gbGVuZ3RoQmFzaXM7CisgICAgICAgIGZHcmFwaGljU3RhcnQgLT0gZ3JhcGhpY0Jhc2lzOworICAgIH0KKworCisgICAgcHVibGljIGFic3RyYWN0IGludCBnZXRDaGFyTGVuZ3RoKCk7CisgICAgcHVibGljIGFic3RyYWN0IGludCBnZXRBc2NlbnQoKTsKKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGdldERlc2NlbnQoKTsKKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGdldExlYWRpbmcoKTsKKworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgZ2V0VmlzaWJsZUFkdmFuY2UoKTsKKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGdldFRvdGFsQWR2YW5jZSgpOworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgZ2V0TGVhZGluZ01hcmdpbigpOworCisgICAgcHVibGljIGFic3RyYWN0IGJvb2xlYW4gaXNMZWZ0VG9SaWdodCgpOworCisgICAgcHVibGljIGludCBnZXRIZWlnaHQoKSB7CisKKyAgICAgICAgcmV0dXJuIGdldEFzY2VudCgpK2dldERlc2NlbnQoKStnZXRMZWFkaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgKiBEcmF3cyB0ZXh0IHdpdGggaGlnaGxpZ2h0aW5nLgorICAgICovCisgICAgcHVibGljIHZvaWQgcmVuZGVyV2l0aEhpZ2hsaWdodChpbnQgbGVuZ3RoQmFzaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaGljczJEIGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZUJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgc2VsU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHNlbFN0b3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvciBoaWdobGlnaHRDb2xvcikKKyAgICB7CisgICAgfQorCisgICAgLyoqIFVzZSBsYXlvdXQgaW5mb3JtYXRpb24gdG8gcmVuZGVyIHRoZSBsaW5lIGF0IHgsIHkuKi8KKworICAgIHB1YmxpYyB2b2lkIHJlbmRlcihpbnQgbGVuZ3RoQmFzaXMsCisgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzMkQgZywKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVCb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgIGludCB5KQorICAgIHsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZW5kZXJDYXJldChNQ29uc3RUZXh0IHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aEJhc2lzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzMkQgZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZUJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjaGFyT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yIHN0cm9uZ0NhcmV0Q29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3Igd2Vha0NhcmV0Q29sb3IpCisgICAgeworICAgIH0KKworICAgIC8qKgorICAgICAqIEdpdmVuIGEgcG9pbnQgd2l0aGluIHRoaXMgbGluZSwgcmV0dXJuIHRoZSBjaGFyYWN0ZXIgb2Zmc2V0IGNvcnJlc3BvbmRpbmcgdG8gdGhhdCBwb2ludC4KKyAgICAgKgorICAgICAqIEBwYXJhbSByZXN1bHQuICBUaGlzIG1heSBiZSBudWxsLCBpbiB3aGljaCBjYXNlIGEgbmV3IFRleHRPZmZzZXQgd2lsbCBiZSBhbGxvY2F0ZWQuCisgICAgICogICAgICAgIFRoaXMgb2JqZWN0IGlzIG1vZGlmaWVkIGluIHBsYWNlLCBhbmQgYWxzbyByZXR1cm5lZCBhcyB0aGUgZnVuY3Rpb24gcmVzdWx0LgorICAgICAqIEBwYXJhbSB0ZXh0IFRleHQgdG8gaW5zcGVjdC4KKyAgICAgKiBAcGFyYW0gbGluZVggUG9zaXRpb24gb24gdGhpcyBsaW5lIHJlbGF0aXZlIHRvIHRvcCBsZWZ0IGNvcm5lciBvZiB0aGlzIGxpbmUuCisgICAgICogQHBhcmFtIGxpbmVZIFBvc2l0aW9uIG9uIHRoaXMgbGluZSByZWxhdGl2ZSB0byB0b3AgbGVmdCBjb3JuZXIgb2YgdGhpcyBsaW5lLgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBUZXh0T2Zmc2V0IHBpeGVsVG9PZmZzZXQoaW50IGxlbmd0aEJhc2lzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZUJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeSk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IHN0cm9uZ0NhcmV0QmFzZWxpbmVQb3NpdGlvbihpbnQgbGVuZ3RoQmFzaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVCb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hhck9mZnNldCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgUmVjdGFuZ2xlIGNhcmV0Qm91bmRzKE1Db25zdFRleHQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGhCYXNpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lQm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hhck9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHkpOworICAgIAorICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgZ2V0TmV4dE9mZnNldChpbnQgbGVuZ3RoQmFzaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjaGFyT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydCBkaXIpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9NRm9ybWF0dGVyLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L01Gb3JtYXR0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43N2MzNTkzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9NRm9ybWF0dGVyLmphdmEKQEAgLTAsMCArMSwzNTEgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IE1Gb3JtYXR0ZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo1MDowMyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dGZvcm1hdDsKKworaW1wb3J0IGphdmEuYXd0LkNvbG9yOworaW1wb3J0IGphdmEuYXd0LkdyYXBoaWNzOworaW1wb3J0IGphdmEuYXd0LlBvaW50OworaW1wb3J0IGphdmEuYXd0LlJlY3RhbmdsZTsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKKworLyoqCisqCisqIFRoaXMgY2xhc3MgZm9ybWF0cyBsaW5lcyBvZiB0ZXh0IHRvIGEgZ2l2ZW4gbGVuZ3RoLgorKiBJdCBwcm92aWRlcyBzZXJ2aWNlcyBuZWVkZWQgZm9yIHN0YXRpYyB0ZXh0IGRpc3BsYXksCisqIGFuZCBhbHNvIGVkaXRhYmxlIHRleHQsIGluY2x1ZGluZzogIGRpc3BsYXlpbmcgdGV4dCwKKyogcmVmb3JtYXR0aW5nIHRleHQgYWZ0ZXIgYW4gZWRpdCwgY29udmVydGluZyBiZXR3ZWVuCisqIHNjcmVlbiBsb2NhdGlvbnMgYW5kIG9mZnNldHMgaW50byB0aGUgdGV4dCwgY2FsY3VsYXRpbmcKKyogYXJlYXMgb2YgdGhlIHNjcmVlbiBmb3IgImhpZ2hsaWdodGluZywiICBhbmQgY29tcHV0aW5nCisqIG9mZnNldHMgaW50byB0aGUgdGV4dCByZXN1bHRpbmcgZnJvbSBhcnJvdyBrZXlzLgorKiA8cD4KKyogVGV4dCBjbGllbnRzIGluc3RhbnRpYXRlIHRoaXMgY2xhc3Mgd2l0aCBhbgorKiA8dHQ+TUNvbnN0VGV4dDwvdHQ+IG9iamVjdCBhbmQgYSBmb3JtYXQgd2lkdGguICBUZXh0CisqIGNhbiBiZSBmb3JtYXR0ZWQgc3VjaCB0aGF0IGFsbCBsaW5lcyBmaXQgd2l0aGluIHRoZQorKiBmb3JtYXQgbGVuZ3RoLiAgQWx0ZXJuYXRpdmVseSwgdGV4dCBjYW4gYmUgZm9ybWF0dGVkCisqIHN1Y2ggdGhhdCBsaW5lcyBlbmQgb25seSBhdCB0aGUgZW5kIG9mIHBhcmFncmFwaHMuCisqIDxwPgorKiBUaGUgZm9ybWF0IGxlbmd0aCBpcyBzcGVjaWZpZWQgd2l0aCB0aGUgPHR0PnNldExpbmVCb3VuZCgpPC90dD4KKyogbWV0aG9kLgorKiA8cD4KKyogTWV0aG9kcyBpbiB0aGUgZm9ybWF0dGVyIHdoaWNoIGludGVyYWN0IHdpdGggdGhlIGdyYXBoaWNzCisqIHN5c3RlbSBnZW5lcmFsbHkgdGFrZSBhcyBhIHBhcmFtdGVyIGEgPHR0PlBvaW50PC90dD4gb2JqZWN0CisqIHdoaWNoIHJlcHJlc2VudHMgdGhlICJvcmlnaW4iIG9mIHRoZSB0ZXh0IGRpc3BsYXkuICBUaGUKKyogb3JpZ2luIHJlcHJlc2VudHMgdGhlIGxvY2F0aW9uLCBpbiB0aGUgZ3JhcGhpY3Mgc3lzdGVtIHVzZWQgdG8gZGlzcGxheSB0aGUgdGV4dCwgb2YKKyogdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgdGV4dC4KKyogPHA+CisqIFRvIGRpc3BsYXkgdGhlIHRleHQsIGNhbGwgPHR0PmRyYXcoKTwvdHQ+LCBwYXNzaW5nIHRoZQorKiBhIHJlY3RhbmdsZSBpbiB3aGljaCB0byBkcmF3IGFzIGEgcGFyYW1ldGVyLiAgT25seSBsaW5lcworKiBvZiB0ZXh0IGluIHRoZSBkcmF3IHJlY3RhbmdsZSB3aWxsIGJlIGRyYXduLgorKiA8cD4KKyogV2hlbiB0aGUgZm9ybWF0dGVyJ3MgdGV4dCBjaGFuZ2VzLCBpdCBpcyBpbXBvcnRhbnQgdG8gZmlyc3QgY2FsbAorKiA8dHQ+c3RvcEJhY2tncm91bmRGb3JtYXR0aW5nKCk8L3R0PiB0byBwcmV2ZW50IHRoZSBGb3JtYXR0ZXIgZnJvbQorKiBhY2Nlc3NpbmcgdGhlIHRleHQgZnJvbSBhIGJhY2tncm91bmQgdGhyZWFkLiAgQWZ0ZXIgbW9kaWZpY2F0aW9ucyBhcmUKKyogY29tcGxldGUsCisqIGNhbGwgdGhlIDx0dD51cGRhdGVGb3JtYXQoKTwvdHQ+IG1ldGhvZCBiZWZvcmUgaW52b2tpbmcgYW55IG90aGVyCisqIG1ldGhvZHMgb2YgdGhlIGZvcm1hdHRlci4gIDx0dD51cGRhdGVGb3JtYXQoKTwvdHQ+IHJlZm9ybWF0cyB0aGUKKyogbmV3IHRleHQsIGZvcm1hdHRpbmcgbm8gbW9yZSB0ZXh0IHRoYW4gaXMgbmVjZXNzYXJ5LgorKiA8cD4KKyogVGhlIGZvcm1hdHRlciBwcm92aWRlcyBzZXJ2aWNlcyBmb3IgcmVzcG9uZGluZyB0byB1c2VyIGlucHV0IGZyb20gdGhlCisqIG1vdXNlIGFuZCBrZXlib2FyZC4gIFRoZSBtZXRob2QgPHR0PnBvaW50VG9UZXh0T2Zmc2V0KCk8L3R0PiBjb252ZXJ0cworKiBhIHNjcmVlbiBsb2NhdGlvbiB0byBhbiBvZmZzZXQgaW4gdGhlIHRleHQuICBUaGUgbWV0aG9kIDx0dD50ZXh0T2Zmc2V0VG9Qb2ludDwvdHQ+CisqIGNvbnZlcnRzIGFuIG9mZnNldCBpbiB0aGUgdGV4dCB0byBhbiBhcnJheSBvZiB0d28gPHR0PlBvaW50PC90dD4gb2JqZWN0cywgd2hpY2ggY2FuIGJlCisqIHVzZWQgdG8gZHJhdyBhIHZlcnRpY2xlIGNhcmV0LCBkZW5vdGluZyBhbiBpbnNlcnRpb24gcG9pbnQuICA8dHQ+aGlnaGxpZ2h0QXJlYTwvdHQ+CisqIGFjY2VwdHMgdHdvIG9mZnNldHMgaW50byB0aGUgdGV4dCBhcyBwYXJhbXRlcnMsIGFuZCByZXR1cm5zIGFuIGFycmF5IG9mIDx0dD5Qb2x5Z29uPC90dD4KKyogb2JqZWN0cyByZXByZXNlbnRpbmcgYXJlYXMgd2hlcmUgdmlzdWFsIGhpZ2hsaWdodGluZyBzaG91bGQgYmUgYXBwbGllZC4KKyogPHA+CisqIEZpbmFsbHksIGZvcgorKiBrZXlib2FyZCBoYW5kbGluZywgdGhlIDx0dD5maW5kTmV3SW5zZXJ0aW9uT2Zmc2V0KCk8L3R0PiBtZXRob2QgYWNjZXB0cyBhbiAiaW5pdGlhbCIKKyogb2Zmc2V0LCBhICJwcmV2aW91cyIgb2Zmc2V0LCBhcyB3ZWxsIGFzIGEgZGlyZWN0aW9uLCBhbmQgcmV0dXJucyBhIG5ldyBvZmZzZXQuICBUaGUgZGlyZWN0aW9uCisqIGNhbiBiZSB1cCwgZG93biwgbGVmdCwgb3IgcmlnaHQuICBUaGUgcHJldmlvdXMgb2Zmc2V0IGlzIHRoZSBpbnNlcnRpb24gcG9pbnQgbG9jYXRpb24sIGJlZm9yZQorKiB0aGUgYXJyb3cga2V5IGlzIHByb2Nlc3NlZC4gIFRoZSBpbml0aWFsIG9mZnNldCBpcyB0aGUgb2Zmc2V0IHdoZXJlIGFuIHVwIG9yIGRvd24gYXJyb3cKKyoga2V5IHNlcXVlbmNlIGJlZ2FuLiAgVXNpbmcgdGhlIGluaXRpYWwgb2Zmc2V0IGFsbG93cyBmb3IgImludGVsbGlnZW50IiBoYW5kbGluZyBvZiB1cCBhbmQgZG93bgorKiBhcnJvdyBrZXlzLgorKiA8cD4KKyogRXhhbXBsZXMgb2YgdXNpbmcgdGhlIE1Gb3JtYXR0ZXIgY2xhc3MKKyogYXJlIGdpdmVuIGluIHRoZSA8dHQ+QXN5bmNGb3JtYXR0ZXI8L3R0PiBjbGFzcworKiBkb2N1bWVudGF0aW9uLgorKiA8cD4KKyogQGF1dGhvciBKb2huIFJhbGV5CisqCisqIEBzZWUgTVRleHQKKyovCisKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBNRm9ybWF0dGVyIHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworCisgICAgcHVibGljIGFic3RyYWN0IEF0dHJpYnV0ZU1hcCBnZXREZWZhdWx0VmFsdWVzKCk7CisKKy8qKgorKiBEaXNwbGF5IHRleHQgaW4gZHJhd0FyZWEsIHdpdGggaGlnaGxpZ2h0aW5nLgorKiBEb2VzIG5vdCByZWZvcm1hdCB0ZXh0CisqIEBwYXJhbSBnIHRoZSBHcmFwaGljcyBvYmplY3QgaW4gd2hpY2ggdG8gZHJhdworKiBAcGFyYW0gZHJhd0FyZWEgdGhlIHJlY3RhbmdsZSwgaW4gZydzIGNvb3JkaW5hdGUgc3lzdGVtLCBpbiB3aGljaCB0byBkcmF3CisqIEBwYXJhbSBvcmlnaW4gdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgdGV4dCwgaW4gZydzIGNvb3JkaW5hdGUgc3lzdGVtCisqIEBwYXJhbSBzZWxTdGFydCB0aGUgb2Zmc2V0IHdoZXJlIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBiZWdpbnM7ICBwYXNzIDx0dD5udWxsPC90dD4gaWYgbm8gc2VsZWN0aW9uCisqIEBwYXJhbSBzZWxTdG9wIHRoZSBvZmZzZXQgd2hlcmUgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGVuZHMKKyogQHBhcmFtIGhpZ2hsaWdodCB0aGUgY29sb3Igb2YgdGhlIGhpZ2hsaWdodGluZworKi8KKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBkcmF3KEdyYXBoaWNzIGcsIFJlY3RhbmdsZSBkcmF3QXJlYSwgUG9pbnQgb3JpZ2luLAorICAgICAgICAgICAgVGV4dE9mZnNldCBzZWxTdGFydCwgVGV4dE9mZnNldCBzZWxTdG9wLCBDb2xvciBoaWdobGlnaHQpOworCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgZHJhdyhHcmFwaGljcyBnLCBSZWN0YW5nbGUgZHJhd0FyZWEsIFBvaW50IG9yaWdpbik7CisKKy8qKgorKiBTcGVjaWZ5IHdoZXRoZXIgdG8gd3JhcCBsaW5lIGF0IHRoZSBlZGdlIG9mIHRoZSBkZXN0aW5hdGlvbiBhcmVhLgorKiA8dHQ+dHJ1ZTwvdHQ+IG1lYW5zIHdyYXAgbGluZXM7ICA8dHQ+ZmFsc2U8L3R0PiBtZWFucyB0byBicmVhayBsaW5lcworKiBvbmx5IHdoZW4gYW4gZW5kLW9mLWxpbmUgY2hhcmFjdGVyIGlzIHJlYWNoZWQuCisqIEBwYXJhbSB3cmFwIDx0dD50cnVlPC90dD4gdG8gYnJlYWsgbGluZXMgYXQgdGhlIGVkZ2Ugb2YgdGhlIGRlc3RpbmF0aW9uCisqIGFyZWE7ICA8dHQ+ZmFsc2U8L3R0PiBvdGhlcndpc2UuCisqLworCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgc2V0V3JhcChib29sZWFuIHdyYXApOworCisvKioKKyogUmV0dXJuIHdoZXRoZXIgdGV4dCBpcyB3cmFwcGVkIGF0IHRoZSBlZGdlIG9mIHRoZSBkZXN0aW5hdGlvbiBhcmVhLgorKiBAc2VlICNzZXRXcmFwCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBib29sZWFuIHdyYXAoKTsKKworLyoqCisqIFNwZWNpZnkgdGhlIG51bWJlciBvZiBwaXhlbHMgYWxvbmcgdGhlICJsaW5lIGRpbWVuc2lvbiIuCisqIExpbmVzIGFyZSBmb3JtYXR0ZWQgdG8gZml0IHdpdGhpbiB0aGUgbGluZSBkaW1lbnNpb24uICBUaGUKKyogbGluZSBkaW1lbnNpb24gaW4gUm9tYW4gc2NyaXB0IGlzIGhvcml6b250YWwuCisqIEBwYXJhbSBsaW5lV2lkdGggdGhlIGxlbmd0aCwgaW4gcGl4ZWxzLCB0byB3aGljaCBsaW5lcyB3aWxsIGJlIGZvcm1hdHRlZAorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBzZXRMaW5lQm91bmQoaW50IGxpbmVCb3VuZCk7CisKKy8qKgorKiBSZXR1cm4gdGhlIG51bWJlciBvZiBwaXhlbHMgYWxvbmcgdGhlIGxpbmUgZGltZW5zaW9uLgorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGxpbmVCb3VuZCgpOworICAgIAorLyoqCisqIEZvcm1hdCB0ZXh0IGRvd24gdG8gZ2l2ZW4gaGVpZ2h0LgorKiBAcGFyYW0gaGVpZ2h0IHRoZSBoZWlnaHQgdG8gd2hpY2ggdGV4dCB3aWxsIGJlIGZvcm1hdHRlZAorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBmb3JtYXRUb0hlaWdodChpbnQgaGVpZ2h0KTsKKworLyoqCisqIFJlZm9ybWF0IHRleHQgYWZ0ZXIgYSBjaGFuZ2UuCisqIEFmdGVyIHRoZSBmb3JtYXR0ZXIncyB0ZXh0IGNoYW5nZXMsIGNhbGwgdGhpcyBtZXRob2QgdG8gcmVmb3JtYXQuICBEb2VzCisqIG5vdCByZWRyYXcuCisqIEBwYXJhbSBhZlN0YXJ0IHRoZSBvZmZzZXQgaW50byB0aGUgdGV4dCB3aGVyZSBtb2RpZmljYXRpb24gYmVnYW47ICBpZSwgdGhlCisqIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgdGV4dCB3aGljaCBpcyAiZGlmZmVyZW50IiBpbiBzb21lIHdheS4gIERvZXMgbm90CisqIGhhdmUgdG8gYmUgbm9ubmVnYXRpdmUuCisqIEBwYXJhbSBhZkxlbmd0aCB0aGUgbnVtYmVyIG9mIG5ldyBvciBjaGFuZ2VkIGNoYXJhY3RlcnMgaW4gdGhlIHRleHQuICBTaG91bGQgbmV2ZXIKKyogYmUgbGVzcyB0aGFuIDAuCisqIEBwYXJhbSB2aWV3UmVjdCB0aGUgUmVjdGFuZ2xlIGluIHdoaWNoIHRoZSB0ZXh0IHdpbGwgYmUgZGlzcGxheWVkLiAgVGhpcyBpcyBuZWVkZWQgZm9yCisqIHJldHVybmluZyB0aGUgImRhbWFnZWQiIGFyZWEgLSB0aGUgYXJlYSBvZiB0aGUgc2NyZWVuIGluIHdoaWNoIHRoZSB0ZXh0IG11c3QgYmUgcmVkcmF3bi4KKyogQHBhcmFtIG9yaWdpbiB0aGUgdG9wLWxlZnQgY29ybmVyIG9mIHRoZSB0ZXh0LCBpbiB0aGUgZGlzcGxheSdzIGNvb3JkaW5hdGUgc3lzdGVtCisqIEByZXR1cm5zIGEgPHR0PlJlY3RhbmdsZTwvdHQ+IHdoaWNoIHNwZWNpZmllcyB0aGUgYXJlYSBpbiB3aGljaCB0ZXh0IG11c3QgYmUKKyogcmVkcmF3biB0byByZWZsZWN0IHRoZSBjaGFuZ2UgdG8gdGhlIHRleHQuCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBSZWN0YW5nbGUgdXBkYXRlRm9ybWF0KGludCBhZlN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhZkxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWN0YW5nbGUgdmlld1JlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9pbnQgb3JpZ2luKTsKKworCisgICAgcHVibGljIGFic3RyYWN0IGludCBtaW5ZKCk7CisgICAgCisvKioKKyAqIFJldHVybiB0aGUgbWF4aW11bSB2ZXJ0aWNhbCBjb29yZGluYXRlIG9mIHRoZSBkb2N1bWVudCBhcmVhLgorICovCisgICAgcHVibGljIGFic3RyYWN0IGludCBtYXhZKCk7CisKKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IG1pblgoKTsKKworLyoqCisgKiBSZXR1cm4gdGhlIG1heGltdW0gaG9yaXpvbnRhbCBjb29yZGluYXRlIG9mIHRoZSBkb2N1bWVudCBhcmVhLgorICovCisgICAgcHVibGljIGFic3RyYWN0IGludCBtYXhYKCk7CisKKy8qKgorKiBSZXR1cm4gdGhlIGFjdHVhbCBwaXhlbCBsZW5ndGggb2YgdGhlIHRleHQgd2hpY2ggaGFzIGJlZW4gZm9ybWF0dGVkLgorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGZvcm1hdHRlZEhlaWdodCgpOworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBzaG9ydCBlVXAgPSAtMTAsIGVEb3duID0gMTAsIGVMZWZ0ID0gLTEsIGVSaWdodCA9IDE7CisKKy8qKgorKiBHaXZlbiBhIHNjcmVlbiBsb2NhdGlvbiBwLCByZXR1cm4gdGhlIG9mZnNldCBvZiB0aGUgY2hhcmFjdGVyIGluIHRoZSB0ZXh0IG5lYXJlc3QgdG8gcC4KKyoKKyogVGhlIG9mZnNldCBtYXkgb3IgbWF5IG5vdCBpbmNsdWRlIGEgbmV3bGluZSBhdCB0aGUgZW5kIG9mIGEgbGluZSwgZGV0ZXJtaW5lZCBieSBhbmNob3IgYW5kIGluZmluaXRlTW9kZS4KKyogVGhlIG5ld2xpbmUgaXMgbm90IGluY2x1ZGVkIGlmIGluZmluaXRlTW9kZSBpcyB0cnVlIGFuZCB0aGUgYW5jaG9yIGlzIHRoZSBwb3NpdGlvbiBiZWZvcmUgdGhlIG5ld2xpbmUuCisqCisqIEBwYXJhbSByZXN1bHQgVGV4dE9mZnNldCB0byBtb2RpZnkgYW5kIHJldHVybi4gIElmIG51bGwsIG9uZSB3aWxsIGJlIGFsbG9jYXRlZCwgbW9kaWZpZWQsIGFuZCByZXR1cm5lZC4KKyogQHBhcmFtIHB4IHRoZSB4IGNvbXBvbmVudCBvZiB0aGUgcG9pbnQuCisqIEBwYXJhbSBweSB0aGUgeSBjb21wb25lbnQgb2YgdGhlIHBvaW50LgorKiBAcGFyYW0gb3JpZ2luIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhlIHRleHQsIGluIHRoZSBkaXNwbGF5J3MgY29vcmRpbmF0ZSBzeXN0ZW0KKyogQHBhcmFtIGFuY2hvciB0aGUgcHJldmlvdXMgb2Zmc2V0LiAgTWF5IGJlIG51bGwuICBVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIG5ld2xpbmVzIGFyZSBpbmNsdWRlZC4KKyogQHBhcmFtIGluZmluaXRlTW9kZSBpZiB0cnVlLCB0cmVhdCBuZXdsaW5lcyBhdCBlbmQgb2YgbGluZSBhcyBoYXZpbmcgaW5maW5pdGUgd2lkdGguCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBUZXh0T2Zmc2V0IHBvaW50VG9UZXh0T2Zmc2V0KFRleHRPZmZzZXQgcmVzdWx0LCBpbnQgcHgsIGludCBweSwgUG9pbnQgb3JpZ2luLCBUZXh0T2Zmc2V0IGFuY2hvciwgYm9vbGVhbiBpbmZpbml0ZU1vZGUpOworCisvKioKKyogR2l2ZW4gYW4gb2Zmc2V0LCByZXR1cm4gdGhlIFJlY3RhbmdsZSBib3VuZGluZyB0aGUgY2FyZXQgYXQgdGhlIG9mZnNldC4KKyogQHBhcmFtIG9mZnNldCBhbiBvZmZzZXQgaW50byB0aGUgdGV4dAorKiBAcGFyYW0gb3JpZ2luIHRoZSB0b3AtbGVmdCBjb3JuZXIgb2YgdGhlIHRleHQsIGluIHRoZSBkaXNwbGF5J3MgY29vcmRpbmF0ZSBzeXN0ZW0KKyogQHJldHVybiBhIFJlY3RhbmdsZSBib3VuZGluZyB0aGUgY2FyZXQuCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBSZWN0YW5nbGUgZ2V0Q2FyZXRSZWN0KFRleHRPZmZzZXQgb2Zmc2V0LCBQb2ludCBvcmlnaW4pOworCisvKioKKyogRHJhdyB0aGUgY2FyZXQocykgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBvZmZzZXQgaW50byB0aGUgZ2l2ZW4gR3JhcGhpY3MuCisqIEBwYXJhbSBnIHRoZSBHcmFwaGljcyB0byBkcmF3IGludG8KKyogQHBhcmFtIG9mZnNldCB0aGUgb2Zmc2V0IGluIHRoZSB0ZXh0IGZvciB3aGljaCB0aGUgY2FyZXQgaXMgZHJhd24KKyogQHBhcmFtIG9yaWdpbiB0aGUgdG9wLWxlZnQgY29ybmVyIG9mIHRoZSB0ZXh0LCBpbiB0aGUgZGlzcGxheSdzIGNvb3JkaW5hdGUgc3lzdGVtCisqIEBwYXJhbSBzdHJvbmdDYXJldENvbG9yIHRoZSBjb2xvciBvZiB0aGUgc3Ryb25nIGNhcmV0CisqIEBwYXJhbSB3ZWFrQ2FyZXRDb2xvciB0aGUgY29sb3Igb2YgdGhlIHdlYWsgY2FyZXQgKGlmIGFueSkKKyovCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgZHJhd0NhcmV0KEdyYXBoaWNzIGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgb2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2ludCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yIHN0cm9uZ0NhcmV0Q29sb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yIHdlYWtDYXJldENvbG9yKTsKKworICAgIC8qKgorICAgICAqIEBzZWUgI2dldEJvdW5kaW5nUmVjdAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgYm9vbGVhbiBMT09TRSA9IGZhbHNlOworICAgIC8qKgorICAgICAqIEBzZWUgI2dldEJvdW5kaW5nUmVjdAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgYm9vbGVhbiBUSUdIVCA9IHRydWU7CisKKy8qKgorKiBHaXZlbiB0d28gb2Zmc2V0cyBpbiB0aGUgdGV4dCwgcmV0dXJuIGEgcmVjdGFuZ2xlIHdoaWNoIGVuY2xvc2VzIHRoZSBsaW5lcyBjb250YWluaW5nIHRoZSBvZmZzZXRzLgorKiBPZmZzZXRzIGRvIG5vdCBuZWVkIHRvIGJlIG9yZGVyZWQgb3Igbm9ubmVnYXRpdmUuCisqIEBwYXJhbSBvZmZzZXQxLG9mZnNldDIgb2Zmc2V0cyBpbnRvIHRoZSB0ZXh0CisqIEBwYXJhbSBvcmlnaW4gdGhlIHRvcC1sZWZ0IGNvcm5lciBvZiB0aGUgdGV4dCwgaW4gdGhlIGRpc3BsYXkncyBjb29yZGluYXRlIHN5c3RlbQorKiBAcGFyYW0gdGlnaHQgaWYgZXF1YWwgdG8gVElHSFQsIHRoZSBib3VuZHMgaXMgYXMgc21hbGwgYXMgcG9zc2libGUuICBJZiBMT09TRSwgdGhlIHdpZHRoCisqIG9mIHRoZSBib3VuZHMgaXMgYWxsb3dlZCB0byBiZSB3aWRlciB0aGFuIG5lY2VzYXJ5LiAgTG9vc2UgYm91bmRzIGFyZSBlYXNpZXIgdG8gY29tcHV0ZS4KKyogQHJldHVybnMgYSA8dHQ+UmVjdGFuZ2xlPC90dD4sIHJlbGF0aXZlIHRvIDx0dD5vcmlnaW48L3R0Piwgd2hpY2ggZW5jbG9zZXMgdGhlIGxpbmVzIGNvbnRhaW5pbmcgdGhlIG9mZnNldHMKKyovCisgICAgcHVibGljIGFic3RyYWN0IFJlY3RhbmdsZSBnZXRCb3VuZGluZ1JlY3QoVGV4dE9mZnNldCBvZmZzZXQxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgb2Zmc2V0MiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9pbnQgb3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gdGlnaHQpOworCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgZ2V0Qm91bmRpbmdSZWN0KFJlY3RhbmdsZSBib3VuZGluZ1JlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgb2Zmc2V0MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBvZmZzZXQyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb2ludCBvcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gdGlnaHQpOworCisvKioKKyogQ29tcHV0ZSB0aGUgb2Zmc2V0IHJlc3VsdGluZyBmcm9tIG1vdmluZyBmcm9tIGEgcHJldmlvdXMgb2Zmc2V0IGluIGRpcmVjdGlvbiBkaXIuCisqIEZvciBhcnJvdyBrZXlzLgorKiBAcGFyYW0gcHJldmlvdXNPZmZzZXQgdGhlIGluc2VydGlvbiBvZmZzZXQgcHJpb3IgdG8gdGhlIGFycm93IGtleSBwcmVzcworKiBAcGFyYW0gZGlyZWN0aW9uIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGFycm93IGtleSAoZVVwLCBlRG93biwgZUxlZnQsIG9yIGVSaWdodCkKKyogQHJldHVybnMgbmV3IG9mZnNldCBiYXNlZCBvbiBkaXJlY3Rpb24gYW5kIHByZXZpb3VzIG9mZnNldC4KKyovCisgICAgcHVibGljIGFic3RyYWN0IFRleHRPZmZzZXQgZmluZEluc2VydGlvbk9mZnNldChUZXh0T2Zmc2V0IHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgcHJldmlvdXNPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydCBkaXJlY3Rpb24pOworCisvKioKKyogQ29tcHV0ZSB0aGUgb2Zmc2V0IHJlc3VsdGluZyBmcm9tIG1vdmluZyBmcm9tIGEgcHJldmlvdXMgb2Zmc2V0LCBzdGFydGluZyBhdCBhbiBvcmlnaW5hbCBvZmZzZXQsIGluIGRpcmVjdGlvbiBkaXIuCisqIEZvciBhcnJvdyBrZXlzLiAgVXNlIHRoaXMgZm9yICJzbWFydCIgdXAvZG93biBrZXlzLgorKiBAcGFyYW0gcmVzdWx0IFRleHRPZmZzZXQgdG8gbW9kaWZ5IGFuZCByZXR1cm4uICBJZiBudWxsLCBhIG5ldyBUZXh0T2Zmc2V0IGlzIGNyZWF0ZWQsIG1vZGlmaWVkLCBhbmQgcmV0dXJuZWQuCisqIEBwYXJhbSBpbml0aWFsT2Zmc2V0IFRoZSBvZmZzZXQgYXQgd2hpY2ggYW4gdXAtZG93biBhcnJvdyBrZXkgc2VxdWVuY2UgYmVnYW4uCisqIEBwYXJhbSBwcmV2aW91c09mZnNldCBUaGUgaW5zZXJ0aW9uIG9mZnNldCBwcmlvciB0byB0aGUgYXJyb3cga2V5IHByZXNzLgorKiBAcGFyYW0gZGlyZWN0aW9uIFRoZSBkaXJlY3Rpb24gb2YgdGhlIGFycm93IGtleSAoZVVwLCBlRG93biwgZUxlZnQsIG9yIGVSaWdodCkKKyogQHJldHVybnMgbmV3IG9mZnNldCBiYXNlZCBvbiBkaXJlY3Rpb24gYW5kIHByZXZpb3VzIG9mZnNldChzKS4KKyovCisgICAgcHVibGljIGFic3RyYWN0IFRleHRPZmZzZXQgZmluZE5ld0luc2VydGlvbk9mZnNldChUZXh0T2Zmc2V0IHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgaW5pdGlhbE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgcHJldmlvdXNPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydCBkaXJlY3Rpb24pOworCisvKioKKyogUmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgbGluZSBjb250YWluaW5nIHRoZSBnaXZlbiBjaGFyYWN0ZXIgaW5kZXguCisqIFRoaXMgbWV0aG9kIGhhcyBjb21wbGljYXRlZCBzZW1hbnRpY3MsIGFyaXNpbmcgZnJvbSBub3Qga25vd2luZyAKKyogd2hpY2ggc2lkZSBvZiB0aGUgaW5kZXggdG8gY2hlY2suICBUaGUgaW5kZXggd2lsbCBiZSBnaXZlbiBhbgorKiBpbXBsaWNpdCBBRlRFUiBiaWFzLCB1bmxlc3MgdGhlIGluZGV4IGlzIHRoZSBsYXN0IGluZGV4IGluIHRoZSB0ZXh0LAorKiB0aGUgdGV4dCBsZW5ndGggaXMgbm9uLXplcm8sIGFuZCB0aGVyZSBpcyBub3QgYSBwYXJhZ3JhcGggc2VwYXJhdG9yCisqIGF0IHRoZSBlbmQgb2YgdGhlIHRleHQuCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgbGluZUNvbnRhaW5pbmcoaW50IGluZGV4KTsKKyAgICAKKy8qKgorKiBSZXR1cm4gdGhlIGluZGV4IG9mIHRoZSBsaW5lIGNvbnRhaW5pbmcgdGhlIGdpdmVuIG9mZnNldC4KKyovCisgICAgcHVibGljIGFic3RyYWN0IGludCBsaW5lQ29udGFpbmluZyhUZXh0T2Zmc2V0IG9mZnNldCk7CisKKy8qKgorKiBSZXR1cm4gdGhlIG51bWJlciBvZiBsaW5lcy4KKyovCisgICAgcHVibGljIGFic3RyYWN0IGludCBnZXRMaW5lQ291bnQoKTsKKworLyoqCisqIFJldHVybiB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvbiB0aGUgZ2l2ZW4gbGluZS4KKyovCisgICAgcHVibGljIGFic3RyYWN0IGludCBsaW5lUmFuZ2VMb3coaW50IGxpbmVOdW1iZXIpOworCisvKioKKyogUmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgZ2l2ZW4gbGluZS4KKyovCisgICAgcHVibGljIGFic3RyYWN0IGludCBsaW5lUmFuZ2VMaW1pdChpbnQgbGluZU51bWJlcik7CisKKy8qKgorKiBUZWxscyB0aGUgZm9ybWF0dGVyIHRvIHN0b3AgYWNjZXNzaW5nIHRoZSB0ZXh0IHVudGlsIHVwZGF0ZUZvcm1hdCBpcyBjYWxsZWQuCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHN0b3BCYWNrZ3JvdW5kRm9ybWF0dGluZygpOworCisvKioKKyogUmV0dXJuIHRoZSBsaW5lIG51bWJlciBhdCB0aGUgZ2l2ZW4gZ3JhcGhpYyBoZWlnaHQuICBJZiBoZWlnaHQgaXMgZ3JlYXRlciB0aGFuCisqIHRoZSB0ZXh0IGhlaWdodCwgbWF4TGluZU51bWJlciArIDEgaXMgcmV0dXJuZWQuCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgbGluZUF0SGVpZ2h0KGludCBoZWlnaHQpOworCisvKioKKyogUmV0dXJuIHRoZSBncmFwaGljIGhlaWdodCB3aGVyZSB0aGUgZ2l2ZW4gbGluZSBiZWdpbnMuICBJZiB0aGUgbGluZU51bWJlciBpcworKiBtYXhMaW5lTnVtYmVyIHRoZSBlbnRpcmUgdGV4dCBoZWlnaHQgaXMgcmV0dXJuZWQuCisqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgbGluZUdyYXBoaWNTdGFydChpbnQgbGluZU51bWJlcik7CisKKy8qKgorKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gbGluZSBpcyBsZWZ0LXRvLXJpZ2h0LgorKiBAcGFyYW0gbGluZU51bWJlciBhIHZhbGlkIGxpbmUKKyogQHJldHVybiB0cnVlIGlmIGxpbmVOdW1iZXIgaXMgbGVmdC10by1yaWdodAorKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgYm9vbGVhbiBsaW5lSXNMZWZ0VG9SaWdodChpbnQgbGluZU51bWJlcik7CisKKy8qKgorKiBSZXR1cm4gYSBuZXcgPHR0Pk1Gb3JtYXR0ZXI8L3R0Pi4KKyogQHBhcmFtIHRleHQgdGhlIHRleHQgdG8gZm9ybWF0CisqIEBwYXJhbSBkZWZhdWx0VmFsdWVzIHZhbHVlcyB0byB1c2Ugd2hlbiBjZXJ0YWluIGF0dHJpYnV0ZXMgYXJlIG5vdCBzcGVjaWZpZWQuIAorKiAgICA8dHQ+ZGVmYXVsdFZhbHVlczwvdHQ+IG11c3QgY29udGFpbiB2YWx1ZXMgZm9yIHRoZSBmb2xsb3dpbmcgYXR0cmlidXRlczoKKyogICAgPHR0PkZBTUlMWTwvdHQ+LCA8dHQ+V0VJR0hUPC90dD4sIDx0dD5QT1NUVVJFPC90dD4sIDx0dD5TSVpFPC90dD4sIDx0dD5TVVBFUlNDUklQVDwvdHQ+LCAKKyogICAgPHR0PkZPUkVHUk9VTkQ8L3R0PiwgPHR0PlVOREVSTElORTwvdHQ+LCA8dHQ+U1RSSUtFVEhST1VHSDwvdHQ+LAorKiAgICA8dHQ+RVhUUkFfTElORV9TUEFDSU5HPC90dD4sIDx0dD5GSVJTVF9MSU5FX0lOREVOVDwvdHQ+LDx0dD5NSU5fTElORV9TUEFDSU5HPC90dD4sCisqICAgIDx0dD5MSU5FX0ZMVVNIPC90dD4sIDx0dD5MRUFESU5HX01BUkdJTjwvdHQ+LCA8dHQ+VFJBSUxJTkdfTUFSR0lOPC90dD4sIDx0dD5UQUJfUlVMRVI8L3R0PgorKiBAcGFyYW0gbGluZUJvdW5kIGxlbmd0aCB0byB3aGljaCBsaW5lcyBhcmUgZm9ybWF0dGVkCisqIEBwYXJhbSB3cmFwIDx0dD50cnVlPC90dD4gaWYgdGV4dCBzaG91bGQgYmUgImxpbmUgd3JhcHBlZCIgKGZvcm1hdHRlZCB0byBmaXQgZGVzdGluYXRpb24gYXJlYSkKKyovCisgICAgcHVibGljIHN0YXRpYyBNRm9ybWF0dGVyIGNyZWF0ZUZvcm1hdHRlcihNQ29uc3RUZXh0IHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgZGVmYXVsdFZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lQm91bmQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiB3cmFwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzIGcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICByZXR1cm4gbmV3IEFzeW5jRm9ybWF0dGVyKHRleHQsIGRlZmF1bHRWYWx1ZXMsIGxpbmVCb3VuZCwgd3JhcCwgZyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9NVGV4dEl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L01UZXh0SXRlcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45NTUyZDllCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9NVGV4dEl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSw0MDIgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IE1UZXh0SXRlcmF0b3IuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMC8wNC8yMCAxOToyMzoxMiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworLy8gUmVxdWlyZXMgSmF2YTIKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0Zm9ybWF0OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yOworCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCisvLy8qSkRLMTJJTVBPUlRTCitpbXBvcnQgamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnRleHQuQXR0cmlidXRlZENoYXJhY3Rlckl0ZXJhdG9yLkF0dHJpYnV0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisvL0pESzEySU1QT1JUUyovCisKKy8qSkRLMTFJTVBPUlRTCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlZENoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGU7CitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuTWFwOworSkRLMTFJTVBPUlRTKi8KKworcHVibGljIGZpbmFsIGNsYXNzIE1UZXh0SXRlcmF0b3IgaW1wbGVtZW50cyBBdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsb25lYWJsZSB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIC8vIG1lbW9yeSBsZWFrLCBzaW5jZSB0aGlzIGNhY2hlIGlzIG5ldmVyIGZsdXNoZWQKKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIE1hdGNoZXIgeworICAgICAgICAKKyAgICAgICAgYm9vbGVhbiBtYXRjaGVzKE1hcCBsaHMsIE1hcCByaHMsIE9iamVjdCBxdWVyeSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBPYmplY3QgbGhzVmFsID0gbGhzLmdldChxdWVyeSk7CisgICAgICAgICAgICBPYmplY3QgcmhzVmFsID0gcmhzLmdldChxdWVyeSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChsaHNWYWwgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiByaHNWYWwgPT0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBsaHNWYWwuZXF1YWxzKHJoc1ZhbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTWF0Y2hlciBBVFRSX01BVENIRVIgPSBuZXcgTWF0Y2hlcigpOworICAgIAorICAgIC8vIE5vdCBxdWl0ZSBvcHRpbWFsLiAgQ291bGQgaGF2ZSBhIG1hdGNoZXIgdGhhdCB3b3VsZCBkZWNvbXBvc2UKKyAgICAvLyBhIHNldCBvbmNlIGZvciByZXBlYXRlZCBxdWVyaWVzLiAgT2YgY291cnNlIHRoYXQgd291bGQgcmVxdWlyZQorICAgIC8vIGFsbG9jYXRpb24uLi4KKy8vLypKREsxMklNUE9SVFMKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBNYXRjaGVyIFNFVF9NQVRDSEVSID0gbmV3IE1hdGNoZXIoKSB7CisgICAgICAgIAorICAgICAgICBib29sZWFuIG1hdGNoZXMoTWFwIGxocywgTWFwIHJocywgT2JqZWN0IHF1ZXJ5KSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIE5vdCB1c2luZyBJdGVyYXRvciB0byBzaW1wbGlmeSAxLjEgcG9ydC4KKyAgICAgICAgICAgIE9iamVjdFtdIGVsZW1lbnRzID0gKChTZXQpcXVlcnkpLnRvQXJyYXkoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGVsZW1lbnRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKCFzdXBlci5tYXRjaGVzKGxocywgcmhzLCBlbGVtZW50c1tpXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfTsKKy8vSkRLMTJJTVBPUlRTKi8KKyAgICAKKyAgICBwcml2YXRlIGZpbmFsIGNsYXNzIFN0eWxlQ2FjaGUgeworCisgICAgICAgIHByaXZhdGUgaW50IGZSdW5TdGFydCA9IDA7CisgICAgICAgIHByaXZhdGUgaW50IGZSdW5MaW1pdCA9IC0xOworICAgICAgICBwcml2YXRlIGludCBmUmFuZ2VTdGFydDsKKyAgICAgICAgcHJpdmF0ZSBpbnQgZlJhbmdlTGltaXQ7CisgICAgICAgIHByaXZhdGUgQXR0cmlidXRlTWFwIGZTdHlsZTsKKworICAgICAgICBTdHlsZUNhY2hlKE1Db25zdFRleHQgdGV4dCwgaW50IHN0YXJ0LCBpbnQgbGltaXQpIHsKKyAgICAgICAgICAgIGZUZXh0ID0gdGV4dDsKKyAgICAgICAgICAgIGZSYW5nZVN0YXJ0ID0gc3RhcnQ7CisgICAgICAgICAgICBmUmFuZ2VMaW1pdCA9IGxpbWl0OworICAgICAgICAgICAgdXBkYXRlKHN0YXJ0KTsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgdm9pZCB1cGRhdGUoaW50IHBvcykgeworICAgICAgICAgICAgaWYgKHBvcyA8IGZSdW5TdGFydCB8fCBwb3MgPj0gZlJ1bkxpbWl0KSB7CisgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwIHN0eWxlID0gQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVA7CisgICAgICAgICAgICAgICAgaWYgKHBvcyA8IGZSYW5nZVN0YXJ0KSB7CisgICAgICAgICAgICAgICAgICAgIGZSdW5MaW1pdCA9IGZSYW5nZVN0YXJ0OworICAgICAgICAgICAgICAgICAgICBmUnVuU3RhcnQgPSBJbnRlZ2VyLk1JTl9WQUxVRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAocG9zID4gZlJhbmdlTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgZlJ1blN0YXJ0ID0gZlJhbmdlTGltaXQ7CisgICAgICAgICAgICAgICAgICAgIGZSdW5MaW1pdCA9IEludGVnZXIuTUFYX1ZBTFVFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZlJ1blN0YXJ0ID0gTWF0aC5tYXgoZlJhbmdlU3RhcnQsIGZUZXh0LmNoYXJhY3RlclN0eWxlU3RhcnQocG9zKSk7CisgICAgICAgICAgICAgICAgICAgIGZSdW5TdGFydCA9IE1hdGgubWF4KGZSdW5TdGFydCwgZlRleHQucGFyYWdyYXBoU3RhcnQocG9zKSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBmUnVuTGltaXQgPSBNYXRoLm1pbihmUmFuZ2VMaW1pdCwgZlRleHQuY2hhcmFjdGVyU3R5bGVMaW1pdChwb3MpKTsKKyAgICAgICAgICAgICAgICAgICAgZlJ1bkxpbWl0ID0gTWF0aC5taW4oZlJ1bkxpbWl0LCBmVGV4dC5wYXJhZ3JhcGhMaW1pdChwb3MpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZSdW5TdGFydCA8IGZSdW5MaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGUgPSBmVGV4dC5wYXJhZ3JhcGhTdHlsZUF0KHBvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZSA9IHN0eWxlLmFkZEF0dHJpYnV0ZXMoZlRleHQuY2hhcmFjdGVyU3R5bGVBdChwb3MpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmU3R5bGUgPSBmRm9udFJlc29sdmVyLmFwcGx5Rm9udChzdHlsZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpbnQgZ2V0UnVuU3RhcnQoaW50IHBvcykgeworICAgICAgICAgICAgdXBkYXRlKHBvcyk7CisgICAgICAgICAgICByZXR1cm4gZlJ1blN0YXJ0OworICAgICAgICB9CisKKyAgICAgICAgaW50IGdldFJ1bkxpbWl0KGludCBwb3MpIHsKKyAgICAgICAgICAgIHVwZGF0ZShwb3MpOworICAgICAgICAgICAgcmV0dXJuIGZSdW5MaW1pdDsKKyAgICAgICAgfQorCisgICAgICAgIE1hcCBnZXRTdHlsZShpbnQgcG9zKSB7CisgICAgICAgICAgICB1cGRhdGUocG9zKTsKKyAgICAgICAgICAgIHJldHVybiBmU3R5bGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIE1Db25zdFRleHQgZlRleHQ7CisgICAgcHJpdmF0ZSBDaGFyYWN0ZXJJdGVyYXRvciBmQ2hhckl0ZXI7CisgICAgcHJpdmF0ZSBGb250UmVzb2x2ZXIgZkZvbnRSZXNvbHZlcjsKKyAgICAKKyAgICBwcml2YXRlIFN0eWxlQ2FjaGUgZlN0eWxlQ2FjaGU7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYW4gTVRleHRJdGVyYXRvciBvdmVyIHRoZSByYW5nZSBbc3RhcnQsIGxpbWl0KS4KKyAgICAgKi8KKyAgICBwdWJsaWMgTVRleHRJdGVyYXRvcihNQ29uc3RUZXh0IHRleHQsIAorICAgICAgICAgICAgICAgICAgICAgICAgIEZvbnRSZXNvbHZlciByZXNvbHZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsIAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW1pdCkgeworCisgICAgICAgIGZUZXh0ID0gdGV4dDsKKyAgICAgICAgZkZvbnRSZXNvbHZlciA9IHJlc29sdmVyOworICAgICAgICBmQ2hhckl0ZXIgPSB0ZXh0LmNyZWF0ZUNoYXJhY3Rlckl0ZXJhdG9yKHN0YXJ0LCBsaW1pdCk7CisKKyAgICAgICAgZlN0eWxlQ2FjaGUgPSBuZXcgU3R5bGVDYWNoZSh0ZXh0LCBzdGFydCwgbGltaXQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHBvc2l0aW9uIHRvIGdldEJlZ2luSW5kZXgoKSBhbmQgcmV0dXJucyB0aGUgY2hhcmFjdGVyIGF0IHRoYXQKKyAgICAgKiBwb3NpdGlvbi4KKyAgICAgKiBAcmV0dXJuIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQsIG9yIERPTkUgaWYgdGhlIHRleHQgaXMgZW1wdHkKKyAgICAgKiBAc2VlIGdldEJlZ2luSW5kZXgKKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBmaXJzdCgpIHsKKyAgICAgICAgcmV0dXJuIGZDaGFySXRlci5maXJzdCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHBvc2l0aW9uIHRvIGdldEVuZEluZGV4KCktMSAoZ2V0RW5kSW5kZXgoKSBpZiB0aGUgdGV4dCBpcyBlbXB0eSkKKyAgICAgKiBhbmQgcmV0dXJucyB0aGUgY2hhcmFjdGVyIGF0IHRoYXQgcG9zaXRpb24uCisgICAgICogQHJldHVybiB0aGUgbGFzdCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQsIG9yIERPTkUgaWYgdGhlIHRleHQgaXMgZW1wdHkKKyAgICAgKiBAc2VlIGdldEVuZEluZGV4CisgICAgICovCisgICAgcHVibGljIGNoYXIgbGFzdCgpIHsKKyAgICAgICAgcmV0dXJuIGZDaGFySXRlci5sYXN0KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgY2hhcmFjdGVyIGF0IHRoZSBjdXJyZW50IHBvc2l0aW9uIChhcyByZXR1cm5lZCBieSBnZXRJbmRleCgpKS4KKyAgICAgKiBAcmV0dXJuIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIGN1cnJlbnQgcG9zaXRpb24gb3IgRE9ORSBpZiB0aGUgY3VycmVudAorICAgICAqIHBvc2l0aW9uIGlzIG9mZiB0aGUgZW5kIG9mIHRoZSB0ZXh0LgorICAgICAqIEBzZWUgZ2V0SW5kZXgKKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBjdXJyZW50KCkgeworICAgICAgICByZXR1cm4gZkNoYXJJdGVyLmN1cnJlbnQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbmNyZW1lbnRzIHRoZSBpdGVyYXRvcidzIGluZGV4IGJ5IG9uZSBhbmQgcmV0dXJucyB0aGUgY2hhcmFjdGVyCisgICAgICogYXQgdGhlIG5ldyBpbmRleC4gIElmIHRoZSByZXN1bHRpbmcgaW5kZXggaXMgZ3JlYXRlciBvciBlcXVhbAorICAgICAqIHRvIGdldEVuZEluZGV4KCksIHRoZSBjdXJyZW50IGluZGV4IGlzIHJlc2V0IHRvIGdldEVuZEluZGV4KCkgYW5kCisgICAgICogYSB2YWx1ZSBvZiBET05FIGlzIHJldHVybmVkLgorICAgICAqIEByZXR1cm4gdGhlIGNoYXJhY3RlciBhdCB0aGUgbmV3IHBvc2l0aW9uIG9yIERPTkUgaWYgdGhlIG5ldworICAgICAqIHBvc2l0aW9uIGlzIG9mZiB0aGUgZW5kIG9mIHRoZSB0ZXh0IHJhbmdlLgorICAgICAqLworICAgIHB1YmxpYyBjaGFyIG5leHQoKSB7CisgICAgICAgIHJldHVybiBmQ2hhckl0ZXIubmV4dCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIERlY3JlbWVudHMgdGhlIGl0ZXJhdG9yJ3MgaW5kZXggYnkgb25lIGFuZCByZXR1cm5zIHRoZSBjaGFyYWN0ZXIKKyAgICAgKiBhdCB0aGUgbmV3IGluZGV4LiBJZiB0aGUgY3VycmVudCBpbmRleCBpcyBnZXRCZWdpbkluZGV4KCksIHRoZSBpbmRleAorICAgICAqIHJlbWFpbnMgYXQgZ2V0QmVnaW5JbmRleCgpIGFuZCBhIHZhbHVlIG9mIERPTkUgaXMgcmV0dXJuZWQuCisgICAgICogQHJldHVybiB0aGUgY2hhcmFjdGVyIGF0IHRoZSBuZXcgcG9zaXRpb24gb3IgRE9ORSBpZiB0aGUgY3VycmVudAorICAgICAqIHBvc2l0aW9uIGlzIGVxdWFsIHRvIGdldEJlZ2luSW5kZXgoKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBwcmV2aW91cygpIHsKKyAgICAgICAgcmV0dXJuIGZDaGFySXRlci5wcmV2aW91cygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHBvc2l0aW9uIHRvIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24gaW4gdGhlIHRleHQgYW5kIHJldHVybnMgdGhhdAorICAgICAqIGNoYXJhY3Rlci4KKyAgICAgKiBAcGFyYW0gcG9zaXRpb24gdGhlIHBvc2l0aW9uIHdpdGhpbiB0aGUgdGV4dC4gIFZhbGlkIHZhbHVlcyByYW5nZSBmcm9tCisgICAgICogZ2V0QmVnaW5JbmRleCgpIHRvIGdldEVuZEluZGV4KCkuICBBbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaXMgdGhyb3duCisgICAgICogaWYgYW4gaW52YWxpZCB2YWx1ZSBpcyBzdXBwbGllZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbiBvciBET05FIGlmIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24gaXMgZXF1YWwgdG8gZ2V0RW5kSW5kZXgoKQorICAgICAqLworICAgIHB1YmxpYyBjaGFyIHNldEluZGV4KGludCBwb3NpdGlvbikgeworICAgICAgICByZXR1cm4gZkNoYXJJdGVyLnNldEluZGV4KHBvc2l0aW9uKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBzdGFydCBpbmRleCBvZiB0aGUgdGV4dC4KKyAgICAgKiBAcmV0dXJuIHRoZSBpbmRleCBhdCB3aGljaCB0aGUgdGV4dCBiZWdpbnMuCisgICAgICovCisgICAgcHVibGljIGludCBnZXRCZWdpbkluZGV4KCkgeworICAgICAgICByZXR1cm4gZkNoYXJJdGVyLmdldEJlZ2luSW5kZXgoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBlbmQgaW5kZXggb2YgdGhlIHRleHQuICBUaGlzIGluZGV4IGlzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QKKyAgICAgKiBjaGFyYWN0ZXIgZm9sbG93aW5nIHRoZSBlbmQgb2YgdGhlIHRleHQuCisgICAgICogQHJldHVybiB0aGUgaW5kZXggYWZ0ZXIgdGhlIGxhc3QgY2hhcmFjdGVyIGluIHRoZSB0ZXh0CisgICAgICovCisgICAgcHVibGljIGludCBnZXRFbmRJbmRleCgpIHsKKyAgICAgICAgcmV0dXJuIGZDaGFySXRlci5nZXRFbmRJbmRleCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgaW5kZXguCisgICAgICogQHJldHVybiB0aGUgY3VycmVudCBpbmRleC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEluZGV4KCkgeworICAgICAgICByZXR1cm4gZkNoYXJJdGVyLmdldEluZGV4KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgcnVuCisgICAgICogd2l0aCByZXNwZWN0IHRvIGFsbCBhdHRyaWJ1dGVzIGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0UnVuU3RhcnQoKSB7CisgICAgICAgIHJldHVybiBmU3R5bGVDYWNoZS5nZXRSdW5TdGFydChmQ2hhckl0ZXIuZ2V0SW5kZXgoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgcnVuCisgICAgICogd2l0aCByZXNwZWN0IHRvIHRoZSBnaXZlbiBhdHRyaWJ1dGUgY29udGFpbmluZyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuCisgICAgICovCisgICAgcHVibGljIGludCBnZXRSdW5TdGFydChPYmplY3QgYXR0cmlidXRlKSB7CisKKyAgICAgICAgcmV0dXJuIGdldFJ1blN0YXJ0KGF0dHJpYnV0ZSwgQVRUUl9NQVRDSEVSKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBydW4KKyAgICAgKiB3aXRoIHJlc3BlY3QgdG8gdGhlIGdpdmVuIGF0dHJpYnV0ZSBjb250YWluaW5nIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4KKyAgICAgKi8KKy8vLypKREsxMklNUE9SVFMKKyAgICBwdWJsaWMgaW50IGdldFJ1blN0YXJ0KEF0dHJpYnV0ZSBhdHRyaWJ1dGUpIHsKKworICAgICAgICByZXR1cm4gZ2V0UnVuU3RhcnQoYXR0cmlidXRlLCBBVFRSX01BVENIRVIpOworICAgIH0KKy8vSkRLMTJJTVBPUlRTKi8KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIHJ1bgorICAgICAqIHdpdGggcmVzcGVjdCB0byB0aGUgZ2l2ZW4gYXR0cmlidXRlcyBjb250YWluaW5nIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4KKyAgICAgKi8KKy8vLypKREsxMklNUE9SVFMKKyAgICBwdWJsaWMgaW50IGdldFJ1blN0YXJ0KFNldCBhdHRyaWJ1dGVzKSB7CisKKyAgICAgICAgcmV0dXJuIGdldFJ1blN0YXJ0KGF0dHJpYnV0ZXMsIFNFVF9NQVRDSEVSKTsKKyAgICB9CisvL0pESzEySU1QT1JUUyovCisgICAgCisgICAgcHJpdmF0ZSBpbnQgZ2V0UnVuU3RhcnQoT2JqZWN0IHF1ZXJ5LCBNYXRjaGVyIG1hdGNoZXIpIHsKKworICAgICAgICBpbnQgcnVuU3RhcnQgPSBnZXRSdW5TdGFydCgpOworICAgICAgICBpbnQgcmFuZ2VTdGFydCA9IGdldEJlZ2luSW5kZXgoKTsKKyAgICAgICAgTWFwIGluaXRpYWxTdHlsZSA9IGdldEF0dHJpYnV0ZXMoKTsKKyAgICAgICAgCisgICAgICAgIHdoaWxlIChydW5TdGFydCA+IHJhbmdlU3RhcnQpIHsKKyAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBzdHlsZSA9IGZUZXh0LmNoYXJhY3RlclN0eWxlQXQocnVuU3RhcnQtMSk7CisgICAgICAgICAgICBpZiAoIW1hdGNoZXIubWF0Y2hlcyhpbml0aWFsU3R5bGUsIHN0eWxlLCBxdWVyeSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcnVuU3RhcnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBydW5TdGFydCA9IGZUZXh0LmNoYXJhY3RlclN0eWxlU3RhcnQocnVuU3RhcnQtMSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJhbmdlU3RhcnQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgZm9sbG93aW5nIHRoZSBydW4KKyAgICAgKiB3aXRoIHJlc3BlY3QgdG8gYWxsIGF0dHJpYnV0ZXMgY29udGFpbmluZyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuCisgICAgICovCisgICAgcHVibGljIGludCBnZXRSdW5MaW1pdCgpIHsKKyAgICAgICAgcmV0dXJuIGZTdHlsZUNhY2hlLmdldFJ1bkxpbWl0KGZDaGFySXRlci5nZXRJbmRleCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGZvbGxvd2luZyB0aGUgcnVuCisgICAgICogd2l0aCByZXNwZWN0IHRvIHRoZSBnaXZlbiBhdHRyaWJ1dGUgY29udGFpbmluZyB0aGUgY3VycmVudCBjaGFyYWN0ZXIuCisgICAgICovCisgICAgcHVibGljIGludCBnZXRSdW5MaW1pdChPYmplY3QgYXR0cmlidXRlKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZ2V0UnVuTGltaXQoYXR0cmlidXRlLCBBVFRSX01BVENIRVIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgZm9sbG93aW5nIHRoZSBydW4KKyAgICAgKiB3aXRoIHJlc3BlY3QgdG8gdGhlIGdpdmVuIGF0dHJpYnV0ZSBjb250YWluaW5nIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4KKyAgICAgKi8KKy8vLypKREsxMklNUE9SVFMKKyAgICBwdWJsaWMgaW50IGdldFJ1bkxpbWl0KEF0dHJpYnV0ZSBhdHRyaWJ1dGUpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBnZXRSdW5MaW1pdChhdHRyaWJ1dGUsIEFUVFJfTUFUQ0hFUik7CisgICAgfQorLy9KREsxMklNUE9SVFMqLworCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIHJ1bgorICAgICAqIHdpdGggcmVzcGVjdCB0byB0aGUgZ2l2ZW4gYXR0cmlidXRlcyBjb250YWluaW5nIHRoZSBjdXJyZW50IGNoYXJhY3Rlci4KKyAgICAgKi8KKy8vLypKREsxMklNUE9SVFMKKyAgICBwdWJsaWMgaW50IGdldFJ1bkxpbWl0KFNldCBhdHRyaWJ1dGVzKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZ2V0UnVuTGltaXQoYXR0cmlidXRlcywgU0VUX01BVENIRVIpOworICAgIH0KKy8vSkRLMTJJTVBPUlRTKi8KKworICAgIHByaXZhdGUgaW50IGdldFJ1bkxpbWl0KE9iamVjdCBxdWVyeSwgTWF0Y2hlciBtYXRjaGVyKSB7CisKKyAgICAgICAgaW50IHJ1bkxpbWl0ID0gZ2V0UnVuTGltaXQoKTsKKyAgICAgICAgaW50IHJhbmdlTGltaXQgPSBnZXRFbmRJbmRleCgpOworICAgICAgICBNYXAgaW5pdGlhbFN0eWxlID0gZ2V0QXR0cmlidXRlcygpOworICAgICAgICAKKyAgICAgICAgd2hpbGUgKHJ1bkxpbWl0IDwgcmFuZ2VMaW1pdCkgeworICAgICAgICAgICAgQXR0cmlidXRlTWFwIHN0eWxlID0gZlRleHQuY2hhcmFjdGVyU3R5bGVBdChydW5MaW1pdCk7CisgICAgICAgICAgICBpZiAoIW1hdGNoZXIubWF0Y2hlcyhpbml0aWFsU3R5bGUsIHN0eWxlLCBxdWVyeSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcnVuTGltaXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBydW5MaW1pdCA9IGZUZXh0LmNoYXJhY3RlclN0eWxlTGltaXQocnVuTGltaXQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByYW5nZUxpbWl0OworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgbWFwIHdpdGggdGhlIGF0dHJpYnV0ZXMgZGVmaW5lZCBvbiB0aGUgY3VycmVudAorICAgICAqIGNoYXJhY3Rlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgTWFwIGdldEF0dHJpYnV0ZXMoKSB7CisgICAgICAgIHJldHVybiBmU3R5bGVDYWNoZS5nZXRTdHlsZShmQ2hhckl0ZXIuZ2V0SW5kZXgoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGF0dHJpYnV0ZSBmb3IgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLgorICAgICAqIFJldHVybnMgbnVsbCBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBkZWZpbmVkLgorICAgICAqIEBwYXJhbSBhdHRyaWJ1dGUgdGhlIGtleSBvZiB0aGUgYXR0cmlidXRlIHdob3NlIHZhbHVlIGlzIHJlcXVlc3RlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGdldEF0dHJpYnV0ZShPYmplY3QgYXR0cmlidXRlKSB7CisgICAgICAgIHJldHVybiBnZXRBdHRyaWJ1dGVzKCkuZ2V0KGF0dHJpYnV0ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGF0dHJpYnV0ZSBmb3IgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLgorICAgICAqIFJldHVybnMgbnVsbCBpZiB0aGUgYXR0cmlidXRlIGlzIG5vdCBkZWZpbmVkLgorICAgICAqIEBwYXJhbSBhdHRyaWJ1dGUgdGhlIGtleSBvZiB0aGUgYXR0cmlidXRlIHdob3NlIHZhbHVlIGlzIHJlcXVlc3RlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGdldEF0dHJpYnV0ZShBdHRyaWJ1dGUgYXR0cmlidXRlKSB7CisgICAgICAgIHJldHVybiBnZXRBdHRyaWJ1dGVzKCkuZ2V0KGF0dHJpYnV0ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUga2V5cyBvZiBhbGwgYXR0cmlidXRlcyBkZWZpbmVkIG9uIHRoZQorICAgICAqIGl0ZXJhdG9yJ3MgdGV4dCByYW5nZS4gVGhlIHNldCBpcyBlbXB0eSBpZiBubworICAgICAqIGF0dHJpYnV0ZXMgYXJlIGRlZmluZWQuCisgICAgICovCisvLy8qSkRLMTJJTVBPUlRTCisgICAgcHVibGljIFNldCBnZXRBbGxBdHRyaWJ1dGVLZXlzKCkgeworICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkltcGxlbWVudCB0aGlzIG1ldGhvZCEiKTsKKyAgICB9CisvL0pESzEySU1QT1JUUyovCisKKyAgICBwdWJsaWMgT2JqZWN0IGNsb25lKCkgeworICAgICAgICByZXR1cm4gbmV3IE1UZXh0SXRlcmF0b3IoZlRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmRm9udFJlc29sdmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QmVnaW5JbmRleCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0RW5kSW5kZXgoKSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvUGFyYWdyYXBoUmVuZGVyZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvUGFyYWdyYXBoUmVuZGVyZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mODBkYjAyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9QYXJhZ3JhcGhSZW5kZXJlci5qYXZhCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFBhcmFncmFwaFJlbmRlcmVyLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTA6MDMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8vIFJlcXVpcmVzIEphdmEyCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dGZvcm1hdDsKKworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5UZXh0QXR0cmlidXRlOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CisKK2ltcG9ydCBqYXZhLmF3dC5Db2xvcjsKKworLy8vKkpESzEySU1QT1JUUworaW1wb3J0IGphdmEuYXd0LmZvbnQuRm9udFJlbmRlckNvbnRleHQ7CitpbXBvcnQgamF2YS5hd3QuZm9udC5MaW5lQnJlYWtNZWFzdXJlcjsKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczJEOworLy9KREsxMklNUE9SVFMqLworCisvKkpESzExSU1QT1JUUworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5Gb250UmVuZGVyQ29udGV4dDsKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuTGluZUJyZWFrTWVhc3VyZXI7CitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LkdyYXBoaWNzMkQ7CitKREsxMUlNUE9SVFMqLworCisvKioKKyAqIFBhcmFncmFwaFJlbmRlcmVyIGlzIGEgZmFjdG9yeSBmb3IgTGF5b3V0SW5mbyBvYmplY3RzLgorICovCithYnN0cmFjdCBjbGFzcyBQYXJhZ3JhcGhSZW5kZXJlciB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIC8vIElmIHJlbmRlcmVycyBjYW4gZXZlciB0cmF2ZWwgd2l0aCB0aGVpciBzdHlsZXMsIHRoZW4gdGhpcyBhdHRyaWJ1dGUgd2lsbCBkZW5vdGUgYQorICAgIC8vIHJlbmRlcmVyLiAgRm9yIG5vdywgcmVuZGVyZXJzIGFyZSBub3QgYWRkZWQgYXMgc3R5bGVzIHNvIHRoaXMgaXNuJ3QgbmVlZGVkLgorICAgIC8vc3RhdGljIGZpbmFsIFRleHRBdHRyaWJ1dGUgUEFSQUdSQVBIX1JFTkRFUkVSID0gbmV3IFRleHRBdHRyaWJ1dGUoIlBhcmFncmFwaF9SZW5kZXJlciIpIHt9OworCisgICAgLyoqCisgICAgICogUmVzZXQgdGhlIHJlbmRlcmVyIHRvIHVzZSBpbmZvcm1hdGlvbiBmcm9tIHRoaXMgc3R5bGUuIFNpbmNlIHJlbmRlcmVycyBtYXkgYmUgc2hhcmVkLCB5b3Ugc2hvdWxkCisgICAgICogbWFrZSBzdXJlIHRoZSByZW5kZXJlciBpcyBpbml0aWFsaXplZCBmb3IgdGhlIHN0eWxlIHlvdSB3aXNoIHRvIHJlbmRlciBiZWZvcmUgeW91IHVzZSBpdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBpbml0UmVuZGVyZXIoQXR0cmlidXRlTWFwIHBTdHlsZSkgeworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIExheW91dEluZm8gZm9yIHRoZSBwYXJhZ3JhcGggcmVwcmVzZW50ZWQgYnkKKyAgICAgKiBtZWFzdXJlci4KKyAgICAgKiBAcGFyYW0gdGV4dCB0aGUgdGV4dCBjb250YWluaW5nIHRoZSBwYXJhZ3JhcGgKKyAgICAgKiBAcGFyYW0gbGF5b3V0VG9SZXVzZSBjbGllbnRzIGNhbiBwYXNzIGluIGEgTGF5b3V0SW5mbworICAgICAqIHdoaWNoIHRoZSBQYXJhZ3JhcGhSZW5kZXJlciBtYXkgY2hvb3NlIHRvIHJldXNlCisgICAgICogYW5kIHJldHVybi4gIElmIG51bGwsIGEgbmV3IExheW91dEluZm8gd2lsbCBiZQorICAgICAqIGNyZWF0ZWQgYW5kIHJldHVybmVkLgorICAgICAqIEBwYXJhbSBtZWFzdXJlciB0aGUgTGluZUJyZWFrTWVhc3VyZXIgZm9yIHRoaXMgcGFyYWdyYXBoLgorICAgICAqICBDdXJyZW50IHBvc2l0aW9uIHNob3VsZCBiZSB0aGUgZmlyc3QgY2hhcmFjdGVyIG9uIHRoZSBsaW5lLgorICAgICAqICBJZiBudWxsLCBhIDAtbGVuZ3RoIGxpbmUgaXMgZ2VuZXJhdGVkLiAgSWYgbWVhc3VyZXIgaXMgbnVsbAorICAgICAqICB0aGVuIHBhcmFncmFwaFN0YXJ0IGFuZCBwYXJhZ3JhcGhMaW1pdCBzaG91bGQgYmUgZXF1YWwuCisgICAgICogQHBhcmFtIGZyYyB0aGUgRm9udFJlbmRlckNvbnRleHQgdXNlZCBmb3IgbWVhc3VyZXJtZW50CisgICAgICogQHBhcmFtIHBhcmFncmFwaFN0YXJ0IHRoZSBpbmRleCBpbiB0aGUgdGV4dCB3aGVyZSB0aGUKKyAgICAgKiBjdXJyZW50IHBhcmFncmFwaCBiZWdpbnMKKyAgICAgKiBAcGFyYW0gcGFyYWdyYXBoTGltaXQgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIKKyAgICAgKiBhZnRlciB0aGUgY3VycmVudCBwYXJhZ3JhcGgKKyAgICAgKiBAcGFyYW0gdG90YWxGb3JtYXRXaWR0aCB0aGUgd2lkdGggaW4gd2hpY2ggdGhlIGxpbmUgc2hvdWxkIGZpdAorICAgICAqIEBwYXJhbSBsaW5lQm91bmQgd2hlcmUgcmlnaHQtYWxpZ25lZCBsaW5lcyBhcmUgYWxpZ25lZAorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBMYXlvdXRJbmZvIGxheW91dChNQ29uc3RUZXh0IHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dEluZm8gbGF5b3V0VG9SZXVzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluZUJyZWFrTWVhc3VyZXIgbWVhc3VyZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvbnRSZW5kZXJDb250ZXh0IGZyYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBhcmFncmFwaFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGFyYWdyYXBoTGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0b3RhbEZvcm1hdFdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZUJvdW5kKTsKKworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9UZXN0TVRleHRJdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dGZvcm1hdC9UZXN0TVRleHRJdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmVkZWM0OWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L1Rlc3RNVGV4dEl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRlc3RNVGV4dEl0ZXJhdG9yLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTA6MDMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8vIFJlcXVpcmVzIEphdmEyCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dGZvcm1hdDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZWRUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NVGV4dDsKKworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLlRleHRBdHRyaWJ1dGU7CitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsOworCitwdWJsaWMgY2xhc3MgVGVzdE1UZXh0SXRlcmF0b3IgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBGb250UmVzb2x2ZXIgRk9OVF9NQVBQRVI7CisgICAgc3RhdGljIHsKKyAgICAgICAgQXR0cmlidXRlTWFwIGF0dHJzID0gVGV4dFBhbmVsLmdldERlZmF1bHRTZXR0aW5ncygpLmdldERlZmF1bHRWYWx1ZXMoKTsKKyAgICAgICAgRk9OVF9NQVBQRVIgPSBuZXcgRm9udFJlc29sdmVyKGF0dHJzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgY29tcGFyZUl0ZXJUb1RleHQoTVRleHRJdGVyYXRvciBpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQ29uc3RUZXh0IHRleHQpIHsKKworICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiVGV4dDogIiArIHRleHQpOworICAgICAgICBmaW5hbCBpbnQgYmVnaW5JbmRleCA9IGl0ZXIuZ2V0QmVnaW5JbmRleCgpOworICAgICAgICBmaW5hbCBpbnQgZW5kSW5kZXggPSBpdGVyLmdldEVuZEluZGV4KCk7CisKKyAgICAgICAgY2hhciBjaCA9IGl0ZXIuc2V0SW5kZXgoYmVnaW5JbmRleCk7CisKKyAgICAgICAgZm9yIChpbnQgaT1iZWdpbkluZGV4OyBpIDwgZW5kSW5kZXg7IGkrKykgeworICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50KGNoKyAiICIpOworICAgICAgICAgICAgaWYgKGNoICE9IHRleHQuYXQoaSkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkNoYXJhY3RlcnMgYXJlIG5vdCB0aGUgc2FtZS4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNoID0gaXRlci5uZXh0KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoY2ggIT0gaXRlci5ET05FKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkl0ZXJhdG9yIGlzIG5vdCBkb25lLiIpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChpbnQgaT1lbmRJbmRleC0xOyBpID49IGJlZ2luSW5kZXg7IGktLSkgeworICAgICAgICAgICAgY2ggPSBpdGVyLnByZXZpb3VzKCk7CisgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnQoY2grICIgIik7CisgICAgICAgICAgICBpZiAoY2ggIT0gdGV4dC5hdChpKSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQmFja3dhcmQgaXRlcmF0aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGl0ZXIuc2V0SW5kZXgoYmVnaW5JbmRleCk7CisKKyAgICAgICAgaW50IHJ1bkxpbWl0OworICAgICAgICBmb3IgKGludCBydW5TdGFydCA9IGJlZ2luSW5kZXg7IHJ1blN0YXJ0IDwgZW5kSW5kZXg7IHJ1blN0YXJ0ID0gcnVuTGltaXQpIHsKKworICAgICAgICAgICAgcnVuTGltaXQgPSBNYXRoLm1pbihlbmRJbmRleCwgdGV4dC5jaGFyYWN0ZXJTdHlsZUxpbWl0KHJ1blN0YXJ0KSk7CisKKyAgICAgICAgICAgIGlmIChpdGVyLmdldFJ1blN0YXJ0KCkgIT0gcnVuU3RhcnQpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oaXRlci5nZXRSdW5TdGFydCgpICsgIjsgIiArIHJ1blN0YXJ0KTsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoImdldFJ1blN0YXJ0IGlzIHdyb25nLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGl0ZXIuZ2V0UnVuTGltaXQoKSAhPSBydW5MaW1pdCkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihpdGVyLmdldFJ1bkxpbWl0KCkgKyAiOyAiICsgcnVuTGltaXQpOworICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiZ2V0UnVuTGltaXQgaXMgd3JvbmcuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBzdHlsZSA9IHRleHQuY2hhcmFjdGVyU3R5bGVBdChydW5TdGFydCk7CisKKyAgICAgICAgICAgIHdoaWxlIChpdGVyLmdldEluZGV4KCkgPCBydW5MaW1pdCkgeworICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCByZXNvbHZlZCA9IEZPTlRfTUFQUEVSLmFwcGx5Rm9udChzdHlsZSk7CisgICAgICAgICAgICAgICAgaWYgKCFpdGVyLmdldEF0dHJpYnV0ZXMoKS5lcXVhbHMocmVzb2x2ZWQpKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiU3R5bGUgaXMgd3JvbmcuIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGl0ZXIubmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKworICAgICAgICBBdHRyaWJ1dGVNYXAgYm9sZCA9IG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5XRUlHSFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLldFSUdIVF9CT0xEKTsKKyAgICAgICAgTVRleHQgdGV4dCA9IG5ldyBTdHlsZWRUZXh0KCJIZWxsbyB0aGVyZSEiLCBBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUCk7CisgICAgICAgIHRleHQucmVwbGFjZSgyLCAyLCAnVicsIGJvbGQpOworCisgICAgICAgIE1UZXh0SXRlcmF0b3IgaXRlciA9IG5ldyBNVGV4dEl0ZXJhdG9yKHRleHQsIEZPTlRfTUFQUEVSLCAwLCB0ZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAgY29tcGFyZUl0ZXJUb1RleHQoaXRlciwgdGV4dCk7CisKKyAgICAgICAgdGV4dC5yZXBsYWNlKDYsIDgsIG5ldyBTdHlsZWRUZXh0KCJBTExfQk9MRCIsIGJvbGQpLCAwLCA4KTsKKyAgICAgICAgaXRlciA9IG5ldyBNVGV4dEl0ZXJhdG9yKHRleHQsIEZPTlRfTUFQUEVSLCAxLCB0ZXh0Lmxlbmd0aCgpLTMpOworICAgICAgICBjb21wYXJlSXRlclRvVGV4dChpdGVyLCB0ZXh0KTsKKworICAgICAgICBpdGVyID0gbmV3IE1UZXh0SXRlcmF0b3IodGV4dCwgRk9OVF9NQVBQRVIsIDAsIHRleHQubGVuZ3RoKCkpOworICAgICAgICBjb21wYXJlSXRlclRvVGV4dChpdGVyLCB0ZXh0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisKKyAgICAgICAgbmV3IFRlc3RNVGV4dEl0ZXJhdG9yKCkudGVzdCgpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlBBU1NFRCIpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L1RleHRPZmZzZXQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRmb3JtYXQvVGV4dE9mZnNldC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjlkMWMzZWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0Zm9ybWF0L1RleHRPZmZzZXQuamF2YQpAQCAtMCwwICsxLDE5OCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogVGV4dE9mZnNldC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUwOjAzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCisvLyBSZXZpc2lvbjogMDMgMS4xNiByaWNodGV4dC9UZXh0T2Zmc2V0LmphdmEsIHJpY2h0ZXh0LCByaWNodGV4dAorCisvKgorICAgIDkvNS85NiB7amJyfSBhZGRlZCBzZXQgYW5kIGVxdWFscyBtZXRob2RzCisqLworCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dGZvcm1hdDsKKworLyoqCisgKiBBIFRleHRPZmZzZXQgaW5kaWNhdGVzIGJvdGggYW4gaW50ZWdlciBvZmZzZXQgaW50byB0ZXh0IGFuZCBhIHBsYWNlbWVudAorICogb24gb25lIG9mIHRoZSBjaGFyYWN0ZXJzIGFkamFjZW50IHRvIHRoZSBvZmZzZXQuICBBbiBvZmZzZXQgaXMgYQorICogcG9zaXRpb24gYmV0d2VlbiB0d28gY2hhcmFjdGVyczsgIG9mZnNldCBuCisgKiBpcyBiZXR3ZWVuIGNoYXJhY3RlciBuLTEgYW5kIGNoYXJhY3RlciBuLiAgVGhlIHBsYWNlbWVudCBzcGVjaWZpZXMgd2hldGhlcgorICogaXQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjaGFyYWN0ZXIKKyAqIGFmdGVyIHRoZSBvZmZzZXQKKyAqIChjaGFyYWN0ZXIgbikgb3IgdGhlIGNoYXJhY3RlciBiZWZvcmUgdGhlIG9mZnNldCAoY2hhcmFjdGVyIG4tMSkuCisgKiA8cD4KKyAqIEtub3dpbmcgd2hpY2ggY2hhcmFjdGVyIHRoZSBUZXh0T2Zmc2V0IGlzIGFzc29jaWF0ZWQgd2l0aCBpcyBuZWNlc3NhcnkKKyAqIHdoZW4gZGlzcGxheWluZyBjYXJldHMuICBJbiBiaWRpcmVjdGlvbmFsIHRleHQsIGEgc2luZ2xlIG9mZnNldCBtYXkKKyAqIGhhdmUgdHdvIGRpc3RpbmN0IGNhcmV0cy4gIEFsc28sIGluIG11bHRpbGluZSB0ZXh0LCBhbiBvZmZzZXQgYXQgYSBsaW5lCisgKiBicmVhayBoYXMgYSBwb3NzaWJsZSBjYXJldCBvbiBlYWNoIGxpbmUuCisgKiA8cD4KKyAqIE1vc3QgY2xpZW50cyB3aWxsIG5vdCBiZSBpbnRlcmVzdGVkIGluIHRoZSBwbGFjZW1lbnQsIGFuZCB3aWxsIGp1c3QgdXNlCisgKiB0aGUgb2Zmc2V0LgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgVGV4dE9mZnNldAoreworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgLyoqCisgICAgICogSW5kaWNhdGVzIHRoYXQgdGhlIFRleHRPZmZzZXQgaXMgYXNzb2NpYXRlZCB3aXRoIGNoYXJhY3RlcgorICAgICAqIDxjb2RlPmZPZmZzZXQgLSAxPC9jb2RlPiAtIGllIHRoZSBjaGFyYWN0ZXIgYmVmb3JlIGl0cyBvZmZzZXQuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBib29sZWFuIEJFRk9SRV9PRkZTRVQgPSB0cnVlOworCisgICAgLyoqCisgICAgICogSW5kaWNhdGVzIHRoYXQgdGhlIFRleHRPZmZzZXQgaXMgYXNzb2NpYXRlZCB3aXRoIGNoYXJhY3RlcgorICAgICAqIDxjb2RlPmZPZmZzZXQ8L2NvZGU+IC0gaWUgdGhlIGNoYXJhY3RlciBhZnRlciBpdHMgb2Zmc2V0LgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgYm9vbGVhbiBBRlRFUl9PRkZTRVQgPSBmYWxzZTsKKworICAgIC8qKgorICAgICAqIFRoZSBvZmZzZXQgaW50byB0aGUgdGV4dC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGZPZmZzZXQgPSAwOworCisgICAgLyoqCisgICAgICogVGhlIHBsYWNlbWVudCAtIGJlZm9yZSBvciBhZnRlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBmUGxhY2VtZW50ID0gQUZURVJfT0ZGU0VUOworCisgICAgLyoqCisgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IFRleHRPZmZzZXQKKyAgICAqIEBwYXJhbSBvZmZzZXQgdGhlIG9mZnNldCBpbnRvIHRoZSB0ZXh0IHRvIHJlcHJlc2VudC4gIFBsYWNlbWVudCBpcyBpbXBsaWNpdGx5IEFGVEVSX09GRlNFVC4KKyAgICAqLworICAgIHB1YmxpYyBUZXh0T2Zmc2V0KGludCBvZmZzZXQpCisgICAgeworICAgICAgICBpZiAob2Zmc2V0IDwgMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIk9mZnNldCBpcyBuZWdhdGl2ZSBpbiBUZXh0T2Zmc2V0IGNvbnN0cnVjdG9yLiIpOworCisgICAgICAgIGZPZmZzZXQgPSBvZmZzZXQ7CisKKyAgICAgICAgZlBsYWNlbWVudCA9IEFGVEVSX09GRlNFVDsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIENvbnN0cnVjdHMgYSBuZXcgVGV4dE9mZnNldCBhdCAwLCB3aXRoIHBsYWNlbWVudCBBRlRFUl9PRkZTRVQuCisgICAgKi8KKyAgICBwdWJsaWMgVGV4dE9mZnNldCgpIHsKKyAgICAgICAgdGhpcygwKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIENvbnN0cnVjdHMgYSBuZXcgVGV4dE9mZnNldCB3aXRoIHRoZSBnaXZlbiBvZmZzZXQgYW5kIHBsYWNlbWVudC4KKyAgICAqIEBwYXJhbSBvZmZzZXQgdGhlIG9mZnNldCBpbnRvIHRoZSB0ZXh0CisgICAgKiBAcGFyYW0gcGxhY2VtZW50IGluZGljYXRlcyB0aGUgcG9zaXRpb24gb2YgdGhlIGNhcmV0OyBvbmUgb2YgQkVGT1JFX09GRlNFVCBvciBBRlRFUl9PRkZTRVQKKyAgICAqLworICAgIHB1YmxpYyBUZXh0T2Zmc2V0KGludCBvZmZzZXQsIGJvb2xlYW4gcGxhY2VtZW50KQorICAgIHsKKyAgICAgICAgaWYgKG9mZnNldCA8IDApCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJUZXh0T2Zmc2V0IGNvbnN0cnVjdG9yIG9mZnNldCA8IDA6ICIgKyBvZmZzZXQpOworCisgICAgICAgIGZPZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgIGZQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7CisgICAgfQorCisgICAgLyoqCisgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IFRleHRPZmZzZXQgZnJvbSBhbiBleGlzdGluZyBvbmUuCisgICAgKiBAcGFyYW0gdGhzIHRoZSBUZXh0T2Zmc2V0IHRvIGNvcHkKKyAgICAqLworICAgIHB1YmxpYyBUZXh0T2Zmc2V0KFRleHRPZmZzZXQgcmhzKSB7CisKKyAgICAgICAgdGhpcyhyaHMuZk9mZnNldCwgcmhzLmZQbGFjZW1lbnQpOworICAgIH0KKworICAgIC8qKgorICAgICogU2V0IHRoZSB2YWx1ZSBvZiB0aGUgVGV4dE9mZnNldAorICAgICogQHBhcmFtIG9mZnNldCB0aGUgb2Zmc2V0IGludG8gdGhlIHRleHQKKyAgICAqIEBwYXJhbSBwbGFjZW1lbnQgaW5kaWNhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgY2FyZXQ7IG9uZSBvZiBCRUZPUkVfT0ZGU0VUIG9yIEFGVEVSX09GRlNFVAorICAgICovCisgICAgcHVibGljIHZvaWQgc2V0T2Zmc2V0KGludCBvZmZzZXQsIGJvb2xlYW4gcGxhY2VtZW50KQorICAgIHsKKyAgICAgICAgaWYgKG9mZnNldCA8IDApCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJUZXh0T2Zmc2V0IHNldE9mZnNldCBvZmZzZXQgPCAwOiAiICsgb2Zmc2V0KTsKKworICAgICAgICBmT2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICBmUGxhY2VtZW50ID0gcGxhY2VtZW50OworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBhcmUgdGhpcyB0byBhbm90aGVyIE9iamVjdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG90aGVyKSB7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBlcXVhbHMoKFRleHRPZmZzZXQpb3RoZXIpOworICAgICAgICB9CisgICAgICAgIGNhdGNoKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAqIFJldHVybiB0cnVlIGlmIG9mZnNldCBhbmQgcGxhY2VtZW50IGFyZSB0aGUgc2FtZS4KKyAgICAqCisgICAgKiBAcGFyYW0gb3RoZXIgb2Zmc2V0IHRvIGNvbXBhcmUgYWdhaW5zdAorICAgICogQHJldHVybiB0cnVlIGlmIGJvdGggb2Zmc2V0cyBhcmUgZXF1YWwKKyAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhUZXh0T2Zmc2V0IG90aGVyKSB7CisKKyAgICAgICAgcmV0dXJuIGZPZmZzZXQgPT0gb3RoZXIuZk9mZnNldCAmJiBmUGxhY2VtZW50ID09IG90aGVyLmZQbGFjZW1lbnQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBoYXNoQ29kZSBmb3IgdGhpcyBvYmplY3QuCisgICAgICovCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKworICAgICAgICByZXR1cm4gZlBsYWNlbWVudD09QUZURVJfT0ZGU0VUPyBmT2Zmc2V0IDogLWZPZmZzZXQ7CisgICAgfQorCisgICAgLyoqCisgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIG9mZnNldCBpcyAnZ3JlYXRlclRoYW4nIG90aGVyLiAgSWYgdGhlIGZPZmZzZXQgZmllbGRzIGFyZSBlcXVhbCwgdGhlCisgICAgKiBwbGFjZW1lbnQgZmllbGQgaXMgY29uc2lkZXJlZCwgYW5kIEFGVEVSX09GRlNFVCBpcyBjb25zaWRlcmVkICdncmVhdGVyVGhhbicgQkVGT1JFX09GRlNFVC4KKyAgICAqCisgICAgKiBAcGFyYW0gb3RoZXIgdGhlIG90aGVyIG9mZnNldAorICAgICogQHJldHVybiB0cnVlIGlmIHRoaXMgb2Zmc2V0IGFwcGVhcnMgYWZ0ZXIgb3RoZXIKKyAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGdyZWF0ZXJUaGFuKFRleHRPZmZzZXQgb3RoZXIpCisgICAgeworICAgICAgICByZXR1cm4gZk9mZnNldCA+IG90aGVyLmZPZmZzZXQgfHwKKyAgICAgICAgICAgIChmT2Zmc2V0ID09IG90aGVyLmZPZmZzZXQgJiYgZlBsYWNlbWVudCA9PSBBRlRFUl9PRkZTRVQgJiYgb3RoZXIuZlBsYWNlbWVudCA9PSBCRUZPUkVfT0ZGU0VUKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIFJldHVybiB0cnVlIGlmIHRoaXMgb2Zmc2V0IGlzICdsZXNzVGhhbicgb3RoZXIuICBJZiB0aGUgZk9mZnNldCBmaWVsZHMgYXJlIGVxdWFsLCB0aGUKKyAgICAqIHBsYWNlbWVudCBmaWVsZCBpcyBjb25zaWRlcmVkLCBhbmQgQkVGT1JFX09GRlNFVCBpcyBjb25zaWRlcmVkICdsZXNzVGhhbicgQUZURVJfT0ZGU0VULgorICAgICoKKyAgICAqIEBwYXJhbSBvdGhlciB0aGUgb3RoZXIgb2Zmc2V0CisgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBvZmZzZXQgYXBwZWFycyBiZWZvcmUgb3RoZXIKKyAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGxlc3NUaGFuKFRleHRPZmZzZXQgb3RoZXIpIHsKKworICAgICAgICByZXR1cm4gZk9mZnNldCA8IG90aGVyLmZPZmZzZXQgfHwKKyAgICAgICAgICAgIChmT2Zmc2V0ID09IG90aGVyLmZPZmZzZXQgJiYgZlBsYWNlbWVudCA9PSBCRUZPUkVfT0ZGU0VUICYmIG90aGVyLmZQbGFjZW1lbnQgPT0gQUZURVJfT0ZGU0VUKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIENvcHkgdGhlIHZhbHVlIG9mIGFub3RoZXIgVGV4dE9mZnNldCBpbnRvIHRoaXMKKyAgICAqIEBwYXJhbSBvdGhlciB0aGUgVGV4dE9mZnNldCB0byBjb3B5CisgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhc3NpZ24oVGV4dE9mZnNldCBvdGhlcikgeworICAgICAgICBmT2Zmc2V0ID0gb3RoZXIuZk9mZnNldDsKKyAgICAgICAgZlBsYWNlbWVudCA9IG90aGVyLmZQbGFjZW1lbnQ7CisgICAgfQorCisgICAgLyoqCisgICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBvYmplY3QuCisgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworCisgICAgICAgIHJldHVybiAiWyIgKyAoZlBsYWNlbWVudCA/ICJiZWZvcmUgIiA6ICJhZnRlciAiKSArIGZPZmZzZXQgKyAiXSI7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0FUZXh0UGFuZWxJbXBsLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvQVRleHRQYW5lbEltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lMTQyNzAwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0FUZXh0UGFuZWxJbXBsLmphdmEKQEAgLTAsMCArMSw3NTUgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEFUZXh0UGFuZWxJbXBsLmphdmEsdiAkICRSZXZpc2lvbjogMS4yICQgJERhdGU6IDIwMDAvMDQvMjIgMTc6MTA6MTAgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBqYXZhLmF3dC5BZGp1c3RhYmxlOworaW1wb3J0IGphdmEuYXd0LkNvbXBvbmVudDsKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczsKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuQ2xpcGJvYXJkOworCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZVNldDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZU1vZGlmaWVyOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVkVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRmb3JtYXQuVGV4dE9mZnNldDsKKworLyoqCisgKiBJbXBsZW1lbnRhdGlvbiBjbGFzcyBmb3IgVGV4dFBhbmVsIGFuZCBKVGV4dFBhbmVsLgorICovCitmaW5hbCBjbGFzcyBBVGV4dFBhbmVsSW1wbCB7CisgICAgCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAgICAgICAgICAgICAKKyAgICBwcml2YXRlIFJ1blN0cmF0ZWd5IGZSdW5TdHJhdGVneSA9IG51bGw7CisgICAgcHJpdmF0ZSBUZXh0Q29tcG9uZW50IGZUZXh0Q29tcG9uZW50ID0gbnVsbDsKKyAgICBwcml2YXRlIFRleHRTZWxlY3Rpb24gZlNlbGVjdGlvbiA9IG51bGw7CisgICAgcHJpdmF0ZSBUZXh0RWRpdEJlaGF2aW9yIGZFZGl0QmVoYXZpb3IgPSBudWxsOworICAgIHByaXZhdGUgTVRleHQgZlRleHQgPSBudWxsOworCisgICAgcHJpdmF0ZSBQYW5lbEV2ZW50QnJvYWRjYXN0ZXIgZkJyb2FkY2FzdGVyOworICAgIHByaXZhdGUgS2V5UmVtYXAgZlJlbWFwID0gS2V5UmVtYXAuZ2V0SWRlbnRpdHlSZW1hcCgpOworCisgICAgLy8gVGhpcyBpcyBhIGxpdHRsZSB1Z2x5LiAgVGV4dFBhbmVsIHN1cHBvcnRzIGl0cyBtb2RpZmllZAorICAgIC8vIGZsYWcgd2hldGhlciBvciBub3QgaXQgaXMgZWRpdGFibGUsIG9yIGV2ZW4gc2VsZWN0YWJsZS4KKyAgICAvLyBTbyBpZiB0aGVyZSdzIG5vIGNvbW1hbmQgbG9nIHRvIGtlZXAgdHJhY2sgb2YgdGhlIGZsYWcKKyAgICAvLyBzdGF0ZSB0aGVuIGl0cyBkb25lIHJpZ2h0IGhlcmUgaW4gVGV4dFBhbmVsLiAgSWYgdGhlCisgICAgLy8gcGFuZWwgaXMgZWRpdGFibGUgdGhpcyBmbGFnIGlzIGlnbm9yZWQuCisgICAgcHJpdmF0ZSBib29sZWFuIGZNb2RpZmllZCA9IGZhbHNlOworCisgICAgc3RhdGljIGZpbmFsIFRleHRQYW5lbFNldHRpbmdzIGZnRGVmYXVsdFNldHRpbmdzID0gbmV3IFRleHRQYW5lbFNldHRpbmdzKCk7CisKKyAgICBzdGF0aWMgVGV4dFBhbmVsU2V0dGluZ3MgZ2V0RGVmYXVsdFNldHRpbmdzKCkgeworCisgICAgICAgIHJldHVybiAoVGV4dFBhbmVsU2V0dGluZ3MpIGZnRGVmYXVsdFNldHRpbmdzLmNsb25lKCk7CisgICAgfQorICAgIAorICAgIEFUZXh0UGFuZWxJbXBsKFJ1blN0cmF0ZWd5IHJ1blN0cmF0ZWd5LAorICAgICAgICAgICAgICAgICAgIFRleHRQYW5lbFNldHRpbmdzIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgIE1Db25zdFRleHQgaW5pdGlhbFRleHQsCisgICAgICAgICAgICAgICAgICAgQ2xpcGJvYXJkIGNsaXBib2FyZCwKKyAgICAgICAgICAgICAgICAgICBNVGV4dFBhbmVsIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICBBZGp1c3RhYmxlIGhvcnpTYiwKKyAgICAgICAgICAgICAgICAgICBBZGp1c3RhYmxlIHZlcnRTYikgeworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgZlJ1blN0cmF0ZWd5ID0gcnVuU3RyYXRlZ3k7CisgICAgICAgIGZCcm9hZGNhc3RlciA9IG5ldyBQYW5lbEV2ZW50QnJvYWRjYXN0ZXIoY2xpZW50KTsKKworICAgICAgICBTY3JvbGxlciBzY3JvbGxlciA9IG51bGw7CisgICAgICAgIGlmIChzZXR0aW5ncy5nZXRTY3JvbGxhYmxlKCkpIHsKKyAgICAgICAgICAgIHNjcm9sbGVyID0gbmV3IFNjcm9sbGVyKGhvcnpTYiwgdmVydFNiKTsKKyAgICAgICAgfQorCisgICAgICAgIFN0eWxlZFRleHRDbGlwYm9hcmQgdGV4dENsaXBib2FyZCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3R5bGVkVGV4dENsaXBib2FyZC5nZXRDbGlwYm9hcmRGb3IoY2xpcGJvYXJkKTsKKworICAgICAgICBmVGV4dCA9IG5ldyBTdHlsZWRUZXh0KCk7CisgICAgICAgIGlmIChpbml0aWFsVGV4dCAhPSBudWxsKSB7CisgICAgICAgICAgICBmVGV4dC5hcHBlbmQoaW5pdGlhbFRleHQpOworICAgICAgICB9CisKKyAgICAgICAgZlRleHRDb21wb25lbnQgPSBuZXcgVGV4dENvbXBvbmVudChmVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5nZXREZWZhdWx0VmFsdWVzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3MuZ2V0V3JhcHMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0Q29tcG9uZW50LldJTkRPV19XSURUSCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0Q29tcG9uZW50LkRFRkFVTFRfSU5TRVQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dENsaXBib2FyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncy5nZXRTY3JvbGxhYmxlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkJyb2FkY2FzdGVyKTsKKworICAgICAgICBpZiAoc2Nyb2xsZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgc2Nyb2xsZXIuc2V0Q2xpZW50KGZUZXh0Q29tcG9uZW50KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gTWF5IGhhdmUgdG8gd2FpdCB1bnRpbCBjb21wb25lbnQgaGFzIGhvc3QgdG8gZG8gdGhpczoKKyAgICAgICAgaWYgKHNldHRpbmdzLmdldFNlbGVjdGFibGUoKSkgeworICAgICAgICAgICAgZlNlbGVjdGlvbiA9IG5ldyBUZXh0U2VsZWN0aW9uKGZUZXh0Q29tcG9uZW50LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmQnJvYWRjYXN0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlJ1blN0cmF0ZWd5KTsKKyAgICAgICAgICAgIGZTZWxlY3Rpb24uYWRkVG9Pd25lcihmVGV4dENvbXBvbmVudCk7CisgICAgICAgICAgICBpZiAoc2V0dGluZ3MuZ2V0RWRpdGFibGUoKSkgeworICAgICAgICAgICAgICAgIGZFZGl0QmVoYXZpb3IgPSBuZXcgVGV4dEVkaXRCZWhhdmlvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmVGV4dENvbXBvbmVudCwgZlNlbGVjdGlvbiwgZkJyb2FkY2FzdGVyLCBmUmVtYXApOworICAgICAgICAgICAgICAgIGZFZGl0QmVoYXZpb3IuYWRkVG9Pd25lcihmVGV4dENvbXBvbmVudCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgRmFrZUNvbXBvbmVudCBnZXRUZXh0Q29tcG9uZW50KCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZUZXh0Q29tcG9uZW50OworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBBZGQgdGhlIGdpdmVuIFRleHRQYW5lbExpc3RlbmVyIHRvIHRoZSBsaXN0ZW5lcnMgd2hpY2ggd2lsbAorICAgICAqIHJlY2VpdmUgdXBkYXRlIG5vdGlmaWNhdGlvbnMgZnJvbSB0aGlzIFRleHRQYW5lbC4KKyAgICAgKiBAcGFyYW0gbGlzdGVuZXIgdGhlIGxpc3RlbmVyIHRvIGFkZAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFkZExpc3RlbmVyKFRleHRQYW5lbExpc3RlbmVyIGxpc3RlbmVyKSB7CisKKyAgICAgICAgZkJyb2FkY2FzdGVyLmFkZExpc3RlbmVyKGxpc3RlbmVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmUgdGhlIGdpdmVuIFRleHRQYW5lbExpc3RlbmVyIGZyb20gdGhlIGxpc3RlbmVycyB3aGljaCB3aWxsCisgICAgICogcmVjZWl2ZSB1cGRhdGUgbm90aWZpY2F0aW9ucyBmcm9tIHRoaXMgVGV4dFBhbmVsLgorICAgICAqIEBwYXJhbSBsaXN0ZW5lciB0aGUgbGlzdGVuZXIgdG8gcmVtb3ZlCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVtb3ZlTGlzdGVuZXIoVGV4dFBhbmVsTGlzdGVuZXIgbGlzdGVuZXIpIHsKKworICAgICAgICBmQnJvYWRjYXN0ZXIucmVtb3ZlTGlzdGVuZXIobGlzdGVuZXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFlvdSBrbm93IHdoYXQgdGhpcyBkb2VzLi4uCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IHBpbihpbnQgdmFsdWUsIGludCBtaW4sIGludCBtYXgpIHsKKworICAgICAgICBpZiAobWluID4gbWF4KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIHJhbmdlIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAodmFsdWUgPCBtaW4pIHsKKyAgICAgICAgICAgIHZhbHVlID0gbWluOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHZhbHVlID4gbWF4KSB7CisgICAgICAgICAgICB2YWx1ZSA9IG1heDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisvLz09PT09PT09PT09PQorLy8gVGV4dCBBY2Nlc3MKKy8vPT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGRvY3VtZW50IHRvIDx0dD5uZXdUZXh0PC90dD4uICBUaGlzIG9wZXJhdGlvbgorICAgICAqIG1vZGlmaWVzIHRoZSB0ZXh0IGluIHRoZSBUZXh0UGFuZWwuICBJdCBkb2VzIG5vdCBtb2RpZnkgb3IgYWRvcHQKKyAgICAgKiA8dHQ+bmV3VGV4dDwvdHQ+LiAgVGhpcyBtZXRob2Qgc2V0cyB0aGUgc2VsZWN0aW9uIGFuIGluc2VydGlvbiBwb2ludCBhdAorICAgICAqIHRoZSBlbmQgb2YgdGhlIHRleHQuCisgICAgICogQHBhcmFtIG5ld1RleHQgdGhlIHRleHQgd2hpY2ggd2lsbCByZXBsYWNlIHRoZSBjdXJyZW50IHRleHQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0VGV4dChNQ29uc3RUZXh0IG5ld1RleHQpIHsKKworICAgICAgICByZXBsYWNlUmFuZ2UobmV3VGV4dCwgMCwgZ2V0VGV4dExlbmd0aCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBcHBlbmQgdGhlIGdpdmVuIHRleHQgdG8gdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQuICBFcXVpdmFsZW50IHRvCisgICAgICogPHR0Pmluc2VydChuZXdUZXh0LCBnZXRUZXh0TGVuZ3RoKCkpPC90dD4uCisgICAgICogQHBhcmFtIG5ld1RleHQgdGhlIHRleHQgdG8gYXBwZW5kIHRvIHRoZSBkb2N1bWVudAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFwcGVuZChNQ29uc3RUZXh0IG5ld1RleHQpIHsKKworICAgICAgICBpbnQgbGVuZ3RoID0gZ2V0VGV4dExlbmd0aCgpOworICAgICAgICByZXBsYWNlUmFuZ2UobmV3VGV4dCwgbGVuZ3RoLCBsZW5ndGgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEluc2VydCB0aGUgZ2l2ZW4gdGV4dCBpbnRvIHRoZSBkb2N1bWVudCBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uCisgICAgICogRXF1aXZhbGVudCB0bworICAgICAqIDx0dD5yZXBsYWNlUmFuZ2UobmV3VGV4dCwgcG9zaXRpb24sIHBvc2l0aW9uKTwvdHQ+LgorICAgICAqIEBwYXJhbSBuZXdUZXh0IHRoZSB0ZXh0IHRvIGluc2VydCBpbnRvIHRoZSBkb2N1bWVudC4KKyAgICAgKiBAcGFyYW0gcG9zaXRpb24gdGhlIHBvc2l0aW9uIGluIHRoZSBkb2N1bWVudCB3aGVyZSB0aGUKKyAgICAgKiAgICAgdGV4dCB3aWxsIGJlIGluc2VydGVkCisgICAgICovCisgICAgcHVibGljIHZvaWQgaW5zZXJ0KE1Db25zdFRleHQgbmV3VGV4dCwgaW50IHBvc2l0aW9uKSB7CisKKyAgICAgICAgcmVwbGFjZVJhbmdlKG5ld1RleHQsIHBvc2l0aW9uLCBwb3NpdGlvbik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVwbGFjZSB0aGUgZ2l2ZW4gcmFuZ2Ugd2l0aCA8dHQ+bmV3VGV4dDwvdHQ+LiAgQWZ0ZXIgdGhpcworICAgICAqIG9wZXJhdGlvbiB0aGUgc2VsZWN0aW9uIHJhbmdlIGlzIGFuIGluc2VydGlvbiBwb2ludCBhdCB0aGUKKyAgICAgKiBlbmQgb2YgdGhlIG5ldyB0ZXh0LgorICAgICAqIEBwYXJhbSBuZXdUZXh0IHRoZSB0ZXh0IHdpdGggd2hpY2ggdG8gcmVwbGFjZSB0aGUgcmFuZ2UKKyAgICAgKiBAcGFyYW0gc3RhcnQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcmFuZ2UgdG8gcmVwbGFjZQorICAgICAqIEBwYXJhbSBlbmQgdGhlIGVuZCBvZiB0aGUgcmFuZ2UgdG8gcmVwbGFjZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlcGxhY2VSYW5nZShNQ29uc3RUZXh0IG5ld1RleHQsIGludCBzdGFydCwgaW50IGVuZCkgeworCisgICAgICAgIGludCBsZW5ndGggPSBnZXRUZXh0TGVuZ3RoKCk7CisKKyAgICAgICAgc3RhcnQgPSBwaW4oc3RhcnQsIDAsIGxlbmd0aCk7CisgICAgICAgIGVuZCA9IHBpbihlbmQsIHN0YXJ0LCBsZW5ndGgpOworCisgICAgICAgIGlmIChmU2VsZWN0aW9uICE9IG51bGwpIHsKKworICAgICAgICAgICAgLy8gSWYgd2UncmUgc2VsZWN0YWJsZSwgYnV0IG5vdCBlZGl0YWJsZSwgd2UnbGwgdGVtcG9yYXJpbHkKKyAgICAgICAgICAgIC8vIG1ha2Ugb3Vyc2VsdmVzIGVkaXRhYmxlIHRvIGNoYW5nZSB0aGUgdGV4dC4gIEEgbGl0dGxlIGZ1bm55CisgICAgICAgICAgICAvLyBidXQgdGhlcmUncyBhIGxvdCBvZiBjb2RlIGZvciBnZXR0aW5nIGNhcmV0IHN0dWZmIHJpZ2h0LAorICAgICAgICAgICAgLy8gYW5kIHRoaXMgaXMgbm90IGEgY29tbW9uIG9wZXJhdGlvbiBhbnl3YXkuCisKKyAgICAgICAgICAgIFRleHRFZGl0QmVoYXZpb3IgYmVoYXZpb3I7CisKKyAgICAgICAgICAgIGlmIChmRWRpdEJlaGF2aW9yID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBiZWhhdmlvciA9IG5ldyBUZXh0RWRpdEJlaGF2aW9yKGZUZXh0Q29tcG9uZW50LCBmU2VsZWN0aW9uLCBmQnJvYWRjYXN0ZXIsIGZSZW1hcCk7CisgICAgICAgICAgICAgICAgYmVoYXZpb3IuYWRkVG9Pd25lcihmVGV4dENvbXBvbmVudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBiZWhhdmlvciA9IGZFZGl0QmVoYXZpb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFRleHRPZmZzZXQgbmV3U2VsZWN0aW9uID0gbmV3IFRleHRPZmZzZXQoc3RhcnQgKyBuZXdUZXh0Lmxlbmd0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0LkFGVEVSX09GRlNFVCk7CisKKyAgICAgICAgICAgIFRleHRSZXBsYWNlbWVudCByZXBsYWNlbWVudCA9IG5ldyBUZXh0UmVwbGFjZW1lbnQoc3RhcnQsIGVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2VsZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTZWxlY3Rpb24pOworCisgICAgICAgICAgICBmVGV4dENvbXBvbmVudC50ZXh0Q29udHJvbEV2ZW50T2NjdXJyZWQoQmVoYXZpb3IuUkVQTEFDRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudCk7CisgICAgICAgICAgICBpZiAoZkVkaXRCZWhhdmlvciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgYmVoYXZpb3IucmVtb3ZlRnJvbU93bmVyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisKKyAgICAgICAgICAgIE1UZXh0IG9sZFRleHQgPSBmVGV4dENvbXBvbmVudC5nZXRNb2RpZmlhYmxlVGV4dCgpOworICAgICAgICAgICAgZlRleHRDb21wb25lbnQuc3RvcEJhY2tncm91bmRGb3JtYXR0aW5nKCk7CisgICAgICAgICAgICBvbGRUZXh0LnJlcGxhY2VBbGwobmV3VGV4dCk7CisgICAgICAgICAgICBmVGV4dENvbXBvbmVudC5yZWZvcm1hdEFuZERyYXdUZXh0KDAsIG5ld1RleHQubGVuZ3RoKCksIG51bGwsIG51bGwsIG51bGwsIG51bGwpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIHRleHQgZG9jdW1lbnQgaW4gdGhlIFRleHRQYW5lbC4KKyAgICAgKiBAcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIHRleHQgZG9jdW1lbnQgaW4gdGhlIFRleHRQYW5lbAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0VGV4dExlbmd0aCgpIHsKKworICAgICAgICByZXR1cm4gZlRleHRDb21wb25lbnQuZ2V0VGV4dCgpLmxlbmd0aCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgdGV4dCBkb2N1bWVudCBpbiB0aGUgVGV4dFBhbmVsLgorICAgICAqIEByZXR1cm4gdGhlIHRleHQgZG9jdW1lbnQgaW4gdGhlIFRleHRQYW5lbC4KKyAgICAgKi8KKyAgICBwdWJsaWMgTUNvbnN0VGV4dCBnZXRUZXh0KCkgeworCisgICAgICAgIHJldHVybiBmVGV4dENvbXBvbmVudC5nZXRUZXh0KCk7CisgICAgfQorCisvLz09PT09PT09PT09PQorLy8gU2VsZWN0aW9uIEFjY2VzcworLy89PT09PT09PT09PT0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgb2Zmc2V0IG9mIHRoZSBzdGFydCBvZiB0aGUgc2VsZWN0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0U2VsZWN0aW9uU3RhcnQoKSB7CisKKyAgICAgICAgaWYgKGZTZWxlY3Rpb24gIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZTZWxlY3Rpb24uZ2V0U3RhcnQoKS5mT2Zmc2V0OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG9mZnNldCBvZiB0aGUgZW5kIG9mIHRoZSBzZWxlY3Rpb24uCisgICAgICovCisgICAgcHVibGljIGludCBnZXRTZWxlY3Rpb25FbmQoKSB7CisKKyAgICAgICAgaWYgKGZTZWxlY3Rpb24gIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZTZWxlY3Rpb24uZ2V0RW5kKCkuZk9mZnNldDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlbGVjdGlvbiByYW5nZS4gIFRoaXMgaXMKKyAgICAgKiBlcXVpdmFsZW50IHRvIDx0dD5zZWxlY3Qoc2VsZWN0aW9uU3RhcnQsIGdldFNlbGVjdGlvbkVuZCgpKTwvdHQ+LgorICAgICAqIEBwYXJhbSBzZWxlY3Rpb25TdGFydCB0aGUgc3RhcnQgb2YgdGhlIG5ldyBzZWxlY3Rpb24gcmFuZ2UKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRTZWxlY3Rpb25TdGFydChpbnQgc2VsZWN0aW9uU3RhcnQpIHsKKworICAgICAgICBzZWxlY3Qoc2VsZWN0aW9uU3RhcnQsIGdldFNlbGVjdGlvbkVuZCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGVuZCBvZiB0aGUgc2VsZWN0aW9uIHJhbmdlLiAgVGhpcyBpcworICAgICAqIGVxdWl2YWxlbnQgdG8gPHR0PnNlbGVjdChnZXRTZWxlY3Rpb25TdGFydCgpLCBzZWxlY3Rpb25FbmQpPC90dD4uCisgICAgICogQHBhcmFtIHNlbGVjdGlvblN0YXJ0IHRoZSBzdGFydCBvZiB0aGUgbmV3IHNlbGVjdGlvbiByYW5nZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFNlbGVjdGlvbkVuZChpbnQgc2VsZWN0aW9uRW5kKSB7CisKKyAgICAgICAgc2VsZWN0KGdldFNlbGVjdGlvblN0YXJ0KCksIHNlbGVjdGlvbkVuZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBzZWxlY3Rpb24gcmFuZ2UgdG8gYW4gaW5zZXJ0aW9uIHBvaW50IGF0IHRoZSBnaXZlbgorICAgICAqIG9mZnNldC4gIFRoaXMgaXMgZXF1aXZhbGVudCB0bworICAgICAqIDx0dD5zZWxlY3QocG9zaXRpb24sIHBvc2l0aW9uKTwvdHQ+LgorICAgICAqIEBwYXJhbSBwb3NpdGlvbiB0aGUgb2Zmc2V0IG9mIHRoZSBuZXcgaW5zZXJ0aW9uIHBvaW50CisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Q2FyZXRQb3NpdGlvbihpbnQgcG9zaXRpb24pIHsKKworICAgICAgICBzZWxlY3QocG9zaXRpb24sIHBvc2l0aW9uKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIHNlbGVjdGlvbiByYW5nZSB0byB0aGUgZ2l2ZW4gcmFuZ2UuICBUaGUgcmFuZ2Ugc3RhcnQKKyAgICAgKiBpcyBwaW5uZWQgYmV0d2VlbiAwIGFuZCB0aGUgdGV4dCBsZW5ndGg7ICB0aGUgcmFuZ2UgZW5kIGlzIHBpbm5lZAorICAgICAqIGJldHdlZW4gdGhlIHJhbmdlIHN0YXJ0IGFuZCB0aGUgZW5kIG9mIHRoZSB0ZXh0LiAgVGhlc2Ugc2VtYW50aWNzCisgICAgICogYXJlIGlkZW50aWNhbCB0byB0aG9zZSBvZiA8dHQ+amF2YS5hd3QuVGV4dENvbXBvbmVudDwvdHQ+LgorICAgICAqIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlIHRleHQgaXMgbm90IHNlbGVjdGFibGUuCisgICAgICogQHBhcmFtIHNlbGVjdGlvblN0YXJ0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlbGVjdGlvbiByYW5nZQorICAgICAqIEBwYXJhbSBzZWxlY3Rpb25FbmQgdGhlIGVuZCBvZiB0aGUgc2VsZWN0aW9uIHJhbmdlCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2VsZWN0KGludCBzZWxlY3Rpb25TdGFydCwgaW50IHNlbGVjdGlvbkVuZCkgeworCisgICAgICAgIGludCBsZW5ndGggPSBnZXRUZXh0TGVuZ3RoKCk7CisKKyAgICAgICAgc2VsZWN0aW9uU3RhcnQgPSBwaW4oc2VsZWN0aW9uU3RhcnQsIDAsIGxlbmd0aCk7CisgICAgICAgIHNlbGVjdGlvbkVuZCA9IHBpbihzZWxlY3Rpb25FbmQsIHNlbGVjdGlvblN0YXJ0LCBsZW5ndGgpOworCisgICAgICAgIFRleHRSYW5nZSByYW5nZSA9IG5ldyBUZXh0UmFuZ2Uoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7CisgICAgICAgIGZUZXh0Q29tcG9uZW50LnRleHRDb250cm9sRXZlbnRPY2N1cnJlZChCZWhhdmlvci5TRUxFQ1QsIHJhbmdlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZWxlY3QgYWxsIG9mIHRoZSB0ZXh0IGluIHRoZSBkb2N1bWVudC4gIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYKKyAgICAgKiB0aGUgdGV4dCBpcyBub3Qgc2VsZWN0YWJsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZWxlY3RBbGwoKSB7CisKKyAgICAgICAgc2VsZWN0KDAsIGdldFRleHRMZW5ndGgoKSk7CisgICAgfQorCisKKy8vPT09PT09PT09PT09CisvLyBGb3JtYXQgV2lkdGgKKy8vPT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHRvdGFsIGZvcm1hdCB3aWR0aCwgaW4gcGl4ZWxzLiAgVGhlIGZvcm1hdCB3aWR0aCBpcyB0aGUKKyAgICAgKiB3aWR0aCB0byB3aGljaCB0ZXh0IGlzIHdyYXBwZWQuCisgICAgICogQHJldHVybiB0aGUgZm9ybWF0IHdpZHRoCisgICAgICovCisgICAgcHVibGljIGludCBnZXRGb3JtYXRXaWR0aCgpIHsKKworICAgICAgICByZXR1cm4gZlRleHRDb21wb25lbnQuZ2V0Rm9ybWF0V2lkdGgoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgcGFyYWdyYXBoIGF0IHRoZSBnaXZlbiBvZmZzZXQgaXMgbGVmdC10by1yaWdodC4KKyAgICAgKiBAcGFyYW0gb2Zmc2V0IGFuIG9mZnNldCBpbiB0aGUgdGV4dAorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgcGFyYWdyYXBoIGF0IHRoZSBnaXZlbiBvZmZzZXQgaXMgbGVmdC10by1yaWdodAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIHBhcmFncmFwaElzTGVmdFRvUmlnaHQoaW50IG9mZnNldCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZUZXh0Q29tcG9uZW50LnBhcmFncmFwaElzTGVmdFRvUmlnaHQob2Zmc2V0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBhIGNoYW5nZSB3aGljaCBjYW4gYmUgdW5kb25lLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBhIGNoYW5nZSB3aGljaCBjYW4gYmUgdW5kb25lLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGNhblVuZG8oKSB7CisKKyAgICAgICAgaWYgKGZFZGl0QmVoYXZpb3IgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZFZGl0QmVoYXZpb3IuY2FuVW5kbygpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBjaGFuZ2Ugd2hpY2ggY2FuIGJlIHJlZG9uZS4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBjaGFuZ2Ugd2hpY2ggY2FuIGJlIHJlZG9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjYW5SZWRvKCkgeworCisgICAgICAgIGlmIChmRWRpdEJlaGF2aW9yICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmRWRpdEJlaGF2aW9yLmNhblJlZG8oKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBjbGlwYm9hcmQgY29udGFpbnMgY29udGVudHMgd2hpY2ggY291bGQgYmUKKyAgICAgKiB0cmFuc2ZlcmVkIGludG8gdGhlIHRleHQuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBjbGlwYm9hcmQgaGFzIHRleHQgY29udGVudC4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjbGlwYm9hcmROb3RFbXB0eSgpIHsKKworICAgICAgICByZXR1cm4gZlRleHRDb21wb25lbnQuZ2V0Q2xpcGJvYXJkKCkuaGFzQ29udGVudHMoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYW4gQXR0cmlidXRlTWFwIG9mIGtleXMgd2l0aCBkZWZhdWx0IHZhbHVlcy4gIFRoZSBkZWZhdWx0CisgICAgICogdmFsdWVzIGFyZSB1c2VkIHdoZW4gZGlzcGxheWluZyB0ZXh0IGZvciB2YWx1ZXMgd2hpY2ggYXJlIG5vdAorICAgICAqIHNwZWNpZmllZCBpbiB0aGUgdGV4dC4KKyAgICAgKiBAcmV0dXJuIGFuIEF0dHJpYnV0ZU1hcCBvZiBkZWZhdWx0IGtleS12YWx1ZSBwYWlycworICAgICAqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVNYXAgZ2V0RGVmYXVsdFZhbHVlcygpIHsKKworICAgICAgICByZXR1cm4gZlRleHRDb21wb25lbnQuZ2V0RGVmYXVsdFZhbHVlcygpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIG9iamVjdHNBcmVFcXVhbChPYmplY3QgbGhzLCBPYmplY3QgcmhzKSB7CisgICAgCisgICAgICAgIGlmIChsaHMgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIHJocyA9PSBudWxsOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGxocy5lcXVhbHMocmhzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIE9iamVjdCBjb25zaXN0ZW50Q2hhclN0eWxlKE1Db25zdFRleHQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdCBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0IGRlZmF1bHRWYWx1ZSkgeworCisgICAgICAgIGlmIChzdGFydCA+PSBsaW1pdCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCByYW5nZS4iKTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBydW5TdGFydCA9IHN0YXJ0OworICAgICAgICBPYmplY3QgaW5pdGlhbFZhbHVlID0gdGV4dC5jaGFyYWN0ZXJTdHlsZUF0KHJ1blN0YXJ0KS5nZXQoa2V5KTsKKworICAgICAgICBpZiAoaW5pdGlhbFZhbHVlID09IG51bGwpIHsKKyAgICAgICAgICAgIGluaXRpYWxWYWx1ZSA9IGRlZmF1bHRWYWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAocnVuU3RhcnQgPSB0ZXh0LmNoYXJhY3RlclN0eWxlTGltaXQocnVuU3RhcnQpOworICAgICAgICAgICAgIHJ1blN0YXJ0IDwgbGltaXQ7CisgICAgICAgICAgICAgcnVuU3RhcnQgPSB0ZXh0LmNoYXJhY3RlclN0eWxlTGltaXQocnVuU3RhcnQpKSB7CisKKyAgICAgICAgICAgIE9iamVjdCBuZXh0VmFsdWUgPSB0ZXh0LmNoYXJhY3RlclN0eWxlQXQocnVuU3RhcnQpLmdldChrZXkpOworCisgICAgICAgICAgICBpZiAobmV4dFZhbHVlID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBuZXh0VmFsdWUgPSBkZWZhdWx0VmFsdWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghb2JqZWN0c0FyZUVxdWFsKGluaXRpYWxWYWx1ZSwgbmV4dFZhbHVlKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBNVGV4dFBhbmVsLk1VTFRJUExFX1ZBTFVFUzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBpbml0aWFsVmFsdWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBtZXRob2QgaW5zcGVjdHMgdGhlIGNoYXJhY3RlciBzdHlsZSBydW5zIGluIHRoZSBzZWxlY3Rpb24KKyAgICAgKiByYW5nZSAob3IgdGhlIHR5cGluZyBzdHlsZSBhdCB0aGUgaW5zZXJ0aW9uIHBvaW50KSBhbmQgcmV0dXJuczoKKyAgICAgKiA8dWw+CisgICAgICogPGxpPlRoZSB2YWx1ZSBvZiA8dHQ+a2V5PC90dD4sIGlmIHRoZSB2YWx1ZSBvZiA8dHQ+a2V5PC90dD4KKyAgICAgKiBpcyB0aGUgc2FtZSBpbiBhbGwgb2YgdGhlIHN0eWxlIHJ1bnMgaW4gdGhlIHNlbGVjdGlvbiwgb3I8L2xpPgorICAgICAqIDxsaT5udWxsLCBpZiB0d28gb3IgbW9yZSBzdHlsZSBydW5zIGhhdmUgZGlmZmVyZW50IHZhbHVlcyBmb3IgPHR0PmtleTwvdHQ+LjwvbGk+CisgICAgICogPC91bD4KKyAgICAgKiBJZiBhIHN0eWxlIHJ1biBkb2VzIG5vdCBjb250YWluIDx0dD5rZXk8L3R0PiwKKyAgICAgKiBpdHMgdmFsdWUgaXMgY29uc2lkZXJlZCB0byBiZSA8dHQ+ZGVmYXVsdFN0eWxlPC90dD4uCisgICAgICogVGhpcyBtZXRob2QgaXMgdXNlZnVsIGZvciBjb25maWd1cmluZyBzdHlsZSBtZW51cy4KKyAgICAgKiBAcGFyYW0ga2V5IHRoZSBrZXkgdXNlZCB0byByZXRyaWV2ZSB2YWx1ZXMgZm9yIGNvbXBhcmlzb24KKyAgICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIHRoZSBpbXBsaWNpdCB2YWx1ZSBvZiA8dHQ+a2V5PC90dD4gaW4KKyAgICAgKiAgICAgc3R5bGUgcnVucyB3aGVyZSA8dHQ+a2V5PC90dD4gaXMgbm90IGRlZmluZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGdldENoYXJhY3RlclN0eWxlT3ZlclNlbGVjdGlvbihPYmplY3Qga2V5KSB7CisKKyAgICAgICAgVGV4dFJhbmdlIHNlbFJhbmdlOworICAgICAgICBpZiAoZlNlbGVjdGlvbiAhPSBudWxsKQorICAgICAgICAgICAgc2VsUmFuZ2UgPSBmU2VsZWN0aW9uLmdldFNlbGVjdGlvblJhbmdlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNlbFJhbmdlID0gbmV3IFRleHRSYW5nZSgwLCAwKTsKKworICAgICAgICBpZiAoc2VsUmFuZ2Uuc3RhcnQgPT0gc2VsUmFuZ2UubGltaXQpIHsKKworICAgICAgICAgICAgQXR0cmlidXRlTWFwIGNvbXBTdHlsZTsKKworICAgICAgICAgICAgaWYgKGZFZGl0QmVoYXZpb3IgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGNvbXBTdHlsZSA9IGZFZGl0QmVoYXZpb3IuZ2V0SW5zZXJ0aW9uUG9pbnRTdHlsZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgY29tcFN0eWxlID0gVGV4dEVkaXRCZWhhdmlvci50eXBpbmdTdHlsZUF0KGZUZXh0LCBzZWxSYW5nZS5zdGFydCwgc2VsUmFuZ2UubGltaXQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBPYmplY3QgdmFsdWUgPSBjb21wU3R5bGUuZ2V0KGtleSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU9PW51bGw/IGdldERlZmF1bHRWYWx1ZXMoKS5nZXQoa2V5KSA6IHZhbHVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGNvbnNpc3RlbnRDaGFyU3R5bGUoZlRleHQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsUmFuZ2Uuc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxSYW5nZS5saW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldERlZmF1bHRWYWx1ZXMoKS5nZXQoa2V5KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIG1ldGhvZCBpbnNwZWN0cyB0aGUgcGFyYWdyYXBoIHN0eWxlIHJ1bnMgaW4gdGhlIHNlbGVjdGlvbgorICAgICAqIHJhbmdlIChvciB0aGUgdHlwaW5nIHN0eWxlIGF0IHRoZSBpbnNlcnRpb24gcG9pbnQpIGFuZCByZXR1cm5zOgorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+VGhlIHZhbHVlIG9mIDx0dD5rZXk8L3R0PiwgaWYgdGhlIHZhbHVlIG9mIDx0dD5rZXk8L3R0PgorICAgICAqIGlzIHRoZSBzYW1lIGluIGFsbCBvZiB0aGUgc3R5bGUgcnVucyBpbiB0aGUgc2VsZWN0aW9uLCBvcjwvbGk+CisgICAgICogPGxpPm51bGwsIGlmIHR3byBvciBtb3JlIHN0eWxlIHJ1bnMgaGF2ZSBkaWZmZXJlbnQgdmFsdWVzIGZvciA8dHQ+a2V5PC90dD4uPC9saT4KKyAgICAgKiA8L3VsPgorICAgICAqIElmIGEgc3R5bGUgcnVuIGRvZXMgbm90IGNvbnRhaW4gPHR0PmtleTwvdHQ+LAorICAgICAqIGl0cyB2YWx1ZSBpcyBjb25zaWRlcmVkIHRvIGJlIDx0dD5kZWZhdWx0U3R5bGU8L3R0Pi4KKyAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgZm9yIGNvbmZpZ3VyaW5nIHN0eWxlIG1lbnVzLgorICAgICAqIEBwYXJhbSBrZXkgdGhlIGtleSB1c2VkIHRvIHJldHJpZXZlIHZhbHVlcyBmb3IgY29tcGFyaXNvbgorICAgICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgdGhlIGltcGxpY2l0IHZhbHVlIG9mIDx0dD5rZXk8L3R0PiBpbgorICAgICAqICAgICBzdHlsZSBydW5zIHdoZXJlIDx0dD5rZXk8L3R0PiBpcyBub3QgZGVmaW5lZAorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgZ2V0UGFyYWdyYXBoU3R5bGVPdmVyU2VsZWN0aW9uKE9iamVjdCBrZXkpIHsKKworICAgICAgICBUZXh0UmFuZ2Ugc2VsUmFuZ2U7CisgICAgICAgIGlmIChmU2VsZWN0aW9uICE9IG51bGwpIHsKKyAgICAgICAgICAgIHNlbFJhbmdlID0gZlNlbGVjdGlvbi5nZXRTZWxlY3Rpb25SYW5nZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2VsUmFuZ2UgPSBuZXcgVGV4dFJhbmdlKDAsIDApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNlbFJhbmdlLnN0YXJ0ID09IHNlbFJhbmdlLmxpbWl0KSB7CisgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgcFN0eWxlID0gZlRleHQucGFyYWdyYXBoU3R5bGVBdChzZWxSYW5nZS5zdGFydCk7CisgICAgICAgICAgICBPYmplY3QgdmFsdWUgPSBwU3R5bGUuZ2V0KGtleSk7CisgICAgICAgICAgICByZXR1cm4gdmFsdWU9PW51bGw/IGdldERlZmF1bHRWYWx1ZXMoKS5nZXQoa2V5KSA6IHZhbHVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW50IHBhcmFncmFwaFN0YXJ0ID0gc2VsUmFuZ2Uuc3RhcnQ7CisgICAgICAgICAgICBPYmplY3QgZGVmYXVsdFZhbHVlID0gZ2V0RGVmYXVsdFZhbHVlcygpLmdldChrZXkpOworICAgICAgICAgICAgT2JqZWN0IGluaXRpYWxWYWx1ZSA9IGZUZXh0LnBhcmFncmFwaFN0eWxlQXQocGFyYWdyYXBoU3RhcnQpLmdldChrZXkpOworICAgICAgICAgICAgaWYgKGluaXRpYWxWYWx1ZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgaW5pdGlhbFZhbHVlID0gZGVmYXVsdFZhbHVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKHBhcmFncmFwaFN0YXJ0ID0gZlRleHQucGFyYWdyYXBoTGltaXQocGFyYWdyYXBoU3RhcnQpOworICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhTdGFydCA8IHNlbFJhbmdlLmxpbWl0OworICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhTdGFydCA9IGZUZXh0LnBhcmFncmFwaExpbWl0KHBhcmFncmFwaFN0YXJ0KSkgeworCisgICAgICAgICAgICAgICAgT2JqZWN0IG5leHRWYWx1ZSA9IGZUZXh0LnBhcmFncmFwaFN0eWxlQXQocGFyYWdyYXBoU3RhcnQpLmdldChrZXkpOworICAgICAgICAgICAgICAgIGlmIChuZXh0VmFsdWUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBuZXh0VmFsdWUgPSBkZWZhdWx0VmFsdWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCFvYmplY3RzQXJlRXF1YWwoaW5pdGlhbFZhbHVlLCBuZXh0VmFsdWUpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBNVGV4dFBhbmVsLk1VTFRJUExFX1ZBTFVFUzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBpbml0aWFsVmFsdWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmUgdGhlIHNlbGVjdGVkIHRleHQgZnJvbSB0aGUgZG9jdW1lbnQgYW5kIHBsYWNlIGl0CisgICAgICogb24gdGhlIGNsaXBib2FyZC4gIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlIHRleHQKKyAgICAgKiBpcyBub3QgZWRpdGFibGUsIG9yIGlmIG5vIHRleHQgaXMgc2VsZWN0ZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgY3V0KCkgeworICAgICAgICBmVGV4dENvbXBvbmVudC50ZXh0Q29udHJvbEV2ZW50T2NjdXJyZWQoQmVoYXZpb3IuQ1VULCBudWxsKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQbGFjZSB0aGUgc2VsZWN0ZWQgdGV4dCBvbiB0aGUgY2xpcGJvYXJkLiAgVGhpcyBtZXRob2QgaGFzCisgICAgICogbm8gZWZmZWN0IGlmIG5vIHRleHQgaXMgc2VsZWN0ZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgY29weSgpIHsKKyAgICAgICAgZlRleHRDb21wb25lbnQudGV4dENvbnRyb2xFdmVudE9jY3VycmVkKEJlaGF2aW9yLkNPUFksIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlcGxhY2UgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0ZXh0IHdpdGggdGhlIHRleHQgb24gdGhlIGNsaXBib2FyZC4KKyAgICAgKiBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZSB0ZXh0IGlzIG5vdCBlZGl0YWJsZSwgb3IgaWYgbm8KKyAgICAgKiB0ZXh0IGlzIG9uIHRoZSBjbGlwYm9hcmQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgcGFzdGUoKSB7CisgICAgICAgIGZUZXh0Q29tcG9uZW50LnRleHRDb250cm9sRXZlbnRPY2N1cnJlZChCZWhhdmlvci5QQVNURSwgbnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVtb3ZlIHNlbGVjdGVkIHRleHQgZnJvbSB0aGUgZG9jdW1lbnQsIHdpdGhvdXQgYWx0ZXJpbmcgdGhlIGNsaXBib2FyZC4KKyAgICAgKiBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZQorICAgICAqIHRleHQgaXMgbm90IGVkaXRhYmxlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGNsZWFyKCkgeworICAgICAgICBmVGV4dENvbXBvbmVudC50ZXh0Q29udHJvbEV2ZW50T2NjdXJyZWQoQmVoYXZpb3IuQ0xFQVIsIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFVuZG8gdGhlIG1vc3QgcmVjZW50IHRleHQgY2hhbmdlLiAgVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZgorICAgICAqIHRoZXJlIGlzIG5vIGNoYW5nZSB0byB1bmRvLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHVuZG8oKSB7CisgICAgICAgIGZUZXh0Q29tcG9uZW50LnRleHRDb250cm9sRXZlbnRPY2N1cnJlZChCZWhhdmlvci5VTkRPLCBudWxsKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWRvIHRoZSBtb3N0IHJlY2VudCB0ZXh0IGNoYW5nZS4gIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYKKyAgICAgKiB0aGVyZSBpcyBubyBjaGFuZ2UgdG8gcmVkby4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZWRvKCkgeworICAgICAgICBmVGV4dENvbXBvbmVudC50ZXh0Q29udHJvbEV2ZW50T2NjdXJyZWQoQmVoYXZpb3IuUkVETywgbnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBudW1iZXIgb2YgY29tbWFuZHMgdGhlIGNvbW1hbmQgbG9nIGNhbiBob2xkLgorICAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBjb21tYW5kcyB0aGUgY29tbWFuZCBsb2cgY2FuIGhvbGQKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldENvbW1hbmRMb2dTaXplKCkgeworCisgICAgICAgIGlmIChmRWRpdEJlaGF2aW9yICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmRWRpdEJlaGF2aW9yLmdldENvbW1hbmRMb2dTaXplKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgbnVtYmVyIG9mIGNvbW1hbmRzIHRoZSBjb21tYW5kIGxvZyBjYW4gaG9sZC4gIEFsbAorICAgICAqIHJlZG9hYmxlIGNvbW1hbmRzIGFyZSByZW1vdmVkIHdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkLgorICAgICAqIEBwYXJhbSBzaXplIHRoZSBudW1iZXIgb2YgY29tbWFuZHMga2VwdCBpbiB0aGUgY29tbWFuZCBsb2cKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRDb21tYW5kTG9nU2l6ZShpbnQgc2l6ZSkgeworICAgICAgICBmVGV4dENvbXBvbmVudC50ZXh0Q29udHJvbEV2ZW50T2NjdXJyZWQoQmVoYXZpb3IuU0VUX0NPTU1BTkRfTE9HX1NJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSW50ZWdlcihzaXplKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVtb3ZlIGFsbCBjb21tYW5kcyBmcm9tIHRoZSBjb21tYW5kIGxvZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhckNvbW1hbmRMb2coKSB7CisgICAgICAgIGZUZXh0Q29tcG9uZW50LnRleHRDb250cm9sRXZlbnRPY2N1cnJlZChCZWhhdmlvci5DTEVBUl9DT01NQU5EX0xPRywgbnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogTW9kaWZ5IHRoZSBjaGFyYWN0ZXIgc3R5bGVzIG9uIHRoZSBzZWxlY3RlZCBjaGFyYWN0ZXJzLiAgSWYgbm8gY2hhcmFjdGVycworICAgICAqIGFyZSBzZWxlY3RlZCwgbW9kaWZ5IHRoZSB0eXBpbmcgc3R5bGUuCisgICAgICogQHBhcmFtIG1vZGlmaWVyIHRoZSBTdHlsZU1vZGlmaWVyIHdpdGggd2hpY2ggdG8gbW9kaWZ5IHRoZSBzdHlsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBtb2RpZnlDaGFyYWN0ZXJTdHlsZU9uU2VsZWN0aW9uKFN0eWxlTW9kaWZpZXIgbW9kaWZpZXIpIHsKKyAgICAgICAgZlRleHRDb21wb25lbnQudGV4dENvbnRyb2xFdmVudE9jY3VycmVkKEJlaGF2aW9yLkNIQVJBQ1RFUl9TVFlMRV9NT0QsIG1vZGlmaWVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNb2RpZnkgdGhlIHBhcmFncmFwaCBzdHlsZXMgaW4gcGFyYWdyYXBocyBjb250YWluaW5nIHNlbGVjdGVkIGNoYXJhY3RlcnMsIG9yCisgICAgICogdGhlIHBhcmFncmFwaCBjb250YWluaW5nIHRoZSBpbnNlcnRpb24gcG9pbnQuCisgICAgICogQHBhcmFtIG1vZGlmaWVyIHRoZSBTdHlsZU1vZGlmaWVyIHdpdGggd2hpY2ggdG8gbW9kaWZ5IHRoZSBzdHlsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBtb2RpZnlQYXJhZ3JhcGhTdHlsZU9uU2VsZWN0aW9uKFN0eWxlTW9kaWZpZXIgbW9kaWZpZXIpIHsKKyAgICAgICAgZlRleHRDb21wb25lbnQudGV4dENvbnRyb2xFdmVudE9jY3VycmVkKEJlaGF2aW9yLlBBUkFHUkFQSF9TVFlMRV9NT0QsIG1vZGlmaWVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIEtleVJlbWFwIHVzZWQgdG8gcHJvY2VzcyBrZXkgZXZlbnRzLgorICAgICAqIEByZXR1cm4gdGhlIGtleSByZW1hcCB1c2VkIHRvIHByb2Nlc3Mga2V5IGV2ZW50cworICAgICAqIEBzZWUgI3NldEtleVJlbWFwCisgICAgICovCisgICAgcHVibGljIEtleVJlbWFwIGdldEtleVJlbWFwKCkgeworCisgICAgICAgIHJldHVybiBmUmVtYXA7CisgICAgfQorCisgICAgLyoqCisgICAgICogVXNlIHRoZSBnaXZlbiBLZXlSZW1hcCB0byBtYXAga2V5IGV2ZW50cyB0byBjaGFyYWN0ZXJzLgorICAgICAqIE9ubHkga2V5CisgICAgICogZXZlbnRzIGFyZSBhZmZlY3RlZCBieSB0aGUgcmVtYXA7ICBvdGhlciB0ZXh0IGVudGVyaW5nIHRoZQorICAgICAqIGNvbnRyb2wgKHZpYSB0aGUgY2xpcGJvYXJkLCBmb3IgZXhhbXBsZSkgaXMgbm90IGFmZmVjdGVkCisgICAgICogYnkgdGhlIEtleVJlbWFwLgorICAgICAqIDxwPgorICAgICAqIERvIG5vdCBwYXNzIDx0dD5udWxsPC90dD4gdG8gdGhpcyBtZXRob2QgdG8gbGVhdmUga2V5CisgICAgICogZXZlbnRzIHVubWFwcGVkLiAgSW5zdGVhZCwgdXNlIDx0dD5LZXlSZW1hcC5nZXRJZGVudGl0eVJlbWFwKCk8L3R0PgorICAgICAqIEBwYXJhbSByZW1hcCB0aGUgS2V5UmVtYXAgdG8gdXNlIGZvciBtYXBwaW5nIGtleSBldmVudHMgdG8gY2hhcmFjdGVycworICAgICAqIEBleGNlcHRpb24gamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uIGlmIHBhcmFtZXRlciBpcyBudWxsCisgICAgICogQHNlZSBLZXlSZW1hcAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEtleVJlbWFwKEtleVJlbWFwIHJlbWFwKSB7CisKKyAgICAgICAgaWYgKHJlbWFwID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigicmVtYXAgY2FuJ3QgYmUgbnVsbCIpOworICAgICAgICB9CisKKyAgICAgICAgZlJlbWFwID0gcmVtYXA7CisgICAgICAgIGlmIChmRWRpdEJlaGF2aW9yICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZFZGl0QmVoYXZpb3Iuc2V0S2V5UmVtYXAocmVtYXApOworICAgICAgICB9CisKKyAgICAgICAgZkJyb2FkY2FzdGVyLnRleHRTdGF0ZUNoYW5nZWQoVGV4dFBhbmVsRXZlbnQuS0VZUkVNQVBfQ0hBTkdFRCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBtb2RpZmljYXRpb24gZmxhZyBvZiB0aGUgY3VycmVudCB0ZXh0IGNoYW5nZS4KKyAgICAgKiBAc2VlICNzZXRNb2RpZmllZAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzTW9kaWZpZWQoKSB7CisKKyAgICAgICAgaWYgKGZFZGl0QmVoYXZpb3IgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZFZGl0QmVoYXZpb3IuaXNNb2RpZmllZCgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZNb2RpZmllZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgbW9kaWZpY2F0aW9uIGZsYWcgb2YgdGhlIGN1cnJlbnQgdGV4dCBjaGFuZ2UuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TW9kaWZpZWQoYm9vbGVhbiBtb2RpZmllZCkgeworCisgICAgICAgIGJvb2xlYW4gaGFuZGxlZCA9IGZUZXh0Q29tcG9uZW50LnRleHRDb250cm9sRXZlbnRPY2N1cnJlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJlaGF2aW9yLlNFVF9NT0RJRklFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVkPyBCb29sZWFuLlRSVUUgOiBCb29sZWFuLkZBTFNFKTsKKyAgICAgICAgaWYgKCFoYW5kbGVkKSB7CisgICAgICAgICAgICBmTW9kaWZpZWQgPSBtb2RpZmllZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgbWV0aG9kIGlzIGZvciBwZXJmLXRlc3Rpbmcgb25seSEKKyAgICAgKi8KKyAgICB2b2lkIGhhbmRsZUtleUV2ZW50KGphdmEuYXd0LmV2ZW50LktleUV2ZW50IGtleUV2ZW50KSB7CisgICAgCisgICAgICAgIENvbXBvbmVudCBob3N0ID0gZlRleHRDb21wb25lbnQuZ2V0SG9zdCgpOworICAgICAgICBpZiAoaG9zdCAhPSBudWxsKSB7CisgICAgICAgICAgICBob3N0LmRpc3BhdGNoRXZlbnQoa2V5RXZlbnQpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0FyYWJpY1RyYW5zbGl0ZXJhdGlvbi5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0FyYWJpY1RyYW5zbGl0ZXJhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNlMjgzMWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvQXJhYmljVHJhbnNsaXRlcmF0aW9uLmphdmEKQEAgLTAsMCArMSwxODAgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEFyYWJpY1RyYW5zbGl0ZXJhdGlvbi5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUxOjIzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCisvKgorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgsIEFsbCBSaWdodHMgUmVzZXJ2ZWQKKyAqLworCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCisvKgorRm9yIGFueSBpbmNvbWluZyBjaGFyYWN0ZXIgQworaWYgeW91IGNhbiBtYXAgQyB1c2luZyB0aGUgZm9sbG93aW5nIEZha2VBcmFiaWNUYWJsZSwgcmV0dXJuCitGYWtlQXJhYmljVGFibGUoQykKK2Vsc2UgaWYgQyBpcyBmcm9tIEEgdGhyb3VnaCBaLCByZXR1cm4gRmFrZUFyYWJpY1RhYmxlKGxvd2VyY2FzZShDKSkKK2Vsc2UganVzdCByZXR1cm4gQworCisKK0Zha2VBcmFiaWNUYWJsZSBpcyBkZWZpbmVkIGJ5IHRoZSBmb2xsb3dpbmcgbWFwcGluZworCiswICAgMDY2MDtBUkFCSUMtSU5ESUMgRElHSVQgWkVSTztOZDswO0FOOzswOzA7MDtOOzs7OzsKKzEgICAwNjYxO0FSQUJJQy1JTkRJQyBESUdJVCBPTkU7TmQ7MDtBTjs7MTsxOzE7Tjs7Ozs7CisyICAgMDY2MjtBUkFCSUMtSU5ESUMgRElHSVQgVFdPO05kOzA7QU47OzI7MjsyO047Ozs7OworMyAgIDA2NjM7QVJBQklDLUlORElDIERJR0lUIFRIUkVFO05kOzA7QU47OzM7MzszO047Ozs7OworNCAgIDA2NjQ7QVJBQklDLUlORElDIERJR0lUIEZPVVI7TmQ7MDtBTjs7NDs0OzQ7Tjs7Ozs7Cis1ICAgMDY2NTtBUkFCSUMtSU5ESUMgRElHSVQgRklWRTtOZDswO0FOOzs1OzU7NTtOOzs7OzsKKzYgICAwNjY2O0FSQUJJQy1JTkRJQyBESUdJVCBTSVg7TmQ7MDtBTjs7Njs2OzY7Tjs7Ozs7Cis3ICAgMDY2NztBUkFCSUMtSU5ESUMgRElHSVQgU0VWRU47TmQ7MDtBTjs7Nzs3Ozc7Tjs7Ozs7Cis4ICAgMDY2ODtBUkFCSUMtSU5ESUMgRElHSVQgRUlHSFQ7TmQ7MDtBTjs7ODs4Ozg7Tjs7Ozs7Cis5ICAgMDY2OTtBUkFCSUMtSU5ESUMgRElHSVQgTklORTtOZDswO0FOOzs5Ozk7OTtOOzs7OzsKKworJSAgIDA2NkE7QVJBQklDIFBFUkNFTlQgU0lHTjtQbzswO0VUOzs7OztOOzs7OzsKKy4gICAwNjZCO0FSQUJJQyBERUNJTUFMIFNFUEFSQVRPUjtQbzswO0FOOzs7OztOOzs7OzsKKywgICAwNjBDO0FSQUJJQyBDT01NQTtQbzswO1I7Ozs7O047Ozs7OworLSAgIDA2NDA7QVJBQklDIFRBVFdFRUw7TG07MDtSOzs7OztOOzs7OzsKKycgICAwNjUyO0FSQUJJQyBTVUtVTjtNbjszNDtSOzs7OztOOzs7OzsKKyIgICAwNjUxO0FSQUJJQyBTSEFEREE7TW47MzM7Ujs7Ozs7TjtBUkFCSUMgU0hBRERBSDs7OzsKKzsgICAwNjFCO0FSQUJJQyBTRU1JQ09MT047UG87MDtSOzs7OztOOzs7OzsKKz8gICAwNjFGO0FSQUJJQyBRVUVTVElPTiBNQVJLO1BvOzA7Ujs7Ozs7Tjs7Ozs7CisKK2EgICAwNjI3O0FSQUJJQyBMRVRURVIgQUxFRjtMbzswO1I7Ozs7O047Ozs7OworQSAgIDA2Mzk7QVJBQklDIExFVFRFUiBBSU47TG87MDtSOzs7OztOOzs7OzsKK2IgICAwNjI4O0FSQUJJQyBMRVRURVIgQkVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEJBQTs7OzsKK2MgICAwNjM1O0FSQUJJQyBMRVRURVIgU0FEO0xvOzA7Ujs7Ozs7Tjs7Ozs7CitkICAgMDYyRjtBUkFCSUMgTEVUVEVSIERBTDtMbzswO1I7Ozs7O047Ozs7OworRCAgIDA2MzA7QVJBQklDIExFVFRFUiBUSEFMO0xvOzA7Ujs7Ozs7Tjs7Ozs7CitFICAgMDY0QjtBUkFCSUMgRkFUSEFUQU47TW47Mjc7Ujs7Ozs7Tjs7Ozs7CitlICAgMDY0RTtBUkFCSUMgRkFUSEE7TW47MzA7Ujs7Ozs7TjtBUkFCSUMgRkFUSEFIOzs7OworZiAgIDA2NDE7QVJBQklDIExFVFRFUiBGRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgRkE7Ozs7CitnICAgMDYzQTtBUkFCSUMgTEVUVEVSIEdIQUlOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CitoICAgMDYyRDtBUkFCSUMgTEVUVEVSIEhBSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQUE7Ozs7CitIICAgMDY0NztBUkFCSUMgTEVUVEVSIEhFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQTs7OzsKK0kgICAwNjREO0FSQUJJQyBLQVNSQVRBTjtNbjsyOTtSOzs7OztOOzs7OzsKK2kgICAwNjUwO0FSQUJJQyBLQVNSQTtNbjszMjtSOzs7OztOO0FSQUJJQyBLQVNSQUg7Ozs7CitqICAgMDYyQztBUkFCSUMgTEVUVEVSIEpFRU07TG87MDtSOzs7OztOOzs7OzsKK0sgICAwNjJFO0FSQUJJQyBMRVRURVIgS0hBSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBLSEFBOzs7OworayAgIDA2NDM7QVJBQklDIExFVFRFUiBLQUY7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgQ0FGOzs7OworbCAgIDA2NDQ7QVJBQklDIExFVFRFUiBMQU07TG87MDtSOzs7OztOOzs7OzsKK20gICAwNjQ1O0FSQUJJQyBMRVRURVIgTUVFTTtMbzswO1I7Ozs7O047Ozs7OworbiAgIDA2NDY7QVJBQklDIExFVFRFUiBOT09OO0xvOzA7Ujs7Ozs7Tjs7Ozs7CitvICAgMDY0RjtBUkFCSUMgREFNTUE7TW47MzE7Ujs7Ozs7TjtBUkFCSUMgREFNTUFIOzs7OworcCAgIDA2Mjg7QVJBQklDIExFVFRFUiBCRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgQkFBOzs7OworcSAgIDA2NDI7QVJBQklDIExFVFRFUiBRQUY7TG87MDtSOzs7OztOOzs7OzsKK3IgICAwNjMxO0FSQUJJQyBMRVRURVIgUkVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBOzs7OworcyAgIDA2MzM7QVJBQklDIExFVFRFUiBTRUVOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CitTICAgMDYzNDtBUkFCSUMgTEVUVEVSIFNIRUVOO0xvOzA7Ujs7Ozs7Tjs7Ozs7Cit0ICAgMDYyQTtBUkFCSUMgTEVUVEVSIFRFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBUQUE7Ozs7CitUICAgMDYyQjtBUkFCSUMgTEVUVEVSIFRIRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgVEhBQTs7OzsKK1UgICAwNjRDO0FSQUJJQyBEQU1NQVRBTjtNbjsyODtSOzs7OztOOzs7OzsKK3UgICAwNjRGO0FSQUJJQyBEQU1NQTtNbjszMTtSOzs7OztOO0FSQUJJQyBEQU1NQUg7Ozs7Cit2ICAgMDY0MTtBUkFCSUMgTEVUVEVSIEZFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBGQTs7OzsKK3cgICAwNjQ4O0FSQUJJQyBMRVRURVIgV0FXO0xvOzA7Ujs7Ozs7Tjs7Ozs7Cit4ICAgMDYzMztBUkFCSUMgTEVUVEVSIFNFRU47TG87MDtSOzs7OztOOzs7OzsKK3kgICAwNjRBO0FSQUJJQyBMRVRURVIgWUVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFlBOzs7OworeiAgIDA2MzI7QVJBQklDIExFVFRFUiBaQUlOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CitaICAgMDYzODtBUkFCSUMgTEVUVEVSIFpBSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBESEFIOzs7OworCisqLworCisvKioKKyAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBLZXlSZW1hcCB0byBwcm9kdWNlIHRyYW5zbGl0ZXJhdGVkIEFyYWJpYworICogY2hhcmFjdGVycyBmcm9tIExhdGluLTEgY2hhcmFjdGVycy4KKyAqLworCitmaW5hbCBjbGFzcyBBcmFiaWNUcmFuc2xpdGVyYXRpb24gZXh0ZW5kcyBLZXlSZW1hcCB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHB1YmxpYyBjaGFyIHJlbWFwKGNoYXIgYykgeworCisgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICAgICAgY2FzZSAnMCc6IHJldHVybiAnXHUwNjYwJzsgLy8gQVJBQklDLUlORElDIERJR0lUIFpFUk8KKyAgICAgICAgICAgIGNhc2UgJzEnOiByZXR1cm4gJ1x1MDY2MSc7IC8vIEFSQUJJQy1JTkRJQyBESUdJVCBPTkUKKyAgICAgICAgICAgIGNhc2UgJzInOiByZXR1cm4gJ1x1MDY2Mic7IC8vIEFSQUJJQy1JTkRJQyBESUdJVCBUV08KKyAgICAgICAgICAgIGNhc2UgJzMnOiByZXR1cm4gJ1x1MDY2Myc7IC8vIEFSQUJJQy1JTkRJQyBESUdJVCBUSFJFRQorICAgICAgICAgICAgY2FzZSAnNCc6IHJldHVybiAnXHUwNjY0JzsgLy8gQVJBQklDLUlORElDIERJR0lUIEZPVVIKKyAgICAgICAgICAgIGNhc2UgJzUnOiByZXR1cm4gJ1x1MDY2NSc7IC8vIEFSQUJJQy1JTkRJQyBESUdJVCBGSVZFCisgICAgICAgICAgICBjYXNlICc2JzogcmV0dXJuICdcdTA2NjYnOyAvLyBBUkFCSUMtSU5ESUMgRElHSVQgU0lYCisgICAgICAgICAgICBjYXNlICc3JzogcmV0dXJuICdcdTA2NjcnOyAvLyBBUkFCSUMtSU5ESUMgRElHSVQgU0VWRU4KKyAgICAgICAgICAgIGNhc2UgJzgnOiByZXR1cm4gJ1x1MDY2OCc7IC8vIEFSQUJJQy1JTkRJQyBESUdJVCBFSUdIVAorICAgICAgICAgICAgY2FzZSAnOSc6IHJldHVybiAnXHUwNjY5JzsgLy8gQVJBQklDLUlORElDIERJR0lUIE5JTkUKKworICAgICAgICAgICAgY2FzZSAnJSc6IHJldHVybiAnXHUwNjZBJzsgLy8gQVJBQklDIFBFUkNFTlQgU0lHTgorICAgICAgICAgICAgLy8gdGhlIFRyYWRpdGlvbmFsIEFyYWJpYyBmb250IGRvZXMgbm90IGNvbnRhaW4gdGhpcyBjaGFyYWN0ZXIKKyAgICAgICAgICAgIC8vIGNhc2UgJy4nOiByZXR1cm4gJ1x1MDY2Qic7IC8vIEFSQUJJQyBERUNJTUFMIFNFUEFSQVRPUgorICAgICAgICAgICAgY2FzZSAnLCc6IHJldHVybiAnXHUwNjBDJzsgLy8gQVJBQklDIENPTU1BCisgICAgICAgICAgICBjYXNlICctJzogcmV0dXJuICdcdTA2NDAnOyAvLyBBUkFCSUMgVEFUV0VFTAorICAgICAgICAgICAgY2FzZSAnXCcnOiByZXR1cm4gJ1x1MDY1Mic7IC8vIEFSQUJJQyBTVUtVTgorICAgICAgICAgICAgY2FzZSAnIic6IHJldHVybiAnXHUwNjUxJzsgLy8gQVJBQklDIFNIQUREQQorICAgICAgICAgICAgY2FzZSAnOyc6IHJldHVybiAnXHUwNjFCJzsgLy8gQVJBQklDIFNFTUlDT0xPTgorICAgICAgICAgICAgY2FzZSAnPyc6IHJldHVybiAnXHUwNjFGJzsgLy8gQVJBQklDIFFVRVNUSU9OIE1BUksKKworICAgICAgICAgICAgY2FzZSAnYSc6IHJldHVybiAnXHUwNjI3JzsgLy8gQVJBQklDIExFVFRFUiBBTEVGCisgICAgICAgICAgICBjYXNlICdBJzogcmV0dXJuICdcdTA2MzknOyAvLyBBUkFCSUMgTEVUVEVSIEFJTgorICAgICAgICAgICAgY2FzZSAnYic6IHJldHVybiAnXHUwNjI4JzsgLy8gQVJBQklDIExFVFRFUiBCRUgKKyAgICAgICAgICAgIGNhc2UgJ0InOiByZXR1cm4gJ1x1MDYyOCc7IC8vIEFSQUJJQyBMRVRURVIgQkVICisgICAgICAgICAgICBjYXNlICdjJzogcmV0dXJuICdcdTA2MzUnOyAvLyBBUkFCSUMgTEVUVEVSIFNBRAorICAgICAgICAgICAgY2FzZSAnQyc6IHJldHVybiAnXHUwNjM1JzsgLy8gQVJBQklDIExFVFRFUiBTQUQKKyAgICAgICAgICAgIGNhc2UgJ2QnOiByZXR1cm4gJ1x1MDYyRic7IC8vIEFSQUJJQyBMRVRURVIgREFMCisgICAgICAgICAgICBjYXNlICdEJzogcmV0dXJuICdcdTA2MzAnOyAvLyBBUkFCSUMgTEVUVEVSIFRIQUwKKyAgICAgICAgICAgIGNhc2UgJ2UnOiByZXR1cm4gJ1x1MDY0RSc7IC8vIEFSQUJJQyBGQVRIQQorICAgICAgICAgICAgY2FzZSAnRSc6IHJldHVybiAnXHUwNjRCJzsgLy8gQVJBQklDIEZBVEhBVEFOCisgICAgICAgICAgICBjYXNlICdmJzogcmV0dXJuICdcdTA2NDEnOyAvLyBBUkFCSUMgTEVUVEVSIEZFSAorICAgICAgICAgICAgY2FzZSAnRic6IHJldHVybiAnXHUwNjQxJzsgLy8gQVJBQklDIExFVFRFUiBGRUgKKyAgICAgICAgICAgIGNhc2UgJ2cnOiByZXR1cm4gJ1x1MDYzQSc7IC8vIEFSQUJJQyBMRVRURVIgR0hBSU4KKyAgICAgICAgICAgIGNhc2UgJ0cnOiByZXR1cm4gJ1x1MDYzQSc7IC8vIEFSQUJJQyBMRVRURVIgR0hBSU4KKyAgICAgICAgICAgIGNhc2UgJ2gnOiByZXR1cm4gJ1x1MDYyRCc7IC8vIEFSQUJJQyBMRVRURVIgSEFICisgICAgICAgICAgICBjYXNlICdIJzogcmV0dXJuICdcdTA2NDcnOyAvLyBBUkFCSUMgTEVUVEVSIEhFSAorICAgICAgICAgICAgY2FzZSAnaSc6IHJldHVybiAnXHUwNjUwJzsgLy8gQVJBQklDIEtBU1JBCisgICAgICAgICAgICBjYXNlICdJJzogcmV0dXJuICdcdTA2NEQnOyAvLyBBUkFCSUMgS0FTUkFUQU4KKyAgICAgICAgICAgIGNhc2UgJ2onOiByZXR1cm4gJ1x1MDYyQyc7IC8vIEFSQUJJQyBMRVRURVIgSkVFTQorICAgICAgICAgICAgY2FzZSAnSic6IHJldHVybiAnXHUwNjJDJzsgLy8gQVJBQklDIExFVFRFUiBKRUVNCisgICAgICAgICAgICBjYXNlICdrJzogcmV0dXJuICdcdTA2NDMnOyAvLyBBUkFCSUMgTEVUVEVSIEtBRgorICAgICAgICAgICAgY2FzZSAnSyc6IHJldHVybiAnXHUwNjJFJzsgLy8gQVJBQklDIExFVFRFUiBLSEFICisgICAgICAgICAgICBjYXNlICdsJzogcmV0dXJuICdcdTA2NDQnOyAvLyBBUkFCSUMgTEVUVEVSIExBTQorICAgICAgICAgICAgY2FzZSAnTCc6IHJldHVybiAnXHUwNjQ0JzsgLy8gQVJBQklDIExFVFRFUiBMQU0KKyAgICAgICAgICAgIGNhc2UgJ20nOiByZXR1cm4gJ1x1MDY0NSc7IC8vIEFSQUJJQyBMRVRURVIgTUVFTQorICAgICAgICAgICAgY2FzZSAnTSc6IHJldHVybiAnXHUwNjQ1JzsgLy8gQVJBQklDIExFVFRFUiBNRUVNCisgICAgICAgICAgICBjYXNlICduJzogcmV0dXJuICdcdTA2NDYnOyAvLyBBUkFCSUMgTEVUVEVSIE5PT04KKyAgICAgICAgICAgIGNhc2UgJ04nOiByZXR1cm4gJ1x1MDY0Nic7IC8vIEFSQUJJQyBMRVRURVIgTk9PTgorICAgICAgICAgICAgY2FzZSAnbyc6IHJldHVybiAnXHUwNjRGJzsgLy8gQVJBQklDIERBTU1BCisgICAgICAgICAgICBjYXNlICdPJzogcmV0dXJuICdcdTA2NEYnOyAvLyBBUkFCSUMgREFNTUEKKyAgICAgICAgICAgIGNhc2UgJ3AnOiByZXR1cm4gJ1x1MDYyOCc7IC8vIEFSQUJJQyBMRVRURVIgQkVICisgICAgICAgICAgICBjYXNlICdQJzogcmV0dXJuICdcdTA2MjgnOyAvLyBBUkFCSUMgTEVUVEVSIEJFSAorICAgICAgICAgICAgY2FzZSAncSc6IHJldHVybiAnXHUwNjQyJzsgLy8gQVJBQklDIExFVFRFUiBRQUYKKyAgICAgICAgICAgIGNhc2UgJ1EnOiByZXR1cm4gJ1x1MDY0Mic7IC8vIEFSQUJJQyBMRVRURVIgUUFGCisgICAgICAgICAgICBjYXNlICdyJzogcmV0dXJuICdcdTA2MzEnOyAvLyBBUkFCSUMgTEVUVEVSIFJFSAorICAgICAgICAgICAgY2FzZSAnUic6IHJldHVybiAnXHUwNjMxJzsgLy8gQVJBQklDIExFVFRFUiBSRUgKKyAgICAgICAgICAgIGNhc2UgJ3MnOiByZXR1cm4gJ1x1MDYzMyc7IC8vIEFSQUJJQyBMRVRURVIgU0VFTgorICAgICAgICAgICAgY2FzZSAnUyc6IHJldHVybiAnXHUwNjM0JzsgLy8gQVJBQklDIExFVFRFUiBTSEVFTgorICAgICAgICAgICAgY2FzZSAndCc6IHJldHVybiAnXHUwNjJBJzsgLy8gQVJBQklDIExFVFRFUiBURUgKKyAgICAgICAgICAgIGNhc2UgJ1QnOiByZXR1cm4gJ1x1MDYyQic7IC8vIEFSQUJJQyBMRVRURVIgVEhFSAorICAgICAgICAgICAgY2FzZSAnVSc6IHJldHVybiAnXHUwNjRDJzsgLy8gQVJBQklDIERBTU1BVEFOCisgICAgICAgICAgICBjYXNlICd1JzogcmV0dXJuICdcdTA2NEYnOyAvLyBBUkFCSUMgREFNTUEKKyAgICAgICAgICAgIGNhc2UgJ3YnOiByZXR1cm4gJ1x1MDY0MSc7IC8vIEFSQUJJQyBMRVRURVIgRkVICisgICAgICAgICAgICBjYXNlICdWJzogcmV0dXJuICdcdTA2NDEnOyAvLyBBUkFCSUMgTEVUVEVSIEZFSAorICAgICAgICAgICAgY2FzZSAndyc6IHJldHVybiAnXHUwNjQ4JzsgLy8gQVJBQklDIExFVFRFUiBXQVcKKyAgICAgICAgICAgIGNhc2UgJ1cnOiByZXR1cm4gJ1x1MDY0OCc7IC8vIEFSQUJJQyBMRVRURVIgV0FXCisgICAgICAgICAgICBjYXNlICd4JzogcmV0dXJuICdcdTA2MzMnOyAvLyBBUkFCSUMgTEVUVEVSIFNFRU4KKyAgICAgICAgICAgIGNhc2UgJ1gnOiByZXR1cm4gJ1x1MDYzMyc7IC8vIEFSQUJJQyBMRVRURVIgU0VFTgorICAgICAgICAgICAgY2FzZSAneSc6IHJldHVybiAnXHUwNjRBJzsgLy8gQVJBQklDIExFVFRFUiBZRUgKKyAgICAgICAgICAgIGNhc2UgJ1knOiByZXR1cm4gJ1x1MDY0QSc7IC8vIEFSQUJJQyBMRVRURVIgWUVICisgICAgICAgICAgICBjYXNlICd6JzogcmV0dXJuICdcdTA2MzInOyAvLyBBUkFCSUMgTEVUVEVSIFpBSU4KKyAgICAgICAgICAgIGNhc2UgJ1onOiByZXR1cm4gJ1x1MDYzOCc7IC8vIEFSQUJJQyBMRVRURVIgWkFICisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gYzsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvQmVoYXZpb3IuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9CZWhhdmlvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjIzYzc4ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvQmVoYXZpb3IuamF2YQpAQCAtMCwwICsxLDIwMyBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogQmVoYXZpb3IuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo1MToyMyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbDsKKworaW1wb3J0IGphdmEuYXd0LkdyYXBoaWNzOworaW1wb3J0IGphdmEuYXd0LlJlY3RhbmdsZTsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkZvY3VzRXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuS2V5RXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuTW91c2VFdmVudDsKKworLyoqIEEgY2xhc3MgdGhhdCBoYW5kbGVzIGV2ZW50cyBmb3IgYSBCZWhhdmlvck93bmVyLgorKiBBIGJlaGF2aW9yIGVuYWNwc3VsYXRlcyBzb21lIHBpZWNlIG9mIHRoZSBldmVudC1oYW5kbGluZyBsb2dpYyBmb3IgYSBjb21wb25lbnQuCisqIFRoaXMgYWxsb3dzIHRoZSBjbGllbnQgdG8gc2VwYXJhdGUgZXZlbnQtaGFuZGxpbmcgbG9naWMgb3V0IGludG8gc2VwYXJhdGUgY2xhc3NlcworKiBhY2NvcmRpbmcgdG8gZnVuY3Rpb24sIG9yIHRvIGR5bmFtaWNhbGx5IGNoYW5nZSB0aGUgd2F5IGEgY29tcG9uZW50IGhhbmRsZXMKKyogZXZlbnRzIHdpdGhvdXQgYWRkaW5nIGEgbG90IG9mIHNwZWNpYWwtY2FzZSBjb2RlIHRvIHRoZSBwYW5lbCBpdHNlbGYuCisqIEJlaGF2aW9ycyBhcmUgc3RvcmVkIGluIGEgbGlua2VkIGxpc3QsIGFuZCBhbGwgYmVoYXZpb3JzIGdldCBhIGNyYWNrIGF0IGFuIGV2ZW50IGJlZm9yZQorKiB0aGUgb3duZXIgZ2V0cyBhIGNyYWNrIGF0IHRoZW0gKHJpZ2h0IG5vdywgd2UgcmVseSBvbiBvYmplY3RzIHRoYXQgaW1wbGVtZW50CisqIEJlaGF2aW9yT3duZXIgdG8gc3VwcG9ydCB0aGVzZSBzZW1hbnRpY3MpLgorKiBCZWhhdmlvciBwcm92aWRlcyBhbGwgdGhlIHNhbWUgZXZlbnQtaGFuZGxpbmcgZnVuY3Rpb25zIHRoYXQgQ29tcG9uZW50IHByb3ZpZGVzLCBhbmQKKyogdGhleSBhbGwgaGF2ZSBleGFjdGx5IHRoZSBzYW1lIHN5bnRheCBhbmQgc2VtYW50aWNzLiAqLworYWJzdHJhY3QgY2xhc3MgQmVoYXZpb3IgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIEJlaGF2aW9yIGZOZXh0QmVoYXZpb3IgPSBudWxsOworICAgIHByaXZhdGUgQmVoYXZpb3JPd25lciBmT3duZXIgPSBudWxsOworCisgICAgc3RhdGljIGNsYXNzIEV2ZW50VHlwZSB7CisKKyAgICAgICAgRXZlbnRUeXBlKCkgeworICAgICAgICB9CisgICAgfQorCisgICAgLy8gZXZlbnRzIC0gc2hvdWxkIHRoZXNlIGJlIGluIFRleHRQYW5lbCAob3IgZWxzZXdoZXJlKT8KKworICAgIC8vIFRoaXMgZXZlbnQncyBXSEFUIHBhcmFtZXRlciBpcyBhIFRleHRSYW5nZSBpbnN0YW5jZQorICAgIHN0YXRpYyBmaW5hbCBFdmVudFR5cGUgU0VMRUNUID0gbmV3IEV2ZW50VHlwZSgpOworCisgICAgLy8gTm8gV0hBVCBwYXJhbSBmb3IgdGhlc2U6CisgICAgc3RhdGljIGZpbmFsIEV2ZW50VHlwZSBDVVQgPSBuZXcgRXZlbnRUeXBlKCk7CisgICAgc3RhdGljIGZpbmFsIEV2ZW50VHlwZSBDT1BZID0gbmV3IEV2ZW50VHlwZSgpOworICAgIHN0YXRpYyBmaW5hbCBFdmVudFR5cGUgUEFTVEUgPSBuZXcgRXZlbnRUeXBlKCk7CisgICAgc3RhdGljIGZpbmFsIEV2ZW50VHlwZSBDTEVBUiA9IG5ldyBFdmVudFR5cGUoKTsKKyAgICBzdGF0aWMgZmluYWwgRXZlbnRUeXBlIFVORE8gPSBuZXcgRXZlbnRUeXBlKCk7CisgICAgc3RhdGljIGZpbmFsIEV2ZW50VHlwZSBSRURPID0gbmV3IEV2ZW50VHlwZSgpOworICAgIHN0YXRpYyBmaW5hbCBFdmVudFR5cGUgQ0xFQVJfQ09NTUFORF9MT0cgPSBuZXcgRXZlbnRUeXBlKCk7CisKKyAgICAvLyBXSEFUIHBhcmFtIGlzIGEgU3R5bGVNb2RpZmllcgorICAgIHN0YXRpYyBmaW5hbCBFdmVudFR5cGUgQ0hBUkFDVEVSX1NUWUxFX01PRCA9IG5ldyBFdmVudFR5cGUoKTsKKyAgICBzdGF0aWMgZmluYWwgRXZlbnRUeXBlIFBBUkFHUkFQSF9TVFlMRV9NT0QgPSBuZXcgRXZlbnRUeXBlKCk7CisKKyAgICAvLyBXaXRoIHRoaXMgZXZlbnQsIHZhbHVlcyBvZiB0aGUgV0hBVCBwYXJhbWV0ZXIgYXJlCisgICAgLy8gZWl0aGVyIEJvb2xlYW4uVFJVRSBvciBCb29sZWFuLkZBTFNFCisgICAgc3RhdGljIGZpbmFsIEV2ZW50VHlwZSBTRVRfTU9ESUZJRUQgPSBuZXcgRXZlbnRUeXBlKCk7CisKKyAgICAvLyBXSEFUIHBhcmFtIGlzIGEgVGV4dFJlcGxhY2VtZW50CisgICAgc3RhdGljIGZpbmFsIEV2ZW50VHlwZSBSRVBMQUNFID0gbmV3IEV2ZW50VHlwZSgpOworCisgICAgLy8gV0hBVCBwYXJhbSBpcyBhbiBJbnRlZ2VyCisgICAgc3RhdGljIGZpbmFsIEV2ZW50VHlwZSBTRVRfQ09NTUFORF9MT0dfU0laRSA9IG5ldyBFdmVudFR5cGUoKTsKKworICAgIHB1YmxpYyBCZWhhdmlvcigpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBhZGRUb093bmVyKEJlaGF2aW9yT3duZXIgb3duZXIpIHsKKyAgICAgICAgcmVtb3ZlRnJvbU93bmVyKCk7CisgICAgICAgIGZPd25lciA9IG93bmVyOworICAgICAgICBzZXROZXh0QmVoYXZpb3Iob3duZXIuZ2V0QmVoYXZpb3IoKSk7CisgICAgICAgIG93bmVyLnNldEJlaGF2aW9yKHRoaXMpOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGZvY3VzR2FpbmVkKEZvY3VzRXZlbnQgZSkgeworICAgICAgICBpZiAoZk5leHRCZWhhdmlvciAhPSBudWxsKQorICAgICAgICAgICAgcmV0dXJuIGZOZXh0QmVoYXZpb3IuZm9jdXNHYWluZWQoZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBmb2N1c0xvc3QoRm9jdXNFdmVudCBlKSB7CisgICAgICAgIGlmIChmTmV4dEJlaGF2aW9yICE9IG51bGwpCisgICAgICAgICAgICByZXR1cm4gZk5leHRCZWhhdmlvci5mb2N1c0xvc3QoZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBrZXlQcmVzc2VkKEtleUV2ZW50IGUpIHsKKyAgICAgICAgaWYgKGZOZXh0QmVoYXZpb3IgIT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiBmTmV4dEJlaGF2aW9yLmtleVByZXNzZWQoZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBrZXlUeXBlZChLZXlFdmVudCBlKSB7CisKKyAgICAgICAgaWYgKGZOZXh0QmVoYXZpb3IgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZOZXh0QmVoYXZpb3Iua2V5VHlwZWQoZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBrZXlSZWxlYXNlZChLZXlFdmVudCBlKSB7CisgICAgICAgIGlmIChmTmV4dEJlaGF2aW9yICE9IG51bGwpCisgICAgICAgICAgICByZXR1cm4gZk5leHRCZWhhdmlvci5rZXlSZWxlYXNlZChlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1vdXNlRHJhZ2dlZChNb3VzZUV2ZW50IGUpIHsKKyAgICAgICAgaWYgKGZOZXh0QmVoYXZpb3IgIT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiBmTmV4dEJlaGF2aW9yLm1vdXNlRHJhZ2dlZChlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1vdXNlRW50ZXJlZChNb3VzZUV2ZW50IGUpIHsKKyAgICAgICAgaWYgKGZOZXh0QmVoYXZpb3IgIT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiBmTmV4dEJlaGF2aW9yLm1vdXNlRW50ZXJlZChlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1vdXNlRXhpdGVkKE1vdXNlRXZlbnQgZSkgeworICAgICAgICBpZiAoZk5leHRCZWhhdmlvciAhPSBudWxsKQorICAgICAgICAgICAgcmV0dXJuIGZOZXh0QmVoYXZpb3IubW91c2VFeGl0ZWQoZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBtb3VzZU1vdmVkKE1vdXNlRXZlbnQgZSkgeworICAgICAgICBpZiAoZk5leHRCZWhhdmlvciAhPSBudWxsKQorICAgICAgICAgICAgcmV0dXJuIGZOZXh0QmVoYXZpb3IubW91c2VNb3ZlZChlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1vdXNlUHJlc3NlZChNb3VzZUV2ZW50IGUpIHsKKyAgICAgICAgaWYgKGZOZXh0QmVoYXZpb3IgIT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiBmTmV4dEJlaGF2aW9yLm1vdXNlUHJlc3NlZChlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1vdXNlUmVsZWFzZWQoTW91c2VFdmVudCBlKSB7CisgICAgICAgIGlmIChmTmV4dEJlaGF2aW9yICE9IG51bGwpCisgICAgICAgICAgICByZXR1cm4gZk5leHRCZWhhdmlvci5tb3VzZVJlbGVhc2VkKGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIGZpbmFsIEJlaGF2aW9yIG5leHRCZWhhdmlvcigpIHsKKyAgICAgICAgcmV0dXJuIGZOZXh0QmVoYXZpb3I7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gcGFpbnQoR3JhcGhpY3MgZywgUmVjdGFuZ2xlIGRyYXdSZWN0KSB7CisgICAgICAgIGlmIChmTmV4dEJlaGF2aW9yICE9IG51bGwpCisgICAgICAgICAgICByZXR1cm4gZk5leHRCZWhhdmlvci5wYWludChnLCBkcmF3UmVjdCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZW1vdmVGcm9tT3duZXIoKSB7CisgICAgICAgIGlmIChmT3duZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKGZPd25lci5nZXRCZWhhdmlvcigpID09IHRoaXMpCisgICAgICAgICAgICAgICAgZk93bmVyLnNldEJlaGF2aW9yKG5leHRCZWhhdmlvcigpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgIGN1cnJlbnQgPSBmT3duZXIuZ2V0QmVoYXZpb3IoKTsKKworICAgICAgICAgICAgICAgIHdoaWxlIChjdXJyZW50ICE9IG51bGwgJiYgY3VycmVudC5uZXh0QmVoYXZpb3IoKSAhPSB0aGlzKQorICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0QmVoYXZpb3IoKTsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudCAhPSBudWxsKQorICAgICAgICAgICAgICAgICAgICBjdXJyZW50LnNldE5leHRCZWhhdmlvcihuZXh0QmVoYXZpb3IoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzZXROZXh0QmVoYXZpb3IobnVsbCk7CisgICAgICAgICAgICBmT3duZXIgPSBudWxsOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGZpbmFsIHZvaWQgc2V0TmV4dEJlaGF2aW9yKEJlaGF2aW9yIG5leHQpIHsKKyAgICAgICAgZk5leHRCZWhhdmlvciA9IG5leHQ7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gdGV4dENvbnRyb2xFdmVudE9jY3VycmVkKEV2ZW50VHlwZSBldmVudCwgT2JqZWN0IGRhdGEpIHsKKyAgICAgICAgaWYgKGZOZXh0QmVoYXZpb3IgIT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiBmTmV4dEJlaGF2aW9yLnRleHRDb250cm9sRXZlbnRPY2N1cnJlZChldmVudCwgZGF0YSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvQmVoYXZpb3JPd25lci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0JlaGF2aW9yT3duZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40MTY2NWEwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0JlaGF2aW9yT3duZXIuamF2YQpAQCAtMCwwICsxLDIyIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBCZWhhdmlvck93bmVyLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ludGVyZmFjZSBCZWhhdmlvck93bmVyIHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHB1YmxpYyBCZWhhdmlvciBnZXRCZWhhdmlvcigpOworICAgIHB1YmxpYyB2b2lkIHNldEJlaGF2aW9yKEJlaGF2aW9yIGIpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0NvbW1hbmQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9Db21tYW5kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmY3NmJmYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9Db21tYW5kLmphdmEKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogQ29tbWFuZC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUxOjIzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCithYnN0cmFjdCBjbGFzcyBDb21tYW5kIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBDb21tYW5kIGZQcmV2aW91c0NvbW1hbmQgPSBudWxsOworCisgICAgLy8gZk1vZGlmaWVkIGlzIHVzZWQgdG8ga2VlcCBhIHRleHRNb2RpZmllZCBmbGFnIGZvcgorICAgIC8vIGNsaWVudHMKKyAgICBwcml2YXRlIGJvb2xlYW4gZk1vZGlmaWVkOworCisgICAgcHVibGljIENvbW1hbmQoKSB7CisgICAgICAgIGZNb2RpZmllZCA9IHRydWU7CisgICAgfQorCisgICAgcHVibGljIENvbW1hbmQgcHJldmlvdXNDb21tYW5kKCkgeworICAgICAgICByZXR1cm4gZlByZXZpb3VzQ29tbWFuZDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRQcmV2aW91c0NvbW1hbmQoQ29tbWFuZCAgcHJldmlvdXNDb21tYW5kKSB7CisgICAgICAgIGZQcmV2aW91c0NvbW1hbmQgPSBwcmV2aW91c0NvbW1hbmQ7CisgICAgfQorCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgZXhlY3V0ZSgpOworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHVuZG8oKTsKKworICAgIHB1YmxpYyB2b2lkIHJlZG8oKSB7CisgICAgICAgIGV4ZWN1dGUoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgZmluYWwgYm9vbGVhbiBpc01vZGlmaWVkKCkgeworCisgICAgICAgIHJldHVybiBmTW9kaWZpZWQ7CisgICAgfQorCisgICAgcHVibGljIGZpbmFsIHZvaWQgc2V0TW9kaWZpZWQoYm9vbGVhbiBtb2RpZmllZCkgeworCisgICAgICAgIGZNb2RpZmllZCA9IG1vZGlmaWVkOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9GYWtlQ29tcG9uZW50LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvRmFrZUNvbXBvbmVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmRhZDU3NWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvRmFrZUNvbXBvbmVudC5qYXZhCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEZha2VDb21wb25lbnQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo1MToyMyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbDsKKworaW1wb3J0IGphdmEuYXd0LkNvbXBvbmVudDsKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczsKKworYWJzdHJhY3QgY2xhc3MgRmFrZUNvbXBvbmVudCB7CisgICAgCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcm90ZWN0ZWQgQ29tcG9uZW50IGZIb3N0OworICAgIAorICAgIGFic3RyYWN0IHZvaWQgYWRkTm90aWZ5KCk7CisgICAgYWJzdHJhY3Qgdm9pZCBwYWludChHcmFwaGljcyBnKTsKKyAgICB2b2lkIHNldEhvc3QoQ29tcG9uZW50IGhvc3QpIHsgICAKKyAgICAgICAgZkhvc3QgPSBob3N0OworICAgIH0KKyAgICBhYnN0cmFjdCB2b2lkIHJlcXVlc3RGb2N1cygpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9IYWNrQXJhYmljVHJhbnNsaXRlcmF0aW9uLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvSGFja0FyYWJpY1RyYW5zbGl0ZXJhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmNjMDMxZTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvSGFja0FyYWJpY1RyYW5zbGl0ZXJhdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBIYWNrQXJhYmljVHJhbnNsaXRlcmF0aW9uLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8qCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OCwgQWxsIFJpZ2h0cyBSZXNlcnZlZAorICovCisKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKKy8qCitGb3IgYW55IGluY29taW5nIGNoYXJhY3RlciBDCitpZiB5b3UgY2FuIG1hcCBDIHVzaW5nIHRoZSBmb2xsb3dpbmcgRmFrZUFyYWJpY1RhYmxlLCByZXR1cm4KK0Zha2VBcmFiaWNUYWJsZShDKQorZWxzZSBpZiBDIGlzIGZyb20gQSB0aHJvdWdoIFosIHJldHVybiBGYWtlQXJhYmljVGFibGUobG93ZXJjYXNlKEMpKQorZWxzZSBqdXN0IHJldHVybiBDCisKKworRmFrZUFyYWJpY1RhYmxlIGlzIGRlZmluZWQgYnkgdGhlIGZvbGxvd2luZyBtYXBwaW5nCisKKzAgICAwNjYwO0FSQUJJQy1JTkRJQyBESUdJVCBaRVJPO05kOzA7QU47OzA7MDswO047Ozs7OworMSAgIDA2NjE7QVJBQklDLUlORElDIERJR0lUIE9ORTtOZDswO0FOOzsxOzE7MTtOOzs7OzsKKzIgICAwNjYyO0FSQUJJQy1JTkRJQyBESUdJVCBUV087TmQ7MDtBTjs7MjsyOzI7Tjs7Ozs7CiszICAgMDY2MztBUkFCSUMtSU5ESUMgRElHSVQgVEhSRUU7TmQ7MDtBTjs7MzszOzM7Tjs7Ozs7Cis0ICAgMDY2NDtBUkFCSUMtSU5ESUMgRElHSVQgRk9VUjtOZDswO0FOOzs0OzQ7NDtOOzs7OzsKKzUgICAwNjY1O0FSQUJJQy1JTkRJQyBESUdJVCBGSVZFO05kOzA7QU47OzU7NTs1O047Ozs7OworNiAgIDA2NjY7QVJBQklDLUlORElDIERJR0lUIFNJWDtOZDswO0FOOzs2OzY7NjtOOzs7OzsKKzcgICAwNjY3O0FSQUJJQy1JTkRJQyBESUdJVCBTRVZFTjtOZDswO0FOOzs3Ozc7NztOOzs7OzsKKzggICAwNjY4O0FSQUJJQy1JTkRJQyBESUdJVCBFSUdIVDtOZDswO0FOOzs4Ozg7ODtOOzs7OzsKKzkgICAwNjY5O0FSQUJJQy1JTkRJQyBESUdJVCBOSU5FO05kOzA7QU47Ozk7OTs5O047Ozs7OworCislICAgMDY2QTtBUkFCSUMgUEVSQ0VOVCBTSUdOO1BvOzA7RVQ7Ozs7O047Ozs7OworLiAgIDA2NkI7QVJBQklDIERFQ0lNQUwgU0VQQVJBVE9SO1BvOzA7QU47Ozs7O047Ozs7OworLCAgIDA2MEM7QVJBQklDIENPTU1BO1BvOzA7Ujs7Ozs7Tjs7Ozs7CistICAgMDY0MDtBUkFCSUMgVEFUV0VFTDtMbTswO1I7Ozs7O047Ozs7OworJyAgIDA2NTI7QVJBQklDIFNVS1VOO01uOzM0O1I7Ozs7O047Ozs7OworIiAgIDA2NTE7QVJBQklDIFNIQUREQTtNbjszMztSOzs7OztOO0FSQUJJQyBTSEFEREFIOzs7OworOyAgIDA2MUI7QVJBQklDIFNFTUlDT0xPTjtQbzswO1I7Ozs7O047Ozs7OworPyAgIDA2MUY7QVJBQklDIFFVRVNUSU9OIE1BUks7UG87MDtSOzs7OztOOzs7OzsKKworYSAgIDA2Mjc7QVJBQklDIExFVFRFUiBBTEVGO0xvOzA7Ujs7Ozs7Tjs7Ozs7CitBICAgMDYzOTtBUkFCSUMgTEVUVEVSIEFJTjtMbzswO1I7Ozs7O047Ozs7OworYiAgIDA2Mjg7QVJBQklDIExFVFRFUiBCRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgQkFBOzs7OworYyAgIDA2MzU7QVJBQklDIExFVFRFUiBTQUQ7TG87MDtSOzs7OztOOzs7OzsKK2QgICAwNjJGO0FSQUJJQyBMRVRURVIgREFMO0xvOzA7Ujs7Ozs7Tjs7Ozs7CitEICAgMDYzMDtBUkFCSUMgTEVUVEVSIFRIQUw7TG87MDtSOzs7OztOOzs7OzsKK0UgICAwNjRCO0FSQUJJQyBGQVRIQVRBTjtNbjsyNztSOzs7OztOOzs7OzsKK2UgICAwNjRFO0FSQUJJQyBGQVRIQTtNbjszMDtSOzs7OztOO0FSQUJJQyBGQVRIQUg7Ozs7CitmICAgMDY0MTtBUkFCSUMgTEVUVEVSIEZFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBGQTs7OzsKK2cgICAwNjNBO0FSQUJJQyBMRVRURVIgR0hBSU47TG87MDtSOzs7OztOOzs7OzsKK2ggICAwNjJEO0FSQUJJQyBMRVRURVIgSEFIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBQTs7OzsKK0ggICAwNjQ3O0FSQUJJQyBMRVRURVIgSEVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBOzs7OworSSAgIDA2NEQ7QVJBQklDIEtBU1JBVEFOO01uOzI5O1I7Ozs7O047Ozs7OworaSAgIDA2NTA7QVJBQklDIEtBU1JBO01uOzMyO1I7Ozs7O047QVJBQklDIEtBU1JBSDs7OzsKK2ogICAwNjJDO0FSQUJJQyBMRVRURVIgSkVFTTtMbzswO1I7Ozs7O047Ozs7OworSyAgIDA2MkU7QVJBQklDIExFVFRFUiBLSEFIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEtIQUE7Ozs7CitrICAgMDY0MztBUkFCSUMgTEVUVEVSIEtBRjtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBDQUY7Ozs7CitsICAgMDY0NDtBUkFCSUMgTEVUVEVSIExBTTtMbzswO1I7Ozs7O047Ozs7OworbSAgIDA2NDU7QVJBQklDIExFVFRFUiBNRUVNO0xvOzA7Ujs7Ozs7Tjs7Ozs7CituICAgMDY0NjtBUkFCSUMgTEVUVEVSIE5PT047TG87MDtSOzs7OztOOzs7OzsKK28gICAwNjRGO0FSQUJJQyBEQU1NQTtNbjszMTtSOzs7OztOO0FSQUJJQyBEQU1NQUg7Ozs7CitwICAgMDYyODtBUkFCSUMgTEVUVEVSIEJFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBCQUE7Ozs7CitxICAgMDY0MjtBUkFCSUMgTEVUVEVSIFFBRjtMbzswO1I7Ozs7O047Ozs7OworciAgIDA2MzE7QVJBQklDIExFVFRFUiBSRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgUkE7Ozs7CitzICAgMDYzMztBUkFCSUMgTEVUVEVSIFNFRU47TG87MDtSOzs7OztOOzs7OzsKK1MgICAwNjM0O0FSQUJJQyBMRVRURVIgU0hFRU47TG87MDtSOzs7OztOOzs7OzsKK3QgICAwNjJBO0FSQUJJQyBMRVRURVIgVEVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFRBQTs7OzsKK1QgICAwNjJCO0FSQUJJQyBMRVRURVIgVEhFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBUSEFBOzs7OworVSAgIDA2NEM7QVJBQklDIERBTU1BVEFOO01uOzI4O1I7Ozs7O047Ozs7OwordSAgIDA2NEY7QVJBQklDIERBTU1BO01uOzMxO1I7Ozs7O047QVJBQklDIERBTU1BSDs7OzsKK3YgICAwNjQxO0FSQUJJQyBMRVRURVIgRkVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEZBOzs7OwordyAgIDA2NDg7QVJBQklDIExFVFRFUiBXQVc7TG87MDtSOzs7OztOOzs7OzsKK3ggICAwNjMzO0FSQUJJQyBMRVRURVIgU0VFTjtMbzswO1I7Ozs7O047Ozs7OworeSAgIDA2NEE7QVJBQklDIExFVFRFUiBZRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgWUE7Ozs7Cit6ICAgMDYzMjtBUkFCSUMgTEVUVEVSIFpBSU47TG87MDtSOzs7OztOOzs7OzsKK1ogICAwNjM4O0FSQUJJQyBMRVRURVIgWkFIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIERIQUg7Ozs7CisKKyovCisKKy8qKgorICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIEtleVJlbWFwIHRvIHByb2R1Y2UgdHJhbnNsaXRlcmF0ZWQgQXJhYmljCisgKiBjaGFyYWN0ZXJzIGZyb20gTGF0aW4tMSBjaGFyYWN0ZXJzLgorICovCisKKy8vIE5PVEU6IHRoaXMgY2xhc3MgZWxpbWluYXRlcyBBcmFiaWMgdm93ZWxzIHdoaWNoIGxvb2sgdWdseQorLy8gaW4gdGhlIGZvbnQgaW4gd2hpY2ggd2UgaGFwcGVuIHRvIGJlIGRlbW8naW5nLiAgSXQncyB0b3RhbGx5CisvLyBib2d1cyBvdGhlcndpc2UuCitmaW5hbCBjbGFzcyBIYWNrQXJhYmljVHJhbnNsaXRlcmF0aW9uIGV4dGVuZHMgS2V5UmVtYXAgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwdWJsaWMgY2hhciByZW1hcChjaGFyIGMpIHsKKworICAgICAgICBzd2l0Y2ggKGMpIHsKKyAgICAgICAgICAgIGNhc2UgJzAnOiByZXR1cm4gJ1x1MDY2MCc7IC8vIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPCisgICAgICAgICAgICBjYXNlICcxJzogcmV0dXJuICdcdTA2NjEnOyAvLyBBUkFCSUMtSU5ESUMgRElHSVQgT05FCisgICAgICAgICAgICBjYXNlICcyJzogcmV0dXJuICdcdTA2NjInOyAvLyBBUkFCSUMtSU5ESUMgRElHSVQgVFdPCisgICAgICAgICAgICBjYXNlICczJzogcmV0dXJuICdcdTA2NjMnOyAvLyBBUkFCSUMtSU5ESUMgRElHSVQgVEhSRUUKKyAgICAgICAgICAgIGNhc2UgJzQnOiByZXR1cm4gJ1x1MDY2NCc7IC8vIEFSQUJJQy1JTkRJQyBESUdJVCBGT1VSCisgICAgICAgICAgICBjYXNlICc1JzogcmV0dXJuICdcdTA2NjUnOyAvLyBBUkFCSUMtSU5ESUMgRElHSVQgRklWRQorICAgICAgICAgICAgY2FzZSAnNic6IHJldHVybiAnXHUwNjY2JzsgLy8gQVJBQklDLUlORElDIERJR0lUIFNJWAorICAgICAgICAgICAgY2FzZSAnNyc6IHJldHVybiAnXHUwNjY3JzsgLy8gQVJBQklDLUlORElDIERJR0lUIFNFVkVOCisgICAgICAgICAgICBjYXNlICc4JzogcmV0dXJuICdcdTA2NjgnOyAvLyBBUkFCSUMtSU5ESUMgRElHSVQgRUlHSFQKKyAgICAgICAgICAgIGNhc2UgJzknOiByZXR1cm4gJ1x1MDY2OSc7IC8vIEFSQUJJQy1JTkRJQyBESUdJVCBOSU5FCisKKyAgICAgICAgICAgIGNhc2UgJyUnOiByZXR1cm4gJ1x1MDY2QSc7IC8vIEFSQUJJQyBQRVJDRU5UIFNJR04KKyAgICAgICAgICAgIC8vIHRoZSBUcmFkaXRpb25hbCBBcmFiaWMgZm9udCBkb2VzIG5vdCBjb250YWluIHRoaXMgY2hhcmFjdGVyCisgICAgICAgICAgICAvLyBjYXNlICcuJzogcmV0dXJuICdcdTA2NkInOyAvLyBBUkFCSUMgREVDSU1BTCBTRVBBUkFUT1IKKyAgICAgICAgICAgIGNhc2UgJywnOiByZXR1cm4gJ1x1MDYwQyc7IC8vIEFSQUJJQyBDT01NQQorICAgICAgICAgICAgY2FzZSAnLSc6IHJldHVybiAnXHUwNjQwJzsgLy8gQVJBQklDIFRBVFdFRUwKKyAgICAgICAgICAgIGNhc2UgJ1wnJzogcmV0dXJuICdcdTA2NTInOyAvLyBBUkFCSUMgU1VLVU4KKyAgICAgICAgICAgIGNhc2UgJyInOiByZXR1cm4gJ1x1MDY1MSc7IC8vIEFSQUJJQyBTSEFEREEKKyAgICAgICAgICAgIGNhc2UgJzsnOiByZXR1cm4gJ1x1MDYxQic7IC8vIEFSQUJJQyBTRU1JQ09MT04KKyAgICAgICAgICAgIGNhc2UgJz8nOiByZXR1cm4gJ1x1MDYxRic7IC8vIEFSQUJJQyBRVUVTVElPTiBNQVJLCisKKyAgICAgICAgICAgIGNhc2UgJ2EnOiByZXR1cm4gJ1x1MDYyNyc7IC8vIEFSQUJJQyBMRVRURVIgQUxFRgorICAgICAgICAgICAgY2FzZSAnQSc6IHJldHVybiAnXHUwNjM5JzsgLy8gQVJBQklDIExFVFRFUiBBSU4KKyAgICAgICAgICAgIGNhc2UgJ2InOiByZXR1cm4gJ1x1MDYyOCc7IC8vIEFSQUJJQyBMRVRURVIgQkVICisgICAgICAgICAgICBjYXNlICdCJzogcmV0dXJuICdcdTA2MjgnOyAvLyBBUkFCSUMgTEVUVEVSIEJFSAorICAgICAgICAgICAgY2FzZSAnYyc6IHJldHVybiAnXHUwNjM1JzsgLy8gQVJBQklDIExFVFRFUiBTQUQKKyAgICAgICAgICAgIGNhc2UgJ0MnOiByZXR1cm4gJ1x1MDYzNSc7IC8vIEFSQUJJQyBMRVRURVIgU0FECisgICAgICAgICAgICBjYXNlICdkJzogcmV0dXJuICdcdTA2MkYnOyAvLyBBUkFCSUMgTEVUVEVSIERBTAorICAgICAgICAgICAgY2FzZSAnRCc6IHJldHVybiAnXHUwNjMwJzsgLy8gQVJBQklDIExFVFRFUiBUSEFMCisgICAgICAgICAgICBjYXNlICdlJzogLy9yZXR1cm4gJ1x1MDY0RSc7IC8vIEFSQUJJQyBGQVRIQQorICAgICAgICAgICAgY2FzZSAnRSc6IC8vcmV0dXJuICdcdTA2NEInOyAvLyBBUkFCSUMgRkFUSEFUQU4KKyAgICAgICAgICAgIGNhc2UgJ2YnOiByZXR1cm4gJ1x1MDY0MSc7IC8vIEFSQUJJQyBMRVRURVIgRkVICisgICAgICAgICAgICBjYXNlICdGJzogcmV0dXJuICdcdTA2NDEnOyAvLyBBUkFCSUMgTEVUVEVSIEZFSAorICAgICAgICAgICAgY2FzZSAnZyc6IHJldHVybiAnXHUwNjNBJzsgLy8gQVJBQklDIExFVFRFUiBHSEFJTgorICAgICAgICAgICAgY2FzZSAnRyc6IHJldHVybiAnXHUwNjNBJzsgLy8gQVJBQklDIExFVFRFUiBHSEFJTgorICAgICAgICAgICAgY2FzZSAnaCc6IHJldHVybiAnXHUwNjJEJzsgLy8gQVJBQklDIExFVFRFUiBIQUgKKyAgICAgICAgICAgIGNhc2UgJ0gnOiByZXR1cm4gJ1x1MDY0Nyc7IC8vIEFSQUJJQyBMRVRURVIgSEVICisgICAgICAgICAgICBjYXNlICdpJzogLy9yZXR1cm4gJ1x1MDY1MCc7IC8vIEFSQUJJQyBLQVNSQQorICAgICAgICAgICAgY2FzZSAnSSc6IC8vcmV0dXJuICdcdTA2NEQnOyAvLyBBUkFCSUMgS0FTUkFUQU4KKyAgICAgICAgICAgIGNhc2UgJ2onOiByZXR1cm4gJ1x1MDYyQyc7IC8vIEFSQUJJQyBMRVRURVIgSkVFTQorICAgICAgICAgICAgY2FzZSAnSic6IHJldHVybiAnXHUwNjJDJzsgLy8gQVJBQklDIExFVFRFUiBKRUVNCisgICAgICAgICAgICBjYXNlICdrJzogcmV0dXJuICdcdTA2NDMnOyAvLyBBUkFCSUMgTEVUVEVSIEtBRgorICAgICAgICAgICAgY2FzZSAnSyc6IHJldHVybiAnXHUwNjJFJzsgLy8gQVJBQklDIExFVFRFUiBLSEFICisgICAgICAgICAgICBjYXNlICdsJzogcmV0dXJuICdcdTA2NDQnOyAvLyBBUkFCSUMgTEVUVEVSIExBTQorICAgICAgICAgICAgY2FzZSAnTCc6IHJldHVybiAnXHUwNjQ0JzsgLy8gQVJBQklDIExFVFRFUiBMQU0KKyAgICAgICAgICAgIGNhc2UgJ20nOiByZXR1cm4gJ1x1MDY0NSc7IC8vIEFSQUJJQyBMRVRURVIgTUVFTQorICAgICAgICAgICAgY2FzZSAnTSc6IHJldHVybiAnXHUwNjQ1JzsgLy8gQVJBQklDIExFVFRFUiBNRUVNCisgICAgICAgICAgICBjYXNlICduJzogcmV0dXJuICdcdTA2NDYnOyAvLyBBUkFCSUMgTEVUVEVSIE5PT04KKyAgICAgICAgICAgIGNhc2UgJ04nOiByZXR1cm4gJ1x1MDY0Nic7IC8vIEFSQUJJQyBMRVRURVIgTk9PTgorICAgICAgICAgICAgY2FzZSAnbyc6IC8vcmV0dXJuICdcdTA2NEYnOyAvLyBBUkFCSUMgREFNTUEKKyAgICAgICAgICAgIGNhc2UgJ08nOiAvL3JldHVybiAnXHUwNjRGJzsgLy8gQVJBQklDIERBTU1BCisgICAgICAgICAgICBjYXNlICdwJzogcmV0dXJuICdcdTA2MjgnOyAvLyBBUkFCSUMgTEVUVEVSIEJFSAorICAgICAgICAgICAgY2FzZSAnUCc6IHJldHVybiAnXHUwNjI4JzsgLy8gQVJBQklDIExFVFRFUiBCRUgKKyAgICAgICAgICAgIGNhc2UgJ3EnOiByZXR1cm4gJ1x1MDY0Mic7IC8vIEFSQUJJQyBMRVRURVIgUUFGCisgICAgICAgICAgICBjYXNlICdRJzogcmV0dXJuICdcdTA2NDInOyAvLyBBUkFCSUMgTEVUVEVSIFFBRgorICAgICAgICAgICAgY2FzZSAncic6IHJldHVybiAnXHUwNjMxJzsgLy8gQVJBQklDIExFVFRFUiBSRUgKKyAgICAgICAgICAgIGNhc2UgJ1InOiByZXR1cm4gJ1x1MDYzMSc7IC8vIEFSQUJJQyBMRVRURVIgUkVICisgICAgICAgICAgICBjYXNlICdzJzogcmV0dXJuICdcdTA2MzMnOyAvLyBBUkFCSUMgTEVUVEVSIFNFRU4KKyAgICAgICAgICAgIGNhc2UgJ1MnOiByZXR1cm4gJ1x1MDYzNCc7IC8vIEFSQUJJQyBMRVRURVIgU0hFRU4KKyAgICAgICAgICAgIGNhc2UgJ3QnOiByZXR1cm4gJ1x1MDYyQSc7IC8vIEFSQUJJQyBMRVRURVIgVEVICisgICAgICAgICAgICBjYXNlICdUJzogcmV0dXJuICdcdTA2MkInOyAvLyBBUkFCSUMgTEVUVEVSIFRIRUgKKyAgICAgICAgICAgIGNhc2UgJ1UnOiAvL3JldHVybiAnXHUwNjRDJzsgLy8gQVJBQklDIERBTU1BVEFOCisgICAgICAgICAgICBjYXNlICd1JzogLy9yZXR1cm4gJ1x1MDY0Ric7IC8vIEFSQUJJQyBEQU1NQQorICAgICAgICAgICAgY2FzZSAndic6IHJldHVybiAnXHUwNjQxJzsgLy8gQVJBQklDIExFVFRFUiBGRUgKKyAgICAgICAgICAgIGNhc2UgJ1YnOiByZXR1cm4gJ1x1MDY0MSc7IC8vIEFSQUJJQyBMRVRURVIgRkVICisgICAgICAgICAgICBjYXNlICd3JzogcmV0dXJuICdcdTA2NDgnOyAvLyBBUkFCSUMgTEVUVEVSIFdBVworICAgICAgICAgICAgY2FzZSAnVyc6IHJldHVybiAnXHUwNjQ4JzsgLy8gQVJBQklDIExFVFRFUiBXQVcKKyAgICAgICAgICAgIGNhc2UgJ3gnOiByZXR1cm4gJ1x1MDYzMyc7IC8vIEFSQUJJQyBMRVRURVIgU0VFTgorICAgICAgICAgICAgY2FzZSAnWCc6IHJldHVybiAnXHUwNjMzJzsgLy8gQVJBQklDIExFVFRFUiBTRUVOCisgICAgICAgICAgICBjYXNlICd5JzogcmV0dXJuICdcdTA2NEEnOyAvLyBBUkFCSUMgTEVUVEVSIFlFSAorICAgICAgICAgICAgY2FzZSAnWSc6IHJldHVybiAnXHUwNjRBJzsgLy8gQVJBQklDIExFVFRFUiBZRUgKKyAgICAgICAgICAgIGNhc2UgJ3onOiByZXR1cm4gJ1x1MDYzMic7IC8vIEFSQUJJQyBMRVRURVIgWkFJTgorICAgICAgICAgICAgY2FzZSAnWic6IHJldHVybiAnXHUwNjM4JzsgLy8gQVJBQklDIExFVFRFUiBaQUgKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9IZWJyZXdUcmFuc2xpdGVyYXRpb24uamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9IZWJyZXdUcmFuc2xpdGVyYXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jYTY3YmVhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0hlYnJld1RyYW5zbGl0ZXJhdGlvbi5qYXZhCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEhlYnJld1RyYW5zbGl0ZXJhdGlvbi5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUxOjIzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCisvKgorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgsIEFsbCBSaWdodHMgUmVzZXJ2ZWQKKyAqLworCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCisvKioKKyAqIFRoaXMgY2xhc3MgaW1wbGVtZW50cyBLZXlSZW1hcCB0byBwcm9kdWNlIHRyYW5zbGl0ZXJhdGVkIEhlYnJldworICogY2hhcmFjdGVycyBmcm9tIExhdGluLTEgY2hhcmFjdGVycy4KKyAqLworCitmaW5hbCBjbGFzcyBIZWJyZXdUcmFuc2xpdGVyYXRpb24gZXh0ZW5kcyBLZXlSZW1hcCB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHB1YmxpYyBjaGFyIHJlbWFwKGNoYXIgYykgeworCisgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICAgICAgY2FzZSAnYSc6IHJldHVybiAnXHUwNUQwJzsgLy8gSEVCUkVXIExFVFRFUiBBTEVGCisgICAgICAgICAgICBjYXNlICdBJzogcmV0dXJuICdcdTA1RTInOyAvLyBIRUJSRVcgTEVUVEVSIEFZSU4KKyAgICAgICAgICAgIGNhc2UgJ2InOiByZXR1cm4gJ1x1MDVEMSc7IC8vIEhFQlJFVyBMRVRURVIgQkVUCisgICAgICAgICAgICBjYXNlICdCJzogcmV0dXJuICdcdTA1RDEnOyAvLyBIRUJSRVcgTEVUVEVSIEJFVAorICAgICAgICAgICAgY2FzZSAnYyc6IHJldHVybiAnXHUwNUU2JzsgLy8gSEVCUkVXIExFVFRFUiBUU0FESQorICAgICAgICAgICAgY2FzZSAnQyc6IHJldHVybiAnXHUwNUU1JzsgLy8gSEVCUkVXIExFVFRFUiBGSU5BTCBUU0FESQorICAgICAgICAgICAgY2FzZSAnZCc6IHJldHVybiAnXHUwNUQzJzsgLy8gSEVCUkVXIExFVFRFUiBEQUxFVAorICAgICAgICAgICAgY2FzZSAnRCc6IHJldHVybiAnXHUwNUJDJzsgLy8gSEVCUkVXIFBPSU5UIERBR0VTSAorICAgICAgICAgICAgY2FzZSAnZSc6IHJldHVybiAnXHUwNUI1JzsgLy8gSEVCUkVXIFBPSU5UIFRTRVJFCisgICAgICAgICAgICBjYXNlICdFJzogcmV0dXJuICdcdTA1QjYnOyAvLyBIRUJSRVcgUE9JTlQgU0VHT0wKKyAgICAgICAgICAgIGNhc2UgJ2YnOiByZXR1cm4gJ1x1MDVFNCc7IC8vIEhFQlJFVyBMRVRURVIgUEUKKyAgICAgICAgICAgIGNhc2UgJ0YnOiByZXR1cm4gJ1x1MDVFNCc7IC8vIEhFQlJFVyBMRVRURVIgUEUKKyAgICAgICAgICAgIGNhc2UgJ2cnOiByZXR1cm4gJ1x1MDVEMic7IC8vIEhFQlJFVyBMRVRURVIgR0lNRUwKKyAgICAgICAgICAgIGNhc2UgJ0cnOiByZXR1cm4gJ1x1MDVEMic7IC8vIEhFQlJFVyBMRVRURVIgR0lNRUwKKyAgICAgICAgICAgIGNhc2UgJ2gnOiByZXR1cm4gJ1x1MDVENCc7IC8vIEhFQlJFVyBMRVRURVIgSEUKKyAgICAgICAgICAgIGNhc2UgJ0gnOiByZXR1cm4gJ1x1MDVENyc7IC8vIEhFQlJFVyBMRVRURVIgSEVUCisgICAgICAgICAgICBjYXNlICdpJzogcmV0dXJuICdcdTA1RDknOyAvLyBIRUJSRVcgTEVUVEVSIFlPRAorICAgICAgICAgICAgY2FzZSAnSSc6IHJldHVybiAnXHUwNUI0JzsgLy8gSEVCUkVXIFBPSU5UIEhJUklRCisgICAgICAgICAgICBjYXNlICdqJzogcmV0dXJuICdcdTA1RDknOyAvLyBIRUJSRVcgTEVUVEVSIFlPRAorICAgICAgICAgICAgY2FzZSAnSic6IHJldHVybiAnXHUwNUMxJzsgLy8gSEVCUkVXIFBPSU5UIFNISU4gRE9UCisgICAgICAgICAgICBjYXNlICdrJzogcmV0dXJuICdcdTA1REInOyAvLyBIRUJSRVcgTEVUVEVSIEtBRgorICAgICAgICAgICAgY2FzZSAnSyc6IHJldHVybiAnXHUwNURBJzsgLy8gSEVCUkVXIExFVFRFUiBGSU5BTCBLQUYKKyAgICAgICAgICAgIGNhc2UgJ2wnOiByZXR1cm4gJ1x1MDVEQyc7IC8vIEhFQlJFVyBMRVRURVIgTEFNRUQKKyAgICAgICAgICAgIGNhc2UgJ0wnOiByZXR1cm4gJ1x1MDVEQyc7IC8vIEhFQlJFVyBMRVRURVIgTEFNRUQKKyAgICAgICAgICAgIGNhc2UgJ20nOiByZXR1cm4gJ1x1MDVERSc7IC8vIEhFQlJFVyBMRVRURVIgTUVNCisgICAgICAgICAgICBjYXNlICdNJzogcmV0dXJuICdcdTA1REQnOyAvLyBIRUJSRVcgTEVUVEVSIEZJTkFMIE1FTQorICAgICAgICAgICAgY2FzZSAnbic6IHJldHVybiAnXHUwNUUwJzsgLy8gSEVCUkVXIExFVFRFUiBOVU4KKyAgICAgICAgICAgIGNhc2UgJ04nOiByZXR1cm4gJ1x1MDVERic7IC8vIEhFQlJFVyBMRVRURVIgRklOQUwgTlVOCisgICAgICAgICAgICBjYXNlICdvJzogcmV0dXJuICdcdTA1RDUnOyAvLyBIRUJSRVcgTEVUVEVSIFZBVgorICAgICAgICAgICAgY2FzZSAnTyc6IHJldHVybiAnXHUwNUI5JzsgLy8gSEVCUkVXIFBPSU5UIEhPTEFNCisgICAgICAgICAgICBjYXNlICdwJzogcmV0dXJuICdcdTA1RTQnOyAvLyBIRUJSRVcgTEVUVEVSIFBFCisgICAgICAgICAgICBjYXNlICdQJzogcmV0dXJuICdcdTA1RTMnOyAvLyBIRUJSRVcgTEVUVEVSIEZJTkFMIFBFCisgICAgICAgICAgICBjYXNlICdxJzogcmV0dXJuICdcdTA1RTcnOyAvLyBIRUJSRVcgTEVUVEVSIFFPRgorICAgICAgICAgICAgY2FzZSAnUSc6IHJldHVybiAnXHUwNUU3JzsgLy8gSEVCUkVXIExFVFRFUiBRT0YKKyAgICAgICAgICAgIGNhc2UgJ3InOiByZXR1cm4gJ1x1MDVFOCc7IC8vIEhFQlJFVyBMRVRURVIgUkVTSAorICAgICAgICAgICAgY2FzZSAnUic6IHJldHVybiAnXHUwNUJGJzsgLy8gSEVCUkVXIFBPSU5UIFJBRkUKKyAgICAgICAgICAgIGNhc2UgJ3MnOiByZXR1cm4gJ1x1MDVFOSc7IC8vIEhFQlJFVyBMRVRURVIgU0hJTgorICAgICAgICAgICAgY2FzZSAnUyc6IHJldHVybiAnXHUwNUUxJzsgLy8gSEVCUkVXIExFVFRFUiBTQU1FS0gKKyAgICAgICAgICAgIGNhc2UgJ3QnOiByZXR1cm4gJ1x1MDVFQSc7IC8vIEhFQlJFVyBMRVRURVIgVEFWCisgICAgICAgICAgICBjYXNlICdUJzogcmV0dXJuICdcdTA1RDgnOyAvLyBIRUJSRVcgTEVUVEVSIFRFVAorICAgICAgICAgICAgY2FzZSAndSc6IHJldHVybiAnXHUwNUQ1JzsgLy8gSEVCUkVXIExFVFRFUiBWQVYKKyAgICAgICAgICAgIGNhc2UgJ1UnOiByZXR1cm4gJ1x1MDVCQic7IC8vIEhFQlJFVyBQT0lOVCBRVUJVVFMKKyAgICAgICAgICAgIGNhc2UgJ3YnOiByZXR1cm4gJ1x1MDVENSc7IC8vIEhFQlJFVyBMRVRURVIgVkFWCisgICAgICAgICAgICBjYXNlICdWJzogcmV0dXJuICdcdTA1QjcnOyAvLyBIRUJSRVcgUE9JTlQgUEFUQUgKKyAgICAgICAgICAgIGNhc2UgJ3cnOiByZXR1cm4gJ1x1MDVENSc7IC8vIEhFQlJFVyBMRVRURVIgVkFWCisgICAgICAgICAgICBjYXNlICdXJzogcmV0dXJuICdcdTA1QjgnOyAvLyBIRUJSRVcgUE9JTlQgUUFNQVRTCisgICAgICAgICAgICBjYXNlICd4JzogcmV0dXJuICdcdTA1RTYnOyAvLyBIRUJSRVcgTEVUVEVSIFRTQURJCisgICAgICAgICAgICBjYXNlICdYJzogcmV0dXJuICdcdTA1RTUnOyAvLyBIRUJSRVcgTEVUVEVSIEZJTkFMIFRTQURJCisgICAgICAgICAgICBjYXNlICd5JzogcmV0dXJuICdcdTA1RDknOyAvLyBIRUJSRVcgTEVUVEVSIFlPRAorICAgICAgICAgICAgY2FzZSAnWSc6IHJldHVybiAnXHUwNUQ5JzsgLy8gSEVCUkVXIExFVFRFUiBZT0QKKyAgICAgICAgICAgIGNhc2UgJ3onOiByZXR1cm4gJ1x1MDVENic7IC8vIEhFQlJFVyBMRVRURVIgWkFZSU4KKyAgICAgICAgICAgIGNhc2UgJ1onOiByZXR1cm4gJ1x1MDVDMic7IC8vIEhFQlJFVyBQT0lOVCBTSU4gRE9UCisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gYzsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvSXNyYWVsTmlrdWRLZXlib2FyZC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0lzcmFlbE5pa3VkS2V5Ym9hcmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43ZTBiMWE1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0lzcmFlbE5pa3VkS2V5Ym9hcmQuamF2YQpAQCAtMCwwICsxLDg0IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBJc3JhZWxOaWt1ZEtleWJvYXJkLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8qCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OCwgQWxsIFJpZ2h0cyBSZXNlcnZlZAorICovCisKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5LZXlFdmVudDsKKworLyoqCisgKiBUaGlzIGNsYXNzIHNpbXVsYXRlcyBhIE5pa3VkIGtleWJvYXJkIG9uIGEgVVMtRW5nbGlzaAorICoga2V5Ym9hcmQuICBJdCBpcyB2ZXJ5IG11Y2ggYSB3b3JrIGluIHByb2dyZXNzLgorICovCisKK2ZpbmFsIGNsYXNzIElzcmFlbE5pa3VkS2V5Ym9hcmQgZXh0ZW5kcyBLZXlSZW1hcCB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHB1YmxpYyBjaGFyIHJlbWFwKGNoYXIgYykgeworCisgICAgICAgIHN3aXRjaChjKSB7CisgICAgICAgICAgICBjYXNlICd0JzogcmV0dXJuICdcdTA1RDAnOyAvLyBhbGVmCisgICAgICAgICAgICBjYXNlICdjJzogcmV0dXJuICdcdTA1RDEnOyAvLyBiZXQKKyAgICAgICAgICAgIGNhc2UgJ2QnOiByZXR1cm4gJ1x1MDVEMic7IC8vIGdpbWVsCisgICAgICAgICAgICBjYXNlICdzJzogcmV0dXJuICdcdTA1RDMnOyAvLyBkYWxldAorICAgICAgICAgICAgY2FzZSAndic6IHJldHVybiAnXHUwNUQ0JzsgLy8gaGUKKyAgICAgICAgICAgIGNhc2UgJ3UnOiByZXR1cm4gJ1x1MDVENSc7IC8vIHZhdgorICAgICAgICAgICAgY2FzZSAneic6IHJldHVybiAnXHUwNUQ2JzsgLy8gemF5aW4KKyAgICAgICAgICAgIGNhc2UgJ2onOiByZXR1cm4gJ1x1MDVENyc7IC8vIGhldAorICAgICAgICAgICAgY2FzZSAneSc6IHJldHVybiAnXHUwNUQ4JzsgLy8gdGV0CisgICAgICAgICAgICBjYXNlICdoJzogcmV0dXJuICdcdTA1RDknOyAvLyB5b2QKKyAgICAgICAgICAgIGNhc2UgJ2wnOiByZXR1cm4gJ1x1MDVEQSc7IC8vIGZpbmFsIGthZgorICAgICAgICAgICAgY2FzZSAnZic6IHJldHVybiAnXHUwNURCJzsgLy8ga2FmCisgICAgICAgICAgICBjYXNlICdrJzogcmV0dXJuICdcdTA1REMnOyAvLyBsYW1lZAorICAgICAgICAgICAgY2FzZSAnbyc6IHJldHVybiAnXHUwNUREJzsgLy8gZmluYWwgbWVtCisgICAgICAgICAgICBjYXNlICduJzogcmV0dXJuICdcdTA1REUnOyAvLyBtZW0KKyAgICAgICAgICAgIGNhc2UgJ2knOiByZXR1cm4gJ1x1MDVERic7IC8vIGZpbmFsIG51bgorICAgICAgICAgICAgY2FzZSAnYic6IHJldHVybiAnXHUwNUUwJzsgLy8gbnVuCisgICAgICAgICAgICBjYXNlICd4JzogcmV0dXJuICdcdTA1RTEnOyAvLyBzYW1lY2gKKyAgICAgICAgICAgIGNhc2UgJ2cnOiByZXR1cm4gJ1x1MDVFMic7IC8vIGF5aW4KKyAgICAgICAgICAgIGNhc2UgJzsnOiByZXR1cm4gJ1x1MDVFMyc7IC8vIGZpbmFsIHBlCisgICAgICAgICAgICBjYXNlICdwJzogcmV0dXJuICdcdTA1RTQnOyAvLyBwZQorICAgICAgICAgICAgY2FzZSAnLic6IHJldHVybiAnXHUwNUU1JzsgLy8gZmluYWwgdHNhZGkKKyAgICAgICAgICAgIGNhc2UgJ20nOiByZXR1cm4gJ1x1MDVFNic7IC8vIHRzYWRpCisgICAgICAgICAgICBjYXNlICdlJzogcmV0dXJuICdcdTA1RTcnOyAvLyBxb2YKKyAgICAgICAgICAgIGNhc2UgJ3InOiByZXR1cm4gJ1x1MDVFOCc7IC8vIHJlc2gKKyAgICAgICAgICAgIGNhc2UgJ2EnOiByZXR1cm4gJ1x1MDVFOSc7IC8vIHNoaW4KKyAgICAgICAgICAgIGNhc2UgJywnOiByZXR1cm4gJ1x1MDVFQSc7IC8vIHRhdgorICAgICAgICAgICAgY2FzZSAndyc6IHJldHVybiAnLCc7CisgICAgICAgICAgICBjYXNlICdxJzogcmV0dXJuICcvJzsKKyAgICAgICAgICAgIGNhc2UgJy8nOiByZXR1cm4gJy4nOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGM7CisgICAgfQorCisgICAgcHVibGljIGNoYXIgcmVtYXAoS2V5RXZlbnQga2V5RXZlbnQpIHsKKworICAgICAgICAvLyAgTm90ZTogIG9ubHkgb25lIGN0cmwgY2FzZSBub3cgKGN0cmwtLyAtPiBkYWdlc2gpLgorICAgICAgICAvLyAgQmV0dGVyIGltcGxlbWVudGF0aW9uIHdpbGwgYmUgbmVlZGVkIGZvciBtb3JlIGNhc2VzLgorCisgICAgICAgIGlmIChrZXlFdmVudC5pc0NvbnRyb2xEb3duKCkpIHsKKyAgICAgICAgICAgIGlmIChrZXlFdmVudC5nZXRLZXlDb2RlKCkgPT0gS2V5RXZlbnQuVktfU0xBU0gpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gJ1x1MDVCQyc7IC8vIGRhZ2VzaAorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlbWFwKGtleUV2ZW50LmdldEtleUNoYXIoKSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9KVGV4dFBhbmVsLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvSlRleHRQYW5lbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmZhMTM2YWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvSlRleHRQYW5lbC5qYXZhCkBAIC0wLDAgKzEsNTgyIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBKVGV4dFBhbmVsLmphdmEsdiAkICRSZXZpc2lvbjogMS4zICQgJERhdGU6IDIwMDEvMDMvMDcgMDI6Mzk6MDEgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBqYXZhLmF3dC5Cb3JkZXJMYXlvdXQ7CitpbXBvcnQgamF2YS5hd3QuQ29sb3I7CitpbXBvcnQgamF2YS5hd3QuR3JhcGhpY3M7CitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbjsKKworaW1wb3J0IGphdmF4LnN3aW5nLkpQYW5lbDsKK2ltcG9ydCBqYXZheC5zd2luZy5KQ29tcG9uZW50OworaW1wb3J0IGphdmF4LnN3aW5nLkpTY3JvbGxCYXI7CitpbXBvcnQgamF2YXguc3dpbmcuU3dpbmdVdGlsaXRpZXM7CisKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuQ2xpcGJvYXJkOworCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlTW9kaWZpZXI7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlZFRleHQ7CisKKy8qKgorICogSlRleHRQYW5lbCBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiBNVGV4dFBhbmVsIGluIGEgU3dpbmcgSlBhbmVsLgorICogQHNlZSBNVGV4dFBhbmVsCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBKVGV4dFBhbmVsIGV4dGVuZHMgSlBhbmVsIGltcGxlbWVudHMgTVRleHRQYW5lbCB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgQVRleHRQYW5lbEltcGwgZkltcGw7CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgVGV4dFBhbmVsU2V0dGluZ3MgaW5zdGFuY2Ugd2l0aCBhbGwgc2V0dGluZ3Mgc2V0CisgICAgICogdG8gdGhlIGRlZmF1bHQgdmFsdWVzLiAgQ2xpZW50cyBjYW4gbW9kaWZ5IHRoaXMgb2JqZWN0OworICAgICAqIG1vZGlmaWNhdGlvbnMgd2lsbCBub3QgYWZmZWN0IHRoZSBkZWZhdWx0IHZhbHVlcy4KKyAgICAgKiBAcmV0dXJuIGEgVGV4dFBhbmVsU2V0dGluZ3MgaW5zdGFuY2Ugc2V0IHRvIGRlZmF1bHQgdmFsdWVzCisgICAgICogQHNlZSBUZXh0UGFuZWxTZXR0aW5ncworICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVGV4dFBhbmVsU2V0dGluZ3MgZ2V0RGVmYXVsdFNldHRpbmdzKCkgeworCisgICAgICAgIHJldHVybiBBVGV4dFBhbmVsSW1wbC5nZXREZWZhdWx0U2V0dGluZ3MoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgSlRleHRQYW5lbCB3aXRoIHRoZSBkZWZhdWx0IHNldHRpbmdzLgorICAgICAqIEBwYXJhbSBpbml0aWFsVGV4dCB0aGUgdGV4dCBkb2N1bWVudC4gIElmIG51bGwgZG9jdW1lbnQgdGV4dCBpcyBlbXB0eS4KKyAgICAgKiBAcGFyYW0gY2xpcGJvYXJkIHRoZSBjbGlwYm9hcmQgdG8gdXNlIGZvciBjdXQsIGNvcHksIGFuZCBwYXN0ZQorICAgICAqICBvcGVyYXRpb25zLiAgSWYgbnVsbCB0aGlzIHBhbmVsIHdpbGwgdXNlIGEgcHJpdmF0ZSBjbGlwYm9hcmQuCisgICAgICovCisgICAgcHVibGljIEpUZXh0UGFuZWwoTUNvbnN0VGV4dCBpbml0aWFsVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuQ2xpcGJvYXJkIGNsaXBib2FyZCkgeworCisgICAgICAgIHRoaXMoQVRleHRQYW5lbEltcGwuZmdEZWZhdWx0U2V0dGluZ3MsIGluaXRpYWxUZXh0LCBjbGlwYm9hcmQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIG5ldyBKVGV4dFBhbmVsLgorICAgICAqIEBwYXJhbSBzZXR0aW5ncyB0aGUgc2V0dGluZ3MgZm9yIHRoaXMgSlRleHRQYW5lbAorICAgICAqIEBwYXJhbSBpbml0aWFsVGV4dCB0aGUgdGV4dCBkb2N1bWVudC4gIElmIG51bGwgZG9jdW1lbnQgdGV4dCBpcyBlbXB0eS4KKyAgICAgKiBAcGFyYW0gY2xpcGJvYXJkIHRoZSBjbGlwYm9hcmQgdG8gdXNlIGZvciBjdXQsIGNvcHksIGFuZCBwYXN0ZQorICAgICAqICBvcGVyYXRpb25zLiAgSWYgbnVsbCB0aGlzIHBhbmVsIHdpbGwgdXNlIGEgcHJpdmF0ZSBjbGlwYm9hcmQuCisgICAgICogQHNlZSBUZXh0UGFuZWxTZXR0aW5ncworICAgICAqLworICAgIHB1YmxpYyBKVGV4dFBhbmVsKFRleHRQYW5lbFNldHRpbmdzIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgIE1Db25zdFRleHQgaW5pdGlhbFRleHQsCisgICAgICAgICAgICAgICAgICAgICAgQ2xpcGJvYXJkIGNsaXBib2FyZCkgeworICAgICAgICAKKyAgICAgICAgc3VwZXIoZmFsc2UpOworICAgICAgICAKKyAgICAgICAgSlNjcm9sbEJhciBob3J6U2IgPSBudWxsOworICAgICAgICBKU2Nyb2xsQmFyIHZlcnRTYiA9IG51bGw7CisgICAgICAgIAorICAgICAgICBpZiAoc2V0dGluZ3MuZ2V0U2Nyb2xsYWJsZSgpKSB7CisKKyAgICAgICAgICAgIHNldExheW91dChuZXcgU2Nyb2xsQmFyTGF5b3V0KCkpOworCisgICAgICAgICAgICBib29sZWFuIHNjcm9sbEJhcnNWaXNpYmxlID0gc2V0dGluZ3MuZ2V0U2Nyb2xsQmFyc1Zpc2libGUoKTsKKworICAgICAgICAgICAgaWYgKHNjcm9sbEJhcnNWaXNpYmxlKSB7CisgICAgICAgICAgICAgICAgaG9yelNiID0gbmV3IEpTY3JvbGxCYXIoSlNjcm9sbEJhci5IT1JJWk9OVEFMKTsKKyAgICAgICAgICAgICAgICB2ZXJ0U2IgPSBuZXcgSlNjcm9sbEJhcihKU2Nyb2xsQmFyLlZFUlRJQ0FMKTsKKyAgICAgICAgICAgICAgICBhZGQoIlNvdXRoIiwgaG9yelNiKTsKKyAgICAgICAgICAgICAgICBhZGQoIkVhc3QiLCB2ZXJ0U2IpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc2V0TGF5b3V0KG5ldyBCb3JkZXJMYXlvdXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFJ1blN0cmF0ZWd5IHJ1blN0cmF0ZWd5ID0gbmV3IFJ1blN0cmF0ZWd5KCkgeworICAgICAgICAgICAgdm9pZCBkb0l0KFJ1bm5hYmxlIHIpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBTd2luZ1V0aWxpdGllcy5pbnZva2VBbmRXYWl0KHIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXRjaChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIG9wZXJhdGlvbiB3YXMgaW50ZXJydXB0ZWQsIHRoZW4gY2xpZW50CisgICAgICAgICAgICAgICAgICAgIC8vIGNhbGxlZCB3YWl0IG9yIHNsZWVwIChvciBzb21ldGhpbmcgc2ltaWxhcikKKyAgICAgICAgICAgICAgICAgICAgLy8gd2hpY2ggaXMgaW5hcHByb3ByaWF0ZSBmb3IgYSBjbGllbnQgb2YgdGhpcworICAgICAgICAgICAgICAgICAgICAvLyBjbGFzcy4gIFJldGhyb3cgZXJyb3IgYW5kIGxldCBjbGllbnQgaGFuZGxlIGl0LgorICAgICAgICAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkludGVycnVwdGVkIGluIFJ1blN0cmF0ZWd5OiAiICsgZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhdGNoKEludm9jYXRpb25UYXJnZXRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAvLyBXaG8ga25vd3MgaG93IHRoaXMgb25lIGhhcHBlbnMuLi4KKyAgICAgICAgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIGluIFJ1blN0cmF0ZWd5OiAiICsgZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgZkltcGwgPSBuZXcgQVRleHRQYW5lbEltcGwocnVuU3RyYXRlZ3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcGJvYXJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3J6U2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnRTYik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBmaW5hbCBGYWtlQ29tcG9uZW50IHRleHRDb21wb25lbnQgPSBmSW1wbC5nZXRUZXh0Q29tcG9uZW50KCk7CisgICAgICAgIAorICAgICAgICBKQ29tcG9uZW50IHRleHRIb3N0ID0gbmV3IEpDb21wb25lbnQoKSB7CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGV4dENvbXBvbmVudC5zZXRIb3N0KHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcHVibGljIHZvaWQgYWRkTm90aWZ5KCkgeworICAgICAgICAgICAgICAgIHN1cGVyLmFkZE5vdGlmeSgpOworICAgICAgICAgICAgICAgIHRleHRDb21wb25lbnQuYWRkTm90aWZ5KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBwYWludChHcmFwaGljcyBnKSB7CisgICAgICAgICAgICAgICAgdGV4dENvbXBvbmVudC5wYWludChnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgCisgICAgICAgIGFkZCgiQ2VudGVyIiwgdGV4dEhvc3QpOworCisgICAgICAgIHRleHRIb3N0LnJlcXVlc3RGb2N1cygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFkZCB0aGUgZ2l2ZW4gVGV4dFBhbmVsTGlzdGVuZXIgdG8gdGhlIGxpc3RlbmVycyB3aGljaCB3aWxsCisgICAgICogcmVjZWl2ZSB1cGRhdGUgbm90aWZpY2F0aW9ucyBmcm9tIHRoaXMgSlRleHRQYW5lbC4KKyAgICAgKiBAcGFyYW0gbGlzdGVuZXIgdGhlIGxpc3RlbmVyIHRvIGFkZAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFkZExpc3RlbmVyKFRleHRQYW5lbExpc3RlbmVyIGxpc3RlbmVyKSB7CisKKyAgICAgICAgZkltcGwuYWRkTGlzdGVuZXIobGlzdGVuZXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbW92ZSB0aGUgZ2l2ZW4gVGV4dFBhbmVsTGlzdGVuZXIgZnJvbSB0aGUgbGlzdGVuZXJzIHdoaWNoIHdpbGwKKyAgICAgKiByZWNlaXZlIHVwZGF0ZSBub3RpZmljYXRpb25zIGZyb20gdGhpcyBKVGV4dFBhbmVsLgorICAgICAqIEBwYXJhbSBsaXN0ZW5lciB0aGUgbGlzdGVuZXIgdG8gcmVtb3ZlCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVtb3ZlTGlzdGVuZXIoVGV4dFBhbmVsTGlzdGVuZXIgbGlzdGVuZXIpIHsKKworICAgICAgICBmSW1wbC5yZW1vdmVMaXN0ZW5lcihsaXN0ZW5lcik7CisgICAgfQorCisvLz09PT09PT09PT09PQorLy8gVGV4dCBBY2Nlc3MKKy8vPT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGRvY3VtZW50IHRvIDx0dD5uZXdUZXh0PC90dD4uICBUaGlzIG9wZXJhdGlvbgorICAgICAqIG1vZGlmaWVzIHRoZSB0ZXh0IGluIHRoZSBKVGV4dFBhbmVsLiAgSXQgZG9lcyBub3QgbW9kaWZ5IG9yIGFkb3B0CisgICAgICogPHR0Pm5ld1RleHQ8L3R0Pi4gIFRoaXMgbWV0aG9kIHNldHMgdGhlIHNlbGVjdGlvbiBhbiBpbnNlcnRpb24gcG9pbnQgYXQKKyAgICAgKiB0aGUgZW5kIG9mIHRoZSB0ZXh0LgorICAgICAqIEBwYXJhbSBuZXdUZXh0IHRoZSB0ZXh0IHdoaWNoIHdpbGwgcmVwbGFjZSB0aGUgY3VycmVudCB0ZXh0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFRleHQoTUNvbnN0VGV4dCBuZXdUZXh0KSB7CisKKyAgICAgICAgZkltcGwuc2V0VGV4dChuZXdUZXh0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBcHBlbmQgdGhlIGdpdmVuIHRleHQgdG8gdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQuICBFcXVpdmFsZW50IHRvCisgICAgICogPHR0Pmluc2VydChuZXdUZXh0LCBnZXRUZXh0TGVuZ3RoKCkpPC90dD4uCisgICAgICogQHBhcmFtIG5ld1RleHQgdGhlIHRleHQgdG8gYXBwZW5kIHRvIHRoZSBkb2N1bWVudAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFwcGVuZChNQ29uc3RUZXh0IG5ld1RleHQpIHsKKworICAgICAgICBmSW1wbC5hcHBlbmQobmV3VGV4dCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW5zZXJ0IHRoZSBnaXZlbiB0ZXh0IGludG8gdGhlIGRvY3VtZW50IGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4KKyAgICAgKiBFcXVpdmFsZW50IHRvCisgICAgICogPHR0PnJlcGxhY2VSYW5nZShuZXdUZXh0LCBwb3NpdGlvbiwgcG9zaXRpb24pPC90dD4uCisgICAgICogQHBhcmFtIG5ld1RleHQgdGhlIHRleHQgdG8gaW5zZXJ0IGludG8gdGhlIGRvY3VtZW50LgorICAgICAqIEBwYXJhbSBwb3NpdGlvbiB0aGUgcG9zaXRpb24gaW4gdGhlIGRvY3VtZW50IHdoZXJlIHRoZQorICAgICAqICAgICB0ZXh0IHdpbGwgYmUgaW5zZXJ0ZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBpbnNlcnQoTUNvbnN0VGV4dCBuZXdUZXh0LCBpbnQgcG9zaXRpb24pIHsKKworICAgICAgICBmSW1wbC5pbnNlcnQobmV3VGV4dCwgcG9zaXRpb24pOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlcGxhY2UgdGhlIGdpdmVuIHJhbmdlIHdpdGggPHR0Pm5ld1RleHQ8L3R0Pi4gIEFmdGVyIHRoaXMKKyAgICAgKiBvcGVyYXRpb24gdGhlIHNlbGVjdGlvbiByYW5nZSBpcyBhbiBpbnNlcnRpb24gcG9pbnQgYXQgdGhlCisgICAgICogZW5kIG9mIHRoZSBuZXcgdGV4dC4KKyAgICAgKiBAcGFyYW0gbmV3VGV4dCB0aGUgdGV4dCB3aXRoIHdoaWNoIHRvIHJlcGxhY2UgdGhlIHJhbmdlCisgICAgICogQHBhcmFtIHN0YXJ0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHJhbmdlIHRvIHJlcGxhY2UKKyAgICAgKiBAcGFyYW0gZW5kIHRoZSBlbmQgb2YgdGhlIHJhbmdlIHRvIHJlcGxhY2UKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZXBsYWNlUmFuZ2UoTUNvbnN0VGV4dCBuZXdUZXh0LCBpbnQgc3RhcnQsIGludCBlbmQpIHsKKworICAgICAgICBmSW1wbC5yZXBsYWNlUmFuZ2UobmV3VGV4dCwgc3RhcnQsIGVuZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIHRleHQgZG9jdW1lbnQgaW4gdGhlIEpUZXh0UGFuZWwuCisgICAgICogQHJldHVybiB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0IGRvY3VtZW50IGluIHRoZSBKVGV4dFBhbmVsCisgICAgICovCisgICAgcHVibGljIGludCBnZXRUZXh0TGVuZ3RoKCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5nZXRUZXh0TGVuZ3RoKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSB0ZXh0IGRvY3VtZW50IGluIHRoZSBKVGV4dFBhbmVsLgorICAgICAqIEByZXR1cm4gdGhlIHRleHQgZG9jdW1lbnQgaW4gdGhlIEpUZXh0UGFuZWwuCisgICAgICovCisgICAgcHVibGljIE1Db25zdFRleHQgZ2V0VGV4dCgpIHsKKworICAgICAgICByZXR1cm4gZkltcGwuZ2V0VGV4dCgpOworICAgIH0KKworLy89PT09PT09PT09PT0KKy8vIFNlbGVjdGlvbiBBY2Nlc3MKKy8vPT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG9mZnNldCBvZiB0aGUgc3RhcnQgb2YgdGhlIHNlbGVjdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFNlbGVjdGlvblN0YXJ0KCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5nZXRTZWxlY3Rpb25TdGFydCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgb2Zmc2V0IG9mIHRoZSBlbmQgb2YgdGhlIHNlbGVjdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFNlbGVjdGlvbkVuZCgpIHsKKworICAgICAgICByZXR1cm4gZkltcGwuZ2V0U2VsZWN0aW9uRW5kKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlbGVjdGlvbiByYW5nZS4gIFRoaXMgaXMKKyAgICAgKiBlcXVpdmFsZW50IHRvIDx0dD5zZWxlY3Qoc2VsZWN0aW9uU3RhcnQsIGdldFNlbGVjdGlvbkVuZCgpKTwvdHQ+LgorICAgICAqIEBwYXJhbSBzZWxlY3Rpb25TdGFydCB0aGUgc3RhcnQgb2YgdGhlIG5ldyBzZWxlY3Rpb24gcmFuZ2UKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRTZWxlY3Rpb25TdGFydChpbnQgc2VsZWN0aW9uU3RhcnQpIHsKKworICAgICAgICBmSW1wbC5zZXRTZWxlY3Rpb25TdGFydChzZWxlY3Rpb25TdGFydCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBlbmQgb2YgdGhlIHNlbGVjdGlvbiByYW5nZS4gIFRoaXMgaXMKKyAgICAgKiBlcXVpdmFsZW50IHRvIDx0dD5zZWxlY3QoZ2V0U2VsZWN0aW9uU3RhcnQoKSwgc2VsZWN0aW9uRW5kKTwvdHQ+LgorICAgICAqIEBwYXJhbSBzZWxlY3Rpb25TdGFydCB0aGUgc3RhcnQgb2YgdGhlIG5ldyBzZWxlY3Rpb24gcmFuZ2UKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRTZWxlY3Rpb25FbmQoaW50IHNlbGVjdGlvbkVuZCkgeworCisgICAgICAgIGZJbXBsLnNldFNlbGVjdGlvbkVuZChzZWxlY3Rpb25FbmQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgc2VsZWN0aW9uIHJhbmdlIHRvIGFuIGluc2VydGlvbiBwb2ludCBhdCB0aGUgZ2l2ZW4KKyAgICAgKiBvZmZzZXQuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KKyAgICAgKiA8dHQ+c2VsZWN0KHBvc2l0aW9uLCBwb3NpdGlvbik8L3R0Pi4KKyAgICAgKiBAcGFyYW0gcG9zaXRpb24gdGhlIG9mZnNldCBvZiB0aGUgbmV3IGluc2VydGlvbiBwb2ludAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldENhcmV0UG9zaXRpb24oaW50IHBvc2l0aW9uKSB7CisKKyAgICAgICAgZkltcGwuc2V0Q2FyZXRQb3NpdGlvbihwb3NpdGlvbik7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBzZWxlY3Rpb24gcmFuZ2UgdG8gdGhlIGdpdmVuIHJhbmdlLiAgVGhlIHJhbmdlIHN0YXJ0CisgICAgICogaXMgcGlubmVkIGJldHdlZW4gMCBhbmQgdGhlIHRleHQgbGVuZ3RoOyAgdGhlIHJhbmdlIGVuZCBpcyBwaW5uZWQKKyAgICAgKiBiZXR3ZWVuIHRoZSByYW5nZSBzdGFydCBhbmQgdGhlIGVuZCBvZiB0aGUgdGV4dC4gIFRoZXNlIHNlbWFudGljcworICAgICAqIGFyZSBpZGVudGljYWwgdG8gdGhvc2Ugb2YgPHR0PmphdmEuYXd0LlRleHRDb21wb25lbnQ8L3R0Pi4KKyAgICAgKiBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZSB0ZXh0IGlzIG5vdCBzZWxlY3RhYmxlLgorICAgICAqIEBwYXJhbSBzZWxlY3Rpb25TdGFydCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZWxlY3Rpb24gcmFuZ2UKKyAgICAgKiBAcGFyYW0gc2VsZWN0aW9uRW5kIHRoZSBlbmQgb2YgdGhlIHNlbGVjdGlvbiByYW5nZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNlbGVjdChpbnQgc2VsZWN0aW9uU3RhcnQsIGludCBzZWxlY3Rpb25FbmQpIHsKKworICAgICAgICBmSW1wbC5zZWxlY3Qoc2VsZWN0aW9uU3RhcnQsIHNlbGVjdGlvbkVuZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2VsZWN0IGFsbCBvZiB0aGUgdGV4dCBpbiB0aGUgZG9jdW1lbnQuICBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmCisgICAgICogdGhlIHRleHQgaXMgbm90IHNlbGVjdGFibGUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2VsZWN0QWxsKCkgeworCisgICAgICAgIGZJbXBsLnNlbGVjdEFsbCgpOworICAgIH0KKworCisvLz09PT09PT09PT09PQorLy8gRm9ybWF0IFdpZHRoCisvLz09PT09PT09PT09PQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSB0b3RhbCBmb3JtYXQgd2lkdGgsIGluIHBpeGVscy4gIFRoZSBmb3JtYXQgd2lkdGggaXMgdGhlCisgICAgICogd2lkdGggdG8gd2hpY2ggdGV4dCBpcyB3cmFwcGVkLgorICAgICAqIEByZXR1cm4gdGhlIGZvcm1hdCB3aWR0aAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0Rm9ybWF0V2lkdGgoKSB7CisKKyAgICAgICAgcmV0dXJuIGZJbXBsLmdldEZvcm1hdFdpZHRoKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHBhcmFncmFwaCBhdCB0aGUgZ2l2ZW4gb2Zmc2V0IGlzIGxlZnQtdG8tcmlnaHQuCisgICAgICogQHBhcmFtIG9mZnNldCBhbiBvZmZzZXQgaW4gdGhlIHRleHQKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHBhcmFncmFwaCBhdCB0aGUgZ2l2ZW4gb2Zmc2V0IGlzIGxlZnQtdG8tcmlnaHQKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBwYXJhZ3JhcGhJc0xlZnRUb1JpZ2h0KGludCBvZmZzZXQpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmSW1wbC5wYXJhZ3JhcGhJc0xlZnRUb1JpZ2h0KG9mZnNldCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBjaGFuZ2Ugd2hpY2ggY2FuIGJlIHVuZG9uZS4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBjaGFuZ2Ugd2hpY2ggY2FuIGJlIHVuZG9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjYW5VbmRvKCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5jYW5VbmRvKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBjaGFuZ2Ugd2hpY2ggY2FuIGJlIHJlZG9uZS4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlcmUgaXMgYSBjaGFuZ2Ugd2hpY2ggY2FuIGJlIHJlZG9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjYW5SZWRvKCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5jYW5SZWRvKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlIGNsaXBib2FyZCBjb250YWlucyBjb250ZW50cyB3aGljaCBjb3VsZCBiZQorICAgICAqIHRyYW5zZmVyZWQgaW50byB0aGUgdGV4dC4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGNsaXBib2FyZCBoYXMgdGV4dCBjb250ZW50LgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGNsaXBib2FyZE5vdEVtcHR5KCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5jbGlwYm9hcmROb3RFbXB0eSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhbiBBdHRyaWJ1dGVNYXAgb2Yga2V5cyB3aXRoIGRlZmF1bHQgdmFsdWVzLiAgVGhlIGRlZmF1bHQKKyAgICAgKiB2YWx1ZXMgYXJlIHVzZWQgd2hlbiBkaXNwbGF5aW5nIHRleHQgZm9yIHZhbHVlcyB3aGljaCBhcmUgbm90CisgICAgICogc3BlY2lmaWVkIGluIHRoZSB0ZXh0LgorICAgICAqIEByZXR1cm4gYW4gQXR0cmlidXRlTWFwIG9mIGRlZmF1bHQga2V5LXZhbHVlIHBhaXJzCisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBnZXREZWZhdWx0VmFsdWVzKCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5nZXREZWZhdWx0VmFsdWVzKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBtZXRob2QgaW5zcGVjdHMgdGhlIGNoYXJhY3RlciBzdHlsZSBydW5zIGluIHRoZSBzZWxlY3Rpb24KKyAgICAgKiByYW5nZSAob3IgdGhlIHR5cGluZyBzdHlsZSBhdCB0aGUgaW5zZXJ0aW9uIHBvaW50KS4gIEl0IHJldHVybnM6CisgICAgICogPHVsPgorICAgICAqIDxsaT5UaGUgdmFsdWUgb2YgPHR0PmtleTwvdHQ+LCBpZiB0aGUgdmFsdWUgb2YgPHR0PmtleTwvdHQ+CisgICAgICogaXMgdGhlIHNhbWUgaW4gYWxsIG9mIHRoZSBzdHlsZSBydW5zIGluIHRoZSBzZWxlY3Rpb24sIG9yPC9saT4KKyAgICAgKiA8bGk+PHR0Pk1VTFRJUExFX1ZBTFVFUzwvdHQ+LCBpZiB0d28gb3IgbW9yZSBzdHlsZSBydW5zIGhhdmUgZGlmZmVyZW50IAorICAgICAqIHZhbHVlcyBmb3IgPHR0PmtleTwvdHQ+LjwvbGk+CisgICAgICogPC91bD4KKyAgICAgKiBJZiBhIHN0eWxlIHJ1biBkb2VzIG5vdCBjb250YWluIDx0dD5rZXk8L3R0PiwKKyAgICAgKiBpdHMgdmFsdWUgaXMgY29uc2lkZXJlZCB0byBiZSB0aGUgZGVmYXVsdCBzdHlsZSBmb3IgPHR0PmtleTwvdHQ+LAorICAgICAqIGFzIGRlZmluZWQgYnkgdGhlIGRlZmF1bHQgdmFsdWVzIEF0dHJpYnV0ZU1hcC4gIE5vdGUgdGhhdCBpZgorICAgICAqIDx0dD5rZXk8L3R0PiBkb2VzIG5vdCBoYXZlIGEgZGVmYXVsdCB2YWx1ZSB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuCisgICAgICogbnVsbC4KKyAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgZm9yIGNvbmZpZ3VyaW5nIHN0eWxlIG1lbnVzLgorICAgICAqIEBwYXJhbSBrZXkgdGhlIGtleSB1c2VkIHRvIHJldHJpZXZlIHZhbHVlcyBmb3IgY29tcGFyaXNvbgorICAgICAqIEBzZWUgTVRleHRQYW5lbCNNVUxUSVBMRV9WQUxVRVMKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGdldENoYXJhY3RlclN0eWxlT3ZlclNlbGVjdGlvbihPYmplY3Qga2V5KSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkltcGwuZ2V0Q2hhcmFjdGVyU3R5bGVPdmVyU2VsZWN0aW9uKGtleSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBtZXRob2QgaW5zcGVjdHMgdGhlIHBhcmFncmFwaCBzdHlsZSBydW5zIGluIHRoZSBzZWxlY3Rpb24KKyAgICAgKiByYW5nZSAob3IgdGhlIHR5cGluZyBzdHlsZSBhdCB0aGUgaW5zZXJ0aW9uIHBvaW50KS4gIEl0IHJldHVybnM6CisgICAgICogPHVsPgorICAgICAqIDxsaT5UaGUgdmFsdWUgb2YgPHR0PmtleTwvdHQ+LCBpZiB0aGUgdmFsdWUgb2YgPHR0PmtleTwvdHQ+CisgICAgICogaXMgdGhlIHNhbWUgaW4gYWxsIG9mIHRoZSBzdHlsZSBydW5zIGluIHRoZSBzZWxlY3Rpb24sIG9yPC9saT4KKyAgICAgKiA8bGk+PHR0Pk1VTFRJUExFX1ZBTFVFUzwvdHQ+LCBpZiB0d28gb3IgbW9yZSBzdHlsZSBydW5zIGhhdmUgCisgICAgICogZGlmZmVyZW50IHZhbHVlcyBmb3IgPHR0PmtleTwvdHQ+LjwvbGk+CisgICAgICogPC91bD4KKyAgICAgKiBJZiBhIHN0eWxlIHJ1biBkb2VzIG5vdCBjb250YWluIDx0dD5rZXk8L3R0PiwKKyAgICAgKiBpdHMgdmFsdWUgaXMgY29uc2lkZXJlZCB0byBiZSB0aGUgZGVmYXVsdCBzdHlsZSBmb3IgPHR0PmtleTwvdHQ+LAorICAgICAqIGFzIGRlZmluZWQgYnkgdGhlIGRlZmF1bHQgdmFsdWVzIEF0dHJpYnV0ZU1hcC4gIE5vdGUgdGhhdCBpZgorICAgICAqIDx0dD5rZXk8L3R0PiBkb2VzIG5vdCBoYXZlIGEgZGVmYXVsdCB2YWx1ZSB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuCisgICAgICogbnVsbC4KKyAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgZm9yIGNvbmZpZ3VyaW5nIHN0eWxlIG1lbnVzLgorICAgICAqIEBwYXJhbSBrZXkgdGhlIGtleSB1c2VkIHRvIHJldHJpZXZlIHZhbHVlcyBmb3IgY29tcGFyaXNvbgorICAgICAqIEBzZWUgTVRleHRQYW5lbCNNVUxUSVBMRV9WQUxVRVMKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGdldFBhcmFncmFwaFN0eWxlT3ZlclNlbGVjdGlvbihPYmplY3Qga2V5KSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkltcGwuZ2V0UGFyYWdyYXBoU3R5bGVPdmVyU2VsZWN0aW9uKGtleSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVtb3ZlIHRoZSBzZWxlY3RlZCB0ZXh0IGZyb20gdGhlIGRvY3VtZW50IGFuZCBwbGFjZSBpdAorICAgICAqIG9uIHRoZSBjbGlwYm9hcmQuICBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZSB0ZXh0CisgICAgICogaXMgbm90IGVkaXRhYmxlLCBvciBpZiBubyB0ZXh0IGlzIHNlbGVjdGVkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGN1dCgpIHsKKyAgICAgICAgZkltcGwuY3V0KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGxhY2UgdGhlIHNlbGVjdGVkIHRleHQgb24gdGhlIGNsaXBib2FyZC4gIFRoaXMgbWV0aG9kIGhhcworICAgICAqIG5vIGVmZmVjdCBpZiBubyB0ZXh0IGlzIHNlbGVjdGVkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGNvcHkoKSB7CisgICAgICAgIGZJbXBsLmNvcHkoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXBsYWNlIHRoZSBjdXJyZW50bHkgc2VsZWN0ZWQgdGV4dCB3aXRoIHRoZSB0ZXh0IG9uIHRoZSBjbGlwYm9hcmQuCisgICAgICogVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgdGV4dCBpcyBub3QgZWRpdGFibGUsIG9yIGlmIG5vCisgICAgICogdGV4dCBpcyBvbiB0aGUgY2xpcGJvYXJkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHBhc3RlKCkgeworICAgICAgICBmSW1wbC5wYXN0ZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbW92ZSBzZWxlY3RlZCB0ZXh0IGZyb20gdGhlIGRvY3VtZW50LCB3aXRob3V0IGFsdGVyaW5nIHRoZSBjbGlwYm9hcmQuCisgICAgICogVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUKKyAgICAgKiB0ZXh0IGlzIG5vdCBlZGl0YWJsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhcigpIHsKKyAgICAgICAgZkltcGwuY2xlYXIoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVbmRvIHRoZSBtb3N0IHJlY2VudCB0ZXh0IGNoYW5nZS4gIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYKKyAgICAgKiB0aGVyZSBpcyBubyBjaGFuZ2UgdG8gdW5kby4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB1bmRvKCkgeworICAgICAgICBmSW1wbC51bmRvKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVkbyB0aGUgbW9zdCByZWNlbnQgdGV4dCBjaGFuZ2UuICBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmCisgICAgICogdGhlcmUgaXMgbm8gY2hhbmdlIHRvIHJlZG8uCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVkbygpIHsKKyAgICAgICAgZkltcGwucmVkbygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGNvbW1hbmRzIHRoZSBjb21tYW5kIGxvZyBjYW4gaG9sZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgY29tbWFuZHMgdGhlIGNvbW1hbmQgbG9nIGNhbiBob2xkCisgICAgICovCisgICAgcHVibGljIGludCBnZXRDb21tYW5kTG9nU2l6ZSgpIHsKKworICAgICAgICByZXR1cm4gZkltcGwuZ2V0Q29tbWFuZExvZ1NpemUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIG51bWJlciBvZiBjb21tYW5kcyB0aGUgY29tbWFuZCBsb2cgY2FuIGhvbGQuICBBbGwKKyAgICAgKiByZWRvYWJsZSBjb21tYW5kcyBhcmUgcmVtb3ZlZCB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZC4KKyAgICAgKiBAcGFyYW0gc2l6ZSB0aGUgbnVtYmVyIG9mIGNvbW1hbmRzIGtlcHQgaW4gdGhlIGNvbW1hbmQgbG9nCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Q29tbWFuZExvZ1NpemUoaW50IHNpemUpIHsKKyAgICAgICAgZkltcGwuc2V0Q29tbWFuZExvZ1NpemUoc2l6ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVtb3ZlIGFsbCBjb21tYW5kcyBmcm9tIHRoZSBjb21tYW5kIGxvZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhckNvbW1hbmRMb2coKSB7CisgICAgICAgIGZJbXBsLmNsZWFyQ29tbWFuZExvZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1vZGlmeSB0aGUgY2hhcmFjdGVyIHN0eWxlcyBvbiB0aGUgc2VsZWN0ZWQgY2hhcmFjdGVycy4gIElmIG5vIGNoYXJhY3RlcnMKKyAgICAgKiBhcmUgc2VsZWN0ZWQsIG1vZGlmeSB0aGUgdHlwaW5nIHN0eWxlLgorICAgICAqIEBwYXJhbSBtb2RpZmllciB0aGUgU3R5bGVNb2RpZmllciB3aXRoIHdoaWNoIHRvIG1vZGlmeSB0aGUgc3R5bGVzCisgICAgICovCisgICAgcHVibGljIHZvaWQgbW9kaWZ5Q2hhcmFjdGVyU3R5bGVPblNlbGVjdGlvbihTdHlsZU1vZGlmaWVyIG1vZGlmaWVyKSB7CisgICAgICAgIGZJbXBsLm1vZGlmeUNoYXJhY3RlclN0eWxlT25TZWxlY3Rpb24obW9kaWZpZXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1vZGlmeSB0aGUgcGFyYWdyYXBoIHN0eWxlcyBpbiBwYXJhZ3JhcGhzIGNvbnRhaW5pbmcgc2VsZWN0ZWQgY2hhcmFjdGVycywgb3IKKyAgICAgKiB0aGUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgdGhlIGluc2VydGlvbiBwb2ludC4KKyAgICAgKiBAcGFyYW0gbW9kaWZpZXIgdGhlIFN0eWxlTW9kaWZpZXIgd2l0aCB3aGljaCB0byBtb2RpZnkgdGhlIHN0eWxlcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIG1vZGlmeVBhcmFncmFwaFN0eWxlT25TZWxlY3Rpb24oU3R5bGVNb2RpZmllciBtb2RpZmllcikgeworICAgICAgICBmSW1wbC5tb2RpZnlQYXJhZ3JhcGhTdHlsZU9uU2VsZWN0aW9uKG1vZGlmaWVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIEtleVJlbWFwIHVzZWQgdG8gcHJvY2VzcyBrZXkgZXZlbnRzLgorICAgICAqIEByZXR1cm4gdGhlIGtleSByZW1hcCB1c2VkIHRvIHByb2Nlc3Mga2V5IGV2ZW50cworICAgICAqIEBzZWUgI3NldEtleVJlbWFwCisgICAgICovCisgICAgcHVibGljIEtleVJlbWFwIGdldEtleVJlbWFwKCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5nZXRLZXlSZW1hcCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFVzZSB0aGUgZ2l2ZW4gS2V5UmVtYXAgdG8gbWFwIGtleSBldmVudHMgdG8gY2hhcmFjdGVycy4KKyAgICAgKiBPbmx5IGtleQorICAgICAqIGV2ZW50cyBhcmUgYWZmZWN0ZWQgYnkgdGhlIHJlbWFwOyAgb3RoZXIgdGV4dCBlbnRlcmluZyB0aGUKKyAgICAgKiBjb250cm9sICh2aWEgdGhlIGNsaXBib2FyZCwgZm9yIGV4YW1wbGUpIGlzIG5vdCBhZmZlY3RlZAorICAgICAqIGJ5IHRoZSBLZXlSZW1hcC4KKyAgICAgKiA8cD4KKyAgICAgKiBEbyBub3QgcGFzcyA8dHQ+bnVsbDwvdHQ+IHRvIHRoaXMgbWV0aG9kIHRvIGxlYXZlIGtleQorICAgICAqIGV2ZW50cyB1bm1hcHBlZC4gIEluc3RlYWQsIHVzZSA8dHQ+S2V5UmVtYXAuZ2V0SWRlbnRpdHlSZW1hcCgpPC90dD4KKyAgICAgKiBAcGFyYW0gcmVtYXAgdGhlIEtleVJlbWFwIHRvIHVzZSBmb3IgbWFwcGluZyBrZXkgZXZlbnRzIHRvIGNoYXJhY3RlcnMKKyAgICAgKiBAZXhjZXB0aW9uIGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiBpZiBwYXJhbWV0ZXIgaXMgbnVsbAorICAgICAqIEBzZWUgS2V5UmVtYXAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRLZXlSZW1hcChLZXlSZW1hcCByZW1hcCkgeworCisgICAgICAgIGZJbXBsLnNldEtleVJlbWFwKHJlbWFwKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG1vZGlmaWNhdGlvbiBmbGFnIG9mIHRoZSBjdXJyZW50IHRleHQgY2hhbmdlLgorICAgICAqIEBzZWUgI3NldE1vZGlmaWVkCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNNb2RpZmllZCgpIHsKKworICAgICAgICByZXR1cm4gZkltcGwuaXNNb2RpZmllZCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgbW9kaWZpY2F0aW9uIGZsYWcgb2YgdGhlIGN1cnJlbnQgdGV4dCBjaGFuZ2UuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TW9kaWZpZWQoYm9vbGVhbiBtb2RpZmllZCkgeworICAgICAgICAKKyAgICAgICAgZkltcGwuc2V0TW9kaWZpZWQobW9kaWZpZWQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgbWV0aG9kIGlzIGZvciBLZXlFdmVudEZvcndhcmRlcidzIHVzZSBvbmx5IQorICAgICAqLworICAgIEFUZXh0UGFuZWxJbXBsIGdldEltcGwoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZkltcGw7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0QmFja2dyb3VuZChDb2xvciBjb2xvcikgeworICAgICAgICBzdXBlci5zZXRCYWNrZ3JvdW5kIChjb2xvcik7CisgICAgICAgIGphdmEuYXd0LkNvbXBvbmVudFtdIGNvbXBMaXN0ID0gZ2V0Q29tcG9uZW50cygpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvbXBMaXN0Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoIShjb21wTGlzdFtpXSBpbnN0YW5jZW9mIEpTY3JvbGxCYXIpKSB7CisgICAgICAgICAgICAgICAgY29tcExpc3RbaV0uc2V0QmFja2dyb3VuZCAoY29sb3IpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0tleUV2ZW50Rm9yd2FyZGVyLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvS2V5RXZlbnRGb3J3YXJkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jNGQxZDYzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0tleUV2ZW50Rm9yd2FyZGVyLmphdmEKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogS2V5RXZlbnRGb3J3YXJkZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMC8wNC8yMiAxNzoxMDoxMCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbDsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LktleUV2ZW50OworCisvKioKKyAqIFRoaXMgY2xhc3MgZm9yd2FyZHMga2V5IGV2ZW50cyB0byBhIFRleHRQYW5lbCBjb21wb25lbnQgZm9yCisgKiB0ZXN0aW5nIHB1cnBvc2VzLgorICogSXRzIHNvbGUgcmVhc29uIGZvciBleGlzdGVuY2UgaXMgdG8gcHJldmVudCB0aGUga2V5LWV2ZW50CisgKiBBUEkgZnJvbSBiZWluZyBwdWJsaWMgb24gTVRleHRQYW5lbCwgYW5kIGJlaW5nIG1pc3Rha2VuIGZvcgorICogc3RhbmRhcmQgQVBJLiAgVGhpcyBjbGFzcyBpcyBvbmx5IGZvciB0ZXN0aW5nISAgSXQgbWF5IGJlCisgKiByZW1vdmVkIGZyb20gcHVibGljIEFQSSBhdCBhbnkgdGltZS4gIERvIG5vdCBkZXBlbmQgb24gdGhpcworICogY2xhc3MuCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBLZXlFdmVudEZvcndhcmRlciB7CisKKyAgICBwcml2YXRlIEFUZXh0UGFuZWxJbXBsIGZQYW5lbEltcGw7CisKKyAgICBwdWJsaWMgS2V5RXZlbnRGb3J3YXJkZXIoVGV4dFBhbmVsIHRleHRQYW5lbCkgeworCisgICAgICAgIGZQYW5lbEltcGwgPSB0ZXh0UGFuZWwuZ2V0SW1wbCgpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgS2V5RXZlbnRGb3J3YXJkZXIoSlRleHRQYW5lbCB0ZXh0UGFuZWwpIHsKKyAgICAKKyAgICAgICAgZlBhbmVsSW1wbCA9IHRleHRQYW5lbC5nZXRJbXBsKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgaGFuZGxlS2V5RXZlbnQoS2V5RXZlbnQga2V5RXZlbnQpIHsKKworICAgICAgICBmUGFuZWxJbXBsLmhhbmRsZUtleUV2ZW50KGtleUV2ZW50KTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0tleVJlbWFwLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvS2V5UmVtYXAuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hYjZmZjhhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL0tleVJlbWFwLmphdmEKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEtleVJlbWFwLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8qCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OCwgQWxsIFJpZ2h0cyBSZXNlcnZlZAorICovCisKK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5LZXlFdmVudDsKKworLyoqCisgKiBLZXlSZW1hcCBtYXBzIGtleXMgb24gYSBzdGFuZGFyZCBVUyBrZXlib2FyZCB0byBjaGFyYWN0ZXJzCisgKiBpbiBvdGhlciBhbHBoYWJldHMuICBDdXJyZW50bHksIG1hcHBpbmdzIHRvIEFyYWJpYywgSGVicmV3CisgKiBhbmQgVGhhaSBhcmUgc3VwcG9ydGVkLiAgSW4gdGhlIGZ1dHVyZSwgY2xpZW50cyBtYXkgYmUKKyAqIHRvIGRlZmluZSB0aGVpciBvd24gbWFwcGluZ3MgYnkgc3ViY2xhc3NpbmcgdGhpcyBjbGFzcy4KKyAqIDxQPgorICogQHNlZSBUZXh0UGFuZWwjc2V0S2V5UmVtYXAKKyAqLworCitwdWJsaWMgY2xhc3MgS2V5UmVtYXAgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgS2V5UmVtYXAuCisgICAgICovCisgICAgcHJvdGVjdGVkIEtleVJlbWFwKCkgeworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGNoYXJhY3RlciBvbiB0aGUgc2ltdWxhdGVkIGtleWJvYXJkCisgICAgICogd2hpY2ggaXMgKG1vc3QgbGlrZWx5KSBnZW5lcmF0ZWQgYnkgdHlwaW5nIHRoZSBjaGFyYWN0ZXIgYworICAgICAqIG9uIHRoZSBhY3R1YWwga2V5Ym9hcmQuICBGb3IgZ3JlYXRlciBhY2N1cmFjeSwgdXNlIHRoZSByZW1hcAorICAgICAqIG1ldGhvZCB3aGljaCB0YWtlcyBhIEtleUV2ZW50LCBzaW5jZSBpdCBjYW4gdGFrZSBtb2RpZmllcgorICAgICAqIGtleXMgaW50byBhY2NvdW50LgorICAgICAqIEBhcmcgYyBhIGNoYXJhY3RlciBvbiB0aGUgYWN0dWFsIGtleWJvYXJkCisgICAgICogQHJldHVybiB0aGUgY2hhcmFjdGVyIG9uIHRoZSBzaW11bGF0ZWQga2V5Ym9hcmQgd2hpY2ggd291bGQKKyAgICAgKiAgICAgICAgIHJlc3VsdCBmcm9tIHRoZSBrZXkgY29tYmluYXRpb24gd2hpY2ggcHJvZHVjZWQgdGhlCisgICAgICogICAgICAgICBnaXZlbiBjaGFyYWN0ZXIgb24gdGhlIGFjdHVhbCBrZXlib2FyZAorICAgICAqLworICAgIC8qcHVibGljKi8gY2hhciByZW1hcChjaGFyIGMpIHsKKworICAgICAgICByZXR1cm4gYzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGNoYXJhY3RlciBvbiB0aGUgc2ltdWxhdGVkIGtleWJvYXJkCisgICAgICogd2hpY2gga2V5RXZlbnQgZ2VuZXJhdGVzLgorICAgICAqIEBhcmcga2V5RXZlbnQgYSBrZXkgZXZlbnQgZnJvbSB0aGUgYWN0dWFsIGtleWJvYXJkCisgICAgICogQHJldHVybiB0aGUgY2hhcmFjdGVyIG9uIHRoZSBzaW11bGF0ZWQga2V5Ym9hcmQgZ2VuZXJhdGVkIGJ5CisgICAgICogICAgICAgICBrZXlFdmVudAorICAgICAqLworICAgIC8qcHVibGljKi8gY2hhciByZW1hcChLZXlFdmVudCBrZXlFdmVudCkgeworCisgICAgICAgIHJldHVybiByZW1hcChrZXlFdmVudC5nZXRLZXlDaGFyKCkpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEtleVJlbWFwIElERU5USVRZID0gbmV3IEtleVJlbWFwKCk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgS2V5UmVtYXAgQVJBQklDX1RSQU5TTElURVJBVElPTiA9IG5ldyBBcmFiaWNUcmFuc2xpdGVyYXRpb24oKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBLZXlSZW1hcCBIRUJSRVdfVFJBTlNMSVRFUkFUSU9OID0gbmV3IEhlYnJld1RyYW5zbGl0ZXJhdGlvbigpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEtleVJlbWFwIElTUkFFTF9OSUtVRCA9IG5ldyBJc3JhZWxOaWt1ZEtleWJvYXJkKCk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgS2V5UmVtYXAgVEhBSSA9IG5ldyBUaGFpS2V5UmVtYXAoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybiBhIEtleVJlbWFwIHdoaWNoIG1hcHMgZXZlcnkgY2hhcmFjdGVyIHRvIGl0c2VsZi4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEtleVJlbWFwIGdldElkZW50aXR5UmVtYXAoKSB7CisKKyAgICAgICAgcmV0dXJuIElERU5USVRZOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIEtleVJlbWFwIHdoaWNoIG1hcHMga2V5cyB0bworICAgICAqIGNoYXJhY3RlcnMgaW4gdGhlIEFyYWJpYyBhbHBoYWJldCwgdXNpbmcgYSBzaW1wbGUgdHJhbnNsaXRlcmF0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgS2V5UmVtYXAgZ2V0QXJhYmljVHJhbnNsaXRlcmF0aW9uKCkgeworCisgICAgICAgIHJldHVybiBBUkFCSUNfVFJBTlNMSVRFUkFUSU9OOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIEtleVJlbWFwIHdoaWNoIG1hcHMga2V5cyB0bworICAgICAqIGNoYXJhY3RlcnMgaW4gdGhlIEhlYnJldyBhbHBoYWJldCwgdXNpbmcgYSBzaW1wbGUgdHJhbnNsaXRlcmF0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgS2V5UmVtYXAgZ2V0SGVicmV3VHJhbnNsaXRlcmF0aW9uKCkgeworCisgICAgICAgIHJldHVybiBIRUJSRVdfVFJBTlNMSVRFUkFUSU9OOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIEtleVJlbWFwIHdoaWNoIGVtdWxhdGVzIGEgc3RhbmRhcmQgSGVicmV3IGtleWJvYXJkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgS2V5UmVtYXAgZ2V0SXNyYWVsTmlrdWQoKSB7CisKKyAgICAgICAgcmV0dXJuIElTUkFFTF9OSUtVRDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgS2V5UmVtYXAgd2hpY2ggZW11bGF0ZXMgYSBUaGFpIEtldG1hbmVlIGtleWJvYXJkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgS2V5UmVtYXAgZ2V0VGhhaUtldG1hbmVlKCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIFRIQUk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL01UZXh0UGFuZWwuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9NVGV4dFBhbmVsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODdhOTJlZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9NVGV4dFBhbmVsLmphdmEKQEAgLTAsMCArMSwzNzUgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IE1UZXh0UGFuZWwuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo1MToyMyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbDsKKworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZU1vZGlmaWVyOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworCisvKioKKyAqIE1UZXh0UGFuZWwgaXMgaW1wbGVtZW50ZWQgYnkgQ29tcG9uZW50cyB3aGljaCBwcm92aWRlIHNlbGVjdGFibGUKKyAqIGVkaXRhYmxlIHN0eWxlZCB0ZXh0LgorICogPHA+CisgKiBJbXBsZW1lbnRhdGlvbnMgb2YgTVRleHRQYW5lbCBwcm92aWRlIGEgc2ltcGxlLCBzdGFuZGFyZCB1c2VyIGludGVyZmFjZQorICogZm9yIHRleHQgZWRpdGluZy4gIE1UZXh0UGFuZWwgc3VwcGxpZXMgc2Nyb2xsYWJsZSBkaXNwbGF5LCB0eXBpbmcsIAorICogYXJyb3cta2V5IHN1cHBvcnQsIGNoYXJhY3RlciBzZWxlY3Rpb24sIHdvcmQtCisgKiBhbmQgc2VudGVuY2Utc2VsZWN0aW9uIChieSBkb3VibGUtY2xpY2tpbmcgYW5kIHRyaXBsZS1jbGlja2luZywgCisgKiByZXNwZWN0aXZlbHkpLCB0ZXh0IHN0eWxlcywgY2xpcGJvYXJkIG9wZXJhdGlvbnMgKGN1dCwgY29weSBhbmQgcGFzdGUpCisgKiBhbmQgYSBsb2cgb2YgY2hhbmdlcyBmb3IgdW5kby1yZWRvLgorICogPHA+CisgKiBNVGV4dFBhbmVsIGltcGxlbWVudGF0aW9ucyBkbyBub3QgcHJvdmlkZSB1c2VyIGludGVyZmFjZSBlbGVtZW50cworICogc3VjaCBhcyBhbiBlZGl0IG1lbnUgb3Igc3R5bGUgbWVudS4gIFRoaXMgc3VwcG9ydCBpcyBwcm92aWRlZCBpbgorICogZGlmZmVyZW50IHBhY2thZ2VzLCBhbmQgaXMgaW1wbGVtZW50ZWQgd2l0aCBNVGV4dFBhbmVsJ3MgQVBJLgorICogTVRleHRQYW5lbCBpbmNsdWRlcyBtZXRob2RzIGZvciBzZXR0aW5nIHNlbGVjdGlvbnMgYW5kIHN0eWxlcyBvbiB0ZXh0LAorICogYW5kIHVzaW5nIHRoZSBjbGlwYm9hcmQgYW5kIGNvbW1hbmQtbG9nIGZ1bmN0aW9uYWxpdHkuCisgKiBNVGV4dFBhbmVsJ3MgQVBJIGZvciBzZWxlY3Rpb24gYW5kIHRleHQgaGFuZGxpbmcgaXMgc2ltaWxhciB0byB0aGF0CisgKiBvZiA8dHQ+amF2YS5hd3QuVGV4dEFyZWE8L3R0PiBhbmQKKyAqIDx0dD5qYXZhLmF3dC5UZXh0Q29tcG9uZW50PC90dD4uCisgKiA8cD4KKyAqIE1UZXh0UGFuZWwgc3VwcG9ydHMgYmlkaXJlY3Rpb25hbCBhbmQgY29tcGxleCB0ZXh0LiAgSW4gYmlkaXJlY3Rpb25hbAorICogdGV4dCwgb2Zmc2V0cyBhdCBkaXJlY3Rpb24gYm91bmRhcmllcyBoYXZlIGR1YWwgY2FyZXRzLiAgTG9naWNhbCBzZWxlY3Rpb24KKyAqIGlzIHVzZWQsIHNvIHNlbGVjdGlvbnMgYWNyb3NzIHJ1biBkaXJlY3Rpb25zIG1heSBub3QgYmUgY29udGlndW91cyBpbgorICogZGlzcGxheS4KKyAqLworcHVibGljIGludGVyZmFjZSBNVGV4dFBhbmVsIHsKKyAgICAKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworCisgICAgLyoqCisgICAgICogVGhpcyB2YWx1ZSBpcyByZXR1cm5lZCBmcm9tIDx0dD5nZXRDaGFyYWN0ZXJTdHlsZU92ZXJTZWxlY3Rpb248L3R0PgorICAgICAqIGFuZCA8dHQ+Z2V0UGFyYWdyYXBoU3R5bGVPdmVyU2VsZWN0aW9uPC90dD4gdG8gaW5kaWNhdGUgdGhhdCB0aGUKKyAgICAgKiBzZWxlY3Rpb24gcmFuZ2UgY29udGFpbnMgbXVsdGlwbGUgdmFsdWVzIGZvciBhIGtleS4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGVyZSBpcyBubyByZWFzb24gZm9yIHRoaXMgT2JqZWN0IGV2ZXIgdG8gYXBwZWFyIGluIGFuIEF0dHJpYnV0ZU1hcAorICAgICAqIGFzIGEgdmFsdWUuICBPYnZpb3VzbHksIGlmIGl0IGRvZXMgdGhlcmUgd2lsbCBiZSBubyB3YXkgdG8gZGlzdGluZ3Vpc2gKKyAgICAgKiBiZXR3ZWVuIG11bHRpcGxlIHZhbHVlcyBhY3Jvc3MgdGhlIHNlbGVjdGlvbiBhbmQgYSBjb25zaXN0ZW50IHZhbHVlIG9mCisgICAgICogPHR0Pk1VTFRJUExFX1ZBTFVFUzwvdHQ+IGZvciB0aGUga2V5LgorICAgICAqIEBzZWUgI2dldENoYXJhY3RlclN0eWxlT3ZlclNlbGVjdGlvbgorICAgICAqIEBzZWUgI2dldFBhcmFncmFwaFN0eWxlT3ZlclNlbGVjdGlvbgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IE1VTFRJUExFX1ZBTFVFUyA9IG5ldyBPYmplY3QoKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBBZGQgdGhlIGdpdmVuIFRleHRQYW5lbExpc3RlbmVyIHRvIHRoZSBsaXN0ZW5lcnMgd2hpY2ggd2lsbAorICAgICAqIHJlY2VpdmUgdXBkYXRlIG5vdGlmaWNhdGlvbnMgZnJvbSB0aGlzIE1UZXh0UGFuZWwuCisgICAgICogQHBhcmFtIGxpc3RlbmVyIHRoZSBsaXN0ZW5lciB0byBhZGQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhZGRMaXN0ZW5lcihUZXh0UGFuZWxMaXN0ZW5lciBsaXN0ZW5lcik7CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmUgdGhlIGdpdmVuIFRleHRQYW5lbExpc3RlbmVyIGZyb20gdGhlIGxpc3RlbmVycyB3aGljaCB3aWxsCisgICAgICogcmVjZWl2ZSB1cGRhdGUgbm90aWZpY2F0aW9ucyBmcm9tIHRoaXMgTVRleHRQYW5lbC4KKyAgICAgKiBAcGFyYW0gbGlzdGVuZXIgdGhlIGxpc3RlbmVyIHRvIHJlbW92ZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlbW92ZUxpc3RlbmVyKFRleHRQYW5lbExpc3RlbmVyIGxpc3RlbmVyKTsKKworICAgIC8qKgorICAgICAqIFNldCB0aGUgZG9jdW1lbnQgdG8gPHR0Pm5ld1RleHQ8L3R0Pi4gIFRoaXMgb3BlcmF0aW9uCisgICAgICogbW9kaWZpZXMgdGhlIHRleHQgaW4gdGhlIE1UZXh0UGFuZWwuICBJdCBkb2VzIG5vdCBtb2RpZnkgb3IgYWRvcHQKKyAgICAgKiA8dHQ+bmV3VGV4dDwvdHQ+LiAgVGhpcyBtZXRob2Qgc2V0cyB0aGUgc2VsZWN0aW9uIGFuIGluc2VydGlvbiBwb2ludCBhdAorICAgICAqIHRoZSBlbmQgb2YgdGhlIHRleHQuCisgICAgICogQHBhcmFtIG5ld1RleHQgdGhlIHRleHQgd2hpY2ggd2lsbCByZXBsYWNlIHRoZSBjdXJyZW50IHRleHQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0VGV4dChNQ29uc3RUZXh0IG5ld1RleHQpOworICAgIAorICAgIC8qKgorICAgICAqIEFwcGVuZCB0aGUgZ2l2ZW4gdGV4dCB0byB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudC4gIEVxdWl2YWxlbnQgdG8KKyAgICAgKiA8dHQ+aW5zZXJ0KG5ld1RleHQsIGdldFRleHRMZW5ndGgoKSk8L3R0Pi4KKyAgICAgKiBAcGFyYW0gbmV3VGV4dCB0aGUgdGV4dCB0byBhcHBlbmQgdG8gdGhlIGRvY3VtZW50CisgICAgICovCisgICAgcHVibGljIHZvaWQgYXBwZW5kKE1Db25zdFRleHQgbmV3VGV4dCk7CisgICAgCisgICAgLyoqCisgICAgICogSW5zZXJ0IHRoZSBnaXZlbiB0ZXh0IGludG8gdGhlIGRvY3VtZW50IGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4KKyAgICAgKiBFcXVpdmFsZW50IHRvCisgICAgICogPHR0PnJlcGxhY2VSYW5nZShuZXdUZXh0LCBwb3NpdGlvbiwgcG9zaXRpb24pPC90dD4uCisgICAgICogQHBhcmFtIG5ld1RleHQgdGhlIHRleHQgdG8gaW5zZXJ0IGludG8gdGhlIGRvY3VtZW50LgorICAgICAqIEBwYXJhbSBwb3NpdGlvbiB0aGUgcG9zaXRpb24gaW4gdGhlIGRvY3VtZW50IHdoZXJlIHRoZQorICAgICAqICAgICB0ZXh0IHdpbGwgYmUgaW5zZXJ0ZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBpbnNlcnQoTUNvbnN0VGV4dCBuZXdUZXh0LCBpbnQgcG9zaXRpb24pOworCisgICAgLyoqCisgICAgICogUmVwbGFjZSB0aGUgZ2l2ZW4gcmFuZ2Ugd2l0aCA8dHQ+bmV3VGV4dDwvdHQ+LiAgQWZ0ZXIgdGhpcworICAgICAqIG9wZXJhdGlvbiB0aGUgc2VsZWN0aW9uIHJhbmdlIGlzIGFuIGluc2VydGlvbiBwb2ludCBhdCB0aGUKKyAgICAgKiBlbmQgb2YgdGhlIG5ldyB0ZXh0LgorICAgICAqIEBwYXJhbSBuZXdUZXh0IHRoZSB0ZXh0IHdpdGggd2hpY2ggdG8gcmVwbGFjZSB0aGUgcmFuZ2UKKyAgICAgKiBAcGFyYW0gc3RhcnQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcmFuZ2UgdG8gcmVwbGFjZQorICAgICAqIEBwYXJhbSBlbmQgdGhlIGVuZCBvZiB0aGUgcmFuZ2UgdG8gcmVwbGFjZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlcGxhY2VSYW5nZShNQ29uc3RUZXh0IG5ld1RleHQsIGludCBzdGFydCwgaW50IGVuZCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgdGV4dCBkb2N1bWVudCBpbiB0aGUgTVRleHRQYW5lbC4KKyAgICAgKiBAcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIHRleHQgZG9jdW1lbnQgaW4gdGhlIE1UZXh0UGFuZWwKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFRleHRMZW5ndGgoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgdGV4dCBkb2N1bWVudCBpbiB0aGUgTVRleHRQYW5lbC4KKyAgICAgKiBAcmV0dXJuIHRoZSB0ZXh0IGRvY3VtZW50IGluIHRoZSBNVGV4dFBhbmVsLgorICAgICAqLworICAgIHB1YmxpYyBNQ29uc3RUZXh0IGdldFRleHQoKTsKKyAgICAKKy8vPT09PT09PT09PT09CisvLyBTZWxlY3Rpb24gQWNjZXNzCisvLz09PT09PT09PT09PQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBvZmZzZXQgb2YgdGhlIHN0YXJ0IG9mIHRoZSBzZWxlY3Rpb24uCisgICAgICovCisgICAgcHVibGljIGludCBnZXRTZWxlY3Rpb25TdGFydCgpOworCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBvZmZzZXQgb2YgdGhlIGVuZCBvZiB0aGUgc2VsZWN0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0U2VsZWN0aW9uRW5kKCk7CisgICAgCisgICAgLyoqCisgICAgICogU2V0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlbGVjdGlvbiByYW5nZS4gIFRoaXMgaXMKKyAgICAgKiBlcXVpdmFsZW50IHRvIDx0dD5zZWxlY3Qoc2VsZWN0aW9uU3RhcnQsIGdldFNlbGVjdGlvbkVuZCgpKTwvdHQ+LgorICAgICAqIEBwYXJhbSBzZWxlY3Rpb25TdGFydCB0aGUgc3RhcnQgb2YgdGhlIG5ldyBzZWxlY3Rpb24gcmFuZ2UKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRTZWxlY3Rpb25TdGFydChpbnQgc2VsZWN0aW9uU3RhcnQpOworICAgIAorICAgIC8qKgorICAgICAqIFNldCB0aGUgZW5kIG9mIHRoZSBzZWxlY3Rpb24gcmFuZ2UuICBUaGlzIGlzCisgICAgICogZXF1aXZhbGVudCB0byA8dHQ+c2VsZWN0KGdldFNlbGVjdGlvblN0YXJ0KCksIHNlbGVjdGlvbkVuZCk8L3R0Pi4KKyAgICAgKiBAcGFyYW0gc2VsZWN0aW9uU3RhcnQgdGhlIHN0YXJ0IG9mIHRoZSBuZXcgc2VsZWN0aW9uIHJhbmdlCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0U2VsZWN0aW9uRW5kKGludCBzZWxlY3Rpb25FbmQpOworICAgIAorICAgIC8qKgorICAgICAqIFNldCB0aGUgc2VsZWN0aW9uIHJhbmdlIHRvIGFuIGluc2VydGlvbiBwb2ludCBhdCB0aGUgZ2l2ZW4KKyAgICAgKiBvZmZzZXQuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KKyAgICAgKiA8dHQ+c2VsZWN0KHBvc2l0aW9uLCBwb3NpdGlvbik8L3R0Pi4KKyAgICAgKiBAcGFyYW0gcG9zaXRpb24gdGhlIG9mZnNldCBvZiB0aGUgbmV3IGluc2VydGlvbiBwb2ludAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldENhcmV0UG9zaXRpb24oaW50IHBvc2l0aW9uKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIHNlbGVjdGlvbiByYW5nZSB0byB0aGUgZ2l2ZW4gcmFuZ2UuICBUaGUgcmFuZ2Ugc3RhcnQKKyAgICAgKiBpcyBwaW5uZWQgYmV0d2VlbiAwIGFuZCB0aGUgdGV4dCBsZW5ndGg7ICB0aGUgcmFuZ2UgZW5kIGlzIHBpbm5lZAorICAgICAqIGJldHdlZW4gdGhlIHJhbmdlIHN0YXJ0IGFuZCB0aGUgZW5kIG9mIHRoZSB0ZXh0LiAgVGhlc2Ugc2VtYW50aWNzCisgICAgICogYXJlIGlkZW50aWNhbCB0byB0aG9zZSBvZiA8dHQ+amF2YS5hd3QuVGV4dENvbXBvbmVudDwvdHQ+LgorICAgICAqIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlIHRleHQgaXMgbm90IHNlbGVjdGFibGUuCisgICAgICogQHBhcmFtIHNlbGVjdGlvblN0YXJ0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlbGVjdGlvbiByYW5nZQorICAgICAqIEBwYXJhbSBzZWxlY3Rpb25FbmQgdGhlIGVuZCBvZiB0aGUgc2VsZWN0aW9uIHJhbmdlCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2VsZWN0KGludCBzZWxlY3Rpb25TdGFydCwgaW50IHNlbGVjdGlvbkVuZCk7CisgICAgCisgICAgLyoqCisgICAgICogU2VsZWN0IGFsbCBvZiB0aGUgdGV4dCBpbiB0aGUgZG9jdW1lbnQuICBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmCisgICAgICogdGhlIHRleHQgaXMgbm90IHNlbGVjdGFibGUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2VsZWN0QWxsKCk7CisgICAgCisKKy8vPT09PT09PT09PT09CisvLyBGb3JtYXQgV2lkdGgKKy8vPT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHRvdGFsIGZvcm1hdCB3aWR0aCwgaW4gcGl4ZWxzLiAgVGhlIGZvcm1hdCB3aWR0aCBpcyB0aGUKKyAgICAgKiB3aWR0aCB0byB3aGljaCB0ZXh0IGlzIHdyYXBwZWQuCisgICAgICogQHJldHVybiB0aGUgZm9ybWF0IHdpZHRoCisgICAgICovCisgICAgcHVibGljIGludCBnZXRGb3JtYXRXaWR0aCgpOworICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBwYXJhZ3JhcGggYXQgdGhlIGdpdmVuIG9mZnNldCBpcyBsZWZ0LXRvLXJpZ2h0LgorICAgICAqIEBwYXJhbSBvZmZzZXQgYW4gb2Zmc2V0IGluIHRoZSB0ZXh0CisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBwYXJhZ3JhcGggYXQgdGhlIGdpdmVuIG9mZnNldCBpcyBsZWZ0LXRvLXJpZ2h0CisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gcGFyYWdyYXBoSXNMZWZ0VG9SaWdodChpbnQgb2Zmc2V0KTsKKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGEgY2hhbmdlIHdoaWNoIGNhbiBiZSB1bmRvbmUuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGEgY2hhbmdlIHdoaWNoIGNhbiBiZSB1bmRvbmUuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gY2FuVW5kbygpOworICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGEgY2hhbmdlIHdoaWNoIGNhbiBiZSByZWRvbmUuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGEgY2hhbmdlIHdoaWNoIGNhbiBiZSByZWRvbmUuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gY2FuUmVkbygpOworICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBjbGlwYm9hcmQgY29udGFpbnMgY29udGVudHMgd2hpY2ggY291bGQgYmUKKyAgICAgKiB0cmFuc2ZlcmVkIGludG8gdGhlIHRleHQuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBjbGlwYm9hcmQgaGFzIHRleHQgY29udGVudC4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjbGlwYm9hcmROb3RFbXB0eSgpOworICAgIAorCisvLz09PT09PT09PT09PQorLy8gU3R5bGVzCisvLz09PT09PT09PT09PQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGFuIEF0dHJpYnV0ZU1hcCBvZiBrZXlzIHdpdGggZGVmYXVsdCB2YWx1ZXMuICBUaGUgZGVmYXVsdAorICAgICAqIHZhbHVlcyBhcmUgdXNlZCB3aGVuIGRpc3BsYXlpbmcgdGV4dCBmb3IgdmFsdWVzIHdoaWNoIGFyZSBub3QKKyAgICAgKiBzcGVjaWZpZWQgaW4gdGhlIHRleHQuCisgICAgICogQHJldHVybiBhbiBBdHRyaWJ1dGVNYXAgb2YgZGVmYXVsdCBrZXktdmFsdWUgcGFpcnMKKyAgICAgKi8KKyAgICBwdWJsaWMgQXR0cmlidXRlTWFwIGdldERlZmF1bHRWYWx1ZXMoKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBUaGlzIG1ldGhvZCBpbnNwZWN0cyB0aGUgY2hhcmFjdGVyIHN0eWxlIHJ1bnMgaW4gdGhlIHNlbGVjdGlvbgorICAgICAqIHJhbmdlIChvciB0aGUgdHlwaW5nIHN0eWxlIGF0IHRoZSBpbnNlcnRpb24gcG9pbnQpLiAgSXQgcmV0dXJuczoKKyAgICAgKiA8dWw+CisgICAgICogPGxpPlRoZSB2YWx1ZSBvZiA8dHQ+a2V5PC90dD4sIGlmIHRoZSB2YWx1ZSBvZiA8dHQ+a2V5PC90dD4KKyAgICAgKiBpcyB0aGUgc2FtZSBpbiBhbGwgb2YgdGhlIHN0eWxlIHJ1bnMgaW4gdGhlIHNlbGVjdGlvbiwgb3I8L2xpPgorICAgICAqIDxsaT48dHQ+TVVMVElQTEVfVkFMVUVTPC90dD4sIGlmIHR3byBvciBtb3JlIHN0eWxlIHJ1bnMgaGF2ZSBkaWZmZXJlbnQgCisgICAgICogdmFsdWVzIGZvciA8dHQ+a2V5PC90dD4uPC9saT4KKyAgICAgKiA8L3VsPgorICAgICAqIElmIGEgc3R5bGUgcnVuIGRvZXMgbm90IGNvbnRhaW4gPHR0PmtleTwvdHQ+LAorICAgICAqIGl0cyB2YWx1ZSBpcyBjb25zaWRlcmVkIHRvIGJlIHRoZSBkZWZhdWx0IHN0eWxlIGZvciA8dHQ+a2V5PC90dD4sCisgICAgICogYXMgZGVmaW5lZCBieSB0aGUgZGVmYXVsdCB2YWx1ZXMgQXR0cmlidXRlTWFwLiAgTm90ZSB0aGF0IGlmCisgICAgICogPHR0PmtleTwvdHQ+IGRvZXMgbm90IGhhdmUgYSBkZWZhdWx0IHZhbHVlIHRoaXMgbWV0aG9kIG1heSByZXR1cm4KKyAgICAgKiBudWxsLgorICAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCBmb3IgY29uZmlndXJpbmcgc3R5bGUgbWVudXMuCisgICAgICogQHBhcmFtIGtleSB0aGUga2V5IHVzZWQgdG8gcmV0cmlldmUgdmFsdWVzIGZvciBjb21wYXJpc29uCisgICAgICogQHNlZSAjTVVMVElQTEVfVkFMVUVTCisgICAgICovCisgICAgcHVibGljIE9iamVjdCBnZXRDaGFyYWN0ZXJTdHlsZU92ZXJTZWxlY3Rpb24oT2JqZWN0IGtleSk7CisgICAgCisgICAgLyoqCisgICAgICogVGhpcyBtZXRob2QgaW5zcGVjdHMgdGhlIHBhcmFncmFwaCBzdHlsZSBydW5zIGluIHRoZSBzZWxlY3Rpb24KKyAgICAgKiByYW5nZSAob3IgdGhlIHR5cGluZyBzdHlsZSBhdCB0aGUgaW5zZXJ0aW9uIHBvaW50KS4gIEl0IHJldHVybnM6CisgICAgICogPHVsPgorICAgICAqIDxsaT5UaGUgdmFsdWUgb2YgPHR0PmtleTwvdHQ+LCBpZiB0aGUgdmFsdWUgb2YgPHR0PmtleTwvdHQ+CisgICAgICogaXMgdGhlIHNhbWUgaW4gYWxsIG9mIHRoZSBzdHlsZSBydW5zIGluIHRoZSBzZWxlY3Rpb24sIG9yPC9saT4KKyAgICAgKiA8bGk+PHR0Pk1VTFRJUExFX1ZBTFVFUzwvdHQ+LCBpZiB0d28gb3IgbW9yZSBzdHlsZSBydW5zIGhhdmUgCisgICAgICogZGlmZmVyZW50IHZhbHVlcyBmb3IgPHR0PmtleTwvdHQ+LjwvbGk+CisgICAgICogPC91bD4KKyAgICAgKiBJZiBhIHN0eWxlIHJ1biBkb2VzIG5vdCBjb250YWluIDx0dD5rZXk8L3R0PiwKKyAgICAgKiBpdHMgdmFsdWUgaXMgY29uc2lkZXJlZCB0byBiZSB0aGUgZGVmYXVsdCBzdHlsZSBmb3IgPHR0PmtleTwvdHQ+LAorICAgICAqIGFzIGRlZmluZWQgYnkgdGhlIGRlZmF1bHQgdmFsdWVzIEF0dHJpYnV0ZU1hcC4gIE5vdGUgdGhhdCBpZgorICAgICAqIDx0dD5rZXk8L3R0PiBkb2VzIG5vdCBoYXZlIGEgZGVmYXVsdCB2YWx1ZSB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuCisgICAgICogbnVsbC4KKyAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgZm9yIGNvbmZpZ3VyaW5nIHN0eWxlIG1lbnVzLgorICAgICAqIEBwYXJhbSBrZXkgdGhlIGtleSB1c2VkIHRvIHJldHJpZXZlIHZhbHVlcyBmb3IgY29tcGFyaXNvbgorICAgICAqIEBzZWUgI01VTFRJUExFX1ZBTFVFUworICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgZ2V0UGFyYWdyYXBoU3R5bGVPdmVyU2VsZWN0aW9uKE9iamVjdCBrZXkpOworICAgIAorICAgIC8qKgorICAgICAqIFJlbW92ZSB0aGUgc2VsZWN0ZWQgdGV4dCBmcm9tIHRoZSBkb2N1bWVudCBhbmQgcGxhY2UgaXQKKyAgICAgKiBvbiB0aGUgY2xpcGJvYXJkLiAgVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgdGV4dAorICAgICAqIGlzIG5vdCBlZGl0YWJsZSwgb3IgaWYgbm8gdGV4dCBpcyBzZWxlY3RlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjdXQoKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBQbGFjZSB0aGUgc2VsZWN0ZWQgdGV4dCBvbiB0aGUgY2xpcGJvYXJkLiAgVGhpcyBtZXRob2QgaGFzCisgICAgICogbm8gZWZmZWN0IGlmIG5vIHRleHQgaXMgc2VsZWN0ZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgY29weSgpOworICAgIAorICAgIC8qKgorICAgICAqIFJlcGxhY2UgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0ZXh0IHdpdGggdGhlIHRleHQgb24gdGhlIGNsaXBib2FyZC4KKyAgICAgKiBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZSB0ZXh0IGlzIG5vdCBlZGl0YWJsZSwgb3IgaWYgbm8KKyAgICAgKiB0ZXh0IGlzIG9uIHRoZSBjbGlwYm9hcmQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgcGFzdGUoKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBSZW1vdmUgc2VsZWN0ZWQgdGV4dCBmcm9tIHRoZSBkb2N1bWVudCwgd2l0aG91dCBhbHRlcmluZyB0aGUgY2xpcGJvYXJkLgorICAgICAqIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlCisgICAgICogdGV4dCBpcyBub3QgZWRpdGFibGUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgY2xlYXIoKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBVbmRvIHRoZSBtb3N0IHJlY2VudCB0ZXh0IGNoYW5nZS4gIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYKKyAgICAgKiB0aGVyZSBpcyBubyBjaGFuZ2UgdG8gdW5kby4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB1bmRvKCk7CisgICAgCisgICAgLyoqCisgICAgICogUmVkbyB0aGUgbW9zdCByZWNlbnQgdGV4dCBjaGFuZ2UuICBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmCisgICAgICogdGhlcmUgaXMgbm8gY2hhbmdlIHRvIHJlZG8uCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVkbygpOworICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGNvbW1hbmRzIHRoZSBjb21tYW5kIGxvZyBjYW4gaG9sZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgY29tbWFuZHMgdGhlIGNvbW1hbmQgbG9nIGNhbiBob2xkCisgICAgICovCisgICAgcHVibGljIGludCBnZXRDb21tYW5kTG9nU2l6ZSgpOworICAgIAorICAgIC8qKgorICAgICAqIFNldCB0aGUgbnVtYmVyIG9mIGNvbW1hbmRzIHRoZSBjb21tYW5kIGxvZyBjYW4gaG9sZC4gIEFsbAorICAgICAqIHJlZG9hYmxlIGNvbW1hbmRzIGFyZSByZW1vdmVkIHdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkLgorICAgICAqIEBwYXJhbSBzaXplIHRoZSBudW1iZXIgb2YgY29tbWFuZHMga2VwdCBpbiB0aGUgY29tbWFuZCBsb2cKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRDb21tYW5kTG9nU2l6ZShpbnQgc2l6ZSk7CisgICAgCisgICAgLyoqCisgICAgICogUmVtb3ZlIGFsbCBjb21tYW5kcyBmcm9tIHRoZSBjb21tYW5kIGxvZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhckNvbW1hbmRMb2coKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBNb2RpZnkgdGhlIGNoYXJhY3RlciBzdHlsZXMgb24gdGhlIHNlbGVjdGVkIGNoYXJhY3RlcnMuICBJZiBubyBjaGFyYWN0ZXJzCisgICAgICogYXJlIHNlbGVjdGVkLCBtb2RpZnkgdGhlIHR5cGluZyBzdHlsZS4KKyAgICAgKiBAcGFyYW0gbW9kaWZpZXIgdGhlIFN0eWxlTW9kaWZpZXIgd2l0aCB3aGljaCB0byBtb2RpZnkgdGhlIHN0eWxlcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIG1vZGlmeUNoYXJhY3RlclN0eWxlT25TZWxlY3Rpb24oU3R5bGVNb2RpZmllciBtb2RpZmllcik7CisgICAgCisgICAgLyoqCisgICAgICogTW9kaWZ5IHRoZSBwYXJhZ3JhcGggc3R5bGVzIGluIHBhcmFncmFwaHMgY29udGFpbmluZyBzZWxlY3RlZCBjaGFyYWN0ZXJzLCBvcgorICAgICAqIHRoZSBwYXJhZ3JhcGggY29udGFpbmluZyB0aGUgaW5zZXJ0aW9uIHBvaW50LgorICAgICAqIEBwYXJhbSBtb2RpZmllciB0aGUgU3R5bGVNb2RpZmllciB3aXRoIHdoaWNoIHRvIG1vZGlmeSB0aGUgc3R5bGVzCisgICAgICovCisgICAgcHVibGljIHZvaWQgbW9kaWZ5UGFyYWdyYXBoU3R5bGVPblNlbGVjdGlvbihTdHlsZU1vZGlmaWVyIG1vZGlmaWVyKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIEtleVJlbWFwIHVzZWQgdG8gcHJvY2VzcyBrZXkgZXZlbnRzLgorICAgICAqIEByZXR1cm4gdGhlIGtleSByZW1hcCB1c2VkIHRvIHByb2Nlc3Mga2V5IGV2ZW50cworICAgICAqIEBzZWUgI3NldEtleVJlbWFwCisgICAgICovCisgICAgcHVibGljIEtleVJlbWFwIGdldEtleVJlbWFwKCk7CisgICAgCisgICAgLyoqCisgICAgICogVXNlIHRoZSBnaXZlbiBLZXlSZW1hcCB0byBtYXAga2V5IGV2ZW50cyB0byBjaGFyYWN0ZXJzLgorICAgICAqIE9ubHkga2V5CisgICAgICogZXZlbnRzIGFyZSBhZmZlY3RlZCBieSB0aGUgcmVtYXA7ICBvdGhlciB0ZXh0IGVudGVyaW5nIHRoZQorICAgICAqIGNvbnRyb2wgKHZpYSB0aGUgY2xpcGJvYXJkLCBmb3IgZXhhbXBsZSkgaXMgbm90IGFmZmVjdGVkCisgICAgICogYnkgdGhlIEtleVJlbWFwLgorICAgICAqIDxwPgorICAgICAqIERvIG5vdCBwYXNzIDx0dD5udWxsPC90dD4gdG8gdGhpcyBtZXRob2QgdG8gbGVhdmUga2V5CisgICAgICogZXZlbnRzIHVubWFwcGVkLiAgSW5zdGVhZCwgdXNlIDx0dD5LZXlSZW1hcC5nZXRJZGVudGl0eVJlbWFwKCk8L3R0PgorICAgICAqIEBwYXJhbSByZW1hcCB0aGUgS2V5UmVtYXAgdG8gdXNlIGZvciBtYXBwaW5nIGtleSBldmVudHMgdG8gY2hhcmFjdGVycworICAgICAqIEBleGNlcHRpb24gamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uIGlmIHBhcmFtZXRlciBpcyBudWxsCisgICAgICogQHNlZSBLZXlSZW1hcAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEtleVJlbWFwKEtleVJlbWFwIHJlbWFwKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG1vZGlmaWNhdGlvbiBmbGFnIG9mIHRoZSBjdXJyZW50IHRleHQgY2hhbmdlLgorICAgICAqIEBzZWUgI3NldE1vZGlmaWVkCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNNb2RpZmllZCgpOworICAgIAorICAgIC8qKgorICAgICAqIFNldCB0aGUgbW9kaWZpY2F0aW9uIGZsYWcgb2YgdGhlIGN1cnJlbnQgdGV4dCBjaGFuZ2UuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TW9kaWZpZWQoYm9vbGVhbiBtb2RpZmllZCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvT2Zmc2NyZWVuQnVmZmVyQ2FjaGUuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9PZmZzY3JlZW5CdWZmZXJDYWNoZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjczNDRiZWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvT2Zmc2NyZWVuQnVmZmVyQ2FjaGUuamF2YQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBPZmZzY3JlZW5CdWZmZXJDYWNoZS5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUxOjIzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCitpbXBvcnQgamF2YS5hd3QuSW1hZ2U7CitpbXBvcnQgamF2YS5hd3QuQ29tcG9uZW50OworCitjbGFzcyBPZmZzY3JlZW5CdWZmZXJDYWNoZSB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgSW1hZ2UgZk9mZnNjcmVlbkJ1ZmZlciA9IG51bGw7CisgICAgcHJpdmF0ZSBDb21wb25lbnQgZkhvc3Q7CisKKyAgICBPZmZzY3JlZW5CdWZmZXJDYWNoZShDb21wb25lbnQgaG9zdCkgeworCisgICAgICAgIGZIb3N0ID0gaG9zdDsKKyAgICB9CisKKyAgICBwcml2YXRlIEltYWdlIG1ha2VCdWZmZXIoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB7CisKKyAgICAgICAgcmV0dXJuIGZIb3N0LmNyZWF0ZUltYWdlKE1hdGgubWF4KHdpZHRoLCAxKSwgTWF0aC5tYXgoaGVpZ2h0LCAxKSk7CisgICAgfQorCisgICAgSW1hZ2UgZ2V0QnVmZmVyKGludCB3aWR0aCwgaW50IGhlaWdodCkgeworCisgICAgICAgIEltYWdlIGJ1ZmZlciA9IGZPZmZzY3JlZW5CdWZmZXI7CisKKyAgICAgICAgaWYgKGJ1ZmZlciAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAoYnVmZmVyLmdldFdpZHRoKGZIb3N0KSA+PSB3aWR0aCAmJgorICAgICAgICAgICAgICAgICAgICBidWZmZXIuZ2V0SGVpZ2h0KGZIb3N0KSA+PSBoZWlnaHQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYnVmZmVyOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgYnVmZmVyID0gbWFrZUJ1ZmZlcih3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgZk9mZnNjcmVlbkJ1ZmZlciA9IGJ1ZmZlcjsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1BhbmVsRXZlbnRCcm9hZGNhc3Rlci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1BhbmVsRXZlbnRCcm9hZGNhc3Rlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjhmMjUyNTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvUGFuZWxFdmVudEJyb2FkY2FzdGVyLmphdmEKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFBhbmVsRXZlbnRCcm9hZGNhc3Rlci5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUxOjIzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKKworLyoqCisgKiBUaGlzIGNsYXNzIGxpc3RlbnMgZm9yIHRleHQgc3RhdGUgY2hhbmdlIG5vdGlmaWNhdGlvbnMKKyAqIGFuZCBicm9hZGNhc3RzIHRoZW0gdG8gYWxsIG9mIGl0cyBsaXN0ZW5lcnMuCisgKi8KK2ZpbmFsIGNsYXNzIFBhbmVsRXZlbnRCcm9hZGNhc3RlciB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBGSVJTVCA9IFRleHRQYW5lbEV2ZW50LlRFWFRfUEFORUxfRklSU1Q7CisKKyAgICBwcml2YXRlIGZpbmFsIFZlY3RvcltdIGZMaXN0ZW5lcnM7CisgICAgcHJpdmF0ZSBmaW5hbCBUZXh0UGFuZWxFdmVudFtdIGZFdmVudHM7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBuZXcgUGFuZWxFdmVudEJyb2FkY2FzdGVyLgorICAgICAqIEBwYXJhbSBwYW5lbCB0aGUgVGV4dFBhbmVsIGZvciB3aGljaCBldmVudHMgYXJlIGJyb2FkY2FzdGVkCisgICAgICovCisgICAgcHVibGljIFBhbmVsRXZlbnRCcm9hZGNhc3RlcihNVGV4dFBhbmVsIHBhbmVsKSB7CisKKyAgICAgICAgaW50IGNvdW50ID0gVGV4dFBhbmVsRXZlbnQuVEVYVF9QQU5FTF9MQVNUIC0gRklSU1QgKyAxOworCisgICAgICAgIGZFdmVudHMgPSBuZXcgVGV4dFBhbmVsRXZlbnRbY291bnRdOworICAgICAgICBmTGlzdGVuZXJzID0gbmV3IFZlY3Rvcltjb3VudF07CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBmTGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBmRXZlbnRzW2ldID0gbmV3IFRleHRQYW5lbEV2ZW50KHBhbmVsLCBpK0ZJUlNUKTsKKyAgICAgICAgICAgIGZMaXN0ZW5lcnNbaV0gPSBuZXcgVmVjdG9yKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBZGQgdGhlIGdpdmVuIFRleHRQYW5lbExpc3RlbmVyIHRvIHRoZSBUZXh0UGFuZWxMaXN0ZW5lcnMgdG8KKyAgICAgKiB3aGljaCBub3RpZmljYXRpb25zIGFyZSBmb3J3YXJkZWQuCisgICAgICogQHBhcmFtIGxpc3RlbmVyIHRoZSBsaXN0ZW5lciB0byBhZGQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgYWRkTGlzdGVuZXIoVGV4dFBhbmVsTGlzdGVuZXIgbGlzdGVuZXIpIHsKKworICAgICAgICBmb3IgKGludCBpPUZJUlNUOyBpIDw9IFRleHRQYW5lbEV2ZW50LlRFWFRfUEFORUxfTEFTVDsgaSsrKSB7CisgICAgICAgICAgICBWZWN0b3IgbGlzdGVuZXJzID0gZkxpc3RlbmVyc1tpLUZJUlNUXTsKKyAgICAgICAgICAgIGlmIChsaXN0ZW5lci5yZXNwb25kc1RvRXZlbnRUeXBlKGkpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFsaXN0ZW5lcnMuY29udGFpbnMobGlzdGVuZXIpKSB7CisgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVycy5hZGRFbGVtZW50KGxpc3RlbmVyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmUgdGhlIGdpdmVuIFRleHRQYW5lbExpc3RlbmVyIGZyb20gdGhlIFRleHRQYW5lbExpc3RlbmVycyB0bworICAgICAqIHdoaWNoIG5vdGlmaWNhdGlvbnMgYXJlIGZvcndhcmRlZC4KKyAgICAgKiBAcGFyYW0gbGlzdGVuZXIgdGhlIGxpc3RlbmVyIHRvIHJlbW92ZQorICAgICAqLworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCByZW1vdmVMaXN0ZW5lcihUZXh0UGFuZWxMaXN0ZW5lciBsaXN0ZW5lcikgeworCisgICAgICAgIGZvciAoaW50IGk9RklSU1Q7IGkgPD0gVGV4dFBhbmVsRXZlbnQuVEVYVF9QQU5FTF9MQVNUOyBpKyspIHsKKyAgICAgICAgICAgIFZlY3RvciBsaXN0ZW5lcnMgPSBmTGlzdGVuZXJzW2ktRklSU1RdOworICAgICAgICAgICAgaWYgKGxpc3RlbmVyLnJlc3BvbmRzVG9FdmVudFR5cGUoaSkpIHsKKyAgICAgICAgICAgICAgICBsaXN0ZW5lcnMucmVtb3ZlRWxlbWVudChsaXN0ZW5lcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWNlaXZlIGEgbm90aWZpY2F0aW9uIGFuZCBmb3J3YXJkIGl0IHRvIGFsbCBsaXN0ZW5lcnMuCisgICAgICogQGNoYW5nZUNvZGUgb25lIG9mIHRoZSBjb25zdGFudHMgaW4gdGhlIFRleHRQYW5lbExpc3RlbmVyIGNsYXNzCisgICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHRleHRTdGF0ZUNoYW5nZWQoaW50IGlkKSB7CisKKyAgICAgICAgaW50IGluZGV4ID0gaWQtRklSU1Q7CisgICAgICAgIFRleHRQYW5lbEV2ZW50IGV2ZW50ID0gZkV2ZW50c1tpbmRleF07CisgICAgICAgIFZlY3RvciBsaXN0ZW5lcnMgPSBmTGlzdGVuZXJzW2luZGV4XTsKKyAgICAgICAgCisgICAgICAgIGludCBzaXplID0gbGlzdGVuZXJzLnNpemUoKTsKKworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBzaXplOyBpKyspIHsKKworICAgICAgICAgICAgVGV4dFBhbmVsTGlzdGVuZXIgbGlzdGVuZXIgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUZXh0UGFuZWxMaXN0ZW5lcikgbGlzdGVuZXJzLmVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgIGxpc3RlbmVyLnRleHRFdmVudE9jY3VycmVkKGV2ZW50KTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9SdW5TdHJhdGVneS5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1J1blN0cmF0ZWd5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYTdiMTI5MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9SdW5TdHJhdGVneS5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFJ1blN0cmF0ZWd5LmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2NsYXNzIFJ1blN0cmF0ZWd5IHsKKyAgICAKKyAgICB2b2lkIGRvSXQoUnVubmFibGUgcikgeworICAgICAgICByLnJ1bigpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvU2Nyb2xsQmFyTGF5b3V0LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvU2Nyb2xsQmFyTGF5b3V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzA2ZmY2YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9TY3JvbGxCYXJMYXlvdXQuamF2YQpAQCAtMCwwICsxLDE1MyBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogU2Nyb2xsQmFyTGF5b3V0LmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBqYXZhLmF3dC5Db21wb25lbnQ7CitpbXBvcnQgamF2YS5hd3QuQ29udGFpbmVyOworaW1wb3J0IGphdmEuYXd0LkRpbWVuc2lvbjsKK2ltcG9ydCBqYXZhLmF3dC5JbnNldHM7CitpbXBvcnQgamF2YS5hd3QuTGF5b3V0TWFuYWdlcjsKKworY2xhc3MgU2Nyb2xsQmFyTGF5b3V0IGltcGxlbWVudHMgTGF5b3V0TWFuYWdlciB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIENvbXBvbmVudCAgIGZIb3JpelNjcm9sbEJhciA9IG51bGw7CisgICAgQ29tcG9uZW50ICAgZlZlcnRTY3JvbGxCYXIgPSBudWxsOworICAgIENvbXBvbmVudCAgIGZDaGlsZCA9IG51bGw7CisKKyAgICBwdWJsaWMgU2Nyb2xsQmFyTGF5b3V0KCkgeworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGFkZExheW91dENvbXBvbmVudChTdHJpbmcgbmFtZSwgQ29tcG9uZW50IGNvbXApIHsKKworICAgICAgICBpZiAoIkNlbnRlciIuZXF1YWxzKG5hbWUpKQorICAgICAgICAgICAgZkNoaWxkID0gY29tcDsKKyAgICAgICAgZWxzZSBpZiAoIlNvdXRoIi5lcXVhbHMobmFtZSkpCisgICAgICAgICAgICBmSG9yaXpTY3JvbGxCYXIgPSBjb21wOworICAgICAgICBlbHNlIGlmICgiRWFzdCIuZXF1YWxzKG5hbWUpKQorICAgICAgICAgICAgZlZlcnRTY3JvbGxCYXIgPSBjb21wOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGxheW91dENvbnRhaW5lcihDb250YWluZXIgdGFyZ2V0KSB7CisKKyAgICAgICAgSW5zZXRzICAgICAgaW5zZXRzID0gdGFyZ2V0LmdldEluc2V0cygpOworICAgICAgICBEaW1lbnNpb24gICB0YXJnZXRTaXplID0gdGFyZ2V0LmdldFNpemUoKTsKKyAgICAgICAgaW50ICAgICAgICAgaHNiSGVpZ2h0ID0gKGZIb3JpelNjcm9sbEJhciAhPSBudWxsKSA/IGZIb3JpelNjcm9sbEJhci5nZXRQcmVmZXJyZWRTaXplKCkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0IDogMDsKKyAgICAgICAgaW50ICAgICAgICAgdnNiV2lkdGggPSAoZlZlcnRTY3JvbGxCYXIgIT0gbnVsbCkgPyBmVmVydFNjcm9sbEJhci5nZXRQcmVmZXJyZWRTaXplKCkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGggOiAwOworCisgICAgICAgIGlmIChmSG9yaXpTY3JvbGxCYXIgIT0gbnVsbCkKKyAgICAgICAgICAgIGZIb3JpelNjcm9sbEJhci5zZXRCb3VuZHMoaW5zZXRzLmxlZnQsIHRhcmdldFNpemUuaGVpZ2h0IC0gaW5zZXRzLmJvdHRvbSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhzYkhlaWdodCwgdGFyZ2V0U2l6ZS53aWR0aCAtIHZzYldpZHRoLCBoc2JIZWlnaHQpOworCisgICAgICAgIGlmIChmVmVydFNjcm9sbEJhciAhPSBudWxsKQorICAgICAgICAgICAgZlZlcnRTY3JvbGxCYXIuc2V0Qm91bmRzKHRhcmdldFNpemUud2lkdGggLSBpbnNldHMucmlnaHQgLSB2c2JXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXRzLnRvcCwgdnNiV2lkdGgsIHRhcmdldFNpemUuaGVpZ2h0IC0gaHNiSGVpZ2h0KTsKKworICAgICAgICBpZiAoZkNoaWxkICE9IG51bGwpCisgICAgICAgICAgICBmQ2hpbGQuc2V0Qm91bmRzKGluc2V0cy5sZWZ0LCBpbnNldHMudG9wLCB0YXJnZXRTaXplLndpZHRoIC0gaW5zZXRzLnJpZ2h0IC0gdnNiV2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFNpemUuaGVpZ2h0IC0gaW5zZXRzLmJvdHRvbSAtIGhzYkhlaWdodCk7CisgICAgfQorCisgICAgcHVibGljIERpbWVuc2lvbiBtaW5pbXVtTGF5b3V0U2l6ZShDb250YWluZXIgdGFyZ2V0KSB7CisKKyAgICAgICAgRGltZW5zaW9uICAgcmV0dXJuVmFsID0gbmV3IERpbWVuc2lvbigwLCAwKTsKKyAgICAgICAgRGltZW5zaW9uICAgaHNiU2l6ZTsKKyAgICAgICAgRGltZW5zaW9uICAgdnNiU2l6ZTsKKyAgICAgICAgRGltZW5zaW9uICAgY2hpbGRTaXplOworCisgICAgICAgIGlmIChmSG9yaXpTY3JvbGxCYXIgIT0gbnVsbCAmJiBmSG9yaXpTY3JvbGxCYXIuaXNWaXNpYmxlKCkpIHsKKyAgICAgICAgICAgIGhzYlNpemUgPSBmSG9yaXpTY3JvbGxCYXIuZ2V0TWluaW11bVNpemUoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGhzYlNpemUgPSBuZXcgRGltZW5zaW9uKDAsIDApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZWZXJ0U2Nyb2xsQmFyICE9IG51bGwgJiYgZlZlcnRTY3JvbGxCYXIuaXNWaXNpYmxlKCkpIHsKKyAgICAgICAgICAgIHZzYlNpemUgPSBmVmVydFNjcm9sbEJhci5nZXRNaW5pbXVtU2l6ZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdnNiU2l6ZSA9IG5ldyBEaW1lbnNpb24oMCwgMCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZkNoaWxkICE9IG51bGwgJiYgZkNoaWxkLmlzVmlzaWJsZSgpKSB7CisgICAgICAgICAgICBjaGlsZFNpemUgPSBmQ2hpbGQuZ2V0TWluaW11bVNpemUoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNoaWxkU2l6ZSA9IG5ldyBEaW1lbnNpb24oMCwgMCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm5WYWwud2lkdGggPSBNYXRoLm1heChjaGlsZFNpemUud2lkdGgsIGhzYlNpemUud2lkdGgpICsgdnNiU2l6ZS53aWR0aDsKKyAgICAgICAgcmV0dXJuVmFsLmhlaWdodCA9IE1hdGgubWF4KGNoaWxkU2l6ZS5oZWlnaHQsIHZzYlNpemUuaGVpZ2h0KSArIGhzYlNpemUuaGVpZ2h0OworCisgICAgICAgIEluc2V0cyAgaW5zZXRzID0gdGFyZ2V0LmdldEluc2V0cygpOworCisgICAgICAgIHJldHVyblZhbC53aWR0aCArPSBpbnNldHMubGVmdCArIGluc2V0cy5yaWdodDsKKyAgICAgICAgcmV0dXJuVmFsLmhlaWdodCArPSBpbnNldHMudG9wICsgaW5zZXRzLmJvdHRvbTsKKworICAgICAgICByZXR1cm4gcmV0dXJuVmFsOworICAgIH0KKworICAgIHB1YmxpYyBEaW1lbnNpb24gcHJlZmVycmVkTGF5b3V0U2l6ZShDb250YWluZXIgdGFyZ2V0KSB7CisKKyAgICAgICAgRGltZW5zaW9uICAgcmV0dXJuVmFsID0gbmV3IERpbWVuc2lvbigwLCAwKTsKKyAgICAgICAgRGltZW5zaW9uICAgaHNiU2l6ZTsKKyAgICAgICAgRGltZW5zaW9uICAgdnNiU2l6ZTsKKyAgICAgICAgRGltZW5zaW9uICAgY2hpbGRTaXplOworCisgICAgICAgIGlmIChmSG9yaXpTY3JvbGxCYXIgIT0gbnVsbCAmJiBmSG9yaXpTY3JvbGxCYXIuaXNWaXNpYmxlKCkpIHsKKyAgICAgICAgICAgIGhzYlNpemUgPSBmSG9yaXpTY3JvbGxCYXIuZ2V0UHJlZmVycmVkU2l6ZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaHNiU2l6ZSA9IG5ldyBEaW1lbnNpb24oMCwgMCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZlZlcnRTY3JvbGxCYXIgIT0gbnVsbCAmJiBmVmVydFNjcm9sbEJhci5pc1Zpc2libGUoKSkgeworICAgICAgICAgICAgdnNiU2l6ZSA9IGZWZXJ0U2Nyb2xsQmFyLmdldFByZWZlcnJlZFNpemUoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZzYlNpemUgPSBuZXcgRGltZW5zaW9uKDAsIDApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZDaGlsZCAhPSBudWxsICYmIGZDaGlsZC5pc1Zpc2libGUoKSkgeworICAgICAgICAgICAgY2hpbGRTaXplID0gZkNoaWxkLmdldFByZWZlcnJlZFNpemUoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNoaWxkU2l6ZSA9IG5ldyBEaW1lbnNpb24oMCwgMCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm5WYWwud2lkdGggPSBNYXRoLm1heChjaGlsZFNpemUud2lkdGgsIGhzYlNpemUud2lkdGgpICsgdnNiU2l6ZS53aWR0aDsKKyAgICAgICAgcmV0dXJuVmFsLmhlaWdodCA9IE1hdGgubWF4KGNoaWxkU2l6ZS5oZWlnaHQsIHZzYlNpemUuaGVpZ2h0KSArIGhzYlNpemUuaGVpZ2h0OworCisgICAgICAgIEluc2V0cyAgaW5zZXRzID0gdGFyZ2V0LmdldEluc2V0cygpOworCisgICAgICAgIHJldHVyblZhbC53aWR0aCArPSBpbnNldHMubGVmdCArIGluc2V0cy5yaWdodDsKKyAgICAgICAgcmV0dXJuVmFsLmhlaWdodCArPSBpbnNldHMudG9wICsgaW5zZXRzLmJvdHRvbTsKKworICAgICAgICByZXR1cm4gcmV0dXJuVmFsOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJlbW92ZUxheW91dENvbXBvbmVudChDb21wb25lbnQgY29tcCkgeworCisgICAgICAgIGlmIChjb21wID09IGZDaGlsZCkKKyAgICAgICAgICAgIGZDaGlsZCA9IG51bGw7CisgICAgICAgIGVsc2UgaWYgKGNvbXAgPT0gZkhvcml6U2Nyb2xsQmFyKQorICAgICAgICAgICAgZkhvcml6U2Nyb2xsQmFyID0gbnVsbDsKKyAgICAgICAgZWxzZSBpZiAoY29tcCA9PSBmVmVydFNjcm9sbEJhcikKKyAgICAgICAgICAgIGZWZXJ0U2Nyb2xsQmFyID0gbnVsbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvU2Nyb2xsZXIuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9TY3JvbGxlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjYwYTc5Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvU2Nyb2xsZXIuamF2YQpAQCAtMCwwICsxLDIwOCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogU2Nyb2xsZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjMgJCAkRGF0ZTogMjAwMC8wNS8xMSAxODowODo0MiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbDsKKworLyoKKyAgICA3LzkvOTcgLSBjaGFuZ2VkIHNvbWUgZGVwcmVjYXRlZCBtZXRob2RzIGluIFNjcm9sbGJhcgorICAgICAgICAgICAgQWxzbyBzZXR0aW5nIFVuaXQgYW5kIEJsb2NrIGluY3JlbWVudCB2YWx1ZXMuICBNYXliZQorICAgICAgICAgICAgaXQgbWF0dGVycy4uLgorICAgIDYvMjkvOTggLSByZWltcGxlbWVudGVkIHRoaXMgY2xhc3MuICBOb3cgdGhpcyBjbGFzcyB0YWxrcyB0bworICAgICAgICAgICAgICBhbnkgY29tcG9uZW50IHdoaWNoIGltcGxlbWVudHMgU2Nyb2xsZXIuQ2xpZW50LgorICAgICAgICAgICAgICBTY3JvbGxIb2xkZXIgaXMgZ29uZSwgdG9vLgorICAgIDIvNC85OSAtIE5vIGxvbmdlciBhIFBhbmVsLiAgQWxzbywgZG9lc24ndCBjcmVhdGUgU2Nyb2xsYmFycywKKyAgICAgICAgICAgICBhbmQgaW4gZmFjdCBkb2Vzbid0IGV2ZW4gdXNlIHRoZSBTY3JvbGxiYXIgY2xhc3MKKyAgICAgICAgICAgICBkaXJlY3RseS4KKyovCisKK2ltcG9ydCBqYXZhLmF3dC5Db21wb25lbnQ7CitpbXBvcnQgamF2YS5hd3QuUmVjdGFuZ2xlOworaW1wb3J0IGphdmEuYXd0LkRpbWVuc2lvbjsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkFkanVzdG1lbnRMaXN0ZW5lcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5BZGp1c3RtZW50RXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuQWRqdXN0YWJsZTsKKworLyoqCisqIFRoaXMgY2xhc3MgbWFuYWdlcyB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiBhIHNjcm9sbGFibGUgY2xpZW50CisqIGFuZCB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCBzY3JvbGxiYXJzLiAgSXQgY2FsbHMgdGhlIGNsaWVudCdzCisqIHNjcm9sbFRvIG1ldGhvZCBpbiByZXNwb25zZSB0byBtYW5pcHVsYXRpb24gb2YgdGhlIHNjcm9sbCBiYXJzLgorKgorKiBUaGlzIGNsYXNzIHVzZWQgdG8gYmUgYSBQYW5lbCBjb250YWluaW5nIHRoZSBzY3JvbGxiYXJzIGFuZAorKiB0aGUgY2xpZW50IHBhbmVsLiAgQXMgcGFydCBvZiB0aGUgbWlncmF0aW9uIGF3YXkgZnJvbSBkaXJlY3QKKyogQVdUIGRlcGVuZGVuY2llcywgdGhpcyBjbGFzcyBpcyBubyBsb25nZXIgcGFydCBvZiB0aGUgdmlldworKiBoaWVyYXJjaHkuICBJbnN0ZWFkIGl0IHNpbXBseSBrZWVwcyBhIHJlZmVyZW5jZSB0byBpdHMKKyogY2xpZW50IGFuZCBzY3JvbGwgYmFycy4gIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiBoaWdoZXItCisqIGxldmVsIGNsYXNzZXMgdG8gc2V0IHVwIHRoZSB2aWV3IGhpZXJhcmNoeS4KKyovCitmaW5hbCBjbGFzcyBTY3JvbGxlciBpbXBsZW1lbnRzIEFkanVzdG1lbnRMaXN0ZW5lcgoreworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisKKyAgICBzdGF0aWMgaW50ZXJmYWNlIENsaWVudCB7CisgICAgICAgIHZvaWQgc2Nyb2xsVG8oaW50IHgsIGludCB5KTsKKyAgICAgICAgUmVjdGFuZ2xlIGdldFNjcm9sbFNpemUoKTsKKyAgICAgICAgUmVjdGFuZ2xlIGdldEJvdW5kcygpOworICAgIH0KKworICAgIHByaXZhdGUgQWRqdXN0YWJsZSBmSG9yaXpTY3JvbGxCYXIgPSBudWxsOworICAgIHByaXZhdGUgQWRqdXN0YWJsZSBmVmVydFNjcm9sbEJhciA9IG51bGw7CisgICAgcHJpdmF0ZSBDbGllbnQgZkNsaWVudCA9IG51bGw7CisKKyAgICAvKioKKyAgICAgKiBUaGVzZSBhcmUgdXNlZCBpZiB0aGUgcmVzcGVjdGl2ZSBTY3JvbGxiYXIgaXMgbm90IHByZXNlbnQuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZkhvcml6VmFsdWUsIGZWZXJ0VmFsdWU7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgREVGQVVMVF9VTklUX0lOQyA9IDEwOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgbmV3IFNjcm9sbGVyIHdpdGggdGhlIGdpdmVuIEFkanVzdGFibGVzLAorICAgICAqIHdoaWNoIHJlYWxseSBzaG91bGQgYmUgc2Nyb2xsYmFycyBvZiBzb21lIGlsay4KKyAgICAgKiBBbHNvLCB0aGUgQWRqdXN0YWJsZXMgYXJlIHJlcXVpcmVkIHRvIGJlIEFXVCBDb21wb25lbnRzLAorICAgICAqIHNvIHRoZSBTY3JvbGxlciBjYW4gZW5hYmxlIGFuZCBkaXNhYmxlIHRoZW0uCisgICAgICogSG93ZXZlciwgYSBTY3JvbGxlciBjYW4gd29yayB3aXRoIGVpdGhlciBBV1QgU2Nyb2xsYmFycworICAgICAqIG9yIEpGQyBKU2Nyb2xsYmFycy4KKyAgICAgKiBAcGFyYW0gaG9yaXpTY3JvbGxiYXIgdGhlIGhvcml6b250YWwgc2Nyb2xsYmFyLiAgbnVsbCBpZgorICAgICAqIHRoZXJlIGlzIG5vIGhvcml6b250YWwgc2Nyb2xsYmFyLgorICAgICAqIEBwYXJhbSB2ZXJ0U2Nyb2xsYmFyIHRoZSB2ZXJ0aWNhbCBzY3JvbGxiYXIuICBudWxsIGlmCisgICAgICogdGhlcmUgaXMgbm8gdmVydGljYWwgc2Nyb2xsYmFyLgorICAgICAqLworICAgIHB1YmxpYyBTY3JvbGxlcihBZGp1c3RhYmxlIGhvcml6U2Nyb2xsQmFyLAorICAgICAgICAgICAgICAgICAgICBBZGp1c3RhYmxlIHZlcnRTY3JvbGxCYXIpIHsKKworICAgICAgICAvL3NldExheW91dChuZXcgU2Nyb2xsQmFyTGF5b3V0KCkpOworCisgICAgICAgIGZIb3JpelNjcm9sbEJhciA9IGhvcml6U2Nyb2xsQmFyOworICAgICAgICBmVmVydFNjcm9sbEJhciA9IHZlcnRTY3JvbGxCYXI7CisKKyAgICAgICAgaWYgKGZWZXJ0U2Nyb2xsQmFyICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZWZXJ0U2Nyb2xsQmFyLnNldFVuaXRJbmNyZW1lbnQoREVGQVVMVF9VTklUX0lOQyk7CisgICAgICAgICAgICBmVmVydFNjcm9sbEJhci5hZGRBZGp1c3RtZW50TGlzdGVuZXIodGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZIb3JpelNjcm9sbEJhciAhPSBudWxsKSB7CisgICAgICAgICAgICBmSG9yaXpTY3JvbGxCYXIuc2V0VW5pdEluY3JlbWVudChERUZBVUxUX1VOSVRfSU5DKTsKKyAgICAgICAgICAgIGZIb3JpelNjcm9sbEJhci5hZGRBZGp1c3RtZW50TGlzdGVuZXIodGhpcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRDbGllbnQoQ2xpZW50IGNsaWVudCkgeworCisgICAgICAgIGZDbGllbnQgPSBjbGllbnQ7CisgICAgICAgIGNsaWVudFNjcm9sbFNpemVDaGFuZ2VkKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWRqdXN0bWVudFZhbHVlQ2hhbmdlZChBZGp1c3RtZW50RXZlbnQgZXZlbnQpIHsKKworICAgICAgICBib29sZWFuIGhvcml6b250YWw7CisgICAgICAgIGlmIChldmVudC5nZXRBZGp1c3RhYmxlKCkgPT0gZkhvcml6U2Nyb2xsQmFyKSB7CisgICAgICAgICAgICBpbnQgdmVydFZhbCA9IGZWZXJ0U2Nyb2xsQmFyID09IG51bGw/IGZWZXJ0VmFsdWUgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZWZXJ0U2Nyb2xsQmFyLmdldFZhbHVlKCk7CisgICAgICAgICAgICBzY3JvbGxUbyhldmVudC5nZXRWYWx1ZSgpLCB2ZXJ0VmFsKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGludCBob3JpelZhbCA9IGZIb3JpelNjcm9sbEJhciA9PSBudWxsPyBmSG9yaXpWYWx1ZSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkhvcml6U2Nyb2xsQmFyLmdldFZhbHVlKCk7CisgICAgICAgICAgICBzY3JvbGxUbyhob3JpelZhbCwgZXZlbnQuZ2V0VmFsdWUoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgc2V0VmFsdWVzKEFkanVzdGFibGUgc2Nyb2xsYmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHZpc2libGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWluaW11bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBoZWlnaHQpIHsKKworICAgICAgICBpbnQgbWF4aW11bSA9IG1pbmltdW0raGVpZ2h0OworICAgICAgICAKKyAgICAgICAgaWYgKHNjcm9sbGJhciAhPSBudWxsKSB7CisKKyAgICAgICAgICAgIENvbXBvbmVudCBzY3JvbGxiYXJUb28gPSAoQ29tcG9uZW50KSBzY3JvbGxiYXI7CisKKyAgICAgICAgICAgIGlmIChtYXhpbXVtIDw9IHZpc2libGUpIHsKKyAgICAgICAgICAgICAgICBzY3JvbGxiYXJUb28uc2V0RW5hYmxlZChmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBzY3JvbGxiYXJUb28uc2V0RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgc2Nyb2xsYmFyLnNldE1pbmltdW0obWluaW11bSk7CisgICAgICAgICAgICBzY3JvbGxiYXIuc2V0TWF4aW11bShtYXhpbXVtKTsKKyAgICAgICAgICAgIHNjcm9sbGJhci5zZXRWaXNpYmxlQW1vdW50KHZpc2libGUpOworCSAgICAvLyB3b3JrYXJvdW5kIHNldEJsb2NrSW5jcmVtZW50IHdhcm5pbmdzIGZvciBpbmNyZW1lbnRzIDwgMQorCSAgICBzY3JvbGxiYXIuc2V0QmxvY2tJbmNyZW1lbnQoTWF0aC5tYXgoMSwgdmlzaWJsZSAtIERFRkFVTFRfVU5JVF9JTkMpKTsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgcHVibGljIHZvaWQgY2xpZW50U2Nyb2xsU2l6ZUNoYW5nZWQoKQorICAgIHsKKyAgICAgICAgUmVjdGFuZ2xlIGJvdW5kcyA9IGZDbGllbnQuZ2V0Qm91bmRzKCk7CisgICAgICAgIFJlY3RhbmdsZSBwcmVmZXJyZWRTaXplID0gZkNsaWVudC5nZXRTY3JvbGxTaXplKCk7CisKKyAgICAgICAgc2V0VmFsdWVzKGZIb3JpelNjcm9sbEJhciwgYm91bmRzLndpZHRoLCBwcmVmZXJyZWRTaXplLngsIHByZWZlcnJlZFNpemUud2lkdGgpOworICAgICAgICBzZXRWYWx1ZXMoZlZlcnRTY3JvbGxCYXIsIGJvdW5kcy5oZWlnaHQsIHByZWZlcnJlZFNpemUueSwgcHJlZmVycmVkU2l6ZS5oZWlnaHQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFBvc2l0aW9uKGludCB4LCBpbnQgeSkgeworCisgICAgICAgIGlmIChmSG9yaXpTY3JvbGxCYXIgIT0gbnVsbCkgeworICAgICAgICAgICAgZkhvcml6U2Nyb2xsQmFyLnNldFZhbHVlKHgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZkhvcml6VmFsdWUgPSB4OworICAgICAgICB9CisgICAgICAgIGlmIChmVmVydFNjcm9sbEJhciAhPSBudWxsKSB7CisgICAgICAgICAgICBmVmVydFNjcm9sbEJhci5zZXRWYWx1ZSh5KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZWZXJ0VmFsdWUgPSB5OworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNjcm9sbFRvKGludCB4LCBpbnQgeSkKKyAgICB7CisgICAgICAgIGZDbGllbnQuc2Nyb2xsVG8oeCwgeSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0SG9yaXpMaW5lRGlzdGFuY2UoaW50IG5ld0Rpc3RhbmNlKQorICAgIHsKKyAgICAgICAgaWYgKGZIb3JpelNjcm9sbEJhciAhPSBudWxsKSB7CisgICAgICAgICAgICBmSG9yaXpTY3JvbGxCYXIuc2V0VW5pdEluY3JlbWVudChuZXdEaXN0YW5jZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRIb3JpelBhZ2VPdmVybGFwKGludCBuZXdPdmVybGFwKQorICAgIHsKKyAgICAgICAgaWYgKGZIb3JpelNjcm9sbEJhciAhPSBudWxsKSB7CisgICAgICAgICAgICBmSG9yaXpTY3JvbGxCYXIuc2V0QmxvY2tJbmNyZW1lbnQoIC8vIHdvcmthcm91bmQgd2FybmluZ3MgZm9yIHZhbHVlcyA8IDEgb24gdW5peAorICAgICAgICAgICAgICAgICAgICBNYXRoLm1heCgxLCBmSG9yaXpTY3JvbGxCYXIuZ2V0VmlzaWJsZUFtb3VudCgpLW5ld092ZXJsYXApKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFZlcnRMaW5lRGlzdGFuY2UoaW50IG5ld0Rpc3RhbmNlKQorICAgIHsKKyAgICAgICAgaWYgKGZWZXJ0U2Nyb2xsQmFyICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZWZXJ0U2Nyb2xsQmFyLnNldFVuaXRJbmNyZW1lbnQobmV3RGlzdGFuY2UpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0VmVydFBhZ2VPdmVybGFwKGludCBuZXdPdmVybGFwKQorICAgIHsKKyAgICAgICAgaWYgKGZWZXJ0U2Nyb2xsQmFyICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZWZXJ0U2Nyb2xsQmFyLnNldEJsb2NrSW5jcmVtZW50KCAvLyB3b3JrYXJvdW5kIHdhcm5pbmdzIGZvciB2YWx1ZXMgPCAxIG9uIHVuaXgKKyAgICAgICAgICAgICAgICAgICAgTWF0aC5tYXgoMSwgZlZlcnRTY3JvbGxCYXIuZ2V0VmlzaWJsZUFtb3VudCgpLW5ld092ZXJsYXApKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9TZWxlY3Rpb25EcmFnSW50ZXJhY3Rvci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1NlbGVjdGlvbkRyYWdJbnRlcmFjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uN2Y5ZWQxZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9TZWxlY3Rpb25EcmFnSW50ZXJhY3Rvci5qYXZhCkBAIC0wLDAgKzEsMjA2IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBTZWxlY3Rpb25EcmFnSW50ZXJhY3Rvci5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUxOjIzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCitpbXBvcnQgamF2YS50ZXh0LkJyZWFrSXRlcmF0b3I7CisKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25FdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5Gb2N1c0V2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LktleUV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50Lk1vdXNlRXZlbnQ7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRmb3JtYXQuVGV4dE9mZnNldDsKKworZmluYWwgY2xhc3MgU2VsZWN0aW9uRHJhZ0ludGVyYWN0b3IgZXh0ZW5kcyBCZWhhdmlvciBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBUZXh0Q29tcG9uZW50IGZUZXh0Q29tcG9uZW50OworICAgIHByaXZhdGUgVGV4dFNlbGVjdGlvbiBmU2VsZWN0aW9uOworICAgIHByaXZhdGUgUnVuU3RyYXRlZ3kgZlJ1blN0cmF0ZWd5OworICAgIAorICAgIHByaXZhdGUgVGV4dE9mZnNldCBmQW5jaG9yU3RhcnQ7IC8vIGFsaWFzZXMgdGV4dCBvZmZzZXRzIC0gY2xpZW50IGJld2FyZQorICAgIHByaXZhdGUgVGV4dE9mZnNldCBmQW5jaG9yRW5kOworICAgIHByaXZhdGUgVGV4dE9mZnNldCBmQ3VycmVudDsKKworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBmV2FzWmVyb0xlbmd0aDsKKworICAgIHByaXZhdGUgaW50IGZDdXJyZW50WDsKKyAgICBwcml2YXRlIGludCBmQ3VycmVudFk7CisgICAgcHJpdmF0ZSBib29sZWFuIGZNb3VzZU91dHNpZGU7CisKKyAgICBwcml2YXRlIFRocmVhZCBmQXV0b3Njcm9sbFRocmVhZCA9IG51bGw7CisgICAgcHJpdmF0ZSBib29sZWFuIGZUaHJlYWRSdW4gPSB0cnVlOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGtTY3JvbGxTbGVlcCA9IDMwMDsKKworICAgIHB1YmxpYyBTZWxlY3Rpb25EcmFnSW50ZXJhY3RvcihUZXh0U2VsZWN0aW9uIHNlbGVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dENvbXBvbmVudCB0ZXh0Q29tcG9uZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW5TdHJhdGVneSBydW5TdHJhdGVneSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBhbmNob3JTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBhbmNob3JFbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgY3VycmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluaXRpYWxYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5pdGlhbFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gd2FzWmVyb0xlbmd0aCkgeworCisgICAgICAgIGZUZXh0Q29tcG9uZW50ID0gdGV4dENvbXBvbmVudDsKKyAgICAgICAgZlNlbGVjdGlvbiA9IHNlbGVjdGlvbjsKKyAgICAgICAgZlJ1blN0cmF0ZWd5ID0gcnVuU3RyYXRlZ3k7CisgICAgICAgIGZBbmNob3JTdGFydCA9IGFuY2hvclN0YXJ0OworICAgICAgICBmQW5jaG9yRW5kID0gYW5jaG9yRW5kOworICAgICAgICBmQ3VycmVudCA9IGN1cnJlbnQ7CisKKyAgICAgICAgZkN1cnJlbnRYID0gaW5pdGlhbFg7CisgICAgICAgIGZDdXJyZW50WSA9IGluaXRpYWxZOworICAgICAgICBmTW91c2VPdXRzaWRlID0gZmFsc2U7CisKKyAgICAgICAgZldhc1plcm9MZW5ndGggPSB3YXNaZXJvTGVuZ3RoOworICAgICAgICAKKyAgICAgICAgc2V0U2VsZWN0aW9uKCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBib29sZWFuIHRleHRDb250cm9sRXZlbnRPY2N1cnJlZChCZWhhdmlvci5FdmVudFR5cGUgZXZlbnQsIE9iamVjdCB3aGF0KSB7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZm9jdXNHYWluZWQoRm9jdXNFdmVudCBldmVudCkgeworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGZvY3VzTG9zdChGb2N1c0V2ZW50IGV2ZW50KSB7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4ga2V5UHJlc3NlZChLZXlFdmVudCBldmVudCkgeworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGtleVR5cGVkKEtleUV2ZW50IGV2ZW50KSB7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4ga2V5UmVsZWFzZWQoS2V5RXZlbnQgZXZlbnQpIHsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gbW91c2VEcmFnZ2VkKE1vdXNlRXZlbnQgZSkgeworCisgICAgICAgIGludCB4ID0gZS5nZXRYKCksIHkgPSBlLmdldFkoKTsKKyAgICAgICAgaWYgKGZDdXJyZW50WCAhPSB4IHx8IGZDdXJyZW50WSAhPSB5KSB7CisgICAgICAgICAgICBmQ3VycmVudFggPSB4OworICAgICAgICAgICAgZkN1cnJlbnRZID0geTsKKyAgICAgICAgICAgIHByb2Nlc3NNb3VzZUxvY2F0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIHN5bmNocm9uaXplZCBib29sZWFuIG1vdXNlRW50ZXIoTW91c2VFdmVudCBlKSB7CisKKyAgICAgICAgZk1vdXNlT3V0c2lkZSA9IGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gbW91c2VFeGl0ZWQoTW91c2VFdmVudCBlKSB7CisKKyAgICAgICAgaWYgKGZBdXRvc2Nyb2xsVGhyZWFkID09IG51bGwpIHsKKyAgICAgICAgICAgIGZBdXRvc2Nyb2xsVGhyZWFkID0gbmV3IFRocmVhZCh0aGlzKTsKKyAgICAgICAgICAgIGZBdXRvc2Nyb2xsVGhyZWFkLnN0YXJ0KCk7CisgICAgICAgIH0KKyAgICAgICAgZk1vdXNlT3V0c2lkZSA9IHRydWU7CisgICAgICAgIG5vdGlmeSgpOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgYm9vbGVhbiBtb3VzZVJlbGVhc2VkKE1vdXNlRXZlbnQgZSkgeworCisgICAgICAgIGZNb3VzZU91dHNpZGUgPSBmYWxzZTsKKyAgICAgICAgZlRocmVhZFJ1biA9IGZhbHNlOworICAgICAgICBpZiAoZkF1dG9zY3JvbGxUaHJlYWQgIT0gbnVsbCkgeworICAgICAgICAgICAgZkF1dG9zY3JvbGxUaHJlYWQuaW50ZXJydXB0KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJlbW92ZUZyb21Pd25lcigpOworICAgICAgICBib29sZWFuIGlzWmVyb0xlbmd0aCA9IFRleHRTZWxlY3Rpb24ucmFuZ2VJc1plcm9MZW5ndGgoZkFuY2hvclN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkFuY2hvckVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZDdXJyZW50KTsKKyAgICAgICAgZlNlbGVjdGlvbi5tb3VzZVJlbGVhc2VkKGlzWmVyb0xlbmd0aCAhPSBmV2FzWmVyb0xlbmd0aCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHByb2Nlc3NNb3VzZUxvY2F0aW9uKCkgeworCisgICAgICAgIGZUZXh0Q29tcG9uZW50LnNjcm9sbFRvU2hvdyhmQ3VycmVudFgsIGZDdXJyZW50WSk7CisgICAgICAgIGZUZXh0Q29tcG9uZW50LnBvaW50VG9UZXh0T2Zmc2V0KGZDdXJyZW50LCBmQ3VycmVudFgsIGZDdXJyZW50WSwgbnVsbCwgdHJ1ZSk7CisgICAgICAgIHNldFNlbGVjdGlvbigpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzZXRTZWxlY3Rpb24oKSB7CisKKyAgICAgICAgaWYgKGZDdXJyZW50LmdyZWF0ZXJUaGFuKGZBbmNob3JFbmQpKSB7CisgICAgICAgICAgICBmU2VsZWN0aW9uLmFkdmFuY2VUb05leHRCb3VuZGFyeShmQ3VycmVudCk7CisgICAgICAgICAgICBmU2VsZWN0aW9uLnNldFNlbFJhbmdlQW5kRHJhdyhmQW5jaG9yU3RhcnQsIGZDdXJyZW50LCBmQW5jaG9yU3RhcnQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGZDdXJyZW50Lmxlc3NUaGFuKGZBbmNob3JTdGFydCkpIHsKKyAgICAgICAgICAgIGZTZWxlY3Rpb24uYWR2YW5jZVRvUHJldmlvdXNCb3VuZGFyeShmQ3VycmVudCk7CisgICAgICAgICAgICBmU2VsZWN0aW9uLnNldFNlbFJhbmdlQW5kRHJhdyhmQ3VycmVudCwgZkFuY2hvckVuZCwgZkFuY2hvclN0YXJ0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZDdXJyZW50LmFzc2lnbihmQW5jaG9yRW5kKTsKKyAgICAgICAgICAgIGZTZWxlY3Rpb24uc2V0U2VsUmFuZ2VBbmREcmF3KGZBbmNob3JTdGFydCwgZkFuY2hvckVuZCwgZkFuY2hvclN0YXJ0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKworICAgICAgICBSdW5uYWJsZSBkb01vdXNlTG9jID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIHByb2Nlc3NNb3VzZUxvY2F0aW9uKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICB3aGlsZSAoZlRocmVhZFJ1bikgeworCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIFRocmVhZC5zbGVlcChrU2Nyb2xsU2xlZXApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2goSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIHJldHVybjsgLy8ganVzdCBxdWl0IHNjcm9sbGluZworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgeworCisgICAgICAgICAgICAgICAgd2hpbGUgKCFmTW91c2VPdXRzaWRlKSB7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3YWl0KCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY2F0Y2goSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBqdXN0IHF1aXQgc2Nyb2xsaW5nCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmUnVuU3RyYXRlZ3kuZG9JdChkb01vdXNlTG9jKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9TaW1wbGVDb21tYW5kTG9nLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvU2ltcGxlQ29tbWFuZExvZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA2Y2FhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvU2ltcGxlQ29tbWFuZExvZy5qYXZhCkBAIC0wLDAgKzEsMTc3IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBTaW1wbGVDb21tYW5kTG9nLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ZpbmFsIGNsYXNzIFNpbXBsZUNvbW1hbmRMb2cgeworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBDb21tYW5kIGZMYXN0Q29tbWFuZCA9IG51bGw7CisgICAgcHJpdmF0ZSBDb21tYW5kIGZDdXJyZW50Q29tbWFuZCA9IG51bGw7CisgICAgcHJpdmF0ZSBQYW5lbEV2ZW50QnJvYWRjYXN0ZXIgZkxpc3RlbmVyOworCisgICAgcHJpdmF0ZSBib29sZWFuIGZCYXNlSXNNb2RpZmllZDsKKworICAgIHByaXZhdGUgaW50IGZMb2dTaXplID0gMTQ7CisKKyAgICBwdWJsaWMgU2ltcGxlQ29tbWFuZExvZyhQYW5lbEV2ZW50QnJvYWRjYXN0ZXIgbGlzdGVuZXIpIHsKKyAgICAgICAgZkxpc3RlbmVyID0gbGlzdGVuZXI7CisgICAgICAgIGZCYXNlSXNNb2RpZmllZCA9IGZhbHNlOworICAgIH0KKworICAgIC8qKiBhZGRzIHRoZSBzcGVjZmllZCBjb21tYW5kIHRvIHRoZSB0b3Agb2YgdGhlIGNvbW1hbmQgc3RhY2sKKyAgICAqIChhbnkgdW5kb25lIGNvbW1hbmRzIG9uIHRoZSBzdGFjayBhcmUgcmVtb3ZlZCkKKyAgICAqIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGUgY29tbWFuZCBoYXMgYWxyZWFkeSBiZWVuIGV4ZWN1dGVkIChpLmUuLCBpdHMgZXhlY3V0ZSgpIG1ldGhvZAorICAgICogaGFzIGJlZW4gY2FsbGVkLCBvciBhbiBlcXVpdmFsZW50IGFjdGlvbiBoYXMgYmVlbiB0YWtlbikgKi8KKyAgICB2b2lkIGFkZChDb21tYW5kIG5ld0NvbW1hbmQpIHsKKyAgICAgICAgLy8gaWYgdGhlcmUgYXJlIGNvbW1hbmRzIG9uIHRoZSBzdGFjayB0aGF0IGhhdmUgYmVlbiB1bmRvbmUsIHRoZXkgYXJlCisgICAgICAgIC8vIGRyb3BwZWQgb24gdGhlIGZsb29yIGhlcmUKKyAgICAgICAgbmV3Q29tbWFuZC5zZXRQcmV2aW91c0NvbW1hbmQoZkN1cnJlbnRDb21tYW5kKTsKKyAgICAgICAgCisgICAgICAgIGZpbmFsIENvbW1hbmQgb2xkTGFzdENvbW1hbmQgPSBmTGFzdENvbW1hbmQ7CisgICAgICAgIGZMYXN0Q29tbWFuZCA9IG51bGw7CisgICAgICAgIAorICAgICAgICBmQ3VycmVudENvbW1hbmQgPSBuZXdDb21tYW5kOworICAgICAgICBsaW1pdENvbW1hbmRzKGZMb2dTaXplKTsKKyAgICAgICAgCisgICAgICAgIGlmIChvbGRMYXN0Q29tbWFuZCAhPSBudWxsKSB7CisgICAgICAgICAgICBmTGlzdGVuZXIudGV4dFN0YXRlQ2hhbmdlZChUZXh0UGFuZWxFdmVudC5VTkRPX1NUQVRFX0NIQU5HRUQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogSWYgdGhlIGNvbW1hbmQgbGlzdCBpcyBsb25nZXIgdGhhbiBsb2dTaXplLCB0cnVuY2F0ZSBpdC4KKyAgICAgKiBUaGlzIG1ldGhvZCB0cmF2ZXJzZXMgdGhlIGxpc3QgZWFjaCB0aW1lLCBhbmQgaXMgbm90IGEgbW9kZWwKKyAgICAgKiBvZiBlZmZpY2llbmN5LiAgSXQncyBhIHRlbXBvcmFyeSB3YXkgdG8gcGx1ZyB0aGlzIG1lbW9yeSBsZWFrCisgICAgICogdW50aWwgSSBjYW4gaW1wbGVtZW50IGEgYm91bmRlZCBjb21tYW5kIGxvZy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgbGltaXRDb21tYW5kcyhpbnQgbG9nU2l6ZSkgeworCisgICAgICAgIGlmIChsb2dTaXplID09IDApIHsKKyAgICAgICAgICAgIGZDdXJyZW50Q29tbWFuZCA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBDb21tYW5kIGN1cnJlbnRDb21tYW5kID0gZkN1cnJlbnRDb21tYW5kOworICAgICAgICAgICAgaW50IHJlbWFpbmluZyA9IGxvZ1NpemUtMTsKKyAgICAgICAgICAgIHdoaWxlIChjdXJyZW50Q29tbWFuZCAhPSBudWxsICYmIHJlbWFpbmluZyA+IDApIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50Q29tbWFuZCA9IGN1cnJlbnRDb21tYW5kLnByZXZpb3VzQ29tbWFuZCgpOworICAgICAgICAgICAgICAgIHJlbWFpbmluZyAtPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGN1cnJlbnRDb21tYW5kICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50Q29tbWFuZC5zZXRQcmV2aW91c0NvbW1hbmQobnVsbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiogYWRkcyB0aGUgc3BlY2ZpZWQgY29tbWFuZCB0byB0aGUgdG9wIG9mIHRoZSBjb21tYW5kIHN0YWNrIGFuZCBleGVjdXRlcyBpdCAqLworICAgIHZvaWQgYWRkQW5kRG8oQ29tbWFuZCBuZXdDb21tYW5kKSB7CisgICAgICAgIGFkZChuZXdDb21tYW5kKTsKKyAgICAgICAgbmV3Q29tbWFuZC5leGVjdXRlKCk7CisKKyAgICAgICAgZkxpc3RlbmVyLnRleHRTdGF0ZUNoYW5nZWQoVGV4dFBhbmVsRXZlbnQuVU5ET19TVEFURV9DSEFOR0VEKTsKKyAgICB9CisKKyAgICAvKiogdW5kb2VzIHRoZSBjb21tYW5kIG9uIHRoZSB0b3Agb2YgdGhlIGNvbW1hbmQgc3RhY2ssIGlmIHRoZXJlIGlzIG9uZSAqLworICAgIHZvaWQgdW5kbygpIHsKKyAgICAgICAgaWYgKGZDdXJyZW50Q29tbWFuZCAhPSBudWxsKSB7CisgICAgICAgICAgICBDb21tYW5kIGN1cnJlbnQgPSBmQ3VycmVudENvbW1hbmQ7CisgICAgICAgICAgICBjdXJyZW50LnVuZG8oKTsKKworICAgICAgICAgICAgZkN1cnJlbnRDb21tYW5kID0gY3VycmVudC5wcmV2aW91c0NvbW1hbmQoKTsKKworICAgICAgICAgICAgY3VycmVudC5zZXRQcmV2aW91c0NvbW1hbmQoZkxhc3RDb21tYW5kKTsKKyAgICAgICAgICAgIGZMYXN0Q29tbWFuZCA9IGN1cnJlbnQ7CisKKyAgICAgICAgICAgIGZMaXN0ZW5lci50ZXh0U3RhdGVDaGFuZ2VkKFRleHRQYW5lbEV2ZW50LlVORE9fU1RBVEVfQ0hBTkdFRCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKiogcmVkb2VzIHRoZSBsYXN0IHVuZG9uZSBjb21tYW5kIG9uIHRoZSBjb21tYW5kIHN0YWNrLCBpZiB0aGVyZSBhcmUgYW55ICovCisgICAgdm9pZCByZWRvKCkgeworICAgICAgICBpZiAoZkxhc3RDb21tYW5kICE9IG51bGwpIHsKKyAgICAgICAgICAgIENvbW1hbmQgbGFzdCA9IGZMYXN0Q29tbWFuZDsKKyAgICAgICAgICAgIGxhc3QucmVkbygpOworCisgICAgICAgICAgICBmTGFzdENvbW1hbmQgPSBsYXN0LnByZXZpb3VzQ29tbWFuZCgpOworCisgICAgICAgICAgICBsYXN0LnNldFByZXZpb3VzQ29tbWFuZChmQ3VycmVudENvbW1hbmQpOworICAgICAgICAgICAgZkN1cnJlbnRDb21tYW5kID0gbGFzdDsKKworICAgICAgICAgICAgZkxpc3RlbmVyLnRleHRTdGF0ZUNoYW5nZWQoVGV4dFBhbmVsRXZlbnQuVU5ET19TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGNhblVuZG8oKSB7CisgICAgICAgIHJldHVybiBmQ3VycmVudENvbW1hbmQgIT0gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBjYW5SZWRvKCkgeworICAgICAgICByZXR1cm4gZkxhc3RDb21tYW5kICE9IG51bGw7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNNb2RpZmllZCgpIHsKKworICAgICAgICBpZiAoZkN1cnJlbnRDb21tYW5kID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmQmFzZUlzTW9kaWZpZWQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZkN1cnJlbnRDb21tYW5kLmlzTW9kaWZpZWQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1vZGlmaWVkKGJvb2xlYW4gbW9kaWZpZWQpIHsKKworICAgICAgICBpZiAoZkN1cnJlbnRDb21tYW5kID09IG51bGwpIHsKKyAgICAgICAgICAgIGZCYXNlSXNNb2RpZmllZCA9IG1vZGlmaWVkOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZkN1cnJlbnRDb21tYW5kLnNldE1vZGlmaWVkKG1vZGlmaWVkKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGNsZWFyTG9nKCkgeworCisgICAgICAgIGlmIChmQ3VycmVudENvbW1hbmQgIT0gbnVsbCkgeworICAgICAgICAgICAgZkJhc2VJc01vZGlmaWVkID0gZkN1cnJlbnRDb21tYW5kLmlzTW9kaWZpZWQoKTsKKyAgICAgICAgfQorICAgICAgICBib29sZWFuIGNoYW5nZWQgPSBmQ3VycmVudENvbW1hbmQgIT0gbnVsbCB8fCBmTGFzdENvbW1hbmQgIT0gbnVsbDsKKyAgICAgICAgZkN1cnJlbnRDb21tYW5kID0gbnVsbDsKKyAgICAgICAgZkxhc3RDb21tYW5kID0gbnVsbDsKKyAgICAgICAgCisgICAgICAgIGZMaXN0ZW5lci50ZXh0U3RhdGVDaGFuZ2VkKFRleHRQYW5lbEV2ZW50LlVORE9fU1RBVEVfQ0hBTkdFRCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TG9nU2l6ZShpbnQgc2l6ZSkgeworCisgICAgICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigibG9nIHNpemUgY2Fubm90IGJlIG5lZ2F0aXZlIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChzaXplIDwgZkxvZ1NpemUpIHsKKyAgICAgICAgICAgIGxpbWl0Q29tbWFuZHMoc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZMb2dTaXplID0gc2l6ZTsKKyAgICAgICAgCisgICAgICAgIGlmIChmTGFzdENvbW1hbmQgIT0gbnVsbCB8fCBzaXplID09IDApIHsKKyAgICAgICAgICAgIGZMYXN0Q29tbWFuZCA9IG51bGw7CisgICAgICAgICAgICBmTGlzdGVuZXIudGV4dFN0YXRlQ2hhbmdlZChUZXh0UGFuZWxFdmVudC5VTkRPX1NUQVRFX0NIQU5HRUQpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRMb2dTaXplKCkgeworCisgICAgICAgIHJldHVybiBmTG9nU2l6ZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvU3R5bGVDaGFuZ2VDb21tYW5kLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvU3R5bGVDaGFuZ2VDb21tYW5kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODQ3NzFhYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9TdHlsZUNoYW5nZUNvbW1hbmQuamF2YQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBTdHlsZUNoYW5nZUNvbW1hbmQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo1MToyMyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZU1vZGlmaWVyOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRmb3JtYXQuVGV4dE9mZnNldDsKKworY2xhc3MgU3R5bGVDaGFuZ2VDb21tYW5kIGV4dGVuZHMgVGV4dENvbW1hbmQgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIGJvb2xlYW4gZkNoYXJhY3RlcjsKKyAgICBwcml2YXRlIFN0eWxlTW9kaWZpZXIgZk1vZGlmaWVyOworCisgICAgcHVibGljIFN0eWxlQ2hhbmdlQ29tbWFuZChUZXh0RWRpdEJlaGF2aW9yIGJlaGF2aW9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVRleHQgb3JpZ2luYWxUZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBzZWxTdGFydEJlZm9yZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgc2VsRW5kQmVmb3JlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3R5bGVNb2RpZmllciBtb2RpZmllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gY2hhcmFjdGVyKSB7CisKKyAgICAgICAgc3VwZXIoYmVoYXZpb3IsIG9yaWdpbmFsVGV4dCwgc2VsU3RhcnRCZWZvcmUuZk9mZnNldCwgc2VsU3RhcnRCZWZvcmUsIHNlbEVuZEJlZm9yZSk7CisgICAgICAgIGZNb2RpZmllciA9IG1vZGlmaWVyOworICAgICAgICBmQ2hhcmFjdGVyID0gY2hhcmFjdGVyOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgYWZmZWN0ZWRSYW5nZUVuZCgpIHsKKyAgICAgICAgcmV0dXJuIGZTZWxFbmRCZWZvcmUuZk9mZnNldDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBleGVjdXRlKCkgeworICAgICAgICBmQmVoYXZpb3IuZG9Nb2RpZnlTdHlsZXMoZkFmZmVjdGVkUmFuZ2VTdGFydCwgZlNlbEVuZEJlZm9yZS5mT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZk1vZGlmaWVyLCBmQ2hhcmFjdGVyLCBmU2VsU3RhcnRCZWZvcmUsIGZTZWxFbmRCZWZvcmUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9TdHlsZWRUZXh0Q2xpcGJvYXJkLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvU3R5bGVkVGV4dENsaXBib2FyZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjY4MjU4Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvU3R5bGVkVGV4dENsaXBib2FyZC5qYXZhCkBAIC0wLDAgKzEsMjE5IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBTdHlsZWRUZXh0Q2xpcGJvYXJkLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuQ2xpcGJvYXJkOworaW1wb3J0IGphdmEuYXd0LmRhdGF0cmFuc2Zlci5DbGlwYm9hcmRPd25lcjsKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuVHJhbnNmZXJhYmxlOworaW1wb3J0IGphdmEuYXd0LmRhdGF0cmFuc2Zlci5EYXRhRmxhdm9yOworaW1wb3J0IGphdmEuYXd0LmRhdGF0cmFuc2Zlci5VbnN1cHBvcnRlZEZsYXZvckV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CisKK2ltcG9ydCBqYXZhLmF3dC5Ub29sa2l0OworCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlZFRleHQ7CisKKy8qKgorKiBXcmFwcGVyIGZvciBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuQ2xpcGJvYXJkCisqIFBhY2thZ2VzIGFuIE1Db25zdFRleHQgaW4gYSB0cmFuc2ZlcmFibGUsIGFuZCBwdXRzIGl0IG9uIHRoZSBjbGlwYm9hcmQuCisqLworCitjbGFzcyBTdHlsZWRUZXh0Q2xpcGJvYXJkIGltcGxlbWVudHMgQ2xpcGJvYXJkT3duZXIgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAvLyBUaGlzIGNsYXNzIGhhcyBhIHdvcmthcm91bmQgZm9yIGEgYnVnIGluIHRoZSBXaW5kb3dzIHN5c3RlbSBjbGlwYm9hcmQuCisgICAgLy8gVGhlIHN5c3RlbSBjbGlwYm9hcmQgd2lsbCBvbmx5IHJldHVybiBTdHJpbmcgY29udGVudCwgZXZlbgorICAgIC8vIHRob3VnaCBpdCBoYXMgYSByZWZlcmVuY2UgdG8gdGhlIGNvbnRlbnRzLiAgU28gaWYgb3VyCisgICAgLy8gY2xpcGJvYXJkIGlzIHRoZSBzeXN0ZW0gY2xpcGJvYXJkLCB3ZSdsbCBrZWVwIGEgcmVmZXJlbmNlCisgICAgLy8gdG8gdGhlIGNvbnRlbnQgYW5kIHVzZSB0aGF0IGluc3RlYWQgb2Ygd2hhdCB0aGUgQ2xpcGJvYXJkIHJldHVybnMuCisKKyAgICBwcml2YXRlIHN0YXRpYyBDbGlwYm9hcmQgU1lTVEVNID0gbnVsbDsKKyAgICBzdGF0aWMgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgU1lTVEVNID0gVG9vbGtpdC5nZXREZWZhdWx0VG9vbGtpdCgpLmdldFN5c3RlbUNsaXBib2FyZCgpOworICAgICAgICB9CisgICAgICAgIGNhdGNoKFRocm93YWJsZSB0aCkgeworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgU3R5bGVkVGV4dENsaXBib2FyZCBmZ1N5c3RlbUNsaXBib2FyZCA9IG51bGw7CisKKyAgICBwdWJsaWMgc3RhdGljIFN0eWxlZFRleHRDbGlwYm9hcmQgZ2V0Q2xpcGJvYXJkRm9yKENsaXBib2FyZCBjbGlwYm9hcmQpIHsKKworICAgICAgICBpZiAoY2xpcGJvYXJkID09IFNZU1RFTSAmJiBTWVNURU0gIT0gbnVsbCkgeworICAgICAgICAgICAgc3luY2hyb25pemVkKFNZU1RFTSkgeworICAgICAgICAgICAgICAgIGlmIChmZ1N5c3RlbUNsaXBib2FyZCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGZnU3lzdGVtQ2xpcGJvYXJkID0gbmV3IFN0eWxlZFRleHRDbGlwYm9hcmQoU1lTVEVNLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gZmdTeXN0ZW1DbGlwYm9hcmQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFN0eWxlZFRleHRDbGlwYm9hcmQoY2xpcGJvYXJkLCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIENsaXBib2FyZCBmQ2xpcGJvYXJkOworICAgIHByaXZhdGUgYm9vbGVhbiBmVXNlTG9jYWxDb250ZW50czsKKyAgICBwcml2YXRlIFRyYW5zZmVyYWJsZSBmQ29udGVudHMgPSBudWxsOworCisgICAgcHJpdmF0ZSBTdHlsZWRUZXh0Q2xpcGJvYXJkKENsaXBib2FyZCBjbGlwYm9hcmQsIGJvb2xlYW4gdXNlTG9jYWxDb250ZW50cykgeworCisgICAgICAgIGlmIChjbGlwYm9hcmQgPT0gbnVsbCkgeworICAgICAgICAgICAgZkNsaXBib2FyZCA9IG5ldyBDbGlwYm9hcmQoIlRleHRQYW5lbCBjbGlwYm9hcmQiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZDbGlwYm9hcmQgPSBjbGlwYm9hcmQ7CisgICAgICAgIH0KKworICAgICAgICBmVXNlTG9jYWxDb250ZW50cyA9IHVzZUxvY2FsQ29udGVudHM7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgbG9zdE93bmVyc2hpcChDbGlwYm9hcmQgY2xpcGJvYXJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmZXJhYmxlIGNvbnRlbnRzKSB7CisgICAgICAgIGlmIChjb250ZW50cyA9PSBmQ29udGVudHMpIHsKKyAgICAgICAgICAgIHRoaXMuZkNvbnRlbnRzID0gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldENvbnRlbnRzKE1Db25zdFRleHQgbmV3Q29udGVudHMpIHsKKworICAgICAgICBUcmFuc2ZlcmFibGVUZXh0IGNvbnRlbnRzID0gbmV3IFRyYW5zZmVyYWJsZVRleHQobmV3Q29udGVudHMpOworICAgICAgICBpZiAoZkNsaXBib2FyZCA9PSBTWVNURU0pIHsKKyAgICAgICAgICAgIGZDb250ZW50cyA9IGNvbnRlbnRzOworICAgICAgICB9CisgICAgICAgIGZDbGlwYm9hcmQuc2V0Q29udGVudHMoY29udGVudHMsIHRoaXMpOworICAgIH0KKworICAgIHByaXZhdGUgVHJhbnNmZXJhYmxlIGdldENsaXBib2FyZENvbnRlbnRzKCkgeworCisgICAgICAgIGlmIChmVXNlTG9jYWxDb250ZW50cyAmJiBmQ29udGVudHMgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZDb250ZW50czsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmQ2xpcGJvYXJkLmdldENvbnRlbnRzKHRoaXMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEhhcyBjb250ZW50cyAtIGZhc3RlciB0aGFuIGdldENvbnRlbnRzIGZvciBmaW5kaW5nIG91dCB3aGV0aGVyIHRoZQorICAgICAqIGNsaXBib2FyZCBoYXMgdGV4dC4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBoYXNDb250ZW50cygpIHsKKworICAgICAgICBUcmFuc2ZlcmFibGUgY29udGVudHMgPSBnZXRDbGlwYm9hcmRDb250ZW50cygpOworCisgICAgICAgIGlmIChjb250ZW50cyA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY29udGVudHMuaXNEYXRhRmxhdm9yU3VwcG9ydGVkKE1Db25zdFRleHQuc3R5bGVkVGV4dEZsYXZvcikgfHwKKyAgICAgICAgICAgICAgIGNvbnRlbnRzLmlzRGF0YUZsYXZvclN1cHBvcnRlZChEYXRhRmxhdm9yLnN0cmluZ0ZsYXZvcikgfHwKKyAgICAgICAgICAgICAgIGNvbnRlbnRzLmlzRGF0YUZsYXZvclN1cHBvcnRlZChEYXRhRmxhdm9yLnBsYWluVGV4dEZsYXZvcik7CisgICAgfQorCisgICAgcHJpdmF0ZSBTdHJpbmcgZ2V0U3RyaW5nKElucHV0U3RyZWFtIGluU3RyZWFtKSB0aHJvd3MgSU9FeGNlcHRpb24geworCisgICAgICAgIFN0cmluZyB2YWx1ZSA9IG5ldyBTdHJpbmcoKTsKKyAgICAgICAgaW50IGJ5dGVzUmVhZDsKKworICAgICAgICBkbyB7CisgICAgICAgICAgICBieXRlIGluQnl0ZXNbXSA9IG5ldyBieXRlW2luU3RyZWFtLmF2YWlsYWJsZSgpXTsKKyAgICAgICAgICAgIGJ5dGVzUmVhZCA9IGluU3RyZWFtLnJlYWQoaW5CeXRlcyk7CisKKyAgICAgICAgICAgIGlmIChieXRlc1JlYWQgIT0gLTEpCisgICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZSArIG5ldyBTdHJpbmcoaW5CeXRlcyk7CisKKyAgICAgICAgfSB3aGlsZSAoYnl0ZXNSZWFkICE9IC0xKTsKKworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogSWYgdGhlIENsaXBib2FyZCBoYXMgdGV4dCBjb250ZW50LCByZXR1cm4gaXQgYXMgYW4KKyAgICAgKiBNQ29uc3RUZXh0LiAgT3RoZXJ3aXNlIHJldHVybiBudWxsLgorICAgICAqIEBwYXJhbSBkZWZhdWx0U3R5bGUgdGhlIHN0eWxlIHRvIGFwcGx5IHRvIHVuc3R5bGVkCisgICAgICogICAgICB0ZXh0IChzdWNoIGFzIGEgU3RyaW5nKS4gIElmIHRoZSBjbGlwYm9hcmQKKyAgICAgKiAgICAgIGhhcyBzdHlsZWQgdGV4dCB0aGlzIHBhcmFtZXRlciBpcyBub3QgdXNlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgTUNvbnN0VGV4dCBnZXRDb250ZW50cyhBdHRyaWJ1dGVNYXAgZGVmYXVsdFN0eWxlKSB7CisKKyAgICAgICAgVHJhbnNmZXJhYmxlIGNvbnRlbnRzID0gZ2V0Q2xpcGJvYXJkQ29udGVudHMoKTsKKworICAgICAgICBpZiAoY29udGVudHMgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICBEYXRhRmxhdm9yIGZsYXZvcnNbXSA9IGNvbnRlbnRzLmdldFRyYW5zZmVyRGF0YUZsYXZvcnMoKTsKKworICAgICAgICAvLyBzZWFyY2ggZmxhdm9ycyBmb3Igb3VyIGZsYXZvciwgU3RyaW5nIGZsYXZvciBhbmQgcmF3IHRleHQgZmxhdm9yCisKKyAgICAgICAgRXhjZXB0aW9uIGV4ID0gbnVsbDsKKworICAgICAgICB0cnkgeworICAgICAgICAgICBpbnQgaTsKKworICAgICAgICAgICAgZm9yIChpPTA7IGkgPCBmbGF2b3JzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGZsYXZvcnNbaV0uZXF1YWxzKE1Db25zdFRleHQuc3R5bGVkVGV4dEZsYXZvcikpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaSA8IGZsYXZvcnMubGVuZ3RoKSB7CisKKyAgICAgICAgICAgICAgICBPYmplY3QgZGF0YSA9IGNvbnRlbnRzLmdldFRyYW5zZmVyRGF0YShNQ29uc3RUZXh0LnN0eWxlZFRleHRGbGF2b3IpOworICAgICAgICAgICAgICAgIGlmIChkYXRhID09IG51bGwpCisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRGF0YSBpcyBudWxsLiIpOworICAgICAgICAgICAgICAgIHJldHVybiAoTUNvbnN0VGV4dCkgZGF0YTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChpPTA7IGkgPCBmbGF2b3JzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGZsYXZvcnNbaV0uZXF1YWxzKERhdGFGbGF2b3Iuc3RyaW5nRmxhdm9yKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpIDwgZmxhdm9ycy5sZW5ndGgpIHsKKworICAgICAgICAgICAgICAgIE9iamVjdCBkYXRhID0gY29udGVudHMuZ2V0VHJhbnNmZXJEYXRhKERhdGFGbGF2b3Iuc3RyaW5nRmxhdm9yKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFN0eWxlZFRleHQoKFN0cmluZykgZGF0YSwgZGVmYXVsdFN0eWxlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yIChpPTA7IGkgPCBmbGF2b3JzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGZsYXZvcnNbaV0uZXF1YWxzKERhdGFGbGF2b3IucGxhaW5UZXh0Rmxhdm9yKSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpIDwgZmxhdm9ycy5sZW5ndGgpIHsKKworICAgICAgICAgICAgICAgIE9iamVjdCBkYXRhID0gY29udGVudHMuZ2V0VHJhbnNmZXJEYXRhKERhdGFGbGF2b3IucGxhaW5UZXh0Rmxhdm9yKTsKKworICAgICAgICAgICAgICAgIFN0cmluZyB0ZXh0U3RyaW5nID0gZ2V0U3RyaW5nKChJbnB1dFN0cmVhbSkgZGF0YSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHlsZWRUZXh0KHRleHRTdHJpbmcsIGRlZmF1bHRTdHlsZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goVW5zdXBwb3J0ZWRGbGF2b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXggPSBlOworICAgICAgICB9CisgICAgICAgIGNhdGNoKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGV4ID0gZTsKKyAgICAgICAgfQorCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRXhjZXB0aW9uIHdoZW4gcmV0cmlldmluZyBkYXRhLiAgRXhjZXB0aW9uOiIgKyBleCk7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0Q2hhbmdlQ29tbWFuZC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRDaGFuZ2VDb21tYW5kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNGY4YmFiNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0Q2hhbmdlQ29tbWFuZC5qYXZhCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRleHRDaGFuZ2VDb21tYW5kLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTVRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0Zm9ybWF0LlRleHRPZmZzZXQ7CisKK2NsYXNzIFRleHRDaGFuZ2VDb21tYW5kIGV4dGVuZHMgVGV4dENvbW1hbmQgeworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBNQ29uc3RUZXh0IGZOZXdUZXh0OworICAgIHByaXZhdGUgVGV4dE9mZnNldCBmU2VsU3RhcnRBZnRlcjsKKyAgICBwcml2YXRlIFRleHRPZmZzZXQgZlNlbEVuZEFmdGVyOworCisgICAgcHVibGljIFRleHRDaGFuZ2VDb21tYW5kKFRleHRFZGl0QmVoYXZpb3IgYmVoYXZpb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1UZXh0IG9yaWdpbmFsVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUNvbnN0VGV4dCBuZXdUZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWZmZWN0ZWRSYW5nZVN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHNlbFN0YXJ0QmVmb3JlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHNlbEVuZEJlZm9yZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBzZWxTdGFydEFmdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHNlbEVuZEFmdGVyKSB7CisgICAgICAgIHN1cGVyKGJlaGF2aW9yLCBvcmlnaW5hbFRleHQsIGFmZmVjdGVkUmFuZ2VTdGFydCwgc2VsU3RhcnRCZWZvcmUsIHNlbEVuZEJlZm9yZSk7CisgICAgICAgIGZOZXdUZXh0ID0gbmV3VGV4dDsKKyAgICAgICAgZlNlbFN0YXJ0QWZ0ZXIgPSBuZXcgVGV4dE9mZnNldCgpOworICAgICAgICBmU2VsU3RhcnRBZnRlci5hc3NpZ24oc2VsU3RhcnRBZnRlcik7CisgICAgICAgIGZTZWxFbmRBZnRlciA9IG5ldyBUZXh0T2Zmc2V0KCk7CisgICAgICAgIGZTZWxFbmRBZnRlci5hc3NpZ24oc2VsRW5kQWZ0ZXIpOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgYWZmZWN0ZWRSYW5nZUVuZCgpIHsKKyAgICAgICAgaWYgKGZOZXdUZXh0ID09IG51bGwpCisgICAgICAgICAgICByZXR1cm4gZkFmZmVjdGVkUmFuZ2VTdGFydDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZBZmZlY3RlZFJhbmdlU3RhcnQgKyBmTmV3VGV4dC5sZW5ndGgoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBleGVjdXRlKCkgeworICAgICAgICBmQmVoYXZpb3IuZG9SZXBsYWNlVGV4dChmQWZmZWN0ZWRSYW5nZVN0YXJ0LCBmQWZmZWN0ZWRSYW5nZVN0YXJ0ICsgZk9yaWdpbmFsVGV4dC5sZW5ndGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmTmV3VGV4dCwgZlNlbFN0YXJ0QWZ0ZXIsIGZTZWxFbmRBZnRlcik7CisgICAgfQorCisgICAgcHVibGljIGludCBhZmZlY3RlZFJhbmdlU3RhcnQoKSB7CisgICAgICAgIHJldHVybiBmQWZmZWN0ZWRSYW5nZVN0YXJ0OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE5ld1RleHQoTUNvbnN0VGV4dCBuZXdUZXh0KSB7CisgICAgICAgIGZOZXdUZXh0ID0gbmV3VGV4dDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTZWxSYW5nZUFmdGVyKFRleHRPZmZzZXQgc3RhcnQsIFRleHRPZmZzZXQgZW5kKSB7CisgICAgICAgIGlmIChmU2VsU3RhcnRBZnRlciA9PSBudWxsKQorICAgICAgICAgICAgZlNlbFN0YXJ0QWZ0ZXIgPSBuZXcgVGV4dE9mZnNldCgpOworICAgICAgICBpZiAoZlNlbEVuZEFmdGVyID09IG51bGwpCisgICAgICAgICAgICBmU2VsRW5kQWZ0ZXIgPSBuZXcgVGV4dE9mZnNldCgpOworICAgICAgICBmU2VsU3RhcnRBZnRlci5hc3NpZ24oc3RhcnQpOworICAgICAgICBmU2VsRW5kQWZ0ZXIuYXNzaWduKGVuZCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcHJlcGVuZFRvT2xkVGV4dChNQ29uc3RUZXh0IG5ld1RleHQpIHsKKyAgICAgICAgZk9yaWdpbmFsVGV4dC5pbnNlcnQoMCwgbmV3VGV4dCk7CisgICAgICAgIGZBZmZlY3RlZFJhbmdlU3RhcnQgLT0gbmV3VGV4dC5sZW5ndGgoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBhcHBlbmRUb09sZFRleHQoTUNvbnN0VGV4dCBuZXdUZXh0KSB7CisgICAgICAgIGZPcmlnaW5hbFRleHQuYXBwZW5kKG5ld1RleHQpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0Q29tbWFuZC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRDb21tYW5kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNGE1YzU3MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0Q29tbWFuZC5qYXZhCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRleHRDb21tYW5kLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTVRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0Zm9ybWF0LlRleHRPZmZzZXQ7CisKK2Fic3RyYWN0IGNsYXNzIFRleHRDb21tYW5kIGV4dGVuZHMgQ29tbWFuZCB7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcm90ZWN0ZWQgVGV4dEVkaXRCZWhhdmlvciBmQmVoYXZpb3I7CisgICAgcHJvdGVjdGVkIE1UZXh0IGZPcmlnaW5hbFRleHQ7CisgICAgcHJvdGVjdGVkIGludCBmQWZmZWN0ZWRSYW5nZVN0YXJ0OworICAgIHByb3RlY3RlZCBUZXh0T2Zmc2V0IGZTZWxTdGFydEJlZm9yZTsKKyAgICBwcm90ZWN0ZWQgVGV4dE9mZnNldCBmU2VsRW5kQmVmb3JlOworCisgICAgcHVibGljIFRleHRDb21tYW5kKFRleHRFZGl0QmVoYXZpb3IgYmVoYXZpb3IsCisgICAgICAgICAgICAgICAgICAgICAgIE1UZXh0IG9yaWdpbmFsVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IGFmZmVjdGVkUmFuZ2VTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBzZWxTdGFydEJlZm9yZSwKKyAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBzZWxFbmRCZWZvcmUpIHsKKworICAgICAgICBmQmVoYXZpb3IgPSBiZWhhdmlvcjsKKyAgICAgICAgZk9yaWdpbmFsVGV4dCA9IG9yaWdpbmFsVGV4dDsKKyAgICAgICAgZkFmZmVjdGVkUmFuZ2VTdGFydCA9IGFmZmVjdGVkUmFuZ2VTdGFydDsKKyAgICAgICAgZlNlbFN0YXJ0QmVmb3JlID0gbmV3IFRleHRPZmZzZXQoKTsKKyAgICAgICAgZlNlbFN0YXJ0QmVmb3JlLmFzc2lnbihzZWxTdGFydEJlZm9yZSk7CisgICAgICAgIGZTZWxFbmRCZWZvcmUgPSBuZXcgVGV4dE9mZnNldCgpOworICAgICAgICBmU2VsRW5kQmVmb3JlLmFzc2lnbihzZWxFbmRCZWZvcmUpOworICAgIH0KKworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgYWZmZWN0ZWRSYW5nZUVuZCgpOworCisgICAgcHVibGljIHZvaWQgdW5kbygpIHsKKyAgICAgICAgZkJlaGF2aW9yLmRvUmVwbGFjZVRleHQoZkFmZmVjdGVkUmFuZ2VTdGFydCwgYWZmZWN0ZWRSYW5nZUVuZCgpLCBmT3JpZ2luYWxUZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZTZWxTdGFydEJlZm9yZSwgZlNlbEVuZEJlZm9yZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRDb21wb25lbnQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0Q29tcG9uZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDZmY2I5MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0Q29tcG9uZW50LmphdmEKQEAgLTAsMCArMSw5ODIgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRleHRDb21wb25lbnQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjMgJCAkRGF0ZTogMjAwMS8wMy8wNyAwMjozOTowMSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbDsKKworaW1wb3J0IGphdmEuYXd0LkNvbG9yOworaW1wb3J0IGphdmEuYXd0LkNvbXBvbmVudDsKK2ltcG9ydCBqYXZhLmF3dC5EaW1lbnNpb247CitpbXBvcnQgamF2YS5hd3QuR3JhcGhpY3M7CitpbXBvcnQgamF2YS5hd3QuSW1hZ2U7CitpbXBvcnQgamF2YS5hd3QuUG9pbnQ7CitpbXBvcnQgamF2YS5hd3QuUmVjdGFuZ2xlOworCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQ29tcG9uZW50QWRhcHRlcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5Gb2N1c0xpc3RlbmVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LktleUxpc3RlbmVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50Lk1vdXNlTGlzdGVuZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuTW91c2VNb3Rpb25MaXN0ZW5lcjsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkNvbXBvbmVudEV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LkZvY3VzRXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuS2V5RXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuTW91c2VFdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dFdmVudDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRmb3JtYXQuVGV4dE9mZnNldDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGZvcm1hdC5NRm9ybWF0dGVyOworCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCitjbGFzcyBUZXh0Q29tcG9uZW50IGV4dGVuZHMgRmFrZUNvbXBvbmVudAorICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnRzIEJlaGF2aW9yT3duZXIsCisgICAgICAgICAgICAgICAgICAgIEZvY3VzTGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgIEtleUxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICBNb3VzZUxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICBNb3VzZU1vdGlvbkxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICBTY3JvbGxlci5DbGllbnQgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFdJTkRPV19XSURUSCA9IC0xMDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBERUZBVUxUX0lOU0VUID0gMTA7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBDb2xvciBTVFJPTkdfQ0FSRVRfQ09MT1IgPSBDb2xvci5ibGFjazsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBDb2xvciBXRUFLX0NBUkVUX0NPTE9SID0gQ29sb3IuZGFya0dyYXk7CisKKyAgICBwcml2YXRlIEJlaGF2aW9yIGZCZWhhdmlvcjsKKyAgICBwcml2YXRlIE1UZXh0IGZUZXh0OworICAgIHByaXZhdGUgU3R5bGVkVGV4dENsaXBib2FyZCBmQ2xpcGJvYXJkOworICAgIHByaXZhdGUgYm9vbGVhbiBmU2Nyb2xsczsKKyAgICBwcml2YXRlIFNjcm9sbGVyIGZTY3JvbGxlcjsKKworICAgIHByaXZhdGUgRG9jdW1lbnRWaWV3IGZEb2N1bWVudFZpZXcgPSBudWxsOworCisgICAgLy8gc2lnaCAtIGNhbid0IGNyZWF0ZSBEb2N1bWVudFZpZXcgdW50aWwgYWRkTm90aWZ5KCkgaXMgY2FsbGVkLgorICAgIC8vIFRoZXNlIHZhbHVlcyBob2xkIERvY3VtZW50VmlldyBjdG9yIGFyZ3MKKyAgICBwcml2YXRlIEF0dHJpYnV0ZU1hcCBmRGVmYXVsdFZhbHVlczsKKyAgICBwcml2YXRlIGJvb2xlYW4gZlZpZXdXcmFwczsKKyAgICBwcml2YXRlIGludCBmVmlld1dyYXBXaWR0aDsKKyAgICBwcml2YXRlIGludCBmVmlld0luc2V0QW1vdW50OworICAgIAorICAgIHByaXZhdGUgUGFuZWxFdmVudEJyb2FkY2FzdGVyIGZMaXN0ZW5lcjsKKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIG5ldyBUZXh0Q29tcG9uZW50LgorICAgICAqIEBwYXJhbSB0ZXh0IHRoZSB0ZXh0IG1vZGVsLiAgVGhpcyBtb2RlbCB3aWxsIGJlIHVzZWQgZm9yCisgICAgICogdGhlIGxpZmUgb2YgdGhlIGNvbXBvbmVudCwgZXZlbiBpZiBzZXRUZXh0IGlzIGNhbGxlZAorICAgICAqIEBwYXJhbSB3cmFwcyBpZiB0cnVlLCB0aGUgdGV4dCBpcyB3cmFwcGVkIHRvIHRoZSBzcGVjaWZpZWQKKyAgICAgKiB3cmFwcGluZyB3aWR0aC4gIElmIGZhbHNlLCB0aGUgdGV4dCB3cmFwcyBvbmx5IGF0IHBhcmFncmFwaCBicmVha3MuCisgICAgICogQHBhcmFtIHdyYXBXaWR0aCBpZ25vcmVkIGlmIHdyYXBzIGlzIGZhbHNlLiAgVGV4dCB3cmFwcyB0byB0aGlzIHdpZHRoCisgICAgICogdW5sZXNzIHRoZSB3aWR0aCBpcyBXSU5ET1dfV0lEVEgsIGluIHdoaWNoIGNhc2UgdGV4dCB3cmFwcyB0byB3aWR0aAorICAgICAqIG9mIHRoaXMgY29tcG9uZW50LiBTaG91bGQgbm90IGJlIG5lZ2F0aXZlICh1bmxlc3MgaXQgaXMgV0lORE9XX1dJRFRIKS4KKyAgICAgKiBAcGFyYW0gaW5zZXRBbW91bnQgdGhlIHNpemUgb2YgdGhlIG1hcmdpbnMgYXJvdW5kIHRoZSB0ZXh0CisgICAgICogQHBhcmFtIGNsaXBib2FyZCB0aGUgY2xpcGJvYXJkIHRvIHVzZSBmb3IgY3V0L2NvcHkvcGFzdGUgb3BlcmF0aW9ucy4KKyAgICAgKiBJZiBudWxsLCB0aGUgY29tcG9uZW50IHdpbGwgdXNlIGl0cyBvd24gY2xpcGJvYXJkLgorICAgICAqLworICAgIHB1YmxpYyBUZXh0Q29tcG9uZW50KE1UZXh0IHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwIGRlZmF1bHRWYWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiB3cmFwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd3JhcFdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnNldEFtb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBTdHlsZWRUZXh0Q2xpcGJvYXJkIGNsaXBib2FyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHNjcm9sbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgU2Nyb2xsZXIgc2Nyb2xsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUGFuZWxFdmVudEJyb2FkY2FzdGVyIGxpc3RlbmVyKSB7CisKKyAgICAgICAgZkJlaGF2aW9yID0gbnVsbDsKKworICAgICAgICBpZiAodGV4dCA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJUZXh0IGlzIG51bGwuIik7CisgICAgICAgIH0KKworICAgICAgICBmVGV4dCA9IHRleHQ7CisgICAgICAgIGZEZWZhdWx0VmFsdWVzID0gZGVmYXVsdFZhbHVlczsKKyAgICAgICAgCisgICAgICAgIGlmIChjbGlwYm9hcmQgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQ2xpcGJvYXJkIGlzIG51bGwuIik7CisgICAgICAgIH0KKyAgICAgICAgZkNsaXBib2FyZCA9IGNsaXBib2FyZDsKKworICAgICAgICBmU2Nyb2xscyA9IHNjcm9sbHM7CisKKyAgICAgICAgZlNjcm9sbGVyID0gc2Nyb2xsZXI7CisKKyAgICAgICAgZkRvY3VtZW50VmlldyA9IG51bGw7CisKKyAgICAgICAgZlZpZXdXcmFwV2lkdGggPSB3cmFwV2lkdGg7CisgICAgICAgIGZWaWV3V3JhcHMgPSB3cmFwczsKKyAgICAgICAgZlZpZXdJbnNldEFtb3VudCA9IGluc2V0QW1vdW50OworICAgICAgICBmTGlzdGVuZXIgPSBsaXN0ZW5lcjsKKyAgICB9CisgICAgCisgICAgQXR0cmlidXRlTWFwIGdldERlZmF1bHRWYWx1ZXMoKSB7CisgICAgCisgICAgICAgIHJldHVybiBmRGVmYXVsdFZhbHVlczsKKyAgICB9CisgICAgCisgICAgdm9pZCBzZXRIb3N0KENvbXBvbmVudCBjb21wb25lbnQpIHsKKyAgICAgICAgCisgICAgICAgIHN1cGVyLnNldEhvc3QoY29tcG9uZW50KTsKKyAgICAgICAgCisgICAgICAgIGNvbXBvbmVudC5hZGRGb2N1c0xpc3RlbmVyKHRoaXMpOworICAgICAgICBjb21wb25lbnQuYWRkS2V5TGlzdGVuZXIodGhpcyk7CisgICAgICAgIGNvbXBvbmVudC5hZGRNb3VzZUxpc3RlbmVyKHRoaXMpOworICAgICAgICBjb21wb25lbnQuYWRkTW91c2VNb3Rpb25MaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgCisgICAgICAgIGNvbXBvbmVudC5hZGRDb21wb25lbnRMaXN0ZW5lcihuZXcgQ29tcG9uZW50QWRhcHRlcigpIHsgICAgICAgIAorICAgICAgICAgICAgcHVibGljIHZvaWQgY29tcG9uZW50UmVzaXplZChDb21wb25lbnRFdmVudCBlKSB7CisgICAgICAgICAgICAgICAgaWYgKGZEb2N1bWVudFZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBmRG9jdW1lbnRWaWV3Lmhvc3RTaXplQ2hhbmdlZCgpOworICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb1Nob3coZkRvY3VtZW50Vmlldy5nZXREb2N1bWVudEJvdW5kcygpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBBVGV4dFBhbmVsSW1wbCdzIHVzZSBvbmx5IQorICAgICAqLworICAgIENvbXBvbmVudCBnZXRIb3N0KCkgeworICAgIAorICAgICAgICByZXR1cm4gZkhvc3Q7CisgICAgfQorICAgIAorICAgIC8vIENyZWF0ZSBkb2N1bWVudCB2aWV3IGhlcmUuICBUZXh0Q29tcG9uZW50IGlzbid0IGZ1bGx5IGNvbnN0cnVjdGVkCisgICAgLy8gdW50aWwgdGhpcyBpcyBjYWxsZWQuCisgICAgLy8gVGhpcyBtdXN0IGJlIGNhbGxlZCBieSBob3N0IGNvbXBvbmVudCEKKyAgICB2b2lkIGFkZE5vdGlmeSgpIHsKKworICAgICAgICBHcmFwaGljcyBnID0gZ2V0R3JhcGhpY3MoKTsKKyAgICAgICAgaWYgKGcgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJHcmFwaGljcyBzaG91bGQgYmUgdmFsaWQgaGVyZSBidXQgaXNuJ3QuIik7CisgICAgICAgIH0KKworICAgICAgICBmRG9jdW1lbnRWaWV3ID0gbmV3IERvY3VtZW50Vmlldyh0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkRlZmF1bHRWYWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZWaWV3V3JhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZWaWV3V3JhcFdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmVmlld0luc2V0QW1vdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmTGlzdGVuZXIpOworICAgICAgICBkb2N1bWVudFNpemVDaGFuZ2VkKCk7CisgICAgICAgIGZMaXN0ZW5lci50ZXh0U3RhdGVDaGFuZ2VkKFRleHRQYW5lbEV2ZW50LkZPUk1BVF9XSURUSF9DSEFOR0VEKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIFJlY3RhbmdsZSBnZXRCb3VuZHMoKSB7CisgICAgICAgIAorICAgICAgICBpZiAoZkhvc3QgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZIb3N0LmdldEJvdW5kcygpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWN0YW5nbGUoMCwgMCwgMCwgMCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgR3JhcGhpY3MgZ2V0R3JhcGhpY3MoKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gKGZIb3N0PT1udWxsKT8gbnVsbCA6IGZIb3N0LmdldEdyYXBoaWNzKCk7CisgICAgfQorICAgIAorICAgIHZvaWQgcmVxdWVzdEZvY3VzKCkgeworICAgICAgICAKKyAgICAgICAgaWYgKGZIb3N0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZIb3N0LnJlcXVlc3RGb2N1cygpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gKioqIEJlaGF2aW9yIG1hbmFnZW1lbnQgKioqCisgICAgcHVibGljIEJlaGF2aW9yIGdldEJlaGF2aW9yKCkgeworICAgICAgICByZXR1cm4gZkJlaGF2aW9yOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEJlaGF2aW9yKEJlaGF2aW9yIGIpIHsKKyAgICAgICAgZkJlaGF2aW9yID0gYjsKKyAgICB9CisKKworICAgIC8vICoqKiBFdmVudHMgLSBqdXN0IGZvcndhcmQgdG8gYmVoYXZpb3IgKioqCisgICAgcHVibGljIHZvaWQgZm9jdXNHYWluZWQoRm9jdXNFdmVudCBldmVudCkgeworICAgICAgICBpZiAoZkJlaGF2aW9yICE9IG51bGwpCisgICAgICAgICAgICBmQmVoYXZpb3IuZm9jdXNHYWluZWQoZXZlbnQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGZvY3VzTG9zdChGb2N1c0V2ZW50IGV2ZW50KSB7CisgICAgICAgIGlmIChmQmVoYXZpb3IgIT0gbnVsbCkKKyAgICAgICAgICAgIGZCZWhhdmlvci5mb2N1c0xvc3QoZXZlbnQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGtleVByZXNzZWQoS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKGZCZWhhdmlvciAhPSBudWxsKQorICAgICAgICAgICAgZkJlaGF2aW9yLmtleVByZXNzZWQoZXZlbnQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGtleVR5cGVkKEtleUV2ZW50IGV2ZW50KSB7CisKKyAgICAgICAgaWYgKGZCZWhhdmlvciAhPSBudWxsKSB7CisgICAgICAgICAgICBmQmVoYXZpb3Iua2V5VHlwZWQoZXZlbnQpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQga2V5UmVsZWFzZWQoS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKGZCZWhhdmlvciAhPSBudWxsKQorICAgICAgICAgICAgZkJlaGF2aW9yLmtleVJlbGVhc2VkKGV2ZW50KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtb3VzZUNsaWNrZWQoTW91c2VFdmVudCBldmVudCkgeworICAgICAgICByZXR1cm47ICAvLyBubyBiZWhhdmlvciBtZXRob2QgZm9yIHRoaXMKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtb3VzZURyYWdnZWQoTW91c2VFdmVudCBldmVudCkgeworICAgICAgICBpZiAoZkJlaGF2aW9yICE9IG51bGwpCisgICAgICAgICAgICBmQmVoYXZpb3IubW91c2VEcmFnZ2VkKGV2ZW50KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtb3VzZUVudGVyZWQoTW91c2VFdmVudCBldmVudCkgIHsKKyAgICAgICAgaWYgKGZCZWhhdmlvciAhPSBudWxsKQorICAgICAgICAgICAgZkJlaGF2aW9yLm1vdXNlRW50ZXJlZChldmVudCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgbW91c2VFeGl0ZWQoTW91c2VFdmVudCBldmVudCkgIHsKKyAgICAgICAgaWYgKGZCZWhhdmlvciAhPSBudWxsKQorICAgICAgICAgICAgZkJlaGF2aW9yLm1vdXNlRXhpdGVkKGV2ZW50KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBtb3VzZU1vdmVkKE1vdXNlRXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKGZCZWhhdmlvciAhPSBudWxsKQorICAgICAgICAgICAgZkJlaGF2aW9yLm1vdXNlTW92ZWQoZXZlbnQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1vdXNlUHJlc3NlZChNb3VzZUV2ZW50IGV2ZW50KSB7CisgICAgICAgIGlmIChmQmVoYXZpb3IgIT0gbnVsbCkKKyAgICAgICAgICAgIGZCZWhhdmlvci5tb3VzZVByZXNzZWQoZXZlbnQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG1vdXNlUmVsZWFzZWQoTW91c2VFdmVudCBldmVudCkgIHsKKyAgICAgICAgaWYgKGZCZWhhdmlvciAhPSBudWxsKQorICAgICAgICAgICAgZkJlaGF2aW9yLm1vdXNlUmVsZWFzZWQoZXZlbnQpOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHRleHRDb250cm9sRXZlbnRPY2N1cnJlZChCZWhhdmlvci5FdmVudFR5cGUgZXZlbnQsIE9iamVjdCB3aGF0KSB7CisKKyAgICAgICAgYm9vbGVhbiBoYW5kbGVkID0gZmFsc2U7CisKKyAgICAgICAgaWYgKGZCZWhhdmlvciAhPSBudWxsKSB7CisgICAgICAgICAgICBoYW5kbGVkID0gZkJlaGF2aW9yLnRleHRDb250cm9sRXZlbnRPY2N1cnJlZChldmVudCwgd2hhdCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGhhbmRsZWQ7CisgICAgfQorCisKKyAgICAvLyAqKiogU2Nyb2xsIG1ldGhvZHMgLSBjYWxsZWQgYnkgQmVoYXZpb3JzCisKKyAgICAvLyB2aWV3U3RhcnQsIHZpZXdMaW1pdCBpcyB2aXNpYmxlIGJvdW5kcyBvZiB3aW5kb3cKKyAgICAvLyB0YXJnZXRTdGFydCwgdGFyZ2V0TGltaXQgaXMgdGhlIHJlZ2lvbiB0byBzY3JvbGwgaW50byB2aWV3CisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGdldFNjcm9sbERpZmZlcmVuY2UoaW50IHZpZXdTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdmlld0xpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0YXJnZXRTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGFyZ2V0TGltaXQpIHsKKworICAgICAgICBpZiAodmlld1N0YXJ0IDw9IHRhcmdldFN0YXJ0KSB7CisgICAgICAgICAgICBpZiAodmlld0xpbWl0ID49IHRhcmdldExpbWl0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgodmlld1N0YXJ0LXRhcmdldFN0YXJ0LCB2aWV3TGltaXQtdGFyZ2V0TGltaXQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHZpZXdMaW1pdCA+IHRhcmdldExpbWl0KSB7CisKKyAgICAgICAgICAgIHJldHVybiB2aWV3TGltaXQgLSB0YXJnZXRMaW1pdDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzY3JvbGxUb1Nob3coUmVjdGFuZ2xlIHNob3dSZWN0KSB7CisKKyAgICAgICAgaWYgKGZEb2N1bWVudFZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgUmVjdGFuZ2xlIGJvdW5kcyA9IGdldEJvdW5kcygpOworCisgICAgICAgICAgICBpbnQgZHggPSBnZXRTY3JvbGxEaWZmZXJlbmNlKHNob3dSZWN0LngsIHNob3dSZWN0LnggKyBzaG93UmVjdC53aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzLngsIGJvdW5kcy54ICsgYm91bmRzLndpZHRoKTsKKyAgICAgICAgICAgIGludCBkeSA9IGdldFNjcm9sbERpZmZlcmVuY2Uoc2hvd1JlY3QueSwgc2hvd1JlY3QueSArIHNob3dSZWN0LmhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRzLnksIGJvdW5kcy55ICsgYm91bmRzLmhlaWdodCk7CisKKyAgICAgICAgICAgIHNjcm9sbFNlbGYoZHgsIGR5KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgc2Nyb2xsVG9TaG93KGludCBzaG93WCwgaW50IHNob3dZKSB7CisKKyAgICAgICAgaWYgKGZEb2N1bWVudFZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgaW50IGR4ID0gMCwgZHkgPSAwOworCisgICAgICAgICAgICBSZWN0YW5nbGUgYm91bmRzID0gZ2V0Qm91bmRzKCk7CisgICAgICAgICAgICBpZiAoc2hvd1ggPCBib3VuZHMueCkgeworICAgICAgICAgICAgICAgIGR4ID0gc2hvd1ggLSBib3VuZHMueDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHNob3dYID4gYm91bmRzLnggKyBib3VuZHMud2lkdGgpIHsKKyAgICAgICAgICAgICAgICBkeCA9IHNob3dYIC0gKGJvdW5kcy54ICsgYm91bmRzLndpZHRoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNob3dZIDwgYm91bmRzLnkpIHsKKyAgICAgICAgICAgICAgICBkeSA9IHNob3dZIC0gYm91bmRzLnk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChzaG93WSA+IGJvdW5kcy55ICsgYm91bmRzLmhlaWdodCkgeworICAgICAgICAgICAgICAgIGR5ID0gc2hvd1kgLSAoYm91bmRzLnkgKyBib3VuZHMuaGVpZ2h0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2Nyb2xsU2VsZihkeCwgZHkpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgcGluU2Nyb2xsT2Zmc2V0KGludCBkZWx0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbnRlbnRTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbnRlbnRMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2aWV3U3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB2aWV3TGVuZ3RoKSB7CisKKyAgICAgICAgaWYgKGRlbHRhID4gMCkgeworICAgICAgICAgICAgaW50IHZpZXdMaW1pdCA9IHZpZXdTdGFydCArIHZpZXdMZW5ndGg7CisgICAgICAgICAgICBpbnQgY29udGVudExpbWl0ID0gY29udGVudFN0YXJ0ICsgY29udGVudExlbmd0aDsKKworICAgICAgICAgICAgaWYgKHZpZXdMaW1pdCArIGRlbHRhID4gY29udGVudExpbWl0KSB7CisgICAgICAgICAgICAgICAgZGVsdGEgPSBNYXRoLm1heCgwLCBjb250ZW50TGltaXQtdmlld0xpbWl0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmICh2aWV3U3RhcnQgKyBkZWx0YSA8IGNvbnRlbnRTdGFydCkgeworICAgICAgICAgICAgICAgIGRlbHRhID0gTWF0aC5taW4oMCwgY29udGVudFN0YXJ0LXZpZXdTdGFydCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZGVsdGE7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNjcm9sbFNlbGYoaW50IGR4LCBpbnQgZHkpIHsKKworICAgICAgICBib29sZWFuIHNjcm9sbGVkID0gc2Nyb2xsQnkoZHgsIGR5KTsKKworICAgICAgICBpZiAoc2Nyb2xsZWQgJiYgZlNjcm9sbGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIFJlY3RhbmdsZSBkb2N1bWVudEJvdW5kcyA9IGZEb2N1bWVudFZpZXcuZ2V0RG9jdW1lbnRCb3VuZHMoKTsKKyAgICAgICAgICAgIGZTY3JvbGxlci5zZXRQb3NpdGlvbigtZG9jdW1lbnRCb3VuZHMueCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtZG9jdW1lbnRCb3VuZHMueSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN5bmNocm9uaXplZCBib29sZWFuIHNjcm9sbEJ5KGludCBkeCwgaW50IGR5KSB7CisKKyAgICAgICAgYm9vbGVhbiBzY3JvbGxlZCA9IGZhbHNlOworCisgICAgICAgIGlmIChmU2Nyb2xscykgeworICAgICAgICAgICAgUmVjdGFuZ2xlIGRvY3VtZW50Qm91bmRzID0gZkRvY3VtZW50Vmlldy5nZXREb2N1bWVudEJvdW5kcygpOworICAgICAgICAgICAgUmVjdGFuZ2xlIHZpZXdCb3VuZHMgPSBnZXRCb3VuZHMoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IG9sZER4ID0gZHg7CisgICAgICAgICAgICBkeCA9IHBpblNjcm9sbE9mZnNldChkeCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudEJvdW5kcy54LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRCb3VuZHMud2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm91bmRzLngsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm91bmRzLndpZHRoKTsKKyAgICAgICAgICAgIGR5ID0gcGluU2Nyb2xsT2Zmc2V0KGR5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50Qm91bmRzLnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudEJvdW5kcy5oZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm91bmRzLnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm91bmRzLmhlaWdodCk7CisKKyAgICAgICAgICAgIGlmIChkeCAhPSAwIHx8IGR5ICE9IDApIHsKKyAgICAgICAgICAgICAgICBzY3JvbGxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgZkRvY3VtZW50Vmlldy5tb3ZlQnkoLWR4LCAtZHkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHNjcm9sbGVkOworICAgIH0KKworICAgIC8vIGltcGxlbWVudGF0aW9uIG9mIFNjcm9sbGVyLkNsaWVudCAtIGNhbGxlZCBieSBTY3JvbGxlcgorICAgIC8vIHRoZXkgaGF2ZSB0byBiZSBwdWJsaWMgc2luY2UgdGhleSdyZSBpbiBhbiBpbnRlcmZhY2UKKyAgICAvLyBubyBvbmUgZWxzZSBzaG91bGQgY2FsbCB0aGVzZSBtZXRob2RzCisgICAgcHVibGljIFJlY3RhbmdsZSBnZXRTY3JvbGxTaXplKCkgeworCisgICAgICAgIGlmIChmRG9jdW1lbnRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmRG9jdW1lbnRWaWV3LmdldFNjcm9sbGFibGVBcmVhKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFJlY3RhbmdsZSgwLCAwLCAwLCAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNjcm9sbFRvKGludCB4LCBpbnQgeSkgeworCisgICAgICAgIGlmIChmRG9jdW1lbnRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHNjcm9sbEJ5KHggKyBmRG9jdW1lbnRWaWV3LmdldERvY1goKSwgeSArIGZEb2N1bWVudFZpZXcuZ2V0RG9jWSgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vICoqKiBUZXh0IGFjY2VzcyAqKioKKyAgICBNQ29uc3RUZXh0IGdldFRleHQoKSB7CisgICAgICAgIHJldHVybiBmVGV4dDsKKyAgICB9CisKKyAgICBNVGV4dCBnZXRNb2RpZmlhYmxlVGV4dCgpIHsKKyAgICAgICAgcmV0dXJuIGZUZXh0OworICAgIH0KKworICAgIFN0eWxlZFRleHRDbGlwYm9hcmQgZ2V0Q2xpcGJvYXJkKCkgeworICAgICAgICByZXR1cm4gZkNsaXBib2FyZDsKKyAgICB9CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgcGFpbnQoR3JhcGhpY3MgZykgeworCisgICAgICAgIGlmIChmRG9jdW1lbnRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZEb2N1bWVudFZpZXcucGFpbnQoZyk7CisgICAgICAgIH0KKyAgICB9CisKKworICAgIC8vICoqKiBNZXRyaWMgaW5mbyAtIHVzZWQgYnkgQmVoYXZpb3JzCisgICAgUmVjdGFuZ2xlIGdldENhcmV0UmVjdChUZXh0T2Zmc2V0IG9mZnNldCkgeworCisgICAgICAgIGlmIChmRG9jdW1lbnRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmRG9jdW1lbnRWaWV3LmdldENhcmV0UmVjdChvZmZzZXQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWN0YW5nbGUoMCwgMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBUZXh0T2Zmc2V0IHBvaW50VG9UZXh0T2Zmc2V0KFRleHRPZmZzZXQgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgYW5jaG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBpbmZpbml0ZU1vZGUpIHsKKworICAgICAgICBpZiAoZkRvY3VtZW50VmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZkRvY3VtZW50Vmlldy5wb2ludFRvVGV4dE9mZnNldChyZXN1bHQsIHgsIHksIGFuY2hvciwgaW5maW5pdGVNb2RlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgVGV4dE9mZnNldCgpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gKioqIE90aGVyIHN0dWZmIHVzZWQgYnkgQmVoYXZpb3JzIC0gbW9zdGx5IGZvcm1hdHRlciBleHBvcnRzCisgICAgaW50IGxpbmVDb250YWluaW5nKFRleHRPZmZzZXQgb2Zmc2V0KSB7CisKKyAgICAgICAgaWYgKGZEb2N1bWVudFZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZEb2N1bWVudFZpZXcubGluZUNvbnRhaW5pbmcob2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgaW50IGxpbmVSYW5nZUxvdyhpbnQgbGluZU51bWJlcikgeworCisgICAgICAgIGlmIChmRG9jdW1lbnRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmRG9jdW1lbnRWaWV3LmxpbmVSYW5nZUxvdyhsaW5lTnVtYmVyKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgaW50IGxpbmVSYW5nZUxpbWl0KGludCBsaW5lTnVtYmVyKSB7CisKKyAgICAgICAgaWYgKGZEb2N1bWVudFZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZEb2N1bWVudFZpZXcubGluZVJhbmdlTGltaXQobGluZU51bWJlcik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgc3RvcEJhY2tncm91bmRGb3JtYXR0aW5nKCkgeworCisgICAgICAgIGlmIChmRG9jdW1lbnRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZEb2N1bWVudFZpZXcuc3RvcEJhY2tncm91bmRGb3JtYXR0aW5nKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBSZWN0YW5nbGUgZ2V0Qm91bmRpbmdSZWN0KFRleHRPZmZzZXQgb2Zmc2V0MSwgVGV4dE9mZnNldCBvZmZzZXQyKSB7CisKKyAgICAgICAgaWYgKGZEb2N1bWVudFZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZEb2N1bWVudFZpZXcuZ2V0Qm91bmRpbmdSZWN0KG9mZnNldDEsIG9mZnNldDIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWN0YW5nbGUoMCwgMCwgMCwgMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzeW5jaHJvbml6ZWQgdm9pZCByZWZvcm1hdEFuZERyYXdUZXh0KGludCByZWZvcm1hdFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVmb3JtYXRMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgc2VsU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgc2VsRW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWN0YW5nbGUgYWRkaXRpb25hbFVwZGF0ZVJlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yIGhpbGl0ZUNvbG9yKSB7CisKKyAgICAgICAgaWYgKGZEb2N1bWVudFZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgZkRvY3VtZW50Vmlldy5yZWZvcm1hdEFuZERyYXdUZXh0KHJlZm9ybWF0U3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmb3JtYXRMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsRW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxVcGRhdGVSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpbGl0ZUNvbG9yKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFRleHRPZmZzZXQgZmluZE5ld0luc2VydGlvbk9mZnNldChUZXh0T2Zmc2V0IHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBpbml0aWFsT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHByZXZpb3VzT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydCBkaXJlY3Rpb24pIHsKKworICAgICAgICBpZiAoZkRvY3VtZW50VmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZkRvY3VtZW50Vmlldy5maW5kTmV3SW5zZXJ0aW9uT2Zmc2V0KHJlc3VsdCwgaW5pdGlhbE9mZnNldCwgcHJldmlvdXNPZmZzZXQsIGRpcmVjdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFRleHRPZmZzZXQoaW5pdGlhbE9mZnNldCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzeW5jaHJvbml6ZWQgdm9pZCBkcmF3VGV4dChHcmFwaGljcyBnLAorICAgICAgICAgICAgICAgICAgUmVjdGFuZ2xlIGRhbWFnZWRSZWN0LAorICAgICAgICAgICAgICAgICAgYm9vbGVhbiBzZWxlY3Rpb25WaXNpYmxlLAorICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBzZWxTdGFydCwKKyAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgc2VsRW5kLAorICAgICAgICAgICAgICAgICAgQ29sb3IgaGlsaXRlQ29sb3IpIHsKKworICAgICAgICBpZiAoZkRvY3VtZW50VmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICBmRG9jdW1lbnRWaWV3LmRyYXdUZXh0KGcsIGRhbWFnZWRSZWN0LCBzZWxlY3Rpb25WaXNpYmxlLCBzZWxTdGFydCwgc2VsRW5kLCBoaWxpdGVDb2xvcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZG9jdW1lbnRTaXplQ2hhbmdlZCgpIHsKKworICAgICAgICBpZiAoZlNjcm9sbGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZTY3JvbGxlci5jbGllbnRTY3JvbGxTaXplQ2hhbmdlZCgpOworICAgICAgICB9CisgICAgfQorCisgICAgaW50IGdldEZvcm1hdFdpZHRoKCkgeworCisgICAgICAgIGlmIChmRG9jdW1lbnRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmRG9jdW1lbnRWaWV3LmdldEZvcm1hdFdpZHRoKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBwYXJhZ3JhcGggYXQgdGhlIGdpdmVuIG9mZnNldCBpcyBsZWZ0LXRvLXJpZ2h0LgorICAgICAqIEBwYXJhbSBvZmZzZXQgYW4gb2Zmc2V0IGluIHRoZSB0ZXh0CisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBwYXJhZ3JhcGggYXQgdGhlIGdpdmVuIG9mZnNldCBpcyBsZWZ0LXRvLXJpZ2h0CisgICAgICovCisgICAgYm9vbGVhbiBwYXJhZ3JhcGhJc0xlZnRUb1JpZ2h0KGludCBvZmZzZXQpIHsKKyAgICAgICAgCisgICAgICAgIGlmIChmRG9jdW1lbnRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmRG9jdW1lbnRWaWV3LnBhcmFncmFwaElzTGVmdFRvUmlnaHQob2Zmc2V0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIERvY3VtZW50VmlldyB7CisKKyAgICAgICAgcHJpdmF0ZSBUZXh0Q29tcG9uZW50IGZIb3N0OworICAgICAgICBwcml2YXRlIGJvb2xlYW4gZldyYXBzOworICAgICAgICBwcml2YXRlIGJvb2xlYW4gZldyYXBUb1dpbmRvd1dpZHRoOworICAgICAgICBwcml2YXRlIGludCBmSW5zZXRBbW91bnQ7CisgICAgICAgIHByaXZhdGUgUGFuZWxFdmVudEJyb2FkY2FzdGVyIGZMaXN0ZW5lcjsKKworICAgICAgICAvLyBmQm91bmRzIGlzIHRoZSB0b3RhbCBzY3JvbGxhYmxlIGFyZWEgb2YgdGhlIGRvY3VtZW50IChpbmNsdWRpbmcgaW5zZXRzKQorICAgICAgICBwcml2YXRlIFJlY3RhbmdsZSBmQm91bmRzID0gbmV3IFJlY3RhbmdsZSgpOworICAgICAgICAKKyAgICAgICAgcHJpdmF0ZSBQb2ludCBmT3JpZ2luOworCisgICAgICAgIHByaXZhdGUgTUZvcm1hdHRlciBmRm9ybWF0dGVyOworCisgICAgICAgIHByaXZhdGUgT2Zmc2NyZWVuQnVmZmVyQ2FjaGUgZkJ1ZmZlckNhY2hlOworCisgICAgICAgIC8vIE5vdGUsIHdoZW4gdGhpcyBpcyB0cnVlIHRoZSBjYXJldCB3b24ndCBibGluayBpbiAxLjEuICBMb29rcyBsaWtlIGFuIEFXVCBidWcuCisgICAgICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gZk5vT2Zmc2NyZWVuQnVmZmVyID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBCb29sZWFuLmdldEJvb2xlYW4oIlRleHRDb21wb25lbnQuTm9PZmZzY3JlZW5CdWZmZXIiKTsKKworICAgICAgICAvLyBBbW91bnQgYnkgd2hpY2ggdG8gcmVkdWNlIHRoZSBmb3JtYXQgd2lkdGggdG8gYWxsb3cgZm9yIHJpZ2h0LWFsaWduZWQgY2FyZXRzLgorICAgICAgICBwcml2YXRlIGZpbmFsIGludCBDQVJFVF9TTE9QID0gMTsKKworICAgICAgICBEb2N1bWVudFZpZXcoVGV4dENvbXBvbmVudCBob3N0LAorICAgICAgICAgICAgICAgICAgICAgTUNvbnN0VGV4dCB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwIGRlZmF1bHRWYWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHdyYXBzLAorICAgICAgICAgICAgICAgICAgICAgaW50IHdyYXBXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgIGludCBpbnNldEFtb3VudCwKKyAgICAgICAgICAgICAgICAgICAgIFBhbmVsRXZlbnRCcm9hZGNhc3RlciBsaXN0ZW5lcikgeworCisgICAgICAgICAgICBmSG9zdCA9IGhvc3Q7CisgICAgICAgICAgICBmV3JhcFRvV2luZG93V2lkdGggPSB3cmFwV2lkdGggPT0gV0lORE9XX1dJRFRIOworICAgICAgICAgICAgZkluc2V0QW1vdW50ID0gaW5zZXRBbW91bnQ7CisgICAgICAgICAgICBmTGlzdGVuZXIgPSBsaXN0ZW5lcjsKKworICAgICAgICAgICAgaW5pdEZvcm1hdHRlckFuZFNpemUodGV4dCwgZGVmYXVsdFZhbHVlcywgd3JhcHMsIHdyYXBXaWR0aCk7CisKKyAgICAgICAgICAgIGZCdWZmZXJDYWNoZSA9IG5ldyBPZmZzY3JlZW5CdWZmZXJDYWNoZShob3N0LmZIb3N0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIE5vdGU6IHRoaXMgY29tcHV0ZXMgdGhlIGJvdW5kcyByZWN0YW5nbGUgcmVsYXRpdmUgdG8gZk9yaWdpbgorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSB2b2lkIGNhbGNCb3VuZHNSZWN0KCkgeworICAgICAgICAKKyAgICAgICAgICAgIGZpbmFsIGludCBpbnNldERpbSA9IDIgKiBmSW5zZXRBbW91bnQ7CisKKyAgICAgICAgICAgIGZpbmFsIGludCBtaW5YID0gZkZvcm1hdHRlci5taW5YKCk7CisgICAgICAgICAgICBmaW5hbCBpbnQgbWluWSA9IGZGb3JtYXR0ZXIubWluWSgpOworCisgICAgICAgICAgICBmQm91bmRzLnNldEJvdW5kcyhmT3JpZ2luLnggKyBtaW5YIC0gZkluc2V0QW1vdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZk9yaWdpbi55ICsgbWluWSAtIGZJbnNldEFtb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZGb3JtYXR0ZXIubWF4WCgpIC0gbWluWCArIGluc2V0RGltLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZGb3JtYXR0ZXIubWF4WSgpIC0gbWluWSArIGluc2V0RGltKTsKKyAgICAgICAgICAgIC8vaWYgKG1pblggPD0gMCkgeworICAgICAgICAgICAgLy8gICAgU3lzdGVtLm91dC5wcmludGxuKCJjYWxjQm91bmRzUmVjdDogbWluWD0iK21pblgrCisgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgIjsgYm91bmRzLng9IitmQm91bmRzLngrIjsgd2lkdGg9IitmQm91bmRzLndpZHRoKTsKKyAgICAgICAgICAgIC8vfQorICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSB2b2lkIGluaXRGb3JtYXR0ZXJBbmRTaXplKE1Db25zdFRleHQgdGV4dCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgZGVmYXVsdFZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gd3JhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgd3JhcFdpZHRoKSB7CisKKyAgICAgICAgICAgIFJlY3RhbmdsZSBob3N0Qm91bmRzID0gZkhvc3QuZ2V0Qm91bmRzKCk7CisgICAgICAgICAgICBpbnQgZm9ybWF0V2lkdGg7CisKKyAgICAgICAgICAgIGlmICghd3JhcHMgfHwgZldyYXBUb1dpbmRvd1dpZHRoKSB7CisgICAgICAgICAgICAgICAgZm9ybWF0V2lkdGggPSBob3N0Qm91bmRzLndpZHRoIC0gMiAqIGZJbnNldEFtb3VudDsKKyAgICAgICAgICAgICAgICBpZiAoZm9ybWF0V2lkdGggPD0gQ0FSRVRfU0xPUCkgeworICAgICAgICAgICAgICAgICAgICBmb3JtYXRXaWR0aCA9IENBUkVUX1NMT1ArMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBmb3JtYXRXaWR0aCA9IHdyYXBXaWR0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZkZvcm1hdHRlciA9IE1Gb3JtYXR0ZXIuY3JlYXRlRm9ybWF0dGVyKHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRXaWR0aC1DQVJFVF9TTE9QLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZIb3N0LmdldEdyYXBoaWNzKCkpOworCisgICAgICAgICAgICBmRm9ybWF0dGVyLmZvcm1hdFRvSGVpZ2h0KGhvc3RCb3VuZHMuaGVpZ2h0ICogMik7CisgICAgICAgICAgICBmT3JpZ2luID0gbmV3IFBvaW50KGZJbnNldEFtb3VudCwgZkluc2V0QW1vdW50KTsKKyAgICAgICAgICAgIGNhbGNCb3VuZHNSZWN0KCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBub3RpZmljYXRpb24gbWV0aG9kIGNhbGxlZCBieSBUZXh0Q29tcG9uZW50CisgICAgICAgIHZvaWQgaG9zdFNpemVDaGFuZ2VkKCkgeworCisgICAgICAgICAgICBmaW5hbCBib29sZWFuIHdyYXAgPSBmRm9ybWF0dGVyLndyYXAoKTsKKyAgICAgICAgICAgIGlmIChmV3JhcFRvV2luZG93V2lkdGggfHwgIXdyYXApIHsKKworICAgICAgICAgICAgICAgIFJlY3RhbmdsZSBob3N0Qm91bmRzID0gZkhvc3QuZ2V0Qm91bmRzKCk7CisgICAgICAgICAgICAgICAgZmluYWwgaW50IGluc2V0RGltID0gMiAqIGZJbnNldEFtb3VudDsKKworICAgICAgICAgICAgICAgIGludCBmb3JtYXRXaWR0aCA9IGhvc3RCb3VuZHMud2lkdGggLSAyKmZJbnNldEFtb3VudDsKKyAgICAgICAgICAgICAgICBpZiAoZm9ybWF0V2lkdGggPD0gQ0FSRVRfU0xPUCkgeworICAgICAgICAgICAgICAgICAgICBmb3JtYXRXaWR0aCA9IENBUkVUX1NMT1ArMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZkZvcm1hdHRlci5zZXRMaW5lQm91bmQoZm9ybWF0V2lkdGgtQ0FSRVRfU0xPUCk7CisKKyAgICAgICAgICAgICAgICBmRm9ybWF0dGVyLmZvcm1hdFRvSGVpZ2h0KGhvc3RCb3VuZHMueSArIChob3N0Qm91bmRzLmhlaWdodCoyKSAtIGZPcmlnaW4ueSk7CisKKyAgICAgICAgICAgICAgICBjYWxjQm91bmRzUmVjdCgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJXaW5kb3cgYm91bmRzPSIraG9zdEJvdW5kcysiOyBkb2N1bWVudCBib3VuZHM9IitmQm91bmRzKTsKKworICAgICAgICAgICAgICAgIGZIb3N0LmRvY3VtZW50U2l6ZUNoYW5nZWQoKTsKKyAgICAgICAgICAgICAgICBmTGlzdGVuZXIudGV4dFN0YXRlQ2hhbmdlZChUZXh0UGFuZWxFdmVudC5GT1JNQVRfV0lEVEhfQ0hBTkdFRCk7CisgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oImZvcm1hdFdpZHRoPSIrZm9ybWF0V2lkdGgpOworICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJkb2N1bWVudCBib3VuZHM9IitmQm91bmRzKTsKKyAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy9kdW1wV2lkdGhJbmZvKCk7CisgICAgICAgIH0KKworICAgICAgICBpbnQgZ2V0Rm9ybWF0V2lkdGgoKSB7CisKKyAgICAgICAgICAgIHJldHVybiBmRm9ybWF0dGVyLmxpbmVCb3VuZCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBib29sZWFuIHBhcmFncmFwaElzTGVmdFRvUmlnaHQoaW50IG9mZnNldCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBpbnQgbGluZU51bWJlciA9IGZGb3JtYXR0ZXIubGluZUNvbnRhaW5pbmcob2Zmc2V0KTsKKyAgICAgICAgICAgIHJldHVybiBmRm9ybWF0dGVyLmxpbmVJc0xlZnRUb1JpZ2h0KGxpbmVOdW1iZXIpOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSB2b2lkIHRleHRTaXplTWlnaHRIYXZlQ2hhbmdlZCgpIHsKKworICAgICAgICAgICAgYm9vbGVhbiBjaGFuZ2VkID0gZmFsc2U7CisgICAgICAgICAgICBmaW5hbCBpbnQgaW5zZXREaW0gPSAyICogZkluc2V0QW1vdW50OworICAgICAgICAgICAgCisgICAgICAgICAgICBpbnQgdGV4dEhlaWdodCA9IGZGb3JtYXR0ZXIubWF4WSgpIC0gZkZvcm1hdHRlci5taW5ZKCkgKyBpbnNldERpbTsKKyAgICAgICAgICAgIGlmICh0ZXh0SGVpZ2h0ICE9IGZCb3VuZHMuaGVpZ2h0KSB7CisgICAgICAgICAgICAgICAgZkJvdW5kcy5oZWlnaHQgPSB0ZXh0SGVpZ2h0OworICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWZGb3JtYXR0ZXIud3JhcCgpKSB7CisgICAgICAgICAgICAgICAgaW50IHRleHRXaWR0aCA9IGZGb3JtYXR0ZXIubWF4WCgpIC0gZkZvcm1hdHRlci5taW5YKCkgKyBpbnNldERpbTsKKyAgICAgICAgICAgICAgICBpZiAodGV4dFdpZHRoICE9IGZCb3VuZHMud2lkdGgpIHsKKyAgICAgICAgICAgICAgICAgICAgZkJvdW5kcy53aWR0aCA9IHRleHRXaWR0aDsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2hhbmdlZCkgeworICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJUZXh0IHNpemUgY2hhbmdlZC4gIGZCb3VuZHM6ICIgKyBmQm91bmRzKTsKKyAgICAgICAgICAgICAgICBjYWxjQm91bmRzUmVjdCgpOworICAgICAgICAgICAgICAgIGZIb3N0LmRvY3VtZW50U2l6ZUNoYW5nZWQoKTsKKyAgICAgICAgICAgICAgICBmSG9zdC5zY3JvbGxUb1Nob3coZ2V0RG9jdW1lbnRCb3VuZHMoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIHZvaWQgZG9EcmF3VGV4dChHcmFwaGljcyBnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWN0YW5nbGUgZHJhd1JlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gc2VsZWN0aW9uVmlzaWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBzZWxTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBzZWxFbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yIGhpbGl0ZUNvbG9yKSB7CisKKyAgICAgICAgICAgIENvbG9yIG9sZENvbG9yID0gZy5nZXRDb2xvcigpOworICAgICAgICAgICAgZy5zZXRDb2xvcihmSG9zdC5nZXRIb3N0KCkuZ2V0QmFja2dyb3VuZCgpKTsKKyAgICAgICAgICAgIGcuZmlsbFJlY3QoZHJhd1JlY3QueCwgZHJhd1JlY3QueSwgZHJhd1JlY3Qud2lkdGgsIGRyYXdSZWN0LmhlaWdodCk7CisgICAgICAgICAgICBnLnNldENvbG9yKG9sZENvbG9yKTsKKworICAgICAgICAgICAgLy8gICAgICAgICAgICBnLmNsZWFyUmVjdChkcmF3UmVjdC54LCBkcmF3UmVjdC55LCBkcmF3UmVjdC53aWR0aCwgZHJhd1JlY3QuaGVpZ2h0KTsKKworICAgICAgICAgICAgaWYgKHNlbGVjdGlvblZpc2libGUpIHsKKyAgICAgICAgICAgICAgICBmRm9ybWF0dGVyLmRyYXcoZywgZHJhd1JlY3QsIGZPcmlnaW4sIHNlbFN0YXJ0LCBzZWxFbmQsIGhpbGl0ZUNvbG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGZGb3JtYXR0ZXIuZHJhdyhnLCBkcmF3UmVjdCwgZk9yaWdpbiwgbnVsbCwgbnVsbCwgbnVsbCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzZWxTdGFydCAhPSBudWxsICYmIHNlbFN0YXJ0LmVxdWFscyhzZWxFbmQpICYmIHNlbGVjdGlvblZpc2libGUpIHsKKworICAgICAgICAgICAgICAgIGZGb3JtYXR0ZXIuZHJhd0NhcmV0KGcsIHNlbFN0YXJ0LCBmT3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1RST05HX0NBUkVUX0NPTE9SLCBXRUFLX0NBUkVUX0NPTE9SKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZHJhd1RleHQoR3JhcGhpY3MgZywKKyAgICAgICAgICAgICAgICAgICAgICBSZWN0YW5nbGUgZHJhd1JlY3QsCisgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBzZWxlY3Rpb25WaXNpYmxlLAorICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgc2VsU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBzZWxFbmQsCisgICAgICAgICAgICAgICAgICAgICAgQ29sb3IgaGlsaXRlQ29sb3IpIHsKKworICAgICAgICAgICAgaWYgKGcgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGRyYXdSZWN0ID0gZHJhd1JlY3QuaW50ZXJzZWN0aW9uKGZIb3N0LmdldEJvdW5kcygpKTsKKyAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiZHJhd1RleHQ6ZHJhd1JlY3Q6ICIgKyBkcmF3UmVjdCk7CisgICAgICAgICAgICAgICAgZy5jbGlwUmVjdChkcmF3UmVjdC54LCBkcmF3UmVjdC55LCBkcmF3UmVjdC53aWR0aCwgZHJhd1JlY3QuaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBpZiAoZk5vT2Zmc2NyZWVuQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgICAgIGRvRHJhd1RleHQoZywgZHJhd1JlY3QsIHNlbGVjdGlvblZpc2libGUsIHNlbFN0YXJ0LCBzZWxFbmQsIGhpbGl0ZUNvbG9yKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIEltYWdlIG9mZnNjcmVlbkJ1ZmZlciA9IGZCdWZmZXJDYWNoZS5nZXRCdWZmZXIoZHJhd1JlY3Qud2lkdGgsIGRyYXdSZWN0LmhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIEdyYXBoaWNzIG9mZnNjcmVlbkdyYXBoaWNzID0gb2Zmc2NyZWVuQnVmZmVyLmdldEdyYXBoaWNzKCk7CisgICAgICAgICAgICAgICAgICAgIG9mZnNjcmVlbkdyYXBoaWNzLnRyYW5zbGF0ZSgtZHJhd1JlY3QueCwgLWRyYXdSZWN0LnkpOworICAgIAorICAgICAgICAgICAgICAgICAgICBkb0RyYXdUZXh0KG9mZnNjcmVlbkdyYXBoaWNzLCBkcmF3UmVjdCwgc2VsZWN0aW9uVmlzaWJsZSwgc2VsU3RhcnQsIHNlbEVuZCwgaGlsaXRlQ29sb3IpOworICAgIAorICAgICAgICAgICAgICAgICAgICBnLmRyYXdJbWFnZShvZmZzY3JlZW5CdWZmZXIsIGRyYXdSZWN0LngsIGRyYXdSZWN0LnksIGZIb3N0LmZIb3N0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0ZXh0U2l6ZU1pZ2h0SGF2ZUNoYW5nZWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcmVmb3JtYXRBbmREcmF3VGV4dChpbnQgcmVmb3JtYXRTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZWZvcm1hdExlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgc2VsU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHNlbEVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlY3RhbmdsZSBhZGRpdGlvbmFsVXBkYXRlUmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbG9yIGhpbGl0ZUNvbG9yKSB7CisKKyAgICAgICAgICAgIFJlY3RhbmdsZSB2aXNpYmxlQm91bmRzID0gZkhvc3QuZ2V0Qm91bmRzKCk7CisgICAgICAgICAgICBSZWN0YW5nbGUgcmVkcmF3UmVjdCA9IGZGb3JtYXR0ZXIudXBkYXRlRm9ybWF0KHJlZm9ybWF0U3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZm9ybWF0TGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlQm91bmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmT3JpZ2luKTsKKyAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJbMV0gcmVkcmF3UmVjdDogIiArIHJlZHJhd1JlY3QpOworCisgICAgICAgICAgICBpZiAoYWRkaXRpb25hbFVwZGF0ZVJlY3QgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJlZHJhd1JlY3QuYWRkKGFkZGl0aW9uYWxVcGRhdGVSZWN0KTsKKyAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiWzJdIHJlZHJhd1JlY3Q6ICIgKyByZWRyYXdSZWN0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYm9vbGVhbiBoYXZlU2VsZWN0aW9uOworCisgICAgICAgICAgICBpZiAoc2VsU3RhcnQgIT0gbnVsbCAmJiBzZWxFbmQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGhhdmVTZWxlY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgICAgIHJlZHJhd1JlY3QuYWRkKGZGb3JtYXR0ZXIuZ2V0Qm91bmRpbmdSZWN0KHNlbFN0YXJ0LCBzZWxFbmQsIGZPcmlnaW4sIGZGb3JtYXR0ZXIuTE9PU0UpKTsKKyAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiWzNdIHJlZHJhd1JlY3Q6ICIgKyByZWRyYXdSZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGhhdmVTZWxlY3Rpb24gPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZHJhd1RleHQoZkhvc3QuZ2V0R3JhcGhpY3MoKSwgcmVkcmF3UmVjdCwgaGF2ZVNlbGVjdGlvbiwgc2VsU3RhcnQsIHNlbEVuZCwgaGlsaXRlQ29sb3IpOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSB2b2lkIGxldEJlaGF2aW9yRHJhdyhHcmFwaGljcyBnLCBSZWN0YW5nbGUgZHJhd1JlY3QpIHsKKworICAgICAgICAgICAgYm9vbGVhbiByZXN1bHQgPSBmYWxzZTsKKworICAgICAgICAgICAgaWYgKGZIb3N0LmZCZWhhdmlvciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gZkhvc3QuZkJlaGF2aW9yLnBhaW50KGcsIGRyYXdSZWN0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCFyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICBkcmF3VGV4dChnLCBkcmF3UmVjdCwgZmFsc2UsIG51bGwsIG51bGwsIG51bGwpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdm9pZCBtb3ZlQnkoaW50IGR4LCBpbnQgZHkpIHsKKworICAgICAgICAgICAgUmVjdGFuZ2xlIHZpc2libGVCb3VuZHMgPSBmSG9zdC5nZXRCb3VuZHMoKTsKKyAgICAgICAgICAgIEdyYXBoaWNzIGcgPSBmSG9zdC5nZXRHcmFwaGljcygpOworCisgICAgICAgICAgICBmQm91bmRzLnggKz0gZHg7CisgICAgICAgICAgICBmQm91bmRzLnkgKz0gZHk7CisgICAgICAgICAgICBmT3JpZ2luLnggKz0gZHg7CisgICAgICAgICAgICBmT3JpZ2luLnkgKz0gZHk7CisKKyAgICAgICAgICAgIFJlY3RhbmdsZSByZWZyZXNoUmVjdCA9IG5ldyBSZWN0YW5nbGUodmlzaWJsZUJvdW5kcyk7CisKKyAgICAgICAgICAgIGlmIChkeCA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGcgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBnLmNvcHlBcmVhKHZpc2libGVCb3VuZHMueCwgdmlzaWJsZUJvdW5kcy55LCB2aXNpYmxlQm91bmRzLndpZHRoLCB2aXNpYmxlQm91bmRzLmhlaWdodCwgZHgsIGR5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGR5IDwgMCkgeworICAgICAgICAgICAgICAgICAgICByZWZyZXNoUmVjdC55ID0gdmlzaWJsZUJvdW5kcy55ICsgdmlzaWJsZUJvdW5kcy5oZWlnaHQgKyBkeTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVmcmVzaFJlY3QuaGVpZ2h0ID0gTWF0aC5hYnMoZHkpOworICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJyZWZyZXNoUmVjdD0iICsgcmVmcmVzaFJlY3QpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsZXRCZWhhdmlvckRyYXcoZywgcmVmcmVzaFJlY3QpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwcml2YXRlIFJlY3RhbmdsZSBnZXRJbnNldEJvdW5kcygpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IGluc2V0RGltID0gMiAqIGZJbnNldEFtb3VudDsKKyAgICAgICAgICAgIHJldHVybiBuZXcgUmVjdGFuZ2xlKGZCb3VuZHMueC1mSW5zZXRBbW91bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmQm91bmRzLnktZkluc2V0QW1vdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkJvdW5kcy53aWR0aCtpbnNldERpbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZCb3VuZHMuaGVpZ2h0K2luc2V0RGltKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgcGFpbnQoR3JhcGhpY3MgZykgeworCisgICAgICAgICAgICBSZWN0YW5nbGUgaG9zdEJvdW5kcyA9IGZIb3N0LmdldEJvdW5kcygpOworICAgICAgICAgICAgUmVjdGFuZ2xlIHRleHRSZWZyZXNoUmVjdCA9IGhvc3RCb3VuZHMuaW50ZXJzZWN0aW9uKGdldEluc2V0Qm91bmRzKCkpOworICAgICAgICAgICAgbGV0QmVoYXZpb3JEcmF3KGcsIHRleHRSZWZyZXNoUmVjdCk7CisgICAgICAgIH0KKworICAgICAgICBSZWN0YW5nbGUgZ2V0Q2FyZXRSZWN0KFRleHRPZmZzZXQgb2Zmc2V0KSB7CisKKyAgICAgICAgICAgIHJldHVybiBmRm9ybWF0dGVyLmdldENhcmV0UmVjdChvZmZzZXQsIGZPcmlnaW4pOworICAgICAgICB9CisKKyAgICAgICAgVGV4dE9mZnNldCBwb2ludFRvVGV4dE9mZnNldChUZXh0T2Zmc2V0IHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IGFuY2hvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGluZmluaXRlTW9kZSkgeworCisgICAgICAgICAgICByZXR1cm4gZkZvcm1hdHRlci5wb2ludFRvVGV4dE9mZnNldChyZXN1bHQsIHgsIHksIGZPcmlnaW4sIGFuY2hvciwgaW5maW5pdGVNb2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIFJlY3RhbmdsZSBnZXRTY3JvbGxhYmxlQXJlYSgpIHsKKworICAgICAgICAgICAgUmVjdGFuZ2xlIGFyZWEgPSBuZXcgUmVjdGFuZ2xlKGZCb3VuZHMpOworICAgICAgICAgICAgYXJlYS54ICs9IGZJbnNldEFtb3VudCAtIGZPcmlnaW4ueDsKKyAgICAgICAgICAgIGFyZWEueSArPSBmSW5zZXRBbW91bnQgLSBmT3JpZ2luLnk7CisgICAgICAgICAgICByZXR1cm4gYXJlYTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBEb2Vzbid0IGNsb25lIHNvIFRleHRDb21wb25lbnQgbmVlZHMgdG8gYmUgbmljZS4gIFRleHRDb21wb25lbnQKKyAgICAgICAgICogaXMgdGhlIG9ubHkgY2xhc3Mgd2hpY2ggY2FuIGFjY2VzcyB0aGlzIGFueXdheS4KKyAgICAgICAgICovCisgICAgICAgIFJlY3RhbmdsZSBnZXREb2N1bWVudEJvdW5kcygpIHsKKworICAgICAgICAgICAgcmV0dXJuIGZCb3VuZHM7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludCBnZXREb2NYKCkgeworICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiBmT3JpZ2luLnggLSBmSW5zZXRBbW91bnQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludCBnZXREb2NZKCkgeworICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiBmT3JpZ2luLnkgLSBmSW5zZXRBbW91bnQ7CisgICAgICAgIH0KKworICAgICAgICBpbnQgbGluZUNvbnRhaW5pbmcoVGV4dE9mZnNldCBvZmZzZXQpIHsKKworICAgICAgICAgICAgcmV0dXJuIGZGb3JtYXR0ZXIubGluZUNvbnRhaW5pbmcob2Zmc2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBsaW5lUmFuZ2VMb3coaW50IGxpbmVOdW1iZXIpIHsKKworICAgICAgICAgICAgcmV0dXJuIGZGb3JtYXR0ZXIubGluZVJhbmdlTG93KGxpbmVOdW1iZXIpOworICAgICAgICB9CisKKyAgICAgICAgaW50IGxpbmVSYW5nZUxpbWl0KGludCBsaW5lTnVtYmVyKSB7CisKKyAgICAgICAgICAgIHJldHVybiBmRm9ybWF0dGVyLmxpbmVSYW5nZUxpbWl0KGxpbmVOdW1iZXIpOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzdG9wQmFja2dyb3VuZEZvcm1hdHRpbmcoKSB7CisKKyAgICAgICAgICAgIGZGb3JtYXR0ZXIuc3RvcEJhY2tncm91bmRGb3JtYXR0aW5nKCk7CisgICAgICAgIH0KKworICAgICAgICBSZWN0YW5nbGUgZ2V0Qm91bmRpbmdSZWN0KFRleHRPZmZzZXQgb2Zmc2V0MSwgVGV4dE9mZnNldCBvZmZzZXQyKSB7CisKKyAgICAgICAgICAgIFJlY3RhbmdsZSByID0gZkZvcm1hdHRlci5nZXRCb3VuZGluZ1JlY3Qob2Zmc2V0MSwgb2Zmc2V0MiwgZk9yaWdpbiwgZkZvcm1hdHRlci5USUdIVCk7CisgICAgICAgICAgICAvL3Iud2lkdGggKz0gQ0FSRVRfU0xPUDsKKyAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJvZmZzZXQxPSIrb2Zmc2V0MSsiOyBvZmZzZXQyPSIrb2Zmc2V0Mik7CisgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiYm91bmRzIHdpZHRoPSIrci53aWR0aCsiOyBob3N0IHdpZHRoPSIrKGZIb3N0LmdldEJvdW5kcygpLndpZHRoKSk7CisgICAgICAgICAgICByZXR1cm4gcjsKKyAgICAgICAgfQorCisgICAgICAgIFRleHRPZmZzZXQgZmluZE5ld0luc2VydGlvbk9mZnNldChUZXh0T2Zmc2V0IHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgaW5pdGlhbE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgcHJldmlvdXNPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydCBkaXJlY3Rpb24pIHsKKworICAgICAgICAgICAgcmV0dXJuIGZGb3JtYXR0ZXIuZmluZE5ld0luc2VydGlvbk9mZnNldCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwgaW5pdGlhbE9mZnNldCwgcHJldmlvdXNPZmZzZXQsIGRpcmVjdGlvbik7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGV4dEVkaXRCZWhhdmlvci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRFZGl0QmVoYXZpb3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kOWY2ZGUwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRFZGl0QmVoYXZpb3IuamF2YQpAQCAtMCwwICsxLDQ4NCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogVGV4dEVkaXRCZWhhdmlvci5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUxOjIzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCitpbXBvcnQgamF2YS5hd3QuUmVjdGFuZ2xlOworCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuQWN0aW9uRXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuS2V5RXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuTW91c2VFdmVudDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRmb3JtYXQuVGV4dE9mZnNldDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVNb2RpZmllcjsKKworLy8gQWxsIGNoYW5nZXMgdG8gdGhlIHRleHQgc2hvdWxkIGhhcHBlbiBpbiB0aGlzIGNsYXNzLCBvciBpbgorLy8gaXRzIFR5cGluZ0ludGVyYWN0b3IuCisKK2NsYXNzIFRleHRFZGl0QmVoYXZpb3IgZXh0ZW5kcyBCZWhhdmlvciB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgVGV4dENvbXBvbmVudCBmVGV4dENvbXBvbmVudDsKKyAgICBwcml2YXRlIFRleHRTZWxlY3Rpb24gZlNlbGVjdGlvbjsKKyAgICBwcml2YXRlIE1UZXh0IGZUZXh0OworICAgIHByaXZhdGUgU2ltcGxlQ29tbWFuZExvZyBmQ29tbWFuZExvZzsKKyAgICBwcml2YXRlIFBhbmVsRXZlbnRCcm9hZGNhc3RlciBmTGlzdGVuZXI7CisgICAgcHJpdmF0ZSBUeXBpbmdJbnRlcmFjdG9yIGZUeXBpbmdJbnRlcmFjdG9yID0gbnVsbDsKKyAgICBwcml2YXRlIEtleVJlbWFwIGZSZW1hcDsKKyAgICAKKyAgICBwcml2YXRlIEF0dHJpYnV0ZU1hcCBmU2F2ZWRUeXBpbmdTdHlsZSA9IG51bGw7CisgICAgcHJpdmF0ZSBpbnQgZlNhdmVkSW5zUHQgPSAwOworICAgIAorICAgIHB1YmxpYyBUZXh0RWRpdEJlaGF2aW9yKFRleHRDb21wb25lbnQgdGV4dENvbXBvbmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0U2VsZWN0aW9uIHNlbGVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYW5lbEV2ZW50QnJvYWRjYXN0ZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5UmVtYXAgcmVtYXApIHsKKworICAgICAgICBmVGV4dENvbXBvbmVudCA9IHRleHRDb21wb25lbnQ7CisgICAgICAgIGZTZWxlY3Rpb24gPSBzZWxlY3Rpb247CisgICAgICAgIGZUZXh0ID0gdGV4dENvbXBvbmVudC5nZXRNb2RpZmlhYmxlVGV4dCgpOworICAgICAgICBmQ29tbWFuZExvZyA9IG5ldyBTaW1wbGVDb21tYW5kTG9nKGxpc3RlbmVyKTsKKyAgICAgICAgZkxpc3RlbmVyID0gbGlzdGVuZXI7CisgICAgICAgIGZSZW1hcCA9IHJlbWFwOworICAgIH0KKworICAgIHB1YmxpYyBLZXlSZW1hcCBnZXRLZXlSZW1hcCgpIHsKKworICAgICAgICByZXR1cm4gZlJlbWFwOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEtleVJlbWFwKEtleVJlbWFwIHJlbWFwKSB7CisKKyAgICAgICAgZlJlbWFwID0gcmVtYXA7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gdGV4dENvbnRyb2xFdmVudE9jY3VycmVkKEJlaGF2aW9yLkV2ZW50VHlwZSBldmVudCwgT2JqZWN0IHdoYXQpIHsKKworICAgICAgICBib29sZWFuIGhhbmRsZWQgPSB0cnVlOworICAgICAgICAKKyAgICAgICAgaWYgKGV2ZW50ID09IEJlaGF2aW9yLkNIQVJBQ1RFUl9TVFlMRV9NT0QgfHwKKyAgICAgICAgICAgIGV2ZW50ID09IEJlaGF2aW9yLlBBUkFHUkFQSF9TVFlMRV9NT0QpIHsKKyAgICAgICAgICAgIGRvU3R5bGVDaGFuZ2UoZXZlbnQsIHdoYXQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGV2ZW50ID09IEJlaGF2aW9yLkNVVCkgeworICAgICAgICAgICAgZG9DdXQoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChldmVudCA9PSBCZWhhdmlvci5QQVNURSkgeworICAgICAgICAgICAgZG9QYXN0ZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGV2ZW50ID09IEJlaGF2aW9yLkNMRUFSKSB7CisgICAgICAgICAgICBkb0NsZWFyKCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZXZlbnQgPT0gQmVoYXZpb3IuUkVQTEFDRSkgeworICAgICAgICAgICAgZG9VbmRvYWJsZVJlcGxhY2UoKFRleHRSZXBsYWNlbWVudCkgd2hhdCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZXZlbnQgPT0gQmVoYXZpb3IuVU5ETykgeworICAgICAgICAgICAgZkNvbW1hbmRMb2cudW5kbygpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGV2ZW50ID09IEJlaGF2aW9yLlJFRE8pIHsKKyAgICAgICAgICAgIGZDb21tYW5kTG9nLnJlZG8oKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChldmVudCA9PSBCZWhhdmlvci5TRVRfTU9ESUZJRUQpIHsKKyAgICAgICAgICAgIGZDb21tYW5kTG9nLnNldE1vZGlmaWVkKHdoYXQgPT0gQm9vbGVhbi5UUlVFKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChldmVudCA9PSBCZWhhdmlvci5DTEVBUl9DT01NQU5EX0xPRykgeworICAgICAgICAgICAgZkNvbW1hbmRMb2cuY2xlYXJMb2coKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChldmVudCA9PSBCZWhhdmlvci5TRVRfQ09NTUFORF9MT0dfU0laRSkgeworICAgICAgICAgICAgZkNvbW1hbmRMb2cuc2V0TG9nU2l6ZSgoKEludGVnZXIpd2hhdCkuaW50VmFsdWUoKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBoYW5kbGVkID0gc3VwZXIudGV4dENvbnRyb2xFdmVudE9jY3VycmVkKGV2ZW50LCB3aGF0KTsKKyAgICAgICAgfQorCisgICAgICAgIGNoZWNrU2F2ZWRUeXBpbmdTdHlsZSgpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGhhbmRsZWQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogSXQncyB1bmZvcnR1bmF0ZSB0aGF0IHRoZSB0ZXh0IGlzIG1vZGlmaWVkIGFuZCByZWZvcm1hdHRlZCBpbgorICAgICAqIHRocmVlIGRpZmZlcmVudCBtZXRob2RzLiAgVGhpcyBtZXRob2QgaXMgdGhlICJjb21tb24gcHJvbG9ndWUiCisgICAgICogZm9yIGFsbCB0ZXh0IG1vZGlmaWNhdGlvbnMuCisgICAgICoKKyAgICAgKiBUaGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZSBtb2RpZnlpbmcgYW5kIHJlZm9ybWF0dGluZworICAgICAqIHRoZSB0ZXh0LiAgSXQgZG9lcyB0aHJlZSB0aGluZ3M6ICBzdG9wcyBjYXJldCBibGlua2luZywgc3RvcHMKKyAgICAgKiBiYWNrZ3JvdW5kIGZvcm1hdHRpbmcsIGFuZCByZXR1cm5zIHRoZSBSZWN0YW5nbGUgY29udGFpbmluZyB0aGUKKyAgICAgKiBjdXJyZW50IChzb29uLXRvLWJlIG9ic29sZXRlKSBzZWxlY3Rpb24uCisgICAgICovCisgICAgcHJpdmF0ZSBSZWN0YW5nbGUgcHJlcGFyZUZvclRleHRFZGl0KCkgeworCisgICAgICAgIGZTZWxlY3Rpb24uc3RvcENhcmV0QmxpbmtpbmcoKTsKKyAgICAgICAgZlRleHRDb21wb25lbnQuc3RvcEJhY2tncm91bmRGb3JtYXR0aW5nKCk7CisgICAgICAgIHJldHVybiBmVGV4dENvbXBvbmVudC5nZXRCb3VuZGluZ1JlY3QoZlNlbGVjdGlvbi5nZXRTdGFydCgpLCBmU2VsZWN0aW9uLmdldEVuZCgpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZG9DbGVhcigpIHsKKyAgICAgICAgVGV4dFJhbmdlIHNlbFJhbmdlID0gZlNlbGVjdGlvbi5nZXRTZWxlY3Rpb25SYW5nZSgpOworCisgICAgICAgIGlmIChzZWxSYW5nZS5zdGFydCA9PSBzZWxSYW5nZS5saW1pdCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBkb1VuZG9hYmxlVGV4dENoYW5nZShzZWxSYW5nZS5zdGFydCwgc2VsUmFuZ2UubGltaXQsIG51bGwsIG5ldyBUZXh0T2Zmc2V0KHNlbFJhbmdlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0KSwgbmV3IFRleHRPZmZzZXQoc2VsUmFuZ2Uuc3RhcnQpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZG9DdXQoKSB7CisgICAgICAgIFRleHRSYW5nZSBzZWxSYW5nZSA9IGZTZWxlY3Rpb24uZ2V0U2VsZWN0aW9uUmFuZ2UoKTsKKworICAgICAgICBpZiAoc2VsUmFuZ2Uuc3RhcnQgPT0gc2VsUmFuZ2UubGltaXQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZlRleHRDb21wb25lbnQuZ2V0Q2xpcGJvYXJkKCkuc2V0Q29udGVudHMoZlRleHQuZXh0cmFjdChzZWxSYW5nZS5zdGFydCwgc2VsUmFuZ2UubGltaXQpKTsKKyAgICAgICAgZG9VbmRvYWJsZVRleHRDaGFuZ2Uoc2VsUmFuZ2Uuc3RhcnQsIHNlbFJhbmdlLmxpbWl0LCBudWxsLCBuZXcgVGV4dE9mZnNldChzZWxSYW5nZS5zdGFydCksIG5ldyBUZXh0T2Zmc2V0KHNlbFJhbmdlLnN0YXJ0KSk7CisKKyAgICAgICAgZkxpc3RlbmVyLnRleHRTdGF0ZUNoYW5nZWQoVGV4dFBhbmVsRXZlbnQuQ0xJUEJPQVJEX0NIQU5HRUQpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBkb1Bhc3RlKCkgeworICAgICAgICBUZXh0UmFuZ2Ugc2VsUmFuZ2UgPSBmU2VsZWN0aW9uLmdldFNlbGVjdGlvblJhbmdlKCk7CisgICAgICAgIE1Db25zdFRleHQgY2xpcFRleHQgPSBmVGV4dENvbXBvbmVudC5nZXRDbGlwYm9hcmQoKS5nZXRDb250ZW50cyhBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUCk7CisKKyAgICAgICAgaWYgKGNsaXBUZXh0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGRvVW5kb2FibGVUZXh0Q2hhbmdlKHNlbFJhbmdlLnN0YXJ0LCBzZWxSYW5nZS5saW1pdCwgY2xpcFRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUZXh0T2Zmc2V0KHNlbFJhbmdlLnN0YXJ0ICsgY2xpcFRleHQubGVuZ3RoKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVGV4dE9mZnNldChzZWxSYW5nZS5zdGFydCArIGNsaXBUZXh0Lmxlbmd0aCgpKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmTGlzdGVuZXIudGV4dFN0YXRlQ2hhbmdlZChUZXh0UGFuZWxFdmVudC5DTElQQk9BUkRfQ0hBTkdFRCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZG9VbmRvYWJsZVJlcGxhY2UoVGV4dFJlcGxhY2VtZW50IHJlcGxhY2VtZW50KSB7CisKKyAgICAgICAgZG9VbmRvYWJsZVRleHRDaGFuZ2UocmVwbGFjZW1lbnQuZ2V0U3RhcnQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQuZ2V0TGltaXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQuZ2V0VGV4dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudC5nZXRTZWxlY3Rpb25TdGFydCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudC5nZXRTZWxlY3Rpb25MaW1pdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPbmx5IFR5cGluZ0ludGVyYWN0b3IgYW5kIFRleHRDb21tYW5kIHNob3VsZCBjYWxsIHRoaXMhCisgICAgICovCisgICAgdm9pZCBkb1JlcGxhY2VUZXh0KGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICBNQ29uc3RUZXh0IG5ld1RleHQsCisgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgbmV3U2VsU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgbmV3U2VsRW5kKSB7CisKKyAgICAgICAgaW50IHRleHRMZW5ndGg7CisKKyAgICAgICAgZlRleHQucmVzZXREYW1hZ2VkUmFuZ2UoKTsKKworICAgICAgICBSZWN0YW5nbGUgb2xkU2VsUmVjdCA9IHByZXBhcmVGb3JUZXh0RWRpdCgpOworCisgICAgICAgIGlmIChuZXdUZXh0ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRleHRMZW5ndGggPSAwOworICAgICAgICAgICAgZlRleHQucmVtb3ZlKHN0YXJ0LCBsaW1pdCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0ZXh0TGVuZ3RoID0gbmV3VGV4dC5sZW5ndGgoKTsKKyAgICAgICAgICAgIGZUZXh0LnJlcGxhY2Uoc3RhcnQsIGxpbWl0LCBuZXdUZXh0LCAwLCB0ZXh0TGVuZ3RoKTsKKyAgICAgICAgfQorICAgICAgICBmU2VsZWN0aW9uLnNldFNlbGVjdGlvblJhbmdlKG5ld1NlbFN0YXJ0LCBuZXdTZWxFbmQsIG5ld1NlbFN0YXJ0KTsKKyAgICAgICAgcmVmb3JtYXRBbmREcmF3VGV4dChmU2VsZWN0aW9uLmdldFN0YXJ0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlNlbGVjdGlvbi5nZXRFbmQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRTZWxSZWN0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPbmx5IHRoZSB0eXBpbmcgaW50ZXJhY3RvciBzaG91bGQgY2FsbCB0aGlzIQorICAgICAqLworICAgIHZvaWQgZG9SZXBsYWNlU2VsZWN0ZWRUZXh0KGNoYXIgY2gsIEF0dHJpYnV0ZU1hcCBjaGFyU3R5bGUpIHsKKworICAgICAgICBpbnQgc3RhcnQgPSBmU2VsZWN0aW9uLmdldFN0YXJ0KCkuZk9mZnNldDsKKyAgICAgICAgaW50IGxpbWl0ID0gZlNlbGVjdGlvbi5nZXRFbmQoKS5mT2Zmc2V0OworICAgICAgICBUZXh0T2Zmc2V0IG5ld09mZnNldCA9IG5ldyBUZXh0T2Zmc2V0KHN0YXJ0ICsgMSk7CisgICAgICAgIGRvUmVwbGFjZVRleHQoc3RhcnQsIGxpbWl0LCBjaCwgY2hhclN0eWxlLCBuZXdPZmZzZXQsIG5ld09mZnNldCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGRvUmVwbGFjZVRleHQoaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBjaGFyU3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBuZXdTZWxTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IG5ld1NlbEVuZCkgeworCisgICAgICAgIGZUZXh0LnJlc2V0RGFtYWdlZFJhbmdlKCk7CisKKyAgICAgICAgUmVjdGFuZ2xlIG9sZFNlbFJlY3QgPSBwcmVwYXJlRm9yVGV4dEVkaXQoKTsKKworICAgICAgICBmVGV4dC5yZXBsYWNlKHN0YXJ0LCBsaW1pdCwgY2gsIGNoYXJTdHlsZSk7CisKKyAgICAgICAgZlNlbGVjdGlvbi5zZXRTZWxlY3Rpb25SYW5nZShuZXdTZWxTdGFydCwgbmV3U2VsRW5kLCBuZXdTZWxTdGFydCk7CisgICAgICAgIHJlZm9ybWF0QW5kRHJhd1RleHQoZlNlbGVjdGlvbi5nZXRTdGFydCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZTZWxlY3Rpb24uZ2V0RW5kKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkU2VsUmVjdCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGRvU3R5bGVDaGFuZ2UoQmVoYXZpb3IuRXZlbnRUeXBlIGV2ZW50LCBPYmplY3Qgd2hhdCkgeworCisgICAgICAgIFRleHRSYW5nZSBzZWxSYW5nZSA9IGZTZWxlY3Rpb24uZ2V0U2VsZWN0aW9uUmFuZ2UoKTsKKyAgICAgICAgYm9vbGVhbiBjaGFyYWN0ZXIgPSAoZXZlbnQgPT0gQmVoYXZpb3IuQ0hBUkFDVEVSX1NUWUxFX01PRCk7CisKKyAgICAgICAgaWYgKHNlbFJhbmdlLnN0YXJ0ICE9IHNlbFJhbmdlLmxpbWl0IHx8ICFjaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgIGRvVW5kb2FibGVTdHlsZUNoYW5nZSh3aGF0LCBjaGFyYWN0ZXIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgVHlwaW5nSW50ZXJhY3RvciBpbnRlcmFjdG9yID0KKyAgICAgICAgICAgICAgICBuZXcgVHlwaW5nSW50ZXJhY3RvcihmVGV4dENvbXBvbmVudCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlNlbGVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmU2F2ZWRUeXBpbmdTdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZDb21tYW5kTG9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZMaXN0ZW5lcik7CisKKyAgICAgICAgICAgIGludGVyYWN0b3IuYWRkVG9Pd25lcihmVGV4dENvbXBvbmVudCk7CisgICAgICAgICAgICBpbnRlcmFjdG9yLnRleHRDb250cm9sRXZlbnRPY2N1cnJlZChldmVudCwgd2hhdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPbmx5IHRleHQgY29tbWFuZHMgc2hvdWxkIGNhbGwgdGhpcyBtZXRob2QhCisgICAgICovCisgICAgdm9pZCBkb01vZGlmeVN0eWxlcyhpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICBTdHlsZU1vZGlmaWVyIG1vZGlmaWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBjaGFyYWN0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IG5ld1NlbFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBuZXdTZWxFbmQpIHsKKworICAgICAgICBmVGV4dC5yZXNldERhbWFnZWRSYW5nZSgpOworCisgICAgICAgIFJlY3RhbmdsZSBvbGRTZWxSZWN0ID0gcHJlcGFyZUZvclRleHRFZGl0KCk7CisKKyAgICAgICAgaWYgKGNoYXJhY3RlcikgeworICAgICAgICAgICAgZlRleHQubW9kaWZ5Q2hhcmFjdGVyU3R5bGVzKHN0YXJ0LCBsaW1pdCwgbW9kaWZpZXIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZlRleHQubW9kaWZ5UGFyYWdyYXBoU3R5bGVzKHN0YXJ0LCBsaW1pdCwgbW9kaWZpZXIpOworICAgICAgICB9CisKKyAgICAgICAgZlNlbGVjdGlvbi5zZXRTZWxlY3Rpb25SYW5nZShuZXdTZWxTdGFydCwgbmV3U2VsRW5kLCBuZXdTZWxTdGFydCk7CisgICAgICAgIHJlZm9ybWF0QW5kRHJhd1RleHQobmV3U2VsU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2VsRW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZFNlbFJlY3QpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBkb1VuZG9hYmxlU3R5bGVDaGFuZ2UoT2JqZWN0IHdoYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGNoYXJhY3RlcikgeworCisgICAgICAgIFRleHRPZmZzZXQgc2VsU3RhcnQgPSBmU2VsZWN0aW9uLmdldFN0YXJ0KCk7CisgICAgICAgIFRleHRPZmZzZXQgc2VsRW5kID0gZlNlbGVjdGlvbi5nZXRFbmQoKTsKKworICAgICAgICBNVGV4dCBvbGRUZXh0ID0gZlRleHQuZXh0cmFjdFdyaXRhYmxlKHNlbFN0YXJ0LmZPZmZzZXQsIHNlbEVuZC5mT2Zmc2V0KTsKKyAgICAgICAgU3R5bGVDaGFuZ2VDb21tYW5kIGNvbW1hbmQgPSBuZXcgU3R5bGVDaGFuZ2VDb21tYW5kKAorICAgICAgICAgICAgICAgIHRoaXMsIG9sZFRleHQsIHNlbFN0YXJ0LCBzZWxFbmQsIChTdHlsZU1vZGlmaWVyKSB3aGF0LCBjaGFyYWN0ZXIpOworCisgICAgICAgIGZDb21tYW5kTG9nLmFkZEFuZERvKGNvbW1hbmQpOworCisgICAgICAgIGZMaXN0ZW5lci50ZXh0U3RhdGVDaGFuZ2VkKFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9TVFlMRVNfQ0hBTkdFRCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGRvVW5kb2FibGVUZXh0Q2hhbmdlKGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQ29uc3RUZXh0IG5ld1RleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgbmV3U2VsU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgbmV3U2VsRW5kKSB7CisKKyAgICAgICAgVGV4dENoYW5nZUNvbW1hbmQgY29tbWFuZCA9IG5ldyBUZXh0Q2hhbmdlQ29tbWFuZCh0aGlzLCBmVGV4dC5leHRyYWN0V3JpdGFibGUoc3RhcnQsIGxpbWl0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3VGV4dCwgc3RhcnQsIGZTZWxlY3Rpb24uZ2V0U3RhcnQoKSwgZlNlbGVjdGlvbi5nZXRFbmQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U2VsU3RhcnQsIG5ld1NlbEVuZCk7CisKKyAgICAgICAgZkNvbW1hbmRMb2cuYWRkQW5kRG8oY29tbWFuZCk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gY2FuVW5kbygpIHsKKworICAgICAgICBib29sZWFuIGNhblVuZG8gPSBmYWxzZTsKKworICAgICAgICBpZiAoZlR5cGluZ0ludGVyYWN0b3IgIT0gbnVsbCkgeworICAgICAgICAgICAgY2FuVW5kbyA9IGZUeXBpbmdJbnRlcmFjdG9yLmhhc1BlbmRpbmdDb21tYW5kKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWNhblVuZG8pIHsKKyAgICAgICAgICAgIGNhblVuZG8gPSBmQ29tbWFuZExvZy5jYW5VbmRvKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY2FuVW5kbzsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBjYW5SZWRvKCkgeworCisgICAgICAgIHJldHVybiBmQ29tbWFuZExvZy5jYW5SZWRvKCk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNNb2RpZmllZCgpIHsKKworICAgICAgICBpZiAoZlR5cGluZ0ludGVyYWN0b3IgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKGZUeXBpbmdJbnRlcmFjdG9yLmhhc1BlbmRpbmdDb21tYW5kKCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZkNvbW1hbmRMb2cuaXNNb2RpZmllZCgpOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0Q29tbWFuZExvZ1NpemUoKSB7CisKKyAgICAgICAgcmV0dXJuIGZDb21tYW5kTG9nLmdldExvZ1NpemUoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgQXR0cmlidXRlTWFwIGdldEluc2VydGlvblBvaW50U3R5bGUoKSB7CisKKyAgICAgICAgaWYgKGZUeXBpbmdJbnRlcmFjdG9yICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmVHlwaW5nSW50ZXJhY3Rvci5nZXRUeXBpbmdTdHlsZSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZTYXZlZFR5cGluZ1N0eWxlICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmU2F2ZWRUeXBpbmdTdHlsZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgVGV4dFJhbmdlIHJhbmdlID0gZlNlbGVjdGlvbi5nZXRTZWxlY3Rpb25SYW5nZSgpOworICAgICAgICByZXR1cm4gdHlwaW5nU3R5bGVBdChmVGV4dCwgcmFuZ2Uuc3RhcnQsIHJhbmdlLmxpbWl0KTsKKyAgICB9CisgICAgCisgICAgcHVibGljIGJvb2xlYW4ga2V5UHJlc3NlZChLZXlFdmVudCBlKSB7CisKKyAgICAgICAgYm9vbGVhbiBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgaWYgKFR5cGluZ0ludGVyYWN0b3IuaGFuZGxlZEJ5VHlwaW5nSW50ZXJhY3RvcihlKSkgeworICAgICAgICAgICAgVHlwaW5nSW50ZXJhY3RvciBpbnRlcmFjdG9yID0gbmV3IFR5cGluZ0ludGVyYWN0b3IoZlRleHRDb21wb25lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmU2VsZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlNhdmVkVHlwaW5nU3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkNvbW1hbmRMb2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmTGlzdGVuZXIpOworCisgICAgICAgICAgICBpbnRlcmFjdG9yLmFkZFRvT3duZXIoZlRleHRDb21wb25lbnQpOworICAgICAgICAgICAgaW50ZXJhY3Rvci5rZXlQcmVzc2VkKGUpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaGFuZGxlZCA9IHN1cGVyLmtleVByZXNzZWQoZSk7CisgICAgICAgICAgICBjaGVja1NhdmVkVHlwaW5nU3R5bGUoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGhhbmRsZWQ7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4ga2V5VHlwZWQoS2V5RXZlbnQgZSkgeworICAgICAgICAKKyAgICAgICAgYm9vbGVhbiBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgaWYgKFR5cGluZ0ludGVyYWN0b3IuaGFuZGxlZEJ5VHlwaW5nSW50ZXJhY3RvcihlKSkgeworICAgICAgICAgICAgVHlwaW5nSW50ZXJhY3RvciBpbnRlcmFjdG9yID0gbmV3IFR5cGluZ0ludGVyYWN0b3IoZlRleHRDb21wb25lbnQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlNlbGVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZTYXZlZFR5cGluZ1N0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZDb21tYW5kTG9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkxpc3RlbmVyKTsKKworICAgICAgICAgICAgaW50ZXJhY3Rvci5hZGRUb093bmVyKGZUZXh0Q29tcG9uZW50KTsKKyAgICAgICAgICAgIGludGVyYWN0b3Iua2V5VHlwZWQoZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBoYW5kbGVkID0gc3VwZXIua2V5VHlwZWQoZSk7CisgICAgICAgICAgICBjaGVja1NhdmVkVHlwaW5nU3R5bGUoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGhhbmRsZWQ7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gbW91c2VSZWxlYXNlZChNb3VzZUV2ZW50IGUpIHsKKyAgICAgICAgCisgICAgICAgIGJvb2xlYW4gcmVzdWx0ID0gc3VwZXIubW91c2VSZWxlYXNlZChlKTsKKyAgICAgICAgY2hlY2tTYXZlZFR5cGluZ1N0eWxlKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCByZWZvcm1hdEFuZERyYXdUZXh0KFRleHRPZmZzZXQgc2VsU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBzZWxMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWN0YW5nbGUgb2xkU2VsUmVjdCkKKyAgICB7CisgICAgICAgIGlmICghZlNlbGVjdGlvbi5lbmFibGVkKCkpIHsKKyAgICAgICAgICAgIHNlbFN0YXJ0ID0gc2VsTGltaXQgPSBudWxsOworICAgICAgICB9CisKKyAgICAgICAgaW50IHJlZm9ybWF0U3RhcnQgPSBmVGV4dC5kYW1hZ2VkUmFuZ2VTdGFydCgpOworICAgICAgICBpbnQgcmVmb3JtYXRMZW5ndGggPSBmVGV4dC5kYW1hZ2VkUmFuZ2VMaW1pdCgpIC0gcmVmb3JtYXRTdGFydDsKKworICAgICAgICBpZiAocmVmb3JtYXRTdGFydCAhPSBJbnRlZ2VyLk1BWF9WQUxVRSkgeworICAgICAgICAgICAgZlRleHRDb21wb25lbnQucmVmb3JtYXRBbmREcmF3VGV4dChyZWZvcm1hdFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZvcm1hdExlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbExpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRTZWxSZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmU2VsZWN0aW9uLmdldEhpZ2hsaWdodENvbG9yKCkpOworICAgICAgICB9CisKKyAgICAgICAgZlNlbGVjdGlvbi5zY3JvbGxUb1Nob3dTZWxlY3Rpb24oKTsKKyAgICAgICAgCisgICAgICAgIC8vIHNvbWV0aW1lcyB0aGlzIHNob3VsZCBzZW5kIFNFTEVDVElPTl9TVFlMRVNfQ0hBTkdFRAorICAgICAgICBmTGlzdGVuZXIudGV4dFN0YXRlQ2hhbmdlZChUZXh0UGFuZWxFdmVudC5URVhUX0NIQU5HRUQpOworCisgICAgICAgIGZTZWxlY3Rpb24ucmVzdGFydENhcmV0QmxpbmtpbmcodHJ1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogT25seSBUeXBpbmdJbnRlcmFjdG9yIHNob3VsZCBjYWxsIHRoaXMuCisgICAgICovCisgICAgdm9pZCBzZXRUeXBpbmdJbnRlcmFjdG9yKFR5cGluZ0ludGVyYWN0b3IgaW50ZXJhY3RvcikgeworICAgICAgICBmVHlwaW5nSW50ZXJhY3RvciA9IGludGVyYWN0b3I7CisgICAgfQorCisgICAgLyoqCisgICAgICogT25seSBUeXBpbmdJbnRlcmFjdG9yIHNob3VsZCBjYWxsIHRoaXMuCisgICAgICovCisgICAgdm9pZCBzZXRTYXZlZFR5cGluZ1N0eWxlKEF0dHJpYnV0ZU1hcCBzdHlsZSwgaW50IGluc1B0KSB7CisgICAgCisgICAgICAgIGZTYXZlZFR5cGluZ1N0eWxlID0gc3R5bGU7CisgICAgICAgIGZTYXZlZEluc1B0ID0gaW5zUHQ7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBjaGVja1NhdmVkVHlwaW5nU3R5bGUoKSB7CisgICAgCisgICAgICAgIGlmIChmU2F2ZWRUeXBpbmdTdHlsZSAhPSBudWxsKSB7CisgICAgICAgICAgICBpbnQgc2VsU3RhcnQgPSBmU2VsZWN0aW9uLmdldFN0YXJ0KCkuZk9mZnNldDsKKyAgICAgICAgICAgIGludCBzZWxMaW1pdCA9IGZTZWxlY3Rpb24uZ2V0RW5kKCkuZk9mZnNldDsKKyAgICAgICAgICAgIGlmIChzZWxTdGFydCAhPSBmU2F2ZWRJbnNQdCB8fCBzZWxTdGFydCAhPSBzZWxMaW1pdCkgeworICAgICAgICAgICAgICAgIGZTYXZlZFR5cGluZ1N0eWxlID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSAgICAgICAgICAgIAorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHN0eWxlIGFwcHJvcHJpYXRlIGZvciB0eXBpbmcgb24gdGhlIGdpdmVuIHNlbGVjdGlvbgorICAgICAqIHJhbmdlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgQXR0cmlidXRlTWFwIHR5cGluZ1N0eWxlQXQoTUNvbnN0VGV4dCB0ZXh0LCBpbnQgc3RhcnQsIGludCBsaW1pdCkgeworCisgICAgICAgIGlmIChzdGFydCA8IGxpbWl0KSB7CisgICAgICAgICAgICByZXR1cm4gdGV4dC5jaGFyYWN0ZXJTdHlsZUF0KHN0YXJ0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzdGFydCA+IDApIHsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0LmNoYXJhY3RlclN0eWxlQXQoc3RhcnQgLSAxKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0LmNoYXJhY3RlclN0eWxlQXQoMCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGV4dFBhbmVsLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGV4dFBhbmVsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTc5YjI4OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0UGFuZWwuamF2YQpAQCAtMCwwICsxLDU0MyBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogVGV4dFBhbmVsLmphdmEsdiAkICRSZXZpc2lvbjogMS4yICQgJERhdGU6IDIwMDAvMDQvMjIgMTc6MTA6MTAgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBqYXZhLmF3dC5Cb3JkZXJMYXlvdXQ7CitpbXBvcnQgamF2YS5hd3QuQ29tcG9uZW50OworaW1wb3J0IGphdmEuYXd0LkdyYXBoaWNzOworaW1wb3J0IGphdmEuYXd0LlBhbmVsOworaW1wb3J0IGphdmEuYXd0LlNjcm9sbGJhcjsKKworaW1wb3J0IGphdmEuYXd0LmRhdGF0cmFuc2Zlci5DbGlwYm9hcmQ7CisKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVNb2RpZmllcjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVkVGV4dDsKKworLyoqCisgKiBUZXh0UGFuZWwgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgTVRleHRQYW5lbCBpbiBhbiBBV1QgUGFuZWwuCisgKiBAc2VlIE1UZXh0UGFuZWwKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIFRleHRQYW5lbCBleHRlbmRzIFBhbmVsIGltcGxlbWVudHMgTVRleHRQYW5lbCB7CisKKyAgICBwcml2YXRlIEFUZXh0UGFuZWxJbXBsIGZJbXBsOworICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiBhIFRleHRQYW5lbFNldHRpbmdzIGluc3RhbmNlIHdpdGggYWxsIHNldHRpbmdzIHNldAorICAgICAqIHRvIHRoZSBkZWZhdWx0IHZhbHVlcy4gIENsaWVudHMgY2FuIG1vZGlmeSB0aGlzIG9iamVjdDsKKyAgICAgKiBtb2RpZmljYXRpb25zIHdpbGwgbm90IGFmZmVjdCB0aGUgZGVmYXVsdCB2YWx1ZXMuCisgICAgICogQHJldHVybiBhIFRleHRQYW5lbFNldHRpbmdzIGluc3RhbmNlIHNldCB0byBkZWZhdWx0IHZhbHVlcworICAgICAqIEBzZWUgVGV4dFBhbmVsU2V0dGluZ3MKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFRleHRQYW5lbFNldHRpbmdzIGdldERlZmF1bHRTZXR0aW5ncygpIHsKKworICAgICAgICByZXR1cm4gQVRleHRQYW5lbEltcGwuZ2V0RGVmYXVsdFNldHRpbmdzKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgbmV3IFRleHRQYW5lbCB3aXRoIHRoZSBkZWZhdWx0IHNldHRpbmdzLgorICAgICAqIEBwYXJhbSBpbml0aWFsVGV4dCB0aGUgdGV4dCBkb2N1bWVudC4gIElmIG51bGwgZG9jdW1lbnQgdGV4dCBpcyBlbXB0eS4KKyAgICAgKiBAcGFyYW0gY2xpcGJvYXJkIHRoZSBjbGlwYm9hcmQgdG8gdXNlIGZvciBjdXQsIGNvcHksIGFuZCBwYXN0ZQorICAgICAqICBvcGVyYXRpb25zLiAgSWYgbnVsbCB0aGlzIHBhbmVsIHdpbGwgdXNlIGEgcHJpdmF0ZSBjbGlwYm9hcmQuCisgICAgICovCisgICAgcHVibGljIFRleHRQYW5lbChNQ29uc3RUZXh0IGluaXRpYWxUZXh0LAorICAgICAgICAgICAgICAgICAgICAgQ2xpcGJvYXJkIGNsaXBib2FyZCkgeworCisgICAgICAgIHRoaXMoQVRleHRQYW5lbEltcGwuZmdEZWZhdWx0U2V0dGluZ3MsIGluaXRpYWxUZXh0LCBjbGlwYm9hcmQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIG5ldyBUZXh0UGFuZWwuCisgICAgICogQHBhcmFtIHNldHRpbmdzIHRoZSBzZXR0aW5ncyBmb3IgdGhpcyBUZXh0UGFuZWwKKyAgICAgKiBAcGFyYW0gaW5pdGlhbFRleHQgdGhlIHRleHQgZG9jdW1lbnQuICBJZiBudWxsIGRvY3VtZW50IHRleHQgaXMgZW1wdHkuCisgICAgICogQHBhcmFtIGNsaXBib2FyZCB0aGUgY2xpcGJvYXJkIHRvIHVzZSBmb3IgY3V0LCBjb3B5LCBhbmQgcGFzdGUKKyAgICAgKiAgb3BlcmF0aW9ucy4gIElmIG51bGwgdGhpcyBwYW5lbCB3aWxsIHVzZSBhIHByaXZhdGUgY2xpcGJvYXJkLgorICAgICAqIEBzZWUgVGV4dFBhbmVsU2V0dGluZ3MKKyAgICAgKi8KKyAgICBwdWJsaWMgVGV4dFBhbmVsKFRleHRQYW5lbFNldHRpbmdzIHNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAgTUNvbnN0VGV4dCBpbml0aWFsVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgIENsaXBib2FyZCBjbGlwYm9hcmQpIHsKKworICAgICAgICBTY3JvbGxiYXIgaG9yelNiID0gbnVsbDsKKyAgICAgICAgU2Nyb2xsYmFyIHZlcnRTYiA9IG51bGw7CisgICAgICAgIAorICAgICAgICBpZiAoc2V0dGluZ3MuZ2V0U2Nyb2xsYWJsZSgpKSB7CisKKyAgICAgICAgICAgIHNldExheW91dChuZXcgU2Nyb2xsQmFyTGF5b3V0KCkpOworCisgICAgICAgICAgICBib29sZWFuIHNjcm9sbEJhcnNWaXNpYmxlID0gc2V0dGluZ3MuZ2V0U2Nyb2xsQmFyc1Zpc2libGUoKTsKKworICAgICAgICAgICAgaWYgKHNjcm9sbEJhcnNWaXNpYmxlKSB7CisgICAgICAgICAgICAgICAgaG9yelNiID0gbmV3IFNjcm9sbGJhcihTY3JvbGxiYXIuSE9SSVpPTlRBTCk7CisgICAgICAgICAgICAgICAgdmVydFNiID0gbmV3IFNjcm9sbGJhcihTY3JvbGxiYXIuVkVSVElDQUwpOworICAgICAgICAgICAgICAgIGFkZCgiU291dGgiLCBob3J6U2IpOworICAgICAgICAgICAgICAgIGFkZCgiRWFzdCIsIHZlcnRTYik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBzZXRMYXlvdXQobmV3IEJvcmRlckxheW91dCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGZJbXBsID0gbmV3IEFUZXh0UGFuZWxJbXBsKG5ldyBSdW5TdHJhdGVneSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXBib2FyZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9yelNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJ0U2IpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgZmluYWwgRmFrZUNvbXBvbmVudCB0ZXh0Q29tcG9uZW50ID0gZkltcGwuZ2V0VGV4dENvbXBvbmVudCgpOworICAgICAgICAKKyAgICAgICAgQ29tcG9uZW50IHRleHRIb3N0ID0gbmV3IENvbXBvbmVudCgpIHsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0ZXh0Q29tcG9uZW50LnNldEhvc3QodGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBhZGROb3RpZnkoKSB7CisgICAgICAgICAgICAgICAgc3VwZXIuYWRkTm90aWZ5KCk7CisgICAgICAgICAgICAgICAgdGV4dENvbXBvbmVudC5hZGROb3RpZnkoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHBhaW50KEdyYXBoaWNzIGcpIHsKKyAgICAgICAgICAgICAgICB0ZXh0Q29tcG9uZW50LnBhaW50KGcpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgYWRkKCJDZW50ZXIiLCB0ZXh0SG9zdCk7CisKKyAgICAgICAgdGV4dEhvc3QucmVxdWVzdEZvY3VzKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWRkIHRoZSBnaXZlbiBUZXh0UGFuZWxMaXN0ZW5lciB0byB0aGUgbGlzdGVuZXJzIHdoaWNoIHdpbGwKKyAgICAgKiByZWNlaXZlIHVwZGF0ZSBub3RpZmljYXRpb25zIGZyb20gdGhpcyBUZXh0UGFuZWwuCisgICAgICogQHBhcmFtIGxpc3RlbmVyIHRoZSBsaXN0ZW5lciB0byBhZGQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhZGRMaXN0ZW5lcihUZXh0UGFuZWxMaXN0ZW5lciBsaXN0ZW5lcikgeworCisgICAgICAgIGZJbXBsLmFkZExpc3RlbmVyKGxpc3RlbmVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmUgdGhlIGdpdmVuIFRleHRQYW5lbExpc3RlbmVyIGZyb20gdGhlIGxpc3RlbmVycyB3aGljaCB3aWxsCisgICAgICogcmVjZWl2ZSB1cGRhdGUgbm90aWZpY2F0aW9ucyBmcm9tIHRoaXMgVGV4dFBhbmVsLgorICAgICAqIEBwYXJhbSBsaXN0ZW5lciB0aGUgbGlzdGVuZXIgdG8gcmVtb3ZlCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVtb3ZlTGlzdGVuZXIoVGV4dFBhbmVsTGlzdGVuZXIgbGlzdGVuZXIpIHsKKworICAgICAgICBmSW1wbC5yZW1vdmVMaXN0ZW5lcihsaXN0ZW5lcik7CisgICAgfQorCisvLz09PT09PT09PT09PQorLy8gVGV4dCBBY2Nlc3MKKy8vPT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGRvY3VtZW50IHRvIDx0dD5uZXdUZXh0PC90dD4uICBUaGlzIG9wZXJhdGlvbgorICAgICAqIG1vZGlmaWVzIHRoZSB0ZXh0IGluIHRoZSBUZXh0UGFuZWwuICBJdCBkb2VzIG5vdCBtb2RpZnkgb3IgYWRvcHQKKyAgICAgKiA8dHQ+bmV3VGV4dDwvdHQ+LiAgVGhpcyBtZXRob2Qgc2V0cyB0aGUgc2VsZWN0aW9uIGFuIGluc2VydGlvbiBwb2ludCBhdAorICAgICAqIHRoZSBlbmQgb2YgdGhlIHRleHQuCisgICAgICogQHBhcmFtIG5ld1RleHQgdGhlIHRleHQgd2hpY2ggd2lsbCByZXBsYWNlIHRoZSBjdXJyZW50IHRleHQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0VGV4dChNQ29uc3RUZXh0IG5ld1RleHQpIHsKKworICAgICAgICBmSW1wbC5zZXRUZXh0KG5ld1RleHQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFwcGVuZCB0aGUgZ2l2ZW4gdGV4dCB0byB0aGUgZW5kIG9mIHRoZSBkb2N1bWVudC4gIEVxdWl2YWxlbnQgdG8KKyAgICAgKiA8dHQ+aW5zZXJ0KG5ld1RleHQsIGdldFRleHRMZW5ndGgoKSk8L3R0Pi4KKyAgICAgKiBAcGFyYW0gbmV3VGV4dCB0aGUgdGV4dCB0byBhcHBlbmQgdG8gdGhlIGRvY3VtZW50CisgICAgICovCisgICAgcHVibGljIHZvaWQgYXBwZW5kKE1Db25zdFRleHQgbmV3VGV4dCkgeworCisgICAgICAgIGZJbXBsLmFwcGVuZChuZXdUZXh0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbnNlcnQgdGhlIGdpdmVuIHRleHQgaW50byB0aGUgZG9jdW1lbnQgYXQgdGhlIGdpdmVuIHBvc2l0aW9uLgorICAgICAqIEVxdWl2YWxlbnQgdG8KKyAgICAgKiA8dHQ+cmVwbGFjZVJhbmdlKG5ld1RleHQsIHBvc2l0aW9uLCBwb3NpdGlvbik8L3R0Pi4KKyAgICAgKiBAcGFyYW0gbmV3VGV4dCB0aGUgdGV4dCB0byBpbnNlcnQgaW50byB0aGUgZG9jdW1lbnQuCisgICAgICogQHBhcmFtIHBvc2l0aW9uIHRoZSBwb3NpdGlvbiBpbiB0aGUgZG9jdW1lbnQgd2hlcmUgdGhlCisgICAgICogICAgIHRleHQgd2lsbCBiZSBpbnNlcnRlZAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGluc2VydChNQ29uc3RUZXh0IG5ld1RleHQsIGludCBwb3NpdGlvbikgeworCisgICAgICAgIGZJbXBsLmluc2VydChuZXdUZXh0LCBwb3NpdGlvbik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVwbGFjZSB0aGUgZ2l2ZW4gcmFuZ2Ugd2l0aCA8dHQ+bmV3VGV4dDwvdHQ+LiAgQWZ0ZXIgdGhpcworICAgICAqIG9wZXJhdGlvbiB0aGUgc2VsZWN0aW9uIHJhbmdlIGlzIGFuIGluc2VydGlvbiBwb2ludCBhdCB0aGUKKyAgICAgKiBlbmQgb2YgdGhlIG5ldyB0ZXh0LgorICAgICAqIEBwYXJhbSBuZXdUZXh0IHRoZSB0ZXh0IHdpdGggd2hpY2ggdG8gcmVwbGFjZSB0aGUgcmFuZ2UKKyAgICAgKiBAcGFyYW0gc3RhcnQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcmFuZ2UgdG8gcmVwbGFjZQorICAgICAqIEBwYXJhbSBlbmQgdGhlIGVuZCBvZiB0aGUgcmFuZ2UgdG8gcmVwbGFjZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlcGxhY2VSYW5nZShNQ29uc3RUZXh0IG5ld1RleHQsIGludCBzdGFydCwgaW50IGVuZCkgeworCisgICAgICAgIGZJbXBsLnJlcGxhY2VSYW5nZShuZXdUZXh0LCBzdGFydCwgZW5kKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgdGV4dCBkb2N1bWVudCBpbiB0aGUgVGV4dFBhbmVsLgorICAgICAqIEByZXR1cm4gdGhlIGxlbmd0aCBvZiB0aGUgdGV4dCBkb2N1bWVudCBpbiB0aGUgVGV4dFBhbmVsCisgICAgICovCisgICAgcHVibGljIGludCBnZXRUZXh0TGVuZ3RoKCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5nZXRUZXh0TGVuZ3RoKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSB0ZXh0IGRvY3VtZW50IGluIHRoZSBUZXh0UGFuZWwuCisgICAgICogQHJldHVybiB0aGUgdGV4dCBkb2N1bWVudCBpbiB0aGUgVGV4dFBhbmVsLgorICAgICAqLworICAgIHB1YmxpYyBNQ29uc3RUZXh0IGdldFRleHQoKSB7CisKKyAgICAgICAgcmV0dXJuIGZJbXBsLmdldFRleHQoKTsKKyAgICB9CisKKy8vPT09PT09PT09PT09CisvLyBTZWxlY3Rpb24gQWNjZXNzCisvLz09PT09PT09PT09PQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBvZmZzZXQgb2YgdGhlIHN0YXJ0IG9mIHRoZSBzZWxlY3Rpb24uCisgICAgICovCisgICAgcHVibGljIGludCBnZXRTZWxlY3Rpb25TdGFydCgpIHsKKworICAgICAgICByZXR1cm4gZkltcGwuZ2V0U2VsZWN0aW9uU3RhcnQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG9mZnNldCBvZiB0aGUgZW5kIG9mIHRoZSBzZWxlY3Rpb24uCisgICAgICovCisgICAgcHVibGljIGludCBnZXRTZWxlY3Rpb25FbmQoKSB7CisKKyAgICAgICAgcmV0dXJuIGZJbXBsLmdldFNlbGVjdGlvbkVuZCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZWxlY3Rpb24gcmFuZ2UuICBUaGlzIGlzCisgICAgICogZXF1aXZhbGVudCB0byA8dHQ+c2VsZWN0KHNlbGVjdGlvblN0YXJ0LCBnZXRTZWxlY3Rpb25FbmQoKSk8L3R0Pi4KKyAgICAgKiBAcGFyYW0gc2VsZWN0aW9uU3RhcnQgdGhlIHN0YXJ0IG9mIHRoZSBuZXcgc2VsZWN0aW9uIHJhbmdlCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0U2VsZWN0aW9uU3RhcnQoaW50IHNlbGVjdGlvblN0YXJ0KSB7CisKKyAgICAgICAgZkltcGwuc2V0U2VsZWN0aW9uU3RhcnQoc2VsZWN0aW9uU3RhcnQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgZW5kIG9mIHRoZSBzZWxlY3Rpb24gcmFuZ2UuICBUaGlzIGlzCisgICAgICogZXF1aXZhbGVudCB0byA8dHQ+c2VsZWN0KGdldFNlbGVjdGlvblN0YXJ0KCksIHNlbGVjdGlvbkVuZCk8L3R0Pi4KKyAgICAgKiBAcGFyYW0gc2VsZWN0aW9uU3RhcnQgdGhlIHN0YXJ0IG9mIHRoZSBuZXcgc2VsZWN0aW9uIHJhbmdlCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0U2VsZWN0aW9uRW5kKGludCBzZWxlY3Rpb25FbmQpIHsKKworICAgICAgICBmSW1wbC5zZXRTZWxlY3Rpb25FbmQoc2VsZWN0aW9uRW5kKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIHNlbGVjdGlvbiByYW5nZSB0byBhbiBpbnNlcnRpb24gcG9pbnQgYXQgdGhlIGdpdmVuCisgICAgICogb2Zmc2V0LiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvCisgICAgICogPHR0PnNlbGVjdChwb3NpdGlvbiwgcG9zaXRpb24pPC90dD4uCisgICAgICogQHBhcmFtIHBvc2l0aW9uIHRoZSBvZmZzZXQgb2YgdGhlIG5ldyBpbnNlcnRpb24gcG9pbnQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRDYXJldFBvc2l0aW9uKGludCBwb3NpdGlvbikgeworCisgICAgICAgIGZJbXBsLnNldENhcmV0UG9zaXRpb24ocG9zaXRpb24pOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgc2VsZWN0aW9uIHJhbmdlIHRvIHRoZSBnaXZlbiByYW5nZS4gIFRoZSByYW5nZSBzdGFydAorICAgICAqIGlzIHBpbm5lZCBiZXR3ZWVuIDAgYW5kIHRoZSB0ZXh0IGxlbmd0aDsgIHRoZSByYW5nZSBlbmQgaXMgcGlubmVkCisgICAgICogYmV0d2VlbiB0aGUgcmFuZ2Ugc3RhcnQgYW5kIHRoZSBlbmQgb2YgdGhlIHRleHQuICBUaGVzZSBzZW1hbnRpY3MKKyAgICAgKiBhcmUgaWRlbnRpY2FsIHRvIHRob3NlIG9mIDx0dD5qYXZhLmF3dC5UZXh0Q29tcG9uZW50PC90dD4uCisgICAgICogVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZiB0aGUgdGV4dCBpcyBub3Qgc2VsZWN0YWJsZS4KKyAgICAgKiBAcGFyYW0gc2VsZWN0aW9uU3RhcnQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VsZWN0aW9uIHJhbmdlCisgICAgICogQHBhcmFtIHNlbGVjdGlvbkVuZCB0aGUgZW5kIG9mIHRoZSBzZWxlY3Rpb24gcmFuZ2UKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZWxlY3QoaW50IHNlbGVjdGlvblN0YXJ0LCBpbnQgc2VsZWN0aW9uRW5kKSB7CisKKyAgICAgICAgZkltcGwuc2VsZWN0KHNlbGVjdGlvblN0YXJ0LCBzZWxlY3Rpb25FbmQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNlbGVjdCBhbGwgb2YgdGhlIHRleHQgaW4gdGhlIGRvY3VtZW50LiAgVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZgorICAgICAqIHRoZSB0ZXh0IGlzIG5vdCBzZWxlY3RhYmxlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNlbGVjdEFsbCgpIHsKKworICAgICAgICBmSW1wbC5zZWxlY3RBbGwoKTsKKyAgICB9CisKKworLy89PT09PT09PT09PT0KKy8vIEZvcm1hdCBXaWR0aAorLy89PT09PT09PT09PT0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgdG90YWwgZm9ybWF0IHdpZHRoLCBpbiBwaXhlbHMuICBUaGUgZm9ybWF0IHdpZHRoIGlzIHRoZQorICAgICAqIHdpZHRoIHRvIHdoaWNoIHRleHQgaXMgd3JhcHBlZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBmb3JtYXQgd2lkdGgKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEZvcm1hdFdpZHRoKCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5nZXRGb3JtYXRXaWR0aCgpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgcGFyYWdyYXBoIGF0IHRoZSBnaXZlbiBvZmZzZXQgaXMgbGVmdC10by1yaWdodC4KKyAgICAgKiBAcGFyYW0gb2Zmc2V0IGFuIG9mZnNldCBpbiB0aGUgdGV4dAorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgcGFyYWdyYXBoIGF0IHRoZSBnaXZlbiBvZmZzZXQgaXMgbGVmdC10by1yaWdodAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIHBhcmFncmFwaElzTGVmdFRvUmlnaHQoaW50IG9mZnNldCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZJbXBsLnBhcmFncmFwaElzTGVmdFRvUmlnaHQob2Zmc2V0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBhIGNoYW5nZSB3aGljaCBjYW4gYmUgdW5kb25lLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBhIGNoYW5nZSB3aGljaCBjYW4gYmUgdW5kb25lLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGNhblVuZG8oKSB7CisKKyAgICAgICAgcmV0dXJuIGZJbXBsLmNhblVuZG8oKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBhIGNoYW5nZSB3aGljaCBjYW4gYmUgcmVkb25lLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBhIGNoYW5nZSB3aGljaCBjYW4gYmUgcmVkb25lLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGNhblJlZG8oKSB7CisKKyAgICAgICAgcmV0dXJuIGZJbXBsLmNhblJlZG8oKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgY2xpcGJvYXJkIGNvbnRhaW5zIGNvbnRlbnRzIHdoaWNoIGNvdWxkIGJlCisgICAgICogdHJhbnNmZXJlZCBpbnRvIHRoZSB0ZXh0LgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY2xpcGJvYXJkIGhhcyB0ZXh0IGNvbnRlbnQuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gY2xpcGJvYXJkTm90RW1wdHkoKSB7CisKKyAgICAgICAgcmV0dXJuIGZJbXBsLmNsaXBib2FyZE5vdEVtcHR5KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGFuIEF0dHJpYnV0ZU1hcCBvZiBrZXlzIHdpdGggZGVmYXVsdCB2YWx1ZXMuICBUaGUgZGVmYXVsdAorICAgICAqIHZhbHVlcyBhcmUgdXNlZCB3aGVuIGRpc3BsYXlpbmcgdGV4dCBmb3IgdmFsdWVzIHdoaWNoIGFyZSBub3QKKyAgICAgKiBzcGVjaWZpZWQgaW4gdGhlIHRleHQuCisgICAgICogQHJldHVybiBhbiBBdHRyaWJ1dGVNYXAgb2YgZGVmYXVsdCBrZXktdmFsdWUgcGFpcnMKKyAgICAgKi8KKyAgICBwdWJsaWMgQXR0cmlidXRlTWFwIGdldERlZmF1bHRWYWx1ZXMoKSB7CisKKyAgICAgICAgcmV0dXJuIGZJbXBsLmdldERlZmF1bHRWYWx1ZXMoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIG1ldGhvZCBpbnNwZWN0cyB0aGUgY2hhcmFjdGVyIHN0eWxlIHJ1bnMgaW4gdGhlIHNlbGVjdGlvbgorICAgICAqIHJhbmdlIChvciB0aGUgdHlwaW5nIHN0eWxlIGF0IHRoZSBpbnNlcnRpb24gcG9pbnQpLiAgSXQgcmV0dXJuczoKKyAgICAgKiA8dWw+CisgICAgICogPGxpPlRoZSB2YWx1ZSBvZiA8dHQ+a2V5PC90dD4sIGlmIHRoZSB2YWx1ZSBvZiA8dHQ+a2V5PC90dD4KKyAgICAgKiBpcyB0aGUgc2FtZSBpbiBhbGwgb2YgdGhlIHN0eWxlIHJ1bnMgaW4gdGhlIHNlbGVjdGlvbiwgb3I8L2xpPgorICAgICAqIDxsaT48dHQ+TVVMVElQTEVfVkFMVUVTPC90dD4sIGlmIHR3byBvciBtb3JlIHN0eWxlIHJ1bnMgaGF2ZSBkaWZmZXJlbnQgCisgICAgICogdmFsdWVzIGZvciA8dHQ+a2V5PC90dD4uPC9saT4KKyAgICAgKiA8L3VsPgorICAgICAqIElmIGEgc3R5bGUgcnVuIGRvZXMgbm90IGNvbnRhaW4gPHR0PmtleTwvdHQ+LAorICAgICAqIGl0cyB2YWx1ZSBpcyBjb25zaWRlcmVkIHRvIGJlIHRoZSBkZWZhdWx0IHN0eWxlIGZvciA8dHQ+a2V5PC90dD4sCisgICAgICogYXMgZGVmaW5lZCBieSB0aGUgZGVmYXVsdCB2YWx1ZXMgQXR0cmlidXRlTWFwLiAgTm90ZSB0aGF0IGlmCisgICAgICogPHR0PmtleTwvdHQ+IGRvZXMgbm90IGhhdmUgYSBkZWZhdWx0IHZhbHVlIHRoaXMgbWV0aG9kIG1heSByZXR1cm4KKyAgICAgKiBudWxsLgorICAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCBmb3IgY29uZmlndXJpbmcgc3R5bGUgbWVudXMuCisgICAgICogQHBhcmFtIGtleSB0aGUga2V5IHVzZWQgdG8gcmV0cmlldmUgdmFsdWVzIGZvciBjb21wYXJpc29uCisgICAgICogQHNlZSBNVGV4dFBhbmVsI01VTFRJUExFX1ZBTFVFUworICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgZ2V0Q2hhcmFjdGVyU3R5bGVPdmVyU2VsZWN0aW9uKE9iamVjdCBrZXkpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmSW1wbC5nZXRDaGFyYWN0ZXJTdHlsZU92ZXJTZWxlY3Rpb24oa2V5KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIG1ldGhvZCBpbnNwZWN0cyB0aGUgcGFyYWdyYXBoIHN0eWxlIHJ1bnMgaW4gdGhlIHNlbGVjdGlvbgorICAgICAqIHJhbmdlIChvciB0aGUgdHlwaW5nIHN0eWxlIGF0IHRoZSBpbnNlcnRpb24gcG9pbnQpLiAgSXQgcmV0dXJuczoKKyAgICAgKiA8dWw+CisgICAgICogPGxpPlRoZSB2YWx1ZSBvZiA8dHQ+a2V5PC90dD4sIGlmIHRoZSB2YWx1ZSBvZiA8dHQ+a2V5PC90dD4KKyAgICAgKiBpcyB0aGUgc2FtZSBpbiBhbGwgb2YgdGhlIHN0eWxlIHJ1bnMgaW4gdGhlIHNlbGVjdGlvbiwgb3I8L2xpPgorICAgICAqIDxsaT48dHQ+TVVMVElQTEVfVkFMVUVTPC90dD4sIGlmIHR3byBvciBtb3JlIHN0eWxlIHJ1bnMgaGF2ZSAKKyAgICAgKiBkaWZmZXJlbnQgdmFsdWVzIGZvciA8dHQ+a2V5PC90dD4uPC9saT4KKyAgICAgKiA8L3VsPgorICAgICAqIElmIGEgc3R5bGUgcnVuIGRvZXMgbm90IGNvbnRhaW4gPHR0PmtleTwvdHQ+LAorICAgICAqIGl0cyB2YWx1ZSBpcyBjb25zaWRlcmVkIHRvIGJlIHRoZSBkZWZhdWx0IHN0eWxlIGZvciA8dHQ+a2V5PC90dD4sCisgICAgICogYXMgZGVmaW5lZCBieSB0aGUgZGVmYXVsdCB2YWx1ZXMgQXR0cmlidXRlTWFwLiAgTm90ZSB0aGF0IGlmCisgICAgICogPHR0PmtleTwvdHQ+IGRvZXMgbm90IGhhdmUgYSBkZWZhdWx0IHZhbHVlIHRoaXMgbWV0aG9kIG1heSByZXR1cm4KKyAgICAgKiBudWxsLgorICAgICAqIFRoaXMgbWV0aG9kIGlzIHVzZWZ1bCBmb3IgY29uZmlndXJpbmcgc3R5bGUgbWVudXMuCisgICAgICogQHBhcmFtIGtleSB0aGUga2V5IHVzZWQgdG8gcmV0cmlldmUgdmFsdWVzIGZvciBjb21wYXJpc29uCisgICAgICogQHNlZSBNVGV4dFBhbmVsI01VTFRJUExFX1ZBTFVFUworICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgZ2V0UGFyYWdyYXBoU3R5bGVPdmVyU2VsZWN0aW9uKE9iamVjdCBrZXkpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmSW1wbC5nZXRQYXJhZ3JhcGhTdHlsZU92ZXJTZWxlY3Rpb24oa2V5KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmUgdGhlIHNlbGVjdGVkIHRleHQgZnJvbSB0aGUgZG9jdW1lbnQgYW5kIHBsYWNlIGl0CisgICAgICogb24gdGhlIGNsaXBib2FyZC4gIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYgdGhlIHRleHQKKyAgICAgKiBpcyBub3QgZWRpdGFibGUsIG9yIGlmIG5vIHRleHQgaXMgc2VsZWN0ZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgY3V0KCkgeworICAgICAgICBmSW1wbC5jdXQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQbGFjZSB0aGUgc2VsZWN0ZWQgdGV4dCBvbiB0aGUgY2xpcGJvYXJkLiAgVGhpcyBtZXRob2QgaGFzCisgICAgICogbm8gZWZmZWN0IGlmIG5vIHRleHQgaXMgc2VsZWN0ZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgY29weSgpIHsKKyAgICAgICAgZkltcGwuY29weSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlcGxhY2UgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0ZXh0IHdpdGggdGhlIHRleHQgb24gdGhlIGNsaXBib2FyZC4KKyAgICAgKiBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZSB0ZXh0IGlzIG5vdCBlZGl0YWJsZSwgb3IgaWYgbm8KKyAgICAgKiB0ZXh0IGlzIG9uIHRoZSBjbGlwYm9hcmQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgcGFzdGUoKSB7CisgICAgICAgIGZJbXBsLnBhc3RlKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVtb3ZlIHNlbGVjdGVkIHRleHQgZnJvbSB0aGUgZG9jdW1lbnQsIHdpdGhvdXQgYWx0ZXJpbmcgdGhlIGNsaXBib2FyZC4KKyAgICAgKiBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IGlmIHRoZQorICAgICAqIHRleHQgaXMgbm90IGVkaXRhYmxlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGNsZWFyKCkgeworICAgICAgICBmSW1wbC5jbGVhcigpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFVuZG8gdGhlIG1vc3QgcmVjZW50IHRleHQgY2hhbmdlLiAgVGhpcyBtZXRob2QgaGFzIG5vIGVmZmVjdCBpZgorICAgICAqIHRoZXJlIGlzIG5vIGNoYW5nZSB0byB1bmRvLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHVuZG8oKSB7CisgICAgICAgIGZJbXBsLnVuZG8oKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWRvIHRoZSBtb3N0IHJlY2VudCB0ZXh0IGNoYW5nZS4gIFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3QgaWYKKyAgICAgKiB0aGVyZSBpcyBubyBjaGFuZ2UgdG8gcmVkby4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZWRvKCkgeworICAgICAgICBmSW1wbC5yZWRvKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBudW1iZXIgb2YgY29tbWFuZHMgdGhlIGNvbW1hbmQgbG9nIGNhbiBob2xkLgorICAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBjb21tYW5kcyB0aGUgY29tbWFuZCBsb2cgY2FuIGhvbGQKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldENvbW1hbmRMb2dTaXplKCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5nZXRDb21tYW5kTG9nU2l6ZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgbnVtYmVyIG9mIGNvbW1hbmRzIHRoZSBjb21tYW5kIGxvZyBjYW4gaG9sZC4gIEFsbAorICAgICAqIHJlZG9hYmxlIGNvbW1hbmRzIGFyZSByZW1vdmVkIHdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkLgorICAgICAqIEBwYXJhbSBzaXplIHRoZSBudW1iZXIgb2YgY29tbWFuZHMga2VwdCBpbiB0aGUgY29tbWFuZCBsb2cKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRDb21tYW5kTG9nU2l6ZShpbnQgc2l6ZSkgeworICAgICAgICBmSW1wbC5zZXRDb21tYW5kTG9nU2l6ZShzaXplKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmUgYWxsIGNvbW1hbmRzIGZyb20gdGhlIGNvbW1hbmQgbG9nLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGNsZWFyQ29tbWFuZExvZygpIHsKKyAgICAgICAgZkltcGwuY2xlYXJDb21tYW5kTG9nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogTW9kaWZ5IHRoZSBjaGFyYWN0ZXIgc3R5bGVzIG9uIHRoZSBzZWxlY3RlZCBjaGFyYWN0ZXJzLiAgSWYgbm8gY2hhcmFjdGVycworICAgICAqIGFyZSBzZWxlY3RlZCwgbW9kaWZ5IHRoZSB0eXBpbmcgc3R5bGUuCisgICAgICogQHBhcmFtIG1vZGlmaWVyIHRoZSBTdHlsZU1vZGlmaWVyIHdpdGggd2hpY2ggdG8gbW9kaWZ5IHRoZSBzdHlsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBtb2RpZnlDaGFyYWN0ZXJTdHlsZU9uU2VsZWN0aW9uKFN0eWxlTW9kaWZpZXIgbW9kaWZpZXIpIHsKKyAgICAgICAgZkltcGwubW9kaWZ5Q2hhcmFjdGVyU3R5bGVPblNlbGVjdGlvbihtb2RpZmllcik7CisgICAgfQorCisgICAgLyoqCisgICAgICogTW9kaWZ5IHRoZSBwYXJhZ3JhcGggc3R5bGVzIGluIHBhcmFncmFwaHMgY29udGFpbmluZyBzZWxlY3RlZCBjaGFyYWN0ZXJzLCBvcgorICAgICAqIHRoZSBwYXJhZ3JhcGggY29udGFpbmluZyB0aGUgaW5zZXJ0aW9uIHBvaW50LgorICAgICAqIEBwYXJhbSBtb2RpZmllciB0aGUgU3R5bGVNb2RpZmllciB3aXRoIHdoaWNoIHRvIG1vZGlmeSB0aGUgc3R5bGVzCisgICAgICovCisgICAgcHVibGljIHZvaWQgbW9kaWZ5UGFyYWdyYXBoU3R5bGVPblNlbGVjdGlvbihTdHlsZU1vZGlmaWVyIG1vZGlmaWVyKSB7CisgICAgICAgIGZJbXBsLm1vZGlmeVBhcmFncmFwaFN0eWxlT25TZWxlY3Rpb24obW9kaWZpZXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgS2V5UmVtYXAgdXNlZCB0byBwcm9jZXNzIGtleSBldmVudHMuCisgICAgICogQHJldHVybiB0aGUga2V5IHJlbWFwIHVzZWQgdG8gcHJvY2VzcyBrZXkgZXZlbnRzCisgICAgICogQHNlZSAjc2V0S2V5UmVtYXAKKyAgICAgKi8KKyAgICBwdWJsaWMgS2V5UmVtYXAgZ2V0S2V5UmVtYXAoKSB7CisKKyAgICAgICAgcmV0dXJuIGZJbXBsLmdldEtleVJlbWFwKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVXNlIHRoZSBnaXZlbiBLZXlSZW1hcCB0byBtYXAga2V5IGV2ZW50cyB0byBjaGFyYWN0ZXJzLgorICAgICAqIE9ubHkga2V5CisgICAgICogZXZlbnRzIGFyZSBhZmZlY3RlZCBieSB0aGUgcmVtYXA7ICBvdGhlciB0ZXh0IGVudGVyaW5nIHRoZQorICAgICAqIGNvbnRyb2wgKHZpYSB0aGUgY2xpcGJvYXJkLCBmb3IgZXhhbXBsZSkgaXMgbm90IGFmZmVjdGVkCisgICAgICogYnkgdGhlIEtleVJlbWFwLgorICAgICAqIDxwPgorICAgICAqIERvIG5vdCBwYXNzIDx0dD5udWxsPC90dD4gdG8gdGhpcyBtZXRob2QgdG8gbGVhdmUga2V5CisgICAgICogZXZlbnRzIHVubWFwcGVkLiAgSW5zdGVhZCwgdXNlIDx0dD5LZXlSZW1hcC5nZXRJZGVudGl0eVJlbWFwKCk8L3R0PgorICAgICAqIEBwYXJhbSByZW1hcCB0aGUgS2V5UmVtYXAgdG8gdXNlIGZvciBtYXBwaW5nIGtleSBldmVudHMgdG8gY2hhcmFjdGVycworICAgICAqIEBleGNlcHRpb24gamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uIGlmIHBhcmFtZXRlciBpcyBudWxsCisgICAgICogQHNlZSBLZXlSZW1hcAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEtleVJlbWFwKEtleVJlbWFwIHJlbWFwKSB7CisKKyAgICAgICAgZkltcGwuc2V0S2V5UmVtYXAocmVtYXApOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbW9kaWZpY2F0aW9uIGZsYWcgb2YgdGhlIGN1cnJlbnQgdGV4dCBjaGFuZ2UuCisgICAgICogQHNlZSAjc2V0TW9kaWZpZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc01vZGlmaWVkKCkgeworCisgICAgICAgIHJldHVybiBmSW1wbC5pc01vZGlmaWVkKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBtb2RpZmljYXRpb24gZmxhZyBvZiB0aGUgY3VycmVudCB0ZXh0IGNoYW5nZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRNb2RpZmllZChib29sZWFuIG1vZGlmaWVkKSB7CisgICAgICAgIAorICAgICAgICBmSW1wbC5zZXRNb2RpZmllZChtb2RpZmllZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBtZXRob2QgaXMgZm9yIEtleUV2ZW50Rm9yd2FyZGVyJ3MgdXNlIG9ubHkhCisgICAgICovCisgICAgQVRleHRQYW5lbEltcGwgZ2V0SW1wbCgpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmSW1wbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGV4dFBhbmVsRXZlbnQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0UGFuZWxFdmVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmVjZDY2MTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGV4dFBhbmVsRXZlbnQuamF2YQpAQCAtMCwwICsxLDE1NyBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogVGV4dFBhbmVsRXZlbnQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo1MToyMyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbDsKKworaW1wb3J0IGphdmEudXRpbC5FdmVudE9iamVjdDsKKworLyoqCisgKiBUZXh0UGFuZWxFdmVudCBpcyBnZW5lcmF0ZWQgYnkgYW4gTVRleHRQYW5lbCB0byBub3RpZnkgbGlzdGVuZXJzCisgKiBvZiBjaGFuZ2VzLiAgVG8gcmVjZWl2ZSBUZXh0UGFuZWxFdmVudHMgZnJvbSBhbiBNVGV4dFBhbmVsLCBjbGllbnRzCisgKiBtdXN0IGltcGxlbWVudCBUZXh0UGFuZWxMaXN0ZW5lciBhbmQgYWRkIHRoZW1zZWx2ZXMgdG8gdGhlIE1UZXh0UGFuZWwncworICogbGlzdCBvZiBsaXN0ZW5lcnMuCisgKiA8cD4KKyAqIFNvbWUgZXZlbnQgdHlwZXMgYXJlIHNwZWNpYWwgY2FzZXMgb2Ygb3RoZXJzLiAgVGhpcyBpcyBpbnRlbnRpb25hbCAtIGl0CisgKiBhbGxvd3Mgbm90aWZpY2F0aW9ucyB0byBiZSBzZW50IGxlc3Mgb2Z0ZW4gaW4gY2VydGFpbiBjb21tb24gY2FzZXMuICBGb3IKKyAqIGV4YW1wbGUsIGEgY2hhbmdlIGluIHRoZSBzZWxlY3Rpb24gcmFuZ2UgZ2VuZXJhdGVzIGEgU0VMRUNUSU9OX1JBTkdFX0NIQU5HRUQgCisgKiBldmVudC4gIFRoaXMgaXMgYSB2ZXJ5IGNvbW1vbiBvY2N1cnJhbmNlLCBhbmQgaWYgbWFueSBjbGllbnRzIGxpc3RlbiBmb3IgdGhpcworICogZXZlbnQsIHRoZXJlIG1heSBiZSBhIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIHBlbmFsdHkuICBCeQorICogbGlzdGVuaW5nIGZvciBhIG1vcmUgc3BlY2lhbGl6ZWQgZXZlbnQgKHN1Y2ggYXMgU0VMRUNUSU9OX0VNUFRZX0NIQU5HRUQpLCBjbGllbnRzCisgKiBjYW4gcmVkdWNlIHRoZSBudW1iZXIgb2Ygbm90aWZpY2F0aW9ucyBzZW50LgorICogCisgKiBAc2VlIE1UZXh0UGFuZWwKKyAqIEBzZWUgVGV4dFBhbmVsTGlzdGVuZXIKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIFRleHRQYW5lbEV2ZW50IGV4dGVuZHMgRXZlbnRPYmplY3QgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAKKyAgICAvKioKKyAgICAgKiBUaGUgbG93ZXIgYm91bmQgb2YgVGV4dFBhbmVsRXZlbnQgSUQncy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBURVhUX1BBTkVMX0ZJUlNUID0gMTE7CisKKyAgICAvKioKKyAgICAgKiBFdmVudHMgb2YgdGhpcyB0eXBlIGluZGljYXRlIGEgY2hhbmdlIGluIHRoZSBzZWxlY3Rpb24gcmFuZ2UuCisgICAgICogVGhpcyBvY2N1cnMgcXVpdGUgb2Z0ZW4uICBNb3N0IGNsaWVudHMgZG8gbm90IG5lZWQgdG8gYmUgCisgICAgICogbm90aWZpZWQgZXZlcnkgdGltZSB0aGUgc2VsZWN0aW9uIHJhbmdlIGNoYW5nZXMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VMRUNUSU9OX1JBTkdFX0NIQU5HRUQgPSAxMTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBFdmVudHMgb2YgdGhpcyB0eXBlIGFyZSBzZW50IHdoZW4gdGhlIHNlbGVjdGlvbiByYW5nZSBiZWNvbWVzCisgICAgICogMC1sZW5ndGggYWZ0ZXIgbm90IGJlaW5nIDAtbGVuZ3RoLCBvciB2aWNlIHZlcnNhLiAgVGhpcyBldmVudAorICAgICAqIGlzIGEgc3BlY2lhbCBjYXNlIG9mIFNFTEVDVElPTl9SQU5HRV9DSEFOR0VELgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNFTEVDVElPTl9FTVBUWV9DSEFOR0VEID0gMTI7CisgICAgCisgICAgLyoqCisgICAgICogRXZlbnRzIG9mIHRoaXMgdHlwZSBpbmRpY2F0ZSB0aGF0IHRoZSB0ZXh0IGluIHRoZSBUZXh0UGFuZWwgY2hhbmdlZC4KKyAgICAgKiBUaGlzIHR5cGUgb2YgZXZlbnQgb2NjdXJzIG9mdGVuLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRFWFRfQ0hBTkdFRCA9IDEzOworICAgIAorICAgIC8qKgorICAgICAqIEV2ZW50cyBvZiB0aGlzIHR5cGUgYXJlIHNlbnQgd2hlbiB0aGUgc3R5bGVzIGluIHRoZSBjdXJyZW50CisgICAgICogc2VsZWN0aW9uIGNoYW5nZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTRUxFQ1RJT05fU1RZTEVTX0NIQU5HRUQgPSAxNDsKKyAgICAgCisgICAgLyoqCisgICAgICogRXZlbnRzIG9mIHRoaXMgdHlwZSBhcmUgc2VudCB3aGVuIHRoZSB1bmRvL3JlZG8gc3RhdGUgY2hhbmdlcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBVTkRPX1NUQVRFX0NIQU5HRUQgPSAxNTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBFdmVudHMgb2YgdGhpcyB0eXBlIGFyZSBzZW50IHdoZW4gdGhlIGNsaXBib2FyZCBzdGF0ZSBjaGFuZ2VzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENMSVBCT0FSRF9DSEFOR0VEID0gMTY7CisgICAgCisgICAgLyoqCisgICAgICogRXZlbnRzIG9mIHRoaXMgdHlwZSBhcmUgc2VudCB3aGVuIAorICAgICAqIHRoZSB3cmFwIHdpZHRoIG9mIHRoZSB0ZXh0IGNoYW5nZXMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRk9STUFUX1dJRFRIX0NIQU5HRUQgPSAxNzsKKworICAgIC8qKgorICAgICAqIEV2ZW50cyBvZiB0aGlzIHR5cGUgYXJlIHNlbnQgd2hlbiB0aGUga2V5IHJlbWFwIGNoYW5nZXMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgS0VZUkVNQVBfQ0hBTkdFRCA9IDE4OworCisgICAgLyoqCisgICAgICogVGhlIHVwcGVyIGJvdW5kIG9mIFRleHRQYW5lbEV2ZW50IElEJ3MuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEVYVF9QQU5FTF9MQVNUID0gMTg7CisKKyAgICBwcml2YXRlIGludCBmSWQ7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgVGV4dFBhbmVsRXZlbnQuCisgICAgICogQHBhcmFtIHNvdXJjZSB0aGUgTVRleHRQYW5lbCB3aGljaCBnZW5lcmF0ZWQgdGhlIGV2ZW50CisgICAgICogQHBhcmFtIGlkIHRoZSBJRCBmb3IgdGhpcyBldmVudC4gIE11c3QgYmUgd2l0aGluCisgICAgICogW1RFWFRfUEFORUxfRklSU1QsIFRFWFRfUEFORUxfTEFTVF0uCisgICAgICovCisgICAgVGV4dFBhbmVsRXZlbnQoTVRleHRQYW5lbCBzb3VyY2UsIGludCBpZCkgeworCisgICAgICAgIHN1cGVyKHNvdXJjZSk7CisgICAgICAgIGlmIChpZCA8IFRFWFRfUEFORUxfRklSU1QgfHwgaWQgPiBURVhUX1BBTkVMX0xBU1QpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImlkIG91dCBvZiByYW5nZSIpOworICAgICAgICB9CisgICAgICAgIGZJZCA9IGlkOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgZXZlbnQgSUQgZm9yIHRoaXMgZXZlbnQuICBFdmVudCBJRCdzIGFyZQorICAgICAqIG9uZSBvZiB0aGUgY2xhc3MgY29uc3RhbnRzLgorICAgICAqIEByZXR1cm4gdGhlIGV2ZW50IElEIGZvciB0aGlzIGV2ZW50CisgICAgICovCisgICAgcHVibGljIGludCBnZXRJRCgpIHsKKworICAgICAgICByZXR1cm4gZklkOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAKKyAgICAgICAgU3RyaW5nIGRlc2MgPSBudWxsOworICAgICAgICAKKyAgICAgICAgc3dpdGNoKGZJZCkgeworICAgICAgICAgICAgY2FzZSBTRUxFQ1RJT05fUkFOR0VfQ0hBTkdFRDoKKyAgICAgICAgICAgICAgICBkZXNjID0gIlNFTEVDVElPTl9SQU5HRV9DSEFOR0VEIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU0VMRUNUSU9OX0VNUFRZX0NIQU5HRUQ6CisgICAgICAgICAgICAgICAgZGVzYyA9ICJTRUxFQ1RJT05fRU1QVFlfQ0hBTkdFRCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFRFWFRfQ0hBTkdFRDoKKyAgICAgICAgICAgICAgICBkZXNjID0gIlRFWFRfQ0hBTkdFRCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNFTEVDVElPTl9TVFlMRVNfQ0hBTkdFRDoKKyAgICAgICAgICAgICAgICBkZXNjID0gIlNFTEVDVElPTl9TVFlMRVNfQ0hBTkdFRCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFVORE9fU1RBVEVfQ0hBTkdFRDoKKyAgICAgICAgICAgICAgICBkZXNjID0gIlVORE9fU1RBVEVfQ0hBTkdFRCI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENMSVBCT0FSRF9DSEFOR0VEOgorICAgICAgICAgICAgICAgIGRlc2MgPSAiQ0xJUEJPQVJEX0NIQU5HRUQiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGT1JNQVRfV0lEVEhfQ0hBTkdFRDoKKyAgICAgICAgICAgICAgICBkZXNjID0gIkZPUk1BVF9XSURUSF9DSEFOR0VEIjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgS0VZUkVNQVBfQ0hBTkdFRDoKKyAgICAgICAgICAgICAgICBkZXNjID0gIktFWVJFTUFQX0NIQU5HRUQiOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybiAiW1RleHRQYW5lbEV2ZW50OiIrZGVzYysiXSI7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRQYW5lbExpc3RlbmVyLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGV4dFBhbmVsTGlzdGVuZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yM2UwNzAwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRQYW5lbExpc3RlbmVyLmphdmEKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogVGV4dFBhbmVsTGlzdGVuZXIuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo1MToyMyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbDsKKworLyoqCisgKiBUaGlzIGludGVyZmFjZSBpcyBpbXBsZW1lbnRlZCBieSBjbGFzc2VzIHdoaWNoCisgKiByZWNlaXZlIGNoYW5nZSBub3RpZmljYXRpb25zIGZyb20gYW4gTVRleHRQYW5lbC4KKyAqIEBzZWUgTVRleHRQYW5lbAorICogQHNlZSBUZXh0UGFuZWxFdmVudAorICovCitwdWJsaWMgaW50ZXJmYWNlIFRleHRQYW5lbExpc3RlbmVyIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgLyoqCisgICAgICogTm90aWZ5IGxpc3RlbmVyIG9mIGFuIE1UZXh0UGFuZWwgY2hhbmdlLgorICAgICAqIEBwYXJhbSBldmVudCBhIFRleHRQYW5lbEV2ZW50IGluZGljYXRpbmcgd2hhdCBoYXBwZW5lZAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHRleHRFdmVudE9jY3VycmVkKFRleHRQYW5lbEV2ZW50IGV2ZW50KTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiBsaXN0ZW5lciBuZWVkcyB0byBiZSBub3RpZmllZCBvZiAKKyAgICAgKiB0aGUgZ2l2ZW4gZXZlbnQgdHlwZS4gIFRoaXMgYWxsb3dzIGEgdGV4dCBwYW5lbCB0byBhdm9pZAorICAgICAqIHNlbmRpbmcgZXZlbnRzIHRvIHVuaW50ZXJlc3RlZCBwYXJ0aWVzLgorICAgICAqIEBwYXJhbSB0eXBlIGFuIGV2ZW50IElEIGZyb20gVGV4dFBhbmVsRXZlbnQKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBsaXN0ZW5lciBuZWVkcyB0byBiZSBub3RpZmllZCBvZgorICAgICAqIGV2ZW50cyBvZiB0aGUgZ2l2ZW4gdHlwZQorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIHJlc3BvbmRzVG9FdmVudFR5cGUoaW50IHR5cGUpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRQYW5lbFNldHRpbmdzLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGV4dFBhbmVsU2V0dGluZ3MuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zMWQzZjAxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRQYW5lbFNldHRpbmdzLmphdmEKQEAgLTAsMCArMSwyODMgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRleHRQYW5lbFNldHRpbmdzLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBqYXZhLmF3dC5Db2xvcjsKK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLlRleHRBdHRyaWJ1dGU7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0YW5kYXJkVGFiUnVsZXI7CisKKy8qKgorICogVGhpcyBjbGFzcyBjb250YWlucyBzZXR0aW5ncyB1c2VkIHdoZW4gY29uc3RydWN0aW5nIGFuIE1UZXh0UGFuZWwuCisgKiBUaGUgc2V0dGluZ3MgY29udHJvbGVkIGJ5IHRoaXMgY2xhc3MgaW5jbHVkZToKKyAqIDx1bD4KKyAqIDxsaT53aGV0aGVyIHRoZSB0ZXh0IGluIHRoZSBNVGV4dFBhbmVsIGNhbiBiZSBzY3JvbGxlZDwvbGk+CisgKiA8bGk+d2hldGhlciBzY3JvbGwgYmFycyBpbiB0aGUgTVRleHRQYW5lbCBhcmUgdmlzaWJsZTwvbGk+CisgKiA8bGk+d2hldGhlciB0aGUgdGV4dCBpbiB0aGUgTVRleHRQYW5lbCBjYW4gYmUgc2VsZWN0ZWQ8L2xpPgorICogPGxpPndoZXRoZXIgdGhlIHRleHQgaW4gdGhlIE1UZXh0UGFuZWwgY2FuIGJlIGVkaXRlZDwvbGk+CisgKiA8bGk+d2hldGhlciBsaW5lcyBvZiB0ZXh0IHdyYXAgdG8gdGhlIE1UZXh0UGFuZWwncyB3aWR0aCwgb3IKKyAqIG9ubHkgZW5kIGF0IHBhcmFncmFwaCBzZXBhcmF0b3JzPC9saT4KKyAqIDxsaT50aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHVuc3BlY2lmaWVkIHN0eWxlczwvbGk+CisgKiA8L3VsPgorICogU29tZSBzZXR0aW5ncyBhcmUgZGVwZW5kZW50IG9uIG90aGVycy4gIFNjcm9sbCBiYXJzIGFyZSB2aXNpYmxlCisgKiBvbmx5IGlmIHRoZSB0ZXh0IGlzIHNjcm9sbGFibGUuICBBbHNvLCB0ZXh0IHdoaWNoIGlzIG5vdCBlZGl0YWJsZQorICogaWYgaXQgaXMgbm90IHNlbGVjdGFibGUuCisgKiA8cD4KKyAqCisgKiBAc2VlIE1UZXh0UGFuZWwKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIFRleHRQYW5lbFNldHRpbmdzIGltcGxlbWVudHMgQ2xvbmVhYmxlLCBTZXJpYWxpemFibGUgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBBdHRyaWJ1dGVNYXAgREVGQVVMVFM7CisgICAgc3RhdGljIHsKKyAgICAgICAgZmluYWwgRmxvYXQgZmxvYXRaZXJvID0gbmV3IEZsb2F0KDAuMGYpOworCisgICAgICAgIEhhc2h0YWJsZSBkZWZhdWx0cyA9IG5ldyBIYXNodGFibGUoKTsKKyAgICAgICAgZGVmYXVsdHMucHV0KFRleHRBdHRyaWJ1dGUuRkFNSUxZLCAiU2VyaWYiKTsKKyAgICAgICAgZGVmYXVsdHMucHV0KFRleHRBdHRyaWJ1dGUuV0VJR0hULCBuZXcgRmxvYXQoMS4wZikpOworICAgICAgICBkZWZhdWx0cy5wdXQoVGV4dEF0dHJpYnV0ZS5QT1NUVVJFLCBmbG9hdFplcm8pOworICAgICAgICBkZWZhdWx0cy5wdXQoVGV4dEF0dHJpYnV0ZS5TSVpFLCBuZXcgRmxvYXQoMTguMGYpKTsKKyAgICAgICAgZGVmYXVsdHMucHV0KFRleHRBdHRyaWJ1dGUuU1VQRVJTQ1JJUFQsIG5ldyBJbnRlZ2VyKDApKTsKKyAgICAgICAgZGVmYXVsdHMucHV0KFRleHRBdHRyaWJ1dGUuRk9SRUdST1VORCwgQ29sb3IuYmxhY2spOworICAgICAgICBkZWZhdWx0cy5wdXQoVGV4dEF0dHJpYnV0ZS5VTkRFUkxJTkUsIG5ldyBJbnRlZ2VyKC0xKSk7CisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLlNUUklLRVRIUk9VR0gsIEJvb2xlYW4uRkFMU0UpOworCisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLkVYVFJBX0xJTkVfU1BBQ0lORywgZmxvYXRaZXJvKTsKKyAgICAgICAgZGVmYXVsdHMucHV0KFRleHRBdHRyaWJ1dGUuRklSU1RfTElORV9JTkRFTlQsIGZsb2F0WmVybyk7CisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLk1JTl9MSU5FX1NQQUNJTkcsIGZsb2F0WmVybyk7CisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLkxJTkVfRkxVU0gsIFRleHRBdHRyaWJ1dGUuRkxVU0hfTEVBRElORyk7CisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLkxFQURJTkdfTUFSR0lOLCBmbG9hdFplcm8pOworICAgICAgICBkZWZhdWx0cy5wdXQoVGV4dEF0dHJpYnV0ZS5UUkFJTElOR19NQVJHSU4sIGZsb2F0WmVybyk7CisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLlRBQl9SVUxFUiwgbmV3IFN0YW5kYXJkVGFiUnVsZXIoKSk7CisKKyAgICAgICAgREVGQVVMVFMgPSBuZXcgQXR0cmlidXRlTWFwKGRlZmF1bHRzKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBib29sZWFuIGZTY3JvbGxhYmxlID0gdHJ1ZTsKKyAgICBwcml2YXRlIGJvb2xlYW4gZlNjcm9sbEJhcnNWaXNpYmxlID0gdHJ1ZTsKKyAgICBwcml2YXRlIGJvb2xlYW4gZlNlbGVjdGFibGUgPSB0cnVlOworICAgIHByaXZhdGUgYm9vbGVhbiBmRWRpdGFibGUgPSB0cnVlOworICAgIHByaXZhdGUgYm9vbGVhbiBmV3JhcHMgPSB0cnVlOworICAgIHByaXZhdGUgQXR0cmlidXRlTWFwIGZEZWZhdWx0VmFsdWVzID0gREVGQVVMVFM7CisgICAgCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgVGV4dFBhbmVsU2V0dGluZ3MgaW5zdGFuY2Ugd2l0aCBhbGwgc2V0dGluZ3MKKyAgICAgKiBzZXQgdG8gdHJ1ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgVGV4dFBhbmVsU2V0dGluZ3MoKSB7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgbmV3IFRleHRQYW5lbFNldHRpbmdzIGluc3RhbmNlIHdpdGggdGhlCisgICAgICogc2FtZSBzZXR0aW5ncyBhcyB0aGlzLgorICAgICAqIEByZXR1cm4gYSBuZXcgVGV4dFBhbmVsU2V0dGluZ3MgaW5zdGFuY2UKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGNsb25lKCkgeworCisgICAgICAgIFRleHRQYW5lbFNldHRpbmdzIHJocyA9IG5ldyBUZXh0UGFuZWxTZXR0aW5ncygpOworCisgICAgICAgIHJocy5mU2Nyb2xsYWJsZSA9IGZTY3JvbGxhYmxlOworICAgICAgICByaHMuZlNjcm9sbEJhcnNWaXNpYmxlID0gZlNjcm9sbEJhcnNWaXNpYmxlOworICAgICAgICByaHMuZlNlbGVjdGFibGUgPSBmU2VsZWN0YWJsZTsKKyAgICAgICAgcmhzLmZFZGl0YWJsZSA9IGZFZGl0YWJsZTsKKyAgICAgICAgcmhzLmZXcmFwcyA9IGZXcmFwczsKKyAgICAgICAgcmhzLmZEZWZhdWx0VmFsdWVzID0gZkRlZmF1bHRWYWx1ZXM7CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmhzOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgc2Nyb2xsYWJsZSBzZXR0aW5nLCB3aGljaCBkZXRlcm1pbmVzIHdoZXRoZXIgdGV4dAorICAgICAqIGluIGFuIE1UZXh0UGFuZWwgY2FuIGJlIHNjcm9sbGVkLgorICAgICAqIEByZXR1cm4gdGhlIHNjcm9sbGFibGUgc2V0dGluZworICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGdldFNjcm9sbGFibGUoKSB7CisKKyAgICAgICAgcmV0dXJuIGZTY3JvbGxhYmxlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgc2Nyb2xsYWJsZSBzZXR0aW5nLgorICAgICAqIEBwYXJhbSBzY3JvbGxhYmxlIHRoZSBzY3JvbGxhYmxlIHNldHRpbmcuICBJZiBmYWxzZSwKKyAgICAgKiB0aGUgc2Nyb2xsQmFyc1Zpc2libGUgc2V0dGluZyBpcyBhbHNvIHNldCB0byBmYWxzZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRTY3JvbGxhYmxlKGJvb2xlYW4gc2Nyb2xsYWJsZSkgeworCisgICAgICAgIGZTY3JvbGxhYmxlID0gc2Nyb2xsYWJsZTsKKyAgICAgICAgZlNjcm9sbEJhcnNWaXNpYmxlICY9IHNjcm9sbGFibGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBzY3JvbGxCYXJzVmlzaWJsZSBzZXR0aW5nLCB3aGljaCBkZXRlcm1pbmVzIHdoZXRoZXIKKyAgICAgKiBzY3JvbGwgYmFycyBpbiBhbiBNVGV4dFBhbmVsIGFyZSB2aXNpYmxlLgorICAgICAqIEByZXR1cm4gdGhlIHNjcm9sbEJhcnNWaXNpYmxlIHNldHRpbmcKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBnZXRTY3JvbGxCYXJzVmlzaWJsZSgpIHsKKworICAgICAgICByZXR1cm4gZlNjcm9sbEJhcnNWaXNpYmxlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgc2Nyb2xsQmFyc1Zpc2libGUgc2V0dGluZy4KKyAgICAgKiBAcGFyYW0gdmlzIHRoZSBzY3JvbGxCYXJzVmlzaWJsZSBzZXR0aW5nLiAgSWYgdHJ1ZSwKKyAgICAgKiB0aGUgc2Nyb2xsYWJsZSBzZXR0aW5nIGlzIGFsc28gc2V0IHRvIHRydWUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0U2Nyb2xsQmFyc1Zpc2libGUoYm9vbGVhbiB2aXMpIHsKKworICAgICAgICBmU2Nyb2xsQmFyc1Zpc2libGUgPSB2aXM7CisgICAgICAgIGZTY3JvbGxhYmxlIHw9IHZpczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHNlbGVjdGFibGUgc2V0dGluZywgd2hpY2ggZGV0ZXJtaW5lcyB3aGV0aGVyCisgICAgICogdGV4dCBpbiBhbiBNVGV4dFBhbmVsIGNhbiBiZSBzZWxlY3RlZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBzZWxlY3RhYmxlIHNldHRpbmcKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBnZXRTZWxlY3RhYmxlKCkgeworCisgICAgICAgIHJldHVybiBmU2VsZWN0YWJsZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIHNlbGVjdGFibGUgc2V0dGluZy4KKyAgICAgKiBAcGFyYW0gc2VsZWN0YWJsZSB0aGUgc2VsZWN0YWJsZSBzZXR0aW5nLiAgSWYgZmFsc2UsCisgICAgICogdGhlIGVkaXRhYmxlIHNldHRpbmcgaXMgYWxzbyBzZXQgdG8gZmFsc2UuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0U2VsZWN0YWJsZShib29sZWFuIHNlbGVjdGFibGUpIHsKKworICAgICAgICBmU2VsZWN0YWJsZSA9IHNlbGVjdGFibGU7CisgICAgICAgIGZFZGl0YWJsZSAmPSBzZWxlY3RhYmxlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgZWRpdGFibGUgc2V0dGluZywgd2hpY2ggZGV0ZXJtaW5lcyB3aGV0aGVyCisgICAgICogdGV4dCBpbiBhbiBNVGV4dFBhbmVsIGNhbiBiZSBlZGl0ZWQuCisgICAgICogQHJldHVybiB0aGUgZWRpdGFibGUgc2V0dGluZworICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGdldEVkaXRhYmxlKCkgeworCisgICAgICAgIHJldHVybiBmRWRpdGFibGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBlZGl0YWJsZSBzZXR0aW5nLgorICAgICAqIEBwYXJhbSBzZWxlY3RhYmxlIHRoZSBzZWxlY3RhYmxlIHNldHRpbmcuICBJZiB0cnVlLAorICAgICAqIHRoZSBzZWxlY3RhYmxlIHNldHRpbmcgaXMgYWxzbyBzZXQgdG8gdHJ1ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRFZGl0YWJsZShib29sZWFuIGVkaXRhYmxlKSB7CisKKyAgICAgICAgZkVkaXRhYmxlID0gZWRpdGFibGU7CisgICAgICAgIGZTZWxlY3RhYmxlIHw9IGVkaXRhYmxlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgd3JhcHMgc2V0dGluZywgd2hpY2ggZGV0ZXJtaW5lcyB3aGV0aGVyCisgICAgICogbGluZXMgb2YgdGV4dCB3cmFwIHRvIHRoZSBsZW5ndGggb2YgdGhlIE1UZXh0UGFuZWwsCisgICAgICogb3Igb25seSBhdCBwYXJhZ3JhcGggc2VwYXJhdG9ycy4KKyAgICAgKiBAcmV0dXJuIHRoZSB3cmFwcyBzZXR0aW5nCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZ2V0V3JhcHMoKSB7CisKKyAgICAgICAgcmV0dXJuIGZXcmFwczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIHdyYXBzIHNldHRpbmcuCisgICAgICogQHBhcmFtIHdyYXBzIHRoZSB3cmFwcyBzZXR0aW5nCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0V3JhcHMoYm9vbGVhbiB3cmFwcykgeworCisgICAgICAgIGZXcmFwcyA9IHdyYXBzOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIEF0dHJpYnV0ZU1hcCBvZiBkZWZhdWx0IHZhbHVlcyBmb3IgY2VydGFpbiBrZXlzLgorICAgICAqIFdoZW4gYSBrZXkgaW4gdGhpcyBBdHRyaWJ1dGVNYXAgaXMgbm90IHNwZWNpZmllZCwgaXRzIHZhbHVlCisgICAgICogaXMgdGFrZW4gZnJvbSB0aGlzIEF0dHJpYnV0ZU1hcC4KKyAgICAgKiBAcmV0dXJuIHRoZSBBdHRyaWJ1dGVNYXAgb2YgZGVmYXVsdCB2YWx1ZXMKKyAgICAgKiBAc2VlIE1UZXh0UGFuZWwjZ2V0RGVmYXVsdFZhbHVlcworICAgICAqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVNYXAgZ2V0RGVmYXVsdFZhbHVlcygpIHsKKyAgICAKKyAgICAgICAgcmV0dXJuIGZEZWZhdWx0VmFsdWVzOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBBZGQgdGhlIGtleS12YWx1ZSBwYWlycyBpbiB0aGUgZ2l2ZW4gQXR0cmlidXRlTWFwIHRvIHRoZQorICAgICAqIGRlZmF1bHQgdmFsdWVzLiAgSWYgYSBrZXkgZG9lcyBub3QgYXBwZWFyIGluIHRoZSBnaXZlbgorICAgICAqIEF0dHJpYnV0ZU1hcCwgaXRzIHZhbHVlIGluIHRoZSBkZWZhdWx0IHZhbHVlIG1hcCBpcworICAgICAqIHVuY2hhbmdlZC4KKyAgICAgKiBAcGFyYW0gbWFwIGFuIEF0dHJpYnV0ZU1hcCBjb250YWluaW5nIG5ldyBkZWZhdWx0IHZhbHVlcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFkZERlZmF1bHRWYWx1ZXMoQXR0cmlidXRlTWFwIG1hcCkgeworICAgIAorICAgICAgICBmRGVmYXVsdFZhbHVlcyA9IGZEZWZhdWx0VmFsdWVzLmFkZEF0dHJpYnV0ZXMobWFwKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ29tcGFyZSB0aGlzIHRvIGFub3RoZXIgT2JqZWN0LiAgVGhpcyBpcyBlcXVhbAorICAgICAqIHRvIGFub3RoZXIgT2JqZWN0IGlmIHRoZSBvdGhlciBPYmplY3QgaXMgYQorICAgICAqIFRleHRQYW5lbFNldHRpbmdzIGluc3RhbmNlIHdpdGggdGhlIHNhbWUKKyAgICAgKiBzZXR0aW5ncyBhcyB0aGlzIG9uZS4KKyAgICAgKiBAcGFyYW0gcmhzIHRoZSBPYmplY3QgdG8gY29tcGFyZSB0bworICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgcmhzKSB7CisKKyAgICAgICAgaWYgKHJocyA9PSB0aGlzKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyaHMgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgVGV4dFBhbmVsU2V0dGluZ3Mgb3RoZXI7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBvdGhlciA9IChUZXh0UGFuZWxTZXR0aW5ncykgcmhzOworICAgICAgICB9CisgICAgICAgIGNhdGNoKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBvdGhlci5mU2Nyb2xsYWJsZSA9PSB0aGlzLmZTY3JvbGxhYmxlICYmCisgICAgICAgICAgICAgICBvdGhlci5mU2Nyb2xsQmFyc1Zpc2libGUgPT0gdGhpcy5mU2Nyb2xsQmFyc1Zpc2libGUgJiYKKyAgICAgICAgICAgICAgIG90aGVyLmZTZWxlY3RhYmxlID09IHRoaXMuZlNlbGVjdGFibGUgJiYKKyAgICAgICAgICAgICAgIG90aGVyLmZFZGl0YWJsZSA9PSB0aGlzLmZFZGl0YWJsZSAmJgorICAgICAgICAgICAgICAgb3RoZXIuZldyYXBzID09IHRoaXMuZldyYXBzICYmCisgICAgICAgICAgICAgICBvdGhlci5mRGVmYXVsdFZhbHVlcy5lcXVhbHModGhpcy5mRGVmYXVsdFZhbHVlcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBoYXNoIGNvZGUgZm9yIHRoaXMgT2JqZWN0LgorICAgICAqIEByZXR1cm4gdGhlIGhhc2ggY29kZSBmb3IgdGhpcyBPYmplY3QKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworCisgICAgICAgIGludCBjb2RlID0gZkRlZmF1bHRWYWx1ZXMuaGFzaENvZGUoKTsKKyAgICAgICAgY29kZSA9IGNvZGUqMiArIChmU2Nyb2xsYWJsZT8gMTowKTsKKyAgICAgICAgY29kZSA9IGNvZGUqMiArIChmU2Nyb2xsQmFyc1Zpc2libGU/IDE6MCk7CisgICAgICAgIGNvZGUgPSBjb2RlKjIgKyAoZlNlbGVjdGFibGU/IDE6MCk7CisgICAgICAgIGNvZGUgPSBjb2RlKjIgKyAoZkVkaXRhYmxlPyAxOjApOworICAgICAgICBjb2RlID0gY29kZSoyICsgKGZXcmFwcz8gMTowKTsKKworICAgICAgICByZXR1cm4gY29kZTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRSYW5nZS5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRSYW5nZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmYxYzcxNjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGV4dFJhbmdlLmphdmEKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogVGV4dFJhbmdlLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKKy8qKgorKiBBIDxUVD5UZXh0UmFuZ2U8L1RUPiByZXByZXNlbnRzIGEgcmFuZ2Ugb2YgdGV4dCBib3VuZGVkIGJ5IGEKKyogc3RhcnQgKGluY2x1c2l2ZSksIGFuZCBhIGxpbWl0IChleGNsdXNpdmUpLiAgW3N0YXJ0LGxpbWl0KQorKi8KK2ZpbmFsIGNsYXNzIFRleHRSYW5nZQoreworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgLyoqIHRoZSBzdGFydCBvZiB0aGUgcmFuZ2UgKi8KKyAgICBwdWJsaWMgaW50IHN0YXJ0ID0gMDsKKyAgICAvKiogdGhlIGVuZCBvZiB0aGUgcmFuZ2UgKi8KKyAgICBwdWJsaWMgaW50IGxpbWl0ID0gMDsKKworICAgIC8qKgorICAgICogQ3JlYXRlIGEgdGV4dCByYW5nZSBmcm9tIHR3byBpbnRzLgorICAgICogQHBhcmFtIHN0YXJ0IHRoZSBzdGFydCBvZiB0aGUgcnVuCisgICAgKiBAcGFyYW0gbGltaXQgdGhlIGVuZCBvZiB0aGUgcnVuCisgICAgKi8KKyAgICBwdWJsaWMgVGV4dFJhbmdlKGludCBzdGFydCwgaW50IGxpbWl0KQorICAgIHsKKyAgICAgICAgdGhpcy5zdGFydCA9IHN0YXJ0OworICAgICAgICB0aGlzLmxpbWl0ID0gbGltaXQ7CisgICAgfQorCisgICAgLyoqCisgICAgKiBDcmVhdGUgYSB0ZXh0IHJhbmdlIG9mIDAsIDAuCisgICAgKi8KKyAgICBwdWJsaWMgVGV4dFJhbmdlKCkgeworICAgICAgICB0aGlzLnN0YXJ0ID0gdGhpcy5saW1pdCA9IDA7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRSZXBsYWNlbWVudC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRSZXBsYWNlbWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjhlZDNiYmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGV4dFJlcGxhY2VtZW50LmphdmEKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogVGV4dFJlcGxhY2VtZW50LmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTE6MjMgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWw7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRmb3JtYXQuVGV4dE9mZnNldDsKKworLyoqCisgKiBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gcGFzcyBhIFJFUExBQ0UgY29tbWFuZCB0byBCZWhhdmlvcnMuCisgKi8KK2ZpbmFsIGNsYXNzIFRleHRSZXBsYWNlbWVudCB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgaW50IGZTdGFydDsKKyAgICBwcml2YXRlIGludCBmTGltaXQ7CisgICAgcHJpdmF0ZSBNQ29uc3RUZXh0IGZUZXh0OworICAgIHByaXZhdGUgVGV4dE9mZnNldCBmU2VsU3RhcnQ7CisgICAgcHJpdmF0ZSBUZXh0T2Zmc2V0IGZTZWxMaW1pdDsKKworICAgIFRleHRSZXBsYWNlbWVudChpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgIGludCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgTUNvbnN0VGV4dCB0ZXh0LAorICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHNlbFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHNlbExpbWl0KSB7CisKKyAgICAgICAgZlN0YXJ0ID0gc3RhcnQ7CisgICAgICAgIGZMaW1pdCA9IGxpbWl0OworICAgICAgICBmVGV4dCA9IHRleHQ7CisgICAgICAgIGZTZWxTdGFydCA9IHNlbFN0YXJ0OworICAgICAgICBmU2VsTGltaXQgPSBzZWxMaW1pdDsKKyAgICB9CisKKyAgICBpbnQgZ2V0U3RhcnQoKSB7CisKKyAgICAgICAgcmV0dXJuIGZTdGFydDsKKyAgICB9CisKKyAgICBpbnQgZ2V0TGltaXQoKSB7CisKKyAgICAgICAgcmV0dXJuIGZMaW1pdDsKKyAgICB9CisKKyAgICBNQ29uc3RUZXh0IGdldFRleHQoKSB7CisKKyAgICAgICAgcmV0dXJuIGZUZXh0OworICAgIH0KKworICAgIFRleHRPZmZzZXQgZ2V0U2VsZWN0aW9uU3RhcnQoKSB7CisKKyAgICAgICAgcmV0dXJuIGZTZWxTdGFydDsKKyAgICB9CisKKyAgICBUZXh0T2Zmc2V0IGdldFNlbGVjdGlvbkxpbWl0KCkgeworCisgICAgICAgIHJldHVybiBmU2VsTGltaXQ7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1RleHRTZWxlY3Rpb24uamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0U2VsZWN0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTA4YjQ1YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UZXh0U2VsZWN0aW9uLmphdmEKQEAgLTAsMCArMSw5MjYgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRleHRTZWxlY3Rpb24uamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo1MToyMyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworLyoKKyAgICA3LzEvOTcgLSBjYXJldCBibGlua3MKKworICAgIDcvMy85NyAtIGZBbmNob3IgaXMgbm8gbG9uZ2VyIHJlc3RyaWN0ZWQgdG8gdGhlIHN0YXJ0IG9yIGVuZCBvZiB0aGUgc2VsZWN0aW9uLiB7amJyfQorICAgICAgICAgICAgQWxzbywgcmVtb3ZlZCBmVmlzaWJsZSAtIGl0IHdhcyBpZGVudGljYWwgdG8gZW5hYmxlZCgpLgorKi8KKworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbDsKKworaW1wb3J0IGphdmEuYXd0LkdyYXBoaWNzOworaW1wb3J0IGphdmEuYXd0LkNvbG9yOworaW1wb3J0IGphdmEuYXd0LlJlY3RhbmdsZTsKK2ltcG9ydCBqYXZhLmF3dC5Qb2ludDsKKworaW1wb3J0IGphdmEudGV4dC5CcmVha0l0ZXJhdG9yOworaW1wb3J0IGphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvcjsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50Lk1vdXNlRXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuS2V5RXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuRm9jdXNFdmVudDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dGZvcm1hdC5UZXh0T2Zmc2V0OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0Zm9ybWF0Lk1Gb3JtYXR0ZXI7CisKK2NsYXNzIFRleHRTZWxlY3Rpb24gZXh0ZW5kcyBCZWhhdmlvciBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHN0YXRpYyBmaW5hbCBDb2xvciAgICAgICAgICBISUdITElHSFRDT0xPUiA9IENvbG9yLnBpbms7CisKKyAgICBwcml2YXRlIFRleHRDb21wb25lbnQgICAgICAgZlRleHRDb21wb25lbnQ7CisgICAgcHJpdmF0ZSBNQ29uc3RUZXh0ICAgICAgICAgIGZUZXh0OworICAgIHByaXZhdGUgVGV4dE9mZnNldCAgICAgICAgICBmU3RhcnQ7CisgICAgcHJpdmF0ZSBUZXh0T2Zmc2V0ICAgICAgICAgIGZMaW1pdDsKKyAgICBwcml2YXRlIFRleHRPZmZzZXQgICAgICAgICAgZkFuY2hvcjsKKyAgICBwcml2YXRlIFRleHRPZmZzZXQgICAgICAgICAgZlVwRG93bkFuY2hvciA9IG51bGw7CisgICAgcHJpdmF0ZSBCcmVha0l0ZXJhdG9yICAgICAgIGZCb3VuZGFyaWVzID0gbnVsbDsKKyAgICBwcml2YXRlIENvbG9yICAgICAgICAgICAgICAgZkhpZ2hsaWdodENvbG9yID0gSElHSExJR0hUQ09MT1I7CisgICAgcHJpdmF0ZSBQYW5lbEV2ZW50QnJvYWRjYXN0ZXIgICBmTGlzdGVuZXI7CisgICAgcHJpdmF0ZSBSdW5TdHJhdGVneSAgICAgICAgIGZSdW5TdHJhdGVneTsKKyAgICBwcml2YXRlIGJvb2xlYW4gICAgICAgICAgICAgZk1vdXNlRG93biA9IGZhbHNlOworICAgIHByaXZhdGUgYm9vbGVhbiAgICAgICAgICAgICBmSGFuZGxpbmdLZXlPckNvbW1hbmQgPSBmYWxzZTsKKyAgICAKKyAgICBwcml2YXRlIGJvb2xlYW4gZkNhcmV0U2hvdWxkQmxpbms7CisgICAgcHJpdmF0ZSBib29sZWFuIGZDYXJldElzVmlzaWJsZTsKKyAgICBwcml2YXRlIGludCBmQ2FyZXRDb3VudDsKKworICAgIC8vIGZvcm1lcmx5IGluIGJhc2UgY2xhc3MKKyAgICBwcml2YXRlIGJvb2xlYW4gZkVuYWJsZWQ7CisKKyAgICBwcml2YXRlIE1vdXNlRXZlbnQgZlBlbmRpbmdNb3VzZUV2ZW50ID0gbnVsbDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBrQ2FyZXRJbnRlcnZhbCA9IDUwMDsKKworICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKworICAgICAgICBmaW5hbCBSdW5uYWJsZSBibGlua0NhcmV0ID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIGZDYXJldElzVmlzaWJsZSA9ICFmQ2FyZXRJc1Zpc2libGU7CisgICAgICAgICAgICAgICAgR3JhcGhpY3MgZyA9IGZUZXh0Q29tcG9uZW50LmdldEdyYXBoaWNzKCk7CisgICAgICAgICAgICAgICAgaWYgKGcgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiY2FyZXRJc1Zpc2libGU6ICIgKyBmQ2FyZXRJc1Zpc2libGUpOworICAgICAgICAgICAgICAgICAgICBkcmF3U2VsZWN0aW9uKGcsIGZDYXJldElzVmlzaWJsZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBOb3Qgc3VyZSB3aGF0IGVsc2UgdG8gZG86CisgICAgICAgICAgICAgICAgICAgIGZDYXJldFNob3VsZEJsaW5rID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgLy8gYmxpbmsgY2FyZXQKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKworICAgICAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKKworICAgICAgICAgICAgICAgIHdoaWxlICghZkNhcmV0U2hvdWxkQmxpbmspIHsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhaXQoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjYXRjaChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNhdWdodCBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBpbiBjYXJldCB0aHJlYWQuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICArK2ZDYXJldENvdW50OworCisgICAgICAgICAgICAgICAgaWYgKGZDYXJldENvdW50ICUgMiA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGZSdW5TdHJhdGVneS5kb0l0KGJsaW5rQ2FyZXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBUaHJlYWQuc2xlZXAoa0NhcmV0SW50ZXJ2YWwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2goSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisKKworICAgIHB1YmxpYyBUZXh0U2VsZWN0aW9uKFRleHRDb21wb25lbnQgdGV4dENvbXBvbmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQYW5lbEV2ZW50QnJvYWRjYXN0ZXIgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUnVuU3RyYXRlZ3kgcnVuU3RyYXRlZ3kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgZlRleHRDb21wb25lbnQgPSB0ZXh0Q29tcG9uZW50OworICAgICAgICBmVGV4dCA9IHRleHRDb21wb25lbnQuZ2V0VGV4dCgpOworICAgICAgICBmTGlzdGVuZXIgPSBsaXN0ZW5lcjsKKyAgICAgICAgZlJ1blN0cmF0ZWd5ID0gcnVuU3RyYXRlZ3k7CisgICAgICAgIAorICAgICAgICBmU3RhcnQgPSBuZXcgVGV4dE9mZnNldCgpOworICAgICAgICBmTGltaXQgPSBuZXcgVGV4dE9mZnNldCgpOworICAgICAgICBmQW5jaG9yID0gbmV3IFRleHRPZmZzZXQoKTsKKyAgICAgICAgZk1vdXNlRG93biA9IGZhbHNlOworCisgICAgICAgIGZDYXJldENvdW50ID0gMDsKKyAgICAgICAgZkNhcmV0SXNWaXNpYmxlID0gdHJ1ZTsKKyAgICAgICAgZkNhcmV0U2hvdWxkQmxpbmsgPSBmYWxzZTsKKyAgICAgICAgc2V0RW5hYmxlZChmYWxzZSk7CisKKyAgICAgICAgVGhyZWFkIGNhcmV0VGhyZWFkID0gbmV3IFRocmVhZCh0aGlzKTsKKyAgICAgICAgY2FyZXRUaHJlYWQuc2V0RGFlbW9uKHRydWUpOworICAgICAgICBjYXJldFRocmVhZC5zdGFydCgpOworICAgIH0KKworICAgIGJvb2xlYW4gZW5hYmxlZCgpIHsKKworICAgICAgICByZXR1cm4gZkVuYWJsZWQ7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNldEVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKSB7CisKKyAgICAgICAgZkVuYWJsZWQgPSBlbmFibGVkOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHRleHRDb250cm9sRXZlbnRPY2N1cnJlZChCZWhhdmlvci5FdmVudFR5cGUgZXZlbnQsIE9iamVjdCB3aGF0KSB7CisKKyAgICAgICAgYm9vbGVhbiByZXN1bHQ7CisgICAgICAgIGZIYW5kbGluZ0tleU9yQ29tbWFuZCA9IHRydWU7CisgICAgICAgIAorICAgICAgICBpZiAoZXZlbnQgPT0gQmVoYXZpb3IuU0VMRUNUKSB7CisgICAgICAgICAgICBzZWxlY3QoKFRleHRSYW5nZSkgd2hhdCk7CisgICAgICAgICAgICByZXN1bHQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGV2ZW50ID09IEJlaGF2aW9yLkNPUFkpIHsKKyAgICAgICAgICAgIGZUZXh0Q29tcG9uZW50LmdldENsaXBib2FyZCgpLnNldENvbnRlbnRzKGZUZXh0LmV4dHJhY3QoZlN0YXJ0LmZPZmZzZXQsIGZMaW1pdC5mT2Zmc2V0KSk7CisgICAgICAgICAgICBmTGlzdGVuZXIudGV4dFN0YXRlQ2hhbmdlZChUZXh0UGFuZWxFdmVudC5DTElQQk9BUkRfQ0hBTkdFRCk7CisgICAgICAgICAgICByZXN1bHQgPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZIYW5kbGluZ0tleU9yQ29tbWFuZCA9IGZhbHNlOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHByb3RlY3RlZCB2b2lkIGFkdmFuY2VUb05leHRCb3VuZGFyeShUZXh0T2Zmc2V0IG9mZnNldCkgeworICAgIAorICAgICAgICAvLyBJZiB0aGVyZSdzIG5vIGJvdW5kYXJpZXMgb2JqZWN0LCBvciBpZiBwb3NpdGlvbiBhdCB0aGUgZW5kIG9mIHRoZQorICAgICAgICAvLyBkb2N1bWVudCwgcmV0dXJuIHRoZSBvZmZzZXQgdW5jaGFuZ2VkCisgICAgICAgIGlmIChmQm91bmRhcmllcyA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludCBwb3NpdGlvbiA9IG9mZnNldC5mT2Zmc2V0OworICAgICAgICAKKyAgICAgICAgaWYgKHBvc2l0aW9uID49IGZUZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiBwb3NpdGlvbiBpcyBhdCBhIGJvdW5kYXJ5IGFuZCBvZmZzZXQgaXMgYmVmb3JlIHBvc2l0aW9uLAorICAgICAgICAvLyBsZWF2ZSBpdCB1bmNoYW5nZWQuICBPdGhlcndpc2UgbW92ZSB0byBuZXh0IGJvdW5kYXJ5LgorICAgICAgICBpbnQgbmV4dFBvcyA9IGZCb3VuZGFyaWVzLmZvbGxvd2luZyhwb3NpdGlvbik7CisgICAgICAgIGlmIChmQm91bmRhcmllcy5wcmV2aW91cygpID09IHBvc2l0aW9uICYmIAorICAgICAgICAgICAgICAgIG9mZnNldC5mUGxhY2VtZW50PT1vZmZzZXQuQkVGT1JFX09GRlNFVCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBvZmZzZXQuc2V0T2Zmc2V0KG5leHRQb3MsIFRleHRPZmZzZXQuQUZURVJfT0ZGU0VUKTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgdm9pZCBhZHZhbmNlVG9QcmV2aW91c0JvdW5kYXJ5KFRleHRPZmZzZXQgb2Zmc2V0KSB7CisgICAgCisgICAgICAgIGFkdmFuY2VUb1ByZXZpb3VzQm91bmRhcnkob2Zmc2V0LCBmYWxzZSk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBhZHZhbmNlVG9QcmV2aW91c0JvdW5kYXJ5KFRleHRPZmZzZXQgb2Zmc2V0LCBib29sZWFuIGFsd2F5c01vdmUpIHsKKyAgICAgICAgLy8gaWYgdGhlcmUncyBubyBib3VuZGFyaWVzIG9iamVjdCwgb3IgaWYgd2UncmUgc2l0dGluZyBhdCB0aGUgYmVnaW5uaW5nCisgICAgICAgIC8vIG9mIHRoZSBkb2N1bWVudCwgcmV0dXJuIHRoZSBvZmZzZXQgdW5jaGFuZ2VkCisgICAgICAgIGlmIChmQm91bmRhcmllcyA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludCBwb3NpdGlvbiA9IG9mZnNldC5mT2Zmc2V0OworCisgICAgICAgIGlmIChwb3NpdGlvbiA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIElmIHBvc2l0aW9uIGlzIGF0IGEgYm91bmRhcnksIGxlYXZlIGl0IHVuY2hhbmdlZC4gIE90aGVyd2lzZQorICAgICAgICAvLyBtb3ZlIHRvIHByZXZpb3VzIGJvdW5kYXJ5LgorICAgICAgICBpZiAocG9zaXRpb24gPT0gZlRleHQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGZCb3VuZGFyaWVzLmxhc3QoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZCb3VuZGFyaWVzLmZvbGxvd2luZyhwb3NpdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludCBwcmV2UG9zID0gZkJvdW5kYXJpZXMucHJldmlvdXMoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChwcmV2UG9zID09IHBvc2l0aW9uKSB7CisgICAgICAgICAgICBpZiAoIWFsd2F5c01vdmUgJiYgb2Zmc2V0LmZQbGFjZW1lbnQ9PW9mZnNldC5BRlRFUl9PRkZTRVQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHByZXZQb3MgPSBmQm91bmRhcmllcy5wcmV2aW91cygpOworICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgIC8vIGFuZCBmaW5hbGx5IHVwZGF0ZSB0aGUgcmVhbCBvZmZzZXQgd2l0aCB0aGlzIG5ldyBwb3NpdGlvbiB3ZSd2ZSBmb3VuZAorICAgICAgICBvZmZzZXQuc2V0T2Zmc2V0KHByZXZQb3MsIFRleHRPZmZzZXQuQUZURVJfT0ZGU0VUKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZG9BcnJvd0tleShLZXlFdmVudCBlLCBpbnQga2V5KSB7CisKKyAgICAgICAgLy8gd2hlbiB0aGVyZSdzIGEgc2VsZWN0aW9uIHJhbmdlLCB0aGUgbGVmdCBhbmQgdXAgYXJyb3cga2V5cyBwbGFjZSBhbgorICAgICAgICAvLyBpbnNlcnRpb24gcG9pbnQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcmFuZ2UsIGFuZCB0aGUgcmlnaHQgYW5kIGRvd24KKyAgICAgICAgLy8ga2V5cyBwbGFjZSBhbiBpbnNlcnRpb24gcG9pbnQgYXQgdGhlIGVuZCBvZiB0aGUgcmFuZ2UgKHVubGVzcyB0aGUgc2hpZnQKKyAgICAgICAgLy8ga2V5IGlzIGRvd24sIG9mIGNvdXJzZSkKKworICAgICAgICBpZiAoIWZTdGFydC5lcXVhbHMoZkxpbWl0KSAmJiAhZS5pc1NoaWZ0RG93bigpKSB7CisgICAgICAgICAgICBpZiAoa2V5ID09IEtleUV2ZW50LlZLX0xFRlQgfHwga2V5ID09IEtleUV2ZW50LlZLX1VQKQorICAgICAgICAgICAgICAgIHNldFNlbFJhbmdlQW5kRHJhdyhmU3RhcnQsIGZTdGFydCwgZlN0YXJ0KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZXRTZWxSYW5nZUFuZERyYXcoZkxpbWl0LCBmTGltaXQsIGZMaW1pdCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoIWZBbmNob3IuZXF1YWxzKGZTdGFydCkpCisgICAgICAgICAgICAgICAgZkFuY2hvci5hc3NpZ24oZkxpbWl0KTsKKworICAgICAgICAgICAgVGV4dE9mZnNldCAgbGl2ZUVuZCA9IChmU3RhcnQuZXF1YWxzKGZBbmNob3IpKSA/IGZMaW1pdCA6IGZTdGFydDsKKyAgICAgICAgICAgIFRleHRPZmZzZXQgIG5ld1BvcyA9IG5ldyBUZXh0T2Zmc2V0KCk7CisKKyAgICAgICAgICAgIC8vIGlmIHRoZSBjb250cm9sIGtleSBpcyBkb3duLCB0aGUgbGVmdCBhbmQgcmlnaHQgYXJyb3cga2V5cyBtb3ZlIGJ5IHdob2xlCisgICAgICAgICAgICAvLyB3b3JkIGluIHRoZSBhcHByb3ByaWF0ZSBkaXJlY3Rpb24gKHdlIHVzZSBhIGxpbmUgYnJlYWsgb2JqZWN0IHNvIHRoYXQgd2UncmUKKyAgICAgICAgICAgIC8vIG5vdCB0cmVhdGluZyBzcGFjZXMgYW5kIHB1bmN0dWF0aW9uIGFzIHdvcmRzKQorICAgICAgICAgICAgaWYgKGUuaXNDb250cm9sRG93bigpICYmIChrZXkgPT0gS2V5RXZlbnQuVktfTEVGVCB8fCBrZXkgPT0gS2V5RXZlbnQuVktfUklHSFQpKSB7CisgICAgICAgICAgICAgICAgZlVwRG93bkFuY2hvciA9IG51bGw7CisgICAgICAgICAgICAgICAgZkJvdW5kYXJpZXMgPSBCcmVha0l0ZXJhdG9yLmdldExpbmVJbnN0YW5jZSgpOworICAgICAgICAgICAgICAgIGZCb3VuZGFyaWVzLnNldFRleHQoZlRleHQuY3JlYXRlQ2hhcmFjdGVySXRlcmF0b3IoKSk7CisKKyAgICAgICAgICAgICAgICBuZXdQb3MuYXNzaWduKGxpdmVFbmQpOworICAgICAgICAgICAgICAgIGlmIChrZXkgPT0gS2V5RXZlbnQuVktfUklHSFQpCisgICAgICAgICAgICAgICAgICAgIGFkdmFuY2VUb05leHRCb3VuZGFyeShuZXdQb3MpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgYWR2YW5jZVRvUHJldmlvdXNCb3VuZGFyeShuZXdQb3MsIHRydWUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBpZiB3ZSBnZXQgZG93biB0byBoZXJlLCB0aGlzIGlzIGEgcGxhaW4tdmFuaWxsYSBpbnNlcnRpb24tcG9pbnQgbW92ZSwKKyAgICAgICAgICAgIC8vIG9yIHRoZSBzaGlmdCBrZXkgaXMgZG93biBhbmQgd2UncmUgZXh0ZW5kaW5nIG9yIHNob3J0ZW5pbmcgdGhlIHNlbGVjdGlvbgorICAgICAgICAgICAgZWxzZSB7CisKKyAgICAgICAgICAgICAgICAvLyBmVXBEb3duQW5jaG9yIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiB0aGUgaG9yaXpvbnRhbCBwb3NpdGlvbgorICAgICAgICAgICAgICAgIC8vIGFjcm9zcyBhIHJ1biBvZiB1cCBvciBkb3duIGFycm93IGtleXMgKHRoaXMgcHJldmVudHMgYWNjdW11bGF0ZWQKKyAgICAgICAgICAgICAgICAvLyBlcnJvciBmcm9tIGRlc3Ryb3lpbmcgb3VyIGhvcml6b250YWwgcG9zaXRpb24pCisgICAgICAgICAgICAgICAgaWYgKGtleSA9PSBLZXlFdmVudC5WS19MRUZUIHx8IGtleSA9PSBLZXlFdmVudC5WS19SSUdIVCkKKyAgICAgICAgICAgICAgICAgICAgZlVwRG93bkFuY2hvciA9IG51bGw7CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChmVXBEb3duQW5jaG9yID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZVcERvd25BbmNob3IgPSBuZXcgVGV4dE9mZnNldChsaXZlRW5kKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHNob3J0ICAgZGlyZWN0aW9uID0gTUZvcm1hdHRlci5lUmlnaHQ7ICAvLyBqdXN0IHRvIGhhdmUgYSBkZWZhdWx0Li4uCisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGtleSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIEtleUV2ZW50LlZLX1VQOiBkaXJlY3Rpb24gPSBNRm9ybWF0dGVyLmVVcDsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuVktfRE9XTjogZGlyZWN0aW9uID0gTUZvcm1hdHRlci5lRG93bjsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuVktfTEVGVDogZGlyZWN0aW9uID0gTUZvcm1hdHRlci5lTGVmdDsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuVktfUklHSFQ6IGRpcmVjdGlvbiA9IE1Gb3JtYXR0ZXIuZVJpZ2h0OyBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyB1c2UgdGhlIGZvcm1hdHRlciB0byBkZXRlcm1pbmUgdGhlIGFjdHVhbCBlZmZlY3Qgb2YgdGhlIGFycm93IGtleQorICAgICAgICAgICAgICAgIGZUZXh0Q29tcG9uZW50LmZpbmROZXdJbnNlcnRpb25PZmZzZXQobmV3UG9zLCBmVXBEb3duQW5jaG9yLCBsaXZlRW5kLCBkaXJlY3Rpb24pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBpZiB0aGUgc2hpZnQga2V5IGlzIGRvd24sIHRoZSBzZWxlY3Rpb24gcmFuZ2UgaXMgZnJvbSB0aGUgYW5jaG9yIHBvaW50CisgICAgICAgICAgICAvLyB0aGUgc2l0ZSBvZiB0aGUgbGFzdCBpbnNlcnRpb24gcG9pbnQgb3IgdGhlIGJlZ2lubmluZyBwb2ludCBvZiB0aGUgbGFzdAorICAgICAgICAgICAgLy8gc2VsZWN0aW9uIGRyYWcgb3BlcmF0aW9uKSB0byB0aGUgbmV3bHktY2FsY3VsYXRlZCBwb3NpdGlvbjsgaWYgdGhlCisgICAgICAgICAgICAvLyBzaGlmdCBrZXkgaXMgZG93biwgdGhlIG5ld2x5LWNhbGN1bGF0ZWQgcG9zaXRpb24gaXMgdGhlIGluc2VydGlvbiBwb2ludCBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKCFlLmlzU2hpZnREb3duKCkpCisgICAgICAgICAgICAgICAgc2V0U2VsUmFuZ2VBbmREcmF3KG5ld1BvcywgbmV3UG9zLCBuZXdQb3MpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKG5ld1Bvcy5sZXNzVGhhbihmQW5jaG9yKSkKKyAgICAgICAgICAgICAgICAgICAgc2V0U2VsUmFuZ2VBbmREcmF3KG5ld1BvcywgZkFuY2hvciwgZkFuY2hvcik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzZXRTZWxSYW5nZUFuZERyYXcoZkFuY2hvciwgbmV3UG9zLCBmQW5jaG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHNjcm9sbFRvU2hvd1NlbGVjdGlvbkVuZCgpOworICAgICAgICBmQm91bmRhcmllcyA9IG51bGw7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGRvRW5kS2V5KEtleUV2ZW50IGUpIHsKKyAgICAgICAgLy8gY3RybC1lbmQgbW92ZXMgdGhlIGluc2VydHNpb24gcG9pbnQgdG8gdGhlIGVuZCBvZiB0aGUgZG9jdW1lbnQsCisgICAgICAgIC8vIGN0cmwtc2hpZnQtZW5kIGV4dGVuZHMgdGhlIHNlbGVjdGlvbiBzbyB0aGF0IGl0IGVuZHMgYXQgdGhlIGVuZAorICAgICAgICAvLyBvZiB0aGUgZG9jdW1lbnQKKworICAgICAgICBUZXh0T2Zmc2V0IGFjdGl2ZUVuZCwgYW5jaG9yOworCisgICAgICAgIGlmIChmQW5jaG9yLmVxdWFscyhmU3RhcnQpKSB7CisgICAgICAgICAgICBhY3RpdmVFbmQgPSBuZXcgVGV4dE9mZnNldChmU3RhcnQpOworICAgICAgICAgICAgYW5jaG9yID0gbmV3IFRleHRPZmZzZXQoZkxpbWl0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFjdGl2ZUVuZCA9IG5ldyBUZXh0T2Zmc2V0KGZMaW1pdCk7CisgICAgICAgICAgICBhbmNob3IgPSBuZXcgVGV4dE9mZnNldChmU3RhcnQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGUuaXNDb250cm9sRG93bigpKSB7CisgICAgICAgICAgICBUZXh0T2Zmc2V0IGVuZCA9IG5ldyBUZXh0T2Zmc2V0KGZUZXh0Lmxlbmd0aCgpLCBUZXh0T2Zmc2V0LkJFRk9SRV9PRkZTRVQpOworCisgICAgICAgICAgICBpZiAoZS5pc1NoaWZ0RG93bigpKQorICAgICAgICAgICAgICAgIHNldFNlbFJhbmdlQW5kRHJhdyhhbmNob3IsIGVuZCwgYW5jaG9yKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzZXRTZWxSYW5nZUFuZERyYXcoZW5kLCBlbmQsIGVuZCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBlbmQgbW92ZXMgdGhlIGluc2VydGlvbiBwb2ludCB0byB0aGUgZW5kIG9mIHRoZSBsaW5lIGNvbnRhaW5pbmcKKyAgICAgICAgLy8gdGhlIGVuZCBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24KKyAgICAgICAgLy8gc2hpZnQtZW5kIGV4dGVuZHMgdGhlIHNlbGVjdGlvbiB0byB0aGUgZW5kIG9mIHRoZSBsaW5lIGNvbnRhaW5pbmcKKyAgICAgICAgLy8gdGhlIGVuZCBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24KKworICAgICAgICBlbHNlIHsKKworICAgICAgICAgICAgaW50IG9sZE9mZnNldCA9IGFjdGl2ZUVuZC5mT2Zmc2V0OworCisgICAgICAgICAgICBhY3RpdmVFbmQuZk9mZnNldCA9IGZUZXh0Q29tcG9uZW50LmxpbmVSYW5nZUxpbWl0KGZUZXh0Q29tcG9uZW50LmxpbmVDb250YWluaW5nKGFjdGl2ZUVuZCkpOworICAgICAgICAgICAgYWN0aXZlRW5kLmZQbGFjZW1lbnQgPSBUZXh0T2Zmc2V0LkJFRk9SRV9PRkZTRVQ7CisKKyAgICAgICAgICAgIGlmIChmVGV4dC5wYXJhZ3JhcGhMaW1pdChvbGRPZmZzZXQpID09IGFjdGl2ZUVuZC5mT2Zmc2V0ICYmCisgICAgICAgICAgICAgICAgICAgIGFjdGl2ZUVuZC5mT2Zmc2V0ICE9IGZUZXh0Lmxlbmd0aCgpICYmIGFjdGl2ZUVuZC5mT2Zmc2V0ID4gb2xkT2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgYWN0aXZlRW5kLmZPZmZzZXQtLTsKKyAgICAgICAgICAgICAgICBhY3RpdmVFbmQuZlBsYWNlbWVudCA9IFRleHRPZmZzZXQuQUZURVJfT0ZGU0VUOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWUuaXNTaGlmdERvd24oKSkKKyAgICAgICAgICAgICAgICBzZXRTZWxSYW5nZUFuZERyYXcoYWN0aXZlRW5kLCBhY3RpdmVFbmQsIGFjdGl2ZUVuZCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoYWN0aXZlRW5kLmxlc3NUaGFuKGFuY2hvcikpCisgICAgICAgICAgICAgICAgICAgIHNldFNlbFJhbmdlQW5kRHJhdyhhY3RpdmVFbmQsIGFuY2hvciwgYW5jaG9yKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHNldFNlbFJhbmdlQW5kRHJhdyhhbmNob3IsIGFjdGl2ZUVuZCwgYW5jaG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHNjcm9sbFRvU2hvd1NlbGVjdGlvbkVuZCgpOworICAgICAgICBmQm91bmRhcmllcyA9IG51bGw7CisgICAgICAgIGZVcERvd25BbmNob3IgPSBudWxsOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBkb0hvbWVLZXkoS2V5RXZlbnQgZSkgeworICAgICAgICAvLyBjdHJsLWhvbWUgbW92ZXMgdGhlIGluc2VydGlvbiBwb2ludCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkb2N1bWVudCwKKyAgICAgICAgLy8gY3RybC1zaGlmdC1ob21lIGV4dGVuZHMgdGhlIHNlbGVjdGlvbiBzbyB0aGF0IGl0IGJlZ2lucyBhdCB0aGUgYmVnaW5uaW5nCisgICAgICAgIC8vIG9mIHRoZSBkb2N1bWVudAorCisgICAgICAgIFRleHRPZmZzZXQgYWN0aXZlRW5kLCBhbmNob3I7CisKKyAgICAgICAgaWYgKGZBbmNob3IuZXF1YWxzKGZTdGFydCkpIHsKKyAgICAgICAgICAgIGFjdGl2ZUVuZCA9IG5ldyBUZXh0T2Zmc2V0KGZTdGFydCk7CisgICAgICAgICAgICBhbmNob3IgPSBuZXcgVGV4dE9mZnNldChmTGltaXQpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYWN0aXZlRW5kID0gbmV3IFRleHRPZmZzZXQoZkxpbWl0KTsKKyAgICAgICAgICAgIGFuY2hvciA9IG5ldyBUZXh0T2Zmc2V0KGZTdGFydCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZS5pc0NvbnRyb2xEb3duKCkpIHsKKworICAgICAgICAgICAgVGV4dE9mZnNldCBzdGFydCA9IG5ldyBUZXh0T2Zmc2V0KDAsIFRleHRPZmZzZXQuQUZURVJfT0ZGU0VUKTsKKyAgICAgICAgICAgIGlmIChlLmlzU2hpZnREb3duKCkpCisgICAgICAgICAgICAgICAgc2V0U2VsUmFuZ2VBbmREcmF3KHN0YXJ0LCBhbmNob3IsIGFuY2hvcik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgc2V0U2VsUmFuZ2VBbmREcmF3KHN0YXJ0LCBzdGFydCwgc3RhcnQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gaG9tZSBtb3ZlcyB0aGUgaW5zZXJ0aW9uIHBvaW50IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUgY29udGFpbmluZworICAgICAgICAvLyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjdXJyZW50IHNlbGVjdGlvbgorICAgICAgICAvLyBzaGlmdC1ob21lIGV4dGVuZHMgdGhlIHNlbGVjdGlvbiB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBsaW5lIGNvbnRhaW5pbmcKKyAgICAgICAgLy8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24KKworICAgICAgICBlbHNlIHsKKworICAgICAgICAgICAgYWN0aXZlRW5kLmZPZmZzZXQgPSBmVGV4dENvbXBvbmVudC5saW5lUmFuZ2VMb3coZlRleHRDb21wb25lbnQubGluZUNvbnRhaW5pbmcoYWN0aXZlRW5kKSk7CisgICAgICAgICAgICBhY3RpdmVFbmQuZlBsYWNlbWVudCA9IFRleHRPZmZzZXQuQUZURVJfT0ZGU0VUOworCisgICAgICAgICAgICBpZiAoIWUuaXNTaGlmdERvd24oKSkKKyAgICAgICAgICAgICAgICBzZXRTZWxSYW5nZUFuZERyYXcoYWN0aXZlRW5kLCBhY3RpdmVFbmQsIGFjdGl2ZUVuZCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoYWN0aXZlRW5kLmxlc3NUaGFuKGFuY2hvcikpCisgICAgICAgICAgICAgICAgICAgIHNldFNlbFJhbmdlQW5kRHJhdyhhY3RpdmVFbmQsIGFuY2hvciwgYW5jaG9yKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHNldFNlbFJhbmdlQW5kRHJhdyhhbmNob3IsIGFjdGl2ZUVuZCwgYW5jaG9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHNjcm9sbFRvU2hvd1NlbGVjdGlvbkVuZCgpOworICAgICAgICBmQm91bmRhcmllcyA9IG51bGw7CisgICAgICAgIGZVcERvd25BbmNob3IgPSBudWxsOworICAgIH0KKworICAgIC8qKiBkcmF3cyBvciBlcmFzZXMgdGhlIGN1cnJlbnQgc2VsZWN0aW9uCisgICAgKiBEcmF3cyBvciBlcmFzZXMgdGhlIGhpZ2hsaWdodCByZWdpb24gb3IgaW5zZXJ0aW9uIGNhcmV0IGZvciB0aGUgY3VycmVudCBzZWxlY3Rpb24KKyAgICAqIHJhbmdlLgorICAgICogQHBhcmFtIGcgVGhlIGdyYXBoaWNzIGVudmlyb25tZW50IHRvIGRyYXcgaW50bworICAgICogQHBhcmFtIHZpc2libGUgSWYgdHJ1ZSwgZHJhdyB0aGUgc2VsZWN0aW9uOyBpZiBmYWxzZSwgZXJhc2UgaXQKKyAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIGRyYXdTZWxlY3Rpb24oR3JhcGhpY3MgZywgYm9vbGVhbiB2aXNpYmxlKSB7CisgICAgICAgIGRyYXdTZWxlY3Rpb25SYW5nZShnLCBmU3RhcnQsIGZMaW1pdCwgdmlzaWJsZSk7CisgICAgfQorCisgICAgLyoqIGRyYXdzIG9yIGVyYXNlcyBhIHNlbGVjdGlvbiBoaWdobGlnaHQgYXQgdGhlIHNwZWNmaWVkIHBvc2l0aW9ucworICAgICogRHJhd3Mgb3IgZXJhc2VzIGEgc2VsZWN0aW9uIGhpZ2hsaWdodCBvciBpbnNlcnRpb24gY2FyZXQgY29ycmVzcG9uZGluZyB0bworICAgICogdGhlIHNwZWNpZmllZCBzZWxlY2lvbiByYW5nZQorICAgICogQHBhcmFtIGcgVGhlIGdyYXBoaWNzIGVudmlyb25tZW50IHRvIGRyYXcgaW50by4gIElmIG51bGwsIHRoaXMgbWV0aG9kIGRvZXMgbm90aGluZy4KKyAgICAqIEBwYXJhbSBzdGFydCBUaGUgYmVnaW5uaW5nIG9mIHRoZSByYW5nZSB0byBoaWdobGlnaHQKKyAgICAqIEBwYXJhbSBsaW1pdCBUaGUgZW5kIG9mIHRoZSByYW5nZSB0byBoaWdobGlnaHQKKyAgICAqIEBwYXJhbSB2c2libGUgSWYgdHJ1ZSwgZHJhdzsgaWYgZmFsc2UsIGVyYXNlCisgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBkcmF3U2VsZWN0aW9uUmFuZ2UoICBHcmFwaGljcyAgICBnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgIHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgIGxpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gICAgIHZpc2libGUpIHsKKyAgICAgICAgaWYgKGcgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIFJlY3RhbmdsZSAgIHNlbEJvdW5kcyA9IGZUZXh0Q29tcG9uZW50LmdldEJvdW5kaW5nUmVjdChzdGFydCwgbGltaXQpOworCisgICAgICAgIHNlbEJvdW5kcy53aWR0aCA9IE1hdGgubWF4KDEsIHNlbEJvdW5kcy53aWR0aCk7CisgICAgICAgIHNlbEJvdW5kcy5oZWlnaHQgPSBNYXRoLm1heCgxLCBzZWxCb3VuZHMuaGVpZ2h0KTsKKworICAgICAgICBmVGV4dENvbXBvbmVudC5kcmF3VGV4dChnLCBzZWxCb3VuZHMsIHZpc2libGUsIHN0YXJ0LCBsaW1pdCwgZkhpZ2hsaWdodENvbG9yKTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgVGV4dE9mZnNldCBnZXRBbmNob3IoKSB7CisgICAgICAgIHJldHVybiBmQW5jaG9yOworICAgIH0KKworICAgIHB1YmxpYyBUZXh0T2Zmc2V0IGdldEVuZCgpIHsKKyAgICAgICAgcmV0dXJuIGZMaW1pdDsKKyAgICB9CisKKyAgICBwdWJsaWMgQ29sb3IgZ2V0SGlnaGxpZ2h0Q29sb3IoKSB7CisgICAgICAgIHJldHVybiBmSGlnaGxpZ2h0Q29sb3I7CisgICAgfQorCisgICAgcHVibGljIFRleHRPZmZzZXQgZ2V0U3RhcnQoKSB7CisgICAgICAgIHJldHVybiBmU3RhcnQ7CisgICAgfQorCisgICAgcHVibGljIFRleHRSYW5nZSBnZXRTZWxlY3Rpb25SYW5nZSgpIHsKKworICAgICAgICByZXR1cm4gbmV3IFRleHRSYW5nZShmU3RhcnQuZk9mZnNldCwgZkxpbWl0LmZPZmZzZXQpOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGZvY3VzR2FpbmVkKEZvY3VzRXZlbnQgZSkgeworCisgICAgICAgIHNldEVuYWJsZWQodHJ1ZSk7CisgICAgICAgIGRyYXdTZWxlY3Rpb24oZlRleHRDb21wb25lbnQuZ2V0R3JhcGhpY3MoKSwgdHJ1ZSk7CisKKyAgICAgICAgcmVzdGFydENhcmV0QmxpbmtpbmcodHJ1ZSk7CisgICAgICAgIGlmIChmUGVuZGluZ01vdXNlRXZlbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgbW91c2VQcmVzc2VkKGZQZW5kaW5nTW91c2VFdmVudCk7CisgICAgICAgICAgICBmUGVuZGluZ01vdXNlRXZlbnQgPSBudWxsOworICAgICAgICB9CisgICAgICAgIGZMaXN0ZW5lci50ZXh0U3RhdGVDaGFuZ2VkKFRleHRQYW5lbEV2ZW50LkNMSVBCT0FSRF9DSEFOR0VEKTsKKyAKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZm9jdXNMb3N0KEZvY3VzRXZlbnQgZSkgeworICAgICAgICBzdG9wQ2FyZXRCbGlua2luZygpOworICAgICAgICBzZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgZHJhd1NlbGVjdGlvbihmVGV4dENvbXBvbmVudC5nZXRHcmFwaGljcygpLCBmYWxzZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBrZXkgZXZlbnQgY2FuIGFmZmVjdCB0aGUgc2VsZWN0aW9uCisgICAgICogcmFuZ2UuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGtleUFmZmVjdHNTZWxlY3Rpb24oS2V5RXZlbnQgZSkgeworCisgICAgICAgIGlmIChlLmdldElEKCkgIT0gZS5LRVlfUFJFU1NFRCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaW50IGtleSA9IGUuZ2V0S2V5Q29kZSgpOworCisgICAgICAgIHN3aXRjaCAoa2V5KSB7CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LlZLX0hPTUU6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LlZLX0VORDoKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuVktfTEVGVDoKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuVktfUklHSFQ6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LlZLX1VQOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5WS19ET1dOOgorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGtleVByZXNzZWQoS2V5RXZlbnQgZSkgeworCisgICAgICAgIGZIYW5kbGluZ0tleU9yQ29tbWFuZCA9IHRydWU7CisgICAgICAgIGludCBrZXkgPSBlLmdldEtleUNvZGUoKTsKKyAgICAgICAgYm9vbGVhbiByZXN1bHQgPSB0cnVlOworICAgICAgICAKKyAgICAgICAgc3dpdGNoIChrZXkpIHsKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuVktfSE9NRToKKyAgICAgICAgICAgICAgICBkb0hvbWVLZXkoZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LlZLX0VORDoKKyAgICAgICAgICAgICAgICBkb0VuZEtleShlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5WS19MRUZUOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5WS19SSUdIVDoKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuVktfVVA6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LlZLX0RPV046CisgICAgICAgICAgICAgICAgZG9BcnJvd0tleShlLCBrZXkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBmVXBEb3duQW5jaG9yID0gbnVsbDsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZkhhbmRsaW5nS2V5T3JDb21tYW5kID0gZmFsc2U7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gbW91c2VQcmVzc2VkKE1vdXNlRXZlbnQgZSkgeworCisgICAgICAgIGlmICghZW5hYmxlZCgpKSB7CisgICAgICAgICAgICBmUGVuZGluZ01vdXNlRXZlbnQgPSBlOworICAgICAgICAgICAgZlRleHRDb21wb25lbnQucmVxdWVzdEZvY3VzKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZk1vdXNlRG93bikKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiZk1vdXNlRG93biBpcyBvdXQgb2Ygc3luYyB3aXRoIG1vdXNlIGluIFRleHRTZWxlY3Rpb24uIik7CisKKyAgICAgICAgZk1vdXNlRG93biA9IHRydWU7CisgICAgICAgIHN0b3BDYXJldEJsaW5raW5nKCk7CisKKyAgICAgICAgaW50IHggPSBlLmdldFgoKSwgeSA9IGUuZ2V0WSgpOworICAgICAgICBib29sZWFuIHdhc1plcm9MZW5ndGggPSByYW5nZUlzWmVyb0xlbmd0aChmU3RhcnQsIGZMaW1pdCwgZkFuY2hvcik7CisgICAgICAgIAorICAgICAgICBUZXh0T2Zmc2V0IGN1cnJlbnQgPSBmVGV4dENvbXBvbmVudC5wb2ludFRvVGV4dE9mZnNldChudWxsLCB4LCB5LCBudWxsLCB0cnVlKTsKKyAgICAgICAgVGV4dE9mZnNldCBhbmNob3JTdGFydCA9IG5ldyBUZXh0T2Zmc2V0KCk7CisgICAgICAgIFRleHRPZmZzZXQgYW5jaG9yRW5kID0gbmV3IFRleHRPZmZzZXQoKTsKKworICAgICAgICBmVXBEb3duQW5jaG9yID0gbnVsbDsKKworICAgICAgICAvLyBpZiB3ZSdyZSBub3QgZXh0ZW5kaW5nIHRoZSBzZWxlY3Rpb24uLi4KKyAgICAgICAgaWYgKCFlLmlzU2hpZnREb3duKCkpIHsKKworICAgICAgICAgICAgLy8gaWYgdGhlcmUgYXJlIG11bHRpcGxlIGNsaWNrcywgY3JlYXRlIHRoZSBhcHBvcHJpYXRlIHR5cGUgb2YgQnJlYWtJdGVyYXRvcgorICAgICAgICAgICAgLy8gb2JqZWN0IGZvciBmaW5kaW5nIHRleHQgYm91bmRhcmllcyAoc2luZ2xlIGNsaWNrcyBkb24ndCB1c2UgYSBCcmVha0l0ZXJhdG9yCisgICAgICAgICAgICAvLyBvYmplY3QpCisgICAgICAgICAgICBpZiAoZS5nZXRDbGlja0NvdW50KCkgPT0gMikKKyAgICAgICAgICAgICAgICBmQm91bmRhcmllcyA9IEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKCk7CisgICAgICAgICAgICBlbHNlIGlmIChlLmdldENsaWNrQ291bnQoKSA9PSAzKQorICAgICAgICAgICAgICAgIGZCb3VuZGFyaWVzID0gQnJlYWtJdGVyYXRvci5nZXRTZW50ZW5jZUluc3RhbmNlKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZkJvdW5kYXJpZXMgPSBudWxsOworCisgICAgICAgICAgICAvLyBpZiB3ZSdyZSB1c2luZyBhIEJyZWFrSXRlcmF0b3Igb2JqZWN0LCB1c2UgaXQgdG8gZmluZCB0aGUgbmVhcmVzdCBib3VuZGFyaWVzCisgICAgICAgICAgICAvLyBvbiBlaXRoZXIgc2lkZSBvZiB0aGUgbW91c2UtY2xpY2sgcG9zaXRpb24gYW5kIG1ha2UgdGhlbSBvdXIgYW5jaG9yIHJhbmdlCisgICAgICAgICAgICBpZiAoZkJvdW5kYXJpZXMgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICBmQm91bmRhcmllcy5zZXRUZXh0KGZUZXh0LmNyZWF0ZUNoYXJhY3Rlckl0ZXJhdG9yKCkpOworCisgICAgICAgICAgICBhbmNob3JTdGFydC5hc3NpZ24oY3VycmVudCk7CisgICAgICAgICAgICBhZHZhbmNlVG9QcmV2aW91c0JvdW5kYXJ5KGFuY2hvclN0YXJ0KTsKKyAgICAgICAgICAgIGFuY2hvckVuZC5hc3NpZ24oY3VycmVudCk7CisgICAgICAgICAgICBhZHZhbmNlVG9OZXh0Qm91bmRhcnkoYW5jaG9yRW5kKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGlmIHdlIF9hcmVfIGV4dGVuZGluZyB0aGUgc2VsZWN0aW9uLCBkZXRlcm1pbmUgb3VyIGFuY2hvciByYW5nZSBhcyBmb2xsb3dzOgorICAgICAgICAvLyBmQW5jaG9yIGlzIHRoZSBzdGFydCBvZiB0aGUgYW5jaG9yIHJhbmdlOworICAgICAgICAvLyB0aGUgbmV4dCBib3VuZGFyeSAoYWZ0ZXIgZkFuY2hvcikgaXMgdGhlIGxpbWl0IG9mIHRoZSBhbmNob3IgcmFuZ2UuCisKKyAgICAgICAgZWxzZSB7CisKKyAgICAgICAgICAgIGlmIChmQm91bmRhcmllcyAhPSBudWxsKQorICAgICAgICAgICAgICAgIGZCb3VuZGFyaWVzLnNldFRleHQoZlRleHQuY3JlYXRlQ2hhcmFjdGVySXRlcmF0b3IoKSk7CisKKyAgICAgICAgICAgIGFuY2hvclN0YXJ0LmFzc2lnbihmQW5jaG9yKTsKKyAgICAgICAgICAgIGFuY2hvckVuZC5hc3NpZ24oYW5jaG9yU3RhcnQpOworCisgICAgICAgICAgICBhZHZhbmNlVG9OZXh0Qm91bmRhcnkoYW5jaG9yRW5kKTsKKyAgICAgICAgfQorCisgICAgICAgIFNlbGVjdGlvbkRyYWdJbnRlcmFjdG9yIGludGVyYWN0b3IgPSBuZXcgU2VsZWN0aW9uRHJhZ0ludGVyYWN0b3IodGhpcywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlRleHRDb21wb25lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlJ1blN0cmF0ZWd5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvclN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuY2hvckVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YXNaZXJvTGVuZ3RoKTsKKworICAgICAgICBpbnRlcmFjdG9yLmFkZFRvT3duZXIoZlRleHRDb21wb25lbnQpOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1vdXNlUmVsZWFzZWQoTW91c2VFdmVudCBlKSB7CisKKyAgICAgICAgZlBlbmRpbmdNb3VzZUV2ZW50ID0gbnVsbDsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIGRyYWcgaW50ZXJhY3RvciBjYWxscyB0aGlzCisgICAgdm9pZCBtb3VzZVJlbGVhc2VkKGJvb2xlYW4gemVyb0xlbmd0aENoYW5nZSkgeworCisgICAgICAgIGZNb3VzZURvd24gPSBmYWxzZTsKKworICAgICAgICBpZiAoemVyb0xlbmd0aENoYW5nZSkgeworICAgICAgICAgICAgZkxpc3RlbmVyLnRleHRTdGF0ZUNoYW5nZWQoVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX0VNUFRZX0NIQU5HRUQpOworICAgICAgICB9CisgICAgICAgIGZMaXN0ZW5lci50ZXh0U3RhdGVDaGFuZ2VkKFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9SQU5HRV9DSEFOR0VEKTsKKyAgICAgICAgZkxpc3RlbmVyLnRleHRTdGF0ZUNoYW5nZWQoVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX1NUWUxFU19DSEFOR0VEKTsKKworICAgICAgICAvLyBpZiBjYXJldCBkcmF3aW5nIGR1cmluZyBtb3VzZSBkcmFncyBpcyBzdXByZXNzZWQsIGRyYXcgY2FyZXQgbm93LgorCisgICAgICAgIHJlc3RhcnRDYXJldEJsaW5raW5nKHRydWUpOworICAgIH0KKworCisgICAgLyoqIGRyYXdzIHRoZSBzZWxlY3Rpb24KKyAgICAqIFByb3ZpZGVkLCBvZiBjb3Vyc2UsIHRoYXQgdGhlIHNlbGVjdGlvbiBpcyB2aXNpYmxlLCB0aGUgYWRvcm5lciBpcyBlbmFibGVkLAorICAgICogYW5kIHdlJ3JlIGNhbGxpbmcgaXQgdG8gYWRvcm4gdGhlIHZpZXcgaXQgYWN0dWFsbHkgYmVsb25ncyB0bworICAgICogQHBhcmFtIGcgVGhlIGdyYXBoaWNzIGVudmlyb25tZW50IHRvIGRyYXcgaW50bworICAgICogQHJldHVybiB0cnVlIGlmIHdlIGFjdHVhbGx5IGRyZXcKKyAgICAqLworICAgIHB1YmxpYyBib29sZWFuIHBhaW50KEdyYXBoaWNzIGcsIFJlY3RhbmdsZSBkcmF3UmVjdCkgeworICAgICAgICAvLyBkb24ndCBkcmF3IGFueXRoaW5nIHVubGVzcyB3ZSdyZSBlbmFibGVkIGFuZCB0aGUgc2VsZWN0aW9uIGlzIHZpc2libGUKKyAgICAgICAgaWYgKCFlbmFibGVkKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgZlRleHRDb21wb25lbnQuZHJhd1RleHQoZywgZHJhd1JlY3QsIHRydWUsIGZTdGFydCwgZkxpbWl0LCBmSGlnaGxpZ2h0Q29sb3IpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKiogc2Nyb2xscyB0aGUgdmlldyB0byByZXZlYWwgdGhlIGxpdmUgZW5kIG9mIHRoZSBzZWxlY3Rpb24KKyAgICAqIChpLmUuLCB0aGUgZW5kIHRoYXQgbW92ZXMgaWYgeW91IHVzZSB0aGUgYXJyb3cga2V5cyB3aXRoIHRoZSBzaGlmdCBrZXkgZG93bikKKyAgICAqLworICAgIHB1YmxpYyB2b2lkIHNjcm9sbFRvU2hvd1NlbGVjdGlvbigpIHsKKyAgICAgICAgUmVjdGFuZ2xlICAgc2VsUmVjdCA9IGZUZXh0Q29tcG9uZW50LmdldEJvdW5kaW5nUmVjdChmU3RhcnQsIGZMaW1pdCk7CisKKyAgICAgICAgZlRleHRDb21wb25lbnQuc2Nyb2xsVG9TaG93KHNlbFJlY3QpOworICAgIH0KKworICAgIC8qKiBzY3JvbGxzIHRoZSB2aWV3IHRvIHJldmVhbCB0aGUgbGl2ZSBlbmQgb2YgdGhlIHNlbGVjdGlvbgorICAgICogKGkuZS4sIHRoZSBlbmQgdGhhdCBtb3ZlcyBpZiB5b3UgdXNlIHRoZSBhcnJvdyBrZXlzIHdpdGggdGhlIHNoaWZ0IGtleSBkb3duKQorICAgICovCisgICAgcHVibGljIHZvaWQgc2Nyb2xsVG9TaG93U2VsZWN0aW9uRW5kKCkgeworICAgICAgICBUZXh0T2Zmc2V0ICBsaXZlRW5kOworICAgICAgICBQb2ludFtdICAgICBwb2ludHM7CisgICAgICAgIFJlY3RhbmdsZSAgIGNhcmV0OworCisgICAgICAgIGlmIChmQW5jaG9yLmVxdWFscyhmU3RhcnQpKQorICAgICAgICAgICAgbGl2ZUVuZCA9IGZMaW1pdDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGl2ZUVuZCA9IGZTdGFydDsKKworICAgICAgICAvL3BvaW50cyA9IGZUZXh0Q29tcG9uZW50LnRleHRPZmZzZXRUb1BvaW50KGxpdmVFbmQpOworICAgICAgICAvL2NhcmV0ID0gbmV3IFJlY3RhbmdsZShwb2ludHNbMF0pOworICAgICAgICAvL2NhcmV0ID0gY2FyZXQudW5pb24obmV3IFJlY3RhbmdsZShwb2ludHNbMV0pKTsKKyAgICAgICAgY2FyZXQgPSBmVGV4dENvbXBvbmVudC5nZXRDYXJldFJlY3QobGl2ZUVuZCk7CisgICAgICAgIGZUZXh0Q29tcG9uZW50LnNjcm9sbFRvU2hvdyhjYXJldCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNlbGVjdChUZXh0UmFuZ2UgcmFuZ2UpIHsKKyAgICAgICAgaW50IHRleHRMZW5ndGggPSBmVGV4dENvbXBvbmVudC5nZXRUZXh0KCkubGVuZ3RoKCk7CisKKyAgICAgICAgVGV4dE9mZnNldCBzdGFydCA9IG5ldyBUZXh0T2Zmc2V0KHJhbmdlLnN0YXJ0KTsKKworICAgICAgICBzdG9wQ2FyZXRCbGlua2luZygpOworICAgICAgICBzZXRTZWxSYW5nZUFuZERyYXcoc3RhcnQsIG5ldyBUZXh0T2Zmc2V0KHJhbmdlLmxpbWl0KSwgc3RhcnQpOworICAgICAgICByZXN0YXJ0Q2FyZXRCbGlua2luZyh0cnVlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRIaWdobGlnaHRDb2xvcihDb2xvciBuZXdDb2xvcikgeworICAgICAgICBmSGlnaGxpZ2h0Q29sb3IgPSBuZXdDb2xvcjsKKyAgICAgICAgaWYgKGVuYWJsZWQoKSkKKyAgICAgICAgICAgIGRyYXdTZWxlY3Rpb24oZlRleHRDb21wb25lbnQuZ2V0R3JhcGhpY3MoKSwgdHJ1ZSk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBib29sZWFuIHJhbmdlSXNaZXJvTGVuZ3RoKFRleHRPZmZzZXQgc3RhcnQsIFRleHRPZmZzZXQgbGltaXQsIFRleHRPZmZzZXQgYW5jaG9yKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gc3RhcnQuZk9mZnNldCA9PSBsaW1pdC5mT2Zmc2V0ICYmIGFuY2hvci5mT2Zmc2V0ID09IGxpbWl0LmZPZmZzZXQ7CisgICAgfQorCisgICAgLy8gc2lnaC4uLiBsb29rIG91dCBmb3IgYWxpYXNpbmcKKyAgICBwdWJsaWMgdm9pZCBzZXRTZWxlY3Rpb25SYW5nZShUZXh0T2Zmc2V0IG5ld1N0YXJ0LCBUZXh0T2Zmc2V0IG5ld0xpbWl0LCBUZXh0T2Zmc2V0IG5ld0FuY2hvcikgeworCisgICAgICAgIGJvb2xlYW4gemVyb0xlbmd0aENoYW5nZSA9IHJhbmdlSXNaZXJvTGVuZ3RoKG5ld1N0YXJ0LCBuZXdMaW1pdCwgbmV3QW5jaG9yKSAhPSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlSXNaZXJvTGVuZ3RoKGZTdGFydCwgZkxpbWl0LCBmQW5jaG9yKTsKKyAgICAgICAgVGV4dE9mZnNldCB0ZW1wTmV3QW5jaG9yOworICAgICAgICBpZiAobmV3QW5jaG9yID09IGZTdGFydCB8fCBuZXdBbmNob3IgPT0gZkxpbWl0KSB7CisgICAgICAgICAgICB0ZW1wTmV3QW5jaG9yID0gbmV3IFRleHRPZmZzZXQobmV3QW5jaG9yKTsgLy8gY2xvbmUgaW4gY2FzZSBvZiBhbGlhc2luZworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGVtcE5ld0FuY2hvciA9IG5ld0FuY2hvcjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIERFQlVHIHtqYnJ9CisKKyAgICAgICAgaWYgKG5ld1N0YXJ0LmdyZWF0ZXJUaGFuKG5ld0xpbWl0KSkKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlNlbGVjdGlvbiBsaW1pdCBpcyBiZWZvcmUgc2VsZWN0aW9uIHN0YXJ0LiIpOworCisgICAgICAgIGlmIChuZXdMaW1pdCAhPSBmU3RhcnQpIHsKKyAgICAgICAgICAgIGZTdGFydC5hc3NpZ24obmV3U3RhcnQpOworICAgICAgICAgICAgZkxpbWl0LmFzc2lnbihuZXdMaW1pdCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmTGltaXQuYXNzaWduKG5ld0xpbWl0KTsKKyAgICAgICAgICAgIGZTdGFydC5hc3NpZ24obmV3U3RhcnQpOworICAgICAgICB9CisKKyAgICAgICAgZkFuY2hvci5hc3NpZ24odGVtcE5ld0FuY2hvcik7CisKKyAgICAgICAgaWYgKGZTdGFydC5mT2Zmc2V0ID09IGZMaW1pdC5mT2Zmc2V0KSB7CisgICAgICAgICAgICBmU3RhcnQuZlBsYWNlbWVudCA9IGZBbmNob3IuZlBsYWNlbWVudDsKKyAgICAgICAgICAgIGZMaW1pdC5mUGxhY2VtZW50ID0gZkFuY2hvci5mUGxhY2VtZW50OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoIWZNb3VzZURvd24pIHsKKyAgICAgICAgICAgIGlmICh6ZXJvTGVuZ3RoQ2hhbmdlKSB7CisgICAgICAgICAgICAgICAgZkxpc3RlbmVyLnRleHRTdGF0ZUNoYW5nZWQoVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX0VNUFRZX0NIQU5HRUQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZkxpc3RlbmVyLnRleHRTdGF0ZUNoYW5nZWQoVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX1JBTkdFX0NIQU5HRUQpOworICAgICAgICAgICAgaWYgKGZIYW5kbGluZ0tleU9yQ29tbWFuZCkgeworICAgICAgICAgICAgICAgIGZMaXN0ZW5lci50ZXh0U3RhdGVDaGFuZ2VkKFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9TVFlMRVNfQ0hBTkdFRCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgc29ydE9mZnNldHMoVGV4dE9mZnNldCBvZmZzZXRzW10pIHsKKworICAgICAgICBpbnQgaSwgajsKKworICAgICAgICBmb3IgKGk9MDsgaSA8IG9mZnNldHMubGVuZ3RoLTE7IGkrKykgeworICAgICAgICAgICAgZm9yIChqPWkrMTsgaiA8IG9mZnNldHMubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgICAgICBpZiAob2Zmc2V0c1tqXS5sZXNzVGhhbihvZmZzZXRzW2ldKSkgeworICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHRlbXAgPSBvZmZzZXRzW2pdOworICAgICAgICAgICAgICAgICAgICBvZmZzZXRzW2pdID0gb2Zmc2V0c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0c1tpXSA9IHRlbXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gREVCVUcge2picn0KKyAgICAgICAgZm9yIChpPTA7IGkgPCBvZmZzZXRzLmxlbmd0aC0xOyBpKyspCisgICAgICAgICAgICBpZiAob2Zmc2V0c1tpXS5ncmVhdGVyVGhhbihvZmZzZXRzW2krMV0pKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigic29ydE9mZnNldHMgZmFpbGVkISIpOworICAgIH0KKworICAgIHByaXZhdGUgUmVjdGFuZ2xlIGdldFNlbGVjdGlvbkNoYW5nZVJlY3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IHJhbmdlU3RhcnQsIFRleHRPZmZzZXQgcmFuZ2VMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgb2xkU3RhcnQsIFRleHRPZmZzZXQgb2xkTGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IG5ld1N0YXJ0LCBUZXh0T2Zmc2V0IG5ld0xpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBkcmF3SWZJbnNQb2ludCkgeworCisgICAgICAgIGlmICghcmFuZ2VTdGFydC5lcXVhbHMocmFuZ2VMaW1pdCkpCisgICAgICAgICAgICByZXR1cm4gZlRleHRDb21wb25lbnQuZ2V0Qm91bmRpbmdSZWN0KHJhbmdlU3RhcnQsIHJhbmdlTGltaXQpOworCisgICAgICAgIC8vIGhlcmUsIHJhbmdlU3RhcnQgYW5kIHJhbmdlTGltaXQgYXJlIGVxdWFsCisKKyAgICAgICAgaWYgKHJhbmdlU3RhcnQuZXF1YWxzKG9sZExpbWl0KSkgeworCisgICAgICAgICAgICAvLyByYW5nZSBzdGFydCBpcyBPTEQgaW5zZXJ0aW9uIHBvaW50LiAgUmVkcmF3IGlmIGNhcmV0IGlzIGN1cnJlbnRseSB2aXNpYmxlLgorCisgICAgICAgICAgICBpZiAoZkNhcmV0SXNWaXNpYmxlKQorICAgICAgICAgICAgICAgIHJldHVybiBmVGV4dENvbXBvbmVudC5nZXRCb3VuZGluZ1JlY3QocmFuZ2VTdGFydCwgcmFuZ2VTdGFydCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocmFuZ2VTdGFydC5lcXVhbHMobmV3TGltaXQpKSB7CisKKyAgICAgICAgICAgIC8vIHJhbmdlIHN0YXJ0IGlzIE5FVyBpbnNlcnRpb24gcG9pbnQuCisKKyAgICAgICAgICAgIGlmIChkcmF3SWZJbnNQb2ludCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZlRleHRDb21wb25lbnQuZ2V0Qm91bmRpbmdSZWN0KHJhbmdlU3RhcnQsIHJhbmdlU3RhcnQpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiByZWN0YW5nbGVzT3ZlcmxhcFZlcnRpY2FsbHkoUmVjdGFuZ2xlIHIxLCBSZWN0YW5nbGUgcjIpIHsKKyAgICAgICAgCisgICAgICAgIGlmIChyMSA9PSBudWxsIHx8IHIyID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHIxLnkgPD0gcjIueSArIHIyLmhlaWdodCB8fCByMi55IDw9IHIxLnkgKyByMS5oZWlnaHQ7CisgICAgfQorICAgIAorICAgIC8vIFVwZGF0ZSB0byBzaG93IG5ldyBzZWxlY3Rpb24sIHJlZHJhd2luZyBhcyBsaXR0bGUgYXMgcG9zc2libGUKKworICAgIHByaXZhdGUgdm9pZCB1cGRhdGVTZWxlY3Rpb25EaXNwbGF5KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRPZmZzZXQgb2xkU3RhcnQsIFRleHRPZmZzZXQgb2xkTGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dE9mZnNldCBuZXdTdGFydCwgVGV4dE9mZnNldCBuZXdMaW1pdCwgYm9vbGVhbiBkcmF3SWZJbnNQb2ludCkgeworCisgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJuZXdTdGFydDoiICsgbmV3U3RhcnQgKyAiOyBuZXdMaW1pdDoiICsgbmV3TGltaXQpOworCisgICAgICAgIFRleHRPZmZzZXQgb2ZmW10gPSBuZXcgVGV4dE9mZnNldFs0XTsKKworICAgICAgICBvZmZbMF0gPSBvbGRTdGFydDsKKyAgICAgICAgb2ZmWzFdID0gb2xkTGltaXQ7CisgICAgICAgIG9mZlsyXSA9IG5ld1N0YXJ0OworICAgICAgICBvZmZbM10gPSBuZXdMaW1pdDsKKworICAgICAgICBzb3J0T2Zmc2V0cyhvZmYpOworCisgICAgICAgIFJlY3RhbmdsZSByMSA9IGdldFNlbGVjdGlvbkNoYW5nZVJlY3Qob2ZmWzBdLCBvZmZbMV0sIG9sZFN0YXJ0LCBvbGRMaW1pdCwgbmV3U3RhcnQsIG5ld0xpbWl0LCBkcmF3SWZJbnNQb2ludCk7CisgICAgICAgIFJlY3RhbmdsZSByMiA9IGdldFNlbGVjdGlvbkNoYW5nZVJlY3Qob2ZmWzJdLCBvZmZbM10sIG9sZFN0YXJ0LCBvbGRMaW1pdCwgbmV3U3RhcnQsIG5ld0xpbWl0LCBkcmF3SWZJbnNQb2ludCk7CisKKyAgICAgICAgYm9vbGVhbiBkcmF3U2VsZWN0aW9uID0gZHJhd0lmSW5zUG9pbnQgfHwgIW5ld1N0YXJ0LmVxdWFscyhuZXdMaW1pdCk7CisKKyAgICAgICAgaWYgKHJlY3RhbmdsZXNPdmVybGFwVmVydGljYWxseShyMSwgcjIpKSB7CisKKyAgICAgICAgICAgIGZUZXh0Q29tcG9uZW50LmRyYXdUZXh0KGZUZXh0Q29tcG9uZW50LmdldEdyYXBoaWNzKCksIHIxLnVuaW9uKHIyKSwgZHJhd1NlbGVjdGlvbiwgbmV3U3RhcnQsIG5ld0xpbWl0LCBmSGlnaGxpZ2h0Q29sb3IpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHIxICE9IG51bGwpCisgICAgICAgICAgICAgICAgZlRleHRDb21wb25lbnQuZHJhd1RleHQoZlRleHRDb21wb25lbnQuZ2V0R3JhcGhpY3MoKSwgcjEsIGRyYXdTZWxlY3Rpb24sIG5ld1N0YXJ0LCBuZXdMaW1pdCwgZkhpZ2hsaWdodENvbG9yKTsKKyAgICAgICAgICAgIGlmIChyMiAhPSBudWxsKQorICAgICAgICAgICAgICAgIGZUZXh0Q29tcG9uZW50LmRyYXdUZXh0KGZUZXh0Q29tcG9uZW50LmdldEdyYXBoaWNzKCksIHIyLCBkcmF3U2VsZWN0aW9uLCBuZXdTdGFydCwgbmV3TGltaXQsIGZIaWdobGlnaHRDb2xvcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRTZWxSYW5nZUFuZERyYXcoVGV4dE9mZnNldCBuZXdTdGFydCwgVGV4dE9mZnNldCBuZXdMaW1pdCwgVGV4dE9mZnNldCBuZXdBbmNob3IpIHsKKworICAgICAgICAvLyBpZiB0aGUgb2xkIGFuZCBuZXcgc2VsZWN0aW9uIHJhbmdlcyBhcmUgdGhlIHNhbWUsIGRvbid0IGRvIGFueXRoaW5nCisgICAgICAgIGlmIChmU3RhcnQuZXF1YWxzKG5ld1N0YXJ0KSAmJiBmTGltaXQuZXF1YWxzKG5ld0xpbWl0KSAmJiBmQW5jaG9yLmVxdWFscyhuZXdBbmNob3IpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChlbmFibGVkKCkpCisgICAgICAgICAgICBzdG9wQ2FyZXRCbGlua2luZygpOworCisgICAgICAgIC8vIHVwZGF0ZSB0aGUgc2VsZWN0aW9uIG9uIHNjcmVlbiBpZiB3ZSdyZSBlbmFibGVkIGFuZCB2aXNpYmxlCisKKyAgICAgICAgVGV4dE9mZnNldCBvbGRTdGFydCA9IG5ldyBUZXh0T2Zmc2V0KGZTdGFydCksIG9sZExpbWl0ID0gbmV3IFRleHRPZmZzZXQoZkxpbWl0KTsKKworICAgICAgICBzZXRTZWxlY3Rpb25SYW5nZShuZXdTdGFydCwgbmV3TGltaXQsIG5ld0FuY2hvcik7CisKKyAgICAgICAgaWYgKGVuYWJsZWQoKSkgeworCisgICAgICAgICAgICAgICAgLy8gVG8gc3VwcmVzcyBkcmF3aW5nIGEgY2FyZXQgZHVyaW5nIGEgbW91c2UgZHJhZywgcGFzcyAhZk1vdXNlRG93biBpbnN0ZWFkIG9mIHRydWU6CisgICAgICAgICAgICAgICAgdXBkYXRlU2VsZWN0aW9uRGlzcGxheShvbGRTdGFydCwgb2xkTGltaXQsIGZTdGFydCwgZkxpbWl0LCB0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZk1vdXNlRG93biAmJiBlbmFibGVkKCkpCisgICAgICAgICAgICByZXN0YXJ0Q2FyZXRCbGlua2luZyh0cnVlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzdG9wQ2FyZXRCbGlua2luZygpIHsKKworICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgeworICAgICAgICAgICAgZkNhcmV0U2hvdWxkQmxpbmsgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworLyoqCisqIFJlc3VtZSBibGlua2luZyB0aGUgY2FyZXQsIGlmIHRoZSBzZWxlY3Rpb24gaXMgYW4gaW5zZXJ0aW9uIHBvaW50LgorKiBAcGFyYW0gY2FyZXRJc1Zpc2libGUgdHJ1ZSBpZiB0aGUgY2FyZXQgaXMgZGlzcGxheWVkIHdoZW4gdGhpcyBpcyBjYWxsZWQuCisqIFRoaXMgbWV0aG9kIHJlbGllcyBvbiB0aGUgY2xpZW50IHRvIGRpc3BsYXkgKG9yIG5vdCBkaXNwbGF5KSB0aGUgY2FyZXQuCisqLworICAgIHB1YmxpYyB2b2lkIHJlc3RhcnRDYXJldEJsaW5raW5nKGJvb2xlYW4gY2FyZXRJc1Zpc2libGUpIHsKKworICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgeworICAgICAgICAgICAgZkNhcmV0U2hvdWxkQmxpbmsgPSBmU3RhcnQuZXF1YWxzKGZMaW1pdCk7CisgICAgICAgICAgICBmQ2FyZXRDb3VudCA9IDA7CisgICAgICAgICAgICBmQ2FyZXRJc1Zpc2libGUgPSBjYXJldElzVmlzaWJsZTsKKworICAgICAgICAgICAgaWYgKGZDYXJldFNob3VsZEJsaW5rKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgbm90aWZ5KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhdGNoIChJbGxlZ2FsTW9uaXRvclN0YXRlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDYXVnaHQgSWxsZWdhbE1vbml0b3JTdGF0ZUV4Y2VwdGlvbjogIitlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZW1vdmVGcm9tT3duZXIoKSB7CisKKyAgICAgICAgc3RvcENhcmV0QmxpbmtpbmcoKTsKKyAgICAgICAgc3VwZXIucmVtb3ZlRnJvbU93bmVyKCk7CisgICAgfQorCit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGhhaUtleVJlbWFwLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVGhhaUtleVJlbWFwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjVmMmIyZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UaGFpS2V5UmVtYXAuamF2YQpAQCAtMCwwICsxLDEwNiBAQAorcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbDsKKworZmluYWwgY2xhc3MgVGhhaUtleVJlbWFwIGV4dGVuZHMgS2V5UmVtYXAgeworCisgICAgcHVibGljIGNoYXIgcmVtYXAoY2hhciBjKSB7CisKKyAgICAgICAgc3dpdGNoIChjKSB7CisgICAgICAgICAgICBjYXNlICdgJzogcmV0dXJuICdcdTAwNWYnOworICAgICAgICAgICAgY2FzZSAnfic6IHJldHVybiAnXHUwMDI1JzsKKyAgICAgICAgICAgIGNhc2UgJzEnOiByZXR1cm4gJ1x1MGU0NSc7CisgICAgICAgICAgICBjYXNlICchJzogcmV0dXJuICdcdTAwMmInOworICAgICAgICAgICAgY2FzZSAnMic6IHJldHVybiAnXHUwMDJmJzsKKyAgICAgICAgICAgIGNhc2UgJ0AnOiByZXR1cm4gJ1x1MGU1MSc7CisgICAgICAgICAgICBjYXNlICczJzogcmV0dXJuICdcdTAwMmQnOworICAgICAgICAgICAgY2FzZSAnIyc6IHJldHVybiAnXHUwZTUyJzsKKyAgICAgICAgICAgIGNhc2UgJzQnOiByZXR1cm4gJ1x1MGUyMCc7CisgICAgICAgICAgICBjYXNlICckJzogcmV0dXJuICdcdTBlNTMnOworICAgICAgICAgICAgY2FzZSAnNSc6IHJldHVybiAnXHUwZTE2JzsKKyAgICAgICAgICAgIGNhc2UgJyUnOiByZXR1cm4gJ1x1MGU1NCc7CisgICAgICAgICAgICBjYXNlICc2JzogcmV0dXJuICdcdTBlMzgnOworICAgICAgICAgICAgY2FzZSAnXic6IHJldHVybiAnXHUwZTM5JzsKKyAgICAgICAgICAgIGNhc2UgJzcnOiByZXR1cm4gJ1x1MGUzNic7CisgICAgICAgICAgICBjYXNlICcmJzogcmV0dXJuICdcdTBlM2YnOworICAgICAgICAgICAgY2FzZSAnOCc6IHJldHVybiAnXHUwZTA0JzsKKyAgICAgICAgICAgIGNhc2UgJyonOiByZXR1cm4gJ1x1MGU1NSc7CisgICAgICAgICAgICBjYXNlICc5JzogcmV0dXJuICdcdTBlMTUnOworICAgICAgICAgICAgY2FzZSAnKCc6IHJldHVybiAnXHUwZTU2JzsKKyAgICAgICAgICAgIGNhc2UgJzAnOiByZXR1cm4gJ1x1MGUwOCc7CisgICAgICAgICAgICBjYXNlICcpJzogcmV0dXJuICdcdTBlNTcnOworICAgICAgICAgICAgY2FzZSAnLSc6IHJldHVybiAnXHUwZTAyJzsKKyAgICAgICAgICAgIGNhc2UgJ18nOiByZXR1cm4gJ1x1MGU1OCc7CisgICAgICAgICAgICBjYXNlICc9JzogcmV0dXJuICdcdTBlMDgnOworICAgICAgICAgICAgY2FzZSAnKyc6IHJldHVybiAnXHUwZTU5JzsKKyAgICAgICAgICAgIGNhc2UgJ3EnOiByZXR1cm4gJ1x1MGU0Nic7CisgICAgICAgICAgICBjYXNlICdRJzogcmV0dXJuICdcdTBlNTAnOworICAgICAgICAgICAgY2FzZSAndyc6IHJldHVybiAnXHUwZTQ0JzsKKyAgICAgICAgICAgIGNhc2UgJ1cnOiByZXR1cm4gJ1x1MDAyMic7CisgICAgICAgICAgICBjYXNlICdlJzogcmV0dXJuICdcdTBlMzMnOworICAgICAgICAgICAgY2FzZSAnRSc6IHJldHVybiAnXHUwZTBlJzsKKyAgICAgICAgICAgIGNhc2UgJ3InOiByZXR1cm4gJ1x1MGUxZSc7CisgICAgICAgICAgICBjYXNlICdSJzogcmV0dXJuICdcdTBlMTEnOworICAgICAgICAgICAgY2FzZSAndCc6IHJldHVybiAnXHUwZTMwJzsKKyAgICAgICAgICAgIGNhc2UgJ1QnOiByZXR1cm4gJ1x1MGUxOCc7CisgICAgICAgICAgICBjYXNlICd5JzogcmV0dXJuICdcdTBlMzEnOworICAgICAgICAgICAgY2FzZSAnWSc6IHJldHVybiAnXHUwZTRkJzsKKyAgICAgICAgICAgIGNhc2UgJ3UnOiByZXR1cm4gJ1x1MGUzNSc7CisgICAgICAgICAgICBjYXNlICdVJzogcmV0dXJuICdcdTBlNGEnOworICAgICAgICAgICAgY2FzZSAnaSc6IHJldHVybiAnXHUwZTIzJzsKKyAgICAgICAgICAgIGNhc2UgJ0knOiByZXR1cm4gJ1x1MGUxMyc7CisgICAgICAgICAgICBjYXNlICdvJzogcmV0dXJuICdcdTBlMTknOworICAgICAgICAgICAgY2FzZSAnTyc6IHJldHVybiAnXHUwZTJmJzsKKyAgICAgICAgICAgIGNhc2UgJ3AnOiByZXR1cm4gJ1x1MGUyMic7CisgICAgICAgICAgICBjYXNlICdQJzogcmV0dXJuICdcdTBlMGQnOworICAgICAgICAgICAgY2FzZSAnWyc6IHJldHVybiAnXHUwZTFhJzsKKyAgICAgICAgICAgIGNhc2UgJ3snOiByZXR1cm4gJ1x1MGUxMCc7CisgICAgICAgICAgICBjYXNlICddJzogcmV0dXJuICdcdTBlMjUnOworICAgICAgICAgICAgY2FzZSAnfSc6IHJldHVybiAnXHUwMDJjJzsKKyAgICAgICAgICAgIGNhc2UgJ1xcJzogcmV0dXJuICdcdTBlMDMnOworICAgICAgICAgICAgY2FzZSAnfCc6IHJldHVybiAnXHUwZTA1JzsKKyAgICAgICAgICAgIGNhc2UgJ2EnOiByZXR1cm4gJ1x1MGUxZic7CisgICAgICAgICAgICBjYXNlICdBJzogcmV0dXJuICdcdTBlMjQnOworICAgICAgICAgICAgY2FzZSAncyc6IHJldHVybiAnXHUwZTJiJzsKKyAgICAgICAgICAgIGNhc2UgJ1MnOiByZXR1cm4gJ1x1MGUwNic7CisgICAgICAgICAgICBjYXNlICdkJzogcmV0dXJuICdcdTBlMDEnOworICAgICAgICAgICAgY2FzZSAnRCc6IHJldHVybiAnXHUwZTBmJzsKKyAgICAgICAgICAgIGNhc2UgJ2YnOiByZXR1cm4gJ1x1MGUxNCc7CisgICAgICAgICAgICBjYXNlICdGJzogcmV0dXJuICdcdTBlNDInOworICAgICAgICAgICAgY2FzZSAnZyc6IHJldHVybiAnXHUwZTQwJzsKKyAgICAgICAgICAgIGNhc2UgJ0cnOiByZXR1cm4gJ1x1MGUwYyc7CisgICAgICAgICAgICBjYXNlICdoJzogcmV0dXJuICdcdTBlNDknOworICAgICAgICAgICAgY2FzZSAnSCc6IHJldHVybiAnXHUwZTQ3JzsKKyAgICAgICAgICAgIGNhc2UgJ2onOiByZXR1cm4gJ1x1MGU0OCc7CisgICAgICAgICAgICBjYXNlICdKJzogcmV0dXJuICdcdTBlNGInOworICAgICAgICAgICAgY2FzZSAnayc6IHJldHVybiAnXHUwZTMyJzsKKyAgICAgICAgICAgIGNhc2UgJ0snOiByZXR1cm4gJ1x1MGUyOSc7CisgICAgICAgICAgICBjYXNlICdsJzogcmV0dXJuICdcdTBlMmEnOworICAgICAgICAgICAgY2FzZSAnTCc6IHJldHVybiAnXHUwZTI4JzsKKyAgICAgICAgICAgIGNhc2UgJzsnOiByZXR1cm4gJ1x1MGUyNyc7CisgICAgICAgICAgICBjYXNlICc6JzogcmV0dXJuICdcdTBlMGInOworICAgICAgICAgICAgY2FzZSAnXCcnOiByZXR1cm4gJ1x1MGUwNyc7CisgICAgICAgICAgICBjYXNlICdcIic6IHJldHVybiAnXHUwMDJlJzsKKyAgICAgICAgICAgIGNhc2UgJ3onOiByZXR1cm4gJ1x1MGUxYyc7CisgICAgICAgICAgICBjYXNlICdaJzogcmV0dXJuICdcdTAwMjgnOworICAgICAgICAgICAgY2FzZSAneCc6IHJldHVybiAnXHUwZTFiJzsKKyAgICAgICAgICAgIGNhc2UgJ1gnOiByZXR1cm4gJ1x1MDAyOSc7CisgICAgICAgICAgICBjYXNlICdjJzogcmV0dXJuICdcdTBlNDEnOworICAgICAgICAgICAgY2FzZSAnQyc6IHJldHVybiAnXHUwZTA5JzsKKyAgICAgICAgICAgIGNhc2UgJ3YnOiByZXR1cm4gJ1x1MGUyZCc7CisgICAgICAgICAgICBjYXNlICdWJzogcmV0dXJuICdcdTBlMmUnOworICAgICAgICAgICAgY2FzZSAnYic6IHJldHVybiAnXHUwZTM0JzsKKyAgICAgICAgICAgIGNhc2UgJ0InOiByZXR1cm4gJ1x1MGUzYSc7CisgICAgICAgICAgICBjYXNlICduJzogcmV0dXJuICdcdTBlMzcnOworICAgICAgICAgICAgY2FzZSAnTic6IHJldHVybiAnXHUwZTRjJzsKKyAgICAgICAgICAgIGNhc2UgJ20nOiByZXR1cm4gJ1x1MGUxNyc7CisgICAgICAgICAgICBjYXNlICdNJzogcmV0dXJuICdcdTAwM2YnOworICAgICAgICAgICAgY2FzZSAnLCc6IHJldHVybiAnXHUwZTIxJzsKKyAgICAgICAgICAgIGNhc2UgJzwnOiByZXR1cm4gJ1x1MGUxMic7CisgICAgICAgICAgICBjYXNlICcuJzogcmV0dXJuICdcdTBlNDMnOworICAgICAgICAgICAgY2FzZSAnPic6IHJldHVybiAnXHUwZTJjJzsKKyAgICAgICAgICAgIGNhc2UgJy8nOiByZXR1cm4gJ1x1MGUxZCc7CisgICAgICAgICAgICBjYXNlICc/JzogcmV0dXJuICdcdTBlMjYnOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGM7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9UcmFuc2ZlcmFibGVUZXh0LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVHJhbnNmZXJhYmxlVGV4dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQwODFhYzYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVHJhbnNmZXJhYmxlVGV4dC5qYXZhCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRyYW5zZmVyYWJsZVRleHQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo1MToyMyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbDsKKworaW1wb3J0IGphdmEuYXd0LmRhdGF0cmFuc2Zlci5TdHJpbmdTZWxlY3Rpb247CitpbXBvcnQgamF2YS5hd3QuZGF0YXRyYW5zZmVyLkRhdGFGbGF2b3I7CitpbXBvcnQgamF2YS5hd3QuZGF0YXRyYW5zZmVyLlVuc3VwcG9ydGVkRmxhdm9yRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworCisvKioKKyAqIFRoaXMgY2xhc3MgYWxsb3dzIE1Db25zdFRleHQgaW5zdGFuY2VzIHRvIGJlIHRoZSBjb250ZW50cworICogb2YgYSBDbGlwYm9hcmQuICBUbyBzdG9yZSBhbiBNQ29uc3RUZXh0IG9uIHRoZSBjbGlwYm9hcmQsCisgKiBjb25zdHJ1Y3QgYSBUcmFuc2ZlcmFibGVUZXh0IGZyb20gdGhlIE1Db25zdFRleHQsIGFuZCBtYWtlCisgKiB0aGUgVHJhbnNmZXJhYmxlVGV4dCB0aGUgY2xpcGJvYXJkIGNvbnRlbnRzLgorICoKKyAqLworLyoKKyAqIE5vdGU6ICB0aGlzIGNsYXNzIGluaGVyaXRzIGZyb20gU3RyaW5nU2VsZWN0aW9uIGJlY2F1c2Ugb2YKKyAqIGEgYnVnIGluIHRoZSAxLjEuNyBzeXN0ZW0gY2xpcGJvYXJkIGltcGxlbWVudGF0aW9uLiAgVGhlCisgKiBzeXN0ZW0gY2xpcGJvYXJkIHdvbid0IHB1dCB0ZXh0IG9uIHRoZSBPUyBjbGlwYm9hcmQgdW5sZXNzCisgKiB0aGUgY29udGVudCBpcyBhIFN0cmluZ1NlbGVjdGlvbi4KKyAqLworZmluYWwgY2xhc3MgVHJhbnNmZXJhYmxlVGV4dCBleHRlbmRzIFN0cmluZ1NlbGVjdGlvbgoreworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBNQ29uc3RUZXh0IGZUZXh0OworCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIHRleHRUb1N0cmluZyhNQ29uc3RUZXh0IHRleHQpIHsKKyAgICAgICAgY2hhcltdIGNoYXJzID0gbmV3IGNoYXJbdGV4dC5sZW5ndGgoKV07CisgICAgICAgIHRleHQuZXh0cmFjdENoYXJzKDAsIGNoYXJzLmxlbmd0aCwgY2hhcnMsIDApOworICAgICAgICByZXR1cm4gbmV3IFN0cmluZyhjaGFycyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgVHJhbnNmZXJhYmxlVGV4dCBmb3IgdGhlIGdpdmVuIHRleHQuCisgICAgICogQHBhcmFtIHRleHQgdGhlIHRleHQgdG8gZ28gb24gdGhlIENsaXBib2FyZC4gIFRoZSB0ZXh0IGlzCisgICAgICogICAgIGFkb3B0ZWQgYnkgdGhpcyBvYmplY3QuCisgICAgICovCisgICAgcHVibGljIFRyYW5zZmVyYWJsZVRleHQoTUNvbnN0VGV4dCB0ZXh0KSB7CisKKyAgICAgICAgc3VwZXIodGV4dFRvU3RyaW5nKHRleHQpKTsKKworICAgICAgICBmVGV4dCA9IHRleHQ7CisgICAgfQorCisgICAgcHVibGljIERhdGFGbGF2b3JbXSBnZXRUcmFuc2ZlckRhdGFGbGF2b3JzKCkgeworCisgICAgICAgIERhdGFGbGF2b3JbXSBmbGF2b3JzID0gc3VwZXIuZ2V0VHJhbnNmZXJEYXRhRmxhdm9ycygpOworICAgICAgICBEYXRhRmxhdm9yW10gcmVzdWx0ID0gbmV3IERhdGFGbGF2b3JbZmxhdm9ycy5sZW5ndGgrMV07CisgICAgICAgIHJlc3VsdFswXSA9IE1Db25zdFRleHQuc3R5bGVkVGV4dEZsYXZvcjsKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShmbGF2b3JzLCAwLCByZXN1bHQsIDEsIGZsYXZvcnMubGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc0RhdGFGbGF2b3JTdXBwb3J0ZWQoRGF0YUZsYXZvciBmbGF2b3IpIHsKKworICAgICAgICBpZiAoZmxhdm9yLmVxdWFscyhNQ29uc3RUZXh0LnN0eWxlZFRleHRGbGF2b3IpKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBzdXBlci5pc0RhdGFGbGF2b3JTdXBwb3J0ZWQoZmxhdm9yKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBPYmplY3QgZ2V0VHJhbnNmZXJEYXRhKERhdGFGbGF2b3IgZmxhdm9yKSB0aHJvd3MgVW5zdXBwb3J0ZWRGbGF2b3JFeGNlcHRpb24sIElPRXhjZXB0aW9uIHsKKworICAgICAgICBpZiAoZmxhdm9yLmVxdWFscyhNQ29uc3RUZXh0LnN0eWxlZFRleHRGbGF2b3IpKSB7CisgICAgICAgICAgICByZXR1cm4gZlRleHQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuZ2V0VHJhbnNmZXJEYXRhKGZsYXZvcik7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvVHlwaW5nSW50ZXJhY3Rvci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1R5cGluZ0ludGVyYWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45NDQxMDgxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdGV4dHBhbmVsL1R5cGluZ0ludGVyYWN0b3IuamF2YQpAQCAtMCwwICsxLDM1NiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogVHlwaW5nSW50ZXJhY3Rvci5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUxOjIzICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCisvKgorICAgIDIvMjUvOTkgLSBOb3cgcHJvY2Vzc2luZyBjaGFyYWN0ZXJzIGZyb20ga2V5VHlwZWQgbWV0aG9kIChub3Qga2V5UHJlc3NlZCkuCisgICAgICAgICAgICAgIFRoaXMgbmV3IHdheSBpcyBpbnB1dC1tZXRob2QgZnJpZW5kbHkgb24gMS4yLCBhbmQgaXMgZ2VuZXJhbGx5CisgICAgICAgICAgICAgIG1vcmUgY29ycmVjdC4KKworICAgIDcvNy85NyAtIHRoZSBtb3VzZURpZFNvbWV0aGluZyBtZXRob2RzIHVzZWQgdG8gcmVtb3ZlIHRoZSB0eXBpbmcgaW50ZXJhY3Rvci4KKyAgICAgICAgICAgIFRoaXMgaXMgZGVmaW5pdGVseSB3cm9uZywgYnV0IG1heWJlIHRoYXQgbWFkZSBzZW5zZSBhdCBvbmUgdGltZS4gIEFueXdheSwKKyAgICAgICAgICAgIG5vdyB0aGUgbW91c2VQcmVzc2VkIC8gbW91c2VSZWxlYXNlZCBtZXRob2RzIHJlbW92ZSB0aGUgaW50ZXJhY3RvcjsgIHRoZQorICAgICAgICAgICAgb3RoZXJzIGRvIG5vdGhpbmcuCisqLworCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsOworCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuS2V5RXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuTW91c2VFdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5Gb2N1c0V2ZW50OworCitpbXBvcnQgamF2YS50ZXh0LkJyZWFrSXRlcmF0b3I7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVNb2RpZmllcjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTVRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlZFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0Zm9ybWF0LlRleHRPZmZzZXQ7CisKK2ZpbmFsIGNsYXNzIFR5cGluZ0ludGVyYWN0b3IgZXh0ZW5kcyBCZWhhdmlvciB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBCQUNLU1BBQ0UgPSA4OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgVEFCID0gJ1x0JzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIFJFVFVSTiA9ICdccic7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBMSU5FX0ZFRUQgPSAnXG4nOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgUEFSQUdSQVBIX1NFUCA9ICdcdTIwMjknOworICAgIAorICAgIHByaXZhdGUgVGV4dENvbXBvbmVudCBmVGV4dENvbXBvbmVudDsKKyAgICBwcml2YXRlIFRleHRTZWxlY3Rpb24gZlNlbGVjdGlvbjsKKyAgICBwcml2YXRlIEF0dHJpYnV0ZU1hcCBmVHlwaW5nU3R5bGU7CisgICAgcHJpdmF0ZSBNQ29uc3RUZXh0IGZUZXh0OworICAgIHByaXZhdGUgVGV4dEVkaXRCZWhhdmlvciBmUGFyZW50OworICAgIHByaXZhdGUgVGV4dENoYW5nZUNvbW1hbmQgZkNvbW1hbmQgPSBudWxsOworICAgIHByaXZhdGUgU2ltcGxlQ29tbWFuZExvZyBmQ29tbWFuZExvZzsKKyAgICBwcml2YXRlIFBhbmVsRXZlbnRCcm9hZGNhc3RlciBmTGlzdGVuZXI7CisgICAgcHJpdmF0ZSBCcmVha0l0ZXJhdG9yIGZDaGFyQnJlYWsgPSBudWxsOworICAgIAorICAgIC8qKgorICAgICAqIE5vdCBhbGwgY2hhcmFjdGVycyB0aGF0IGNvbWUgZnJvbSB0aGUga2V5Ym9hcmQgYXJlIGhhbmRsZWQKKyAgICAgKiBhcyBpbnB1dC4gIEZvciBleGFtcGxlLCBjdHJsLWMgaXMgbm90IGEgdHlwYWJsZSBjaGFyYWN0ZXIuCisgICAgICogVGhpcyBtZXRob2QgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgcGFydGljdWxhciBjaGFyYWN0ZXIgZnJvbQorICAgICAqIHRoZSBrZXlib2FyZCB3aWxsIGFmZmVjdCB0aGUgdGV4dC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzVHlwaW5nSW50ZXJhY3RvckNoYXIoY2hhciBjaCkgeworCisgICAgICAgIHJldHVybiBjaCA+PSAnICcgfHwgCisgICAgICAgICAgICAgICBjaCA9PSBMSU5FX0ZFRUQgfHwgCisgICAgICAgICAgICAgICBjaCA9PSBSRVRVUk4gfHwKKyAgICAgICAgICAgICAgIGNoID09IFRBQiB8fCAKKyAgICAgICAgICAgICAgIGNoID09IEJBQ0tTUEFDRTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGhpcyBtZXRob2QgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgVHlwaW5nSW50ZXJhY3RvciBzaG91bGQKKyAgICAgKiBoYW5kbGUgdGhlIGdpdmVuIEtleUV2ZW50LgorICAgICAqLworICAgIHN0YXRpYyBib29sZWFuIGhhbmRsZWRCeVR5cGluZ0ludGVyYWN0b3IoS2V5RXZlbnQgZXZlbnQpIHsKKworICAgICAgICBmaW5hbCBpbnQgaWQgPSBldmVudC5nZXRJRCgpOworICAgICAgICAKKyAgICAgICAgaWYgKGlkID09IGV2ZW50LktFWV9UWVBFRCkgeworICAgICAgICAgICAgcmV0dXJuIGlzVHlwaW5nSW50ZXJhY3RvckNoYXIoZXZlbnQuZ2V0S2V5Q2hhcigpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAoaWQgPT0gS2V5RXZlbnQuS0VZX1BSRVNTRUQgJiYgCisgICAgICAgICAgICAgICAgICAgIGV2ZW50LmdldEtleUNvZGUoKSA9PSBLZXlFdmVudC5WS19ERUxFVEUpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIFR5cGluZ0ludGVyYWN0b3IoVGV4dENvbXBvbmVudCB0ZXh0Q29tcG9uZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRTZWxlY3Rpb24gc2VsZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCB0eXBpbmdTdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0RWRpdEJlaGF2aW9yIHBhcmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW1wbGVDb21tYW5kTG9nIGNvbW1hbmRMb2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFuZWxFdmVudEJyb2FkY2FzdGVyIGxpc3RlbmVyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGZUZXh0Q29tcG9uZW50ID0gdGV4dENvbXBvbmVudDsKKyAgICAgICAgZlRleHQgPSB0ZXh0Q29tcG9uZW50LmdldFRleHQoKTsKKyAgICAgICAgZlNlbGVjdGlvbiA9IHNlbGVjdGlvbjsKKyAgICAgICAgZlR5cGluZ1N0eWxlID0gdHlwaW5nU3R5bGU7CisgICAgICAgIGZQYXJlbnQgPSBwYXJlbnQ7CisgICAgICAgIGZDb21tYW5kTG9nID0gY29tbWFuZExvZzsKKyAgICAgICAgZkxpc3RlbmVyID0gbGlzdGVuZXI7CisKKyAgICAgICAgZlBhcmVudC5zZXRUeXBpbmdJbnRlcmFjdG9yKHRoaXMpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBlbmRJbnRlcmFjdGlvbigpIHsKKworICAgICAgICByZW1vdmVGcm9tT3duZXIoKTsKKyAgICAgICAgcG9zdFRleHRDaGFuZ2VDb21tYW5kKCk7CisKKyAgICAgICAgaW50IHNlbFN0YXJ0ID0gZlNlbGVjdGlvbi5nZXRTdGFydCgpLmZPZmZzZXQ7CisgICAgICAgIGludCBzZWxMaW1pdCA9IGZTZWxlY3Rpb24uZ2V0RW5kKCkuZk9mZnNldDsKKyAgICAgICAgZlBhcmVudC5zZXRTYXZlZFR5cGluZ1N0eWxlKHNlbFN0YXJ0PT1zZWxMaW1pdD8gZlR5cGluZ1N0eWxlIDogbnVsbCwgc2VsU3RhcnQpOworICAgICAgICAKKyAgICAgICAgZlBhcmVudC5zZXRUeXBpbmdJbnRlcmFjdG9yKG51bGwpOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHRleHRDb250cm9sRXZlbnRPY2N1cnJlZChCZWhhdmlvci5FdmVudFR5cGUgZXZlbnQsIE9iamVjdCB3aGF0KSB7CisKKyAgICAgICAgaWYgKGZDb21tYW5kID09IG51bGwgJiYgZXZlbnQgPT0gQmVoYXZpb3IuQ0hBUkFDVEVSX1NUWUxFX01PRCkgeworCisgICAgICAgICAgICBwaWNrVXBUeXBpbmdTdHlsZSgpOworICAgICAgICAgICAgZlR5cGluZ1N0eWxlID0gKChTdHlsZU1vZGlmaWVyKXdoYXQpLm1vZGlmeVN0eWxlKGZUeXBpbmdTdHlsZSk7CisKKyAgICAgICAgICAgIGZMaXN0ZW5lci50ZXh0U3RhdGVDaGFuZ2VkKFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9TVFlMRVNfQ0hBTkdFRCk7CisKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQmVoYXZpb3IgbmV4dCA9IG5leHRCZWhhdmlvcigpOyAvLyBzYXZlIGJlY2F1c2UgcmVtb3ZlRnJvbU93bmVyKCkgd2lsbCB0cmFzaCB0aGlzCisKKyAgICAgICAgICAgIGVuZEludGVyYWN0aW9uKCk7CisKKyAgICAgICAgICAgIGlmIChuZXh0ICE9IG51bGwpCisgICAgICAgICAgICAgICAgcmV0dXJuIG5leHQudGV4dENvbnRyb2xFdmVudE9jY3VycmVkKGV2ZW50LCB3aGF0KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZG9CYWNrc3BhY2UoKSB7CisKKyAgICAgICAgaW50IHNlbFN0YXJ0ID0gZlNlbGVjdGlvbi5nZXRTdGFydCgpLmZPZmZzZXQ7CisgICAgICAgIGludCBzZWxMaW1pdCA9IGZTZWxlY3Rpb24uZ2V0RW5kKCkuZk9mZnNldDsKKworICAgICAgICBpZiAoc2VsU3RhcnQgPT0gc2VsTGltaXQpIHsKKyAgICAgICAgICAgIGlmIChzZWxTdGFydCAhPSAwKSB7CisgICAgICAgICAgICAgICAgZlR5cGluZ1N0eWxlID0gbnVsbDsKKyAgICAgICAgICAgICAgICBwaWNrVXBUeXBpbmdTdHlsZSgpOworICAgICAgICAgICAgICAgIG1ha2VUZXh0Q2hhbmdlQ29tbWFuZCgpOworICAgICAgICAgICAgICAgIGlmIChzZWxTdGFydCA8PSBmQ29tbWFuZC5hZmZlY3RlZFJhbmdlU3RhcnQoKSkgeworICAgICAgICAgICAgICAgICAgICBmQ29tbWFuZC5wcmVwZW5kVG9PbGRUZXh0KGZUZXh0LmV4dHJhY3Qoc2VsU3RhcnQgLSAxLCBzZWxTdGFydCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBUZXh0T2Zmc2V0IGluc1B0ID0gbmV3IFRleHRPZmZzZXQoc2VsU3RhcnQgLSAxKTsKKyAgICAgICAgICAgICAgICBmUGFyZW50LmRvUmVwbGFjZVRleHQoc2VsU3RhcnQgLSAxLCBzZWxTdGFydCwgbnVsbCwgaW5zUHQsIGluc1B0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZUeXBpbmdTdHlsZSA9IG51bGw7CisgICAgICAgICAgICBtYWtlVGV4dENoYW5nZUNvbW1hbmQoKTsKKyAgICAgICAgICAgIFRleHRPZmZzZXQgaW5zUHQgPSBuZXcgVGV4dE9mZnNldChzZWxTdGFydCk7CisgICAgICAgICAgICBmUGFyZW50LmRvUmVwbGFjZVRleHQoc2VsU3RhcnQsIHNlbExpbWl0LCBudWxsLCBpbnNQdCwgaW5zUHQpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGRvRndkRGVsZXRlKGJvb2xlYW4gaWdub3JlQ2hhckJyZWFrKSB7CisKKyAgICAgICAgaW50IHNlbFN0YXJ0ID0gZlNlbGVjdGlvbi5nZXRTdGFydCgpLmZPZmZzZXQ7CisgICAgICAgIGludCBzZWxMaW1pdCA9IGZTZWxlY3Rpb24uZ2V0RW5kKCkuZk9mZnNldDsKKworICAgICAgICBUZXh0T2Zmc2V0IGluc1B0ID0gbmV3IFRleHRPZmZzZXQoc2VsU3RhcnQpOworCisgICAgICAgIGlmIChzZWxTdGFydCA9PSBzZWxMaW1pdCkgeworICAgICAgICAgICAgaWYgKHNlbFN0YXJ0ICE9IGZUZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgZlR5cGluZ1N0eWxlID0gbnVsbDsKKyAgICAgICAgICAgICAgICBtYWtlVGV4dENoYW5nZUNvbW1hbmQoKTsKKyAgICAgICAgICAgICAgICBpbnQgbnVtQ2hhcnM7CisgICAgICAgICAgICAgICAgaWYgKGlnbm9yZUNoYXJCcmVhaykgeworICAgICAgICAgICAgICAgICAgICBudW1DaGFycyA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoZkNoYXJCcmVhayA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmQ2hhckJyZWFrID0gQnJlYWtJdGVyYXRvci5nZXRDaGFyYWN0ZXJJbnN0YW5jZSgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGZDaGFyQnJlYWsuc2V0VGV4dChmVGV4dC5jcmVhdGVDaGFyYWN0ZXJJdGVyYXRvcigpKTsKKyAgICAgICAgICAgICAgICAgICAgbnVtQ2hhcnMgPSBmQ2hhckJyZWFrLmZvbGxvd2luZyhzZWxTdGFydCkgLSBzZWxTdGFydDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZkNvbW1hbmQuYXBwZW5kVG9PbGRUZXh0KGZUZXh0LmV4dHJhY3Qoc2VsU3RhcnQsIHNlbFN0YXJ0ICsgbnVtQ2hhcnMpKTsKKyAgICAgICAgICAgICAgICBmUGFyZW50LmRvUmVwbGFjZVRleHQoc2VsU3RhcnQsIHNlbFN0YXJ0ICsgbnVtQ2hhcnMsIG51bGwsIGluc1B0LCBpbnNQdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmVHlwaW5nU3R5bGUgPSBudWxsOworICAgICAgICAgICAgbWFrZVRleHRDaGFuZ2VDb21tYW5kKCk7CisgICAgICAgICAgICBmUGFyZW50LmRvUmVwbGFjZVRleHQoc2VsU3RhcnQsIHNlbExpbWl0LCBudWxsLCBpbnNQdCwgaW5zUHQpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGRvTm9ybWFsS2V5KGNoYXIgY2gpIHsKKworICAgICAgICAvLyBTaWdoIC0gMS4xIHJlcG9ydHMgZW50ZXIga2V5IGV2ZW50cyBhcyByZXR1cm4gY2hhcnMsIGJ1dAorICAgICAgICAvLyAxLjIgcmVwb3J0cyB0aGVtIGFzIGxpbmVmZWVkcy4KKyAgICAgICAgaWYgKGNoID09IFJFVFVSTikgeworICAgICAgICAgICAgY2ggPSBMSU5FX0ZFRUQ7CisgICAgICAgIH0KKyAgICAgICAgcGlja1VwVHlwaW5nU3R5bGUoKTsKKyAgICAgICAgbWFrZVRleHRDaGFuZ2VDb21tYW5kKCk7CisgICAgICAgIGZQYXJlbnQuZG9SZXBsYWNlU2VsZWN0ZWRUZXh0KGNoLCBmVHlwaW5nU3R5bGUpOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGZvY3VzR2FpbmVkKEZvY3VzRXZlbnQgZSkgeworCisgICAgICAgIC8vIHBhc3MgdGhyb3VnaCwgYnV0IHN0aWNrIGFyb3VuZC4uLgorICAgICAgICByZXR1cm4gc3VwZXIuZm9jdXNHYWluZWQoZSk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZm9jdXNMb3N0KEZvY3VzRXZlbnQgZSkgeworCisgICAgICAgIC8vIHBhc3MgdGhyb3VnaCwgYnV0IHN0aWNrIGFyb3VuZC4uLgorICAgICAgICByZXR1cm4gc3VwZXIuZm9jdXNMb3N0KGUpOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGtleVR5cGVkKEtleUV2ZW50IGUpIHsKKworICAgICAgICBpZiAoZS5nZXRLZXlDaGFyKCkgPT0gQkFDS1NQQUNFKSB7CisgICAgICAgICAgICBkb0JhY2tzcGFjZSgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGlzVHlwaW5nSW50ZXJhY3RvckNoYXIoZS5nZXRLZXlDaGFyKCkpKSB7CisgICAgICAgICAgICAgICAgS2V5UmVtYXAgcmVtYXAgPSBmUGFyZW50LmdldEtleVJlbWFwKCk7CisgICAgICAgICAgICAgICAgZG9Ob3JtYWxLZXkocmVtYXAucmVtYXAoZSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4ga2V5UHJlc3NlZChLZXlFdmVudCBlKSB7CisKKyAgICAgICAgaW50IGtleSA9IGUuZ2V0S2V5Q29kZSgpOworICAgICAgICBpZiAoa2V5ID09IEtleUV2ZW50LlZLX0RFTEVURSkgeworICAgICAgICAgICAgZG9Gd2REZWxldGUoZS5pc1NoaWZ0RG93bigpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgQmVoYXZpb3IgbmV4dCA9IG5leHRCZWhhdmlvcigpOworCisgICAgICAgIGlmIChUZXh0U2VsZWN0aW9uLmtleUFmZmVjdHNTZWxlY3Rpb24oZSkpIHsKKworICAgICAgICAgICAgZW5kSW50ZXJhY3Rpb24oKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXh0LmtleVByZXNzZWQoZSk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4ga2V5UmVsZWFzZWQoS2V5RXZlbnQgZSkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgbWFrZVRleHRDaGFuZ2VDb21tYW5kKCkgeworICAgICAgICBpZiAoZkNvbW1hbmQgPT0gbnVsbCkgeworICAgICAgICAgICAgVGV4dE9mZnNldCAgc2VsU3RhcnQgPSBmU2VsZWN0aW9uLmdldFN0YXJ0KCk7CisgICAgICAgICAgICBUZXh0T2Zmc2V0ICBzZWxFbmQgPSBmU2VsZWN0aW9uLmdldEVuZCgpOworCisgICAgICAgICAgICBNVGV4dCB3cml0YWJsZVRleHQgPSBuZXcgU3R5bGVkVGV4dCgpOworICAgICAgICAgICAgd3JpdGFibGVUZXh0LnJlcGxhY2UoMCwgMCwgZlRleHQsIHNlbFN0YXJ0LmZPZmZzZXQsIHNlbEVuZC5mT2Zmc2V0KTsKKyAgICAgICAgICAgIGZDb21tYW5kID0gbmV3IFRleHRDaGFuZ2VDb21tYW5kKGZQYXJlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyaXRhYmxlVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgc2VsU3RhcnQuZk9mZnNldCwgc2VsU3RhcnQsIHNlbEVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFRleHRPZmZzZXQoKSwgbmV3IFRleHRPZmZzZXQoKSk7CisKKyAgICAgICAgICAgIGZMaXN0ZW5lci50ZXh0U3RhdGVDaGFuZ2VkKFRleHRQYW5lbEV2ZW50LlVORE9fU1RBVEVfQ0hBTkdFRCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBtb3VzZURyYWdnZWQoTW91c2VFdmVudCBlKSB7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gbW91c2VFbnRlcmVkKE1vdXNlRXZlbnQgZSkgeworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1vdXNlRXhpdGVkKE1vdXNlRXZlbnQgZSkgeworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1vdXNlTW92ZWQoTW91c2VFdmVudCBlKSB7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gbW91c2VQcmVzc2VkKE1vdXNlRXZlbnQgZSkgeworCisgICAgICAgIEJlaGF2aW9yIG5leHQgPSBuZXh0QmVoYXZpb3IoKTsgLy8gc2F2ZSBiZWNhdXNlIHJlbW92ZUZyb21Pd25lcigpIHdpbGwgdHJhc2ggdGhpcworCisgICAgICAgIGVuZEludGVyYWN0aW9uKCk7CisKKyAgICAgICAgaWYgKG5leHQgIT0gbnVsbCkKKyAgICAgICAgICAgIHJldHVybiBuZXh0Lm1vdXNlUHJlc3NlZChlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1vdXNlUmVsZWFzZWQoTW91c2VFdmVudCBlKSB7CisKKyAgICAgICAgQmVoYXZpb3IgbmV4dCA9IG5leHRCZWhhdmlvcigpOyAvLyBzYXZlIGJlY2F1c2UgcmVtb3ZlRnJvbU93bmVyKCkgd2lsbCB0cmFzaCB0aGlzCisKKyAgICAgICAgZW5kSW50ZXJhY3Rpb24oKTsKKworICAgICAgICBpZiAobmV4dCAhPSBudWxsKQorICAgICAgICAgICAgcmV0dXJuIG5leHQubW91c2VSZWxlYXNlZChlKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBwaWNrVXBUeXBpbmdTdHlsZSgpIHsKKyAgICAgICAgaWYgKGZUeXBpbmdTdHlsZSA9PSBudWxsKSB7CisgICAgICAgICAgICBpbnQgc2VsU3RhcnQgPSBmU2VsZWN0aW9uLmdldFN0YXJ0KCkuZk9mZnNldDsKKyAgICAgICAgICAgIGludCBzZWxMaW1pdCA9IGZTZWxlY3Rpb24uZ2V0RW5kKCkuZk9mZnNldDsKKyAgICAgICAgICAgIGZUeXBpbmdTdHlsZSA9IFRleHRFZGl0QmVoYXZpb3IudHlwaW5nU3R5bGVBdChmVGV4dCwgc2VsU3RhcnQsIHNlbExpbWl0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBwb3N0VGV4dENoYW5nZUNvbW1hbmQoKSB7CisgICAgICAgIGlmIChmQ29tbWFuZCAhPSBudWxsKSB7CisgICAgICAgICAgICBUZXh0T2Zmc2V0ICBzZWxTdGFydCA9IGZTZWxlY3Rpb24uZ2V0U3RhcnQoKTsKKyAgICAgICAgICAgIFRleHRPZmZzZXQgIHNlbEVuZCA9IGZTZWxlY3Rpb24uZ2V0RW5kKCk7CisKKyAgICAgICAgICAgIGZDb21tYW5kLnNldE5ld1RleHQoZlRleHQuZXh0cmFjdChmQ29tbWFuZC5hZmZlY3RlZFJhbmdlU3RhcnQoKSwgc2VsU3RhcnQuZk9mZnNldCkpOworICAgICAgICAgICAgZkNvbW1hbmQuc2V0U2VsUmFuZ2VBZnRlcihzZWxTdGFydCwgc2VsRW5kKTsKKyAgICAgICAgICAgIGZDb21tYW5kTG9nLmFkZChmQ29tbWFuZCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBib29sZWFuIGhhc1BlbmRpbmdDb21tYW5kKCkgeworCisgICAgICAgIHJldHVybiBmQ29tbWFuZCAhPSBudWxsOworICAgIH0KKworICAgIEF0dHJpYnV0ZU1hcCBnZXRUeXBpbmdTdHlsZSgpIHsKKworICAgICAgICBwaWNrVXBUeXBpbmdTdHlsZSgpOworICAgICAgICByZXR1cm4gZlR5cGluZ1N0eWxlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3RleHRwYW5lbC9wYWNrYWdlLmh0bWwgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmE2YTE4NzgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC90ZXh0cGFuZWwvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsNyBAQAorPGh0bWw+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CitQcm92aWRlcyBjb21wb25lbnRzIChmb3IgYm90aCBBV1QgYW5kIFN3aW5nKQoraW4gd2hpY2ggc3R5bGVkIHRleHQgaXMgZGlzcGxheWVkIGFuZCBlZGl0ZWQsIGFuZAorcmVsYXRlZCBjbGFzc2VzLgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL0Fib3V0VGV4dC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL0Fib3V0VGV4dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZiMjA0N2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvQWJvdXRUZXh0LmphdmEKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogQWJvdXRUZXh0LmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTI6MzIgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC51aWltcGw7CisKK2ltcG9ydCBqYXZhLmF3dC5Db2xvcjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLnJlc291cmNlcy5GcmFtZVJlc291cmNlczsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZWRUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZU1vZGlmaWVyOworCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLlRleHRBdHRyaWJ1dGU7CisKK3B1YmxpYyBmaW5hbCBjbGFzcyBBYm91dFRleHQgeworICAgIAorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQ29sb3JbXSBDT0xPUlMgPSB7CisgICAgICAgIENvbG9yLnJlZCwgQ29sb3IuYmx1ZSwgQ29sb3Iud2hpdGUsIENvbG9yLmdyZWVuCisgICAgfTsKKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIE1Db25zdFRleHQgZ2V0QWJvdXRUZXh0KCkgeworCisgICAgICAgIFN0cmluZyB0ZXh0ID0gUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5BQk9VVF9URVhUKTsKKyAgICAgICAgU3R5bGVkVGV4dCBzdHlsZWRUZXh0ID0gbmV3IFN0eWxlZFRleHQodGV4dCwgQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVApOworCisgICAgICAgIGludCBsZW5ndGggPSBzdHlsZWRUZXh0Lmxlbmd0aCgpOworICAgICAgICBpbnQgaT0wOworCisgICAgICAgIGZvciAoaW50IHBhcmFncmFwaFN0YXJ0ID0gMCwgcGFyYWdyYXBoTGltaXQ7CisgICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaFN0YXJ0IDwgbGVuZ3RoOworICAgICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhTdGFydCA9IHBhcmFncmFwaExpbWl0KSB7CisKKyAgICAgICAgICAgIHBhcmFncmFwaExpbWl0ID0gc3R5bGVkVGV4dC5wYXJhZ3JhcGhMaW1pdChwYXJhZ3JhcGhTdGFydCk7CisgICAgICAgICAgICBTdHlsZU1vZGlmaWVyIG1vZGlmaWVyID0gU3R5bGVNb2RpZmllci5jcmVhdGVBZGRNb2RpZmllcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuRk9SRUdST1VORCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTE9SU1soaSsrKSVDT0xPUlMubGVuZ3RoXSk7CisgICAgICAgICAgICBzdHlsZWRUZXh0Lm1vZGlmeUNoYXJhY3RlclN0eWxlcyhwYXJhZ3JhcGhTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaExpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXIpOworICAgICAgICB9CisKKyAgICAgICAgU3R5bGVNb2RpZmllciBtb2RpZmllciA9IFN0eWxlTW9kaWZpZXIuY3JlYXRlQWRkTW9kaWZpZXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuTElORV9GTFVTSCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5GTFVTSF9DRU5URVIpOworCisgICAgICAgIHN0eWxlZFRleHQubW9kaWZ5UGFyYWdyYXBoU3R5bGVzKDAsIHRleHQubGVuZ3RoKCksIG1vZGlmaWVyKTsKKworICAgICAgICByZXR1cm4gc3R5bGVkVGV4dDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL0Jvb2xlYW5TdHlsZU1lbnVJdGVtLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvQm9vbGVhblN0eWxlTWVudUl0ZW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yMDhkMjgzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL0Jvb2xlYW5TdHlsZU1lbnVJdGVtLmphdmEKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogQm9vbGVhblN0eWxlTWVudUl0ZW0uamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo1MjozMiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbDsKKworaW1wb3J0IGphdmEudXRpbC5FdmVudE9iamVjdDsKKworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZVNldDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVNb2RpZmllcjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLk1UZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsRXZlbnQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwucmVzb3VyY2VzLk1lbnVEYXRhOworCitwdWJsaWMgZmluYWwgY2xhc3MgQm9vbGVhblN0eWxlTWVudUl0ZW0gZXh0ZW5kcyBTaW5nbGVDaGVja01lbnVJdGVtIHsKKyAgICAKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworCisgICAgcHJpdmF0ZSBmaW5hbCBPYmplY3QgZktleTsKKyAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gZkNoYXJhY3RlcjsKKworICAgIHByaXZhdGUgZmluYWwgT2JqZWN0IGZPblZhbHVlOworICAgIAorICAgIHB1YmxpYyBCb29sZWFuU3R5bGVNZW51SXRlbShPYmplY3Qgc3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdCBvblZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW51RGF0YSBtZW51RGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBjaGFyYWN0ZXIpIHsKKyAgICAgICAgCisgICAgICAgIHN1cGVyKG1lbnVEYXRhKTsKKyAgICAgICAgaWYgKG9uVmFsdWUgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiT24gdmFsdWUgY2Fubm90IGJlIG51bGwiKTsKKyAgICAgICAgfQorCisgICAgICAgIGZLZXkgPSBzdHlsZTsKKyAgICAgICAgZkNoYXJhY3RlciA9IGNoYXJhY3RlcjsKKyAgICAgICAgCisgICAgICAgIGZPblZhbHVlID0gb25WYWx1ZTsKKyAgICAgICAgZkl0ZW0uYWRkTGlzdGVuZXIobmV3IEV2ZW50TGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBldmVudE9jY3VycmVkKEV2ZW50T2JqZWN0IGV2ZW50KSB7CisgICAgICAgICAgICAgICAgU3R5bGVNb2RpZmllciBtb2RpZmllcjsKKyAgICAgICAgICAgICAgICBNVGV4dFBhbmVsIHBhbmVsID0gZ2V0VGV4dFBhbmVsKCk7CisgICAgICAgICAgICAgICAgaWYgKHBhbmVsID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJNZW51IGl0ZW0gaXMgZW5hYmxlZCB3aGVuIHBhbmVsIGlzIG51bGwhIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjb250aW51b3VzQW5kQ29tbWFuZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZVNldCBzZXQgPSBuZXcgQXR0cmlidXRlU2V0KGZLZXkpOworICAgICAgICAgICAgICAgICAgICBtb2RpZmllciA9IFN0eWxlTW9kaWZpZXIuY3JlYXRlUmVtb3ZlTW9kaWZpZXIoc2V0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1vZGlmaWVyID0gU3R5bGVNb2RpZmllci5jcmVhdGVBZGRNb2RpZmllcihmS2V5LCBmT25WYWx1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChmQ2hhcmFjdGVyID09IENIQVJBQ1RFUikgeworICAgICAgICAgICAgICAgICAgICBwYW5lbC5tb2RpZnlDaGFyYWN0ZXJTdHlsZU9uU2VsZWN0aW9uKG1vZGlmaWVyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHBhbmVsLm1vZGlmeVBhcmFncmFwaFN0eWxlT25TZWxlY3Rpb24obW9kaWZpZXIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgYm9vbGVhbiBjb250aW51b3VzQW5kQ29tbWFuZCgpIHsKKyAgICAgICAgCisgICAgICAgIE1UZXh0UGFuZWwgcGFuZWwgPSBnZXRUZXh0UGFuZWwoKTsKKworICAgICAgICBPYmplY3QgdmFsdWUgPSAoZkNoYXJhY3RlciA9PSBDSEFSQUNURVIpPyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5lbC5nZXRDaGFyYWN0ZXJTdHlsZU92ZXJTZWxlY3Rpb24oZktleSkgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsLmdldFBhcmFncmFwaFN0eWxlT3ZlclNlbGVjdGlvbihmS2V5KTsKKyAgICAgICAgcmV0dXJuIGZPblZhbHVlLmVxdWFscyh2YWx1ZSk7CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCB2b2lkIHNldENoZWNrZWQoKSB7CisgICAgICAgIAorICAgICAgICBmSXRlbS5zZXRTdGF0ZShjb250aW51b3VzQW5kQ29tbWFuZCgpKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIGJvb2xlYW4gcmVzcG9uZHNUb0V2ZW50VHlwZShpbnQgdHlwZSkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHR5cGUgPT0gVGV4dFBhbmVsRXZlbnQuU0VMRUNUSU9OX1NUWUxFU19DSEFOR0VEOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgZmluYWwgdm9pZCB0ZXh0RXZlbnRPY2N1cnJlZChUZXh0UGFuZWxFdmVudCBldmVudCkgeworICAgICAgICAKKyAgICAgICAgc2V0Q2hlY2tlZCgpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvQ2hvaWNlTWVudUl0ZW1TZXQuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9DaG9pY2VNZW51SXRlbVNldC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjM2OWRjNDYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvQ2hvaWNlTWVudUl0ZW1TZXQuamF2YQpAQCAtMCwwICsxLDk2IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBDaG9pY2VNZW51SXRlbVNldC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUyOjMyICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudWlpbXBsOworCitpbXBvcnQgamF2YS51dGlsLkV2ZW50T2JqZWN0OworCitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKKworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZVNldDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVNb2RpZmllcjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLk1UZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsRXZlbnQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwucmVzb3VyY2VzLk1lbnVEYXRhOworCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQ2hvaWNlTWVudUl0ZW1TZXQgZXh0ZW5kcyBNZW51SXRlbVNldCB7CisgICAgCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIE1JdGVtW10gZkl0ZW1zOworICAgIHByaXZhdGUgSGFzaHRhYmxlIGZJdGVtVG9TdHlsZU1hcDsKKyAgICAKKyAgICBDaG9pY2VNZW51SXRlbVNldChPYmplY3RbXSB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgTWVudURhdGFbXSBtZW51RGF0YSkgeworICAgICAgICAKKyAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggIT0gbWVudURhdGEubGVuZ3RoKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVmFsdWVzIGFuZCBuYW1lcyBtdXN0IGhhdmUgZXF1YWwgbGVuZ3RoIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZJdGVtcyA9IG5ldyBNSXRlbVttZW51RGF0YS5sZW5ndGhdOworICAgICAgICBmSXRlbVRvU3R5bGVNYXAgPSBuZXcgSGFzaHRhYmxlKG1lbnVEYXRhLmxlbmd0aCk7CisgICAgICAgIAorICAgICAgICBFdmVudExpc3RlbmVyIGxpc3RlbmVyID0gbmV3IEV2ZW50TGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBldmVudE9jY3VycmVkKEV2ZW50T2JqZWN0IGV2ZW50KSB7CisgICAgICAgICAgICAgICAgaGFuZGxlVmFsdWVTZWxlY3RlZChmSXRlbVRvU3R5bGVNYXAuZ2V0KGV2ZW50LmdldFNvdXJjZSgpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBtZW51RGF0YS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgZkl0ZW1zW2ldID0gTUl0ZW0uY3JlYXRlQ2hlY2tib3hJdGVtKG1lbnVEYXRhW2ldKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZXNbaV0gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGZJdGVtVG9TdHlsZU1hcC5wdXQoZkl0ZW1zW2ldLCB2YWx1ZXNbaV0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZkl0ZW1zW2ldLmFkZExpc3RlbmVyKGxpc3RlbmVyKTsKKyAgICAgICAgICAgIGZJdGVtc1tpXS5zZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCBoYW5kbGVWYWx1ZVNlbGVjdGVkKE9iamVjdCBpdGVtKTsKKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgT2JqZWN0IGdldEN1cnJlbnRWYWx1ZSgpOworICAgIAorICAgIHByb3RlY3RlZCBmaW5hbCB2b2lkIHNldENoZWNrZWQoKSB7CisgICAgICAgIAorICAgICAgICBPYmplY3QgdmFsdWUgPSBnZXRDdXJyZW50VmFsdWUoKTsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGZJdGVtcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgT2JqZWN0IGl0ZW1WYWwgPSBmSXRlbVRvU3R5bGVNYXAuZ2V0KGZJdGVtc1tpXSk7CisgICAgICAgICAgICBpZiAoaXRlbVZhbCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgZkl0ZW1zW2ldLnNldFN0YXRlKHZhbHVlID09IG51bGwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZkl0ZW1zW2ldLnNldFN0YXRlKGl0ZW1WYWwuZXF1YWxzKHZhbHVlKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgZmluYWwgdm9pZCB0ZXh0UGFuZWxDaGFuZ2VkKCkgeworICAgICAgICAKKyAgICAgICAgTVRleHRQYW5lbCB0ZXh0UGFuZWwgPSBnZXRUZXh0UGFuZWwoKTsKKyAgICAgICAgaWYgKHRleHRQYW5lbCA9PSBudWxsKSB7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBmSXRlbXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBmSXRlbXNbaV0uc2V0RW5hYmxlZChmYWxzZSk7CisgICAgICAgICAgICAgICAgZkl0ZW1zW2ldLnNldFN0YXRlKGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGZJdGVtcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGZJdGVtc1tpXS5zZXRFbmFibGVkKHRydWUpOworICAgICAgICAgICAgICAgIHNldENoZWNrZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9Db21tYW5kTWVudUl0ZW0uamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9Db21tYW5kTWVudUl0ZW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kYzg5Yjg1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL0NvbW1hbmRNZW51SXRlbS5qYXZhCkBAIC0wLDAgKzEsMTk1IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBDb21tYW5kTWVudUl0ZW0uamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo1MjozMiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbDsKKworaW1wb3J0IGphdmEudXRpbC5FdmVudE9iamVjdDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLk1UZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsRXZlbnQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwucmVzb3VyY2VzLk1lbnVEYXRhOworCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQ29tbWFuZE1lbnVJdGVtIGV4dGVuZHMgTWVudUl0ZW1TZXQgeworICAgIAorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSAvKmZpbmFsKi8gTUl0ZW0gZkl0ZW07CisgICAgCisgICAgcHJvdGVjdGVkIGFic3RyYWN0IGJvb2xlYW4gaXNFbmFibGVkKCk7CisgICAgcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgcGVyZm9ybUFjdGlvbigpOworCisgICAgcHJvdGVjdGVkIENvbW1hbmRNZW51SXRlbShNZW51RGF0YSBkYXRhKSB7CisgICAgICAgIAorICAgICAgICB0aGlzKGRhdGEsIGZhbHNlKTsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIENvbW1hbmRNZW51SXRlbShNZW51RGF0YSBkYXRhLCBib29sZWFuIGVuYWJsZUJ5RGVmYXVsdCkgeworICAgICAgICAKKyAgICAgICAgZkl0ZW0gPSBNSXRlbS5jcmVhdGVJdGVtKGRhdGEpOworICAgICAgICBmSXRlbS5hZGRMaXN0ZW5lcihuZXcgRXZlbnRMaXN0ZW5lcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGV2ZW50T2NjdXJyZWQoRXZlbnRPYmplY3QgZXZlbnQpIHsKKyAgICAgICAgICAgICAgICBwZXJmb3JtQWN0aW9uKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICBmSXRlbS5zZXRFbmFibGVkKGVuYWJsZUJ5RGVmYXVsdCk7CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCB2b2lkIHRleHRQYW5lbENoYW5nZWQoKSB7CisgICAgICAgIAorICAgICAgICBNVGV4dFBhbmVsIHRleHRQYW5lbCA9IGdldFRleHRQYW5lbCgpOworICAgICAgICBpZiAodGV4dFBhbmVsID09IG51bGwpIHsKKyAgICAgICAgICAgIGZJdGVtLnNldEVuYWJsZWQoZmFsc2UpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZkl0ZW0uc2V0RW5hYmxlZChpc0VuYWJsZWQoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIGZpbmFsIHZvaWQgdGV4dEV2ZW50T2NjdXJyZWQoVGV4dFBhbmVsRXZlbnQgZXZlbnQpIHsKKyAgICAgICAgCisgICAgICAgIGZJdGVtLnNldEVuYWJsZWQoaXNFbmFibGVkKCkpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIEN1dENvcHlDbGVhciBleHRlbmRzIENvbW1hbmRNZW51SXRlbSB7CisgICAgICAgIAorICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDVVQgPSAwOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT1BZID0gMTsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ0xFQVIgPSAyOworCisgICAgICAgIHByaXZhdGUgZmluYWwgaW50IGZLaW5kOworICAgICAgICAKKyAgICAgICAgcHVibGljIEN1dENvcHlDbGVhcihNZW51RGF0YSBtZW51RGF0YSwgaW50IGtpbmQpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3VwZXIobWVudURhdGEpOworICAgICAgICAgICAgaWYgKGtpbmQgIT0gQ1VUICYmIGtpbmQgIT0gQ09QWSAmJiBraW5kICE9IENMRUFSKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBtZW51IGtpbmQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZLaW5kID0ga2luZDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHJvdGVjdGVkIGJvb2xlYW4gaXNFbmFibGVkKCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBNVGV4dFBhbmVsIHBhbmVsID0gZ2V0VGV4dFBhbmVsKCk7CisgICAgICAgICAgICByZXR1cm4gcGFuZWwuZ2V0U2VsZWN0aW9uU3RhcnQoKSAhPSBwYW5lbC5nZXRTZWxlY3Rpb25FbmQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIGJvb2xlYW4gcmVzcG9uZHNUb0V2ZW50VHlwZShpbnQgdHlwZSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gdHlwZSA9PSBUZXh0UGFuZWxFdmVudC5TRUxFQ1RJT05fRU1QVFlfQ0hBTkdFRDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgcGVyZm9ybUFjdGlvbigpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTVRleHRQYW5lbCBwYW5lbCA9IGdldFRleHRQYW5lbCgpOworICAgICAgICAgICAgc3dpdGNoIChmS2luZCkgeworICAgICAgICAgICAgICAgIGNhc2UgQ1VUOgorICAgICAgICAgICAgICAgICAgICBwYW5lbC5jdXQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDT1BZOgorICAgICAgICAgICAgICAgICAgICBwYW5lbC5jb3B5KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ0xFQVI6CisgICAgICAgICAgICAgICAgICAgIHBhbmVsLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2xhc3MgVW5kb1JlZG8gZXh0ZW5kcyBDb21tYW5kTWVudUl0ZW0geworICAgICAgICAKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBib29sZWFuIFVORE8gPSB0cnVlOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGJvb2xlYW4gUkVETyA9IGZhbHNlOworICAgICAgICAKKyAgICAgICAgcHJpdmF0ZSBib29sZWFuIGZLaW5kOworICAgICAgICAKKyAgICAgICAgcHVibGljIFVuZG9SZWRvKE1lbnVEYXRhIG1lbnVEYXRhLCBib29sZWFuIGtpbmQpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3VwZXIobWVudURhdGEpOworICAgICAgICAgICAgZktpbmQgPSBraW5kOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwcm90ZWN0ZWQgYm9vbGVhbiBpc0VuYWJsZWQoKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE1UZXh0UGFuZWwgcGFuZWwgPSBnZXRUZXh0UGFuZWwoKTsKKyAgICAgICAgICAgIGlmIChmS2luZCA9PSBVTkRPKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhbmVsLmNhblVuZG8oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBwYW5lbC5jYW5SZWRvKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiByZXNwb25kc1RvRXZlbnRUeXBlKGludCB0eXBlKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiB0eXBlID09IFRleHRQYW5lbEV2ZW50LlVORE9fU1RBVEVfQ0hBTkdFRDsKKyAgICAgICAgfQorCisgICAgICAgIHByb3RlY3RlZCB2b2lkIHBlcmZvcm1BY3Rpb24oKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIE1UZXh0UGFuZWwgcGFuZWwgPSBnZXRUZXh0UGFuZWwoKTsKKyAgICAgICAgICAgIGlmIChmS2luZCA9PSBVTkRPKSB7CisgICAgICAgICAgICAgICAgcGFuZWwudW5kbygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcGFuZWwucmVkbygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBjbGFzcyBQYXN0ZSBleHRlbmRzIENvbW1hbmRNZW51SXRlbSB7CisgICAgICAgIAorICAgICAgICBwdWJsaWMgUGFzdGUoTWVudURhdGEgbWVudURhdGEpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc3VwZXIobWVudURhdGEpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwcm90ZWN0ZWQgYm9vbGVhbiBpc0VuYWJsZWQoKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiBnZXRUZXh0UGFuZWwoKS5jbGlwYm9hcmROb3RFbXB0eSgpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gcmVzcG9uZHNUb0V2ZW50VHlwZShpbnQgdHlwZSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gdHlwZSA9PSBUZXh0UGFuZWxFdmVudC5DTElQQk9BUkRfQ0hBTkdFRDsKKyAgICAgICAgfQorCisgICAgICAgIHByb3RlY3RlZCB2b2lkIHBlcmZvcm1BY3Rpb24oKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGdldFRleHRQYW5lbCgpLnBhc3RlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIFNlbGVjdEFsbCBleHRlbmRzIENvbW1hbmRNZW51SXRlbSB7CisgICAgICAgIAorICAgICAgICBwdWJsaWMgU2VsZWN0QWxsKE1lbnVEYXRhIG1lbnVEYXRhKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN1cGVyKG1lbnVEYXRhKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHJvdGVjdGVkIGJvb2xlYW4gaXNFbmFibGVkKCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sZWFuIHJlc3BvbmRzVG9FdmVudFR5cGUoaW50IHR5cGUpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgcGVyZm9ybUFjdGlvbigpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZ2V0VGV4dFBhbmVsKCkuc2VsZWN0QWxsKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvRGlhbG9nSXRlbS5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL0RpYWxvZ0l0ZW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wNzNhZTJiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL0RpYWxvZ0l0ZW0uamF2YQpAQCAtMCwwICsxLDc0IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBEaWFsb2dJdGVtLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTI6MzIgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC51aWltcGw7CisKK2ltcG9ydCBqYXZhLmF3dC5XaW5kb3c7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93QWRhcHRlcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dFdmVudDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLk1UZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsRXZlbnQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwucmVzb3VyY2VzLk1lbnVEYXRhOworCitwdWJsaWMgZmluYWwgY2xhc3MgRGlhbG9nSXRlbSBleHRlbmRzIENvbW1hbmRNZW51SXRlbSB7CisgICAgCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwdWJsaWMgc3RhdGljIGFic3RyYWN0IGNsYXNzIERpYWxvZ0ZhY3RvcnkgeworICAgICAgICAKKyAgICAgICAgcHVibGljIGFic3RyYWN0IFdpbmRvdyBjcmVhdGVEaWFsb2coTVRleHRQYW5lbCB0ZXh0UGFuZWwpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIERpYWxvZ0ZhY3RvcnkgZkRpYWxvZ0ZhY3Rvcnk7CisgICAgcHJpdmF0ZSBXaW5kb3cgZkRpYWxvZyA9IG51bGw7CisgICAgCisgICAgcHVibGljIERpYWxvZ0l0ZW0oTWVudURhdGEgbWVudURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgRGlhbG9nRmFjdG9yeSBkaWFsb2dGYWN0b3J5KSB7CisgICAgICAgIAorICAgICAgICBzdXBlcihtZW51RGF0YSwgdHJ1ZSk7CisgICAgICAgIGZEaWFsb2dGYWN0b3J5ID0gZGlhbG9nRmFjdG9yeTsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIHZvaWQgdGV4dFBhbmVsQ2hhbmdlZCgpIHsKKyAgICAgICAgLy8gZG8gbm90aGluZworICAgIH0KKyAgICAgICAgCisgICAgcHJvdGVjdGVkIGJvb2xlYW4gaXNFbmFibGVkKCkgeworICAgICAgICAgICAgCisgICAgICAgIC8vIHNob3VsZCBuZXZlciBnZXQgY2FsbGVkLi4uCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHJlc3BvbmRzVG9FdmVudFR5cGUoaW50IHR5cGUpIHsKKyAgICAgICAgICAgIAorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHJvdGVjdGVkIHZvaWQgcGVyZm9ybUFjdGlvbigpIHsKKworICAgICAgICBpZiAoZkRpYWxvZyA9PSBudWxsKSB7CisgICAgICAgICAgICBNVGV4dFBhbmVsIHBhbmVsID0gZ2V0VGV4dFBhbmVsKCk7CisgICAgICAgICAgICBpZiAocGFuZWwgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGZEaWFsb2cgPSBmRGlhbG9nRmFjdG9yeS5jcmVhdGVEaWFsb2cocGFuZWwpOworICAgICAgICAgICAgICAgIGZEaWFsb2cuYWRkV2luZG93TGlzdGVuZXIobmV3IFdpbmRvd0FkYXB0ZXIoKSB7CisgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHdpbmRvd0Nsb3NlZChXaW5kb3dFdmVudCBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmRGlhbG9nID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZEaWFsb2cuc2hvdygpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvRXZlbnRMaXN0ZW5lci5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL0V2ZW50TGlzdGVuZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MDViY2U5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL0V2ZW50TGlzdGVuZXIuamF2YQpAQCAtMCwwICsxLDI0IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBFdmVudExpc3RlbmVyLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTI6MzIgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC51aWltcGw7CisKK2ltcG9ydCBqYXZhLnV0aWwuRXZlbnRPYmplY3Q7CisKK3B1YmxpYyBpbnRlcmZhY2UgRXZlbnRMaXN0ZW5lciB7CisgICAgCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwdWJsaWMgdm9pZCBldmVudE9jY3VycmVkKEV2ZW50T2JqZWN0IGV2ZW50KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvRm9udExpc3QuamF2YSBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9Gb250TGlzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjFiMDc1NjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvRm9udExpc3QuamF2YQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBGb250TGlzdC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUyOjMyICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCisvLyBSZXF1aXJlcyBKYXZhMgorcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbDsKKworaW1wb3J0IGphdmEuYXd0LkdyYXBoaWNzRW52aXJvbm1lbnQ7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworCitmaW5hbCBjbGFzcyBGb250TGlzdCB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nW10gc3RyaXBUaGVzZSA9IHsKKyAgICAgICAgIi5ib2xkIiwgIi5ib2xkaXRhbGljIiwgIi5pdGFsaWMiCisgICAgfTsKKworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0Rm9udExpc3QoKSB7CisKKyAgICAgICAgU3RyaW5nW10gbmFtZXMgPSBHcmFwaGljc0Vudmlyb25tZW50LmdldExvY2FsR3JhcGhpY3NFbnZpcm9ubWVudCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRBdmFpbGFibGVGb250RmFtaWx5TmFtZXMoKTsKKyAgICAgICAgVmVjdG9yIHYgPSBuZXcgVmVjdG9yKG5hbWVzLmxlbmd0aCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2LmFkZEVsZW1lbnQobmFtZXNbaV0pOworICAgICAgICB9CisKKyAgICAgICAgQ29sbGVjdGlvbnMuc29ydCh2KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgU3RyaW5nIGxhc3QgPSAiIjsKKyAgICAgICAgCisgICAgICAgIEl0ZXJhdG9yIGl0ZXIgPSB2Lmxpc3RJdGVyYXRvcigpOworICAgICAgICB3aGlsZSAoaXRlci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIFN0cmluZyBjdXJyZW50ID0gKFN0cmluZykgaXRlci5uZXh0KCk7CisgICAgICAgICAgICB0ZXN0U3VmZml4ZXM6IGZvciAoaW50IGk9MDsgaSA8IHN0cmlwVGhlc2UubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoY3VycmVudC5lbmRzV2l0aChzdHJpcFRoZXNlW2ldKSkgeworICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZUxlbiA9IGN1cnJlbnQubGVuZ3RoKCktc3RyaXBUaGVzZVtpXS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGJhc2UgPSBjdXJyZW50LnN1YnN0cmluZygwLCBiYXNlTGVuKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJhc2UuZXF1YWxzSWdub3JlQ2FzZShsYXN0KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaXRlci5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBsYXN0OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgdGVzdFN1ZmZpeGVzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbGFzdCA9IGN1cnJlbnQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFN0cmluZ1tdIHJlc3VsdCA9IG5ldyBTdHJpbmdbdi5zaXplKCldOworICAgICAgICB2LmNvcHlJbnRvKHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL0tleW1hcE1lbnVJdGVtU2V0LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvS2V5bWFwTWVudUl0ZW1TZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41NzRmYWEwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL0tleW1hcE1lbnVJdGVtU2V0LmphdmEKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogS2V5bWFwTWVudUl0ZW1TZXQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo1MjozMiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLktleVJlbWFwOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbEV2ZW50OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLk1UZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwucmVzb3VyY2VzLk1lbnVEYXRhOworCitwdWJsaWMgZmluYWwgY2xhc3MgS2V5bWFwTWVudUl0ZW1TZXQgZXh0ZW5kcyBDaG9pY2VNZW51SXRlbVNldCB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHB1YmxpYyBLZXltYXBNZW51SXRlbVNldChLZXlSZW1hcFtdIHZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVudURhdGFbXSBtZW51RGF0YSkgeworICAgICAgICAKKyAgICAgICAgc3VwZXIodmFsdWVzLCBtZW51RGF0YSk7CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVZhbHVlU2VsZWN0ZWQoT2JqZWN0IHZhbHVlKSB7CisgICAgICAgIAorICAgICAgICBNVGV4dFBhbmVsIHRleHRQYW5lbCA9IGdldFRleHRQYW5lbCgpOworICAgICAgICBpZiAodGV4dFBhbmVsID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTWVudSBpdGVtIGlzIGVuYWJsZWQgd2hlbiBwYW5lbCBpcyBudWxsISIpOworICAgICAgICB9CisKKyAgICAgICAgdGV4dFBhbmVsLnNldEtleVJlbWFwKChLZXlSZW1hcCkgdmFsdWUpOworICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgT2JqZWN0IGdldEN1cnJlbnRWYWx1ZSgpIHsKKyAgICAgICAgCisgICAgICAgIE1UZXh0UGFuZWwgdGV4dFBhbmVsID0gZ2V0VGV4dFBhbmVsKCk7CisgICAgICAgIGlmICh0ZXh0UGFuZWwgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJTaG91bGRuJ3QgY2FsbCB0aGlzIHdpdGhvdXQgYSB0ZXh0IHBhbmVsISIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0ZXh0UGFuZWwuZ2V0S2V5UmVtYXAoKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgdGV4dEV2ZW50T2NjdXJyZWQoVGV4dFBhbmVsRXZlbnQgZXZlbnQpIHsKKyAgICAgICAgCisgICAgICAgIHNldENoZWNrZWQoKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIGJvb2xlYW4gcmVzcG9uZHNUb0V2ZW50VHlwZShpbnQgdHlwZSkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHR5cGUgPT0gVGV4dFBhbmVsRXZlbnQuS0VZUkVNQVBfQ0hBTkdFRDsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9NSXRlbS5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL01JdGVtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZmRmMWQ2OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9NSXRlbS5qYXZhCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IE1JdGVtLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTI6MzIgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC51aWltcGw7CisKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworaW1wb3J0IGphdmEudXRpbC5FdmVudE9iamVjdDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLnJlc291cmNlcy5NZW51RGF0YTsKKworcHVibGljIGFic3RyYWN0IGNsYXNzIE1JdGVtIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBWZWN0b3IgZkxpc3RlbmVycyA9IG5ldyBWZWN0b3IoMik7CisgICAgcHJpdmF0ZSBFdmVudE9iamVjdCBmRXZlbnQgPSBuZXcgRXZlbnRPYmplY3QodGhpcyk7CisgICAgCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgc2V0RW5hYmxlZChib29sZWFuIGVuYWJsZWQpOworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHNldFN0YXRlKGJvb2xlYW4gY2hlY2tlZCk7CisgICAgCisgICAgcHVibGljIGZpbmFsIHZvaWQgYWRkTGlzdGVuZXIoRXZlbnRMaXN0ZW5lciBsaXN0ZW5lcikgeworICAgICAgICAKKyAgICAgICAgZkxpc3RlbmVycy5hZGRFbGVtZW50KGxpc3RlbmVyKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIGZpbmFsIHZvaWQgcmVtb3ZlTGlzdGVuZXIoRXZlbnRMaXN0ZW5lciBsaXN0ZW5lcikgeworICAgICAgICAKKyAgICAgICAgZkxpc3RlbmVycy5yZW1vdmVFbGVtZW50KGxpc3RlbmVyKTsKKyAgICB9CisgICAgCisgICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlU2VsZWN0ZWQoKSB7CisgICAgICAgICAgICAKKyAgICAgICAgaW50IGxlbmd0aCA9IGZMaXN0ZW5lcnMuc2l6ZSgpOworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgRXZlbnRMaXN0ZW5lciBsID0gKEV2ZW50TGlzdGVuZXIpIGZMaXN0ZW5lcnMuZWxlbWVudEF0KGkpOworICAgICAgICAgICAgbC5ldmVudE9jY3VycmVkKGZFdmVudCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLy8gZmFjdG9yeSBzdHVmZgorICAgIAorICAgIC8qKgorICAgICAqIENsaWVudHMgc2hvdWxkIHN5bmNocm9uaXplIG9uIExPQ0sgd2hpbGUgc2V0dGluZyBhbmQgdXNpbmcKKyAgICAgKiBnbG9iYWwgZmFjdG9yeS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE9iamVjdCBMT0NLID0gbmV3IE9iamVjdCgpOworICAgIAorICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJmYWNlIEl0ZW1GYWN0b3J5IHsKKyAgICAgICAgCisgICAgICAgIHB1YmxpYyBNSXRlbSBjcmVhdGVJdGVtKE1lbnVEYXRhIG1lbnVEYXRhKTsKKyAgICAgICAgcHVibGljIE1JdGVtIGNyZWF0ZUNoZWNrYm94SXRlbShNZW51RGF0YSBtZW51RGF0YSk7CisgICAgICAgIHB1YmxpYyB2b2lkIGNyZWF0ZVNlcGFyYXRvcigpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBJdGVtRmFjdG9yeSBmZ0ZhY3Rvcnk7CisgICAgCisgICAgcHVibGljIHN0YXRpYyBNSXRlbSBjcmVhdGVJdGVtKE1lbnVEYXRhIG1lbnVEYXRhKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gZmdGYWN0b3J5LmNyZWF0ZUl0ZW0obWVudURhdGEpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIE1JdGVtIGNyZWF0ZUNoZWNrYm94SXRlbShNZW51RGF0YSBtZW51RGF0YSkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZnRmFjdG9yeS5jcmVhdGVDaGVja2JveEl0ZW0obWVudURhdGEpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgc2V0SXRlbUZhY3RvcnkoSXRlbUZhY3RvcnkgZmFjdG9yeSkgeworICAgICAgICAKKyAgICAgICAgZmdGYWN0b3J5ID0gZmFjdG9yeTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyBJdGVtRmFjdG9yeSBnZXRJdGVtRmFjdG9yeSgpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmZ0ZhY3Rvcnk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL01lbnVCdWlsZGVyLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvTWVudUJ1aWxkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xZDg5YWJjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL01lbnVCdWlsZGVyLmphdmEKQEAgLTAsMCArMSwzNjggQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IE1lbnVCdWlsZGVyLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTI6MzIgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC51aWltcGw7CisKK2ltcG9ydCBqYXZhLmF3dC5Db2xvcjsKK2ltcG9ydCBqYXZhLmF3dC5GcmFtZTsKKworaW1wb3J0IGphdmEuYXd0LldpbmRvdzsKK2ltcG9ydCBqYXZhLnRleHQuTnVtYmVyRm9ybWF0OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CisKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVNYXA7CitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuVGV4dEF0dHJpYnV0ZTsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLktleVJlbWFwOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwucmVzb3VyY2VzLkZyYW1lUmVzb3VyY2VzOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLnJlc291cmNlcy5NZW51RGF0YTsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLkRpYWxvZ0l0ZW0uRGlhbG9nRmFjdG9yeTsKKworcHVibGljIGFic3RyYWN0IGNsYXNzIE1lbnVCdWlsZGVyIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgRURJVCA9IDA7CisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgU0laRSA9IDE7CisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgU1RZTEUgPSAyOworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IEZMVVNIID0gMzsKKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBLRVlNQVAgPSA0OworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IEJJREkgPSA1OworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IEFCT1VUID0gNjsKKyAgICAKKyAgICBwcml2YXRlIENvbG9yW10gY29sb3JzID0geyBDb2xvci5ibGFjaywgQ29sb3Iud2hpdGUsIENvbG9yLmdyZWVuLCBDb2xvci5ibHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvci5jeWFuLCBDb2xvci5ncmF5LCBDb2xvci5kYXJrR3JheSwgQ29sb3IubGlnaHRHcmF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2xvci5tYWdlbnRhLCBDb2xvci5vcmFuZ2UsIENvbG9yLnBpbmssIENvbG9yLnJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sb3IueWVsbG93LCBudWxsIH07CisgICAgcHJpdmF0ZSBTdHJpbmdbXSBjb2xvck5hbWVzID0geworICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5CTEFDSyksCisgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLldISVRFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VTdHJpbmcoRnJhbWVSZXNvdXJjZXMuR1JFRU4pLAorICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5CTFVFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VTdHJpbmcoRnJhbWVSZXNvdXJjZXMuQ1lBTiksCisgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLkdSQVkpLAorICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5EQVJLX0dSQVkpLAorICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5MSUdIVF9HUkFZKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VTdHJpbmcoRnJhbWVSZXNvdXJjZXMuTUFHRU5UQSksCisgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLk9SQU5HRSksCisgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLlBJTkspLAorICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5SRUQpLAorICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5ZRUxMT1cpLAorICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5OT05FKQorICAgIH07CisgICAgCisgICAgcHJvdGVjdGVkIGludFtdIGRlZmF1bHRNZW51cyA9IHsgRURJVCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVFlMRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTFVTSCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS0VZTUFQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJJREksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUJPVVQgfTsKKworICAgIHByb3RlY3RlZCBNVGV4dFBhbmVsIGZUZXh0UGFuZWw7CisgICAgcHJvdGVjdGVkIEZyYW1lIGZEaWFsb2dQYXJlbnQ7CisKKyAgICBwcm90ZWN0ZWQgTWVudUJ1aWxkZXIoKSB7CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCBmaW5hbCB2b2lkIGRvQ3JlYXRlTWVudXMoTVRleHRQYW5lbCB0ZXh0UGFuZWwsIEZyYW1lIGZyYW1lLCBpbnRbXSBtZW51cykgeworICAgIAorICAgICAgICBmVGV4dFBhbmVsID0gdGV4dFBhbmVsOworICAgICAgICBmRGlhbG9nUGFyZW50ID0gZnJhbWU7CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBtZW51cy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgc3dpdGNoKG1lbnVzW2ldKSB7CisgICAgICAgICAgICAgICAgY2FzZSBFRElUOgorICAgICAgICAgICAgICAgICAgICBjcmVhdGVFZGl0TWVudSgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFNJWkU6CisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVNpemVNZW51KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgU1RZTEU6CisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZVN0eWxlTWVudSgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEZMVVNIOgorICAgICAgICAgICAgICAgICAgICBjcmVhdGVGbHVzaE1lbnUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBLRVlNQVA6CisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUtleW1hcE1lbnUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBCSURJOgorICAgICAgICAgICAgICAgICAgICBjcmVhdGVCaWRpTWVudSgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEFCT1VUOgorICAgICAgICAgICAgICAgICAgICBjcmVhdGVBYm91dE1lbnUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCBtZW51OiAiICsgbWVudXNbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBmVGV4dFBhbmVsID0gbnVsbDsKKyAgICAgICAgZkRpYWxvZ1BhcmVudCA9IG51bGw7CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCBhYnN0cmFjdCB2b2lkIGhhbmRsZUFkZE1lbnUoU3RyaW5nIGtleSk7CisgICAgCisgICAgcHJvdGVjdGVkIGFic3RyYWN0IERpYWxvZ0ZhY3RvcnkgY3JlYXRlT2JqZWN0RGlhbG9nRmFjdG9yeShTdHJpbmcgZGlhbG9nVGl0bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGlhbG9nVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdCBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGNoYXJhY3RlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ1tdIG5hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0W10gdmFsdWVzKTsKKworICAgIHByb3RlY3RlZCBhYnN0cmFjdCBEaWFsb2dGYWN0b3J5IGNyZWF0ZU51bWJlckRpYWxvZ0ZhY3RvcnkoU3RyaW5nIGRpYWxvZ1RpdGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGRpYWxvZ1RleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3Qga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBjaGFyYWN0ZXIpOworCisgICAgcHJvdGVjdGVkIGFic3RyYWN0IERpYWxvZ0ZhY3RvcnkgY3JlYXRlQWJvdXREaWFsb2dGYWN0b3J5KCk7CisKKyAgICBwcml2YXRlIHZvaWQgY3JlYXRlRWRpdE1lbnUoKSB7CisgICAgICAgIAorICAgICAgICBoYW5kbGVBZGRNZW51KEZyYW1lUmVzb3VyY2VzLkVESVQpOworICAgICAgICAKKyAgICAgICAgbmV3IENvbW1hbmRNZW51SXRlbS5VbmRvUmVkbyhSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLlVORE8pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZE1lbnVJdGVtLlVuZG9SZWRvLlVORE8pLnNldFRleHRQYW5lbChmVGV4dFBhbmVsKTsKKyAgICAgICAgbmV3IENvbW1hbmRNZW51SXRlbS5VbmRvUmVkbyhSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLlJFRE8pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZE1lbnVJdGVtLlVuZG9SZWRvLlJFRE8pLnNldFRleHRQYW5lbChmVGV4dFBhbmVsKTsKKyAgICAgICAgTUl0ZW0uZ2V0SXRlbUZhY3RvcnkoKS5jcmVhdGVTZXBhcmF0b3IoKTsKKyAgICAgICAgbmV3IENvbW1hbmRNZW51SXRlbS5DdXRDb3B5Q2xlYXIoUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShGcmFtZVJlc291cmNlcy5DVVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRNZW51SXRlbS5DdXRDb3B5Q2xlYXIuQ1VUKS5zZXRUZXh0UGFuZWwoZlRleHRQYW5lbCk7CisgICAgICAgIG5ldyBDb21tYW5kTWVudUl0ZW0uQ3V0Q29weUNsZWFyKFJlc291cmNlVXRpbHMuZ2V0TWVudURhdGEoRnJhbWVSZXNvdXJjZXMuQ09QWSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZE1lbnVJdGVtLkN1dENvcHlDbGVhci5DT1BZKS5zZXRUZXh0UGFuZWwoZlRleHRQYW5lbCk7CisgICAgICAgIG5ldyBDb21tYW5kTWVudUl0ZW0uUGFzdGUoUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShGcmFtZVJlc291cmNlcy5QQVNURSkpLnNldFRleHRQYW5lbChmVGV4dFBhbmVsKTsKKyAgICAgICAgbmV3IENvbW1hbmRNZW51SXRlbS5DdXRDb3B5Q2xlYXIoUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShGcmFtZVJlc291cmNlcy5DTEVBUiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZE1lbnVJdGVtLkN1dENvcHlDbGVhci5DTEVBUikuc2V0VGV4dFBhbmVsKGZUZXh0UGFuZWwpOworICAgICAgICBNSXRlbS5nZXRJdGVtRmFjdG9yeSgpLmNyZWF0ZVNlcGFyYXRvcigpOworICAgICAgICBuZXcgQ29tbWFuZE1lbnVJdGVtLlNlbGVjdEFsbChSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLlNFTEVDVF9BTEwpKS5zZXRUZXh0UGFuZWwoZlRleHRQYW5lbCk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGZsb2F0W10gREVGQVVMVF9TSVpFUyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7OSwgMTAsIDEyLCAxNCwgMTgsIDI0LCAzNiwgNDgsIDcyfTsKKworICAgIHByaXZhdGUgdm9pZCBjcmVhdGVTaXplTWVudSgpIHsKKyAgICAgICAgCisgICAgICAgIGNyZWF0ZVNpemVNZW51KERFRkFVTFRfU0laRVMpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgY3JlYXRlU2l6ZU1lbnUoZmxvYXRbXSBzaXplcykgeworICAgICAgICAgICAgICAgIAorICAgICAgICBoYW5kbGVBZGRNZW51KEZyYW1lUmVzb3VyY2VzLlNJWkUpOworCisgICAgICAgIGlmIChzaXplcyAhPSBERUZBVUxUX1NJWkVTKSB7CisKKyAgICAgICAgICAgIHNpemVzID0gKGZsb2F0W10pIHNpemVzLmNsb25lKCk7CisgICAgICAgICAgICBpZiAoc2l6ZXMubGVuZ3RoID09IDApIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJzaXplcyBhcnJheSBoYXMgemVybyBsZW5ndGgiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZmxvYXQgbGFzdFZhbHVlID0gc2l6ZXNbMF07CisgICAgICAgICAgICBmb3IgKGludCBpPTE7IGkgPCBzaXplcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChzaXplc1tpXSA+PSBsYXN0VmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzaXplcyBhcnJheSBtdXN0IGJlIGluY3JlYXNpbmciKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbGFzdFZhbHVlID0gc2l6ZXNbaV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEZsb2F0W10gdmFsdWVzID0gbmV3IEZsb2F0W3NpemVzLmxlbmd0aF07CisgICAgICAgIE1lbnVEYXRhW10gbURhdGEgPSBuZXcgTWVudURhdGFbc2l6ZXMubGVuZ3RoXTsKKyAgICAgICAgTnVtYmVyRm9ybWF0IGZtdCA9IE51bWJlckZvcm1hdC5nZXROdW1iZXJJbnN0YW5jZSgpOworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgc2l6ZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHZhbHVlc1tpXSA9IG5ldyBGbG9hdChzaXplc1tpXSk7CisgICAgICAgICAgICBtRGF0YVtpXSA9IG5ldyBNZW51RGF0YShmbXQuZm9ybWF0KHNpemVzW2ldKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG5ldyBTdHlsZU1lbnVJdGVtU2V0KFRleHRBdHRyaWJ1dGUuU0laRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVudUl0ZW1TZXQuQ0hBUkFDVEVSKS5zZXRUZXh0UGFuZWwoZlRleHRQYW5lbCk7CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKGZEaWFsb2dQYXJlbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgU3RyaW5nIGRpYWxvZ1RpdGxlID0gUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5TRVRfU0laRV9USVRMRSk7CisgICAgICAgICAgICBTdHJpbmcgZGlhbG9nVGV4dCA9IFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VTdHJpbmcoRnJhbWVSZXNvdXJjZXMuU0VUX1NJWkVfTEFCRUwpOworICAgICAgICAgICAgRGlhbG9nRmFjdG9yeSBmYWN0b3J5ID0gY3JlYXRlTnVtYmVyRGlhbG9nRmFjdG9yeShkaWFsb2dUaXRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlhbG9nVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5TSVpFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW51SXRlbVNldC5DSEFSQUNURVIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIG5ldyBEaWFsb2dJdGVtKFJlc291cmNlVXRpbHMuZ2V0TWVudURhdGEoRnJhbWVSZXNvdXJjZXMuT1RIRVJfRElBTE9HKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjdG9yeSkuc2V0VGV4dFBhbmVsKGZUZXh0UGFuZWwpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBjcmVhdGVTdHlsZU1lbnUoKSB7CisgICAgICAgIAorICAgICAgICBoYW5kbGVBZGRNZW51KEZyYW1lUmVzb3VyY2VzLlNUWUxFKTsKKworICAgICAgICBPYmplY3RbXSBrZXlzID0gICAgeyBUZXh0QXR0cmlidXRlLldFSUdIVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLlBPU1RVUkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5VTkRFUkxJTkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5TVFJJS0VUSFJPVUdIIH07CisgICAgICAgIE9iamVjdFtdIHZhbHVlcyA9ICB7IFRleHRBdHRyaWJ1dGUuV0VJR0hUX0JPTEQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5QT1NUVVJFX09CTElRVUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5VTkRFUkxJTkVfT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5TVFJJS0VUSFJPVUdIX09OIH07CisgICAgICAgIE1lbnVEYXRhW10gbURhdGEgPSB7IFJlc291cmNlVXRpbHMuZ2V0TWVudURhdGEoRnJhbWVSZXNvdXJjZXMuQk9MRCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShGcmFtZVJlc291cmNlcy5JVEFMSUMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVXRpbHMuZ2V0TWVudURhdGEoRnJhbWVSZXNvdXJjZXMuVU5ERVJMSU5FKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLlNUUklLRVRIUk9VR0gpIH07CisKKyAgICAgICAgbmV3IFN1YnRyYWN0U3R5bGVNZW51SXRlbShrZXlzLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVXRpbHMuZ2V0TWVudURhdGEoRnJhbWVSZXNvdXJjZXMuUExBSU4pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVudUl0ZW1TZXQuQ0hBUkFDVEVSKS5zZXRUZXh0UGFuZWwoZlRleHRQYW5lbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIG5ldyBCb29sZWFuU3R5bGVNZW51SXRlbShrZXlzW2ldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlc1tpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRGF0YVtpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW51SXRlbVNldC5DSEFSQUNURVIpLnNldFRleHRQYW5lbChmVGV4dFBhbmVsKTsKKyAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIGlmIChmRGlhbG9nUGFyZW50ICE9IG51bGwpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgTUl0ZW0uZ2V0SXRlbUZhY3RvcnkoKS5jcmVhdGVTZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgU3RyaW5nW10gZm9udHMgPSBGb250TGlzdC5nZXRGb250TGlzdCgpOworICAgICAgICAgICAgU3RyaW5nIHRpdGxlID0gUmVzb3VyY2VVdGlscy5nZXRSZXNvdXJjZVN0cmluZyhGcmFtZVJlc291cmNlcy5TRVRfRk9OVF9USVRMRSk7CisgICAgICAgICAgICBTdHJpbmcgbGFiZWwgPSBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLlNFVF9GT05UX0xBQkVMKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgRGlhbG9nRmFjdG9yeSBmb250RiA9IGNyZWF0ZU9iamVjdERpYWxvZ0ZhY3RvcnkodGl0bGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLkZBTUlMWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0eWxlTWVudUl0ZW1TZXQuQ0hBUkFDVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250cyk7CisgICAgICAgICAgICBuZXcgRGlhbG9nSXRlbShSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLkZPTlRfRElBTE9HKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRGKS5zZXRUZXh0UGFuZWwoZlRleHRQYW5lbCk7CisKKyAgICAgICAgICAgIERpYWxvZ0ZhY3RvcnkgZm9yZWdyb3VuZEYgPSBjcmVhdGVDb2xvckRpYWxvZ0ZhY3RvcnkodHJ1ZSk7CisgICAgICAgICAgICBEaWFsb2dGYWN0b3J5IGJhY2tncm91bmRGID0gY3JlYXRlQ29sb3JEaWFsb2dGYWN0b3J5KGZhbHNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbmV3IERpYWxvZ0l0ZW0oUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShGcmFtZVJlc291cmNlcy5GT1JFQ09MT1JfRElBTE9HKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmVncm91bmRGKS5zZXRUZXh0UGFuZWwoZlRleHRQYW5lbCk7CisgICAgICAgICAgICBuZXcgRGlhbG9nSXRlbShSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLkJBQ0tDT0xPUl9ESUFMT0cpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZEYpLnNldFRleHRQYW5lbChmVGV4dFBhbmVsKTsKKyAgICAgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIERpYWxvZ0ZhY3RvcnkgY3JlYXRlQ29sb3JEaWFsb2dGYWN0b3J5KGJvb2xlYW4gZm9yZWdyb3VuZCkgeworICAgICAgICAKKyAgICAgICAgU3RyaW5nIHRpdGxlOworICAgICAgICBTdHJpbmcgbWVzc2FnZTsKKyAgICAgICAgT2JqZWN0IGtleTsKKyAgICAgICAgCisgICAgICAgIGlmIChmb3JlZ3JvdW5kKSB7CisgICAgICAgICAgICB0aXRsZSA9IFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VTdHJpbmcoRnJhbWVSZXNvdXJjZXMuU0VUX0ZPUkVHUk9VTkRfVElUTEUpOworICAgICAgICAgICAgbWVzc2FnZSA9IFJlc291cmNlVXRpbHMuZ2V0UmVzb3VyY2VTdHJpbmcoRnJhbWVSZXNvdXJjZXMuU0VUX0ZPUkVHUk9VTkRfTEFCRUwpOworICAgICAgICAgICAga2V5ID0gVGV4dEF0dHJpYnV0ZS5GT1JFR1JPVU5EOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGl0bGUgPSBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLlNFVF9CQUNLR1JPVU5EX1RJVExFKTsKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBSZXNvdXJjZVV0aWxzLmdldFJlc291cmNlU3RyaW5nKEZyYW1lUmVzb3VyY2VzLlNFVF9CQUNLR1JPVU5EX0xBQkVMKTsKKyAgICAgICAgICAgIGtleSA9IFRleHRBdHRyaWJ1dGUuQkFDS0dST1VORDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY3JlYXRlT2JqZWN0RGlhbG9nRmFjdG9yeSh0aXRsZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3R5bGVNZW51SXRlbVNldC5DSEFSQUNURVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yTmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9ycyk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBjcmVhdGVGb250TWVudSgpIHsKKyAgICAgICAgCisgICAgICAgIGhhbmRsZUFkZE1lbnUoRnJhbWVSZXNvdXJjZXMuRk9OVCk7CisgICAgICAgIAorICAgICAgICBTdHJpbmdbXSBmb250cyA9IEZvbnRMaXN0LmdldEZvbnRMaXN0KCk7CisgICAgICAgIE1lbnVEYXRhW10gbURhdGEgPSBuZXcgTWVudURhdGFbZm9udHMubGVuZ3RoXTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgbURhdGEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIG1EYXRhW2ldID0gbmV3IE1lbnVEYXRhKGZvbnRzW2ldKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbmV3IFN0eWxlTWVudUl0ZW1TZXQoVGV4dEF0dHJpYnV0ZS5GQU1JTFksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3R5bGVNZW51SXRlbVNldC5DSEFSQUNURVIpLnNldFRleHRQYW5lbChmVGV4dFBhbmVsKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIGNyZWF0ZUZsdXNoTWVudSgpIHsKKyAgICAgICAgCisgICAgICAgIGhhbmRsZUFkZE1lbnUoRnJhbWVSZXNvdXJjZXMuRkxVU0gpOworICAgICAgICAKKyAgICAgICAgT2JqZWN0W10gdmFsdWVzID0geyAgVGV4dEF0dHJpYnV0ZS5GTFVTSF9MRUFESU5HLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0QXR0cmlidXRlLkZMVVNIX0NFTlRFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5GTFVTSF9UUkFJTElORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5GVUxMWV9KVVNUSUZJRUQgfTsKKyAgICAgICAgTWVudURhdGFbXSBtRGF0YSA9IHsgUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShGcmFtZVJlc291cmNlcy5MRUFESU5HKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShGcmFtZVJlc291cmNlcy5DRU5URVIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLlRSQUlMSU5HKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShGcmFtZVJlc291cmNlcy5KVVNUSUZJRUQpIH07CisgICAgICAgIAorICAgICAgICBuZXcgU3R5bGVNZW51SXRlbVNldChUZXh0QXR0cmlidXRlLkxJTkVfRkxVU0gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbnVJdGVtU2V0LlBBUkFHUkFQSCkuc2V0VGV4dFBhbmVsKGZUZXh0UGFuZWwpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgY3JlYXRlS2V5bWFwTWVudSgpIHsKKyAgICAgICAgCisgICAgICAgIGhhbmRsZUFkZE1lbnUoRnJhbWVSZXNvdXJjZXMuS0VZTUFQKTsKKyAgICAgICAgCisgICAgICAgIEtleVJlbWFwW10gdmFsdWVzID0geyBLZXlSZW1hcC5nZXRJZGVudGl0eVJlbWFwKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleVJlbWFwLmdldEFyYWJpY1RyYW5zbGl0ZXJhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXlSZW1hcC5nZXRIZWJyZXdUcmFuc2xpdGVyYXRpb24oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5UmVtYXAuZ2V0SXNyYWVsTmlrdWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5UmVtYXAuZ2V0VGhhaUtldG1hbmVlKCkgfTsKKyAgICAgICAgTWVudURhdGFbXSBtRGF0YSA9IHsgUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShGcmFtZVJlc291cmNlcy5ERUZBVUxUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShGcmFtZVJlc291cmNlcy5BUkFCSUMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLkhFQlJFVyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVXRpbHMuZ2V0TWVudURhdGEoRnJhbWVSZXNvdXJjZXMuSVNSQUVMX05JS1VEKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShGcmFtZVJlc291cmNlcy5USEFJX0tFVE1BTkVFKSB9OworICAgICAgICAKKyAgICAgICAgbmV3IEtleW1hcE1lbnVJdGVtU2V0KHZhbHVlcywgbURhdGEpLnNldFRleHRQYW5lbChmVGV4dFBhbmVsKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIGNyZWF0ZUJpZGlNZW51KCkgeworICAgICAgICAKKyAgICAgICAgaGFuZGxlQWRkTWVudShGcmFtZVJlc291cmNlcy5CSURJKTsKKyAgICAgICAgCisgICAgICAgIE9iamVjdFtdIHZhbHVlcyA9IHsgIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuUlVOX0RJUkVDVElPTl9MVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuUlVOX0RJUkVDVElPTl9SVEwgfTsKKyAgICAgICAgTWVudURhdGFbXSBtRGF0YSA9IHsgUmVzb3VyY2VVdGlscy5nZXRNZW51RGF0YShGcmFtZVJlc291cmNlcy5ERUZBVUxUX0RJUkVDVElPTiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVXRpbHMuZ2V0TWVudURhdGEoRnJhbWVSZXNvdXJjZXMuTFRSX0RJUkVDVElPTiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVXRpbHMuZ2V0TWVudURhdGEoRnJhbWVSZXNvdXJjZXMuUlRMX0RJUkVDVElPTiksIH07CisKKyAgICAgICAgbmV3IFN0eWxlTWVudUl0ZW1TZXQoVGV4dEF0dHJpYnV0ZS5SVU5fRElSRUNUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZW51SXRlbVNldC5QQVJBR1JBUEgpLnNldFRleHRQYW5lbChmVGV4dFBhbmVsKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIGNyZWF0ZUFib3V0TWVudSgpIHsKKyAgICAgICAgCisgICAgICAgIGhhbmRsZUFkZE1lbnUoRnJhbWVSZXNvdXJjZXMuQUJPVVRfTUVOVSk7CisgICAgICAgIAorICAgICAgICBuZXcgRGlhbG9nSXRlbShSZXNvdXJjZVV0aWxzLmdldE1lbnVEYXRhKEZyYW1lUmVzb3VyY2VzLkFCT1VUX0lURU0pLCAKKyAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlQWJvdXREaWFsb2dGYWN0b3J5KCkpLnNldFRleHRQYW5lbChmVGV4dFBhbmVsKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL01lbnVJdGVtU2V0LmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvTWVudUl0ZW1TZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wY2Q5NmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL01lbnVJdGVtU2V0LmphdmEKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogTWVudUl0ZW1TZXQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo1MjozMiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbDsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLk1UZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsRXZlbnQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsTGlzdGVuZXI7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwucmVzb3VyY2VzLk1lbnVEYXRhOworCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgTWVudUl0ZW1TZXQgaW1wbGVtZW50cyBUZXh0UGFuZWxMaXN0ZW5lciB7CisgICAgCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGJvb2xlYW4gQ0hBUkFDVEVSID0gdHJ1ZTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGJvb2xlYW4gUEFSQUdSQVBIID0gZmFsc2U7CisKKyAgICBwcml2YXRlIE1UZXh0UGFuZWwgZlRleHRQYW5lbCA9IG51bGw7CisgICAgCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgdGV4dEV2ZW50T2NjdXJyZWQoVGV4dFBhbmVsRXZlbnQgZXZlbnQpOworICAgIHB1YmxpYyBhYnN0cmFjdCBib29sZWFuIHJlc3BvbmRzVG9FdmVudFR5cGUoaW50IHR5cGUpOworICAgIAorICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldFRleHRQYW5lbChNVGV4dFBhbmVsIHRleHRQYW5lbCkgeworICAgICAgICAKKyAgICAgICAgaWYgKGZUZXh0UGFuZWwgIT0gbnVsbCkgeworICAgICAgICAgICAgZlRleHRQYW5lbC5yZW1vdmVMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgfQorICAgICAgICBmVGV4dFBhbmVsID0gdGV4dFBhbmVsOworICAgICAgICBpZiAoZlRleHRQYW5lbCAhPSBudWxsKSB7CisgICAgICAgICAgICBmVGV4dFBhbmVsLmFkZExpc3RlbmVyKHRoaXMpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0ZXh0UGFuZWxDaGFuZ2VkKCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBmaW5hbCBNVGV4dFBhbmVsIGdldFRleHRQYW5lbCgpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBmVGV4dFBhbmVsOworICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgdm9pZCB0ZXh0UGFuZWxDaGFuZ2VkKCkgeworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9SZXNvdXJjZVV0aWxzLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvUmVzb3VyY2VVdGlscy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjYxNTdlYmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvUmVzb3VyY2VVdGlscy5qYXZhCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFJlc291cmNlVXRpbHMuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzo1MjozMiAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbDsKKworaW1wb3J0IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsKK2ltcG9ydCBqYXZhLnV0aWwuTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwucmVzb3VyY2VzLkZyYW1lUmVzb3VyY2VzOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLnJlc291cmNlcy5NZW51RGF0YTsKKworcHVibGljIGNsYXNzIFJlc291cmNlVXRpbHMgeworICAgIAorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBzdGF0aWMgUmVzb3VyY2VCdW5kbGUgQlVORExFOworICAgIHN0YXRpYyB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBCVU5ETEUgPSBSZXNvdXJjZUJ1bmRsZS5nZXRCdW5kbGUoImNvbS5pYm0ucmljaHRleHQudWlpbXBsLnJlc291cmNlcy5GcmFtZVJlc291cmNlcyIpOworICAgICAgICB9CisgICAgICAgIGNhdGNoKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkNvdWxkbid0IGxvYWQgcmVzb3VyY2VYWFguICAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRXhjZXB0aW9uOiAiICsgZSk7CisgICAgICAgICAgICBCVU5ETEUgPSBuZXcgRnJhbWVSZXNvdXJjZXMoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgTWVudURhdGEgZ2V0TWVudURhdGEoU3RyaW5nIGtleSkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIChNZW51RGF0YSkgQlVORExFLmdldE9iamVjdChrZXkpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRSZXNvdXJjZVN0cmluZyhTdHJpbmcga2V5KSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gQlVORExFLmdldFN0cmluZyhrZXkpOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvU2luZ2xlQ2hlY2tNZW51SXRlbS5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL1NpbmdsZUNoZWNrTWVudUl0ZW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iZTVhYzg3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL1NpbmdsZUNoZWNrTWVudUl0ZW0uamF2YQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBTaW5nbGVDaGVja01lbnVJdGVtLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTI6MzIgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC51aWltcGw7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbEV2ZW50OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLnJlc291cmNlcy5NZW51RGF0YTsKKworcHVibGljIGFic3RyYWN0IGNsYXNzIFNpbmdsZUNoZWNrTWVudUl0ZW0gZXh0ZW5kcyBNZW51SXRlbVNldCB7CisgICAgCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcm90ZWN0ZWQgTUl0ZW0gZkl0ZW07CisgICAgCisgICAgU2luZ2xlQ2hlY2tNZW51SXRlbShNZW51RGF0YSBtZW51RGF0YSkgeworICAgICAgICAKKyAgICAgICAgZkl0ZW0gPSBNSXRlbS5jcmVhdGVDaGVja2JveEl0ZW0obWVudURhdGEpOworICAgIH0KKyAgICAKKyAgICBhYnN0cmFjdCB2b2lkIHNldENoZWNrZWQoKTsKKyAgICAKKyAgICBwcm90ZWN0ZWQgZmluYWwgdm9pZCB0ZXh0UGFuZWxDaGFuZ2VkKCkgeworICAgICAgICAKKyAgICAgICAgTVRleHRQYW5lbCB0ZXh0UGFuZWwgPSBnZXRUZXh0UGFuZWwoKTsKKyAgICAgICAgaWYgKHRleHRQYW5lbCA9PSBudWxsKSB7CisgICAgICAgICAgICBmSXRlbS5zZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgICAgIGZJdGVtLnNldFN0YXRlKGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZJdGVtLnNldEVuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICBzZXRDaGVja2VkKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvU3R5bGVNZW51SXRlbVNldC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL1N0eWxlTWVudUl0ZW1TZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mY2ZmZmFiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL1N0eWxlTWVudUl0ZW1TZXQuamF2YQpAQCAtMCwwICsxLDkwIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBTdHlsZU1lbnVJdGVtU2V0LmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6NTI6MzIgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS5yaWNodGV4dC51aWltcGw7CisKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0LlN0eWxlTW9kaWZpZXI7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbEV2ZW50OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudWlpbXBsLnJlc291cmNlcy5NZW51RGF0YTsKKworcHVibGljIGZpbmFsIGNsYXNzIFN0eWxlTWVudUl0ZW1TZXQgZXh0ZW5kcyBDaG9pY2VNZW51SXRlbVNldCB7CisgICAgCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKworICAgIHByaXZhdGUgT2JqZWN0IGZLZXk7CisgICAgcHJpdmF0ZSBib29sZWFuIGZDaGFyYWN0ZXI7CisKKyAgICBwdWJsaWMgU3R5bGVNZW51SXRlbVNldChPYmplY3Qgc3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0W10gdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbnVEYXRhW10gbWVudURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBjaGFyYWN0ZXIpIHsKKyAgICAgICAgCisgICAgICAgIHN1cGVyKHZhbHVlcywgbWVudURhdGEpOworICAgICAgICBmS2V5ID0gc3R5bGU7CisgICAgICAgIGZDaGFyYWN0ZXIgPSBjaGFyYWN0ZXI7CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVZhbHVlU2VsZWN0ZWQoT2JqZWN0IHZhbHVlKSB7CisgICAgICAgIAorICAgICAgICBNVGV4dFBhbmVsIHRleHRQYW5lbCA9IGdldFRleHRQYW5lbCgpOworICAgICAgICBpZiAodGV4dFBhbmVsID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTWVudSBpdGVtIGlzIGVuYWJsZWQgd2hlbiBwYW5lbCBpcyBudWxsISIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTdHlsZU1vZGlmaWVyIG1vZGlmaWVyOworICAgICAgICBpZiAodmFsdWUgPT0gbnVsbCkgeworICAgICAgICAgICAgQXR0cmlidXRlU2V0IHNldCA9IG5ldyBBdHRyaWJ1dGVTZXQoZktleSk7CisgICAgICAgICAgICBtb2RpZmllciA9IFN0eWxlTW9kaWZpZXIuY3JlYXRlUmVtb3ZlTW9kaWZpZXIoc2V0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1vZGlmaWVyID0gU3R5bGVNb2RpZmllci5jcmVhdGVBZGRNb2RpZmllcihmS2V5LCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGlmIChmQ2hhcmFjdGVyID09IENIQVJBQ1RFUikgeworICAgICAgICAgICAgdGV4dFBhbmVsLm1vZGlmeUNoYXJhY3RlclN0eWxlT25TZWxlY3Rpb24obW9kaWZpZXIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGV4dFBhbmVsLm1vZGlmeVBhcmFncmFwaFN0eWxlT25TZWxlY3Rpb24obW9kaWZpZXIpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCBPYmplY3QgZ2V0Q3VycmVudFZhbHVlKCkgeworICAgICAgICAKKyAgICAgICAgTVRleHRQYW5lbCB0ZXh0UGFuZWwgPSBnZXRUZXh0UGFuZWwoKTsKKyAgICAgICAgaWYgKHRleHRQYW5lbCA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlNob3VsZG4ndCBjYWxsIHRoaXMgd2l0aG91dCBhIHRleHQgcGFuZWwhIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChmQ2hhcmFjdGVyID09IENIQVJBQ1RFUikgeworICAgICAgICAgICAgcmV0dXJuIHRleHRQYW5lbC5nZXRDaGFyYWN0ZXJTdHlsZU92ZXJTZWxlY3Rpb24oZktleSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gdGV4dFBhbmVsLmdldFBhcmFncmFwaFN0eWxlT3ZlclNlbGVjdGlvbihmS2V5KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRleHRFdmVudE9jY3VycmVkKFRleHRQYW5lbEV2ZW50IGV2ZW50KSB7CisgICAgICAgIAorICAgICAgICBzZXRDaGVja2VkKCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBib29sZWFuIHJlc3BvbmRzVG9FdmVudFR5cGUoaW50IHR5cGUpIHsKKyAgICAgICAgCisgICAgICAgIHJldHVybiB0eXBlID09IFRleHRQYW5lbEV2ZW50LlNFTEVDVElPTl9TVFlMRVNfQ0hBTkdFRDsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL1N1YnRyYWN0U3R5bGVNZW51SXRlbS5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL1N1YnRyYWN0U3R5bGVNZW51SXRlbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjJlNTdiZTgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvU3VidHJhY3RTdHlsZU1lbnVJdGVtLmphdmEKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFN1YnRyYWN0U3R5bGVNZW51SXRlbS5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUyOjMyICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudWlpbXBsOworCitpbXBvcnQgamF2YS51dGlsLkV2ZW50T2JqZWN0OworCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZVNldDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVNb2RpZmllcjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLk1UZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsRXZlbnQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC51aWltcGwucmVzb3VyY2VzLk1lbnVEYXRhOworCitwdWJsaWMgZmluYWwgY2xhc3MgU3VidHJhY3RTdHlsZU1lbnVJdGVtIGV4dGVuZHMgU2luZ2xlQ2hlY2tNZW51SXRlbSB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgZmluYWwgT2JqZWN0W10gZktleXM7CisgICAgCisgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIGZDaGFyYWN0ZXI7CisgICAgCisgICAgcHVibGljIFN1YnRyYWN0U3R5bGVNZW51SXRlbShPYmplY3RbXSBrZXlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVudURhdGEgbWVudURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGNoYXJhY3RlcikgeworICAgICAgICAKKyAgICAgICAgc3VwZXIobWVudURhdGEpOworICAgICAgICAKKyAgICAgICAgZktleXMgPSAoT2JqZWN0W10pIGtleXMuY2xvbmUoKTsKKyAgICAgICAgZkNoYXJhY3RlciA9IGNoYXJhY3RlcjsKKyAgICAgICAgCisgICAgICAgIEF0dHJpYnV0ZVNldCBrZXlTZXQgPSBuZXcgQXR0cmlidXRlU2V0KGtleXMpOworICAgICAgICBmaW5hbCBTdHlsZU1vZGlmaWVyIG1vZGlmaWVyID0gU3R5bGVNb2RpZmllci5jcmVhdGVSZW1vdmVNb2RpZmllcihrZXlTZXQpOworICAgICAgICAKKyAgICAgICAgZkl0ZW0uYWRkTGlzdGVuZXIobmV3IEV2ZW50TGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBldmVudE9jY3VycmVkKEV2ZW50T2JqZWN0IGV2ZW50KSB7CisgICAgICAgICAgICAgICAgTVRleHRQYW5lbCBwYW5lbCA9IGdldFRleHRQYW5lbCgpOworICAgICAgICAgICAgICAgIGlmIChwYW5lbCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiTWVudSBpdGVtIGlzIGVuYWJsZWQgd2hlbiBwYW5lbCBpcyBudWxsISIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChmQ2hhcmFjdGVyID09IENIQVJBQ1RFUikgeworICAgICAgICAgICAgICAgICAgICBwYW5lbC5tb2RpZnlDaGFyYWN0ZXJTdHlsZU9uU2VsZWN0aW9uKG1vZGlmaWVyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHBhbmVsLm1vZGlmeVBhcmFncmFwaFN0eWxlT25TZWxlY3Rpb24obW9kaWZpZXIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gb2JqZWN0c0FyZUVxdWFsKE9iamVjdCBsaHMsIE9iamVjdCByaHMpIHsKKyAgICAKKyAgICAgICAgaWYgKGxocyA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gcmhzID09IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbGhzLmVxdWFscyhyaHMpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJvdGVjdGVkIHZvaWQgc2V0Q2hlY2tlZCgpIHsKKworICAgICAgICBNVGV4dFBhbmVsIHBhbmVsID0gZ2V0VGV4dFBhbmVsKCk7CisgICAgICAgIEF0dHJpYnV0ZU1hcCBkZWZhdWx0cyA9IHBhbmVsLmdldERlZmF1bHRWYWx1ZXMoKTsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGZLZXlzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBPYmplY3QgZGVmYXVsdFYgPSBkZWZhdWx0cy5nZXQoZktleXNbaV0pOworICAgICAgICAgICAgCisgICAgICAgICAgICBPYmplY3QgdmFsdWUgPSAoZkNoYXJhY3RlciA9PSBDSEFSQUNURVIpPyAKKyAgICAgICAgICAgICAgICAgICAgcGFuZWwuZ2V0Q2hhcmFjdGVyU3R5bGVPdmVyU2VsZWN0aW9uKGZLZXlzW2ldKSA6CisgICAgICAgICAgICAgICAgICAgIHBhbmVsLmdldFBhcmFncmFwaFN0eWxlT3ZlclNlbGVjdGlvbihmS2V5c1tpXSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFvYmplY3RzQXJlRXF1YWwoZGVmYXVsdFYsIHZhbHVlKSkgeworICAgICAgICAgICAgICAgIGZJdGVtLnNldFN0YXRlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmSXRlbS5zZXRTdGF0ZSh0cnVlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiByZXNwb25kc1RvRXZlbnRUeXBlKGludCB0eXBlKSB7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHlwZSA9PSBUZXh0UGFuZWxFdmVudC5TRUxFQ1RJT05fU1RZTEVTX0NIQU5HRUQ7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBmaW5hbCB2b2lkIHRleHRFdmVudE9jY3VycmVkKFRleHRQYW5lbEV2ZW50IGV2ZW50KSB7CisgICAgICAgIAorICAgICAgICBzZXRDaGVja2VkKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL1RhYlJ1bGVySW1wbC5qYXZhIGIvc3JjL2NvbS9pYm0vcmljaHRleHQvdWlpbXBsL1RhYlJ1bGVySW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQ2OTgxYjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvVGFiUnVsZXJJbXBsLmphdmEKQEAgLTAsMCArMSw5MDkgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRhYlJ1bGVySW1wbC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMiAkICREYXRlOiAyMDAwLzA1LzEwIDIxOjUyOjUwICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudWlpbXBsOworCitpbXBvcnQgamF2YS5hd3QuQ29sb3I7CitpbXBvcnQgamF2YS5hd3QuQ29tcG9uZW50OworaW1wb3J0IGphdmEuYXd0LkRpbWVuc2lvbjsKK2ltcG9ydCBqYXZhLmF3dC5Gb250TWV0cmljczsKK2ltcG9ydCBqYXZhLmF3dC5GcmFtZTsKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczsKK2ltcG9ydCBqYXZhLmF3dC5JbWFnZTsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0FkYXB0ZXI7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuV2luZG93RXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuTW91c2VNb3Rpb25MaXN0ZW5lcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5Nb3VzZUxpc3RlbmVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50Lk1vdXNlRXZlbnQ7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuSW5wdXRFdmVudDsKKworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5UZXh0QXR0cmlidXRlOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1UYWJSdWxlcjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3RhbmRhcmRUYWJSdWxlcjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuVGFiU3RvcDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVNb2RpZmllcjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbExpc3RlbmVyOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLk1UZXh0UGFuZWw7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0cGFuZWwuVGV4dFBhbmVsOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQudGV4dHBhbmVsLlRleHRQYW5lbEV2ZW50OworCisvKioKKyAqIFRhYlJ1bGVyIGlzIGEgQ29tcG9uZW50IHdoaWNoIHByZXNlbnRzIGEgdXNlciBpbnRlcmZhY2UgZm9yCisgKiBzZXR0aW5nIHRoZSBsZWFkaW5nIG1hcmdpbiwgdHJhaWxpbmcgbWFyZ2luLCBmaXJzdCBsaW5lIGluZGVudCwKKyAqIGFuZCB0YWIgdHlwZXMgYW5kIHBvc2l0aW9ucy4KKyAqIDxwPgorICogVGFiUnVsZXIgZG9lcyBub3QgaW1wbGVtZW50IFRleHRQYW5lbExpc3RlbmVyIGRpcmVjdGx5OyAgaG93ZXZlciwKKyAqIGl0IGNhbiByZWNlaXZlIHVwZGF0ZXMgZnJvbSBhIE1UZXh0UGFuZWwuICBUbyBoYXZlIGEgVGFiUnVsZXIgbGlzdGVuCisgKiB0byBhIHBhbmVsLCBjYWxsIDxjb2RlPmxpc3RlblRvUGFuZWw8L2NvZGU+LiAgVGFiUnVsZXIgcmVzcG9uZHMgdG8KKyAqIHVzZXIgbWFuaXB1bGF0aW9uIGJ5IG1vZGlmeWluZyB0aGUgcGFyYWdyYXBoIHN0eWxlcyBvbiBpdHMgTVRleHRQYW5lbAorICogKGlmIGFueSkuCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBUYWJSdWxlckltcGwgaW1wbGVtZW50cyBNb3VzZUxpc3RlbmVyLCBNb3VzZU1vdGlvbkxpc3RlbmVyCit7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjbGFzcyBUYWJTdG9wQnVmZmVyIHsKKyAgICAgICAgcHVibGljIGludCBmUG9zaXRpb247CisgICAgICAgIHB1YmxpYyBieXRlIGZUeXBlOworCisgICAgICAgIFRhYlN0b3BCdWZmZXIoaW50IHBvc2l0aW9uLCBieXRlIHR5cGUpIHsKKyAgICAgICAgICAgIGZQb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgICAgICAgZlR5cGUgPSB0eXBlOworICAgICAgICB9CisKKyAgICAgICAgVGFiU3RvcEJ1ZmZlcihUYWJTdG9wIHRhYikgeworICAgICAgICAgICAgdGhpcyh0YWIuZ2V0UG9zaXRpb24oKSwgdGFiLmdldFR5cGUoKSk7CisgICAgICAgIH0KKworICAgICAgICBUYWJTdG9wIGdldFRhYlN0b3AoKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFRhYlN0b3AoZlBvc2l0aW9uLCBmVHlwZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjbGFzcyBUYWJSdWxlck1vZGlmaWVyIGV4dGVuZHMgU3R5bGVNb2RpZmllciB7CisKKyAgICAgICAgcHJpdmF0ZSBUYWJTdG9wIGZPbGRUYWI7IC8vIHRhYiB0byByZW1vdmUKKyAgICAgICAgcHJpdmF0ZSBUYWJTdG9wIGZOZXdUYWI7IC8vIHRhYiB0byBhZGQKKyAgICAgICAgcHJpdmF0ZSBBdHRyaWJ1dGVNYXAgZlBhbmVsRGVmYXVsdHM7CisgICAgICAgIAorICAgICAgICBUYWJSdWxlck1vZGlmaWVyKFRhYlN0b3Agb2xkVGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFRhYlN0b3AgbmV3VGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBwYW5lbERlZmF1bHRzKSB7CisgICAgICAgICAgICBmT2xkVGFiID0gb2xkVGFiOworICAgICAgICAgICAgZk5ld1RhYiA9IG5ld1RhYjsKKyAgICAgICAgICAgIGZQYW5lbERlZmF1bHRzID0gcGFuZWxEZWZhdWx0czsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBBdHRyaWJ1dGVNYXAgbW9kaWZ5U3R5bGUoQXR0cmlidXRlTWFwIG9sZFN0eWxlKSB7CisKKyAgICAgICAgICAgIE1UYWJSdWxlciBvbGRSdWxlciA9IChNVGFiUnVsZXIpIGdldFdpdGhEZWZhdWx0KFRleHRBdHRyaWJ1dGUuVEFCX1JVTEVSLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZFN0eWxlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZQYW5lbERlZmF1bHRzKTsKKyAgICAgICAgICAgIE1UYWJSdWxlciBydWxlciA9IG9sZFJ1bGVyOworCisgICAgICAgICAgICBpZiAoZk9sZFRhYiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKHJ1bGVyLmNvbnRhaW5zVGFiKGZPbGRUYWIpKSB7CisgICAgICAgICAgICAgICAgICAgIHJ1bGVyID0gcnVsZXIucmVtb3ZlVGFiKGZPbGRUYWIuZ2V0UG9zaXRpb24oKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGZOZXdUYWIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJ1bGVyID0gcnVsZXIuYWRkVGFiKGZOZXdUYWIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAocnVsZXIgIT0gb2xkUnVsZXIpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gb2xkU3R5bGUuYWRkQXR0cmlidXRlKFRleHRBdHRyaWJ1dGUuVEFCX1JVTEVSLCBydWxlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gb2xkU3R5bGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjbGFzcyBJbWFnZUNhY2hlIHsKKworICAgICAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAgICAgcHJpdmF0ZSBJbWFnZSBmSW1hZ2UgPSBudWxsOworICAgICAgICBwcml2YXRlIGJvb2xlYW4gZklzVmFsaWQgPSBmYWxzZTsKKyAgICAgICAgcHJpdmF0ZSBDb21wb25lbnQgZkNvbXBvbmVudDsgICAvLyB3b3JrYXJvdW5kIGZvciBjb21waWxlciBidWcsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNob3VsZCBqdXN0IGJlIGFibGUgdG8gc2F5IENvbXBvbmVudC50aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhpcyB3ZXJlIG5vdCBhIHN0YXRpYyBjbGFzcworICAgICAgICAKKyAgICAgICAgSW1hZ2VDYWNoZShDb21wb25lbnQgY29tcG9uZW50KSB7CisgICAgICAgIAorICAgICAgICAgICAgZkNvbXBvbmVudCA9IGNvbXBvbmVudDsKKyAgICAgICAgfQorCisgICAgICAgIEdyYXBoaWNzIGdldEdyYXBoaWNzKGludCB3aWR0aCwgaW50IGhlaWdodCkgeworCisgICAgICAgICAgICBpZiAod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBJbWFnZSBpbWFnZSA9IGZJbWFnZTsKKyAgICAgICAgICAgIGlmIChpbWFnZSA9PSBudWxsIHx8IGltYWdlLmdldFdpZHRoKGZDb21wb25lbnQpIDwgd2lkdGgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGltYWdlLmdldEhlaWdodChmQ29tcG9uZW50KSA8IGhlaWdodCkgeworCQlpZiAoIWZDb21wb25lbnQuaXNWaXNpYmxlKCkpIHsgLy8gZml4IHJhY2UgY29uZGl0aW9uIGlmIGNvbXBvbmVudCBub3QgZnVsbHkgaW5pdGlhbGl6ZWQKKwkJICAgIHJldHVybiBudWxsOworCQl9CisgICAgICAgICAgICAgICAgaW1hZ2UgPSBmQ29tcG9uZW50LmNyZWF0ZUltYWdlKHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgR3JhcGhpY3MgZyA9IGltYWdlLmdldEdyYXBoaWNzKCk7CisgICAgICAgICAgICBmSW1hZ2UgPSBpbWFnZTsKKyAgICAgICAgICAgIHJldHVybiBnOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkcmF3SW1hZ2UoR3JhcGhpY3MgZywgaW50IHgsIGludCB5LCBDb2xvciBjb2xvcikgeworCisgICAgICAgICAgICBpZiAoIWZJc1ZhbGlkKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJEcmF3aW5nIGltYWdlIHdoZW4gbm90IHZhbGlkIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBnLmRyYXdJbWFnZShmSW1hZ2UsIHgsIHksIGNvbG9yLCBmQ29tcG9uZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2xlYW4gaXNWYWxpZCgpIHsKKworICAgICAgICAgICAgcmV0dXJuIGZJc1ZhbGlkOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZXRWYWxpZChib29sZWFuIGlzVmFsaWQpIHsKKworICAgICAgICAgICAgZklzVmFsaWQgPSBpc1ZhbGlkOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgKiBUaGlzIGNsYXNzIGxpc3RlbnMgdG8gYSBNVGV4dFBhbmVsIGZvciBjaGFuZ2VzIHdoaWNoCisgICAgKiBhZmZlY3QgYSBUYWJSdWxlcidzIGFwcGVhcmFuY2UsIGFuZCB1cGRhdGVzIHRoZSBUYWJSdWxlcgorICAgICogYXMgbmVjZXNzYXJ5LgorICAgICogQHNlZSBUYWJSdWxlcgorICAgICogQHNlZSBjb20uaWJtLnJpY2h0ZXh0LnRleHRwYW5lbC5NVGV4dFBhbmVsCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjbGFzcyBVcGRhdGVyIGltcGxlbWVudHMgVGV4dFBhbmVsTGlzdGVuZXIgeworCisgICAgICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgICAgICBwcml2YXRlIFRhYlJ1bGVySW1wbCBmVGFiUnVsZXI7CisgICAgICAgIHByaXZhdGUgTVRleHRQYW5lbCBmVGV4dFBhbmVsOworCisgICAgICAgIC8qKgorICAgICAgICAqIENyZWF0ZSBhIG5ldyBUYWJSdWxlclVwZGF0ZXIuCisgICAgICAgICogQHBhcmFtIHRhYlJ1bGVyIHRoZSBUYWJSdWxlciB0byB1cGRhdGUgd2hlbiBhIGNoYW5nZSBvY2N1cnMKKyAgICAgICAgKiAgICAgaW4gdGhlIE1UZXh0UGFuZWwKKyAgICAgICAgKi8KKyAgICAgICAgVXBkYXRlcihUYWJSdWxlckltcGwgdGFiUnVsZXIpIHsKKworICAgICAgICAgICAgZlRhYlJ1bGVyID0gdGFiUnVsZXI7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgKiBSZW1vdmUgc2VsZiBhcyBsaXN0ZW5lciBmcm9tIHByZXZpb3VzIE1UZXh0UGFuZWwsCisgICAgICAgICogc2V0IGN1cnJlbnQgTVRleHRQYW5lbCBhbmQgbGlzdGVuIHRvIGl0IChpZiBub3QgbnVsbCkuCisgICAgICAgICovCisgICAgICAgIHZvaWQgc2V0VGV4dFBhbmVsKE1UZXh0UGFuZWwgdGV4dFBhbmVsKSB7CisKKyAgICAgICAgICAgIGlmIChmVGV4dFBhbmVsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBmVGV4dFBhbmVsLnJlbW92ZUxpc3RlbmVyKHRoaXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmVGV4dFBhbmVsID0gdGV4dFBhbmVsOworCisgICAgICAgICAgICBpZiAoZlRleHRQYW5lbCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgZlRleHRQYW5lbC5hZGRMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgICAgICAgICBzZXRBbGwoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgdm9pZCBzZXRBbGwoKSB7CisKKyAgICAgICAgICAgIGludCBvZmZzZXQgPSBmVGV4dFBhbmVsLmdldFNlbGVjdGlvblN0YXJ0KCk7CisgICAgICAgICAgICBib29sZWFuIGxlZnRUb1JpZ2h0ID0gZlRleHRQYW5lbC5wYXJhZ3JhcGhJc0xlZnRUb1JpZ2h0KG9mZnNldCk7CisgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgc3R5bGUgPSBmVGV4dFBhbmVsLmdldFRleHQoKS5wYXJhZ3JhcGhTdHlsZUF0KG9mZnNldCk7CisgICAgICAgICAgICBmVGFiUnVsZXIuc2V0KHN0eWxlLCBmYWxzZSk7CisgICAgICAgICAgICBmVGFiUnVsZXIuc2V0Rm9ybWF0V2lkdGgoZlRleHRQYW5lbC5nZXRGb3JtYXRXaWR0aCgpLCBmYWxzZSk7CisgICAgICAgICAgICBmVGFiUnVsZXIuc2V0TGVmdFRvUmlnaHQobGVmdFRvUmlnaHQsIHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICogVGV4dFBhbmVsTGlzdGVuZXIgbWV0aG9kLiAgVGhpcyBjbGFzcyByZXNwb25kcyB0byB0ZXh0CisgICAgICAgICogY2hhbmdlcyBieSB1cGRhdGluZyBpdHMgVGFiUnVsZXIuCisgICAgICAgICovCisgICAgICAgIHB1YmxpYyB2b2lkIHRleHRFdmVudE9jY3VycmVkKFRleHRQYW5lbEV2ZW50IGV2ZW50KSB7CisKKyAgICAgICAgICAgIGludCBjaGFuZ2VDb2RlID0gZXZlbnQuZ2V0SUQoKTsKKworICAgICAgICAgICAgaWYgKGNoYW5nZUNvZGUgPT0gZXZlbnQuU0VMRUNUSU9OX1NUWUxFU19DSEFOR0VEIHx8CisgICAgICAgICAgICAgICAgICAgIGNoYW5nZUNvZGUgPT0gZXZlbnQuVEVYVF9DSEFOR0VEKSB7CisKKyAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gZlRleHRQYW5lbC5nZXRTZWxlY3Rpb25TdGFydCgpOworICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBzdHlsZSA9IGZUZXh0UGFuZWwuZ2V0VGV4dCgpLnBhcmFncmFwaFN0eWxlQXQob2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBib29sZWFuIGxlZnRUb1JpZ2h0ID0gZlRleHRQYW5lbC5wYXJhZ3JhcGhJc0xlZnRUb1JpZ2h0KG9mZnNldCk7CisgICAgICAgICAgICAgICAgZlRhYlJ1bGVyLnNldChzdHlsZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGZUYWJSdWxlci5zZXRMZWZ0VG9SaWdodChsZWZ0VG9SaWdodCwgdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjaGFuZ2VDb2RlID09IGV2ZW50LkZPUk1BVF9XSURUSF9DSEFOR0VEKSB7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZlRhYlJ1bGVyLnNldEZvcm1hdFdpZHRoKGZUZXh0UGFuZWwuZ2V0Rm9ybWF0V2lkdGgoKSwgdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAqIFRleHRQYW5lbExpc3RlbmVyIG1ldGhvZC4KKyAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGJvb2xlYW4gcmVzcG9uZHNUb0V2ZW50VHlwZShpbnQgdHlwZSkgeworICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gdHlwZSA9PSBUZXh0UGFuZWxFdmVudC5TRUxFQ1RJT05fU1RZTEVTX0NIQU5HRUQgfHwKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9PSBUZXh0UGFuZWxFdmVudC5URVhUX0NIQU5HRUQgfHwKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9PSBUZXh0UGFuZWxFdmVudC5GT1JNQVRfV0lEVEhfQ0hBTkdFRDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZSBkZWZhdWx0IGJhY2tncm91bmQgY29sb3IgZm9yIFRhYlJ1bGVycy4KKyAgICAgKiBAc2VlICNzZXRCYWNrQ29sb3IKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIENvbG9yIERFRkFVTFRfQkFDS19DT0xPUiA9IENvbG9yLmxpZ2h0R3JheTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBrVHJhY2tOb25lID0gMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQga1RyYWNrVGFiID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQga1RyYWNrTE0gPSAyOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBrVHJhY2tGTEkgPSAzOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBrVHJhY2tUTSA9IDQ7CisKKyAgICBwcml2YXRlIENvbXBvbmVudCBmSG9zdDsKKyAgICBwcml2YXRlIE1UYWJSdWxlciBmUnVsZXI7CisgICAgcHJpdmF0ZSBpbnQgZkxlYWRpbmdNYXJnaW47CisgICAgcHJpdmF0ZSBpbnQgZkZpcnN0TGluZUluZGVudDsKKyAgICBwcml2YXRlIGludCBmRm9ybWF0V2lkdGg7CisgICAgcHJpdmF0ZSBpbnQgZlRyYWlsaW5nTWFyZ2luUG9zaXRpb247IC8vIG9wcG9zaXRlIG9mIGFjdHVhbCB0cmFpbGluZyBtYXJnaW4KKyAgICBwcml2YXRlIGJvb2xlYW4gZkxlZnRUb1JpZ2h0OworICAgIHByaXZhdGUgaW50IGZCYXNlbGluZTsKKyAgICBwcml2YXRlIGludCBmT3JpZ2luOworICAgIHByaXZhdGUgQ29sb3IgZkJhY2tDb2xvciA9IERFRkFVTFRfQkFDS19DT0xPUjsKKworICAgIHByaXZhdGUgaW50IGZUcmFja0l0ZW07IC8vIDAgLSBub25lLCAxIC0gdGFiLCAyIC0gbG0sIDMgLSBmbGksIDQgLSB0bQorICAgIHByaXZhdGUgVGFiU3RvcEJ1ZmZlciBmVHJhY2tUYWI7CisgICAgcHJpdmF0ZSBUYWJTdG9wIGZPbGRUYWI7CisgICAgcHJpdmF0ZSBpbnQgZlRyYWNrRGVsdGE7CisgICAgcHJpdmF0ZSBib29sZWFuIGZUcmFja1Zpc2libGU7CisgICAgcHJpdmF0ZSBVcGRhdGVyIGZVcGRhdGVyOworICAgIHByaXZhdGUgTVRleHRQYW5lbCBmVGV4dFBhbmVsID0gbnVsbDsKKworICAgIHByaXZhdGUgSW1hZ2VDYWNoZSBmSW1hZ2VDYWNoZTsKKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIG5ldyBUYWJSdWxlci4KKyAgICAgKiBAcGFyYW0gYmFzZWxpbmUgdGhlIHktY29vcmRpbmF0ZSBvZiB0aGUgcnVsZXIncyBiYXNlbGluZQorICAgICAqIEBwYXJhbSBvcmlnaW4gdGhlIHgtY29vcmRpbmF0ZSBpbiB0aGlzIENvbXBvbmVudCB3aGVyZQorICAgICAqICAgICB0aGUgbGVmdCBtYXJnaW4gYXBwZWFycworICAgICAqIEBwYXJhbSB0ZXh0UGFuZWwgdGhlIE1UZXh0UGFuZWwgdG8gbGlzdGVuIHRvLiAgVGhpcyBUYWJSdWxlcgorICAgICAqICAgICB3aWxsIHJlZmxlY3QgdGhlIE1UZXh0UGFuZWwncyBwYXJhZ3JhcGggc3R5bGVzLCBhbmQgdXBkYXRlCisgICAgICogICAgIHRoZSBwYXJhZ3JhcGggc3R5bGVzIHdoZW4gbWFuaXB1bGF0ZWQuCisgICAgICovCisgICAgcHVibGljIFRhYlJ1bGVySW1wbChpbnQgYmFzZWxpbmUsIAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9yaWdpbiwgCisgICAgICAgICAgICAgICAgICAgICAgICBNVGV4dFBhbmVsIHRleHRQYW5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvbmVudCBob3N0KSB7CisKKyAgICAgICAgZkhvc3QgPSBob3N0OworICAgICAgICBmSW1hZ2VDYWNoZSA9IG5ldyBJbWFnZUNhY2hlKGhvc3QpOworICAgICAgICBmVXBkYXRlciA9IG5ldyBVcGRhdGVyKHRoaXMpOworICAgICAgICBmQmFzZWxpbmUgPSBiYXNlbGluZTsKKyAgICAgICAgZk9yaWdpbiA9IG9yaWdpbjsKKyAgICAgICAgaG9zdC5hZGRNb3VzZUxpc3RlbmVyKHRoaXMpOworICAgICAgICBob3N0LmFkZE1vdXNlTW90aW9uTGlzdGVuZXIodGhpcyk7CisgICAgICAgIGlmICh0ZXh0UGFuZWwgIT0gbnVsbCkgeworICAgICAgICAgICAgbGlzdGVuVG9UZXh0UGFuZWwodGV4dFBhbmVsKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZSdWxlciA9IG5ldyBTdGFuZGFyZFRhYlJ1bGVyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBMaXN0ZW4gdG8gdGhlIGdpdmVuIE1UZXh0UGFuZWwgYW5kIHJlZmxlY3QgaXRzIGNoYW5nZXMsCisgICAgICogYW5kIHVwZGF0ZSBpdHMgcGFyYWdyYXBoIHN0eWxlcyB3aGVuIFRhYlJ1bGVyIGlzCisgICAgICogbWFuaXB1bGF0ZWQuCisgICAgICogQHBhcmFtIHRleHRQYW5lbCB0aGUgTVRleHRQYW5lbCB0byBsaXN0ZW4gdG8KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBsaXN0ZW5Ub1RleHRQYW5lbChNVGV4dFBhbmVsIHRleHRQYW5lbCkgeworCisgICAgICAgIGZUZXh0UGFuZWwgPSB0ZXh0UGFuZWw7CisgICAgICAgIGZVcGRhdGVyLnNldFRleHRQYW5lbCh0ZXh0UGFuZWwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGlzIFRhYlJ1bGVyLgorICAgICAqIEByZXR1cm4gdGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhpcyBUYWJSdWxlcgorICAgICAqLworICAgIHB1YmxpYyBDb2xvciBnZXRCYWNrQ29sb3IoKSB7CisKKyAgICAgICAgcmV0dXJuIGZCYWNrQ29sb3I7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoaXMgVGFiUnVsZXIuCisgICAgICogQHBhcmFtIGJhY2tDb2xvciB0aGUgbmV3IGJhY2tncm91bmQgY29sb3Igb2YgdGhpcyBUYWJSdWxlcgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEJhY2tDb2xvcihDb2xvciBiYWNrQ29sb3IpIHsKKworICAgICAgICBpZiAoIWJhY2tDb2xvci5lcXVhbHMoZkJhY2tDb2xvcikpIHsKKyAgICAgICAgICAgIGZCYWNrQ29sb3IgPSBiYWNrQ29sb3I7CisgICAgICAgICAgICBHcmFwaGljcyBnID0gZkhvc3QuZ2V0R3JhcGhpY3MoKTsKKyAgICAgICAgICAgIGlmIChnICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBwYWludChnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIE9iamVjdCBnZXRXaXRoRGVmYXVsdChPYmplY3Qga2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgc3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBkZWZhdWx0cykgeworICAgICAgICBPYmplY3QgdmFsdWUgPSBzdHlsZS5nZXQoa2V5KTsKKyAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHsKKyAgICAgICAgICAgIHZhbHVlID0gZGVmYXVsdHMuZ2V0KGtleSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZsb2F0IGdldEZsb2F0V2l0aERlZmF1bHQoT2JqZWN0IGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBzdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBkZWZhdWx0cykgeworICAgICAgICBPYmplY3QgdmFsdWUgPSBnZXRXaXRoRGVmYXVsdChrZXksIHN0eWxlLCBkZWZhdWx0cyk7CisgICAgICAgIHJldHVybiAoKEZsb2F0KXZhbHVlKS5mbG9hdFZhbHVlKCk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBzZXRMZWZ0VG9SaWdodChib29sZWFuIGxlZnRUb1JpZ2h0LCBib29sZWFuIHVwZGF0ZSkgeworICAgICAgICAKKyAgICAgICAgaWYgKGZMZWZ0VG9SaWdodCAhPSBsZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICBmTGVmdFRvUmlnaHQgPSBsZWZ0VG9SaWdodDsKKyAgICAgICAgICAgIHJlZHJhd1NlbGYodXBkYXRlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzZXRGb3JtYXRXaWR0aChpbnQgZm9ybWF0V2lkdGgsIGJvb2xlYW4gdXBkYXRlKSB7CisgICAgICAgIAorICAgICAgICBpZiAoZkZvcm1hdFdpZHRoICE9IGZvcm1hdFdpZHRoKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZUcmFpbGluZ01hcmdpblBvc2l0aW9uICs9IChmb3JtYXRXaWR0aCAtIGZGb3JtYXRXaWR0aCk7CisgICAgICAgICAgICBmRm9ybWF0V2lkdGggPSBmb3JtYXRXaWR0aDsKKyAgICAgICAgICAgIHJlZHJhd1NlbGYodXBkYXRlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXQgVGFiUnVsZXIgZnJvbSB2YWx1ZXMgaW4gcGFyYWdyYXBoU3R5bGUuICBPbmx5IFRhYlJ1bGVyVXBkYXRlcgorICAgICAqIHNob3VsZCBjYWxsIHRoaXMgbWV0aG9kLgorICAgICAqIEBwYXJhbSBwYXJhZ3JhcGhTdHlsZSB0aGUgcGFyYWdyYXBoIHN0eWxlIHdoaWNoIHRoZSBUYWJSdWxlciB3aWxsCisgICAgICogICAgIHJlZmxlY3QKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgc2V0KEF0dHJpYnV0ZU1hcCBwYXJhZ3JhcGhTdHlsZSwgYm9vbGVhbiB1cGRhdGUpIHsKKworICAgICAgICBBdHRyaWJ1dGVNYXAgcGFuZWxEZWZhdWx0czsKKyAgICAgICAgCisgICAgICAgIGlmIChmVGV4dFBhbmVsPT1udWxsKSB7CisgICAgICAgICAgICBwYW5lbERlZmF1bHRzID0gVGV4dFBhbmVsLmdldERlZmF1bHRTZXR0aW5ncygpLmdldERlZmF1bHRWYWx1ZXMoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICBwYW5lbERlZmF1bHRzID0gZlRleHRQYW5lbC5nZXREZWZhdWx0VmFsdWVzKCk7CisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBpbnQgbGVhZGluZ01hcmdpbiA9ICAoaW50KSBnZXRGbG9hdFdpdGhEZWZhdWx0KFRleHRBdHRyaWJ1dGUuTEVBRElOR19NQVJHSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoU3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFuZWxEZWZhdWx0cyk7CisgICAgICAgIGludCBmaXJzdExpbmVJbmRlbnQgPSAoaW50KSBnZXRGbG9hdFdpdGhEZWZhdWx0KFRleHRBdHRyaWJ1dGUuRklSU1RfTElORV9JTkRFTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaFN0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5lbERlZmF1bHRzKTsKKyAgICAgICAgaW50IHRyYWlsaW5nTWFyZ2luID0gKGludCkgZ2V0RmxvYXRXaXRoRGVmYXVsdChUZXh0QXR0cmlidXRlLlRSQUlMSU5HX01BUkdJTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhZ3JhcGhTdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW5lbERlZmF1bHRzKTsKKworICAgICAgICBNVGFiUnVsZXIgcnVsZXIgPSAoTVRhYlJ1bGVyKSBnZXRXaXRoRGVmYXVsdChUZXh0QXR0cmlidXRlLlRBQl9SVUxFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYWdyYXBoU3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhbmVsRGVmYXVsdHMpOworCisgICAgICAgIGludCBvdXJGbGkgPSBsZWFkaW5nTWFyZ2luICsgZmlyc3RMaW5lSW5kZW50OworICAgICAgICBpbnQgb3VyVG1wID0gZkZvcm1hdFdpZHRoIC0gdHJhaWxpbmdNYXJnaW47CisgICAgICAgIAorICAgICAgICBpZiAobGVhZGluZ01hcmdpbiA9PSBmTGVhZGluZ01hcmdpbiAmJgorICAgICAgICAgICAgICAgIGZGaXJzdExpbmVJbmRlbnQgPT0gb3VyRmxpICYmCisgICAgICAgICAgICAgICAgZlRyYWlsaW5nTWFyZ2luUG9zaXRpb24gPT0gb3VyVG1wICYmCisgICAgICAgICAgICAgICAgcnVsZXIuZXF1YWxzKGZSdWxlcikpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZkxlYWRpbmdNYXJnaW4gPSBsZWFkaW5nTWFyZ2luOworICAgICAgICBmRmlyc3RMaW5lSW5kZW50ID0gb3VyRmxpOworICAgICAgICBmVHJhaWxpbmdNYXJnaW5Qb3NpdGlvbiA9IG91clRtcDsKKyAgICAgICAgZlJ1bGVyID0gcnVsZXI7CisgICAgCisgICAgICAgIHJlZHJhd1NlbGYodXBkYXRlKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIHJlZHJhd1NlbGYoYm9vbGVhbiBkcmF3Tm93KSB7CisKKyAgICAgICAgZkltYWdlQ2FjaGUuc2V0VmFsaWQoZmFsc2UpOworCisgICAgICAgIEdyYXBoaWNzIGcgPSBmSG9zdC5nZXRHcmFwaGljcygpOworICAgICAgICBpZiAoZyAhPSBudWxsKQorICAgICAgICAgICAgcGFpbnQoZyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGRlYnVnZ2luZyBpbmZvLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisKKyAgICAgICAgcmV0dXJuICJUYWJSdWxlcntmTGVhZGluZ01hcmdpbj0iK2ZMZWFkaW5nTWFyZ2luKworICAgICAgICAgICAgICAgICJ9e2ZGaXJzdExpbmVJbmRlbnQ9IitmRmlyc3RMaW5lSW5kZW50KworICAgICAgICAgICAgICAgICJ9e2ZGb3JtYXRXaWR0aD0iK2ZGb3JtYXRXaWR0aCsKKyAgICAgICAgICAgICAgICAifXtmVHJhaWxpbmdNYXJnaW5Qb3NpdGlvbj0iK2ZUcmFpbGluZ01hcmdpblBvc2l0aW9uKworICAgICAgICAgICAgICAgICJ9e2ZSdWxlcj0iK2ZSdWxlcisKKyAgICAgICAgICAgICAgICAifSI7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBNVGFiUnVsZXIgcmVwcmVzZW50ZWQgYnkgdGhpcyBUYWJSdWxlci4KKyAgICAgKiBAcmV0dXJuIHRoZSBNVGFiUnVsZXIgcmVwcmVzZW50ZWQgYnkgdGhpcyBUYWJSdWxlcgorICAgICAqLworICAgIHB1YmxpYyBNVGFiUnVsZXIgZ2V0UnVsZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZSdWxlcjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGxlYWRpbmcgbWFyZ2luIG9mIHRoaXMgVGFiUnVsZXIuCisgICAgICogQHJldHVybiB0aGUgbGVhZGluZyBtYXJnaW4gb2YgdGhpcyBUYWJSdWxlcgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0TGVhZGluZ01hcmdpbigpCisgICAgeworICAgICAgICByZXR1cm4gZkxlYWRpbmdNYXJnaW47CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBmaXJzdCBsaW5lIGluZGVudCBvZiB0aGlzIFRhYlJ1bGVyLgorICAgICAqIEByZXR1cm4gdGhlIGZpcnN0IGxpbmUgaW5kZW50IG9mIHRoaXMgVGFiUnVsZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEZpcnN0TGluZUluZGVudCgpCisgICAgeworICAgICAgICByZXR1cm4gZkZpcnN0TGluZUluZGVudCAtIGZMZWFkaW5nTWFyZ2luOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgdHJhaWxpbmcgbWFyZ2luIG9mIHRoaXMgVGFiUnVsZXIuCisgICAgICogQHJldHVybiB0aGUgdHJhaWxpbmcgbWFyZ2luIG9mIHRoaXMgVGFiUnVsZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgaW50IGdldFRyYWlsaW5nTWFyZ2luKCkKKyAgICB7CisgICAgICAgIHJldHVybiBmRm9ybWF0V2lkdGggLSBmVHJhaWxpbmdNYXJnaW5Qb3NpdGlvbjsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBpbnQgdmlzdWFsVG9SdWxlclBvcyhpbnQgdmlzUG9zKSB7CisgICAgICAgIAorICAgICAgICBpZiAoZkxlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICByZXR1cm4gdmlzUG9zIC0gZk9yaWdpbjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmT3JpZ2luICsgZkZvcm1hdFdpZHRoIC0gdmlzUG9zOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByaXZhdGUgaW50IHJ1bGVyVG9WaXN1YWxQb3MoaW50IHJ1bGVyUG9zKSB7CisgICAgICAgIAorICAgICAgICBpZiAoZkxlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICByZXR1cm4gZk9yaWdpbiArIHJ1bGVyUG9zOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZPcmlnaW4gKyBmRm9ybWF0V2lkdGggLSBydWxlclBvczsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIGludCBkaXJNdWx0KCkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGZMZWZ0VG9SaWdodD8gMSA6IC0xOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBwYXJhbSB0YWJQb3NpdGlvbiB0aGUgbG9naWNhbCAocnVsZXIpIHBvc2l0aW9uIG9mIHRoZSB0YWIKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgZHJhd1RhYihHcmFwaGljcyBnLCBpbnQgdGFiUG9zaXRpb24sIGJ5dGUgdGFiVHlwZSwgaW50IHRhYlRvcCwgaW50IHRhYkJvdHRvbSkKKyAgICB7CisgICAgICAgIGludCBwb3MgPSBydWxlclRvVmlzdWFsUG9zKHRhYlBvc2l0aW9uKTsKKyAgICAgICAgaW50IHdpZCA9IDA7CisgICAgICAgIHN3aXRjaCAodGFiVHlwZSkgeworICAgICAgICAgICAgY2FzZSBUYWJTdG9wLmtMZWFkaW5nOiB3aWQgPSAzOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVGFiU3RvcC5rQ2VudGVyOiB3aWQgPSAwOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVGFiU3RvcC5rVHJhaWxpbmc6IHdpZCA9IC0zOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVGFiU3RvcC5rRGVjaW1hbDogd2lkID0gMDsgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKKyAgICAgICAgfQorICAgICAgICB3aWQgKj0gZGlyTXVsdCgpOworICAgICAgICAKKyAgICAgICAgaWYgKHRhYlR5cGUgIT0gVGFiU3RvcC5rQXV0bykgeworICAgICAgICAgICAgZy5kcmF3TGluZShwb3MsIHRhYlRvcCwgcG9zLCB0YWJCb3R0b20pOworICAgICAgICAgICAgaWYgKHdpZCAhPSAwKQorICAgICAgICAgICAgICAgIGcuZHJhd0xpbmUocG9zLCB0YWJCb3R0b20sIHBvcyArIHdpZCwgdGFiQm90dG9tKTsKKyAgICAgICAgfQorICAgICAgICBnLmRyYXdMaW5lKHBvcy0yLCB0YWJUb3ArMiwgcG9zLCB0YWJUb3ApOworICAgICAgICBnLmRyYXdMaW5lKHBvcywgdGFiVG9wLCBwb3MrMiwgdGFiVG9wKzIpOworICAgICAgICBpZiAodGFiVHlwZSA9PSBUYWJTdG9wLmtEZWNpbWFsKSB7CisgICAgICAgICAgICBnLmRyYXdMaW5lKHBvcyArIDMsIHRhYkJvdHRvbSwgcG9zICsgNCwgdGFiQm90dG9tKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBkcmF3TE0oR3JhcGhpY3MgZykKKyAgICB7CisgICAgICAgIGludCBwb3MgPSBydWxlclRvVmlzdWFsUG9zKGZMZWFkaW5nTWFyZ2luKTsKKyAgICAgICAgaW50W10geHB0cyA9IHsgcG9zLCBwb3MsIHBvcyArICg0KmRpck11bHQoKSksIHBvcyB9OworICAgICAgICBpbnRbXSB5cHRzID0geyBmQmFzZWxpbmUgKyAxMiwgZkJhc2VsaW5lICsgNywgZkJhc2VsaW5lICsgNywgZkJhc2VsaW5lICsgMTIgfTsKKyAgICAgICAgZy5maWxsUG9seWdvbih4cHRzLCB5cHRzLCAzKTsKKyAgICAgICAgZy5kcmF3UG9seWdvbih4cHRzLCB5cHRzLCA0KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZHJhd0ZMSShHcmFwaGljcyBnKQorICAgIHsKKyAgICAgICAgaW50IHBvcyA9IHJ1bGVyVG9WaXN1YWxQb3MoZkZpcnN0TGluZUluZGVudCk7CisgICAgICAgIGludFtdIHhwdHMgPSB7IHBvcywgcG9zLCBwb3MgKyAoNCpkaXJNdWx0KCkpLCBwb3MgfTsKKyAgICAgICAgaW50W10geXB0cyA9IHsgZkJhc2VsaW5lLCBmQmFzZWxpbmUgKyA1LCBmQmFzZWxpbmUgKyA1LCBmQmFzZWxpbmUgfTsKKyAgICAgICAgZy5maWxsUG9seWdvbih4cHRzLCB5cHRzLCAzKTsKKyAgICAgICAgZy5kcmF3UG9seWdvbih4cHRzLCB5cHRzLCA0KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZHJhd1JNKEdyYXBoaWNzIGcpCisgICAgeworICAgICAgICBpbnQgcG9zID0gcnVsZXJUb1Zpc3VhbFBvcyhmVHJhaWxpbmdNYXJnaW5Qb3NpdGlvbik7CisgICAgICAgIGludFtdIHhwdHMgPSB7IHBvcywgcG9zLCBwb3MgLSAoNipkaXJNdWx0KCkpLCBwb3MgfTsKKyAgICAgICAgaW50W10geXB0cyA9IHsgZkJhc2VsaW5lLCBmQmFzZWxpbmUgKyAxMiwgZkJhc2VsaW5lICsgNiwgZkJhc2VsaW5lIH07CisgICAgICAgIGcuZmlsbFBvbHlnb24oeHB0cywgeXB0cywgMyk7CisgICAgICAgIGcuZHJhd1BvbHlnb24oeHB0cywgeXB0cywgNCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGFsaWduSW50KGludCB2YWx1ZSkgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIChpbnQpKChpbnQpKHZhbHVlIC8gNC41KSAqIDQuNSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gZmdMZW5ndGhzID0geyAxMCwgMiwgNCwgMiwgNiwgMiwgNCwgMiB9OworCisgICAgLyoqCisgICAgICogQ29tcG9uZW50IG1ldGhvZCBvdmVycmlkZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBwYWludChHcmFwaGljcyBnKQorICAgIHsKKyAgICAgICAgRGltZW5zaW9uIHNpemUgPSBmSG9zdC5nZXRTaXplKCk7CisKKyAgICAgICAgaW50IHdpZHRoID0gc2l6ZS53aWR0aDsKKyAgICAgICAgaW50IGJhc2VsaW5lID0gZkJhc2VsaW5lOworICAgICAgICBpbnQgYmFzZWxpbmUyID0gYmFzZWxpbmUgKyAyOworICAgICAgICBpbnQgYmFzZWxpbmUxMCA9IGJhc2VsaW5lICsgMTA7CisgICAgICAgIGludCBiYXNlbGluZTEyID0gYmFzZWxpbmUgKyAxMjsKKworICAgICAgICBpZiAoIWZJbWFnZUNhY2hlLmlzVmFsaWQoKSkgeworCisgICAgICAgICAgICBHcmFwaGljcyBnQ2FjaGUgPSBmSW1hZ2VDYWNoZS5nZXRHcmFwaGljcyh3aWR0aCwgYmFzZWxpbmUxMiArIDEpOworICAgICAgICAgICAgaWYgKGdDYWNoZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBzZXQgYmFja2dyb3VuZCBjb2xvcgorCisgICAgICAgICAgICBnQ2FjaGUuc2V0Q29sb3IoZkJhY2tDb2xvcik7CisgICAgICAgICAgICBnQ2FjaGUuc2V0UGFpbnRNb2RlKCk7CisgICAgICAgICAgICBnQ2FjaGUuZmlsbFJlY3QoMCwgMCwgd2lkdGgsIGJhc2VsaW5lMTIgKyAxKTsKKworICAgICAgICAgICAgLy8gcGFpbnQgdGlja3MKKworICAgICAgICAgICAgZ0NhY2hlLnNldENvbG9yKENvbG9yLmJsYWNrKTsKKyAgICAgICAgICAgIGdDYWNoZS5kcmF3TGluZSgwLCAwLCB3aWR0aCwgMCk7CisgICAgICAgICAgICBnQ2FjaGUuZHJhd0xpbmUoMCwgYmFzZWxpbmUsIHdpZHRoLCBiYXNlbGluZSk7CisKKyAgICAgICAgICAgIGludFtdIGxlbmd0aHMgPSBmZ0xlbmd0aHM7CisKKyAgICAgICAgICAgIGludCBpbmRleCA9IDA7CisgICAgICAgICAgICBpbnQgaW5jaG51bSA9IDA7CisgICAgICAgICAgICBGb250TWV0cmljcyBmbSA9IG51bGw7CisgICAgICAgICAgICBpZiAoIWZMZWZ0VG9SaWdodCkgeworICAgICAgICAgICAgICAgIGZtID0gZ0NhY2hlLmdldEZvbnRNZXRyaWNzKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZkZvcm1hdFdpZHRoOyBpICs9IDkpIHsKKyAgICAgICAgICAgICAgICBpbnQgbGVuID0gbGVuZ3Roc1tpbmRleF07CisgICAgICAgICAgICAgICAgaW50IHBvcyA9IHJ1bGVyVG9WaXN1YWxQb3MoaSk7CisgICAgICAgICAgICAgICAgZ0NhY2hlLmRyYXdMaW5lKHBvcywgYmFzZWxpbmUsIHBvcywgYmFzZWxpbmUgLSBsZW4pOworCisgICAgICAgICAgICAgICAgaWYgKGluZGV4ID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHN0ciA9IEludGVnZXIudG9TdHJpbmcoaW5jaG51bSsrKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IGRyYXdYOworICAgICAgICAgICAgICAgICAgICBpZiAoZkxlZnRUb1JpZ2h0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkcmF3WCA9IHBvcyArIDI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkcmF3WCA9IHBvcyAtIGZtLnN0cmluZ1dpZHRoKHN0cikgLSAyOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgZ0NhY2hlLmRyYXdTdHJpbmcoc3RyLCBkcmF3WCwgYmFzZWxpbmUgLSAyKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoKytpbmRleCA9PSBsZW5ndGhzLmxlbmd0aCkKKyAgICAgICAgICAgICAgICAgICAgaW5kZXggPSAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBwYWludCB0YWJzCisgICAgICAgICAgICBUYWJTdG9wIHRhYiA9IGZSdWxlci5maXJzdFRhYigpOworICAgICAgICAgICAgd2hpbGUgKHRhYiAhPSBudWxsICYmIHRhYi5nZXRQb3NpdGlvbigpIDwgZlRyYWlsaW5nTWFyZ2luUG9zaXRpb24pIHsKKyAgICAgICAgICAgICAgICBib29sZWFuIGRvZHJhdyA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKHRhYi5nZXRUeXBlKCkgPT0gVGFiU3RvcC5rQXV0bykgeworICAgICAgICAgICAgICAgICAgICBpZiAodGFiLmdldFBvc2l0aW9uKCkgPD0gTWF0aC5tYXgoZkxlYWRpbmdNYXJnaW4sIGZGaXJzdExpbmVJbmRlbnQpKQorICAgICAgICAgICAgICAgICAgICAgICAgZG9kcmF3ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRhYi5nZXRQb3NpdGlvbigpID49IGZUcmFpbGluZ01hcmdpblBvc2l0aW9uKQorICAgICAgICAgICAgICAgICAgICAgICAgZG9kcmF3ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGRvZHJhdykKKyAgICAgICAgICAgICAgICAgICAgZHJhd1RhYihnQ2FjaGUsIHRhYi5nZXRQb3NpdGlvbigpLCB0YWIuZ2V0VHlwZSgpLCBiYXNlbGluZTIsIGJhc2VsaW5lMTApOworCisgICAgICAgICAgICAgICAgdGFiID0gZlJ1bGVyLm5leHRUYWIodGFiLmdldFBvc2l0aW9uKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBnQ2FjaGUuZHJhd0xpbmUoMCwgYmFzZWxpbmUxMiwgd2lkdGgsIGJhc2VsaW5lMTIpOworCisgICAgICAgICAgICAvLyBwYWludCBvdGhlcnMgZXhjZXB0IGZvciB0cmFja2VkIGl0ZW0KKyAgICAgICAgICAgIGlmIChmVHJhY2tJdGVtICE9IGtUcmFja0xNKSBkcmF3TE0oZ0NhY2hlKTsKKyAgICAgICAgICAgIGlmIChmVHJhY2tJdGVtICE9IGtUcmFja1RNKSBkcmF3Uk0oZ0NhY2hlKTsKKyAgICAgICAgICAgIGlmIChmVHJhY2tJdGVtICE9IGtUcmFja0ZMSSAmJiBmVHJhY2tJdGVtICE9IGtUcmFja0xNKSBkcmF3RkxJKGdDYWNoZSk7CisgICAgICAgICAgICBmSW1hZ2VDYWNoZS5zZXRWYWxpZCh0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGZJbWFnZUNhY2hlLmRyYXdJbWFnZShnLCAwLCAwLCBDb2xvci5saWdodEdyYXkpOworCisgICAgICAgIHN3aXRjaCAoZlRyYWNrSXRlbSkgeworICAgICAgICAgICAgY2FzZSBrVHJhY2tUYWI6IGlmIChmVHJhY2tWaXNpYmxlKSBkcmF3VGFiKGcsIGZUcmFja1RhYi5mUG9zaXRpb24sIGZUcmFja1RhYi5mVHlwZSwgYmFzZWxpbmUyLCBiYXNlbGluZTEwKTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGtUcmFja0xNOiBkcmF3TE0oZyk7IGRyYXdGTEkoZyk7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBrVHJhY2tUTTogZHJhd1JNKGcpOyBicmVhazsKKyAgICAgICAgICAgIGNhc2Uga1RyYWNrRkxJOiBkcmF3RkxJKGcpOyBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6IGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTW91c2VMaXN0ZW5lciBtZXRob2QuCisgICAgICovCisgICAgcHVibGljIHZvaWQgbW91c2VDbGlja2VkKE1vdXNlRXZlbnQgZSkge30KKyAgICAvKioKKyAgICAgKiBNb3VzZUxpc3RlbmVyIG1ldGhvZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBtb3VzZUVudGVyZWQoTW91c2VFdmVudCBlKSB7fQorICAgIC8qKgorICAgICAqIE1vdXNlTGlzdGVuZXIgbWV0aG9kLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIG1vdXNlRXhpdGVkKE1vdXNlRXZlbnQgZSkge30KKworICAgIC8qKgorICAgICAqIE1vdXNlTGlzdGVuZXIgbWV0aG9kLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIG1vdXNlUHJlc3NlZChNb3VzZUV2ZW50IGUpCisgICAgeworICAgICAgICAvLyBmaW5kIG91dCBpZiB3ZSBoaXQgYSB0YWJzdG9wCisgICAgICAgIGludCB4ID0gdmlzdWFsVG9SdWxlclBvcyhlLmdldFgoKSk7CisgICAgICAgIGludCB5ID0gZS5nZXRZKCk7CisKKyAgICAgICAgaWYgKHkgPiBmQmFzZWxpbmUgJiYgeSA8IGZCYXNlbGluZSArIDEyKSB7CisgICAgICAgICAgICBpZiAoeSA+PSBmQmFzZWxpbmUgKyA3ICYmIHggPj0gZkxlYWRpbmdNYXJnaW4gLSAzICYmIHggPD0gZkxlYWRpbmdNYXJnaW4gKyAzKSB7CisgICAgICAgICAgICAgICAgZlRyYWNrSXRlbSA9IGtUcmFja0xNOworICAgICAgICAgICAgICAgIGZUcmFja0RlbHRhID0gZkxlYWRpbmdNYXJnaW4gLSB4OworICAgICAgICAgICAgfSBlbHNlIGlmICh5IDwgZkJhc2VsaW5lICsgNyAmJiB4ID49IGZGaXJzdExpbmVJbmRlbnQgLSAzICYmIHggPD0gZkZpcnN0TGluZUluZGVudCArIDMpIHsKKyAgICAgICAgICAgICAgICBmVHJhY2tJdGVtID0ga1RyYWNrRkxJOworICAgICAgICAgICAgICAgIGZUcmFja0RlbHRhID0gZkZpcnN0TGluZUluZGVudCAtIHg7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHggPj0gZlRyYWlsaW5nTWFyZ2luUG9zaXRpb24gLSAzICYmIHggPD0gZlRyYWlsaW5nTWFyZ2luUG9zaXRpb24gKyAzKSB7CisgICAgICAgICAgICAgICAgZlRyYWNrSXRlbSA9IGtUcmFja1RNOworICAgICAgICAgICAgICAgIGZUcmFja0RlbHRhID0gZlRyYWlsaW5nTWFyZ2luUG9zaXRpb24gLSB4OworICAgICAgICAgICAgfSBlbHNlIGlmIChlLmlzQ29udHJvbERvd24oKSkgeworICAgICAgICAgICAgICAgIGZUcmFja0l0ZW0gPSBrVHJhY2tUYWI7CisgICAgICAgICAgICAgICAgZlRyYWNrVGFiID0gbmV3IFRhYlN0b3BCdWZmZXIoYWxpZ25JbnQoeCksIFRhYlN0b3Aua0xlYWRpbmcpOworICAgICAgICAgICAgICAgIGZUcmFja0RlbHRhID0gZlRyYWNrVGFiLmZQb3NpdGlvbiAtIHg7CisgICAgICAgICAgICAgICAgZlRyYWNrVmlzaWJsZSA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFRhYlN0b3AgdGFiID0gZlJ1bGVyLmZpcnN0VGFiKCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKHRhYi5nZXRUeXBlKCkgIT0gVGFiU3RvcC5rQXV0bykgeworICAgICAgICAgICAgICAgICAgICBpZiAoeCA8IHRhYi5nZXRQb3NpdGlvbigpIC0gMykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBpZiAoeCA8IHRhYi5nZXRQb3NpdGlvbigpICsgMykgeworICAgICAgICAgICAgICAgICAgICAgICAgZk9sZFRhYiA9IHRhYjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZUcmFja1RhYiA9IG5ldyBUYWJTdG9wQnVmZmVyKHRhYik7CisgICAgICAgICAgICAgICAgICAgICAgICBmUnVsZXIgPSBmUnVsZXIucmVtb3ZlVGFiKGZPbGRUYWIuZ2V0UG9zaXRpb24oKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLmdldENsaWNrQ291bnQoKSA+IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGZUcmFja1RhYi5mVHlwZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRhYlN0b3Aua0xlYWRpbmc6IGZUcmFja1RhYi5mVHlwZSA9IFRhYlN0b3Aua0NlbnRlcjsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVGFiU3RvcC5rQ2VudGVyOiBmVHJhY2tUYWIuZlR5cGUgPSBUYWJTdG9wLmtUcmFpbGluZzsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVGFiU3RvcC5rVHJhaWxpbmc6IGZUcmFja1RhYi5mVHlwZSA9IFRhYlN0b3Aua0RlY2ltYWw7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRhYlN0b3Aua0RlY2ltYWw6IGZUcmFja1RhYi5mVHlwZSA9IFRhYlN0b3Aua0xlYWRpbmc7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBmVHJhY2tJdGVtID0ga1RyYWNrVGFiOworICAgICAgICAgICAgICAgICAgICAgICAgZlRyYWNrRGVsdGEgPSB0YWIuZ2V0UG9zaXRpb24oKSAtIHg7CisgICAgICAgICAgICAgICAgICAgICAgICBmVHJhY2tWaXNpYmxlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgdGFiID0gZlJ1bGVyLm5leHRUYWIodGFiLmdldFBvc2l0aW9uKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGZUcmFja0l0ZW0gIT0ga1RyYWNrTm9uZSkgeworICAgICAgICAgICAgICAgIGZJbWFnZUNhY2hlLnNldFZhbGlkKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBwYWludChmSG9zdC5nZXRHcmFwaGljcygpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNb3VzZUxpc3RlbmVyIG1ldGhvZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBtb3VzZURyYWdnZWQoTW91c2VFdmVudCBlKQorICAgIHsKKyAgICAgICAgaW50IHggPSB2aXN1YWxUb1J1bGVyUG9zKGUuZ2V0WCgpKTsKKyAgICAgICAgaW50IHkgPSBlLmdldFkoKTsKKworICAgICAgICBpZiAoZlRyYWNrSXRlbSAhPSBrVHJhY2tOb25lKSB7CisgICAgICAgICAgICBib29sZWFuIHJlcGFpbnQgPSBmYWxzZTsKKyAgICAgICAgICAgIGJvb2xlYW4gaW5yYW5nZSA9IHkgPiBmQmFzZWxpbmUgJiYgeSA8IGZCYXNlbGluZSArIDEyOworICAgICAgICAgICAgYm9vbGVhbiBpbmJpZ3JhbmdlID0geSA+IDAgJiYgeSA8IGZIb3N0LmdldFNpemUoKS5oZWlnaHQgKyAyMDsKKyAgICAgICAgICAgIGludCBuZXdwb3MgPSBhbGlnbkludCh4ICsgZlRyYWNrRGVsdGEpOworICAgICAgICAgICAgaWYgKG5ld3BvcyA8IDApCisgICAgICAgICAgICAgICAgbmV3cG9zID0gMDsKKworICAgICAgICAgICAgc3dpdGNoIChmVHJhY2tJdGVtKSB7CisgICAgICAgICAgICAgICAgY2FzZSBrVHJhY2tUYWI6IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlucmFuZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGFpbnQgPSAhZlRyYWNrVmlzaWJsZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZUcmFja1Zpc2libGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ld3BvcyAhPSBmVHJhY2tUYWIuZlBvc2l0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZlRyYWNrVGFiLmZQb3NpdGlvbiA9IG5ld3BvczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBhaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmVHJhY2tWaXNpYmxlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmVHJhY2tWaXNpYmxlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gYnJlYWs7CisKKy8qIEl0IHdvdWxkIGJlIG5pY2UgdG8gb3B0aW9uYWxseSB0cmFjayB0aGUgbWFyZ2luICdpbmRlcGVuZGVudGx5JyBvZiB0aGUgZmlyc3QgbGluZSBpbmRlbnQuCisgVW5mb3J0dW5hdGVseSB0aGlzIG1ha2VzIGZvciBtb3JlIHdvcmsgd2hlbiB3ZSBoYXZlIG11bHRpcGxlIHBhcmFncmFwaCBzdHlsZXMgc2VsZWN0ZWQuCisgU2luY2UgaW50ZXJuYWxseSB0aGUgZmlyc3QgbGluZSBpbmRlbnQgaXMgcmVsYXRpdmUgdG8gdGhlIG1hcmdpbiwgbW92aW5nIHRoZSBtYXJnaW4KKyBpbmRlcGVuZGVudGx5IHNvIHRoYXQgYWxsIGFmZmVjdGVkIHBhcmFncmFwaHMgc2hhcmUgdGhlIHNhbWUgbWFyZ2luIGJ1dCByZXRhaW4gZmlyc3QKKyBsaW5lIGluZGVudHMgaW4gdGhlICdzYW1lJyBwb3NpdGlvbnMgbWVhbnMgdGhhdCBJIG5lZWQgdG8gYWxzbyBhZGp1c3QgdGhlIGZpcnN0IGxpbmUKKyBpbmRlbnRzIGluIGVhY2ggcGFyYWdyYXBoIGJ5IHNvbWUgZGVsdGEuIEknbSBub3QgcmVhZHkgdG8gZG8gdGhhdCB5ZXQuICovCisKKyAgICAgICAgICAgICAgICBjYXNlIGtUcmFja0xNOiB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbmJpZ3JhbmdlICYmIG5ld3BvcyAhPSBmTGVhZGluZ01hcmdpbikgeworICAgICAgICAgICAgICAgICAgICAgICAgZkZpcnN0TGluZUluZGVudCArPSBuZXdwb3MgLSBmTGVhZGluZ01hcmdpbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZMZWFkaW5nTWFyZ2luID0gbmV3cG9zOworICAgICAgICAgICAgICAgICAgICAgICAgcmVwYWludCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSBrVHJhY2tGTEk6IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluYmlncmFuZ2UgJiYgbmV3cG9zICE9IGZGaXJzdExpbmVJbmRlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZGaXJzdExpbmVJbmRlbnQgPSBuZXdwb3M7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gYnJlYWs7CisKKyAgICAgICAgICAgICAgICBjYXNlIGtUcmFja1RNOiB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbmJpZ3JhbmdlICYmIG5ld3BvcyAhPSBmVHJhaWxpbmdNYXJnaW5Qb3NpdGlvbikgeworICAgICAgICAgICAgICAgICAgICAgICAgZlRyYWlsaW5nTWFyZ2luUG9zaXRpb24gPSBuZXdwb3M7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBhaW50ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gYnJlYWs7CisgICAgICAgICAgICB9CisKKworICAgICAgICAgICAgaWYgKHJlcGFpbnQpCisgICAgICAgICAgICAgICAgcGFpbnQoZkhvc3QuZ2V0R3JhcGhpY3MoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNb3VzZUxpc3RlbmVyIG1ldGhvZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBtb3VzZVJlbGVhc2VkKE1vdXNlRXZlbnQgZSkKKyAgICB7CisgICAgICAgIGlmIChmVHJhY2tJdGVtICE9IGtUcmFja05vbmUpIHsKKyAgICAgICAgICAgIGlmIChmVHJhY2tJdGVtID09IGtUcmFja1RhYiAmJiBmVHJhY2tWaXNpYmxlKSB7CisgICAgICAgICAgICAgICAgZlJ1bGVyID0gZlJ1bGVyLmFkZFRhYihmVHJhY2tUYWIuZ2V0VGFiU3RvcCgpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZlRyYWNrVGFiID0gbnVsbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbm90aWZ5KGZUcmFja0l0ZW0pOworCisgICAgICAgICAgICBmVHJhY2tJdGVtID0ga1RyYWNrTm9uZTsKKyAgICAgICAgICAgIGZUcmFja1RhYiA9IG51bGw7CisgICAgICAgICAgICBmT2xkVGFiID0gbnVsbDsKKworICAgICAgICAgICAgZkltYWdlQ2FjaGUuc2V0VmFsaWQoZmFsc2UpOworICAgICAgICAgICAgcGFpbnQoZkhvc3QuZ2V0R3JhcGhpY3MoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNb3VzZUxpc3RlbmVyIG1ldGhvZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBtb3VzZU1vdmVkKE1vdXNlRXZlbnQgZSkge30KKworICAgIHByaXZhdGUgdm9pZCBub3RpZnkoaW50IGNoYW5nZSkKKyAgICB7CisgICAgICAgIGlmIChmVGV4dFBhbmVsICE9IG51bGwpIHsKKworICAgICAgICAgICAgU3R5bGVNb2RpZmllciBtb2RpZmllcjsKKworICAgICAgICAgICAgaWYgKGNoYW5nZSA9PSBrVHJhY2tUYWIpIHsKKyAgICAgICAgICAgICAgICBUYWJTdG9wIG5ld1RhYiA9IGZUcmFja1RhYj09bnVsbD8gbnVsbCA6IGZUcmFja1RhYi5nZXRUYWJTdG9wKCk7CisgICAgICAgICAgICAgICAgbW9kaWZpZXIgPSBuZXcgVGFiUnVsZXJNb2RpZmllcihmT2xkVGFiLCBuZXdUYWIsIGZUZXh0UGFuZWwuZ2V0RGVmYXVsdFZhbHVlcygpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIE9iamVjdCBrZXk7CisgICAgICAgICAgICAgICAgT2JqZWN0IHZhbHVlOworCisgICAgICAgICAgICAgICAgc3dpdGNoKGNoYW5nZSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIGtUcmFja0xNOgorICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0gVGV4dEF0dHJpYnV0ZS5MRUFESU5HX01BUkdJTjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IEZsb2F0KGdldExlYWRpbmdNYXJnaW4oKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBjYXNlIGtUcmFja1RNOgorICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0gVGV4dEF0dHJpYnV0ZS5UUkFJTElOR19NQVJHSU47CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IG5ldyBGbG9hdChnZXRUcmFpbGluZ01hcmdpbigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIGNhc2Uga1RyYWNrRkxJOgorICAgICAgICAgICAgICAgICAgICAgICAga2V5ID0gVGV4dEF0dHJpYnV0ZS5GSVJTVF9MSU5FX0lOREVOVDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gbmV3IEZsb2F0KGdldEZpcnN0TGluZUluZGVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgY2hhbmdlIGNvZGUuIik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbW9kaWZpZXIgPSBTdHlsZU1vZGlmaWVyLmNyZWF0ZUFkZE1vZGlmaWVyKGtleSwgdmFsdWUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmVGV4dFBhbmVsLm1vZGlmeVBhcmFncmFwaFN0eWxlT25TZWxlY3Rpb24obW9kaWZpZXIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcG9uZW50IG92ZXJyaWRlLgorICAgICAqLworICAgIHB1YmxpYyBEaW1lbnNpb24gZ2V0TWluaW11bVNpemUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBEaW1lbnNpb24oMTAwLCBmQmFzZWxpbmUgKyAxMyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcG9uZW50IG92ZXJyaWRlLgorICAgICAqLworICAgIHB1YmxpYyBEaW1lbnNpb24gZ2V0UHJlZmVycmVkU2l6ZSgpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0TWluaW11bVNpemUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvcmVzb3VyY2VzL0ZyYW1lUmVzb3VyY2VzLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvcmVzb3VyY2VzL0ZyYW1lUmVzb3VyY2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjc5NzFiZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9yZXNvdXJjZXMvRnJhbWVSZXNvdXJjZXMuamF2YQpAQCAtMCwwICsxLDIzMCBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogRnJhbWVSZXNvdXJjZXMuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMC8xMC8wNiAyMzoxNTowMyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnJpY2h0ZXh0LnVpaW1wbC5yZXNvdXJjZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LktleUV2ZW50OworCitwdWJsaWMgZmluYWwgY2xhc3MgRnJhbWVSZXNvdXJjZXMgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKy8qCisgKiBUaGVzZSBTdHJpbmdzIGFyZSBrZXlzIHRvIG90aGVyIFN0cmluZyByZXNvdXJjZXMuCisgKi8KKyAgICAvLyBNZW51IG5hbWVzCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRURJVCA9ICJFZGl0IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTSVpFID0gIlNpemUiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZPTlQgPSAiRm9udCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1RZTEUgPSAiU3R5bGUiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZMVVNIID0gIkZsdXNoIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBLRVlNQVAgPSAiS2V5bWFwIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBQk9VVF9NRU5VID0gIkFib3V0IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBCSURJID0gIkJpZGkiOworICAgIAorICAgIC8vIEJ1dHRvbnMKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPSyA9ICJPSyI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0FOQ0VMID0gIkNhbmNlbCI7CisKKyAgICAvLyBDb2xvcnMKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBCTEFDSyA9ICJCbGFjayI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgV0hJVEUgPSAiV2hpdGUiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEdSRUVOID0gIkdyZWVuIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBCTFVFID0gIkJsdWUiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENZQU4gPSAiQ3lhbiI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgR1JBWSA9ICJHcmF5IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBEQVJLX0dSQVkgPSAiRGFyayBHcmF5IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBMSUdIVF9HUkFZID0gIkxpZ2h0IEdyYXkiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE1BR0VOVEEgPSAiTWFnZW50YSI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JBTkdFID0gIk9yYW5nZSI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUElOSyA9ICJQaW5rIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBSRUQgPSAiUmVkIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBZRUxMT1cgPSAiWWVsbG93IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBOT05FID0gIk5vbmUiOworCisgICAgLy8gRGlhbG9nIHRpdGxlcyBhbmQgbWVzc2FnZXMKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTRVRfU0laRV9USVRMRSA9ICJTZXQgRm9udCBTaXplIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTRVRfU0laRV9MQUJFTCA9ICJGb250IFNpemU6IjsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNFVF9TVVBFUlNDUklQVF9USVRMRSA9ICJTZXQgU3VwZXJzY3JpcHQiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNFVF9TVVBFUlNDUklQVF9MQUJFTCA9ICJTdXBlcnNjcmlwdDoiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNFVF9TVUJTQ1JJUFRfVElUTEUgPSAiU2V0IFN1YnNjcmlwdCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0VUX1NVQlNDUklQVF9MQUJFTCA9ICJTdWJzY3JpcHQ6IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTRVRfRk9SRUdST1VORF9USVRMRSA9ICJTZXQgRm9yZWdyb3VuZCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0VUX0ZPUkVHUk9VTkRfTEFCRUwgPSAiRm9yZWdyb3VuZDoiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNFVF9CQUNLR1JPVU5EX1RJVExFID0gIlNldCBCYWNrZ3JvdW5kIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTRVRfQkFDS0dST1VORF9MQUJFTCA9ICJCYWNrZ3JvdW5kOiI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0VUX0ZPTlRfVElUTEUgPSAiU2V0IEZvbnQiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNFVF9GT05UX0xBQkVMID0gIkZvbnQ6IjsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFCT1VUX1RJVExFID0gIkFib3V0IHRoZSBSaWNoRWRpdCBDb250cm9sIjsKKworICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkgU3RyaW5nIHdoaWNoIGlzIG5vdCBpdHMgb3duIHZhbHVlOgorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFCT1VUX1RFWFQgPSAiQWJvdXQgdGV4dCI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEFDVFVBTF9BQk9VVF9URVhUID0KKyAgICAgICAgIkNvcHlyaWdodCAoQykgVGFsaWdlbnQsIEluYy4gMTk5NiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuIiArCisgICAgICAgICJDb3B5cmlnaHQgKEMpIElCTSBDb3JwLiAxOTk2LTE5OThcblxuIiArCisgICAgICAgICJKb2huIFJhbGV5XG4iICsKKyAgICAgICAgIlN0ZXBoZW4gRi4gQm9vdGhcbiIgKworICAgICAgICAiRG91ZyBGZWx0XG4iICsKKyAgICAgICAgIkpvaG4gRml0enBhdHJpY2tcbiIgKworICAgICAgICAiUmljaCBHaWxsYW0iOworLyoKKyAqIFRoZSBmb2xsb3dpbmcgU3RyaW5ncyBhcmUga2V5cyB0byBNZW51RGF0YSByZXNvdXJjZXMuICBUaGV5CisgKiBhbHNvIGRvdWJsZSBhcyB0aGUgZGVmYXVsdCBtZW51IGxhYmVsIHRleHQuCisgKi8KKyAgICAvLyBFZGl0IG1lbnUKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVTkRPID0gIlVuZG8iOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFJFRE8gPSAiUmVkbyI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ1VUID0gIkN1dCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWSA9ICJDb3B5IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQQVNURSA9ICJQYXN0ZSI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0xFQVIgPSAiQ2xlYXIiOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNFTEVDVF9BTEwgPSAiU2VsZWN0IEFsbCI7CisKKyAgICAvLyBGbHVzaCBtZW51CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTEVBRElORyA9ICJMZWFkaW5nIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUUkFJTElORyA9ICJUcmFpbGluZyI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ0VOVEVSID0gIkNlbnRlciI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSlVTVElGSUVEID0gIkp1c3RpZmllZCI7CisKKyAgICAvLyBBYm91dCBtZW51CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUJPVVRfSVRFTSA9ICJBYm91dC4uLiI7CisKKyAgICAvLyBLZXltYXAgbWVudQorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIERFRkFVTFQgPSAiRGVmYXVsdCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVJBQklDID0gIkFyYWJpYyI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSEVCUkVXID0gIkhlYnJldyI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgSVNSQUVMX05JS1VEID0gIklzcmFlbCBOaWt1ZCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEhBSV9LRVRNQU5FRSA9ICJUaGFpIEtldG1hbmVlIjsKKworICAgIC8vIFN0eWxlIG1lbnUKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQTEFJTiA9ICJQbGFpbiI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQk9MRCA9ICJCb2xkIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBJVEFMSUMgPSAiSXRhbGljIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVTkRFUkxJTkUgPSAiVW5kZXJsaW5lIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTVFJJS0VUSFJPVUdIID0gIlN0cmlrZXRocm91Z2giOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNVUEVSU0NSSVBUID0gIlN1cGVyc2NyaXB0IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTVUJTQ1JJUFQgPSAiU3Vic2NyaXB0IjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTVVBFUlNDUklQVF9ESUFMT0cgPSAiU3VwZXJzY3JpcHQuLi4iOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNVQlNDUklQVF9ESUFMT0cgPSAiU3Vic2NyaXB0Li4uIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGT1JFQ09MT1JfRElBTE9HID0gIkZvcmVjb2xvci4uLiI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQkFDS0NPTE9SX0RJQUxPRyA9ICJCYWNrY29sb3IuLi4iOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEZPTlRfRElBTE9HID0gIkZvbnQuLi4iOworICAgIAorCisgICAgLy8gU2l6ZSBtZW51CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1RIRVJfRElBTE9HID0gIk90aGVyLi4uIjsKKyAgICAKKyAgICAvLyBCaWRpIG1lbnUKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBERUZBVUxUX0RJUkVDVElPTiA9ICJEZWZhdWx0IFBhcmFncmFwaCBEaXJlY3Rpb24iOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIExUUl9ESVJFQ1RJT04gPSAiTGVmdC10by1yaWdodCBQYXJhZ3JhcGggRGlyZWN0aW9uIjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBSVExfRElSRUNUSU9OID0gIlJpZ2h0LXRvLWxlZnQgUGFyYWdyYXBoIERpcmVjdGlvbiI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBPYmplY3RbXSBtYWtlTWVudURhdGEoU3RyaW5nIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgc2hvcnRDdXRDaGFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2hvcnRDdXRLZXkpIHsKKworICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdIHsgbmFtZSwgbmV3IE1lbnVEYXRhKG5hbWUsIHNob3J0Q3V0Q2hhciwgc2hvcnRDdXRLZXkpIH07CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgT2JqZWN0W10gbWFrZU1lbnVEYXRhKFN0cmluZyBuYW1lKSB7CisKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXSB7IG5hbWUsIG5ldyBNZW51RGF0YShuYW1lKSB9OworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIE9iamVjdFtdIGR1cGxpY2F0ZShPYmplY3Qgb2JqKSB7CisKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXSB7IG9iaiwgb2JqIH07CisgICAgfQorCisgICAgcHJvdGVjdGVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXVtdIHsKKyAgICAgICAgICAgIG1ha2VNZW51RGF0YShVTkRPLCAneicsIEtleUV2ZW50LlZLX1opLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKFJFRE8sICdyJywgS2V5RXZlbnQuVktfUiksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoQ1VULCAneCcsIEtleUV2ZW50LlZLX1gpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKENPUFksICdjJywgS2V5RXZlbnQuVktfQyksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoUEFTVEUsICd2JywgS2V5RXZlbnQuVktfViksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoQ0xFQVIpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKFNFTEVDVF9BTEwpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKExFQURJTkcpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKENFTlRFUiksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoVFJBSUxJTkcpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKEpVU1RJRklFRCksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoQUJPVVRfSVRFTSksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoREVGQVVMVCksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoSEVCUkVXKSwKKyAgICAgICAgICAgIG1ha2VNZW51RGF0YShBUkFCSUMpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKElTUkFFTF9OSUtVRCksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoVEhBSV9LRVRNQU5FRSksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoUExBSU4pLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKEJPTEQsICdiJywgS2V5RXZlbnQuVktfQiksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoSVRBTElDLCAnaScsIEtleUV2ZW50LlZLX0kpLCAvLyB3aHkgZG9lc24ndCB0aGlzIHdvcmsgaW4gU3dpbmc/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGEgVGFiIGluIEFXVCEhIQorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKFVOREVSTElORSwgJ3UnLCBLZXlFdmVudC5WS19VKSwKKyAgICAgICAgICAgIG1ha2VNZW51RGF0YShTVFJJS0VUSFJPVUdIKSwKKyAgICAgICAgICAgIG1ha2VNZW51RGF0YShTVVBFUlNDUklQVCksCisgICAgICAgICAgICBtYWtlTWVudURhdGEoU1VCU0NSSVBUKSwKKyAgICAgICAgICAgIG1ha2VNZW51RGF0YShTVVBFUlNDUklQVF9ESUFMT0cpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKFNVQlNDUklQVF9ESUFMT0cpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKEZPUkVDT0xPUl9ESUFMT0cpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKEJBQ0tDT0xPUl9ESUFMT0cpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKEZPTlRfRElBTE9HKSwKKyAgICAgICAgICAgIG1ha2VNZW51RGF0YShPVEhFUl9ESUFMT0cpLAorICAgICAgICAgICAgbWFrZU1lbnVEYXRhKERFRkFVTFRfRElSRUNUSU9OKSwKKyAgICAgICAgICAgIG1ha2VNZW51RGF0YShMVFJfRElSRUNUSU9OKSwKKyAgICAgICAgICAgIG1ha2VNZW51RGF0YShSVExfRElSRUNUSU9OKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShPSyksCisgICAgICAgICAgICBkdXBsaWNhdGUoQ0FOQ0VMKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShCTEFDSyksCisgICAgICAgICAgICBkdXBsaWNhdGUoV0hJVEUpLAorICAgICAgICAgICAgZHVwbGljYXRlKEdSRUVOKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShCTFVFKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShDWUFOKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShHUkFZKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShEQVJLX0dSQVkpLAorICAgICAgICAgICAgZHVwbGljYXRlKExJR0hUX0dSQVkpLAorICAgICAgICAgICAgZHVwbGljYXRlKE1BR0VOVEEpLAorICAgICAgICAgICAgZHVwbGljYXRlKE9SQU5HRSksCisgICAgICAgICAgICBkdXBsaWNhdGUoUElOSyksCisgICAgICAgICAgICBkdXBsaWNhdGUoUkVEKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShZRUxMT1cpLAorICAgICAgICAgICAgZHVwbGljYXRlKE5PTkUpLAorICAgICAgICAgICAgZHVwbGljYXRlKFNFVF9TSVpFX1RJVExFKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShTRVRfU0laRV9MQUJFTCksCisgICAgICAgICAgICBkdXBsaWNhdGUoU0VUX1NVUEVSU0NSSVBUX1RJVExFKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShTRVRfU1VQRVJTQ1JJUFRfTEFCRUwpLAorICAgICAgICAgICAgZHVwbGljYXRlKFNFVF9TVUJTQ1JJUFRfVElUTEUpLAorICAgICAgICAgICAgZHVwbGljYXRlKFNFVF9TVUJTQ1JJUFRfTEFCRUwpLAorICAgICAgICAgICAgZHVwbGljYXRlKFNFVF9GT1JFR1JPVU5EX1RJVExFKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShTRVRfRk9SRUdST1VORF9MQUJFTCksCisgICAgICAgICAgICBkdXBsaWNhdGUoU0VUX0JBQ0tHUk9VTkRfVElUTEUpLAorICAgICAgICAgICAgZHVwbGljYXRlKFNFVF9CQUNLR1JPVU5EX0xBQkVMKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShTRVRfRk9OVF9USVRMRSksCisgICAgICAgICAgICBkdXBsaWNhdGUoU0VUX0ZPTlRfTEFCRUwpLAorICAgICAgICAgICAgZHVwbGljYXRlKEVESVQpLAorICAgICAgICAgICAgZHVwbGljYXRlKFNJWkUpLAorICAgICAgICAgICAgZHVwbGljYXRlKEZPTlQpLAorICAgICAgICAgICAgZHVwbGljYXRlKFNUWUxFKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShGTFVTSCksCisgICAgICAgICAgICBkdXBsaWNhdGUoS0VZTUFQKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShCSURJKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShBQk9VVF9NRU5VKSwKKyAgICAgICAgICAgIGR1cGxpY2F0ZShBQk9VVF9USVRMRSksCisgICAgICAgICAgICB7IEFCT1VUX1RFWFQsIEFDVFVBTF9BQk9VVF9URVhUIH0KKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvcmVzb3VyY2VzL01lbnVEYXRhLmphdmEgYi9zcmMvY29tL2libS9yaWNodGV4dC91aWltcGwvcmVzb3VyY2VzL01lbnVEYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNGRiNGI0OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3JpY2h0ZXh0L3VpaW1wbC9yZXNvdXJjZXMvTWVudURhdGEuamF2YQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBNZW51RGF0YS5qYXZhLHYgJCAkUmV2aXNpb246IDEuMSAkICREYXRlOiAyMDAwLzA0LzIwIDE3OjUyOjQ2ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0ucmljaHRleHQudWlpbXBsLnJlc291cmNlczsKKworLyoqCisgKiBUaGlzIGNsYXNzIGlzIHVzZWQgaW4gcmVzb3VyY2VzIHRvIHJlcHJlc2VudCBhIE1lbnUuICBJdCBpcworICoganVzdCBhIG5hbWUgYW5kIGFuIG9wdGlvbmFsIHNob3J0Y3V0IGtleS4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIE1lbnVEYXRhIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgcHJpdmF0ZSBTdHJpbmcgZk5hbWU7CisgICAgcHJpdmF0ZSBib29sZWFuIGZIYXNTaG9ydGN1dDsKKyAgICBwcml2YXRlIGNoYXIgZlNob3J0Y3V0OworICAgIHByaXZhdGUgaW50IGZLZXlDb2RlOworCisgICAgcHVibGljIE1lbnVEYXRhKFN0cmluZyBuYW1lKSB7CisKKyAgICAgICAgZk5hbWUgPSBuYW1lOworICAgICAgICBmSGFzU2hvcnRjdXQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgTWVudURhdGEoU3RyaW5nIG5hbWUsIGNoYXIgY2gsIGludCBrZXlDb2RlKSB7CisKKyAgICAgICAgZk5hbWUgPSBuYW1lOworICAgICAgICBmSGFzU2hvcnRjdXQgPSB0cnVlOworICAgICAgICBmU2hvcnRjdXQgPSBjaDsKKyAgICAgICAgZktleUNvZGUgPSBrZXlDb2RlOworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKKworICAgICAgICByZXR1cm4gZk5hbWU7CisgICAgfQorCisgICAgcHVibGljIGNoYXIgZ2V0U2hvcnRjdXRDaGFyKCkgeworCisgICAgICAgIGlmICghZkhhc1Nob3J0Y3V0KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk1lbnUgZG9lc24ndCBoYXZlIHNob3J0Y3V0Iik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZTaG9ydGN1dDsKKyAgICB9CisgICAgCisgICAgcHVibGljIGludCBnZXRTaG9ydGN1dEtleUNvZGUoKSB7CisgICAgICAgIGlmICghZkhhc1Nob3J0Y3V0KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIk1lbnUgZG9lc24ndCBoYXZlIHNob3J0Y3V0Iik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZLZXlDb2RlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGhhc1Nob3J0Y3V0KCkgeworCisgICAgICAgIHJldHVybiBmSGFzU2hvcnRjdXQ7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3QvVGVzdEFsbC5qYXZhIGIvc3JjL2NvbS9pYm0vdGVzdC9UZXN0QWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjc3MWIzNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3QvVGVzdEFsbC5qYXZhCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXN0L0F0dGljL1Rlc3RBbGwuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMS8wMy8wOCAwMTo0ODozNiAkIAorICogJFJldmlzaW9uOiAxLjEwICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRlc3Q7CitpbXBvcnQgY29tLmlibS50ZXN0LlRlc3RGbXdrOworaW1wb3J0IGphdmEudGV4dC4qOworaW1wb3J0IGphdmEudXRpbC4qOworCisvKioKKyAqIFRvcCBsZXZlbCB0ZXN0IHVzZWQgdG8gcnVuIGFsbCBvdGhlciB0ZXN0cyBhcyBhIGJhdGNoLgorICovCisgCitwdWJsaWMgY2xhc3MgVGVzdEFsbCBleHRlbmRzIFRlc3RGbXdrIHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgVGVzdEFsbCgpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0QmlnTnVtYmVyRm9ybWF0KCkgdGhyb3dzIEV4Y2VwdGlvbnsKKyAgICAgICAgcnVuKG5ldyBjb20uaWJtLnRlc3QuYm5mLkJpZ051bWJlckZvcm1hdFRlc3QoKSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RDb21wcmVzc2lvbigpIHRocm93cyBFeGNlcHRpb257CisgICAgICAgIHJ1bihuZXcgVGVzdEZtd2tbXSB7CisgICAgICAgICAgICBuZXcgY29tLmlibS50ZXN0LmNvbXByZXNzaW9uLkRlY29tcHJlc3Npb25UZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS50ZXN0LmNvbXByZXNzaW9uLkV4aGF1c3RpdmVUZXN0KCkKKyAgICAgICAgICAgICAgICB9KTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdE5vcm1hbGl6ZXIoKSB0aHJvd3MgRXhjZXB0aW9ueworICAgICAgICBydW4obmV3IFRlc3RGbXdrW10geworICAgICAgICAgICAgbmV3IGNvbS5pYm0udGVzdC5ub3JtYWxpemVyLkJhc2ljVGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0udGVzdC5ub3JtYWxpemVyLkV4aGF1c3RpdmVUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS50ZXN0Lm5vcm1hbGl6ZXIuQ29uZm9ybWFuY2VUZXN0KCksCisgICAgICAgIH0pOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RSdWxlQmFzZWROdW1iZXJGb3JtYXQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgcnVuKG5ldyBUZXN0Rm13a1tdIHsKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLnRlc3QucmJuZi5SYm5mVGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0udGVzdC5yYm5mLlJibmZSb3VuZFRyaXBUZXN0KCkKKyAgICAgICAgICAgICAgICB9KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0UnVsZUJhc2VkQnJlYWtJdGVyYXRvcigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBydW4obmV3IFRlc3RGbXdrW10geworICAgICAgICAgICAgbmV3IGNvbS5pYm0udGVzdC5yYmJpLlNpbXBsZUJJVGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0udGVzdC5yYmJpLkJyZWFrSXRlcmF0b3JUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS50ZXN0LnJiYmkuUkJCSVRlc3QoKQorICAgICAgICAgICAgICAgIH0pOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RUcmFuc2xpdCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBydW4obmV3IFRlc3RGbXdrW10geworICAgICAgICAgICAgbmV3IGNvbS5pYm0udGVzdC50cmFuc2xpdC5UcmFuc2xpdGVyYXRvclRlc3QoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLnRlc3QudHJhbnNsaXQuVW5pY29kZVNldFRlc3QoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLnRlc3QudHJhbnNsaXQuVW5pY29kZUZpbHRlckxvZ2ljVGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0udGVzdC50cmFuc2xpdC5Db21wb3VuZFRyYW5zbGl0ZXJhdG9yVGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0udGVzdC50cmFuc2xpdC5Vbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvclRlc3QoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLnRlc3QudHJhbnNsaXQuSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3JUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS50ZXN0LnRyYW5zbGl0LkphbW9UZXN0KCkKKworICAgICAgICAgICAgICAgIH0pOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RTZWFyY2goKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgcnVuKG5ldyBjb20uaWJtLnRlc3Quc2VhcmNoLlNlYXJjaFRlc3QoKSk7CisgICAgfQorCQorICAgIHB1YmxpYyB2b2lkIFRlc3RSaWNoRWRpdCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBydW4obmV3IGNvbS5pYm0udGVzdC5yaWNodGV4dC5UZXN0QWxsKCkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RBcmFiaWNTaGFwaW5nKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHJ1bihuZXcgY29tLmlibS5pY3UudGVzdC50ZXh0LkFyYWJpY1NoYXBpbmdSZWdUZXN0KCkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RDYWxlbmRhcigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBydW4obmV3IFRlc3RGbXdrW10geworICAgICAgICAgICAgbmV3IGNvbS5pYm0udGVzdC5jYWxlbmRhci5Bc3Ryb1Rlc3QoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLnRlc3QuY2FsZW5kYXIuQ2FsZW5kYXJSZWdyZXNzaW9uKCksCisgICAgICAgICAgICBuZXcgY29tLmlibS50ZXN0LmNhbGVuZGFyLkNvbXBhdGliaWxpdHlUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS50ZXN0LmNhbGVuZGFyLkhlYnJld1Rlc3QoKSwKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLnRlc3QuY2FsZW5kYXIuSUJNQ2FsZW5kYXJUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS50ZXN0LmNhbGVuZGFyLklzbGFtaWNUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS50ZXN0LmNhbGVuZGFyLkNoaW5lc2VUZXN0KCkKKyAgICAgICAgICAgICAgICB9KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0VGltZVpvbmUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgcnVuKG5ldyBUZXN0Rm13a1tdIHsKKyAgICAgICAgICAgIG5ldyBjb20uaWJtLnRlc3QudGltZXpvbmUuVGltZVpvbmVUZXN0KCksCisgICAgICAgICAgICBuZXcgY29tLmlibS50ZXN0LnRpbWV6b25lLlRpbWVab25lUmVncmVzc2lvbigpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0udGVzdC50aW1lem9uZS5UaW1lWm9uZUJvdW5kYXJ5VGVzdCgpCisgICAgICAgICAgICAgICAgfSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdENoYXJhY3RlcigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBydW4obmV3IFRlc3RGbXdrW10geworICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LnRlc3QudGV4dC5VQ2hhcmFjdGVyVGVzdCgpLAorICAgICAgICAgICAgbmV3IGNvbS5pYm0uaWN1LnRlc3QudGV4dC5VVEYxNlRlc3QoKQorICAgICAgICAgICAgICAgIH0pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3QvVGVzdEZtd2suamF2YSBiL3NyYy9jb20vaWJtL3Rlc3QvVGVzdEZtd2suamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MDgyODUzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGVzdC9UZXN0Rm13ay5qYXZhCkBAIC0wLDAgKzEsMjcyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXN0L0F0dGljL1Rlc3RGbXdrLmphdmEsdiAkIAorICogJERhdGU6IDIwMDEvMDIvMjggMjA6Mzc6MjQgJCAKKyAqICRSZXZpc2lvbjogMS4xNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXN0OworCitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuKjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnRleHQuKjsKKworCisKKy8qKgorICogVGVzdEZtd2sgaXMgYSBiYXNlIGNsYXNzIGZvciB0ZXN0cyB0aGF0IGNhbiBiZSBydW4gY29udmVuaWVudGx5IGZyb20KKyAqIHRoZSBjb21tYW5kIGxpbmUgYXMgd2VsbCBhcyB1bmRlciB0aGUgSmF2YSB0ZXN0IGhhcm5lc3MuCisgKiA8cD4KKyAqIFN1Yi1jbGFzc2VzIGltcGxlbWVudCBhIHNldCBvZiBtZXRob2RzIG5hbWVkIFRlc3Q8c29tZXRoaW5nPi4gRWFjaAorICogb2YgdGhlc2UgbWV0aG9kcyBwZXJmb3JtcyBzb21lIHRlc3QuIFRlc3QgbWV0aG9kcyBzaG91bGQgaW5kaWNhdGUKKyAqIGVycm9ycyBieSBjYWxsaW5nIGVpdGhlciBlcnIgb3IgZXJybG4uICBUaGlzIHdpbGwgaW5jcmVtZW50IHRoZQorICogZXJyb3JDb3VudCBmaWVsZCBhbmQgbWF5IG9wdGlvbmFsbHkgcHJpbnQgYSBtZXNzYWdlIHRvIHRoZSBsb2cuCisgKiBEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gbWF5IGFsc28gYmUgYWRkZWQgdG8gdGhlIGxvZyB2aWEgdGhlIGxvZworICogYW5kIGxvZ2xuIG1ldGhvZHMuICBUaGVzZSBtZXRob2RzIHdpbGwgYWRkIHRoZWlyIGFyZ3VtZW50cyB0byB0aGUKKyAqIGxvZyBvbmx5IGlmIHRoZSB0ZXN0IGlzIGJlaW5nIHJ1biBpbiB2ZXJib3NlIG1vZGUuCisgKi8KKworcHVibGljIGNsYXNzIFRlc3RGbXdrIGltcGxlbWVudHMgVGVzdExvZyB7CisKKyAgICAvKioKKyAgICAgKiBQdXRzIGEgY29weXJpZ2h0IGluIHRoZSAuY2xhc3MgZmlsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHROb3RpY2UKKyAgICAgICAgPSAiQ29weXJpZ2h0IFx1MDBhOTE5OTctMTk5OCBJQk0gQ29ycC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gRXZlcnl0aGluZyBiZWxvdyBoZXJlIGlzIGJvaWxlcnBsYXRlIGNvZGUgdGhhdCBtYWtlcyBpdCBwb3NzaWJsZQorICAgIC8vIHRvIGFkZCBhIG5ldyB0ZXN0IGJ5IHNpbXBseSBhZGRpbmcgYSBmdW5jdGlvbiB0byBhbiBleGlzdGluZyBjbGFzcworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlwcm90ZWN0ZWQgVGVzdEZtd2soKSB7CisgICAgICAgIC8vIENyZWF0ZSBhIGhhc2h0YWJsZSBjb250YWluaW5nIGFsbCB0aGUgdGVzdCBtZXRob2RzLgorICAgICAgICB0ZXN0TWV0aG9kcyA9IG5ldyBIYXNodGFibGUoKTsKKyAgICAgICAgTWV0aG9kW10gbWV0aG9kcyA9IGdldENsYXNzKCkuZ2V0RGVjbGFyZWRNZXRob2RzKCk7CisgICAgICAgIGZvciggaW50IGk9MDsgaTxtZXRob2RzLmxlbmd0aDsgaSsrICkgeworICAgICAgICAgICAgaWYoIG1ldGhvZHNbaV0uZ2V0TmFtZSgpLnN0YXJ0c1dpdGgoIlRlc3QiKSAKKwkJCQkJfHwgbWV0aG9kc1tpXS5nZXROYW1lKCkuc3RhcnRzV2l0aCgidGVzdCIpKSB7CisgICAgICAgICAgICAgICAgdGVzdE1ldGhvZHMucHV0KCBtZXRob2RzW2ldLmdldE5hbWUoKSwgbWV0aG9kc1tpXSApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIF9ydW4oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgd3JpdGVUZXN0TmFtZShnZXRDbGFzcygpLmdldE5hbWUoKSk7CisgICAgICAgIHBhcmFtcy5pbmRlbnRMZXZlbCsrOworCQlFbnVtZXJhdGlvbiBtZXRob2RzVG9SdW47CisJCQorCQlpZiAodGVzdHNUb1J1biAhPSBudWxsICYmIHRlc3RzVG9SdW4uc2l6ZSgpID49IDEpIHsKKwkJCW1ldGhvZHNUb1J1biA9IHRlc3RzVG9SdW4uZWxlbWVudHMoKTsKKwkJfSBlbHNlIHsKKwkJCW1ldGhvZHNUb1J1biA9IHRlc3RNZXRob2RzLmVsZW1lbnRzKCk7CisJCX0KKworICAgICAgICBpbnQgb2xkQ2xhc3NDb3VudCA9IHBhcmFtcy5lcnJvckNvdW50OworCisgICAgICAgIC8vIFJ1biB0aGUgbGlzdCBvZiB0ZXN0cyBnaXZlbiBpbiB0aGUgdGVzdCBhcmd1bWVudHMKKyAgICAgICAgd2hpbGUgKG1ldGhvZHNUb1J1bi5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgaW50IG9sZENvdW50ID0gcGFyYW1zLmVycm9yQ291bnQ7CisKKyAgICAgICAgICAgCU1ldGhvZCB0ZXN0TWV0aG9kID0gKE1ldGhvZCltZXRob2RzVG9SdW4ubmV4dEVsZW1lbnQoKTsKKyAgICAgICAgICAgIHdyaXRlVGVzdE5hbWUodGVzdE1ldGhvZC5nZXROYW1lKCkpOworCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHRlc3RNZXRob2QuaW52b2tlKHRoaXMsIG5ldyBPYmplY3RbMF0pOworICAgICAgICAgICAgfSBjYXRjaCggSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiBlICkgeworICAgICAgICAgICAgICAgIGVycmxuKCJDYW4ndCBhY2Nlc3MgdGVzdCBtZXRob2QgIiArIHRlc3RNZXRob2QuZ2V0TmFtZSgpKTsKKyAgICAgICAgICAgIH0gY2F0Y2goIEludm9jYXRpb25UYXJnZXRFeGNlcHRpb24gZSApIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiVW5jYXVnaHQgZXhjZXB0aW9uIFwiIitlKyJcIiB0aHJvd24gaW4gdGVzdCBtZXRob2QgIgorICAgICAgICAgICAgICAgICAgICAgICAgKyB0ZXN0TWV0aG9kLmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgZS5nZXRUYXJnZXRFeGNlcHRpb24oKS5wcmludFN0YWNrVHJhY2UodGhpcy5wYXJhbXMubG9nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdyaXRlVGVzdFJlc3VsdChwYXJhbXMuZXJyb3JDb3VudCAtIG9sZENvdW50KTsKKyAgICAgICAgfQorICAgICAgICBwYXJhbXMuaW5kZW50TGV2ZWwtLTsKKyAgICAgICAgd3JpdGVUZXN0UmVzdWx0KHBhcmFtcy5lcnJvckNvdW50IC0gb2xkQ2xhc3NDb3VudCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHJ1bihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAJaWYgKHBhcmFtcyA9PSBudWxsKSBwYXJhbXMgPSBuZXcgVGVzdFBhcmFtcygpOworICAgICAgICAvLyBQYXJzZSB0aGUgdGVzdCBhcmd1bWVudHMuICBUaGV5IGNhbiBiZSBlaXRoZXIgdGhlIGZsYWcKKyAgICAgICAgLy8gIi12ZXJib3NlIiBvciBuYW1lcyBvZiB0ZXN0IG1ldGhvZHMuIENyZWF0ZSBhIGxpc3Qgb2YKKyAgICAgICAgLy8gdGVzdHMgdG8gYmUgcnVuLgorICAgICAgICB0ZXN0c1RvUnVuID0gbmV3IFZlY3RvcihhcmdzLmxlbmd0aCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKGFyZ3NbaV0uZXF1YWxzKCItdmVyYm9zZSIpIHx8IGFyZ3NbaV0uZXF1YWxzKCItdiIpKSB7CisgICAgICAgICAgICAgICAgcGFyYW1zLnZlcmJvc2UgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYXJnc1tpXS5lcXVhbHMoIi1wcm9tcHQiKSkgeworICAgICAgICAgICAgICAgIHBhcmFtcy5wcm9tcHQgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChhcmdzW2ldLmVxdWFscygiLW5vdGhyb3ciKSkgeworICAgICAgICAgICAgICAgIHBhcmFtcy5ub3Rocm93ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgT2JqZWN0IG0gPSB0ZXN0TWV0aG9kcy5nZXQoYXJnc1tpXSk7CisgICAgICAgICAgICAgICAgaWYgKG0gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0c1RvUnVuLmFkZEVsZW1lbnQobSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdXNhZ2UoKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgCWlmIChwYXJhbXMgPT0gbnVsbCkgcGFyYW1zID0gbmV3IFRlc3RQYXJhbXMoKTsKKyAgICAgICAgX3J1bigpOworCisgICAgICAgIGlmIChwYXJhbXMucHJvbXB0KSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkhpdCBSRVRVUk4gdG8gZXhpdC4uLiIpOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uaW4ucmVhZCgpOworICAgICAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpICsgZS5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChwYXJhbXMubm90aHJvdykgeworICAgICAgICAgICAgU3lzdGVtLmV4aXQocGFyYW1zLmVycm9yQ291bnQpOworICAgICAgICB9CisgICAgfQorCisJcHJvdGVjdGVkIHZvaWQgcnVuKFRlc3RGbXdrIGNoaWxkVGVzdCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHJ1bihuZXcgVGVzdEZtd2tbXSB7IGNoaWxkVGVzdCB9KTsKKwl9CisKKwlwcm90ZWN0ZWQgdm9pZCBydW4oVGVzdEZtd2tbXSB0ZXN0cykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTx0ZXN0cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdGVzdHNbaV0ucGFyYW1zID0gdGhpcy5wYXJhbXM7CisgICAgICAgICAgICBwYXJhbXMuaW5kZW50TGV2ZWwrKzsKKyAgICAgICAgICAgIHRlc3RzW2ldLl9ydW4oKTsKKyAgICAgICAgICAgIHBhcmFtcy5pbmRlbnRMZXZlbC0tOworICAgICAgICB9CisJfQorCisgICAgcHJvdGVjdGVkIGJvb2xlYW4gaXNWZXJib3NlKCkgeworICAgICAgICByZXR1cm4gcGFyYW1zLnZlcmJvc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWRkcyBnaXZlbiBzdHJpbmcgdG8gdGhlIGxvZyBpZiB3ZSBhcmUgaW4gdmVyYm9zZSBtb2RlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGxvZyggU3RyaW5nIG1lc3NhZ2UgKSB7CisgICAgICAgIGlmKCBwYXJhbXMudmVyYm9zZSApIHsKKyAgICAgICAgICAgIGluZGVudChwYXJhbXMuaW5kZW50TGV2ZWwgKyAxKTsKKyAgICAgICAgICAgIHBhcmFtcy5sb2cucHJpbnQoIG1lc3NhZ2UgKTsKKyAgICAgICAgICAgIHBhcmFtcy5sb2cuZmx1c2goKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGxvZ2xuKCBTdHJpbmcgbWVzc2FnZSApIHsKKyAgICAgICAgbG9nKG1lc3NhZ2UgKyBTeXN0ZW0uZ2V0UHJvcGVydHkoImxpbmUuc2VwYXJhdG9yIikpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlcG9ydCBhbiBlcnJvcgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGVyciggU3RyaW5nIG1lc3NhZ2UgKSB7CisgICAgICAgIHBhcmFtcy5lcnJvckNvdW50Kys7CisgICAgICAgIGluZGVudChwYXJhbXMuaW5kZW50TGV2ZWwgKyAxKTsKKyAgICAgICAgcGFyYW1zLmxvZy5wcmludCggbWVzc2FnZSApOworICAgICAgICBwYXJhbXMubG9nLmZsdXNoKCk7CisKKyAgICAgICAgaWYgKCFwYXJhbXMubm90aHJvdykgeworICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24obWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBlcnJsbiggU3RyaW5nIG1lc3NhZ2UgKSB7CisgICAgICAgIGVycihtZXNzYWdlICsgU3lzdGVtLmdldFByb3BlcnR5KCJsaW5lLnNlcGFyYXRvciIpKTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgaW50IGdldEVycm9yQ291bnQoKSB7CisgICAgICAgIHJldHVybiBwYXJhbXMuZXJyb3JDb3VudDsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgdm9pZCB3cml0ZVRlc3ROYW1lKFN0cmluZyB0ZXN0TmFtZSkgeworICAgICAgICBpbmRlbnQocGFyYW1zLmluZGVudExldmVsKTsKKyAgICAgICAgcGFyYW1zLmxvZy5wcmludCh0ZXN0TmFtZSk7CisgICAgICAgIHBhcmFtcy5sb2cuZmx1c2goKTsKKyAgICAgICAgcGFyYW1zLm5lZWRMaW5lRmVlZCA9IHRydWU7CisgICAgfQorCisgICAgcHJvdGVjdGVkIHZvaWQgd3JpdGVUZXN0UmVzdWx0KGludCBjb3VudCkgeworICAgICAgICBpZiAoIXBhcmFtcy5uZWVkTGluZUZlZWQpIHsKKyAgICAgICAgICAgIGluZGVudChwYXJhbXMuaW5kZW50TGV2ZWwpOworICAgICAgICAgICAgcGFyYW1zLmxvZy5wcmludCgifSIpOworICAgICAgICB9CisgICAgICAgIHBhcmFtcy5uZWVkTGluZUZlZWQgPSBmYWxzZTsKKworICAgICAgICBpZiAoY291bnQgIT0gMCkgeworICAgICAgICAgICAgcGFyYW1zLmxvZy5wcmludGxuKCIgRkFJTEVEICgiICsgY291bnQgKyAiIGZhaWx1cmVzKSIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGFyYW1zLmxvZy5wcmludGxuKCIgUGFzc2VkIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgaW5kZW50KGludCBkaXN0YW5jZSkgeworICAgICAgICBpZiAocGFyYW1zLm5lZWRMaW5lRmVlZCkgeworICAgICAgICAgICAgcGFyYW1zLmxvZy5wcmludGxuKCIgeyIpOworICAgICAgICAgICAgcGFyYW1zLm5lZWRMaW5lRmVlZCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHBhcmFtcy5sb2cucHJpbnQoc3BhY2VzLnN1YnN0cmluZygwLCBkaXN0YW5jZSAqIDIpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcmludCBhIHVzYWdlIG1lc3NhZ2UgZm9yIHRoaXMgdGVzdCBjbGFzcy4KKyAgICAgKi8KKyAgICB2b2lkIHVzYWdlKCkgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZ2V0Q2xhc3MoKS5nZXROYW1lKCkgKworICAgICAgICAgICAgICAgICI6IFstdmVyYm9zZV0gWy1ub3Rocm93XSBbLXByb21wdF0gW3Rlc3QgbmFtZXNdIik7CisKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJ0ZXN0IG5hbWVzOiIpOworICAgICAgICBFbnVtZXJhdGlvbiBtZXRob2ROYW1lcyA9IHRlc3RNZXRob2RzLmtleXMoKTsKKyAgICAgICAgd2hpbGUoIG1ldGhvZE5hbWVzLmhhc01vcmVFbGVtZW50cygpICkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJcdCIgKyBtZXRob2ROYW1lcy5uZXh0RWxlbWVudCgpICk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBoZXgoY2hhciBjaCkgeworICAgICAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBTdHJpbmcgZm9vID0gSW50ZWdlci50b1N0cmluZyhjaCwxNikudG9VcHBlckNhc2UoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IGZvby5sZW5ndGgoKTsgaSA8IDQ7ICsraSkgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnMCcpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQgKyBmb287CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgaGV4KFN0cmluZyBzKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoaSAhPSAwKSByZXN1bHQuYXBwZW5kKCcsJyk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGhleChzLmNoYXJBdChpKSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBoZXgoU3RyaW5nQnVmZmVyIHMpIHsKKyAgICAgICAgcmV0dXJuIGhleChzLnRvU3RyaW5nKCkpOworICAgIH0KKworCXByaXZhdGUgc3RhdGljIGNsYXNzIFRlc3RQYXJhbXMgeworICAgIAlwdWJsaWMgYm9vbGVhbiAgIHByb21wdCA9IGZhbHNlOworICAgIAlwdWJsaWMgYm9vbGVhbiAgIG5vdGhyb3cgPSBmYWxzZTsKKyAgICAJcHVibGljIGJvb2xlYW4gICB2ZXJib3NlID0gZmFsc2U7CisKKyAgICAJcHVibGljIFByaW50V3JpdGVyIGxvZyA9IG5ldyBQcmludFdyaXRlcihTeXN0ZW0ub3V0LHRydWUpOworICAgIAlwdWJsaWMgaW50ICAgICAgICAgaW5kZW50TGV2ZWwgPSAwOworICAgIAlwdWJsaWMgYm9vbGVhbiAgICAgbmVlZExpbmVGZWVkID0gZmFsc2U7CisgICAgCXB1YmxpYyBpbnQgICAgICAgICBlcnJvckNvdW50ID0gMDsKKyAgICB9CisKKwlwcml2YXRlIFRlc3RQYXJhbXMgcGFyYW1zID0gbnVsbDsKKyAgICBwcml2YXRlIEhhc2h0YWJsZSB0ZXN0TWV0aG9kczsKKwlwcml2YXRlIFZlY3RvciB0ZXN0c1RvUnVuOworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIHNwYWNlcyA9ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGVzdC9UZXN0TG9nLmphdmEgYi9zcmMvY29tL2libS90ZXN0L1Rlc3RMb2cuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44ZTNhNzczCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGVzdC9UZXN0TG9nLmphdmEKQEAgLTAsMCArMSwxOCBAQAorcGFja2FnZSBjb20uaWJtLnRlc3Q7CisKK3B1YmxpYyBpbnRlcmZhY2UgVGVzdExvZyB7CisKKyAgICAvKioKKyAgICAgKiBBZGRzIGdpdmVuIHN0cmluZyB0byB0aGUgbG9nIGlmIHdlIGFyZSBpbiB2ZXJib3NlIG1vZGUuCisgICAgICovCisgICAgdm9pZCBsb2coU3RyaW5nIG1lc3NhZ2UpOworCisgICAgdm9pZCBsb2dsbihTdHJpbmcgbWVzc2FnZSk7CisKKyAgICAvKioKKyAgICAgKiBSZXBvcnQgYW4gZXJyb3IKKyAgICAgKi8KKyAgICB2b2lkIGVycihTdHJpbmcgbWVzc2FnZSk7CisKKyAgICB2b2lkIGVycmxuKFN0cmluZyBtZXNzYWdlKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3QvYmlnZGVjL0RpYWdCaWdEZWNpbWFsLmphdmEgYi9zcmMvY29tL2libS90ZXN0L2JpZ2RlYy9EaWFnQmlnRGVjaW1hbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI3NzZhODUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXN0L2JpZ2RlYy9EaWFnQmlnRGVjaW1hbC5qYXZhCkBAIC0wLDAgKzEsNTM0MyBAQAorLyogR2VuZXJhdGVkIGZyb20gJ0RpYWdCaWdEZWNpbWFsLm5yeCcgMjcgTWFyIDIwMDAgMjI6Mzg6NDQgW3YxLjE2Ml0gKi8KKy8qIE9wdGlvbnM6IEJpbmFyeSBDb21tZW50cyBDcm9zc3JlZiBGb3JtYXQgSmF2YSBMb2dvIFRyYWNlMSBWZXJib3NlMyAqLworcGFja2FnZSBjb20uaWJtLnRlc3QuYmlnZGVjOworaW1wb3J0IGphdmEubWF0aC5CaWdJbnRlZ2VyOworaW1wb3J0IGNvbS5pYm0ubWF0aC4qOworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIERlY2ltYWwgZGlhZ25vc3RpYyB0ZXN0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1mYyAqLworLyogQ29weXJpZ2h0IChjKSBJQk0gQ29ycG9yYXRpb24gMTk5NiwgMjAwMC4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIERpYWdCaWdEZWNpbWFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgIEEgY2xhc3MgdGhhdCB0ZXN0cyB0aGUgQmlnRGVjaW1hbCBhbmQgTWF0aENvbnRleHQgY2xhc3Nlcy4gICAgICAgKi8KKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICBUaGUgdGVzdHMgaGVyZSBhcmUgZGVyaXZlZCBmcm9tIG9yIGNvdmVyIHRoZSBzYW1lIHBhdGhzIGFzOiAgICAgICovCisvKiAgICAgIC0tIEFOU0kgWDMtMjc0IHRlc3RjYXNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgICAgLS0gSmF2YSBKQ0sgdGVzdGNhc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogICAgICAtLSBOZXRSZXh4IHRlc3RjYXNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgIC0tIFZNL0NNUyBTLzM3MCBSRVhYIGltcGxlbWVudGF0aW9uIHRlc3RjYXNlcyBbMTk4MStdICAgICAgICAgKi8KKy8qICAgICAgLS0gSUJNIFZpZW5uYSBMYWJvcmF0b3J5IFJleHggY29tcGlsZXIgdGVzdGNhc2VzIFsxOTg4K10gICAgICAqLworLyogICAgICAtLSBOZXcgdGVzdGNhc2VzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qICAgVGhlIGF1dGhvcml0YXRpdmUgc291cmNlcyBmb3IgaG93IHRoZSB1bmRlcmx5aW5nIHRlY2hub2xvZ3kgICAgICAqLworLyogICAoYXJpdGhtZXRpYykgc2hvdWxkIHdvcmsgYXJlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgIC0tIGZvciBkaWdpdHM9MCAoZml4ZWQgcG9pbnQpOiBqYXZhLm1hdGguQmlnRGVjaW1hbCAgICAgICAgICAgKi8KKy8qICAgICAgLS0gZm9yIGRpZ2l0cz4wIChmbG9hdGluZyBwb2ludCk6IEFOU0kgWDMuMjc0LTE5OTYgKyBlcnJhdGEgICAqLworLyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIENoYW5nZSBsaXN0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogMTk5Ny4wOS4wNSBJbml0aWFsIGltcGxlbWVudGF0aW9uLCBmcm9tIERpYWdSZXh4IFtOZXRSZXh4IHRlc3RzXSAgICovCisvKiAxOTk4LjA1LjAyIDAuMDcgY2hhbmdlcyAoZS5nLiwgY29tcGFyZVRvKSAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTguMDYuMDYgUm91bmRpbmcgbW9kZXMgYW5kIGZvcm1hdCBhZGRpdGlvbnMgICAgICAgICAgICAgICAgICAgICAqLworLyogMTk5OC4wNi4yNSBSZW5hbWUgZnJvbSBEaWFnRGVjaW1hbDsgbWFrZSBzdGFuZC1hbG9uZSBbYWRkICAgICAgICAgICovCisvKiAgICAgICAgICAgIERpYWdFeGNlcHRpb24gYXMgYSBNaW5vciBjbGFzc10gICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTguMDYuMjcgU3RhcnQgYWRkaW5nIHRlc3RjYXNlcyBmb3IgRElHSVRTPTAvRk9STT1QTEFJTiBjYXNlcyAgICAqLworLyogICAgICAgICAgICBSZW9yZ2FuaXplIGZvciBmYXN0ZXIgdHJhY2UgY29tcGlsYXRpb24gICAgICAgICAgICAgICAgICovCisvKiAxOTk4LjA2LjI4IG5ldzogdmFsdWVvZiwgc2NhbGUsIG1vdmVQb2ludFgsIHVuc2NhbGVkVmFsdWUsIGV0Yy4gICAgKi8KKy8qIDE5OTguMDcuMDcgU2NhbGVkIGRpdmlkZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogMTk5OC4wNy4wOCBzZXRTY2FsZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk4LjA3LjE1IG5ldyBzY2FmZm9sZGluZyAoTWlub3IgVGVzdCBjbGFzcykgLS0gc2VlIGRpYWdhYnMgICAgICAgKi8KKy8qIDE5OTguMTIuMTQgYWRkIHRvQmlnRGVjaW1hbCBhbmQgQmlnRGVjaW1hbChqYXZhLm1hdGguQmlnRGVjaW1hbCkgICAqLworLyogMTk5OS4wMi4wNCBudW1iZXIgcHJlcGFyYXRpb24gcm91bmRzIGluc3RlYWQgb2YgZGlnaXRzKzEgdHJ1bmMgICAgICovCisvKiAxOTk5LjAyLjA5IGZvcm1hdCBtZXRob2Qgbm93IG9ubHkgaGFzIHR3byBzaWduYXR1cmVzICAgICAgICAgICAgICAgKi8KKy8qIDE5OTkuMDIuMjcgbm8gbG9uZ2VyIHVzZSBSZXh4IGNsYXNzIG9yIFJleHhJTyBjbGFzcyAgICAgICAgICAgICAgICAqLworLyogMTk5OS4wMy4wNSBhZGQgTWF0aENvbnRleHQgdGVzdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk5LjAzLjA1IHVwZGF0ZSBmb3IgMC45NiBbbm8gbnVsbCBzZXR0aW5ncywgZXRjLl0gICAgICAgICAgICAgICAgKi8KKy8qICAgICAgICAgICAgZHJvcCBzdW5kcnkgY29uc3RydWN0b3JzOyBubyBibGFua3M7IGNoYXJbXSBnZXRzIGludHMgICAqLworLyogICAgICAgICAgICBkcm9wIHN1bmRyeSBjb252ZXJ0ZXJzLCBhZGQgRXhhY3QgY29udmVydGVycyAgICAgICAgICAgICovCisvKiAxOTk5LjA1LjI3IGFkZGl0aW9uYWwgdGVzdHMgZm9yIHNjYWxlZCBhcml0aG1ldGljICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTkuMDYuMjkgYWRkaXRpb25hbCB0ZXN0cyBmb3IgZXhwb25lbnQgb3ZlcmZsb3dzICAgICAgICAgICAgICAgICAqLworLyogMTk5OS4wNy4wMyBhZGQgJ2NvbnRpbnVlJyBvcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk5LjA3LjEwIGFkZGl0aW9uYWwgdGVzdHMgZm9yIHNjYWxlZCBhcml0aG1ldGljICAgICAgICAgICAgICAgICAgKi8KKy8qIDE5OTkuMDcuMTggcmFuZG9tbHktZ2VuZXJhdGVkIHRlc3RzIGFkZGVkIGZvciBiYXNlIG9wZXJhdG9ycyAgICAgICAqLworLyogMTk5OS4xMC4yOCB3ZWlyZCBpbnRWYWx1ZUV4YWN0IGJhZCBjYXNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAxOTk5LjEyLjIxIG11bHRpcGxpY2F0aW9uIGZhc3QgcGF0aCBmYWlsdXJlIGFuZCBlZGdlIGNhc2VzICAgICAgICAgKi8KKy8qIDIwMDAuMDEuMDEgY29weXJpZ2h0IHVwZGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogMjAwMC4wMy4yNiBjb3NtZXRpYyB1cGRhdGVzOyBhZGQgZXh0cmEgZm9ybWF0KCkgdGVzdGNhc2VzICAgICAgICAgICovCisvKiAyMDAwLjAzLjI3IDEuMDAgbW92ZSB0byBjb20uaWJtLm1hdGggcGFja2FnZTsgb3BlbiBzb3VyY2UgcmVsZWFzZTsgKi8KKy8qICAgICAgICAgICAgICAgICBjaGFuZ2UgdG8gamF2YWRvYyBjb21tZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisKKy8vIG5vdGUgQklOQVJZIGZvciBjb252ZXJzaW9ucyBjaGVja2luZworCisKKworCisvKioKKyAqIFRoZSA8Y29kZT5EaWFnQmlnRGVjaW1hbDwvY29kZT4gY2xhc3MgZm9ybXMgYSBzdGFuZGFsb25lIHRlc3Qgc3VpdGUKKyAqIGZvciB0aGUgPGNvZGU+Y29tLmlibS5tYXRoLkJpZ0RlY2ltYWw8L2NvZGU+IGFuZAorICogPGNvZGU+Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0PC9jb2RlPiBjbGFzc2VzIChvciwgYnkgY2hhbmdpbmcgdGhlCisgKiA8Y29kZT5wYWNrYWdlPC9jb2RlPiBzdGF0ZW1lbnQsIG90aGVyIGNsYXNzZXMgb2YgdGhlIHNhbWUgbmFtZXMgYW5kCisgKiBkZWZpbml0aW9uIGluIG90aGVyIHBhY2thZ2VzKS4gIEl0IG1heSBhbHNvIGJlIHVzZWQgYXMgYSBjb25zdHJ1Y3RlZAorICogb2JqZWN0IHRvIGVtYmVkIHRoZSB0ZXN0cyBpbiBhbiBleHRlcm5hbCB0ZXN0IGhhcm5lc3MuCisgKiA8cD4KKyAqIFRoZSB0ZXN0cyBhcmUgY29sbGVjdGVkIGludG8gPGk+Z3JvdXBzPC9pPiwgZWFjaCBjb3JyZXNwb25kaW5nIHRvIGEKKyAqIHRlc3RlZCBtZXRob2Qgb3IgYSBtb3JlIGdlbmVyYWwgZ3JvdXBpbmcuICBCeSBkZWZhdWx0LCB3aGVuIHJ1biBmcm9tCisgKiB0aGUgc3RhdGljIHtAbGluayAjbWFpbihqYXZhLmxhbmcuU3RyaW5nW10pfSBtZXRob2QsIHRoZSBydW4gd2lsbCBlbmQKKyAqIGlmIGFueSB0ZXN0IGZhaWxzIGluIGEgZ3JvdXAuICBUaGUgPGNvZGU+Y29udGludWU8L2NvZGU+IGFyZ3VtZW50IG1heQorICogYmUgc3BlY2lmaWVkIHRvIGZvcmNlIHRoZSB0ZXN0cyB0byBydW4gdG8gY29tcGxldGlvbi4KKyAqIDxwPgorICogVHdvIG1pbm9yIChpbm5lcikgY2xhc3NlcyBhcmUgdXNlZDsge0BsaW5rCisgKiBEaWFnQmlnRGVjaW1hbC5EaWFnRXhjZXB0aW9ufSBpcyB1c2VkIHRvIHNpZ25hbCB0aGUgZmFpbHVyZSBvZiBhIHRlc3QKKyAqIGdyb3VwLCBhbmQge0BsaW5rIERpYWdCaWdEZWNpbWFsLlRlc3R9LCBhIGRlcGVuZGVudCBtaW5vciBjbGFzcywgaXMKKyAqIHVzZWQgdG8gcmVnaXN0ZXIgdGVzdHMgc28gdGhhdCBhIHN1bW1hcnkgb2YgZmFpbHVyZXMgKG9yIHN1Y2Nlc3MpIGNhbiBiZQorICogcHJlc2VudGVkIGFzIGVhY2ggZ3JvdXAgaXMgY29tcGxldGVkLgorICoKKyAqIEBzZWUgICAgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsCisgKiBAc2VlICAgICBjb20uaWJtLm1hdGguTWF0aENvbnRleHQKKyAqIEB2ZXJzaW9uIDEuMDAgMjAwMC4wMy4yNworICogQGF1dGhvciAgTWlrZSBDb3dsaXNoYXcKKyAqLworCitwdWJsaWMgY2xhc3MgRGlhZ0JpZ0RlY2ltYWx7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyAkMD0iRGlhZ0JpZ0RlY2ltYWwubnJ4IjsKKyAKKyAvKiBwcm9wZXJ0aWVzIHNoYXJlZCAqLworIGphdmEudXRpbC5WZWN0b3IgVGVzdHM9bmV3IGphdmEudXRpbC5WZWN0b3IoMTAwKTsgLy8gc2NhZmZvbGRpbmcKKyAKKyAvKiBwcm9wZXJ0aWVzIHByaXZhdGUgKi8KKyBwcml2YXRlIGludCB0b3RhbGNvdW50PTA7IC8vIGNvdW50cyB0ZXN0cyBydW4KKyAKKyAvKiBwcm9wZXJ0aWVzIGNvbnN0YW50IHByaXZhdGUgKi8KKyAKKyAvKiBDb3VudCBvZiB0ZXN0IGdyb3VwcyAqLworIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCB0ZXN0Y291bnQ9Mzg7CisgCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgemVybz1jb20uaWJtLm1hdGguQmlnRGVjaW1hbC5aRVJPOworIHByaXZhdGUgc3RhdGljIGZpbmFsIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIG9uZT1jb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkU7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgdHdvPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgyKTsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCB0ZW49Y29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuVEVOOworIHByaXZhdGUgc3RhdGljIGZpbmFsIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHRlbmxvbmc9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKChsb25nKTEyMzQ1NTQzMjEpOyAvLyAxMC1kaWdpdGVyCisgCisgLyogU29tZSBjb250ZXh0IG9iamVjdHMgLS0gW3NvbWUgb2YgdGhlc2UgYXJlIGNoZWNrZWQgbGF0ZXJdICovCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IG1jZGVmPWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ERUZBVUxUOworIHByaXZhdGUgc3RhdGljIGZpbmFsIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBtYzM9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgzKTsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBjb20uaWJtLm1hdGguTWF0aENvbnRleHQgbWM2PW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoNik7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IG1jOT1uZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KDkpOworIHByaXZhdGUgc3RhdGljIGZpbmFsIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBtYzUwPW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoNTApOworIHByaXZhdGUgc3RhdGljIGZpbmFsIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBtY3M9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCg5LGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDKTsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBjb20uaWJtLm1hdGguTWF0aENvbnRleHQgbWNlPW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoOSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuRU5HSU5FRVJJTkcpOworIHByaXZhdGUgc3RhdGljIGZpbmFsIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBtY2xkPW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoOSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQyx0cnVlKTsgLy8gbG9zdCBkaWdpdHMKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBjb20uaWJtLm1hdGguTWF0aENvbnRleHQgbWNsZDA9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDLHRydWUpOyAvLyBsb3N0IGRpZ2l0cywgZGlnaXRzPTAKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBjb20uaWJtLm1hdGguTWF0aENvbnRleHQgbWNmZD1uZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOKTsgLy8gZml4ZWQgZGVjaW1hbCBzdHlsZQorIAorIC8qIGJvdW5kYXJ5IHByaW1pdGl2ZSB2YWx1ZXMgKi8KKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIGJtaW49LTEyODsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIGJtYXg9MTI3OworIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgYnplcj0wOworIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgYm5lZz0tMTsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIGJwb3M9MTsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgaW1pbj0tMjE0NzQ4MzY0ODsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgaW1heD0yMTQ3NDgzNjQ3OworIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBpemVyPTA7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGluZWc9LTE7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGlwb3M9MTsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIGxtaW49LTkyMjMzNzIwMzY4NTQ3NzU4MDhMOworIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgbG1heD05MjIzMzcyMDM2ODU0Nzc1ODA3TDsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIGx6ZXI9KGxvbmcpMDsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIGxuZWc9KGxvbmcpLTE7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBscG9zPShsb25nKTE7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgc2hvcnQgc21pbj0tMzI3Njg7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgc2hvcnQgc21heD0zMjc2NzsKKyBwcml2YXRlIHN0YXRpYyBmaW5hbCBzaG9ydCBzemVyPShzaG9ydCkwOworIHByaXZhdGUgc3RhdGljIGZpbmFsIHNob3J0IHNuZWc9KHNob3J0KSgtMSk7CisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgc2hvcnQgc3Bvcz0oc2hvcnQpMTsKKyAKKyAKKyAvKiBwcm9wZXJ0aWVzIGNvbnN0YW50IHByaXZhdGUgdW51c2VkICovIC8vIHByZXNlbnQgYnV0IG5vdCByZWZlcmVuY2VkCisgcHJpdmF0ZSBzdGF0aWMgZmluYWwgamF2YS5sYW5nLlN0cmluZyBjb3B5cmlnaHQ9IiBDb3B5cmlnaHQgKGMpIElCTSBDb3Jwb3JhdGlvbiAxOTk2LCAyMDAwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIjsKKworIAorIC8qKiBDb25zdHJ1Y3RzIGEgPGNvZGU+RGlhZ0JpZ0RlY2ltYWw8L2NvZGU+IHRlc3Qgc3VpdGUuCisgICAqIDxwPgorICAgKiBJbnZva2UgaXRzIHtAbGluayAjZGlhZ3J1bn0gbWV0aG9kIHRvIHJ1biB0aGUgdGVzdHMuCisgICAqLworIAorIHB1YmxpYyBEaWFnQmlnRGVjaW1hbCgpe3N1cGVyKCk7CisgIHJldHVybjsKKyAgfQorCisgLyoqIFJ1biB0aGUgdGVzdHMgaW4gdGhlIHRlc3Qgc3VpdGUuCisgICoKKyAgKiBAcGFyYW0gaXNDb250aW51ZSBUaGUgPGNvZGU+Ym9vbGVhbjwvY29kZT4gd2hpY2ggZGV0ZXJtaW5lcyB3aGV0aGVyCisgICogICAgICAgICAgICAgICAgICAgdG8gc3RvcCBydW5uaW5nIGFmdGVyIGEgZ3JvdXAgZmFpbHMuICBJZiAxICh0cnVlKQorICAqICAgICAgICAgICAgICAgICAgIHRoZW4gdGhlIHRlc3RzIHNob3VsZCBiZSBydW4gdG8gY29tcGxldGlvbiBpZgorICAqICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlOyBpZiAwIChmYWxzZSkgdGhlbiB0aGUgcnVuIHdpbGwgZW5kIGlmIGEKKyAgKiAgICAgICAgICAgICAgICAgICBncm91cCBmYWlscy4KKyAgKiBAcmV0dXJuIGFuIDxjb2RlPmludDwvY29kZT4gd2hpY2ggaXMgMCBpZiBhbGwgdGVzdHMgd2VyZQorICAqIHN1Y2Nlc3NmdWwsID4wICh0aGUgY291bnQgb2YgZmFpbHVyZXMpIGlmIHNvbWUgZmFpbHVyZXMgd2VyZQorICAqIGRldGVjdGVkLCBvciA8MCBpZiBhbiB1bmV4cGVjdGVkIEV4Y2VwdGlvbiB3YXMgc2lnbmFsbGVkLgorICAqLworIAorIHB1YmxpYyBpbnQgZGlhZ3J1bihib29sZWFuIGlzQ29udGludWUpeworICBpbnQgZmFpbHM7CisgIGludCBudW09MDsKKyAgRGlhZ0V4Y2VwdGlvbiBkZT1udWxsOworICBqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiBlPW51bGw7CisgIGphdmEubGFuZy5TdHJpbmcgcmVzdD1udWxsOworICAKKyAgZmFpbHM9MDsgLy8gY291bnQgb2YgZmFpbHVyZXMKKyAgdHJ5e251bT0xO251bTpmb3IoO251bTw9dGVzdGNvdW50O251bSsrKXsgLy8gW3Rlc3Rjb3VudCBpcyBjb25zdGFudCBzZXQgYWJvdmVdCisgICB0cnl7CisgICAgZG90ZXN0KG51bSk7CisgICB9CisgICBjYXRjaCAoRGlhZ0V4Y2VwdGlvbiAkMSl7ZGU9JDE7CisgICAgc2F5KCk7CisgICAgc2F5KCIqKioqIEZhaWxlZDoiKyIgIitkZS5nZXRNZXNzYWdlKCkrIiAiKyIqKioqIik7CisgICAgc2F5KCk7CisgICAgZmFpbHM9ZmFpbHMrZGUuZmFpbGNvdW50OworICAgIGlmICgoIWlzQ29udGludWUpKSAKKyAgICAgYnJlYWsgbnVtOworICAgfQorICAgfQorICB9CisgIGNhdGNoIChqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiAkMil7ZT0kMjsgLy8gYW55IG90aGVyIGV4Y2VwdGlvbiBpcyB0b3RhbCBmYWlsdXJlOyBqdXN0IHNob3cgdHJhY2UgYW5kIHF1aXQKKyAgIHNheSgpOworICAgc2F5KCIqKioqIEZhaWxlZDogdW5leHBlY3RlZCBleGNlcHRpb24gKioqKiIpOworICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgIHJldHVybiAtMTsKKyAgfS8qbnVtKi8KKyAgCisgIGlmIChmYWlscz09MCkgCisgICBzYXkoIi0tLSBBbGwgT0sgLS0tIisiICIrcmlnaHQoIlsiK3RvdGFsY291bnQrIiAiKyJ0ZXN0c10iLDE1KSk7CisgIGVsc2UgCisgICB7CisgICAgaWYgKGlzQ29udGludWUpIAorICAgICB7CisgICAgICBpZiAoZmFpbHM+MSkgCisgICAgICAgcmVzdD0idGVzdHMiOworICAgICAgZWxzZSAKKyAgICAgICByZXN0PSJ0ZXN0IjsKKyAgICAgIHNheSgiLS0tIEFsbCBydW4gLS0tIisiICIrcmlnaHQoIlsiK3RvdGFsY291bnQrIiAiKyJ0ZXN0cywiLDE0KSsiICIrImZhaWxlZCIrIiAiK2ZhaWxzKyIgIityZXN0KyJdIik7CisgICAgIAorICAgICB9CisgICB9CisgIAorICByZXR1cm4gZmFpbHM7CisgIH0KKworIC8qIFJ1biB0ZXN0IGJ5IG51bWJlciAtLSBtZXRob2QgZm9yIGRldmVsb3BtZW50L3ByaXZhdGUgc3dpdGNoaW5nICovCisgCisgcHJpdmF0ZSB2b2lkIGRvdGVzdChpbnQgbnVtKXsKKyAgey8qc2VsZWN0Ki9zd2l0Y2gobnVtKXsKKyAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgICAvKiBNYXRoQ29udGV4dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAgY2FzZSAxOgorICAgZGlhZ21hdGhjb250ZXh0KCk7YnJlYWs7CisgICAKKyAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgICAvKiBDb25zdHJ1Y3RvcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAgY2FzZSAyOgorICAgZGlhZ2NvbnN0cnVjdG9ycygpO2JyZWFrOworICAgCisgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworICAgLyogT3BlcmF0b3IgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgIGNhc2UgMzoKKyAgIGRpYWdhYnMoKTticmVhazsKKyAgY2FzZSA0OgorICAgZGlhZ2FkZCgpO2JyZWFrOworICBjYXNlIDU6CisgICBkaWFnY29tcGFyZXRvKCk7YnJlYWs7CisgIGNhc2UgNjoKKyAgIGRpYWdkaXZpZGUoKTticmVhazsKKyAgY2FzZSA3OgorICAgZGlhZ2RpdmlkZUludGVnZXIoKTticmVhazsKKyAgY2FzZSA4OgorICAgZGlhZ21heCgpO2JyZWFrOworICBjYXNlIDk6CisgICBkaWFnbWluKCk7YnJlYWs7CisgIGNhc2UgMTA6CisgICBkaWFnbXVsdGlwbHkoKTticmVhazsKKyAgY2FzZSAxMToKKyAgIGRpYWduZWdhdGUoKTticmVhazsKKyAgY2FzZSAxMjoKKyAgIGRpYWdwbHVzKCk7YnJlYWs7CisgIGNhc2UgMTM6CisgICBkaWFncG93KCk7YnJlYWs7CisgIGNhc2UgMTQ6CisgICBkaWFncmVtYWluZGVyKCk7YnJlYWs7CisgIGNhc2UgMTU6CisgICBkaWFnc3VidHJhY3QoKTticmVhazsKKyAgY2FzZSAxNjoKKyAgIGRpYWdtYXRoKCk7YnJlYWs7IC8vIGdlbmVyYWwgbWF0aAorICAgCisgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworICAgLyogT3RoZXIgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgIGNhc2UgMTc6CisgICBkaWFnYnl0ZVZhbHVlKCk7YnJlYWs7CisgIGNhc2UgMTg6CisgICBkaWFnY29tcGFyZXRvT2JqKCk7YnJlYWs7CisgIGNhc2UgMTk6CisgICBkaWFnZG91YmxldmFsdWUoKTticmVhazsKKyAgY2FzZSAyMDoKKyAgIGRpYWdlcXVhbHMoKTticmVhazsKKyAgY2FzZSAyMToKKyAgIGRpYWdmbG9hdHZhbHVlKCk7YnJlYWs7CisgIGNhc2UgMjI6CisgICBkaWFnZm9ybWF0KCk7YnJlYWs7CisgIGNhc2UgMjM6CisgICBkaWFnaGFzaGNvZGUoKTticmVhazsKKyAgY2FzZSAyNDoKKyAgIGRpYWdpbnR2YWx1ZSgpO2JyZWFrOworICBjYXNlIDI1OgorICAgZGlhZ2xvbmd2YWx1ZSgpO2JyZWFrOworICBjYXNlIDI2OgorICAgZGlhZ21vdmVwb2ludGxlZnQoKTticmVhazsKKyAgY2FzZSAyNzoKKyAgIGRpYWdtb3ZlcG9pbnRyaWdodCgpO2JyZWFrOworICBjYXNlIDI4OgorICAgZGlhZ3NjYWxlKCk7YnJlYWs7CisgIGNhc2UgMjk6CisgICBkaWFnc2V0c2NhbGUoKTticmVhazsKKyAgY2FzZSAzMDoKKyAgIGRpYWdzaG9ydHZhbHVlKCk7YnJlYWs7CisgIGNhc2UgMzE6CisgICBkaWFnc2lnbnVtKCk7YnJlYWs7CisgIGNhc2UgMzI6CisgICBkaWFndG9iaWdkZWNpbWFsKCk7YnJlYWs7CisgIGNhc2UgMzM6CisgICBkaWFndG9iaWdpbnRlZ2VyKCk7YnJlYWs7CisgIGNhc2UgMzQ6CisgICBkaWFndG9jaGFyYXJyYXkoKTticmVhazsKKyAgY2FzZSAzNToKKyAgIGRpYWd0b3N0cmluZygpO2JyZWFrOworICBjYXNlIDM2OgorICAgZGlhZ3Vuc2NhbGVkdmFsdWUoKTticmVhazsKKyAgY2FzZSAzNzoKKyAgIGRpYWd2YWx1ZW9mKCk7YnJlYWs7CisgICAKKyAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgICAvKiBNdXRhdGlvbiB0ZXN0IFttdXN0IGJlIHRoZSBsYXN0IHRlc3RdICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAgY2FzZSAzODoKKyAgIGRpYWdtdXRhdGlvbigpO2JyZWFrOworICAgLy8gaWYgYW55IG1vcmUsIGluY3JlYXNlIHRlc3Rjb3VudCBhYm92ZQorICBkZWZhdWx0OnsKKyAgIHNheSgiKioqIGRvdGVzdCBjYXNlIG5vdCBmb3VuZDoiKyIgIitudW0rIiAiKyIqKioiKTsKKyAgfX0KKyAgfQorICByZXR1cm47CisgIH0KKworIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworIC8qIERpYWdub3N0aWMgZ3JvdXAgbWV0aG9kcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworIAorIC8qKiBUZXN0IGNvbnN0cnVjdG9ycyAoYW5kIHtAbGluayAjdG9TdHJpbmcoKX0gZm9yIGVxdWFsaXRpZXMpLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdjb25zdHJ1Y3RvcnMoKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBqYXZhLmxhbmcuU3RyaW5nIG51bTsKKyAgamF2YS5tYXRoLkJpZ0ludGVnZXIgYmlwOworICBqYXZhLm1hdGguQmlnSW50ZWdlciBiaXo7CisgIGphdmEubWF0aC5CaWdJbnRlZ2VyIGJpbjsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgYmRhOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBiZGI7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGJtYzsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgYm1kOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBibWU7CisgIGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIGU9bnVsbDsKKyAgY2hhciBjYVtdOworICBkb3VibGUgZHplcjsKKyAgZG91YmxlIGRwb3M7CisgIGRvdWJsZSBkbmVnOworICBkb3VibGUgZHBvczU7CisgIGRvdWJsZSBkbmVnNTsKKyAgZG91YmxlIGRtaW47CisgIGRvdWJsZSBkbWF4OworICBkb3VibGUgZDsKKyAgamF2YS5sYW5nLlN0cmluZyBiYWRzdHJpbmdzW107CisgIGludCBpPTA7CisgIAorICAvLyBjb25zdGFudHMgW3N0YXRpY2FsbHktY2FsbGVkIGNvbnN0cnVjdG9yc10KKyAgKG5ldyBUZXN0KCJjb24wMDEiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLlpFUk8udG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiY29uMDAyIikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgiY29uMDAzIikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5URU4udG9TdHJpbmcoKSkuZXF1YWxzKCIxMCIpOworICAobmV3IFRlc3QoImNvbjAwNCIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuWkVSTy5pbnRWYWx1ZUV4YWN0KCkpPT0wOworICAobmV3IFRlc3QoImNvbjAwNSIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLmludFZhbHVlRXhhY3QoKSk9PTE7CisgIChuZXcgVGVzdCgiY29uMDA2IikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5URU4uaW50VmFsdWVFeGFjdCgpKT09MTA7CisgIAorICAvLyBbamF2YS5tYXRoLl0gQmlnRGVjaW1hbAorICAobmV3IFRlc3QoImNiZDAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChuZXcgamF2YS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImNiZDAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChuZXcgamF2YS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoImNiZDAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChuZXcgamF2YS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgVGVzdCgiY2JkMDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwIik7CisgIChuZXcgVGVzdCgiY2JkMDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbCgiMTAuMCIpKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMC4wIik7CisgIChuZXcgVGVzdCgiY2JkMDA2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbCgiMTAuMSIpKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMC4xIik7CisgIChuZXcgVGVzdCgiY2JkMDA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbCgiLTEuMSIpKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMS4xIik7CisgIChuZXcgVGVzdCgiY2JkMDA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbCgiLTkuMCIpKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItOS4wIik7CisgIChuZXcgVGVzdCgiY2JkMDA5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbCgiMC45IikpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOSIpOworICAKKyAgbnVtPSIxMjM0NTY3ODkuMTIzNDU2Nzg5IjsKKyAgKG5ldyBUZXN0KCJjYmQwMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwobmV3IGphdmEubWF0aC5CaWdEZWNpbWFsKG51bSkpKS50b1N0cmluZygpKS5lcXVhbHMobnVtKTsKKyAgbnVtPSIxMjM0NTY3ODkuMDAwMDAwMDAwIjsKKyAgKG5ldyBUZXN0KCJjYmQwMTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwobmV3IGphdmEubWF0aC5CaWdEZWNpbWFsKG51bSkpKS50b1N0cmluZygpKS5lcXVhbHMobnVtKTsKKyAgbnVtPSIxMjM0NTY3ODkwMDAwMDAwMDAiOworICAobmV3IFRlc3QoImNiZDAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChuZXcgamF2YS5tYXRoLkJpZ0RlY2ltYWwobnVtKSkpLnRvU3RyaW5nKCkpLmVxdWFscyhudW0pOworICBudW09IjAuMDAwMDAxMjM0NTY3ODkiOworICAobmV3IFRlc3QoImNiZDAxMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChuZXcgamF2YS5tYXRoLkJpZ0RlY2ltYWwobnVtKSkpLnRvU3RyaW5nKCkpLmVxdWFscyhudW0pOworICBudW09IjAuMDAwMDAwMTIzNDU2Nzg5IjsKKyAgKG5ldyBUZXN0KCJjYmQwMTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwobmV3IGphdmEubWF0aC5CaWdEZWNpbWFsKG51bSkpKS50b1N0cmluZygpKS5lcXVhbHMobnVtKTsKKyAgCisgIHRyeXtjaGVja251bGw6ZG97CisgICBuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoKGphdmEubWF0aC5CaWdEZWNpbWFsKW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDMpeworICAgZmxhZz10cnVlOworICB9LypjaGVja251bGwqLworICAobmV3IFRlc3QoImNiaTAxNSIpKS5vaz1mbGFnOworICAKKyAgLy8gQmlnSW50ZWdlcgorICBiaXA9bmV3IEJpZ0ludGVnZXIoIjk4NzY1NDMyMTk4NzY1NDMyMTk4NzY1NDMyMSIpOyAvLyBiaWdnaWUgK3ZlCisgIGJpej1uZXcgQmlnSW50ZWdlcigiMCIpOyAvLyBiaWdnaWUgMAorICBiaW49bmV3IEJpZ0ludGVnZXIoIi0xMjM0NTY3ODk5ODc2NTQzMjExMjM0NTY3OCIpOyAvLyBiaWdnaWUgLXZlCisgIChuZXcgVGVzdCgiY2JpMDAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGJpcCkpLnRvU3RyaW5nKCkpLmVxdWFscyhiaXAudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgiY2JpMDAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGJpeikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImNiaTAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChiaW4pKS50b1N0cmluZygpKS5lcXVhbHMoYmluLnRvU3RyaW5nKCkpOworICB0cnl7Y2hlY2tudWxsOmRveworICAgbmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKChqYXZhLm1hdGguQmlnSW50ZWdlciludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ0KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfS8qY2hlY2tudWxsKi8KKyAgKG5ldyBUZXN0KCJjYmkwMDQiKSkub2s9ZmxhZzsKKyAgCisgIC8vIEJpZ0ludGVnZXIgd2l0aCBzY2FsZQorICBiaXA9bmV3IEJpZ0ludGVnZXIoIjEyMzQ1Njc4OSIpOyAvLyBiaWdpc2gKKyAgYmRhPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChiaXApOworICBiZGI9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGJpcCw1KTsKKyAgYm1jPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChiaXAsMTUpOworICAobmV3IFRlc3QoImNiczAwMSIpKS5vaz0oYmRhLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNDU2Nzg5Iik7CisgIChuZXcgVGVzdCgiY2JzMDAyIikpLm9rPShiZGIudG9TdHJpbmcoKSkuZXF1YWxzKCIxMjM0LjU2Nzg5Iik7CisgIChuZXcgVGVzdCgiY2JzMDAzIikpLm9rPShibWMudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMDEyMzQ1Njc4OSIpOworICBiaXA9bmV3IEJpZ0ludGVnZXIoIjEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4OSIpOyAvLyBiaWdnaWUKKyAgYmRhPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChiaXApOworICBiZGI9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGJpcCw3KTsKKyAgYm1jPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChiaXAsMTMpOworICBibWQ9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGJpcCwxOSk7CisgIGJtZT1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYmlwLDI5KTsKKyAgKG5ldyBUZXN0KCJjYnMwMTEiKSkub2s9KGJkYS50b1N0cmluZygpKS5lcXVhbHMoIjEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4OSIpOworICAobmV3IFRlc3QoImNiczAxMiIpKS5vaz0oYmRiLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNDU2Nzg5MTIzNDU2Nzg5MTIuMzQ1Njc4OSIpOworICAobmV3IFRlc3QoImNiczAxMyIpKS5vaz0oYm1jLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNDU2Nzg5MTIzNDUuNjc4OTEyMzQ1Njc4OSIpOworICAobmV3IFRlc3QoImNiczAxNCIpKS5vaz0oYm1kLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNDU2NzguOTEyMzQ1Njc4OTEyMzQ1Njc4OSIpOworICAobmV3IFRlc3QoImNiczAxNSIpKS5vaz0oYm1lLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDEyMzQ1Njc4OTEyMzQ1Njc4OTEyMzQ1Njc4OSIpOworICB0cnl7Y2hlY2tudWxsOmRveworICAgbmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKChqYXZhLm1hdGguQmlnSW50ZWdlciludWxsLDEpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDUpeworICAgZmxhZz10cnVlOworICB9LypjaGVja251bGwqLworICAobmV3IFRlc3QoImNiczAwNCIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tzY2FsZTpkb3sKKyAgIG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChiaXAsLTgpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiAkNil7ZT0kNjsKKyAgIGZsYWc9KGUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIk5lZ2F0aXZlIHNjYWxlOiAtOCIpOworICB9LypjaGVja3NjYWxlKi8KKyAgKG5ldyBUZXN0KCJjYnMwMDUiKSkub2s9ZmxhZzsKKyAgCisgIC8vIGNoYXJbXQorICAvLyBXZSBqdXN0IHRlc3QgaXQncyB0aGVyZQorICAvLyBGdW5jdGlvbmFsaXR5IGlzIHRlc3RlZCBieSBCaWdEZWNpbWFsKFN0cmluZykuCisgIGNhPSgiMTIzLjQ1IikudG9DaGFyQXJyYXkoKTsKKyAgKG5ldyBUZXN0KCJjY2EwMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EpKS50b1N0cmluZygpKS5lcXVhbHMoIjEyMy40NSIpOworICB0cnl7Y2hlY2tudWxsOmRveworICAgbmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKChjaGFyW10pbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkNyl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbCovCisgIChuZXcgVGVzdCgiY2NhMDEwIikpLm9rPWZsYWc7CisgIAorICAvLyBjaGFyW10saW50LGludAorICAvLyBXZSBqdXN0IHRlc3QgaXQncyB0aGVyZSwgYW5kIHRoYXQgb2Zmc2V0cyB3b3JrLgorICAvLyBGdW5jdGlvbmFsaXR5IGlzIHRlc3RlZCBieSBCaWdEZWNpbWFsKFN0cmluZykuCisgIGNhPSgiMTIzLjQ1IikudG9DaGFyQXJyYXkoKTsKKyAgKG5ldyBUZXN0KCJjY2ExMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsMCw2KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMjMuNDUiKTsKKyAgKG5ldyBUZXN0KCJjY2ExMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsMSw1KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyMy40NSIpOworICAobmV3IFRlc3QoImNjYTEwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChjYSwyLDQpKS50b1N0cmluZygpKS5lcXVhbHMoIjMuNDUiKTsKKyAgKG5ldyBUZXN0KCJjY2ExMDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsMywzKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQ1Iik7CisgIChuZXcgVGVzdCgiY2NhMTA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGNhLDQsMikpLnRvU3RyaW5nKCkpLmVxdWFscygiNDUiKTsKKyAgKG5ldyBUZXN0KCJjY2ExMDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsNSwxKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI1Iik7CisgIAorICAobmV3IFRlc3QoImNjYTExMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChjYSwwLDEpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJjY2ExMTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsMSwxKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgVGVzdCgiY2NhMTEyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGNhLDIsMSkpLnRvU3RyaW5nKCkpLmVxdWFscygiMyIpOworICAobmV3IFRlc3QoImNjYTExMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChjYSw0LDEpKS50b1N0cmluZygpKS5lcXVhbHMoIjQiKTsKKyAgCisgIChuZXcgVGVzdCgiY2NhMTIwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGNhLDAsMikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIiKTsKKyAgKG5ldyBUZXN0KCJjY2ExMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsMSwyKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyMyIpOworICAobmV3IFRlc3QoImNjYTEyMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChjYSwyLDIpKS50b1N0cmluZygpKS5lcXVhbHMoIjMiKTsKKyAgKG5ldyBUZXN0KCJjY2ExMjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsMywyKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQiKTsKKyAgCisgIChuZXcgVGVzdCgiY2NhMTMwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGNhLDAsMykpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzIik7CisgIChuZXcgVGVzdCgiY2NhMTMxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGNhLDEsMykpLnRvU3RyaW5nKCkpLmVxdWFscygiMjMiKTsKKyAgKG5ldyBUZXN0KCJjY2ExMzIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsMiwzKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzLjQiKTsKKyAgCisgIChuZXcgVGVzdCgiY2NhMTQwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGNhLDAsNCkpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzIik7CisgIChuZXcgVGVzdCgiY2NhMTQxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGNhLDEsNCkpLnRvU3RyaW5nKCkpLmVxdWFscygiMjMuNCIpOworICAKKyAgKG5ldyBUZXN0KCJjY2ExNTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsMCw1KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMjMuNCIpOworICAKKyAgLy8gYSBjb3VwbGUgb2Ygb2RkaWVzCisgIGNhPSgieDIzLjR4IikudG9DaGFyQXJyYXkoKTsKKyAgKG5ldyBUZXN0KCJjY2ExNjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsMSw0KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyMy40Iik7CisgIChuZXcgVGVzdCgiY2NhMTYxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGNhLDEsMSkpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAobmV3IFRlc3QoImNjYTE2MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChjYSw0LDEpKS50b1N0cmluZygpKS5lcXVhbHMoIjQiKTsKKyAgCisgIGNhPSgiMDEyMzQ1Njc4OS45ODc2NTQzMjEwIikudG9DaGFyQXJyYXkoKTsKKyAgKG5ldyBUZXN0KCJjY2ExNjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsMCwyMSkpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNDU2Nzg5Ljk4NzY1NDMyMTAiKTsKKyAgKG5ldyBUZXN0KCJjY2ExNjQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsMSwyMCkpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNDU2Nzg5Ljk4NzY1NDMyMTAiKTsKKyAgKG5ldyBUZXN0KCJjY2ExNjUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsMiwxOSkpLnRvU3RyaW5nKCkpLmVxdWFscygiMjM0NTY3ODkuOTg3NjU0MzIxMCIpOworICAobmV3IFRlc3QoImNjYTE2NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChjYSwyLDE4KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyMzQ1Njc4OS45ODc2NTQzMjEiKTsKKyAgKG5ldyBUZXN0KCJjY2ExNjciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsMiwxNykpLnRvU3RyaW5nKCkpLmVxdWFscygiMjM0NTY3ODkuOTg3NjU0MzIiKTsKKyAgKG5ldyBUZXN0KCJjY2ExNjgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2EsMiwxNikpLnRvU3RyaW5nKCkpLmVxdWFscygiMjM0NTY3ODkuOTg3NjU0MyIpOworICAKKyAgdHJ5e2NoZWNrbnVsbDpkb3sKKyAgIG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgoY2hhcltdKW51bGwsMCwxKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ4KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfS8qY2hlY2tudWxsKi8KKyAgKG5ldyBUZXN0KCJjY2EyMDAiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja2xlbjpkb3sKKyAgIG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzIi50b0NoYXJBcnJheSgpLDAsMCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24gJDkpeworICAgZmxhZz10cnVlOworICB9LypjaGVja2xlbiovCisgIChuZXcgVGVzdCgiY2NhMjAxIikpLm9rPWZsYWc7CisgIAorICB0cnl7Y2hlY2tib3VuZDpkb3sKKyAgIG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzIi50b0NoYXJBcnJheSgpLDIsNCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uICQxMCl7IC8vIGFueXRoaW5nIE9LCisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrYm91bmQqLworICAobmV3IFRlc3QoImNjYTIwMiIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tib3VuZDI6ZG97CisgICBuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMyIudG9DaGFyQXJyYXkoKSwtMSwyKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24gJDExKXsgLy8gYW55dGhpbmcgT0sKKyAgIGZsYWc9dHJ1ZTsKKyAgfS8qY2hlY2tib3VuZDIqLworICAobmV3IFRlc3QoImNjYTIwMyIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tib3VuZDM6ZG97CisgICBuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMyIudG9DaGFyQXJyYXkoKSwxLC0yKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24gJDEyKXsgLy8gYW55dGhpbmcgT0sKKyAgIGZsYWc9dHJ1ZTsKKyAgfS8qY2hlY2tib3VuZDMqLworICAobmV3IFRlc3QoImNjYTIwNCIpKS5vaz1mbGFnOworICAKKyAgLy8gZG91YmxlIFtkZXByZWNhdGVkXQorICAvLyBOb3RlIHRoYXQgbWFueSBvZiB0aGVzZSBkaWZmZXIgZnJvbSB0aGUgdmFsdWVPZihkb3VibGUpIHJlc3VsdHMuCisgIGR6ZXI9KGRvdWJsZSkwOworICBkcG9zPShkb3VibGUpMTsKKyAgZHBvcz1kcG9zLygoZG91YmxlKTEwKTsKKyAgZG5lZz0oZG91YmxlKS1kcG9zOworICAobmV3IFRlc3QoImNkbzAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChkbmVnKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4xMDAwMDAwMDAwMDAwMDAwMDU1NTExMTUxMjMxMjU3ODI3MDIxMTgxNTgzNDA0NTQxMDE1NjI1Iik7CisgIAorICAobmV3IFRlc3QoImNkbzAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChkemVyKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7IC8vIE5CLCBub3QgJzAuMCcKKyAgKG5ldyBUZXN0KCJjZG8wMDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoZHBvcykpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMDAwMDAwMDAwMDAwMDAwMDU1NTExMTUxMjMxMjU3ODI3MDIxMTgxNTgzNDA0NTQxMDE1NjI1Iik7CisgIAorICBkcG9zNT0oZG91YmxlKTAuNUQ7CisgIGRuZWc1PShkb3VibGUpLWRwb3M1OworICAobmV3IFRlc3QoImNkbzAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChkbmVnNSkpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuNSIpOworICAobmV3IFRlc3QoImNkbzAwNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChkcG9zNSkpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41Iik7CisgIGRtaW49amF2YS5sYW5nLkRvdWJsZS5NSU5fVkFMVUU7CisgIGRtYXg9amF2YS5sYW5nLkRvdWJsZS5NQVhfVkFMVUU7CisgIChuZXcgVGVzdCgiY2RvMDA2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGRtaW4pKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0OTQwNjU2NDU4NDEyNDY1NDQxNzY1Njg3OTI4NjgyMjEzNzIzNjUwNTk4MDI2MTQzMjQ3NjQ0MjU1ODU2ODI1MDA2NzU1MDcyNzAyMDg3NTE4NjUyOTk4MzYzNjE2MzU5OTIzNzk3OTY1NjQ2OTU0NDU3MTc3MzA5MjY2NTY3MTAzNTU5Mzk3OTYzOTg3NzQ3OTYwMTA3ODE4NzgxMjYzMDA3MTMxOTAzMTE0MDQ1Mjc4NDU4MTcxNjc4NDg5ODIxMDM2ODg3MTg2MzYwNTY5OTg3MzA3MjMwNTAwMDYzODc0MDkxNTM1NjQ5ODQzODczMTI0NzMzOTcyNzMxNjk2MTUxNDAwMzE3MTUzODUzOTgwNzQxMjYyMzg1NjU1OTExNzEwMjY2NTg1NTY2ODY3NjgxODcwMzk1NjAzMTA2MjQ5MzE5NDUyNzE1OTE0OTI0NTUzMjkzMDU0NTY1NDQ0MDExMjc0ODAxMjk3MDk5OTk1NDE5MzE5ODk0MDkwODA0MTY1NjMzMjQ1MjQ3NTcxNDc4NjkwMTQ3MjY3ODAxNTkzNTUyMzg2MTE1NTAxMzQ4MDM1MjY0OTM0NzIwMTkzNzkwMjY4MTA3MTA3NDkxNzAzMzMyMjI2ODQ0NzUzMzM1NzIwODMyNDMxOTM2MDkyMzgyODkzNDU4MzY4MDYwMTA2MDExNTA2MTY5ODA5NzUzMDc4MzQyMjc3MzE4MzI5MjQ3OTA0OTgyNTI0NzMwNzc2Mzc1OTI3MjQ3ODc0NjU2MDg0Nzc4MjAzNzM0NDY5Njk5NTMzNjQ3MDE3OTcyNjc3NzE3NTg1MTI1NjYwNTUxMTk5MTMxNTA0ODkxMTAxNDUxMDM3ODYyNzM4MTY3MjUwOTU1ODM3Mzg5NzMzNTk4OTkzNjY0ODA5OTQxMTY0MjA1NzAyNjM3MDkwMjc5MjQyNzY3NTQ0NTY1MjI5MDg3NTM4NjgyNTA2NDE5NzE4MjY1NTMzNDQ3MjY1NjI1Iik7CisgIAorICAobmV3IFRlc3QoImNkbzAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChkbWF4KSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxNzk3NjkzMTM0ODYyMzE1NzA4MTQ1Mjc0MjM3MzE3MDQzNTY3OTgwNzA1Njc1MjU4NDQ5OTY1OTg5MTc0NzY4MDMxNTcyNjA3ODAwMjg1Mzg3NjA1ODk1NTg2MzI3NjY4NzgxNzE1NDA0NTg5NTM1MTQzODI0NjQyMzQzMjEzMjY4ODk0NjQxODI3Njg0Njc1NDY3MDM1Mzc1MTY5ODYwNDk5MTA1NzY1NTEyODIwNzYyNDU0OTAwOTAzODkzMjg5NDQwNzU4Njg1MDg0NTUxMzM5NDIzMDQ1ODMyMzY5MDMyMjI5NDgxNjU4MDg1NTkzMzIxMjMzNDgyNzQ3OTc4MjYyMDQxNDQ3MjMxNjg3MzgxNzcxODA5MTkyOTk4ODEyNTA0MDQwMjYxODQxMjQ4NTgzNjgiKTsKKyAgCisgIAorICAvLyBuYXN0aWVzCisgIGQ9KGRvdWJsZSk5OworICBkPWQvKChkb3VibGUpMTApOworICAobmV3IFRlc3QoImNkbzAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChkKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjkwMDAwMDAwMDAwMDAwMDAyMjIwNDQ2MDQ5MjUwMzEzMDgwODQ3MjYzMzM2MTgxNjQwNjI1Iik7CisgIAorICBkPWQvKChkb3VibGUpMTApOworICAobmV3IFRlc3QoImNkbzAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChkKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjA4OTk5OTk5OTk5OTk5OTk5NjY2OTMzMDkyNjEyNDUzMDM3ODcyOTEwNDk5NTcyNzUzOTA2MjUiKTsKKyAgCisgIGQ9ZC8oKGRvdWJsZSkxMCk7CisgIChuZXcgVGVzdCgiY2RvMDEyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGQpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDA4OTk5OTk5OTk5OTk5OTk5MzE5OTg4Mzk3NDE3MDkxNjE4OTkwNTI1NjAzMjk0MzcyNTU4NTkzNzUiKTsKKyAgCisgIGQ9ZC8oKGRvdWJsZSkxMCk7CisgIChuZXcgVGVzdCgiY2RvMDEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGQpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwODk5OTk5OTk5OTk5OTk5OTc1MzY2OTI2NjQxMTI5MzM5MjU5MzUwNjcyMzY0MjM0OTI0MzE2NDA2MjUiKTsKKyAgCisgIGQ9ZC8oKGRvdWJsZSkxMCk7CisgIChuZXcgVGVzdCgiY2RvMDE0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGQpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDg5OTk5OTk5OTk5OTk5OTkyMTE1NjgxODAxNjg1NDExNzU1ODk3ODAzMjMyMDczNzgzODc0NTExNzE4NzUiKTsKKyAgCisgIGQ9ZC8oKGRvdWJsZSkxMCk7CisgIChuZXcgVGVzdCgiY2RvMDE1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGQpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDA4OTk5OTk5OTk5OTk5OTk4NTMzOTQxODIyMzY1MTAwOTA0MzM1MTIyMzIyNjYzNjY0ODE3ODEwMDU4NTkzNzUiKTsKKyAgCisgIGQ9ZC8oKGRvdWJsZSkxMCk7CisgIChuZXcgVGVzdCgiY2RvMDE2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGQpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwODk5OTk5OTk5OTk5OTk5ODUzMzk0MTgyMjM2NTEwMDkwNDMzNTEyMjMyMjY2MzY2NDgxNzgxMDA1ODU5Mzc1Iik7CisgIAorICBkPWQvKChkb3VibGUpMTApOworICAobmV3IFRlc3QoImNkbzAxNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChkKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMDA4OTk5OTk5OTk5OTk5OTk4NTMzOTQxODIyMzY1MTAwOTA0MzM1MTIyMzIyNjYzNjY0ODE3ODEwMDU4NTkzNzUiKTsKKyAgCisgIGQ9ZC8oKGRvdWJsZSkxMCk7CisgIChuZXcgVGVzdCgiY2RvMDE4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGQpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwMDA4OTk5OTk5OTk5OTk5OTk3ODcyMTk3MzMyMzIyNjc4NzY0NDM3OTk1MzY5MDA3Njk0NTM0OTU3NDA4OTA1MDI5Mjk2ODc1Iik7CisgIAorICAKKyAgdHJ5e2NoZWNrcGluOmRveworICAgbmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGphdmEubGFuZy5Eb3VibGUuUE9TSVRJVkVfSU5GSU5JVFkpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uICQxMyl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrcGluKi8KKyAgKG5ldyBUZXN0KCJjZG8xMDEiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrbmluOmRveworICAgbmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGphdmEubGFuZy5Eb3VibGUuTkVHQVRJVkVfSU5GSU5JVFkpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uICQxNCl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbmluKi8KKyAgKG5ldyBUZXN0KCJjZG8xMDIiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrbmFuOmRveworICAgbmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGphdmEubGFuZy5Eb3VibGUuTmFOKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiAkMTUpeworICAgZmxhZz10cnVlOworICB9LypjaGVja25hbiovCisgIChuZXcgVGVzdCgiY2RvMTAzIikpLm9rPWZsYWc7CisgIAorICAvLyBpbnQKKyAgKG5ldyBUZXN0KCJjaW4wMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoaW1pbikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIxNDc0ODM2NDgiKTsKKyAgKG5ldyBUZXN0KCJjaW4wMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoaW1heCkpLnRvU3RyaW5nKCkpLmVxdWFscygiMjE0NzQ4MzY0NyIpOworICAobmV3IFRlc3QoImNpbjAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChpbmVnKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoImNpbjAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChpemVyKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiY2luMDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGlwb3MpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJjaW4wMDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMTApKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgVGVzdCgiY2luMDA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDkpKS50b1N0cmluZygpKS5lcXVhbHMoIjkiKTsKKyAgKG5ldyBUZXN0KCJjaW4wMDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoNSkpLnRvU3RyaW5nKCkpLmVxdWFscygiNSIpOworICAobmV3IFRlc3QoImNpbjAwOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgyKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgVGVzdCgiY2luMDEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKC0yKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMiIpOworICAobmV3IFRlc3QoImNpbjAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgtNSkpLnRvU3RyaW5nKCkpLmVxdWFscygiLTUiKTsKKyAgKG5ldyBUZXN0KCJjaW4wMTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoLTkpKS50b1N0cmluZygpKS5lcXVhbHMoIi05Iik7CisgIChuZXcgVGVzdCgiY2luMDEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKC0xMCkpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEwIik7CisgIChuZXcgVGVzdCgiY2luMDE0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKC0xMSkpLnRvU3RyaW5nKCkpLmVxdWFscygiLTExIik7CisgIChuZXcgVGVzdCgiY2luMDE1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKC05OSkpLnRvU3RyaW5nKCkpLmVxdWFscygiLTk5Iik7CisgIChuZXcgVGVzdCgiY2luMDE2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKC0xMDApKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMDAiKTsKKyAgKG5ldyBUZXN0KCJjaW4wMTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoLTk5OSkpLnRvU3RyaW5nKCkpLmVxdWFscygiLTk5OSIpOworICAobmV3IFRlc3QoImNpbjAxOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgtMTAwMCkpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEwMDAiKTsKKyAgCisgIChuZXcgVGVzdCgiY2luMDE5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDExKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMSIpOworICAobmV3IFRlc3QoImNpbjAyMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCg5OSkpLnRvU3RyaW5nKCkpLmVxdWFscygiOTkiKTsKKyAgKG5ldyBUZXN0KCJjaW4wMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMTAwKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAiKTsKKyAgKG5ldyBUZXN0KCJjaW4wMjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoOTk5KSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5OTkiKTsKKyAgKG5ldyBUZXN0KCJjaW4wMjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMTAwMCkpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMCIpOworICAKKyAgLy8gbG9uZworICAobmV3IFRlc3QoImNsbzAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChsbWluKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItOTIyMzM3MjAzNjg1NDc3NTgwOCIpOworICAobmV3IFRlc3QoImNsbzAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChsbWF4KSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5MjIzMzcyMDM2ODU0Nzc1ODA3Iik7CisgIChuZXcgVGVzdCgiY2xvMDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGxuZWcpKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgVGVzdCgiY2xvMDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGx6ZXIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJjbG8wMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwobHBvcykpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAKKyAgLy8gU3RyaW5nIFttYW55IG1vcmUgZXhhbXBsZXMgYXJlIGVsc2V3aGVyZV0KKyAgLy8gc3RyaW5ncyB3aXRob3V0IEUgY2Fubm90IGdlbmVyYXRlIEUgaW4gcmVzdWx0CisgIChuZXcgVGVzdCgiY3N0MDAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEyIik7CisgIChuZXcgVGVzdCgiY3N0MDAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNzYiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItNzYiKTsKKyAgKG5ldyBUZXN0KCJjc3QwMDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjc2IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIuNzYiKTsKKyAgKG5ldyBUZXN0KCJjc3QwMDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxMi43NiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEyLjc2Iik7CisgIChuZXcgVGVzdCgiY3N0MDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMTIuNzYiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMi43NiIpOworICAobmV3IFRlc3QoImNzdDAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzAuMDAzIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDMiKTsKKyAgKG5ldyBUZXN0KCJjc3QwMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjE3LiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjE3Iik7CisgIChuZXcgVGVzdCgiY3N0MDA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuNSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNSIpOworICAobmV3IFRlc3QoImNzdDAwOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDQ0IikpLnRvU3RyaW5nKCkpLmVxdWFscygiNDQiKTsKKyAgKG5ldyBUZXN0KCJjc3QwMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwNDQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI0NCIpOworICAobmV3IFRlc3QoImNzdDAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDA1IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDA1Iik7CisgIChuZXcgVGVzdCgiY3N0MDEyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMC4wMDAwNSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDUiKTsKKyAgKG5ldyBUZXN0KCJjc3QwMTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwMDA1IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMDUiKTsKKyAgKG5ldyBUZXN0KCJjc3QwMTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwMDAwNSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwNSIpOyAvLyBcTlIKKyAgKG5ldyBUZXN0KCJjc3QwMTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwMDAwMDUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMDA1Iik7IC8vIFxOUgorICAobmV3IFRlc3QoImNzdDAxNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2NzguODc2NTQzMjEwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNDU2NzguODc2NTQzMjEwIik7CisgIChuZXcgVGVzdCgiY3N0MDE3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyMzQ1Njc4Ljg3NjU0MzIxMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIzNDU2NzguODc2NTQzMjEwIik7CisgIChuZXcgVGVzdCgiY3N0MDE4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzNDU2NzguODc2NTQzMjEwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMzQ1Njc4Ljg3NjU0MzIxMCIpOworICAobmV3IFRlc3QoImNzdDAxOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDM0NTY3OC44NzY1NDMyMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjM0NTY3OC44NzY1NDMyMSIpOworICAobmV3IFRlc3QoImNzdDAyMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMzQ1Njc4Ljg3NjU0MzIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzNDU2NzguODc2NTQzMiIpOworICAobmV3IFRlc3QoImNzdDAyMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzM0NTY3OC44NzY1NDMyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMzQ1Njc4Ljg3NjU0MzIiKTsKKyAgKG5ldyBUZXN0KCJjc3QwMjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIiswMzQ1Njc4Ljg3NjU0MzIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzNDU2NzguODc2NTQzMiIpOworICAobmV3IFRlc3QoImNzdDAyMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzAwMzQ1Njc4Ljg3NjU0MzIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzNDU2NzguODc2NTQzMiIpOworICAobmV3IFRlc3QoImNzdDAyNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTM0NTY3OC44NzY1NDMyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTM0NTY3OC44NzY1NDMyIik7CisgIChuZXcgVGVzdCgiY3N0MDI1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMDM0NTY3OC44NzY1NDMyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTM0NTY3OC44NzY1NDMyIik7CisgIChuZXcgVGVzdCgiY3N0MDI2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMDAzNDU2NzguODc2NTQzMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0zNDU2NzguODc2NTQzMiIpOworICAKKyAgLy8gZXhvdGljcyAtLQorICAobmV3IFRlc3QoImNzdDAzNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiXHUwZTU3Llx1MGU1MCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjcuMCIpOworICAobmV3IFRlc3QoImNzdDAzNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiXHUwYjY2Llx1MGI2NyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IFRlc3QoImNzdDAzNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiXHUwYjY2XHUwYjY2IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImNzdDAzOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiXHUwYjZhXHUwYjY2IikpLnRvU3RyaW5nKCkpLmVxdWFscygiNDAiKTsKKyAgCisgIC8vIHN0cmluZ3Mgd2l0aCBFCisgIChuZXcgVGVzdCgiY3N0MDQwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRSs5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrOSIpOworICAobmV3IFRlc3QoImNzdDA0MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMWUrMDkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5Iik7CisgIChuZXcgVGVzdCgiY3N0MDQyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRSs5MCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjFFKzkwIik7CisgIChuZXcgVGVzdCgiY3N0MDQzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMUUrMDA5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrOSIpOworICAobmV3IFRlc3QoImNzdDA0NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMEUrOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJjc3QwNDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFFKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5Iik7CisgIChuZXcgVGVzdCgiY3N0MDQ2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRSswOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjFFKzkiKTsKKyAgKG5ldyBUZXN0KCJjc3QwNDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFlKzkwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrOTAiKTsKKyAgKG5ldyBUZXN0KCJjc3QwNDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFFKzAwOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjFFKzkiKTsKKyAgKG5ldyBUZXN0KCJjc3QwNDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjBFKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiY3N0MDUwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRTkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5Iik7CisgIChuZXcgVGVzdCgiY3N0MDUxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxZTA5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrOSIpOworICAobmV3IFRlc3QoImNzdDA1MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMUU5MCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjFFKzkwIik7CisgIChuZXcgVGVzdCgiY3N0MDUzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRTAwOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjFFKzkiKTsKKyAgKG5ldyBUZXN0KCJjc3QwNTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjBFOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJjc3QwNTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwZSswIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImNzdDA1NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDBFLTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiY3N0MDU3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI0RSs5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiNEUrOSIpOworICAobmV3IFRlc3QoImNzdDA1OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNDRFKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI0LjRFKzEwIik7CisgIChuZXcgVGVzdCgiY3N0MDU5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjczZS03IikpLnRvU3RyaW5nKCkpLmVxdWFscygiNy4zRS04Iik7CisgIChuZXcgVGVzdCgiY3N0MDYwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMEUrOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJjc3QwNjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwRS05IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImNzdDA2MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTBFKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjBFKzEwIik7CisgIChuZXcgVGVzdCgiY3N0MDYzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMEUrMDkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjBFKzEwIik7CisgIChuZXcgVGVzdCgiY3N0MDY0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMGUrOTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjBFKzkxIik7CisgIChuZXcgVGVzdCgiY3N0MDY1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMEUrMDA5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wRSsxMCIpOworICAobmV3IFRlc3QoImNzdDA2NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwZSs5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMEUrMTEiKTsKKyAgKG5ldyBUZXN0KCJjc3QwNjciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMGUrMDkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwRSsxMSIpOworICAobmV3IFRlc3QoImNzdDA2OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwRSs5MCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDBFKzkyIik7CisgIChuZXcgVGVzdCgiY3N0MDY5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDBlKzAwOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDBFKzExIik7CisgIAorICAobmV3IFRlc3QoImNzdDA3MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yNjUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NSIpOworICAobmV3IFRlc3QoImNzdDA3MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yNjVFLTIwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTIwIik7CisgIChuZXcgVGVzdCgiY3N0MDcyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI2NUUtOCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS04Iik7CisgIChuZXcgVGVzdCgiY3N0MDczIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI2NUUtNCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS00Iik7CisgIChuZXcgVGVzdCgiY3N0MDc0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI2NUUtMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS0zIik7CisgIChuZXcgVGVzdCgiY3N0MDc1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI2NUUtMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS0yIik7CisgIChuZXcgVGVzdCgiY3N0MDc2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI2NUUtMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS0xIik7CisgIChuZXcgVGVzdCgiY3N0MDc3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI2NUUtMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1Iik7CisgIChuZXcgVGVzdCgiY3N0MDc4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI2NUUrMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSsxIik7CisgIChuZXcgVGVzdCgiY3N0MDc5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI2NUUrMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSsyIik7CisgIChuZXcgVGVzdCgiY3N0MDgwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI2NUUrMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSszIik7CisgIChuZXcgVGVzdCgiY3N0MDgxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI2NUUrNCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSs0Iik7CisgIChuZXcgVGVzdCgiY3N0MDgyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI2NUUrOCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSs4Iik7CisgIChuZXcgVGVzdCgiY3N0MDgzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI2NUUrMjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMjAiKTsKKyAgCisgIChuZXcgVGVzdCgiY3N0MDkwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMi42NSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEyLjY1Iik7CisgIChuZXcgVGVzdCgiY3N0MDkxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMi42NUUtMjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtMTkiKTsKKyAgKG5ldyBUZXN0KCJjc3QwOTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RS04IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTciKTsKKyAgKG5ldyBUZXN0KCJjc3QwOTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RS00IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTMiKTsKKyAgKG5ldyBUZXN0KCJjc3QwOTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RS0zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTIiKTsKKyAgKG5ldyBUZXN0KCJjc3QwOTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RS0yIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTEiKTsKKyAgKG5ldyBUZXN0KCJjc3QwOTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RS0xIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjUiKTsKKyAgKG5ldyBUZXN0KCJjc3QwOTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RS0wIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzEiKTsKKyAgKG5ldyBUZXN0KCJjc3QwOTgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RSsxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzIiKTsKKyAgKG5ldyBUZXN0KCJjc3QwOTkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RSsyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzMiKTsKKyAgKG5ldyBUZXN0KCJjc3QxMDAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RSszIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzQiKTsKKyAgKG5ldyBUZXN0KCJjc3QxMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RSs0IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzUiKTsKKyAgKG5ldyBUZXN0KCJjc3QxMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RSs4IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzkiKTsKKyAgKG5ldyBUZXN0KCJjc3QxMDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyLjY1RSsyMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSsyMSIpOworICAKKyAgKG5ldyBUZXN0KCJjc3QxMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNi41IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTI2LjUiKTsKKyAgKG5ldyBUZXN0KCJjc3QxMTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNi41RS0yMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS0xOCIpOworICAobmV3IFRlc3QoImNzdDExMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI2LjVFLTgiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtNiIpOworICAobmV3IFRlc3QoImNzdDExMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI2LjVFLTQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtMiIpOworICAobmV3IFRlc3QoImNzdDExNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI2LjVFLTMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtMSIpOworICAobmV3IFRlc3QoImNzdDExNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI2LjVFLTIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NSIpOworICAobmV3IFRlc3QoImNzdDExNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI2LjVFLTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMSIpOworICAobmV3IFRlc3QoImNzdDExNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI2LjVFLTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMiIpOworICAobmV3IFRlc3QoImNzdDExOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI2LjVFKzEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMyIpOworICAobmV3IFRlc3QoImNzdDExOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI2LjVFKzIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrNCIpOworICAobmV3IFRlc3QoImNzdDEyMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI2LjVFKzMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrNSIpOworICAobmV3IFRlc3QoImNzdDEyMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI2LjVFKzQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrNiIpOworICAobmV3IFRlc3QoImNzdDEyMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI2LjVFKzgiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMTAiKTsKKyAgKG5ldyBUZXN0KCJjc3QxMjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNi41RSsyMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSsyMiIpOworICAKKyAgKG5ldyBUZXN0KCJjc3QxMzAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMjY1Iik7CisgIChuZXcgVGVzdCgiY3N0MTMxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjY1RS0yMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS0xNyIpOworICAobmV3IFRlc3QoImNzdDEzMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI2NUUtOCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS01Iik7CisgIChuZXcgVGVzdCgiY3N0MTMzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjY1RS00IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTEiKTsKKyAgKG5ldyBUZXN0KCJjc3QxMzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFLTMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NSIpOworICAobmV3IFRlc3QoImNzdDEzNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI2NUUtMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSsxIik7CisgIChuZXcgVGVzdCgiY3N0MTM2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjY1RS0xIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzIiKTsKKyAgKG5ldyBUZXN0KCJjc3QxMzciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFLTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMyIpOworICAobmV3IFRlc3QoImNzdDEzOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI2NUUrMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSs0Iik7CisgIChuZXcgVGVzdCgiY3N0MTM5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjY1RSsyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzUiKTsKKyAgKG5ldyBUZXN0KCJjc3QxNDAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyNjVFKzMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrNiIpOworICAobmV3IFRlc3QoImNzdDE0MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI2NUUrNCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSs3Iik7CisgIChuZXcgVGVzdCgiY3N0MTQyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjY1RSs4IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzExIik7CisgIChuZXcgVGVzdCgiY3N0MTQzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjY1RSsyMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSsyMyIpOworICAKKyAgKG5ldyBUZXN0KCJjc3QxNTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTI2NSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTI2NSIpOworICAobmV3IFRlc3QoImNzdDE1MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4xMjY1RS0yMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS0yMSIpOworICAobmV3IFRlc3QoImNzdDE1MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4xMjY1RS04IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTkiKTsKKyAgKG5ldyBUZXN0KCJjc3QxNTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTI2NUUtNCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS01Iik7CisgIChuZXcgVGVzdCgiY3N0MTU0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEyNjVFLTMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtNCIpOworICAobmV3IFRlc3QoImNzdDE1NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4xMjY1RS0yIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFLTMiKTsKKyAgKG5ldyBUZXN0KCJjc3QxNTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTI2NUUtMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RS0yIik7CisgIChuZXcgVGVzdCgiY3N0MTU3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEyNjVFLTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUtMSIpOworICAobmV3IFRlc3QoImNzdDE1OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4xMjY1RSsxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjUiKTsKKyAgKG5ldyBUZXN0KCJjc3QxNTkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTI2NUUrMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSsxIik7CisgIChuZXcgVGVzdCgiY3N0MTYwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEyNjVFKzMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjI2NUUrMiIpOworICAobmV3IFRlc3QoImNzdDE2MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4xMjY1RSs0IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzMiKTsKKyAgKG5ldyBUZXN0KCJjc3QxNjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTI2NUUrOCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjY1RSs3Iik7CisgIChuZXcgVGVzdCgiY3N0MTYzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEyNjVFKzIwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yNjVFKzE5Iik7CisgIAorICAobmV3IFRlc3QoImNzdDE3MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wOWU5OTk5OTk5OTkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5RSs5OTk5OTk5OTciKTsKKyAgKG5ldyBUZXN0KCJjc3QxNzEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuOWU5OTk5OTk5OTkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5RSs5OTk5OTk5OTgiKTsKKyAgKG5ldyBUZXN0KCJjc3QxNzIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjllOTk5OTk5OTk5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiOUUrOTk5OTk5OTk5Iik7CisgIChuZXcgVGVzdCgiY3N0MTczIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5LjllOTk5OTk5OTk5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiOS45RSs5OTk5OTk5OTkiKTsKKyAgKG5ldyBUZXN0KCJjc3QxNzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuOTllOTk5OTk5OTk5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiOS45OUUrOTk5OTk5OTk5Iik7CisgIChuZXcgVGVzdCgiY3N0MTc1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljk5ZS05OTk5OTk5OTkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5Ljk5RS05OTk5OTk5OTkiKTsKKyAgKG5ldyBUZXN0KCJjc3QxNzYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuOWUtOTk5OTk5OTk5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiOS45RS05OTk5OTk5OTkiKTsKKyAgKG5ldyBUZXN0KCJjc3QxNzciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjllLTk5OTk5OTk5OSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjlFLTk5OTk5OTk5OSIpOworICAobmV3IFRlc3QoImNzdDE3OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTllLTk5OTk5OTk5OSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkuOUUtOTk5OTk5OTk4Iik7CisgIChuZXcgVGVzdCgiY3N0MTgwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTllLTk5OTk5OTk5OSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkuOTlFLTk5OTk5OTk5NyIpOworICAKKyAgLy8gYmFkZGllcyAtLQorICBiYWRzdHJpbmdzPW5ldyBqYXZhLmxhbmcuU3RyaW5nW117IjEuLjIiLCIuIiwiLi4iLCIrKzEiLCItLTEiLCItKzEiLCIrLTEiLCIxMmUiLCIxMmUrKyIsIjEyZjQiLCIgKzEiLCIrIDEiLCIxMiAiLCIgKyAxIiwiIC0gMSAiLCJ4IiwiLTEtIiwiMTItIiwiMysiLCIiLCIxZS0iLCI3ZTEwMDAwMDAwMDAiLCIiLCJlMTAwIiwiXHUwZTVhIiwiXHUwYjY1IiwiOTllOTk5OTk5OTk5IiwiOTk5ZTk5OTk5OTk5OSIsIjAuOWUtOTk5OTk5OTk5IiwiMC4wOWUtOTk5OTk5OTk5IiwiMC4xZTEwMDAwMDAwMDAiLCIxMGUtMTAwMDAwMDAwMCIsIjAuOWU5OTk5OTk5OTk5IiwiOTllLTk5OTk5OTk5OTkiLCIxMTFlOTk5OTk5OTk5OSIsIjExMTFlLTk5OTk5OTk5OTkiKyIgIisiMTExZSoxMjMiLCIxMTFlMTIzLSIsIjExMWUrMTIrIiwiMTExZTEtMy0iLCIxMTFlMSoyMyIsIjExMWUxZSszIiwiMWUxLjAiLCIxZTEyM2UiLCJ0ZW4iLCJPTkUiLCIxZS4xIiwiMWUxLiIsIjFlZSIsImUrMSJ9OyAvLyAyMDAtMjAzCisgIC8vIDIwNC0yMDcKKyAgLy8gMjA4LTIxMQorICAvLyAyMTEtMjE0CisgIC8vIDIxNS0yMTkKKyAgLy8gMjIwLTIyMgorICAvLyAyMjMtMjI0CisgIC8vIDIyNS0yMjYKKyAgLy8gMjI3LTIyOAorICAvLyAyMjktMjMwCisgIC8vIDIzMS0yMzIKKyAgLy8gMjMzLTIzNAorICAvLyAyMzUtMjM3CisgIC8vIDIzOC0yNDAKKyAgLy8gMjQxLTI0NAorICAvLyAyNDUtMjQ4CisgIAorICAvLyB3YXRjaCBvdXQgZm9yIGNvbW1hcyBvbiBjb250aW51YXRpb24gbGluZXMKKyAgCisgIHtpbnQgJDE2PWJhZHN0cmluZ3MubGVuZ3RoO2k9MDtpOmZvcig7JDE2PjA7JDE2LS0saSsrKXsKKyAgIHRyeXsKKyAgICBuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYmFkc3RyaW5nc1tpXSk7CisgICAgc2F5KCI+Pj4gY3N0IisoMjAwK2kpKyI6IisiICIrYmFkc3RyaW5nc1tpXSsiICIrKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChiYWRzdHJpbmdzW2ldKSkudG9TdHJpbmcoKSk7CisgICAgZmxhZz1mYWxzZTsKKyAgIH0KKyAgIGNhdGNoIChqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uICQxNyl7CisgICAgZmxhZz10cnVlOworICAgfQorICAgKG5ldyBUZXN0KCJjc3QiKygyMDAraSkpKS5vaz1mbGFnOworICAgfQorICB9LyppKi8KKyAgCisgIHRyeXtjaGVja251bGw6ZG97CisgICBuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoKGphdmEubGFuZy5TdHJpbmcpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkMTgpeworICAgZmxhZz10cnVlOworICB9LypjaGVja251bGwqLworICAobmV3IFRlc3QoImNzdDMwMSIpKS5vaz1mbGFnOworICAKKyAgc3VtbWFyeSgiQ29uc3RydWN0b3JzIik7CisgIHJldHVybjsKKyAgfQorCisgLyoqIE11dGF0aW9uIHRlc3RzIChjaGVja3MgdGhhdCBjb250ZW50cyBvZiBjb25zdGFudCBvYmplY3RzIGFyZSB1bmNoYW5nZWQpLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdtdXRhdGlvbigpeworICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgIC8qIEZpbmFsIHRlc3RzIC0tIGNoZWNrIGNvbnN0YW50cyBoYXZlbid0IG11dGF0ZWQgICAgICAgICAgICAgICAgICAgKi8KKyAgLyogICAgICAgICAgICAgLS0gYWxzbyB0aGF0IE1DIG9iamVjdHMgaGF2ZW4ndCBtdXRhdGVkICAgICAgICAgICAgICAqLworICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgIChuZXcgVGVzdCgiY3VjMDAxIikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5aRVJPLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImN1YzAwMiIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoImN1YzAwMyIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuVEVOLnRvU3RyaW5nKCkpLmVxdWFscygiMTAiKTsKKyAgCisgIChuZXcgVGVzdCgiY3VjMDEwIikpLm9rPWNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLlJPVU5EX0NFSUxJTkc9PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9DRUlMSU5HOworICAobmV3IFRlc3QoImN1YzAxMSIpKS5vaz1jb20uaWJtLm1hdGguQmlnRGVjaW1hbC5ST1VORF9ET1dOPT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRE9XTjsKKyAgKG5ldyBUZXN0KCJjdWMwMTIiKSkub2s9Y29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuUk9VTkRfRkxPT1I9PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUjsKKyAgKG5ldyBUZXN0KCJjdWMwMTMiKSkub2s9Y29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuUk9VTkRfSEFMRl9ET1dOPT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOOworICAobmV3IFRlc3QoImN1YzAxNCIpKS5vaz1jb20uaWJtLm1hdGguQmlnRGVjaW1hbC5ST1VORF9IQUxGX0VWRU49PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU47CisgIChuZXcgVGVzdCgiY3VjMDE1IikpLm9rPWNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLlJPVU5EX0hBTEZfVVA9PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQOworICAobmV3IFRlc3QoImN1YzAxNiIpKS5vaz1jb20uaWJtLm1hdGguQmlnRGVjaW1hbC5ST1VORF9VTk5FQ0VTU0FSWT09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZOworICAobmV3IFRlc3QoImN1YzAxNyIpKS5vaz1jb20uaWJtLm1hdGguQmlnRGVjaW1hbC5ST1VORF9VUD09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VQOworICAKKyAgKG5ldyBUZXN0KCJjdWMwMjAiKSkub2s9KGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ERUZBVUxULmdldERpZ2l0cygpKT09OTsKKyAgKG5ldyBUZXN0KCJjdWMwMjEiKSkub2s9KGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ERUZBVUxULmdldEZvcm0oKSk9PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDOworICAobmV3IFRlc3QoImN1YzAyMiIpKS5vaz0oY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LkRFRkFVTFQuZ2V0TG9zdERpZ2l0cygpPzE6MCk9PTA7CisgIChuZXcgVGVzdCgiY3VjMDIzIikpLm9rPShjb20uaWJtLm1hdGguTWF0aENvbnRleHQuREVGQVVMVC5nZXRSb3VuZGluZ01vZGUoKSk9PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQOworICAKKyAgLy8gbWM5ICA9TWF0aENvbnRleHQoOSkKKyAgLy8gbWNsZCA9TWF0aENvbnRleHQoOSwgU0NJRU5USUZJQywgMSkKKyAgLy8gbWNmZCA9TWF0aENvbnRleHQoMCwgUExBSU4pCisgIChuZXcgVGVzdCgiY3VjMDMwIikpLm9rPShtYzkuZ2V0RGlnaXRzKCkpPT05OworICAobmV3IFRlc3QoImN1YzAzMSIpKS5vaz0obWM5LmdldEZvcm0oKSk9PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDOworICAobmV3IFRlc3QoImN1YzAzMiIpKS5vaz0obWM5LmdldExvc3REaWdpdHMoKT8xOjApPT0wOworICAobmV3IFRlc3QoImN1YzAzMyIpKS5vaz0obWM5LmdldFJvdW5kaW5nTW9kZSgpKT09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVA7CisgIChuZXcgVGVzdCgiY3VjMDM0IikpLm9rPShtY2xkLmdldERpZ2l0cygpKT09OTsKKyAgKG5ldyBUZXN0KCJjdWMwMzUiKSkub2s9KG1jbGQuZ2V0Rm9ybSgpKT09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlNDSUVOVElGSUM7CisgIChuZXcgVGVzdCgiY3VjMDM2IikpLm9rPShtY2xkLmdldExvc3REaWdpdHMoKT8xOjApPT0xOworICAobmV3IFRlc3QoImN1YzAzNyIpKS5vaz0obWNsZC5nZXRSb3VuZGluZ01vZGUoKSk9PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQOworICAobmV3IFRlc3QoImN1YzAzOCIpKS5vaz0obWNmZC5nZXREaWdpdHMoKSk9PTA7CisgIChuZXcgVGVzdCgiY3VjMDM5IikpLm9rPShtY2ZkLmdldEZvcm0oKSk9PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTjsKKyAgKG5ldyBUZXN0KCJjdWMwNDAiKSkub2s9KG1jZmQuZ2V0TG9zdERpZ2l0cygpPzE6MCk9PTA7CisgIChuZXcgVGVzdCgiY3VjMDQxIikpLm9rPShtY2ZkLmdldFJvdW5kaW5nTW9kZSgpKT09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVA7CisgIAorICBzdW1tYXJ5KCJObyBtdXRhdGlvbiIpOworICByZXR1cm47fQorCisgCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAvKiBPcGVyYXRvciB0ZXN0IG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLy8gVGhlIHVzZSBvZiBjb250ZXh0IGluIHRoZXNlIHRlc3RzIGFyZSBwcmltYXJpbHkgdG8gc2hvdyB0aGF0IHRoZXkKKyAvLyBhcmUgY29ycmVjdGx5IHBhc3NlZCB0byB0aGUgbWV0aG9kcywgZXhjZXB0IHRoYXQgd2UgY2hlY2sgdGhhdAorIC8vIGVhY2ggbWV0aG9kIGNoZWNrcyBmb3IgbG9zdERpZ2l0cy4KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjYWJzfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ2FicygpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uIGFlPW51bGw7CisgIAorICAvLyBtb3N0IG9mIHRoZSBmdW5jdGlvbiBvZiB0aGlzIGlzIHRlc3RlZCBieSBhZGQKKyAgKG5ldyBUZXN0KCJhYnMwMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuYWJzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgVGVzdCgiYWJzMDAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMiIpKS5hYnMoKS50b1N0cmluZygpKS5lcXVhbHMoIjIiKTsKKyAgKG5ldyBUZXN0KCJhYnMwMDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIiswLjAwMCIpKS5hYnMoKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwIik7CisgIChuZXcgVGVzdCgiYWJzMDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMC4wMDAiKSkuYWJzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMCIpOworICAobmV3IFRlc3QoImFiczAwNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMDAwIikpLmFicygpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAiKTsKKyAgKG5ldyBUZXN0KCJhYnMwMDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIiswLjAwMCIpKS5hYnMobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImFiczAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDAuMDAwIikpLmFicyhtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiYWJzMDA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4wMDAiKSkuYWJzKG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJhYnMwMDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yMDAwMDAwIikpLmFicygpLnRvU3RyaW5nKCkpLmVxdWFscygiMjAwMDAwMCIpOworICAobmV3IFRlc3QoImFiczAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTIwMDAwMDAiKSkuYWJzKG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJhYnMwMTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yMDAwMDAwIikpLmFicyhtYzYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi4wMDAwMEUrNiIpOworICAobmV3IFRlc3QoImFiczAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMjAwMDAwMCIpKS5hYnMobWM2KS50b1N0cmluZygpKS5lcXVhbHMoIjIuMDAwMDBFKzYiKTsKKyAgKG5ldyBUZXN0KCJhYnMwMTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMiIpKS5hYnMoKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMiIpOworICAobmV3IFRlc3QoImFiczAxNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMiIpKS5hYnMoKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMiIpOworICAobmV3IFRlc3QoImFiczAxNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMSIpKS5hYnMoKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDEiKTsKKyAgKG5ldyBUZXN0KCJhYnMwMTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjAxIikpLmFicygpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMSIpOworICB0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICB0ZW5sb25nLmFicyhtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDE5KXthZT0kMTk7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBUZXN0KCJhYnMwMjAiKSkub2s9ZmxhZzsKKyAgLy8gY2hlY2sgbG9zdGRpZ2l0cyBub3QgcmFpc2VkIGlmIGRpZ2l0cz0wIFttb25hZGljIG1ldGhvZF0KKyAgdHJ5e2NoZWNrZGlnaXRzOmRveworICAgdGVubG9uZy5hYnMobWNsZDApOworICAgZmxhZz10cnVlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQyMCl7YWU9JDIwOworICAgZmxhZz1mYWxzZTsKKyAgfS8qY2hlY2tkaWdpdHMqLworICAobmV3IFRlc3QoImFiczAyMSIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tudWxsOmRveworICAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuVEVOLmFicygoY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDIxKXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfS8qY2hlY2tudWxsKi8KKyAgKG5ldyBUZXN0KCJhYnMwMjIiKSkub2s9ZmxhZzsKKyAgCisgIHN1bW1hcnkoImFicyIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjYWRkfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ2FkZCgpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGFsaHM7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGFyaHM7CisgIGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uIGFlPW51bGw7CisgIAorICAvLyBbZmlyc3QgZ3JvdXAgYXJlICdxdWljayBjb25maWRlbmNlIGNoZWNrJ10KKyAgKG5ldyBUZXN0KCJhZGQwMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMyksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiNSIpOworICAobmV3IFRlc3QoImFkZDAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNS43NSIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzLjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCI5LjA1Iik7CisgIChuZXcgVGVzdCgiYWRkMDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAobmV3IFRlc3QoImFkZDAwNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTUiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCItOCIpOworICAobmV3IFRlc3QoImFkZDAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTciKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi41IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTQuNSIpOworICAobmV3IFRlc3QoImFkZDAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC43IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMCIpOworICAobmV3IFRlc3QoImFkZDAwOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yNSIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI1IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi41MCIpOworICAobmV3IFRlc3QoImFkZDAwOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yMzQ1Njc4OSIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwMDAwMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi4yMzQ1Njc4OSIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjM0NTY3ODkiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wMDAwMDAxMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIuMjM0NTY4MDAiKTsKKyAgCisgIAorICAobmV3IFRlc3QoImFkZDAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC40NDQ0NDQ0NDQ0IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTU1NTU1NTU1NSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDAwMDAiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDEyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41NTU1NTU1NTU1IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMDAwMCIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwMTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNDQ0NDQ0NDQ0NCIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjU1NTU1NTU1NTAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk5OTk5OTk5OSIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwMTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNDQ0NDQ0NDQ0NDk5OSIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40NDQ0NDQ0NDQiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDE1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDUwMDAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDQ0NDQ0NDQ1Iik7CisgIAorICAKKyAgKG5ldyBUZXN0KCJhZGQwMTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMDAwMEUrMTMiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDE3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAwMDAwRSsxMyIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwMTgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAwMDAwRSsxMyIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwMTkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMDAwMUUrMTMiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDIwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAwMDAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAwMDA3RSsxMyIpOworICAKKyAgCisgIC8vIFtOb3cgdGhlIHNhbWUgZ3JvdXAgd2l0aCBmaXhlZCBhcml0aG1ldGljXQorICAobmV3IFRlc3QoImFkZDAzMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgyKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgzKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI1Iik7CisgIChuZXcgVGVzdCgiYWRkMDMxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1Ljc1IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMuMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjkuMDUiKTsKKyAgKG5ldyBUZXN0KCJhZGQwMzIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgVGVzdCgiYWRkMDMzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNSIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIi04Iik7CisgIChuZXcgVGVzdCgiYWRkMDM0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNyIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItNC41Iik7CisgIChuZXcgVGVzdCgiYWRkMDM1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjciKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wIik7CisgIChuZXcgVGVzdCgiYWRkMDM2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI1IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjUwIik7CisgIChuZXcgVGVzdCgiYWRkMDM3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjIzNDU2Nzg5IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjIzNDU2Nzg5Iik7CisgIAorICAobmV3IFRlc3QoImFkZDAzOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yMzQ1Njc4OSIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwMDAwMDExIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMi4yMzQ1NjgwMCIpOworICAKKyAgCisgIChuZXcgVGVzdCgiYWRkMDM5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDQiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41NTU1NTU1NTU1IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45OTk5OTk5OTk5Iik7CisgIAorICAobmV3IFRlc3QoImFkZDA0MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC40NDQ0NDQ0NDQwIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTU1NTU1NTU1NSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTk5OTk5OTk5NSIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwNDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNDQ0NDQ0NDQ0NCIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjU1NTU1NTU1NTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk5OTk5OTk5OTQiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDQyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDQ5OTkiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDQ0NDQ0NDQ0NDk5OSIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwNDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNDQ0NDQ0NDQ0NTAwMCIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40NDQ0NDQ0NDQ1MDAwIik7CisgIAorICAKKyAgKG5ldyBUZXN0KCJhZGQwNDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwMDAwMDAwNzAiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDQ1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAwMDAwMDcwMCIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwNDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAwMDAwNzAwMCIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwNDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwMDAwNzAwMDAiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDQ4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAwMDAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAwMDcwMDAwMCIpOworICAKKyAgCisgIC8vIHN5bW1ldHJ5OgorICAobmV3IFRlc3QoImFkZDA0OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNzAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAwMDAwRSsxMyIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwNTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDAwMDBFKzEzIik7CisgIAorICAobmV3IFRlc3QoImFkZDA1MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNzAwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDAwMDBFKzEzIik7CisgIAorICAobmV3IFRlc3QoImFkZDA1MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNzAwMDAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAwMDAxRSsxMyIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwNTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDAwMDdFKzEzIik7CisgIAorICAKKyAgKG5ldyBUZXN0KCJhZGQwNTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwMDAwMDAwNzAiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDU1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAwMDAwMDcwMCIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwNTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAwMDAwNzAwMCIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwNTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwMDAwNzAwMDAiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDU4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAwMDcwMDAwMCIpOworICAKKyAgLy8gc29tZSByb3VuZGluZyBlZmZlY3RzCisgIChuZXcgVGVzdCgiYWRkMDU5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjk5OTgiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45OTk4Iik7CisgIAorICAobmV3IFRlc3QoImFkZDA2MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC45OTk4IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTk5OSIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwNjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuOTk5OCIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDYyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjk5OTgiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDAzIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAxIik7CisgIAorICAKKyAgLy8gTUMKKyAgKG5ldyBUZXN0KCJhZGQwNzAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIiksbWNmZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwMDAwMDA3MDAwMCIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwNzEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMDAwMUUrMTMiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDcyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAwMCIpLG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAwRSsxMyIpOworICAKKyAgCisgIC8vIHplcm8gcHJlc2VydmF0aW9uCisgIChuZXcgVGVzdCgiYWRkMDgwIikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDAxIiksbWM2KS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMSIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwODEiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDAxIiksbWM2KS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDEiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMDgyIikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDAwMDEiKSxtYzYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMCIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwODMiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDAwMDEiKSxtYzYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMCIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQwODQiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDAwMDAxIiksbWM2KS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDAiKTsKKyAgCisgIAorICAvLyBtb3JlIGZpeGVkLCBMSFMgc3dhcHMKKyAgKG5ldyBUZXN0KCJhZGQwOTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMTAiKSkuYWRkKHplcm8pLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMDAwMDA1NjI2NyIpOworICAobmV3IFRlc3QoImFkZDA5MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS02IikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjA1NjI2NyIpOworICAobmV3IFRlc3QoImFkZDA5MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS01IikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjU2MjY3Iik7CisgIChuZXcgVGVzdCgiYWRkMDkzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTQiKSkuYWRkKHplcm8pLnRvU3RyaW5nKCkpLmVxdWFscygiLTUuNjI2NyIpOworICAobmV3IFRlc3QoImFkZDA5NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS0zIikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi01Ni4yNjciKTsKKyAgKG5ldyBUZXN0KCJhZGQwOTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMiIpKS5hZGQoemVybykudG9TdHJpbmcoKSkuZXF1YWxzKCItNTYyLjY3Iik7CisgIChuZXcgVGVzdCgiYWRkMDk2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTEiKSkuYWRkKHplcm8pLnRvU3RyaW5nKCkpLmVxdWFscygiLTU2MjYuNyIpOworICAobmV3IFRlc3QoImFkZDA5NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS0wIikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi01NjI2NyIpOworICAobmV3IFRlc3QoImFkZDA5OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTVFLTEwIikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjAwMDAwMDAwMDUiKTsKKyAgKG5ldyBUZXN0KCJhZGQwOTkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01RS01IikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjAwMDA1Iik7CisgIChuZXcgVGVzdCgiYWRkMTAwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNUUtMSIpKS5hZGQoemVybykudG9TdHJpbmcoKSkuZXF1YWxzKCItMC41Iik7CisgIChuZXcgVGVzdCgiYWRkMTAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNUUtMTAiKSkuYWRkKHplcm8pLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMDAwMDAwMDAwNSIpOworICAobmV3IFRlc3QoImFkZDEwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTVFLTUiKSkuYWRkKHplcm8pLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMDAwMDUiKTsKKyAgKG5ldyBUZXN0KCJhZGQxMDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01RS0xIikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjUiKTsKKyAgKG5ldyBUZXN0KCJhZGQxMDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01RTEwIikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi01MDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoImFkZDEwNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTVFNSIpKS5hZGQoemVybykudG9TdHJpbmcoKSkuZXF1YWxzKCItNTAwMDAwIik7CisgIChuZXcgVGVzdCgiYWRkMTA2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNUUxIikpLmFkZCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi01MCIpOworICAobmV3IFRlc3QoImFkZDEwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTVFMCIpKS5hZGQoemVybykudG9TdHJpbmcoKSkuZXF1YWxzKCItNSIpOworICAKKyAgLy8gbW9yZSBmaXhlZCwgUkhTIHN3YXBzCisgIChuZXcgVGVzdCgiYWRkMTA4IikpLm9rPSh6ZXJvLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4wMDAwMDU2MjY3Iik7CisgIChuZXcgVGVzdCgiYWRkMTA5IikpLm9rPSh6ZXJvLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtNiIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjA1NjI2NyIpOworICAobmV3IFRlc3QoImFkZDExMCIpKS5vaz0oemVyby5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC41NjI2NyIpOworICAobmV3IFRlc3QoImFkZDExMSIpKS5vaz0oemVyby5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItNS42MjY3Iik7CisgIChuZXcgVGVzdCgiYWRkMTEyIikpLm9rPSh6ZXJvLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIi01Ni4yNjciKTsKKyAgKG5ldyBUZXN0KCJhZGQxMTMiKSkub2s9KHplcm8uYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS0yIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTU2Mi42NyIpOworICAobmV3IFRlc3QoImFkZDExNCIpKS5vaz0oemVyby5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItNTYyNi43Iik7CisgIChuZXcgVGVzdCgiYWRkMTE1IikpLm9rPSh6ZXJvLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIi01NjI2NyIpOworICAobmV3IFRlc3QoImFkZDExNiIpKS5vaz0oemVyby5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNUUtMTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4wMDAwMDAwMDA1Iik7CisgIChuZXcgVGVzdCgiYWRkMTE3IikpLm9rPSh6ZXJvLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01RS01IikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMDAwMDUiKTsKKyAgKG5ldyBUZXN0KCJhZGQxMTgiKSkub2s9KHplcm8uYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTVFLTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC41Iik7CisgIChuZXcgVGVzdCgiYWRkMTI5IikpLm9rPSh6ZXJvLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01RS0xMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjAwMDAwMDAwMDUiKTsKKyAgKG5ldyBUZXN0KCJhZGQxMzAiKSkub2s9KHplcm8uYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTVFLTUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4wMDAwNSIpOworICAobmV3IFRlc3QoImFkZDEzMSIpKS5vaz0oemVyby5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNUUtMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjUiKTsKKyAgKG5ldyBUZXN0KCJhZGQxMzIiKSkub2s9KHplcm8uYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTVFMTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItNTAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJhZGQxMzMiKSkub2s9KHplcm8uYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTVFNSIpKS50b1N0cmluZygpKS5lcXVhbHMoIi01MDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJhZGQxMzQiKSkub2s9KHplcm8uYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTVFMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIi01MCIpOworICAobmV3IFRlc3QoImFkZDEzNSIpKS5vaz0oemVyby5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNUUwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTUiKTsKKyAgCisgIC8vIFtzb21lIG9mIHRoZSBuZXh0IGdyb3VwIGFyZSByZWFsbHkgY29uc3RydWN0b3IgdGVzdHNdCisgIChuZXcgVGVzdCgiYWRkMTQwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMC4wIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiYWRkMTQxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiYWRkMTQyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMy4zIik7CisgIChuZXcgVGVzdCgiYWRkMTQzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzLiIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjMuMyIpOworICAobmV3IFRlc3QoImFkZDE0NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMy4wIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMy4zIik7CisgIChuZXcgVGVzdCgiYWRkMTQ1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzLjAwIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMy4zMCIpOworICAobmV3IFRlc3QoImFkZDE0NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiNiIpOworICAobmV3IFRlc3QoImFkZDE0NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjYiKTsKKyAgKG5ldyBUZXN0KCJhZGQxNDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiYWRkMTQ5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAzIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjAzIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQxNTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBUZXN0KCJhZGQxNTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDAuMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBUZXN0KCJhZGQxNTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzLjMiKTsKKyAgKG5ldyBUZXN0KCJhZGQxNTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMuIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMy4zIik7CisgIChuZXcgVGVzdCgiYWRkMTU0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzLjAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzLjMiKTsKKyAgKG5ldyBUZXN0KCJhZGQxNTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMuMDAiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzLjMwIik7CisgIChuZXcgVGVzdCgiYWRkMTU2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI2Iik7CisgIChuZXcgVGVzdCgiYWRkMTU3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIiszIikpLnRvU3RyaW5nKCkpLmVxdWFscygiNiIpOworICAobmV3IFRlc3QoImFkZDE1OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJhZGQxNTkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgiYWRkMTYwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAzIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjAzIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMCIpOworICAobmV3IFRlc3QoImFkZDE2MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiN0UrMTIiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSxtY2ZkKS50b1N0cmluZygpKS5lcXVhbHMoIjY5OTk5OTk5OTk5OTkiKTsKKyAgCisgIChuZXcgVGVzdCgiYWRkMTYyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3RSsxMiIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjExIiksbWNmZCkudG9TdHJpbmcoKSkuZXF1YWxzKCI3MDAwMDAwMDAwMDAxLjExIik7CisgIAorICAobmV3IFRlc3QoImFkZDE2MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4xMSIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3RSsxMiIpLG1jZmQpLnRvU3RyaW5nKCkpLmVxdWFscygiNzAwMDAwMDAwMDAwMS4xMSIpOworICAKKyAgCisgIC8vIGlucHV0IHByZXBhcmF0aW9uIHRlc3RzCisgIGFsaHM9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NTY3ODkwMDAwMCIpOworICBhcmhzPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5OTk5OSIpOworICAobmV3IFRlc3QoImFkZDE3MCIpKS5vaz0oYWxocy5hZGQoYXJocyxtYzMpLnRvU3RyaW5nKCkpLmVxdWFscygiMi4yM0UrMTMiKTsKKyAgKG5ldyBUZXN0KCJhZGQxNzEiKSkub2s9KGFyaHMuYWRkKGFsaHMsbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIjIuMjNFKzEzIik7CisgIChuZXcgVGVzdCgiYWRkMTcyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMkUrMyIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzNDU2IiksbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNTVFKzQiKTsKKyAgLy8gbmV4dCB3YXMgMS41NEUrNCB1bmRlciBvbGQgW3RydW5jYXRlIHRvIGRpZ2l0cysxXSBydWxlcworICAobmV3IFRlc3QoImFkZDE3MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTJFKzMiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMzQ0NiIpLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjU1RSs0Iik7CisgIChuZXcgVGVzdCgiYWRkMTc0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMkUrMyIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzNDU0IiksbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNTVFKzQiKTsKKyAgKG5ldyBUZXN0KCJhZGQxNzUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyRSszIikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjM0NDQiKSxtYzMpLnRvU3RyaW5nKCkpLmVxdWFscygiMS41NEUrNCIpOworICAKKyAgKG5ldyBUZXN0KCJhZGQxNzYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjM0NTYiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTJFKzMiKSxtYzMpLnRvU3RyaW5nKCkpLmVxdWFscygiMS41NUUrNCIpOworICAvLyBuZXh0IHdhcyAxLjU0RSs0IHVuZGVyIG9sZCBbdHJ1bmNhdGUgdG8gZGlnaXRzKzFdIHJ1bGVzCisgIChuZXcgVGVzdCgiYWRkMTc3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzNDQ2IikpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyRSszIiksbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNTVFKzQiKTsKKyAgKG5ldyBUZXN0KCJhZGQxNzgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjM0NTQiKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTJFKzMiKSxtYzMpLnRvU3RyaW5nKCkpLmVxdWFscygiMS41NUUrNCIpOworICAobmV3IFRlc3QoImFkZDE3OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMzQ0NCIpKS5hZGQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMkUrMyIpLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjU0RSs0Iik7CisgIAorICB0cnl7Y2hlY2tudWxsOmRveworICAgdGVuLmFkZCgoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkMjIpeworICAgZmxhZz10cnVlOworICB9LypjaGVja251bGwqLworICAobmV3IFRlc3QoImFkZDIwMCIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tudWxsMjpkb3sKKyAgIHRlbi5hZGQodGVuLChjb20uaWJtLm1hdGguTWF0aENvbnRleHQpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkMjMpeworICAgZmxhZz10cnVlOworICB9LypjaGVja251bGwyKi8KKyAgKG5ldyBUZXN0KCJhZGQyMDEiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIHRlbmxvbmcuYWRkKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLlpFUk8sbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQyNCl7YWU9JDI0OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9LypjaGVja2RpZ2l0cyovCisgIChuZXcgVGVzdCgiYWRkMjAyIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLlpFUk8uYWRkKHRlbmxvbmcsbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQyNSl7YWU9JDI1OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9LypjaGVja2RpZ2l0cyovCisgIChuZXcgVGVzdCgiYWRkMjAzIikpLm9rPWZsYWc7CisgIAorICAvLyBjaGVjayBsb3N0ZGlnaXRzIG5vdCByYWlzZWQgaWYgZGlnaXRzPTAgW2R5YWRpYyBtZXRob2RdCisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIHRlbmxvbmcuYWRkKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLlpFUk8sbWNsZDApOworICAgZmxhZz10cnVlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQyNil7YWU9JDI2OworICAgZmxhZz1mYWxzZTsKKyAgfS8qY2hlY2tkaWdpdHMqLworICAobmV3IFRlc3QoImFkZDIwNCIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5aRVJPLmFkZCh0ZW5sb25nLG1jbGQwKTsKKyAgIGZsYWc9dHJ1ZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMjcpe2FlPSQyNzsKKyAgIGZsYWc9ZmFsc2U7CisgIH0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBUZXN0KCJhZGQyMDUiKSkub2s9ZmxhZzsKKyAgCisgIHN1bW1hcnkoImFkZCIpOworICByZXR1cm47fQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjY29tcGFyZVRvKEJpZ0RlY2ltYWwpfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ2NvbXBhcmV0bygpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uIGFlPW51bGw7CisgIC8vIHdlIGFzc3VtZSBhZGQvc3VidHJhY3QgdGVzdCBmdW5jdGlvbjsgdGhpcyBqdXN0CisgIC8vIHRlc3RzIGV4aXN0ZW5jZSwgZXhjZXB0aW9ucywgYW5kIHBvc3NpYmxlIHJlc3VsdHMKKyAgCisgIChuZXcgVGVzdCgiY3B0MDAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLmNvbXBhcmVUbyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkpPT0xOworICAobmV3IFRlc3QoImNwdDAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5jb21wYXJlVG8obmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpKT09MDsKKyAgKG5ldyBUZXN0KCJjcHQwMDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkuY29tcGFyZVRvKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNS4wMCIpKSk9PTA7CisgIChuZXcgVGVzdCgiY3B0MDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkuY29tcGFyZVRvKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41IikpKT09MDsKKyAgKG5ldyBUZXN0KCJjcHQwMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuY29tcGFyZVRvKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKSk9PSgtMSk7CisgIChuZXcgVGVzdCgiY3B0MDA2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLmNvbXBhcmVUbyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSxtY2RlZikpPT0oLTEpOworICAobmV3IFRlc3QoImNwdDAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5jb21wYXJlVG8obmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IiksbWM2KSk9PSgtMSk7CisgIChuZXcgVGVzdCgiY3B0MDA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLmNvbXBhcmVUbyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSxtY2ZkKSk9PSgtMSk7CisgIHRyeXtjaGVja251bGw6ZG97CisgICB0ZW4uY29tcGFyZVRvKChjb20uaWJtLm1hdGguQmlnRGVjaW1hbCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQyOCl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbCovCisgIChuZXcgVGVzdCgiY3B0MTAwIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja251bGwyOmRveworICAgdGVuLmNvbXBhcmVUbyh0ZW4sKGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQyOSl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbDIqLworICAobmV3IFRlc3QoImNwdDEwMSIpKS5vaz1mbGFnOworICAKKyAgdHJ5e2NoZWNrZGlnaXRzOmRveworICAgdGVubG9uZy5jb21wYXJlVG8oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMzApe2FlPSQzMDsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfS8qY2hlY2tkaWdpdHMqLworICAobmV3IFRlc3QoImNwdDEwMiIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUuY29tcGFyZVRvKHRlbmxvbmcsbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQzMSl7YWU9JDMxOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9LypjaGVja2RpZ2l0cyovCisgIChuZXcgVGVzdCgiY3B0MTAzIikpLm9rPWZsYWc7CisgIAorICBzdW1tYXJ5KCJjb21wYXJlVG8iKTsKKyAgcmV0dXJuO30KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI2RpdmlkZX0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdkaXZpZGUoKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBjb20uaWJtLm1hdGguTWF0aENvbnRleHQgcm1jZDsKKyAgaW50IHJodTsKKyAgaW50IHJkOworICBpbnQgcnU7CisgIGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIGU9bnVsbDsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgCisgIChuZXcgVGVzdCgiZGl2MzAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMzMzMzMzMzMyIpOworICAobmV3IFRlc3QoImRpdjMwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC42NjY2NjY2NjciKTsKKyAgKG5ldyBUZXN0KCJkaXYzMDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi40Iik7CisgIChuZXcgVGVzdCgiZGl2MzA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCItMi40Iik7CisgIChuZXcgVGVzdCgiZGl2MzA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMi40IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCItMi40Iik7CisgIChuZXcgVGVzdCgiZGl2MzA2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMi40IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi40Iik7CisgIChuZXcgVGVzdCgiZGl2MzA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjQiKTsKKyAgKG5ldyBUZXN0KCJkaXYzMDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjQiKTsKKyAgKG5ldyBUZXN0KCJkaXYzMDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yIik7CisgIChuZXcgVGVzdCgiZGl2MzEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQwMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yIik7CisgIChuZXcgVGVzdCgiZGl2MzExIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLiIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoImRpdjMxMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMjAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMjAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgiZGl2MzEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxODciKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTg3IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoImRpdjMxNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi41Iik7CisgIChuZXcgVGVzdCgiZGl2MzE1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNSIpOworICAobmV3IFRlc3QoImRpdjMxNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjAwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNSIpOworICAobmV3IFRlc3QoImRpdjMxNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjIwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjI1Iik7CisgIChuZXcgVGVzdCgiZGl2MzE4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTk5OTkiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjk5OTk5OTk5OSIpOworICAobmV3IFRlc3QoImRpdjMxOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5LjQiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjk5OTk5OTk5OSIpOworICAobmV3IFRlc3QoImRpdjMyMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5LjUiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjFFKzkiKTsKKyAgKG5ldyBUZXN0KCJkaXYzMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5OTk5OS45IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5Iik7CisgIChuZXcgVGVzdCgiZGl2MzIyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTk5OTkuOTk5IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5Iik7CisgIChuZXcgVGVzdCgiZGl2MzIzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwMDBFLTUwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIC8vIE1DCisgIChuZXcgVGVzdCgiZGl2MzI1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTk5OTkiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjk5OTk5OTk5OSIpOworICAobmV3IFRlc3QoImRpdjMyNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtYzYpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrOSIpOworICAobmV3IFRlc3QoImRpdjMyNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIiksbWM2KS50b1N0cmluZygpKS5lcXVhbHMoIjFFKzciKTsKKyAgKG5ldyBUZXN0KCJkaXYzMjgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5OSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIiksbWM2KS50b1N0cmluZygpKS5lcXVhbHMoIjk5OTk5OSIpOworICAKKyAgLy8gY2hlY2sgcm91bmRpbmcgZXhwbGljaXRseSBbbm90ZTogZGlnaXRzKzEgdHJ1bmNhdGlvbl0KKyAgcm1jZD1uZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlNDSUVOVElGSUMsZmFsc2UsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0NFSUxJTkcpOworICAobmV3IFRlc3QoImRpdjMzMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS41MCIpKS5kaXZpZGUob25lLHJtY2QpLnRvU3RyaW5nKCkpLmVxdWFscygiMS41Iik7CisgIChuZXcgVGVzdCgiZGl2MzMxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjUxIikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjYiKTsKKyAgKG5ldyBUZXN0KCJkaXYzMzIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuNTUiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNiIpOworICBybWNkPW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQyxmYWxzZSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRE9XTik7CisgIChuZXcgVGVzdCgiZGl2MzMzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjU1IikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjUiKTsKKyAgKG5ldyBUZXN0KCJkaXYzMzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuNTkiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNSIpOworICBybWNkPW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQyxmYWxzZSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRkxPT1IpOworICAobmV3IFRlc3QoImRpdjMzNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS41NSIpKS5kaXZpZGUob25lLHJtY2QpLnRvU3RyaW5nKCkpLmVxdWFscygiMS41Iik7CisgIChuZXcgVGVzdCgiZGl2MzM2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjU5IikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjUiKTsKKyAgcm1jZD1uZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlNDSUVOVElGSUMsZmFsc2UsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTik7CisgIChuZXcgVGVzdCgiZGl2MzM3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjQ1IikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjQiKTsKKyAgKG5ldyBUZXN0KCJkaXYzMzgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuNTAiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNSIpOworICAobmV3IFRlc3QoImRpdjMzOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS41NSIpKS5kaXZpZGUob25lLHJtY2QpLnRvU3RyaW5nKCkpLmVxdWFscygiMS41Iik7CisgIHJtY2Q9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDLGZhbHNlLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pOworICAobmV3IFRlc3QoImRpdjM0MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS40NSIpKS5kaXZpZGUob25lLHJtY2QpLnRvU3RyaW5nKCkpLmVxdWFscygiMS40Iik7CisgIChuZXcgVGVzdCgiZGl2MzQxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjUwIikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjUiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuNTUiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNiIpOworICBybWNkPW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQyxmYWxzZSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCk7CisgIChuZXcgVGVzdCgiZGl2MzQzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjQ1IikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjUiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuNTAiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNSIpOworICAobmV3IFRlc3QoImRpdjM0NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS41NSIpKS5kaXZpZGUob25lLHJtY2QpLnRvU3RyaW5nKCkpLmVxdWFscygiMS42Iik7CisgIHJtY2Q9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDLGZhbHNlLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VUCk7CisgIChuZXcgVGVzdCgiZGl2MzQ2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjUwIikpLmRpdmlkZShvbmUscm1jZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjUiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuNTEiKSkuZGl2aWRlKG9uZSxybWNkKS50b1N0cmluZygpKS5lcXVhbHMoIjEuNiIpOworICAobmV3IFRlc3QoImRpdjM0OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS41NSIpKS5kaXZpZGUob25lLHJtY2QpLnRvU3RyaW5nKCkpLmVxdWFscygiMS42Iik7CisgIAorICAvLyBmaXhlZCBwb2ludC4uLgorICAobmV3IFRlc3QoImRpdjM1MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImRpdjM1MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoImRpdjM1MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi40IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjQiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0yLjQiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yLjQiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0yLjQiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yLjQiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjQiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNDAiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjQwMCIpOworICAobmV3IFRlc3QoImRpdjM1OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi40IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjIiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNTkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjIwMCIpOworICAobmV3IFRlc3QoImRpdjM2MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi4iKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoImRpdjM2MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTg3IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjE4NyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjMiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNjQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi4wIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMyIpOworICAobmV3IFRlc3QoImRpdjM2NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjMiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNjYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4yMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyNSIpOworICAobmV3IFRlc3QoImRpdjM2NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNS4wIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjUiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNjgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjUiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNjkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuMCIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNSIpOworICAobmV3IFRlc3QoImRpdjM3MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNS4wIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMjAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMjUuMCIpOworICAobmV3IFRlc3QoImRpdjM3MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5OTk5OTk5OTkiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNzIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5OTk5OS40IikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5OTk5OTk5OTkuNCIpOworICAobmV3IFRlc3QoImRpdjM3MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5LjUiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjk5OTk5OTk5OS41Iik7CisgIChuZXcgVGVzdCgiZGl2Mzc0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTk5OTkuOSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTk5OTk5OTk5LjkiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNzUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5OTk5OS45OTkiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjk5OTk5OTk5OS45OTkiKTsKKyAgKG5ldyBUZXN0KCJkaXYzNzYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwMEUtNSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImRpdjM3NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDAwMDAwMDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwMDAwIik7CisgIAorICAvLy0gRml4ZWQgcG9pbnQ7IGV4cGxpY2l0IHNjYWxlcyAmIHJvdW5kcyBbb2xkIEJpZ0RlY2ltYWwgZGl2aWRlc10KKyAgcmh1PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQOworICByZD1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRE9XTjsKKyAgKG5ldyBUZXN0KCJkaXYwMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJkaXYwMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiZGl2MDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSwwLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiZGl2MDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSwxLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJkaXYwMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLDIscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBUZXN0KCJkaXYwMDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLDMscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwIik7CisgIChuZXcgVGVzdCgiZGl2MDA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAiKTsKKyAgKG5ldyBUZXN0KCJkaXYwMDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJkaXYwMDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiZGl2MDEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSwwLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiZGl2MDExIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSwxLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMiKTsKKyAgKG5ldyBUZXN0KCJkaXYwMTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLDIscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMzMiKTsKKyAgKG5ldyBUZXN0KCJkaXYwMTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLDMscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMzMzIik7CisgIChuZXcgVGVzdCgiZGl2MDE0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMzMzMiKTsKKyAgKG5ldyBUZXN0KCJkaXYwMTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJkaXYwMTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgiZGl2MDE3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSwwLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgiZGl2MDE4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSwxLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjciKTsKKyAgKG5ldyBUZXN0KCJkaXYwMTkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLDIscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuNjciKTsKKyAgKG5ldyBUZXN0KCJkaXYwMjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLDMscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuNjY3Iik7CisgIChuZXcgVGVzdCgiZGl2MDIxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjY2NjciKTsKKyAgCisgIChuZXcgVGVzdCgiZGl2MDMwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIwMDAiKSw0LHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjUwMDAiKTsKKyAgKG5ldyBUZXN0KCJkaXYwMzEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMjAwMCIpLDMscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuNTAwIik7CisgIChuZXcgVGVzdCgiZGl2MDMyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIwMDAiKSwyLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjUwIik7CisgIChuZXcgVGVzdCgiZGl2MDMzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIwMDAiKSwxLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjUiKTsKKyAgKG5ldyBUZXN0KCJkaXYwMzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMjAwMCIpLDAscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgCisgIChuZXcgVGVzdCgiZGl2MDM1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNTAwMCIpLDQscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDIwMCIpOworICAobmV3IFRlc3QoImRpdjAzNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUwMDAiKSwzLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAyMCIpOworICAobmV3IFRlc3QoImRpdjAzNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUwMDAiKSwyLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAyIik7CisgIChuZXcgVGVzdCgiZGl2MDM4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNTAwMCIpLDEscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoImRpdjAzOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUwMDAiKSwwLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICAobmV3IFRlc3QoImRpdjA0MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTk5OSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljc3Nzc3Nzc3IiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMjI3Iik7CisgIChuZXcgVGVzdCgiZGl2MDQxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OTkiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3Nzc3IiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMjI3Iik7CisgIChuZXcgVGVzdCgiZGl2MDQyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljc3Nzc3NyIpLDQscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDIyNyIpOworICAobmV3IFRlc3QoImRpdjA0MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3Nzc3NyIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OTk5IiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45Nzc4Iik7CisgIChuZXcgVGVzdCgiZGl2MDQ0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljc3Nzc3NzciKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTk5IiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45Nzc4Iik7CisgIChuZXcgVGVzdCgiZGl2MDQ1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljc3Nzc3NyIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OSIpLDQscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTc3OCIpOworICAobmV3IFRlc3QoImRpdjA0NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3NyIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5IiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45Nzc4Iik7CisgIChuZXcgVGVzdCgiZGl2MDQ3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljc3NzciKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5IiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45Nzc4Iik7CisgIChuZXcgVGVzdCgiZGl2MDQ4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljc3NyIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OSIpLDQscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTc3OCIpOworICAobmV3IFRlc3QoImRpdjA0OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS43NyIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljk5IiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45NzgwIik7CisgIChuZXcgVGVzdCgiZGl2MDUwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5LjciKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45IiksNCxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45Nzk4Iik7CisgIChuZXcgVGVzdCgiZGl2MDUxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5LiIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5LiIpLDQscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMCIpOworICAKKyAgKG5ldyBUZXN0KCJkaXYwNjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuOTk5OTk5OTkiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3Nzc3NyIpLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAyMjcyNzI3Iik7CisgIChuZXcgVGVzdCgiZGl2MDYxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OTkiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3Nzc3Iikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDIyNzI3MyIpOworICAobmV3IFRlc3QoImRpdjA2MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTkiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3NzciKSxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMjI3MjciKTsKKyAgKG5ldyBUZXN0KCJkaXYwNjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuNzc3Nzc3NzciKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTk5OSIpLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk3Nzc3Nzc4Iik7CisgIChuZXcgVGVzdCgiZGl2MDY0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljc3Nzc3NzciKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTk5Iikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTc3Nzc3OCIpOworICAobmV3IFRlc3QoImRpdjA2NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS43Nzc3NzciKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTkiKSxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45Nzc3NzgiKTsKKyAgKG5ldyBUZXN0KCJkaXYwNjYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuNzc3NzciKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OSIpLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk3Nzc4Iik7CisgIChuZXcgVGVzdCgiZGl2MDY3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljc3NzciKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5Iikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTc3OCIpOworICAobmV3IFRlc3QoImRpdjA2OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS43NzciKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTkiKSxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45NzgiKTsKKyAgKG5ldyBUZXN0KCJkaXYwNjkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuNzciKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OSIpLHJodSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk4Iik7CisgIChuZXcgVGVzdCgiZGl2MDcwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5LjciKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45Iikscmh1KS50b1N0cmluZygpKS5lcXVhbHMoIjEuMCIpOworICAobmV3IFRlc3QoImRpdjA3MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS4iKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS4iKSxyaHUpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAKKyAgcmQ9Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0RPV047IC8vIHRlc3QgdGhpcyBpcyBhY3R1YWxseSBiZWluZyB1c2VkCisgIChuZXcgVGVzdCgiZGl2MDgwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSwwLHJkKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJkaXYwODEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLDEscmQpLnRvU3RyaW5nKCkpLmVxdWFscygiMC42Iik7CisgIChuZXcgVGVzdCgiZGl2MDgyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSwyLHJkKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNjYiKTsKKyAgKG5ldyBUZXN0KCJkaXYwODMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLDMscmQpLnRvU3RyaW5nKCkpLmVxdWFscygiMC42NjYiKTsKKyAgKG5ldyBUZXN0KCJkaXYwODQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpLDQscmQpLnRvU3RyaW5nKCkpLmVxdWFscygiMC42NjY2Iik7CisgIAorICBydT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVU5ORUNFU1NBUlk7IC8vIGNoZWNrIGZvciBzb21lIDAgcmVzaWR1ZXMKKyAgKG5ldyBUZXN0KCJkaXYwOTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpLDQscnUpLnRvU3RyaW5nKCkpLmVxdWFscygiMjAwLjAwMDAiKTsKKyAgKG5ldyBUZXN0KCJkaXYwOTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNTAiKSw0LHJ1KS50b1N0cmluZygpKS5lcXVhbHMoIjIwLjAwMDAiKTsKKyAgKG5ldyBUZXN0KCJkaXYwOTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNTAwIiksNCxydSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjAwMDAiKTsKKyAgKG5ldyBUZXN0KCJkaXYwOTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNTAwMCIpLDQscnUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yMDAwIik7CisgIChuZXcgVGVzdCgiZGl2MDk0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUwMDAiKSwzLHJ1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMjAwIik7CisgIChuZXcgVGVzdCgiZGl2MDk1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUwMDAiKSwyLHJ1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMjAiKTsKKyAgKG5ldyBUZXN0KCJkaXYwOTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNTAwMCIpLDEscnUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yIik7CisgIAorICAvLyBjaGVjayByb3VuZGluZyBleHBsaWNpdGx5CisgIChuZXcgVGVzdCgiZGl2MTAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1NSIpKS5kaXZpZGUob25lLDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0NFSUxJTkcpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wNiIpOworICAobmV3IFRlc3QoImRpdjEwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNTUiKSkuZGl2aWRlKG9uZSwxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9DRUlMSU5HKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IFRlc3QoImRpdjEwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNTUiKSkuZGl2aWRlKG9uZSwwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9DRUlMSU5HKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJkaXYxMDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRE9XTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjA1Iik7CisgIChuZXcgVGVzdCgiZGl2MTA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1NSIpKS5kaXZpZGUob25lLDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgiZGl2MTA2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1NSIpKS5kaXZpZGUob25lLDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImRpdjEwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNTUiKSkuZGl2aWRlKG9uZSwyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjA1Iik7CisgIChuZXcgVGVzdCgiZGl2MTA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1NSIpKS5kaXZpZGUob25lLDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0ZMT09SKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoImRpdjEwOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNTUiKSkuZGl2aWRlKG9uZSwwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICAobmV3IFRlc3QoImRpdjExMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNDUiKSkuZGl2aWRlKG9uZSwyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wNCIpOworICAobmV3IFRlc3QoImRpdjExMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNDUiKSkuZGl2aWRlKG9uZSwxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgiZGl2MTEyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA0NSIpKS5kaXZpZGUob25lLDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiZGl2MTEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1MCIpKS5kaXZpZGUob25lLDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjA1Iik7CisgIChuZXcgVGVzdCgiZGl2MTE0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1MCIpKS5kaXZpZGUob25lLDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJkaXYxMTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDUwIikpLmRpdmlkZShvbmUsMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJkaXYxMTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDUiKTsKKyAgKG5ldyBUZXN0KCJkaXYxMTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IFRlc3QoImRpdjExOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNTUiKSkuZGl2aWRlKG9uZSwwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAKKyAgKG5ldyBUZXN0KCJkaXYxMjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDQ1IikpLmRpdmlkZShvbmUsMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDQiKTsKKyAgKG5ldyBUZXN0KCJkaXYxMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDQ1IikpLmRpdmlkZShvbmUsMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoImRpdjEyMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNDUiKSkuZGl2aWRlKG9uZSwwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImRpdjEyMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNTAiKSkuZGl2aWRlKG9uZSwyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wNSIpOworICAobmV3IFRlc3QoImRpdjEyNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNTAiKSkuZGl2aWRlKG9uZSwxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgiZGl2MTI1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1MCIpKS5kaXZpZGUob25lLDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiZGl2MTI2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjE1MCIpKS5kaXZpZGUob25lLDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjE1Iik7CisgIChuZXcgVGVzdCgiZGl2MTI3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjE1MCIpKS5kaXZpZGUob25lLDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIiKTsKKyAgKG5ldyBUZXN0KCJkaXYxMjgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTUwIikpLmRpdmlkZShvbmUsMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJkaXYxMjkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDYiKTsKKyAgKG5ldyBUZXN0KCJkaXYxMzAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IFRlc3QoImRpdjEzMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNTUiKSkuZGl2aWRlKG9uZSwwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAKKyAgKG5ldyBUZXN0KCJkaXYxNDAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDQ1IikpLmRpdmlkZShvbmUsMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjA1Iik7CisgIChuZXcgVGVzdCgiZGl2MTQxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA0NSIpKS5kaXZpZGUob25lLDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgiZGl2MTQyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA0NSIpKS5kaXZpZGUob25lLDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImRpdjE0MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNTAiKSkuZGl2aWRlKG9uZSwyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDUiKTsKKyAgKG5ldyBUZXN0KCJkaXYxNDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDUwIikpLmRpdmlkZShvbmUsMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJkaXYxNDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDUwIikpLmRpdmlkZShvbmUsMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiZGl2MTQ2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1NSIpKS5kaXZpZGUob25lLDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wNiIpOworICAobmV3IFRlc3QoImRpdjE0NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNTUiKSkuZGl2aWRlKG9uZSwxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IFRlc3QoImRpdjE0OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNTUiKSkuZGl2aWRlKG9uZSwwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgCisgIChuZXcgVGVzdCgiZGl2MTUwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1NSIpKS5kaXZpZGUob25lLDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDYiKTsKKyAgKG5ldyBUZXN0KCJkaXYxNTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDU1IikpLmRpdmlkZShvbmUsMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgVGVzdCgiZGl2NTIuIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1NSIpKS5kaXZpZGUob25lLDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgCisgIC8vLSBlcnJvciBjb25kaXRpb25zIC0tLQorICB0cnl7Y2hlY2tudWxsOmRveworICAgdGVuLmRpdmlkZSgoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkMzIpeworICAgZmxhZz10cnVlOworICB9LypjaGVja251bGwqLworICAobmV3IFRlc3QoImRpdjIwMSIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tudWxsMjpkb3sKKyAgIHRlbi5kaXZpZGUodGVuLChjb20uaWJtLm1hdGguTWF0aENvbnRleHQpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkMzMpeworICAgZmxhZz10cnVlOworICB9LypjaGVja251bGwyKi8KKyAgKG5ldyBUZXN0KCJkaXYyMDIiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja3NjYWxlOmRveworICAgKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIiksLTgsMCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uICQzNCl7ZT0kMzQ7CisgICBmbGFnPWZsYWcmKGUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIk5lZ2F0aXZlIHNjYWxlOiAtOCIpOworICB9LypjaGVja3NjYWxlKi8KKyAgKG5ldyBUZXN0KCJkaXYyMDMiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtyb3Vubjpkb3sKKyAgIChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNTAwMCIpLDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDM1KXthZT0kMzU7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiUm91bmRpbmcgbmVjZXNzYXJ5Iik7CisgIH0vKnJvdW5uKi8KKyAgKG5ldyBUZXN0KCJkaXYyMDQiKSkub2s9ZmxhZzsKKyAgdHJ5e3JvdW5uOmRveworICAgKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpLDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDM2KXthZT0kMzY7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiUm91bmRpbmcgbmVjZXNzYXJ5Iik7CisgIH0vKnJvdW5uKi8KKyAgKG5ldyBUZXN0KCJkaXYyMDUiKSkub2s9ZmxhZzsKKyAgdHJ5e3JvdW5uOmRveworICAgKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAiKSwxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWSk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQzNyl7YWU9JDM3OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlJvdW5kaW5nIG5lY2Vzc2FyeSIpOworICB9Lypyb3VubiovCisgIChuZXcgVGVzdCgiZGl2MjA2IikpLm9rPWZsYWc7CisgIHRyeXtyb3Vubjpkb3sKKyAgIChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAxIikpLmRpdmlkZShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwIiksMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVU5ORUNFU1NBUlkpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMzgpe2FlPSQzODsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJSb3VuZGluZyBuZWNlc3NhcnkiKTsKKyAgfS8qcm91bm4qLworICAobmV3IFRlc3QoImRpdjIwNyIpKS5vaz1mbGFnOworICB0cnl7cm91bm46ZG97CisgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwMDEiKSkuZGl2aWRlKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpLDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDM5KXthZT0kMzk7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiUm91bmRpbmcgbmVjZXNzYXJ5Iik7CisgIH0vKnJvdW5uKi8KKyAgKG5ldyBUZXN0KCJkaXYyMDgiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtkaXYwOmRveworICAgKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5kaXZpZGUobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNDApe2FlPSQ0MDsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJEaXZpZGUgYnkgMCIpOworICB9LypkaXYwKi8KKyAgKG5ldyBUZXN0KCJkaXYyMDkiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIHRlbmxvbmcuZGl2aWRlKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORSxtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDQxKXthZT0kNDE7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBUZXN0KCJkaXYyMTAiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrZGlnaXRzOmRveworICAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLmRpdmlkZSh0ZW5sb25nLG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNDIpe2FlPSQ0MjsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfS8qY2hlY2tkaWdpdHMqLworICAobmV3IFRlc3QoImRpdjIxMSIpKS5vaz1mbGFnOworICAKKyAgc3VtbWFyeSgiZGl2aWRlIik7CisgIHJldHVybjt9CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNkaXZpZGVJbnRlZ2VyfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ2RpdmlkZUludGVnZXIoKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiBhZT1udWxsOworICAKKyAgKG5ldyBUZXN0KCJkdkkwMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMS4zIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAxIik7CisgIChuZXcgVGVzdCgiZHZJMDAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDEuMCIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMSIpOworICAobmV3IFRlc3QoImR2STAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAxLjMiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIzMyIpOworICAobmV3IFRlc3QoImR2STAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAxLjAiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIzMyIpOworICAobmV3IFRlc3QoImR2STAwNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi40IikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAobmV3IFRlc3QoImR2STAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi40MDAiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgVGVzdCgiZHZJMDA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxOCIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTgiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgiZHZJMDA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMTIwIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoImR2STAwOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi40IikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoImR2STAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi40MDAiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgiZHZJMDExIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImR2STAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOC4wMDUiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjciKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgiZHZJMDEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAobmV3IFRlc3QoImR2STAxNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJkdkkwMTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIC8vIE1DCisgIChuZXcgVGVzdCgiZHZJMDE2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNlKS50b1N0cmluZygpKS5lcXVhbHMoIjIiKTsKKyAgKG5ldyBUZXN0KCJkdkkwMTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtYzYpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAKKyAgLy8gRml4ZWQgLS0KKyAgKG5ldyBUZXN0KCJkdkkwMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMS4zIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAxIik7CisgIChuZXcgVGVzdCgiZHZJMDIyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDEuMCIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMSIpOworICAobmV3IFRlc3QoImR2STAyMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAxLjMiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzMyIpOworICAobmV3IFRlc3QoImR2STAyNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAxLjAiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzMyIpOworICAobmV3IFRlc3QoImR2STAyNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi40IikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAobmV3IFRlc3QoImR2STAyNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi40MDAiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgVGVzdCgiZHZJMDI3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxOCIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTgiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgiZHZJMDI4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMTIwIikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoImR2STAyOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi40IikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoImR2STAzMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi40MDAiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgiZHZJMDMxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImR2STAzMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOC4wMDUiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjciKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgiZHZJMDMzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLmRpdmlkZUludGVnZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAobmV3IFRlc3QoImR2STAzNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5kaXZpZGVJbnRlZ2VyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJkdkkwMzUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAiKSkuZGl2aWRlSW50ZWdlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICB0cnl7Y2hlY2tudWxsOmRveworICAgdGVuLmRpdmlkZUludGVnZXIoKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDQzKXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfS8qY2hlY2tudWxsKi8KKyAgKG5ldyBUZXN0KCJkdkkxMDEiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrbnVsbDI6ZG97CisgICB0ZW4uZGl2aWRlSW50ZWdlcih0ZW4sKGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ0NCl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbDIqLworICAobmV3IFRlc3QoImR2STEwMiIpKS5vaz1mbGFnOworICAKKyAgdHJ5e2NoZWNrZGlnaXRzOmRveworICAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLmRpdmlkZUludGVnZXIodGVubG9uZyxtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDQ1KXthZT0kNDU7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBUZXN0KCJkdkkxMDMiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIHRlbmxvbmcuZGl2aWRlSW50ZWdlcihjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUsbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ0Nil7YWU9JDQ2OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9LypjaGVja2RpZ2l0cyovCisgIChuZXcgVGVzdCgiZHZJMTA0IikpLm9rPWZsYWc7CisgIAorICBzdW1tYXJ5KCJkaXZpZGVJbnRlZ2VyIik7CisgIHJldHVybjt9CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNtYXh9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnbWF4KCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgCisgIC8vIHdlIGFzc3VtZSBhZGQvc3VidHJhY3QgdGVzdCBmdW5jdGlvbjsgdGhpcyBhbmQgbWluIGp1c3QKKyAgLy8gdGVzdCBleGlzdGVuY2UgYW5kIHRlc3QgdGhlIHRydXRoIHRhYmxlCisgIChuZXcgVGVzdCgibWF4MDAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLm1heChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI1Iik7CisgIChuZXcgVGVzdCgibWF4MDAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLm1heChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI1Iik7CisgIChuZXcgVGVzdCgibWF4MDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLm1heChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjciKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI3Iik7CisgIChuZXcgVGVzdCgibWF4MDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLm1heChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjciKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCI3Iik7CisgIChuZXcgVGVzdCgibWF4MDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLm1heChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjciKSxtYzYpLnRvU3RyaW5nKCkpLmVxdWFscygiNyIpOworICAobmV3IFRlc3QoIm1heDAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMkUrMyIpKS5tYXgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMjAwMCIpOworICAobmV3IFRlc3QoIm1heDAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMkUrMyIpKS5tYXgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3IiksbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIjJFKzMiKTsKKyAgKG5ldyBUZXN0KCJtYXgwMDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjciKSkubWF4KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMkUrMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIwMDAiKTsKKyAgKG5ldyBUZXN0KCJtYXgwMDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjciKSkubWF4KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMkUrMyIpLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCIyRSszIik7CisgIHRyeXtjaGVja251bGw6ZG97CisgICB0ZW4ubWF4KChjb20uaWJtLm1hdGguQmlnRGVjaW1hbCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ0Nyl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbCovCisgIChuZXcgVGVzdCgibWF4MDEwIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja251bGwyOmRveworICAgdGVuLm1heCh0ZW4sKGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ0OCl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbDIqLworICAobmV3IFRlc3QoIm1heDAxMSIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICB0ZW5sb25nLm1heChjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUsbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ0OSl7YWU9JDQ5OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9LypjaGVja2RpZ2l0cyovCisgIChuZXcgVGVzdCgibWF4MDEyIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORS5tYXgodGVubG9uZyxtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDUwKXthZT0kNTA7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBUZXN0KCJtYXgwMTMiKSkub2s9ZmxhZzsKKyAgc3VtbWFyeSgibWF4Iik7CisgIHJldHVybjt9CisKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjbWlufSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ21pbigpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIG1pbng9bnVsbDsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgLy8gd2UgYXNzdW1lIGFkZC9zdWJ0cmFjdCB0ZXN0IGZ1bmN0aW9uOyB0aGlzIGFuZCBtYXgganVzdAorICAvLyB0ZXN0IGV4aXN0ZW5jZSBhbmQgdGVzdCB0aGUgdHJ1dGggdGFibGUKKyAgCisgIChuZXcgVGVzdCgibWluMDAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLm1pbihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgVGVzdCgibWluMDAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLm1pbihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI1Iik7CisgIChuZXcgVGVzdCgibWluMDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLm1pbihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjciKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgVGVzdCgibWluMDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLm1pbihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjciKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgVGVzdCgibWluMDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLm1pbihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjciKSxtYzYpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoIm1pbjAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTJFKzMiKSkubWluKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNyIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0yMDAwIik7CisgIChuZXcgVGVzdCgibWluMDA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMkUrMyIpKS5taW4obmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3IiksbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIi0yRSszIik7CisgIChuZXcgVGVzdCgibWluMDA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3IikpLm1pbihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yRSszIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIwMDAiKTsKKyAgKG5ldyBUZXN0KCJtaW4wMDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjciKSkubWluKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTJFKzMiKSxtYzMpLnRvU3RyaW5nKCkpLmVxdWFscygiLTJFKzMiKTsKKyAgdHJ5e2NoZWNrbnVsbDpkb3sKKyAgIG1pbng9dGVuOworICAgbWlueC5taW4oKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDUxKXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfS8qY2hlY2tudWxsKi8KKyAgKG5ldyBUZXN0KCJtaW4wMTAiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrbnVsbDI6ZG97CisgICBtaW54PXRlbjsKKyAgIG1pbngubWluKHRlbiwoY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDUyKXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfS8qY2hlY2tudWxsMiovCisgIChuZXcgVGVzdCgibWluMDExIikpLm9rPWZsYWc7CisgIAorICB0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICB0ZW5sb25nLm1pbihjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUsbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ1Myl7YWU9JDUzOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9LypjaGVja2RpZ2l0cyovCisgIChuZXcgVGVzdCgibWluMDEyIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoOSkpLm1pbih0ZW5sb25nLG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNTQpe2FlPSQ1NDsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfS8qY2hlY2tkaWdpdHMqLworICAobmV3IFRlc3QoIm1pbjAxMyIpKS5vaz1mbGFnOworICBzdW1tYXJ5KCJtaW4iKTsKKyAgcmV0dXJuO30KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI211bHRpcGx5fSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ211bHRpcGx5KCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgbDk7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGw3N2U7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGwxMjM0NTsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgZWRnZTsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgdGVuZWRnZTsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgaHVuZWRnZTsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgb3BvOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkMT1udWxsOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkMj1udWxsOworICBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiBvZT1udWxsOworICBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiBhZT1udWxsOworICAKKyAgKG5ldyBUZXN0KCJtdWwwMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiNiIpOworICAobmV3IFRlc3QoIm11bDAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCI1Iik7CisgIChuZXcgVGVzdCgibXVsMDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgVGVzdCgibXVsMDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjIwIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwwMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjAiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoIm11bDAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIuNDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwwMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjIwIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIi0yLjQwIik7CisgIChuZXcgVGVzdCgibXVsMDA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMS4yMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgibXVsMDA5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMS4yMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi40MCIpOworICAobmV3IFRlc3QoIm11bDAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNS4wOSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcuMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjM2LjEzOSIpOworICAobmV3IFRlc3QoIm11bDAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi41IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEwLjAiKTsKKyAgKG5ldyBUZXN0KCJtdWwwMTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNTAiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI0IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAuMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwwMTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjM0NTY3ODkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwMDAwMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yMzQ1Njc4OSIpOworICAKKyAgKG5ldyBUZXN0KCJtdWwwMTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuOTk5OTk5OTk5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTk5OTkiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAuMDAwMDAwIik7CisgIAorICAobmV3IFRlc3QoIm11bDAxNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi41MCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjQiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxMC4wMCIpOworICAobmV3IFRlc3QoIm11bDAxNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi41MCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjQiKSxtYzYpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAuMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwwMTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkuOTk5OTk5OTk5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTk5OTkiKSxtYzYpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwLjAwMCIpOworICAKKyAgCisgIChuZXcgVGVzdCgibXVsMDIwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjYiKTsKKyAgKG5ldyBUZXN0KCJtdWwwMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiNSIpOworICAobmV3IFRlc3QoIm11bDAyMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMCIpOworICAobmV3IFRlc3QoIm11bDAyMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjQwIik7CisgIChuZXcgVGVzdCgibXVsMDI0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjIwIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwwMjUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjAiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0yLjQwIik7CisgIChuZXcgVGVzdCgibXVsMDI2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMS4yMCIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMi40MCIpOworICAobmV3IFRlc3QoIm11bDAyNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEuMjAiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMCIpOworICAobmV3IFRlc3QoIm11bDAyOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEuMjAiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwwMjkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuMDkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3LjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzNi4xMzkiKTsKKyAgKG5ldyBUZXN0KCJtdWwwMzAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMC4wIik7CisgIChuZXcgVGVzdCgibXVsMDMxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjUwIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEwLjAwIik7CisgIChuZXcgVGVzdCgibXVsMDMyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjIzNDU2Nzg5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjM0NTY3ODkwMDAwMDAwMCIpOworICAKKyAgKG5ldyBUZXN0KCJtdWwwMzMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQuNTY3ODkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMTAwMC4wMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMjM0NTY3Ljg5MDAwMDAwMDAiKTsKKyAgCisgIChuZXcgVGVzdCgibXVsMDM0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMTIzNC41Njc4OSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAuMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMTIzNDU2Ny44OTAwMDAwMDAwIik7CisgIAorICAobmV3IFRlc3QoIm11bDAzNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTk5OTk5OTkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5Ljk5OTk5OTk5OSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjk5Ljk5OTk5OTk4MDAwMDAwMDAwMSIpOworICAKKyAgKG5ldyBUZXN0KCJtdWwwMzYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuMDAiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRS0zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDUwMCIpOworICAobmV3IFRlc3QoIm11bDAzNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDAuMDAiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwwMzgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAwIikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMEUtMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsgLy8gcmhzIGlzICcwJworICAvLyAxOTk5LjEyLjIxOiBuZXh0IG9uZSBpcyBhIGVkZ2UgY2FzZSBpZiBpbnRlcm1lZGlhdGUgbG9uZ3MgYXJlIHVzZWQKKyAgKG5ldyBUZXN0KCJtdWwwMzkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5OTk5OTk5OSIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk3NjU2MjUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5NzY1NjI0OTk5OTkwMjM0Mzc1Iik7CisgIAorICBsOT1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1Njc4OUUrMTAiKTsKKyAgbDc3ZT1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjc3RS0yMCIpOworICAobmV3IFRlc3QoIm11bDA0MCIpKS5vaz0obDkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzNDU2NzU3IikpLnRvU3RyaW5nKCkpLmVxdWFscygiNDI2NzYwMTE5NTczMjczMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDA0MSIpKS5vaz0obDkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzNDU2NzU3IiksbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIjQuMjZFKzI0Iik7CisgIChuZXcgVGVzdCgibXVsMDQyIikpLm9rPShsOS5tdWx0aXBseShsNzdlKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTUwNjE3Mjc1MzAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwwNDMiKSkub2s9KGw5Lm11bHRpcGx5KGw3N2UsbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTQ3Iik7CisgIChuZXcgVGVzdCgibXVsMDQ0IikpLm9rPShsNzdlLm11bHRpcGx5KGw5LG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk0NyIpOworICAKKyAgbDEyMzQ1PW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzLjQ1Iik7CisgIChuZXcgVGVzdCgibXVsMDUwIikpLm9rPShsMTIzNDUubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxZTExIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yMzQ1RSsxMyIpOworICAobmV3IFRlc3QoIm11bDA1MSIpKS5vaz0obDEyMzQ1Lm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMWUxMSIpLG1jcykudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjIzNDVFKzEzIik7CisgIChuZXcgVGVzdCgibXVsMDUyIikpLm9rPShsMTIzNDUubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxZSs5IiksbWNlKS50b1N0cmluZygpKS5lcXVhbHMoIjEyMy40NUUrOSIpOworICAobmV3IFRlc3QoIm11bDA1MyIpKS5vaz0obDEyMzQ1Lm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMWUxMCIpLG1jZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjIzNDVFKzEyIik7CisgIChuZXcgVGVzdCgibXVsMDU0IikpLm9rPShsMTIzNDUubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxZTExIiksbWNlKS50b1N0cmluZygpKS5lcXVhbHMoIjEyLjM0NUUrMTIiKTsKKyAgKG5ldyBUZXN0KCJtdWwwNTUiKSkub2s9KGwxMjM0NS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFlMTIiKSxtY2UpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzLjQ1RSsxMiIpOworICAobmV3IFRlc3QoIm11bDA1NiIpKS5vaz0obDEyMzQ1Lm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMWUxMyIpLG1jZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjIzNDVFKzE1Iik7CisgIAorICAvLyB0ZXN0IHNvbWUgY2FzZXMgdGhhdCBhcmUgY2xvc2UgdG8gZXhwb25lbnQgb3ZlcmZsb3cKKyAgKG5ldyBUZXN0KCJtdWwwNjAiKSkub2s9KG9uZS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjllOTk5OTk5OTk5IiksbWNzKS50b1N0cmluZygpKS5lcXVhbHMoIjlFKzk5OTk5OTk5OSIpOworICAobmV3IFRlc3QoIm11bDA2MSIpKS5vaz0ob25lLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45ZTk5OTk5OTk5OSIpLG1jcykudG9TdHJpbmcoKSkuZXF1YWxzKCI5LjlFKzk5OTk5OTk5OSIpOworICAobmV3IFRlc3QoIm11bDA2MiIpKS5vaz0ob25lLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OWU5OTk5OTk5OTkiKSxtY3MpLnRvU3RyaW5nKCkpLmVxdWFscygiOS45OUUrOTk5OTk5OTk5Iik7CisgIChuZXcgVGVzdCgibXVsMDYzIikpLm9rPSh0ZW4ubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5ZTk5OTk5OTk5OSIpLG1jZSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5MEUrOTk5OTk5OTk5Iik7CisgIChuZXcgVGVzdCgibXVsMDY0IikpLm9rPSh0ZW4ubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5LjllOTk5OTk5OTk5IiksbWNlKS50b1N0cmluZygpKS5lcXVhbHMoIjk5LjBFKzk5OTk5OTk5OSIpOworICBlZGdlPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOS45OTllOTk5OTk5OTk5Iik7CisgIHRlbmVkZ2U9dGVuLm11bHRpcGx5KGVkZ2UsbWNlKTsKKyAgKG5ldyBUZXN0KCJtdWwwNjUiKSkub2s9KHRlbmVkZ2UudG9TdHJpbmcoKSkuZXF1YWxzKCI5OS45OTBFKzk5OTk5OTk5OSIpOworICBodW5lZGdlPXRlbi5tdWx0aXBseSh0ZW5lZGdlLG1jZSk7CisgIChuZXcgVGVzdCgibXVsMDY2IikpLm9rPShodW5lZGdlLnRvU3RyaW5nKCkpLmVxdWFscygiOTk5LjkwMEUrOTk5OTk5OTk5Iik7CisgIG9wbz1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMSIpOyAvLyBvbmUgdGVudGgKKyAgKG5ldyBUZXN0KCJtdWwwNjciKSkub2s9KG9wby5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjllLTk5OTk5OTk5OCIpLG1jcykudG9TdHJpbmcoKSkuZXF1YWxzKCI5RS05OTk5OTk5OTkiKTsKKyAgKG5ldyBUZXN0KCJtdWwwNjgiKSkub2s9KG9wby5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5ZS05OTk5OTk5OTgiKSxtY3MpLnRvU3RyaW5nKCkpLmVxdWFscygiOS45RS05OTk5OTk5OTgiKTsKKyAgKG5ldyBUZXN0KCJtdWwwNjkiKSkub2s9KG9wby5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5OWUtOTk5OTk5OTk4IiksbWNzKS50b1N0cmluZygpKS5lcXVhbHMoIjkuOTlFLTk5OTk5OTk5NyIpOworICAKKyAgKG5ldyBUZXN0KCJtdWwwNzAiKSkub2s9KG9wby5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjllLTk5OTk5OTk5OCIpLG1jZSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5RS05OTk5OTk5OTkiKTsKKyAgKG5ldyBUZXN0KCJtdWwwNzEiKSkub2s9KG9wby5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5ZS05OTk5OTk5OTgiKSxtY2UpLnRvU3RyaW5nKCkpLmVxdWFscygiOTlFLTk5OTk5OTk5OSIpOworICAobmV3IFRlc3QoIm11bDA3MiIpKS5vaz0ob3BvLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5ZS05OTk5OTk5OTgiKSxtY2UpLnRvU3RyaW5nKCkpLmVxdWFscygiOTk5RS05OTk5OTk5OTkiKTsKKyAgKG5ldyBUZXN0KCJtdWwwNzMiKSkub2s9KG9wby5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5OWUtOTk5OTk5OTk3IiksbWNlKS50b1N0cmluZygpKS5lcXVhbHMoIjkuOTlFLTk5OTk5OTk5NiIpOworICAobmV3IFRlc3QoIm11bDA3NCIpKS5vaz0ob3BvLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OWUtOTk5OTk5OTk3IiksbWNlKS50b1N0cmluZygpKS5lcXVhbHMoIjk5Ljk5RS05OTk5OTk5OTYiKTsKKyAgKG5ldyBUZXN0KCJtdWwwNzQiKSkub2s9KG9wby5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5ZS05OTk5OTk5OTciKSxtY2UpLnRvU3RyaW5nKCkpLmVxdWFscygiOTk5Ljk5RS05OTk5OTk5OTYiKTsKKyAgCisgIC8vIHRlc3Qgc29tZSBpbnRlcm1lZGlhdGUgbGVuZ3RocworICAobmV3IFRlc3QoIm11bDA4MCIpKS5vaz0ob3BvLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5IiksbWNzKS50b1N0cmluZygpKS5lcXVhbHMoIjEyMzQ1Njc4LjkiKTsKKyAgKG5ldyBUZXN0KCJtdWwwODEiKSkub2s9KG9wby5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1Njc4OTAxMjM0IiksbWNzKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMjM0NTY3ODlFKzEyIik7CisgIChuZXcgVGVzdCgibXVsMDgyIikpLm9rPShvcG8ubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NTY3ODkxMjM0NTY3ODkiKSxtY3MpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yMzQ1Njc4OUUrMTYiKTsKKyAgKG5ldyBUZXN0KCJtdWwwODMiKSkub2s9KG9wby5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1Njc4OSIpLG1jZmQpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNDU2NzguOSIpOworICAobmV3IFRlc3QoIm11bDA4NCIpKS5vaz0ob3BvLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5MDEyMzQiKSxtY2ZkKS50b1N0cmluZygpKS5lcXVhbHMoIjEyMzQ1Njc4OTAxMjMuNCIpOworICAobmV3IFRlc3QoIm11bDA4NSIpKS5vaz0ob3BvLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5MTIzNDU2Nzg5IiksbWNmZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMjM0NTY3ODkxMjM0NTY3OC45Iik7CisgIAorICAobmV3IFRlc3QoIm11bDA5MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5IikpLm11bHRpcGx5KG9wbyxtY3MpLnRvU3RyaW5nKCkpLmVxdWFscygiMTIzNDU2NzguOSIpOworICAobmV3IFRlc3QoIm11bDA5MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5MDEyMzQiKSkubXVsdGlwbHkob3BvLG1jcykudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjIzNDU2Nzg5RSsxMiIpOworICAobmV3IFRlc3QoIm11bDA5MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5MTIzNDU2Nzg5IikpLm11bHRpcGx5KG9wbyxtY3MpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4yMzQ1Njc4OUUrMTYiKTsKKyAgKG5ldyBUZXN0KCJtdWwwOTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1Njc4OSIpKS5tdWx0aXBseShvcG8sbWNmZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMjM0NTY3OC45Iik7CisgIChuZXcgVGVzdCgibXVsMDk0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NTY3ODkwMTIzNCIpKS5tdWx0aXBseShvcG8sbWNmZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMjM0NTY3ODkwMTIzLjQiKTsKKyAgKG5ldyBUZXN0KCJtdWwwOTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1Njc4OTEyMzQ1Njc4OSIpKS5tdWx0aXBseShvcG8sbWNmZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMjM0NTY3ODkxMjM0NTY3OC45Iik7CisgIAorICAvLyB0ZXN0IHNvbWUgbW9yZSBlZGdlIGNhc2VzIGFuZCBjYXJyaWVzCisgIChuZXcgVGVzdCgibXVsMTAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxIik7CisgIChuZXcgVGVzdCgibXVsMTAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI4MTAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxMDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5MDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI4MTAwIik7CisgIChuZXcgVGVzdCgibXVsMTA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwIik7CisgIChuZXcgVGVzdCgibXVsMTA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI4MTAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxMDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5MDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI4MTAwMDAwIik7CisgIChuZXcgVGVzdCgibXVsMTA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXVsMTA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI4MTAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxMDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5MDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI4MTAwMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXVsMTEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXVsMTExIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI4MTAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxMTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5MDAwMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI4MTAwMDAwMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXVsMTEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXVsMTE0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI4MTAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxMTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5MDAwMDAwMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI4MTAwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXVsMTE2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXVsMTE3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI4MTAwMDAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxMTgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5MDAwMDAwMDAwMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI4MTAwMDAwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXVsMTE5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXVsMTIwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAwMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI4MTAwMDAwMDAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjkiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5MDAwMDAwMDAwMDAwMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI4MTAwMDAwMDAwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXVsMTIyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjgxMDAwMDAwMDAwMDAwMDAwMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXVsMTIzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLm11bHRpcGx5KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI4MTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiKTsKKyAgLy8gdGVzdCBzb21lIG1vcmUgZWRnZSBjYXNlcyB3aXRob3V0IGNhcnJpZXMKKyAgKG5ldyBUZXN0KCJtdWwxMzEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOSIpOworICAobmV3IFRlc3QoIm11bDEzMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxMzMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5MDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxMzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMCIpOworICAobmV3IFRlc3QoIm11bDEzNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxMzYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5MDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxMzciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDEzOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxMzkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5MDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxNDAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDE0MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxNDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzMDAwMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5MDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxNDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDE0NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxNDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzMDAwMDAwMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5MDAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxNDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzMDAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDE0NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxNDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzMDAwMDAwMDAwMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5MDAwMDAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxNDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzMDAwMDAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDE1MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxNTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzMDAwMDAwMDAwMDAwMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5MDAwMDAwMDAwMDAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtdWwxNTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkubXVsdGlwbHkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzMDAwMDAwMDAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAwMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm11bDE1MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5tdWx0aXBseShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiKTsKKyAgCisgIHRyeXtjaGVja251bGw6ZG97CisgICB0ZW4ubXVsdGlwbHkoKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDU1KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfS8qY2hlY2tudWxsKi8KKyAgKG5ldyBUZXN0KCJtdWwyMDAiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrbnVsbDI6ZG97CisgICB0ZW4ubXVsdGlwbHkodGVuLChjb20uaWJtLm1hdGguTWF0aENvbnRleHQpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkNTYpeworICAgZmxhZz10cnVlOworICB9LypjaGVja251bGwyKi8KKyAgKG5ldyBUZXN0KCJtdWwyMDEiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja292ZXI6ZG97CisgICBkMT1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjIzNDU2Nzg5MDEyMzQ1RS0wIik7CisgICBkMj1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjlFKzk5OTk5OTk5OSIpOworICAgZDEubXVsdGlwbHkoZDIsbWNkZWYpOyAvLyBtYXJnaW5hbCBvdmVyZmxvdworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNTcpe29lPSQ1NzsKKyAgIGZsYWc9KG9lLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJFeHBvbmVudCBPdmVyZmxvdzogMTAwMDAwMDAwMCIpOworICB9LypjaGVja292ZXIqLworICAobmV3IFRlc3QoIm11bDIwMiIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tvdmVyOmRveworICAgZDE9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMTIiKTsKKyAgIGQyPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOUUrOTk5OTk5OTk5Iik7CisgICBkMS5tdWx0aXBseShkMixtY2UpOyAvLyBtYXJnaW5hbCBvdmVyZmxvdywgZW5naW5lZXJpbmcKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDU4KXtvZT0kNTg7CisgICBmbGFnPShvZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiRXhwb25lbnQgT3ZlcmZsb3c6IDEwMDAwMDAwMDIiKTsKKyAgfS8qY2hlY2tvdmVyKi8KKyAgKG5ldyBUZXN0KCJtdWwyMDMiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja292ZXI6ZG97CisgICBkMT1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuOSIpOworICAgZDI9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRS05OTk5OTk5OTkiKTsKKyAgIGQxLm11bHRpcGx5KGQyLG1jZGVmKTsgLy8gbWFyZ2luYWwgbmVnYXRpdmUgb3ZlcmZsb3cKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDU5KXtvZT0kNTk7CisgICBmbGFnPShvZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiRXhwb25lbnQgT3ZlcmZsb3c6IC0xMDAwMDAwMDAwIik7CisgIH0vKmNoZWNrb3ZlciovCisgIChuZXcgVGVzdCgibXVsMjA0IikpLm9rPWZsYWc7CisgIHRyeXtjaGVja292ZXI6ZG97CisgICBkMT1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuOSIpOworICAgZDI9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRS05OTk5OTk5OTkiKTsKKyAgIGQxLm11bHRpcGx5KGQyLG1jZSk7IC8vIG1hcmdpbmFsIG5lZ2F0aXZlIG92ZXJmbG93LCBlbmdpbmVlcmluZworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNjApe29lPSQ2MDsKKyAgIGZsYWc9KG9lLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJFeHBvbmVudCBPdmVyZmxvdzogLTEwMDAwMDAwMDIiKTsKKyAgfS8qY2hlY2tvdmVyKi8KKyAgKG5ldyBUZXN0KCJtdWwyMDUiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIHRlbmxvbmcubXVsdGlwbHkoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNjEpe2FlPSQ2MTsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfS8qY2hlY2tkaWdpdHMqLworICAobmV3IFRlc3QoIm11bDIwNiIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5URU4ubXVsdGlwbHkodGVubG9uZyxtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDYyKXthZT0kNjI7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBUZXN0KCJtdWwyMDciKSkub2s9ZmxhZzsKKyAgCisgIHN1bW1hcnkoIm11bHRpcGx5Iik7CisgIHJldHVybjt9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNuZWdhdGV9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnbmVnYXRlKCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgCisgIChuZXcgVGVzdCgibmVnMDAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLm5lZ2F0ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIiKTsKKyAgKG5ldyBUZXN0KCJuZWcwMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yIikpLm5lZ2F0ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAobmV3IFRlc3QoIm5lZzAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi4wMCIpKS5uZWdhdGUobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIuMDAiKTsKKyAgKG5ldyBUZXN0KCJuZWcwMDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yLjAwIikpLm5lZ2F0ZShtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjAwIik7CisgIChuZXcgVGVzdCgibmVnMDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLm5lZ2F0ZShtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgibmVnMDA2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLm5lZ2F0ZShtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgibmVnMDA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMC4wIikpLm5lZ2F0ZShtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgibmVnMDA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMCIpKS5uZWdhdGUobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAKKyAgKG5ldyBUZXN0KCJuZWcwMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuMDAiKSkubmVnYXRlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMi4wMCIpOworICAobmV3IFRlc3QoIm5lZzAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTIuMDAiKSkubmVnYXRlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjAwIik7CisgIChuZXcgVGVzdCgibmVnMDEyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLm5lZ2F0ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoIm5lZzAxMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMCIpKS5uZWdhdGUoKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBUZXN0KCJuZWcwMTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAiKSkubmVnYXRlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJuZWcwMTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAwIikpLm5lZ2F0ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMCIpOworICAobmV3IFRlc3QoIm5lZzAxNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDAiKSkubmVnYXRlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICAobmV3IFRlc3QoIm5lZzAyMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTIwMDAwMDAiKSkubmVnYXRlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIyMDAwMDAwIik7CisgIChuZXcgVGVzdCgibmVnMDIxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMjAwMDAwMCIpKS5uZWdhdGUobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMjAwMDAwMCIpOworICAobmV3IFRlc3QoIm5lZzAyMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTIwMDAwMDAiKSkubmVnYXRlKG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjAwMDAwRSs2Iik7CisgIChuZXcgVGVzdCgibmVnMDIzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyMDAwMDAwIikpLm5lZ2F0ZShtYzYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIuMDAwMDBFKzYiKTsKKyAgCisgIHRyeXtjaGVja251bGw6ZG97CisgICB0ZW4ubmVnYXRlKChjb20uaWJtLm1hdGguTWF0aENvbnRleHQpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkNjMpeworICAgZmxhZz10cnVlOworICB9LypjaGVja251bGwqLworICAobmV3IFRlc3QoIm5lZzEwMCIpKS5vaz1mbGFnOworICAKKyAgdHJ5e2NoZWNrZGlnaXRzOmRveworICAgdGVubG9uZy5uZWdhdGUobWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ2NCl7YWU9JDY0OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9LypjaGVja2RpZ2l0cyovCisgIChuZXcgVGVzdCgibmVnMTAxIikpLm9rPWZsYWc7CisgIHN1bW1hcnkoIm5lZ2F0ZSIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjcGx1c30gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdwbHVzKCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IG1jaGUxOworICBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiBhZT1udWxsOworICAKKyAgKG5ldyBUZXN0KCJwbHUwMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkucGx1cyhtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgVGVzdCgicGx1MDAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMiIpKS5wbHVzKG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIi0yIik7CisgIChuZXcgVGVzdCgicGx1MDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjAwIikpLnBsdXMobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi4wMCIpOworICAobmV3IFRlc3QoInBsdTAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTIuMDAiKSkucGx1cyhtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCItMi4wMCIpOworICAobmV3IFRlc3QoInBsdTAwNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5wbHVzKG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJwbHUwMDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAiKSkucGx1cyhtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgicGx1MDA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMC4wIikpLnBsdXMobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInBsdTAwOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDAiKSkucGx1cyhtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICAobmV3IFRlc3QoInBsdTAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5wbHVzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIyIik7CisgIChuZXcgVGVzdCgicGx1MDExIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMiIpKS5wbHVzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMiIpOworICAobmV3IFRlc3QoInBsdTAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi4wMCIpKS5wbHVzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjAwIik7CisgIChuZXcgVGVzdCgicGx1MDEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMi4wMCIpKS5wbHVzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMi4wMCIpOworICAobmV3IFRlc3QoInBsdTAxNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5wbHVzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgicGx1MDE1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLnBsdXMoKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBUZXN0KCJwbHUwMTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAiKSkucGx1cygpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgicGx1MDE3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMC4wMCIpKS5wbHVzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwIik7CisgIChuZXcgVGVzdCgicGx1MDE4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMCIpKS5wbHVzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICAobmV3IFRlc3QoInBsdTAyMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTIwMDAwMDAiKSkucGx1cygpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJwbHUwMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yMDAwMDAwIikpLnBsdXMobWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJwbHUwMjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yMDAwMDAwIikpLnBsdXMobWM2KS50b1N0cmluZygpKS5lcXVhbHMoIi0yLjAwMDAwRSs2Iik7CisgIChuZXcgVGVzdCgicGx1MDIzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyMDAwMDAwIikpLnBsdXMobWM2KS50b1N0cmluZygpKS5lcXVhbHMoIjIuMDAwMDBFKzYiKTsKKyAgCisgIC8vIHRyeSBzb21lIGV4b3RpYyBidXQgc2lsbHkgcm91bmRpbmcgW2Zvcm1hdCBjaGVja3MgbW9yZSB2YXJpZXRpZXNdCisgIC8vIFt0aGlzIG1vc3RseSBlbnN1cmVzIHdlIGNhbiBzZXQgdXAgYW5kIHBhc3MgdGhlIHNldHRpbmddCisgIG1jaGUxPW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQyxmYWxzZSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKTsKKyAgKG5ldyBUZXN0KCJwbHUwMzAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMjQiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIiKTsKKyAgKG5ldyBUZXN0KCJwbHUwMzEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMjUiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIiKTsKKyAgKG5ldyBUZXN0KCJwbHUwMzIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMjYiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMiKTsKKyAgKG5ldyBUZXN0KCJwbHUwMzMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTQiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJwbHUwMzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTUiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIiKTsKKyAgKG5ldyBUZXN0KCJwbHUwMzUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMTYiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIiKTsKKyAgCisgIChuZXcgVGVzdCgicGx1MDQwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjI1MSIpKS5wbHVzKG1jaGUxKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMyIpOworICAobmV3IFRlc3QoInBsdTA0MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4xNTEiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIiKTsKKyAgCisgIChuZXcgVGVzdCgicGx1MDUwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4yNCIpKS5wbHVzKG1jaGUxKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjIiKTsKKyAgKG5ldyBUZXN0KCJwbHUwNTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjI1IikpLnBsdXMobWNoZTEpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMiIpOworICAobmV3IFRlc3QoInBsdTA1MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMjYiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4zIik7CisgIChuZXcgVGVzdCgicGx1MDUzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4xNCIpKS5wbHVzKG1jaGUxKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjEiKTsKKyAgKG5ldyBUZXN0KCJwbHUwNTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjE1IikpLnBsdXMobWNoZTEpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMiIpOworICAobmV3IFRlc3QoInBsdTA1NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMTYiKSkucGx1cyhtY2hlMSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4yIik7CisgIAorICAvLyBtb3JlIGZpeGVkLCBwb3RlbnRpYWwgTEhTIHN3YXBzIGlmIGRvbmUgYnkgYWRkIDAKKyAgKG5ldyBUZXN0KCJwbHUwNjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMTAiKSkucGx1cygpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMDAwMDA1NjI2NyIpOworICAobmV3IFRlc3QoInBsdTA2MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS01IikpLnBsdXMoKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjU2MjY3Iik7CisgIChuZXcgVGVzdCgicGx1MDYyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTIiKSkucGx1cygpLnRvU3RyaW5nKCkpLmVxdWFscygiLTU2Mi42NyIpOworICAobmV3IFRlc3QoInBsdTA2MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS0xIikpLnBsdXMoKS50b1N0cmluZygpKS5lcXVhbHMoIi01NjI2LjciKTsKKyAgKG5ldyBUZXN0KCJwbHUwNjUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMCIpKS5wbHVzKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItNTYyNjciKTsKKyAgCisgIHRyeXtjaGVja251bGw6ZG97CisgICB0ZW4ucGx1cygoY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24gJDY1KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfS8qY2hlY2tudWxsKi8KKyAgKG5ldyBUZXN0KCJwbHUxMDAiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIHRlbmxvbmcucGx1cyhtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDY2KXthZT0kNjY7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBUZXN0KCJwbHUxMDEiKSkub2s9ZmxhZzsKKyAgc3VtbWFyeSgicGx1cyIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjcG93fSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ3BvdygpeworICBib29sZWFuIGZsYWc7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHg7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHRlbXA7CisgIGludCBuPTA7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHZ4OworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCB2bjsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgZmxhZz10cnVlOworICAobmV3IFRlc3QoInBvdzAwMSIpKS5vaz0iMSIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzAwMiIpKS5vaz0iMC4zIi5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MDAzIikpLm9rPSIwLjMiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wMCIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cwMDQiKSkub2s9IjAuMDkiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi4wMCIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cwMDUiKSkub2s9IjAuMDkiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi4wMDAwMDAwMDAiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MDA2IikpLm9rPSgiMUUtOCIpLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItOCIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cwMDciKSkub2s9KCIxRS03IikuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi03IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzAwOCIpKS5vaz0iMC4wMDAwMDEiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNiIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cwMDkiKSkub2s9IjAuMDAwMDEiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNSIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cwMTAiKSkub2s9IjAuMDAwMSIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi00IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzAxMSIpKS5vaz0iMC4wMDEiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMyIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cwMTIiKSkub2s9IjAuMDEiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMiIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cwMTMiKSkub2s9IjAuMSIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzAxNCIpKS5vaz0iMSIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MDE1IikpLm9rPSIxMCIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MDE2IikpLm9rPSIxMDAwMDAwMDAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI4IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzAxNyIpKS5vaz0oIjFFKzkiKS5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOSIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cwMTgiKSkub2s9KCIxRSs5OSIpLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OSIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cwMTkiKSkub2s9KCIxRSs5OTk5OTk5OTkiKS5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzAyMCIpKS5vaz0oIjFFKzk5OTk5OTk5OCIpLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTk5OTgiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MDIxIikpLm9rPSgiMUUrOTk5OTk5OTk3IikuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5OTk5NyIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cwMjIiKSkub2s9KCIxRSszMzMzMzMzMzMiKS5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMzMzMzMzMzMzIiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzAyMyIpKS5vaz0oIjFFLTMzMzMzMzMzMyIpLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMzMzMzMzMzMzIiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzAyNCIpKS5vaz0oIjFFLTk5OTk5OTk5OCIpLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItOTk5OTk5OTk4IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzAyNSIpKS5vaz0oIjFFLTk5OTk5OTk5OSIpLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItOTk5OTk5OTk5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzAyNiIpKS5vaz0iMC41Ii5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cwMjciKSkub2s9IjAuMjUiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yIiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzAyOCIpKS5vaz0iMC4wNjI1Ii5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNCIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgCisgIChuZXcgVGVzdCgicG93MDUwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgicG93MDUxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgicG93MDUyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgicG93MDUzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgicG93MDU0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgicG93MDU1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgicG93MDU2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJwb3cwNTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5OTk5OSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjFFKzk5OTk5OTk5OSIpOworICAobmV3IFRlc3QoInBvdzA1OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk4IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUrOTk5OTk5OTk4Iik7CisgIChuZXcgVGVzdCgicG93MDU5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTk5OTk5OTciKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs5OTk5OTk5OTciKTsKKyAgKG5ldyBUZXN0KCJwb3cwNjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMzMzMzMzMzMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjFFKzMzMzMzMzMzMyIpOworICAobmV3IFRlc3QoInBvdzA2MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNzciKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSs3NyIpOworICAobmV3IFRlc3QoInBvdzA2MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxRSsyMiIpOworICAobmV3IFRlc3QoInBvdzA2MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTc3IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUtNzciKTsKKyAgKG5ldyBUZXN0KCJwb3cwNjQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjFFLTIyIik7CisgIChuZXcgVGVzdCgicG93MDY1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41Iik7CisgIChuZXcgVGVzdCgicG93MDY2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0yIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yNSIpOworICAobmV3IFRlc3QoInBvdzA2NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDYyNSIpOworICAobmV3IFRlc3QoInBvdzA2OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNi4wIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIzNiIpOworICAobmV3IFRlc3QoInBvdzA2OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTMiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjkiKTsvKiBmcm9tIGJvb2sgKi8KKyAgKG5ldyBUZXN0KCJwb3cwNzAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiNjQiKTsvKiBmcm9tIGJvb2sgKi8KKyAgCisgIC8vIDE5OTguMTIuMTQgTmV4dCB0ZXN0IHJlbW92ZWQgYXMgcG93KCkgbm8gbG9uZ2VyIHJvdW5kcyBSSFMgW2FzIHBlciBBTlNJXQorICAvLyBUZXN0KCdwb3cwNzEnKS5vaz1CaWdEZWNpbWFsKCcyJykucG93KEJpZ0RlY2ltYWwoJzIuMDAwMDAwMDAxJyksbWNkZWYpLnRvU3RyaW5nID09ICc0Jy8qIGNoZWNrIGlucHV0IHJvdW5kaW5nICovCisgIAorICAvKiBHZW5lcmFsIHRlc3RzIGZyb20gb3JpZ2luYWwgUmV4eCBkaWFnbm9zdGljcyAqLworICB4PW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41Iik7CisgIHRlbXA9Y29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FOworICBmbGFnPXRydWU7CisgIHtuPTE7bjpmb3IoO248PTEwO24rKyl7CisgICB0ZW1wPXRlbXAubXVsdGlwbHkoeCkuZGl2aWRlKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORSk7CisgICBmbGFnPWZsYWcmKHgucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChuKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKHRlbXAudG9TdHJpbmcoKSk7CisgICB9CisgIH0vKm4qLworICAobmV3IFRlc3QoInBvdzA4MCIpKS5vaz1mbGFnOworICAKKyAgeD1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKTsKKyAgdGVtcD1jb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkU7CisgIGZsYWc9dHJ1ZTsKKyAge249MTtuOmZvcig7bjw9Mjk7bisrKXsKKyAgIHRlbXA9dGVtcC5tdWx0aXBseSh4KS5kaXZpZGUoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FKTsKKyAgIGZsYWc9ZmxhZyYoeC5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKG4pLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHModGVtcC50b1N0cmluZygpKTsKKyAgIGZsYWc9ZmxhZyYoeC5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKChpbnQpLW4pLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLmRpdmlkZSh0ZW1wLG1jZGVmKS50b1N0cmluZygpKTsKKyAgIC8qIE5vdGUgdGhhdCByb3VuZGluZyBlcnJvcnMgYXJlIHBvc3NpYmxlIGZvciBsYXJnZXIgIm4iICovCisgICAvKiBkdWUgdG8gdGhlIGluZm9ybWF0aW9uIGNvbnRlbnQgb2YgdGhlIGV4cG9uZW50ICAgICAgICAqLworICAgfQorICB9LypuKi8KKyAgKG5ldyBUZXN0KCJwb3cwODEiKSkub2s9ZmxhZzsKKyAgCisgIC8qIFRoZSBWaWVubmEgY2FzZS4gIENoZWNrcyBib3RoIHNldHVwIGFuZCAxL2FjYyB3b3JraW5nIHByZWNpc2lvbiAqLworICAvLyBNb2RpZmllZCAxOTk4LjEyLjE0IGFzIFJIUyBubyBsb25nZXIgcm91bmRlZCBiZWZvcmUgdXNlIChtdXN0IGZpdCkKKyAgLy8gTW9kaWZpZWQgMTk5MC4wMi4wNCBhcyBMSFMgaXMgbm93IHJvdW5kZWQgKGluc3RlYWQgb2YgdHJ1bmNhdGVkIHRvIGd1YXJkKQorICB2eD1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1Njc4OUUrMTAiKTsgLy8gbGhzIC4uIHJvdW5kZWQgdG8gMS4yM0UrMTgKKyAgdm49bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMS4yMzAwMGUrMiIpOyAvLyByaHMgLi4gW3dhczogLTEuMjM0NTVlKzIsIHJvdW5kcyB0byAtMTIzXQorICAobmV3IFRlc3QoInBvdzA5MCIpKS5vaz0odngucG93KHZuLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCI4Ljc0RS0yMjI2Iik7CisgIAorICAvLy0gZml4ZWQgcG9pbnQgdmVyc2lvbnMgLS0tCisgIChuZXcgVGVzdCgicG93MTAxIikpLm9rPSIxIi5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MTAyIikpLm9rPSIwLjMiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cxMDMiKSkub2s9IjAuMyIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwIikpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzEwNCIpKS5vaz0iMC4wOSIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzEwNSIpKS5vaz0iMC4wOSIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjAwIikpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzEwNiIpKS5vaz0iMTAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzEwNyIpKS5vaz0iMTAwMDAwMDAwIi5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOCIpKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cxMDgiKSkub2s9IjEwMDAwMDAwMDAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5IikpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzEwOSIpKS5vaz0iMTAwMDAwMDAwMDAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMCIpKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cxMTAiKSkub2s9IjEiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgicG93MTExIikpLm9rPSIxNiIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNCIpKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cxMTIiKSkub2s9IjI1NiIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOCIpKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJwb3cxMTMiKSkub2s9IjEwMjQiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInBvdzExNCIpKS5vaz0iMS4wNTEwMTAwNTAxIi5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wMSIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLnRvU3RyaW5nKCkpOworICAKKyAgKG5ldyBUZXN0KCJwb3cxMjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJwb3cxMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJwb3cxMjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJwb3cxMjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJwb3cxNDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJwb3cxMjUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJwb3cxMjYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInBvdzEyNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAwMDAwIik7CisgIChuZXcgVGVzdCgicG93MTI4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI2LjAiKSkucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjM2LjAwIik7CisgIChuZXcgVGVzdCgicG93MTI5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI2LjAwIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzNi4wMDAwIik7CisgIChuZXcgVGVzdCgicG93MTMwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI2LjAwMCIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMzYuMDAwMDAwIik7CisgIChuZXcgVGVzdCgicG93MTMxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMyIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiOSIpOworICAobmV3IFRlc3QoInBvdzEzMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI2NCIpOworICAKKyAgLyogZXJyb3JzICovCisgIHRyeXtjaGVja251bGw6ZG97CisgICB0ZW4ucG93KChjb20uaWJtLm1hdGguQmlnRGVjaW1hbCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ2Nyl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbCovCisgIChuZXcgVGVzdCgicG93MTUwIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja251bGwyOmRveworICAgdGVuLnBvdyh0ZW4sKGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ2OCl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbDIqLworICAobmV3IFRlc3QoInBvdzE1MSIpKS5vaz1mbGFnOworICAKKyAgZmxhZz10cnVlOworICB0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICB0ZW5sb25nLnBvdyhjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUsbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ2OSl7YWU9JDY5OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9LypjaGVja2RpZ2l0cyovCisgIChuZXcgVGVzdCgicG93MTUyIikpLm9rPWZsYWc7CisgIAorICB0cnl7Y2hlY2tkaWdpdHM6ZG97CisgICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUucG93KHRlbmxvbmcsbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ3MCl7YWU9JDcwOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9LypjaGVja2RpZ2l0cyovCisgIChuZXcgVGVzdCgicG93MTUzIikpLm9rPWZsYWc7CisgIAorICB0cnl7Y2hlY2twb3M6ZG97CisgICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTcxIikpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNzEpe2FlPSQ3MTsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJOZWdhdGl2ZSBwb3dlcjogLTcxIik7CisgIH0vKmNoZWNrcG9zKi8KKyAgKG5ldyBUZXN0KCJwb3cxNTQiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja3dob2xlOmRveworICAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQiKSxtYzMpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNzIpe2FlPSQ3MjsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IDEyMzQiKTsKKyAgfS8qY2hlY2t3aG9sZSovCisgIChuZXcgVGVzdCgicG93MTU1IikpLm9rPWZsYWc7CisgIAorICB0cnl7Y2hlY2t3aG9sZTE6ZG97CisgICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIuMzRlKzIiKSxtYzMpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNzMpe2FlPSQ3MzsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IDEuMjM0RSszIik7CisgIH0vKmNoZWNrd2hvbGUxKi8KKyAgKG5ldyBUZXN0KCJwb3cxNTYiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja3dob2xlMjpkb3sKKyAgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORS5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMi40IiksbWNkZWYpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkNzQpe2FlPSQ3NDsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJEZWNpbWFsIHBhcnQgbm9uLXplcm86IDEyLjQiKTsKKyAgfS8qY2hlY2t3aG9sZTIqLworICAobmV3IFRlc3QoInBvdzE1NyIpKS5vaz1mbGFnOworICAKKyAgdHJ5e2NoZWNrd2hvbGUzOmRveworICAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDEiKSxtY2RlZik7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ3NSl7YWU9JDc1OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkRlY2ltYWwgcGFydCBub24temVybzogMS4wMSIpOworICB9LypjaGVja3dob2xlMyovCisgIChuZXcgVGVzdCgicG93MTU4IikpLm9rPWZsYWc7CisgIAorICB0cnl7Y2hlY2t3aG9sZTQ6ZG97CisgICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wMDAwMDAwMDEiKSxtY2RlZik7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ3Nil7YWU9JDc2OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkRlY2ltYWwgcGFydCBub24temVybzogMS4wMDAwMDAwMDEiKTsKKyAgfS8qY2hlY2t3aG9sZTQqLworICAobmV3IFRlc3QoInBvdzE1OSIpKS5vaz1mbGFnOworICAKKyAgdHJ5e2NoZWNrd2hvbGU1OmRveworICAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMDAwMDAxIiksbWMzKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDc3KXthZT0kNzc7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiRGVjaW1hbCBwYXJ0IG5vbi16ZXJvOiAxLjAwMDAwMDAwMSIpOworICB9LypjaGVja3dob2xlNSovCisgIChuZXcgVGVzdCgicG93MTYwIikpLm9rPWZsYWc7CisgIAorICB0cnl7Y2hlY2t3aG9sZTY6ZG97CisgICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5PTkUucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNS42N0UtOTg3NjU0MzIxIiksbWMzKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDc4KXthZT0kNzg7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiRGVjaW1hbCBwYXJ0IG5vbi16ZXJvOiA1LjY3RS05ODc2NTQzMjEiKTsKKyAgfS8qY2hlY2t3aG9sZTYqLworICAobmV3IFRlc3QoInBvdzE2MSIpKS5vaz1mbGFnOworICAKKyAgc3VtbWFyeSgicG93Iik7CisgIHJldHVybjt9CisKKyAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjcmVtYWluZGVyfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ3JlbWFpbmRlcigpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uIGFlPW51bGw7CisgIAorICAobmV3IFRlc3QoInJlbTAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInJlbTAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInJlbTAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTMiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIzIik7CisgIChuZXcgVGVzdCgicmVtMDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMyIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1MCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEzIik7CisgIChuZXcgVGVzdCgicmVtMDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMyIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxMyIpOworICAobmV3IFRlc3QoInJlbTAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTMiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEzIik7CisgIChuZXcgVGVzdCgicmVtMDA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuMTMiKSkucmVtYWluZGVyKG9uZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEzIik7CisgIChuZXcgVGVzdCgicmVtMDA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEzMyIpKS5yZW1haW5kZXIob25lKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTMzIik7CisgIChuZXcgVGVzdCgicmVtMDA5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEwMzMiKSkucmVtYWluZGVyKG9uZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwMzMiKTsKKyAgKG5ldyBUZXN0KCJyZW0wMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDMzIikpLnJlbWFpbmRlcihvbmUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMzMiKTsKKyAgKG5ldyBUZXN0KCJyZW0wMTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjMzIikpLnJlbWFpbmRlcihvbmUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4zMyIpOworICAobmV3IFRlc3QoInJlbTAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAuMzMiKSkucmVtYWluZGVyKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLlRFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMzIik7CisgIChuZXcgVGVzdCgicmVtMDEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDMuMyIpKS5yZW1haW5kZXIoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMyIpOworICAobmV3IFRlc3QoInJlbTAxNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTMzIikpLnJlbWFpbmRlcihjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5URU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMyIpOworICAobmV3IFRlc3QoInJlbTAxNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAzMyIpKS5yZW1haW5kZXIoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuVEVOKS50b1N0cmluZygpKS5lcXVhbHMoIjMiKTsKKyAgKG5ldyBUZXN0KCJyZW0wMTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMzMiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCg1MCksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMzMiKTsKKyAgKG5ldyBUZXN0KCJyZW0wMTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMS4wIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMyksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi4wIik7CisgIChuZXcgVGVzdCgicmVtMDE4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDIuMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDMpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJyZW0wMTkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMy4wIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMyksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wIik7CisgIChuZXcgVGVzdCgicmVtMDIwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQwIikpLnJlbWFpbmRlcihvbmUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40MCIpOworICAobmV3IFRlc3QoInJlbTAyMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi40MDAiKSkucmVtYWluZGVyKG9uZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQwMCIpOworICAobmV3IFRlc3QoInJlbTAyMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi40IikpLnJlbWFpbmRlcihvbmUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40Iik7CisgIChuZXcgVGVzdCgicmVtMDIzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgyKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQiKTsKKyAgKG5ldyBUZXN0KCJyZW0wMjQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAwIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40MDAiKTsKKyAgKG5ldyBUZXN0KCJyZW0wMjUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgVGVzdCgicmVtMDI2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMzAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwIik7CisgIChuZXcgVGVzdCgicmVtMDI3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMzAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMDAiKTsKKyAgKG5ldyBUZXN0KCJyZW0wMjgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMDAwIik7CisgIChuZXcgVGVzdCgicmVtMDI5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgVGVzdCgicmVtMDMwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTAiKTsKKyAgKG5ldyBUZXN0KCJyZW0wMzEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTAwIik7CisgIChuZXcgVGVzdCgicmVtMDMyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwMDAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMDAwIik7CisgIChuZXcgVGVzdCgicmVtMDMzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi4wMDEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjUiKTsKKyAgCisgIChuZXcgVGVzdCgicmVtMDQwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41MDAwMDAxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41Iik7CisgIChuZXcgVGVzdCgicmVtMDQxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41MDAwMDAwMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNSIpOworICAobmV3IFRlc3QoInJlbTA0MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTAwMDAwMDAxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41Iik7CisgIChuZXcgVGVzdCgicmVtMDQzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41MDAwMDAwMDAxIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInJlbTA0NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTAwMDAwMDAwMDEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgicmVtMDQ1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC40OTk5OTk5IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMUUtNyIpOworICAobmV3IFRlc3QoInJlbTA0NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNDk5OTk5OTkiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxRS04Iik7CisgIChuZXcgVGVzdCgicmVtMDQ3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC40OTk5OTk5OTkiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxRS05Iik7CisgIChuZXcgVGVzdCgicmVtMDQ4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC40OTk5OTk5OTk5IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInJlbTA0OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNDk5OTk5OTk5OTkiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIAorICAobmV3IFRlc3QoInJlbTA1MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMyIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMyIpOworICAobmV3IFRlc3QoInJlbTA1MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInJlbTA1MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNC4xIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJyZW0wNTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjQuMDEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDEiKTsKKyAgKG5ldyBUZXN0KCJyZW0wNTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjQuMDAxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMSIpOworICAobmV3IFRlc3QoInJlbTA1NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNC4wMDAxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDEiKTsKKyAgKG5ldyBUZXN0KCJyZW0wNTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjQuMDAwMDEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDEiKTsKKyAgKG5ldyBUZXN0KCJyZW0wNTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjQuMDAwMDAxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMSIpOworICAobmV3IFRlc3QoInJlbTA1OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNC4wMDAwMDAxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxRS03Iik7CisgIAorICAobmV3IFRlc3QoInJlbTA2MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNzM0NSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDY1NSIpOworICAobmV3IFRlc3QoInJlbTA2MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC44IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC44Iik7CisgIChuZXcgVGVzdCgicmVtMDYyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjgiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4yIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInJlbTA2MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC44IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMiIpOworICAobmV3IFRlc3QoInJlbTA2NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC44MDAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjgwMCIpOworICAobmV3IFRlc3QoInJlbTA2NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC44MDAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS43IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC44MDAiKTsKKyAgKG5ldyBUZXN0KCJyZW0wNjYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAwIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40MDAiKTsKKyAgCisgIC8vIE1DIC0tCisgIChuZXcgVGVzdCgicmVtMDcxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQwMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDIpLG1jNikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQwMCIpOworICAobmV3IFRlc3QoInJlbTA3MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDU2Nzg5MDAwMDAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTJlKzEyIiksbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIjNFKzExIik7CisgIAorICAvLyBGaXhlZCAtLQorICAobmV3IFRlc3QoInJlbTEwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInJlbTEwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInJlbTEwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTMiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIzIik7CisgIChuZXcgVGVzdCgicmVtMTA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMyIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1MCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEzIik7CisgIChuZXcgVGVzdCgicmVtMTA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMyIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMyIpOworICAobmV3IFRlc3QoInJlbTEwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTMiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjEzIik7CisgIChuZXcgVGVzdCgicmVtMTA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuMTMiKSkucmVtYWluZGVyKG9uZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEzIik7CisgIChuZXcgVGVzdCgicmVtMTA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEzMyIpKS5yZW1haW5kZXIob25lKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTMzIik7CisgIChuZXcgVGVzdCgicmVtMTA5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEwMzMiKSkucmVtYWluZGVyKG9uZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwMzMiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDMzIikpLnJlbWFpbmRlcihvbmUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMzMiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjMzIikpLnJlbWFpbmRlcihvbmUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4zMyIpOworICAobmV3IFRlc3QoInJlbTExMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAuMzMiKSkucmVtYWluZGVyKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLlRFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMzIik7CisgIChuZXcgVGVzdCgicmVtMTEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDMuMyIpKS5yZW1haW5kZXIoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMyIpOworICAobmV3IFRlc3QoInJlbTExNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTMzIikpLnJlbWFpbmRlcihjb20uaWJtLm1hdGguQmlnRGVjaW1hbC5URU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMyIpOworICAobmV3IFRlc3QoInJlbTExNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAzMyIpKS5yZW1haW5kZXIoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuVEVOKS50b1N0cmluZygpKS5lcXVhbHMoIjMiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMzMiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCg1MCkpLnRvU3RyaW5nKCkpLmVxdWFscygiMzMiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMS4wIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMykpLnRvU3RyaW5nKCkpLmVxdWFscygiMi4wIik7CisgIChuZXcgVGVzdCgicmVtMTE4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDIuMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDMpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMTkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMy4wIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMykpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wIik7CisgIChuZXcgVGVzdCgicmVtMTIwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQwIikpLnJlbWFpbmRlcihvbmUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40MCIpOworICAobmV3IFRlc3QoInJlbTEyMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi40MDAiKSkucmVtYWluZGVyKG9uZSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQwMCIpOworICAobmV3IFRlc3QoInJlbTEyMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi40IikpLnJlbWFpbmRlcihvbmUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40Iik7CisgIChuZXcgVGVzdCgicmVtMTIzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgyKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMjQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNDAwIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40MDAiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMjUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgVGVzdCgicmVtMTI2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMzAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwIik7CisgIChuZXcgVGVzdCgicmVtMTI3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMzAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMDAiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMjgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zMDAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMDAwIik7CisgIChuZXcgVGVzdCgicmVtMTI5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgVGVzdCgicmVtMTMwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTAiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMzEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTAwIik7CisgIChuZXcgVGVzdCgicmVtMTMyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwMDAiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMDAwIik7CisgIChuZXcgVGVzdCgicmVtMTMzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi4wMDEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjUiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUwMDAwMDAwMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNSIpOworICAobmV3IFRlc3QoInJlbTEzNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTAwMDAwMDAwMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNSIpOworICAobmV3IFRlc3QoInJlbTEzNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMyIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMyIpOworICAobmV3IFRlc3QoInJlbTEzNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInJlbTEzOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNC4xIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJyZW0xMzkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjQuMDEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDEiKTsKKyAgKG5ldyBUZXN0KCJyZW0xNDAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjQuMDAxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMSIpOworICAobmV3IFRlc3QoInJlbTE0MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNC4wMDAxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDEiKTsKKyAgKG5ldyBUZXN0KCJyZW0xNDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjQuMDAwMDEiKSkucmVtYWluZGVyKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDEiKTsKKyAgKG5ldyBUZXN0KCJyZW0xNDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjQuMDAwMDAxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMSIpOworICAobmV3IFRlc3QoInJlbTE0NCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNC4wMDAwMDAxIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMDEiKTsgLy8gMUUtNywgcGxhaW4KKyAgKG5ldyBUZXN0KCJyZW0xNDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMiIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjczNDUiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQ2NTUiKTsKKyAgKG5ldyBUZXN0KCJyZW0xNDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuOCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOCIpOworICAobmV3IFRlc3QoInJlbTE0NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC44IikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJyZW0xNDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuOCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIiKTsKKyAgKG5ldyBUZXN0KCJyZW0xNDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuODAwIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC44MDAiKTsKKyAgKG5ldyBUZXN0KCJyZW0xNTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuODAwIikpLnJlbWFpbmRlcihuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuNyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuODAwIik7CisgIChuZXcgVGVzdCgicmVtMTUxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIyLjQwMCIpKS5yZW1haW5kZXIobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDAwIik7CisgIAorICB0cnl7Y2hlY2tudWxsOmRveworICAgdGVuLnJlbWFpbmRlcigoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkNzkpeworICAgZmxhZz10cnVlOworICB9LypjaGVja251bGwqLworICAobmV3IFRlc3QoInJlbTIwMCIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tudWxsMjpkb3sKKyAgIHRlbi5yZW1haW5kZXIodGVuLChjb20uaWJtLm1hdGguTWF0aENvbnRleHQpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkODApeworICAgZmxhZz10cnVlOworICB9LypjaGVja251bGwyKi8KKyAgKG5ldyBUZXN0KCJyZW0yMDEiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLk9ORS5yZW1haW5kZXIodGVubG9uZyxtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDgxKXthZT0kODE7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBUZXN0KCJyZW0yMDIiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIHRlbmxvbmcucmVtYWluZGVyKG9uZSxtY2xkKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDgyKXthZT0kODI7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiVG9vIG1hbnkgZGlnaXRzOiIrIiAiK3RlbmxvbmcudG9TdHJpbmcoKSk7CisgIH0vKmNoZWNrZGlnaXRzKi8KKyAgKG5ldyBUZXN0KCJyZW0yMDMiKSkub2s9ZmxhZzsKKyAgCisgIHN1bW1hcnkoInJlbWFpbmRlciIpOworICByZXR1cm47fQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI3N1YnRyYWN0fSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ3N1YnRyYWN0KCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgYWxoczsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgYXJoczsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgCisgIC8vIFtmaXJzdCBncm91cCBhcmUgJ3F1aWNrIGNvbmZpZGVuY2UgY2hlY2snXQorICAobmV3IFRlc3QoInN1YjMwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgyKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDMpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgVGVzdCgic3ViMzAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1Ljc1IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMy4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi40NSIpOworICAobmV3IFRlc3QoInN1YjMwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiOCIpOworICAobmV3IFRlc3QoInN1YjMwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTUiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIi0yIik7CisgIChuZXcgVGVzdCgic3ViMzA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjIuNSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIi05LjUiKTsKKyAgKG5ldyBUZXN0KCJzdWIzMDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNCIpOworICAobmV3IFRlc3QoInN1YjMwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4zIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wIik7CisgIChuZXcgVGVzdCgic3ViMzA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI1IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yNSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJzdWIzMDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjM0NTY3ODkiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwMDAwMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yMzQ1Njc4OSIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIzMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjM0NTY3ODkiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwMDAwMDg5IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yMzQ1NjcwMCIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIzMTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTU1NTU1NTU1OSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwMDAwMDAwMSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNTU1NTU1NTU2Iik7CisgIAorICAobmV3IFRlc3QoInN1YjMxMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41NTU1NTU1NTU5IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDAwMDAwMDA1IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41NTU1NTU1NTYiKTsKKyAgCisgIChuZXcgVGVzdCgic3ViMzEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDQiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjExMTExMTExMTEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMzMzMzMzMzMyIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIzMTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMDAwMDAwMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAwMDAwMDEiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjk5OTk5OTk5Iik7CisgIAorICAobmV3IFRlc3QoInN1YjMxNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC40NDQ0NDQ0NDQ0OTk5IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDQ0NDQ0NDQ0Iik7CisgIAorICAobmV3IFRlc3QoInN1YjMxNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC40NDQ0NDQ0NDQ1MDAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDQ0NDQ0NDQ1Iik7CisgIAorICAKKyAgKG5ldyBUZXN0KCJzdWIzMTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCItMS4wMDAwMDAwMEUrMTMiKTsKKyAgCisgIChuZXcgVGVzdCgic3ViMzE4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIi0xLjAwMDAwMDAwRSsxMyIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIzMTkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIi0xLjAwMDAwMDAwRSsxMyIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIzMjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCItOS45OTk5OTk5RSsxMiIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIzMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiLTkuOTk5OTk5M0UrMTIiKTsKKyAgCisgIC8vIHN5bW1ldHJ5OgorICAobmV3IFRlc3QoInN1YjMyMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDAwMDBFKzEzIik7CisgIAorICAobmV3IFRlc3QoInN1YjMyMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAwMDAwMDAwRSsxMyIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIzMjQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNzAwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDAwMDAwMDBFKzEzIik7CisgIAorICAobmV3IFRlc3QoInN1YjMyNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjkuOTk5OTk5OUUrMTIiKTsKKyAgCisgIChuZXcgVGVzdCgic3ViMzI2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjkuOTk5OTk5M0UrMTIiKTsKKyAgCisgIAorICAvLyBbc2FtZSB3aXRoIGZpeGVkIHBvaW50IGFyaXRobWV0aWNdCisgIChuZXcgVGVzdCgic3ViMDAxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoMykpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJzdWIwMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuNzUiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjQ1Iik7CisgIChuZXcgVGVzdCgic3ViMDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI4Iik7CisgIChuZXcgVGVzdCgic3ViMDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIiKTsKKyAgKG5ldyBUZXN0KCJzdWIwMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi03IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMi41IikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTkuNSIpOworICAobmV3IFRlc3QoInN1YjAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC43IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40Iik7CisgIChuZXcgVGVzdCgic3ViMDA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjMiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAiKTsKKyAgKG5ldyBUZXN0KCJzdWIwMDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjUiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjI1IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMCIpOworICAobmV3IFRlc3QoInN1YjAwOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMiIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwIik7CisgIAorICAobmV3IFRlc3QoInN1YjAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yMzQ1Njc4OSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMDAwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIzNDU2Nzg5Iik7CisgIAorICAobmV3IFRlc3QoInN1YjAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yMzQ1Njc4OSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMDAwODkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIzNDU2NzAwIik7CisgIAorICAobmV3IFRlc3QoInN1YjAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41NTU1NTU1NTU5IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDAwMDAwMDAxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41NTU1NTU1NTU4Iik7CisgIAorICAobmV3IFRlc3QoInN1YjAxMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41NTU1NTU1NTU5IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDAwMDAwMDA1IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41NTU1NTU1NTU0Iik7CisgIAorICAobmV3IFRlc3QoInN1YjAxNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC40NDQ0NDQ0NDQ0IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4xMTExMTExMTExIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4zMzMzMzMzMzMzIik7CisgIAorICAobmV3IFRlc3QoInN1YjAxNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wMDAwMDAwMDAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDAwMDAwMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTk5OTk5OTkwMCIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIwMTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNDQ0NDQ0NDQ0NDk5OSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQ0NDQ0NDQ0NDQ5OTkiKTsKKyAgCisgIChuZXcgVGVzdCgic3ViMDE3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NDQ0NDQ0NDUwMDAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40NDQ0NDQ0NDQ1MDAwIik7CisgIAorICAKKyAgKG5ldyBUZXN0KCJzdWIwMTgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItOTk5OTk5OTk5OTkzMCIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIwMTkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTk5OTk5OTk5OTkzMDAiKTsKKyAgCisgIChuZXcgVGVzdCgic3ViMDIwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItOTk5OTk5OTk5MzAwMCIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIwMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItOTk5OTk5OTkzMDAwMCIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIwMjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTk5OTk5OTkzMDAwMDAiKTsKKyAgCisgIC8vIHN5bW1ldHJ5OgorICAobmV3IFRlc3QoInN1YjAyMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjk5OTk5OTk5OTk5MzAiKTsKKyAgCisgIChuZXcgVGVzdCgic3ViMDI0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjk5OTk5OTk5OTkzMDAiKTsKKyAgCisgIChuZXcgVGVzdCgic3ViMDI1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCI5OTk5OTk5OTkzMDAwIik7CisgIAorICAobmV3IFRlc3QoInN1YjAyNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMDBlKzkiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI3MDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjk5OTk5OTk5MzAwMDAiKTsKKyAgCisgIChuZXcgVGVzdCgic3ViMDI3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwMCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjk5OTk5OTkzMDAwMDAiKTsKKyAgCisgIC8vIE1DCisgIChuZXcgVGVzdCgic3ViMDMwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwMGUrOSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjcwMDAwIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiOS45OTk5OTk5RSsxMiIpOworICAKKyAgKG5ldyBUZXN0KCJzdWIwMzEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAwZSs5IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNzAwMDAiKSxtYzYpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMDAwMEUrMTMiKTsKKyAgCisgIAorICAvLyBzb21lIG9mIHRoZSBuZXh0IGdyb3VwIGFyZSByZWFsbHkgY29uc3RydWN0b3IgdGVzdHMKKyAgKG5ldyBUZXN0KCJzdWIwNDAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJzdWIwNDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMCIpOworICAobmV3IFRlc3QoInN1YjA0MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwIik7CisgIChuZXcgVGVzdCgic3ViMDQzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMC4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMCIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJzdWIwNDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMC4wIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInN1YjA0NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi43Iik7CisgIChuZXcgVGVzdCgic3ViMDQ2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzLiIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi43Iik7CisgIChuZXcgVGVzdCgic3ViMDQ3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuMyIpLG1jZGVmKS50b1N0cmluZygpKS5lcXVhbHMoIjIuNyIpOworICAobmV3IFRlc3QoInN1YjA0OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMy4wMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4zIiksbWNkZWYpLnRvU3RyaW5nKCkpLmVxdWFscygiMi43MCIpOworICAobmV3IFRlc3QoInN1YjA0OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgic3ViMDUwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgic3ViMDUxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTMiKSxtY2RlZikudG9TdHJpbmcoKSkuZXF1YWxzKCI2Iik7CisgIChuZXcgVGVzdCgic3ViMDUyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjciKTsKKyAgKG5ldyBUZXN0KCJzdWIwNTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMuIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjciKTsKKyAgKG5ldyBUZXN0KCJzdWIwNTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4zIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMi43Iik7CisgIChuZXcgVGVzdCgic3ViMDU1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzLjAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjMiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjcwIik7CisgIChuZXcgVGVzdCgic3ViMDU2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJzdWIwNTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJzdWIwNTgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjYiKTsKKyAgCisgIC8vIHRoZSBhYm92ZSBhbGwgZnJvbSBhZGQ7IG1hc3NhZ2VkIGFuZCBleHRlbmRlZC4gIE5vdyBzb21lIG5ldyBvbmVzLi4uCisgIC8vIFtwYXJ0aWN1bGFybHkgaW1wb3J0YW50IGZvciBjb21wYXJpc29uc10KKyAgLy8gTkI6IC0xRS03IGJlbG93IHdlcmUgbm9uLWV4cG9uZW50cyBwcmUtQU5TSQorICAobmV3IFRlc3QoInN1YjA4MCIpKS5vaz0oIi0xRS03IikuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg0IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODkiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgic3ViMDgxIikpLm9rPSIwIi5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODUiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4OSIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJzdWIwODIiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NiIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInN1YjA4MyIpKS5vaz0iMCIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg3IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODkiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgic3ViMDg0IikpLm9rPSIwIi5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODgiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4OSIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJzdWIwODUiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4OSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInN1YjA4NiIpKS5vaz0iMCIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2NzkwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODkiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgic3ViMDg3IikpLm9rPSIwIi5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3OTEiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4OSIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJzdWIwODgiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc5MiIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg5IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInN1YjA4OSIpKS5vaz0iMCIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2NzkzIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODkiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgic3ViMDkwIikpLm9rPSIwIi5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3OTQiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4OSIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJzdWIwOTEiKSkub2s9KCItMUUtNyIpLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4MSIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg2IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInN1YjA5MiIpKS5vaz0oIi0xRS03IikuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2NzgyIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODYiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgic3ViMDkzIikpLm9rPSgiLTFFLTciKS5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODMiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NiIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJzdWIwOTQiKSkub2s9KCItMUUtNyIpLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg2IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInN1YjA5NSIpKS5vaz0iMCIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg1IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODYiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgic3ViMDk2IikpLm9rPSIwIi5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODYiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NiIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJzdWIwOTciKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NyIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg2IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInN1YjA5OCIpKS5vaz0iMCIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg4IikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODYiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgic3ViMDk5IikpLm9rPSIwIi5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODkiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc4NiIpLG1jZGVmKS50b1N0cmluZygpKTsKKyAgKG5ldyBUZXN0KCJzdWIxMDAiKSkub2s9IjAiLmVxdWFscygobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMC4yMzQ1Njc5MCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2Nzg2IiksbWNkZWYpLnRvU3RyaW5nKCkpOworICAobmV3IFRlc3QoInN1YjEwMSIpKS5vaz0iMCIuZXF1YWxzKChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwLjIzNDU2NzkxIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAuMjM0NTY3ODYiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgic3ViMTAyIikpLm9rPSIwIi5lcXVhbHMoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC45OTk5OTk5OTkiKSxtY2RlZikudG9TdHJpbmcoKSk7CisgIChuZXcgVGVzdCgic3ViMTAzIikpLm9rPSIwIi5lcXVhbHMoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC45OTk5OTk5OTkiKSkuc3VidHJhY3QoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLG1jZGVmKS50b1N0cmluZygpKTsKKyAgCisgIGFsaHM9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NTY3ODkwMDAwMCIpOworICBhcmhzPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTk5OTk5OTk5OTk5OSIpOworICAobmV3IFRlc3QoInN1YjExMCIpKS5vaz0oYWxocy5zdWJ0cmFjdChhcmhzLG1jMykudG9TdHJpbmcoKSkuZXF1YWxzKCIyLjNFKzEyIik7CisgIChuZXcgVGVzdCgic3ViMTExIikpLm9rPShhcmhzLnN1YnRyYWN0KGFsaHMsbWMzKS50b1N0cmluZygpKS5lcXVhbHMoIi0yLjNFKzEyIik7CisgIChuZXcgVGVzdCgic3ViMTEyIikpLm9rPShhbGhzLnN1YnRyYWN0KGFyaHMpLnRvU3RyaW5nKCkpLmVxdWFscygiMjM0NTY3ODkwMDAwMSIpOworICAobmV3IFRlc3QoInN1YjExMyIpKS5vaz0oYXJocy5zdWJ0cmFjdChhbGhzKS50b1N0cmluZygpKS5lcXVhbHMoIi0yMzQ1Njc4OTAwMDAxIik7CisgIAorICAvLyBhZGRpdGlvbmFsIHNjYWxlZCBhcml0aG1ldGljIHRlc3RzIFswLjk3IHByb2JsZW1dCisgIChuZXcgVGVzdCgic3ViMTIwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4xIik7CisgIChuZXcgVGVzdCgic3ViMTIxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi45Nzk4MyIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjk3OTgzIik7CisgIChuZXcgVGVzdCgic3ViMTIyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjkiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC45Iik7CisgIChuZXcgVGVzdCgic3ViMTIzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4xMDIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4xMDIiKTsKKyAgKG5ldyBUZXN0KCJzdWIxMjQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuNCIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjQiKTsKKyAgKG5ldyBUZXN0KCJzdWIxMjUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuMzA3IikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMzA3Iik7CisgIChuZXcgVGVzdCgic3ViMTI2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjQzODIyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuNDM4MjIiKTsKKyAgKG5ldyBUZXN0KCJzdWIxMjciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuOTExIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuOTExIik7CisgIChuZXcgVGVzdCgic3ViMTI4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4wMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjAyIik7CisgIChuZXcgVGVzdCgic3ViMTI5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4zOTIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4zOTIiKTsKKyAgKG5ldyBUZXN0KCJzdWIxMzAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuMjYiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4yNiIpOworICAobmV3IFRlc3QoInN1YjEzMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC41MSIpOworICAobmV3IFRlc3QoInN1YjEzMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4yMjM0IikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMjIzNCIpOworICAobmV3IFRlc3QoInN1YjEzMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4yIikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMiIpOworICAobmV3IFRlc3QoInN1YjEzNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIuMDAwOCIpKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjAwMDgiKTsKKyAgLy8gMC4gb24gbGVmdAorICAobmV3IFRlc3QoInN1YjE0MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS4xIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgVGVzdCgic3ViMTQxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS45Nzk4MyIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOTc5ODMiKTsKKyAgKG5ldyBUZXN0KCJzdWIxNDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0uOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOSIpOworICAobmV3IFRlc3QoInN1YjE0MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMTAyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xMDIiKTsKKyAgKG5ldyBUZXN0KCJzdWIxNDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0uNCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNCIpOworICAobmV3IFRlc3QoInN1YjE0NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS4zMDciKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMwNyIpOworICAobmV3IFRlc3QoInN1YjE0NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS40MzgyMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNDM4MjIiKTsKKyAgKG5ldyBUZXN0KCJzdWIxNDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0uOTExIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45MTEiKTsKKyAgKG5ldyBUZXN0KCJzdWIxNDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0uMDIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAyIik7CisgIChuZXcgVGVzdCgic3ViMTQ5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS4zOTIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjM5MiIpOworICAobmV3IFRlc3QoInN1YjE1MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS4yNiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMjYiKTsKKyAgKG5ldyBUZXN0KCJzdWIxNTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjUxIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41MSIpOworICAobmV3IFRlc3QoInN1YjE1MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS4yMjM0IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4yMjM0Iik7CisgIChuZXcgVGVzdCgic3ViMTUzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItLjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIiKTsKKyAgKG5ldyBUZXN0KCJzdWIxNTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0uMDAwOCIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwOCIpOworICAvLyBuZWdhdGl2ZXMgb2Ygc2FtZQorICAobmV3IFRlc3QoInN1YjE2MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0uMSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IFRlc3QoInN1YjE2MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItLjk3OTgzIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC45Nzk4MyIpOworICAobmV3IFRlc3QoInN1YjE2MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0uOSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOSIpOworICAobmV3IFRlc3QoInN1YjE2MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjEwMiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMTAyIik7CisgIChuZXcgVGVzdCgic3ViMTY0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS40IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC40Iik7CisgIChuZXcgVGVzdCgic3ViMTY1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS4zMDciKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjMwNyIpOworICAobmV3IFRlc3QoInN1YjE2NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zdWJ0cmFjdChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0uNDM4MjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjQzODIyIik7CisgIChuZXcgVGVzdCgic3ViMTY3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS45MTEiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjkxMSIpOworICAobmV3IFRlc3QoInN1YjE2OCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItLjAyIikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMiIpOworICAobmV3IFRlc3QoInN1YjE2OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMDAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItLjM5MiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMzkyIik7CisgIChuZXcgVGVzdCgic3ViMTcwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS4yNiIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMjYiKTsKKyAgKG5ldyBUZXN0KCJzdWIxNzEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC41MSIpKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNTEiKTsKKyAgKG5ldyBUZXN0KCJzdWIxNzIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItLjIyMzQiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIyMzQiKTsKKyAgKG5ldyBUZXN0KCJzdWIxNzMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuc3VidHJhY3QobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItLjIiKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjIiKTsKKyAgKG5ldyBUZXN0KCJzdWIxNzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi4wIikpLnN1YnRyYWN0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS4wMDA4IikpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDA4Iik7CisgIAorICAvLyBtb3JlIGZpeGVkLCBMSFMgc3dhcHMgW3JlYWxseSBzYW1lIGFzIHRlc3RjYXNlcyB1bmRlciBhZGRdCisgIChuZXcgVGVzdCgic3ViMTgwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNTYyNjdFLTEwIikpLnN1YnRyYWN0KHplcm8pLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMDAwMDA1NjI2NyIpOworICAobmV3IFRlc3QoInN1YjE4MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTU2MjY3RS01IikpLnN1YnRyYWN0KHplcm8pLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuNTYyNjciKTsKKyAgKG5ldyBUZXN0KCJzdWIxODIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMiIpKS5zdWJ0cmFjdCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi01NjIuNjciKTsKKyAgKG5ldyBUZXN0KCJzdWIxODMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMSIpKS5zdWJ0cmFjdCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi01NjI2LjciKTsKKyAgKG5ldyBUZXN0KCJzdWIxODUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01NjI2N0UtMCIpKS5zdWJ0cmFjdCh6ZXJvKS50b1N0cmluZygpKS5lcXVhbHMoIi01NjI2NyIpOworICAKKyAgdHJ5e2NoZWNrbnVsbDpkb3sKKyAgIHRlbi5zdWJ0cmFjdCgoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwpbnVsbCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiAkODMpeworICAgZmxhZz10cnVlOworICB9LypjaGVja251bGwqLworICAobmV3IFRlc3QoInN1YjIwMCIpKS5vaz1mbGFnOworICB0cnl7Y2hlY2tudWxsMjpkb3sKKyAgIHRlbi5zdWJ0cmFjdCh0ZW4sKGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCludWxsKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ4NCl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbnVsbDIqLworICAobmV3IFRlc3QoInN1YjIwMSIpKS5vaz1mbGFnOworICAKKyAgdHJ5e2NoZWNrZGlnaXRzOmRveworICAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLnN1YnRyYWN0KHRlbmxvbmcsbWNsZCk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ4NSl7YWU9JDg1OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlRvbyBtYW55IGRpZ2l0czoiKyIgIit0ZW5sb25nLnRvU3RyaW5nKCkpOworICB9LypjaGVja2RpZ2l0cyovCisgIChuZXcgVGVzdCgic3ViMjAyIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja2RpZ2l0czpkb3sKKyAgIHRlbmxvbmcuc3VidHJhY3QoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwuT05FLG1jbGQpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkODYpe2FlPSQ4NjsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJUb28gbWFueSBkaWdpdHM6IisiICIrdGVubG9uZy50b1N0cmluZygpKTsKKyAgfS8qY2hlY2tkaWdpdHMqLworICAobmV3IFRlc3QoInN1YjIwMyIpKS5vaz1mbGFnOworICBzdW1tYXJ5KCJzdWJ0cmFjdCIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qIE90aGVyIG1ldGhvZHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUgPGNvZGU+QmlnRGVjaW1hbC5ieXRlVmFsdWUoKTwvY29kZT4gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdieXRlVmFsdWUoKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBqYXZhLmxhbmcuU3RyaW5nIHY9bnVsbDsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgamF2YS5sYW5nLlN0cmluZyBiYWRzdHJpbmdzW107CisgIGludCBpPTA7CisgIGphdmEubGFuZy5TdHJpbmcgbm9ybT1udWxsOworICAKKyAgCisgIChuZXcgVGVzdCgiYnl2MDAxIikpLm9rPSgoKChieXRlKS0xMjgpKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMTI4IikpLmJ5dGVWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJieXYwMDIiKSkub2s9KCgwKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLmJ5dGVWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJieXYwMDMiKSkub2s9KCgxKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLmJ5dGVWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJieXYwMDQiKSkub2s9KCg5OSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTkiKSkuYnl0ZVZhbHVlKCkpOworICAobmV3IFRlc3QoImJ5djAwNSIpKS5vaz0oKDEyNykpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI3IikpLmJ5dGVWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJieXYwMDYiKSkub2s9KCgtMTI4KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjgiKSkuYnl0ZVZhbHVlKCkpOworICAobmV3IFRlc3QoImJ5djAwNyIpKS5vaz0oKC0xMjcpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyOSIpKS5ieXRlVmFsdWUoKSk7CisgIChuZXcgVGVzdCgiYnl2MDA4IikpLm9rPSgoMTI3KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMTI5IikpLmJ5dGVWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJieXYwMDkiKSkub2s9KCgxMjYpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xMzAiKSkuYnl0ZVZhbHVlKCkpOworICAobmV3IFRlc3QoImJ5djAxMCIpKS5vaz0oKGJtYXgpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYm1heCkpLmJ5dGVWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJieXYwMTEiKSkub2s9KChibWluKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGJtaW4pKS5ieXRlVmFsdWUoKSk7CisgIChuZXcgVGVzdCgiYnl2MDEyIikpLm9rPSgoYm5lZykpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChibmVnKSkuYnl0ZVZhbHVlKCkpOworICAobmV3IFRlc3QoImJ5djAxMyIpKS5vaz0oKGJ6ZXIpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYnplcikpLmJ5dGVWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJieXYwMTQiKSkub2s9KChicG9zKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGJwb3MpKS5ieXRlVmFsdWUoKSk7CisgIChuZXcgVGVzdCgiYnl2MDE1IikpLm9rPSgoYm1pbikpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChibWF4KzEpKS5ieXRlVmFsdWUoKSk7CisgIChuZXcgVGVzdCgiYnl2MDE2IikpLm9rPSgoYm1heCkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChibWluLTEpKS5ieXRlVmFsdWUoKSk7CisgIAorICAobmV3IFRlc3QoImJ5djAyMSIpKS5vaz0oKCgoYnl0ZSktMTI4KSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEyOCIpKS5ieXRlVmFsdWVFeGFjdCgpKTsKKyAgKG5ldyBUZXN0KCJieXYwMjIiKSkub2s9KCgwKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLmJ5dGVWYWx1ZUV4YWN0KCkpOworICAobmV3IFRlc3QoImJ5djAyMyIpKS5vaz0oKDEpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuYnl0ZVZhbHVlRXhhY3QoKSk7CisgIChuZXcgVGVzdCgiYnl2MDI0IikpLm9rPSgoOTkpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5IikpLmJ5dGVWYWx1ZUV4YWN0KCkpOworICAobmV3IFRlc3QoImJ5djAyNSIpKS5vaz0oKDEyNykpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTI3IikpLmJ5dGVWYWx1ZUV4YWN0KCkpOworICAobmV3IFRlc3QoImJ5djAyNiIpKS5vaz0oKGJtYXgpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYm1heCkpLmJ5dGVWYWx1ZUV4YWN0KCkpOworICAobmV3IFRlc3QoImJ5djAyNyIpKS5vaz0oKGJtaW4pKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYm1pbikpLmJ5dGVWYWx1ZUV4YWN0KCkpOworICAobmV3IFRlc3QoImJ5djAyOCIpKS5vaz0oKGJuZWcpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYm5lZykpLmJ5dGVWYWx1ZUV4YWN0KCkpOworICAobmV3IFRlc3QoImJ5djAyOSIpKS5vaz0oKGJ6ZXIpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYnplcikpLmJ5dGVWYWx1ZUV4YWN0KCkpOworICAobmV3IFRlc3QoImJ5djAzMCIpKS5vaz0oKGJwb3MpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYnBvcykpLmJ5dGVWYWx1ZUV4YWN0KCkpOworICB0cnl7CisgICB2PSItMTI5IjsKKyAgIChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodikpLmJ5dGVWYWx1ZUV4YWN0KCk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkODcpe2FlPSQ4NzsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK3YpOworICB9CisgIChuZXcgVGVzdCgiYnl2MTAwIikpLm9rPWZsYWc7CisgIHRyeXsKKyAgIHY9IjEyOCI7CisgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHYpKS5ieXRlVmFsdWVFeGFjdCgpOworICAgZmxhZz1mYWxzZTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDg4KXthZT0kODg7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiQ29udmVyc2lvbiBvdmVyZmxvdzoiKyIgIit2KTsKKyAgfQorICAobmV3IFRlc3QoImJ5djEwMSIpKS5vaz1mbGFnOworICB0cnl7CisgICB2PSIxLjUiOworICAgKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2KSkuYnl0ZVZhbHVlRXhhY3QoKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ4OSl7YWU9JDg5OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkRlY2ltYWwgcGFydCBub24temVybzoiKyIgIit2KTsKKyAgfQorICAobmV3IFRlc3QoImJ5djEwMiIpKS5vaz1mbGFnOworICAKKyAgYmFkc3RyaW5ncz1uZXcgamF2YS5sYW5nLlN0cmluZ1tdeyIxMjM0IiwobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGJtYXgpKS5hZGQob25lKS50b1N0cmluZygpLChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYm1pbikpLnN1YnRyYWN0KG9uZSkudG9TdHJpbmcoKSwiMTcwIiwiMjcwIiwiMzcwIiwiNDcwIiwiNTcwIiwiNjcwIiwiNzcwIiwiODcwIiwiOTcwIiwiLTE3MCIsIi0yNzAiLCItMzcwIiwiLTQ3MCIsIi01NzAiLCItNjcwIiwiLTc3MCIsIi04NzAiLCItOTcwIiwobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGJtaW4pKS5tdWx0aXBseSh0d28pLnRvU3RyaW5nKCksKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChibWF4KSkubXVsdGlwbHkodHdvKS50b1N0cmluZygpLChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoYm1pbikpLm11bHRpcGx5KHRlbikudG9TdHJpbmcoKSwobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGJtYXgpKS5tdWx0aXBseSh0ZW4pLnRvU3RyaW5nKCksIi0xMjM0In07IC8vIDIyMAorICAvLyAyMjEKKyAgLy8gMjIyCisgIC8vIDIyMworICAvLyAyMjQKKyAgLy8gMjI1CisgIC8vIDIyNgorICAvLyAyMjcKKyAgLy8gMjI4CisgIC8vIDIyOQorICAvLyAyMzAKKyAgLy8gMjMxCisgIC8vIDIzMgorICAvLyAyMzMKKyAgLy8gMjM0CisgIC8vIDIzNQorICAvLyAyMzYKKyAgLy8gMjM3CisgIC8vIDIzOAorICAvLyAyMzkKKyAgLy8gMjQwCisgIC8vIDI0MQorICAvLyAyNDIKKyAgLy8gMjQzCisgIC8vIDI0NAorICAvLyAyNDUKKyAge2ludCAkOTA9YmFkc3RyaW5ncy5sZW5ndGg7aT0wO2k6Zm9yKDskOTA+MDskOTAtLSxpKyspeworICAgdHJ5eworICAgIHY9YmFkc3RyaW5nc1tpXTsKKyAgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHYpKS5ieXRlVmFsdWVFeGFjdCgpOworICAgIGZsYWc9ZmFsc2U7CisgICB9CisgICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDkxKXthZT0kOTE7CisgICAgbm9ybT0obmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHYpKS50b1N0cmluZygpOworICAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK25vcm0pOworICAgfQorICAgKG5ldyBUZXN0KCJieXYiKygyMjAraSkpKS5vaz1mbGFnOworICAgfQorICB9LyppKi8KKyAgCisgIHN1bW1hcnkoImJ5dGVWYWx1ZSsiKTsKKyAgcmV0dXJuO30KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI2NvbXBhcmVUbyhqYXZhLmxhbmcuT2JqZWN0KX0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdjb21wYXJldG9PYmooKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBsb25nMTsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgbG9uZzI7CisgIAorICBkPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgxNyk7CisgIChuZXcgVGVzdCgiY3RvMDAxIikpLm9rPShkLmNvbXBhcmVUbygoamF2YS5sYW5nLk9iamVjdCkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDY2KSkpKT09KC0xKTsKKyAgKG5ldyBUZXN0KCJjdG8wMDIiKSkub2s9KGQuY29tcGFyZVRvKChqYXZhLmxhbmcuT2JqZWN0KSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDEwKSkuYWRkKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCg3KSkpKSk9PTA7CisgIChuZXcgVGVzdCgiY3RvMDAzIikpLm9rPShkLmNvbXBhcmVUbygoamF2YS5sYW5nLk9iamVjdCkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDEwKSkpKT09MTsKKyAgbG9uZzE9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NTY3ODkwMyIpOworICBsb25nMj1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1Njc4OTAwIik7CisgIChuZXcgVGVzdCgiY3RvMDA0IikpLm9rPShsb25nMS5jb21wYXJlVG8oKGphdmEubGFuZy5PYmplY3QpbG9uZzIpKT09MTsKKyAgKG5ldyBUZXN0KCJjdG8wMDUiKSkub2s9KGxvbmcyLmNvbXBhcmVUbygoamF2YS5sYW5nLk9iamVjdClsb25nMSkpPT0oLTEpOworICAobmV3IFRlc3QoImN0bzAwNiIpKS5vaz0obG9uZzIuY29tcGFyZVRvKChqYXZhLmxhbmcuT2JqZWN0KWxvbmcyKSk9PTA7CisgIHRyeXsKKyAgIGQuY29tcGFyZVRvKChqYXZhLmxhbmcuT2JqZWN0KW51bGwpOworICAgZmxhZz1mYWxzZTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLk51bGxQb2ludGVyRXhjZXB0aW9uICQ5Mil7CisgICBmbGFnPXRydWU7IC8vIHNob3VsZCBnZXQgaGVyZQorICB9CisgIChuZXcgVGVzdCgiY3RvMTAxIikpLm9rPWZsYWc7CisgIHRyeXsKKyAgIGQuY29tcGFyZVRvKChqYXZhLmxhbmcuT2JqZWN0KSJmb28iKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5DbGFzc0Nhc3RFeGNlcHRpb24gJDkzKXsKKyAgIGZsYWc9dHJ1ZTsgLy8gc2hvdWxkIGdldCBoZXJlCisgIH0KKyAgKG5ldyBUZXN0KCJjdG8xMDIiKSkub2s9ZmxhZzsKKyAgc3VtbWFyeSgiY29tcGFyZVRvKE9iaikiKTsKKyAgcmV0dXJuO30KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI2RvdWJsZVZhbHVlfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ2RvdWJsZXZhbHVlKCl7CisgIGphdmEubGFuZy5TdHJpbmcgdmFsOworICAvLyAxOTk5LjAzLjA3IEluZmluaXRpZXMgbm8gbG9uZ2VyIGVycm9ycworICB2YWw9Ii0xIjsKKyAgKG5ldyBUZXN0KCJkb3YwMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodmFsKSkuZG91YmxlVmFsdWUoKSk9PSgobmV3IGphdmEubGFuZy5Eb3VibGUodmFsKSkuZG91YmxlVmFsdWUoKSk7CisgIHZhbD0iLTAuMSI7CisgIChuZXcgVGVzdCgiZG92MDAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHZhbCkpLmRvdWJsZVZhbHVlKCkpPT0oKG5ldyBqYXZhLmxhbmcuRG91YmxlKHZhbCkpLmRvdWJsZVZhbHVlKCkpOworICB2YWw9IjAiOworICAobmV3IFRlc3QoImRvdjAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2YWwpKS5kb3VibGVWYWx1ZSgpKT09KChuZXcgamF2YS5sYW5nLkRvdWJsZSh2YWwpKS5kb3VibGVWYWx1ZSgpKTsKKyAgdmFsPSIwLjEiOworICAobmV3IFRlc3QoImRvdjAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2YWwpKS5kb3VibGVWYWx1ZSgpKT09KChuZXcgamF2YS5sYW5nLkRvdWJsZSh2YWwpKS5kb3VibGVWYWx1ZSgpKTsKKyAgdmFsPSIxIjsKKyAgKG5ldyBUZXN0KCJkb3YwMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodmFsKSkuZG91YmxlVmFsdWUoKSk9PSgobmV3IGphdmEubGFuZy5Eb3VibGUodmFsKSkuZG91YmxlVmFsdWUoKSk7CisgIHZhbD0iMWUxMDAwIjsKKyAgKG5ldyBUZXN0KCJkb3YwMDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodmFsKSkuZG91YmxlVmFsdWUoKSk9PWphdmEubGFuZy5Eb3VibGUuUE9TSVRJVkVfSU5GSU5JVFk7CisgIHZhbD0iLTFlMTAwMCI7CisgIChuZXcgVGVzdCgiZG92MDA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHZhbCkpLmRvdWJsZVZhbHVlKCkpPT1qYXZhLmxhbmcuRG91YmxlLk5FR0FUSVZFX0lORklOSVRZOworICBzdW1tYXJ5KCJkb3VibGVWYWx1ZSIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjZXF1YWxzfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ2VxdWFscygpeworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkOworICBkPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgxNyk7CisgIChuZXcgVGVzdCgiZXF1MDAxIikpLm9rPSghKGQuZXF1YWxzKChqYXZhLmxhbmcuT2JqZWN0KW51bGwpKSk7CisgIChuZXcgVGVzdCgiZXF1MDAyIikpLm9rPSghKGQuZXF1YWxzKChqYXZhLmxhbmcuT2JqZWN0KSJmb28iKSkpOworICAobmV3IFRlc3QoImVxdTAwMyIpKS5vaz0oIShkLmVxdWFscygoamF2YS5sYW5nLk9iamVjdCkobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDY2KSkpKSk7CisgIChuZXcgVGVzdCgiZXF1MDA0IikpLm9rPWQuZXF1YWxzKChqYXZhLmxhbmcuT2JqZWN0KWQpOworICAobmV3IFRlc3QoImVxdTAwNSIpKS5vaz1kLmVxdWFscygoamF2YS5sYW5nLk9iamVjdCkoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgxMCkpLmFkZChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoNykpKSk7CisgIHN1bW1hcnkoImVxdWFscyIpOworICByZXR1cm47fQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjZmxvYXRWYWx1ZX0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdmbG9hdHZhbHVlKCl7CisgIGphdmEubGFuZy5TdHJpbmcgdmFsOworICAvLyAxOTk5LjAzLjA3IEluZmluaXRpZXMgbm8gbG9uZ2VyIGVycm9ycworICB2YWw9Ii0xIjsKKyAgKG5ldyBUZXN0KCJmbHYwMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodmFsKSkuZmxvYXRWYWx1ZSgpKT09KChuZXcgamF2YS5sYW5nLkZsb2F0KHZhbCkpLmZsb2F0VmFsdWUoKSk7CisgIHZhbD0iLTAuMSI7CisgIChuZXcgVGVzdCgiZmx2MDAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHZhbCkpLmZsb2F0VmFsdWUoKSk9PSgobmV3IGphdmEubGFuZy5GbG9hdCh2YWwpKS5mbG9hdFZhbHVlKCkpOworICB2YWw9IjAiOworICAobmV3IFRlc3QoImZsdjAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2YWwpKS5mbG9hdFZhbHVlKCkpPT0oKG5ldyBqYXZhLmxhbmcuRmxvYXQodmFsKSkuZmxvYXRWYWx1ZSgpKTsKKyAgdmFsPSIwLjEiOworICAobmV3IFRlc3QoImZsdjAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2YWwpKS5mbG9hdFZhbHVlKCkpPT0oKG5ldyBqYXZhLmxhbmcuRmxvYXQodmFsKSkuZmxvYXRWYWx1ZSgpKTsKKyAgdmFsPSIxIjsKKyAgKG5ldyBUZXN0KCJmbHYwMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodmFsKSkuZmxvYXRWYWx1ZSgpKT09KChuZXcgamF2YS5sYW5nLkZsb2F0KHZhbCkpLmZsb2F0VmFsdWUoKSk7CisgIHZhbD0iMWUyMDAiOworICAobmV3IFRlc3QoImZsdjAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2YWwpKS5mbG9hdFZhbHVlKCkpPT1qYXZhLmxhbmcuRmxvYXQuUE9TSVRJVkVfSU5GSU5JVFk7CisgIHZhbD0iLTFlMjAwIjsKKyAgKG5ldyBUZXN0KCJmbHYwMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodmFsKSkuZmxvYXRWYWx1ZSgpKT09amF2YS5sYW5nLkZsb2F0Lk5FR0FUSVZFX0lORklOSVRZOworICB2YWw9IjFlMTAwMCI7CisgIChuZXcgVGVzdCgiZmx2MDA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHZhbCkpLmZsb2F0VmFsdWUoKSk9PWphdmEubGFuZy5GbG9hdC5QT1NJVElWRV9JTkZJTklUWTsKKyAgdmFsPSItMWUxMDAwIjsKKyAgKG5ldyBUZXN0KCJmbHYwMDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodmFsKSkuZmxvYXRWYWx1ZSgpKT09amF2YS5sYW5nLkZsb2F0Lk5FR0FUSVZFX0lORklOSVRZOworICBzdW1tYXJ5KCJmbG9hdFZhbHVlIik7CisgIHJldHVybjt9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNmb3JtYXR9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnZm9ybWF0KCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgaW50IGVuZzsKKyAgaW50IHNjaTsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgZDA0OworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkMDU7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGQwNjsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgZDE1OworICBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZT1udWxsOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkMDUwOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkMTUwOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBtMDUwOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBtMTUwOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkMDUxOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkMTUxOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkMDAwOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkNTAwOworICBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiBhZT1udWxsOworICAvLyAxOTk5LjAyLjA5IG5vdyBvbmx5IHR3byBzaWduYXR1cmVzIGZvciBmb3JtYXQoKSwgc28gc29tZSB0ZXN0cyBiZWxvdworICAvLyAgICAgICAgICAgIG1heSBub3cgYmUgcmVkdW5kYW50CisgIAorICAobmV3IFRlc3QoImZvcjAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIuMyIpKS5mb3JtYXQoLTEsLTEpKS5lcXVhbHMoIjEyLjMiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xMi43MyIpKS5mb3JtYXQoLTEsLTEpKS5lcXVhbHMoIi0xMi43MyIpOworICAobmV3IFRlc3QoImZvcjAwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDAiKSkuZm9ybWF0KC0xLC0xKSkuZXF1YWxzKCIwLjAwMCIpOworICAobmV3IFRlc3QoImZvcjAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiM0UrMyIpKS5mb3JtYXQoLTEsLTEpKS5lcXVhbHMoIjMwMDAiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMiKSkuZm9ybWF0KDQsLTEpKS5lcXVhbHMoIiAgIDMiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuNzMiKSkuZm9ybWF0KDQsMCkpLmVxdWFscygiICAgMiIpOworICAobmV3IFRlc3QoImZvcjAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS43MyIpKS5mb3JtYXQoNCwxKSkuZXF1YWxzKCIgICAxLjciKTsKKyAgKG5ldyBUZXN0KCJmb3IwMDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuNzUiKSkuZm9ybWF0KDQsMSkpLmVxdWFscygiICAgMS44Iik7CisgIChuZXcgVGVzdCgiZm9yMDA5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjUiKSkuZm9ybWF0KDQsMSkpLmVxdWFscygiICAgMC41Iik7CisgIChuZXcgVGVzdCgiZm9yMDEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1IikpLmZvcm1hdCg0LDEpKS5lcXVhbHMoIiAgIDAuMSIpOworICAobmV3IFRlc3QoImZvcjAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNCIpKS5mb3JtYXQoNCwxKSkuZXF1YWxzKCIgICAwLjAiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuZm9ybWF0KDQsMCkpLmVxdWFscygiICAgMCIpOworICAobmV3IFRlc3QoImZvcjAxMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5mb3JtYXQoNCwxKSkuZXF1YWxzKCIgICAwLjAiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMTQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuZm9ybWF0KDQsMikpLmVxdWFscygiICAgMC4wMCIpOworICAobmV3IFRlc3QoImZvcjAxNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5mb3JtYXQoNCwzKSkuZXF1YWxzKCIgICAwLjAwMCIpOworICAobmV3IFRlc3QoImZvcjAxNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5mb3JtYXQoNCw0KSkuZXF1YWxzKCIgICAwLjAwMDAiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLmZvcm1hdCg0LDApKS5lcXVhbHMoIiAgIDAiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMTgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLmZvcm1hdCg0LDEpKS5lcXVhbHMoIiAgIDAuMCIpOworICAobmV3IFRlc3QoImZvcjAxOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuZm9ybWF0KDQsMikpLmVxdWFscygiICAgMC4wMSIpOworICAobmV3IFRlc3QoImZvcjAyMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDQiKSkuZm9ybWF0KDQsMikpLmVxdWFscygiICAgMC4wMCIpOworICAobmV3IFRlc3QoImZvcjAyMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuZm9ybWF0KDQsMykpLmVxdWFscygiICAgMC4wMDUiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLmZvcm1hdCg0LDQpKS5lcXVhbHMoIiAgIDAuMDA1MCIpOworICAKKyAgKG5ldyBUZXN0KCJmb3IwMjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuNzMiKSkuZm9ybWF0KDQsMikpLmVxdWFscygiICAgMS43MyIpOworICAobmV3IFRlc3QoImZvcjAyNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS43MyIpKS5mb3JtYXQoNCwzKSkuZXF1YWxzKCIgICAxLjczMCIpOworICAobmV3IFRlc3QoImZvcjAyNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLS43NiIpKS5mb3JtYXQoNCwxKSkuZXF1YWxzKCIgIC0wLjgiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMjYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xMi43MyIpKS5mb3JtYXQoLTEsNCkpLmVxdWFscygiLTEyLjczMDAiKTsKKyAgCisgIChuZXcgVGVzdCgiZm9yMDI3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzLjAzIikpLmZvcm1hdCg0LC0xKSkuZXF1YWxzKCIgICAzLjAzIik7CisgIChuZXcgVGVzdCgiZm9yMDI4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIzLjAzIikpLmZvcm1hdCg0LDEpKS5lcXVhbHMoIiAgIDMuMCIpOworICAobmV3IFRlc3QoImZvcjAyOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMy4wMyIpKS5mb3JtYXQoNCwtMSwzLC0xLC0xLC0xKSkuZXF1YWxzKCIgICAzLjAzICAgICAiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMzAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjMuMDMiKSkuZm9ybWF0KC0xLC0xLDMsLTEsLTEsLTEpKS5lcXVhbHMoIjMuMDMgICAgICIpOworICAobmV3IFRlc3QoImZvcjAzMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNzMiKSkuZm9ybWF0KC0xLC0xLC0xLDQsLTEsLTEpKS5lcXVhbHMoIjEuMjM0NTczRSs0Iik7CisgIChuZXcgVGVzdCgiZm9yMDMyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NS43MyIpKS5mb3JtYXQoLTEsLTEsLTEsNSwtMSwtMSkpLmVxdWFscygiMTIzNDUuNzMiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMzMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1LjczIikpLmZvcm1hdCgtMSwtMSwtMSw2LC0xLC0xKSkuZXF1YWxzKCIxMjM0NS43MyIpOworICAKKyAgKG5ldyBUZXN0KCJmb3IwMzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1LjczIikpLmZvcm1hdCgtMSw4LC0xLDMsLTEsLTEpKS5lcXVhbHMoIjEuMjM0NTczMDBFKzQiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMzUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1LjczIikpLmZvcm1hdCgtMSw3LC0xLDMsLTEsLTEpKS5lcXVhbHMoIjEuMjM0NTczMEUrNCIpOworICAobmV3IFRlc3QoImZvcjAzNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNzMiKSkuZm9ybWF0KC0xLDYsLTEsMywtMSwtMSkpLmVxdWFscygiMS4yMzQ1NzNFKzQiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMzciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1LjczIikpLmZvcm1hdCgtMSw1LC0xLDMsLTEsLTEpKS5lcXVhbHMoIjEuMjM0NTdFKzQiKTsKKyAgKG5ldyBUZXN0KCJmb3IwMzgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1LjczIikpLmZvcm1hdCgtMSw0LC0xLDMsLTEsLTEpKS5lcXVhbHMoIjEuMjM0NkUrNCIpOworICAobmV3IFRlc3QoImZvcjAzOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNzMiKSkuZm9ybWF0KC0xLDMsLTEsMywtMSwtMSkpLmVxdWFscygiMS4yMzVFKzQiKTsKKyAgKG5ldyBUZXN0KCJmb3IwNDAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1LjczIikpLmZvcm1hdCgtMSwyLC0xLDMsLTEsLTEpKS5lcXVhbHMoIjEuMjNFKzQiKTsKKyAgKG5ldyBUZXN0KCJmb3IwNDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1LjczIikpLmZvcm1hdCgtMSwxLC0xLDMsLTEsLTEpKS5lcXVhbHMoIjEuMkUrNCIpOworICAobmV3IFRlc3QoImZvcjA0MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNzMiKSkuZm9ybWF0KC0xLDAsLTEsMywtMSwtMSkpLmVxdWFscygiMUUrNCIpOworICAKKyAgKG5ldyBUZXN0KCJmb3IwNDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5OTk5Ljk5IikpLmZvcm1hdCgtMSw2LC0xLDMsLTEsLTEpKS5lcXVhbHMoIjkuOTk5OTk5RSs0Iik7CisgIChuZXcgVGVzdCgiZm9yMDQ0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTk5OS45OSIpKS5mb3JtYXQoLTEsNSwtMSwzLC0xLC0xKSkuZXF1YWxzKCIxLjAwMDAwRSs1Iik7CisgIChuZXcgVGVzdCgiZm9yMDQ1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTk5OS45OSIpKS5mb3JtYXQoLTEsMiwtMSwzLC0xLC0xKSkuZXF1YWxzKCIxLjAwRSs1Iik7CisgIChuZXcgVGVzdCgiZm9yMDQ2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTk5OS45OSIpKS5mb3JtYXQoLTEsMCwtMSwzLC0xLC0xKSkuZXF1YWxzKCIxRSs1Iik7CisgIChuZXcgVGVzdCgiZm9yMDQ3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OTk5OS45OSIpKS5mb3JtYXQoMywwLC0xLDMsLTEsLTEpKS5lcXVhbHMoIiAgMUUrNSIpOworICAKKyAgKG5ldyBUZXN0KCJmb3IwNDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1LjczIikpLmZvcm1hdCgtMSwtMSwyLDIsLTEsLTEpKS5lcXVhbHMoIjEuMjM0NTczRSswNCIpOworICAobmV3IFRlc3QoImZvcjA0OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNzMiKSkuZm9ybWF0KC0xLDMsLTEsMCwtMSwtMSkpLmVxdWFscygiMS4yMzVFKzQiKTsKKyAgKG5ldyBUZXN0KCJmb3IwNTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMjM0NTczIikpLmZvcm1hdCgtMSwzLC0xLDAsLTEsLTEpKS5lcXVhbHMoIjEuMjM1Iik7CisgIChuZXcgVGVzdCgiZm9yMDUxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjMuNDUiKSkuZm9ybWF0KC0xLDMsMiwwLC0xLC0xKSkuZXF1YWxzKCIxLjIzNUUrMDIiKTsKKyAgCisgIChuZXcgVGVzdCgiZm9yMDUyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQ0NCIpKS5mb3JtYXQoLTEsMCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoImZvcjA1MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuNDQ0IikpLmZvcm1hdCgtMSwwKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgiZm9yMDU0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjQiKSkuZm9ybWF0KC0xLDApKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJmb3IwNTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjQiKSkuZm9ybWF0KC0xLDApKS5lcXVhbHMoIjAiKTsKKyAgCisgIGVuZz1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuRU5HSU5FRVJJTkc7CisgIHNjaT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQzsKKyAgKG5ldyBUZXN0KCJmb3IwNjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQuNSIpKS5mb3JtYXQoLTEsMywyLDAsZW5nLC0xKSkuZXF1YWxzKCIxLjIzNUUrMDMiKTsKKyAgKG5ldyBUZXN0KCJmb3IwNjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1IikpLmZvcm1hdCgtMSwzLDMsMCxlbmcsLTEpKS5lcXVhbHMoIjEyLjM0NUUrMDAzIik7CisgIChuZXcgVGVzdCgiZm9yMDYyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NSIpKS5mb3JtYXQoLTEsMywzLDAsc2NpLC0xKSkuZXF1YWxzKCIxLjIzNUUrMDA0Iik7CisgIChuZXcgVGVzdCgiZm9yMDYzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0LjUiKSkuZm9ybWF0KDQsMywyLDAsZW5nLC0xKSkuZXF1YWxzKCIgICAxLjIzNUUrMDMiKTsKKyAgKG5ldyBUZXN0KCJmb3IwNjQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1IikpLmZvcm1hdCg1LDMsMywwLGVuZywtMSkpLmVxdWFscygiICAgMTIuMzQ1RSswMDMiKTsKKyAgKG5ldyBUZXN0KCJmb3IwNjUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1IikpLmZvcm1hdCg2LDMsMywwLHNjaSwtMSkpLmVxdWFscygiICAgICAxLjIzNUUrMDA0Iik7CisgIAorICAobmV3IFRlc3QoImZvcjA2NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4yMzQ1IikpLmZvcm1hdCgtMSwzLDIsMCwtMSwtMSkpLmVxdWFscygiMS4yMzUgICAgIik7CisgIChuZXcgVGVzdCgiZm9yMDY3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NS43MyIpKS5mb3JtYXQoLTEsLTEsMyw2LC0xLC0xKSkuZXF1YWxzKCIxMjM0NS43MyAgICAgIik7CisgIChuZXcgVGVzdCgiZm9yMDY4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NWUrNSIpKS5mb3JtYXQoLTEsMCkpLmVxdWFscygiMTIzNDUwMDAwMCIpOworICAobmV3IFRlc3QoImZvcjA2OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDVlKzUiKSkuZm9ybWF0KC0xLDEpKS5lcXVhbHMoIjEyMzQ1MDAwMDAuMCIpOworICAobmV3IFRlc3QoImZvcjA3MCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDVlKzUiKSkuZm9ybWF0KC0xLDIpKS5lcXVhbHMoIjEyMzQ1MDAwMDAuMDAiKTsKKyAgKG5ldyBUZXN0KCJmb3IwNzEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1ZSs1IikpLmZvcm1hdCgtMSwzKSkuZXF1YWxzKCIxMjM0NTAwMDAwLjAwMCIpOworICAobmV3IFRlc3QoImZvcjA3MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDVlKzUiKSkuZm9ybWF0KC0xLDQpKS5lcXVhbHMoIjEyMzQ1MDAwMDAuMDAwMCIpOworICAKKyAgLy8gc29tZSBmcm9tIEFOU0kgRGFsbGFzIFtOb3YgMTk5OF0KKyAgKG5ldyBUZXN0KCJmb3IwNzMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5Ljk5OSIpKS5mb3JtYXQoLTEsMiwtMSwyLC0xLC0xKSkuZXF1YWxzKCIxMDAuMDAiKTsKKyAgKG5ldyBUZXN0KCJmb3IwNzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuOTk5OTkiKSkuZm9ybWF0KC0xLDQsMiwyLC0xLC0xKSkuZXF1YWxzKCIxLjAwMDAgICAgIik7CisgIAorICAvLyB0cnkgc29tZSByb3VuZGluZyBtb2RlcyBbZGVmYXVsdCBST1VORF9IQUxGX1VQIHdpZGVseSB0ZXN0ZWQgYWJvdmVdCisgIC8vIHRoZSBmaXJzdCBmZXcgYWxzbyB0ZXN0cyB0aGF0IGRlZmF1bHRzIGFyZSBhY2NlcHRlZCBmb3IgdGhlIG90aGVycworICBkMDQ9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA0Iik7CisgIGQwNT1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDUiKTsKKyAgZDA2PW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wNiIpOworICBkMTU9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjE1Iik7CisgIChuZXcgVGVzdCgiZm9yMDgwIikpLm9rPShkMDUuZm9ybWF0KC0xLDEpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IFRlc3QoImZvcjA4MSIpKS5vaz0oZDA1LmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJmb3IwODIiKSkub2s9KGQwNS5mb3JtYXQoLTEsMSwtMSwtMSwtMSwtMSkpLmVxdWFscygiMC4xIik7CisgIChuZXcgVGVzdCgiZm9yMDgzIikpLm9rPShkMDUuZm9ybWF0KC0xLC0xLC0xLC0xLC0xLC0xKSkuZXF1YWxzKCIwLjA1Iik7CisgIChuZXcgVGVzdCgiZm9yMDg0IikpLm9rPShkMDUuZm9ybWF0KC0xLC0xKSkuZXF1YWxzKCIwLjA1Iik7CisgIHRyeXsKKyAgIGQwNS5mb3JtYXQoLTEsLTEsLTEsLTEsLTEsMzApOyAvLyBiYWQgbW9kZQorICAgZmxhZz1mYWxzZTsgLy8gc2hvdWxkbid0IGdldCBoZXJlCisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gJDk0KXtpYWU9JDk0OworICAgZmxhZz0oaWFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJCYWQgYXJndW1lbnQgNiB0byBmb3JtYXQ6IDMwIik7CisgIH0KKyAgKG5ldyBUZXN0KCJmb3IwODUiKSkub2s9ZmxhZzsKKyAgCisgIChuZXcgVGVzdCgiZm9yMDkwIikpLm9rPShkMDQuZm9ybWF0KC0xLDEpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoImZvcjA5MSIpKS5vaz0oZDA2LmZvcm1hdCgtMSwxKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJmb3IwOTIiKSkub2s9KGQwNC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJmb3IwOTMiKSkub2s9KGQwNS5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJmb3IwOTQiKSkub2s9KGQwNi5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKSkuZXF1YWxzKCIwLjEiKTsKKyAgCisgIChuZXcgVGVzdCgiZm9yMDk1IikpLm9rPShkMDQuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgiZm9yMDk2IikpLm9rPShkMDUuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgiZm9yMDk3IikpLm9rPShkMDYuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikpLmVxdWFscygiMC4xIik7CisgIChuZXcgVGVzdCgiZm9yMDk4IikpLm9rPShkMTUuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikpLmVxdWFscygiMC4yIik7CisgIGQwNTA9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA1MCIpOworICBkMTUwPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4xNTAiKTsKKyAgKG5ldyBUZXN0KCJmb3IwOTkiKSkub2s9KGQwNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgiZm9yMTAwIikpLm9rPShkMTUwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pKS5lcXVhbHMoIjAuMiIpOworICBtMDUwPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMDUwIik7CisgIG0xNTA9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4xNTAiKTsKKyAgKG5ldyBUZXN0KCJmb3IxMDEiKSkub2s9KG0wNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgiZm9yMTAyIikpLm9rPShtMTUwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pKS5lcXVhbHMoIi0wLjIiKTsKKyAgZDA1MT1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDUxIik7CisgIGQxNTE9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjE1MSIpOworICAobmV3IFRlc3QoImZvcjEwMyIpKS5vaz0oZDA1MS5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJmb3IxMDQiKSkub2s9KGQxNTEuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikpLmVxdWFscygiMC4yIik7CisgIAorICAobmV3IFRlc3QoImZvcjEwNSIpKS5vaz0obTA1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfQ0VJTElORykpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgiZm9yMTA2IikpLm9rPShtMTUwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9DRUlMSU5HKSkuZXF1YWxzKCItMC4xIik7CisgIChuZXcgVGVzdCgiZm9yMTA3IikpLm9rPShkMDUwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9DRUlMSU5HKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJmb3IxMDgiKSkub2s9KGQxNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0NFSUxJTkcpKS5lcXVhbHMoIjAuMiIpOworICAKKyAgKG5ldyBUZXN0KCJmb3IxMDkiKSkub2s9KG0wNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0ZMT09SKSkuZXF1YWxzKCItMC4xIik7CisgIChuZXcgVGVzdCgiZm9yMTEwIikpLm9rPShtMTUwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUikpLmVxdWFscygiLTAuMiIpOworICAobmV3IFRlc3QoImZvcjExMSIpKS5vaz0oZDA1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRkxPT1IpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoImZvcjExMiIpKS5vaz0oZDE1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRkxPT1IpKS5lcXVhbHMoIjAuMSIpOworICAKKyAgKG5ldyBUZXN0KCJmb3IxMTMiKSkub2s9KG0wNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VQKSkuZXF1YWxzKCItMC4xIik7CisgIChuZXcgVGVzdCgiZm9yMTE0IikpLm9rPShtMTUwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VUCkpLmVxdWFscygiLTAuMiIpOworICAobmV3IFRlc3QoImZvcjExNSIpKS5vaz0oZDA1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVVApKS5lcXVhbHMoIjAuMSIpOworICAobmV3IFRlc3QoImZvcjExNiIpKS5vaz0oZDE1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVVApKS5lcXVhbHMoIjAuMiIpOworICAKKyAgKG5ldyBUZXN0KCJmb3IxMTciKSkub2s9KG0wNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0RPV04pKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoImZvcjExOCIpKS5vaz0obTE1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRE9XTikpLmVxdWFscygiLTAuMSIpOworICAobmV3IFRlc3QoImZvcjExOSIpKS5vaz0oZDA1MC5mb3JtYXQoLTEsMSwtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRE9XTikpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgiZm9yMTIwIikpLm9rPShkMTUwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9ET1dOKSkuZXF1YWxzKCIwLjEiKTsKKyAgCisgIGQwMDA9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwMCIpOworICBkNTAwPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41MDAiKTsKKyAgKG5ldyBUZXN0KCJmb3IxMjEiKSkub2s9KGQwMDAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJmb3IxMjIiKSkub2s9KGQwMDAuZm9ybWF0KC0xLDIsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZKSkuZXF1YWxzKCIwLjAwIik7CisgIChuZXcgVGVzdCgiZm9yMTIzIikpLm9rPShkMDAwLmZvcm1hdCgtMSwzLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWSkpLmVxdWFscygiMC4wMDAiKTsKKyAgdHJ5eyAvLyB0aGlzIHNob3VsZCB0cmFwLi4KKyAgIGQwNTAuZm9ybWF0KC0xLDEsLTEsLTEsLTEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQ5NSl7YWU9JDk1OworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlJvdW5kaW5nIG5lY2Vzc2FyeSIpOworICB9CisgIChuZXcgVGVzdCgiZm9yMTI0IikpLm9rPWZsYWc7CisgIChuZXcgVGVzdCgiZm9yMTI1IikpLm9rPShkMDUwLmZvcm1hdCgtMSwyLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWSkpLmVxdWFscygiMC4wNSIpOworICAobmV3IFRlc3QoImZvcjEyNiIpKS5vaz0oZDA1MC5mb3JtYXQoLTEsMywtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVU5ORUNFU1NBUlkpKS5lcXVhbHMoIjAuMDUwIik7CisgIChuZXcgVGVzdCgiZm9yMTI3IikpLm9rPShkNTAwLmZvcm1hdCgtMSwxLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWSkpLmVxdWFscygiMC41Iik7CisgIChuZXcgVGVzdCgiZm9yMTI4IikpLm9rPShkNTAwLmZvcm1hdCgtMSwyLC0xLC0xLC0xLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VTk5FQ0VTU0FSWSkpLmVxdWFscygiMC41MCIpOworICAobmV3IFRlc3QoImZvcjEyOSIpKS5vaz0oZDUwMC5mb3JtYXQoLTEsMywtMSwtMSwtMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVU5ORUNFU1NBUlkpKS5lcXVhbHMoIjAuNTAwIik7CisgIAorICAvLyBiYWQgbmVncyAtLQorICB0cnl7CisgICBkMDUwLmZvcm1hdCgtMiwtMSwtMSwtMSwtMSwtMSk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uICQ5Nil7CisgICBmbGFnPXRydWU7CisgIH0KKyAgKG5ldyBUZXN0KCJmb3IxMzEiKSkub2s9ZmxhZzsKKyAgdHJ5eworICAgZDA1MC5mb3JtYXQoLTEsLTIsLTEsLTEsLTEsLTEpOworICAgZmxhZz1mYWxzZTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiAkOTcpeworICAgZmxhZz10cnVlOworICB9CisgIChuZXcgVGVzdCgiZm9yMTMyIikpLm9rPWZsYWc7CisgIHRyeXsKKyAgIGQwNTAuZm9ybWF0KC0xLC0xLC0yLC0xLC0xLC0xKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gJDk4KXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfQorICAobmV3IFRlc3QoImZvcjEzMyIpKS5vaz1mbGFnOworICB0cnl7CisgICBkMDUwLmZvcm1hdCgtMSwtMSwtMSwtMiwtMSwtMSk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uICQ5OSl7CisgICBmbGFnPXRydWU7CisgIH0KKyAgKG5ldyBUZXN0KCJmb3IxMzQiKSkub2s9ZmxhZzsKKyAgdHJ5eworICAgZDA1MC5mb3JtYXQoLTEsLTEsLTEsLTEsLTIsLTEpOworICAgZmxhZz1mYWxzZTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiAkMTAwKXsKKyAgIGZsYWc9dHJ1ZTsKKyAgfQorICAobmV3IFRlc3QoImZvcjEzNSIpKS5vaz1mbGFnOworICB0cnl7CisgICBkMDUwLmZvcm1hdCgtMSwtMSwtMSwtMSwtMSwtMik7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uICQxMDEpeworICAgZmxhZz10cnVlOworICB9CisgIChuZXcgVGVzdCgiZm9yMTM2IikpLm9rPWZsYWc7CisgIAorICBzdW1tYXJ5KCJmb3JtYXQiKTsKKyAgcmV0dXJuO30KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI2hhc2hDb2RlfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ2hhc2hjb2RlKCl7CisgIGphdmEubGFuZy5TdHJpbmcgaHM7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGQ7CisgIGhzPSIyNzgyNzgxNyI7CisgIGQ9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGhzKTsKKyAgKG5ldyBUZXN0KCJoYXMwMDEiKSkub2s9KGQuaGFzaENvZGUoKSk9PShocy5oYXNoQ29kZSgpKTsKKyAgaHM9IjEuMjY1RSsyMDAiOworICBkPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChocyk7CisgIChuZXcgVGVzdCgiaGFzMDAyIikpLm9rPShkLmhhc2hDb2RlKCkpPT0oaHMuaGFzaENvZGUoKSk7CisgIGhzPSIxMjYuNUUrMjAwIjsKKyAgZD1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoaHMpOworICAobmV3IFRlc3QoImhhczAwMyIpKS5vaz0oZC5oYXNoQ29kZSgpKSE9KGhzLmhhc2hDb2RlKCkpOworICBzdW1tYXJ5KCJoYXNoQ29kZSIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjaW50VmFsdWV9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnaW50dmFsdWUoKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBqYXZhLmxhbmcuU3RyaW5nIHY9bnVsbDsKKyAgamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gYWU9bnVsbDsKKyAgamF2YS5sYW5nLlN0cmluZyBiYWRzdHJpbmdzW107CisgIGludCBpPTA7CisgIGphdmEubGFuZy5TdHJpbmcgbm9ybT1udWxsOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkaW1heDsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgbnVtPW51bGw7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGR2PW51bGw7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGRpbWluOworICAKKyAgCisgIC8vIGludFZhbHVlIC0tCisgIAorICAobmV3IFRlc3QoImludjAwMSIpKS5vaz1pbWluPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChpbWluKSkuaW50VmFsdWUoKSk7CisgIChuZXcgVGVzdCgiaW52MDAyIikpLm9rPSgoOTkpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5IikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjAwMyIpKS5vaz0oKDEpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuaW50VmFsdWUoKSk7CisgIChuZXcgVGVzdCgiaW52MDA0IikpLm9rPSgoMCkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJpbnYwMDUiKSkub2s9KCgtMSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkuaW50VmFsdWUoKSk7CisgIChuZXcgVGVzdCgiaW52MDA2IikpLm9rPSgoLTk5KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItOTkiKSkuaW50VmFsdWUoKSk7CisgIChuZXcgVGVzdCgiaW52MDA3IikpLm9rPWltYXg9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGltYXgpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJpbnYwMDgiKSkub2s9KCg1KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1LjAiKSkuaW50VmFsdWUoKSk7CisgIChuZXcgVGVzdCgiaW52MDA5IikpLm9rPSgoNSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNS4zIikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjAxMCIpKS5vaz0oKDUpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuNSIpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJpbnYwMTEiKSkub2s9KCg1KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1LjciKSkuaW50VmFsdWUoKSk7CisgIChuZXcgVGVzdCgiaW52MDEyIikpLm9rPSgoNSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNS45IikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjAxMyIpKS5vaz0oKC01KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNS4wIikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjAxNCIpKS5vaz0oKC01KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNS4zIikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjAxNSIpKS5vaz0oKC01KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNS41IikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjAxNiIpKS5vaz0oKC01KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNS43IikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjAxNyIpKS5vaz0oKC01KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNS45IikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjAxOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiODg4ODg4ODg4ODgiKSkuaW50VmFsdWUoKSk9PSgtMTMwNTQyNDMyOCk7IC8vIHVnaAorICAobmV3IFRlc3QoImludjAxOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTg4ODg4ODg4ODg4IikpLmludFZhbHVlKCkpPT0xMzA1NDI0MzI4OyAvLyB1Z2gKKyAgKG5ldyBUZXN0KCJpbnYwMjAiKSkub2s9KChpbWluKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCgoKGxvbmcpaW1heCkpKzEpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJpbnYwMjEiKSkub2s9KChpbWF4KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCgoKGxvbmcpaW1pbikpLTEpKS5pbnRWYWx1ZSgpKTsKKyAgCisgIC8vIGludFZhbHVlRXhhY3QgLS0KKyAgCisgIChuZXcgVGVzdCgiaW52MTAxIikpLm9rPWltaW49PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGltaW4pKS5pbnRWYWx1ZUV4YWN0KCkpOworICAobmV3IFRlc3QoImludjEwMiIpKS5vaz0oKDk5KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OSIpKS5pbnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJpbnYxMDMiKSkub2s9KCgxKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjEwNCIpKS5vaz0oKDApKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkuaW50VmFsdWUoKSk7CisgIChuZXcgVGVzdCgiaW52MTA1IikpLm9rPSgoLTEpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjEwNiIpKS5vaz0oKC05OSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTk5IikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjEwNyIpKS5vaz1pbWF4PT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChpbWF4KSkuaW50VmFsdWUoKSk7CisgIChuZXcgVGVzdCgiaW52MTA4IikpLm9rPSgoNSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNS4wIikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjEwOSIpKS5vaz0oKC01KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNS4wIikpLmludFZhbHVlKCkpOworICAobmV3IFRlc3QoImludjExMCIpKS5vaz1pbWF4PT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChpbWF4KSkuaW50VmFsdWVFeGFjdCgpKTsKKyAgCisgIHRyeXsKKyAgIHY9Ii04ODU4ODY4ODg4OCI7CisgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHYpKS5pbnRWYWx1ZUV4YWN0KCk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTAyKXthZT0kMTAyOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkNvbnZlcnNpb24gb3ZlcmZsb3c6IisiICIrdik7CisgIH0KKyAgKG5ldyBUZXN0KCJpbnYyMDAiKSkub2s9ZmxhZzsKKyAgCisgIC8vIHRoaXMgb25lIGNvdWxkIHJhaXNlIGVpdGhlciBvdmVyZmxvdyBvciBiYWQgZGVjaW1hbCBwYXJ0CisgIHRyeXsKKyAgIHY9Ijg4MDg4ODE4ODg4LjAwMDAxIjsKKyAgIChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodikpLmludFZhbHVlRXhhY3QoKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMDMpeworICAgZmxhZz10cnVlOworICB9CisgIChuZXcgVGVzdCgiaW52MjAxIikpLm9rPWZsYWc7CisgIAorICAvLyAxOTk5LjEwLjI4OiB0aGUgdGVzdGNhc2VzIG1hcmtlZCAnKicgZmFpbGVkCisgIGJhZHN0cmluZ3M9bmV3IGphdmEubGFuZy5TdHJpbmdbXXsiMTIzNDU2Nzg5MDEiLChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoaW1heCkpLmFkZChvbmUpLnRvU3RyaW5nKCksKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChpbWluKSkuc3VidHJhY3Qob25lKS50b1N0cmluZygpLCIzNzMxMzY3MjkzIiwiNDczMTM2NzI5MyIsIjU3MzEzNjcyOTMiLCI2NzMxMzY3MjkzIiwiNzczMTM2NzI5MyIsIjg3MzEzNjcyOTMiLCI5NzMxMzY3MjkzIiwiLTM3MzEzNjcyOTMiLCItNDczMTM2NzI5MyIsIi01NzMxMzY3MjkzIiwiLTY3MzEzNjcyOTMiLCItNzczMTM2NzI5MyIsIi04NzMxMzY3MjkzIiwiLTk3MzEzNjcyOTMiLChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoaW1pbikpLm11bHRpcGx5KHR3bykudG9TdHJpbmcoKSwobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGltYXgpKS5tdWx0aXBseSh0d28pLnRvU3RyaW5nKCksKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChpbWluKSkubXVsdGlwbHkodGVuKS50b1N0cmluZygpLChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoaW1heCkpLm11bHRpcGx5KHRlbikudG9TdHJpbmcoKSwiNDczMTM2NzI5MyIsIjQ4MzEzNjcyOTMiLCI0OTMxMzY3MjkzIiwiNTAzMTM2NzI5MyIsIjUxMzEzNjcyOTMiLCI1MjMxMzY3MjkzIiwiNTMzMTM2NzI5MyIsIjU0MzEzNjcyOTMiLCI1NTMxMzY3MjkzIiwiNTYzMTM2NzI5MyIsIjU3MzEzNjcyOTMiLCI1ODMxMzY3MjkzIiwiNTkzMTM2NzI5MyIsIjYwMzEzNjcyOTMiLCI2MTMxMzY3MjkzIiwiNjIzMTM2NzI5MyIsIjYzMzEzNjcyOTMiLCI2NDMxMzY3MjkzIiwiNjUzMTM2NzI5MyIsIjY2MzEzNjcyOTMiLCI2NzMxMzY3MjkzIiwiMjIwMDAwMDAwMCIsIjIzMDAwMDAwMDAiLCIyNDAwMDAwMDAwIiwiMjUwMDAwMDAwMCIsIjI2MDAwMDAwMDAiLCIyNzAwMDAwMDAwIiwiMjgwMDAwMDAwMCIsIjI5MDAwMDAwMDAiLCItMjIwMDAwMDAwMCIsIi0yMzAwMDAwMDAwIiwiLTI0MDAwMDAwMDAiLCItMjUwMDAwMDAwMCIsIi0yNjAwMDAwMDAwIiwiLTI3MDAwMDAwMDAiLCItMjgwMDAwMDAwMCIsIi0yOTAwMDAwMDAwIiwiMjVFKzgiLCItMjVFKzgiLCItMTIzNDU2Nzg5MDEifTsgLy8gMjIwCisgIC8vIDIyMQorICAvLyAyMjIKKyAgLy8gMjIzCisgIC8vIDIyNAorICAvLyAyMjUgICoKKyAgLy8gMjI2CisgIC8vIDIyNworICAvLyAyMjgKKyAgLy8gMjI5ICAqCisgIC8vIDIzMAorICAvLyAyMzEKKyAgLy8gMjMyICAqCisgIC8vIDIzMworICAvLyAyMzQKKyAgLy8gMjM1CisgIC8vIDIzNiAgKgorICAvLyAyMzcKKyAgLy8gMjM4CisgIC8vIDIzOQorICAvLyAyNDAKKyAgLy8gMjQxCisgIC8vIDI0MiAgKgorICAvLyAyNDMgICoKKyAgLy8gMjQ0ICAqCisgIC8vIDI0NSAgKgorICAvLyAyNDYgICoKKyAgLy8gMjQ3ICAqCisgIC8vIDI0OCAgKgorICAvLyAyNDkgICoKKyAgLy8gMjUwICAqCisgIC8vIDI1MSAgKgorICAvLyAyNTIgICoKKyAgLy8gMjUzICAqCisgIC8vIDI1NCAgKgorICAvLyAyNTUgICoKKyAgLy8gMjU2ICAqCisgIC8vIDI1NyAgKgorICAvLyAyNTggICoKKyAgLy8gMjU5CisgIC8vIDI2MAorICAvLyAyNjEKKyAgLy8gMjYyCisgIC8vIDI2MworICAvLyAyNjQKKyAgLy8gMjY1CisgIC8vIDI2NgorICAvLyAyNjcKKyAgLy8gMjY4CisgIC8vIDI2OQorICAvLyAyNzAKKyAgLy8gMjcxCisgIC8vIDI3MgorICAvLyAyNzMKKyAgLy8gMjc0CisgIC8vIDI3NQorICAvLyAyNzYKKyAgLy8gMjc3CisgIC8vIDI3OAorICAvLyAyNzkKKyAgLy8gMjgwCisgIHtpbnQgJDEwND1iYWRzdHJpbmdzLmxlbmd0aDtpPTA7aTpmb3IoOyQxMDQ+MDskMTA0LS0saSsrKXsKKyAgIHRyeXsKKyAgICB2PWJhZHN0cmluZ3NbaV07CisgICAgKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2KSkuaW50VmFsdWVFeGFjdCgpOworICAgIGZsYWc9ZmFsc2U7CisgICB9CisgICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDEwNSl7YWU9JDEwNTsKKyAgICBub3JtPShuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodikpLnRvU3RyaW5nKCk7CisgICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkNvbnZlcnNpb24gb3ZlcmZsb3c6IisiICIrbm9ybSk7CisgICB9CisgICAobmV3IFRlc3QoImludiIrKDIyMCtpKSkpLm9rPWZsYWc7CisgICB9CisgIH0vKmkqLworICAKKyAgLy8gbm93IHNsaXAgaW4gc29tZSBzaW5nbGUgYml0cy4uLgorICBkaW1heD1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoaW1heCk7CisgIHtpPTA7aTpmb3IoO2k8PTQ5O2krKyl7CisgICB0cnl7CisgICAgbnVtPXR3by5wb3cobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGkpLG1jNTApOworICAgIGR2PWRpbWF4LmFkZChudW0sbWM1MCk7CisgICAgZHYuaW50VmFsdWVFeGFjdCgpOworICAgIGZsYWc9ZmFsc2U7CisgICB9CisgICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDEwNil7YWU9JDEwNjsKKyAgICBub3JtPWR2LnRvU3RyaW5nKCk7CisgICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkNvbnZlcnNpb24gb3ZlcmZsb3c6IisiICIrbm9ybSk7CisgICB9CisgICAobmV3IFRlc3QoImludiIrKDMwMCtpKSkpLm9rPWZsYWc7CisgICB9CisgIH0vKmkqLworICBkaW1pbj1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoaW1pbik7CisgIHtpPTUwO2k6Zm9yKDtpPD05OTtpKyspeworICAgdHJ5eworICAgIG51bT10d28ucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChpKSxtYzUwKTsKKyAgICBkdj1kaW1pbi5zdWJ0cmFjdChudW0sbWM1MCk7CisgICAgZHYuaW50VmFsdWVFeGFjdCgpOworICAgIGZsYWc9ZmFsc2U7CisgICB9CisgICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDEwNyl7YWU9JDEwNzsKKyAgICBub3JtPWR2LnRvU3RyaW5nKCk7CisgICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkNvbnZlcnNpb24gb3ZlcmZsb3c6IisiICIrbm9ybSk7CisgICB9CisgICAobmV3IFRlc3QoImludiIrKDMwMCtpKSkpLm9rPWZsYWc7CisgICB9CisgIH0vKmkqLworICAKKyAgLy8gdGhlIGZvbGxvd2luZyBzaG91bGQgYWxsIHJhaXNlIGJhZC1kZWNpbWFsLXBhcnQgZXhjZXB0aW9ucworICBiYWRzdHJpbmdzPW5ldyBqYXZhLmxhbmcuU3RyaW5nW117IjAuMDkiLCIwLjkiLCIwLjAxIiwiMC4xIiwiLTAuMDEiLCItMC4xIiwiMS4wMSIsIi0xLjAxIiwiLTEuMSIsIi0xMTEuMTExIiwiKzExMS4xMTEiLCIxLjA5IiwiMS4wNSIsIjEuMDQiLCIxLjk5IiwiMS45IiwiMS41IiwiMS40IiwiLTEuMDkiLCItMS4wNSIsIi0xLjA0IiwiLTEuOTkiLCItMS45IiwiLTEuNSIsIi0xLjQiLCIxRS0xMDAwIiwiLTFFLTEwMDAiLCIxMUUtMSIsIjEuNSJ9OyAvLyA0MDAtNDAzCisgIC8vIDQwNC00MDcKKyAgLy8gNDA4LTQxMQorICAvLyA0MTItNDE2CisgIC8vIDQxNy00MjAKKyAgLy8gNDIxLTQyNAorICAvLyA0MjUtNDI4CisgIAorICB7aW50ICQxMDg9YmFkc3RyaW5ncy5sZW5ndGg7aT0wO2k6Zm9yKDskMTA4PjA7JDEwOC0tLGkrKyl7CisgICB0cnl7CisgICAgdj1iYWRzdHJpbmdzW2ldOworICAgIChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodikpLmludFZhbHVlRXhhY3QoKTsKKyAgICBmbGFnPWZhbHNlOworICAgfQorICAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMDkpe2FlPSQxMDk7CisgICAgbm9ybT0obmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHYpKS50b1N0cmluZygpOworICAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJEZWNpbWFsIHBhcnQgbm9uLXplcm86IisiICIrbm9ybSk7CisgICB9CisgICAobmV3IFRlc3QoImludiIrKDQwMCtpKSkpLm9rPWZsYWc7CisgICB9CisgIH0vKmkqLworICAKKyAgc3VtbWFyeSgiaW50VmFsdWUrIik7CisgIHJldHVybjt9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNsb25nVmFsdWV9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnbG9uZ3ZhbHVlKCl7CisgIGJvb2xlYW4gZmxhZz1mYWxzZTsKKyAgamF2YS5sYW5nLlN0cmluZyB2PW51bGw7CisgIGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uIGFlPW51bGw7CisgIGphdmEubGFuZy5TdHJpbmcgYmFkc3RyaW5nc1tdOworICBpbnQgaT0wOworICBqYXZhLmxhbmcuU3RyaW5nIG5vcm09bnVsbDsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgZGxtYXg7CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIG51bT1udWxsOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkdj1udWxsOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkbG1pbjsKKyAgCisgIAorICAvLyBsb25nVmFsdWUgLS0KKyAgCisgIChuZXcgVGVzdCgibG92MDAxIikpLm9rPWxtaW49PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGxtaW4pKS5sb25nVmFsdWUoKSk7CisgIChuZXcgVGVzdCgibG92MDAyIikpLm9rPSgoKGxvbmcpOTkpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5IikpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJsb3YwMDMiKSkub2s9KCgobG9uZykxKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxIikpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJsb3YwMDQiKSkub2s9KCgobG9uZykwKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJsb3YwMDUiKSkub2s9KCgobG9uZyktMSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjAwNiIpKS5vaz0oKChsb25nKS05OSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTk5IikpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJsb3YwMDciKSkub2s9bG1heD09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwobG1heCkpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJsb3YwMDgiKSkub2s9KCgobG9uZyk1KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1LjAiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjAwOSIpKS5vaz0oKChsb25nKTUpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuMyIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgVGVzdCgibG92MDEwIikpLm9rPSgoKGxvbmcpNSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiNS41IikpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJsb3YwMTEiKSkub2s9KCgobG9uZyk1KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI1LjciKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjAxMiIpKS5vaz0oKChsb25nKTUpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuOSIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgVGVzdCgibG92MDEzIikpLm9rPSgoKGxvbmcpLTUpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01LjAiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjAxNCIpKS5vaz0oKChsb25nKS01KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNS4zIikpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJsb3YwMTUiKSkub2s9KCgobG9uZyktNSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTUuNSIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgVGVzdCgibG92MDE2IikpLm9rPSgoKGxvbmcpLTUpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01LjciKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjAxNyIpKS5vaz0oKChsb25nKS01KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItNS45IikpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJsb3YwMTgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjg4ODg4ODg4ODg5OTk5OTk5OTk5OCIpKS5sb25nVmFsdWUoKSk9PTM0NDUxNzMzNjE5NDE1MjI0MzBMOyAvLyB1Z2gKKyAgKG5ldyBUZXN0KCJsb3YwMTkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi04ODg4ODg4ODg4OTk5OTk5OTk5OTgiKSkubG9uZ1ZhbHVlKCkpPT0oLTM0NDUxNzMzNjE5NDE1MjI0MzBMKTsgLy8gdWdoCisgIAorICAvLyBsb25nVmFsdWVFeGFjdCAtLQorICAKKyAgKG5ldyBUZXN0KCJsb3YxMDEiKSkub2s9bG1pbj09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwobG1pbikpLmxvbmdWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJsb3YxMDIiKSkub2s9KCgobG9uZyk5OSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiOTkiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjEwMyIpKS5vaz0oKChsb25nKTEpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjEwNCIpKS5vaz0oKChsb25nKTApKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjEwNSIpKS5vaz0oKChsb25nKS0xKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgVGVzdCgibG92MTA2IikpLm9rPSgoKGxvbmcpLTk5KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItOTkiKSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjEwNyIpKS5vaz1sbWF4PT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChsbWF4KSkubG9uZ1ZhbHVlKCkpOworICAobmV3IFRlc3QoImxvdjEwOCIpKS5vaz0oKChsb25nKTUpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjUuMCIpKS5sb25nVmFsdWUoKSk7CisgIChuZXcgVGVzdCgibG92MTA5IikpLm9rPSgoKGxvbmcpLTUpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi01LjAiKSkubG9uZ1ZhbHVlKCkpOworICAKKyAgdHJ5eworICAgdj0iLTg4ODg4ODg4ODg5OTk5OTk5OTk5OCI7CisgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHYpKS5sb25nVmFsdWVFeGFjdCgpOworICAgZmxhZz1mYWxzZTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDExMCl7YWU9JDExMDsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK3YpOworICB9CisgIChuZXcgVGVzdCgibG92MjAwIikpLm9rPWZsYWc7CisgIHRyeXsKKyAgIHY9Ijg4ODg4ODg3NDg3NDg3NDc5NDg4ODg4IjsKKyAgIChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodikpLmxvbmdWYWx1ZUV4YWN0KCk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTExKXthZT0kMTExOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkNvbnZlcnNpb24gb3ZlcmZsb3c6IisiICIrdik7CisgIH0KKyAgKG5ldyBUZXN0KCJsb3YyMDEiKSkub2s9ZmxhZzsKKyAgdHJ5eworICAgdj0iMS41IjsKKyAgIChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodikpLmxvbmdWYWx1ZUV4YWN0KCk7CisgICBmbGFnPWZhbHNlOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTEyKXthZT0kMTEyOworICAgZmxhZz0oYWUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkRlY2ltYWwgcGFydCBub24temVybzoiKyIgIit2KTsKKyAgfQorICAobmV3IFRlc3QoImxvdjIwMiIpKS5vaz1mbGFnOworICAKKyAgYmFkc3RyaW5ncz1uZXcgamF2YS5sYW5nLlN0cmluZ1tdeyIxMjM0NTY3ODkwMTEwOTg3NjU0MzIxIiwiLTEyMzQ1Njc4OTAxMTA5ODc2NTQzMjEiLChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwobG1heCkpLmFkZChvbmUpLnRvU3RyaW5nKCksKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChsbWluKSkuc3VidHJhY3Qob25lKS50b1N0cmluZygpLChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwobG1pbikpLm11bHRpcGx5KHR3bykudG9TdHJpbmcoKSwobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGxtYXgpKS5tdWx0aXBseSh0d28pLnRvU3RyaW5nKCksKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChsbWluKSkubXVsdGlwbHkodGVuKS50b1N0cmluZygpLChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwobG1heCkpLm11bHRpcGx5KHRlbikudG9TdHJpbmcoKSwiOTIyMzM3MjAzNjg1NDc3NTgxOCIsIjkzMjMzNzIwMzY4NTQ3NzU4MTgiLCI5NDIzMzcyMDM2ODU0Nzc1ODE4IiwiOTUyMzM3MjAzNjg1NDc3NTgxOCIsIjk2MjMzNzIwMzY4NTQ3NzU4MTgiLCI5NzIzMzcyMDM2ODU0Nzc1ODE4IiwiOTgyMzM3MjAzNjg1NDc3NTgxOCIsIjk5MjMzNzIwMzY4NTQ3NzU4MTgiLCItOTIyMzM3MjAzNjg1NDc3NTgxOCIsIi05MzIzMzcyMDM2ODU0Nzc1ODE4IiwiLTk0MjMzNzIwMzY4NTQ3NzU4MTgiLCItOTUyMzM3MjAzNjg1NDc3NTgxOCIsIi05NjIzMzcyMDM2ODU0Nzc1ODE4IiwiLTk3MjMzNzIwMzY4NTQ3NzU4MTgiLCItOTgyMzM3MjAzNjg1NDc3NTgxOCIsIi05OTIzMzcyMDM2ODU0Nzc1ODE4IiwiMTIzNDU2Nzg5MDEyMzQ1Njc4OTAifTsgLy8gMjIwCisgIC8vIDIyMQorICAvLyAyMjIKKyAgLy8gMjIzCisgIC8vIDIyNAorICAvLyAyMjUKKyAgLy8gMjI2CisgIC8vIDIyNworICAvLyAyMjgKKyAgLy8gMjI5CisgIC8vIDIzMAorICAvLyAyMzEKKyAgLy8gMjMyCisgIC8vIDIzMworICAvLyAyMzQKKyAgLy8gMjM1CisgIC8vIDIzNgorICAvLyAyMzcKKyAgLy8gMjM4CisgIC8vIDIzOQorICAvLyAyNDAKKyAgLy8gMjQxCisgIC8vIDI0MgorICAvLyAyNDMKKyAgLy8gMjQ0CisgIHtpbnQgJDExMz1iYWRzdHJpbmdzLmxlbmd0aDtpPTA7aTpmb3IoOyQxMTM+MDskMTEzLS0saSsrKXsKKyAgIHRyeXsKKyAgICB2PWJhZHN0cmluZ3NbaV07CisgICAgKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh2KSkubG9uZ1ZhbHVlRXhhY3QoKTsKKyAgICBmbGFnPWZhbHNlOworICAgfQorICAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMTQpe2FlPSQxMTQ7CisgICAgbm9ybT0obmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHYpKS50b1N0cmluZygpOworICAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK25vcm0pOworICAgfQorICAgKG5ldyBUZXN0KCJsb3YiKygyMjAraSkpKS5vaz1mbGFnOworICAgfQorICB9LyppKi8KKyAgCisgIC8vIG5vdyBzbGlwIGluIHNvbWUgc2luZ2xlIGJpdHMuLi4KKyAgZGxtYXg9bmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGxtYXgpOworICB7aT0wO2k6Zm9yKDtpPD05OTtpKyspeworICAgdHJ5eworICAgIG51bT10d28ucG93KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChpKSxtYzUwKTsKKyAgICBkdj1kbG1heC5hZGQobnVtLG1jNTApOworICAgIGR2LmxvbmdWYWx1ZUV4YWN0KCk7CisgICAgZmxhZz1mYWxzZTsKKyAgIH0KKyAgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTE1KXthZT0kMTE1OworICAgIG5vcm09ZHYudG9TdHJpbmcoKTsKKyAgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiQ29udmVyc2lvbiBvdmVyZmxvdzoiKyIgIitub3JtKTsKKyAgIH0KKyAgIChuZXcgVGVzdCgibG92IisoMzAwK2kpKSkub2s9ZmxhZzsKKyAgIH0KKyAgfS8qaSovCisgIGRsbWluPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChsbWluKTsKKyAge2k9MDtpOmZvcig7aTw9OTk7aSsrKXsKKyAgIHRyeXsKKyAgICBudW09dHdvLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoaSksbWM1MCk7CisgICAgZHY9ZGxtaW4uc3VidHJhY3QobnVtLG1jNTApOworICAgIGR2LmxvbmdWYWx1ZUV4YWN0KCk7CisgICAgZmxhZz1mYWxzZTsKKyAgIH0KKyAgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTE2KXthZT0kMTE2OworICAgIG5vcm09ZHYudG9TdHJpbmcoKTsKKyAgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiQ29udmVyc2lvbiBvdmVyZmxvdzoiKyIgIitub3JtKTsKKyAgIH0KKyAgIChuZXcgVGVzdCgibG92IisoNDAwK2kpKSkub2s9ZmxhZzsKKyAgIH0KKyAgfS8qaSovCisgIAorICBzdW1tYXJ5KCJsb25nVmFsdWUrIik7CisgIHJldHVybjt9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNtb3ZlUG9pbnRMZWZ0fSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ21vdmVwb2ludGxlZnQoKXsKKyAgKG5ldyBUZXN0KCJtcGwwMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLm1vdmVQb2ludExlZnQoLTEwKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm1wbDAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkubW92ZVBvaW50TGVmdCgtNSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMTAwMDAwIik7CisgIChuZXcgVGVzdCgibXBsMDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpKS5tb3ZlUG9pbnRMZWZ0KC0xKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMCIpOworICAobmV3IFRlc3QoIm1wbDAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkubW92ZVBvaW50TGVmdCgwKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgVGVzdCgibXBsMDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpKS5tb3ZlUG9pbnRMZWZ0KCsxKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjEiKTsKKyAgKG5ldyBUZXN0KCJtcGwwMDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLm1vdmVQb2ludExlZnQoKzUpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMDAwMDEiKTsKKyAgKG5ldyBUZXN0KCJtcGwwMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLm1vdmVQb2ludExlZnQoKzEwKS50b1N0cmluZygpKS5lcXVhbHMoIi0wLjAwMDAwMDAwMDEiKTsKKyAgCisgIChuZXcgVGVzdCgibXBsMDEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLm1vdmVQb2ludExlZnQoLTEwKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJtcGwwMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkubW92ZVBvaW50TGVmdCgtNSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgibXBsMDEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLm1vdmVQb2ludExlZnQoLTEpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoIm1wbDAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5tb3ZlUG9pbnRMZWZ0KDApLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoIm1wbDAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5tb3ZlUG9pbnRMZWZ0KCsxKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoIm1wbDAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5tb3ZlUG9pbnRMZWZ0KCs1KS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtcGwwMTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkubW92ZVBvaW50TGVmdCgrMTApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMDAwMDAwIik7CisgIAorICAobmV3IFRlc3QoIm1wbDAyMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzEiKSkubW92ZVBvaW50TGVmdCgtMTApLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtcGwwMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLm1vdmVQb2ludExlZnQoLTUpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwIik7CisgIChuZXcgVGVzdCgibXBsMDIyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS5tb3ZlUG9pbnRMZWZ0KC0xKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgVGVzdCgibXBsMDIzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS5tb3ZlUG9pbnRMZWZ0KDApLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoIm1wbDAyNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzEiKSkubW92ZVBvaW50TGVmdCgrMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJtcGwwMjUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLm1vdmVQb2ludExlZnQoKzUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMSIpOworICAobmV3IFRlc3QoIm1wbDAyNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzEiKSkubW92ZVBvaW50TGVmdCgrMTApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMDAwMDAxIik7CisgIAorICAobmV3IFRlc3QoIm1wbDAzMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41RSsxIikpLm1vdmVQb2ludExlZnQoLTEwKS50b1N0cmluZygpKS5lcXVhbHMoIjUwMDAwMDAwMDAwIik7CisgIChuZXcgVGVzdCgibXBsMDMxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjVFKzEiKSkubW92ZVBvaW50TGVmdCgtNSkudG9TdHJpbmcoKSkuZXF1YWxzKCI1MDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtcGwwMzIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNUUrMSIpKS5tb3ZlUG9pbnRMZWZ0KC0xKS50b1N0cmluZygpKS5lcXVhbHMoIjUwIik7CisgIChuZXcgVGVzdCgibXBsMDMzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjVFKzEiKSkubW92ZVBvaW50TGVmdCgwKS50b1N0cmluZygpKS5lcXVhbHMoIjUiKTsKKyAgKG5ldyBUZXN0KCJtcGwwMzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuNUUrMSIpKS5tb3ZlUG9pbnRMZWZ0KCsxKS50b1N0cmluZygpKS5lcXVhbHMoIjAuNSIpOworICAobmV3IFRlc3QoIm1wbDAzNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41RSsxIikpLm1vdmVQb2ludExlZnQoKzUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwNSIpOworICAobmV3IFRlc3QoIm1wbDAzNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41RSsxIikpLm1vdmVQb2ludExlZnQoKzEwKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwMDAwNSIpOworICAKKyAgc3VtbWFyeSgibW92ZVBvaW50TGVmdCIpOworICByZXR1cm47fQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjbW92ZVBvaW50UmlnaHR9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnbW92ZXBvaW50cmlnaHQoKXsKKyAgKG5ldyBUZXN0KCJtcHIwMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLm1vdmVQb2ludFJpZ2h0KCsxMCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMTAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtcHIwMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLm1vdmVQb2ludFJpZ2h0KCs1KS50b1N0cmluZygpKS5lcXVhbHMoIi0xMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtcHIwMDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLm1vdmVQb2ludFJpZ2h0KCsxKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMCIpOworICAobmV3IFRlc3QoIm1wcjAwNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkubW92ZVBvaW50UmlnaHQoMCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoIm1wcjAwNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkubW92ZVBvaW50UmlnaHQoLTEpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMSIpOworICAobmV3IFRlc3QoIm1wcjAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkubW92ZVBvaW50UmlnaHQoLTUpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMDAwMDEiKTsKKyAgKG5ldyBUZXN0KCJtcHIwMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLm1vdmVQb2ludFJpZ2h0KC0xMCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMC4wMDAwMDAwMDAxIik7CisgIAorICAobmV3IFRlc3QoIm1wcjAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5tb3ZlUG9pbnRSaWdodCgrMTApLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoIm1wcjAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5tb3ZlUG9pbnRSaWdodCgrNSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgibXByMDEyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLm1vdmVQb2ludFJpZ2h0KCsxKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJtcHIwMTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkubW92ZVBvaW50UmlnaHQoMCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgibXByMDE0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLm1vdmVQb2ludFJpZ2h0KC0xKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoIm1wcjAxNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5tb3ZlUG9pbnRSaWdodCgtNSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwIik7CisgIChuZXcgVGVzdCgibXByMDE2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLm1vdmVQb2ludFJpZ2h0KC0xMCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMDAwMDAiKTsKKyAgCisgIChuZXcgVGVzdCgibXByMDIwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS5tb3ZlUG9pbnRSaWdodCgrMTApLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwMDAwMDAiKTsKKyAgKG5ldyBUZXN0KCJtcHIwMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLm1vdmVQb2ludFJpZ2h0KCs1KS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAwMCIpOworICAobmV3IFRlc3QoIm1wcjAyMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzEiKSkubW92ZVBvaW50UmlnaHQoKzEpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAiKTsKKyAgKG5ldyBUZXN0KCJtcHIwMjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLm1vdmVQb2ludFJpZ2h0KDApLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoIm1wcjAyNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzEiKSkubW92ZVBvaW50UmlnaHQoLTEpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4xIik7CisgIChuZXcgVGVzdCgibXByMDI1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS5tb3ZlUG9pbnRSaWdodCgtNSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAxIik7CisgIChuZXcgVGVzdCgibXByMDI2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS5tb3ZlUG9pbnRSaWdodCgtMTApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMDAwMDAxIik7CisgIAorICAobmV3IFRlc3QoIm1wcjAzMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41RSsxIikpLm1vdmVQb2ludFJpZ2h0KCsxMCkudG9TdHJpbmcoKSkuZXF1YWxzKCI1MDAwMDAwMDAwMCIpOworICAobmV3IFRlc3QoIm1wcjAzMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41RSsxIikpLm1vdmVQb2ludFJpZ2h0KCs1KS50b1N0cmluZygpKS5lcXVhbHMoIjUwMDAwMCIpOworICAobmV3IFRlc3QoIm1wcjAzMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41RSsxIikpLm1vdmVQb2ludFJpZ2h0KCsxKS50b1N0cmluZygpKS5lcXVhbHMoIjUwIik7CisgIChuZXcgVGVzdCgibXByMDMzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjVFKzEiKSkubW92ZVBvaW50UmlnaHQoMCkudG9TdHJpbmcoKSkuZXF1YWxzKCI1Iik7CisgIChuZXcgVGVzdCgibXByMDM0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjVFKzEiKSkubW92ZVBvaW50UmlnaHQoLTEpLnRvU3RyaW5nKCkpLmVxdWFscygiMC41Iik7CisgIChuZXcgVGVzdCgibXByMDM1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjVFKzEiKSkubW92ZVBvaW50UmlnaHQoLTUpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwNSIpOworICAobmV3IFRlc3QoIm1wcjAzNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC41RSsxIikpLm1vdmVQb2ludFJpZ2h0KC0xMCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMDAwMDUiKTsKKyAgCisgIHN1bW1hcnkoIm1vdmVQb2ludFJpZ2h0Iik7CisgIHJldHVybjt9CisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qKiBUZXN0IHRoZSB7QGxpbmsgQmlnRGVjaW1hbCNzY2FsZX0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdzY2FsZSgpeworICAobmV3IFRlc3QoInNjYTAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkuc2NhbGUoKSk9PTA7CisgIChuZXcgVGVzdCgic2NhMDAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMTAiKSkuc2NhbGUoKSk9PTA7CisgIChuZXcgVGVzdCgic2NhMDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS5zY2FsZSgpKT09MDsKKyAgKG5ldyBUZXN0KCJzY2EwMDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxMCIpKS5zY2FsZSgpKT09MDsKKyAgKG5ldyBUZXN0KCJzY2EwMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFFKzEwIikpLnNjYWxlKCkpPT0wOworICAobmV3IFRlc3QoInNjYTAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMUUtMTAiKSkuc2NhbGUoKSk9PTEwOworICAobmV3IFRlc3QoInNjYTAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMEUtMTAiKSkuc2NhbGUoKSk9PTA7CisgIChuZXcgVGVzdCgic2NhMDA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwMCIpKS5zY2FsZSgpKT09MzsKKyAgKG5ldyBUZXN0KCJzY2EwMDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAiKSkuc2NhbGUoKSk9PTI7CisgIChuZXcgVGVzdCgic2NhMDEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAiKSkuc2NhbGUoKSk9PTE7CisgIChuZXcgVGVzdCgic2NhMDExIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEiKSkuc2NhbGUoKSk9PTE7CisgIChuZXcgVGVzdCgic2NhMDEyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEyIikpLnNjYWxlKCkpPT0yOworICAobmV3IFRlc3QoInNjYTAxMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4xMjMiKSkuc2NhbGUoKSk9PTM7CisgIChuZXcgVGVzdCgic2NhMDE0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4wIikpLnNjYWxlKCkpPT0xOworICAobmV3IFRlc3QoInNjYTAxNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMSIpKS5zY2FsZSgpKT09MTsKKyAgKG5ldyBUZXN0KCJzY2EwMTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjEyIikpLnNjYWxlKCkpPT0yOworICAobmV3IFRlc3QoInNjYTAxNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMTIzIikpLnNjYWxlKCkpPT0zOworICBzdW1tYXJ5KCJzY2FsZSIpOworICByZXR1cm47fQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjc2V0U2NhbGV9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnc2V0c2NhbGUoKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiBlPW51bGw7CisgIAorICAobmV3IFRlc3QoInNzYzAwMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkuc2V0U2NhbGUoMCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoInNzYzAwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkuc2V0U2NhbGUoMSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMS4wIik7CisgIChuZXcgVGVzdCgic3NjMDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpKS5zZXRTY2FsZSgyKS50b1N0cmluZygpKS5lcXVhbHMoIi0xLjAwIik7CisgIChuZXcgVGVzdCgic3NjMDA0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnNldFNjYWxlKDApLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInNzYzAwNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zZXRTY2FsZSgxKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoInNzYzAwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zZXRTY2FsZSgyKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMDciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLnNldFNjYWxlKDApLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInNzYzAwOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzEiKSkuc2V0U2NhbGUoMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLnNldFNjYWxlKDIpLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMCIpOworICAobmV3IFRlc3QoInNzYzAxMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkuc2V0U2NhbGUoMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoInNzYzAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkuc2V0U2NhbGUoMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMS4wIik7CisgIChuZXcgVGVzdCgic3NjMDEyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpKS5zZXRTY2FsZSgyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIi0xLjAwIik7CisgIChuZXcgVGVzdCgic3NjMDEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnNldFNjYWxlKDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInNzYzAxNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zZXRTY2FsZSgxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoInNzYzAxNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zZXRTY2FsZSgyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLnNldFNjYWxlKDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInNzYzAxNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzEiKSkuc2V0U2NhbGUoMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMTgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLnNldFNjYWxlKDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMCIpOworICAKKyAgKG5ldyBUZXN0KCJzc2MwMjAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDQiKSkuc2V0U2NhbGUoMyxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjA0MCIpOworICAobmV3IFRlc3QoInNzYzAyMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wNCIpKS5zZXRTY2FsZSgyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDQiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDQiKSkuc2V0U2NhbGUoMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDQiKSkuc2V0U2NhbGUoMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgic3NjMDI0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjA1IikpLnNldFNjYWxlKDMsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wNTAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMjUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDUiKSkuc2V0U2NhbGUoMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxLjA1Iik7CisgIChuZXcgVGVzdCgic3NjMDI2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjA1IikpLnNldFNjYWxlKDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMS4xIik7CisgIChuZXcgVGVzdCgic3NjMDI3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjA1IikpLnNldFNjYWxlKDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInNzYzAyOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wNSIpKS5zZXRTY2FsZSgzLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wNTAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMjkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDUiKSkuc2V0U2NhbGUoMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDUiKTsKKyAgKG5ldyBUZXN0KCJzc2MwMzAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDUiKSkuc2V0U2NhbGUoMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMCIpOworICAobmV3IFRlc3QoInNzYzAzMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wNSIpKS5zZXRTY2FsZSgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInNzYzAzMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wNiIpKS5zZXRTY2FsZSgzLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMDYwIik7CisgIChuZXcgVGVzdCgic3NjMDMzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjA2IikpLnNldFNjYWxlKDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wNiIpOworICAobmV3IFRlc3QoInNzYzAzNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wNiIpKS5zZXRTY2FsZSgxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEuMSIpOworICAobmV3IFRlc3QoInNzYzAzNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wNiIpKS5zZXRTY2FsZSgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgCisgIChuZXcgVGVzdCgic3NjMDQwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMTAiKSkuc2V0U2NhbGUoMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMTAuMDAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwNDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLnNldFNjYWxlKDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMS4wMCIpOworICAobmV3IFRlc3QoInNzYzA0MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzEwIikpLnNldFNjYWxlKDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMTAuMDAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwNDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFFKzEwIikpLnNldFNjYWxlKDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwMDAwMDAuMDAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwNDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFFLTEwIikpLnNldFNjYWxlKDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMCIpOworICAobmV3IFRlc3QoInNzYzA0NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMUUtMiIpKS5zZXRTY2FsZSgyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDEiKTsKKyAgKG5ldyBUZXN0KCJzc2MwNDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjBFLTEwIikpLnNldFNjYWxlKDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMCIpOworICAKKyAgLy8gY2hlY2sgcm91bmRpbmcKKyAgKG5ldyBUZXN0KCJzc2MwNTAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0NFSUxJTkcpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMSIpOworICAobmV3IFRlc3QoInNzYzA1MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuc2V0U2NhbGUoMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfQ0VJTElORykudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJzc2MwNTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0NFSUxJTkcpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInNzYzA1MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuc2V0U2NhbGUoMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRE9XTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwIik7CisgIChuZXcgVGVzdCgic3NjMDU0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9ET1dOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoInNzYzA1NSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuc2V0U2NhbGUoMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRE9XTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgic3NjMDU2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwIik7CisgIChuZXcgVGVzdCgic3NjMDU3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwNTgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0ZMT09SKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwNTkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRE9XTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwIik7CisgIChuZXcgVGVzdCgic3NjMDYwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wIik7CisgIChuZXcgVGVzdCgic3NjMDYxIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0RPV04pLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInNzYzA2MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuc2V0U2NhbGUoMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwNjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDEsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwNjQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTikudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgic3NjMDY1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAxNSIpKS5zZXRTY2FsZSgyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX0VWRU4pLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMiIpOworICAobmV3IFRlc3QoInNzYzA2NiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMTUiKSkuc2V0U2NhbGUoMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOworICAobmV3IFRlc3QoInNzYzA2NyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMTUiKSkuc2V0U2NhbGUoMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwNjgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDIsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMSIpOworICAobmV3IFRlc3QoInNzYzA2OSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMDUiKSkuc2V0U2NhbGUoMSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJzc2MwNzAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVApLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInNzYzA3MSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wOTUiKSkuc2V0U2NhbGUoMixjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEwIik7CisgIChuZXcgVGVzdCgic3NjMDcyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA5NSIpKS5zZXRTY2FsZSgxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMSIpOworICAobmV3IFRlc3QoInNzYzA3MyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wOTUiKSkuc2V0U2NhbGUoMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgic3NjMDc0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgyLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAxIik7CisgIChuZXcgVGVzdCgic3NjMDc1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwNSIpKS5zZXRTY2FsZSgxLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9VUCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgKG5ldyBUZXN0KCJzc2MwNzYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDA1IikpLnNldFNjYWxlKDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VQKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgCisgIHRyeXtjaGVja3NjYWxlOmRveworICAgKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgxKSkuc2V0U2NhbGUoLTgpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiAkMTE3KXtlPSQxMTc7CisgICBmbGFnPShlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJOZWdhdGl2ZSBzY2FsZTogLTgiKTsKKyAgfS8qY2hlY2tzY2FsZSovCisgIChuZXcgVGVzdCgic3NjMTAwIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja3J1bm46ZG97CisgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDEuMDAwMUQpKS5zZXRTY2FsZSgzKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24gJDExOCl7ZT0kMTE4OworICAgZmxhZz0oZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiUm91bmRpbmcgbmVjZXNzYXJ5Iik7CisgIH0vKmNoZWNrcnVubiovCisgIChuZXcgVGVzdCgic3NjMTAxIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja3J1bm46ZG97CisgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKDFFLThEKSkuc2V0U2NhbGUoMyk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uICQxMTkpe2U9JDExOTsKKyAgIGZsYWc9KGUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIlJvdW5kaW5nIG5lY2Vzc2FyeSIpOworICB9LypjaGVja3J1bm4qLworICAobmV3IFRlc3QoInNzYzEwMiIpKS5vaz1mbGFnOworICBzdW1tYXJ5KCJzZXRTY2FsZSIpOworICByZXR1cm47fQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUgPGNvZGU+QmlnRGVjaW1hbC5zaG9ydFZhbHVlKCk8L2NvZGU+IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFnc2hvcnR2YWx1ZSgpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGphdmEubGFuZy5TdHJpbmcgdj1udWxsOworICBqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiBhZT1udWxsOworICBqYXZhLmxhbmcuU3RyaW5nIGJhZHN0cmluZ3NbXTsKKyAgaW50IGk9MDsKKyAgamF2YS5sYW5nLlN0cmluZyBub3JtPW51bGw7CisgIAorICAobmV3IFRlc3QoInNodjAwMiIpKS5vaz0oKChzaG9ydCkwKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnNob3J0VmFsdWUoKSk7CisgIChuZXcgVGVzdCgic2h2MDAzIikpLm9rPSgoKHNob3J0KTEpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkuc2hvcnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJzaHYwMDQiKSkub2s9KCgoc2hvcnQpOTkpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjk5IikpLnNob3J0VmFsdWUoKSk7CisgIChuZXcgVGVzdCgic2h2MDA2IikpLm9rPSgoc21heCkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChzbWF4KSkuc2hvcnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJzaHYwMDciKSkub2s9KChzbWluKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHNtaW4pKS5zaG9ydFZhbHVlKCkpOworICAobmV3IFRlc3QoInNodjAwOCIpKS5vaz0oKHNuZWcpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoc25lZykpLnNob3J0VmFsdWUoKSk7CisgIChuZXcgVGVzdCgic2h2MDA5IikpLm9rPSgoc3plcikpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChzemVyKSkuc2hvcnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJzaHYwMTAiKSkub2s9KChzcG9zKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHNwb3MpKS5zaG9ydFZhbHVlKCkpOworICAobmV3IFRlc3QoInNodjAxMSIpKS5vaz0oKHNtaW4pKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoc21heCsxKSkuc2hvcnRWYWx1ZSgpKTsKKyAgKG5ldyBUZXN0KCJzaHYwMTIiKSkub2s9KChzbWF4KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHNtaW4tMSkpLnNob3J0VmFsdWUoKSk7CisgIAorICAobmV3IFRlc3QoInNodjAyMiIpKS5vaz0oKChzaG9ydCkwKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnNob3J0VmFsdWVFeGFjdCgpKTsKKyAgKG5ldyBUZXN0KCJzaHYwMjMiKSkub2s9KCgoc2hvcnQpMSkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS5zaG9ydFZhbHVlRXhhY3QoKSk7CisgIChuZXcgVGVzdCgic2h2MDI0IikpLm9rPSgoKHNob3J0KTk5KSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCI5OSIpKS5zaG9ydFZhbHVlRXhhY3QoKSk7CisgIChuZXcgVGVzdCgic2h2MDI2IikpLm9rPSgoc21heCkpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChzbWF4KSkuc2hvcnRWYWx1ZUV4YWN0KCkpOworICAobmV3IFRlc3QoInNodjAyNyIpKS5vaz0oKHNtaW4pKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoc21pbikpLnNob3J0VmFsdWVFeGFjdCgpKTsKKyAgKG5ldyBUZXN0KCJzaHYwMjgiKSkub2s9KChzbmVnKSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHNuZWcpKS5zaG9ydFZhbHVlRXhhY3QoKSk7CisgIChuZXcgVGVzdCgic2h2MDI5IikpLm9rPSgoc3plcikpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChzemVyKSkuc2hvcnRWYWx1ZUV4YWN0KCkpOworICAobmV3IFRlc3QoInNodjAzMCIpKS5vaz0oKHNwb3MpKT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoc3BvcykpLnNob3J0VmFsdWVFeGFjdCgpKTsKKyAgdHJ5eworICAgdj0iLTg4ODg4ODg4ODg4IjsKKyAgIChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodikpLnNob3J0VmFsdWVFeGFjdCgpOworICAgZmxhZz1mYWxzZTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDEyMCl7YWU9JDEyMDsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK3YpOworICB9CisgIChuZXcgVGVzdCgic2h2MTAwIikpLm9rPWZsYWc7CisgIHRyeXsKKyAgIHY9Ijg4ODg4ODg4ODg4IjsKKyAgIChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwodikpLnNob3J0VmFsdWVFeGFjdCgpOworICAgZmxhZz1mYWxzZTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDEyMSl7YWU9JDEyMTsKKyAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK3YpOworICB9CisgIChuZXcgVGVzdCgic2h2MTAxIikpLm9rPWZsYWc7CisgIHRyeXsKKyAgIHY9IjEuNSI7CisgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHYpKS5zaG9ydFZhbHVlRXhhY3QoKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMjIpe2FlPSQxMjI7CisgICBmbGFnPShhZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiRGVjaW1hbCBwYXJ0IG5vbi16ZXJvOiIrIiAiK3YpOworICB9CisgIChuZXcgVGVzdCgic2h2MTAyIikpLm9rPWZsYWc7CisgIAorICBiYWRzdHJpbmdzPW5ldyBqYXZhLmxhbmcuU3RyaW5nW117IjEyMzQ1NiIsKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChzbWF4KSkuYWRkKG9uZSkudG9TdHJpbmcoKSwobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHNtaW4pKS5zdWJ0cmFjdChvbmUpLnRvU3RyaW5nKCksIjcxMTExIiwiODExMTEiLCI5MTExMSIsIi03MTExMSIsIi04MTExMSIsIi05MTExMSIsKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChzbWluKSkubXVsdGlwbHkodHdvKS50b1N0cmluZygpLChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoc21heCkpLm11bHRpcGx5KHR3bykudG9TdHJpbmcoKSwobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHNtaW4pKS5tdWx0aXBseSh0ZW4pLnRvU3RyaW5nKCksKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChzbWF4KSkubXVsdGlwbHkodGVuKS50b1N0cmluZygpLCItMTIzNDU2In07IC8vIDIyMAorICAvLyAyMjEKKyAgLy8gMjIyCisgIC8vIDIyMworICAvLyAyMjQKKyAgLy8gMjI1CisgIC8vIDIyNgorICAvLyAyMjcKKyAgLy8gMjI4CisgIC8vIDIyOQorICAvLyAyMzAKKyAgLy8gMjMxCisgIC8vIDIzMgorICAvLyAyMzMKKyAge2ludCAkMTIzPWJhZHN0cmluZ3MubGVuZ3RoO2k9MDtpOmZvcig7JDEyMz4wOyQxMjMtLSxpKyspeworICAgdHJ5eworICAgIHY9YmFkc3RyaW5nc1tpXTsKKyAgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHYpKS5zaG9ydFZhbHVlRXhhY3QoKTsKKyAgICBmbGFnPWZhbHNlOworICAgfQorICAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxMjQpe2FlPSQxMjQ7CisgICAgbm9ybT0obmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHYpKS50b1N0cmluZygpOworICAgIGZsYWc9KGFlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJDb252ZXJzaW9uIG92ZXJmbG93OiIrIiAiK25vcm0pOworICAgfQorICAgKG5ldyBUZXN0KCJzaHYiKygyMjAraSkpKS5vaz1mbGFnOworICAgfQorICB9LyppKi8KKyAgCisgIAorICBzdW1tYXJ5KCJzaG9ydFZhbHVlKyIpOworICByZXR1cm47fQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjc2lnbnVtfSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ3NpZ251bSgpeworICAvLyBuZWNlc3NhcmlseSBjaGVja3Mgc29tZSBvYnNjdXJlIGNvbnN0cnVjdGlvbnMsIHRvbworICAobmV3IFRlc3QoInNpZzAwMSIpKS5vaz0oLTEpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEiKSkuc2lnbnVtKCkpOworICAobmV3IFRlc3QoInNpZzAwMiIpKS5vaz0oLTEpPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMDAxMCIpKS5zaWdudW0oKSk7CisgIChuZXcgVGVzdCgic2lnMDAzIikpLm9rPSgtMSk9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4wMDEiKSkuc2lnbnVtKCkpOworICAobmV3IFRlc3QoInNpZzAwNCIpKS5vaz0wPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMDAiKSkuc2lnbnVtKCkpOworICAobmV3IFRlc3QoInNpZzAwNSIpKS5vaz0wPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAiKSkuc2lnbnVtKCkpOworICAobmV3IFRlc3QoInNpZzAwNiIpKS5vaz0wPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS5zaWdudW0oKSk7CisgIChuZXcgVGVzdCgic2lnMDA3IikpLm9rPTA9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMCIpKS5zaWdudW0oKSk7CisgIChuZXcgVGVzdCgic2lnMDA4IikpLm9rPTA9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMC4wIikpLnNpZ251bSgpKTsKKyAgKG5ldyBUZXN0KCJzaWcwMDkiKSkub2s9MT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAxIikpLnNpZ251bSgpKTsKKyAgKG5ldyBUZXN0KCJzaWcwMTAiKSkub2s9MT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAxIikpLnNpZ251bSgpKTsKKyAgKG5ldyBUZXN0KCJzaWcwMTEiKSkub2s9MT09KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAwLjAxMCIpKS5zaWdudW0oKSk7CisgIChuZXcgVGVzdCgic2lnMDEyIikpLm9rPTE9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMS4wMSIpKS5zaWdudW0oKSk7CisgIChuZXcgVGVzdCgic2lnMDEzIikpLm9rPTE9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMC4wMSIpKS5zaWdudW0oKSk7CisgIChuZXcgVGVzdCgic2lnMDE0IikpLm9rPTE9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMC4wMDEiKSkuc2lnbnVtKCkpOworICAobmV3IFRlc3QoInNpZzAxNSIpKS5vaz0xPT0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMSIpKS5zaWdudW0oKSk7CisgIChuZXcgVGVzdCgic2lnMDE2IikpLm9rPTE9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxZSsxMiIpKS5zaWdudW0oKSk7CisgIChuZXcgVGVzdCgic2lnMDE3IikpLm9rPTA9PSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwMGUrMTIiKSkuc2lnbnVtKCkpOworICBzdW1tYXJ5KCJzaWdudW0iKTsKKyAgcmV0dXJuO30KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI3RvQmlnRGVjaW1hbH0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWd0b2JpZ2RlY2ltYWwoKXsKKyAgKG5ldyBUZXN0KCJ0YmQwMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkudG9CaWdEZWNpbWFsKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidGJkMDAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMSIpKS50b0JpZ0RlY2ltYWwoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgVGVzdCgidGJkMDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS50b0JpZ0RlY2ltYWwoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ0YmQwMDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEiKSkudG9CaWdEZWNpbWFsKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgidGJkMDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRSsyIikpLnRvQmlnRGVjaW1hbCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwIik7CisgIChuZXcgVGVzdCgidGJkMDA2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRS0yIikpLnRvQmlnRGVjaW1hbCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMSIpOworICAobmV3IFRlc3QoInRiZDAwNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMUUtOCIpKS50b0JpZ0RlY2ltYWwoKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwMDAwMDEiKTsKKyAgKG5ldyBUZXN0KCJ0YmQwMDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFFLTkiKSkudG9CaWdEZWNpbWFsKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwMDAwMDAwMSIpOworICAobmV3IFRlc3QoInRiZDAwOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMUUxMCIpKS50b0JpZ0RlY2ltYWwoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAwMDAwMDAwIik7CisgIChuZXcgVGVzdCgidGJkMDEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRTEyIikpLnRvQmlnRGVjaW1hbCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMDAwMDAwMDAwMCIpOworICBzdW1tYXJ5KCJ0b0JpZ0RlY2ltYWwiKTsKKyAgcmV0dXJuO30KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI3RvQmlnSW50ZWdlcn0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWd0b2JpZ2ludGVnZXIoKXsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBqYXZhLmxhbmcuU3RyaW5nIGJhZHN0cmluZ3NbXTsKKyAgaW50IGk9MDsKKyAgKG5ldyBUZXN0KCJ0YmkwMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMDIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidGJpMDAzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMDUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwMDAiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwIik7CisgIChuZXcgVGVzdCgidGJpMDA2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMUUrMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgVGVzdCgidGJpMDA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwRSswIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInRiaTAwOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzFFKzAiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgidGJpMDA5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMEUrMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgVGVzdCgidGJpMDEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRSszIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMCIpOworICAobmV3IFRlc3QoInRiaTAxMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMTIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDEiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidGJpMDEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidGJpMDE0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjEiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidGJpMDE1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4wMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjAxIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInRiaTAxNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTAuMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMTgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjEiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidGJpMDE5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInRiaTAyMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wMSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMjEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMjIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjAwIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMjQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjAxIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMjUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjAiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoInRiaTAyNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEuMSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgVGVzdCgidGJpMDI3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMTExLjExMSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMTEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMjgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxMTEuMTExIikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMTExIik7CisgIChuZXcgVGVzdCgidGJpMDI5IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjA5IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInRiaTAzMCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC45IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInRiaTAzMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wOSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMzIiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDUiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgidGJpMDMzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjA0IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInRiaTAzNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS45OSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMzQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuOSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMzUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuNSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMzYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuNCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMzciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjA5IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMzgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjA1IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwMzkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjA0IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwNDAiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjk5IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwNDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjkiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoInRiaTA0MiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEuNSIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgVGVzdCgidGJpMDQzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMS40IikpLnRvQmlnSW50ZWdlcigpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkwNDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjFFLTEwMDAiKSkudG9CaWdJbnRlZ2VyKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidGJpMDQ1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMUUtMTAwMCIpKS50b0JpZ0ludGVnZXIoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgCisgIC8vIEV4YWN0IHZhcmlldHkgLS0KKyAgKG5ldyBUZXN0KCJ0YmkxMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoInRiaTEwMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMCIpKS50b0JpZ0ludGVnZXJFeGFjdCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInRiaTEwMyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzEiKSkudG9CaWdJbnRlZ2VyRXhhY3QoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkxMDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMCIpOworICAobmV3IFRlc3QoInRiaTEwNSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTAwMCIpKS50b0JpZ0ludGVnZXJFeGFjdCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwMCIpOworICAobmV3IFRlc3QoInRiaTEwNiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTFFKzAiKSkudG9CaWdJbnRlZ2VyRXhhY3QoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgVGVzdCgidGJpMTA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwRSswIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidGJpMTA4IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIrMUUrMCIpKS50b0JpZ0ludGVnZXJFeGFjdCgpLnRvU3RyaW5nKCkpLmVxdWFscygiMSIpOworICAobmV3IFRlc3QoInRiaTEwOSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTBFKzAiKSkudG9CaWdJbnRlZ2VyRXhhY3QoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgVGVzdCgidGJpMTEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRSszIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxMDAwIik7CisgIChuZXcgVGVzdCgidGJpMTExIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAwIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidGJpMTEyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAiKSkudG9CaWdJbnRlZ2VyRXhhY3QoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJ0YmkxMTMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjAwIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidGJpMTE0IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4wIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidGJpMTE1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAwIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgidGJpMTE2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAiKSkudG9CaWdJbnRlZ2VyRXhhY3QoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkxMTciKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjAwIikpLnRvQmlnSW50ZWdlckV4YWN0KCkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoInRiaTExOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTEuMCIpKS50b0JpZ0ludGVnZXJFeGFjdCgpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJ0YmkxMTkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiKSkudG9CaWdJbnRlZ2VyRXhhY3QoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgCisgIC8vIHRoZSBmb2xsb3dpbmcgc2hvdWxkIGFsbCByYWlzZSBleGNlcHRpb25zCisgIAorICBiYWRzdHJpbmdzPW5ldyBqYXZhLmxhbmcuU3RyaW5nW117IjAuMDkiLCIwLjkiLCIwLjAxIiwiMC4xIiwiLTAuMDEiLCItMC4xIiwiMS4wMSIsIi0xLjAxIiwiLTEuMSIsIi0xMTEuMTExIiwiKzExMS4xMTEiLCIxLjA5IiwiMS4wNSIsIjEuMDQiLCIxLjk5IiwiMS45IiwiMS41IiwiMS40IiwiLTEuMDkiLCItMS4wNSIsIi0xLjA0IiwiLTEuOTkiLCItMS45IiwiLTEuNSIsIi0xLjQiLCIxRS0xMDAwIiwiLTFFLTEwMDAiLCIxMUUtMSIsIjEuMSIsIjEyNzYyMzE1NjEyMzY1NjU2MTM1NjEyMzUxMjMxNTYzMTIzMTU1MTMxMjM1Ni4wMDAwMDEiLCIwLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMSJ9OyAvLyAzMDAtMzAzCisgIC8vIDMwNC0zMDcKKyAgLy8gMzA4LTMxMQorICAvLyAzMTItMzE2CisgIC8vIDMxNy0zMjAKKyAgLy8gMzIxLTMyNAorICAvLyAzMjUtMzI4CisgIC8vIDMyOQorICAvLyAzMzAKKyAgCisgIHtpbnQgJDEyNT1iYWRzdHJpbmdzLmxlbmd0aDtpPTA7aTpmb3IoOyQxMjU+MDskMTI1LS0saSsrKXsKKyAgIHRyeXsKKyAgICAobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKGJhZHN0cmluZ3NbaV0pKS50b0JpZ0ludGVnZXJFeGFjdCgpOworICAgIGZsYWc9ZmFsc2U7CisgICB9CisgICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDEyNil7CisgICAgZmxhZz10cnVlOworICAgfQorICAgKG5ldyBUZXN0KCJ0YmkiKygzMDAraSkpKS5vaz1mbGFnOworICAgfQorICB9LyppKi8KKyAgCisgIHN1bW1hcnkoInRvQmlnSW50ZWdlcisiKTsKKyAgcmV0dXJuO30KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI3RvQ2hhckFycmF5fSBtZXRob2QuICovCisgCisgcHVibGljIHZvaWQgZGlhZ3RvY2hhcmFycmF5KCl7CisgIGphdmEubGFuZy5TdHJpbmcgc3RyOworICBjaGFyIGNhcltdOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCBkOworICBjaGFyIGNhW107CisgIC8vIHRoZSBmdW5jdGlvbiBvZiB0aGlzIGhhcyBiZWVuIHRlc3RlZCBhYm92ZSwgdGhpcyBpcyBzaW1wbHkgYW4KKyAgLy8gZXhpc3RlbmNlIHByb29mIGFuZCB0eXBlLWNoZWNrCisgIHN0cj0iLTEyMy40NSI7CisgIGNhcj0oc3RyKS50b0NoYXJBcnJheSgpOworICBkPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChzdHIpOworICBjYT1kLnRvQ2hhckFycmF5KCk7CisgIChuZXcgVGVzdCgidGNhMDAxIikpLm9rPWNhLmxlbmd0aD09Y2FyLmxlbmd0aDsKKyAgKG5ldyBUZXN0KCJ0Y2EwMDIiKSkub2s9KG5ldyBqYXZhLmxhbmcuU3RyaW5nKGNhKSkuZXF1YWxzKChqYXZhLmxhbmcuT2JqZWN0KShuZXcgamF2YS5sYW5nLlN0cmluZyhjYXIpKSk7CisgIChuZXcgVGVzdCgidGNhMDAzIikpLm9rPShkLnRvQ2hhckFycmF5KCkgaW5zdGFuY2VvZiBjaGFyW10pOworICAobmV3IFRlc3QoInRjYTAwNCIpKS5vaz0oY2EgaW5zdGFuY2VvZiBjaGFyW10pOworICBzdW1tYXJ5KCJ0b0NoYXJBcnJheSIpOworICByZXR1cm47fQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjdG9TdHJpbmd9IG1ldGhvZC4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFndG9zdHJpbmcoKXsKKyAgamF2YS5sYW5nLlN0cmluZyBzdHI7CisgIGNoYXIgY2FyW107CisgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGQ7CisgIGNoYXIgY2FbXTsKKyAgamF2YS5sYW5nLlN0cmluZyBjczsKKyAgLy8gdGhlIGZ1bmN0aW9uIG9mIHRoaXMgaGFzIGJlZW4gdGVzdGVkIGFib3ZlLCB0aGlzIGlzIHNpbXBseSBhbgorICAvLyBleGlzdGVuY2UgcHJvb2YgYW5kIHR5cGUtY2hlY2sKKyAgc3RyPSIxMjMuNDUiOworICBjYXI9KHN0cikudG9DaGFyQXJyYXkoKTsKKyAgZD1uZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoY2FyLDAsY2FyLmxlbmd0aCk7CisgIGNhPWQudG9DaGFyQXJyYXkoKTsKKyAgY3M9ZC50b1N0cmluZygpOworICAobmV3IFRlc3QoInRvczAwMSIpKS5vaz0oc3RyLnRvQ2hhckFycmF5KCkubGVuZ3RoKT09Y2EubGVuZ3RoOworICAobmV3IFRlc3QoInRvczAwMiIpKS5vaz0oc3RyLmxlbmd0aCgpKT09KGNzLmxlbmd0aCgpKTsKKyAgKG5ldyBUZXN0KCJ0b3MwMDMiKSkub2s9c3RyLmVxdWFscygoamF2YS5sYW5nLk9iamVjdCkobmV3IGphdmEubGFuZy5TdHJpbmcoY2EpKSk7CisgIChuZXcgVGVzdCgidG9zMDA0IikpLm9rPXN0ci5lcXVhbHMoKGphdmEubGFuZy5PYmplY3QpY3MpOworICAobmV3IFRlc3QoInRvczAwNSIpKS5vaz0oY3MgaW5zdGFuY2VvZiBqYXZhLmxhbmcuU3RyaW5nKTsKKyAgKG5ldyBUZXN0KCJ0b3MwMDYiKSkub2s9KGQudG9TdHJpbmcoKSBpbnN0YW5jZW9mIGphdmEubGFuZy5TdHJpbmcpOworICBzdW1tYXJ5KCJ0b1N0cmluZyIpOworICByZXR1cm47fQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCB0aGUge0BsaW5rIEJpZ0RlY2ltYWwjdW5zY2FsZWRWYWx1ZX0gbWV0aG9kLiAqLworIAorIHB1YmxpYyB2b2lkIGRpYWd1bnNjYWxlZHZhbHVlKCl7CisgIC8vIGp1c3QgbGlrZSB0b0JpZ0ludGVnZXIsIGJ1dCBzY2FseSBiaXRzIGFyZSBwcmVzZXJ2ZWQgW3dpdGhvdXQgZG90c10KKyAgKG5ldyBUZXN0KCJ1bnMwMDEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgVGVzdCgidW5zMDAyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMDMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMDQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgVGVzdCgidW5zMDA1IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMDAwIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMDYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xRSswIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgVGVzdCgidW5zMDA3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwRSswIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMDgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIisxRSswIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMDkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEwRSswIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgVGVzdCgidW5zMDEwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxRSszIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMDAiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMTEiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInVuczAxMiIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4wMSIpKS51bnNjYWxlZFZhbHVlKCkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgidW5zMDEzIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIwLjAiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMCIpOworICAobmV3IFRlc3QoInVuczAxNCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMC4xIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMTUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjAwIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMTYiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjAxIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xIik7CisgIChuZXcgVGVzdCgidW5zMDE3IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMC4wIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMTgiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0wLjEiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMTkiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEuMDAiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMTAwIik7CisgIChuZXcgVGVzdCgidW5zMDIwIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjAxIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwMSIpOworICAobmV3IFRlc3QoInVuczAyMSIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMS4wIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgVGVzdCgidW5zMDIyIikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxLjEiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMTEiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMjMiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjAwIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMDAiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMjQiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjAxIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMDEiKTsKKyAgKG5ldyBUZXN0KCJ1bnMwMjUiKSkub2s9KChuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIi0xLjAiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiLTEwIik7CisgIChuZXcgVGVzdCgidW5zMDI2IikpLm9rPSgobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCItMS4xIikpLnVuc2NhbGVkVmFsdWUoKS50b1N0cmluZygpKS5lcXVhbHMoIi0xMSIpOworICAobmV3IFRlc3QoInVuczAyNyIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiLTExMS4xMTEiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiLTExMTExMSIpOworICAobmV3IFRlc3QoInVuczAyOCIpKS5vaz0oKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiKzExMS4xMTEiKSkudW5zY2FsZWRWYWx1ZSgpLnRvU3RyaW5nKCkpLmVxdWFscygiMTExMTExIik7CisgIHN1bW1hcnkoInVuc2NhbGVkVmFsdWUiKTsKKyAgcmV0dXJuO30KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBCaWdEZWNpbWFsI3ZhbHVlT2Z9IG1ldGhvZCBbbG9uZyBhbmQgZG91YmxlXS4gKi8KKyAKKyBwdWJsaWMgdm9pZCBkaWFndmFsdWVvZigpeworICBib29sZWFuIGZsYWc9ZmFsc2U7CisgIGphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24gZT1udWxsOworICBkb3VibGUgZHplcjsKKyAgZG91YmxlIGRwb3M7CisgIGRvdWJsZSBkbmVnOworICBkb3VibGUgZHBvczU7CisgIGRvdWJsZSBkbmVnNTsKKyAgZG91YmxlIGRtaW47CisgIGRvdWJsZSBkbWF4OworICBkb3VibGUgZDsKKyAgCisgIC8vIHZhbHVlT2YobG9uZyBbLHNjYWxlXSkgLS0KKyAgCisgIChuZXcgVGVzdCgidmFsMDAxIikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKChsb25nKSgoYnl0ZSktMikpLnRvU3RyaW5nKCkpLmVxdWFscygiLTIiKTsKKyAgKG5ldyBUZXN0KCJ2YWwwMDIiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoKGxvbmcpKChieXRlKS0xKSkudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoInZhbDAwMyIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZigobG9uZykoKGJ5dGUpLTApKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJ2YWwwMDQiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoKGxvbmcpKChieXRlKSsxKSkudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgidmFsMDA1IikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKChsb25nKSgoYnl0ZSkrMikpLnRvU3RyaW5nKCkpLmVxdWFscygiMiIpOworICAobmV3IFRlc3QoInZhbDAwNiIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZigobG9uZykoKGJ5dGUpMTApKS50b1N0cmluZygpKS5lcXVhbHMoIjEwIik7CisgIChuZXcgVGVzdCgidmFsMDA3IikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKChsb25nKSgoYnl0ZSkxMSkpLnRvU3RyaW5nKCkpLmVxdWFscygiMTEiKTsKKyAgKG5ldyBUZXN0KCJ2YWwwMDgiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobG1pbikudG9TdHJpbmcoKSkuZXF1YWxzKCItOTIyMzM3MjAzNjg1NDc3NTgwOCIpOworICAobmV3IFRlc3QoInZhbDAwOSIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihsbWF4KS50b1N0cmluZygpKS5lcXVhbHMoIjkyMjMzNzIwMzY4NTQ3NzU4MDciKTsKKyAgKG5ldyBUZXN0KCJ2YWwwMTAiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobG5lZykudG9TdHJpbmcoKSkuZXF1YWxzKCItMSIpOworICAobmV3IFRlc3QoInZhbDAxMSIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihsemVyKS50b1N0cmluZygpKS5lcXVhbHMoIjAiKTsKKyAgKG5ldyBUZXN0KCJ2YWwwMTIiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobHBvcykudG9TdHJpbmcoKSkuZXF1YWxzKCIxIik7CisgIChuZXcgVGVzdCgidmFsMDEzIikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGxtaW4sMCkudG9TdHJpbmcoKSkuZXF1YWxzKCItOTIyMzM3MjAzNjg1NDc3NTgwOCIpOworICAobmV3IFRlc3QoInZhbDAxNCIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihsbWF4LDApLnRvU3RyaW5nKCkpLmVxdWFscygiOTIyMzM3MjAzNjg1NDc3NTgwNyIpOworICAobmV3IFRlc3QoInZhbDAxNSIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihsbmVnLDApLnRvU3RyaW5nKCkpLmVxdWFscygiLTEiKTsKKyAgKG5ldyBUZXN0KCJ2YWwwMTYiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobHBvcywwKS50b1N0cmluZygpKS5lcXVhbHMoIjEiKTsKKyAgCisgIChuZXcgVGVzdCgidmFsMDE3IikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGx6ZXIsMCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwIik7CisgIChuZXcgVGVzdCgidmFsMDE4IikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGx6ZXIsMSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAiKTsKKyAgKG5ldyBUZXN0KCJ2YWwwMTkiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobHplciwyKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAiKTsKKyAgKG5ldyBUZXN0KCJ2YWwwMjAiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YobHplciwzKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDAwIik7CisgIChuZXcgVGVzdCgidmFsMDIxIikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGx6ZXIsMTApLnRvU3RyaW5nKCkpLmVxdWFscygiMC4wMDAwMDAwMDAwIik7CisgIAorICAobmV3IFRlc3QoInZhbDAyMiIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihsbWluLDcpLnRvU3RyaW5nKCkpLmVxdWFscygiLTkyMjMzNzIwMzY4NS40Nzc1ODA4Iik7CisgIChuZXcgVGVzdCgidmFsMDIzIikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGxtYXgsMTEpLnRvU3RyaW5nKCkpLmVxdWFscygiOTIyMzM3MjAuMzY4NTQ3NzU4MDciKTsKKyAgCisgIAorICB0cnl7Y2hlY2tzY2FsZTpkb3sKKyAgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoKGxvbmcpMjMsLTgpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uICQxMjcpe2U9JDEyNzsKKyAgIGZsYWc9KGUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIk5lZ2F0aXZlIHNjYWxlOiAtOCIpOworICB9LypjaGVja3NjYWxlKi8KKyAgKG5ldyBUZXN0KCJ2YWwxMDAiKSkub2s9ZmxhZzsKKyAgCisgIC8vIHZhbHVlT2YoZG91YmxlKSAtLQorICAKKyAgZHplcj0oZG91YmxlKTA7CisgIGRwb3M9KGRvdWJsZSkxOworICBkcG9zPWRwb3MvKChkb3VibGUpMTApOworICBkbmVnPShkb3VibGUpLWRwb3M7CisgIChuZXcgVGVzdCgidmFsMjAxIikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGRuZWcpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuMSIpOworICAobmV3IFRlc3QoInZhbDIwMiIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihkemVyKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMCIpOyAvLyBjZi4gY29uc3RydWN0b3IKKyAgKG5ldyBUZXN0KCJ2YWwyMDMiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoZHBvcykudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjEiKTsKKyAgZHBvczU9KGRvdWJsZSkwLjVEOworICBkbmVnNT0oZG91YmxlKS1kcG9zNTsKKyAgKG5ldyBUZXN0KCJ2YWwyMDQiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoZG5lZzUpLnRvU3RyaW5nKCkpLmVxdWFscygiLTAuNSIpOworICAobmV3IFRlc3QoInZhbDIwNSIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihkcG9zNSkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjUiKTsKKyAgZG1pbj1qYXZhLmxhbmcuRG91YmxlLk1JTl9WQUxVRTsKKyAgZG1heD1qYXZhLmxhbmcuRG91YmxlLk1BWF9WQUxVRTsKKyAgKG5ldyBUZXN0KCJ2YWwyMDYiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoZG1pbikudG9TdHJpbmcoKSkuZXF1YWxzKCI0LjlFLTMyNCIpOworICAobmV3IFRlc3QoInZhbDIwNyIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihkbWF4KS50b1N0cmluZygpKS5lcXVhbHMoIjEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4Iik7CisgIAorICAvLyBuYXN0aWVzCisgIGQ9KGRvdWJsZSk5OworICBkPWQvKChkb3VibGUpMTApOworICAobmV3IFRlc3QoInZhbDIxMCIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihkKS50b1N0cmluZygpKS5lcXVhbHMoIjAuOSIpOworICBkPWQvKChkb3VibGUpMTApOworICAobmV3IFRlc3QoInZhbDIxMSIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihkKS50b1N0cmluZygpKS5lcXVhbHMoIjAuMDkiKTsKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBUZXN0KCJ2YWwyMTIiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoZCkudG9TdHJpbmcoKSkuZXF1YWxzKCIwLjAwOTAiKTsKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBUZXN0KCJ2YWwyMTMiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoZCkudG9TdHJpbmcoKSkuZXF1YWxzKCI5LjBFLTQiKTsKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBUZXN0KCJ2YWwyMTQiKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoZCkudG9TdHJpbmcoKSkuZXF1YWxzKCI4Ljk5OTk5OTk5OTk5OTk5OUUtNSIpOworICBkPWQvKChkb3VibGUpMTApOworICAobmV3IFRlc3QoInZhbDIxNSIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihkKS50b1N0cmluZygpKS5lcXVhbHMoIjguOTk5OTk5OTk5OTk5OTk5RS02Iik7CisgIGQ9ZC8oKGRvdWJsZSkxMCk7CisgIChuZXcgVGVzdCgidmFsMjE2IikpLm9rPShjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGQpLnRvU3RyaW5nKCkpLmVxdWFscygiOC45OTk5OTk5OTk5OTk5OTlFLTciKTsKKyAgZD1kLygoZG91YmxlKTEwKTsKKyAgKG5ldyBUZXN0KCJ2YWwyMTciKSkub2s9KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoZCkudG9TdHJpbmcoKSkuZXF1YWxzKCI4Ljk5OTk5OTk5OTk5OTk5OUUtOCIpOworICBkPWQvKChkb3VibGUpMTApOworICAobmV3IFRlc3QoInZhbDIxOCIpKS5vaz0oY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihkKS50b1N0cmluZygpKS5lcXVhbHMoIjguOTk5OTk5OTk5OTk5OTk4RS05Iik7CisgIAorICB0cnl7Y2hlY2twaW46ZG97CisgICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGphdmEubGFuZy5Eb3VibGUuUE9TSVRJVkVfSU5GSU5JVFkpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uICQxMjgpeworICAgZmxhZz10cnVlOworICB9LypjaGVja3BpbiovCisgIChuZXcgVGVzdCgidmFsMzAxIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja25pbjpkb3sKKyAgIGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoamF2YS5sYW5nLkRvdWJsZS5ORUdBVElWRV9JTkZJTklUWSk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24gJDEyOSl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbmluKi8KKyAgKG5ldyBUZXN0KCJ2YWwzMDIiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrbmFuOmRveworICAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihqYXZhLmxhbmcuRG91YmxlLk5hTik7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24gJDEzMCl7CisgICBmbGFnPXRydWU7CisgIH0vKmNoZWNrbmFuKi8KKyAgKG5ldyBUZXN0KCJ2YWwzMDMiKSkub2s9ZmxhZzsKKyAgCisgIHN1bW1hcnkoInZhbHVlT2YiKTsKKyAgcmV0dXJuO30KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgCisgLyoqIFRlc3QgdGhlIHtAbGluayBNYXRoQ29udGV4dH0gY2xhc3MuICovCisgCisgcHVibGljIHZvaWQgZGlhZ21hdGhjb250ZXh0KCl7CisgIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBtY2NvbjE7CisgIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBtY2NvbjI7CisgIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBtY2NvbjM7CisgIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBtY2NvbjQ7CisgIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBtY3JtYzsKKyAgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0IG1jcm1kOworICBjb20uaWJtLm1hdGguTWF0aENvbnRleHQgbWNybWY7CisgIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBtY3JtaGQ7CisgIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBtY3JtaGU7CisgIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBtY3JtaHU7CisgIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBtY3JtdW47CisgIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBtY3JtdTsKKyAgYm9vbGVhbiBmbGFnPWZhbHNlOworICBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGU9bnVsbDsKKyAgLy8gdGhlc2UgdGVzdHMgYXJlIG1vc3RseSBleGlzdGVuY2UgY2hlY2tzCisgIChuZXcgVGVzdCgibWNuMDAxIikpLm9rPShjb20uaWJtLm1hdGguTWF0aENvbnRleHQuREVGQVVMVC5nZXREaWdpdHMoKSk9PTk7CisgIChuZXcgVGVzdCgibWNuMDAyIikpLm9rPShjb20uaWJtLm1hdGguTWF0aENvbnRleHQuREVGQVVMVC5nZXRGb3JtKCkpPT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuU0NJRU5USUZJQzsKKyAgKG5ldyBUZXN0KCJtY24wMDMiKSkub2s9KGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ERUZBVUxULmdldEZvcm0oKSkhPWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5FTkdJTkVFUklORzsKKyAgKG5ldyBUZXN0KCJtY24wMDQiKSkub2s9KGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ERUZBVUxULmdldEZvcm0oKSkhPWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTjsKKyAgKG5ldyBUZXN0KCJtY24wMDUiKSkub2s9KGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ERUZBVUxULmdldExvc3REaWdpdHMoKT8xOjApPT0wOworICAobmV3IFRlc3QoIm1jbjAwNiIpKS5vaz0oY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LkRFRkFVTFQuZ2V0Um91bmRpbmdNb2RlKCkpPT1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUDsKKyAgCisgIChuZXcgVGVzdCgibWNuMDEwIikpLm9rPWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9DRUlMSU5HPj0wOworICAobmV3IFRlc3QoIm1jbjAxMSIpKS5vaz1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRE9XTj49MDsKKyAgKG5ldyBUZXN0KCJtY24wMTIiKSkub2s9Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0ZMT09SPj0wOworICAobmV3IFRlc3QoIm1jbjAxMyIpKS5vaz1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOPj0wOworICAobmV3IFRlc3QoIm1jbjAxNCIpKS5vaz1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9FVkVOPj0wOworICAobmV3IFRlc3QoIm1jbjAxNSIpKS5vaz1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9VUD49MDsKKyAgKG5ldyBUZXN0KCJtY24wMTYiKSkub2s9Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZPj0wOworICAobmV3IFRlc3QoIm1jbjAxNyIpKS5vaz1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVVA+PTA7CisgIAorICBtY2NvbjE9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgxMTEpOworICAobmV3IFRlc3QoIm1jbjAyMSIpKS5vaz0obWNjb24xLmdldERpZ2l0cygpKT09MTExOworICAobmV3IFRlc3QoIm1jbjAyMiIpKS5vaz0obWNjb24xLmdldEZvcm0oKSk9PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDOworICAobmV3IFRlc3QoIm1jbjAyMyIpKS5vaz0obWNjb24xLmdldExvc3REaWdpdHMoKT8xOjApPT0wOworICAobmV3IFRlc3QoIm1jbjAyNCIpKS5vaz0obWNjb24xLmdldFJvdW5kaW5nTW9kZSgpKT09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVA7CisgIAorICBtY2NvbjI9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCg3OCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuRU5HSU5FRVJJTkcpOworICAobmV3IFRlc3QoIm1jbjAzMSIpKS5vaz0obWNjb24yLmdldERpZ2l0cygpKT09Nzg7CisgIChuZXcgVGVzdCgibWNuMDMyIikpLm9rPShtY2NvbjIuZ2V0Rm9ybSgpKT09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LkVOR0lORUVSSU5HOworICAobmV3IFRlc3QoIm1jbjAzMyIpKS5vaz0obWNjb24yLmdldExvc3REaWdpdHMoKT8xOjApPT0wOworICAobmV3IFRlc3QoIm1jbjAzNCIpKS5vaz0obWNjb24yLmdldFJvdW5kaW5nTW9kZSgpKT09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVA7CisgIAorICBtY2NvbjM9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCg1LGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTix0cnVlKTsKKyAgKG5ldyBUZXN0KCJtY24wNDEiKSkub2s9KG1jY29uMy5nZXREaWdpdHMoKSk9PTU7CisgIChuZXcgVGVzdCgibWNuMDQyIikpLm9rPShtY2NvbjMuZ2V0Rm9ybSgpKT09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOOworICAobmV3IFRlc3QoIm1jbjA0MyIpKS5vaz0obWNjb24zLmdldExvc3REaWdpdHMoKT8xOjApPT0xOworICAobmV3IFRlc3QoIm1jbjA0NCIpKS5vaz0obWNjb24zLmdldFJvdW5kaW5nTW9kZSgpKT09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfVVA7CisgIAorICBtY2NvbjQ9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDLGZhbHNlLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9GTE9PUik7CisgIChuZXcgVGVzdCgibWNuMDUxIikpLm9rPShtY2NvbjQuZ2V0RGlnaXRzKCkpPT0wOworICAobmV3IFRlc3QoIm1jbjA1MiIpKS5vaz0obWNjb240LmdldEZvcm0oKSk9PWNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5TQ0lFTlRJRklDOworICAobmV3IFRlc3QoIm1jbjA1MyIpKS5vaz0obWNjb240LmdldExvc3REaWdpdHMoKT8xOjApPT0wOworICAobmV3IFRlc3QoIm1jbjA1NCIpKS5vaz0obWNjb240LmdldFJvdW5kaW5nTW9kZSgpKT09Y29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0ZMT09SOworICAKKyAgKG5ldyBUZXN0KCJtY24wNjEiKSkub2s9KG1jY29uMS50b1N0cmluZygpKS5lcXVhbHMoImRpZ2l0cz0xMTEgZm9ybT1TQ0lFTlRJRklDIGxvc3REaWdpdHM9MCByb3VuZGluZ01vZGU9Uk9VTkRfSEFMRl9VUCIpOworICAKKyAgKG5ldyBUZXN0KCJtY24wNjIiKSkub2s9KG1jY29uMi50b1N0cmluZygpKS5lcXVhbHMoImRpZ2l0cz03OCBmb3JtPUVOR0lORUVSSU5HIGxvc3REaWdpdHM9MCByb3VuZGluZ01vZGU9Uk9VTkRfSEFMRl9VUCIpOworICAKKyAgKG5ldyBUZXN0KCJtY24wNjMiKSkub2s9KG1jY29uMy50b1N0cmluZygpKS5lcXVhbHMoImRpZ2l0cz01IGZvcm09UExBSU4gbG9zdERpZ2l0cz0xIHJvdW5kaW5nTW9kZT1ST1VORF9IQUxGX1VQIik7CisgIAorICAobmV3IFRlc3QoIm1jbjA2NCIpKS5vaz0obWNjb240LnRvU3RyaW5nKCkpLmVxdWFscygiZGlnaXRzPTAgZm9ybT1TQ0lFTlRJRklDIGxvc3REaWdpdHM9MCByb3VuZGluZ01vZGU9Uk9VTkRfRkxPT1IiKTsKKyAgCisgIAorICAvLyBjb21wbGV0ZSB0ZXN0aW5nIHJvdW5kaW5nIG1vZGVzIHJvdW5kIHRyaXBzCisgIG1jcm1jPW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUExBSU4sZmFsc2UsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0NFSUxJTkcpOworICBtY3JtZD1uZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOLGZhbHNlLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9ET1dOKTsKKyAgbWNybWY9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTixmYWxzZSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfRkxPT1IpOworICBtY3JtaGQ9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTixmYWxzZSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfSEFMRl9ET1dOKTsKKyAgbWNybWhlPW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUExBSU4sZmFsc2UsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX0hBTEZfRVZFTik7CisgIG1jcm1odT1uZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KDAsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlBMQUlOLGZhbHNlLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5ST1VORF9IQUxGX1VQKTsKKyAgbWNybXVuPW5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoMCxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUExBSU4sZmFsc2UsY29tLmlibS5tYXRoLk1hdGhDb250ZXh0LlJPVU5EX1VOTkVDRVNTQVJZKTsKKyAgbWNybXU9bmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTixmYWxzZSxjb20uaWJtLm1hdGguTWF0aENvbnRleHQuUk9VTkRfVVApOworICAKKyAgKG5ldyBUZXN0KCJtY24wNzEiKSkub2s9KG1jcm1jLnRvU3RyaW5nKCkpLmVxdWFscygiZGlnaXRzPTAgZm9ybT1QTEFJTiBsb3N0RGlnaXRzPTAgcm91bmRpbmdNb2RlPVJPVU5EX0NFSUxJTkciKTsKKyAgCisgIChuZXcgVGVzdCgibWNuMDcyIikpLm9rPShtY3JtZC50b1N0cmluZygpKS5lcXVhbHMoImRpZ2l0cz0wIGZvcm09UExBSU4gbG9zdERpZ2l0cz0wIHJvdW5kaW5nTW9kZT1ST1VORF9ET1dOIik7CisgIAorICAobmV3IFRlc3QoIm1jbjA3MyIpKS5vaz0obWNybWYudG9TdHJpbmcoKSkuZXF1YWxzKCJkaWdpdHM9MCBmb3JtPVBMQUlOIGxvc3REaWdpdHM9MCByb3VuZGluZ01vZGU9Uk9VTkRfRkxPT1IiKTsKKyAgCisgIChuZXcgVGVzdCgibWNuMDc0IikpLm9rPShtY3JtaGQudG9TdHJpbmcoKSkuZXF1YWxzKCJkaWdpdHM9MCBmb3JtPVBMQUlOIGxvc3REaWdpdHM9MCByb3VuZGluZ01vZGU9Uk9VTkRfSEFMRl9ET1dOIik7CisgIAorICAobmV3IFRlc3QoIm1jbjA3NSIpKS5vaz0obWNybWhlLnRvU3RyaW5nKCkpLmVxdWFscygiZGlnaXRzPTAgZm9ybT1QTEFJTiBsb3N0RGlnaXRzPTAgcm91bmRpbmdNb2RlPVJPVU5EX0hBTEZfRVZFTiIpOworICAKKyAgKG5ldyBUZXN0KCJtY24wNzYiKSkub2s9KG1jcm1odS50b1N0cmluZygpKS5lcXVhbHMoImRpZ2l0cz0wIGZvcm09UExBSU4gbG9zdERpZ2l0cz0wIHJvdW5kaW5nTW9kZT1ST1VORF9IQUxGX1VQIik7CisgIAorICAobmV3IFRlc3QoIm1jbjA3NyIpKS5vaz0obWNybXVuLnRvU3RyaW5nKCkpLmVxdWFscygiZGlnaXRzPTAgZm9ybT1QTEFJTiBsb3N0RGlnaXRzPTAgcm91bmRpbmdNb2RlPVJPVU5EX1VOTkVDRVNTQVJZIik7CisgIAorICAobmV3IFRlc3QoIm1jbjA3OCIpKS5vaz0obWNybXUudG9TdHJpbmcoKSkuZXF1YWxzKCJkaWdpdHM9MCBmb3JtPVBMQUlOIGxvc3REaWdpdHM9MCByb3VuZGluZ01vZGU9Uk9VTkRfVVAiKTsKKyAgCisgIAorICAvLyBbZ2V0IG1ldGhvZHMgdGVzdGVkIGFscmVhZHldCisgIAorICAvLyBlcnJvcnMuLi4KKyAgCisgIHRyeXtjaGVja2RpZzpkb3sKKyAgIG5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoLTEpOworICAgZmxhZz1mYWxzZTsKKyAgfXdoaWxlKGZhbHNlKTt9CisgIGNhdGNoIChqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uICQxMzEpe2U9JDEzMTsKKyAgIGZsYWc9KGUuZ2V0TWVzc2FnZSgpKS5lcXVhbHMoIkRpZ2l0cyB0b28gc21hbGw6IC0xIik7CisgIH0vKmNoZWNrZGlnKi8KKyAgKG5ldyBUZXN0KCJtY24xMDEiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrZGlnYmlnOmRveworICAgbmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgxMDAwMDAwMDAwKTsKKyAgIGZsYWc9ZmFsc2U7CisgIH13aGlsZShmYWxzZSk7fQorICBjYXRjaCAoamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiAkMTMyKXtlPSQxMzI7CisgICBmbGFnPShlLmdldE1lc3NhZ2UoKSkuZXF1YWxzKCJEaWdpdHMgdG9vIGxhcmdlOiAxMDAwMDAwMDAwIik7CisgIH0vKmNoZWNrZGlnYmlnKi8KKyAgKG5ldyBUZXN0KCJtY24xMDIiKSkub2s9ZmxhZzsKKyAgCisgIHRyeXtjaGVja2Zvcm06ZG97CisgICBuZXcgY29tLmlibS5tYXRoLk1hdGhDb250ZXh0KDAsNSk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gJDEzMyl7ZT0kMTMzOworICAgZmxhZz0oZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiQmFkIGZvcm0gdmFsdWU6IDUiKTsKKyAgfS8qY2hlY2tmb3JtKi8KKyAgKG5ldyBUZXN0KCJtY24xMTEiKSkub2s9ZmxhZzsKKyAgdHJ5e2NoZWNrZm9ybW5lZzpkb3sKKyAgIG5ldyBjb20uaWJtLm1hdGguTWF0aENvbnRleHQoMCwtMSk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gJDEzNCl7ZT0kMTM0OworICAgZmxhZz0oZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiQmFkIGZvcm0gdmFsdWU6IC0xIik7CisgIH0vKmNoZWNrZm9ybW5lZyovCisgIChuZXcgVGVzdCgibWNuMTEyIikpLm9rPWZsYWc7CisgIAorICAvLyBbbG9zdERpZ2l0cyBjYW5ub3QgYmUgaW52YWxpZF0KKyAgCisgIHRyeXtjaGVja3JvdW5kOmRveworICAgbmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTixmYWxzZSwxMik7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gJDEzNSl7ZT0kMTM1OworICAgZmxhZz0oZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiQmFkIHJvdW5kaW5nTW9kZSB2YWx1ZTogMTIiKTsKKyAgfS8qY2hlY2tyb3VuZCovCisgIChuZXcgVGVzdCgibWNuMTIxIikpLm9rPWZsYWc7CisgIHRyeXtjaGVja3JvdW5kbmVnOmRveworICAgbmV3IGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCgwLGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dC5QTEFJTixmYWxzZSwtMSk7CisgICBmbGFnPWZhbHNlOworICB9d2hpbGUoZmFsc2UpO30KKyAgY2F0Y2ggKGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gJDEzNil7ZT0kMTM2OworICAgZmxhZz0oZS5nZXRNZXNzYWdlKCkpLmVxdWFscygiQmFkIHJvdW5kaW5nTW9kZSB2YWx1ZTogLTEiKTsKKyAgfS8qY2hlY2tyb3VuZG5lZyovCisgIChuZXcgVGVzdCgibWNuMTIyIikpLm9rPWZsYWc7CisgIAorICBzdW1tYXJ5KCJNYXRoQ29udGV4dCIpOworICByZXR1cm47fQorCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAKKyAvKiogVGVzdCBnZW5lcmFsIGFyaXRobWV0aWMgKGJhc2Ugb3BlcmF0b3JzKS4KKyAgKiA8cD5Vbmxpa2UgdGhlIHNwZWNpZmljIG1ldGhvZCB0ZXN0cywgdGhlc2UgdGVzdHMgd2VyZSByYW5kb21seQorICAqIGdlbmVyYXRlZCBieSBhbiBJQk0gT2JqZWN0IFJleHggcHJvY2VkdXJlLCB0aGVuIG1hbnVhbGx5IGNvcnJlY3RlZAorICAqIGZvciBrbm93biBkaWZmZXJlbmNlcyBmcm9tIEFOU0kgWDMtMjc0LiAgVGhlc2UgZGlmZmVyZW5jZXMgYXJlOgorICAqIDxvbD4KKyAgKiA8bGk+dGhlIHRyaWdnZXIgcG9pbnQgaW4gZXhwb25lbnRpYWwgbm90YXRpb24gaXMgZml4ZWQgaW4gQU5TSQorICAqICAgICBYMy0yNzQgYnV0IHZhcmllcyB3aXRoIERJR0lUUyBpbiBDbGFzc2ljIGFuZCBPYmplY3QgUmV4eAorICAqIDxsaT5zb21lIHRyYWlsaW5nIHplcm9zIHdlcmUgbWlzc2luZyAoZS5nLiwgMS4zICsgMUUtNjAgc2hvdWxkIHNob3cKKyAgKiAgICAgc2V2ZW4gdHJhaWxpbmcgemVyb3MpCisgICogPGxpPnRoZSBwb3dlciBvcGVyYXRvciBpcyBsZXNzIGFjY3VyYXRlIGluIE9iamVjdCBSZXh4CisgICogPGxpPkFOU0kgWDMtMjc0IFtlcnJhdGEgMTk5OV0gcm91bmRzIGlucHV0IG51bWJlcnMgdG8gRElHSVRTIChyYXRoZXIKKyAgKiAgICAgdGhhbiB0cnVuY2F0aW5nIHRvIERJR0lUUysxKS4KKyAgKiA8L29sPgorICAqLworIAorIHB1YmxpYyB2b2lkIGRpYWdtYXRoKCl7CisgIGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBkZWY7CisgIGRlZj1jb20uaWJtLm1hdGguTWF0aENvbnRleHQuREVGQVVMVDsKKyAgbWF0aHRlc3QoMSxkZWYsIi05Mzc1Mjg0LjQyIiwiNTUxNi45OTgzMkUrMjcyNzY5ODQiLCI1LjUxNjk5ODMyRSsyNzI3Njk4NyIsIi01LjUxNjk5ODMyRSsyNzI3Njk4NyIsIi01LjE3MjM0Mjg0RSsyNzI3Njk5NCIsIi0xLjY5OTM0NTE2RS0yNzI3Njk4MSIsIjAiLCItOTM3NTI4NC40MiIsIjYuNzkwNTc3NTJFKzQxIik7CisgIG1hdGh0ZXN0KDIsZGVmLCItNDEwLjgzMjcxMCIsIjk5LjM1ODgyNDNFLTUwMjc0MDg2MiIsIi00MTAuODMyNzEwIiwiLTQxMC44MzI3MTAiLCItNC4wODE5ODU1MEUtNTAyNzQwODU4IiwiLTQuMTM0ODM4NjhFKzUwMjc0MDg2MiIsIiIsIiIsIjEuMzY5Nzc3ODZFKzI2Iik7CisgIG1hdGh0ZXN0KDMsZGVmLCI4MDAyNS4yMzQwIiwiLTguMDMwOTc1ODEiLCI4MDAxNy4yMDMwIiwiODAwMzMuMjY1MCIsIi02NDI2ODAuNzE4IiwiLTk5NjQuNTcxNjciLCItOTk2NCIsIjQuNTkxMDI5MTYiLCI1Ljk0NTQ0NTE3RS00MCIpOworICBtYXRodGVzdCg0LGRlZiwiODEwNTIwMjAuMiIsIi00NjQ1MjU0OTUiLCItMzgzNDczNDc1IiwiNTQ1NTc3NTE1IiwiLTMuNzY1MDcyOThFKzE2IiwiLTAuMTc0NDgzNDciLCIwIiwiODEwNTIwMjAuMiIsIiIpOworICBtYXRodGVzdCg1LGRlZiwiNzE1LjA2OTI5NEUtMjY5MjMxNTEiLCI4NS40NDA0MTI4RSs3OTYzODg1NTciLCI4LjU0NDA0MTI4RSs3OTYzODg1NTgiLCItOC41NDQwNDEyOEUrNzk2Mzg4NTU4IiwiNi4xMDk1ODE1N0UrNzY5NDY1NDEwIiwiOC4zNjkyMTYyOEUtODIzMzExNzA4IiwiMCIsIjcuMTUwNjkyOTRFLTI2OTIzMTQ5IiwiNC44ODgwMjIxM0UtMjQyMzA4MzM0Iik7CisgIG1hdGh0ZXN0KDYsZGVmLCItMjE5NzE1NzUuMEUrMzE0NTQ0NDEiLCItNzA5NDQ5NjAuM0UrMTExMjM4MjIxIiwiLTcuMDk0NDk2MDNFKzExMTIzODIyOCIsIjcuMDk0NDk2MDNFKzExMTIzODIyOCIsIjEuNTU4NzcyNTJFKzE0MjY5MjY3NyIsIjMuMDk2OTg4ODRFLTc5NzgzNzgxIiwiMCIsIi0yLjE5NzE1NzUwRSszMTQ1NDQ0OCIsIi00LjA0NTQ5NTAyRS0yMjAxODExMzkiKTsKKyAgbWF0aHRlc3QoNyxkZWYsIjY4Mi4yNTMxNiIsIjU0NDcwMTg1LjYiLCI1NDQ3MDg2Ny45IiwiLTU0NDY5NTAzLjQiLCIzLjcxNjI0NTYzRSsxMCIsIjAuMDAwMDEyNTI1MjU4NiIsIjAiLCI2ODIuMjUzMTYiLCIzLjQ4NTc4Njk5RSsxNTQzNjU1NDEiKTsKKyAgbWF0aHRlc3QoOCxkZWYsIi0yNTc1ODY3NTcuIiwiMjA4Mjg4OC43MSIsIi0yNTU1MDM4NjgiLCItMjU5NjY5NjQ2IiwiLTUuMzY1MjQ1NDhFKzE0IiwiLTEyMy42NjgwMzYiLCItMTIzIiwiLTEzOTE0NDUuNjciLCItMS4yNjg3OTUxNUUrMTc1MTkwMjAiKTsKKyAgbWF0aHRlc3QoOSxkZWYsIjMxOTU3NzU0MC5FKzI0MjU5OTc2MSIsIjYwLjcxMjQ1NjEiLCIzLjE5NTc3NTQwRSsyNDI1OTk3NjkiLCIzLjE5NTc3NTQwRSsyNDI1OTk3NjkiLCIxLjk0MDIzMzc0RSsyNDI1OTk3NzEiLCI1LjI2Mzc4ODY5RSsyNDI1OTk3NjciLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTAsZGVmLCItMTM3Njk5NzcuMCIsIjI0MzcxLjMzODEiLCItMTM3NDU2MDUuNyIsIi0xMzc5NDM0OC4zIiwiLTMuMzU1OTI3NjVFKzExIiwiLTU2NS4wMDcwMTUiLCItNTY1IiwiLTE3MC45NzM1IiwiLTguNzM3MzQwMDFFKzE3Mzk4MiIpOworICBtYXRodGVzdCgxMSxkZWYsIi00NzUuNDM0OTcyRS03MjU0NjQzMTEiLCItMy4yMjIxNDA2NkUtODY1NDc2ODM2IiwiLTQuNzU0MzQ5NzJFLTcyNTQ2NDMwOSIsIi00Ljc1NDM0OTcyRS03MjU0NjQzMDkiLCIiLCIxLjQ3NTUyNTE5RSsxNDAwMTI1MjciLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTIsZGVmLCI4NDIuMDEyNTAiLCIxOTcxOTk4OTMiLCIxOTcyMDA3MzUiLCItMTk3MTk5MDUxIiwiMS42NjA0NDc3NUUrMTEiLCIwLjAwMDAwNDI2OTg0MjU4IiwiMCIsIjg0Mi4wMTI1MCIsIjcuMDA2NzQxNjRFKzU3Njg3MjUwMiIpOworICBtYXRodGVzdCgxMyxkZWYsIjU3Mi4xNzMxMDNFKzI4MDEyODQyOCIsIi03MTQwLjE5NDI4IiwiNS43MjE3MzEwM0UrMjgwMTI4NDMwIiwiNS43MjE3MzEwM0UrMjgwMTI4NDMwIiwiLTQuMDg1NDI3MTJFKzI4MDEyODQzNCIsIi04LjAxMzQxMDg1RSsyODAxMjg0MjYiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTQsZGVmLCI2NzQyMzUuOTU0RSs0NzYxMzUyOTEiLCI5Njg0LjgyMjQ1IiwiNi43NDIzNTk1NEUrNDc2MTM1Mjk2IiwiNi43NDIzNTk1NEUrNDc2MTM1Mjk2IiwiNi41Mjk4NTU1MEUrNDc2MTM1MzAwIiwiNi45NjE3NzkxOUUrNDc2MTM1MjkyIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDE1LGRlZiwiLTM2MDU1Ny45MjFFKzQzNzExNjUxNCIsIjkzMDQyODg1MCIsIi0zLjYwNTU3OTIxRSs0MzcxMTY1MTkiLCItMy42MDU1NzkyMUUrNDM3MTE2NTE5IiwiLTMuMzU0NzM0OTJFKzQzNzExNjUyOCIsIi0zLjg3NTE3OTkzRSs0MzcxMTY1MTAiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTYsZGVmLCI5NTcxNjU5MThFLTM5NDU5NTcwNSIsIjE2NzYuNTkwNzNFLTgyOTYxODk0NCIsIjkuNTcxNjU5MThFLTM5NDU5NTY5NyIsIjkuNTcxNjU5MThFLTM5NDU5NTY5NyIsIiIsIjUuNzA5MDAxNjFFKzQzNTAyMzI0NCIsIiIsIiIsIjkuMTYxNjY1OTVFLTc4OTE5MTM5MyIpOworICBtYXRodGVzdCgxNyxkZWYsIi0yNjEwODY0LjQwIiwiMzEyNDU5MTIuNyIsIjI4NjM1MDQ4LjMiLCItMzM4NTY3NzcuMSIsIi04LjE1Nzg4NDExRSsxMyIsIi0wLjA4MzU1ODU4OTciLCIwIiwiLTI2MTA4NjQuNDAiLCItMy4xMjAwODkwNUUrMjAwNDk4Mjg0Iik7CisgIG1hdGh0ZXN0KDE4LGRlZiwiOTU5LjU0ODQ2MSIsIjk4Ljk5NDU3N0UrNzc2Nzc1NDI2IiwiOS44OTk0NTc3MEUrNzc2Nzc1NDI3IiwiLTkuODk5NDU3NzBFKzc3Njc3NTQyNyIsIjkuNDk5MDA5NDBFKzc3Njc3NTQzMCIsIjkuNjkyOTM5NjVFLTc3Njc3NTQyNiIsIjAiLCI5NTkuNTQ4NDYxIiwiNi42MTcxMjE4NUUrMjkiKTsKKyAgbWF0aHRlc3QoMTksZGVmLCItNDEwODUuMDI2OCIsIjMxMTU0NzcuNjEiLCIzMDc0MzkyLjU4IiwiLTMxNTY1NjIuNjQiLCItMS4yNzk5OTQ4MUUrMTEiLCItMC4wMTMxODczOTI3IiwiMCIsIi00MTA4NS4wMjY4IiwiNC43Mzg0NDE3M0UrMTQzNzM4MjkiKTsKKyAgbWF0aHRlc3QoMjAsZGVmLCItNzIzNDIwMjg1LiIsIjI2ODE2NjAuMzUiLCItNzIwNzM4NjI1IiwiLTcyNjEwMTk0NSIsIi0xLjkzOTk2NzQ5RSsxNSIsIi0yNjkuNzY1ODEzIiwiLTI2OSIsIi0yMDUzNjUwLjg1IiwiNC4xNDMyNDExM0UrMjM3NTc4NzMiKTsKKyAgbWF0aHRlc3QoMjEsZGVmLCI2MzU0MjAxOC4wRS04MTc3MzIyMzAiLCItODgzNjI0My4yMiIsIi04ODM2MjQzLjIyIiwiODgzNjI0My4yMiIsIi01LjYxNDcyNzI2RS04MTc3MzIyMTYiLCItNy4xOTEwNjcxMUUtODE3NzMyMjMwIiwiMCIsIjYuMzU0MjAxODBFLTgxNzczMjIyMyIsIiIpOworICBtYXRodGVzdCgyMixkZWYsIi05NjA1MS43MTA4IiwiLTI5MTIwMS45NTUiLCItMzg3MjUzLjY2NiIsIjE5NTE1MC4yNDQiLCIyLjc5NzA0NDYwRSsxMCIsIjAuMzI5ODQ1Njk0IiwiMCIsIi05NjA1MS43MTA4IiwiMy41MzYxNzE1M0UtMTQ1MDkxNiIpOworICBtYXRodGVzdCgyMyxkZWYsIjEwODQ5MC44NTMiLCI5MTY4NTk5Ni41IiwiOTE3OTQ0ODcuNCIsIi05MTU3NzUwNS43IiwiOS45NDcwOTE5N0UrMTIiLCIwLjAwMTE4MzI4NzA2IiwiMCIsIjEwODQ5MC44NTMiLCI2Ljk4MTI0MjY1RSs0NjE2NzUwMzgiKTsKKyAgbWF0aHRlc3QoMjQsZGVmLCItMjc0ODkuMTczNSIsIi05ODM1ODM1LjRFLTUwNjQxMTY0OSIsIi0yNzQ4OS4xNzM1IiwiLTI3NDg5LjE3MzUiLCIyLjcwMzc4OTg2RS01MDY0MTE2MzgiLCIyLjc5NDc5ODA0RSs1MDY0MTE2NDYiLCIiLCIiLCI0LjA1ODY2NDcyRS00NSIpOworICBtYXRodGVzdCgyNSxkZWYsIi04OTIyMDQwNi42IiwiOTkzMzkxLjAwOEUtNjExMDQxMTc1IiwiLTg5MjIwNDA2LjYiLCItODkyMjA0MDYuNiIsIi04Ljg2MzA3NDk2RS02MTEwNDExNjIiLCItOC45ODEzOTg2NUUrNjExMDQxMTc2IiwiIiwiIiwiMy4xOTYyNTkxM0UrNzkiKTsKKyAgbWF0aHRlc3QoMjYsZGVmLCI0Ljc1NTAyMDIwIiwiLTE3MDg5MTQ0LjkiLCItMTcwODkxNDAuMiIsIjE3MDg5MTQ5LjciLCItODEyNTkyMjkuMiIsIi0yLjc4MjQ3OTg5RS03IiwiMCIsIjQuNzU1MDIwMjAiLCIxLjA2MzAxOTFFLTExNTcxOTU1Iik7CisgIG1hdGh0ZXN0KDI3LGRlZiwiNjgwMjc5MTYuMiIsIi03OTY4ODMuODM5IiwiNjcyMzEwMzIuNCIsIjY4ODI0ODAwLjAiLCItNS40MjEwMzQ3MEUrMTMiLCItODUuMzY3NDE4NSIsIi04NSIsIjI5Mjc4OS44ODUiLCI4LjI5NDE1Mzc0RS02MjQxNzQ0Iik7CisgIG1hdGh0ZXN0KDI4LGRlZiwiLTguMDE5Njk0MzlFKzc4ODYwNTQ3OCIsIjkyMTU0MTU2LjAiLCItOC4wMTk2OTQzOUUrNzg4NjA1NDc4IiwiLTguMDE5Njk0MzlFKzc4ODYwNTQ3OCIsIi03LjM5MDQ4MTY4RSs3ODg2MDU0ODYiLCItOC43MDI0NzcxN0UrNzg4NjA1NDcwIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDI5LGRlZiwiLTgwMTIuOTgzNDEiLCI5NjE4OC44NjUxIiwiODgxNzUuODgxNyIsIi0xMDQyMDEuODQ5IiwiLTc3MDc1OTc4MCIsIi0wLjA4MzMwNDY4ODEiLCIwIiwiLTgwMTIuOTgzNDEiLCItMS4xNjAxMDE1NkUrMzc1NTAyIik7CisgIG1hdGh0ZXN0KDMwLGRlZiwiMjE3NjE0NzZFKzU5MjMzMDY3NyIsIi05LjcwNzQ0NTA2IiwiMi4xNzYxNDc2MEUrNTkyMzMwNjg0IiwiMi4xNzYxNDc2MEUrNTkyMzMwNjg0IiwiLTIuMTEyNDgzMzNFKzU5MjMzMDY4NSIsIi0yLjI0MTczMDUzRSs1OTIzMzA2ODMiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMzEsZGVmLCItOTg0MDc3OC41MSIsIi0xNzkwNy4yMTkiLCItOTg1ODY4NS43MyIsIi05ODIyODcxLjI5IiwiMS43NjIyMDk3NkUrMTEiLCI1NDkuNTQyNTM0IiwiNTQ5IiwiLTk3MTUuMjc5IiwiLTYuNjI5OTc0MzdFLTEyNTIyNSIpOworICBtYXRodGVzdCgzMixkZWYsIi00LjEwOTc2MTQiLCItODE5LjIyNTc3NkUtMTQ1MjE0NzUxIiwiLTQuMTA5NzYxNDAiLCItNC4xMDk3NjE0MCIsIjMuMzY2ODIyNDdFLTE0NTIxNDc0OCIsIjUuMDE2NjQwNzRFKzE0NTIxNDc0OCIsIiIsIiIsIjAuMDAwMDEyMjg3NjAxOCIpOworICBtYXRodGVzdCgzMyxkZWYsIi00NDguODgwOTg1IiwiLTM5NC4wODczNzRFLTQ0MjUxMTQzNSIsIi00NDguODgwOTg1IiwiLTQ0OC44ODA5ODUiLCIxLjc2ODk4MzI5RS00NDI1MTE0MzAiLCIxLjEzOTAzOTI1RSs0NDI1MTE0MzUiLCIiLCIiLCIyLjQ2MzA2MDk5RS0xMSIpOworICBtYXRodGVzdCgzNCxkZWYsIjc3OS40NDUzMDRFKzg4MjY4ODU0NCIsIi03OTc4Njg1MTkiLCI3Ljc5NDQ1MzA0RSs4ODI2ODg1NDYiLCI3Ljc5NDQ1MzA0RSs4ODI2ODg1NDYiLCItNi4yMTg5NDg3MEUrODgyNjg4NTU1IiwiLTkuNzY5MDk0NkUrODgyNjg4NTM3IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDM1LGRlZiwiNzk5OTk1NDc3IiwiLTYuMjM2NzUyMDhFKzE1NjMwOTQ0MCIsIi02LjIzNjc1MjA4RSsxNTYzMDk0NDAiLCI2LjIzNjc1MjA4RSsxNTYzMDk0NDAiLCItNC45ODkzNzM0NkUrMTU2MzA5NDQ5IiwiLTEuMjgyNzExNjlFLTE1NjMwOTQzMiIsIjAiLCI3OTk5OTU0NzciLCIzLjgxNDgyNjY3RS01NCIpOworICBtYXRodGVzdCgzNixkZWYsIi01MTkzMi44MTcwIiwiNTkxODQwMjc1RS0yNzg0ODAyODkiLCItNTE5MzIuODE3MCIsIi01MTkzMi44MTcwIiwiLTMuMDczNTkzMjdFLTI3ODQ4MDI3NiIsIi04Ljc3NDgwMjhFKzI3ODQ4MDI4NCIsIiIsIiIsIjEuOTYxNzg0NDNFKzI4Iik7CisgIG1hdGh0ZXN0KDM3LGRlZiwiNzAuMzU1MjM5MiIsIi00MjI4NjU2LjczIiwiLTQyMjg1ODYuMzgiLCI0MjI4NzI3LjA5IiwiLTI5NzUwODE1NiIsIi0wLjAwMDAxNjYzNzcyNzciLCIwIiwiNzAuMzU1MjM5MiIsIjkuMTQ3NDIzODJFLTc4MTE1ODQiKTsKKyAgbWF0aHRlc3QoMzgsZGVmLCIxNTg4MzU5LjM0IiwiLTEyMjMyNzk5LjIiLCItMTA2NDQ0MzkuOSIsIjEzODIxMTU4LjUiLCItMS45NDMwMDgwOUUrMTMiLCItMC4xMjk4NDQzMDciLCIwIiwiMTU4ODM1OS4zNCIsIjEuNTY5MTAwODZFLTc1ODU0OTYwIik7CisgIG1hdGh0ZXN0KDM5LGRlZiwiMjg0Mi4xNjIwNiIsIi0zLjIzMjM0MzQ1IiwiMjgzOC45Mjk3MiIsIjI4NDUuMzk0NDAiLCItOTE4Ni44NDM5MiIsIi04NzkuMjg4Mzg4IiwiLTg3OSIsIjAuOTMyMTY3NDUiLCI0LjM1NTY1NTE0RS0xMSIpOworICBtYXRodGVzdCg0MCxkZWYsIjI5OTYwLjIzMDUiLCI0NS4yNzM1NzQ3RS05NTIwNTQ3NSIsIjI5OTYwLjIzMDUiLCIyOTk2MC4yMzA1IiwiMS4zNTY0MDY3M0UtOTUyMDU0NjkiLCI2LjYxNzU5NzczRSs5NTIwNTQ3NyIsIiIsIiIsIjIuNDEzOTM2RSsyMiIpOworICBtYXRodGVzdCg0MSxkZWYsIjI5MTY1NjUuNzciLCIxMTUxOTM1LjQzRS03ODcxMTg3MjQiLCIyOTE2NTY1Ljc3IiwiMjkxNjU2NS43NyIsIjMuMzU5Njk1NDRFLTc4NzExODcxMiIsIjIuNTMxODgzMDNFKzc4NzExODcyNCIsIiIsIiIsIjI5MTY1NjUuNzciKTsKKyAgbWF0aHRlc3QoNDIsZGVmLCItNTI3MjMwMTIuOUUtOTY3MTQzNzg3IiwiNzkuNDA4ODIzNyIsIjc5LjQwODgyMzciLCItNzkuNDA4ODIzNyIsIi00LjE4NjY3MjQ0RS05NjcxNDM3NzgiLCItNi42Mzk0NDAxMUUtOTY3MTQzNzgyIiwiMCIsIi01LjI3MjMwMTI5RS05NjcxNDM3ODAiLCIiKTsKKyAgbWF0aHRlc3QoNDMsZGVmLCItMTY3NDczNDY1IiwiNzkzNjQ2LjU5NyIsIi0xNjY2Nzk4MTkiLCItMTY4MjY3MTEyIiwiLTEuMzI5MTQ3NDZFKzE0IiwiLTIxMS4wMTc2ODIiLCItMjExIiwiLTE0MDMzLjAzMyIsIi0xLjE5MDUzNzg5RSs2NTI2OTEwIik7CisgIG1hdGh0ZXN0KDQ0LGRlZiwiLTMxNzY5MDcxLjAiLCIxMzMuNDM2MCIsIi0zMTc2ODkzNy42IiwiLTMxNzY5MjA0LjQiLCItNC4yMzkxMzc3NkUrOSIsIi0yMzgwODQuNzA3IiwiLTIzODA4NCIsIi05NC4zNzYwIiwiLTUuODQyNTI0MzJFKzk5NyIpOworICBtYXRodGVzdCg0NSxkZWYsIjQ1OTYwLjYzODMiLCItOTMzNTIuNzQ2OCIsIi00NzM5Mi4xMDg1IiwiMTM5MzEzLjM4NSIsIi00LjI5MDU1MTgzRSs5IiwiLTAuNDkyMzMzMDA0IiwiMCIsIjQ1OTYwLjYzODMiLCIxLjg4MzM1MzIzRS00MzUyNDgiKTsKKyAgbWF0aHRlc3QoNDYsZGVmLCI2MDYuMTc1NjQ4IiwiNS4yODUyODQ1OEUtOTgxOTgzNjIwIiwiNjA2LjE3NTY0OCIsIjYwNi4xNzU2NDgiLCIzLjIwMzgxMDgxRS05ODE5ODM2MTciLCIxLjE0NjkxMjAzRSs5ODE5ODM2MjIiLCIiLCIiLCI4LjE4NDUwNTE2RSsxMyIpOworICBtYXRodGVzdCg0NyxkZWYsIjE3MTU3OC42MTdFKzY0MzAwNjExMCIsIi00MDc3NzQuMjkzIiwiMS43MTU3ODYxN0UrNjQzMDA2MTE1IiwiMS43MTU3ODYxN0UrNjQzMDA2MTE1IiwiLTYuOTk2NTM0OTJFKzY0MzAwNjEyMCIsIi00LjIwNzY4NTk3RSs2NDMwMDYxMDkiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNDgsZGVmLCItNjgyMjg2MzMyLiIsIi00NjQuODcxNjk5IiwiLTY4MjI4Njc5NyIsIi02ODIyODU4NjciLCIzLjE3MTc1NjA2RSsxMSIsIjE0Njc2ODcuMzkiLCIxNDY3Njg3IiwiLTE4Mi43MDk3ODciLCItMS42MDUwODQzRS00MTA4Iik7CisgIG1hdGh0ZXN0KDQ5LGRlZiwiNDkyMDg4LjQyOCIsIjY1My43MjE3MCIsIjQ5Mjc0Mi4xNTAiLCI0OTE0MzQuNzA2IiwiMzIxNjg4ODg0IiwiNzUyLjc0OTExIiwiNzUyIiwiNDg5LjcwOTYwIiwiMy45NDY1ODU5NkUrMzcyMiIpOworICBtYXRodGVzdCg1MCxkZWYsIjc0MzAzNzgyLjUiLCIxMTQxLjY4MDU4IiwiNzQzMDQ5MjQuMiIsIjc0MzAyNjQwLjgiLCI4LjQ4MzExODU1RSsxMCIsIjY1MDgyLjgxMiIsIjY1MDgyIiwiOTI2Ljk5MjQ0IiwiNC45NDg0OTg2OUUrODk4OCIpOworICBtYXRodGVzdCg1MSxkZWYsIjc0Ljc3OTQwODRFKzExOTM3NTMyOSIsIi0zNDc5OTM1NS42IiwiNy40Nzc5NDA4NEUrMTE5Mzc1MzMwIiwiNy40Nzc5NDA4NEUrMTE5Mzc1MzMwIiwiLTIuNjAyMjc1MjJFKzExOTM3NTMzOCIsIi0yLjE0ODg3MzM3RSsxMTkzNzUzMjMiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNTIsZGVmLCItOTQzMi4wODM2OSIsIjMzNzM1LjUwNTgiLCIyNDMwMy40MjIxIiwiLTQzMTY3LjU4OTUiLCItMzE4MTk2MTE0IiwiLTAuMjc5NTg5MjE4IiwiMCIsIi05NDMyLjA4MzY5IiwiMi4zMDk1NjdFKzEzNDA4NyIpOworICBtYXRodGVzdCg1MyxkZWYsIjQyNDkxOTguNzhFLTExMjQzMzE1NSIsIjQxODY3MzA1MS4iLCI0MTg2NzMwNTEiLCItNDE4NjczMDUxIiwiMS43NzkwMjUwMkUtMTEyNDMzMTQwIiwiMS4wMTQ5MjA1NEUtMTEyNDMzMTU3IiwiMCIsIjQuMjQ5MTk4NzhFLTExMjQzMzE0OSIsIiIpOworICBtYXRodGVzdCg1NCxkZWYsIi0yOTYwOTMzLjAyIiwiLTIwNzkzMy4zOCIsIi0zMTY4ODY2LjQwIiwiLTI3NTI5OTkuNjQiLCI2LjE1Njc2ODExRSsxMSIsIjE0LjIzOTgxNTgiLCIxNCIsIi00OTg2NS43MCIsIi0yLjc1NjgwMzk3RS0xMzQ1NjI0Iik7CisgIG1hdGh0ZXN0KDU1LGRlZiwiMjkzMTcuNzUxOUUrOTQ1NjAwMDM1IiwiMS40MzU1NTc1MCIsIjIuOTMxNzc1MTlFKzk0NTYwMDAzOSIsIjIuOTMxNzc1MTlFKzk0NTYwMDAzOSIsIjQuMjA4NzMxODZFKzk0NTYwMDAzOSIsIjIuMDQyMjU1NDlFKzk0NTYwMDAzOSIsIiIsIiIsIjIuOTMxNzc1MTlFKzk0NTYwMDAzOSIpOworICBtYXRodGVzdCg1NixkZWYsIi01MS4xNjkzNzcwIiwiLTYzODA1NS40MTQiLCItNjM4MTA2LjU4MyIsIjYzODAwNC4yNDUiLCIzMjY0ODg5OC4wIiwiMC4wMDAwODAxOTU4MTk4IiwiMCIsIi01MS4xNjkzNzcwIiwiLTMuNDgyNjYwNzVFLTEwOTA0NDMiKTsKKyAgbWF0aHRlc3QoNTcsZGVmLCItNzU2MzQzMDU1LiIsIi02OC45MjQ4MzQ0RSsyMTcxMDA5NzUiLCItNi44OTI0ODM0NEUrMjE3MTAwOTc2IiwiNi44OTI0ODM0NEUrMjE3MTAwOTc2IiwiNS4yMTMwODE5OEUrMjE3MTAwOTg1IiwiMS4wOTczNDQ3NUUtMjE3MTAwOTY4IiwiMCIsIi03NTYzNDMwNTUiLCItNy4wNjI2NTg5N0UtNjMiKTsKKyAgbWF0aHRlc3QoNTgsZGVmLCIyNTM4LjgwNDA2RSs2OTQxODUxOTciLCItMzM4NjQ5OS42NSIsIjIuNTM4ODA0MDZFKzY5NDE4NTIwMCIsIjIuNTM4ODA0MDZFKzY5NDE4NTIwMCIsIi04LjU5NzY1OTA2RSs2OTQxODUyMDYiLCItNy40OTY4MzgzOUUrNjk0MTg1MTkzIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDU5LGRlZiwiLTU0MzQ0LjA2NzIiLCItODA4Ni40NTIzNSIsIi02MjQzMC41MTk2IiwiLTQ2MjU3LjYxNDkiLCI0Mzk0NTA3MTAiLCI2LjcyMDM4NDI3IiwiNiIsIi01ODI1LjM1MzEwIiwiMy42MjkxNjg2MUUtMzgyODkiKTsKKyAgbWF0aHRlc3QoNjAsZGVmLCIzLjMxNjAwMDU0IiwiMjE3NDgxNjQ4IiwiMjE3NDgxNjUxIiwiLTIxNzQ4MTY0NSIsIjcyMTE2OTI2MiIsIjEuNTI0NzI2NkUtOCIsIjAiLCIzLjMxNjAwMDU0IiwiMy43MzEzNDk2OUUrMTEzMjI0MTE5Iik7CisgIG1hdGh0ZXN0KDYxLGRlZiwiNjgxODMyLjY3MSIsIjMyMDM0MS4xNjFFKzYyOTQ2NzU2MCIsIjMuMjAzNDExNjFFKzYyOTQ2NzU2NSIsIi0zLjIwMzQxMTYxRSs2Mjk0Njc1NjUiLCIyLjE4NDE5MDY5RSs2Mjk0Njc1NzEiLCIyLjEyODQ1Nzg5RS02Mjk0Njc1NjAiLCIwIiwiNjgxODMyLjY3MSIsIjMuMTY5ODExMzlFKzE3Iik7CisgIG1hdGh0ZXN0KDYyLGRlZiwiODMyNjg5NDgxIiwiMzQ4MDQwMDI0RS04ODIxMjI1MDEiLCI4MzI2ODk0ODEiLCI4MzI2ODk0ODEiLCIyLjg5ODA5MjY3RS04ODIxMjI0ODQiLCIyLjM5MjUxMDdFKzg4MjEyMjUwMSIsIiIsIiIsIjUuNzczNjMzODFFKzI2Iik7CisgIG1hdGh0ZXN0KDYzLGRlZiwiMTQuNTUxMjMyNkUrMjU3NTAwODExIiwiNjAuOTk3OTU3N0UtNjQ3MzE0NzI0IiwiMS40NTUxMjMyNkUrMjU3NTAwODEyIiwiMS40NTUxMjMyNkUrMjU3NTAwODEyIiwiOC44NzU5NTQ3MUUtMzg5ODEzOTExIiwiMi4zODU1Mjc4NEUrOTA0ODE1NTM0IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDY0LGRlZiwiLTkwMS4yNzg4NDQiLCI0NDk0NjE2NjcuIiwiNDQ5NDYwNzY2IiwiLTQ0OTQ2MjU2OCIsIi00LjA1MDkwMjkyRSsxMSIsIi0wLjAwMDAwMjAwNTI0MDc0IiwiMCIsIi05MDEuMjc4ODQ0IiwiIik7CisgIG1hdGh0ZXN0KDY1LGRlZiwiLTUuMzI2Mjc2NzUiLCItNzM4ODYwMjE2RS0yMzgyNzMyMjQiLCItNS4zMjYyNzY3NSIsIi01LjMyNjI3Njc1IiwiMy45MzUzNzM5OUUtMjM4MjczMjE1IiwiNy4yMDg3NzQ1OUUrMjM4MjczMjE1IiwiIiwiIiwiLTAuMDAwMDA4MjIzMDY4MzgiKTsKKyAgbWF0aHRlc3QoNjYsZGVmLCItNTA1MzgzNDYzLiIsIjMuMTg3NTYzMjgiLCItNTA1MzgzNDYwIiwiLTUwNTM4MzQ2NiIsIi0xLjYxMDk0MTc3RSs5IiwiLTE1ODU0ODUyNyIsIi0xNTg1NDg1MjciLCItMC4yMzY3MTE0NCIsIi0xLjI5MDgxMjI2RSsyNiIpOworICBtYXRodGVzdCg2NyxkZWYsIjc2OTI0MS40NEUtNzIwOTI3MzIwIiwiLTE0NTM4MjYzMS4iLCItMTQ1MzgyNjMxIiwiMTQ1MzgyNjMxIiwiLTEuMTE4MzQzNDRFLTcyMDkyNzMwNiIsIi01LjI5MTE1MDkxRS03MjA5MjczMjMiLCIwIiwiNy42OTI0MTQ0RS03MjA5MjczMTUiLCIiKTsKKyAgbWF0aHRlc3QoNjgsZGVmLCItNi40NTAzODkxMCIsIjU2NzM2LjQ0MTFFKzQ0MDkzNzE2NyIsIjUuNjczNjQ0MTFFKzQ0MDkzNzE3MSIsIi01LjY3MzY0NDExRSs0NDA5MzcxNzEiLCItMy42NTk3MjEyMUUrNDQwOTM3MTcyIiwiLTEuMTM2OTA0MDdFLTQ0MDkzNzE3MSIsIjAiLCItNi40NTAzODkxMCIsIjcyMDMwLjM0MjEiKTsKKyAgbWF0aHRlc3QoNjksZGVmLCI1OC40NzIxMDc1IiwiLTcxMjE4NjgyOSIsIi03MTIxODY3NzEiLCI3MTIxODY4ODciLCItNC4xNjQzMDY0OEUrMTAiLCItOC4yMTAyMjAyOEUtOCIsIjAiLCI1OC40NzIxMDc1IiwiIik7CisgIG1hdGh0ZXN0KDcwLGRlZiwiODI0NC4wODM1NyIsIjI0NS4zMDI4MjhFKzY1MjAwNzk1OSIsIjIuNDUzMDI4MjhFKzY1MjAwNzk2MSIsIi0yLjQ1MzAyODI4RSs2NTIwMDc5NjEiLCIyLjAyMjI5NzAxRSs2NTIwMDc5NjUiLCIzLjM2MDc3ODA0RS02NTIwMDc5NTgiLCIwIiwiODI0NC4wODM1NyIsIjY3OTY0OTEzLjkiKTsKKyAgbWF0aHRlc3QoNzEsZGVmLCI0NS41MzYxMzk3IiwiLTc2NTc5MDYzLjkiLCItNzY1NzkwMTguNCIsIjc2NTc5MTA5LjQiLCItMy40ODcxMTQ5NUUrOSIsIi01Ljk0NjI5MDk4RS03IiwiMCIsIjQ1LjUzNjEzOTciLCIzLjk4MzM1Mzc0RS0xMjY5OTUzNjciKTsKKyAgbWF0aHRlc3QoNzIsZGVmLCI1OTQ0MjAuNTRFKzY4NTI2MzAzOSIsIi05NTI0MjAuMTc5IiwiNS45NDQyMDU0MEUrNjg1MjYzMDQ0IiwiNS45NDQyMDU0MEUrNjg1MjYzMDQ0IiwiLTUuNjYxMzgxMTdFKzY4NTI2MzA1MCIsIi02LjI0MTE1ODYxRSs2ODUyNjMwMzgiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNzMsZGVmLCItODQxMzEwNzAxLiIsIjkzOTgxMTAuNCIsIi04MzE5MTI1OTEiLCItODUwNzA4ODExIiwiLTcuOTA2NzMwODVFKzE1IiwiLTg5LjUxOTEzMzciLCItODkiLCItNDg3ODg3NS40IiwiMS4zMDAwMTQ2NkUrODM4Nzc3MjIiKTsKKyAgbWF0aHRlc3QoNzQsZGVmLCI5MDQzOTIxNDZFLTE0MDEwMDI3NiIsIjE2ODExNjA5My4iLCIxNjgxMTYwOTMiLCItMTY4MTE2MDkzIiwiMS41MjA0Mjg3NEUtMTQwMTAwMjU5IiwiNS4zNzk1NjkxNEUtMTQwMTAwMjc2IiwiMCIsIjkuMDQzOTIxNDZFLTE0MDEwMDI2OCIsIiIpOworICBtYXRodGVzdCg3NSxkZWYsIi05MDczMjQ3OTJFKzY4NTUzOTY3MCIsIi0xNS42OTAyMTcxIiwiLTkuMDczMjQ3OTJFKzY4NTUzOTY3OCIsIi05LjA3MzI0NzkyRSs2ODU1Mzk2NzgiLCIxLjQyMzYxMjMwRSs2ODU1Mzk2ODAiLCI1Ljc4Mjc0MjExRSs2ODU1Mzk2NzciLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNzYsZGVmLCI5ODcwMTM2MDYuIiwiLTI2ODE4LjM1NzJFKzU2MDkwNzQ0MiIsIi0yLjY4MTgzNTcyRSs1NjA5MDc0NDYiLCIyLjY4MTgzNTcyRSs1NjA5MDc0NDYiLCItMi42NDcwMDgzNEUrNTYwOTA3NDU1IiwiLTMuNjgwMzY1NjVFLTU2MDkwNzQzOCIsIjAiLCI5ODcwMTM2MDYiLCIxLjAzOTk5MzRFLTI3Iik7CisgIG1hdGh0ZXN0KDc3LGRlZiwiLTc0MTMxNzU2NCIsIjYzMC4yNDE1MzBFLTIxMjc4Mjk0NiIsIi03NDEzMTc1NjQiLCItNzQxMzE3NTY0IiwiLTQuNjcyMDkxMTZFLTIxMjc4MjkzNSIsIi0xLjE3NjI0MzZFKzIxMjc4Mjk1MiIsIiIsIiIsIjEuNjU5Njg1MjdFKzUzIik7CisgIG1hdGh0ZXN0KDc4LGRlZiwiNjE4Njc5MDcuMiIsIi0xMzkyMDQ2NzAiLCItNzczMzY3NjMiLCIyMDEwNzI1NzciLCItOC42MTIzMDE2MUUrMTUiLCItMC40NDQ0Mzg0NDYiLCIwIiwiNjE4Njc5MDcuMiIsIiIpOworICBtYXRodGVzdCg3OSxkZWYsIi0yNzMuNjIyNzQzRSs1MzEyODI3MTciLCItNDU0My42ODY4NCIsIi0yLjczNjIyNzQzRSs1MzEyODI3MTkiLCItMi43MzYyMjc0M0UrNTMxMjgyNzE5IiwiMS4yNDMyNTYwNkUrNTMxMjgyNzIzIiwiNi4wMjIwNDIyOUUrNTMxMjgyNzE1IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDgwLGRlZiwiLTM4MzU4ODk0OS4iLCItNDI4NjQwNTgzLiIsIi04MTIyMjk1MzIiLCI0NTA1MTYzNCIsIjEuNjQ0MjE3OTFFKzE3IiwiMC44OTQ4OTY0OCIsIjAiLCItMzgzNTg4OTQ5IiwiIik7CisgIG1hdGh0ZXN0KDgxLGRlZiwiLTU2MTgyLjI2ODYiLCIzMi43NzQxNjQ5IiwiLTU2MTQ5LjQ5NDQiLCItNTYyMTUuMDQyOCIsIi0xODQxMzI2Ljk0IiwiLTE3MTQuMjI0MjYiLCItMTcxNCIsIi03LjM0OTk2MTQiLCItNS40NTQ3NjQwMkUrMTU2Iik7CisgIG1hdGh0ZXN0KDgyLGRlZiwiLTYzNjYzODQuMzAiLCIzMzIwMTQuOTgwIiwiLTYwMzQzNjkuMzIiLCItNjY5ODM5OS4yOCIsIi0yLjExMzczNDk2RSsxMiIsIi0xOS4xNzQ5OTExIiwiLTE5IiwiLTU4MDk5LjY4MCIsIi0zLjA1MzkyMzk5RSsyMjU4OTk0Iik7CisgIG1hdGh0ZXN0KDgzLGRlZiwiLTEuMjc4OTc3MDIiLCItODIxMzc3Ni4wM0UtNjg2NTE5MTIzIiwiLTEuMjc4OTc3MDIiLCItMS4yNzg5NzcwMiIsIjEuMDUwNTIzMDhFLTY4NjUxOTExNiIsIjEuNTU3MTEyMTJFKzY4NjUxOTExNiIsIiIsIiIsIjAuMTM5NjY4MzcxIik7CisgIG1hdGh0ZXN0KDg0LGRlZiwiNjUuNDA1OTAzNiIsIjQwMTE2MjE0NUUrODg0MTU1NTA2IiwiNC4wMTE2MjE0NUUrODg0MTU1NTE0IiwiLTQuMDExNjIxNDVFKzg4NDE1NTUxNCIsIjIuNjIzODM3MjZFKzg4NDE1NTUxNiIsIjEuNjMwNDEwNjZFLTg4NDE1NTUxMyIsIjAiLCI2NS40MDU5MDM2IiwiMTgzMDA3MDQuMSIpOworICBtYXRodGVzdCg4NSxkZWYsIi0yMDYzMDkxNi44IiwiMTU4OTg3NDExLkUtNDgwNTAwNjEyIiwiLTIwNjMwOTE2LjgiLCItMjA2MzA5MTYuOCIsIi0zLjI4MDA1NjA1RS00ODA1MDA1OTciLCItMS4yOTc2NDQ2OEUrNDgwNTAwNjExIiwiIiwiIiwiNC4yNTYzNDcyOEUrMTQiKTsKKyAgbWF0aHRlc3QoODYsZGVmLCItNC43MjcwNTg1MyIsIi05NzYyNjc0Mi40IiwiLTk3NjI2NzQ3LjEiLCI5NzYyNjczNy43IiwiNDYxNDg3MzI1IiwiNC44NDE5NzA5N0UtOCIsIjAiLCItNC43MjcwNTg1MyIsIjIuOTI2NTQ0NDlFLTY1ODU4MTIwIik7CisgIG1hdGh0ZXN0KDg3LGRlZiwiOC40MzUyODE2OSIsIi00NTczLjQ1NzUyIiwiLTQ1NjUuMDIyMjQiLCI0NTgxLjg5MjgwIiwiLTM4NTc4LjQwMjUiLCItMC4wMDE4NDQzOTkyNyIsIjAiLCI4LjQzNTI4MTY5IiwiOC44NDI0ODY4OEUtNDIzNiIpOworICBtYXRodGVzdCg4OCxkZWYsIjEuOTEwNzUxODkiLCItNzA0MjQ3MDg5LiIsIi03MDQyNDcwODciLCI3MDQyNDcwOTEiLCItMS4zNDU2NDE0NkUrOSIsIi0yLjcxMzE4Mzk0RS05IiwiMCIsIjEuOTEwNzUxODkiLCI2Ljg0NTQ3NDk0RS0xOTgwMzczMDkiKTsKKyAgbWF0aHRlc3QoODksZGVmLCIzMTk5NzE5OEUtNTUxNzQ2MzA4IiwiMzI2Ljg5MjU4NCIsIjMyNi44OTI1ODQiLCItMzI2Ljg5MjU4NCIsIjEuMDQ1OTY0NjdFLTU1MTc0NjI5OCIsIjkuNzg4MjkxMTlFLTU1MTc0NjMwNCIsIjAiLCIzLjE5OTcxOThFLTU1MTc0NjMwMSIsIiIpOworICBtYXRodGVzdCg5MCxkZWYsIjEyNzU4OS4yMTMiLCI4NDE4NDMwNC4iLCI4NDMxMTg5My4yIiwiLTg0MDU2NzE0LjgiLCIxLjA3NDEwMDkxRSsxMyIsIjAuMDAxNTE1NTkzODUiLCIwIiwiMTI3NTg5LjIxMyIsIjIuODc5MTcwNDJFKzQyOTgyOTM5NCIpOworICBtYXRodGVzdCg5MSxkZWYsIjcxNDQ5NDI0OCIsIi03MDI1MDYzLjU5IiwiNzA3NDY5MTg1IiwiNzIxNTE5MzEyIiwiLTUuMDE5MzY3NTNFKzE1IiwiLTEwMS43MDY0NDYiLCItMTAxIiwiNDk2MjgyNS40MSIsIjEuNjUwMTg1MTZFLTYyMTk5OTA4Iik7CisgIG1hdGh0ZXN0KDkyLGRlZiwiLTUyOTg3NjgwLjJFKzI3OTUzMzUwMyIsIi00MjAxNDExNC44IiwiLTUuMjk4NzY4MDJFKzI3OTUzMzUxMCIsIi01LjI5ODc2ODAyRSsyNzk1MzM1MTAiLCIyLjIyNjIzMDQ4RSsyNzk1MzM1MTgiLCIxLjI2MTE4NzU5RSsyNzk1MzM1MDMiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoOTMsZGVmLCItODc5NS4wNTEzIiwiLTIyNTI5NC4zOTRFLTg4NDQxNDIzOCIsIi04Nzk1LjA1MTMwIiwiLTg3OTUuMDUxMzAiLCIxLjk4MTQ3NTc1RS04ODQ0MTQyMjkiLCIzLjkwMzgwMzg4RSs4ODQ0MTQyMzYiLCIiLCIiLCIxLjI5Mjc3NTlFLTgiKTsKKyAgbWF0aHRlc3QoOTQsZGVmLCI4MzI4MC4xMzk0IiwiMTYxNTY2MzU0LiIsIjE2MTY0OTYzNCIsIi0xNjE0ODMwNzQiLCIxLjM0NTUyNjg1RSsxMyIsIjAuMDAwNTE1NDU0NzE4IiwiMCIsIjgzMjgwLjEzOTQiLCI1LjMwNzc0ODA5RSs3OTQ5OTM5NDAiKTsKKyAgbWF0aHRlc3QoOTUsZGVmLCIxMTIuODc3ODk3IiwiLTkuOTY0ODE2NjYiLCIxMDIuOTEzMDgwIiwiMTIyLjg0MjcxNCIsIi0xMTI0LjgwNzU1IiwiLTExLjMyNzY0NDEiLCItMTEiLCIzLjI2NDkxMzc0IiwiMi45Nzc5MDU0NUUtMjEiKTsKKyAgbWF0aHRlc3QoOTYsZGVmLCItNTcyNTQyLjEyMUUrODQ3NDg3Mzk3IiwiNDMzLjg0MzQyMCIsIi01LjcyNTQyMTIxRSs4NDc0ODc0MDIiLCItNS43MjU0MjEyMUUrODQ3NDg3NDAyIiwiLTIuNDgzOTM2MzJFKzg0NzQ4NzQwNSIsIi0xLjMxOTY5NzZFKzg0NzQ4NzQwMCIsIiIsIiIsIiIpOworICBtYXRodGVzdCg5NyxkZWYsIjQ3MDk2NDkuODkiLCIyMDk0OTI2Ni40IiwiMjU2NTg5MTYuMyIsIi0xNjIzOTYxNi41IiwiOS44NjYzNzEwMkUrMTMiLCIwLjIyNDgxMjE2MyIsIjAiLCI0NzA5NjQ5Ljg5IiwiNC44NTI5MzY0NEUrMTM5Nzk0MjEzIik7CisgIG1hdGh0ZXN0KDk4LGRlZiwiLTk0NzUuMTkzMjIiLCItMzA4ODUuMjQ3NUUrNTg0NDg3MzQxIiwiLTMuMDg4NTI0NzVFKzU4NDQ4NzM0NSIsIjMuMDg4NTI0NzVFKzU4NDQ4NzM0NSIsIjIuOTI2NDM2ODhFKzU4NDQ4NzM0OSIsIjMuMDY3ODcwMjZFLTU4NDQ4NzM0MiIsIjAiLCItOTQ3NS4xOTMyMiIsIi0xLjE3NTUzNTU3RS0xMiIpOworICBtYXRodGVzdCg5OSxkZWYsIi0yMTMyMzA0NDcuIiwiODY0LjgxNTgyMkUrMTI3NzgzMDQ2IiwiOC42NDgxNTgyMkUrMTI3NzgzMDQ4IiwiLTguNjQ4MTU4MjJFKzEyNzc4MzA0OCIsIi0xLjg0NDA1MDY0RSsxMjc3ODMwNTciLCItMi40NjU2MTY4NkUtMTI3NzgzMDQxIiwiMCIsIi0yMTMyMzA0NDciLCItOS4xMTI2MTM2MUUrNzQiKTsKKyAgbWF0aHRlc3QoMTAwLGRlZiwiLTg5LjExNjg3ODZFKzQwMzM3NTg3MyIsIjY0NjQuMDU3NDQiLCItOC45MTE2ODc4NkUrNDAzMzc1ODc0IiwiLTguOTExNjg3ODZFKzQwMzM3NTg3NCIsIi01Ljc2MDU2NjIyRSs0MDMzNzU4NzgiLCItMS4zNzg2NTIzM0UrNDAzMzc1ODcxIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDEwMSxkZWYsIjYxNzc0LjQ5NTgiLCItMTQwMDAuNzcwNiIsIjQ3NzczLjcyNTIiLCI3NTc3NS4yNjY0IiwiLTg2NDg5MDU0NSIsIi00LjQxMjIyMTEyIiwiLTQiLCI1NzcxLjQxMzQiLCI3LjU5MDMwNDA3RS02NzA3NyIpOworICBtYXRodGVzdCgxMDIsZGVmLCIxLjYwNzMxNDE0IiwiNy4wNDMzMDI5M0UtNDI3MDMzNDE5IiwiMS42MDczMTQxNCIsIjEuNjA3MzE0MTQiLCIxLjEzMjA4MDA0RS00MjcwMzM0MTgiLCIyLjI4MjA0NjAyRSs0MjcwMzM0MTgiLCIiLCIiLCIyNy43MTQzOTIxIik7CisgIG1hdGh0ZXN0KDEwMyxkZWYsIjc5NTUwMTIuNTEiLCItMjMwMTE3NjYyLiIsIi0yMjIxNjI2NTAiLCIyMzgwNzI2NzUiLCItMS44MzA1ODg4OEUrMTUiLCItMC4wMzQ1NjkzMjYxIiwiMCIsIjc5NTUwMTIuNTEiLCIiKTsKKyAgbWF0aHRlc3QoMTA0LGRlZiwiNDA4NjY2MS4wOCIsIjEuNzc2MjE5OTQiLCI0MDg2NjYyLjg2IiwiNDA4NjY1OS4zMCIsIjcyNTg4MDguOTAiLCIyMzAwNzYyLjk4IiwiMjMwMDc2MiIsIjEuNzM4NDA1NzIiLCIxLjY3MDA3OTg4RSsxMyIpOworICBtYXRodGVzdCgxMDUsZGVmLCItNjEwLjA3NjkzMSIsIi0yMDcuNjU4MzA2IiwiLTgxNy43MzUyMzciLCItNDAyLjQxODYyNSIsIjEyNjY4Ny41NDIiLCIyLjkzNzg4ODQxIiwiMiIsIi0xOTQuNzYwMzE5IiwiNC4zNjUxODM3N0UtNTgwIik7CisgIG1hdGh0ZXN0KDEwNixkZWYsIi05OC42MzUzNjk3IiwiLTk5MjUzLjM4OTlFLTcxNjMwOTY1MyIsIi05OC42MzUzNjk3IiwiLTk4LjYzNTM2OTciLCI5Ljc4OTg5NDgxRS03MTYzMDk2NDciLCI5LjkzNzczMzA5RSs3MTYzMDk2NDkiLCIiLCIiLCIxLjE0NzI5MDA3RS0yMCIpOworICBtYXRodGVzdCgxMDcsZGVmLCItOTU5OTIzNzMwIiwiNDA5LjEyNTU0MkUtOTAwMjk1NTI4IiwiLTk1OTkyMzczMCIsIi05NTk5MjM3MzAiLCItMy45MjcyOTMxNkUtOTAwMjk1NTE3IiwiLTIuMzQ2MjgxNkUrOTAwMjk1NTM0IiwiIiwiIiwiOC40OTA3NjY3N0UrMzUiKTsKKyAgbWF0aHRlc3QoMTA4LGRlZiwiMzc5OTY1MTMzIiwiLTguMTU4Njk2NTciLCIzNzk5NjUxMjUiLCIzNzk5NjUxNDEiLCItMy4xMDAwMjAyM0UrOSIsIi00NjU3MTc5My42IiwiLTQ2NTcxNzkzIiwiNS4xOTIxNDk5OSIsIjIuMzAxNzA2OTdFLTY5Iik7CisgIG1hdGh0ZXN0KDEwOSxkZWYsIjgzMy42NDY3OTciLCIxMzg5NDk5LjQ2RS00NDM0MDcyNTEiLCI4MzMuNjQ2Nzk3IiwiODMzLjY0Njc5NyIsIjEuMTU4MzUxNzdFLTQ0MzQwNzI0MiIsIjUuOTk5NjE5NDRFKzQ0MzQwNzI0NyIsIiIsIiIsIjgzMy42NDY3OTciKTsKKyAgbWF0aHRlc3QoMTEwLGRlZiwiMjMxNDkzMy40RS02NDY0ODkxOTQiLCItNzQwMTUzOC4xNyIsIi03NDAxNTM4LjE3IiwiNzQwMTUzOC4xNyIsIi0xLjcxMzQwNjc5RS02NDY0ODkxODEiLCItMy4xMjc2MzgyNkUtNjQ2NDg5MTk1IiwiMCIsIjIuMzE0OTMzNEUtNjQ2NDg5MTg4IiwiIik7CisgIG1hdGh0ZXN0KDExMSxkZWYsIjgwODUyNTM0NyIsIi01OTU5Ljc0NjY3RSs1ODIzMjE2OCIsIi01Ljk1OTc0NjY3RSs1ODIzMjE3MSIsIjUuOTU5NzQ2NjdFKzU4MjMyMTcxIiwiLTQuODE4NjA2MjRFKzU4MjMyMTgwIiwiLTEuMzU2NjQzODJFLTU4MjMyMTYzIiwiMCIsIjgwODUyNTM0NyIsIjMuNTc5NjMwMkUtNTQiKTsKKyAgbWF0aHRlc3QoMTEyLGRlZiwiLTE3MjIwNDkwLjZFKzcyNjQyODcwNCIsIjE5Ljk4NTU2ODgiLCItMS43MjIwNDkwNkUrNzI2NDI4NzExIiwiLTEuNzIyMDQ5MDZFKzcyNjQyODcxMSIsIi0zLjQ0MTYxMzAwRSs3MjY0Mjg3MTIiLCItOC42MTY0NjI1OUUrNzI2NDI4NzA5IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDExMyxkZWYsIjU5MDE1Ljk3MDUiLCItNzIwNzA0MDUuNEUrMzIyOTU3Mjc5IiwiLTcuMjA3MDQwNTRFKzMyMjk1NzI4NiIsIjcuMjA3MDQwNTRFKzMyMjk1NzI4NiIsIi00LjI1MzMwNDkyRSszMjI5NTcyOTEiLCItOC4xODg2NTUyN0UtMzIyOTU3MjgzIiwiMCIsIjU5MDE1Ljk3MDUiLCI0LjAxMDYzNDg4RS0zNCIpOworICBtYXRodGVzdCgxMTQsZGVmLCIxNjQxMTQ3MEUrNTc4MTkyMDA4IiwiNDk3NDcwLjAwNUUtMzc3NDczNjIxIiwiMS42NDExNDcwMEUrNTc4MTkyMDE1IiwiMS42NDExNDcwMEUrNTc4MTkyMDE1IiwiOC4xNjQyMTQwNkUrMjAwNzE4Mzk5IiwiMy4yOTg5ODY4NEUrOTU1NjY1NjMwIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDExNSxkZWYsIi0xMDcuMzUzNTQ0RSs2MDk2ODk4MDgiLCItNjU5LjUwMTM2RS00NTY3MTE3NDMiLCItMS4wNzM1MzU0NEUrNjA5Njg5ODEwIiwiLTEuMDczNTM1NDRFKzYwOTY4OTgxMCIsIjcuMDc5OTgwODNFKzE1Mjk3ODA2OSIsIiIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxMTYsZGVmLCI3ODYuMTM0MTYzIiwiLTUzLjAyOTIyNzVFLTY2NDQxOTc2OCIsIjc4Ni4xMzQxNjMiLCI3ODYuMTM0MTYzIiwiLTQuMTY4ODA4NzRFLTY2NDQxOTc2NCIsIi0xLjQ4MjQ1NDQ5RSs2NjQ0MTk3NjkiLCIiLCIiLCIzLjMzMDU1NTMyRS0xNSIpOworICBtYXRodGVzdCgxMTcsZGVmLCIyMy41NDE0NzE0IiwiNTAwMDc4Ni45MSIsIjUwMDA4MTAuNDUiLCItNTAwMDc2My4zNyIsIjExNzcyNTg4MiIsIjAuMDAwMDA0NzA3NTUzNCIsIjAiLCIyMy41NDE0NzE0IiwiNC40ODk1NjE4RSs2ODYwMjQ3Iik7CisgIG1hdGh0ZXN0KDExOCxkZWYsIi02OTc3NS42MTEzIiwiNTYxMjkyMTIwLiIsIjU2MTIyMjM0NCIsIi01NjEzNjE4OTYiLCItMy45MTY0NTAwOEUrMTMiLCItMC4wMDAxMjQzMTI0NzMiLCIwIiwiLTY5Nzc1LjYxMTMiLCIiKTsKKyAgbWF0aHRlc3QoMTE5LGRlZiwiOTE5MDQzLjg3MSIsIi03MTYwNjYxMy43IiwiLTcwNjg3NTY5LjgiLCI3MjUyNTY1Ny42IiwiLTYuNTgwOTYxOTRFKzEzIiwiLTAuMDEyODM0NjIyNyIsIjAiLCI5MTkwNDMuODcxIiwiMy4wNTg2MjQyOUUtNDI3MDE0MzE3Iik7CisgIG1hdGh0ZXN0KDEyMCxkZWYsIi0yNzY2Ny4xOTE1IiwiLTI5MzQ1NS4xMDdFLTc4OTE4MTkyNCIsIi0yNzY2Ny4xOTE1IiwiLTI3NjY3LjE5MTUiLCI4LjExOTA3ODY0RS03ODkxODE5MTUiLCI5LjQyODA4MzE1RSs3ODkxODE5MjIiLCIiLCIiLCItNC43MjE3NjkzOEUtMTQiKTsKKyAgbWF0aHRlc3QoMTIxLGRlZiwiLTkwODYwMzYyNS4iLCItOTgyLjQwOTI3M0UrNDQ5NDQxMTM0IiwiLTkuODI0MDkyNzNFKzQ0OTQ0MTEzNiIsIjkuODI0MDkyNzNFKzQ0OTQ0MTEzNiIsIjguOTI2MjA2MjdFKzQ0OTQ0MTE0NSIsIjkuMjQ4NzI4MUUtNDQ5NDQxMTI5IiwiMCIsIi05MDg2MDM2MjUiLCIyLjYwNzY4NjMyRS05MCIpOworICBtYXRodGVzdCgxMjIsZGVmLCI4NDcuMTEzMzUxIiwiNS43MTUxMTI2OCIsIjg1Mi44Mjg0NjQiLCI4NDEuMzk4MjM4IiwiNDg0MS4zNDgyNSIsIjE0OC4yMjMzODYiLCIxNDgiLCIxLjI3NjY3NDM2IiwiMy42OTUyOTUzOEUrMTciKTsKKyAgbWF0aHRlc3QoMTIzLGRlZiwiLTk5MjE0MDQ3NSIsIjMuODI5MTgyMTgiLCItOTkyMTQwNDcxIiwiLTk5MjE0MDQ3OSIsIi0zLjc5OTA4NjYzRSs5IiwiLTI1OTA5OTgzNiIsIi0yNTkwOTk4MzYiLCItMC4xNDc4Nzc1MiIsIjkuNjg5MzA1OTVFKzM1Iik7CisgIG1hdGh0ZXN0KDEyNCxkZWYsIi0xMjYwNjQzNy41IiwiMjY4MTIzMTQ1RSszNjI3OTg4NTgiLCIyLjY4MTIzMTQ1RSszNjI3OTg4NjYiLCItMi42ODEyMzE0NUUrMzYyNzk4ODY2IiwiLTMuMzgwMDc3NjdFKzM2Mjc5ODg3MyIsIi00LjcwMTczNDE2RS0zNjI3OTg4NjAiLCIwIiwiLTEyNjA2NDM3LjUiLCItMi4wMDM0NDM2MkUrMjEiKTsKKyAgbWF0aHRlc3QoMTI1LGRlZiwiMzc5OTQ3MC42NCIsIi0yNjQuNzAzOTkyIiwiMzc5OTIwNS45NCIsIjM3OTk3MzUuMzQiLCItMS4wMDU3MzUwNUUrOSIsIi0xNDM1My42NTgzIiwiLTE0MzUzIiwiMTc0LjI0MjgyNCIsIjIuMzYyNTQ2NkUtMTc0NCIpOworICBtYXRodGVzdCgxMjYsZGVmLCItOC4xMTA3MDI0NyIsIi05MzEyODQwNTYuRS02NTQyODg5NzQiLCItOC4xMTA3MDI0NyIsIi04LjExMDcwMjQ3IiwiNy41NTMzNjc4OUUtNjU0Mjg4OTY1IiwiOC43MDkxNjA2N0UrNjU0Mjg4OTY1IiwiIiwiIiwiLTYuNTgzNzU2NjJFLTkiKTsKKyAgbWF0aHRlc3QoMTI3LGRlZiwiLTI0MjY2MDE3Ny4iLCItNi4wOTgzMjcxNUUtOTQzNzQyNDE1IiwiLTI0MjY2MDE3NyIsIi0yNDI2NjAxNzciLCIxLjQ3OTgyMTE1RS05NDM3NDI0MDYiLCIzLjk3OTEyNjkyRSs5NDM3NDI0MjIiLCIiLCIiLCI0Ljg5Nzg4OTAxRS01MSIpOworICBtYXRodGVzdCgxMjgsZGVmLCI3Ni4xNDYzODAzIiwiLTQ1LjY3NTgwMDZFLTYzNjkwNzk5NiIsIjc2LjE0NjM4MDMiLCI3Ni4xNDYzODAzIiwiLTMuNDc4MDQ2ODhFLTYzNjkwNzk5MyIsIi0xLjY2NzEwNTU0RSs2MzY5MDc5OTYiLCIiLCIiLCIzLjkwNjE5Mjg3RS0xMCIpOworICBtYXRodGVzdCgxMjksZGVmLCI3NjExODUuODYyIiwiLTcwODc4NDcwLjlFKzIyMTIxNDcxMiIsIi03LjA4Nzg0NzA5RSsyMjEyMTQ3MTkiLCI3LjA4Nzg0NzA5RSsyMjEyMTQ3MTkiLCItNS4zOTUxNjkwMEUrMjIxMjE0NzI1IiwiLTEuMDczOTMwOTlFLTIyMTIxNDcxNCIsIjAiLCI3NjExODUuODYyIiwiNi43NTQwNjE0NEUtNDIiKTsKKyAgbWF0aHRlc3QoMTMwLGRlZiwiNjIwMzYwNi41NCIsIi0xOTUuOTI3NDhFLTgzMzUxMjA2MSIsIjYyMDM2MDYuNTQiLCI2MjAzNjA2LjU0IiwiLTEuMjE1NDU3MDBFLTgzMzUxMjA1MiIsIi0zLjE2NjI3NjlFKzgzMzUxMjA2NSIsIiIsIiIsIjIuNTk4NDMyOTJFLTE0Iik7CisgIG1hdGh0ZXN0KDEzMSxkZWYsIi0xNjMyNzQ4MzcuIiwiOTUuMDQ0ODU1MEUrODg3ODc2NTMzIiwiOS41MDQ0ODU1MEUrODg3ODc2NTM0IiwiLTkuNTA0NDg1NTBFKzg4Nzg3NjUzNCIsIi0xLjU1MTg0MzMyRSs4ODc4NzY1NDMiLCItMS43MTc4NzEzOUUtODg3ODc2NTI3IiwiMCIsIi0xNjMyNzQ4MzciLCIxLjM0NjQ1NzMxRSs4MiIpOworICBtYXRodGVzdCgxMzIsZGVmLCIyLjM4NjM4MTkwIiwiLTgwNzk4NjE3OS4iLCItODA3OTg2MTc3IiwiODA3OTg2MTgxIiwiLTEuOTI4MTYzNTlFKzkiLCItMi45NTM0OTM0N0UtOSIsIjAiLCIyLjM4NjM4MTkwIiwiMS4xOTAyOTMwNUUtMzA1MjA4NjU2Iik7CisgIG1hdGh0ZXN0KDEzMyxkZWYsIi0xMDkwMjIyOTZFLTgxMTk4MTE1OCIsIjcuMTk2ODU2ODAiLCI3LjE5Njg1NjgwIiwiLTcuMTk2ODU2ODAiLCItNy44NDYxNzg1MkUtODExOTgxMTUwIiwiLTEuNTE0ODU5ODhFLTgxMTk4MTE1MSIsIjAiLCItMS4wOTAyMjI5NkUtODExOTgxMTUwIiwiIik7CisgIG1hdGh0ZXN0KDEzNCxkZWYsIi01NTkyNTAuNzgwRS0yNzM3MTA0MjEiLCItMzkzNzgwODExLiIsIi0zOTM3ODA4MTEiLCIzOTM3ODA4MTEiLCIyLjIwMjIyMjI2RS0yNzM3MTA0MDciLCIxLjQyMDIwODMxRS0yNzM3MTA0MjQiLCIwIiwiLTUuNTkyNTA3ODBFLTI3MzcxMDQxNiIsIiIpOworICBtYXRodGVzdCgxMzUsZGVmLCItODgwMjEuOTk2NkUrNTU1MzM0NjQyIiwiNzU5OTY4Ni42NEUrODE4ODg0MDUzIiwiNy41OTk2ODY2NEUrODE4ODg0MDU5IiwiLTcuNTk5Njg2NjRFKzgxODg4NDA1OSIsIiIsIi0xLjE1ODIzMTkyRS0yNjM1NDk0MTMiLCIwIiwiLTguODAyMTk5NjZFKzU1NTMzNDY0NiIsIiIpOworICBtYXRodGVzdCgxMzYsZGVmLCIxOTQuMzE3NjQ4RS0xOTc0NTAwMDkiLCItOTMwLjk3OTA2NCIsIi05MzAuOTc5MDY0IiwiOTMwLjk3OTA2NCIsIi0xLjgwOTA1NjYyRS0xOTc0NTAwMDQiLCItMi4wODcyMzk3MkUtMTk3NDUwMDEwIiwiMCIsIjEuOTQzMTc2NDhFLTE5NzQ1MDAwNyIsIiIpOworICBtYXRodGVzdCgxMzcsZGVmLCI5NDk1NDc5LjY1IiwiNzQwNTY5Ny45NiIsIjE2OTAxMTc3LjYiLCIyMDg5NzgxLjY5IiwiNy4wMzIwNjU0M0UrMTMiLCIxLjI4MjE4NTY1IiwiMSIsIjIwODk3ODEuNjkiLCIxLjAxMzU0NDZFKzUxNjczMzgzIik7CisgIG1hdGh0ZXN0KDEzOCxkZWYsIi0xNjU2LjI4OTI1IiwiLTE2MzA1MDUxMUUtNjgyODgyMzgwIiwiLTE2NTYuMjg5MjUiLCItMTY1Ni4yODkyNSIsIjIuNzAwNTg4MDlFLTY4Mjg4MjM2OSIsIjEuMDE1ODEzNTlFKzY4Mjg4MjM3NSIsIiIsIiIsIjMuNjQ1MjUyNjVFLTciKTsKKyAgbWF0aHRlc3QoMTM5LGRlZiwiOTU1ODEuMzc4NEUrNjQyNjIxNDkiLCItOTkuMjg3OTM2NSIsIjkuNTU4MTM3ODRFKzY0MjYyMTUzIiwiOS41NTgxMzc4NEUrNjQyNjIxNTMiLCItOS40OTAwNzc4M0UrNjQyNjIxNTUiLCItOS42MjY2ODU5NkUrNjQyNjIxNTEiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTQwLGRlZiwiNjQzNzYxLjQ1MiIsIjMuNzM0NDY5MzkiLCI2NDM3NjUuMTg2IiwiNjQzNzU3LjcxOCIsIjI0MDQxMDcuNDQiLCIxNzIzODMuNjQ3IiwiMTcyMzgzIiwiMi40MTUxNDM2MyIsIjEuNzE3NTEyMzZFKzIzIik7CisgIG1hdGh0ZXN0KDE0MSxkZWYsIjc5NjAuNDk4NjZFLTEyOTgyNzQyMyIsIjMyMjAuMjI4NTAiLCIzMjIwLjIyODUwIiwiLTMyMjAuMjI4NTAiLCIyLjU2MzQ2MjQ3RS0xMjk4Mjc0MTYiLCIyLjQ3MjAyOTEzRS0xMjk4Mjc0MjMiLCIwIiwiNy45NjA0OTg2NkUtMTI5ODI3NDIwIiwiIik7CisgIG1hdGh0ZXN0KDE0MixkZWYsIi02MzU2LjY0MTEyRS03MDcyMDM4MTgiLCIxODA1MDU0Ljk4IiwiMTgwNTA1NC45OCIsIi0xODA1MDU0Ljk4IiwiLTEuMTQ3NDA4NjdFLTcwNzIwMzgwOCIsIi0zLjUyMTU3NzU2RS03MDcyMDM4MjEiLCIwIiwiLTYuMzU2NjQxMTJFLTcwNzIwMzgxNSIsIiIpOworICBtYXRodGVzdCgxNDMsZGVmLCIyLjM5MDQwNDIiLCI4NDc2LjUyMDA2IiwiODQ3OC45MTA0NiIsIi04NDc0LjEyOTY2IiwiMjAyNjIuMzA5MiIsIjAuMDAwMjgyMDAzMDEzIiwiMCIsIjIuMzkwNDA0MiIsIjIuMDAyNTE3NTJFKzMyMDgiKTsKKyAgbWF0aHRlc3QoMTQ0LGRlZiwiLTcxMzI5OC42NTgiLCItOTU3Ljc4MjcyOSIsIi03MTQyNTYuNDQxIiwiLTcxMjM0MC44NzUiLCI2ODMxODUxMzUiLCI3NDQuNzM5NTI4IiwiNzQ0IiwiLTcwOC4zMDc2MjQiLCIzLjY4MTIyMzIxRS01NjA4Iik7CisgIG1hdGh0ZXN0KDE0NSxkZWYsIjYwNzc3OTIzMy5FLTgyMDQ5NzM2NSIsIi0yMC4xMTg4NzQyRS04NTczMTgzMjMiLCI2LjA3Nzc5MjMzRS04MjA0OTczNTciLCI2LjA3Nzc5MjMzRS04MjA0OTczNTciLCIiLCItMy4wMjA5NDA1N0UrMzY4MjA5NjUiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTQ2LGRlZiwiLTIwNTg4ODI1MSIsIi05MDguNzkyOTIyRSsyNTA2ODA2MTMiLCItOS4wODc5MjkyMkUrMjUwNjgwNjE1IiwiOS4wODc5MjkyMkUrMjUwNjgwNjE1IiwiMS44NzEwOTc4NUUrMjUwNjgwNjI0IiwiMi4yNjU1MTMzNkUtMjUwNjgwNjA4IiwiMCIsIi0yMDU4ODgyNTEiLCItMS41MDQyMzU4RS03NSIpOworICBtYXRodGVzdCgxNDcsZGVmLCI1MTU0MjM5OS4xIiwiLTIzMjEyLjI0MTQiLCI1MTUxOTE4Ni45IiwiNTE1NjU2MTEuMyIsIi0xLjE5NjQxNDYxRSsxMiIsIi0yMjIwLjQ4MzUiLCItMjIyMCIsIjExMjIzLjE5MjAiLCIxLjcxNjQxMzQ4RS0xNzkwMTUiKTsKKyAgbWF0aHRlc3QoMTQ4LGRlZiwiNC40NDI4NzIzMCIsIjE1ODkyMzAyMyIsIjE1ODkyMzAyNyIsIi0xNTg5MjMwMTkiLCI3MDYwNzQ2OTciLCIyLjc5NTYxMjc1RS04IiwiMCIsIjQuNDQyODcyMzAiLCI3LjEyNTczNDE2RSsxMDI5Mjg2OTMiKTsKKyAgbWF0aHRlc3QoMTQ5LGRlZiwiLTc5MTIzNjgyLjYiLCItMy44NTcxNzcwIiwiLTc5MTIzNjg2LjUiLCItNzkxMjM2NzguOCIsIjMwNTE5NDA0OSIsIjIwNTEzMzY1LjgiLCIyMDUxMzM2NSIsIi0yLjkyOTM5NTAiLCIyLjU1MTM3MzQ1RS0zMiIpOworICBtYXRodGVzdCgxNTAsZGVmLCItODAuMzMyNDM0N0UtNTY5NzE1MDMwIiwiODgzMTQyLjM1MSIsIjg4MzE0Mi4zNTEiLCItODgzMTQyLjM1MSIsIi03LjA5NDQ5NzUyRS01Njk3MTUwMjMiLCItOS4wOTYyMDQ1NUUtNTY5NzE1MDM1IiwiMCIsIi04LjAzMzI0MzQ3RS01Njk3MTUwMjkiLCIiKTsKKyAgbWF0aHRlc3QoMTUxLGRlZiwiMTM2MzcuNDgzIiwiLTUyNzk4LjU2MzEiLCItMzkxNjEuMDgwMSIsIjY2NDM2LjA0NjEiLCItNzIwMDM5NTA3IiwiLTAuMjU4MjkyNjkyIiwiMCIsIjEzNjM3LjQ4MyIsIjEuNDcxNjM3OTFFLTIxODMxMCIpOworICBtYXRodGVzdCgxNTIsZGVmLCI2LjQyOTM0ODQzRS0yNzY0NzY0NTgiLCI4NDA1NzQ0MC4wRS0zODgwMzk3ODIiLCI2LjQyOTM0ODQzRS0yNzY0NzY0NTgiLCI2LjQyOTM0ODQzRS0yNzY0NzY0NTgiLCI1LjQwNDM0NTcwRS02NjQ1MTYyMzIiLCI3LjY0ODc1NTkzRSsxMTE1NjMzMTYiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTUzLGRlZiwiLTUuNjQxMzMwODciLCItMTc0MDEyOTcuIiwiLTE3NDAxMzAyLjYiLCIxNzQwMTI5MS40IiwiOTgxNjY0NzMuOSIsIjMuMjQxOTAyNTNFLTciLCIwIiwiLTUuNjQxMzMwODciLCItMS4yNTkwODkxNkUtMTMwNzUwMTQiKTsKKyAgbWF0aHRlc3QoMTU0LGRlZiwiOTU0NjkuNzA1N0UrODY1NzMzODI0IiwiMTk4LjgyOTc0OSIsIjkuNTQ2OTcwNTdFKzg2NTczMzgyOCIsIjkuNTQ2OTcwNTdFKzg2NTczMzgyOCIsIjEuODk4MjIxNzZFKzg2NTczMzgzMSIsIjQuODAxNTgwNTZFKzg2NTczMzgyNiIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxNTUsZGVmLCItNDE2NDY2LjIwOSIsIi05MzAxNTM0MjciLCItOTMwNTY5ODkzIiwiOTI5NzM2OTYxIiwiMy44NzM3NzQ3MkUrMTQiLCIwLjAwMDQ0NzczOTI2MiIsIjAiLCItNDE2NDY2LjIwOSIsIiIpOworICBtYXRodGVzdCgxNTYsZGVmLCItMTU0MTczMy44NSIsIi0xLjk5MjA4NzA4IiwiLTE1NDE3MzUuODQiLCItMTU0MTczMS44NiIsIjMwNzEyNjguMDgiLCI3NzM5MjguOTQ0IiwiNzczOTI4IiwiLTEuODgwMzQ5NzYiLCI0LjIwNzA4NDAxRS0xMyIpOworICBtYXRodGVzdCgxNTcsZGVmLCItMzkxNTI2OTEuOCIsIi02NDUxMzE3NDguIiwiLTY4NDI4NDQ0MCIsIjYwNTk3OTA1NiIsIjIuNTI1ODY0NDVFKzE2IiwiMC4wNjA2ODk0NTEzIiwiMCIsIi0zOTE1MjY5MS44IiwiIik7CisgIG1hdGh0ZXN0KDE1OCxkZWYsIjExMy45Mzk5NzkiLCItNTgyODI1NTAuNCIsIi01ODI4MjQzNi41IiwiNTgyODI2NjQuMyIsIi02LjY0MDcxMjU3RSs5IiwiLTAuMDAwMDAxOTU0OTU4NyIsIjAiLCIxMTMuOTM5OTc5IiwiMi4xMDY1NTdFLTExOTg2ODMzMCIpOworICBtYXRodGVzdCgxNTksZGVmLCItMzI0OTcxLjczNiIsIi05NTE3LjE1MTU0IiwiLTMzNDQ4OC44ODgiLCItMzE1NDU0LjU4NSIsIjMuMDkyODA1MjZFKzkiLCIzNC4xNDU5MDMzIiwiMzQiLCItMTM4OC41ODM2NCIsIi01LjgyNzk1MjYzRS01MjQ1NyIpOworICBtYXRodGVzdCgxNjAsZGVmLCItNzYuOTQzNjc0NCIsIi05NTQ4MTIyLjc1RS0yNzM1OTk3MjgiLCItNzYuOTQzNjc0NCIsIi03Ni45NDM2NzQ0IiwiNy4zNDY2NzY0OEUtMjczNTk5NzIwIiwiOC4wNTg1MTMzMkUrMjczNTk5NzIyIiwiIiwiIiwiMS4zNzQ4OTg5NUUtMTkiKTsKKyAgbWF0aHRlc3QoMTYxLGRlZiwiLTQzMDM5My4yODIiLCItNzAuMjU1MTUwNSIsIi00MzA0NjMuNTM3IiwiLTQzMDMyMy4wMjciLCIzMDIzNzM0NC44IiwiNjEyNi4xNDU2MSIsIjYxMjYiLCItMTAuMjMwMDM3MCIsIjQuMjYwMDY0MDlFLTM5NSIpOworICBtYXRodGVzdCgxNjIsZGVmLCItMzMwODA1MS45MCIsIi0zNDk0MzM3OTkuRSszOTc4MTMxODgiLCItMy40OTQzMzc5OUUrMzk3ODEzMTk2IiwiMy40OTQzMzc5OUUrMzk3ODEzMTk2IiwiMS4xNTU5NDUxNEUrMzk3ODEzMjAzIiwiOS40NjY4OTE2MUUtMzk3ODEzMTkxIiwiMCIsIi0zMzA4MDUxLjkwIiwiLTIuNzYyMzc3NjhFLTIwIik7CisgIG1hdGh0ZXN0KDE2MyxkZWYsIjIzLjE1NDMyMTJFLTY1NTgyMjcxMiIsIjU4NDguMjA4NTMiLCI1ODQ4LjIwODUzIiwiLTU4NDguMjA4NTMiLCIxLjM1NDExMjk5RS02NTU4MjI3MDciLCIzLjk1OTIxNjA3RS02NTU4MjI3MTUiLCIwIiwiMi4zMTU0MzIxMkUtNjU1ODIyNzExIiwiIik7CisgIG1hdGh0ZXN0KDE2NCxkZWYsIi0xNzQuMjYxMzA4RS04MjkwMjA3NyIsIi0yMDAwOTYyMDQuIiwiLTIwMDA5NjIwNCIsIjIwMDA5NjIwNCIsIjMuNDg2OTAyNjJFLTgyOTAyMDY3IiwiOC43MDg4NzYyNkUtODI5MDIwODQiLCIwIiwiLTEuNzQyNjEzMDhFLTgyOTAyMDc1IiwiIik7CisgIG1hdGh0ZXN0KDE2NSxkZWYsIi01MDY2OTEwNS4yIiwiOTEwNTc4OS4wMUUrNjA5ODg5NzAwIiwiOS4xMDU3ODkwMUUrNjA5ODg5NzA2IiwiLTkuMTA1Nzg5MDFFKzYwOTg4OTcwNiIsIi00LjYxMzgyMTgxRSs2MDk4ODk3MTQiLCItNS41NjQ0OTM2NkUtNjA5ODg5NzAwIiwiMCIsIi01MDY2OTEwNS4yIiwiLTIuMjAxMzUwMDhFKzY5Iik7CisgIG1hdGh0ZXN0KDE2NixkZWYsIjQyNDc2ODg1Ni4iLCItOTcxLjcxNzU3IiwiNDI0NzY3ODg0IiwiNDI0NzY5ODI4IiwiLTQuMTI3NTUzNjFFKzExIiwiLTQzNzEzMi4wMTIiLCItNDM3MTMyIiwiMTEuMTkwNzYiLCIyLjcyNjUxNDczRS04Mzg3Iik7CisgIG1hdGh0ZXN0KDE2NyxkZWYsIjcxODEuMjc2NyIsIjk5OTExNy45MTgiLCIxMDA2Mjk5LjE5IiwiLTk5MTkzNi42NDEiLCI3LjE3NDk0MjIzRSs5IiwiMC4wMDcxODc2MTY3NyIsIjAiLCI3MTgxLjI3NjciLCIzLjA5NjU1MTI0RSszODUyODAwIik7CisgIG1hdGh0ZXN0KDE2OCxkZWYsIjgwOTY0MTcuMDdFLTQzMzY5NDUyOCIsIi02OC40ODYzMzYzIiwiLTY4LjQ4NjMzNjMiLCI2OC40ODYzMzYzIiwiLTUuNTQ0OTM5NDJFLTQzMzY5NDUyMCIsIi0xLjE4MjE5NDUxRS00MzM2OTQ1MjMiLCIwIiwiOC4wOTY0MTcwN0UtNDMzNjk0NTIyIiwiIik7CisgIG1hdGh0ZXN0KDE2OSxkZWYsIjEyMzYyODcuNSIsIi03MTE5Ljk3Mjk5RS0xNzYyMDA0OTgiLCIxMjM2Mjg3LjUwIiwiMTIzNjI4Ny41MCIsIi04LjgwMjMzMzYxRS0xNzYyMDA0ODkiLCItMS43MzYzNjU0NEUrMTc2MjAwNTAwIiwiIiwiIiwiMi4yNjU0OTc4NEUtNDMiKTsKKyAgbWF0aHRlc3QoMTcwLGRlZiwiLTc1Mjk5NTgzM0UtNjU0NDAxMDY3IiwiLTE1LjI3MzY5MzBFKzgwMzkzOTk4MyIsIi0xLjUyNzM2OTMwRSs4MDM5Mzk5ODQiLCIxLjUyNzM2OTMwRSs4MDM5Mzk5ODQiLCIxLjE1MDEwMjcyRSsxNDk1Mzg5MjYiLCIiLCIwIiwiLTcuNTI5OTU4MzNFLTY1NDQwMTA1OSIsIiIpOworICBtYXRodGVzdCgxNzEsZGVmLCI3MDI5OTIuNDU5IiwiLTMxMi42ODk0NzQiLCI3MDI2NzkuNzcwIiwiNzAzMzA1LjE0OCIsIi0yMTk4MTgzNDIiLCItMjI0OC4yMTI3NCIsIi0yMjQ4IiwiNjYuNTIxNDQ4IiwiOC4wMjQ5MzMyMkUtMTgzMSIpOworICBtYXRodGVzdCgxNzIsZGVmLCItNDQxNC4zODgwNSIsIi0xNzY4MC40NjMwRS01ODQzNjQ1MzYiLCItNDQxNC4zODgwNSIsIi00NDE0LjM4ODA1IiwiNy44MDQ4NDI0NkUtNTg0MzY0NTI5IiwiMi40OTY3NjA0NEUrNTg0MzY0NTM1IiwiIiwiIiwiNS4xMzE2NzMxMkUtOCIpOworICBtYXRodGVzdCgxNzMsZGVmLCI5LjQ2MzUwODA3IiwiNzgyNi42NTQyNCIsIjc4MzYuMTE3NzUiLCItNzgxNy4xOTA3MyIsIjc0MDY3LjYwNTYiLCIwLjAwMTIwOTEzODM5IiwiMCIsIjkuNDYzNTA4MDciLCIzLjYzMjcxNDk1RSs3NjM5Iik7CisgIG1hdGh0ZXN0KDE3NCxkZWYsIjIwNzgxNTMuNyIsIi0xNjkzNDYwNy4zRSsyMzM1OTQ0MzkiLCItMS42OTM0NjA3M0UrMjMzNTk0NDQ2IiwiMS42OTM0NjA3M0UrMjMzNTk0NDQ2IiwiLTMuNTE5MjcxNjhFKzIzMzU5NDQ1MiIsIi0xLjIyNzE2MzhFLTIzMzU5NDQ0MCIsIjAiLCIyMDc4MTUzLjciLCIyLjMxNTQ5OTM5RS0xMyIpOworICBtYXRodGVzdCgxNzUsZGVmLCItOTM1OS43NDYyOSIsIjcuMDc3NjE3ODhFKzI1MjQ1NzY5NiIsIjcuMDc3NjE3ODhFKzI1MjQ1NzY5NiIsIi03LjA3NzYxNzg4RSsyNTI0NTc2OTYiLCItNi42MjQ0NzA3N0UrMjUyNDU3NzAwIiwiLTEuMzIyNDQzMDFFLTI1MjQ1NzY5MyIsIjAiLCItOTM1OS43NDYyOSIsIi02LjI5Mjg2Njc3RSsyNyIpOworICBtYXRodGVzdCgxNzYsZGVmLCI2Ni4yMzE5Mjg0RSs3MzA0Njg0NzkiLCIyNS45MzkxNjg1RSsyMjExNDcwNDQiLCI2LjYyMzE5Mjg0RSs3MzA0Njg0ODAiLCI2LjYyMzE5Mjg0RSs3MzA0Njg0ODAiLCIxLjcxODAwMTE1RSs5NTE2MTU1MjYiLCIyLjU1MzM1NTg4RSs1MDkzMjE0MzUiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTc3LGRlZiwiMzE3OTk3MDg4LkUtOTA5Njg3NDIiLCItOTc3NDI2LjQ2MSIsIi05Nzc0MjYuNDYxIiwiOTc3NDI2LjQ2MSIsIi0zLjEwODE4NzY4RS05MDk2ODcyOCIsIi0zLjI1MzQxMTlFLTkwOTY4NzQwIiwiMCIsIjMuMTc5OTcwODhFLTkwOTY4NzM0IiwiIik7CisgIG1hdGh0ZXN0KDE3OCxkZWYsIjIyNzQ3MzM4NiIsIi02NzU5LjYxMzkwIiwiMjI3NDY2NjI2IiwiMjI3NDgwMTQ2IiwiLTEuNTM3NjMyMjZFKzEyIiwiLTMzNjUxLjgzMTIiLCItMzM2NTEiLCI1NjE4LjY1MTEwIiwiMS40MDk5MjYyN0UtNTY0OTMiKTsKKyAgbWF0aHRlc3QoMTc5LGRlZiwiLTM5MjAxOS40NjIiLCItMjQ1NDU2LjUwMyIsIi02Mzc0NzUuOTY1IiwiLTE0NjU2Mi45NTkiLCI5LjYyMjM3MjYzRSsxMCIsIjEuNTk3MTAzNTkiLCIxIiwiLTE0NjU2Mi45NTkiLCItMy4wODY1NjUzM0UtMTM3MjkxNyIpOworICBtYXRodGVzdCgxODAsZGVmLCItMzYxOTU1Ni4yOEUrNTg3NjczNTgzIiwiLTMuNDUyMzY5NzIiLCItMy42MTk1NTYyOEUrNTg3NjczNTg5IiwiLTMuNjE5NTU2MjhFKzU4NzY3MzU4OSIsIjEuMjQ5NjA0NjVFKzU4NzY3MzU5MCIsIjEuMDQ4NDI2NjFFKzU4NzY3MzU4OSIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxODEsZGVmLCItMjQ5LjQwMDcwNEUtOTIzOTMwODQ4IiwiODMxMTAyLjkxOSIsIjgzMTEwMi45MTkiLCItODMxMTAyLjkxOSIsIi0yLjA3Mjc3NjUzRS05MjM5MzA4NDAiLCItMy4wMDA4NDAxOUUtOTIzOTMwODUyIiwiMCIsIi0yLjQ5NDAwNzA0RS05MjM5MzA4NDYiLCIiKTsKKyAgbWF0aHRlc3QoMTgyLGRlZiwiNjUyMzQuMjczOUUrMTU0OTQ5OTE0IiwiLTY5NDU4MTg5NSIsIjYuNTIzNDI3MzlFKzE1NDk0OTkxOCIsIjYuNTIzNDI3MzlFKzE1NDk0OTkxOCIsIi00LjUzMTA1NDU2RSsxNTQ5NDk5MjciLCItOS4zOTE4NzY1MkUrMTU0OTQ5OTA5IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDE4MyxkZWYsIjQ1LjIzMTYyMTMiLCItODg3NzUwODMuNCIsIi04ODc3NTAzOC4yIiwiODg3NzUxMjguNiIsIi00LjAxNTQ0MDk1RSs5IiwiLTUuMDk1MDgwNjlFLTciLCIwIiwiNDUuMjMxNjIxMyIsIjEuOTIzMTQyNTRFLTE0Njk2MjAxNSIpOworICBtYXRodGVzdCgxODQsZGVmLCIzMzExMDAzNzUuIiwiNDQyLjM0MzM3OCIsIjMzMTEwMDgxNyIsIjMzMTA5OTkzMyIsIjEuNDY0NjAwNThFKzExIiwiNzQ4NTE0LjM3IiwiNzQ4NTE0IiwiMTYzLjc1OTcwOCIsIjYuNjQwMTEwNDNFKzM3NjUiKTsKKyAgbWF0aHRlc3QoMTg1LGRlZiwiODEuODE2Mjc2NSIsIjUuNjEyMzk1MTVFKzQ2NzM3MjE2MyIsIjUuNjEyMzk1MTVFKzQ2NzM3MjE2MyIsIi01LjYxMjM5NTE1RSs0NjczNzIxNjMiLCI0LjU5MTg1MjczRSs0NjczNzIxNjUiLCIxLjQ1Nzc3ODI2RS00NjczNzIxNjIiLCIwIiwiODEuODE2Mjc2NSIsIjIuOTk5NDI2NzdFKzExIik7CisgIG1hdGh0ZXN0KDE4NixkZWYsIi01NzM4LjEzMDY5RSs3ODk0NjQwNzgiLCIzMzk2OTcxNS4wIiwiLTUuNzM4MTMwNjlFKzc4OTQ2NDA4MSIsIi01LjczODEzMDY5RSs3ODk0NjQwODEiLCItMS45NDkyMjY2NEUrNzg5NDY0MDg5IiwiLTEuNjg5MTkwMTJFKzc4OTQ2NDA3NCIsIiIsIiIsIiIpOworICBtYXRodGVzdCgxODcsZGVmLCItNzQxMy4wMzkxMSIsIjIuNzA2MzAzMjBFLTI1NDg1ODI2NCIsIi03NDEzLjAzOTExIiwiLTc0MTMuMDM5MTEiLCItMi4wMDYxOTMxNUUtMjU0ODU4MjYwIiwiLTIuNzM5MTc1MzlFKzI1NDg1ODI2NyIsIiIsIiIsIi00LjA3MzY5ODQyRSsxMSIpOworICBtYXRodGVzdCgxODgsZGVmLCItNDE3Njk2LjE4MiIsIjI3NDAwLjYwMDIiLCItMzkwMjk1LjU4MiIsIi00NDUwOTYuNzgyIiwiLTEuMTQ0NTEyNjFFKzEwIiwiLTE1LjI0NDA1MjMiLCItMTUiLCItNjY4Ny4xNzkwIiwiLTEuNTgwMjAzMzRFKzE1NDAxNyIpOworICBtYXRodGVzdCgxODksZGVmLCI2OC44NTM4NzM1RSs2NTU2NDcyODciLCIzMTk4LjE3OTMzRS0xMzI0NTQ4MjYiLCI2Ljg4NTM4NzM1RSs2NTU2NDcyODgiLCI2Ljg4NTM4NzM1RSs2NTU2NDcyODgiLCIyLjIwMjA3MDM1RSs1MjMxOTI0NjYiLCIyLjE1MjkwODQ2RSs3ODgxMDIxMTEiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTkwLGRlZiwiLTY4MTcuMDQyNDYiLCI0MzQ0MjAuNDM5IiwiNDI3NjAzLjM5NyIsIi00NDEyMzcuNDgxIiwiLTIuOTYxNDYyNThFKzkiLCItMC4wMTU2OTIyNjkyIiwiMCIsIi02ODE3LjA0MjQ2IiwiNS45NDE0MzUxOEUrMTY2NTM5MCIpOworICBtYXRodGVzdCgxOTEsZGVmLCI4NTc4LjI3NTExIiwiNjQ3MDQyLjM0MUUtNDkwOTI0MzM0IiwiODU3OC4yNzUxMSIsIjg1NzguMjc1MTEiLCI1LjU1MDUwNzIxRS00OTA5MjQzMjUiLCIxLjMyNTc2NzJFKzQ5MDkyNDMzMiIsIiIsIiIsIjMuOTg0NzM4NDZFKzIzIik7CisgIG1hdGh0ZXN0KDE5MixkZWYsIjQxMjQuMTE2MTVFKzczMzEwOTQyNCIsIjU5NzM4NTgyOEUrMzc1OTI4NzQ1IiwiNC4xMjQxMTYxNUUrNzMzMTA5NDI3IiwiNC4xMjQxMTYxNUUrNzMzMTA5NDI3IiwiIiwiNi45MDM2MDU2RSszNTcxODA2NzMiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMTkzLGRlZiwiMTAyLjcxNDQwMCIsIi05MTkwMTcuNDY4IiwiLTkxODkxNC43NTQiLCI5MTkxMjAuMTgyIiwiLTk0Mzk2MzI3LjgiLCItMC4wMDAxMTE3NjU0NDkiLCIwIiwiMTAyLjcxNDQwMCIsIjQuMDQyOTU2ODlFLTE4NDg3MjQiKTsKKyAgbWF0aHRlc3QoMTk0LGRlZiwiLTQ2MTQuMzMwMTVFKzk5Njc3ODczMyIsIi00MzMuNTYwODEyRSsyMjg2MDU5OSIsIi00LjYxNDMzMDE1RSs5OTY3Nzg3MzYiLCItNC42MTQzMzAxNUUrOTk2Nzc4NzM2IiwiIiwiMS4wNjQyODY3MkUrOTczOTE4MTM1IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDE5NSxkZWYsIjQ1NzQ1NTE3MC4iLCIzNzA5MjMwLjQ4RSs2NzcwMTA4NzkiLCIzLjcwOTIzMDQ4RSs2NzcwMTA4ODUiLCItMy43MDkyMzA0OEUrNjc3MDEwODg1IiwiMS42OTY4MDY2NkUrNjc3MDEwODk0IiwiMS4yMzMyODg2MUUtNjc3MDEwODc3IiwiMCIsIjQ1NzQ1NTE3MCIsIjQuMzc5MTkzNzZFKzM0Iik7CisgIG1hdGh0ZXN0KDE5NixkZWYsIi0yNTIyNDY4LjE1IiwiLTQ4NDgyMDQzLjUiLCItNTEwMDQ1MTEuNyIsIjQ1OTU5NTc1LjQiLCIxLjIyMjk0NDExRSsxNCIsIjAuMDUyMDI4OTE1NiIsIjAiLCItMjUyMjQ2OC4xNSIsIjEuNDIzNDgxNzhFLTMxMDM3MzU5NSIpOworICBtYXRodGVzdCgxOTcsZGVmLCItNjU5ODExMzg0IiwiNjI3NzcuNjExOCIsIi02NTk3NDg2MDYiLCItNjU5ODc0MTYyIiwiLTQuMTQyMTM4MjlFKzEzIiwiLTEwNTEwLjI5NzYiLCItMTA1MTAiLCItMTg2ODMuOTgyMCIsIjMuNDM5MzUyNEUrNTUzNjY1Iik7CisgIG1hdGh0ZXN0KDE5OCxkZWYsIjQ0MjQuOTQxNzYiLCItODI1ODQ4LjIwIiwiLTgyMTQyMy4yNTgiLCI4MzAyNzMuMTQyIiwiLTMuNjU0MzMwMTlFKzkiLCItMC4wMDUzNTgwNTcwNCIsIjAiLCI0NDI0Ljk0MTc2IiwiMy40MjE1Mjc3NUUtMzAxMDk2NiIpOworICBtYXRodGVzdCgxOTksZGVmLCI0My42NDQxODg0IiwiLTY1MDkuODk2NjNFLTYxNDE2OTM3NyIsIjQzLjY0NDE4ODQiLCI0My42NDQxODg0IiwiLTIuODQxMTkxNTVFLTYxNDE2OTM3MiIsIi02LjcwNDI4Mjg2RSs2MTQxNjkzNzQiLCIiLCIiLCIzLjMxNTI0MDU2RS0xMiIpOworICBtYXRodGVzdCgyMDAsZGVmLCI4OTcuMzg4MzgxRS04NDM4NjQ4NzYiLCI4NDE5NS4xMzY5IiwiODQxOTUuMTM2OSIsIi04NDE5NS4xMzY5IiwiNy41NTU1NzM3NkUtODQzODY0ODY5IiwiMS4wNjU4NDM0OEUtODQzODY0ODc4IiwiMCIsIjguOTczODgzODFFLTg0Mzg2NDg3NCIsIiIpOworICBtYXRodGVzdCgyMDEsZGVmLCI3OTYxOTk4MjUiLCI0OTYuNzY4MzQiLCI3OTYyMDAzMjIiLCI3OTYxOTkzMjgiLCIzLjk1NTI2ODY1RSsxMSIsIjE2MDI3NTguNzkiLCIxNjAyNzU4IiwiMzkzLjkxODI4IiwiNi40MjY0NzI2NEUrNDQyMyIpOworICBtYXRodGVzdCgyMDIsZGVmLCI1NzM1ODM1ODIiLCIxNTk4LjY5NTIxIiwiNTczNTg1MTgxIiwiNTczNTgxOTgzIiwiOS4xNjk4NTMyNUUrMTEiLCIzNTg3ODIuMzIzIiwiMzU4NzgyIiwiNTE3LjE2NTc4IiwiOS45MTE1NjMwMkUrMTQwMDQiKTsKKyAgbWF0aHRlc3QoMjAzLGRlZiwiLTc4MzE0NDI3MC4iLCI2MzQ3LjcxNDk2IiwiLTc4MzEzNzkyMiIsIi03ODMxNTA2MTgiLCItNC45NzExNzY2MEUrMTIiLCItMTIzMzc0LjIwMiIsIi0xMjMzNzQiLCItMTI4NC41MjQ5NiIsIjEuMjgxMTA4MDNFKzU2NDU4Iik7CisgIG1hdGh0ZXN0KDIwNCxkZWYsIjI2OTA5MjM0LjciLCI1MjQxMS41MDgxIiwiMjY5NjE2NDYuMiIsIjI2ODU2ODIzLjIiLCIxLjQxMDM1MzU3RSsxMiIsIjUxMy40MjIyNTUiLCI1MTMiLCIyMjEzMS4wNDQ3IiwiOS43NTgzNjUyOEUrMzg5NDE1Iik7CisgIG1hdGh0ZXN0KDIwNSxkZWYsIjguMjE5MTUyODIiLCIyNDg1OS43ODQxRS04NDMyODI5NTkiLCI4LjIxOTE1MjgyIiwiOC4yMTkxNTI4MiIsIjIuMDQzMjYzNjVFLTg0MzI4Mjk1NCIsIjMuMzA2MjA0NDNFKzg0MzI4Mjk1NSIsIiIsIiIsIjY3LjU1NDQ3MzEiKTsKKyAgbWF0aHRlc3QoMjA2LGRlZiwiLTY4OC4zODc3MTAiLCI4Mjc4My41MjA3RS04MzE4NzA4NTgiLCItNjg4LjM4NzcxMCIsIi02ODguMzg3NzEwIiwiLTUuNjk4NzE1ODJFLTgzMTg3MDg1MSIsIi04LjMxNTUxNjIzRSs4MzE4NzA4NTUiLCIiLCIiLCI1LjA0MjcyMDEyRSsyMiIpOworICBtYXRodGVzdCgyMDcsZGVmLCItOTc5MjIzMi4iLCItMTc0OS4wMTE2NiIsIi05NzkzOTgxLjAxIiwiLTk3OTA0ODIuOTkiLCIxLjcxMjY3Mjc5RSsxMCIsIjU1OTguNzIzMTEiLCI1NTk4IiwiLTEyNjQuNzI3MzIiLCItOC44Njk4NTY3NEUtMTIyMjgiKTsKKyAgbWF0aHRlc3QoMjA4LGRlZiwiLTEzMC43NjU2MDAiLCI4LjY3NDM3NDI3IiwiLTEyMi4wOTEyMjYiLCItMTM5LjQzOTk3NCIsIi0xMTM0LjMwOTc2IiwiLTE1LjA3NDkzMTciLCItMTUiLCItMC42NDk5ODU5NSIsIi0xLjExNzk5OTQ3RSsxOSIpOworICBtYXRodGVzdCgyMDksZGVmLCI5MTcuMjU5MTAyIiwiLTM2ODY0MC40MjYiLCItMzY3NzIzLjE2NyIsIjM2OTU1Ny42ODUiLCItMzM4MTM4Nzg2IiwiLTAuMDAyNDg4MjIxNjkiLCIwIiwiOTE3LjI1OTEwMiIsIjguNjcxMDQyNTVFLTEwOTIwOTQiKTsKKyAgbWF0aHRlc3QoMjEwLGRlZiwiLTQuOTcyNTYzMSIsIi0yOTQ1NjM3MTcuIiwiLTI5NDU2MzcyMiIsIjI5NDU2MzcxMiIsIjEuNDY0NzM2NjdFKzkiLCIxLjY4ODExMTJFLTgiLCIwIiwiLTQuOTcyNTYzMSIsIi02LjI3OTYyNTg0RS0yMDUxODcyODQiKTsKKyAgbWF0aHRlc3QoMjExLGRlZiwiLTYwOTYyODg3LjJFLTUxNDI0OTY2MSIsIi0yNDMwMjEuNDA3IiwiLTI0MzAyMS40MDciLCIyNDMwMjEuNDA3IiwiMS40ODE1Mjg2NkUtNTE0MjQ5NjQ4IiwiMi41MDg1Mzk4RS01MTQyNDk2NTkiLCIwIiwiLTYuMDk2Mjg4NzJFLTUxNDI0OTY1NCIsIiIpOworICBtYXRodGVzdCgyMTIsZGVmLCItNTUzODkyMTkuOCIsIi0zNzcyMjAwRSs5ODE4NjYzOTMiLCItMy43NzIyMDAwMEUrOTgxODY2Mzk5IiwiMy43NzIyMDAwMEUrOTgxODY2Mzk5IiwiMi4wODkzOTIxNUUrOTgxODY2NDA3IiwiMS40NjgzNTMyMUUtOTgxODY2MzkyIiwiMCIsIi01NTM4OTIxOS44IiwiMS4wNjI0MjY3OEUtMzEiKTsKKyAgbWF0aHRlc3QoMjEzLGRlZiwiNjgxLjY2NjAxMCIsIjYyNjg4NjcwMCIsIjYyNjg4NzM4MiIsIi02MjY4ODYwMTgiLCI0LjI3MzI3MzU2RSsxMSIsIjAuMDAwMDAxMDg3MzgzMTEiLCIwIiwiNjgxLjY2NjAxMCIsIiIpOworICBtYXRodGVzdCgyMTQsZGVmLCI2LjQyNjUyMTM4IiwiNTM0NjU4OTQuNSIsIjUzNDY1OTAwLjkiLCItNTM0NjU4ODguMSIsIjM0MzU5OTcxNCIsIjEuMjAxOTg1MkUtNyIsIjAiLCI2LjQyNjUyMTM4IiwiNC42MTE1NTUzMkUrNDMxOTkxNTciKTsKKyAgbWF0aHRlc3QoMjE1LGRlZiwiNTYxNTQ2NjU2IiwiNjUxNDA4LjQ3NiIsIjU2MjE5ODA2NCIsIjU2MDg5NTI0OCIsIjMuNjU3OTYyNTFFKzE0IiwiODYyLjA0OTk2OCIsIjg2MiIsIjMyNTQ5LjY4OCIsIjguNjA1MjM3N0UrNTY5OTQxOSIpOworICBtYXRodGVzdCgyMTYsZGVmLCI3ODQ1Nzc4LjM2RS03OTk1MTEzOSIsIjkuNDU4NTkwNDciLCI5LjQ1ODU5MDQ3IiwiLTkuNDU4NTkwNDciLCI3LjQyMTAwMDQ0RS03OTk1MTEzMiIsIjguMjk0ODcwNTZFLTc5OTUxMTM0IiwiMCIsIjcuODQ1Nzc4MzZFLTc5OTUxMTMzIiwiMS4xMjY0ODIxNkUtNzE5NTYwMTg5Iik7CisgIG1hdGh0ZXN0KDIxNyxkZWYsIjU0NDg2LjIxMTIiLCIxMC43NTY1MDc4IiwiNTQ0OTYuOTY3NyIsIjU0NDc1LjQ1NDciLCI1ODYwODEuMzU2IiwiNTA2NS40MTgyOCIsIjUwNjUiLCI0LjQ5OTE5MzAiLCIxLjI1NjQ3MTY4RSs1MiIpOworICBtYXRodGVzdCgyMTgsZGVmLCIxNjU3NjQ4Mi41IiwiLTIyMTc3MjAuODMiLCIxNDM1ODc2MS43IiwiMTg3OTQyMDMuMyIsIi0zLjY3NjIwMTA1RSsxMyIsIi03LjQ3NDU1Nzc5IiwiLTciLCIxMDUyNDM2LjY5IiwiMS4zODI1OTM3NEUtMTYwMTA4MjAiKTsKKyAgbWF0aHRlc3QoMjE5LGRlZiwiNjEuMjc5Mzc4N0UtMzkyMDcwMTExIiwiNi4yMjU3NTY1MSIsIjYuMjI1NzU2NTEiLCItNi4yMjU3NTY1MSIsIjMuODE1MTA0OTFFLTM5MjA3MDEwOSIsIjkuODQyODgwNzJFLTM5MjA3MDExMSIsIjAiLCI2LjEyNzkzNzg3RS0zOTIwNzAxMTAiLCIiKTsKKyAgbWF0aHRlc3QoMjIwLGRlZiwiNTExNTEzNi4zOSIsIi02NTM2NzQzNzIuIiwiLTY0ODU1OTIzNiIsIjY1ODc4OTUwOCIsIi0zLjM0MzYzMzU3RSsxNSIsIi0wLjAwNzgyNTIwNTY1IiwiMCIsIjUxMTUxMzYuMzkiLCIiKTsKKyAgbWF0aHRlc3QoMjIxLGRlZiwiLTcuODQyMzgzNjZFLTQxNjQ3NzMzOSIsIi0zNzQzMjc1OC45RSs5NzM2OTM5MyIsIi0zLjc0MzI3NTg5RSs5NzM2OTQwMCIsIjMuNzQzMjc1ODlFKzk3MzY5NDAwIiwiMi45MzU2MjA1N0UtMzE5MTA3OTM4IiwiMi4wOTUwNTg5NUUtNTEzODQ2NzM5IiwiMCIsIi03Ljg0MjM4MzY2RS00MTY0NzczMzkiLCIiKTsKKyAgbWF0aHRlc3QoMjIyLGRlZiwiLTM4Nzc4MS4zRSsyODQxMDgzODAiLCItMjE4MDg1LjU5MiIsIi0zLjg3NzgxMzAwRSsyODQxMDgzODUiLCItMy44Nzc4MTMwMEUrMjg0MTA4Mzg1IiwiOC40NTY5NTE0NEUrMjg0MTA4MzkwIiwiMS43NzgxMTUxN0UrMjg0MTA4MzgwIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDIyMyxkZWYsIi01MzUzLjE3NzM2IiwiMy4zOTMzMjM0NkUrNTQ2Njg1MzU5IiwiMy4zOTMzMjM0NkUrNTQ2Njg1MzU5IiwiLTMuMzkzMzIzNDZFKzU0NjY4NTM1OSIsIi0xLjgxNjUwNjIzRSs1NDY2ODUzNjMiLCItMS41Nzc1NjE3N0UtNTQ2Njg1MzU2IiwiMCIsIi01MzUzLjE3NzM2IiwiLTEuNTM0MDMzNjlFKzExIik7CisgIG1hdGh0ZXN0KDIyNCxkZWYsIi0yMDgzNy4yOTAwRS0xNjg2NTI3NzIiLCItODIzNi43ODMwNUUtNzEyODE5MTczIiwiLTIuMDgzNzI5MDBFLTE2ODY1Mjc2OCIsIi0yLjA4MzcyOTAwRS0xNjg2NTI3NjgiLCIxLjcxNjMyMjM3RS04ODE0NzE5MzciLCIyLjUyOTc4NDk3RSs1NDQxNjY0MDEiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjI1LGRlZiwiLTk4NTczLjg3MjJFKzgyOTAyMjM2NiIsIjMwOTAxMS4wMDciLCItOS44NTczODcyMkUrODI5MDIyMzcwIiwiLTkuODU3Mzg3MjJFKzgyOTAyMjM3MCIsIi0zLjA0NjA0MTE1RSs4MjkwMjIzNzYiLCItMy4xODk5NzkzMkUrODI5MDIyMzY1IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDIyNixkZWYsIjQ5NzMwNzUwLjciLCItNTMxNS4xMDYzNkUtMjk5NTg2OTkxIiwiNDk3MzA3NTAuNyIsIjQ5NzMwNzUwLjciLCItMi42NDMyNDIyOUUtMjk5NTg2OTgwIiwiLTkuMzU2NDkyMTFFKzI5OTU4Njk5NCIsIiIsIiIsIjMuMjg3NTY5MzZFLTM5Iik7CisgIG1hdGh0ZXN0KDIyNyxkZWYsIjE1Mzk1MjMuNDAiLCItOTYyMzg4LjU4MSIsIjU3NzEzNC44MiIsIjI1MDE5MTEuOTgiLCItMS40ODE2MTk3NEUrMTIiLCItMS41OTk2OTAwMSIsIi0xIiwiNTc3MTM0LjgxOSIsIjMuMTAxNDQ4MzRFLTU5NTQ2NzMiKTsKKyAgbWF0aHRlc3QoMjI4LGRlZiwiODE1OTYuMjEyMSIsIi0zNzYwMC45NjUzIiwiNDM5OTUuMjQ2OCIsIjExOTE5Ny4xNzciLCItMy4wNjgwOTYzNEUrOSIsIi0yLjE3MDA1NjMxIiwiLTIiLCI2Mzk0LjI4MTUiLCIxLjk3ODc4Mjk5RS0xODQ2ODQiKTsKKyAgbWF0aHRlc3QoMjI5LGRlZiwiNTkwMTQ2MTk5IiwiLTE0MjU0MDQuNjEiLCI1ODg3MjA3OTQiLCI1OTE1NzE2MDQiLCItOC40MTE5NzExM0UrMTQiLCItNDE0LjAyMDEyOCIsIi00MTQiLCIyODY5MC40NiIsIjIuMDQ2NTA5OTRFLTEyNTAyMTcwIik7CisgIG1hdGh0ZXN0KDIzMCxkZWYsIjE5Ni4wNTU0MyIsIjUwNS45MzYzMDUiLCI3MDEuOTkxNzM1IiwiLTMwOS44ODA4NzUiLCI5OTE5MS41NTk4IiwiMC4zODc1MTAxMDQiLCIwIiwiMTk2LjA1NTQzIiwiOC43ODQzNzM5N0UrMTE1OSIpOworICBtYXRodGVzdCgyMzEsZGVmLCI3Ny44MDU4NDQ5IiwiLTY0Mi4yNzUyNzQiLCItNTY0LjQ2OTQyOSIsIjcyMC4wODExMTkiLCItNDk5NzIuNzcwNCIsIi0wLjEyMTE0MDk2MyIsIjAiLCI3Ny44MDU4NDQ5IiwiOS4zMzU4MjYyNkUtMTIxNSIpOworICBtYXRodGVzdCgyMzIsZGVmLCIxNDY4LjYwNjg0IiwiMTAwNjguMTM4IiwiMTE1MzYuNzQ0OCIsIi04NTk5LjUzMTIiLCIxNDc4NjEzNi4zIiwiMC4xNDU4NjY3NzciLCIwIiwiMTQ2OC42MDY4NCIsIjIuNTQxMjI0ODRFKzMxODg0Iik7CisgIG1hdGh0ZXN0KDIzMyxkZWYsIjQuOTg3NzQ3NjdFLTM4Nzk2ODYzMiIsIjQuNDE3MzE0MzlFLTU3ODgxMjM3NiIsIjQuOTg3NzQ3NjdFLTM4Nzk2ODYzMiIsIjQuOTg3NzQ3NjdFLTM4Nzk2ODYzMiIsIjIuMjAzMjQ0OTZFLTk2Njc4MTAwNyIsIjEuMTI5MTM1NzdFKzE5MDg0Mzc0NCIsIiIsIiIsIiIpOworICBtYXRodGVzdCgyMzQsZGVmLCI5ODEuMDkxMDU5IiwiLTkyMjM4Ljk5MzAiLCItOTEyNTcuOTAyMCIsIjkzMjIwLjA4NDEiLCItOTA0OTQ4NTEuMyIsIi0wLjAxMDYzNjQwMjUiLCIwIiwiOTgxLjA5MTA1OSIsIjUuMjk5NDMzNDJFLTI3NTk1MyIpOworICBtYXRodGVzdCgyMzUsZGVmLCItMzYwNi4yNDk5MiIsIjgyOTAyMjQuNzAiLCI4Mjg2NjE4LjQ1IiwiLTgyOTM4MzAuOTUiLCItMi45ODk2NjIyMkUrMTAiLCItMC4wMDA0MzUwMDAyNjIiLCIwIiwiLTM2MDYuMjQ5OTIiLCItMS4yMzc0NzEwN0UrMjk0ODg3OTMiKTsKKyAgbWF0aHRlc3QoMjM2LGRlZiwiLTg5Nzg1NzEuMzUiLCI5MjI0My40Nzk2IiwiLTg4ODYzMjcuODciLCItOTA3MDgxNC44MyIsIi04LjI4MjE0NjYzRSsxMSIsIi05Ny4zMzU1NjY2IiwiLTk3IiwiLTMwOTUzLjgyODgiLCItNC45NTc2MjgxM0UrNjQxMzg0Iik7CisgIG1hdGh0ZXN0KDIzNyxkZWYsIi02MTk2OC4xOTkyRSs4MTAwNjA0NzgiLCI0NzQyOTQ2NzEuRSsxNzkyNjM0MTQiLCItNi4xOTY4MTk5MkUrODEwMDYwNDgyIiwiLTYuMTk2ODE5OTJFKzgxMDA2MDQ4MiIsIi0yLjkzOTExODY3RSs5ODkzMjM5MDUiLCItMS4zMDY1MzM3NEUrNjMwNzk3MDYwIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDIzOCxkZWYsIjYxMjk4NDMxLjZFLTc1NDQyOTA0MSIsIi0yNTg0ODYyLjc5IiwiLTI1ODQ4NjIuNzkiLCIyNTg0ODYyLjc5IiwiLTEuNTg0NDgwMzVFLTc1NDQyOTAyNyIsIi0yLjM3MTQzODUxRS03NTQ0MjkwNDAiLCIwIiwiNi4xMjk4NDMxNkUtNzU0NDI5MDM0IiwiIik7CisgIG1hdGh0ZXN0KDIzOSxkZWYsIjYyMTAzOS4wNjQiLCItNTM1MTUzOS42MiIsIi00NzMwNTAwLjU2IiwiNTk3MjU3OC42OCIsIi0zLjMyMzUxNTE2RSsxMiIsIi0wLjExNjA0ODY3MiIsIjAiLCI2MjEwMzkuMDY0IiwiMi40MTE2MzMxMkUtMzEwMDIxMDgiKTsKKyAgbWF0aHRlc3QoMjQwLGRlZiwiLTE5LjYwMDc2MDUiLCItNTc5MDU2OTYuIiwiLTU3OTA1NzE1LjYiLCI1NzkwNTY3Ni40IiwiMS4xMzQ5OTU2OEUrOSIsIjMuMzg0OTQ1MTVFLTciLCIwIiwiLTE5LjYwMDc2MDUiLCIxLjA1NjYzNjQ2RS03NDgyOTk2MyIpOworICBtYXRodGVzdCgyNDEsZGVmLCIzNjI2LjEzMTA5RSs2ODcwMzAzNDYiLCIxODkuODk2MDA0IiwiMy42MjYxMzEwOUUrNjg3MDMwMzQ5IiwiMy42MjYxMzEwOUUrNjg3MDMwMzQ5IiwiNi44ODU4NzgwNEUrNjg3MDMwMzUxIiwiMS45MDk1MzUyM0UrNjg3MDMwMzQ3IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDI0MixkZWYsIi0yNDkzMzQuMDI2IiwiLTcuNTQ3MzU4MzRFLTE0MTM3MTg4IiwiLTI0OTMzNC4wMjYiLCItMjQ5MzM0LjAyNiIsIjEuODgxODEzMjRFLTE0MTM3MTgyIiwiMy4zMDM1OTMzMkUrMTQxMzcxOTIiLCIiLCIiLCI2LjY5NDk1NDA4RS00NCIpOworICBtYXRodGVzdCgyNDMsZGVmLCI0MTc2MTM5MjguIiwiLTkyNTIxMy4yMTYiLCI0MTY2ODg3MTUiLCI0MTg1MzkxNDEiLCItMy44NjM4MTkyNUUrMTQiLCItNDUxLjM3MDQ3NCIsIi00NTEiLCIzNDI3NjcuNTg0IiwiOC4zODQzMDA4NUUtNzk3NjA1NCIpOworICBtYXRodGVzdCgyNDQsZGVmLCIyMy44MzIwMzA5IiwiLTUwMDc0OTk2LjEiLCItNTAwNzQ5NzIuMyIsIjUwMDc1MDE5LjkiLCItMS4xOTMzODg4NUUrOSIsIi00Ljc1OTI2NzY1RS03IiwiMCIsIjIzLjgzMjAzMDkiLCI1LjgxNDY2Mzg3RS02ODk2MTMzNSIpOworICBtYXRodGVzdCgyNDUsZGVmLCI0OTc4OTY3Ny43IiwiLTEzMTgyNzgxMkUrMTU2NDEyNTM0IiwiLTEuMzE4Mjc4MTJFKzE1NjQxMjU0MiIsIjEuMzE4Mjc4MTJFKzE1NjQxMjU0MiIsIi02LjU2MzY2NDI3RSsxNTY0MTI1NDkiLCItMy43NzY4NzIwNEUtMTU2NDEyNTM1IiwiMCIsIjQ5Nzg5Njc3LjciLCIyLjAwODQ0ODQzRS04Iik7CisgIG1hdGh0ZXN0KDI0NixkZWYsIi04OTA3MTYzLjYxRS03NDE4NjcyNDYiLCI3NzM2NTEuMjg4RS00NzIwMzMyODIiLCI3LjczNjUxMjg4RS00NzIwMzMyNzciLCItNy43MzY1MTI4OEUtNDcyMDMzMjc3IiwiIiwiLTEuMTUxMzE1MDRFLTI2OTgzMzk2MyIsIjAiLCItOC45MDcxNjM2MUUtNzQxODY3MjQwIiwiIik7CisgIG1hdGh0ZXN0KDI0NyxkZWYsIjUxNDAyMTcxMS5FKzQ2MzUzNjY0NiIsIjYxNzQ0MTY1OS4iLCI1LjE0MDIxNzExRSs0NjM1MzY2NTQiLCI1LjE0MDIxNzExRSs0NjM1MzY2NTQiLCIzLjE3Mzc4NDE4RSs0NjM1MzY2NjMiLCI4LjMyNTAyNDc4RSs0NjM1MzY2NDUiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjQ4LGRlZiwiOTk4MTc1NzUwIiwiMi4zOTI4NTQ3OCIsIjk5ODE3NTc1MiIsIjk5ODE3NTc0OCIsIjIuMzg4NDg5NjFFKzkiLCI0MTcxNDg0ODciLCI0MTcxNDg0ODYiLCIxLjMwNTEzNjkyIiwiOS45NjM1NDgyOEUrMTciKTsKKyAgbWF0aHRlc3QoMjQ5LGRlZiwiODczNTc1NDI2LiIsIjY0Nzg1My4xNTJFKzQ5NzQ1MDc4MSIsIjYuNDc4NTMxNTJFKzQ5NzQ1MDc4NiIsIi02LjQ3ODUzMTUyRSs0OTc0NTA3ODYiLCI1LjY1OTQ4NTkzRSs0OTc0NTA3OTUiLCIxLjM0ODQxNThFLTQ5NzQ1MDc3OCIsIjAiLCI4NzM1NzU0MjYiLCI0LjQ0NDI5MDY0RSs1MyIpOworICBtYXRodGVzdCgyNTAsZGVmLCI0MzUyNjI2LjgiLCItMTMwMzM4MDQ4LkUtNzQ0NTYwOTExIiwiNDM1MjYyNi44MCIsIjQzNTI2MjYuODAiLCItNS42NzMxMjg4MUUtNzQ0NTYwODk3IiwiLTMuMzM5NDkwNTVFKzc0NDU2MDkwOSIsIiIsIiIsIjIuMjk3NDYzMjJFLTciKTsKKyAgbWF0aHRlc3QoMjUxLGRlZiwiNDM3LjI4Njk2MCIsIjcuMzc1NjA4MzUiLCI0NDQuNjYyNTY4IiwiNDI5LjkxMTM1MiIsIjMyMjUuMjU3MzUiLCI1OS4yODgyNTY1IiwiNTkiLCIyLjEyNjA2NzM1IiwiMy4wNTc0OTQ1MkUrMTgiKTsKKyAgbWF0aHRlc3QoMjUyLGRlZiwiODQ5ODI4MC40NUUrMjIwNTExNTIyIiwiNTg4NjE3NjEyIiwiOC40OTgyODA0NUUrMjIwNTExNTI4IiwiOC40OTgyODA0NUUrMjIwNTExNTI4IiwiNS4wMDIyMzc1NEUrMjIwNTExNTM3IiwiMS40NDM3NjkzMUUrMjIwNTExNTIwIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDI1MyxkZWYsIi01MzIwMzg3Ljc3IiwiLTc2NzMyMzcuNDYiLCItMTI5OTM2MjUuMiIsIjIzNTI4NDkuNjkiLCI0LjA4MjQ1OTg3RSsxMyIsIjAuNjkzMzY5MzYzIiwiMCIsIi01MzIwMzg3Ljc3IiwiLTEuMzAxMTM3NDVFLTUxNjA5NzU3Iik7CisgIG1hdGh0ZXN0KDI1NCxkZWYsIjU4NzY1NTM3NSIsIi00Ljk3NDgzNjYiLCI1ODc2NTUzNzAiLCI1ODc2NTUzODAiLCItMi45MjM0ODk0N0UrOSIsIi0xMTgxMjU1NjMiLCItMTE4MTI1NTYzIiwiMC43OTE5OTQyIiwiMS40MjY4NzY2N0UtNDQiKTsKKyAgbWF0aHRlc3QoMjU1LGRlZiwiMTI2NjA5OC40NCIsIi0yNjYxLjY0OTA0RS02NDI2MDExNDIiLCIxMjY2MDk4LjQ0IiwiMTI2NjA5OC40NCIsIi0zLjM2OTkwOTcwRS02NDI2MDExMzMiLCItNC43NTY4MTk2M0UrNjQyNjAxMTQ0IiwiIiwiIiwiNC45MjcxNzAzNkUtMTkiKTsKKyAgbWF0aHRlc3QoMjU2LGRlZiwiMy45MjczNzQ2M0UrNDgyODczNDgzIiwiLTY4NS41MjI3NDciLCIzLjkyNzM3NDYzRSs0ODI4NzM0ODMiLCIzLjkyNzM3NDYzRSs0ODI4NzM0ODMiLCItMi42OTIzMDQ2NEUrNDgyODczNDg2IiwiLTUuNzI5MDIxNjFFKzQ4Mjg3MzQ4MCIsIiIsIiIsIiIpOworICBtYXRodGVzdCgyNTcsZGVmLCIyMjgyNjQ5NC4xIiwiOTg2MTg5NDc0LiIsIjEuMDA5MDE1OTdFKzkiLCItOTYzMzYyOTgwIiwiMi4yNTExMjQ4MkUrMTYiLCIwLjAyMzE0NjE1NDciLCIwIiwiMjI4MjY0OTQuMSIsIiIpOworICBtYXRodGVzdCgyNTgsZGVmLCItNjQ3MzQyLjM4MCIsIi00OTg4MTYzODYiLCItNDk5NDYzNzI4IiwiNDk4MTY5MDQ0IiwiMy4yMjkwNDk4NkUrMTQiLCIwLjAwMTI5Nzc1Njg1IiwiMCIsIi02NDczNDIuMzgwIiwiIik7CisgIG1hdGh0ZXN0KDI1OSxkZWYsIjM5MzA5MjM3My4iLCItMjUuNzIyNjgyMiIsIjM5MzA5MjM0NyIsIjM5MzA5MjM5OSIsIi0xLjAxMTEzOTAyRSsxMCIsIi0xNTI4MTkzNS42IiwiLTE1MjgxOTM1IiwiMTUuNTkzOTQzMCIsIjMuNDkyNTI4MzlFLTIyNCIpOworICBtYXRodGVzdCgyNjAsZGVmLCIyLjk2MjUzNDkyIiwiMjAuNzQ0NDg4OCIsIjIzLjcwNzAyMzciLCItMTcuNzgxOTUzOSIsIjYxLjQ1NjI3MjUiLCIwLjE0MjgxMDY5OCIsIjAiLCIyLjk2MjUzNDkyIiwiOC4wMzQwMjI0NkUrOSIpOworICBtYXRodGVzdCgyNjEsZGVmLCI1MzU1My4zNzUwRSszODY5NTU0MjMiLCItNzMyNDcwODc2IiwiNS4zNTUzMzc1MEUrMzg2OTU1NDI3IiwiNS4zNTUzMzc1MEUrMzg2OTU1NDI3IiwiLTMuOTIyNjI4NzVFKzM4Njk1NTQzNiIsIi03LjMxMTMzMTY1RSszODY5NTU0MTgiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjYyLGRlZiwiLTY5NjQ1MS40MDZFLTI4NjUzNTkxNyIsIi03MzA4NjA5MC44IiwiLTczMDg2MDkwLjgiLCI3MzA4NjA5MC44IiwiNS4wOTAwOTEwN0UtMjg2NTM1OTA0IiwiOS41MjkxOTIxOUUtMjg2NTM1OTIwIiwiMCIsIi02Ljk2NDUxNDA2RS0yODY1MzU5MTIiLCIiKTsKKyAgbWF0aHRlc3QoMjYzLGRlZiwiMTU1MS4yOTk1NyIsIi01ODAzNTg2MjIuRSsxMTcwMTcyNjUiLCItNS44MDM1ODYyMkUrMTE3MDE3MjczIiwiNS44MDM1ODYyMkUrMTE3MDE3MjczIiwiLTkuMDAzMTAwODFFKzExNzAxNzI3NiIsIi0yLjY3MzAwMTY4RS0xMTcwMTcyNzEiLCIwIiwiMTU1MS4yOTk1NyIsIjcuMTc1MDY3MTFFLTIwIik7CisgIG1hdGh0ZXN0KDI2NCxkZWYsIi0yMDUxMjMwMDYuRS0yMTM3NTI3OTkiLCItNzg2Mzg0NjguNiIsIi03ODYzODQ2OC42IiwiNzg2Mzg0NjguNiIsIjEuNjEzMDU1OTFFLTIxMzc1Mjc4MyIsIjIuNjA4NDMwODNFLTIxMzc1Mjc5OSIsIjAiLCItMi4wNTEyMzAwNkUtMjEzNzUyNzkxIiwiIik7CisgIG1hdGh0ZXN0KDI2NSxkZWYsIjc3NjMyLjgwNzMiLCItMzM3ODU0Mi44OEUrNjc3NDQxMzE5IiwiLTMuMzc4NTQyODhFKzY3NzQ0MTMyNSIsIjMuMzc4NTQyODhFKzY3NzQ0MTMyNSIsIi0yLjYyMjg1NzY4RSs2Nzc0NDEzMzAiLCItMi4yOTc4MTkyMUUtNjc3NDQxMzIxIiwiMCIsIjc3NjMyLjgwNzMiLCIyLjEzNzI5MzMxRS0xNSIpOworICBtYXRodGVzdCgyNjYsZGVmLCIzMDY4OTk5LjM3IiwiMi4yMTAwNjIxMiIsIjMwNjkwMDEuNTgiLCIzMDY4OTk3LjE2IiwiNjc4MjY3OS4yNSIsIjEzODg2NDguNDYiLCIxMzg4NjQ4IiwiMS4wMjcxODYyNCIsIjkuNDE4NzU3MTNFKzEyIik7CisgIG1hdGh0ZXN0KDI2NyxkZWYsIjYyNTUyNDI3NC4iLCI1NS4yNDY4NjI0IiwiNjI1NTI0MzI5IiwiNjI1NTI0MjE5IiwiMy40NTU4MjUzNUUrMTAiLCIxMTMyMjM0OS4zIiwiMTEzMjIzNDkiLCIxNi43NTIyMjI0IiwiNi4yMTQ4Mjk0M0UrNDgzIik7CisgIG1hdGh0ZXN0KDI2OCxkZWYsIjYxMjY5MTM0LjkiLCItODQ1NzYxMzAzLiIsIi03ODQ0OTIxNjgiLCI5MDcwMzA0MzgiLCItNS4xODE5MDYzNEUrMTYiLCItMC4wNzI0NDI1ODQ4IiwiMCIsIjYxMjY5MTM0LjkiLCIiKTsKKyAgbWF0aHRlc3QoMjY5LGRlZiwiLTI4NDAuMTIwOTkiLCItMjg1Ni43NjczMUUtODI3NDM2NTAiLCItMjg0MC4xMjA5OSIsIi0yODQwLjEyMDk5IiwiOC4xMTM1NjQ4MEUtODI3NDM2NDQiLCI5Ljk0MTczMDIyRSs4Mjc0MzY0OSIsIiIsIiIsIi00LjM2NTA1MjU0RS0xMSIpOworICBtYXRodGVzdCgyNzAsZGVmLCI4Ljk1Mzg3ODEiLCItNy41NjYwMzM5MSIsIjEuMzg3ODQ0MTkiLCIxNi41MTk5MTIwIiwiLTY3Ljc0NTM0NTMiLCItMS4xODM0MzA4NyIsIi0xIiwiMS4zODc4NDQxOSIsIjIuNDIwNTMwNjFFLTgiKTsKKyAgbWF0aHRlc3QoMjcxLGRlZiwiLTU2MjMzNTQ3LjIiLCI1MDk3NTI1MzAiLCI0NTM1MTg5ODMiLCItNTY1OTg2MDc3IiwiLTIuODY2NTE5MzBFKzE2IiwiLTAuMTEwMzE1Mzg2IiwiMCIsIi01NjIzMzU0Ny4yIiwiIik7CisgIG1hdGh0ZXN0KDI3MixkZWYsIi0zMTY3LjQ3ODUzRS04NTQ4NTk0OTciLCItMTEwODUyMTE1IiwiLTExMDg1MjExNSIsIjExMDg1MjExNSIsIjMuNTExMjE2OTRFLTg1NDg1OTQ4NiIsIjIuODU3MzkxMTZFLTg1NDg1OTUwMiIsIjAiLCItMy4xNjc0Nzg1M0UtODU0ODU5NDk0IiwiIik7CisgIG1hdGh0ZXN0KDI3MyxkZWYsIi01NjUyLjUyMDkyIiwiLTYzMjI0MzI0NC4iLCItNjMyMjQ4ODk3IiwiNjMyMjM3NTkyIiwiMy41NzM3NjgxNkUrMTIiLCIwLjAwMDAwODk0MDQyMTIzIiwiMCIsIi01NjUyLjUyMDkyIiwiIik7CisgIG1hdGh0ZXN0KDI3NCxkZWYsIi05NDYuMDA5OTI4IiwiODIwMDkwLjY2RS01ODkyNzgwMTUiLCItOTQ2LjAwOTkyOCIsIi05NDYuMDA5OTI4IiwiLTcuNzU4MTM5MDZFLTU4OTI3ODAwNyIsIi0xLjE1MzU0MzExRSs1ODkyNzgwMTIiLCIiLCIiLCI2LjQxNDU0MDUzRSsyMyIpOworICBtYXRodGVzdCgyNzUsZGVmLCItMzY3Ljc1Nzc1OCIsIi05NTkuNjI2MDE2IiwiLTEzMjcuMzgzNzciLCI1OTEuODY4MjU4IiwiMzUyOTA5LjkxMiIsIjAuMzgzMjMwMjkyIiwiMCIsIi0zNjcuNzU3NzU4IiwiMS4xNDk4MjE5OUUtMjQ2MyIpOworICBtYXRodGVzdCgyNzYsZGVmLCI4MDk5MjY3MjEuRS03NDQ2MTE1NTQiLCItNjcuNjU2MDU0OSIsIi02Ny42NTYwNTQ5IiwiNjcuNjU2MDU0OSIsIi01LjQ3OTY0NDY3RS03NDQ2MTE1NDQiLCItMS4xOTcxMjM3OEUtNzQ0NjExNTQ3IiwiMCIsIjguMDk5MjY3MjFFLTc0NDYxMTU0NiIsIiIpOworICBtYXRodGVzdCgyNzcsZGVmLCItMTcyNS4wODU1NSIsIjc1NTg2LjMwMzEiLCI3Mzg2MS4yMTc2IiwiLTc3MzExLjM4ODciLCItMTMwMzkyODM5IiwiLTAuMDIyODIyNzI2OSIsIjAiLCItMTcyNS4wODU1NSIsIjMuNzA1NDA1ODdFKzI0NDY1NyIpOworICBtYXRodGVzdCgyNzgsZGVmLCIyNjU5Ljg0MTkxRSsyOTMxNDQ5MiIsIi03NDM3Mi40NTUxRSs1MTgxOTY2ODAiLCItNy40MzcyNDU1MUUrNTE4MTk2Njg0IiwiNy40MzcyNDU1MUUrNTE4MTk2Njg0IiwiLTEuOTc4MTg5NzNFKzU0NzUxMTE4MCIsIi0zLjU3NjM4MDRFLTQ4ODg4MjE5MCIsIjAiLCIyLjY1OTg0MTkxRSsyOTMxNDQ5NSIsIjEuMDYxNzE4MTFFLTIwNTIwMTQ2OCIpOworICBtYXRodGVzdCgyNzksZGVmLCItOTEuMTQzMTExMyIsIjEyMTQ3NTA3LjAiLCIxMjE0NzQxNS45IiwiLTEyMTQ3NTk4LjEiLCItMS4xMDcxNjE1OEUrOSIsIi0wLjAwMDAwNzUwMzAzMDE1IiwiMCIsIi05MS4xNDMxMTEzIiwiLTEuNTI0MTcwMDZFKzIzODA1NzU5Iik7CisgIG1hdGh0ZXN0KDI4MCxkZWYsIi0xMTM2Nzc4LjkxRSs2OTc3ODM4NzgiLCItODAxNTUyNTY5LiIsIi0xLjEzNjc3ODkxRSs2OTc3ODM4ODQiLCItMS4xMzY3Nzg5MUUrNjk3NzgzODg0IiwiOS4xMTE4ODA1NkUrNjk3NzgzODkyIiwiMS40MTgyMjEyOEUrNjk3NzgzODc1IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDI4MSxkZWYsIjczMTIzNzczLjBFKzQzMzMzNDE0OSIsIjYzLjM1NDg5MzAiLCI3LjMxMjM3NzMwRSs0MzMzMzQxNTYiLCI3LjMxMjM3NzMwRSs0MzMzMzQxNTYiLCI0LjYzMjc0ODgxRSs0MzMzMzQxNTgiLCIxLjE1NDE5Mjk4RSs0MzMzMzQxNTUiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjgyLGRlZiwiLTk3NjU0ODQuOCIsIjc5NzkuOTA4MDJFLTIzNDAyOTcxNSIsIi05NzY1NDg0LjgwIiwiLTk3NjU0ODQuODAiLCItNy43OTI3NjcwNUUtMjM0MDI5NzA1IiwiLTEuMjIzNzU5MDdFKzIzNDAyOTcxOCIsIiIsIiIsIjguMjcwODU2MTRFKzU1Iik7CisgIG1hdGh0ZXN0KDI4MyxkZWYsIi02OTUwMTAyODgiLCItOC4yNjU4MjgyMCIsIi02OTUwMTAyOTYiLCItNjk1MDEwMjgwIiwiNS43NDQ4MzU2NEUrOSIsIjg0MDgyMzUzLjQiLCI4NDA4MjM1MyIsIi0zLjQ1MDI0NTQwIiwiMS44MzY4MzQ5NUUtNzEiKTsKKyAgbWF0aHRlc3QoMjg0LGRlZiwiMjM5NzU2NDMuM0UtMTU1OTU1MjY0IiwiLTUwNTU0Ny42OTJFKzEzNzI1ODk0OCIsIi01LjA1NTQ3NjkyRSsxMzcyNTg5NTMiLCI1LjA1NTQ3NjkyRSsxMzcyNTg5NTMiLCItMS4yMTIwODMxMUUtMTg2OTYzMDMiLCItNC43NDI1MDg3RS0yOTMyMTQyMTEiLCIwIiwiMi4zOTc1NjQzM0UtMTU1OTU1MjU3IiwiMS4yNjIyNTk1MkUrNzc5Nzc2MjgzIik7CisgIG1hdGh0ZXN0KDI4NSxkZWYsIjI4NjIuOTU5MjEiLCItMzI2MDEyNDguNkUtNjA1ODYxMzMzIiwiMjg2Mi45NTkyMSIsIjI4NjIuOTU5MjEiLCItOS4zMzM2MDQ0OUUtNjA1ODYxMzIzIiwiLTguNzgxNzQ3MTJFKzYwNTg2MTMyOCIsIiIsIiIsIjQuMjYxNDIxNzVFLTExIik7CisgIG1hdGh0ZXN0KDI4NixkZWYsIi0xMy4xMzM1MThFKzI0NjA5MDUxNiIsIi04LjcxMjY5OTI1RS05NDUwOTIxMDgiLCItMS4zMTMzNTE4MEUrMjQ2MDkwNTE3IiwiLTEuMzEzMzUxODBFKzI0NjA5MDUxNyIsIjEuMTQ0MjgzOTJFLTY5OTAwMTU5MCIsIiIsIiIsIiIsIiIpOworICBtYXRodGVzdCgyODcsZGVmLCItMzQ2NzEuMjIzMiIsIjgxNzcxMC43NjIiLCI3ODMwMzkuNTM5IiwiLTg1MjM4MS45ODUiLCItMi44MzUxMDMyM0UrMTAiLCItMC4wNDI0MDAzNTA4IiwiMCIsIi0zNDY3MS4yMjMyIiwiLTUuMzA3ODg4MjhFKzM3MTIzODIiKTsKKyAgbWF0aHRlc3QoMjg4LGRlZiwiLTIyNDY0NzY5IiwiNjIuNDM2NjA2MCIsIi0yMjQ2NDcwNi42IiwiLTIyNDY0ODMxLjQiLCItMS40MDI2MjM5M0UrOSIsIi0zNTk4MDEuMjUyIiwiLTM1OTgwMSIsIi0xNS43MjQ1OTQwIiwiNi4yMTA0MjUzNkUrNDU1Iik7CisgIG1hdGh0ZXN0KDI4OSxkZWYsIi05NDU4LjYwODg3RS01NjMwNTE5NjMiLCI1Njc2MDU2LjAxIiwiNTY3NjA1Ni4wMSIsIi01Njc2MDU2LjAxIiwiLTUuMzY4NzU5MzdFLTU2MzA1MTk1MyIsIi0xLjY2NjQwNTEzRS01NjMwNTE5NjYiLCIwIiwiLTkuNDU4NjA4ODdFLTU2MzA1MTk2MCIsIiIpOworICBtYXRodGVzdCgyOTAsZGVmLCItNTkxLjkyNDEyM0UtOTUzMzE4NzQiLCItMTM0LjU5NjE4OCIsIi0xMzQuNTk2MTg4IiwiMTM0LjU5NjE4OCIsIjcuOTY3MDczMDVFLTk1MzMxODcwIiwiNC4zOTc3Nzc3N0UtOTUzMzE4NzQiLCIwIiwiLTUuOTE5MjQxMjNFLTk1MzMxODcyIiwiIik7CisgIG1hdGh0ZXN0KDI5MSxkZWYsIi0xODI1NjYwODUuRSs2ODg3MDY0NiIsIi05NjAzNDU5OTMuIiwiLTEuODI1NjYwODVFKzY4ODcwNjU0IiwiLTEuODI1NjYwODVFKzY4ODcwNjU0IiwiMS43NTMyNjYwOEUrNjg4NzA2NjMiLCIxLjkwMTA0NDlFKzY4ODcwNjQ1IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDI5MixkZWYsIjgyMzIuNTQ4OTMiLCItOTk4MjIwMDRFKzg5MTk3OTg0NSIsIi05Ljk4MjIwMDQwRSs4OTE5Nzk4NTIiLCI5Ljk4MjIwMDQwRSs4OTE5Nzk4NTIiLCItOC4yMTc4OTUzMkUrODkxOTc5ODU2IiwiLTguMjQ3MjI4NjdFLTg5MTk3OTg1MCIsIjAiLCI4MjMyLjU0ODkzIiwiNi45OTI4OTE1NkUtNDAiKTsKKyAgbWF0aHRlc3QoMjkzLGRlZiwiLTQzMzYuOTQzMTciLCItODE5MzczLjYwMUUrNTYzMjMzNDMwIiwiLTguMTkzNzM2MDFFKzU2MzIzMzQzNSIsIjguMTkzNzM2MDFFKzU2MzIzMzQzNSIsIjMuNTUzNTc2NzRFKzU2MzIzMzQzOSIsIjUuMjkyOTk4NDFFLTU2MzIzMzQzMyIsIjAiLCItNDMzNi45NDMxNyIsIjcuOTg5Njk0MDVFLTMwIik7CisgIG1hdGh0ZXN0KDI5NCxkZWYsIi0yLjA5MDQ0MzYyRS04NzY1Mjc5MDgiLCItNjUxNTQ2My4zMyIsIi02NTE1NDYzLjMzIiwiNjUxNTQ2My4zMyIsIjEuMzYyMDIwODdFLTg3NjUyNzkwMSIsIjMuMjA4NDM0MzNFLTg3NjUyNzkxNSIsIjAiLCItMi4wOTA0NDM2MkUtODc2NTI3OTA4IiwiIik7CisgIG1hdGh0ZXN0KDI5NSxkZWYsIi0xOTQzNDMuMzQ0IiwiMS45NTkyOTk3NyIsIi0xOTQzNDEuMzg1IiwiLTE5NDM0NS4zMDMiLCItMzgwNzc2Ljg2OSIsIi05OTE5MC4yMDQxIiwiLTk5MTkwIiwiLTAuMzk5ODEzNzAiLCIzLjc3NjkzMzU0RSsxMCIpOworICBtYXRodGVzdCgyOTYsZGVmLCItMzI2MDAyLjkyNyIsIjQyMTUuOTkwMzAiLCItMzIxNzg2LjkzNyIsIi0zMzAyMTguOTE3IiwiLTEuMzc0NDI1MThFKzkiLCItNzcuMzI1MzUwMyIsIi03NyIsIi0xMzcxLjY3MzkwIiwiNS41MTg3NTgyMUUrMjMyNDMiKTsKKyAgbWF0aHRlc3QoMjk3LGRlZiwiLTEyMDM3Ljg1OTBFKzg3NjQyOTA0NCIsIjMxNC44MTgyNyIsIi0xLjIwMzc4NTkwRSs4NzY0MjkwNDgiLCItMS4yMDM3ODU5MEUrODc2NDI5MDQ4IiwiLTMuNzg5NzM3OTRFKzg3NjQyOTA1MCIsIi0zLjgyMzc0ODU0RSs4NzY0MjkwNDUiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMjk4LGRlZiwiMjEwMzYwNDUuNEUtMTYyODA0ODA5IiwiLTkxLjcxNDkyMTkiLCItOTEuNzE0OTIxOSIsIjkxLjcxNDkyMTkiLCItMS45MjkzMTkyNkUtMTYyODA0ODAwIiwiLTIuMjkzNjMzOUUtMTYyODA0ODA0IiwiMCIsIjIuMTAzNjA0NTRFLTE2MjgwNDgwMiIsIiIpOworICBtYXRodGVzdCgyOTksZGVmLCItOTQ3MDE5LjUzNCIsIjk5MTYuMjkyODAiLCItOTM3MTAzLjI0MSIsIi05NTY5MzUuODI3IiwiLTkuMzkwOTIyOTlFKzkiLCItOTUuNTAxMzY4NiIsIi05NSIsIi00OTcxLjcxODAwIiwiMy43NjAyOTAyMkUrNTkyNjEiKTsKKyAgbWF0aHRlc3QoMzAwLGRlZiwiLTU5ODUuODQxMzYiLCItMTIuNDA5MDE4NEUtMTIzNjQyMDQiLCItNTk4NS44NDEzNiIsIi01OTg1Ljg0MTM2IiwiNy40Mjc4NDE1NkUtMTIzNjQyMDAiLCI0LjgyMzc4MzEzRSsxMjM2NDIwNiIsIiIsIiIsIi0wLjAwMDE2NzA2MDg5MyIpOworICBtYXRodGVzdCgzMDEsZGVmLCItODUzNDQzNzkuNCIsIi02NzgzLjA4NjY5RSsyMTg4NDAyMTUiLCItNi43ODMwODY2OUUrMjE4ODQwMjE4IiwiNi43ODMwODY2OUUrMjE4ODQwMjE4IiwiNS43ODg5ODMyNEUrMjE4ODQwMjI2IiwiMS4yNTgxOTM4NUUtMjE4ODQwMjExIiwiMCIsIi04NTM0NDM3OS40IiwiLTMuMDMyMzIzNDdFLTU2Iik7CisgIG1hdGh0ZXN0KDMwMixkZWYsIi05NC4xOTQ3MDcwRS05MzgyNTcxMDMiLCIxNTAwMy4yNDAiLCIxNTAwMy4yNDAwIiwiLTE1MDAzLjI0MDAiLCItMS40MTMyMjU4MEUtOTM4MjU3MDk3IiwiLTYuMjc4MjkxMDJFLTkzODI1NzEwNiIsIjAiLCItOS40MTk0NzA3MEUtOTM4MjU3MTAyIiwiIik7CisgIG1hdGh0ZXN0KDMwMyxkZWYsIi00ODQ2MjMzLjYiLCItODI4OTc2OS43NiIsIi0xMzEzNjAwMy40IiwiMzQ0MzUzNi4xNiIsIjQuMDE3NDE2MDdFKzEzIiwiMC41ODQ2MDQxMjUiLCIwIiwiLTQ4NDYyMzMuNiIsIjQuMjUwNzc1MjRFLTU1NDIwNDY1Iik7CisgIG1hdGh0ZXN0KDMwNCxkZWYsIjY3LjkxNDcxOTgiLCItMTA4MzczNjQ1LkUrMjkxNzE1NDE1IiwiLTEuMDgzNzM2NDVFKzI5MTcxNTQyMyIsIjEuMDgzNzM2NDVFKzI5MTcxNTQyMyIsIi03LjM2MDE2NTczRSsyOTE3MTU0MjQiLCItNi4yNjY3MTkxNkUtMjkxNzE1NDIyIiwiMCIsIjY3LjkxNDcxOTgiLCIwLjAxNDcyNDM0ODUiKTsKKyAgbWF0aHRlc3QoMzA1LGRlZiwiMTk1OC43Nzk5NCIsIjUuNTcyODUxMzdFKzY5MDEzNzgyNiIsIjUuNTcyODUxMzdFKzY5MDEzNzgyNiIsIi01LjU3Mjg1MTM3RSs2OTAxMzc4MjYiLCIxLjA5MTU5ODk1RSs2OTAxMzc4MzAiLCIzLjUxNDg2MTI2RS02OTAxMzc4MjQiLCIwIiwiMTk1OC43Nzk5NCIsIjUuNjQ4MjQ5NjhFKzE5Iik7CisgIG1hdGh0ZXN0KDMwNixkZWYsIjIyNzgwMzE0LjMiLCI4ODA1Mjc5LjgzIiwiMzE1ODU1OTQuMSIsIjEzOTc1MDM0LjUiLCIyLjAwNTg3MDQyRSsxNCIsIjIuNTg3MTE5ODYiLCIyIiwiNTE2OTc1NC42NCIsIjIuMzkxMzIxNjlFKzY0Nzg1MzczIik7CisgIG1hdGh0ZXN0KDMwNyxkZWYsIjU5Njc0NS4xODQiLCIxOTc2MDI0MjMuIiwiMTk4MTk5MTY4IiwiLTE5NzAwNTY3OCIsIjEuMTc5MTgyOTRFKzE0IiwiMC4wMDMwMTk5Mjg0OCIsIjAiLCI1OTY3NDUuMTg0IiwiIik7CisgIG1hdGh0ZXN0KDMwOCxkZWYsIjE3MS4zNDA0OTciLCItNDgwMzQ5LjkyNCIsIi00ODAxNzguNTg0IiwiNDgwNTIxLjI2NCIsIi04MjMwMzM5NC43IiwiLTAuMDAwMzU2Njk5MzMyIiwiMCIsIjE3MS4zNDA0OTciLCIyLjE3OTE0MTAyRS0xMDczMDM1Iik7CisgIG1hdGh0ZXN0KDMwOSxkZWYsIjgyNC42NTU1NSIsIi0zNzkyODcuNTMwIiwiLTM3ODQ2Mi44NzUiLCIzODAxMTIuMTg2IiwiLTMxMjc4MTU2NyIsIi0wLjAwMjE3NDIyMjY4IiwiMCIsIjgyNC42NTU1NSIsIjYuMzU4MjkyNTZFLTExMDYxMDgiKTsKKyAgbWF0aHRlc3QoMzEwLGRlZiwiMTkuMzE2NDAzMSIsIi05MjA3NjQ0LjI0RSs5ODgxMTUwNjkiLCItOS4yMDc2NDQyNEUrOTg4MTE1MDc1IiwiOS4yMDc2NDQyNEUrOTg4MTE1MDc1IiwiLTEuNzc4NTg1NjhFKzk4ODExNTA3NyIsIi0yLjA5Nzg2NTkyRS05ODgxMTUwNzUiLCIwIiwiMTkuMzE2NDAzMSIsIjIuNjcwOTM3MTFFLTEyIik7CisgIG1hdGh0ZXN0KDMxMSxkZWYsIi0zMTIzLjc3NjQ2RSsxNzc4MTQyNjUiLCI5NzMyODQ0MzUuRSszODMyNTYxMTIiLCI5LjczMjg0NDM1RSszODMyNTYxMjAiLCItOS43MzI4NDQzNUUrMzgzMjU2MTIwIiwiLTMuMDQwMzIzMDFFKzU2MTA3MDM4OSIsIi0zLjIwOTUyMDYyRS0yMDU0NDE4NTMiLCIwIiwiLTMuMTIzNzc2NDZFKzE3NzgxNDI2OCIsIiIpOworICBtYXRodGVzdCgzMTIsZGVmLCItODUwLjEyMzkxNUUrNjYyOTU1MzA5IiwiNjc3NDg0OS44MUUtODQ2NTc2ODY1IiwiLTguNTAxMjM5MTVFKzY2Mjk1NTMxMSIsIi04LjUwMTIzOTE1RSs2NjI5NTUzMTEiLCItNS43NTk0NjE4NEUtMTgzNjIxNTQ3IiwiIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDMxMyxkZWYsIi0yMzM0OS43NzI0IiwiMjkyMS4zNTM1NSIsIi0yMDQyOC40MTg5IiwiLTI2MjcxLjEyNjAiLCItNjgyMTI5NDAuNSIsIi03Ljk5Mjc5MjM4IiwiLTciLCItMjkwMC4yOTc1NSIsIi01LjY3MDU1NDZFKzEyNzU5Iik7CisgIG1hdGh0ZXN0KDMxNCxkZWYsIjE4ODg2NjUzLjMiLCI1Njg3MDc0NzYuIiwiNTg3NTk0MTI5IiwiLTU0OTgyMDgyMyIsIjEuMDc0MDk4MDlFKzE2IiwiMC4wMzMyMDk3ODU1IiwiMCIsIjE4ODg2NjUzLjMiLCIiKTsKKyAgbWF0aHRlc3QoMzE1LGRlZiwiLTkwNTUyODE4LjAiLCItNTQyLjAzNTYzRS05ODY2MDY4NzgiLCItOTA1NTI4MTguMCIsIi05MDU1MjgxOC4wIiwiNC45MDgyODUzOEUtOTg2NjA2ODY4IiwiMS42NzA2MDYzOEUrOTg2NjA2ODgzIiwiIiwiIiwiLTEuNjQyNDQyNDFFLTQwIik7CisgIG1hdGh0ZXN0KDMxNixkZWYsIjQxNTAxMTI2LjFFKzc5MTgzODc2NSIsIi02OS42NjUxNjc1RSsyMDQyNjgzNDgiLCI0LjE1MDExMjYxRSs3OTE4Mzg3NzIiLCI0LjE1MDExMjYxRSs3OTE4Mzg3NzIiLCItMi44OTExODI5MEUrOTk2MTA3MTIyIiwiLTUuOTU3MjI3NjNFKzU4NzU3MDQyMiIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzMTcsZGVmLCI3Njc4MzE5My4zRS0yNzE0ODgxNTQiLCIzNzY1LjAxODI5RS01MjAzNDYwMDMiLCI3LjY3ODMxOTMzRS0yNzE0ODgxNDciLCI3LjY3ODMxOTMzRS0yNzE0ODgxNDciLCIyLjg5MDkwMTI3RS03OTE4MzQxNDYiLCIyLjAzOTM4NDM0RSsyNDg4NTc4NTMiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMzE4LGRlZiwiNDE5Mi45OTI4IiwiOTg3ODIyMDA3RS0xNDY1NjA5ODkiLCI0MTkyLjk5MjgwIiwiNDE5Mi45OTI4MCIsIjQuMTQxOTMwNTZFLTE0NjU2MDk3NyIsIjQuMjQ0Njg0NTRFKzE0NjU2MDk4MyIsIiIsIiIsIjEuNjc5NzM2NTNFKzM2Iik7CisgIG1hdGh0ZXN0KDMxOSxkZWYsIi04OTE4NDUuNjI5IiwiNDgyNzc5NTUuIiwiNDczODYxMDkuNCIsIi00OTE2OTgwMC42IiwiLTQuMzA1NjQ4MzFFKzEzIiwiLTAuMDE4NDczMTQ0MyIsIjAiLCItODkxODQ1LjYyOSIsIi02LjMyOTY0MTQ3RSsyODcyNjc4MTciKTsKKyAgbWF0aHRlc3QoMzIwLGRlZiwiMzM0LjkwMTE3NiIsIi03NjA5Mjk2LjU1RSs0NDczNDAyMjgiLCItNy42MDkyOTY1NUUrNDQ3MzQwMjM0IiwiNy42MDkyOTY1NUUrNDQ3MzQwMjM0IiwiLTIuNTQ4MzYyMzZFKzQ0NzM0MDIzNyIsIi00LjQwMTIxMDczRS00NDczNDAyMzMiLCIwIiwiMzM0LjkwMTE3NiIsIjYuMzE5MjY1NzVFLTIxIik7CisgIG1hdGh0ZXN0KDMyMSxkZWYsIjQuNDk4Njg2MzYiLCItMzQxODgwODk2RS00NDcyNTE4NzMiLCI0LjQ5ODY4NjM2IiwiNC40OTg2ODYzNiIsIi0xLjUzODAxNDkyRS00NDcyNTE4NjQiLCItMS4zMTU4NjM2M0UrNDQ3MjUxODY1IiwiIiwiIiwiMC4wMTA5ODM1NTMiKTsKKyAgbWF0aHRlc3QoMzIyLGRlZiwiODA3NjE1LjU4IiwiLTMxNDI4NjQ4MCIsIi0zMTM0Nzg4NjUiLCIzMTUwOTQwOTYiLCItMi41MzgyMjY1OEUrMTQiLCItMC4wMDI1Njk2Nzk2OCIsIjAiLCI4MDc2MTUuNTgiLCIiKTsKKyAgbWF0aHRlc3QoMzIzLGRlZiwiLTM3Ljc0NTc5NTQiLCI1MzI3Ny44MTI5RS04NTkyMjU1MzgiLCItMzcuNzQ1Nzk1NCIsIi0zNy43NDU3OTU0IiwiLTIuMDExMDEzNDNFLTg1OTIyNTUzMiIsIi03LjA4NDcxMTg4RSs4NTkyMjU1MzQiLCIiLCIiLCItNzY2MjAxMzQuMSIpOworICBtYXRodGVzdCgzMjQsZGVmLCItMjg2NzEwODEuIiwiOTguODgxOTYyMyIsIi0yODY3MDk4Mi4xIiwiLTI4NjcxMTc5LjkiLCItMi44MzUwNTI3NUUrOSIsIi0yODk5NTIuNTg5IiwiLTI4OTk1MiIsIi01OC4yNjcxOTA0IiwiLTEuOTM2MjU1NjZFKzczOCIpOworICBtYXRodGVzdCgzMjUsZGVmLCItODk3NTIuMjEwNkUtNDY5NDk2ODk2IiwiOTkuOTg3OTk2MSIsIjk5Ljk4Nzk5NjEiLCItOTkuOTg3OTk2MSIsIi04Ljk3NDE0MzY4RS00Njk0OTY4OTAiLCItOC45NzYyOTg1N0UtNDY5NDk2ODk0IiwiMCIsIi04Ljk3NTIyMTA2RS00Njk0OTY4OTIiLCIiKTsKKyAgbWF0aHRlc3QoMzI2LGRlZiwiLTQ5Nzk4MzU2N0UtMTM1MzgwNTIiLCIzOS40NTc4NzQyIiwiMzkuNDU3ODc0MiIsIi0zOS40NTc4NzQyIiwiLTEuOTY0OTM3MjlFLTEzNTM4MDQyIiwiLTEuMjYyMDYzODVFLTEzNTM4MDQ1IiwiMCIsIi00Ljk3OTgzNTY3RS0xMzUzODA0NCIsIi0xLjU1Mzc2NTQzRS01Mjc5ODM2ODkiKTsKKyAgbWF0aHRlc3QoMzI3LGRlZiwiODQ1NzM5MjIxRS02NTQyMDI1NjUiLCItMzMzMTMuMTU1MSIsIi0zMzMxMy4xNTUxIiwiMzMzMTMuMTU1MSIsIi0yLjgxNzQyNDE4RS02NTQyMDI1NTIiLCItMi41Mzg3NTQ0OUUtNjU0MjAyNTYxIiwiMCIsIjguNDU3MzkyMjFFLTY1NDIwMjU1NyIsIiIpOworICBtYXRodGVzdCgzMjgsZGVmLCI3NDIuMzMyMDY3RSs1Mzc4Mjc4NDMiLCItNDUzMi43MDAyM0UtODU1Mzg3NDE0IiwiNy40MjMzMjA2N0UrNTM3ODI3ODQ1IiwiNy40MjMzMjA2N0UrNTM3ODI3ODQ1IiwiLTMuMzY0NzY4NzNFLTMxNzU1OTU2NSIsIiIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzMjksZGVmLCItODkzLjQ4NjU0IiwiNjcwMzg5OTYwIiwiNjcwMzg5MDY3IiwiLTY3MDM5MDg1MyIsIi01Ljk4OTg0NDA2RSsxMSIsIi0wLjAwMDAwMTMzMjc4NjI4IiwiMCIsIi04OTMuNDg2NTQiLCIiKTsKKyAgbWF0aHRlc3QoMzMwLGRlZiwiMS4zNzY5NzE2MiIsIi05MTUuNzM3NDc0RS0zNTE1Nzg3MjQiLCIxLjM3Njk3MTYyIiwiMS4zNzY5NzE2MiIsIi0xLjI2MDk0NDUxRS0zNTE1Nzg3MjEiLCItMS41MDM2NzUwOEUrMzUxNTc4NzIxIiwiIiwiIiwiMC4wNTYxOTIwNzg0Iik7CisgIG1hdGh0ZXN0KDMzMSxkZWYsIi02NS4yODM5ODA4RSs1NTAyODg0MDMiLCItMTIxMzg5LjMwNiIsIi02LjUyODM5ODA4RSs1NTAyODg0MDQiLCItNi41MjgzOTgwOEUrNTUwMjg4NDA0IiwiNy45MjQ3NzcxMkUrNTUwMjg4NDA5IiwiNS4zNzgwNjY4OUUrNTUwMjg4Mzk5IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDMzMixkZWYsIi0zMDM0NjYwMy5FKzM0NjA2NzM5MCIsIjc5MjY2MS41NDQiLCItMy4wMzQ2NjAzMEUrMzQ2MDY3Mzk3IiwiLTMuMDM0NjYwMzBFKzM0NjA2NzM5NyIsIi0yLjQwNTQ1ODUyRSszNDYwNjc0MDMiLCItMy44Mjg0NDM5NkUrMzQ2MDY3MzkxIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDMzMyxkZWYsIi02MTE3MC43MDY1IiwiLTQ1MzczMTEzMS4iLCItNDUzNzkyMzAyIiwiNDUzNjY5OTYwIiwiMi43NzU1MDUzOEUrMTMiLCIwLjAwMDEzNDgxNzA4MSIsIjAiLCItNjExNzAuNzA2NSIsIiIpOworICBtYXRodGVzdCgzMzQsZGVmLCI2NTY5LjUxMTMzIiwiMTMuODcwNjM1MUUrMzk5NDM0OTE0IiwiMS4zODcwNjM1MUUrMzk5NDM0OTE1IiwiLTEuMzg3MDYzNTFFKzM5OTQzNDkxNSIsIjkuMTEyMzI5NDRFKzM5OTQzNDkxOCIsIjQuNzM2MjcyOTFFLTM5OTQzNDkxMiIsIjAiLCI2NTY5LjUxMTMzIiwiNjU2OS41MTEzMyIpOworICBtYXRodGVzdCgzMzUsZGVmLCIzMDA3MDM5MjUuIiwiLTMxNTY3MzYuOCIsIjI5NzU0NzE4OCIsIjMwMzg2MDY2MiIsIi05LjQ5MjQzMTQ2RSsxNCIsIi05NS4yNTc4Mzg3IiwiLTk1IiwiODEzOTI5LjAiLCI0LjE4NjA5MTE0RS0yNjc2MzI1NiIpOworICBtYXRodGVzdCgzMzYsZGVmLCIxOTIxMzgyMTZFKzM1MzAxMTU5MiIsIi00NzMuMDgwNjMzIiwiMS45MjEzODIxNkUrMzUzMDExNjAwIiwiMS45MjEzODIxNkUrMzUzMDExNjAwIiwiLTkuMDg5Njg2ODhFKzM1MzAxMTYwMiIsIi00LjA2MTQyNjM3RSszNTMwMTE1OTciLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMzM3LGRlZiwiODYwNy42NDc5NCIsIi0zNDc0MC4zMzY3IiwiLTI2MTMyLjY4ODgiLCI0MzM0Ny45ODQ2IiwiLTI5OTAzMjU4OCIsIi0wLjI0Nzc3MDk5OSIsIjAiLCI4NjA3LjY0Nzk0IiwiMS4yOTYwNDUxOUUtMTM2Njk4Iik7CisgIG1hdGh0ZXN0KDMzOCxkZWYsIi02NzkxMy44MjQxIiwiLTkzODE1LjQyMjkiLCItMTYxNzI5LjI0NyIsIjI1OTAxLjU5ODgiLCI2LjM3MTM2NDEzRSs5IiwiMC43MjM5MDg5NDgiLCIwIiwiLTY3OTEzLjgyNDEiLCItNi45NjM1NTIwM0UtNDUzMzExIik7CisgIG1hdGh0ZXN0KDMzOSxkZWYsIjM0LjU1NTk0NTUiLCItOTk4Nzk5Mzk4LiIsIi05OTg3OTkzNjQiLCI5OTg3OTk0MzMiLCItMy40NTE0NDU3NkUrMTAiLCItMy40NTk3NDgzM0UtOCIsIjAiLCIzNC41NTU5NDU1IiwiIik7CisgIG1hdGh0ZXN0KDM0MCxkZWYsIjM4Nzk5NS4zMjgiLCI5OTAxOTk1NDMuRS0xMjQ2MjM2MDciLCIzODc5OTUuMzI4IiwiMzg3OTk1LjMyOCIsIjMuODQxOTI3OTZFLTEyNDYyMzU5MyIsIjMuOTE4MzU0OTVFKzEyNDYyMzYwMyIsIiIsIiIsIjcuNzMxNTIxMzhFKzU1Iik7CisgIG1hdGh0ZXN0KDM0MSxkZWYsIi00NzEuMDkxNjZFLTgzNTIxOTE5IiwiLTQ0MTIyMjM2OCIsIi00NDEyMjIzNjgiLCI0NDEyMjIzNjgiLCIyLjA3ODU2MTc4RS04MzUyMTkwOCIsIjEuMDY3Njk2NjlFLTgzNTIxOTI1IiwiMCIsIi00LjcxMDkxNjZFLTgzNTIxOTE3IiwiIik7CisgIG1hdGh0ZXN0KDM0MixkZWYsIi05NzgzNC4zODU4IiwiNzA3Nzk3ODkuOEUrNTAyMTY2MDY1IiwiNy4wNzc5Nzg5OEUrNTAyMTY2MDcyIiwiLTcuMDc3OTc4OThFKzUwMjE2NjA3MiIsIi02LjkyNDY5NzI2RSs1MDIxNjYwNzciLCItMS4zODIyMzYxN0UtNTAyMTY2MDY4IiwiMCIsIi05NzgzNC4zODU4IiwiLTguNTc5MDc4ODZFKzM0Iik7CisgIG1hdGh0ZXN0KDM0MyxkZWYsIjc3MzIzMzEuMDYiLCItOTUyNzE5LjQ4MkUrMTE1MzI1NTA1IiwiLTkuNTI3MTk0ODJFKzExNTMyNTUxMCIsIjkuNTI3MTk0ODJFKzExNTMyNTUxMCIsIi03LjM2Njc0MjQ0RSsxMTUzMjU1MTciLCItOC4xMTYwNjI3MUUtMTE1MzI1NTA1IiwiMCIsIjc3MzIzMzEuMDYiLCIxLjMwODg2NzI0RS02OSIpOworICBtYXRodGVzdCgzNDQsZGVmLCIyMy4yNzQ1NTQ3IiwiMi4yMzE5NDI0NUUtMjIxMDYyNTkyIiwiMjMuMjc0NTU0NyIsIjIzLjI3NDU1NDciLCI1LjE5NDc0NjY2RS0yMjEwNjI1OTEiLCIxLjA0Mjc5MzY4RSsyMjEwNjI1OTMiLCIiLCIiLCI1NDEuNzA0ODk2Iik7CisgIG1hdGh0ZXN0KDM0NSxkZWYsIjY3MS4wODMzNjNFLTIxODMyNDIwNSIsIi03ODcxNTAwMzEiLCItNzg3MTUwMDMxIiwiNzg3MTUwMDMxIiwiLTUuMjgyNDMyOTBFLTIxODMyNDE5NCIsIi04LjUyNTQ4MjI3RS0yMTgzMjQyMTIiLCIwIiwiNi43MTA4MzM2M0UtMjE4MzI0MjAzIiwiIik7CisgIG1hdGh0ZXN0KDM0NixkZWYsIjM2NTE2Ny44MCIsIi04MDI2My42NTE2IiwiMjg0OTA0LjE0OCIsIjQ0NTQzMS40NTIiLCItMi45MzA5NzAxMUUrMTAiLCItNC41NDk2MDM2MiIsIi00IiwiNDQxMTMuMTkzNiIsIjEuMjcwNTIyMjdFLTQ0NjQ2OCIpOworICBtYXRodGVzdCgzNDcsZGVmLCItMS40MzI5NzYwNEUtNjUxMjk3ODAiLCI1Ni41OTg3MzNFLTEzNTU4MTk0MiIsIi0xLjQzMjk3NjA0RS02NTEyOTc4MCIsIi0xLjQzMjk3NjA0RS02NTEyOTc4MCIsIi04LjExMDQ2MjgzRS0yMDA3MTE3MjEiLCItMi41MzE4MTY0NkUrNzA0NTIxNjAiLCIiLCIiLCI4LjY1ODMxODgxRS0zOTA3Nzg2ODAiKTsKKyAgbWF0aHRlc3QoMzQ4LGRlZiwiNDE2OTk4ODU5LiIsIjI2MC4yMjAzMjNFLTM0OTI4NTU5MyIsIjQxNjk5ODg1OSIsIjQxNjk5ODg1OSIsIjEuMDg1MTE1NzhFLTM0OTI4NTU4MiIsIjEuNjAyNDgzODNFKzM0OTI4NTU5OSIsIiIsIiIsIjcuMjUxMTExNzhFKzI1Iik7CisgIG1hdGh0ZXN0KDM0OSxkZWYsIjcyNjcuMTc2MTFFKzg2MjYzMDYwNyIsIjQwMjEuNTY4NjEiLCI3LjI2NzE3NjExRSs4NjI2MzA2MTAiLCI3LjI2NzE3NjExRSs4NjI2MzA2MTAiLCIyLjkyMjU0NDczRSs4NjI2MzA2MTQiLCIxLjgwNzA1MDE0RSs4NjI2MzA2MDciLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMzUwLGRlZiwiMTIuMjE0MjQzNEUrNTkzOTA4NzQwIiwiNS4yNzIzNjU3MUUtMzk2MDUwNzQ4IiwiMS4yMjE0MjQzNEUrNTkzOTA4NzQxIiwiMS4yMjE0MjQzNEUrNTkzOTA4NzQxIiwiNi40Mzk3OTU4MUUrMTk3ODU3OTkzIiwiMi4zMTY2NTMzRSs5ODk5NTk0ODgiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMzUxLGRlZiwiLTI4LjU5MTkzMiIsIi0xLjc5MTUzMjM4RS04MTcwNjQ1NzYiLCItMjguNTkxOTMyMCIsIi0yOC41OTE5MzIwIiwiNS4xMjIzMzcyMEUtODE3MDY0NTc1IiwiMS41OTU5NDgzOEUrODE3MDY0NTc3IiwiIiwiIiwiMC4wMDEyMjMyNDM3MiIpOworICBtYXRodGVzdCgzNTIsZGVmLCI1OTAuODQ5NjY2IiwiNzUzNDI0LjMwNkUrMjc3MjMyNzQ0IiwiNy41MzQyNDMwNkUrMjc3MjMyNzQ5IiwiLTcuNTM0MjQzMDZFKzI3NzIzMjc0OSIsIjQuNDUxNjA1MDBFKzI3NzIzMjc1MiIsIjcuODQyMTkwMTRFLTI3NzIzMjc0OCIsIjAiLCI1OTAuODQ5NjY2IiwiMS40ODUzMDYwN0UrMjIiKTsKKyAgbWF0aHRlc3QoMzUzLGRlZiwiMS43MjcwNjI4IiwiLTEzMjUwMjYuNjciLCItMTMyNTAyNC45NCIsIjEzMjUwMjguNDAiLCItMjI4ODQwNC4yNyIsIi0wLjAwMDAwMTMwMzQxNzM5IiwiMCIsIjEuNzI3MDYyOCIsIjIuMDkyNjAwMzZFLTMxNDQ0MCIpOworICBtYXRodGVzdCgzNTQsZGVmLCIzMzQwMjExOC4iLCItNTUzNC44Mzc0NSIsIjMzMzk2NTgzLjIiLCIzMzQwNzY1Mi44IiwiLTEuODQ4NzUyOTRFKzExIiwiLTYwMzQuODg2OSIsIi02MDM0IiwiNDkwOC44MjY3MCIsIjguMTQ0NzM5MTNFLTQxNjQ1Iik7CisgIG1hdGh0ZXN0KDM1NSxkZWYsIi00Mzk4NDIuNTA2IiwiLTc3NTExMC44MDciLCItMTIxNDk1My4zMSIsIjMzNTI2OC4zMDEiLCIzLjQwOTI2NjgwRSsxMSIsIjAuNTY3NDU3NTg0IiwiMCIsIi00Mzk4NDIuNTA2IiwiLTEuODQ2Nzg0NzJFLTQzNzQxODIiKTsKKyAgbWF0aHRlc3QoMzU2LGRlZiwiLTI0ODY2NC43NzkiLCItNDQwODkwLjQ0RSs2NjY0MzM5NDQiLCItNC40MDg5MDQ0MEUrNjY2NDMzOTQ5IiwiNC40MDg5MDQ0MEUrNjY2NDMzOTQ5IiwiMS4wOTYzMzkyNEUrNjY2NDMzOTU1IiwiNS42NDAwNTgzMUUtNjY2NDMzOTQ1IiwiMCIsIi0yNDg2NjQuNzc5IiwiMi42MTU0Mjg3N0UtMjIiKTsKKyAgbWF0aHRlc3QoMzU3LGRlZiwiLTE0MTYxLjkxNDIiLCI4MzA2LjQ5NDkzIiwiLTU4NTUuNDE5MyIsIi0yMjQ2OC40MDkxIiwiLTExNzYzNTg2OSIsIi0xLjcwNDkyMDU5IiwiLTEiLCItNTg1NS40MTkyNyIsIjEuNjU1NzMzNzJFKzM0NDc5Iik7CisgIG1hdGh0ZXN0KDM1OCxkZWYsIi02NDE3MjI3LjEzIiwiMTY2NzkuODg0MiIsIi02NDAwNTQ3LjI1IiwiLTY0MzM5MDcuMDEiLCItMS4wNzAzODYwNUUrMTEiLCItMzg0LjcyODUxOCIsIi0zODQiLCItMTIxNTEuNTk3MiIsIjMuNTg3Njc5NzhFKzExMzU0NiIpOworICBtYXRodGVzdCgzNTksZGVmLCI1MTQ4MjUwMjQuIiwiLTI1LjA0NDYzNDVFLTEwMzgwOTQ1NyIsIjUxNDgyNTAyNCIsIjUxNDgyNTAyNCIsIi0xLjI4OTM2MDQ2RS0xMDM4MDk0NDciLCItMi4wNTU2MzAwMkUrMTAzODA5NDY0IiwiIiwiIiwiNy4zMjg2MDA2MkUtMjciKTsKKyAgbWF0aHRlc3QoMzYwLGRlZiwiNTI1OTQ4MTk2IiwiMjE5NDUwMzkwIiwiNzQ1Mzk4NTg2IiwiMzA2NDk3ODA2IiwiMS4xNTQxOTUzN0UrMTciLCIyLjM5NjY2MTAyIiwiMiIsIjg3MDQ3NDE2IiwiIik7CisgIG1hdGh0ZXN0KDM2MSxkZWYsIi02Mzg1MDkuMTgxIiwiNDU1ODAxODkuMEUrMjY5MjEyNTU5IiwiNC41NTgwMTg5MEUrMjY5MjEyNTY2IiwiLTQuNTU4MDE4OTBFKzI2OTIxMjU2NiIsIi0yLjkxMDMzNjkxRSsyNjkyMTI1NzIiLCItMS40MDA4NDgwM0UtMjY5MjEyNTYxIiwiMCIsIi02Mzg1MDkuMTgxIiwiLTEuMDYxMjk0MDVFKzI5Iik7CisgIG1hdGh0ZXN0KDM2MixkZWYsIjMzMDU5MDQyMiIsIjc0LjM1OTkyOEUrNTM1Mzc3OTY1IiwiNy40MzU5OTI4MEUrNTM1Mzc3OTY2IiwiLTcuNDM1OTkyODBFKzUzNTM3Nzk2NiIsIjIuNDU4MjY4MDBFKzUzNTM3Nzk3NSIsIjQuNDQ1ODE0MThFLTUzNTM3Nzk1OSIsIjAiLCIzMzA1OTA0MjIiLCI0LjMxNTUwNzQyRSs1OSIpOworICBtYXRodGVzdCgzNjMsZGVmLCItMy40ODU5Mzg3MUUtOTQwNTc5OTA0IiwiLTIwMjY1Ljk2NDBFLTMyMjk4ODk4NyIsIi0yLjAyNjU5NjQwRS0zMjI5ODg5ODMiLCIyLjAyNjU5NjQwRS0zMjI5ODg5ODMiLCIiLCIxLjcyMDA5NTE5RS02MTc1OTA5MjEiLCIwIiwiLTMuNDg1OTM4NzFFLTk0MDU3OTkwNCIsIiIpOworICBtYXRodGVzdCgzNjQsZGVmLCItMzI4MTAzNDgwLiIsIi03MjEuOTQ5MzcxRS05MjM5Mzg2NjUiLCItMzI4MTAzNDgwIiwiLTMyODEwMzQ4MCIsIjIuMzY4NzQxMDFFLTkyMzkzODY1NCIsIjQuNTQ0Njg4MjJFKzkyMzkzODY3MCIsIiIsIiIsIi0yLjQ0MzAwMzhFLTYwIik7CisgIG1hdGh0ZXN0KDM2NSxkZWYsIi0xODU3LjAxNDQ4IiwiMTkwODE1NzguMSIsIjE5MDc5NzIxLjEiLCItMTkwODM0MzUuMSIsIi0zLjU0MzQ3NjY4RSsxMCIsIi0wLjAwMDA5NzMxOTc1MzciLCIwIiwiLTE4NTcuMDE0NDgiLCI4LjQ0Mzk3MDg3RSs2MjM3NDE1MyIpOworICBtYXRodGVzdCgzNjYsZGVmLCIzNDcuMjg3MjBFKzE0NTkzMDc3MSIsIi02MjgyMS45OTA2RS02NzY1NjQxMDYiLCIzLjQ3Mjg3MjAwRSsxNDU5MzA3NzMiLCIzLjQ3Mjg3MjAwRSsxNDU5MzA3NzMiLCItMi4xODE3MjczMkUtNTMwNjMzMzI4IiwiLTUuNTI4MTE1MThFKzgyMjQ5NDg3NCIsIiIsIiIsIjUuNjk5OTAxMzVFLTg3NTU4NDY0MiIpOworICBtYXRodGVzdCgzNjcsZGVmLCItNjQzLjIxMTM5OUUrNDQxODA3MDAzIiwiLTUwNzMzNDE5LjIiLCItNi40MzIxMTM5OUUrNDQxODA3MDA1IiwiLTYuNDMyMTEzOTlFKzQ0MTgwNzAwNSIsIjMuMjYzMjMxMzVFKzQ0MTgwNzAxMyIsIjEuMjY3ODI1ODRFKzQ0MTgwNjk5OCIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzNjgsZGVmLCItNTM5OTE2NjEuNEUtODQzMzM5NTU0IiwiMjA3MTguNzM0NiIsIjIwNzE4LjczNDYiLCItMjA3MTguNzM0NiIsIi0xLjExODYzODkwRS04NDMzMzk1NDIiLCItMi42MDU5MzQzMUUtODQzMzM5NTUxIiwiMCIsIi01LjM5OTE2NjE0RS04NDMzMzk1NDciLCIiKTsKKyAgbWF0aHRlc3QoMzY5LGRlZiwiLTkwMDE4MTQyNCIsIi0xMDU3NjM5ODIuIiwiLTEuMDA1OTQ1NDFFKzkiLCItNzk0NDE3NDQyIiwiOS41MjA2NzcxOUUrMTYiLCI4LjUxMTIyODU2IiwiOCIsIi01NDA2OTU2OCIsIjEuMzI2MjcwNjFFLTk0NzA0NTYwMiIpOworICBtYXRodGVzdCgzNzAsZGVmLCI5NDIxOC43NDYyRSs1NjMyMzM5NTEiLCIxOTI2Mi42MzgyRSs3NjUyNjM4OTAiLCIxLjkyNjI2MzgyRSs3NjUyNjM4OTQiLCItMS45MjYyNjM4MkUrNzY1MjYzODk0IiwiIiwiNC44OTEyNjkwNkUtMjAyMDI5OTM5IiwiMCIsIjkuNDIxODc0NjJFKzU2MzIzMzk1NSIsIiIpOworICBtYXRodGVzdCgzNzEsZGVmLCIyODU0OS4yNzFFKzkyMTMzMTgyOCIsIi0yMTUwNTkwLjQwIiwiMi44NTQ5MjcxMEUrOTIxMzMxODMyIiwiMi44NTQ5MjcxMEUrOTIxMzMxODMyIiwiLTYuMTM5Nzc4ODFFKzkyMTMzMTgzOCIsIi0xLjMyNzUwODUzRSs5MjEzMzE4MjYiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMzcyLGRlZiwiODEwLjcwODBFKzc3OTYyNTc2MyIsIjU5NTcuOTQwNDQiLCI4LjEwNzA4MDAwRSs3Nzk2MjU3NjUiLCI4LjEwNzA4MDAwRSs3Nzk2MjU3NjUiLCI0LjgzMDE0OTk4RSs3Nzk2MjU3NjkiLCIxLjM2MDcxODU0RSs3Nzk2MjU3NjIiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMzczLGRlZiwiLTIzLjczNTc1NDlFKzc3MTE2OTA4IiwiMzUxLjEwMDY0OUUrODY0MzQ4MDIyIiwiMy41MTEwMDY0OUUrODY0MzQ4MDI0IiwiLTMuNTExMDA2NDlFKzg2NDM0ODAyNCIsIi04LjMzMzYzODk1RSs5NDE0NjQ5MzMiLCItNi43NjAzODQ4RS03ODcyMzExMTYiLCIwIiwiLTIuMzczNTc1NDlFKzc3MTE2OTA5IiwiMy4xNzQwMzg1M0UrMzA4NDY3NjM3Iik7CisgIG1hdGh0ZXN0KDM3NCxkZWYsIjQwMjE2MTAyLjJFKzI5MjcyNDU0NCIsIjY2MS4wMjU5NjIiLCI0LjAyMTYxMDIyRSsyOTI3MjQ1NTEiLCI0LjAyMTYxMDIyRSsyOTI3MjQ1NTEiLCIyLjY1ODM4ODc2RSsyOTI3MjQ1NTQiLCI2LjA4Mzg5MTQ4RSsyOTI3MjQ1NDgiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoMzc1LGRlZiwiMjI3ODUwMjQuM0UrNzgzNzE5MTY4IiwiMzk5LjUwNTk4OUUrMTM3NDc4NjY2IiwiMi4yNzg1MDI0M0UrNzgzNzE5MTc1IiwiMi4yNzg1MDI0M0UrNzgzNzE5MTc1IiwiOS4xMDI3NTM2N0UrOTIxMTk3ODQzIiwiNS43MDMyOTk4MUUrNjQ2MjQwNTA2IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDM3NixkZWYsIjUxNS41OTE4MTlFKzgyMTM3MTM2NCIsIi02OTIxMzc5MTQuRS0xNDk0OTg2OTAiLCI1LjE1NTkxODE5RSs4MjEzNzEzNjYiLCI1LjE1NTkxODE5RSs4MjEzNzEzNjYiLCItMy41Njg2MDY0NkUrNjcxODcyNjg1IiwiLTcuNDQ5MjY0MjFFKzk3MDg3MDA0NyIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzNzcsZGVmLCItNTM2ODgzMDcyRSs0Nzc5MTEyNTEiLCI2MjQ5OTYuMzAxIiwiLTUuMzY4ODMwNzJFKzQ3NzkxMTI1OSIsIi01LjM2ODgzMDcyRSs0Nzc5MTEyNTkiLCItMy4zNTU0OTkzNEUrNDc3OTExMjY1IiwiLTguNTkwMTc5OTlFKzQ3NzkxMTI1MyIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzNzgsZGVmLCItMzk5NDkyLjkxNEUtMzM0MzY5MTkyIiwiNTIwMjExOS44N0UrNDQyNDQyMjU4IiwiNS4yMDIxMTk4N0UrNDQyNDQyMjY0IiwiLTUuMjAyMTE5ODdFKzQ0MjQ0MjI2NCIsIi0yLjA3ODIxMDAzRSsxMDgwNzMwNzgiLCItNy42Nzk0MjUzOUUtNzc2ODExNDUyIiwiMCIsIi0zLjk5NDkyOTE0RS0zMzQzNjkxODciLCIiKTsKKyAgbWF0aHRlc3QoMzc5LGRlZiwiNzYyLjA3MTE4NCIsIjk4NTE2MzEuMzciLCI5ODUyMzkzLjQ0IiwiLTk4NTA4NjkuMzAiLCI3LjUwNzY0NDM4RSs5IiwiMC4wMDAwNzczNTQ4MjEzIiwiMCIsIjc2Mi4wNzExODQiLCI0LjAyMTk4NDM2RSsyODM5MjM1NiIpOworICBtYXRodGVzdCgzODAsZGVmLCI1NjI2LjEyNDcxIiwiNzI5ODk4MTguMyIsIjcyOTk1NDQ0LjQiLCItNzI5ODQxOTIuMiIsIjQuMTA2NDk4MjBFKzExIiwiMC4wMDAwNzcwODA5NTI0IiwiMCIsIjU2MjYuMTI0NzEiLCIxLjc5ODE0NzU3RSsyNzM3MjcwOTgiKTsKKyAgbWF0aHRlc3QoMzgxLGRlZiwiLTQ3MjA3MjYwLjEiLCItMjA3My4zMTUyIiwiLTQ3MjA5MzMzLjQiLCItNDcyMDUxODYuOCIsIjkuNzg3NTUyOTlFKzEwIiwiMjI3NjguOTc0MSIsIjIyNzY4IiwiLTIwMTkuNjI2NCIsIi02LjAyMjM4MzE5RS0xNTkwOSIpOworICBtYXRodGVzdCgzODIsZGVmLCIyMDcuNzQwODYwIiwiLTUxLjAzOTAwOTAiLCIxNTYuNzAxODUxIiwiMjU4Ljc3OTg2OSIsIi0xMDYwMi44ODc2IiwiLTQuMDcwMjM2OTQiLCItNCIsIjMuNTg0ODI0MCIsIjYuNDAyOTc1MTVFLTExOSIpOworICBtYXRodGVzdCgzODMsZGVmLCItNTcyLjgxMjQ2NEUtNzQ1OTM0MDIxIiwiLTE4MjgwNTg3Mi5FKzYwNDUwODY4MSIsIi0xLjgyODA1ODcyRSs2MDQ1MDg2ODkiLCIxLjgyODA1ODcyRSs2MDQ1MDg2ODkiLCIxLjA0NzEzNDgyRS0xNDE0MjUzMjkiLCIiLCIwIiwiLTUuNzI4MTI0NjRFLTc0NTkzNDAxOSIsIiIpOworICBtYXRodGVzdCgzODQsZGVmLCItNjQxODUwNEUrMzUzMTQwNyIsIjg0NTk0MTYuMSIsIi02LjQxODUwNDAwRSszNTMxNDEzIiwiLTYuNDE4NTA0MDBFKzM1MzE0MTMiLCItNS40Mjk2Nzk2MUUrMzUzMTQyMCIsIi03LjU4NzQwNzg0RSszNTMxNDA2IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDM4NSxkZWYsIjI4MDY4OS41MzEiLCItMTI4MjEyNTQzIiwiLTEyNzkzMTg1NCIsIjEyODQ5MzIzMyIsIi0zLjU5ODc5MTg2RSsxMyIsIi0wLjAwMjE4OTI1MTczIiwiMCIsIjI4MDY4OS41MzEiLCIxLjQyMTczODA5RS02OTg1MzA5MzgiKTsKKyAgbWF0aHRlc3QoMzg2LGRlZiwiMTUuODAzNTUxRS03ODM0MjI3OTMiLCIyMzkxMDgwMzhFLTQ4OTE4NjMwOCIsIjIuMzkxMDgwMzhFLTQ4OTE4NjMwMCIsIi0yLjM5MTA4MDM4RS00ODkxODYzMDAiLCIiLCI2LjYwOTM3NjcyRS0yOTQyMzY0OTMiLCIwIiwiMS41ODAzNTUxRS03ODM0MjI3OTIiLCIiKTsKKyAgbWF0aHRlc3QoMzg3LGRlZiwiMjYuNTE1OTIyIiwiLTk0MTgyNDIuOTZFLTEwNTQ4MTYyOCIsIjI2LjUxNTkyMjAiLCIyNi41MTU5MjIwIiwiLTIuNDk3MzMzOTZFLTEwNTQ4MTYyMCIsIi0yLjgxNTM3ODg1RSsxMDU0ODE2MjIiLCIiLCIiLCIxLjU0MzI2MTA4RS0xMyIpOworICBtYXRodGVzdCgzODgsZGVmLCItODguMTA5NDU1NyIsIi01NDAyOTkzNC4xIiwiLTU0MDMwMDIyLjIiLCI1NDAyOTg0Ni4wIiwiNC43NjA1NDgwOUUrOSIsIjAuMDAwMDAxNjMwNzUyNiIsIjAiLCItODguMTA5NDU1NyIsIjUuMDUyODk4MjZFLTEwNTA4OTQzOSIpOworICBtYXRodGVzdCgzODksZGVmLCI2NzcwLjY4NjAyRS00OTg0MjAzOTciLCItNi4xMTI0ODkwOEUtNzI5NjE2OTA4IiwiNi43NzA2ODYwMkUtNDk4NDIwMzk0IiwiNi43NzA2ODYwMkUtNDk4NDIwMzk0IiwiIiwiLTEuMTA3NjgwNjdFKzIzMTE5NjUxNCIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzOTAsZGVmLCItODkyOTczODE4LkUtNzgxOTA0NDQxIiwiNTU1MjAxMjk5LiIsIjU1NTIwMTI5OSIsIi01NTUyMDEyOTkiLCItNC45NTc4MDIyNEUtNzgxOTA0NDI0IiwiLTEuNjA4Mzc4NDdFLTc4MTkwNDQ0MSIsIjAiLCItOC45Mjk3MzgxOEUtNzgxOTA0NDMzIiwiIik7CisgIG1hdGh0ZXN0KDM5MSxkZWYsIjY3MDE3NTgwMkUrMTM1NDMwNjgwIiwiMjczNTUxOTUuNCIsIjYuNzAxNzU4MDJFKzEzNTQzMDY4OCIsIjYuNzAxNzU4MDJFKzEzNTQzMDY4OCIsIjEuODMzMjc5MDBFKzEzNTQzMDY5NiIsIjIuNDQ5OTAzMThFKzEzNTQzMDY4MSIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzOTIsZGVmLCItNDQwOTUwLjI2IiwiMjA1LjQ3NzQ2OUUtNjc3MzQ1NTYxIiwiLTQ0MDk1MC4yNjAiLCItNDQwOTUwLjI2MCIsIi05LjA2MDUzNDM0RS02NzczNDU1NTQiLCItMi4xNDU5Nzg2NEUrNjc3MzQ1NTY0IiwiIiwiIiwiMS45NDQzNzEzMkUrMTEiKTsKKyAgbWF0aHRlc3QoMzkzLGRlZiwiLTguMjMzNTc3OSIsIjU3MzY2NTAxMEUrNzQyNzIyMDc1IiwiNS43MzY2NTAxMEUrNzQyNzIyMDgzIiwiLTUuNzM2NjUwMTBFKzc0MjcyMjA4MyIsIi00LjcyMzMxNTU1RSs3NDI3MjIwODQiLCItMS40MzUyNTg4NkUtNzQyNzIyMDgzIiwiMCIsIi04LjIzMzU3NzkiLCIzMTE1NTIuNzUzIik7CisgIG1hdGh0ZXN0KDM5NCxkZWYsIjQ1Mjk0My44NjMiLCI3MDIyLjIzNjI5IiwiNDU5OTY2LjA5OSIsIjQ0NTkyMS42MjciLCIzLjE4MDY3ODgzRSs5IiwiNjQuNTAxMzcwMyIsIjY0IiwiMzUyMC43NDA0NCIsIjUuNTQxNTg5NzZFKzM5NzE2Iik7CisgIG1hdGh0ZXN0KDM5NSxkZWYsIjYyODc0LjEwNzkiLCItNTI3MTk2NTQuMSIsIi01MjY1Njc4MC4wIiwiNTI3ODI1MjguMiIsIi0zLjMxNDcwMTIyRSsxMiIsIi0wLjAwMTE5MjYxMjMiLCIwIiwiNjI4NzQuMTA3OSIsIjEuMTg4MTk5MzZFLTI1Mjk3Mzc3NSIpOworICBtYXRodGVzdCgzOTYsZGVmLCItNzQyOC40MTc0MUUrNjA5NzcyMDM3IiwiLTQ2MDI0ODE5LjMiLCItNy40Mjg0MTc0MUUrNjA5NzcyMDQwIiwiLTcuNDI4NDE3NDFFKzYwOTc3MjA0MCIsIjMuNDE4OTE1NjlFKzYwOTc3MjA0OCIsIjEuNjE0MDAyNTFFKzYwOTc3MjAzMyIsIiIsIiIsIiIpOworICBtYXRodGVzdCgzOTcsZGVmLCIyLjI3OTU5Mjk3IiwiNDE5MzcuMDE5IiwiNDE5MzkuMjk4NiIsIi00MTkzNC43Mzk0IiwiOTU1OTkuMzMzNyIsIjAuMDAwMDU0MzU3NTM0OCIsIjAiLCIyLjI3OTU5Mjk3IiwiMi44OTcxMjQyM0UrMTUwMDciKTsKKyAgbWF0aHRlc3QoMzk4LGRlZiwiNTA4NjkyNDA4RS02NzE5Njc3ODIiLCI4NDkxOTg5LjIwIiwiODQ5MTk4OS4yMCIsIi04NDkxOTg5LjIwIiwiNC4zMTk4MTA0M0UtNjcxOTY3NzY3IiwiNS45OTAyNjIwN0UtNjcxOTY3NzgxIiwiMCIsIjUuMDg2OTI0MDhFLTY3MTk2Nzc3NCIsIiIpOworICBtYXRodGVzdCgzOTksZGVmLCI5NDAuNTMzNzA1RS0zNzkzMTA0MjEiLCItNC4wMTE3Njk2MUUrNDY0NjIwMDM3IiwiLTQuMDExNzY5NjFFKzQ2NDYyMDAzNyIsIjQuMDExNzY5NjFFKzQ2NDYyMDAzNyIsIi0zLjc3MzIwNDUzRSs4NTMwOTYxOSIsIi0yLjM0NDQzNTk5RS04NDM5MzA0NTYiLCIwIiwiOS40MDUzMzcwNUUtMzc5MzEwNDE5IiwiIik7CisgIG1hdGh0ZXN0KDQwMCxkZWYsIjk3LjA2NDk2NTIiLCItOTIuNDQ4NTY0OUUtMTUxOTg5MDk4IiwiOTcuMDY0OTY1MiIsIjk3LjA2NDk2NTIiLCItOC45NzM1MTY3M0UtMTUxOTg5MDk1IiwiLTEuMDQ5OTM0OEUrMTUxOTg5MDk4IiwiIiwiIiwiMS4zMDc0ODcyOEUtMTgiKTsKKyAgbWF0aHRlc3QoNDAxLGRlZiwiMjk3NTQ0LjUzNkUrMzYwMjc5NDczIiwiOC44MDI3NTAwNyIsIjIuOTc1NDQ1MzZFKzM2MDI3OTQ3OCIsIjIuOTc1NDQ1MzZFKzM2MDI3OTQ3OCIsIjIuNjE5MjEwMTlFKzM2MDI3OTQ3OSIsIjMuMzgwMTMxNTlFKzM2MDI3OTQ3NyIsIiIsIiIsIiIpOworICBtYXRodGVzdCg0MDIsZGVmLCItMjg4NjEwMjguIiwiODI4MTguODIwRSsxMzgzNjg3NTgiLCI4LjI4MTg4MjAwRSsxMzgzNjg3NjIiLCItOC4yODE4ODIwMEUrMTM4MzY4NzYyIiwiLTIuMzkwMjM2MjhFKzEzODM2ODc3MCIsIi0zLjQ4NDgzOTMyRS0xMzgzNjg3NTYiLCIwIiwiLTI4ODYxMDI4IiwiNC44MTM4NzAxM0UrNTkiKTsKKyAgbWF0aHRlc3QoNDAzLGRlZiwiMzYuMjQ5NjIzOEUrNjg4MjgwMzkiLCI0OTI0My4wMCIsIjMuNjI0OTYyMzhFKzY4ODI4MDQwIiwiMy42MjQ5NjIzOEUrNjg4MjgwNDAiLCIxLjc4NTA0MDIyRSs2ODgyODA0NSIsIjcuMzYxMzc1OTlFKzY4ODI4MDM1IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDQwNCxkZWYsIjIyLjQ0NzgyOEUtNDc2MDE0NjgzIiwiLTU2MDY3LjU1MjAiLCItNTYwNjcuNTUyMCIsIjU2MDY3LjU1MjAiLCItMS4yNTg1OTQ3NkUtNDc2MDE0Njc3IiwiLTQuMDAzNzExMDlFLTQ3NjAxNDY4NyIsIjAiLCIyLjI0NDc4MjhFLTQ3NjAxNDY4MiIsIiIpOworICBtYXRodGVzdCg0MDUsZGVmLCIyODI2ODguNzkxRSs3NTAxMTk1MiIsIjUuOTk3ODkwNTEiLCIyLjgyNjg4NzkxRSs3NTAxMTk1NyIsIjIuODI2ODg3OTFFKzc1MDExOTU3IiwiMS42OTU1MzY0MkUrNzUwMTE5NTgiLCI0LjcxMzEzNjlFKzc1MDExOTU2IiwiIiwiIiwiNS4xMDMzMDUwN0UrNDUwMDcxNzQ0Iik7CisgIG1hdGh0ZXN0KDQwNixkZWYsIi05ODEuODYwMzEwRS03MzczODcwMDIiLCItOTk0MDQ2Mjg5IiwiLTk5NDA0NjI4OSIsIjk5NDA0NjI4OSIsIjkuNzYwMTQ1OTdFLTczNzM4Njk5MSIsIjkuODc3NDEwMzVFLTczNzM4NzAwOSIsIjAiLCItOS44MTg2MDMxMEUtNzM3Mzg3MDAwIiwiIik7CisgIG1hdGh0ZXN0KDQwNyxkZWYsIi03MDIuOTEyMTAiLCItNjQ0NDkwMy41NSIsIi02NDQ1NjA2LjQ2IiwiNjQ0NDIwMC42NCIsIjQuNTMwMjAwNjlFKzkiLCIwLjAwMDEwOTA2NDc5NyIsIjAiLCItNzAyLjkxMjEwIiwiMS43MDg2NjcwM0UtMTgzNDgwMDQiKTsKKyAgbWF0aHRlc3QoNDA4LGRlZiwiOTcyNDU2NzIwRS0xNzUzNjgyMyIsIjE2MzcxLjI1OTAiLCIxNjM3MS4yNTkwIiwiLTE2MzcxLjI1OTAiLCIxLjU5MjAzNDA4RS0xNzUzNjgxMCIsIjUuOTQwMDI0MDRFLTE3NTM2ODE5IiwiMCIsIjkuNzI0NTY3MjBFLTE3NTM2ODE1IiwiIik7CisgIG1hdGh0ZXN0KDQwOSxkZWYsIjcxNDcxLjIwNDUiLCItNzQzMDMyNzguNCIsIi03NDIzMTgwNy4yIiwiNzQzNzQ3NDkuNiIsIi01LjMxMDU0NDgxRSsxMiIsIi0wLjAwMDk2MTg4NDk0IiwiMCIsIjcxNDcxLjIwNDUiLCIyLjE0NTM1Mzc0RS0zNjA2Nzc4NTMiKTsKKyAgbWF0aHRlc3QoNDEwLGRlZiwiNjQzLjEwMzk1MUUrNDM5NzA4NDQxIiwiNzg4MjUxOTI1LiIsIjYuNDMxMDM5NTFFKzQzOTcwODQ0MyIsIjYuNDMxMDM5NTFFKzQzOTcwODQ0MyIsIjUuMDY5Mjc5MjdFKzQzOTcwODQ1MiIsIjguMTU4NjA5MzNFKzQzOTcwODQzNCIsIiIsIiIsIiIpOworICBtYXRodGVzdCg0MTEsZGVmLCI0LjMwODM4NjYzIiwiLTcuNDMxMTA4MjciLCItMy4xMjI3MjE2NCIsIjExLjczOTQ5NDkiLCItMzIuMDE2MDg3NSIsIi0wLjU3OTc3NzEzMSIsIjAiLCI0LjMwODM4NjYzIiwiMC4wMDAwMzYyOTA4NjQ1Iik7CisgIG1hdGh0ZXN0KDQxMixkZWYsIjgyMy42NzgwMjUiLCItNTEzLjU4MTg0MEUtMzI0NDUzMTQxIiwiODIzLjY3ODAyNSIsIjgyMy42NzgwMjUiLCItNC4yMzAyNjA3NkUtMzI0NDUzMTM2IiwiLTEuNjAzNzkxMThFKzMyNDQ1MzE0MSIsIiIsIiIsIjIuNjM3NjIyMjhFLTE1Iik7CisgIG1hdGh0ZXN0KDQxMyxkZWYsIjQ0NjEuODExNjIiLCIzLjIyMDgxNjgwIiwiNDQ2NS4wMzI0NCIsIjQ0NTguNTkwODAiLCIxNDM3MC42Nzc4IiwiMTM4NS4zMDQzOCIsIjEzODUiLCIwLjk4MDM1MjAwIiwiOC44ODI0Njg4RSsxMCIpOworICBtYXRodGVzdCg0MTQsZGVmLCItNDQ1ODUyNy4xMCIsIi05OTA3MjYwNSIsIi0xMDM1MzExMzIiLCI5NDYxNDA3Ny45IiwiNC40MTcxNzg5NEUrMTQiLCIwLjA0NTAwMjYyMzEiLCIwIiwiLTQ0NTg1MjcuMTAiLCItNi4yMzkyODA5OUUtNjU4NzUyNzE1Iik7CisgIG1hdGh0ZXN0KDQxNSxkZWYsIi01Nzc5NjQ2MTgiLCI0ODc0MjQzNjguIiwiLTkwNTQwMjUwIiwiLTEuMDY1Mzg4OTlFKzkiLCItMi44MTcxNDAzOUUrMTciLCItMS4xODU3NTI0MSIsIi0xIiwiLTkwNTQwMjUwIiwiIik7CisgIG1hdGh0ZXN0KDQxNixkZWYsIi04NjcuMDM2MTg0IiwiLTU3LjE3Njg2MDgiLCItOTI0LjIxMzA0NSIsIi04MDkuODU5MzIzIiwiNDk1NzQuNDA3MiIsIjE1LjE2NDEwOTYiLCIxNSIsIi05LjM4MzI3MjAiLCItMy40MDMxMjgzN0UtMTY4Iik7CisgIG1hdGh0ZXN0KDQxNyxkZWYsIjc3MTg3MTkyMUUtMzMwNTA0NzcwIiwiNS4zNDI4NTIzNiIsIjUuMzQyODUyMzYiLCItNS4zNDI4NTIzNiIsIjQuMTIzOTk3NzFFLTMzMDUwNDc2MSIsIjEuNDQ0NjgxMzZFLTMzMDUwNDc2MiIsIjAiLCI3LjcxODcxOTIxRS0zMzA1MDQ3NjIiLCIiKTsKKyAgbWF0aHRlc3QoNDE4LGRlZiwiLTMzODY4My4wNjJFLTcyODc3NzUxOCIsIjE2NjQ0MTkzMSIsIjE2NjQ0MTkzMSIsIi0xNjY0NDE5MzEiLCItNS42MzcxMDYyOEUtNzI4Nzc3NTA1IiwiLTIuMDM0ODQyMThFLTcyODc3NzUyMSIsIjAiLCItMy4zODY4MzA2MkUtNzI4Nzc3NTEzIiwiIik7CisgIG1hdGh0ZXN0KDQxOSxkZWYsIi01MTI1Njg3NDMiLCItNDE2Mzc2ODg3LkUtOTY1OTQ1Mjk1IiwiLTUxMjU2ODc0MyIsIi01MTI1Njg3NDMiLCIyLjEzNDIxNzc4RS05NjU5NDUyNzgiLCIxLjIzMTAyMTEyRSs5NjU5NDUyOTUiLCIiLCIiLCIxLjQ0ODc0MzU4RS0zNSIpOworICBtYXRodGVzdCg0MjAsZGVmLCI3NDQ3MTgxLjk5IiwiNTMxODQzOC41MiIsIjEyNzY1NjIwLjUiLCIyMTI4NzQzLjQ3IiwiMy45NjA3Mzc5NkUrMTMiLCIxLjQwMDI1NzIzIiwiMSIsIjIxMjg3NDMuNDciLCIxLjIxNjM0NzgyRSszNjU0ODI3MCIpOworICBtYXRodGVzdCg0MjEsZGVmLCI1NDc4OS44MjA3IiwiOTMxNjU0MzUuMiIsIjkzMjIwMjI1LjAiLCItOTMxMTA2NDUuNCIsIjUuMTA0NTE3NDlFKzEyIiwiMC4wMDA1ODgwOTE3MTYiLCIwIiwiNTQ3ODkuODIwNyIsIjMuODA3Njk4MjVFKzQ0MTQ4MzAzNSIpOworICBtYXRodGVzdCg0MjIsZGVmLCI0MTQ4OC41OTYwIiwiMTQ2Ljc5NzA5NCIsIjQxNjM1LjM5MzEiLCI0MTM0MS43OTg5IiwiNjA5MDQwNS4zMyIsIjI4Mi42MjU0NTkiLCIyODIiLCI5MS44MTU0OTIiLCI2Ljg0NzM4MTUzRSs2NzgiKTsKKyAgbWF0aHRlc3QoNDIzLGRlZiwiNzg1NzQxLjY2M0UrNTY3NTQ1MjkiLCItNDYxLjUzMTczMiIsIjcuODU3NDE2NjNFKzU2NzU0NTM0IiwiNy44NTc0MTY2M0UrNTY3NTQ1MzQiLCItMy42MjY0NDcxMUUrNTY3NTQ1MzciLCItMS43MDI0NjUwOUUrNTY3NTQ1MzIiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNDI0LGRlZiwiLTQuOTU0MzY3ODYiLCItMzEzMi40MjMzIiwiLTMxMzcuMzc3NjciLCIzMTI3LjQ2ODkzIiwiMTU1MTkuMTc3MyIsIjAuMDAxNTgxNjQwNiIsIjAiLCItNC45NTQzNjc4NiIsIjEuOTgwNjI0MjJFLTIxNzciKTsKKyAgbWF0aHRlc3QoNDI1LGRlZiwiNzczMjEuODQ3OEUrNDA0NjI2ODc0IiwiODIuNDc5NzY4OCIsIjcuNzMyMTg0NzhFKzQwNDYyNjg3OCIsIjcuNzMyMTg0NzhFKzQwNDYyNjg3OCIsIjYuMzc3NDg4MTNFKzQwNDYyNjg4MCIsIjkuMzc0NjQ0MUUrNDA0NjI2ODc2IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDQyNixkZWYsIi03Ljk5MzA3NzI1IiwiLTI5MTUzLjcyNzMiLCItMjkxNjEuNzIwNCIsIjI5MTQ1LjczNDIiLCIyMzMwMjcuOTk0IiwiMC4wMDAyNzQxNjk5OTQiLCIwIiwiLTcuOTkzMDc3MjUiLCIxLjg4Njg4MDI4RS0yNjMxOCIpOworICBtYXRodGVzdCg0MjcsZGVmLCItNjEuNjMzNzQwMUUrNDc0OTk5NTE3IiwiNTI1NC44NzA5MiIsIi02LjE2MzM3NDAxRSs0NzQ5OTk1MTgiLCItNi4xNjMzNzQwMUUrNDc0OTk5NTE4IiwiLTMuMjM4NzczNDlFKzQ3NDk5OTUyMiIsIi0xLjE3Mjg4NzhFKzQ3NDk5OTUxNSIsIiIsIiIsIiIpOworICBtYXRodGVzdCg0MjgsZGVmLCItMTYuNDA0MzA4OCIsIjM1LjAwNjQ4MTIiLCIxOC42MDIxNzI0IiwiLTUxLjQxMDc5MDAiLCItNTc0LjI1NzEyOCIsIi0wLjQ2ODYwNzc2MiIsIjAiLCItMTYuNDA0MzA4OCIsIi0zLjMzODMxODQzRSs0MiIpOworICBtYXRodGVzdCg0MjksZGVmLCItOC40MTE1NjUyMCIsIi01NjUwODk1OC45IiwiLTU2NTA4OTY3LjMiLCI1NjUwODk1MC41IiwiNDc1MzI4NzkyIiwiMS40ODg1MzY1N0UtNyIsIjAiLCItOC40MTE1NjUyMCIsIi04Ljg2MzY1NDU4RS01MjI2MzgyNyIpOworICBtYXRodGVzdCg0MzAsZGVmLCItMzYwMTY1Ljc5RSs1MDM1NTk4MzUiLCItMTk2Njg4LjUxNSIsIi0zLjYwMTY1NzkwRSs1MDM1NTk4NDAiLCItMy42MDE2NTc5MEUrNTAzNTU5ODQwIiwiNy4wODQwNDc0NEUrNTAzNTU5ODQ1IiwiMS44MzExNDgwNUUrNTAzNTU5ODM1IiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDQzMSxkZWYsIi02NTMyMzY0ODAuRSs1NjU2NDg0OTUiLCItOTMwLjQ0NTI3NCIsIi02LjUzMjM2NDgwRSs1NjU2NDg1MDMiLCItNi41MzIzNjQ4MEUrNTY1NjQ4NTAzIiwiNi4wNzgwMDc5NkUrNTY1NjQ4NTA2IiwiNy4wMjA2ODY3NEUrNTY1NjQ4NTAwIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDQzMixkZWYsIi0zLjczMzQyOTAzIiwiODU1LjAyOTI4OSIsIjg1MS4yOTU4NjAiLCItODU4Ljc2MjcxOCIsIi0zMTkyLjE5MTE3IiwiLTAuMDA0MzY2NDM0MDgiLCIwIiwiLTMuNzMzNDI5MDMiLCItMS40MTk4ODk2MUUrNDg5Iik7CisgIG1hdGh0ZXN0KDQzMyxkZWYsIi01LjE0ODkwNTMyRSs1NjIwNDgwMTEiLCIxMDg0NzEyNy44RS0zOTA5MTg5MTAiLCItNS4xNDg5MDUzMkUrNTYyMDQ4MDExIiwiLTUuMTQ4OTA1MzJFKzU2MjA0ODAxMSIsIi01LjU4NTA4MzQwRSsxNzExMjkxMDgiLCItNC43NDY3OTE0MkUrOTUyOTY2OTE0IiwiIiwiIiwiLTUuMTQ4OTA1MzJFKzU2MjA0ODAxMSIpOworICBtYXRodGVzdCg0MzQsZGVmLCI2NTMzMTE5MDciLCItODEwLjAzNjk2NUUrNzQ0NTM3ODIzIiwiLTguMTAwMzY5NjVFKzc0NDUzNzgyNSIsIjguMTAwMzY5NjVFKzc0NDUzNzgyNSIsIi01LjI5MjA2Nzk0RSs3NDQ1Mzc4MzQiLCItOC4wNjUyMTEwNEUtNzQ0NTM3ODE4IiwiMCIsIjY1MzMxMTkwNyIsIjMuMDEzMjUxNzFFLTcxIik7CisgIG1hdGh0ZXN0KDQzNSxkZWYsIi0xLjMxNTU3OTA3IiwiOTguOTEzOTMwMEUtNTc5MjgxODAyIiwiLTEuMzE1NTc5MDciLCItMS4zMTU1NzkwNyIsIi0xLjMwMTI5MDk2RS01NzkyODE4MDAiLCItMS4zMzAwMjQwNkUrNTc5MjgxODAwIiwiIiwiIiwiMTUuNTI5OTMyIik7CisgIG1hdGh0ZXN0KDQzNixkZWYsIi04NzUxOTIzODkiLCItNzIwNzE1NjUuNiIsIi05NDcyNjM5NTUiLCItODAzMTIwODIzIiwiNi4zMDc2NDg1N0UrMTYiLCIxMi4xNDMzNzk3IiwiMTIiLCItMTAzMzM2MDEuOCIsIjEuMjU1NjQ0MDhFLTY0NDQ3MTQwNSIpOworICBtYXRodGVzdCg0MzcsZGVmLCItNzI4MzgwNzguOCIsIi0zOTEuMzk4NDIzIiwiLTcyODM4NDcwLjIiLCItNzI4Mzc2ODcuNCIsIjIuODUwODcwOTJFKzEwIiwiMTg2MDk3LjAxNyIsIjE4NjA5NyIsIi02LjQ3NDk2OSIsIi02LjU3NDA1N0UtMzA3NSIpOworICBtYXRodGVzdCg0MzgsZGVmLCIyOTE4NjU2MC45IiwiLTc5Ljc0MTk5ODgiLCIyOTE4NjQ4MS4yIiwiMjkxODY2NDAuNiIsIi0yLjMyNzM5NDcwRSs5IiwiLTM2NjAxMi40MDciLCItMzY2MDEyIiwiMzIuNDM1MjE0NCIsIjYuMTAwNTA4NjlFLTU5OCIpOworICBtYXRodGVzdCg0MzksZGVmLCItMzI5ODAxNjYwRS03MzAyNDk0NjUiLCItNjQ4OS45MjU2IiwiLTY0ODkuOTI1NjAiLCI2NDg5LjkyNTYwIiwiMi4xNDAzODgyNEUtNzMwMjQ5NDUzIiwiNS4wODE3NDc5M0UtNzMwMjQ5NDYxIiwiMCIsIi0zLjI5ODAxNjYwRS03MzAyNDk0NTciLCIiKTsKKyAgbWF0aHRlc3QoNDQwLGRlZiwiOTEuODQyOTExN0UrMTAzMTY0ODgzIiwiNzEzMTQ1NS4xNiIsIjkuMTg0MjkxMTdFKzEwMzE2NDg4NCIsIjkuMTg0MjkxMTdFKzEwMzE2NDg4NCIsIjYuNTQ5NzM2MDdFKzEwMzE2NDg5MSIsIjEuMjg3ODU2NTRFKzEwMzE2NDg3OCIsIiIsIiIsIiIpOworICBtYXRodGVzdCg0NDEsZGVmLCIzOTQzODY2LjM4RSsxNTA4NTUxMTMiLCItMzE5MjcwMDcuMyIsIjMuOTQzODY2MzhFKzE1MDg1NTExOSIsIjMuOTQzODY2MzhFKzE1MDg1NTExOSIsIi0xLjI1OTE1ODUxRSsxNTA4NTUxMjciLCItMS4yMzUyNzU5NEUrMTUwODU1MTEyIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDQ0MixkZWYsIi03MDAyLjA0NjhFLTc5NTk2MjE1NiIsIi01OTM3ODkxLjA1IiwiLTU5Mzc4OTEuMDUiLCI1OTM3ODkxLjA1IiwiNC4xNTc3MzkxMEUtNzk1OTYyMTQ2IiwiMS4xNzkyMTQ0M0UtNzk1OTYyMTU5IiwiMCIsIi03LjAwMjA0NjhFLTc5NTk2MjE1MyIsIiIpOworICBtYXRodGVzdCg0NDMsZGVmLCI2OTY1MDQ2MDUuIiwiNTQ1MDYuNDYxNyIsIjY5NjU1OTExMSIsIjY5NjQ1MDA5OSIsIjMuNzk2NDAwMTZFKzEzIiwiMTI3NzguMzg2IiwiMTI3NzgiLCIyMTAzNy4zOTc0IiwiMi42MDA4NTMyRSs0ODE5OTIiKTsKKyAgbWF0aHRlc3QoNDQ0LGRlZiwiLTUxMTUuNzY0NjciLCI2OTAuOTYwOTc5RSs4MTUxMjY3MDEiLCI2LjkwOTYwOTc5RSs4MTUxMjY3MDMiLCItNi45MDk2MDk3OUUrODE1MTI2NzAzIiwiLTMuNTM0NzkzNzZFKzgxNTEyNjcwNyIsIi03LjQwMzg0MDJFLTgxNTEyNjcwMSIsIjAiLCItNTExNS43NjQ2NyIsIi05LjE3MDA5NjU1RSsyNSIpOworICBtYXRodGVzdCg0NDUsZGVmLCItMjYxLjI3OTM5MiIsIi02MTMuMDc5MzU3IiwiLTg3NC4zNTg3NDkiLCIzNTEuNzk5OTY1IiwiMTYwMTg1LjAwMiIsIjAuNDI2MTc1NDg0IiwiMCIsIi0yNjEuMjc5MzkyIiwiLTIuMDYzMTg4NDFFLTE0ODIiKTsKKyAgbWF0aHRlc3QoNDQ2LGRlZiwiLTU5MTQwNzc2MyIsIi04MDE0NTgyMi44IiwiLTY3MTU1MzU4NiIsIi01MTEyNjE5NDAiLCI0LjczOTg4NjE4RSsxNiIsIjcuMzc5MTQ2NDQiLCI3IiwiLTMwMzg3MDAzLjQiLCItMi43OTMzNDUyMkUtNzAzMDMwMTA1Iik7CisgIG1hdGh0ZXN0KDQ0NyxkZWYsIjYxNTYzMDQwNyIsIi02OS40NjYxODY5IiwiNjE1NjMwMzM4IiwiNjE1NjMwNDc2IiwiLTQuMjc2NTQ5NjlFKzEwIiwiLTg4NjIzMDMuMTUiLCItODg2MjMwMyIsIjEwLjQzNzU2OTMiLCIzLjQ0MjgzMTAyRS02MDciKTsKKyAgbWF0aHRlc3QoNDQ4LGRlZiwiMTA3ODc1Ny41MCIsIjI3NDAyNTY5LjBFLTcxMzc0MjA4MiIsIjEwNzg3NTcuNTAiLCIxMDc4NzU3LjUwIiwiMi45NTYwNzI2OEUtNzEzNzQyMDY5IiwiMy45MzY3MDIwN0UrNzEzNzQyMDgwIiwiIiwiIiwiMS4yNTUzNjkyNEUrMTgiKTsKKyAgbWF0aHRlc3QoNDQ5LGRlZiwiLTQ4NjUuNjAzNThFLTQwMTExNjUxNSIsIjY2OTUyLjUzMTUiLCI2Njk1Mi41MzE1IiwiLTY2OTUyLjUzMTUiLCItMy4yNTc2NDQ3N0UtNDAxMTE2NTA3IiwiLTcuMjY3MjQzNjNFLTQwMTExNjUxNyIsIjAiLCItNC44NjU2MDM1OEUtNDAxMTE2NTEyIiwiIik7CisgIG1hdGh0ZXN0KDQ1MCxkZWYsIi04NzgwNS4zOTIxRS05MzQ4OTY2OTAiLCItMTg3NS4xNDc0NSIsIi0xODc1LjE0NzQ1IiwiMTg3NS4xNDc0NSIsIjEuNjQ2NDgwNTdFLTkzNDg5NjY4MiIsIjQuNjgyNTg2MDFFLTkzNDg5NjY4OSIsIjAiLCItOC43ODA1MzkyMUUtOTM0ODk2Njg2IiwiIik7CisgIG1hdGh0ZXN0KDQ1MSxkZWYsIi0yMzI1NDA2MDkuRSs2MDI3MDI1MjAiLCI2OC4wODM0MjIzIiwiLTIuMzI1NDA2MDlFKzYwMjcwMjUyOCIsIi0yLjMyNTQwNjA5RSs2MDI3MDI1MjgiLCItMS41ODMyMTYwNUUrNjAyNzAyNTMwIiwiLTMuNDE1NTI0NjhFKzYwMjcwMjUyNiIsIiIsIiIsIiIpOworICBtYXRodGVzdCg0NTIsZGVmLCItMzIwNjEwODAzLiIsIi04NjM4NzEyMzUuIiwiLTEuMTg0NDgyMDRFKzkiLCI1NDMyNjA0MzIiLCIyLjc2OTY2NDUwRSsxNyIsIjAuMzcxMTMyNjMiLCIwIiwiLTMyMDYxMDgwMyIsIiIpOworICBtYXRodGVzdCg0NTMsZGVmLCItMzAzOTU2MzY0RSsyNzgxMzk5NzkiLCIyMjk1MzcuOTIwRSs0Nzk2MDM3MjUiLCIyLjI5NTM3OTIwRSs0Nzk2MDM3MzAiLCItMi4yOTUzNzkyMEUrNDc5NjAzNzMwIiwiLTYuOTc2OTUxMTZFKzc1Nzc0MzcxNyIsIi0xLjMyNDIwOThFLTIwMTQ2Mzc0MyIsIjAiLCItMy4wMzk1NjM2NEUrMjc4MTM5OTg3IiwiOS4yMzg5NDcxMkUrNTU2Mjc5OTc0Iik7CisgIG1hdGh0ZXN0KDQ1NCxkZWYsIi00MzkuNzQ3MzQ4IiwiNzQuOTQ5NDQ1N0UtMzUzMTE3NTgyIiwiLTQzOS43NDczNDgiLCItNDM5Ljc0NzM0OCIsIi0zLjI5NTg4MjAwRS0zNTMxMTc1NzgiLCItNS44NjcyNTI4NEUrMzUzMTE3NTgyIiwiIiwiIiwiLTMuMTc5OTY2OTNFKzE4Iik7CisgIG1hdGh0ZXN0KDQ1NSxkZWYsIi04OTcwMjIzMS45IiwiMS4yODk5Mzk5MyIsIi04OTcwMjIzMC42IiwiLTg5NzAyMjMzLjIiLCItMTE1NzEwNDkxIiwiLTY5NTM5ODUyLjEiLCItNjk1Mzk4NTIiLCItMC4wNzg5MDk2NCIsIi04OTcwMjIzMS45Iik7CisgIG1hdGh0ZXN0KDQ1NixkZWYsIi01ODU2OTM5LjE0IiwiLTY3NDMzNzUuMzQiLCItMTI2MDAzMTQuNSIsIjg4NjQzNi4yMCIsIjMuOTQ5NTUzOTBFKzEzIiwiMC44Njg1NDcxMDciLCIwIiwiLTU4NTY5MzkuMTQiLCItMy4yOTIxMzI0OEUtNDU2MzY5NDIiKTsKKyAgbWF0aHRlc3QoNDU3LGRlZiwiNzMzMzE3LjY2OUUrMTAwMzgxMzQ5IiwiLTEzODMyLjY3OTJFKzE3NDA1NTYwNyIsIi0xLjM4MzI2NzkyRSsxNzQwNTU2MTEiLCIxLjM4MzI2NzkyRSsxNzQwNTU2MTEiLCItMS4wMTQzNzQ4MUUrMjc0NDM2OTY2IiwiLTUuMzAxMzQyMjdFLTczNjc0MjU3IiwiMCIsIjcuMzMzMTc2NjlFKzEwMDM4MTM1NCIsIjEuMzYzNjY1NDlFLTEwMDM4MTM1NSIpOworICBtYXRodGVzdCg0NTgsZGVmLCI4Ny40Nzk4Nzg3RS04MDEyNDcwNCIsIjEwODQ5Ny4zMiIsIjEwODQ5Ny4zMjAiLCItMTA4NDk3LjMyMCIsIjkuNDkxMzMyMzlFLTgwMTI0Njk4IiwiOC4wNjI4NjA3OUUtODAxMjQ3MDgiLCIwIiwiOC43NDc5ODc4N0UtODAxMjQ3MDMiLCIiKTsKKyAgbWF0aHRlc3QoNDU5LGRlZiwiLTY5NDU2MjA1MiIsIjMxMDY4MS4zMTlFKzU0OTQ0NTI2NCIsIjMuMTA2ODEzMTlFKzU0OTQ0NTI2OSIsIi0zLjEwNjgxMzE5RSs1NDk0NDUyNjkiLCItMi4xNTc4NzQ1NEUrNTQ5NDQ1Mjc4IiwiLTIuMjM1NjA5MzJFLTU0OTQ0NTI2MSIsIjAiLCItNjk0NTYyMDUyIiwiLTMuMzUwNjgxNTVFKzI2Iik7CisgIG1hdGh0ZXN0KDQ2MCxkZWYsIi05NzQ0MTM1Ljg1IiwiMTc5NzAxNi4wNCIsIi03OTQ3MTE5LjgxIiwiLTExNTQxMTUxLjkiLCItMS43NTEwMzY4NEUrMTMiLCItNS40MjIzOTc4MiIsIi01IiwiLTc1OTA1NS42NSIsIjMuODM4NDgwMDZFKzEyNTU4ODgzIik7CisgIG1hdGh0ZXN0KDQ2MSxkZWYsIjM2MjUuODczMDgiLCItNTAuMjIwODUzNkUrNjU4NjI3NDg3IiwiLTUuMDIyMDg1MzZFKzY1ODYyNzQ4OCIsIjUuMDIyMDg1MzZFKzY1ODYyNzQ4OCIsIi0xLjgyMDk0NDQxRSs2NTg2Mjc0OTIiLCItNy4yMTk4NTU1NEUtNjU4NjI3NDg2IiwiMCIsIjM2MjUuODczMDgiLCIxLjU5NTY0NzdFLTE4Iik7CisgIG1hdGh0ZXN0KDQ2MixkZWYsIjM2NTM0Ny41MiIsIi0zNjU1NDE0LjQ3IiwiLTMyOTAwNjYuOTUiLCI0MDIwNzYxLjk5IiwiLTEuMzM1NDk2NjFFKzEyIiwiLTAuMDk5OTQ2OTQ4IiwiMCIsIjM2NTM0Ny41MiIsIjEuMDI2NjMyNTdFLTIwMzMzOTk0Iik7CisgIG1hdGh0ZXN0KDQ2MyxkZWYsIi0xOTcwNjMzMy42RS04MTY5MjMwNTAiLCItMzgzODU4MDMyLiIsIi0zODM4NTgwMzIiLCIzODM4NTgwMzIiLCI3LjU2NDQzNDQzRS04MTY5MjMwMzUiLCI1LjEzMzc1NTdFLTgxNjkyMzA1MiIsIjAiLCItMS45NzA2MzMzNkUtODE2OTIzMDQzIiwiIik7CisgIG1hdGh0ZXN0KDQ2NCxkZWYsIi04NjM0Ni4yNjE2IiwiLTk4LjgwNjM3ODUiLCItODY0NDUuMDY4MCIsIi04NjI0Ny40NTUyIiwiODUzMTU2MS40MSIsIjg3My44OTM1OTgiLCI4NzMiLCItODguMjkzMTY5NSIsIi0yLjA1MDY0MDg2RS00ODkiKTsKKyAgbWF0aHRlc3QoNDY1LGRlZiwiLTQ0NTU4OC4xNjBFLTQ5NjU5MjIxNSIsIjMyOC44MjI5NzYiLCIzMjguODIyOTc2IiwiLTMyOC44MjI5NzYiLCItMS40NjUxOTYyNUUtNDk2NTkyMjA3IiwiLTEuMzU1MTAwNDRFLTQ5NjU5MjIxMiIsIjAiLCItNC40NTU4ODE2MEUtNDk2NTkyMjEwIiwiIik7CisgIG1hdGh0ZXN0KDQ2NixkZWYsIi05NzA5MjEzLjcxIiwiLTM0LjY2OTAxMzciLCItOTcwOTI0OC4zOCIsIi05NzA5MTc5LjA0IiwiMzM2NjA4ODYzIiwiMjgwMDU0LjUxMiIsIjI4MDA1NCIsIi0xNy43NDcyNjAyIiwiLTIuODA5MDM5NzRFLTI0NSIpOworICBtYXRodGVzdCg0NjcsZGVmLCI3NDIzOTU1MzYuIiwiLTQzNTMzLjY4ODkiLCI3NDIzNTIwMDIiLCI3NDI0MzkwNzAiLCItMy4yMzE5MjE2M0UrMTMiLCItMTcwNTMuMzU2OSIsIi0xNzA1MyIsIjE1NTM5LjE4ODMiLCI1Ljc2MjI3MzRFLTM4NjE3NSIpOworICBtYXRodGVzdCg0NjgsZGVmLCItODc4ODQ5MTkzLiIsIi01ODQyOTgyLjQ3RS05NzI1MzczNDIiLCItODc4ODQ5MTkzIiwiLTg3ODg0OTE5MyIsIjUuMTM1MTAwNDNFLTk3MjUzNzMyNyIsIjEuNTA0MTEwNjFFKzk3MjUzNzM0NCIsIiIsIiIsIjIuMTcwMjcwNDJFLTU0Iik7CisgIG1hdGh0ZXN0KDQ2OSxkZWYsIi03ODAxNDE0Mi4xIiwiLTYyNDY1OC41MjIiLCItNzg2Mzg4MDAuNiIsIi03NzM4OTQ4My42IiwiNC44NzMyMTk4N0UrMTMiLCIxMjQuODkwODYzIiwiMTI0IiwiLTU1NjQ4NS4zNzIiLCItNy44NjA2Mzg2NUUtNDkyOTkxOCIpOworICBtYXRodGVzdCg0NzAsZGVmLCI4NTcwMzkuMzcxIiwiNDU0LjM3OTY3MiIsIjg1NzQ5My43NTEiLCI4NTY1ODQuOTkxIiwiMzg5NDIxMjY4IiwiMTg4Ni4xNzQ1NCIsIjE4ODYiLCI3OS4zMDk2MDgiLCIzLjgyMjUzMTAxRSsyNjkzIik7CisgIG1hdGh0ZXN0KDQ3MSxkZWYsIjE2NjUzNDAxMC4iLCItMTczLjAxMjIzNiIsIjE2NjUzMzgzNyIsIjE2NjUzNDE4MyIsIi0yLjg4MTI0MjE0RSsxMCIsIi05NjI1NTYuMjU1IiwiLTk2MjU1NiIsIjQ0LjE2NDc4NCIsIjQuNzg2MjA2NjRFLTE0MjMiKTsKKyAgbWF0aHRlc3QoNDcyLGRlZiwiLTgxMC44NzkwNjMiLCI0Mzc3Ni42MTAiLCI0Mjk2NS43MzA5IiwiLTQ0NTg3LjQ4OTEiLCItMzU0OTc1MzYuNSIsIi0wLjAxODUyMzExMjMiLCIwIiwiLTgxMC44NzkwNjMiLCItMi4zNDc1ODY5MUUrMTI3MzQ1Iik7CisgIG1hdGh0ZXN0KDQ3MyxkZWYsIi0zMjcuMTI3OTM1IiwiOTM0NTg5NDQiLCI5MzQ1ODYxNi45IiwiLTkzNDU5MjcxLjEiLCItMy4wNTczMDMxNEUrMTAiLCItMC4wMDAwMDM1MDAyMzE0NSIsIjAiLCItMzI3LjEyNzkzNSIsIjIuMjkzMjMwMjFFKzIzNTAyMjg1NCIpOworICBtYXRodGVzdCg0NzQsZGVmLCI1MzkyOTUyMTguIiwiLTk1ODc5NDEuMTBFLTMwOTY0MzA5OCIsIjUzOTI5NTIxOCIsIjUzOTI5NTIxOCIsIi01LjE3MDczMDc5RS0zMDk2NDMwODMiLCItNS42MjQ3MjM5NEUrMzA5NjQzMDk5IiwiIiwiIiwiNC44MDU0NTI2OUUtODgiKTsKKyAgbWF0aHRlc3QoNDc1LGRlZiwiLTM4NjI3MDIuNjUiLCI4Nzk2MTYuNzMzIiwiLTI5ODMwODUuOTIiLCItNDc0MjMxOS4zOCIsIi0zLjM5NzY5Nzg5RSsxMiIsIi00LjM5MTM0NzQiLCItNCIsIi0zNDQyMzUuNzE4IiwiLTMuNTA2NTAxNjdFKzU3OTM5NDEiKTsKKyAgbWF0aHRlc3QoNDc2LGRlZiwiLTguMjUyOTA1MDAiLCI5OTIuMDkxNTg0RSsyNTYwNzAyNTciLCI5LjkyMDkxNTg0RSsyNTYwNzAyNTkiLCItOS45MjA5MTU4NEUrMjU2MDcwMjU5IiwiLTguMTg3NjM3NTlFKzI1NjA3MDI2MCIsIi04LjMxODY5MjY4RS0yNTYwNzAyNjAiLCIwIiwiLTguMjUyOTA1MDAiLCIxLjQ2NTc3ODg4RSs5Iik7CisgIG1hdGh0ZXN0KDQ3NyxkZWYsIjU0Njg3NTIwNS4iLCI0NDcuNTI4NTdFKzU1NzM1NzEwMSIsIjQuNDc1Mjg1NzBFKzU1NzM1NzEwMyIsIi00LjQ3NTI4NTcwRSs1NTczNTcxMDMiLCIyLjQ0NzQyMjc4RSs1NTczNTcxMTIiLCIxLjIyMTk4OTQ4RS01NTczNTcwOTUiLCIwIiwiNTQ2ODc1MjA1IiwiOC45NDQ0MzU0MkUrMzQiKTsKKyAgbWF0aHRlc3QoNDc4LGRlZiwiMTc3NjIzNDM3IiwiLTc3NzkxMTYuMTQiLCIxNjk4NDQzMjEiLCIxODU0MDI1NTMiLCItMS4zODE3NTMzNUUrMTUiLCItMjIuODMzMzciLCItMjIiLCI2NDgyODgxLjkyIiwiMi45MDA4NTMwOUUtNjQxNzM4MjAiKTsKKyAgbWF0aHRlc3QoNDc5LGRlZiwiMzc3MjA0NzM1LiIsIjEzNzY4LjE0MDEiLCIzNzcyMTg1MDMiLCIzNzcxOTA5NjciLCI1LjE5MzQwNzY0RSsxMiIsIjI3Mzk2LjkyNzQiLCIyNzM5NiIsIjEyNzY4LjgyMDQiLCIyLjA2MDY1Mjk3RSsxMTgwODIiKTsKKyAgbWF0aHRlc3QoNDgwLGRlZiwiLTI0MzUuNDkyMzkiLCItMTE3MzIuMDY0MEUtMjMzMzE1MDQiLCItMjQzNS40OTIzOSIsIi0yNDM1LjQ5MjM5IiwiMi44NTczMzUyNkUtMjMzMzE0OTciLCIyLjA3NTkyODMyRSsyMzMzMTUwMyIsIiIsIiIsIi0wLjAwMDQxMDU5NDU5Iik7CisgIG1hdGh0ZXN0KDQ4MSxkZWYsIi02MTI4NDY1LjE0RS0xMzcxMjMyOTQiLCItNTc0MjI2NC4yNyIsIi01NzQyMjY0LjI3IiwiNTc0MjI2NC4yNyIsIjMuNTE5MTI2NjRFLTEzNzEyMzI4MSIsIjEuMDY3MjU1ODVFLTEzNzEyMzI5NCIsIjAiLCItNi4xMjg0NjUxNEUtMTM3MTIzMjg4IiwiIik7CisgIG1hdGh0ZXN0KDQ4MixkZWYsIi0yODk4MDY1LjQ0IiwiLTUuMTE2MzgxMDUiLCItMjg5ODA3MC41NiIsIi0yODk4MDYwLjMyIiwiMTQ4Mjc2MDcuMSIsIjU2NjQyOC43NzMiLCI1NjY0MjgiLCItMy45NTQ2MTA2MCIsIi00Ljg5MTY5MTUxRS0zMyIpOworICBtYXRodGVzdCg0ODMsZGVmLCIxODUxMzk1LjMxRSs1OTQzODMxNjAiLCItNTUwMzAxLjQ3NSIsIjEuODUxMzk1MzFFKzU5NDM4MzE2NiIsIjEuODUxMzk1MzFFKzU5NDM4MzE2NiIsIi0xLjAxODgyNTU3RSs1OTQzODMxNzIiLCItMy4zNjQzMjkxOEUrNTk0MzgzMTYwIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDQ4NCxkZWYsIjUzNjQxMjU4OS5FKzM3OTU4Mzk3NyIsIjg5OS42MDExNjEiLCI1LjM2NDEyNTg5RSszNzk1ODM5ODUiLCI1LjM2NDEyNTg5RSszNzk1ODM5ODUiLCI0LjgyNTU3Mzg4RSszNzk1ODM5ODgiLCI1Ljk2Mjc4MjMxRSszNzk1ODM5ODIiLCIiLCIiLCIiKTsKKyAgbWF0aHRlc3QoNDg1LGRlZiwiMTg1Ljg1Mjk3IiwiODY3NDE5NDgwLiIsIjg2NzQxOTY2NiIsIi04Njc0MTkyOTQiLCIxLjYxMjEyNDg3RSsxMSIsIjIuMTQyNTk2MjJFLTciLCIwIiwiMTg1Ljg1Mjk3IiwiIik7CisgIG1hdGh0ZXN0KDQ4NixkZWYsIi01LjI2NjMxMDUzIiwiLTM4MTU5NDEuMzVFKzE4MzI5MTc2MyIsIi0zLjgxNTk0MTM1RSsxODMyOTE3NjkiLCIzLjgxNTk0MTM1RSsxODMyOTE3NjkiLCIyLjAwOTU5MzIxRSsxODMyOTE3NzAiLCIxLjM4MDA4MTYyRS0xODMyOTE3NjkiLCIwIiwiLTUuMjY2MzEwNTMiLCIwLjAwMTMwMDA5MjE4Iik7CisgIG1hdGh0ZXN0KDQ4NyxkZWYsIi04LjExNTg3MDIxRS0yNDU5NDI4MDYiLCI0NTUzLjA2NzUzRSs5NDM0MTIwNDgiLCI0LjU1MzA2NzUzRSs5NDM0MTIwNTEiLCItNC41NTMwNjc1M0UrOTQzNDEyMDUxIiwiLTMuNjk1MjEwNTFFKzY5NzQ2OTI0NiIsIiIsIjAiLCItOC4xMTU4NzAyMUUtMjQ1OTQyODA2IiwiIik7CisgIG1hdGh0ZXN0KDQ4OCxkZWYsIi00MDU3NjUuMzUyIiwiODU0OTYzMjMxIiwiODU0NTU3NDY2IiwiLTg1NTM2ODk5NiIsIi0zLjQ2OTE0NDU2RSsxNCIsIi0wLjAwMDQ3NDU5OTc2OSIsIjAiLCItNDA1NzY1LjM1MiIsIiIpOworICBtYXRodGVzdCg0ODksZGVmLCItMTU5LjYwOTc1NyIsIi00MzM1Ni43NTY3IiwiLTQzNTE2LjM2NjUiLCI0MzE5Ny4xNDcwIiwiNjkyMDE2MS40MCIsIjAuMDAzNjgxMzEyMTkiLCIwIiwiLTE1OS42MDk3NTciLCItOC45NTM5Nzg0OUUtOTU1MTkiKTsKKyAgbWF0aHRlc3QoNDkwLGRlZiwiLTU2NDI0MC4yNDFFLTUwMTMxNjY3MiIsIi01NTcuNzgxOTc3IiwiLTU1Ny43ODE5NzciLCI1NTcuNzgxOTc3IiwiMy4xNDcyMzAzN0UtNTAxMzE2NjY0IiwiMS4wMTE1Nzg0N0UtNTAxMzE2NjY5IiwiMCIsIi01LjY0MjQwMjQxRS01MDEzMTY2NjciLCIiKTsKKyAgbWF0aHRlc3QoNDkxLGRlZiwiMzE4ODQ3LjI3MCIsIjU4MjEwNzg3OC5FKzM5OTYzMzQxMiIsIjUuODIxMDc4NzhFKzM5OTYzMzQyMCIsIi01LjgyMTA3ODc4RSszOTk2MzM0MjAiLCIxLjg1NjAzNTA4RSszOTk2MzM0MjYiLCI1LjQ3NzQ2MDE0RS0zOTk2MzM0MTYiLCIwIiwiMzE4ODQ3LjI3MCIsIjEuMDUwNzQyM0UrMzMiKTsKKyAgbWF0aHRlc3QoNDkyLGRlZiwiLTQ0MjYuNTk2NjMiLCI5NS4xMDk2NzY1IiwiLTQzMzEuNDg2OTUiLCItNDUyMS43MDYzMSIsIi00MjEwMTIuMTczIiwiLTQ2LjU0MjAyMTciLCItNDYiLCItNTEuNTUxNTExMCIsIi0yLjM4MDM3Mzc5RSszNDYiKTsKKyAgbWF0aHRlc3QoNDkzLGRlZiwiNjAzNy4yODMxMCIsIjU3ODI2NC4xMDUiLCI1ODQzMDEuMzg4IiwiLTU3MjIyNi44MjIiLCIzLjQ5MTE0NDExRSs5IiwiMC4wMTA0NDAzNTYiLCIwIiwiNjAzNy4yODMxMCIsIjMuNTcyNzk0ODNFKzIxODYzMjQiKTsKKyAgbWF0aHRlc3QoNDk0LGRlZiwiLTY2Ljk1NTY2OTIiLCItNTMuODUxOTQwNCIsIi0xMjAuODA3NjEwIiwiLTEzLjEwMzcyODgiLCIzNjA1LjY5MjcxIiwiMS4yNDMzMjg4MSIsIjEiLCItMTMuMTAzNzI4OCIsIjIuNTU1NTQwODZFLTk5Iik7CisgIG1hdGh0ZXN0KDQ5NSxkZWYsIi05MjQ4Ni4wMjIyIiwiLTU5OTM1Ljg1NDQiLCItMTUyNDIxLjg3NyIsIi0zMjU1MC4xNjc4IiwiNS41NDMyMjg3NkUrOSIsIjEuNTQzMDgzNCIsIjEiLCItMzI1NTAuMTY3OCIsIjEuODMxNTI2NTZFLTI5NzY0NyIpOworICBtYXRodGVzdCg0OTYsZGVmLCI4NTIxMzYyMTkuRSs5MTc3ODczNTEiLCI5MjQ2MjIxLjkxIiwiOC41MjEzNjIxOUUrOTE3Nzg3MzU5IiwiOC41MjEzNjIxOUUrOTE3Nzg3MzU5IiwiNy44NzkwNDA1OEUrOTE3Nzg3MzY2IiwiOS4yMTYwNDc2N0UrOTE3Nzg3MzUyIiwiIiwiIiwiIik7CisgIG1hdGh0ZXN0KDQ5NyxkZWYsIi0yMTIwMDk2LjE2RS0yNjkyNTM3MTgiLCI5NDM3LjAwNTE0IiwiOTQzNy4wMDUxNCIsIi05NDM3LjAwNTE0IiwiLTIuMDAwNzM1ODRFLTI2OTI1MzcwOCIsIi0yLjI0NjU3NzMxRS0yNjkyNTM3MTYiLCIwIiwiLTIuMTIwMDk2MTZFLTI2OTI1MzcxMiIsIiIpOworICBtYXRodGVzdCg0OTgsZGVmLCItNTI0NjUzLjE2OUUtODY1Nzg0MjI2IiwiMjI4MDU0LjY5OCIsIjIyODA1NC42OTgiLCItMjI4MDU0LjY5OCIsIi0xLjE5NjQ5NjIwRS04NjU3ODQyMTUiLCItMi4zMDA1NTg0OEUtODY1Nzg0MjI2IiwiMCIsIi01LjI0NjUzMTY5RS04NjU3ODQyMjEiLCIiKTsKKyAgbWF0aHRlc3QoNDk5LGRlZiwiLTI4ODE5MzEzMyIsIi0zMTIyNjg3MzcuIiwiLTYwMDQ2MTg3MCIsIjI0MDc1NjA0IiwiOC45OTkzNzA1N0UrMTYiLCIwLjkyMjkwMTAxMSIsIjAiLCItMjg4MTkzMTMzIiwiIik7CisgIG1hdGh0ZXN0KDUwMCxkZWYsIi0zNzM0ODQ3NTlFLTExMzU4OTk2NCIsIjg0NDEwMTk1OEUtODUyNTM4MjQwIiwiLTMuNzM0ODQ3NTlFLTExMzU4OTk1NiIsIi0zLjczNDg0NzU5RS0xMTM1ODk5NTYiLCItMy4xNTI1OTIxNkUtOTY2MTI4MTg3IiwiLTQuNDI0NjQwMzZFKzczODk0ODI3NSIsIiIsIiIsIjMuNzg2MDIxNDdFLTkwODcxOTY0NCIpOworICAKKyAgc3VtbWFyeSgiQXJpdGhtZXRpYyIpOworICByZXR1cm47fQorCisgLyogbWF0aHRlc3QgLS0gZ2VuZXJhbCBhcml0aG1ldGljIHRlc3Qgcm91dGluZQorICAgIEFyZzEgIGlzIHRlc3QgbnVtYmVyCisgICAgQXJnMiAgaXMgTWF0aENvbnRleHQKKyAgICBBcmczICBpcyBsZWZ0IGhhbmQgc2lkZSAoTEhTKQorICAgIEFyZzQgIGlzIHJpZ2h0IGhhbmQgc2lkZSAoUkhTKQorICAgIEFyZzUgIGlzIHRoZSBleHBlY3RlZCByZXN1bHQgZm9yIGFkZAorICAgIEFyZzYgIGlzIHRoZSBleHBlY3RlZCByZXN1bHQgZm9yIHN1YnRyYWN0CisgICAgQXJnNyAgaXMgdGhlIGV4cGVjdGVkIHJlc3VsdCBmb3IgbXVsdGlwbHkKKyAgICBBcmc4ICBpcyB0aGUgZXhwZWN0ZWQgcmVzdWx0IGZvciBkaXZpZGUKKyAgICBBcmc5ICBpcyB0aGUgZXhwZWN0ZWQgcmVzdWx0IGZvciBpbnRlZ2VyRGl2aWRlCisgICAgQXJnMTAgaXMgdGhlIGV4cGVjdGVkIHJlc3VsdCBmb3IgcmVtYWluZGVyCisgICAgQXJnMTEgaXMgdGhlIGV4cGVjdGVkIHJlc3VsdCBmb3IgcG93ZXIKKyAKKyAgRm9yIHBvd2VyIFJIUywgMCBpcyBhZGRlZCB0byB0aGUgbnVtYmVyLCBhbnkgZXhwb25lbnQgaXMgcmVtb3ZlZCBhbmQKKyAgdGhlIG51bWJlciBpcyB0aGVuIHJvdW5kZWQgdG8gYW4gaW50ZWdlciwgdXNpbmcgZm9ybWF0KHJocyswLCwwKQorIAorICBJZiBhbiBlcnJvciBzaG91bGQgcmVzdWx0IGZvciBhbiBvcGVyYXRpb24sIHRoZSAnZXhwZWN0ZWQgcmVzdWx0JyBpcworICBhbiBlbXB0eSBzdHJpbmcuCisgICovCisgCisgcHJpdmF0ZSB2b2lkIG1hdGh0ZXN0KGludCB0ZXN0LGNvbS5pYm0ubWF0aC5NYXRoQ29udGV4dCBtYyxqYXZhLmxhbmcuU3RyaW5nIHNsaHMsamF2YS5sYW5nLlN0cmluZyBzcmhzLGphdmEubGFuZy5TdHJpbmcgYWRkLGphdmEubGFuZy5TdHJpbmcgc3ViLGphdmEubGFuZy5TdHJpbmcgbXVsLGphdmEubGFuZy5TdHJpbmcgZGl2LGphdmEubGFuZy5TdHJpbmcgaWR2LGphdmEubGFuZy5TdHJpbmcgcmVtLGphdmEubGFuZy5TdHJpbmcgcG93KXsKKyAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgbGhzOworICBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCByaHM7CisgIGphdmEubGFuZy5TdHJpbmcgcmVzPW51bGw7CisgIGphdmEubGFuZy5TdHJpbmcgc249bnVsbDsKKyAgaW50IGU9MDsKKyAgCisgIAorICAKKyAgbGhzPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChzbGhzKTsKKyAgcmhzPW5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChzcmhzKTsKKyAgCisgIHRyeXsKKyAgIHJlcz1saHMuYWRkKHJocyxtYykudG9TdHJpbmcoKTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDEzNyl7CisgICByZXM9IiI7CisgIH0KKyAgbWF0aHRlc3RjaGVjayh0ZXN0LGxocyxyaHMsImFkZCIscmVzLGFkZCk7CisgIAorICB0cnl7CisgICByZXM9bGhzLnN1YnRyYWN0KHJocyxtYykudG9TdHJpbmcoKTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDEzOCl7CisgICByZXM9IiI7CisgIH0KKyAgbWF0aHRlc3RjaGVjayh0ZXN0LGxocyxyaHMsInN1YiIscmVzLHN1Yik7CisgIAorICB0cnl7CisgICByZXM9bGhzLm11bHRpcGx5KHJocyxtYykudG9TdHJpbmcoKTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDEzOSl7CisgICByZXM9IiI7CisgIH0KKyAgbWF0aHRlc3RjaGVjayh0ZXN0LGxocyxyaHMsIm11bCIscmVzLG11bCk7CisgIAorICB0cnl7CisgICByZXM9bGhzLmRpdmlkZShyaHMsbWMpLnRvU3RyaW5nKCk7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxNDApeworICAgcmVzPSIiOworICB9CisgIG1hdGh0ZXN0Y2hlY2sodGVzdCxsaHMscmhzLCJkaXYiLHJlcyxkaXYpOworICAKKyAgdHJ5eworICAgcmVzPWxocy5kaXZpZGVJbnRlZ2VyKHJocyxtYykudG9TdHJpbmcoKTsKKyAgfQorICBjYXRjaCAoamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24gJDE0MSl7CisgICByZXM9IiI7CisgIH0KKyAgbWF0aHRlc3RjaGVjayh0ZXN0LGxocyxyaHMsImlkdiIscmVzLGlkdik7CisgIAorICB0cnl7CisgICByZXM9bGhzLnJlbWFpbmRlcihyaHMsbWMpLnRvU3RyaW5nKCk7CisgIH0KKyAgY2F0Y2ggKGphdmEubGFuZy5Bcml0aG1ldGljRXhjZXB0aW9uICQxNDIpeworICAgcmVzPSIiOworICB9CisgIG1hdGh0ZXN0Y2hlY2sodGVzdCxsaHMscmhzLCJyZW0iLHJlcyxyZW0pOworICAKKyAgdHJ5eworICAgLy8gcHJlcGFyZSBhbiBpbnRlZ2VyIGZyb20gdGhlIHJocworICAgLy8gaW4gUmV4eDoKKyAgIC8vICAgbj1yaHMrMAorICAgLy8gICBlPXBvcygnRScsIG4pCisgICAvLyAgIGlmIGU+MCB0aGVuIG49bGVmdChuLGUtMSkKKyAgIC8vICAgbj1mb3JtYXQobiwsMCkKKyAgIAorICAgc249cmhzLnBsdXMobWMpLnRvU3RyaW5nKCk7CisgICBlPXNuLmluZGV4T2YoIkUiLDApOworICAgaWYgKGU+MCkgCisgICAgc249c24uc3Vic3RyaW5nKDAsZSk7CisgICBzbj0obmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKHNuKSkuZm9ybWF0KC0xLDApOworICAgCisgICByZXM9bGhzLnBvdyhuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoc24pLG1jKS50b1N0cmluZygpOworICB9CisgIGNhdGNoIChqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiAkMTQzKXsKKyAgIHJlcz0iIjsKKyAgfQorICBtYXRodGVzdGNoZWNrKHRlc3QsbGhzLHJocywicG93IixyZXMscG93KTsKKyAgcmV0dXJuOworICB9CisKKyAvKiBtYXRodGVzdGNoZWNrIC0tIGNoZWNrIGZvciBnZW5lcmFsIG1hdGh0ZXN0IGVycm9yCisgICAgQXJnMSAgaXMgdGVzdCBudW1iZXIKKyAgICBBcmcyICBpcyBsZWZ0IGhhbmQgc2lkZSAoTEhTKQorICAgIEFyZzMgIGlzIHJpZ2h0IGhhbmQgc2lkZSAoUkhTKQorICAgIEFyZzQgIGlzIHRoZSBvcGVyYXRpb24KKyAgICBBcmc1ICBpcyB0aGUgYWN0dWFsIHJlc3VsdAorICAgIEFyZzYgIGlzIHRoZSBleHBlY3RlZCByZXN1bHQKKyAgICBTaG93IGVycm9yIG1lc3NhZ2UgaWYgYSBwcm9ibGVtLCBvdGhlcndpc2UgcmV0dXJuIHF1aWV0bHkKKyAgICAqLworIAorIHByaXZhdGUgdm9pZCBtYXRodGVzdGNoZWNrKGludCB0ZXN0LGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIGxocyxjb20uaWJtLm1hdGguQmlnRGVjaW1hbCByaHMsamF2YS5sYW5nLlN0cmluZyBvcCxqYXZhLmxhbmcuU3RyaW5nIGdvdCxqYXZhLmxhbmcuU3RyaW5nIHdhbnQpeworICBib29sZWFuIGZsYWc7CisgIGphdmEubGFuZy5TdHJpbmcgdGVzdG51bTsKKyAgCisgIGZsYWc9d2FudC5lcXVhbHMoKGphdmEubGFuZy5PYmplY3QpZ290KTsKKyAgCisgIGlmICgoIWZsYWcpKSAKKyAgIHNheSgiPiIrdGVzdCsiPiIrIiAiK2xocy50b1N0cmluZygpKyIgIitvcCsiICIrcmhzLnRvU3RyaW5nKCkrIiAiKyI9IisiICIrd2FudCsiICIrIltnb3QiKyIgIitnb3QrIl0iKTsKKyAgCisgIHRlc3RudW09ImdlbiIrcmlnaHQoKG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCh0ZXN0KzEwMDApKS50b1N0cmluZygpLDMpOworICAKKyAgKG5ldyBUZXN0KHRlc3RudW0pKS5vaz1mbGFnOworICByZXR1cm47CisgIH0KKworIAorIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qIFN1cHBvcnQgcm91dGluZXMgYW5kIG1pbm9yIGNsYXNzZXMgZm9sbG93ICAgICAgICAgICAgICAgICAgICAgICAgICAqLworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIAorIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogTWV0aG9kIGNhbGxlZCB0byBzdW1tYXJpc2UgcGVuZGluZyB0ZXN0cyAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qIEFyZzEgaXMgc2VjdGlvbiBuYW1lICovCisgCisgcHJpdmF0ZSB2b2lkIHN1bW1hcnkoamF2YS5sYW5nLlN0cmluZyBzZWN0aW9uKXsKKyAgaW50IGJhZDsKKyAgaW50IGNvdW50OworICBpbnQgaT0wOworICBUZXN0IGl0ZW09bnVsbDsKKyAgYmFkPTA7CisgIGNvdW50PVRlc3RzLnNpemUoKTsKKyAge2ludCAkMTQ0PWNvdW50O2k9MDtpOmZvcig7JDE0ND4wOyQxNDQtLSxpKyspeworICAgaXRlbT0oVGVzdCkoVGVzdHMuZWxlbWVudEF0KGkpKTsKKyAgIGlmICgoIWl0ZW0ub2spKSAKKyAgICB7CisgICAgIGJhZCsrOworICAgICBzYXkoIkZhaWxlZDoiKyIgIitpdGVtLm5hbWUpOworICAgIH0KKyAgIH0KKyAgfS8qaSovCisgIHRvdGFsY291bnQ9dG90YWxjb3VudCtjb3VudDsKKyAgVGVzdHM9bmV3IGphdmEudXRpbC5WZWN0b3IoMTAwKTsgLy8gcmVpbml0aWFsaXplCisgIGlmIChiYWQ9PTApIAorICAgc2F5KCJPSyIrIiAiK2xlZnQoc2VjdGlvbiwxNCkrIiAiK3JpZ2h0KCJbIitjb3VudCsiICIrInRlc3RzXSIsMTIpKTsKKyAgZWxzZSAKKyAgIHRocm93IG5ldyBEaWFnRXhjZXB0aW9uKHNlY3Rpb24rIiAiKyJbZmFpbGVkIisiICIrYmFkKyIgIisib2YiKyIgIitjb3VudCsiICIrInRlc3RzXSIsYmFkKTsKKyAgcmV0dXJuO30KKworIAorIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogcmlnaHQgLSBVdGlsaXR5IHRvIGRvIGEgJ3JpZ2h0JyBvbiBhIEphdmEgU3RyaW5nICAgICAgICAgICAgICAgICAgKi8KKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qIEFyZzEgaXMgc3RyaW5nIHRvIHJpZ2h0LWp1c3RpZnkgKi8KKyAvKiBBcmcyIGlzIGRlc2lyZWQgbGVuZ3RoICovCisgCisgcHJpdmF0ZSBzdGF0aWMgamF2YS5sYW5nLlN0cmluZyByaWdodChqYXZhLmxhbmcuU3RyaW5nIHMsaW50IGxlbil7CisgIGludCBzbGVuOworICBzbGVuPXMubGVuZ3RoKCk7CisgIGlmIChzbGVuPT1sZW4pIAorICAgcmV0dXJuIHM7IC8vIGxlbmd0aCBqdXN0IHJpZ2h0CisgIGlmIChzbGVuPmxlbikgCisgICByZXR1cm4gcy5zdWJzdHJpbmcoc2xlbi1sZW4pOyAvLyB0cnVuY2F0ZSBvbiBsZWZ0CisgIC8vIHRvbyBzaG9ydAorICByZXR1cm4gKG5ldyBqYXZhLmxhbmcuU3RyaW5nKG5ldyBjaGFyW2xlbi1zbGVuXSkpLnJlcGxhY2UoJ1wwMDAnLCcgJykuY29uY2F0KHMpOworICB9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qIGxlZnQgLSBVdGlsaXR5IHRvIGRvIGEgJ2xlZnQnIG9uIGEgSmF2YSBTdHJpbmcgICAgICAgICAgICAgICAgICAgICovCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAvKiBBcmcxIGlzIHN0cmluZyB0byBsZWZ0LWp1c3RpZnkgKi8KKyAvKiBBcmcyIGlzIGRlc2lyZWQgbGVuZ3RoICovCisgCisgcHJpdmF0ZSBzdGF0aWMgamF2YS5sYW5nLlN0cmluZyBsZWZ0KGphdmEubGFuZy5TdHJpbmcgcyxpbnQgbGVuKXsKKyAgaW50IHNsZW47CisgIHNsZW49cy5sZW5ndGgoKTsKKyAgaWYgKHNsZW49PWxlbikgCisgICByZXR1cm4gczsgLy8gbGVuZ3RoIGp1c3QgcmlnaHQKKyAgaWYgKHNsZW4+bGVuKSAKKyAgIHJldHVybiBzLnN1YnN0cmluZygwLGxlbik7IC8vIHRydW5jYXRlIG9uIHJpZ2h0CisgIC8vIHRvbyBzaG9ydAorICByZXR1cm4gcy5jb25jYXQoKG5ldyBqYXZhLmxhbmcuU3RyaW5nKG5ldyBjaGFyW2xlbi1zbGVuXSkpLnJlcGxhY2UoJ1wwMDAnLCcgJykpOworICB9CisKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qIHNheSAtIFV0aWxpdHkgdG8gZG8gYSBkaXNwbGF5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKyAvKiBBcmcxIGlzIHN0cmluZyB0byBkaXNwbGF5LCBvbWl0dGVkIGlmIG5vbmUgKi8KKyAvKiAgICAgICAgIFtudWxsIG9yIG9taXR0ZWQgZ2l2ZXMgYmxhbmsgbGluZV0gKi8KKyAvLyB0aGlzIHZlcnNpb24gZG9lc24ndCBoZWVkIGNvbnRpbnVhdGlvbiBmaW5hbCBjaGFyYWN0ZXIKKyAKKyBwcml2YXRlIHN0YXRpYyB2b2lkIHNheSgpeworICBzYXkoKGphdmEubGFuZy5TdHJpbmcpbnVsbCk7cmV0dXJuOworICB9CisgcHJpdmF0ZSBzdGF0aWMgdm9pZCBzYXkoamF2YS5sYW5nLlN0cmluZyBzKXsKKyAgaWYgKHM9PW51bGwpIAorICAgcz0iIjsKKyAgamF2YS5sYW5nLlN5c3RlbS5vdXQucHJpbnRsbihzKTsKKyAgcmV0dXJuO30KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisgLyogU2NhZmZvbGRpbmcgZm9yIHN0YW5kLWFsb25lIHJ1biAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qKiBFbnRyeSBwb2ludCBmb3Igc3RhbmQtYWxvbmUgcnVuLiAgSXQgY29uc3RydWN0cyBhCisgICogIDxjb2RlPkRpYWdCaWdEZWNpbWFsPC9jb2RlPiBvYmplY3QgYW5kIHRoZW4gaW52b2tlcyBpdHMKKyAgKiAge0BsaW5rICNkaWFncnVuKGJvb2xlYW4pfSBtZXRob2QgdG8gcnVuIHRoZSB0ZXN0CisgICogIHN1aXRlLgorICAqCisgICogQHBhcmFtIGFyZ3MgVGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudCBzdHJpbmcgYXJyYXkuCisgICogICBpZiB0aGUgZmlyc3Qgd29yZCBpcyAnPGNvZGU+Y29udGludWU8L2NvZGU+JyB0aGVuIHRyeSBhbmQgcnVuCisgICogICBhbGwgdGVzdHMsIG90aGVyd2lzZSBzdG9wIGFmdGVyIHRoZSBmaXJzdCBmYWlsaW5nIHRlc3QgZ3JvdXAuCisgICovCisgCisgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oamF2YS5sYW5nLlN0cmluZyBhcmdzW10peworICBib29sZWFuICRjb250aW51ZTsKKyAgRGlhZ0JpZ0RlY2ltYWwgZGJkOworICBpbnQgZmFpbHM7CisgICRjb250aW51ZT1mYWxzZTsKKyAgaWYgKGFyZ3MubGVuZ3RoPjApIAorICAgJGNvbnRpbnVlPWFyZ3NbMF0uZXF1YWxzKCJjb250aW51ZSIpOworICBkYmQ9bmV3IERpYWdCaWdEZWNpbWFsKCk7IC8vIG1ha2UgdGhlIHJ1bm5lcgorICBmYWlscz1kYmQuZGlhZ3J1bigkY29udGludWUpOyAvLyBhbmQgcnVuIHRoZSB0ZXN0cworICBpZiAoZmFpbHM9PTApIAorICAge1N5c3RlbS5leGl0KDApO3JldHVybjt9CisgIHtTeXN0ZW0uZXhpdCgxKTtyZXR1cm47fQorICB9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogVGVzdCAtLSByZXByZXNlbnRzIGEgdGVzdCBhbmQgaXRzIHN0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMTk5OCwgMjAwMC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgICAgICAqLworLyogQXV0aG9yOiBNaWtlIENvd2xpc2hhdyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIDE5OTguMDcuMTUgSW5pdGlhbCB2ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyogMjAwMC4wMy4yNyBDaGFuZ2UgdG8gamF2YWRvYyBjb21tZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisKKy8qKgorICogVGhlIDxjb2RlPlRlc3Q8L2NvZGU+IGNsYXNzIGlzIHVzZWQgdG8gcmVjb3JkIGEgc3BlY2lmaWMgdGVzdC4KKyAqIFdoZW4gY29uc3RydWN0ZWQsIGl0IG5vdGVzIHRoZSBuYW1lIG9mIHRoZSB0ZXN0IGFuZCBhZGRzIHRoZSB0ZXN0CisgKiB0byB0aGUgbGlzdCBvZiB0ZXN0cyBoZWxkIGJ5IHRoZSBwYXJlbnQuCisgKgorICogSXRzIDxjb2RlPm9rPC9mbGFnPiBpcyBhc3NpZ25lZCBkaXJlY3RseSB0byByZWNvcmQgd2hldGhlciB0aGUKKyAqIHRlc3Qgc3VjY2VlZGVkICgxKSBvciBmYWlsZWQgKDApLgorICoKKyAqIEBzZWUgICAgIGNvbS5pYm0ubWF0aC5EaWFnQmlnRGVjaW1hbAorICogQHZlcnNpb24gMS4wMCAyMDAwLjAzLjI3CisgKiBAYXV0aG9yICBNaWtlIENvd2xpc2hhdworICovCisgCisgcHVibGljIGNsYXNzIFRlc3R7CisgIHByaXZhdGUgZmluYWwgdHJhbnNpZW50IGphdmEubGFuZy5TdHJpbmcgJDA9IkRpYWdCaWdEZWNpbWFsLm5yeCI7CisgIC8qIHByb3BlcnRpZXMgc2hhcmVkIHRyYW5zaWVudCAqLworIC8qKiBUaGUgbmFtZSBvZiB0aGUgdGVzdC4gKi8KKyAgdHJhbnNpZW50IGphdmEubGFuZy5TdHJpbmcgbmFtZTsKKyAvKiogU3VjY2VzcyBmbGFnOyB3aWxsIGJlIHNldCB0byAxICh0cnVlKSBpZiB0aGUgdGVzdCBzdWNjZWVkZWQsIG9yIDAKKyAgKiAoZmFsc2UpIGlmIHRoZSB0ZXN0IGZhaWxlZC4KKyAgKi8KKyAgdHJhbnNpZW50IGJvb2xlYW4gb2s7CisKKyAKKyAvKioKKyAgKiBDb25zdHJ1Y3RzIGEgbmV3IDxjb2RlPlRlc3Q8L2NvZGU+IHdpdGggYSBzcGVjaWZpZWQgbmFtZS4KKyAgKgorICAqIEBwYXJhbSB0ZXN0bmFtZSBUaGUgPGNvZGU+U3RyaW5nPC9jb2RlPiBuYW1pbmcgdGhlIHRlc3QuCisgICovCisgIAorICBwdWJsaWMgVGVzdChqYXZhLmxhbmcuU3RyaW5nIHRlc3RuYW1lKXtzdXBlcigpOworICAgbmFtZT10ZXN0bmFtZTsgLy8gc2F2ZSB0aGUgbmFtZQorICAgRGlhZ0JpZ0RlY2ltYWwudGhpcy5UZXN0cy5hZGRFbGVtZW50KChqYXZhLmxhbmcuT2JqZWN0KXRoaXMpOyAvLyBhbmQgYWRkIHRvIHBhcmVudCdzIGxpc3QKKyAgIHJldHVybjt9CisgIH0KKworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qIERpYWdFeGNlcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMTk5NiwgMjAwMC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICAgICAgICAqLworIC8qIEF1dGhvcjogTWlrZSBDb3dsaXNoYXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworIC8qIDE5OTYuMDUuMjcgSW5pdGlhbCB2ZXJzaW9uIGluIE5ldFJleHggKGFzIERpYWdYKSAgICAgICAgICAgICAgICAgICAqLworIC8qIDE5OTguMDYuMjUgQ29waWVkIGZyb20gTmV0UmV4eCB0ZXN0IHN1aXRlICAgICAgICAgICAgICAgICAgICAgICAgICAqLworIC8qIDE5OTkuMDcuMDMgQWRkIGZhaWwgY291bnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworIC8qIDIwMDAuMDMuMjcgQ2hhbmdlIHRvIGphdmFkb2MgY29tbWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworIAorIC8qKgorICAqIFRoZSA8Y29kZT5EaWFnRXhjZXB0aW9uPC9jb2RlPiBjbGFzcyBpcyB1c2VkIHRvIHNpZ25hbCB0aGUgZmFpbHVyZQorICAqIG9mIGEgdGVzdCBncm91cC4gIEl0IHJlY29yZHMgdGhlIG51bWJlciBvZiBmYWlsdXJlcyBpbiB0aGUgZ3JvdXAuCisgICoKKyAgKiBAc2VlICAgICBjb20uaWJtLm1hdGguRGlhZ0JpZ0RlY2ltYWwKKyAgKiBAdmVyc2lvbiAxLjAwIDIwMDAuMDMuMjcKKyAgKiBAYXV0aG9yICBNaWtlIENvd2xpc2hhdworICAqLworIAorIHB1YmxpYyBzdGF0aWMgY2xhc3MgRGlhZ0V4Y2VwdGlvbiBleHRlbmRzIGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9ueworICBwcml2YXRlIGZpbmFsIHRyYW5zaWVudCBqYXZhLmxhbmcuU3RyaW5nICQwPSJEaWFnQmlnRGVjaW1hbC5ucngiOworIAorICAvKiBwcm9wZXJ0aWVzIHNoYXJlZCB0cmFuc2llbnQgKi8KKyAvKiogdGhlIGNvdW50IG9mIGZhaWxlZCB0ZXN0cyBpbiB0aGUgZ3JvdXAgd2hpY2ggc2lnbmFsbGVkIHRoaXMKKyAgICogZXhjZXB0aW9uLgorICAgKi8KKyAgdHJhbnNpZW50IGludCBmYWlsY291bnQ9MDsKKyAvLyBudW1iZXIgb2YgdGVzdHMgd2hpY2ggZmFpbGVkCisgCisgLyoqCisgICogQ29uc3RydWN0cyBhIG5ldyA8Y29kZT5EaWFnRXhjZXB0aW9uPC9jb2RlPiB3aXRoIGEgbWVzc2FnZSBhbmQKKyAgKiBmYWlsdXJlIGNvdW50LiAgVGhpcyBpcyB0aHJvd24gd2hlbiBhIGdyb3VwIG9mIHRlc3RzIGZhaWxzLgorICAqCisgICogQHBhcmFtIG1lc3NhZ2UgVGhlIDxjb2RlPlN0cmluZzwvY29kZT4gbWVzc2FnZSBkZXNjcmliaW5nIHRoZSBncm91cC4KKyAgKiBAcGFyYW0gZmFpbHMgICBUaGUgPGNvZGU+aW50PC9jb2RlPiBudW1iZXIgb2YgZmFpbGVkIHRlc3RzIGluIHRoZSAgZ3JvdXAuCisgICovCisgIAorICBwdWJsaWMgRGlhZ0V4Y2VwdGlvbihqYXZhLmxhbmcuU3RyaW5nIG1lc3NhZ2UsaW50IGZhaWxzKXsKKyAgIHN1cGVyKG1lc3NhZ2UpOworICAgZmFpbGNvdW50PWZhaWxzOworICAgcmV0dXJuO30KKyB9fQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGVzdC9ibmYvQmlnTnVtYmVyRm9ybWF0VGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vdGVzdC9ibmYvQmlnTnVtYmVyRm9ybWF0VGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmNlNTllNzcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXN0L2JuZi9CaWdOdW1iZXJGb3JtYXRUZXN0LmphdmEKQEAgLTAsMCArMSwzOTggQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3Rlc3QvYm5mL0F0dGljL0JpZ051bWJlckZvcm1hdFRlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8xMi8wNiAwMDowMToyNyAkIAorICogJFJldmlzaW9uOiAxLjkgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udGVzdC5ibmY7CisKK2ltcG9ydCBjb20uaWJtLnRlc3QuKjsKK2ltcG9ydCBjb20uaWJtLnRleHQuKjsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VFeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLio7CitpbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CitpbXBvcnQgY29tLmlibS51dGlsLlV0aWxpdHk7CisKKy8qKgorICogQHRlc3QKKyAqIEdlbmVyYWwgdGVzdCBvZiBCaWcgTnVtYmVyRm9ybWF0CisgKi8KK3B1YmxpYyBjbGFzcyBCaWdOdW1iZXJGb3JtYXRUZXN0IGV4dGVuZHMgVGVzdEZtd2sgeworCisgICAgc3RhdGljIGZpbmFsIGludCBJTExFR0FMID0gLTE7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IEJpZ051bWJlckZvcm1hdFRlc3QoKS5ydW4oYXJncyk7CisgICAgfQorICAgIAkKKyAgICBwdWJsaWMgdm9pZCBUZXN0RXhwb25lbnQoKSB7CisgICAgICAgIERlY2ltYWxGb3JtYXRTeW1ib2xzIFVTID0gbmV3IERlY2ltYWxGb3JtYXRTeW1ib2xzKExvY2FsZS5VUyk7CisgICAgICAgIERlY2ltYWxGb3JtYXQgZm10MSA9IG5ldyBEZWNpbWFsRm9ybWF0KCIwLiMjI0UwIiwgVVMpOworICAgICAgICBEZWNpbWFsRm9ybWF0IGZtdDIgPSBuZXcgRGVjaW1hbEZvcm1hdCgiMC4jIyNFKzAiLCBVUyk7CisgICAgICAgIE51bWJlciBuID0gbmV3IExvbmcoMTIzNCk7CisgICAgICAgIGV4cGVjdChmbXQxLCBuLCAiMS4yMzRFMyIpOworICAgICAgICBleHBlY3QoZm10MiwgbiwgIjEuMjM0RSszIik7CisgICAgICAgIGV4cGVjdChmbXQxLCAiMS4yMzRFMyIsIG4pOworICAgICAgICBleHBlY3QoZm10MSwgIjEuMjM0RSszIiwgbik7IC8vIEVpdGhlciBmb3JtYXQgc2hvdWxkIHBhcnNlICJFKzMiCisgICAgICAgIGV4cGVjdChmbXQyLCAiMS4yMzRFKzMiLCBuKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IHRoZSBmdW5jdGlvbmluZyBvZiB0aGUgc2Vjb25kYXJ5IGdyb3VwaW5nIHZhbHVlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RTZWNvbmRhcnlHcm91cGluZygpIHsKKyAgICAgICAgRGVjaW1hbEZvcm1hdFN5bWJvbHMgVVMgPSBuZXcgRGVjaW1hbEZvcm1hdFN5bWJvbHMoTG9jYWxlLlVTKTsKKyAgICAgICAgRGVjaW1hbEZvcm1hdCBmID0gbmV3IERlY2ltYWxGb3JtYXQoIiMsIyMsIyMjIiwgVVMpOworICAgICAgICBleHBlY3QoZiwgbmV3IExvbmcoMTIzNDU2Nzg5KSwgIjEyLDM0LDU2LDc4OSIpOworICAgICAgICBleHBlY3RQYXQoZiwgIiMsIyMsIyMjIik7CisgICAgICAgIGYuYXBwbHlQYXR0ZXJuKCIjLCMjIyIpOworICAgICAgICBmLnNldFNlY29uZGFyeUdyb3VwaW5nU2l6ZSg0KTsKKyAgICAgICAgZXhwZWN0KGYsIG5ldyBMb25nKDEyMzQ1Njc4OSksICIxMiwzNDU2LDc4OSIpOworICAgICAgICBleHBlY3RQYXQoZiwgIiMsIyMjIywjIyMiKTsKKworICAgICAgICAvLyBPbiBTdW4gSkRLIDEuMi0xLjMsIHRoZSBoaV9JTiBsb2NhbGUgdXNlcyAnMCcgZm9yIGEgemVybyBkaWdpdCwKKyAgICAgICAgLy8gYnV0IG9uIElCTSBKREsgMS4yLTEuMywgdGhlIGxvY2FsZSB1c2VzIFUrMDk2Ni4KKyAgICAgICAgZiA9IChEZWNpbWFsRm9ybWF0KSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UobmV3IExvY2FsZSgiaGkiLCAiSU4iKSk7CisgICAgICAgIFN0cmluZyBzdHIgPSB0cmFuc211dGUoIjEsODcsNjUsNDMsMjEwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLmdldERlY2ltYWxGb3JtYXRTeW1ib2xzKCkuZ2V0WmVyb0RpZ2l0KCkpOworICAgICAgICBleHBlY3QoZiwgbmV3IExvbmcoMTg3NjU0MzIxMCksIHN0cik7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGV4cGVjdFBhZChEZWNpbWFsRm9ybWF0IGZtdCwgU3RyaW5nIHBhdCwgaW50IHBvcykgeworICAgICAgICBleHBlY3RQYWQoZm10LCBwYXQsIHBvcywgMCwgKGNoYXIpMCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGV4cGVjdFBhZChEZWNpbWFsRm9ybWF0IGZtdCwgU3RyaW5nIHBhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwb3MsIGludCB3aWR0aCwgY2hhciBwYWQpIHsKKyAgICAgICAgaW50IGFwb3MgPSAwLCBhd2lkdGggPSAwOworICAgICAgICBjaGFyIGFwYWQgPSAwOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZm10LmFwcGx5UGF0dGVybihwYXQpOworICAgICAgICAgICAgYXBvcyA9IGZtdC5nZXRQYWRQb3NpdGlvbigpOworICAgICAgICAgICAgYXdpZHRoID0gZm10LmdldEZvcm1hdFdpZHRoKCk7CisgICAgICAgICAgICBhcGFkID0gZm10LmdldFBhZENoYXJhY3RlcigpOworICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgYXBvcyA9IC0xOworICAgICAgICAgICAgYXdpZHRoID0gd2lkdGg7CisgICAgICAgICAgICBhcGFkID0gcGFkOworICAgICAgICB9CisgICAgICAgIGlmIChhcG9zID09IHBvcyAmJiBhd2lkdGggPT0gd2lkdGggJiYgYXBhZCA9PSBwYWQpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJPayAgIFwiIiArIHBhdCArICJcIiBwb3M9IiArIGFwb3MgKworICAgICAgICAgICAgICAgICAgKChwb3MgPT0gLTEpID8gIiIgOiAiIHdpZHRoPSIgKyBhd2lkdGggKyAiIHBhZD0iICsgYXBhZCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9nbG4oIkZBSUwgXCIiICsgcGF0ICsgIlwiIHBvcz0iICsgYXBvcyArCisgICAgICAgICAgICAgICAgICAiIHdpZHRoPSIgKyBhd2lkdGggKyAiIHBhZD0iICsgYXBhZCArCisgICAgICAgICAgICAgICAgICAiLCBleHBlY3RlZCAiICsgcG9zICsgIiAiICsgd2lkdGggKyAiICIgKyBwYWQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFBhdHRlcm5zKCkgeworICAgICAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyBVUyA9IG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scyhMb2NhbGUuVVMpOworICAgICAgICBEZWNpbWFsRm9ybWF0IGZtdCA9IG5ldyBEZWNpbWFsRm9ybWF0KCIjIiwgVVMpOworCisgICAgICAgIGV4cGVjdFBhZChmbXQsICIqXiMiLCBEZWNpbWFsRm9ybWF0LlBBRF9CRUZPUkVfUFJFRklYLCAxLCAnXicpOworICAgICAgICBleHBlY3RQYWQoZm10LCAiJCpeIyIsIERlY2ltYWxGb3JtYXQuUEFEX0FGVEVSX1BSRUZJWCwgMiwgJ14nKTsKKyAgICAgICAgZXhwZWN0UGFkKGZtdCwgIiMqXiIsIERlY2ltYWxGb3JtYXQuUEFEX0JFRk9SRV9TVUZGSVgsIDEsICdeJyk7CisgICAgICAgIGV4cGVjdFBhZChmbXQsICIjJCpeIiwgRGVjaW1hbEZvcm1hdC5QQURfQUZURVJfU1VGRklYLCAyLCAnXicpOworICAgICAgICBleHBlY3RQYWQoZm10LCAiJCpeJCMiLCBJTExFR0FMKTsKKyAgICAgICAgZXhwZWN0UGFkKGZtdCwgIiMkKl4kIiwgSUxMRUdBTCk7CisgICAgICAgIGV4cGVjdFBhZChmbXQsICIncHJlJyMsIyMwKngncG9zdCciLCBEZWNpbWFsRm9ybWF0LlBBRF9CRUZPUkVfU1VGRklYLAorICAgICAgICAgICAgICAgICAgMTIsICd4Jyk7CisgICAgICAgIGV4cGVjdFBhZChmbXQsICInJyMwKngiLCBEZWNpbWFsRm9ybWF0LlBBRF9CRUZPUkVfU1VGRklYLAorICAgICAgICAgICAgICAgICAgMywgJ3gnKTsKKyAgICAgICAgZXhwZWN0UGFkKGZtdCwgIidJJydsbCcqYSMjIy4jIyIsIERlY2ltYWxGb3JtYXQuUEFEX0FGVEVSX1BSRUZJWCwKKyAgICAgICAgICAgICAgICAgIDEwLCAnYScpOworCisgICAgICAgIGZtdC5hcHBseVBhdHRlcm4oIkFBIywjIzAuMDBaWiIpOworICAgICAgICBmbXQuc2V0UGFkQ2hhcmFjdGVyKCdeJyk7CisKKyAgICAgICAgZm10LnNldEZvcm1hdFdpZHRoKDEwKTsKKworICAgICAgICBmbXQuc2V0UGFkUG9zaXRpb24oRGVjaW1hbEZvcm1hdC5QQURfQkVGT1JFX1BSRUZJWCk7CisgICAgICAgIGV4cGVjdFBhdChmbXQsICIqXkFBIywjIzAuMDBaWiIpOworCisgICAgICAgIGZtdC5zZXRQYWRQb3NpdGlvbihEZWNpbWFsRm9ybWF0LlBBRF9CRUZPUkVfU1VGRklYKTsKKyAgICAgICAgZXhwZWN0UGF0KGZtdCwgIkFBIywjIzAuMDAqXlpaIik7CisKKyAgICAgICAgZm10LnNldFBhZFBvc2l0aW9uKERlY2ltYWxGb3JtYXQuUEFEX0FGVEVSX1NVRkZJWCk7CisgICAgICAgIGV4cGVjdFBhdChmbXQsICJBQSMsIyMwLjAwWloqXiIpOworCisgICAgICAgIC8vICAgICAgICAgICAgMTIgIDM0NTY3ODkwMTIKKyAgICAgICAgU3RyaW5nIGV4cCA9ICJBQSpeIywjIzAuMDBaWiI7CisgICAgICAgIGZtdC5zZXRGb3JtYXRXaWR0aCgxMik7CisgICAgICAgIGZtdC5zZXRQYWRQb3NpdGlvbihEZWNpbWFsRm9ybWF0LlBBRF9BRlRFUl9QUkVGSVgpOworICAgICAgICBleHBlY3RQYXQoZm10LCBleHApOworCisgICAgICAgIGZtdC5zZXRGb3JtYXRXaWR0aCgxMyk7CisgICAgICAgIC8vICAgICAgICAgICAgICAxMiAgMzQ1Njc4OTAxMjMKKyAgICAgICAgZXhwZWN0UGF0KGZtdCwgIkFBKl4jIywjIzAuMDBaWiIpOworCisgICAgICAgIGZtdC5zZXRGb3JtYXRXaWR0aCgxNCk7CisgICAgICAgIC8vICAgICAgICAgICAgICAxMiAgMzQ1Njc4OTAxMjM0CisgICAgICAgIGV4cGVjdFBhdChmbXQsICJBQSpeIyMjLCMjMC4wMFpaIik7CisKKyAgICAgICAgZm10LnNldEZvcm1hdFdpZHRoKDE1KTsKKyAgICAgICAgLy8gICAgICAgICAgICAgIDEyICAzNDU2Nzg5MDEyMzQ1CisgICAgICAgIGV4cGVjdFBhdChmbXQsICJBQSpeIyMjIywjIzAuMDBaWiIpOyAvLyBUaGlzIGlzIHRoZSBpbnRlcmVzdGluZyBjYXNlCisKKyAgICAgICAgZm10LnNldEZvcm1hdFdpZHRoKDE2KTsKKyAgICAgICAgLy8gICAgICAgICAgICAgIDEyICAzNDU2Nzg5MDEyMzQ1NgorICAgICAgICBleHBlY3RQYXQoZm10LCAiQUEqXiMsIyMjLCMjMC4wMFpaIik7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGV4cGVjdFBhdChEZWNpbWFsRm9ybWF0IGZtdCwgU3RyaW5nIGV4cCkgeworICAgICAgICBTdHJpbmcgcGF0ID0gZm10LnRvUGF0dGVybigpOworICAgICAgICBpZiAocGF0LmVxdWFscyhleHApKSB7CisgICAgICAgICAgICBsb2dsbigiT2sgICBcIiIgKyBwYXQgKyAnIicpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oIkZBSUwgXCIiICsgcGF0ICsgIlwiLCBleHBlY3RlZCBcIiIgKyBleHAgKyAnIicpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgaGFuZGxpbmcgb2YgdGhlIEFscGhhV29ya3MgQmlnRGVjaW1hbAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RBbHBoYUJpZ0RlY2ltYWwoKSB7CisgICAgICAgIERlY2ltYWxGb3JtYXRTeW1ib2xzIFVTID0gbmV3IERlY2ltYWxGb3JtYXRTeW1ib2xzKExvY2FsZS5VUyk7CisgICAgICAgIGV4cGVjdChOdW1iZXJGb3JtYXQuZ2V0U2NpZW50aWZpY0luc3RhbmNlKExvY2FsZS5VUyksCisgICAgICAgICAgICAgICBuZXcgTnVtYmVyW10geyBuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1LjY3ODkwMSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICIxLjIzNDU2OEU0Iik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdCgiIyMwLiMjIyNFMCIsIFVTKSwKKyAgICAgICAgICAgICAgIG5ldyBOdW1iZXJbXSB7IG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNDk5OSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKCIxMjM0NC41MDAxIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICIxMi4zNDVFMyIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoIiMjMC4jIyMjRTAiLCBVUyksCisgICAgICAgICAgICAgICBuZXcgTnVtYmVyW10geyBuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ1LjUwMDAiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbCgiMTIzNDYuNTAwMCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAiMTIuMzQ2RTMiKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0U2NpZW50aWZpYygpIHsKKyAgICAgICAgRGVjaW1hbEZvcm1hdFN5bWJvbHMgVVMgPSBuZXcgRGVjaW1hbEZvcm1hdFN5bWJvbHMoTG9jYWxlLlVTKTsKKyAgICAgICAgZXhwZWN0KE51bWJlckZvcm1hdC5nZXRTY2llbnRpZmljSW5zdGFuY2UoTG9jYWxlLlVTKSwKKyAgICAgICAgICAgICAgIG5ldyBOdW1iZXJbXSB7IG5ldyBEb3VibGUoMTIzNDUuNjc4OTAxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNjc4OTAxIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICIxLjIzNDU2OEU0Iik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdCgiIyMwLiMjI0UwIiwgVVMpLAorICAgICAgICAgICAgICAgbmV3IERvdWJsZSgxMjM0NSksCisgICAgICAgICAgICAgICAiMTIuMzRFMyIpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoIiMjMC4jIyNFMCIsIFVTKSwKKyAgICAgICAgICAgICAgIG5ldyBEb3VibGUoMTIzNDUuMDAwMDEpLAorICAgICAgICAgICAgICAgIjEyLjM1RTMiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIjIzAuIyMjI0UwIiwgVVMpLAorICAgICAgICAgICAgICAgbmV3IE51bWJlcltdIHsgbmV3IEludGVnZXIoMTIzNDUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExvbmcoMTIzNDUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGphdmEubWF0aC5CaWdEZWNpbWFsKCIxMjM0NS40OTk5IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgamF2YS5tYXRoLkJpZ0RlY2ltYWwoIjEyMzQ0LjUwMDEiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgIjEyLjM0NUUzIik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdCgiIyMwLiMjIyNFMCIsIFVTKSwKKyAgICAgICAgICAgICAgIG5ldyBOdW1iZXJbXSB7IG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbCgiMTIzNDUuNTAwMCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGphdmEubWF0aC5CaWdEZWNpbWFsKCIxMjM0Ni41MDAwIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICIxMi4zNDZFMyIpOworICAgICAgICBleHBlY3QoTnVtYmVyRm9ybWF0LmdldFNjaWVudGlmaWNJbnN0YW5jZShMb2NhbGUuRlJBTkNFKSwKKyAgICAgICAgICAgICAgIG5ldyBEb3VibGUoMTIzNDUuNjc4OTAxKSwKKyAgICAgICAgICAgICAgICIxLDIzNDU2OEU0Iik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdCgiIyMwLiMjIyNFMCIsIFVTKSwKKyAgICAgICAgICAgICAgIG5ldyBEb3VibGUoNzg5LjEyMzQ1ZS05KSwKKyAgICAgICAgICAgICAgICI3ODkuMTJFLTkiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIjIzAuIyMjI0UwIiwgVVMpLAorICAgICAgICAgICAgICAgbmV3IERvdWJsZSg3ODAuZS05KSwKKyAgICAgICAgICAgICAgICI3ODBFLTkiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIuIyMjRTAiLCBVUyksCisgICAgICAgICAgICAgICBuZXcgRG91YmxlKDQ1Njc4KSwKKyAgICAgICAgICAgICAgICIuNDU3RTUiKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIuIyMjRTAiLCBVUyksCisgICAgICAgICAgICAgICBuZXcgTG9uZygwKSwKKyAgICAgICAgICAgICAgICIuMEUwIik7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdFtdIHsgbmV3IERlY2ltYWxGb3JtYXQoIiNFMCIsIFVTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGVjaW1hbEZvcm1hdCgiIyNFMCIsIFVTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGVjaW1hbEZvcm1hdCgiIyMjI0UwIiwgVVMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZWNpbWFsRm9ybWF0KCIwRTAiLCBVUyksICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZWNpbWFsRm9ybWF0KCIwMEUwIiwgVVMpLCAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEZWNpbWFsRm9ybWF0KCIwMDBFMCIsIFVTKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICBuZXcgTG9uZyg0NTY3ODAwMCksCisgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAiNC41Njc4RTciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjQ1LjY3OEU2IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI0NTY3LjhFNCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNUU3IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI0NkU2IiwgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjQ1N0U1IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICApOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoIiMjI0UwIiwgVVMpLAorICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsgbmV3IERvdWJsZSgwLjAwMDAxMjMpLCAiMTIuM0UtNiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRG91YmxlKDAuMDAwMTIzKSwgIjEyM0UtNiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgamF2YS5tYXRoLkJpZ0RlY2ltYWwoIjAuMDAxMjMiKSwgIjEuMjNFLTMiLCAvLyBDYWZlIFZNIG1lc3NlcyB1cCBEb3VibGUoMC4wMDEyMykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEb3VibGUoMC4wMTIzKSwgIjEyLjNFLTMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERvdWJsZSgwLjEyMyksICIxMjNFLTMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERvdWJsZSgxLjIzKSwgIjEuMjNFMCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRG91YmxlKDEyLjMpLCAiMTIuM0UwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEb3VibGUoMTIzKSwgIjEyM0UwIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEb3VibGUoMTIzMCksICIxLjIzRTMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIwLiNFKzAwIiwgVVMpLAorICAgICAgICAgICAgICAgbmV3IE9iamVjdFtdIHsgbmV3IERvdWJsZSgwLjAwMDEyKSwgIjEuMkUtMDQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IExvbmcoMTIwMDApLCAgICAgIjEuMkUrMDQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0UGFkKCkgeworICAgICAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyBVUyA9IG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scyhMb2NhbGUuVVMpOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoIipeIyMuIyMiLCBVUyksCisgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geyBuZXcgTG9uZygwKSwgICAgICAiXl5eXjAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERvdWJsZSgtMS4zKSwgIl4tMS4zIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICApOworICAgICAgICBleHBlY3QobmV3IERlY2ltYWxGb3JtYXQoIiMjMC4wIyMjI0UwKl8gZy1tL3NeMiIsIFVTKSwKKyAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IG5ldyBMb25nKDApLCAgICAgICAiMC4wRTBfX19fX18gZy1tL3NeMiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRG91YmxlKDEuMC8zKSwgIjMzMy4zMzNFLTNfIGctbS9zXjIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICk7CisgICAgICAgIGV4cGVjdChuZXcgRGVjaW1hbEZvcm1hdCgiIyMwLjAjIyMjKl8gZy1tL3NeMiIsIFVTKSwKKyAgICAgICAgICAgICAgIG5ldyBPYmplY3RbXSB7IG5ldyBMb25nKDApLCAgICAgICAiMC4wX19fX19fIGctbS9zXjIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERvdWJsZSgxLjAvMyksICIwLjMzMzMzX18gZy1tL3NeMiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgKTsKKyAgICAgICAgZXhwZWN0KG5ldyBEZWNpbWFsRm9ybWF0KCIqeCMsIyMjLCMjIywjIzAuMDA7KngoIywjIyMsIyMjLCMjMC4wMCkiLCBVUyksCisgICAgICAgICAgICAgICBuZXcgT2JqZWN0W10geworICAgICAgICAgICAgICAgICAgIG5ldyBMb25nKC0xMDApLCAgICAgICAgInh4eHh4eHh4KDEwMC4wMCkiLAorICAgICAgICAgICAgICAgICAgIG5ldyBMb25nKC0xMDAwKSwgICAgICAgInh4eHh4eCgxLDAwMC4wMCkiLAorICAgICAgICAgICAgICAgICAgIG5ldyBMb25nKC0xMDAwMDAwKSwgICAgInh4KDEsMDAwLDAwMC4wMCkiLAorICAgICAgICAgICAgICAgICAgIG5ldyBMb25nKC0xMDAwMDAwMDAwKSwgIigxLDAwMCwwMDAsMDAwLjAwKSIsCisgICAgICAgICAgICAgICB9KTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIGV4cGVjdChOdW1iZXJGb3JtYXQgZm10LCBPYmplY3RbXSBkYXRhKSB7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxkYXRhLmxlbmd0aDsgaSs9MikgeworICAgICAgICAgICAgZXhwZWN0KGZtdCwgKE51bWJlcikgZGF0YVtpXSwgKFN0cmluZykgZGF0YVtpKzFdKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgZXhwZWN0KE9iamVjdCBmbXRvLCBPYmplY3QgbnVtbywgT2JqZWN0IGV4cG8pIHsKKyAgICAgICAgTnVtYmVyRm9ybWF0IGZtdCA9IG51bGwsIGZtdHNbXSA9IG51bGw7CisgICAgICAgIE51bWJlciBudW0gPSBudWxsLCBudW1zW10gPSBudWxsOworICAgICAgICBTdHJpbmcgZXhwID0gbnVsbCwgZXhwc1tdID0gbnVsbDsKKyAgICAgICAgaWYgKGZtdG8gaW5zdGFuY2VvZiBOdW1iZXJGb3JtYXRbXSkgeworICAgICAgICAgICAgZm10cyA9IChOdW1iZXJGb3JtYXRbXSkgZm10bzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZtdCA9IChOdW1iZXJGb3JtYXQpIGZtdG87CisgICAgICAgIH0KKyAgICAgICAgaWYgKG51bW8gaW5zdGFuY2VvZiBOdW1iZXJbXSkgeworICAgICAgICAgICAgbnVtcyA9IChOdW1iZXJbXSkgbnVtbzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG51bSA9IChOdW1iZXIpIG51bW87CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4cG8gaW5zdGFuY2VvZiBTdHJpbmdbXSkgeworICAgICAgICAgICAgZXhwcyA9IChTdHJpbmdbXSkgZXhwbzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGV4cCA9IChTdHJpbmcpIGV4cG87CisgICAgICAgIH0KKyAgICAgICAgaW50IG4gPSAxOworICAgICAgICBpZiAoZm10cyAhPSBudWxsKSB7CisgICAgICAgICAgICBuID0gTWF0aC5tYXgobiwgZm10cy5sZW5ndGgpOworICAgICAgICB9CisgICAgICAgIGlmIChudW1zICE9IG51bGwpIHsKKyAgICAgICAgICAgIG4gPSBNYXRoLm1heChuLCBudW1zLmxlbmd0aCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4cHMgIT0gbnVsbCkgeworICAgICAgICAgICAgbiA9IE1hdGgubWF4KG4sIGV4cHMubGVuZ3RoKTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGludCBpPTA7IGk8bjsgKytpKSB7CisgICAgICAgICAgICBleHBlY3QoZm10cyA9PSBudWxsID8gZm10IDogZm10c1tpXSwKKyAgICAgICAgICAgICAgICAgICBudW1zID09IG51bGwgPyBudW0gOiBudW1zW2ldLAorICAgICAgICAgICAgICAgICAgIGV4cHMgPT0gbnVsbCA/IGV4cCA6IGV4cHNbaV0pOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIHNob3dOdW1iZXIoTnVtYmVyIG4pIHsKKyAgICAgICAgU3RyaW5nIGNscyA9IG4uZ2V0Q2xhc3MoKS5nZXROYW1lKCk7CisgICAgICAgIGlmICghKG4gaW5zdGFuY2VvZiBjb20uaWJtLm1hdGguQmlnRGVjaW1hbAorICAgICAgICAgICAgICB8fCBuIGluc3RhbmNlb2YgamF2YS5tYXRoLkJpZ0RlY2ltYWwpKSB7CisgICAgICAgICAgICBpbnQgaSA9IGNscy5sYXN0SW5kZXhPZignLicpOworICAgICAgICAgICAgY2xzID0gY2xzLnN1YnN0cmluZyhpKzEpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBuLnRvU3RyaW5nKCkgKyAiICgiICsgY2xzICsgJyknOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBleHBlY3QoTnVtYmVyRm9ybWF0IGZtdCwgTnVtYmVyIG4sIFN0cmluZyBleHApIHsKKyAgICAgICAgU3RyaW5nIHNhdyA9IGZtdC5mb3JtYXQobik7CisgICAgICAgIFN0cmluZyBwYXQgPSAoKERlY2ltYWxGb3JtYXQpIGZtdCkudG9QYXR0ZXJuKCk7CisgICAgICAgIGlmIChzYXcuZXF1YWxzKGV4cCkpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJPayAgICIgKyBzaG93TnVtYmVyKG4pICsgIiB4ICIgKworICAgICAgICAgICAgICAgICAgcGF0ICsgIiA9ICIgKworICAgICAgICAgICAgICAgICAgVXRpbGl0eS5lc2NhcGUoc2F3KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTCAiICsgc2hvd051bWJlcihuKSArICIgeCAiICsKKyAgICAgICAgICAgICAgICAgIHBhdCArICIgPSBcIiIgKworICAgICAgICAgICAgICAgICAgVXRpbGl0eS5lc2NhcGUoc2F3KSArICIsIGV4cGVjdGVkICIgKyBVdGlsaXR5LmVzY2FwZShleHApKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBleHBlY3QoTnVtYmVyRm9ybWF0IGZtdCwgU3RyaW5nIHN0ciwgTnVtYmVyIGV4cCkgeworICAgICAgICBOdW1iZXIgc2F3ID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHNhdyA9IGZtdC5wYXJzZShzdHIpOworICAgICAgICB9IGNhdGNoIChQYXJzZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBzYXcgPSBudWxsOworICAgICAgICB9CisgICAgICAgIFN0cmluZyBwYXQgPSAoKERlY2ltYWxGb3JtYXQpIGZtdCkudG9QYXR0ZXJuKCk7CisgICAgICAgIGlmIChzYXcuZXF1YWxzKGV4cCkpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJPayAgIFwiIiArIHN0ciArICJcIiB4ICIgKworICAgICAgICAgICAgICAgICAgcGF0ICsgIiA9ICIgKworICAgICAgICAgICAgICAgICAgc2hvd051bWJlcihzYXcpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMIFwiIiArIHN0ciArICJcIiB4ICIgKworICAgICAgICAgICAgICAgICAgcGF0ICsgIiA9ICIgKworICAgICAgICAgICAgICAgICAgc2hvd051bWJlcihzYXcpICsgIiwgZXhwZWN0ZWQgIiArIHNob3dOdW1iZXIoZXhwKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHaXZlbiBhIHN0cmluZyBjb21wb3NlZCBvZiBbMC05XSBhbmQgb3RoZXIgY2hhcnMsIGNvbnZlcnQgdGhlCisgICAgICogWzAtOV0gY2hhcnMgdG8gYmUgb2Zmc2V0cyAwLi45IGZyb20gJ3plcm8nLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyB0cmFuc211dGUoU3RyaW5nIHN0ciwgY2hhciB6ZXJvKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxzdHIubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgY2hhciBjID0gc3RyLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGlmIChjID49ICcwJyAmJiBjIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGMgPSAoY2hhcikgKGMgLSAnMCcgKyB6ZXJvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoYyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJ1Zi50b1N0cmluZygpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTYxMTAwKCkgeworICAgICAgICBOdW1iZXJGb3JtYXQgZiA9IE51bWJlckZvcm1hdC5nZXRJbnN0YW5jZSgpOworICAgICAgICBmLnNldE1pbmltdW1GcmFjdGlvbkRpZ2l0cygxKTsKKyAgICAgICAgZi5zZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoMSk7CisgICAgICAgIGRvdWJsZSBhID0gLTAuMDk7CisgICAgICAgIFN0cmluZyBzID0gZi5mb3JtYXQoYSk7CisgICAgICAgIGxvZ2xuKGEgKyAiIHggIiArCisgICAgICAgICAgICAgICgoRGVjaW1hbEZvcm1hdCkgZikudG9QYXR0ZXJuKCkgKyAiID0gIiArCisgICAgICAgICAgICAgIHMpOworICAgICAgICBpZiAoIXMuZXF1YWxzKCItMC4xIikpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMIik7CisgICAgICAgIH0KKyAgICB9ICAgICAgICAKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3QvYm5mL3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL3Rlc3QvYm5mL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42NDUyNTZlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGVzdC9ibmYvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8IS0tICBDb3B5cmlnaHQgKEMpIDIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisgIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXN0L2JuZi9BdHRpYy9wYWNrYWdlLmh0bWwsdiAkCisgICRSZXZpc2lvbjogMS4xICQKKyAgJERhdGU6IDIwMDAvMDMvMTUgMjE6MzU6NDggJAorLS0+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CitCaWdOdW1iZXJGb3JtYXQgdGVzdHMuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGVzdC9jYWxlbmRhci9Bc3Ryb1Rlc3QuamF2YSBiL3NyYy9jb20vaWJtL3Rlc3QvY2FsZW5kYXIvQXN0cm9UZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDdjYTRiOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3QvY2FsZW5kYXIvQXN0cm9UZXN0LmphdmEKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGVzdC9jYWxlbmRhci9BdHRpYy9Bc3Ryb1Rlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wNS8xMiAyMzoxOToxMiAkIAorICogJFJldmlzaW9uOiAxLjQgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udGVzdC5jYWxlbmRhcjsKKworLy8gQXN0cm9UZXN0CisKK2ltcG9ydCBjb20uaWJtLnRlc3QuKjsKK2ltcG9ydCBjb20uaWJtLnV0aWwuKjsKKworaW1wb3J0IGNvbS5pYm0udXRpbC5DYWxlbmRhckFzdHJvbm9tZXIuKjsKKworLy8gVE9ETzogdHJ5IGZpbmRpbmcgbmV4dCBuZXcgbW9vbiBhZnRlciAgMDcvMjgvMTk4NCAxNjowMCBHTVQKKworcHVibGljIGNsYXNzIEFzdHJvVGVzdCBleHRlbmRzIFRlc3RGbXdrIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IEFzdHJvVGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgZG91YmxlIFBJID0gTWF0aC5QSTsKKyAgICAKKyAgICBzdGF0aWMgR3JlZ29yaWFuQ2FsZW5kYXIgZ2MgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIobmV3IFNpbXBsZVRpbWVab25lKDAsICJVVEMiKSk7CisgICAgc3RhdGljIENhbGVuZGFyQXN0cm9ub21lciBhc3RybyA9IG5ldyBDYWxlbmRhckFzdHJvbm9tZXIoKTsKKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0U29sYXJMb25naXR1ZGUoKSB7CisgICAgICAgIGZpbmFsIGRvdWJsZSB0ZXN0c1tdW10gPSB7CisgICAgICAgICAgICB7IDE5ODAsIDcsIDI3LCAwMCwgMDAsIDEyNC4xMTQzNDcgfSwKKyAgICAgICAgICAgIHsgMTk4OCwgNywgMjcsIDAwLCAwMCwgMTI0LjE4NzczMiB9LAorICAgICAgICB9OworICAgICAgICBsb2dsbigiIik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGdjLmNsZWFyKCk7CisgICAgICAgICAgICBnYy5zZXQoKGludCl0ZXN0c1tpXVswXSwgKGludCl0ZXN0c1tpXVsxXS0xLCAoaW50KXRlc3RzW2ldWzJdLCAoaW50KXRlc3RzW2ldWzNdLCAoaW50KSB0ZXN0c1tpXVs0XSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGFzdHJvLnNldERhdGUoZ2MuZ2V0VGltZSgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZG91YmxlIGxvbmdpdHVkZSA9IGFzdHJvLmdldFN1bkxvbmdpdHVkZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBFcXVhdG9yaWFsIHJlc3VsdCA9IGFzdHJvLmdldFN1blBvc2l0aW9uKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdEx1bmFyUG9zaXRpb24oKSB7CisgICAgICAgIGZpbmFsIGRvdWJsZSB0ZXN0c1tdW10gPSB7CisgICAgICAgICAgICB7IDE5NzksIDIsIDI2LCAxNiwgMDAsICAwLCAwIH0sCisgICAgICAgIH07CisgICAgICAgIGxvZ2xuKCIiKTsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGdjLmNsZWFyKCk7CisgICAgICAgICAgICBnYy5zZXQoKGludCl0ZXN0c1tpXVswXSwgKGludCl0ZXN0c1tpXVsxXS0xLCAoaW50KXRlc3RzW2ldWzJdLCAoaW50KXRlc3RzW2ldWzNdLCAoaW50KSB0ZXN0c1tpXVs0XSk7CisgICAgICAgICAgICBhc3Ryby5zZXREYXRlKGdjLmdldFRpbWUoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEVxdWF0b3JpYWwgcmVzdWx0ID0gYXN0cm8uZ2V0TW9vblBvc2l0aW9uKCk7CisgICAgICAgIH0KKworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0Q29vcmRpbmF0ZXMoKSB7CisgICAgICAgIEVxdWF0b3JpYWwgcmVzdWx0ID0gYXN0cm8uZWNsaXB0aWNUb0VxdWF0b3JpYWwoMTM5LjY4NjExMSAqIFBJLyAxODAuMCwgNC44NzUyNzgqIFBJIC8gMTgwLjApOworICAgICAgICBsb2dsbigicmVzdWx0IGlzICIgKyByZXN1bHQgKyAiOyAgIiArIHJlc3VsdC50b0htc1N0cmluZygpKTsKKyAgICB9CisgICAgCit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXN0L2NhbGVuZGFyL0NhbGVuZGFyUmVncmVzc2lvbi5qYXZhIGIvc3JjL2NvbS9pYm0vdGVzdC9jYWxlbmRhci9DYWxlbmRhclJlZ3Jlc3Npb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43NzhiYzQ4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGVzdC9jYWxlbmRhci9DYWxlbmRhclJlZ3Jlc3Npb24uamF2YQpAQCAtMCwwICsxLDE3MjIgQEAKK3BhY2thZ2UgY29tLmlibS50ZXN0LmNhbGVuZGFyOworaW1wb3J0IGNvbS5pYm0udXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgY29tLmlibS50ZXh0Lio7CisKKy8qKgorICogQHRlc3QgMS4zMiA5OS8xMS8xNAorICogQGJ1ZyA0MDMxNTAyIDQwMzUzMDEgNDA0MDk5NiA0MDUxNzY1IDQwNTk2NTQgNDA2MTQ3NiA0MDcwNTAyIDQwNzExOTcgNDA3MTM4NQorICogNDA3MzkyOSA0MDgzMTY3IDQwODY3MjQgNDA5MjM2MiA0MDk1NDA3IDQwOTYyMzEgNDA5NjUzOSA0MTAwMzExIDQxMDMyNzEKKyAqIDQxMDYxMzYgNDEwODc2NCA0MTE0NTc4IDQxMTgzODQgNDEyNTg4MSA0MTI1ODkyIDQxMzYzOTkgNDE0MTY2NSA0MTQyOTMzCisgKiA0MTQ1MTU4IDQxNDU5ODMgNDE0NzI2OSA0MTQ5Njc3IDQxNjI1ODcgNDE2NTM0MyA0MTY2MTA5IDQxNjcwNjAgNDE3MzUxNgorICogNDE3NDM2MSA0MTc3NDg0IDQxOTc2OTkgNDIwOTA3MSA0Mjg4NzkyCisgKi8KK3B1YmxpYyBjbGFzcyBDYWxlbmRhclJlZ3Jlc3Npb24gZXh0ZW5kcyBjb20uaWJtLnRlc3QuVGVzdEZtd2sgeworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBDYWxlbmRhclJlZ3Jlc3Npb24oKS5ydW4oYXJncyk7CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIFN0cmluZ1tdIEZJRUxEX05BTUUgPSB7CisgICAgICAgICJFUkEiLCAiWUVBUiIsICJNT05USCIsICJXRUVLX09GX1lFQVIiLCAiV0VFS19PRl9NT05USCIsCisgICAgICAgICJEQVlfT0ZfTU9OVEgiLCAiREFZX09GX1lFQVIiLCAiREFZX09GX1dFRUsiLAorICAgICAgICAiREFZX09GX1dFRUtfSU5fTU9OVEgiLCAiQU1fUE0iLCAiSE9VUiIsICJIT1VSX09GX0RBWSIsCisgICAgICAgICJNSU5VVEUiLCAiU0VDT05EIiwgIk1JTExJU0VDT05EIiwgIlpPTkVfT0ZGU0VUIiwKKyAgICAgICAgIkRTVF9PRkZTRVQiLCAiWUVBUl9XT1kiLCAiRE9XX0xPQ0FMIiwgIkVYVEVOREVEX1lFQVIiLAorICAgICAgICAiSlVMSUFOX0RBWSIsICJNSUxMSVNFQ09ORFNfSU5fREFZIiwKKyAgICB9OworCisgICAgLyoKKyAgICAgIFN5bm9wc2lzOiBqYXZhLnNxbC5UaW1lc3RhbXAgY29uc3RydWN0b3Igd29ya3Mgd3Jvbmcgb24gV2luZG93cyA5NQorCisgICAgICA9PT09IEhlcmUgaXMgdGhlIHRlc3QgPT09PSAKKyAgICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmcgYXJnc1tdKSB7IAorICAgICAgICBqYXZhLnNxbC5UaW1lc3RhbXAgdD0gbmV3IGphdmEuc3FsLlRpbWVzdGFtcCgwLDE1LDUsNSw4LDEzLDEyMzQ1NjcwMCk7IAorICAgICAgICBsb2dsbigiZXhwZWN0ZWQ9MTkwMS0wNC0wNSAwNTowODoxMy4xMjM0NTY3Iik7IAorICAgICAgICBsb2dsbigiIHJlc3VsdD0iK3QpOyAKKyAgICAgIH0gCisgICAgICAKKyAgICAgID09PT0gSGVyZSBpcyB0aGUgb3V0cHV0IG9mIHRoZSB0ZXN0IG9uIFNvbGFyaXMgb3IgTlQgPT09PSAKKyAgICAgIGV4cGVjdGVkPTE5MDEtMDQtMDUgMDU6MDg6MTMuMTIzNDU2NyAKKyAgICAgIHJlc3VsdD0xOTAxLTA0LTA1IDA1OjA4OjEzLjEyMzQ1NjcgCisgICAgICAKKyAgICAgID09PT0gSGVyZSBpcyB0aGUgb3V0cHV0IG9mIHRoZSB0ZXN0IG9uIFdpbmRvd3M5NSA9PT09IAorICAgICAgZXhwZWN0ZWQ9MTkwMS0wNC0wNSAwNTowODoxMy4xMjM0NTY3IAorICAgICAgcmVzdWx0PTE5MDEtMDQtMDUgMDY6MDg6MTMuMTIzNDU2NyAKKyAgICAgICovCisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDAzMTUwMigpIHsKKyAgICAgICAgLy8gVGhpcyBidWcgYWN0dWFsbHkgb2NjdXJzIG9uIFdpbmRvd3MgTlQgYXMgd2VsbCwgYW5kIGRvZXNuJ3QKKyAgICAgICAgLy8gcmVxdWlyZSB0aGUgaG9zdCB6b25lIHRvIGJlIHNldDsgaXQgY2FuIGJlIHNldCBpbiBKYXZhLgorICAgICAgICBTdHJpbmdbXSBpZHMgPSBUaW1lWm9uZS5nZXRBdmFpbGFibGVJRHMoKTsKKyAgICAgICAgYm9vbGVhbiBiYWQgPSBmYWxzZTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPGlkcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgVGltZVpvbmUgem9uZSA9IFRpbWVab25lLmdldFRpbWVab25lKGlkc1tpXSk7CisgICAgICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWwgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoem9uZSk7CisgICAgICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgICAgIGNhbC5zZXQoMTkwMCwgMTUsIDUsIDUsIDgsIDEzKTsKKyAgICAgICAgICAgIGlmIChjYWwuZ2V0KENhbGVuZGFyLkhPVVIpICE9IDUpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiRmFpbDogIiArIHpvbmUuZ2V0SUQoKSArICIgIiArCisgICAgICAgICAgICAgICAgICAgICAgem9uZS51c2VEYXlsaWdodFRpbWUoKSArICIgIiArCisgICAgICAgICAgICAgICAgICAgICAgY2FsLmdldChDYWxlbmRhci5EU1RfT0ZGU0VUKSAvICg2MCo2MCoxMDAwKSArICIgIiArCisgICAgICAgICAgICAgICAgICAgICAgem9uZS5nZXRSYXdPZmZzZXQoKSAvICg2MCo2MCoxMDAwKSArCisgICAgICAgICAgICAgICAgICAgICAgIjogSE9VUiA9ICIgKyBjYWwuZ2V0KENhbGVuZGFyLkhPVVIpKTsKKyAgICAgICAgICAgICAgICBiYWQgPSB0cnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChmYWxzZSkgeyAvLyBDaGFuZ2UgdG8gdHJ1ZSB0byBkZWJ1ZworICAgICAgICAgICAgICAgIGxvZ2xuKCJPSzogIiArIHpvbmUuZ2V0SUQoKSArICIgIiArCisgICAgICAgICAgICAgICAgICAgICAgem9uZS51c2VEYXlsaWdodFRpbWUoKSArICIgIiArCisgICAgICAgICAgICAgICAgICAgICAgY2FsLmdldChDYWxlbmRhci5EU1RfT0ZGU0VUKSAvICg2MCo2MCoxMDAwKSArICIgIiArCisgICAgICAgICAgICAgICAgICAgICAgem9uZS5nZXRSYXdPZmZzZXQoKSAvICg2MCo2MCoxMDAwKSArCisgICAgICAgICAgICAgICAgICAgICAgIjogSE9VUiA9ICIgKyBjYWwuZ2V0KENhbGVuZGFyLkhPVVIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoYmFkKSBlcnJsbigiVGltZVpvbmUgcHJvYmxlbXMgd2l0aCBHQyIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDM1MzAxKCkgeworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKDk4LCA4LCA3KTsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgZCA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcig5OCwgOCwgNyk7CisgICAgICAgIGlmIChjLmFmdGVyKGQpIHx8CisgICAgICAgICAgICBjLmFmdGVyKGMpIHx8CisgICAgICAgICAgICBjLmJlZm9yZShkKSB8fAorICAgICAgICAgICAgYy5iZWZvcmUoYykgfHwKKyAgICAgICAgICAgICFjLmVxdWFscyhjKSB8fAorICAgICAgICAgICAgIWMuZXF1YWxzKGQpKQorICAgICAgICAgICAgZXJybG4oIkZhaWwiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA0MDk5NigpIHsKKyAgICAgICAgU3RyaW5nW10gaWRzID0gVGltZVpvbmUuZ2V0QXZhaWxhYmxlSURzKC04ICogNjAgKiA2MCAqIDEwMDApOworICAgICAgICBTaW1wbGVUaW1lWm9uZSBwZHQgPSBuZXcgU2ltcGxlVGltZVpvbmUoLTggKiA2MCAqIDYwICogMTAwMCwgaWRzWzBdKTsKKyAgICAgICAgcGR0LnNldFN0YXJ0UnVsZShDYWxlbmRhci5BUFJJTCwgMSwgQ2FsZW5kYXIuU1VOREFZLCAyICogNjAgKiA2MCAqIDEwMDApOworICAgICAgICBwZHQuc2V0RW5kUnVsZShDYWxlbmRhci5PQ1RPQkVSLCAtMSwgQ2FsZW5kYXIuU1VOREFZLCAyICogNjAgKiA2MCAqIDEwMDApOworICAgICAgICBDYWxlbmRhciBjYWxlbmRhciA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcihwZHQpOworCisgICAgICAgIGNhbGVuZGFyLnNldChDYWxlbmRhci5NT05USCwzKTsKKyAgICAgICAgY2FsZW5kYXIuc2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCwxOCk7CisgICAgICAgIGNhbGVuZGFyLnNldChDYWxlbmRhci5TRUNPTkQsIDMwKTsKKworICAgICAgICBsb2dsbigiTU9OVEg6ICIgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuTU9OVEgpKTsKKyAgICAgICAgbG9nbG4oIkRBWV9PRl9NT05USDogIiArIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCkpOworICAgICAgICBsb2dsbigiTUlOVVRFOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLk1JTlVURSkpOworICAgICAgICBsb2dsbigiU0VDT05EOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLlNFQ09ORCkpOworCisgICAgICAgIGNhbGVuZGFyLmFkZChDYWxlbmRhci5TRUNPTkQsNik7CisgICAgICAgIC8vVGhpcyB3aWxsIHByaW50IG91dCB0b2RheXMgZGF0ZSBmb3IgTU9OVEggYW5kIERBWV9PRl9NT05USAorICAgICAgICAvL2luc3RlYWQgb2YgdGhlIGRhdGUgaXQgd2FzIHNldCB0by4KKyAgICAgICAgLy9UaGlzIGhhcHBlbnMgd2hlbiBhZGRpbmcgTUlMTElTRUNPTkQgb3IgTUlOVVRFIGFsc28KKyAgICAgICAgbG9nbG4oIk1PTlRIOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLk1PTlRIKSk7CisgICAgICAgIGxvZ2xuKCJEQVlfT0ZfTU9OVEg6ICIgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyLmdldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgpKTsKKyAgICAgICAgbG9nbG4oIk1JTlVURTogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5NSU5VVEUpKTsKKyAgICAgICAgbG9nbG4oIlNFQ09ORDogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5TRUNPTkQpKTsKKyAgICAgICAgaWYgKGNhbGVuZGFyLmdldChDYWxlbmRhci5NT05USCkgIT0gMyB8fAorICAgICAgICAgICAgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCkgIT0gMTggfHwKKyAgICAgICAgICAgIGNhbGVuZGFyLmdldChDYWxlbmRhci5TRUNPTkQpICE9IDM2KQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IENhbGVuZGFyLmFkZCBtaXNiZWhhdmVzIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdDQwNTE3NjUoKSB7CisgICAgICAgIENhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIGNhbC5zZXRMZW5pZW50KGZhbHNlKTsKKyAgICAgICAgY2FsLnNldChDYWxlbmRhci5EQVlfT0ZfV0VFSywgMCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjYWwuZ2V0VGltZSgpOworICAgICAgICAgICAgZXJybG4oIkZhaWw6IERBWV9PRl9XRUVLIDAgc2hvdWxkIGJlIGRpc2FsbG93ZWQiKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKiBVc2VyIGVycm9yIC0gbm8gYnVnIGhlcmUKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA1OTUyNCgpIHsKKyAgICAgICAgLy8gQ3JlYXRlIGNhbGVuZGFyIGZvciBBcHJpbCAxMCwgMTk5NworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWxlbmRhciAgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKTsKKyAgICAgICAgLy8gcHJpbnQgb3V0IGEgYnVuY2ggb2YgaW50ZXJlc3RpbmcgdGhpbmdzCisgICAgICAgIGxvZ2xuKCJFUkE6ICIgKyBjYWxlbmRhci5nZXQoY2FsZW5kYXIuRVJBKSk7CisgICAgICAgIGxvZ2xuKCJZRUFSOiAiICsgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLllFQVIpKTsKKyAgICAgICAgbG9nbG4oIk1PTlRIOiAiICsgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLk1PTlRIKSk7CisgICAgICAgIGxvZ2xuKCJXRUVLX09GX1lFQVI6ICIgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyLmdldChjYWxlbmRhci5XRUVLX09GX1lFQVIpKTsKKyAgICAgICAgbG9nbG4oIldFRUtfT0ZfTU9OVEg6ICIgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyLmdldChjYWxlbmRhci5XRUVLX09GX01PTlRIKSk7CisgICAgICAgIGxvZ2xuKCJEQVRFOiAiICsgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLkRBVEUpKTsKKyAgICAgICAgbG9nbG4oIkRBWV9PRl9NT05USDogIiArIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLkRBWV9PRl9NT05USCkpOworICAgICAgICBsb2dsbigiREFZX09GX1lFQVI6ICIgKyBjYWxlbmRhci5nZXQoY2FsZW5kYXIuREFZX09GX1lFQVIpKTsKKyAgICAgICAgbG9nbG4oIkRBWV9PRl9XRUVLOiAiICsgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLkRBWV9PRl9XRUVLKSk7CisgICAgICAgIGxvZ2xuKCJEQVlfT0ZfV0VFS19JTl9NT05USDogIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhci5nZXQoY2FsZW5kYXIuREFZX09GX1dFRUtfSU5fTU9OVEgpKTsKKyAgICAgICAgbG9nbG4oIkFNX1BNOiAiICsgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLkFNX1BNKSk7CisgICAgICAgIGxvZ2xuKCJIT1VSOiAiICsgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLkhPVVIpKTsKKyAgICAgICAgbG9nbG4oIkhPVVJfT0ZfREFZOiAiICsgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLkhPVVJfT0ZfREFZKSk7CisgICAgICAgIGxvZ2xuKCJNSU5VVEU6ICIgKyBjYWxlbmRhci5nZXQoY2FsZW5kYXIuTUlOVVRFKSk7CisgICAgICAgIGxvZ2xuKCJTRUNPTkQ6ICIgKyBjYWxlbmRhci5nZXQoY2FsZW5kYXIuU0VDT05EKSk7CisgICAgICAgIGxvZ2xuKCJNSUxMSVNFQ09ORDogIiArIGNhbGVuZGFyLmdldChjYWxlbmRhci5NSUxMSVNFQ09ORCkpOworICAgICAgICBsb2dsbigiWk9ORV9PRkZTRVQ6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKGNhbGVuZGFyLmdldChjYWxlbmRhci5aT05FX09GRlNFVCkvKDYwKjYwKjEwMDApKSk7CisgICAgICAgIGxvZ2xuKCJEU1RfT0ZGU0VUOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICArIChjYWxlbmRhci5nZXQoY2FsZW5kYXIuRFNUX09GRlNFVCkvKDYwKjYwKjEwMDApKSk7CisgICAgICAgIGNhbGVuZGFyICA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigxOTk3LDMsMTApOyAKKyAgICAgICAgY2FsZW5kYXIuZ2V0VGltZSgpOyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBsb2dsbigiQXByaWwgMTAsIDE5OTciKTsKKyAgICAgICAgbG9nbG4oIkVSQTogIiArIGNhbGVuZGFyLmdldChjYWxlbmRhci5FUkEpKTsKKyAgICAgICAgbG9nbG4oIllFQVI6ICIgKyBjYWxlbmRhci5nZXQoY2FsZW5kYXIuWUVBUikpOworICAgICAgICBsb2dsbigiTU9OVEg6ICIgKyBjYWxlbmRhci5nZXQoY2FsZW5kYXIuTU9OVEgpKTsKKyAgICAgICAgbG9nbG4oIldFRUtfT0ZfWUVBUjogIiArIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLldFRUtfT0ZfWUVBUikpOworICAgICAgICBsb2dsbigiV0VFS19PRl9NT05USDogIiArIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLldFRUtfT0ZfTU9OVEgpKTsKKyAgICAgICAgbG9nbG4oIkRBVEU6ICIgKyBjYWxlbmRhci5nZXQoY2FsZW5kYXIuREFURSkpOworICAgICAgICBsb2dsbigiREFZX09GX01PTlRIOiAiICsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhci5nZXQoY2FsZW5kYXIuREFZX09GX01PTlRIKSk7CisgICAgICAgIGxvZ2xuKCJEQVlfT0ZfWUVBUjogIiArIGNhbGVuZGFyLmdldChjYWxlbmRhci5EQVlfT0ZfWUVBUikpOworICAgICAgICBsb2dsbigiREFZX09GX1dFRUs6ICIgKyBjYWxlbmRhci5nZXQoY2FsZW5kYXIuREFZX09GX1dFRUspKTsKKyAgICAgICAgbG9nbG4oIkRBWV9PRl9XRUVLX0lOX01PTlRIOiAiICsgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLkRBWV9PRl9XRUVLX0lOX01PTlRIKSk7CisgICAgICAgIGxvZ2xuKCJBTV9QTTogIiArIGNhbGVuZGFyLmdldChjYWxlbmRhci5BTV9QTSkpOworICAgICAgICBsb2dsbigiSE9VUjogIiArIGNhbGVuZGFyLmdldChjYWxlbmRhci5IT1VSKSk7CisgICAgICAgIGxvZ2xuKCJIT1VSX09GX0RBWTogIiArIGNhbGVuZGFyLmdldChjYWxlbmRhci5IT1VSX09GX0RBWSkpOworICAgICAgICBsb2dsbigiTUlOVVRFOiAiICsgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLk1JTlVURSkpOworICAgICAgICBsb2dsbigiU0VDT05EOiAiICsgY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLlNFQ09ORCkpOworICAgICAgICBsb2dsbigiTUlMTElTRUNPTkQ6ICIgKyBjYWxlbmRhci5nZXQoY2FsZW5kYXIuTUlMTElTRUNPTkQpKTsKKyAgICAgICAgbG9nbG4oIlpPTkVfT0ZGU0VUOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICArIChjYWxlbmRhci5nZXQoY2FsZW5kYXIuWk9ORV9PRkZTRVQpLyg2MCo2MCoxMDAwKSkpOyAvLyBpbiBob3VycworICAgICAgICBsb2dsbigiRFNUX09GRlNFVDogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAoY2FsZW5kYXIuZ2V0KGNhbGVuZGFyLkRTVF9PRkZTRVQpLyg2MCo2MCoxMDAwKSkpOyAvLyBpbiBob3VycworICAgIH0KKyAgICAqLworCisgICAgcHVibGljIHZvaWQgVGVzdDQwNTk2NTQoKSB7CisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGdjID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisgICAgICAgIAorICAgICAgICBnYy5zZXQoMTk5NywgMywgMSwgMTUsIDE2LCAxNyk7IC8vIEFwcmlsIDEsIDE5OTcKKworICAgICAgICBnYy5zZXQoQ2FsZW5kYXIuSE9VUiwgMCk7CisgICAgICAgIGdjLnNldChDYWxlbmRhci5BTV9QTSwgQ2FsZW5kYXIuQU0pOworICAgICAgICBnYy5zZXQoQ2FsZW5kYXIuTUlOVVRFLCAwKTsKKyAgICAgICAgZ2Muc2V0KENhbGVuZGFyLlNFQ09ORCwgMCk7CisgICAgICAgIGdjLnNldChDYWxlbmRhci5NSUxMSVNFQ09ORCwgMCk7CisKKyAgICAgICAgRGF0ZSBjZCA9IGdjLmdldFRpbWUoKTsKKyAgICAgICAgRGF0ZSBleHAgPSBuZXcgRGF0ZSg5NywgMywgMSwgMCwgMCwgMCk7CisgICAgICAgIGlmICghY2QuZXF1YWxzKGV4cCkpCisgICAgICAgICAgICBlcnJsbigiRmFpbDogQ2FsZW5kYXIuc2V0IGJyb2tlbi4gR290ICIgKyBjZCArICIgV2FudCAiICsgZXhwKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA2MTQ3NigpIHsKKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBmbXQgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgiZGRNTU15eSIsIExvY2FsZS5VSyk7CisgICAgICAgIENhbGVuZGFyIGNhbCA9IEdyZWdvcmlhbkNhbGVuZGFyLmdldEluc3RhbmNlKFRpbWVab25lLmdldFRpbWVab25lKCJHTVQiKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsZS5VSyk7CisgICAgICAgIGZtdC5zZXRDYWxlbmRhcihjYWwpOworICAgICAgICB0cnkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBEYXRlIGRhdGUgPSBmbXQucGFyc2UoIjI5TUFZOTciKTsKKyAgICAgICAgICAgICAgICBjYWwuc2V0VGltZShkYXRlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7O30KKyAgICAgICAgY2FsLnNldChDYWxlbmRhci5IT1VSX09GX0RBWSwgMTMpOworICAgICAgICBsb2dsbigiSG91cjogIitjYWwuZ2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZKSk7CisgICAgICAgIGNhbC5hZGQoQ2FsZW5kYXIuSE9VUl9PRl9EQVksIDYpOworICAgICAgICBsb2dsbigiSG91cjogIitjYWwuZ2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZKSk7CisgICAgICAgIGlmIChjYWwuZ2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZKSAhPSAxOSkKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiBXYW50IDE5IEdvdCAiICsgY2FsLmdldChDYWxlbmRhci5IT1VSX09GX0RBWSkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDcwNTAyKCkgeworICAgICAgICBEYXRlIGQgPSBnZXRBc3NvY2lhdGVkRGF0ZShuZXcgRGF0ZSg5OCwgMCwgMzApKTsKKyAgICAgICAgQ2FsZW5kYXIgY2FsID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisgICAgICAgIGNhbC5zZXRUaW1lKGQpOworICAgICAgICBpZiAoY2FsLmdldChDYWxlbmRhci5EQVlfT0ZfV0VFSykgPT0gQ2FsZW5kYXIuU0FUVVJEQVkgfHwKKyAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuREFZX09GX1dFRUspID09IENhbGVuZGFyLlNVTkRBWSkKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiBXYW50IHdlZWtkYXkgR290ICIgKyBkKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXQgdGhlIGFzc29jaWF0ZWQgZGF0ZSBzdGFydGluZyBmcm9tIGEgc3BlY2lmaWVkIGRhdGUKKyAgICAgKiBOT1RFOiB0aGUgdW5uZWNlc3NhcnkgImdldFRpbWUoKSdzIiBiZWxvdyBhcmUgYSB3b3JrLWFyb3VuZCBmb3IgYQorICAgICAqIGJ1ZyBpbiBqZGsgMS4xLjMgKGFuZCBwcm9iYWJseSBlYXJsaWVyIHZlcnNpb25zIGFsc28pCisgICAgICogPHA+CisgICAgICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gc3RhcnQgZnJvbQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgRGF0ZSBnZXRBc3NvY2lhdGVkRGF0ZShEYXRlIGQpIHsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisgICAgICAgIGNhbC5zZXRUaW1lKGQpOworICAgICAgICAvL2NhbC5hZGQoZmllbGQsIGFtb3VudCk7IC8vPC0tIFBST0JMRU0gU0VFTiBXSVRIIGZpZWxkID0gREFURSxNT05USCAKKyAgICAgICAgLy8gY2FsLmdldFRpbWUoKTsgIC8vIDwtLS0gUkVNT1ZFIFRISVMgVE8gU0VFIEJVRworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaW50IHdkID0gY2FsLmdldChDYWxlbmRhci5EQVlfT0ZfV0VFSyk7CisgICAgICAgICAgICBpZiAod2QgPT0gQ2FsZW5kYXIuU0FUVVJEQVkgfHwgd2QgPT0gQ2FsZW5kYXIuU1VOREFZKSB7CisgICAgICAgICAgICAgICAgY2FsLmFkZChDYWxlbmRhci5EQVRFLCAxKTsKKyAgICAgICAgICAgICAgICAvLyBjYWwuZ2V0VGltZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjYWwuZ2V0VGltZSgpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDcxMTk3KCkgeworICAgICAgICBkb3dUZXN0KGZhbHNlKTsKKyAgICAgICAgZG93VGVzdCh0cnVlKTsKKyAgICB9CisKKyAgICB2b2lkIGRvd1Rlc3QoYm9vbGVhbiBsZW5pZW50KSB7CisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbCA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworICAgICAgICBjYWwuc2V0KDE5OTcsIENhbGVuZGFyLkFVR1VTVCwgMTIpOyAvLyBXZWRuZXNkYXkKKyAgICAgICAgLy8gY2FsLmdldFRpbWUoKTsgLy8gRm9yY2UgdXBkYXRlCisgICAgICAgIGNhbC5zZXRMZW5pZW50KGxlbmllbnQpOworICAgICAgICBjYWwuc2V0KDE5OTYsIENhbGVuZGFyLkRFQ0VNQkVSLCAxKTsgLy8gU2V0IHRoZSBkYXRlIHRvIGJlIERlY2VtYmVyIDEsIDE5OTYKKyAgICAgICAgaW50IGRvdyA9IGNhbC5nZXQoQ2FsZW5kYXIuREFZX09GX1dFRUspOworICAgICAgICBpbnQgbWluID0gY2FsLmdldE1pbmltdW0oQ2FsZW5kYXIuREFZX09GX1dFRUspOworICAgICAgICBpbnQgbWF4ID0gY2FsLmdldE1heGltdW0oQ2FsZW5kYXIuREFZX09GX1dFRUspOworICAgICAgICBsb2dsbihjYWwuZ2V0VGltZSgpLnRvU3RyaW5nKCkpOworICAgICAgICBpZiAobWluICE9IENhbGVuZGFyLlNVTkRBWSB8fCBtYXggIT0gQ2FsZW5kYXIuU0FUVVJEQVkpCisgICAgICAgICAgICBlcnJsbigiRkFJTDogTWluL21heCBiYWQiKTsKKyAgICAgICAgaWYgKGRvdyA8IG1pbiB8fCBkb3cgPiBtYXgpIAorICAgICAgICAgICAgZXJybG4oIkZBSUw6IERheSBvZiB3ZWVrICIgKyBkb3cgKyAiIG91dCBvZiByYW5nZSIpOworICAgICAgICBpZiAoZG93ICE9IENhbGVuZGFyLlNVTkRBWSkgCisgICAgICAgICAgICBlcnJsbigiRkFJTDogRGF5IG9mIHdlZWsgc2hvdWxkIGJlIFNVTkRBWSBHb3QgIiArIGRvdyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdDQwNzEzODUoKSB7CisgICAgICAgIENhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIGNhbC5zZXRUaW1lKG5ldyBEYXRlKDk4LCBDYWxlbmRhci5KVU5FLCAyNCkpOworICAgICAgICBjYWwuc2V0KENhbGVuZGFyLk1PTlRILCBDYWxlbmRhci5OT1ZFTUJFUik7IC8vIGNoYW5nZSBhIGZpZWxkCisgICAgICAgIGxvZ2xuKGNhbC5nZXRUaW1lKCkudG9TdHJpbmcoKSk7CisgICAgICAgIGlmICghY2FsLmdldFRpbWUoKS5lcXVhbHMobmV3IERhdGUoOTgsIENhbGVuZGFyLk5PVkVNQkVSLCAyNCkpKQorICAgICAgICAgICAgZXJybG4oIkZhaWwiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA3MzkyOSgpIHsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgZm9vMSA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigxOTk3LCA4LCAyNyk7CisgICAgICAgIGZvbzEuYWRkKENhbGVuZGFyLkRBWV9PRl9NT05USCwgKzEpOworICAgICAgICBpbnQgdGVzdHllYXIgPSBmb28xLmdldChDYWxlbmRhci5ZRUFSKTsKKyAgICAgICAgaW50IHRlc3Rtb250aCA9IGZvbzEuZ2V0KENhbGVuZGFyLk1PTlRIKTsKKyAgICAgICAgaW50IHRlc3RkYXkgPSBmb28xLmdldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgpOworICAgICAgICBpZiAodGVzdHllYXIgIT0gMTk5NyB8fAorICAgICAgICAgICAgdGVzdG1vbnRoICE9IDggfHwKKyAgICAgICAgICAgIHRlc3RkYXkgIT0gMjgpCisgICAgICAgICAgICBlcnJsbigiRmFpbDogQ2FsZW5kYXIgbm90IGluaXRpYWxpemVkIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdDQwODMxNjcoKSB7CisgICAgICAgIFRpbWVab25lIHNhdmVab25lID0gVGltZVpvbmUuZ2V0RGVmYXVsdCgpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgVGltZVpvbmUuc2V0RGVmYXVsdChUaW1lWm9uZS5nZXRUaW1lWm9uZSgiVVRDIikpOworICAgICAgICAgICAgRGF0ZSBmaXJzdERhdGUgPSBuZXcgRGF0ZSgpOworICAgICAgICAgICAgQ2FsZW5kYXIgY2FsID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisgICAgICAgICAgICBjYWwuc2V0VGltZShmaXJzdERhdGUpOworICAgICAgICAgICAgbG9uZyBmaXJzdE1pbGxpc0luRGF5ID0gY2FsLmdldChDYWxlbmRhci5IT1VSX09GX0RBWSkgKiAzNjAwMDAwTCArCisgICAgICAgICAgICAgICAgY2FsLmdldChDYWxlbmRhci5NSU5VVEUpICogNjAwMDBMICsKKyAgICAgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLlNFQ09ORCkgKiAxMDAwTCArCisgICAgICAgICAgICAgICAgY2FsLmdldChDYWxlbmRhci5NSUxMSVNFQ09ORCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGxvZ2xuKCJDdXJyZW50IHRpbWU6ICIgKyBmaXJzdERhdGUudG9TdHJpbmcoKSk7CisKKyAgICAgICAgICAgIGZvciAoaW50IHZhbGlkaXR5PTA7IHZhbGlkaXR5PDMwOyB2YWxpZGl0eSsrKSB7CisgICAgICAgICAgICAgICAgRGF0ZSBsYXN0RGF0ZSA9IG5ldyBEYXRlKGZpcnN0RGF0ZS5nZXRUaW1lKCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZyl2YWxpZGl0eSoxMDAwKjI0KjYwKjYwKTsKKyAgICAgICAgICAgICAgICBjYWwuc2V0VGltZShsYXN0RGF0ZSk7CisgICAgICAgICAgICAgICAgbG9uZyBtaWxsaXNJbkRheSA9IGNhbC5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpICogMzYwMDAwMEwgKworICAgICAgICAgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLk1JTlVURSkgKiA2MDAwMEwgKworICAgICAgICAgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLlNFQ09ORCkgKiAxMDAwTCArCisgICAgICAgICAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuTUlMTElTRUNPTkQpOworICAgICAgICAgICAgICAgIGlmIChmaXJzdE1pbGxpc0luRGF5ICE9IG1pbGxpc0luRGF5KSAKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkRheSBoYXMgc2hpZnRlZCAiICsgbGFzdERhdGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgVGltZVpvbmUuc2V0RGVmYXVsdChzYXZlWm9uZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA4NjcyNCgpIHsKKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBkYXRlOworICAgICAgICBUaW1lWm9uZSBzYXZlWm9uZSA9IFRpbWVab25lLmdldERlZmF1bHQoKTsKKyAgICAgICAgTG9jYWxlIHNhdmVMb2NhbGUgPSBMb2NhbGUuZ2V0RGVmYXVsdCgpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgTG9jYWxlLnNldERlZmF1bHQoTG9jYWxlLlVLKTsgCisgICAgICAgICAgICBUaW1lWm9uZS5zZXREZWZhdWx0KFRpbWVab25lLmdldFRpbWVab25lKCJHTVQiKSk7CisgICAgICAgICAgICBkYXRlPW5ldyBTaW1wbGVEYXRlRm9ybWF0KCJkZCBNTU0geXl5ICh6enp6KSAnaXMgaW4gd2Vlaycgd3ciKTsgCisgICAgICAgICAgICBDYWxlbmRhciBjYWw9Q2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsgCisgICAgICAgICAgICBjYWwuc2V0KDE5OTcsQ2FsZW5kYXIuU0VQVEVNQkVSLDMwKTsgCisgICAgICAgICAgICBEYXRlIG5vdz1jYWwuZ2V0VGltZSgpOyAKKyAgICAgICAgICAgIGxvZ2xuKGRhdGUuZm9ybWF0KG5vdykpOyAKKyAgICAgICAgICAgIGNhbC5zZXQoMTk5NyxDYWxlbmRhci5KQU5VQVJZLDEpOyAKKyAgICAgICAgICAgIG5vdz1jYWwuZ2V0VGltZSgpOyAKKyAgICAgICAgICAgIGxvZ2xuKGRhdGUuZm9ybWF0KG5vdykpOyAKKyAgICAgICAgICAgIGNhbC5zZXQoMTk5NyxDYWxlbmRhci5KQU5VQVJZLDgpOyAKKyAgICAgICAgICAgIG5vdz1jYWwuZ2V0VGltZSgpOyAKKyAgICAgICAgICAgIGxvZ2xuKGRhdGUuZm9ybWF0KG5vdykpOyAKKyAgICAgICAgICAgIGNhbC5zZXQoMTk5NixDYWxlbmRhci5ERUNFTUJFUiwzMSk7IAorICAgICAgICAgICAgbm93PWNhbC5nZXRUaW1lKCk7IAorICAgICAgICAgICAgbG9nbG4oZGF0ZS5mb3JtYXQobm93KSk7IAorICAgICAgICB9CisgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgTG9jYWxlLnNldERlZmF1bHQoc2F2ZUxvY2FsZSk7CisgICAgICAgICAgICBUaW1lWm9uZS5zZXREZWZhdWx0KHNhdmVab25lKTsKKyAgICAgICAgfQorICAgICAgICBsb2dsbigiKioqIFRIRSBSRVNVTFRTIE9GIFRISVMgVEVTVCBNVVNUIEJFIFZFUklGSUVEIE1BTlVBTExZICoqKiIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDkyMzYyKCkgeworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWwxID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKDE5OTcsIDEwLCAxMSwgMTAsIDIwLCA0MCk7IAorICAgICAgICAvKmNhbDEuc2V0KCBDYWxlbmRhci5ZRUFSLCAxOTk3ICk7IAorICAgICAgICBjYWwxLnNldCggQ2FsZW5kYXIuTU9OVEgsIDEwICk7IAorICAgICAgICBjYWwxLnNldCggQ2FsZW5kYXIuREFURSwgMTEgKTsgCisgICAgICAgIGNhbDEuc2V0KCBDYWxlbmRhci5IT1VSLCAxMCApOyAKKyAgICAgICAgY2FsMS5zZXQoIENhbGVuZGFyLk1JTlVURSwgMjAgKTsgCisgICAgICAgIGNhbDEuc2V0KCBDYWxlbmRhci5TRUNPTkQsIDQwICk7ICovCisKKyAgICAgICAgbG9nbG4oICIgQ2FsMSA9ICIgKyBjYWwxLmdldFRpbWUoKS5nZXRUaW1lKCkgKTsgCisgICAgICAgIGxvZ2xuKCAiIENhbDEgdGltZSBpbiBtcyA9ICIgKyBjYWwxLmdldChDYWxlbmRhci5NSUxMSVNFQ09ORCkgKTsgCisgICAgICAgIGZvciggaW50IGsgPSAwOyBrIDwgMTAwIDsgaysrICk7IAorCisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbDIgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoMTk5NywgMTAsIDExLCAxMCwgMjAsIDQwKTsgCisgICAgICAgIC8qY2FsMi5zZXQoIENhbGVuZGFyLllFQVIsIDE5OTcgKTsgCisgICAgICAgIGNhbDIuc2V0KCBDYWxlbmRhci5NT05USCwgMTAgKTsgCisgICAgICAgIGNhbDIuc2V0KCBDYWxlbmRhci5EQVRFLCAxMSApOyAKKyAgICAgICAgY2FsMi5zZXQoIENhbGVuZGFyLkhPVVIsIDEwICk7IAorICAgICAgICBjYWwyLnNldCggQ2FsZW5kYXIuTUlOVVRFLCAyMCApOyAKKyAgICAgICAgY2FsMi5zZXQoIENhbGVuZGFyLlNFQ09ORCwgNDAgKTsgKi8KKworICAgICAgICBsb2dsbiggIiBDYWwyID0gIiArIGNhbDIuZ2V0VGltZSgpLmdldFRpbWUoKSApOyAKKyAgICAgICAgbG9nbG4oICIgQ2FsMiB0aW1lIGluIG1zID0gIiArIGNhbDIuZ2V0KENhbGVuZGFyLk1JTExJU0VDT05EKSApOyAKKyAgICAgICAgaWYoICFjYWwxLmVxdWFscyggY2FsMiApICkgCisgICAgICAgICAgICBlcnJsbigiRmFpbDogTWlsbGlzZWNvbmRzIHJhbmRvbWl6ZWQiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA5NTQwNygpIHsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgYSA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigxOTk3LENhbGVuZGFyLk5PVkVNQkVSLCAxMyk7CisgICAgICAgIGludCBkb3cgPSBhLmdldChDYWxlbmRhci5EQVlfT0ZfV0VFSyk7CisgICAgICAgIGlmIChkb3cgIT0gQ2FsZW5kYXIuVEhVUlNEQVkpCisgICAgICAgICAgICBlcnJsbigiRmFpbDogV2FudCBUSFVSU0RBWSBHb3QgIiArIGRvdyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdDQwOTYyMzEoKSB7CisgICAgICAgIFRpbWVab25lIEdNVCA9IFRpbWVab25lLmdldFRpbWVab25lKCJHTVQiKTsKKyAgICAgICAgVGltZVpvbmUgUFNUID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoIlBTVCIpOworICAgICAgICBpbnQgc2VjID0gMCwgbWluID0gMCwgaHIgPSAwLCBkYXkgPSAxLCBtb250aCA9IDEwLCB5ZWFyID0gMTk5NzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgQ2FsZW5kYXIgY2FsMSA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcihQU1QpOworICAgICAgICBjYWwxLnNldFRpbWUobmV3IERhdGUoODgwNjk4NjM5MDAwTCkpOworICAgICAgICBpbnQgcDsKKyAgICAgICAgbG9nbG4oIlBTVCAxIGlzOiAiICsgKHA9Y2FsMS5nZXQoY2FsMS5IT1VSX09GX0RBWSkpKTsKKyAgICAgICAgY2FsMS5zZXRUaW1lWm9uZShHTVQpOworICAgICAgICAvLyBJc3N1ZSAxOiBDaGFuZ2luZyB0aGUgdGltZXpvbmUgZG9lc24ndCBjaGFuZ2UgdGhlCisgICAgICAgIC8vICAgICAgICAgIHJlcHJlc2VudGVkIHRpbWUuCisgICAgICAgIGludCBoMSxoMjsKKyAgICAgICAgbG9nbG4oIkdNVCAxIGlzOiAiICsgKGgxPWNhbDEuZ2V0KGNhbDEuSE9VUl9PRl9EQVkpKSk7CisgICAgICAgIGNhbDEuc2V0VGltZShuZXcgRGF0ZSg4ODA2OTg2MzkwMDBMKSk7CisgICAgICAgIGxvZ2xuKCJHTVQgMiBpczogIiArIChoMj1jYWwxLmdldChjYWwxLkhPVVJfT0ZfREFZKSkpOworICAgICAgICAvLyBOb3RlOiBUaGlzIHRlc3QgaGFkIGEgYnVnIGluIGl0LiAgSXQgd2FudGVkIGgxIT1oMiwgd2hlbgorICAgICAgICAvLyB3aGF0IHdhcyBtZWFudCB3YXMgaDEhPXAuICBGaXhlZCB0aGlzIGNvbmN1cnJlbnQgd2l0aCBmaXgKKyAgICAgICAgLy8gdG8gNDE3NzQ4NC4KKyAgICAgICAgaWYgKHAgPT0gaDEgfHwgaDEgIT0gaDIpCisgICAgICAgICAgICBlcnJsbigiRmFpbDogSG91ciBzYW1lIGluIGRpZmZlcmVudCB6b25lcyIpOworCisgICAgICAgIENhbGVuZGFyIGNhbDIgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoR01UKTsKKyAgICAgICAgQ2FsZW5kYXIgY2FsMyA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcihQU1QpOworICAgICAgICBjYWwyLnNldChDYWxlbmRhci5NSUxMSVNFQ09ORCwgMCk7CisgICAgICAgIGNhbDMuc2V0KENhbGVuZGFyLk1JTExJU0VDT05ELCAwKTsKKworICAgICAgICBjYWwyLnNldChjYWwxLmdldChjYWwxLllFQVIpLAorICAgICAgICAgICAgICAgICBjYWwxLmdldChjYWwxLk1PTlRIKSwKKyAgICAgICAgICAgICAgICAgY2FsMS5nZXQoY2FsMS5EQVlfT0ZfTU9OVEgpLAorICAgICAgICAgICAgICAgICBjYWwxLmdldChjYWwxLkhPVVJfT0ZfREFZKSwKKyAgICAgICAgICAgICAgICAgY2FsMS5nZXQoY2FsMS5NSU5VVEUpLAorICAgICAgICAgICAgICAgICBjYWwxLmdldChjYWwxLlNFQ09ORCkpOworCisgICAgICAgIGxvbmcgdDEsdDIsdDMsdDQ7CisgICAgICAgIGxvZ2xuKCJSR01UIDEgaXM6ICIgKyAodDE9Y2FsMi5nZXRUaW1lKCkuZ2V0VGltZSgpKSk7CisgICAgICAgIGNhbDMuc2V0KHllYXIsIG1vbnRoLCBkYXksIGhyLCBtaW4sIHNlYyk7CisgICAgICAgIGxvZ2xuKCJSUFNUIDEgaXM6ICIgKyAodDI9Y2FsMy5nZXRUaW1lKCkuZ2V0VGltZSgpKSk7CisgICAgICAgIGNhbDMuc2V0VGltZVpvbmUoR01UKTsKKyAgICAgICAgbG9nbG4oIlJHTVQgMiBpczogIiArICh0Mz1jYWwzLmdldFRpbWUoKS5nZXRUaW1lKCkpKTsKKyAgICAgICAgY2FsMy5zZXQoY2FsMS5nZXQoY2FsMS5ZRUFSKSwKKyAgICAgICAgICAgICAgICAgY2FsMS5nZXQoY2FsMS5NT05USCksCisgICAgICAgICAgICAgICAgIGNhbDEuZ2V0KGNhbDEuREFZX09GX01PTlRIKSwKKyAgICAgICAgICAgICAgICAgY2FsMS5nZXQoY2FsMS5IT1VSX09GX0RBWSksCisgICAgICAgICAgICAgICAgIGNhbDEuZ2V0KGNhbDEuTUlOVVRFKSwKKyAgICAgICAgICAgICAgICAgY2FsMS5nZXQoY2FsMS5TRUNPTkQpKTsKKyAgICAgICAgLy8gSXNzdWUgMjogQ2FsZW5kYXIgY29udGludWVzIHRvIHVzZSB0aGUgdGltZXpvbmUgaW4gaXRzCisgICAgICAgIC8vICAgICAgICAgIGNvbnN0cnVjdG9yIGZvciBzZXQoKSBjb252ZXJzaW9ucywgcmVnYXJkbGVzcworICAgICAgICAvLyAgICAgICAgICBvZiBjYWxscyB0byBzZXRUaW1lWm9uZSgpCisgICAgICAgIGxvZ2xuKCJSR01UIDMgaXM6ICIgKyAodDQ9Y2FsMy5nZXRUaW1lKCkuZ2V0VGltZSgpKSk7CisgICAgICAgIGlmICh0MSA9PSB0MiB8fAorICAgICAgICAgICAgdDEgIT0gdDQgfHwKKyAgICAgICAgICAgIHQyICE9IHQzKQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IENhbGVuZGFyIHpvbmUgYmVoYXZpb3IgZmF1bHR5Iik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdDQwOTY1MzkoKSB7CisgICAgICAgIGludFtdIHkgPSB7MzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzF9OworCisgICAgICAgIGZvciAoaW50IHg9MDt4PDEyO3grKykgeworICAgICAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgZ2MgPSBuZXcgCisgICAgICAgICAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIoMTk5Nyx4LHlbeF0pOworICAgICAgICAgICAgaW50IG0xLG0yOworICAgICAgICAgICAgbG9nKChtMT1nYy5nZXQoQ2FsZW5kYXIuTU9OVEgpKzEpKyIvIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2MuZ2V0KENhbGVuZGFyLkRBVEUpKyIvIitnYy5nZXQoQ2FsZW5kYXIuWUVBUikrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKyAxbW8gPSAiKTsKKworICAgICAgICAgICAgZ2MuYWRkKENhbGVuZGFyLk1PTlRILCAxKTsKKyAgICAgICAgICAgIGxvZ2xuKChtMj1nYy5nZXQoQ2FsZW5kYXIuTU9OVEgpKzEpKyIvIisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYy5nZXQoQ2FsZW5kYXIuREFURSkrIi8iK2djLmdldChDYWxlbmRhci5ZRUFSKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICBpbnQgbSA9IChtMSAlIDEyKSArIDE7CisgICAgICAgICAgICBpZiAobTIgIT0gbSkKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogV2FudCAiICsgbSArICIgR290ICIgKyBtMik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdDQxMDAzMTEoKSB7CisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbCA9IChHcmVnb3JpYW5DYWxlbmRhcilDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICBjYWwuc2V0KENhbGVuZGFyLllFQVIsIDE5OTcpOworICAgICAgICBjYWwuc2V0KENhbGVuZGFyLkRBWV9PRl9ZRUFSLCAxKTsKKyAgICAgICAgRGF0ZSBkID0gY2FsLmdldFRpbWUoKTsgICAgICAgICAgICAgLy8gU2hvdWxkIGJlIEphbiAxCisgICAgICAgIGxvZ2xuKGQudG9TdHJpbmcoKSk7CisgICAgICAgIGlmIChjYWwuZ2V0KENhbGVuZGFyLkRBWV9PRl9ZRUFSKSAhPSAxKQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IERBWV9PRl9ZRUFSIG5vdCBzZXQiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDEwMzI3MSgpIHsKKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBzZGYgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgpOyAKKyAgICAgICAgaW50IG51bVllYXJzPTQwLCBzdGFydFllYXI9MTk5NywgbnVtRGF5cz0xNTsgCisgICAgICAgIFN0cmluZyBvdXRwdXQsIHRlc3REZXNjOyAKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgdGVzdENhbCA9IChHcmVnb3JpYW5DYWxlbmRhcilDYWxlbmRhci5nZXRJbnN0YW5jZSgpOyAKKyAgICAgICAgdGVzdENhbC5jbGVhcigpOworICAgICAgICBzZGYuc2V0Q2FsZW5kYXIodGVzdENhbCk7IAorICAgICAgICBzZGYuYXBwbHlQYXR0ZXJuKCJkIE1NTSB5eXl5Iik7IAorICAgICAgICBib29sZWFuIGZhaWwgPSBmYWxzZTsKKyAgICAgICAgZm9yIChpbnQgZmlyc3REYXk9MTsgZmlyc3REYXk8PTI7IGZpcnN0RGF5KyspIHsgCisgICAgICAgICAgICBmb3IgKGludCBtaW5EYXlzPTE7IG1pbkRheXM8PTc7IG1pbkRheXMrKykgeyAKKyAgICAgICAgICAgICAgICB0ZXN0Q2FsLnNldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsobWluRGF5cyk7IAorICAgICAgICAgICAgICAgIHRlc3RDYWwuc2V0Rmlyc3REYXlPZldlZWsoZmlyc3REYXkpOyAKKyAgICAgICAgICAgICAgICB0ZXN0RGVzYyA9ICgiVGVzdCIgKyBTdHJpbmcudmFsdWVPZihmaXJzdERheSkgKyBTdHJpbmcudmFsdWVPZihtaW5EYXlzKSk7IAorICAgICAgICAgICAgICAgIGxvZ2xuKHRlc3REZXNjICsgIiA9PiAxc3QgZGF5IG9mIHdlZWs9IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy52YWx1ZU9mKGZpcnN0RGF5KSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIG1pbmltdW0gZGF5cyBpbiBmaXJzdCB3ZWVrPSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcudmFsdWVPZihtaW5EYXlzKSk7IAorICAgICAgICAgICAgICAgIGZvciAoaW50IGo9c3RhcnRZZWFyOyBqPD1zdGFydFllYXIrbnVtWWVhcnM7IGorKykgeyAKKyAgICAgICAgICAgICAgICAgICAgdGVzdENhbC5zZXQoaiwxMSwyNSk7IAorICAgICAgICAgICAgICAgICAgICBmb3IoaW50IGk9MDsgaTxudW1EYXlzOyBpKyspIHsgCisgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Q2FsLmFkZChDYWxlbmRhci5EQVRFLDEpOyAKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBjYWxXT1k7IAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGFjdFdPWSA9IHRlc3RDYWwuZ2V0KENhbGVuZGFyLldFRUtfT0ZfWUVBUik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0V09ZIDwgMSB8fCBhY3RXT1kgPiA1MykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGUgZCA9IHRlc3RDYWwuZ2V0VGltZSgpOyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxXT1kgPSBTdHJpbmcudmFsdWVPZihhY3RXT1kpOyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSB0ZXN0RGVzYyArICIgLSAiICsgc2RmLmZvcm1hdChkKSArICJcdCI7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dCArICJcdCIgKyBjYWxXT1k7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2xuKG91dHB1dCk7IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWwgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICB9IAorICAgICAgICB9IAorCisgICAgICAgIGludFtdIERBVEEgPSB7CisgICAgICAgICAgICAzLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwKKyAgICAgICAgICAgICAgICAxLCAgMSwgIDEsICAxLCAgMSwgIDEsICAxLAorICAgICAgICAgICAgICAgIDIsICAyLCAgMiwgIDIsICAyLCAgMiwgIDIsCisgICAgICAgICAgICA0LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwKKyAgICAgICAgICAgICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLAorICAgICAgICAgICAgICAgIDEsICAxLCAgMSwgIDEsICAxLCAgMSwgIDEsCisgICAgICAgIH07CisgICAgICAgIHRlc3RDYWwuc2V0Rmlyc3REYXlPZldlZWsoQ2FsZW5kYXIuU1VOREFZKTsKKyAgICAgICAgZm9yIChpbnQgaj0wOyBqPERBVEEubGVuZ3RoOyBqKz0yMikgeworICAgICAgICAgICAgbG9nbG4oIk1pbmltYWwgZGF5cyBpbiBmaXJzdCB3ZWVrID0gIiArIERBVEFbal0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIFdlZWsgc3RhcnRzIG9uIFN1bmRheSIpOworICAgICAgICAgICAgdGVzdENhbC5zZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKERBVEFbal0pOworICAgICAgICAgICAgdGVzdENhbC5zZXQoMTk5NywgQ2FsZW5kYXIuREVDRU1CRVIsIDIxKTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTwyMTsgKytpKSB7CisgICAgICAgICAgICAgICAgaW50IHdveSA9IHRlc3RDYWwuZ2V0KENhbGVuZGFyLldFRUtfT0ZfWUVBUik7CisgICAgICAgICAgICAgICAgbG9nKHRlc3RDYWwuZ2V0VGltZSgpICsgIiAiICsgd295KTsKKyAgICAgICAgICAgICAgICBpZiAod295ICE9IERBVEFbaiArIDEgKyBpXSkgeworICAgICAgICAgICAgICAgICAgICBsb2coIiBFUlJPUiIpOworICAgICAgICAgICAgICAgICAgICBmYWlsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy9sb2dsbigpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIE5vdyBjb21wdXRlIHRoZSB0aW1lIGZyb20gdGhlIGZpZWxkcywgYW5kIG1ha2Ugc3VyZSB3ZQorICAgICAgICAgICAgICAgIC8vIGdldCB0aGUgc2FtZSBhbnN3ZXIgYmFjay4gIFRoaXMgaXMgYSByb3VuZC10cmlwIHRlc3QuCisgICAgICAgICAgICAgICAgRGF0ZSBzYXZlID0gdGVzdENhbC5nZXRUaW1lKCk7CisgICAgICAgICAgICAgICAgdGVzdENhbC5jbGVhcigpOworICAgICAgICAgICAgICAgIHRlc3RDYWwuc2V0KENhbGVuZGFyLllFQVIsIERBVEFbaisxK2ldIDwgMjUgPyAxOTk4IDogMTk5Nyk7CisgICAgICAgICAgICAgICAgdGVzdENhbC5zZXQoQ2FsZW5kYXIuV0VFS19PRl9ZRUFSLCBEQVRBW2orMStpXSk7CisgICAgICAgICAgICAgICAgdGVzdENhbC5zZXQoQ2FsZW5kYXIuREFZX09GX1dFRUssIChpJTcpICsgQ2FsZW5kYXIuU1VOREFZKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRlc3RDYWwuZ2V0VGltZSgpLmVxdWFscyhzYXZlKSkgeworICAgICAgICAgICAgICAgICAgICBsb2dsbigiICBQYXJzZSBmYWlsZWQ6ICIgKyB0ZXN0Q2FsLmdldFRpbWUoKSk7CisgICAgICAgICAgICAgICAgICAgIGZhaWw9IHRydWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGVzdENhbC5zZXRUaW1lKHNhdmUpOworICAgICAgICAgICAgICAgIHRlc3RDYWwuYWRkKENhbGVuZGFyLkRBWV9PRl9NT05USCwgMSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IGZpZWxkIGRpc2FtYmlndWF0aW9uIHdpdGggYSBmZXcgc3BlY2lhbCBoYXJkLWNvZGVkIGNhc2VzLgorICAgICAgICAvLyBUaGlzIHNob3VsZG4ndCBmYWlsIGlmIHRoZSBhYm92ZSBjYXNlcyBhcmVuJ3QgZmFpbGluZy4KKyAgICAgICAgT2JqZWN0W10gRElTQU0gPSB7CisgICAgICAgICAgICBuZXcgSW50ZWdlcigxOTk4KSwgbmV3IEludGVnZXIoMSksIG5ldyBJbnRlZ2VyKENhbGVuZGFyLlNVTkRBWSksCisgICAgICAgICAgICAgICAgbmV3IERhdGUoOTcsIENhbGVuZGFyLkRFQ0VNQkVSLCAyOCksCisgICAgICAgICAgICBuZXcgSW50ZWdlcigxOTk4KSwgbmV3IEludGVnZXIoMiksIG5ldyBJbnRlZ2VyKENhbGVuZGFyLlNBVFVSREFZKSwKKyAgICAgICAgICAgICAgICBuZXcgRGF0ZSg5OCwgQ2FsZW5kYXIuSkFOVUFSWSwgMTApLAorICAgICAgICAgICAgbmV3IEludGVnZXIoMTk5OCksIG5ldyBJbnRlZ2VyKDUzKSwgbmV3IEludGVnZXIoQ2FsZW5kYXIuVEhVUlNEQVkpLAorICAgICAgICAgICAgICAgIG5ldyBEYXRlKDk4LCBDYWxlbmRhci5ERUNFTUJFUiwgMzEpLAorICAgICAgICAgICAgbmV3IEludGVnZXIoMTk5OCksIG5ldyBJbnRlZ2VyKDUzKSwgbmV3IEludGVnZXIoQ2FsZW5kYXIuRlJJREFZKSwKKyAgICAgICAgICAgICAgICBuZXcgRGF0ZSg5OSwgQ2FsZW5kYXIuSkFOVUFSWSwgMSksCisgICAgICAgIH07CisgICAgICAgIHRlc3RDYWwuc2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygzKTsKKyAgICAgICAgdGVzdENhbC5zZXRGaXJzdERheU9mV2VlayhDYWxlbmRhci5TVU5EQVkpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8RElTQU0ubGVuZ3RoOyBpKz00KSB7CisgICAgICAgICAgICBpbnQgeSA9ICgoSW50ZWdlcilESVNBTVtpXSkuaW50VmFsdWUoKTsKKyAgICAgICAgICAgIGludCB3b3kgPSAoKEludGVnZXIpRElTQU1baSsxXSkuaW50VmFsdWUoKTsKKyAgICAgICAgICAgIGludCBkb3cgPSAoKEludGVnZXIpRElTQU1baSsyXSkuaW50VmFsdWUoKTsKKyAgICAgICAgICAgIERhdGUgZXhwID0gKERhdGUpRElTQU1baSszXTsKKyAgICAgICAgICAgIHRlc3RDYWwuY2xlYXIoKTsKKyAgICAgICAgICAgIHRlc3RDYWwuc2V0KENhbGVuZGFyLllFQVIsIHkpOworICAgICAgICAgICAgdGVzdENhbC5zZXQoQ2FsZW5kYXIuV0VFS19PRl9ZRUFSLCB3b3kpOworICAgICAgICAgICAgdGVzdENhbC5zZXQoQ2FsZW5kYXIuREFZX09GX1dFRUssIGRvdyk7CisgICAgICAgICAgICBsb2coeSArICItVyIgKyB3b3kgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLURPVyIgKyBkb3cgKyAiIGV4cGVjdDoiICsgZXhwICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBnb3Q6IiArIHRlc3RDYWwuZ2V0VGltZSgpKTsKKyAgICAgICAgICAgIGlmICghdGVzdENhbC5nZXRUaW1lKCkuZXF1YWxzKGV4cCkpIHsKKyAgICAgICAgICAgICAgICBsb2coIiAgRkFJTCIpOworICAgICAgICAgICAgICAgIGZhaWwgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy9sb2dsbigpOworICAgICAgICB9CisKKyAgICAgICAgLy8gTm93IHRyeSBhZGRpbmcgYW5kIHJvbGxpbmcKKyAgICAgICAgT2JqZWN0IEFERCA9IG5ldyBPYmplY3QoKTsKKyAgICAgICAgT2JqZWN0IFJPTEwgPSBuZXcgT2JqZWN0KCk7CisgICAgICAgIE9iamVjdFtdIEFERFJPTEwgPSB7CisgICAgICAgICAgICBBREQsIG5ldyBJbnRlZ2VyKDEpLCBuZXcgRGF0ZSg5OCwgQ2FsZW5kYXIuREVDRU1CRVIsIDI1KSwgbmV3IERhdGUoOTksIENhbGVuZGFyLkpBTlVBUlksIDEpLAorICAgICAgICAgICAgQURELCBuZXcgSW50ZWdlcigxKSwgbmV3IERhdGUoOTcsIENhbGVuZGFyLkRFQ0VNQkVSLCAyOCksIG5ldyBEYXRlKDk4LCBDYWxlbmRhci5KQU5VQVJZLCA0KSwKKyAgICAgICAgICAgIFJPTEwsIG5ldyBJbnRlZ2VyKDEpLCBuZXcgRGF0ZSg5OCwgQ2FsZW5kYXIuREVDRU1CRVIsIDI3KSwgbmV3IERhdGUoOTcsIENhbGVuZGFyLkRFQ0VNQkVSLCAyOCksCisgICAgICAgICAgICBST0xMLCBuZXcgSW50ZWdlcigxKSwgbmV3IERhdGUoOTksIENhbGVuZGFyLkpBTlVBUlksIDIpLCBuZXcgRGF0ZSg5OCwgQ2FsZW5kYXIuSkFOVUFSWSwgMyksCisgICAgICAgIH07CisgICAgICAgIHRlc3RDYWwuc2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygzKTsKKyAgICAgICAgdGVzdENhbC5zZXRGaXJzdERheU9mV2VlayhDYWxlbmRhci5TVU5EQVkpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8QUREUk9MTC5sZW5ndGg7IGkrPTQpIHsKKyAgICAgICAgICAgIGludCBhbW91bnQgPSAoKEludGVnZXIpQUREUk9MTFtpKzFdKS5pbnRWYWx1ZSgpOworICAgICAgICAgICAgRGF0ZSBiZWZvcmUgPSAoRGF0ZSlBRERST0xMW2krMl07CisgICAgICAgICAgICBEYXRlIGFmdGVyID0gKERhdGUpQUREUk9MTFtpKzNdOworCisgICAgICAgICAgICB0ZXN0Q2FsLnNldFRpbWUoYmVmb3JlKTsKKyAgICAgICAgICAgIGlmIChBRERST0xMW2ldID09IEFERCkgdGVzdENhbC5hZGQoQ2FsZW5kYXIuV0VFS19PRl9ZRUFSLCBhbW91bnQpOworICAgICAgICAgICAgZWxzZSB0ZXN0Q2FsLnJvbGwoQ2FsZW5kYXIuV0VFS19PRl9ZRUFSLCBhbW91bnQpOworICAgICAgICAgICAgbG9nKChBRERST0xMW2ldPT1BREQ/ImFkZChXT1ksIjoicm9sbChXT1ksIikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbW91bnQgKyAiKSAiICsgYmVmb3JlICsgIiA9PiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdENhbC5nZXRUaW1lKCkpOworICAgICAgICAgICAgaWYgKCFhZnRlci5lcXVhbHModGVzdENhbC5nZXRUaW1lKCkpKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIiAgZXhwOiIgKyBhZnRlciArICIgIEZBSUwiKTsKKyAgICAgICAgICAgICAgICBmYWlsID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgbG9nbG4oIiBvayIpOworCisgICAgICAgICAgICB0ZXN0Q2FsLnNldFRpbWUoYWZ0ZXIpOworICAgICAgICAgICAgaWYgKEFERFJPTExbaV0gPT0gQUREKSB0ZXN0Q2FsLmFkZChDYWxlbmRhci5XRUVLX09GX1lFQVIsIC1hbW91bnQpOworICAgICAgICAgICAgZWxzZSB0ZXN0Q2FsLnJvbGwoQ2FsZW5kYXIuV0VFS19PRl9ZRUFSLCAtYW1vdW50KTsKKyAgICAgICAgICAgIGxvZygoQUREUk9MTFtpXT09QUREPyJhZGQoV09ZLCI6InJvbGwoV09ZLCIpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC1hbW91bnQpICsgIikgIiArIGFmdGVyICsgIiA9PiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdENhbC5nZXRUaW1lKCkpOworICAgICAgICAgICAgaWYgKCFiZWZvcmUuZXF1YWxzKHRlc3RDYWwuZ2V0VGltZSgpKSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKCIgIGV4cDoiICsgYmVmb3JlICsgIiAgRkFJTCIpOworICAgICAgICAgICAgICAgIGZhaWwgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBsb2dsbigiIG9rIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZmFpbCkgZXJybG4oIkZhaWw6IFdlZWsgb2YgeWVhciBtaXNiZWhhdmluZyIpOworICAgIH0gCisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDEwNjEzNigpIHsKKyAgICAgICAgTG9jYWxlIHNhdmVMb2NhbGUgPSBMb2NhbGUuZ2V0RGVmYXVsdCgpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgTG9jYWxlW10gbG9jYWxlcyA9IHsgTG9jYWxlLkNISU5FU0UsIExvY2FsZS5DSElOQSB9OworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPGxvY2FsZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBMb2NhbGUuc2V0RGVmYXVsdChsb2NhbGVzW2ldKTsKKyAgICAgICAgICAgICAgICBpbnRbXSBuID0geworICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5nZXRBdmFpbGFibGVMb2NhbGVzKCkubGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICBEYXRlRm9ybWF0LmdldEF2YWlsYWJsZUxvY2FsZXMoKS5sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgIE51bWJlckZvcm1hdC5nZXRBdmFpbGFibGVMb2NhbGVzKCkubGVuZ3RoCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBqPTA7IGo8bi5sZW5ndGg7ICsraikgeworICAgICAgICAgICAgICAgICAgICBpZiAobltqXSA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZhaWw6IE5vIGxvY2FsZXMgZm9yICIgKyBsb2NhbGVzW2ldKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZmluYWxseSB7CisgICAgICAgICAgICBMb2NhbGUuc2V0RGVmYXVsdChzYXZlTG9jYWxlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTA4NzY0KCkgeworICAgICAgICBEYXRlIGQwMCA9IG5ldyBEYXRlKDk3LCBDYWxlbmRhci5NQVJDSCwgMTUsIDEyLCAwMCwgMDApOworICAgICAgICBEYXRlIGQwMSA9IG5ldyBEYXRlKDk3LCBDYWxlbmRhci5NQVJDSCwgMTUsIDEyLCAwMCwgNTYpOworICAgICAgICBEYXRlIGQxMCA9IG5ldyBEYXRlKDk3LCBDYWxlbmRhci5NQVJDSCwgMTUsIDEyLCAzNCwgMDApOworICAgICAgICBEYXRlIGQxMSA9IG5ldyBEYXRlKDk3LCBDYWxlbmRhci5NQVJDSCwgMTUsIDEyLCAzNCwgNTYpOworICAgICAgICBEYXRlIGRNICA9IG5ldyBEYXRlKDk3LCBDYWxlbmRhci5KQU5VQVJZLCAxNSwgMTIsIDM0LCA1Nik7CisgICAgICAgIERhdGUgZXBvY2ggPSBuZXcgRGF0ZSg3MCwgQ2FsZW5kYXIuSkFOVUFSWSwgMSk7CisKKyAgICAgICAgQ2FsZW5kYXIgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsgCisgICAgICAgIGNhbC5zZXRUaW1lKGQxMSk7CisKKyAgICAgICAgY2FsLmNsZWFyKCBDYWxlbmRhci5NSU5VVEUgKTsgCisgICAgICAgIGxvZ2xuKGNhbC5nZXRUaW1lKCkudG9TdHJpbmcoKSk7IAorICAgICAgICBpZiAoIWNhbC5nZXRUaW1lKCkuZXF1YWxzKGQwMSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiAiICsgZDExICsgIiBjbGVhcihNSU5VVEUpID0+IGV4cGVjdCAiICsKKyAgICAgICAgICAgICAgICAgIGQwMSArICIsIGdvdCAiICsgY2FsLmdldFRpbWUoKSk7CisgICAgICAgIH0KKworICAgICAgICBjYWwuc2V0KCBDYWxlbmRhci5TRUNPTkQsIDAgKTsgCisgICAgICAgIGxvZ2xuKGNhbC5nZXRUaW1lKCkudG9TdHJpbmcoKSk7IAorICAgICAgICBpZiAoIWNhbC5nZXRUaW1lKCkuZXF1YWxzKGQwMCkpCisgICAgICAgICAgICBlcnJsbigiRmFpbDogc2V0KFNFQ09ORCwgMCkgYnJva2VuIik7CisKKyAgICAgICAgY2FsLnNldFRpbWUoZDExKTsKKyAgICAgICAgY2FsLnNldCggQ2FsZW5kYXIuU0VDT05ELCAwICk7IAorICAgICAgICBsb2dsbihjYWwuZ2V0VGltZSgpLnRvU3RyaW5nKCkpOyAKKyAgICAgICAgaWYgKCFjYWwuZ2V0VGltZSgpLmVxdWFscyhkMTApKQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IHNldChTRUNPTkQsIDApIGJyb2tlbiAjMiIpOworCisgICAgICAgIGNhbC5jbGVhciggQ2FsZW5kYXIuTUlOVVRFICk7IAorICAgICAgICBsb2dsbihjYWwuZ2V0VGltZSgpLnRvU3RyaW5nKCkpOyAKKyAgICAgICAgaWYgKCFjYWwuZ2V0VGltZSgpLmVxdWFscyhkMDApKQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IGNsZWFyKE1JTlVURSkgYnJva2VuICMyIik7CisKKyAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgIGxvZ2xuKGNhbC5nZXRUaW1lKCkudG9TdHJpbmcoKSk7CisgICAgICAgIGlmICghY2FsLmdldFRpbWUoKS5lcXVhbHMoZXBvY2gpKQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IGFmdGVyIGNsZWFyKCkgZXhwZWN0ICIgKyBlcG9jaCArICIsIGdvdCAiICsgY2FsLmdldFRpbWUoKSk7CisKKyAgICAgICAgY2FsLnNldFRpbWUoZDExKTsKKyAgICAgICAgY2FsLmNsZWFyKCBDYWxlbmRhci5NT05USCApOyAKKyAgICAgICAgbG9nbG4oY2FsLmdldFRpbWUoKS50b1N0cmluZygpKTsgCisgICAgICAgIGlmICghY2FsLmdldFRpbWUoKS5lcXVhbHMoZE0pKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIGQxMSArICIgY2xlYXIoTU9OVEgpID0+IGV4cGVjdCAiICsKKyAgICAgICAgICAgICAgICAgIGRNICsgIiwgZ290ICIgKyBjYWwuZ2V0VGltZSgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTE0NTc4KCkgeworICAgICAgICBpbnQgT05FX0hPVVIgPSA2MCo2MCoxMDAwOworICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICBjYWwuc2V0VGltZVpvbmUoVGltZVpvbmUuZ2V0VGltZVpvbmUoIlBTVCIpKTsKKyAgICAgICAgbG9uZyBvbnNldCA9IG5ldyBEYXRlKDk4LCBDYWxlbmRhci5BUFJJTCwgNSwgMSwgMCkuZ2V0VGltZSgpICsgT05FX0hPVVI7CisgICAgICAgIGxvbmcgY2Vhc2UgPSBuZXcgRGF0ZSg5OCwgQ2FsZW5kYXIuT0NUT0JFUiwgMjUsIDAsIDApLmdldFRpbWUoKSArIDIqT05FX0hPVVI7CisKKyAgICAgICAgYm9vbGVhbiBmYWlsID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICBmaW5hbCBpbnQgQUREID0gMTsKKyAgICAgICAgZmluYWwgaW50IFJPTEwgPSAyOworCisgICAgICAgIGxvbmdbXSBEQVRBID0geworICAgICAgICAgICAgLy8gU3RhcnQgICAgICAgICAgICBBY3Rpb24gICBBbXQgICAgRXhwZWN0ZWRfY2hhbmdlCisgICAgICAgICAgICBvbnNldCAtIE9ORV9IT1VSLCAgIEFERCwgICAgICAxLCAgICAgT05FX0hPVVIsCisgICAgICAgICAgICBvbnNldCwgICAgICAgICAgICAgIEFERCwgICAgIC0xLCAgICAtT05FX0hPVVIsCisgICAgICAgICAgICBvbnNldCAtIE9ORV9IT1VSLCAgIFJPTEwsICAgICAxLCAgICAgT05FX0hPVVIsCisgICAgICAgICAgICBvbnNldCwgICAgICAgICAgICAgIFJPTEwsICAgIC0xLCAgICAtT05FX0hPVVIsCisgICAgICAgICAgICBjZWFzZSAtIE9ORV9IT1VSLCAgIEFERCwgICAgICAxLCAgICAgT05FX0hPVVIsCisgICAgICAgICAgICBjZWFzZSwgICAgICAgICAgICAgIEFERCwgICAgIC0xLCAgICAtT05FX0hPVVIsCisgICAgICAgICAgICBjZWFzZSAtIE9ORV9IT1VSLCAgIFJPTEwsICAgICAxLCAgICAgT05FX0hPVVIsCisgICAgICAgICAgICBjZWFzZSwgICAgICAgICAgICAgIFJPTEwsICAgIC0xLCAgICAtT05FX0hPVVIsCisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz00KSB7CisgICAgICAgICAgICBEYXRlIGRhdGUgPSBuZXcgRGF0ZShEQVRBW2ldKTsKKyAgICAgICAgICAgIGludCBhbXQgPSAoaW50KSBEQVRBW2krMl07CisgICAgICAgICAgICBsb25nIGV4cGVjdGVkQ2hhbmdlID0gREFUQVtpKzNdOworICAgICAgICAgICAgCisgICAgICAgICAgICBsb2coZGF0ZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGNhbC5zZXRUaW1lKGRhdGUpOworCisgICAgICAgICAgICBzd2l0Y2ggKChpbnQpIERBVEFbaSsxXSkgeworICAgICAgICAgICAgY2FzZSBBREQ6CisgICAgICAgICAgICAgICAgbG9nKCIgYWRkIChIT1VSLCIgKyAoYW10PDA/IiI6IisiKSthbXQgKyAiKT0gIik7CisgICAgICAgICAgICAgICAgY2FsLmFkZChDYWxlbmRhci5IT1VSLCBhbXQpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBST0xMOgorICAgICAgICAgICAgICAgIGxvZygiIHJvbGwoSE9VUiwiICsgKGFtdDwwPyIiOiIrIikrYW10ICsgIik9ICIpOworICAgICAgICAgICAgICAgIGNhbC5yb2xsKENhbGVuZGFyLkhPVVIsIGFtdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxvZyhjYWwuZ2V0VGltZSgpLnRvU3RyaW5nKCkpOworCisgICAgICAgICAgICBsb25nIGNoYW5nZSA9IGNhbC5nZXRUaW1lKCkuZ2V0VGltZSgpIC0gZGF0ZS5nZXRUaW1lKCk7CisgICAgICAgICAgICBpZiAoY2hhbmdlICE9IGV4cGVjdGVkQ2hhbmdlKSB7CisgICAgICAgICAgICAgICAgZmFpbCA9IHRydWU7CisgICAgICAgICAgICAgICAgbG9nbG4oIiBGQUlMIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGxvZ2xuKCIgT0siKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmYWlsKSBlcnJsbigiRmFpbDogcm9sbC9hZGQgbWlzYmVoYXZlcyBhcm91bmQgRFNUIG9uc2V0L2NlYXNlIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWFrZSBzdXJlIG1heGltdW0gZm9yIEhPVVIgZmllbGQgaXMgMTEsIG5vdCAxMi4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDExODM4NCgpIHsKKyAgICAgICAgQ2FsZW5kYXIgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgaWYgKGNhbC5nZXRNYXhpbXVtKENhbGVuZGFyLkhPVVIpICE9IDExIHx8CisgICAgICAgICAgICBjYWwuZ2V0TGVhc3RNYXhpbXVtKENhbGVuZGFyLkhPVVIpICE9IDExIHx8CisgICAgICAgICAgICBjYWwuZ2V0QWN0dWFsTWF4aW11bShDYWxlbmRhci5IT1VSKSAhPSAxMSkKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiBtYXhpbXVtIG9mIEhPVVIgZmllbGQgc2hvdWxkIGJlIDExIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2hlY2sgaXNMZWFwWWVhciBmb3IgQkMgeWVhcnMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxMjU4ODEoKSB7CisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbCA9IChHcmVnb3JpYW5DYWxlbmRhcikgQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgRGF0ZUZvcm1hdCBmbXQgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgiTU1NTSBkLCB5eXl5IEciKTsKKyAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgIGZvciAoaW50IHk9LTIwOyB5PD0xMDsgKyt5KSB7CisgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLkVSQSwgeSA8IDEgPyBHcmVnb3JpYW5DYWxlbmRhci5CQyA6IEdyZWdvcmlhbkNhbGVuZGFyLkFEKTsKKyAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuWUVBUiwgeSA8IDEgPyAxIC0geSA6IHkpOworICAgICAgICAgICAgbG9nbG4oeSArICIgPSAiICsgZm10LmZvcm1hdChjYWwuZ2V0VGltZSgpKSArICIgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsLmlzTGVhcFllYXIoeSkpOworICAgICAgICAgICAgaWYgKGNhbC5pc0xlYXBZZWFyKHkpICE9ICgoeSs0MCklNCA9PSAwKSkKKyAgICAgICAgICAgICAgICBlcnJsbigiTGVhcCB5ZWFycyBicm9rZW4iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEkgYW0gZGlzYWJsaW5nIHRoaXMgdGVzdCAtLSBpdCBpcyBjdXJyZW50bHkgZmFpbGluZyBiZWNhdXNlIG9mIGEgYnVnCisgICAgLy8gaW4gU3VuJ3MgbGF0ZXN0IGNoYW5nZSB0byBTVFouZ2V0T2Zmc2V0KCkuICBJIGhhdmUgZmlsZWQgYSBTdW4gYnVnCisgICAgLy8gYWdhaW5zdCB0aGlzIHByb2JsZW0uCisKKyAgICAvLyBSZS1lbmFibGVkIGFmdGVyICdwb3J0aW5nJyBUWiBhbmQgU1RaIGZyb20gamF2YS51dGlsIHRvIGNvbS5pYm0udXRpbC4KKyAgICAvKioKKyAgICAgKiBQcm92ZSB0aGF0IEdyZWdvcmlhbkNhbGVuZGFyIGlzIHByb2xlcHRpYyAoaXQgdXNlZCB0byBjdXQgb2ZmCisgICAgICogYXQgNDUgQkMsIGFuZCBub3QgaGF2ZSBsZWFwIHllYXJzIGJlZm9yZSB0aGVuKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDEyNTg5MigpIHsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsID0gKEdyZWdvcmlhbkNhbGVuZGFyKSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICBEYXRlRm9ybWF0IGZtdCA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJNTU1NIGQsIHl5eXkgRyIpOworICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldChDYWxlbmRhci5FUkEsIEdyZWdvcmlhbkNhbGVuZGFyLkJDKTsKKyAgICAgICAgY2FsLnNldChDYWxlbmRhci5ZRUFSLCA4MSk7IC8vIDgxIEJDIGlzIGEgbGVhcCB5ZWFyIChwcm9sZXB0aWNhbGx5KQorICAgICAgICBjYWwuc2V0KENhbGVuZGFyLk1PTlRILCBDYWxlbmRhci5GRUJSVUFSWSk7CisgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuREFURSwgMjgpOworICAgICAgICBjYWwuYWRkKENhbGVuZGFyLkRBVEUsIDEpOworICAgICAgICBpZiAoY2FsLmdldChDYWxlbmRhci5EQVRFKSAhPSAyOSB8fAorICAgICAgICAgICAgIWNhbC5pc0xlYXBZZWFyKC04MCkpIC8vIC04MCA9PSA4MSBCQworICAgICAgICAgICAgZXJybG4oIkNhbGVuZGFyIG5vdCBwcm9sZXB0aWMiKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDYWxlbmRhciBhbmQgR3JlZ29yaWFuQ2FsZW5kYXIgaGFzaENvZGUoKSBtZXRob2RzIG5lZWQgaW1wcm92ZW1lbnQuCisgICAgICogQ2FsZW5kYXIgbmVlZHMgYSBnb29kIGltcGxlbWVudGF0aW9uIHRoYXQgc3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUsCisgICAgICogYW5kIEdyZWdvcmlhbkNhbGVuZGFyIHNob3VsZCB1c2UgdGhhdCBpbXBsZW1lbnRhdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDEzNjM5OSgpIHsKKyAgICAgICAgLyogTm90ZTogVGhpcyB0ZXN0IGlzIGFjdHVhbGx5IG1vcmUgc3RyaWN0IHRoYW4gaXQgaGFzIHRvIGJlLgorICAgICAgICAgKiBUZWNobmljYWxseSwgdGhlcmUgaXMgbm8gcmVxdWlyZW1lbnQgdGhhdCB1bmVxdWFsIG9iamVjdHMgaGF2ZQorICAgICAgICAgKiB1bmVxdWFsIGhhc2hlcy4gIFdlIG9ubHkgcmVxdWlyZSBlcXVhbCBvYmplY3RzIHRvIGhhdmUgZXF1YWwgaGFzaGVzLgorICAgICAgICAgKiBJdCBpcyBkZXNpcmFibGUgZm9yIHVuZXF1YWwgb2JqZWN0cyB0byBoYXZlIGRpc3RyaWJ1dGVkIGhhc2hlcywgYnV0CisgICAgICAgICAqIHRoZXJlIGlzIG5vIGhhcmQgcmVxdWlyZW1lbnQgaGVyZS4KKyAgICAgICAgICoKKyAgICAgICAgICogSW4gdGhpcyB0ZXN0IHdlIG1ha2UgYXNzdW1wdGlvbnMgYWJvdXQgY2VydGFpbiBhdHRyaWJ1dGVzIG9mIGNhbGVuZGFyCisgICAgICAgICAqIG9iamVjdHMgZ2V0dGluZyByZXByZXNlbnRlZCBpbiB0aGUgaGFzaCwgd2hpY2ggbmVlZCBub3QgYWx3YXlzIGJlIHRoZQorICAgICAgICAgKiBjYXNlIChhbHRob3VnaCBpdCBkb2VzIHdvcmsgY3VycmVudGx5IHdpdGggdGhlIGdpdmVuIHRlc3QpLiAqLworICAgICAgICBDYWxlbmRhciBhID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgQ2FsZW5kYXIgYiA9IChDYWxlbmRhcilhLmNsb25lKCk7CisgICAgICAgIGlmIChhLmhhc2hDb2RlKCkgIT0gYi5oYXNoQ29kZSgpKSB7CisgICAgICAgICAgICBlcnJsbigiQ2FsZW5kYXIgaGFzaCBjb2RlIHVuZXF1YWwgZm9yIGNsb25lZCBvYmplY3RzIik7CisgICAgICAgIH0KKworICAgICAgICBiLnNldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsoNyAtIGEuZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpKTsKKyAgICAgICAgaWYgKGEuaGFzaENvZGUoKSA9PSBiLmhhc2hDb2RlKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJDYWxlbmRhciBoYXNoIGNvZGUgaWdub3JlcyBtaW5pbWFsIGRheXMgaW4gZmlyc3Qgd2VlayIpOworICAgICAgICB9CisgICAgICAgIGIuc2V0TWluaW1hbERheXNJbkZpcnN0V2VlayhhLmdldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsoKSk7CisKKyAgICAgICAgYi5zZXRGaXJzdERheU9mV2VlaygoYS5nZXRGaXJzdERheU9mV2VlaygpICUgNykgKyAxKTsgLy8gTmV4dCBkYXkKKyAgICAgICAgaWYgKGEuaGFzaENvZGUoKSA9PSBiLmhhc2hDb2RlKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJDYWxlbmRhciBoYXNoIGNvZGUgaWdub3JlcyBmaXJzdCBkYXkgb2Ygd2VlayIpOworICAgICAgICB9CisgICAgICAgIGIuc2V0Rmlyc3REYXlPZldlZWsoYS5nZXRGaXJzdERheU9mV2VlaygpKTsKKworICAgICAgICBiLnNldExlbmllbnQoIWEuaXNMZW5pZW50KCkpOworICAgICAgICBpZiAoYS5oYXNoQ29kZSgpID09IGIuaGFzaENvZGUoKSkgeworICAgICAgICAgICAgZXJybG4oIkNhbGVuZGFyIGhhc2ggY29kZSBpZ25vcmVzIGxlbmllbnQgc2V0dGluZyIpOworICAgICAgICB9CisgICAgICAgIGIuc2V0TGVuaWVudChhLmlzTGVuaWVudCgpKTsKKyAgICAgICAgCisgICAgICAgIC8vIEFzc3VtZSBnZXRUaW1lWm9uZSgpIHJldHVybnMgYSByZWZlcmVuY2UsIG5vdCBhIGNsb25lCisgICAgICAgIC8vIG9mIGEgcmVmZXJlbmNlIC0tIHRoaXMgaXMgdHJ1ZSBhcyBvZiB0aGlzIHdyaXRpbmcKKyAgICAgICAgYi5nZXRUaW1lWm9uZSgpLnNldFJhd09mZnNldChhLmdldFRpbWVab25lKCkuZ2V0UmF3T2Zmc2V0KCkgKyA2MCo2MCoxMDAwKTsKKyAgICAgICAgaWYgKGEuaGFzaENvZGUoKSA9PSBiLmhhc2hDb2RlKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJDYWxlbmRhciBoYXNoIGNvZGUgaWdub3JlcyB6b25lIik7CisgICAgICAgIH0KKyAgICAgICAgYi5nZXRUaW1lWm9uZSgpLnNldFJhd09mZnNldChhLmdldFRpbWVab25lKCkuZ2V0UmF3T2Zmc2V0KCkpOworCisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGMgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKTsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgZCA9IChHcmVnb3JpYW5DYWxlbmRhciljLmNsb25lKCk7CisgICAgICAgIGlmIChjLmhhc2hDb2RlKCkgIT0gZC5oYXNoQ29kZSgpKSB7CisgICAgICAgICAgICBlcnJsbigiR3JlZ29yaWFuQ2FsZW5kYXIgaGFzaCBjb2RlIHVuZXF1YWwgZm9yIGNsb25lcyBvYmplY3RzIik7CisgICAgICAgIH0KKyAgICAgICAgRGF0ZSBjdXRvdmVyID0gYy5nZXRHcmVnb3JpYW5DaGFuZ2UoKTsKKyAgICAgICAgZC5zZXRHcmVnb3JpYW5DaGFuZ2UobmV3IERhdGUoY3V0b3Zlci5nZXRUaW1lKCkgKyAyNCo2MCo2MCoxMDAwKSk7CisgICAgICAgIGlmIChjLmhhc2hDb2RlKCkgPT0gZC5oYXNoQ29kZSgpKSB7CisgICAgICAgICAgICBlcnJsbigiR3JlZ29yaWFuQ2FsZW5kYXIgaGFzaCBjb2RlIGlnbm9yZXMgY3V0b3ZlciIpOworICAgICAgICB9ICAgICAgICAKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHcmVnb3JpYW5DYWxlbmRhci5lcXVhbHMoKSBpZ25vcmVzIGN1dG92ZXIgZGF0ZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTQxNjY1KCkgeworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWwgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKTsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsMiA9IChHcmVnb3JpYW5DYWxlbmRhciljYWwuY2xvbmUoKTsKKyAgICAgICAgRGF0ZSBjdXQgPSBjYWwuZ2V0R3JlZ29yaWFuQ2hhbmdlKCk7CisgICAgICAgIERhdGUgY3V0MiA9IG5ldyBEYXRlKGN1dC5nZXRUaW1lKCkgKyAxMDAqMjQqNjAqNjAqMTAwMEwpOyAvLyAxMDAgZGF5cyBsYXRlcgorICAgICAgICBpZiAoIWNhbC5lcXVhbHMoY2FsMikpIHsKKyAgICAgICAgICAgIGVycmxuKCJDbG9uZWQgR3JlZ29yaWFuQ2FsZW5kYXJzIG5vdCBlcXVhbCIpOworICAgICAgICB9CisgICAgICAgIGNhbDIuc2V0R3JlZ29yaWFuQ2hhbmdlKGN1dDIpOworICAgICAgICBpZiAoY2FsLmVxdWFscyhjYWwyKSkgeworICAgICAgICAgICAgZXJybG4oIkdyZWdvcmlhbkNhbGVuZGFyLmVxdWFscygpIGlnbm9yZXMgY3V0b3ZlciIpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEJ1ZyBzdGF0ZXMgdGhhdCBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaXMgdGhyb3duIGJ5IEdyZWdvcmlhbkNhbGVuZGFyLnJvbGwoKQorICAgICAqIHdoZW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHNob3VsZCBiZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE0MjkzMygpIHsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsZW5kYXIgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGNhbGVuZGFyLnJvbGwoLTEsIHRydWUpOworICAgICAgICAgICAgZXJybG4oIlRlc3QgZmFpbGVkLCBubyBleGNlcHRpb24gdHJvd24iKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIC8vIE9LOiBEbyBub3RoaW5nCisgICAgICAgICAgICAvLyBsb2dsbigiVGVzdCBwYXNzZWQiKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJUZXN0IGZhaWxlZC4gVW5leHBlY3RlZCBleGNlcHRpb24gaXMgdGhyb3duOiAiICsgZSk7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICB9IAorICAgIH0KKworICAgIC8qKgorICAgICAqIEdyZWdvcmlhbkNhbGVuZGFyIGhhbmRsaW5nIG9mIERhdGVzIExvbmcuTUlOX1ZBTFVFIGFuZCBMb25nLk1BWF9WQUxVRSBpcworICAgICAqIGNvbmZ1c2luZzsgdW5sZXNzIHRoZSB0aW1lIHpvbmUgaGFzIGEgcmF3IG9mZnNldCBvZiB6ZXJvLCBvbmUgb3IgdGhlCisgICAgICogb3RoZXIgb2YgdGhlc2Ugd2lsbCB3cmFwLiAgV2UndmUgbW9kaWZpZWQgdGhlIHRlc3QgZ2l2ZW4gaW4gdGhlIGJ1ZworICAgICAqIHJlcG9ydCB0byB0aGVyZWZvcmUgb25seSBjaGVjayB0aGUgYmVoYXZpb3Igb2YgYSBjYWxlbmRhciB3aXRoIGEgemVybyByYXcKKyAgICAgKiBvZmZzZXQgem9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE0NTE1OCgpIHsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsZW5kYXIgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKTsKKworICAgICAgICBjYWxlbmRhci5zZXRUaW1lWm9uZShUaW1lWm9uZS5nZXRUaW1lWm9uZSgiR01UIikpOworCisgICAgICAgIGNhbGVuZGFyLnNldFRpbWUobmV3IERhdGUoTG9uZy5NSU5fVkFMVUUpKTsKKyAgICAgICAgaW50IHllYXIxID0gY2FsZW5kYXIuZ2V0KENhbGVuZGFyLllFQVIpOworICAgICAgICBpbnQgZXJhMSA9IGNhbGVuZGFyLmdldChDYWxlbmRhci5FUkEpOworICAgICAgICAKKyAgICAgICAgY2FsZW5kYXIuc2V0VGltZShuZXcgRGF0ZShMb25nLk1BWF9WQUxVRSkpOworICAgICAgICBpbnQgeWVhcjIgPSBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuWUVBUik7CisgICAgICAgIGludCBlcmEyID0gY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkVSQSk7CisgICAgICAgIAorICAgICAgICBpZiAoeWVhcjEgPT0geWVhcjIgJiYgZXJhMSA9PSBlcmEyKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbDogTG9uZy5NSU5fVkFMVUUgb3IgTG9uZy5NQVhfVkFMVUUgd3JhcHBpbmcgYXJvdW5kIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNYXhpbXVtIHZhbHVlIGZvciBZRUFSIGZpZWxkIHdyb25nLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTQ1OTgzKCkgeworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWxlbmRhciA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworICAgICAgICBjYWxlbmRhci5zZXRUaW1lWm9uZShUaW1lWm9uZS5nZXRUaW1lWm9uZSgiR01UIikpOworICAgICAgICBEYXRlW10gREFURVMgPSB7IG5ldyBEYXRlKExvbmcuTUFYX1ZBTFVFKSwgbmV3IERhdGUoTG9uZy5NSU5fVkFMVUUpIH07CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRFUy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgY2FsZW5kYXIuc2V0VGltZShEQVRFU1tpXSk7CisgICAgICAgICAgICBpbnQgeWVhciA9IGNhbGVuZGFyLmdldChDYWxlbmRhci5ZRUFSKTsKKyAgICAgICAgICAgIGludCBtYXhZZWFyID0gY2FsZW5kYXIuZ2V0TWF4aW11bShDYWxlbmRhci5ZRUFSKTsKKyAgICAgICAgICAgIGlmICh5ZWFyID4gbWF4WWVhcikgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsZWQgZm9yICIrREFURVNbaV0uZ2V0VGltZSgpKyIgbXM6IHllYXI9IiArCisgICAgICAgICAgICAgICAgICAgICAgeWVhciArICIsIG1heFllYXI9IiArIG1heFllYXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBpcyBhIGJ1ZyBpbiB0aGUgdmFsaWRhdGlvbiBjb2RlIG9mIEdyZWdvcmlhbkNhbGVuZGFyLiAgQXMgcmVwb3J0ZWQsCisgICAgICogdGhlIGJ1ZyBzZWVtcyB3b3JzZSB0aGFuIGl0IHJlYWxseSBpcywgZHVlIHRvIGEgYnVnIGluIHRoZSB3YXkgdGhlIGJ1ZworICAgICAqIHJlcG9ydCB0ZXN0IHdhcyB3cml0dGVuLiAgSW4gcmVhbGl0eSB0aGUgYnVnIGlzIHJlc3RyaWN0ZWQgdG8gdGhlIERBWV9PRl9ZRUFSCisgICAgICogZmllbGQuIC0gbGl1IDYvMjkvOTgKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE0NzI2OSgpIHsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsZW5kYXIgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKTsKKyAgICAgICAgY2FsZW5kYXIuc2V0TGVuaWVudChmYWxzZSk7CisgICAgICAgIERhdGUgZGF0ZSA9IG5ldyBEYXRlKDE5OTYtMTkwMCwgQ2FsZW5kYXIuSkFOVUFSWSwgMyk7IC8vIEFyYml0cmFyeSBkYXRlCisgICAgICAgIGZvciAoaW50IGZpZWxkID0gMDsgZmllbGQgPCBjYWxlbmRhci5nZXRGaWVsZENvdW50KCk7IGZpZWxkKyspIHsKKyAgICAgICAgICAgIGNhbGVuZGFyLnNldFRpbWUoZGF0ZSk7CisgICAgICAgICAgICAvLyBOb3RlOiBJbiB0aGUgYnVnIHJlcG9ydCwgZ2V0QWN0dWFsTWF4aW11bSgpIHdhcyBjYWxsZWQgaW5zdGVhZAorICAgICAgICAgICAgLy8gb2YgZ2V0TWF4aW11bSgpIC0tIHRoaXMgd2FzIGFuIGVycm9yLiAgVGhlIHZhbGlkYXRpb24gY29kZSBkb2Vzbid0CisgICAgICAgICAgICAvLyB1c2UgZ2V0QWN0dWFsTWF4aW11bSgpLCBzaW5jZSB0aGF0J3MgdG9vIGNvc3RseS4KKyAgICAgICAgICAgIGludCBtYXggPSBjYWxlbmRhci5nZXRNYXhpbXVtKGZpZWxkKTsKKyAgICAgICAgICAgIGludCB2YWx1ZSA9IG1heCsxOworICAgICAgICAgICAgY2FsZW5kYXIuc2V0KGZpZWxkLCB2YWx1ZSk7IAorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBjYWxlbmRhci5nZXRUaW1lKCk7IC8vIEZvcmNlIHRpbWUgY29tcHV0YXRpb24KKyAgICAgICAgICAgICAgICAvLyBXZSBleHBlY3QgYW4gZXhjZXB0aW9uIHRvIGJlIHRocm93bi4gSWYgd2UgZmFsbCB0aHJvdWdoCisgICAgICAgICAgICAgICAgLy8gdG8gdGhlIG5leHQgbGluZSwgdGhlbiB3ZSBoYXZlIGEgYnVnLgorICAgICAgICAgICAgICAgIGVycmxuKCJUZXN0IGZhaWxlZCB3aXRoIGZpZWxkICIgKyBGSUVMRF9OQU1FW2ZpZWxkXSArCisgICAgICAgICAgICAgICAgICAgICAgIiwgZGF0ZSBiZWZvcmU6ICIgKyBkYXRlICsKKyAgICAgICAgICAgICAgICAgICAgICAiLCBkYXRlIGFmdGVyOiAiICsgY2FsZW5kYXIuZ2V0VGltZSgpICsKKyAgICAgICAgICAgICAgICAgICAgICAiLCB2YWx1ZTogIiArIHZhbHVlICsgIiAobWF4ID0gIiArIG1heCArIikiKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7fSAKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJlcG9ydGVkIGJ1ZyBpcyB0aGF0IGEgR3JlZ29yaWFuQ2FsZW5kYXIgd2l0aCBhIGN1dG92ZXIgb2YgRGF0ZShMb25nLk1BWF9WQUxVRSkKKyAgICAgKiBkb2Vzbid0IGJlaGF2ZSBhcyBhIHB1cmUgSnVsaWFuIGNhbGVuZGFyLgorICAgICAqIENBTk5PVCBSRVBST0RVQ0UgVEhJUyBCVUcKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE0OTY3NygpIHsKKyAgICAgICAgVGltZVpvbmVbXSB6b25lcyA9IHsgVGltZVpvbmUuZ2V0VGltZVpvbmUoIkdNVCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiUFNUIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVab25lLmdldFRpbWVab25lKCJFQVQiKSB9OworICAgICAgICBmb3IgKGludCBpPTA7IGk8em9uZXMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbGVuZGFyID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKHpvbmVzW2ldKTsKKworICAgICAgICAgICAgLy8gTWFrZSBzdXJlIGV4dHJlbWUgdmFsdWVzIGRvbid0IHdyYXAgYXJvdW5kCisgICAgICAgICAgICBjYWxlbmRhci5zZXRUaW1lKG5ldyBEYXRlKExvbmcuTUlOX1ZBTFVFKSk7CisgICAgICAgICAgICBpZiAoY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkVSQSkgIT0gR3JlZ29yaWFuQ2FsZW5kYXIuQkMpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogTG9uZy5NSU5fVkFMVUUgbXMgaGFzIGFuIEFEIHllYXIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhbGVuZGFyLnNldFRpbWUobmV3IERhdGUoTG9uZy5NQVhfVkFMVUUpKTsKKyAgICAgICAgICAgIGlmIChjYWxlbmRhci5nZXQoQ2FsZW5kYXIuRVJBKSAhPSBHcmVnb3JpYW5DYWxlbmRhci5BRCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiBMb25nLk1BWF9WQUxVRSBtcyBoYXMgYSBCQyB5ZWFyIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhbGVuZGFyLnNldEdyZWdvcmlhbkNoYW5nZShuZXcgRGF0ZShMb25nLk1BWF9WQUxVRSkpOworICAgICAgICAgICAgLy8gdG8gb2J0YWluIGEgcHVyZSBKdWxpYW4gY2FsZW5kYXIKKyAgICAgICAgICAgIAorICAgICAgICAgICAgYm9vbGVhbiBpczEwMExlYXAgPSBjYWxlbmRhci5pc0xlYXBZZWFyKDEwMCk7CisgICAgICAgICAgICBpZiAoIWlzMTAwTGVhcCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJ0ZXN0IGZhaWxlZCB3aXRoIHpvbmUgIiArIHpvbmVzW2ldLmdldElEKCkpOworICAgICAgICAgICAgICAgIGVycmxuKCIgY3V0b3ZlciBkYXRlIGlzIENhbGVuZGFyLk1BWF9EQVRFIik7CisgICAgICAgICAgICAgICAgZXJybG4oIiBpc0xlYXBZZWFyKDEwMCkgcmV0dXJuczogIiArIGlzMTAwTGVhcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDYWxlbmRhciBhbmQgRGF0ZSBIT1VSIGJyb2tlbi4gIElmIEhPVVIgaXMgb3V0LW9mLXJhbmdlLCBDYWxlbmRhcgorICAgICAqIGFuZCBEYXRlIGNsYXNzZXMgd2lsbCBtaXNiZWhhdmUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxNjI1ODcoKSB7CisgICAgICAgIFRpbWVab25lIHR6ID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoIlBTVCIpOworICAgICAgICBUaW1lWm9uZS5zZXREZWZhdWx0KHR6KTsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKHR6KTsKKyAgICAgICAgRGF0ZSBkOworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPDU7ICsraSkgeworICAgICAgICAgICAgaWYgKGk+MCkgbG9nbG4oIi0tLSIpOworCisgICAgICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgICAgIGNhbC5zZXQoMTk5OCwgQ2FsZW5kYXIuQVBSSUwsIDUsIGksIDApOworICAgICAgICAgICAgZCA9IGNhbC5nZXRUaW1lKCk7CisgICAgICAgICAgICBTdHJpbmcgczAgPSBkLnRvU3RyaW5nKCk7CisgICAgICAgICAgICBsb2dsbigiMCAiICsgaSArICI6ICIgKyBzMCk7CisKKyAgICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgICAgY2FsLnNldCgxOTk4LCBDYWxlbmRhci5BUFJJTCwgNCwgaSsyNCwgMCk7CisgICAgICAgICAgICBkID0gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgICAgIFN0cmluZyBzUGx1cyA9IGQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIGxvZ2xuKCIrICIgKyBpICsgIjogIiArIHNQbHVzKTsKKworICAgICAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgICAgICBjYWwuc2V0KDE5OTgsIENhbGVuZGFyLkFQUklMLCA2LCBpLTI0LCAwKTsKKyAgICAgICAgICAgIGQgPSBjYWwuZ2V0VGltZSgpOworICAgICAgICAgICAgU3RyaW5nIHNNaW51cyA9IGQudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIGxvZ2xuKCItICIgKyBpICsgIjogIiArIHNNaW51cyk7CisKKyAgICAgICAgICAgIGlmICghczAuZXF1YWxzKHNQbHVzKSB8fCAhczAuZXF1YWxzKHNNaW51cykpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogQWxsIHRocmVlIGxpbmVzIG11c3QgbWF0Y2giKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEFkZGluZyAxMiBtb250aHMgYmVoYXZlcyBkaWZmZXJlbnRseSBmcm9tIGFkZGluZyAxIHllYXIKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE2NTM0MygpIHsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsZW5kYXIgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoMTk5NiwgQ2FsZW5kYXIuRkVCUlVBUlksIDI5KTsKKyAgICAgICAgRGF0ZSBzdGFydCA9IGNhbGVuZGFyLmdldFRpbWUoKTsKKyAgICAgICAgbG9nbG4oImluaXQgZGF0ZTogIiArIHN0YXJ0KTsKKyAgICAgICAgY2FsZW5kYXIuYWRkKENhbGVuZGFyLk1PTlRILCAxMik7IAorICAgICAgICBEYXRlIGRhdGUxID0gY2FsZW5kYXIuZ2V0VGltZSgpOworICAgICAgICBsb2dsbigiYWZ0ZXIgYWRkaW5nIDEyIG1vbnRoczogIiArIGRhdGUxKTsKKyAgICAgICAgY2FsZW5kYXIuc2V0VGltZShzdGFydCk7CisgICAgICAgIGNhbGVuZGFyLmFkZChDYWxlbmRhci5ZRUFSLCAxKTsKKyAgICAgICAgRGF0ZSBkYXRlMiA9IGNhbGVuZGFyLmdldFRpbWUoKTsKKyAgICAgICAgbG9nbG4oImFmdGVyIGFkZGluZyBvbmUgeWVhciA6ICIgKyBkYXRlMik7CisgICAgICAgIGlmIChkYXRlMS5lcXVhbHMoZGF0ZTIpKSB7CisgICAgICAgICAgICBsb2dsbigiVGVzdCBwYXNzZWQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJUZXN0IGZhaWxlZCIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogR3JlZ29yaWFuQ2FsZW5kYXIuZ2V0QWN0dWFsTWF4aW11bSgpIGRvZXMgbm90IGFjY291bnQgZm9yIGZpcnN0IGRheSBvZiB3ZWVrLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTY2MTA5KCkgeworICAgICAgICAvKiBUZXN0IG1vbnRoOgorICAgICAgICAgKgorICAgICAgICAgKiAgICAgIE1hcmNoIDE5OTgKKyAgICAgICAgICogU3UgTW8gVHUgV2UgVGggRnIgU2EKKyAgICAgICAgICogIDEgIDIgIDMgIDQgIDUgIDYgIDcKKyAgICAgICAgICogIDggIDkgMTAgMTEgMTIgMTMgMTQKKyAgICAgICAgICogMTUgMTYgMTcgMTggMTkgMjAgMjEKKyAgICAgICAgICogMjIgMjMgMjQgMjUgMjYgMjcgMjgKKyAgICAgICAgICogMjkgMzAgMzEKKyAgICAgICAgICovCisgICAgICAgIGJvb2xlYW4gcGFzc2VkID0gdHJ1ZTsKKyAgICAgICAgaW50IGZpZWxkID0gQ2FsZW5kYXIuV0VFS19PRl9NT05USDsKKworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWxlbmRhciA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcihMb2NhbGUuVVMpOworICAgICAgICBjYWxlbmRhci5zZXQoMTk5OCwgQ2FsZW5kYXIuTUFSQ0gsIDEpOworICAgICAgICBjYWxlbmRhci5zZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKDEpOworICAgICAgICBsb2dsbigiRGF0ZTogICIgKyBjYWxlbmRhci5nZXRUaW1lKCkpOworCisgICAgICAgIGludCBmaXJzdEluTW9udGggPSBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuREFZX09GX01PTlRIKTsKKworICAgICAgICBmb3IgKGludCBmaXJzdEluV2VlayA9IENhbGVuZGFyLlNVTkRBWTsgZmlyc3RJbldlZWsgPD0gQ2FsZW5kYXIuU0FUVVJEQVk7IGZpcnN0SW5XZWVrKyspIHsKKyAgICAgICAgICAgIGNhbGVuZGFyLnNldEZpcnN0RGF5T2ZXZWVrKGZpcnN0SW5XZWVrKTsKKyAgICAgICAgICAgIGludCByZXR1cm5lZCA9IGNhbGVuZGFyLmdldEFjdHVhbE1heGltdW0oZmllbGQpOworICAgICAgICAgICAgaW50IGV4cGVjdGVkID0gKDMxICsgKChmaXJzdEluTW9udGggLSBmaXJzdEluV2VlayArIDcpJSA3KSArIDYpIC8gNzsKKworICAgICAgICAgICAgbG9nbG4oIkZpcnN0IGRheSBvZiB3ZWVrID0gIiArIGZpcnN0SW5XZWVrICsKKyAgICAgICAgICAgICAgICAgICIgIGdldEFjdHVhbE1heGltdW0oV0VFS19PRl9NT05USCkgPSAiICsgcmV0dXJuZWQgKworICAgICAgICAgICAgICAgICAgIiAgZXhwZWN0ZWQgPSAiICsgZXhwZWN0ZWQgKworICAgICAgICAgICAgICAgICAgKChyZXR1cm5lZCA9PSBleHBlY3RlZCkgPyAiICBvayIgOiAiICBGQUlMIikpOworCisgICAgICAgICAgICBpZiAocmV0dXJuZWQgIT0gZXhwZWN0ZWQpIHsKKyAgICAgICAgICAgICAgICBwYXNzZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIXBhc3NlZCkgeworICAgICAgICAgICAgZXJybG4oIlRlc3QgZmFpbGVkIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDYWxlbmRhci5nZXRBY3R1YWxNYXhpbXVtKFlFQVIpIHdvcmtzIHdyb25nLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTY3MDYwKCkgeworICAgICAgICBpbnQgZmllbGQgPSBDYWxlbmRhci5ZRUFSOworICAgICAgICBEYXRlRm9ybWF0IGZvcm1hdCA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJFRUUgTU1NIGRkIEhIOm1tOnNzIHp6eiB5eXl5IEciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsZS5VUyk7CisKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsZW5kYXJzW10gPSB7CisgICAgICAgICAgICBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoMTAwLCBDYWxlbmRhci5OT1ZFTUJFUiwgMSksCisgICAgICAgICAgICBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoLTk5IC8qMTAwQkMqLywgQ2FsZW5kYXIuSkFOVUFSWSwgMSksCisgICAgICAgICAgICBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoMTk5NiwgQ2FsZW5kYXIuRkVCUlVBUlksIDI5KSwKKyAgICAgICAgfTsKKworICAgICAgICBTdHJpbmdbXSBpZCA9IHsgIkh5YnJpZCIsICJHcmVnb3JpYW4iLCAiSnVsaWFuIiB9OworCisgICAgICAgIGZvciAoaW50IGs9MDsgazwzOyArK2spIHsKKyAgICAgICAgICAgIGxvZ2xuKCItLS0gIiArIGlkW2tdICsgIiAtLS0iKTsKKworICAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqPGNhbGVuZGFycy5sZW5ndGg7ICsraikgeworICAgICAgICAgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbGVuZGFyID0gY2FsZW5kYXJzW2pdOworICAgICAgICAgICAgICAgIGlmIChrID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXIuc2V0R3JlZ29yaWFuQ2hhbmdlKG5ldyBEYXRlKExvbmcuTUlOX1ZBTFVFKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXIuc2V0R3JlZ29yaWFuQ2hhbmdlKG5ldyBEYXRlKExvbmcuTUFYX1ZBTFVFKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZm9ybWF0LnNldENhbGVuZGFyKChDYWxlbmRhciljYWxlbmRhci5jbG9uZSgpKTsKKworICAgICAgICAgICAgICAgIERhdGUgZGF0ZUJlZm9yZSA9IGNhbGVuZGFyLmdldFRpbWUoKTsKKworICAgICAgICAgICAgICAgIGludCBtYXhZZWFyID0gY2FsZW5kYXIuZ2V0QWN0dWFsTWF4aW11bShmaWVsZCk7CisgICAgICAgICAgICAgICAgbG9nbG4oIm1heFllYXI6ICIgKyBtYXhZZWFyICsgIiBmb3IgIiArIGZvcm1hdC5mb3JtYXQoY2FsZW5kYXIuZ2V0VGltZSgpKSk7CisgICAgICAgICAgICAgICAgbG9nbG4oImRhdGUgYmVmb3JlOiAiICsgZm9ybWF0LmZvcm1hdChkYXRlQmVmb3JlKSk7CisKKyAgICAgICAgICAgICAgICBpbnQgeWVhcnNbXSA9IHsyMDAwLCBtYXhZZWFyLTEsIG1heFllYXIsIG1heFllYXIrMX07CisKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHllYXJzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gdmFsaWQgPSB5ZWFyc1tpXSA8PSBtYXhZZWFyOworICAgICAgICAgICAgICAgICAgICBjYWxlbmRhci5zZXQoZmllbGQsIHllYXJzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgRGF0ZSBkYXRlQWZ0ZXIgPSBjYWxlbmRhci5nZXRUaW1lKCk7CisgICAgICAgICAgICAgICAgICAgIGludCBuZXdZZWFyID0gY2FsZW5kYXIuZ2V0KGZpZWxkKTsKKyAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXIuc2V0VGltZShkYXRlQmVmb3JlKTsgLy8gcmVzdG9yZSBjYWxlbmRhciBmb3IgbmV4dCB1c2UKKworICAgICAgICAgICAgICAgICAgICBsb2dsbigiIFllYXIgIiArIHllYXJzW2ldICsgKHZhbGlkPyAiIG9rICIgOiAiIGJhZCIpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiA9PiAiICsgZm9ybWF0LmZvcm1hdChkYXRlQWZ0ZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbGlkICYmIG5ld1llYXIgIT0geWVhcnNbaV0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCIgIEZBSUw6ICIgKyBuZXdZZWFyICsgIiBzaG91bGQgYmUgdmFsaWQ7IGRhdGUsIG1vbnRoIGFuZCB0aW1lIHNob3VsZG4ndCBjaGFuZ2UiKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghdmFsaWQgJiYgbmV3WWVhciA9PSB5ZWFyc1tpXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugbm8gbG9uZ2VyIHJlcXVpcmUgc3RyaWN0IHllYXIgbWF4aW1hLiAgVGhhdCBpcywgdGhlIGNhbGVuZGFyCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbGdvcml0aG0gbWF5IHdvcmsgZm9yIHZhbHVlcyA+IHRoZSBzdGF0ZWQgbWF4aW11bS4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vZXJybG4oIiAgRkFJTDogIiArIG5ld1llYXIgKyAiIHNob3VsZCBiZSBpbnZhbGlkIik7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2dsbigiICBOb3RlOiAiICsgbmV3WWVhciArICIgPiBtYXhpbXVtLCBidXQgc3RpbGwgdmFsaWQiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENhbGVuZGFyLnJvbGwgYnJva2VuCisgICAgICogVGhpcyBidWcgcmVsaWVzIG9uIHRoZSBUaW1lWm9uZSBidWcgNDE3MzYwNCB0byBhbHNvIGJlIGZpeGVkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTczNTE2KCkgeworICAgICAgICBpbnQgZmllbGRzTGlzdFtdW10gPSB7CisgICAgICAgICAgICB7IDE5OTcsIENhbGVuZGFyLkZFQlJVQVJZLCAgMSwgMTAsIDQ1LCAxNSwgOTAwIH0sCisgICAgICAgICAgICB7IDE5OTksIENhbGVuZGFyLkRFQ0VNQkVSLCAyMiwgMjMsIDU5LCA1OSwgOTk5IH0KKyAgICAgICAgfTsKKyAgICAgICAgaW50IGxpbWl0ID0gNDA7CisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbCA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworCisgICAgICAgIGNhbC5zZXRUaW1lKG5ldyBEYXRlKDApKTsKKyAgICAgICAgY2FsLnJvbGwoQ2FsZW5kYXIuSE9VUiwgIDB4N0YwMDAwMDApOworICAgICAgICBjYWwucm9sbChDYWxlbmRhci5IT1VSLCAtMHg3RjAwMDAwMCk7CisgICAgICAgIGlmIChjYWwuZ2V0VGltZSgpLmdldFRpbWUoKSAhPSAwKSB7CisgICAgICAgICAgICBlcnJsbigiSG91ciByb2xsaW5nIGJyb2tlbiIpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChpbnQgb3A9MDsgb3A8MjsgKytvcCkgeworICAgICAgICAgICAgbG9nbG4oIlRlc3RpbmcgR3JlZ29yaWFuQ2FsZW5kYXIgIiArCisgICAgICAgICAgICAgICAgICAob3A9PTAgPyAiYWRkIiA6ICJyb2xsIikpOworICAgICAgICAgICAgZm9yIChpbnQgZmllbGQ9MDsgZmllbGQgPCBjYWwuZ2V0RmllbGRDb3VudCgpOyArK2ZpZWxkKSB7CisgICAgICAgICAgICAgICAgaWYgKGZpZWxkICE9IENhbGVuZGFyLlpPTkVfT0ZGU0VUICYmCisgICAgICAgICAgICAgICAgICAgIGZpZWxkICE9IENhbGVuZGFyLkRTVF9PRkZTRVQpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqPGZpZWxkc0xpc3QubGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaWVsZHNbXSA9IGZpZWxkc0xpc3Rbal07CisgICAgICAgICAgICAgICAgICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbC5zZXQoZmllbGRzWzBdLCBmaWVsZHNbMV0sIGZpZWxkc1syXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzWzNdLCBmaWVsZHNbNF0sIGZpZWxkc1s1XSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLk1JTExJU0VDT05ELCBmaWVsZHNbNl0pOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyKmxpbWl0OyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3AgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWwuYWRkKGZpZWxkLCBpIDwgbGltaXQgPyAxIDogLTEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbC5yb2xsKGZpZWxkLCBpIDwgbGltaXQgPyAxIDogLTEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYWwuZ2V0KENhbGVuZGFyLllFQVIpICE9IGZpZWxkc1swXSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpICE9IGZpZWxkc1sxXSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuREFURSkgIT0gZmllbGRzWzJdIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsLmdldChDYWxlbmRhci5IT1VSX09GX0RBWSkgIT0gZmllbGRzWzNdIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsLmdldChDYWxlbmRhci5NSU5VVEUpICE9IGZpZWxkc1s0XSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuU0VDT05EKSAhPSBmaWVsZHNbNV0gfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLk1JTExJU0VDT05EKSAhPSBmaWVsZHNbNl0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiRmllbGQgIiArIGZpZWxkICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICgiICsgRklFTERfTkFNRVtmaWVsZF0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpIEZBSUwsIGV4cGVjdGVkICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkc1swXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8iICsgKGZpZWxkc1sxXSArIDEpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIgKyBmaWVsZHNbMl0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIiArIGZpZWxkc1szXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjoiICsgZmllbGRzWzRdICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiIgKyBmaWVsZHNbNV0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuIiArIGZpZWxkc1s2XSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgZ290ICIgKyBjYWwuZ2V0KENhbGVuZGFyLllFQVIpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIgKyAoY2FsLmdldChDYWxlbmRhci5NT05USCkgKyAxKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8iICsgY2FsLmdldChDYWxlbmRhci5EQVRFKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiICsgY2FsLmdldChDYWxlbmRhci5IT1VSX09GX0RBWSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6IiArIGNhbC5nZXQoQ2FsZW5kYXIuTUlOVVRFKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjoiICsgY2FsLmdldChDYWxlbmRhci5TRUNPTkQpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLiIgKyBjYWwuZ2V0KENhbGVuZGFyLk1JTExJU0VDT05EKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsLnNldChmaWVsZHNbMF0sIGZpZWxkc1sxXSwgZmllbGRzWzJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzWzNdLCBmaWVsZHNbNF0sIGZpZWxkc1s1XSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5NSUxMSVNFQ09ORCwgZmllbGRzWzZdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dsbigiU3RhcnQgZGF0ZTogIiArIGNhbC5nZXQoQ2FsZW5kYXIuWUVBUikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIiArIChjYWwuZ2V0KENhbGVuZGFyLk1PTlRIKSArIDEpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIgKyBjYWwuZ2V0KENhbGVuZGFyLkRBVEUpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICIgKyBjYWwuZ2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjoiICsgY2FsLmdldChDYWxlbmRhci5NSU5VVEUpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiIgKyBjYWwuZ2V0KENhbGVuZGFyLlNFQ09ORCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuIiArIGNhbC5nZXQoQ2FsZW5kYXIuTUlMTElTRUNPTkQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIHByZXYgPSBjYWwuZ2V0VGltZSgpLmdldFRpbWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDIqbGltaXQ7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3AgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsLmFkZChmaWVsZCwgaSA8IGxpbWl0ID8gMSA6IC0xKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbC5yb2xsKGZpZWxkLCBpIDwgbGltaXQgPyAxIDogLTEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgdCA9IGNhbC5nZXRUaW1lKCkuZ2V0VGltZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGRlbHRhID0gdCAtIHByZXY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXYgPSB0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dsbigob3AgPT0gMCA/ICJhZGQoIiA6ICJyb2xsKCIpICsgRklFTERfTkFNRVtmaWVsZF0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaSA8IGxpbWl0ID8gIiwgKzEpID0+ICIgOiAiLCAtMSkgPT4gIikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLllFQVIpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi8iICsgKGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpICsgMSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLyIgKyBjYWwuZ2V0KENhbGVuZGFyLkRBVEUpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiICsgY2FsLmdldChDYWxlbmRhci5IT1VSX09GX0RBWSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiIgKyBjYWwuZ2V0KENhbGVuZGFyLk1JTlVURSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOiIgKyBjYWwuZ2V0KENhbGVuZGFyLlNFQ09ORCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLiIgKyBjYWwuZ2V0KENhbGVuZGFyLk1JTExJU0VDT05EKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgZGVsdGE9IiArIGRlbHRhICsgIiBtcyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTc0MzYxKCkgeworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWxlbmRhciA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigxOTk2LCAxLCAyOSk7CisKKyAgICAgICAgY2FsZW5kYXIuYWRkKENhbGVuZGFyLk1PTlRILCAxMCk7IAorICAgICAgICBEYXRlIGRhdGUxID0gY2FsZW5kYXIuZ2V0VGltZSgpOworICAgICAgICBpbnQgZDEgPSBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuREFZX09GX01PTlRIKTsKKworICAgICAgICBjYWxlbmRhciA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigxOTk2LCAxLCAyOSk7CisgICAgICAgIGNhbGVuZGFyLmFkZChDYWxlbmRhci5NT05USCwgMTEpOyAKKyAgICAgICAgRGF0ZSBkYXRlMiA9IGNhbGVuZGFyLmdldFRpbWUoKTsKKyAgICAgICAgaW50IGQyID0gY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCk7CisKKyAgICAgICAgaWYgKGQxICE9IGQyKSB7CisgICAgICAgICAgICBlcnJsbigiYWRkaW5nIG1vbnRocyB0byBGZWIgMjkgYnJva2VuIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDYWxlbmRhciBkb2VzIG5vdCB1cGRhdGUgZmllbGQgdmFsdWVzIHdoZW4gc2V0VGltZVpvbmUgaXMgY2FsbGVkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTc3NDg0KCkgeworICAgICAgICBUaW1lWm9uZSBQU1QgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiUFNUIik7CisgICAgICAgIFRpbWVab25lIEVTVCA9IFRpbWVab25lLmdldFRpbWVab25lKCJFU1QiKTsKKworICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZShQU1QsIExvY2FsZS5VUyk7CisgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICBjYWwuc2V0KDE5OTksIDMsIDIxLCAxNSwgNSwgMCk7IC8vIEFyYml0cmFyeQorICAgICAgICBpbnQgaDEgPSBjYWwuZ2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZKTsKKyAgICAgICAgY2FsLnNldFRpbWVab25lKEVTVCk7CisgICAgICAgIGludCBoMiA9IGNhbC5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpOworICAgICAgICBpZiAoaDEgPT0gaDIpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBGaWVsZHMgbm90IHVwZGF0ZWQgYWZ0ZXIgc2V0VGltZVpvbmUiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGdldFRpbWUoKSBtdXN0IE5PVCBjaGFuZ2Ugd2hlbiB0aW1lIHpvbmUgaXMgY2hhbmdlZC4KKyAgICAgICAgLy8gZ2V0VGltZSgpIHJldHVybnMgem9uZS1pbmRlcGVuZGVudCB0aW1lIGluIG1zLgorICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldFRpbWVab25lKFBTVCk7CisgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVksIDEwKTsKKyAgICAgICAgRGF0ZSBwc3QxMCA9IGNhbC5nZXRUaW1lKCk7CisgICAgICAgIGNhbC5zZXRUaW1lWm9uZShFU1QpOworICAgICAgICBEYXRlIGVzdDEwID0gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgaWYgKCFwc3QxMC5lcXVhbHMoZXN0MTApKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogc2V0VGltZVpvbmUgY2hhbmdlZCB0aW1lIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBXZWVrIG9mIHllYXIgaXMgd3JvbmcgYXQgdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIHllYXIuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxOTc2OTkoKSB7CisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbCA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworICAgICAgICBjYWwuc2V0Rmlyc3REYXlPZldlZWsoQ2FsZW5kYXIuTU9OREFZKTsKKyAgICAgICAgY2FsLnNldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsoNCk7CisgICAgICAgIERhdGVGb3JtYXQgZm10ID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoIkUgZGQgTU1NIHl5eXkgICdET1k9J0QgJ1dPWT0ndyIpOworICAgICAgICBmbXQuc2V0Q2FsZW5kYXIoY2FsKTsKKworICAgICAgICBpbnRbXSBEQVRBID0geworICAgICAgICAgICAgMjAwMCwgIENhbGVuZGFyLkpBTlVBUlksICAgMSwgICA1MiwKKyAgICAgICAgICAgIDIwMDEsICBDYWxlbmRhci5ERUNFTUJFUiwgIDMxLCAgMSwKKyAgICAgICAgfTsKKworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7ICkgeworICAgICAgICAgICAgY2FsLnNldChEQVRBW2krK10sIERBVEFbaSsrXSwgREFUQVtpKytdKTsKKyAgICAgICAgICAgIGludCBleHBXT1kgPSBEQVRBW2krK107CisgICAgICAgICAgICBpbnQgYWN0V09ZID0gY2FsLmdldChDYWxlbmRhci5XRUVLX09GX1lFQVIpOworICAgICAgICAgICAgaWYgKGV4cFdPWSA9PSBhY3RXT1kpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT2s6ICIgKyBmbXQuZm9ybWF0KGNhbC5nZXRUaW1lKCkpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBmbXQuZm9ybWF0KGNhbC5nZXRUaW1lKCkpCisgICAgICAgICAgICAgICAgICAgICAgKyAiLCBleHBlY3RlZCBXT1k9IiArIGV4cFdPWSk7CisgICAgICAgICAgICAgICAgY2FsLmFkZChDYWxlbmRhci5EQVRFLCAtOCk7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqPDE0OyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsLmFkZChDYWxlbmRhci5EQVRFLCAxKTsKKyAgICAgICAgICAgICAgICAgICAgbG9nbG4oZm10LmZvcm1hdChjYWwuZ2V0VGltZSgpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2FsZW5kYXIgREFZX09GX1dFRUtfSU5fTU9OVEggZmllbGRzLT50aW1lIGJyb2tlbi4gIFRoZSBwcm9ibGVtCisgICAgICogaXMgaW4gdGhlIGZpZWxkIGRpc2FtYmlndWF0aW9uIGNvZGUgaW4gR3JlZ29yaWFuQ2FsZW5kYXIuICBUaGlzCisgICAgICogY29kZSBpcyBzdXBwb3NlZCB0byBjaG9vc2UgdGhlIG1vc3QgcmVjZW50IHNldCBvZiBmaWVsZHMKKyAgICAgKiBhbW9uZyB0aGUgZm9sbG93aW5nOgorICAgICAqCisgICAgICogICBNT05USCArIERBWV9PRl9NT05USAorICAgICAqICAgTU9OVEggKyBXRUVLX09GX01PTlRIICsgREFZX09GX1dFRUsKKyAgICAgKiAgIE1PTlRIICsgREFZX09GX1dFRUtfSU5fTU9OVEggKyBEQVlfT0ZfV0VFSworICAgICAqICAgREFZX09GX1lFQVIKKyAgICAgKiAgIFdFRUtfT0ZfWUVBUiArIERBWV9PRl9XRUVLCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQyMDkwNzEoKSB7CisgICAgICAgIENhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKExvY2FsZS5VUyk7CisKKyAgICAgICAgLy8gR2VuZXJhbCBmaWVsZCBzZXR0aW5nIHRlc3QKKyAgICAgICAgaW50IFkgPSAxOTk1IC0gMTkwMDsKKworICAgICAgICBPYmplY3RbXSBGSUVMRF9EQVRBID0geworICAgICAgICAgICAgLy8gQWRkIG5ldyB0ZXN0IGNhc2VzIGFzIG5lZWRlZC4KKworICAgICAgICAgICAgLy8gMAorICAgICAgICAgICAgbmV3IGludFtdIHt9LCBuZXcgRGF0ZShZLCBDYWxlbmRhci5KQU5VQVJZLCAxKSwKKyAgICAgICAgICAgIC8vIDEKKyAgICAgICAgICAgIG5ldyBpbnRbXSB7IENhbGVuZGFyLk1PTlRILCBDYWxlbmRhci5NQVJDSCB9LAorICAgICAgICAgICAgbmV3IERhdGUoWSwgQ2FsZW5kYXIuTUFSQ0gsIDEpLAorICAgICAgICAgICAgLy8gMgorICAgICAgICAgICAgbmV3IGludFtdIHsgQ2FsZW5kYXIuREFZX09GX1dFRUssIENhbGVuZGFyLldFRE5FU0RBWSB9LAorICAgICAgICAgICAgbmV3IERhdGUoWSwgQ2FsZW5kYXIuSkFOVUFSWSwgNCksCisgICAgICAgICAgICAvLyAzCisgICAgICAgICAgICBuZXcgaW50W10geyBDYWxlbmRhci5EQVlfT0ZfV0VFSywgQ2FsZW5kYXIuVEhVUlNEQVksCisgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5EQVlfT0ZfTU9OVEgsIDE4LCB9LAorICAgICAgICAgICAgbmV3IERhdGUoWSwgQ2FsZW5kYXIuSkFOVUFSWSwgMTgpLAorICAgICAgICAgICAgLy8gNAorICAgICAgICAgICAgbmV3IGludFtdIHsgQ2FsZW5kYXIuREFZX09GX01PTlRILCAxOCwKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLkRBWV9PRl9XRUVLLCBDYWxlbmRhci5USFVSU0RBWSwgfSwKKyAgICAgICAgICAgIG5ldyBEYXRlKFksIENhbGVuZGFyLkpBTlVBUlksIDE4KSwKKyAgICAgICAgICAgIC8vIDUgIChXT00gLTEgaXMgaW4gcHJldmlvdXMgbW9udGgpCisgICAgICAgICAgICBuZXcgaW50W10geyBDYWxlbmRhci5EQVlfT0ZfTU9OVEgsIDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuV0VFS19PRl9NT05USCwgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5EQVlfT0ZfV0VFSywgQ2FsZW5kYXIuVEhVUlNEQVksIH0sCisgICAgICAgICAgICBuZXcgRGF0ZShZLTEsIENhbGVuZGFyLkRFQ0VNQkVSLCAyMiksCisgICAgICAgICAgICAvLyA2CisgICAgICAgICAgICBuZXcgaW50W10geyBDYWxlbmRhci5EQVlfT0ZfTU9OVEgsIDE4LAorICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuV0VFS19PRl9NT05USCwgNCwKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLkRBWV9PRl9XRUVLLCBDYWxlbmRhci5USFVSU0RBWSwgfSwKKyAgICAgICAgICAgIG5ldyBEYXRlKFksIENhbGVuZGFyLkpBTlVBUlksIDI2KSwKKyAgICAgICAgICAgIC8vIDcgIChESU0gLTEgaXMgaW4gc2FtZSBtb250aCkKKyAgICAgICAgICAgIG5ldyBpbnRbXSB7IENhbGVuZGFyLkRBWV9PRl9NT05USCwgMTgsCisgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5EQVlfT0ZfV0VFS19JTl9NT05USCwgLTEsCisgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5EQVlfT0ZfV0VFSywgQ2FsZW5kYXIuVEhVUlNEQVksIH0sCisgICAgICAgICAgICBuZXcgRGF0ZShZLCBDYWxlbmRhci5KQU5VQVJZLCAyNiksCisgICAgICAgICAgICAvLyA4CisgICAgICAgICAgICBuZXcgaW50W10geyBDYWxlbmRhci5XRUVLX09GX1lFQVIsIDksCisgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5EQVlfT0ZfV0VFSywgQ2FsZW5kYXIuV0VETkVTREFZLCB9LAorICAgICAgICAgICAgbmV3IERhdGUoWSwgQ2FsZW5kYXIuTUFSQ0gsIDEpLAorICAgICAgICAgICAgLy8gOQorICAgICAgICAgICAgbmV3IGludFtdIHsgQ2FsZW5kYXIuTU9OVEgsIENhbGVuZGFyLk9DVE9CRVIsCisgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5EQVlfT0ZfV0VFS19JTl9NT05USCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLkRBWV9PRl9XRUVLLCBDYWxlbmRhci5GUklEQVksIH0sCisgICAgICAgICAgICBuZXcgRGF0ZShZLCBDYWxlbmRhci5PQ1RPQkVSLCA2KSwKKyAgICAgICAgICAgIC8vIDEwCisgICAgICAgICAgICBuZXcgaW50W10geyBDYWxlbmRhci5NT05USCwgQ2FsZW5kYXIuT0NUT0JFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLldFRUtfT0ZfTU9OVEgsIDIsCisgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5EQVlfT0ZfV0VFSywgQ2FsZW5kYXIuRlJJREFZLCB9LAorICAgICAgICAgICAgbmV3IERhdGUoWSwgQ2FsZW5kYXIuT0NUT0JFUiwgMTMpLAorICAgICAgICAgICAgLy8gMTEKKyAgICAgICAgICAgIG5ldyBpbnRbXSB7IENhbGVuZGFyLk1PTlRILCBDYWxlbmRhci5PQ1RPQkVSLAorICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuREFZX09GX01PTlRILCAxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLkRBWV9PRl9ZRUFSLCAyMjIsIH0sCisgICAgICAgICAgICBuZXcgRGF0ZShZLCBDYWxlbmRhci5BVUdVU1QsIDEwKSwKKyAgICAgICAgICAgIC8vIDEyCisgICAgICAgICAgICBuZXcgaW50W10geyBDYWxlbmRhci5EQVlfT0ZfV0VFSywgQ2FsZW5kYXIuVEhVUlNEQVksCisgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5NT05USCwgQ2FsZW5kYXIuREVDRU1CRVIsIH0sCisgICAgICAgICAgICBuZXcgRGF0ZShZLCBDYWxlbmRhci5ERUNFTUJFUiwgNyksCisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPEZJRUxEX0RBVEEubGVuZ3RoOyBpKz0yKSB7CisgICAgICAgICAgICBpbnRbXSBmaWVsZHMgPSAoaW50W10pIEZJRUxEX0RBVEFbaV07CisgICAgICAgICAgICBEYXRlIGV4cCA9IChEYXRlKSBGSUVMRF9EQVRBW2krMV07CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5ZRUFSLCBZICsgMTkwMCk7CisgICAgICAgICAgICBmb3IgKGludCBqPTA7IGo8ZmllbGRzLmxlbmd0aDsgais9MikgeworICAgICAgICAgICAgICAgIGNhbC5zZXQoZmllbGRzW2pdLCBmaWVsZHNbaisxXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIERhdGUgYWN0ID0gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgICAgIGlmICghYWN0LmVxdWFscyhleHApKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IFRlc3QgIiArIChpLzIpICsgIiBnb3QgIiArIGFjdCArCisgICAgICAgICAgICAgICAgICAgICAgIiwgd2FudCAiICsgZXhwICsKKyAgICAgICAgICAgICAgICAgICAgICAiIChzZWUgdGVzdC9qYXZhL3V0aWwvQ2FsZW5kYXIvQ2FsZW5kYXJSZWdyZXNzaW9uLmphdmEiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFRlc3Qgc3BlY2lmaWMgZmFpbHVyZSByZXBvcnRlZCBpbiBidWcKKyAgICAgICAgT2JqZWN0W10gREFUQSA9IHsKKyAgICAgICAgICAgIG5ldyBJbnRlZ2VyKDEpLCBuZXcgRGF0ZSgxOTk3LTE5MDAsIENhbGVuZGFyLkpBTlVBUlksIDUpLAorICAgICAgICAgICAgbmV3IEludGVnZXIoNCksIG5ldyBEYXRlKDE5OTctMTkwMCwgQ2FsZW5kYXIuSkFOVUFSWSwgMjYpLAorICAgICAgICAgICAgbmV3IEludGVnZXIoOCksIG5ldyBEYXRlKDE5OTctMTkwMCwgQ2FsZW5kYXIuRkVCUlVBUlksIDIzKSwKKyAgICAgICAgICAgIG5ldyBJbnRlZ2VyKC0xKSwgbmV3IERhdGUoMTk5Ny0xOTAwLCBDYWxlbmRhci5KQU5VQVJZLCAyNiksCisgICAgICAgICAgICBuZXcgSW50ZWdlcigtNCksIG5ldyBEYXRlKDE5OTctMTkwMCwgQ2FsZW5kYXIuSkFOVUFSWSwgNSksCisgICAgICAgICAgICBuZXcgSW50ZWdlcigtOCksIG5ldyBEYXRlKDE5OTYtMTkwMCwgQ2FsZW5kYXIuREVDRU1CRVIsIDgpLAorICAgICAgICB9OworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7IGkrPTIpIHsKKyAgICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5EQVlfT0ZfV0VFS19JTl9NT05USCwKKyAgICAgICAgICAgICAgICAgICAgKChOdW1iZXIpIERBVEFbaV0pLmludFZhbHVlKCkpOworICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5EQVlfT0ZfV0VFSywgQ2FsZW5kYXIuU1VOREFZKTsKKyAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuTU9OVEgsIENhbGVuZGFyLkpBTlVBUlkpOworICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5ZRUFSLCAxOTk3KTsKKyAgICAgICAgICAgIERhdGUgYWN0dWFsID0gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgICAgIGlmICghYWN0dWFsLmVxdWFscyhEQVRBW2krMV0pKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IFN1bmRheSAiICsgREFUQVtpXSArCisgICAgICAgICAgICAgICAgICAgICAgIiBvZiBKYW4gMTk5NyAtPiAiICsgYWN0dWFsICsKKyAgICAgICAgICAgICAgICAgICAgICAiLCB3YW50ICIgKyBEQVRBW2krMV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogV0VFS19PRl9ZRUFSIGNvbXB1dGVkIGluY29ycmVjdGx5LiAgQSBmYWlsdXJlIG9mIHRoaXMgdGVzdCBjYW4gaW5kaWNhdGUKKyAgICAgKiBhIHByb2JsZW0gaW4gc2V2ZXJhbCBkaWZmZXJlbnQgcGxhY2VzIGluIHRoZSAKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDI4ODc5MigpIHRocm93cyBFeGNlcHRpb24gCisgICAgeworCVRpbWVab25lIHNhdmVkVFogPSBUaW1lWm9uZS5nZXREZWZhdWx0KCk7CisJVGltZVpvbmUuc2V0RGVmYXVsdChUaW1lWm9uZS5nZXRUaW1lWm9uZSgiR01UIikpOworCUdyZWdvcmlhbkNhbGVuZGFyIGNhbCA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworICAgICAgICAKKwlmb3IgKGludCBpID0gMTkwMDsgaSA8IDIxMDA7IGkrKykgeworCSAgICBmb3IgKGludCBqMSA9IDE7IGoxIDw9IDc7IGoxKyspIHsKKwkJLy8gTG9vcCBmb3IgTWluaW1hbERheXNJbkZpcnN0V2VlazogMS4uNworCQlmb3IgKGludCBqID0gQ2FsZW5kYXIuU1VOREFZOyBqIDw9IENhbGVuZGFyLlNBVFVSREFZOyBqKyspIHsKKwkJICAgIC8vIExvb3AgZm9yIEZpcnN0RGF5T2ZXZWVrOiBTVU5EQVkuLlNBVFVSREFZCisJCSAgICBjYWwuY2xlYXIoKTsKKwkJICAgIGNhbC5zZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKGoxKTsKKwkJICAgIGNhbC5zZXRGaXJzdERheU9mV2VlayhqKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gU2V0IHRoZSBjYWxlbmRhciB0byB0aGUgZmlyc3QgZGF5IG9mIHRoZSBsYXN0IHdlZWsKKyAgICAgICAgICAgICAgICAgICAgLy8gb2YgdGhlIHllYXIuICBUaGlzIG1heSBvdmVybGFwIHNvbWUgb2YgdGhlIHN0YXJ0IG9mCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBuZXh0IHllYXI7IHRoYXQgaXMsIHRoZSBsYXN0IHdlZWsgb2YgMTk5OSBtYXkKKyAgICAgICAgICAgICAgICAgICAgLy8gaW5jbHVkZSBzb21lIG9mIEphbnVhcnkgMjAwMC4gIFVzZSB0aGUgYWRkKCkgbWV0aG9kCisgICAgICAgICAgICAgICAgICAgIC8vIHRvIGFkdmFuY2UgdGhyb3VnaCB0aGUgd2Vlay4gIEZvciBlYWNoIGRheSwgY2FsbAorICAgICAgICAgICAgICAgICAgICAvLyBnZXQoV0VFS19PRl9ZRUFSKS4gIFRoZSByZXN1bHQgc2hvdWxkIGJlIHRoZSBzYW1lCisgICAgICAgICAgICAgICAgICAgIC8vIGZvciB0aGUgd2hvbGUgd2Vlay4gIE5vdGUgdGhhdCBhIGJ1ZyBpbgorICAgICAgICAgICAgICAgICAgICAvLyBnZXRBY3R1YWxNYXhpbXVtKCkgd2lsbCBicmVhayB0aGlzIHRlc3QuCisJCSAgICBjYWwuc2V0KENhbGVuZGFyLllFQVIsIGkpOworCQkgICAgaW50IG1heFdlZWsgPSBjYWwuZ2V0QWN0dWFsTWF4aW11bShDYWxlbmRhci5XRUVLX09GX1lFQVIpOworCQkgICAgY2FsLnNldChDYWxlbmRhci5XRUVLX09GX1lFQVIsIG1heFdlZWspOworCQkgICAgY2FsLnNldChDYWxlbmRhci5EQVlfT0ZfV0VFSywgaik7CisJCSAgICBmb3IgKGludCBrID0gMTsgayA8IDc7IGsrKykgeworCQkJY2FsLmFkZChDYWxlbmRhci5EQVRFLCAxKTsKKwkJCWludCBXT1kgPSBjYWwuZ2V0KENhbGVuZGFyLldFRUtfT0ZfWUVBUik7CisJCQlpZiAoV09ZICE9IG1heFdlZWspIHsKKwkJCSAgICBlcnJsbihjYWwuZ2V0VGltZSgpICsgIixnb3Q9IiArIFdPWQorCQkJCSAgKyAiLGV4cGVjdGVkPSIgKyBtYXhXZWVrIAorCQkJCSAgKyAiLG1pbj0iICsgajEgKyAiLGZpcnN0PSIgKyBqKTsKKwkJCX0KKwkJICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLy8gTm93IGFkdmFuY2UgdGhlIGNhbGVuZGFyIG9uZSBtb3JlIGRheS4gIFRoaXMgc2hvdWxkCisgICAgICAgICAgICAgICAgICAgIC8vIHB1dCBpdCBhdCB0aGUgZmlyc3QgZGF5IG9mIHdlZWsgMSBvZiB0aGUgbmV4dCB5ZWFyLgorCQkgICAgY2FsLmFkZChDYWxlbmRhci5EQVRFLCAxKTsKKwkJICAgIGludCBXT1kgPSBjYWwuZ2V0KENhbGVuZGFyLldFRUtfT0ZfWUVBUik7CisJCSAgICBpZiAoV09ZICE9IDEpIHsKKwkJCWVycmxuKGNhbC5nZXRUaW1lKCkgKyAiLGdvdD0iICsgV09ZIAorCQkJICAgICAgKyAiLGV4cGVjdGVkPTEsbWluPSIgKyBqMSArICIsZmlyc3QiICsgaik7CisJCSAgICB9CisJCX0KKwkgICAgfQorCX0KKwlUaW1lWm9uZS5zZXREZWZhdWx0KHNhdmVkVFopOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgZmllbGREaWZmZXJlbmNlKCkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEo0MzgoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgaW50IERBVEFbXSA9IHsKKyAgICAgICAgICAgIDIwMDAsIENhbGVuZGFyLkpBTlVBUlksIDIwLCAgIDIwMTAsIENhbGVuZGFyLkpVTkUsIDE1LAorICAgICAgICAgICAgMjAxMCwgQ2FsZW5kYXIuSlVORSwgMTUsICAgICAgMjAwMCwgQ2FsZW5kYXIuSkFOVUFSWSwgMjAsCisgICAgICAgICAgICAxOTY0LCBDYWxlbmRhci5TRVBURU1CRVIsIDcsICAxOTk5LCBDYWxlbmRhci5KVU5FLCA0LAorICAgICAgICAgICAgMTk5OSwgQ2FsZW5kYXIuSlVORSwgNCwgICAgICAgMTk2NCwgQ2FsZW5kYXIuU0VQVEVNQkVSLCA3LAorICAgICAgICB9OworICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZShMb2NhbGUuVVMpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7IGkrPTYpIHsKKyAgICAgICAgICAgIGludCB5MSA9IERBVEFbaV07CisgICAgICAgICAgICBpbnQgbTEgPSBEQVRBW2krMV07CisgICAgICAgICAgICBpbnQgZDEgPSBEQVRBW2krMl07CisgICAgICAgICAgICBpbnQgeTIgPSBEQVRBW2krM107CisgICAgICAgICAgICBpbnQgbTIgPSBEQVRBW2krNF07CisgICAgICAgICAgICBpbnQgZDIgPSBEQVRBW2krNV07CisKKyAgICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgICAgY2FsLnNldCh5MSwgbTEsIGQxKTsKKyAgICAgICAgICAgIERhdGUgZGF0ZTEgPSBjYWwuZ2V0VGltZSgpOworICAgICAgICAgICAgY2FsLnNldCh5MiwgbTIsIGQyKTsKKyAgICAgICAgICAgIERhdGUgZGF0ZTIgPSBjYWwuZ2V0VGltZSgpOworCisgICAgICAgICAgICBjYWwuc2V0VGltZShkYXRlMSk7CisgICAgICAgICAgICBpbnQgZHkgPSBjYWwuZmllbGREaWZmZXJlbmNlKGRhdGUyLCBDYWxlbmRhci5ZRUFSKTsKKyAgICAgICAgICAgIGludCBkbSA9IGNhbC5maWVsZERpZmZlcmVuY2UoZGF0ZTIsIENhbGVuZGFyLk1PTlRIKTsKKyAgICAgICAgICAgIGludCBkZCA9IGNhbC5maWVsZERpZmZlcmVuY2UoZGF0ZTIsIENhbGVuZGFyLkRBVEUpOworCisgICAgICAgICAgICBsb2dsbigiIiArIGRhdGUyICsgIiAtICIgKyBkYXRlMSArICIgPSAiICsKKyAgICAgICAgICAgICAgICAgIGR5ICsgInkgIiArIGRtICsgIm0gIiArIGRkICsgImQiKTsKKworICAgICAgICAgICAgY2FsLnNldFRpbWUoZGF0ZTEpOworICAgICAgICAgICAgY2FsLmFkZChDYWxlbmRhci5ZRUFSLCBkeSk7CisgICAgICAgICAgICBjYWwuYWRkKENhbGVuZGFyLk1PTlRILCBkbSk7CisgICAgICAgICAgICBjYWwuYWRkKENhbGVuZGFyLkRBVEUsIGRkKTsKKyAgICAgICAgICAgIERhdGUgZGF0ZTIyID0gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgICAgIGlmICghZGF0ZTIuZXF1YWxzKGRhdGUyMikpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIGRhdGUxICsgIiArICIgKworICAgICAgICAgICAgICAgICAgICAgIGR5ICsgInkgIiArIGRtICsgIm0gIiArIGRkICsgImQgPSAiICsKKyAgICAgICAgICAgICAgICAgICAgICBkYXRlMjIgKyAiLCBleHAgIiArIGRhdGUyKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIk9rOiAiICsgZGF0ZTEgKyAiICsgIiArCisgICAgICAgICAgICAgICAgICAgICAgZHkgKyAieSAiICsgZG0gKyAibSAiICsgZGQgKyAiZCA9ICIgKworICAgICAgICAgICAgICAgICAgICAgIGRhdGUyMik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgYmVoYXZpb3Igb2YgRFNUX09GRlNFVCBmaWVsZC4gIElDVTRKIEppdHRlcmJ1ZyA5LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RKOSgpIHsKKyAgICAgICAgaW50IEhPVVJTID0gNjAqNjAqMTAwMDsKKyAgICAgICAgQ2FsZW5kYXIgY2FsID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKFRpbWVab25lLmdldFRpbWVab25lKCJQU1QiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsZS5VUyk7CisKKyAgICAgICAgZmluYWwgaW50IEVORF9GSUVMRFMgPSAweDEyMzQ7CisKKyAgICAgICAgaW50W10gREFUQSA9IHsKKyAgICAgICAgICAgIC8vIFdpdGggbm8gZXhwbGljaXQgWk9ORS9EU1QgZXhwZWN0IDEyOjAwIGFtCisgICAgICAgICAgICBDYWxlbmRhci5NT05USCwgQ2FsZW5kYXIuSlVORSwKKyAgICAgICAgICAgIEVORF9GSUVMRFMsCisgICAgICAgICAgICAwLCAwLCAvLyBleHBlY3RlZCBob3VyLCBtaW4KKworICAgICAgICAgICAgLy8gTm9ybWFsIFpPTkUvRFNUIGZvciBKdW5lIDEgUGFjaWZpYyBpcyA4OjAwLzE6MDAKKyAgICAgICAgICAgIENhbGVuZGFyLk1PTlRILCBDYWxlbmRhci5KVU5FLAorICAgICAgICAgICAgQ2FsZW5kYXIuWk9ORV9PRkZTRVQsIC04KkhPVVJTLAorICAgICAgICAgICAgQ2FsZW5kYXIuRFNUX09GRlNFVCwgSE9VUlMsCisgICAgICAgICAgICBFTkRfRklFTERTLAorICAgICAgICAgICAgMCwgMCwgLy8gZXhwZWN0ZWQgaG91ciwgbWluCisKKyAgICAgICAgICAgIC8vIFdpdGggWk9ORS9EU1Qgb2YgODowMC8wOjMwIGV4cGVjdCB0aW1lIG9mIDEyOjMwIGFtCisgICAgICAgICAgICBDYWxlbmRhci5NT05USCwgQ2FsZW5kYXIuSlVORSwKKyAgICAgICAgICAgIENhbGVuZGFyLlpPTkVfT0ZGU0VULCAtOCpIT1VSUywKKyAgICAgICAgICAgIENhbGVuZGFyLkRTVF9PRkZTRVQsIEhPVVJTLzIsCisgICAgICAgICAgICBFTkRfRklFTERTLAorICAgICAgICAgICAgMCwgMzAsIC8vIGV4cGVjdGVkIGhvdXIsIG1pbgorCisgICAgICAgICAgICAvLyBXaXRoIFpPTkUvRFNUIG9mIDg6MDAvVU5TRVQgZXhwZWN0IHRpbWUgb2YgMTowMCBhbQorICAgICAgICAgICAgQ2FsZW5kYXIuTU9OVEgsIENhbGVuZGFyLkpVTkUsCisgICAgICAgICAgICBDYWxlbmRhci5aT05FX09GRlNFVCwgLTgqSE9VUlMsCisgICAgICAgICAgICBFTkRfRklFTERTLAorICAgICAgICAgICAgMSwgMCwgLy8gZXhwZWN0ZWQgaG91ciwgbWluCisKKyAgICAgICAgICAgIC8vIFdpdGggWk9ORS9EU1Qgb2YgVU5TRVQvMDozMCBleHBlY3QgNDozMCBwbSAoZGF5IGJlZm9yZSkKKyAgICAgICAgICAgIENhbGVuZGFyLk1PTlRILCBDYWxlbmRhci5KVU5FLAorICAgICAgICAgICAgQ2FsZW5kYXIuRFNUX09GRlNFVCwgSE9VUlMvMiwKKyAgICAgICAgICAgIEVORF9GSUVMRFMsCisgICAgICAgICAgICAxNiwgMzAsIC8vIGV4cGVjdGVkIGhvdXIsIG1pbgorICAgICAgICB9OworCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgKSB7CisgICAgICAgICAgICBpbnQgc3RhcnQgPSBpOworICAgICAgICAgICAgY2FsLmNsZWFyKCk7CisKKyAgICAgICAgICAgIC8vIFNldCBmaWVsZHMKKyAgICAgICAgICAgIHdoaWxlIChEQVRBW2ldICE9IEVORF9GSUVMRFMpIHsKKyAgICAgICAgICAgICAgICBjYWwuc2V0KERBVEFbaSsrXSwgREFUQVtpKytdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICsraTsgLy8gc2tpcCBvdmVyIEVORF9GSUVMRFMKKworICAgICAgICAgICAgLy8gR2V0IGhvdXIvbWludXRlCisgICAgICAgICAgICBpbnQgaCA9IGNhbC5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpOworICAgICAgICAgICAgaW50IG0gPSBjYWwuZ2V0KENhbGVuZGFyLk1JTlVURSk7CisKKyAgICAgICAgICAgIC8vIENoZWNrCisgICAgICAgICAgICBpZiAoaCAhPSBEQVRBW2ldIHx8IG0gIT0gREFUQVtpKzFdKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZhaWw6IGV4cGVjdGVkICIgKyBEQVRBW2ldICsgIjoiICsgREFUQVtpKzFdICsKKyAgICAgICAgICAgICAgICAgICAgICAiLCBnb3QgIiArIGggKyAiOiIgKyBtICsgIiBhZnRlcjoiKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoREFUQVtzdGFydF0gIT0gRU5EX0ZJRUxEUykgeworICAgICAgICAgICAgICAgICAgICBsb2dsbigic2V0KCIgKyBGSUVMRF9OQU1FW0RBVEFbc3RhcnQrK11dICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgIiArIERBVEFbc3RhcnQrK10gKyAiKTsiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGkgKz0gMjsgLy8gc2tpcCBvdmVyIGV4cGVjdGVkIGhvdXIsIG1pbgorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogRGF0ZUZvcm1hdCBjbGFzcyBtaXN0YWtlcyBkYXRlIHN0eWxlIGFuZCB0aW1lIHN0eWxlIGFzIGZvbGxvd3M6CisgICAgICogLSBEYXRlRm9ybWF0LmdldERhdGVUaW1lSW5zdGFuY2UgdGFrZXMgZGF0ZSBzdHlsZSBhcyB0aW1lCisgICAgICogc3R5bGUsIGFuZCB0aW1lIHN0eWxlIGFzIGRhdGUgc3R5bGUKKyAgICAgKiAtIElmIGEgQ2FsZW5kYXIgaXMgcGFzc2VkIHRvCisgICAgICogRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UsIGl0IHJldHVybnMgdGltZSBpbnN0YW5jZQorICAgICAqIC0gSWYgYSBDYWxlbmRhcgorICAgICAqIGlzIHBhc3NlZCB0byBEYXRlRm9ybWF0LmdldFRpbWVJbnN0YW5jZSwgaXQgcmV0dXJucyBkYXRlIGluc3RhbmNlCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdERhdGVGb3JtYXRGYWN0b3J5SjI2KCkgeworICAgICAgICBUaW1lWm9uZSB6b25lID0gVGltZVpvbmUuZ2V0RGVmYXVsdCgpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgTG9jYWxlIGxvYyA9IExvY2FsZS5VUzsKKyAgICAgICAgICAgIFRpbWVab25lLnNldERlZmF1bHQoVGltZVpvbmUuZ2V0VGltZVpvbmUoIkFtZXJpY2EvTG9zX0FuZ2VsZXMiKSk7CisgICAgICAgICAgICBEYXRlIGRhdGUgPSBuZXcgRGF0ZSgyMDAxLCBDYWxlbmRhci5BUFJJTCwgNSwgMTcsIDQzLCA1Myk7CisgICAgICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZShsb2MpOworICAgICAgICAgICAgT2JqZWN0W10gREFUQSA9IHsKKyAgICAgICAgICAgICAgICBEYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZShEYXRlRm9ybWF0LlNIT1JULCBsb2MpLAorICAgICAgICAgICAgICAgICJEYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZShEYXRlRm9ybWF0LlNIT1JULCBsb2MpIiwKKyAgICAgICAgICAgICAgICAiNC81LzAxIiwKKworICAgICAgICAgICAgICAgIERhdGVGb3JtYXQuZ2V0VGltZUluc3RhbmNlKERhdGVGb3JtYXQuU0hPUlQsIGxvYyksCisgICAgICAgICAgICAgICAgIkRhdGVGb3JtYXQuZ2V0VGltZUluc3RhbmNlKERhdGVGb3JtYXQuU0hPUlQsIGxvYykiLAorICAgICAgICAgICAgICAgICI1OjQzIFBNIiwKKworICAgICAgICAgICAgICAgIERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZShEYXRlRm9ybWF0LkZVTEwsIERhdGVGb3JtYXQuU0hPUlQsIGxvYyksCisgICAgICAgICAgICAgICAgIkRhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZShEYXRlRm9ybWF0LkZVTEwsIERhdGVGb3JtYXQuU0hPUlQsIGxvYykiLAorICAgICAgICAgICAgICAgICJGcmlkYXksIEFwcmlsIDUsIDM5MDEgNTo0MyBQTSIsCisKKyAgICAgICAgICAgICAgICBEYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZShjYWwsIERhdGVGb3JtYXQuU0hPUlQsIGxvYyksCisgICAgICAgICAgICAgICAgIkRhdGVGb3JtYXQuZ2V0RGF0ZUluc3RhbmNlKGNhbCwgRGF0ZUZvcm1hdC5TSE9SVCwgbG9jKSIsCisgICAgICAgICAgICAgICAgIjQvNS8wMSIsCisKKyAgICAgICAgICAgICAgICBEYXRlRm9ybWF0LmdldFRpbWVJbnN0YW5jZShjYWwsIERhdGVGb3JtYXQuU0hPUlQsIGxvYyksCisgICAgICAgICAgICAgICAgIkRhdGVGb3JtYXQuZ2V0VGltZUluc3RhbmNlKGNhbCwgRGF0ZUZvcm1hdC5TSE9SVCwgbG9jKSIsCisgICAgICAgICAgICAgICAgIjU6NDMgUE0iLAorCisgICAgICAgICAgICAgICAgRGF0ZUZvcm1hdC5nZXREYXRlVGltZUluc3RhbmNlKGNhbCwgRGF0ZUZvcm1hdC5GVUxMLCBEYXRlRm9ybWF0LlNIT1JULCBsb2MpLAorICAgICAgICAgICAgICAgICJEYXRlRm9ybWF0LmdldERhdGVUaW1lSW5zdGFuY2UoY2FsLCBEYXRlRm9ybWF0LkZVTEwsIERhdGVGb3JtYXQuU0hPUlQsIGxvYykiLAorICAgICAgICAgICAgICAgICJGcmlkYXksIEFwcmlsIDUsIDM5MDEgNTo0MyBQTSIsCisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBjYWwuZ2V0RGF0ZVRpbWVGb3JtYXQoRGF0ZUZvcm1hdC5TSE9SVCwgRGF0ZUZvcm1hdC5GVUxMLCBsb2MpLAorICAgICAgICAgICAgICAgICJjYWwuZ2V0RGF0ZVRpbWVGb3JtYXQoRGF0ZUZvcm1hdC5TSE9SVCwgRGF0ZUZvcm1hdC5GVUxMLCBsb2MpIiwKKyAgICAgICAgICAgICAgICAiNC81LzAxIDU6NDM6NTMgUE0gUFNUIiwKKworICAgICAgICAgICAgICAgIGNhbC5nZXREYXRlVGltZUZvcm1hdChEYXRlRm9ybWF0LkZVTEwsIERhdGVGb3JtYXQuU0hPUlQsIGxvYyksCisgICAgICAgICAgICAgICAgImNhbC5nZXREYXRlVGltZUZvcm1hdChEYXRlRm9ybWF0LkZVTEwsIERhdGVGb3JtYXQuU0hPUlQsIGxvYykiLAorICAgICAgICAgICAgICAgICJGcmlkYXksIEFwcmlsIDUsIDM5MDEgNTo0MyBQTSIsCisgICAgICAgICAgICB9OworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz0zKSB7CisgICAgICAgICAgICAgICAgRGF0ZUZvcm1hdCBkZiA9IChEYXRlRm9ybWF0KSBEQVRBW2ldOworICAgICAgICAgICAgICAgIFN0cmluZyBkZXNjID0gKFN0cmluZykgREFUQVtpKzFdOworICAgICAgICAgICAgICAgIFN0cmluZyBleHAgPSAoU3RyaW5nKSBEQVRBW2krMl07CisgICAgICAgICAgICAgICAgU3RyaW5nIGdvdCA9IGRmLmZvcm1hdChkYXRlKTsKKyAgICAgICAgICAgICAgICBpZiAoZ290LmVxdWFscyhleHApKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJPazogIiArIGRlc2MgKyAiID0+ICIgKyBnb3QpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgZGVzYyArICIgPT4gIiArIGdvdCArICIsIGV4cGVjdGVkICIgKyBleHApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIFRpbWVab25lLnNldERlZmF1bHQoem9uZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vZW9mCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXN0L2NhbGVuZGFyL0NhbGVuZGFyVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vdGVzdC9jYWxlbmRhci9DYWxlbmRhclRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xZTI0NjZkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGVzdC9jYWxlbmRhci9DYWxlbmRhclRlc3QuamF2YQpAQCAtMCwwICsxLDM2MCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGVzdC9jYWxlbmRhci9BdHRpYy9DYWxlbmRhclRlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8xMS8zMCAyMTo1NDozNCAkIAorICogJFJldmlzaW9uOiAxLjExICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0udGVzdC5jYWxlbmRhcjsKKworaW1wb3J0IGNvbS5pYm0udGVzdC4qOworaW1wb3J0IGNvbS5pYm0udGV4dC5EYXRlRm9ybWF0OworaW1wb3J0IGNvbS5pYm0udGV4dC5TaW1wbGVEYXRlRm9ybWF0OworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247CitpbXBvcnQgY29tLmlibS51dGlsLio7CisKKy8qKgorICogQSBiYXNlIGNsYXNzIGZvciBjbGFzc2VzIHRoYXQgdGVzdCBpbmRpdmlkdWFsIENhbGVuZGFyIHN1YmNsYXNzZXMuCisgKiBEZWZpbmVzIHZhcmlvdXMgdXNlZnVsIHV0aWxpdHkgbWV0aG9kcyBhbmQgY29uc3RhbnRzCisgKi8KK3B1YmxpYyBjbGFzcyBDYWxlbmRhclRlc3QgZXh0ZW5kcyBUZXN0Rm13ayB7CisgICAgCisgICAgLy8gQ29uc3RhbnRzIGZvciB1c2UgYnkgc3ViY2xhc3Nlcywgc29sZWx5IHRvIHNhdmUgdHlwaW5nCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgU1VOID0gQ2FsZW5kYXIuU1VOREFZOworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IE1PTiA9IENhbGVuZGFyLk1PTkRBWTsKKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBUVUUgPSBDYWxlbmRhci5UVUVTREFZOworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFdFRCA9IENhbGVuZGFyLldFRE5FU0RBWTsKKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBUSFUgPSBDYWxlbmRhci5USFVSU0RBWTsKKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBGUkkgPSBDYWxlbmRhci5GUklEQVk7CisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgU0FUID0gQ2FsZW5kYXIuU0FUVVJEQVk7CisKKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBFUkEgICAgID0gQ2FsZW5kYXIuRVJBOworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFlFQVIgICAgPSBDYWxlbmRhci5ZRUFSOworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IE1PTlRIICAgPSBDYWxlbmRhci5NT05USDsKKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBEQVRFICAgID0gQ2FsZW5kYXIuREFURTsKKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBIT1VSICAgID0gQ2FsZW5kYXIuSE9VUjsKKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBNSU5VVEUgID0gQ2FsZW5kYXIuTUlOVVRFOworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFNFQ09ORCAgPSBDYWxlbmRhci5TRUNPTkQ7CisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgRE9ZICAgICA9IENhbGVuZGFyLkRBWV9PRl9ZRUFSOworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFdPWSAgICAgPSBDYWxlbmRhci5XRUVLX09GX1lFQVI7CisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgV09NICAgICA9IENhbGVuZGFyLldFRUtfT0ZfTU9OVEg7CisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgRE9XICAgICA9IENhbGVuZGFyLkRBWV9PRl9XRUVLOworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IERPV00gICAgPSBDYWxlbmRhci5EQVlfT0ZfV0VFS19JTl9NT05USDsKKyAgICAKKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIFNpbXBsZVRpbWVab25lIFVUQyA9IG5ldyBTaW1wbGVUaW1lWm9uZSgwLCAiR01UIik7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBGSUVMRF9OQU1FID0geworICAgICAgICAiRVJBIiwgIllFQVIiLCAiTU9OVEgiLCAiV0VFS19PRl9ZRUFSIiwgIldFRUtfT0ZfTU9OVEgiLAorICAgICAgICAiREFZX09GX01PTlRIIiwgIkRBWV9PRl9ZRUFSIiwgIkRBWV9PRl9XRUVLIiwKKyAgICAgICAgIkRBWV9PRl9XRUVLX0lOX01PTlRIIiwgIkFNX1BNIiwgIkhPVVIiLCAiSE9VUl9PRl9EQVkiLAorICAgICAgICAiTUlOVVRFIiwgIlNFQ09ORCIsICJNSUxMSVNFQ09ORCIsICJaT05FX09GRlNFVCIsCisgICAgICAgICJEU1RfT0ZGU0VUIiwgIllFQVJfV09ZIiwgIkRPV19MT0NBTCIsICJFWFRFTkRFRF9ZRUFSIiwKKyAgICAgICAgIkpVTElBTl9EQVkiLCAiTUlMTElTRUNPTkRTX0lOX0RBWSIsCisgICAgICAgICJJU19MRUFQX01PTlRIIiAvLyAoQ2hpbmVzZUNhbGVuZGFyIG9ubHkpCisgICAgfTsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGZpZWxkTmFtZShpbnQgZikgeworICAgICAgICByZXR1cm4gKGY+PTAgJiYgZjxGSUVMRF9OQU1FLmxlbmd0aCkgPworICAgICAgICAgICAgRklFTERfTkFNRVtmXSA6ICgiPEZpZWxkICIgKyBmICsgIj4iKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJdGVyYXRlcyB0aHJvdWdoIGEgbGlzdCBvZiBjYWxlbmRhciA8Y29kZT5UZXN0Q2FzZTwvY29kZT4gb2JqZWN0cyBhbmQKKyAgICAgKiBtYWtlcyBzdXJlIHRoYXQgdGhlIHRpbWUtdG8tZmllbGRzIGFuZCBmaWVsZHMtdG8tdGltZSBjYWxjdWxhdGlvbnMgd29yaworICAgICAqIGNvcnJlbmN0bHkgZm9yIHRoZSB2YWx1ZXMgaW4gZWFjaCB0ZXN0IGNhc2UuCisgICAgICovCisgICAgcHVibGljIHZvaWQgZG9UZXN0Q2FzZXMoVGVzdENhc2VbXSBjYXNlcywgQ2FsZW5kYXIgY2FsKQorICAgIHsKKyAgICAgICAgY2FsLnNldFRpbWVab25lKFVUQyk7CisgICAgICAgIAorICAgICAgICAvLyBHZXQgYSBmb3JtYXQgdG8gdXNlIGZvciBwcmludGluZyBkYXRlcyBpbiB0aGUgY2FsZW5kYXIgc3lzdGVtIHdlJ3JlIHRlc3RpbmcKKyAgICAgICAgRGF0ZUZvcm1hdCBmb3JtYXQgPSBEYXRlRm9ybWF0LmdldERhdGVUaW1lSW5zdGFuY2UoY2FsLCBEYXRlRm9ybWF0LlNIT1JULCAtMSwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisKKyAgICAgICAgZmluYWwgU3RyaW5nIHBhdHRlcm4gPSAoY2FsIGluc3RhbmNlb2YgQ2hpbmVzZUNhbGVuZGFyKSA/CisgICAgICAgICAgICAiRSBNTWwvZGQveSBHIEhIOm1tOnNzLlMgeiIgOgorICAgICAgICAgICAgIkUsIE1NL2RkL3l5eXkgRyBISDptbTpzcy5TIHoiOworICAgIAorICAgICAgICAoKFNpbXBsZURhdGVGb3JtYXQpZm9ybWF0KS5hcHBseVBhdHRlcm4ocGF0dGVybik7CisKKyAgICAgICAgLy8gVGhpcyBmb3JtYXQgaXMgdXNlZCBmb3IgcHJpbnRpbmcgR3JlZ29yaWFuIGRhdGVzLgorICAgICAgICBEYXRlRm9ybWF0IGdyZWdGb3JtYXQgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdChwYXR0ZXJuKTsKKyAgICAgICAgZ3JlZ0Zvcm1hdC5zZXRUaW1lWm9uZShVVEMpOworCisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIHB1cmVHcmVnID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKFVUQyk7CisgICAgICAgIHB1cmVHcmVnLnNldEdyZWdvcmlhbkNoYW5nZShuZXcgRGF0ZShMb25nLk1JTl9WQUxVRSkpOworICAgICAgICBEYXRlRm9ybWF0IHB1cmVHcmVnRm10ID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoIkUgTS9kL3l5eXkgRyIpOworICAgICAgICBwdXJlR3JlZ0ZtdC5zZXRDYWxlbmRhcihwdXJlR3JlZyk7CisgICAgICAgIAorICAgICAgICAvLyBOb3cgaXRlcmF0ZSB0aHJvdWdoIHRoZSB0ZXN0IGNhc2VzIGFuZCBzZWUgd2hhdCBoYXBwZW5zCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY2FzZXMubGVuZ3RoOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIFRlc3RDYXNlIHRlc3QgPSBjYXNlc1tpXTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEZpcnN0IHdlIHdhbnQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG1pbGxpcyAtPiBmaWVsZHMgY2FsY3VsYXRpb24gd29ya3MKKyAgICAgICAgICAgIC8vIHRlc3QuYXBwbHlUaW1lIHdpbGwgY2FsbCBzZXRUaW1lKCkgb24gdGhlIGNhbGVuZGFyIG9iamVjdCwgYW5kCisgICAgICAgICAgICAvLyB0ZXN0LmZpZWxkc0VxdWFsIHdpbGwgcmV0cmlldmUgYWxsIG9mIHRoZSBmaWVsZCB2YWx1ZXMgYW5kIG1ha2Ugc3VyZQorICAgICAgICAgICAgLy8gdGhhdCB0aGV5J3JlIHRoZSBzYW1lIGFzIHRoZSBvbmVzIGluIHRoZSB0ZXN0Y2FzZQorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIHRlc3QuYXBwbHlUaW1lKGNhbCk7CisgICAgICAgICAgICBpZiAoIXRlc3QuZmllbGRzRXF1YWwoY2FsLCB0aGlzKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiAobWlsbGlzPT5maWVsZHMpICIgKworICAgICAgICAgICAgICAgICAgICAgIGdyZWdGb3JtYXQuZm9ybWF0KHRlc3QuZ2V0VGltZSgpKSArICIgPT4gIiArCisgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LmZvcm1hdChjYWwuZ2V0VGltZSgpKSArCisgICAgICAgICAgICAgICAgICAgICAgIiwgZXhwZWN0ZWQgIiArIHRlc3QpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gSWYgdGhhdCB3YXMgT0ssIGNoZWNrIHRoZSBmaWVsZHMgLT4gbWlsbGlzIGNhbGN1bGF0aW9uCisgICAgICAgICAgICAvLyB0ZXN0LmFwcGx5RmllbGRzIHdpbGwgc2V0IGFsbCBvZiB0aGUgY2FsZW5kYXIncyBmaWVsZHMgdG8gCisgICAgICAgICAgICAvLyBtYXRjaCB0aG9zZSBpbiB0aGUgdGVzdCBjYXNlLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgICAgdGVzdC5hcHBseUZpZWxkcyhjYWwpOworICAgICAgICAgICAgaWYgKCF0ZXN0LmVxdWFscyhjYWwpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZhaWw6IChmaWVsZHM9Pm1pbGxpcykgIiArIHRlc3QgKyAiID0+ICIgKworICAgICAgICAgICAgICAgICAgICAgIHB1cmVHcmVnRm10LmZvcm1hdChjYWwuZ2V0VGltZSgpKSArCisgICAgICAgICAgICAgICAgICAgICAgIiwgZXhwZWN0ZWQgIiArIHB1cmVHcmVnRm10LmZvcm1hdCh0ZXN0LmdldFRpbWUoKSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgYm9vbGVhbiBST0xMID0gdHJ1ZTsKKyAgICBzdGF0aWMgcHVibGljIGZpbmFsIGJvb2xlYW4gQUREID0gZmFsc2U7CisgICAgCisgICAgLyoqCisgICAgICogUHJvY2VzcyB0ZXN0IGNhc2VzIGZvciA8Y29kZT5hZGQ8L2NvZGU+IGFuZCA8Y29kZT5yb2xsPC9jb2RlPiBtZXRob2RzLgorICAgICAqIEVhY2ggdGVzdCBjYXNlIGlzIGFuIGFycmF5IG9mIGludGVnZXJzLCBhcyBmb2xsb3dzOgorICAgICAqIDx1bD4KKyAgICAgKiAgPGxpPjA6IGlucHV0IHllYXIKKyAgICAgKiAgPGxpPjE6ICAgICAgIG1vbnRoICAoemVyby1iYXNlZCkKKyAgICAgKiAgPGxpPjI6ICAgICAgIGRheQorICAgICAqICA8bGk+MzogZmllbGQgdG8gcm9sbCBvciBhZGQgdG8KKyAgICAgKiAgPGxpPjQ6IGFtb3VudCB0byByb2xsIG9yIGFkZAorICAgICAqICA8bGk+NTogcmVzdWx0IHllYXIKKyAgICAgKiAgPGxpPjY6ICAgICAgICBtb250aCAoemVyby1iYXNlZCkKKyAgICAgKiAgPGxpPjc6ICAgICAgICBkYXkKKyAgICAgKiA8L3VsPgorICAgICAqIEZvciBleGFtcGxlOgorICAgICAqIDxwcmU+CisgICAgICogICAvLyAgICAgICBpbnB1dCAgICAgICAgICAgICAgICBhZGQgYnkgICAgICAgICAgb3V0cHV0CisgICAgICogICAvLyAgeWVhciAgbW9udGggICAgIGRheSAgICAgZmllbGQgYW1vdW50ICAgIHllYXIgIG1vbnRoICAgICBkYXkKKyAgICAgKiAgIHsgICA1NzU5LCBIRVNIVkFOLCAgIDIsICAgICBNT05USCwgICAxLCAgICAgNTc1OSwgS0lTTEVWLCAgICAyIH0sCisgICAgICogPC9wcmU+CisgICAgICoKKyAgICAgKiBAcGFyYW0gcm9sbCAgPGNvZGU+dHJ1ZTwvY29kZT4gb3IgPGNvZGU+Uk9MTDwvY29kZT4gdG8gdGVzdCB0aGUgPGNvZGU+cm9sbDwvY29kZT4gbWV0aG9kOworICAgICAqICAgICAgICAgICAgICA8Y29kZT5mYWxzZTwvY29kZT4gb3IgPGNvZGU+QUREPC9jb2RlPiB0byB0ZXN0IHRoZSA8Y29kZT5hZGQ8L2NvZGUgbWV0aG9kCisgICAgICovCisgICAgcHVibGljIHZvaWQgZG9Sb2xsQWRkKGJvb2xlYW4gcm9sbCwgQ2FsZW5kYXIgY2FsLCBpbnRbXVtdIHRlc3RzKQorICAgIHsKKyAgICAgICAgU3RyaW5nIG5hbWUgPSByb2xsID8gInJvbGxpbmciIDogImFkZGluZyI7CisgICAgICAgIAorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpbnRbXSB0ZXN0ID0gdGVzdHNbaV07CisKKyAgICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgICAgaWYgKGNhbCBpbnN0YW5jZW9mIENoaW5lc2VDYWxlbmRhcikgeworICAgICAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuRVhURU5ERURfWUVBUiwgdGVzdFswXSk7CisgICAgICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5NT05USCwgdGVzdFsxXSk7CisgICAgICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgsIHRlc3RbMl0pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjYWwuc2V0KHRlc3RbMF0sIHRlc3RbMV0sIHRlc3RbMl0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJvbGwpIHsKKyAgICAgICAgICAgICAgICBjYWwucm9sbCh0ZXN0WzNdLCB0ZXN0WzRdKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY2FsLmFkZCh0ZXN0WzNdLCB0ZXN0WzRdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCB5ID0gY2FsLmdldChjYWwgaW5zdGFuY2VvZiBDaGluZXNlQ2FsZW5kYXIgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLkVYVEVOREVEX1lFQVIgOiBZRUFSKTsKKyAgICAgICAgICAgIGlmICh5ICE9IHRlc3RbNV0gfHwgY2FsLmdldChNT05USCkgIT0gdGVzdFs2XQorICAgICAgICAgICAgICAgICAgICB8fCBjYWwuZ2V0KERBVEUpICE9IHRlc3RbN10pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZhaWw6ICIgKyBuYW1lICsgIiAiKyB5bWRUb1N0cmluZyh0ZXN0WzBdLCB0ZXN0WzFdLCB0ZXN0WzJdKQorICAgICAgICAgICAgICAgICAgICArICIgIiArIEZJRUxEX05BTUVbdGVzdFszXV0gKyAiIGJ5ICIgKyB0ZXN0WzRdCisgICAgICAgICAgICAgICAgICAgICsgIjogZXhwZWN0ZWQgIiArIHltZFRvU3RyaW5nKHRlc3RbNV0sIHRlc3RbNl0sIHRlc3RbN10pCisgICAgICAgICAgICAgICAgICAgICsgIiwgZ290ICIgKyB5bWRUb1N0cmluZyhjYWwpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNWZXJib3NlKCkpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT0s6ICIgKyBuYW1lICsgIiAiKyB5bWRUb1N0cmluZyh0ZXN0WzBdLCB0ZXN0WzFdLCB0ZXN0WzJdKQorICAgICAgICAgICAgICAgICAgICArICIgIiArIEZJRUxEX05BTUVbdGVzdFszXV0gKyAiIGJ5ICIgKyB0ZXN0WzRdCisgICAgICAgICAgICAgICAgICAgICsgIjogZ290ICIgKyB5bWRUb1N0cmluZyhjYWwpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgdGhlIGZ1bmN0aW9ucyBnZXRYeHhNaW5pbXVtKCkgYW5kIGdldFh4eE1heGltdW0oKSBieSBtYXJjaGluZyBhCisgICAgICogdGVzdCBjYWxlbmRhciAnY2FsJyB0aHJvdWdoICdudW1iZXJPZkRheXMnIHNlcXVlbnRpYWwgZGF5cyBzdGFydGluZworICAgICAqIHdpdGggJ3N0YXJ0RGF0ZScuICBGb3IgZWFjaCBkYXRlLCByZWFkIGEgZmllbGQgdmFsdWUgYWxvbmcgd2l0aCBpdHMKKyAgICAgKiByZXBvcnRlZCBhY3R1YWwgbWluaW11bSBhbmQgYWN0dWFsIG1heGltdW0uICBUaGVzZSB2YWx1ZXMgYXJlCisgICAgICogY2hlY2tlZCBhZ2FpbnN0IG9uZSBhbm90aGVyIGFzIHdlbGwgYXMgYWdhaW5zdCBnZXRNaW5pbXVtKCksCisgICAgICogZ2V0R3JlYXRlc3RNaW5pbXVtKCksIGdldExlYXN0TWF4aW11bSgpLCBhbmQgZ2V0TWF4aW11bSgpLiAgV2UKKyAgICAgKiBleHBlY3QgdG8gc2VlOgorICAgICAqCisgICAgICogMS4gbWluaW11bSA8PSBhY3R1YWxNaW5pbXVtIDw9IGdyZWF0ZXN0TWluaW11bSA8PQorICAgICAqICAgIGxlYXN0TWF4aW11bSA8PSBhY3R1YWxNYXhpbXVtIDw9IG1heGltdW0KKyAgICAgKgorICAgICAqIDIuIGFjdHVhbE1pbmltdW0gPD0gdmFsdWUgPD0gYWN0dWFsTWF4aW11bQorICAgICAqCisgICAgICogTm90ZTogSW4gYWRkaXRpb24gdG8gb3V0cmlnaHQgZmFpbHVyZXMsIHRoaXMgdGVzdCByZXBvcnRzIHNvbWUKKyAgICAgKiByZXN1bHRzIGFzIHdhcm5pbmdzLiAgVGhlc2UgYXJlIG5vdCBnZW5lcmFsbHkgb2YgY29uY2VybiwgYnV0IHRoZXkKKyAgICAgKiBzaG91bGQgYmUgZXZhbHVhdGVkIGJ5IGEgaHVtYW4uICBUbyBzZWUgdGhlc2UsIHJ1biB0aGlzIHRlc3QgaW4KKyAgICAgKiB2ZXJib3NlIG1vZGUuCisgICAgICogQHBhcmFtIGNhbCB0aGUgY2FsZW5kYXIgdG8gYmUgdGVzdGVkCisgICAgICogQHBhcmFtIGZpZWxkc1RvVGVzdCBhbiBhcnJheSBvZiBmaWVsZCB2YWx1ZXMgdG8gYmUgdGVzdGVkLCBlLmcuLCBuZXcKKyAgICAgKiBpbnRbXSB7IENhbGVuZGFyLk1PTlRILCBDYWxlbmRhci5EQVlfT0ZfTU9OVEggfS4gIEl0IG9ubHkgbWFrZXMKKyAgICAgKiBzZW5zZSB0byB0ZXN0IHRoZSBkYXkgZmllbGRzOyB0aGUgdGltZSBmaWVsZHMgYXJlIG5vdCB0ZXN0ZWQgYnkgdGhpcworICAgICAqIG1ldGhvZC4gIElmIG51bGwsIHRoZW4gdGVzdCBhbGwgc3RhbmRhcmQgZmllbGRzLgorICAgICAqIEBwYXJhbSBzdGFydERhdGUgdGhlIGZpcnN0IGRhdGUgdG8gdGVzdAorICAgICAqIEBwYXJhbSB0ZXN0RHVyYXRpb24gaWYgcG9zaXRpdmUsIHRoZSBudW1iZXIgb2YgZGF5cyB0byBiZSB0ZXN0ZWQuCisgICAgICogSWYgbmVnYXRpdmUsIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0byBydW4gdGhlIHRlc3QuCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgZG9MaW1pdHNUZXN0KENhbGVuZGFyIGNhbCwgaW50W10gZmllbGRzVG9UZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRlIHN0YXJ0RGF0ZSwgaW50IHRlc3REdXJhdGlvbikgeworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBncmVnID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisgICAgICAgIGdyZWcuc2V0VGltZShzdGFydERhdGUpOworICAgICAgICBsb2dsbigiU3RhcnQ6ICIgKyBzdGFydERhdGUpOworCisgICAgICAgIGlmIChmaWVsZHNUb1Rlc3QgPT0gbnVsbCkgeworICAgICAgICAgICAgZmllbGRzVG9UZXN0ID0gbmV3IGludFtdIHsKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5FUkEsIENhbGVuZGFyLllFQVIsIENhbGVuZGFyLk1PTlRILAorICAgICAgICAgICAgICAgIENhbGVuZGFyLldFRUtfT0ZfWUVBUiwgQ2FsZW5kYXIuV0VFS19PRl9NT05USCwKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5EQVlfT0ZfTU9OVEgsIENhbGVuZGFyLkRBWV9PRl9ZRUFSLAorICAgICAgICAgICAgICAgIENhbGVuZGFyLkRBWV9PRl9XRUVLX0lOX01PTlRILCBDYWxlbmRhci5ZRUFSX1dPWSwKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5FWFRFTkRFRF9ZRUFSCisgICAgICAgICAgICB9OworICAgICAgICB9CisKKyAgICAgICAgLy8gS2VlcCBhIHJlY29yZCBvZiBtaW5pbWEgYW5kIG1heGltYSB0aGF0IHdlIGFjdHVhbGx5IHNlZS4KKyAgICAgICAgLy8gVGhlc2UgYXJlIGtlcHQgaW4gYW4gYXJyYXkgb2YgYXJyYXlzIG9mIGhhc2hlcy4KKyAgICAgICAgSGFzaHRhYmxlW11bXSBsaW1pdHMgPSBuZXcgSGFzaHRhYmxlW2ZpZWxkc1RvVGVzdC5sZW5ndGhdWzJdOworICAgICAgICBPYmplY3QgbnViID0gbmV3IE9iamVjdCgpOyAvLyBNZWFuaW5nbGVzcyBwbGFjZWhvbGRlcgorCisgICAgICAgIC8vIFRoaXMgdGVzdCBjYW4gcnVuIGZvciBhIGxvbmcgdGltZTsgc2hvdyBwcm9ncmVzcy4KKyAgICAgICAgbG9uZyBtaWxsaXMgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgbG9uZyBtYXJrID0gbWlsbGlzICsgNTAwMDsgLy8gNSBzZWMKKyAgICAgICAgbWlsbGlzIC09IHRlc3REdXJhdGlvbiAqIDEwMDA7IC8vIHN0b3AgdGltZSBpZiB0ZXN0RHVyYXRpb248MAorCisgICAgICAgIGZvciAoaW50IGk9MDsKKyAgICAgICAgICAgICB0ZXN0RHVyYXRpb24+MCA/IGk8dGVzdER1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTxtaWxsaXM7CisgICAgICAgICAgICAgKytpKSB7CisgICAgICAgICAgICBpZiAoU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgPj0gbWFyaykgeworICAgICAgICAgICAgICAgIGxvZ2xuKCIoIiArIGkgKyAiIGRheXMpIik7CisgICAgICAgICAgICAgICAgbWFyayArPSA1MDAwOyAvLyA1IHNlYworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FsLnNldFRpbWVJbk1pbGxpcyhncmVnLmdldFRpbWVJbk1pbGxpcygpKTsKKyAgICAgICAgICAgIGZvciAoaW50IGo9MDsgajxmaWVsZHNUb1Rlc3QubGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgICAgICBpbnQgZiA9IGZpZWxkc1RvVGVzdFtqXTsKKyAgICAgICAgICAgICAgICBpbnQgdiA9IGNhbC5nZXQoZik7CisgICAgICAgICAgICAgICAgaW50IG1pbkFjdHVhbCA9IGNhbC5nZXRBY3R1YWxNaW5pbXVtKGYpOworICAgICAgICAgICAgICAgIGludCBtYXhBY3R1YWwgPSBjYWwuZ2V0QWN0dWFsTWF4aW11bShmKTsKKyAgICAgICAgICAgICAgICBpbnQgbWluTG93ID0gY2FsLmdldE1pbmltdW0oZik7CisgICAgICAgICAgICAgICAgaW50IG1pbkhpZ2ggPSBjYWwuZ2V0R3JlYXRlc3RNaW5pbXVtKGYpOworICAgICAgICAgICAgICAgIGludCBtYXhMb3cgPSBjYWwuZ2V0TGVhc3RNYXhpbXVtKGYpOworICAgICAgICAgICAgICAgIGludCBtYXhIaWdoID0gY2FsLmdldE1heGltdW0oZik7CisKKyAgICAgICAgICAgICAgICAvLyBGZXRjaCB0aGUgaGFzaCBmb3IgdGhpcyBmaWVsZCBhbmQga2VlcCB0cmFjayBvZiB0aGUKKyAgICAgICAgICAgICAgICAvLyBtaW5pbWEgYW5kIG1heGltYS4KKyAgICAgICAgICAgICAgICBIYXNodGFibGVbXSBoID0gbGltaXRzW2pdOworICAgICAgICAgICAgICAgIGlmIChoWzBdID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgaFswXSA9IG5ldyBIYXNodGFibGUoKTsKKyAgICAgICAgICAgICAgICAgICAgaFsxXSA9IG5ldyBIYXNodGFibGUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaFswXS5wdXQobmV3IEludGVnZXIobWluQWN0dWFsKSwgbnViKTsKKyAgICAgICAgICAgICAgICBoWzFdLnB1dChuZXcgSW50ZWdlcihtYXhBY3R1YWwpLCBudWIpOworCisgICAgICAgICAgICAgICAgaWYgKG1pbkFjdHVhbCA8IG1pbkxvdyB8fCBtaW5BY3R1YWwgPiBtaW5IaWdoKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiAiICsgeW1kVG9TdHJpbmcoY2FsKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgUmFuZ2UgZm9yIG1pbiBvZiAiICsgRklFTERfTkFNRVtmXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICI9IiArIG1pbkxvdyArICIuLiIgKyBtaW5IaWdoICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgYWN0dWFsX21pbj0iICsgbWluQWN0dWFsKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1heEFjdHVhbCA8IG1heExvdyB8fCBtYXhBY3R1YWwgPiBtYXhIaWdoKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiAiICsgeW1kVG9TdHJpbmcoY2FsKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgUmFuZ2UgZm9yIG1heCBvZiAiICsgRklFTERfTkFNRVtmXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICI9IiArIG1heExvdyArICIuLiIgKyBtYXhIaWdoICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgYWN0dWFsX21heD0iICsgbWF4QWN0dWFsKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHYgPCBtaW5BY3R1YWwgfHwgdiA+IG1heEFjdHVhbCkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIHltZFRvU3RyaW5nKGNhbCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiICIgKyBGSUVMRF9OQU1FW2ZdICsgIj0iICsgdiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICIsIGFjdHVhbCByYW5nZT0iICsgbWluQWN0dWFsICsgIi4uIiArIG1heEFjdHVhbCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICIsIGFsbG93ZWQ9KCIgKyBtaW5Mb3cgKyAiLi4iICsgbWluSGlnaCArICIpLi4oIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1heExvdyArICIuLiIgKyBtYXhIaWdoICsgIikiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBncmVnLmFkZChDYWxlbmRhci5EQVlfT0ZfWUVBUiwgMSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDaGVjayBhY3R1YWwgbWF4aW1hIGFuZCBtaW5pbWEgc2VlbiBhZ2FpbnN0IHJhbmdlcyByZXR1cm5lZAorICAgICAgICAvLyBieSBBUEkuCisgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGZvciAoaW50IGo9MDsgajxmaWVsZHNUb1Rlc3QubGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgIGludCBmID0gZmllbGRzVG9UZXN0W2pdOworICAgICAgICAgICAgYnVmLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoRklFTERfTkFNRVtmXSk7CisgICAgICAgICAgICBIYXNodGFibGVbXSBoID0gbGltaXRzW2pdOworICAgICAgICAgICAgYm9vbGVhbiBmdWxsUmFuZ2VTZWVuID0gdHJ1ZTsKKyAgICAgICAgICAgIGZvciAoaW50IGs9MDsgazwyOyArK2spIHsKKyAgICAgICAgICAgICAgICBpbnQgcmFuZ2VMb3cgPSAoaz09MCkgPworICAgICAgICAgICAgICAgICAgICBjYWwuZ2V0TWluaW11bShmKSA6IGNhbC5nZXRMZWFzdE1heGltdW0oZik7CisgICAgICAgICAgICAgICAgaW50IHJhbmdlSGlnaCA9IChrPT0wKSA/CisgICAgICAgICAgICAgICAgICAgIGNhbC5nZXRHcmVhdGVzdE1pbmltdW0oZikgOiBjYWwuZ2V0TWF4aW11bShmKTsKKyAgICAgICAgICAgICAgICAvLyBJZiBlaXRoZXIgdGhlIHRvcCBvZiB0aGUgcmFuZ2Ugb3IgdGhlIGJvdHRvbSB3YXMgbmV2ZXIKKyAgICAgICAgICAgICAgICAvLyBzZWVuLCB0aGVuIHRoZXJlIG1heSBiZSBhIHByb2JsZW0uCisgICAgICAgICAgICAgICAgaWYgKGhba10uZ2V0KG5ldyBJbnRlZ2VyKHJhbmdlTG93KSkgPT0gbnVsbCB8fAorICAgICAgICAgICAgICAgICAgICBoW2tdLmdldChuZXcgSW50ZWdlcihyYW5nZUhpZ2gpKSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGZ1bGxSYW5nZVNlZW4gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChrPT0wID8gIiBtaW5pbWEgc2Vlbj0oIiA6ICI7IG1heGltYSBzZWVuPSgiKTsKKyAgICAgICAgICAgICAgICBmb3IgKEVudW1lcmF0aW9uIGU9aFtrXS5rZXlzKCk7IGUuaGFzTW9yZUVsZW1lbnRzKCk7ICkgeworICAgICAgICAgICAgICAgICAgICBpbnQgdiA9ICgoSW50ZWdlcikgZS5uZXh0RWxlbWVudCgpKS5pbnRWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCIgIiArIHYpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCIpIHJhbmdlPSIgKyByYW5nZUxvdyArICIuLiIgKyByYW5nZUhpZ2gpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGZ1bGxSYW5nZVNlZW4pIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT0s6ICIgKyBidWYudG9TdHJpbmcoKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgbWF5IG9yIG1heSBub3QgYmUgYW4gZXJyb3IgLS0gaWYgdGhlIHJhbmdlIG9mIGRhdGVzCisgICAgICAgICAgICAgICAgLy8gd2Ugc2NhbiBvdmVyIGRvZXNuJ3QgaGFwcGVuIHRvIGNvbnRhaW4gYSBtaW5pbXVtIG9yCisgICAgICAgICAgICAgICAgLy8gbWF4aW11bSwgaXQgZG9lc24ndCBtZWFuIHNvbWUgb3RoZXIgcmFuZ2Ugd29uJ3QuCisgICAgICAgICAgICAgICAgbG9nbG4oIldhcm5pbmc6ICIgKyBidWYudG9TdHJpbmcoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsb2dsbigiRW5kOiAiICsgZ3JlZy5nZXRUaW1lKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlcnQgeWVhcixtb250aCxkYXkgdmFsdWVzIHRvIHRoZSBmb3JtICJ5ZWFyL21vbnRoL2RheSIuCisgICAgICogT24gaW5wdXQgdGhlIG1vbnRoIHZhbHVlIGlzIHplcm8tYmFzZWQsIGJ1dCBpbiB0aGUgcmVzdWx0IHN0cmluZyBpdCBpcyBvbmUtYmFzZWQuCisgICAgICovCisgICAgc3RhdGljIHB1YmxpYyBTdHJpbmcgeW1kVG9TdHJpbmcoaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSkgeworICAgICAgICByZXR1cm4gIiIgKyB5ZWFyICsgIi8iICsgKG1vbnRoKzEpICsgIi8iICsgZGF5OworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlcnQgeWVhcixtb250aCxkYXkgdmFsdWVzIHRvIHRoZSBmb3JtICJ5ZWFyL21vbnRoL2RheSIuCisgICAgICovCisgICAgc3RhdGljIHB1YmxpYyBTdHJpbmcgeW1kVG9TdHJpbmcoQ2FsZW5kYXIgY2FsKSB7CisgICAgICAgIGlmIChjYWwgaW5zdGFuY2VvZiBDaGluZXNlQ2FsZW5kYXIpIHsKKyAgICAgICAgICAgIHJldHVybiAiIiArIGNhbC5nZXQoQ2FsZW5kYXIuRVhURU5ERURfWUVBUikgKyAiLyIgKworICAgICAgICAgICAgICAgIChjYWwuZ2V0KENhbGVuZGFyLk1PTlRIKSsxKSArCisgICAgICAgICAgICAgICAgKGNhbC5nZXQoQ2hpbmVzZUNhbGVuZGFyLklTX0xFQVBfTU9OVEgpPT0xPyIobGVhcCkiOiIiKSArICIvIiArCisgICAgICAgICAgICAgICAgY2FsLmdldChDYWxlbmRhci5EQVRFKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geW1kVG9TdHJpbmcoY2FsLmdldChDYWxlbmRhci5FWFRFTkRFRF9ZRUFSKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbC5nZXQoTU9OVEgpLCBjYWwuZ2V0KERBVEUpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXN0L2NhbGVuZGFyL0NoaW5lc2VUZXN0LmphdmEgYi9zcmMvY29tL2libS90ZXN0L2NhbGVuZGFyL0NoaW5lc2VUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDBhZDJjMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3QvY2FsZW5kYXIvQ2hpbmVzZVRlc3QuamF2YQpAQCAtMCwwICsxLDUxNSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGVzdC9jYWxlbmRhci9BdHRpYy9DaGluZXNlVGVzdC5qYXZhLHYgJAorICogJERhdGU6IDIwMDAvMTEvMjkgMjE6NTg6MDEgJAorICogJFJldmlzaW9uOiAxLjcgJAorICovCitwYWNrYWdlIGNvbS5pYm0udGVzdC5jYWxlbmRhcjsKK2ltcG9ydCBjb20uaWJtLnV0aWwuKjsKK2ltcG9ydCBjb20uaWJtLnRleHQuKjsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworCisvKioKKyAqIFRlc3Qgb2YgQ2hpbmVzZUNhbGVuZGFyLgorICoKKyAqIExlYXAgbW9udGhzIGluIHRoaXMgY2VudHVyeToKKyAqIFdlZCBNYXkgMjMgMjAwMSA9IDQ2MzgtMDQqLTAxLCBZZWFyIDE4LCBDeWNsZSA3OAorICogU3VuIE1hciAyMSAyMDA0ID0gNDY0MS0wMiotMDEsIFllYXIgMjEsIEN5Y2xlIDc4CisgKiBUaHUgQXVnIDI0IDIwMDYgPSA0NjQzLTA3Ki0wMSwgWWVhciAyMywgQ3ljbGUgNzgKKyAqIFR1ZSBKdW4gMjMgMjAwOSA9IDQ2NDYtMDUqLTAxLCBZZWFyIDI2LCBDeWNsZSA3OAorICogTW9uIE1heSAyMSAyMDEyID0gNDY0OS0wNCotMDEsIFllYXIgMjksIEN5Y2xlIDc4CisgKiBGcmkgT2N0IDI0IDIwMTQgPSA0NjUxLTA5Ki0wMSwgWWVhciAzMSwgQ3ljbGUgNzgKKyAqIFN1biBKdWwgMjMgMjAxNyA9IDQ2NTQtMDYqLTAxLCBZZWFyIDM0LCBDeWNsZSA3OAorICogU2F0IE1heSAyMyAyMDIwID0gNDY1Ny0wNCotMDEsIFllYXIgMzcsIEN5Y2xlIDc4CisgKiBXZWQgTWFyIDIyIDIwMjMgPSA0NjYwLTAyKi0wMSwgWWVhciA0MCwgQ3ljbGUgNzgKKyAqIEZyaSBKdWwgMjUgMjAyNSA9IDQ2NjItMDYqLTAxLCBZZWFyIDQyLCBDeWNsZSA3OAorICogRnJpIEp1biAyMyAyMDI4ID0gNDY2NS0wNSotMDEsIFllYXIgNDUsIEN5Y2xlIDc4CisgKiBUdWUgQXByIDIyIDIwMzEgPSA0NjY4LTAzKi0wMSwgWWVhciA0OCwgQ3ljbGUgNzgKKyAqIFRodSBEZWMgMjIgMjAzMyA9IDQ2NzAtMTEqLTAxLCBZZWFyIDUwLCBDeWNsZSA3OAorICogV2VkIEp1bCAyMyAyMDM2ID0gNDY3My0wNiotMDEsIFllYXIgNTMsIEN5Y2xlIDc4CisgKiBXZWQgSnVuIDIyIDIwMzkgPSA0Njc2LTA1Ki0wMSwgWWVhciA1NiwgQ3ljbGUgNzgKKyAqIFNhdCBNYXIgMjIgMjA0MiA9IDQ2NzktMDIqLTAxLCBZZWFyIDU5LCBDeWNsZSA3OAorICogVHVlIEF1ZyAyMyAyMDQ0ID0gNDY4MS0wNyotMDEsIFllYXIgMDEsIEN5Y2xlIDc5CisgKiBTdW4gSnVuIDIzIDIwNDcgPSA0Njg0LTA1Ki0wMSwgWWVhciAwNCwgQ3ljbGUgNzkKKyAqIFRodSBBcHIgMjEgMjA1MCA9IDQ2ODctMDMqLTAxLCBZZWFyIDA3LCBDeWNsZSA3OQorICogTW9uIFNlcCAyMyAyMDUyID0gNDY4OS0wOCotMDEsIFllYXIgMDksIEN5Y2xlIDc5CisgKiBTYXQgSnVsIDI0IDIwNTUgPSA0NjkyLTA2Ki0wMSwgWWVhciAxMiwgQ3ljbGUgNzkKKyAqIFdlZCBNYXkgMjIgMjA1OCA9IDQ2OTUtMDQqLTAxLCBZZWFyIDE1LCBDeWNsZSA3OQorICogV2VkIEFwciAyMCAyMDYxID0gNDY5OC0wMyotMDEsIFllYXIgMTgsIEN5Y2xlIDc5CisgKiBGcmkgQXVnIDI0IDIwNjMgPSA0NzAwLTA3Ki0wMSwgWWVhciAyMCwgQ3ljbGUgNzkKKyAqIFdlZCBKdW4gMjMgMjA2NiA9IDQ3MDMtMDUqLTAxLCBZZWFyIDIzLCBDeWNsZSA3OQorICogVHVlIE1heSAyMSAyMDY5ID0gNDcwNi0wNCotMDEsIFllYXIgMjYsIEN5Y2xlIDc5CisgKiBUaHUgU2VwIDI0IDIwNzEgPSA0NzA4LTA4Ki0wMSwgWWVhciAyOCwgQ3ljbGUgNzkKKyAqIFR1ZSBKdWwgMjQgMjA3NCA9IDQ3MTEtMDYqLTAxLCBZZWFyIDMxLCBDeWNsZSA3OQorICogU2F0IE1heSAyMiAyMDc3ID0gNDcxNC0wNCotMDEsIFllYXIgMzQsIEN5Y2xlIDc5CisgKiBTYXQgQXByIDIwIDIwODAgPSA0NzE3LTAzKi0wMSwgWWVhciAzNywgQ3ljbGUgNzkKKyAqIE1vbiBBdWcgMjQgMjA4MiA9IDQ3MTktMDcqLTAxLCBZZWFyIDM5LCBDeWNsZSA3OQorICogRnJpIEp1biAyMiAyMDg1ID0gNDcyMi0wNSotMDEsIFllYXIgNDIsIEN5Y2xlIDc5CisgKiBGcmkgTWF5IDIxIDIwODggPSA0NzI1LTA0Ki0wMSwgWWVhciA0NSwgQ3ljbGUgNzkKKyAqIFN1biBTZXAgMjQgMjA5MCA9IDQ3MjctMDgqLTAxLCBZZWFyIDQ3LCBDeWNsZSA3OQorICogVGh1IEp1bCAyMyAyMDkzID0gNDczMC0wNiotMDEsIFllYXIgNTAsIEN5Y2xlIDc5CisgKiBUdWUgTWF5IDIyIDIwOTYgPSA0NzMzLTA0Ki0wMSwgWWVhciA1MywgQ3ljbGUgNzkKKyAqIFN1biBNYXIgMjIgMjA5OSA9IDQ3MzYtMDIqLTAxLCBZZWFyIDU2LCBDeWNsZSA3OQorICovCitwdWJsaWMgY2xhc3MgQ2hpbmVzZVRlc3QgZXh0ZW5kcyBDYWxlbmRhclRlc3QgeworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3NbXSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBDaGluZXNlVGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IGJhc2ljIG1hcHBpbmcgdG8gYW5kIGZyb20gR3JlZ29yaWFuLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RNYXBwaW5nKCkgeworCisgICAgICAgIGZpbmFsIGludFtdIERBVEEgPSB7CisgICAgICAgICAgICAvLyAoTm90ZTogbW9udGhzIGFyZSAxLWJhc2VkKQorICAgICAgICAgICAgLy8gR3JlZ29yaWFuICAgIENoaW5lc2UKKyAgICAgICAgICAgIDE5NjQsICA5LCAgNCwgICA0NjAxLCAgNywwLCAyOCwKKyAgICAgICAgICAgIDE5NjQsICA5LCAgNSwgICA0NjAxLCAgNywwLCAyOSwKKyAgICAgICAgICAgIDE5NjQsICA5LCAgNiwgICA0NjAxLCAgOCwwLCAgMSwKKyAgICAgICAgICAgIDE5NjQsICA5LCAgNywgICA0NjAxLCAgOCwwLCAgMiwKKyAgICAgICAgICAgIDE5NjEsIDEyLCAyNSwgICA0NTk4LCAxMSwwLCAxOCwKKyAgICAgICAgICAgIDE5OTksICA2LCAgNCwgICA0NjM2LCAgNCwwLCAyMSwKKyAgICAgICAgICAgIAorICAgICAgICAgICAgMTk5MCwgIDUsIDIzLCAgIDQ2MjcsICA0LDAsIDI5LAorICAgICAgICAgICAgMTk5MCwgIDUsIDI0LCAgIDQ2MjcsICA1LDAsICAxLAorICAgICAgICAgICAgMTk5MCwgIDYsIDIyLCAgIDQ2MjcsICA1LDAsIDMwLAorICAgICAgICAgICAgMTk5MCwgIDYsIDIzLCAgIDQ2MjcsICA1LDEsICAxLAorICAgICAgICAgICAgMTk5MCwgIDcsIDIwLCAgIDQ2MjcsICA1LDEsIDI4LAorICAgICAgICAgICAgMTk5MCwgIDcsIDIxLCAgIDQ2MjcsICA1LDEsIDI5LAorICAgICAgICAgICAgMTk5MCwgIDcsIDIyLCAgIDQ2MjcsICA2LDAsICAxLAorICAgICAgICB9OworCisgICAgICAgIENoaW5lc2VDYWxlbmRhciBjYWwgPSBuZXcgQ2hpbmVzZUNhbGVuZGFyKCk7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAgICAgbG9nbG4oIkdyZWdvcmlhbiAtPiBDaGluZXNlIik7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgKSB7CisgICAgICAgICAgICBEYXRlIGRhdGUgPSBuZXcgRGF0ZShEQVRBW2krK10tMTkwMCwgREFUQVtpKytdLTEsIERBVEFbaSsrXSk7CisgICAgICAgICAgICBjYWwuc2V0VGltZShkYXRlKTsKKyAgICAgICAgICAgIGludCB5ID0gY2FsLmdldChDYWxlbmRhci5FWFRFTkRFRF9ZRUFSKTsKKyAgICAgICAgICAgIGludCBtID0gY2FsLmdldChDYWxlbmRhci5NT05USCkrMTsgLy8gMC1iYXNlZCAtPiAxLWJhc2VkCisgICAgICAgICAgICBpbnQgTCA9IGNhbC5nZXQoQ2hpbmVzZUNhbGVuZGFyLklTX0xFQVBfTU9OVEgpOworICAgICAgICAgICAgaW50IGQgPSBjYWwuZ2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCk7CisgICAgICAgICAgICBpbnQgeUUgPSBEQVRBW2krK107IC8vIEV4cGVjdGVkIHksIG0sIGlzTGVhcE1vbnRoLCBkCisgICAgICAgICAgICBpbnQgbUUgPSBEQVRBW2krK107IC8vIDEtYmFzZWQKKyAgICAgICAgICAgIGludCBMRSA9IERBVEFbaSsrXTsKKyAgICAgICAgICAgIGludCBkRSA9IERBVEFbaSsrXTsKKyAgICAgICAgICAgIGJ1Zi5zZXRMZW5ndGgoMCk7CisgICAgICAgICAgICBidWYuYXBwZW5kKGRhdGUgKyAiIC0+ICIpOworICAgICAgICAgICAgYnVmLmFwcGVuZCh5ICsgIi8iICsgbSArIChMPT0xPyIobGVhcCkiOiIiKSArICIvIiArIGQpOworICAgICAgICAgICAgaWYgKHkgPT0geUUgJiYgbSA9PSBtRSAmJiBMID09IExFICYmIGQgPT0gZEUpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT0s6ICIgKyBidWYudG9TdHJpbmcoKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiAiICsgYnVmLnRvU3RyaW5nKCkgKyAiLCBleHBlY3RlZCAiICsKKyAgICAgICAgICAgICAgICAgICAgICB5RSArICIvIiArIG1FICsgKExFPT0xPyIobGVhcCkiOiIiKSArICIvIiArIGRFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGxvZ2xuKCJDaGluZXNlIC0+IEdyZWdvcmlhbiIpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7ICkgeworICAgICAgICAgICAgRGF0ZSBkZXhwID0gbmV3IERhdGUoREFUQVtpKytdLTE5MDAsIERBVEFbaSsrXS0xLCBEQVRBW2krK10pOworICAgICAgICAgICAgaW50IGN5ZWFyID0gREFUQVtpKytdOworICAgICAgICAgICAgaW50IGNtb250aCA9IERBVEFbaSsrXTsKKyAgICAgICAgICAgIGludCBjaXNsZWFwbW9udGggPSBEQVRBW2krK107CisgICAgICAgICAgICBpbnQgY2RheW9mbW9udGggPSBEQVRBW2krK107CisgICAgICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuRVhURU5ERURfWUVBUiwgY3llYXIpOworICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5NT05USCwgY21vbnRoLTEpOworICAgICAgICAgICAgY2FsLnNldChDaGluZXNlQ2FsZW5kYXIuSVNfTEVBUF9NT05USCwgY2lzbGVhcG1vbnRoKTsKKyAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuREFZX09GX01PTlRILCBjZGF5b2Ztb250aCk7CisgICAgICAgICAgICBEYXRlIGRhdGUgPSBjYWwuZ2V0VGltZSgpOworICAgICAgICAgICAgYnVmLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoY3llYXIgKyAiLyIgKyBjbW9udGggKworICAgICAgICAgICAgICAgICAgICAgICAoY2lzbGVhcG1vbnRoPT0xPyIobGVhcCkiOiIiKSArICIvIiArIGNkYXlvZm1vbnRoKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIiAtPiAiICsgZGF0ZSk7CisgICAgICAgICAgICBpZiAoZGF0ZS5lcXVhbHMoZGV4cCkpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT0s6ICIgKyBidWYudG9TdHJpbmcoKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiAiICsgYnVmLnRvU3RyaW5nKCkgKyAiLCBleHBlY3RlZCAiICsgZGV4cCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNYWtlIHN1cmUgbm8gR3JlZ29yaWFuIGRhdGVzIG1hcCB0byBDaGluZXNlIDEtYmFzZWQgZGF5IG9mCisgICAgICogbW9udGggemVyby4gIFRoaXMgd2FzIGEgcHJvYmxlbSB3aXRoIHNvbWUgb2YgdGhlIGFzdHJvbm9taWNhbAorICAgICAqIG5ldyBtb29uIGRldGVybWluYXRpb25zLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RaZXJvRE9NKCkgeworICAgICAgICBDaGluZXNlQ2FsZW5kYXIgY2FsID0gbmV3IENoaW5lc2VDYWxlbmRhcigpOworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBncmVnID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKDE5ODksIENhbGVuZGFyLlNFUFRFTUJFUiwgMSk7CisgICAgICAgIGxvZ2xuKCJTdGFydDogIiArIGdyZWcuZ2V0VGltZSgpKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPDEwMDA7ICsraSkgeworICAgICAgICAgICAgY2FsLnNldFRpbWVJbk1pbGxpcyhncmVnLmdldFRpbWVJbk1pbGxpcygpKTsKKyAgICAgICAgICAgIGlmIChjYWwuZ2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCkgPT0gMCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiAiICsgZ3JlZy5nZXRUaW1lKCkgKyAiIC0+ICIgKworICAgICAgICAgICAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuRVhURU5ERURfWUVBUikgKyAiLyIgKworICAgICAgICAgICAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpICsKKyAgICAgICAgICAgICAgICAgICAgICAoY2FsLmdldChDaGluZXNlQ2FsZW5kYXIuSVNfTEVBUF9NT05USCk9PTE/IihsZWFwKSI6IiIpICsKKyAgICAgICAgICAgICAgICAgICAgICAiLyIgKyBjYWwuZ2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ3JlZy5hZGQoQ2FsZW5kYXIuREFZX09GX1lFQVIsIDEpOworICAgICAgICB9CisgICAgICAgIGxvZ2xuKCJFbmQ6ICIgKyBncmVnLmdldFRpbWUoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCBtaW5pbXVtIGFuZCBtYXhpbXVtIGZ1bmN0aW9ucy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0TGltaXRzKCkgeworICAgICAgICAvLyBUaGUgbnVtYmVyIG9mIGRheXMgYW5kIHRoZSBzdGFydCBkYXRlIGNhbiBiZSBhZGp1c3RlZAorICAgICAgICAvLyBhcmJpdHJhcmlseSB0byBlaXRoZXIgc3BlZWQgdXAgdGhlIHRlc3Qgb3IgbWFrZSBpdCBtb3JlCisgICAgICAgIC8vIHRob3JvdWdoLCBidXQgdHJ5IHRvIHRlc3QgYXQgbGVhc3QgYSBmdWxsIHllYXIsIHByZWZlcmFibHkgYQorICAgICAgICAvLyBmdWxsIG5vbi1sZWFwIGFuZCBhIGZ1bGwgbGVhcCB5ZWFyLgorCisgICAgICAgIC8vIEZpbmFsIHBhcmFtZXRlciBpcyBlaXRoZXIgbnVtYmVyIG9mIGRheXMsIGlmID4gMCwgb3IgdGVzdAorICAgICAgICAvLyBkdXJhdGlvbiBpbiBzZWNvbmRzLCBpZiA8IDAuCisgICAgICAgIGRvTGltaXRzVGVzdChuZXcgQ2hpbmVzZUNhbGVuZGFyKCksIG51bGwsCisgICAgICAgICAgICAgICAgICAgICBuZXcgRGF0ZSgxOTg5LTE5MDAsIENhbGVuZGFyLk5PVkVNQkVSLCAxKSwgLTEwKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSdW4gdGhyb3VnaCBzZXZlcmFsIHN0YW5kYXJkIHRlc3RzIGZyb20gRGVyc2hvd2l0eiAmIFJlaW5nb2xkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RKdWxpYW5EYXlNYXBwaW5nKCkgeworCisgICAgICAgIGZpbmFsIFRlc3RDYXNlW10gdGVzdHMgPSB7CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gRnJvbSBEZXJzaG93aXR6ICYgUmVpbmdvbGQsICJDYWxlbmRyaWNhbCBDYWxjdWxhdGlvbnMiLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIFRoZSBtb250aHMgaW4gdGhpcyB0YWJsZSBhcmUgMS1iYXNlZCByYXRoZXIgdGhhbiAwLWJhc2VkLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vICogRmFpbGluZyBmaWVsZHMtPm1pbGxpcworICAgICAgICAgICAgLy8gKiogTWlsbGlzLT5maWVsZHMgZ2l2ZXMgMC1iYXNlZCBtb250aCAtMQorICAgICAgICAgICAgLy8gVGhlc2UgZmFpbHVyZXMgd2VyZSBmaXhlZCBieSBjaGFuZ2luZyB0aGUgc3RhcnQgc2VhcmNoIGRhdGUKKyAgICAgICAgICAgIC8vIGZvciB0aGUgd2ludGVyIHNvbHN0aWNlIGZyb20gRGVjIDE1IHRvIERlYyAxLgorICAgICAgICAgICAgLy8gCisgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgIEp1bGlhbiBEYXkgICBFcmEgIFllYXIgTW9udGggIExlYXAgICBET00gV2tEYXkKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMTUwNzIzMS41LCAgIDM1LCAgIDExLCAgICA2LCBmYWxzZSwgICAxMiwgIFNVTiksCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDE2NjAwMzcuNSwgICA0MiwgICAgOSwgICAxMCwgZmFsc2UsICAgMjcsICBXRUQpLAorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgxNzQ2ODkzLjUsICAgNDYsICAgIDcsICAgIDgsIGZhbHNlLCAgICA0LCAgV0VEKSwKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMTc3MDY0MS41LCAgIDQ3LCAgIDEyLCAgICA4LCBmYWxzZSwgICAgOSwgIFNVTiksCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDE4OTI3MzEuNSwgICA1MiwgICA0NiwgICAxMSwgZmFsc2UsICAgMjAsICBXRUQpLAorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgxOTMxNTc5LjUsICAgNTQsICAgMzMsICAgIDQsIGZhbHNlLCAgICA1LCAgTU9OKSwKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMTk3NDg1MS41LCAgIDU2LCAgIDMxLCAgIDEwLCBmYWxzZSwgICAxNSwgIFNBVCksCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDIwOTExNjQuNSwgICA2MSwgICA1MCwgICAgMywgZmFsc2UsICAgIDcsICBTVU4pLAorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgyMTIxNTA5LjUsICAgNjMsICAgMTMsICAgIDQsIGZhbHNlLCAgIDI0LCAgU1VOKSwKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMjE1NTc3OS41LCAgIDY0LCAgIDQ3LCAgICAyLCBmYWxzZSwgICAgOSwgIEZSSSksCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDIxNzQwMjkuNSwgICA2NSwgICAzNywgICAgMiwgZmFsc2UsICAgIDksICBTQVQpLAorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgyMTkxNTg0LjUsICAgNjYsICAgMjUsICAgIDIsIGZhbHNlLCAgIDIzLCAgRlJJKSwKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMjE5NTI2MS41LCAgIDY2LCAgIDM1LCAgICAzLCBmYWxzZSwgICAgOSwgIFNVTiksIC8vKgorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgyMjI5Mjc0LjUsICAgNjgsICAgIDgsICAgIDUsIGZhbHNlLCAgICAyLCAgU1VOKSwgLy8qCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDIyNDU1ODAuNSwgICA2OCwgICA1MywgICAgMSwgZmFsc2UsICAgIDgsICBXRUQpLCAvLyoqCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDIyNjYxMDAuNSwgICA2OSwgICA0OSwgICAgMywgZmFsc2UsICAgIDQsICBTQVQpLCAKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMjI4ODU0Mi41LCAgIDcwLCAgIDUwLCAgICA4LCBmYWxzZSwgICAgMiwgIFNBVCksIC8vKgorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgyMjkwOTAxLjUsICAgNzAsICAgNTcsICAgIDEsIGZhbHNlLCAgIDI5LCAgU0FUKSwgLy8qCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDIzMjMxNDAuNSwgICA3MiwgICAyNSwgICAgNCwgIHRydWUsICAgMjAsICBXRUQpLCAvLyoKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMjMzNDg0OC41LCAgIDcyLCAgIDU3LCAgICA2LCBmYWxzZSwgICAgNSwgIFNVTiksCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDIzNDgwMjAuNSwgICA3MywgICAzMywgICAgNiwgZmFsc2UsICAgIDYsICBGUkkpLAorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgyMzY2OTc4LjUsICAgNzQsICAgMjUsICAgIDUsIGZhbHNlLCAgICA1LCAgU1VOKSwKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMjM4NTY0OC41LCAgIDc1LCAgIDE2LCAgICA2LCBmYWxzZSwgICAxMiwgIE1PTiksCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDIzOTI4MjUuNSwgICA3NSwgICAzNiwgICAgMiwgZmFsc2UsICAgMTMsICBXRUQpLAorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgyNDE2MjIzLjUsICAgNzYsICAgNDAsICAgIDMsIGZhbHNlLCAgIDIyLCAgU1VOKSwKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMjQyNTg0OC41LCAgIDc3LCAgICA2LCAgICA3LCBmYWxzZSwgICAyMSwgIFNVTiksCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDI0MzAyNjYuNSwgICA3NywgICAxOCwgICAgOCwgZmFsc2UsICAgIDksICBNT04pLAorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgyNDMwODMzLjUsICAgNzcsICAgMjAsICAgIDMsIGZhbHNlLCAgIDE1LCAgTU9OKSwKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMjQzMTAwNC41LCAgIDc3LCAgIDIwLCAgICA5LCBmYWxzZSwgICAgOSwgIFRIVSksCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDI0NDg2OTguNSwgICA3OCwgICAgOSwgICAgMiwgZmFsc2UsICAgMTQsICBUVUUpLAorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgyNDUwMTM4LjUsICAgNzgsICAgMTMsICAgIDEsIGZhbHNlLCAgICA3LCAgU1VOKSwKKyAgICAgICAgICAgIG5ldyBDaGluZXNlVGVzdENhc2UoMjQ2NTczNy41LCAgIDc4LCAgIDU1LCAgIDEwLCBmYWxzZSwgICAxNCwgIFdFRCksCisgICAgICAgICAgICBuZXcgQ2hpbmVzZVRlc3RDYXNlKDI0ODYwNzYuNSwgICA3OSwgICA1MSwgICAgNiwgZmFsc2UsICAgIDcsICBTVU4pLAorCisgICAgICAgICAgICAvLyBBZGRpdGlvbmFsIHRlc3RzIG5vdCBmcm9tIEQmUgorICAgICAgICAgICAgbmV3IENoaW5lc2VUZXN0Q2FzZSgyNDY3NDk2LjUsICAgNzgsICAgNjAsICAgIDgsIGZhbHNlLCAgICAyLCAgRlJJKSwgLy8geWVhciA2MAorICAgICAgICB9OworCisgICAgICAgIENoaW5lc2VDYWxlbmRhciBjYWwgPSBuZXcgQ2hpbmVzZUNhbGVuZGFyKCk7CisgICAgICAgIGNhbC5zZXRMZW5pZW50KHRydWUpOworICAgICAgICBkb1Rlc3RDYXNlcyh0ZXN0cywgY2FsKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IGZvcm1hdHRpbmcuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEZvcm1hdCgpIHsKKyAgICAgICAgQ2hpbmVzZUNhbGVuZGFyIGNhbCA9IG5ldyBDaGluZXNlQ2FsZW5kYXIoKTsKKyAgICAgICAgRGF0ZUZvcm1hdCBmbXQgPSBEYXRlRm9ybWF0LmdldERhdGVUaW1lSW5zdGFuY2UoY2FsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0ZUZvcm1hdC5ERUZBVUxULCBEYXRlRm9ybWF0LkRFRkFVTFQpOworCisgICAgICAgIERhdGVbXSBEQVRBID0geworICAgICAgICAgICAgLy8gV2VkIE1heSAyMyAyMDAxID0gTW9udGggNChsZWFwKSwgRGF5IDEsIFllYXIgMTgsIEN5Y2xlIDc4CisgICAgICAgICAgICBuZXcgRGF0ZSgyMDAxLTE5MDAsIENhbGVuZGFyLk1BWSwgMjIpLAorICAgICAgICAgICAgbmV3IERhdGUoMjAwMS0xOTAwLCBDYWxlbmRhci5NQVksIDIzKQorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIFN0cmluZyBzID0gZm10LmZvcm1hdChEQVRBW2ldKTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgRGF0ZSBlID0gZm10LnBhcnNlKHMpOworICAgICAgICAgICAgICAgIGlmIChlLmVxdWFscyhEQVRBW2ldKSkgeworICAgICAgICAgICAgICAgICAgICBsb2dsbigiT2s6ICIgKyBEQVRBW2ldICsgIiAtPiAiICsgcyArICIgLT4gIiArIGUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgREFUQVtpXSArICIgLT4gIiArIHMgKyAiIC0+ICIgKyBlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChqYXZhLnRleHQuUGFyc2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiAiICsgcyArICIgLT4gcGFyc2UgZmFpbHVyZSBhdCAiICsgZS5nZXRFcnJvck9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICBlcnJsbihlLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTWFrZSBzdXJlIElTX0xFQVBfTU9OVEggcGFydGljaXBhdGVzIGluIGZpZWxkIHJlc29sdXRpb24uCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFJlc29sdXRpb24oKSB7CisgICAgICAgIENoaW5lc2VDYWxlbmRhciBjYWwgPSBuZXcgQ2hpbmVzZUNhbGVuZGFyKCk7CisgICAgICAgIERhdGVGb3JtYXQgZm10ID0gRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoY2FsLCBEYXRlRm9ybWF0LkRFRkFVTFQpOworCisgICAgICAgIC8vIE1heSAyMiAyMDAxID0geTQ2MzggbTQgZDMwIGRveTExOQorICAgICAgICAvLyBNYXkgMjMgMjAwMSA9IHk0NjM4IG00KiBkMSBkb3kxMjAKKworICAgICAgICBmaW5hbCBpbnQgVEhFX1lFQVIgPSA0NjM4OworICAgICAgICBmaW5hbCBpbnQgRU5EID0gLTE7CisKKyAgICAgICAgaW50W10gREFUQSA9IHsKKyAgICAgICAgICAgIC8vIEZvcm1hdDoKKyAgICAgICAgICAgIC8vIChmaWVsZCwgdmFsdWUpKywgRU5ELCBleHAubW9udGgsIGV4cC5pc0xlYXBNb250aCwgZXhwLkRPTQorICAgICAgICAgICAgLy8gTm90ZTogZXhwLm1vbnRoIGlzIE9ORS1CQVNFRAorCisgICAgICAgICAgICAvLyBJZiB3ZSBzZXQgREFZX09GX1lFQVIgb25seSwgdGhhdCBzaG91bGQgYmUgdXNlZAorICAgICAgICAgICAgQ2FsZW5kYXIuREFZX09GX1lFQVIsIDEsCisgICAgICAgICAgICBFTkQsCisgICAgICAgICAgICAxLDAsMSwgLy8gRXhwZWN0IDEtMQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBJZiB3ZSBzZXQgTU9OVEggb25seSwgdGhhdCBzaG91bGQgYmUgdXNlZAorICAgICAgICAgICAgQ2hpbmVzZUNhbGVuZGFyLklTX0xFQVBfTU9OVEgsIDEsCisgICAgICAgICAgICBDYWxlbmRhci5EQVlfT0ZfTU9OVEgsIDEsCisgICAgICAgICAgICBDYWxlbmRhci5NT05USCwgMywKKyAgICAgICAgICAgIEVORCwKKyAgICAgICAgICAgIDQsMSwxLCAvLyBFeHBlY3QgNCotMQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBJZiB3ZSBzZXQgdGhlIERPWSBsYXN0LCB0aGF0IHNob3VsZCB0YWtlIHByZWNlZGVuY2UKKyAgICAgICAgICAgIENhbGVuZGFyLk1PTlRILCAxLCAvLyBTaG91bGQgaWdub3JlCisgICAgICAgICAgICBDaGluZXNlQ2FsZW5kYXIuSVNfTEVBUF9NT05USCwgMSwgLy8gU2hvdWxkIGlnbm9yZQorICAgICAgICAgICAgQ2FsZW5kYXIuREFZX09GX01PTlRILCAxLCAvLyBTaG91bGQgaWdub3JlCisgICAgICAgICAgICBDYWxlbmRhci5EQVlfT0ZfWUVBUiwgMTIxLAorICAgICAgICAgICAgRU5ELAorICAgICAgICAgICAgNCwxLDIsIC8vIEV4cGVjdCA0Ki0yCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEkndmUgZGlzYWJsZWQgdGhpcyB0ZXN0IGJlY2F1c2UgaXQgZG9lc24ndCB3b3JrIHRoaXMgd2F5LAorICAgICAgICAgICAgLy8gbm90IGV2ZW4gd2l0aCBhIEdyZWdvcmlhbkNhbGVuZGFyISAgTU9OVEggYWxvbmUgaXNuJ3QgZW5vdWdoCisgICAgICAgICAgICAvLyB0byBzdXBlcnNlZGUgREFZX09GX1lFQVIuICBTb21lIG90aGVyIG1vbnRoLXJlbGF0ZWQgZmllbGQgaXMKKyAgICAgICAgICAgIC8vIGFsc28gcmVxdWlyZWQuIC0gTGl1IDExLzI4LzAwCisgICAgICAgICAgICAvLyEgLy8gSWYgd2Ugc2V0IE1PTlRIIGxhc3QsIHRoYXQgc2hvdWxkIHRha2UgcHJlY2VkZW5jZQorICAgICAgICAgICAgLy8hIENoaW5lc2VDYWxlbmRhci5JU19MRUFQX01PTlRILCAxLAorICAgICAgICAgICAgLy8hIENhbGVuZGFyLkRBWV9PRl9NT05USCwgMSwKKyAgICAgICAgICAgIC8vISBDYWxlbmRhci5EQVlfT0ZfWUVBUiwgNSwgLy8gU2hvdWxkIGlnbm9yZQorICAgICAgICAgICAgLy8hIENhbGVuZGFyLk1PTlRILCAzLAorICAgICAgICAgICAgLy8hIEVORCwKKyAgICAgICAgICAgIC8vISA0LDEsMSwgLy8gRXhwZWN0IDQqLTEKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gSWYgd2Ugc2V0IElTX0xFQVBfTU9OVEggbGFzdCwgdGhhdCBzaG91bGQgdGFrZSBwcmVjZWRlbmNlCisgICAgICAgICAgICBDYWxlbmRhci5NT05USCwgMywKKyAgICAgICAgICAgIENhbGVuZGFyLkRBWV9PRl9NT05USCwgMSwKKyAgICAgICAgICAgIENhbGVuZGFyLkRBWV9PRl9ZRUFSLCA1LCAvLyBTaG91bGQgaWdub3JlCisgICAgICAgICAgICBDaGluZXNlQ2FsZW5kYXIuSVNfTEVBUF9NT05USCwgMSwKKyAgICAgICAgICAgIEVORCwKKyAgICAgICAgICAgIDQsMSwxLCAvLyBFeHBlY3QgNCotMQorICAgICAgICB9OworCisgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgKSB7CisgICAgICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuRVhURU5ERURfWUVBUiwgVEhFX1lFQVIpOworICAgICAgICAgICAgYnVmLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIkVYVEVOREVEX1lFQVI9IiArIFRIRV9ZRUFSKTsKKyAgICAgICAgICAgIHdoaWxlIChEQVRBW2ldICE9IEVORCkgeworICAgICAgICAgICAgICAgIGNhbC5zZXQoREFUQVtpKytdLCBEQVRBW2krK10pOworICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIiAiICsgZmllbGROYW1lKERBVEFbaS0yXSkgKyAiPSIgKyBEQVRBW2ktMV0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKytpOyAvLyBTa2lwIG92ZXIgRU5EIG1hcmsKKyAgICAgICAgICAgIGludCBleHBNb250aCA9IERBVEFbaSsrXS0xOworICAgICAgICAgICAgaW50IGV4cElzTGVhcE1vbnRoID0gREFUQVtpKytdOworICAgICAgICAgICAgaW50IGV4cERPTSA9IERBVEFbaSsrXTsKKyAgICAgICAgICAgIGludCBtb250aCA9IGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpOworICAgICAgICAgICAgaW50IGlzTGVhcE1vbnRoID0gY2FsLmdldChDaGluZXNlQ2FsZW5kYXIuSVNfTEVBUF9NT05USCk7CisgICAgICAgICAgICBpbnQgZG9tID0gY2FsLmdldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgpOworICAgICAgICAgICAgaWYgKGV4cE1vbnRoID09IG1vbnRoICYmIGV4cElzTGVhcE1vbnRoID09IGlzTGVhcE1vbnRoICYmCisgICAgICAgICAgICAgICAgZG9tID09IGV4cERPTSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJPSzogIiArIGJ1ZiArICIgPT4gIiArIGZtdC5mb3JtYXQoY2FsLmdldFRpbWUoKSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcyA9IGZtdC5mb3JtYXQoY2FsLmdldFRpbWUoKSk7CisgICAgICAgICAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5FWFRFTkRFRF9ZRUFSLCBUSEVfWUVBUik7CisgICAgICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5NT05USCwgZXhwTW9udGgpOworICAgICAgICAgICAgICAgIGNhbC5zZXQoQ2hpbmVzZUNhbGVuZGFyLklTX0xFQVBfTU9OVEgsIGV4cElzTGVhcE1vbnRoKTsKKyAgICAgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCwgZXhwRE9NKTsKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIGJ1ZiArICIgPT4gIiArIHMgKworICAgICAgICAgICAgICAgICAgICAgICI9IiArIChtb250aCsxKSArICIsIiArIGlzTGVhcE1vbnRoICsgIiwiICsgZG9tICsKKyAgICAgICAgICAgICAgICAgICAgICAiLCBleHBlY3RlZCAiICsgZm10LmZvcm1hdChjYWwuZ2V0VGltZSgpKSArCisgICAgICAgICAgICAgICAgICAgICAgIj0iICsgKGV4cE1vbnRoKzEpICsgIiwiICsgZXhwSXNMZWFwTW9udGggKyAiLCIgKyBleHBET00pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgYmVoYXZpb3Igb2YgZmllbGRzIHRoYXQgYXJlIG91dCBvZiByYW5nZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0T3V0T2ZSYW5nZSgpIHsKKyAgICAgICAgaW50W10gREFUQSA9IG5ldyBpbnRbXSB7CisgICAgICAgICAgICAvLyBJbnB1dCAgICAgICBPdXRwdXQKKyAgICAgICAgICAgIDQ2MzgsIDEzLCAgMSwgICA0NjM5LCAgMSwgIDEsCisgICAgICAgICAgICA0NjM4LCAxOCwgIDEsICAgNDYzOSwgIDYsICAxLAorICAgICAgICAgICAgNDYzOSwgIDAsICAxLCAgIDQ2MzgsIDEyLCAgMSwKKyAgICAgICAgICAgIDQ2MzksIC02LCAgMSwgICA0NjM4LCAgNiwgIDEsCisgICAgICAgICAgICA0NjM4LCAgMSwgMzIsICAgNDYzOCwgIDIsICAyLCAvLyAxLTQ2MzggaGFzIDMwIGRheXMKKyAgICAgICAgICAgIDQ2MzgsICAyLCAtMSwgICA0NjM4LCAgMSwgMjksCisgICAgICAgIH07CisgICAgICAgIENoaW5lc2VDYWxlbmRhciBjYWwgPSBuZXcgQ2hpbmVzZUNhbGVuZGFyKCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgKSB7CisgICAgICAgICAgICBpbnQgeTEgPSBEQVRBW2krK107CisgICAgICAgICAgICBpbnQgbTEgPSBEQVRBW2krK10tMTsKKyAgICAgICAgICAgIGludCBkMSA9IERBVEFbaSsrXTsKKyAgICAgICAgICAgIGludCB5MiA9IERBVEFbaSsrXTsKKyAgICAgICAgICAgIGludCBtMiA9IERBVEFbaSsrXS0xOworICAgICAgICAgICAgaW50IGQyID0gREFUQVtpKytdOworICAgICAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLkVYVEVOREVEX1lFQVIsIHkxKTsKKyAgICAgICAgICAgIGNhbC5zZXQoTU9OVEgsIG0xKTsKKyAgICAgICAgICAgIGNhbC5zZXQoREFURSwgZDEpOworICAgICAgICAgICAgaW50IHkgPSBjYWwuZ2V0KENhbGVuZGFyLkVYVEVOREVEX1lFQVIpOworICAgICAgICAgICAgaW50IG0gPSBjYWwuZ2V0KE1PTlRIKTsKKyAgICAgICAgICAgIGludCBkID0gY2FsLmdldChEQVRFKTsKKyAgICAgICAgICAgIGlmICh5IT15MiB8fCBtIT1tMiB8fCBkIT1kMikgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiAiICsgeTEgKyAiLyIgKyAobTErMSkgKyAiLyIgKyBkMSArICIgcmVzb2x2ZXMgdG8gIiArCisgICAgICAgICAgICAgICAgICAgICAgeSArICIvIiArIChtKzEpICsgIi8iICsgZCArICIsIGV4cGVjdGVkICIgKworICAgICAgICAgICAgICAgICAgICAgIHkyICsgIi8iICsgKG0yKzEpICsgIi8iICsgZDIpOworICAgICAgICAgICAgfSBlbHNlICBpZiAoaXNWZXJib3NlKCkpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT0s6ICIgKyB5MSArICIvIiArIChtMSsxKSArICIvIiArIGQxICsgIiByZXNvbHZlcyB0byAiICsKKyAgICAgICAgICAgICAgICAgICAgICB5ICsgIi8iICsgKG0rMSkgKyAiLyIgKyBkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgdGhlIGJlaGF2aW9yIG9mIENoaW5lc2VDYWxlbmRhci5hZGQoKS4gIFRoZSBvbmx5IHJlYWwKKyAgICAgKiBuYXN0aW5lc3Mgd2l0aCByb2xsIGlzIHRoZSBNT05USCBmaWVsZCBhcm91bmQgbGVhcCBtb250aHMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEFkZCgpIHsKKyAgICAgICAgaW50W11bXSB0ZXN0cyA9IG5ldyBpbnRbXVtdIHsKKyAgICAgICAgICAgIC8vIE1PTlRIUyBBUkUgMS1CQVNFRCBIRVJFCisgICAgICAgICAgICAvLyBpbnB1dCAgICAgICAgICAgICAgIGFkZCAgICAgICAgICAgb3V0cHV0CisgICAgICAgICAgICAvLyB5ZWFyICBtb24gICAgZGF5ICAgIGZpZWxkIGFtb3VudCAgeWVhciAgbW9uICAgIGRheQorICAgICAgICAgICAgeyAgNDY0MiwgICAzLDAsICAxNSwgICBNT05USCwgICAzLCAgIDQ2NDIsICAgNiwwLCAgMTUgfSwgLy8gbm9ybWFsCisgICAgICAgICAgICB7ICA0NjM5LCAgMTIsMCwgIDE1LCAgIE1PTlRILCAgIDEsICAgNDY0MCwgICAxLDAsICAxNSB9LCAvLyBhY3Jvc3MgeWVhcgorICAgICAgICAgICAgeyAgNDY0MCwgICAxLDAsICAxNSwgICBNT05USCwgIC0xLCAgIDQ2MzksICAxMiwwLCAgMTUgfSwgLy8gYWNyb3NzIHllYXIKKyAgICAgICAgICAgIHsgIDQ2MzgsICAgMywwLCAgMTUsICAgTU9OVEgsICAgMywgICA0NjM4LCAgIDUsMCwgIDE1IH0sIC8vIDQ9bGVhcAorICAgICAgICAgICAgeyAgNDYzOCwgICAzLDAsICAxNSwgICBNT05USCwgICAyLCAgIDQ2MzgsICAgNCwxLCAgMTUgfSwgLy8gND1sZWFwCisgICAgICAgICAgICB7ICA0NjM4LCAgIDQsMCwgIDE1LCAgIE1PTlRILCAgIDEsICAgNDYzOCwgICA0LDEsICAxNSB9LCAvLyA0PWxlYXAKKyAgICAgICAgICAgIHsgIDQ2MzgsICAgNCwxLCAgMTUsICAgTU9OVEgsICAgMSwgICA0NjM4LCAgIDUsMCwgIDE1IH0sIC8vIDQ9bGVhcAorICAgICAgICAgICAgeyAgNDYzOCwgICA0LDAsICAzMCwgICBNT05USCwgICAxLCAgIDQ2MzgsICAgNCwxLCAgMjkgfSwgLy8gZG9tIHNob3VsZCBwaW4KKyAgICAgICAgICAgIHsgIDQ2MzgsICAgNCwwLCAgMzAsICAgTU9OVEgsICAgMiwgICA0NjM4LCAgIDUsMCwgIDMwIH0sIC8vIG5vIGRvbSBwaW4KKyAgICAgICAgICAgIHsgIDQ2MzgsICAgNCwwLCAgMzAsICAgTU9OVEgsICAgMywgICA0NjM4LCAgIDYsMCwgIDI5IH0sIC8vIGRvbSBzaG91bGQgcGluCisgICAgICAgIH07CisgICAgICAgCisgICAgICAgIENoaW5lc2VDYWxlbmRhciBjYWwgPSBuZXcgQ2hpbmVzZUNhbGVuZGFyKCk7CisgICAgICAgIGRvUm9sbEFkZChBREQsIGNhbCwgdGVzdHMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgdGhlIGJlaGF2aW9yIG9mIENoaW5lc2VDYWxlbmRhci5yb2xsKCkuICBUaGUgb25seSByZWFsCisgICAgICogbmFzdGluZXNzIHdpdGggcm9sbCBpcyB0aGUgTU9OVEggZmllbGQgYXJvdW5kIGxlYXAgbW9udGhzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RSb2xsKCkgeworICAgICAgICBpbnRbXVtdIHRlc3RzID0gbmV3IGludFtdW10geworICAgICAgICAgICAgLy8gTU9OVEhTIEFSRSAxLUJBU0VEIEhFUkUKKyAgICAgICAgICAgIC8vIGlucHV0ICAgICAgICAgICAgICAgYWRkICAgICAgICAgICBvdXRwdXQKKyAgICAgICAgICAgIC8vIHllYXIgIG1vbiAgICBkYXkgICAgZmllbGQgYW1vdW50ICB5ZWFyICBtb24gICAgZGF5CisgICAgICAgICAgICB7ICA0NjQyLCAgIDMsMCwgIDE1LCAgIE1PTlRILCAgIDMsICAgNDY0MiwgICA2LDAsICAxNSB9LCAvLyBub3JtYWwKKyAgICAgICAgICAgIHsgIDQ2NDIsICAgMywwLCAgMTUsICAgTU9OVEgsICAxMSwgICA0NjQyLCAgIDIsMCwgIDE1IH0sIC8vIG5vcm1hbAorICAgICAgICAgICAgeyAgNDYzOSwgIDEyLDAsICAxNSwgICBNT05USCwgICAxLCAgIDQ2MzksICAgMSwwLCAgMTUgfSwgLy8gYWNyb3NzIHllYXIKKyAgICAgICAgICAgIHsgIDQ2NDAsICAgMSwwLCAgMTUsICAgTU9OVEgsICAtMSwgICA0NjQwLCAgMTIsMCwgIDE1IH0sIC8vIGFjcm9zcyB5ZWFyCisgICAgICAgICAgICB7ICA0NjM4LCAgIDMsMCwgIDE1LCAgIE1PTlRILCAgIDMsICAgNDYzOCwgICA1LDAsICAxNSB9LCAvLyA0PWxlYXAKKyAgICAgICAgICAgIHsgIDQ2MzgsICAgMywwLCAgMTUsICAgTU9OVEgsICAxNiwgICA0NjM4LCAgIDUsMCwgIDE1IH0sIC8vIDQ9bGVhcAorICAgICAgICAgICAgeyAgNDYzOCwgICAzLDAsICAxNSwgICBNT05USCwgICAyLCAgIDQ2MzgsICAgNCwxLCAgMTUgfSwgLy8gND1sZWFwCisgICAgICAgICAgICB7ICA0NjM4LCAgIDMsMCwgIDE1LCAgIE1PTlRILCAgMjgsICAgNDYzOCwgICA0LDEsICAxNSB9LCAvLyA0PWxlYXAKKyAgICAgICAgICAgIHsgIDQ2MzgsICAgNCwwLCAgMTUsICAgTU9OVEgsICAgMSwgICA0NjM4LCAgIDQsMSwgIDE1IH0sIC8vIDQ9bGVhcAorICAgICAgICAgICAgeyAgNDYzOCwgICA0LDAsICAxNSwgICBNT05USCwgLTEyLCAgIDQ2MzgsICAgNCwxLCAgMTUgfSwgLy8gND1sZWFwCisgICAgICAgICAgICB7ICA0NjM4LCAgIDQsMSwgIDE1LCAgIE1PTlRILCAgIDEsICAgNDYzOCwgICA1LDAsICAxNSB9LCAvLyA0PWxlYXAKKyAgICAgICAgICAgIHsgIDQ2MzgsICAgNCwxLCAgMTUsICAgTU9OVEgsIC0yNSwgICA0NjM4LCAgIDUsMCwgIDE1IH0sIC8vIDQ9bGVhcAorICAgICAgICAgICAgeyAgNDYzOCwgICA0LDAsICAzMCwgICBNT05USCwgICAxLCAgIDQ2MzgsICAgNCwxLCAgMjkgfSwgLy8gZG9tIHNob3VsZCBwaW4KKyAgICAgICAgICAgIHsgIDQ2MzgsICAgNCwwLCAgMzAsICAgTU9OVEgsICAxNCwgICA0NjM4LCAgIDQsMSwgIDI5IH0sIC8vIGRvbSBzaG91bGQgcGluCisgICAgICAgICAgICB7ICA0NjM4LCAgIDQsMCwgIDMwLCAgIE1PTlRILCAgMTUsICAgNDYzOCwgICA1LDAsICAzMCB9LCAvLyBubyBkb20gcGluCisgICAgICAgICAgICB7ICA0NjM4LCAgIDQsMCwgIDMwLCAgIE1PTlRILCAtMTAsICAgNDYzOCwgICA2LDAsICAyOSB9LCAvLyBkb20gc2hvdWxkIHBpbgorICAgICAgICB9OworICAgICAgIAorICAgICAgICBDaGluZXNlQ2FsZW5kYXIgY2FsID0gbmV3IENoaW5lc2VDYWxlbmRhcigpOworICAgICAgICBkb1JvbGxBZGQoUk9MTCwgY2FsLCB0ZXN0cyk7CisgICAgfQorICAgIAorICAgIHZvaWQgZG9Sb2xsQWRkKGJvb2xlYW4gcm9sbCwgQ2hpbmVzZUNhbGVuZGFyIGNhbCwgaW50W11bXSB0ZXN0cykgeworICAgICAgICBTdHJpbmcgbmFtZSA9IHJvbGwgPyAicm9sbGluZyIgOiAiYWRkaW5nIjsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVzdHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGludFtdIHRlc3QgPSB0ZXN0c1tpXTsKKworICAgICAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5FWFRFTkRFRF9ZRUFSLCB0ZXN0WzBdKTsKKyAgICAgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLk1PTlRILCB0ZXN0WzFdLTEpOworICAgICAgICAgICAgICAgIGNhbC5zZXQoQ2hpbmVzZUNhbGVuZGFyLklTX0xFQVBfTU9OVEgsIHRlc3RbMl0pOworICAgICAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuREFZX09GX01PTlRILCB0ZXN0WzNdKTsKKyAgICAgICAgICAgIGlmIChyb2xsKSB7CisgICAgICAgICAgICAgICAgY2FsLnJvbGwodGVzdFs0XSwgdGVzdFs1XSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNhbC5hZGQodGVzdFs0XSwgdGVzdFs1XSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY2FsLmdldChDYWxlbmRhci5FWFRFTkRFRF9ZRUFSKSAhPSB0ZXN0WzZdIHx8CisgICAgICAgICAgICAgICAgY2FsLmdldChNT05USCkgIT0gKHRlc3RbN10tMSkgfHwKKyAgICAgICAgICAgICAgICBjYWwuZ2V0KENoaW5lc2VDYWxlbmRhci5JU19MRUFQX01PTlRIKSAhPSB0ZXN0WzhdIHx8CisgICAgICAgICAgICAgICAgY2FsLmdldChEQVRFKSAhPSB0ZXN0WzldKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZhaWw6ICIgKyBuYW1lICsgIiAiICsKKyAgICAgICAgICAgICAgICAgICAgICB5bWRUb1N0cmluZyh0ZXN0WzBdLCB0ZXN0WzFdLTEsIHRlc3RbMl0sIHRlc3RbM10pCisgICAgICAgICAgICAgICAgICAgICAgKyAiICIgKyBmaWVsZE5hbWUodGVzdFs0XSkgKyAiIGJ5ICIgKyB0ZXN0WzVdCisgICAgICAgICAgICAgICAgICAgICAgKyAiOiBleHBlY3RlZCAiICsKKyAgICAgICAgICAgICAgICAgICAgICB5bWRUb1N0cmluZyh0ZXN0WzZdLCB0ZXN0WzddLTEsIHRlc3RbOF0sIHRlc3RbOV0pCisgICAgICAgICAgICAgICAgICAgICAgKyAiLCBnb3QgIiArIHltZFRvU3RyaW5nKGNhbCkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChpc1ZlcmJvc2UoKSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJPSzogIiArIG5hbWUgKyAiICIgKworICAgICAgICAgICAgICAgICAgICAgIHltZFRvU3RyaW5nKHRlc3RbMF0sIHRlc3RbMV0tMSwgdGVzdFsyXSwgdGVzdFszXSkKKyAgICAgICAgICAgICAgICAgICAgKyAiICIgKyBmaWVsZE5hbWUodGVzdFs0XSkgKyAiIGJ5ICIgKyB0ZXN0WzVdCisgICAgICAgICAgICAgICAgICAgICsgIjogZ290ICIgKyB5bWRUb1N0cmluZyhjYWwpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlcnQgeWVhcixtb250aCxkYXkgdmFsdWVzIHRvIHRoZSBmb3JtICJ5ZWFyL21vbnRoL2RheSIuCisgICAgICogT24gaW5wdXQgdGhlIG1vbnRoIHZhbHVlIGlzIHplcm8tYmFzZWQsIGJ1dCBpbiB0aGUgcmVzdWx0IHN0cmluZyBpdCBpcyBvbmUtYmFzZWQuCisgICAgICovCisgICAgc3RhdGljIHB1YmxpYyBTdHJpbmcgeW1kVG9TdHJpbmcoaW50IHllYXIsIGludCBtb250aCwgaW50IGlzTGVhcE1vbnRoLCBpbnQgZGF5KSB7CisgICAgICAgIHJldHVybiAiIiArIHllYXIgKyAiLyIgKyAobW9udGgrMSkgKworICAgICAgICAgICAgKChpc0xlYXBNb250aCE9MCk/IihsZWFwKSI6IiIpICsKKyAgICAgICAgICAgICIvIiArIGRheTsKKyAgICB9CisKKy8vICAgIHB1YmxpYyB2b2lkIFRlc3RGaW5kTGVhcE1vbnRocygpIHsKKy8vICAgICAgICBDaGluZXNlQ2FsZW5kYXIgY2FsID0gbmV3IENoaW5lc2VDYWxlbmRhcigpOworLy8gICAgICAgIGNhbC5zZXRUaW1lKG5ldyBEYXRlKDIwMDAtMTkwMCwgQ2FsZW5kYXIuSkFOVUFSWSwgMSkpOworLy8gICAgICAgIGxvbmcgZW5kID0gbmV3IERhdGUoMjEwMC0xOTAwLCBDYWxlbmRhci5KQU5VQVJZLCAxKS5nZXRUaW1lKCk7CisvLyAgICAgICAgQ2hpbmVzZURhdGVGb3JtYXQgZm10ID0gKENoaW5lc2VEYXRlRm9ybWF0KSBEYXRlRm9ybWF0LmdldEluc3RhbmNlKGNhbCk7CisvLyAgICAgICAgZm10LmFwcGx5UGF0dGVybigidS1NTWwtZGQsICdZZWFyJyB5LCAnQ3ljbGUnIEciKTsKKy8vICAgICAgICB3aGlsZSAoY2FsLmdldFRpbWVJbk1pbGxpcygpIDwgZW5kKSB7CisvLyAgICAgICAgICAgIGlmIChjYWwuZ2V0KENoaW5lc2VDYWxlbmRhci5JU19MRUFQX01PTlRIKSAhPSAwKSB7CisvLyAgICAgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCwgMSk7CisvLyAgICAgICAgICAgICAgICBsb2dsbihjYWwuZ2V0VGltZSgpICsgIiA9ICIgKyBmbXQuZm9ybWF0KGNhbC5nZXRUaW1lKCkpKTsKKy8vICAgICAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuREFZX09GX01PTlRILCAyOSk7CisvLyAgICAgICAgICAgIH0KKy8vICAgICAgICAgICAgY2FsLmFkZChDYWxlbmRhci5EQVlfT0ZfWUVBUiwgMjUpOworLy8gICAgICAgIH0KKy8vICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3QvY2FsZW5kYXIvQ2hpbmVzZVRlc3RDYXNlLmphdmEgYi9zcmMvY29tL2libS90ZXN0L2NhbGVuZGFyL0NoaW5lc2VUZXN0Q2FzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjgxODVkYWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXN0L2NhbGVuZGFyL0NoaW5lc2VUZXN0Q2FzZS5qYXZhCkBAIC0wLDAgKzEsNDggQEAKKworcGFja2FnZSBjb20uaWJtLnRlc3QuY2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK3B1YmxpYyBjbGFzcyBDaGluZXNlVGVzdENhc2UgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKyAgICAvKioKKyAgICAgKiBJbml0aWFsaXplIGFuIG9iamVjdCB1c2luZyBhIEp1bGlhbiBkYXkgbnVtYmVyIGFuZAorICAgICAqIHRoZSBjb3JyZXNwb25kaW5nIGZpZWxkcyBmb3IgdGhlIGNhbGVuZGFyIGJlaW5nIHRlc3RlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBlcmEgdGhlIEVSQSBmaWVsZCBvZiB0ZXN0ZWQgY2FsZW5kYXIgb24gdGhlIGdpdmVuIEp1bGlhbgorICAgICAqIGRheQorICAgICAqIEBwYXJhbSB5ZWFyIHRoZSBZRUFSIGZpZWxkIG9mIHRlc3RlZCBjYWxlbmRhciBvbiB0aGUgZ2l2ZW4KKyAgICAgKiBKdWxpYW4gZGF5CisgICAgICogQHBhcmFtIG1vbnRoIHRoZSBNT05USCAoMS1iYXNlZCkgZmllbGQgb2YgdGVzdGVkIGNhbGVuZGFyIG9uCisgICAgICogdGhlIGdpdmVuIEp1bGlhbiBkYXkKKyAgICAgKiBAcGFyYW0gaXNMZWFwTW9udGggaWYgdHJ1ZSwgdHJlYXQgbW9udGggYXMgYSBsZWFwIG1vbnRoCisgICAgICogQHBhcmFtIGRheU9mTW9udGggdGhlIERBWV9PRl9NT05USCBmaWVsZCBvZiB0ZXN0ZWQgY2FsZW5kYXIgb24gdGhlCisgICAgICogZ2l2ZW4gSnVsaWFuIGRheQorICAgICAqIEBwYXJhbSBkYXlPZldlZWsgdGhlIERBWV9PRl9XRUVLIGZpZWxkIG9mIHRlc3RlZCBjYWxlbmRhciBvbiBnaXZlbgorICAgICAqIEp1bGlhbiBkYXkKKyAgICAgKi8KKyAgICBwdWJsaWMgQ2hpbmVzZVRlc3RDYXNlKGRvdWJsZSBqdWxpYW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXJhLCBpbnQgeWVhciwgaW50IG1vbnRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBpc0xlYXBNb250aCwgaW50IGRheU9mTW9udGgsIGludCBkYXlPZldlZWspIHsKKworICAgICAgICBzZXRUaW1lKG5ldyBEYXRlKEpVTElBTl9FUE9DSCArIChsb25nKShPTkVfREFZICoganVsaWFuKSkpOworICAgICAgICAKKyAgICAgICAgc2V0KENhbGVuZGFyLkVSQSwgZXJhKTsKKyAgICAgICAgc2V0KENhbGVuZGFyLllFQVIsIHllYXIpOworICAgICAgICBzZXQoQ2FsZW5kYXIuTU9OVEgsIG1vbnRoIC0gMSk7CisgICAgICAgIHNldChDaGluZXNlQ2FsZW5kYXIuSVNfTEVBUF9NT05USCwgaXNMZWFwTW9udGg/MTowKTsKKyAgICAgICAgc2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCwgZGF5T2ZNb250aCk7CisgICAgICAgIHNldChDYWxlbmRhci5EQVlfT0ZfV0VFSywgZGF5T2ZXZWVrKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB0ZXN0IGNhc2UncyB0aW1lLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiBkb3dUb1N0cmluZyhnZXQoQ2FsZW5kYXIuREFZX09GX1dFRUspKSArCisgICAgICAgICAgICBnZXQoQ2FsZW5kYXIuWUVBUikgKyAib2YiICsgZ2V0KENhbGVuZGFyLkVSQSkgKworICAgICAgICAgICAgIi8iICsgKGdldChDYWxlbmRhci5NT05USCkrMSkgKworICAgICAgICAgICAgKGdldChDaGluZXNlQ2FsZW5kYXIuSVNfTEVBUF9NT05USCk9PTE/IihsZWFwKSI6IiIpICsgIi8iICsKKyAgICAgICAgICAgIGdldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3QvY2FsZW5kYXIvQ29tcGF0aWJpbGl0eVRlc3QuamF2YSBiL3NyYy9jb20vaWJtL3Rlc3QvY2FsZW5kYXIvQ29tcGF0aWJpbGl0eVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lY2JiYThhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGVzdC9jYWxlbmRhci9Db21wYXRpYmlsaXR5VGVzdC5qYXZhCkBAIC0wLDAgKzEsMTAyMCBAQAorLyoqCisgKiBAdGVzdCAxLjEzIDk5LzExLzE0CisgKiBAYnVnIDQwNjQ2NTQKKyAqIEBzdW1tYXJ5IHRlc3QgZm9yIENhbGVuZGFyCisgKi8KKworcGFja2FnZSBjb20uaWJtLnRlc3QuY2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnRleHQuKjsKK2ltcG9ydCBqYXZhLmlvLio7CisKK3B1YmxpYyBjbGFzcyBDb21wYXRpYmlsaXR5VGVzdCBleHRlbmRzIGNvbS5pYm0udGVzdC5UZXN0Rm13ayB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJndltdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IENvbXBhdGliaWxpdHlUZXN0KCkucnVuKGFyZ3YpOworICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBGSUVMRF9OQU1FID0geworICAgICAgICAiRVJBIiwgIllFQVIiLCAiTU9OVEgiLCAiV0VFS19PRl9ZRUFSIiwgIldFRUtfT0ZfTU9OVEgiLAorICAgICAgICAiREFZX09GX01PTlRIIiwgIkRBWV9PRl9ZRUFSIiwgIkRBWV9PRl9XRUVLIiwKKyAgICAgICAgIkRBWV9PRl9XRUVLX0lOX01PTlRIIiwgIkFNX1BNIiwgIkhPVVIiLCAiSE9VUl9PRl9EQVkiLAorICAgICAgICAiTUlOVVRFIiwgIlNFQ09ORCIsICJNSUxMSVNFQ09ORCIsICJaT05FX09GRlNFVCIsCisgICAgICAgICJEU1RfT0ZGU0VUIiwgIllFQVJfV09ZIiwgIkRPV19MT0NBTCIsICJFWFRFTkRFRF9ZRUFSIiwKKyAgICAgICAgIkpVTElBTl9EQVkiLCAiTUlMTElTRUNPTkRTX0lOX0RBWSIsCisgICAgfTsKKworICAgIC8qKgorICAgICAqIFRlc3QgdGhlIGJlaGF2aW9yIG9mIHRoZSBHcmVnb3JpYW5DYWxlbmRhciBhcm91bmQgdGhlIGNoYW5nZW92ZXIuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEdyZWdvcmlhbkNoYW5nZW92ZXIoKSB7CisgICAgICAgIERhdGUgY28gPSBuZXcgRGF0ZSgxNTgyLTE5MDAsIENhbGVuZGFyLk9DVE9CRVIsIDE1KTsKKyAgICAgICAgZmluYWwgaW50IE9ORV9EQVkgPSAyNCo2MCo2MCoxMDAwOworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWwgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKTsKKyAgICAgICAgLyoKKyAgICAgICAgICBDaGFuZ2VvdmVyIC03IGRheXM6IDE1ODIvOS8yOCBkb3c9NgorICAgICAgICAgIENoYW5nZW92ZXIgLTYgZGF5czogMTU4Mi85LzI5IGRvdz03CisgICAgICAgICAgQ2hhbmdlb3ZlciAtNSBkYXlzOiAxNTgyLzkvMzAgZG93PTEKKyAgICAgICAgICBDaGFuZ2VvdmVyIC00IGRheXM6IDE1ODIvMTAvMSBkb3c9MgorICAgICAgICAgIENoYW5nZW92ZXIgLTMgZGF5czogMTU4Mi8xMC8yIGRvdz0zCisgICAgICAgICAgQ2hhbmdlb3ZlciAtMiBkYXlzOiAxNTgyLzEwLzMgZG93PTQKKyAgICAgICAgICBDaGFuZ2VvdmVyIC0xIGRheXM6IDE1ODIvMTAvNCBkb3c9NQorICAgICAgICAgIENoYW5nZW92ZXIgKzAgZGF5czogMTU4Mi8xMC8xNSBkb3c9NgorICAgICAgICAgIENoYW5nZW92ZXIgKzEgZGF5czogMTU4Mi8xMC8xNiBkb3c9NworICAgICAgICAgIENoYW5nZW92ZXIgKzIgZGF5czogMTU4Mi8xMC8xNyBkb3c9MQorICAgICAgICAgIENoYW5nZW92ZXIgKzMgZGF5czogMTU4Mi8xMC8xOCBkb3c9MgorICAgICAgICAgIENoYW5nZW92ZXIgKzQgZGF5czogMTU4Mi8xMC8xOSBkb3c9MworICAgICAgICAgIENoYW5nZW92ZXIgKzUgZGF5czogMTU4Mi8xMC8yMCBkb3c9NAorICAgICAgICAgIENoYW5nZW92ZXIgKzYgZGF5czogMTU4Mi8xMC8yMSBkb3c9NQorICAgICAgICAgIENoYW5nZW92ZXIgKzcgZGF5czogMTU4Mi8xMC8yMiBkb3c9NgorICAgICAgICAgICovCisgICAgICAgIGludCBNT05bXSA9IHsgIDksICA5LCAgOSwxMCwxMCwxMCwxMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMTAsIDEwIH07CisgICAgICAgIGludCBET01bXSA9IHsgMjgsIDI5LCAzMCwgMSwgMiwgMywgNCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyIH07CisgICAgICAgIGludCBET1dbXSA9IHsgIDYsICA3LCAgMSwgMiwgMywgNCwgNSwgIDYsICA3LCAgMSwgIDIsICAzLCAgNCwgIDUsICA2IH07CisgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gPC1DaGFuZ2VvdmVyIEZyaSBPY3QgMTUgMTU4MgorICAgICAgICBpbnQgaj0wOworICAgICAgICBmb3IgKGludCBpPS03OyBpPD03OyArK2ksICsraikgeworICAgICAgICAgICAgRGF0ZSBkID0gbmV3IERhdGUoY28uZ2V0VGltZSgpICsgaSpPTkVfREFZKTsKKyAgICAgICAgICAgIGNhbC5zZXRUaW1lKGQpOworICAgICAgICAgICAgaW50IHkgPSBjYWwuZ2V0KENhbGVuZGFyLllFQVIpLCBtb24gPSBjYWwuZ2V0KENhbGVuZGFyLk1PTlRIKSsxLUNhbGVuZGFyLkpBTlVBUlksCisgICAgICAgICAgICAgICAgZG9tID0gY2FsLmdldChDYWxlbmRhci5EQVRFKSwgZG93ID0gY2FsLmdldChDYWxlbmRhci5EQVlfT0ZfV0VFSyk7CisgICAgICAgICAgICBsb2dsbigiQ2hhbmdlb3ZlciAiICsgKGk+PTA/IisiOiIiKSArCisgICAgICAgICAgICAgICAgICBpICsgIiBkYXlzOiAiICsgeSArICIvIiArIG1vbiArICIvIiArIGRvbSArICIgZG93PSIgKyBkb3cpOworICAgICAgICAgICAgaWYgKHkgIT0gMTU4MiB8fCBtb24gIT0gTU9OW2pdIHx8IGRvbSAhPSBET01bal0gfHwgZG93ICE9IERPV1tqXSkKKyAgICAgICAgICAgICAgICBlcnJsbigiIEZhaWw6IEFib3ZlIGxpbmUgaXMgd3JvbmciKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgdGhlIG1hcHBpbmcgYmV0d2VlbiBtaWxsaXMgYW5kIGZpZWxkcy4gIEZvciB0aGUgcHVycG9zZXMKKyAgICAgKiBvZiB0aGlzIHRlc3QsIHdlIGRvbid0IGNhcmUgYWJvdXQgdGltZXpvbmVzIGFuZCB3ZWVrIGRhdGEKKyAgICAgKiAoZmlyc3QgZGF5IG9mIHdlZWssIG1pbmltYWwgZGF5cyBpbiBmaXJzdCB3ZWVrKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0TWFwcGluZygpIHsKKyAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICBEYXRlIFBVUkVfR1JFR09SSUFOID0gbmV3IERhdGUoTG9uZy5NSU5fVkFMVUUpOworICAgICAgICAgICAgRGF0ZSBQVVJFX0pVTElBTiA9IG5ldyBEYXRlKExvbmcuTUFYX1ZBTFVFKTsKKyAgICAgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbCA9CisgICAgICAgICAgICAgICAgbmV3IEdyZWdvcmlhbkNhbGVuZGFyKFRpbWVab25lLmdldFRpbWVab25lKCJVVEMiKSk7CisgICAgICAgICAgICBmaW5hbCBpbnQgRVBPQ0hfSlVMSUFOID0gMjQ0MDU4ODsKKyAgICAgICAgICAgIGZpbmFsIGxvbmcgT05FX0RBWSA9IDI0KjYwKjYwKjEwMDBMOworICAgICAgICAgICAgY29tLmlibS50ZXh0LlNpbXBsZURhdGVGb3JtYXQgZm10ID0KKyAgICAgICAgICAgICAgICBuZXcgY29tLmlibS50ZXh0LlNpbXBsZURhdGVGb3JtYXQoIkVFRSBNTU0gZGQgeXl5eSBHIik7CisgICAgICAgICAgICAgICAgLypISDptbTpzcy5TU1MgeiovCisKKyAgICAgICAgICAgIGZvciAoaW50IHR5cGU9MDsgdHlwZTwyOyArK3R5cGUpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4odHlwZT09MCA/ICJHcmVnb3JpYW4iIDogIkp1bGlhbiIpOworICAgICAgICAgICAgICAgIGNhbC5zZXRHcmVnb3JpYW5DaGFuZ2UodHlwZT09MCA/IFBVUkVfR1JFR09SSUFOIDogUFVSRV9KVUxJQU4pOworICAgICAgICAgICAgICAgIGZtdC5zZXRDYWxlbmRhcihjYWwpOworICAgICAgICAgICAgICAgIGludFtdIEogPSB7CisgICAgICAgICAgICAgICAgICAgIDB4N0ZGRkZGRkYsCisgICAgICAgICAgICAgICAgICAgIDB4N0ZGRkZGRjAsCisgICAgICAgICAgICAgICAgICAgIDB4N0YwMDAwMDAsCisgICAgICAgICAgICAgICAgICAgIDB4NzgwMDAwMDAsCisgICAgICAgICAgICAgICAgICAgIDB4NzAwMDAwMDAsCisgICAgICAgICAgICAgICAgICAgIDB4NjAwMDAwMDAsCisgICAgICAgICAgICAgICAgICAgIDB4NTAwMDAwMDAsCisgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwMDAsCisgICAgICAgICAgICAgICAgICAgIDB4MzAwMDAwMDAsCisgICAgICAgICAgICAgICAgICAgIDB4MjAwMDAwMDAsCisgICAgICAgICAgICAgICAgICAgIDB4MTAwMDAwMDAsCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8Si5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmdbXSBsaW0gPSBuZXcgU3RyaW5nWzJdOworICAgICAgICAgICAgICAgICAgICBsb25nW10gbXMgPSBuZXcgbG9uZ1syXTsKKyAgICAgICAgICAgICAgICAgICAgaW50IGpkID0gSltpXTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgc2lnbj0wOyBzaWduPDI7ICsrc2lnbikgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGp1bGlhbiA9IGpkOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNpZ249PTApIGp1bGlhbiA9IC1qdWxpYW47CisgICAgICAgICAgICAgICAgICAgICAgICBsb25nIG1pbGxpcyA9ICgobG9uZylqdWxpYW4gLSBFUE9DSF9KVUxJQU4pICogT05FX0RBWTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zW3NpZ25dID0gbWlsbGlzOworICAgICAgICAgICAgICAgICAgICAgICAgY2FsLnNldFRpbWUobmV3IERhdGUobWlsbGlzKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaW1bc2lnbl0gPSBmbXQuZm9ybWF0KGNhbC5nZXRUaW1lKCkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSkQgKy8tIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb25nLnRvU3RyaW5nKGpkLCAxNikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjogIiArIG1zWzBdICsgIi4uIiArIG1zWzFdICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6ICIgKyBsaW1bMF0gKyAiLi4iICsgbGltWzFdKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBUaW1lWm9uZSBzYXZlWm9uZSA9IFRpbWVab25lLmdldERlZmF1bHQoKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFRpbWVab25lLnNldERlZmF1bHQoVGltZVpvbmUuZ2V0VGltZVpvbmUoIlVUQyIpKTsKKyAgICAgICAgICAgIC8vTkVXQ0FMCisgICAgICAgICAgICBEYXRlIFBVUkVfR1JFR09SSUFOID0gbmV3IERhdGUoTG9uZy5NSU5fVkFMVUUpOworICAgICAgICAgICAgRGF0ZSBQVVJFX0pVTElBTiA9IG5ldyBEYXRlKExvbmcuTUFYX1ZBTFVFKTsKKyAgICAgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbCA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworICAgICAgICAgICAgZmluYWwgaW50IEVQT0NIX0pVTElBTiA9IDI0NDA1ODg7CisgICAgICAgICAgICBmaW5hbCBsb25nIE9ORV9EQVkgPSAyNCo2MCo2MCoxMDAwTDsKKyAgICAgICAgICAgIGludFtdIERBVEEgPSB7CisgICAgICAgICAgICAgICAgLy8gSnVsaWFuIyAgIFllYXIgIE1vbnRoICAgICAgICAgICAgICAgRE9NICAgSlVMSUFOOlllYXIsIE1vbnRoLCAgICAgICBET00KKyAgICAgICAgICAgICAgICAyNDQwNTg4LCAgICAgMTk3MCwgQ2FsZW5kYXIuSkFOVUFSWSwgICAxLCAgICAxOTY5LCBDYWxlbmRhci5ERUNFTUJFUiwgIDE5LCAKKyAgICAgICAgICAgICAgICAyNDE1MDgwLCAgICAgMTkwMCwgQ2FsZW5kYXIuTUFSQ0gsICAgICAxLCAgICAxOTAwLCBDYWxlbmRhci5GRUJSVUFSWSwgIDE3LAorICAgICAgICAgICAgICAgIDI0NTE2MDQsICAgICAyMDAwLCBDYWxlbmRhci5GRUJSVUFSWSwgIDI5LCAgIDIwMDAsIENhbGVuZGFyLkZFQlJVQVJZLCAgMTYsCisgICAgICAgICAgICAgICAgMjQ1MjI2OSwgICAgIDIwMDEsIENhbGVuZGFyLkRFQ0VNQkVSLCAgMjUsICAgMjAwMSwgQ2FsZW5kYXIuREVDRU1CRVIsICAxMiwKKyAgICAgICAgICAgICAgICAyNDE2NTI2LCAgICAgMTkwNCwgQ2FsZW5kYXIuRkVCUlVBUlksICAxNSwgICAxOTA0LCBDYWxlbmRhci5GRUJSVUFSWSwgIDIsCisgICAgICAgICAgICAgICAgMjQxNjY1NiwgICAgIDE5MDQsIENhbGVuZGFyLkpVTkUsICAgICAgMjQsICAgMTkwNCwgQ2FsZW5kYXIuSlVORSwgICAgICAxMSwKKyAgICAgICAgICAgICAgICAxNzIxNDI2LCAgICAgICAgMSwgQ2FsZW5kYXIuSkFOVUFSWSwgICAxLCAgICAgICAxLCBDYWxlbmRhci5KQU5VQVJZLCAgIDMsCisgICAgICAgICAgICAgICAgMjAwMDAwMCwgICAgICA3NjMsIENhbGVuZGFyLlNFUFRFTUJFUiwgMTgsICAgIDc2MywgQ2FsZW5kYXIuU0VQVEVNQkVSLCAxNCwKKyAgICAgICAgICAgICAgICA0MDAwMDAwLCAgICAgNjIzOSwgQ2FsZW5kYXIuSlVMWSwgICAgICAxMiwgICA2MjM5LCBDYWxlbmRhci5NQVksICAgICAgIDI4LAorICAgICAgICAgICAgICAgIDgwMDAwMDAsICAgIDE3MTkxLCBDYWxlbmRhci5GRUJSVUFSWSwgIDI2LCAgMTcxOTAsIENhbGVuZGFyLk9DVE9CRVIsICAgMjIsCisgICAgICAgICAgICAgICAgMTAwMDAwMDAsICAgMjI2NjYsIENhbGVuZGFyLkRFQ0VNQkVSLCAgMjAsICAyMjY2NiwgQ2FsZW5kYXIuSlVMWSwgICAgICA1LAorICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgaSs9NykgeworICAgICAgICAgICAgICAgIGludCBqdWxpYW4gPSBEQVRBW2ldOworICAgICAgICAgICAgICAgIGludCB5ZWFyID0gREFUQVtpKzFdOworICAgICAgICAgICAgICAgIGludCBtb250aCA9IERBVEFbaSsyXTsKKyAgICAgICAgICAgICAgICBpbnQgZG9tID0gREFUQVtpKzNdOworICAgICAgICAgICAgICAgIGludCB5ZWFyMiwgbW9udGgyLCBkb20yOworICAgICAgICAgICAgICAgIGxvbmcgbWlsbGlzID0gKGp1bGlhbiAtIEVQT0NIX0pVTElBTikgKiBPTkVfREFZOworICAgICAgICAgICAgICAgIFN0cmluZyBzOworCisgICAgICAgICAgICAgICAgLy8gVGVzdCBHcmVnb3JpYW4gY29tcHV0YXRpb24KKyAgICAgICAgICAgICAgICBjYWwuc2V0R3JlZ29yaWFuQ2hhbmdlKFBVUkVfR1JFR09SSUFOKTsKKyAgICAgICAgICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjYWwuc2V0KHllYXIsIG1vbnRoLCBkb20pOworICAgICAgICAgICAgICAgIGxvbmcgY2FsTWlsbGlzID0gY2FsLmdldFRpbWUoKS5nZXRUaW1lKCk7CisgICAgICAgICAgICAgICAgbG9uZyBkZWx0YSA9IGNhbE1pbGxpcyAtIG1pbGxpczsKKyAgICAgICAgICAgICAgICBjYWwuc2V0VGltZShuZXcgRGF0ZShtaWxsaXMpKTsKKyAgICAgICAgICAgICAgICB5ZWFyMiA9IGNhbC5nZXQoQ2FsZW5kYXIuWUVBUik7CisgICAgICAgICAgICAgICAgbW9udGgyID0gY2FsLmdldChDYWxlbmRhci5NT05USCk7CisgICAgICAgICAgICAgICAgZG9tMiA9IGNhbC5nZXQoQ2FsZW5kYXIuREFZX09GX01PTlRIKTsKKyAgICAgICAgICAgICAgICBzID0gIkcgIiArIHllYXIgKyAiLSIgKyAobW9udGgrMS1DYWxlbmRhci5KQU5VQVJZKSArICItIiArIGRvbSArCisgICAgICAgICAgICAgICAgICAgICIgPT4gIiArIGNhbE1pbGxpcyArCisgICAgICAgICAgICAgICAgICAgICIgKCIgKyAoKGZsb2F0KWRlbHRhL09ORV9EQVkpICsgIiBkYXkgZGVsdGEpID0+ICIgKworICAgICAgICAgICAgICAgICAgICB5ZWFyMiArICItIiArIChtb250aDIrMS1DYWxlbmRhci5KQU5VQVJZKSArICItIiArIGRvbTI7CisgICAgICAgICAgICAgICAgaWYgKGRlbHRhICE9IDAgfHwgeWVhciAhPSB5ZWFyMiB8fCBtb250aCAhPSBtb250aDIgfHwKKyAgICAgICAgICAgICAgICAgICAgZG9tICE9IGRvbTIpIGVycmxuKHMgKyAiIEZBSUwiKTsKKyAgICAgICAgICAgICAgICBlbHNlIGxvZ2xuKHMpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFRlc3QgSnVsaWFuIGNvbXB1dGF0aW9uCisgICAgICAgICAgICAgICAgeWVhciA9IERBVEFbaSs0XTsKKyAgICAgICAgICAgICAgICBtb250aCA9IERBVEFbaSs1XTsKKyAgICAgICAgICAgICAgICBkb20gPSBEQVRBW2krNl07CisgICAgICAgICAgICAgICAgY2FsLnNldEdyZWdvcmlhbkNoYW5nZShQVVJFX0pVTElBTik7CisgICAgICAgICAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY2FsLnNldCh5ZWFyLCBtb250aCwgZG9tKTsKKyAgICAgICAgICAgICAgICBjYWxNaWxsaXMgPSBjYWwuZ2V0VGltZSgpLmdldFRpbWUoKTsKKyAgICAgICAgICAgICAgICBkZWx0YSA9IGNhbE1pbGxpcyAtIG1pbGxpczsKKyAgICAgICAgICAgICAgICBjYWwuc2V0VGltZShuZXcgRGF0ZShtaWxsaXMpKTsKKyAgICAgICAgICAgICAgICB5ZWFyMiA9IGNhbC5nZXQoQ2FsZW5kYXIuWUVBUik7CisgICAgICAgICAgICAgICAgbW9udGgyID0gY2FsLmdldChDYWxlbmRhci5NT05USCk7CisgICAgICAgICAgICAgICAgZG9tMiA9IGNhbC5nZXQoQ2FsZW5kYXIuREFZX09GX01PTlRIKTsKKyAgICAgICAgICAgICAgICBzID0gIkogIiArIHllYXIgKyAiLSIgKyAobW9udGgrMS1DYWxlbmRhci5KQU5VQVJZKSArICItIiArIGRvbSArCisgICAgICAgICAgICAgICAgICAgICIgPT4gIiArIGNhbE1pbGxpcyArCisgICAgICAgICAgICAgICAgICAgICIgKCIgKyAoKGZsb2F0KWRlbHRhL09ORV9EQVkpICsgIiBkYXkgZGVsdGEpID0+ICIgKworICAgICAgICAgICAgICAgICAgICB5ZWFyMiArICItIiArIChtb250aDIrMS1DYWxlbmRhci5KQU5VQVJZKSArICItIiArIGRvbTI7CisgICAgICAgICAgICAgICAgaWYgKGRlbHRhICE9IDAgfHwgeWVhciAhPSB5ZWFyMiB8fCBtb250aCAhPSBtb250aDIgfHwKKyAgICAgICAgICAgICAgICAgICAgZG9tICE9IGRvbTIpIGVycmxuKHMgKyAiIEZBSUwiKTsKKyAgICAgICAgICAgICAgICBlbHNlIGxvZ2xuKHMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYWwuc2V0R3JlZ29yaWFuQ2hhbmdlKG5ldyBEYXRlKDE1ODItMTkwMCwgQ2FsZW5kYXIuT0NUT0JFUiwgMTUpKTsKKyAgICAgICAgICAgIGF1eE1hcHBpbmcoY2FsLCAxNTgyLCBDYWxlbmRhci5PQ1RPQkVSLCA0KTsKKyAgICAgICAgICAgIGF1eE1hcHBpbmcoY2FsLCAxNTgyLCBDYWxlbmRhci5PQ1RPQkVSLCAxNSk7CisgICAgICAgICAgICBhdXhNYXBwaW5nKGNhbCwgMTU4MiwgQ2FsZW5kYXIuT0NUT0JFUiwgMTYpOworICAgICAgICAgICAgZm9yIChpbnQgeT04MDA7IHk8MzAwMDsgeSs9MSsoaW50KTEwMCpNYXRoLnJhbmRvbSgpKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgbT1DYWxlbmRhci5KQU5VQVJZOyBtPD1DYWxlbmRhci5ERUNFTUJFUjsgKyttKSB7CisgICAgICAgICAgICAgICAgICAgIGF1eE1hcHBpbmcoY2FsLCB5LCBtLCAxNSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgVGltZVpvbmUuc2V0RGVmYXVsdChzYXZlWm9uZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcHJpdmF0ZSB2b2lkIGF1eE1hcHBpbmcoQ2FsZW5kYXIgY2FsLCBpbnQgeSwgaW50IG0sIGludCBkKSB7CisgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICBjYWwuc2V0KHksIG0sIGQpOworICAgICAgICBsb25nIG1pbGxpcyA9IGNhbC5nZXRUaW1lKCkuZ2V0VGltZSgpOworICAgICAgICBjYWwuc2V0VGltZShuZXcgRGF0ZShtaWxsaXMpKTsKKyAgICAgICAgaW50IHllYXIyID0gY2FsLmdldChDYWxlbmRhci5ZRUFSKTsKKyAgICAgICAgaW50IG1vbnRoMiA9IGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpOworICAgICAgICBpbnQgZG9tMiA9IGNhbC5nZXQoQ2FsZW5kYXIuREFZX09GX01PTlRIKTsKKyAgICAgICAgaWYgKHkgIT0geWVhcjIgfHwgbSAhPSBtb250aDIgfHwgZG9tMiAhPSBkKQorICAgICAgICAgICAgZXJybG4oIlJvdW5kLXRyaXAgZmFpbHVyZTogIiArIHkgKyAiLSIgKyAobSsxKSArICItIitkKyIgPT5tcz0+ICIgKworICAgICAgICAgICAgICAgICAgeWVhcjIgKyAiLSIgKyAobW9udGgyKzEpICsgIi0iICsgZG9tMik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdEdlbmVyaWNBUEkoKSB7CisgICAgICAgIFN0cmluZyBzdHI7CisKKyAgICAgICAgRGF0ZSB3aGVuID0gbmV3IERhdGUoOTAsIENhbGVuZGFyLkFQUklMLCAxNSk7CisKKyAgICAgICAgU3RyaW5nIHR6aWQgPSAiVGVzdFpvbmUiOworICAgICAgICBpbnQgdHpvZmZzZXQgPSAxMjM0MDA7CisKKyAgICAgICAgU2ltcGxlVGltZVpvbmUgem9uZSA9IG5ldyBTaW1wbGVUaW1lWm9uZSh0em9mZnNldCwgdHppZCk7CisgICAgICAgIENhbGVuZGFyIGNhbCA9IChDYWxlbmRhcilDYWxlbmRhci5nZXRJbnN0YW5jZSgoU2ltcGxlVGltZVpvbmUpem9uZS5jbG9uZSgpKTsKKworICAgICAgICBpZiAoIXpvbmUuZXF1YWxzKGNhbC5nZXRUaW1lWm9uZSgpKSkgZXJybG4oIkZBSUw6IENhbGVuZGFyLmdldFRpbWVab25lIGZhaWxlZCIpOworCisgICAgICAgIENhbGVuZGFyIGNhbDIgPSBDYWxlbmRhci5nZXRJbnN0YW5jZShjYWwuZ2V0VGltZVpvbmUoKSk7CisKKyAgICAgICAgY2FsLnNldFRpbWUod2hlbik7CisgICAgICAgIGNhbDIuc2V0VGltZSh3aGVuKTsKKworICAgICAgICBpZiAoIShjYWwuZXF1YWxzKGNhbDIpKSkgZXJybG4oIkZBSUw6IENhbGVuZGFyLm9wZXJhdG9yPT0gZmFpbGVkIik7CisgICAgICAgIC8vIGlmICgoKmNhbCAhPSAqY2FsMikpICBlcnJsbigiRkFJTDogQ2FsZW5kYXIub3BlcmF0b3IhPSBmYWlsZWQiKTsKKyAgICAgICAgaWYgKCFjYWwuZXF1YWxzKGNhbDIpIHx8CisgICAgICAgICAgICBjYWwuYmVmb3JlKGNhbDIpIHx8CisgICAgICAgICAgICBjYWwuYWZ0ZXIoY2FsMikpIGVycmxuKCJGQUlMOiBlcXVhbHMvYmVmb3JlL2FmdGVyIGZhaWxlZCIpOworCisgICAgICAgIGNhbDIuc2V0VGltZShuZXcgRGF0ZSh3aGVuLmdldFRpbWUoKSArIDEwMDApKTsKKyAgICAgICAgaWYgKGNhbC5lcXVhbHMoY2FsMikgfHwKKyAgICAgICAgICAgIGNhbDIuYmVmb3JlKGNhbCkgfHwKKyAgICAgICAgICAgIGNhbC5hZnRlcihjYWwyKSkgZXJybG4oIkZBSUw6IGVxdWFscy9iZWZvcmUvYWZ0ZXIgZmFpbGVkIik7CisKKyAgICAgICAgY2FsLnJvbGwoQ2FsZW5kYXIuU0VDT05ELCB0cnVlKTsKKyAgICAgICAgaWYgKCFjYWwuZXF1YWxzKGNhbDIpIHx8CisgICAgICAgICAgICBjYWwuYmVmb3JlKGNhbDIpIHx8CisgICAgICAgICAgICBjYWwuYWZ0ZXIoY2FsMikpIGVycmxuKCJGQUlMOiBlcXVhbHMvYmVmb3JlL2FmdGVyIGZhaWxlZCIpOworCisgICAgICAgIC8vIFJvbGwgYmFjayB0byBKYW51YXJ5CisgICAgICAgIGNhbC5yb2xsKENhbGVuZGFyLk1PTlRILCAoaW50KSgxICsgQ2FsZW5kYXIuREVDRU1CRVIgLSBjYWwuZ2V0KENhbGVuZGFyLk1PTlRIKSkpOworICAgICAgICBpZiAoY2FsLmVxdWFscyhjYWwyKSB8fAorICAgICAgICAgICAgY2FsMi5iZWZvcmUoY2FsKSB8fAorICAgICAgICAgICAgY2FsLmFmdGVyKGNhbDIpKSBlcnJsbigiRkFJTDogZXF1YWxzL2JlZm9yZS9hZnRlciBmYWlsZWQiKTsKKworICAgICAgICAvLyBDKysgb25seQorICAgICAgICAvKiBUaW1lWm9uZSB6ID0gY2FsLm9ycGhhblRpbWVab25lKCk7CisgICAgICAgICAgIGlmICh6LmdldElEKHN0cikgIT0gdHppZCB8fAorICAgICAgICAgICB6LmdldFJhd09mZnNldCgpICE9IHR6b2Zmc2V0KQorICAgICAgICAgICBlcnJsbigiRkFJTDogb3JwaGFuVGltZVpvbmUgZmFpbGVkIik7CisgICAgICAgICAgICovCisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPDI7ICsraSkgeworICAgICAgICAgICAgYm9vbGVhbiBsZW5pZW50ID0gKCBpID4gMCApOworICAgICAgICAgICAgY2FsLnNldExlbmllbnQobGVuaWVudCk7CisgICAgICAgICAgICBpZiAobGVuaWVudCAhPSBjYWwuaXNMZW5pZW50KCkpIGVycmxuKCJGQUlMOiBzZXRMZW5pZW50L2lzTGVuaWVudCBmYWlsZWQiKTsKKyAgICAgICAgICAgIC8vIExhdGVyOiBDaGVjayBmb3IgbGVuaWVudCBiZWhhdmlvcgorICAgICAgICB9CisKKyAgICAgICAgaW50IGk7CisgICAgICAgIGZvciAoaT1DYWxlbmRhci5TVU5EQVk7IGk8PUNhbGVuZGFyLlNBVFVSREFZOyArK2kpIHsKKyAgICAgICAgICAgIGNhbC5zZXRGaXJzdERheU9mV2VlayhpKTsKKyAgICAgICAgICAgIGlmIChjYWwuZ2V0Rmlyc3REYXlPZldlZWsoKSAhPSBpKSBlcnJsbigiRkFJTDogc2V0L2dldEZpcnN0RGF5T2ZXZWVrIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChpPTA7IGk8PTc7ICsraSkgeworICAgICAgICAgICAgY2FsLnNldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsoaSk7CisgICAgICAgICAgICBpZiAoY2FsLmdldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsoKSAhPSBpKSBlcnJsbigiRkFJTDogc2V0L2dldEZpcnN0RGF5T2ZXZWVrIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChpPTA7IGk8Y2FsLmdldEZpZWxkQ291bnQoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoY2FsLmdldE1pbmltdW0oaSkgIT0gY2FsLmdldEdyZWF0ZXN0TWluaW11bShpKSkKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogZ2V0TWluaW11bSBkb2Vzbid0IG1hdGNoIGdldEdyZWF0ZXN0TWluaW11bSBmb3IgZmllbGQgIiArIGkpOworICAgICAgICAgICAgaWYgKGNhbC5nZXRMZWFzdE1heGltdW0oaSkgPiBjYWwuZ2V0TWF4aW11bShpKSkKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogZ2V0TGVhc3RNYXhpbXVtIGxhcmdlciB0aGFuIGdldE1heGltdW0gZm9yIGZpZWxkICIgKyBpKTsKKyAgICAgICAgICAgIGlmIChjYWwuZ2V0TWluaW11bShpKSA+PSBjYWwuZ2V0TWF4aW11bShpKSkKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogZ2V0TWluaW11bSBub3QgbGVzcyB0aGFuIGdldE1heGltdW0gZm9yIGZpZWxkICIgKyBpKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhbC5zZXRUaW1lWm9uZShUaW1lWm9uZS5nZXREZWZhdWx0KCkpOworICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldCgxOTg0LCA1LCAyNCk7CisgICAgICAgIGlmIChjYWwuZ2V0VGltZSgpLmdldFRpbWUoKSAhPSBuZXcgRGF0ZSg4NCwgNSwgMjQpLmdldFRpbWUoKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IENhbGVuZGFyLnNldCgzIGFyZ3MpIGZhaWxlZCIpOworICAgICAgICAgICAgbG9nbG4oIiBHb3Q6ICIgKyBjYWwuZ2V0VGltZSgpICsgIiAgRXhwZWN0ZWQ6ICIgKyBuZXcgRGF0ZSg4NCwgNSwgMjQpKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICBjYWwuc2V0KDE5ODUsIDMsIDIsIDExLCA0OSk7CisgICAgICAgIGlmIChjYWwuZ2V0VGltZSgpLmdldFRpbWUoKSAhPSBuZXcgRGF0ZSg4NSwgMywgMiwgMTEsIDQ5KS5nZXRUaW1lKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBDYWxlbmRhci5zZXQoNSBhcmdzKSBmYWlsZWQiKTsKKyAgICAgICAgICAgIGxvZ2xuKCIgR290OiAiICsgY2FsLmdldFRpbWUoKSArICIgIEV4cGVjdGVkOiAiICsgbmV3IERhdGUoODUsIDMsIDIsIDExLCA0OSkpOworICAgICAgICB9CisKKyAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgIGNhbC5zZXQoMTk5NSwgOSwgMTIsIDEsIDM5LCA1NSk7CisgICAgICAgIGlmIChjYWwuZ2V0VGltZSgpLmdldFRpbWUoKSAhPSBuZXcgRGF0ZSg5NSwgOSwgMTIsIDEsIDM5LCA1NSkuZ2V0VGltZSgpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogQ2FsZW5kYXIuc2V0KDYgYXJncykgZmFpbGVkIik7CisgICAgICAgICAgICBsb2dsbigiIEdvdDogIiArIGNhbC5nZXRUaW1lKCkgKyAiICBFeHBlY3RlZDogIiArIG5ldyBEYXRlKDk1LCA5LCAxMiwgMSwgMzksIDU1KSk7CisgICAgICAgIH0KKworICAgICAgICBjYWwuZ2V0VGltZSgpOworICAgICAgICAvLyBUaGlzIHRlc3QgaXMgc3RyYW5nZSAtLSB3aHkgZG8gd2UgZXhwZWN0IGNlcnRhaW4gZmllbGRzIHRvIGJlIHNldCwgYW5kCisgICAgICAgIC8vIG90aGVycyBub3QgdG8gYmU/ICBSZXZpc2l0IHRoZSBhcHByb3ByaWF0ZW5lc3Mgb2YgdGhpcy4gIC0gQWxhbiBORVdDQUwKKyAgICAgICAgZm9yIChpPTA7IGk8Y2FsLmdldEZpZWxkQ291bnQoKTsgKytpKSB7CisgICAgICAgICAgICBzd2l0Y2goaSkgeworICAgICAgICAgICAgY2FzZSBDYWxlbmRhci5ZRUFSOiBjYXNlIENhbGVuZGFyLk1PTlRIOiBjYXNlIENhbGVuZGFyLkRBVEU6CisgICAgICAgICAgICBjYXNlIENhbGVuZGFyLkhPVVJfT0ZfREFZOiBjYXNlIENhbGVuZGFyLk1JTlVURTogY2FzZSBDYWxlbmRhci5TRUNPTkQ6CisgICAgICAgICAgICBjYXNlIENhbGVuZGFyLkVYVEVOREVEX1lFQVI6CisgICAgICAgICAgICAgICAgaWYgKCFjYWwuaXNTZXQoaSkpIGVycmxuKCJGQUlMOiAiICsgRklFTERfTkFNRVtpXSArICIgaXMgbm90IHNldCIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBpZiAoY2FsLmlzU2V0KGkpKSBlcnJsbigiRkFJTDogIiArIEZJRUxEX05BTUVbaV0gKyAiIGlzIHNldCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FsLmNsZWFyKGkpOworICAgICAgICAgICAgaWYgKGNhbC5pc1NldChpKSkgZXJybG4oIkZBSUw6IENhbGVuZGFyLmNsZWFyL2lzU2V0IGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gZGVsZXRlIGNhbDsKKyAgICAgICAgLy8gZGVsZXRlIGNhbDI7CisKKyAgICAgICAgTG9jYWxlW10gbG9jID0gQ2FsZW5kYXIuZ2V0QXZhaWxhYmxlTG9jYWxlcygpOworICAgICAgICBsb25nIGNvdW50ID0gbG9jLmxlbmd0aDsKKyAgICAgICAgaWYgKGNvdW50IDwgMSB8fCBsb2MgPT0gbnVsbCkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IGdldEF2YWlsYWJsZUxvY2FsZXMgZmFpbGVkIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmb3IgKGk9MDsgaTxjb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UobG9jW2ldKTsKKyAgICAgICAgICAgICAgICAvLyBkZWxldGUgY2FsOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoVGltZVpvbmUuZ2V0RGVmYXVsdCgpLCBMb2NhbGUuRU5HTElTSCk7CisgICAgICAgIC8vIGRlbGV0ZSBjYWw7CisKKyAgICAgICAgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2Uoem9uZSwgTG9jYWxlLkVOR0xJU0gpOworICAgICAgICAvLyBkZWxldGUgY2FsOworCisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGdjID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKHpvbmUpOworICAgICAgICAvLyBkZWxldGUgZ2M7CisKKyAgICAgICAgZ2MgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoTG9jYWxlLkVOR0xJU0gpOworICAgICAgICAvLyBkZWxldGUgZ2M7CisKKyAgICAgICAgZ2MgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoTG9jYWxlLkVOR0xJU0gpOworICAgICAgICAvLyBkZWxldGUgZ2M7CisKKyAgICAgICAgZ2MgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoem9uZSwgTG9jYWxlLkVOR0xJU0gpOworICAgICAgICAvLyBkZWxldGUgZ2M7CisKKyAgICAgICAgZ2MgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoem9uZSk7CisgICAgICAgIC8vIGRlbGV0ZSBnYzsKKworICAgICAgICBnYyA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigxOTk4LCAxMCwgMTQsIDIxLCA0Myk7CisgICAgICAgIGlmIChnYy5nZXRUaW1lKCkuZ2V0VGltZSgpICE9IG5ldyBEYXRlKDk4LCAxMCwgMTQsIDIxLCA0MykuZ2V0VGltZSgpKQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IG5ldyBHcmVnb3JpYW5DYWxlbmRhcih5bWRobSkgZmFpbGVkIik7CisgICAgICAgIC8vIGRlbGV0ZSBnYzsKKworICAgICAgICBnYyA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigxOTk4LCAxMCwgMTQsIDIxLCA0MywgNTUpOworICAgICAgICBpZiAoZ2MuZ2V0VGltZSgpLmdldFRpbWUoKSAhPSBuZXcgRGF0ZSg5OCwgMTAsIDE0LCAyMSwgNDMsIDU1KS5nZXRUaW1lKCkpCisgICAgICAgICAgICBlcnJsbigiRkFJTDogbmV3IEdyZWdvcmlhbkNhbGVuZGFyKHltZGhtcykgZmFpbGVkIik7CisKKyAgICAgICAgLy8gQysrIG9ubHk6CisgICAgICAgIC8vIEdyZWdvcmlhbkNhbGVuZGFyIGdjMiA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcihMb2NhbGUuRU5HTElTSCk7CisgICAgICAgIC8vIGdjMiA9IGdjOworICAgICAgICAvLyBpZiAoZ2MyICE9IGdjIHx8ICEoZ2MyID09IGdjKSkgZXJybG4oIkZBSUw6IEdyZWdvcmlhbkNhbGVuZGFyIGFzc2lnbm1lbnQvb3BlcmF0b3I9PS9vcGVyYXRvciE9IGZhaWxlZCIpOworICAgICAgICAvLyBkZWxldGUgZ2M7CisgICAgICAgIC8vIGRlbGV0ZSB6OworICAgIH0KKworICAgIC8vIFZlcmlmeSBSb2dlciBXZWJzdGVyJ3MgYnVnCisgICAgcHVibGljIHZvaWQgVGVzdFJvZygpIHsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgZ2MgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKTsKKworICAgICAgICBpbnQgeWVhciA9IDE5OTcsIG1vbnRoID0gQ2FsZW5kYXIuQVBSSUwsIGRhdGUgPSAxOworICAgICAgICBnYy5zZXQoeWVhciwgbW9udGgsIGRhdGUpOyAvLyBBcHJpbCAxLCAxOTk3CisKKyAgICAgICAgZ2Muc2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZLCAyMyk7CisgICAgICAgIGdjLnNldChDYWxlbmRhci5NSU5VVEUsIDApOworICAgICAgICBnYy5zZXQoQ2FsZW5kYXIuU0VDT05ELCAwKTsKKyAgICAgICAgZ2Muc2V0KENhbGVuZGFyLk1JTExJU0VDT05ELCAwKTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IDk7IGkrKywgZ2MuYWRkKENhbGVuZGFyLkRBVEUsIDEpKSB7CisgICAgICAgICAgICBpZiAoZ2MuZ2V0KENhbGVuZGFyLllFQVIpICE9IHllYXIgfHwKKyAgICAgICAgICAgICAgICBnYy5nZXQoQ2FsZW5kYXIuTU9OVEgpICE9IG1vbnRoIHx8CisgICAgICAgICAgICAgICAgZ2MuZ2V0KENhbGVuZGFyLkRBVEUpICE9IChkYXRlICsgaSkpCisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IERhdGUgIiArIGdjLmdldFRpbWUoKSArICIgd3JvbmciKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFZlcmlmeSBEQVlfT0ZfV0VFSworICAgIHB1YmxpYyB2b2lkIFRlc3RET1c5NDMoKSB7CisgICAgICAgIGRvd1Rlc3QoZmFsc2UpOworICAgICAgICBkb3dUZXN0KHRydWUpOworICAgIH0KKworICAgIHZvaWQgZG93VGVzdChib29sZWFuIGxlbmllbnQpIHsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisgICAgICAgIGNhbC5zZXQoMTk5NywgQ2FsZW5kYXIuQVVHVVNULCAxMik7IC8vIFdlZG5lc2RheQorICAgICAgICBjYWwuZ2V0VGltZSgpOyAvLyBGb3JjZSB1cGRhdGUKKyAgICAgICAgY2FsLnNldExlbmllbnQobGVuaWVudCk7CisgICAgICAgIGNhbC5zZXQoMTk5NiwgQ2FsZW5kYXIuREVDRU1CRVIsIDEpOyAvLyBTZXQgdGhlIGRhdGUgdG8gYmUgRGVjZW1iZXIgMSwgMTk5NgorICAgICAgICBpbnQgZG93ID0gY2FsLmdldChDYWxlbmRhci5EQVlfT0ZfV0VFSyk7CisgICAgICAgIGludCBtaW4gPSBjYWwuZ2V0TWluaW11bShDYWxlbmRhci5EQVlfT0ZfV0VFSyk7CisgICAgICAgIGludCBtYXggPSBjYWwuZ2V0TWF4aW11bShDYWxlbmRhci5EQVlfT0ZfV0VFSyk7CisgICAgICAgIGlmIChkb3cgPCBtaW4gfHwgZG93ID4gbWF4KSBlcnJsbigiRkFJTDogRGF5IG9mIHdlZWsgIiArIGRvdyArICIgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIGlmIChkb3cgIT0gQ2FsZW5kYXIuU1VOREFZKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDI6IERheSBvZiB3ZWVrIHNob3VsZCBiZSBTVU5EQVk7IGlzICIgKyBkb3cgKyAiOiAiICsgY2FsLmdldFRpbWUoKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1pbiAhPSBDYWxlbmRhci5TVU5EQVkgfHwgbWF4ICE9IENhbGVuZGFyLlNBVFVSREFZKSBlcnJsbigiRkFJTDogTWluL21heCBiYWQiKTsKKyAgICB9CisKKyAgICAvLyBWZXJpZnkgdGhhdCB0aGUgY2xvbmUgbWV0aG9kIHByb2R1Y2VzIGRpc3RpbmN0IG9iamVjdHMgd2l0aCBubworICAgIC8vIHVuaW50ZW50aW9uYWxseSBzaGFyZWQgZmllbGRzLgorICAgIHB1YmxpYyB2b2lkIFRlc3RDbG9uZXNVbmlxdWU5MDgoKSB7CisgICAgICAgIENhbGVuZGFyIGMgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICBDYWxlbmRhciBkID0gKENhbGVuZGFyKWMuY2xvbmUoKTsKKyAgICAgICAgYy5zZXQoQ2FsZW5kYXIuTUlMTElTRUNPTkQsIDEyMyk7CisgICAgICAgIGQuc2V0KENhbGVuZGFyLk1JTExJU0VDT05ELCA0NTYpOworICAgICAgICBpZiAoYy5nZXQoQ2FsZW5kYXIuTUlMTElTRUNPTkQpICE9IDEyMyB8fAorICAgICAgICAgICAgZC5nZXQoQ2FsZW5kYXIuTUlMTElTRUNPTkQpICE9IDQ1NikgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IENsb25lcyBzaGFyZSBmaWVsZHMiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFZlcmlmeSBlZmZlY3Qgb2YgR3JlZ29yaWFuIGN1dG9mZiB2YWx1ZQorICAgIHB1YmxpYyB2b2lkIFRlc3RHcmVnb3JpYW5DaGFuZ2U3NjgoKSB7CisgICAgICAgIGJvb2xlYW4gYjsKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgYyA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigpOworICAgICAgICBsb2dsbigiV2l0aCBjdXRvZmYgIiArIGMuZ2V0R3JlZ29yaWFuQ2hhbmdlKCkpOworICAgICAgICBsb2dsbigiIGlzTGVhcFllYXIoMTgwMCkgPSAiICsgKGI9Yy5pc0xlYXBZZWFyKDE4MDApKSk7CisgICAgICAgIGxvZ2xuKCIgKHNob3VsZCBiZSBGQUxTRSkiKTsKKyAgICAgICAgaWYgKGIgIT0gZmFsc2UpIGVycmxuKCJGQUlMIik7CisgICAgICAgIGMuc2V0R3JlZ29yaWFuQ2hhbmdlKG5ldyBEYXRlKDAsIDAsIDEpKTsgLy8gSmFuIDEgMTkwMAorICAgICAgICBsb2dsbigiV2l0aCBjdXRvZmYgIiArIGMuZ2V0R3JlZ29yaWFuQ2hhbmdlKCkpOworICAgICAgICBsb2dsbigiIGlzTGVhcFllYXIoMTgwMCkgPSAiICsgKGI9Yy5pc0xlYXBZZWFyKDE4MDApKSk7CisgICAgICAgIGxvZ2xuKCIgKHNob3VsZCBiZSBUUlVFKSIpOworICAgICAgICBpZiAoYiAhPSB0cnVlKSBlcnJsbigiRkFJTCIpOworICAgIH0KKworICAgIC8vIFRlc3QgdGhlIGNvcnJlY3QgYmVoYXZpb3Igb2YgdGhlIGRpc2FtYmlndWF0aW9uIGFsZ29yaXRobS4KKyAgICBwdWJsaWMgdm9pZCBUZXN0RGlzYW1iaWd1YXRpb243NjUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgQ2FsZW5kYXIgYyA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIGMuc2V0TGVuaWVudChmYWxzZSk7CisKKyAgICAgICAgYy5jbGVhcigpOworICAgICAgICBjLnNldChDYWxlbmRhci5ZRUFSLCAxOTk3KTsKKyAgICAgICAgYy5zZXQoQ2FsZW5kYXIuTU9OVEgsIENhbGVuZGFyLkpVTkUpOworICAgICAgICBjLnNldChDYWxlbmRhci5EQVRFLCAzKTsKKworICAgICAgICB2ZXJpZnk3NjUoIjE5OTcgdGhpcmQgZGF5IG9mIEp1bmUgPSAiLCBjLCAxOTk3LCBDYWxlbmRhci5KVU5FLCAzKTsKKworICAgICAgICBjLmNsZWFyKCk7CisgICAgICAgIGMuc2V0KENhbGVuZGFyLllFQVIsIDE5OTcpOworICAgICAgICBjLnNldChDYWxlbmRhci5EQVlfT0ZfV0VFSywgQ2FsZW5kYXIuVFVFU0RBWSk7CisgICAgICAgIGMuc2V0KENhbGVuZGFyLk1PTlRILCBDYWxlbmRhci5KVU5FKTsKKyAgICAgICAgYy5zZXQoQ2FsZW5kYXIuREFZX09GX1dFRUtfSU5fTU9OVEgsIDEpOworICAgICAgICB2ZXJpZnk3NjUoIjE5OTcgZmlyc3QgVHVlc2RheSBpbiBKdW5lID0gIiwgYywgMTk5NywgQ2FsZW5kYXIuSlVORSwgMyk7CisKKyAgICAgICAgYy5jbGVhcigpOworICAgICAgICBjLnNldChDYWxlbmRhci5ZRUFSLCAxOTk3KTsKKyAgICAgICAgYy5zZXQoQ2FsZW5kYXIuREFZX09GX1dFRUssIENhbGVuZGFyLlRVRVNEQVkpOworICAgICAgICBjLnNldChDYWxlbmRhci5NT05USCwgQ2FsZW5kYXIuSlVORSk7CisgICAgICAgIGMuc2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLX0lOX01PTlRILCAtMSk7CisgICAgICAgIHZlcmlmeTc2NSgiMTk5NyBsYXN0IFR1ZXNkYXkgaW4gSnVuZSA9ICIsIGMsIDE5OTcsIENhbGVuZGFyLkpVTkUsIDI0KTsKKworICAgICAgICBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjLmNsZWFyKCk7CisgICAgICAgICAgICBjLnNldChDYWxlbmRhci5ZRUFSLCAxOTk3KTsKKyAgICAgICAgICAgIGMuc2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLLCBDYWxlbmRhci5UVUVTREFZKTsKKyAgICAgICAgICAgIGMuc2V0KENhbGVuZGFyLk1PTlRILCBDYWxlbmRhci5KVU5FKTsKKyAgICAgICAgICAgIGMuc2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLX0lOX01PTlRILCAwKTsKKyAgICAgICAgICAgIGMuZ2V0VGltZSgpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIGUgPSBleDsKKyAgICAgICAgfQorICAgICAgICB2ZXJpZnk3NjUoIjE5OTcgemVyby10aCBUdWVzZGF5IGluIEp1bmUgPSAiLCBlLCBjKTsKKworICAgICAgICBjLmNsZWFyKCk7CisgICAgICAgIGMuc2V0KENhbGVuZGFyLllFQVIsIDE5OTcpOworICAgICAgICBjLnNldChDYWxlbmRhci5EQVlfT0ZfV0VFSywgQ2FsZW5kYXIuVFVFU0RBWSk7CisgICAgICAgIGMuc2V0KENhbGVuZGFyLk1PTlRILCBDYWxlbmRhci5KVU5FKTsKKyAgICAgICAgYy5zZXQoQ2FsZW5kYXIuV0VFS19PRl9NT05USCwgMSk7CisgICAgICAgIHZlcmlmeTc2NSgiMTk5NyBUdWVzZGF5IGluIHdlZWsgMSBvZiBKdW5lID0gIiwgYywgMTk5NywgQ2FsZW5kYXIuSlVORSwgMyk7CisKKyAgICAgICAgYy5jbGVhcigpOworICAgICAgICBjLnNldChDYWxlbmRhci5ZRUFSLCAxOTk3KTsKKyAgICAgICAgYy5zZXQoQ2FsZW5kYXIuREFZX09GX1dFRUssIENhbGVuZGFyLlRVRVNEQVkpOworICAgICAgICBjLnNldChDYWxlbmRhci5NT05USCwgQ2FsZW5kYXIuSlVORSk7CisgICAgICAgIGMuc2V0KENhbGVuZGFyLldFRUtfT0ZfTU9OVEgsIDUpOworICAgICAgICB2ZXJpZnk3NjUoIjE5OTcgVHVlc2RheSBpbiB3ZWVrIDUgb2YgSnVuZSA9ICIsIGMsIDE5OTcsIENhbGVuZGFyLkpVTFksIDEpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBjLmNsZWFyKCk7CisgICAgICAgICAgICBjLnNldChDYWxlbmRhci5ZRUFSLCAxOTk3KTsKKyAgICAgICAgICAgIGMuc2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLLCBDYWxlbmRhci5UVUVTREFZKTsKKyAgICAgICAgICAgIGMuc2V0KENhbGVuZGFyLk1PTlRILCBDYWxlbmRhci5KVU5FKTsKKyAgICAgICAgICAgIGMuc2V0KENhbGVuZGFyLldFRUtfT0ZfTU9OVEgsIDApOworICAgICAgICAgICAgdmVyaWZ5NzY1KCIxOTk3IFR1ZXNkYXkgaW4gd2VlayAwIG9mIEp1bmUgPSAiLCBjLCAxOTk3LCBDYWxlbmRhci5NQVksIDI3KTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogRXhjZXB0aW9uIHNlZW46Iik7CisgICAgICAgICAgICAvLyBleC5wcmludFN0YWNrVHJhY2UobG9nKTsKKyAgICAgICAgfQorCisgICAgICAgIGMuY2xlYXIoKTsKKyAgICAgICAgYy5zZXQoQ2FsZW5kYXIuWUVBUiwgMTk5Nyk7CisgICAgICAgIGMuc2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLLCBDYWxlbmRhci5UVUVTREFZKTsKKyAgICAgICAgYy5zZXQoQ2FsZW5kYXIuV0VFS19PRl9ZRUFSLCAxKTsKKyAgICAgICAgdmVyaWZ5NzY1KCIxOTk3IFR1ZXNkYXkgaW4gd2VlayAxIG9mIHllYXIgPSAiLCBjLCAxOTk2LCBDYWxlbmRhci5ERUNFTUJFUiwgMzEpOworCisgICAgICAgIGMuY2xlYXIoKTsKKyAgICAgICAgYy5zZXQoQ2FsZW5kYXIuWUVBUiwgMTk5Nyk7CisgICAgICAgIGMuc2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLLCBDYWxlbmRhci5UVUVTREFZKTsKKyAgICAgICAgYy5zZXQoQ2FsZW5kYXIuV0VFS19PRl9ZRUFSLCAxMCk7CisgICAgICAgIHZlcmlmeTc2NSgiMTk5NyBUdWVzZGF5IGluIHdlZWsgMTAgb2YgeWVhciA9ICIsIGMsIDE5OTcsIENhbGVuZGFyLk1BUkNILCA0KTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgYy5jbGVhcigpOworICAgICAgICAgICAgYy5zZXQoQ2FsZW5kYXIuWUVBUiwgMTk5Nyk7CisgICAgICAgICAgICBjLnNldChDYWxlbmRhci5EQVlfT0ZfV0VFSywgQ2FsZW5kYXIuVFVFU0RBWSk7CisgICAgICAgICAgICBjLnNldChDYWxlbmRhci5XRUVLX09GX1lFQVIsIDApOworICAgICAgICAgICAgdmVyaWZ5NzY1KCIxOTk3IFR1ZXNkYXkgaW4gd2VlayAwIG9mIHllYXIgPSAiLCBjLCAxOTk2LCBDYWxlbmRhci5ERUNFTUJFUiwgMjQpOworICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiRmFpbDogV0VFS19PRl9ZRUFSIDAgc2hvdWxkIGJlIGlsbGVnYWwiKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4KSB7fQorICAgIH0KKyAgICB2b2lkIHZlcmlmeTc2NShTdHJpbmcgbXNnLCBDYWxlbmRhciBjLCBpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5KSB7CisgICAgICAgIGludCBjeSA9IGMuZ2V0KENhbGVuZGFyLllFQVIpOyAvLyBORVdDQUwKKyAgICAgICAgaW50IGNtID0gYy5nZXQoQ2FsZW5kYXIuTU9OVEgpOworICAgICAgICBpbnQgY2QgPSBjLmdldChDYWxlbmRhci5EQVRFKTsKKyAgICAgICAgaWYgKGN5ID09IHllYXIgJiYKKyAgICAgICAgICAgIGNtID09IG1vbnRoICYmCisgICAgICAgICAgICBjZCA9PSBkYXkpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJQQVNTOiAiICsgbXNnICsgYy5nZXRUaW1lKCkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBtc2cgKyBjeSArICIvIiArIChjbSsxKSArICIvIiArIGNkICsKKyAgICAgICAgICAgICAgICAgICI9IiArIGMuZ2V0VGltZSgpICsKKyAgICAgICAgICAgICAgICAgICI7IGV4cGVjdGVkICIgKworICAgICAgICAgICAgICAgICAgeWVhciArICIvIiArIChtb250aCsxKSArICIvIiArIGRheSk7CisgICAgICAgIH0KKyAgICB9CisgICAgLy8gQ2FsbGVkIHdoZW4gZSBleHBlY3RlZCB0byBiZSBub24tbnVsbAorICAgIHZvaWQgdmVyaWZ5NzY1KFN0cmluZyBtc2csIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlLCBDYWxlbmRhciBjKSB7CisgICAgICAgIGlmIChlID09IG51bGwpIGVycmxuKCJGQUlMOiBObyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZm9yICIgKyBtc2cgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLmdldFRpbWUoKSk7CisgICAgICAgIGVsc2UgbG9nbG4oIlBBU1M6ICIgKyBtc2cgKyAiSWxsZWdhbEFyZ3VtZW50IGFzIGV4cGVjdGVkIik7CisgICAgfQorCisgICAgLy8gVGVzdCB0aGUgYmVoYXZpb3Igb2YgR01UIHZzLiBsb2NhbCB0aW1lCisgICAgcHVibGljIHZvaWQgVGVzdEdNVHZzTG9jYWw0MDY0NjU0KCkgeworICAgICAgICAvLyBTYW1wbGUgb3V0cHV0IDE6CisgICAgICAgIC8vICUgL3Vzci9sb2NhbC9qYXZhL2pkazEuMS4zL3NvbGFyaXMvYmluL2phdmEgdGVzdCAxOTk3IDEgMSAxMiAwIDAKKyAgICAgICAgLy8gZGF0ZSA9IFdlZCBKYW4gMDEgMDQ6MDA6MDAgUFNUIDE5OTcKKyAgICAgICAgLy8gb2Zmc2V0IGZvciBXZWQgSmFuIDAxIDA0OjAwOjAwIFBTVCAxOTk3PSAtOGhyCisgICAgICAgIGF1eDQwNjQ2NTQoMTk5NywgMSwgMSwgMTIsIDAsIDApOworCisgICAgICAgIC8vIFNhbXBsZSBvdXRwdXQgMjoKKyAgICAgICAgLy8gJSAvdXNyL2xvY2FsL2phdmEvamRrMS4xLjMvc29sYXJpcy9iaW4vamF2YSB0ZXN0IDE5OTcgNCAxNiAxOCAzMCAwCisgICAgICAgIC8vIGRhdGUgPSBXZWQgQXByIDE2IDEwOjMwOjAwIFBEVCAxOTk3CisgICAgICAgIC8vIG9mZnNldCBmb3IgV2VkIEFwciAxNiAxMDozMDowMCBQRFQgMTk5Nz0gLTdocgorCisgICAgICAgIC8vIE5vdGUgdGhhdCBpbiBzYW1wbGUgb3V0cHV0IDIgYWNjb3JkaW5nIHRvIHRoZSBvZmZzZXQsIHRoZSBnbXQgdGltZQorICAgICAgICAvLyBvZiB0aGUgcmVzdWx0IHdvdWxkIGJlIDE5OTcgNCAxNiAxNyAzMCAwIHdoaWNoIGlzIGRpZmZlcmVudCBmcm9tIHRoZQorICAgICAgICAvLyBpbnB1dCBvZiAxOTk3IDQgMTYgMTggMzAgMC4KKyAgICAgICAgYXV4NDA2NDY1NCgxOTk3LCA0LCAxNiwgMTgsIDMwLCAwKTsKKyAgICB9CisgICAgdm9pZCBhdXg0MDY0NjU0KGludCB5ciwgaW50IG1vLCBpbnQgZHQsIGludCBociwgaW50IG1uLCBpbnQgc2MpIHsKKyAgICAgICAgRGF0ZSBkYXRlOworICAgICAgICBDYWxlbmRhciBnbXRjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworICAgICAgICBnbXRjYWwuc2V0VGltZVpvbmUoVGltZVpvbmUuZ2V0VGltZVpvbmUoIkFmcmljYS9DYXNhYmxhbmNhIikpOworICAgICAgICBnbXRjYWwuc2V0KHlyLCBtby0xLCBkdCwgaHIsIG1uLCBzYyk7CisgICAgICAgIGdtdGNhbC5zZXQoQ2FsZW5kYXIuTUlMTElTRUNPTkQsIDApOworCisgICAgICAgIGRhdGUgPSBnbXRjYWwuZ2V0VGltZSgpOworICAgICAgICBsb2dsbigiZGF0ZSA9ICIrZGF0ZSk7CisKKyAgICAgICAgQ2FsZW5kYXIgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKwljYWwuc2V0VGltZVpvbmUoVGltZVpvbmUuZ2V0VGltZVpvbmUoIkFtZXJpY2EvTG9zX0FuZ2VscyIpKTsKKyAgICAgICAgY2FsLnNldFRpbWUoZGF0ZSk7CisKKyAgICAgICAgaW50IG9mZnNldCA9IGNhbC5nZXRUaW1lWm9uZSgpLmdldE9mZnNldChjYWwuZ2V0KENhbGVuZGFyLkVSQSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsLmdldChDYWxlbmRhci5ZRUFSKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLk1PTlRIKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLkRBVEUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuREFZX09GX1dFRUspLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuTUlMTElTRUNPTkQpKTsKKworICAgICAgICBsb2dsbigib2Zmc2V0IGZvciAiK2RhdGUrIj0gIisob2Zmc2V0LzEwMDAvNjAvNjAuMCkgKyAiaHIiKTsKKworICAgICAgICBpbnQgdXRjID0gKChjYWwuZ2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZKSAqIDYwICsKKyAgICAgICAgICAgICAgICAgICAgY2FsLmdldChDYWxlbmRhci5NSU5VVEUpKSAqIDYwICsKKyAgICAgICAgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLlNFQ09ORCkpICogMTAwMCArCisgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLk1JTExJU0VDT05EKSAtIG9mZnNldDsKKworICAgICAgICBpbnQgZXhwZWN0ZWQgPSAoKGhyICogNjAgKyBtbikgKiA2MCArIHNjKSAqIDEwMDA7CisKKyAgICAgICAgaWYgKHV0YyAhPSBleHBlY3RlZCkKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBEaXNjcmVwYW5jeSBvZiAiICsKKyAgICAgICAgICAgICAgICAgICh1dGMgLSBleHBlY3RlZCkgKyAiIG1pbGxpcyA9ICIgKworICAgICAgICAgICAgICAgICAgKCh1dGMtZXhwZWN0ZWQpLzEwMDAvNjAvNjAuMCkgKyAiIGhyIik7CisgICAgfQorCisgICAgLy8gVmVyaWZ5IHRoYXQgYWRkIGFuZCBzZXQgd29yayByZWdhcmRsZXNzIG9mIHRoZSBvcmRlciBpbiB3aGljaAorICAgIC8vIHRoZXkgYXJlIGNhbGxlZC4KKyAgICBwdWJsaWMgdm9pZCBUZXN0QWRkU2V0T3JkZXI2MjEoKSB7CisgICAgICAgIERhdGUgZCA9IG5ldyBEYXRlKDk3LCA0LCAxNCwgMTMsIDIzLCA0NSk7CisKKyAgICAgICAgQ2FsZW5kYXIgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UgKCk7CisgICAgICAgIGNhbC5zZXRUaW1lIChkKTsKKyAgICAgICAgY2FsLmFkZCAoQ2FsZW5kYXIuREFURSwgLTUpOworICAgICAgICBjYWwuc2V0IChDYWxlbmRhci5IT1VSX09GX0RBWSwgMCk7CisgICAgICAgIGNhbC5zZXQgKENhbGVuZGFyLk1JTlVURSwgMCk7CisgICAgICAgIGNhbC5zZXQgKENhbGVuZGFyLlNFQ09ORCwgMCk7CisgICAgICAgIC8vIG1hIGZlYiAwMyAwMDowMDowMCBHTVQrMDA6MDAgMTk5NworICAgICAgICBTdHJpbmcgcyA9IGNhbC5nZXRUaW1lICgpLnRvU3RyaW5nICgpOworCisgICAgICAgIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlICgpOworICAgICAgICBjYWwuc2V0VGltZSAoZCk7CisgICAgICAgIGNhbC5zZXQgKENhbGVuZGFyLkhPVVJfT0ZfREFZLCAwKTsKKyAgICAgICAgY2FsLnNldCAoQ2FsZW5kYXIuTUlOVVRFLCAwKTsKKyAgICAgICAgY2FsLnNldCAoQ2FsZW5kYXIuU0VDT05ELCAwKTsKKyAgICAgICAgY2FsLmFkZCAoQ2FsZW5kYXIuREFURSwgLTUpOworICAgICAgICAvLyBtYSBmZWIgMDMgMTM6MTE6MDYgR01UKzAwOjAwIDE5OTcKKyAgICAgICAgU3RyaW5nIHMyID0gY2FsLmdldFRpbWUgKCkudG9TdHJpbmcgKCk7CisKKyAgICAgICAgaWYgKHMuZXF1YWxzKHMyKSkKKyAgICAgICAgICAgIGxvZ2xuKCJQYXNzOiAiICsgcyArICIgPT0gIiArIHMyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBzICsgIiAhPSAiICsgczIpOworICAgIH0KKworICAgIC8vIFZlcmlmeSB0aGF0IGFkZCB3b3Jrcy4KKyAgICBwdWJsaWMgdm9pZCBUZXN0QWRkNTIwKCkgeworICAgICAgICBpbnQgeSA9IDE5OTcsIG0gPSBDYWxlbmRhci5GRUJSVUFSWSwgZCA9IDE7CisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIHRlbXAgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoIHksIG0sIGQgKTsKKyAgICAgICAgY2hlY2s1MjAodGVtcCwgeSwgbSwgZCk7CisKKyAgICAgICAgdGVtcC5hZGQoIHRlbXAuWUVBUiwgMSApOworICAgICAgICB5Kys7CisgICAgICAgIGNoZWNrNTIwKHRlbXAsIHksIG0sIGQpOworCisgICAgICAgIHRlbXAuYWRkKCB0ZW1wLk1PTlRILCAxICk7CisgICAgICAgIG0rKzsKKyAgICAgICAgY2hlY2s1MjAodGVtcCwgeSwgbSwgZCk7CisKKyAgICAgICAgdGVtcC5hZGQoIHRlbXAuREFURSwgMSApOworICAgICAgICBkKys7CisgICAgICAgIGNoZWNrNTIwKHRlbXAsIHksIG0sIGQpOworCisgICAgICAgIHRlbXAuYWRkKCB0ZW1wLkRBVEUsIDIgKTsKKyAgICAgICAgZCArPSAyOworICAgICAgICBjaGVjazUyMCh0ZW1wLCB5LCBtLCBkKTsKKworICAgICAgICB0ZW1wLmFkZCggdGVtcC5EQVRFLCAyOCApOworICAgICAgICBkID0gMTsgKyttOworICAgICAgICBjaGVjazUyMCh0ZW1wLCB5LCBtLCBkKTsKKyAgICB9CisgICAgdm9pZCBjaGVjazUyMChDYWxlbmRhciBjLCBpbnQgeSwgaW50IG0sIGludCBkKSB7CisgICAgICAgIGlmIChjLmdldChDYWxlbmRhci5ZRUFSKSAhPSB5IHx8CisgICAgICAgICAgICBjLmdldChDYWxlbmRhci5NT05USCkgIT0gbSB8fAorICAgICAgICAgICAgYy5nZXQoQ2FsZW5kYXIuREFURSkgIT0gZCkgeworICAgICAgICAgICAgZXJybG4oIkZBSUxVUkU6IEV4cGVjdGVkIFlFQVIvTU9OVEgvREFURSBvZiAiICsKKyAgICAgICAgICAgICAgICAgIHkgKyAiLyIgKyAobSsxKSArICIvIiArIGQgKworICAgICAgICAgICAgICAgICAgIjsgZ290ICIgKworICAgICAgICAgICAgICAgICAgYy5nZXQoQ2FsZW5kYXIuWUVBUikgKyAiLyIgKworICAgICAgICAgICAgICAgICAgKGMuZ2V0KENhbGVuZGFyLk1PTlRIKSsxKSArICIvIiArCisgICAgICAgICAgICAgICAgICBjLmdldChDYWxlbmRhci5EQVRFKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBsb2dsbigiQ29uZmlybWVkOiAiICsKKyAgICAgICAgICAgICAgICAgICB5ICsgIi8iICsgKG0rMSkgKyAiLyIgKyBkKTsKKyAgICB9CisKKyAgICAvLyBWZXJpZnkgdGhhdCBzZXR0aW5nIGZpZWxkcyB3b3Jrcy4gIFRoaXMgdGVzdCBmYWlscyB3aGVuIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24uCisgICAgcHVibGljIHZvaWQgVGVzdEZpZWxkU2V0NDc4MSgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGcgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKTsKKyAgICAgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGcyID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50IFVUQyB2YWx1ZSBpcyBzZXQsIHZhcmlvdXMgZmllbGRzIGFyZSBub3QuCisgICAgICAgICAgICAvLyBOb3cgc2V0IHRvIG5vb24uCisgICAgICAgICAgICBnMi5zZXQoQ2FsZW5kYXIuSE9VUiwgMTIpOworICAgICAgICAgICAgZzIuc2V0KENhbGVuZGFyLk1JTlVURSwgMCk7CisgICAgICAgICAgICBnMi5zZXQoQ2FsZW5kYXIuU0VDT05ELCAwKTsKKyAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIG9iamVjdCB0aGlua3MgVVRDIGlzIE5PVCBzZXQsIGJ1dCBmaWVsZHMgYXJlIHNldC4KKyAgICAgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgbGluZSB3aWxsIHJlc3VsdCBpbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gYmVjYXVzZQorICAgICAgICAgICAgLy8gaXQgdGhpbmtzIHRoZSBZRUFSIGlzIHNldCBhbmQgaXQgaXMgTk9ULgorICAgICAgICAgICAgaWYgKGcyLmVxdWFscyhnKSkKKyAgICAgICAgICAgICAgICBsb2dsbigiU2FtZSIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxvZ2xuKCJEaWZmZXJlbnQiKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJVbmV4cGVjdGVkIGV4Y2VwdGlvbiBzZWVuOiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUZXN0IHNlcmlhbGl6YXRpb24gb2YgYSBDYWxlbmRhciBvYmplY3QKKyAgICBwdWJsaWMgdm9pZCBUZXN0U2VyaWFsaXplMzM3KCkgeworICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworCisgICAgICAgIGJvb2xlYW4gb2sgPSBmYWxzZTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgRmlsZU91dHB1dFN0cmVhbSBmID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oRklMRU5BTUUpOworICAgICAgICAgICAgT2JqZWN0T3V0cHV0IHMgPSBuZXcgT2JqZWN0T3V0cHV0U3RyZWFtKGYpOworICAgICAgICAgICAgcy53cml0ZU9iamVjdChQUkVGSVgpOworICAgICAgICAgICAgcy53cml0ZU9iamVjdChjYWwpOworICAgICAgICAgICAgcy53cml0ZU9iamVjdChQT1NURklYKTsKKyAgICAgICAgICAgIGYuY2xvc2UoKTsKKworICAgICAgICAgICAgRmlsZUlucHV0U3RyZWFtIGluID0gbmV3IEZpbGVJbnB1dFN0cmVhbShGSUxFTkFNRSk7CisgICAgICAgICAgICBPYmplY3RJbnB1dFN0cmVhbSB0ID0gbmV3IE9iamVjdElucHV0U3RyZWFtKGluKTsKKyAgICAgICAgICAgIFN0cmluZyBwcmUgPSAoU3RyaW5nKXQucmVhZE9iamVjdCgpOworICAgICAgICAgICAgQ2FsZW5kYXIgYyA9IChDYWxlbmRhcil0LnJlYWRPYmplY3QoKTsKKyAgICAgICAgICAgIFN0cmluZyBwb3N0ID0gKFN0cmluZyl0LnJlYWRPYmplY3QoKTsKKyAgICAgICAgICAgIGluLmNsb3NlKCk7CisKKyAgICAgICAgICAgIG9rID0gcHJlLmVxdWFscyhQUkVGSVgpICYmCisgICAgICAgICAgICAgICAgcG9zdC5lcXVhbHMoUE9TVEZJWCkgJiYKKyAgICAgICAgICAgICAgICBjYWwuZXF1YWxzKGMpOworCisgICAgICAgICAgICBGaWxlIGZsID0gbmV3IEZpbGUoRklMRU5BTUUpOworICAgICAgICAgICAgZmwuZGVsZXRlKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBFeGNlcHRpb24gcmVjZWl2ZWQ6Iik7CisgICAgICAgICAgICAvLyBlLnByaW50U3RhY2tUcmFjZShsb2cpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBFeGNlcHRpb24gcmVjZWl2ZWQ6Iik7CisgICAgICAgICAgICAvLyBlLnByaW50U3RhY2tUcmFjZShsb2cpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFvaykgZXJybG4oIlNlcmlhbGl6YXRpb24gb2YgQ2FsZW5kYXIgb2JqZWN0IGZhaWxlZC4iKTsKKyAgICB9CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBQUkVGSVggPSAiYWJjIjsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIFBPU1RGSVggPSAiZGVmIjsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIEZJTEVOQU1FID0gInRtcDMzNy5iaW4iOworCisgICAgLy8gVHJ5IHRvIHplcm8gb3V0IHRoZSBzZWNvbmRzIGZpZWxkCisgICAgcHVibGljIHZvaWQgVGVzdFNlY29uZHNaZXJvMTIxKCkgeworICAgICAgICBDYWxlbmRhciAgICAgICAgY2FsID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisgICAgICAgIC8vIEluaXRpYWxpemUgd2l0aCBjdXJyZW50IGRhdGUvdGltZQorICAgICAgICBjYWwuc2V0VGltZShuZXcgRGF0ZSgpKTsKKyAgICAgICAgLy8gUm91bmQgZG93biB0byBtaW51dGUKKyAgICAgICAgY2FsLnNldChDYWxlbmRhci5TRUNPTkQsIDApOworICAgICAgICBEYXRlICAgIGQgPSBjYWwuZ2V0VGltZSgpOworICAgICAgICBTdHJpbmcgcyA9IGQudG9TdHJpbmcoKTsKKyAgICAgICAgaWYgKHMuaW5kZXhPZigiOjAwICIpIDwgMCkgZXJybG4oIkV4cGVjdGVkIHRvIHNlZSA6MDAgaW4gIiArIHMpOworICAgIH0KKworICAgIC8vIFRyeSB2YXJpb3VzIHNlcXVlbmNlcyBvZiBhZGQsIHNldCwgYW5kIGdldCBtZXRob2QgY2FsbHMuCisgICAgcHVibGljIHZvaWQgVGVzdEFkZFNldEdldDA2MTAoKSB7CisgICAgICAgIC8vCisgICAgICAgIC8vIEVycm9yIGNhc2UgMToKKyAgICAgICAgLy8gLSBVcG9uIGluaXRpYWxpemF0aW9uIGNhbGVuZGFyIGZpZWxkcywgbWlsbGlzID0gU3lzdGVtLmN1cnJlbnRUaW1lCisgICAgICAgIC8vIC0gQWZ0ZXIgc2V0IGlzIGNhbGxlZCBmaWVsZHMgYXJlIGluaXRpYWxpemVkLCB0aW1lIGlzIG5vdAorICAgICAgICAvLyAtIEFkZGl0aW9uIHVzZXMgbWlsbGlzIHdoaWNoIGFyZSBzdGlsbCAqbm93KgorICAgICAgICAvLworICAgICAgICB7CisgICAgICAgICAgICBDYWxlbmRhciBjYWxlbmRhciA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhciggKSA7CisgICAgICAgICAgICBjYWxlbmRhci5zZXQoIDE5OTMsIENhbGVuZGFyLkpBTlVBUlksIDQgKSA7CisgICAgICAgICAgICBsb2dsbiggIjFBKSAiICsgdmFsdWUoIGNhbGVuZGFyICkgKSA7CisgICAgICAgICAgICBjYWxlbmRhci5hZGQoIENhbGVuZGFyLkRBVEUsIDEgKSA7CisgICAgICAgICAgICBTdHJpbmcgdiA9IHZhbHVlKGNhbGVuZGFyKTsKKyAgICAgICAgICAgIGxvZ2xuKCAiMUIpICIgKyB2ICk7CisgICAgICAgICAgICBsb2dsbiggIi0tKSAxOTkzLzAvNSIgKSA7CisgICAgICAgICAgICBpZiAoIXYuZXF1YWxzKEVYUEVDVEVEXzA2MTApKSBlcnJsbigiRXhwZWN0ZWQgIiArIEVYUEVDVEVEXzA2MTAgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjsgc2F3ICIgKyB2KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vCisgICAgICAgIC8vIEVycm9yIGNhc2UgMjoKKyAgICAgICAgLy8gLSBVcG9uIGluaXRpYWxpemF0aW9uIGNhbGVuZGFyIGZpZWxkcyBzZXQsIG1pbGxpcyA9IDAKKyAgICAgICAgLy8gLSBBZGRpdGlvbiB1c2VzIG1pbGxpcyB3aGljaCBhcmUgc3RpbGwgMTk3MCwgMCwgMQorICAgICAgICAvLworCisgICAgICAgIHsKKyAgICAgICAgICAgIENhbGVuZGFyIGNhbGVuZGFyID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCAxOTkzLCBDYWxlbmRhci5KQU5VQVJZLCA0ICkgOworICAgICAgICAgICAgbG9nbG4oICIyQSkgIiArIHZhbHVlKCBjYWxlbmRhciApICkgOworICAgICAgICAgICAgY2FsZW5kYXIuYWRkKCBDYWxlbmRhci5EQVRFLCAxICkgOworICAgICAgICAgICAgU3RyaW5nIHYgPSB2YWx1ZShjYWxlbmRhcik7CisgICAgICAgICAgICBsb2dsbiggIjJCKSAiICsgdiApOworICAgICAgICAgICAgbG9nbG4oICItLSkgMTk5My8wLzUiICkgOworICAgICAgICAgICAgaWYgKCF2LmVxdWFscyhFWFBFQ1RFRF8wNjEwKSkgZXJybG4oIkV4cGVjdGVkICIgKyBFWFBFQ1RFRF8wNjEwICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI7IHNhdyAiICsgdik7CisgICAgICAgIH0KKworICAgICAgICAvLworICAgICAgICAvLyBFcnJvciBjYXNlIDM6CisgICAgICAgIC8vIC0gVXBvbiBpbml0aWFsaXphdGlvbiBjYWxlbmRhciBmaWVsZHMsIG1pbGxpcyA9IDAKKyAgICAgICAgLy8gLSBnZXRUaW1lKCApIGlzIGNhbGxlZCB3aGljaCBmb3JjZXMgdGhlIG1pbGxpcyB0byBiZSBzZXQKKyAgICAgICAgLy8gLSBBZGRpdGlvbiB1c2VzIG1pbGxpcyB3aGljaCBhcmUgY29ycmVjdAorICAgICAgICAvLworCisgICAgICAgIHsKKyAgICAgICAgICAgIENhbGVuZGFyIGNhbGVuZGFyID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCAxOTkzLCBDYWxlbmRhci5KQU5VQVJZLCA0ICkgOworICAgICAgICAgICAgbG9nbG4oICIzQSkgIiArIHZhbHVlKCBjYWxlbmRhciApICkgOworICAgICAgICAgICAgY2FsZW5kYXIuZ2V0VGltZSggKSA7CisgICAgICAgICAgICBjYWxlbmRhci5hZGQoIENhbGVuZGFyLkRBVEUsIDEgKSA7CisgICAgICAgICAgICBTdHJpbmcgdiA9IHZhbHVlKGNhbGVuZGFyKTsKKyAgICAgICAgICAgIGxvZ2xuKCAiM0IpICIgKyB2ICkgOworICAgICAgICAgICAgbG9nbG4oICItLSkgMTk5My8wLzUiICkgOworICAgICAgICAgICAgaWYgKCF2LmVxdWFscyhFWFBFQ1RFRF8wNjEwKSkgZXJybG4oIkV4cGVjdGVkICIgKyBFWFBFQ1RFRF8wNjEwICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI7IHNhdyAiICsgdik7CisgICAgICAgIH0KKyAgICB9CisgICAgc3RhdGljIFN0cmluZyB2YWx1ZSggQ2FsZW5kYXIgY2FsZW5kYXIgKSB7CisgICAgICAgIHJldHVybiggY2FsZW5kYXIuZ2V0KCBDYWxlbmRhci5ZRUFSICkgICsgIi8iICsKKyAgICAgICAgICAgICAgICBjYWxlbmRhci5nZXQoIENhbGVuZGFyLk1PTlRIICkgKyAiLyIgKworICAgICAgICAgICAgICAgIGNhbGVuZGFyLmdldCggQ2FsZW5kYXIuREFURSApICkgOworICAgIH0KKyAgICBzdGF0aWMgU3RyaW5nIEVYUEVDVEVEXzA2MTAgPSAiMTk5My8wLzUiOworCisgICAgLy8gVGVzdCB0aGF0IGNlcnRhaW4gZmllbGRzIG9uIGEgY2VydGFpbiBkYXRlIGFyZSBhcyBleHBlY3RlZC4KKyAgICBwdWJsaWMgdm9pZCBUZXN0RmllbGRzMDYwKCkgeworICAgICAgICBpbnQgeWVhciA9IDE5OTc7CisgICAgICAgIGludCBtb250aCA9IGphdmEudXRpbC5DYWxlbmRhci5PQ1RPQkVSOyAgLy9vY3RvYmVyCisgICAgICAgIGludCBkRGF0ZSA9IDIyOyAgIC8vREFZT0ZXRUVLIHNob3VsZCByZXR1cm4gMyBmb3IgV2VkbmVzZGF5CisgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbGVuZGFyID0gbnVsbDsKKworICAgICAgICBjYWxlbmRhciA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhciggeWVhciwgbW9udGgsIGREYXRlKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPEVYUEVDVEVEX0ZJRUxEUy5sZW5ndGg7ICkgeworICAgICAgICAgICAgaW50IGZpZWxkID0gRVhQRUNURURfRklFTERTW2krK107CisgICAgICAgICAgICBpbnQgZXhwZWN0ZWQgPSBFWFBFQ1RFRF9GSUVMRFNbaSsrXTsKKyAgICAgICAgICAgIGlmIChjYWxlbmRhci5nZXQoZmllbGQpICE9IGV4cGVjdGVkKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkV4cGVjdGVkIGZpZWxkICIgKyBmaWVsZCArICIgdG8gaGF2ZSB2YWx1ZSAiICsgZXhwZWN0ZWQgKworICAgICAgICAgICAgICAgICAgICAgICI7IHJlY2VpdmVkICIgKyBjYWxlbmRhci5nZXQoZmllbGQpICsgIiBpbnN0ZWFkIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgc3RhdGljIGludCBFWFBFQ1RFRF9GSUVMRFNbXSA9IHsKKyAgICAgICAgQ2FsZW5kYXIuWUVBUiwgMTk5NywKKyAgICAgICAgQ2FsZW5kYXIuTU9OVEgsIENhbGVuZGFyLk9DVE9CRVIsCisgICAgICAgIENhbGVuZGFyLkRBWV9PRl9NT05USCwgMjIsCisgICAgICAgIENhbGVuZGFyLkRBWV9PRl9XRUVLLCBDYWxlbmRhci5XRURORVNEQVksCisgICAgICAgIENhbGVuZGFyLkRBWV9PRl9XRUVLX0lOX01PTlRILCA0LAorICAgICAgICBDYWxlbmRhci5EQVlfT0ZfWUVBUiwgMjk1CisgICAgfTsKKworICAgIC8vIFZlcmlmeSB0aGF0IHRoZSBmaWVsZHMgYXJlIGFzIGV4cGVjdGVkIChtb3N0bHkgemVybykgYXQgdGhlIGVwb2NoIHN0YXJ0LgorICAgIC8vIE5vdGUgdGhhdCB3ZSBhZGp1c3QgZm9yIHRoZSBkZWZhdWx0IHRpbWV6b25lIHRvIGdldCBtb3N0IHRoaW5ncyB0byB6ZXJvLgorICAgIHB1YmxpYyB2b2lkIFRlc3RFcG9jaFN0YXJ0RmllbGRzKCkgeworICAgICAgICBUaW1lWm9uZSB6ID0gVGltZVpvbmUuZ2V0RGVmYXVsdCgpOworICAgICAgICBDYWxlbmRhciBjID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgRGF0ZSBkID0gbmV3IERhdGUoLXouZ2V0UmF3T2Zmc2V0KCkpOworICAgICAgICBpZiAoei5pbkRheWxpZ2h0VGltZShkKSkgeworICAgICAgICAgICAgbG9nbG4oIldhcm5pbmc6IFNraXBwaW5nIHRlc3QgYmVjYXVzZSAiICsgZCArCisgICAgICAgICAgICAgICAgICAiIGlzIGluIERTVC4iKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGMuc2V0VGltZShkKTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxDYWxlbmRhci5aT05FX09GRlNFVDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGMuZ2V0KGkpICE9IEVQT0NIX0ZJRUxEU1tpXSkKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkV4cGVjdGVkIGZpZWxkICIgKyBpICsgIiB0byBoYXZlIHZhbHVlICIgKyBFUE9DSF9GSUVMRFNbaV0gKworICAgICAgICAgICAgICAgICAgICAgICAgICAiOyBzYXcgIiArIGMuZ2V0KGkpICsgIiBpbnN0ZWFkIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYy5nZXQoQ2FsZW5kYXIuWk9ORV9PRkZTRVQpICE9IHouZ2V0UmF3T2Zmc2V0KCkpCisgICAgICAgICAgICAgICAgZXJybG4oIkV4cGVjdGVkIGZpZWxkIFpPTkVfT0ZGU0VUIHRvIGhhdmUgdmFsdWUgIiArIHouZ2V0UmF3T2Zmc2V0KCkgKworICAgICAgICAgICAgICAgICAgICAgICI7IHNhdyAiICsgYy5nZXQoQ2FsZW5kYXIuWk9ORV9PRkZTRVQpICsgIiBpbnN0ZWFkIik7CisgICAgICAgICAgICBpZiAoYy5nZXQoQ2FsZW5kYXIuRFNUX09GRlNFVCkgIT0gMCkKKyAgICAgICAgICAgICAgICBlcnJsbigiRXhwZWN0ZWQgZmllbGQgRFNUX09GRlNFVCB0byBoYXZlIHZhbHVlIDAiICsKKyAgICAgICAgICAgICAgICAgICAgICAiOyBzYXcgIiArIGMuZ2V0KENhbGVuZGFyLkRTVF9PRkZTRVQpICsgIiBpbnN0ZWFkIik7CisgICAgICAgIH0KKyAgICB9CisgICAgLy8gVGhlc2UgYXJlIHRoZSBmaWVsZHMgYXQgdGhlIGVwb2NoIHN0YXJ0CisgICAgc3RhdGljIGludCBFUE9DSF9GSUVMRFNbXSA9IHsgMSwgMTk3MCwgMCwgMSwgMSwgMSwgMSwgNSwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgLTI4ODAwMDAwLCAwIH07CisKKyAgICAvLyBWZXJpZnkgdGhhdCBhcyB5b3UgYWRkIGRheXMgdG8gdGhlIGNhbGVuZGFyIChlLmcuLCAyNCBkYXkgcGVyaW9kcyksCisgICAgLy8gdGhlIGRheSBvZiB0aGUgd2VlayBzaGlmdHMgaW4gdGhlIGV4cGVjdGVkIHBhdHRlcm4uCisgICAgcHVibGljIHZvaWQgVGVzdERPV1Byb2dyZXNzaW9uKCkgeworICAgICAgICBDYWxlbmRhciBjYWwgPQorICAgICAgICAgICAgbmV3IEdyZWdvcmlhbkNhbGVuZGFyKDE5NzIsIENhbGVuZGFyLk9DVE9CRVIsIDI2KTsKKyAgICAgICAgbWFyY2hCeURlbHRhKGNhbCwgMjQpOyAvLyBMYXN0IHBhcmFtZXRlciBtdXN0IGJlICE9IDAgbW9kdWxvIDcKKyAgICB9CisKKyAgICAvLyBTdXBwbHkgYSBkZWx0YSB3aGljaCBpcyBub3QgYSBtdWx0aXBsZSBvZiA3LgorICAgIHZvaWQgbWFyY2hCeURlbHRhKENhbGVuZGFyIGNhbCwgaW50IGRlbHRhKSB7CisgICAgICAgIENhbGVuZGFyIGN1ciA9IChDYWxlbmRhciljYWwuY2xvbmUoKTsKKyAgICAgICAgaW50IGluaXRpYWxET1cgPSBjdXIuZ2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLKTsKKyAgICAgICAgaW50IERPVywgbmV3RE9XID0gaW5pdGlhbERPVzsKKyAgICAgICAgZG8geworICAgICAgICAgICAgRE9XID0gbmV3RE9XOworICAgICAgICAgICAgbG9nbG4oIkRPVyA9ICIgKyBET1cgKyAiICAiICsgY3VyLmdldFRpbWUoKSk7CisKKyAgICAgICAgICAgIGN1ci5hZGQoQ2FsZW5kYXIuREFZX09GX1dFRUssIGRlbHRhKTsKKyAgICAgICAgICAgIG5ld0RPVyA9IGN1ci5nZXQoQ2FsZW5kYXIuREFZX09GX1dFRUspOworICAgICAgICAgICAgaW50IGV4cGVjdGVkRE9XID0gMSArIChET1cgKyBkZWx0YSAtIDEpICUgNzsKKyAgICAgICAgICAgIGlmIChuZXdET1cgIT0gZXhwZWN0ZWRET1cpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRGF5IG9mIHdlZWsgc2hvdWxkIGJlICIgKyBleHBlY3RlZERPVyArCisgICAgICAgICAgICAgICAgICAgICAgIiBpbnN0ZWFkIG9mICIgKyBuZXdET1cgKyAiIG9uICIgKyBjdXIuZ2V0VGltZSgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKG5ld0RPVyAhPSBpbml0aWFsRE9XKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0QWN0dWFsTWluTWF4KCkgeworICAgICAgICBDYWxlbmRhciBjYWwgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoMTk2NywgQ2FsZW5kYXIuTUFSQ0gsIDEwKTsKKyAgICAgICAgY2FsLnNldEZpcnN0RGF5T2ZXZWVrKENhbGVuZGFyLlNVTkRBWSk7CisgICAgICAgIGNhbC5zZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKDMpOworCisgICAgICAgIGlmIChjYWwuZ2V0QWN0dWFsTWluaW11bShDYWxlbmRhci5EQVlfT0ZfTU9OVEgpICE9IDEpCisgICAgICAgICAgICBlcnJsbigiQWN0dWFsIG1pbmltdW0gZGF0ZSBmb3IgMy8xMC8xOTY3IHNob3VsZCBoYXZlIGJlZW4gMTsgZ290ICIgKworICAgICAgICAgICAgICAgICAgY2FsLmdldEFjdHVhbE1pbmltdW0oQ2FsZW5kYXIuREFZX09GX01PTlRIKSk7CisgICAgICAgIGlmIChjYWwuZ2V0QWN0dWFsTWF4aW11bShDYWxlbmRhci5EQVlfT0ZfTU9OVEgpICE9IDMxKQorICAgICAgICAgICAgZXJybG4oIkFjdHVhbCBtYXhpbXVtIGRhdGUgZm9yIDMvMTAvMTk2NyBzaG91bGQgaGF2ZSBiZWVuIDMxOyBnb3QgIiArCisgICAgICAgICAgICAgICAgICBjYWwuZ2V0QWN0dWFsTWF4aW11bShDYWxlbmRhci5EQVlfT0ZfTU9OVEgpKTsKKworICAgICAgICBjYWwuc2V0KENhbGVuZGFyLk1PTlRILCBDYWxlbmRhci5GRUJSVUFSWSk7CisgICAgICAgIGlmIChjYWwuZ2V0QWN0dWFsTWF4aW11bShDYWxlbmRhci5EQVlfT0ZfTU9OVEgpICE9IDI4KQorICAgICAgICAgICAgZXJybG4oIkFjdHVhbCBtYXhpbXVtIGRhdGUgZm9yIDIvMTAvMTk2NyBzaG91bGQgaGF2ZSBiZWVuIDI4OyBnb3QgIiArCisgICAgICAgICAgICAgICAgICBjYWwuZ2V0QWN0dWFsTWF4aW11bShDYWxlbmRhci5EQVlfT0ZfTU9OVEgpKTsKKyAgICAgICAgaWYgKGNhbC5nZXRBY3R1YWxNYXhpbXVtKENhbGVuZGFyLkRBWV9PRl9ZRUFSKSAhPSAzNjUpCisgICAgICAgICAgICBlcnJsbigiTnVtYmVyIG9mIGRheXMgaW4gMTk2NyBzaG91bGQgaGF2ZSBiZWVuIDM2NTsgZ290ICIgKworICAgICAgICAgICAgICAgICAgY2FsLmdldEFjdHVhbE1heGltdW0oQ2FsZW5kYXIuREFZX09GX1lFQVIpKTsKKworICAgICAgICBjYWwuc2V0KENhbGVuZGFyLllFQVIsIDE5NjgpOworICAgICAgICBpZiAoY2FsLmdldEFjdHVhbE1heGltdW0oQ2FsZW5kYXIuREFZX09GX01PTlRIKSAhPSAyOSkKKyAgICAgICAgICAgIGVycmxuKCJBY3R1YWwgbWF4aW11bSBkYXRlIGZvciAyLzEwLzE5Njggc2hvdWxkIGhhdmUgYmVlbiAyOTsgZ290ICIgKworICAgICAgICAgICAgICAgICAgY2FsLmdldEFjdHVhbE1heGltdW0oQ2FsZW5kYXIuREFZX09GX01PTlRIKSk7CisgICAgICAgIGlmIChjYWwuZ2V0QWN0dWFsTWF4aW11bShDYWxlbmRhci5EQVlfT0ZfWUVBUikgIT0gMzY2KQorICAgICAgICAgICAgZXJybG4oIk51bWJlciBvZiBkYXlzIGluIDE5Njggc2hvdWxkIGhhdmUgYmVlbiAzNjY7IGdvdCAiICsKKyAgICAgICAgICAgICAgICAgIGNhbC5nZXRBY3R1YWxNYXhpbXVtKENhbGVuZGFyLkRBWV9PRl9ZRUFSKSk7CisgICAgICAgIC8vIFVzaW5nIHdlZWsgc2V0dGluZ3Mgb2YgU1VOREFZLzMgKHNlZSBhYm92ZSkKKyAgICAgICAgaWYgKGNhbC5nZXRBY3R1YWxNYXhpbXVtKENhbGVuZGFyLldFRUtfT0ZfWUVBUikgIT0gNTIpCisgICAgICAgICAgICBlcnJsbigiTnVtYmVyIG9mIHdlZWtzIGluIDE5Njggc2hvdWxkIGhhdmUgYmVlbiA1MjsgZ290ICIgKworICAgICAgICAgICAgICAgICAgY2FsLmdldEFjdHVhbE1heGltdW0oQ2FsZW5kYXIuV0VFS19PRl9ZRUFSKSk7CisKKyAgICAgICAgY2FsLnNldChDYWxlbmRhci5ZRUFSLCAxOTc2KTsKKyAgICAgICAgY2FsLnNldChDYWxlbmRhci5EQVlfT0ZfV0VFSywgY2FsLmdldEZpcnN0RGF5T2ZXZWVrKCkpOyAvLyBBZGRlZCAtIExpdSAxMS82LzAwCisgICAgICAgIC8vIFVzaW5nIHdlZWsgc2V0dGluZ3Mgb2YgU1VOREFZLzMgKHNlZSBhYm92ZSkKKyAgICAgICAgaWYgKGNhbC5nZXRBY3R1YWxNYXhpbXVtKENhbGVuZGFyLldFRUtfT0ZfWUVBUikgIT0gNTMpCisgICAgICAgICAgICBlcnJsbigiTnVtYmVyIG9mIHdlZWtzIGluIDE5NzYgc2hvdWxkIGhhdmUgYmVlbiA1MzsgZ290ICIgKworICAgICAgICAgICAgICAgICAgY2FsLmdldEFjdHVhbE1heGltdW0oQ2FsZW5kYXIuV0VFS19PRl9ZRUFSKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdFJvbGwoKSB7CisgICAgICAgIENhbGVuZGFyIGNhbCA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcigxOTk3LCBDYWxlbmRhci5KQU5VQVJZLCAzMSk7CisKKyAgICAgICAgaW50W10gZGF5VmFsdWVzID0geyAzMSwgMjgsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMSB9OworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGRheVZhbHVlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgQ2FsZW5kYXIgY2FsMiA9IChDYWxlbmRhciljYWwuY2xvbmUoKTsKKyAgICAgICAgICAgIGNhbDIucm9sbChDYWxlbmRhci5NT05USCwgaSk7CisgICAgICAgICAgICBpZiAoY2FsMi5nZXQoQ2FsZW5kYXIuREFZX09GX01PTlRIKSAhPSBkYXlWYWx1ZXNbaV0pCisgICAgICAgICAgICAgICAgZXJybG4oIlJvbGxpbmcgdGhlIG1vbnRoIGluIDEvMzEvMTk5NyB1cCBieSAiICsgaSArICIgc2hvdWxkIGhhdmUgeWllbGRlZCAiCisgICAgICAgICAgICAgICAgICAgICAgKyAoKGkgKyAxKSAlIDEyKSArICIvIiArIGRheVZhbHVlc1tpXSArICIvMTk5NywgYnV0IGFjdHVhbGx5IHlpZWxkZWQgIgorICAgICAgICAgICAgICAgICAgICAgICsgKChpICsgMSkgJSAxMikgKyAiLyIgKyBjYWwyLmdldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgpICsgIi8xOTk3LiIpOworICAgICAgICB9CisKKyAgICAgICAgY2FsLnNldCgxOTk2LCBDYWxlbmRhci5GRUJSVUFSWSwgMjkpOworCisgICAgICAgIC8vaW50W10gbW9udGhWYWx1ZXMgPSB7IDEsIDIsIDIsIDIsIDEsIDIsIDIsIDIsIDEsIDIgfTsKKyAgICAgICAgLy9pbnRbXSBkYXlWYWx1ZXMyID0geyAyOSwgMSwgMSwgMSwgMjksIDEsIDEsIDEsIDI5LCAxIH07CisKKyAgICAgICAgLy8gSSd2ZSByZXZpc2VkIHRoZSBleHBlY3RlZCB2YWx1ZXMgdG8gbWFrZSBtb3JlIHNlbnNlIC0tIHJvbGxpbmcKKyAgICAgICAgLy8gdGhlIHllYXIgc2hvdWxkIHBpbiB0aGUgREFZX09GX01PTlRILiAtIExpdSAxMS82LzAwCisgICAgICAgIGludFtdIG1vbnRoVmFsdWVzID0geyAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxIH07CisgICAgICAgIGludFtdIGRheVZhbHVlczIgPSB7IDI5LCAyOCwgMjgsIDI4LCAyOSwgMjgsIDI4LCAyOCwgMjksIDI4IH07CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkYXlWYWx1ZXMyLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBDYWxlbmRhciBjYWwyID0gKENhbGVuZGFyKWNhbC5jbG9uZSgpOworICAgICAgICAgICAgY2FsMi5yb2xsKENhbGVuZGFyLllFQVIsIGkpOworICAgICAgICAgICAgaWYgKGNhbDIuZ2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCkgIT0gZGF5VmFsdWVzMltpXSB8fCBjYWwyLmdldChDYWxlbmRhci5NT05USCkKKyAgICAgICAgICAgICAgICAhPSBtb250aFZhbHVlc1tpXSkKKyAgICAgICAgICAgICAgICBlcnJsbigiUm9sbCAyLzI5LzE5OTYgYnkgIiArIGkgKyAiIHllYXI6IGV4cGVjdGVkICIKKyAgICAgICAgICAgICAgICAgICAgICArIChtb250aFZhbHVlc1tpXSArIDEpICsgIi8iICsgZGF5VmFsdWVzMltpXSArICIvIgorICAgICAgICAgICAgICAgICAgICAgICsgKDE5OTYgKyBpKSArICIsIGdvdCAiCisgICAgICAgICAgICAgICAgICAgICAgKyAoY2FsMi5nZXQoQ2FsZW5kYXIuTU9OVEgpICsgMSkgKyAiLyIgKworICAgICAgICAgICAgICAgICAgICAgIGNhbDIuZ2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCkgKyAiLyIgKyBjYWwyLmdldChDYWxlbmRhci5ZRUFSKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBUZXN0IHJvbGxpbmcgaG91ciBvZiBkYXkKKyAgICAgICAgY2FsLnNldChDYWxlbmRhci5IT1VSX09GX0RBWSwgMCk7CisgICAgICAgIGNhbC5yb2xsKENhbGVuZGFyLkhPVVJfT0ZfREFZLCAtMik7CisgICAgICAgIGludCBmID0gY2FsLmdldChDYWxlbmRhci5IT1VSX09GX0RBWSk7CisgICAgICAgIGlmIChmICE9IDIyKSBlcnJsbigiUm9sbGluZyBIT1VSX09GX0RBWT0wIGRlbHRhPS0yIGdhdmUgIiArIGYgKyAiIFdhbnRlZCAyMiIpOworICAgICAgICBjYWwucm9sbChDYWxlbmRhci5IT1VSX09GX0RBWSwgNSk7CisgICAgICAgIGYgPSBjYWwuZ2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZKTsKKyAgICAgICAgaWYgKGYgIT0gMykgZXJybG4oIlJvbGxpbmcgSE9VUl9PRl9EQVk9MjIgZGVsdGE9NSBnYXZlICIgKyBmICsgIiBXYW50ZWQgMyIpOworICAgICAgICBjYWwucm9sbChDYWxlbmRhci5IT1VSX09GX0RBWSwgMjEpOworICAgICAgICBmID0gY2FsLmdldChDYWxlbmRhci5IT1VSX09GX0RBWSk7CisgICAgICAgIGlmIChmICE9IDApIGVycmxuKCJSb2xsaW5nIEhPVVJfT0ZfREFZPTMgZGVsdGE9MjEgZ2F2ZSAiICsgZiArICIgV2FudGVkIDAiKTsKKworICAgICAgICAvLyBUZXN0IHJvbGxpbmcgaG91cgorICAgICAgICBjYWwuc2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZLCAwKTsKKyAgICAgICAgY2FsLnJvbGwoQ2FsZW5kYXIuSE9VUiwgLTIpOworICAgICAgICBmID0gY2FsLmdldChDYWxlbmRhci5IT1VSKTsKKyAgICAgICAgaWYgKGYgIT0gMTApIGVycmxuKCJSb2xsaW5nIEhPVVI9MCBkZWx0YT0tMiBnYXZlICIgKyBmICsgIiBXYW50ZWQgMTAiKTsKKyAgICAgICAgY2FsLnJvbGwoQ2FsZW5kYXIuSE9VUiwgNSk7CisgICAgICAgIGYgPSBjYWwuZ2V0KENhbGVuZGFyLkhPVVIpOworICAgICAgICBpZiAoZiAhPSAzKSBlcnJsbigiUm9sbGluZyBIT1VSPTEwIGRlbHRhPTUgZ2F2ZSAiICsgZiArICIgV2FudGVkIDMiKTsKKyAgICAgICAgY2FsLnJvbGwoQ2FsZW5kYXIuSE9VUiwgOSk7CisgICAgICAgIGYgPSBjYWwuZ2V0KENhbGVuZGFyLkhPVVIpOworICAgICAgICBpZiAoZiAhPSAwKSBlcnJsbigiUm9sbGluZyBIT1VSPTMgZGVsdGE9OSBnYXZlICIgKyBmICsgIiBXYW50ZWQgMCIpOworICAgIH0KK30KKworLy9lb2YKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3QvY2FsZW5kYXIvSGVicmV3VGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vdGVzdC9jYWxlbmRhci9IZWJyZXdUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTM3NDViOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3QvY2FsZW5kYXIvSGVicmV3VGVzdC5qYXZhCkBAIC0wLDAgKzEsMzE0IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXN0L2NhbGVuZGFyL0F0dGljL0hlYnJld1Rlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8xMS8xOCAwMDoxNzo1OCAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS50ZXN0LmNhbGVuZGFyOworCitpbXBvcnQgY29tLmlibS50ZXN0Lio7CitpbXBvcnQgY29tLmlibS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKworLyoqCisgKiBUZXN0cyBmb3IgdGhlIDxjb2RlPkhlYnJld0NhbGVuZGFyPC9jb2RlPiBjbGFzcy4KKyAqLworcHVibGljIGNsYXNzIEhlYnJld1Rlc3QgZXh0ZW5kcyBDYWxlbmRhclRlc3QgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdzW10pIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgSGVicmV3VGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICAvLyBDb25zdGFudHMgdG8gc2F2ZSB0eXBpbmcuCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVElTSFJJICA9IEhlYnJld0NhbGVuZGFyLlRJU0hSSTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBIRVNIVkFOID0gSGVicmV3Q2FsZW5kYXIuSEVTSFZBTjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLSVNMRVYgID0gSGVicmV3Q2FsZW5kYXIuS0lTTEVWOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRFVkVUICAgPSBIZWJyZXdDYWxlbmRhci5URVZFVDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTSEVWQVQgID0gSGVicmV3Q2FsZW5kYXIuU0hFVkFUOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFEQVJfMSAgPSBIZWJyZXdDYWxlbmRhci5BREFSXzE7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQURBUiAgICA9IEhlYnJld0NhbGVuZGFyLkFEQVI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTklTQU4gICA9IEhlYnJld0NhbGVuZGFyLk5JU0FOOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElZQVIgICAgPSBIZWJyZXdDYWxlbmRhci5JWUFSOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNJVkFOICAgPSBIZWJyZXdDYWxlbmRhci5TSVZBTjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUQU1VWiAgID0gSGVicmV3Q2FsZW5kYXIuVEFNVVo7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQVYgICAgICA9IEhlYnJld0NhbGVuZGFyLkFWOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVMVUwgICAgPSBIZWJyZXdDYWxlbmRhci5FTFVMOworCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgYmVoYXZpb3Igb2YgSGVicmV3Q2FsZW5kYXIucm9sbAorICAgICAqIFRoZSBvbmx5IHJlYWwgbmFzdGluZXNzIHdpdGggcm9sbCBpcyB0aGUgTU9OVEggZmllbGQsIHNpbmNlIGEgeWVhciBjYW4KKyAgICAgKiBoYXZlIGEgdmFyaWFibGUgbnVtYmVyIG9mIG1vbnRocy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0Um9sbCgpIHsKKyAgICAgICAgaW50W11bXSB0ZXN0cyA9IG5ldyBpbnRbXVtdIHsKKyAgICAgICAgICAgIC8vICAgICAgIGlucHV0ICAgICAgICAgICAgICAgIHJvbGwgYnkgICAgICAgICAgb3V0cHV0CisgICAgICAgICAgICAvLyAgeWVhciAgbW9udGggICAgIGRheSAgICAgZmllbGQgYW1vdW50ICAgIHllYXIgIG1vbnRoICAgICBkYXkKKyAgICAKKyAgICAgICAgICAgIHsgICA1NzU5LCBIRVNIVkFOLCAgIDIsICAgICBNT05USCwgICAxLCAgICAgNTc1OSwgS0lTTEVWLCAgICAyIH0sICAgLy8gbm9uLWxlYXAgeWVhcnMKKyAgICAgICAgICAgIHsgICA1NzU5LCBTSEVWQVQsICAgIDIsICAgICBNT05USCwgICAxLCAgICAgNTc1OSwgQURBUiwgICAgICAyIH0sCisgICAgICAgICAgICB7ICAgNTc1OSwgU0hFVkFULCAgICAyLCAgICAgTU9OVEgsICAgMiwgICAgIDU3NTksIE5JU0FOLCAgICAgMiB9LAorICAgICAgICAgICAgeyAgIDU3NTksIFNIRVZBVCwgICAgMiwgICAgIE1PTlRILCAgMTIsICAgICA1NzU5LCBTSEVWQVQsICAgIDIgfSwKKyAgICAgICAgICAgIHsgICA1NzU5LCBBViwgICAgICAgIDEsICAgICBNT05USCwgIDEyLCAgICAgNTc1OSwgQVYsICAgICAgICAxIH0sIC8vIEFsYW4KKworICAgICAgICAgICAgeyAgIDU3NTcsIEhFU0hWQU4sICAgMiwgICAgIE1PTlRILCAgIDEsICAgICA1NzU3LCBLSVNMRVYsICAgIDIgfSwgICAvLyBsZWFwIHllYXJzCisgICAgICAgICAgICB7ICAgNTc1NywgU0hFVkFULCAgICAyLCAgICAgTU9OVEgsICAgMSwgICAgIDU3NTcsIEFEQVJfMSwgICAgMiB9LAorICAgICAgICAgICAgeyAgIDU3NTcsIFNIRVZBVCwgICAgMiwgICAgIE1PTlRILCAgIDIsICAgICA1NzU3LCBBREFSLCAgICAgIDIgfSwKKyAgICAgICAgICAgIHsgICA1NzU3LCBTSEVWQVQsICAgIDIsICAgICBNT05USCwgICAzLCAgICAgNTc1NywgTklTQU4sICAgICAyIH0sCisgICAgICAgICAgICB7ICAgNTc1NywgU0hFVkFULCAgICAyLCAgICAgTU9OVEgsICAxMiwgICAgIDU3NTcsIFRFVkVULCAgICAgMiB9LAorICAgICAgICAgICAgeyAgIDU3NTcsIFNIRVZBVCwgICAgMiwgICAgIE1PTlRILCAgMTMsICAgICA1NzU3LCBTSEVWQVQsICAgIDIgfSwKKyAgICAgICAgICAgIHsgICA1NzU3LCBBViwgICAgICAgIDEsICAgICBNT05USCwgIDEyLCAgICAgNTc1NywgVEFNVVosICAgICAxIH0sIC8vIEFsYW4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgeyAgIDU3NTcsIEtJU0xFViwgICAgMSwgICAgIERBVEUsICAgMzAsICAgICA1NzU3LCBLSVNMRVYsICAgIDIgfSwgICAvLyAyOS1kYXkgbW9udGgKKyAgICAgICAgICAgIHsgICA1NzU4LCBLSVNMRVYsICAgIDEsICAgICBEQVRFLCAgIDMxLCAgICAgNTc1OCwgS0lTTEVWLCAgICAyIH0sICAgLy8gMzAtZGF5IG1vbnRoCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIFRyeSBzb21lIG90aGVyIGZpZWxkcyB0b28KKyAgICAgICAgICAgIHsgICA1NzU3LCBUSVNIUkksICAgIDEsICAgICBZRUFSLCAgICAxLCAgICAgNTc1OCwgVElTSFJJLCAgICAxIH0sCisgICAKKworICAgICAgICAgICAgLy8gVHJ5IHNvbWUgcm9sbHMgdGhhdCByZXF1aXJlIG90aGVyIGZpZWxkcyB0byBiZSBhZGp1c3RlZAorICAgICAgICAgICAgeyAgIDU3NTcsIFRJU0hSSSwgICAzMCwgICAgIE1PTlRILCAgIDEsICAgICA1NzU3LCBIRVNIVkFOLCAgMjkgfSwKKyAgICAgICAgICAgIHsgICA1NzU4LCBLSVNMRVYsICAgMzAsICAgICBZRUFSLCAgIC0xLCAgICAgNTc1NywgS0lTTEVWLCAgIDI5IH0sCisgICAgICAgIH07CisgICAgICAgCisgICAgICAgIEhlYnJld0NhbGVuZGFyIGNhbCA9IG5ldyBIZWJyZXdDYWxlbmRhcihVVEMsIExvY2FsZS5nZXREZWZhdWx0KCkpOworCisgICAgICAgIGRvUm9sbEFkZChST0xMLCBjYWwsIHRlc3RzKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgYmVoYXZpb3Igb2YgSGVicmV3Q2FsZW5kYXIucm9sbAorICAgICAqIFRoZSBvbmx5IHJlYWwgbmFzdGluZXNzIHdpdGggcm9sbCBpcyB0aGUgTU9OVEggZmllbGQsIHNpbmNlIGEgeWVhciBjYW4KKyAgICAgKiBoYXZlIGEgdmFyaWFibGUgbnVtYmVyIG9mIG1vbnRocy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0QWRkKCkgeworICAgICAgICBpbnRbXVtdIHRlc3RzID0gbmV3IGludFtdW10geworICAgICAgICAgICAgLy8gICAgICAgaW5wdXQgICAgICAgICAgICAgICAgYWRkIGJ5ICAgICAgICAgIG91dHB1dAorICAgICAgICAgICAgLy8gIHllYXIgIG1vbnRoICAgICBkYXkgICAgIGZpZWxkIGFtb3VudCAgICB5ZWFyICBtb250aCAgICAgZGF5CisgICAgICAgICAgICB7ICAgNTc1OSwgSEVTSFZBTiwgICAyLCAgICAgTU9OVEgsICAgMSwgICAgIDU3NTksIEtJU0xFViwgICAgMiB9LCAgIC8vIG5vbi1sZWFwIHllYXJzCisgICAgICAgICAgICB7ICAgNTc1OSwgU0hFVkFULCAgICAyLCAgICAgTU9OVEgsICAgMSwgICAgIDU3NTksIEFEQVIsICAgICAgMiB9LAorICAgICAgICAgICAgeyAgIDU3NTksIFNIRVZBVCwgICAgMiwgICAgIE1PTlRILCAgIDIsICAgICA1NzU5LCBOSVNBTiwgICAgIDIgfSwKKyAgICAgICAgICAgIHsgICA1NzU5LCBTSEVWQVQsICAgIDIsICAgICBNT05USCwgIDEyLCAgICAgNTc2MCwgU0hFVkFULCAgICAyIH0sCisKKyAgICAgICAgICAgIHsgICA1NzU3LCBIRVNIVkFOLCAgIDIsICAgICBNT05USCwgICAxLCAgICAgNTc1NywgS0lTTEVWLCAgICAyIH0sICAgLy8gbGVhcCB5ZWFycworICAgICAgICAgICAgeyAgIDU3NTcsIFNIRVZBVCwgICAgMiwgICAgIE1PTlRILCAgIDEsICAgICA1NzU3LCBBREFSXzEsICAgIDIgfSwKKyAgICAgICAgICAgIHsgICA1NzU3LCBTSEVWQVQsICAgIDIsICAgICBNT05USCwgICAyLCAgICAgNTc1NywgQURBUiwgICAgICAyIH0sCisgICAgICAgICAgICB7ICAgNTc1NywgU0hFVkFULCAgICAyLCAgICAgTU9OVEgsICAgMywgICAgIDU3NTcsIE5JU0FOLCAgICAgMiB9LAorICAgICAgICAgICAgeyAgIDU3NTcsIFNIRVZBVCwgICAgMiwgICAgIE1PTlRILCAgMTIsICAgICA1NzU4LCBURVZFVCwgICAgIDIgfSwKKyAgICAgICAgICAgIHsgICA1NzU3LCBTSEVWQVQsICAgIDIsICAgICBNT05USCwgIDEzLCAgICAgNTc1OCwgU0hFVkFULCAgICAyIH0sCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHsgICA1NzU3LCBLSVNMRVYsICAgIDEsICAgICBEQVRFLCAgIDMwLCAgICAgNTc1NywgVEVWRVQsICAgICAyIH0sICAgLy8gMjktZGF5IG1vbnRoCisgICAgICAgICAgICB7ICAgNTc1OCwgS0lTTEVWLCAgICAxLCAgICAgREFURSwgICAzMSwgICAgIDU3NTgsIFRFVkVULCAgICAgMiB9LCAgIC8vIDMwLWRheSBtb250aAorICAgICAgICB9OworICAgICAgIAorICAgICAgICBIZWJyZXdDYWxlbmRhciBjYWwgPSBuZXcgSGVicmV3Q2FsZW5kYXIoVVRDLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKworICAgICAgICBkb1JvbGxBZGQoQURELCBjYWwsIHRlc3RzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBIGh1Z2UgbGlzdCBvZiB0ZXN0IGNhc2VzIHRvIG1ha2Ugc3VyZSB0aGF0IGNvbXB1dGVUaW1lIGFuZCBjb21wdXRlRmllbGRzCisgICAgICogd29yayBwcm9wZXJseSBmb3IgYSB3aWRlIHJhbmdlIG9mIGRhdGEuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdENhc2VzKCkgeworICAgICAgICBkb1Rlc3RDYXNlcyh0ZXN0Q2FzZXMsIG5ldyBIZWJyZXdDYWxlbmRhcigpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgVGVzdENhc2VbXSB0ZXN0Q2FzZXMgPSB7CisgICAgICAgIC8vCisgICAgICAgIC8vIE1vc3Qgb2YgdGhlc2UgdGVzdCBjYXNlcyB3ZXJlIHRha2VuIGZyb20gdGhlIGJhY2sgb2YKKyAgICAgICAgLy8gIkNhbGVuZHJpY2FsIENhbGN1bGF0aW9ucyIsIHdpdGggc29tZSBleHRyYXMgYWRkZWQgdG8gaGVscAorICAgICAgICAvLyBkZWJ1ZyBhIGZldyBvZiB0aGUgcHJvYmxlbXMgdGhhdCBjcm9wcGVkIHVwIGluIGRldmVsb3BtZW50LgorICAgICAgICAvLworICAgICAgICAvLyBUaGUgbW9udGhzIGluIHRoaXMgdGFibGUgYXJlIDEtYmFzZWQgcmF0aGVyIHRoYW4gMC1iYXNlZCwKKyAgICAgICAgLy8gYmVjYXVzZSBpdCdzIGVhc2llciB0byBlZGl0IHRoYXQgd2F5LgorICAgICAgICAvLworICAgICAgICAvLyAgICAgICAgIEp1bGlhbiBEYXkgIEVyYSAgWWVhciAgTW9udGggRGF5ICBXa0RheSBIb3VyIE1pbiBTZWMKKyAgICAgICAgbmV3IFRlc3RDYXNlKDE1MDcyMzEuNSwgIDAsICAzMTc0LCAgIDEyLCAgMTAsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDE2NjAwMzcuNSwgIDAsICAzNTkzLCAgICAzLCAgMjUsICBXRUQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDE3NDY4OTMuNSwgIDAsICAzODMxLCAgICAxLCAgIDMsICBXRUQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDE3NzA2NDEuNSwgIDAsICAzODk2LCAgICAxLCAgIDksICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDE4OTI3MzEuNSwgIDAsICA0MjMwLCAgICA0LCAgMTgsICBXRUQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDE5MzE1NzkuNSwgIDAsICA0MzM2LCAgIDEwLCAgIDQsICBNT04sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDE5NzQ4NTEuNSwgIDAsICA0NDU1LCAgICAyLCAgMTMsICBTQVQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIwOTExNjQuNSwgIDAsICA0NzczLCAgICA5LCAgIDYsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIxMjE1MDkuNSwgIDAsICA0ODU2LCAgICA5LCAgMjMsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIxNTU3NzkuNSwgIDAsICA0OTUwLCAgICA4LCAgIDcsICBGUkksICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIxNzQwMjkuNSwgIDAsICA1MDAwLCAgICA3LCAgIDgsICBTQVQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIxOTE1ODQuNSwgIDAsICA1MDQ4LCAgICA4LCAgMjEsICBGUkksICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIxOTUyNjEuNSwgIDAsICA1MDU4LCAgICA5LCAgIDcsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIyMjkyNzQuNSwgIDAsICA1MTUxLCAgIDExLCAgIDEsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIyNDU1ODAuNSwgIDAsICA1MTk2LCAgICA1LCAgIDcsICBXRUQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIyNjYxMDAuNSwgIDAsICA1MjUyLCAgICA4LCAgIDMsICBTQVQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIyODg1NDIuNSwgIDAsICA1MzE0LCAgICAxLCAgIDEsICBTQVQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIyOTA5MDEuNSwgIDAsICA1MzIwLCAgICA2LCAgMjcsICBTQVQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMjMxNDAuNSwgIDAsICA1NDA4LCAgIDEwLCAgMjAsICBXRUQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ1NTEuNSwgIDAsICA1NDQwLCAgICAxLCAgIDEsICBUSFUsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ1ODEuNSwgIDAsICA1NDQwLCAgICAyLCAgIDEsICBTQVQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ2MTAuNSwgIDAsICA1NDQwLCAgICAzLCAgIDEsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ2MzkuNSwgIDAsICA1NDQwLCAgICA0LCAgIDEsICBNT04sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ2NjguNSwgIDAsICA1NDQwLCAgICA1LCAgIDEsICBUVUUsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ2OTguNSwgIDAsICA1NDQwLCAgICA2LCAgIDEsICBUSFUsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ3MjguNSwgIDAsICA1NDQwLCAgICA3LCAgIDEsICBTQVQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ3NTcuNSwgIDAsICA1NDQwLCAgICA4LCAgIDEsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ3ODcuNSwgIDAsICA1NDQwLCAgICA5LCAgIDEsICBUVUUsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ4MTYuNSwgIDAsICA1NDQwLCAgIDEwLCAgIDEsICBXRUQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ4NDYuNSwgIDAsICA1NDQwLCAgIDExLCAgIDEsICBGUkksICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ4NDguNSwgIDAsICA1NDQwLCAgIDExLCAgIDMsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzMzQ5MzQuNSwgIDAsICA1NDQxLCAgICAxLCAgIDEsICBUVUUsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzNDgwMjAuNSwgIDAsICA1NDc2LCAgIDEyLCAgIDUsICBGUkksICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzNjY5NzguNSwgIDAsICA1NTI4LCAgIDExLCAgIDQsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzODU2NDguNSwgIDAsICA1NTc5LCAgIDEyLCAgMTEsICBNT04sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDIzOTI4MjUuNSwgIDAsICA1NTk5LCAgICA4LCAgMTIsICBXRUQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDI0MTYyMjMuNSwgIDAsICA1NjYzLCAgICA4LCAgMjIsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDI0MjU4NDguNSwgIDAsICA1Njg5LCAgIDEyLCAgMTksICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDI0MzAyNjYuNSwgIDAsICA1NzAyLCAgICAxLCAgIDgsICBNT04sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDI0MzA4MzMuNSwgIDAsICA1NzAzLCAgICA4LCAgMTQsICBNT04sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDI0MzEwMDQuNSwgIDAsICA1NzA0LCAgICAxLCAgIDgsICBUSFUsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDI0NDg2OTguNSwgIDAsICA1NzUyLCAgICA3LCAgMTIsICBUVUUsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDI0NTAxMzguNSwgIDAsICA1NzU2LCAgICA3LCAgIDUsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDI0NjU3MzcuNSwgIDAsICA1Nzk5LCAgICAyLCAgMTIsICBXRUQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgbmV3IFRlc3RDYXNlKDI0ODYwNzYuNSwgIDAsICA1ODU0LCAgIDEyLCAgIDUsICBTVU4sICAgMCwgIDAsICAwKSwKKworICAgICAgICAvLyBBZGRpdGlvbmFsIHRlc3QgY2FzZXMgZm9yIGJ1Z3MgZm91bmQgZHVyaW5nIGRldmVsb3BtZW50CisgICAgICAgIC8vICAgICAgICAgICBHLllZL01NL0REICBFcmEgIFllYXIgIE1vbnRoIERheSAgV2tEYXkgSG91ciBNaW4gU2VjCisgICAgICAgIG5ldyBUZXN0Q2FzZSgxMDEzLCA5LCA4LCAwLCAgNDc3NCwgICAgMSwgICAxLCAgVFVFLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgxMjM5LCA5LCAxLCAwLCAgNTAwMCwgICAgMSwgICAxLCAgVEhVLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgxMjQwLCA5LDE4LCAwLCAgNTAwMSwgICAgMSwgICAxLCAgVFVFLCAgIDAsICAwLCAgMCksCisKKyAgICAgICAgLy8gVGVzdCBjYXNlcyB0YWtlbiBmcm9tIGEgdGFibGUgb2YgMTQgInllYXIgdHlwZXMiIGluIHRoZSBIZWxwIGZpbGUKKyAgICAgICAgLy8gb2YgdGhlIGFwcGxpY2F0aW9uICJIZWJyZXcgQ2FsZW5kYXIiCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDU2MTg3LjUsICAwLCAgNTc3MywgICAgMSwgICAxLCAgTU9OLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDU5MTExLjUsICAwLCAgNTc4MSwgICAgMSwgICAxLCAgU0FULCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDUzNjQ3LjUsICAwLCAgNTc2NiwgICAgMSwgICAxLCAgVFVFLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDYyMDM1LjUsICAwLCAgNTc4OSwgICAgMSwgICAxLCAgVEhVLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDU4NzU2LjUsICAwLCAgNTc4MCwgICAgMSwgICAxLCAgTU9OLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDYwNTg2LjUsICAwLCAgNTc4NSwgICAgMSwgICAxLCAgVEhVLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDYzODY0LjUsICAwLCAgNTc5NCwgICAgMSwgICAxLCAgU0FULCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDYzNDgxLjUsICAwLCAgNTc5MywgICAgMSwgICAxLCAgTU9OLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDcwNDIxLjUsICAwLCAgNTgxMiwgICAgMSwgICAxLCAgVEhVLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDYwMjAzLjUsICAwLCAgNTc4NCwgICAgMSwgICAxLCAgU0FULCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDU5NDY0LjUsICAwLCAgNTc4MiwgICAgMSwgICAxLCAgVFVFLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDY3MTQyLjUsICAwLCAgNTgwMywgICAgMSwgICAxLCAgTU9OLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDU1NDQ4LjUsICAwLCAgNTc3MSwgICAgMSwgICAxLCAgVEhVLCAgIDAsICAwLCAgMCksCisgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDg3MjIzLjUsICAwLCAgNTg1OCwgICAgMSwgICAxLCAgU0FULCAgIDAsICAwLCAgMCksCisgICAgfTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBQcm9ibGVtIHJlcG9ydGVkIGJ5IEFybWFuZCBCZW5kYW5hbiBpbiB3aGljaCBzZXR0aW5nIG9mIHRoZSBNT05USAorICAgICAqIGZpZWxkIGluIGEgSGVicmV3IGNhbGVuZGFyIGNhdXNlcyB0aGUgdGltZSBmaWVsZHMgdG8gZ28gbmVnYXRpdmUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFRpbWVGaWVsZHMoKSB7CisgICAgICAgIEhlYnJld0NhbGVuZGFyIGNhbGVuZGFyID0gbmV3IEhlYnJld0NhbGVuZGFyKDU3NjEsIDAsIDExLCAxMiwgMjgsIDE1KTsKKwkJY2FsZW5kYXIuc2V0KENhbGVuZGFyLllFQVIsIDU3MTcpOworCQljYWxlbmRhci5zZXQoQ2FsZW5kYXIuTU9OVEgsIDIpOworCQljYWxlbmRhci5zZXQoQ2FsZW5kYXIuREFZX09GX01PTlRILCAyMyk7CisgICAgICAgIGlmIChjYWxlbmRhci5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpICE9IDEyKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbDogSGVicmV3Q2FsZW5kYXIgSE9VUl9PRl9EQVkgPSAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IG9mIHRoZSBiZWhhdmlvciBvZiB0aGUgbW9udGggZmllbGQuICBUaGlzIHJlcXVpcmVzIHNwZWNpYWwKKyAgICAgKiBoYW5kbGluZyBpbiB0aGUgSGVicmV3IGNhbGVuZGFyIGJlY2F1c2Ugb2YgdGhlIHBhdHRlcm4gb2YgbGVhcAorICAgICAqIHllYXJzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RNb250aE1vdmVtZW50KCkgeworICAgICAgICBIZWJyZXdDYWxlbmRhciBjYWwgPSBuZXcgSGVicmV3Q2FsZW5kYXIoKTsKKyAgICAgICAgLy8gTGVhcCB5ZWFycyBhcmU6CisgICAgICAgIC8vIDMgNiA4IDExIDE0IDE3IDE5IChhbmQgc28gb24gLSAxOS15ZWFyIGN5Y2xlKQorICAgICAgICAvLyBXZSBjYW4ndCB0ZXN0IGNvbXBsZXRlKCkgb24gc29tZSBsaW5lcyBiZWxvdyBiZWNhdXNlIG9mIEFEQVJfMSAtLSBpZgorICAgICAgICAvLyB0aGUgY2FsZW5kYXIgaXMgc2V0IHRvIEFEQVJfMSBvbiBhIG5vbi1sZWFwIHllYXIsIHRoZSByZXN1bHQgaXMgdW5kZWZpbmVkLgorICAgICAgICBpbnRbXSBEQVRBID0geworICAgICAgICAgICAgLy8gYyAgICAgLSB0ZXN0IGNvbXBsZXRlKCkgb3Igbm90CisgICAgICAgICAgICAvLyBtL3kgICAtIGJlZm9yZSBhbmQgYWZ0ZXIgbW9udGgveWVhcgorICAgICAgICAgICAgLy8gZGVsdGEgLSBhbW91bnQgdG8gYWRkIHRvIG1vbnRoIGZpZWxkCisgICAgICAgICAgICAvL2MgbTEgIHkxIGRlbHRhICBtMiAgeTIKKyAgICAgICAgICAgIDEsICAxMCwgIDIsICArMjQsICA5LCAgNCwgLy8gKHllYXIgMiwgbW9udGggMTApICsgMjQgbW9udGhzIC0+ICh5IDQsIG0gOSkKKyAgICAgICAgICAgIDEsICAxMCwgIDIsICArNjAsICA4LCAgNywgLy8gKHkgMiwgbSAxMCkgKyA2MCBtb250aHMgLT4gKHkgNywgbSA4KQorICAgICAgICAgICAgMSwgICAxLCAgMiwgICsxMiwgIDEsICAzLCAvLyAoeSAyLCBtIDEpICsgMTIgbW9udGhzIC0+ICh5IDMsIG0gMSkKKyAgICAgICAgICAgIDEsICAgMywgMTgsICAtMjQsICA0LCAxNiwgLy8gKHkgMTgsIG0gMykgLSAyNCBtb250aHMgLT4gKHkgMTYsIG0gNCkKKyAgICAgICAgICAgIDEsICAgMSwgIDYsICAtMjQsICAxLCAgNCwKKyAgICAgICAgICAgIDEsICAgNCwgIDMsICAgKzIsICA2LCAgMywgLy8gTGVhcCB5ZWFyIC0gbm8gc2tpcCA0LDUsNiw3LDgKKyAgICAgICAgICAgIDEsICAgOCwgIDMsICAgLTIsICA2LCAgMywgLy8gTGVhcCB5ZWFyIC0gbm8gc2tpcAorICAgICAgICAgICAgMCwgICA0LCAgMiwgICArMiwgIDcsICAyLCAvLyBTa2lwIG92ZXIgbGVhcCBtb250aCA0LDUsKDYpLDcsOAorICAgICAgICAgICAgMCwgICA4LCAgMiwgICAtMiwgIDUsICAyLCAvLyBTa2lwIG92ZXIgbGVhcCBtb250aCBnb2luZyBiYWNrd2FyZAorICAgICAgICB9OworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7ICkgeworICAgICAgICAgICAgYm9vbGVhbiB0ZXN0Q29tcGxldGUgPSBEQVRBW2krK10gIT0gMDsKKyAgICAgICAgICAgIGludCBtID0gREFUQVtpKytdLCB5ID0gREFUQVtpKytdOworICAgICAgICAgICAgaW50IG1vbnRoRGVsdGEgPSBEQVRBW2krK107CisgICAgICAgICAgICBpbnQgbTIgPSBEQVRBW2krK10sIHkyID0gREFUQVtpKytdOworICAgICAgICAgICAgaW50IG1hY3QsIHlhY3Q7CisKKyAgICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5ZRUFSLCB5KTsKKyAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuTU9OVEgsIG0tMSk7CisgICAgICAgICAgICBjYWwuYWRkKENhbGVuZGFyLk1PTlRILCBtb250aERlbHRhKTsKKyAgICAgICAgICAgIHlhY3QgPSBjYWwuZ2V0KENhbGVuZGFyLllFQVIpOyBtYWN0ID0gY2FsLmdldChDYWxlbmRhci5NT05USCkgKyAxOworICAgICAgICAgICAgaWYgKHkyICE9IHlhY3QgfHwgbTIgIT0gbWFjdCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiAiICsgbSArICIvIiArIHkgKworICAgICAgICAgICAgICAgICAgICAgICIgLT4gYWRkKE1PTlRILCAiICsgbW9udGhEZWx0YSArICIpIC0+ICIgKworICAgICAgICAgICAgICAgICAgICAgIG1hY3QgKyAiLyIgKyB5YWN0ICsgIiwgZXhwZWN0ZWQgIiArCisgICAgICAgICAgICAgICAgICAgICAgbTIgKyAiLyIgKyB5Mik7CisgICAgICAgICAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5ZRUFSLCB5KTsKKyAgICAgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLk1PTlRILCBtLTEpOworICAgICAgICAgICAgICAgIGxvZ2xuKCJTdGFydDogIiArIG0gKyAiLyIgKyB5KTsKKyAgICAgICAgICAgICAgICBpbnQgZGVsdGEgPSBtb250aERlbHRhID4gMCA/IDEgOiAtMTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBjPTA7IGMhPW1vbnRoRGVsdGE7IGMrPWRlbHRhKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbC5hZGQoQ2FsZW5kYXIuTU9OVEgsIGRlbHRhKTsKKyAgICAgICAgICAgICAgICAgICAgbG9nbG4oIisgIiArIGRlbHRhICsgIiBNT05USCAtPiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpICsgMSkgKyAiLyIgKyBjYWwuZ2V0KENhbGVuZGFyLllFQVIpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0ZXN0Q29tcGxldGUpIHsKKyAgICAgICAgICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLllFQVIsIHkpOworICAgICAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuTU9OVEgsIG0gKyBtb250aERlbHRhIC0gMSk7CisgICAgICAgICAgICAgICAgeWFjdCA9IGNhbC5nZXQoQ2FsZW5kYXIuWUVBUik7IG1hY3QgPSBjYWwuZ2V0KENhbGVuZGFyLk1PTlRIKSArIDE7CisgICAgICAgICAgICAgICAgaWYgKHkyICE9IHlhY3QgfHwgbTIgIT0gbWFjdCkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIChtK21vbnRoRGVsdGEpICsgIi8iICsgeSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICIgLT4gY29tcGxldGUoKSAtPiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjdCArICIvIiArIHlhY3QgKyAiLCBleHBlY3RlZCAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbTIgKyAiLyIgKyB5Mik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCBoYW5kbGluZyBvZiBBREFSXzEuCisgICAgICovCisgICAgLyoKKyAgICBwdWJsaWMgdm9pZCBUZXN0QWRhcjEoKSB7CisgICAgICAgIEhlYnJld0NhbGVuZGFyIGNhbCA9IG5ldyBIZWJyZXdDYWxlbmRhcigpOworICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldChDYWxlbmRhci5ZRUFSLCAxOTAzKTsgLy8gbGVhcAorICAgICAgICBjYWwuc2V0KENhbGVuZGFyLk1PTlRILCBIZWJyZXdDYWxlbmRhci5BREFSXzEpOworICAgICAgICBsb2dsbigiMTkwMyhsZWFwKS9BREFSXzEgPT4gIiArCisgICAgICAgICAgICAgIGNhbC5nZXQoQ2FsZW5kYXIuWUVBUikgKyAiLyIgKyAoY2FsLmdldChDYWxlbmRhci5NT05USCkrMSkpOworCisgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICBjYWwuc2V0KENhbGVuZGFyLllFQVIsIDE5MDQpOyAvLyBub24tbGVhcAorICAgICAgICBjYWwuc2V0KENhbGVuZGFyLk1PTlRILCBIZWJyZXdDYWxlbmRhci5BREFSXzEpOworICAgICAgICBsb2dsbigiMTkwNChub24tbGVhcCkvQURBUl8xID0+ICIgKworICAgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLllFQVIpICsgIi8iICsgKGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpKzEpKTsKKyAgICB9CisgICAgKi8KKworICAgIC8qKgorICAgICAqIFdpdGggbm8gZmllbGRzIHNldCwgdGhlIGNhbGVuZGFyIHNob3VsZCB1c2UgZGVmYXVsdCB2YWx1ZXMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdERlZmF1bHRGaWVsZFZhbHVlcygpIHsKKyAgICAgICAgSGVicmV3Q2FsZW5kYXIgY2FsID0gbmV3IEhlYnJld0NhbGVuZGFyKCk7CisgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICBsb2dsbigiY2FsLmNsZWFyKCkgLT4gIiArIGNhbC5nZXRUaW1lKCkpOworICAgIH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXN0L2NhbGVuZGFyL0lCTUNhbGVuZGFyVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vdGVzdC9jYWxlbmRhci9JQk1DYWxlbmRhclRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41N2YwODM5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGVzdC9jYWxlbmRhci9JQk1DYWxlbmRhclRlc3QuamF2YQpAQCAtMCwwICsxLDIxNCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGVzdC9jYWxlbmRhci9BdHRpYy9JQk1DYWxlbmRhclRlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8xMS8xOCAwMDoxNzo1OCAkIAorICogJFJldmlzaW9uOiAxLjQgJAorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRlc3QuY2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS50ZXN0LlRlc3RGbXdrOworaW1wb3J0IGNvbS5pYm0udXRpbC4qOworaW1wb3J0IGphdmEudGV4dC4qOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisKKy8qKgorICogQHRlc3QKKyAqIEBzdW1tYXJ5IFRlc3RzIG9mIG5ldyBmdW5jdGlvbmFsaXR5IGluIElCTUNhbGVuZGFyCisgKi8KK3B1YmxpYyBjbGFzcyBJQk1DYWxlbmRhclRlc3QgZXh0ZW5kcyBDYWxlbmRhclRlc3QgeworCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBJQk1DYWxlbmRhclRlc3QoKS5ydW4oYXJncyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCB3ZWVrZW5kIHN1cHBvcnQgaW4gSUJNQ2FsZW5kYXIuCisgICAgICoKKyAgICAgKiBOT1RFOiBUaGlzIHRlc3Qgd2lsbCBoYXZlIHRvIGJlIHVwZGF0ZWQgd2hlbiB0aGUgaXNXZWVrZW5kKCkgZXRjLgorICAgICAqICAgICAgIEFQSSBpcyBmaW5hbGl6ZWQgbGF0ZXIuCisgICAgICoKKyAgICAgKiAgICAgICBJbiBwYXJ0aWN1bGFyLCB0aGUgdGVzdCB3aWxsIGhhdmUgdG8gYmUgcmV3cml0dGVuIHRvIGluc3RhbnRpYXRlCisgICAgICogICAgICAgYSBDYWxlbmRhciBpbiB0aGUgZ2l2ZW4gbG9jYWxlICh1c2luZyBnZXRJbnN0YW5jZSgpKSBhbmQgY2FsbAorICAgICAqICAgICAgIHRoYXQgQ2FsZW5kYXIncyBpc1dlZWtlbmQoKSBldGMuIG1ldGhvZHMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFdlZWtlbmQoKSB7CisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgZm10ID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoIkVFRSBNTU0gZGQgeXl5eSBHIEhIOm1tOnNzLlNTUyIpOworICAgICAgICAKKyAgICAgICAgLy8gTk9URQorICAgICAgICAvLyBUaGlzIHRlc3QgdGVzdHMgZm9yIHNwZWNpZmljIGxvY2FsZSBkYXRhLiAgVGhpcyBpcyBwcm9iYWJseSBva2F5CisgICAgICAgIC8vIGFzIGZhciBhcyBVUyBkYXRhIGlzIGNvbmNlcm5lZCwgYnV0IGlmIHRoZSBBcmFiaWMvQmFocmFpbiBkYXRhCisgICAgICAgIC8vIGNoYW5nZXMsIHRoaXMgdGVzdCB3aWxsIGhhdmUgdG8gYmUgdXBkYXRlZC4KKworICAgICAgICAvLyBUZXN0IHNwZWNpZmljIGRheXMKKyAgICAgICAgT2JqZWN0W10gREFUQTEgPSB7CisgICAgICAgICAgICBMb2NhbGUuVVMsIG5ldyBpbnRbXSB7IC8vIFNhdHVyZGF5OlN1bmRheQorICAgICAgICAgICAgICAgIDIwMDAsIENhbGVuZGFyLk1BUkNILCAxNywgMjMsICAwLCAwLCAvLyBGcmkgMjM6MDAKKyAgICAgICAgICAgICAgICAyMDAwLCBDYWxlbmRhci5NQVJDSCwgMTgsICAwLCAtMSwgMCwgLy8gRnJpIDIzOjU5OjU5Ljk5OQorICAgICAgICAgICAgICAgIDIwMDAsIENhbGVuZGFyLk1BUkNILCAxOCwgIDAsICAwLCAxLCAvLyBTYXQgMDA6MDAKKyAgICAgICAgICAgICAgICAyMDAwLCBDYWxlbmRhci5NQVJDSCwgMTgsIDE1LCAgMCwgMSwgLy8gU2F0IDE1OjAwCisgICAgICAgICAgICAgICAgMjAwMCwgQ2FsZW5kYXIuTUFSQ0gsIDE5LCAyMywgIDAsIDEsIC8vIFN1biAyMzowMAorICAgICAgICAgICAgICAgIDIwMDAsIENhbGVuZGFyLk1BUkNILCAyMCwgIDAsIC0xLCAxLCAvLyBTdW4gMjM6NTk6NTkuOTk5CisgICAgICAgICAgICAgICAgMjAwMCwgQ2FsZW5kYXIuTUFSQ0gsIDIwLCAgMCwgIDAsIDAsIC8vIE1vbiAwMDowMAorICAgICAgICAgICAgICAgIDIwMDAsIENhbGVuZGFyLk1BUkNILCAyMCwgIDgsICAwLCAwLCAvLyBNb24gMDg6MDAKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBuZXcgTG9jYWxlKCJhciIsICJCSCIpLCBuZXcgaW50W10geyAvLyBUaHVyc2RheTpGcmlkYXkKKyAgICAgICAgICAgICAgICAyMDAwLCBDYWxlbmRhci5NQVJDSCwgMTUsIDIzLCAgMCwgMCwgLy8gV2VkIDIzOjAwCisgICAgICAgICAgICAgICAgMjAwMCwgQ2FsZW5kYXIuTUFSQ0gsIDE2LCAgMCwgLTEsIDAsIC8vIFdlZCAyMzo1OTo1OS45OTkKKyAgICAgICAgICAgICAgICAyMDAwLCBDYWxlbmRhci5NQVJDSCwgMTYsICAwLCAgMCwgMSwgLy8gVGh1IDAwOjAwCisgICAgICAgICAgICAgICAgMjAwMCwgQ2FsZW5kYXIuTUFSQ0gsIDE2LCAxNSwgIDAsIDEsIC8vIFRodSAxNTowMAorICAgICAgICAgICAgICAgIDIwMDAsIENhbGVuZGFyLk1BUkNILCAxNywgMjMsICAwLCAxLCAvLyBGcmkgMjM6MDAKKyAgICAgICAgICAgICAgICAyMDAwLCBDYWxlbmRhci5NQVJDSCwgMTgsICAwLCAtMSwgMSwgLy8gRnJpIDIzOjU5OjU5Ljk5OQorICAgICAgICAgICAgICAgIDIwMDAsIENhbGVuZGFyLk1BUkNILCAxOCwgIDAsICAwLCAwLCAvLyBTYXQgMDA6MDAKKyAgICAgICAgICAgICAgICAyMDAwLCBDYWxlbmRhci5NQVJDSCwgMTgsICA4LCAgMCwgMCwgLy8gU2F0IDA4OjAwCisgICAgICAgICAgICB9LAorICAgICAgICB9OworCisgICAgICAgIC8vIFRlc3QgZGF5cyBvZiB0aGUgd2VlaworICAgICAgICBPYmplY3RbXSBEQVRBMiA9IHsKKyAgICAgICAgICAgIExvY2FsZS5VUywgbmV3IGludFtdIHsKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5NT05EQVksICAgQ2FsZW5kYXIuV0VFS0RBWSwKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5GUklEQVksICAgQ2FsZW5kYXIuV0VFS0RBWSwKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5TQVRVUkRBWSwgQ2FsZW5kYXIuV0VFS0VORCwKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5TVU5EQVksICAgQ2FsZW5kYXIuV0VFS0VORCwKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICBuZXcgTG9jYWxlKCJhciIsICJCSCIpLCBuZXcgaW50W10geyAvLyBUaHVyc2RheTpGcmlkYXkKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5XRURORVNEQVksQ2FsZW5kYXIuV0VFS0RBWSwKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5TQVRVUkRBWSwgQ2FsZW5kYXIuV0VFS0RBWSwKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5USFVSU0RBWSwgQ2FsZW5kYXIuV0VFS0VORCwKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5GUklEQVksICAgQ2FsZW5kYXIuV0VFS0VORCwKKyAgICAgICAgICAgIH0sCisgICAgICAgIH07CisKKyAgICAgICAgLy8gV2Ugb25seSB0ZXN0IHRoZSBnZXREYXlPZldlZWtUeXBlKCkgYW5kIGlzV2Vla2VuZCgpIEFQSXMuCisgICAgICAgIC8vIFRoZSBnZXRXZWVrZW5kVHJhbnNpdGlvbigpIEFQSSBpcyB0ZXN0ZWQgaW5kaXJlY3RseSB2aWEgdGhlCisgICAgICAgIC8vIGlzV2Vla2VuZCgpIEFQSSwgd2hpY2ggY2FsbHMgaXQuCisKKyAgICAgICAgZm9yIChpbnQgaTE9MDsgaTE8REFUQTEubGVuZ3RoOyBpMSs9MikgeworICAgICAgICAgICAgTG9jYWxlIGxvYyA9IChMb2NhbGUpREFUQTFbaTFdOworICAgICAgICAgICAgaW50W10gZGF0YSA9IChpbnRbXSkgREFUQTFbaTErMV07CisgICAgICAgICAgICBDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZShsb2MpOworICAgICAgICAgICAgbG9nbG4oIkxvY2FsZTogIiArIGxvYyk7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8ZGF0YS5sZW5ndGg7IGkrPTYpIHsKKyAgICAgICAgICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICBjYWwuc2V0KGRhdGFbaV0sIGRhdGFbaSsxXSwgZGF0YVtpKzJdLCBkYXRhW2krM10sIDAsIDApOworICAgICAgICAgICAgICAgIGlmIChkYXRhW2krNF0gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBjYWwuc2V0VGltZShuZXcgRGF0ZShjYWwuZ2V0VGltZSgpLmdldFRpbWUoKSArIGRhdGFbaSs0XSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBib29sZWFuIGlzV2Vla2VuZCA9IGNhbC5pc1dlZWtlbmQoKTsKKyAgICAgICAgICAgICAgICBib29sZWFuIG9rID0gaXNXZWVrZW5kID09IChkYXRhW2krNV0gIT0gMCk7CisgICAgICAgICAgICAgICAgaWYgKG9rKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJPazogICAiICsgZm10LmZvcm1hdChjYWwuZ2V0VGltZSgpKSArICIgaXNXZWVrZW5kPSIgKyBpc1dlZWtlbmQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgZm10LmZvcm1hdChjYWwuZ2V0VGltZSgpKSArICIgaXNXZWVrZW5kPSIgKyBpc1dlZWtlbmQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBleHBlY3RlZD0iICsgKCFpc1dlZWtlbmQpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGludCBpMj0wOyBpMjxEQVRBMi5sZW5ndGg7IGkyKz0yKSB7CisgICAgICAgICAgICBMb2NhbGUgbG9jID0gKExvY2FsZSlEQVRBMltpMl07CisgICAgICAgICAgICBpbnRbXSBkYXRhID0gKGludFtdKSBEQVRBMltpMisxXTsKKyAgICAgICAgICAgIGxvZ2xuKCJMb2NhbGU6ICIgKyBsb2MpOworICAgICAgICAgICAgQ2FsZW5kYXIgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UobG9jKTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxkYXRhLmxlbmd0aDsgaSs9MikgeworICAgICAgICAgICAgICAgIGludCB0eXBlID0gY2FsLmdldERheU9mV2Vla1R5cGUoZGF0YVtpXSk7CisgICAgICAgICAgICAgICAgaW50IGV4cCAgPSBkYXRhW2krMV07CisgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gZXhwKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJPazogICBET1cgIiArIGRhdGFbaV0gKyAiIHR5cGU9IiArIHR5cGUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBET1cgIiArIGRhdGFbaV0gKyAiIHR5cGU9IiArIHR5cGUgKworICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBleHBlY3RlZD0iICsgZXhwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSdW4gYSB0ZXN0IG9mIGEgcXVhc2ktR3JlZ29yaWFuIGNhbGVuZGFyLiAgVGhpcyBpcyBhIGNhbGVuZGFyCisgICAgICogdGhhdCBiZWhhdmVzIGxpa2UgYSBHcmVnb3JpYW4gYnV0IGhhcyBkaWZmZXJlbnQgeWVhci9lcmEgbWFwcGluZ3MuCisgICAgICogVGhlIGludFtdIGRhdGEgYXJyYXkgc2hvdWxkIGhhdmUgdGhlIGZvcm1hdDoKKyAgICAgKiAKKyAgICAgKiB7IGVyYSwgeWVhciwgZ3JlZ29yaWFuWWVhciwgbW9udGgsIGRheU9mTW9udGgsIC4uLiB9CisgICAgICovCisgICAgdm9pZCBxdWFzaUdyZWdvcmlhblRlc3QoQ2FsZW5kYXIgY2FsLCBpbnRbXSBkYXRhKSB7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxkYXRhLmxlbmd0aDsgKSB7CisgICAgICAgICAgICBpbnQgZXJhID0gZGF0YVtpKytdOworICAgICAgICAgICAgaW50IHllYXIgPSBkYXRhW2krK107CisgICAgICAgICAgICBpbnQgZ3JlZ29yaWFuWWVhciA9IGRhdGFbaSsrXTsKKyAgICAgICAgICAgIGludCBtb250aCA9IGRhdGFbaSsrXTsKKyAgICAgICAgICAgIGludCBkYXlPZk1vbnRoID0gZGF0YVtpKytdOworCisgICAgICAgICAgICBEYXRlIEQgPSBuZXcgRGF0ZShncmVnb3JpYW5ZZWFyIC0gMTkwMCwgbW9udGgsIGRheU9mTW9udGgpOworCisgICAgICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuRVJBLCBlcmEpOworICAgICAgICAgICAgY2FsLnNldCh5ZWFyLCBtb250aCwgZGF5T2ZNb250aCk7CisgICAgICAgICAgICBEYXRlIGQgPSBjYWwuZ2V0VGltZSgpOworICAgICAgICAgICAgaWYgKGQuZXF1YWxzKEQpKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIk9LOiAiICsgZXJhICsgIjoiICsgeWVhciArICIvIiArIChtb250aCsxKSArICIvIiArIGRheU9mTW9udGggKworICAgICAgICAgICAgICAgICAgICAgICIgPT4gIiArIGQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIGVyYSArICI6IiArIHllYXIgKyAiLyIgKyAobW9udGgrMSkgKyAiLyIgKyBkYXlPZk1vbnRoICsKKyAgICAgICAgICAgICAgICAgICAgICAiID0+ICIgKyBkICsgIiwgZXhwZWN0ZWQgIiArIEQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgICAgIGNhbC5zZXRUaW1lKEQpOworICAgICAgICAgICAgaW50IGUgPSBjYWwuZ2V0KENhbGVuZGFyLkVSQSk7CisgICAgICAgICAgICBpbnQgeSA9IGNhbC5nZXQoQ2FsZW5kYXIuWUVBUik7CisgICAgICAgICAgICBpZiAoeSA9PSB5ZWFyICYmIGUgPT0gZXJhKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIk9LOiAiICsgRCArICIgPT4gIiArIGNhbC5nZXQoQ2FsZW5kYXIuRVJBKSArICI6IiArCisgICAgICAgICAgICAgICAgICAgICAgY2FsLmdldChDYWxlbmRhci5ZRUFSKSArICIvIiArCisgICAgICAgICAgICAgICAgICAgICAgKGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpKzEpICsgIi8iICsgY2FsLmdldChDYWxlbmRhci5EQVRFKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJGYWlsOiAiICsgRCArICIgPT4gIiArIGNhbC5nZXQoQ2FsZW5kYXIuRVJBKSArICI6IiArCisgICAgICAgICAgICAgICAgICAgICAgY2FsLmdldChDYWxlbmRhci5ZRUFSKSArICIvIiArCisgICAgICAgICAgICAgICAgICAgICAgKGNhbC5nZXQoQ2FsZW5kYXIuTU9OVEgpKzEpICsgIi8iICsgY2FsLmdldChDYWxlbmRhci5EQVRFKSArCisgICAgICAgICAgICAgICAgICAgICAgIiwgZXhwZWN0ZWQgIiArIGVyYSArICI6IiArIHllYXIgKyAiLyIgKyAobW9udGgrMSkgKyAiLyIgKworICAgICAgICAgICAgICAgICAgICAgIGRheU9mTW9udGgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVmVyaWZ5IHRoYXQgQnVkZGhpc3RDYWxlbmRhciBzaGlmdHMgeWVhcnMgdG8gQnVkZGhpc3QgRXJhIGJ1dCBvdGhlcndpc2UKKyAgICAgKiBiZWhhdmVzIGxpa2UgR3JlZ29yaWFuQ2FsZW5kYXIuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEJ1ZGRoaXN0KCkgeworICAgICAgICBxdWFzaUdyZWdvcmlhblRlc3QobmV3IEJ1ZGRoaXN0Q2FsZW5kYXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBpbnRbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQkUgMjU0MiA9PSAxOTk5IENFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMjU0MiwgMTk5OSwgQ2FsZW5kYXIuSlVORSwgNAorICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVmVyaWZ5IHRoYXQgSmFwYW5lc2VDYWxlbmRhciBzaGlmdHMgeWVhcnMgdG8gQnVkZGhpc3QgRXJhIGJ1dCBvdGhlcndpc2UKKyAgICAgKiBiZWhhdmVzIGxpa2UgR3JlZ29yaWFuQ2FsZW5kYXIuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEphcGFuZXNlKCkgeworICAgICAgICBpbnRbXSBkYXRhID0geworICAgICAgICAgICAgSmFwYW5lc2VDYWxlbmRhci5NRUlKSSwgMSwgMTg2OCwgQ2FsZW5kYXIuU0VQVEVNQkVSLCA4LAorICAgICAgICAgICAgSmFwYW5lc2VDYWxlbmRhci5NRUlKSSwgMSwgMTg2OCwgQ2FsZW5kYXIuU0VQVEVNQkVSLCA5LAorICAgICAgICAgICAgSmFwYW5lc2VDYWxlbmRhci5NRUlKSSwgMiwgMTg2OSwgQ2FsZW5kYXIuSlVORSwgNCwKKyAgICAgICAgICAgIEphcGFuZXNlQ2FsZW5kYXIuTUVJSkksIDQ1LCAxOTEyLCBDYWxlbmRhci5KVUxZLCAyOSwKKyAgICAgICAgICAgIEphcGFuZXNlQ2FsZW5kYXIuVEFJU0hPLCAxLCAxOTEyLCBDYWxlbmRhci5KVUxZLCAzMCwKKyAgICAgICAgICAgIEphcGFuZXNlQ2FsZW5kYXIuVEFJU0hPLCAxLCAxOTEyLCBDYWxlbmRhci5BVUdVU1QsIDEsCisgICAgICAgIH07CisgICAgICAgIHF1YXNpR3JlZ29yaWFuVGVzdChuZXcgSmFwYW5lc2VDYWxlbmRhcigpLCBkYXRhKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IGxpbWl0cyBvZiB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RHcmVnb3JpYW5MaW1pdHMoKSB7CisgICAgICAgIC8vIEZpbmFsIHBhcmFtZXRlciBpcyBlaXRoZXIgbnVtYmVyIG9mIGRheXMsIGlmID4gMCwgb3IgdGVzdAorICAgICAgICAvLyBkdXJhdGlvbiBpbiBzZWNvbmRzLCBpZiA8IDAuCisgICAgICAgIGRvTGltaXRzVGVzdChuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKSwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKDIwMDQtMTkwMCwgQ2FsZW5kYXIuSkFOVUFSWSwgMSksIC0xMCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGVzdC9jYWxlbmRhci9Jc2xhbWljVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vdGVzdC9jYWxlbmRhci9Jc2xhbWljVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE3NWNkNWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXN0L2NhbGVuZGFyL0lzbGFtaWNUZXN0LmphdmEKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3Rlc3QvY2FsZW5kYXIvQXR0aWMvSXNsYW1pY1Rlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8xMS8xOCAwMDoxNzo1OCAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udGVzdC5jYWxlbmRhcjsKKworaW1wb3J0IGNvbS5pYm0udGVzdC4qOworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGphdmEudGV4dC4qOworaW1wb3J0IGNvbS5pYm0udXRpbC4qOworCisvKioKKyAqIFRlc3RzIGZvciB0aGUgPGNvZGU+SXNsYW1pY0NhbGVuZGFyPC9jb2RlPiBjbGFzcy4KKyAqLworcHVibGljIGNsYXNzIElzbGFtaWNUZXN0IGV4dGVuZHMgQ2FsZW5kYXJUZXN0IHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IElzbGFtaWNUZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIC8qKiBDb25zdGFudHMgdG8gc2F2ZSB0eXBpbmcuICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTVVIQVJSQU0gPSBJc2xhbWljQ2FsZW5kYXIuTVVIQVJSQU07CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0FGQVIgPSAgSXNsYW1pY0NhbGVuZGFyLlNBRkFSOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJBQklfMSA9ICBJc2xhbWljQ2FsZW5kYXIuUkFCSV8xOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJBQklfMiA9ICBJc2xhbWljQ2FsZW5kYXIuUkFCSV8yOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEpVTUFEQV8xID0gIElzbGFtaWNDYWxlbmRhci5KVU1BREFfMTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBKVU1BREFfMiA9ICBJc2xhbWljQ2FsZW5kYXIuSlVNQURBXzI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUkFKQUIgPSAgSXNsYW1pY0NhbGVuZGFyLlJBSkFCOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNIQUJBTiA9ICBJc2xhbWljQ2FsZW5kYXIuU0hBQkFOOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJBTUFEQU4gPSAgSXNsYW1pY0NhbGVuZGFyLlJBTUFEQU47CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0hBV1dBTCA9ICBJc2xhbWljQ2FsZW5kYXIuU0hBV1dBTDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBRSURBSCA9ICBJc2xhbWljQ2FsZW5kYXIuREhVX0FMX1FJREFIOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEhJSkpBSCA9ICBJc2xhbWljQ2FsZW5kYXIuREhVX0FMX0hJSkpBSDsKKworICAgIHB1YmxpYyB2b2lkIFRlc3RSb2xsKCkgeworICAgICAgICBpbnRbXVtdIHRlc3RzID0gbmV3IGludFtdW10geworICAgICAgICAgICAgLy8gICAgICAgaW5wdXQgICAgICAgICAgICAgICAgcm9sbCBieSAgICAgICAgICBvdXRwdXQKKyAgICAgICAgICAgIC8vICB5ZWFyICBtb250aCAgICAgZGF5ICAgICBmaWVsZCBhbW91bnQgICAgeWVhciAgbW9udGggICAgIGRheQorICAgIAorICAgICAgICAgICAgeyAgIDAwMDEsIFFJREFILCAgICAgMiwgICAgIE1PTlRILCAgIDEsICAgICAwMDAxLCBISUpKQUgsICAgIDIgfSwgICAvLyBub24tbGVhcCB5ZWFycworICAgICAgICAgICAgeyAgIDAwMDEsIFFJREFILCAgICAgMiwgICAgIE1PTlRILCAgIDIsICAgICAwMDAxLCBNVUhBUlJBTSwgIDIgfSwKKyAgICAgICAgICAgIHsgICAwMDAxLCBRSURBSCwgICAgIDIsICAgICBNT05USCwgIC0xLCAgICAgMDAwMSwgU0hBV1dBTCwgICAyIH0sCisgICAgICAgICAgICB7ICAgMDAwMSwgTVVIQVJSQU0sICAyLCAgICAgTU9OVEgsICAxMiwgICAgIDAwMDEsIE1VSEFSUkFNLCAgMiB9LAorICAgICAgICAgICAgeyAgIDAwMDEsIE1VSEFSUkFNLCAgMiwgICAgIE1PTlRILCAgMTMsICAgICAwMDAxLCBTQUZBUiwgICAgIDIgfSwKKworICAgICAgICAgICAgeyAgIDAwMDEsIEhJSkpBSCwgICAgMSwgICAgIERBVEUsICAgMzAsICAgICAwMDAxLCBISUpKQUgsICAgIDIgfSwgICAvLyAyOS1kYXkgbW9udGgKKyAgICAgICAgICAgIHsgICAwMDAyLCBISUpKQUgsICAgIDEsICAgICBEQVRFLCAgIDMxLCAgICAgMDAwMiwgSElKSkFILCAgICAyIH0sICAgLy8gMzAtZGF5IG1vbnRoCisKKyAgICAgICAgICAgIC8vIFRyeSBzb21lIHJvbGxzIHRoYXQgcmVxdWlyZSBvdGhlciBmaWVsZHMgdG8gYmUgYWRqdXN0ZWQKKyAgICAgICAgICAgIHsgICAwMDAxLCBNVUhBUlJBTSwgMzAsICAgICBNT05USCwgICAxLCAgICAgMDAwMSwgU0FGQVIsICAgIDI5IH0sCisgICAgICAgICAgICB7ICAgMDAwMiwgSElKSkFILCAgIDMwLCAgICAgWUVBUiwgICAtMSwgICAgIDAwMDEsIEhJSkpBSCwgICAyOSB9LAorICAgICAgICB9OworICAgICAgIAorICAgICAgICBJc2xhbWljQ2FsZW5kYXIgY2FsID0gbmV3Q2l2aWwoKTsKKworICAgICAgICBkb1JvbGxBZGQoUk9MTCwgY2FsLCB0ZXN0cyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQSBodWdlIGxpc3Qgb2YgdGVzdCBjYXNlcyB0byBtYWtlIHN1cmUgdGhhdCBjb21wdXRlVGltZSBhbmQgY29tcHV0ZUZpZWxkcworICAgICAqIHdvcmsgcHJvcGVybHkgZm9yIGEgd2lkZSByYW5nZSBvZiBkYXRhIGluIHRoZSBjaXZpbCBjYWxlbmRhci4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0Q2l2aWxDYXNlcygpCisgICAgeworICAgICAgICBmaW5hbCBUZXN0Q2FzZVtdIHRlc3RzID0geworICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIE1vc3Qgb2YgdGhlc2UgdGVzdCBjYXNlcyB3ZXJlIHRha2VuIGZyb20gdGhlIGJhY2sgb2YKKyAgICAgICAgICAgIC8vICJDYWxlbmRyaWNhbCBDYWxjdWxhdGlvbnMiLCB3aXRoIHNvbWUgZXh0cmFzIGFkZGVkIHRvIGhlbHAKKyAgICAgICAgICAgIC8vIGRlYnVnIGEgZmV3IG9mIHRoZSBwcm9ibGVtcyB0aGF0IGNyb3BwZWQgdXAgaW4gZGV2ZWxvcG1lbnQuCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gVGhlIG1vbnRocyBpbiB0aGlzIHRhYmxlIGFyZSAxLWJhc2VkIHJhdGhlciB0aGFuIDAtYmFzZWQsCisgICAgICAgICAgICAvLyBiZWNhdXNlIGl0J3MgZWFzaWVyIHRvIGVkaXQgdGhhdCB3YXkuCisgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgSXNsYW1pYworICAgICAgICAgICAgLy8gICAgICAgICAgSnVsaWFuIERheSAgRXJhICBZZWFyICBNb250aCBEYXkgIFdrRGF5IEhvdXIgTWluIFNlYworICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDE1MDcyMzEuNSwgIDAsIC0xMjQ1LCAgIDEyLCAgIDksICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgxNjYwMDM3LjUsICAwLCAgLTgxMywgICAgMiwgIDIzLCAgV0VELCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMTc0Njg5My41LCAgMCwgIC01NjgsICAgIDQsICAgMSwgIFdFRCwgICAwLCAgMCwgIDApLAorICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDE3NzA2NDEuNSwgIDAsICAtNTAxLCAgICA0LCAgIDYsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgxODkyNzMxLjUsICAwLCAgLTE1NywgICAxMCwgIDE3LCAgV0VELCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMTkzMTU3OS41LCAgMCwgICAtNDcsICAgIDYsICAgMywgIE1PTiwgICAwLCAgMCwgIDApLAorICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDE5NzQ4NTEuNSwgIDAsICAgIDc1LCAgICA3LCAgMTMsICBTQVQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgyMDkxMTY0LjUsICAwLCAgIDQwMywgICAxMCwgICA1LCAgU1VOLCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMjEyMTUwOS41LCAgMCwgICA0ODksICAgIDUsICAyMiwgIFNVTiwgICAwLCAgMCwgIDApLAorICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDIxNTU3NzkuNSwgIDAsICAgNTg2LCAgICAyLCAgIDcsICBGUkksICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgyMTc0MDI5LjUsICAwLCAgIDYzNywgICAgOCwgICA3LCAgU0FULCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMjE5MTU4NC41LCAgMCwgICA2ODcsICAgIDIsICAyMCwgIEZSSSwgICAwLCAgMCwgIDApLAorICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDIxOTUyNjEuNSwgIDAsICAgNjk3LCAgICA3LCAgIDcsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgyMjI5Mjc0LjUsICAwLCAgIDc5MywgICAgNywgICAxLCAgU1VOLCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMjI0NTU4MC41LCAgMCwgICA4MzksICAgIDcsICAgNiwgIFdFRCwgICAwLCAgMCwgIDApLAorICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDIyNjYxMDAuNSwgIDAsICAgODk3LCAgICA2LCAgIDEsICBTQVQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgyMjg4NTQyLjUsICAwLCAgIDk2MCwgICAgOSwgIDMwLCAgU0FULCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMjI5MDkwMS41LCAgMCwgICA5NjcsICAgIDUsICAyNywgIFNBVCwgICAwLCAgMCwgIDApLAorICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDIzMjMxNDAuNSwgIDAsICAxMDU4LCAgICA1LCAgMTgsICBXRUQsICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgyMzM0ODQ4LjUsICAwLCAgMTA5MSwgICAgNiwgICAyLCAgU1VOLCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMjM0ODAyMC41LCAgMCwgIDExMjgsICAgIDgsICAgNCwgIEZSSSwgICAwLCAgMCwgIDApLAorICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDIzNjY5NzguNSwgIDAsICAxMTgyLCAgICAyLCAgIDMsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgyMzg1NjQ4LjUsICAwLCAgMTIzNCwgICAxMCwgIDEwLCAgTU9OLCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMjM5MjgyNS41LCAgMCwgIDEyNTUsICAgIDEsICAxMSwgIFdFRCwgICAwLCAgMCwgIDApLAorICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDI0MTYyMjMuNSwgIDAsICAxMzIxLCAgICAxLCAgMjEsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDI1ODQ4LjUsICAwLCAgMTM0OCwgICAgMywgIDE5LCAgU1VOLCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMjQzMDI2Ni41LCAgMCwgIDEzNjAsICAgIDksICAgOCwgIE1PTiwgICAwLCAgMCwgIDApLAorICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDI0MzA4MzMuNSwgIDAsICAxMzYyLCAgICA0LCAgMTMsICBNT04sICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDMxMDA0LjUsICAwLCAgMTM2MiwgICAxMCwgICA3LCAgVEhVLCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMjQ0ODY5OC41LCAgMCwgIDE0MTIsICAgIDksICAxMywgIFRVRSwgICAwLCAgMCwgIDApLAorICAgICAgICAgICAgbmV3IFRlc3RDYXNlKDI0NTAxMzguNSwgIDAsICAxNDE2LCAgIDEwLCAgIDUsICBTVU4sICAgMCwgIDAsICAwKSwKKyAgICAgICAgICAgIG5ldyBUZXN0Q2FzZSgyNDY1NzM3LjUsICAwLCAgMTQ2MCwgICAxMCwgIDEyLCAgV0VELCAgIDAsICAwLCAgMCksCisgICAgICAgICAgICBuZXcgVGVzdENhc2UoMjQ4NjA3Ni41LCAgMCwgIDE1MTgsICAgIDMsICAgNSwgIFNVTiwgICAwLCAgMCwgIDApLAorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgSXNsYW1pY0NhbGVuZGFyIGNpdmlsQ2FsZW5kYXIgPSBuZXdDaXZpbCgpOworICAgICAgICBjaXZpbENhbGVuZGFyLnNldExlbmllbnQodHJ1ZSk7CisgICAgICAgIGRvVGVzdENhc2VzKHRlc3RzLCBjaXZpbENhbGVuZGFyKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0QmFzaWMoKSB7CisgICAgICAgIElzbGFtaWNDYWxlbmRhciBjYWwgPSBuZXdDaXZpbCgpOworICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldCgxMDAwLCAwLCAzMCk7CisgICAgICAgIGxvZ2xuKCIxMDAwLzAvMzAgLT4gIiArCisgICAgICAgICAgICAgIGNhbC5nZXQoWUVBUikgKyAiLyIgKworICAgICAgICAgICAgICBjYWwuZ2V0KE1PTlRIKSArICIvIiArIAorICAgICAgICAgICAgICBjYWwuZ2V0KERBVEUpKTsKKyAgICAgICAgY2FsLmNsZWFyKCk7CisgICAgICAgIGNhbC5zZXQoMSwgMCwgMzApOworICAgICAgICBsb2dsbigiMS8wLzMwIC0+ICIgKworICAgICAgICAgICAgICBjYWwuZ2V0KFlFQVIpICsgIi8iICsKKyAgICAgICAgICAgICAgY2FsLmdldChNT05USCkgKyAiLyIgKyAKKyAgICAgICAgICAgICAgY2FsLmdldChEQVRFKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgSXNsYW1pY0NhbGVuZGFyIG5ld0NpdmlsKCkgeworICAgICAgICBJc2xhbWljQ2FsZW5kYXIgY2l2aWxDYWxlbmRhciA9IG5ldyBJc2xhbWljQ2FsZW5kYXIoKTsKKyAgICAgICAgY2l2aWxDYWxlbmRhci5zZXRDaXZpbCh0cnVlKTsKKyAgICAgICAgcmV0dXJuIGNpdmlsQ2FsZW5kYXI7CisgICAgfQorICAgIAorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3QvY2FsZW5kYXIvVGVzdENhc2UuamF2YSBiL3NyYy9jb20vaWJtL3Rlc3QvY2FsZW5kYXIvVGVzdENhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41MTZhNWFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGVzdC9jYWxlbmRhci9UZXN0Q2FzZS5qYXZhCkBAIC0wLDAgKzEsMjQ1IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXN0L2NhbGVuZGFyL0F0dGljL1Rlc3RDYXNlLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMTEvMTggMDA6MTc6NTggJCAKKyAqICRSZXZpc2lvbjogMS42ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRlc3QuY2FsZW5kYXI7CisKK2ltcG9ydCBjb20uaWJtLnRlc3QuKjsKK2ltcG9ydCBjb20uaWJtLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS51dGlsLkdyZWdvcmlhbkNhbGVuZGFyOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGNvbS5pYm0udXRpbC5TaW1wbGVUaW1lWm9uZTsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworCisvKioKKyAqIEEgcHNldWRvIDxjb2RlPkNhbGVuZGFyPC9jb2RlPiB0aGF0IGlzIHVzZWZ1bCBmb3IgdGVzdGluZworICogbmV3IGNhbGVuZGFycy4gIEEgPGNvZGU+VGVzdENhc2U8L2NvZGU+IG9iamVjdCBpcyB1c2VkIHRvIGhvbGQgdGhlCisgKiBmaWVsZCBhbmQgbWlsbGlzZWNvbmQgdmFsdWVzIHRoYXQgdGhlIGNhbGVuZGFyIHNob3VsZCBoYXZlIGF0IG9uZQorICogcGFydGljdWxhciBpbnN0YW50IGluIHRpbWUuICBUaGUgYXBwbHlGaWVsZHMgYW5kIGFwcGx5VGltZQorICogbWV0aG9kcyBhcmUgdXNlZCB0byBhcHBseSB0aGVzZSBzZXR0aW5ncyB0byB0aGUgY2FsZW5kYXIgb2JqZWN0IGJlaW5nCisgKiB0ZXN0ZWQsIGFuZCB0aGUgZXF1YWxzIGFuZCBmaWVsZHNFcXVhbCBtZXRob2RzIGFyZSB1c2VkIHRvIGVuc3VyZQorICogdGhhdCB0aGUgY2FsZW5kYXIgaGFzIGVuZGVkIHVwIGluIHRoZSByaWdodCBzdGF0ZS4KKyAqLworcHVibGljIGNsYXNzIFRlc3RDYXNlIHsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gUHNldWRvLUNhbGVuZGFyIGZpZWxkcyBhbmQgbWV0aG9kcworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBwcm90ZWN0ZWQgaW50W10gZmllbGRzID0gbmV3IGludFszMl07CisgICAgcHJvdGVjdGVkIGJvb2xlYW5bXSBpc1NldCA9IG5ldyBib29sZWFuWzMyXTsKKyAgICBwcm90ZWN0ZWQgbG9uZyB0aW1lOworCisgICAgcHJvdGVjdGVkIHZvaWQgc2V0KGludCBmaWVsZCwgaW50IHZhbHVlKSB7CisgICAgICAgIGZpZWxkc1tmaWVsZF0gPSB2YWx1ZTsKKyAgICAgICAgaXNTZXRbZmllbGRdID0gdHJ1ZTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgaW50IGdldChpbnQgZmllbGQpIHsKKyAgICAgICAgcmV0dXJuIGZpZWxkc1tmaWVsZF07CisgICAgfQorCisgICAgcHJvdGVjdGVkIGJvb2xlYW4gaXNTZXQoaW50IGZpZWxkKSB7CisgICAgICAgIHJldHVybiBpc1NldFtmaWVsZF07CisgICAgfQorCisgICAgcHJvdGVjdGVkIHZvaWQgc2V0VGltZShEYXRlIGQpIHsKKyAgICAgICAgdGltZSA9IGQuZ2V0VGltZSgpOworICAgIH0KKworICAgIHB1YmxpYyBEYXRlIGdldFRpbWUoKSB7CisgICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aW1lKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBTdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB0ZXN0IGNhc2UncyB0aW1lLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiBkb3dUb1N0cmluZyhnZXQoQ2FsZW5kYXIuREFZX09GX1dFRUspKSArCisgICAgICAgICAgICBnZXQoQ2FsZW5kYXIuWUVBUikgKyAiLyIgKyAoZ2V0KENhbGVuZGFyLk1PTlRIKSsxKSArICIvIiArCisgICAgICAgICAgICBnZXQoQ2FsZW5kYXIuREFURSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nW10gRE9XX05BTUVTID0geworICAgICAgICAiU3VuIiwgIk1vbiIsICJUdWUiLCAiV2VkIiwgIlRodSIsICJGcmkiLCAiU2F0IgorICAgIH07CisKKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBkb3dUb1N0cmluZyhpbnQgZG93KSB7CisgICAgICAgIC0tZG93OworICAgICAgICByZXR1cm4gKGRvdyA8IDAgfHwgZG93ID4gNikgPworICAgICAgICAgICAgKCI8RE9XICIgKyBkb3cgKyAiPiIpIDogRE9XX05BTUVTW2Rvd107CisgICAgfQorCisgICAgLyoqCisgICAgICogSW5pdGlhbGl6ZSBhIFRlc3RDYXNlIG9iamVjdCB1c2luZyBhIGp1bGlhbiBkYXkgbnVtYmVyIGFuZAorICAgICAqIHRoZSBjb3JyZXNwb25kaW5nIGZpZWxkcyBmb3IgdGhlIGNhbGVuZGFyIGJlaW5nIHRlc3RlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBlcmEgICAgICAgVGhlIEVSQSBmaWVsZCBvZiB0ZXN0ZWQgY2FsZW5kYXIgb24gdGhlIGdpdmVuIGp1bGlhbiBkYXkKKyAgICAgKiBAcGFyYW0geWVhciAgICAgIFRoZSBZRUFSIGZpZWxkIG9mIHRlc3RlZCBjYWxlbmRhciBvbiB0aGUgZ2l2ZW4ganVsaWFuIGRheQorICAgICAqIEBwYXJhbSBtb250aCAgICAgVGhlIE1PTlRIICgxLWJhc2VkKSBmaWVsZCBvZiB0ZXN0ZWQgY2FsZW5kYXIgb24gdGhlIGdpdmVuIGp1bGlhbiBkYXkKKyAgICAgKiBAcGFyYW0gZGF5ICAgICAgIFRoZSBEQVlfT0ZfTU9OVEggZmllbGQgb2YgdGVzdGVkIGNhbGVuZGFyIG9uIHRoZSBnaXZlbiBqdWxpYW4gZGF5CisgICAgICogQHBhcmFtIGRheU9mV2VlayBUaGUgREFZX09GX1dFRUsgZmllbGQgb2YgdGVzdGVkIGNhbGVuZGFyIG9uIHRoZSBnaXZlbiBqdWxpYW4gZGF5CisgICAgICogQHBhcmFtIGhvdXIgICAgICBUaGUgSE9VUiBmaWVsZCBvZiB0ZXN0ZWQgY2FsZW5kYXIgb24gdGhlIGdpdmVuIGp1bGlhbiBkYXkKKyAgICAgKiBAcGFyYW0gbWluICAgICAgIFRoZSBNSU5VVEUgZmllbGQgb2YgdGVzdGVkIGNhbGVuZGFyIG9uIHRoZSBnaXZlbiBqdWxpYW4gZGF5CisgICAgICogQHBhcmFtIHNlYyAgICAgICBUaGUgU0VDT05EIGZpZWxkIG9mIHRlc3RlZCBjYWxlbmRhciBvbiB0aGUgZ2l2ZW4ganVsaWFuIGRheQorICAgICAqLworICAgIHB1YmxpYyBUZXN0Q2FzZShkb3VibGUganVsaWFuLAorICAgICAgICAgICAgICAgICAgICBpbnQgZXJhLCBpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LAorICAgICAgICAgICAgICAgICAgICBpbnQgZGF5T2ZXZWVrLAorICAgICAgICAgICAgICAgICAgICBpbnQgaG91ciwgaW50IG1pbiwgaW50IHNlYykKKyAgICB7CisgICAgICAgIHNldFRpbWUobmV3IERhdGUoSlVMSUFOX0VQT0NIICsgKGxvbmcpKE9ORV9EQVkgKiBqdWxpYW4pKSk7CisgICAgICAgIAorICAgICAgICBzZXQoQ2FsZW5kYXIuRVJBLCBlcmEpOworICAgICAgICBzZXQoQ2FsZW5kYXIuWUVBUiwgeWVhcik7CisgICAgICAgIHNldChDYWxlbmRhci5NT05USCwgbW9udGggLSAxKTsKKyAgICAgICAgc2V0KENhbGVuZGFyLkRBVEUsIGRheSk7CisgICAgICAgIHNldChDYWxlbmRhci5EQVlfT0ZfV0VFSywgZGF5T2ZXZWVrKTsKKyAgICAgICAgc2V0KENhbGVuZGFyLkhPVVIsIGhvdXIpOworICAgICAgICBzZXQoQ2FsZW5kYXIuTUlOVVRFLCBtaW4pOworICAgICAgICBzZXQoQ2FsZW5kYXIuU0VDT05ELCBzZWMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEluaXRpYWxpemUgYSBUZXN0Q2FzZSBvYmplY3QgdXNpbmcgYSBHcmVnb3JpYW4geWVhci9tb250aC9kYXkgYW5kCisgICAgICogdGhlIGNvcnJlc3BvbmRpbmcgZmllbGRzIGZvciB0aGUgY2FsZW5kYXIgYmVpbmcgdGVzdGVkLgorICAgICAqCisgICAgICogQHBhcmFtIGdyZWdZZWFyICBUaGUgR3JlZ29yaWFuIHllYXIgb2YgdGhlIGRhdGUgdG8gYmUgdGVzdGVkCisgICAgICogQHBhcmFtIGdyZWdNb250aCBUaGUgR3JlZ29yaWFuIG1vbnRoIG9mIHRoZSBkYXRlIHRvIGJlIHRlc3RlZAorICAgICAqIEBwYXJhbSBncmVnRGF5ICAgVGhlIEdyZWdvcmlhbiBkYXkgb2YgdGhlIG1vbnRoIG9mIHRoZSBkYXRlIHRvIGJlIHRlc3RlZAorICAgICAqCisgICAgICogQHBhcmFtIGVyYSAgICAgICBUaGUgRVJBIGZpZWxkIG9mIHRlc3RlZCBjYWxlbmRhciBvbiB0aGUgZ2l2ZW4gZ3JlZ29yaWFuIGRhdGUKKyAgICAgKiBAcGFyYW0geWVhciAgICAgIFRoZSBZRUFSIGZpZWxkIG9mIHRlc3RlZCBjYWxlbmRhciBvbiB0aGUgZ2l2ZW4gZ3JlZ29yaWFuIGRhdGUKKyAgICAgKiBAcGFyYW0gbW9udGggICAgIFRoZSBNT05USCAoMC1iYXNlZCkgZmllbGQgb2YgdGVzdGVkIGNhbGVuZGFyIG9uIHRoZSBnaXZlbiBncmVnb3JpYW4gZGF0ZQorICAgICAqIEBwYXJhbSBkYXkgICAgICAgVGhlIERBWV9PRl9NT05USCBmaWVsZCBvZiB0ZXN0ZWQgY2FsZW5kYXIgb24gdGhlIGdpdmVuIGdyZWdvcmlhbiBkYXRlCisgICAgICogQHBhcmFtIGRheU9mV2VlayBUaGUgREFZX09GX1dFRUsgZmllbGQgb2YgdGVzdGVkIGNhbGVuZGFyIG9uIHRoZSBnaXZlbiBncmVnb3JpYW4gZGF0ZQorICAgICAqIEBwYXJhbSBob3VyICAgICAgVGhlIEhPVVIgZmllbGQgb2YgdGVzdGVkIGNhbGVuZGFyIG9uIHRoZSBnaXZlbiBncmVnb3JpYW4gZGF0ZQorICAgICAqIEBwYXJhbSBtaW4gICAgICAgVGhlIE1JTlVURSBmaWVsZCBvZiB0ZXN0ZWQgY2FsZW5kYXIgb24gdGhlIGdpdmVuIGdyZWdvcmlhbiBkYXRlCisgICAgICogQHBhcmFtIHNlYyAgICAgICBUaGUgU0VDT05EIGZpZWxkIG9mIHRlc3RlZCBjYWxlbmRhciBvbiB0aGUgZ2l2ZW4gZ3JlZ29yaWFuIGRhdGUKKyAgICAgKi8KKyAgICBwdWJsaWMgVGVzdENhc2UoaW50IGdyZWdZZWFyLCBpbnQgZ3JlZ01vbnRoLCBpbnQgZ3JlZ0RheSwKKyAgICAgICAgICAgICAgICAgICAgaW50IGVyYSwgaW50IHllYXIsIGludCBtb250aCwgaW50IGRheSwKKyAgICAgICAgICAgICAgICAgICAgaW50IGRheU9mV2VlaywKKyAgICAgICAgICAgICAgICAgICAgaW50IGhvdXIsIGludCBtaW4sIGludCBzZWMpCisgICAgeworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBncmVnID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKFVUQywgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgICAgIGdyZWcuY2xlYXIoKTsKKyAgICAgICAgZ3JlZy5zZXQoZ3JlZ1llYXIsIGdyZWdNb250aC0xLCBncmVnRGF5KTsKKyAgICAgICAgc2V0VGltZShncmVnLmdldFRpbWUoKSk7CisgICAgICAgIAorICAgICAgICBzZXQoQ2FsZW5kYXIuRVJBLCBlcmEpOworICAgICAgICBzZXQoQ2FsZW5kYXIuWUVBUiwgeWVhcik7CisgICAgICAgIHNldChDYWxlbmRhci5NT05USCwgbW9udGggLSAxKTsKKyAgICAgICAgc2V0KENhbGVuZGFyLkRBVEUsIGRheSk7CisgICAgICAgIHNldChDYWxlbmRhci5EQVlfT0ZfV0VFSywgZGF5T2ZXZWVrKTsKKyAgICAgICAgc2V0KENhbGVuZGFyLkhPVVIsIGhvdXIpOworICAgICAgICBzZXQoQ2FsZW5kYXIuTUlOVVRFLCBtaW4pOworICAgICAgICBzZXQoQ2FsZW5kYXIuU0VDT05ELCBzZWMpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBGb3Igc3ViY2xhc3Nlcy4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgVGVzdENhc2UoKSB7fQorCisgICAgLyoqCisgICAgICogQXBwbHkgdGhpcyB0ZXN0IGNhc2UncyBmaWVsZCB2YWx1ZXMgdG8gYW5vdGhlciBjYWxlbmRhcgorICAgICAqIGJ5IGNhbGxpbmcgaXRzIHNldCBtZXRob2QgZm9yIGVhY2ggZmllbGQuICBUaGlzIGlzIHVzZWZ1bCBpbiBjb21iaW5hdGlvbgorICAgICAqIHdpdGggdGhlIGVxdWFsIG1ldGhvZC4KKyAgICAgKgorICAgICAqIEBzZWUgI2VxdWFsCisgICAgICovCisgICAgcHVibGljIHZvaWQgYXBwbHlGaWVsZHMoQ2FsZW5kYXIgYykgeworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBjLmdldEZpZWxkQ291bnQoKTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoaXNTZXQoaSkpIHsKKyAgICAgICAgICAgICAgICBjLnNldChpLCBnZXQoaSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEFwcGx5IHRoaXMgdGVzdCBjYXNlJ3MgdGltZSBpbiBtaWxsaXNlY29uZHMgdG8gYW5vdGhlciBjYWxlbmRhcgorICAgICAqIGJ5IGNhbGxpbmcgaXRzIHNldFRpbWUgbWV0aG9kLiAgVGhpcyBpcyB1c2VmdWwgaW4gY29tYmluYXRpb24KKyAgICAgKiB3aXRoIGZpZWxkc0VxdWFsCisgICAgICoKKyAgICAgKiBAc2VlICNmaWVsZHNFcXVhbAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFwcGx5VGltZShDYWxlbmRhciBjKSB7CisgICAgICAgIGMuc2V0VGltZShuZXcgRGF0ZSh0aW1lKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGZpZWxkcyBvZiB0aGlzIGNhbGVuZGFyCisgICAgICogYXJlIHRoZSBzYW1lIGFzIHRoYXQgb2YgdGhlIG90aGVyIGNhbGVuZGFyLiAgVGhpcyBtZXRob2QgaXMgdXNlZnVsCisgICAgICogZm9yIGRldGVybWluaW5nIHdoZXRoZXIgdGhlIG90aGVyIGNhbGVuZGFyJ3MgY29tcHV0ZUZpZWxkcyBtZXRob2QKKyAgICAgKiB3b3JrcyBwcm9wZXJseS4gIEZvciBleGFtcGxlOgorICAgICAqIDxwcmU+CisgICAgICogICAgQ2FsZW5kYXIgdGVzdENhbGVuZGFyID0gLi4uCisgICAgICogICAgVGVzdENhc2UgY2FzZSA9IC4uLgorICAgICAqICAgIGNhc2UuYXBwbHlUaW1lKHRlc3RDYWxlbmRhcik7CisgICAgICogICAgaWYgKCFjYXNlLmZpZWxkc0VxdWFsKHRlc3RDYWxlbmRhcikpIHsKKyAgICAgKiAgICAgICAgLy8gRXJyb3IhCisgICAgICogICAgfQorICAgICAqIDwvcHJlPgorICAgICAqIAorICAgICAqIEBzZWUgI2FwcGx5VGltZQorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGZpZWxkc0VxdWFsKENhbGVuZGFyIGMsIFRlc3RMb2cgbG9nKSB7CisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGMuZ2V0RmllbGRDb3VudCgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChpc1NldChpKSAmJiBnZXQoaSkgIT0gYy5nZXQoaSkpIHsKKyAgICAgICAgICAgICAgICBsb2cuZXJybG4oIkZhaWw6ICIgKyBDYWxlbmRhclRlc3QuZmllbGROYW1lKGkpICsgIiA9ICIgKyBjLmdldChpKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICIsIGV4cGVjdGVkICIgKyBnZXQoaSkpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGo9MDsgajxjLmdldEZpZWxkQ291bnQoKTsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc1NldChqKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldChqKSA9PSBjLmdldChqKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5lcnJsbigiIE9LOiAiICsgQ2FsZW5kYXJUZXN0LmZpZWxkTmFtZShqKSArICIgPSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXQoaikpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2cuZXJybG4oIiBGYWlsOiAiICsgQ2FsZW5kYXJUZXN0LmZpZWxkTmFtZShqKSArICIgPSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5nZXQoaikgKyAiLCBleHBlY3RlZCAiICsgZ2V0KGopKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmUgd2hldGhlciB0aW1lIGluIG1pbGxpc2Vjb25kcyBvZiB0aGlzIGNhbGVuZGFyCisgICAgICogaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgb3RoZXIgY2FsZW5kYXIuICBUaGlzIG1ldGhvZCBpcyB1c2VmdWwKKyAgICAgKiBmb3IgZGV0ZXJtaW5pbmcgd2hldGhlciB0aGUgb3RoZXIgY2FsZW5kYXIncyBjb21wdXRlVGltZSBtZXRob2QKKyAgICAgKiB3b3JrcyBwcm9wZXJseS4gIEZvciBleGFtcGxlOgorICAgICAqIDxwcmU+CisgICAgICogICAgQ2FsZW5kYXIgdGVzdENhbGVuZGFyID0gLi4uCisgICAgICogICAgVGVzdENhc2UgY2FzZSA9IC4uLgorICAgICAqICAgIGNhc2UuYXBwbHlGaWVsZHModGVzdENhbGVuZGFyKTsKKyAgICAgKiAgICBpZiAoIWNhc2UuZXF1YWxzKHRlc3RDYWxlbmRhcikpIHsKKyAgICAgKiAgICAgICAgLy8gRXJyb3IhCisgICAgICogICAgfQorICAgICAqIDwvcHJlPgorICAgICAqIAorICAgICAqIEBzZWUgI2FwcGx5RmllbGRzCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvYmopIHsKKyAgICAgICAgcmV0dXJuIHRpbWUgPT0gKChDYWxlbmRhcilvYmopLmdldFRpbWUoKS5nZXRUaW1lKCk7CisgICAgfQorICAgIAorICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50ICBPTkVfU0VDT05EID0gMTAwMDsKKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCAgT05FX01JTlVURSA9IDYwKk9ORV9TRUNPTkQ7CisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgIE9ORV9IT1VSICAgPSA2MCpPTkVfTUlOVVRFOworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgbG9uZyBPTkVfREFZICAgID0gMjQqT05FX0hPVVI7CisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBsb25nIEpVTElBTl9FUE9DSCA9IC0yMTA4NjY3NjAwMDAwMDBMOyAgIC8vIDEvMS80NzEzIEJDIDEyOjAwCisKKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIFNpbXBsZVRpbWVab25lIFVUQyA9IG5ldyBTaW1wbGVUaW1lWm9uZSgwLCAiR01UIik7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXN0L2NhbGVuZGFyL3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL3Rlc3QvY2FsZW5kYXIvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE0ZjBkNTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXN0L2NhbGVuZGFyL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPCEtLSAgQ29weXJpZ2h0IChDKSAyMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorICBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGVzdC9jYWxlbmRhci9BdHRpYy9wYWNrYWdlLmh0bWwsdiAkCisgICRSZXZpc2lvbjogMS4xICQKKyAgJERhdGU6IDIwMDAvMDMvMTUgMjE6MzU6NDkgJAorLS0+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CitUZXN0cyBmb3IgdGhlIGNhbGVuZGFyIGNsYXNzZXMuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGVzdC9jb21wcmVzc2lvbi9EZWNvbXByZXNzaW9uVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vdGVzdC9jb21wcmVzc2lvbi9EZWNvbXByZXNzaW9uVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE0N2YyMTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXN0L2NvbXByZXNzaW9uL0RlY29tcHJlc3Npb25UZXN0LmphdmEKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3Rlc3QvY29tcHJlc3Npb24vQXR0aWMvRGVjb21wcmVzc2lvblRlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwMzo0Nzo0NSAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udGVzdC5jb21wcmVzc2lvbjsKKworaW1wb3J0IGNvbS5pYm0udGV4dC5Vbmljb2RlQ29tcHJlc3NvcjsKK2ltcG9ydCBjb20uaWJtLnRleHQuVW5pY29kZURlY29tcHJlc3NvcjsKK2ltcG9ydCBjb20uaWJtLnRlc3QuVGVzdEZtd2s7CisKK3B1YmxpYyBjbGFzcyBEZWNvbXByZXNzaW9uVGVzdCBleHRlbmRzIFRlc3RGbXdrIHsKKwlwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJbmV3IERlY29tcHJlc3Npb25UZXN0KCkucnVuKGFyZ3MpOworCX0KKworICAgIC8qKiBQcmludCBvdXQgYSBzZWdtZW50IG9mIGEgY2hhcmFjdGVyIGFycmF5LCBpZiBpbiB2ZXJib3NlIG1vZGUgKi8KKyAgICBwcml2YXRlIHZvaWQgbG9nKGNoYXIgW10gY2hhcnMsIGludCBzdGFydCwgaW50IGNvdW50KSB7CisgICAgICAgIGxvZygifCIpOworICAgICAgICBmb3IoaW50IGkgPSBzdGFydDsgaSA8IHN0YXJ0ICsgY291bnQ7ICsraSkgeworICAgICAgICAgICAgbG9nKFN0cmluZy52YWx1ZU9mKGNoYXJzW2ldKSk7CisgICAgICAgIH0KKyAgICAgICAgbG9nKCJ8Iik7CisgICAgfQorCisgICAgLyoqIFByaW50IG91dCBhIHNlZ21lbnQgb2YgYSBjaGFyYWN0ZXIgYXJyYXksIGZvbGxvd2VkIGJ5IGEgbmV3bGluZSAqLworICAgIHByaXZhdGUgdm9pZCBsb2dsbihjaGFyIFtdIGNoYXJzLCBpbnQgc3RhcnQsIGludCBjb3VudCkKKyAgICB7CisgICAgICAgIGxvZyhjaGFycywgc3RhcnQsIGNvdW50KTsKKyAgICAgICAgbG9nbG4oIiIpOworICAgIH0KKworICAgIC8qKiBEZWNvbXByZXNzIHRoZSB0d28gc2VnbWVudHMgKi8KKyAgICBwcml2YXRlIFN0cmluZyBkZWNvbXByZXNzVGVzdChieXRlIFtdIHNlZ21lbnQxLCBieXRlIFtdIHNlZ21lbnQyKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBzID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBVbmljb2RlRGVjb21wcmVzc29yIG15RGVjb21wcmVzc29yID0gbmV3IFVuaWNvZGVEZWNvbXByZXNzb3IoKTsKKworICAgICAgICBpbnQgW10gYnl0ZXNSZWFkID0gbmV3IGludFsxXTsKKyAgICAgICAgY2hhciBbXSBjaGFyQnVmZmVyID0gbmV3IGNoYXIgWzIqKHNlZ21lbnQxLmxlbmd0aCArIHNlZ21lbnQyLmxlbmd0aCldOworICAgICAgICBpbnQgY291bnQxID0gMCwgY291bnQyID0gMDsKKworICAgICAgICBjb3VudDEgPSBteURlY29tcHJlc3Nvci5kZWNvbXByZXNzKHNlZ21lbnQxLCAwLCBzZWdtZW50MS5sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNSZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJCdWZmZXIsIDAsIGNoYXJCdWZmZXIubGVuZ3RoKTsKKyAgICAgICAgCisgICAgICAgIGxvZ2xuKCJTZWdtZW50IDEgKCIgKyBzZWdtZW50MS5sZW5ndGggKyAiIGJ5dGVzKSAiICsKKyAgICAgICAgICAgICAgICAiZGVjb21wcmVzc2VkIGludG8gIiArIGNvdW50MSAgKyAiIGNoYXJzIik7CisgICAgICAgIGxvZ2xuKCJCeXRlcyBjb25zdW1lZDogIiArIGJ5dGVzUmVhZFswXSk7CisKKyAgICAgICAgbG9nbG4oIkdvdCBjaGFyczogIik7CisgICAgICAgIGxvZ2xuKGNoYXJCdWZmZXIsIDAsIGNvdW50MSk7CisgICAgICAgIHMuYXBwZW5kKGNoYXJCdWZmZXIsIDAsIGNvdW50MSk7CisKKyAgICAgICAgY291bnQyID0gbXlEZWNvbXByZXNzb3IuZGVjb21wcmVzcyhzZWdtZW50MiwgMCwgc2VnbWVudDIubGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVzUmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyQnVmZmVyLCBjb3VudDEsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJCdWZmZXIubGVuZ3RoKTsKKyAgICAgICAgCisgICAgICAgIGxvZ2xuKCJTZWdtZW50IDIgKCIgKyBzZWdtZW50Mi5sZW5ndGggKyAiIGJ5dGVzKSAiICsKKyAgICAgICAgICAgICAgICAiZGVjb21wcmVzc2VkIGludG8gIiArIGNvdW50MiAgKyAiIGNoYXJzIik7CisgICAgICAgIGxvZ2xuKCJCeXRlcyBjb25zdW1lZDogIiArIGJ5dGVzUmVhZFswXSk7CisKKyAgICAgICAgbG9nbG4oIkdvdCBjaGFyczogIik7CisgICAgICAgIGxvZ2xuKGNoYXJCdWZmZXIsIGNvdW50MSwgY291bnQyKTsKKyAgICAgICAgCisgICAgICAgIHMuYXBwZW5kKGNoYXJCdWZmZXIsIGNvdW50MSwgY291bnQyKTsKKworICAgICAgICBsb2dsbigiUmVzdWx0OiAiKTsKKyAgICAgICAgbG9nbG4oY2hhckJ1ZmZlciwgMCwgY291bnQxICsgY291bnQyKTsKKyAgICAgICAgbG9nbG4oIj09PT09PT09PT09PT09PT09PT09Iik7CisKKyAgICAgICAgcmV0dXJuIHMudG9TdHJpbmcoKTsKKyAgICB9CisKKworICAgIHB1YmxpYyB2b2lkIHRlc3REZWNvbXByZXNzaW9uKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyByZXN1bHQ7CisKKyAgICAgICAgLy8gY29tcHJlc3NlZCBzZWdtZW50IGJyZWFraW5nIG9uIGEgZGVmaW5lIHdpbmRvdyBzZXF1ZW5jZQorICAgICAgICAvKiAgICAgICAgICAgICAgICAgICBCICAgICBvICAgICBvICAgICB0ICAgICBoICAgICBTRDEgICovCisgICAgICAgIGJ5dGUgW10gc2VnbWVudDEgPSB7IDB4NDIsIDB4NmYsIDB4NmYsIDB4NzQsIDB4NjgsIDB4MTkgfTsKKworICAgICAgICAvLyBjb250aW51YXRpb24KKyAgICAgICAgLyogICAgICAgICAgICAgICAgICAgSURYICAgLCAgICAgICAgICAgUyAgICAgLiAgICAgICAgICAqLworICAgICAgICBieXRlIFtdIHNlZ21lbnQyID0geyAweDAxLCAweDJjLCAweDIwLCAweDUzLCAweDJlIH07CisgICAgICAgIAorICAgICAgICByZXN1bHQgPSBkZWNvbXByZXNzVGVzdChzZWdtZW50MSwgc2VnbWVudDIpOworICAgICAgICBpZighIHJlc3VsdC5lcXVhbHMoIkJvb3RoLCBTLiIpKSB7CisgICAgICAgIAllcnJsbigiRGVjb21wcmVzc2lvbiB0ZXN0IGZhaWxlZCIpOworICAgICAgICAJcmV0dXJuOworCQl9CisKKyAgICAgICAgLy8gY29tcHJlc3NlZCBzZWdtZW50IGJyZWFraW5nIG9uIGEgcXVvdGUgdW5pY29kZSBzZXF1ZW5jZQorICAgICAgICAvKiAgICAgICAgICAgICAgICAgICBCICAgICBvICAgICBvICAgICB0ICAgICBTUVUgICAgICAgICovCisgICAgICAgIGJ5dGUgW10gc2VnbWVudDMgPSB7IDB4NDIsIDB4NmYsIDB4NmYsIDB4NzQsIDB4MGUsIDB4MDAgfTsKKworICAgICAgICAvLyBjb250aW51YXRpb24KKyAgICAgICAgLyogICAgICAgICAgICAgICAgICAgaCAgICAgLCAgICAgICAgICAgUyAgICAgLiAgICAgICAgICAqLworICAgICAgICBieXRlIFtdIHNlZ21lbnQ0ID0geyAweDY4LCAweDJjLCAweDIwLCAweDUzLCAweDJlIH07CisKKyAgICAgICAgcmVzdWx0ID0gZGVjb21wcmVzc1Rlc3Qoc2VnbWVudDMsIHNlZ21lbnQ0KTsKKyAgICAgICAgaWYoISByZXN1bHQuZXF1YWxzKCJCb290aCwgUy4iKSkgeworICAgICAgICAJZXJybG4oIkRlY29tcHJlc3Npb24gdGVzdCBmYWlsZWQiKTsKKyAgICAgICAgCXJldHVybjsKKwkJfQorCisKKyAgICAgICAgLy8gY29tcHJlc3NlZCBzZWdtZW50IGJyZWFraW5nIG9uIGEgcXVvdGUgdW5pY29kZSBzZXF1ZW5jZQorICAgICAgICAvKiAgICAgICAgICAgICAgICAgICBTQ1UgICBVUVUgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgYnl0ZSBbXSBzZWdtZW50NSA9IHsgMHgwZiwgKGJ5dGUpMHhmMCwgMHgwMCB9OworCisgICAgICAgIC8vIGNvbnRpbnVhdGlvbgorICAgICAgICAvKiAgICAgICAgICAgICAgICAgICBCICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgYnl0ZSBbXSBzZWdtZW50NiA9IHsgMHg0MiB9OworCisgICAgICAgIHJlc3VsdCA9IGRlY29tcHJlc3NUZXN0KHNlZ21lbnQ1LCBzZWdtZW50Nik7CisgICAgICAgIGlmKCEgcmVzdWx0LmVxdWFscygiQiIpKSB7CisgICAgICAgIAllcnJsbigiRGVjb21wcmVzc2lvbiB0ZXN0IGZhaWxlZCIpOworICAgICAgICAJcmV0dXJuOworCQl9CisgICAgfQorCit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGVzdC9jb21wcmVzc2lvbi9FeGhhdXN0aXZlVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vdGVzdC9jb21wcmVzc2lvbi9FeGhhdXN0aXZlVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE1OTZmNDIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXN0L2NvbXByZXNzaW9uL0V4aGF1c3RpdmVUZXN0LmphdmEKQEAgLTAsMCArMSw1MjkgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3Rlc3QvY29tcHJlc3Npb24vQXR0aWMvRXhoYXVzdGl2ZVRlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8xMC8wNiAyMzoxNTo1MCAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udGVzdC5jb21wcmVzc2lvbjsKKworaW1wb3J0IGNvbS5pYm0udGV4dC5Vbmljb2RlQ29tcHJlc3NvcjsKK2ltcG9ydCBjb20uaWJtLnRleHQuVW5pY29kZURlY29tcHJlc3NvcjsKK2ltcG9ydCBqYXZhLnV0aWwuUmFuZG9tOworaW1wb3J0IGNvbS5pYm0udGVzdC5UZXN0Rm13azsKKworcHVibGljIGNsYXNzIEV4aGF1c3RpdmVUZXN0IGV4dGVuZHMgVGVzdEZtd2sgeworCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdzW10pIHRocm93cyBFeGNlcHRpb24geworCQluZXcgRXhoYXVzdGl2ZVRlc3QoKS5ydW4oYXJncyk7CisJfQorCisgICAgLyoqIFRlc3Qgc2ltcGxlIGNvbXByZXNzL2RlY29tcHJlc3MgQVBJLCByZXR1cm5pbmcgIyBvZiBlcnJvcnMgKi8KKwlwdWJsaWMgdm9pZCB0ZXN0U2ltcGxlKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBmVGVzdENhc2VzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBzaW1wbGVUZXN0KGZUZXN0Q2FzZXNbaV0pOworICAgICAgICB9CisJfQorICAgIHByaXZhdGUgdm9pZCBzaW1wbGVUZXN0KFN0cmluZyBzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgYnl0ZSBbXSBjb21wcmVzc2VkID0gVW5pY29kZUNvbXByZXNzb3IuY29tcHJlc3Mocyk7CisgICAgICAgIFN0cmluZyByZXMgPSBVbmljb2RlRGVjb21wcmVzc29yLmRlY29tcHJlc3MoY29tcHJlc3NlZCk7CisgICAgICAgIGlmIChsb2dEaWZmcyhzLnRvQ2hhckFycmF5KCksIHMubGVuZ3RoKCksIAorICAgICAgICAgICAgICAgIHJlcy50b0NoYXJBcnJheSgpLCByZXMubGVuZ3RoKCkpID09IGZhbHNlKSB7CisgICAgICAgICAgICBsb2dsbihzLmxlbmd0aCgpICsgIiBjaGFycyA9PT0+ICIgCisgICAgICAgICAgICAgICAgICAgICsgY29tcHJlc3NlZC5sZW5ndGggKyAiIGJ5dGVzID09PT4gIiAKKyAgICAgICAgICAgICAgICAgICAgKyByZXMubGVuZ3RoKCkgKyAiIGNoYXJzIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2dsbigiQ29tcHJlc3NlZDoiKTsKKyAgICAgICAgICAgIHByaW50Qnl0ZXMoY29tcHJlc3NlZCwgY29tcHJlc3NlZC5sZW5ndGgpOworICAgICAgICAgICAgZXJybG4oInRlc3RTaW1wbGUgZGlkIG5vdCBjb21wcmVzcyBjb3JyZWN0bHkiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKiBUZXN0IGl0ZXJhdGl2ZSBjb21wcmVzcy9kZWNvbXByZXNzIEFQSSwgcmV0dXJuaW5nICMgb2YgZXJyb3JzICovCisgICAgcHVibGljIHZvaWQgdGVzdEl0ZXJhdGl2ZSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgZlRlc3RDYXNlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgbXlUZXN0KGZUZXN0Q2FzZXNbaV0udG9DaGFyQXJyYXkoKSwgZlRlc3RDYXNlc1tpXS5sZW5ndGgoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcHJpdmF0ZSB2b2lkIG15VGVzdChjaGFyW10gY2hhcnMsIGludCBsZW4pIHsKKyAgICAgICAgVW5pY29kZUNvbXByZXNzb3IgbXlDb21wcmVzc29yID0gbmV3IFVuaWNvZGVDb21wcmVzc29yKCk7CisgICAgICAgIFVuaWNvZGVEZWNvbXByZXNzb3IgbXlEZWNvbXByZXNzb3IgPSBuZXcgVW5pY29kZURlY29tcHJlc3NvcigpOworICAgICAgICAKKyAgICAgICAgLy8gdmFyaWFibGVzIGZvciBteSBjb21wcmVzc29yCisgICAgICAgIGludCBteUJ5dGVDb3VudCA9IDA7CisgICAgICAgIGludCBteUNoYXJDb3VudCA9IDA7CisgICAgICAgIGludCBteUNvbXByZXNzZWRTaXplID0gTWF0aC5tYXgoNTEyLCAzKmxlbik7CisgICAgICAgIGJ5dGVbXSBteUNvbXByZXNzZWQgPSBuZXcgYnl0ZVtteUNvbXByZXNzZWRTaXplXTsKKyAgICAgICAgaW50IG15RGVjb21wcmVzc2VkU2l6ZSA9IE1hdGgubWF4KDIsIDIgKiBsZW4pOworICAgICAgICBjaGFyW10gbXlEZWNvbXByZXNzZWQgPSBuZXcgY2hhcltteURlY29tcHJlc3NlZFNpemVdOworICAgICAgICBpbnRbXSB1bmljaGFyc1JlYWQgPSBuZXcgaW50WzFdOworICAgICAgICBpbnRbXSBieXRlc1JlYWQgPSBuZXcgaW50WzFdOworICAgICAgICAKKyAgICAgICAgbXlCeXRlQ291bnQgPSBteUNvbXByZXNzb3IuY29tcHJlc3MoY2hhcnMsIDAsIGxlbiwgdW5pY2hhcnNSZWFkLAorICAgICAgICAgICAgICAgIG15Q29tcHJlc3NlZCwgMCwgbXlDb21wcmVzc2VkU2l6ZSk7CisKKyAgICAgICAgbXlDaGFyQ291bnQgPSBteURlY29tcHJlc3Nvci5kZWNvbXByZXNzKG15Q29tcHJlc3NlZCwgMCwgbXlCeXRlQ291bnQsCisgICAgICAgICAgICAgICAgYnl0ZXNSZWFkLCBteURlY29tcHJlc3NlZCwgMCwgbXlEZWNvbXByZXNzZWRTaXplKTsKKworICAgICAgICBpZiAobG9nRGlmZnMoY2hhcnMsIGxlbiwgbXlEZWNvbXByZXNzZWQsIG15Q2hhckNvdW50KSA9PSBmYWxzZSkgeworICAgICAgICAgICAgbG9nbG4obGVuICsgIiBjaGFycyA9PT0+ICIgCisgICAgICAgICAgICAgICAgICAgICsgbXlCeXRlQ291bnQgKyAiIGJ5dGVzID09PT4gIiAKKyAgICAgICAgICAgICAgICAgICAgKyBteUNoYXJDb3VudCArICIgY2hhcnMiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvZ2xuKCJDb21wcmVzc2VkOiIpOworICAgICAgICAgICAgcHJpbnRCeXRlcyhteUNvbXByZXNzZWQsIG15Qnl0ZUNvdW50KTsKKyAgICAgICAgICAgIGVycmxuKCJJdGVyYXRpdmUgdGVzdCBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKiBUZXN0IGl0ZXJhdGl2ZSBjb21wcmVzcy9kZWNvbXByZXNzIEFQSSAqLworICAgIHB1YmxpYyB2b2lkIHRlc3RNdWx0aXBhc3MoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IGZUZXN0Q2FzZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIG15TXVsdGlwYXNzVGVzdChmVGVzdENhc2VzW2ldLnRvQ2hhckFycmF5KCksIGZUZXN0Q2FzZXNbaV0ubGVuZ3RoKCkpOworICAgICAgICB9CisgICAgfQorICAgIHByaXZhdGUgdm9pZCBteU11bHRpcGFzc1Rlc3QoY2hhciBbXSBjaGFycywgaW50IGxlbikgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFVuaWNvZGVDb21wcmVzc29yIG15Q29tcHJlc3NvciA9IG5ldyBVbmljb2RlQ29tcHJlc3NvcigpOworICAgICAgICBVbmljb2RlRGVjb21wcmVzc29yIG15RGVjb21wcmVzc29yID0gbmV3IFVuaWNvZGVEZWNvbXByZXNzb3IoKTsKKyAgICAgICAgCisgICAgICAgIC8vIHZhcmlhYmxlcyBmb3IgbXkgY29tcHJlc3NvcgorICAgICAgICAKKyAgICAgICAgLy8gZm9yIGxvb3BpbmcKKyAgICAgICAgaW50IGJ5dGVCdWZmZXJTaXplID0gNDsvL01hdGgubWF4KDQsIGxlbiAvIDQpOworICAgICAgICBieXRlW10gYnl0ZUJ1ZmZlciA9IG5ldyBieXRlIFtieXRlQnVmZmVyU2l6ZV07CisgICAgICAgIC8vIHJlYWwgdGFyZ2V0CisgICAgICAgIGludCBjb21wcmVzc2VkU2l6ZSA9IE1hdGgubWF4KDUxMiwgMyAqIGxlbik7CisgICAgICAgIGJ5dGVbXSBjb21wcmVzc2VkID0gbmV3IGJ5dGVbY29tcHJlc3NlZFNpemVdOworCisgICAgICAgIC8vIGZvciBsb29waW5nCisgICAgICAgIGludCB1bmljaGFyQnVmZmVyU2l6ZSA9IDI7Ly9ieXRlQnVmZmVyU2l6ZTsKKyAgICAgICAgY2hhcltdIHVuaWNoYXJCdWZmZXIgPSBuZXcgY2hhclt1bmljaGFyQnVmZmVyU2l6ZV07CisgICAgICAgIC8vIHJlYWwgdGFyZ2V0CisgICAgICAgIGludCBkZWNvbXByZXNzZWRTaXplID0gTWF0aC5tYXgoMiwgMiAqIGxlbik7CisgICAgICAgIGNoYXJbXSBkZWNvbXByZXNzZWQgPSBuZXcgY2hhcltkZWNvbXByZXNzZWRTaXplXTsKKworICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gMDsKKyAgICAgICAgaW50IHVuaWNoYXJzV3JpdHRlbiA9IDA7CisKKyAgICAgICAgaW50W10gdW5pY2hhcnNSZWFkID0gbmV3IGludFsxXTsKKyAgICAgICAgaW50W10gYnl0ZXNSZWFkID0gbmV3IGludFsxXTsKKyAgICAgICAgCisgICAgICAgIGludCB0b3RhbENoYXJzQ29tcHJlc3NlZCA9IDA7CisgICAgICAgIGludCB0b3RhbEJ5dGVzV3JpdHRlbiA9IDA7CisKKyAgICAgICAgaW50IHRvdGFsQnl0ZXNEZWNvbXByZXNzZWQgID0gMDsKKyAgICAgICAgaW50IHRvdGFsQ2hhcnNXcml0dGVuID0gMDsKKworICAgICAgICBib29sZWFuIGVyciA9IGZhbHNlOworCisKKyAgICAgICAgLy8gcGVyZm9ybSB0aGUgY29tcHJlc3Npb24gaW4gYSBsb29wCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gZG8gdGhlIGNvbXByZXNzaW9uCisgICAgICAgICAgICBieXRlc1dyaXR0ZW4gPSBteUNvbXByZXNzb3IuY29tcHJlc3MoY2hhcnMsIHRvdGFsQ2hhcnNDb21wcmVzc2VkLCAKKyAgICAgICAgICAgICAgICAgICBsZW4sIHVuaWNoYXJzUmVhZCwgYnl0ZUJ1ZmZlciwgMCwgYnl0ZUJ1ZmZlclNpemUpOworCisgICAgICAgICAgICAvLyBjb3B5IHRoZSBjdXJyZW50IHNldCBvZiBieXRlcyBpbnRvIHRoZSB0YXJnZXQgYnVmZmVyCisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGJ5dGVCdWZmZXIsIDAsIGNvbXByZXNzZWQsIAorICAgICAgICAgICAgICAgICAgIHRvdGFsQnl0ZXNXcml0dGVuLCBieXRlc1dyaXR0ZW4pOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyB1cGRhdGUgdGhlIG5vLiBvZiBjaGFyYWN0ZXJzIGNvbXByZXNzZWQKKyAgICAgICAgICAgIHRvdGFsQ2hhcnNDb21wcmVzc2VkICs9IHVuaWNoYXJzUmVhZFswXTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBuby4gb2YgYnl0ZXMgd3JpdHRlbgorICAgICAgICAgICAgdG90YWxCeXRlc1dyaXR0ZW4gKz0gYnl0ZXNXcml0dGVuOworICAgICAgICAgICAgCisgICAgICAgICAgICAvKlN5c3RlbS5vdXQubG9nbG4oIkNvbXByZXNzaW9uIHBhc3MgY29tcGxldGUuICBDb21wcmVzc2VkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHVuaWNoYXJzUmVhZFswXSArICIgY2hhcnMgaW50byAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBieXRlc1dyaXR0ZW4gKyAiIGJ5dGVzLiIpOyovCisgICAgICAgIH0gd2hpbGUodG90YWxDaGFyc0NvbXByZXNzZWQgPCBsZW4pOworCisgICAgICAgIGlmICh0b3RhbENoYXJzQ29tcHJlc3NlZCAhPSBsZW4pIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogTnVtYmVyIG9mIGNoYXJhY3RlcnMgY29tcHJlc3NlZCgiCisgICAgICAgICAgICAgICAgICAgICsgdG90YWxDaGFyc0NvbXByZXNzZWQgKyAiKSAhPSBsZW4oIiArIGxlbiArICIpIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb2dsbigiTVA6ICIgKyBsZW4gKyAiIGNoYXJzID09PT4gIiArIHRvdGFsQnl0ZXNXcml0dGVuICsgIiBieXRlcy4iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gcGVyZm9ybSB0aGUgZGVjb21wcmVzc2lvbiBpbiBhIGxvb3AKKyAgICAgICAgZG8geworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBkbyB0aGUgZGVjb21wcmVzc2lvbgorICAgICAgICAgICAgdW5pY2hhcnNXcml0dGVuID0gbXlEZWNvbXByZXNzb3IuZGVjb21wcmVzcyhjb21wcmVzc2VkLCAKKyAgICAgICAgICAgICAgICAgICAgdG90YWxCeXRlc0RlY29tcHJlc3NlZCwgdG90YWxCeXRlc1dyaXR0ZW4sIAorICAgICAgICAgICAgICAgICAgICBieXRlc1JlYWQsIHVuaWNoYXJCdWZmZXIsIDAsIHVuaWNoYXJCdWZmZXJTaXplKTsKKworICAgICAgICAgICAgLy8gY29weSB0aGUgY3VycmVudCBzZXQgb2YgY2hhcnMgaW50byB0aGUgdGFyZ2V0IGJ1ZmZlcgorICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weSh1bmljaGFyQnVmZmVyLCAwLCBkZWNvbXByZXNzZWQsIAorICAgICAgICAgICAgICAgICAgICB0b3RhbENoYXJzV3JpdHRlbiwgdW5pY2hhcnNXcml0dGVuKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBuby4gb2YgYnl0ZXMgZGVjb21wcmVzc2VkCisgICAgICAgICAgICB0b3RhbEJ5dGVzRGVjb21wcmVzc2VkICs9IGJ5dGVzUmVhZFswXTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBuby4gb2YgY2hhcnMgd3JpdHRlbgorICAgICAgICAgICAgdG90YWxDaGFyc1dyaXR0ZW4gKz0gdW5pY2hhcnNXcml0dGVuOworICAgICAgICAgICAgCisgICAgICAgICAgICAvKlN5c3RlbS5vdXQubG9nbG4oIkRlY29tcHJlc3Npb24gcGFzcyBjb21wbGV0ZS4gIERlY29tcHJlc3NlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBieXRlc1JlYWRbMF0gKyAiIGJ5dGVzIGludG8gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgdW5pY2hhcnNXcml0dGVuICsgIiBjaGFycy4iKTsqLworICAgICAgICB9IHdoaWxlICh0b3RhbEJ5dGVzRGVjb21wcmVzc2VkIDwgdG90YWxCeXRlc1dyaXR0ZW4pOworCisgICAgICAgIGlmICh0b3RhbEJ5dGVzRGVjb21wcmVzc2VkICE9IHRvdGFsQnl0ZXNXcml0dGVuKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IE51bWJlciBvZiBieXRlcyBkZWNvbXByZXNzZWQoIiAKKyAgICAgICAgICAgICAgICAgICAgKyB0b3RhbEJ5dGVzRGVjb21wcmVzc2VkIAorICAgICAgICAgICAgICAgICAgICArICIpICE9IHRvdGFsQnl0ZXNXcml0dGVuKCIgCisgICAgICAgICAgICAgICAgICAgICsgdG90YWxCeXRlc1dyaXR0ZW4gKyAiKSIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9nbG4oIk1QOiAiICsgdG90YWxCeXRlc1dyaXR0ZW4KKyAgICAgICAgICAgICAgICAgICAgKyAiIGJ5dGVzID09PT4gIiArIHRvdGFsQ2hhcnNXcml0dGVuICsgIiBjaGFycy4iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGxvZ0RpZmZzKGNoYXJzLCBsZW4sIGRlY29tcHJlc3NlZCwgdG90YWxDaGFyc1dyaXR0ZW4pKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGJ1ZmZlciBjb250ZW50cyBpbmNvcnJlY3QiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKiBQcmludCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHR3byBjaGFyYWN0ZXIgYnVmZmVycyAqLworICAgIHByaXZhdGUgYm9vbGVhbiBsb2dEaWZmcyhjaGFyW10gczEsIGludCBzMWxlbiwgY2hhcltdIHMyLCBpbnQgczJsZW4pIHsKKyAgICAgICAgYm9vbGVhbiByZXN1bHQgID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICBpZihzMWxlbiAhPSBzMmxlbikgeworICAgICAgICAgICAgbG9nbG4oIj09PT09PT09PT09PT09PT09PT09Iik7CisgICAgICAgICAgICBsb2dsbigiTGVuZ3RoIGRvZXNuJ3QgbWF0Y2g6IGV4cGVjdGVkICIgKyBzMWxlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgZ290ICIgKyBzMmxlbik7CisgICAgICAgICAgICBsb2dsbigiRXhwZWN0ZWQ6Iik7CisgICAgICAgICAgICBwcmludENoYXJzKHMxLCBzMWxlbik7CisgICAgICAgICAgICBsb2dsbigiR290OiIpOworICAgICAgICAgICAgcHJpbnRDaGFycyhzMiwgczJsZW4pOworICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW50IGxlbiA9IE1hdGgubWluKHMxbGVuLCBzMmxlbik7CisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBsZW47ICsraSkgeworICAgICAgICAgICAgaWYoczFbaV0gIT0gczJbaV0pIHsKKyAgICAgICAgICAgICAgICBpZihyZXN1bHQgPT0gZmFsc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nbG4oIj09PT09PT09PT09PT09PT09PT09Iik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxvZ2xuKCJGaXJzdCBkaWZmZXJlbmNlIGF0IGNoYXIgIiArIGkpOworICAgICAgICAgICAgICAgIGxvZ2xuKCJFeHAuIGNoYXI6ICIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKHMxW2ldKSk7CisgICAgICAgICAgICAgICAgbG9nbG4oIkdvdCBjaGFyIDogIiArIEludGVnZXIudG9IZXhTdHJpbmcoczJbaV0pKTsKKyAgICAgICAgICAgICAgICBsb2dsbigiRXhwZWN0ZWQ6Iik7CisgICAgICAgICAgICAgICAgcHJpbnRDaGFycyhzMSwgczFsZW4pOworICAgICAgICAgICAgICAgIGxvZ2xuKCJHb3Q6Iik7CisgICAgICAgICAgICAgICAgcHJpbnRDaGFycyhzMiwgczJsZW4pOworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvLyBnZW5lcmF0ZSBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzLCB3aXRoIHNpbXVsYXRlZCBydW5zIG9mIGNoYXJhY3RlcnMKKyAgICBwcml2YXRlIHN0YXRpYyBjaGFyW10gcmFuZG9tQ2hhcnMoaW50IGxlbiwgUmFuZG9tIHJhbmRvbSkgeworICAgICAgICBjaGFyW10gcmVzdWx0ID0gbmV3IGNoYXIgW2xlbl07CisgICAgICAgIGludCBydW5MZW4gPSAwOworICAgICAgICBpbnQgdXNlZCA9IDA7CisgICAgICAgIAorICAgICAgICB3aGlsZSh1c2VkIDwgbGVuKSB7CisgICAgICAgICAgICBydW5MZW4gPSAoaW50KSAoMzAgKiByYW5kb20ubmV4dERvdWJsZSgpKTsKKyAgICAgICAgICAgIGlmKHVzZWQgKyBydW5MZW4gPj0gbGVuKSB7CisgICAgICAgICAgICAgICAgcnVuTGVuID0gbGVuIC0gdXNlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJhbmRvbVJ1bihyZXN1bHQsIHVzZWQsIHJ1bkxlbiwgcmFuZG9tKTsKKyAgICAgICAgICAgIHVzZWQgKz0gcnVuTGVuOworICAgICAgICB9CisgICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLy8gZ2VuZXJhdGUgYSBydW4gb2YgY2hhcmFjdGVycyBpbiBhICJ3aW5kb3ciCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCByYW5kb21SdW4oY2hhcltdIHRhcmdldCwgaW50IHBvcywgaW50IGxlbiwgUmFuZG9tIHJhbmRvbSkgeworICAgICAgICBpbnQgb2Zmc2V0ID0gKGludCkgKDB4RkZGRiAqIHJhbmRvbS5uZXh0RG91YmxlKCkpOworCisgICAgICAgIC8vIGRvbid0IG92ZXJmbG93IDE2IGJpdHMKKyAgICAgICAgaWYob2Zmc2V0ID4gMHhGRjgwKSB7CisgICAgICAgICAgICBvZmZzZXQgPSAweEZGODA7CisgICAgICAgIH0KKworICAgICAgICBmb3IoaW50IGkgPSBwb3M7IGkgPCBwb3MgKyBsZW47IGkrKykgeworICAgICAgICAgICAgdGFyZ2V0W2ldID0gKGNoYXIpKG9mZnNldCArICgweDdGICogcmFuZG9tLm5leHREb3VibGUoKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFtdIGZUZXN0Q2FzZXMgPSB7CisgICAgICAgICJIZWxsbyBcdTkyOTIgXHU5MTkyIFdvcmxkISIsCisgICAgICAgICJIZWxsXHUwNDI5byBcdTkyOTIgXHU5MTkyIFdcdTAwODRybGQhIiwKKyAgICAgICAgIkhlbGxcdTA0MjlvIFx1OTI5MiBcdTkyOTJXXHUwMDg0cmxkISIsCisKKyAgICAgICAgIlx1MDY0OFx1MDZjOCIsIC8vIGNhdGNoIG1pc3NpbmcgcmVzZXQKKyAgICAgICAgIlx1MDY0OFx1MDZjOCIsCisKKyAgICAgICAgIlx1NDQ0NFx1RTAwMSIsIC8vIGxvd2VzdCBxdW90YWJsZQorICAgICAgICAiXHU0NDQ0XHVmMkZGIiwgLy8gaGlnaGVzdCBxdW90YWJsZQorICAgICAgICAiXHU0NDQ0XHVmMTg4XHU0NDQ0IiwKKyAgICAgICAgIlx1NDQ0NFx1ZjE4OFx1ZjI4OCIsCisgICAgICAgICJcdTQ0NDRcdWYxODhhYmNcMDQyOVx1ZjI4OCIsCisgICAgICAgICJcdTkyOTJcdTIyMjIiLAorICAgICAgICAiSGVsbFx1MDQyOVx1MDQyMzBvIFx1OTI5MiBcdTkyOTJXXHUwMDg0XHUwMTkycmxkISIsCisgICAgICAgICJIZWxsXHUwNDI5byBcdTkyOTIgXHU5MjkyV1x1MDA4NHJsZCEiLAorICAgICAgICAiSGVsbG8gV29ybGQhMTIzNDU2IiwKKyAgICAgICAgIkhlbGxvIFdcdTAwODFcdTAxMWZcdTAwODIhIiwgLy8gTGF0aW4gMSBydW4KKworICAgICAgICAiYWJjXHUwMzAxXHUwMzAyIiwgIC8vIHVzZXMgU1FuIGZvciB1MzAxIHUzMDIKKyAgICAgICAgImFiY1x1NDQxMWQiLCAgICAgIC8vIHVzZXMgU1FVCisgICAgICAgICJhYmNcdTQ0MTFcdTQ0MTJkIiwvLyB1c2VzIFNDVQorICAgICAgICAiYWJjXHUwNDAxXHUwNDAyXHUwNDdmXHUwMGE1XHUwNDA1IiwgLy8gdXNlcyBTUW4gZm9yIHVhNQorICAgICAgICAiXHU5MTkxXHU5MTkxXHUzMDQxXHU5MTkxXHUzMDQxXHUzMDQxXHUzMDAwIiwgLy8gU0pJUyBsaWtlIGRhdGEKKyAgICAgICAgIlx1OTI5Mlx1MjIyMiIsCisgICAgICAgICJcdTkxOTFcdTkxOTFcdTMwNDFcdTkxOTFcdTMwNDFcdTMwNDFcdTMwMDAiLAorICAgICAgICAiXHU5OTk5XHUzMDUxXHUzMDBjXHU5OTk5XHU5OTk5XHUzMDYwXHU5OTk5XHUzMDY1XHUzMDY1XHUzMDY1XHUzMDBjIiwKKyAgICAgICAgIlx1MzAwMFx1MjY2YVx1MzBlYVx1MzBmM1x1MzBiNFx1NTNlZlx1NjExYlx1MzA0NFx1MzA4NFx1NTNlZlx1NjExYlx1MzA0NFx1MzA4NFx1MzBlYVx1MzBmM1x1MzBiNFx1MzAwMiIsCisKKyAgICAgICAgIiIsIC8vIGVtcHR5IGlucHV0CisgICAgICAgICJcdTAwMDAiLCAvLyBzbWFsbGVzdCBCTVAgY2hhcmFjdGVyCisgICAgICAgICJcdUZGRkYiLCAvLyBsYXJnZXN0IEJNUCBjaGFyYWN0ZXIKKworICAgICAgICAiXHVkODAwXHVkYzAwIiwgLy8gc21hbGxlc3Qgc3Vycm9nYXRlCisgICAgICAgICJcdWQ4ZmZcdWRjZmYiLCAvLyBsYXJnZXN0IHN1cnJvZ2F0ZSBwYWlyCisgICAgICAgIAorICAgICAgICAvLyByZWdyZXNzaW9uIHRlc3RzCisgICAgICAgICJcdTY0NDFcdWI0MTNcdWE3MzNcdWY4ZmVcdWVlZGJcdTU4N2ZcdTE5NWZcdTQ4OTlcdWYyM2RcdTQ5ZmRcdTBhYWNcdTU3OTJcdWZjMjJcdWZjM2NcdWZjNDZcdTAwYWEiLAorICAgICAgICAiXHUzMGY5XHU4MzIxXHUwNWU1XHUxODFjXHVkNzJiXHUyMDE5XHU5OWM5XHUyZjJmXHVjMTBjXHU4MmUxXHUyYzRkXHUxZWJjXHU2MDEzXHU2NmRjXHViYmRlXHU5NGE1XHU0NzI2XHU3NGFmXHUzMDgzXHU1NWI5XHUwMDBjIiwKKyAgICAgICAgIlx1MDA0MVx1MDBkZlx1MDQwMVx1MDE1ZiIsCisgICAgICAgICJcdTkwNjZcdTIxMjNhYmMiLAorICAgICAgICAiXHVkMjY2XHU0M2Q3XFxcdWUzODZcdWM5YzBcdTRhNmJcdTkyMjJcdTkwMWZcdTc0MTBcdWE2M2ZcdTUzOWJcdTk1OTZcdTQ4MmVcdTlkNDdcdWNmZTRcdTdiNzFcdWMyODBcdWYyNmFcdTk4MmZcdTg2MmFcdTRlZGRcdWY1MTNcdWZkYTZcdTg2OWRcdTJlZTBcdWEyMTZcdTNmZjZcdTNjNzBcdTg5YzBcdTk1NzZcdWQ1ZWNcdWJmZGFcdTZjY2FcdTViYjNcdWJjZWFcdTU1NGNcdTkxNGVcdWZhNGFcdWVkZTNcdTI5OTBcdWQyZjVcdTI3MjlcdTUxNDFcdTBmMjZcdWNjZDhcdTU0MTNcdWQxOTZcdWJiZTJcdTUxYjlcdTliNDhcdTBkYzhcdTIxOTVcdTIxYTJcdTIxZTlcdTAwZTRcdTlkOTJcdTBiYzBcdTA2YzUiLAorICAgICAgICAiXHVmOTViXHUyNDU4XHUyNDY4XHUwZTIwXHVmNTFiXHVlMzZlXHViZmMxXHUwMDgwXHUwMmRkXHVmMWI1XHUwY2YzXHU2MDU5XHU3NDg5IgorCisgICAgfTsKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBDb21wcmVzc2lvbiBtb2RlcworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgU0lOR0xFQllURU1PREUgICAgICAgICAgICAgICAgID0gMDsKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgVU5JQ09ERU1PREUgICAgICAgICAgICAgICAgICAgICAgICA9IDE7CisgICAgCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIFNpbmdsZS1ieXRlIG1vZGUgdGFncworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORVggICAgICAgICAgICAgICAgICAgPSAweDBCOworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTUkVTRVJWRUQgICAgICAgICAgICAgICAgICA9IDB4MEM7ICAgICAgICAgICAgIC8vIHRoaXMgaXMgYSByZXNlcnZlZCB2YWx1ZQorICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTUVVPVEVVICAgICAgICAgICAgICAgICAgICA9IDB4MEU7CisgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFNTV0lUQ0hVICAgICAgICAgICAgICAgICAgID0gMHgwRjsKKworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgU1FVT1RFMCAgICAgICAgICAgICAgICAgICAgICAgID0gMHgwMTsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFNRVU9URTEgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MDI7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTUVVPVEUyICAgICAgICAgICAgICAgICAgICAgICAgPSAweDAzOworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgU1FVT1RFMyAgICAgICAgICAgICAgICAgICAgICAgID0gMHgwNDsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFNRVU9URTQgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MDU7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTUVVPVEU1ICAgICAgICAgICAgICAgICAgICAgICAgPSAweDA2OworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgU1FVT1RFNiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IDB4MDc7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTUVVPVEU3ICAgICAgICAgICAgICAgICAgICAgICAgPSAweDA4OworCisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTU1dJVENIMCAgICAgICAgICAgICAgICAgICAgICAgPSAweDEwOworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgU1NXSVRDSDEgICAgICAgICAgICAgICAgICAgICAgID0gMHgxMTsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFNTV0lUQ0gyICAgICAgICAgICAgICAgICAgICAgICA9IDB4MTI7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTU1dJVENIMyAgICAgICAgICAgICAgICAgICAgICAgPSAweDEzOworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgU1NXSVRDSDQgICAgICAgICAgICAgICAgICAgICAgID0gMHgxNDsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFNTV0lUQ0g1ICAgICAgICAgICAgICAgICAgICAgICA9IDB4MTU7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTU1dJVENINiAgICAgICAgICAgICAgICAgICAgICAgPSAweDE2OworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgU1NXSVRDSDcgICAgICAgICAgICAgICAgICAgICAgID0gMHgxNzsKKworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORTAgICAgICAgICAgICAgICAgICAgICAgID0gMHgxODsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFNERUZJTkUxICAgICAgICAgICAgICAgICAgICAgICA9IDB4MTk7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTREVGSU5FMiAgICAgICAgICAgICAgICAgICAgICAgPSAweDFBOworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORTMgICAgICAgICAgICAgICAgICAgICAgID0gMHgxQjsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFNERUZJTkU0ICAgICAgICAgICAgICAgICAgICAgICA9IDB4MUM7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBTREVGSU5FNSAgICAgICAgICAgICAgICAgICAgICAgPSAweDFEOworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORTYgICAgICAgICAgICAgICAgICAgICAgID0gMHgxRTsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFNERUZJTkU3ICAgICAgICAgICAgICAgICAgICAgICA9IDB4MUY7CisKKyAgICAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICAgICAvLyBVbmljb2RlIG1vZGUgdGFncworICAgICAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBVU1dJVENIMCAgICAgICAgICAgICAgICAgICAgICAgPSAweEUwOworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgVVNXSVRDSDEgICAgICAgICAgICAgICAgICAgICAgID0gMHhFMTsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFVTV0lUQ0gyICAgICAgICAgICAgICAgICAgICAgICA9IDB4RTI7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBVU1dJVENIMyAgICAgICAgICAgICAgICAgICAgICAgPSAweEUzOworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgVVNXSVRDSDQgICAgICAgICAgICAgICAgICAgICAgID0gMHhFNDsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFVTV0lUQ0g1ICAgICAgICAgICAgICAgICAgICAgICA9IDB4RTU7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBVU1dJVENINiAgICAgICAgICAgICAgICAgICAgICAgPSAweEU2OworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgVVNXSVRDSDcgICAgICAgICAgICAgICAgICAgICAgID0gMHhFNzsKKworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgVURFRklORTAgICAgICAgICAgICAgICAgICAgICAgID0gMHhFODsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFVERUZJTkUxICAgICAgICAgICAgICAgICAgICAgICA9IDB4RTk7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBVREVGSU5FMiAgICAgICAgICAgICAgICAgICAgICAgPSAweEVBOworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgVURFRklORTMgICAgICAgICAgICAgICAgICAgICAgID0gMHhFQjsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFVERUZJTkU0ICAgICAgICAgICAgICAgICAgICAgICA9IDB4RUM7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBVREVGSU5FNSAgICAgICAgICAgICAgICAgICAgICAgPSAweEVEOworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgVURFRklORTYgICAgICAgICAgICAgICAgICAgICAgID0gMHhFRTsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFVERUZJTkU3ICAgICAgICAgICAgICAgICAgICAgICA9IDB4RUY7CisKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgaW50IFVRVU9URVUgICAgICAgICAgICAgICAgICAgICAgICA9IDB4RjA7CisgICAgICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGludCBVREVGSU5FWCAgICAgICAgICAgICAgICAgICAgICAgPSAweEYxOworICAgICAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgVVJFU0VSVkVEICAgICAgICAgICAgICAgICAgICAgID0gMHhGMjsgICAgICAgICAvLyB0aGlzIGlzIGEgcmVzZXJ2ZWQgdmFsdWUKKworICAgIC8qIFByaW50IG91dCBhbiBhcnJheSBvZiBjaGFyYWN0ZXJzLCB3aXRoIG5vbi1wcmludGFibGVzIChmb3IgbWUpIAorICAgICAgIGRpc3BsYXllZCBhcyBoZXggdmFsdWVzICovCisgICAgcHJpdmF0ZSB2b2lkIHByaW50Q2hhcnMoY2hhcltdIGNoYXJzLCBpbnQgbGVuKSB7CisgICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgaW50IGMgPSAoaW50KWNoYXJzW2ldOworICAgICAgICAgICAgaWYoYyA8IDB4MDAyMCB8fCBjID49IDB4N2YpIHsKKyAgICAgICAgICAgICAgICBsb2coIlsweCIpOworICAgICAgICAgICAgICAgIGxvZyhJbnRlZ2VyLnRvSGV4U3RyaW5nKGMpKTsKKyAgICAgICAgICAgICAgICBsb2coIl0iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nKFN0cmluZy52YWx1ZU9mKChjaGFyKWMpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBsb2dsbigiIik7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHByaW50Qnl0ZXMoYnl0ZVtdIGJ5dGVCdWZmZXIsIGludCBsZW4pIHsKKyAgICAgICAgaW50IGN1ckJ5dGVJbmRleCA9IDA7CisgICAgICAgIGludCBieXRlQnVmZmVyTGltaXQgPSBsZW47CisgICAgICAgIGludCBtb2RlID0gU0lOR0xFQllURU1PREU7CisgICAgICAgIGludCBhQnl0ZSA9IDB4MDA7CisgICAgICAgIAorICAgICAgICBpZihsZW4gPiBieXRlQnVmZmVyLmxlbmd0aCkgeworICAgICAgICAgICAgbG9nbG4oIldhcm5pbmc6IHByaW50Qnl0ZXMgY2FsbGVkIHdpdGggbGVuZ3RoIHRvbyBsYXJnZS4gVHJ1bmNhdGluZyIpOworICAgICAgICAgICAgYnl0ZUJ1ZmZlckxpbWl0ID0gYnl0ZUJ1ZmZlci5sZW5ndGg7OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB3aGlsZShjdXJCeXRlSW5kZXggPCBieXRlQnVmZmVyTGltaXQpIHsKKyAgICAgICAgICAgIHN3aXRjaChtb2RlKSB7ICAKKyAgICAgICAgICAgIGNhc2UgU0lOR0xFQllURU1PREU6CisgICAgICAgICAgICAgICAgd2hpbGUoY3VyQnl0ZUluZGV4IDwgYnl0ZUJ1ZmZlckxpbWl0IAorICAgICAgICAgICAgICAgICAgICAgICYmIG1vZGUgPT0gU0lOR0xFQllURU1PREUpICB7CisgICAgICAgICAgICAgICAgICAgIGFCeXRlID0gKChpbnQpYnl0ZUJ1ZmZlcltjdXJCeXRlSW5kZXgrK10pICYgMHhGRjsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGFCeXRlKSB7CisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBsb2coSW50ZWdlci50b0hleFN0cmluZygoKGludCkgYUJ5dGUpICYgMHhGRikgKyAiICIpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBxdW90ZSB1bmljb2RlCisgICAgICAgICAgICAgICAgICAgIGNhc2UgU1FVT1RFVToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZygiU1FVT1RFVSAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJCeXRlSW5kZXggPCBieXRlQnVmZmVyTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coSW50ZWdlci50b0hleFN0cmluZygoKGludCkgYnl0ZUJ1ZmZlcltjdXJCeXRlSW5kZXgrK10pICYgMHhGRikgKyAiICIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1ckJ5dGVJbmRleCA8IGJ5dGVCdWZmZXJMaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhJbnRlZ2VyLnRvSGV4U3RyaW5nKCgoaW50KSBieXRlQnVmZmVyW2N1ckJ5dGVJbmRleCsrXSkgJiAweEZGKSArICIgIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3dpdGNoIHRvIFVuaWNvZGUgbW9kZQorICAgICAgICAgICAgICAgICAgICBjYXNlIFNTV0lUQ0hVOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nKCJTU1dJVENIVSAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUgPSBVTklDT0RFTU9ERTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgYWxsIHF1b3RlIHRhZ3MKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBTUVVPVEUwOiBjYXNlIFNRVU9URTE6IGNhc2UgU1FVT1RFMjogY2FzZSBTUVVPVEUzOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFNRVU9URTQ6IGNhc2UgU1FVT1RFNTogY2FzZSBTUVVPVEU2OiBjYXNlIFNRVU9URTc6CisgICAgICAgICAgICAgICAgICAgICAgICBsb2coIlNRVU9URSIgKyAoYUJ5dGUgLSBTUVVPVEUwKSArICIgIik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZihjdXJCeXRlSW5kZXggPCBieXRlQnVmZmVyTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coSW50ZWdlci50b0hleFN0cmluZygoKGludCkgYnl0ZUJ1ZmZlcltjdXJCeXRlSW5kZXgrK10pICYgMHhGRikgKyAiICIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBhbGwgc3dpdGNoIHRhZ3MKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBTU1dJVENIMDogY2FzZSBTU1dJVENIMTogY2FzZSBTU1dJVENIMjogY2FzZSBTU1dJVENIMzoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBTU1dJVENINDogY2FzZSBTU1dJVENINTogY2FzZSBTU1dJVENINjogY2FzZSBTU1dJVENINzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZygiU1NXSVRDSCIgKyAoYUJ5dGUgLSBTU1dJVENIMCkgKyAiICIpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgYWxsIGRlZmluZSB0YWdzCisgICAgICAgICAgICAgICAgICAgIGNhc2UgU0RFRklORTA6IGNhc2UgU0RFRklORTE6IGNhc2UgU0RFRklORTI6IGNhc2UgU0RFRklORTM6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU0RFRklORTQ6IGNhc2UgU0RFRklORTU6IGNhc2UgU0RFRklORTY6IGNhc2UgU0RFRklORTc6CisgICAgICAgICAgICAgICAgICAgICAgICBsb2coIlNERUZJTkUiICsgKGFCeXRlIC0gU0RFRklORTApICsgIiAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJCeXRlSW5kZXggPCBieXRlQnVmZmVyTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coSW50ZWdlci50b0hleFN0cmluZygoKGludCkgYnl0ZUJ1ZmZlcltjdXJCeXRlSW5kZXgrK10pICYgMHhGRikgKyAiICIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBkZWZpbmUgZXh0ZW5kZWQgdGFnCisgICAgICAgICAgICAgICAgICAgIGNhc2UgU0RFRklORVg6CisgICAgICAgICAgICAgICAgICAgICAgICBsb2coIlNERUZJTkVYICIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1ckJ5dGVJbmRleCA8IGJ5dGVCdWZmZXJMaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhJbnRlZ2VyLnRvSGV4U3RyaW5nKCgoaW50KSBieXRlQnVmZmVyW2N1ckJ5dGVJbmRleCsrXSkgJiAweEZGKSArICIgIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyQnl0ZUluZGV4IDwgYnl0ZUJ1ZmZlckxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKEludGVnZXIudG9IZXhTdHJpbmcoKChpbnQpIGJ5dGVCdWZmZXJbY3VyQnl0ZUluZGV4KytdKSAmIDB4RkYpICsgIiAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIH0gLy8gZW5kIHN3aXRjaAorICAgICAgICAgICAgICAgIH0gLy8gZW5kIHdoaWxlCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIFVOSUNPREVNT0RFOgorICAgICAgICAgICAgICAgIHdoaWxlKGN1ckJ5dGVJbmRleCA8IGJ5dGVCdWZmZXJMaW1pdCAmJiBtb2RlID09IFVOSUNPREVNT0RFKSB7CisgICAgICAgICAgICAgICAgICAgIGFCeXRlID0gKChpbnQpYnl0ZUJ1ZmZlcltjdXJCeXRlSW5kZXgrK10pICYgMHhGRjsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGFCeXRlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgYWxsIGRlZmluZSB0YWdzCisgICAgICAgICAgICAgICAgICAgIGNhc2UgVURFRklORTA6IGNhc2UgVURFRklORTE6IGNhc2UgVURFRklORTI6IGNhc2UgVURFRklORTM6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVURFRklORTQ6IGNhc2UgVURFRklORTU6IGNhc2UgVURFRklORTY6IGNhc2UgVURFRklORTc6CisgICAgICAgICAgICAgICAgICAgICAgICBsb2coIlVERUZJTkUiICsgKGFCeXRlIC0gVURFRklORTApICsgIiAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJCeXRlSW5kZXggPCBieXRlQnVmZmVyTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coSW50ZWdlci50b0hleFN0cmluZygoKGludCkgYnl0ZUJ1ZmZlcltjdXJCeXRlSW5kZXgrK10pICYgMHhGRikgKyAiICIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSA9IFNJTkdMRUJZVEVNT0RFOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBkZWZpbmUgZXh0ZW5kZWQgdGFnCisgICAgICAgICAgICAgICAgICAgIGNhc2UgVURFRklORVg6CisgICAgICAgICAgICAgICAgICAgICAgICBsb2coIlVERUZJTkVYICIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1ckJ5dGVJbmRleCA8IGJ5dGVCdWZmZXJMaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhJbnRlZ2VyLnRvSGV4U3RyaW5nKCgoaW50KSBieXRlQnVmZmVyW2N1ckJ5dGVJbmRleCsrXSkgJiAweEZGKSArICIgIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyQnl0ZUluZGV4IDwgYnl0ZUJ1ZmZlckxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKEludGVnZXIudG9IZXhTdHJpbmcoKChpbnQpIGJ5dGVCdWZmZXJbY3VyQnl0ZUluZGV4KytdKSAmIDB4RkYpICsgIiAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBoYW5kbGUgYWxsIHN3aXRjaCB0YWdzCisgICAgICAgICAgICAgICAgICAgIGNhc2UgVVNXSVRDSDA6IGNhc2UgVVNXSVRDSDE6IGNhc2UgVVNXSVRDSDI6IGNhc2UgVVNXSVRDSDM6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgVVNXSVRDSDQ6IGNhc2UgVVNXSVRDSDU6IGNhc2UgVVNXSVRDSDY6IGNhc2UgVVNXSVRDSDc6CisgICAgICAgICAgICAgICAgICAgICAgICBsb2coIlVTV0lUQ0giICsgKGFCeXRlIC0gVVNXSVRDSDApICsgIiAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vZGUgPSBTSU5HTEVCWVRFTU9ERTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBxdW90ZSB1bmljb2RlCisgICAgICAgICAgICAgICAgICAgIGNhc2UgVVFVT1RFVToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZygiVVFVT1RFVSAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJCeXRlSW5kZXggPCBieXRlQnVmZmVyTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coSW50ZWdlci50b0hleFN0cmluZygoKGludCkgYnl0ZUJ1ZmZlcltjdXJCeXRlSW5kZXgrK10pICYgMHhGRikgKyAiICIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1ckJ5dGVJbmRleCA8IGJ5dGVCdWZmZXJMaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhJbnRlZ2VyLnRvSGV4U3RyaW5nKCgoaW50KSBieXRlQnVmZmVyW2N1ckJ5dGVJbmRleCsrXSkgJiAweEZGKSArICIgIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nKEludGVnZXIudG9IZXhTdHJpbmcoKChpbnQpIGFCeXRlKSAmIDB4RkYpICsgIiAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJCeXRlSW5kZXggPCBieXRlQnVmZmVyTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coSW50ZWdlci50b0hleFN0cmluZygoKGludCkgYnl0ZUJ1ZmZlcltjdXJCeXRlSW5kZXgrK10pICYgMHhGRikgKyAiICIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgfSAvLyBlbmQgc3dpdGNoCisgICAgICAgICAgICAgICAgfSAvLyBlbmQgd2hpbGUKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0gLy8gZW5kIHN3aXRjaCggbW9kZSApCisgICAgICAgIH0gLy8gZW5kIHdoaWxlCisgICAgICAgIAorICAgICAgICBsb2dsbigiIik7CisgICAgfSAgICAKK30KKworCisKKworCisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3QvY29tcHJlc3Npb24vcGFja2FnZS5odG1sIGIvc3JjL2NvbS9pYm0vdGVzdC9jb21wcmVzc2lvbi9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmRmYWI4NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3QvY29tcHJlc3Npb24vcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8IS0tICBDb3B5cmlnaHQgKEMpIDIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisgIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXN0L2NvbXByZXNzaW9uL0F0dGljL3BhY2thZ2UuaHRtbCx2ICQKKyAgJFJldmlzaW9uOiAxLjEgJAorICAkRGF0ZTogMjAwMC8wMy8xNSAyMTozNTo0OSAkCistLT4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIj4KK1Rlc3RzIGZvciB0aGUgY29tcHJlc3Npb24gY2xhc3Nlcy4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXN0L25vcm1hbGl6ZXIvQmFzaWNUZXN0LmphdmEgYi9zcmMvY29tL2libS90ZXN0L25vcm1hbGl6ZXIvQmFzaWNUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTI0ZGUxMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3Qvbm9ybWFsaXplci9CYXNpY1Rlc3QuamF2YQpAQCAtMCwwICsxLDQ5MSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGVzdC9ub3JtYWxpemVyL0F0dGljL0Jhc2ljVGVzdC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAxLzA0LzAyIDE5OjIxOjA2ICQgCisgKiAkUmV2aXNpb246IDEuOCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXN0Lm5vcm1hbGl6ZXI7CisKK2ltcG9ydCBjb20uaWJtLnRlc3QuKjsKK2ltcG9ydCBjb20uaWJtLnRleHQuKjsKK2ltcG9ydCBjb20uaWJtLnV0aWwuVXRpbGl0eTsKK2ltcG9ydCBqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I7CitpbXBvcnQgamF2YS50ZXh0LlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yOworCitwdWJsaWMgY2xhc3MgQmFzaWNUZXN0IGV4dGVuZHMgVGVzdEZtd2sgeworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgQmFzaWNUZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIFN0cmluZ1tdW10gY2Fub25UZXN0cyA9IHsKKyAgICAgICAgLy8gSW5wdXQgICAgICAgICAgICAgICAgRGVjb21wb3NlZCAgICAgICAgICAgICAgQ29tcG9zZWQKKyAgICAgICAgeyAiY2F0IiwgICAgICAgICAgICAgICAgImNhdCIsICAgICAgICAgICAgICAgICAgImNhdCIgICAgICAgICAgICAgICB9LAorICAgICAgICB7ICJcdTAwZTBhcmR2YXJrIiwgICAgICAiYVx1MDMwMGFyZHZhcmsiLCAgICAgICAiXHUwMGUwYXJkdmFyayIsICAgIH0sCisKKyAgICAgICAgeyAiXHUxZTBhIiwgICAgICAgICAgICAgIkRcdTAzMDciLCAgICAgICAgICAgICAgIlx1MWUwYSIgICAgICAgICAgICB9LCAvLyBELWRvdF9hYm92ZQorICAgICAgICB7ICJEXHUwMzA3IiwgICAgICAgICAgICAiRFx1MDMwNyIsICAgICAgICAgICAgICAiXHUxZTBhIiAgICAgICAgICAgIH0sIC8vIEQgZG90X2Fib3ZlCisKKyAgICAgICAgeyAiXHUxZTBjXHUwMzA3IiwgICAgICAgIkRcdTAzMjNcdTAzMDciLCAgICAgICAgIlx1MWUwY1x1MDMwNyIgICAgICB9LCAvLyBELWRvdF9iZWxvdyBkb3RfYWJvdmUKKyAgICAgICAgeyAiXHUxZTBhXHUwMzIzIiwgICAgICAgIkRcdTAzMjNcdTAzMDciLCAgICAgICAgIlx1MWUwY1x1MDMwNyIgICAgICB9LCAvLyBELWRvdF9hYm92ZSBkb3RfYmVsb3cKKyAgICAgICAgeyAiRFx1MDMwN1x1MDMyMyIsICAgICAgIkRcdTAzMjNcdTAzMDciLCAgICAgICAgIlx1MWUwY1x1MDMwNyIgICAgICB9LCAvLyBEIGRvdF9iZWxvdyBkb3RfYWJvdmUKKworICAgICAgICB7ICJcdTFlMTBcdTAzMDdcdTAzMjMiLCAiRFx1MDMyN1x1MDMyM1x1MDMwNyIsICAiXHUxZTEwXHUwMzIzXHUwMzA3In0sIC8vIEQgZG90X2JlbG93IGNlZGlsbGEgZG90X2Fib3ZlCisgICAgICAgIHsgIkRcdTAzMDdcdTAzMjhcdTAzMjMiLCJEXHUwMzI4XHUwMzIzXHUwMzA3IiwgICJcdTFlMGNcdTAzMjhcdTAzMDcifSwgLy8gRCBkb3RfYWJvdmUgb2dvbmVrIGRvdF9iZWxvdworCisgICAgICAgIHsgIlx1MUUxNCIsICAgICAgICAgICAgICJFXHUwMzA0XHUwMzAwIiwgICAgICAgICJcdTFFMTQiICAgICAgICAgICAgfSwgLy8gRS1tYWNyb24tZ3JhdmUKKyAgICAgICAgeyAiXHUwMTEyXHUwMzAwIiwgICAgICAgIkVcdTAzMDRcdTAzMDAiLCAgICAgICAgIlx1MUUxNCIgICAgICAgICAgICB9LCAvLyBFLW1hY3JvbiArIGdyYXZlCisgICAgICAgIHsgIlx1MDBjOFx1MDMwNCIsICAgICAgICJFXHUwMzAwXHUwMzA0IiwgICAgICAgICJcdTAwYzhcdTAzMDQiICAgICAgfSwgLy8gRS1ncmF2ZSArIG1hY3JvbgorCisgICAgICAgIHsgIlx1MjEyYiIsICAgICAgICAgICAgICJBXHUwMzBhIiwgICAgICAgICAgICAgICJcdTAwYzUiICAgICAgICAgICAgfSwgLy8gYW5nc3Ryb21fc2lnbgorICAgICAgICB7ICJcdTAwYzUiLCAgICAgICAgICAgICAiQVx1MDMwYSIsICAgICAgICAgICAgICAiXHUwMGM1IiAgICAgICAgICAgIH0sIC8vIEEtcmluZworCisvLyAgICAgICAgeyAiXHUwMGZkZmZpbiIsICAgICAgICAgICAgICAiQVx1MDMwOGZmaW4iLCAgICAgICAgICAiXHUwMGZkZmZpbiIgICAgICAgICAgICAgfSwKKyAgICAgICAgeyAiXHUwMGZkZmZpbiIsICAgICAgICAgICAgICAieVx1MDMwMWZmaW4iLCAgICAgICAgICAiXHUwMGZkZmZpbiIgICAgICAgICAgICAgfSwJLy91cGRhdGVkIHdpdGggMy4wCisvLyAgICAgICAgeyAiXHUwMGZkXHVGQjAzbiIsICAgICAgICAgICAiQVx1MDMwOFx1RkIwM24iLCAgICAgICAiXHUwMGZkXHVGQjAzbiIgICAgICAgICAgfSwKKyAgICAgICAgeyAiXHUwMGZkXHVGQjAzbiIsICAgICAgICAgICAieVx1MDMwMVx1RkIwM24iLCAgICAgICAiXHUwMGZkXHVGQjAzbiIgICAgICAgICAgfSwJLy91cGRhdGVkIHdpdGggMy4wCisKKyAgICAgICAgeyAiSGVucnkgSVYiLCAgICAgICAgICAgIkhlbnJ5IElWIiwgICAgICAgICAgICAgIkhlbnJ5IElWIiAgICAgICAgICB9LAorICAgICAgICB7ICJIZW5yeSBcdTIxNjMiLCAgICAgICAiSGVucnkgXHUyMTYzIiwgICAgICAgICAiSGVucnkgXHUyMTYzIiAgICAgIH0sCisKKyAgICAgICAgeyAiXHUzMEFDIiwgICAgICAgICAgICAgIlx1MzBBQlx1MzA5OSIsICAgICAgICAgIlx1MzBBQyIgICAgICAgICAgICB9LCAvLyBnYSAoS2F0YWthbmEpCisgICAgICAgIHsgIlx1MzBBQlx1MzA5OSIsICAgICAgICJcdTMwQUJcdTMwOTkiLCAgICAgICAgICJcdTMwQUMiICAgICAgICAgICAgfSwgLy8ga2EgKyB0ZW4KKyAgICAgICAgeyAiXHVGRjc2XHVGRjlFIiwgICAgICAgIlx1RkY3Nlx1RkY5RSIsICAgICAgICAgIlx1RkY3Nlx1RkY5RSIgICAgICB9LCAvLyBod19rYSArIGh3X3RlbgorICAgICAgICB7ICJcdTMwQUJcdUZGOUUiLCAgICAgICAiXHUzMEFCXHVGRjlFIiwgICAgICAgICAiXHUzMEFCXHVGRjlFIiAgICAgIH0sIC8vIGthICsgaHdfdGVuCisgICAgICAgIHsgIlx1RkY3Nlx1MzA5OSIsICAgICAgICJcdUZGNzZcdTMwOTkiLCAgICAgICAgICJcdUZGNzZcdTMwOTkiICAgICAgfSwgLy8gaHdfa2EgKyB0ZW4KKworICAgICAgICB7ICJBXHUwMzAwXHUwMzE2IiwgIkFcdTAzMTZcdTAzMDAiLCAiXHUwMEMwXHUwMzE2IiB9LAorICAgIH07CisKKyAgICBTdHJpbmdbXVtdIGNvbXBhdFRlc3RzID0geworICAgICAgICAgICAgLy8gSW5wdXQgICAgICAgICAgICAgICAgRGVjb21wb3NlZCAgICAgICAgICAgICAgQ29tcG9zZWQKKyAgICAgICAgeyAiXHVGQjRmIiwgICAgICAgICAgICAgIlx1MDVEMFx1MDVEQyIsICAgICAgICAgIlx1MDVEMFx1MDVEQyIsICAgICB9LCAvLyBBbGVmLUxhbWVkIHZzLiBBbGVmLCBMYW1lZAorCisvLyAgICAgICAgeyAiXHUwMGZkZmZpbiIsICAgICAgICAgICAgICAiQVx1MDMwOGZmaW4iLCAgICAgICAgICAiXHUwMGZkZmZpbiIgICAgICAgICAgICAgfSwKKy8vICAgICAgIHsgIlx1MDBmZFx1RkIwM24iLCAgICAgICAgICAgIkFcdTAzMDhmZmluIiwgICAgICAgICAgIlx1MDBmZGZmaW4iICAgICAgICAgICAgIH0sIC8vIGZmaSBsaWdhdHVyZSAtPiBmICsgZiArIGkKKyAgICAgICAgeyAiXHUwMGZkZmZpbiIsICAgICAgICAgICAgICAieVx1MDMwMWZmaW4iLCAgICAgICAgICAiXHUwMGZkZmZpbiIgICAgICAgICAgICAgfSwJLy91cGRhdGVkIGZvciAzLjAKKyAgICAgICAgeyAiXHUwMGZkXHVGQjAzbiIsICAgICAgICAgICAieVx1MDMwMWZmaW4iLCAgICAgICAgICAiXHUwMGZkZmZpbiIgICAgICAgICAgICAgfSwgLy8gZmZpIGxpZ2F0dXJlIC0+IGYgKyBmICsgaQorCisgICAgICAgIHsgIkhlbnJ5IElWIiwgICAgICAgICAgICJIZW5yeSBJViIsICAgICAgICAgICAgICJIZW5yeSBJViIgICAgICAgICAgfSwKKyAgICAgICAgeyAiSGVucnkgXHUyMTYzIiwgICAgICAgIkhlbnJ5IElWIiwgICAgICAgICAgICAgIkhlbnJ5IElWIiAgICAgICAgICB9LAorCisgICAgICAgIHsgIlx1MzBBQyIsICAgICAgICAgICAgICJcdTMwQUJcdTMwOTkiLCAgICAgICAgICJcdTMwQUMiICAgICAgICAgICAgfSwgLy8gZ2EgKEthdGFrYW5hKQorICAgICAgICB7ICJcdTMwQUJcdTMwOTkiLCAgICAgICAiXHUzMEFCXHUzMDk5IiwgICAgICAgICAiXHUzMEFDIiAgICAgICAgICAgIH0sIC8vIGthICsgdGVuCisKKyAgICAgICAgeyAiXHVGRjc2XHUzMDk5IiwgICAgICAgIlx1MzBBQlx1MzA5OSIsICAgICAgICAgIlx1MzBBQyIgICAgICAgICAgICB9LCAvLyBod19rYSArIHRlbgorCisgICAgICAgIC8qIFRoZXNlIHR3byBhcmUgYnJva2VuIGluIFVuaWNvZGUgMi4xLjIgYnV0IGZpeGVkIGluIDIuMS41IGFuZCBsYXRlcgorICAgICAgICB7ICJcdUZGNzZcdUZGOUUiLCAgICAgICAiXHUzMEFCXHUzMDk5IiwgICAgICAgICAiXHUzMEFDIiAgICAgICAgICAgIH0sIC8vIGh3X2thICsgaHdfdGVuCisgICAgICAgIHsgIlx1MzBBQlx1RkY5RSIsICAgICAgICJcdTMwQUJcdTMwOTkiLCAgICAgICAgICJcdTMwQUMiICAgICAgICAgICAgfSwgLy8ga2EgKyBod190ZW4KKyAgICAgICAgKi8KKyAgICB9OworCisgICAgLy8gV2l0aCBDYW5vbmljYWwgZGVjb21wb3NpdGlvbiwgSGFuZ3VsIHN5bGxhYmxlcyBzaG91bGQgZ2V0IGRlY29tcG9zZWQKKyAgICAvLyBpbnRvIEphbW8sIGJ1dCBKYW1vIGNoYXJhY3RlcnMgc2hvdWxkIG5vdCBiZSBkZWNvbXBvc2VkIGludG8KKyAgICAvLyBjb25qb2luaW5nIEphbW8KKyAgICBTdHJpbmdbXVtdIGhhbmd1bENhbm9uID0geworICAgICAgICAvLyBJbnB1dCAgICAgICAgICAgICAgICBEZWNvbXBvc2VkICAgICAgICAgICAgICBDb21wb3NlZAorICAgICAgICB7ICJcdWQ0ZGIiLCAgICAgICAgICAgICAiXHUxMTExXHUxMTcxXHUxMWI2IiwgICAiXHVkNGRiIiAgICAgICAgfSwKKyAgICAgICAgeyAiXHUxMTExXHUxMTcxXHUxMWI2IiwgIlx1MTExMVx1MTE3MVx1MTFiNiIsICAgIlx1ZDRkYiIgICAgICAgIH0sCisgICAgfTsKKworICAgIC8vIFdpdGggY29tcGF0aWJpbGl0eSBkZWNvbXBvc2l0aW9uIHR1cm5lZCBvbiwKKyAgICAvLyBpdCBzaG91bGQgZ28gYWxsIHRoZSB3YXkgZG93biB0byBjb25qb2luaW5nIEphbW8gY2hhcmFjdGVycy4KKyAgICAvLyBUSElTIElTIE5PIExPTkdFUiBUUlVFIElOIFVOSUNPREUgdjIuMS44LCBTTyBUSElTIFRFU1QgSVMgT0JTT0xFVEUKKyAgICBTdHJpbmdbXVtdIGhhbmd1bENvbXBhdCA9IHsKKyAgICAgICAgLy8gSW5wdXQgICAgICAgIERlY29tcG9zZWQgICAgICAgICAgICAgICAgICAgICAgICAgIENvbXBvc2VkCisgICAgICAgIC8vIHsgIlx1ZDRkYiIsICAgICAiXHUxMTExXHUxMTZlXHUxMTc1XHUxMWFmXHUxMWMyIiwgICAiXHVkNDc4XHUxMTc1XHUxMWFmXHUxMWMyIiAgfSwKKyAgICB9OworCisgICAgcHVibGljIHZvaWQgVGVzdEhhbmd1bENvbXBvc2UoKSB7CisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRoZSBzdGF0aWMgY29tcG9zaXRpb24gbWV0aG9kcyB3b3JrCisgICAgICAgIGxvZ2xuKCJDYW5vbmljYWwgY29tcG9zaXRpb24uLi4iKTsKKyAgICAgICAgc3RhdGljVGVzdChOb3JtYWxpemVyLkNPTVBPU0UsICAgICAgICAwLCBoYW5ndWxDYW5vbiwgIDIpOworICAgICAgICBsb2dsbigiQ29tcGF0aWJpbGl0eSBjb21wb3NpdGlvbi4uLiIpOworICAgICAgICBzdGF0aWNUZXN0KE5vcm1hbGl6ZXIuQ09NUE9TRV9DT01QQVQsIDAsIGhhbmd1bENvbXBhdCwgMik7CisKKyAgICAgICAgLy8gTm93IHRyeSBpdGVyYXRpdmUgY29tcG9zaXRpb24uLi4uCisgICAgICAgIGxvZ2xuKCJTdGF0aWMgY29tcG9zaXRpb24uLi4iKTsKKyAgICAgICAgTm9ybWFsaXplciBub3JtID0gbmV3IE5vcm1hbGl6ZXIoIiIsIE5vcm1hbGl6ZXIuQ09NUE9TRSwgMCk7CisgICAgICAgIGl0ZXJhdGVUZXN0KG5vcm0sIGhhbmd1bENhbm9uLCAyKTsKKworICAgICAgICBub3JtLnNldE1vZGUoTm9ybWFsaXplci5DT01QT1NFX0NPTVBBVCk7CisgICAgICAgIGl0ZXJhdGVUZXN0KG5vcm0sIGhhbmd1bENvbXBhdCwgMik7CisKKyAgICAgICAgLy8gQW5kIGZpbmFsbHksIG1ha2Ugc3VyZSB5b3UgY2FuIGRvIGl0IGluIHJldmVyc2UgdG9vCisgICAgICAgIGxvZ2xuKCJSZXZlcnNlIGl0ZXJhdGlvbi4uLiIpOworICAgICAgICBub3JtLnNldE1vZGUoTm9ybWFsaXplci5DT01QT1NFKTsKKyAgICAgICAgYmFja0FuZEZvcnRoKG5vcm0sIGhhbmd1bENhbm9uKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0SGFuZ3VsRGVjb21wKCkgeworICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgc3RhdGljIGRlY29tcG9zaXRpb24gbWV0aG9kcyB3b3JrCisgICAgICAgIGxvZ2xuKCJDYW5vbmljYWwgZGVjb21wb3NpdGlvbi4uLiIpOworICAgICAgICBzdGF0aWNUZXN0KE5vcm1hbGl6ZXIuREVDT01QLCAgICAgICAgMCwgaGFuZ3VsQ2Fub24sICAxKTsKKyAgICAgICAgbG9nbG4oIkNvbXBhdGliaWxpdHkgZGVjb21wb3NpdGlvbi4uLiIpOworICAgICAgICBzdGF0aWNUZXN0KE5vcm1hbGl6ZXIuREVDT01QX0NPTVBBVCwgMCwgaGFuZ3VsQ29tcGF0LCAxKTsKKworICAgICAgICAvLyBOb3cgdGhlIGl0ZXJhdGl2ZSBkZWNvbXBvc2l0aW9uIG1ldGhvZHMuLi4KKyAgICAgICAgbG9nbG4oIkl0ZXJhdGl2ZSBkZWNvbXBvc2l0aW9uLi4uIik7CisgICAgICAgIE5vcm1hbGl6ZXIgbm9ybSA9IG5ldyBOb3JtYWxpemVyKCIiLCBOb3JtYWxpemVyLkRFQ09NUCwgMCk7CisgICAgICAgIGl0ZXJhdGVUZXN0KG5vcm0sIGhhbmd1bENhbm9uLCAxKTsKKworICAgICAgICBub3JtLnNldE1vZGUoTm9ybWFsaXplci5ERUNPTVBfQ09NUEFUKTsKKyAgICAgICAgaXRlcmF0ZVRlc3Qobm9ybSwgaGFuZ3VsQ29tcGF0LCAxKTsKKworICAgICAgICAvLyBBbmQgZmluYWxseSwgbWFrZSBzdXJlIHlvdSBjYW4gZG8gaXQgaW4gcmV2ZXJzZSB0b28KKyAgICAgICAgbG9nbG4oIlJldmVyc2UgaXRlcmF0aW9uLi4uIik7CisgICAgICAgIG5vcm0uc2V0TW9kZShOb3JtYWxpemVyLkRFQ09NUCk7CisgICAgICAgIGJhY2tBbmRGb3J0aChub3JtLCBoYW5ndWxDYW5vbik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdFByZXZpb3VzKCkgeworICAgICAgICBOb3JtYWxpemVyIG5vcm0gPSBuZXcgTm9ybWFsaXplcigiIiwgTm9ybWFsaXplci5ERUNPTVAsIDApOworCisgICAgICAgIGxvZ2xuKCJ0ZXN0aW5nIGRlY29tcC4uLiIpOworICAgICAgICBiYWNrQW5kRm9ydGgobm9ybSwgY2Fub25UZXN0cyk7CisKKyAgICAgICAgbG9nbG4oInRlc3RpbmcgY29tcG9zZS4uLiIpOworICAgICAgICBub3JtLnNldE1vZGUoTm9ybWFsaXplci5DT01QT1NFKTsKKyAgICAgICAgYmFja0FuZEZvcnRoKG5vcm0sIGNhbm9uVGVzdHMpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3REZWNvbXAoKSB7CisgICAgICAgIE5vcm1hbGl6ZXIgbm9ybSA9IG5ldyBOb3JtYWxpemVyKCIiLCBOb3JtYWxpemVyLkRFQ09NUCwgMCk7CisgICAgICAgIGl0ZXJhdGVUZXN0KG5vcm0sIGNhbm9uVGVzdHMsIDEpOworCisgICAgICAgIHN0YXRpY1Rlc3QoTm9ybWFsaXplci5ERUNPTVAsIDAsIGNhbm9uVGVzdHMsIDEpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RDb21wYXREZWNvbXAoKSB7CisgICAgICAgIE5vcm1hbGl6ZXIgbm9ybSA9IG5ldyBOb3JtYWxpemVyKCIiLCBOb3JtYWxpemVyLkRFQ09NUF9DT01QQVQsIDApOworICAgICAgICBpdGVyYXRlVGVzdChub3JtLCBjb21wYXRUZXN0cywgMSk7CisKKyAgICAgICAgc3RhdGljVGVzdChOb3JtYWxpemVyLkRFQ09NUF9DT01QQVQsIDAsIGNvbXBhdFRlc3RzLCAxKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0Q2Fub25Db21wb3NlKCkgeworICAgICAgICBOb3JtYWxpemVyIG5vcm0gPSBuZXcgTm9ybWFsaXplcigiIiwgTm9ybWFsaXplci5DT01QT1NFLCAwKTsKKyAgICAgICAgaXRlcmF0ZVRlc3Qobm9ybSwgY2Fub25UZXN0cywgMik7CisKKyAgICAgICAgc3RhdGljVGVzdChOb3JtYWxpemVyLkNPTVBPU0UsIDAsIGNhbm9uVGVzdHMsIDIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RDb21wYXRDb21wb3NlKCkgeworICAgICAgICBOb3JtYWxpemVyIG5vcm0gPSBuZXcgTm9ybWFsaXplcigiIiwgTm9ybWFsaXplci5DT01QT1NFX0NPTVBBVCwgMCk7CisgICAgICAgIGl0ZXJhdGVUZXN0KG5vcm0sIGNvbXBhdFRlc3RzLCAyKTsKKworICAgICAgICBzdGF0aWNUZXN0KE5vcm1hbGl6ZXIuQ09NUE9TRV9DT01QQVQsIDAsIGNvbXBhdFRlc3RzLCAyKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0RXhwbG9kaW5nQmFzZSgpIHsKKyAgICAgICAgLy8gXHUwMTdmIC0gTGF0aW4gc21hbGwgbGV0dGVyIGxvbmcgcworICAgICAgICAvLyBcdTAzMDcgLSBjb21iaW5pbmcgZG90IGFib3ZlCisgICAgICAgIC8vIFx1MWU2MSAtIExhdGluIHNtYWxsIGxldHRlciBzIHdpdGggZG90IGFib3ZlCisgICAgICAgIC8vIFx1MWU5YiAtIExhdGluIHNtYWxsIGxldHRlciBsb25nIHMgd2l0aCBkb3QgYWJvdmUKKyAgICAgICAgU3RyaW5nW11bXSBjYW5vbiA9IHsKKyAgICAgICAgICAgIC8vIElucHV0ICAgICAgICAgICAgICAgIERlY29tcG9zZWQgICAgICAgICAgICAgIENvbXBvc2VkCisgICAgICAgICAgICB7ICJUc2NodVx1MDE3ZiIsICAgICAgICAiVHNjaHVcdTAxN2YiLCAgICAgICAgICAiVHNjaHVcdTAxN2YiICAgICAgIH0sCisgICAgICAgICAgICB7ICJUc2NodVx1MWU5YiIsICAgICAgICAiVHNjaHVcdTAxN2ZcdTAzMDciLCAgICAiVHNjaHVcdTFlOWIiICAgICAgIH0sCisgICAgICAgIH07CisgICAgICAgIFN0cmluZ1tdW10gY29tcGF0ID0geworICAgICAgICAgICAgLy8gSW5wdXQgICAgICAgICAgICAgICAgRGVjb21wb3NlZCAgICAgICAgICAgICAgQ29tcG9zZWQKKyAgICAgICAgICAgIHsgIlx1MDE3ZiIsICAgICAgICAicyIsICAgICAgICAgICAgICAicyIgICAgICAgICAgIH0sCisgICAgICAgICAgICB7ICJcdTFlOWIiLCAgICAgICAgInNcdTAzMDciLCAgICAgICAgIlx1MWU2MSIgICAgICB9LAorICAgICAgICB9OworCisgICAgICAgIHN0YXRpY1Rlc3QoTm9ybWFsaXplci5ERUNPTVAsICAgICAgICAgICAwLCBjYW5vbiwgIDEpOworICAgICAgICBzdGF0aWNUZXN0KE5vcm1hbGl6ZXIuQ09NUE9TRSwgICAgICAgICAgMCwgY2Fub24sICAyKTsKKworICAgICAgICBzdGF0aWNUZXN0KE5vcm1hbGl6ZXIuREVDT01QX0NPTVBBVCwgICAgMCwgY29tcGF0LCAxKTsKKyAgICAgICAgc3RhdGljVGVzdChOb3JtYWxpemVyLkNPTVBPU0VfQ09NUEFULCAgIDAsIGNvbXBhdCwgMik7CisKKyAgICAgICAgTm9ybWFsaXplciBub3JtID0gbmV3IE5vcm1hbGl6ZXIoIiIsIE5vcm1hbGl6ZXIuREVDT01QX0NPTVBBVCk7CisgICAgICAgIGl0ZXJhdGVUZXN0KG5vcm0sIGNvbXBhdCwgMSk7CisgICAgICAgIGJhY2tBbmRGb3J0aChub3JtLCBjb21wYXQpOworCisgICAgICAgIG5vcm0uc2V0TW9kZShOb3JtYWxpemVyLkNPTVBPU0VfQ09NUEFUKTsKKyAgICAgICAgaXRlcmF0ZVRlc3Qobm9ybSwgY29tcGF0LCAyKTsKKyAgICAgICAgYmFja0FuZEZvcnRoKG5vcm0sIGNvbXBhdCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhlIFRpYmV0YW4gdm93ZWwgc2lnbiBBQSwgMGY3MSwgd2FzIG1lc3NlZCB1cCBwcmlvciB0byBVbmljb2RlIHZlcnNpb24gMi4xLjkuCisgICAgICogT25jZSAyLjEuOSBvciAzLjAgaXMgcmVsZWFzZWQsIHVuY29tbWVudCB0aGlzIHRlc3QuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFRpYmV0YW4oKSB7CisgICAgICAgIFN0cmluZ1tdW10gZGVjb21wID0geworICAgICAgICAgICAgeyAiXHUwZjc3IiwgIlx1MGY3NyIsICJcdTBmYjJcdTBmNzFcdTBmODAiIH0KKyAgICAgICAgfTsKKyAgICAgICAgU3RyaW5nW11bXSBjb21wb3NlID0geworICAgICAgICAgICAgeyAiXHUwZmIyXHUwZjcxXHUwZjgwIiwgIlx1MGZiMlx1MGY3MVx1MGY4MCIsICJcdTBmYjJcdTBmNzFcdTBmODAiIH0KKyAgICAgICAgfTsKKworICAgICAgICBzdGF0aWNUZXN0KE5vcm1hbGl6ZXIuREVDT01QLCAgICAgICAgICAgMCwgZGVjb21wLCAxKTsKKyAgICAgICAgc3RhdGljVGVzdChOb3JtYWxpemVyLkRFQ09NUF9DT01QQVQsICAgIDAsIGRlY29tcCwgMik7CisgICAgICAgIHN0YXRpY1Rlc3QoTm9ybWFsaXplci5DT01QT1NFLCAgICAgICAgICAwLCBjb21wb3NlLCAxKTsKKyAgICAgICAgc3RhdGljVGVzdChOb3JtYWxpemVyLkNPTVBPU0VfQ09NUEFULCAgIDAsIGNvbXBvc2UsIDIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1ha2Ugc3VyZSBjaGFyYWN0ZXJzIGluIHRoZSBDb21wb3NpdGlvbkV4Y2x1c2lvbi50eHQgbGlzdCBkbyBub3QgZ2V0CisgICAgICogY29tcG9zZWQgdG8uCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdENvbXBvc2l0aW9uRXhjbHVzaW9uKCkgeworICAgICAgICAvLyBUaGlzIGxpc3QgaXMgZ2VuZXJhdGVkIGZyb20gQ29tcG9zaXRpb25FeGNsdXNpb24udHh0LgorICAgICAgICAvLyBVcGRhdGUgd2hlbmV2ZXIgdGhlIG5vcm1hbGl6ZXIgdGFibGVzIGFyZSB1cGRhdGVkLiAgTm90ZQorICAgICAgICAvLyB0aGF0IHdlIHRlc3QgYWxsIGNoYXJhY3RlcnMgbGlzdGVkLCBldmVuIHRob3NlIHRoYXQgY2FuIGJlCisgICAgICAgIC8vIGRlcml2ZWQgZnJvbSB0aGUgVW5pY29kZSBEQiBhbmQgYXJlIHRoZXJlZm9yZSBjb21tZW50ZWQKKyAgICAgICAgLy8gb3V0LgorICAgICAgICBTdHJpbmcgRVhDTFVERUQgPSAKKyAgICAgICAgICAgICJcdTAzNDBcdTAzNDFcdTAzNDNcdTAzNDRcdTAzNzRcdTAzN0VcdTAzODdcdTA5NTgiICsKKyAgICAgICAgICAgICJcdTA5NTlcdTA5NUFcdTA5NUJcdTA5NUNcdTA5NURcdTA5NUVcdTA5NUZcdTA5REMiICsKKyAgICAgICAgICAgICJcdTA5RERcdTA5REZcdTBBMzNcdTBBMzZcdTBBNTlcdTBBNUFcdTBBNUJcdTBBNUUiICsKKyAgICAgICAgICAgICJcdTBCNUNcdTBCNURcdTBGNDNcdTBGNERcdTBGNTJcdTBGNTdcdTBGNUNcdTBGNjkiICsKKyAgICAgICAgICAgICJcdTBGNzNcdTBGNzVcdTBGNzZcdTBGNzhcdTBGODFcdTBGOTNcdTBGOURcdTBGQTIiICsKKyAgICAgICAgICAgICJcdTBGQTdcdTBGQUNcdTBGQjlcdTFGNzFcdTFGNzNcdTFGNzVcdTFGNzdcdTFGNzkiICsKKyAgICAgICAgICAgICJcdTFGN0JcdTFGN0RcdTFGQkJcdTFGQkVcdTFGQzlcdTFGQ0JcdTFGRDNcdTFGREIiICsKKyAgICAgICAgICAgICJcdTFGRTNcdTFGRUJcdTFGRUVcdTFGRUZcdTFGRjlcdTFGRkJcdTFGRkRcdTIwMDAiICsKKyAgICAgICAgICAgICJcdTIwMDFcdTIxMjZcdTIxMkFcdTIxMkJcdTIzMjlcdTIzMkFcdUY5MDBcdUZBMTAiICsKKyAgICAgICAgICAgICJcdUZBMTJcdUZBMTVcdUZBMjBcdUZBMjJcdUZBMjVcdUZBMjZcdUZBMkFcdUZCMUYiICsKKyAgICAgICAgICAgICJcdUZCMkFcdUZCMkJcdUZCMkNcdUZCMkRcdUZCMkVcdUZCMkZcdUZCMzBcdUZCMzEiICsKKyAgICAgICAgICAgICJcdUZCMzJcdUZCMzNcdUZCMzRcdUZCMzVcdUZCMzZcdUZCMzhcdUZCMzlcdUZCM0EiICsKKyAgICAgICAgICAgICJcdUZCM0JcdUZCM0NcdUZCM0VcdUZCNDBcdUZCNDFcdUZCNDNcdUZCNDRcdUZCNDYiICsKKyAgICAgICAgICAgICJcdUZCNDdcdUZCNDhcdUZCNDlcdUZCNEFcdUZCNEJcdUZCNENcdUZCNERcdUZCNEUiOworICAgICAgICBmb3IgKGludCBpPTA7IGk8RVhDTFVERUQubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgU3RyaW5nIGEgPSBTdHJpbmcudmFsdWVPZihFWENMVURFRC5jaGFyQXQoaSkpOworICAgICAgICAgICAgU3RyaW5nIGIgPSBOb3JtYWxpemVyLm5vcm1hbGl6ZShhLCBOb3JtYWxpemVyLkRFQ09NUF9DT01QQVQsIDApOworICAgICAgICAgICAgU3RyaW5nIGMgPSBOb3JtYWxpemVyLm5vcm1hbGl6ZShiLCBOb3JtYWxpemVyLkNPTVBPU0UsIDApOworICAgICAgICAgICAgaWYgKGMuZXF1YWxzKGEpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBoZXgoYSkgKyAiIHggREVDT01QX0NPTVBBVCA9PiAiICsKKyAgICAgICAgICAgICAgICAgICAgICBoZXgoYikgKyAiIHggQ09NUE9TRSA9PiAiICsKKyAgICAgICAgICAgICAgICAgICAgICBoZXgoYykpOworICAgICAgICAgICAgfSBlbHNlIGlmIChpc1ZlcmJvc2UoKSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJPazogIiArIGhleChhKSArICIgeCBERUNPTVBfQ09NUEFUID0+ICIgKworICAgICAgICAgICAgICAgICAgICAgIGhleChiKSArICIgeCBDT01QT1NFID0+ICIgKworICAgICAgICAgICAgICAgICAgICAgIGhleChjKSk7ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgbWV0aG9kIHdvcmtzIHRvbywgYnV0IGl0IGlzIHNvbWV3aGF0CisgICAgICAgIC8vIGluY2VzdHVvdXMuICBJdCB1c2VzIFVJbmZvLCB3aGljaCBpcyB0aGUgc2FtZSBkYXRhYmFzZSB0aGF0CisgICAgICAgIC8vIE5vcm1hbGl6ZXJCdWlsZGVyIHVzZXMsIHNvIGlmIHNvbWV0aGluZyBpcyB3cm9uZyB3aXRoCisgICAgICAgIC8vIFVJbmZvLCB0aGUgZm9sbG93aW5nIHRlc3Qgd29uJ3Qgc2hvdyBpdC4gIEFsbCBpdCB3aWxsIHNob3cKKyAgICAgICAgLy8gaXMgdGhhdCBOb3JtYWxpemVyQnVpbGRlciBoYXMgYmVlbiBydW4gd2l0aCB3aGF0ZXZlciB0aGUKKyAgICAgICAgLy8gY3VycmVudCBVSW5mbyBpcy4KKyAgICAgICAgLy8gCisgICAgICAgIC8vIFdlIGNvbW1lbnQgdGhpcyBvdXQgaW4gZmF2b3Igb2YgdGhlIHRlc3QgYWJvdmUsIHdoaWNoCisgICAgICAgIC8vIHByb3ZpZGVzIGluZGVwZW5kZW50IHZlcmlmaWNhdGlvbiAoYnV0IGFsc28gcmVxdWlyZXMKKyAgICAgICAgLy8gaW5kZXBlbmRlbnQgdXBkYXRpbmcpLgorLy8gICAgICBsb2dsbigiLS0tIik7CisvLyAgICAgIFVJbmZvIHVpbmZvID0gbmV3IFVJbmZvKCk7CisvLyAgICAgIGZvciAoaW50IGk9MDsgaTw9MHhGRkZGOyArK2kpIHsKKy8vICAgICAgICAgIGlmICghdWluZm8uaXNFeGNsdWRlZENvbXBvc2l0aW9uKChjaGFyKWkpIHx8CisvLyAgICAgICAgICAgICAgKCF1aW5mby5oYXNDYW5vbmljYWxEZWNvbXBvc2l0aW9uKChjaGFyKWkpICYmCisvLyAgICAgICAgICAgICAgICF1aW5mby5oYXNDb21wYXRpYmlsaXR5RGVjb21wb3NpdGlvbigoY2hhcilpKSkpIGNvbnRpbnVlOworLy8gICAgICAgICAgU3RyaW5nIGEgPSBTdHJpbmcudmFsdWVPZigoY2hhcilpKTsKKy8vICAgICAgICAgIFN0cmluZyBiID0gTm9ybWFsaXplci5ub3JtYWxpemUoYSwgTm9ybWFsaXplci5ERUNPTVBfQ09NUEFULCAwKTsKKy8vICAgICAgICAgIFN0cmluZyBjID0gTm9ybWFsaXplci5ub3JtYWxpemUoYiwgTm9ybWFsaXplci5DT01QT1NFLCAwKTsKKy8vICAgICAgICAgIGlmIChjLmVxdWFscyhhKSkgeworLy8gICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgaGV4KGEpICsgIiB4IERFQ09NUF9DT01QQVQgPT4gIiArCisvLyAgICAgICAgICAgICAgICAgICAgaGV4KGIpICsgIiB4IENPTVBPU0UgPT4gIiArCisvLyAgICAgICAgICAgICAgICAgICAgaGV4KGMpKTsKKy8vICAgICAgICAgIH0gZWxzZSBpZiAoaXNWZXJib3NlKCkpIHsKKy8vICAgICAgICAgICAgICBsb2dsbigiT2s6ICIgKyBoZXgoYSkgKyAiIHggREVDT01QX0NPTVBBVCA9PiAiICsKKy8vICAgICAgICAgICAgICAgICAgICBoZXgoYikgKyAiIHggQ09NUE9TRSA9PiAiICsKKy8vICAgICAgICAgICAgICAgICAgICBoZXgoYykpOyAgICAgICAgICAgICAgICAKKy8vICAgICAgICAgIH0KKy8vICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgZm9yIGEgcHJvYmxlbSB0aGF0IHNob3dlZCB1cCBqdXN0IGJlZm9yZSBJQ1UgMS42IHJlbGVhc2UKKyAgICAgKiBoYXZpbmcgdG8gZG8gd2l0aCBjb21iaW5pbmcgY2hhcmFjdGVycyB3aXRoIGFuIGluZGV4IG9mIHplcm8uCisgICAgICogU3VjaCBjaGFyYWN0ZXJzIGRvIG5vdCBwYXJ0aWNpcGF0ZSBpbiBhbnkgY2Fub25pY2FsCisgICAgICogZGVjb21wb3NpdGlvbnMuICBIb3dldmVyLCBoYXZpbmcgYW4gaW5kZXggb2YgemVybyBtZWFucyB0aGF0CisgICAgICogdGhleSBhbGwgc2hhcmUgb25lIHR5cGVNYXNrW10gZW50cnksIHRoYXQgaXMsIHRoZXkgYWxsIGhhdmUgdG8KKyAgICAgKiBtYXAgdG8gdGhlIHNhbWUgY2Fub25pY2FsIGNsYXNzLCB3aGljaCBpcyBub3QgdGhlIGNhc2UsIGluCisgICAgICogcmVhbGl0eS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0WmVyb0luZGV4KCkgeworICAgICAgICBTdHJpbmdbXSBEQVRBID0geworICAgICAgICAgICAgLy8gRXhwZWN0IGNvbDEgeCBDT01QT1NFX0NPTVBBVCA9PiBjb2wyCisgICAgICAgICAgICAvLyBFeHBlY3QgY29sMiB4IERFQ09NUCA9PiBjb2wzCisgICAgICAgICAgICAiQVx1MDMxNlx1MDMwMCIsICJcdTAwQzBcdTAzMTYiLCAiQVx1MDMxNlx1MDMwMCIsCisgICAgICAgICAgICAiQVx1MDMwMFx1MDMxNiIsICJcdTAwQzBcdTAzMTYiLCAiQVx1MDMxNlx1MDMwMCIsCisgICAgICAgICAgICAiQVx1MDMyN1x1MDMwMCIsICJcdTAwQzBcdTAzMjciLCAiQVx1MDMyN1x1MDMwMCIsCisgICAgICAgICAgICAiY1x1MDMyMVx1MDMyNyIsICJjXHUwMzIxXHUwMzI3IiwgImNcdTAzMjFcdTAzMjciLAorICAgICAgICAgICAgImNcdTAzMjdcdTAzMjEiLCAiXHUwMEU3XHUwMzIxIiwgImNcdTAzMjdcdTAzMjEiLAorICAgICAgICB9OworCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgaSs9MykgeworICAgICAgICAgICAgU3RyaW5nIGEgPSBEQVRBW2ldOworICAgICAgICAgICAgU3RyaW5nIGIgPSBOb3JtYWxpemVyLm5vcm1hbGl6ZShhLCBOb3JtYWxpemVyLkNPTVBPU0VfQ09NUEFULCAwKTsKKyAgICAgICAgICAgIFN0cmluZyBleHAgPSBEQVRBW2krMV07CisgICAgICAgICAgICBpZiAoYi5lcXVhbHMoZXhwKSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJPazogIiArIGhleChhKSArICIgeCBDT01QT1NFX0NPTVBBVCA9PiAiICsgaGV4KGIpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBoZXgoYSkgKyAiIHggQ09NUE9TRV9DT01QQVQgPT4gIiArIGhleChiKSArCisgICAgICAgICAgICAgICAgICAgICAgIiwgZXhwZWN0ICIgKyBoZXgoZXhwKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhID0gTm9ybWFsaXplci5ub3JtYWxpemUoYiwgTm9ybWFsaXplci5ERUNPTVAsIDApOworICAgICAgICAgICAgZXhwID0gREFUQVtpKzJdOworICAgICAgICAgICAgaWYgKGEuZXF1YWxzKGV4cCkpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT2s6ICIgKyBoZXgoYikgKyAiIHggREVDT01QID0+ICIgKyBoZXgoYSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIGhleChiKSArICIgeCBERUNPTVAgPT4gIiArIGhleChhKSArCisgICAgICAgICAgICAgICAgICAgICAgIiwgZXhwZWN0ICIgKyBoZXgoZXhwKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IGZvciBhIHByb2JsZW0gZm91bmQgYnkgVmVyaXNpZ24uICBQcm9ibGVtIGlzIHRoYXQKKyAgICAgKiBjaGFyYWN0ZXJzIGF0IHRoZSBzdGFydCBvZiBhIHN0cmluZyBhcmUgbm90IHB1dCBpbiBjYW5vbmljYWwKKyAgICAgKiBvcmRlciBjb3JyZWN0bHkgYnkgY29tcG9zZSgpIGlmIHRoZXJlIGlzIG5vIHN0YXJ0ZXIuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFZlcmlzaWduKCkgeworICAgICAgICBTdHJpbmdbXSBpbnB1dHMgPSB7CisgICAgICAgICAgICAiXHUwNWI4XHUwNWI5XHUwNWIxXHUwNTkxXHUwNWMzXHUwNWIwXHUwNWFjXHUwNTlmIiwKKyAgICAgICAgICAgICJcdTA1OTJcdTA1YjdcdTA1YmNcdTA1YTVcdTA1YjBcdTA1YzBcdTA1YzRcdTA1YWQiCisgICAgICAgIH07CisgICAgICAgIFN0cmluZ1tdIG91dHB1dHMgPSB7CisgICAgICAgICAgICAiXHUwNWIxXHUwNWI4XHUwNWI5XHUwNTkxXHUwNWMzXHUwNWIwXHUwNWFjXHUwNTlmIiwKKyAgICAgICAgICAgICJcdTA1YjBcdTA1YjdcdTA1YmNcdTA1YTVcdTA1OTJcdTA1YzBcdTA1YWRcdTA1YzQiCisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbnB1dHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIFN0cmluZyBpbnB1dCA9IGlucHV0c1tpXTsKKyAgICAgICAgICAgIFN0cmluZyBvdXRwdXQgPSBvdXRwdXRzW2ldOworICAgICAgICAgICAgU3RyaW5nIHJlc3VsdCA9IE5vcm1hbGl6ZXIuZGVjb21wb3NlKGlucHV0LCBmYWxzZSwgMCk7CisgICAgICAgICAgICBpZiAoIXJlc3VsdC5lcXVhbHMob3V0cHV0KSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMIGlucHV0OiAiICsgVXRpbGl0eS5lc2NhcGUoaW5wdXQpKTsKKyAgICAgICAgICAgICAgICBlcnJsbigiIGRlY29tcG9zZTogIiArIFV0aWxpdHkuZXNjYXBlKHJlc3VsdCkpOworICAgICAgICAgICAgICAgIGVycmxuKCIgIGV4cGVjdGVkOiAiICsgVXRpbGl0eS5lc2NhcGUob3V0cHV0KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQgPSBOb3JtYWxpemVyLmNvbXBvc2UoaW5wdXQsIGZhbHNlLCAwKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0LmVxdWFscyhvdXRwdXQpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUwgaW5wdXQ6ICIgKyBVdGlsaXR5LmVzY2FwZShpbnB1dCkpOworICAgICAgICAgICAgICAgIGVycmxuKCIgICBjb21wb3NlOiAiICsgVXRpbGl0eS5lc2NhcGUocmVzdWx0KSk7CisgICAgICAgICAgICAgICAgZXJybG4oIiAgZXhwZWN0ZWQ6ICIgKyBVdGlsaXR5LmVzY2FwZShvdXRwdXQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gSW50ZXJuYWwgdXRpbGl0aWVzCisgICAgLy8KKworICAgIHByaXZhdGUgdm9pZCBiYWNrQW5kRm9ydGgoTm9ybWFsaXplciBpdGVyLCBTdHJpbmcgaW5wdXQpCisgICAgeworICAgICAgICBpdGVyLnNldFRleHQoaW5wdXQpOworCisgICAgICAgIC8vIFJ1biB0aHJvdWdoIHRoZSBpdGVyYXRvciBmb3J3YXJkcyBhbmQgc3RpY2sgaXQgaW50byBhIFN0cmluZ0J1ZmZlcgorICAgICAgICBTdHJpbmdCdWZmZXIgZm9yd2FyZCA9ICBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGZvciAoY2hhciBjaCA9IGl0ZXIuZmlyc3QoKTsgY2ggIT0gaXRlci5ET05FOyBjaCA9IGl0ZXIubmV4dCgpKSB7CisgICAgICAgICAgICBmb3J3YXJkLmFwcGVuZChjaCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBOb3cgZG8gaXQgYmFja3dhcmRzCisgICAgICAgIFN0cmluZ0J1ZmZlciByZXZlcnNlID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3IgKGNoYXIgY2ggPSBpdGVyLmxhc3QoKTsgY2ggIT0gaXRlci5ET05FOyBjaCA9IGl0ZXIucHJldmlvdXMoKSkgeworICAgICAgICAgICAgcmV2ZXJzZS5pbnNlcnQoMCwgY2gpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFmb3J3YXJkLnRvU3RyaW5nKCkuZXF1YWxzKHJldmVyc2UudG9TdHJpbmcoKSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBGb3J3YXJkL3JldmVyc2UgbWlzbWF0Y2ggZm9yIGlucHV0ICIgKyBoZXgoaW5wdXQpCisgICAgICAgICAgICAgICAgICArICIsIGZvcndhcmQ6ICIgKyBoZXgoZm9yd2FyZCkgKyAiLCBiYWNrd2FyZDogIiArIGhleChyZXZlcnNlKSk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNWZXJib3NlKCkpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJPazogRm9yd2FyZC9yZXZlcnNlIGZvciBpbnB1dCAiICsgaGV4KGlucHV0KQorICAgICAgICAgICAgICAgICAgKyAiLCBmb3J3YXJkOiAiICsgaGV4KGZvcndhcmQpICsgIiwgYmFja3dhcmQ6ICIgKyBoZXgocmV2ZXJzZSkpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGJhY2tBbmRGb3J0aChOb3JtYWxpemVyIGl0ZXIsIFN0cmluZ1tdW10gdGVzdHMpCisgICAgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBpdGVyLnNldFRleHQodGVzdHNbaV1bMF0pOworCisgICAgICAgICAgICAvLyBSdW4gdGhyb3VnaCB0aGUgaXRlcmF0b3IgZm9yd2FyZHMgYW5kIHN0aWNrIGl0IGludG8gYSBTdHJpbmdCdWZmZXIKKyAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBmb3J3YXJkID0gIG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgICAgIGZvciAoY2hhciBjaCA9IGl0ZXIuZmlyc3QoKTsgY2ggIT0gaXRlci5ET05FOyBjaCA9IGl0ZXIubmV4dCgpKSB7CisgICAgICAgICAgICAgICAgZm9yd2FyZC5hcHBlbmQoY2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBOb3cgZG8gaXQgYmFja3dhcmRzCisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgcmV2ZXJzZSA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgICAgIGZvciAoY2hhciBjaCA9IGl0ZXIubGFzdCgpOyBjaCAhPSBpdGVyLkRPTkU7IGNoID0gaXRlci5wcmV2aW91cygpKSB7CisgICAgICAgICAgICAgICAgcmV2ZXJzZS5pbnNlcnQoMCwgY2gpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIWZvcndhcmQudG9TdHJpbmcoKS5lcXVhbHMocmV2ZXJzZS50b1N0cmluZygpKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBGb3J3YXJkL3JldmVyc2UgbWlzbWF0Y2ggZm9yIGlucHV0ICIgKyBoZXgodGVzdHNbaV1bMF0pCisgICAgICAgICAgICAgICAgICAgICsgIiwgZm9yd2FyZDogIiArIGhleChmb3J3YXJkKSArICIsIGJhY2t3YXJkOiAiICsgaGV4KHJldmVyc2UpKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNWZXJib3NlKCkpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiT2s6IEZvcndhcmQvcmV2ZXJzZSBmb3IgaW5wdXQgIiArIGhleCh0ZXN0c1tpXVswXSkKKyAgICAgICAgICAgICAgICAgICAgICArICIsIGZvcndhcmQ6ICIgKyBoZXgoZm9yd2FyZCkgKyAiLCBiYWNrd2FyZDogIiArIGhleChyZXZlcnNlKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgc3RhdGljVGVzdChOb3JtYWxpemVyLk1vZGUgbW9kZSwgaW50IG9wdGlvbnMsIFN0cmluZ1tdW10gdGVzdHMsIGludCBvdXRDb2wpCisgICAgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RzLmxlbmd0aDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBTdHJpbmcgaW5wdXQgPSB0ZXN0c1tpXVswXTsKKyAgICAgICAgICAgIFN0cmluZyBleHBlY3QgPSB0ZXN0c1tpXVtvdXRDb2xdOworCisgICAgICAgICAgICBsb2dsbigiTm9ybWFsaXppbmcgJyIgKyBpbnB1dCArICInICgiICsgaGV4KGlucHV0KSArICIpIiApOworCisgICAgICAgICAgICBTdHJpbmcgb3V0cHV0ID0gTm9ybWFsaXplci5ub3JtYWxpemUoaW5wdXQsIG1vZGUsIG9wdGlvbnMpOworCisgICAgICAgICAgICBpZiAoIW91dHB1dC5lcXVhbHMoZXhwZWN0KSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBjYXNlICIgKyBpCisgICAgICAgICAgICAgICAgICAgICsgIiBleHBlY3RlZCAnIiArIGV4cGVjdCArICInICgiICsgaGV4KGV4cGVjdCkgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgKyAiIGJ1dCBnb3QgJyIgKyBvdXRwdXQgKyAiJyAoIiArIGhleChvdXRwdXQpICsgIikiICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgaXRlcmF0ZVRlc3QoTm9ybWFsaXplciBpdGVyLCBTdHJpbmdbXVtdIHRlc3RzLCBpbnQgb3V0Q29sKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXN0cy5sZW5ndGg7IGkrKykKKyAgICAgICAgeworICAgICAgICAgICAgU3RyaW5nIGlucHV0ID0gdGVzdHNbaV1bMF07CisgICAgICAgICAgICBTdHJpbmcgZXhwZWN0ID0gdGVzdHNbaV1bb3V0Q29sXTsKKworICAgICAgICAgICAgbG9nbG4oIk5vcm1hbGl6aW5nICciICsgaW5wdXQgKyAiJyAoIiArIGhleChpbnB1dCkgKyAiKSIgKTsKKworICAgICAgICAgICAgaXRlci5zZXRUZXh0KGlucHV0KTsKKyAgICAgICAgICAgIGFzc2VydEVxdWFsKGV4cGVjdCwgaXRlciwgImNhc2UgIiArIGkgKyAiICIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGFzc2VydEVxdWFsKFN0cmluZyBleHBlY3RlZCwgTm9ybWFsaXplciBpdGVyLCBTdHJpbmcgbXNnKQorICAgIHsKKyAgICAgICAgaW50IGluZGV4ID0gMDsKKyAgICAgICAgZm9yIChjaGFyIGNoID0gaXRlci5maXJzdCgpOyBjaCAhPSBpdGVyLkRPTkU7IGNoID0gaXRlci5uZXh0KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChpbmRleCA+PSBleHBlY3RlZC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgbXNnICsgIlVuZXhwZWN0ZWQgY2hhcmFjdGVyICciICsgY2ggKyAiJyAoIiArIGhleChjaCkgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBhdCBpbmRleCAiICsgaW5kZXgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2hhciB3YW50ID0gZXhwZWN0ZWQuY2hhckF0KGluZGV4KTsKKyAgICAgICAgICAgIGlmIChjaCAhPSB3YW50KSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBtc2cgKyAiZ290ICciICsgY2ggKyAiJyAoIiArIGhleChjaCkgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBidXQgZXhwZWN0ZWQgJyIgKyB3YW50ICsgIicgKCIgKyBoZXgod2FudCkgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBhdCBpbmRleCAiICsgaW5kZXgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaW5kZXggPCBleHBlY3RlZC5sZW5ndGgoKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBtc2cgKyAiT25seSBnb3QgIiArIGluZGV4ICsgIiBjaGFycywgZXhwZWN0ZWQgIiArIGV4cGVjdGVkLmxlbmd0aCgpKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3Qvbm9ybWFsaXplci9Db25mb3JtYW5jZVRlc3QuamF2YSBiL3NyYy9jb20vaWJtL3Rlc3Qvbm9ybWFsaXplci9Db25mb3JtYW5jZVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yYWRhOTJhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGVzdC9ub3JtYWxpemVyL0NvbmZvcm1hbmNlVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjQ4IEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoYykgMTk5Ny0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0udGVzdC5ub3JtYWxpemVyOworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGNvbS5pYm0udGVzdC4qOworaW1wb3J0IGNvbS5pYm0udGV4dC4qOworaW1wb3J0IGNvbS5pYm0udXRpbC5VdGlsaXR5OworCitwdWJsaWMgY2xhc3MgQ29uZm9ybWFuY2VUZXN0IGV4dGVuZHMgVGVzdEZtd2sgeworCisgICAgTm9ybWFsaXplciBub3JtYWxpemVyOworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBURVNUX1NVSVRFX0ZJTEUgPQorICAgICAgICAic3JjL2RhdGEvdW5pY29kZS9EcmFmdC1UZXN0U3VpdGUudHh0IjsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgQ29uZm9ybWFuY2VUZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIHB1YmxpYyBDb25mb3JtYW5jZVRlc3QoKSB7CisgICAgICAgIC8vIERvZXNuJ3QgbWF0dGVyIHdoYXQgdGhlIHN0cmluZyBhbmQgbW9kZSBhcmU7IHdlJ2xsIGNoYW5nZQorICAgICAgICAvLyB0aGVtIGxhdGVyIGFzIG5lZWRlZC4KKyAgICAgICAgbm9ybWFsaXplciA9IG5ldyBOb3JtYWxpemVyKCIiLCBOb3JtYWxpemVyLkNPTVBPU0UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgdGhlIGNvbmZvcm1hbmNlIG9mIE5vcm1hbGl6ZXIgdG8KKyAgICAgKiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvcmVwb3J0cy90cjE1L2NvbmZvcm1hbmNlL0RyYWZ0LVRlc3RTdWl0ZS50eHQuCisgICAgICogVGhpcyBmaWxlIG11c3QgYmUgbG9jYXRlZCBhdCB0aGUgcGF0aCBzcGVjaWZpZWQgYXMgVEVTVF9TVUlURV9GSUxFLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RDb25mb3JtYW5jZSgpIHsKKyAgICAgICAgQnVmZmVyZWRSZWFkZXIgaW5wdXQgPSBudWxsOworICAgICAgICBTdHJpbmcgbGluZSA9IG51bGw7CisgICAgICAgIFN0cmluZ1tdIGZpZWxkcyA9IG5ldyBTdHJpbmdbNV07CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGludCBwYXNzQ291bnQgPSAwOworICAgICAgICBpbnQgZmFpbENvdW50ID0gMDsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgaW5wdXQgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IEZpbGVSZWFkZXIoVEVTVF9TVUlURV9GSUxFKSw2NCoxMDI0KTsKKyAgICAgICAgICAgIGZvciAoaW50IGNvdW50ID0gMDs7Kytjb3VudCkgeworICAgICAgICAgICAgICAgIGxpbmUgPSBpbnB1dC5yZWFkTGluZSgpOworICAgICAgICAgICAgICAgIGlmIChsaW5lID09IG51bGwpIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChsaW5lLmxlbmd0aCgpID09IDApIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgLy8gRXhwZWN0IDUgY29sdW1ucyBvZiB0aGlzIGZvcm1hdDoKKyAgICAgICAgICAgICAgICAvLyAxRTBDOzFFMEM7MDA0NCAwMzIzOzFFMEM7MDA0NCAwMzIzOyAjIDxjb21tZW50cz4KKworICAgICAgICAgICAgICAgIC8vIFNraXAgY29tbWVudHMKKyAgICAgICAgICAgICAgICBpZiAobGluZS5jaGFyQXQoMCkgPT0gJyMnKSBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIC8vIFBhcnNlIG91dCB0aGUgZmllbGRzCisgICAgICAgICAgICAgICAgaGV4c3BsaXQobGluZSwgJzsnLCBmaWVsZHMsIGJ1Zik7CisgICAgICAgICAgICAgICAgaWYgKGNoZWNrQ29uZm9ybWFuY2UoZmllbGRzLCBsaW5lKSkgeworICAgICAgICAgICAgICAgICAgICArK3Bhc3NDb3VudDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICArK2ZhaWxDb3VudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKChjb3VudCAlIDEwMDApID09IDk5OSkgeworICAgICAgICAgICAgICAgICAgICBsb2dsbigiTGluZSAiICsgKGNvdW50KzEpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGlucHV0LmNsb3NlKCk7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7fQorICAgICAgICAgICAgZXgucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJDb3VsZG4ndCByZWFkIGZpbGUgIgorICAgICAgICAgICAgICArIGV4LmdldENsYXNzKCkuZ2V0TmFtZSgpICsgIiAiICsgZXguZ2V0TWVzc2FnZSgpCisgICAgICAgICAgICAgICsgIiBsaW5lID0gIiArIGxpbmUKKyAgICAgICAgICAgICAgKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmYWlsQ291bnQgIT0gMCkgeworICAgICAgICAgICAgZXJybG4oIlRvdGFsOiAiICsgZmFpbENvdW50ICsgIiBsaW5lcyBmYWlsZWQsICIgKworICAgICAgICAgICAgICAgICAgcGFzc0NvdW50ICsgIiBsaW5lcyBwYXNzZWQiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvZ2xuKCJUb3RhbDogIiArIHBhc3NDb3VudCArICIgbGluZXMgcGFzc2VkIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBWZXJpZnkgdGhlIGNvbmZvcm1hbmNlIG9mIHRoZSBnaXZlbiBsaW5lIG9mIHRoZSBVbmljb2RlCisgICAgICogbm9ybWFsaXphdGlvbiAoVVRSIDE1KSB0ZXN0IHN1aXRlIGZpbGUuICBGb3IgZWFjaCBsaW5lLAorICAgICAqIHRoZXJlIGFyZSBmaXZlIGNvbHVtbnMsIGNvcnJlc3BvbmRpbmcgdG8gZmllbGRbMF0uLmZpZWxkWzRdLgorICAgICAqCisgICAgICogVGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzIG11c3QgYmUgdHJ1ZSBmb3IgYWxsIGNvbmZvcm1hbnQgaW1wbGVtZW50YXRpb25zCisgICAgICogIGMyID09IE5GQyhjMSkgPT0gTkZDKGMyKSA9PSBORkMoYzMpCisgICAgICogIGMzID09IE5GRChjMSkgPT0gTkZEKGMyKSA9PSBORkQoYzMpCisgICAgICogIGM0ID09IE5GS0MoYzEpID09IE5GS0MoYzIpID09IE5GS0MoYzMpID09IE5GS0MoYzQpID09IE5GS0MoYzUpCisgICAgICogIGM1ID09IE5GS0QoYzEpID09IE5GS0QoYzIpID09IE5GS0QoYzMpID09IE5GS0QoYzQpID09IE5GS0QoYzUpCisgICAgICoKKyAgICAgKiBAcGFyYW0gZmllbGQgdGhlIDUgY29sdW1ucworICAgICAqIEBwYXJhbSBsaW5lIHRoZSBzb3VyY2UgbGluZSBmcm9tIHRoZSB0ZXN0IHN1aXRlIGZpbGUKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHRlc3QgcGFzc2VzCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGNoZWNrQ29uZm9ybWFuY2UoU3RyaW5nW10gZmllbGQsIFN0cmluZyBsaW5lKSB7CisgICAgICAgIGJvb2xlYW4gcGFzcyA9IHRydWU7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7IC8vIHNjcmF0Y2gKKyAgICAgICAgU3RyaW5nIG91dDsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGk9MDsgaTw1OyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpPDMpIHsKKyAgICAgICAgICAgICAgICBvdXQgPSBOb3JtYWxpemVyLm5vcm1hbGl6ZShmaWVsZFtpXSwgTm9ybWFsaXplci5DT01QT1NFLCAwKTsKKyAgICAgICAgICAgICAgICBwYXNzICY9IGFzc2VydEVxdWFsKCJDIiwgZmllbGRbaV0sIG91dCwgZmllbGRbMV0sICJjMiE9QyhjIiArIChpKzEpKTsKKyAgICAgICAgICAgICAgICBvdXQgPSBpdGVyYXRpdmVOb3JtKGZpZWxkW2ldLCBOb3JtYWxpemVyLkNPTVBPU0UsIGJ1ZiwgKzEpOworICAgICAgICAgICAgICAgIHBhc3MgJj0gYXNzZXJ0RXF1YWwoIkMoKzEpIiwgZmllbGRbaV0sIG91dCwgZmllbGRbMV0sICJjMiE9QyhjIiArIChpKzEpKTsKKyAgICAgICAgICAgICAgICBvdXQgPSBpdGVyYXRpdmVOb3JtKGZpZWxkW2ldLCBOb3JtYWxpemVyLkNPTVBPU0UsIGJ1ZiwgLTEpOworICAgICAgICAgICAgICAgIHBhc3MgJj0gYXNzZXJ0RXF1YWwoIkMoLTEpIiwgZmllbGRbaV0sIG91dCwgZmllbGRbMV0sICJjMiE9QyhjIiArIChpKzEpKTsKKworICAgICAgICAgICAgICAgIG91dCA9IE5vcm1hbGl6ZXIubm9ybWFsaXplKGZpZWxkW2ldLCBOb3JtYWxpemVyLkRFQ09NUCwgMCk7CisgICAgICAgICAgICAgICAgcGFzcyAmPSBhc3NlcnRFcXVhbCgiRCIsIGZpZWxkW2ldLCBvdXQsIGZpZWxkWzJdLCAiYzMhPUQoYyIgKyAoaSsxKSk7CisgICAgICAgICAgICAgICAgb3V0ID0gaXRlcmF0aXZlTm9ybShmaWVsZFtpXSwgTm9ybWFsaXplci5ERUNPTVAsIGJ1ZiwgKzEpOworICAgICAgICAgICAgICAgIHBhc3MgJj0gYXNzZXJ0RXF1YWwoIkQoKzEpIiwgZmllbGRbaV0sIG91dCwgZmllbGRbMl0sICJjMyE9RChjIiArIChpKzEpKTsKKyAgICAgICAgICAgICAgICBvdXQgPSBpdGVyYXRpdmVOb3JtKGZpZWxkW2ldLCBOb3JtYWxpemVyLkRFQ09NUCwgYnVmLCAtMSk7CisgICAgICAgICAgICAgICAgcGFzcyAmPSBhc3NlcnRFcXVhbCgiRCgtMSkiLCBmaWVsZFtpXSwgb3V0LCBmaWVsZFsyXSwgImMzIT1EKGMiICsgKGkrMSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0ID0gTm9ybWFsaXplci5ub3JtYWxpemUoZmllbGRbaV0sIE5vcm1hbGl6ZXIuQ09NUE9TRV9DT01QQVQsIDApOworICAgICAgICAgICAgcGFzcyAmPSBhc3NlcnRFcXVhbCgiS0MiLCBmaWVsZFtpXSwgb3V0LCBmaWVsZFszXSwgImM0IT1LQyhjIiArIChpKzEpKTsKKyAgICAgICAgICAgIG91dCA9IGl0ZXJhdGl2ZU5vcm0oZmllbGRbaV0sIE5vcm1hbGl6ZXIuQ09NUE9TRV9DT01QQVQsIGJ1ZiwgKzEpOworICAgICAgICAgICAgcGFzcyAmPSBhc3NlcnRFcXVhbCgiS0QoKzEpIiwgZmllbGRbaV0sIG91dCwgZmllbGRbM10sICJjNCE9S0MoYyIgKyAoaSsxKSk7CisgICAgICAgICAgICBvdXQgPSBpdGVyYXRpdmVOb3JtKGZpZWxkW2ldLCBOb3JtYWxpemVyLkNPTVBPU0VfQ09NUEFULCBidWYsIC0xKTsKKyAgICAgICAgICAgIHBhc3MgJj0gYXNzZXJ0RXF1YWwoIktEKC0xKSIsIGZpZWxkW2ldLCBvdXQsIGZpZWxkWzNdLCAiYzQhPUtDKGMiICsgKGkrMSkpOworCisgICAgICAgICAgICBvdXQgPSBOb3JtYWxpemVyLm5vcm1hbGl6ZShmaWVsZFtpXSwgTm9ybWFsaXplci5ERUNPTVBfQ09NUEFULCAwKTsKKyAgICAgICAgICAgIHBhc3MgJj0gYXNzZXJ0RXF1YWwoIktEIiwgZmllbGRbaV0sIG91dCwgZmllbGRbNF0sICJjNSE9S0QoYyIgKyAoaSsxKSk7CisgICAgICAgICAgICBvdXQgPSBpdGVyYXRpdmVOb3JtKGZpZWxkW2ldLCBOb3JtYWxpemVyLkRFQ09NUF9DT01QQVQsIGJ1ZiwgKzEpOworICAgICAgICAgICAgcGFzcyAmPSBhc3NlcnRFcXVhbCgiS0QoKzEpIiwgZmllbGRbaV0sIG91dCwgZmllbGRbNF0sICJjNSE9S0QoYyIgKyAoaSsxKSk7CisgICAgICAgICAgICBvdXQgPSBpdGVyYXRpdmVOb3JtKGZpZWxkW2ldLCBOb3JtYWxpemVyLkRFQ09NUF9DT01QQVQsIGJ1ZiwgLTEpOworICAgICAgICAgICAgcGFzcyAmPSBhc3NlcnRFcXVhbCgiS0QoLTEpIiwgZmllbGRbaV0sIG91dCwgZmllbGRbNF0sICJjNSE9S0QoYyIgKyAoaSsxKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFwYXNzKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIGxpbmUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBwYXNzOworICAgIH0KKworICAgIC8qKgorICAgICAqIERvIGEgbm9ybWFsaXphdGlvbiB1c2luZyB0aGUgaXRlcmF0aXZlIEFQSSBpbiB0aGUgZ2l2ZW4gZGlyZWN0aW9uLgorICAgICAqIEBwYXJhbSBidWYgc2NyYXRjaCBidWZmZXIKKyAgICAgKiBAcGFyYW0gZGlyIGVpdGhlciArMSBvciAtMQorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nIGl0ZXJhdGl2ZU5vcm0oU3RyaW5nIHN0ciwgTm9ybWFsaXplci5Nb2RlIG1vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgYnVmLCBpbnQgZGlyKSB7CisgICAgICAgIG5vcm1hbGl6ZXIuc2V0VGV4dChzdHIpOworICAgICAgICBub3JtYWxpemVyLnNldE1vZGUobW9kZSk7CisgICAgICAgIGJ1Zi5zZXRMZW5ndGgoMCk7CisgICAgICAgIGNoYXIgY2g7CisgICAgICAgIGlmIChkaXIgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGNoID0gbm9ybWFsaXplci5maXJzdCgpOyBjaCAhPSBOb3JtYWxpemVyLkRPTkU7CisgICAgICAgICAgICAgICAgIGNoID0gbm9ybWFsaXplci5uZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKGNoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoY2ggPSBub3JtYWxpemVyLmxhc3QoKTsgY2ggIT0gTm9ybWFsaXplci5ET05FOworICAgICAgICAgICAgICAgICBjaCA9IG5vcm1hbGl6ZXIucHJldmlvdXMoKSkgeworICAgICAgICAgICAgICAgIGJ1Zi5pbnNlcnQoMCwgY2gpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gb3AgbmFtZSBvZiBub3JtYWxpemF0aW9uIGZvcm0sIGUuZy4sICJLQyIKKyAgICAgKiBAcGFyYW0gcyBzdHJpbmcgYmVpbmcgbm9ybWFsaXplZAorICAgICAqIEBwYXJhbSBnb3QgdmFsdWUgcmVjZWl2ZWQKKyAgICAgKiBAcGFyYW0gZXhwIGV4cGVjdGVkIHZhbHVlCisgICAgICogQHBhcmFtIG1zZyBkZXNjcmlwdGlvbiBvZiB0aGlzIHRlc3QKKyAgICAgKiBAcGFyYW0gcmV0dXJuIHRydWUgaWYgZ290ID09IGV4cAorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBhc3NlcnRFcXVhbChTdHJpbmcgb3AsIFN0cmluZyBzLCBTdHJpbmcgZ290LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZXhwLCBTdHJpbmcgbXNnKSB7CisgICAgICAgIGlmIChleHAuZXF1YWxzKGdvdCkpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGVycmxuKFV0aWxpdHkuZXNjYXBlKCIgICAgICAiICsgbXNnICsgIikgIiArIG9wICsgIigiICsgcyArICIpPSIgKyBnb3QgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBleHAuICIgKyBleHApKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNwbGl0IGEgc3RyaW5nIGludG8gcGllY2VzIGJhc2VkIG9uIHRoZSBnaXZlbiBkZWxpbWl0ZXIKKyAgICAgKiBjaGFyYWN0ZXIuICBUaGVuLCBwYXJzZSB0aGUgcmVzdWx0YW50IGZpZWxkcyBmcm9tIGhleCBpbnRvCisgICAgICogY2hhcmFjdGVycy4gIFRoYXQgaXMsICIwMDQwIDA0MDA7MEMwMDswODk5IiAtPiBuZXcgU3RyaW5nW10geworICAgICAqICJcdTAwNDBcdTA0MDAiLCAiXHUwQzAwIiwgIlx1MDg5OSIgfS4gIFRoZSBvdXRwdXQgaXMgYXNzdW1lZCB0bworICAgICAqIGJlIG9mIHRoZSBwcm9wZXIgbGVuZ3RoIGFscmVhZHksIGFuZCBleGFjdGx5IG91dHB1dC5sZW5ndGgKKyAgICAgKiBmaWVsZHMgYXJlIHBhcnNlZC4gIElmIHRoZXJlIGFyZSB0b28gZmV3IGFuIGV4Y2VwdGlvbiBpcworICAgICAqIHRocm93bi4gIElmIHRoZXJlIGFyZSB0b28gbWFueSB0aGUgZXh0cmFzIGFyZSBpZ25vcmVkLgorICAgICAqCisgICAgICogQHBhcmFtIGJ1ZiBzY3JhdGNoIGJ1ZmZlcgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgaGV4c3BsaXQoU3RyaW5nIHMsIGNoYXIgZGVsaW1pdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nW10gb3V0cHV0LCBTdHJpbmdCdWZmZXIgYnVmKSB7CisgICAgICAgIGludCBpOworICAgICAgICBpbnQgcG9zID0gMDsKKyAgICAgICAgZm9yIChpPTA7IGk8b3V0cHV0Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpbnQgZGVsaW0gPSBzLmluZGV4T2YoZGVsaW1pdGVyLCBwb3MpOworICAgICAgICAgICAgaWYgKGRlbGltIDwgMCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIk1pc3NpbmcgZmllbGQgaW4gIiArIHMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gT3VyIGZpZWxkIGlzIGZyb20gcG9zLi5kZWxpbS0xLgorICAgICAgICAgICAgYnVmLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgIHdoaWxlIChwb3MgPCBkZWxpbSkgeworICAgICAgICAgICAgICAgIGlmIChzLmNoYXJBdChwb3MpID09ICcgJykgeworICAgICAgICAgICAgICAgICAgICArK3BvczsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBvcys0ID4gZGVsaW0pIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiUHJlbWF0dXJlIGVvbCBpbiAiICsgcyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGhleCA9IEludGVnZXIucGFyc2VJbnQocy5zdWJzdHJpbmcocG9zLCBwb3MrNCksIDE2KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGhleCA8IDAgfHwgaGV4ID4gMHhGRkZGKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJPdXQgb2YgcmFuZ2UgaGV4ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZXggKyAiIGluICIgKyBzKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKChjaGFyKSBoZXgpOworICAgICAgICAgICAgICAgICAgICBwb3MgKz0gNDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYnVmLmxlbmd0aCgpIDwgMSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkVtcHR5IGZpZWxkICIgKyBpICsgIiBpbiAiICsgcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXRwdXRbaV0gPSBidWYudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICsrcG9zOyAvLyBTa2lwIG92ZXIgZGVsaW0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFNwZWNpZmljIHRlc3RzIGZvciBkZWJ1Z2dpbmcuICBUaGVzZSBhcmUgZ2VuZXJhbGx5IGZhaWx1cmVzCisgICAgLy8gdGFrZW4gZnJvbSB0aGUgY29uZm9ybWFuY2UgZmlsZSwgYnV0IGN1bGxlZCBvdXQgdG8gbWFrZQorICAgIC8vIGRlYnVnZ2luZyBlYXNpZXIuICBUaGVzZSBjYW4gYmUgZWxpbWluYXRlZCB3aXRob3V0IGFmZmVjdGluZworICAgIC8vIGNvdmVyYWdlLgorCisgICAgcHVibGljIHZvaWQgX2hpZGVUZXN0Q2FzZTYoKSB7CisgICAgICAgIF90ZXN0T25lTGluZSgiMDM4NTswMzg1OzAwQTggMDMwMTswMDIwIDAzMDggMDMwMTswMDIwIDAzMDggMDMwMTsiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBfdGVzdE9uZUxpbmUoU3RyaW5nIGxpbmUpIHsKKyAgICAgICAgU3RyaW5nW10gZmllbGRzID0gbmV3IFN0cmluZ1s1XTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgLy8gUGFyc2Ugb3V0IHRoZSBmaWVsZHMKKyAgICAgICAgaGV4c3BsaXQobGluZSwgJzsnLCBmaWVsZHMsIGJ1Zik7CisgICAgICAgIGNoZWNrQ29uZm9ybWFuY2UoZmllbGRzLCBsaW5lKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXN0L25vcm1hbGl6ZXIvRXhoYXVzdGl2ZVRlc3QuamF2YSBiL3NyYy9jb20vaWJtL3Rlc3Qvbm9ybWFsaXplci9FeGhhdXN0aXZlVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQ0YjUyYWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXN0L25vcm1hbGl6ZXIvRXhoYXVzdGl2ZVRlc3QuamF2YQpAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGVzdC9ub3JtYWxpemVyL0F0dGljL0V4aGF1c3RpdmVUZXN0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDEvMDMvMTUgMjM6MzU6NTAgJCAKKyAqICRSZXZpc2lvbjogMS43ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRlc3Qubm9ybWFsaXplcjsKKworaW1wb3J0IGNvbS5pYm0udGVzdC4qOworaW1wb3J0IGNvbS5pYm0udGV4dC4qOworaW1wb3J0IGNvbS5pYm0uaWN1LmludGVybmFsLlVJbmZvOworCitwdWJsaWMgY2xhc3MgRXhoYXVzdGl2ZVRlc3QgZXh0ZW5kcyBUZXN0Rm13aworeworICAgIHByaXZhdGUgVUluZm8gaW5mbzsKKwkKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uCisgICAgeworICAgIAlVSW5mbyB0ZW1wSW5mbyA9IG51bGw7CisgICAgICAgIFN0cmluZ1tdIHRlbXBBcmdzID0gbmV3IFN0cmluZ1thcmdzLmxlbmd0aF07CisgICAgICAgIGludCBjb3VudCA9IDA7CisKKyAgICAgICAgLy8gQWxsb3cgdGhlIHRlc3QgdG8gYmUgcG9pbnRlZCBhdCBhIHNwZWNpZmljIHZlcnNpb24gb2YgdGhlIFVuaWNvZGUgZGF0YWJhc2UKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoYXJnc1tpXS5lcXVhbHMoIi1kYXRhIikpIHsKKyAgICAgICAgICAgICAgICB0ZW1wSW5mbyA9IG5ldyBVSW5mbyhhcmdzWysraV0sIGFyZ3NbKytpXSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRlbXBBcmdzW2NvdW50KytdID0gYXJnc1tpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGFyZ3MgPSBuZXcgU3RyaW5nW2NvdW50XTsKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weSh0ZW1wQXJncywgMCwgYXJncywgMCwgY291bnQpOworCisKKyAgICAgICAgaWYgKHRlbXBJbmZvID09IG51bGwpIHsKKyAgICAgICAgICAgIHRlbXBJbmZvID0gbmV3IFVJbmZvKCk7CisJICAgIH0KKyAgICAgICAgbmV3IEV4aGF1c3RpdmVUZXN0KHRlbXBJbmZvKS5ydW4oYXJncyk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBFeGhhdXN0aXZlVGVzdCgpIHsKKyAgICAJdGhpcy5pbmZvID0gbmV3IFVJbmZvKCk7CisgICAgfQorCisgICAgcHVibGljIEV4aGF1c3RpdmVUZXN0KFVJbmZvIGluZm8pIHsKKyAgICAJdGhpcy5pbmZvID0gaW5mbzsKKyAgICB9CisKKworICAgIC8qKgorICAgICAqIFJ1biB0aHJvdWdoIGFsbCBvZiB0aGUgY2hhcmFjdGVycyByZXR1cm5lZCBieSBhIGNvbXBvc2VkLWNoYXIgaXRlcmF0b3IKKyAgICAgKiBhbmQgbWFrZSBzdXJlIHRoYXQ6CisgICAgICogPHVsPgorICAgICAqIDxsaT5hKSBUaGV5IGRvIGluZGVlZCBoYXZlIGRlY29tcG9zaXRpb25zLgorICAgICAqIDxsaT5iKSBUaGUgZGVjb21wb3NpdGlvbiBhY2NvcmRpbmcgdG8gdGhlIGl0ZXJhdG9yIGlzIHRoZSBzYW1lIGFzCisgICAgICogICAgICAgICAgcmV0dXJuZWQgYnkgTm9ybWFsaXplci5kZWNvbXBvc2UoKS4KKyAgICAgKiA8bGk+YykgQWxsIGNoYXJhY3RlcnMgPGVtPm5vdDwvZW0+IHJldHVybmVkIGJ5IHRoZSBpdGVyYXRvciBkbyBub3QKKyAgICAgKiAgICAgICAgICBoYXZlIGRlY29tcG9zaXRpb25zLgorICAgICAqIDwvdWw+CisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdENvbXBvc2VkQ2hhckl0ZXIoKSB7CisgICAgICAgIGRvVGVzdENvbXBvc2VkQ2hhcnMoZmFsc2UpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGRvVGVzdENvbXBvc2VkQ2hhcnMoYm9vbGVhbiBjb21wYXQpIHsKKyAgICAgICAgaW50IG9wdGlvbnMgPSBOb3JtYWxpemVyLklHTk9SRV9IQU5HVUw7CisgICAgICAgIENvbXBvc2VkQ2hhckl0ZXIgaXRlciA9IG5ldyBDb21wb3NlZENoYXJJdGVyKGNvbXBhdCwgb3B0aW9ucyk7CisKKyAgICAgICAgY2hhciBsYXN0Q2hhciA9IDA7CisKKyAgICAgICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBjaGFyIGNoID0gaXRlci5uZXh0KCk7CisKKyAgICAgICAgICAgIC8vIFRlc3QgYWxsIGNoYXJhY3RlcnMgYmV0d2VlbiB0aGUgbGFzdCBvbmUgYW5kIHRoaXMgb25lIHRvIG1ha2UKKyAgICAgICAgICAgIC8vIHN1cmUgdGhhdCB0aGV5IGRvbid0IGhhdmUgZGVjb21wb3NpdGlvbnMKKyAgICAgICAgICAgIGFzc2VydE5vRGVjb21wKGxhc3RDaGFyLCBjaCwgY29tcGF0LCBvcHRpb25zKTsKKyAgICAgICAgICAgIGxhc3RDaGFyID0gY2g7CisKKyAgICAgICAgICAgIC8vIE5vdyBtYWtlIHN1cmUgdGhhdCB0aGUgZGVjb21wb3NpdGlvbnMgZm9yIHRoaXMgY2hhcmFjdGVyCisgICAgICAgICAgICAvLyBtYWtlIHNlbnNlCisgICAgICAgICAgICBTdHJpbmcgY2hTdHJpbmcgICA9IG5ldyBTdHJpbmdCdWZmZXIoKS5hcHBlbmQoY2gpLnRvU3RyaW5nKCk7CisgICAgICAgICAgICBTdHJpbmcgaXRlckRlY29tcCA9IGl0ZXIuZGVjb21wb3NpdGlvbigpOworICAgICAgICAgICAgU3RyaW5nIG5vcm1EZWNvbXAgPSBOb3JtYWxpemVyLmRlY29tcG9zZShjaFN0cmluZywgY29tcGF0LCAwKTsKKworICAgICAgICAgICAgaWYgKGl0ZXJEZWNvbXAuZXF1YWxzKGNoU3RyaW5nKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJFUlJPUjogIiArIGhleChjaCkgKyAiIGhhcyBpZGVudGljYWwgZGVjb21wIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICghaXRlckRlY29tcC5lcXVhbHMobm9ybURlY29tcCkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRVJST1I6IE5vcm1hbGl6ZXIgZGVjb21wIGZvciAiICsgaGV4KGNoKSArICIgKCIgKyBoZXgobm9ybURlY29tcCkgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgKyAiICE9IGl0ZXIgZGVjb21wICgiICsgaGV4KGl0ZXJEZWNvbXApICsgIikiICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0Tm9EZWNvbXAobGFzdENoYXIsICdcdUZGRkYnLCBjb21wYXQsIG9wdGlvbnMpOworICAgIH0KKworICAgIHZvaWQgYXNzZXJ0Tm9EZWNvbXAoY2hhciBzdGFydCwgY2hhciBsaW1pdCwgYm9vbGVhbiBjb21wYXQsIGludCBvcHRpb25zKQorICAgIHsKKyAgICAgICAgZm9yIChjaGFyIHggPSArK3N0YXJ0OyB4IDwgbGltaXQ7IHgrKykgeworICAgICAgICAgICAgU3RyaW5nIHhTdHJpbmcgICA9IG5ldyBTdHJpbmdCdWZmZXIoKS5hcHBlbmQoeCkudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIFN0cmluZyBkZWNvbXAgPSBOb3JtYWxpemVyLmRlY29tcG9zZSh4U3RyaW5nLCBjb21wYXQsIG9wdGlvbnMpOworICAgICAgICAgICAgaWYgKCFkZWNvbXAuZXF1YWxzKHhTdHJpbmcpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVSUk9SOiAiICsgaGV4KHgpICsgIiBoYXMgZGVjb21wb3NpdGlvbiAoIiArIGhleChkZWNvbXApICsgIikiCisgICAgICAgICAgICAgICAgICAgICsgIiBidXQgd2FzIG5vdCByZXR1cm5lZCBieSBpdGVyYXRvciIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisKKyAgICBwdWJsaWMgdm9pZCBUZXN0Um91bmRUcmlwKCkgeworICAgICAgICBpbnQgb3B0aW9ucyA9IE5vcm1hbGl6ZXIuSUdOT1JFX0hBTkdVTDsKKyAgICAgICAgYm9vbGVhbiBjb21wYXQgPSBmYWxzZTsKKworICAgICAgICBDb21wb3NlZENoYXJJdGVyIGl0ZXIgPSBuZXcgQ29tcG9zZWRDaGFySXRlcihmYWxzZSwgb3B0aW9ucyk7CisgICAgICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkgeworICAgICAgICAgICAgY2hhciBjaCA9IGl0ZXIubmV4dCgpOworCisgICAgICAgICAgICBTdHJpbmcgY2hTdHIgPSBuZXcgU3RyaW5nQnVmZmVyKCkuYXBwZW5kKGNoKS50b1N0cmluZygpOworICAgICAgICAgICAgU3RyaW5nIGRlY29tcCA9IE5vcm1hbGl6ZXIuZGVjb21wb3NlKGNoU3RyLCBjb21wYXQsIG9wdGlvbnMpOworICAgICAgICAgICAgU3RyaW5nIGNvbXAgPSBOb3JtYWxpemVyLmNvbXBvc2UoZGVjb21wLCBjb21wYXQsIG9wdGlvbnMpOworCisgICAgICAgICAgICBzaG9ydCBjQ2xhc3MgPSBpbmZvLmdldENhbm9uaWNhbENsYXNzKGRlY29tcC5jaGFyQXQoMCkpOworCisgICAgICAgICAgICBpZiAoaW5mby5pc0V4Y2x1ZGVkQ29tcG9zaXRpb24oY2gpKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIlNraXBwZWQgZXhjbHVkZWQgY2hhciAiICsgaGV4KGNoKSArICIgKCIgKyBpbmZvLmdldE5hbWUoY2gsdHJ1ZSkgKyAiKSIgKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQXZvaWQgZGlzcGFyYWdlZCBjaGFyYWN0ZXJzCisgICAgICAgICAgICBpZiAoaW5mby5nZXREZWNvbXBvc2l0aW9uKGNoKS5sZW5ndGgoKSA9PSA0KSBjb250aW51ZTsKKworICAgICAgICAgICAgaWYgKCFjb21wLmVxdWFscyhjaFN0cikpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRVJST1I6IFJvdW5kIHRyaXAgaW52YWxpZDogIiArIGhleChjaFN0cikgKyAiIC0tPiAiICsgaGV4KGRlY29tcCkKKyAgICAgICAgICAgICAgICAgICAgKyAiIC0tPiAiICsgaGV4KGNvbXApKTsKKworICAgICAgICAgICAgICAgIGVycmxuKCIgIGNoYXIgZGVjb21wIGlzICciICsgaW5mby5nZXREZWNvbXBvc2l0aW9uKGNoKSArICInIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXN0L25vcm1hbGl6ZXIvcGFja2FnZS5odG1sIGIvc3JjL2NvbS9pYm0vdGVzdC9ub3JtYWxpemVyL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43NTQ0NzYwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGVzdC9ub3JtYWxpemVyL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPCEtLSAgQ29weXJpZ2h0IChDKSAyMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorICBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGVzdC9ub3JtYWxpemVyL0F0dGljL3BhY2thZ2UuaHRtbCx2ICQKKyAgJFJldmlzaW9uOiAxLjEgJAorICAkRGF0ZTogMjAwMC8wMy8xNSAyMTozNTo0OSAkCistLT4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIj4KK1Rlc3RzIGZvciBOb3JtYWxpemVyLgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3QvcGFja2FnZS5odG1sIGIvc3JjL2NvbS9pYm0vdGVzdC9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjAwZWU1YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3QvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8IS0tICBDb3B5cmlnaHQgKEMpIDIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisgIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXN0L0F0dGljL3BhY2thZ2UuaHRtbCx2ICQKKyAgJFJldmlzaW9uOiAxLjEgJAorICAkRGF0ZTogMjAwMC8wMy8xNSAyMTozNTo0OCAkCistLT4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIj4KK1NoYXJlZCB1dGlsaXRpZXMgZm9yIHRlc3RzLgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3QvcmJiaS9CcmVha0l0ZXJhdG9yUnVsZXNfZW5fVVNfVEVTVC5qYXZhIGIvc3JjL2NvbS9pYm0vdGVzdC9yYmJpL0JyZWFrSXRlcmF0b3JSdWxlc19lbl9VU19URVNULmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjdmNjQ4NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3QvcmJiaS9CcmVha0l0ZXJhdG9yUnVsZXNfZW5fVVNfVEVTVC5qYXZhCkBAIC0wLDAgKzEsMjIyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXN0L3JiYmkvQXR0aWMvQnJlYWtJdGVyYXRvclJ1bGVzX2VuX1VTX1RFU1QuamF2YSx2ICQKKyAqICREYXRlOiAyMDAxLzAyLzA2IDIyOjM3OjU4ICQKKyAqICRSZXZpc2lvbjogMS43ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRlc3QucmJiaTsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CitpbXBvcnQgamF2YS5uZXQuVVJMOworCisvKioKKyAqIFRoaXMgcmVzb3VyY2UgYnVuZGxlIGlzIGluY2x1ZGVkIGZvciB0ZXN0aW5nIGFuZCBkZW1vbnN0cmF0aW9uIHB1cnBvc2VzIG9ubHkuCisgKiBJdCBhcHBsaWVzIHRoZSBkaWN0aW9uYXJ5LWJhc2VkIGFsZ29yaXRobSB0byBFbmdsaXNoIHRleHQgdGhhdCBoYXMgaGFkIGFsbCB0aGUKKyAqIHNwYWNlcyByZW1vdmVkLiAgT25jZSB3ZSBoYXZlIGdvb2QgdGVzdCBjYXNlcyBmb3IgVGhhaSwgd2Ugd2lsbCByZXBsYWNlIHRoaXMKKyAqIHdpdGggZ29vZCByZXNvdXJjZSBkYXRhIChhbmQgYSBnb29kIGRpY3Rpb25hcnkgZmlsZSkgZm9yIFRoYWkKKyAqLworcHVibGljIGNsYXNzIEJyZWFrSXRlcmF0b3JSdWxlc19lbl9VU19URVNUIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBVUkwgdXJsID0KKyAgICAgICAgQnJlYWtJdGVyYXRvclJ1bGVzX2VuX1VTX1RFU1QuY2xhc3MuZ2V0UmVzb3VyY2UoIi9jb20vaWJtL2RhdGEvbWlzYy9lbmdsaXNoLmRpY3QiKTsKKworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gY29udGVudHM7CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIE9iamVjdFtdW10gY29udGVudHMgPSB7CisgICAgICAgIC8vIG5hbWVzIG9mIGNsYXNzZXMgdG8gaW5zdGFudGlhdGUgZm9yIHRoZSBkaWZmZXJlbnQga2luZHMgb2YgYnJlYWsKKyAgICAgICAgLy8gaXRlcmF0b3IuICBOb3RpY2Ugd2UncmUgbm93IHVzaW5nIERpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3IKKyAgICAgICAgLy8gZm9yIHdvcmQgYW5kIGxpbmUgYnJlYWtpbmcuCisgICAgICAgIHsgIkJyZWFrSXRlcmF0b3JDbGFzc2VzIiwKKyAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7ICJSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIiwgICAgICAgICAgIC8vIGNoYXJhY3Rlci1icmVhayBpdGVyYXRvciBjbGFzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3IiLCAgICAgLy8gd29yZC1icmVhayBpdGVyYXRvciBjbGFzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3IiLCAgICAgLy8gbGluZS1icmVhayBpdGVyYXRvciBjbGFzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IiIH0gICAgICAgICAgLy8gc2VudGVuY2UtYnJlYWsgaXRlcmF0b3IgY2xhc3MKKyAgICAgICAgfSwKKworICAgICAgICAvLyBUaGVzZSBhcmUgdGhlIHNhbWUgd29yZC1icmVha2luZyBydWxlcyBhcyBhcmUgc3BlY2lmaWVkIGluIHRoZSBkZWZhdWx0CisgICAgICAgIC8vIHJlc291cmNlLCBleGNlcHQgdGhhdCB0aGUgTGF0aW4gbGV0dGVycywgYXBvc3Ryb3BoZSwgYW5kIGh5cGhlbiBhcmUKKyAgICAgICAgLy8gc3BlY2lmaWVkIGFzIGRpY3Rpb25hcnkgY2hhcmFjdGVycworICAgICAgICB7ICJXb3JkQnJlYWtSdWxlcyIsCisgICAgICAgICAgICAvLyBpZ25vcmUgbm9uLXNwYWNpbmcgbWFya3MsIGVuY2xvc2luZyBtYXJrcywgYW5kIGZvcm1hdCBjaGFyYWN0ZXJzLAorICAgICAgICAgICAgLy8gYWxsIG9mIHdoaWNoIHNob3VsZCBub3QgaW5mbHVlbmNlIHRoZSBhbGdvcml0aG0KKyAgICAgICAgICAgICIkX2lnbm9yZV89W1s6TW46XVs6TWU6XVs6Q2Y6XV07IgorCisgICAgICAgICAgICAvLyBsb3dlciBhbmQgdXBwZXIgY2FzZSBSb21hbiBsZXR0ZXJzLCBhcG9zdHJvcGh5IGFuZCBkYXNoIGFyZQorICAgICAgICAgICAgLy8gaW4gdGhlIEVuZ2xpc2ggZGljdGlvbmFyeQorICAgICAgICAgICAgKyAiJF9kaWN0aW9uYXJ5Xz1bYS16QS1aXFwnXFwtXTsiCisKKyAgICAgICAgICAgIC8vIEhpbmRpIHBocmFzZSBzZXBhcmF0b3IsIGthbmppLCBrYXRha2FuYSwgaGlyYWdhbmEsIENKSyBkaWFjcml0aWNhbHMsCisgICAgICAgICAgICAvLyBvdGhlciBsZXR0ZXJzLCBhbmQgZGlnaXRzCisgICAgICAgICAgICArICIkZGFuZGE9W1x1MDk2NFx1MDk2NV07IgorICAgICAgICAgICAgKyAiJGthbmppPVtcdTMwMDVcdTRlMDAtXHU5ZmE1XHVmOTAwLVx1ZmEyZF07IgorICAgICAgICAgICAgKyAiJGthdGE9W1x1MzA5OS1cdTMwOWNcdTMwYTEtXHUzMGZlXTsiCisgICAgICAgICAgICArICIkaGlyYT1bXHUzMDQxLVx1MzA5ZVx1MzBmY107IgorICAgICAgICAgICAgKyAiJGxldD1bW1s6TDpdWzpNYzpdXS1bJGthbmppJGthdGEkaGlyYV1dOyIKKyAgICAgICAgICAgICsgIiRkZ3Q9WzpOOl07IgorCisgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbiB0aGF0IGNhbiBvY2N1ciBpbiB0aGUgbWlkZGxlIG9mIGEgd29yZDogY3VycmVudGx5CisgICAgICAgICAgICAvLyBkYXNoZXMsIGFwb3N0cm9waGVzLCBhbmQgcXVvdGF0aW9uIG1hcmtzCisgICAgICAgICAgICArICIkbWlkX3dvcmQ9W1s6UGQ6XVx1MDBhZFx1MjAyN1xcXCJcXFwnXTsiCisKKyAgICAgICAgICAgIC8vIHB1bmN0dWF0aW9uIHRoYXQgY2FuIG9jY3VyIGluIHRoZSBtaWRkbGUgb2YgYSBudW1iZXI6IGN1cnJlbnRseQorICAgICAgICAgICAgLy8gYXBvc3Ryb3BoZXMsIHFvdXRhdGlvbiBtYXJrcywgcGVyaW9kcywgY29tbWFzLCBhbmQgdGhlIEFyYWJpYworICAgICAgICAgICAgLy8gZGVjaW1hbCBwb2ludAorICAgICAgICAgICAgKyAiJG1pZF9udW09W1xcXCJcXFwnXFwsXHUwNjZiXFwuXTsiCisKKyAgICAgICAgICAgIC8vIHB1bmN0dWF0aW9uIHRoYXQgY2FuIG9jY3VyIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBudW1iZXI6IGN1cnJlbnRseQorICAgICAgICAgICAgLy8gdGhlIHBlcmlvZCwgdGhlIG51bWJlciBzaWduLCBhbmQgYWxsIGN1cnJlbmN5IHN5bWJvbHMgZXhjZXB0IHRoZSBjZW50cyBzaWduCisgICAgICAgICAgICArICIkcHJlX251bT1bW1s6U2M6XS1bXHUwMGEyXV1cXCNcXC5dOyIKKworICAgICAgICAgICAgLy8gcHVuY3R1YXRpb24gdGhhdCBjYW4gb2NjdXIgYXQgdGhlIGVuZCBvZiBhIG51bWJlcjogY3VycmVudGx5CisgICAgICAgICAgICAvLyB0aGUgcGVyY2VudCwgcGVyLXRob3VzYW5kLCBwZXItdGVuLXRob3VzYW5kLCBhbmQgQXJhYmljIHBlcmNlbnQKKyAgICAgICAgICAgIC8vIHNpZ25zLCB0aGUgY2VudHMgc2lnbiwgYW5kIHRoZSBhbXBlcnNhbmQKKyAgICAgICAgICAgICsgIiRwb3N0X251bT1bXFwlXFwmXHUwMGEyXHUwNjZhXHUyMDMwXHUyMDMxXTsiCisKKyAgICAgICAgICAgIC8vIGxpbmUgc2VwYXJhdG9yczogY3VycmVudGx5IExGLCBGRiwgUFMsIGFuZCBMUworICAgICAgICAgICAgKyAiJGxzPVtcblx1MDAwY1x1MjAyOFx1MjAyOV07IgorCisgICAgICAgICAgICAvLyB3aGl0ZXNwYWNlOiBhbGwgc3BhY2Ugc2VwYXJhdG9ycyBhbmQgdGhlIHRhYiBjaGFyYWN0ZXIKKyAgICAgICAgICAgICsgIiR3cz1bWzpaczpdXHRdOyIKKworICAgICAgICAgICAgLy8gYSB3b3JkIGlzIGEgc2VxdWVuY2Ugb2YgbGV0dGVycyB0aGF0IG1heSBjb250YWluIGludGVybmFsCisgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbiwgYXMgbG9uZyBhcyBpdCBiZWdpbnMgYW5kIGVuZHMgd2l0aCBhIGxldHRlciBhbmQKKyAgICAgICAgICAgIC8vIG5ldmVyIGNvbnRhaW5zIHR3byBwdW5jdHVhdGlvbiBtYXJrcyBpbiBhIHJvdworICAgICAgICAgICAgKyAiJHdvcmQ9KCRsZXQrKCRtaWRfd29yZCRsZXQrKSokZGFuZGE/KTsiCisKKyAgICAgICAgICAgIC8vIGEgbnVtYmVyIGlzIGEgc2VxdWVuY2Ugb2YgZGlnaXRzIHRoYXQgbWF5IGNvbnRhaW4gaW50ZXJuYWwKKyAgICAgICAgICAgIC8vIHB1bmN0dWF0aW9uLCBhcyBsb25nIGFzIGl0IGJlZ2lucyBhbmQgZW5kcyB3aXRoIGEgZGlnaXQgYW5kCisgICAgICAgICAgICAvLyBuZXZlciBjb250YWlucyB0d28gcHVuY3R1YXRpb24gbWFya3MgaW4gYSByb3cuCisgICAgICAgICAgICArICIkbnVtYmVyPSgkZGd0KygkbWlkX251bSRkZ3QrKSopOyIKKworICAgICAgICAgICAgLy8gYnJlYWsgYWZ0ZXIgZXZlcnkgY2hhcmFjdGVyLCB3aXRoIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9ucworICAgICAgICAgICAgLy8gKHRoaXMgd2lsbCBjYXVzZSBwdW5jdHVhdGlvbiBtYXJrcyB0aGF0IGFyZW4ndCBjb25zaWRlcmVkCisgICAgICAgICAgICAvLyBwYXJ0IG9mIHdvcmRzIG9yIG51bWJlcnMgdG8gYmUgdHJlYXRlZCBhcyB3b3JkcyB1bnRvIHRoZW1zZWx2ZXMpCisgICAgICAgICAgICArICIuOyIKKworICAgICAgICAgICAgLy8ga2VlcCB0b2dldGhlciBhbnkgc2VxdWVuY2Ugb2YgY29udGlndW91cyB3b3JkcyBhbmQgbnVtYmVycworICAgICAgICAgICAgLy8gKGluY2x1ZGluZyBqdXN0IG9uZSBvZiBlaXRoZXIpLCBwbHVzIGFuIG9wdGlvbmFsIHRyYWlsaW5nCisgICAgICAgICAgICAvLyBudW1iZXItc3VmZml4IGNoYXJhY3RlcgorICAgICAgICAgICAgKyAiJHdvcmQ/KCRudW1iZXIkd29yZCkqKCRudW1iZXIkcG9zdF9udW0/KT87IgorCisgICAgICAgICAgICAvLyBrZWVwIHRvZ2V0aGVyIGFuZCBzZXF1ZW5jZSBvZiBjb250aWd1b3VzIHdvcmRzIGFuZCBudW1iZXJzCisgICAgICAgICAgICAvLyB0aGF0IHN0YXJ0cyB3aXRoIGEgbnVtYmVyLXByZWZpeCBjaGFyYWN0ZXIgYW5kIGEgbnVtYmVyLAorICAgICAgICAgICAgLy8gYW5kIG1heSBlbmQgd2l0aCBhIG51bWJlci1zdWZmaXggY2hhcmFjdGVyCisgICAgICAgICAgICArICIkcHJlX251bSgkbnVtYmVyJHdvcmQpKigkbnVtYmVyJHBvc3RfbnVtPyk/OyIKKworICAgICAgICAgICAgLy8ga2VlcCB0b2dldGhlciBydW5zIG9mIHdoaXRlc3BhY2UgKG9wdGlvbmFsbHkgd2l0aCBhIHNpbmdsZSB0cmFpbGluZworICAgICAgICAgICAgLy8gbGluZSBzZXBhcmF0b3Igb3IgQ1JMRiBzZXF1ZW5jZSkKKyAgICAgICAgICAgICsgIiR3cypccj8kbHM/OyIKKworICAgICAgICAgICAgLy8ga2VlcCB0b2dldGhlciBydW5zIG9mIEthdGFrYW5hCisgICAgICAgICAgICArICIka2F0YSo7IgorCisgICAgICAgICAgICAvLyBrZWVwIHRvZ2V0aGVyIHJ1bnMgb2YgSGlyYWdhbmEKKyAgICAgICAgICAgICsgIiRoaXJhKjsiCisKKyAgICAgICAgICAgIC8vIGtlZXAgdG9nZXRoZXIgcnVucyBvZiBLYW5qaQorICAgICAgICAgICAgKyAiJGthbmppKjsifSwKKworICAgICAgICAvLyBUaGVzZSBhcmUgdGhlIHNhbWUgbGluZS1icmVha2luZyBydWxlcyBhcyBhcmUgc3BlY2lmaWVkIGluIHRoZSBkZWZhdWx0CisgICAgICAgIC8vIHJlc291cmNlLCBleGNlcHQgdGhhdCB0aGUgTGF0aW4gbGV0dGVycywgYXBvc3Ryb3BoZSwgYW5kIGh5cGhlbiBhcmUKKyAgICAgICAgLy8gc3BlY2lmaWVkIGFzIGRpY3Rpb25hcnkgY2hhcmFjdGVycworICAgICAgICB7ICJMaW5lQnJlYWtSdWxlcyIsCisgICAgICAgICAgICAvLyBpZ25vcmUgbm9uLXNwYWNpbmcgbWFya3MsIGVuY2xvc2luZyBtYXJrcywgYW5kIGZvcm1hdCBjaGFyYWN0ZXJzCisgICAgICAgICAgICAiJF9pZ25vcmVfPVtbOk1uOl1bOk1lOl1bOkNmOl1dOyIKKworICAgICAgICAgICAgLy8gbG93ZXIgYW5kIHVwcGVyIGNhc2UgUm9tYW4gbGV0dGVycywgYXBvc3Ryb3BoeSBhbmQgZGFzaAorICAgICAgICAgICAgLy8gYXJlIGluIHRoZSBFbmdsaXNoIGRpY3Rpb25hcnkKKyAgICAgICAgICAgICsgIiRfZGljdGlvbmFyeV89W2EtekEtWlxcJ1xcLV07IgorCisgICAgICAgICAgICAvLyBIaW5kaSBwaHJhc2Ugc2VwYXJhdG9ycworICAgICAgICAgICAgKyAiJGRhbmRhPVtcdTA5NjRcdTA5NjVdOyIKKworICAgICAgICAgICAgLy8gY2hhcmFjdGVycyB0aGF0IGFsd2F5cyBjYXVzZSBhIGJyZWFrOiBFVFgsIHRhYiwgTEYsIEZGLCBMUywgYW5kIFBTCisgICAgICAgICAgICArICIkYnJlYWs9W1x1MDAwM1x0XG5cZlx1MjAyOFx1MjAyOV07IgorCisgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzIHRoYXQgYWx3YXlzIHByZXZlbnQgYSBicmVhazogdGhlIG5vbi1icmVha2luZyBzcGFjZQorICAgICAgICAgICAgLy8gYW5kIHNpbWlsYXIgY2hhcmFjdGVycworICAgICAgICAgICAgKyAiJG5ic3A9W1x1MDBhMFx1MjAwN1x1MjAxMVx1ZmVmZl07IgorCisgICAgICAgICAgICAvLyB3aGl0ZXNwYWNlOiBzcGFjZSBzZXBhcmF0b3JzIGFuZCBjb250cm9sIGNoYXJhY3RlcnMsIGV4Y2VwdCBmb3IKKyAgICAgICAgICAgIC8vIENSIGFuZCB0aGUgb3RoZXIgY2hhcmFjdGVycyBtZW50aW9uZWQgYWJvdmUKKyAgICAgICAgICAgICsgIiRzcGFjZT1bW1s6WnM6XVs6Q2M6XV0tWyRuYnNwJGJyZWFrXHJdXTsiCisKKyAgICAgICAgICAgIC8vIGRhc2hlczogZGFzaCBwdW5jdHVhdGlvbiBhbmQgdGhlIGRpc2NyZXRpb25hcnkgaHlwaGVuLCBleGNlcHQgZm9yCisgICAgICAgICAgICAvLyBub24tYnJlYWtpbmcgaHlwaGVucworICAgICAgICAgICAgKyAiJGRhc2g9W1tbOlBkOl1cdTAwYWRdLVskbmJzcF1dOyIKKworICAgICAgICAgICAgLy8gY2hhcmFjdGVycyB0aGF0IHN0aWNrIHRvIGEgd29yZCBpZiB0aGV5IHByZWNlZGUgaXQ6IGN1cnJlbmN5IHN5bWJvbHMKKyAgICAgICAgICAgIC8vIChleGNlcHQgdGhlIGNlbnRzIHNpZ24pIGFuZCBzdGFydGluZyBwdW5jdHVhdGlvbgorICAgICAgICAgICAgKyAiJHByZV93b3JkPVtbWzpTYzpdLVtcdTAwYTJdXVs6UHM6XVxcXCJcXFwnXTsiCisKKyAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMgdGhhdCBzdGljayB0byBhIHdvcmQgaWYgdGhleSBmb2xsb3cgaXQ6IGVuZGluZyBwdW5jdHVhdGlvbiwKKyAgICAgICAgICAgIC8vIG90aGVyIHB1bmN0dWF0aW9uIHRoYXQgdXN1YWxseSBvY2N1cnMgYXQgdGhlIGVuZCBvZiBhIHNlbnRlbmNlLAorICAgICAgICAgICAgLy8gc21hbGwgS2FuYSBjaGFyYWN0ZXJzLCBzb21lIENKSyBkaWFjcml0aWNzLCBldGMuCisgICAgICAgICAgICArICIkcG9zdF93b3JkPVtbOlBlOl1cXCFcXFwiXFxcJ1xcJVxcLlxcLFxcOlxcO1xcP1x1MDBhMlx1MDBiMFx1MDY2YVx1MjAzMC1cdTIwMzQiCisgICAgICAgICAgICAgICAgICAgICsgIlx1MjEwM1x1MjEwNVx1MjEwOVx1MzAwMVx1MzAwMlx1MzAwNVx1MzA0MVx1MzA0M1x1MzA0NVx1MzA0N1x1MzA0OVx1MzA2MyIKKyAgICAgICAgICAgICAgICAgICAgKyAiXHUzMDgzXHUzMDg1XHUzMDg3XHUzMDhlXHUzMDk5LVx1MzA5ZVx1MzBhMVx1MzBhM1x1MzBhNVx1MzBhN1x1MzBhOSIKKyAgICAgICAgICAgICAgICAgICAgKyAiXHUzMGMzXHUzMGUzXHUzMGU1XHUzMGU3XHUzMGVlXHUzMGY1XHUzMGY2XHUzMGZjLVx1MzBmZVx1ZmYwMVx1ZmYwYyIKKyAgICAgICAgICAgICAgICAgICAgKyAiXHVmZjBlXHVmZjFmXTsiCisKKyAgICAgICAgICAgIC8vIEthbmppOiBhY3R1YWxseSBpbmNsdWRlcyBib3RoIEthbmppIGFuZCBLYW5hLCBleGNlcHQgZm9yIHNtYWxsIEthbmEgYW5kCisgICAgICAgICAgICAvLyBDSksgZGlhY3JpdGljcworICAgICAgICAgICAgKyAiJGthbmppPVtbXHU0ZTAwLVx1OWZhNVx1ZjkwMC1cdWZhMmRcdTMwNDEtXHUzMDk0XHUzMGExLVx1MzBmYV0tWyRwb3N0X3dvcmQkX2lnbm9yZV9dXTsiCisKKyAgICAgICAgICAgIC8vIGRpZ2l0cworICAgICAgICAgICAgKyAiJGRpZ2l0PVtbOk5kOl1bOk5vOl1dOyIKKworICAgICAgICAgICAgLy8gcHVuY3R1YXRpb24gdGhhdCBjYW4gb2NjdXIgaW4gdGhlIG1pZGRsZSBvZiBhIG51bWJlcjogcGVyaW9kcyBhbmQgY29tbWFzCisgICAgICAgICAgICArICIkbWlkX251bT1bXFwuXFwsXTsiCisKKyAgICAgICAgICAgIC8vIGV2ZXJ5dGhpbmcgbm90IG1lbnRpb25lZCBhYm92ZSwgcGx1cyB0aGUgcXVvdGUgbWFya3MgKHdoaWNoIGFyZSBib3RoCisgICAgICAgICAgICAvLyA8cHJlLXdvcmQ+LCA8cG9zdC13b3JkPiwgYW5kIDxjaGFyPikKKyAgICAgICAgICAgICsgIiRjaGFyPVteJGJyZWFrJHNwYWNlJGRhc2gka2FuamkkbmJzcCRfaWdub3JlXyRwcmVfd29yZCRwb3N0X3dvcmQkbWlkX251bSRkYW5kYVxyXFxcIlxcXCddOyIKKworICAgICAgICAgICAgLy8gYSAibnVtYmVyIiBpcyBhIHJ1biBvZiBwcmVmaXggY2hhcmFjdGVycyBhbmQgZGFzaGVzLCBmb2xsb3dlZCBieSBvbmUgb3IKKyAgICAgICAgICAgIC8vIG1vcmUgZGlnaXRzIHdpdGggaXNvbGF0ZWQgbnVtYmVyLXB1bmN0dWF0aW9uIGNoYXJhY3RlcnMgaW50ZXJzcGVyc2VkCisgICAgICAgICAgICArICIkbnVtYmVyPShbJHByZV93b3JkJGRhc2hdKiRkaWdpdCsoJG1pZF9udW0kZGlnaXQrKSopOyIKKworICAgICAgICAgICAgLy8gdGhlIGJhc2ljIGNvcmUgb2YgYSB3b3JkIGNhbiBiZSBlaXRoZXIgYSAibnVtYmVyIiBhcyBkZWZpbmVkIGFib3ZlLCBhIHNpbmdsZQorICAgICAgICAgICAgLy8gIkthbmppIiBjaGFyYWN0ZXIsIG9yIGEgcnVuIG9mIGFueSBudW1iZXIgb2Ygbm90LWV4cGxpY2l0bHktbWVudGlvbmVkCisgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzICh0aGlzIGluY2x1ZGVzIExhdGluIGxldHRlcnMpCisgICAgICAgICAgICArICIkd29yZF9jb3JlPShbJHByZV93b3JkJGNoYXJdKnwka2Fuaml8JG51bWJlcik7IgorCisgICAgICAgICAgICAvLyBhIHdvcmQgbWF5IGVuZCB3aXRoIGFuIG9wdGlvbmFsIHN1ZmZpeCB0aGF0IGJlIGVpdGhlciBhIHJ1biBvZiBvbmUgb3IKKyAgICAgICAgICAgIC8vIG1vcmUgZGFzaGVzIG9yIGEgcnVuIG9mIHdvcmQtc3VmZml4IGNoYXJhY3RlcnMsIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsCisgICAgICAgICAgICAvLyBydW4gb2Ygd2hpdGVzcGFjZQorICAgICAgICAgICAgKyAiJHdvcmRfc3VmZml4PSgoJGRhc2grfCRwb3N0X3dvcmQqKSRzcGFjZSopOyIKKworICAgICAgICAgICAgLy8gYSB3b3JkLCB0aHVzLCBpcyBhbiBvcHRpb25hbCBydW4gb2Ygd29yZC1wcmVmaXggY2hhcmFjdGVycywgZm9sbG93ZWQgYnkKKyAgICAgICAgICAgIC8vIGEgd29yZCBjb3JlIGFuZCBhIHdvcmQgc3VmZml4ICh0aGUgc3ludGF4IG9mIDx3b3JkLWNvcmU+IGFuZCA8d29yZC1zdWZmaXg+CisgICAgICAgICAgICAvLyBhY3R1YWxseSBhbGxvd3MgZWl0aGVyIG9mIHRoZW0gdG8gbWF0Y2ggdGhlIGVtcHR5IHN0cmluZywgcHV0dGluZyBhIGJyZWFrCisgICAgICAgICAgICAvLyBiZXR3ZWVuIHRoaW5ncyBsaWtlICIpKCIgb3IgImFhYShhYWEiCisgICAgICAgICAgICArICIkd29yZD0oJHByZV93b3JkKiR3b3JkX2NvcmUkd29yZF9zdWZmaXgpOyIKKworICAgICAgICAgICAgLy8gZmluYWxseSwgdGhlIHJ1bGUgdGhhdCBkb2VzIHRoZSB3b3JrOiBLZWVwIHRvZ2V0aGVyIGFueSBydW4gb2Ygd29yZHMgdGhhdAorICAgICAgICAgICAgLy8gYXJlIGpvaW5lZCBieSBydW5zIG9mIG9uZSBvZiBtb3JlIG5vbi1zcGFjaW5nIG1hcmsuICBBbHNvIGtlZXAgYSB0cmFpbGluZworICAgICAgICAgICAgLy8gbGluZS1icmVhayBjaGFyYWN0ZXIgb3IgQ1JMRiBjb21iaW5hdGlvbiB3aXRoIHRoZSB3b3JkLiAgKGxpbmUgc2VwYXJhdG9ycworICAgICAgICAgICAgLy8gIndpbiIgb3ZlciBuYnNwJ3MpCisgICAgICAgICAgICArICIkd29yZCgkbmJzcCskd29yZCkqXHI/JGJyZWFrPzsiIH0sCisKKyAgICAgICAgLy8gdGhlc2UgdHdvIHJlc291cmNlcyBzcGVjaWZ5IHRoZSBwYXRobmFtZXMgb2YgdGhlIGRpY3Rpb25hcnkgZmlsZXMgdG8KKyAgICAgICAgLy8gdXNlIGZvciB3b3JkIGJyZWFraW5nIGFuZCBsaW5lIGJyZWFraW5nLiAgQm90aCBjdXJyZW50bHkgcmVmZXIgdG8KKyAgICAgICAgLy8gYSBmaWxlIGNhbGxlZCBlbmdsaXNoLmRpY3QgcGxhY2VkIGluIGNvbVxpYm1cdGV4dFxyZXNvdXJjZXMKKyAgICAgICAgLy8gc29tZXdoZXJlIGluIHRoZSBjbGFzcyBwYXRoLiAgSXQncyBpbXBvcnRhbnQgdG8gbm90ZSB0aGF0CisgICAgICAgIC8vIGVuZ2xpc2guZGljdCB3YXMgY3JlYXRlZCBmb3IgdGVzdGluZyBwdXJwb3NlcyBvbmx5LCBhbmQgZG9lc24ndAorICAgICAgICAvLyBjb21lIGFueXdoZXJlIGNsb3NlIHRvIGJlaW5nIGFuIGV4aGF1c3RpdmUgZGljdGlvbmFyeSBvZiBFbmdsaXNoCisgICAgICAgIC8vIHdvcmRzIChiYXNpY2FsbHksIGl0IGNvbnRhaW5zIGFsbCB0aGUgd29yZHMgaW4gdGhlIERlY2xhcmF0aW9uIG9mCisgICAgICAgIC8vIEluZGVwZW5kZW5jZSwgYW5kIHRoZSBSZXZpc2VkIFN0YW5kYXJkIFZlcnNpb24gb2YgdGhlIGJvb2sgb2YgR2VuZXNpcywKKyAgICAgICAgLy8gcGx1cyBhIGZldyBvdGhlciB3b3JkcyB0aHJvd24gaW4gdG8gc2hvdyBtb3JlIGludGVyZXN0aW5nIGNhc2VzKS4KKyAgICAgICAgLy8geyAiV29yZEJyZWFrRGljdGlvbmFyeSIsICJjb21cXGlibVxcdGV4dFxccmVzb3VyY2VzXFxlbmdsaXNoLmRpY3QiIH0sCisgICAgICAgIC8vIHsgIkxpbmVCcmVha0RpY3Rpb25hcnkiLCAiY29tXFxpYm1cXHRleHRcXHJlc291cmNlc1xcZW5nbGlzaC5kaWN0IiB9CisgICAgICAgIHsgIldvcmRCcmVha0RpY3Rpb25hcnkiLCB1cmwgfSwKKyAgICAgICAgeyAiTGluZUJyZWFrRGljdGlvbmFyeSIsIHVybCB9CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3QvcmJiaS9CcmVha0l0ZXJhdG9yVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vdGVzdC9yYmJpL0JyZWFrSXRlcmF0b3JUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmRiNTFlNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3QvcmJiaS9CcmVha0l0ZXJhdG9yVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTMwOCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGVzdC9yYmJpL0F0dGljL0JyZWFrSXRlcmF0b3JUZXN0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDUvMTggMTk6MTE6NTUgJCAKKyAqICRSZXZpc2lvbjogMS41ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRlc3QucmJiaTsKKworaW1wb3J0IGNvbS5pYm0udGVzdC4qOworaW1wb3J0IGNvbS5pYm0udGV4dC5CcmVha0l0ZXJhdG9yOworaW1wb3J0IGphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvcjsKK2ltcG9ydCBjb20uaWJtLnRleHQuU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKK2ltcG9ydCBqYXZhLmlvLio7CisKK3B1YmxpYyBjbGFzcyBCcmVha0l0ZXJhdG9yVGVzdCBleHRlbmRzIFRlc3RGbXdrCit7CisgICAgcHJpdmF0ZSBCcmVha0l0ZXJhdG9yIGNoYXJhY3RlckJyZWFrOworICAgIHByaXZhdGUgQnJlYWtJdGVyYXRvciB3b3JkQnJlYWs7CisgICAgcHJpdmF0ZSBCcmVha0l0ZXJhdG9yIGxpbmVCcmVhazsKKyAgICBwcml2YXRlIEJyZWFrSXRlcmF0b3Igc2VudGVuY2VCcmVhazsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgQnJlYWtJdGVyYXRvclRlc3QoKS5ydW4oYXJncyk7CisgICAgfQorCisgICAgcHVibGljIEJyZWFrSXRlcmF0b3JUZXN0KCkKKyAgICB7CisgICAgICAgIGNoYXJhY3RlckJyZWFrID0gQnJlYWtJdGVyYXRvci5nZXRDaGFyYWN0ZXJJbnN0YW5jZSgpOworICAgICAgICB3b3JkQnJlYWsgPSBCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZSgpOworICAgICAgICBsaW5lQnJlYWsgPSBCcmVha0l0ZXJhdG9yLmdldExpbmVJbnN0YW5jZSgpOworICAgICAgICAvL2xvZ2xuKCJDcmVhdGluZyBzZW50ZW5jZSBpdGVyYXRvci4uLiIpOworICAgICAgICBzZW50ZW5jZUJyZWFrID0gQnJlYWtJdGVyYXRvci5nZXRTZW50ZW5jZUluc3RhbmNlKCk7CisgICAgICAgIC8vbG9nbG4oIkZpbmlzaGVkIGNyZWF0aW5nIHNlbnRlbmNlIGl0ZXJhdG9yLi4uIik7CisgICAgfQorCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gZ2VuZXJhbCB0ZXN0IHN1YnJvdXRpbmVzCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICBwcml2YXRlIHZvaWQgZ2VuZXJhbEl0ZXJhdG9yVGVzdChCcmVha0l0ZXJhdG9yIGJpLCBWZWN0b3IgZXhwZWN0ZWRSZXN1bHQpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgU3RyaW5nIHRleHQ7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXhwZWN0ZWRSZXN1bHQuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIHRleHQgPSAoU3RyaW5nKWV4cGVjdGVkUmVzdWx0LmVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQodGV4dCk7CisgICAgICAgIH0KKyAgICAgICAgdGV4dCA9IGJ1ZmZlci50b1N0cmluZygpOworCisgICAgICAgIGJpLnNldFRleHQodGV4dCk7CisKKyAgICAgICAgVmVjdG9yIG5leHRSZXN1bHRzID0gX3Rlc3RGaXJzdEFuZE5leHQoYmksIHRleHQpOworICAgICAgICBWZWN0b3IgcHJldmlvdXNSZXN1bHRzID0gX3Rlc3RMYXN0QW5kUHJldmlvdXMoYmksIHRleHQpOworCisgICAgICAgIGxvZ2xuKCJjb21wYXJpbmcgZm9yd2FyZCBhbmQgYmFja3dhcmQuLi4iKTsKKyAgICAgICAgaW50IGVycnMgPSBnZXRFcnJvckNvdW50KCk7CisgICAgICAgIGNvbXBhcmVGcmFnbWVudExpc3RzKCJmb3J3YXJkIGl0ZXJhdGlvbiIsICJiYWNrd2FyZCBpdGVyYXRpb24iLCBuZXh0UmVzdWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpb3VzUmVzdWx0cyk7CisgICAgICAgIGlmIChnZXRFcnJvckNvdW50KCkgPT0gZXJycykgeworICAgICAgICAgICAgbG9nbG4oImNvbXBhcmluZyBleHBlY3RlZCBhbmQgYWN0dWFsLi4uIik7CisgICAgICAgICAgICBjb21wYXJlRnJhZ21lbnRMaXN0cygiZXhwZWN0ZWQgcmVzdWx0IiwgImFjdHVhbCByZXN1bHQiLCBleHBlY3RlZFJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0UmVzdWx0cyk7CisgICAgICAgIH0KKworICAgICAgICBpbnRbXSBib3VuZGFyaWVzID0gbmV3IGludFtleHBlY3RlZFJlc3VsdC5zaXplKCkgKyAzXTsKKyAgICAgICAgYm91bmRhcmllc1swXSA9IEJyZWFrSXRlcmF0b3IuRE9ORTsKKyAgICAgICAgYm91bmRhcmllc1sxXSA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXhwZWN0ZWRSZXN1bHQuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICBib3VuZGFyaWVzW2kgKyAyXSA9IGJvdW5kYXJpZXNbaSArIDFdICsgKChTdHJpbmcpZXhwZWN0ZWRSZXN1bHQuZWxlbWVudEF0KGkpKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGgoKTsKKyAgICAgICAgYm91bmRhcmllc1tib3VuZGFyaWVzLmxlbmd0aCAtIDFdID0gQnJlYWtJdGVyYXRvci5ET05FOworCisgICAgICAgIF90ZXN0Rm9sbG93aW5nKGJpLCB0ZXh0LCBib3VuZGFyaWVzKTsKKyAgICAgICAgX3Rlc3RQcmVjZWRpbmcoYmksIHRleHQsIGJvdW5kYXJpZXMpOworICAgICAgICBfdGVzdElzQm91bmRhcnkoYmksIHRleHQsIGJvdW5kYXJpZXMpOworCisgICAgICAgIGRvTXVsdGlwbGVTZWxlY3Rpb25UZXN0KGJpLCB0ZXh0KTsKKyAgICB9CisKKyAgICBwcml2YXRlIFZlY3RvciBfdGVzdEZpcnN0QW5kTmV4dChCcmVha0l0ZXJhdG9yIGJpLCBTdHJpbmcgdGV4dCkgeworICAgICAgICBpbnQgcCA9IGJpLmZpcnN0KCk7CisgICAgICAgIGludCBsYXN0UCA9IHA7CisgICAgICAgIFZlY3RvciByZXN1bHQgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgaWYgKHAgIT0gMCkKKyAgICAgICAgICAgIGVycmxuKCJmaXJzdCgpIHJldHVybmVkICIgKyBwICsgIiBpbnN0ZWFkIG9mIDAiKTsKKyAgICAgICAgd2hpbGUgKHAgIT0gQnJlYWtJdGVyYXRvci5ET05FKSB7CisgICAgICAgICAgICBwID0gYmkubmV4dCgpOworICAgICAgICAgICAgaWYgKHAgIT0gQnJlYWtJdGVyYXRvci5ET05FKSB7CisgICAgICAgICAgICAgICAgaWYgKHAgPD0gbGFzdFApCisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJuZXh0KCkgZmFpbGVkIHRvIG1vdmUgZm9yd2FyZDogbmV4dCgpIG9uIHBvc2l0aW9uICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbGFzdFAgKyAiIHlpZWxkZWQgIiArIHApOworCisgICAgICAgICAgICAgICAgcmVzdWx0LmFkZEVsZW1lbnQodGV4dC5zdWJzdHJpbmcobGFzdFAsIHApKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChsYXN0UCAhPSB0ZXh0Lmxlbmd0aCgpKQorICAgICAgICAgICAgICAgICAgICBlcnJsbigibmV4dCgpIHJldHVybmVkIERPTkUgcHJlbWF0dXJlbHk6IG9mZnNldCB3YXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBsYXN0UCArICIgaW5zdGVhZCBvZiAiICsgdGV4dC5sZW5ndGgoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsYXN0UCA9IHA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBwcml2YXRlIFZlY3RvciBfdGVzdExhc3RBbmRQcmV2aW91cyhCcmVha0l0ZXJhdG9yIGJpLCBTdHJpbmcgdGV4dCkgeworICAgICAgICBpbnQgcCA9IGJpLmxhc3QoKTsKKyAgICAgICAgaW50IGxhc3RQID0gcDsKKyAgICAgICAgVmVjdG9yIHJlc3VsdCA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICBpZiAocCAhPSB0ZXh0Lmxlbmd0aCgpKQorICAgICAgICAgICAgZXJybG4oImxhc3QoKSByZXR1cm5lZCAiICsgcCArICIgaW5zdGVhZCBvZiAiICsgdGV4dC5sZW5ndGgoKSk7CisgICAgICAgIHdoaWxlIChwICE9IEJyZWFrSXRlcmF0b3IuRE9ORSkgeworICAgICAgICAgICAgcCA9IGJpLnByZXZpb3VzKCk7CisgICAgICAgICAgICBpZiAocCAhPSBCcmVha0l0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgICAgICBpZiAocCA+PSBsYXN0UCkKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oInByZXZpb3VzKCkgZmFpbGVkIHRvIG1vdmUgYmFja3dhcmQ6IHByZXZpb3VzKCkgb24gcG9zaXRpb24gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBsYXN0UCArICIgeWllbGRlZCAiICsgcCk7CisKKyAgICAgICAgICAgICAgICByZXN1bHQuaW5zZXJ0RWxlbWVudEF0KHRleHQuc3Vic3RyaW5nKHAsIGxhc3RQKSwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAobGFzdFAgIT0gMCkKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oInByZXZpb3VzKCkgcmV0dXJuZWQgRE9ORSBwcmVtYXR1cmVseTogb2Zmc2V0IHdhcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGxhc3RQICsgIiBpbnN0ZWFkIG9mIDAiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxhc3RQID0gcDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBjb21wYXJlRnJhZ21lbnRMaXN0cyhTdHJpbmcgZjFOYW1lLCBTdHJpbmcgZjJOYW1lLCBWZWN0b3IgZjEsIFZlY3RvciBmMikgeworICAgICAgICBpbnQgcDEgPSAwOworICAgICAgICBpbnQgcDIgPSAwOworICAgICAgICBTdHJpbmcgczE7CisgICAgICAgIFN0cmluZyBzMjsKKyAgICAgICAgaW50IHQxID0gMDsKKyAgICAgICAgaW50IHQyID0gMDsKKworICAgICAgICB3aGlsZSAocDEgPCBmMS5zaXplKCkgJiYgcDIgPCBmMi5zaXplKCkpIHsKKyAgICAgICAgICAgIHMxID0gKFN0cmluZylmMS5lbGVtZW50QXQocDEpOworICAgICAgICAgICAgczIgPSAoU3RyaW5nKWYyLmVsZW1lbnRBdChwMik7CisgICAgICAgICAgICB0MSArPSBzMS5sZW5ndGgoKTsKKyAgICAgICAgICAgIHQyICs9IHMyLmxlbmd0aCgpOworCisgICAgICAgICAgICBpZiAoczEuZXF1YWxzKHMyKSkgeworICAgICAgICAgICAgICAgIGRlYnVnTG9nbG4oIiAgID4iICsgczEgKyAiPCIpOworICAgICAgICAgICAgICAgICsrcDE7CisgICAgICAgICAgICAgICAgKytwMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGludCB0ZW1wVDEgPSB0MTsKKyAgICAgICAgICAgICAgICBpbnQgdGVtcFQyID0gdDI7CisgICAgICAgICAgICAgICAgaW50IHRlbXBQMSA9IHAxOworICAgICAgICAgICAgICAgIGludCB0ZW1wUDIgPSBwMjsKKworICAgICAgICAgICAgICAgIHdoaWxlICh0ZW1wVDEgIT0gdGVtcFQyICYmIHRlbXBQMSA8IGYxLnNpemUoKSAmJiB0ZW1wUDIgPCBmMi5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRlbXBUMSA8IHRlbXBUMiAmJiB0ZW1wUDEgPCBmMS5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBUMSArPSAoKFN0cmluZylmMS5lbGVtZW50QXQodGVtcFAxKSkubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgICAgICArK3RlbXBQMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB3aGlsZSAodGVtcFQyIDwgdGVtcFQxICYmIHRlbXBQMiA8IGYyLnNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGVtcFQyICs9ICgoU3RyaW5nKWYyLmVsZW1lbnRBdCh0ZW1wUDIpKS5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrdGVtcFAyOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxvZ2xuKCIqKiogIiArIGYxTmFtZSArICIgaGFzOiIpOworICAgICAgICAgICAgICAgIHdoaWxlIChwMSA8PSB0ZW1wUDEgJiYgcDEgPCBmMS5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgczEgPSAoU3RyaW5nKWYxLmVsZW1lbnRBdChwMSk7CisgICAgICAgICAgICAgICAgICAgIHQxICs9IHMxLmxlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICBkZWJ1Z0xvZ2xuKCIgKioqID4iICsgczEgKyAiPCIpOworICAgICAgICAgICAgICAgICAgICArK3AxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsb2dsbigiKioqKiogIiArIGYyTmFtZSArICIgaGFzOiIpOworICAgICAgICAgICAgICAgIHdoaWxlIChwMiA8PSB0ZW1wUDIgJiYgcDIgPCBmMi5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgczIgPSAoU3RyaW5nKWYyLmVsZW1lbnRBdChwMik7CisgICAgICAgICAgICAgICAgICAgIHQyICs9IHMyLmxlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICBkZWJ1Z0xvZ2xuKCIgKioqKiogPiIgKyBzMiArICI8Iik7CisgICAgICAgICAgICAgICAgICAgICsrcDI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVycmxuKCJEaXNjcmVwYW5jeSBiZXR3ZWVuICIgKyBmMU5hbWUgKyAiIGFuZCAiICsgZjJOYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBfdGVzdEZvbGxvd2luZyhCcmVha0l0ZXJhdG9yIGJpLCBTdHJpbmcgdGV4dCwgaW50W10gYm91bmRhcmllcykgeworICAgICAgICBsb2dsbigidGVzdEZvbGxvd2luZygpOiIpOworICAgICAgICBpbnQgcCA9IDI7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IHRleHQubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgaWYgKGkgPT0gYm91bmRhcmllc1twXSkKKyAgICAgICAgICAgICAgICArK3A7CisKKyAgICAgICAgICAgIGludCBiID0gYmkuZm9sbG93aW5nKGkpOworICAgICAgICAgICAgbG9nbG4oImJpLmZvbGxvd2luZygiICsgaSArICIpIC0+ICIgKyBiKTsKKyAgICAgICAgICAgIGlmIChiICE9IGJvdW5kYXJpZXNbcF0pCisgICAgICAgICAgICAgICAgZXJybG4oIldyb25nIHJlc3VsdCBmcm9tIGZvbGxvd2luZygpIGZvciAiICsgaSArICI6IGV4cGVjdGVkICIgKyBib3VuZGFyaWVzW3BdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgZ290ICIgKyBiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBfdGVzdFByZWNlZGluZyhCcmVha0l0ZXJhdG9yIGJpLCBTdHJpbmcgdGV4dCwgaW50W10gYm91bmRhcmllcykgeworICAgICAgICBsb2dsbigidGVzdFByZWNlZGluZygpOiIpOworICAgICAgICBpbnQgcCA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDw9IHRleHQubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgaW50IGIgPSBiaS5wcmVjZWRpbmcoaSk7CisgICAgICAgICAgICBsb2dsbigiYmkucHJlY2VkaW5nKCIgKyBpICsgIikgLT4gIiArIGIpOworICAgICAgICAgICAgaWYgKGIgIT0gYm91bmRhcmllc1twXSkKKyAgICAgICAgICAgICAgICBlcnJsbigiV3JvbmcgcmVzdWx0IGZyb20gcHJlY2VkaW5nKCkgZm9yICIgKyBpICsgIjogZXhwZWN0ZWQgIiArIGJvdW5kYXJpZXNbcF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCBnb3QgIiArIGIpOworCisgICAgICAgICAgICBpZiAoaSA9PSBib3VuZGFyaWVzW3AgKyAxXSkKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgX3Rlc3RJc0JvdW5kYXJ5KEJyZWFrSXRlcmF0b3IgYmksIFN0cmluZyB0ZXh0LCBpbnRbXSBib3VuZGFyaWVzKSB7CisgICAgICAgIGxvZ2xuKCJ0ZXN0SXNCb3VuZGFyeSgpOiIpOworICAgICAgICBpbnQgcCA9IDE7CisgICAgICAgIGJvb2xlYW4gaXNCOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSB0ZXh0Lmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIGlzQiA9IGJpLmlzQm91bmRhcnkoaSk7CisgICAgICAgICAgICBsb2dsbigiYmkuaXNCb3VuZGFyeSgiICsgaSArICIpIC0+ICIgKyBpc0IpOworCisgICAgICAgICAgICBpZiAoaSA9PSBib3VuZGFyaWVzW3BdKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpc0IpCisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJXcm9uZyByZXN1bHQgZnJvbSBpc0JvdW5kYXJ5KCkgZm9yICIgKyBpICsgIjogZXhwZWN0ZWQgdHJ1ZSwgZ290IGZhbHNlIik7CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGlzQikKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIldyb25nIHJlc3VsdCBmcm9tIGlzQm91bmRhcnkoKSBmb3IgIiArIGkgKyAiOiBleHBlY3RlZCBmYWxzZSwgZ290IHRydWUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBkb011bHRpcGxlU2VsZWN0aW9uVGVzdChCcmVha0l0ZXJhdG9yIGl0ZXJhdG9yLCBTdHJpbmcgdGVzdFRleHQpCisgICAgeworICAgICAgICBsb2dsbigiTXVsdGlwbGUgc2VsZWN0aW9uIHRlc3QuLi4iKTsKKyAgICAgICAgQnJlYWtJdGVyYXRvciB0ZXN0SXRlcmF0b3IgPSAoQnJlYWtJdGVyYXRvcilpdGVyYXRvci5jbG9uZSgpOworICAgICAgICBpbnQgb2Zmc2V0ID0gaXRlcmF0b3IuZmlyc3QoKTsKKyAgICAgICAgaW50IHRlc3RPZmZzZXQ7CisgICAgICAgIGludCBjb3VudCA9IDA7CisKKyAgICAgICAgZG8geworICAgICAgICAgICAgdGVzdE9mZnNldCA9IHRlc3RJdGVyYXRvci5maXJzdCgpOworICAgICAgICAgICAgdGVzdE9mZnNldCA9IHRlc3RJdGVyYXRvci5uZXh0KGNvdW50KTsKKyAgICAgICAgICAgIGxvZ2xuKCJuZXh0KCIgKyBjb3VudCArICIpIC0+ICIgKyB0ZXN0T2Zmc2V0KTsKKyAgICAgICAgICAgIGlmIChvZmZzZXQgIT0gdGVzdE9mZnNldCkKKyAgICAgICAgICAgICAgICBlcnJsbigibmV4dChuKSBhbmQgbmV4dCgpIG5vdCByZXR1cm5pbmcgY29uc2lzdGVudCByZXN1bHRzOiBmb3Igc3RlcCAiICsgY291bnQgKyAiLCBuZXh0KG4pIHJldHVybmVkICIgKyB0ZXN0T2Zmc2V0ICsgIiBhbmQgbmV4dCgpIGhhZCAiICsgb2Zmc2V0KTsKKworICAgICAgICAgICAgaWYgKG9mZnNldCAhPSBCcmVha0l0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgICAgICBjb3VudCsrOworICAgICAgICAgICAgICAgIG9mZnNldCA9IGl0ZXJhdG9yLm5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAob2Zmc2V0ICE9IEJyZWFrSXRlcmF0b3IuRE9ORSk7CisKKyAgICAgICAgLy8gbm93IGRvIGl0IGJhY2t3YXJkcy4uLgorICAgICAgICBvZmZzZXQgPSBpdGVyYXRvci5sYXN0KCk7CisgICAgICAgIGNvdW50ID0gMDsKKworICAgICAgICBkbyB7CisgICAgICAgICAgICB0ZXN0T2Zmc2V0ID0gdGVzdEl0ZXJhdG9yLmxhc3QoKTsKKyAgICAgICAgICAgIHRlc3RPZmZzZXQgPSB0ZXN0SXRlcmF0b3IubmV4dChjb3VudCk7CisgICAgICAgICAgICBsb2dsbigibmV4dCgiICsgY291bnQgKyAiKSAtPiAiICsgdGVzdE9mZnNldCk7CisgICAgICAgICAgICBpZiAob2Zmc2V0ICE9IHRlc3RPZmZzZXQpCisgICAgICAgICAgICAgICAgZXJybG4oIm5leHQobikgYW5kIG5leHQoKSBub3QgcmV0dXJuaW5nIGNvbnNpc3RlbnQgcmVzdWx0czogZm9yIHN0ZXAgIiArIGNvdW50ICsgIiwgbmV4dChuKSByZXR1cm5lZCAiICsgdGVzdE9mZnNldCArICIgYW5kIG5leHQoKSBoYWQgIiArIG9mZnNldCk7CisKKyAgICAgICAgICAgIGlmIChvZmZzZXQgIT0gQnJlYWtJdGVyYXRvci5ET05FKSB7CisgICAgICAgICAgICAgICAgY291bnQtLTsKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBpdGVyYXRvci5wcmV2aW91cygpOworICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxlIChvZmZzZXQgIT0gQnJlYWtJdGVyYXRvci5ET05FKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZG9CcmVha0ludmFyaWFudFRlc3QoQnJlYWtJdGVyYXRvciB0YiwgU3RyaW5nIHRlc3RDaGFycykKKyAgICB7CisgICAgICAgIFN0cmluZ0J1ZmZlciB3b3JrID0gbmV3IFN0cmluZ0J1ZmZlcigiYWFhIik7CisvLyAgICAgICAgaW50IGVycm9yQ291bnQgPSAwOworCisgICAgICAgIC8vIGEgYnJlYWsgc2hvdWxkIGFsd2F5cyBvY2N1ciBhZnRlciBDUiAodW5sZXNzIGZvbGxvd2VkIGJ5IExGKSwgTEYsIFBTLCBhbmQgTFMsCisgICAgICAgIC8vIHVubGVzcyB0aGV5J3JlIGZvbGxvd2VkIGJ5IGEgbm9uLXNwYWNpbmcgbWFyayBvciBhIGZvcm1hdCBjaGFyYWN0ZXIKKyAgICAgICAgU3RyaW5nIGJyZWFrcyA9ICJcclxuXHUyMDI5XHUyMDI4IjsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGJyZWFrcy5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICB3b3JrLnNldENoYXJBdCgxLCBicmVha3MuY2hhckF0KGkpKTsKKyAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgdGVzdENoYXJzLmxlbmd0aCgpOyBqKyspIHsKKyAgICAgICAgICAgICAgICB3b3JrLnNldENoYXJBdCgwLCB0ZXN0Q2hhcnMuY2hhckF0KGopKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IHRlc3RDaGFycy5sZW5ndGgoKTsgaysrKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgYyA9IHRlc3RDaGFycy5jaGFyQXQoayk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gaWYgYSBjciBpcyBmb2xsb3dlZCBieSBsZiwgcHMsIGxzIG9yIGV0eCwgZG9uJ3QgZG8gdGhlIGNoZWNrICh0aGF0J3MKKyAgICAgICAgICAgICAgICAgICAgLy8gbm90IHN1cHBvc2VkIHRvIHdvcmspCisgICAgICAgICAgICAgICAgICAgIGlmICh3b3JrLmNoYXJBdCgxKSA9PSAnXHInICYmIChjID09ICdcbicgfHwgYyA9PSAnXHUyMDI5JworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGMgPT0gJ1x1MjAyOCcgfHwgYyA9PSAnXHUwMDAzJykpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgICAgICB3b3JrLnNldENoYXJBdCgyLCBjKTsKKyAgICAgICAgICAgICAgICAgICAgdGIuc2V0VGV4dCh3b3JrLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICBib29sZWFuIHNlZW4yID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGwgPSB0Yi5maXJzdCgpOyBsICE9IEJyZWFrSXRlcmF0b3IuRE9ORTsgbCA9IHRiLm5leHQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPT0gMikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWVuMiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFzZWVuMikgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIk5vIGJyZWFrIGJldHdlZW4gVSsiICsgSW50ZWdlci50b0hleFN0cmluZygoaW50KSh3b3JrLmNoYXJBdCgxKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgYW5kIFUrIiArIEludGVnZXIudG9IZXhTdHJpbmcoKGludCkod29yay5jaGFyQXQoMikpKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZG9PdGhlckludmFyaWFudFRlc3QoQnJlYWtJdGVyYXRvciB0YiwgU3RyaW5nIHRlc3RDaGFycykKKyAgICB7CisgICAgICAgIFN0cmluZ0J1ZmZlciB3b3JrID0gbmV3IFN0cmluZ0J1ZmZlcigiYVxyXG5hIik7CisgICAgICAgIGludCBlcnJvckNvdW50ID0gMDsKKworICAgICAgICAvLyBhIGJyZWFrIHNob3VsZCBuZXZlciBvY2N1ciBiZXR3ZWVuIENSIGFuZCBMRgorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RDaGFycy5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICB3b3JrLnNldENoYXJBdCgwLCB0ZXN0Q2hhcnMuY2hhckF0KGkpKTsKKyAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgdGVzdENoYXJzLmxlbmd0aCgpOyBqKyspIHsKKyAgICAgICAgICAgICAgICB3b3JrLnNldENoYXJBdCgzLCB0ZXN0Q2hhcnMuY2hhckF0KGopKTsKKyAgICAgICAgICAgICAgICB0Yi5zZXRUZXh0KHdvcmsudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgayA9IHRiLmZpcnN0KCk7IGsgIT0gQnJlYWtJdGVyYXRvci5ET05FOyBrID0gdGIubmV4dCgpKQorICAgICAgICAgICAgICAgICAgICBpZiAoayA9PSAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiQnJlYWsgYmV0d2VlbiBDUiBhbmQgTEYgaW4gc3RyaW5nIFUrIiArIEludGVnZXIudG9IZXhTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKHdvcmsuY2hhckF0KDApKSkgKyAiLCBVK2QgVSthIFUrIiArIEludGVnZXIudG9IZXhTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKHdvcmsuY2hhckF0KDMpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JDb3VudCsrOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yQ291bnQgPj0gNzUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBhIGJyZWFrIHNob3VsZCBuZXZlciBvY2N1ciBiZWZvcmUgYSBub24tc3BhY2luZyBtYXJrLCB1bmxlc3MgaXQncyBwcmVjZWRlZAorICAgICAgICAvLyBieSBhIGxpbmUgdGVybWluYXRvcgorICAgICAgICB3b3JrLnNldExlbmd0aCgwKTsKKyAgICAgICAgd29yay5hcHBlbmQoImFhYWEiKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZXN0Q2hhcnMubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgY2hhciBjID0gdGVzdENoYXJzLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGlmIChjID09ICdcbicgfHwgYyA9PSAnXHInIHx8IGMgPT0gJ1x1MjAyOScgfHwgYyA9PSAnXHUyMDI4JyB8fCBjID09ICdcdTAwMDMnKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgd29yay5zZXRDaGFyQXQoMSwgYyk7CisgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHRlc3RDaGFycy5sZW5ndGgoKTsgaisrKSB7CisgICAgICAgICAgICAgICAgYyA9IHRlc3RDaGFycy5jaGFyQXQoaik7CisgICAgICAgICAgICAgICAgaWYgKENoYXJhY3Rlci5nZXRUeXBlKGMpICE9IENoYXJhY3Rlci5OT05fU1BBQ0lOR19NQVJLICYmIENoYXJhY3Rlci5nZXRUeXBlKGMpCisgICAgICAgICAgICAgICAgICAgICAgICAhPSBDaGFyYWN0ZXIuRU5DTE9TSU5HX01BUkspCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIHdvcmsuc2V0Q2hhckF0KDIsIGMpOworICAgICAgICAgICAgICAgIHRiLnNldFRleHQod29yay50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBrID0gdGIuZmlyc3QoKTsgayAhPSBCcmVha0l0ZXJhdG9yLkRPTkU7IGsgPSB0Yi5uZXh0KCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChrID09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJCcmVhayBiZXR3ZWVuIFUrIiArIEludGVnZXIudG9IZXhTdHJpbmcoKGludCkod29yay5jaGFyQXQoMSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgYW5kIFUrIiArIEludGVnZXIudG9IZXhTdHJpbmcoKGludCkod29yay5jaGFyQXQoMikpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvckNvdW50Kys7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JDb3VudCA+PSA3NSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGRlYnVnTG9nbG4oU3RyaW5nIHMpIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIHplcm9zID0gIjAwMDAiOworICAgICAgICBTdHJpbmcgdGVtcDsKKyAgICAgICAgU3RyaW5nQnVmZmVyIG91dCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIGNoYXIgYyA9IHMuY2hhckF0KGkpOworICAgICAgICAgICAgaWYgKGMgPj0gJyAnICYmIGMgPCAnXHUwMDdmJykKKyAgICAgICAgICAgICAgICBvdXQuYXBwZW5kKGMpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgb3V0LmFwcGVuZCgiXFx1Iik7CisgICAgICAgICAgICAgICAgdGVtcCA9IEludGVnZXIudG9IZXhTdHJpbmcoKGludCljKTsKKyAgICAgICAgICAgICAgICBvdXQuYXBwZW5kKHplcm9zLnN1YnN0cmluZygwLCA0IC0gdGVtcC5sZW5ndGgoKSkpOworICAgICAgICAgICAgICAgIG91dC5hcHBlbmQodGVtcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbG9nbG4ob3V0LnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIHRlc3RzCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0V29yZEJyZWFrKCkgeworICAgICAgICBWZWN0b3Igd29yZFNlbGVjdGlvbkRhdGEgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiMTIsMzQiKTsKKworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MDBBMiIpOyAvL2NlbnQgc2lnbgorICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTAwQTMiKTsgLy9wb3VuZCBzaWduCisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MDBBNCIpOyAvL2N1cnJlbmN5IHNpZ24KKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwMEE1Iik7IC8veWVuIHNpZ24KKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiYWxwaGEtYmV0YS1nYW1tYSIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIuIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiQmFkZ2VzIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIj8iKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJCQURHRVMiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiISIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCI/Iik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiEiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJXZSIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImRvbid0Iik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgibmVlZCIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIm5vIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiU1RJTktJTkciKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJCQURHRVMiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiISIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIhIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiEiKTsKKworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIwMTIuNTY2LDUiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIxMjMuMzQzNCw5MDAiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIxMDAwLDIzMyw0NTYuMDAwIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiMSwyMy4zMjIlIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiMTIzLjEyMjIiKTsKKworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MDAyNDEyMywwMDAuMjAiKTsKKworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIjE3OS4wMVx1MDAyNSIpOworCisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIkhlbGxvIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiwiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJob3ciKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJhcmUiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJ5b3UiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJYIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJOb3ciKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHIiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiaXMiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXG4iKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgidGhlIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlxyXG4iKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgidGltZSIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcbiIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcciIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJmb3IiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHIiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHIiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiYWxsIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KHdvcmRCcmVhaywgd29yZFNlbGVjdGlvbkRhdGEpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBidWcgNDA5Nzc3OQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RCdWc0MDk3Nzc5KCkgeworICAgICAgICBWZWN0b3Igd29yZFNlbGVjdGlvbkRhdGEgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiYWFcdTAzMDBhIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KHdvcmRCcmVhaywgd29yZFNlbGVjdGlvbkRhdGEpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBidWcgNDA5ODQ2NworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RCdWc0MDk4NDY3V29yZHMoKSB7CisgICAgICAgIFZlY3RvciB3b3JkU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICAvLyBXaGF0IGZvbGxvd3MgaXMgYSBzdHJpbmcgb2YgS29yZWFuIGNoYXJhY3RlcnMgKEkgZm91bmQgaXQgaW4gdGhlIFllbGxvdyBQYWdlcworICAgICAgICAvLyBhZCBmb3IgdGhlIEtvcmVhbiBQcmVzYnl0ZXJpYW4gQ2h1cmNoIG9mIFNhbiBGcmFuY2lzY28sIGFuZCBJIGhvcGUgSSB0cmFuc2NyaWJlZAorICAgICAgICAvLyBpdCBjb3JyZWN0bHkpLCBmaXJzdCBhcyBwcmVjb21wb3NlZCBzeWxsYWJsZXMsIGFuZCB0aGVuIGFzIGNvbmpvaW5pbmcgamFtby4KKyAgICAgICAgLy8gQm90aCBzZXF1ZW5jZXMgc2hvdWxkIGJlIHNlbWFudGljYWxseSBpZGVudGljYWwgYW5kIGJyZWFrIHRoZSBzYW1lIHdheS4KKyAgICAgICAgLy8gcHJlY29tcG9zZWQgc3lsbGFibGVzLi4uCisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1YzBjMVx1ZDU2ZCIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1ZDU1Y1x1Yzc3OCIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1YzVmMFx1ZDU2OSIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1YzdhNVx1Yjg1Y1x1YWQ1MFx1ZDY4YyIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIC8vIGNvbmpvaW5pbmcgamFtby4uLgorICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTExMDlcdTExNjFcdTExYmNcdTExMTJcdTExNjFcdTExYmMiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTExMTJcdTExNjFcdTExYWJcdTExMGJcdTExNzVcdTExYWIiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTExMGJcdTExNjdcdTExYWJcdTExMTJcdTExNjFcdTExYjgiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTExMGNcdTExNjFcdTExYmNcdTExMDVcdTExNjlcdTExMDBcdTExNmRcdTExMTJcdTExNmMiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3Qod29yZEJyZWFrLCB3b3JkU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGJ1ZyA0MTE3NTU0CisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEJ1ZzQxMTc1NTRXb3JkcygpIHsKKyAgICAgICAgVmVjdG9yIHdvcmRTZWxlY3Rpb25EYXRhID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIC8vIHRoaXMgaXMgYSB0ZXN0IGZvciBidWcgIzQxMTc1NTQ6IHRoZSBpZGVvZ3JhcGhpYyBpdGVyYXRpb24gbWFyayAoVSszMDA1KSBzaG91bGQKKyAgICAgICAgLy8gY291bnQgYXMgYSBLYW5qaSBjaGFyYWN0ZXIgZm9yIHRoZSBwdXJwb3NlcyBvZiB3b3JkIGJyZWFraW5nCisgICAgICAgIHdvcmRTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImFiYyIpOworICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTRlMDFcdTRlMDJcdTMwMDVcdTRlMDNcdTRlMDMiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiYWJjIik7CisKKyAgICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdCh3b3JkQnJlYWssIHdvcmRTZWxlY3Rpb25EYXRhKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0U2VudGVuY2VCcmVhaygpIHsKKyAgICAgICAgVmVjdG9yIHNlbnRlbmNlU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiVGhpcyBpcyBhIHNpbXBsZSBzYW1wbGUgc2VudGVuY2UuICIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiKFRoaXMgaXMgaXQuKSAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlRoaXMgaXMgYSBzaW1wbGUgc2FtcGxlIHNlbnRlbmNlLiAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlwiVGhpcyBpc25cJ3QgaXQuXCIgIik7CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJIaSEgIik7CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJUaGlzIGlzIGEgc2ltcGxlIHNhbXBsZSBzZW50ZW5jZS4gIik7CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJJdCBkb2VzIG5vdCBoYXZlIHRvIG1ha2UgYW55IHNlbnNlIGFzIHlvdSBjYW4gc2VlLiAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIk5lbCBtZXp6byBkZWwgY2FtbWluIGRpIG5vc3RyYSB2aXRhLCBtaSByaXRyb3ZhaSBpbiB1bmEgc2VsdmEgb3NjdXJhLiAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIkNoZSBsYSBkcml0dGEgdmlhIGF2ZW8gc21hcnJpdGEuICIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiSGUgc2FpZCwgdGhhdCBJIHNhaWQsIHRoYXQgeW91IHNhaWQhISAiKTsKKworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiRG9uJ3Qgcm9jayB0aGUgYm9hdC5cdTIwMjkiKTsKKworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiQmVjYXVzZSBJIGFtIHRoZSBkYWRkeSwgdGhhdCBpcyB3aHkuICIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiTm90IG9uIG15IHRpbWUgKGVsIHRpbW8uKSEgIik7CisKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlNvIHdoYXQhIVx1MjAyOSIpOworCisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcIkJ1dCBub3csXCIgaGUgc2FpZCwgXCJJIGtub3chXCIgIik7CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJIYXJyaXMgdGh1bWJlZCBkb3duIHNldmVyYWwsIGluY2x1ZGluZyBcIkF3YXkgV2UgR29cIiAod2hpY2ggYmVjYW1lIHRoZSBodWdlIHN1Y2Nlc3MgT2tsYWhvbWEhKS4gIik7CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJPbmUgc3BlY2llcywgQi4gYW50aHJhY2lzLCBpcyBoaWdobHkgdmlydWxlbnQuXG4iKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIldvbGYgc2FpZCBhYm91dCBTb3VuZGVyOlwiQmVhdXRpZnVsbHkgdGhvdWdodC1vdXQgYW5kIGRpcmVjdGVkLlwiICIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiSGF2ZSB5b3UgZXZlciBzYWlkLCBcIlRoaXMgaXMgd2hlcmUgXHRJIHNoYWxsIGxpdmVcIj8gIik7CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJIZSBhbnN3ZXJlZCwgXCJZb3UgbWF5IG5vdCFcIiAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIkFub3RoZXIgcG9wdWxhciBzYXlpbmcgaXM6IFwiSG93IGRvIHlvdSBkbz9cIi4gIik7CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJZZXQgYW5vdGhlciBwb3B1bGFyIHNheWluZyBpczogXCdJXCdtIGZpbmUgdGhhbmtzLlwnICIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiV2hhdCBpcyB0aGUgcHJvcGVyIHVzZSBvZiB0aGUgYWJicmV2aWF0aW9uIHBwLj8gIik7CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJZZXMsIEkgYW0gZGVmaW5hdGVsbHkgMTJcIiB0YWxsISEiKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KHNlbnRlbmNlQnJlYWssIHNlbnRlbmNlU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGJ1ZyA0MTEzODM1CisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEJ1ZzQxMTM4MzUoKSB7CisgICAgICAgIFZlY3RvciBzZW50ZW5jZVNlbGVjdGlvbkRhdGEgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgLy8gdGVzdCBmb3IgYnVnICM0MTEzODM1OiBcbiBhbmQgXHIgY291bnQgYXMgc3BhY2VzLCBub3QgYXMgcGFyYWdyYXBoIGJyZWFrcworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiTm93XHJpc1xudGhlXHJcbnRpbWVcblxyZm9yXHJccmFsbFx1MjAyOSIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3Qoc2VudGVuY2VCcmVhaywgc2VudGVuY2VTZWxlY3Rpb25EYXRhKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAYnVnIDQxMTEzMzgKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0QnVnNDExMTMzOCgpIHsKKyAgICAgICAgVmVjdG9yIHNlbnRlbmNlU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICAvLyB0ZXN0IGZvciBidWcgIzQxMTEzMzg6IERvbid0IGJyZWFrIHNlbnRlbmNlcyBhdCB0aGUgYm91bmRhcnkgYmV0d2VlbiBDSksKKyAgICAgICAgLy8gYW5kIG90aGVyIGxldHRlcnMKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1NTQ4N1x1NjdmZlx1ZTU5MVx1NTAxN1x1NjFiM1x1NjBhMVx1OTUxMFx1ODE2NTpcIkpBVkFcdTgyMWMiCisgICAgICAgICAgICAgICAgKyAiXHU4MTY1XHU3ZmM4XHU1MWNlXHUzMDZkLFx1MjQ5NFx1NTZkOFx1NGVjMFx1NjBiMVx1ODU2MFx1NTFiYSIKKyAgICAgICAgICAgICAgICArICJcdTYxMWRcdTU3YjZcdTI1MTBcdTVkNDZcIi5cdTIwMjkiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1NTQ4N1x1NjdmZlx1ZTU5MVx1NTAxN1x1NjFiM1x1NjBhMVx1OTUxMFx1ODE2NVx1OWRlOCIKKyAgICAgICAgICAgICAgICArICJcdTk3ZTRKQVZBXHU4MjFjXHU4MTY1XHU3ZmM4XHU1MWNlXHUzMDZkXHVlMzBiXHUyNDk0XHU1NmQ4XHU0ZWMwIgorICAgICAgICAgICAgICAgICsgIlx1NjBiMVx1ODU2MFx1NTFiYVx1NjExZFx1NTdiNlx1MjUxMFx1NWQ0Nlx1OTdlNVx1Nzc1MVx1MjAyOSIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHU1NDg3XHU2N2ZmXHVlNTkxXHU1MDE3XHU2MWIzXHU2MGExXHU5NTEwXHU4MTY1XHU5ZGU4XHU5N2U0IgorICAgICAgICAgICAgICAgICsgIlx1NjQ3MFx1ODc5MEpBVkFcdTgyMWNcdTgxNjVcdTdmYzhcdTUxY2VcdTMwNmRcdWUzMGJcdTI0OTRcdTU2ZDgiCisgICAgICAgICAgICAgICAgKyAiXHU0ZWMwXHU2MGIxXHU4NTYwXHU1MWJhXHU2MTFkXHU1N2I2XHUyNTEwXHU1ZDQ2XHU5N2U1XHU3NzUxXHUyMDI5Iik7CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJIZSBzYWlkLCBcIkkgY2FuIGdvIHRoZXJlLlwiXHUyMDI5Iik7CisKKyAgICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdChzZW50ZW5jZUJyZWFrLCBzZW50ZW5jZVNlbGVjdGlvbkRhdGEpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBidWcgNDExNzU1NAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RCdWc0MTE3NTU0U2VudGVuY2VzKCkgeworICAgICAgICBWZWN0b3Igc2VudGVuY2VTZWxlY3Rpb25EYXRhID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIC8vIFRyZWF0IGZ1bGx3aWR0aCB2YXJpYW50cyBvZiAuIT8gdGhlIHNhbWUgYXMgdGhlaXIKKyAgICAgICAgLy8gbm9ybWFsIGNvdW50ZXJwYXJ0cworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiSSBrbm93IEknbSByaWdodFx1ZmYwZSAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlJpZ2h0XHVmZjFmICIpOworICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiUmlnaHRcdWZmMDEgIik7CisKKyAgICAgICAgLy8gRG9uJ3QgYnJlYWsgc2VudGVuY2VzIGF0IGJvdW5kYXJ5IGJldHdlZW4gQ0pLIGFuZCBkaWdpdHMKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1NTQ4N1x1NjdmZlx1ZTU5MVx1NTAxN1x1NjFiM1x1NjBhMVx1OTUxMFx1ODE2NVx1OWRlOCIKKyAgICAgICAgICAgICAgICArICJcdTk3ZTQ4ODg4XHU4MjFjXHU4MTY1XHU3ZmM4XHU1MWNlXHUzMDZkXHVlMzBiXHUyNDk0XHU1NmQ4XHU0ZWMwIgorICAgICAgICAgICAgICAgICsgIlx1NjBiMVx1ODU2MFx1NTFiYVx1NjExZFx1NTdiNlx1MjUxMFx1NWQ0Nlx1OTdlNVx1Nzc1MVx1MjAyOSIpOworCisgICAgICAgIC8vIEJyZWFrIHNlbnRlbmNlIGJldHdlZW4gYSBzZW50ZW5jZSB0ZXJtaW5hdG9yIGFuZAorICAgICAgICAvLyBvcGVuaW5nIHB1bmN0dWF0aW9uCisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJubz8iKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIih5ZXMpIik7CisKKyAgICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdChzZW50ZW5jZUJyZWFrLCBzZW50ZW5jZVNlbGVjdGlvbkRhdGEpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBidWcgNDE1ODM4MQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RCdWc0MTU4MzgxKCkgeworICAgICAgICBWZWN0b3Igc2VudGVuY2VTZWxlY3Rpb25EYXRhID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIC8vIERvbid0IGJyZWFrIHNlbnRlbmNlIGFmdGVyIHBlcmlvZCBpZiBpdCBpc24ndCBmb2xsb3dlZCBieSBhIHNwYWNlCisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJUZXN0IDxjb2RlPkZsYWdzLkZsYWc8L2NvZGU+IGNsYXNzLiAgIik7CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJBbm90aGVyIHRlc3QuXHUyMDI5Iik7CisKKyAgICAgICAgLy8gTm8gYnJlYWtzIHdoZW4gdGhlcmUgYXJlIG5vIHRlcm1pbmF0b3JzIGFyb3VuZAorICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiPFA+UHJvdmlkZXMgYSBzZXQgb2YgIgorICAgICAgICAgICAgICAgICsgIiZxdW90O2xpZ2h0d2VpZ2h0JnF1b3Q7IChhbGwtamF2YTxGT05UIFNJWkU9XCItMlwiPjxTVVA+VE0iCisgICAgICAgICAgICAgICAgKyAiPC9TVVA+PC9GT05UPiBsYW5ndWFnZSkgY29tcG9uZW50cyB0aGF0LCAiCisgICAgICAgICAgICAgICAgKyAidG8gdGhlIG1heGltdW0gZGVncmVlIHBvc3NpYmxlLCB3b3JrIHRoZSBzYW1lIG9uIGFsbCBwbGF0Zm9ybXMuICAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIkFub3RoZXIgdGVzdC5cdTIwMjkiKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KHNlbnRlbmNlQnJlYWssIHNlbnRlbmNlU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGJ1ZyA0MTQzMDcxCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEJ1ZzQxNDMwNzEoKSB7CisgICAgICAgIFZlY3RvciBzZW50ZW5jZVNlbGVjdGlvbkRhdGEgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIHNlbnRlbmNlcyB0aGF0IGVuZCB3aXRoIGRpZ2l0cyB3b3JrIHJpZ2h0CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJUb2RheSBpcyB0aGUgMjd0aCBvZiBNYXksIDE5OTguICAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlRvbW9ycm93IHdpbGwgYmUgMjggTWF5IDE5OTguICAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlRoZSBkYXkgYWZ0ZXIgd2lsbCBiZSB0aGUgMzB0aC5cdTIwMjkiKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KHNlbnRlbmNlQnJlYWssIHNlbnRlbmNlU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGJ1ZyA0MTUyNDE2CisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEJ1ZzQxNTI0MTYoKSB7CisgICAgICAgIFZlY3RvciBzZW50ZW5jZVNlbGVjdGlvbkRhdGEgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgLy8gTWFrZSBzdXJlIHNlbnRlbmNlcyBlbmRpbmcgd2l0aCBhIGNhcGl0YWwgbGV0dGVyIGFyZSB0cmVhdGVkIGNvcnJlY3RseQorICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiVGhlIHR5cGUgb2YgYWxsIHByaW1pdGl2ZSAiCisgICAgICAgICAgICAgICAgKyAiPGNvZGU+Ym9vbGVhbjwvY29kZT4gdmFsdWVzIGFjY2Vzc2VkIGluIHRoZSB0YXJnZXQgVk0uICAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIkNhbGxzIHRvIHh4eCB3aWxsIHJldHVybiBhbiAiCisgICAgICAgICAgICAgICAgKyAiaW1wbGVtZW50b3Igb2YgdGhpcyBpbnRlcmZhY2UuXHUyMDI5Iik7CisKKyAgICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdChzZW50ZW5jZUJyZWFrLCBzZW50ZW5jZVNlbGVjdGlvbkRhdGEpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBidWcgNDE1MjExNworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RCdWc0MTUyMTE3KCkgeworICAgICAgICBWZWN0b3Igc2VudGVuY2VTZWxlY3Rpb25EYXRhID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIC8vIE1ha2Ugc3VyZSBzZW50ZW5jZSBicmVha2luZyBpcyBoYW5kbGluZyBwdW5jdHVhdGlvbiBjb3JyZWN0bHkKKyAgICAgICAgLy8gW0NPVUxEIE5PVCBSRVBST0RVQ0UgVEhJUyBCVUcsIEJVVCBURVNUIElTIEhFUkUgVE8gTUFLRSBTVVJFCisgICAgICAgIC8vIElUIERPRVNOJ1QgQ1JPUCBVUF0KKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIkNvbnN0cnVjdHMgYSByYW5kb21seSBnZW5lcmF0ZWQgIgorICAgICAgICAgICAgICAgICsgIkJpZ0ludGVnZXIsIHVuaWZvcm1seSBkaXN0cmlidXRlZCBvdmVyIHRoZSByYW5nZSA8dHQ+MDwvdHQ+ICIKKyAgICAgICAgICAgICAgICArICJ0byA8dHQ+KDI8c3VwPm51bUJpdHM8L3N1cD4gLSAxKTwvdHQ+LCBpbmNsdXNpdmUuICAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlRoZSB1bmlmb3JtaXR5IG9mIHRoZSBkaXN0cmlidXRpb24gIgorICAgICAgICAgICAgICAgICsgImFzc3VtZXMgdGhhdCBhIGZhaXIgc291cmNlIG9mIHJhbmRvbSBiaXRzIGlzIHByb3ZpZGVkIGluICIKKyAgICAgICAgICAgICAgICArICI8dHQ+cm5kPC90dD4uICAiKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIk5vdGUgdGhhdCB0aGlzIGNvbnN0cnVjdG9yIGFsd2F5cyAiCisgICAgICAgICAgICAgICAgKyAiY29uc3RydWN0cyBhIG5vbi1uZWdhdGl2ZSBCaWdJbnRlZ2VyLlx1MjAyOSIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3Qoc2VudGVuY2VCcmVhaywgc2VudGVuY2VTZWxlY3Rpb25EYXRhKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0TGluZUJyZWFrKCkgeworICAgICAgICBWZWN0b3IgbGluZVNlbGVjdGlvbkRhdGEgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiTXVsdGktIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIkxldmVsICIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJleGFtcGxlICIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJvZiAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiYSAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgic2VtaS0iKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiaWRpb3RpYyAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgibm9uLSIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJzZW5zaWNhbCAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiKG5vbi0iKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiaW1wb3J0YW50KSAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgic2VudGVuY2UuICIpOworCisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIkhpICAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiSGVsbG8gIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIkhvd1xuIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImFyZVxyIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoInlvdVx1MjAyOCIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJmaW5lLlx0Iik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImdvb2QuICAiKTsKKworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJOb3dcciIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJpc1xuIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoInRoZVxyXG4iKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgidGltZVxuIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlxyIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImZvclxyIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlxyIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImFsbCIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3QobGluZUJyZWFrLCBsaW5lU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGJ1ZyA0MDY4MTMzCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEJ1ZzQwNjgxMzMoKSB7CisgICAgICAgIFZlY3RvciBsaW5lU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTk2ZjYiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHU0ZTAwXHUzMDAyIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1NGU4Y1x1MzAwMSIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTRlMDlcdTMwMDJcdTMwMDEiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHU1NmRiXHUzMDAxXHUzMDAyXHUzMDAxIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1NGU5NCwiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHU1MTZkLiIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTRlMDMuXHUzMDAxLFx1MzAwMiIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTUxNmIiKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KGxpbmVCcmVhaywgbGluZVNlbGVjdGlvbkRhdGEpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBidWcgNDA4NjA1MgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RCdWc0MDg2MDUyKCkgeworICAgICAgICBWZWN0b3IgbGluZVNlbGVjdGlvbkRhdGEgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiZm9vXHUwMGEwYmFyICIpOworLy8gICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImZvb1x1ZmVmZmJhciIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3QobGluZUJyZWFrLCBsaW5lU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGJ1ZyA0MDk3OTIwCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEJ1ZzQwOTc5MjAoKSB7CisgICAgICAgIFZlY3RvciBsaW5lU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJkb2csIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImNhdCwiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgibW91c2UgIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIihvbmUpIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIih0d28pXG4iKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KGxpbmVCcmVhaywgbGluZVNlbGVjdGlvbkRhdGEpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBidWcgNDAzNTI2NgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RCdWc0MDM1MjY2KCkgeworICAgICAgICBWZWN0b3IgbGluZVNlbGVjdGlvbkRhdGEgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiVGhlICIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJiYWxhbmNlICIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJpcyAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiJC0yMyw0NTYuNzgsICIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJub3QgIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIi0kMzIsNDU2Ljc4IVxuIik7CisKKyAgICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdChsaW5lQnJlYWssIGxpbmVTZWxlY3Rpb25EYXRhKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAYnVnIDQwOTg0NjcKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0QnVnNDA5ODQ2N0xpbmVzKCkgeworICAgICAgICBWZWN0b3IgbGluZVNlbGVjdGlvbkRhdGEgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgLy8gV2hhdCBmb2xsb3dzIGlzIGEgc3RyaW5nIG9mIEtvcmVhbiBjaGFyYWN0ZXJzIChJIGZvdW5kIGl0IGluIHRoZSBZZWxsb3cgUGFnZXMKKyAgICAgICAgLy8gYWQgZm9yIHRoZSBLb3JlYW4gUHJlc2J5dGVyaWFuIENodXJjaCBvZiBTYW4gRnJhbmNpc2NvLCBhbmQgSSBob3BlIEkgdHJhbnNjcmliZWQKKyAgICAgICAgLy8gaXQgY29ycmVjdGx5KSwgZmlyc3QgYXMgcHJlY29tcG9zZWQgc3lsbGFibGVzLCBhbmQgdGhlbiBhcyBjb25qb2luaW5nIGphbW8uCisgICAgICAgIC8vIEJvdGggc2VxdWVuY2VzIHNob3VsZCBiZSBzZW1hbnRpY2FsbHkgaWRlbnRpY2FsIGFuZCBicmVhayB0aGUgc2FtZSB3YXkuCisgICAgICAgIC8vIHByZWNvbXBvc2VkIHN5bGxhYmxlcy4uLgorICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdWMwYzFcdWQ1NmQgIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1ZDU1Y1x1Yzc3OCAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHVjNWYwXHVkNTY5ICIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdWM3YTVcdWI4NWNcdWFkNTBcdWQ2OGMgIik7CisgICAgICAgIC8vIGNvbmpvaW5pbmcgamFtby4uLgorICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTExMDlcdTExNjFcdTExYmNcdTExMTJcdTExNjFcdTExYmMgIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MTExMlx1MTE2MVx1MTFhYlx1MTEwYlx1MTE3NVx1MTFhYiAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUxMTBiXHUxMTY3XHUxMWFiXHUxMTEyXHUxMTYxXHUxMWI4ICIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTExMGNcdTExNjFcdTExYmNcdTExMDVcdTExNjlcdTExMDBcdTExNmRcdTExMTJcdTExNmMiKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KGxpbmVCcmVhaywgbGluZVNlbGVjdGlvbkRhdGEpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RUaGFpTGluZUJyZWFrKCkgeworICAgICAgICBWZWN0b3IgbGluZVNlbGVjdGlvbkRhdGEgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgLy8gXHUwZTJmLS0gdGhlIFRoYWkgcGFpeWFubm9pIGNoYXJhY3Rlci0tIGlzbid0IGEgbGV0dGVyLiAgSXQncyBhIHN5bWJvbCB0aGF0CisgICAgICAgIC8vIHJlcHJlc2VudHMgZWxpZGVkIGxldHRlcnMgYXQgdGhlIGVuZCBvZiBhIGxvbmcgd29yZC4gIEl0IHNob3VsZCBiZSBib3VuZCB0bworICAgICAgICAvLyB0aGUgZW5kIG9mIHRoZSB3b3JkIGFuZCBub3QgdHJlYXRlZCBhcyBhbiBpbmRlcGVuZGVudCBwdW5jdHVhdGlvbiBtYXJrLgorICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMmFcdTBlMTZcdTBlMzJcdTBlMTlcdTBlMzVcdTBlMmYiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTA4XHUwZTMwIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUyM1x1MGUzMFx1MGUxNFx1MGUyMSIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlNDBcdTBlMDhcdTBlNDlcdTBlMzIiKTsKKy8vICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMmJcdTBlMTlcdTBlNDlcdTBlMzIiKTsKKy8vICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMTdcdTBlMzVcdTBlNDgiKTsKKy8vIEkgdGhpbmsgdGhlIGFib3ZlIHR3byBsaW5lcyBhcmUgdGhlIHByZWZlcnJlZCByZWFkaW5nIG9mIHRoaXMgdGV4dCwgYnV0IG91ciBjdXJyZW50CisvLyBkaWN0aW9uYXJ5IHlpZWxkcyB0aGUgZm9sbG93aW5nOgorbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTJiXHUwZTE2XHUwZTQ5XHUwZTMyXHUwZTE3XHUwZTM1XHUwZTQ4Iik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUyZFx1MGUyZFx1MGUwMSIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMjFcdTBlMzIiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTQwXHUwZTIzXHUwZTQ4XHUwZTA3Iik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUyM1x1MGUzMFx1MGUxYVx1MGUzMlx1MGUyMiIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMmRcdTBlMjJcdTBlNDhcdTBlMzJcdTBlMDciKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTQwXHUwZTE1XHUwZTQ3XHUwZTIxIik7CisKKyAgICAgICAgLy8gdGhlIG9uZSB0aW1lIHdoZXJlIHRoZSBwYWl5YW5ub2kgb2NjdXJzIHNvbWV3aGVyZSBvdGhlciB0aGFuIGF0IHRoZSBlbmQKKyAgICAgICAgLy8gb2YgYSB3b3JkIGlzIGluIHRoZSBUaGFpIGFiYnJldmF0aW9uIGZvciAiZXRjLiIsIHdoaWNoIGJvdGggYmVnaW5zIGFuZAorICAgICAgICAvLyBlbmRzIHdpdGggYSBwYWl5YW5ub2kKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTJmXHUwZTI1XHUwZTJmIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUxN1x1MGUzNVx1MGU0OCIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMTlcdTBlMzFcdTBlNDlcdTBlMTkiKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KEJyZWFrSXRlcmF0b3IuZ2V0TGluZUluc3RhbmNlKG5ldyBMb2NhbGUoInRoIiwgIiIsICIiKSksCisgICAgICAgICAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RNaXhlZFRoYWlMaW5lQnJlYWsoKSB7CisgICAgICAgIFZlY3RvciBsaW5lU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICAvLyBBcmFiaWMgbnVtZXJhbHMgc2hvdWxkIGFsd2F5cyBiZSBzZXBhcmF0ZWQgZnJvbSBzdXJyb3VuZGluZyBUaGFpIHRleHQKKy8qCisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUwNFx1MGU0OFx1MGUzMiIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlNDBcdTBlMDdcdTBlMzRcdTBlMTkiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTFhXHUwZTMyXHUwZTE3Iik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGU0MVx1MGUxNVx1MGUzMCIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMjNcdTBlMzBcdTBlMTRcdTBlMzFcdTBlMWEiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiMzkiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTFhXHUwZTMyXHUwZTE3ICIpOworCisgICAgICAgIC8vIHdvcmRzIGluIG5vbi1UaGFpIHNjcmlwdHMgc2hvdWxkIGFsd2F5cyBiZSBzZXBhcmF0ZWQgZnJvbSBzdXJyb3VuZGluZyBUaGFpIHRleHQKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTE3XHUwZTE0Iik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUyYVx1MGUyZFx1MGUxYSIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJKYXZhIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUxYVx1MGUxOSIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlNDBcdTBlMDRcdTBlMjNcdTBlMzdcdTBlNDhcdTBlMmRcdTBlMDciKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTQ0XHUwZTJkXHUwZTFhXHUwZTM1XHUwZTQwXHUwZTJkXHUwZTQ3XHUwZTIxICIpOworCisgICAgICAgIC8vIFRoYWkgbnVtZXJhbHMgc2hvdWxkIGFsd2F5cyBiZSBzZXBhcmF0ZWQgZnJvbSB0aGUgdGV4dCBzdXJyb3VuZGluZyB0aGVtCisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUwNFx1MGU0OFx1MGUzMiIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlNDBcdTBlMDdcdTBlMzRcdTBlMTkiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTFhXHUwZTMyXHUwZTE3Iik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGU0MVx1MGUxNVx1MGUzMCIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMjNcdTBlMzBcdTBlMTRcdTBlMzFcdTBlMWEiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTUzXHUwZTU5Iik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUxYVx1MGUzMlx1MGUxNyAiKTsKKworICAgICAgICAvLyBUaGFpIHRleHQgc2hvdWxkIGludGVyYWN0IGNvcnJlY3RseSB3aXRoIHB1bmN0dWF0aW9uIGFuZCBzeW1ib2xzCisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGU0NFx1MGUyZFx1MGUxYVx1MGUzNVx1MGU0MFx1MGUyZFx1MGU0N1x1MGUyMSIpOworLy8gICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIihcdTBlMWJcdTBlMjNcdTBlMzBcdTBlNDBcdTBlMTdcdTBlMjgiKTsKKy8vICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlNDRcdTBlMTdcdTBlMjIpIik7CisvLyBJIHRoaW5rIHRoZSBhYm92ZSBsaW5lcyByZXByZXNlbnQgdGhlIHByZWZlcnJlZCByZWFkaW5nIGZvciB0aGlzIHRleHQsIGJ1dCBvdXIgY3VycmVudAorLy8gZGljdGlvbmFyeSBmaWxlIHlpZWxkcyB0aGUgZm9sbG93aW5nOgorbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiKFx1MGUxYlx1MGUyM1x1MGUzMFx1MGU0MFx1MGUxN1x1MGUyOFx1MGU0NFx1MGUxN1x1MGUyMikiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTA4XHUwZTMzXHUwZTAxXHUwZTMxXHUwZTE0Iik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGU0MFx1MGUxYlx1MGUzNFx1MGUxNCIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMTVcdTBlMzFcdTBlMjdcIiIpOworKi8KKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTJlXHUwZTMyXHUwZTIzXHUwZTRjXHUwZTE0XHUwZTE0XHUwZTM0XHUwZTJhXHUwZTAxXHUwZTRjXCIiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTIzXHUwZTM4XHUwZTQ4XHUwZTE5Iik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGU0M1x1MGUyYlx1MGUyMVx1MGU0OCIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlNDBcdTBlMTRcdTBlMzdcdTBlMmRcdTBlMTlcdTBlMjFcdTBlMzQuIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUyMi4iKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTE5XHUwZTM1XHUwZTQ5Iik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUyM1x1MGUzMlx1MGUwNFx1MGUzMiIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIkMjAwIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGU0MFx1MGUxN1x1MGU0OFx1MGUzMiIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMTlcdTBlMzFcdTBlNDlcdTBlMTkgIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIihcIlx1MGUyZVx1MGUzMlx1MGUyM1x1MGU0Y1x1MGUxNFx1MGUxNFx1MGUzNFx1MGUyYVx1MGUwMVx1MGU0Y1wiKS4iKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KEJyZWFrSXRlcmF0b3IuZ2V0TGluZUluc3RhbmNlKG5ldyBMb2NhbGUoInRoIiwgIiIsICIiKSksCisgICAgICAgICAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RNYWl5YW1vaygpIHsKKyAgICAgICAgVmVjdG9yIGxpbmVTZWxlY3Rpb25EYXRhID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIC8vIHRoZSBUaGFpIG1haXlhbW9rIGNoYXJhY3RlciBpcyBhIHNob3J0aGFuZCBzeW1ib2wgdGhhdCBtZWFucyAicmVwZWF0IHRoZSBwcmV2aW91cworICAgICAgICAvLyB3b3JkIi4gIEluc3RlYWQgb2YgYXBwZWFyaW5nIGFzIGEgd29yZCB1bnRvIGl0c2VsZiwgaG93ZXZlciwgaXQncyBrZXB0IHRvZ2V0aGVyCisgICAgICAgIC8vIHdpdGggdGhlIHdvcmQgYmVmb3JlIGl0CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGU0NFx1MGUxYlx1MGU0NiIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlMjFcdTBlMzJcdTBlNDYiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTIzXHUwZTMwXHUwZTJiXHUwZTI3XHUwZTQ4XHUwZTMyXHUwZTA3Iik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGUwMVx1MGUyM1x1MGUzOFx1MGUwN1x1MGU0MFx1MGUxN1x1MGUxZSIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTBlNDFcdTBlMjVcdTBlMzAiKTsKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUwZTQwXHUwZTAzXHUwZTM1XHUwZTIyXHUwZTA3Iik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MGU0M1x1MGUyYlx1MGUyMVx1MGU0OCIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3QoQnJlYWtJdGVyYXRvci5nZXRMaW5lSW5zdGFuY2UobmV3IExvY2FsZSgidGgiLCAiIiwgIiIpKSwKKyAgICAgICAgICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGJ1ZyA0MTE3NTU0CisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEJ1ZzQxMTc1NTRMaW5lcygpIHsKKyAgICAgICAgVmVjdG9yIGxpbmVTZWxlY3Rpb25EYXRhID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIC8vIEZ1bGx3aWR0aCAuIT8gc2hvdWxkIGJlIHRyZWF0ZWQgYXMgcG9zdEp3cmQKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHU0ZTAxXHVmZjBlIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1NGUwMlx1ZmYwMSIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTRlMDNcdWZmMWYiKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KGxpbmVCcmVhaywgbGluZVNlbGVjdGlvbkRhdGEpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RMZXR0ZXJzQW5kRGlnaXRzKCkgeworICAgICAgICAvLyBhIGNoYXJhY3RlciBzZXF1ZW5jZSBzdWNoIGFzICJYMTEiIG9yICIzMEYzIiBvciAibmF0aXZlMmFzY2lpIiBzaG91bGQKKyAgICAgICAgLy8gYmUga2VwdCB0b2dldGhlciBhcyBhIHNpbmdsZSB3b3JkCisgICAgICAgIFZlY3RvciBsaW5lU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJYMTEgIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIjMwRjMgIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIm5hdGl2ZTJhc2NpaSIpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3QobGluZUJyZWFrLCBsaW5lU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGJ1ZyA0MjE3NzAzCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEJ1ZzQyMTc3MDMoKSB7CisgICAgICAgIFZlY3RvciBsaW5lU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICAvLyBUaGVyZSBzaG91bGRuJ3QgYmUgYSBsaW5lIGJyZWFrIGJldHdlZW4gc2VudGVuY2UtZW5kaW5nIHB1bmN0dWF0aW9uCisgICAgICAgIC8vIGFuZCBhIGNsb3NpbmcgcXVvdGUKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiSGUgIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoInNhaWQgIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlwiR28hXCIgICIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJJICIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJ3ZW50LiAgIik7CisKKyAgICAgICAgbGluZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiSGFzaHRhYmxlJEVudW1lcmF0aW9uICIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJnZXRUZXh0KCkuIik7CisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImdldEluZGV4KCkiKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KGxpbmVCcmVhaywgbGluZVNlbGVjdGlvbkRhdGEpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBncmF2ZVMgPSAiU1x1MDMwMCI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGFjdXRlQmVsb3dJID0gImlcdTAzMTciOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBhY3V0ZUUgPSAiZVx1MDMwMSI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGNpcmN1bWZsZXhBID0gImFcdTAzMDIiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyB0aWxkZUUgPSAiZVx1MDMwMyI7CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0Q2hhcmFjdGVyQnJlYWsoKSB7CisgICAgICAgIFZlY3RvciBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudChncmF2ZVMpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoYWN1dGVCZWxvd0kpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIm0iKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJwIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgibCIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoYWN1dGVFKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgicyIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoY2lyY3VtZmxleEEpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIm0iKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJwIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgibCIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQodGlsZGVFKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIuIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgidyIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoY2lyY3VtZmxleEEpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoInciKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJhIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiZiIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoInEiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcbiIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlxyIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHJcbiIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlxuIik7CisKKyAgICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdChjaGFyYWN0ZXJCcmVhaywgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQGJ1ZyA0MDk4NDY3CisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEJ1ZzQwOTg0NjdDaGFyYWN0ZXJzKCkgeworICAgICAgICBWZWN0b3IgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICAvLyBXaGF0IGZvbGxvd3MgaXMgYSBzdHJpbmcgb2YgS29yZWFuIGNoYXJhY3RlcnMgKEkgZm91bmQgaXQgaW4gdGhlIFllbGxvdyBQYWdlcworICAgICAgICAvLyBhZCBmb3IgdGhlIEtvcmVhbiBQcmVzYnl0ZXJpYW4gQ2h1cmNoIG9mIFNhbiBGcmFuY2lzY28sIGFuZCBJIGhvcGUgSSB0cmFuc2NyaWJlZAorICAgICAgICAvLyBpdCBjb3JyZWN0bHkpLCBmaXJzdCBhcyBwcmVjb21wb3NlZCBzeWxsYWJsZXMsIGFuZCB0aGVuIGFzIGNvbmpvaW5pbmcgamFtby4KKyAgICAgICAgLy8gQm90aCBzZXF1ZW5jZXMgc2hvdWxkIGJlIHNlbWFudGljYWxseSBpZGVudGljYWwgYW5kIGJyZWFrIHRoZSBzYW1lIHdheS4KKyAgICAgICAgLy8gcHJlY29tcG9zZWQgc3lsbGFibGVzLi4uCisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHVjMGMxIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHVkNTZkIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1ZDU1YyIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1Yzc3OCIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdWM1ZjAiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdWQ1NjkiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHVjN2E1Iik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHViODVjIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHVhZDUwIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHVkNjhjIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICAvLyBjb25qb2luaW5nIGphbW8uLi4KKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTExMDlcdTExNjFcdTExYmMiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTExMTJcdTExNjFcdTExYmMiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUxMTEyXHUxMTYxXHUxMWFiIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUxMTBiXHUxMTc1XHUxMWFiIik7CisgICAgICAgIGNoYXJhY3RlclNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MTEwYlx1MTE2N1x1MTFhYiIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1MTExMlx1MTE2MVx1MTFiOCIpOworICAgICAgICBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTExMGNcdTExNjFcdTExYmMiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTExMDVcdTExNjkiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTExMDBcdTExNmQiKTsKKyAgICAgICAgY2hhcmFjdGVyU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTExMTJcdTExNmMiKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KGNoYXJhY3RlckJyZWFrLCBjaGFyYWN0ZXJTZWxlY3Rpb25EYXRhKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIEBidWcgNDE1MzA3MgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RCdWc0MTUzMDcyKCkgeworICAgICAgICBCcmVha0l0ZXJhdG9yIGl0ZXIgPSBCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZSgpOworICAgICAgICBTdHJpbmcgc3RyID0gIi4uLkhlbGxvLCBXb3JsZCEuLi4iOworICAgICAgICBpbnQgYmVnaW4gPSAzOworICAgICAgICBpbnQgZW5kID0gc3RyLmxlbmd0aCgpIC0gMzsKKyAgICAgICAgYm9vbGVhbiBnb3RFeGNlcHRpb24gPSBmYWxzZTsKKyAgICAgICAgYm9vbGVhbiBkdW1teTsKKworICAgICAgICBpdGVyLnNldFRleHQobmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKHN0ciwgYmVnaW4sIGVuZCwgYmVnaW4pKTsKKyAgICAgICAgZm9yIChpbnQgaW5kZXggPSAtMTsgaW5kZXggPCBiZWdpbiArIDE7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgZHVtbXkgPSBpdGVyLmlzQm91bmRhcnkoaW5kZXgpOworICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IGJlZ2luKQorICAgICAgICAgICAgICAgICAgICBlcnJsbigiRGlkbid0IGdldCBleGNlcHRpb24gd2l0aCBvZmZzZXQgPSAiICsgaW5kZXggKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBhbmQgYmVnaW4gaW5kZXggPSAiICsgYmVnaW4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IGJlZ2luKQorICAgICAgICAgICAgICAgICAgICBlcnJsbigiR290IGV4Y2VwdGlvbiB3aXRoIG9mZnNldCA9ICIgKyBpbmRleCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGFuZCBiZWdpbiBpbmRleCA9ICIgKyBiZWdpbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0QnVnNDE0NjE3NVNlbnRlbmNlcygpIHsKKyAgICAgICAgVmVjdG9yIHNlbnRlbmNlU2VsZWN0aW9uRGF0YSA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICAvLyBicmVhayBiZXR3ZWVuIHBlcmlvZHMgYW5kIG9wZW5pbmcgcHVuY3R1YXRpb24gZXZlbiB3aGVuIHRoZXJlJ3Mgbm8KKyAgICAgICAgLy8gaW50ZXJ2ZW5pbmcgc3BhY2UKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoImVuZC4iKTsKKyAgICAgICAgc2VudGVuY2VTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIihUaGlzIGlzXHUyMDI5Iik7CisKKyAgICAgICAgLy8gdHJlYXQgdGhlIGZ1bGx3aWR0aCBwZXJpb2QgYXMgYW4gdW5hbWJpZ3VvdXMgc2VudGVuY2UgdGVybWluYXRvcgorICAgICAgICBzZW50ZW5jZVNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHU3ZDQyXHUzMDhmXHUzMDhhXHVmZjBlIik7CisgICAgICAgIHNlbnRlbmNlU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTMwMGNcdTMwNTNcdTMwOGNcdTMwNmYiKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KHNlbnRlbmNlQnJlYWssIHNlbnRlbmNlU2VsZWN0aW9uRGF0YSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdEJ1ZzQxNDYxNzVMaW5lcygpIHsKKyAgICAgICAgVmVjdG9yIGxpbmVTZWxlY3Rpb25EYXRhID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIC8vIHRoZSBmdWxsd2lkdGggY29tbWEgc2hvdWxkIHN0aWNrIHRvIHRoZSBwcmVjZWRpbmcgSmFwYW5lc2UgY2hhcmFjdGVyCisgICAgICAgIGxpbmVTZWxlY3Rpb25EYXRhLmFkZEVsZW1lbnQoIlx1N2Q0Mlx1ZmYwYyIpOworICAgICAgICBsaW5lU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTMwOGYiKTsKKworICAgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KGxpbmVCcmVhaywgbGluZVNlbGVjdGlvbkRhdGEpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RCdWc0MjE0MzY3KCkgeworICAgICAgICBWZWN0b3Igd29yZFNlbGVjdGlvbkRhdGEgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgLy8gdGhlIGhpcmFnYW5hIGFuZCBrYXRha2FuYSBpdGVyYXRpb24gbWFya3MgYW5kIHRoZSBsb25nIHZvd2VsIG1hcmsKKyAgICAgICAgLy8gYXJlIG5vdCBiZWluZyB0cmVhdGVkIGNvcnJlY3RseSBieSB0aGUgd29yZC1icmVhayBpdGVyYXRvcgorICAgICAgICB3b3JkU2VsZWN0aW9uRGF0YS5hZGRFbGVtZW50KCJcdTMwNDJcdTMwNDRcdTMwOWRcdTMwNDJcdTMwOWVcdTMwNDJcdTMwZmNcdTMwNDIiKTsKKyAgICAgICAgd29yZFNlbGVjdGlvbkRhdGEuYWRkRWxlbWVudCgiXHUzMGEyXHUzMGE0XHUzMGZkXHUzMGEyXHUzMGZlXHUzMGEyXHUzMGZjXHUzMGEyIik7CisKKyAgICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdCh3b3JkQnJlYWssIHdvcmRTZWxlY3Rpb25EYXRhKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY2FubmVkVGVzdENoYXJzCisgICAgICAgID0gIlx1MDAwMFx1MDAwMVx1MDAwMlx1MDAwM1x1MDAwNCAhXCIjJCUmKCkrLTAxMjM0PD0+QUJDREVbXV5fYGFiY2Rle318XHUwMGEwXHUwMGEyIgorICAgICAgICArICJcdTAwYTNcdTAwYTRcdTAwYTVcdTAwYTZcdTAwYTdcdTAwYThcdTAwYTlcdTAwYWJcdTAwYWRcdTAwYWVcdTAwYWZcdTAwYjBcdTAwYjJcdTAwYjMiCisgICAgICAgICsgIlx1MDBiNFx1MDBiOVx1MDBiYlx1MDBiY1x1MDBiZFx1MDJiMFx1MDJiMVx1MDJiMlx1MDJiM1x1MDJiNFx1MDMwMFx1MDMwMVx1MDMwMlx1MDMwMyIKKyAgICAgICAgKyAiXHUwMzA0XHUwNWQwXHUwNWQxXHUwNWQyXHUwNWQzXHUwNWQ0XHUwOTAzXHUwOTNlXHUwOTNmXHUwOTQwXHUwOTQ5XHUwZjNhXHUwZjNiXHUyMDAwIgorICAgICAgICArICJcdTIwMDFcdTIwMDJcdTIwMGNcdTIwMGRcdTIwMGVcdTIwMGZcdTIwMTBcdTIwMTFcdTIwMTJcdTIwMjhcdTIwMjlcdTIwMmFcdTIwM2VcdTIwM2YiCisgICAgICAgICsgIlx1MjA0MFx1MjBkZFx1MjBkZVx1MjBkZlx1MjBlMFx1MjE2MFx1MjE2MVx1MjE2Mlx1MjE2M1x1MjE2NCI7CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0U2VudGVuY2VJbnZhcmlhbnRzKCkKKyAgICB7CisgICAgICAgIEJyZWFrSXRlcmF0b3IgZSA9IEJyZWFrSXRlcmF0b3IuZ2V0U2VudGVuY2VJbnN0YW5jZSgpOworICAgICAgICBkb090aGVySW52YXJpYW50VGVzdChlLCBjYW5uZWRUZXN0Q2hhcnMgKyAiLixcdTMwMDFcdTMwMDJcdTMwNDFcdTMwNDJcdTMwNDNcdWZlZmYiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0V29yZEludmFyaWFudHMoKQorICAgIHsKKyAgICAgICAgQnJlYWtJdGVyYXRvciBlID0gQnJlYWtJdGVyYXRvci5nZXRXb3JkSW5zdGFuY2UoKTsKKyAgICAgICAgZG9CcmVha0ludmFyaWFudFRlc3QoZSwgY2FubmVkVGVzdENoYXJzICsgIlwnLC5cdTMwNDFcdTMwNDJcdTMwNDNcdTMwOWJcdTMwOWNcdTMwYTFcdTMwYTIiCisgICAgICAgICAgICArICJcdTMwYTNcdTRlMDBcdTRlMDFcdTRlMDIiKTsKKyAgICAgICAgZG9PdGhlckludmFyaWFudFRlc3QoZSwgY2FubmVkVGVzdENoYXJzICsgIlwnLC5cdTMwNDFcdTMwNDJcdTMwNDNcdTMwOWJcdTMwOWNcdTMwYTFcdTMwYTIiCisgICAgICAgICAgICArICJcdTMwYTNcdTRlMDBcdTRlMDFcdTRlMDIiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0TGluZUludmFyaWFudHMoKQorICAgIHsKKyAgICAgICAgQnJlYWtJdGVyYXRvciBlID0gQnJlYWtJdGVyYXRvci5nZXRMaW5lSW5zdGFuY2UoKTsKKyAgICAgICAgU3RyaW5nIHRlc3RDaGFycyA9IGNhbm5lZFRlc3RDaGFycyArICIuLDs6XHUzMDAxXHUzMDAyXHUzMDQxXHUzMDQyXHUzMDQzXHUzMDQ0XHUzMDQ1IgorICAgICAgICAgICAgKyAiXHUzMGEzXHU0ZTAwXHU0ZTAxXHU0ZTAyIjsKKyAgICAgICAgZG9CcmVha0ludmFyaWFudFRlc3QoZSwgdGVzdENoYXJzKTsKKyAgICAgICAgZG9PdGhlckludmFyaWFudFRlc3QoZSwgdGVzdENoYXJzKTsKKworICAgICAgICBpbnQgZXJyb3JDb3VudCA9IDA7CisKKyAgICAgICAgLy8gaW4gYWRkaXRpb24gdG8gdGhlIG90aGVyIGludmFyaWFudHMsIGEgbGluZS1icmVhayBpdGVyYXRvciBzaG91bGQgbWFrZSBzdXJlIHRoYXQ6CisgICAgICAgIC8vIGl0IGRvZXNuJ3QgYnJlYWsgYXJvdW5kIHRoZSBub24tYnJlYWtpbmcgY2hhcmFjdGVycworICAgICAgICBTdHJpbmcgbm9CcmVhayA9ICJcdTAwYTBcdTIwMDdcdTIwMTFcdWZlZmYiOworICAgICAgICBTdHJpbmdCdWZmZXIgd29yayA9IG5ldyBTdHJpbmdCdWZmZXIoImFhYSIpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RDaGFycy5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICBjaGFyIGMgPSB0ZXN0Q2hhcnMuY2hhckF0KGkpOworICAgICAgICAgICAgaWYgKGMgPT0gJ1xyJyB8fCBjID09ICdcbicgfHwgYyA9PSAnXHUyMDI5JyB8fCBjID09ICdcdTIwMjgnIHx8IGMgPT0gJ1x1MDAwMycpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB3b3JrLnNldENoYXJBdCgwLCBjKTsKKyAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbm9CcmVhay5sZW5ndGgoKTsgaisrKSB7CisgICAgICAgICAgICAgICAgd29yay5zZXRDaGFyQXQoMSwgbm9CcmVhay5jaGFyQXQoaikpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgdGVzdENoYXJzLmxlbmd0aCgpOyBrKyspIHsKKyAgICAgICAgICAgICAgICAgICAgd29yay5zZXRDaGFyQXQoMiwgdGVzdENoYXJzLmNoYXJBdChrKSk7CisgICAgICAgICAgICAgICAgICAgIGUuc2V0VGV4dCh3b3JrLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBsID0gZS5maXJzdCgpOyBsICE9IEJyZWFrSXRlcmF0b3IuRE9ORTsgbCA9IGUubmV4dCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPT0gMSB8fCBsID09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiR290IGJyZWFrIGJldHdlZW4gVSsiICsgSW50ZWdlci50b0hleFN0cmluZygoaW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdvcmsuY2hhckF0KGwgLSAxKSkpICsgIiBhbmQgVSsiICsgSW50ZWdlci50b0hleFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKHdvcmsuY2hhckF0KGwpKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yQ291bnQrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JDb3VudCA+PSA3NSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIGl0IGRvZXMgYnJlYWsgYWZ0ZXIgZGFzaGVzICh1bmxlc3MgdGhleSdyZSBmb2xsb3dlZCBieSBhIGRpZ2l0LCBhIG5vbi1zcGFjaW5nIG1hcmssCisgICAgICAgIC8vIGEgY3VycmVuY3kgc3ltYm9sLCBhIHNwYWNlLCBhIGZvcm1hdC1jb250cm9sIGNoYXJhY3RlciwgYSByZWd1bGFyIGNvbnRyb2wgY2hhcmFjdGVyLAorICAgICAgICAvLyBhIGxpbmUgb3IgcGFyYWdyYXBoIHNlcGFyYXRvciwgb3IgYW5vdGhlciBkYXNoKQorICAgICAgICBTdHJpbmcgZGFzaGVzID0gIi1cdTAwYWRcdTIwMTBcdTIwMTJcdTIwMTNcdTIwMTQiOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3RDaGFycy5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICB3b3JrLnNldENoYXJBdCgwLCB0ZXN0Q2hhcnMuY2hhckF0KGkpKTsKKyAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgZGFzaGVzLmxlbmd0aCgpOyBqKyspIHsKKyAgICAgICAgICAgICAgICB3b3JrLnNldENoYXJBdCgxLCBkYXNoZXMuY2hhckF0KGopKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IHRlc3RDaGFycy5sZW5ndGgoKTsgaysrKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgYyA9IHRlc3RDaGFycy5jaGFyQXQoayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChDaGFyYWN0ZXIuZ2V0VHlwZShjKSA9PSBDaGFyYWN0ZXIuREVDSU1BTF9ESUdJVF9OVU1CRVIgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgIENoYXJhY3Rlci5nZXRUeXBlKGMpID09IENoYXJhY3Rlci5PVEhFUl9OVU1CRVIgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgIENoYXJhY3Rlci5nZXRUeXBlKGMpID09IENoYXJhY3Rlci5OT05fU1BBQ0lOR19NQVJLIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXIuZ2V0VHlwZShjKSA9PSBDaGFyYWN0ZXIuRU5DTE9TSU5HX01BUksgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgIENoYXJhY3Rlci5nZXRUeXBlKGMpID09IENoYXJhY3Rlci5DVVJSRU5DWV9TWU1CT0wgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgIENoYXJhY3Rlci5nZXRUeXBlKGMpID09IENoYXJhY3Rlci5EQVNIX1BVTkNUVUFUSU9OIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXIuZ2V0VHlwZShjKSA9PSBDaGFyYWN0ZXIuU1BBQ0VfU0VQQVJBVE9SIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXIuZ2V0VHlwZShjKSA9PSBDaGFyYWN0ZXIuRk9STUFUIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXIuZ2V0VHlwZShjKSA9PSBDaGFyYWN0ZXIuQ09OVFJPTCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgYyA9PSAnXG4nIHx8IGMgPT0gJ1xyJyB8fCBjID09ICdcdTIwMjgnIHx8IGMgPT0gJ1x1MjAyOScgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPT0gJ1x1MDAwMycgfHwgYyA9PSAnXHUyMDA3JyB8fCBjID09ICdcdTIwMTEnIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBjID09ICdcdWZlZmYnKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIHdvcmsuc2V0Q2hhckF0KDIsIGMpOworICAgICAgICAgICAgICAgICAgICBlLnNldFRleHQod29yay50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBzYXcyID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGwgPSBlLmZpcnN0KCk7IGwgIT0gQnJlYWtJdGVyYXRvci5ET05FOyBsID0gZS5uZXh0KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCA9PSAyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdzIgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpZiAoIXNhdzIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJEaWRuJ3QgZ2V0IGJyZWFrIGJldHdlZW4gVSsiICsgSW50ZWdlci50b0hleFN0cmluZygoaW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdvcmsuY2hhckF0KDEpKSkgKyAiIGFuZCBVKyIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkod29yay5jaGFyQXQoMikpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJvckNvdW50Kys7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JDb3VudCA+PSA3NSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0Q2hhcmFjdGVySW52YXJpYW50cygpCisgICAgeworICAgICAgICBCcmVha0l0ZXJhdG9yIGUgPSBCcmVha0l0ZXJhdG9yLmdldENoYXJhY3Rlckluc3RhbmNlKCk7CisgICAgICAgIGRvQnJlYWtJbnZhcmlhbnRUZXN0KGUsIGNhbm5lZFRlc3RDaGFycyArICJcdTExMDBcdTExMDFcdTExMDJcdTExNjBcdTExNjFcdTExNjJcdTExYTgiCisgICAgICAgICAgICArICJcdTExYTlcdTExYWEiKTsKKyAgICAgICAgZG9PdGhlckludmFyaWFudFRlc3QoZSwgY2FubmVkVGVzdENoYXJzICsgIlx1MTEwMFx1MTEwMVx1MTEwMlx1MTE2MFx1MTE2MVx1MTE2Mlx1MTFhOCIKKyAgICAgICAgICAgICsgIlx1MTFhOVx1MTFhYSIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RFbXB0eVN0cmluZygpCisgICAgeworICAgICAgICBTdHJpbmcgdGV4dCA9ICIiOworICAgICAgICBWZWN0b3IgeCA9IG5ldyBWZWN0b3IoKTsKKyAgICAgICAgeC5hZGRFbGVtZW50KHRleHQpOworCisgICAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3QobGluZUJyZWFrLCB4KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0R2V0QXZhaWxhYmxlTG9jYWxlcygpCisgICAgeworICAgICAgICBMb2NhbGVbXSBsb2NMaXN0ID0gQnJlYWtJdGVyYXRvci5nZXRBdmFpbGFibGVMb2NhbGVzKCk7CisKKyAgICAgICAgaWYgKGxvY0xpc3QubGVuZ3RoID09IDApCisgICAgICAgICAgICBlcnJsbigiZ2V0QXZhaWxhYmxlTG9jYWxlcygpIHJldHVybmVkIGFuIGVtcHR5IGxpc3QhIik7CisgICAgICAgIC8vIEkgaGF2ZSBubyBpZGVhIGhvdyB0byB0ZXN0IHRoaXMgZnVuY3Rpb24uLi4KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAYnVnIDQwOTUzMjIKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0SmFwYW5lc2VMaW5lQnJlYWsoKQorICAgIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHRlc3RTdHJpbmcgPSBuZXcgU3RyaW5nQnVmZmVyKCJcdTRlMDB4XHU0ZThjIik7CisgICAgICAgIFN0cmluZyBwcmVjZWRpbmdDaGFycyA9ICIoW3tcdTAwYWIkXHUwMGE1XHUwMGEzXHUwMGE0XHUyMDE4XHUyMDFhXHUyMDFjXHUyMDFlXHUyMDFiXHUyMDFmIjsKKyAgICAgICAgU3RyaW5nIGZvbGxvd2luZ0NoYXJzID0gIildfVx1MDBiYiElLC5cdTMwMDFcdTMwMDJcdTMwNjNcdTMwODNcdTMwODVcdTMwODdcdTMwYzNcdTMwZTNcdTMwZTVcdTMwZTdcdTMwZmM6O1x1MzA5Ylx1MzA5Y1x1MzAwNVx1MzA5ZFx1MzA5ZVx1MzBmZFx1MzBmZVx1MjAxOVx1MjAxZFx1MDBiMFx1MjAzMlx1MjAzM1x1MjAzNFx1MjAzMFx1MjAzMVx1MjEwM1x1MjEwOVx1MDBhMlx1MDMwMFx1MDMwMVx1MDMwMiI7CisgICAgICAgIEJyZWFrSXRlcmF0b3IgaXRlciA9IEJyZWFrSXRlcmF0b3IuZ2V0TGluZUluc3RhbmNlKExvY2FsZS5KQVBBTik7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwcmVjZWRpbmdDaGFycy5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICB0ZXN0U3RyaW5nLnNldENoYXJBdCgxLCBwcmVjZWRpbmdDaGFycy5jaGFyQXQoaSkpOworICAgICAgICAgICAgaXRlci5zZXRUZXh0KHRlc3RTdHJpbmcudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBpbnQgaiA9IGl0ZXIuZmlyc3QoKTsKKyAgICAgICAgICAgIGlmIChqICE9IDApCisgICAgICAgICAgICAgICAgZXJybG4oImphIGxpbmUgYnJlYWsgZmFpbHVyZTogZmFpbGVkIHRvIHN0YXJ0IGF0IDAiKTsKKyAgICAgICAgICAgIGogPSBpdGVyLm5leHQoKTsKKyAgICAgICAgICAgIGlmIChqICE9IDEpCisgICAgICAgICAgICAgICAgZXJybG4oImphIGxpbmUgYnJlYWsgZmFpbHVyZTogZmFpbGVkIHRvIHN0b3AgYmVmb3JlICciICsgcHJlY2VkaW5nQ2hhcnMuY2hhckF0KGkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiJyAoIiArICgoaW50KShwcmVjZWRpbmdDaGFycy5jaGFyQXQoaSkpKSArICIpIik7CisgICAgICAgICAgICBqID0gaXRlci5uZXh0KCk7CisgICAgICAgICAgICBpZiAoaiAhPSAzKQorICAgICAgICAgICAgICAgIGVycmxuKCJqYSBsaW5lIGJyZWFrIGZhaWx1cmU6IGZhaWxlZCB0byBza2lwIHBvc2l0aW9uIGFmdGVyICciICsgcHJlY2VkaW5nQ2hhcnMuY2hhckF0KGkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiJyAoIiArICgoaW50KShwcmVjZWRpbmdDaGFycy5jaGFyQXQoaSkpKSArICIpIik7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZvbGxvd2luZ0NoYXJzLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIHRlc3RTdHJpbmcuc2V0Q2hhckF0KDEsIGZvbGxvd2luZ0NoYXJzLmNoYXJBdChpKSk7CisgICAgICAgICAgICBpdGVyLnNldFRleHQodGVzdFN0cmluZy50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGludCBqID0gaXRlci5maXJzdCgpOworICAgICAgICAgICAgaWYgKGogIT0gMCkKKyAgICAgICAgICAgICAgICBlcnJsbigiamEgbGluZSBicmVhayBmYWlsdXJlOiBmYWlsZWQgdG8gc3RhcnQgYXQgMCIpOworICAgICAgICAgICAgaiA9IGl0ZXIubmV4dCgpOworICAgICAgICAgICAgaWYgKGogIT0gMikKKyAgICAgICAgICAgICAgICBlcnJsbigiamEgbGluZSBicmVhayBmYWlsdXJlOiBmYWlsZWQgdG8gc2tpcCBwb3NpdGlvbiBiZWZvcmUgJyIgKyBmb2xsb3dpbmdDaGFycy5jaGFyQXQoaSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICInICgiICsgKChpbnQpKGZvbGxvd2luZ0NoYXJzLmNoYXJBdChpKSkpICsgIikiKTsKKyAgICAgICAgICAgIGogPSBpdGVyLm5leHQoKTsKKyAgICAgICAgICAgIGlmIChqICE9IDMpCisgICAgICAgICAgICAgICAgZXJybG4oImphIGxpbmUgYnJlYWsgZmFpbHVyZTogZmFpbGVkIHRvIHN0b3AgYWZ0ZXIgJyIgKyBmb2xsb3dpbmdDaGFycy5jaGFyQXQoaSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICInICgiICsgKChpbnQpKGZvbGxvd2luZ0NoYXJzLmNoYXJBdChpKSkpICsgIikiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEBidWcgNDA2ODEzNworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RFbmRCZWhhdmlvcigpCisgICAgeworICAgICAgICBTdHJpbmcgdGVzdFN0cmluZyA9ICJib28uIjsKKyAgICAgICAgQnJlYWtJdGVyYXRvciB3YiA9IEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKCk7CisgICAgICAgIHdiLnNldFRleHQodGVzdFN0cmluZyk7CisKKyAgICAgICAgaWYgKHdiLmZpcnN0KCkgIT0gMCkKKyAgICAgICAgICAgIGVycmxuKCJEaWRuJ3QgZ2V0IGJyZWFrIGF0IGJlZ2lubmluZyBvZiBzdHJpbmcuIik7CisgICAgICAgIGlmICh3Yi5uZXh0KCkgIT0gMykKKyAgICAgICAgICAgIGVycmxuKCJEaWRuJ3QgZ2V0IGJyZWFrIGJlZm9yZSBwZXJpb2QgaW4gXCJib28uXCIiKTsKKyAgICAgICAgaWYgKHdiLmN1cnJlbnQoKSAhPSA0ICYmIHdiLm5leHQoKSAhPSA0KQorICAgICAgICAgICAgZXJybG4oIkRpZG4ndCBnZXQgYnJlYWsgYXQgZW5kIG9mIHN0cmluZy4iKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3QvcmJiaS9SQkJJVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vdGVzdC9yYmJpL1JCQklUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzk5MDVkZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3QvcmJiaS9SQkJJVGVzdC5qYXZhCkBAIC0wLDAgKzEsOTUyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXN0L3JiYmkvQXR0aWMvUkJCSVRlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMS8wMi8wNiAyMjozNzo1OCAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udGVzdC5yYmJpOworIAorLy9SZWdyZXNzaW9uIHRlc3Rpbmcgb2YgUnVsZUJhc2VkQnJlYWtJdGVyYXRvcgoraW1wb3J0IGNvbS5pYm0udGVzdC4qOworaW1wb3J0IGNvbS5pYm0udGV4dC5SdWxlQmFzZWRCcmVha0l0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKK2ltcG9ydCBqYXZhLmlvLio7ICAKKworcHVibGljIGNsYXNzIFJCQklUZXN0IGV4dGVuZHMgVGVzdEZtd2sgCit7ICAKKyAgcHJpdmF0ZSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGNoYXJhY3RlckJyZWFrOworICBwcml2YXRlIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3Igd29yZEJyZWFrOworICBwcml2YXRlIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgbGluZUJyZWFrOworICBwcml2YXRlIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3Igc2VudGVuY2VCcmVhazsKKyAgICAKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgbmV3IFJCQklUZXN0KCkucnVuKGFyZ3MpOworICB9CisKKyAgcHVibGljIFJCQklUZXN0KCkgeyAKKyAgfQorICAKKyAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBoYWxmTkEgPSAiXHUwOTI4XHUwOTRkXHUyMDBkIjsgIC8qaGFsZmZvcm0gTkEgPSBkZXZhbmlnaXJpIE5BICsgdmlyYW1hKHN1cHJlc3NlcyBpbmhlcmVudCB2b3dlbCkrIHplcm8gd2lkdGggam9pbmVyICovICAKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGhhbGZTQSAgPSAiXHUwOTM4XHUwOTRkXHUyMDBkIjsgCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBoYWxmQ0hBID0gIlx1MDkxYVx1MDk0ZFx1MjAwZCI7IAorICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgaGFsZktBICA9ICJcdTA5MTVcdTA5NGRcdTIwMGQiOyAKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGRlYWRUQSAgPSAiXHUwOTI0XHUwOTRkIjsKKworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgZGVhZFJBICAgPSAiXHUwOTMwXHUwOTRkIjsgIC8qZGVhZGZvcm0gUkEgPSBkZXZhbmFnYXJpIFJBICsgdmlyYW1hKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGRlYWRQSEEgID0gIlx1MDkyYlx1MDk0ZCI7ICAvKmRlYWRmb3JtIFBIQSA9IGRldmFuYWdhcmkgUEhBICsgdmlyYW1hKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGRlYWRUVEhBID0gIlx1MDkyMFx1MDk0ZCI7IAorICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgZGVhZFBBICAgPSAiXHUwOTJhXHUwOTRkIjsgCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBkZWFkU0EgICA9ICJcdTA5MzhcdTA5NGQiOyAgIC8qZGV2YW5hZ2FyaSB2aXNhcmdhIGxvb2tzIGxpa2UgYSBlbmdsaXNoIGNvbG9uKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIHZpc2FyZ2EgID0gIlx1MDkwMyI7CisKKworICAvL3Rlc3RzIGRlZmF1bHQgcnVsZXMgYmFzZWQgY2hhcmFjdGVyIGl0ZXJhdGlvbgorICBwdWJsaWMgdm9pZCBUZXN0RGVmYXVsdFJ1bGVCYXNlZENoYXJhY3Rlckl0ZXJhdGlvbigpeworICAgICAgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciByYmJpPShSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKVJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuZ2V0Q2hhcmFjdGVySW5zdGFuY2UoKTsKKyAgICAgIGxvZ2xuKCJUZXN0aW5nIHRoZSBSQkJJIGZvciBjaGFyYWN0ZXIgaXRlcmF0aW9uIGJ5IHVzaW5nIGRlZmF1bHQgcnVsZXMiKTsKKyAgICAgIC8vZmV0Y2ggdGhlIHJ1bGVzIHVzZWQgdG8gY3JlYXRlIHRoZSBhYm92ZSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yCisgICAgICBTdHJpbmcgZGVmYXVsdFJ1bGVzPXJiYmkudG9TdHJpbmcoKTsKKyAgICAgIAorICAgICAgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBjaGFySXRlckRlZmF1bHQ9bnVsbDsKKyAgICAgIHRyeXsKKyAgICAgIGNoYXJJdGVyRGVmYXVsdCAgID0gbmV3IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IoZGVmYXVsdFJ1bGVzKTsgCisgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSl7CisgICAgICAgICAgZXJybG4oIkVSUk9SOiBmYWlsZWQgY29uc3RydWN0aW9uIGluIFRlc3REZWZhdWx0UnVsZUJhc2VkQ2hhcmFjdGVySXRlcmF0aW9uKCkiKyBpYWUudG9TdHJpbmcoKSk7CisgICAgICB9CisKKyAgICAgIFZlY3RvciBjaGFyZGF0YSA9IG5ldyBWZWN0b3IoKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIkgiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoImUiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoImwiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoImwiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIm8iKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoImVcdTAzMDEiKTsgICAgICAgICAgICAgICAgICAgLy9hY3V0ZUUKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIiYiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoImVcdTAzMDMiKTsgICAgICAgICAgICAgICAgICAgLy90aWxkYUUKKyAgICAgIC8vZGV2YW5hZ2lyaSBjaGFyYWN0ZXJzIGZvciBIaW5kaSBzdXBwb3J0CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5MDYiKTsgICAgICAgICAgICAgICAgICAgIC8vZGV2YW5hZ2lyaSBBQQorICAgICAgLy9jaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5M2VcdTA5MDEiKTsgICAgICAgICAgICAgIC8vZGV2YW5hZ2lyaSB2b3dlbHNpZ24gQUErIGNoYW5kcmFiaW5kaHUKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkxNlx1MDk0NyIpOyAgICAgICAgICAgICAgLy9kZXZhbmFnaXJpIEtIQSt2b3dlbHNpZ24gRQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTM4XHUwOTQxXHUwOTAyIik7ICAgICAgICAvL2RldmFuYWdpcmkgU0Erdm93ZWxzaWduIFUgKyBhbnVzdmFyYShiaW5kdSkKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkyNiIpOyAgICAgICAgICAgICAgICAgICAgLy9kZXZhbmFnaXJpIGNvbnNvbmFudCBEQQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTMwIik7ICAgICAgICAgICAgICAgICAgICAvL2RldmFuYWdpcmkgY29uc29uYW50IFJBCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5MzlcdTA5NGMiKTsgICAgICAgICAgICAgIC8vZGV2YW5hZ2lyaSBIQSt2b3dlbCBzaWduIEFJCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5NjQiKTsgICAgICAgICAgICAgICAgICAgIC8vZGV2YW5hZ2lyaSBkYW5kYQorICAgICAgLy9lbmQgaGluZGkgY2hhcmFjdGVycyAgICAgIAorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiQVx1MDMwMiIpOyAgICAgICAgICAgICAgICAgICAvLyBjaXJjdW1mbGV4QSAKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoImlcdTAzMDEiKTsgICAgICAgICAgICAgICAgICAgLy8gYWN1dGVCZWxvd0kgICAKKyAgICAgIC8vIGNvbmpvaW5pbmcgamFtby4uLiAKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MTEwOVx1MTE2MVx1MTFiYyIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUxMTEyXHUxMTYxXHUxMWJjIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcbiIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHJcbiIpOyAgICAgICAgICAgICAgICAgICAgICAvLyBrZWVwIENSTEYgc2VxdWVuY2VzIHRvZ2V0aGVyICAKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlNcdTAzMDAiKTsgICAgICAgICAgICAgICAgICAgLy9ncmF2ZVMKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoImlcdTAzMDEiKTsgICAgICAgICAgICAgICAgICAgLy8gYWN1dGVCZWxvd0kKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIiEiKTsKKworICAgICAgIC8vIFdoYXQgZm9sbG93cyBpcyBhIHN0cmluZyBvZiBLb3JlYW4gY2hhcmFjdGVycyAoSSBmb3VuZCBpdCBpbiB0aGUgWWVsbG93IFBhZ2VzCisgICAgICAvLyBhZCBmb3IgdGhlIEtvcmVhbiBQcmVzYnl0ZXJpYW4gQ2h1cmNoIG9mIFNhbiBGcmFuY2lzY28sIGFuZCBJIGhvcGUgSSB0cmFuc2NyaWJlZAorICAgICAgLy8gaXQgY29ycmVjdGx5KSwgZmlyc3QgYXMgcHJlY29tcG9zZWQgc3lsbGFibGVzLCBhbmQgdGhlbiBhcyBjb25qb2luaW5nIGphbW8uCisgICAgICAvLyBCb3RoIHNlcXVlbmNlcyBzaG91bGQgYmUgc2VtYW50aWNhbGx5IGlkZW50aWNhbCBhbmQgYnJlYWsgdGhlIHNhbWUgd2F5LgorICAgICAgLy8gcHJlY29tcG9zZWQgc3lsbGFibGVzLi4uCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdWMwYzEiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1ZDU2ZCIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHVkNTVjIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdWM3NzgiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1YzVmMCIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHVkNTY5Iik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdWM3YTUiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1Yjg1YyIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHVhZDUwIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdWQ2OGMiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgICAvLyBjb25qb2luaW5nIGphbW8uLi4KKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MTEwOVx1MTE2MVx1MTFiYyIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUxMTEyXHUxMTYxXHUxMWJjIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTExMTJcdTExNjFcdTExYWIiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MTEwYlx1MTE3NVx1MTFhYiIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUxMTBiXHUxMTY3XHUxMWFiIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTExMTJcdTExNjFcdTExYjgiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MTEwY1x1MTE2MVx1MTFiYyIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUxMTA1XHUxMTY5Iik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTExMDBcdTExNmQiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MTExMlx1MTE2YyIpOworCisgICAgICAvL1Rlc3RpbmcgdGhlIEJyZWFrSXRlcmF0b3IgZm9yIGRldmFuYWdhcmkgc2NyaXB0CisgICAgICAvL2RldmFuYWdhcmkgY2hhcmFjdGVycyBmb3IgSGluZGkgc3VwcG9ydAorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTA2Iik7ICAgICAgICAgICAgICAgICAgICAvL2RldmFuYWdhcmkgQUEKKyAgICAgIC8vaGluZGkgY2hhcmFjdGVyIGJyZWFrIHNob3VsZCBtYWtlIHN1cmUgdGhhdCBpdCAKKyAgICAgIC8vIGRvZXNuJ3QgYnJlYWsgaW4tYmV0d2VlbiBhIHZvd2Vsc2lnbiBhbmQgYSBjaGFuZHJhYmluZHUKKyAgICAvLyAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTNlXHUwOTAxIik7ICAgICAgICAgICAgICAvL2RldmFuYWdhcmkgdm93ZWxzaWduIEFBKyBjaGFuZHJhYmluZHUKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkxNlx1MDk0NyIpOyAgICAgICAgICAgICAgLy9kZXZhbmFnYXJpIEtIQSt2b3dlbHNpZ24gRQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTM4XHUwOTQxXHUwOTAyIik7ICAgICAgICAvL2RldmFuYWdhcmkgU0Erdm93ZWxzaWduIFUgKyBhbnVzdmFyYShiaW5kdSkKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkyNiIpOyAgICAgICAgICAgICAgICAgICAgLy9kZXZhbmFnYXJpIGNvbnNvbmFudCBEQQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTMwIik7ICAgICAgICAgICAgICAgICAgICAvL2RldmFuYWdhcmkgY29uc29uYW50IFJBCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5MzlcdTA5NGMiKTsgICAgICAgICAgICAgIC8vZGV2YW5hZ2FyaSBjb25zb25hbnQgSEErZGVwZW5kZW50IHZvd2VsIHNpZ24gQUkKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDk2NCIpOyAgICAgICAgICAgICAgICAgICAgLy9kZXZhbmFnYXJpIGRhbmRhCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5NTAiKTsgICAgICAgICAgICAgICAgICAgIC8vZGV2YW5hZ2FyaSBPTSAKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkxNVx1MDk0MyIpOyAgICAgICAgICAgICAgLy9kZXZhbmFnYXJpIEtBK2RlcGVuZGVudCB2b3dlbCBSSS0+S1JJCisKKyAgICAgIC8vZGVwZW5kZW50IGhhbGYtZm9ybXMKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoaGFsZlNBKyAiXHUwOTI0Iik7ICAgICAgICAgICAgIC8vaGFsZlNBK2Jhc2UgY29uc29uYW50IFRBLT5TVEEKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoaGFsZlNBKyAiXHUwOTI1Iik7ICAgICAgICAgICAgIC8vaGFsZlNBK2Jhc2UgY29uc29uYW50IFRIQS0+U1RIQQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudChoYWxmU0ErICJcdTA5MmUiKTsgICAgICAgICAgICAgLy9oYWxmU0ErYmFzZSBjb25zb25hbnQgTUEtPlNNQQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudChoYWxmQ0hBKyAiXHUwOTFiIik7ICAgICAgICAgICAgLy9oYWxmQ0hBK2Jhc2UgY29uc29uYW50IENISEEtPkNISEhBCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KGhhbGZOQSsgIlx1MDkxNyIpOyAgICAgICAgICAgICAvL2hhbGZOQStiYXNlIGNvbnNvbmFudCBHQS0+TkdBCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5MmFcdTA5NGRcdTIwMGRcdTA5MmYiKTsgICAvL2hhbGZQQShQQSt2aXJhbWEremVyb3dpZHRoam9pbmVyK2Jhc2UgY29uc29uYW50IFlBLT5QWUEKKworCisgICAgICAvL2NvbnNvbmFudCBSQSBydWxlcyAtLS0tLS0tLS0tCisgICAgICAvL2lmIHRoZSBkZWFkIGNvbnNvbmFudCBSQSBwcmVjZWRlcyBlaXRoZXIgYSBjb25zb25hbnQgb3IgYW4gaW5kZXBlbmRlbnQgdm93ZWwsCisgICAgICAvL3RoZW4gaXQgaXMgcmVwbGFjZWQgYnkgaXRzIHN1cGVyc2NyaXB0IG5vbi1zcGFjaW5nIG1hcmsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoZGVhZFJBKyAiXHUwOTE1Iik7ICAgICAgICAgICAgIC8vZGVhZFJBK2RldmFuYWdhcmkgY29uc29uYW50IEtBLT5LQStzdXBlclJBIAorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudChkZWFkUkErICJcdTA5MjMiKTsgICAgICAgICAgICAgLy9kZWFkUkErZGV2YW5hZ2FyaSBjb25zb25hbnQgTk5BLT5OTkErc3VwZXJSQQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudChkZWFkUkErICJcdTA5MTciKTsgICAgICAgICAgICAgLy9kZWFkUkErZGV2YW5hZ2FyaSBjb25zb25hbnQgR0EtPkdBK3N1cGVyUkEKKyAgIC8vICAgY2hhcmRhdGEuYWRkRWxlbWVudChkZWFkUkErICJcdTA5NjAiKTsgICAgICAgICAgIC8vZGVhZFJBK2RldmFuYWdhcmkgY29zb25hbnQgUlJJLT5SUkkrc3VwZXJSQQorICAgICAgCisgICAgICAvL2lmIGFueSBkZWFkIGNvbnNvbmFudChvdGhlciB0aGFuIGRlYWQgUkEpcHJlY2VkZXMgdGhlIGNvbnNvbmFudCBSQSwgdGhlbgorICAgICAgLy9pdCBpcyByZXBsYWNlZCB3aXRoIGl0cyBub21pbmFsIGZvcm1hIG5kIFJBIGlzIHJlcGxhY2VkIGJ5IHRoZSBzdWJzY3JpcHQgbm9uLXNwYWNpbmcgbWFyay4KKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoZGVhZFBIQSsgIlx1MDkzMCIpOyAgICAgICAgICAgIC8vZGVhZFBIQStkZXZhbmFnYXJpIGNvbnNvbmFudCBSQS0+UEhBK3N1YlJBCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KGRlYWRQQSsgIlx1MDkzMCIpOyAgICAgICAgICAgICAvL2RlYWRQQStkZXZhbmFnYXJpIGNvbnNvbmFudCBSQS0+UEErc3ViUkEKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoZGVhZFRUSEErICJcdTA5MzAiKTsgICAgICAgICAgIC8vZGVhZFRUSEErZGV2YW5hZ2FyaSBjb25zb25hbnQgUkEtPlRUSEErc3ViUkEKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoZGVhZFRBKyAiXHUwOTMwIik7ICAgICAgICAgICAgIC8vZGVhZFRBK1JBLT5UUkEgCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5MzZcdTA5NGRcdTA5MzAiKTsgICAgICAgICAvL2RlYWRTSEEoU0hBK3ZpcmFtYSkrUkEtPlNIUkEgCisKKyAgICAgIC8vY29uanVjdCBsaWdhdHVyZXMKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkxNVx1MDk0ZFx1MDkzNyIpOyAgICAgICAgIC8vZGVhZEtBKEtBK3ZpcmFtYSkgZm9sbG93ZWQgYnkgU1NIQSB3cmFwcyB1cCBpbnRvIGEgc2luZ2xlIGNoYXJhY3RlciBLU1NIQQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudChkZWFkVEErICJcdTA5MjQiKTsgICAgICAgICAgICAgIC8vZGVhZFRBK1RBIHdyYXBzIHVwIGludG8gZ2x5cGggVFRIQQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTI2XHUwOTRkXHUwOTM1Iik7ICAgICAgICAgLy9kZWFkREEoREErdmlyYW1hKStWQSB3cmFwcyB1cCBpbnRvIERWQQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTFjXHUwOTRkXHUwOTFlIik7ICAgICAgICAgLy9kZWFkSkEoSkErdmlyYW1hKStOWUEgd3JhcHMgdXAgaW50byBKTllBCisgICAgIAorCisKKyAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3QoY2hhckl0ZXJEZWZhdWx0LCBjaGFyZGF0YSk7CisKKyAgfQorCisgIHB1YmxpYyB2b2lkIFRlc3REZWZhdWx0UnVsZUJhc2VkV29yZEl0ZXJhdGlvbigpeworICAgICAgbG9nbG4oIlRlc3RpbmcgdGhlIFJCQkkgZm9yIHdvcmQgaXRlcmF0aW9uIHVzaW5nIGRlZmF1bHQgcnVsZXMiKTsKKyAgICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgcmJiaT0oUnVsZUJhc2VkQnJlYWtJdGVyYXRvcilSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZSgpOworICAgICAgLy9mZXRjaCB0aGUgcnVsZXMgdXNlZCB0byBjcmVhdGUgdGhlIGFib3ZlIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IKKyAgICAgIFN0cmluZyBkZWZhdWx0UnVsZXM9cmJiaS50b1N0cmluZygpOworICAgICAgCisgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIHdvcmRJdGVyRGVmYXVsdD1udWxsOworICAgICAgdHJ5eworICAgICAgd29yZEl0ZXJEZWZhdWx0ICAgPSBuZXcgUnVsZUJhc2VkQnJlYWtJdGVyYXRvcihkZWZhdWx0UnVsZXMpOyAKKyAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKXsKKyAgICAgICAgICBlcnJsbigiRVJST1I6IGZhaWxlZCBjb25zdHJ1Y3Rpb24gaW4gVGVzdERlZmF1bHRSdWxlQmFzZWRXb3JkSXRlcmF0aW9uKCkgLS0gY3VzdG9tIHJ1bGVzIisgaWFlLnRvU3RyaW5nKCkpOworICAgICAgfQorCisgICAgICBWZWN0b3Igd29yZGRhdGEgPSBuZXcgVmVjdG9yKCk7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50ICgiV3JpdGUiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQgKCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50ICgid29yZHJ1bGVzIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50ICgiLiIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiYWxwaGEtYmV0YS1nYW1tYSIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOyAgICAgIAorICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwOTJmXHUwOTM5Iik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTA5MzlcdTA5M2YiICsgaGFsZk5BICsgIlx1MDkyNlx1MDk0MCIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwOTM5XHUwOTQ4Iik7CisgICAgICAvLyAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwOTY0Iik7ICAgLy9kYW5kYSBmb2xsb3dlZCBieSBhIHNwYWNlCisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTA5MDVcdTA5M2VcdTA5MmEiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDkzOFx1MDkzZlx1MDkxNlx1MDk0Ylx1MDkxN1x1MDk0NyIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiPyIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwOTY4XHUwOTY2Llx1MDk2OVx1MDk2ZiIpOyAgICAgICAgICAgIC8vaGluZGkgbnVtYmVycworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwOTY3XHUwOTY2XHUwOTY2Llx1MDk2Nlx1MDk2NiUiKTsgICAgIC8vcG9zdG51bWVyaWMKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MjBhOFx1MDk2NyxcdTA5NjdcdTA5NjZcdTA5NjYuXHUwOTY2XHUwOTY2Iik7IC8vcHJlLW51bWJlciBJbmRpYSBjdXJyZW5jeSBzeW1ib2wgUnMuXHUyMGFECisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTA5MDVcdTA5MmVcdTA5MWMiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlxuIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KGhhbGZTQSsiXHUwOTM1XHUwOTI0XHUwOTAyIitkZWFkVEErIlx1MDkzMCIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHIiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIkl0J3MiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiQzMC4xMCIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOyAgCisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTAwQTIiKTsgLy9jZW50IHNpZ24KKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDBBMyIpOyAvL3BvdW5kIHNpZ24KKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDBBNCIpOyAvL2N1cnJlbmN5IHNpZ24KKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDBBNSIpOyAvL3llbiBzaWduCisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJhbHBoYS1iZXRhLWdhbW1hIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJCYWRnZXMiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIj8iKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIkJBREdFUyIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiISIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiMTAwMCwyMzMsNDU2LjAwMCIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiMSwyMy4zMjIlIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIxMjMuMTIyMiIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwMDI0MTIzLDAwMC4yMCIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiMTc5LjAxXHUwMDI1Iik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJYIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJOb3ciKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlxyIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJpcyIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXG4iKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoInRoZSIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHJcbiIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgidGltZSIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHVjNWYwXHVkNTY5Iik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdWM3YTVcdWI4NWNcdWFkNTBcdWQ2OGMiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIC8vIGNvbmpvaW5pbmcgamFtby4uLgorICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUxMTA5XHUxMTYxXHUxMWJjXHUxMTEyXHUxMTYxXHUxMWJjIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTExMTJcdTExNjFcdTExYWJcdTExMGJcdTExNzVcdTExYWIiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIkhlbGxvIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIsIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJob3ciKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoImFyZSIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgieW91Iik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisKKyAgICAgIC8vVGVzdGluZyB0aGUgQnJlYWtJdGVyYXRvciBmb3IgZGV2YW5hZ2FyaSBzY3JpcHQKKyAgICAgIC8vaGluZGkKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDkxN1x1MDkyYS1cdTA5MzZcdTA5MmEiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiEiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDkyZlx1MDkzOSIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwOTM5XHUwOTNmIiArIGhhbGZOQSArICJcdTA5MjZcdTA5NDAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDkzOVx1MDk0OCIpOworICAgICAgLy9kYW5kYSBpcyBzaW1pbGFyIHRvIGZ1bGwgc3RvcC4gZGFuZGEgaXMgYSBoaW5kaSBwaHJhc2Ugc2VwZXJhdG9yCisgICAgICAvL01ha2Ugc3VyZSBpdCBicmVha3MgYmVmb3JlIGRhbmRhIGFuZCBhZnRlciBkYW5kYSB3aGVuIGl0IGlzIGZvbGxvd2VkIGJ5IGEgc3BhY2UKKyAgICAgIC8vd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwOTY0Iik7ICAgLy9mYWlscyBoZXJlIGRvZXNuJ3QgYnJlYWsgYXQgZGFuZGEKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDkwNVx1MDkzZVx1MDkyYSIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwOTM4XHUwOTNmXHUwOTE2XHUwOTRiXHUwOTE3XHUwOTQ3Iik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCI/Iik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcbiIpOyAKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIjoiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoZGVhZFBBKyJcdTA5MzBcdTA5M2VcdTA5MmYiK3Zpc2FyZ2EpOyAgICAvL25vIGJyZWFrIGJlZm9yZSB2aXNhcmdhCisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDkzNSIgKyBkZWFkUkErICJcdTA5MzdcdTA5M2UiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlxyXG4iKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoZGVhZFBBKyAiXHUwOTMwXHUwOTE1XHUwOTNlXHUwOTM2Iik7ICAgICAvL2RlYWRQQStSQStLQSt2b3dlbCBBQStTSEEgLT4gcHJha2FzaAorICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiLCIpOyAKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDkyNFx1MDk0MVx1MDkyZVx1MDkzZVx1MDkzMFx1MDk0YiIpOyAKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDkyZVx1MDkzZiIrIGRlYWRUQSsgIlx1MDkzMCIpOyAgICAgICAvL01BK3Zvd2VsIEkrIGRlYWRUQSArIFJBIAorICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwOTE1XHUwOTNlIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTA5MmEiKyBkZWFkVEEgKyAiXHUwOTMwIik7ICAgICAgICAgICAgLy9QQSArIGRlYWRUQSArIFJBCisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTA5MmFcdTA5NWRcdTA5NGIiKTsKKyAgICAgIC8vIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDk2NCIpOyAvL2ZhaWxzIGhlcmUgZG9lc24ndCBicmVhayBhdCBkYW5kYQorICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudChkZWFkU0EgKyBkZWFkVEEgKyAiXHUwOTMwXHUwOTNmIik7ICAgICAgIC8vZGVhZFNBK2RlYWRUQStSQSt2b3dlbCBJLT5zdGhyaQorICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiLiIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwOTY4XHUwOTY2Llx1MDk2OVx1MDk2ZiIpOyAgICAgICAgICAgIC8vaGluZGkgbnVtYmVycworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwOTY3XHUwOTY2XHUwOTY2Llx1MDk2Nlx1MDk2NiUiKTsgICAgIC8vcG9zdG51bWVyaWMKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MjBhOFx1MDk2NyxcdTA5NjdcdTA5NjZcdTA5NjYuXHUwOTY2XHUwOTY2Iik7IC8vcHJlLW51bWJlciBJbmRpYSBjdXJyZW5jeSBzeW1ib2wgUnMuXHUyMGFECisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTA5MDVcdTA5MmVcdTA5MWMiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlxuIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KGhhbGZTQSArICJcdTA5MzVcdTA5MjRcdTA5MDIiICtkZWFkVEErICJcdTA5MzAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlxyIik7CisKKyAgICAgIGdlbmVyYWxJdGVyYXRvclRlc3Qod29yZEl0ZXJEZWZhdWx0LCB3b3JkZGF0YSk7CisgIH0KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGtQYXJhZ3JhcGhTZXBhcmF0b3IgPSAiXHUyMDI5IjsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGtMaW5lU2VwYXJhdG9yICAgICAgPSAiXHUyMDI4IjsKKworICBwdWJsaWMgdm9pZCBUZXN0RGVmYXVsdFJ1bGVCYXNlZFNlbnRlbmNlSXRlcmF0aW9uKCl7CisgICAgICBsb2dsbigiVGVzdGluZyB0aGUgUkJCSSBmb3Igc2VudGVuY2UgaXRlcmF0aW9uIHVzaW5nIGRlZmF1bHQgcnVsZXMiKTsKKyAgICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgcmJiaT0oUnVsZUJhc2VkQnJlYWtJdGVyYXRvcilSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLmdldFNlbnRlbmNlSW5zdGFuY2UoKTsKKyAgICAgIC8vZmV0Y2ggdGhlIHJ1bGVzIHVzZWQgdG8gY3JlYXRlIHRoZSBhYm92ZSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yCisgICAgICBTdHJpbmcgZGVmYXVsdFJ1bGVzPXJiYmkudG9TdHJpbmcoKTsKKyAgICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3Igc2VudEl0ZXJEZWZhdWx0PW51bGw7CisgICAgICB0cnl7CisgICAgICBzZW50SXRlckRlZmF1bHQgICA9IG5ldyBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKGRlZmF1bHRSdWxlcyk7IAorICAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpeworICAgICAgICAgIGVycmxuKCJFUlJPUjogZmFpbGVkIGNvbnN0cnVjdGlvbiBpbiBUZXN0RGVmYXVsdFJ1bGVCYXNlZFNlbnRlbmNlSXRlcmF0aW9uKCkiICsgaWFlLnRvU3RyaW5nKCkpOworICAgICAgfQorCisgICAgICBWZWN0b3Igc2VudGRhdGEgPSBuZXcgVmVjdG9yKCk7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCIoVGhpcyBpcyBpdC4pICIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiVGVzdGluZyB0aGUgc2VudGVuY2UgaXRlcmF0b3IuICIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiXCJUaGlzIGlzblwndCBpdC5cIiAiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIkhpISAiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIlRoaXMgaXMgYSBzaW1wbGUgc2FtcGxlIHNlbnRlbmNlLiAiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIihUaGlzIGlzIGl0LikgIik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJUaGlzIGlzIGEgc2ltcGxlIHNhbXBsZSBzZW50ZW5jZS4gIik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJcIlRoaXMgaXNuXCd0IGl0LlwiICIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiSGkhICIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiVGhpcyBpcyBhIHNpbXBsZSBzYW1wbGUgc2VudGVuY2UuICIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiSXQgZG9lcyBub3QgaGF2ZSB0byBtYWtlIGFueSBzZW5zZSBhcyB5b3UgY2FuIHNlZS4gIik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJOZWwgbWV6em8gZGVsIGNhbW1pbiBkaSBub3N0cmEgdml0YSwgbWkgcml0cm92YWkgaW4gdW5hIHNlbHZhIG9zY3VyYS4gIik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJDaGUgbGEgZHJpdHRhIHZpYSBhdmVvIHNtYXJyaXRhLiAiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIkhlIHNhaWQsIHRoYXQgSSBzYWlkLCB0aGF0IHlvdSBzYWlkISEgIik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJEb24ndCByb2NrIHRoZSBib2F0LiIgKyBrUGFyYWdyYXBoU2VwYXJhdG9yKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIkJlY2F1c2UgSSBhbSB0aGUgZGFkZHksIHRoYXQgaXMgd2h5LiAiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIk5vdCBvbiBteSB0aW1lIChlbCB0aW1vLikhICIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiU28gd2hhdCEhIiArIGtQYXJhZ3JhcGhTZXBhcmF0b3IpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiXCJCdXQgbm93LFwiIGhlIHNhaWQsIFwiSSBrbm93IVwiICIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiSGFycmlzIHRodW1iZWQgZG93biBzZXZlcmFsLCBpbmNsdWRpbmcgXCJBd2F5IFdlIEdvXCIgKHdoaWNoIGJlY2FtZSB0aGUgaHVnZSBzdWNjZXNzIE9rbGFob21hISkuICIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiT25lIHNwZWNpZXMsIEIuIGFudGhyYWNpcywgaXMgaGlnaGx5IHZpcnVsZW50LlxuIik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJXb2xmIHNhaWQgYWJvdXQgU291bmRlcjpcIkJlYXV0aWZ1bGx5IHRob3VnaHQtb3V0IGFuZCBkaXJlY3RlZC5cIiAiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIkhhdmUgeW91IGV2ZXIgc2FpZCwgXCJUaGlzIGlzIHdoZXJlXHRJIHNoYWxsIGxpdmVcIj8gIik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJIZSBhbnN3ZXJlZCwgXCJZb3UgbWF5IG5vdCFcIiAiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIkFub3RoZXIgcG9wdWxhciBzYXlpbmcgaXM6IFwiSG93IGRvIHlvdSBkbz9cIi4gIik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJZZXQgYW5vdGhlciBwb3B1bGFyIHNheWluZyBpczogXCdJXCdtIGZpbmUgdGhhbmtzLlwnICIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiV2hhdCBpcyB0aGUgcHJvcGVyIHVzZSBvZiB0aGUgYWJicmV2aWF0aW9uIHBwLj8gIik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJZZXMsIEkgYW0gZGVmaW5hdGVsbHkgMTJcIiB0YWxsISEiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIk5vd1xyaXNcbnRoZVxyXG50aW1lXG5ccmZvclxyXHJhbGxcdTIwMjkiKTsKKyAgICAgIC8vIERvbid0IGJyZWFrIHNlbnRlbmNlcyBhdCB0aGUgYm91bmRhcnkgYmV0d2VlbiBDSksKKyAgICAgIC8vIGFuZCBvdGhlciBsZXR0ZXJzCisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJcdTU0ODdcdTY3ZmZcdWU1OTFcdTUwMTdcdTYxYjNcdTYwYTFcdTk1MTBcdTgxNjU6XCJKQVZBXHU4MjFjIgorICAgICAgICAgICAgICAgICsgIlx1ODE2NVx1N2ZjOFx1NTFjZVx1MzA2ZCxcdTI0OTRcdTU2ZDhcdTRlYzBcdTYwYjFcdTg1NjBcdTUxYmEiCisgICAgICAgICAgICAgICAgKyAiXHU2MTFkXHU1N2I2XHUyNTEwXHU1ZDQ2XCIuXHUyMDI5Iik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJcdTU0ODdcdTY3ZmZcdWU1OTFcdTUwMTdcdTYxYjNcdTYwYTFcdTk1MTBcdTgxNjVcdTlkZTgiCisgICAgICAgICAgICAgICAgKyAiXHU5N2U0SkFWQVx1ODIxY1x1ODE2NVx1N2ZjOFx1NTFjZVx1MzA2ZFx1ZTMwYlx1MjQ5NFx1NTZkOFx1NGVjMCIKKyAgICAgICAgICAgICAgICArICJcdTYwYjFcdTg1NjBcdTUxYmFcdTYxMWRcdTU3YjZcdTI1MTBcdTVkNDZcdTk3ZTVcdTc3NTFcdTIwMjkiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIlx1NTQ4N1x1NjdmZlx1ZTU5MVx1NTAxN1x1NjFiM1x1NjBhMVx1OTUxMFx1ODE2NVx1OWRlOFx1OTdlNCIKKyAgICAgICAgICAgICAgICArICJcdTY0NzBcdTg3OTBKQVZBXHU4MjFjXHU4MTY1XHU3ZmM4XHU1MWNlXHUzMDZkXHVlMzBiXHUyNDk0XHU1NmQ4IgorICAgICAgICAgICAgICAgICsgIlx1NGVjMFx1NjBiMVx1ODU2MFx1NTFiYVx1NjExZFx1NTdiNlx1MjUxMFx1NWQ0Nlx1OTdlNVx1Nzc1MVx1MjAyOSIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiSGUgc2FpZCwgXCJJIGNhbiBnbyB0aGVyZS5cIlx1MjAyOSIpOworICAgICAgLy8gVHJlYXQgZnVsbHdpZHRoIHZhcmlhbnRzIG9mIC4hPyB0aGUgc2FtZSBhcyB0aGVpcgorICAgICAgLy8gbm9ybWFsIGNvdW50ZXJwYXJ0cworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiSSBrbm93IEknbSByaWdodFx1ZmYwZSAiKTsKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIlJpZ2h0XHVmZjFmICIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiUmlnaHRcdWZmMDEgIik7CisKKyAgICAgIC8vIERvbid0IGJyZWFrIHNlbnRlbmNlcyBhdCBib3VuZGFyeSBiZXR3ZWVuIENKSyBhbmQgZGlnaXRzCisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJcdTU0ODdcdTY3ZmZcdWU1OTFcdTUwMTdcdTYxYjNcdTYwYTFcdTk1MTBcdTgxNjVcdTlkZTgiCisgICAgICAgICAgICAgICAgKyAiXHU5N2U0ODg4OFx1ODIxY1x1ODE2NVx1N2ZjOFx1NTFjZVx1MzA2ZFx1ZTMwYlx1MjQ5NFx1NTZkOFx1NGVjMCIKKyAgICAgICAgICAgICAgICArICJcdTYwYjFcdTg1NjBcdTUxYmFcdTYxMWRcdTU3YjZcdTI1MTBcdTVkNDZcdTk3ZTVcdTc3NTFcdTIwMjkiKTsKKworICAgICAgLy8gQnJlYWsgc2VudGVuY2UgYmV0d2VlbiBhIHNlbnRlbmNlIHRlcm1pbmF0b3IgYW5kCisgICAgICAvLyBvcGVuaW5nIHB1bmN0dWF0aW9uCisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJIb3cgZG8geW91IGRvPyIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiKGZpbmUpLiIpOworICAgICAgLy9zZW50ZW5jZSBicmVha3MgZm9yIGhpbmRpCisgICAgICAvL21ha2Ugc3VyZSB0aGVyZSBpcyBzZW50ZW5jZSBicmVhayBhZnRlciA/LGRhbmRhKGhpbmRpIHBocmFzZSBzZXBhcmF0b3IpLGZ1bGxzdG9wIGZvbGxvd2VkIGJ5IHNwYWNlIGFuZCBubyBicmVhayBhZnRlciBcbiBcciAKKyAgICAgIHNlbnRkYXRhLmFkZEVsZW1lbnQoIlx1MDkyOFx1MDkyZSIraGFsZlNBKyJcdTA5MjRcdTA5NDcgIiAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIlx1MDkzMFx1MDkyZVx1MDk0N1x1MDkzNiwgIiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiXHUwOTA1XHUwOTNlXHUwOTJhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJcdTA5MTVcdTA5NDhcdTA5MzhcdTA5NDcgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJcdTA5MzlcdTA5NDg/Iik7ICAgCisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJcdTA5MmVcdTA5NDggXHUwOTA1IgorICAgICAgICAgICAgICAgICAgICAgICAgKyBoYWxmQ0hBCisgICAgICAgICAgICAgICAgICAgICAgICArICJcdTA5MWJcdTA5M2UgXHUwOTM5XHUwOTQyXHUwOTAxXHUwOTY0ICIpOyAgIAorICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiXHUwOTA1XHUwOTNlXHUwOTJhXHJcbiBcdTA5MTVcdTA5NDhcdTA5MzhcdTA5NDcgXHUwOTM5XHUwOTQ4PyIpOyAgIAorICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiXHUwOTM1XHUwOTM5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgKyBoYWxmS0EKKyAgICAgICAgICAgICAgICAgICAgICAgKyAiXHUwOTJmXHUwOTNlXG4gXHUwOTM5XHUwOTQ4PyIpOyAgIAorICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiXHUwOTJmXHUwOTM5IFx1MDkwNVx1MDkzZVx1MDkyZSBcdTA5MzlcdTA5NDguICIpOyAgIAorICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiXHUwOTJmXHUwOTM5IG1lYW5zIFwidGhpc1wiLiAiKTsgCisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJcIlx1MDkyYVx1MDk1ZFx1MDkzZVx1MDkwOFwiIG1lYW5pbmcgXCJlZHVjYXRpb25cIiBvciBcInN0dWRpZXNcIi4gIik7CisgICAgICBzZW50ZGF0YS5hZGRFbGVtZW50KCJcdTA5MDVcdTA5M2VcdTA5MWMiIAorICAgICAgICAgICAgICAgICAgICAgICAgKyAiKCIraGFsZlNBKyJcdTA5MzVcdTA5MjRcdTA5MDIiCisgICAgICAgICAgICAgICAgICAgICAgICArIGRlYWRUQQorICAgICAgICAgICAgICAgICAgICAgICAgKyAiXHUwOTMwICIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIlx1MDkyNlx1MDkzZlx1MDkzNVx1MDkzZVx1MDkzOCkgIgorICAgICAgICAgICAgICAgICAgICAgICAgKyAiXHUwOTM5XHUwOTQ4XHUwOTY0ICIpOworICAgICAgc2VudGRhdGEuYWRkRWxlbWVudCgiTGV0J3MgZW5kIGhlcmUuICIpOworICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdChzZW50SXRlckRlZmF1bHQsIHNlbnRkYXRhKTsKKyAgfQorICAgCisgIHB1YmxpYyB2b2lkIFRlc3REZWZhdWx0UnVsZUJhc2VkTGluZUl0ZXJhdGlvbigpeworICAgICBsb2dsbigiVGVzdGluZyB0aGUgUkJCSSBmb3IgbGluZSBpdGVyYXRpb24gdXNpbmcgZGVmYXVsdCBydWxlcyIpOworICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIHJiYmk9KFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5nZXRMaW5lSW5zdGFuY2UoKTsKKyAgICAgLy9mZXRjaCB0aGUgcnVsZXMgdXNlZCB0byBjcmVhdGUgdGhlIGFib3ZlIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IKKyAgICAgU3RyaW5nIGRlZmF1bHRSdWxlcz1yYmJpLnRvU3RyaW5nKCk7CisgICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgbGluZUl0ZXJEZWZhdWx0PW51bGw7CisgICAgIHRyeXsKKyAgICAgbGluZUl0ZXJEZWZhdWx0ICAgPSBuZXcgUnVsZUJhc2VkQnJlYWtJdGVyYXRvcihkZWZhdWx0UnVsZXMpOyAKKyAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpeworICAgICAgICAgZXJybG4oIkVSUk9SOiBmYWlsZWQgY29uc3RydWN0aW9uIGluIFRlc3REZWZhdWx0UnVsZUJhc2VkTGluZUl0ZXJhdGlvbigpIiArIGlhZS50b1N0cmluZygpKTsKKyAgICAgfQorCisgICAgIFZlY3RvciBsaW5lZGF0YSA9IG5ldyBWZWN0b3IoKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiTXVsdGktIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIkxldmVsICIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJleGFtcGxlICIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJvZiAiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiYSAiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgic2VtaS0iKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiaWRpb3RpYyAiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgibm9uLSIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJzZW5zaWNhbCAiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiKG5vbi0iKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiaW1wb3J0YW50KSAiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgic2VudGVuY2UuICIpOworCisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIkhpICAiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiSGVsbG8gIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIkhvd1xuIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoImFyZVxyIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoInlvdSIgKyBrTGluZVNlcGFyYXRvcik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoImZpbmUuXHQiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiZ29vZC4gICIpOworCisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIk5vd1xyIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoImlzXG4iKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgidGhlXHJcbiIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJ0aW1lXG4iKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiXHIiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiZm9yXHIiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiXHIiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiYWxsIik7CisKKyAgICAvLyB0byB0ZXN0IGZvciBidWcgIzQwNjgxMzMKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiXHU5NmY2Iik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIlx1NGUwMFx1MzAwMiIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJcdTRlOGNcdTMwMDEiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiXHU0ZTA5XHUzMDAyXHUzMDAxIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIlx1NTZkYlx1MzAwMVx1MzAwMlx1MzAwMSIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJcdTRlOTQsIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIlx1NTE2ZC4iKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiXHU0ZTAzLlx1MzAwMSxcdTMwMDIiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiXHU1MTZiIik7CisKKyAgICAvLyB0byB0ZXN0IGZvciBidWcgIzQwODYwNTIKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiZm9vXHUwMGEwYmFyICIpOworICAgIC8vIGxpbmVkYXRhLmFkZEVsZW1lbnQoImZvb1x1ZmVmZmJhciIpOworCisgICAgLy8gdG8gdGVzdCBmb3IgYnVnICM0MDk3OTIwCisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoImRvZywiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiY2F0LCIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJtb3VzZSAiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiKG9uZSkiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiKHR3bylcbiIpOworCisgICAgLy8gdG8gdGVzdCBmb3IgYnVnICM0MDM1MjY2CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIlRoZSAiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiYmFsYW5jZSAiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiaXMgIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIiQtMjMsNDU2Ljc4LCAiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgibm90ICIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCItJDMyLDQ1Ni43OCFcbiIpOworCisgICAgLy8gdG8gdGVzdCBmb3IgYnVnICM0MDk4NDY3CisgICAgLy8gV2hhdCBmb2xsb3dzIGlzIGEgc3RyaW5nIG9mIEtvcmVhbiBjaGFyYWN0ZXJzIChJIGZvdW5kIGl0IGluIHRoZSBZZWxsb3cgUGFnZXMKKyAgICAvLyBhZCBmb3IgdGhlIEtvcmVhbiBQcmVzYnl0ZXJpYW4gQ2h1cmNoIG9mIFNhbiBGcmFuY2lzY28sIGFuZCBJIGhvcGUgSSB0cmFuc2NyaWJlZAorICAgIC8vIGl0IGNvcnJlY3RseSksIGZpcnN0IGFzIHByZWNvbXBvc2VkIHN5bGxhYmxlcywgYW5kIHRoZW4gYXMgY29uam9pbmluZyBqYW1vLgorICAgIC8vIEJvdGggc2VxdWVuY2VzIHNob3VsZCBiZSBzZW1hbnRpY2FsbHkgaWRlbnRpY2FsIGFuZCBicmVhayB0aGUgc2FtZSB3YXkuCisgICAgLy8gcHJlY29tcG9zZWQgc3lsbGFibGVzLi4uCisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIlx1YzBjMVx1ZDU2ZCAiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiXHVkNTVjXHVjNzc4ICIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJcdWM1ZjBcdWQ1NjkgIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIlx1YzdhNVx1Yjg1Y1x1YWQ1MFx1ZDY4YyAiKTsKKyAgICAvLyBjb25qb2luaW5nIGphbW8uLi4KKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiXHUxMTA5XHUxMTYxXHUxMWJjXHUxMTEyXHUxMTYxXHUxMWJjICIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJcdTExMTJcdTExNjFcdTExYWJcdTExMGJcdTExNzVcdTExYWIgIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIlx1MTEwYlx1MTE2N1x1MTFhYlx1MTExMlx1MTE2MVx1MTFiOCAiKTsKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiXHUxMTBjXHUxMTYxXHUxMWJjXHUxMTA1XHUxMTY5XHUxMTAwXHUxMTZkXHUxMTEyXHUxMTZjIik7CisKKyAgICAvLyB0byB0ZXN0IGZvciBidWcgIzQxMTc1NTQ6IEZ1bGx3aWR0aCAuIT8gc2hvdWxkIGJlIHRyZWF0ZWQgYXMgcG9zdEp3cmQKKyAgICAgbGluZWRhdGEuYWRkRWxlbWVudCgiXHU0ZTAxXHVmZjBlIik7CisgICAgIGxpbmVkYXRhLmFkZEVsZW1lbnQoIlx1NGUwMlx1ZmYwMSIpOworICAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJcdTRlMDNcdWZmMWYiKTsKKyAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdChsaW5lSXRlckRlZmF1bHQsIGxpbmVkYXRhKTsKKworCisgIH0KKyAgcHVibGljIHZvaWQgVGVzdEN1c3RvbVJ1bGVCYXNlZExpbmVJdGVyYXRvcigpeworCisgICAgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciByYmJpPShSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKVJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuZ2V0TGluZUluc3RhbmNlKCk7CisgICAgLy9mZXRjaCB0aGUgcnVsZXMgdXNlZCB0byBjcmVhdGUgdGhlIGFib3ZlIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IKKyAgICBTdHJpbmcgcnVsZXM9Ly8iJF9pZ25vcmVfPVtlXTsiICArIC8vIFtsaXVdIE5vdCBzdXJlIHdoYXQgdGhlIGludGVudGlvbiB3YXMgaGVyZS4KKyAgICAgICAgLy8gSXQncyBpbGxlZ2FsIHRvIHJlZGVmaW5lIHZhcmlhYmxlcywgYWxzbywgd2h5IHByZXBlbmQgdGhlIGlnbm9yZSBkZWZpbml0aW9uIC0tCisgICAgICAgIC8vIGV2ZW4gaWYgaXQncyBsZWdhbCB0byByZWRlZmluZSB2YXJpYWJsZXMsIHRoZSBwcmVwZW5kZWQgZGVmaW5pdGlvbiB3aWxsIGp1c3QKKyAgICAgICAgLy8gZ2V0IG92ZXJyaWRkZW4uCisgICAgICAgICAgICAgICAgIHJiYmkudG9TdHJpbmcoKTsKKyAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGxpbmVJdGVyPW51bGw7CisgICAgdHJ5eworICAgICBsaW5lSXRlciAgID0gbmV3IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IocnVsZXMpOyAKKyAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSl7CisgICAgICAgICBlcnJsbigiRVJST1I6IGZhaWxlZCBjb25zdHJ1Y3Rpb24gaW4gVGVzdEN1c3RvbVJ1bGVCYXNlZExpbmVJdGVyYXRvcigpIC0tIGN1c3RvbSBydWxlc1xuIiArIGlhZS50b1N0cmluZygpKTsKKyAgICAgICB9CisgICAgVmVjdG9yIGxpbmVkYXRhPW5ldyBWZWN0b3IoKTsKKyAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJTTGhlbGxvISAiKTsKKyAgICBsaW5lZGF0YS5hZGRFbGVtZW50KCJIb3cgIik7CisgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdChsaW5lSXRlciwgbGluZWRhdGEpOworICB9CisgIAorICAvL3Rlc3RzIHRoZSBiZWhhdmlvdXIgb2YgY2hhcmFjdGVyIGl0ZXJhdGlvbiBvZiBSQkJJIHdpdGggY3VzdG9tIHJ1bGVzCisgIHB1YmxpYyB2b2lkIFRlc3RDdXN0b21SdWxlQmFzZWRDaGFyYWN0ZXJJdGVyYXRpb24oKXsKKyAgICAgIGxvZ2xuKCJUZXN0aW5nIHRoZSBSQkJJIGJ5IHVzaW5nIGN1c3RvbSBydWxlcyBmb3IgY2hhcmFjdGVyIGl0ZXJhdGlvbiIpOworCisgICAgICBTdHJpbmcgY3J1bGVzMj0iJF9pZ25vcmVfPVtlXTsiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAvL2lnbm9yZSB0aGUgY2hhcmFjdGVyICJlIgorICAgICAgICAgICAgICAgICAgICAgIi47IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAKKyAgICAgICAgICAgICAgICAgICAgICIkZGV2Vm93ZWxTaWduPVtcdTA5M2UtXHUwOTRjXHUwOTYyXHUwOTYzXTsiICAgKyAgLy9kZXZhbmFnaXJpIHZvd2VsID0gXHUwOTNlIHRwIFx1MDk0YyBhbmQgXHUwOTYyLlx1MDk2MworICAgICAgICAgICAgICAgICAgICAgIiRkZXZDb25zb25hbnQ9W1x1MDkxNS1cdTA5MzldOyIgICAgICAgICAgICAgICArICAvL2RldmFuYWdpcmkgY29uc29uYW50ID0gXHUwOTE1IHRvIFx1MDkzOQorICAgICAgICAgICAgICAgICAgICAgIiRkZXZDb25zb25hbnQkZGV2Vm93ZWxTaWduOyIgOyAgICAgICAgICAgICAgICAvL2JyZWFrIGF0IGFsbCBwbGFjZXMgZXhjZXB0IHRoZSAgZm9sbG93aW5nIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZGV2YW5hZ2lyaSBjb25zb25hbnRzKyBkZXZhbmFnaXJpIHZvd2Vsc2lnbgorICAgICAgCisgICAgICBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGNoYXJJdGVyUnVsZXM9bnVsbDsKKyAgICAgIHRyeXsKKyAgICAgIGNoYXJJdGVyUnVsZXMgICA9IG5ldyBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKGNydWxlczIpOyAKKyAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKXsKKyAgICAgICAgICBlcnJsbigiRVJST1I6IGZhaWxlZCBjb25zdHJ1Y3Rpb24gaW4gVGVzdEN1c3RvbUJhc2VkQ2hhcmFjdGVySXRlcmF0aW9uKCktLSBjdXN0b20gcnVsZXMiICsgaWFlLnRvU3RyaW5nKCkpOworICAgICAgfQorCisgICAgICBWZWN0b3IgY2hhcmRhdGEgPSBuZXcgVmVjdG9yKCk7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJIZSIpOyAgICAgICAgICAgICAgLy9pZ25vcmVzICdlJworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgibCIpOyAgICAgICAgICAgICAgICAKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoImwiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIm9lIik7ICAgICAgICAgICAgICAvL2lnbm9yZXMgJ2UnIGhlbmNlIHdyYXBzIGl0IGludG8gJ28nIGluc3RlYWQgb2Ygd3JhcHBpbmcgd2l0aAorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwMzAxIik7ICAgICAgICAgIC8vJ1x1MDMwMScgdG8gZm9ybSAnYWN1dGVFICcKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIiZlIik7ICAgICAgICAgICAgICAvL2lnbm9yZXMgJ2UnIGhlbmNlIHdyYXBzIGl0IGludG8gJyYnIGluc3RlYWQgb2Ygd3JhcHBpbmcgd2l0aAorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwMzAzIik7ICAgICAgICAgIC8vJ1x1MDMwMyB0byBmb3JtICd0aWxkYUUnCisgICAgICAvL2RldmFuYWdpcmkgY2hhcmFjdGVycyAKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkwNiIpOyAgICAgICAgICAvL2RldmFuYWdpcmkgQUEKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkzZSIpOyAgICAgICAgICAvL2RldmFuYWdpcmkgdm93ZWxzaWduIEFBOi0tYnJlYWtzIGF0IFx1MDkwMSB3aGljaCBpcyBkZXZhbmFnaXJpIAorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTAxIik7ICAgICAgICAgIC8vY2hhbmRyYSBiaW5kaHUgc2luY2UgaXQgaXMgbm90IG1lbnRpb25lZCBpbiB0aGUgcnVsZXMKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkxNlx1MDk0NyIpOyAgICAvL2RldmFuYWdpcmkgS0hBK3Zvd2Vsc2lnbiBFCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5MzhcdTA5NDEiKTsgICAgLy9kZXZhbmFnaXJpIFNBK3Zvd2Vsc2lnbiBVIDogLSBicmVha3MgYXQKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkwMiIpOyAgICAgICAgICAvL1x1MDkwMiBkZXZhbmFnaXJpIGFudXN2YXJhIHNpbmNlIGl0IGlzIG5vdCBtZW50aW9uZWQgaW4gdGhlIHJ1bGVzCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTA5MjYiKTsgICAgICAgICAgLy9kZXZhbmFnaXJpIGNvbnNvbmFudCBEQQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTMwIik7ICAgICAgICAgIC8vZGV2YW5hZ2lyaSBjb25zb25hbnQgUkEKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDkzOVx1MDk0YyIpOyAgICAvL2RldmFuYWdpcmkgSEErdm93ZWwgc2lnbiBBSQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwOTY0Iik7ICAgICAgICAgIC8vZGV2YW5hZ2lyaSBkYW5kYQorICAgICAgLy8gZGV2YW5hZ2lyaSBjaHJhY3RlcnMgZW5kCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJBIik7ICAgICAgICAgICAgICAgLy9icmVha3MgaW4gYmV0d2VlbiBzaW5jZSBpdCBpcyBub3QgbWVudGlvbmVkIGluIHRoZSBydWxlcworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwMzAyIik7ICAgICAgICAgIC8qIGNpcmN1bWZsZXhBICovICAgIAorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiaSIpOyAgICAgICAgICAgICAgIC8vYnJlYWtzIGluIGJldHdlZW4gc2luY2Ugbm90IG1lbnRpb25lZCBpbiB0aGUgcnVsZXMKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MDMwMSIpOyAgICAgICAgICAvKiBhY3V0ZUJlbG93SSAqLyAgCisgICAgICAvL1J1bGVzIGRvbid0IHN1cHBvcnQgY29uam9pbmluZyBqYW1vLi4uLgorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUxMTA5Iik7ICAgICAgICAgIC8vYnJlYWsgYXQgZXZlcnkgY2hhcmFjdGVyIHNpbmNlIHJ1bGVzCisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTExNjEiKTsgICAgICAgICAgLy9kb24ndCBzdXBwb3J0IGNvbmpvaW5pbmcgamFtbworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUxMWJjIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcdTExMTIiKTsKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlx1MTE2MSIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUxMWJjIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJcbiIpOworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHIiKTsgICAgICAgICAgICAgLy9kb2Vzbid0IGtlZXAgQ1JMR0YgdG9nZXRoZXIgc2luY2UgcnVsZXMgZG8gbm90IG1lbnRpb24gaXQKKyAgICAgIGNoYXJkYXRhLmFkZEVsZW1lbnQoIlxuIik7CisgICAgICBjaGFyZGF0YS5hZGRFbGVtZW50KCJTIik7ICAgICAgICAgICAgICAvL2dyYXZlUworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwMzAwIik7ICAgICAgICAgLy9icmVha3MgaW4gYmV0d2VlbiBzaW5jZSBpdCBpcyBub3QgbWVudGlvbmVkIGluIHRoZSBydWxlcworICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiaSIpOyAgICAgICAgICAgICAgLy9hY3V0ZUJlbG93SQorICAgICAgY2hhcmRhdGEuYWRkRWxlbWVudCgiXHUwMzAxIik7ICAgICAgICAgLy9icmVha3MgaW4gYmV0d2VlbiBzaW5jZSBpdCBpcyBub3QgbWVudGlvbmVkIGluIHRoZSBydWxlcworCisgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KGNoYXJJdGVyUnVsZXMsIGNoYXJkYXRhKTsKKworICB9ICAgIAorICAvL3Rlc3RzIGN1c3RvbSBydWxlcyBiYXNlZCB3b3JkIGl0ZXJhdGlvbgorICBwdWJsaWMgdm9pZCBUZXN0Q3VzdG9tUnVsZUJhc2VkV29yZEl0ZXJhdGlvbigpeworICAgICAgbG9nbG4oIlRlc3RpbmcgdGhlIFJCQkkgYnkgdXNpbmcgY3VzdG9tIHJ1bGVzIGZvciB3b3JkIGl0ZXJhdGlvbiIpOworICAgICAgU3RyaW5nIHdydWxlczE9IiRfaWdub3JlXz1bWzpNbjpdWzpNZTpdWzpDZjpdXTsiICAgICAgICAgKyAvLyBpZ25vcmUgbm9uLXNwYWNpbmcgbWFya3MsIGVuY2xvc2luZyBtYXJrcywgYW5kIGZvcm1hdCBjaGFyYWN0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICIkZGFuZGE9W1x1MDk2NFx1MDk2NV07IiAgICAgICAgICAgICAgICArIC8vIEhpbmRpIFBocmFzZSBzZXBlcmF0b3IKKyAgICAgICAgICAgICAgICAgICAgICAiJGxldD1bWzpMOl1bOk1jOl1dOyIgICAgICAgICAgICAgICAgICAgKyAvLyB1cHBlcmNhc2UoTHUpLCBsb3dlcmNhc2UoTGwpLCB0aXRsZWNhc2UoTHQpLCBtb2RpZmllcihMbSkgbGV0dGVycywgTWMtY29tYmluaW5nIHNwYWNlIG1hcmsKKyAgICAgICAgICAgICAgICAgICAgICAiJG1pZF93b3JkPVtbOlBkOl1cXFwiXFxcJ1xcLl07IiAgICAgICAgKyAvLyBkYXNoZXMsIHF1b3RhdGlvbiwgYXBvc3RyYXBoZXMsIHBlcmlvZAorICAgICAgICAgICAgICAgICAgICAgICIkbHM9W1xuXHUwMDBjXHUyMDI4XHUyMDI5XTsiICAgICAgICAgICArIC8vIGxpbmUgc2VwYXJhdG9yczogIExGLCBGRiwgUFMsIGFuZCBMUworICAgICAgICAgICAgICAgICAgICAgICIkd3M9W1s6WnM6XVx0XTsiICAgICAgICAgICAgICAgICAgICAgICArIC8vIGFsbCBzcGFjZSBzZXBhcmF0b3JzIGFuZCB0aGUgdGFiIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICAgICIkd29yZD0oKCRsZXQrKCRtaWRfd29yZCRsZXQrKSopKTsiICArICAKKyAgICAgICAgICAgICAgICAgICAgICAiLjsiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIC8vIGJyZWFrIGFmdGVyIGV2ZXJ5IGNoYXJhY3Rlciwgd2l0aCB0aGUgZm9sbG93aW5nIGV4Y2VwdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgICAiJHdvcmQ7IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgCisgICAgICAgICAgICAgICAgICAgICAgIiR3cypcciRscyRkYW5kYT87IiA7CisKKyAgICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3Igd29yZEl0ZXJSdWxlcz1udWxsOworICAgICAgdHJ5eworICAgICAgd29yZEl0ZXJSdWxlcyAgID0gbmV3IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3Iod3J1bGVzMSk7IAorICAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpeworICAgICAgICAgIGVycmxuKCJFUlJPUjogZmFpbGVkIGNvbnN0cnVjdGlvbiBpbiBUZXN0Q3VzdG9tUnVsZUJhc2VkV29yZEl0ZXJhdGlvbigpIC0tIGN1c3RvbSBydWxlcyIgKyBpYWUudG9TdHJpbmcoKSk7CisgICAgICB9CisKKyAgICAgIFZlY3RvciB3b3JkZGF0YSA9IG5ldyBWZWN0b3IoKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIldyaXRlIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJ3b3JkcnVsZXMiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIi4iKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIC8vcGxheSB3aXRoIGhpbmRpCisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTA5MmZcdTA5MzkiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDkzOVx1MDkzZiIgKyBoYWxmTkEgKyAiXHUwOTI2XHUwOTQwIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJcdTA5MzlcdTA5NDgiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDk2NCIpOyAgIC8vRGFuZGEgaXMgc2ltaWxhciB0byBmdWxsIHN0b3AuIERhbmRhIGZvbGxvd2VkIGJ5IGEgc3BhY2UKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlx1MDkwNVx1MDkzZVx1MDkyYSIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiICIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHUwOTM4XHUwOTNmXHUwOTE2XHUwOTRiXHUwOTE3XHUwOTQ3Iik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCI/Iik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJJdCdzIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIkIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIzIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIwIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIuIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIxIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIwIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICAvLyB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICBnZW5lcmFsSXRlcmF0b3JUZXN0KHdvcmRJdGVyUnVsZXMsIHdvcmRkYXRhKTsgCisgIH0gCisgIC8vYWRkcyBleHRyYSBydWxlcyB0byBkZWFsIHdpdGggYWJicmV2YXRpb25zKGxpbWl0ZWQpIGFuZCB0ZXN0IHRoZSB3b3JkIEl0ZXJhdGlvbgorICBwdWJsaWMgdm9pZCBUZXN0QWJiclJ1bGVCYXNlZFdvcmRJdGVyYXRpb24oKXsKKyAgICAgIGxvZ2xuKCJUZXN0aW5nIHRoZSBSQkJJIGZvciB3b3JkIGl0ZXJhdGlvbiBieSBhZGRpbmcgcnVsZXMgdG8gc3VwcG9ydCBhYmJyZXZpYXRpb24iKTsKKyAgICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgcmIgPShSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKVJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKCk7CisgICAgICAKKyAgICAgIFN0cmluZyB3cnVsZXMyPSIkYWJicj0oKE1yLil8KE1ycy4pfChNcy4pfChEci4pfChVLlMuKSk7IiArIC8vIGFiYnJldmlhdGlvbnMuIAorICAgICAgICAgICAgICAgICAgICAgcmIudG9TdHJpbmcoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKworICAgICAgICAgICAgICAgICAgICAgIigkYWJiciR3cykqJHdvcmQ7IjsKKyAgICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3Igd29yZEl0ZXI9bnVsbDsKKyAgICAgIHRyeXsKKyAgICAgIHdvcmRJdGVyICAgPSBuZXcgUnVsZUJhc2VkQnJlYWtJdGVyYXRvcih3cnVsZXMyKTsgCisgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSl7CisgICAgICAgICAgZXJybG4oIkVSUk9SOiBmYWlsZWQgY29uc3RydWN0aW9uIGluIFRlc3RBYmJyUnVsZUJhc2VkV29yZEl0ZXJhdGlvbigpIC0tY3VzdG9tIHJ1bGVzIiArIGlhZS50b1N0cmluZygpKTsKKyAgICAgIH0KKyAgICAgIFZlY3RvciB3b3JkZGF0YSA9IG5ldyBWZWN0b3IoKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIk1yLiBHZW9yZ2UiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoImlzIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJmcm9tIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJVLlMuIE5hdnkiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIi4iKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIkhpcyIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXG4iKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoImZyaWVuZCIpOworICAgICAgd29yZGRhdGEuYWRkRWxlbWVudCgiXHQiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIkRyLiBTdGV2ZW4iKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIm1hcnJpZWQiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIk1zLiBCZW5uZXRoIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIhIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCIgIik7CisgICAgICB3b3JkZGF0YS5hZGRFbGVtZW50KCJNcnMuIEpvaG5zb24iKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIlxyXG4iKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoInBhaWQiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiAiKTsKKyAgICAgIHdvcmRkYXRhLmFkZEVsZW1lbnQoIiQyLDQwMC4wMCIpOworICAgICAgZ2VuZXJhbEl0ZXJhdG9yVGVzdCh3b3JkSXRlciwgd29yZGRhdGEpOyAKKyAgfSAKKyAgICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICAvLyBnZW5lcmFsIHRlc3Qgc3Vicm91dGluZXMKKyAgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAgcHJpdmF0ZSB2b2lkIGdlbmVyYWxJdGVyYXRvclRlc3QoUnVsZUJhc2VkQnJlYWtJdGVyYXRvciByYmJpLCBWZWN0b3IgZXhwZWN0ZWRSZXN1bHQpeworICAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgIFN0cmluZyB0ZXh0OworICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBleHBlY3RlZFJlc3VsdC5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgIHRleHQgPSAoU3RyaW5nKWV4cGVjdGVkUmVzdWx0LmVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKHRleHQpOworICAgICAgICAgfQorICAgICAgICAgdGV4dCA9IGJ1ZmZlci50b1N0cmluZygpOworCisgICAgICAgICByYmJpLnNldFRleHQodGV4dCk7CisKKyAgICAgICAgIFZlY3RvciBuZXh0UmVzdWx0cyA9IF90ZXN0Rmlyc3RBbmROZXh0KHJiYmksIHRleHQpOworICAgICAgICAgVmVjdG9yIHByZXZpb3VzUmVzdWx0cyA9IF90ZXN0TGFzdEFuZFByZXZpb3VzKHJiYmksIHRleHQpOworCisgICAgICAgICBsb2dsbigiY29tcGFyaW5nIGZvcndhcmQgYW5kIGJhY2t3YXJkLi4uIik7CisgICAgICAgICBpbnQgZXJycyA9IGdldEVycm9yQ291bnQoKTsKKyAgICAgICAgIGNvbXBhcmVGcmFnbWVudExpc3RzKCJmb3J3YXJkIGl0ZXJhdGlvbiIsICJiYWNrd2FyZCBpdGVyYXRpb24iLCBuZXh0UmVzdWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c1Jlc3VsdHMpOworICAgICAgICAgaWYgKGdldEVycm9yQ291bnQoKSA9PSBlcnJzKSB7CisgICAgICAgICAgICAgbG9nbG4oImNvbXBhcmluZyBleHBlY3RlZCBhbmQgYWN0dWFsLi4uIik7CisgICAgICAgICAgICAgY29tcGFyZUZyYWdtZW50TGlzdHMoImV4cGVjdGVkIHJlc3VsdCIsICJhY3R1YWwgcmVzdWx0IiwgZXhwZWN0ZWRSZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRSZXN1bHRzKTsKKyAgICAgICAgIH0KKworICAgICAgICBpbnRbXSBib3VuZGFyaWVzID0gbmV3IGludFtleHBlY3RlZFJlc3VsdC5zaXplKCkgKyAzXTsKKyAgICAgICAgYm91bmRhcmllc1swXSA9IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuRE9ORTsKKyAgICAgICAgYm91bmRhcmllc1sxXSA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZXhwZWN0ZWRSZXN1bHQuc2l6ZSgpOyBpKyspCisgICAgICAgICBib3VuZGFyaWVzW2kgKyAyXSA9IGJvdW5kYXJpZXNbaSArIDFdICsgKChTdHJpbmcpZXhwZWN0ZWRSZXN1bHQuZWxlbWVudEF0KGkpKS5sZW5ndGgoKTsKKyAgICAgIAorICAgICAgICBib3VuZGFyaWVzW2JvdW5kYXJpZXMubGVuZ3RoIC0gMV0gPSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLkRPTkU7CisgICAgICAKKyAgICAgICAgX3Rlc3RGb2xsb3dpbmcocmJiaSwgdGV4dCwgYm91bmRhcmllcyk7CisgICAgICAgIF90ZXN0UHJlY2VkaW5nKHJiYmksIHRleHQsIGJvdW5kYXJpZXMpOworICAgICAgICBfdGVzdElzQm91bmRhcnkocmJiaSwgdGV4dCwgYm91bmRhcmllcyk7CisKKyAgICAgICAgZG9NdWx0aXBsZVNlbGVjdGlvblRlc3QocmJiaSwgdGV4dCk7CisgICAgIH0KKworICAgICBwcml2YXRlIFZlY3RvciBfdGVzdEZpcnN0QW5kTmV4dChSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIHJiYmksIFN0cmluZyB0ZXh0KSB7CisgICAgICAgICBpbnQgcCA9IHJiYmkuZmlyc3QoKTsKKyAgICAgICAgIGludCBsYXN0UCA9IHA7CisgICAgICAgICBWZWN0b3IgcmVzdWx0ID0gbmV3IFZlY3RvcigpOworCisgICAgICAgICBpZiAocCAhPSAwKQorICAgICAgICAgICAgIGVycmxuKCJmaXJzdCgpIHJldHVybmVkICIgKyBwICsgIiBpbnN0ZWFkIG9mIDAiKTsKKyAgICAgICAgIHdoaWxlIChwICE9IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuRE9ORSkgeworICAgICAgICAgICAgIHAgPSByYmJpLm5leHQoKTsKKyAgICAgICAgICAgICBpZiAocCAhPSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgICAgICAgaWYgKHAgPD0gbGFzdFApCisgICAgICAgICAgICAgICAgICAgICBlcnJsbigibmV4dCgpIGZhaWxlZCB0byBtb3ZlIGZvcndhcmQ6IG5leHQoKSBvbiBwb3NpdGlvbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBsYXN0UCArICIgeWllbGRlZCAiICsgcCk7CisKKyAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZEVsZW1lbnQodGV4dC5zdWJzdHJpbmcobGFzdFAsIHApKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgIGlmIChsYXN0UCAhPSB0ZXh0Lmxlbmd0aCgpKQorICAgICAgICAgICAgICAgICAgICAgZXJybG4oIm5leHQoKSByZXR1cm5lZCBET05FIHByZW1hdHVyZWx5OiBvZmZzZXQgd2FzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGxhc3RQICsgIiBpbnN0ZWFkIG9mICIgKyB0ZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgbGFzdFAgPSBwOworICAgICAgICAgfQorICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgfQorCisgICAgIHByaXZhdGUgVmVjdG9yIF90ZXN0TGFzdEFuZFByZXZpb3VzKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgcmJiaSwgU3RyaW5nIHRleHQpIHsKKyAgICAgICAgIGludCBwID0gcmJiaS5sYXN0KCk7CisgICAgICAgICBpbnQgbGFzdFAgPSBwOworICAgICAgICAgVmVjdG9yIHJlc3VsdCA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICAgaWYgKHAgIT0gdGV4dC5sZW5ndGgoKSkKKyAgICAgICAgICAgICBlcnJsbigibGFzdCgpIHJldHVybmVkICIgKyBwICsgIiBpbnN0ZWFkIG9mICIgKyB0ZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAgIHdoaWxlIChwICE9IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuRE9ORSkgeworICAgICAgICAgICAgIHAgPSByYmJpLnByZXZpb3VzKCk7CisgICAgICAgICAgICAgaWYgKHAgIT0gUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5ET05FKSB7CisgICAgICAgICAgICAgICAgIGlmIChwID49IGxhc3RQKQorICAgICAgICAgICAgICAgICAgICAgZXJybG4oInByZXZpb3VzKCkgZmFpbGVkIHRvIG1vdmUgYmFja3dhcmQ6IHByZXZpb3VzKCkgb24gcG9zaXRpb24gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbGFzdFAgKyAiIHlpZWxkZWQgIiArIHApOworCisgICAgICAgICAgICAgICAgIHJlc3VsdC5pbnNlcnRFbGVtZW50QXQodGV4dC5zdWJzdHJpbmcocCwgbGFzdFApLCAwKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgIGlmIChsYXN0UCAhPSAwKQorICAgICAgICAgICAgICAgICAgICAgZXJybG4oInByZXZpb3VzKCkgcmV0dXJuZWQgRE9ORSBwcmVtYXR1cmVseTogb2Zmc2V0IHdhcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBsYXN0UCArICIgaW5zdGVhZCBvZiAwIik7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGxhc3RQID0gcDsKKyAgICAgICAgIH0KKyAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgIH0KKworICAgICBwcml2YXRlIHZvaWQgY29tcGFyZUZyYWdtZW50TGlzdHMoU3RyaW5nIGYxTmFtZSwgU3RyaW5nIGYyTmFtZSwgVmVjdG9yIGYxLCBWZWN0b3IgZjIpIHsKKyAgICAgICAgIGludCBwMSA9IDA7CisgICAgICAgICBpbnQgcDIgPSAwOworICAgICAgICAgU3RyaW5nIHMxOworICAgICAgICAgU3RyaW5nIHMyOworICAgICAgICAgaW50IHQxID0gMDsKKyAgICAgICAgIGludCB0MiA9IDA7CisKKyAgICAgICAgIHdoaWxlIChwMSA8IGYxLnNpemUoKSAmJiBwMiA8IGYyLnNpemUoKSkgeworICAgICAgICAgICAgIHMxID0gKFN0cmluZylmMS5lbGVtZW50QXQocDEpOworICAgICAgICAgICAgIHMyID0gKFN0cmluZylmMi5lbGVtZW50QXQocDIpOworICAgICAgICAgICAgIHQxICs9IHMxLmxlbmd0aCgpOworICAgICAgICAgICAgIHQyICs9IHMyLmxlbmd0aCgpOworCisgICAgICAgICAgICAgaWYgKHMxLmVxdWFscyhzMikpIHsKKyAgICAgICAgICAgICAgICAgZGVidWdMb2dsbigiICAgPiIgKyBzMSArICI8Iik7CisgICAgICAgICAgICAgICAgICsrcDE7CisgICAgICAgICAgICAgICAgICsrcDI7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICBpbnQgdGVtcFQxID0gdDE7CisgICAgICAgICAgICAgICAgIGludCB0ZW1wVDIgPSB0MjsKKyAgICAgICAgICAgICAgICAgaW50IHRlbXBQMSA9IHAxOworICAgICAgICAgICAgICAgICBpbnQgdGVtcFAyID0gcDI7CisKKyAgICAgICAgICAgICAgICAgd2hpbGUgKHRlbXBUMSAhPSB0ZW1wVDIgJiYgdGVtcFAxIDwgZjEuc2l6ZSgpICYmIHRlbXBQMiA8IGYyLnNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRlbXBUMSA8IHRlbXBUMiAmJiB0ZW1wUDEgPCBmMS5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wVDEgKz0gKChTdHJpbmcpZjEuZWxlbWVudEF0KHRlbXBQMSkpLmxlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICsrdGVtcFAxOworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHRlbXBUMiA8IHRlbXBUMSAmJiB0ZW1wUDIgPCBmMi5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wVDIgKz0gKChTdHJpbmcpZjIuZWxlbWVudEF0KHRlbXBQMikpLmxlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICsrdGVtcFAyOworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGxvZ2xuKCIqKiogIiArIGYxTmFtZSArICIgaGFzOiIpOworICAgICAgICAgICAgICAgICB3aGlsZSAocDEgPD0gdGVtcFAxICYmIHAxIDwgZjEuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICBzMSA9IChTdHJpbmcpZjEuZWxlbWVudEF0KHAxKTsKKyAgICAgICAgICAgICAgICAgICAgIHQxICs9IHMxLmxlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICAgZGVidWdMb2dsbigiICoqKiA+IiArIHMxICsgIjwiKTsKKyAgICAgICAgICAgICAgICAgICAgICsrcDE7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgbG9nbG4oIioqKioqICIgKyBmMk5hbWUgKyAiIGhhczoiKTsKKyAgICAgICAgICAgICAgICAgd2hpbGUgKHAyIDw9IHRlbXBQMiAmJiBwMiA8IGYyLnNpemUoKSkgeworICAgICAgICAgICAgICAgICAgICAgczIgPSAoU3RyaW5nKWYyLmVsZW1lbnRBdChwMik7CisgICAgICAgICAgICAgICAgICAgICB0MiArPSBzMi5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgIGRlYnVnTG9nbG4oIiAqKioqKiA+IiArIHMyICsgIjwiKTsKKyAgICAgICAgICAgICAgICAgICAgICsrcDI7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgZXJybG4oIkRpc2NyZXBhbmN5IGJldHdlZW4gIiArIGYxTmFtZSArICIgYW5kICIgKyBmMk5hbWUpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIF90ZXN0Rm9sbG93aW5nKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgcmJiaSwgU3RyaW5nIHRleHQsIGludFtdIGJvdW5kYXJpZXMpIHsKKyAgICAgICBsb2dsbigidGVzdEZvbGxvd2luZygpOiIpOworICAgICAgIGludCBwID0gMjsKKyAgICAgICBmb3IoaW50IGkgPSAwOyBpIDw9IHRleHQubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICBpZiAoaSA9PSBib3VuZGFyaWVzW3BdKQorICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICBpbnQgYiA9IHJiYmkuZm9sbG93aW5nKGkpOworICAgICAgICAgICBsb2dsbigicmJiaS5mb2xsb3dpbmcoIiArIGkgKyAiKSAtPiAiICsgYik7CisgICAgICAgICAgIGlmIChiICE9IGJvdW5kYXJpZXNbcF0pCisgICAgICAgICAgICAgICBlcnJsbigiV3JvbmcgcmVzdWx0IGZyb20gZm9sbG93aW5nKCkgZm9yICIgKyBpICsgIjogZXhwZWN0ZWQgIiArIGJvdW5kYXJpZXNbcF0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIsIGdvdCAiICsgYik7CisgICAgICAgfQorICAgfQorCisgICBwcml2YXRlIHZvaWQgX3Rlc3RQcmVjZWRpbmcoUnVsZUJhc2VkQnJlYWtJdGVyYXRvciByYmJpLCBTdHJpbmcgdGV4dCwgaW50W10gYm91bmRhcmllcykgeworICAgICAgIGxvZ2xuKCJ0ZXN0UHJlY2VkaW5nKCk6Iik7CisgICAgICAgaW50IHAgPSAwOworICAgICAgIGZvcihpbnQgaSA9IDA7IGkgPD0gdGV4dC5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgIGludCBiID0gcmJiaS5wcmVjZWRpbmcoaSk7CisgICAgICAgICAgIGxvZ2xuKCJyYmJpLnByZWNlZGluZygiICsgaSArICIpIC0+ICIgKyBiKTsKKyAgICAgICAgICAgaWYgKGIgIT0gYm91bmRhcmllc1twXSkKKyAgICAgICAgICAgICAgIGVycmxuKCJXcm9uZyByZXN1bHQgZnJvbSBwcmVjZWRpbmcoKSBmb3IgIiArIGkgKyAiOiBleHBlY3RlZCAiICsgYm91bmRhcmllc1twXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCBnb3QgIiArIGIpOworICAgICAgICAgICBpZiAoaSA9PSBib3VuZGFyaWVzW3AgKyAxXSkKKyAgICAgICAgICAgICAgICsrcDsKKyAgICAgICB9CisgICB9CisKKyAgIHByaXZhdGUgdm9pZCBfdGVzdElzQm91bmRhcnkoUnVsZUJhc2VkQnJlYWtJdGVyYXRvciByYmJpLCBTdHJpbmcgdGV4dCwgaW50W10gYm91bmRhcmllcykgeworICAgICAgIGxvZ2xuKCJ0ZXN0SXNCb3VuZGFyeSgpOiIpOworICAgICAgIGludCBwID0gMTsKKyAgICAgICBib29sZWFuIGlzQjsKKyAgICAgICBmb3IoaW50IGkgPSAwOyBpIDw9IHRleHQubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICBpc0IgPSByYmJpLmlzQm91bmRhcnkoaSk7CisgICAgICAgICAgIGxvZ2xuKCJyYmJpLmlzQm91bmRhcnkoIiArIGkgKyAiKSAtPiAiICsgaXNCKTsKKyAgICAgICAgICAgaWYoaSA9PSBib3VuZGFyaWVzW3BdKSB7CisgICAgICAgICAgICAgICBpZiAoIWlzQikKKyAgICAgICAgICAgICAgICAgICBlcnJsbigiV3JvbmcgcmVzdWx0IGZyb20gaXNCb3VuZGFyeSgpIGZvciAiICsgaSArICI6IGV4cGVjdGVkIHRydWUsIGdvdCBmYWxzZSIpOworICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICB9CisgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgaWYoaXNCKQorICAgICAgICAgICAgICAgICAgIGVycmxuKCJXcm9uZyByZXN1bHQgZnJvbSBpc0JvdW5kYXJ5KCkgZm9yICIgKyBpICsgIjogZXhwZWN0ZWQgZmFsc2UsIGdvdCB0cnVlIik7CisgICAgICAgICAgIH0KKyAgICAgICB9CisgICB9CisgICBwcml2YXRlIHZvaWQgZG9NdWx0aXBsZVNlbGVjdGlvblRlc3QoUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBpdGVyYXRvciwgU3RyaW5nIHRlc3RUZXh0KQorICAgeworICAgICAgIGxvZ2xuKCJNdWx0aXBsZSBzZWxlY3Rpb24gdGVzdC4uLiIpOworICAgICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgdGVzdEl0ZXJhdG9yID0gKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpaXRlcmF0b3IuY2xvbmUoKTsKKyAgICAgICBpbnQgb2Zmc2V0ID0gaXRlcmF0b3IuZmlyc3QoKTsKKyAgICAgICBpbnQgdGVzdE9mZnNldDsKKyAgICAgICBpbnQgY291bnQgPSAwOworCisgICAgICAgZG8geworICAgICAgICAgICB0ZXN0T2Zmc2V0ID0gdGVzdEl0ZXJhdG9yLmZpcnN0KCk7CisgICAgICAgICAgIHRlc3RPZmZzZXQgPSB0ZXN0SXRlcmF0b3IubmV4dChjb3VudCk7CisgICAgICAgICAgIGxvZ2xuKCJuZXh0KCIgKyBjb3VudCArICIpIC0+ICIgKyB0ZXN0T2Zmc2V0KTsKKyAgICAgICAgICAgaWYgKG9mZnNldCAhPSB0ZXN0T2Zmc2V0KQorICAgICAgICAgICAgICAgZXJybG4oIm5leHQobikgYW5kIG5leHQoKSBub3QgcmV0dXJuaW5nIGNvbnNpc3RlbnQgcmVzdWx0czogZm9yIHN0ZXAgIiArIGNvdW50ICsgIiwgbmV4dChuKSByZXR1cm5lZCAiICsgdGVzdE9mZnNldCArICIgYW5kIG5leHQoKSBoYWQgIiArIG9mZnNldCk7CisKKyAgICAgICAgICAgaWYgKG9mZnNldCAhPSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgICAgICAgICBvZmZzZXQgPSBpdGVyYXRvci5uZXh0KCk7CisgICAgICAgICAgIH0KKyAgICAgICB9IHdoaWxlIChvZmZzZXQgIT0gUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5ET05FKTsKKworICAgICAgIC8vIG5vdyBkbyBpdCBiYWNrd2FyZHMuLi4KKyAgICAgICBvZmZzZXQgPSBpdGVyYXRvci5sYXN0KCk7CisgICAgICAgY291bnQgPSAwOworCisgICAgICAgZG8geworICAgICAgICAgICB0ZXN0T2Zmc2V0ID0gdGVzdEl0ZXJhdG9yLmxhc3QoKTsKKyAgICAgICAgICAgdGVzdE9mZnNldCA9IHRlc3RJdGVyYXRvci5uZXh0KGNvdW50KTsKKyAgICAgICAgICAgbG9nbG4oIm5leHQoIiArIGNvdW50ICsgIikgLT4gIiArIHRlc3RPZmZzZXQpOworICAgICAgICAgICBpZiAob2Zmc2V0ICE9IHRlc3RPZmZzZXQpCisgICAgICAgICAgICAgICBlcnJsbigibmV4dChuKSBhbmQgbmV4dCgpIG5vdCByZXR1cm5pbmcgY29uc2lzdGVudCByZXN1bHRzOiBmb3Igc3RlcCAiICsgY291bnQgKyAiLCBuZXh0KG4pIHJldHVybmVkICIgKyB0ZXN0T2Zmc2V0ICsgIiBhbmQgbmV4dCgpIGhhZCAiICsgb2Zmc2V0KTsKKworICAgICAgICAgICBpZiAob2Zmc2V0ICE9IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuRE9ORSkgeworICAgICAgICAgICAgICAgY291bnQtLTsKKyAgICAgICAgICAgICAgIG9mZnNldCA9IGl0ZXJhdG9yLnByZXZpb3VzKCk7CisgICAgICAgICAgIH0KKyAgICAgICB9IHdoaWxlIChvZmZzZXQgIT0gUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5ET05FKTsKKyAgIH0KKworICAgcHJpdmF0ZSB2b2lkIGRlYnVnTG9nbG4oU3RyaW5nIHMpIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIHplcm9zID0gIjAwMDAiOworICAgICAgICBTdHJpbmcgdGVtcDsKKyAgICAgICAgU3RyaW5nQnVmZmVyIG91dCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIGNoYXIgYyA9IHMuY2hhckF0KGkpOworICAgICAgICAgICAgaWYgKGMgPj0gJyAnICYmIGMgPCAnXHUwMDdmJykKKyAgICAgICAgICAgICAgICBvdXQuYXBwZW5kKGMpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgb3V0LmFwcGVuZCgiXFx1Iik7CisgICAgICAgICAgICAgICAgdGVtcCA9IEludGVnZXIudG9IZXhTdHJpbmcoKGludCljKTsKKyAgICAgICAgICAgICAgICBvdXQuYXBwZW5kKHplcm9zLnN1YnN0cmluZygwLCA0IC0gdGVtcC5sZW5ndGgoKSkpOworICAgICAgICAgICAgICAgIG91dC5hcHBlbmQodGVtcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgIGxvZ2xuKG91dC50b1N0cmluZygpKTsKKyAgICB9CisgIAorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGVzdC9yYmJpL1NpbXBsZUJJVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vdGVzdC9yYmJpL1NpbXBsZUJJVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmNjOTIyODMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXN0L3JiYmkvU2ltcGxlQklUZXN0LmphdmEKQEAgLTAsMCArMSwxNzcgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3Rlc3QvcmJiaS9BdHRpYy9TaW1wbGVCSVRlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwMzo0Nzo0NiAkIAorICogJFJldmlzaW9uOiAxLjUgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udGVzdC5yYmJpOworCitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBjb20uaWJtLnRleHQuQnJlYWtJdGVyYXRvcjsKK2ltcG9ydCBjb20uaWJtLnRlc3QuVGVzdEZtd2s7CisKK3B1YmxpYyBjbGFzcyBTaW1wbGVCSVRlc3QgZXh0ZW5kcyBUZXN0Rm13a3sKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyB0ZXN0VGV4dCA9CisvLyAgICAgICAgIlRoZSByYWluIGluIFNwYWluIHN0YXlzIG1haW5seSBvbiB0aGUgcGxhaW4uICBUaGUgcGxhaW5zIGluIFNwYWluIGFyZSBtYWlubHkgcGFpbmVkIHdpdGggcmFpbi4iOworLy8ib25lLXR3byBub3ctLSAgSGFoISAgWW91IG93ZSBtZSBleGFjdGx5ICQxLDM0NS42Ny4uLiAgUGF5IHVwLCBodWg/ICBCeSB0aGUgd2F5LCB3aHkgZG9uJ3QgSSBzZW5kIHlvdSBteSByZVx1MDMwMXN1bWVcdTAzMDE/ICBUaGlzIGlzIGEgbGluZVxyXG5icmVhay4iOworLy8ibm93aXN0aGV0aW1lZm9yYWxsZ29vZG1lbi4uLiAgdG9jb21ldG90aGVoZWxwb2Z0aGVpcmNvdW50cnkiOworIldoZW4sIGluIHRoZSBjb3Vyc2Ugb2YgaHVtYW4gZXZlbnRzLCBpdCBiZWNvbWVzIG5lY2Vzc2FyeSBmb3Igb25lIHBlb3BsZSB0byBkaXNzb2x2ZSB0aGUgcG9saXRpY2FsIGJvbmRzIHdoaWNoIGhhdmUgIgorLy8iV2hlbixpbnRoZWNvdXJzZW9maHVtYW5ldmVudHMsaXRiZWNvbWVzbmVjZXNzYXJ5Zm9yb25lcGVvcGxldG9kaXNzb2x2ZXRoZXBvbGl0aWNhbGJvbmRzd2hpY2hoYXZlIgorKyAiY29ubmVjdGVkdGhlbXdpdGhhbm90aGVyLGFuZHRvYXNzdW1lYW1vbmd0aGVwb3dlcnNvZnRoZWVhcnRoLHRoZXNlcGFyYXRlYW5kZXF1YWxzdGF0aW9udG93aGljaHRoZWxhd3MiCisrICJvZm5hdHVyZWFuZG9mbmF0dXJlJ3NHb2RlbnRpdGxldGhlbSxhZGVjZW50cmVzcGVjdHRvdGhlb3BpbmlvbnNvZm1hbmtpbmRyZXF1aXJlc3RoYXR0aGV5c2hvdWxkZGVjbGFyZXRoZSIKKysgImNhdXNlc3doaWNoaW1wZWx0aGVtdG90aGVzZXBhcmF0aW9uXG4iCisrICJXZWhvbGR0aGVzZXRydXRoc3RvYmVzZWxmLWV2aWRlbnQsdGhhdGFsbG1lbmFyZWNyZWF0ZWRlcXVhbCx0aGF0dGhleWFyZWVuZG93ZWRieXRoZWlyQ3JlYXRvcndpdGhjZXJ0YWluIgorKyAidW5hbGllbmFibGVyaWdodHMsdGhhdGFtb25ndGhlc2VhcmVsaWZlLGxpYmVydHlhbmR0aGVwdXJzdWl0b2ZoYXBwaW5lc3MuVGhhdHRvc2VjdXJldGhlc2VyaWdodHMsZ292ZXJubWVudHNhcmUiCisrICJpbnN0aXR1dGVkYW1vbmdtZW4sZGVyaXZpbmd0aGVpcmp1c3Rwb3dlcnNmcm9tdGhlY29uc2VudG9mdGhlZ292ZXJuZWQuVGhhdHdoZW5ldmVyYW55Zm9ybW9mZ292ZXJubWVudCIKKysgImJlY29tZXNkZXN0cnVjdGl2ZXRvdGhlc2VlbmRzLGl0aXN0aGVyaWdodG9mdGhlcGVvcGxldG9hbHRlcm9ydG9hYm9saXNoaXQsYW5kdG9pbnN0aXR1dGVuZXdnb3Zlcm5tZW50LGxheWluZyIKKysgIml0c2ZvdW5kYXRpb25vbnN1Y2hwcmluY2lwbGVzYW5kb3JnYW5pemluZ2l0c3Bvd2Vyc2luc3VjaGZvcm0sYXN0b3RoZW1zaGFsbHNlZW1tb3N0bGlrZWx5dG9lZmZlY3R0aGVpcnNhZmV0eSIKKysgImFuZGhhcHBpbmVzcy5QcnVkZW5jZSxpbmRlZWQsd2lsbGRpY3RhdGV0aGF0Z292ZXJubWVudHNsb25nZXN0YWJsaXNoZWRzaG91bGRub3RiZWNoYW5nZWRmb3JsaWdodGFuZHRyYW5zaWVudCIKKysgImNhdXNlczthbmRhY2NvcmRpbmdseWFsbGV4cGVyaWVuY2VoYXRoc2hvd250aGF0bWFua2luZGFyZW1vcmVkaXNwb3NlZHRvc3VmZmVyLHdoaWxlZXZpbHNhcmVzdWZmZXJhYmxlLHRoYW4iCisrICJ0b3JpZ2h0dGhlbXNlbHZlc2J5YWJvbGlzaGluZ3RoZWZvcm1zdG93aGljaHRoZXlhcmVhY2N1c3RvbWVkLkJ1dHdoZW5hbG9uZ3RyYWlub2ZhYnVzZXNhbmR1c3VycGF0aW9ucywiCisrICJwdXJzdWluZ2ludmFyaWFibHl0aGVzYW1lb2JqZWN0ZXZpbmNlc2FkZXNpZ250b3JlZHVjZXRoZW11bmRlcmFic29sdXRlZGVzcG90aXNtLGl0aXN0aGVpcnJpZ2h0LGl0aXN0aGVpcmR1dHksIgorKyAidG90aHJvd29mZnN1Y2hnb3Zlcm5tZW50LGFuZHRvcHJvdmlkZW5ld2d1YXJkc2ZvcnRoZWlyZnV0dXJlc2VjdXJpdHkuLS1TdWNoaGFzYmVlbnRoZXBhdGllbnRzdWZmZXJhbmNlb2YiCisrICJ0aGVzZWNvbG9uaWVzO2FuZHN1Y2hpc25vd3RoZW5lY2Vzc2l0eXdoaWNoY29uc3RyYWluc3RoZW10b2FsdGVydGhlaXJmb3JtZXJzeXN0ZW1zb2Znb3Zlcm5tZW50LlRoZWhpc3RvcnkiCisrICJvZnRoZXByZXNlbnRLaW5nb2ZHcmVhdEJyaXRhaW5pc2FoaXN0b3J5b2ZyZXBlYXRlZGluanVyaWVzYW5kdXN1cnBhdGlvbnMsYWxsaGF2aW5naW5kaXJlY3RvYmplY3R0aGUiCisrICJlc3RhYmxpc2htZW50b2ZhbmFic29sdXRldHlyYW5ueW92ZXJ0aGVzZXN0YXRlcy5Ub3Byb3ZldGhpcyxsZXRmYWN0c2Jlc3VibWl0dGVkdG9hY2FuZGlkd29ybGQuXG4iCisrICJIZWhhc3JlZnVzZWRoaXNhc3NlbnR0b2xhd3MsdGhlbW9zdHdob2xlc29tZWFuZG5lY2Vzc2FyeWZvcnRoZXB1YmxpY2dvb2QuXG4iCisrICJIZWhhc2ZvcmJpZGRlbmhpc2dvdmVybm9yc3RvcGFzc2xhd3NvZmltbWVkaWF0ZWFuZHByZXNzaW5naW1wb3J0YW5jZSx1bmxlc3NzdXNwZW5kZWRpbnRoZWlyb3BlcmF0aW9udGlsbCIKKysgImhpc2Fzc2VudHNob3VsZGJlb2J0YWluZWQ7YW5kd2hlbnNvc3VzcGVuZGVkLGhlaGFzdXR0ZXJseW5lZ2xlY3RlZHRvYXR0ZW5kdG90aGVtLlxuIgorKyAiSGVoYXNyZWZ1c2VkdG9wYXNzb3RoZXJsYXdzZm9ydGhlYWNjb21tb2RhdGlvbm9mbGFyZ2VkaXN0cmljdHNvZnBlb3BsZSx1bmxlc3N0aG9zZXBlb3BsZXdvdWxkcmVsaW5xdWlzaCIKKysgInRoZXJpZ2h0b2ZyZXByZXNlbnRhdGlvbmludGhlbGVnaXNsYXR1cmUsYXJpZ2h0aW5lc3RpbWFibGV0b3RoZW1hbmRmb3JtaWRhYmxldG90eXJhbnRzb25seS5cbiIKKysgIkhlaGFzY2FsbGVkdG9nZXRoZXJsZWdpc2xhdGl2ZWJvZGllc2F0cGxhY2VzdW51c3VhbCx1bmNvbWZvcnRhYmxlLGFuZGRpc3RhbnRmcm9tdGhlZGVwb3NpdG9yeW9mdGhlaXJwdWJsaWMiCisrICJyZWNvcmRzLGZvcnRoZXNvbGVwdXJwb3Nlb2ZmYXRpZ3Vpbmd0aGVtaW50b2NvbXBsaWFuY2V3aXRoaGlzbWVhc3VyZXMuXG4iCisrICJIZWhhc2Rpc3NvbHZlZHJlcHJlc2VudGF0aXZlaG91c2VzcmVwZWF0ZWRseSxmb3JvcHBvc2luZ3dpdGhtYW5seWZpcm1uZXNzaGlzaW52YXNpb25zb250aGVyaWdodHNvZnRoZXBlb3BsZS5cbiIKKysgIkhlaGFzcmVmdXNlZGZvcmFsb25ndGltZSxhZnRlcnN1Y2hkaXNzb2x1dGlvbnMsdG9jYXVzZW90aGVyc3RvYmVlbGVjdGVkO3doZXJlYnl0aGVsZWdpc2xhdGl2ZXBvd2VycywiCisrICJpbmNhcGFibGVvZmFubmloaWxhdGlvbixoYXZlcmV0dXJuZWR0b3RoZXBlb3BsZWF0bGFyZ2Vmb3J0aGVpcmV4ZXJjaXNlO3RoZXN0YXRlcmVtYWluaW5naW50aGVtZWFudGltZWV4cG9zZWQiCisrICJ0b2FsbHRoZWRhbmdlcnNvZmludmFzaW9uZnJvbXdpdGhvdXQsYW5kY29udnVsc2lvbnN3aXRoaW4uXG4iCisrICJIZWhhc2VuZGVhdm9yZWR0b3ByZXZlbnR0aGVwb3B1bGF0aW9ub2Z0aGVzZXN0YXRlcztmb3J0aGF0cHVycG9zZW9ic3RydWN0aW5ndGhlbGF3c2Zvcm5hdHVyYWxpemF0aW9ub2YiCisrICJmb3JlaWduZXJzO3JlZnVzaW5ndG9wYXNzb3RoZXJzdG9lbmNvdXJhZ2V0aGVpcm1pZ3JhdGlvbmhpdGhlcixhbmRyYWlzaW5ndGhlY29uZGl0aW9uc29mbmV3YXBwcm9wcmlhdGlvbnNvZiIKKysgImxhbmRzLlxuIgorKyAiSGVoYXNvYnN0cnVjdGVkdGhlYWRtaW5pc3RyYXRpb25vZmp1c3RpY2UsYnlyZWZ1c2luZ2hpc2Fzc2VudHRvbGF3c2ZvcmVzdGFibGlzaGluZ2p1ZGljaWFyeXBvd2Vycy5cbiIKKysgIkhlaGFzbWFkZWp1ZGdlc2RlcGVuZGVudG9uaGlzd2lsbGFsb25lLGZvcnRoZXRlbnVyZW9mdGhlaXJvZmZpY2VzLGFuZHRoZWFtb3VudGFuZHBheW1lbnRvZnRoZWlyc2FsYXJpZXMuXG4iCisrICJIZWhhc2VyZWN0ZWRhbXVsdGl0dWRlb2ZuZXdvZmZpY2VzLGFuZHNlbnRoaXRoZXJzd2FybXNvZm9mZmljZXJzdG9oYXJhc3NvdXJwZW9wbGUsYW5kZWF0b3V0dGhlaXIiCisrICJzdWJzdGFuY2UuXG4iCisrICJIZWhhc2tlcHRhbW9uZ3VzLGludGltZXNvZnBlYWNlLHN0YW5kaW5nYXJtaWVzd2l0aG91dHRoZWNvbnNlbnRvZm91cmxlZ2lzbGF0dXJlLlxuIgorKyAiSGVoYXNhZmZlY3RlZHRvcmVuZGVydGhlbWlsaXRhcnlpbmRlcGVuZGVudG9mYW5kc3VwZXJpb3J0b2NpdmlscG93ZXIuXG4iCisrICJIZWhhc2NvbWJpbmVkd2l0aG90aGVyc3Rvc3ViamVjdHVzdG9hanVyaXNkaWN0aW9uZm9yZWlnbnRvb3VyY29uc3RpdHV0aW9uLGFuZHVuYWNrbm93bGVkZ2VkYnlvdXJsYXdzOyIKKysgImdpdmluZ2hpc2Fzc2VudHRvdGhlaXJhY3Rzb2ZwcmV0ZW5kZWRsZWdpc2xhdGlvbjpcbiIKKysgIkZvcnF1YXJ0ZXJpbmdsYXJnZWJvZGllc29mYXJtZWR0cm9vcHNhbW9uZ3VzOlxuIgorKyAiRm9ycHJvdGVjdGluZ3RoZW0sYnltb2NrdHJpYWwsZnJvbXB1bmlzaG1lbnRmb3JhbnltdXJkZXJzd2hpY2h0aGV5c2hvdWxkY29tbWl0b250aGVpbmhhYml0YW50c29mdGhlc2UiCisrICJzdGF0ZXM6XG4iCisrICJGb3JjdXR0aW5nb2Zmb3VydHJhZGV3aXRoYWxscGFydHNvZnRoZXdvcmxkOlxuIgorKyAiRm9yaW1wb3Npbmd0YXhlc29udXN3aXRob3V0b3VyY29uc2VudDpcbiIKKysgIkZvcmRlcHJpdmluZ3VzaW5tYW55Y2FzZXMsb2Z0aGViZW5lZml0c29mdHJpYWxieWp1cnk6XG4iCisrICJGb3J0cmFuc3BvcnRpbmd1c2JleW9uZHNlYXN0b2JldHJpZWRmb3JwcmV0ZW5kZWRvZmZlbnNlczpcbiIKKysgIkZvcmFib2xpc2hpbmd0aGVmcmVlc3lzdGVtb2ZFbmdsaXNobGF3c2luYW5laWdoYm9yaW5ncHJvdmluY2UsZXN0YWJsaXNoaW5ndGhlcmVpbmFuYXJiaXRyYXJ5Z292ZXJubWVudCxhbmQiCisrICJlbmxhcmdpbmdpdHNib3VuZGFyaWVzc29hc3RvcmVuZGVyaXRhdG9uY2VhbmV4YW1wbGVhbmRmaXRpbnN0cnVtZW50Zm9yaW50cm9kdWNpbmd0aGVzYW1lYWJzb2x1dGVydWxlaW50aGVzZSIKKysgImNvbG9uaWVzOlxuIgorKyAiRm9ydGFraW5nYXdheW91cmNoYXJ0ZXJzLGFib2xpc2hpbmdvdXJtb3N0dmFsdWFibGVsYXdzLGFuZGFsdGVyaW5nZnVuZGFtZW50YWxseXRoZWZvcm1zb2ZvdXJnb3Zlcm5tZW50czpcbiIKKysgIkZvcnN1c3BlbmRpbmdvdXJvd25sZWdpc2xhdHVyZXMsYW5kZGVjbGFyaW5ndGhlbXNlbHZlc2ludmVzdGVkd2l0aHBvd2VydG9sZWdpc2xhdGVmb3J1c2luYWxsY2FzZXN3aGF0c29ldmVyLlxuIgorKyAiSGVoYXNhYmRpY2F0ZWRnb3Zlcm5tZW50aGVyZSxieWRlY2xhcmluZ3Vzb3V0b2ZoaXNwcm90ZWN0aW9uYW5kd2FnaW5nd2FyYWdhaW5zdHVzLlxuIgorKyAiSGVoYXNwbHVuZGVyZWRvdXJzZWFzLHJhdmFnZWRvdXJjb2FzdHMsYnVybmVkb3VydG93bnMsYW5kZGVzdHJveWVkdGhlbGl2ZXNvZm91cnBlb3BsZS5cbiIKKysgIkhlaXNhdHRoaXN0aW1ldHJhbnNwb3J0aW5nbGFyZ2Vhcm1pZXNvZmZvcmVpZ25tZXJjZW5hcmllc3RvY29tcGxldGV0aGV3b3Jrc29mZGVhdGgsZGVzb2xhdGlvbmFuZHR5cmFubnksIgorKyAiYWxyZWFkeWJlZ3Vud2l0aGNpcmN1bXN0YW5jZXNvZmNydWVsdHlhbmRwZXJmaWR5c2NhcmNlbHlwYXJhbGxlbGVkaW50aGVtb3N0YmFyYmFyb3VzYWdlcyxhbmR0b3RhbHl1bndvcnRoIgorKyAidGhlaGVhZG9mYWNpdmlsaXplZG5hdGlvbi5cbiIKKysgIkhlaGFzY29uc3RyYWluZWRvdXJmZWxsb3djaXRpemVuc3Rha2VuY2FwdGl2ZW9udGhlaGlnaHNlYXN0b2JlYXJhcm1zYWdhaW5zdHRoZWlyY291bnRyeSx0b2JlY29tZXRoZSIKKysgImV4ZWN1dGlvbmVyc29mdGhlaXJmcmllbmRzYW5kYnJldGhyZW4sb3J0b2ZhbGx0aGVtc2VsdmVzYnl0aGVpcmhhbmRzLlxuIgorKyAiSGVoYXNleGNpdGVkZG9tZXN0aWNpbnN1cnJlY3Rpb25zYW1vbmdzdHVzLGFuZGhhc2VuZGVhdm9yZWR0b2JyaW5nb250aGVpbmhhYml0YW50c29mb3VyZnJvbnRpZXJzLHRoZSIKKysgIm1lcmNpbGVzc0luZGlhbnNhdmFnZXMsd2hvc2Vrbm93bnJ1bGVvZndhcmZhcmUsaXN1bmRpc3Rpbmd1aXNoZWRkZXN0cnVjdGlvbm9mYWxsYWdlcyxzZXhlc2FuZGNvbmRpdGlvbnMuXG4iCisrICJJbmV2ZXJ5c3RhZ2VvZnRoZXNlb3BwcmVzc2lvbnN3ZWhhdmVwZXRpdGlvbmVkZm9ycmVkcmVzc2ludGhlbW9zdGh1bWJsZXRlcm1zOm91cnJlcGVhdGVkcGV0aXRpb25zaGF2ZSIKKysgImJlZW5hbnN3ZXJlZG9ubHlieXJlcGVhdGVkaW5qdXJ5LkFwcmluY2Usd2hvc2VjaGFyYWN0ZXJpc3RodXNtYXJrZWRieWV2ZXJ5YWN0d2hpY2htYXlkZWZpbmVhdHlyYW50LGlzIgorKyAidW5maXR0b2JldGhlcnVsZXJvZmFmcmVlcGVvcGxlLlxuIgorKyAiTm9yaGF2ZXdlYmVlbndhbnRpbmdpbmF0dGVudGlvbnRvb3VyQnJpdGlzaGJyZXRocmVuLldlaGF2ZXdhcm5lZHRoZW1mcm9tdGltZXRvdGltZW9mYXR0ZW1wdHNieXRoZWlyIgorKyAibGVnaXNsYXR1cmV0b2V4dGVuZGFudW53YXJyYW50YWJsZWp1cmlzZGljdGlvbm92ZXJ1cy5XZWhhdmVyZW1pbmRlZHRoZW1vZnRoZWNpcmN1bXN0YW5jZXNvZm91cmVtaWdyYXRpb24iCisrICJhbmRzZXR0bGVtZW50aGVyZS5XZWhhdmVhcHBlYWxlZHRvdGhlaXJuYXRpdmVqdXN0aWNlYW5kbWFnbmFuaW1pdHksYW5kd2VoYXZlY29uanVyZWR0aGVtYnl0aGV0aWVzb2ZvdXIiCisrICJjb21tb25raW5kcmVkdG9kaXNhdm93dGhlc2V1c3VycGF0aW9ucyx3aGljaCx3b3VsZGluZXZpdGFibHlpbnRlcnJ1cHRvdXJjb25uZWN0aW9uc2FuZGNvcnJlc3BvbmRlbmNlLldlIgorKyAibXVzdCx0aGVyZWZvcmUsYWNxdWllc2NlaW50aGVuZWNlc3NpdHksd2hpY2hkZW5vdW5jZXNvdXJzZXBhcmF0aW9uLGFuZGhvbGR0aGVtLGFzd2Vob2xkdGhlcmVzdG9mbWFua2luZCwiCisrICJlbmVtaWVzaW53YXIsaW5wZWFjZWZyaWVuZHMuXG4iCisrICJXZSx0aGVyZWZvcmUsdGhlcmVwcmVzZW50YXRpdmVzb2Z0aGVVbml0ZWRTdGF0ZXNvZkFtZXJpY2EsaW5HZW5lcmFsQ29uZ3Jlc3MsYXNzZW1ibGVkLGFwcGVhbGluZ3RvdGhlIgorKyAiU3VwcmVtZUp1ZGdlb2Z0aGV3b3JsZGZvcnRoZXJlY3RpdHVkZW9mb3VyaW50ZW50aW9ucyxkbyxpbnRoZW5hbWUsYW5kYnl0aGVhdXRob3JpdHlvZnRoZWdvb2RwZW9wbGVvZiIKKysgInRoZXNlY29sb25pZXMsc29sZW1ubHlwdWJsaXNoYW5kZGVjbGFyZSx0aGF0dGhlc2V1bml0ZWRjb2xvbmllc2FyZSxhbmRvZnJpZ2h0b3VnaHR0b2JlZnJlZWFuZGluZGVwZW5kZW50IgorKyAic3RhdGVzO3RoYXR0aGV5YXJlYWJzb2x2ZWRmcm9tYWxsYWxsZWdpYW5jZXRvdGhlQnJpdGlzaENyb3duLGFuZHRoYXRhbGxwb2xpdGljYWxjb25uZWN0aW9uYmV0d2VlbnRoZW1hbmR0aGUiCisrICJzdGF0ZW9mR3JlYXRCcml0YWluLGlzYW5kb3VnaHR0b2JldG90YWxseWRpc3NvbHZlZDthbmR0aGF0YXNmcmVlYW5kaW5kZXBlbmRlbnRzdGF0ZXMsdGhleWhhdmVmdWxscG93ZXJ0byIKKysgImxldmV5d2FyLGNvbmNsdWRlcGVhY2UsY29udHJhY3RhbGxpYW5jZXMsZXN0YWJsaXNoY29tbWVyY2UsYW5kdG9kb2FsbG90aGVyYWN0c2FuZHRoaW5nc3doaWNoaW5kZXBlbmRlbnQiCisrICJzdGF0ZXNtYXlvZnJpZ2h0ZG8uQW5kZm9ydGhlc3VwcG9ydG9mdGhpc2RlY2xhcmF0aW9uLHdpdGhhZmlybXJlbGlhbmNlb250aGVwcm90ZWN0aW9ub2ZEaXZpbmVQcm92aWRlbmNlLHdlIgorKyAibXV0dWFsbHlwbGVkZ2V0b2VhY2hvdGhlcm91cmxpdmVzLG91cmZvcnR1bmVzYW5kb3Vyc2FjcmVkaG9ub3IuXG4iOworCisJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCW5ldyBTaW1wbGVCSVRlc3QoKS5ydW4oYXJncyk7CisJfQorCisgICAgcHVibGljIHZvaWQgdGVzdFdvcmRCcmVhaygpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBCcmVha0l0ZXJhdG9yIHdvcmRCcmVhayA9IEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKG5ldyBMb2NhbGUoImVuIiwgIlVTIiwgIlRFU1QiKSk7CisgICAgICAgIGludCBicmVha3MgPSBkb1Rlc3Qod29yZEJyZWFrKTsKKyAgICAgICAgbG9nbG4oU3RyaW5nLnZhbHVlT2YoYnJlYWtzKSk7CisJfQorCisgICAgcHVibGljIHZvaWQgdGVzdExpbmVCcmVhaygpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBCcmVha0l0ZXJhdG9yIGxpbmVCcmVhayA9IEJyZWFrSXRlcmF0b3IuZ2V0TGluZUluc3RhbmNlKG5ldyBMb2NhbGUoImVuIiwgIlVTIiwgIlRFU1QiKSk7CisgICAgICAgIGludCBicmVha3MgPSBkb1Rlc3QobGluZUJyZWFrKTsKKyAgICAgICAgbG9nbG4oU3RyaW5nLnZhbHVlT2YoYnJlYWtzKSk7CisJfQorCisgICAgcHVibGljIHZvaWQgdGVzdFNlbnRlbmNlQnJlYWsoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgQnJlYWtJdGVyYXRvciBzZW50ZW5jZUJyZWFrID0gQnJlYWtJdGVyYXRvci5nZXRTZW50ZW5jZUluc3RhbmNlKG5ldyBMb2NhbGUoImVuIiwgIlVTIiwgIlRFU1QiKSk7CisgICAgICAgIGludCBicmVha3MgPSBkb1Rlc3Qoc2VudGVuY2VCcmVhayk7CisgICAgICAgIGxvZ2xuKFN0cmluZy52YWx1ZU9mKGJyZWFrcykpOworICAgIH0KKworICAgIHByaXZhdGUgaW50IGRvVGVzdChCcmVha0l0ZXJhdG9yIGJpKSB7CisgICAgICAgIC8vIGZvcndhcmQKKyAgICAgICAgYmkuc2V0VGV4dCh0ZXN0VGV4dCk7CisgICAgICAgIGludCBwID0gYmkuZmlyc3QoKTsKKyAgICAgICAgaW50IGxhc3RQID0gcDsKKyAgICAgICAgU3RyaW5nIGZyYWdtZW50OworICAgICAgICBpbnQgYnJlYWtzID0gMDsKKyAgICAgICAgbG9nbG4oIkZvcndhcmQuLi4iKTsKKyAgICAgICAgd2hpbGUgKHAgIT0gQnJlYWtJdGVyYXRvci5ET05FKSB7CisgICAgICAgICAgICBwID0gYmkubmV4dCgpOworICAgICAgICAgICAgaWYgKHAgIT0gQnJlYWtJdGVyYXRvci5ET05FKSB7CisgICAgICAgICAgICAgICAgZnJhZ21lbnQgPSB0ZXN0VGV4dC5zdWJzdHJpbmcobGFzdFAsIHApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBmcmFnbWVudCA9IHRlc3RUZXh0LnN1YnN0cmluZyhsYXN0UCk7CisJCQl9CisgICAgICAgICAgICBkZWJ1Z1ByaW50bG4oIjogPiIgKyBmcmFnbWVudCArICI8Iik7CisgICAgICAgICAgICArK2JyZWFrczsKKyAgICAgICAgICAgIGxhc3RQID0gcDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnJlYWtzOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBkZWJ1Z1ByaW50bG4oU3RyaW5nIHMpIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIHplcm9zID0gIjAwMDAiOworICAgICAgICBTdHJpbmcgdGVtcDsKKyAgICAgICAgU3RyaW5nQnVmZmVyIG91dCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIGNoYXIgYyA9IHMuY2hhckF0KGkpOworICAgICAgICAgICAgaWYgKGMgPj0gJyAnICYmIGMgPCAnXHUwMDdmJykKKyAgICAgICAgICAgICAgICBvdXQuYXBwZW5kKGMpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgb3V0LmFwcGVuZCgiXFx1Iik7CisgICAgICAgICAgICAgICAgdGVtcCA9IEludGVnZXIudG9IZXhTdHJpbmcoKGludCljKTsKKyAgICAgICAgICAgICAgICBvdXQuYXBwZW5kKHplcm9zLnN1YnN0cmluZygwLCA0IC0gdGVtcC5sZW5ndGgoKSkpOworICAgICAgICAgICAgICAgIG91dC5hcHBlbmQodGVtcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbG9nbG4ob3V0LnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBkZWJ1Z1ByaW50bG4yKFN0cmluZyBzKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBvdXQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICBjaGFyIGMgPSBzLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGlmIChjID49ICdcdTAxMDAnKQorICAgICAgICAgICAgICAgIG91dC5hcHBlbmQoIjwiICsgKChpbnQpYyAtIDB4MTAwKSArICI+Iik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb3V0LmFwcGVuZChjKTsKKyAgICAgICAgfQorICAgICAgICBsb2dsbihvdXQudG9TdHJpbmcoKSk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXN0L3JiYmkvcGFja2FnZS5odG1sIGIvc3JjL2NvbS9pYm0vdGVzdC9yYmJpL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42MzZhY2ZkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGVzdC9yYmJpL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPCEtLSAgQ29weXJpZ2h0IChDKSAyMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorICBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGVzdC9yYmJpL0F0dGljL3BhY2thZ2UuaHRtbCx2ICQKKyAgJFJldmlzaW9uOiAxLjEgJAorICAkRGF0ZTogMjAwMC8wMy8xNSAyMTozNTo0OSAkCistLT4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIj4KK1Rlc3RzIGZvciB0aGUgUnVsZUJhc2VkQnJlYWtJdGVyYXRvci4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXN0L3JibmYvUmJuZlJvdW5kVHJpcFRlc3QuamF2YSBiL3NyYy9jb20vaWJtL3Rlc3QvcmJuZi9SYm5mUm91bmRUcmlwVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI1MDU0MDIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXN0L3JibmYvUmJuZlJvdW5kVHJpcFRlc3QuamF2YQpAQCAtMCwwICsxLDIyMCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGVzdC9yYm5mL0F0dGljL1JibmZSb3VuZFRyaXBUZXN0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDMvMTAgMDM6NDc6NDcgJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRlc3QucmJuZjsKKworaW1wb3J0IGNvbS5pYm0udGV4dC5SdWxlQmFzZWROdW1iZXJGb3JtYXQ7CitpbXBvcnQgY29tLmlibS50ZXN0LlRlc3RGbXdrOworCitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnRleHQuTnVtYmVyRm9ybWF0OworCitwdWJsaWMgY2xhc3MgUmJuZlJvdW5kVHJpcFRlc3QgZXh0ZW5kcyBUZXN0Rm13ayB7CisgICAgLyoqCisgICAgICogUHV0cyBhIGNvcHlyaWdodCBpbiB0aGUgLmNsYXNzIGZpbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0Tm90aWNlCisgICAgICAgID0gIkNvcHlyaWdodCBcdTAwYTkxOTk3LTE5OTggSUJNIENvcnAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIFJibmZSb3VuZFRyaXBUZXN0IHRlc3QgPSBuZXcgUmJuZlJvdW5kVHJpcFRlc3QoKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgdGVzdC5ydW4oYXJncyk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKFRocm93YWJsZSBlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkVudGlyZSB0ZXN0IGZhaWxlZCBiZWNhdXNlIG9mIGV4Y2VwdGlvbjogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQZXJmb3JtIGFuIGV4aGF1c3RpdmUgcm91bmQtdHJpcCB0ZXN0IG9uIHRoZSBFbmdsaXNoIHNwZWxsb3V0IHJ1bGVzCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEVuZ2xpc2hTcGVsbG91dFJUKCkgeworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyCisgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQoTG9jYWxlLlVTLAorICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LlNQRUxMT1VUKTsKKworICAgICAgICBkb1Rlc3QoZm9ybWF0dGVyLCAtMTIzNDU2NzgsIDEyMzQ1Njc4KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQZXJmb3JtIGFuIGV4aGF1c3RpdmUgcm91bmQtdHJpcCB0ZXN0IG9uIHRoZSBkdXJhdGlvbi1mb3JtYXR0aW5nIHJ1bGVzCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdER1cmF0aW9uc1JUKCkgeworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyCisgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQoTG9jYWxlLlVTLAorICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LkRVUkFUSU9OKTsKKworICAgICAgICBkb1Rlc3QoZm9ybWF0dGVyLCAwLCAxMjM0NTY3OCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGVyZm9ybSBhbiBleGhhdXN0aXZlIHJvdW5kLXRyaXAgdGVzdCBvbiB0aGUgU3BhbmlzaCBzcGVsbG91dCBydWxlcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RTcGFuaXNoU3BlbGxvdXRSVCgpIHsKKyAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlcgorICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KG5ldyBMb2NhbGUoImVzIiwgImVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICIiKSwgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LlNQRUxMT1VUKTsKKworICAgICAgICBkb1Rlc3QoZm9ybWF0dGVyLCAtMTIzNDU2NzgsIDEyMzQ1Njc4KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQZXJmb3JtIGFuIGV4aGF1c3RpdmUgcm91bmQtdHJpcCB0ZXN0IG9uIHRoZSBGcmVuY2ggc3BlbGxvdXQgcnVsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0RnJlbmNoU3BlbGxvdXRSVCgpIHsKKyAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlcgorICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KExvY2FsZS5GUkFOQ0UsCisgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQuU1BFTExPVVQpOworCisgICAgICAgIGRvVGVzdChmb3JtYXR0ZXIsIC0xMjM0NTY3OCwgMTIzNDU2NzgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFBlcmZvcm0gYW4gZXhoYXVzdGl2ZSByb3VuZC10cmlwIHRlc3Qgb24gdGhlIFN3aXNzIEZyZW5jaCBzcGVsbG91dCBydWxlcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RTd2lzc0ZyZW5jaFNwZWxsb3V0UlQoKSB7CisgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChuZXcgTG9jYWxlKCJmciIsICJDSCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiIiksIFJ1bGVCYXNlZE51bWJlckZvcm1hdC5TUEVMTE9VVCk7CisKKyAgICAgICAgZG9UZXN0KGZvcm1hdHRlciwgLTEyMzQ1Njc4LCAxMjM0NTY3OCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGVyZm9ybSBhbiBleGhhdXN0aXZlIHJvdW5kLXRyaXAgdGVzdCBvbiB0aGUgSXRhbGlhbiBzcGVsbG91dCBydWxlcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RJdGFsaWFuU3BlbGxvdXRSVCgpIHsKKyAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlcgorICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KExvY2FsZS5JVEFMSUFOLAorICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LlNQRUxMT1VUKTsKKworICAgICAgICBkb1Rlc3QoZm9ybWF0dGVyLCAtOTk5OTk5LCA5OTk5OTkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFBlcmZvcm0gYW4gZXhoYXVzdGl2ZSByb3VuZC10cmlwIHRlc3Qgb24gdGhlIEdlcm1hbiBzcGVsbG91dCBydWxlcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RHZXJtYW5TcGVsbG91dFJUKCkgeworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyCisgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQoTG9jYWxlLkdFUk1BTlksCisgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQuU1BFTExPVVQpOworCisgICAgICAgIGRvVGVzdChmb3JtYXR0ZXIsIDAsIDEyMzQ1Njc4KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQZXJmb3JtIGFuIGV4aGF1c3RpdmUgcm91bmQtdHJpcCB0ZXN0IG9uIHRoZSBTd2VkaXNoIHNwZWxsb3V0IHJ1bGVzCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFN3ZWRpc2hTcGVsbG91dFJUKCkgeworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyCisgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQobmV3IExvY2FsZSgic3YiLCAiU0UiLAorICAgICAgICAgICAgICAgICAgICAgICAgIiIpLCBSdWxlQmFzZWROdW1iZXJGb3JtYXQuU1BFTExPVVQpOworCisgICAgICAgIGRvVGVzdChmb3JtYXR0ZXIsIDAsIDEyMzQ1Njc4KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQZXJmb3JtIGFuIGV4aGF1c3RpdmUgcm91bmQtdHJpcCB0ZXN0IG9uIHRoZSBEdXRjaCBzcGVsbG91dCBydWxlcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3REdXRjaFNwZWxsb3V0UlQoKSB7CisgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChuZXcgTG9jYWxlKCJubCIsICJOTCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiIiksIFJ1bGVCYXNlZE51bWJlckZvcm1hdC5TUEVMTE9VVCk7CisKKyAgICAgICAgZG9UZXN0KGZvcm1hdHRlciwgLTEyMzQ1Njc4LCAxMjM0NTY3OCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGVyZm9ybSBhbiBleGhhdXN0aXZlIHJvdW5kLXRyaXAgdGVzdCBvbiB0aGUgSmFwYW5lc2Ugc3BlbGxvdXQgcnVsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0SmFwYW5lc2VTcGVsbG91dFJUKCkgeworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyCisgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQoTG9jYWxlLkpBUEFOLAorICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LlNQRUxMT1VUKTsKKworICAgICAgICBkb1Rlc3QoZm9ybWF0dGVyLCAwLCAxMjM0NTY3OCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGVyZm9ybSBhbiBleGhhdXN0aXZlIHJvdW5kLXRyaXAgdGVzdCBvbiB0aGUgUnVzc2lhbiBzcGVsbG91dCBydWxlcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RSdXNzaWFuU3BlbGxvdXRSVCgpIHsKKyAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlcgorICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KG5ldyBMb2NhbGUoInJ1IiwgIlJVIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICIiKSwgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LlNQRUxMT1VUKTsKKworICAgICAgICBkb1Rlc3QoZm9ybWF0dGVyLCAwLCAxMjM0NTY3OCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGVyZm9ybSBhbiBleGhhdXN0aXZlIHJvdW5kLXRyaXAgdGVzdCBvbiB0aGUgR3JlZWsgc3BlbGxvdXQgcnVsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0R3JlZWtTcGVsbG91dFJUKCkgeworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyCisgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQobmV3IExvY2FsZSgiZWwiLCAiR1IiLAorICAgICAgICAgICAgICAgICAgICAgICAgIiIpLCBSdWxlQmFzZWROdW1iZXJGb3JtYXQuU1BFTExPVVQpOworCisgICAgICAgIGRvVGVzdChmb3JtYXR0ZXIsIDAsIDEyMzQ1Njc4KTsKKyAgICB9CisKKyAgICB2b2lkIGRvVGVzdChSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyLCAgbG9uZyBsb3dMaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgbG9uZyBoaWdoTGltaXQpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGxvbmcgY291bnQgPSAwOworICAgICAgICAgICAgbG9uZyBpbmNyZW1lbnQgPSAxOworICAgICAgICAgICAgZm9yIChsb25nIGkgPSBsb3dMaW1pdDsgaSA8PSBoaWdoTGltaXQ7IGkgKz0gaW5jcmVtZW50KSB7CisgICAgICAgICAgICAgICAgaWYgKGNvdW50ICUgMTAwMCA9PSAwKQorICAgICAgICAgICAgICAgICAgICBsb2dsbihMb25nLnRvU3RyaW5nKGkpKTsKKworICAgICAgICAgICAgICAgIGlmIChNYXRoLmFicyhpKSA8IDUwMDApCisgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudCA9IDE7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoTWF0aC5hYnMoaSkgPCA1MDAwMDApCisgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudCA9IDI3Mzc7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnQgPSAyNjc0Mzc7CisKKyAgICAgICAgICAgICAgICBTdHJpbmcgdGV4dCA9IGZvcm1hdHRlci5mb3JtYXQoaSk7CisgICAgICAgICAgICAgICAgbG9uZyBydCA9IGZvcm1hdHRlci5wYXJzZSh0ZXh0KS5sb25nVmFsdWUoKTsKKworICAgICAgICAgICAgICAgIGlmIChydCAhPSBpKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJSb3VuZC10cmlwIGZhaWxlZDogIiArIGkgKyAiIC0+ICIgKyB0ZXh0ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgLT4gIiArIHJ0KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICArK2NvdW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobG93TGltaXQgPCAwKSB7CisgICAgICAgICAgICAgICAgZG91YmxlIGQgPSAxLjIzNDsKKyAgICAgICAgICAgICAgICB3aGlsZSAoZCA8IDEwMDApIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHRleHQgPSBmb3JtYXR0ZXIuZm9ybWF0KGQpOworICAgICAgICAgICAgICAgICAgICBkb3VibGUgcnQgPSBmb3JtYXR0ZXIucGFyc2UodGV4dCkuZG91YmxlVmFsdWUoKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAocnQgIT0gZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIlJvdW5kLXRyaXAgZmFpbGVkOiAiICsgZCArICIgLT4gIiArIHRleHQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgLT4gIiArIHJ0KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkICo9IDEwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoVGhyb3dhYmxlIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJUZXN0IGZhaWxlZCB3aXRoIGV4Y2VwdGlvbjogIiArIGUudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOworICAgICAgICB9CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXN0L3JibmYvUmJuZlRlc3QuamF2YSBiL3NyYy9jb20vaWJtL3Rlc3QvcmJuZi9SYm5mVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZlOWJhMzQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXN0L3JibmYvUmJuZlRlc3QuamF2YQpAQCAtMCwwICsxLDM5MCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGVzdC9yYm5mL0F0dGljL1JibmZUZXN0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDMvMTAgMDM6NDc6NDcgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRlc3QucmJuZjsKKworaW1wb3J0IGNvbS5pYm0udGV4dC5SdWxlQmFzZWROdW1iZXJGb3JtYXQ7CitpbXBvcnQgY29tLmlibS50ZXN0LlRlc3RGbXdrOworCitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnRleHQuTnVtYmVyRm9ybWF0OworCitwdWJsaWMgY2xhc3MgUmJuZlRlc3QgZXh0ZW5kcyBUZXN0Rm13ayB7CisgICAgLyoqCisgICAgICogUHV0cyBhIGNvcHlyaWdodCBpbiB0aGUgLmNsYXNzIGZpbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0Tm90aWNlCisgICAgICAgID0gIkNvcHlyaWdodCBcdTAwYTkxOTk3LTE5OTkgSUJNIENvcnAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisgICAgICAgIFJibmZUZXN0IHRlc3QgPSBuZXcgUmJuZlRlc3QoKTsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgdGVzdC5ydW4oYXJncyk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKFRocm93YWJsZSBlKSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkVudGlyZSB0ZXN0IGZhaWxlZCBiZWNhdXNlIG9mIGV4Y2VwdGlvbjogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQZXJmb3JtIGEgc2ltcGxlIHNwb3QgY2hlY2sgb24gdGhlIEVuZ2xpc2ggc3BlbGxvdXQgcnVsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0RW5nbGlzaFNwZWxsb3V0KCkgeworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyCisgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQoTG9jYWxlLlVTLAorICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LlNQRUxMT1VUKTsKKyAgICAgICAgU3RyaW5nW11bXSB0ZXN0RGF0YSA9IHsKKyAgICAgICAgICAgIHsgIjEiLCAib25lIiB9LAorICAgICAgICAgICAgeyAiMTUiLCAiZmlmdGVlbiIgfSwKKyAgICAgICAgICAgIHsgIjIwIiwgInR3ZW50eSIgfSwKKyAgICAgICAgICAgIHsgIjIzIiwgInR3ZW50eS10aHJlZSIgfSwKKyAgICAgICAgICAgIHsgIjczIiwgInNldmVudHktdGhyZWUiIH0sCisgICAgICAgICAgICB7ICI4OCIsICJlaWdodHktZWlnaHQiIH0sCisgICAgICAgICAgICB7ICIxMDAiLCAib25lIGh1bmRyZWQiIH0sCisgICAgICAgICAgICB7ICIxMDYiLCAib25lIGh1bmRyZWQgYW5kIHNpeCIgfSwKKyAgICAgICAgICAgIHsgIjEyNyIsICJvbmUgaHVuZHJlZCBhbmQgdHdlbnR5LXNldmVuIiB9LAorICAgICAgICAgICAgeyAiMjAwIiwgInR3byBodW5kcmVkIiB9LAorICAgICAgICAgICAgeyAiNTc5IiwgImZpdmUgaHVuZHJlZCBhbmQgc2V2ZW50eS1uaW5lIiB9LAorICAgICAgICAgICAgeyAiMSwwMDAiLCAib25lIHRob3VzYW5kIiB9LAorICAgICAgICAgICAgeyAiMiwwMDAiLCAidHdvIHRob3VzYW5kIiB9LAorICAgICAgICAgICAgeyAiMywwMDQiLCAidGhyZWUgdGhvdXNhbmQgYW5kIGZvdXIiIH0sCisgICAgICAgICAgICB7ICI0LDU2NyIsICJmb3VyIHRob3VzYW5kIGZpdmUgaHVuZHJlZCBhbmQgc2l4dHktc2V2ZW4iIH0sCisgICAgICAgICAgICB7ICIxNSw5NDMiLCAiZmlmdGVlbiB0aG91c2FuZCBuaW5lIGh1bmRyZWQgYW5kIGZvcnR5LXRocmVlIiB9LAorICAgICAgICAgICAgeyAiMiwzNDUsNjc4IiwgInR3byBtaWxsaW9uLCB0aHJlZSBodW5kcmVkIGFuZCBmb3J0eS1maXZlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgInRob3VzYW5kLCBzaXggaHVuZHJlZCBhbmQgc2V2ZW50eS1laWdodCIgfSwKKyAgICAgICAgICAgIHsgIi0zNiIsICJtaW51cyB0aGlydHktc2l4IiB9LAorICAgICAgICAgICAgeyAiMjM0LjU2NyIsICJ0d28gaHVuZHJlZCBhbmQgdGhpcnR5LWZvdXIgcG9pbnQgZml2ZSBzaXggc2V2ZW4iIH0KKyAgICAgICAgfTsKKworICAgICAgICBkb1Rlc3QoZm9ybWF0dGVyLCB0ZXN0RGF0YSwgdHJ1ZSk7CisKKyAgICAgICAgZm9ybWF0dGVyLnNldExlbmllbnRQYXJzZU1vZGUodHJ1ZSk7CisgICAgICAgIFN0cmluZ1tdW10gbHBUZXN0RGF0YSA9IHsKKyAgICAgICAgICAgIHsgIkZPdXJodW5kcmVkICAgICB0aGlSVFkgc2l4IiwgIjQzNiIgfSwKKyAgICAgICAgICAgIHsgIjIgdGhvdXNhbmQgc2l4IEhVTkRSRUQgZmlmdHktNyIsICIyLDY1NyIgfSwKKyAgICAgICAgICAgIHsgImZpZnRlZW4gaHVuZHJlZCBhbmQgemVybyIsICIxLDUwMCIgfQorICAgICAgICB9OworICAgICAgICBkb0xlbmllbnRQYXJzZVRlc3QoZm9ybWF0dGVyLCBscFRlc3REYXRhKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQZXJmb3JtIGEgc2ltcGxlIHNwb3QgY2hlY2sgb24gdGhlIEVuZ2xpc2ggb3JkaW5hbC1hYmJyZXZpYXRpb24gcnVsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0T3JkaW5hbEFiYnJldmlhdGlvbnMoKSB7CisgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgID0gbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChMb2NhbGUuVVMsCisgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQuT1JESU5BTCk7CisgICAgICAgIFN0cmluZ1tdW10gdGVzdERhdGEgPSB7CisgICAgICAgICAgICB7ICIxIiwgIjFzdCIgfSwKKyAgICAgICAgICAgIHsgIjIiLCAiMm5kIiB9LAorICAgICAgICAgICAgeyAiMyIsICIzcmQiIH0sCisgICAgICAgICAgICB7ICI0IiwgIjR0aCIgfSwKKyAgICAgICAgICAgIHsgIjciLCAiN3RoIiB9LAorICAgICAgICAgICAgeyAiMTAiLCAiMTB0aCIgfSwKKyAgICAgICAgICAgIHsgIjExIiwgIjExdGgiIH0sCisgICAgICAgICAgICB7ICIxMyIsICIxM3RoIiB9LAorICAgICAgICAgICAgeyAiMjAiLCAiMjB0aCIgfSwKKyAgICAgICAgICAgIHsgIjIxIiwgIjIxc3QiIH0sCisgICAgICAgICAgICB7ICIyMiIsICIyMm5kIiB9LAorICAgICAgICAgICAgeyAiMjMiLCAiMjNyZCIgfSwKKyAgICAgICAgICAgIHsgIjI0IiwgIjI0dGgiIH0sCisgICAgICAgICAgICB7ICIzMyIsICIzM3JkIiB9LAorICAgICAgICAgICAgeyAiMTAyIiwgIjEwMm5kIiB9LAorICAgICAgICAgICAgeyAiMzEyIiwgIjMxMnRoIiB9LAorICAgICAgICAgICAgeyAiMTIsMzQ1IiwgIjEyLDM0NXRoIiB9CisgICAgICAgIH07CisKKyAgICAgICAgZG9UZXN0KGZvcm1hdHRlciwgdGVzdERhdGEsIGZhbHNlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQZXJmb3JtIGEgc2ltcGxlIHNwb3QgY2hlY2sgb24gdGhlIGR1cmF0aW9uLWZvcm1hdHRpbmcgcnVsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0RHVyYXRpb25zKCkgeworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyCisgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQoTG9jYWxlLlVTLAorICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LkRVUkFUSU9OKTsKKyAgICAgICAgU3RyaW5nW11bXSB0ZXN0RGF0YSA9IHsKKyAgICAgICAgICAgIHsgIjMsNjAwIiwgIjE6MDA6MDAiIH0sCQkvL21vdmUgbWUgYW5kIEkgZmFpbAorICAgICAgICAgICAgeyAiMCIsICIwIHNlYy4iIH0sCisgICAgICAgICAgICB7ICIxIiwgIjEgc2VjLiIgfSwKKyAgICAgICAgICAgIHsgIjI0IiwgIjI0IHNlYy4iIH0sCisgICAgICAgICAgICB7ICI2MCIsICIxOjAwIiB9LAorICAgICAgICAgICAgeyAiNzMiLCAiMToxMyIgfSwKKyAgICAgICAgICAgIHsgIjE0NSIsICIyOjI1IiB9LAorICAgICAgICAgICAgeyAiNjY2IiwgIjExOjA2IiB9LAorLy8gICAgICAgICAgICB7ICIzLDYwMCIsICIxOjAwOjAwIiB9LAorICAgICAgICAgICAgeyAiMyw3NDAiLCAiMTowMjoyMCIgfSwKKyAgICAgICAgICAgIHsgIjEwLDI5MyIsICIyOjUxOjMzIiB9CisgICAgICAgIH07CisKKyAgICAgICAgZG9UZXN0KGZvcm1hdHRlciwgdGVzdERhdGEsIHRydWUpOworCisgICAgICAgIGZvcm1hdHRlci5zZXRMZW5pZW50UGFyc2VNb2RlKHRydWUpOworICAgICAgICBTdHJpbmdbXVtdIGxwVGVzdERhdGEgPSB7CisgICAgICAgICAgICB7ICIyLTUxLTMzIiwgIjEwLDI5MyIgfQorICAgICAgICB9OworICAgICAgICBkb0xlbmllbnRQYXJzZVRlc3QoZm9ybWF0dGVyLCBscFRlc3REYXRhKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQZXJmb3JtIGEgc2ltcGxlIHNwb3QgY2hlY2sgb24gdGhlIFNwYW5pc2ggc3BlbGxvdXQgcnVsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0U3BhbmlzaFNwZWxsb3V0KCkgeworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyCisgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQobmV3IExvY2FsZSgiZXMiLCAiZXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIiIpLCBSdWxlQmFzZWROdW1iZXJGb3JtYXQuU1BFTExPVVQpOworICAgICAgICBTdHJpbmdbXVtdIHRlc3REYXRhID0geworICAgICAgICAgICAgeyAiMSIsICJ1bm8iIH0sCisgICAgICAgICAgICB7ICI2IiwgInNlaXMiIH0sCisgICAgICAgICAgICB7ICIxNiIsICJkaWVjaXNcdTAwZTlpcyIgfSwKKyAgICAgICAgICAgIHsgIjIwIiwgInZlaW50ZSIgfSwKKyAgICAgICAgICAgIHsgIjI0IiwgInZlaW50aWN1YXRybyIgfSwKKyAgICAgICAgICAgIHsgIjI2IiwgInZlaW50aXNcdTAwZTlpcyIgfSwKKyAgICAgICAgICAgIHsgIjczIiwgInNldGVudGEgeSB0cmVzIiB9LAorICAgICAgICAgICAgeyAiODgiLCAib2NoZW50YSB5IG9jaG8iIH0sCisgICAgICAgICAgICB7ICIxMDAiLCAiY2llbiIgfSwKKyAgICAgICAgICAgIHsgIjEwNiIsICJjaWVudG8gc2VpcyIgfSwKKyAgICAgICAgICAgIHsgIjEyNyIsICJjaWVudG8gdmVpbnRpc2lldGUiIH0sCisgICAgICAgICAgICB7ICIyMDAiLCAiZG9zY2llbnRvcyIgfSwKKyAgICAgICAgICAgIHsgIjU3OSIsICJxdWluaWVudG9zIHNldGVudGEgeSBudWV2ZSIgfSwKKyAgICAgICAgICAgIHsgIjEsMDAwIiwgIm1pbCIgfSwKKyAgICAgICAgICAgIHsgIjIsMDAwIiwgImRvcyBtaWwiIH0sCisgICAgICAgICAgICB7ICIzLDAwNCIsICJ0cmVzIG1pbCBjdWF0cm8iIH0sCisgICAgICAgICAgICB7ICI0LDU2NyIsICJjdWF0cm8gbWlsIHF1aW5pZW50b3Mgc2VzZW50YSB5IHNpZXRlIiB9LAorICAgICAgICAgICAgeyAiMTUsOTQzIiwgInF1aW5jZSBtaWwgbm92ZWNpZW50b3MgY3VhcmVudGEgeSB0cmVzIiB9LAorICAgICAgICAgICAgeyAiMiwzNDUsNjc4IiwgImRvcyBtaWxsXHUwMGYzbiB0cmVzY2llbnRvcyBjdWFyZW50YSB5IGNpbmNvIG1pbCAiCisgICAgICAgICAgICAgICAgICAgICsgInNlaXNjaWVudG9zIHNldGVudGEgeSBvY2hvIn0sCisgICAgICAgICAgICB7ICItMzYiLCAibWVub3MgdHJlaW50YSB5IHNlaXMiIH0sCisgICAgICAgICAgICB7ICIyMzQuNTY3IiwgImRvc2NpZW50b3MgdHJlaW50YSB5IGN1YXRybyBwdW50byBjaW5jbyBzZWlzIHNpZXRlIiB9CisgICAgICAgIH07CisKKyAgICAgICAgZG9UZXN0KGZvcm1hdHRlciwgdGVzdERhdGEsIHRydWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFBlcmZvcm0gYSBzaW1wbGUgc3BvdCBjaGVjayBvbiB0aGUgRnJlbmNoIHNwZWxsb3V0IHJ1bGVzCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEZyZW5jaFNwZWxsb3V0KCkgeworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyCisgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQoTG9jYWxlLkZSQU5DRSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdC5TUEVMTE9VVCk7CisgICAgICAgIFN0cmluZ1tdW10gdGVzdERhdGEgPSB7CisgICAgICAgICAgICB7ICIxIiwgInVuIiB9LAorICAgICAgICAgICAgeyAiMTUiLCAicXVpbnplIiB9LAorICAgICAgICAgICAgeyAiMjAiLCAidmluZ3QiIH0sCisgICAgICAgICAgICB7ICIyMSIsICJ2aW5ndC1ldC11biIgfSwKKyAgICAgICAgICAgIHsgIjIzIiwgInZpbmd0LXRyb2lzIiB9LAorICAgICAgICAgICAgeyAiNjIiLCAic29peGFudGUtZGV1eCIgfSwKKyAgICAgICAgICAgIHsgIjcwIiwgInNvaXhhbnRlLWRpeCIgfSwKKyAgICAgICAgICAgIHsgIjcxIiwgInNvaXhhbnRlIGV0IG9uemUiIH0sCisgICAgICAgICAgICB7ICI3MyIsICJzb2l4YW50ZS10cmVpemUiIH0sCisgICAgICAgICAgICB7ICI4MCIsICJxdWF0cmUtdmluZ3RzIiB9LAorICAgICAgICAgICAgeyAiODgiLCAicXVhdHJlLXZpbmd0LWh1aXQiIH0sCisgICAgICAgICAgICB7ICIxMDAiLCAiY2VudCIgfSwKKyAgICAgICAgICAgIHsgIjEwNiIsICJjZW50IHNpeCIgfSwKKyAgICAgICAgICAgIHsgIjEyNyIsICJjZW50IHZpbmd0LXNlcHQiIH0sCisgICAgICAgICAgICB7ICIyMDAiLCAiZGV1eCBjZW50cyIgfSwKKyAgICAgICAgICAgIHsgIjU3OSIsICJjaW5xIGNlbnRzIHNvaXhhbnRlLWRpeC1uZXVmIiB9LAorICAgICAgICAgICAgeyAiMSwwMDAiLCAibWlsbGUiIH0sCisgICAgICAgICAgICB7ICIxLDEyMyIsICJvbnplIGNlbnRzIHZpbmd0LXRyb2lzIiB9LAorICAgICAgICAgICAgeyAiMSw1OTQiLCAibWlsbGUgY2lucSBjZW50cyBxdWF0cmUtdmluZ3QtcXVhdG9yemUiIH0sCisgICAgICAgICAgICB7ICIyLDAwMCIsICJkZXV4IG1pbGxlIiB9LAorICAgICAgICAgICAgeyAiMywwMDQiLCAidHJvaXMgbWlsbGUgcXVhdHJlIiB9LAorICAgICAgICAgICAgeyAiNCw1NjciLCAicXVhdHJlIG1pbGxlIGNpbnEgY2VudHMgc29peGFudGUtc2VwdCIgfSwKKyAgICAgICAgICAgIHsgIjE1LDk0MyIsICJxdWluemUgbWlsbGUgbmV1ZiBjZW50cyBxdWFyYW50ZS10cm9pcyIgfSwKKyAgICAgICAgICAgIHsgIjIsMzQ1LDY3OCIsICJkZXV4IG1pbGxpb24gdHJvaXMgY2VudHMgcXVhcmFudGUtY2lucSBtaWxsZSAiCisgICAgICAgICAgICAgICAgICAgICAgICArICJzaXggY2VudHMgc29peGFudGUtZGl4LWh1aXQiIH0sCisgICAgICAgICAgICB7ICItMzYiLCAibW9pbnMgdHJlbnRlLXNpeCIgfSwKKyAgICAgICAgICAgIHsgIjIzNC41NjciLCAiZGV1eCBjZW50cyB0cmVudGUtcXVhdHJlIHZpcmd1bGUgY2lucSBzaXggc2VwdCIgfQorICAgICAgICB9OworCisgICAgICAgIGRvVGVzdChmb3JtYXR0ZXIsIHRlc3REYXRhLCB0cnVlKTsKKworICAgICAgICBmb3JtYXR0ZXIuc2V0TGVuaWVudFBhcnNlTW9kZSh0cnVlKTsKKyAgICAgICAgU3RyaW5nW11bXSBscFRlc3REYXRhID0geworICAgICAgICAgICAgeyAidHJlbnRlLXVuIiwgIjMxIiB9LAorICAgICAgICAgICAgeyAidW4gY2VudHMgcXVhdHJlIHZpbmd0IGRpeCBodWl0IiwgIjE5OCIgfQorICAgICAgICB9OworICAgICAgICBkb0xlbmllbnRQYXJzZVRlc3QoZm9ybWF0dGVyLCBscFRlc3REYXRhKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQZXJmb3JtIGEgc2ltcGxlIHNwb3QgY2hlY2sgb24gdGhlIFN3aXNzIEZyZW5jaCBzcGVsbG91dCBydWxlcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RTd2lzc0ZyZW5jaFNwZWxsb3V0KCkgeworICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyCisgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBSdWxlQmFzZWROdW1iZXJGb3JtYXQobmV3IExvY2FsZSgiZnIiLCAiQ0giLAorICAgICAgICAgICAgICAgICAgICAgICAgIiIpLCBSdWxlQmFzZWROdW1iZXJGb3JtYXQuU1BFTExPVVQpOworICAgICAgICBTdHJpbmdbXVtdIHRlc3REYXRhID0geworICAgICAgICAgICAgeyAiMSIsICJ1biIgfSwKKyAgICAgICAgICAgIHsgIjE1IiwgInF1aW56ZSIgfSwKKyAgICAgICAgICAgIHsgIjIwIiwgInZpbmd0IiB9LAorICAgICAgICAgICAgeyAiMjEiLCAidmluZ3QtZXQtdW4iIH0sCisgICAgICAgICAgICB7ICIyMyIsICJ2aW5ndC10cm9pcyIgfSwKKyAgICAgICAgICAgIHsgIjYyIiwgInNvaXhhbnRlLWRldXgiIH0sCisgICAgICAgICAgICB7ICI3MCIsICJzZXB0YW50ZSIgfSwKKyAgICAgICAgICAgIHsgIjcxIiwgInNlcHRhbnRlLWV0LXVuIiB9LAorICAgICAgICAgICAgeyAiNzMiLCAic2VwdGFudGUtdHJvaXMiIH0sCisgICAgICAgICAgICB7ICI4MCIsICJvY3RhbnRlIiB9LAorICAgICAgICAgICAgeyAiODgiLCAib2N0YW50ZS1odWl0IiB9LAorICAgICAgICAgICAgeyAiMTAwIiwgImNlbnQiIH0sCisgICAgICAgICAgICB7ICIxMDYiLCAiY2VudCBzaXgiIH0sCisgICAgICAgICAgICB7ICIxMjciLCAiY2VudCB2aW5ndC1zZXB0IiB9LAorICAgICAgICAgICAgeyAiMjAwIiwgImRldXggY2VudHMiIH0sCisgICAgICAgICAgICB7ICI1NzkiLCAiY2lucSBjZW50cyBzZXB0YW50ZS1uZXVmIiB9LAorICAgICAgICAgICAgeyAiMSwwMDAiLCAibWlsbGUiIH0sCisgICAgICAgICAgICB7ICIxLDEyMyIsICJvbnplIGNlbnRzIHZpbmd0LXRyb2lzIiB9LAorICAgICAgICAgICAgeyAiMSw1OTQiLCAibWlsbGUgY2lucSBjZW50cyBub25hbnRlLXF1YXRyZSIgfSwKKyAgICAgICAgICAgIHsgIjIsMDAwIiwgImRldXggbWlsbGUiIH0sCisgICAgICAgICAgICB7ICIzLDAwNCIsICJ0cm9pcyBtaWxsZSBxdWF0cmUiIH0sCisgICAgICAgICAgICB7ICI0LDU2NyIsICJxdWF0cmUgbWlsbGUgY2lucSBjZW50cyBzb2l4YW50ZS1zZXB0IiB9LAorICAgICAgICAgICAgeyAiMTUsOTQzIiwgInF1aW56ZSBtaWxsZSBuZXVmIGNlbnRzIHF1YXJhbnRlLXRyb2lzIiB9LAorICAgICAgICAgICAgeyAiMiwzNDUsNjc4IiwgImRldXggbWlsbGlvbiB0cm9pcyBjZW50cyBxdWFyYW50ZS1jaW5xIG1pbGxlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgInNpeCBjZW50cyBzZXB0YW50ZS1odWl0IiB9LAorICAgICAgICAgICAgeyAiLTM2IiwgIm1vaW5zIHRyZW50ZS1zaXgiIH0sCisgICAgICAgICAgICB7ICIyMzQuNTY3IiwgImRldXggY2VudHMgdHJlbnRlLXF1YXRyZSB2aXJndWxlIGNpbnEgc2l4IHNlcHQiIH0KKyAgICAgICAgfTsKKworICAgICAgICBkb1Rlc3QoZm9ybWF0dGVyLCB0ZXN0RGF0YSwgdHJ1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGVyZm9ybSBhIHNpbXBsZSBzcG90IGNoZWNrIG9uIHRoZSBJdGFsaWFuIHNwZWxsb3V0IHJ1bGVzCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEl0YWxpYW5TcGVsbG91dCgpIHsKKyAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlcgorICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KExvY2FsZS5JVEFMSUFOLAorICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LlNQRUxMT1VUKTsKKyAgICAgICAgU3RyaW5nW11bXSB0ZXN0RGF0YSA9IHsKKyAgICAgICAgICAgIHsgIjEiLCAidW5vIiB9LAorICAgICAgICAgICAgeyAiMTUiLCAicXVpbmRpY2kiIH0sCisgICAgICAgICAgICB7ICIyMCIsICJ2ZW50aSIgfSwKKyAgICAgICAgICAgIHsgIjIzIiwgInZlbnRpdHJlIiB9LAorICAgICAgICAgICAgeyAiNzMiLCAic2V0dGFudGF0cmUiIH0sCisgICAgICAgICAgICB7ICI4OCIsICJvdHRhbnRvdHRvIiB9LAorICAgICAgICAgICAgeyAiMTAwIiwgImNlbnRvIiB9LAorICAgICAgICAgICAgeyAiMTA2IiwgImNlbnRvc2VpIiB9LAorICAgICAgICAgICAgeyAiMTA4IiwgImNlbnRvdHRvIiB9LAorICAgICAgICAgICAgeyAiMTI3IiwgImNlbnRvdmVudGlzZXR0ZSIgfSwKKyAgICAgICAgICAgIHsgIjE4MSIsICJjZW50b3R0YW50dW5vIiB9LAorICAgICAgICAgICAgeyAiMjAwIiwgImR1ZWNlbnRvIiB9LAorICAgICAgICAgICAgeyAiNTc5IiwgImNpbnF1ZWNlbnRvc2V0dGFudGFub3ZlIiB9LAorICAgICAgICAgICAgeyAiMSwwMDAiLCAibWlsbGUiIH0sCisgICAgICAgICAgICB7ICIyLDAwMCIsICJkdWVtaWxhIiB9LAorICAgICAgICAgICAgeyAiMywwMDQiLCAidHJlbWlsYXF1YXR0cm8iIH0sCisgICAgICAgICAgICB7ICI0LDU2NyIsICJxdWF0dHJvbWlsYWNpbnF1ZWNlbnRvc2Vzc2FudGFzZXR0ZSIgfSwKKyAgICAgICAgICAgIHsgIjE1LDk0MyIsICJxdWluZGljaW1pbGFub3ZlY2VudG9xdWFyYW50YXRyZSIgfSwKKyAgICAgICAgICAgIHsgIi0zNiIsICJtZW5vIHRyZW50aXNlaSIgfSwKKyAgICAgICAgICAgIHsgIjIzNC41NjciLCAiZHVlY2VudG90cmVudGlxdWF0dHJvIHZpcmdvbGEgY2lucXVlIHNlaSBzZXR0ZSIgfQorICAgICAgICB9OworCisgICAgICAgIGRvVGVzdChmb3JtYXR0ZXIsIHRlc3REYXRhLCB0cnVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQZXJmb3JtIGEgc2ltcGxlIHNwb3QgY2hlY2sgb24gdGhlIEdlcm1hbiBzcGVsbG91dCBydWxlcworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RHZXJtYW5TcGVsbG91dCgpIHsKKyAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlcgorICAgICAgICAgICAgICAgICAgICAgICAgPSBuZXcgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KExvY2FsZS5HRVJNQU5ZLAorICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LlNQRUxMT1VUKTsKKyAgICAgICAgU3RyaW5nW11bXSB0ZXN0RGF0YSA9IHsKKyAgICAgICAgICAgIHsgIjEiLCAiZWlucyIgfSwKKyAgICAgICAgICAgIHsgIjE1IiwgImZcdTAwZmNuZnplaG4iIH0sCisgICAgICAgICAgICB7ICIyMCIsICJ6d2FuemlnIiB9LAorICAgICAgICAgICAgeyAiMjMiLCAiZHJlaXVuZHp3YW56aWciIH0sCisgICAgICAgICAgICB7ICI3MyIsICJkcmVpdW5kc2llYnppZyIgfSwKKyAgICAgICAgICAgIHsgIjg4IiwgImFjaHR1bmRhY2h0emlnIiB9LAorICAgICAgICAgICAgeyAiMTAwIiwgImh1bmRlcnQiIH0sCisgICAgICAgICAgICB7ICIxMDYiLCAiaHVuZGVydHNlY2hzIiB9LAorICAgICAgICAgICAgeyAiMTI3IiwgImh1bmRlcnRzaWViZW51bmR6d2FuemlnIiB9LAorICAgICAgICAgICAgeyAiMjAwIiwgInp3ZWlodW5kZXJ0IiB9LAorICAgICAgICAgICAgeyAiNTc5IiwgImZcdTAwZmNuZmh1bmRlcnRuZXVudW5kc2llYnppZyIgfSwKKyAgICAgICAgICAgIHsgIjEsMDAwIiwgInRhdXNlbmQiIH0sCisgICAgICAgICAgICB7ICIyLDAwMCIsICJ6d2VpdGF1c2VuZCIgfSwKKyAgICAgICAgICAgIHsgIjMsMDA0IiwgImRyZWl0YXVzZW5kdmllciIgfSwKKyAgICAgICAgICAgIHsgIjQsNTY3IiwgInZpZXJ0YXVzZW5kZlx1MDBmY25maHVuZGVydHNpZWJlbnVuZHNlY2h6aWciIH0sCisgICAgICAgICAgICB7ICIxNSw5NDMiLCAiZlx1MDBmY25memVobnRhdXNlbmRuZXVuaHVuZGVydGRyZWl1bmR2aWVyemlnIiB9LAorICAgICAgICAgICAgeyAiMiwzNDUsNjc4IiwgInp3ZWkgTWlsbGlvbmVuIGRyZWlodW5kZXJ0Zlx1MDBmY25mdW5kdmllcnppZ3RhdXNlbmQiCisgICAgICAgICAgICAgICAgICAgICAgICArICJzZWNoc2h1bmRlcnRhY2h0dW5kc2llYnppZyIgfQorICAgICAgICB9OworCisgICAgICAgIGRvVGVzdChmb3JtYXR0ZXIsIHRlc3REYXRhLCB0cnVlKTsKKworICAgICAgICBmb3JtYXR0ZXIuc2V0TGVuaWVudFBhcnNlTW9kZSh0cnVlKTsKKyAgICAgICAgU3RyaW5nW11bXSBscFRlc3REYXRhID0geworICAgICAgICAgICAgeyAiZWluIFRhdXNlbmQgc2VjaHMgSHVuZGVydCBmdWVuZnVuZGRyZWlzc2lnIiwgIjEsNjM1IiB9CisgICAgICAgIH07CisgICAgICAgIGRvTGVuaWVudFBhcnNlVGVzdChmb3JtYXR0ZXIsIGxwVGVzdERhdGEpOworICAgIH0KKworICAgIHZvaWQgZG9UZXN0KFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIsIFN0cmluZ1tdW10gdGVzdERhdGEsCisgICAgICAgICAgICAgICAgYm9vbGVhbiB0ZXN0UGFyc2luZykgeworICAgICAgICBOdW1iZXJGb3JtYXQgZGVjRm10ID0gTnVtYmVyRm9ybWF0LmdldEluc3RhbmNlKExvY2FsZS5VUyk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVzdERhdGEubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbnVtYmVyID0gdGVzdERhdGFbaV1bMF07CisgICAgICAgICAgICAgICAgU3RyaW5nIGV4cGVjdGVkV29yZHMgPSB0ZXN0RGF0YVtpXVsxXTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgYWN0dWFsV29yZHMgPSBmb3JtYXR0ZXIuZm9ybWF0KGRlY0ZtdC5wYXJzZShudW1iZXIpKTsKKworICAgICAgICAgICAgICAgIGlmICghYWN0dWFsV29yZHMuZXF1YWxzKGV4cGVjdGVkV29yZHMpKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJTcG90IGNoZWNrIGZhaWxlZDogZm9yICIgKyBudW1iZXIgKyAiLCBleHBlY3RlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZXhwZWN0ZWRXb3JkcyArICIsIGJ1dCBnb3QgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbFdvcmRzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAodGVzdFBhcnNpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGFjdHVhbE51bWJlciA9IGRlY0ZtdC5mb3JtYXQoZm9ybWF0dGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucGFyc2UoYWN0dWFsV29yZHMpKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIWFjdHVhbE51bWJlci5lcXVhbHMobnVtYmVyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIlNwb3QgY2hlY2sgZmFpbGVkOiBmb3IgIiArIGFjdHVhbFdvcmRzICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgZXhwZWN0ZWQgIiArIG51bWJlciArICIsIGJ1dCBnb3QgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHVhbE51bWJlcik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKFRocm93YWJsZSBlKSB7CisgICAgICAgICAgICBlcnJsbigiVGVzdCBmYWlsZWQgd2l0aCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgZG9MZW5pZW50UGFyc2VUZXN0KFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIsCisgICAgICAgICAgICAgICAgICAgIFN0cmluZ1tdW10gdGVzdERhdGEpIHsKKyAgICAgICAgTnVtYmVyRm9ybWF0IGRlY0ZtdCA9IE51bWJlckZvcm1hdC5nZXRJbnN0YW5jZShMb2NhbGUuVVMpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlc3REYXRhLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHdvcmRzID0gdGVzdERhdGFbaV1bMF07CisgICAgICAgICAgICAgICAgU3RyaW5nIGV4cGVjdGVkTnVtYmVyID0gdGVzdERhdGFbaV1bMV07CisgICAgICAgICAgICAgICAgU3RyaW5nIGFjdHVhbE51bWJlciA9IGRlY0ZtdC5mb3JtYXQoZm9ybWF0dGVyLnBhcnNlKHdvcmRzKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoIWFjdHVhbE51bWJlci5lcXVhbHMoZXhwZWN0ZWROdW1iZXIpKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJMZW5pZW50LXBhcnNlIHNwb3QgY2hlY2sgZmFpbGVkOiBmb3IgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHdvcmRzICsgIiwgZXhwZWN0ZWQgIiArIGV4cGVjdGVkTnVtYmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgYnV0IGdvdCAiICsgYWN0dWFsTnVtYmVyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKFRocm93YWJsZSBlKSB7CisgICAgICAgICAgICBlcnJsbigiVGVzdCBmYWlsZWQgd2l0aCBleGNlcHRpb246ICIgKyBlLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGVzdC9yYm5mL3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL3Rlc3QvcmJuZi9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDE0ZGJiZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3QvcmJuZi9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzwhLS0gIENvcHlyaWdodCAoQykgMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3Rlc3QvcmJuZi9BdHRpYy9wYWNrYWdlLmh0bWwsdiAkCisgICRSZXZpc2lvbjogMS4xICQKKyAgJERhdGU6IDIwMDAvMDMvMTUgMjE6MzU6NTAgJAorLS0+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CitUZXN0cyBmb3IgdGhlIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGVzdC9yaWNodGV4dC9GbXdrVGVzdFRleHRQYW5lbC5qYXZhIGIvc3JjL2NvbS9pYm0vdGVzdC9yaWNodGV4dC9GbXdrVGVzdFRleHRQYW5lbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjM2ZTg0NGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXN0L3JpY2h0ZXh0L0Ztd2tUZXN0VGV4dFBhbmVsLmphdmEKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogRm13a1Rlc3RUZXh0UGFuZWwuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMC8wNC8yNiAxNzozOTo1OCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnRlc3QucmljaHRleHQ7CisKK2ltcG9ydCBjb20uaWJtLnRlc3QuVGVzdEZtd2s7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXN0cy5UZXN0VGV4dFBhbmVsOworCitwdWJsaWMgZmluYWwgY2xhc3MgRm13a1Rlc3RUZXh0UGFuZWwgZXh0ZW5kcyBUZXN0Rm13ayB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAKKyAgICAgICAgbmV3IEZtd2tUZXN0VGV4dFBhbmVsKCkucnVuKGFyZ3MpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIFRUUCB0dHA7CisgICAgCisgICAgcHVibGljIEZtd2tUZXN0VGV4dFBhbmVsKCkgeworICAgIAorICAgICAgICB0dHAgPSBuZXcgVFRQKCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgCisgICAgICAgIHR0cC50ZXN0KCk7CisgICAgICAgIC8vIElmIFRlc3RUZXh0UGFuZWwgZ2V0cyBtb3JlIHRlc3RzLCBhZGQgdGhlbSBoZXJlCisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBUVFAgZXh0ZW5kcyBUZXN0VGV4dFBhbmVsIHsKKyAgICAKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgcmVwb3J0RXJyb3IoU3RyaW5nIG1lc3NhZ2UpIHsKKyAgICAgICAgCisgICAgICAgICAgICBlcnJsbihtZXNzYWdlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgbG9nTWVzc2FnZShTdHJpbmcgbWVzc2FnZSkgeworICAgICAgICAKKyAgICAgICAgICAgIGxvZ2xuKG1lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3QvcmljaHRleHQvVGVzdEFsbC5qYXZhIGIvc3JjL2NvbS9pYm0vdGVzdC9yaWNodGV4dC9UZXN0QWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzcwYzc2ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3QvcmljaHRleHQvVGVzdEFsbC5qYXZhCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRlc3RBbGwuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMC8wNC8yNCAyMToxMTozMCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnRlc3QucmljaHRleHQ7CisKK2ltcG9ydCBjb20uaWJtLnRlc3QuVGVzdEZtd2s7CisKK3B1YmxpYyBjbGFzcyBUZXN0QWxsIGV4dGVuZHMgVGVzdEZtd2sgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgVGVzdEFsbCgpLnJ1bihhcmdzKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdEF0dHJpYnV0ZVNldCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBydW4obmV3IFRlc3RBdHRyaWJ1dGVTZXQoKSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RBdHRyaWJ1dGVNYXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgcnVuKG5ldyBUZXN0QXR0cmlidXRlTWFwKCkpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0Rm9ybWF0dGVyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHJ1bihuZXcgVGVzdEZvcm1hdHRlcigpKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdE1UZXh0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHJ1bihuZXcgVGVzdE1UZXh0KCkpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0UGFyYWdyYXBoU3R5bGVzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHJ1bihuZXcgVGVzdFBhcmFncmFwaFN0eWxlcygpKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgVGVzdE1UZXh0U3RyZWFtaW5nKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHJ1bihuZXcgVGVzdE1UZXh0U3RyZWFtaW5nKCkpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0VGV4dFBhbmVsKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHJ1bihuZXcgRm13a1Rlc3RUZXh0UGFuZWwoKSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3QvcmljaHRleHQvVGVzdEF0dHJpYnV0ZU1hcC5qYXZhIGIvc3JjL2NvbS9pYm0vdGVzdC9yaWNodGV4dC9UZXN0QXR0cmlidXRlTWFwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2Y4OGVjNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3QvcmljaHRleHQvVGVzdEF0dHJpYnV0ZU1hcC5qYXZhCkBAIC0wLDAgKzEsNDA5IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBUZXN0QXR0cmlidXRlTWFwLmphdmEsdiAkICRSZXZpc2lvbjogMS4yICQgJERhdGU6IDIwMDAvMDQvMjQgMjA6NTI6NTggJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXN0LnJpY2h0ZXh0OworCitpbXBvcnQgY29tLmlibS50ZXN0LlRlc3RGbXdrOworCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlU2V0OworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLlRleHRBdHRyaWJ1dGU7CitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuTWFwOworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247CisKKy8vIEphdmEyIGltcG9ydHMKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLlNldDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwLkVudHJ5OworCisKK3B1YmxpYyBjbGFzcyBUZXN0QXR0cmlidXRlTWFwIGV4dGVuZHMgVGVzdEZtd2sgIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisKKworICAgIC8vIFRoZXJlIGFyZSBKREsgMS4xIHZlcnNpb25zIG9mIEF0dHJpYnV0ZU1hcCBhbmQgQXR0cmlidXRlU2V0LgorICAgIC8vIFNvbWUgb2YgdGhlIHRlc3RzIGluIHRoaXMgY2xhc3MgcmVxdWlyZSBKYXZhIDIgQVBJJ3MuICBJIGhhdmUKKyAgICAvLyB0cmllZCB0byBpc29sYXRlIHRoZXNlIHRlc3RzIGJ5IGNvbmRpdGlvbmFsaXppbmcgdGhlbSBvbgorICAgIC8vIHRoaXMgc3RhdGljIHZhcmlhYmxlLiAgSWYgeW91IGFyZSBiYWNrLXBvcnRpbmcgdG8gMS4xLCByZW1vdmUKKyAgICAvLyB0aGUgSmF2YSAyIHRlc3RzIE9OTFkuCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBnSkRLMTEgPSBmYWxzZTsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICAgIG5ldyBUZXN0QXR0cmlidXRlTWFwKCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIHByaXZhdGUgQXR0cmlidXRlU2V0IG1hcHM7ICAvLyBBIFNldCBvZiBBdHRyaWJ1dGVNYXBzCisgICAgcHJpdmF0ZSBBdHRyaWJ1dGVTZXQgc2V0czsgIC8vIEEgU2V0IG9mIFNldHMKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIFRlc3RBdHRyaWJ1dGUgZXh0ZW5kcyBUZXh0QXR0cmlidXRlIHsKKworICAgICAgICBUZXN0QXR0cmlidXRlKFN0cmluZyBuYW1lKSB7CisgICAgICAgICAgICBzdXBlcihuYW1lKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFRlc3RBdHRyaWJ1dGVbXSBhdHRyaWJ1dGVzID0geworICAgICAgICBuZXcgVGVzdEF0dHJpYnV0ZSgiMCIpLCBuZXcgVGVzdEF0dHJpYnV0ZSgiMSIpLCBuZXcgVGVzdEF0dHJpYnV0ZSgiMiIpCisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE9iamVjdFtdIHZhbHVlcyA9IHsKKyAgICAgICAgIkhlbGxvIHdvcmxkIiwgbmV3IEZsb2F0KC00MiksIG5ldyBPYmplY3QoKSwgbmV3IEF0dHJpYnV0ZU1hcChuZXcgVGVzdEF0dHJpYnV0ZSgiMyIpLCAiSEgiKQorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGxocy5lcXVhbHMocmhzKSAtIGJ1dCBhbHNvIGNoZWNrcyBmb3Igc3ltbWV0cnksIGFuZAorICAgICAqIGNvbnNpc3RlbmN5IHdpdGggaGFzaENvZGUoKS4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gZXF1YWxNYXBzKEF0dHJpYnV0ZU1hcCBsaHMsIE9iamVjdCByaHMpIHsKKworICAgICAgICBib29sZWFuIGVxdWFsID0gbGhzLmVxdWFscyhyaHMpOworICAgICAgICBpZiAoZXF1YWwgIT0gKHJocy5lcXVhbHMobGhzKSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJBdHRyaWJ1dGVNYXAuZXF1YWxzIGlzIG5vdCBzeW1ldHJpYyIpOworICAgICAgICB9CisgICAgICAgIGlmIChlcXVhbCkgeworICAgICAgICAgICAgaWYgKGxocy5oYXNoQ29kZSgpICE9IHJocy5oYXNoQ29kZSgpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkF0dHJpYnV0ZU1hcHMgYXJlIGVxdWFsIGJ1dCBoYXNoQ29kZXMgZGlmZmVyIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGVxdWFsOworICAgIH0KKworICAgIHB1YmxpYyBUZXN0QXR0cmlidXRlTWFwKCkgeworCisgICAgICAgIG1hcHMgPSBBdHRyaWJ1dGVTZXQuRU1QVFlfU0VUOworICAgICAgICBtYXBzID0gbWFwcy5hZGRFbGVtZW50KEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQKTsKKyAgICAgICAgbWFwcy5hZGRFbGVtZW50KG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5TVVBFUlNDUklQVCwgVGV4dEF0dHJpYnV0ZS5TVVBFUlNDUklQVF9TVUIpKTsKKyAgICAgICAgbWFwcy5hZGRFbGVtZW50KG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5TVVBFUlNDUklQVCwgVGV4dEF0dHJpYnV0ZS5TVVBFUlNDUklQVF9TVVBFUikpOworCisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGF0dHJpYnV0ZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoaW50IGo9MDsgaiA8IHZhbHVlcy5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgICAgIG1hcHMgPSBtYXBzLmFkZEVsZW1lbnQobmV3IEF0dHJpYnV0ZU1hcChhdHRyaWJ1dGVzW2ldLCB2YWx1ZXNbal0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEF0dHJpYnV0ZU1hcCBiaWdNYXAgPSBuZXcgQXR0cmlidXRlTWFwKG5ldyBUZXN0QXR0cmlidXRlKCI0IiksICJ2YWx1ZSIpOworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBNYXRoLm1pbihhdHRyaWJ1dGVzLmxlbmd0aCwgdmFsdWVzLmxlbmd0aCk7IGkrKykgeworICAgICAgICAgICAgYmlnTWFwID0gYmlnTWFwLmFkZEF0dHJpYnV0ZShhdHRyaWJ1dGVzW2ldLCB2YWx1ZXNbdmFsdWVzLmxlbmd0aC1pLTFdKTsKKyAgICAgICAgfQorICAgICAgICBtYXBzID0gbWFwcy5hZGRFbGVtZW50KGJpZ01hcCk7CisKKyAgICAgICAgc2V0cyA9IEF0dHJpYnV0ZVNldC5FTVBUWV9TRVQ7CisKKyAgICAgICAgc2V0cyA9IG5ldyBBdHRyaWJ1dGVTZXQoQXR0cmlidXRlU2V0LkVNUFRZX1NFVCk7CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgYXR0cmlidXRlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgQXR0cmlidXRlU2V0IG5ld1NldCA9IG5ldyBBdHRyaWJ1dGVTZXQoYXR0cmlidXRlc1tpXSk7CisgICAgICAgICAgICBzZXRzID0gc2V0cy5hZGRFbGVtZW50KG5ld1NldCk7CisgICAgICAgIH0KKworICAgICAgICBBdHRyaWJ1dGVTZXQgYWxsQXR0cnMgPSBBdHRyaWJ1dGVTZXQuRU1QVFlfU0VUOworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBhdHRyaWJ1dGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBhbGxBdHRycyA9IGFsbEF0dHJzLmFkZEVsZW1lbnQoYXR0cmlidXRlc1tpXSk7CisgICAgICAgIH0KKworICAgICAgICBzZXRzID0gc2V0cy5hZGRFbGVtZW50KGFsbEF0dHJzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSdW4gdGVzdHMgb24gQXR0cmlidXRlTWFwLiAgSWYgYSB0ZXN0IGZhaWxzIGFuIGV4Y2VwdGlvbiB3aWxsIHByb3BvZ2F0ZSBvdXQKKyAgICAgKiBvZiB0aGlzIG1ldGhvZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB0ZXN0KCkgeworCisgICAgICAgIGVhc3lUZXN0cygpOworCisgICAgICAgIEVudW1lcmF0aW9uIG1hcEl0ZXIgPSBtYXBzLmVsZW1lbnRzKCk7CisgICAgICAgIHdoaWxlIChtYXBJdGVyLmhhc01vcmVFbGVtZW50cygpKSB7CisKKyAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCB0ZXN0TWFwID0gKEF0dHJpYnV0ZU1hcCkgbWFwSXRlci5uZXh0RWxlbWVudCgpOworCisgICAgICAgICAgICBfdGVzdE1vZGlmaWVycyh0ZXN0TWFwKTsKKyAgICAgICAgICAgIF90ZXN0Vmlld3ModGVzdE1hcCk7CisKKyAgICAgICAgICAgIEVudW1lcmF0aW9uIHVuaW9uSXRlciA9IG1hcHMuZWxlbWVudHMoKTsKKyAgICAgICAgICAgIHdoaWxlICh1bmlvbkl0ZXIuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgICAgICBfdGVzdFVuaW9uV2l0aCh0ZXN0TWFwLCAoQXR0cmlidXRlTWFwKSB1bmlvbkl0ZXIubmV4dEVsZW1lbnQoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEVudW1lcmF0aW9uIHNldEl0ZXIgPSBzZXRzLmVsZW1lbnRzKCk7CisgICAgICAgICAgICB3aGlsZSAoc2V0SXRlci5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgICAgIEF0dHJpYnV0ZVNldCB0ZXN0U2V0ID0gKEF0dHJpYnV0ZVNldCkgc2V0SXRlci5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgICAgIF90ZXN0SW50ZXJzZWN0V2l0aCh0ZXN0TWFwLCB0ZXN0U2V0KTsKKyAgICAgICAgICAgICAgICBfdGVzdFJlbW92ZUF0dHJpYnV0ZXModGVzdE1hcCwgdGVzdFNldCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbnZva2UgbW9kaWZpZXJzIG9uIG1hcC4gIEFsbCBzaG91bGQgdGhyb3cKKyAgICAgKiBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiwgYW5kIGxlYXZlIG1hcCB1bm1vZGlmaWVkLgorICAgICAqLworICAgIHZvaWQgX3Rlc3RNb2RpZmllcnMoQXR0cmlidXRlTWFwIG1hcCkgeworCisgICAgICAgIGlmIChnSkRLMTEpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQXR0cmlidXRlTWFwIG9yaWdpbmFsTWFwID0gbmV3IEF0dHJpYnV0ZU1hcChtYXApOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBtYXAucHV0KFRleHRBdHRyaWJ1dGUuV0VJR0hULCBUZXh0QXR0cmlidXRlLldFSUdIVF9CT0xEKTsKKyAgICAgICAgICAgIGVycmxuKCJQdXQgc2hvdWxkIHRocm93IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLiIpOworICAgICAgICB9CisgICAgICAgIGNhdGNoKFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfQorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBPYmplY3Qga2V5ID0gVGV4dEF0dHJpYnV0ZS5XRUlHSFQ7CisgICAgICAgICAgICBJdGVyYXRvciBpdGVyID0gbWFwLmtleVNldCgpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICBpZiAoaXRlci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBrZXkgPSBpdGVyLm5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1hcC5yZW1vdmUoa2V5KTsKKyAgICAgICAgICAgIGVycmxuKCJTZXQgc2hvdWxkIHRocm93IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLiIpOworICAgICAgICB9CisgICAgICAgIGNhdGNoKFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfQorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBtYXAucHV0QWxsKG1hcCk7CisgICAgICAgICAgICBlcnJsbigicHV0QWxsIHNob3VsZCB0aHJvdyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbi4iKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiBlKSB7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAgICAgICAgbWFwLmNsZWFyKCk7CisgICAgICAgICAgICBlcnJsbigiY2xlYXIgc2hvdWxkIHRocm93IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLiIpOworICAgICAgICB9CisgICAgICAgIGNhdGNoKFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghb3JpZ2luYWxNYXAuZXF1YWxzKG1hcCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJNb2RpZmllcnMgY2hhbmdlZCBtYXAuIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBFbnN1cmUgdGhhdCBtYXAuYWRkQXR0cmlidXRlcyhhZGRNYXApIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZworICAgICAqIG1hcC5hZGQgb24gYWxsIG9mIGFkZE1hcCdzIGVudHJpZXMuCisgICAgICovCisgICAgdm9pZCBfdGVzdFVuaW9uV2l0aChBdHRyaWJ1dGVNYXAgbWFwLCBBdHRyaWJ1dGVNYXAgYWRkTWFwKSB7CisKKyAgICAgICAgQXR0cmlidXRlTWFwIGxocyA9IG1hcC5hZGRBdHRyaWJ1dGVzKGFkZE1hcCk7CisKKyAgICAgICAgQXR0cmlidXRlTWFwIHJocyA9IG1hcDsKKworICAgICAgICBFbnVtZXJhdGlvbiBpdGVyID0gYWRkTWFwLmdldEtleVNldCgpLmVsZW1lbnRzKCk7CisgICAgICAgIHdoaWxlIChpdGVyLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICBPYmplY3QgYXR0ciA9IGl0ZXIubmV4dEVsZW1lbnQoKTsKKyAgICAgICAgICAgIE9iamVjdCB2YWx1ZSA9IGFkZE1hcC5nZXQoYXR0cik7CisgICAgICAgICAgICByaHMgPSByaHMuYWRkQXR0cmlidXRlKGF0dHIsIHZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghZXF1YWxNYXBzKGxocywgcmhzKSkgeworICAgICAgICAgICAgZXJybG4oIk1hcHMgYXJlIG5vdCBlcXVhbC4iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEVuc3VyZSB0aGF0IG1hcC5yZW1vdmVBdHRyaWJ1dGVzKHJlbW92ZSkgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nCisgICAgICogbWFwLnJlbW92ZUF0dHJpYnV0ZSBvbiByZW1vdmUncyBlbGVtZW50cy4KKyAgICAgKi8KKyAgICB2b2lkIF90ZXN0UmVtb3ZlQXR0cmlidXRlcyhBdHRyaWJ1dGVNYXAgbWFwLCBBdHRyaWJ1dGVTZXQgcmVtb3ZlKSB7CisKKyAgICAgICAgQXR0cmlidXRlTWFwIGxocyA9IG1hcC5yZW1vdmVBdHRyaWJ1dGVzKHJlbW92ZSk7CisKKyAgICAgICAgQXR0cmlidXRlTWFwIHJocyA9IG1hcDsKKworICAgICAgICBFbnVtZXJhdGlvbiBpdGVyID0gcmVtb3ZlLmVsZW1lbnRzKCk7CisgICAgICAgIHdoaWxlIChpdGVyLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICBPYmplY3QgYXR0ciA9IGl0ZXIubmV4dEVsZW1lbnQoKTsKKyAgICAgICAgICAgIHJocyA9IHJocy5yZW1vdmVBdHRyaWJ1dGUoYXR0cik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWVxdWFsTWFwcyhsaHMsIHJocykpIHsKKyAgICAgICAgICAgIGVycmxuKCJNYXBzIGFyZSBub3QgZXF1YWwuIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBFbnN1cmUgdGhhdCBtYXAuaW50ZXJzZWN0V2l0aChpbnRlcnNlY3QpIGlzIGVxdWl2YWxlbnQgdG8KKyAgICAgKiBtYXAucmVtb3ZlQXR0cmlidXRlcyhtYXAua2V5U2V0KCkgLSBpbnRlcnNlY3QpOworICAgICAqLworICAgIHZvaWQgX3Rlc3RJbnRlcnNlY3RXaXRoKEF0dHJpYnV0ZU1hcCBtYXAsIEF0dHJpYnV0ZVNldCBpbnRlcnNlY3QpIHsKKworICAgICAgICBBdHRyaWJ1dGVNYXAgbGhzID0gbWFwLmludGVyc2VjdFdpdGgoaW50ZXJzZWN0KTsKKworICAgICAgICBBdHRyaWJ1dGVTZXQga2V5U2V0ID0gbWFwLmdldEtleVNldCgpOworICAgICAgICBBdHRyaWJ1dGVTZXQgcmVtb3ZlU2V0ID0ga2V5U2V0LnN1YnRyYWN0KGludGVyc2VjdCk7CisgICAgICAgIEF0dHJpYnV0ZU1hcCByaHMgPSBtYXAucmVtb3ZlQXR0cmlidXRlcyhyZW1vdmVTZXQpOworCisgICAgICAgIGlmICghZXF1YWxNYXBzKGxocywgcmhzKSkgeworICAgICAgICAgICAgbWFwLmludGVyc2VjdFdpdGgoaW50ZXJzZWN0KTsKKyAgICAgICAgICAgIGxvZ2xuKCJpbnRlcnNlY3Q6ICIgKyBpbnRlcnNlY3QpOworICAgICAgICAgICAgbG9nbG4oImtleVNldDogIiArIGtleVNldCk7CisgICAgICAgICAgICBsb2dsbigicmVtb3ZlU2V0OiAiICsgcmVtb3ZlU2V0KTsKKyAgICAgICAgICAgIGxvZ2xuKCJtYXA6ICIgKyBtYXApOworICAgICAgICAgICAgbG9nbG4oImxoczogIiArIGxocyk7CisgICAgICAgICAgICBsb2dsbigicmhzOiAiICsgcmhzKTsKKyAgICAgICAgICAgIGVycmxuKCJNYXBzIGFyZSBub3QgZXF1YWwuIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBFbnN1cmUgdGhhdDoKKyAgICAgKiAgICBtYXAsIG1hcC5rZXlTZXQoKSwgYW5kIG1hcC5lbnRyeVNldCgpIGFyZSB0aGUgc2FtZSBzaXplOworICAgICAqICAgIG1hcC5jb250YWluc0tleSgpIGlzIHRydWUgZm9yIGV2ZXJ5IGtleSBpbiBrZXlTZXQoKTsKKyAgICAgKiAgICBtYXAuY29udGFpbnNWYWx1ZSgpIGlzIHRydWUgZm9yIGV2ZXJ5IHZhbHVlIGluIHZhbHVlczsKKyAgICAgKiAgICBldmVyeSBlbnRyeSBrZXkgaXMgaW4ga2V5U2V0LCBldmVyeSBlbnRyeSB2YWx1ZSBpcyBpbiBtYXAudmFsdWVzKCk7CisgICAgICogICAgbWFwLmdldCgpIGlzIGNvbnNpc3RlbnQgd2l0aCBlbnRyeSdzIGtleSwgdmFsdWU7CisgICAgICogICAgc3VtIG9mIGhhc2hjb2RlcyBvZiBlbnRyaWVzIGVxdWFscyBtYXAuaGFzaENvZGUoKS4KKyAgICAgKi8KKyAgICB2b2lkIF90ZXN0Vmlld3MoQXR0cmlidXRlTWFwIG1hcCkgeworCisgICAgICAgIEF0dHJpYnV0ZVNldCBrZXlTZXQgPSBtYXAuZ2V0S2V5U2V0KCk7CisKKyAgICAgICAgRW51bWVyYXRpb24ga2V5SXRlciA9IGtleVNldC5lbGVtZW50cygpOworICAgICAgICB3aGlsZSAoa2V5SXRlci5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgaWYgKCFtYXAuY29udGFpbnNLZXkoa2V5SXRlci5uZXh0RWxlbWVudCgpKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJrZXlTZXQgY29udGFpbnMga2V5IG5vdCBpbiBtYXAiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChnSkRLMTEpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQ29sbGVjdGlvbiB2YWx1ZXMgPSBtYXAudmFsdWVzKCk7CisgICAgICAgIFNldCBlbnRyeVNldCA9IG1hcC5lbnRyeVNldCgpOworCisgICAgICAgIGlmIChrZXlTZXQuc2l6ZSgpICE9IG1hcC5zaXplKCkgfHwgZW50cnlTZXQuc2l6ZSgpICE9IG1hcC5zaXplKCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJTZXQgc2l6ZXMgYXJlIGluY29uc2lzdGVudCB3aXRoIG1hcCBzaXplLiIpOworICAgICAgICB9CisKKyAgICAgICAgaW50IGhhc2hDb2RlID0gMDsKKworICAgICAgICBJdGVyYXRvciB2YWx1ZUl0ZXIgPSB2YWx1ZXMuaXRlcmF0b3IoKTsKKyAgICAgICAgd2hpbGUgKHZhbHVlSXRlci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIGlmICghbWFwLmNvbnRhaW5zVmFsdWUodmFsdWVJdGVyLm5leHQoKSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigidmFsdWUgc2V0IGNvbnRhaW5zIHZhbHVlIG5vdCBpbiBtYXAiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEl0ZXJhdG9yIGVudHJ5SXRlciA9IGVudHJ5U2V0Lml0ZXJhdG9yKCk7CisgICAgICAgIHdoaWxlIChlbnRyeUl0ZXIuaGFzTmV4dCgpKSB7CisKKyAgICAgICAgICAgIEVudHJ5IGVudHJ5ID0gKEVudHJ5KSBlbnRyeUl0ZXIubmV4dCgpOworCisgICAgICAgICAgICBPYmplY3Qga2V5ID0gZW50cnkuZ2V0S2V5KCk7CisgICAgICAgICAgICBpZiAoIWtleVNldC5jb250YWlucyhrZXkpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkVudHJ5IGtleSBpcyBub3QgaW4ga2V5IHNldC4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgT2JqZWN0IHZhbHVlID0gbWFwLmdldChlbnRyeS5nZXRLZXkoKSk7CisgICAgICAgICAgICBpZiAoIXZhbHVlcy5jb250YWlucyh2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRW50cnkgdmFsdWUgaXMgbm90IGluIHZhbHVlIHNldC4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1hcC5nZXQoa2V5KSAhPSB2YWx1ZSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJtYXAuZ2V0IGRpZCBub3QgcmV0dXJuIGVudHJ5IHZhbHVlLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBoYXNoQ29kZSArPSBlbnRyeS5oYXNoQ29kZSgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGhhc2hDb2RlICE9IG1hcC5oYXNoQ29kZSgpKSB7CisgICAgICAgICAgICBlcnJsbigibWFwIGhhc2hjb2RlIGlzIG5vdCBzdW0gb2YgZW50cnkgaGFzaGNvZGVzLiIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTG9vayBmb3IgY29ycmVjdCBiZWhhdmlvciBpbiBvYnZpb3VzIGNhc2VzLgorICAgICAqLworICAgIHZvaWQgZWFzeVRlc3RzKCkgeworCisgICAgICAgIEF0dHJpYnV0ZU1hcCBtYXAgPSBuZXcgQXR0cmlidXRlTWFwKCk7CisgICAgICAgIGlmICghbWFwLmVxdWFscyhBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJEZWZhdWx0LWNvbnN0cnVjdGVkIG1hcCBpcyBub3QgZXF1YWwgdG8gZW1wdHkgbWFwLiIpOworICAgICAgICB9CisKKyAgICAgICAgbWFwID0gbWFwLmFkZEF0dHJpYnV0ZShUZXh0QXR0cmlidXRlLlBPU1RVUkUsIFRleHRBdHRyaWJ1dGUuUE9TVFVSRV9PQkxJUVVFKTsKKyAgICAgICAgT2JqZWN0IG90aGVyTWFwID0gbmV3IEF0dHJpYnV0ZU1hcChUZXh0QXR0cmlidXRlLlBPU1RVUkUsIFRleHRBdHRyaWJ1dGUuUE9TVFVSRV9PQkxJUVVFKTsKKyAgICAgICAgaWYgKCFtYXAuZXF1YWxzKG90aGVyTWFwKSkgeworICAgICAgICAgICAgZXJybG4oIk1hcHMgYXJlIGluY29uc2lzdGVudCBhZnRlciBtYXAuYWRkIik7CisgICAgICAgIH0KKworICAgICAgICBvdGhlck1hcCA9IG1hcC5hZGRBdHRyaWJ1dGVzKG1hcCk7CisgICAgICAgIGlmICghZXF1YWxNYXBzKG1hcCxvdGhlck1hcCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJNYXBzIGFyZSBpbmNvbnNpc3RlbnQgYWZ0ZXIgYWRkQXR0cmlidXRlcyIpOworICAgICAgICB9CisKKyAgICAgICAgbWFwID0gbWFwLmFkZEF0dHJpYnV0ZShUZXh0QXR0cmlidXRlLlVOREVSTElORSwgVGV4dEF0dHJpYnV0ZS5VTkRFUkxJTkVfT04pOworCisgICAgICAgIGlmIChtYXAuc2l6ZSgpICE9IDIpIHsKKyAgICAgICAgICAgIGVycmxuKCJNYXAgc2l6ZSBpcyB3cm9uZy4gIG1hcD0iK21hcCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZXF1YWxNYXBzKG1hcCxvdGhlck1hcCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJNYXBzIHNob3VsZCBub3QgYmUgZXF1YWwiKTsKKyAgICAgICAgfQorCisgICAgICAgIE9iamVjdCBwb3N0dXJlID0gbmV3IEZsb2F0KDApOworICAgICAgICBtYXAgPSBtYXAuYWRkQXR0cmlidXRlKFRleHRBdHRyaWJ1dGUuUE9TVFVSRSwgcG9zdHVyZSk7CisKKyAgICAgICAgaWYgKG1hcC5zaXplKCkgIT0gMikgeworICAgICAgICAgICAgZXJybG4oIk1hcCBzaXplIGlzIHdyb25nIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1hcC5nZXQoVGV4dEF0dHJpYnV0ZS5QT1NUVVJFKS5lcXVhbHMocG9zdHVyZSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJNYXAgZWxlbWVudCBpcyB3cm9uZyIpOworICAgICAgICB9CisKKyAgICAgICAgbWFwID0gbWFwLnJlbW92ZUF0dHJpYnV0ZShUZXh0QXR0cmlidXRlLlVOREVSTElORSk7CisKKyAgICAgICAgaWYgKG1hcC5zaXplKCkgIT0gMSkgeworICAgICAgICAgICAgZXJybG4oIk1hcCBzaXplIGlzIHdyb25nIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAobWFwLmdldChUZXh0QXR0cmlidXRlLlVOREVSTElORSkgIT0gbnVsbCkgeworICAgICAgICAgICAgZXJybG4oIk1hcCBzaG91bGQgbm90IGhhdmUgZWxlbWVudCIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gbWFwIGhhcyBQT1NUVVJFX1JFR1VMQVIuICBJZiB3ZSBhZGRBdHRyaWJ1dGVzIGEgbWFwIHdpdGgKKyAgICAgICAgLy8gUE9TVFVSRV9JVEFMSUMgdGhlIG5ldyBtYXAgc2hvdWxkIGhhdmUgUE9TVFVSRV9JVEFMSUMKKworICAgICAgICBtYXAgPSBtYXAuYWRkQXR0cmlidXRlcyhuZXcgQXR0cmlidXRlTWFwKFRleHRBdHRyaWJ1dGUuUE9TVFVSRSwgVGV4dEF0dHJpYnV0ZS5QT1NUVVJFX09CTElRVUUpKTsKKyAgICAgICAgaWYgKG1hcC5nZXQoVGV4dEF0dHJpYnV0ZS5QT1NUVVJFKSAhPSBUZXh0QXR0cmlidXRlLlBPU1RVUkVfT0JMSVFVRSkgeworICAgICAgICAgICAgZXJybG4oIk1hcCBlbGVtZW50IGlzIHdyb25nIik7CisgICAgICAgIH0KKworICAgICAgICBfdGVzdE1vZGlmaWVycyhtYXApOworICAgICAgICBfdGVzdFZpZXdzKG1hcCk7CisKKyAgICAgICAgRW51bWVyYXRpb24gbWFwSXRlciA9IG1hcHMuZWxlbWVudHMoKTsKKyAgICAgICAgd2hpbGUgKG1hcEl0ZXIuaGFzTW9yZUVsZW1lbnRzKCkpIHsKKyAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCB0ZXN0TWFwID0gKEF0dHJpYnV0ZU1hcCkgbWFwSXRlci5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgT2JqZWN0IG5ld1ZhbHVlID0gbmV3IE9iamVjdCgpOworICAgICAgICAgICAgQXR0cmlidXRlTWFwIG5ld01hcCA9IHRlc3RNYXAuYWRkQXR0cmlidXRlKGF0dHJpYnV0ZXNbMF0sIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgIGlmIChuZXdNYXAuZ2V0KGF0dHJpYnV0ZXNbMF0pICE9IG5ld1ZhbHVlKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkRpZCBub3QgZ2V0IGV4cGVjdGVkIHZhbHVlIGJhY2suICBtYXA9IiArIG1hcCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGVzdC9yaWNodGV4dC9UZXN0QXR0cmlidXRlU2V0LmphdmEgYi9zcmMvY29tL2libS90ZXN0L3JpY2h0ZXh0L1Rlc3RBdHRyaWJ1dGVTZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mYTllZDkxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGVzdC9yaWNodGV4dC9UZXN0QXR0cmlidXRlU2V0LmphdmEKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogVGVzdEF0dHJpYnV0ZVNldC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMiAkICREYXRlOiAyMDAwLzA0LzI0IDIwOjUyOjU4ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0udGVzdC5yaWNodGV4dDsKKworaW1wb3J0IGNvbS5pYm0udGVzdC5UZXN0Rm13azsKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOworCitwdWJsaWMgY2xhc3MgVGVzdEF0dHJpYnV0ZVNldCBleHRlbmRzIFRlc3RGbXdrIHsKKworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgICAgICAgICAiKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZCI7CisgICAgICAgICAgICAgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKyAgICAgICAgbmV3IFRlc3RBdHRyaWJ1dGVTZXQoKS5ydW4oYXJncyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKworICAgICAgICBmaW5hbCBPYmplY3QgZWxlbTEgPSBuZXcgT2JqZWN0KCk7CisgICAgICAgIGZpbmFsIE9iamVjdCBlbGVtMiA9IG5ldyBGbG9hdCg0KTsKKyAgICAgICAgZmluYWwgT2JqZWN0IGVsZW0zID0gIlN0cmluZyI7CisgICAgICAgIGZpbmFsIE9iamVjdCBlbGVtNCA9IEJvb2xlYW4uRkFMU0U7CisKKyAgICAgICAgQXR0cmlidXRlU2V0IHNldDEgPSBuZXcgQXR0cmlidXRlU2V0KG5ldyBPYmplY3RbXSB7ZWxlbTEsIGVsZW0yLCBlbGVtM30pOworICAgICAgICBpZiAoc2V0MS5zaXplKCkgIT0gMykgeworICAgICAgICAgICAgZXJybG4oIlNpemUgaXMgd3JvbmcuIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2V0MS5jb250YWlucyhlbGVtNCkpeworICAgICAgICAgICAgZXJybG4oIlNldCBjb250ZW50cyBhcmUgd3JvbmcuIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXNldDEuY29udGFpbnMoZWxlbTEpKSB7CisgICAgICAgICAgICBlcnJsbigiU2V0IGNvbnRlbnRzIGFyZSB3cm9uZy4iKTsKKyAgICAgICAgfQorCisgICAgICAgIEF0dHJpYnV0ZVNldCBzZXQyID0gbmV3IEF0dHJpYnV0ZVNldChlbGVtNCk7CisKKyAgICAgICAgaWYgKHNldDIuc2l6ZSgpICE9IDEpIHsKKyAgICAgICAgICAgIGVycmxuKCJTaXplIGlzIHdyb25nLiIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFzZXQyLmNvbnRhaW5zKGVsZW00KSl7CisgICAgICAgICAgICBlcnJsbigiU2V0IGNvbnRlbnRzIGFyZSB3cm9uZy4iKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzZXQyLmNvbnRhaW5zKGVsZW0xKSkgeworICAgICAgICAgICAgZXJybG4oIlNldCBjb250ZW50cyBhcmUgd3JvbmcuIik7CisgICAgICAgIH0KKworICAgICAgICBFbnVtZXJhdGlvbiBpdGVyID0gc2V0Mi5lbGVtZW50cygpOworICAgICAgICBpZiAoIWl0ZXIubmV4dEVsZW1lbnQoKS5lcXVhbHMoZWxlbTQpKSB7CisgICAgICAgICAgICBlcnJsbigiSW52YWxpZCBvYmplY3QgaW4gaXRlcmF0b3IuIik7CisgICAgICAgIH0KKworICAgICAgICBBdHRyaWJ1dGVTZXQgdW5pb24gPSBzZXQyLnVuaW9uV2l0aChzZXQxKTsKKyAgICAgICAgaWYgKCFzZXQxLnVuaW9uV2l0aChzZXQyKS5lcXVhbHModW5pb24pKSB7CisgICAgICAgICAgICBlcnJsbigidW5pb25XaXRoIGlzIG5vdCBjb21tdXRhdGl2ZS4iKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdW5pb24uY29udGFpbnMoZWxlbTEpIHx8ICF1bmlvbi5jb250YWlucyhlbGVtNCkpIHsKKyAgICAgICAgICAgIGVycmxuKCJTZXQgY29udGVudHMgYXJlIHdyb25nLiIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFzZXQxLmFkZEVsZW1lbnQoZWxlbTQpLmVxdWFscyh1bmlvbikpIHsKKyAgICAgICAgICAgIGVycmxuKCJhZGRFbGVtZW50IGlzIHdyb25nLiIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF1bmlvbi5pbnRlcnNlY3RXaXRoKHNldDEpLmVxdWFscyhzZXQxKSkgeworICAgICAgICAgICAgZXJybG4oImludGVyc2VjdFdpdGggaXMgd3JvbmcuIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXVuaW9uLnN1YnRyYWN0KHNldDEpLmVxdWFscyhzZXQyKSkgeworICAgICAgICAgICAgZXJybG4oInN1YnRyYWN0IGlzIHdyb25nLiIpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3QvcmljaHRleHQvVGVzdEZvcm1hdHRlci5qYXZhIGIvc3JjL2NvbS9pYm0vdGVzdC9yaWNodGV4dC9UZXN0Rm9ybWF0dGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWJhODMyNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3QvcmljaHRleHQvVGVzdEZvcm1hdHRlci5qYXZhCkBAIC0wLDAgKzEsMjUwIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBUZXN0Rm9ybWF0dGVyLmphdmEsdiAkICRSZXZpc2lvbjogMS4yICQgJERhdGU6IDIwMDAvMDQvMjQgMjA6NTI6NTggJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXN0LnJpY2h0ZXh0OworCitpbXBvcnQgY29tLmlibS50ZXN0LlRlc3RGbXdrOworCitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLlRleHRBdHRyaWJ1dGU7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1UZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NQ29uc3RUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdGFuZGFyZFRhYlJ1bGVyOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZWRUZXh0OworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0Zm9ybWF0LlRleHRPZmZzZXQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC50ZXh0Zm9ybWF0Lk1Gb3JtYXR0ZXI7CisKK2ltcG9ydCBqYXZhLmF3dC5Db2xvcjsKK2ltcG9ydCBqYXZhLmF3dC5GcmFtZTsKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczsKK2ltcG9ydCBqYXZhLmF3dC5JbWFnZTsKK2ltcG9ydCBqYXZhLmF3dC5Qb2ludDsKK2ltcG9ydCBqYXZhLmF3dC5SZWN0YW5nbGU7CitpbXBvcnQgamF2YS5hd3QuVG9vbGtpdDsKK2ltcG9ydCBqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlOworCitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKKworcHVibGljIGZpbmFsIGNsYXNzIFRlc3RGb3JtYXR0ZXIgZXh0ZW5kcyBUZXN0Rm13ayB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICAgIG5ldyBUZXN0Rm9ybWF0dGVyKCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFBvaW50IE9SSUdJTiA9IG5ldyBQb2ludCgwLCAwKTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEF0dHJpYnV0ZU1hcCBERUZBVUxUUzsKKyAgICBzdGF0aWMgeworICAgICAgICBmaW5hbCBGbG9hdCBmbG9hdFplcm8gPSBuZXcgRmxvYXQoMC4wZik7CisKKyAgICAgICAgSGFzaHRhYmxlIGRlZmF1bHRzID0gbmV3IEhhc2h0YWJsZSgpOworICAgICAgICBkZWZhdWx0cy5wdXQoVGV4dEF0dHJpYnV0ZS5GQU1JTFksICJTZXJpZiIpOworICAgICAgICBkZWZhdWx0cy5wdXQoVGV4dEF0dHJpYnV0ZS5XRUlHSFQsIG5ldyBGbG9hdCgxLjBmKSk7CisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLlBPU1RVUkUsIGZsb2F0WmVybyk7CisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLlNJWkUsIG5ldyBGbG9hdCgxOC4wZikpOworICAgICAgICBkZWZhdWx0cy5wdXQoVGV4dEF0dHJpYnV0ZS5TVVBFUlNDUklQVCwgbmV3IEludGVnZXIoMCkpOworICAgICAgICBkZWZhdWx0cy5wdXQoVGV4dEF0dHJpYnV0ZS5GT1JFR1JPVU5ELCBDb2xvci5ibGFjayk7CisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLlVOREVSTElORSwgbmV3IEludGVnZXIoLTEpKTsKKyAgICAgICAgZGVmYXVsdHMucHV0KFRleHRBdHRyaWJ1dGUuU1RSSUtFVEhST1VHSCwgQm9vbGVhbi5GQUxTRSk7CisKKyAgICAgICAgZGVmYXVsdHMucHV0KFRleHRBdHRyaWJ1dGUuRVhUUkFfTElORV9TUEFDSU5HLCBmbG9hdFplcm8pOworICAgICAgICBkZWZhdWx0cy5wdXQoVGV4dEF0dHJpYnV0ZS5GSVJTVF9MSU5FX0lOREVOVCwgZmxvYXRaZXJvKTsKKyAgICAgICAgZGVmYXVsdHMucHV0KFRleHRBdHRyaWJ1dGUuTUlOX0xJTkVfU1BBQ0lORywgZmxvYXRaZXJvKTsKKyAgICAgICAgZGVmYXVsdHMucHV0KFRleHRBdHRyaWJ1dGUuTElORV9GTFVTSCwgVGV4dEF0dHJpYnV0ZS5GTFVTSF9MRUFESU5HKTsKKyAgICAgICAgZGVmYXVsdHMucHV0KFRleHRBdHRyaWJ1dGUuTEVBRElOR19NQVJHSU4sIGZsb2F0WmVybyk7CisgICAgICAgIGRlZmF1bHRzLnB1dChUZXh0QXR0cmlidXRlLlRSQUlMSU5HX01BUkdJTiwgZmxvYXRaZXJvKTsKKyAgICAgICAgZGVmYXVsdHMucHV0KFRleHRBdHRyaWJ1dGUuVEFCX1JVTEVSLCBuZXcgU3RhbmRhcmRUYWJSdWxlcigpKTsKKworICAgICAgICBERUZBVUxUUyA9IG5ldyBBdHRyaWJ1dGVNYXAoZGVmYXVsdHMpOworICAgIH0KKyAgICAKKyAgICAvLyBhcmcgdG8gdGVzdExpbmVFeGNlcHRpb25zCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFVOS05PV04gPSAtMTsKKworICAgIHByaXZhdGUgR3JhcGhpY3MgZkdyYXBoaWNzOworCisgICAgcHVibGljIFRlc3RGb3JtYXR0ZXIoKSB7CisKKyAgICAgICAgZkdyYXBoaWNzID0gbmV3IEJ1ZmZlcmVkSW1hZ2UoMTAwLCAxMDAsIEJ1ZmZlcmVkSW1hZ2UuVFlQRV8zQllURV9CR1IpLmdldEdyYXBoaWNzKCk7CisgICAgICAgIAorICAgICAgICAvL0pESyAxLjE6CisgICAgICAgIC8vRnJhbWUgZiA9IG5ldyBGcmFtZSgpOworICAgICAgICAvL2Yuc2hvdygpOworICAgICAgICAvL2ZHcmFwaGljcyA9IGYuZ2V0R3JhcGhpY3MoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIFN0cmluZyBmaXZlTGluZXMgPSAiYVxuYlxuY1xuZFxuZSI7CisgICAgcHJpdmF0ZSBTdHJpbmcgdHdlbHZlTGluZXMgPSBmaXZlTGluZXMgKyAiXG4iICsgZml2ZUxpbmVzICsgIlxuZlxuIjsKKyAgICBBdHRyaWJ1dGVNYXAgUExBSU4gPSBBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUDsKKworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisKKyAgICAgICAgTUNvbnN0VGV4dCB0ZXh0ID0gbmV3IFN0eWxlZFRleHQoZml2ZUxpbmVzLCBQTEFJTik7CisgICAgICAgIF90ZXN0TGluZUV4Y2VwdGlvbnMobWFrZUZvcm1hdHRlcih0ZXh0LCAxMDAsIHRydWUpLCA1KTsKKyAgICAgICAgX3Rlc3RMaW5lQWNjZXNzKG1ha2VGb3JtYXR0ZXIodGV4dCwgMTAwLCB0cnVlKSwgNSk7CisKKyAgICAgICAgdGV4dCA9IG5ldyBTdHlsZWRUZXh0KHR3ZWx2ZUxpbmVzLCBQTEFJTik7CisgICAgICAgIF90ZXN0TGluZUV4Y2VwdGlvbnMobWFrZUZvcm1hdHRlcih0ZXh0LCAzLCBmYWxzZSksIDEyKTsKKyAgICAgICAgX3Rlc3RMaW5lQWNjZXNzKG1ha2VGb3JtYXR0ZXIodGV4dCwgMTAwLCB0cnVlKSwgMTIpOworCisgICAgICAgIF90ZXN0V2l0aE1vZGlmaWNhdGlvbigpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBfdGVzdFdpdGhNb2RpZmljYXRpb24oKSB7CisKKyAgICAgICAgTVRleHQgdGV4dCA9IG5ldyBTdHlsZWRUZXh0KGZpdmVMaW5lcywgUExBSU4pOworICAgICAgICBNRm9ybWF0dGVyIGZvcm1hdHRlciA9IG1ha2VGb3JtYXR0ZXIodGV4dCwgMTAwLCB0cnVlKTsKKyAgICAgICAgUmVjdGFuZ2xlIHZpZXdSZWN0ID0gbmV3IFJlY3RhbmdsZSgwLCAwLCAxMDAsIEludGVnZXIuTUFYX1ZBTFVFKTsKKworICAgICAgICBmb3JtYXR0ZXIuc3RvcEJhY2tncm91bmRGb3JtYXR0aW5nKCk7CisgICAgICAgIHRleHQuYXBwZW5kKG5ldyBTdHlsZWRUZXh0KCJcbiIsIFBMQUlOKSk7CisgICAgICAgIGZvcm1hdHRlci51cGRhdGVGb3JtYXQodGV4dC5sZW5ndGgoKS0xLCAxLCB2aWV3UmVjdCwgT1JJR0lOKTsKKworICAgICAgICBfdGVzdExpbmVBY2Nlc3MoZm9ybWF0dGVyLCA2KTsKKworICAgICAgICBmb3JtYXR0ZXIuc3RvcEJhY2tncm91bmRGb3JtYXR0aW5nKCk7CisgICAgICAgIHRleHQuYXBwZW5kKG5ldyBTdHlsZWRUZXh0KCJhZCIsIFBMQUlOKSk7CisgICAgICAgIGZvcm1hdHRlci51cGRhdGVGb3JtYXQodGV4dC5sZW5ndGgoKS0yLCAyLCB2aWV3UmVjdCwgT1JJR0lOKTsKKyAgICAgICAgX3Rlc3RMaW5lQWNjZXNzKGZvcm1hdHRlciwgNik7CisgICAgICAgIF90ZXN0TGluZUV4Y2VwdGlvbnMoZm9ybWF0dGVyLCA2KTsKKworICAgICAgICBmb3JtYXR0ZXIuc3RvcEJhY2tncm91bmRGb3JtYXR0aW5nKCk7CisgICAgICAgIHRleHQucmVtb3ZlKDAsIDEpOworICAgICAgICBmb3JtYXR0ZXIudXBkYXRlRm9ybWF0KDAsIDAsIHZpZXdSZWN0LCBPUklHSU4pOworICAgICAgICBfdGVzdExpbmVBY2Nlc3MoZm9ybWF0dGVyLCA2KTsKKyAgICAgICAgX3Rlc3RMaW5lRXhjZXB0aW9ucyhmb3JtYXR0ZXIsIDYpOworICAgIH0KKworCisgICAgcHJpdmF0ZSBNRm9ybWF0dGVyIG1ha2VGb3JtYXR0ZXIoTUNvbnN0VGV4dCB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lQm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiB3cmFwKSB7CisKKyAgICAgICAgcmV0dXJuIE1Gb3JtYXR0ZXIuY3JlYXRlRm9ybWF0dGVyKHRleHQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGQVVMVFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lQm91bmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZkdyYXBoaWNzKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgX3Rlc3RMaW5lRXhjZXB0aW9ucyhNRm9ybWF0dGVyIGZvcm1hdHRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW1MaW5lcykgeworCisgICAgICAgIGlmIChudW1MaW5lcyA9PSBVTktOT1dOKSB7CisgICAgICAgICAgICBudW1MaW5lcyA9IGZvcm1hdHRlci5nZXRMaW5lQ291bnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2xlYW4gY2F1Z2h0ID0gZmFsc2U7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZvcm1hdHRlci5saW5lUmFuZ2VMb3cobnVtTGluZXMpOworICAgICAgICB9CisgICAgICAgIGNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBjYXVnaHQgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFjYXVnaHQpIHsKKyAgICAgICAgICAgIGVycmxuKCJEaWRuJ3QgZ2V0IGV4Y2VwdGlvbiIpOworICAgICAgICB9CisgICAgICAgIGNhdWdodCA9IGZhbHNlOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmb3JtYXR0ZXIubGluZVJhbmdlTGltaXQobnVtTGluZXMpOworICAgICAgICB9CisgICAgICAgIGNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBjYXVnaHQgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFjYXVnaHQpIHsKKyAgICAgICAgICAgIGVycmxuKCJEaWRuJ3QgZ2V0IGV4Y2VwdGlvbiIpOworICAgICAgICB9CisgICAgICAgIGNhdWdodCA9IGZhbHNlOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBmb3JtYXR0ZXIubGluZUdyYXBoaWNTdGFydChudW1MaW5lcysxKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgY2F1Z2h0ID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghY2F1Z2h0KSB7CisgICAgICAgICAgICBlcnJsbigiRGlkbid0IGdldCBleGNlcHRpb24iKTsKKyAgICAgICAgfQorICAgICAgICBjYXVnaHQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgX3Rlc3RMaW5lQWNjZXNzKE1Gb3JtYXR0ZXIgZm9ybWF0dGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG51bUxpbmVzKSB7CisKKyAgICAgICAgaWYgKG51bUxpbmVzID09IFVOS05PV04pIHsKKyAgICAgICAgICAgIG51bUxpbmVzID0gZm9ybWF0dGVyLmdldExpbmVDb3VudCgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZvcm1hdHRlci5saW5lR3JhcGhpY1N0YXJ0KDApICE9IDApIHsKKyAgICAgICAgICAgIGVycmxuKCJMaW5lIDAgZG9lc24ndCBzdGFydCBhdCBoZWlnaHQgMCIpOworICAgICAgICB9CisgICAgICAgIGlmIChmb3JtYXR0ZXIubGluZVJhbmdlTG93KDApICE9IDApIHsKKyAgICAgICAgICAgIGVycmxuKCJMaW5lIDAgZG9lc24ndCBzdGFydCBhdCBjaGFyYWN0ZXIgMCIpOworICAgICAgICB9CisKKyAgICAgICAgaW50IGxhc3RMaW1pdCA9IGZvcm1hdHRlci5saW5lUmFuZ2VMaW1pdCgwKTsKKyAgICAgICAgZmluYWwgaW50IGxpbmVCb3VuZCA9IGZvcm1hdHRlci5saW5lQm91bmQoKTsKKyAgICAgICAgaW50W10gaGl0WCA9IG5ldyBpbnRbXSB7IC0xLCAxLCBsaW5lQm91bmQgKyAyIH07CisKKyAgICAgICAgVGV4dE9mZnNldCBvZmZzZXQgPSBuZXcgVGV4dE9mZnNldCgpOworCisgICAgICAgIGZvciAoaW50IGk9MTsgaSA8IG51bUxpbmVzOyBpKyspIHsKKworICAgICAgICAgICAgaW50IGhlaWdodCA9IGZvcm1hdHRlci5saW5lR3JhcGhpY1N0YXJ0KGkpOworICAgICAgICAgICAgaWYgKGxhc3RMaW1pdCAhPSBmb3JtYXR0ZXIubGluZVJhbmdlTG93KGkpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oImxhc3RMaW5lIGxpbWl0IGlzIG5vdCBjdXJyZW50IGxpbmUgc3RhcnQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBsaW1pdCA9IGZvcm1hdHRlci5saW5lUmFuZ2VMaW1pdChpKTsKKworICAgICAgICAgICAgaWYgKGxpbWl0IDwgbGFzdExpbWl0IHx8IChsaW1pdCA9PSBsYXN0TGltaXQgJiYgaSAhPSBudW1MaW5lcy0xKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJsaW5lIGhhcyBuZWdhdGl2ZSBvciAwIGxlbmd0aCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpbnQgbmV4dEhlaWdodCA9IGZvcm1hdHRlci5saW5lR3JhcGhpY1N0YXJ0KGkrMSk7CisgICAgICAgICAgICBpZiAobmV4dEhlaWdodCA8PSBoZWlnaHQpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiMC1oZWlnaHQgbGluZSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IGluY0Ftb3VudCA9IE1hdGgubWF4KChuZXh0SGVpZ2h0LWhlaWdodCkvNCwgMSk7CisgICAgICAgICAgICBmb3IgKGludCBoaXRZID0gaGVpZ2h0OyBoaXRZIDwgbmV4dEhlaWdodDsgaGl0WSArPSBpbmNBbW91bnQpIHsKKworICAgICAgICAgICAgICAgIGlmIChmb3JtYXR0ZXIubGluZUF0SGVpZ2h0KGhpdFkpICE9IGkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oImxpbmVBdEhlaWdodCBpcyB3cm9uZyIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZvciAoaW50IGo9MDsgaiA8IGhpdFgubGVuZ3RoOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gZm9ybWF0dGVyLnBvaW50VG9UZXh0T2Zmc2V0KG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaXRYW2pdLCBoaXRZLCBPUklHSU4sIG51bGwsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9mZnNldC5mT2Zmc2V0IDwgbGFzdExpbWl0IHx8IG9mZnNldC5mT2Zmc2V0ID4gbGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJJbmNvbnNpc3RlbnQgb2Zmc2V0IGZyb20gcG9pbnRUb1RleHRPZmZzZXQiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAvL2lmIChmb3JtYXR0ZXIubGluZUNvbnRhaW5pbmcob2Zmc2V0KSAhPSBpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vICAgIGludCBkZWJ1ZyA9IGZvcm1hdHRlci5saW5lQ29udGFpbmluZyhvZmZzZXQpOworICAgICAgICAgICAgICAgICAgICAvLyAgICBlcnJsbigibGluZUNvbnRhaW5pbmcgaXMgaW5jb3JyZWN0Iik7CisgICAgICAgICAgICAgICAgICAgIC8vfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbGFzdExpbWl0ID0gbGltaXQ7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGVzdC9yaWNodGV4dC9UZXN0TVRleHQuamF2YSBiL3NyYy9jb20vaWJtL3Rlc3QvcmljaHRleHQvVGVzdE1UZXh0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODNmNTM2NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3QvcmljaHRleHQvVGVzdE1UZXh0LmphdmEKQEAgLTAsMCArMSw3MjEgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRlc3RNVGV4dC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMyAkICREYXRlOiAyMDAwLzA0LzI2IDE3OjM5OjU4ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0udGVzdC5yaWNodGV4dDsKKworaW1wb3J0IGNvbS5pYm0udGVzdC5UZXN0Rm13azsKKworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5UZXh0QXR0cmlidXRlOworCitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1Db25zdFRleHQ7CitpbXBvcnQgY29tLmlibS5yaWNodGV4dC5zdHlsZWR0ZXh0Lk1UZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZWRUZXh0OworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZU1vZGlmaWVyOworCitpbXBvcnQgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5SYW5kb207CisKK2ltcG9ydCBqYXZhLmlvLio7CisKK3B1YmxpYyBjbGFzcyBUZXN0TVRleHQgZXh0ZW5kcyBUZXN0Rm13ayB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICAgIG5ldyBUZXN0TVRleHQoKS5ydW4oYXJncyk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBURVNUX0lURVJBVElPTlMgPSA1MDAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTVFlMRV9URVNUX0lURVJBVElPTlMgPSA1MDAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgUkFORF9TRUVEID0gNTk4NDM2OworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE5PVF9JTl9NT05LRVlfVEVTVCA9IC01MDAwOworICAgIHByaXZhdGUgaW50IHRlc3RJdGVyYXRpb24gPSBOT1RfSU5fTU9OS0VZX1RFU1Q7CisgICAgcHJpdmF0ZSBpbnQgdGhlQ2FzZSA9IE5PVF9JTl9NT05LRVlfVEVTVDsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBTdHlsZU1vZGlmaWVyIGNyZWF0ZU1pbnVzTW9kaWZpZXIoZmluYWwgT2JqZWN0IGF0dHIpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBTdHlsZU1vZGlmaWVyKCkgeworICAgICAgICAgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBtb2RpZnlTdHlsZShBdHRyaWJ1dGVNYXAgc3R5bGUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3R5bGUucmVtb3ZlQXR0cmlidXRlKGF0dHIpOworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3QoKSB7CisgICAgCisgICAgICAgIHNpbXBsZVRlc3QoKTsKKyAgICAgICAgc3R5bGVUZXN0KCk7CisgICAgICAgIG1vbmtleVRlc3QodHJ1ZSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHNpbXBsZVRlc3QoKSB7CisKKyAgICAgICAgQXR0cmlidXRlTWFwIGJvbGRTdHlsZSA9IG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5XRUlHSFQsIFRleHRBdHRyaWJ1dGUuV0VJR0hUX0JPTEQpOworICAgICAgICBBdHRyaWJ1dGVNYXAgaXRhbGljU3R5bGUgPSBuZXcgQXR0cmlidXRlTWFwKFRleHRBdHRyaWJ1dGUuUE9TVFVSRSwgVGV4dEF0dHJpYnV0ZS5QT1NUVVJFX09CTElRVUUpOworCisgICAgICAgIE1Db25zdFRleHQgYWxsQm9sZCA9IG5ldyBTdHlsZWRUZXh0KCJiYmJiYiIsIGJvbGRTdHlsZSk7CisgICAgICAgIE1Db25zdFRleHQgYWxsSXRhbGljID0gbmV3IFN0eWxlZFRleHQoImlpaSIsIGl0YWxpY1N0eWxlKTsKKyAgICAgICAgTUNvbnN0VGV4dCBwbGFpbiA9IG5ldyBTdHlsZWRUZXh0KCJwcHBwcHAiLCBBdHRyaWJ1dGVNYXAuRU1QVFlfQVRUUklCVVRFX01BUCk7CisKKyAgICAgICAgeworICAgICAgICAgICAgTVRleHQgYnVmID0gbmV3IFN0eWxlZFRleHQoKTsKKyAgICAgICAgICAgIGludCB0cyA9IGJ1Zi5nZXRUaW1lU3RhbXAoKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoYWxsQm9sZCk7CisgICAgICAgICAgICBidWYuYXBwZW5kKGFsbEl0YWxpYyk7CisKKyAgICAgICAgICAgIGlmICh0cyA9PSBidWYuZ2V0VGltZVN0YW1wKCkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiVGltZSBzdGFtcCBub3QgaW5jcmVtZW50ZWQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gc2hvdWxkIGJlIGJiYmJiaWlpIG5vdworCisgICAgICAgICAgICBpZiAoYnVmLmxlbmd0aCgpICE9IGFsbEJvbGQubGVuZ3RoKCkgKyBhbGxJdGFsaWMubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiTGVuZ3RoIGlzIHdyb25nLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBidWYubGVuZ3RoKCk7IGkrKykgeworCisgICAgICAgICAgICAgICAgY2hhciByaWdodENoYXI7CisgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwIHJpZ2h0U3R5bGU7CisKKyAgICAgICAgICAgICAgICBpZiAoaSA8IGFsbEJvbGQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmlnaHRDaGFyID0gYWxsQm9sZC5hdCgwKTsKKyAgICAgICAgICAgICAgICAgICAgcmlnaHRTdHlsZSA9IGJvbGRTdHlsZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJpZ2h0Q2hhciA9IGFsbEl0YWxpYy5hdCgwKTsKKyAgICAgICAgICAgICAgICAgICAgcmlnaHRTdHlsZSA9IGl0YWxpY1N0eWxlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChidWYuYXQoaSkgIT0gcmlnaHRDaGFyKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJDaGFyYWN0ZXIgaXMgd3JvbmcuIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghYnVmLmNoYXJhY3RlclN0eWxlQXQoaSkuZXF1YWxzKHJpZ2h0U3R5bGUpKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJTdHlsZSBpcyB3cm9uZy4iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCBwb3MgPSAwOworCisgICAgICAgICAgICBpZiAoIWJ1Zi5jaGFyYWN0ZXJTdHlsZUF0KHBvcykuZXF1YWxzKGJvbGRTdHlsZSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRmlyc3Qgc3R5bGUgaXMgd3JvbmcuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYnVmLmNoYXJhY3RlclN0eWxlTGltaXQocG9zKSAhPSBhbGxCb2xkLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlJ1biBsZW5ndGggaXMgd3JvbmcuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHBvcyA9IGFsbEJvbGQubGVuZ3RoKCk7CisKKyAgICAgICAgICAgIGlmICghYnVmLmNoYXJhY3RlclN0eWxlQXQocG9zKS5lcXVhbHMoaXRhbGljU3R5bGUpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlNlY29uZCBzdHlsZSBpcyB3cm9uZy4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChidWYuY2hhcmFjdGVyU3R5bGVMaW1pdChwb3MpICE9IGJ1Zi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJSdW4gbGVuZ3RoIGlzIHdyb25nLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYnVmLnJlc2V0RGFtYWdlZFJhbmdlKCk7CisgICAgICAgICAgICAgICAgaW50IG9sZExlbmd0aCA9IGJ1Zi5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBidWYucmVwbGFjZShidWYubGVuZ3RoKCksIGJ1Zi5sZW5ndGgoKSwgYWxsQm9sZCwgMCwgYWxsQm9sZC5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgLy8gYmJiYmJpaWliYmJiYgorCisgICAgICAgICAgICAgICAgaWYgKGJ1Zi5kYW1hZ2VkUmFuZ2VTdGFydCgpICE9IG9sZExlbmd0aCkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRGFtYWdlZCByYW5nZSBzdGFydCBpcyBpbmNvcnJlY3QiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGJ1Zi5kYW1hZ2VkUmFuZ2VMaW1pdCgpICE9IGJ1Zi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiRGFtYWdlZCByYW5nZSBsaW1pdCBpcyBpbmNvcnJlY3QiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCBzdGFydCA9IGFsbEJvbGQubGVuZ3RoKCk7CisgICAgICAgICAgICBpbnQgbGltaXQgPSBzdGFydCArIGFsbEl0YWxpYy5sZW5ndGgoKTsKKyAgICAgICAgICAgIGJ1Zi5yZW1vdmUoc3RhcnQsIGxpbWl0KTsKKyAgICAgICAgICAgIC8vIGJiYmJiYmJiYmIKKworICAgICAgICAgICAgaWYgKGJ1Zi5sZW5ndGgoKSAhPSAyICogYWxsQm9sZC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJUZXh0IHNob3VsZCBiZSB0d2ljZSB0aGUgbGVuZ3RoIG9mIGJvbGQgdGV4dC4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcG9zID0gYnVmLmxlbmd0aCgpIC8gMjsKKyAgICAgICAgICAgIGlmIChidWYuY2hhcmFjdGVyU3R5bGVTdGFydChwb3MpICE9IDAgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYuY2hhcmFjdGVyU3R5bGVMaW1pdChwb3MpICE9IGJ1Zi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJSdW4gcmFuZ2UgaXMgd3JvbmcuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWJ1Zi5jaGFyYWN0ZXJTdHlsZUF0KHBvcykuZXF1YWxzKGJvbGRTdHlsZSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiUnVuIHN0eWxlIGlzIHdyb25nLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0cyA9IGJ1Zi5nZXRUaW1lU3RhbXAoKTsKKyAgICAgICAgICAgIENoYXJhY3Rlckl0ZXJhdG9yIGNJdGVyID0gYnVmLmNyZWF0ZUNoYXJhY3Rlckl0ZXJhdG9yKCk7CisgICAgICAgICAgICBmb3IgKGNoYXIgY2ggPSBjSXRlci5maXJzdCgpOyBjaCAhPSBjSXRlci5ET05FOyBjaCA9IGNJdGVyLm5leHQoKSkgeworICAgICAgICAgICAgICAgIGlmIChjaCAhPSBhbGxCb2xkLmF0KDApKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJDaGFyYWN0ZXIgaXMgd3JvbmcuIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodHMgIT0gYnVmLmdldFRpbWVTdGFtcCgpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlRpbWUgc3RhbXAgc2hvdWxkIG5vdCBoYXZlIGNoYW5nZWQiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYnVmLnJlcGxhY2UoMCwgMSwgcGxhaW4sIDAsIHBsYWluLmxlbmd0aCgpKTsKKworICAgICAgICAgICAgaWYgKHRzID09IGJ1Zi5nZXRUaW1lU3RhbXAoKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJUaW1lIHN0YW1wIG5vdCBpbmNyZW1lbnRlZCIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBwcHBwcHBiYmJiYmJiYmIKKyAgICAgICAgICAgIGJ1Zi5yZXBsYWNlKHBsYWluLmxlbmd0aCgpLCBidWYubGVuZ3RoKCksIGFsbEl0YWxpYywgMCwgYWxsSXRhbGljLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIC8vIHBwcHBwcGlpaQorCisgICAgICAgICAgICBpZiAoYnVmLmxlbmd0aCgpICE9IGFsbEl0YWxpYy5sZW5ndGgoKStwbGFpbi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJMZW5ndGggaXMgd3JvbmcuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHBvcyA9IDA7CisgICAgICAgICAgICBpZiAoYnVmLmNoYXJhY3RlclN0eWxlTGltaXQocG9zKSAhPSBwbGFpbi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJSdW4gbGltaXQgaXMgd3JvbmcuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHBvcyA9IHBsYWluLmxlbmd0aCgpOworICAgICAgICAgICAgaWYgKGJ1Zi5jaGFyYWN0ZXJTdHlsZUxpbWl0KHBvcykgIT0gYnVmLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlJ1biBsaW1pdCBpcyB3cm9uZy4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYnVmLnJlcGxhY2UocGxhaW4ubGVuZ3RoKCksIHBsYWluLmxlbmd0aCgpLCBhbGxCb2xkLCAwLCBhbGxCb2xkLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIC8vIHBwcHBwcGJiYmJiaWlpCisKKyAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBzdCA9IGJ1Zi5jaGFyYWN0ZXJTdHlsZUF0KDEpOworICAgICAgICAgICAgaWYgKCFzdC5lcXVhbHMoQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVApKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlN0eWxlIGlzIHdyb25nLiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGJ1Zi5jaGFyYWN0ZXJTdHlsZVN0YXJ0KDEpICE9IDAgfHwgYnVmLmNoYXJhY3RlclN0eWxlTGltaXQoMSkgIT0gcGxhaW4ubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiU3R5bGUgc3RhcnQgaXMgd3JvbmcuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN0ID0gYnVmLmNoYXJhY3RlclN0eWxlQXQoYnVmLmxlbmd0aCgpIC0gMSk7CisgICAgICAgICAgICBpZiAoIXN0LmVxdWFscyhpdGFsaWNTdHlsZSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiU3R5bGUgaXMgd3JvbmcuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYnVmLmNoYXJhY3RlclN0eWxlU3RhcnQoYnVmLmxlbmd0aCgpIC0gMSkgIT0gcGxhaW4ubGVuZ3RoKCkrYWxsQm9sZC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJTdHlsZSBzdGFydCBpcyB3cm9uZy4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGJ1Zi5jaGFyYWN0ZXJTdHlsZUxpbWl0KGJ1Zi5sZW5ndGgoKSAtIDEpICE9IGJ1Zi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJTdHlsZSBsaW1pdCBpcyB3cm9uZy4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGludCByYW5kSW50KFJhbmRvbSByYW5kLCBpbnQgbGltaXQpIHsKKworICAgICAgICByZXR1cm4gcmFuZEludChyYW5kLCAwLCBsaW1pdCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IHJhbmRJbnQoUmFuZG9tIHJhbmQsIGludCBzdGFydCwgaW50IGxpbWl0KSB7CisKKyAgICAgICAgaWYgKHN0YXJ0ID4gbGltaXQpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlJhbmdlIGxlbmd0aCBpcyBuZWdhdGl2ZS4iKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzdGFydCA9PSBsaW1pdCkgeworICAgICAgICAgICAgcmV0dXJuIHN0YXJ0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHN0YXJ0ICsgKE1hdGguYWJzKHJhbmQubmV4dEludCgpKSUobGltaXQtc3RhcnQpKSA7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc3R5bGVUZXN0KCkgeworCisgICAgICAgIE1UZXh0IHRleHQgPSBuZXcgU3R5bGVkVGV4dCgiMDEyMzQ1Njc4OSIsIEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQKTsKKworICAgICAgICBBdHRyaWJ1dGVNYXBbXSBzdHlsZXMgPSBuZXcgQXR0cmlidXRlTWFwW3RleHQubGVuZ3RoKCldOworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBzdHlsZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIHN0eWxlc1tpXSA9IEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQOworICAgICAgICB9CisgICAgICAgIEF0dHJpYnV0ZU1hcFtdIG9sZFN0eWxlcyA9IG5ldyBBdHRyaWJ1dGVNYXBbc3R5bGVzLmxlbmd0aF07CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoc3R5bGVzLCAwLCBvbGRTdHlsZXMsIDAsIHN0eWxlcy5sZW5ndGgpOworCisgICAgICAgIEF0dHJpYnV0ZU1hcCBiaWdTdHlsZSA9IG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5VTkRFUkxJTkUsIFRleHRBdHRyaWJ1dGUuVU5ERVJMSU5FX09OKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRBdHRyaWJ1dGUoVGV4dEF0dHJpYnV0ZS5TSVpFLCBuZXcgRmxvYXQoMjMuMGYpKTsKKworICAgICAgICBTdHlsZU1vZGlmaWVyW10gbW9kaWZpZXJzID0geworICAgICAgICAgICAgU3R5bGVNb2RpZmllci5jcmVhdGVSZXBsYWNlTW9kaWZpZXIobmV3IEF0dHJpYnV0ZU1hcChUZXh0QXR0cmlidXRlLldFSUdIVCwgVGV4dEF0dHJpYnV0ZS5XRUlHSFRfQk9MRCkpLAorICAgICAgICAgICAgU3R5bGVNb2RpZmllci5jcmVhdGVBZGRNb2RpZmllcihuZXcgQXR0cmlidXRlTWFwKFRleHRBdHRyaWJ1dGUuV0VJR0hULCBuZXcgRmxvYXQoMS4wZikpKSwKKyAgICAgICAgICAgIGNyZWF0ZU1pbnVzTW9kaWZpZXIoVGV4dEF0dHJpYnV0ZS5XRUlHSFQpLAorCisgICAgICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZUFkZE1vZGlmaWVyKG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5QT1NUVVJFLCBuZXcgRmxvYXQoMC4wZikpKSwKKyAgICAgICAgICAgIFN0eWxlTW9kaWZpZXIuY3JlYXRlUmVwbGFjZU1vZGlmaWVyKG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5QT1NUVVJFLCBUZXh0QXR0cmlidXRlLlBPU1RVUkVfT0JMSVFVRSkpLAorICAgICAgICAgICAgY3JlYXRlTWludXNNb2RpZmllcihUZXh0QXR0cmlidXRlLlBPU1RVUkUpLAorCisgICAgICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZUFkZE1vZGlmaWVyKGJpZ1N0eWxlKSwKKyAgICAgICAgICAgIFN0eWxlTW9kaWZpZXIuY3JlYXRlUmVwbGFjZU1vZGlmaWVyKGJpZ1N0eWxlKSwKKyAgICAgICAgICAgIGNyZWF0ZU1pbnVzTW9kaWZpZXIoYmlnU3R5bGUuZ2V0S2V5U2V0KCkpCisgICAgICAgIH07CisKKyAgICAgICAgUmFuZG9tIHJhbmQgPSBuZXcgUmFuZG9tKFJBTkRfU0VFRCk7CisgICAgICAgIGZpbmFsIGludCBzdG9wQXQgPSA0OworCisgICAgICAgIGZvciAoaW50IHRlc3RJdGVyYXRpb249MDsgdGVzdEl0ZXJhdGlvbiA8IFNUWUxFX1RFU1RfSVRFUkFUSU9OUyArIDE7IHRlc3RJdGVyYXRpb24rKykgeworCisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHN0eWxlcywgMCwgb2xkU3R5bGVzLCAwLCBzdHlsZXMubGVuZ3RoKTsKKworICAgICAgICAgICAgaW50IHN0YXJ0aW5nQXQgPSBJbnRlZ2VyLk1BWF9WQUxVRTsKKyAgICAgICAgICAgIGludCBlbmRpbmdBdCA9IEludGVnZXIuTUlOX1ZBTFVFOworICAgICAgICAgICAgaW50IG9sZFRzID0gdGV4dC5nZXRUaW1lU3RhbXAoKTsKKworICAgICAgICAgICAgLy8gaGFjayB3YXkgdG8gZG8gYW4gaW52YXJpYW50IGNoZWNrIGJlZm9yZSBzdGFydGluZy4uLgorICAgICAgICAgICAgaWYgKHRlc3RJdGVyYXRpb24gIT0gMCkgeworICAgICAgICAgICAgICAgIC8vIG1vZGlmeSBzdHlsZXMKKyAgICAgICAgICAgICAgICB0ZXh0LnJlc2V0RGFtYWdlZFJhbmdlKCk7CisgICAgICAgICAgICAgICAgc3RhcnRpbmdBdCA9IHJhbmRJbnQocmFuZCwgc3R5bGVzLmxlbmd0aCsxKTsKKyAgICAgICAgICAgICAgICBlbmRpbmdBdCA9IHJhbmRJbnQocmFuZCwgc3RhcnRpbmdBdCwgc3R5bGVzLmxlbmd0aCsxKTsKKyAgICAgICAgICAgICAgICBTdHlsZU1vZGlmaWVyIG1vZGlmaWVyID0gbW9kaWZpZXJzW3JhbmRJbnQocmFuZCwgbW9kaWZpZXJzLmxlbmd0aCldOworCisgICAgICAgICAgICAgICAgaWYgKHRlc3RJdGVyYXRpb24gPT0gc3RvcEF0KSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RJdGVyYXRpb24gPSBzdG9wQXQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRleHQubW9kaWZ5Q2hhcmFjdGVyU3R5bGVzKHN0YXJ0aW5nQXQsIGVuZGluZ0F0LCBtb2RpZmllcik7CisKKyAgICAgICAgICAgICAgICBmb3IgKGludCBqPXN0YXJ0aW5nQXQ7IGogPCBlbmRpbmdBdDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgIHN0eWxlc1tqXSA9IG1vZGlmaWVyLm1vZGlmeVN0eWxlKHN0eWxlc1tqXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBjaGVjayBpbnZhcmlhbnRzCisgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgb2xkU3R5bGUgPSBudWxsOworICAgICAgICAgICAgaW50IHRleHRMZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOworICAgICAgICAgICAgZm9yIChpbnQgcnVuU3RhcnQgPSAwOyBydW5TdGFydCA8IHRleHRMZW5ndGg7KSB7CisKKyAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgY3VycmVudFN0eWxlID0gdGV4dC5jaGFyYWN0ZXJTdHlsZUF0KHJ1blN0YXJ0KTsKKyAgICAgICAgICAgICAgICBpbnQgcnVuTGltaXQgPSB0ZXh0LmNoYXJhY3RlclN0eWxlTGltaXQocnVuU3RhcnQpOworICAgICAgICAgICAgICAgIGlmIChydW5TdGFydCA+PSBydW5MaW1pdCkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiUnVuIGxlbmd0aCBpcyBub3QgcG9zaXRpdmUiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRTdHlsZS5lcXVhbHMob2xkU3R5bGUpKSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJTdHlsZXMgZGlkbid0IG1lcmdlIik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZm9yIChpbnQgcG9zPXJ1blN0YXJ0OyBwb3MgPCBydW5MaW1pdDsgcG9zKyspIHsKKyAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlTWFwIGNoYXJTdHlsZUF0UG9zID0gdGV4dC5jaGFyYWN0ZXJTdHlsZUF0KHBvcyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U3R5bGUgIT0gY2hhclN0eWxlQXRQb3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJJdGVyYXRvciBzdHlsZSBpcyBub3QgZXF1YWwgdG8gdGV4dCBzdHlsZSBhdCAiICsgcG9zICsgIi4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgZXhwZWN0ZWQgPSBzdHlsZXNbcG9zXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFjdXJyZW50U3R5bGUuZXF1YWxzKGV4cGVjdGVkKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIkl0ZXJhdG9yIHN0eWxlIGRvZXNuJ3QgbWF0Y2ggZXhwZWN0ZWQgc3R5bGUgYXQgIiArIHBvcyArICIuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCEodGV4dC5jaGFyYWN0ZXJTdHlsZVN0YXJ0KHBvcykgPT0gcnVuU3RhcnQpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgISh0ZXh0LmNoYXJhY3RlclN0eWxlTGltaXQocG9zKSA9PSBydW5MaW1pdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJzdHlsZSBydW4gc3RhcnQgLyBsaW1pdCBpcyBub3QgY29uc2lzdGVudCIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJ1blN0YXJ0ID0gcnVuTGltaXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodGV4dExlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAgICBpZiAodGV4dC5jaGFyYWN0ZXJTdHlsZUF0KHRleHRMZW5ndGgpICE9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC5jaGFyYWN0ZXJTdHlsZUF0KHRleHRMZW5ndGgtMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkNoYXJhY3RlciBzdHlsZXMgYXQgZW5kIGFyZW4ndCB0aGUgc2FtZSIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gY2hlY2sgZGFtYWdlZCByYW5nZToKKyAgICAgICAgICAgIGludCBkYW1hZ2VTdGFydCA9IEludGVnZXIuTUFYX1ZBTFVFOworICAgICAgICAgICAgaW50IGRhbWFnZUxpbWl0ID0gSW50ZWdlci5NSU5fVkFMVUU7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGkgPCB0ZXh0TGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoIXN0eWxlc1tpXS5lcXVhbHMob2xkU3R5bGVzW2ldKSkgeworICAgICAgICAgICAgICAgICAgICBkYW1hZ2VTdGFydCA9IE1hdGgubWluKGksIGRhbWFnZVN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgZGFtYWdlTGltaXQgPSBNYXRoLm1heChpKzEsIGRhbWFnZUxpbWl0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGFtYWdlU3RhcnQgIT0gdGV4dC5kYW1hZ2VkUmFuZ2VTdGFydCgpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFtYWdlTGltaXQgIT0gdGV4dC5kYW1hZ2VkUmFuZ2VMaW1pdCgpKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIlRlc3QgaXRlcmF0aW9uOiAiICsgdGVzdEl0ZXJhdGlvbik7CisgICAgICAgICAgICAgICAgbG9nbG4oInN0YXJ0aW5nQXQ6ICIgKyBzdGFydGluZ0F0ICsgIjsgIGVuZGluZ0F0OiAiICsgZW5kaW5nQXQpOworICAgICAgICAgICAgICAgIGxvZ2xuKCJkYW1hZ2VTdGFydDogIiArIGRhbWFnZVN0YXJ0ICsgIjsgIGRhbWFnZUxpbWl0OiAiICsgZGFtYWdlTGltaXQpOworICAgICAgICAgICAgICAgIGxvZ2xuKCJ0ZXh0LnJhbmdlU3RhcnQ6ICIgKyB0ZXh0LmRhbWFnZWRSYW5nZVN0YXJ0KCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGV4dC5yYW5nZUxpbWl0OiAiICsgdGV4dC5kYW1hZ2VkUmFuZ2VMaW1pdCgpKTsKKyAgICAgICAgICAgICAgICBlcnJsbigiRGFtYWdlIHJhbmdlIHN0YXJ0IG9yIGxpbWl0IGlzIG5vdCBleHBlY3RlZCB2YWx1ZSIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoKGRhbWFnZUxpbWl0ID09IEludGVnZXIuTUlOX1ZBTFVFKSAhPSAob2xkVHMgPT0gdGV4dC5nZXRUaW1lU3RhbXAoKSkpIHsKKworICAgICAgICAgICAgICAgIGVycmxuKCJ0aW1lU3RhbXAgaXMgaW5jb3JyZWN0Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBlcnIoU3RyaW5nIG1lc3NhZ2UpIHsKKyAgICAKKyAgICAgICAgaWYgKHRlc3RJdGVyYXRpb24gIT0gTk9UX0lOX01PTktFWV9URVNUKSB7CisgICAgICAgICAgICBtZXNzYWdlID0gInRlc3RJdGVyYXRpb249Iit0ZXN0SXRlcmF0aW9uKyI7IHRlc3RDYXNlPSIrdGhlQ2FzZSttZXNzYWdlOworICAgICAgICB9CisgICAgICAgIHN1cGVyLmVycihtZXNzYWdlKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgKiBQZXJmb3JtIGEgcmFuZG9tIHNlcmllcyBvZiBvcGVyYXRpb25zIG9uIGFuIE1UZXh0IGFuZAorICAgICogY2hlY2sgdGhlIHJlc3VsdCBvZiBlYWNoIG9wZXJhdGlvbiBhZ2FpbnN0IGEgc2V0IG9mIGludmFyaWFudHMuCisgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBtb25rZXlUZXN0KGJvb2xlYW4gc3RyZWFtaW5nKSB7CisKKyAgICAgICAgLyoKKyAgICAgICAgICAgIFlvdSBjYW4gYWRkIGFueSBvcGVyYXRpb24gdG8gdGhlIHN3aXRjaCBzdGF0ZW1lbnQgcHJvdmlkZWQgaXQKKyAgICAgICAgICAgIHByZXNlcnZlcyB0aGUgZm9sbG93aW5nIGludmFyaWFudHM6CisgICAgICAgICAgICAtIFRoZSBTdHJpbmcgcGxhaW5UZXh0IGNvbnRhaW5zIHRoZSBzYW1lIHRleHQgYXMgdGhlIFN0eWxlZFN0cmluZ0J1ZmZlci4KKyAgICAgICAgICAgICAgT2J2aW91c2x5LCBmb3IgdGhlIHRlc3QgdG8gYmUgbWVhbmluZ2Z1bCBwbGFpblRleHQgbXVzdCBiZSBjb21wdXRlZAorICAgICAgICAgICAgICBpbmRlcGVuZGVudGx5IG9mIHRoZSBidWZmZXIgKGllIGRvbid0IHdyaXRlOiAgcGxhaW5UZXh0ID0gYnVmLmdldFN0eWxlZFN0cmluZygpLnRvU3RyaW5nKCkpLgorICAgICAgICAgICAgLSBFdmVyeSAnYicgaXMgYm9sZCwgZXZlcnkgJ2knIGlzIGl0YWxpYywgZXZlcnkgJ3AnIGlzIHBsYWluLCBhbmQKKyAgICAgICAgICAgICAgbm8gb3RoZXIgY2hhcmFjdGVycyBhcHBlYXIgaW4gdGhlIHRleHQuCisgICAgICAgICovCisKKyAgICAgICAgQXR0cmlidXRlTWFwIGJvbGRBdHRycyA9IG5ldyBBdHRyaWJ1dGVNYXAoVGV4dEF0dHJpYnV0ZS5XRUlHSFQsIFRleHRBdHRyaWJ1dGUuV0VJR0hUX0JPTEQpOworICAgICAgICBBdHRyaWJ1dGVNYXAgaXRhbGljQXR0cnMgPSBuZXcgQXR0cmlidXRlTWFwKFRleHRBdHRyaWJ1dGUuUE9TVFVSRSwgVGV4dEF0dHJpYnV0ZS5QT1NUVVJFX09CTElRVUUpOworICAgICAgICBBdHRyaWJ1dGVNYXAgZW1wdHlBdHRycyA9IEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQOworCisgICAgICAgIGZpbmFsIFN0cmluZyBib2xkMVN0cl9nZXRTdHJpbmcgPSAiYiI7CisgICAgICAgIE1Db25zdFRleHQgYm9sZDFTdHIgPSBuZXcgU3R5bGVkVGV4dChib2xkMVN0cl9nZXRTdHJpbmcsIGJvbGRBdHRycyk7CisKKyAgICAgICAgZmluYWwgU3RyaW5nIGl0YWxpYzFTdHJfZ2V0U3RyaW5nID0gImkiOworICAgICAgICBNQ29uc3RUZXh0IGl0YWxpYzFTdHIgPSBuZXcgU3R5bGVkVGV4dChpdGFsaWMxU3RyX2dldFN0cmluZywgaXRhbGljQXR0cnMpOworCisgICAgICAgIGZpbmFsIFN0cmluZyBwbGFpbjFTdHJfZ2V0U3RyaW5nID0gInAiOworICAgICAgICBNQ29uc3RUZXh0IHBsYWluMVN0ciA9IG5ldyBTdHlsZWRUZXh0KHBsYWluMVN0cl9nZXRTdHJpbmcsIGVtcHR5QXR0cnMpOworCisgICAgICAgIFN0eWxlZFRleHQgdGVtcCA9IG5ldyBTdHlsZWRUZXh0KCk7CisgICAgICAgIHRlbXAuYXBwZW5kKGJvbGQxU3RyKTsKKyAgICAgICAgdGVtcC5hcHBlbmQoaXRhbGljMVN0cik7CisgICAgICAgIGZpbmFsIFN0cmluZyBib2xkSXRhbGljU3RyX2dldFN0cmluZyA9IGJvbGQxU3RyX2dldFN0cmluZy5jb25jYXQoaXRhbGljMVN0cl9nZXRTdHJpbmcpOworICAgICAgICBNQ29uc3RUZXh0IGJvbGRJdGFsaWNTdHIgPSB0ZW1wOworCisgICAgICAgIHRlbXAgPSBuZXcgU3R5bGVkVGV4dCgpOworICAgICAgICB0ZW1wLmFwcGVuZChib2xkMVN0cik7CisgICAgICAgIHRlbXAuYXBwZW5kKGJvbGQxU3RyKTsKKyAgICAgICAgdGVtcC5hcHBlbmQoYm9sZDFTdHIpOworICAgICAgICBmaW5hbCBTdHJpbmcgYm9sZDNTdHJfZ2V0U3RyaW5nID0gImJiYiI7CisgICAgICAgIE1Db25zdFRleHQgYm9sZDNTdHIgPSB0ZW1wOworCisgICAgICAgIE1UZXh0IGJ1ZiA9IG5ldyBTdHlsZWRUZXh0KCk7CisgICAgICAgIFN0cmluZyBwbGFpblRleHQgPSBuZXcgU3RyaW5nKCk7CisgICAgICAgIC8vaW50IHRlc3RJdGVyYXRpb249MDsgLSBub3cgaW5zdGFuY2UgdmFyaWFibGVzIHNvIGVycmxuIGNhbiByZXBvcnQgaXQKKyAgICAgICAgLy9pbnQgdGhlQ2FzZT0wOworCisgICAgICAgIGZpbmFsIGludCBOVU1fQ0FTRVMgPSAxNDsKKyAgICAgICAgYm9vbGVhbltdIGNhc2VzRXhlY3V0ZWQgPSBuZXcgYm9vbGVhbltOVU1fQ0FTRVNdOworICAgICAgICBmaW5hbCBpbnQgc3RvcEF0ID0gLTE7CisgICAgICAgIFJhbmRvbSByYW5kID0gbmV3IFJhbmRvbShSQU5EX1NFRUQpOworCisgICAgICAgIGZpbmFsIFN0cmluZyBBTFdBWVNfRElGRkVSRU5UID0gIlx1RkVGRiI7CisKKyAgICAgICAgICAgIGZvciAodGVzdEl0ZXJhdGlvbj0wOyB0ZXN0SXRlcmF0aW9uIDwgVEVTVF9JVEVSQVRJT05TOyB0ZXN0SXRlcmF0aW9uKyspIHsKKworICAgICAgICAgICAgICAgIHRoZUNhc2UgPSByYW5kSW50KHJhbmQsIE5VTV9DQVNFUyk7CisKKyAgICAgICAgICAgICAgICBjYXNlc0V4ZWN1dGVkW3RoZUNhc2VdID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGlmICh0ZXN0SXRlcmF0aW9uID09IHN0b3BBdCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0SXRlcmF0aW9uID0gc3RvcEF0OyAgLy8gQ29udmVuaWVudCBwbGFjZSB0byBwdXQgYnJlYWtwb2ludAorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGludCB0aW1lU3RhbXAgPSBidWYuZ2V0VGltZVN0YW1wKCk7CisgICAgICAgICAgICAgICAgU3RyaW5nIG9sZFBsYWluVGV4dCA9IHBsYWluVGV4dDsKKyAgICAgICAgICAgICAgICBpZiAob2xkUGxhaW5UZXh0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIm9sZFBsYWluVGV4dCBpcyBudWxsISIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHN3aXRjaCAodGhlQ2FzZSkgeworCisgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBuZXcgc3RyaW5nOyByZXBsYWNlIGNoYXJzIGF0IHN0YXJ0IHdpdGggZGlmZmVyZW50IHN0eWxlCisgICAgICAgICAgICAgICAgICAgICAgICBidWYgPSBuZXcgU3R5bGVkVGV4dCgpOworICAgICAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChib2xkM1N0cik7CisgICAgICAgICAgICAgICAgICAgICAgICBidWYucmVwbGFjZSgwLCAxLCBpdGFsaWMxU3RyLCAwLCBpdGFsaWMxU3RyLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5yZXBsYWNlKDAsIDAsIGl0YWxpYzFTdHIsIDAsIGl0YWxpYzFTdHIubGVuZ3RoKCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICBwbGFpblRleHQgPSBib2xkM1N0cl9nZXRTdHJpbmcuc3Vic3RyaW5nKDEsIGJvbGQzU3RyLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBsYWluVGV4dCA9IGl0YWxpYzFTdHJfZ2V0U3RyaW5nLmNvbmNhdChwbGFpblRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgcGxhaW5UZXh0ID0gaXRhbGljMVN0cl9nZXRTdHJpbmcuY29uY2F0KHBsYWluVGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICBvbGRQbGFpblRleHQgPSBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVsZXRlIHRoZSBsYXN0IGNoYXJhY3RlciBmcm9tIHRoZSBzdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWYubGVuZ3RoKCkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5yZXBsYWNlKDAsIDAsIGl0YWxpYzFTdHIsIDAsIGl0YWxpYzFTdHIubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWluVGV4dCA9IGl0YWxpYzFTdHJfZ2V0U3RyaW5nOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZFBsYWluVGV4dCA9IEFMV0FZU19ESUZGRVJFTlQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBidWYucmVtb3ZlKGJ1Zi5sZW5ndGgoKS0xLCBidWYubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcGxhaW5UZXh0ID0gcGxhaW5UZXh0LnN1YnN0cmluZygwLCBwbGFpblRleHQubGVuZ3RoKCktMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXBsYWNlIHNvbWUgb2YgdGhlIGJ1ZmZlciB3aXRoIGJvbGRJdGFsaWNTdHIKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCByU3RhcnQgPSByYW5kSW50KHJhbmQsIGJ1Zi5sZW5ndGgoKSsxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCByU3RvcCA9IHJhbmRJbnQocmFuZCwgclN0YXJ0LCBidWYubGVuZ3RoKCkrMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBidWYucmVwbGFjZShyU3RhcnQsIHJTdG9wLCBib2xkSXRhbGljU3RyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmV3U3RyaW5nID0gKHJTdGFydD4wKT8gcGxhaW5UZXh0LnN1YnN0cmluZygwLCByU3RhcnQpIDogbmV3IFN0cmluZygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1N0cmluZyA9IG5ld1N0cmluZy5jb25jYXQoYm9sZEl0YWxpY1N0cl9nZXRTdHJpbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyU3RvcCA8IHBsYWluVGV4dC5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U3RyaW5nID0gbmV3U3RyaW5nLmNvbmNhdChwbGFpblRleHQuc3Vic3RyaW5nKHJTdG9wLCBwbGFpblRleHQubGVuZ3RoKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRQbGFpblRleHQgPSBBTFdBWVNfRElGRkVSRU5UOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWluVGV4dCA9IG5ld1N0cmluZzsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIGNhc2UgMzoKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlcGVhdGVkbHkgaW5zZXJ0IHN0cmluZ3MgaW50byB0aGUgY2VudGVyIG9mIHRoZSBidWZmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5zUG9zID0gYnVmLmxlbmd0aCgpIC8gMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgcHJlZml4ID0gcGxhaW5UZXh0LnN1YnN0cmluZygwLCBpbnNQb3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzdWZmaXggPSBwbGFpblRleHQuc3Vic3RyaW5nKGluc1BvcywgcGxhaW5UZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbWlkZGxlID0gbmV3IFN0cmluZygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGlpPTA7IGlpPDQ7IGlpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUNvbnN0VGV4dCB3aGljaCA9IChpaSUyPT0wKT8gYm9sZEl0YWxpY1N0ciA6IGJvbGQzU3RyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgd2hpY2hTdHJpbmcgPSAoaWklMj09MCk/IGJvbGRJdGFsaWNTdHJfZ2V0U3RyaW5nIDogYm9sZDNTdHJfZ2V0U3RyaW5nOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGVtcFBvcyA9IGluc1BvcyttaWRkbGUubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5pbnNlcnQodGVtcFBvcywgd2hpY2gpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWRkbGUgPSBtaWRkbGUuY29uY2F0KHdoaWNoU3RyaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhaW5UZXh0ID0gcHJlZml4LmNvbmNhdChtaWRkbGUpLmNvbmNhdChzdWZmaXgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZFBsYWluVGV4dCA9IEFMV0FZU19ESUZGRVJFTlQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAgICAgICAgIC8vIGluc2VydCBib2xkMVN0ciBhdCBlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoYm9sZDFTdHIpOworICAgICAgICAgICAgICAgICAgICAgICAgcGxhaW5UZXh0ID0gcGxhaW5UZXh0LmNvbmNhdChib2xkMVN0cl9nZXRTdHJpbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSA1OgorICAgICAgICAgICAgICAgICAgICAvLyBkZWxldGUgYSBjaGFyYWN0ZXIgZnJvbSB0aGUgc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnVmLmxlbmd0aCgpID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZWxQb3MgPSByYW5kSW50KHJhbmQsIGJ1Zi5sZW5ndGgoKS0xKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYucmVtb3ZlKGRlbFBvcywgZGVsUG9zKzEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWluVGV4dCA9IHBsYWluVGV4dC5zdWJzdHJpbmcoMCwgZGVsUG9zKS5jb25jYXQocGxhaW5UZXh0LnN1YnN0cmluZyhkZWxQb3MrMSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLnJlcGxhY2UoMCwgMCwgcGxhaW4xU3RyLCAwLCBwbGFpbjFTdHIubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWluVGV4dCA9IHBsYWluMVN0cl9nZXRTdHJpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBjYXNlIDY6CisgICAgICAgICAgICAgICAgICAgIC8vIHJlcGxhY2UgdGhlIGNvbnRlbnRzIG9mIHRoZSBidWZmZXIgKGV4Y2VwdCB0aGUgZmlyc3QgY2hhcmFjdGVyKSB3aXRoIGl0c2VsZgorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCA9IGJ1Zi5sZW5ndGgoKSA+IDE/IDEgOiAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5yZXBsYWNlKHN0YXJ0LCBidWYubGVuZ3RoKCksIGJ1Zik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhaW5UZXh0ID0gcGxhaW5UZXh0LnN1YnN0cmluZygwLCBzdGFydCkuY29uY2F0KHBsYWluVGV4dCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJ1Zi5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkUGxhaW5UZXh0ID0gQUxXQVlTX0RJRkZFUkVOVDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBjYXNlIDc6CisgICAgICAgICAgICAgICAgICAgIC8vIGFwcGVuZCB0aGUgY29udGVudHMgb2YgdGhlIGJ1ZmZlciB0byBpdHNlbGYKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNQ29uc3RUZXh0IGNvbnRlbnQgPSBidWY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLmluc2VydChidWYubGVuZ3RoKCksIGNvbnRlbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWluVGV4dCA9IHBsYWluVGV4dC5jb25jYXQocGxhaW5UZXh0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIGNhc2UgODoKKyAgICAgICAgICAgICAgICAgICAgLy8gcmVwbGFjZSB0aGUgYnVmZmVyIHdpdGggYm9sZEl0YWxpY1N0citib2xkM1N0cgorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1UZXh0IHJlcGxhY2VtZW50ID0gbmV3IFN0eWxlZFRleHQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudC5hcHBlbmQoYm9sZEl0YWxpY1N0cik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQuYXBwZW5kKGJvbGQzU3RyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYucmVwbGFjZSgwLCBidWYubGVuZ3RoKCksIHJlcGxhY2VtZW50LCAwLCByZXBsYWNlbWVudC5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhaW5UZXh0ID0gYm9sZEl0YWxpY1N0cl9nZXRTdHJpbmcuY29uY2F0KGJvbGQzU3RyX2dldFN0cmluZyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkUGxhaW5UZXh0ID0gQUxXQVlTX0RJRkZFUkVOVDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIGNhc2UgOToKKyAgICAgICAgICAgICAgICAgICAgLy8gaW5zZXJ0IGJvbGQxU3RyIGF0IGVuZCAtIHNhbWUgYXMgNCBidXQgdXNlcyBkaWZmZXJlbnQgQVBJCisgICAgICAgICAgICAgICAgICAgICAgICBidWYucmVwbGFjZShidWYubGVuZ3RoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYubGVuZ3RoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2xkMVN0cl9nZXRTdHJpbmcudG9DaGFyQXJyYXkoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2xkMVN0cl9nZXRTdHJpbmcubGVuZ3RoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2xkQXR0cnMpOworICAgICAgICAgICAgICAgICAgICAgICAgcGxhaW5UZXh0ID0gcGxhaW5UZXh0LmNvbmNhdChib2xkMVN0cl9nZXRTdHJpbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxMDoKKyAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIGFsbAorICAgICAgICAgICAgICAgICAgICAgICAgYnVmLnJlbW92ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcGxhaW5UZXh0ID0gIiI7CisgICAgICAgICAgICAgICAgICAgICAgICBvbGRQbGFpblRleHQgPSBBTFdBWVNfRElGRkVSRU5UOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxMToKKyAgICAgICAgICAgICAgICAgICAgLy8gcmVtb3ZlIGFsbCAtIGRpZmZlcmVudCB3YXkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5yZW1vdmUoMCwgYnVmLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBsYWluVGV4dCA9ICIiOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxMjoKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluc2VydCAnaScgYXQgM3JkIGNoYXJhY3RlciAob3IgbGFzdCwgaWYgZmV3ZXIgdGhhbiAzIGNoYXJzKQorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbnNQb3MgPSBNYXRoLm1pbihidWYubGVuZ3RoKCksIDMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5yZXBsYWNlKGluc1BvcywgaW5zUG9zLCAnaScsIGl0YWxpY0F0dHJzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFpblRleHQgPSAocGxhaW5UZXh0LnN1YnN0cmluZygwLCBpbnNQb3MpKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25jYXQoaXRhbGljMVN0cl9nZXRTdHJpbmcpLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmNhdChwbGFpblRleHQuc3Vic3RyaW5nKGluc1BvcykpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJlYW1pbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaHJvd2FibGUgZXJyb3IgPSBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ5dGVBcnJheU91dHB1dFN0cmVhbSBieXRlc091dCA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0T3V0cHV0U3RyZWFtIG9iak91dCA9IG5ldyBPYmplY3RPdXRwdXRTdHJlYW0oYnl0ZXNPdXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYmpPdXQud3JpdGVPYmplY3QoYnVmKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCeXRlQXJyYXlJbnB1dFN0cmVhbSBieXRlc0luID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShieXRlc091dC50b0J5dGVBcnJheSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0SW5wdXRTdHJlYW0gb2JqSW4gPSBuZXcgT2JqZWN0SW5wdXRTdHJlYW0oYnl0ZXNJbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiA9IChNVGV4dCkgb2JqSW4ucmVhZE9iamVjdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRQbGFpblRleHQgPSBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRjaChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2goQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycm9yICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJTdHJlYW1pbmcgcHJvYmxlbTogIiArIGVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIkludmFsaWQgY2FzZS4iKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBDaGVjayB0aW1lIHN0YW1wIGlmIG9sZFBsYWluVGV4dCAhPSBudWxsLgorICAgICAgICAgICAgICAgIC8vIFRpbWUgc3RhbXAgc2hvdWxkIGJlIGRpZmZlcmVudCBpZmYKKyAgICAgICAgICAgICAgICAvLyBvbGRQbGFpblRleHQgPT0gcGxhaW5UZXh0CisgICAgICAgICAgICAgICAgaWYgKG9sZFBsYWluVGV4dCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgodGltZVN0YW1wPT1idWYuZ2V0VGltZVN0YW1wKCkpICE9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGRQbGFpblRleHQuZXF1YWxzKHBsYWluVGV4dCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJwbGFpblRleHQgaGFzaENvZGU6ICIgKyBwbGFpblRleHQuaGFzaENvZGUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2dsbigib2xkUGxhaW5UZXh0IGhhc2hDb2RlOiAiICsgb2xkUGxhaW5UZXh0Lmhhc2hDb2RlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIlRpbWUgc3RhbXAgaXMgaW5jb3JyZWN0Iik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBub3cgY2hlY2sgaW52YXJpYW50czoKKyAgICAgICAgICAgICAgICBpZiAocGxhaW5UZXh0Lmxlbmd0aCgpICE9IGJ1Zi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiTGVuZ3RocyBkb24ndCBtYXRjaCIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZvciAoaW50IGo9MDsgaiA8IGJ1Zi5sZW5ndGgoKTsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChidWYuYXQoaikgIT0gcGxhaW5UZXh0LmNoYXJBdChqKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIkNoYXJhY3RlcnMgZG9uJ3QgbWF0Y2guIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpbnQgc3RhcnQ7CisgICAgICAgICAgICAgICAgZm9yIChzdGFydCA9IDA7IHN0YXJ0IDwgYnVmLmxlbmd0aCgpOykgeworCisgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydCAhPSBidWYuY2hhcmFjdGVyU3R5bGVTdGFydChzdGFydCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJzdHlsZSBzdGFydCBpcyB3cm9uZyIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGludCBsaW1pdCA9IGJ1Zi5jaGFyYWN0ZXJTdHlsZUxpbWl0KHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IGxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigic3RhcnQgPj0gbGltaXQiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjaGFyIGN1cnJlbnQgPSBwbGFpblRleHQuY2hhckF0KHN0YXJ0KTsKKworICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVNYXAgY29tcCA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50ID09ICdwJykgeworICAgICAgICAgICAgICAgICAgICAgICAgY29tcCA9IGVtcHR5QXR0cnM7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudCA9PSAnYicpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAgPSBib2xkQXR0cnM7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudCA9PSAnaScpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbXAgPSBpdGFsaWNBdHRyczsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJBbiBpbnZhbGlkIGNoYXJhY3RlciBzbnVjayBpbiEiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZU1hcCBzdGFydFN0eWxlID0gYnVmLmNoYXJhY3RlclN0eWxlQXQoc3RhcnQpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWNvbXAuZXF1YWxzKHN0YXJ0U3R5bGUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiU3R5bGUgaXMgbm90IGV4cGVjdGVkIHN0eWxlLiIpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IHN0YXJ0OyBqIDwgbGltaXQ7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBsYWluVGV4dC5jaGFyQXQoaikgIT0gY3VycmVudCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJDaGFyYWN0ZXIgZG9lc24ndCBtYXRjaCBzdHlsZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWYuY2hhcmFjdGVyU3R5bGVBdChqKSAhPSBzdGFydFN0eWxlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIkluY29ycmVjdCBzdHlsZSBpbiBydW4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChsaW1pdCA8IGJ1Zi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBsYWluVGV4dC5jaGFyQXQobGltaXQpID09IGN1cnJlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiU3R5bGUgcnVuIGVuZHMgdG9vIHNvb24uIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBsaW1pdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ICE9IGJ1Zi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigiTGFzdCBsaW1pdCBpcyBub3QgYnVmZmVyIGxlbmd0aC4iKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyB3b24ndCB0cnkgdG8gY29tcHV0ZSBhbmQgY2hlY2sgZGFtYWdlZCByYW5nZTsgIGhvd2V2ZXIsCisgICAgICAgICAgICAgICAgLy8gaWYgbm9uZW1wdHkgaXQgc2hvdWxkIGFsd2F5cyBiZSB3aXRoaW4gdGV4dAorICAgICAgICAgICAgICAgIGludCBkYW1hZ2VTdGFydCA9IGJ1Zi5kYW1hZ2VkUmFuZ2VTdGFydCgpOworICAgICAgICAgICAgICAgIGludCBkYW1hZ2VMaW1pdCA9IGJ1Zi5kYW1hZ2VkUmFuZ2VMaW1pdCgpOworICAgICAgICAgICAgICAgIGlmIChkYW1hZ2VTdGFydCA9PSBJbnRlZ2VyLk1BWF9WQUxVRSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZGFtYWdlTGltaXQgIT0gSW50ZWdlci5NSU5fVkFMVUUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJJbnZhbGlkIGVtcHR5IGludGVydmFsIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChkYW1hZ2VTdGFydCA+IGRhbWFnZUxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnJsbigiRGFtYWdlIHJhbmdlIGludmVydGVkIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGRhbWFnZVN0YXJ0IDwgMCB8fCBkYW1hZ2VMaW1pdCA+IGJ1Zi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybG4oIkRhbWFnZSByYW5nZSBlbmRwb2ludCBvdXQgb2YgYm91bmRzIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgdGVzdEl0ZXJhdGlvbiA9IE5PVF9JTl9NT05LRVlfVEVTVDsKKyAgICAgICAgCisgICAgICAgIGJvb2xlYW4gYWxsQ2FzZXNFeGVjdXRlZCA9IHRydWU7CisgICAgICAgIGZvciAoaW50IGluZGV4PTA7IGluZGV4IDwgTlVNX0NBU0VTOyBpbmRleCsrKSB7CisgICAgICAgICAgICBhbGxDYXNlc0V4ZWN1dGVkICY9IGNhc2VzRXhlY3V0ZWRbaW5kZXhdOworICAgICAgICAgICAgaWYgKGNhc2VzRXhlY3V0ZWRbaW5kZXhdID09IGZhbHNlKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIkNhc2UgIiArIGluZGV4ICsgIiBub3QgZXhlY3V0ZWQuIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy9pZiAoYWxsQ2FzZXNFeGVjdXRlZCkgeworICAgICAgICAvLyAgICBsb2dsbigiQWxsIGNhc2VzIGV4ZWN1dGVkLiIpOworICAgICAgICAvL30KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGVzdC9yaWNodGV4dC9UZXN0TVRleHRTdHJlYW1pbmcuamF2YSBiL3NyYy9jb20vaWJtL3Rlc3QvcmljaHRleHQvVGVzdE1UZXh0U3RyZWFtaW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTIwODM0NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3QvcmljaHRleHQvVGVzdE1UZXh0U3RyZWFtaW5nLmphdmEKQEAgLTAsMCArMSwxNjIgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRlc3RNVGV4dFN0cmVhbWluZy5qYXZhLHYgJCAkUmV2aXNpb246IDEuMiAkICREYXRlOiAyMDAwLzA0LzI0IDIwOjUyOjU4ICQKKyAqCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFRoZSBwcm9ncmFtIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBhbnkgd2FycmFudHkgZXhwcmVzcyBvcgorICogaW1wbGllZCwgaW5jbHVkaW5nIHRoZSB3YXJyYW50eSBvZiBub24taW5mcmluZ2VtZW50IGFuZCB0aGUgaW1wbGllZAorICogd2FycmFudGllcyBvZiBtZXJjaGFudGliaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlLgorICogSUJNIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IGRhbWFnZXMgc3VmZmVyZWQgYnkgeW91IGFzIGEgcmVzdWx0CisgKiBvZiB1c2luZyB0aGUgUHJvZ3JhbS4gSW4gbm8gZXZlbnQgd2lsbCBJQk0gYmUgbGlhYmxlIGZvciBhbnkKKyAqIHNwZWNpYWwsIGluZGlyZWN0IG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvciBsb3N0IHByb2ZpdHMgZXZlbiBpZgorICogSUJNIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHRoZWlyIG9jY3VycmVuY2UuIElCTQorICogd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgdGhpcmQgcGFydHkgY2xhaW1zIGFnYWluc3QgeW91LgorICovCitwYWNrYWdlIGNvbS5pYm0udGVzdC5yaWNodGV4dDsKKworaW1wb3J0IGNvbS5pYm0udGVzdC5UZXN0Rm13azsKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLmF3dC5Db2xvcjsKKworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5NVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3RhbmRhcmRUYWJSdWxlcjsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVkVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVNb2RpZmllcjsKKworaW1wb3J0IGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzLkF0dHJpYnV0ZU1hcDsKK2ltcG9ydCBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlcy5UZXh0QXR0cmlidXRlOworCitwdWJsaWMgY2xhc3MgVGVzdE1UZXh0U3RyZWFtaW5nIGV4dGVuZHMgVGVzdEZtd2sgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAgICAgICAgICAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgICBuZXcgVGVzdE1UZXh0U3RyZWFtaW5nKCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIHB1YmxpYyBUZXN0TVRleHRTdHJlYW1pbmcoKSB7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKworICAgICAgICBzaW1wbGVUZXN0KCk7CisgICAgICAgIGFsbEF0dHJpYnV0ZXNUZXN0KCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNpbXBsZVRlc3QoKSB7CisKKyAgICAgICAgQXR0cmlidXRlTWFwIHN0eWxlID0gQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVA7CisgICAgICAgIE1UZXh0IHRleHQgPSBuZXcgU3R5bGVkVGV4dCgiSGVsbG8gd29ybGQhIiwgc3R5bGUpOworCisgICAgICAgIHN0cmVhbUFuZENvbXBhcmUodGV4dCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgVGVzdE1vZGlmaWVyIGV4dGVuZHMgU3R5bGVNb2RpZmllciB7CisKKyAgICAgICAgcHJpdmF0ZSBPYmplY3QgZktleTsKKyAgICAgICAgcHJpdmF0ZSBPYmplY3QgZlZhbHVlOworCisgICAgICAgIHB1YmxpYyBBdHRyaWJ1dGVNYXAgbW9kaWZ5U3R5bGUoQXR0cmlidXRlTWFwIHN0eWxlKSB7CisKKyAgICAgICAgICAgIHJldHVybiBzdHlsZS5hZGRBdHRyaWJ1dGUoZktleSwgZlZhbHVlKTsKKyAgICAgICAgfQorCisgICAgICAgIFRlc3RNb2RpZmllcihPYmplY3Qga2V5LCBPYmplY3QgdmFsdWUpIHsKKworICAgICAgICAgICAgZktleSA9IGtleTsKKyAgICAgICAgICAgIGZWYWx1ZSA9IHZhbHVlOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGFsbEF0dHJpYnV0ZXNUZXN0KCkgeworCisgICAgICAgIEF0dHJpYnV0ZU1hcCBzdHlsZSA9IEF0dHJpYnV0ZU1hcC5FTVBUWV9BVFRSSUJVVEVfTUFQOworICAgICAgICBNVGV4dCB0ZXh0ID0gbmV3IFN0eWxlZFRleHQoIkhlbGxvIHdvcmxkISIsIHN0eWxlKTsKKworICAgICAgICBpbnQgbGVuZ3RoID0gdGV4dC5sZW5ndGgoKTsKKworICAgICAgICBmaW5hbCBib29sZWFuIENIQVJBQ1RFUiA9IHRydWU7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gUEFSQUdSQVBIID0gZmFsc2U7CisKKyAgICAgICAgYWRkU3R5bGUodGV4dCwgMCwgbGVuZ3RoLzIsIFRleHRBdHRyaWJ1dGUuRkFNSUxZLCAiVGltZXMiLCBDSEFSQUNURVIpOworICAgICAgICBhZGRTdHlsZSh0ZXh0LCBsZW5ndGgvMiwgbGVuZ3RoLCBUZXh0QXR0cmlidXRlLldFSUdIVCwgVGV4dEF0dHJpYnV0ZS5XRUlHSFRfQk9MRCwgQ0hBUkFDVEVSKTsKKyAgICAgICAgYWRkU3R5bGUodGV4dCwgMCwgbGVuZ3RoLzIsIFRleHRBdHRyaWJ1dGUuUE9TVFVSRSwgVGV4dEF0dHJpYnV0ZS5QT1NUVVJFX09CTElRVUUsIENIQVJBQ1RFUik7CisgICAgICAgIGFkZFN0eWxlKHRleHQsIDAsIGxlbmd0aC8yLCBUZXh0QXR0cmlidXRlLlNJWkUsIG5ldyBGbG9hdCgxMy43ZiksIENIQVJBQ1RFUik7CisgICAgICAgIGFkZFN0eWxlKHRleHQsIGxlbmd0aC8yLCBsZW5ndGgsIFRleHRBdHRyaWJ1dGUuU1VQRVJTQ1JJUFQsIFRleHRBdHRyaWJ1dGUuU1VQRVJTQ1JJUFRfU1VCLCBDSEFSQUNURVIpOworICAgICAgICBhZGRTdHlsZSh0ZXh0LCAwLCBsZW5ndGgvMiwgVGV4dEF0dHJpYnV0ZS5GT1JFR1JPVU5ELCBDb2xvci5ibHVlLCBDSEFSQUNURVIpOworICAgICAgICBhZGRTdHlsZSh0ZXh0LCAwLCBsZW5ndGgvMiwgVGV4dEF0dHJpYnV0ZS5CQUNLR1JPVU5ELCBDb2xvci5yZWQsIENIQVJBQ1RFUik7CisgICAgICAgIGFkZFN0eWxlKHRleHQsIDAsIGxlbmd0aC0xLCBUZXh0QXR0cmlidXRlLlNUUklLRVRIUk9VR0gsIEJvb2xlYW4uVFJVRSwgQ0hBUkFDVEVSKTsKKworICAgICAgICBhZGRTdHlsZSh0ZXh0LCAwLCBsZW5ndGgsIFRleHRBdHRyaWJ1dGUuRVhUUkFfTElORV9TUEFDSU5HLCBuZXcgRmxvYXQoNCksIFBBUkFHUkFQSCk7CisgICAgICAgIGFkZFN0eWxlKHRleHQsIDAsIGxlbmd0aCwgVGV4dEF0dHJpYnV0ZS5GSVJTVF9MSU5FX0lOREVOVCwgbmV3IEZsb2F0KDYpLCBQQVJBR1JBUEgpOworICAgICAgICBhZGRTdHlsZSh0ZXh0LCAwLCBsZW5ndGgsIFRleHRBdHRyaWJ1dGUuTUlOX0xJTkVfU1BBQ0lORywgbmV3IEZsb2F0KDcpLCBQQVJBR1JBUEgpOworICAgICAgICBhZGRTdHlsZSh0ZXh0LCAwLCBsZW5ndGgsIFRleHRBdHRyaWJ1dGUuTElORV9GTFVTSCwgVGV4dEF0dHJpYnV0ZS5GTFVTSF9UUkFJTElORywgUEFSQUdSQVBIKTsKKyAgICAgICAgYWRkU3R5bGUodGV4dCwgMCwgbGVuZ3RoLCBUZXh0QXR0cmlidXRlLkxFQURJTkdfTUFSR0lOLCBuZXcgRmxvYXQoOSksIFBBUkFHUkFQSCk7CisgICAgICAgIGFkZFN0eWxlKHRleHQsIDAsIGxlbmd0aCwgVGV4dEF0dHJpYnV0ZS5UUkFJTElOR19NQVJHSU4sIG5ldyBGbG9hdCg5KSwgUEFSQUdSQVBIKTsKKyAgICAgICAgYWRkU3R5bGUodGV4dCwgMCwgbGVuZ3RoLCBUZXh0QXR0cmlidXRlLlRBQl9SVUxFUiwgbmV3IFN0YW5kYXJkVGFiUnVsZXIoKSwgUEFSQUdSQVBIKTsKKworICAgICAgICBzdHJlYW1BbmRDb21wYXJlKHRleHQpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgYWRkU3R5bGUoTVRleHQgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdCBrZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QgdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGNoYXJhY3RlcikgeworCisgICAgICAgIFN0eWxlTW9kaWZpZXIgbW9kaWZpZXIgPSBuZXcgVGVzdE1vZGlmaWVyKGtleSwgdmFsdWUpOworCisgICAgICAgIGlmIChjaGFyYWN0ZXIpIHsKKyAgICAgICAgICAgIHRleHQubW9kaWZ5Q2hhcmFjdGVyU3R5bGVzKHN0YXJ0LCBsaW1pdCwgbW9kaWZpZXIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGV4dC5tb2RpZnlQYXJhZ3JhcGhTdHlsZXMoc3RhcnQsIGxpbWl0LCBtb2RpZmllcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzdHJlYW1BbmRDb21wYXJlKE1UZXh0IHRleHQpIHsKKworICAgICAgICBUaHJvd2FibGUgZXJyb3IgPSBudWxsOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYnl0ZXNPdXQgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CisgICAgICAgICAgICBPYmplY3RPdXRwdXRTdHJlYW0gb2JqT3V0ID0gbmV3IE9iamVjdE91dHB1dFN0cmVhbShieXRlc091dCk7CisgICAgICAgICAgICBvYmpPdXQud3JpdGVPYmplY3QodGV4dCk7CisKKyAgICAgICAgICAgIEJ5dGVBcnJheUlucHV0U3RyZWFtIGJ5dGVzSW4gPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShieXRlc091dC50b0J5dGVBcnJheSgpKTsKKyAgICAgICAgICAgIE9iamVjdElucHV0U3RyZWFtIG9iakluID0gbmV3IE9iamVjdElucHV0U3RyZWFtKGJ5dGVzSW4pOworICAgICAgICAgICAgTVRleHQgc3RyZWFtZWRUZXh0ID0gKE1UZXh0KSBvYmpJbi5yZWFkT2JqZWN0KCk7CisgICAgICAgICAgICBpZiAoIWlzRXF1YWwodGV4dCwgc3RyZWFtZWRUZXh0KSkgeworICAgICAgICAgICAgICAgIGlzRXF1YWwodGV4dCwgc3RyZWFtZWRUZXh0KTsKKyAgICAgICAgICAgICAgICBlcnJsbigiU3RyZWFtZWQgdGV4dCBpcyBub3QgZXF1YWwiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorLyogICAgICAgIGNhdGNoKE9wdGlvbmFsRGF0YUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJvciA9IGU7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goU3RyZWFtQ29ycnVwdGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfSovCisgICAgICAgIGNhdGNoKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycm9yID0gZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChlcnJvciAhPSBudWxsKSB7CisgICAgICAgICAgICBlcnJvci5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgIGVycmxuKCJTZXJpYWxpemF0aW9uIGZhaWxlZC4iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0VxdWFsKE1UZXh0IGxocywgTVRleHQgcmhzKSB7CisKKyAgICAgICAgcmV0dXJuIGxocy5lcXVhbHMocmhzKTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGVzdC9yaWNodGV4dC9UZXN0UGFyYWdyYXBoU3R5bGVzLmphdmEgYi9zcmMvY29tL2libS90ZXN0L3JpY2h0ZXh0L1Rlc3RQYXJhZ3JhcGhTdHlsZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zZjEyYjA1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGVzdC9yaWNodGV4dC9UZXN0UGFyYWdyYXBoU3R5bGVzLmphdmEKQEAgLTAsMCArMSwzMzkgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRlc3RQYXJhZ3JhcGhTdHlsZXMuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMC8wNC8yNCAyMDo1Mjo1OCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnRlc3QucmljaHRleHQ7CisKK2ltcG9ydCBjb20uaWJtLnRlc3QuVGVzdEZtd2s7CisKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuU3R5bGVkVGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTUNvbnN0VGV4dDsKK2ltcG9ydCBjb20uaWJtLnJpY2h0ZXh0LnN0eWxlZHRleHQuTVRleHQ7CitpbXBvcnQgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuQXR0cmlidXRlTWFwOworaW1wb3J0IGNvbS5pYm0ucmljaHRleHQuc3R5bGVkdGV4dC5TdHlsZU1vZGlmaWVyOworaW1wb3J0IGphdmEudXRpbC5SYW5kb207CisKK3B1YmxpYyBmaW5hbCBjbGFzcyBUZXN0UGFyYWdyYXBoU3R5bGVzIGV4dGVuZHMgVGVzdEZtd2sgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAgICAgICAgICAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworICAgICAgICBuZXcgVGVzdFBhcmFncmFwaFN0eWxlcygpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgUkFORF9TRUVEID0gMTIzNDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTlVNX1RFU1RTID0gMjUwMDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gaXNQYXJhZ3JhcGhCcmVhayhjaGFyIGMpIHsKKworICAgICAgICByZXR1cm4gYyA9PSdcdTIwMjknIHx8IGMgPT0gJ1xuJzsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBPYmplY3QgS0VZID0gIktFWSI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQXR0cmlidXRlTWFwIFBMQUlOID0gQXR0cmlidXRlTWFwLkVNUFRZX0FUVFJJQlVURV9NQVA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQXR0cmlidXRlTWFwIEFfU1RZTEUgPSBuZXcgQXR0cmlidXRlTWFwKEtFWSwgbmV3IENoYXJhY3RlcignYScpKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHlsZU1vZGlmaWVyIEFfTU9EID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZVJlcGxhY2VNb2RpZmllcihBX1NUWUxFKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBBdHRyaWJ1dGVNYXAgQl9TVFlMRSA9IG5ldyBBdHRyaWJ1dGVNYXAoS0VZLCBuZXcgQ2hhcmFjdGVyKCdiJykpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0eWxlTW9kaWZpZXIgQl9NT0QgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0eWxlTW9kaWZpZXIuY3JlYXRlUmVwbGFjZU1vZGlmaWVyKEJfU1RZTEUpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEF0dHJpYnV0ZU1hcCBDX1NUWUxFID0gbmV3IEF0dHJpYnV0ZU1hcChLRVksIG5ldyBDaGFyYWN0ZXIoJ2MnKSk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3R5bGVNb2RpZmllciBDX01PRCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3R5bGVNb2RpZmllci5jcmVhdGVSZXBsYWNlTW9kaWZpZXIoQ19TVFlMRSk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgQXR0cmlidXRlTWFwIERfU1RZTEUgPSBuZXcgQXR0cmlidXRlTWFwKEtFWSwgbmV3IENoYXJhY3RlcignZCcpKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHlsZU1vZGlmaWVyIERfTU9EID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHlsZU1vZGlmaWVyLmNyZWF0ZVJlcGxhY2VNb2RpZmllcihEX1NUWUxFKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBBdHRyaWJ1dGVNYXAgRV9TVFlMRSA9IG5ldyBBdHRyaWJ1dGVNYXAoS0VZLCBuZXcgQ2hhcmFjdGVyKCdlJykpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0eWxlTW9kaWZpZXIgRV9NT0QgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0eWxlTW9kaWZpZXIuY3JlYXRlUmVwbGFjZU1vZGlmaWVyKEVfU1RZTEUpOworCisgICAgcHVibGljIHZvaWQgdGVzdCgpIHsKKworICAgICAgICBlYXN5VGVzdHMoKTsKKyAgICAgICAgcmFuZG9tVGVzdCgpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBlYXN5VGVzdHMoKSB7CisKKyAgICAgICAgTVRleHQgdGV4dCA9IG5ldyBTdHlsZWRUZXh0KCJhXG5iXG5jXG5kXG4iLCBQTEFJTik7CisgICAgICAgIHRleHQubW9kaWZ5UGFyYWdyYXBoU3R5bGVzKDAsIHRleHQubGVuZ3RoKCksIEFfTU9EKTsKKyAgICAgICAgdmVyaWZ5UGFyYWdyYXBoQ291bnQodGV4dCk7CisKKyAgICAgICAgTVRleHQgc3JjID0gbmV3IFN0eWxlZFRleHQoIlhYWFxuWVlZIiwgUExBSU4pOworICAgICAgICBzcmMubW9kaWZ5UGFyYWdyYXBoU3R5bGVzKDAsIHNyYy5sZW5ndGgoKSwgQl9NT0QpOworICAgICAgICB2ZXJpZnlQYXJhZ3JhcGhDb3VudChzcmMpOworCisgICAgICAgIE1UZXh0IHRlbXAgPSB0ZXh0LmV4dHJhY3RXcml0YWJsZSgwLCB0ZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAgdGVtcC5hcHBlbmQoc3JjKTsKKyAgICAgICAgdmVyaWZ5UGFyYWdyYXBoQ291bnQodGVtcCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IHRleHQubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgaWYgKCF0ZW1wLnBhcmFncmFwaFN0eWxlQXQoaSkuZXF1YWxzKHRleHQucGFyYWdyYXBoU3R5bGVBdChpKSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiUGFyYWdyYXBoIHN0eWxlcyBhcmUgd3JvbmciKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBzcmMubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgaWYgKCF0ZW1wLnBhcmFncmFwaFN0eWxlQXQoaSt0ZXh0Lmxlbmd0aCgpKS5lcXVhbHMoc3JjLnBhcmFncmFwaFN0eWxlQXQoaSkpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlBhcmFncmFwaCBzdHlsZXMgYXJlIHdyb25nIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB0ZW1wID0gdGV4dC5leHRyYWN0V3JpdGFibGUoMCwgdGV4dC5sZW5ndGgoKSk7CisgICAgICAgIHRlbXAucmVwbGFjZSgwLCAxLCBzcmMsIDAsIHNyYy5sZW5ndGgoKSk7CisgICAgICAgIHZlcmlmeVBhcmFncmFwaENvdW50KHRlbXApOworICAgICAgICBpZiAodGVtcC5wYXJhZ3JhcGhMaW1pdCgwKSAhPSA0KSB7CisgICAgICAgICAgICBlcnJsbigiUGFyYWdyYXBoIGxpbWl0IGlzIHdyb25nIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF0ZW1wLnBhcmFncmFwaFN0eWxlQXQoMCkuZXF1YWxzKEJfU1RZTEUpKSB7CisgICAgICAgICAgICBlcnJsbigiRmlyc3Qgc3R5bGUgaXMgd3JvbmciKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXRlbXAucGFyYWdyYXBoU3R5bGVBdCg0KS5lcXVhbHMoQV9TVFlMRSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJTdHlsZSBhZnRlciBpbnNlcnQgaXMgd3JvbmciKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHRlc3QgYXBwZW5kCisgICAgICAgIE1Db25zdFRleHQgbmV3U3JjID0gc3JjLmV4dHJhY3QoNCwgNyk7CisgICAgICAgIE1UZXh0IGluaXRDID0gbmV3IFN0eWxlZFRleHQoImNjY2NjYyIsIFBMQUlOKTsKKyAgICAgICAgaW5pdEMubW9kaWZ5UGFyYWdyYXBoU3R5bGVzKDAsIGluaXRDLmxlbmd0aCgpLCBDX01PRCk7CisgICAgICAgIGluaXRDLmFwcGVuZChuZXdTcmMpOworICAgICAgICAvLyBub3cgaW5pdEMgc2hvdWxkIGJlIG9uZSBwYXJhZ3JhcGggd2l0aCBzdHlsZSBCCisgICAgICAgIGlmIChpbml0Qy5wYXJhZ3JhcGhMaW1pdCgwKSAhPSBpbml0Qy5sZW5ndGgoKSkgeworICAgICAgICAgICAgZXJybG4oIlNob3VsZCBvbmx5IGJlIG9uZSBwYXJhZ3JhcGgiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaW5pdEMucGFyYWdyYXBoU3R5bGVBdCgwKSAhPSBpbml0Qy5wYXJhZ3JhcGhTdHlsZUF0KGluaXRDLmxlbmd0aCgpKSkgeworICAgICAgICAgICAgZXJybG4oIlR3byBkaWZmZXJlbnQgcGFyYWdyYXBoIHN0eWxlcyIpOworICAgICAgICB9CisgICAgICAgIGlmICghaW5pdEMucGFyYWdyYXBoU3R5bGVBdChpbml0Qy5sZW5ndGgoKS8yKS5lcXVhbHMoQl9TVFlMRSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJJbmNvcnJlY3QgcGFyYWdyYXBoIHN0eWxlIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRleHQgPSBuZXcgU3R5bGVkVGV4dCgiYWFhXG4iLCBQTEFJTik7CisgICAgICAgIHRleHQubW9kaWZ5UGFyYWdyYXBoU3R5bGVzKDAsIHRleHQubGVuZ3RoKCksIEFfTU9EKTsKKyAgICAgICAgdGV4dC5tb2RpZnlQYXJhZ3JhcGhTdHlsZXModGV4dC5sZW5ndGgoKSwgdGV4dC5sZW5ndGgoKSwgQl9NT0QpOworICAgICAgICBpZiAodGV4dC5wYXJhZ3JhcGhTdHlsZUF0KHRleHQubGVuZ3RoKCkpICE9IEJfU1RZTEUpIHsKKyAgICAgICAgICAgIGVycmxuKCIwLWxlbmd0aCBwYXJhZ3JhcGggYXQgZW5kIGhhcyBpbmNvcnJlY3Qgc3R5bGUiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGludCByYW5kSW50KFJhbmRvbSByYW5kLCBpbnQgbGltaXQpIHsKKworICAgICAgICByZXR1cm4gcmFuZEludChyYW5kLCAwLCBsaW1pdCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IHJhbmRJbnQoUmFuZG9tIHJhbmQsIGludCBzdGFydCwgaW50IGxpbWl0KSB7CisKKyAgICAgICAgaWYgKHN0YXJ0ID4gbGltaXQpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlJhbmdlIGlzIDAtbGVuZ3RoLiIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHN0YXJ0ID09IGxpbWl0KSB7CisgICAgICAgICAgICByZXR1cm4gc3RhcnQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gc3RhcnQgKyAoTWF0aC5hYnMocmFuZC5uZXh0SW50KCkpJShsaW1pdC1zdGFydCkpIDsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgcmFuZG9tVGVzdCgpIHsKKworICAgICAgICBNVGV4dCBub1BhcmFncmFwaCA9IG5ldyBTdHlsZWRUZXh0KCJ6enp6IiwgUExBSU4pOworICAgICAgICBub1BhcmFncmFwaC5tb2RpZnlQYXJhZ3JhcGhTdHlsZXMoMCwgbm9QYXJhZ3JhcGgubGVuZ3RoKCksIEFfTU9EKTsKKyAgICAgICAgTVRleHQgdHdvUGFyYWdyYXBocyA9IG5ldyBTdHlsZWRUZXh0KCJhYWFcbmJiYiIsIFBMQUlOKTsKKyAgICAgICAgdHdvUGFyYWdyYXBocy5tb2RpZnlQYXJhZ3JhcGhTdHlsZXMoMCwgdHdvUGFyYWdyYXBocy5wYXJhZ3JhcGhMaW1pdCgwKSwgQl9NT0QpOworICAgICAgICBNVGV4dCB0aHJlZVBhcmFncmFwaHMgPSBuZXcgU3R5bGVkVGV4dCgiY2NcbmRkXG5lZSIsIFBMQUlOKTsKKyAgICAgICAgdGhyZWVQYXJhZ3JhcGhzLm1vZGlmeVBhcmFncmFwaFN0eWxlcygwLCAzLCBDX01PRCk7CisgICAgICAgIHRocmVlUGFyYWdyYXBocy5tb2RpZnlQYXJhZ3JhcGhTdHlsZXMoMywgNiwgRF9NT0QpOworICAgICAgICB0aHJlZVBhcmFncmFwaHMubW9kaWZ5UGFyYWdyYXBoU3R5bGVzKDYsIDgsIEVfTU9EKTsKKyAgICAgICAgTVRleHQgdHJhaWxpbmdQMSA9IG5ldyBTdHlsZWRUZXh0KCJoaGhoXG4iLCBQTEFJTik7CisgICAgICAgIHRyYWlsaW5nUDEubW9kaWZ5UGFyYWdyYXBoU3R5bGVzKDAsIHRyYWlsaW5nUDEucGFyYWdyYXBoTGltaXQoMCksIENfTU9EKTsKKyAgICAgICAgTVRleHQgdHJhaWxpbmdQMiA9IG5ldyBTdHlsZWRUZXh0KCJpaWlcbiIsIFBMQUlOKTsKKyAgICAgICAgdHJhaWxpbmdQMi5tb2RpZnlQYXJhZ3JhcGhTdHlsZXMoMCwgMCwgRF9NT0QpOworICAgICAgICB0cmFpbGluZ1AyLm1vZGlmeVBhcmFncmFwaFN0eWxlcyh0cmFpbGluZ1AyLmxlbmd0aCgpLCB0cmFpbGluZ1AyLmxlbmd0aCgpLCBCX01PRCk7CisKKyAgICAgICAgaWYgKCF0cmFpbGluZ1AyLnBhcmFncmFwaFN0eWxlQXQodHJhaWxpbmdQMi5sZW5ndGgoKS0xKS5lcXVhbHMoRF9TVFlMRSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJTdHlsZSBpbmNvcnJlY3QgaW4gdHJhaWxpbmdQMiIpOworICAgICAgICB9CisgICAgICAgIGlmICghdHJhaWxpbmdQMi5wYXJhZ3JhcGhTdHlsZUF0KHRyYWlsaW5nUDIubGVuZ3RoKCkpLmVxdWFscyhCX1NUWUxFKSkgeworICAgICAgICAgICAgZXJybG4oIkVuZGluZyBzdHlsZSBpbmNvcnJlY3QgaW4gdHJhaWxpbmdQMiIpOworICAgICAgICB9CisKKyAgICAgICAgTUNvbnN0VGV4dFtdIHRlc3RzID0geyBub1BhcmFncmFwaCwgdHdvUGFyYWdyYXBocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVlUGFyYWdyYXBocywgdHJhaWxpbmdQMSwgdHJhaWxpbmdQMiB9OworCisgICAgICAgIFJhbmRvbSByYW5kb20gPSBuZXcgUmFuZG9tKFJBTkRfU0VFRCk7CisKKyAgICAgICAgaW50IHN0b3BBdCA9IDQ2NTsKKyAgICAgICAgaW50IGkgPSAwOworICAgICAgICB0cnkgeworICAgICAgICAgICAgZm9yIChpPTA7IGkgPCBOVU1fVEVTVFM7IGkrKykgeworCisgICAgICAgICAgICAgICAgaW50IHNyY0luZGV4ID0gcmFuZEludChyYW5kb20sIHRlc3RzLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgaW50IHRhcmdldEluZGV4ID0gcmFuZEludChyYW5kb20sIHRlc3RzLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgTVRleHQgdGFyZ2V0ID0gbmV3IFN0eWxlZFRleHQodGVzdHNbdGFyZ2V0SW5kZXhdKTsKKyAgICAgICAgICAgICAgICBNQ29uc3RUZXh0IHNyYyA9IHRlc3RzW3NyY0luZGV4XTsKKworICAgICAgICAgICAgICAgIGludCBzcmNTdGFydCA9IHJhbmRJbnQocmFuZG9tLCBzcmMubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIGludCBzcmNMaW1pdCA9IHJhbmRJbnQocmFuZG9tLCBzcmNTdGFydCwgc3JjLmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBpbnQgc3RhcnQgPSByYW5kSW50KHJhbmRvbSwgdGFyZ2V0Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICBpbnQgbGltaXQgPSByYW5kSW50KHJhbmRvbSwgc3RhcnQsIHRhcmdldC5sZW5ndGgoKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoaSA9PSBzdG9wQXQpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RvcEF0ID0gaTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpbnNlcnRBbmRDaGVjayhzcmMsIHNyY1N0YXJ0LCBzcmNMaW1pdCwgdGFyZ2V0LCBzdGFydCwgbGltaXQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZpbmFsbHkgeworICAgICAgICAgICAgaWYgKGkgPCBOVU1fVEVTVFMpIHsKKyAgICAgICAgICAgICAgICBsb2dsbigiaXRlcmF0aW9uPSIgKyBpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBpbnNlcnRBbmRDaGVjayhNQ29uc3RUZXh0IHNyYywgaW50IHNyY1N0YXJ0LCBpbnQgc3JjTGltaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1UZXh0IHRhcmdldCwgaW50IHN0YXJ0LCBpbnQgbGltaXQpIHsKKworICAgICAgICAvLyBwLXN0eWxlIGFmdGVyIGluc2VydGlvbgorICAgICAgICBBdHRyaWJ1dGVNYXAgYWZ0ZXI7CisgICAgICAgIGlmIChsaW1pdCA9PSB0YXJnZXQubGVuZ3RoKCkgJiYgc3JjTGltaXQgPiBzcmNTdGFydCkgeworICAgICAgICAgICAgYWZ0ZXIgPSBzcmMucGFyYWdyYXBoU3R5bGVBdChzcmNMaW1pdCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhZnRlciA9IHRhcmdldC5wYXJhZ3JhcGhTdHlsZUF0KGxpbWl0KTsKKyAgICAgICAgfQorCisgICAgICAgIEF0dHJpYnV0ZU1hcCBiZWZvcmU7CisgICAgICAgIGJvb2xlYW4gc3JjSGFzUEJyZWFrID0gZmFsc2U7CisgICAgICAgIGZvciAoaW50IGk9c3JjU3RhcnQ7IGkgPCBzcmNMaW1pdDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoaXNQYXJhZ3JhcGhCcmVhayhzcmMuYXQoaSkpKSB7CisgICAgICAgICAgICAgICAgc3JjSGFzUEJyZWFrID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGFydCA+IDAgJiYgaXNQYXJhZ3JhcGhCcmVhayh0YXJnZXQuYXQoc3RhcnQtMSkpKSB7CisgICAgICAgICAgICBiZWZvcmUgPSB0YXJnZXQucGFyYWdyYXBoU3R5bGVBdChzdGFydC0xKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGJlZm9yZSA9IHNyY0hhc1BCcmVhaz8gc3JjLnBhcmFncmFwaFN0eWxlQXQoc3JjU3RhcnQpIDogYWZ0ZXI7CisgICAgICAgIH0KKyAgICAgICAgYm9vbGVhbiBzdHlsZVByb3BvZ2F0ZWQgPSAhYmVmb3JlLmVxdWFscyh0YXJnZXQucGFyYWdyYXBoU3R5bGVBdChNYXRoLm1heCgwLCBzdGFydC0xKSkpOworCisKKyAgICAgICAgdGFyZ2V0LnJlc2V0RGFtYWdlZFJhbmdlKCk7CisgICAgICAgIHRhcmdldC5yZXBsYWNlKHN0YXJ0LCBsaW1pdCwgc3JjLCBzcmNTdGFydCwgc3JjTGltaXQpOworICAgICAgICBmaW5hbCBpbnQgZGFtYWdlTGltaXQgPSAoc3RhcnQ9PWxpbWl0ICYmIHNyY1N0YXJ0PT1zcmNMaW1pdCk/CisgICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyLk1JTl9WQUxVRSA6IHN0YXJ0ICsgKHNyY0xpbWl0LXNyY1N0YXJ0KTsKKworICAgICAgICBpZiAodGFyZ2V0LmRhbWFnZWRSYW5nZUxpbWl0KCkgIT0gZGFtYWdlTGltaXQpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJsaW1pdDogIiArIGRhbWFnZUxpbWl0ICsgIjsgIHRhcmdldC5saW1pdDogIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC5kYW1hZ2VkUmFuZ2VMaW1pdCgpKTsKKyAgICAgICAgICAgIGVycmxuKCJEYW1hZ2VkIHJhbmdlIGxpbWl0IGlzIGluY29ycmVjdCIpOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgaW50IGRhbWFnZVN0YXJ0ID0gKGRhbWFnZUxpbWl0PT1JbnRlZ2VyLk1JTl9WQUxVRSk/IEludGVnZXIuTUFYX1ZBTFVFIDoKKyAgICAgICAgICAgICAgICAoc3R5bGVQcm9wb2dhdGVkPyB0YXJnZXQucGFyYWdyYXBoU3RhcnQoTWF0aC5tYXgoMCwgc3RhcnQtMSkpIDogc3RhcnQpOworICAgICAgICBpZiAodGFyZ2V0LmRhbWFnZWRSYW5nZVN0YXJ0KCkgPiBkYW1hZ2VTdGFydCkgeworICAgICAgICAgICAgbG9nbG4oInN0YXJ0OiAiICsgZGFtYWdlU3RhcnQgKyAiOyAgdGFyZ2V0LnN0YXJ0OiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmRhbWFnZWRSYW5nZVN0YXJ0KCkpOworICAgICAgICAgICAgZXJybG4oIkRhbWFnZWQgcmFuZ2Ugc3RhcnQgaXMgaW5jb3JyZWN0Iik7CisgICAgICAgIH0KKworICAgICAgICB2ZXJpZnlQYXJhZ3JhcGhDb3VudCh0YXJnZXQpOworCisgICAgICAgIC8vIGNoZWNrIGVuZHBvaW50cworICAgICAgICBpZiAoIWJlZm9yZS5lcXVhbHModGFyZ2V0LnBhcmFncmFwaFN0eWxlQXQoTWF0aC5tYXgoc3RhcnQtMSwgMCkpKSkgeworICAgICAgICAgICAgZXJybG4oIkluY29ycmVjdCBwYXJhZ3JhcGggc3R5bGUgYmVmb3JlIG1vZGlmaWVkIHJhbmdlIik7CisgICAgICAgIH0KKworICAgICAgICBpbnQgbGVuZ3RoRGVsdGEgPSAoc3JjTGltaXQtc3JjU3RhcnQpIC0gKGxpbWl0LXN0YXJ0KTsKKyAgICAgICAgaW50IGluZGV4QWZ0ZXJJbnNlcnQgPSBNYXRoLm1pbih0YXJnZXQubGVuZ3RoKCksIGxpbWl0ICsgbGVuZ3RoRGVsdGEpOworICAgICAgICBpZiAoIWFmdGVyLmVxdWFscyh0YXJnZXQucGFyYWdyYXBoU3R5bGVBdChpbmRleEFmdGVySW5zZXJ0KSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJJbmNvcnJlY3QgcGFyYWdyYXBoIHN0eWxlIGFmdGVyIG1vZGlmaWVkIHJhbmdlIik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3JjSGFzUEJyZWFrKSB7CisgICAgICAgICAgICBpbnQgc3RhcnRQID0gdGFyZ2V0LnBhcmFncmFwaExpbWl0KHN0YXJ0KTsKKyAgICAgICAgICAgIGludCBsaW1pdE9mVGVzdCA9IHRhcmdldC5wYXJhZ3JhcGhTdGFydChpbmRleEFmdGVySW5zZXJ0KTsKKworICAgICAgICAgICAgaW50IG9mZnNldCA9IHN0YXJ0IC0gc3JjU3RhcnQ7CisKKyAgICAgICAgICAgIHdoaWxlIChzdGFydFAgPCBsaW1pdE9mVGVzdCkgeworICAgICAgICAgICAgICAgIGludCBsaW1pdFAgPSB0YXJnZXQucGFyYWdyYXBoTGltaXQoc3RhcnRQKTsKKyAgICAgICAgICAgICAgICBpZiAoc3JjLnBhcmFncmFwaExpbWl0KHN0YXJ0UC1vZmZzZXQpICsgb2Zmc2V0ICE9IGxpbWl0UCkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigicGFyYWdyYXBoIGxpbWl0cyBhcmUgbm90IGNvbnNpc3RlbnQiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCFzcmMucGFyYWdyYXBoU3R5bGVBdChzdGFydFAtb2Zmc2V0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmVxdWFscyh0YXJnZXQucGFyYWdyYXBoU3R5bGVBdChzdGFydFApKSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigicGFyYWdyYXBoIHN0eWxlcyBhcmUgbm90IGNvbnNpc3RlbnQiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RhcnRQID0gbGltaXRQOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZm9yIChpbnQgaT1zdGFydDsgaSA8IHN0YXJ0KyhzcmNMaW1pdC1zcmNTdGFydCk7IGkrKykgeworICAgICAgICAgICAgICAgIGlmICghYWZ0ZXIuZXF1YWxzKHRhcmdldC5wYXJhZ3JhcGhTdHlsZUF0KGkpKSkgeworICAgICAgICAgICAgICAgICAgICBlcnJsbigicGFyYWdyYXBoIHN0eWxlIGNoYW5nZWQgdW5leHBlY3RlZGx5Iik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHZlcmlmeVBhcmFncmFwaENvdW50KE1Db25zdFRleHQgdGV4dCkgeworCisgICAgICAgIGludCBwQ291bnQgPSAwOworICAgICAgICBpbnQgdGV4dExlbmd0aCA9IHRleHQubGVuZ3RoKCk7CisKKyAgICAgICAgaWYgKHRleHRMZW5ndGggPT0gMCkgeworICAgICAgICAgICAgcENvdW50ID0gMTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoaW50IHM9MDsgcyA8IHRleHRMZW5ndGg7IHMgPSB0ZXh0LnBhcmFncmFwaExpbWl0KHMpKSB7CisgICAgICAgICAgICAgICAgcENvdW50Kys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNQYXJhZ3JhcGhCcmVhayh0ZXh0LmF0KHRleHRMZW5ndGgtMSkpKSB7CisgICAgICAgICAgICAgICAgcENvdW50Kys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpbnQgc2VwQ291bnQgPSAwOworICAgICAgICBmb3IgKGludCBpPTA7IGkgPCB0ZXh0TGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChpc1BhcmFncmFwaEJyZWFrKHRleHQuYXQoaSkpKSB7CisgICAgICAgICAgICAgICAgc2VwQ291bnQrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChzZXBDb3VudCArIDEgIT0gcENvdW50KSB7CisgICAgICAgICAgICBsb2dsbigic2VwQ291bnQ9IiArIHNlcENvdW50ICsgIjsgIHBDb3VudD0iICsgcENvdW50KTsKKyAgICAgICAgICAgIGVycmxuKCJQYXJhZ3JhcGggY291bnQgaXMgbm90IGNvbnNpc3RlbnQgd2l0aCBjaGFyYWN0ZXJzIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgY2hlY2tFbmRwb2ludChNQ29uc3RUZXh0IHRleHQpIHsKKworICAgICAgICBib29sZWFuIGVtcHR5RmluYWxQYXJhZ3JhcGg7CisgICAgICAgIGludCBsZW5ndGggPSB0ZXh0Lmxlbmd0aCgpOworCisgICAgICAgIGlmIChsZW5ndGggIT0gMCkgeworICAgICAgICAgICAgY2hhciBjaCA9IHRleHQuYXQobGVuZ3RoLTEpOworICAgICAgICAgICAgZW1wdHlGaW5hbFBhcmFncmFwaCA9IGlzUGFyYWdyYXBoQnJlYWsoY2gpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZW1wdHlGaW5hbFBhcmFncmFwaCA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoKHRleHQucGFyYWdyYXBoU3RhcnQobGVuZ3RoKSA9PSBsZW5ndGgpICE9IGVtcHR5RmluYWxQYXJhZ3JhcGgpIHsKKyAgICAgICAgICAgIGVycmxuKCJGaW5hbCBwYXJhZ3JhcGggbGVuZ3RoIGlzIGluY29ycmVjdCIpOworICAgICAgICB9CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3Qvc2VhcmNoL1NlYXJjaFRlc3QuamF2YSBiL3NyYy9jb20vaWJtL3Rlc3Qvc2VhcmNoL1NlYXJjaFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43NTUyMDMzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGVzdC9zZWFyY2gvU2VhcmNoVGVzdC5qYXZhCkBAIC0wLDAgKzEsNDkzIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXN0L3NlYXJjaC9BdHRpYy9TZWFyY2hUZXN0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDEvMDMvMjMgMjA6Mjg6MjEgJCAKKyAqICRSZXZpc2lvbjogMS42ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRlc3Quc2VhcmNoOworCitpbXBvcnQgamF2YS50ZXh0Lio7CitpbXBvcnQgamF2YS51dGlsLio7CisKKy8vaW1wb3J0IGNvbS5pYm0udGV4dC4qOworaW1wb3J0IGNvbS5pYm0udGV4dC5TZWFyY2hJdGVyYXRvcjsKK2ltcG9ydCBjb20uaWJtLnRleHQuU3RyaW5nU2VhcmNoOworCisvKioKKyAqIFVuaXQgYW5kIHJlZ3Jlc3Npb24gdGVzdHMgZm9yIHRoZSBTdHJpbmdTZWFyY2ggYW5kIFNlYXJjaEl0ZXJhdG9yIGNsYXNzZXMuCisgKiBUaGlzIHVzZXMgPGNvZGU+SW50bFRlc3Q8L2NvZGU+IGFzIGEgZnJhbWV3b3JrIGZvciBydW5uaW5nIHRoZSB0ZXN0cworICogYW5kIGRpc3BsYXlpbmcgdGhlIG91dHB1dC4gIEJhc2ljYWxseSwgYW55IG1ldGhvZCBoZXJlIHRoYXQgc3RhcnRzIHdpdGgKKyAqIDxjb2RlPlRlc3Q8L2NvZGU+IGlzIHJ1biBhcyBhIHRlc3QuCisgKi8KK3B1YmxpYyBjbGFzcyBTZWFyY2hUZXN0IGV4dGVuZHMgY29tLmlibS50ZXN0LlRlc3RGbXdrIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IFNlYXJjaFRlc3QoKS5ydW4oYXJncyk7CisgICAgfQorICAgIAorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBTdGF0aWMgZGF0YTogY29sbGF0b3JzIGFuZCBicmVhayBpdGVyYXRvcnMgdG8gdXNlIGZvciB0ZXN0aW5nCisgICAgLy8KKyAgICBzdGF0aWMgUnVsZUJhc2VkQ29sbGF0b3IgZW5Db2xsOyAgICAgICAgLy8gR2VuZXJpYyBFbmdsaXNoIGNvbGxhdG9yCisgICAgc3RhdGljIFJ1bGVCYXNlZENvbGxhdG9yIGZyQ29sbDsgICAgICAgIC8vIEZyZW5jaCBhY2NlbnQgcnVsZXMKKyAgICBzdGF0aWMgUnVsZUJhc2VkQ29sbGF0b3IgZXNDb2xsOyAgICAgICAgLy8gSGFzIFNwYW5pc2ggY29udHJhY3RpbmcgImNoIgorICAgIHN0YXRpYyBSdWxlQmFzZWRDb2xsYXRvciBkZUNvbGw7ICAgICAgICAvLyBIYXMgZXhwYW5zaW9ucywgZS5nLiBhLXVtbGF1dCAtPiBhZQorICAgIAorICAgIHN0YXRpYyB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBlbkNvbGwgPSAoUnVsZUJhc2VkQ29sbGF0b3IpQ29sbGF0b3IuZ2V0SW5zdGFuY2UoTG9jYWxlLlVTKTsKKyAgICAgICAgICAgIGZyQ29sbCA9IChSdWxlQmFzZWRDb2xsYXRvcilDb2xsYXRvci5nZXRJbnN0YW5jZShMb2NhbGUuRlJBTkNFKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZXNDb2xsID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKGVuQ29sbC5nZXRSdWxlcygpICsgIiAmIEMgPCBjaCA7IGNIIDsgQ2ggOyBDSCIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBkZUNvbGwgPSBuZXcgUnVsZUJhc2VkQ29sbGF0b3IoZW5Db2xsLmdldFJ1bGVzKCkgKyAiICYgYWUgOyBcdTAwZTQgJiBBRSA7IFx1MDBjNCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgJiBvZSA7IFx1MDBmNiAmIE9FIDsgXHUwMGQ2IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAmIHVlIDsgXHUwMGZjICYgVUUgOyBcdTAwZGMiKTsgCisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKFBhcnNlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBzdGF0aWMgQnJlYWtJdGVyYXRvciBlbldvcmQgPSBCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZShMb2NhbGUuVVMpOworICAgIAorICAgIHN0YXRpYyBTdHJpbmcgdGVzdFN0cmluZyA9IAorICAgICAgICAgICAgImJsYWNrYmlyZHMgUGF0IHBcdTAwRTljaFx1MDBFOSAiICsKKyAgICAgICAgICAgICJwXHUwMEVBY2hlIHBcdTAwRTljaGVyIHBcdTAwRUFjaGVyICIgKworICAgICAgICAgICAgIlRvZCBUXHUwMEY2bmUgYmxhY2sgVG9mdSBibGFja2JpcmRzICIgKworICAgICAgICAgICAgIlRvbiBQQVQgdG9laG9sZCAiICsKKyAgICAgICAgICAgICJibGFja2JpcmQgIiArCisgICAgICAgICAgICAiYmxhY2stYmlyZCBwYXQgIiArCisgICAgICAgICAgICAidG9lIGJpZyBUb2UiOworICAgIAorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFRoZSBwcmltYXJ5IHRlc3QgY29uc2lzdHMgb2YgcnVubmluZyB0aHJvdWdoIGFsbCBvZiB0aGUgc3RyaW5ncyBpbiB0aGlzCisgICAgLy8gdGFibGUgYW5kIG1ha2luZyBzdXJlIHdlIGZpbmQgdGhlIHByb3BlciBtYXRjaGVzCisgICAgLy8KKyAgICBzdGF0aWMgY2xhc3MgVGVzdENhc2UgeworICAgICAgICBUZXN0Q2FzZShSdWxlQmFzZWRDb2xsYXRvciBjLCBpbnQgc3RyZW5ndGgsIEJyZWFrSXRlcmF0b3IgYnJlYWtlciwKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHBhdHRlcm4sIFN0cmluZyB0YXJnZXQsIGludFtdIG1hdGNoZXMpIHsKKyAgICAgICAgICAgIHRoaXMuY29sbGF0b3IgPSBjOworICAgICAgICAgICAgdGhpcy5zdHJlbmd0aCA9IHN0cmVuZ3RoOworICAgICAgICAgICAgdGhpcy5icmVha2VyID0gYnJlYWtlcjsKKyAgICAgICAgICAgIHRoaXMucGF0dGVybiA9IHBhdHRlcm47CisgICAgICAgICAgICB0aGlzLnRhcmdldCA9IHRhcmdldDsKKyAgICAgICAgICAgIHRoaXMubWF0Y2hlcyA9IG1hdGNoZXM7CisgICAgICAgIH0KKyAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgICBjb2xsYXRvcjsKKyAgICAgICAgaW50ICAgICAgICAgICAgICAgICBzdHJlbmd0aDsKKyAgICAgICAgQnJlYWtJdGVyYXRvciAgICAgICBicmVha2VyOworICAgICAgICBTdHJpbmcgICAgICAgICAgICAgIHBhdHRlcm47CisgICAgICAgIFN0cmluZyAgICAgICAgICAgICAgdGFyZ2V0OworICAgICAgICBpbnRbXSAgICAgICAgICAgICAgIG1hdGNoZXM7CisgICAgfTsKKyAgICBzdGF0aWMgVGVzdENhc2VbXSB0ZXN0Q2FzZXMgPSB7CisgICAgICAgIG5ldyBUZXN0Q2FzZShlbkNvbGwsIENvbGxhdG9yLlBSSU1BUlksIG51bGwsICJmb3giLAorICAgICAgICAgICAgICAgIC8vICAgMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5CisgICAgICAgICAgICAgICAgICAgICJUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZm94ZXMiLAorICAgICAgICAgICAgICAgICAgICBuZXcgaW50W10geyAxNiwgNDAgfQorICAgICAgICAgICAgICAgICAgICApLAorCisgICAgICAgIG5ldyBUZXN0Q2FzZShlbkNvbGwsIENvbGxhdG9yLlBSSU1BUlksIGVuV29yZCwgImZveCIsCisgICAgICAgICAgICAgICAgLy8gICAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkKKyAgICAgICAgICAgICAgICAgICAgIlRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciB0aGUgbGF6eSBmb3hlcyIsCisgICAgICAgICAgICAgICAgICAgIG5ldyBpbnRbXSB7IDE2IH0KKyAgICAgICAgICAgICAgICAgICAgKSwKKworICAgICAgICBuZXcgVGVzdENhc2UoZnJDb2xsLCBDb2xsYXRvci5QUklNQVJZLCBudWxsLCAicGVjaGUiLAorICAgICAgICAgICAgICAgICAgICB0ZXN0U3RyaW5nLAorICAgICAgICAgICAgICAgICAgICBuZXcgaW50W10geyAxNSwgMjEsIDI3LCAzNCB9CisgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgIG5ldyBUZXN0Q2FzZShmckNvbGwsIENvbGxhdG9yLlBSSU1BUlksIGVuV29yZCwgImJsYWNrYmlyZCIsCisgICAgICAgICAgICAgICAgICAgIHRlc3RTdHJpbmcsCisgICAgICAgICAgICAgICAgICAgIG5ldyBpbnRbXSB7IDg4LCA5OCB9CisgICAgICAgICAgICAgICAgICAgICksCisKKyAgICAgICAgLy8gTk9URTogdGhpcyBjYXNlIGRlcGVuZHMgb24gYSBidWcgZml4IGluIEpESyAxLjIuMiAoIkNyaWNrZXQiKQorICAgICAgICBuZXcgVGVzdENhc2UoZGVDb2xsLCBDb2xsYXRvci5QUklNQVJZLCBudWxsLCAidG9lIiwKKyAgICAgICAgICAgICAgICAvLyAgIDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OQorICAgICAgICAgICAgICAgICAgICAiVGhpcyBpcyBhIHRvZSBUXHUwMEY2bmUiLAorICAgICAgICAgICAgICAgICAgICBuZXcgaW50W10geyAxMCwgMTQgfQorICAgICAgICAgICAgICAgICAgICApLAorCisgICAgICAgIC8qIER1ZSB0byBhIGJ1ZyBpbiB0aGUgSkRLIDEuMiBGQ1MgdmVyc2lvbiBvZiBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IsCisgICAgICAgICAqIHNlYXJjaGluZyB0aHJvdWdoIHRleHQgY29udGFpbmluZyBjb250cmFjdGluZyBjaGFyYWN0ZXIgc2VxdWVuY2VzIAorICAgICAgICAgKiBpc24ndCB3b3JraW5nIHByb3Blcmx5IHJpZ2h0IG5vdy4gIFRoaXMgd2lsbCBwcm9iYWJseSBiZSBmaXhlZCBpbgorICAgICAgICAgKiBKREsgMS4zICgiS2VzdHJlbCIpLiAgV2hlbiBpdCBpcywgdW5jb21tZW50IHRoZXNlIHRlc3QgY2FzZXMuCisgICAgICAgICAqCisgICAgICAgIG5ldyBUZXN0Q2FzZShlc0NvbGwsIENvbGxhdG9yLlBSSU1BUlksIGVuV29yZCwgImNoYW5uZWwiLAorICAgICAgICAgICAgICAgIC8vICAgMDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OQorICAgICAgICAgICAgICAgICAgICAiQSBjaGFubmVsLCBhbm90aGVyIENIQU5ORUwsIG1vcmUgQ2hhbm5lbHMsIGFuZCBvbmUgbGFzdCBjaGFubmVsLi4uIiwKKyAgICAgICAgICAgICAgICAgICAgbmV3IGludFtdIHsgIH0KKyAgICAgICAgICAgICAgICAgICAgKSwKKworICAgICAgICBuZXcgVGVzdENhc2UoZXNDb2xsLCBDb2xsYXRvci5URVJUSUFSWSwgZW5Xb3JkLCAiQ2hhbm5lbCIsCisgICAgICAgICAgICAgICAgLy8gICAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5CisgICAgICAgICAgICAgICAgICAgICJDaGFubmVsLCBhbm90aGVyIGNoYW5uZWwsIG1vcmUgY2hhbm5lbHMsIGFuZCBvbmUgbGFzdCBDaGFubmVsIiwKKyAgICAgICAgICAgICAgICAgICAgbmV3IGludFtdIHsgIH0KKyAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgKi8KKworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBUZXN0IHVzaW5nIHRoZSB0ZXN0IGNhc2VzIGRlZmluZWQgYWJvdmUKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0Q2FzZXMoKSB7CisgICAgICAgIGZvciAoaW50IHQgPSAwOyB0IDwgdGVzdENhc2VzLmxlbmd0aDsgdCsrKQorICAgICAgICB7CisgICAgICAgICAgICBsb2dsbigiY2FzZSAiICsgdCk7CisgICAgICAgICAgICBUZXN0Q2FzZSBjID0gdGVzdENhc2VzW3RdOworICAgICAgICAgICAgU3RyaW5nU2VhcmNoIGl0ZXIgPSBuZXcgU3RyaW5nU2VhcmNoKGMucGF0dGVybiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IoYy50YXJnZXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuY29sbGF0b3IsIGMuYnJlYWtlcik7CisgICAgICAgICAgICBpdGVyLnNldFN0cmVuZ3RoKGMuc3RyZW5ndGgpOworICAgICAgICAgICAgZG9UZXN0Q2FzZShpdGVyLCBjLm1hdGNoZXMpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFRlc3QgZm9yIFNlYXJjaEl0ZXJhdG9yLnNldE92ZXJsYXBwaW5nKCkKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0T3ZlcmxhcHBpbmcoKSB7CisgICAgICAgIC8vIENyZWF0ZSBhIHNlYXJjaCBpdGVyYXRvci4gCisgICAgICAgIFN0cmluZ1NlYXJjaCBpdGVyID0gbmV3IFN0cmluZ1NlYXJjaCgiYWJhYiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IoImFiYWJhYmFiIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbkNvbGwsIG51bGwpOworICAgICAgICAKKyAgICAgICAgaW50W10gb3ZlcmxhcCA9IG5ldyBpbnRbXSB7IDAsIDIsIDQgfTsgIC8vIGV4cGVjdGVkIHJlc3VsdHMKKyAgICAgICAgaW50W10gbm92cmxhcCA9IG5ldyBpbnRbXSB7IDAsIDQgfTsKKworICAgICAgICAKKyAgICAgICAgZG9UZXN0Q2FzZShpdGVyLCBvdmVybGFwKTsgICAgICAgICAgLy8gT3ZlcmxhcHBpbmcgaXMgYWxsb3dlZCBieSBkZWZhdWx0CisgICAgICAgIGlmIChpdGVyLmlzT3ZlcmxhcHBpbmcoKSAhPSB0cnVlKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGlzT3ZlcmxhcHBpbmcgcmV0dXJuZWQgIiArIGl0ZXIuaXNPdmVybGFwcGluZygpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaXRlci5zZXRPdmVybGFwcGluZyhmYWxzZSk7ICAgICAgICAgLy8gVHVybiAnZW0gYmFjayBvZmYKKyAgICAgICAgZG9UZXN0Q2FzZShpdGVyLCBub3ZybGFwKTsKKyAgICAgICAgaWYgKGl0ZXIuaXNPdmVybGFwcGluZygpICE9IGZhbHNlKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGlzT3ZlcmxhcHBpbmcgcmV0dXJuZWQgIiArIGl0ZXIuaXNPdmVybGFwcGluZygpKTsKKyAgICAgICAgfQorCisgICAgICAgIGl0ZXIuc2V0T3ZlcmxhcHBpbmcodHJ1ZSk7CisgICAgICAgIGRvVGVzdENhc2UoaXRlciwgb3ZlcmxhcCk7CisgICAgICAgIGlmIChpdGVyLmlzT3ZlcmxhcHBpbmcoKSAhPSB0cnVlKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGlzT3ZlcmxhcHBpbmcgcmV0dXJuZWQgIiArIGl0ZXIuaXNPdmVybGFwcGluZygpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0IGZvciBTZWFyY2hJdGVyYXRvci5zZXRCcmVha0l0ZXJhdG9yCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEJyZWFrSXRlcmF0b3IoKSB7CisgICAgICAgIFN0cmluZ1NlYXJjaCBpdGVyID0gbmV3IFN0cmluZ1NlYXJjaCgiZm94IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcigiZm94eSBmb3giKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuQ29sbCwgbnVsbCk7CisKKyAgICAgICAgQnJlYWtJdGVyYXRvciBjaGFyQnJlYWtlciA9IEJyZWFrSXRlcmF0b3IuZ2V0Q2hhcmFjdGVySW5zdGFuY2UoTG9jYWxlLlVTKTsKKyAgICAgICAgQnJlYWtJdGVyYXRvciB3b3JkQnJlYWtlciA9IEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKExvY2FsZS5VUyk7CisgICAgICAgIAorICAgICAgICBpbnRbXSBjaGFycyA9IG5ldyBpbnRbXSB7IDAsIDUgfTsgICAvLyBleHBlY3RlZCByZXN1bHRzCisgICAgICAgIGludFtdIHdvcmRzID0gbmV3IGludFtdIHsgNSB9OworICAgICAgICAKKyAgICAgICAgbG9nbG4oImRlZmF1bHQgYnJlYWsgaXRlcmF0b3IuLi4iKTsKKyAgICAgICAgZG9UZXN0Q2FzZShpdGVyLCBjaGFycyk7ICAgICAgICAgICAgLy8gY2hhcmFjdGVyIGJyZWFrZXIgYnkgZGVmYXVsdAorICAgICAgICAKKyAgICAgICAgbG9nbG4oIndvcmQgYnJlYWsgaXRlcmF0b3IuLi4iKTsKKyAgICAgICAgaXRlci5zZXRCcmVha0l0ZXJhdG9yKHdvcmRCcmVha2VyKTsgLy8gd29yZCBicmVhayBkZXRlY3Rpb24KKyAgICAgICAgZG9UZXN0Q2FzZShpdGVyLCB3b3Jkcyk7CisgICAgICAgIGlmIChpdGVyLmdldEJyZWFrSXRlcmF0b3IoKSAhPSB3b3JkQnJlYWtlcikgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBnZXRCcmVha0l0ZXJhdG9yIHJldHVybmVkIHdyb25nIG9iamVjdCIpOworICAgICAgICB9CisKKyAgICAgICAgbG9nbG4oImNoYXIgYnJlYWsgaXRlcmF0b3IuLi4iKTsKKyAgICAgICAgaXRlci5zZXRCcmVha0l0ZXJhdG9yKGNoYXJCcmVha2VyKTsgLy8gY2hhciBicmVhayBkZXRlY3Rpb24KKyAgICAgICAgZG9UZXN0Q2FzZShpdGVyLCBjaGFycyk7CisgICAgICAgIGlmIChpdGVyLmdldEJyZWFrSXRlcmF0b3IoKSAhPSBjaGFyQnJlYWtlcikgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBnZXRCcmVha0l0ZXJhdG9yIHJldHVybmVkIHdyb25nIG9iamVjdCIpOworICAgICAgICB9CisKKyAgICAgICAgbG9nbG4oIm51bGwgYnJlYWsgaXRlcmF0b3IuLi4iKTsKKyAgICAgICAgaXRlci5zZXRCcmVha0l0ZXJhdG9yKG51bGwpOworICAgICAgICBkb1Rlc3RDYXNlKGl0ZXIsIGNoYXJzKTsKKyAgICAgICAgaWYgKGl0ZXIuZ2V0QnJlYWtJdGVyYXRvcigpICE9IG51bGwpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogZ2V0QnJlYWtJdGVyYXRvciByZXR1cm5lZCB3cm9uZyBvYmplY3QiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0IGZvciBTZWFyY2hJdGVyYXRvci5zZXRUYXJnZXQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0U2V0VGFyZ2V0KCkgeworICAgICAgICBTdHJpbmcgIHBhdCA9ICJmb3giOworICAgICAgICBTdHJpbmcgIHRhcmcxID0gInRoZSBmb3h5IGJyb3duIGZveCI7CisgICAgICAgIFN0cmluZyAgdGFyZzIgPSAidGhlIHF1aWNrIGJyb3duIGZveCI7CisgICAgICAgIAorICAgICAgICBpbnRbXSBtYXRjaDEgPSBuZXcgaW50W10geyA0LCAxNSB9OyAgIC8vIGV4cGVjdGVkIHJlc3VsdHMKKyAgICAgICAgaW50W10gbWF0Y2gyID0gbmV3IGludFtdIHsgMTYgfTsKKworICAgICAgICBTdHJpbmdTZWFyY2ggaXRlciA9IG5ldyBTdHJpbmdTZWFyY2gocGF0LCBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IodGFyZzEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5Db2xsLCBudWxsKTsKKworICAgICAgICBsb2dsbigiaW5pdGlhbCB0ZXh0Li4uIik7CisgICAgICAgIGRvVGVzdENhc2UoaXRlciwgbWF0Y2gxKTsKKyAgICAgICAgYXNzZXJ0RXF1YWwoaXRlci5nZXRUYXJnZXQoKSwgdGFyZzEpOworICAgICAgICAKKyAgICAgICAgbG9nbG4oInRhcmdldCAjMi4uLiIpOworICAgICAgICBpdGVyLnNldFRhcmdldChuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IodGFyZzIpKTsKKyAgICAgICAgZG9UZXN0Q2FzZShpdGVyLCBtYXRjaDIpOworICAgICAgICBhc3NlcnRFcXVhbChpdGVyLmdldFRhcmdldCgpLCB0YXJnMik7CisgICAgICAgIAorICAgICAgICBsb2dsbigiYmFjayB0byB0YXJnZXQgIzEuLi4iKTsKKyAgICAgICAgaXRlci5zZXRUYXJnZXQobmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKHRhcmcxKSk7CisgICAgICAgIGRvVGVzdENhc2UoaXRlciwgbWF0Y2gxKTsKKyAgICAgICAgYXNzZXJ0RXF1YWwoaXRlci5nZXRUYXJnZXQoKSwgdGFyZzEpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0IGZvciBTdHJpbmdTZWFyY2guc2V0U3RyZW5ndGgKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0U2V0U3RyZW5ndGgoKSB7CisgICAgICAgIFN0cmluZyAgcGF0ID0gImZveCI7CisgICAgICAgIFN0cmluZyAgdGFyZyA9ICJ0aGUgZm94eSBicm93biBGb3giOworICAgICAgICAKKyAgICAgICAgaW50W10gbWF0Y2gxID0gbmV3IGludFtdIHsgNCwgMTUgfTsgICAvLyBleHBlY3RlZCByZXN1bHRzCisgICAgICAgIGludFtdIG1hdGNoMyA9IG5ldyBpbnRbXSB7IDQgfTsKKworICAgICAgICBTdHJpbmdTZWFyY2ggaXRlciA9IG5ldyBTdHJpbmdTZWFyY2gocGF0LCBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IodGFyZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbkNvbGwsIG51bGwpOworCisgICAgICAgLyogbG9nbG4oIlRyeWluZyBwcmltYXJ5IHN0cmVuZ3RoLi4uIik7CisgICAgICAgIGl0ZXIuc2V0U3RyZW5ndGgoQ29sbGF0b3IuUFJJTUFSWSk7CisgICAgICAgIGRvVGVzdENhc2UoaXRlciwgbWF0Y2gxKTsKKyAgICAgICAgaWYgKGl0ZXIuZ2V0U3RyZW5ndGgoKSAhPSBDb2xsYXRvci5QUklNQVJZKSB7CisgICAgICAgICAgICBlcnJsbigiRVJST1I6IGdldFN0cmVuZ3RoOiBleHBlY3RlZCBQUklNQVJZLCBnb3QgIiArIGl0ZXIuZ2V0U3RyZW5ndGgoKSk7CisgICAgICAgIH0gKi8KKyAgICAgICAgCisgICAgICAgIGxvZ2xuKCJUcnlpbmcgdGVydGlhcnkgc3RyZW5ndGguLi4iKTsKKyAgICAgICAgaXRlci5zZXRTdHJlbmd0aChDb2xsYXRvci5URVJUSUFSWSk7CisgICAgICAgIGRvVGVzdENhc2UoaXRlciwgbWF0Y2gzKTsKKyAgICAgICAgaWYgKGl0ZXIuZ2V0U3RyZW5ndGgoKSAhPSBDb2xsYXRvci5URVJUSUFSWSkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBnZXRTdHJlbmd0aDogZXhwZWN0ZWQgUFJJTUFSWSwgZ290ICIgKyBpdGVyLmdldFN0cmVuZ3RoKCkpOworICAgICAgICB9CisgICAgICAgIAorICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgZm9yIFN0cmluZ1NlYXJjaC5zZXRDb2xsYXRvcgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RTZXRDb2xsYXRvcigpIHRocm93cyBQYXJzZUV4Y2VwdGlvbiB7CisgICAgICAgIC8vIENyZWF0ZSBhIHRlc3QgY29sbGF0b3IgdGhhdCB0aGlua3MgIm8iIGFuZCAicCIgYXJlIHRoZSBzYW1lIHRoaW5nCisgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIHRlc3RDb2xsID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKGVuQ29sbC5nZXRSdWxlcygpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiYgbyxPIDsgcCxQIiApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgU3RyaW5nICBwYXQgPSAiZm94IjsKKyAgICAgICAgU3RyaW5nICB0YXJnID0gImZveCBmcHggIjsKKyAgICAgICAgCisgICAgICAgIGludFtdIG1hdGNoMSA9IG5ldyBpbnRbXSB7IDAgfTsgICAgIC8vIEVuZ2xpc2ggcmVzdWx0cworICAgICAgICBpbnRbXSBtYXRjaDIgPSBuZXcgaW50W10geyAwLCA0IH07ICAvLyBUZXN0IGNvbGxhdG9yIHJlc3VsdHMKKworICAgICAgICBTdHJpbmdTZWFyY2ggaXRlciA9IG5ldyBTdHJpbmdTZWFyY2gocGF0LCBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IodGFyZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbkNvbGwsIG51bGwpOworCisgICAgICAgIGxvZ2xuKCJUcnlpbmcgRW5nbGlzaCBjb2xsYXRvci4uLiIpOworCisgICAgICAgIGl0ZXIuc2V0U3RyZW5ndGgoQ29sbGF0b3IuUFJJTUFSWSk7CisgICAgICAgIGRvVGVzdENhc2UoaXRlciwgbWF0Y2gxKTsKKyAgICAgICAgaWYgKGl0ZXIuZ2V0Q29sbGF0b3IoKSAhPSBlbkNvbGwpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogZ2V0Q29sbGF0b3IgcmV0dXJuZWQgd3JvbmcgY29sbGF0b3IiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbG9nbG4oIlRyeWluZyB0ZXN0IGNvbGxhdG9yLi4uIik7CisKKyAgICAgICAgaXRlci5zZXRDb2xsYXRvcih0ZXN0Q29sbCk7CisgICAgICAgIGl0ZXIuc2V0U3RyZW5ndGgoQ29sbGF0b3IuUFJJTUFSWSk7CisgICAgICAgIGRvVGVzdENhc2UoaXRlciwgbWF0Y2gyKTsKKyAgICAgICAgaWYgKGl0ZXIuZ2V0Q29sbGF0b3IoKSAhPSB0ZXN0Q29sbCkgeworICAgICAgICAgICAgZXJybG4oIkVSUk9SOiBnZXRDb2xsYXRvciByZXR1cm5lZCB3cm9uZyBjb2xsYXRvciIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBsb2dsbigiVHJ5aW5nIEVuZ2xpc2ggY29sbGF0b3IgYWdhaW4uLi4iKTsKKworICAgICAgICBpdGVyLnNldENvbGxhdG9yKGVuQ29sbCk7CisgICAgICAgIGl0ZXIuc2V0U3RyZW5ndGgoQ29sbGF0b3IuUFJJTUFSWSk7CisgICAgICAgIGRvVGVzdENhc2UoaXRlciwgbWF0Y2gxKTsKKyAgICAgICAgaWYgKGl0ZXIuZ2V0Q29sbGF0b3IoKSAhPSBlbkNvbGwpIHsKKyAgICAgICAgICAgIGVycmxuKCJFUlJPUjogZ2V0Q29sbGF0b3IgcmV0dXJuZWQgd3JvbmcgY29sbGF0b3IiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IGZvciBTdHJpbmdTZWFyY2guc2V0UGF0dGVybgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RTZXRQYXR0ZXJuKCkgeworICAgICAgICAgICAgICAgICAgICAgIC8vIDAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwMTIzNDU2Nzg5CisgICAgICAgIFN0cmluZyB0YXJnZXQgPSAiVGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGZveGVzIjsKKyAgICAgICAgU3RyaW5nIHBhdDEgPSAidGhlIjsKKyAgICAgICAgU3RyaW5nIHBhdDIgPSAiZm94IjsKKyAgICAgICAgCisgICAgICAgIGludFtdIG1hdGNoMSA9IG5ldyBpbnRbXSB7IDAsIDMxIH07CisgICAgICAgIGludFtdIG1hdGNoMiA9IG5ldyBpbnRbXSB7IDE2LCA0MCB9OworCisgICAgICAgIFN0cmluZ1NlYXJjaCBpdGVyID0gbmV3IFN0cmluZ1NlYXJjaChwYXQxLCBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IodGFyZ2V0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuQ29sbCwgbnVsbCk7CisgICAgICAgIGl0ZXIuc2V0U3RyZW5ndGgoQ29sbGF0b3IuUFJJTUFSWSk7CisgICAgICAgIAorICAgICAgICBkb1Rlc3RDYXNlKGl0ZXIsIG1hdGNoMSk7CisgICAgICAgIGlmICghaXRlci5nZXRQYXR0ZXJuKCkuZXF1YWxzKHBhdDEpKSB7CisgICAgICAgICAgICBlcnJsbigiZ2V0UGF0dGVybiByZXR1cm5lZCAnIiArIGl0ZXIuZ2V0UGF0dGVybigpICsgIicsIGV4cGVjdGVkICciCisgICAgICAgICAgICAgICAgKyBwYXQxICsgIiciKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaXRlci5zZXRQYXR0ZXJuKHBhdDIpOworICAgICAgICBkb1Rlc3RDYXNlKGl0ZXIsIG1hdGNoMik7CisgICAgICAgIGlmICghaXRlci5nZXRQYXR0ZXJuKCkuZXF1YWxzKHBhdDIpKSB7CisgICAgICAgICAgICBlcnJsbigiZ2V0UGF0dGVybiByZXR1cm5lZCAnIiArIGl0ZXIuZ2V0UGF0dGVybigpICsgIicsIGV4cGVjdGVkICciCisgICAgICAgICAgICAgICAgKyBwYXQxICsgIiciKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaXRlci5zZXRQYXR0ZXJuKHBhdDEpOworICAgICAgICBkb1Rlc3RDYXNlKGl0ZXIsIG1hdGNoMSk7CisgICAgICAgIGlmICghaXRlci5nZXRQYXR0ZXJuKCkuZXF1YWxzKHBhdDEpKSB7CisgICAgICAgICAgICBlcnJsbigiZ2V0UGF0dGVybiByZXR1cm5lZCAnIiArIGl0ZXIuZ2V0UGF0dGVybigpICsgIicsIGV4cGVjdGVkICciCisgICAgICAgICAgICAgICAgKyBwYXQxICsgIiciKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUZXN0IGZvciBhbiBpbmZpbml0ZSBsb29wIHRoYXQgaGFwcGVuZWQgd2hlbiB0aGUgdGFyZ2V0IHRleHQgc3RhcnRlZAorICAgICAqIHdpdGggYW4gaWdub3JhYmxlIGNoYXJhY3Rlci4KKyAgICAgKiBSZXBvcnRlZCBieSBNdWx5IE92ZWQsIDxtdWx5b3ZlZEBuZXR2aXNpb24ubmV0LmlsPgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RJZ25vcmFibGVMb29wKCkgeworICAgICAgICBTdHJpbmcgcGF0dGVybiA9ICJnbyI7CisgICAgICAgIFN0cmluZyB0YXJnZXQgID0gIiAgb24iOworCisgICAgICAgIFN0cmluZ1NlYXJjaCBzZWFyY2g7CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgc2VhcmNoPW5ldyBTdHJpbmdTZWFyY2gocGF0dGVybiwgbmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKHRhcmdldCksIGVuQ29sbCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGxvZ2xuKCJzZWFyY2hpbmcuLi4gIitwYXR0ZXJuKTsKKyAgICAgICAgICAgIHNlYXJjaC5maXJzdCgpOworICAgICAgICAgICAgbG9nbG4oIldpbGwgbmV2ZXIgZ28gaGVyZSBpZiBzZWFyY2hpbmcgZm9yICdnbyciKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJDYXVnaHQgZXhjZXB0aW9uOiAiICsgZS50b1N0cmluZygpKTsKKyAgICAgICAgfQorCisgICAgICAgIGxvZ2xuKCJlbmQiKTsKKyAgICB9CisgICAgCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gVmFyaW91cyBpbnRlcm5hbCB1dGlsaXR5IG1ldGhvZHMuLi4uCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICB2b2lkIGFzc2VydEVxdWFsKENoYXJhY3Rlckl0ZXJhdG9yIGkxLCBTdHJpbmcgczIpIHsKKyAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgaTIgPSBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IoczIpOworICAgICAgICBjaGFyIGMxID0gaTEuZmlyc3QoKTsKKyAgICAgICAgY2hhciBjMiA9IGkyLmZpcnN0KCk7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgCisgICAgICAgIHdoaWxlIChjMSA9PSBjMiAmJiBjMSAhPSBDaGFyYWN0ZXJJdGVyYXRvci5ET05FKSB7CisgICAgICAgICAgICBjMSA9IGkxLm5leHQoKTsKKyAgICAgICAgICAgIGMyID0gaTIubmV4dCgpOworICAgICAgICB9CisgICAgICAgIGlmIChjMSAhPSBDaGFyYWN0ZXJJdGVyYXRvci5ET05FIHx8IGMyICE9IENoYXJhY3Rlckl0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgIGVycmxuKCJDaGFyYWN0ZXJJdGVyYXRvciBtaXNtYXRjaCBhdCBpbmRleCAiICsgaSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdm9pZCBkb1Rlc3RDYXNlKFN0cmluZ1NlYXJjaCBpdGVyLCBpbnRbXSBleHBlY3RlZCkgeworICAgICAgICAvLworICAgICAgICAvLyBUaGUgYmFzaWMgbG9naWMgaGVyZSBpcyBhcyBmb2xsb3dzLi4uICBXZSBjb25zdHJ1Y3QgYSBzZWFyY2gKKyAgICAgICAgLy8gaXRlcmF0b3IgYW5kIHVzZSBpdCB0byBmaW5kIGFsbCBvZiB0aGUgbWF0Y2hlcyBpbiB0aGUgdGFyZ2V0CisgICAgICAgIC8vIHRleHQuICBUaGVuIHdlIGNvbXBhcmUgaXQgdG8gdGhlIGV4cGVjdGVkIG1hdGNoZXMKKyAgICAgICAgLy8KKyAgICAgICAgVmVjdG9yIG1hdGNoZXMgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IGl0ZXIuZmlyc3QoKTsgaSAhPSBTZWFyY2hJdGVyYXRvci5ET05FOyBpID0gaXRlci5uZXh0KCkpIHsKKyAgICAgICAgICAgIG1hdGNoZXMuYWRkRWxlbWVudChuZXcgSW50ZWdlcihpKSk7CisgICAgICAgIH0KKyAgICAgICAgY29tcGFyZU1hdGNoZXMoZXhwZWN0ZWQsIG1hdGNoZXMpOworICAgICAgICAKKyAgICAgICAgLy8gTm93IGRvIHRoZSBzYW1lIGV4YWN0IHRoaW5nIGFzIGFib3ZlLCBidXQgaW4gcmV2ZXJzZQorICAgICAgICBsb2dsbigiTm93IHNlYXJjaGluZyBpbiByZXZlcnNlLi4uIik7CisgICAgICAgIG1hdGNoZXMucmVtb3ZlQWxsRWxlbWVudHMoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IGl0ZXIubGFzdCgpOyBpICE9IFNlYXJjaEl0ZXJhdG9yLkRPTkU7IGkgPSBpdGVyLnByZXZpb3VzKCkpIHsKKyAgICAgICAgICAgIG1hdGNoZXMuaW5zZXJ0RWxlbWVudEF0KG5ldyBJbnRlZ2VyKGkpLCAwKTsKKyAgICAgICAgfQorICAgICAgICBjb21wYXJlTWF0Y2hlcyhleHBlY3RlZCwgbWF0Y2hlcyk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFV0aWxpdHkgZnVuY3Rpb24gdXNlZCBieSBUZXN0Q2FzZXMgdG8gY29tcGFyZSB0aGUgbWF0Y2hlcyB0aGF0CisgICAgICogd2VyZSBmb3VuZCBhZ2FpbnN0IHRoZSBvbmVzIHRoYXQgd2VyZSBleHBlY3RlZAorICAgICAqLworICAgIHZvaWQgY29tcGFyZU1hdGNoZXMoaW50W10gZXhwZWN0ZWQsIFZlY3RvciBmb3VuZCkgeworICAgICAgICAvLyBTdGVwIHRocm91Z2ggdGhlIHR3byBhcnJheXMgaW4gcGFyYWxsZWwgYW5kIG1ha2Ugc3VyZSB0aGF0IHRoZXkncmUKKyAgICAgICAgLy8gdGhlIHNhbWUKKyAgICAgICAgCisgICAgICAgIGludCBlPTAsIGY9MDsKKyAgICAgICAgCisgICAgICAgIHdoaWxlIChlIDwgZXhwZWN0ZWQubGVuZ3RoICYmIGYgPCBmb3VuZC5zaXplKCkpIHsKKyAgICAgICAgICAgIGludCBlVmFsID0gZXhwZWN0ZWRbZV07CisgICAgICAgICAgICBpbnQgZlZhbCA9ICgoSW50ZWdlcilmb3VuZC5lbGVtZW50QXQoZikpLmludFZhbHVlKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChlVmFsIDwgZlZhbCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJNaXNzZWQgZXhwZWN0ZWQgbWF0Y2ggYXQgIiArIGVWYWwpOworICAgICAgICAgICAgICAgIGUrKzsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZVZhbCA+IGZWYWwpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRm91bmQgdW5leHBlY3RlZCBtYXRjaCBhdCAiICsgZlZhbCk7CisgICAgICAgICAgICAgICAgZisrOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlKys7CisgICAgICAgICAgICAgICAgZisrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHdoaWxlIChlIDwgZXhwZWN0ZWQubGVuZ3RoKSB7CisgICAgICAgICAgICBlcnJsbigiTWlzc2VkIGV4cGVjdGVkIG1hdGNoIGF0ICIgKyBleHBlY3RlZFtlXSk7CisgICAgICAgICAgICBlKys7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGYgPCBmb3VuZC5zaXplKCkpIHsKKyAgICAgICAgICAgIGludCBmVmFsID0gKChJbnRlZ2VyKWZvdW5kLmVsZW1lbnRBdChmKSkuaW50VmFsdWUoKTsKKyAgICAgICAgICAgIGVycmxuKCJGb3VuZCB1bmV4cGVjdGVkIG1hdGNoIGF0ICIgKyBmVmFsKTsKKyAgICAgICAgICAgIGYrKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIElDVTRKIEppdHRlcmJ1ZyAxMQorICAgICAqLworICAgIC8qCisgICAgQnVnIHRvIGJlIHNvbHZlZCBpbiBsYXRlciByZWxlYXNlLgorICAgIENvbW1lbnRlZCBhd2F5IGZvciBzdWNjZXNzZnVsIHRlc3RpbmcuCisgICAgVE9ETy4KKyAgICBwdWJsaWMgdm9pZCBUZXN0SjExKCkgeworICAgICAgICBBdXhKMTEoImMiLCAiU2NvdHQgR2FueW8iLCAxKTsKKyAgICAgICAgQXV4SjExKCIgIiwgIlNjb3R0IEdhbnlvIiwgNSk7CisgICAgfQorICAgICovCisKKyAgICBwcml2YXRlIHZvaWQgQXV4SjExKFN0cmluZyBwYXR0ZXJuLCBTdHJpbmcgdGV4dCwgaW50IGV4cGVjdGVkTG9jKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBTdHJpbmdTZWFyY2ggc3MgPSBuZXcgU3RyaW5nU2VhcmNoKHBhdHRlcm4sIHRleHQpOworICAgICAgICAgICAgc3Muc2V0U3RyZW5ndGgoQ29sbGF0b3IuUFJJTUFSWSk7CisgICAgICAgICAgICBpbnQgbG9jID0gc3MubmV4dCgpOworICAgICAgICAgICAgaWYgKGxvYyA9PSBleHBlY3RlZExvYykgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJPazogU3RyaW5nU2VhcmNoKFwiIiArIHBhdHRlcm4gKyAiXCIsIFwiIiArIHRleHQgKyAiXCIpID0gIiArIGxvYyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBTdHJpbmdTZWFyY2goXCIiICsgcGF0dGVybiArICJcIiwgXCIiICsgdGV4dCArICJcIikgPSAiICsgbG9jICsKKyAgICAgICAgICAgICAgICAgICAgICAiLCBleHBlY3RlZCAiICsgZXhwZWN0ZWRMb2MpOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IFN0cmluZ1NlYXJjaChcIiIgKyBwYXR0ZXJuICsgIlwiLCBcIiIgKyB0ZXh0ICsgIlwiKSB0aHJldyAiKTsKKyAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXN0L3NlYXJjaC9wYWNrYWdlLmh0bWwgYi9zcmMvY29tL2libS90ZXN0L3NlYXJjaC9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTgwZTU3OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3Qvc2VhcmNoL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPCEtLSAgQ29weXJpZ2h0IChDKSAyMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorICBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGVzdC9zZWFyY2gvQXR0aWMvcGFja2FnZS5odG1sLHYgJAorICAkUmV2aXNpb246IDEuMSAkCisgICREYXRlOiAyMDAwLzAzLzE1IDIxOjM1OjUwICQKKy0tPgorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0id2hpdGUiPgorVGVzdHMgZm9yIHRoZSBpbnRlcm5hdGlvbmFsIHNlYXJjaCBjbGFzc2VzLgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3QvdGltZXpvbmUvVGltZVpvbmVCb3VuZGFyeVRlc3QuamF2YSBiL3NyYy9jb20vaWJtL3Rlc3QvdGltZXpvbmUvVGltZVpvbmVCb3VuZGFyeVRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hOTkyZDZmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGVzdC90aW1lem9uZS9UaW1lWm9uZUJvdW5kYXJ5VGVzdC5qYXZhCkBAIC0wLDAgKzEsNjc2IEBACisvKgorICAgIEB0ZXN0IDEuOSA5OS8wNi8xNQorICAgIEBzdW1tYXJ5IHRlc3QgVGltZSBab25lIEJvdW5kYXJ5CisqLworCitwYWNrYWdlIGNvbS5pYm0udGVzdC50aW1lem9uZTsKK2ltcG9ydCBjb20uaWJtLnRleHQuKjsKK2ltcG9ydCBjb20uaWJtLnV0aWwuKjsKK2ltcG9ydCBjb20uaWJtLnRlc3QuKjsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworLyoqCisgKiBBIHRlc3Qgd2hpY2ggZGlzY292ZXJzIHRoZSBib3VuZGFyaWVzIG9mIERTVCBwcm9ncmFtbWF0aWNhbGx5IGFuZCB2ZXJpZmllcworICogdGhhdCB0aGV5IGFyZSBjb3JyZWN0LgorICovCitwdWJsaWMgY2xhc3MgVGltZVpvbmVCb3VuZGFyeVRlc3QgZXh0ZW5kcyBUZXN0Rm13aworeworICAgIHN0YXRpYyBmaW5hbCBpbnQgT05FX1NFQ09ORCA9IDEwMDA7CisgICAgc3RhdGljIGZpbmFsIGludCBPTkVfTUlOVVRFID0gNjAqT05FX1NFQ09ORDsKKyAgICBzdGF0aWMgZmluYWwgaW50IE9ORV9IT1VSID0gNjAqT05FX01JTlVURTsKKyAgICBzdGF0aWMgZmluYWwgbG9uZyBPTkVfREFZID0gMjQqT05FX0hPVVI7CisgICAgc3RhdGljIGZpbmFsIGxvbmcgT05FX1lFQVIgPSAobG9uZykoMzY1LjI1ICogT05FX0RBWSk7CisgICAgc3RhdGljIGZpbmFsIGxvbmcgU0lYX01PTlRIUyA9IE9ORV9ZRUFSIC8gMjsKKworICAgIHN0YXRpYyBmaW5hbCBpbnQgTU9OVEhfTEVOR1RIW10gPSB7MzEsMjksMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzF9OworCisgICAgLy8gVGhlc2UgdmFsdWVzIGFyZSBlbXBpcmljYWxseSBkZXRlcm1pbmVkIHRvIGJlIGNvcnJlY3QKKyAgICBzdGF0aWMgZmluYWwgbG9uZyBQU1RfMTk5N19CRUcgID0gODYwMzIwODAwMDAwTDsKKyAgICBzdGF0aWMgZmluYWwgbG9uZyBQU1RfMTk5N19FTkQgID0gODc3ODU2NDAwMDAwTDsKKworICAgIC8vIE1pbmltdW0gaW50ZXJ2YWwgZm9yIGJpbmFyeSBzZWFyY2hlcyBpbiBtczsgc2hvdWxkIGJlIG5vIGxhcmdlcgorICAgIC8vIHRoYW4gMTAwMC4KKyAgICBzdGF0aWMgZmluYWwgbG9uZyBJTlRFUlZBTCA9IDEwOyAvLyBNaWxsaXNlY29uZHMKKworICAgIC8vIFszSmFuMDEgTGl1XSBVcGRhdGVkIGZvciAyMDAwZiBkYXRhCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBBVVNUUkFMSUEgPSAiQXVzdHJhbGlhL0FkZWxhaWRlIjsKKyAgICBzdGF0aWMgZmluYWwgbG9uZyBBVVNUUkFMSUFfMTk5N19CRUcgPSA4Nzc3OTcwMDAwMDBMOworICAgIHN0YXRpYyBmaW5hbCBsb25nIEFVU1RSQUxJQV8xOTk3X0VORCA9IDg1OTY1MzAwMDAwMEw7CisgICAgCisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBUaW1lWm9uZUJvdW5kYXJ5VGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEYXRlLnRvU3RyaW5nKCkuc3Vic3RyaW5nKCkgQm91bmRhcnkgVGVzdAorICAgICAqIExvb2sgZm9yIGEgRFNUIGNoYW5nZW92ZXIgdG8gb2NjdXIgd2l0aGluIDYgbW9udGhzIG9mIHRoZSBnaXZlbiBEYXRlLgorICAgICAqIFRoZSBpbml0aWFsIERhdGUudG9TdHJpbmcoKSBzaG91bGQgeWllbGQgYSBzdHJpbmcgY29udGFpbmluZyB0aGUKKyAgICAgKiBzdGFydE1vZGUgYXMgYSBTVUJTVFJJTkcuICBUaGUgYm91bmRhcnkgd2lsbCBiZSB0ZXN0ZWQgdG8gYmUKKyAgICAgKiBhdCB0aGUgZXhwZWN0ZWRCb3VuZGFyeSB2YWx1ZS4KKyAgICAgKi8KKyAgICB2b2lkIGZpbmREYXlsaWdodEJvdW5kYXJ5VXNpbmdEYXRlKERhdGUgZCwgU3RyaW5nIHN0YXJ0TW9kZSwgbG9uZyBleHBlY3RlZEJvdW5kYXJ5KQorICAgIHsKKyAgICAgICAgLy8gR2l2ZW4gYSBkYXRlIHdpdGggYSB5ZWFyIHN0YXJ0LCBmaW5kIHRoZSBEYXlsaWdodCBvbnNldAorICAgICAgICAvLyBhbmQgZW5kLiAgVGhlIGdpdmVuIGRhdGUgc2hvdWxkIGJlIDEvMS94eCBpbiBzb21lIHllYXIuCisKKyAgICAgICAgaWYgKGQudG9TdHJpbmcoKS5pbmRleE9mKHN0YXJ0TW9kZSkgPT0gLTEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvZ2xuKCJFcnJvcjogIiArIHN0YXJ0TW9kZSArICIgbm90IHByZXNlbnQgaW4gIiArIGQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVXNlIGEgYmluYXJ5IHNlYXJjaCwgYXNzdW1pbmcgdGhhdCB3ZSBoYXZlIGEgU3RhbmRhcmQKKyAgICAgICAgLy8gdGltZSBhdCB0aGUgbWlkcG9pbnQuCisgICAgICAgIGxvbmcgbWluID0gZC5nZXRUaW1lKCk7CisgICAgICAgIGxvbmcgbWF4ID0gbWluICsgU0lYX01PTlRIUzsKKworICAgICAgICB3aGlsZSAoKG1heCAtIG1pbikgPiAgSU5URVJWQUwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvbmcgbWlkID0gKG1pbiArIG1heCkgPj4gMTsKKyAgICAgICAgICAgIFN0cmluZyBzID0gbmV3IERhdGUobWlkKS50b1N0cmluZygpOworICAgICAgICAgICAgLy8gbG9nbG4ocyk7CisgICAgICAgICAgICBpZiAocy5pbmRleE9mKHN0YXJ0TW9kZSkgIT0gLTEpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbWluID0gbWlkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1heCA9IG1pZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGxvZ2xuKCJEYXRlIEJlZm9yZTogIiArIHNob3dEYXRlKG1pbikpOworICAgICAgICBsb2dsbigiRGF0ZSBBZnRlcjogICIgKyBzaG93RGF0ZShtYXgpKTsKKyAgICAgICAgbG9uZyBtaW5kZWx0YSA9IGV4cGVjdGVkQm91bmRhcnkgLSBtaW47CisgICAgICAgIGxvbmcgbWF4ZGVsdGEgPSBtYXggLSBleHBlY3RlZEJvdW5kYXJ5OworICAgICAgICBpZiAobWluZGVsdGEgPj0gMCAmJiBtaW5kZWx0YSA8PSBJTlRFUlZBTCAmJgorICAgICAgICAgICAgbWluZGVsdGEgPj0gMCAmJiBtaW5kZWx0YSA8PSBJTlRFUlZBTCkKKyAgICAgICAgICAgIGxvZ2xuKCJQQVNTOiBFeHBlY3RlZCBib3VuZGFyeSBhdCAiICsgZXhwZWN0ZWRCb3VuZGFyeSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBFeHBlY3RlZCBib3VuZGFyeSBhdCAiICsgZXhwZWN0ZWRCb3VuZGFyeSk7CisgICAgfQorCisgICAgLy8gVGhpcyB0ZXN0IGNhbm5vdCBiZSBjb21waWxlZCB1bnRpbCB0aGUgaW5EYXlsaWdodFRpbWUoKSBtZXRob2Qgb2YgR3JlZ29yaWFuQ2FsZW5kYXIKKyAgICAvLyBiZWNvbWVzIHB1YmxpYy4KKyAgICAvLyAgICBzdGF0aWMgdm9pZCBmaW5kRGF5bGlnaHRCb3VuZGFyeVVzaW5nQ2FsZW5kYXIoRGF0ZSBkLCBib29sZWFuIHN0YXJ0c0luRFNUKQorICAgIC8vICAgIHsKKyAgICAvLyAgLy8gR2l2ZW4gYSBkYXRlIHdpdGggYSB5ZWFyIHN0YXJ0LCBmaW5kIHRoZSBEYXlsaWdodCBvbnNldAorICAgIC8vICAvLyBhbmQgZW5kLiAgVGhlIGdpdmVuIGRhdGUgc2hvdWxkIGJlIDEvMS94eCBpbiBzb21lIHllYXIuCisgICAgLy8KKyAgICAvLyAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisgICAgLy8gIGNhbC5zZXRUaW1lKGQpOworICAgIC8vICBpZiAoY2FsLmluRGF5bGlnaHRUaW1lKCkgIT0gc3RhcnRzSW5EU1QpCisgICAgLy8gIHsKKyAgICAvLyAgICAgIGxvZ2xuKCJFcnJvcjogaW5EYXlsaWdodFRpbWUoIiArIGQgKyAiKSAhPSAiICsgc3RhcnRzSW5EU1QpOworICAgIC8vICB9CisgICAgLy8KKyAgICAvLyAgLy8gVXNlIGEgYmluYXJ5IHNlYXJjaCwgYXNzdW1pbmcgdGhhdCB3ZSBoYXZlIGEgU3RhbmRhcmQKKyAgICAvLyAgLy8gdGltZSBhdCB0aGUgbWlkcG9pbnQuCisgICAgLy8gIGxvbmcgbWluID0gZC5nZXRUaW1lKCk7CisgICAgLy8gIGxvbmcgbWF4ID0gbWluICsgKGxvbmcpKDM2NS4yNSAvIDIgKiAyNCo2MCo2MCoxMDAwKTsKKyAgICAvLworICAgIC8vICB3aGlsZSAoKG1heCAtIG1pbikgPiAgSU5URVJWQUwpCisgICAgLy8gIHsKKyAgICAvLyAgICAgIGxvbmcgbWlkID0gKG1pbiArIG1heCkgPj4gMTsKKyAgICAvLyAgICAgIGNhbC5zZXRUaW1lKG5ldyBEYXRlKG1pZCkpOworICAgIC8vICAgICAgaWYgKGNhbC5pbkRheWxpZ2h0VGltZSgpID09IHN0YXJ0c0luRFNUKQorICAgIC8vICAgICAgeworICAgIC8vICAgICAgbWluID0gbWlkOworICAgIC8vICAgICAgfQorICAgIC8vICAgICAgZWxzZQorICAgIC8vICAgICAgeworICAgIC8vICAgICAgbWF4ID0gbWlkOworICAgIC8vICAgICAgfQorICAgIC8vICB9CisgICAgLy8KKyAgICAvLyAgbG9nbG4oIkNhbGVuZGFyIEJlZm9yZTogIiArIHNob3dEYXRlKG1pbikpOworICAgIC8vICBsb2dsbigiQ2FsZW5kYXIgQWZ0ZXI6ICAiICsgc2hvd0RhdGUobWF4KSk7CisgICAgLy8gICAgfQorCisgICAgdm9pZCBmaW5kRGF5bGlnaHRCb3VuZGFyeVVzaW5nVGltZVpvbmUoRGF0ZSBkLCBib29sZWFuIHN0YXJ0c0luRFNULCBsb25nIGV4cGVjdGVkQm91bmRhcnkpCisgICAgeworICAgICAgICBmaW5kRGF5bGlnaHRCb3VuZGFyeVVzaW5nVGltZVpvbmUoZCwgc3RhcnRzSW5EU1QsIGV4cGVjdGVkQm91bmRhcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lWm9uZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIHZvaWQgZmluZERheWxpZ2h0Qm91bmRhcnlVc2luZ1RpbWVab25lKERhdGUgZCwgYm9vbGVhbiBzdGFydHNJbkRTVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGV4cGVjdGVkQm91bmRhcnksIFRpbWVab25lIHR6KQorICAgIHsKKyAgICAgICAgLy8gR2l2ZW4gYSBkYXRlIHdpdGggYSB5ZWFyIHN0YXJ0LCBmaW5kIHRoZSBEYXlsaWdodCBvbnNldAorICAgICAgICAvLyBhbmQgZW5kLiAgVGhlIGdpdmVuIGRhdGUgc2hvdWxkIGJlIDEvMS94eCBpbiBzb21lIHllYXIuCisKKyAgICAgICAgLy8gVXNlIGEgYmluYXJ5IHNlYXJjaCwgYXNzdW1pbmcgdGhhdCB3ZSBoYXZlIGEgU3RhbmRhcmQKKyAgICAgICAgLy8gdGltZSBhdCB0aGUgbWlkcG9pbnQuCisgICAgICAgIGxvbmcgbWluID0gZC5nZXRUaW1lKCk7CisgICAgICAgIGxvbmcgbWF4ID0gbWluICsgU0lYX01PTlRIUzsKKworICAgICAgICBpZiAodHouaW5EYXlsaWdodFRpbWUoZCkgIT0gc3RhcnRzSW5EU1QpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgdHouZ2V0SUQoKSArICIgaW5EYXlsaWdodFRpbWUoIiArCisgICAgICAgICAgICAgICAgICBkICsgIikgIT0gIiArIHN0YXJ0c0luRFNUKTsKKyAgICAgICAgICAgIHN0YXJ0c0luRFNUID0gIXN0YXJ0c0luRFNUOyAvLyBGbGlwIG92ZXI7IGZpbmQgdGhlIGFwcGFyZW50IHZhbHVlCisgICAgICAgIH0KKworICAgICAgICBpZiAodHouaW5EYXlsaWdodFRpbWUobmV3IERhdGUobWF4KSkgPT0gc3RhcnRzSW5EU1QpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgdHouZ2V0SUQoKSArICIgaW5EYXlsaWdodFRpbWUoIiArCisgICAgICAgICAgICAgICAgICAobmV3IERhdGUobWF4KSkgKyAiKSAhPSAiICsgKCFzdGFydHNJbkRTVCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgd2hpbGUgKChtYXggLSBtaW4pID4gIElOVEVSVkFMKQorICAgICAgICB7CisgICAgICAgICAgICBsb25nIG1pZCA9IChtaW4gKyBtYXgpID4+IDE7CisgICAgICAgICAgICBib29sZWFuIGlzSW4gPSB0ei5pbkRheWxpZ2h0VGltZShuZXcgRGF0ZShtaWQpKTsKKyAgICAgICAgICAgIGlmIChpc0luID09IHN0YXJ0c0luRFNUKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1pbiA9IG1pZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtYXggPSBtaWQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsb2dsbih0ei5nZXRJRCgpICsgIiBCZWZvcmU6ICIgKyBzaG93RGF0ZShtaW4sIHR6KSk7CisgICAgICAgIGxvZ2xuKHR6LmdldElEKCkgKyAiIEFmdGVyOiAgIiArIHNob3dEYXRlKG1heCwgdHopKTsKKworICAgICAgICBsb25nIG1pbmRlbHRhID0gZXhwZWN0ZWRCb3VuZGFyeSAtIG1pbjsKKyAgICAgICAgbG9uZyBtYXhkZWx0YSA9IG1heCAtIGV4cGVjdGVkQm91bmRhcnk7IAorICAgICAgICBEYXRlRm9ybWF0IGZtdCA9IERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZShEYXRlRm9ybWF0LkxPTkcsIERhdGVGb3JtYXQuTE9ORyk7CisgICAgICAgIGZtdC5zZXRUaW1lWm9uZSh0eik7CisgICAgICAgIGlmIChtaW5kZWx0YSA+PSAwICYmIG1pbmRlbHRhIDw9IElOVEVSVkFMICYmCisgICAgICAgICAgICBtaW5kZWx0YSA+PSAwICYmIG1pbmRlbHRhIDw9IElOVEVSVkFMKQorICAgICAgICAgICAgbG9nbG4oIlBBU1M6IEV4cGVjdGVkIGJvdW5kYXJ5IGF0ICIgKyBleHBlY3RlZEJvdW5kYXJ5ICsgIiA9ICIgKyBmbXQuZm9ybWF0KG5ldyBEYXRlKGV4cGVjdGVkQm91bmRhcnkpKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBFeHBlY3RlZCBib3VuZGFyeSBhdCAiICsgZXhwZWN0ZWRCb3VuZGFyeSArICIgPSAiICsgZm10LmZvcm1hdChuZXcgRGF0ZShleHBlY3RlZEJvdW5kYXJ5KSkpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBzaG93RGF0ZShsb25nIGwpCisgICAgeworICAgICAgICByZXR1cm4gc2hvd0RhdGUobmV3IERhdGUobCkpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBzaG93RGF0ZShEYXRlIGQpCisgICAgeworICAgICAgICByZXR1cm4gIiIgKyBkLmdldFllYXIoKSArICIvIiArIHNob3dOTihkLmdldE1vbnRoKCkrMSkgKyAiLyIgKyBzaG93Tk4oZC5nZXREYXRlKCkpICsKKyAgICAgICAgICAgICIgIiArIHNob3dOTihkLmdldEhvdXJzKCkpICsgIjoiICsgc2hvd05OKGQuZ2V0TWludXRlcygpKSArCisgICAgICAgICAgICAiIFwiIiArIGQgKyAiXCIgPSAiICsKKyAgICAgICAgICAgIGQuZ2V0VGltZSgpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBzaG93RGF0ZShsb25nIGwsIFRpbWVab25lIHopCisgICAgeworICAgICAgICByZXR1cm4gc2hvd0RhdGUobmV3IERhdGUobCksIHopOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBzaG93RGF0ZShEYXRlIGQsIFRpbWVab25lIHpvbmUpCisgICAgeworICAgICAgICBEYXRlRm9ybWF0IGZtdCA9IERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZShEYXRlRm9ybWF0LkxPTkcsIERhdGVGb3JtYXQuTE9ORyk7CisgICAgICAgIGZtdC5zZXRUaW1lWm9uZSh6b25lKTsKKyAgICAgICAgcmV0dXJuICIiICsgZC5nZXRZZWFyKCkgKyAiLyIgKyBzaG93Tk4oZC5nZXRNb250aCgpKzEpICsgIi8iICsgc2hvd05OKGQuZ2V0RGF0ZSgpKSArCisgICAgICAgICAgICAiICIgKyBzaG93Tk4oZC5nZXRIb3VycygpKSArICI6IiArIHNob3dOTihkLmdldE1pbnV0ZXMoKSkgKworICAgICAgICAgICAgIiBcIiIgKyBkICsgIlwiID0gIiArCisgICAgICAgICAgICBmbXQuZm9ybWF0KGQpICsgIiA9ICIgKyBkLmdldFRpbWUoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgc2hvd05OKGludCBuKQorICAgIHsKKyAgICAgICAgcmV0dXJuICgobiA8IDEwKSA/ICIwIiA6ICIiKSArIG47CisgICAgfQorCisgICAgLyoqCisgICAgICogR2l2ZW4gYSBkYXRlLCBhIFRpbWVab25lLCBhbmQgZXhwZWN0ZWQgdmFsdWVzIGZvciBpbkRheWxpZ2h0VGltZSwKKyAgICAgKiB1c2VEYXlsaWdodFRpbWUsIHpvbmUgYW5kIERTVCBvZmZzZXQsIHZlcmlmeSB0aGF0IHRoaXMgaXMgdGhlIGNhc2UuCisgICAgICovCisgICAgdm9pZCB2ZXJpZnlEU1QoRGF0ZSBkLCBUaW1lWm9uZSB0aW1lX3pvbmUsCisgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBleHBVc2VEYXlsaWdodFRpbWUsIGJvb2xlYW4gZXhwSW5EYXlsaWdodFRpbWUsCisgICAgICAgICAgICAgICAgICAgaW50IGV4cFpvbmVPZmZzZXQsIGludCBleHBEU1RPZmZzZXQpCisgICAgeworICAgICAgICBsb2dsbigiLS0gVmVyaWZ5aW5nIHRpbWUgIiArIGQgKworICAgICAgICAgICAgICAiIGluIHpvbmUgIiArIHRpbWVfem9uZS5nZXRJRCgpKTsKKworICAgICAgICBpZiAodGltZV96b25lLmluRGF5bGlnaHRUaW1lKGQpID09IGV4cEluRGF5bGlnaHRUaW1lKQorICAgICAgICAgICAgbG9nbG4oIlBBU1M6IGluRGF5bGlnaHRUaW1lID0gIiArIHRpbWVfem9uZS5pbkRheWxpZ2h0VGltZShkKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBpbkRheWxpZ2h0VGltZSA9ICIgKyB0aW1lX3pvbmUuaW5EYXlsaWdodFRpbWUoZCkpOworCisgICAgICAgIGlmICh0aW1lX3pvbmUudXNlRGF5bGlnaHRUaW1lKCkgPT0gZXhwVXNlRGF5bGlnaHRUaW1lKQorICAgICAgICAgICAgbG9nbG4oIlBBU1M6IHVzZURheWxpZ2h0VGltZSA9ICIgKyB0aW1lX3pvbmUudXNlRGF5bGlnaHRUaW1lKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlcnJsbigiRkFJTDogdXNlRGF5bGlnaHRUaW1lID0gIiArIHRpbWVfem9uZS51c2VEYXlsaWdodFRpbWUoKSk7CisKKyAgICAgICAgaWYgKHRpbWVfem9uZS5nZXRSYXdPZmZzZXQoKSA9PSBleHBab25lT2Zmc2V0KQorICAgICAgICAgICAgbG9nbG4oIlBBU1M6IGdldFJhd09mZnNldCgpID0gIiArIGV4cFpvbmVPZmZzZXQvKGRvdWJsZSlPTkVfSE9VUik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBnZXRSYXdPZmZzZXQoKSA9ICIgKyB0aW1lX3pvbmUuZ2V0UmF3T2Zmc2V0KCkvKGRvdWJsZSlPTkVfSE9VUiArCisgICAgICAgICAgICAgICAgICAiOyBleHBlY3RlZCAiICsgZXhwWm9uZU9mZnNldC8oZG91YmxlKU9ORV9IT1VSKTsKKworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBnYyA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcih0aW1lX3pvbmUpOworICAgICAgICBnYy5zZXRUaW1lKGQpOworICAgICAgICBpbnQgb2Zmc2V0ID0gdGltZV96b25lLmdldE9mZnNldChnYy5nZXQoZ2MuRVJBKSwgZ2MuZ2V0KGdjLllFQVIpLCBnYy5nZXQoZ2MuTU9OVEgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYy5nZXQoZ2MuREFZX09GX01PTlRIKSwgZ2MuZ2V0KGdjLkRBWV9PRl9XRUVLKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChnYy5nZXQoZ2MuSE9VUl9PRl9EQVkpICogNjAgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjLmdldChnYy5NSU5VVEUpKSAqIDYwICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjLmdldChnYy5TRUNPTkQpKSAqIDEwMDAgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYy5nZXQoZ2MuTUlMTElTRUNPTkQpKTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSBleHBEU1RPZmZzZXQpCisgICAgICAgICAgICBsb2dsbigiUEFTUzogZ2V0T2Zmc2V0KCkgPSAiICsgb2Zmc2V0Lyhkb3VibGUpT05FX0hPVVIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlcnJsbigiRkFJTDogZ2V0T2Zmc2V0KCkgPSAiICsgb2Zmc2V0Lyhkb3VibGUpT05FX0hPVVIgKworICAgICAgICAgICAgICAgICAgIjsgZXhwZWN0ZWQgIiArIGV4cERTVE9mZnNldC8oZG91YmxlKU9ORV9IT1VSKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0Qm91bmRhcmllcygpCisgICAgeworICAgICAgICBUaW1lWm9uZSBwc3QgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiUFNUIik7CisgICAgICAgIFRpbWVab25lIHNhdmUgPSBUaW1lWm9uZS5nZXREZWZhdWx0KCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBUaW1lWm9uZS5zZXREZWZhdWx0KHBzdCk7CisKKyAgICAgICAgICAgIC8vIERTVCBjaGFuZ2VvdmVyIGZvciBQU1QgaXMgNC82LzE5OTcgYXQgMiBob3VycyBwYXN0IG1pZG5pZ2h0CisgICAgICAgICAgICBEYXRlIGQgPSBuZXcgRGF0ZSg5NyxDYWxlbmRhci5BUFJJTCw2KTsKKworICAgICAgICAgICAgLy8gaSBpcyBtaW51dGVzIHBhc3QgbWlkbmlnaHQgc3RhbmRhcmQgdGltZQorICAgICAgICAgICAgZm9yIChpbnQgaT02MDsgaTw9MTgwOyBpKz0xNSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBib29sZWFuIGluRFNUID0gKGkgPj0gMTIwKTsKKyAgICAgICAgICAgICAgICBEYXRlIGUgPSBuZXcgRGF0ZShkLmdldFRpbWUoKSArIGkqNjAqMTAwMCk7CisgICAgICAgICAgICAgICAgdmVyaWZ5RFNUKGUsIHBzdCwgdHJ1ZSwgaW5EU1QsIC04Kk9ORV9IT1VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbkRTVCA/IC03Kk9ORV9IT1VSIDogLTgqT05FX0hPVVIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgVGltZVpvbmUuc2V0RGVmYXVsdChzYXZlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh0cnVlKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBUaGlzIG9ubHkgd29ya3MgaW4gUFNUL1BEVAorICAgICAgICAgICAgVGltZVpvbmUuc2V0RGVmYXVsdChUaW1lWm9uZS5nZXRUaW1lWm9uZSgiUFNUIikpOworICAgICAgICAgICAgbG9nbG4oIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsKKyAgICAgICAgICAgIGZpbmREYXlsaWdodEJvdW5kYXJ5VXNpbmdEYXRlKG5ldyBEYXRlKDk3LDAsMSksICJQU1QiLCBQU1RfMTk5N19CRUcpOworICAgICAgICAgICAgbG9nbG4oIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsKKyAgICAgICAgICAgIGZpbmREYXlsaWdodEJvdW5kYXJ5VXNpbmdEYXRlKG5ldyBEYXRlKDk3LDYsMSksICJQRFQiLCBQU1RfMTk5N19FTkQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gIGlmICh0cnVlKQorICAgICAgICAvLyAgeworICAgICAgICAvLyAgICAgIGxvZ2xuKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7CisgICAgICAgIC8vICAgICAgZmluZERheWxpZ2h0Qm91bmRhcnlVc2luZ0NhbGVuZGFyKG5ldyBEYXRlKDk3LDAsMSksIGZhbHNlKTsKKyAgICAgICAgLy8gICAgICBsb2dsbigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpOworICAgICAgICAvLyAgICAgIGZpbmREYXlsaWdodEJvdW5kYXJ5VXNpbmdDYWxlbmRhcihuZXcgRGF0ZSg5Nyw2LDEpLCB0cnVlKTsKKyAgICAgICAgLy8gIH0KKworICAgICAgICBpZiAodHJ1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gU291dGhlcm4gaGVtaXNwaGVyZSB0ZXN0CisgICAgICAgICAgICBsb2dsbigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpOworICAgICAgICAgICAgVGltZVpvbmUgeiA9IFRpbWVab25lLmdldFRpbWVab25lKEFVU1RSQUxJQSk7CisgICAgICAgICAgICBmaW5kRGF5bGlnaHRCb3VuZGFyeVVzaW5nVGltZVpvbmUobmV3IERhdGUoOTcsMCwxKSwgdHJ1ZSwgQVVTVFJBTElBXzE5OTdfRU5ELCB6KTsKKyAgICAgICAgICAgIGxvZ2xuKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7CisgICAgICAgICAgICBmaW5kRGF5bGlnaHRCb3VuZGFyeVVzaW5nVGltZVpvbmUobmV3IERhdGUoOTcsNiwxKSwgZmFsc2UsIEFVU1RSQUxJQV8xOTk3X0JFRywgeik7CisgICAgICAgIH0KKworICAgICAgICBpZiAodHJ1ZSkKKyAgICAgICAgeworICAgICAgICAgICAgbG9nbG4oIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsKKyAgICAgICAgICAgIGZpbmREYXlsaWdodEJvdW5kYXJ5VXNpbmdUaW1lWm9uZShuZXcgRGF0ZSg5NywwLDEpLCBmYWxzZSwgUFNUXzE5OTdfQkVHKTsKKyAgICAgICAgICAgIGxvZ2xuKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7CisgICAgICAgICAgICBmaW5kRGF5bGlnaHRCb3VuZGFyeVVzaW5nVGltZVpvbmUobmV3IERhdGUoOTcsNiwxKSwgdHJ1ZSwgUFNUXzE5OTdfRU5EKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRoaXMganVzdCBzaG93cyB0aGUgb2Zmc2V0IGZvciBBcHJpbCA0LTcgaW4gMTk5Ny4gIFRoaXMgaXMgcmVkdW5kYW50CisgICAgICAgIC8vIHdpdGggYSB0ZXN0IGFib3ZlLCBzbyB3ZSBkaXNhYmxlIGl0LgorICAgICAgICBpZiAoZmFsc2UpCisgICAgICAgIHsKKyAgICAgICAgICAgIFRpbWVab25lIHogPSBUaW1lWm9uZS5nZXREZWZhdWx0KCk7CisgICAgICAgICAgICBsb2dsbih6LmdldE9mZnNldCgxLCA5NywgMywgNCwgNiwgMCkgKyAiICIgKyBuZXcgRGF0ZSg5NywgMywgNCkpOworICAgICAgICAgICAgbG9nbG4oei5nZXRPZmZzZXQoMSwgOTcsIDMsIDUsIDcsIDApICsgIiAiICsgbmV3IERhdGUoOTcsIDMsIDUpKTsKKyAgICAgICAgICAgIGxvZ2xuKHouZ2V0T2Zmc2V0KDEsIDk3LCAzLCA2LCAxLCAwKSArICIgIiArIG5ldyBEYXRlKDk3LCAzLCA2KSk7CisgICAgICAgICAgICBsb2dsbih6LmdldE9mZnNldCgxLCA5NywgMywgNywgMiwgMCkgKyAiICIgKyBuZXcgRGF0ZSg5NywgMywgNykpOworICAgICAgICB9CisgICAgfQorCisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBDYW4ndCBkbyBhbnkgb2YgdGhlc2Ugd2l0aG91dCBhIHB1YmxpYyBpbkRheWxpZ2h0VGltZSBpbiBHQworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKyAgICAvLyAgICBzdGF0aWMgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisgICAgLy8KKyAgICAvLyAgICBzdGF0aWMgdm9pZCBfdGVzdFVzaW5nQmluYXJ5U2VhcmNoKERhdGUgZCwgYm9vbGVhbiBzdGFydHNJbkRTVCkKKyAgICAvLyAgICB7CisgICAgLy8gIC8vIEdpdmVuIGEgZGF0ZSB3aXRoIGEgeWVhciBzdGFydCwgZmluZCB0aGUgRGF5bGlnaHQgb25zZXQKKyAgICAvLyAgLy8gYW5kIGVuZC4gIFRoZSBnaXZlbiBkYXRlIHNob3VsZCBiZSAxLzEveHggaW4gc29tZSB5ZWFyLgorICAgIC8vCisgICAgLy8gIC8vIFVzZSBhIGJpbmFyeSBzZWFyY2gsIGFzc3VtaW5nIHRoYXQgd2UgaGF2ZSBhIFN0YW5kYXJkCisgICAgLy8gIC8vIHRpbWUgYXQgdGhlIG1pZHBvaW50LgorICAgIC8vICBsb25nIG1pbiA9IGQuZ2V0VGltZSgpOworICAgIC8vICBsb25nIG1heCA9IG1pbiArIChsb25nKSgzNjUuMjUgLyAyICogT05FX0RBWSk7CisgICAgLy8KKyAgICAvLyAgLy8gRmlyc3QgY2hlY2sgdGhlIG1heAorICAgIC8vICBjYWwuc2V0VGltZShuZXcgRGF0ZShtYXgpKTsKKyAgICAvLyAgaWYgKGNhbC5pbkRheWxpZ2h0VGltZSgpID09IHN0YXJ0c0luRFNUKQorICAgIC8vICB7CisgICAgLy8gICAgICBsb2dsbigiRXJyb3I6IGluRGF5bGlnaHRUaW1lKCIgKyAobmV3IERhdGUobWF4KSkgKyAiKSAhPSAiICsgKCFzdGFydHNJbkRTVCkpOworICAgIC8vICB9CisgICAgLy8KKyAgICAvLyAgY2FsLnNldFRpbWUoZCk7CisgICAgLy8gIGlmIChjYWwuaW5EYXlsaWdodFRpbWUoKSAhPSBzdGFydHNJbkRTVCkKKyAgICAvLyAgeworICAgIC8vICAgICAgbG9nbG4oIkVycm9yOiBpbkRheWxpZ2h0VGltZSgiICsgZCArICIpICE9ICIgKyBzdGFydHNJbkRTVCk7CisgICAgLy8gIH0KKyAgICAvLworICAgIC8vICB3aGlsZSAoKG1heCAtIG1pbikgPiAgSU5URVJWQUwpCisgICAgLy8gIHsKKyAgICAvLyAgICAgIGxvbmcgbWlkID0gKG1pbiArIG1heCkgPj4gMTsKKyAgICAvLyAgICAgIGNhbC5zZXRUaW1lKG5ldyBEYXRlKG1pZCkpOworICAgIC8vICAgICAgaWYgKGNhbC5pbkRheWxpZ2h0VGltZSgpID09IHN0YXJ0c0luRFNUKQorICAgIC8vICAgICAgeworICAgIC8vICAgICAgbWluID0gbWlkOworICAgIC8vICAgICAgfQorICAgIC8vICAgICAgZWxzZQorICAgIC8vICAgICAgeworICAgIC8vICAgICAgbWF4ID0gbWlkOworICAgIC8vICAgICAgfQorICAgIC8vICB9CisgICAgLy8KKyAgICAvLyAgbG9nbG4oIkJpbmFyeSBTZWFyY2ggQmVmb3JlOiAiICsgc2hvd0RhdGUobWluKSk7CisgICAgLy8gIGxvZ2xuKCJCaW5hcnkgU2VhcmNoIEFmdGVyOiAgIiArIHNob3dEYXRlKG1heCkpOworICAgIC8vICAgIH0KKyAgICAvLworICAgIC8vICAgIHN0YXRpYyB2b2lkIF90ZXN0VXNpbmdNaWxsaXMoRGF0ZSBkLCBib29sZWFuIHN0YXJ0c0luRFNUKQorICAgIC8vICAgIHsKKyAgICAvLyAgbG9uZyBtaWxsaXMgPSBkLmdldFRpbWUoKTsKKyAgICAvLyAgbG9uZyBtYXggPSBtaWxsaXMgKyAobG9uZykoMzcwICogT05FX0RBWSk7IC8vIEEgeWVhciBwbHVzIGV4dHJhCisgICAgLy8KKyAgICAvLyAgYm9vbGVhbiBsYXN0RFNUID0gc3RhcnRzSW5EU1Q7CisgICAgLy8gIHdoaWxlIChtaWxsaXMgPCBtYXgpCisgICAgLy8gIHsKKyAgICAvLyAgICAgIGNhbC5zZXRUaW1lKG5ldyBEYXRlKG1pbGxpcykpOworICAgIC8vICAgICAgYm9vbGVhbiBpbkRheWxpZ2h0ID0gY2FsLmluRGF5bGlnaHRUaW1lKCk7CisgICAgLy8KKyAgICAvLyAgICAgIGlmIChpbkRheWxpZ2h0ICE9IGxhc3REU1QpCisgICAgLy8gICAgICB7CisgICAgLy8gICAgICBsb2dsbigiU3dpdGNoICIgKyAoaW5EYXlsaWdodCA/ICJpbnRvIiA6ICJvdXQgb2YiKQorICAgIC8vICAgICAgICAgICAgICAgICArICIgRFNUIGF0ICIgKyAobmV3IERhdGUobWlsbGlzKSkpOworICAgIC8vICAgICAgbGFzdERTVCA9IGluRGF5bGlnaHQ7CisgICAgLy8gICAgICB9CisgICAgLy8KKyAgICAvLyAgICAgIG1pbGxpcyArPSAxNSpPTkVfTUlOVVRFOworICAgIC8vICB9CisgICAgLy8gICAgfQorICAgIC8vCisgICAgLy8gICAgc3RhdGljIHZvaWQgX3Rlc3RVc2luZ0ZpZWxkcyhpbnQgeSwgYm9vbGVhbiBzdGFydHNJbkRTVCkKKyAgICAvLyAgICB7CisgICAgLy8gIGJvb2xlYW4gbGFzdERTVCA9IHN0YXJ0c0luRFNUOworICAgIC8vICBmb3IgKGludCBtID0gMDsgbSA8IDEyOyArK20pCisgICAgLy8gIHsKKyAgICAvLyAgICAgIGZvciAoaW50IGQgPSAxOyBkIDw9IE1PTlRIX0xFTkdUSFttXTsgKytkKQorICAgIC8vICAgICAgeworICAgIC8vICAgICAgZm9yIChpbnQgaCA9IDA7IGggPCAyNDsgKytoKQorICAgIC8vICAgICAgeworICAgIC8vICAgICAgICAgIGZvciAoaW50IG1pbiA9IDA7IG1pbiA8IDYwOyBtaW4gKz0gMTUpCisgICAgLy8gICAgICAgICAgeworICAgIC8vICAgICAgICAgIGNhbC5jbGVhcigpOworICAgIC8vICAgICAgICAgIGNhbC5zZXQoeSwgbSwgZCwgaCwgbWluKTsKKyAgICAvLyAgICAgICAgICBib29sZWFuIGluRGF5bGlnaHQgPSBjYWwuaW5EYXlsaWdodFRpbWUoKTsKKyAgICAvLyAgICAgICAgICBpZiAoaW5EYXlsaWdodCAhPSBsYXN0RFNUKQorICAgIC8vICAgICAgICAgIHsKKyAgICAvLyAgICAgICAgICAgICAgbGFzdERTVCA9IGluRGF5bGlnaHQ7CisgICAgLy8gICAgICAgICAgICAgIGxvZygiU3dpdGNoICIgKyAobGFzdERTVCA/ICJpbnRvIiA6ICJvdXQgb2YiKQorICAgIC8vICAgICAgICAgICAgICAgICAgICAgICArICIgRFNUIGF0ICIgKyB5ICsgIi8iICsgKG0rMSkgKyAiLyIgKyBkCisgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICsgIiAiICsgc2hvd05OKGgpICsgIjoiICsgc2hvd05OKG1pbikpOworICAgIC8vICAgICAgICAgICAgICBsb2dsbigiICIgKyBjYWwuZ2V0VGltZSgpKTsKKyAgICAvLworICAgIC8vICAgICAgICAgICAgICBjYWwuc2V0KHksIG0sIGQsIGgtMSwgNDUpOworICAgIC8vICAgICAgICAgICAgICBsb2coIkJlZm9yZSA9ICIKKyAgICAvLysgeSArICIvIiArIChtKzEpICsgIi8iICsgZAorICAgIC8vKyAiICIgKyBzaG93Tk4oaC0xKSArICI6IiArIHNob3dOTig0NSkpOworICAgIC8vICAgICAgICAgICAgICBsb2dsbigiICIgKyBjYWwuZ2V0VGltZSgpKTsKKyAgICAvLyAgICAgICAgICB9CisgICAgLy8gICAgICAgICAgfQorICAgIC8vICAgICAgfQorICAgIC8vICAgICAgfQorICAgIC8vICB9CisgICAgLy8gICAgfQorICAgIC8vCisgICAgLy8gICAgcHVibGljIHZvaWQgVGVzdDEoKQorICAgIC8vICAgIHsKKyAgICAvLyAgbG9nbG4oTG9jYWxlLmdldERlZmF1bHQoKS5nZXREaXNwbGF5TmFtZSgpKTsKKyAgICAvLyAgbG9nbG4oVGltZVpvbmUuZ2V0RGVmYXVsdCgpLmdldElEKCkpOworICAgIC8vICBsb2dsbihuZXcgRGF0ZSgwKSk7CisgICAgLy8KKyAgICAvLyAgaWYgKHRydWUpCisgICAgLy8gIHsKKyAgICAvLyAgICAgIGxvZ2xuKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7CisgICAgLy8gICAgICBfdGVzdFVzaW5nQmluYXJ5U2VhcmNoKG5ldyBEYXRlKDk3LDAsMSksIGZhbHNlKTsKKyAgICAvLyAgICAgIGxvZ2xuKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7CisgICAgLy8gICAgICBfdGVzdFVzaW5nQmluYXJ5U2VhcmNoKG5ldyBEYXRlKDk3LDYsMSksIHRydWUpOworICAgIC8vICB9CisgICAgLy8KKyAgICAvLyAgaWYgKHRydWUpCisgICAgLy8gIHsKKyAgICAvLyAgICAgIGxvZ2xuKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7CisgICAgLy8gICAgICBsb2dsbigiU3RlcHBpbmcgdXNpbmcgbWlsbGlzIik7CisgICAgLy8gICAgICBfdGVzdFVzaW5nTWlsbGlzKG5ldyBEYXRlKDk3LDAsMSksIGZhbHNlKTsKKyAgICAvLyAgfQorICAgIC8vCisgICAgLy8gIGlmICh0cnVlKQorICAgIC8vICB7CisgICAgLy8gICAgICBsb2dsbigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpOworICAgIC8vICAgICAgbG9nbG4oIlN0ZXBwaW5nIHVzaW5nIGZpZWxkcyIpOworICAgIC8vICAgICAgX3Rlc3RVc2luZ0ZpZWxkcygxOTk3LCBmYWxzZSk7CisgICAgLy8gIH0KKyAgICAvLworICAgIC8vICBpZiAoZmFsc2UpCisgICAgLy8gIHsKKyAgICAvLyAgICAgIGNhbC5jbGVhcigpOworICAgIC8vICAgICAgY2FsLnNldCgxOTk3LCAzLCA1LCAxMCwgMCk7CisgICAgLy8gICAgICAvLyAgY2FsLmluRGF5bGlnaHRUaW1lKCk7CisgICAgLy8gICAgICBsb2dsbigiRGF0ZSA9ICIgKyBjYWwuZ2V0VGltZSgpKTsKKyAgICAvLyAgICAgIGxvZ2xuKCJNaWxsaXMgPSAiICsgY2FsLmdldFRpbWUoKS5nZXRUaW1lKCkvMzYwMDAwMCk7CisgICAgLy8gIH0KKyAgICAvLyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHZvaWQgX3Rlc3RVc2luZ0JpbmFyeVNlYXJjaChTaW1wbGVUaW1lWm9uZSB0eiwgRGF0ZSBkLCBsb25nIGV4cGVjdGVkQm91bmRhcnkpCisgICAgeworICAgICAgICAvLyBHaXZlbiBhIGRhdGUgd2l0aCBhIHllYXIgc3RhcnQsIGZpbmQgdGhlIERheWxpZ2h0IG9uc2V0CisgICAgICAgIC8vIGFuZCBlbmQuICBUaGUgZ2l2ZW4gZGF0ZSBzaG91bGQgYmUgMS8xL3h4IGluIHNvbWUgeWVhci4KKworICAgICAgICAvLyBVc2UgYSBiaW5hcnkgc2VhcmNoLCBhc3N1bWluZyB0aGF0IHdlIGhhdmUgYSBTdGFuZGFyZAorICAgICAgICAvLyB0aW1lIGF0IHRoZSBtaWRwb2ludC4KKyAgICAgICAgbG9uZyBtaW4gPSBkLmdldFRpbWUoKTsKKyAgICAgICAgbG9uZyBtYXggPSBtaW4gKyAobG9uZykoMzY1LjI1IC8gMiAqIE9ORV9EQVkpOworCisgICAgICAgIC8vIEZpcnN0IGNoZWNrIHRoZSBib3VuZGFyaWVzCisgICAgICAgIGJvb2xlYW4gc3RhcnRzSW5EU1QgPSB0ei5pbkRheWxpZ2h0VGltZShkKTsKKworICAgICAgICBpZiAodHouaW5EYXlsaWdodFRpbWUobmV3IERhdGUobWF4KSkgPT0gc3RhcnRzSW5EU1QpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvZ2xuKCJFcnJvcjogaW5EYXlsaWdodFRpbWUoIiArIChuZXcgRGF0ZShtYXgpKSArICIpICE9ICIgKyAoIXN0YXJ0c0luRFNUKSk7CisgICAgICAgIH0KKworICAgICAgICB3aGlsZSAoKG1heCAtIG1pbikgPiAgSU5URVJWQUwpCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvbmcgbWlkID0gKG1pbiArIG1heCkgPj4gMTsKKyAgICAgICAgICAgIGlmICh0ei5pbkRheWxpZ2h0VGltZShuZXcgRGF0ZShtaWQpKSA9PSBzdGFydHNJbkRTVCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtaW4gPSBtaWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgbWF4ID0gbWlkOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbG9nbG4oIkJpbmFyeSBTZWFyY2ggQmVmb3JlOiAiICsgc2hvd0RhdGUobWluKSk7CisgICAgICAgIGxvZ2xuKCJCaW5hcnkgU2VhcmNoIEFmdGVyOiAgIiArIHNob3dEYXRlKG1heCkpOworCisgICAgICAgIGxvbmcgbWluZGVsdGEgPSBleHBlY3RlZEJvdW5kYXJ5IC0gbWluOworICAgICAgICBsb25nIG1heGRlbHRhID0gbWF4IC0gZXhwZWN0ZWRCb3VuZGFyeTsKKyAgICAgICAgaWYgKG1pbmRlbHRhID49IDAgJiYgbWluZGVsdGEgPD0gSU5URVJWQUwgJiYKKyAgICAgICAgICAgIG1pbmRlbHRhID49IDAgJiYgbWluZGVsdGEgPD0gSU5URVJWQUwpCisgICAgICAgICAgICBsb2dsbigiUEFTUzogRXhwZWN0ZWQgYm91bmRhcnkgYXQgIiArIGV4cGVjdGVkQm91bmRhcnkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlcnJsbigiRkFJTDogRXhwZWN0ZWQgYm91bmRhcnkgYXQgIiArIGV4cGVjdGVkQm91bmRhcnkpOworICAgIH0KKworICAgIC8qCisgICAgICBzdGF0aWMgdm9pZCBfdGVzdFVzaW5nTWlsbGlzKERhdGUgZCwgYm9vbGVhbiBzdGFydHNJbkRTVCkKKyAgICAgIHsKKyAgICAgIGxvbmcgbWlsbGlzID0gZC5nZXRUaW1lKCk7CisgICAgICBsb25nIG1heCA9IG1pbGxpcyArIChsb25nKSgzNzAgKiBPTkVfREFZKTsgLy8gQSB5ZWFyIHBsdXMgZXh0cmEKKworICAgICAgYm9vbGVhbiBsYXN0RFNUID0gc3RhcnRzSW5EU1Q7CisgICAgICB3aGlsZSAobWlsbGlzIDwgbWF4KQorICAgICAgeworICAgICAgY2FsLnNldFRpbWUobmV3IERhdGUobWlsbGlzKSk7CisgICAgICBib29sZWFuIGluRGF5bGlnaHQgPSBjYWwuaW5EYXlsaWdodFRpbWUoKTsKKworICAgICAgaWYgKGluRGF5bGlnaHQgIT0gbGFzdERTVCkKKyAgICAgIHsKKyAgICAgIGxvZ2xuKCJTd2l0Y2ggIiArIChpbkRheWxpZ2h0ID8gImludG8iIDogIm91dCBvZiIpCisgICAgICArICIgRFNUIGF0ICIgKyAobmV3IERhdGUobWlsbGlzKSkpOworICAgICAgbGFzdERTVCA9IGluRGF5bGlnaHQ7CisgICAgICB9CisKKyAgICAgIG1pbGxpcyArPSAxNSpPTkVfTUlOVVRFOworICAgICAgfQorICAgICAgfQorICAgICAgKi8KKworICAgIC8qKgorICAgICAqIFRlc3QgbmV3IHJ1bGUgZm9ybWF0cy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0TmV3UnVsZXMoKQorICAgIHsKKyAgICAgICAgLy9sb2dsbihMb2NhbGUuZ2V0RGVmYXVsdCgpLmdldERpc3BsYXlOYW1lKCkpOworICAgICAgICAvL2xvZ2xuKFRpbWVab25lLmdldERlZmF1bHQoKS5nZXRJRCgpKTsKKyAgICAgICAgLy9sb2dsbihuZXcgRGF0ZSgwKSk7CisKKyAgICAgICAgaWYgKHRydWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIERvZXNuJ3QgbWF0dGVyIHdoYXQgdGhlIGRlZmF1bHQgVGltZVpvbmUgaXMgaGVyZSwgc2luY2Ugd2UKKyAgICAgICAgICAgIC8vIGFyZSBjcmVhdGluZyBvdXIgb3duIFRpbWVab25lIG9iamVjdHMuCisKKyAgICAgICAgICAgIFNpbXBsZVRpbWVab25lIHR6OworCisgICAgICAgICAgICBsb2dsbigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKyAgICAgICAgICAgIGxvZ2xuKCJBdWcgMm5kVHVlcyAuLiBNYXIgMTUiKTsKKyAgICAgICAgICAgIHR6ID0gbmV3IFNpbXBsZVRpbWVab25lKC04Kk9ORV9IT1VSLCAiVGVzdF8xIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLkFVR1VTVCwgMiwgQ2FsZW5kYXIuVFVFU0RBWSwgMipPTkVfSE9VUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLk1BUkNILCAxNSwgMCwgMipPTkVfSE9VUik7CisgICAgICAgICAgICAvL2xvZ2xuKHR6LnRvU3RyaW5nKCkpOworICAgICAgICAgICAgbG9nbG4oIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsKKyAgICAgICAgICAgIF90ZXN0VXNpbmdCaW5hcnlTZWFyY2godHosIG5ldyBEYXRlKDk3LDAsMSksIDg1ODQxNjQwMDAwMEwpOworICAgICAgICAgICAgbG9nbG4oIj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKTsKKyAgICAgICAgICAgIF90ZXN0VXNpbmdCaW5hcnlTZWFyY2godHosIG5ldyBEYXRlKDk3LDYsMSksIDg3MTM4MDAwMDAwMEwpOworCisgICAgICAgICAgICBsb2dsbigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKyAgICAgICAgICAgIGxvZ2xuKCJBcHIgV2VkPj0xNCAuLiBTZXAgU3VuPD0yMCIpOworICAgICAgICAgICAgdHogPSBuZXcgU2ltcGxlVGltZVpvbmUoLTgqT05FX0hPVVIsICJUZXN0XzIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuQVBSSUwsIDE0LCAtQ2FsZW5kYXIuV0VETkVTREFZLCAyKk9ORV9IT1VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuU0VQVEVNQkVSLCAtMjAsIC1DYWxlbmRhci5TVU5EQVksIDIqT05FX0hPVVIpOworICAgICAgICAgICAgLy9sb2dsbih0ei50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGxvZ2xuKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7CisgICAgICAgICAgICBfdGVzdFVzaW5nQmluYXJ5U2VhcmNoKHR6LCBuZXcgRGF0ZSg5NywwLDEpLCA4NjExODQ4MDAwMDBMKTsKKyAgICAgICAgICAgIGxvZ2xuKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7CisgICAgICAgICAgICBfdGVzdFVzaW5nQmluYXJ5U2VhcmNoKHR6LCBuZXcgRGF0ZSg5Nyw2LDEpLCA4NzQyMjc2MDAwMDBMKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAgaWYgKHRydWUpCisgICAgICAgICAgeworICAgICAgICAgIGxvZ2xuKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7CisgICAgICAgICAgbG9nbG4oIlN0ZXBwaW5nIHVzaW5nIG1pbGxpcyIpOworICAgICAgICAgIF90ZXN0VXNpbmdNaWxsaXMobmV3IERhdGUoOTcsMCwxKSwgZmFsc2UpOworICAgICAgICAgIH0KKworICAgICAgICAgIGlmICh0cnVlKQorICAgICAgICAgIHsKKyAgICAgICAgICBsb2dsbigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpOworICAgICAgICAgIGxvZ2xuKCJTdGVwcGluZyB1c2luZyBmaWVsZHMiKTsKKyAgICAgICAgICBfdGVzdFVzaW5nRmllbGRzKDE5OTcsIGZhbHNlKTsKKyAgICAgICAgICB9CisKKyAgICAgICAgICBpZiAoZmFsc2UpCisgICAgICAgICAgeworICAgICAgICAgIGNhbC5jbGVhcigpOworICAgICAgICAgIGNhbC5zZXQoMTk5NywgMywgNSwgMTAsIDApOworICAgICAgICAgIC8vICAgIGNhbC5pbkRheWxpZ2h0VGltZSgpOworICAgICAgICAgIGxvZ2xuKCJEYXRlID0gIiArIGNhbC5nZXRUaW1lKCkpOworICAgICAgICAgIGxvZ2xuKCJNaWxsaXMgPSAiICsgY2FsLmdldFRpbWUoKS5nZXRUaW1lKCkvMzYwMDAwMCk7CisgICAgICAgICAgfQorICAgICAgICAgICovCisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gTG9uZyBCdWcKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vcHVibGljIHZvaWQgVGVzdDMoKQorICAgIC8veworICAgIC8vICAgIGZpbmREYXlsaWdodEJvdW5kYXJ5VXNpbmdUaW1lWm9uZShuZXcgRGF0ZSg5Nyw2LDEpLCB0cnVlKTsKKyAgICAvL30KKworICAgIC8qKgorICAgICAqIEZpbmQgYm91bmRhcmllcyBieSBzdGVwcGluZy4KKyAgICAgKi8KKyAgICB2b2lkIGZpbmRCb3VuZGFyaWVzU3RlcHdpc2UoaW50IHllYXIsIGxvbmcgaW50ZXJ2YWwsIFRpbWVab25lIHosIGludCBleHBlY3RlZENoYW5nZXMpCisgICAgeworICAgICAgICBEYXRlIGQgPSBuZXcgRGF0ZSh5ZWFyIC0gMTkwMCwgQ2FsZW5kYXIuSkFOVUFSWSwgMSk7CisgICAgICAgIGxvbmcgdGltZSA9IGQuZ2V0VGltZSgpOyAvLyBtcworICAgICAgICBsb25nIGxpbWl0ID0gdGltZSArIE9ORV9ZRUFSICsgT05FX0RBWTsKKyAgICAgICAgYm9vbGVhbiBsYXN0U3RhdGUgPSB6LmluRGF5bGlnaHRUaW1lKGQpOworICAgICAgICBpbnQgY2hhbmdlcyA9IDA7CisgICAgICAgIGxvZ2xuKCItLSBab25lICIgKyB6LmdldElEKCkgKyAiIHN0YXJ0cyBpbiAiICsgeWVhciArICIgd2l0aCBEU1QgPSAiICsgbGFzdFN0YXRlKTsKKyAgICAgICAgbG9nbG4oInVzZURheWxpZ2h0VGltZSA9ICIgKyB6LnVzZURheWxpZ2h0VGltZSgpKTsKKyAgICAgICAgd2hpbGUgKHRpbWUgPCBsaW1pdCkKKyAgICAgICAgeworICAgICAgICAgICAgZC5zZXRUaW1lKHRpbWUpOworICAgICAgICAgICAgYm9vbGVhbiBzdGF0ZSA9IHouaW5EYXlsaWdodFRpbWUoZCk7CisgICAgICAgICAgICBpZiAoc3RhdGUgIT0gbGFzdFN0YXRlKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGxvZ2xuKChzdGF0ZSA/ICJFbnRyeSAiIDogIkV4aXQgIikgKworICAgICAgICAgICAgICAgICAgICAgICJhdCAiICsgZCk7CisgICAgICAgICAgICAgICAgbGFzdFN0YXRlID0gc3RhdGU7CisgICAgICAgICAgICAgICAgKytjaGFuZ2VzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGltZSArPSBpbnRlcnZhbDsKKyAgICAgICAgfQorICAgICAgICBpZiAoY2hhbmdlcyA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoIWxhc3RTdGF0ZSAmJiAhei51c2VEYXlsaWdodFRpbWUoKSkgbG9nbG4oIk5vIERTVCIpOworICAgICAgICAgICAgZWxzZSBlcnJsbigiRkFJTDogRFNUIGFsbCB5ZWFyLCBvciBubyBEU1Qgd2l0aCB0cnVlIHVzZURheWxpZ2h0VGltZSIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNoYW5nZXMgIT0gMikKKyAgICAgICAgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBjaGFuZ2VzICsgIiBjaGFuZ2VzIHNlZW47IHNob3VsZCBzZWUgMCBvciAyIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIXoudXNlRGF5bGlnaHRUaW1lKCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiB1c2VEYXlsaWdodFRpbWUgZmFsc2UgYnV0IDIgY2hhbmdlcyBzZWVuIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNoYW5nZXMgIT0gZXhwZWN0ZWRDaGFuZ2VzKQorICAgICAgICB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIGNoYW5nZXMgKyAiIGNoYW5nZXMgc2VlbjsgZXhwZWN0ZWQgIiArIGV4cGVjdGVkQ2hhbmdlcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0U3RlcHdpc2UoKQorICAgIHsKKyAgICAgICAgZmluZEJvdW5kYXJpZXNTdGVwd2lzZSgxOTk3LCBPTkVfREFZLCBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiRVNUIiksIDIpOworICAgICAgICBmaW5kQm91bmRhcmllc1N0ZXB3aXNlKDE5OTcsIE9ORV9EQVksIFRpbWVab25lLmdldFRpbWVab25lKCJBQ1QiKSwgMik7IC8vIFVwZGF0ZWQgM0phbjAxCisgICAgICAgIGZpbmRCb3VuZGFyaWVzU3RlcHdpc2UoMTk5NywgT05FX0RBWSwgVGltZVpvbmUuZ2V0VGltZVpvbmUoIkFtZXJpY2EvUGhvZW5peCIpLCAwKTsgLy8gQWRkZWQgM0phbjAxCisgICAgICAgIGZpbmRCb3VuZGFyaWVzU3RlcHdpc2UoMTk5NywgT05FX0RBWSwgVGltZVpvbmUuZ2V0VGltZVpvbmUoQVVTVFJBTElBKSwgMik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGVzdC90aW1lem9uZS9UaW1lWm9uZVJlZ3Jlc3Npb24uamF2YSBiL3NyYy9jb20vaWJtL3Rlc3QvdGltZXpvbmUvVGltZVpvbmVSZWdyZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNzVjMWQ3OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3QvdGltZXpvbmUvVGltZVpvbmVSZWdyZXNzaW9uLmphdmEKQEAgLTAsMCArMSw5MDAgQEAKKy8qKgorICogQHRlc3QgMS4xOCA5OS8wOS8yMQorICogQGJ1ZyA0MDUyOTY3IDQwNzMyMDkgNDA3MzIxNSA0MDg0OTMzIDQwOTY5NTIgNDEwOTMxNCA0MTI2Njc4IDQxNTE0MDYgNDE1MTQyOQorICogQGJ1ZyA0MTU0NTI1IDQxNTQ1MzcgNDE1NDU0MiA0MTU0NjUwIDQxNTk5MjIgNDE2MjU5MyA0MTczNjA0IDQxNzY2ODYgNDE4NDIyOSA0MjA4OTYwCisgKi8KKworcGFja2FnZSBjb20uaWJtLnRlc3QudGltZXpvbmU7CitpbXBvcnQgY29tLmlibS51dGlsLio7CitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGNvbS5pYm0udGV4dC4qOworaW1wb3J0IGNvbS5pYm0udGVzdC4qOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisKK3B1YmxpYyBjbGFzcyBUaW1lWm9uZVJlZ3Jlc3Npb24gZXh0ZW5kcyBUZXN0Rm13ayB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IFRpbWVab25lUmVncmVzc2lvbigpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA1Mjk2NygpIHsKKyAgICAgICAgbG9nbG4oIioqKiBDSEVDSyBUSU1FWk9ORSBBR0FJTlNUIEhPU1QgT1MgU0VUVElORyAqKioiKTsKKwlTdHJpbmcgaWQgPSBUaW1lWm9uZS5nZXREZWZhdWx0KCkuZ2V0SUQoKTsKKyAgICAgICAgbG9nbG4oInVzZXIudGltZXpvbmU6ICIgKyBTeXN0ZW0uZ2V0UHJvcGVydHkoInVzZXIudGltZXpvbmUiLCAiPG5vdCBzZXQ+IikpOworCWxvZ2xuKCJUaW1lWm9uZS5nZXREZWZhdWx0KCkuZ2V0SUQoKTogIiArIGlkKTsKKyAgICAgICAgbG9nbG4obmV3IERhdGUoKS50b1N0cmluZygpKTsKKyAgICAgICAgbG9nbG4oIioqKiBUSEUgUkVTVUxUUyBPRiBUSElTIFRFU1QgTVVTVCBCRSBWRVJJRklFRCBNQU5VQUxMWSAqKioiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA3MzIwOSgpIHsKKyAgICAgICAgVGltZVpvbmUgejEgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiUFNUIik7CisgICAgICAgIFRpbWVab25lIHoyID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoIlBTVCIpOworICAgICAgICBpZiAoejEgPT0gejIpIGVycmxuKCJGYWlsOiBUaW1lWm9uZSBzaG91bGQgcmV0dXJuIGNsb25lcyIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDczMjE1KCkgeworICAgICAgICBTaW1wbGVUaW1lWm9uZSB6ID0gKFNpbXBsZVRpbWVab25lKSBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiR01UIik7CisgICAgICAgIGlmICh6LnVzZURheWxpZ2h0VGltZSgpKQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IEZpeCB0ZXN0IHRvIHN0YXJ0IHdpdGggbm9uLURTVCB6b25lIik7CisgICAgICAgIHouc2V0U3RhcnRSdWxlKENhbGVuZGFyLkZFQlJVQVJZLCAxLCBDYWxlbmRhci5TVU5EQVksIDApOworICAgICAgICB6LnNldEVuZFJ1bGUoQ2FsZW5kYXIuTUFSQ0gsIC0xLCBDYWxlbmRhci5TVU5EQVksIDApOworICAgICAgICBpZiAoIXoudXNlRGF5bGlnaHRUaW1lKCkpCisgICAgICAgICAgICBlcnJsbigiRmFpbDogRFNUIG5vdCBhY3RpdmUiKTsKKyAgICAgICAgaWYgKHouaW5EYXlsaWdodFRpbWUobmV3IERhdGUoOTcsIENhbGVuZGFyLkpBTlVBUlksIDMxKSkgfHwKKyAgICAgICAgICAgICF6LmluRGF5bGlnaHRUaW1lKG5ldyBEYXRlKDk3LCBDYWxlbmRhci5NQVJDSCwgMSkpIHx8CisgICAgICAgICAgICB6LmluRGF5bGlnaHRUaW1lKG5ldyBEYXRlKDk3LCBDYWxlbmRhci5NQVJDSCwgMzEpKSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWw6IERTVCBub3Qgd29ya2luZyBhcyBleHBlY3RlZCIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhlIGV4cGVjdGVkIGJlaGF2aW9yIG9mIFRpbWVab25lIGFyb3VuZCB0aGUgYm91bmRhcmllcyBpczoKKyAgICAgKiAoQXNzdW1lIHRyYW5zaXRpb24gdGltZSBvZiAyOjAwIEFNKQorICAgICAqICAgIGRheSBvZiBvbnNldCAxOjU5IEFNIFNURCAgPSBkaXNwbGF5IG5hbWUgMTo1OSBBTSBTVAorICAgICAqICAgICAgICAgICAgICAgICAyOjAwIEFNIFNURCAgPSBkaXNwbGF5IG5hbWUgMzowMCBBTSBEVAorICAgICAqICAgIGRheSBvZiBlbmQgICAwOjU5IEFNIFNURCAgPSBkaXNwbGF5IG5hbWUgMTo1OSBBTSBEVAorICAgICAqICAgICAgICAgICAgICAgICAxOjAwIEFNIFNURCAgPSBkaXNwbGF5IG5hbWUgMTowMCBBTSBTVAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MDg0OTMzKCkgeworICAgICAgICBUaW1lWm9uZSB0eiA9IFRpbWVab25lLmdldFRpbWVab25lKCJQU1QiKTsKKworICAgICAgICBsb25nIG9mZnNldDEgPSB0ei5nZXRPZmZzZXQoMSwKKyAgICAgICAgICAgIDE5OTcsIENhbGVuZGFyLk9DVE9CRVIsIDI2LCBDYWxlbmRhci5TVU5EQVksICgyKjYwKjYwKjEwMDApKTsKKyAgICAgICAgbG9uZyBvZmZzZXQyID0gdHouZ2V0T2Zmc2V0KDEsCisgICAgICAgICAgICAxOTk3LCBDYWxlbmRhci5PQ1RPQkVSLCAyNiwgQ2FsZW5kYXIuU1VOREFZLCAoMio2MCo2MCoxMDAwKS0xKTsKKworICAgICAgICBsb25nIG9mZnNldDMgPSB0ei5nZXRPZmZzZXQoMSwKKyAgICAgICAgICAgIDE5OTcsIENhbGVuZGFyLk9DVE9CRVIsIDI2LCBDYWxlbmRhci5TVU5EQVksICgxKjYwKjYwKjEwMDApKTsKKyAgICAgICAgbG9uZyBvZmZzZXQ0ID0gdHouZ2V0T2Zmc2V0KDEsCisgICAgICAgICAgICAxOTk3LCBDYWxlbmRhci5PQ1RPQkVSLCAyNiwgQ2FsZW5kYXIuU1VOREFZLCAoMSo2MCo2MCoxMDAwKS0xKTsKKworICAgICAgICAvKgorICAgICAgICAgKiAgVGhlIGZvbGxvd2luZyB3YXMgYWRkZWQganVzdCBmb3IgY29uc2lzdGVuY3kuICBJdCBzaG93cyB0aGF0IGdvaW5nICp0byogRGF5bGlnaHQKKyAgICAgICAgICogIFNhdmluZ3MgVGltZSAoUERUKSBkb2VzIHdvcmsgYXQgMmFtLgorICAgICAgICAgKi8KKworICAgICAgICBsb25nIG9mZnNldDUgPSB0ei5nZXRPZmZzZXQoMSwKKyAgICAgICAgICAgIDE5OTcsIENhbGVuZGFyLkFQUklMLCA2LCBDYWxlbmRhci5TVU5EQVksICgyKjYwKjYwKjEwMDApKTsKKyAgICAgICAgbG9uZyBvZmZzZXQ2ID0gdHouZ2V0T2Zmc2V0KDEsCisgICAgICAgICAgICAxOTk3LCBDYWxlbmRhci5BUFJJTCwgNiwgQ2FsZW5kYXIuU1VOREFZLCAoMio2MCo2MCoxMDAwKS0xKTsKKworICAgICAgICBsb25nIG9mZnNldDcgPSB0ei5nZXRPZmZzZXQoMSwKKyAgICAgICAgICAgIDE5OTcsIENhbGVuZGFyLkFQUklMLCA2LCBDYWxlbmRhci5TVU5EQVksICgxKjYwKjYwKjEwMDApKTsKKyAgICAgICAgbG9uZyBvZmZzZXQ4ID0gdHouZ2V0T2Zmc2V0KDEsCisgICAgICAgICAgICAxOTk3LCBDYWxlbmRhci5BUFJJTCwgNiwgQ2FsZW5kYXIuU1VOREFZLCAoMSo2MCo2MCoxMDAwKS0xKTsKKworICAgICAgICBsb25nIFNUb2Zmc2V0ID0gLTggKiA2MCo2MCoxMDAwTDsKKyAgICAgICAgbG9uZyBEVG9mZnNldCA9IC03ICogNjAqNjAqMTAwMEw7CisgICAgICAgIGlmIChvZmZzZXQxICE9IFNUb2Zmc2V0IHx8IG9mZnNldDIgIT0gU1RvZmZzZXQgfHwKKyAgICAgICAgICAgIG9mZnNldDMgIT0gU1RvZmZzZXQgfHwgb2Zmc2V0NCAhPSBEVG9mZnNldCB8fAorICAgICAgICAgICAgb2Zmc2V0NSAhPSBEVG9mZnNldCB8fCBvZmZzZXQ2ICE9IFNUb2Zmc2V0IHx8CisgICAgICAgICAgICBvZmZzZXQ3ICE9IFNUb2Zmc2V0IHx8IG9mZnNldDggIT0gU1RvZmZzZXQpCisgICAgICAgICAgICBlcnJsbigiRmFpbDogVGltZVpvbmUgbWlzYmVoYXZpbmciKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0NDA5Njk1MigpIHsKKyAgICAgICAgU3RyaW5nW10gWk9ORVMgPSB7ICJHTVQiLCAiTUVUIiwgIklTVCIgfTsKKyAgICAgICAgYm9vbGVhbiBwYXNzID0gdHJ1ZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxaT05FUy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIFRpbWVab25lIHpvbmUgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZShaT05FU1tpXSk7CisgICAgICAgICAgICAgICAgaWYgKCF6b25lLmdldElEKCkuZXF1YWxzKFpPTkVTW2ldKSkKKyAgICAgICAgICAgICAgICAgICAgZXJybG4oIkZhaWw6IFRlc3QgYnJva2VuOyB6b25lcyBub3QgaW5zdGFudGlhdGluZyIpOworCisgICAgICAgICAgICAgICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGJhb3M7CisgICAgICAgICAgICAgICAgT2JqZWN0T3V0cHV0U3RyZWFtIG9zdHJlYW0gPQorICAgICAgICAgICAgICAgICAgICBuZXcgT2JqZWN0T3V0cHV0U3RyZWFtKGJhb3MgPSBuZXcgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCkpOworICAgICAgICAgICAgICAgIG9zdHJlYW0ud3JpdGVPYmplY3Qoem9uZSk7CisgICAgICAgICAgICAgICAgb3N0cmVhbS5jbG9zZSgpOworICAgICAgICAgICAgICAgIGJhb3MuY2xvc2UoKTsKKyAgICAgICAgICAgICAgICBPYmplY3RJbnB1dFN0cmVhbSBpc3RyZWFtID0KKyAgICAgICAgICAgICAgICAgICAgbmV3IE9iamVjdElucHV0U3RyZWFtKG5ldyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ5dGVBcnJheUlucHV0U3RyZWFtKGJhb3MudG9CeXRlQXJyYXkoKSkpOworICAgICAgICAgICAgICAgIFRpbWVab25lIGZyYW5rZW5ab25lID0gKFRpbWVab25lKSBpc3RyZWFtLnJlYWRPYmplY3QoKTsKKyAgICAgICAgICAgICAgICAvL2xvZ2xuKCJab25lOiAgICAgICAgIiArIHpvbmUpOworICAgICAgICAgICAgICAgIC8vbG9nbG4oIkZyYW5rZW5ab25lOiAiICsgZnJhbmtlblpvbmUpOworICAgICAgICAgICAgICAgIGlmICghem9uZS5lcXVhbHMoZnJhbmtlblpvbmUpKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ2xuKCJUaW1lWm9uZSAiICsgem9uZS5nZXRJRCgpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiBub3QgZXF1YWwgdG8gc2VyaWFsaXplZC9kZXNlcmlhbGl6ZWQgb25lIik7CisgICAgICAgICAgICAgICAgICAgIHBhc3MgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIXBhc3MpIGVycmxuKCJGYWlsOiBUaW1lWm9uZSBzZXJpYWxpemF0aW9uL2VxdWFsaXR5IGJ1ZyIpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIGUpOworICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbDogIiArIGUpOworICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTA5MzE0KCkgeworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciB0ZXN0Q2FsID0gKEdyZWdvcmlhbkNhbGVuZGFyKUNhbGVuZGFyLmdldEluc3RhbmNlKCk7IAorICAgICAgICBUaW1lWm9uZSBQU1QgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiUFNUIik7CisgICAgICAgIE9iamVjdFtdIHRlc3REYXRhID0geworICAgICAgICAgICAgUFNULCBuZXcgRGF0ZSg5OCxDYWxlbmRhci5BUFJJTCw0LDIyLDApLCBuZXcgRGF0ZSg5OCwgQ2FsZW5kYXIuQVBSSUwsIDUsNiwwKSwKKyAgICAgICAgICAgIFBTVCwgbmV3IERhdGUoOTgsQ2FsZW5kYXIuT0NUT0JFUiwyNCwyMiwwKSwgbmV3IERhdGUoOTgsQ2FsZW5kYXIuT0NUT0JFUiwyNSw2LDApLAorICAgICAgICB9OworICAgICAgICBib29sZWFuIHBhc3M9dHJ1ZTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPHRlc3REYXRhLmxlbmd0aDsgaSs9MykgeworICAgICAgICAgICAgdGVzdENhbC5zZXRUaW1lWm9uZSgoVGltZVpvbmUpIHRlc3REYXRhW2ldKTsKKyAgICAgICAgICAgIGxvbmcgdCA9ICgoRGF0ZSl0ZXN0RGF0YVtpKzFdKS5nZXRUaW1lKCk7CisgICAgICAgICAgICBEYXRlIGVuZCA9IChEYXRlKSB0ZXN0RGF0YVtpKzJdOworICAgICAgICAgICAgd2hpbGUgKHQgPCBlbmQuZ2V0VGltZSgpKSB7IAorICAgICAgICAgICAgICAgIHRlc3RDYWwuc2V0VGltZShuZXcgRGF0ZSh0KSk7CisgICAgICAgICAgICAgICAgaWYgKCFjaGVja0NhbGVuZGFyMzE0KHRlc3RDYWwsIChUaW1lWm9uZSkgdGVzdERhdGFbaV0pKQorICAgICAgICAgICAgICAgICAgICBwYXNzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgdCArPSA2MCo2MCoxMDAwTDsKKyAgICAgICAgICAgIH0gCisgICAgICAgIH0KKyAgICAgICAgaWYgKCFwYXNzKSBlcnJsbigiRmFpbDogVFogQVBJIGluY29uc2lzdGVudCIpOworICAgIH0gCisKKyAgICBib29sZWFuIGNoZWNrQ2FsZW5kYXIzMTQoR3JlZ29yaWFuQ2FsZW5kYXIgdGVzdENhbCwgVGltZVpvbmUgdGVzdFRaKSB7IAorICAgICAgICAvLyBHcmVnb3JpYW5DYWxlbmRhciB0ZXN0Q2FsID0gKEdyZWdvcmlhbkNhbGVuZGFyKWFDYWwuY2xvbmUoKTsgCisKKyAgICAgICAgZmluYWwgaW50IE9ORV9EQVkgPSAyNCo2MCo2MCoxMDAwOworCisgICAgICAgIGludCB0ek9mZnNldCwgdHpSYXdPZmZzZXQ7IAorICAgICAgICBGbG9hdCB0ek9mZnNldEZsb2F0LHR6UmF3T2Zmc2V0RmxvYXQ7IAorICAgICAgICAvLyBIZXJlIGlzIHdoZXJlIHRoZSB1c2VyIG1hZGUgYW4gZXJyb3IuICBUaGV5IHdlcmUgcGFzc2luZyBpbiB0aGUgdmFsdWUgb2YKKyAgICAgICAgLy8gdGhlIE1JTExTRUNPTkQgZmllbGQ7IHlvdSBuZWVkIHRvIHBhc3MgaW4gdGhlIG1pbGxpcyBpbiB0aGUgZGF5IGluIFNUQU5EQVJECisgICAgICAgIC8vIHRpbWUuCisgICAgICAgIGludCBtaWxsaXMgPSB0ZXN0Q2FsLmdldChDYWxlbmRhci5NSUxMSVNFQ09ORCkgKworICAgICAgICAgICAgMTAwMCAqICh0ZXN0Q2FsLmdldChDYWxlbmRhci5TRUNPTkQpICsKKyAgICAgICAgICAgICAgICAgICAgNjAgKiAodGVzdENhbC5nZXQoQ2FsZW5kYXIuTUlOVVRFKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgIDYwICogKHRlc3RDYWwuZ2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZKSkpKSAtCisgICAgICAgICAgICB0ZXN0Q2FsLmdldChDYWxlbmRhci5EU1RfT0ZGU0VUKTsKKworICAgICAgICAvKiBGaXggdXAgbWlsbGlzIHRvIGJlIGluIHJhbmdlLiAgQVNTVU1FIFRIQVQgV0UgQVJFIE5PVCBBVCBUSEUKKyAgICAgICAgICogQkVHSU5OSU5HIE9SIEVORCBPRiBBIE1PTlRILiAgV2UgbXVzdCBhZGQgdGhpcyBjb2RlIGJlY2F1c2UKKyAgICAgICAgICogZ2V0T2Zmc2V0KCkgaGFzIGJlZW4gY2hhbmdlZCB0byBiZSBtb3JlIHN0cmljdCBhYm91dCB0aGUgcGFyYW1ldGVycworICAgICAgICAgKiBpdCByZWNlaXZlcyAtLSBpdCB0dXJucyBvdXQgdGhhdCB0aGlzIHRlc3Qgd2FzIHBhc3NpbmcgaW4gaWxsZWdhbAorICAgICAgICAgKiB2YWx1ZXMuICovCisgICAgICAgIGludCBkYXRlID0gdGVzdENhbC5nZXQoQ2FsZW5kYXIuREFURSk7CisgICAgICAgIGludCBkb3cgID0gdGVzdENhbC5nZXQoQ2FsZW5kYXIuREFZX09GX1dFRUspOworICAgICAgICB3aGlsZSAobWlsbGlzIDwgMCkgeworICAgICAgICAgICAgbWlsbGlzICs9IE9ORV9EQVk7CisgICAgICAgICAgICAtLWRhdGU7CisgICAgICAgICAgICBkb3cgPSBDYWxlbmRhci5TVU5EQVkgKyAoKGRvdyAtIENhbGVuZGFyLlNVTkRBWSArIDYpICUgNyk7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKG1pbGxpcyA+PSBPTkVfREFZKSB7CisgICAgICAgICAgICBtaWxsaXMgLT0gT05FX0RBWTsKKyAgICAgICAgICAgICsrZGF0ZTsKKyAgICAgICAgICAgIGRvdyA9IENhbGVuZGFyLlNVTkRBWSArICgoZG93IC0gQ2FsZW5kYXIuU1VOREFZICsgMSkgJSA3KTsKKyAgICAgICAgfQorCisgICAgICAgIHR6T2Zmc2V0ID0gdGVzdFRaLmdldE9mZnNldCh0ZXN0Q2FsLmdldChDYWxlbmRhci5FUkEpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RDYWwuZ2V0KENhbGVuZGFyLllFQVIpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RDYWwuZ2V0KENhbGVuZGFyLk1PTlRIKSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWxsaXMpOyAKKyAgICAgICAgdHpSYXdPZmZzZXQgPSB0ZXN0VFouZ2V0UmF3T2Zmc2V0KCk7IAorICAgICAgICB0ek9mZnNldEZsb2F0ID0gbmV3IEZsb2F0KChmbG9hdCl0ek9mZnNldC8oZmxvYXQpMzYwMDAwMCk7IAorICAgICAgICB0elJhd09mZnNldEZsb2F0ID0gbmV3IEZsb2F0KChmbG9hdCl0elJhd09mZnNldC8oZmxvYXQpMzYwMDAwMCk7IAorCisgICAgICAgIERhdGUgdGVzdERhdGUgPSB0ZXN0Q2FsLmdldFRpbWUoKTsgCisKKyAgICAgICAgYm9vbGVhbiBpbkRheWxpZ2h0VGltZSA9IHRlc3RUWi5pbkRheWxpZ2h0VGltZSh0ZXN0RGF0ZSk7IAorICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IHNkZiA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJNTS9kZC95eXl5IEhIOm1tIik7IAorICAgICAgICBzZGYuc2V0Q2FsZW5kYXIodGVzdENhbCk7IAorICAgICAgICBTdHJpbmcgaW5EYXlsaWdodFRpbWVTdHJpbmc7IAorCisgICAgICAgIGJvb2xlYW4gcGFzc2VkOyAKKworICAgICAgICBpZiAoaW5EYXlsaWdodFRpbWUpIAorICAgICAgICB7IAorICAgICAgICAgICAgaW5EYXlsaWdodFRpbWVTdHJpbmcgPSAiIERTVCAiOyAKKyAgICAgICAgICAgIHBhc3NlZCA9ICh0ek9mZnNldCA9PSAodHpSYXdPZmZzZXQgKyAzNjAwMDAwKSk7CisgICAgICAgIH0gCisgICAgICAgIGVsc2UgCisgICAgICAgIHsgCisgICAgICAgICAgICBpbkRheWxpZ2h0VGltZVN0cmluZyA9ICIgICAgICI7IAorICAgICAgICAgICAgcGFzc2VkID0gKHR6T2Zmc2V0ID09IHR6UmF3T2Zmc2V0KTsKKyAgICAgICAgfSAKKworICAgICAgICBTdHJpbmcgb3V0cHV0ID0gdGVzdFRaLmdldElEKCkgKyAiICIgKyBzZGYuZm9ybWF0KHRlc3REYXRlKSArCisgICAgICAgICAgICAiIE9mZnNldCgiICsgdHpPZmZzZXRGbG9hdCArICIpIiArCisgICAgICAgICAgICAiIFJhd09mZnNldCgiICsgdHpSYXdPZmZzZXRGbG9hdCArICIpIiArIAorICAgICAgICAgICAgIiAiICsgbWlsbGlzLyhmbG9hdCkzNjAwMDAwICsgIiAiICsKKyAgICAgICAgICAgIGluRGF5bGlnaHRUaW1lU3RyaW5nOyAKKworICAgICAgICBpZiAocGFzc2VkKSAKKyAgICAgICAgICAgIG91dHB1dCArPSAiICAgICAiOyAKKyAgICAgICAgZWxzZSAKKyAgICAgICAgICAgIG91dHB1dCArPSAiRVJST1IiOyAKKworICAgICAgICBpZiAocGFzc2VkKSBsb2dsbihvdXRwdXQpOyBlbHNlIGVycmxuKG91dHB1dCk7CisgICAgICAgIHJldHVybiBwYXNzZWQ7CisgICAgfSAKKworICAgIC8qKgorICAgICAqIENBTk5PVCBSRVBST0RVREUKKyAgICAgKgorICAgICAqIFlldCBhbm90aGVyIF9hbGxlZ2VkXyBidWcgaW4gVGltZVpvbmUuZ2V0T2Zmc2V0KCksIGEgbWV0aG9kIHRoYXQgbmV2ZXIKKyAgICAgKiBzaG91bGQgaGF2ZSBiZWVuIG1hZGUgcHVibGljLiAgSXQncyBzaW1wbHkgdG9vIGhhcmQgdG8gdXNlIGNvcnJlY3RseS4KKyAgICAgKgorICAgICAqIFRoZSBvcmlnaW5hbCB0ZXN0IGNvZGUgZmFpbGVkIHRvIGRvIHRoZSBmb2xsb3dpbmc6CisgICAgICogKDEpIENhbGwgQ2FsZW5kYXIuc2V0VGltZSgpIGJlZm9yZSBnZXR0aW5nIHRoZSBmaWVsZHMhCisgICAgICogKDIpIFVzZSB0aGUgcmlnaHQgbWlsbGlzIChhcyB1c3VhbCkgZm9yIGdldE9mZnNldCgpOyB0aGV5IHdlcmUgcGFzc2luZworICAgICAqICAgICBpbiB0aGUgTUlMTElTIGZpZWxkLCBpbnN0ZWFkIG9mIHRoZSBTVEFOREFSRCBNSUxMSVMgSU4gREFZLgorICAgICAqIFdoZW4geW91IGZpeCB0aGVzZSB0d28gcHJvYmxlbXMsIHRoZSB0ZXN0IHBhc3NlcywgYXMgZXhwZWN0ZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxMjY2NzgoKSB7CisJLy8gTm90ZTogdGhpcyB0ZXN0IGRlcGVuZHMgb24gdGhlIFBTVCB0aW1lIHpvbmUuCisJVGltZVpvbmUgaW5pdGlhbFpvbmUgPSBUaW1lWm9uZS5nZXREZWZhdWx0KCk7CisgICAgICAgIENhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisgICAgICAgIFRpbWVab25lIHR6ID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoIlBTVCIpOworCVRpbWVab25lLnNldERlZmF1bHQodHopOworICAgICAgICBjYWwuc2V0VGltZVpvbmUodHopOworCisgICAgICAgIERhdGUgZHQgPSBuZXcgRGF0ZSgxOTk4LTE5MDAsIENhbGVuZGFyLkFQUklMLCA1LCAxMCwgMCk7CisJLy8gdGhlIGR0IHZhbHVlIGlzIGxvY2FsIHRpbWUgaW4gUFNULgorICAgICAgICBpZiAoIXR6LmluRGF5bGlnaHRUaW1lKGR0KSkKKyAgICAgICAgICAgIGVycmxuKCJXZSdyZSBub3QgaW4gRGF5bGlnaHQgU2F2aW5ncyBUaW1lIGFuZCB3ZSBzaG91bGQgYmUuXG4iKTsKKworICAgICAgICBjYWwuc2V0VGltZShkdCk7CisgICAgICAgIGludCBlcmEgPSBjYWwuZ2V0KENhbGVuZGFyLkVSQSk7CisgICAgICAgIGludCB5ZWFyID0gY2FsLmdldChDYWxlbmRhci5ZRUFSKTsKKyAgICAgICAgaW50IG1vbnRoID0gY2FsLmdldChDYWxlbmRhci5NT05USCk7CisgICAgICAgIGludCBkYXkgPSBjYWwuZ2V0KENhbGVuZGFyLkRBVEUpOworICAgICAgICBpbnQgZGF5T2ZXZWVrID0gY2FsLmdldChDYWxlbmRhci5EQVlfT0ZfV0VFSyk7CisgICAgICAgIGludCBtaWxsaXMgPSBjYWwuZ2V0KENhbGVuZGFyLk1JTExJU0VDT05EKSArCisgICAgICAgICAgICAoY2FsLmdldChDYWxlbmRhci5TRUNPTkQpICsKKyAgICAgICAgICAgICAoY2FsLmdldChDYWxlbmRhci5NSU5VVEUpICsKKyAgICAgICAgICAgICAgKGNhbC5nZXQoQ2FsZW5kYXIuSE9VUikgKiA2MCkgKiA2MCkgKiAxMDAwKSAtCisgICAgICAgICAgICBjYWwuZ2V0KENhbGVuZGFyLkRTVF9PRkZTRVQpOworCisgICAgICAgIGxvbmcgb2Zmc2V0ID0gdHouZ2V0T2Zmc2V0KGVyYSwgeWVhciwgbW9udGgsIGRheSwgZGF5T2ZXZWVrLCBtaWxsaXMpOworICAgICAgICBsb25nIHJhd19vZmZzZXQgPSB0ei5nZXRSYXdPZmZzZXQoKTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSByYXdfb2Zmc2V0KQorICAgICAgICAgICAgZXJybG4oIk9mZnNldHMgc2hvdWxkIG5vdCBtYXRjaCB3aGVuIGluIERTVCIpOworCisJLy8gcmVzdG9yZSB0aGUgaW5pdGlhbCB0aW1lIHpvbmUgc28gdGhhdCB0aGlzIHRlc3QgY2FzZQorCS8vIGRvZXNuJ3QgYWZmZWN0IHRoZSBvdGhlcnMuCisJVGltZVpvbmUuc2V0RGVmYXVsdChpbml0aWFsWm9uZSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFRpbWVab25lLmdldEF2YWlsYWJsZUlEcyhpbnQpIHRocm93cyBleGNlcHRpb24gZm9yIGNlcnRhaW4gdmFsdWVzLAorICAgICAqIGR1ZSB0byBhIGZhdWx0eSBjb25zdGFudCBpbiBUaW1lWm9uZS5qYXZhLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTUxNDA2KCkgeworICAgICAgICBpbnQgbWF4ID0gMDsKKyAgICAgICAgZm9yIChpbnQgaD0tMjg7IGg8PTMwOyArK2gpIHsKKyAgICAgICAgICAgIC8vIGggaXMgaW4gaGFsZi1ob3VycyBmcm9tIEdNVDsgcmF3b2Zmc2V0IGlzIGluIG1pbGxpcworICAgICAgICAgICAgaW50IHJhd29mZnNldCA9IGggKiAxODAwMDAwOworICAgICAgICAgICAgaW50IGhoID0gKGg8MCkgPyAtaCA6IGg7CisgICAgICAgICAgICBTdHJpbmcgaG5hbWUgPSAoKGg8MCkgPyAiR01ULSIgOiAiR01UKyIpICsKKyAgICAgICAgICAgICAgICAoKGhoLzIgPCAxMCkgPyAiMCIgOiAiIikgKworICAgICAgICAgICAgICAgIChoaC8yKSArICc6JyArCisgICAgICAgICAgICAgICAgKChoaCUyPT0wKSA/ICIwMCIgOiAiMzAiKTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgU3RyaW5nW10gaWRzID0gVGltZVpvbmUuZ2V0QXZhaWxhYmxlSURzKHJhd29mZnNldCk7CisgICAgICAgICAgICAgICAgaWYgKGlkcy5sZW5ndGggPiBtYXgpIG1heCA9IGlkcy5sZW5ndGg7CisgICAgICAgICAgICAgICAgbG9nbG4oaG5hbWUgKyAnICcgKyBpZHMubGVuZ3RoICsKKyAgICAgICAgICAgICAgICAgICAgICAoKGlkcy5sZW5ndGggPiAwKSA/ICgiIGUuZy4gIiArIGlkc1swXSkgOiAiIikpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBlcnJsbihobmFtZSArICcgJyArICJGYWlsOiAiICsgZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbG9nbG4oIk1heGltdW0gem9uZXMgcGVyIG9mZnNldCA9ICIgKyBtYXgpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTUxNDI5KCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgVGltZVpvbmUgdHogPSBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiR01UIik7CisgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IHR6LmdldERpc3BsYXlOYW1lKHRydWUsIEludGVnZXIuTUFYX1ZBTFVFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICAgICAgICAgIGVycmxuKCJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gbm90IHRocm93biBieSBUaW1lWm9uZS5nZXREaXNwbGF5TmFtZSgpIik7CisgICAgICAgIH0gY2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHt9CisgICAgfQorCisgICAgLyoqCisgICAgICogU2ltcGxlVGltZVpvbmUgYWNjZXB0cyBpbGxlZ2FsIERTVCBzYXZpbmdzIHZhbHVlcy4gIFRoZXNlIHZhbHVlcworICAgICAqIG11c3QgYmUgbm9uLXplcm8uICBUaGVyZSBpcyBubyB1cHBlciBsaW1pdCBhdCB0aGlzIHRpbWUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxNTQ1MjUoKSB7CisgICAgICAgIGZpbmFsIGludCBHT09EID0gMSwgQkFEID0gMDsKKyAgICAgICAgaW50W10gREFUQSA9IHsKKyAgICAgICAgICAgIDEsIEdPT0QsCisgICAgICAgICAgICAwLCBCQUQsCisgICAgICAgICAgICAtMSwgQkFELAorICAgICAgICAgICAgNjAqNjAqMTAwMCwgR09PRCwKKyAgICAgICAgICAgIEludGVnZXIuTUlOX1ZBTFVFLCBCQUQsCisgICAgICAgICAgICAvLyBJbnRlZ2VyLk1BWF9WQUxVRSwgPywgLy8gbm8gdXBwZXIgbGltaXQgb24gRFNUIHNhdmluZ3MgYXQgdGhpcyB0aW1lCisgICAgICAgIH07CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgaSs9MikgeworICAgICAgICAgICAgaW50IHNhdmluZ3MgPSBEQVRBW2ldOworICAgICAgICAgICAgYm9vbGVhbiB2YWxpZCA9IERBVEFbaSsxXSA9PSBHT09EOworICAgICAgICAgICAgU3RyaW5nIG1ldGhvZCA9IG51bGw7CisgICAgICAgICAgICBmb3IgKGludCBqPTA7IGo8MjsgKytqKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChqKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZCA9ICJjb25zdHJ1Y3RvciI7CisgICAgICAgICAgICAgICAgICAgICAgICBTaW1wbGVUaW1lWm9uZSB6ID0gbmV3IFNpbXBsZVRpbWVab25lKDAsICJpZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuSkFOVUFSWSwgMSwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5NQVJDSCwgMSwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZpbmdzKTsgLy8gPC0gd2hhdCB3ZSdyZSBpbnRlcmVzdGVkIGluCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kID0gInNldERTVFNhdmluZ3MoKSI7CisgICAgICAgICAgICAgICAgICAgICAgICB6ID0gbmV3IFNpbXBsZVRpbWVab25lKDAsICJHTVQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHouc2V0RFNUU2F2aW5ncyhzYXZpbmdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWxpZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbG9nbG4oIlBhc3M6IERTVCBzYXZpbmdzIG9mICIgKyBzYXZpbmdzICsgIiBhY2NlcHRlZCBieSAiICsgbWV0aG9kKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiBEU1Qgc2F2aW5ncyBvZiAiICsgc2F2aW5ncyArICIgYWNjZXB0ZWQgYnkgIiArIG1ldGhvZCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAodmFsaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiBEU1Qgc2F2aW5ncyBvZiAiICsgc2F2aW5ncyArICIgdG8gIiArIG1ldGhvZCArICIgZ2F2ZSAiICsgZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2dsbigiUGFzczogRFNUIHNhdmluZ3Mgb2YgIiArIHNhdmluZ3MgKyAiIHRvICIgKyBtZXRob2QgKyAiIGdhdmUgIiArIGUpOworICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogU2ltcGxlVGltZVpvbmUuaGFzU2FtZVJ1bGVzKCkgZG9lc24ndCB3b3JrIGZvciB6b25lcyB3aXRoIG5vIERTVAorICAgICAqIGFuZCBkaWZmZXJlbnQgRFNUIHBhcmFtZXRlcnMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxNTQ1MzcoKSB7CisgICAgICAgIC8vIHR6MSBhbmQgdHoyIGhhdmUgbm8gRFNUIGFuZCBkaWZmZXJlbnQgcnVsZSBwYXJhbWV0ZXJzCisgICAgICAgIFNpbXBsZVRpbWVab25lIHR6MSA9IG5ldyBTaW1wbGVUaW1lWm9uZSgwLCAiMSIsIDAsIDAsIDAsIDAsIDIsIDAsIDAsIDApOworICAgICAgICBTaW1wbGVUaW1lWm9uZSB0ejIgPSBuZXcgU2ltcGxlVGltZVpvbmUoMCwgIjIiLCAxLCAwLCAwLCAwLCAzLCAwLCAwLCAwKTsKKyAgICAgICAgLy8gdHphIGFuZCB0ekEgaGF2ZSB0aGUgc2FtZSBydWxlIHBhcmFtcworICAgICAgICBTaW1wbGVUaW1lWm9uZSB0emEgPSBuZXcgU2ltcGxlVGltZVpvbmUoMCwgImEiLCAwLCAxLCAwLCAwLCAzLCAyLCAwLCAwKTsKKyAgICAgICAgU2ltcGxlVGltZVpvbmUgdHpBID0gbmV3IFNpbXBsZVRpbWVab25lKDAsICJBIiwgMCwgMSwgMCwgMCwgMywgMiwgMCwgMCk7CisgICAgICAgIC8vIHR6YiBkaWZmZXJzIGZyb20gdHphCisgICAgICAgIFNpbXBsZVRpbWVab25lIHR6YiA9IG5ldyBTaW1wbGVUaW1lWm9uZSgwLCAiYiIsIDAsIDEsIDAsIDAsIDMsIDEsIDAsIDApOworICAgICAgICBpZiAodHoxLnVzZURheWxpZ2h0VGltZSgpIHx8IHR6Mi51c2VEYXlsaWdodFRpbWUoKSB8fAorICAgICAgICAgICAgIXR6YS51c2VEYXlsaWdodFRpbWUoKSB8fCAhdHpBLnVzZURheWxpZ2h0VGltZSgpIHx8CisgICAgICAgICAgICAhdHpiLnVzZURheWxpZ2h0VGltZSgpKSB7CisgICAgICAgICAgICBlcnJsbigiVGVzdCBpcyBicm9rZW4gLS0gcmV3cml0ZSBpdCIpOworICAgICAgICB9CisgICAgICAgIGlmICghdHphLmhhc1NhbWVSdWxlcyh0ekEpIHx8IHR6YS5oYXNTYW1lUnVsZXModHpiKSkgeworICAgICAgICAgICAgZXJybG4oIkZhaWw6IGhhc1NhbWVSdWxlcygpIGJyb2tlbiBmb3Igem9uZXMgd2l0aCBydWxlcyIpOworICAgICAgICB9CisgICAgICAgIGlmICghdHoxLmhhc1NhbWVSdWxlcyh0ejIpKSB7CisgICAgICAgICAgICBlcnJsbigiRmFpbDogaGFzU2FtZVJ1bGVzKCkgcmV0dXJucyBmYWxzZSBmb3Igem9uZXMgd2l0aG91dCBydWxlcyIpOworICAgICAgICAgICAgZXJybG4oInpvbmUgMSA9ICIgKyB0ejEpOworICAgICAgICAgICAgZXJybG4oInpvbmUgMiA9ICIgKyB0ejIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogU2ltcGxlVGltZVpvbmUgY29uc3RydWN0b3JzLCBzZXRTdGFydFJ1bGUoKSwgYW5kIHNldEVuZFJ1bGUoKSBkb24ndAorICAgICAqIGNoZWNrIGZvciBvdXQtb2YtcmFuZ2UgYXJndW1lbnRzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3Q0MTU0NTQyKCkgeworICAgICAgICBmaW5hbCBpbnQgR09PRCA9IDE7CisgICAgICAgIGZpbmFsIGludCBCQUQgID0gMDsKKworICAgICAgICBmaW5hbCBpbnQgR09PRF9NT05USCAgICAgICA9IENhbGVuZGFyLkpBTlVBUlk7CisgICAgICAgIGZpbmFsIGludCBHT09EX0RBWSAgICAgICAgID0gMTsKKyAgICAgICAgZmluYWwgaW50IEdPT0RfREFZX09GX1dFRUsgPSBDYWxlbmRhci5TVU5EQVk7CisgICAgICAgIGZpbmFsIGludCBHT09EX1RJTUUgICAgICAgID0gMDsKKworICAgICAgICBpbnRbXSBEQVRBID0geworICAgICAgICAgICAgR09PRCwgSW50ZWdlci5NSU5fVkFMVUUsICAgIDAsICBJbnRlZ2VyLk1BWF9WQUxVRSwgICBJbnRlZ2VyLk1JTl9WQUxVRSwKKyAgICAgICAgICAgIEdPT0QsIENhbGVuZGFyLkpBTlVBUlksICAgIC01LCAgQ2FsZW5kYXIuU1VOREFZLCAgICAgMCwKKyAgICAgICAgICAgIEdPT0QsIENhbGVuZGFyLkRFQ0VNQkVSLCAgICA1LCAgQ2FsZW5kYXIuU0FUVVJEQVksICAgMjQqNjAqNjAqMTAwMC0xLAorICAgICAgICAgICAgQkFELCAgQ2FsZW5kYXIuREVDRU1CRVIsICAgIDUsICBDYWxlbmRhci5TQVRVUkRBWSwgICAyNCo2MCo2MCoxMDAwLAorICAgICAgICAgICAgQkFELCAgQ2FsZW5kYXIuREVDRU1CRVIsICAgIDUsICBDYWxlbmRhci5TQVRVUkRBWSwgIC0xLAorICAgICAgICAgICAgQkFELCAgQ2FsZW5kYXIuSkFOVUFSWSwgICAgLTYsICBDYWxlbmRhci5TVU5EQVksICAgICAwLAorICAgICAgICAgICAgQkFELCAgQ2FsZW5kYXIuREVDRU1CRVIsICAgIDYsICBDYWxlbmRhci5TQVRVUkRBWSwgICAyNCo2MCo2MCoxMDAwLAorICAgICAgICAgICAgR09PRCwgQ2FsZW5kYXIuREVDRU1CRVIsICAgIDEsICAwLCAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgR09PRCwgQ2FsZW5kYXIuREVDRU1CRVIsICAgMzEsICAwLCAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgQkFELCAgQ2FsZW5kYXIuQVBSSUwsICAgICAgMzEsICAwLCAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgQkFELCAgQ2FsZW5kYXIuREVDRU1CRVIsICAgMzIsICAwLCAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgQkFELCAgQ2FsZW5kYXIuSkFOVUFSWS0xLCAgIDEsICBDYWxlbmRhci5TVU5EQVksICAgICAwLAorICAgICAgICAgICAgQkFELCAgQ2FsZW5kYXIuREVDRU1CRVIrMSwgIDEsICBDYWxlbmRhci5TVU5EQVksICAgICAwLAorICAgICAgICAgICAgR09PRCwgQ2FsZW5kYXIuREVDRU1CRVIsICAgMzEsIC1DYWxlbmRhci5TVU5EQVksICAgICAwLAorICAgICAgICAgICAgR09PRCwgQ2FsZW5kYXIuREVDRU1CRVIsICAgMzEsIC1DYWxlbmRhci5TQVRVUkRBWSwgICAwLAorICAgICAgICAgICAgQkFELCAgQ2FsZW5kYXIuREVDRU1CRVIsICAgMzIsIC1DYWxlbmRhci5TQVRVUkRBWSwgICAwLAorICAgICAgICAgICAgQkFELCAgQ2FsZW5kYXIuREVDRU1CRVIsICAtMzIsIC1DYWxlbmRhci5TQVRVUkRBWSwgICAwLAorICAgICAgICAgICAgQkFELCAgQ2FsZW5kYXIuREVDRU1CRVIsICAgMzEsIC1DYWxlbmRhci5TQVRVUkRBWS0xLCAwLAorICAgICAgICB9OworICAgICAgICBTaW1wbGVUaW1lWm9uZSB6b25lID0gbmV3IFNpbXBsZVRpbWVab25lKDAsICJaIik7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgaSs9NSkgeworICAgICAgICAgICAgYm9vbGVhbiBzaG91bGRCZUdvb2QgPSAoREFUQVtpXSA9PSBHT09EKTsKKyAgICAgICAgICAgIGludCBtb250aCAgICAgPSBEQVRBW2krMV07CisgICAgICAgICAgICBpbnQgZGF5ICAgICAgID0gREFUQVtpKzJdOworICAgICAgICAgICAgaW50IGRheU9mV2VlayA9IERBVEFbaSszXTsKKyAgICAgICAgICAgIGludCB0aW1lICAgICAgPSBEQVRBW2krNF07CisKKyAgICAgICAgICAgIEV4Y2VwdGlvbiBleCA9IG51bGw7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHpvbmUuc2V0U3RhcnRSdWxlKG1vbnRoLCBkYXksIGRheU9mV2VlaywgdGltZSk7CisgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGV4ID0gZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoZXggPT0gbnVsbCkgIT0gc2hvdWxkQmVHb29kKSB7CisgICAgICAgICAgICAgICAgZXJybG4oInNldFN0YXJ0UnVsZShtb250aD0iICsgbW9udGggKyAiLCBkYXk9IiArIGRheSArCisgICAgICAgICAgICAgICAgICAgICAgIiwgZGF5T2ZXZWVrPSIgKyBkYXlPZldlZWsgKyAiLCB0aW1lPSIgKyB0aW1lICsKKyAgICAgICAgICAgICAgICAgICAgICAoc2hvdWxkQmVHb29kID8gKCIpIHNob3VsZCB3b3JrIGJ1dCB0aHJvd3MgIiArIGV4KQorICAgICAgICAgICAgICAgICAgICAgICA6ICIpIHNob3VsZCBmYWlsIGJ1dCBkb2Vzbid0IikpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBleCA9IG51bGw7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHpvbmUuc2V0RW5kUnVsZShtb250aCwgZGF5LCBkYXlPZldlZWssIHRpbWUpOworICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBleCA9IGU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKGV4ID09IG51bGwpICE9IHNob3VsZEJlR29vZCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJzZXRFbmRSdWxlKG1vbnRoPSIgKyBtb250aCArICIsIGRheT0iICsgZGF5ICsKKyAgICAgICAgICAgICAgICAgICAgICAiLCBkYXlPZldlZWs9IiArIGRheU9mV2VlayArICIsIHRpbWU9IiArIHRpbWUgKworICAgICAgICAgICAgICAgICAgICAgIChzaG91bGRCZUdvb2QgPyAoIikgc2hvdWxkIHdvcmsgYnV0IHRocm93cyAiICsgZXgpCisgICAgICAgICAgICAgICAgICAgICAgIDogIikgc2hvdWxkIGZhaWwgYnV0IGRvZXNuJ3QiKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGV4ID0gbnVsbDsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgU2ltcGxlVGltZVpvbmUgdGVtcCA9IG5ldyBTaW1wbGVUaW1lWm9uZSgwLCAiWiIsCisgICAgICAgICAgICAgICAgICAgICAgICBtb250aCwgZGF5LCBkYXlPZldlZWssIHRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBHT09EX01PTlRILCBHT09EX0RBWSwgR09PRF9EQVlfT0ZfV0VFSywgR09PRF9USU1FKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgZXggPSBlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChleCA9PSBudWxsKSAhPSBzaG91bGRCZUdvb2QpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiU2ltcGxlVGltZVpvbmUobW9udGg9IiArIG1vbnRoICsgIiwgZGF5PSIgKyBkYXkgKworICAgICAgICAgICAgICAgICAgICAgICIsIGRheU9mV2Vlaz0iICsgZGF5T2ZXZWVrICsgIiwgdGltZT0iICsgdGltZSArCisgICAgICAgICAgICAgICAgICAgICAgKHNob3VsZEJlR29vZCA/ICgiLCA8ZW5kPikgc2hvdWxkIHdvcmsgYnV0IHRocm93cyAiICsgZXgpCisgICAgICAgICAgICAgICAgICAgICAgIDogIiwgPGVuZD4pIHNob3VsZCBmYWlsIGJ1dCBkb2Vzbid0IikpOworICAgICAgICAgICAgfSAgICAgICAgICAgIAorCisgICAgICAgICAgICBleCA9IG51bGw7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIFNpbXBsZVRpbWVab25lIHRlbXAgPSBuZXcgU2ltcGxlVGltZVpvbmUoMCwgIloiLAorICAgICAgICAgICAgICAgICAgICAgICAgR09PRF9NT05USCwgR09PRF9EQVksIEdPT0RfREFZX09GX1dFRUssIEdPT0RfVElNRSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoLCBkYXksIGRheU9mV2VlaywgdGltZSk7CisgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGV4ID0gZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoZXggPT0gbnVsbCkgIT0gc2hvdWxkQmVHb29kKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIlNpbXBsZVRpbWVab25lKDxzdGFydD4sIG1vbnRoPSIgKyBtb250aCArICIsIGRheT0iICsgZGF5ICsKKyAgICAgICAgICAgICAgICAgICAgICAiLCBkYXlPZldlZWs9IiArIGRheU9mV2VlayArICIsIHRpbWU9IiArIHRpbWUgKworICAgICAgICAgICAgICAgICAgICAgIChzaG91bGRCZUdvb2QgPyAoIikgc2hvdWxkIHdvcmsgYnV0IHRocm93cyAiICsgZXgpCisgICAgICAgICAgICAgICAgICAgICAgIDogIikgc2hvdWxkIGZhaWwgYnV0IGRvZXNuJ3QiKSk7CisgICAgICAgICAgICB9ICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTaW1wbGVUaW1lWm9uZS5nZXRPZmZzZXQgYWNjZXB0cyBpbGxlZ2FsIGFyZ3VtZW50cy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE1NDY1MCgpIHsKKyAgICAgICAgZmluYWwgaW50IEdPT0Q9MSwgQkFEPTA7CisgICAgICAgIGZpbmFsIGludCBHT09EX0VSQT1HcmVnb3JpYW5DYWxlbmRhci5BRCwgR09PRF9ZRUFSPTE5OTgsIEdPT0RfTU9OVEg9Q2FsZW5kYXIuQVVHVVNUOworICAgICAgICBmaW5hbCBpbnQgR09PRF9EQVk9MiwgR09PRF9ET1c9Q2FsZW5kYXIuU1VOREFZLCBHT09EX1RJTUU9MTYqMzYwMDAwMDsKKyAgICAgICAgaW50W10gREFUQSA9IHsKKyAgICAgICAgICAgIEdPT0QsIEdPT0RfRVJBLCBHT09EX1lFQVIsIEdPT0RfTU9OVEgsIEdPT0RfREFZLCBHT09EX0RPVywgR09PRF9USU1FLAorCisgICAgICAgICAgICBHT09ELCBHcmVnb3JpYW5DYWxlbmRhci5CQywgR09PRF9ZRUFSLCBHT09EX01PTlRILCBHT09EX0RBWSwgR09PRF9ET1csIEdPT0RfVElNRSwKKyAgICAgICAgICAgIEdPT0QsIEdyZWdvcmlhbkNhbGVuZGFyLkFELCBHT09EX1lFQVIsIEdPT0RfTU9OVEgsIEdPT0RfREFZLCBHT09EX0RPVywgR09PRF9USU1FLAorICAgICAgICAgICAgQkFELCAgR3JlZ29yaWFuQ2FsZW5kYXIuQkMtMSwgR09PRF9ZRUFSLCBHT09EX01PTlRILCBHT09EX0RBWSwgR09PRF9ET1csIEdPT0RfVElNRSwKKyAgICAgICAgICAgIEJBRCwgIEdyZWdvcmlhbkNhbGVuZGFyLkFEKzEsIEdPT0RfWUVBUiwgR09PRF9NT05USCwgR09PRF9EQVksIEdPT0RfRE9XLCBHT09EX1RJTUUsCisKKyAgICAgICAgICAgIEdPT0QsIEdPT0RfRVJBLCBHT09EX1lFQVIsIENhbGVuZGFyLkpBTlVBUlksIEdPT0RfREFZLCBHT09EX0RPVywgR09PRF9USU1FLAorICAgICAgICAgICAgR09PRCwgR09PRF9FUkEsIEdPT0RfWUVBUiwgQ2FsZW5kYXIuREVDRU1CRVIsIEdPT0RfREFZLCBHT09EX0RPVywgR09PRF9USU1FLAorICAgICAgICAgICAgQkFELCAgR09PRF9FUkEsIEdPT0RfWUVBUiwgQ2FsZW5kYXIuSkFOVUFSWS0xLCBHT09EX0RBWSwgR09PRF9ET1csIEdPT0RfVElNRSwKKyAgICAgICAgICAgIEJBRCwgIEdPT0RfRVJBLCBHT09EX1lFQVIsIENhbGVuZGFyLkRFQ0VNQkVSKzEsIEdPT0RfREFZLCBHT09EX0RPVywgR09PRF9USU1FLAorICAgICAgICAgICAgCisgICAgICAgICAgICBHT09ELCBHT09EX0VSQSwgR09PRF9ZRUFSLCBDYWxlbmRhci5KQU5VQVJZLCAxLCBHT09EX0RPVywgR09PRF9USU1FLAorICAgICAgICAgICAgR09PRCwgR09PRF9FUkEsIEdPT0RfWUVBUiwgQ2FsZW5kYXIuSkFOVUFSWSwgMzEsIEdPT0RfRE9XLCBHT09EX1RJTUUsCisgICAgICAgICAgICBCQUQsICBHT09EX0VSQSwgR09PRF9ZRUFSLCBDYWxlbmRhci5KQU5VQVJZLCAwLCBHT09EX0RPVywgR09PRF9USU1FLAorICAgICAgICAgICAgQkFELCAgR09PRF9FUkEsIEdPT0RfWUVBUiwgQ2FsZW5kYXIuSkFOVUFSWSwgMzIsIEdPT0RfRE9XLCBHT09EX1RJTUUsCisKKyAgICAgICAgICAgIEdPT0QsIEdPT0RfRVJBLCBHT09EX1lFQVIsIEdPT0RfTU9OVEgsIEdPT0RfREFZLCBDYWxlbmRhci5TVU5EQVksIEdPT0RfVElNRSwKKyAgICAgICAgICAgIEdPT0QsIEdPT0RfRVJBLCBHT09EX1lFQVIsIEdPT0RfTU9OVEgsIEdPT0RfREFZLCBDYWxlbmRhci5TQVRVUkRBWSwgR09PRF9USU1FLAorICAgICAgICAgICAgQkFELCAgR09PRF9FUkEsIEdPT0RfWUVBUiwgR09PRF9NT05USCwgR09PRF9EQVksIENhbGVuZGFyLlNVTkRBWS0xLCBHT09EX1RJTUUsCisgICAgICAgICAgICBCQUQsICBHT09EX0VSQSwgR09PRF9ZRUFSLCBHT09EX01PTlRILCBHT09EX0RBWSwgQ2FsZW5kYXIuU0FUVVJEQVkrMSwgR09PRF9USU1FLAorCisgICAgICAgICAgICBHT09ELCBHT09EX0VSQSwgR09PRF9ZRUFSLCBHT09EX01PTlRILCBHT09EX0RBWSwgR09PRF9ET1csIDAsCisgICAgICAgICAgICBHT09ELCBHT09EX0VSQSwgR09PRF9ZRUFSLCBHT09EX01PTlRILCBHT09EX0RBWSwgR09PRF9ET1csIDI0KjM2MDAwMDAtMSwKKyAgICAgICAgICAgIEJBRCwgIEdPT0RfRVJBLCBHT09EX1lFQVIsIEdPT0RfTU9OVEgsIEdPT0RfREFZLCBHT09EX0RPVywgLTEsCisgICAgICAgICAgICBCQUQsICBHT09EX0VSQSwgR09PRF9ZRUFSLCBHT09EX01PTlRILCBHT09EX0RBWSwgR09PRF9ET1csIDI0KjM2MDAwMDAsCisgICAgICAgIH07CisKKyAgICAgICAgVGltZVpvbmUgdHogPSBUaW1lWm9uZS5nZXREZWZhdWx0KCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgaSs9NykgeworICAgICAgICAgICAgYm9vbGVhbiBnb29kID0gREFUQVtpXSA9PSBHT09EOworICAgICAgICAgICAgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUgPSBudWxsOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gdHouZ2V0T2Zmc2V0KERBVEFbaSsxXSwgREFUQVtpKzJdLCBEQVRBW2krM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEQVRBW2krNF0sIERBVEFbaSs1XSwgREFUQVtpKzZdKTsgCisgICAgICAgICAgIH0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIGUgPSBleDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChnb29kICE9IChlID09IG51bGwpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZhaWw6IGdldE9mZnNldCgiICsKKyAgICAgICAgICAgICAgICAgICAgICBEQVRBW2krMV0gKyAiLCAiICsgREFUQVtpKzJdICsgIiwgIiArIERBVEFbaSszXSArICIsICIgKworICAgICAgICAgICAgICAgICAgICAgIERBVEFbaSs0XSArICIsICIgKyBEQVRBW2krNV0gKyAiLCAiICsgREFUQVtpKzZdICsKKyAgICAgICAgICAgICAgICAgICAgICAoZ29vZCA/ICgiKSB0aHJldyAiICsgZSkgOiAiKSBhY2NlcHRzIGludmFsaWQgYXJncyIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRpbWVab25lIGNvbnN0cnVjdG9ycyBhbGxvdyBudWxsIElEcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE1OTkyMigpIHsKKyAgICAgICAgVGltZVpvbmUgeiA9IG51bGw7CisKKyAgICAgICAgLy8gVGltZVpvbmUgQVBJLiAgT25seSBoYXNTYW1lUnVsZXMoKSBhbmQgc2V0RGVmYXVsdCgpIHNob3VsZAorICAgICAgICAvLyBhbGxvdyBudWxsLgorICAgICAgICB0cnkgeworICAgICAgICAgICAgeiA9IFRpbWVab25lLmdldFRpbWVab25lKG51bGwpOworICAgICAgICAgICAgZXJybG4oIkZBSUw6IE51bGwgYWxsb3dlZCBpbiBnZXRUaW1lWm9uZSIpOworICAgICAgICB9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBlKSB7fQorICAgICAgICB6ID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoIkdNVCIpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgei5nZXREaXNwbGF5TmFtZShmYWxzZSwgVGltZVpvbmUuU0hPUlQsIG51bGwpOworICAgICAgICAgICAgZXJybG4oIkZBSUw6IE51bGwgYWxsb3dlZCBpbiBnZXREaXNwbGF5TmFtZSgzKSIpOworICAgICAgICB9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBlKSB7fQorICAgICAgICB0cnkgeworICAgICAgICAgICAgei5nZXREaXNwbGF5TmFtZShudWxsKTsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBOdWxsIGFsbG93ZWQgaW4gZ2V0RGlzcGxheU5hbWUoMSkiKTsKKyAgICAgICAgfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gZSkge30KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmICh6Lmhhc1NhbWVSdWxlcyhudWxsKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBoYXNTYW1lUnVsZXMgcmV0dXJuZWQgdHJ1ZSIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogTnVsbCBOT1QgYWxsb3dlZCBpbiBoYXNTYW1lUnVsZXMiKTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgei5pbkRheWxpZ2h0VGltZShudWxsKTsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBOdWxsIGFsbG93ZWQgaW4gaW5EYXlsaWdodFRpbWUiKTsKKyAgICAgICAgfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gZSkge30KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHouc2V0SUQobnVsbCk7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogTnVsbCBhbGxvd2VkIGluIHNldElEIik7CisgICAgICAgIH0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIGUpIHt9CisKKyAgICAgICAgVGltZVpvbmUgc2F2ZSA9IFRpbWVab25lLmdldERlZmF1bHQoKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFRpbWVab25lLnNldERlZmF1bHQobnVsbCk7CisgICAgICAgIH0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBOdWxsIE5PVCBhbGxvd2VkIGluIHNldERlZmF1bHQiKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIFRpbWVab25lLnNldERlZmF1bHQoc2F2ZSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBTaW1wbGVUaW1lWm9uZSBBUEkKKyAgICAgICAgU2ltcGxlVGltZVpvbmUgcyA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzID0gbmV3IFNpbXBsZVRpbWVab25lKDAsIG51bGwpOworICAgICAgICAgICAgZXJybG4oIkZBSUw6IE51bGwgYWxsb3dlZCBpbiBTaW1wbGVUaW1lWm9uZSgyKSIpOworICAgICAgICB9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBlKSB7fQorICAgICAgICB0cnkgeworICAgICAgICAgICAgcyA9IG5ldyBTaW1wbGVUaW1lWm9uZSgwLCBudWxsLCAwLCAxLCAwLCAwLCAwLCAxLCAwLCAwKTsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBOdWxsIGFsbG93ZWQgaW4gU2ltcGxlVGltZVpvbmUoMTApIik7CisgICAgICAgIH0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIGUpIHt9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBzID0gbmV3IFNpbXBsZVRpbWVab25lKDAsIG51bGwsIDAsIDEsIDAsIDAsIDAsIDEsIDAsIDAsIDEwMDApOworICAgICAgICAgICAgZXJybG4oIkZBSUw6IE51bGwgYWxsb3dlZCBpbiBTaW1wbGVUaW1lWm9uZSgxMSkiKTsKKyAgICAgICAgfSBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gZSkge30KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaW1lWm9uZSBicm9rZW4gYXQgbWlkbmlnaHQuICBUaGUgVGltZVpvbmUgY29kZSBmYWlscyB0byBoYW5kbGUKKyAgICAgKiB0cmFuc2l0aW9ucyBhdCBtaWRuaWdodCBjb3JyZWN0bHkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxNjI1OTMoKSB7CisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgZm10ID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoInoiLCBMb2NhbGUuVVMpOworICAgICAgICBmaW5hbCBpbnQgT05FX0hPVVIgPSA2MCo2MCoxMDAwOworCVRpbWVab25lIGluaXRpYWxab25lID0gVGltZVpvbmUuZ2V0RGVmYXVsdCgpOworICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IHNkZiA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJNTU0gZGQgeXl5eSBISDptbSB6Iik7IAorCisgICAgICAgIFNpbXBsZVRpbWVab25lIGFzdW5jaW9uID0gbmV3IFNpbXBsZVRpbWVab25lKC00Kk9ORV9IT1VSLCAiQW1lcmljYS9Bc3VuY2lvbiIgLypQWSVzVCovLAorICAgICAgICAgICAgQ2FsZW5kYXIuT0NUT0JFUiwgMSwgMCAvKkRPTSovLCAwKk9ORV9IT1VSLAorICAgICAgICAgICAgQ2FsZW5kYXIuTUFSQ0gsIDEsIDAgLypET00qLywgMCpPTkVfSE9VUiwgMSpPTkVfSE9VUik7CisKKyAgICAgICAgLyogWm9uZQorICAgICAgICAgKiBTdGFydGluZyB0aW1lCisgICAgICAgICAqIFRyYW5zaXRpb24gZXhwZWN0ZWQgYmV0d2VlbiBzdGFydCsxSCBhbmQgc3RhcnQrMkgKKyAgICAgICAgICovCisgICAgICAgIE9iamVjdFtdIERBVEEgPSB7CisgICAgICAgICAgICBuZXcgU2ltcGxlVGltZVpvbmUoMipPTkVfSE9VUiwgIkFzaWEvRGFtYXNjdXMiIC8qRUUlc1QqLywKKyAgICAgICAgICAgICAgICBDYWxlbmRhci5BUFJJTCwgMSwgMCAvKkRPTSovLCAwKk9ORV9IT1VSLAorICAgICAgICAgICAgICAgIENhbGVuZGFyLk9DVE9CRVIsIDEsIDAgLypET00qLywgMCpPTkVfSE9VUiwgMSpPTkVfSE9VUiksCisgICAgICAgICAgICBuZXcgaW50W10gezk4LCBDYWxlbmRhci5TRVBURU1CRVIsIDMwLCAyMiwgMH0sCisgICAgICAgICAgICBCb29sZWFuLlRSVUUsCisKKyAgICAgICAgICAgIGFzdW5jaW9uLAorICAgICAgICAgICAgbmV3IGludFtdIHsxMDAsIENhbGVuZGFyLkZFQlJVQVJZLCAyOCwgMjIsIDB9LAorICAgICAgICAgICAgQm9vbGVhbi5GQUxTRSwKKworICAgICAgICAgICAgYXN1bmNpb24sCisgICAgICAgICAgICBuZXcgaW50W10gezEwMCwgQ2FsZW5kYXIuRkVCUlVBUlksIDI5LCAyMiwgMH0sCisgICAgICAgICAgICBCb29sZWFuLlRSVUUsCisgICAgICAgIH07CisgICAgICAgIAorICAgICAgICBTdHJpbmdbXSB6b25lID0gbmV3IFN0cmluZ1s0XTsKKworICAgICAgICBmb3IgKGludCBqPTA7IGo8REFUQS5sZW5ndGg7IGorPTMpIHsKKyAgICAgICAgICAgIFRpbWVab25lIHR6ID0gKFRpbWVab25lKURBVEFbal07CisgICAgICAgICAgICBUaW1lWm9uZS5zZXREZWZhdWx0KHR6KTsKKyAgICAgICAgICAgIGZtdC5zZXRUaW1lWm9uZSh0eik7CisgICAgICAgICAgICBzZGYuc2V0VGltZVpvbmUodHopOworCisgICAgICAgICAgICAvLyBNdXN0IGNvbnN0cnVjdCB0aGUgRGF0ZSBvYmplY3QgQUZURVIgc2V0dGluZyB0aGUgZGVmYXVsdCB6b25lCisgICAgICAgICAgICBpbnRbXSBwID0gKGludFtdKURBVEFbaisxXTsKKyAgICAgICAgICAgIERhdGUgZCA9IG5ldyBEYXRlKHBbMF0sIHBbMV0sIHBbMl0sIHBbM10sIHBbNF0pOworICAgICAgICAgICAgYm9vbGVhbiB0cmFuc2l0aW9uRXhwZWN0ZWQgPSAoKEJvb2xlYW4pREFUQVtqKzJdKS5ib29sZWFuVmFsdWUoKTsKKworICAgICAgICAgICAgbG9nbG4odHouZ2V0SUQoKSArICI6Iik7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8NDsgKytpKSB7CisgICAgICAgICAgICAgICAgem9uZVtpXSA9IGZtdC5mb3JtYXQoZCk7CisgICAgICAgICAgICAgICAgbG9nbG4oIiIgKyBpICsgIjogIiArIHNkZi5mb3JtYXQoZCkgKyAiID0+ICIgKyB6b25lW2ldKTsKKyAgICAgICAgICAgICAgICBkID0gbmV3IERhdGUoZC5nZXRUaW1lKCkgKyBPTkVfSE9VUik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoem9uZVswXS5lcXVhbHMoem9uZVsxXSkgJiYKKyAgICAgICAgICAgICAgICAoem9uZVsxXS5lcXVhbHMoem9uZVsyXSkgIT0gdHJhbnNpdGlvbkV4cGVjdGVkKSAmJgorICAgICAgICAgICAgICAgIHpvbmVbMl0uZXF1YWxzKHpvbmVbM10pKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIk9rOiB0cmFuc2l0aW9uICIgKyB0cmFuc2l0aW9uRXhwZWN0ZWQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRmFpbDogYm91bmRhcnkgdHJhbnNpdGlvbiBpbmNvcnJlY3QiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisJLy8gcmVzdG9yZSB0aGUgaW5pdGlhbCB0aW1lIHpvbmUgc28gdGhhdCB0aGlzIHRlc3QgY2FzZQorCS8vIGRvZXNuJ3QgYWZmZWN0IHRoZSBvdGhlcnMuCisJVGltZVpvbmUuc2V0RGVmYXVsdChpbml0aWFsWm9uZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGltZVpvbmUgYnJva2VuIGluIGxhc3QgaG91ciBvZiB5ZWFyCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQxNzM2MDQoKSB7CisgICAgICAgIFNpbXBsZVRpbWVab25lIHBzdCA9IChTaW1wbGVUaW1lWm9uZSlUaW1lWm9uZS5nZXRUaW1lWm9uZSgiUFNUIik7CisgICAgICAgIGludCBvMjIgPSBwc3QuZ2V0T2Zmc2V0KDEsIDE5OTgsIDExLCAzMSwgQ2FsZW5kYXIuVEhVUlNEQVksIDIyKjYwKjYwKjEwMDApOworICAgICAgICBpbnQgbzIzID0gcHN0LmdldE9mZnNldCgxLCAxOTk4LCAxMSwgMzEsIENhbGVuZGFyLlRIVVJTREFZLCAyMyo2MCo2MCoxMDAwKTsKKyAgICAgICAgaW50IG8wMCA9IHBzdC5nZXRPZmZzZXQoMSwgMTk5OSwgMCwgMSwgQ2FsZW5kYXIuRlJJREFZLCAwKTsKKyAgICAgICAgaWYgKG8yMiAhPSBvMjMgfHwgbzIyICE9IG8wMCkgeworICAgICAgICAgICAgZXJybG4oIk9mZnNldHMgc2hvdWxkIGJlIHRoZSBzYW1lIChmb3IgUFNUKSwgYnV0IGdvdDogIiArCisgICAgICAgICAgICAgICAgICAiMTIvMzEgMjI6MDAgIiArIG8yMiArCisgICAgICAgICAgICAgICAgICAiLCAxMi8zMSAyMzowMCAiICsgbzIzICsKKyAgICAgICAgICAgICAgICAgICIsIDAxLzAxIDAwOjAwICIgKyBvMDApOworICAgICAgICB9CisKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisgICAgICAgIGNhbC5zZXRUaW1lWm9uZShwc3QpOworICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgY2FsLnNldCgxOTk4LCBDYWxlbmRhci5KQU5VQVJZLCAxKTsKKyAgICAgICAgaW50IGxhc3REU1QgPSBjYWwuZ2V0KENhbGVuZGFyLkRTVF9PRkZTRVQpOworICAgICAgICBpbnQgdHJhbnNpdGlvbnMgPSAwOworICAgICAgICBpbnQgZGVsdGEgPSA1OworICAgICAgICB3aGlsZSAoY2FsLmdldChDYWxlbmRhci5ZRUFSKSA8IDIwMDApIHsKKyAgICAgICAgICAgIGNhbC5hZGQoQ2FsZW5kYXIuTUlOVVRFLCBkZWx0YSk7CisgICAgICAgICAgICBpZiAoY2FsLmdldChDYWxlbmRhci5EU1RfT0ZGU0VUKSAhPSBsYXN0RFNUKSB7CisgICAgICAgICAgICAgICAgKyt0cmFuc2l0aW9uczsKKyAgICAgICAgICAgICAgICBDYWxlbmRhciB0ID0gKENhbGVuZGFyKWNhbC5jbG9uZSgpOworICAgICAgICAgICAgICAgIHQuYWRkKENhbGVuZGFyLk1JTlVURSwgLWRlbHRhKTsKKyAgICAgICAgICAgICAgICBsb2dsbih0LmdldFRpbWUoKSArICIgICIgKyB0LmdldChDYWxlbmRhci5EU1RfT0ZGU0VUKSk7CisgICAgICAgICAgICAgICAgbG9nbG4oY2FsLmdldFRpbWUoKSArICIgICIgKyAobGFzdERTVD1jYWwuZ2V0KENhbGVuZGFyLkRTVF9PRkZTRVQpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRyYW5zaXRpb25zICE9IDQpIHsKKyAgICAgICAgICAgIGVycmxuKCJTYXcgIiArIHRyYW5zaXRpb25zICsgIiB0cmFuc2l0aW9uczsgc2hvdWxkIGhhdmUgc2VlbiA0Iik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBnZXREaXNwbGF5TmFtZSBkb2Vzbid0IHdvcmsgd2l0aCB1bnVzdWFsIHNhdmluZ3Mvb2Zmc2V0cy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE3NjY4NigpIHsKKyAgICAgICAgLy8gQ29uc3RydWN0IGEgem9uZSB0aGF0IGRvZXMgbm90IG9ic2VydmUgRFNUIGJ1dAorICAgICAgICAvLyB0aGF0IGRvZXMgaGF2ZSBhIERTVCBzYXZpbmdzICh3aGljaCBzaG91bGQgYmUgaWdub3JlZCkuCisgICAgICAgIGludCBvZmZzZXQgPSA5MCAqIDYwMDAwOyAvLyAxOjMwCisgICAgICAgIFNpbXBsZVRpbWVab25lIHoxID0gbmV3IFNpbXBsZVRpbWVab25lKG9mZnNldCwgIl9zdGRfem9uZV8iKTsKKyAgICAgICAgejEuc2V0RFNUU2F2aW5ncyg0NSAqIDYwMDAwKTsgLy8gMDo0NQorCisgICAgICAgIC8vIENvbnN0cnVjdCBhIHpvbmUgdGhhdCBvYnNlcnZlcyBEU1QgZm9yIHRoZSBmaXJzdCA2IG1vbnRocy4KKyAgICAgICAgU2ltcGxlVGltZVpvbmUgejIgPSBuZXcgU2ltcGxlVGltZVpvbmUob2Zmc2V0LCAiX2RzdF96b25lXyIpOworICAgICAgICB6Mi5zZXREU1RTYXZpbmdzKDQ1ICogNjAwMDApOyAvLyAwOjQ1CisgICAgICAgIHoyLnNldFN0YXJ0UnVsZShDYWxlbmRhci5KQU5VQVJZLCAxLCAwKTsKKyAgICAgICAgejIuc2V0RW5kUnVsZShDYWxlbmRhci5KVUxZLCAxLCAwKTsKKworICAgICAgICAvLyBBbHNvIGNoZWNrIERhdGVGb3JtYXQKKyAgICAgICAgRGF0ZUZvcm1hdCBmbXQxID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoInoiKTsKKyAgICAgICAgZm10MS5zZXRUaW1lWm9uZSh6MSk7IC8vIEZvcm1hdCB1c2VzIHN0YW5kYXJkIHpvbmUKKyAgICAgICAgRGF0ZUZvcm1hdCBmbXQyID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoInoiKTsKKyAgICAgICAgZm10Mi5zZXRUaW1lWm9uZSh6Mik7IC8vIEZvcm1hdCB1c2VzIERTVCB6b25lCisgICAgICAgIERhdGUgZHN0ID0gbmV3IERhdGUoMTk3MC0xOTAwLCBDYWxlbmRhci5GRUJSVUFSWSwgMSk7IC8vIFRpbWUgaW4gRFNUCisgICAgICAgIERhdGUgc3RkID0gbmV3IERhdGUoMTk3MC0xOTAwLCBDYWxlbmRhci5BVUdVU1QsIDEpOyAvLyBUaW1lIGluIHN0YW5kYXJkCisKKyAgICAgICAgLy8gRGVzY3JpcHRpb24sIFJlc3VsdCwgRXhwZWN0ZWQgUmVzdWx0CisgICAgICAgIFN0cmluZ1tdIERBVEEgPSB7CisgICAgICAgICAgICAiZ2V0RGlzcGxheU5hbWUoZmFsc2UsIFNIT1JUKS9zdGQgem9uZSIsCisgICAgICAgICAgICB6MS5nZXREaXNwbGF5TmFtZShmYWxzZSwgVGltZVpvbmUuU0hPUlQpLCAiR01UKzAxOjMwIiwKKyAgICAgICAgICAgICJnZXREaXNwbGF5TmFtZShmYWxzZSwgTE9ORykvc3RkIHpvbmUiLAorICAgICAgICAgICAgejEuZ2V0RGlzcGxheU5hbWUoZmFsc2UsIFRpbWVab25lLkxPTkcgKSwgIkdNVCswMTozMCIsCisgICAgICAgICAgICAiZ2V0RGlzcGxheU5hbWUodHJ1ZSwgU0hPUlQpL3N0ZCB6b25lIiwKKyAgICAgICAgICAgIHoxLmdldERpc3BsYXlOYW1lKHRydWUsIFRpbWVab25lLlNIT1JUKSwgIkdNVCswMTozMCIsCisgICAgICAgICAgICAiZ2V0RGlzcGxheU5hbWUodHJ1ZSwgTE9ORykvc3RkIHpvbmUiLAorICAgICAgICAgICAgejEuZ2V0RGlzcGxheU5hbWUodHJ1ZSwgVGltZVpvbmUuTE9ORyApLCAiR01UKzAxOjMwIiwKKyAgICAgICAgICAgICJnZXREaXNwbGF5TmFtZShmYWxzZSwgU0hPUlQpL2RzdCB6b25lIiwKKyAgICAgICAgICAgIHoyLmdldERpc3BsYXlOYW1lKGZhbHNlLCBUaW1lWm9uZS5TSE9SVCksICJHTVQrMDE6MzAiLAorICAgICAgICAgICAgImdldERpc3BsYXlOYW1lKGZhbHNlLCBMT05HKS9kc3Qgem9uZSIsCisgICAgICAgICAgICB6Mi5nZXREaXNwbGF5TmFtZShmYWxzZSwgVGltZVpvbmUuTE9ORyApLCAiR01UKzAxOjMwIiwKKyAgICAgICAgICAgICJnZXREaXNwbGF5TmFtZSh0cnVlLCBTSE9SVCkvZHN0IHpvbmUiLAorICAgICAgICAgICAgejIuZ2V0RGlzcGxheU5hbWUodHJ1ZSwgVGltZVpvbmUuU0hPUlQpLCAiR01UKzAyOjE1IiwKKyAgICAgICAgICAgICJnZXREaXNwbGF5TmFtZSh0cnVlLCBMT05HKS9kc3Qgem9uZSIsCisgICAgICAgICAgICB6Mi5nZXREaXNwbGF5TmFtZSh0cnVlLCBUaW1lWm9uZS5MT05HICksICJHTVQrMDI6MTUiLAorICAgICAgICAgICAgIkRhdGVGb3JtYXQuZm9ybWF0KHN0ZCkvc3RkIHpvbmUiLCBmbXQxLmZvcm1hdChzdGQpLCAiR01UKzAxOjMwIiwKKyAgICAgICAgICAgICJEYXRlRm9ybWF0LmZvcm1hdChkc3QpL3N0ZCB6b25lIiwgZm10MS5mb3JtYXQoZHN0KSwgIkdNVCswMTozMCIsCisgICAgICAgICAgICAiRGF0ZUZvcm1hdC5mb3JtYXQoc3RkKS9kc3Qgem9uZSIsIGZtdDIuZm9ybWF0KHN0ZCksICJHTVQrMDE6MzAiLAorICAgICAgICAgICAgIkRhdGVGb3JtYXQuZm9ybWF0KGRzdCkvZHN0IHpvbmUiLCBmbXQyLmZvcm1hdChkc3QpLCAiR01UKzAyOjE1IiwKKyAgICAgICAgfTsKKworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7IGkrPTMpIHsKKyAgICAgICAgICAgIGlmICghREFUQVtpKzFdLmVxdWFscyhEQVRBW2krMl0pKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBEQVRBW2ldICsgIiAtPiAiICsgREFUQVtpKzFdICsgIiwgZXhwICIgKyBEQVRBW2krMl0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogU2ltcGxlVGltZVpvbmUgYWxsb3dzIGludmFsaWQgRE9NIHZhbHVlcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0NDE4NDIyOSgpIHsKKyAgICAgICAgU2ltcGxlVGltZVpvbmUgem9uZSA9IG51bGw7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB6b25lID0gbmV3IFNpbXBsZVRpbWVab25lKDAsICJBIiwgMCwgLTEsIDAsIDAsIDAsIDAsIDAsIDApOworICAgICAgICAgICAgZXJybG4oIkZhaWxlZC4gTm8gZXhjZXB0aW9uIGhhcyBiZWVuIHRocm93biBmb3IgRE9NIC0xIHN0YXJ0RGF5Iik7CisgICAgICAgIH0gY2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGxvZ2xuKCIoYSkgIiArIGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgem9uZSA9IG5ldyBTaW1wbGVUaW1lWm9uZSgwLCAiQSIsIDAsIDAsIDAsIDAsIDAsIC0xLCAwLCAwKTsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsZWQuIE5vIGV4Y2VwdGlvbiBoYXMgYmVlbiB0aHJvd24gZm9yIERPTSAtMSBlbmREYXkiKTsKKyAgICAgICAgfSBjYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgbG9nbG4oIihiKSAiICsgZS5nZXRNZXNzYWdlKCkpOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB6b25lID0gbmV3IFNpbXBsZVRpbWVab25lKDAsICJBIiwgMCwgLTEsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMDApOworICAgICAgICAgICAgZXJybG4oIkZhaWxlZC4gTm8gZXhjZXB0aW9uIGhhcyBiZWVuIHRocm93biBmb3IgRE9NIC0xIHN0YXJ0RGF5ICtzYXZpbmdzIik7CisgICAgICAgIH0gY2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGxvZ2xuKCIoYykgIiArIGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgem9uZSA9IG5ldyBTaW1wbGVUaW1lWm9uZSgwLCAiQSIsIDAsIDAsIDAsIDAsIDAsIC0xLCAwLCAwLCAxMDAwKTsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsZWQuIE5vIGV4Y2VwdGlvbiBoYXMgYmVlbiB0aHJvd24gZm9yIERPTSAtMSBlbmREYXkgK3NhdmluZ3MiKTsKKyAgICAgICAgfSBjYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgbG9nbG4oIihkKSAiICsgZS5nZXRNZXNzYWdlKCkpOworICAgICAgICB9CisgICAgICAgIC8vIE1ha2UgYSB2YWxpZCBjb25zdHJ1Y3RvciBjYWxsIGZvciBzdWJzZXF1ZW50IHRlc3RzLgorICAgICAgICB6b25lID0gbmV3IFNpbXBsZVRpbWVab25lKDAsICJBIiwgMCwgMSwgMCwgMCwgMCwgMSwgMCwgMCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICB6b25lLnNldFN0YXJ0UnVsZSgwLCAtMSwgMCwgMCk7CisgICAgICAgICAgICBlcnJsbigiRmFpbGVkLiBObyBleGNlcHRpb24gaGFzIGJlZW4gdGhyb3duIGZvciBET00gLTEgc2V0U3RhcnRSdWxlICtzYXZpbmdzIik7CisgICAgICAgIH0gY2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGxvZ2xuKCIoZSkgIiArIGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgem9uZS5zZXRTdGFydFJ1bGUoMCwgLTEsIDApOworICAgICAgICAgICAgZXJybG4oIkZhaWxlZC4gTm8gZXhjZXB0aW9uIGhhcyBiZWVuIHRocm93biBmb3IgRE9NIC0xIHNldFN0YXJ0UnVsZSIpOworICAgICAgICB9IGNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBsb2dsbigiKGYpICIgKyBlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHpvbmUuc2V0RW5kUnVsZSgwLCAtMSwgMCwgMCk7CisgICAgICAgICAgICBlcnJsbigiRmFpbGVkLiBObyBleGNlcHRpb24gaGFzIGJlZW4gdGhyb3duIGZvciBET00gLTEgc2V0RW5kUnVsZSArc2F2aW5ncyIpOworICAgICAgICB9IGNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBsb2dsbigiKGcpICIgKyBlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgIH0KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHpvbmUuc2V0RW5kUnVsZSgwLCAtMSwgMCk7CisgICAgICAgICAgICBlcnJsbigiRmFpbGVkLiBObyBleGNlcHRpb24gaGFzIGJlZW4gdGhyb3duIGZvciBET00gLTEgc2V0RW5kUnVsZSIpOworICAgICAgICB9IGNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBsb2dsbigiKGgpICIgKyBlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTaW1wbGVUaW1lWm9uZS5nZXRPZmZzZXQoKSB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHdoZW4gdG8gZ2V0CisgICAgICogb2YgMi8yOS8xOTk2IChsZWFwIGRheSkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdDQyMDg5NjAgKCkgeworCVNpbXBsZVRpbWVab25lIHR6ID0gKFNpbXBsZVRpbWVab25lKVRpbWVab25lLmdldFRpbWVab25lKCJQU1QiKTsKKwl0cnkgeworCSAgICBpbnQgb2Zmc2V0ID0gdHouZ2V0T2Zmc2V0KEdyZWdvcmlhbkNhbGVuZGFyLkFELCAxOTk2LCBDYWxlbmRhci5GRUJSVUFSWSwgMjksIAorCQkJCSAgICAgIENhbGVuZGFyLlRIVVJTREFZLCAwKTsKKwl9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworCSAgICBlcnJsbigiRkFJTEVEOiB0byBnZXQgVGltZVpvbmUuZ2V0T2Zmc2V0KDIvMjkvOTYpIik7CisJfQorCXRyeSB7CisJICAgIGludCBvZmZzZXQgPSB0ei5nZXRPZmZzZXQoR3JlZ29yaWFuQ2FsZW5kYXIuQUQsIDE5OTcsIENhbGVuZGFyLkZFQlJVQVJZLCAyOSwgCisJCQkJICAgICAgQ2FsZW5kYXIuVEhVUlNEQVksIDApOworCSAgICBlcnJsbigiRkFJTEVEOiBUaW1lWm9uZS5nZXRPZmZzZXQoMi8yOS85NykgZXhwZWN0ZWQgdG8gdGhyb3cgRXhjZXB0aW9uLiIpOworCX0gY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7CisJICAgIGxvZ2xuKCJnb3QgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIik7CisJfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgdG8gc2VlIGlmIERhdGVGb3JtYXQgdW5kZXJzdGFuZHMgem9uZSBlcXVpdmFsZW5jeSBncm91cHMuICBJdAorICAgICAqIG1pZ2h0IHNlZW0gdGhhdCB0aGlzIHNob3VsZCBiZSBhIERhdGVGb3JtYXQgdGVzdCwgYnV0IGl0J3MgcmVhbGx5IGEKKyAgICAgKiBUaW1lWm9uZSB0ZXN0IC0tIHRoZSBjaGFuZ2VzIHRvIERhdGVGb3JtYXQgYXJlIG1pbm9yLgorICAgICAqCisgICAgICogV2UgdXNlIHR3byBrbm93biwgc3RhYmxlIHpvbmVzIHRoYXQgc2hvdWxkbid0IGNoYW5nZSBtdWNoIG92ZXIgdGltZQorICAgICAqIC0tIEFtZXJpY2EvVmFuY291dmVyIGFuZCBBbWVyaWNhL0xvc19BbmdlbGVzLiAgSG93ZXZlciwgdGhleSBNQVkKKyAgICAgKiBjaGFuZ2UgYXQgc29tZSBwb2ludCAtLSBpZiB0aGF0IGhhcHBlbnMsIHJlcGxhY2UgdGhlbSB3aXRoIGFueSB0d28KKyAgICAgKiB6b25lcyBpbiBhbiBlcXVpdmFsZW5jeSBncm91cCB3aGVyZSBvbmUgem9uZSBoYXMgbG9jYWxpemVkIG5hbWUKKyAgICAgKiBkYXRhLCBhbmQgdGhlIG90aGVyIGRvZXNuJ3QsIGluIHNvbWUgbG9jYWxlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RKNDQ5KCkgeworICAgICAgICBTdHJpbmcgc3RyOworCisgICAgICAgIC8vIE1vZGlmeSB0aGUgZm9sbG93aW5nIHRocmVlIGFzIG5lY2Vzc2FyeS4gIFRoZSB0d28gSURzIG11c3QKKyAgICAgICAgLy8gc3BlY2lmeSB0d28gem9uZXMgaW4gdGhlIHNhbWUgZXF1aXZhbGVuY3kgZ3JvdXAuICBPbmUgbXVzdCBoYXZlCisgICAgICAgIC8vIGxvY2FsZSBkYXRhIGluICdsb2MnOyB0aGUgb3RoZXIgbXVzdCBub3QuCisgICAgICAgIFN0cmluZyBpZFdpdGhMb2NhbGVEYXRhID0gIkFtZXJpY2EvTG9zX0FuZ2VsZXMiOworICAgICAgICBTdHJpbmcgaWRXaXRob3V0TG9jYWxlRGF0YSA9ICJBbWVyaWNhL1ZhbmNvdXZlciI7CisgICAgICAgIExvY2FsZSBsb2MgPSBuZXcgTG9jYWxlKCJlbiIsICIiLCAiIik7CisKKyAgICAgICAgVGltZVpvbmUgem9uZVdpdGggPSBUaW1lWm9uZS5nZXRUaW1lWm9uZShpZFdpdGhMb2NhbGVEYXRhKTsKKyAgICAgICAgVGltZVpvbmUgem9uZVdpdGhvdXQgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZShpZFdpdGhvdXRMb2NhbGVEYXRhKTsKKyAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGdvdCB2YWxpZCB6b25lcworICAgICAgICBpZiAoISh6b25lV2l0aC5nZXRJRCgpLmVxdWFscyhpZFdpdGhMb2NhbGVEYXRhKSAmJgorICAgICAgICAgICAgICB6b25lV2l0aG91dC5nZXRJRCgpLmVxdWFscyhpZFdpdGhvdXRMb2NhbGVEYXRhKSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiBVbmFibGUgdG8gY3JlYXRlIHpvbmVzIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBjYWxXaXRoID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKHpvbmVXaXRoKTsKKyAgICAgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbFdpdGhvdXQgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoem9uZVdpdGhvdXQpOworICAgICAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBmbXQgPQorICAgICAgICAgICAgICAgIG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJNTU0gZCB5eXl5IGhoOm1tIGEgenp6IiwgbG9jKTsKKyAgICAgICAgICAgIERhdGUgZGF0ZSA9IG5ldyBEYXRlKDBMKTsKKyAgICAgICAgICAgIGZtdC5zZXRDYWxlbmRhcihjYWxXaXRoKTsKKyAgICAgICAgICAgIFN0cmluZyBzdHJXaXRoID0gZm10LmZvcm1hdChkYXRlKTsKKyAgICAgICAgICAgIGZtdC5zZXRDYWxlbmRhcihjYWxXaXRob3V0KTsKKyAgICAgICAgICAgIFN0cmluZyBzdHJXaXRob3V0ID0gZm10LmZvcm1hdChkYXRlKTsKKyAgICAgICAgICAgIGlmIChzdHJXaXRoLmVxdWFscyhzdHJXaXRob3V0KSkgeworICAgICAgICAgICAgICAgIGxvZ2xuKCJPazogIiArIGlkV2l0aExvY2FsZURhdGEgKyAiIC0+ICIgKworICAgICAgICAgICAgICAgICAgICAgIHN0cldpdGggKyAiOyAiICsgaWRXaXRob3V0TG9jYWxlRGF0YSArICIgLT4gIiArCisgICAgICAgICAgICAgICAgICAgICAgc3RyV2l0aG91dCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgaWRXaXRoTG9jYWxlRGF0YSArICIgLT4gIiArCisgICAgICAgICAgICAgICAgICAgICAgc3RyV2l0aCArICI7ICIgKyBpZFdpdGhvdXRMb2NhbGVEYXRhICsgIiAtPiAiICsKKyAgICAgICAgICAgICAgICAgICAgICBzdHJXaXRob3V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworLy9lb2YKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3QvdGltZXpvbmUvVGltZVpvbmVUZXN0LmphdmEgYi9zcmMvY29tL2libS90ZXN0L3RpbWV6b25lL1RpbWVab25lVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmZlN2Y2ODEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXN0L3RpbWV6b25lL1RpbWVab25lVGVzdC5qYXZhCkBAIC0wLDAgKzEsNzY3IEBACisvKioKKyAqIEB0ZXN0IDEuMjIgOTkvMDkvMjEKKyAqIEBidWcgNDAyODAwNiA0MDQ0MDEzIDQwOTY2OTQgNDEwNzI3NiA0MTA3NTcwIDQxMTI4NjkgNDEzMDg4NQorICogQHN1bW1hcnkgdGVzdCBUaW1lWm9uZQorICogQGJ1aWxkIFRpbWVab25lVGVzdAorICovCisKK3BhY2thZ2UgY29tLmlibS50ZXN0LnRpbWV6b25lOworaW1wb3J0IGNvbS5pYm0udGV4dC4qOworaW1wb3J0IGNvbS5pYm0udXRpbC4qOworaW1wb3J0IGNvbS5pYm0udGVzdC4qOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7CisKK3B1YmxpYyBjbGFzcyBUaW1lWm9uZVRlc3QgZXh0ZW5kcyBUZXN0Rm13aworeworICAgIHN0YXRpYyBmaW5hbCBpbnQgbWlsbGlzUGVySG91ciA9IDM2MDAwMDA7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IFRpbWVab25lVGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBCdWcgNDEzMDg4NQorICAgICAqIENlcnRhaW4gc2hvcnQgem9uZSBJRHMsIHVzZWQgc2luY2UgMS4xLngsIGFyZSBpbmNvcnJlY3QuCisgICAgICogIAorICAgICAqIFRoZSB3b3JzdCBvZiB0aGVzZSBpczoKKyAgICAgKgorICAgICAqICJDQVQiIChDZW50cmFsIEFmcmljYW4gVGltZSkgc2hvdWxkIGJlIEdNVCsyOjAwLCBidXQgaW5zdGVhZCByZXR1cm5zIGEKKyAgICAgKiB6b25lIGF0IEdNVC0xOjAwLiBUaGUgem9uZSBhdCBHTVQtMTowMCBzaG91bGQgYmUgY2FsbGVkIEVHVCwgQ1ZULCBFR1NULAorICAgICAqIG9yIEFaT1NULCBkZXBlbmRpbmcgb24gd2hpY2ggem9uZSBpcyBtZWFudCwgYnV0IGluIG5vIGNhc2UgaXMgaXQgQ0FULgorICAgICAqCisgICAgICogT3RoZXIgd3Jvbmcgem9uZSBJRHM6CisgICAgICoKKyAgICAgKiBFQ1QgKEV1cm9wZWFuIENlbnRyYWwgVGltZSkgR01UKzE6MDA6IEVDVCBpcyBFY3VhZG9yIFRpbWUsCisgICAgICogR01ULTU6MDAuIEV1cm9wZWFuIENlbnRyYWwgdGltZSBpcyBhYmJyZXZpYXRlZCBDRVNULgorICAgICAqCisgICAgICogU1NUIChTb2xvbW9uIElzbGFuZCBUaW1lKSBHTVQrMTE6MDAuIFNTVCBpcyBhY3R1YWxseSBTYW1vYSBTdGFuZGFyZCBUaW1lLAorICAgICAqIEdNVC0xMTowMC4gU29sb21vbiBJc2xhbmQgdGltZSBpcyBTQlQuCisgICAgICoKKyAgICAgKiBOU1QgKE5ldyBaZWFsYW5kIFRpbWUpIEdNVCsxMjowMC4gTlNUIGlzIHRoZSBhYmJyZXZpYXRpb24gZm9yCisgICAgICogTmV3Zm91bmRsYW5kIFN0YW5kYXJkIFRpbWUsIEdNVC0zOjMwLiBOZXcgWmVhbGFuZGVycyB1c2UgTlpTVC4KKyAgICAgKgorICAgICAqIEFTVCAoQWxhc2thIFN0YW5kYXJkIFRpbWUpIEdNVC05OjAwLiBbVGhpcyBoYXMgYWxyZWFkeSBiZWVuIG5vdGVkIGluCisgICAgICogYW5vdGhlciBidWcuXSBJdCBzaG91bGQgYmUgIkFLU1QiLiBBU1QgaXMgQXRsYW50aWMgU3RhbmRhcmQgVGltZSwKKyAgICAgKiBHTVQtNDowMC4KKyAgICAgKgorICAgICAqIFBOVCAoUGhvZW5peCBUaW1lKSBHTVQtNzowMC4gUE5UIHVzdWFsbHkgbWVhbnMgUGl0Y2Fpcm4gVGltZSwKKyAgICAgKiBHTVQtODozMC4gVGhlcmUgaXMgbm8gc3RhbmRhcmQgYWJicmV2aWF0aW9uIGZvciBQaG9lbml4IHRpbWUsIGFzIGRpc3RpbmN0CisgICAgICogZnJvbSBNU1Qgd2l0aCBkYXlsaWdodCBzYXZpbmdzLgorICAgICAqCisgICAgICogSW4gYWRkaXRpb24gdG8gdGhlc2UgcHJvYmxlbXMsIGEgbnVtYmVyIG9mIHpvbmVzIGFyZSBGQUtFLiBUaGF0IGlzLCB0aGV5CisgICAgICogZG9uJ3QgbWF0Y2ggd2hhdCBwZW9wbGUgdXNlIGluIHRoZSByZWFsIHdvcmxkLgorICAgICAqCisgICAgICogRkFLRSB6b25lczoKKyAgICAgKgorICAgICAqIEVFVCAoc2hvdWxkIGJlIEVFU1QpCisgICAgICogQVJUIChzaG91bGQgYmUgRUVTVCkKKyAgICAgKiBNRVQgKHNob3VsZCBiZSBJUlNUKQorICAgICAqIE5FVCAoc2hvdWxkIGJlIEFNU1QpCisgICAgICogUExUIChzaG91bGQgYmUgUEtUKQorICAgICAqIEJTVCAoc2hvdWxkIGJlIEJEVCkKKyAgICAgKiBWU1QgKHNob3VsZCBiZSBJQ1QpCisgICAgICogQ1RUIChzaG91bGQgYmUgQ1NUKSArCisgICAgICogQUNUIChzaG91bGQgYmUgQ1NUKSArCisgICAgICogQUVUIChzaG91bGQgYmUgRVNUKSArCisgICAgICogTUlUIChzaG91bGQgYmUgV1NUKSArCisgICAgICogSUVUIChzaG91bGQgYmUgRVNUKSArCisgICAgICogUFJUIChzaG91bGQgYmUgQVNUKSArCisgICAgICogQ05UIChzaG91bGQgYmUgTlNUKQorICAgICAqIEFHVCAoc2hvdWxkIGJlIEFSU1QpCisgICAgICogQkVUIChzaG91bGQgYmUgRVNUKSArCisgICAgICoKKyAgICAgKiArIEEgem9uZSB3aXRoIHRoZSBjb3JyZWN0IG5hbWUgYWxyZWFkeSBleGlzdHMgYW5kIG1lYW5zIHNvbWV0aGluZworICAgICAqIGVsc2UuIEUuZy4sIEVTVCB1c3VhbGx5IGluZGljYXRlcyB0aGUgVVMgRWFzdGVybiB6b25lLCBzbyBpdCBjYW5ub3QgYmUKKyAgICAgKiB1c2VkIGZvciBCcmF6aWwgKEJFVCkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFNob3J0Wm9uZUlEcygpIHRocm93cyBFeGNlcHRpb24geworCisgICAgICAgIFpvbmVEZXNjcmlwdG9yW10gSkRLXzExNl9SRUZFUkVOQ0VfTElTVCA9IHsKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiTUlUIiwgLTY2MCwgZmFsc2UpLAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJIU1QiLCAtNjAwLCBmYWxzZSksCisgICAgICAgICAgICBuZXcgWm9uZURlc2NyaXB0b3IoIkFTVCIsIC01NDAsIHRydWUpLAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJQU1QiLCAtNDgwLCB0cnVlKSwKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiUE5UIiwgLTQyMCwgZmFsc2UpLAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJNU1QiLCAtNDIwLCB0cnVlKSwKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiQ1NUIiwgLTM2MCwgdHJ1ZSksCisgICAgICAgICAgICBuZXcgWm9uZURlc2NyaXB0b3IoIklFVCIsIC0zMDAsIGZhbHNlKSwKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiRVNUIiwgLTMwMCwgdHJ1ZSksCisgICAgICAgICAgICBuZXcgWm9uZURlc2NyaXB0b3IoIlBSVCIsIC0yNDAsIGZhbHNlKSwKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiQ05UIiwgLTIxMCwgdHJ1ZSksCisgICAgICAgICAgICBuZXcgWm9uZURlc2NyaXB0b3IoIkFHVCIsIC0xODAsIGZhbHNlKSwKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiQkVUIiwgLTE4MCwgdHJ1ZSksCisgICAgICAgICAgICAvLyBuZXcgWm9uZURlc2NyaXB0b3IoIkNBVCIsIC02MCwgZmFsc2UpLCAvLyBXcm9uZzoKKyAgICAgICAgICAgIC8vIEFzIG9mIGJ1ZyA0MTMwODg1LCBmaXggQ0FUIChDZW50cmFsIEFmcmljYSkKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiQ0FUIiwgMTIwLCBmYWxzZSksIC8vIEFmcmljYS9IYXJhcmUKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiR01UIiwgMCwgZmFsc2UpLAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJVVEMiLCAwLCBmYWxzZSksCisgICAgICAgICAgICBuZXcgWm9uZURlc2NyaXB0b3IoIkVDVCIsIDYwLCB0cnVlKSwKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiQVJUIiwgMTIwLCB0cnVlKSwKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiRUVUIiwgMTIwLCB0cnVlKSwKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiRUFUIiwgMTgwLCBmYWxzZSksCisgICAgICAgICAgICAvLyBuZXcgWm9uZURlc2NyaXB0b3IoIk1FVCIsIDIxMCwgdHJ1ZSksCisgICAgICAgICAgICAvLyBUaGlzIGlzIGEgc3RhbmRhcmQgVW5peCB6b25lLCBzbyBkb24ndCByZW1hcCBpdCAtIExpdSAzSmFuMDEKKyAgICAgICAgICAgIC8vIG5ldyBab25lRGVzY3JpcHRvcigiTkVUIiwgMjQwLCBmYWxzZSk7CisgICAgICAgICAgICAvLyBBcyBvZiBidWcgNDE5MTE2NCwgZml4IE5FVAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJORVQiLCAyNDAsIHRydWUpLAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJQTFQiLCAzMDAsIGZhbHNlKSwKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiSVNUIiwgMzMwLCBmYWxzZSksCisgICAgICAgICAgICBuZXcgWm9uZURlc2NyaXB0b3IoIkJTVCIsIDM2MCwgZmFsc2UpLAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJWU1QiLCA0MjAsIGZhbHNlKSwKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiQ1RUIiwgNDgwLCB0cnVlKSwgLy8gUmV2aXNlZCBMaXUgM0phbjAxLCBzdGQtPmRzdAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJKU1QiLCA1NDAsIGZhbHNlKSwKKyAgICAgICAgICAgIG5ldyBab25lRGVzY3JpcHRvcigiQUNUIiwgNTcwLCB0cnVlKSwgLy8gUmV2aXNlZCBMaXUgM0phbjAxLCBzdGQtPmRzdAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJBRVQiLCA2MDAsIHRydWUpLAorICAgICAgICAgICAgbmV3IFpvbmVEZXNjcmlwdG9yKCJTU1QiLCA2NjAsIGZhbHNlKSwKKyAgICAgICAgICAgIC8vIG5ldyBab25lRGVzY3JpcHRvcigiTlNUIiwgNzIwLCBmYWxzZSksCisgICAgICAgICAgICAvLyBBcyBvZiBidWcgNDEzMDg4NSwgZml4IE5TVCAoTmV3IFplYWxhbmQpCisgICAgICAgICAgICBuZXcgWm9uZURlc2NyaXB0b3IoIk5TVCIsIDcyMCwgdHJ1ZSksIC8vIFBhY2lmaWMvQXVja2xhbmQKKworICAgICAgICAgICAgLy8gWzNKYW4wMSBMaXVdIFRocmVlIG9mIHRoZXNlIHpvbmVzIGhhdmUgYmVlbiB1cGRhdGVkLgorICAgICAgICAgICAgLy8gVGhlIENUVCBhbmQgQUNUIHpvbmVzIGp1c3QgcmVtYXAgdG8gQXNpYS9TaGFuZ2hhaQorICAgICAgICAgICAgLy8gYW5kIEF1c3RyYWxpYS9EYXJ3aW4uICBTaW5jZSB0aG9zZSB6b25lcyBoYXZlIGNoYW5nZWQsCisgICAgICAgICAgICAvLyBJIGhhdmUgdXBkYXRlZCB0aGUgdGFibGUuICBUaGUgTUVUIHpvbmUgdXNlZCB0byBiZSBtYXBwZWQKKyAgICAgICAgICAgIC8vIHRvIEFzaWEvVGVocmFuIGJ1dCBzaW5jZSBNRVQgaXMgYSBzdGFuZGFyZCBVbml4IHpvbmUgbmFtZWQKKyAgICAgICAgICAgIC8vIGluIHRoZSBzb3VyY2UgZGF0YSB3ZSBubyBsb25nZXIgZG8gdGhpcyBpbiBpY3Ugb3IgaWN1NGouCisgICAgICAgIH07CisKKyAgICAgICAgSGFzaHRhYmxlIGhhc2ggPSBuZXcgSGFzaHRhYmxlKCk7CisKKyAgICAgICAgU3RyaW5nW10gaWRzID0gVGltZVpvbmUuZ2V0QXZhaWxhYmxlSURzKCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxpZHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIFN0cmluZyBpZCA9IGlkc1tpXTsKKyAgICAgICAgICAgIGlmIChpZC5sZW5ndGgoKSA9PSAzKSB7CisgICAgICAgICAgICAgICAgaGFzaC5wdXQoaWQsIG5ldyBab25lRGVzY3JpcHRvcihUaW1lWm9uZS5nZXRUaW1lWm9uZShpZCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxKREtfMTE2X1JFRkVSRU5DRV9MSVNULmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBab25lRGVzY3JpcHRvciByZWZlcmVuY2Vab25lID0gSkRLXzExNl9SRUZFUkVOQ0VfTElTVFtpXTsKKyAgICAgICAgICAgIFpvbmVEZXNjcmlwdG9yIGN1cnJlbnRab25lID0gKFpvbmVEZXNjcmlwdG9yKWhhc2guZ2V0KHJlZmVyZW5jZVpvbmUuZ2V0SUQoKSk7CisgICAgICAgICAgICBpZiAocmVmZXJlbmNlWm9uZS5lcXVhbHMoY3VycmVudFpvbmUpKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIm9rICIgKyByZWZlcmVuY2Vab25lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiBFeHBlY3RlZCAiICsgcmVmZXJlbmNlWm9uZSArCisgICAgICAgICAgICAgICAgICAgICAgIjsgZ290ICIgKyBjdXJyZW50Wm9uZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBIGRlc2NyaXB0b3IgZm9yIGEgem9uZTsgdXNlZCB0byByZWdyZXNzIHRoZSBzaG9ydCB6b25lIElEcy4KKyAgICAgKi8KKyAgICBzdGF0aWMgY2xhc3MgWm9uZURlc2NyaXB0b3IgeworICAgICAgICBTdHJpbmcgaWQ7CisgICAgICAgIGludCBvZmZzZXQ7IC8vIEluIG1pbnV0ZXMKKyAgICAgICAgYm9vbGVhbiBkYXlsaWdodDsKKworICAgICAgICBab25lRGVzY3JpcHRvcihUaW1lWm9uZSB6b25lKSB7CisgICAgICAgICAgICB0aGlzLmlkID0gem9uZS5nZXRJRCgpOworICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSB6b25lLmdldFJhd09mZnNldCgpIC8gNjAwMDA7CisgICAgICAgICAgICB0aGlzLmRheWxpZ2h0ID0gem9uZS51c2VEYXlsaWdodFRpbWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIFpvbmVEZXNjcmlwdG9yKFN0cmluZyBpZCwgaW50IG9mZnNldCwgYm9vbGVhbiBkYXlsaWdodCkgeworICAgICAgICAgICAgdGhpcy5pZCA9IGlkOworICAgICAgICAgICAgdGhpcy5vZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgICAgICB0aGlzLmRheWxpZ2h0ID0gZGF5bGlnaHQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RyaW5nIGdldElEKCkgeyByZXR1cm4gaWQ7IH0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG8pIHsKKyAgICAgICAgICAgIFpvbmVEZXNjcmlwdG9yIHRoYXQgPSAoWm9uZURlc2NyaXB0b3IpbzsKKyAgICAgICAgICAgIHJldHVybiB0aGF0ICE9IG51bGwgJiYKKyAgICAgICAgICAgICAgICBpZC5lcXVhbHModGhhdC5pZCkgJiYKKyAgICAgICAgICAgICAgICBvZmZzZXQgPT0gdGhhdC5vZmZzZXQgJiYKKyAgICAgICAgICAgICAgICBkYXlsaWdodCA9PSB0aGF0LmRheWxpZ2h0OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgICAgIGludCBtaW4gPSBvZmZzZXQ7CisgICAgICAgICAgICBjaGFyIHNpZ24gPSAnKyc7CisgICAgICAgICAgICBpZiAobWluIDwgMCkgeyBzaWduID0gJy0nOyBtaW4gPSAtbWluOyB9CisKKyAgICAgICAgICAgIHJldHVybiAiWm9uZVtcIiIgKyBpZCArICJcIiwgR01UIiArIHNpZ24gKyAobWluLzYwKSArICc6JyArCisgICAgICAgICAgICAgICAgKG1pbiU2MDwxMD8iMCI6IiIpICsgKG1pbiU2MCkgKyAiLCAiICsKKyAgICAgICAgICAgICAgICAoZGF5bGlnaHQgPyAiRGF5bGlnaHQiIDogIlN0YW5kYXJkIikgKyAiXSI7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgc3RhdGljIGludCBjb21wYXJlKE9iamVjdCBvMSwgT2JqZWN0IG8yKSB7CisgICAgICAgICAgICBab25lRGVzY3JpcHRvciBpMSA9IChab25lRGVzY3JpcHRvcilvMTsKKyAgICAgICAgICAgIFpvbmVEZXNjcmlwdG9yIGkyID0gKFpvbmVEZXNjcmlwdG9yKW8yOworICAgICAgICAgICAgaWYgKGkxLm9mZnNldCA+IGkyLm9mZnNldCkgcmV0dXJuIDE7CisgICAgICAgICAgICBpZiAoaTEub2Zmc2V0IDwgaTIub2Zmc2V0KSByZXR1cm4gLTE7CisgICAgICAgICAgICBpZiAoaTEuZGF5bGlnaHQgJiYgIWkyLmRheWxpZ2h0KSByZXR1cm4gMTsKKyAgICAgICAgICAgIGlmICghaTEuZGF5bGlnaHQgJiYgaTIuZGF5bGlnaHQpIHJldHVybiAtMTsKKyAgICAgICAgICAgIHJldHVybiBpMS5pZC5jb21wYXJlVG8oaTIuaWQpOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBFWFBFQ1RFRF9DVVNUT01fSUQgPSAiQ3VzdG9tIjsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIGZvcm1hdE1pbnV0ZXMoaW50IG1pbikgeworICAgICAgICBjaGFyIHNpZ24gPSAnKyc7CisgICAgICAgIGlmIChtaW4gPCAwKSB7IHNpZ24gPSAnLSc7IG1pbiA9IC1taW47IH0KKyAgICAgICAgaW50IGggPSBtaW4vNjA7CisgICAgICAgIG1pbiA9IG1pbiU2MDsKKyAgICAgICAgcmV0dXJuICIiICsgc2lnbiArIGggKyAiOiIgKyAoKG1pbjwxMCkgPyAiMCIgOiAiIikgKyBtaW47CisgICAgfQorICAgIC8qKgorICAgICAqIEFzIHBhcnQgb2YgdGhlIFZNIGZpeCAoc2VlIENDQyBhcHByb3ZlZCBSRkUgNDAyODAwNiwgYnVnCisgICAgICogNDA0NDAxMyksIFRpbWVab25lLmdldFRpbWVab25lKCkgaGFzIGJlZW4gbW9kaWZpZWQgdG8gcmVjb2duaXplCisgICAgICogZ2VuZXJpYyBJRHMgb2YgdGhlIGZvcm0gR01UWystXWhoOm1tLCBHTVRbKy1daGhtbSwgYW5kCisgICAgICogR01UWystXWhoLiAgVGVzdCB0aGlzIGJlaGF2aW9yIGhlcmUuCisgICAgICoKKyAgICAgKiBCdWcgNDA0NDAxMworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RDdXN0b21QYXJzZSgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBPYmplY3RbXSBEQVRBID0geworICAgICAgICAgICAgLy8gSUQgICAgICAgIEV4cGVjdGVkIG9mZnNldCBpbiBtaW51dGVzCisgICAgICAgICAgICAiR01UIiwgICAgICAgbnVsbCwKKyAgICAgICAgICAgICJHTVQwIiwgICAgICBudWxsLAorICAgICAgICAgICAgIkdNVCswIiwgICAgIG5ldyBJbnRlZ2VyKDApLAorICAgICAgICAgICAgIkdNVCsxIiwgICAgIG5ldyBJbnRlZ2VyKDYwKSwKKyAgICAgICAgICAgICJHTVQtMDAzMCIsICBuZXcgSW50ZWdlcigtMzApLAorICAgICAgICAgICAgIkdNVCsxNTo5OSIsIG5ldyBJbnRlZ2VyKDE1KjYwKzk5KSwKKyAgICAgICAgICAgICJHTVQrIiwgICAgICBudWxsLAorICAgICAgICAgICAgIkdNVC0iLCAgICAgIG51bGwsCisgICAgICAgICAgICAiR01UKzA6IiwgICAgbnVsbCwKKyAgICAgICAgICAgICJHTVQtOiIsICAgICBudWxsLAorICAgICAgICAgICAgIkdNVCswMDEwIiwgIG5ldyBJbnRlZ2VyKDEwKSwgLy8gSW50ZXJwcmV0IHRoaXMgYXMgMDA6MTAKKyAgICAgICAgICAgICJHTVQtMTAiLCAgICBuZXcgSW50ZWdlcigtMTAqNjApLAorICAgICAgICAgICAgIkdNVCszMCIsICAgIG5ldyBJbnRlZ2VyKDMwKSwKKyAgICAgICAgICAgICJHTVQtMzozMCIsICBuZXcgSW50ZWdlcigtKDMqNjArMzApKSwKKyAgICAgICAgICAgICJHTVQtMjMwIiwgICBuZXcgSW50ZWdlcigtKDIqNjArMzApKSwKKyAgICAgICAgfTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz0yKSB7CisgICAgICAgICAgICBTdHJpbmcgaWQgPSAoU3RyaW5nKURBVEFbaV07CisgICAgICAgICAgICBJbnRlZ2VyIGV4cCA9IChJbnRlZ2VyKURBVEFbaSsxXTsKKyAgICAgICAgICAgIFRpbWVab25lIHpvbmUgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZShpZCk7CisgICAgICAgICAgICBpZiAoem9uZS5nZXRJRCgpLmVxdWFscygiR01UIikpIHsKKyAgICAgICAgICAgICAgICBsb2dsbihpZCArICIgLT4gZ2VuZXJpYyBHTVQiKTsKKyAgICAgICAgICAgICAgICAvLyBXaGVuIFRpbWVab25lLmdldFRpbWVab25lKCkgY2FuJ3QgcGFyc2UgdGhlIGlkLCBpdAorICAgICAgICAgICAgICAgIC8vIHJldHVybnMgR01UIC0tIGEgZHViaW91cyBwcmFjdGljZSwgYnV0IHJlcXVpcmVkIGZvcgorICAgICAgICAgICAgICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCisgICAgICAgICAgICAgICAgaWYgKGV4cCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIkV4cGVjdGVkIG9mZnNldCBvZiAiICsgZm9ybWF0TWludXRlcyhleHAuaW50VmFsdWUoKSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgZm9yICIgKyBpZCArICIsIGdvdCBwYXJzZSBmYWlsdXJlIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaW50IGlvZmZzZXQgPSB6b25lLmdldFJhd09mZnNldCgpLzYwMDAwOworICAgICAgICAgICAgICAgIFN0cmluZyBvZmZzZXQgPSBmb3JtYXRNaW51dGVzKGlvZmZzZXQpOworICAgICAgICAgICAgICAgIGxvZ2xuKGlkICsgIiAtPiAiICsgem9uZS5nZXRJRCgpICsgIiBHTVQiICsgb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBpZiAoZXhwID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiRXhwZWN0ZWQgcGFyc2UgZmFpbHVyZSBmb3IgIiArIGlkICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBnb3Qgb2Zmc2V0IG9mICIgKyBvZmZzZXQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIGlkICIgKyB6b25lLmdldElEKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChpb2Zmc2V0ICE9IGV4cC5pbnRWYWx1ZSgpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgIXpvbmUuZ2V0SUQoKS5lcXVhbHMoRVhQRUNURURfQ1VTVE9NX0lEKSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJFeHBlY3RlZCBvZmZzZXQgb2YgIiArIGZvcm1hdE1pbnV0ZXMoZXhwLmludFZhbHVlKCkpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBpZCBDdXN0b20sIGZvciAiICsgaWQgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIGdvdCBvZmZzZXQgb2YgIiArIG9mZnNldCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgaWQgIiArIHpvbmUuZ2V0SUQoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSBvZiB0aGUgZ2V0RGlzcGxheU5hbWUoKSBBUEkuCisgICAgICoKKyAgICAgKiBCdWcgNDExMjg2OQorICAgICAqIEJ1ZyA0MDI4MDA2CisgICAgICoKKyAgICAgKiBTZWUgYWxzbyBBUEkgY2hhbmdlIHJlcXVlc3QgQTQxLgorICAgICAqCisgICAgICogNC8yMS85OCAtIG1ha2Ugc21hcnRlciwgc28gdGhlIHRlc3Qgd29ya3MgaWYgdGhlIGV4dCByZXNvdXJjZXMKKyAgICAgKiBhcmUgcHJlc2VudCBvciBub3QuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdERpc3BsYXlOYW1lKCkgeworICAgICAgICBUaW1lWm9uZSB6b25lID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoIlBTVCIpOworICAgICAgICBTdHJpbmcgbmFtZSA9IHpvbmUuZ2V0RGlzcGxheU5hbWUoTG9jYWxlLkVOR0xJU0gpOworICAgICAgICBsb2dsbigiUFNULT4iICsgbmFtZSk7CisgICAgICAgIGlmICghbmFtZS5lcXVhbHMoIlBhY2lmaWMgU3RhbmRhcmQgVGltZSIpKQorICAgICAgICAgICAgZXJybG4oIkZhaWw6IEV4cGVjdGVkIFwiUGFjaWZpYyBTdGFuZGFyZCBUaW1lXCIsIGdvdCAiICsgbmFtZSArCisgICAgICAgICAgICAgICAgICAiIGZvciAiICsgem9uZSk7CisKKyAgICAgICAgLy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAgICAvLyBUSEUgRk9MTE9XSU5HIExJTkVTIE1VU1QgQkUgVVBEQVRFRCBJRiBUSEUgTE9DQUxFIERBVEEgQ0hBTkdFUworICAgICAgICAvLyBUSEUgRk9MTE9XSU5HIExJTkVTIE1VU1QgQkUgVVBEQVRFRCBJRiBUSEUgTE9DQUxFIERBVEEgQ0hBTkdFUworICAgICAgICAvLyBUSEUgRk9MTE9XSU5HIExJTkVTIE1VU1QgQkUgVVBEQVRFRCBJRiBUSEUgTE9DQUxFIERBVEEgQ0hBTkdFUworICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICAgIE9iamVjdFtdIERBVEEgPSB7CisgICAgICAgICAgICBuZXcgQm9vbGVhbihmYWxzZSksIG5ldyBJbnRlZ2VyKFRpbWVab25lLlNIT1JUKSwgIlBTVCIsCisgICAgICAgICAgICBuZXcgQm9vbGVhbih0cnVlKSwgIG5ldyBJbnRlZ2VyKFRpbWVab25lLlNIT1JUKSwgIlBEVCIsCisgICAgICAgICAgICBuZXcgQm9vbGVhbihmYWxzZSksIG5ldyBJbnRlZ2VyKFRpbWVab25lLkxPTkcpLCAgIlBhY2lmaWMgU3RhbmRhcmQgVGltZSIsCisgICAgICAgICAgICBuZXcgQm9vbGVhbih0cnVlKSwgIG5ldyBJbnRlZ2VyKFRpbWVab25lLkxPTkcpLCAgIlBhY2lmaWMgRGF5bGlnaHQgVGltZSIsCisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz0zKSB7CisgICAgICAgICAgICBuYW1lID0gem9uZS5nZXREaXNwbGF5TmFtZSgoKEJvb2xlYW4pREFUQVtpXSkuYm9vbGVhblZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEludGVnZXIpREFUQVtpKzFdKS5pbnRWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWxlLkVOR0xJU0gpOworICAgICAgICAgICAgaWYgKCFuYW1lLmVxdWFscyhEQVRBW2krMl0pKQorICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiBFeHBlY3RlZCAiICsgREFUQVtpKzJdICsgIjsgZ290ICIgKyBuYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIGRvbid0IGRpc3BsYXkgdGhlIERTVCBuYW1lIGJ5IGNvbnN0cnVjdGluZyBhIGZha2UKKyAgICAgICAgLy8gUFNUIHpvbmUgdGhhdCBoYXMgRFNUIGFsbCB5ZWFyIGxvbmcuCisgICAgICAgIFNpbXBsZVRpbWVab25lIHpvbmUyID0gbmV3IFNpbXBsZVRpbWVab25lKDAsICJQU1QiKTsKKyAgICAgICAgem9uZTIuc2V0U3RhcnRSdWxlKENhbGVuZGFyLkpBTlVBUlksIDEsIDApOworICAgICAgICB6b25lMi5zZXRFbmRSdWxlKENhbGVuZGFyLkRFQ0VNQkVSLCAzMSwgMCk7CisgICAgICAgIGxvZ2xuKCJNb2RpZmllZCBQU1QgaW5EYXlsaWdodFRpbWUtPiIgKyB6b25lMi5pbkRheWxpZ2h0VGltZShuZXcgRGF0ZSgpKSk7CisgICAgICAgIG5hbWUgPSB6b25lMi5nZXREaXNwbGF5TmFtZShMb2NhbGUuRU5HTElTSCk7CisgICAgICAgIGxvZ2xuKCJNb2RpZmllZCBQU1QtPiIgKyBuYW1lKTsKKyAgICAgICAgaWYgKCFuYW1lLmVxdWFscygiUGFjaWZpYyBTdGFuZGFyZCBUaW1lIikpCisgICAgICAgICAgICBlcnJsbigiRmFpbDogRXhwZWN0ZWQgXCJQYWNpZmljIFN0YW5kYXJkIFRpbWVcIiIpOworCisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBnZXQgdGhlIGRlZmF1bHQgZGlzcGxheSBmb3JtYXQgZm9yIExvY2FsZXMKKyAgICAgICAgLy8gd2l0aCBubyBkaXNwbGF5IG5hbWUgZGF0YS4KKyAgICAgICAgTG9jYWxlIHpoX0NOID0gTG9jYWxlLlNJTVBMSUZJRURfQ0hJTkVTRTsKKyAgICAgICAgbmFtZSA9IHpvbmUuZ2V0RGlzcGxheU5hbWUoemhfQ04pOworICAgICAgICAvLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICAgIC8vIFRIRSBGT0xMT1dJTkcgTElORSBNVVNUIEJFIFVQREFURUQgSUYgVEhFIExPQ0FMRSBEQVRBIENIQU5HRVMKKyAgICAgICAgLy8gVEhFIEZPTExPV0lORyBMSU5FIE1VU1QgQkUgVVBEQVRFRCBJRiBUSEUgTE9DQUxFIERBVEEgQ0hBTkdFUworICAgICAgICAvLyBUSEUgRk9MTE9XSU5HIExJTkUgTVVTVCBCRSBVUERBVEVEIElGIFRIRSBMT0NBTEUgREFUQSBDSEFOR0VTCisgICAgICAgIC8vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgICAgbG9nbG4oIlBTVCh6aF9DTiktPiIgKyBuYW1lKTsKKworICAgICAgICAvLyBOb3cgYmUgc21hcnQgLS0gY2hlY2sgdG8gc2VlIGlmIHpoIHJlc291cmNlIGlzIGV2ZW4gcHJlc2VudC4KKyAgICAgICAgLy8gSWYgbm90LCB3ZSBleHBlY3QgdGhlIGVuIGZhbGxiYWNrIGJlaGF2aW9yLgorICAgICAgICBSZXNvdXJjZUJ1bmRsZSBlblJCID0gUmVzb3VyY2VCdW5kbGUuZ2V0QnVuZGxlKCJqYXZhLnRleHQucmVzb3VyY2VzLkRhdGVGb3JtYXRab25lRGF0YSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jYWxlLkVOR0xJU0gpOworICAgICAgICBSZXNvdXJjZUJ1bmRsZSB6aFJCID0gUmVzb3VyY2VCdW5kbGUuZ2V0QnVuZGxlKCJqYXZhLnRleHQucmVzb3VyY2VzLkRhdGVGb3JtYXRab25lRGF0YSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemhfQ04pOworICAgICAgICBib29sZWFuIG5vWkggPSBlblJCID09IHpoUkI7CisKKyAgICAgICAgaWYgKG5vWkgpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJXYXJuaW5nOiBOb3QgdGVzdGluZyB0aGUgemhfQ04gYmVoYXZpb3IgYmVjYXVzZSByZXNvdXJjZSBpcyBhYnNlbnQiKTsKKyAgICAgICAgICAgIGlmICghbmFtZS5lcXVhbHMoIlBhY2lmaWMgU3RhbmRhcmQgVGltZSIpKQorICAgICAgICAgICAgICAgIGVycmxuKCJGYWlsOiBFeHBlY3RlZCBQYWNpZmljIFN0YW5kYXJkIFRpbWUiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmICghbmFtZS5lcXVhbHMoIlBhY2lmaWMgU3RhbmRhcmQgVGltZSIpICYmCisJCSAhbmFtZS5lcXVhbHMoIkdNVC0wODowMCIpICYmCisgICAgICAgICAgICAgICAgICFuYW1lLmVxdWFscygiR01ULTg6MDAiKSAmJgorICAgICAgICAgICAgICAgICAhbmFtZS5lcXVhbHMoIkdNVC0wODAwIikgJiYKKyAgICAgICAgICAgICAgICAgIW5hbWUuZXF1YWxzKCJHTVQtODAwIikpIHsKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiBFeHBlY3RlZCBHTVQtMDg6MDAgb3Igc29tZXRoaW5nIHNpbWlsYXIiKTsKKyAgICAgICAgICAgIGVycmxuKCIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiKTsKKyAgICAgICAgICAgIGVycmxuKCJUSEUgQUJPVkUgRkFJTFVSRSBNQVkgSlVTVCBNRUFOIFRIRSBMT0NBTEUgREFUQSBIQVMgQ0hBTkdFRCIpOworICAgICAgICAgICAgZXJybG4oIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBOb3cgdHJ5IGEgbm9uLWV4aXN0ZW50IHpvbmUKKyAgICAgICAgem9uZTIgPSBuZXcgU2ltcGxlVGltZVpvbmUoOTAqNjAqMTAwMCwgInh5enp5Iik7CisgICAgICAgIG5hbWUgPSB6b25lMi5nZXREaXNwbGF5TmFtZShMb2NhbGUuRU5HTElTSCk7CisgICAgICAgIGxvZ2xuKCJHTVQrOTBtaW4tPiIgKyBuYW1lKTsKKyAgICAgICAgaWYgKCFuYW1lLmVxdWFscygiR01UKzAxOjMwIikgJiYKKyAgICAgICAgICAgICFuYW1lLmVxdWFscygiR01UKzE6MzAiKSAmJgorICAgICAgICAgICAgIW5hbWUuZXF1YWxzKCJHTVQrMDEzMCIpICYmCisgICAgICAgICAgICAhbmFtZS5lcXVhbHMoIkdNVCsxMzAiKSkKKyAgICAgICAgICAgIGVycmxuKCJGYWlsOiBFeHBlY3RlZCBHTVQrMDE6MzAgb3Igc29tZXRoaW5nIHNpbWlsYXIiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0R2VuZXJpY0FQSSgpIHsKKyAgICAgICAgU3RyaW5nIGlkID0gIk5ld0dNVCI7CisgICAgICAgIGludCBvZmZzZXQgPSAxMjM0NTsKKworICAgICAgICBTaW1wbGVUaW1lWm9uZSB6b25lID0gbmV3IFNpbXBsZVRpbWVab25lKG9mZnNldCwgaWQpOworICAgICAgICBpZiAoem9uZS51c2VEYXlsaWdodFRpbWUoKSkgZXJybG4oIkZBSUw6IHVzZURheWxpZ2h0VGltZSBzaG91bGQgcmV0dXJuIGZhbHNlIik7CisKKyAgICAgICAgVGltZVpvbmUgem9uZWNsb25lID0gKFRpbWVab25lKXpvbmUuY2xvbmUoKTsKKyAgICAgICAgaWYgKCF6b25lY2xvbmUuZXF1YWxzKHpvbmUpKSBlcnJsbigiRkFJTDogY2xvbmUgb3Igb3BlcmF0b3I9PSBmYWlsZWQiKTsKKyAgICAgICAgem9uZWNsb25lLnNldElEKCJhYmMiKTsKKyAgICAgICAgaWYgKHpvbmVjbG9uZS5lcXVhbHMoem9uZSkpIGVycmxuKCJGQUlMOiBjbG9uZSBvciBvcGVyYXRvciE9IGZhaWxlZCIpOworICAgICAgICAvLyBkZWxldGUgem9uZWNsb25lOworCisgICAgICAgIHpvbmVjbG9uZSA9IChUaW1lWm9uZSl6b25lLmNsb25lKCk7CisgICAgICAgIGlmICghem9uZWNsb25lLmVxdWFscyh6b25lKSkgZXJybG4oIkZBSUw6IGNsb25lIG9yIG9wZXJhdG9yPT0gZmFpbGVkIik7CisgICAgICAgIHpvbmVjbG9uZS5zZXRSYXdPZmZzZXQoNDU2NzgpOworICAgICAgICBpZiAoem9uZWNsb25lLmVxdWFscyh6b25lKSkgZXJybG4oIkZBSUw6IGNsb25lIG9yIG9wZXJhdG9yIT0gZmFpbGVkIik7CisKKyAgICAgICAgLy8gQysrIG9ubHkKKyAgICAgICAgLyoKKyAgICAgICAgICBTaW1wbGVUaW1lWm9uZSBjb3B5KCp6b25lKTsKKyAgICAgICAgICBpZiAoIShjb3B5ID09ICp6b25lKSkgZXJybG4oIkZBSUw6IGNvcHkgY29uc3RydWN0b3Igb3Igb3BlcmF0b3I9PSBmYWlsZWQiKTsKKyAgICAgICAgICBjb3B5ID0gKihTaW1wbGVUaW1lWm9uZSopem9uZWNsb25lOworICAgICAgICAgIGlmICghKGNvcHkgPT0gKnpvbmVjbG9uZSkpIGVycmxuKCJGQUlMOiBhc3NpZ25tZW50IG9wZXJhdG9yIG9yIG9wZXJhdG9yPT0gZmFpbGVkIik7CisgICAgICAgICAgKi8KKworICAgICAgICBUaW1lWm9uZSBzYXZlRGVmYXVsdCA9IFRpbWVab25lLmdldERlZmF1bHQoKTsKKyAgICAgICAgVGltZVpvbmUuc2V0RGVmYXVsdCh6b25lKTsKKyAgICAgICAgVGltZVpvbmUgZGVmYXVsdHpvbmUgPSBUaW1lWm9uZS5nZXREZWZhdWx0KCk7CisgICAgICAgIGlmIChkZWZhdWx0em9uZSA9PSB6b25lKSBlcnJsbigiRkFJTDogRGVmYXVsdCBvYmplY3QgaXMgaWRlbnRpY2FsLCBub3QgY2xvbmUiKTsKKyAgICAgICAgaWYgKCFkZWZhdWx0em9uZS5lcXVhbHMoem9uZSkpIGVycmxuKCJGQUlMOiBEZWZhdWx0IG9iamVjdCBpcyBub3QgZXF1YWwiKTsKKyAgICAgICAgVGltZVpvbmUuc2V0RGVmYXVsdChzYXZlRGVmYXVsdCk7CisgICAgICAgIC8vIGRlbGV0ZSBkZWZhdWx0em9uZTsKKyAgICAgICAgLy8gZGVsZXRlIHpvbmVjbG9uZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0UnVsZUFQSSgpCisgICAgeworICAgICAgICAvLyBFcnJvckNvZGUgc3RhdHVzID0gWkVST19FUlJPUjsKKworICAgICAgICBpbnQgb2Zmc2V0ID0gKGludCkoNjAqNjAqMTAwMCoxLjc1KTsgLy8gUGljayBhIHdlaXJkIG9mZnNldAorICAgICAgICBTaW1wbGVUaW1lWm9uZSB6b25lID0gbmV3IFNpbXBsZVRpbWVab25lKG9mZnNldCwgIlRlc3Rab25lIik7CisgICAgICAgIGlmICh6b25lLnVzZURheWxpZ2h0VGltZSgpKSBlcnJsbigiRkFJTDogdXNlRGF5bGlnaHRUaW1lIHNob3VsZCByZXR1cm4gZmFsc2UiKTsKKworICAgICAgICAvLyBFc3RhYmxpc2ggb3VyIGV4cGVjdGVkIHRyYW5zaXRpb24gdGltZXMuICBEbyB0aGlzIHdpdGggYSBub24tRFNUCisgICAgICAgIC8vIGNhbGVuZGFyIHdpdGggdGhlIChhYm92ZSkgZGVjbGFyZWQgbG9jYWwgb2Zmc2V0LgorICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBnYyA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcih6b25lKTsKKyAgICAgICAgZ2MuY2xlYXIoKTsKKyAgICAgICAgZ2Muc2V0KDE5OTAsIENhbGVuZGFyLk1BUkNILCAxKTsKKyAgICAgICAgbG9uZyBtYXJjaE9uZVN0ZCA9IGdjLmdldFRpbWUoKS5nZXRUaW1lKCk7IC8vIExvY2FsIFN0ZCB0aW1lIG1pZG5pZ2h0CisgICAgICAgIGdjLmNsZWFyKCk7CisgICAgICAgIGdjLnNldCgxOTkwLCBDYWxlbmRhci5KVUxZLCAxKTsKKyAgICAgICAgbG9uZyBqdWx5T25lU3RkID0gZ2MuZ2V0VGltZSgpLmdldFRpbWUoKTsgLy8gTG9jYWwgU3RkIHRpbWUgbWlkbmlnaHQKKworICAgICAgICAvLyBTdGFydGluZyBhbmQgZW5kaW5nIGhvdXJzLCBXQUxMIFRJTUUKKyAgICAgICAgaW50IHN0YXJ0SG91ciA9IChpbnQpKDIuMjUgKiAzNjAwMDAwKTsKKyAgICAgICAgaW50IGVuZEhvdXIgICA9IChpbnQpKDMuNSAgKiAzNjAwMDAwKTsKKworICAgICAgICB6b25lLnNldFN0YXJ0UnVsZShDYWxlbmRhci5NQVJDSCwgMSwgMCwgc3RhcnRIb3VyKTsKKyAgICAgICAgem9uZS5zZXRFbmRSdWxlICAoQ2FsZW5kYXIuSlVMWSwgIDEsIDAsIGVuZEhvdXIpOworCisgICAgICAgIGdjID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKHpvbmUpOworICAgICAgICAvLyBpZiAoZmFpbHVyZShzdGF0dXMsICJuZXcgR3JlZ29yaWFuQ2FsZW5kYXIiKSkgcmV0dXJuOworCisgICAgICAgIGxvbmcgbWFyY2hPbmUgPSBtYXJjaE9uZVN0ZCArIHN0YXJ0SG91cjsKKyAgICAgICAgbG9uZyBqdWx5T25lID0ganVseU9uZVN0ZCArIGVuZEhvdXIgLSAzNjAwMDAwOyAvLyBBZGp1c3QgZnJvbSB3YWxsIHRvIFN0ZCB0aW1lCisKKyAgICAgICAgbG9uZyBleHBNYXJjaE9uZSA9IDYzNjI1MTQwMDAwMEw7CisgICAgICAgIGlmIChtYXJjaE9uZSAhPSBleHBNYXJjaE9uZSkKKyAgICAgICAgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IEV4cGVjdGVkIHN0YXJ0IGNvbXB1dGVkIGFzICIgKyBtYXJjaE9uZSArCisgICAgICAgICAgICAgICAgICAiID0gIiArIG5ldyBEYXRlKG1hcmNoT25lKSk7CisgICAgICAgICAgICBsb2dsbigiICAgICAgU2hvdWxkIGJlICAgICAgICAgICAgICAgICAgIiArIGV4cE1hcmNoT25lICsKKyAgICAgICAgICAgICAgICAgICIgPSAiICsgbmV3IERhdGUoZXhwTWFyY2hPbmUpKTsKKyAgICAgICAgfQorCisgICAgICAgIGxvbmcgZXhwSnVseU9uZSA9IDY0Njc5MzEwMDAwMEw7CisgICAgICAgIGlmIChqdWx5T25lICE9IGV4cEp1bHlPbmUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBFeHBlY3RlZCBzdGFydCBjb21wdXRlZCBhcyAiICsganVseU9uZSArCisgICAgICAgICAgICAgICAgICAiID0gIiArIG5ldyBEYXRlKGp1bHlPbmUpKTsKKyAgICAgICAgICAgIGxvZ2xuKCIgICAgICBTaG91bGQgYmUgICAgICAgICAgICAgICAgICAiICsgZXhwSnVseU9uZSArCisgICAgICAgICAgICAgICAgICAiID0gIiArIG5ldyBEYXRlKGV4cEp1bHlPbmUpKTsKKyAgICAgICAgfQorCisgICAgICAgIF90ZXN0VXNpbmdCaW5hcnlTZWFyY2goem9uZSwgbmV3IERhdGUoOTAsIENhbGVuZGFyLkpBTlVBUlksIDEpLmdldFRpbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKDkwLCBDYWxlbmRhci5KVU5FLCAxNSkuZ2V0VGltZSgpLCBtYXJjaE9uZSk7CisgICAgICAgIF90ZXN0VXNpbmdCaW5hcnlTZWFyY2goem9uZSwgbmV3IERhdGUoOTAsIENhbGVuZGFyLkpVTkUsIDEpLmdldFRpbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEYXRlKDkwLCBDYWxlbmRhci5ERUNFTUJFUiwgMzEpLmdldFRpbWUoKSwganVseU9uZSk7CisKKyAgICAgICAgaWYgKHpvbmUuaW5EYXlsaWdodFRpbWUobmV3IERhdGUobWFyY2hPbmUgLSAxMDAwKSkgfHwKKyAgICAgICAgICAgICF6b25lLmluRGF5bGlnaHRUaW1lKG5ldyBEYXRlKG1hcmNoT25lKSkpCisgICAgICAgICAgICBlcnJsbigiRkFJTDogU3RhcnQgcnVsZSBicm9rZW4iKTsKKyAgICAgICAgaWYgKCF6b25lLmluRGF5bGlnaHRUaW1lKG5ldyBEYXRlKGp1bHlPbmUgLSAxMDAwKSkgfHwKKyAgICAgICAgICAgIHpvbmUuaW5EYXlsaWdodFRpbWUobmV3IERhdGUoanVseU9uZSkpKQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IEVuZCBydWxlIGJyb2tlbiIpOworCisgICAgICAgIHpvbmUuc2V0U3RhcnRZZWFyKDE5OTEpOworICAgICAgICBpZiAoem9uZS5pbkRheWxpZ2h0VGltZShuZXcgRGF0ZShtYXJjaE9uZSkpIHx8CisgICAgICAgICAgICB6b25lLmluRGF5bGlnaHRUaW1lKG5ldyBEYXRlKGp1bHlPbmUgLSAxMDAwKSkpCisgICAgICAgICAgICBlcnJsbigiRkFJTDogU3RhcnQgeWVhciBicm9rZW4iKTsKKworICAgICAgICAvLyBmYWlsdXJlKHN0YXR1cywgIlRlc3RSdWxlQVBJIik7CisgICAgICAgIC8vIGRlbGV0ZSBnYzsKKyAgICAgICAgLy8gZGVsZXRlIHpvbmU7CisgICAgfQorCisgICAgdm9pZCBfdGVzdFVzaW5nQmluYXJ5U2VhcmNoKFNpbXBsZVRpbWVab25lIHR6LCBsb25nIG1pbiwgbG9uZyBtYXgsIGxvbmcgZXhwZWN0ZWRCb3VuZGFyeSkKKyAgICB7CisgICAgICAgIC8vIEVycm9yQ29kZSBzdGF0dXMgPSBaRVJPX0VSUk9SOworICAgICAgICBib29sZWFuIHN0YXJ0c0luRFNUID0gdHouaW5EYXlsaWdodFRpbWUobmV3IERhdGUobWluKSk7CisgICAgICAgIC8vIGlmIChmYWlsdXJlKHN0YXR1cywgIlNpbXBsZVRpbWVab25lOjppbkRheWxpZ2h0VGltZSIpKSByZXR1cm47CisgICAgICAgIGlmICh0ei5pbkRheWxpZ2h0VGltZShuZXcgRGF0ZShtYXgpKSA9PSBzdGFydHNJbkRTVCkgeworICAgICAgICAgICAgbG9nbG4oIkVycm9yOiBpbkRheWxpZ2h0VGltZSgiICsgbmV3IERhdGUobWF4KSArICIpICE9ICIgKyAoIXN0YXJ0c0luRFNUKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgLy8gaWYgKGZhaWx1cmUoc3RhdHVzLCAiU2ltcGxlVGltZVpvbmU6OmluRGF5bGlnaHRUaW1lIikpIHJldHVybjsKKyAgICAgICAgd2hpbGUgKChtYXggLSBtaW4pID4gSU5URVJWQUwpIHsKKyAgICAgICAgICAgIGxvbmcgbWlkID0gKG1pbiArIG1heCkgLyAyOworICAgICAgICAgICAgaWYgKHR6LmluRGF5bGlnaHRUaW1lKG5ldyBEYXRlKG1pZCkpID09IHN0YXJ0c0luRFNUKSB7CisgICAgICAgICAgICAgICAgbWluID0gbWlkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbWF4ID0gbWlkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gaWYgKGZhaWx1cmUoc3RhdHVzLCAiU2ltcGxlVGltZVpvbmU6OmluRGF5bGlnaHRUaW1lIikpIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBsb2dsbigiQmluYXJ5IFNlYXJjaCBCZWZvcmU6ICIgKyBtaW4gKyAiID0gIiArIG5ldyBEYXRlKG1pbikpOworICAgICAgICBsb2dsbigiQmluYXJ5IFNlYXJjaCBBZnRlcjogICIgKyBtYXggKyAiID0gIiArIG5ldyBEYXRlKG1heCkpOworICAgICAgICBsb25nIG1pbmRlbHRhID0gZXhwZWN0ZWRCb3VuZGFyeSAtIG1pbjsKKyAgICAgICAgbG9uZyBtYXhkZWx0YSA9IG1heCAtIGV4cGVjdGVkQm91bmRhcnk7CisgICAgICAgIGlmIChtaW5kZWx0YSA+PSAwICYmCisgICAgICAgICAgICBtaW5kZWx0YSA8PSBJTlRFUlZBTCAmJgorICAgICAgICAgICAgbWluZGVsdGEgPj0gMCAmJgorICAgICAgICAgICAgbWluZGVsdGEgPD0gSU5URVJWQUwpCisgICAgICAgICAgICBsb2dsbigiUEFTUzogRXhwZWN0ZWQgYmRyeTogICIgKyBleHBlY3RlZEJvdW5kYXJ5ICsgIiA9ICIgKyBuZXcgRGF0ZShleHBlY3RlZEJvdW5kYXJ5KSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBFeHBlY3RlZCBiZHJ5OiAgIiArIGV4cGVjdGVkQm91bmRhcnkgKyAiID0gIiArIG5ldyBEYXRlKGV4cGVjdGVkQm91bmRhcnkpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgaW50IElOVEVSVkFMID0gMTAwOworCisgICAgLy8gQnVnIDAwNjsgdmVyaWZ5IHRoZSBvZmZzZXQgZm9yIGEgc3BlY2lmaWMgem9uZS4KKyAgICBwdWJsaWMgdm9pZCBUZXN0UFJUT2Zmc2V0KCkKKyAgICB7CisgICAgICAgIFRpbWVab25lIHR6ID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoICJQUlQiICk7CisgICAgICAgIGlmKCB0eiA9PSBudWxsICkgeworICAgICAgICAgICAgZXJybG4oICJGQUlMOiBUaW1lWm9uZShQUlQpIGlzIG51bGwiICk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZXsKKyAgICAgICAgICAgIGlmICh0ei5nZXRSYXdPZmZzZXQoKSAhPSAoLTQqbWlsbGlzUGVySG91cikpCisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IE9mZnNldCBmb3IgUFJUIHNob3VsZCBiZSAtNCwgZ290ICIgKworICAgICAgICAgICAgICAgICAgICAgIHR6LmdldFJhd09mZnNldCgpIC8gKGRvdWJsZSltaWxsaXNQZXJIb3VyKTsKKyAgICAgICAgfQorCisgICAgfQorCisgICAgLy8gVGVzdCB2YXJpb3VzIGNhbGxzCisgICAgcHVibGljIHZvaWQgVGVzdFZhcmlvdXNBUEk1MTgoKQorICAgIHsKKyAgICAgICAgVGltZVpvbmUgdGltZV96b25lID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoIlBTVCIpOworICAgICAgICBEYXRlIGQgPSBuZXcgRGF0ZSg5NywgQ2FsZW5kYXIuQVBSSUwsIDMwKTsKKworICAgICAgICBsb2dsbigiVGhlIHRpbWV6b25lIGlzICIgKyB0aW1lX3pvbmUuZ2V0SUQoKSk7CisKKyAgICAgICAgaWYgKHRpbWVfem9uZS5pbkRheWxpZ2h0VGltZShkKSAhPSB0cnVlKQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IGluRGF5bGlnaHRUaW1lIHJldHVybmVkIGZhbHNlIik7CisKKyAgICAgICAgaWYgKHRpbWVfem9uZS51c2VEYXlsaWdodFRpbWUoKSAhPSB0cnVlKQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IHVzZURheWxpZ2h0VGltZSByZXR1cm5lZCBmYWxzZSIpOworCisgICAgICAgIGlmICh0aW1lX3pvbmUuZ2V0UmF3T2Zmc2V0KCkgIT0gLTgqbWlsbGlzUGVySG91cikKKyAgICAgICAgICAgIGVycmxuKCAiRkFJTDogZ2V0UmF3T2Zmc2V0IHJldHVybmVkIHdyb25nIHZhbHVlIik7CisKKyAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIgZ2MgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKTsKKyAgICAgICAgZ2Muc2V0VGltZShkKTsKKyAgICAgICAgaWYgKHRpbWVfem9uZS5nZXRPZmZzZXQoZ2MuQUQsIGdjLmdldChnYy5ZRUFSKSwgZ2MuZ2V0KGdjLk1PTlRIKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2MuZ2V0KGdjLkRBWV9PRl9NT05USCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjLmdldChnYy5EQVlfT0ZfV0VFSyksIDApCisgICAgICAgICAgICAhPSAtNyptaWxsaXNQZXJIb3VyKQorICAgICAgICAgICAgZXJybG4oIkZBSUw6IGdldE9mZnNldCByZXR1cm5lZCB3cm9uZyB2YWx1ZSIpOworICAgIH0KKworICAgIC8vIFRlc3QgZ2V0QXZhaWxhYmxlSUQgQVBJCisgICAgcHVibGljIHZvaWQgVGVzdEdldEF2YWlsYWJsZUlEczkxMygpCisgICAgeworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigiVGltZVpvbmUuZ2V0QXZhaWxhYmxlSURzKCkgPSB7ICIpOworICAgICAgICBTdHJpbmdbXSBzID0gVGltZVpvbmUuZ2V0QXZhaWxhYmxlSURzKCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxzLmxlbmd0aDsgKytpKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoaSA+IDApIGJ1Zi5hcHBlbmQoIiwgIik7CisgICAgICAgICAgICBidWYuYXBwZW5kKHNbaV0pOworICAgICAgICB9CisgICAgICAgIGJ1Zi5hcHBlbmQoIiB9OyIpOworICAgICAgICBsb2dsbihidWYudG9TdHJpbmcoKSk7CisKKyAgICAgICAgYnVmLnNldExlbmd0aCgwKTsKKyAgICAgICAgYnVmLmFwcGVuZCgiVGltZVpvbmUuZ2V0QXZhaWxhYmxlSURzKEdNVCswMjowMCkgPSB7ICIpOworICAgICAgICBzID0gVGltZVpvbmUuZ2V0QXZhaWxhYmxlSURzKCsyICogNjAgKiA2MCAqIDEwMDApOworICAgICAgICBmb3IgKGludCBpPTA7IGk8cy5sZW5ndGg7ICsraSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGkgPiAwKSBidWYuYXBwZW5kKCIsICIpOworICAgICAgICAgICAgYnVmLmFwcGVuZChzW2ldKTsKKyAgICAgICAgfQorICAgICAgICBidWYuYXBwZW5kKCIgfTsiKTsKKyAgICAgICAgbG9nbG4oYnVmLnRvU3RyaW5nKCkpOworCisgICAgICAgIFRpbWVab25lIHR6ID0gVGltZVpvbmUuZ2V0VGltZVpvbmUoIlBTVCIpOworICAgICAgICBpZiAodHogIT0gbnVsbCkKKyAgICAgICAgICAgIGxvZ2xuKCJnZXRUaW1lWm9uZShQU1QpID0gIiArIHR6LmdldElEKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlcnJsbigiRkFJTDogZ2V0VGltZVpvbmUoUFNUKSA9IG51bGwiKTsKKworICAgICAgICB0eiA9IFRpbWVab25lLmdldFRpbWVab25lKCJBbWVyaWNhL0xvc19BbmdlbGVzIik7CisgICAgICAgIGlmICh0eiAhPSBudWxsKQorICAgICAgICAgICAgbG9nbG4oImdldFRpbWVab25lKEFtZXJpY2EvTG9zX0FuZ2VsZXMpID0gIiArIHR6LmdldElEKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBlcnJsbigiRkFJTDogZ2V0VGltZVpvbmUoUFNUKSA9IG51bGwiKTsKKworICAgICAgICAvLyBCdWcgNDA5NjY5NAorICAgICAgICB0eiA9IFRpbWVab25lLmdldFRpbWVab25lKCJOT05fRVhJU1RFTlQiKTsKKyAgICAgICAgaWYgKHR6ID09IG51bGwpCisgICAgICAgICAgICBlcnJsbigiRkFJTDogZ2V0VGltZVpvbmUoTk9OX0VYSVNURU5UKSA9IG51bGwiKTsKKyAgICAgICAgZWxzZSBpZiAoIXR6LmdldElEKCkuZXF1YWxzKCJHTVQiKSkKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBnZXRUaW1lWm9uZShOT05fRVhJU1RFTlQpID0gIiArIHR6LmdldElEKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEJ1ZyA0MTA3Mjc2CisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdERTVFNhdmluZ3MoKSB7CisgICAgICAgIC8vIEl0IG1pZ2h0IGJlIGJldHRlciB0byBmaW5kIGEgd2F5IHRvIGludGVncmF0ZSB0aGlzIHRlc3QgaW50byB0aGUgbWFpbiBUaW1lWm9uZQorICAgICAgICAvLyB0ZXN0cyBhYm92ZSwgYnV0IEkgZG9uJ3QgaGF2ZSB0aW1lIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGRvIHRoaXMgKG9yIGlmIGl0J3MKKyAgICAgICAgLy8gZXZlbiByZWFsbHkgYSBnb29kIGlkZWEpLiAgTGV0J3MgY29uc2lkZXIgdGhhdCBhIGZ1dHVyZS4gIC0tcnRnIDEvMjcvOTgKKyAgICAgICAgU2ltcGxlVGltZVpvbmUgdHogPSBuZXcgU2ltcGxlVGltZVpvbmUoLTUgKiBtaWxsaXNQZXJIb3VyLCAiZHN0U2F2aW5nc1Rlc3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5NQVJDSCwgMSwgMCwgMCwgQ2FsZW5kYXIuU0VQVEVNQkVSLCAxLCAwLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSgwLjUgKiBtaWxsaXNQZXJIb3VyKSk7CisKKyAgICAgICAgaWYgKHR6LmdldFJhd09mZnNldCgpICE9IC01ICogbWlsbGlzUGVySG91cikKKyAgICAgICAgICAgIGVycmxuKCJHb3QgYmFjayBhIHJhdyBvZmZzZXQgb2YgIiArICh0ei5nZXRSYXdPZmZzZXQoKSAvIG1pbGxpc1BlckhvdXIpICsKKyAgICAgICAgICAgICAgICAgICIgaG91cnMgaW5zdGVhZCBvZiAtNSBob3Vycy4iKTsKKyAgICAgICAgaWYgKCF0ei51c2VEYXlsaWdodFRpbWUoKSkKKyAgICAgICAgICAgIGVycmxuKCJUZXN0IHRpbWUgem9uZSBzaG91bGQgdXNlIERTVCBidXQgY2xhaW1zIGl0IGRvZXNuJ3QuIik7CisgICAgICAgIGlmICh0ei5nZXREU1RTYXZpbmdzKCkgIT0gMC41ICogbWlsbGlzUGVySG91cikKKyAgICAgICAgICAgIGVycmxuKCJTZXQgRFNUIG9mZnNldCB0byAwLjUgaG91ciwgYnV0IGdvdCBiYWNrICIgKyAodHouZ2V0RFNUU2F2aW5ncygpIC8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlsbGlzUGVySG91cikgKyAiIGhvdXJzIGluc3RlYWQuIik7CisKKyAgICAgICAgaW50IG9mZnNldCA9IHR6LmdldE9mZnNldChHcmVnb3JpYW5DYWxlbmRhci5BRCwgMTk5OCwgQ2FsZW5kYXIuSkFOVUFSWSwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5USFVSU0RBWSwgMTAgKiBtaWxsaXNQZXJIb3VyKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSAtNSAqIG1pbGxpc1BlckhvdXIpCisgICAgICAgICAgICBlcnJsbigiVGhlIG9mZnNldCBmb3IgMTAgQU0sIDEvMS85OCBzaG91bGQgaGF2ZSBiZWVuIC01IGhvdXJzLCBidXQgd2UgZ290ICIKKyAgICAgICAgICAgICAgICAgICsgKG9mZnNldCAvIG1pbGxpc1BlckhvdXIpICsgIiBob3Vycy4iKTsKKworICAgICAgICBvZmZzZXQgPSB0ei5nZXRPZmZzZXQoR3JlZ29yaWFuQ2FsZW5kYXIuQUQsIDE5OTgsIENhbGVuZGFyLkpVTkUsIDEsIENhbGVuZGFyLk1PTkRBWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwICogbWlsbGlzUGVySG91cik7CisgICAgICAgIGlmIChvZmZzZXQgIT0gLTQuNSAqIG1pbGxpc1BlckhvdXIpCisgICAgICAgICAgICBlcnJsbigiVGhlIG9mZnNldCBmb3IgMTAgQU0sIDYvMS85OCBzaG91bGQgaGF2ZSBiZWVuIC00LjUgaG91cnMsIGJ1dCB3ZSBnb3QgIgorICAgICAgICAgICAgICAgICAgKyAob2Zmc2V0IC8gbWlsbGlzUGVySG91cikgKyAiIGhvdXJzLiIpOworCisgICAgICAgIHR6LnNldERTVFNhdmluZ3MobWlsbGlzUGVySG91cik7CisgICAgICAgIG9mZnNldCA9IHR6LmdldE9mZnNldChHcmVnb3JpYW5DYWxlbmRhci5BRCwgMTk5OCwgQ2FsZW5kYXIuSkFOVUFSWSwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLlRIVVJTREFZLCAxMCAqIG1pbGxpc1BlckhvdXIpOworICAgICAgICBpZiAob2Zmc2V0ICE9IC01ICogbWlsbGlzUGVySG91cikKKyAgICAgICAgICAgIGVycmxuKCJUaGUgb2Zmc2V0IGZvciAxMCBBTSwgMS8xLzk4IHNob3VsZCBoYXZlIGJlZW4gLTUgaG91cnMsIGJ1dCB3ZSBnb3QgIgorICAgICAgICAgICAgICAgICAgKyAob2Zmc2V0IC8gbWlsbGlzUGVySG91cikgKyAiIGhvdXJzLiIpOworCisgICAgICAgIG9mZnNldCA9IHR6LmdldE9mZnNldChHcmVnb3JpYW5DYWxlbmRhci5BRCwgMTk5OCwgQ2FsZW5kYXIuSlVORSwgMSwgQ2FsZW5kYXIuTU9OREFZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAgKiBtaWxsaXNQZXJIb3VyKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSAtNCAqIG1pbGxpc1BlckhvdXIpCisgICAgICAgICAgICBlcnJsbigiVGhlIG9mZnNldCBmb3IgMTAgQU0sIDYvMS85OCAod2l0aCBhIDEtaG91ciBEU1Qgb2Zmc2V0KSBzaG91bGQgaGF2ZSBiZWVuIC00IGhvdXJzLCBidXQgd2UgZ290ICIKKyAgICAgICAgICAgICAgICAgICsgKG9mZnNldCAvIG1pbGxpc1BlckhvdXIpICsgIiBob3Vycy4iKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBCdWcgNDEwNzU3MAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RBbHRlcm5hdGVSdWxlcygpIHsKKyAgICAgICAgLy8gTGlrZSBUZXN0RFNUU2F2aW5ncywgdGhpcyB0ZXN0IHNob3VsZCBwcm9iYWJseSBiZSBpbnRlZ3JhdGVkIHNvbWVob3cgd2l0aCB0aGUgbWFpbgorICAgICAgICAvLyB0ZXN0IGF0IHRoZSB0b3Agb2YgdGhpcyBjbGFzcywgYnV0IEkgZGlkbid0IGhhdmUgdGltZSB0byBmaWd1cmUgb3V0IGhvdyB0byBkbyB0aGF0LgorICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAtLXJ0ZyAxLzI4Lzk4CisKKyAgICAgICAgU2ltcGxlVGltZVpvbmUgdHogPSBuZXcgU2ltcGxlVGltZVpvbmUoLTUgKiBtaWxsaXNQZXJIb3VyLCAiYWx0ZXJuYXRlUnVsZVRlc3QiKTsKKworICAgICAgICAvLyB0ZXN0IHRoZSBkYXktb2YtbW9udGggQVBJCisgICAgICAgIHR6LnNldFN0YXJ0UnVsZShDYWxlbmRhci5NQVJDSCwgMTAsIDEyICogbWlsbGlzUGVySG91cik7CisgICAgICAgIHR6LnNldEVuZFJ1bGUoQ2FsZW5kYXIuT0NUT0JFUiwgMjAsIDEyICogbWlsbGlzUGVySG91cik7CisKKyAgICAgICAgaW50IG9mZnNldCA9IHR6LmdldE9mZnNldChHcmVnb3JpYW5DYWxlbmRhci5BRCwgMTk5OCwgQ2FsZW5kYXIuTUFSQ0gsIDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuVEhVUlNEQVksIDEwICogbWlsbGlzUGVySG91cik7CisgICAgICAgIGlmIChvZmZzZXQgIT0gLTUgKiBtaWxsaXNQZXJIb3VyKQorICAgICAgICAgICAgZXJybG4oIlRoZSBvZmZzZXQgZm9yIDEwQU0sIDMvNS85OCBzaG91bGQgaGF2ZSBiZWVuIC01IGhvdXJzLCBidXQgd2UgZ290ICIKKyAgICAgICAgICAgICAgICAgICsgKG9mZnNldCAvIG1pbGxpc1BlckhvdXIpICsgIiBob3Vycy4iKTsKKworICAgICAgICBvZmZzZXQgPSB0ei5nZXRPZmZzZXQoR3JlZ29yaWFuQ2FsZW5kYXIuQUQsIDE5OTgsIENhbGVuZGFyLk1BUkNILCAxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLlNVTkRBWSwgMTAgKiBtaWxsaXNQZXJIb3VyKTsKKyAgICAgICAgaWYgKG9mZnNldCAhPSAtNCAqIG1pbGxpc1BlckhvdXIpCisgICAgICAgICAgICBlcnJsbigiVGhlIG9mZnNldCBmb3IgMTBBTSwgMy8xNS85OCBzaG91bGQgaGF2ZSBiZWVuIC00IGhvdXJzLCBidXQgd2UgZ290ICIKKyAgICAgICAgICAgICAgICAgICsgKG9mZnNldCAvIG1pbGxpc1BlckhvdXIpICsgIiBob3Vycy4iKTsKKworICAgICAgICBvZmZzZXQgPSB0ei5nZXRPZmZzZXQoR3JlZ29yaWFuQ2FsZW5kYXIuQUQsIDE5OTgsIENhbGVuZGFyLk9DVE9CRVIsIDE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuVEhVUlNEQVksIDEwICogbWlsbGlzUGVySG91cik7CisgICAgICAgIGlmIChvZmZzZXQgIT0gLTQgKiBtaWxsaXNQZXJIb3VyKQorICAgICAgICAgICAgZXJybG4oIlRoZSBvZmZzZXQgZm9yIDEwQU0sIDEwLzE1Lzk4IHNob3VsZCBoYXZlIGJlZW4gLTQgaG91cnMsIGJ1dCB3ZSBnb3QgIgorICAgICAgICAgICAgICAgICAgKyAob2Zmc2V0IC8gbWlsbGlzUGVySG91cikgKyAiIGhvdXJzLiIpOworCisgICAgICAgIG9mZnNldCA9IHR6LmdldE9mZnNldChHcmVnb3JpYW5DYWxlbmRhci5BRCwgMTk5OCwgQ2FsZW5kYXIuT0NUT0JFUiwgMjUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5TVU5EQVksIDEwICogbWlsbGlzUGVySG91cik7CisgICAgICAgIGlmIChvZmZzZXQgIT0gLTUgKiBtaWxsaXNQZXJIb3VyKQorICAgICAgICAgICAgZXJybG4oIlRoZSBvZmZzZXQgZm9yIDEwQU0sIDEwLzI1Lzk4IHNob3VsZCBoYXZlIGJlZW4gLTUgaG91cnMsIGJ1dCB3ZSBnb3QgIgorICAgICAgICAgICAgICAgICAgKyAob2Zmc2V0IC8gbWlsbGlzUGVySG91cikgKyAiIGhvdXJzLiIpOworCisgICAgICAgIC8vIHRlc3QgdGhlIGRheS1vZi13ZWVrLWFmdGVyLWRheS1pbi1tb250aCBBUEkKKyAgICAgICAgdHouc2V0U3RhcnRSdWxlKENhbGVuZGFyLk1BUkNILCAxMCwgQ2FsZW5kYXIuRlJJREFZLCAxMiAqIG1pbGxpc1BlckhvdXIsIHRydWUpOworICAgICAgICB0ei5zZXRFbmRSdWxlKENhbGVuZGFyLk9DVE9CRVIsIDIwLCBDYWxlbmRhci5GUklEQVksIDEyICogbWlsbGlzUGVySG91ciwgZmFsc2UpOworCisgICAgICAgIG9mZnNldCA9IHR6LmdldE9mZnNldChHcmVnb3JpYW5DYWxlbmRhci5BRCwgMTk5OCwgQ2FsZW5kYXIuTUFSQ0gsIDExLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuV0VETkVTREFZLCAxMCAqIG1pbGxpc1BlckhvdXIpOworICAgICAgICBpZiAob2Zmc2V0ICE9IC01ICogbWlsbGlzUGVySG91cikKKyAgICAgICAgICAgIGVycmxuKCJUaGUgb2Zmc2V0IGZvciAxMEFNLCAzLzExLzk4IHNob3VsZCBoYXZlIGJlZW4gLTUgaG91cnMsIGJ1dCB3ZSBnb3QgIgorICAgICAgICAgICAgICAgICAgKyAob2Zmc2V0IC8gbWlsbGlzUGVySG91cikgKyAiIGhvdXJzLiIpOworCisgICAgICAgIG9mZnNldCA9IHR6LmdldE9mZnNldChHcmVnb3JpYW5DYWxlbmRhci5BRCwgMTk5OCwgQ2FsZW5kYXIuTUFSQ0gsIDE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuU0FUVVJEQVksIDEwICogbWlsbGlzUGVySG91cik7CisgICAgICAgIGlmIChvZmZzZXQgIT0gLTQgKiBtaWxsaXNQZXJIb3VyKQorICAgICAgICAgICAgZXJybG4oIlRoZSBvZmZzZXQgZm9yIDEwQU0sIDMvMTQvOTggc2hvdWxkIGhhdmUgYmVlbiAtNCBob3VycywgYnV0IHdlIGdvdCAiCisgICAgICAgICAgICAgICAgICArIChvZmZzZXQgLyBtaWxsaXNQZXJIb3VyKSArICIgaG91cnMuIik7CisKKyAgICAgICAgb2Zmc2V0ID0gdHouZ2V0T2Zmc2V0KEdyZWdvcmlhbkNhbGVuZGFyLkFELCAxOTk4LCBDYWxlbmRhci5PQ1RPQkVSLCAxNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLlRIVVJTREFZLCAxMCAqIG1pbGxpc1BlckhvdXIpOworICAgICAgICBpZiAob2Zmc2V0ICE9IC00ICogbWlsbGlzUGVySG91cikKKyAgICAgICAgICAgIGVycmxuKCJUaGUgb2Zmc2V0IGZvciAxMEFNLCAxMC8xNS85OCBzaG91bGQgaGF2ZSBiZWVuIC00IGhvdXJzLCBidXQgd2UgZ290ICIKKyAgICAgICAgICAgICAgICAgICsgKG9mZnNldCAvIG1pbGxpc1BlckhvdXIpICsgIiBob3Vycy4iKTsKKworICAgICAgICBvZmZzZXQgPSB0ei5nZXRPZmZzZXQoR3JlZ29yaWFuQ2FsZW5kYXIuQUQsIDE5OTgsIENhbGVuZGFyLk9DVE9CRVIsIDE3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIuU0FUVVJEQVksIDEwICogbWlsbGlzUGVySG91cik7CisgICAgICAgIGlmIChvZmZzZXQgIT0gLTUgKiBtaWxsaXNQZXJIb3VyKQorICAgICAgICAgICAgZXJybG4oIlRoZSBvZmZzZXQgZm9yIDEwQU0sIDEwLzE3Lzk4IHNob3VsZCBoYXZlIGJlZW4gLTUgaG91cnMsIGJ1dCB3ZSBnb3QgIgorICAgICAgICAgICAgICAgICAgKyAob2Zmc2V0IC8gbWlsbGlzUGVySG91cikgKyAiIGhvdXJzLiIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RFcXVpdmFsZW5jeUdyb3VwcygpIHsKKyAgICAgICAgU3RyaW5nIGlkID0gIkFtZXJpY2EvTG9zX0FuZ2VsZXMiOworICAgICAgICBpbnQgbiA9IFRpbWVab25lLmNvdW50RXF1aXZhbGVudElEcyhpZCk7CisgICAgICAgIGlmIChuIDwgMikgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IGNvdW50RXF1aXZhbGVudElEcygiICsgaWQgKyAiKSByZXR1cm5lZCAiICsgbiArCisgICAgICAgICAgICAgICAgICAiLCBleHBlY3RlZCA+PSAyIik7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPG47ICsraSkgeworICAgICAgICAgICAgU3RyaW5nIHMgPSBUaW1lWm9uZS5nZXRFcXVpdmFsZW50SUQoaWQsIGkpOworICAgICAgICAgICAgaWYgKHMubGVuZ3RoKCkgPT0gMCkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBnZXRFcXVpdmFsZW50SUQoIiArIGlkICsgIiwgIiArIGkgKworICAgICAgICAgICAgICAgICAgICAgICIpIHJldHVybmVkIFwiIiArIHMgKyAiXCIsIGV4cGVjdGVkIHZhbGlkIElEIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZ2xuKCIiICsgaSArICI6IiArIHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdENvdW50cmllcygpIHsKKyAgICAgICAgLy8gTWFrZSBzdXJlIEFtZXJpY2EvTG9zX0FuZ2VsZXMgaXMgaW4gdGhlICJVUyIgZ3JvdXAsIGFuZAorICAgICAgICAvLyBBc2lhL1Rva3lvIGlzbid0LiAgVmljZSB2ZXJzYSBmb3IgdGhlICJKUCIgZ3JvdXAuCisKKyAgICAgICAgU3RyaW5nW10gcyA9IFRpbWVab25lLmdldEF2YWlsYWJsZUlEcygiVVMiKTsKKyAgICAgICAgYm9vbGVhbiBsYSA9IGZhbHNlLCB0b2t5byA9IGZhbHNlOworICAgICAgICBTdHJpbmcgbGFab25lID0gIkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCB0b2t5b1pvbmUgPSAiQXNpYS9Ub2t5byI7CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChzW2ldLmVxdWFscyhsYVpvbmUpKSB7CisgICAgICAgICAgICAgICAgbGEgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNbaV0uZXF1YWxzKHRva3lvWm9uZSkpIHsKKyAgICAgICAgICAgICAgICB0b2t5byA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFsYSB8fCB0b2t5bykgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6ICIgKyBsYVpvbmUgKyAiIGluIFVTID0gIiArIGxhKTsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgdG9reW9ab25lICsgIiBpbiBVUyA9ICIgKyB0b2t5byk7CisgICAgICAgIH0KKworICAgICAgICBzID0gVGltZVpvbmUuZ2V0QXZhaWxhYmxlSURzKCJKUCIpOworICAgICAgICBsYSA9IGZhbHNlOyB0b2t5byA9IGZhbHNlOworCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoc1tpXS5lcXVhbHMobGFab25lKSkgeworICAgICAgICAgICAgICAgIGxhID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzW2ldLmVxdWFscyh0b2t5b1pvbmUpKSB7CisgICAgICAgICAgICAgICAgdG9reW8gPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChsYSB8fCAhdG9reW8pIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgbGFab25lICsgIiBpbiBKUCA9ICIgKyBsYSk7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIHRva3lvWm9uZSArICIgaW4gSlAgPSAiICsgdG9reW8pOworICAgICAgICB9CisgICAgfQorfQorCisvL2VvZgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGVzdC90cmFuc2xpdC9Db21wb3VuZFRyYW5zbGl0ZXJhdG9yVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vdGVzdC90cmFuc2xpdC9Db21wb3VuZFRyYW5zbGl0ZXJhdG9yVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmYzOTZiMjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXN0L3RyYW5zbGl0L0NvbXBvdW5kVHJhbnNsaXRlcmF0b3JUZXN0LmphdmEKQEAgLTAsMCArMSwyODIgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3Rlc3QvdHJhbnNsaXQvQXR0aWMvQ29tcG91bmRUcmFuc2xpdGVyYXRvclRlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8xMC8wNiAyMTo0MjoyMiAkIAorICogJFJldmlzaW9uOiAxLjEgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udGVzdC50cmFuc2xpdDsKK2ltcG9ydCBjb20uaWJtLnRleHQuKjsKK2ltcG9ydCBjb20uaWJtLnRlc3QuKjsKK2ltcG9ydCBjb20uaWJtLnV0aWwuVXRpbGl0eTsKK2ltcG9ydCBqYXZhLnRleHQuKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworCisvKioKKyAqIEB0ZXN0CisgKiBAc3VtbWFyeSBHZW5lcmFsIHRlc3Qgb2YgQ29tcG91bmRUcmFuc2xpdGVyYXRvcgorICovCitwdWJsaWMgY2xhc3MgQ29tcG91bmRUcmFuc2xpdGVyYXRvclRlc3QgZXh0ZW5kcyBUZXN0Rm13ayB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IENvbXBvdW5kVHJhbnNsaXRlcmF0b3JUZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RDb25zdHJ1Y3Rpb24oKXsKKyAgICAgICAgbG9nbG4oIlRlc3RpbmcgdGhlIGNvbnN0cnVjdGlvbiBvZiB0aGUgY29tcG91bmQgVHJhbnNsaXRlcmF0b3IiKTsKKyAgICAgICAgU3RyaW5nIG5hbWVzW109eyJHcmVlay1MYXRpbiIsICJMYXRpbi1EZXZhbmFnYXJpIiwgIkRldmFuYWdhcmktTGF0aW4iLCAiTGF0aW4tR3JlZWsifTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdDE9bnVsbDsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdDI9bnVsbDsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdDM9bnVsbDsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdDQ9bnVsbDsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgdDE9VHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UobmFtZXNbMF0pOworICAgICAgICAgICAgdDI9VHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UobmFtZXNbMV0pOworICAgICAgICAgICAgdDM9VHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UobmFtZXNbMl0pOworICAgICAgICAgICAgdDQ9VHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UobmFtZXNbM10pOworICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogVHJhbnNsaXRlcmF0b3IgY29uc3RydWN0aW9uIGZhaWxlZCIpOworICAgICAgICAgICAgdGhyb3cgZXg7CisgICAgICAgIH0KKyAgCisgICAgICAgIFRyYW5zbGl0ZXJhdG9yW10gdHJhbnNhcnJheTE9e3QxfTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3JbXSB0cmFuc2FycmF5Mj17dDEsIHQ0fTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3JbXSB0cmFuc2FycmF5Mz17dDQsIHQxLCB0Mn07CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yW10gdHJhbnNhcnJheTQ9e3QxLCB0MiwgdDMsIHQ0fTsKKworICAgICAgICBUcmFuc2xpdGVyYXRvcltdW10gdHJhbnNhcnJheT17dHJhbnNhcnJheTEsIHRyYW5zYXJyYXkyLCB0cmFuc2FycmF5MywgdHJhbnNhcnJheTR9OyAKKyAgICAgICAgZmluYWwgU3RyaW5nIElEc1tdPXsKKyAgICAgICAgICAgIG5hbWVzWzBdLCAKKyAgICAgICAgICAgIG5hbWVzWzBdKyI7IituYW1lc1szXSwgCisgICAgICAgICAgICBuYW1lc1szXSsiOyIrbmFtZXNbMV0rIjsiK25hbWVzWzJdLCAKKyAgICAgICAgICAgIG5hbWVzWzBdKyI7IituYW1lc1sxXSsiOyIrbmFtZXNbMl0rIjsiK25hbWVzWzNdIAorICAgICAgICB9OworCisgICAKKyAgICAgICAgZm9yKGludCBpPTA7IGk8NDsgaSsrKXsKKyAgICAgICAgICAgIHRyeXsKKyAgICAgICAgICAgICAgICBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yIGNwZHRyYW5zPW5ldyBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yKElEc1tpXSk7CisgICAgICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4MSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBjb25zdHJ1Y3Rpb24gdXNpbmcgQ29tcG91bmRUcmFuc2xpdGVyYXRvcihTdHJpbmcgSUQpIGZhaWxlZCBmb3IgIiArIElEc1tpXSk7CisgICAgICAgICAgICAgICAgdGhyb3cgZXgxOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0cnl7CisgICAgICAgICAgICAgICAgQ29tcG91bmRUcmFuc2xpdGVyYXRvciBjcGR0cmFucz1uZXcgQ29tcG91bmRUcmFuc2xpdGVyYXRvcihJRHNbaV0sIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQpOworICAgICAgICAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleDIpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogY29uc3RydWN0aW9uIHVzaW5nIENvbXBvdW5kVHJhbnNsaXRlcmF0b3IoU3RyaW5nIElELCBpbnQgZGlyZWN0aW9uPUZPUldBUkQpIGZhaWxlZCBmb3IgIiArIElEc1tpXSk7CisgICAgICAgICAgICAgICAgdGhyb3cgZXgyOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0cnl7CisgICAgICAgICAgICAgICAgQ29tcG91bmRUcmFuc2xpdGVyYXRvciBjcGR0cmFucz1uZXcgQ29tcG91bmRUcmFuc2xpdGVyYXRvcihJRHNbaV0sIFRyYW5zbGl0ZXJhdG9yLlJFVkVSU0UpOworICAgICAgICAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleDMpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogY29uc3RydWN0aW9uIHVzaW5nIENvbXBvdW5kVHJhbnNsaXRlcmF0b3IoU3RyaW5nIElELCBpbnQgZGlyZWN0aW9uPVJFVkVSU0UpIGZhaWxlZCBmb3IgIiArIElEc1tpXSk7CisgICAgICAgICAgICAgICAgdGhyb3cgZXgzOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0cnl7CisgICAgICAgICAgICAgICAgQ29tcG91bmRUcmFuc2xpdGVyYXRvciBjcGR0cmFucz1uZXcgQ29tcG91bmRUcmFuc2xpdGVyYXRvcihJRHNbaV0sIFRyYW5zbGl0ZXJhdG9yLkZPUldBUkQsIG51bGwpOworICAgICAgICAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleDQpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogY29uc3RydWN0aW9uIHVzaW5nIENvbXBvdW5kVHJhbnNsaXRlcmF0b3IoU3RyaW5nIElELCBpbnQgZGlyZWN0aW9uPUZPUldBUkQsIiArCisgICAgICAgICAgICAgICAgICAgICAgICAiVW5pY29kZUZpbHRlciBhZG9wdGVkRmlsdGVyPTApIGZhaWxlZCBmb3IgIiArIElEc1tpXSk7CisgICAgICAgICAgICAgICAgdGhyb3cgZXg0OworICAgICAgICAgICAgfQorICAKKyAgICAgICAKKyAgICAgICAgICAgIHRyeXsKKyAgICAgICAgICAgICAgICBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yIGNwZHRyYW5zMj1uZXcgQ29tcG91bmRUcmFuc2xpdGVyYXRvcih0cmFuc2FycmF5W2ldLCBudWxsKTsKKyAgICAgICAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXg1KSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IENvbnN0cnVjdGlvbiB1c2luZyBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yKFRyYW5zbGl0ZXJhdG9yIHRyYW5zbGl0ZXJhdG9yc1tdLCIgKworICAgICAgICAgICAgICAgICAgICAgICAiVW5pY29kZUZpbHRlciBhZG9wdGVkRmlsdGVyID0gMCkgIGZhaWxlZCIpOworICAgICAgICAgICAgICAgIHRocm93IGV4NTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgCisgICAgICAgIH0KKyAgIAorICAgIH0KKyAKKyAgICBwdWJsaWMgdm9pZCBUZXN0R2V0VHJhbnNsaXRlcmF0b3IoKXsKKyAgICAgICAgbG9nbG4oIlRlc3RpbmcgdGhlIGdldFRyYW5zbGl0ZXJhdG9yKCkgQVBJIG9mIENvbXBvdW5kVHJhbnNsaXRlcmF0b3IiKTsKKyAgICAgICAgU3RyaW5nIElEPSJMYXRpbi1HcmVlaztHcmVlay1MYXRpbjtMYXRpbi1EZXZhbmFnYXJpO0RldmFuYWdhcmktTGF0aW47TGF0aW4tQ3lyaWxsaWM7Q3lyaWxsaWMtTGF0aW47VW5pY29kZS1IZXg7SGV4LVVuaWNvZGUiOworICAgICAgICBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yIGN0MT1udWxsOworICAgICAgICB0cnl7CisgICAgICAgICAgICBjdDE9bmV3IENvbXBvdW5kVHJhbnNsaXRlcmF0b3IoSUQpOworICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSkgeworICAgICAgICAgICAgZXJybG4oIkNvbXBvdW5kVHJhbnNsaXRlcmF0b3IgY29uc3RydWN0aW9uIGZhaWxlZCBmb3IgSUQ9IiArIElEKTsKKyAgICAgICAgICAgIHRocm93IGlhZTsKKyAgICAgICAgIH0KKyAgICAgICAgaW50IGNvdW50PWN0MS5nZXRDb3VudCgpOworICAgICAgICBTdHJpbmcgYXJyYXlbXT1zcGxpdChJRCwgJzsnKTsKKyAgICAgICAgaWYgKGNvdW50ICE9IGFycmF5Lmxlbmd0aCkgeworICAgICAgICAgICAgZXJybG4oIkVycm9yOiBnZXRDb3VudCgpIGZhaWxlZC4gRXhwZWN0ZWQ6IiArIGFycmF5Lmxlbmd0aCArICIgZ290OiIgKyBjb3VudCk7CisgICAgICAgIH0KKyAgICAgICAgZm9yKGludCBpPTA7IGkgPCBjb3VudDsgaSsrKXsKKyAgICAgICAgICAgIFN0cmluZyBjaGlsZD0gY3QxLmdldFRyYW5zbGl0ZXJhdG9yKGkpLmdldElEKCk7CisgICAgICAgICAgICBpZighY2hpbGQuZXF1YWxzKGFycmF5W2ldKSl7CisgICAgICAgICAgICAgICAgZXJybG4oIkVycm9yIGdldFRyYW5zbGl0ZXJhdG9yKCkgZmFpbGVkOiBFeHBlY3RlZC0+IiArIGFycmF5W2ldICsgIiBHb3QtPiIgKyBjaGlsZCk7CisgICAgICAgICAgICB9ZWxzZSB7CisgICAgICAgICAgICAgICAgbG9nbG4oIk9LOiBnZXRUcmFuc2xpdGVyYXRvcigpIHBhc3NlZDogRXhwZWN0ZWQtPiIgKyBhcnJheVtpXSArICIgR290LT4iICsgY2hpbGQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgCisgICAgfQorIAorICAgICAgIAorICAgIHB1YmxpYyB2b2lkIFRlc3RUcmFuc2xpdGVyYXRlKCl7CisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIHRoZSBoYW5kbGVUcmFuc2xpdGVyYXRlKCkgQVBJIG9mIENvbXBvdW5kVHJhbnNsaXRlcmF0b3IiKTsKKyAgICAgICAgQ29tcG91bmRUcmFuc2xpdGVyYXRvciBjdDE9bnVsbDsKKyAgICAgICAgdHJ5eworICAgICAgICAgICAgY3QxPW5ldyBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yKCJVbmljb2RlLUhleDtIZXgtVW5pY29kZSIpOworICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSl7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogY29uc3RydWN0aW9uIHVzaW5nIENvbXBvdW5kVHJhbnNsaXRlcmF0b3IoU3RyaW5nIElEKSBmYWlsZWQgZm9yICIgKyAiVW5pY29kZS1IZXg7SGV4LVVuaWNvZGUiKTsKKyAgICAgICAgICAgIHRocm93IGlhZTsKKyAgICAgICAgfQorICAgIAorICAgICAgICBTdHJpbmcgcz0iYWJjYWJjIjsKKyAgICAgICAgZXhwZWN0KGN0MSwgcywgcyk7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uIGluZGV4ID0gbmV3IFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uKCk7CisgICAgICAgIFJlcGxhY2VhYmxlU3RyaW5nIHJzb3VyY2UyPW5ldyBSZXBsYWNlYWJsZVN0cmluZyhzKTsKKyAgICAgICAgU3RyaW5nIGV4cGVjdGVkUmVzdWx0PXM7CisgICAgICAgIGN0MS50cmFuc2xpdGVyYXRlKHJzb3VyY2UyLCBpbmRleCk7CisgICAgICAgIGN0MS5maW5pc2hUcmFuc2xpdGVyYXRpb24ocnNvdXJjZTIsIGluZGV4KTsKKyAgICAgICAgU3RyaW5nIHJlc3VsdD1yc291cmNlMi50b1N0cmluZygpOworICAgICAgICBleHBlY3RBdXgoY3QxLmdldElEKCkgKyAiOlJlcGxhY2VhYmxlU3RyaW5nLCBpbmRleCgwLDAsMCwwKSIsIHMgKyAiLT4iICsgcnNvdXJjZTIsIHJlc3VsdC5lcXVhbHMoZXhwZWN0ZWRSZXN1bHQpLCBleHBlY3RlZFJlc3VsdCk7CisgICAgIAorICAgICAgICBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbiBpbmRleDIgPSBuZXcgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24oMSwzLDIsMyk7CisgICAgICAgIFJlcGxhY2VhYmxlU3RyaW5nIHJzb3VyY2UzPW5ldyBSZXBsYWNlYWJsZVN0cmluZyhzKTsKKyAgICAgICAgY3QxLnRyYW5zbGl0ZXJhdGUocnNvdXJjZTMsIGluZGV4Mik7IAorICAgICAgICBjdDEuZmluaXNoVHJhbnNsaXRlcmF0aW9uKHJzb3VyY2UzLCBpbmRleDIpOworICAgICAgICByZXN1bHQ9cnNvdXJjZTMudG9TdHJpbmcoKTsKKyAgICAgICAgZXhwZWN0QXV4KGN0MS5nZXRJRCgpICsgIjpTdHJpbmcsIGluZGV4MigxLDIsMiwzKSIsIHMgKyAiLT4iICsgcnNvdXJjZTMsIHJlc3VsdC5lcXVhbHMoZXhwZWN0ZWRSZXN1bHQpLCBleHBlY3RlZFJlc3VsdCk7CisKKyAgICAgICAKKyAgICAgICAgU3RyaW5nIERhdGFbXT17CisgICAgICAgICAgICAgLy9JRCwgaW5wdXQgc3RyaW5nLCB0cmFuc2xpdGVyYXRlZCBzdHJpbmcKKyAgICAgICAgICAgICAiVW5pY29kZS1IZXg7SGV4LVVuaWNvZGU7VW5pY29kZS1IZXgiLCAgICAgImhlbGxvIiwgICJcXHUwMDY4XFx1MDA2NVxcdTAwNkNcXHUwMDZDXFx1MDA2RiIsIAorICAgICAgICAgICAgICJVbmljb2RlLUhleDtIZXgtVW5pY29kZSIsICAgICAgICAgICAgICAgICAiaGVsbG8hIEhvdyBhcmUgeW91PyIsICAiaGVsbG8hIEhvdyBhcmUgeW91PyIsCisgICAgICAgICAgICAgIkRldmFuYWdhcmktTGF0aW47TGF0aW4tRGV2YW5hZ2FyaSIsICAgICAgICJcdTA5MkRcdTA5NDgnXHUwOTMwJ1x1MDkzNSIsICAiXHUwOTJEXHUwOTQ4XHUwOTMwXHUwOTM1IiwgLy8gcXVvdGVzIGxvc3QKKyAgICAgICAgICAgICAiTGF0aW4tQ3lyaWxsaWM7Q3lyaWxsaWMtTGF0aW4iLCAgICAgICAgICAgImEnYidrJ2QnZSdmJ2cnaCdpJ2onU2hjaCdzaGNoJ3poJ2giLCAiYWJrZGVmZ2hpalNoY2hzaGNoemhoIiwKKyAgICAgICAgICAgICAiTGF0aW4tR3JlZWs7R3JlZWstTGF0aW4iLCAgICAgICAgICAgICAgICAgIkFCR2FiZ0FLTE1OIiwgIkFCR2FiZ0FLTE1OIiwKKyAgICAgICAgICAgICAiTGF0aW4tQXJhYmljO0FyYWJpYy1MYXRpbiIsICAgICAgICAgICAgICAgIkFkJ3InYSdiJ2knaydkaCdkZCdnaCIsICJBZHJhYmlrZGhkZGdoIiwKKyAgICAgICAgICAgICAiSGlyYWdhbmEtS2F0YWthbmEiLCAgICAgICAgICAgICAgICAgICAgICAgIlx1MzA0MVx1MzA4Zlx1MzA5OVx1MzA2ZVx1MzA0Ylx1MzA5Mlx1MzA5OSIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHUzMEExXHUzMGY3XHUzMGNlXHUzMGFiXHUzMGZhIiwgIAorICAgICAgICAgICAgICJIaXJhZ2FuYS1LYXRha2FuYTtLYXRha2FuYS1IaXJhZ2FuYSIsICAgICAiXHUzMDQxXHUzMDhmXHUzMDk5XHUzMDZlXHUzMDRiXHUzMDUxIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTMwNDFcdTMwOGZcdTMwOTlcdTMwNmVcdTMwNGJcdTMwNTEiLAorICAgICAgICAgICAgICJLYXRha2FuYS1IaXJhZ2FuYTtIaXJhZ2FuYS1LYXRha2FuYSIsICAgICAiXHUzMEExXHUzMGY3XHUzMGNlXHUzMGY1XHUzMGY2IiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdTMwQTFcdTMwZjdcdTMwY2VcdTMwYWJcdTMwYjEiLCAgCisgICAgICAgICAgICAgIkxhdGluLUthbmE7S2FuYS1MYXRpbiIsICAgICAgICAgICAgICAgICAgICJWQVZJVlVWRVZPaHVaSVpVWk9OSU5VTkFzZXN1emV6dSIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVkFWSVZVVkVWT2h1WklaVVpPTklOVU5Bc2VzdXplenUiLCAgCisgICAgICAgIH07CisgICAgICAgIENvbXBvdW5kVHJhbnNsaXRlcmF0b3IgY3QyPW51bGw7CisgICAgICAgIGZvcihpbnQgaT0wOyBpPERhdGEubGVuZ3RoOyBpKz0zKXsKKyAgICAgICAgICAgIHRyeXsKKyAgICAgICAgICAgICAgICBjdDI9bmV3IENvbXBvdW5kVHJhbnNsaXRlcmF0b3IoRGF0YVtpKzBdKTsKKyAgICAgICAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlMil7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IENvbXBvdW5kVHJhbnNsaXRlcmF0b3IgY29uc3RydWN0aW9uIGZhaWxlZCBmb3IgIiArIERhdGFbaSswXSk7CisgICAgICAgICAgICAgICAgdGhyb3cgaWFlMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgZXhwZWN0KGN0MiwgRGF0YVtpKzFdLCBEYXRhW2krMl0pOworICAgICAgICB9CisgICAKKyAgICB9CisgCisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBTdXBwb3J0IG1ldGhvZHMKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgICAvKioKKyAgICAgKiBTcGxpdHMgYSBzdHJpbmcsCisgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmdbXSBzcGxpdChTdHJpbmcgcywgY2hhciBkaXZpZGVyKSB7CisgICAgICAKKwkvLyBzZWUgaG93IG1hbnkgdGhlcmUgYXJlCisgICAgICAgIGludCBjb3VudCA9IDE7CisJZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyArK2kpIHsKKwkgICBpZiAocy5jaGFyQXQoaSkgPT0gZGl2aWRlcikgKytjb3VudDsKKwl9CisJICAgIAorCS8vIG1ha2UgYW4gYXJyYXkgd2l0aCB0aGVtCisJU3RyaW5nW10gcmVzdWx0ID0gbmV3IFN0cmluZ1tjb3VudF07CisJaW50IGxhc3QgPSAwOworCWludCBjdXJyZW50ID0gMDsKKwlpbnQgaTsKKwlmb3IgKGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgKytpKSB7CisJICAgIGlmIChzLmNoYXJBdChpKSA9PSBkaXZpZGVyKSB7CisJICAgICAgICByZXN1bHRbY3VycmVudCsrXSA9IHMuc3Vic3RyaW5nKGxhc3QsaSk7CisJICAgICAgICBsYXN0ID0gaSsxOworCSAgICB9CisJfQorCXJlc3VsdFtjdXJyZW50KytdID0gcy5zdWJzdHJpbmcobGFzdCxpKTsKKwlyZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBleHBlY3QoQ29tcG91bmRUcmFuc2xpdGVyYXRvciB0LCBTdHJpbmcgc291cmNlLCBTdHJpbmcgZXhwZWN0ZWRSZXN1bHQpIHsKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9IHQudHJhbnNsaXRlcmF0ZShzb3VyY2UpOworICAgICAgICBleHBlY3RBdXgodC5nZXRJRCgpICsgIjpTdHJpbmciLCBzb3VyY2UsIHJlc3VsdCwgZXhwZWN0ZWRSZXN1bHQpOworCisgICAgICAgIFJlcGxhY2VhYmxlU3RyaW5nIHJzb3VyY2UgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcoc291cmNlKTsKKyAgICAgICAgdC50cmFuc2xpdGVyYXRlKHJzb3VyY2UpOworICAgICAgICByZXN1bHQgPSByc291cmNlLnRvU3RyaW5nKCk7CisgICAgICAgIGV4cGVjdEF1eCh0LmdldElEKCkgKyAiOlJlcGxhY2VhYmxlIiwgc291cmNlLCByZXN1bHQsIGV4cGVjdGVkUmVzdWx0KTsKKworICAgICAgICAvLyBUZXN0IGtleWJvYXJkIChpbmNyZW1lbnRhbCkgdHJhbnNsaXRlcmF0aW9uIC0tIHRoaXMgcmVzdWx0CisgICAgICAgIC8vIG11c3QgYmUgdGhlIHNhbWUgYWZ0ZXIgd2UgZmluYWxpemUgKHNlZSBiZWxvdykuCisgICAgICAgIHJzb3VyY2UucmVwbGFjZSgwLCByc291cmNlLmxlbmd0aCgpLCAiIik7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uIGluZGV4ID0gbmV3IFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uKCk7CisgICAgICAgIFN0cmluZ0J1ZmZlciBsb2cgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPHNvdXJjZS5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoaSAhPSAwKSB7CisgICAgICAgICAgICAgICAgbG9nLmFwcGVuZCgiICsgIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsb2cuYXBwZW5kKHNvdXJjZS5jaGFyQXQoaSkpLmFwcGVuZCgiIC0+ICIpOworICAgICAgICAgICAgdC50cmFuc2xpdGVyYXRlKHJzb3VyY2UsIGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy52YWx1ZU9mKHNvdXJjZS5jaGFyQXQoaSkpKTsKKyAgICAgICAgICAgIC8vIEFwcGVuZCB0aGUgc3RyaW5nIGJ1ZmZlciB3aXRoIGEgdmVydGljYWwgYmFyICd8JyB3aGVyZQorICAgICAgICAgICAgLy8gdGhlIGNvbW1pdHRlZCBpbmRleCBpcy4KKyAgICAgICAgICAgIFN0cmluZyBzID0gcnNvdXJjZS50b1N0cmluZygpOworICAgICAgICAgICAgbG9nLmFwcGVuZChzLnN1YnN0cmluZygwLCBpbmRleC5zdGFydCkpLgorICAgICAgICAgICAgICAgIGFwcGVuZCgnfCcpLgorICAgICAgICAgICAgICAgIGFwcGVuZChzLnN1YnN0cmluZyhpbmRleC5zdGFydCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBBcyBhIGZpbmFsIHN0ZXAgaW4ga2V5Ym9hcmQgdHJhbnNsaXRlcmF0aW9uLCB3ZSBtdXN0IGNhbGwKKyAgICAgICAgLy8gdHJhbnNsaXRlcmF0ZSB0byBmaW5pc2ggb2ZmIGFueSBwZW5kaW5nIHBhcnRpYWwgbWF0Y2hlcyB0aGF0CisgICAgICAgIC8vIHdlcmUgd2FpdGluZyBmb3IgbW9yZSBpbnB1dC4KKyAgICAgICAgdC5maW5pc2hUcmFuc2xpdGVyYXRpb24ocnNvdXJjZSwgaW5kZXgpOworICAgICAgICByZXN1bHQgPSByc291cmNlLnRvU3RyaW5nKCk7CisgICAgICAgIGxvZy5hcHBlbmQoIiA9PiAiKS5hcHBlbmQocnNvdXJjZS50b1N0cmluZygpKTsKKyAgICAgICAgZXhwZWN0QXV4KHQuZ2V0SUQoKSArICI6S2V5Ym9hcmQiLCBsb2cudG9TdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgcmVzdWx0LmVxdWFscyhleHBlY3RlZFJlc3VsdCksCisgICAgICAgICAgICAgICAgIGV4cGVjdGVkUmVzdWx0KTsKKworICAgIH0KKyAgICBwcml2YXRlIHZvaWQgZXhwZWN0QXV4KFN0cmluZyB0YWcsIFN0cmluZyBzb3VyY2UsCisgICAgICAgICAgICAgICAgICBTdHJpbmcgcmVzdWx0LCBTdHJpbmcgZXhwZWN0ZWRSZXN1bHQpIHsKKyAgICAgICAgZXhwZWN0QXV4KHRhZywgc291cmNlICsgIiAtPiAiICsgcmVzdWx0LAorICAgICAgICAgICAgICAgICByZXN1bHQuZXF1YWxzKGV4cGVjdGVkUmVzdWx0KSwKKyAgICAgICAgICAgICAgICAgZXhwZWN0ZWRSZXN1bHQpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBleHBlY3RBdXgoU3RyaW5nIHRhZywgU3RyaW5nIHN1bW1hcnksIGJvb2xlYW4gcGFzcywgU3RyaW5nIGV4cGVjdGVkUmVzdWx0KSB7CisgICAgICAgIGlmIChwYXNzKSB7CisgICAgICAgICAgICBsb2dsbigiKCIgKyB0YWcgKyAiKSAiICsgVXRpbGl0eS5lc2NhcGUoc3VtbWFyeSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6ICgiICsgdGFnKyAiKSAiCisgICAgICAgICAgICAgICAgKyBVdGlsaXR5LmVzY2FwZShzdW1tYXJ5KQorICAgICAgICAgICAgICAgICsgIiwgZXhwZWN0ZWQgIiArIFV0aWxpdHkuZXNjYXBlKGV4cGVjdGVkUmVzdWx0KSk7CisgICAgICAgIH0KKyAgICB9ICAKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGVzdC90cmFuc2xpdC9IZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvclRlc3QuamF2YSBiL3NyYy9jb20vaWJtL3Rlc3QvdHJhbnNsaXQvSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3JUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMGU0YzQ5MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3QvdHJhbnNsaXQvSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3JUZXN0LmphdmEKQEAgLTAsMCArMSwyNjEgQEAKKworLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGVzdC90cmFuc2xpdC9BdHRpYy9IZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvclRlc3QuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8xMC8wOSAxNjozMjowNyAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udGVzdC50cmFuc2xpdDsKK2ltcG9ydCBjb20uaWJtLnRleHQuKjsKK2ltcG9ydCBjb20uaWJtLnRlc3QuKjsKK2ltcG9ydCBjb20uaWJtLnV0aWwuVXRpbGl0eTsKK2ltcG9ydCBqYXZhLnRleHQuKjsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworCisvKioKKyAqIEB0ZXN0CisgKiBAc3VtbWFyeSBHZW5lcmFsIHRlc3Qgb2YgSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IKKyAqLworcHVibGljIGNsYXNzIEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yVGVzdCBleHRlbmRzIFRlc3RGbXdrIHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3JUZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIC8qKgorICAgICogVXNlZCBieSBUZXN0Q29uc3RydWN0aW9uKCkgYW5kIFRlc3RUcmFuc2xpdGVyYXRlLgorICAgICovCisgICAgVW5pY29kZUZpbHRlciBIZXhGaWx0ZXI9bmV3IFVuaWNvZGVGaWx0ZXIoKSB7CisgICAgICAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zKGNoYXIgYykgeworICAgICAgICAgICAgaWYoYyA9PSAweDAwNjEgfHwgYyA9PSAweDAwNjMgKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICB9CisgICAgfTsKKworICAgIHB1YmxpYyB2b2lkIFRlc3RDb25zdHJ1Y3Rpb24oKXsKKyAgICAgICAgbG9nbG4oIlRlc3RpbmcgdGhlIGNvbnN0cnVjdGlvbiBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcigpIik7CisgICAgICAgIEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yIHRyYW5zMT1uZXcgSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IoKTsKKyAgICAgICAKKworICAgICAgICBsb2dsbigiVGVzdGluZyB0aGUgY29zbnRydWN0aW9uIEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4pIik7CisgICAgICAgIFN0cmluZyBwYXR0ZXJuPSJcXFxcVSswMDAwYWJjIjsKKyAgICAgICAgdHJ5eworICAgICAgICAgICAgdHJhbnMxPW5ldyBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcihwYXR0ZXJuKTsKKyAgICAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleDIpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvciBjb25zdHJ1Y3Rpb24gZmFpbGVkIHdpdGggcGF0dGVybj0iICsgcGF0dGVybiArICIgRXhjZXB0aW9uPSAiICsgZXgyLnRvU3RyaW5nKCkpOworICAgICAgICB9CisKKyAgICAgICAgbG9nbG4oIlRlc3RpbmcgdGhlIGNvc250cnVjdGlvbiBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcihwYXR0ZXJuKSB3aXRoIGlsbGVnYWwgcGF0dGVybiIpOworICAgICAgICBTdHJpbmcgcGF0dGVybjI9IlxcWCsiOworICAgICAgICB0cnl7CisgICAgICAgICAgICB0cmFuczE9bmV3IEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4yKTsKKyAgICAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleDMpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJPSzogY29uc3RydWN0aW9uIHdpdGggSWxsZWdhbCBwYXR0ZXJuIGhhbmRsZWQgY29ycmVjdGx5Iik7CisgICAgICAgIH0gIAorICAgICAgICAKKyAgICAgICAgbG9nbG4oIlRlc3RpbmcgdGhlIGNvbnN0cnVjdGlvbiBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcihwYXR0ZXJuLCBhZG9wdGVkRmlsdGVyPW51bGwpIik7CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHRyYW5zMT1uZXcgSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IocGF0dGVybiwgbnVsbCk7CisgICAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXg0KSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IocGF0dGVybiwgYWRvcHRlZEZpbHRlcj1udWxsKSBjb25zdHJ1Y3Rpb24gZmFpbGVkLiBFeGNlcHRpb249ICIgKyBleDQudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKworICAgICAgICBsb2dsbigiVGVzdGluZyB0aGUgY29uc3RydWN0aW9uIEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4sIGFkb3B0ZWRGaWx0ZXIpIik7CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHRyYW5zMT1uZXcgSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IocGF0dGVybiwgSGV4RmlsdGVyKTsKKyAgICAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleDQpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcihwYXR0ZXJuLCBhZG9wdGVkRmlsdGVyKSBjb25zdHJ1Y3Rpb24gZmFpbGVkLiBFeGNlcHRpb249ICIgKyBleDQudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKworICAgIH0KKyAgICBwdWJsaWMgdm9pZCBUZXN0UGF0dGVybigpeworICAgICAgICBsb2dsbigiVGVzdGluZyB0aGUgYXBwbHlQYXR0ZXJuKCkgYW5kIHRvUGF0dGVybigpIEFQSSBvZiBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvciIpOworICAgICAgICAvKmRlZmF1bHQgdHJhbnNsaXRlcmF0b3IgaGFzIHBhdHRlcm4gXFx1MDAwMCovCisgICAgICAgIEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yIHRyYW5zZGVmYXVsdD1uZXcgSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgU3RyaW5nIGRlZmF1bHRwYXR0ZXJuPXRyYW5zZGVmYXVsdC50b1BhdHRlcm4oKTsKKyAgICAgICAgU3RyaW5nIHBhdHRlcm4xPSJcXFxcVSswMDAwIjsKKyAgICAgICAgCisgICAgICAgIEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yIHRyYW5zMT1udWxsOworICAgICAgICB0cnl7CisgICAgICAgICAgICB0cmFuczE9bmV3IEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4xLCBudWxsKTsKKyAgICAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleDEpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvciBjb25zdHJ1Y3Rpb24gZmFpbGVkIHdpdGggcGF0dGVybiA9IiArIHBhdHRlcm4xICsKKyAgICAgICAgICAgICAgICAgICAiRXhjZXB0aW9uOiIgKyBleDEudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKworICAgICAgICAvKnRlc3QgdG9QYXR0ZXJuKCkgKi8KKyAgICAgICAgaWYodHJhbnNkZWZhdWx0LnRvUGF0dGVybigpLmVxdWFscyh0cmFuczEudG9QYXR0ZXJuKCkpID09IHRydWUgfHwKKyAgICAgICAgICAgIHRyYW5zZGVmYXVsdC50b1BhdHRlcm4oKS5lcXVhbHMoIlxcXFx1MDAwMDtcXFxcVTAwMDA7dSswMDAwO1UrMDAwMCIpICE9IHRydWUgfHwKKyAgICAgICAgICAgIHRyYW5zMS50b1BhdHRlcm4oKS5lcXVhbHMocGF0dGVybjEpICE9IHRydWUgKXsKKyAgICAgICAgICAgIGVycmxuKCJFcnJvcjogdG9QYXR0ZXJuKCkgZmFpbGVkIik7CisgICAgICAgIH0KKworICAgICAgICAvKmFwcGx5IHBhdHRlcm5zIGZvciB0cmFuc2RlZmF1bHQqLworICAgICAgICBTdHJpbmcgc3RyPSJhYktmIjsKKyAgICAgICAgZXhwZWN0UGF0dGVybih0cmFuc2RlZmF1bHQsICBwYXR0ZXJuMSwgIlxcVSswMDYxXFxVKzAwNjJcXFUrMDA0QlxcVSswMDY2Iiwgc3RyKTsKKyAgICAgICAgZXhwZWN0UGF0dGVybih0cmFuc2RlZmF1bHQsICAiXFxVIyMwMCwiLCAiVTYxLFU2MixVNEIsVTY2LCIsIHN0cik7CisgICAgICAgIGV4cGVjdFBhdHRlcm4odHJhbnNkZWZhdWx0LCBkZWZhdWx0cGF0dGVybiwgIlxcdTAwNjFcXHUwMDYyXFx1MDA0QlxcdTAwNjYiLCBzdHIpOworICAgICAgICBleHBlY3RQYXR0ZXJuKHRyYW5zMSwgIlxcdW5pMDAwMCIsICJ1bmkwMDYxdW5pMDA2MnVuaTAwNEJ1bmkwMDY2Iiwgc3RyKTsKKyAgICAgICAgZXhwZWN0UGF0dGVybih0cmFuczEsICJcXFxcUy0wMDAwLUUiLCAiXFxTLTAwNjEtRVxcUy0wMDYyLUVcXFMtMDA0Qi1FXFxTLTAwNjYtRSIsIHN0cik7CisgICAgICAgIAorICAgICAgICBleHBlY3RQYXR0ZXJuKHRyYW5zMSwgIlxcXFxTLTAwMDAtRSIsICJcXFMtMDA2MS1FXFxTLTAwNjItRVxcUy0wMDRCLUVcXFMtMDA2Ni1FIiwgIHN0cik7CisgICAgICAgIGV4cGVjdFBhdHRlcm4odHJhbnMxLCAiXFx1IyMwMDAwIiwgIlxcdSMjMDA2MVxcdSMjMDA2MiIsICJGQUlMIik7CisgICAgICAgIGV4cGVjdFBhdHRlcm4odHJhbnMxLCAiXFwqMDAwMCIsICAiKjAwNjEqMDA2MiowMDRCKjAwNjYiLCAgc3RyKTsgCisgICAgICAgIGV4cGVjdFBhdHRlcm4odHJhbnMxLCAiXFx1IyMjIyIsICJcXHUjIzAwNjFcXHUjIzAwNjIiLCAiRkFJTCIpOworICAKKworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RTaW1wbGVUcmFuc2xpdGVyYXRlKCl7IAorICAgICAgICBTdHJpbmcgcGF0dGVybjE9IlxcXFxVKzAwMDAiOworICAgICAgICBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvciB0cmFuczE9bnVsbDsKKyAgICAgICAgdHJ5eworICAgICAgICAgICAgdHJhbnMxPW5ldyBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcihwYXR0ZXJuMSwgbnVsbCk7CisgICAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKXsKKyAgICAgICAgICAgIGVycmxuKCJIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcihwYXR0ZXJuMSwgbnVsbCkgY29uc3RydWN0aW9uIGZhaWxlZCB3aXRoIHBhdHRlcm4gPSIgCisgICAgICAgICAgICAgICAgICArIHBhdHRlcm4xICsgIkV4Y2VwdGlvbjoiICsgaWFlLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgICAgIFN0cmluZyBzb3VyY2U9IkhlXFxVKzAwNkNcXFUrMDA2Q1xcVSswMDZGIjsKKyAgICAgICAgU3RyaW5nIGV4cGVjdGVkPSJIZWxsbyI7CisKKyAgICAgICAgZXhwZWN0VHJhbnNsaXQodHJhbnMxLCAiOlJlcGxhY2VhYmxlICIsIHNvdXJjZSwgIDEsIHNvdXJjZS5sZW5ndGgoKSwgMiwgZXhwZWN0ZWQpOyAKKyAgICAgICAgZXhwZWN0KHRyYW5zMSwgIiIsICJcXFUrMDA0OFxcVSswMDY1XFxVKzAwNkNcXFUrMDA2Q1xcVSswMDZGIiwgZXhwZWN0ZWQpOworCisgICAgICAgIEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yIHRyYW5zZGVmYXVsdD1uZXcgSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IoKTsKKyAgICAgICAgCisgICAgICAgIEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yIHRyYW5zMj1udWxsOworICAgICAgICB0cnl7CisgICAgICAgICAgICB0cmFuczI9bmV3IEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yKHRyYW5zZGVmYXVsdC50b1BhdHRlcm4oKSwgSGV4RmlsdGVyKTsKKyAgICAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleDIpeworICAgICAgICAgICAgZXJybG4oIkhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4xLCBIZXhGaWx0ZXIpIGNvbnN0cnVjdGlvbiBmYWlsZWQgd2l0aCBwYXR0ZXJuID0iIAorICAgICAgICAgICAgICAgICAgKyBwYXR0ZXJuMSArICJFeGNlcHRpb246IiArIGV4Mi50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgICAgICBleHBlY3QodHJhbnMyLCAid2l0aCBGaWx0ZXIoMHgwMDYxLCAweDAwNjMpICIsICJcdTAwNjFcdTAwNjJcdTAwNjMiLCAgICJcdTAwNjFiXHUwMDYzIik7CisgICAgfQorICAgCisgICAgcHVibGljIHZvaWQgVGVzdFRyYW5zbGl0ZXJhdGUoKXsKKyAgICAgICAgU3RyaW5nIERhdGFbXT17CisgICAgICAgICAgICAvL3BhdHRlcm4sIHNvdXJjZSwgaW5kZXguY29udGV4dFN0YXJ0LCBpbmRleC5jb250ZXh0TGltaXQsIGluZGV4LnN0YXJ0LCBleHBlY3RlZFJlc3VsdCwKKyAgICAgICAvLyAgICAgIlUrIyMwMCIsICAgICJhYlUrNjMiLCAiMSIsICI3IiwgIjIiLCAgImFiYyIsIAorICAgICAgICAgICAgIlxcXFx1MDAwMCIsICJhXFx1MDA2MmMiLCAiMSIsICI3IiwgIjEiLCAgImFiYyIsIAorICAgICAgICAgICAgIlVuaTAwMDAiLCAgICJhYlVuaTAwNjMiLCAiMSIsICI5IiwgIjIiLCAgImFiYyIsIAorICAgICAgICAgICAgIlVbMDAwMF0iLCAgICJoZVVbMDA2Q11VWzAwNkNdbyIsICIwIiwgIjE2IiwgIjIiLCAiaGVsbG8iLCAKKyAgICAgICAvLyAgICAgInByZWZpeC0wMDAwLXN1ZmZpeCIsICJhcHJlZml4LTAwNjItc3VmZml4cHJlZml4LTAwNjMtc3VmZml4IiwgIjEiLCAiMzkiLCAiMSIsICJhYmMiLCAKKyAgICAgICAgICAgICIqIyMwMCoiLCAgICAiaGVsbCo2RioqNzQqKjY4Kio2NSpyZSIsICAiMSIsICIyMCIsICI0IiwgImhlbGxvdGhlcmUiLCAKKworICAgICAgICB9OworICAgICAgICBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvciB0cmFuczE9bnVsbDsKKyAgICAgICAgZm9yKGludCBpPTA7IGk8RGF0YS5sZW5ndGg7IGkrPTYpeworICAgICAgICAgICAgdHJ5eworICAgICAgICAgICAgICAgIHRyYW5zMT1uZXcgSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IoRGF0YVtpKzBdLCBudWxsKTsKKyAgICAgICAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXgxKXsKKyAgICAgICAgICAgICAgICBlcnJsbigiSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IocGF0dGVybjEsIG51bGwpIGNvbnN0cnVjdGlvbiBmYWlsZWQgd2l0aCBwYXR0ZXJuID0iIAorICAgICAgICAgICAgICAgICAgICAgKyBEYXRhW2krMF0gKyAiRXhjZXB0aW9uOiIgKyBleDEudG9TdHJpbmcoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBleHBlY3RUcmFuc2xpdCh0cmFuczEsICIiLCBEYXRhW2krMV0sIEludGVnZXIucGFyc2VJbnQoRGF0YVtpKzJdKSwgCisgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIucGFyc2VJbnQoRGF0YVtpKzNdKSwgSW50ZWdlci5wYXJzZUludChEYXRhW2krNF0pLCBEYXRhW2krNV0gKTsKKyAgICAgICAgICAgIGV4cGVjdCh0cmFuczEsICIiLCBEYXRhW2krMV0sIERhdGFbaSs1XSk7CisgICAgICAgIH0KKyAgICB9CisgICAgICAgIAorICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIFN1cHBvcnQgbWV0aG9kcworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgcHJpdmF0ZSB2b2lkIGV4cGVjdFRyYW5zbGl0KEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yIHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgc291cmNlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0LCBpbnQgbGltaXQsIGludCBjdXJzb3IsICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGV4cGVjdGVkUmVzdWx0KXsKKyAgICAKKworICAgICAgICBSZXBsYWNlYWJsZVN0cmluZyByc291cmNlID0gbmV3IFJlcGxhY2VhYmxlU3RyaW5nKHNvdXJjZSk7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uIGluZGV4ID0gbmV3IFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uKHN0YXJ0LCBsaW1pdCwgY3Vyc29yLCBsaW1pdCk7CisgICAgICAgIHQudHJhbnNsaXRlcmF0ZShyc291cmNlLCBpbmRleCk7CisgICAgICAgIHQuZmluaXNoVHJhbnNsaXRlcmF0aW9uKHJzb3VyY2UsIGluZGV4KTsKKyAgICAgICAgU3RyaW5nIHJlc3VsdD1yc291cmNlLnRvU3RyaW5nKCk7CisgICAgICAgIGV4cGVjdEF1eCh0LmdldElEKCkgKyAiOmtleWJvYXJkICIgKyBtZXNzYWdlLCBzb3VyY2UgKyAiLT4iICsgcmVzdWx0LCByZXN1bHQuZXF1YWxzKGV4cGVjdGVkUmVzdWx0KSwgZXhwZWN0ZWRSZXN1bHQpOworICAgIH0KKyAgICBwcml2YXRlIHZvaWQgZXhwZWN0UGF0dGVybihIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvciB0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHBhdHRlcm4sIFN0cmluZyBzb3VyY2UsIFN0cmluZyBleHBlY3RlZFJlc3VsdCl7CisKKyAgICAgICAgdHJ5eworICAgICAgICAgICAgdC5hcHBseVBhdHRlcm4ocGF0dGVybik7CisgICAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKXsKKyAgICAgICAgICAgIGlmKGV4cGVjdGVkUmVzdWx0LmVxdWFscygiRkFJTCIpKXsKKyAgICAgICAgICAgICAgICBsb2dsbigiT0s6IGNhbGxpbmcgYXBwbHlQYXR0ZXJuKCkgd2l0aCBpbGxlZ2FsIHBhdHRlcm4gZmFpbGVkIGFzIGV4cGVjdGVkLiIgKyBpYWUudG9TdHJpbmcoKSk7CisgICAgICAgICAgICB9IGVsc2V7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUw6IGFwcGx5UGF0dGVybigpIGZhaWxlZCB3aXRoIHBhdHRlcm4gPSIgKyBwYXR0ZXJuICsgIi0tLT4iICsgaWFlLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmKCFleHBlY3RlZFJlc3VsdC5lcXVhbHMoIkZBSUwiKSl7CisgICAgICAgICAgICBpZighdC50b1BhdHRlcm4oKS5lcXVhbHMocGF0dGVybikpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogYXBwbHlQYXR0ZXJuIG9yIHRvUGF0dGVuIGZhaWxlZC4gIEV4cGVjdGVkOiAiICsgcGF0dGVybiArICJHb3Q6ICIgKyB0LnRvUGF0dGVybigpKTsKKyAgICAgICAgICAgIH1lbHNleworICAgICAgICAgICAgICAgIGxvZ2xuKCJPSzogYXBwbHlQYXR0ZXJuIHBhc3NlZC4gVGVzdGluZyB0cmFuc2xpdGVyYXRpb24iKTsKKyAgICAgICAgICAgICAgICBleHBlY3QodCwgIiB3aXRoIHBhdHRlcm4gIitwYXR0ZXJuLCBzb3VyY2UsIGV4cGVjdGVkUmVzdWx0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBwcml2YXRlIHZvaWQgZXhwZWN0KEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yIHQsICBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIHNvdXJjZSwgU3RyaW5nIGV4cGVjdGVkUmVzdWx0KSB7CisgICAgCisgICAgICAgIFN0cmluZyByZXN1bHQ9dC50cmFuc2xpdGVyYXRlKHNvdXJjZSk7CisgICAgICAgIGV4cGVjdEF1eCh0LmdldElEKCkgKyAiOlN0cmluZyAiICsgbWVzc2FnZSwgc291cmNlICsgIi0+IiArIHJlc3VsdCwgcmVzdWx0LmVxdWFscyhleHBlY3RlZFJlc3VsdCksIGV4cGVjdGVkUmVzdWx0KTsKKworICAgICAgICBSZXBsYWNlYWJsZVN0cmluZyByc291cmNlID0gbmV3IFJlcGxhY2VhYmxlU3RyaW5nKHNvdXJjZSk7CisgICAgICAgIHQudHJhbnNsaXRlcmF0ZShyc291cmNlKTsKKyAgICAgICAgcmVzdWx0ID0gcnNvdXJjZS50b1N0cmluZygpOworICAgICAgICBleHBlY3RBdXgodC5nZXRJRCgpICsgIjpSZXBsYWNlYWJsZSIgKyBtZXNzYWdlLCBzb3VyY2UgKyAiLT4iICsgcmVzdWx0LCByZXN1bHQuZXF1YWxzKGV4cGVjdGVkUmVzdWx0KSwgZXhwZWN0ZWRSZXN1bHQpOworCisgICAgICAgIC8vIFRlc3Qga2V5Ym9hcmQgKGluY3JlbWVudGFsKSB0cmFuc2xpdGVyYXRpb24gLS0gdGhpcyByZXN1bHQKKyAgICAgICAgLy8gbXVzdCBiZSB0aGUgc2FtZSBhZnRlciB3ZSBmaW5hbGl6ZSAoc2VlIGJlbG93KS4KKyAgICAgICAgcnNvdXJjZS5yZXBsYWNlKDAsIHJzb3VyY2UubGVuZ3RoKCksICIiKTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24gaW5kZXggPSBuZXcgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24oKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGxvZyA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKworICAgICAgICBmb3IgKGludCBpPTA7IGk8c291cmNlLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpICE9IDApIHsKKyAgICAgICAgICAgICAgICBsb2cuYXBwZW5kKCIgKyAiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxvZy5hcHBlbmQoc291cmNlLmNoYXJBdChpKSkuYXBwZW5kKCIgLT4gIik7CisgICAgICAgICAgICB0LnRyYW5zbGl0ZXJhdGUocnNvdXJjZSwgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nLnZhbHVlT2Yoc291cmNlLmNoYXJBdChpKSkpOworICAgICAgICAgICAgLy8gQXBwZW5kIHRoZSBzdHJpbmcgYnVmZmVyIHdpdGggYSB2ZXJ0aWNhbCBiYXIgJ3wnIHdoZXJlCisgICAgICAgICAgICAvLyB0aGUgY29tbWl0dGVkIGluZGV4IGlzLgorICAgICAgICAgICAgU3RyaW5nIHMgPSByc291cmNlLnRvU3RyaW5nKCk7CisgICAgICAgICAgICBsb2cuYXBwZW5kKHMuc3Vic3RyaW5nKDAsIGluZGV4LnN0YXJ0KSkuCisgICAgICAgICAgICAgICAgYXBwZW5kKCd8JykuCisgICAgICAgICAgICAgICAgYXBwZW5kKHMuc3Vic3RyaW5nKGluZGV4LnN0YXJ0KSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIEFzIGEgZmluYWwgc3RlcCBpbiBrZXlib2FyZCB0cmFuc2xpdGVyYXRpb24sIHdlIG11c3QgY2FsbAorICAgICAgICAvLyB0cmFuc2xpdGVyYXRlIHRvIGZpbmlzaCBvZmYgYW55IHBlbmRpbmcgcGFydGlhbCBtYXRjaGVzIHRoYXQKKyAgICAgICAgLy8gd2VyZSB3YWl0aW5nIGZvciBtb3JlIGlucHV0LgorICAgICAgICB0LmZpbmlzaFRyYW5zbGl0ZXJhdGlvbihyc291cmNlLCBpbmRleCk7CisgICAgICAgIHJlc3VsdCA9IHJzb3VyY2UudG9TdHJpbmcoKTsKKyAgICAgICAgbG9nLmFwcGVuZCgiID0+ICIpLmFwcGVuZChyc291cmNlLnRvU3RyaW5nKCkpOworICAgICAgICBleHBlY3RBdXgodC5nZXRJRCgpICsgIjpLZXlib2FyZCIsIGxvZy50b1N0cmluZygpICsgIlxuIiArIHNvdXJjZSArICIgLT4gIiArIHJlc3VsdCwgcmVzdWx0LmVxdWFscyhleHBlY3RlZFJlc3VsdCksIGV4cGVjdGVkUmVzdWx0KTsKKworICAgIH0KKyAgICBwcml2YXRlIHZvaWQgZXhwZWN0QXV4KFN0cmluZyB0YWcsIFN0cmluZyBzdW1tYXJ5LCBib29sZWFuIHBhc3MsICBTdHJpbmcgZXhwZWN0ZWRSZXN1bHQpIHsKKyAgICAgICAgaWYgKHBhc3MpIHsKKyAgICAgICAgICAgIGxvZ2xuKCIoIiArIHRhZyArICIpICIgKyBVdGlsaXR5LmVzY2FwZShzdW1tYXJ5KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogKCIgKyB0YWcrICIpICIKKyAgICAgICAgICAgICAgICArIFV0aWxpdHkuZXNjYXBlKHN1bW1hcnkpCisgICAgICAgICAgICAgICAgKyAiLCBleHBlY3RlZCAiICsgVXRpbGl0eS5lc2NhcGUoZXhwZWN0ZWRSZXN1bHQpKTsKKyAgICAgICAgfQorICAgIH0gIAorfQorCisKKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGVzdC90cmFuc2xpdC9KYW1vVGVzdC5qYXZhIGIvc3JjL2NvbS9pYm0vdGVzdC90cmFuc2xpdC9KYW1vVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjg3ODRmMWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXN0L3RyYW5zbGl0L0phbW9UZXN0LmphdmEKQEAgLTAsMCArMSw0MTcgQEAKK3BhY2thZ2UgY29tLmlibS50ZXN0LnRyYW5zbGl0OworaW1wb3J0IGNvbS5pYm0udGV4dC4qOworaW1wb3J0IGNvbS5pYm0udGVzdC4qOworaW1wb3J0IGNvbS5pYm0udXRpbC5VdGlsaXR5OworaW1wb3J0IGphdmEudGV4dC4qOworaW1wb3J0IGphdmEudXRpbC4qOworCisvKioKKyAqIEB0ZXN0CisgKiBAc3VtbWFyeSBUZXN0IHRoZSBMYXRpbi1KYW1vIHRyYW5zbGl0ZXJhdG9yCisgKi8KK3B1YmxpYyBjbGFzcyBKYW1vVGVzdCBleHRlbmRzIFRyYW5zbGl0ZXJhdG9yVGVzdCB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IEphbW9UZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RKYW1vKCkgeworICAgICAgICBUcmFuc2xpdGVyYXRvciBsYXRpbkphbW8gPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiTGF0aW4tSmFtbyIpOworICAgICAgICBUcmFuc2xpdGVyYXRvciBqYW1vTGF0aW4gPSBsYXRpbkphbW8uZ2V0SW52ZXJzZSgpOworCisgICAgICAgIFN0cmluZ1tdIENBU0UgPSB7CisgICAgICAgICAgICAvLyBDb2x1bW4gMSBpcyB0aGUgbGF0aW4gdGV4dCBMMSB0byBiZSBmZWQgdG8gTGF0aW4tSmFtbworICAgICAgICAgICAgLy8gdG8geWllbGQgb3V0cHV0IEouCisKKyAgICAgICAgICAgIC8vIENvbHVtbiAyIGlzIGV4cGVjdGVkIHZhbHVlIG9mIEouICBKIGlzIGZlZCB0bworICAgICAgICAgICAgLy8gSmFtby1MYXRpbiB0byB5aWVsZCBvdXRwdXQgTDIuCisKKyAgICAgICAgICAgIC8vIENvbHVtbiAzIGlzIGV4cGVjdGVkIHZhbHVlIG9mIEwyLiAgSWYgdGhlIGV4cGVjdGVkCisgICAgICAgICAgICAvLyB2YWx1ZSBvZiBMMiBpcyBMMSwgdGhlbiBMMiBpcyBudWxsLgorICAgICAgICAgICAgImJhYiIsICIoQmkpKEEpKEJmKSIsIG51bGwsCisgICAgICAgICAgICAiYmFiYiIsICIoQmkpKEEpKEJmKShCaSkoRVUpIiwgImJhYi1iZXUiLAorICAgICAgICAgICAgImJhYmJiYSIsICIoQmkpKEEpKEJmKShCQikoQSkiLCBudWxsLAorICAgICAgICAgICAgImJhZ2ciLCAiKEJpKShBKShHR2YpIiwgbnVsbCwKKyAgICAgICAgICAgICJiYWdnZ2EiLCAiKEJpKShBKShHR2YpKEdpKShBKSIsIG51bGwsCisgICAgICAgICAgICAiYmFnLWdnYSIsICIoQmkpKEEpKEdmKShHR2kpKEEpIiwgbnVsbCwKKyAgICAgICAgICAgICJrYWJzYSIsICIoS2kpKEEpKEJmKShTaSkoQSkiLCBudWxsLAorICAgICAgICAgICAgImthYnNrYSIsICIoS2kpKEEpKEJTKShLaSkoQSkiLCBudWxsLAorICAgICAgICAgICAgImdhYnNia2EiLCAiKEdpKShBKShCUykoQmkpKEVVKShLaSkoQSkiLCAiZ2Fic2JldWthIiwgLy8gbm90IChLZikKKyAgICAgICAgICAgICJnZ2EiLCAiKEdHaSkoQSkiLCBudWxsLAorICAgICAgICAgICAgImJzYSIsICIoQmkpKEVVKShTaSkoQSkiLCAiYmV1c2EiLAorICAgICAgICAgICAgImFnZyIsICIoSUVVTkcpKEEpKEdHZikiLCBudWxsLAorICAgICAgICAgICAgImFnZ2EiLCAiKElFVU5HKShBKShHR2kpKEEpIiwgbnVsbCwKKyAgICAgICAgICAgICJsYSIsICIoUikoQSkiLCAicmEiLAorICAgICAgICAgICAgImJzIiwgIihCaSkoRVUpKFNmKSIsICJiZXVzIiwKKyAgICAgICAgICAgICJrYWxnZ2EiLCAiKEtpKShBKShMKShHR2kpKEEpIiwgbnVsbCwKKworICAgICAgICAgICAgLy8gJ3InIGluIGEgZmluYWwgcG9zaXRpb24gaXMgdHJlYXRlZCBsaWtlICdsJworICAgICAgICAgICAgImthcmthIiwgIihLaSkoQSkoTCkoS2kpKEEpIiwgImthbGthIiwKKyAgICAgICAgfTsKKworICAgICAgICBmb3IgKGludCBpPTA7IGk8Q0FTRS5sZW5ndGg7IGkrPTMpIHsKKyAgICAgICAgICAgIFN0cmluZyBqYW1vID0gbmFtZVRvSmFtbyhDQVNFW2krMV0pOworICAgICAgICAgICAgaWYgKENBU0VbaSsyXSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgZXhwZWN0KGxhdGluSmFtbywgQ0FTRVtpXSwgamFtbywgamFtb0xhdGluKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gSGFuZGxlIGNhc2Ugd2hlcmUgcm91bmQtdHJpcCBpcyBleHBlY3RlZCB0byBmYWlsCisgICAgICAgICAgICAgICAgZXhwZWN0KGxhdGluSmFtbywgQ0FTRVtpXSwgamFtbyk7CisgICAgICAgICAgICAgICAgZXhwZWN0KGphbW9MYXRpbiwgamFtbywgQ0FTRVtpKzJdKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZXNlIGFyZSBwcm9ibGVtcyB0dXJuZWQgdXAgYnkgdGhlIEhhbmd1bC1KYW1vO0phbW8tTGF0aW4KKyAgICAgKiByb3VuZCB0cmlwIHRlc3QuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFJvdW5kVHJpcCgpIHsKKyAgICAgICAgU3RyaW5nIEhBTkdVTFtdID0geyAiXHVBQzAzXHVDMkY4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXHVDNTQ0XHVDNUI0In07CisgICAgICAgIAorICAgICAgICBUcmFuc2xpdGVyYXRvciBsYXRpbkphbW8gPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiTGF0aW4tSmFtbyIpOworICAgICAgICBUcmFuc2xpdGVyYXRvciBqYW1vTGF0aW4gPSBsYXRpbkphbW8uZ2V0SW52ZXJzZSgpOworICAgICAgICBUcmFuc2xpdGVyYXRvciBqYW1vSGFuZ3VsID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIkphbW8tSGFuZ3VsIik7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGhhbmd1bEphbW8gPSBqYW1vSGFuZ3VsLmdldEludmVyc2UoKTsKKworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8SEFOR1VMLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBTdHJpbmcgaGFuZ3VsID0gSEFOR1VMW2ldOworICAgICAgICAgICAgU3RyaW5nIGphbW8gPSBoYW5ndWxKYW1vLnRyYW5zbGl0ZXJhdGUoaGFuZ3VsKTsKKyAgICAgICAgICAgIFN0cmluZyBsYXRpbiA9IGphbW9MYXRpbi50cmFuc2xpdGVyYXRlKGphbW8pOworICAgICAgICAgICAgU3RyaW5nIGphbW8yID0gbGF0aW5KYW1vLnRyYW5zbGl0ZXJhdGUobGF0aW4pOworICAgICAgICAgICAgU3RyaW5nIGhhbmd1bDIgPSBqYW1vSGFuZ3VsLnRyYW5zbGl0ZXJhdGUoamFtbzIpOworICAgICAgICAgICAgYnVmLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoaGFuZ3VsICsgIiA9PiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgamFtb1RvTmFtZShqYW1vKSArICIgPT4gIiArCisgICAgICAgICAgICAgICAgICAgICAgIGxhdGluICsgIiA9PiAiICsgamFtb1RvTmFtZShqYW1vMikKKyAgICAgICAgICAgICAgICAgICAgICAgKyAiID0+ICIgKyBoYW5ndWwyCisgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICBpZiAoIWhhbmd1bC5lcXVhbHMoaGFuZ3VsMikpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIFV0aWxpdHkuZXNjYXBlKGJ1Zi50b1N0cmluZygpKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZ2xuKFV0aWxpdHkuZXNjYXBlKGJ1Zi50b1N0cmluZygpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0UmVhbFRleHQoKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGxhdGluSmFtbyA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJMYXRpbi1KYW1vIik7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGphbW9MYXRpbiA9IGxhdGluSmFtby5nZXRJbnZlcnNlKCk7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGphbW9IYW5ndWwgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiSmFtby1IYW5ndWwiKTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgaGFuZ3VsSmFtbyA9IGphbW9IYW5ndWwuZ2V0SW52ZXJzZSgpOworICAgICAgICBUcmFuc2xpdGVyYXRvciBydCA9IG5ldyBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yKG5ldyBUcmFuc2xpdGVyYXRvcltdIHsKKyAgICAgICAgICAgIGhhbmd1bEphbW8sIGphbW9MYXRpbiwgbGF0aW5KYW1vLCBqYW1vSGFuZ3VsIH0pOworCisgICAgICAgIGludCBwb3MgPSAwOworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBpbnQgdG90YWwgPSAwOworICAgICAgICBpbnQgZXJyb3JzID0gMDsKKyAgICAgICAgd2hpbGUgKHBvcyA8IFdIQVRfSVNfVU5JQ09ERS5sZW5ndGgoKSkgeworICAgICAgICAgICAgaW50IHNwYWNlID0gV0hBVF9JU19VTklDT0RFLmluZGV4T2YoJyAnLCBwb3MrMSk7CisgICAgICAgICAgICBpZiAoc3BhY2UgPCAwKSB7CisgICAgICAgICAgICAgICAgc3BhY2UgPSBXSEFUX0lTX1VOSUNPREUubGVuZ3RoKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocG9zIDwgc3BhY2UpIHsKKyAgICAgICAgICAgICAgICArK3RvdGFsOworICAgICAgICAgICAgICAgIFN0cmluZyBoYW5ndWwgPSBXSEFUX0lTX1VOSUNPREUuc3Vic3RyaW5nKHBvcywgc3BhY2UpOworICAgICAgICAgICAgICAgIFN0cmluZyBoYW5ndWxYID0gcnQudHJhbnNsaXRlcmF0ZShoYW5ndWwpOworICAgICAgICAgICAgICAgIGlmICghaGFuZ3VsLmVxdWFscyhoYW5ndWxYKSkgeworICAgICAgICAgICAgICAgICAgICArK2Vycm9yczsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGphbW8gPSBoYW5ndWxKYW1vLnRyYW5zbGl0ZXJhdGUoaGFuZ3VsKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGxhdGluID0gamFtb0xhdGluLnRyYW5zbGl0ZXJhdGUoamFtbyk7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBqYW1vMiA9IGxhdGluSmFtby50cmFuc2xpdGVyYXRlKGxhdGluKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGhhbmd1bDIgPSBqYW1vSGFuZ3VsLnRyYW5zbGl0ZXJhdGUoamFtbzIpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgYnVmLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiRkFJTDogIik7CisgICAgICAgICAgICAgICAgICAgIGlmICghaGFuZ3VsMi5lcXVhbHMoaGFuZ3VsWCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIihXZWlyZDogIiArIGhhbmd1bFggKyAiICE9ICIgKyBoYW5ndWwyICsgIikiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBUaGUgSGFuZ3VsLUphbW8gY29udmVyc2lvbiBpcyBub3QgdXN1YWxseSB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gYnVnIGhlcmUsIHNvIHdlIGhpZGUgaXQgZnJvbSBkaXNwbGF5LgorICAgICAgICAgICAgICAgICAgICAvLyBVbmNvbW1lbnQgbGluZXMgdG8gc2VlIHRoZSBIYW5ndWwuCisgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoLy9oYW5ndWwgKyAiID0+ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGphbW9Ub05hbWUoamFtbykgKyAiID0+ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhdGluICsgIiA9PiAiICsgamFtb1RvTmFtZShqYW1vMikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLysgIiA9PiAiICsgaGFuZ3VsMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKFV0aWxpdHkuZXNjYXBlKGJ1Zi50b1N0cmluZygpKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcG9zID0gc3BhY2UrMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXJyb3JzICE9IDApIHsKKyAgICAgICAgICAgIGVycmxuKCJUZXN0IHdvcmQgZmFpbHVyZXM6ICIgKyBlcnJvcnMgKyAiIG91dCBvZiAiICsgdG90YWwpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9nbG4oIkFsbCAiICsgdG90YWwgKyAiIHRlc3Qgd29yZHMgcGFzc2VkIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBUZXN0IHRleHQgdGFrZW4gZnJvbSB0aGUgVW5pY29kZSB3ZWIgc2l0ZQorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgV0hBVF9JU19VTklDT0RFID0KKworICAgICAgICAiXHVjNzIwXHViMmM4XHVjZjU0XHViNGRjXHVjNWQwIFx1YjMwMFx1ZDU3NCA/ICIgKworCisgICAgICAgICJcdWM1YjRcdWI1YTQgXHVkNTBjXHViN2FiXHVkM2ZjLCBcdWM1YjRcdWI1YTQgIiArCisgICAgICAgICJcdWQ1MDRcdWI4NWNcdWFkZjhcdWI3YTgsIFx1YzViNFx1YjVhNCBcdWM1YjhcdWM1YjRcdWM1ZDBcdWIzYzQgIiArCisgICAgICAgICJcdWMwYzFcdWFkMDBcdWM1YzZcdWM3NzQgXHVjNzIwXHViMmM4XHVjZjU0XHViNGRjXHViMjk0IFx1YmFhOFx1YjRlMCAiICsKKyAgICAgICAgIlx1YmIzOFx1Yzc5MFx1YzVkMCBcdWIzMDBcdWQ1NzQgXHVhY2UwXHVjNzIwIFx1YmM4OFx1ZDYzOFx1Yjk3YyAiICsKKyAgICAgICAgIlx1YzgxY1x1YWNmNVx1ZDU2OVx1YjJjOFx1YjJlNC4gIiArCisgICAgICAgIAorICAgICAgICAiXHVhZTMwXHViY2Y4XHVjODAxXHVjNzNjXHViODVjIFx1Y2VmNFx1ZDRlOFx1ZDEzMFx1YjI5NCAiICsKKyAgICAgICAgIlx1YzIyYlx1Yzc5MFx1YjljYyBcdWNjOThcdWI5YWNcdWQ1NjlcdWIyYzhcdWIyZTQuIFx1YWUwMFx1Yzc5MFx1YjA5OCAiICsKKyAgICAgICAgIlx1YjJlNFx1Yjk3OCBcdWJiMzhcdWM3OTBcdWM1ZDBcdWIzYzQgXHVjMjJiXHVjNzkwXHViOTdjICIgKworICAgICAgICAiXHVjOWMwXHVjODE1XHVkNTU4XHVjNWVjICIgKworICAgICAgICAiXHVjODAwXHVjN2E1XHVkNTY5XHViMmM4XHViMmU0LiBcdWM3MjBcdWIyYzhcdWNmNTRcdWI0ZGNcdWFjMDAgIiArCisgICAgICAgICJcdWFjMWNcdWJjMWNcdWI0MThcdWFlMzAgXHVjODA0XHVjNWQwXHViMjk0IFx1Yzc3NFx1YjdlY1x1ZDU1YyAiICsKKyAgICAgICAgIlx1YzIyYlx1Yzc5MFx1Yjk3YyBcdWM5YzBcdWM4MTVcdWQ1NThcdWFlMzAgXHVjNzA0XHVkNTc0IFx1YzIxOFx1YmMzMSAiICsKKyAgICAgICAgIlx1YWMwMFx1YzljMFx1Yzc1OCBcdWIyZTRcdWI5NzggXHVhZTMwXHVkNjM4XHVkNjU0ICIgKworICAgICAgICAiXHVjMmRjXHVjMmE0XHVkMTVjXHVjNzQ0ICIgKworICAgICAgICAiXHVjMGFjXHVjNmE5XHVkNTg4XHVjMmI1XHViMmM4XHViMmU0LiBcdWIyZThcdWM3N2MgXHVhZTMwXHVkNjM4XHVkNjU0ICIgKworICAgICAgICAiXHViYzI5XHViYzk1XHVjNzNjXHViODVjXHViMjk0IFx1YmFhOFx1YjRlMCBcdWJiMzhcdWM3OTBcdWI5N2MgIiArCisgICAgICAgICJcdWQzZWNcdWQ1NjhcdWQ1NjAgXHVjMjE4IFx1YzVjNlx1YzVjOFx1YzJiNVx1YjJjOFx1YjJlNC4gXHVjNjA4XHViOTdjICIgKworICAgICAgICAiXHViNGU0XHVjNWI0IFx1YzcyMFx1YjdmZCBcdWM1ZjBcdWQ1NjlcdWM1ZDBcdWMxMWNcdWI5Y2MgIiArCisgICAgICAgICJcdWJjZjRcdWIzNTRcdWI3N2NcdWIzYzQgXHViYWE4XHViNGUwIFx1YWMwMSBcdWIwOThcdWI3N2NcdWJjYzQgIiArCisgICAgICAgICJcdWM1YjhcdWM1YjRcdWI5N2MgXHVjYzk4XHViOWFjXHVkNTU4XHViODI0XHViYTc0IFx1YzVlY1x1YjdlYyAiICsKKyAgICAgICAgIlx1YWMxY1x1Yzc1OCBcdWIyZTRcdWI5NzggXHVhZTMwXHVkNjM4XHVkNjU0IFx1YmMyOVx1YmM5NVx1Yzc3NCAiICsKKyAgICAgICAgIlx1ZDU0NFx1YzY5NFx1ZDU2OVx1YjJjOFx1YjJlNC4gXHVjNjAxXHVjNWI0XHVjNjQwIFx1YWMxOVx1Yzc0MCAiICsKKyAgICAgICAgIlx1YjJlOFx1Yzc3YyBcdWM1YjhcdWM1YjRcdWM3NTggXHVhY2JkXHVjNmIwXHViM2M0ICIgKworICAgICAgICAiXHVhY2Y1XHVkMWI1XHVjODAxXHVjNzNjXHViODVjIFx1YzBhY1x1YzZhOVx1YjQxOFx1YjI5NCBcdWJhYThcdWI0ZTAgIiArCisgICAgICAgICJcdWFlMDBcdWM3OTAsIFx1YmIzOFx1YzdhNSBcdWJkODBcdWQ2MzggXHViYzBmICIgKworICAgICAgICAiXHVkMTRjXHVkMDZjXHViMmM4XHVjZWVjIFx1YWUzMFx1ZDYzOFx1YzVkMCBcdWI5ZGVcdWIyOTQgXHViMmU4XHVjNzdjICIgKworICAgICAgICAiXHVhZTMwXHVkNjM4XHVkNjU0IFx1YmMyOVx1YmM5NVx1Yzc0NCBcdWFjMTZcdWFjZTAgXHVjNzg4XHVjOWMwICIgKworICAgICAgICAiXHViYWJiXHVkNTU4XHVjNjAwXHVjMmI1XHViMmM4XHViMmU0LiAiICsKKyAgICAgICAgCisgICAgICAgICJcdWM3NzRcdWI3ZWNcdWQ1NWMgXHVhZTMwXHVkNjM4XHVkNjU0IFx1YzJkY1x1YzJhNFx1ZDE1Y1x1Yzc0MCAiICsKKyAgICAgICAgIlx1YjYxMFx1ZDU1YyBcdWIyZTRcdWI5NzggXHVhZTMwXHVkNjM4XHVkNjU0IFx1YzJkY1x1YzJhNFx1ZDE1Y1x1YWNmYyAiICsKKyAgICAgICAgIlx1Y2RhOVx1YjNjY1x1ZDU2OVx1YjJjOFx1YjJlNC4gXHVjOTg5IFx1YjQ1MCBcdWFjMDBcdWM5YzAgIiArCisgICAgICAgICJcdWFlMzBcdWQ2MzhcdWQ2NTQgXHViYzI5XHViYzk1XHVjNzc0IFx1YjQ1MCBcdWFjMWNcdWM3NTggXHViMmU0XHViOTc4ICIgKworICAgICAgICAiXHViYjM4XHVjNzkwXHVjNWQwIFx1YjMwMFx1ZDU3NCBcdWFjMTlcdWM3NDAgXHViYzg4XHVkNjM4XHViOTdjICIgKworICAgICAgICAiXHVjMGFjXHVjNmE5XHVkNTU4XHVhYzcwXHViMDk4IFx1YWMxOVx1Yzc0MCBcdWJiMzhcdWM3OTBcdWM1ZDAgIiArCisgICAgICAgICJcdWIzMDBcdWQ1NzQgXHViMmU0XHViOTc4IFx1YmM4OFx1ZDYzOFx1Yjk3YyBcdWMwYWNcdWM2YTlcdWQ1NjAgXHVjMjE4ICIgKworICAgICAgICAiXHVjNzg4XHVjMmI1XHViMmM4XHViMmU0LiBcdWM4ZmNcdWM1YjRcdWM5YzQgXHViYWE4XHViNGUwICIgKworICAgICAgICAiXHVjZWY0XHVkNGU4XHVkMTMwKFx1ZDJiOVx1ZDc4OCBcdWMxMWNcdWJjODQpXHViMjk0IFx1YzExY1x1Yjg1YyAiICsKKyAgICAgICAgIlx1YjJlNFx1Yjk3OCBcdWM1ZWNcdWI3ZWMgXHVhYzAwXHVjOWMwIFx1YWUzMFx1ZDYzOFx1ZDY1NCAiICsKKyAgICAgICAgIlx1YmMyOVx1YmM5NVx1Yzc0NCBcdWM5YzBcdWM2ZDBcdWQ1NzRcdWM1N2MgIiArCisgICAgICAgICJcdWQ1NjlcdWIyYzhcdWIyZTQuIFx1YWRmOFx1YjdlY1x1YjA5OCwgXHViMzcwXHVjNzc0XHVkMTMwXHViOTdjICIgKworICAgICAgICAiXHVjMTFjXHViODVjIFx1YjJlNFx1Yjk3OCBcdWFlMzBcdWQ2MzhcdWQ2NTQgXHViYzI5XHViYzk1XHVjNzc0XHViMDk4ICIgKworICAgICAgICAiXHVkNTBjXHViN2FiXHVkM2ZjIFx1YWMwNFx1YzVkMCBcdWM4MDRcdWIyZWNcdWQ1NjAgXHViNTRjXHViOWM4XHViMmU0ICIgKworICAgICAgICAiXHVhZGY4IFx1YjM3MFx1Yzc3NFx1ZDEzMFx1YjI5NCBcdWQ1NmRcdWMwYzEgXHVjMTkwXHVjMGMxXHVjNzU4ICIgKworICAgICAgICAiXHVjNzA0XHVkNWQ4XHVjNzQ0IFx1YWNhYVx1YWM4YyBcdWI0MjlcdWIyYzhcdWIyZTQuICIgKworICAgICAgICAKKyAgICAgICAgIlx1YzcyMFx1YjJjOFx1Y2Y1NFx1YjRkY1x1Yjg1YyBcdWJhYThcdWI0ZTAgXHVhYzgzXHVjNzQ0ICIgKworICAgICAgICAiXHVkNTc0XHVhY2IwXHVkNTYwIFx1YzIxOCBcdWM3ODhcdWMyYjVcdWIyYzhcdWIyZTQhICIgKworICAgICAgICAiXHVjNzIwXHViMmM4XHVjZjU0XHViNGRjXHViMjk0IFx1YzBhY1x1YzZhOSBcdWM5MTFcdWM3NzggIiArCisgICAgICAgICJcdWQ1MGNcdWI3YWJcdWQzZmMsIFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOCwgXHVjNWI4XHVjNWI0XHVjNWQwICIgKworICAgICAgICAiXHVhZDAwXHVhY2M0XHVjNWM2XHVjNzc0IFx1YmIzOFx1Yzc5MFx1YjljOFx1YjJlNCBcdWFjZTBcdWM3MjBcdWQ1NWMgIiArCisgICAgICAgICJcdWMyMmJcdWM3OTBcdWI5N2MgIiArCisgICAgICAgICJcdWM4MWNcdWFjZjVcdWQ1NjlcdWIyYzhcdWIyZTQuIFx1YzcyMFx1YjJjOFx1Y2Y1NFx1YjRkYyAiICsKKyAgICAgICAgIlx1ZDQ1Y1x1YzkwMFx1Yzc0MCAiICsgLy8gIkFwcGxlLCBIUCwgSUJNLCBKdXN0U3lzdGVtLCBNaWNyb3NvZnQsIE9yYWNsZSwgU0FQLCAiICsKKyAgICAgICAgLy8gIlN1biwgU3liYXNlLCBVbmlzeXMgIiArIAorICAgICAgICAiXHViYzBmIFx1YWUzMFx1ZDBjMCBcdWM1ZWNcdWI3ZWMgIiArCisgICAgICAgICJcdWQ2OGNcdWMwYWNcdWM2NDAgXHVhYzE5XHVjNzQwIFx1YzVjNVx1YWNjNCAiICsKKyAgICAgICAgIlx1YzEyMFx1YjQ1MFx1YzhmY1x1Yzc5MFx1YzVkMCBcdWM3NThcdWQ1NzQgIiArCisgICAgICAgICJcdWNjNDRcdWQwZGRcdWI0MThcdWM1YzhcdWMyYjVcdWIyYzhcdWIyZTQuIFx1YzcyMFx1YjJjOFx1Y2Y1NFx1YjRkY1x1YjI5NCAiICsKKyAgICAgICAgLy8gIlhNTCwgSmF2YSwgRUNNQVNjcmlwdChKYXZhU2NyaXB0KSwgTERBUCwgQ09SQkEgMy4wLCBXTUwgIiArCisgICAgICAgICJcdWI0ZjFcdWFjZmMgIiArCisgICAgICAgICJcdWFjMTlcdWM3NzQgXHVkNjA0XHVjN2FjIFx1YjExMFx1YjlhYyBcdWMwYWNcdWM2YTlcdWI0MThcdWIyOTQgIiArCisgICAgICAgICJcdWQ0NWNcdWM5MDBcdWM1ZDBcdWMxMWMgXHVkNTQ0XHVjNjk0XHVkNTU4XHViYTcwIFx1Yzc3NFx1YjI5NCBJU08vSUVDICIgKworICAgICAgICAiMTA2NDZcdWM3NDQgXHVhZDZjXHVkNjA0XHVkNTU4XHViMjk0IFx1YWNmNVx1YzJkZFx1YzgwMVx1Yzc3OCAiICsKKyAgICAgICAgIlx1YmMyOVx1YmM5NVx1Yzc4NVx1YjJjOFx1YjJlNC4gXHVjNzc0XHViMjk0IFx1YjljZVx1Yzc0MCBcdWM2YjRcdWM2MDEgIiArCisgICAgICAgICJcdWNjYjRcdWM4MWMsIFx1YzY5NFx1Yzk5OCBcdWMwYWNcdWM2YTlcdWI0MThcdWIyOTQgXHViYWE4XHViNGUwICIgKworICAgICAgICAiXHViZTBjXHViNzdjXHVjNmIwXHVjODAwIFx1YmMwZiBcdWFlMzBcdWQwYzAgXHViOWNlXHVjNzQwICIgKworICAgICAgICAiXHVjODFjXHVkNDg4XHVjNWQwXHVjMTFjICIgKworICAgICAgICAiXHVjOWMwXHVjNmQwXHViNDI5XHViMmM4XHViMmU0LiBcdWM3MjBcdWIyYzhcdWNmNTRcdWI0ZGMgIiArCisgICAgICAgICJcdWQ0NWNcdWM5MDBcdWM3NTggXHViZDgwXHVjMGMxXHVhY2ZjIFx1Yzc3NFx1Yjk3YyAiICsKKyAgICAgICAgIlx1YzljMFx1YzZkMFx1ZDU1OFx1YjI5NCBcdWIzYzRcdWFkNmNcdWM3NTggXHVhYzAwXHVjNmE5XHVjMTMxXHVjNzQwICIgKworICAgICAgICAiXHVjZDVjXHVhZGZjIFx1YzgwNCBcdWMxMzhcdWFjYzRcdWM1ZDAgXHViZDg4XHVhY2UwIFx1Yzc4OFx1YjI5NCAiICsKKyAgICAgICAgIlx1YWUzMFx1YzIyMCBcdWFjYmRcdWQ1YTVcdWM1ZDBcdWMxMWMgXHVhYzAwXHVjN2E1IFx1YzkxMVx1YzY5NFx1ZDU1YyAiICsKKyAgICAgICAgIlx1YmQ4MFx1YmQ4NFx1Yzc0NCBcdWNjMjhcdWM5YzBcdWQ1NThcdWFjZTAgXHVjNzg4XHVjMmI1XHViMmM4XHViMmU0LiAiICsKKyAgICAgICAgCisgICAgICAgICJcdWM3MjBcdWIyYzhcdWNmNTRcdWI0ZGNcdWI5N2MgIiArCisgICAgICAgICJcdWQwNzRcdWI3N2NcdWM3NzRcdWM1YjhcdWQyYjgtXHVjMTFjXHViYzg0IFx1YjYxMFx1YjI5NCAiICsKKyAgICAgICAgIlx1YjJlNFx1YzkxMS1cdWM1ZjBcdWFjYjAgXHVjNzUxXHVjNmE5IFx1ZDUwNFx1Yjg1Y1x1YWRmOFx1YjdhOFx1YWNmYyAiICsKKyAgICAgICAgIlx1YzZmOSBcdWMwYWNcdWM3NzRcdWQyYjhcdWM1ZDAgXHVkMWI1XHVkNTY5XHVkNTU4XHViYTc0ICIgKworICAgICAgICAiXHViODA4XHVhYzcwXHVjMmRjIFx1YmIzOFx1Yzc5MCBcdWMxMzhcdWQyYjggXHVjMGFjXHVjNmE5XHVjNWQwICIgKworICAgICAgICAiXHVjNzg4XHVjNWI0XHVjMTFjIFx1YzBjMVx1YjJmOVx1ZDU1YyBcdWJlNDRcdWM2YTkgXHVjODA4XHVhYzEwICIgKworICAgICAgICAiXHVkNmE4XHVhY2ZjXHVhYzAwICIgKworICAgICAgICAiXHViMDk4XHVkMGMwXHViMGE5XHViMmM4XHViMmU0LiBcdWM3MjBcdWIyYzhcdWNmNTRcdWI0ZGNcdWI5N2MgIiArCisgICAgICAgICJcdWQxYjVcdWQ1NzQgXHViOWFjXHVjNWQ0XHVjOWMwXHViMmM4XHVjNWI0XHViOWMxIFx1YzVjNlx1Yzc3NCAiICsKKyAgICAgICAgIlx1YjJlNFx1YzkxMSBcdWQ1MGNcdWI3YWJcdWQzZmMsIFx1YzViOFx1YzViNCBcdWJjMGYgXHVhZDZkXHVhYzAwICIgKworICAgICAgICAiXHVhYzA0XHVjNWQwIFx1YjJlOFx1Yzc3YyBcdWMxOGNcdWQ1MDRcdWQyYjhcdWM2ZThcdWM1YjQgIiArCisgICAgICAgICJcdWQ1MGNcdWI3YWJcdWQzZmMgXHViNjEwXHViMjk0IFx1YjJlOFx1Yzc3YyBcdWM2ZjkgIiArCisgICAgICAgICJcdWMwYWNcdWM3NzRcdWQyYjhcdWI5N2MgXHViYWE5XHVkNDVjXHViODVjIFx1YzBiY1x1Yzc0NCBcdWMyMTggIiArCisgICAgICAgICJcdWM3ODhcdWMyYjVcdWIyYzhcdWIyZTQuIFx1Yzc3NFx1Yjk3YyBcdWMwYWNcdWM2YTlcdWQ1NThcdWJhNzQgIiArCisgICAgICAgICJcdWIzNzBcdWM3NzRcdWQxMzBcdWI5N2MgXHVjMTkwXHVjMGMxIFx1YzVjNlx1Yzc3NCBcdWM1ZWNcdWI3ZWMgIiArCisgICAgICAgICJcdWMyZGNcdWMyYTRcdWQxNWNcdWM3NDQgXHVkMWI1XHVkNTc0IFx1YzgwNFx1YzFhMVx1ZDU2MCBcdWMyMTggIiArCisgICAgICAgICJcdWM3ODhcdWMyYjVcdWIyYzhcdWIyZTQuICIgKworICAgICAgICAKKyAgICAgICAgIlx1YzcyMFx1YjJjOFx1Y2Y1NFx1YjRkYyBcdWNmNThcdWMxOGNcdWMyZGNcdWM1YzRcdWM1ZDAgXHViMzAwXHVkNTc0ICIgKworICAgICAgICAiXHVjNzIwXHViMmM4XHVjZjU0XHViNGRjIFx1Y2Y1OFx1YzE4Y1x1YzJkY1x1YzVjNFx1Yzc0MCAiICsKKyAgICAgICAgIlx1YmU0NFx1YzYwMVx1YjlhYyBcdWM4NzBcdWM5YzFcdWM3M2NcdWI4NWNcdWMxMWMgXHVkNjA0XHViMzAwICIgKworICAgICAgICAiXHVjMThjXHVkNTA0XHVkMmI4XHVjNmU4XHVjNWI0IFx1YzgxY1x1ZDQ4OFx1YWNmYyAiICsKKyAgICAgICAgIlx1ZDQ1Y1x1YzkwMFx1YzVkMFx1YzExYyBcdWQxNGRcdWMyYTRcdWQyYjhcdWM3NTggXHVkNDVjXHVkNjA0XHVjNzQ0ICIgKworICAgICAgICAiXHVjOWMwXHVjODE1XHVkNTU4XHViMjk0IFx1YzcyMFx1YjJjOFx1Y2Y1NFx1YjRkYyBcdWQ0NWNcdWM5MDBcdWM3NTggIiArCisgICAgICAgICJcdWMwYWNcdWM2YTlcdWM3NDQgXHVhYzFjXHViYzFjXHVkNTU4XHVhY2UwIFx1ZDY1NVx1YzdhNVx1ZDU1OFx1YmE3MCAiICsKKyAgICAgICAgIlx1YzdhNVx1YjgyNFx1ZDU1OFx1YWUzMCBcdWM3MDRcdWQ1NzQgIiArCisgICAgICAgICJcdWMxMzhcdWM2Y2NcdWM4NGNcdWMyYjVcdWIyYzhcdWIyZTQuIFx1Y2Y1OFx1YzE4Y1x1YzJkY1x1YzVjNCAiICsKKyAgICAgICAgIlx1YmE2NFx1YmM4NFx1YzI3ZFx1Yzc0MCBcdWNlZjRcdWQ0ZThcdWQxMzBcdWM2NDAgXHVjODE1XHViY2Y0ICIgKworICAgICAgICAiXHVjYzk4XHViOWFjIFx1YzBiMFx1YzVjNVx1YzVkMCBcdWM4ODVcdWMwYWNcdWQ1NThcdWFjZTAgXHVjNzg4XHViMjk0ICIgKworICAgICAgICAiXHVhZDExXHViYzk0XHVjNzA0XHVkNTVjIFx1ZDY4Y1x1YzBhYyBcdWJjMGYgXHVjODcwXHVjOWMxXHVjNzU4ICIgKworICAgICAgICAiXHViYzk0XHVjNzA0XHViOTdjICIgKworICAgICAgICAiXHViMDk4XHVkMGMwXHViMGM1XHViMmM4XHViMmU0LiBcdWNmNThcdWMxOGNcdWMyZGNcdWM1YzRcdWM3NTggIiArCisgICAgICAgICJcdWM3YWNcdWM4MTVcdWM3NDAgXHVjODA0XHVjODAxXHVjNzNjXHViODVjIFx1ZDY4Y1x1YmU0NFx1YzVkMCAiICsKKyAgICAgICAgIlx1Yzc1OFx1ZDU3NCBcdWNkYTlcdWIyZjlcdWI0MjlcdWIyYzhcdWIyZTQuIFx1YzcyMFx1YjJjOFx1Y2Y1NFx1YjRkYyAiICsKKyAgICAgICAgIlx1Y2VlOFx1YzE4Y1x1YzJkY1x1YzVjNFx1YzVkMFx1YzExY1x1Yzc1OCBcdWJhNjRcdWJjODRcdWMyN2RcdWM3NDAgIiArCisgICAgICAgICJcdWM4MDQgXHVjMTM4XHVhY2M0IFx1YzViNFx1YjI5MCBcdWFjZjNcdWM1ZDBcdWMxMWNcdWIwOTggIiArCisgICAgICAgICJcdWM3MjBcdWIyYzhcdWNmNTRcdWI0ZGMgXHVkNDVjXHVjOTAwXHVjNzQ0IFx1YzljMFx1YzZkMFx1ZDU1OFx1YWNlMCAiICsKKyAgICAgICAgIlx1YWRmOCBcdWQ2NTVcdWM3YTVcdWFjZmMgXHVhZDZjXHVkNjA0XHVjNzQ0ICIgKworICAgICAgICAiXHVjOWMwXHVjNmQwXHVkNTU4XHVhY2UwXHVjNzkwXHVkNTU4XHViMjk0IFx1Yzg3MFx1YzljMVx1YWNmYyAiICsKKyAgICAgICAgIlx1YWMxY1x1Yzc3OFx1YzVkMFx1YWM4YyBcdWFjMWNcdWJjMjlcdWI0MThcdWM1YjQgIiArCisgICAgICAgICJcdWM3ODhcdWMyYjVcdWIyYzhcdWIyZTQuICIgKworICAgICAgICAKKyAgICAgICAgIlx1YjM1NCBcdWM3OTBcdWMxMzhcdWQ1NWMgXHViMGI0XHVjNmE5XHVjNzQwIFx1YzZhOVx1YzViNFx1YzlkMSwgIiArCisgICAgICAgICJcdWM2MDhcdWM4MWMgXHVjNzIwXHViMmM4XHVjZjU0XHViNGRjIFx1YzBhY1x1YzZhOSBcdWFjMDBcdWIyYTUgIiArCisgICAgICAgICJcdWM4MWNcdWQ0ODgsIFx1YWUzMFx1YzIyMCBcdWM4MTVcdWJjZjQgXHViYzBmIFx1YWUzMFx1ZDBjMCAiICsKKyAgICAgICAgIlx1YzcyMFx1YzZhOVx1ZDU1YyBcdWM4MTVcdWJjZjRcdWI5N2MgIiArCisgICAgICAgICJcdWNjMzhcdWM4NzBcdWQ1NThcdWMyZWRcdWMyZGNcdWM2MjQuIjsKKworICAgIC8vIFRyYW5zbGl0ZXJhdG9yVGVzdCBvdmVycmlkZQorICAgIHZvaWQgZXhwZWN0QXV4KFN0cmluZyB0YWcsIFN0cmluZyBzdW1tYXJ5LCBib29sZWFuIHBhc3MsCisgICAgICAgICAgICAgICAgICAgU3RyaW5nIGV4cGVjdGVkUmVzdWx0KSB7CisgICAgICAgIHN1cGVyLmV4cGVjdEF1eCh0YWcsIGphbW9Ub05hbWUoc3VtbWFyeSksCisgICAgICAgICAgICAgICAgICAgICAgICBwYXNzLCBqYW1vVG9OYW1lKGV4cGVjdGVkUmVzdWx0KSk7CisgICAgfQorCisgICAgLy8gVVRJTElUSUVTCisKKyAgICAvLyBOb3RlOiBUaGUgZm9sbG93aW5nIGNvdWxkIG1vcmUgZWFzaWx5IGJlIGRvbmUgd2l0aCBhIHRyYW5zbGl0ZXJhdG9yIQorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBKQU1PX05BTUVTID0geworICAgICAgICAiKEdpKSIsICJcdTExMDAiLAorICAgICAgICAiKEdHaSkiLCAiXHUxMTAxIiwKKyAgICAgICAgIihOaSkiLCAiXHUxMTAyIiwKKyAgICAgICAgIihEaSkiLCAiXHUxMTAzIiwKKyAgICAgICAgIihERCkiLCAiXHUxMTA0IiwKKyAgICAgICAgIihSKSIsICJcdTExMDUiLAorICAgICAgICAiKE1pKSIsICJcdTExMDYiLAorICAgICAgICAiKEJpKSIsICJcdTExMDciLAorICAgICAgICAiKEJCKSIsICJcdTExMDgiLAorICAgICAgICAiKFNpKSIsICJcdTExMDkiLAorICAgICAgICAiKFNTaSkiLCAiXHUxMTBBIiwKKyAgICAgICAgIihJRVVORykiLCAiXHUxMTBCIiwKKyAgICAgICAgIihKaSkiLCAiXHUxMTBDIiwKKyAgICAgICAgIihKSikiLCAiXHUxMTBEIiwKKyAgICAgICAgIihDaSkiLCAiXHUxMTBFIiwKKyAgICAgICAgIihLaSkiLCAiXHUxMTBGIiwKKyAgICAgICAgIihUaSkiLCAiXHUxMTEwIiwKKyAgICAgICAgIihQaSkiLCAiXHUxMTExIiwKKyAgICAgICAgIihIaSkiLCAiXHUxMTEyIiwKKyAgICAgICAgCisgICAgICAgICIoQSkiLCAiXHUxMTYxIiwKKyAgICAgICAgIihBRSkiLCAiXHUxMTYyIiwKKyAgICAgICAgIihZQSkiLCAiXHUxMTYzIiwKKyAgICAgICAgIihZQUUpIiwgIlx1MTE2NCIsCisgICAgICAgICIoRU8pIiwgIlx1MTE2NSIsCisgICAgICAgICIoRSkiLCAiXHUxMTY2IiwKKyAgICAgICAgIihZRU8pIiwgIlx1MTE2NyIsCisgICAgICAgICIoWUUpIiwgIlx1MTE2OCIsCisgICAgICAgICIoTykiLCAiXHUxMTY5IiwKKyAgICAgICAgIihXQSkiLCAiXHUxMTZBIiwKKyAgICAgICAgIihXQUUpIiwgIlx1MTE2QiIsCisgICAgICAgICIoT0UpIiwgIlx1MTE2QyIsCisgICAgICAgICIoWU8pIiwgIlx1MTE2RCIsCisgICAgICAgICIoVSkiLCAiXHUxMTZFIiwKKyAgICAgICAgIihXRU8pIiwgIlx1MTE2RiIsCisgICAgICAgICIoV0UpIiwgIlx1MTE3MCIsCisgICAgICAgICIoV0kpIiwgIlx1MTE3MSIsCisgICAgICAgICIoWVUpIiwgIlx1MTE3MiIsCisgICAgICAgICIoRVUpIiwgIlx1MTE3MyIsCisgICAgICAgICIoWUkpIiwgIlx1MTE3NCIsCisgICAgICAgICIoSSkiLCAiXHUxMTc1IiwKKworICAgICAgICAiKEdmKSIsICJcdTExQTgiLAorICAgICAgICAiKEdHZikiLCAiXHUxMUE5IiwKKyAgICAgICAgIihHUykiLCAiXHUxMUFBIiwKKyAgICAgICAgIihOZikiLCAiXHUxMUFCIiwKKyAgICAgICAgIihOSikiLCAiXHUxMUFDIiwKKyAgICAgICAgIihOSCkiLCAiXHUxMUFEIiwKKyAgICAgICAgIihEZikiLCAiXHUxMUFFIiwKKyAgICAgICAgIihMKSIsICJcdTExQUYiLAorICAgICAgICAiKExHKSIsICJcdTExQjAiLAorICAgICAgICAiKExNKSIsICJcdTExQjEiLAorICAgICAgICAiKExCKSIsICJcdTExQjIiLAorICAgICAgICAiKExTKSIsICJcdTExQjMiLAorICAgICAgICAiKExUKSIsICJcdTExQjQiLAorICAgICAgICAiKExQKSIsICJcdTExQjUiLAorICAgICAgICAiKExIKSIsICJcdTExQjYiLAorICAgICAgICAiKE1mKSIsICJcdTExQjciLAorICAgICAgICAiKEJmKSIsICJcdTExQjgiLAorICAgICAgICAiKEJTKSIsICJcdTExQjkiLAorICAgICAgICAiKFNmKSIsICJcdTExQkEiLAorICAgICAgICAiKFNTZikiLCAiXHUxMUJCIiwKKyAgICAgICAgIihORykiLCAiXHUxMUJDIiwKKyAgICAgICAgIihKZikiLCAiXHUxMUJEIiwKKyAgICAgICAgIihDZikiLCAiXHUxMUJFIiwKKyAgICAgICAgIihLZikiLCAiXHUxMUJGIiwKKyAgICAgICAgIihUZikiLCAiXHUxMUMwIiwKKyAgICAgICAgIihQZikiLCAiXHUxMUMxIiwKKyAgICAgICAgIihIZikiLCAiXHUxMUMyIiwKKyAgICB9OworCisgICAgc3RhdGljIEhhc2h0YWJsZSBKQU1PX1RPX05BTUU7CisgICAgc3RhdGljIEhhc2h0YWJsZSBOQU1FX1RPX0pBTU87CisKKyAgICBzdGF0aWMgeworICAgICAgICBKQU1PX1RPX05BTUUgPSBuZXcgSGFzaHRhYmxlKCk7CisgICAgICAgIE5BTUVfVE9fSkFNTyA9IG5ldyBIYXNodGFibGUoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPEpBTU9fTkFNRVMubGVuZ3RoOyBpKz0yKSB7CisgICAgICAgICAgICBKQU1PX1RPX05BTUUucHV0KEpBTU9fTkFNRVNbaSsxXSwgSkFNT19OQU1FU1tpXSk7CisgICAgICAgICAgICBOQU1FX1RPX0pBTU8ucHV0KEpBTU9fTkFNRVNbaV0sIEpBTU9fTkFNRVNbaSsxXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0IHNob3J0IG5hbWVzIHRvIGFjdHVhbCBqYW1vLiAgRS5nLiwgIngoTEcpeSIgcmV0dXJucworICAgICAqICJ4XHUxMUIweSIuICBTZWUgSkFNT19OQU1FUyBmb3IgdGFibGUgb2YgbmFtZXMuCisgICAgICovCisgICAgc3RhdGljIFN0cmluZyBuYW1lVG9KYW1vKFN0cmluZyBpbnB1dCkgeworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8aW5wdXQubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgY2hhciBjID0gaW5wdXQuY2hhckF0KGkpOworICAgICAgICAgICAgaWYgKGMgPT0gJygnKSB7CisgICAgICAgICAgICAgICAgaW50IGogPSBpbnB1dC5pbmRleE9mKCcpJywgaSsxKTsKKyAgICAgICAgICAgICAgICBpZiAoKGotaSkgPj0gMiAmJiAoai1pKSA8PSA2KSB7IC8vICIoQSkiLCAiKElFVU5HKSIKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGphbW8gPSAoU3RyaW5nKSBOQU1FX1RPX0pBTU8uZ2V0KGlucHV0LnN1YnN0cmluZyhpLCBqKzEpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGphbW8gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChqYW1vKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBqOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidWYuYXBwZW5kKGMpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0IGphbW8gdG8gc2hvcnQgbmFtZXMuICBFLmcuLCAieFx1MTFCMHkiIHJldHVybnMKKyAgICAgKiAieChMRyl5Ii4gIFNlZSBKQU1PX05BTUVTIGZvciB0YWJsZSBvZiBuYW1lcy4KKyAgICAgKi8KKyAgICBzdGF0aWMgU3RyaW5nIGphbW9Ub05hbWUoU3RyaW5nIGlucHV0KSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxpbnB1dC5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBjaGFyIGMgPSBpbnB1dC5jaGFyQXQoaSk7CisgICAgICAgICAgICBpZiAoYyA+PSAweDExMDAgJiYgYyA8PSAweDExQzIpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IChTdHJpbmcpIEpBTU9fVE9fTkFNRS5nZXQoaW5wdXQuc3Vic3RyaW5nKGksIGkrMSkpOworICAgICAgICAgICAgICAgIGlmIChuYW1lICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnVmLmFwcGVuZChjKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVmLnRvU3RyaW5nKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGVzdC90cmFuc2xpdC9Sb3VuZFRyaXBUZXN0LmphdmEgYi9zcmMvY29tL2libS90ZXN0L3RyYW5zbGl0L1JvdW5kVHJpcFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mYjNmZmRmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGVzdC90cmFuc2xpdC9Sb3VuZFRyaXBUZXN0LmphdmEKQEAgLTAsMCArMSwzNDggQEAKK3BhY2thZ2UgY29tLmlibS50ZXN0LnRyYW5zbGl0OworaW1wb3J0IGNvbS5pYm0udGVzdC4qOworaW1wb3J0IGNvbS5pYm0udGV4dC4qOworaW1wb3J0IGNvbS5pYm0udXRpbC5VdGlsaXR5OworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VFeGNlcHRpb247CisKKy8qKgorICogQHRlc3QKKyAqIEBzdW1tYXJ5IFJvdW5kIHRyaXAgdGVzdCBvZiBUcmFuc2xpdGVyYXRvcgorICovCitwdWJsaWMgY2xhc3MgUm91bmRUcmlwVGVzdCBleHRlbmRzIFRlc3RGbXdrIHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgUm91bmRUcmlwVGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0SGlyYWdhbmEoKSB0aHJvd3MgSU9FeGNlcHRpb24sIFBhcnNlRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IFRlc3QoIkxhdGluLUthbmEiLCAKKyAgICAgICAgICBUZXN0VXRpbGl0eS5MQVRJTl9TQ1JJUFQsIFRlc3RVdGlsaXR5LkhJUkFHQU5BX1NDUklQVCkKKyAgICAgICAgICAudGVzdCgiW2Etel0iLCAiW1x1MzA0MC1cdTMwOTRdIiwgdGhpcyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdEthdGFrYW5hKCkgdGhyb3dzIElPRXhjZXB0aW9uLCBQYXJzZUV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBUZXN0KCJMYXRpbi1LYW5hIiwgCisgICAgICAgICAgVGVzdFV0aWxpdHkuTEFUSU5fU0NSSVBULCBUZXN0VXRpbGl0eS5LQVRBS0FOQV9TQ1JJUFQpCisgICAgICAgICAgLnRlc3QoIltBLVpdIiwgIltcdTMwQTEtXHUzMEZBXSIsIHRoaXMpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RBcmFiaWMoKSB0aHJvd3MgSU9FeGNlcHRpb24sIFBhcnNlRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IFRlc3QoIkxhdGluLUFyYWJpYyIsIAorICAgICAgICAgIFRlc3RVdGlsaXR5LkxBVElOX1NDUklQVCwgVGVzdFV0aWxpdHkuQVJBQklDX1NDUklQVCkKKyAgICAgICAgICAudGVzdCgiW2Etel0iLCAiW1x1MDYyMC1cdTA2NUYtW1x1MDY0MF1dIiwgdGhpcyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdEhlYnJldygpIHRocm93cyBJT0V4Y2VwdGlvbiwgUGFyc2VFeGNlcHRpb24geworICAgICAgICBuZXcgVGVzdCgiTGF0aW4tSGVicmV3IiwgCisgICAgICAgICAgVGVzdFV0aWxpdHkuTEFUSU5fU0NSSVBULCBUZXN0VXRpbGl0eS5IRUJSRVdfU0NSSVBUKQorICAgICAgICAgIC50ZXN0KG51bGwsICJbXHUwNUQwLVx1MDVFRl0iLCB0aGlzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0SGFuZ3VsKCkgdGhyb3dzIElPRXhjZXB0aW9uLCBQYXJzZUV4Y2VwdGlvbiB7CisgICAgICAgIFRlc3QgdCA9IG5ldyBUZXN0SGFuZ3VsKCk7CisgICAgICAgIHQuc2V0UGFpckxpbWl0KDMwKTsgLy8gRG9uJ3QgcnVuIGZ1bGwgdGVzdCAtLSB0b28gbG9uZworICAgICAgICB0LnRlc3QobnVsbCwgbnVsbCwgdGhpcyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdEphbW8oKSB0aHJvd3MgSU9FeGNlcHRpb24sIFBhcnNlRXhjZXB0aW9uIHsKKyAgICAgICAgVGVzdCB0ID0gbmV3IFRlc3QoIkxhdGluLUphbW8iLCAKKyAgICAgICAgICBUZXN0VXRpbGl0eS5MQVRJTl9TQ1JJUFQsIFRlc3RVdGlsaXR5LkpBTU9fU0NSSVBUKTsKKyAgICAgICAgdC5zZXRFcnJvckxpbWl0KDIwMCk7IC8vIERvbid0IHJ1biBmdWxsIHRlc3QgLS0gdG9vIGxvbmcKKyAgICAgICAgLy90LnRlc3QoIltbYS16XS1bZnF2eHpdXSIsIG51bGwsIHRoaXMpOworICAgICAgICB0LnRlc3QoIlthLXpdIiwgbnVsbCwgdGhpcyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdEphbW9IYW5ndWwoKSB0aHJvd3MgSU9FeGNlcHRpb24sIFBhcnNlRXhjZXB0aW9uIHsKKyAgICAgICAgVGVzdCB0ID0gbmV3IFRlc3QoIkxhdGluLUhhbmd1bCIsIAorICAgICAgICAgIFRlc3RVdGlsaXR5LkxBVElOX1NDUklQVCwgVGVzdFV0aWxpdHkuSEFOR1VMX1NDUklQVCk7CisgICAgICAgIHQuc2V0RXJyb3JMaW1pdCg1MCk7IC8vIERvbid0IHJ1biBmdWxsIHRlc3QgLS0gdG9vIGxvbmcKKyAgICAgICAgdC50ZXN0KCJbYS16XSIsIG51bGwsIHRoaXMpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RHcmVlaygpIHRocm93cyBJT0V4Y2VwdGlvbiwgUGFyc2VFeGNlcHRpb24geworICAgICAgICBuZXcgVGVzdCgiTGF0aW4tR3JlZWsiLCAKKyAgICAgICAgICBUZXN0VXRpbGl0eS5MQVRJTl9TQ1JJUFQsIFRlc3RVdGlsaXR5LkdSRUVLX1NDUklQVCkKKyAgICAgICAgICAudGVzdChudWxsLCAiW1x1MDM4MC1cdTAzQ0ZdIiwgdGhpcyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdEN5cmlsbGljKCkgdGhyb3dzIElPRXhjZXB0aW9uLCBQYXJzZUV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBUZXN0KCJMYXRpbi1DeXJpbGxpYyIsIAorICAgICAgICAgIFRlc3RVdGlsaXR5LkxBVElOX1NDUklQVCwgVGVzdFV0aWxpdHkuQ1lSSUxMSUNfU0NSSVBUKQorICAgICAgICAgIC50ZXN0KG51bGwsICJbXHUwNDAxXHUwNDEwLVx1MDQ0Rlx1MDQ1MV0iLCB0aGlzKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY2xhc3MgVGVzdCB7CisgICAgCisgICAgICAgIFByaW50V3JpdGVyIG91dDsKKyAgICAKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgdHJhbnNsaXRlcmF0b3JJRDsgCisgICAgICAgIHByaXZhdGUgYnl0ZSBzb3VyY2VTY3JpcHQ7CisgICAgICAgIHByaXZhdGUgYnl0ZSB0YXJnZXRTY3JpcHQ7CisgICAgICAgIHByaXZhdGUgaW50IGVycm9yTGltaXQgPSBJbnRlZ2VyLk1BWF9WQUxVRTsKKyAgICAgICAgcHJpdmF0ZSBpbnQgZXJyb3JDb3VudCA9IDA7CisgICAgICAgIHByaXZhdGUgaW50IHBhaXJMaW1pdCAgPSAweDEwMDAwOworICAgICAgICBVbmljb2RlU2V0IHNvdXJjZVJhbmdlOworICAgICAgICBVbmljb2RlU2V0IHRhcmdldFJhbmdlOworICAgICAgICBUZXN0TG9nIGxvZzsKKyAgICAKKyAgICAgICAgLyoKKyAgICAgICAgICogY3JlYXRlIGEgdGVzdCBmb3IgdGhlIGdpdmVuIHNjcmlwdCB0cmFuc2xpdGVyYXRvci4KKyAgICAgICAgICovCisgICAgICAgIFRlc3QoU3RyaW5nIHRyYW5zbGl0ZXJhdG9ySUQsIAorICAgICAgICAgICAgIGJ5dGUgc291cmNlU2NyaXB0LCBieXRlIHRhcmdldFNjcmlwdCkgeworICAgICAgICAgICAgdGhpcy50cmFuc2xpdGVyYXRvcklEID0gdHJhbnNsaXRlcmF0b3JJRDsKKyAgICAgICAgICAgIHRoaXMuc291cmNlU2NyaXB0ID0gc291cmNlU2NyaXB0OworICAgICAgICAgICAgdGhpcy50YXJnZXRTY3JpcHQgPSB0YXJnZXRTY3JpcHQ7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgcHVibGljIHZvaWQgc2V0RXJyb3JMaW1pdChpbnQgbGltaXQpIHsKKyAgICAgICAgICAgIGVycm9yTGltaXQgPSBsaW1pdDsKKyAgICAgICAgfQorICAgIAorICAgICAgICBwdWJsaWMgdm9pZCBzZXRQYWlyTGltaXQoaW50IGxpbWl0KSB7CisgICAgICAgICAgICBwYWlyTGltaXQgPSBsaW1pdDsKKyAgICAgICAgfQorICAgICAgCisgICAgICAgIHB1YmxpYyB2b2lkIHRlc3QoU3RyaW5nIHNvdXJjZVJhbmdlLCBTdHJpbmcgdGFyZ2V0UmFuZ2UsIFRlc3RMb2cgbG9nKSAKKyAgICAgICAgICAgIHRocm93cyBqYXZhLmlvLklPRXhjZXB0aW9uLCBqYXZhLnRleHQuUGFyc2VFeGNlcHRpb24geworICAgICAgCisgICAgICAgICAgICBpZiAoc291cmNlUmFuZ2UgIT0gbnVsbCAmJiBzb3VyY2VSYW5nZS5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgICAgICB0aGlzLnNvdXJjZVJhbmdlID0gbmV3IFVuaWNvZGVTZXQoc291cmNlUmFuZ2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRhcmdldFJhbmdlICE9IG51bGwgJiYgdGFyZ2V0UmFuZ2UubGVuZ3RoKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgdGhpcy50YXJnZXRSYW5nZSA9IG5ldyBVbmljb2RlU2V0KHRhcmdldFJhbmdlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHRoaXMuc291cmNlUmFuZ2UgPT0gbnVsbCkgdGhpcy5zb3VyY2VSYW5nZSA9IG5ldyBVbmljb2RlU2V0KCJbYS16QS1aXSIpOworCisgICAgICAgICAgICB0aGlzLmxvZyA9IGxvZzsKKworICAgICAgICAgICAgbG9nLmxvZ2xuKFV0aWxpdHkuZXNjYXBlKCJTb3VyY2U6ICIgKyB0aGlzLnNvdXJjZVJhbmdlKSk7CisgICAgICAgICAgICBsb2cubG9nbG4oVXRpbGl0eS5lc2NhcGUoIlRhcmdldDogIiArIHRoaXMudGFyZ2V0UmFuZ2UpKTsKKworICAgICAgICAgICAgLy8gbWFrZSBhIFVURi04IG91dHB1dCBmaWxlIHdlIGNhbiByZWFkIHdpdGggYSBicm93c2VyCisKKyAgICAgICAgICAgIC8vIG5vdGU6IGNoZWNrIHRoYXQgZXZlcnkgdHJhbnNsaXRlcmF0b3IgdHJhbnNsaXRlcmF0ZXMgdGhlIG51bGwgc3RyaW5nIGNvcnJlY3RseSEKKworICAgICAgICAgICAgU3RyaW5nIGxvZ0ZpbGVOYW1lID0gInRlc3RfIiArIHRyYW5zbGl0ZXJhdG9ySUQgKyAiXyIKKyAgICAgICAgICAgICAgICArIHNvdXJjZVNjcmlwdCArICJfIiArIHRhcmdldFNjcmlwdCArICIuaHRtbCI7CisKKyAgICAgICAgICAgIGxvZy5sb2dsbigiQ3JlYXRpbmcgbG9nIGZpbGUgIiArIGxvZ0ZpbGVOYW1lKTsKKworICAgICAgICAgICAgb3V0ID0gbmV3IFByaW50V3JpdGVyKG5ldyBCdWZmZXJlZFdyaXRlcihuZXcgT3V0cHV0U3RyZWFtV3JpdGVyKAorICAgICAgICAgICAgICAgICAgICAgIG5ldyBGaWxlT3V0cHV0U3RyZWFtKGxvZ0ZpbGVOYW1lKSwgIlVURjgiKSwgNCoxMDI0KSk7CisgICAgICAgICAgICAvL291dC53cml0ZSgnXHVGRkVGJyk7ICAgIC8vIEJPTQorICAgICAgICAgICAgb3V0LnByaW50bG4oIjwhRE9DVFlQRSBIVE1MIFBVQkxJQyBcIi0vL1czQy8vRFREIEhUTUwgNC4wIFRyYW5zaXRpb25hbC8vRU5cIj4iKTsKKyAgICAgICAgICAgIG91dC5wcmludGxuKCI8SFRNTD48SEVBRD4iKTsKKyAgICAgICAgICAgIG91dC5wcmludGxuKCI8TUVUQSBjb250ZW50PVwidGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04XCIgaHR0cC1lcXVpdj1Db250ZW50LVR5cGU+PC9IRUFEPiIpOworICAgICAgICAgICAgb3V0LnByaW50bG4oIjxCT0RZPiIpOworICAgICAgICAgICAgb3V0LnByaW50bG4oIjxUQUJMRT4iKTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgdGVzdDIoKTsKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRsbigiPC9UQUJMRT4iKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFRlc3RUcnVuY2F0ZWQgZSkgeworICAgICAgICAgICAgICAgIG91dC5wcmludGxuKCI8L1RBQkxFPiIgKyBlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXQucHJpbnRsbigiPC9CT0RZPjwvSFRNTD4iKTsKKyAgICAgICAgICAgIG91dC5jbG9zZSgpOworCisgICAgICAgICAgICBpZiAoZXJyb3JDb3VudCA+IDApIHsKKyAgICAgICAgICAgICAgICBsb2cuZXJybG4odHJhbnNsaXRlcmF0b3JJRCArICIgZXJyb3JzOiAiICsgZXJyb3JDb3VudCArICIsIHNlZSAiICsgbG9nRmlsZU5hbWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsb2cubG9nbG4odHJhbnNsaXRlcmF0b3JJRCArICIgb2siKTsKKyAgICAgICAgICAgICAgICBuZXcgRmlsZShsb2dGaWxlTmFtZSkuZGVsZXRlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCB0ZXN0MigpIHsKKworICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3Igc291cmNlVG9UYXJnZXQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSh0cmFuc2xpdGVyYXRvcklEKTsKKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHRhcmdldFRvU291cmNlID0gc291cmNlVG9UYXJnZXQuZ2V0SW52ZXJzZSgpOworCisgICAgICAgICAgICBsb2cubG9nbG4oIkNoZWNraW5nIHRoYXQgc291cmNlIGNoYXJhY3RlcnMgY29udmVydCB0byB0YXJnZXQgLSBTaW5nbGVzIik7CisKKyAgICAgICAgICAgIGZvciAoY2hhciBjID0gMDsgYyA8IDB4RkZGRjsgKytjKSB7CisgICAgICAgICAgICAgICAgaWYgKFRlc3RVdGlsaXR5LmlzVW5hc3NpZ25lZChjKSB8fAorICAgICAgICAgICAgICAgICAgICAhaXNTb3VyY2UoYykpIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIFN0cmluZyBjcyA9IFN0cmluZy52YWx1ZU9mKGMpOworICAgICAgICAgICAgICAgIFN0cmluZyB0YXJnID0gc291cmNlVG9UYXJnZXQudHJhbnNsaXRlcmF0ZShTdHJpbmcudmFsdWVPZihjcykpOworICAgICAgICAgICAgICAgIGlmICghaXNSZWNlaXZpbmdUYXJnZXQodGFyZykpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nV3JvbmdTY3JpcHQoIlNvdXJjZS1UYXJnZXQiLCBjcywgdGFyZyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsb2cubG9nbG4oIkNoZWNraW5nIHRoYXQgc291cmNlIGNoYXJhY3RlcnMgY29udmVydCB0byB0YXJnZXQgLSBEb3VibGVzIik7CisKKyAgICAgICAgICAgIGZvciAoY2hhciBjID0gMDsgYyA8IDB4RkZGRjsgKytjKSB7IAorICAgICAgICAgICAgICAgIGlmIChUZXN0VXRpbGl0eS5pc1VuYXNzaWduZWQoYykgfHwKKyAgICAgICAgICAgICAgICAgICAgIWlzU291cmNlKGMpKSBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBmb3IgKGNoYXIgZCA9IDA7IGQgPCAweEZGRkY7ICsrZCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoVGVzdFV0aWxpdHkuaXNVbmFzc2lnbmVkKGQpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAhaXNTb3VyY2UoZCkpIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgY3MgPSBTdHJpbmcudmFsdWVPZihjKSArIGQ7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0YXJnID0gc291cmNlVG9UYXJnZXQudHJhbnNsaXRlcmF0ZShjcyk7CisgICAgICAgICAgICAgICAgICAgIGlmICghaXNSZWNlaXZpbmdUYXJnZXQodGFyZykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ1dyb25nU2NyaXB0KCJTb3VyY2UtVGFyZ2V0IiwgY3MsIHRhcmcpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsb2cubG9nbG4oIkNoZWNraW5nIHRoYXQgdGFyZ2V0IGNoYXJhY3RlcnMgY29udmVydCB0byBzb3VyY2UgYW5kIGJhY2sgLSBTaW5nbGVzIik7CisKKyAgICAgICAgICAgIGZvciAoY2hhciBjID0gMDsgYyA8IDB4RkZGRjsgKytjKSB7CisgICAgICAgICAgICAgICAgaWYgKFRlc3RVdGlsaXR5LmlzVW5hc3NpZ25lZChjKSB8fAorICAgICAgICAgICAgICAgICAgICAhaXNUYXJnZXQoYykpIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIFN0cmluZyBjcyA9IFN0cmluZy52YWx1ZU9mKGMpOworICAgICAgICAgICAgICAgIFN0cmluZyB0YXJnID0gdGFyZ2V0VG9Tb3VyY2UudHJhbnNsaXRlcmF0ZShjcyk7CisgICAgICAgICAgICAgICAgU3RyaW5nIHJldmVyc2UgPSBzb3VyY2VUb1RhcmdldC50cmFuc2xpdGVyYXRlKHRhcmcpOworICAgICAgICAgICAgICAgIGlmICghaXNSZWNlaXZpbmdTb3VyY2UodGFyZykpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nV3JvbmdTY3JpcHQoIlRhcmdldC1Tb3VyY2UiLCBjcywgdGFyZyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghY3MuZXF1YWxzKHJldmVyc2UpKSB7CisgICAgICAgICAgICAgICAgICAgIGxvZ1JvdW5kVHJpcEZhaWx1cmUoY3MsIHRhcmcsIHJldmVyc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbG9nLmxvZ2xuKCJDaGVja2luZyB0aGF0IHRhcmdldCBjaGFyYWN0ZXJzIGNvbnZlcnQgdG8gc291cmNlIGFuZCBiYWNrIC0gRG91YmxlcyIpOworICAgICAgICAgICAgaW50IGNvdW50ID0gMDsKKyAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCJhYSIpOworICAgICAgICAgICAgZm9yIChjaGFyIGMgPSAwOyBjIDwgMHhGRkZGOyArK2MpIHsKKyAgICAgICAgICAgICAgICBpZiAoVGVzdFV0aWxpdHkuaXNVbmFzc2lnbmVkKGMpIHx8CisgICAgICAgICAgICAgICAgICAgICFpc1RhcmdldChjKSkgY29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKCsrY291bnQgPiBwYWlyTGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFRlc3RUcnVuY2F0ZWQoIlRlc3QgdHJ1bmNhdGVkIGF0ICIgKyBwYWlyTGltaXQgKyAiIHggNjRrIHBhaXJzIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJ1Zi5zZXRDaGFyQXQoMCwgYyk7CisgICAgICAgICAgICAgICAgbG9nLmxvZyhUZXN0VXRpbGl0eS5oZXgoYykpOworICAgICAgICAgICAgICAgIGZvciAoY2hhciBkID0gMDsgZCA8IDB4RkZGRjsgKytkKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChUZXN0VXRpbGl0eS5pc1VuYXNzaWduZWQoZCkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICFpc1RhcmdldChkKSkgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5zZXRDaGFyQXQoMSwgZCk7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBjcyA9IGJ1Zi50b1N0cmluZygpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgdGFyZyA9IHRhcmdldFRvU291cmNlLnRyYW5zbGl0ZXJhdGUoY3MpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgcmV2ZXJzZSA9IHNvdXJjZVRvVGFyZ2V0LnRyYW5zbGl0ZXJhdGUodGFyZyk7CisgICAgICAgICAgICAgICAgICAgIGlmICghaXNSZWNlaXZpbmdTb3VyY2UodGFyZykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ1dyb25nU2NyaXB0KCJUYXJnZXQtU291cmNlIiwgY3MsIHRhcmcpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFjcy5lcXVhbHMocmV2ZXJzZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ1JvdW5kVHJpcEZhaWx1cmUoY3MsIHRhcmcsIHJldmVyc2UpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbG9nLmxvZ2xuKCIiKTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIHZvaWQgbG9nV3JvbmdTY3JpcHQoU3RyaW5nIGxhYmVsLCBTdHJpbmcgZnJvbSwgU3RyaW5nIHRvKSB7CisgICAgICAgICAgICBvdXQucHJpbnRsbigiPFRSPjxURD5GYWlsICIgKyBsYWJlbCArICI6PC9URD48VEQ+PEZPTlQgU0laRT1cIjZcIj4iICsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gKyAiPC9GT05UPjwvVEQ+PFREPigiICsKKyAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RVdGlsaXR5LmhleChmcm9tKSArICIpID0+PC9URD48VEQ+PEZPTlQgU0laRT1cIjZcIj4iICsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvICsgIjwvRk9OVD48L1REPjxURD4oIiArCisgICAgICAgICAgICAgICAgICAgICAgICBUZXN0VXRpbGl0eS5oZXgodG8pICsgIik8L1REPjwvVFI+IiApOworICAgICAgICAgICAgaWYgKCsrZXJyb3JDb3VudCA+PSBlcnJvckxpbWl0KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFRlc3RUcnVuY2F0ZWQoIlRlc3QgdHJ1bmNhdGVkOyB0b28gbWFueSBmYWlsdXJlcyIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZmluYWwgdm9pZCBsb2dSb3VuZFRyaXBGYWlsdXJlKFN0cmluZyBmcm9tLCBTdHJpbmcgdG8sIFN0cmluZyBiYWNrKSB7CisgICAgICAgICAgICBvdXQucHJpbnRsbigiPFRSPjxURD5GYWlsIFJvdW5kdHJpcDo8L1REPjxURD48Rk9OVCBTSVpFPVwiNlwiPiIgKworICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSArICI8L0ZPTlQ+PC9URD48VEQ+KCIgKworICAgICAgICAgICAgICAgICAgICAgICAgVGVzdFV0aWxpdHkuaGV4KGZyb20pICsgIikgPT48L1REPjxURD4iICsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvICsgIjwvVEQ+PFREPigiICsKKyAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RVdGlsaXR5LmhleCh0bykgKyAiKSA9PjwvVEQ+PFREPjxGT05UIFNJWkU9XCI2XCI+IiArCisgICAgICAgICAgICAgICAgICAgICAgICBiYWNrICsgIjwvVEQ+PFREPigiICsKKyAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RVdGlsaXR5LmhleChiYWNrKSArICIpPC9URD48L1RSPiIgKTsKKyAgICAgICAgICAgIGlmICgrK2Vycm9yQ291bnQgPj0gZXJyb3JMaW1pdCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBUZXN0VHJ1bmNhdGVkKCJUZXN0IHRydW5jYXRlZDsgdG9vIG1hbnkgZmFpbHVyZXMiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIENoYXJhY3RlcnMgdG8gZmlsdGVyIGZvciBzb3VyY2UtdGFyZ2V0IG1hcHBpbmcgY29tcGxldGVuZXNzCisgICAgICAgICAqIFR5cGljYWxseSBpcyBiYXNlIGFscGhhYmV0LCBtaW51cyBleHRlbmRlZCBjaGFyYWN0ZXJzCisgICAgICAgICAqIERlZmF1bHQgaXMgQVNDSUkgbGV0dGVycyBmb3IgTGF0aW4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzU291cmNlKGNoYXIgYykgeworICAgICAgICAgICAgYnl0ZSBzY3JpcHQgPSBUZXN0VXRpbGl0eS5nZXRTY3JpcHQoYyk7CisgICAgICAgICAgICBpZiAoc2NyaXB0ICE9IHNvdXJjZVNjcmlwdCkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFUZXN0VXRpbGl0eS5pc0xldHRlcihjKSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFzb3VyY2VSYW5nZS5jb250YWlucyhjKSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBDaGFyYWN0ZXJzIHRvIGNoZWNrIGZvciB0YXJnZXQgYmFjayB0byBzb3VyY2UgbWFwcGluZy4KKyAgICAgICAgICogVHlwaWNhbGx5IHRoZSBzYW1lIGFzIHRoZSB0YXJnZXQgc2NyaXB0LCBwbHVzIHB1bmN0dWF0aW9uCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1JlY2VpdmluZ1NvdXJjZShjaGFyIGMpIHsKKyAgICAgICAgICAgIGJ5dGUgc2NyaXB0ID0gVGVzdFV0aWxpdHkuZ2V0U2NyaXB0KGMpOworICAgICAgICAgICAgcmV0dXJuIChzY3JpcHQgPT0gc291cmNlU2NyaXB0IHx8IHNjcmlwdCA9PSBUZXN0VXRpbGl0eS5DT01NT05fU0NSSVBUKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIENoYXJhY3RlcnMgdG8gZmlsdGVyIGZvciB0YXJnZXQtc291cmNlIG1hcHBpbmcKKyAgICAgICAgICogVHlwaWNhbGx5IGlzIGJhc2UgYWxwaGFiZXQsIG1pbnVzIGV4dGVuZGVkIGNoYXJhY3RlcnMKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzVGFyZ2V0KGNoYXIgYykgeworICAgICAgICAgICAgYnl0ZSBzY3JpcHQgPSBUZXN0VXRpbGl0eS5nZXRTY3JpcHQoYyk7CisgICAgICAgICAgICBpZiAoc2NyaXB0ICE9IHRhcmdldFNjcmlwdCkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKCFUZXN0VXRpbGl0eS5pc0xldHRlcihjKSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKHRhcmdldFJhbmdlICE9IG51bGwgJiYgIXRhcmdldFJhbmdlLmNvbnRhaW5zKGMpKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIENoYXJhY3RlcnMgdG8gY2hlY2sgZm9yIHRhcmdldC1zb3VyY2UgbWFwcGluZworICAgICAgICAgKiBUeXBpY2FsbHkgdGhlIHNhbWUgYXMgdGhlIHNvdXJjZSBzY3JpcHQsIHBsdXMgcHVuY3R1YXRpb24KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzUmVjZWl2aW5nVGFyZ2V0KGNoYXIgYykgeworICAgICAgICAgICAgYnl0ZSBzY3JpcHQgPSBUZXN0VXRpbGl0eS5nZXRTY3JpcHQoYyk7CisgICAgICAgICAgICByZXR1cm4gKHNjcmlwdCA9PSB0YXJnZXRTY3JpcHQgfHwgc2NyaXB0ID09IFRlc3RVdGlsaXR5LkNPTU1PTl9TQ1JJUFQpOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgYm9vbGVhbiBpc1NvdXJjZShTdHJpbmcgcykgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlzU291cmNlKHMuY2hhckF0KGkpKSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBib29sZWFuIGlzVGFyZ2V0KFN0cmluZyBzKSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHMubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgICAgIGlmICghaXNUYXJnZXQocy5jaGFyQXQoaSkpKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIGJvb2xlYW4gaXNSZWNlaXZpbmdTb3VyY2UoU3RyaW5nIHMpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpc1JlY2VpdmluZ1NvdXJjZShzLmNoYXJBdChpKSkpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgYm9vbGVhbiBpc1JlY2VpdmluZ1RhcmdldChTdHJpbmcgcykgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlzUmVjZWl2aW5nVGFyZ2V0KHMuY2hhckF0KGkpKSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgY2xhc3MgVGVzdFRydW5jYXRlZCBleHRlbmRzIFJ1bnRpbWVFeGNlcHRpb24geworICAgICAgICAgICAgVGVzdFRydW5jYXRlZChTdHJpbmcgbXNnKSB7CisgICAgICAgICAgICAgICAgc3VwZXIobXNnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBjbGFzcyBUZXN0SGFuZ3VsIGV4dGVuZHMgVGVzdCB7CisgICAgICAgIFRlc3RIYW5ndWwgKCkgeworICAgICAgICAgICAgc3VwZXIoIkphbW8tSGFuZ3VsIiwgVGVzdFV0aWxpdHkuSkFNT19TQ1JJUFQsIFRlc3RVdGlsaXR5LkhBTkdVTF9TQ1JJUFQpOworICAgICAgICB9CisgIAorICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1NvdXJjZShjaGFyIGMpIHsKKyAgICAgICAgICAgIGlmICgweDExMTMgPD0gYyAmJiBjIDw9IDB4MTE2MCkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKDB4MTE3NiA8PSBjICYmIGMgPD0gMHgxMUY5KSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoMHgzMTMxIDw9IGMgJiYgYyA8PSAweDMxOEUpIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBzdXBlci5pc1NvdXJjZShjKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3QvdHJhbnNsaXQvVGVzdFV0aWxpdHkuamF2YSBiL3NyYy9jb20vaWJtL3Rlc3QvdHJhbnNsaXQvVGVzdFV0aWxpdHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41NGY5OTE2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGVzdC90cmFuc2xpdC9UZXN0VXRpbGl0eS5qYXZhCkBAIC0wLDAgKzEsMzk5IEBACitwYWNrYWdlIGNvbS5pYm0udGVzdC50cmFuc2xpdDsKK2ltcG9ydCBjb20uaWJtLnRleHQuVUNoYXJhY3RlcjsKK2ltcG9ydCBjb20uaWJtLnRleHQuVUNoYXJhY3RlckNhdGVnb3J5OworCitwdWJsaWMgZmluYWwgY2xhc3MgVGVzdFV0aWxpdHkgeworCisgICAgcHVibGljIHN0YXRpYyBieXRlIGdldFNjcmlwdChjaGFyIGMpIHsKKyAgICAgIHJldHVybiBnZXRTY3JpcHQoZ2V0QmxvY2soYykpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIGJ5dGUgZ2V0U2NyaXB0KGJ5dGUgYmxvY2spIHsKKyAgICAgIHJldHVybiBibG9ja1RvU2NyaXB0W2Jsb2NrXTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyBieXRlIGdldEJsb2NrKGNoYXIgYykgeworICAgICAgaW50IGluZGV4ID0gYyA+PiA3OworICAgICAgYnl0ZSBibG9jayA9IGNoYXJUb0Jsb2NrW2luZGV4XTsKKyAgICAgIHdoaWxlIChibG9jayA8IDApIHsgLy8gdGFrZSBjYXJlIG9mIGV4Y2VwdGlvbnMsIGJsb2NrcyBzcGxpdCBhY3Jvc3MgMTI4IGJvdW5kYXJpZXMKKyAgICAgICAgICBpbnRbXSB0dXBsZSA9IHNwbGl0Wy1ibG9jay0xXTsKKyAgICAgICAgICBpZiAoYyA8IHR1cGxlWzBdKSBibG9jayA9IChieXRlKXR1cGxlWzFdOworICAgICAgICAgIGVsc2UgYmxvY2sgPSAoYnl0ZSl0dXBsZVsyXTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBibG9jazsKKyAgICB9CisgICAgICAgICAgICAgICAKKyAgICAvLyByZXR1cm5zIG5leHQgbGV0dGVyIG9mIHNjcmlwdCwgb3IgMHhGRkZGIGlmIGRvbmUKKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIGNoYXIgZ2V0TmV4dExldHRlcihjaGFyIGMsIGJ5dGUgc2NyaXB0KSB7CisgICAgICAgIHdoaWxlIChjIDwgMHhGRkZGKSB7CisgICAgICAgICAgICArK2M7CisgICAgICAgICAgICBpZiAoZ2V0U2NyaXB0KGMpID09IHNjcmlwdCAmJiBDaGFyYWN0ZXIuaXNMZXR0ZXIoYykpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYzsKKyAgICB9CisgICAgCisgICAgLy8gU3VwcGxlbWVudHMgdG8gQ2hhcmFjdGVyIG1ldGhvZHM7IHRoZXNlIG1ldGhvZHMgZ28gdGhyb3VnaAorICAgIC8vIFVDaGFyYWN0ZXIgaWYgcG9zc2libGUuICBJZiBub3QsIHRoZXkgZmFsbCBiYWNrIHRvIENoYXJhY3Rlci4KKworICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1VuYXNzaWduZWQoY2hhciBjKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gVUNoYXJhY3Rlci5nZXRUeXBlKGMpID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5VTkFTU0lHTkVEOworICAgICAgICB9IGNhdGNoIChOdWxsUG9pbnRlckV4Y2VwdGlvbiBlKSB7fQorICAgICAgICByZXR1cm4gQ2hhcmFjdGVyLmdldFR5cGUoYykgPT0gQ2hhcmFjdGVyLlVOQVNTSUdORUQ7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzTGV0dGVyKGNoYXIgYykgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIFVDaGFyYWN0ZXIuaXNMZXR0ZXIoYyk7CisgICAgICAgIH0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIGUpIHt9CisgICAgICAgIHJldHVybiBDaGFyYWN0ZXIuaXNMZXR0ZXIoYyk7CisgICAgfQorCisJcHVibGljIHN0YXRpYyBTdHJpbmcgaGV4KGNoYXIgY2gpIHsKKwkJU3RyaW5nIGZvbyA9IEludGVnZXIudG9TdHJpbmcoY2gsMTYpLnRvVXBwZXJDYXNlKCk7CisJCXJldHVybiAiMDAwMCIuc3Vic3RyaW5nKDAsNC1mb28ubGVuZ3RoKCkpICsgZm9vOworCX0KKyAgICAKKwlwdWJsaWMgc3RhdGljIFN0cmluZyBoZXgoU3RyaW5nIHMpIHsKKwkgIHJldHVybiBoZXgocywiLCIpOworCX0KKwkKKwlwdWJsaWMgc3RhdGljIFN0cmluZyBoZXgoU3RyaW5nIHMsIFN0cmluZyBzZXApIHsKKwkgIGlmIChzLmxlbmd0aCgpID09IDApIHJldHVybiAiIjsKKwkgIFN0cmluZyByZXN1bHQgPSBoZXgocy5jaGFyQXQoMCkpOworCSAgZm9yIChpbnQgaSA9IDE7IGkgPCBzLmxlbmd0aCgpOyArK2kpIHsKKwkgICAgcmVzdWx0ICs9IHNlcDsKKwkgICAgcmVzdWx0ICs9IGhleChzLmNoYXJBdChpKSk7CisJICB9CisJICByZXR1cm4gcmVzdWx0OworCX0KKwkKKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQmxvY2tzOiAiKTsKKyAgICBieXRlIGxhc3RibG9jayA9IC0xMjg7CisgICAgZm9yIChjaGFyIGNjID0gMDsgY2MgPCAweEZGRkY7ICsrY2MpIHsKKyAgICAgIGJ5dGUgYmxvY2sgPSBUZXN0VXRpbGl0eS5nZXRCbG9jayhjYyk7CisgICAgICBpZiAoYmxvY2sgIT0gbGFzdGJsb2NrKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihUZXN0VXRpbGl0eS5oZXgoY2MpICsgIlx0IiArIGJsb2NrKTsKKyAgICAgICAgbGFzdGJsb2NrID0gYmxvY2s7CisgICAgICB9CisgICAgfQorICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiU2NyaXB0czogIik7CisgICAgYnl0ZSBsYXN0U2NyaXB0ID0gLTEyODsKKyAgICBmb3IgKGNoYXIgY2MgPSAwOyBjYyA8IDB4RkZGRjsgKytjYykgeworICAgICAgYnl0ZSBzY3JpcHQgPSBUZXN0VXRpbGl0eS5nZXRTY3JpcHQoY2MpOworICAgICAgaWYgKHNjcmlwdCAhPSBsYXN0U2NyaXB0KSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihUZXN0VXRpbGl0eS5oZXgoY2MpICsgIlx0IiArIHNjcmlwdCk7CisgICAgICAgIGxhc3RTY3JpcHQgPSBzY3JpcHQ7CisgICAgICB9CisgICAgfQorICB9CisgICAgICAKKwkKKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGJ5dGUgLy8gU0NSSVBUIENPREUKKyAgICAgICAgQ09NTU9OX1NDUklQVCA9IDAsCisgICAgICAgIExBVElOX1NDUklQVCA9IDEsCisgICAgICAgIEdSRUVLX1NDUklQVCA9IDIsCisgICAgICAgIENZUklMTElDX1NDUklQVCA9IDMsCisgICAgICAgIEFSTUVOSUFOX1NDUklQVCA9IDQsCisgICAgICAgIEhFQlJFV19TQ1JJUFQgPSA1LAorICAgICAgICBBUkFCSUNfU0NSSVBUID0gNiwKKyAgICAgICAgU1lSSUFDX1NDUklQVCA9IDcsCisgICAgICAgIFRIQUFOQV9TQ1JJUFQgPSA4LCAKKyAgICAgICAgREVWQU5BR0FSSV9TQ1JJUFQgPSA5LAorICAgICAgICBCRU5HQUxJX1NDUklQVCA9IDEwLAorICAgICAgICBHVVJNVUtISV9TQ1JJUFQgPSAxMSwKKyAgICAgICAgR1VKQVJBVElfU0NSSVBUID0gMTIsCisgICAgICAgIE9SSVlBX1NDUklQVCA9IDEzLAorICAgICAgICBUQU1JTF9TQ1JJUFQgPSAxNCwKKyAgICAgICAgVEVMVUdVX1NDUklQVCA9IDE1LAorICAgICAgICBLQU5OQURBX1NDUklQVCA9IDE2LAorICAgICAgICBNQUxBWUFMQU1fU0NSSVBUID0gMTcsCisgICAgICAgIFNJTkhBTEFfU0NSSVBUID0gMTgsCisgICAgICAgIFRIQUlfU0NSSVBUID0gMTksCisgICAgICAgIExBT19TQ1JJUFQgPSAyMCwKKyAgICAgICAgVElCRVRBTl9TQ1JJUFQgPSAyMSwKKyAgICAgICAgTVlBTk1BUl9TQ1JJUFQgPSAyMiwKKyAgICAgICAgR0VPUkdJQU5fU0NSSVBUID0gMjMsCisgICAgICAgIEpBTU9fU0NSSVBUID0gMjQsCisgICAgICAgIEhBTkdVTF9TQ1JJUFQgPSAyNSwKKyAgICAgICAgRVRISU9QSUNfU0NSSVBUID0gMjYsCisgICAgICAgIENIRVJPS0VFX1NDUklQVCA9IDI3LAorICAgICAgICBBQk9SSUdJTkFMX1NDUklQVCA9IDI4LAorICAgICAgICBPR0hBTV9TQ1JJUFQgPSAyOSwKKyAgICAgICAgUlVOSUNfU0NSSVBUID0gMzAsCisgICAgICAgIEtITUVSX1NDUklQVCA9IDMxLAorICAgICAgICBNT05HT0xJQU5fU0NSSVBUID0gMzIsCisgICAgICAgIEhJUkFHQU5BX1NDUklQVCA9IDMzLAorICAgICAgICBLQVRBS0FOQV9TQ1JJUFQgPSAzNCwKKyAgICAgICAgQk9QT01PRk9fU0NSSVBUID0gMzUsCisgICAgICAgIEhBTl9TQ1JJUFQgPSAzNiwKKyAgICAgICAgWUlfU0NSSVBUID0gMzc7CisgICAgCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBieXRlIC8vIGJsb2NrIGNvZGUKKyAgICAgICAgUkVTRVJWRURfQkxPQ0sgPSAwLAorICAgICAgICBCQVNJQ19MQVRJTiA9IDEsCisgICAgICAgIExBVElOXzFfU1VQUExFTUVOVCA9IDIsCisgICAgICAgIExBVElOX0VYVEVOREVEX0EgPSAzLAorICAgICAgICBMQVRJTl9FWFRFTkRFRF9CID0gNCwKKyAgICAgICAgSVBBX0VYVEVOU0lPTlMgPSA1LAorICAgICAgICBTUEFDSU5HX01PRElGSUVSX0xFVFRFUlMgPSA2LAorICAgICAgICBDT01CSU5JTkdfRElBQ1JJVElDQUxfTUFSS1MgPSA3LAorICAgICAgICBHUkVFSyA9IDgsCisgICAgICAgIENZUklMTElDID0gOSwKKyAgICAgICAgQVJNRU5JQU4gPSAxMCwKKyAgICAgICAgSEVCUkVXID0gMTEsCisgICAgICAgIEFSQUJJQyA9IDEyLAorICAgICAgICBTWVJJQUMgPSAxMywKKyAgICAgICAgVEhBQU5BID0gMTQsCisgICAgICAgIERFVkFOQUdBUkkgPSAxNSwKKyAgICAgICAgQkVOR0FMSSA9IDE2LAorICAgICAgICBHVVJNVUtISSA9IDE3LAorICAgICAgICBHVUpBUkFUSSA9IDE4LAorICAgICAgICBPUklZQSA9IDE5LAorICAgICAgICBUQU1JTCA9IDIwLAorICAgICAgICBURUxVR1UgPSAyMSwKKyAgICAgICAgS0FOTkFEQSA9IDIyLAorICAgICAgICBNQUxBWUFMQU0gPSAyMywKKyAgICAgICAgU0lOSEFMQSA9IDI0LAorICAgICAgICBUSEFJID0gMjUsCisgICAgICAgIExBTyA9IDI2LAorICAgICAgICBUSUJFVEFOID0gMjcsCisgICAgICAgIE1ZQU5NQVIgPSAyOCwKKyAgICAgICAgR0VPUkdJQU4gPSAyOSwKKyAgICAgICAgSEFOR1VMX0pBTU8gPSAzMCwKKyAgICAgICAgRVRISU9QSUMgPSAzMSwKKyAgICAgICAgQ0hFUk9LRUUgPSAzMiwKKyAgICAgICAgVU5JRklFRF9DQU5BRElBTl9BQk9SSUdJTkFMX1NZTExBQklDUyA9IDMzLAorICAgICAgICBPR0hBTSA9IDM0LAorICAgICAgICBSVU5JQyA9IDM1LAorICAgICAgICBLSE1FUiA9IDM2LAorICAgICAgICBNT05HT0xJQU4gPSAzNywKKyAgICAgICAgTEFUSU5fRVhURU5ERURfQURESVRJT05BTCA9IDM4LAorICAgICAgICBHUkVFS19FWFRFTkRFRCA9IDM5LAorICAgICAgICBHRU5FUkFMX1BVTkNUVUFUSU9OID0gNDAsCisgICAgICAgIFNVUEVSU0NSSVBUU19BTkRfU1VCU0NSSVBUUyA9IDQxLAorICAgICAgICBDVVJSRU5DWV9TWU1CT0xTID0gNDIsCisgICAgICAgIENPTUJJTklOR19NQVJLU19GT1JfU1lNQk9MUyA9IDQzLAorICAgICAgICBMRVRURVJMSUtFX1NZTUJPTFMgPSA0NCwKKyAgICAgICAgTlVNQkVSX0ZPUk1TID0gNDUsCisgICAgICAgIEFSUk9XUyA9IDQ2LAorICAgICAgICBNQVRIRU1BVElDQUxfT1BFUkFUT1JTID0gNDcsCisgICAgICAgIE1JU0NFTExBTkVPVVNfVEVDSE5JQ0FMID0gNDgsCisgICAgICAgIENPTlRST0xfUElDVFVSRVMgPSA0OSwKKyAgICAgICAgT1BUSUNBTF9DSEFSQUNURVJfUkVDT0dOSVRJT04gPSA1MCwKKyAgICAgICAgRU5DTE9TRURfQUxQSEFOVU1FUklDUyA9IDUxLAorICAgICAgICBCT1hfRFJBV0lORyA9IDUyLAorICAgICAgICBCTE9DS19FTEVNRU5UUyA9IDUzLAorICAgICAgICBHRU9NRVRSSUNfU0hBUEVTID0gNTQsCisgICAgICAgIE1JU0NFTExBTkVPVVNfU1lNQk9MUyA9IDU1LAorICAgICAgICBESU5HQkFUUyA9IDU2LAorICAgICAgICBCUkFJTExFX1BBVFRFUk5TID0gNTcsCisgICAgICAgIENKS19SQURJQ0FMU19TVVBQTEVNRU5UID0gNTgsCisgICAgICAgIEtBTkdYSV9SQURJQ0FMUyA9IDU5LAorICAgICAgICBJREVPR1JBUEhJQ19ERVNDUklQVElPTl9DSEFSQUNURVJTID0gNjAsCisgICAgICAgIENKS19TWU1CT0xTX0FORF9QVU5DVFVBVElPTiA9IDYxLAorICAgICAgICBISVJBR0FOQSA9IDYyLAorICAgICAgICBLQVRBS0FOQSA9IDYzLAorICAgICAgICBCT1BPTU9GTyA9IDY0LAorICAgICAgICBIQU5HVUxfQ09NUEFUSUJJTElUWV9KQU1PID0gNjUsCisgICAgICAgIEtBTkJVTiA9IDY2LAorICAgICAgICBCT1BPTU9GT19FWFRFTkRFRCA9IDY3LAorICAgICAgICBFTkNMT1NFRF9DSktfTEVUVEVSU19BTkRfTU9OVEhTID0gNjgsCisgICAgICAgIENKS19DT01QQVRJQklMSVRZID0gNjksCisgICAgICAgIENKS19VTklGSUVEX0lERU9HUkFQSFNfRVhURU5TSU9OX0EgPSA3MCwKKyAgICAgICAgQ0pLX1VOSUZJRURfSURFT0dSQVBIUyA9IDcxLAorICAgICAgICBZSV9TWUxMQUJMRVMgPSA3MiwKKyAgICAgICAgWUlfUkFESUNBTFMgPSA3MywKKyAgICAgICAgSEFOR1VMX1NZTExBQkxFUyA9IDc0LAorICAgICAgICBISUdIX1NVUlJPR0FURVMgPSA3NSwKKyAgICAgICAgSElHSF9QUklWQVRFX1VTRV9TVVJST0dBVEVTID0gNzYsCisgICAgICAgIExPV19TVVJST0dBVEVTID0gNzcsCisgICAgICAgIFBSSVZBVEVfVVNFID0gNzgsCisgICAgICAgIENKS19DT01QQVRJQklMSVRZX0lERU9HUkFQSFMgPSA3OSwKKyAgICAgICAgQUxQSEFCRVRJQ19QUkVTRU5UQVRJT05fRk9STVMgPSA4MCwKKyAgICAgICAgQVJBQklDX1BSRVNFTlRBVElPTl9GT1JNU19BID0gODEsCisgICAgICAgIENPTUJJTklOR19IQUxGX01BUktTID0gODIsCisgICAgICAgIENKS19DT01QQVRJQklMSVRZX0ZPUk1TID0gODMsCisgICAgICAgIFNNQUxMX0ZPUk1fVkFSSUFOVFMgPSA4NCwKKyAgICAgICAgQVJBQklDX1BSRVNFTlRBVElPTl9GT1JNU19CID0gODUsCisgICAgICAgIFNQRUNJQUxTID0gODYsCisgICAgICAgIEhBTEZXSURUSF9BTkRfRlVMTFdJRFRIX0ZPUk1TID0gODc7CisgICAgICAgIAorICAgIHN0YXRpYyBmaW5hbCBieXRlW10gYmxvY2tUb1NjcmlwdCA9IHsKKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gMCwgPFJFU0VSVkVEX0JMT0NLPgorICAgICAgICBMQVRJTl9TQ1JJUFQsIC8vIDEsIEJBU0lDX0xBVElOCisgICAgICAgIExBVElOX1NDUklQVCwgLy8gMiwgTEFUSU5fMV9TVVBQTEVNRU5UCisgICAgICAgIExBVElOX1NDUklQVCwgLy8gMywgTEFUSU5fRVhURU5ERURfQQorICAgICAgICBMQVRJTl9TQ1JJUFQsIC8vIDQsIExBVElOX0VYVEVOREVEX0IKKyAgICAgICAgTEFUSU5fU0NSSVBULCAvLyA1LCBJUEFfRVhURU5TSU9OUworICAgICAgICBDT01NT05fU0NSSVBULCAvLyA2LCBTUEFDSU5HX01PRElGSUVSX0xFVFRFUlMKKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gNywgQ09NQklOSU5HX0RJQUNSSVRJQ0FMX01BUktTCisgICAgICAgIEdSRUVLX1NDUklQVCwgLy8gOCwgR1JFRUsKKyAgICAgICAgQ1lSSUxMSUNfU0NSSVBULCAvLyA5LCBDWVJJTExJQworICAgICAgICBBUk1FTklBTl9TQ1JJUFQsIC8vIDEwLCBBUk1FTklBTgorICAgICAgICBIRUJSRVdfU0NSSVBULCAvLyAxMSwgSEVCUkVXCisgICAgICAgIEFSQUJJQ19TQ1JJUFQsIC8vIDEyLCBBUkFCSUMKKyAgICAgICAgU1lSSUFDX1NDUklQVCwgLy8gMTMsIFNZUklBQworICAgICAgICBUSEFBTkFfU0NSSVBULCAvLyAxNCwgVEhBQU5BCisgICAgICAgIERFVkFOQUdBUklfU0NSSVBULCAvLyAxNSwgREVWQU5BR0FSSQorICAgICAgICBCRU5HQUxJX1NDUklQVCwgLy8gMTYsIEJFTkdBTEkKKyAgICAgICAgR1VSTVVLSElfU0NSSVBULCAvLyAxNywgR1VSTVVLSEkKKyAgICAgICAgR1VKQVJBVElfU0NSSVBULCAvLyAxOCwgR1VKQVJBVEkKKyAgICAgICAgT1JJWUFfU0NSSVBULCAvLyAxOSwgT1JJWUEKKyAgICAgICAgVEFNSUxfU0NSSVBULCAvLyAyMCwgVEFNSUwKKyAgICAgICAgVEVMVUdVX1NDUklQVCwgLy8gMjEsIFRFTFVHVQorICAgICAgICBLQU5OQURBX1NDUklQVCwgLy8gMjIsIEtBTk5BREEKKyAgICAgICAgTUFMQVlBTEFNX1NDUklQVCwgLy8gMjMsIE1BTEFZQUxBTQorICAgICAgICBTSU5IQUxBX1NDUklQVCwgLy8gMjQsIFNJTkhBTEEKKyAgICAgICAgVEhBSV9TQ1JJUFQsIC8vIDI1LCBUSEFJCisgICAgICAgIExBT19TQ1JJUFQsIC8vIDI2LCBMQU8KKyAgICAgICAgVElCRVRBTl9TQ1JJUFQsIC8vIDI3LCBUSUJFVEFOCisgICAgICAgIE1ZQU5NQVJfU0NSSVBULCAvLyAyOCwgTVlBTk1BUgorICAgICAgICBHRU9SR0lBTl9TQ1JJUFQsIC8vIDI5LCBHRU9SR0lBTgorICAgICAgICBKQU1PX1NDUklQVCwgLy8gMzAsIEhBTkdVTF9KQU1PCisgICAgICAgIEVUSElPUElDX1NDUklQVCwgLy8gMzEsIEVUSElPUElDCisgICAgICAgIENIRVJPS0VFX1NDUklQVCwgLy8gMzIsIENIRVJPS0VFCisgICAgICAgIEFCT1JJR0lOQUxfU0NSSVBULCAvLyAzMywgVU5JRklFRF9DQU5BRElBTl9BQk9SSUdJTkFMX1NZTExBQklDUworICAgICAgICBPR0hBTV9TQ1JJUFQsIC8vIDM0LCBPR0hBTQorICAgICAgICBSVU5JQ19TQ1JJUFQsIC8vIDM1LCBSVU5JQworICAgICAgICBLSE1FUl9TQ1JJUFQsIC8vIDM2LCBLSE1FUgorICAgICAgICBNT05HT0xJQU5fU0NSSVBULCAvLyAzNywgTU9OR09MSUFOCisgICAgICAgIExBVElOX1NDUklQVCwgLy8gMzgsIExBVElOX0VYVEVOREVEX0FERElUSU9OQUwKKyAgICAgICAgR1JFRUtfU0NSSVBULCAvLyAzOSwgR1JFRUtfRVhURU5ERUQKKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gNDAsIEdFTkVSQUxfUFVOQ1RVQVRJT04KKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gNDEsIFNVUEVSU0NSSVBUU19BTkRfU1VCU0NSSVBUUworICAgICAgICBDT01NT05fU0NSSVBULCAvLyA0MiwgQ1VSUkVOQ1lfU1lNQk9MUworICAgICAgICBDT01NT05fU0NSSVBULCAvLyA0MywgQ09NQklOSU5HX01BUktTX0ZPUl9TWU1CT0xTCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDQ0LCBMRVRURVJMSUtFX1NZTUJPTFMKKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gNDUsIE5VTUJFUl9GT1JNUworICAgICAgICBDT01NT05fU0NSSVBULCAvLyA0NiwgQVJST1dTCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDQ3LCBNQVRIRU1BVElDQUxfT1BFUkFUT1JTCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDQ4LCBNSVNDRUxMQU5FT1VTX1RFQ0hOSUNBTAorICAgICAgICBDT01NT05fU0NSSVBULCAvLyA0OSwgQ09OVFJPTF9QSUNUVVJFUworICAgICAgICBDT01NT05fU0NSSVBULCAvLyA1MCwgT1BUSUNBTF9DSEFSQUNURVJfUkVDT0dOSVRJT04KKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gNTEsIEVOQ0xPU0VEX0FMUEhBTlVNRVJJQ1MKKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gNTIsIEJPWF9EUkFXSU5HCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDUzLCBCTE9DS19FTEVNRU5UUworICAgICAgICBDT01NT05fU0NSSVBULCAvLyA1NCwgR0VPTUVUUklDX1NIQVBFUworICAgICAgICBDT01NT05fU0NSSVBULCAvLyA1NSwgTUlTQ0VMTEFORU9VU19TWU1CT0xTCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDU2LCBESU5HQkFUUworICAgICAgICBDT01NT05fU0NSSVBULCAvLyA1NywgQlJBSUxMRV9QQVRURVJOUworICAgICAgICBIQU5fU0NSSVBULCAvLyA1OCwgQ0pLX1JBRElDQUxTX1NVUFBMRU1FTlQKKyAgICAgICAgSEFOX1NDUklQVCwgLy8gNTksIEtBTkdYSV9SQURJQ0FMUworICAgICAgICBIQU5fU0NSSVBULCAvLyA2MCwgSURFT0dSQVBISUNfREVTQ1JJUFRJT05fQ0hBUkFDVEVSUworICAgICAgICBDT01NT05fU0NSSVBULCAvLyA2MSwgQ0pLX1NZTUJPTFNfQU5EX1BVTkNUVUFUSU9OCisgICAgICAgIEhJUkFHQU5BX1NDUklQVCwgLy8gNjIsIEhJUkFHQU5BCisgICAgICAgIEtBVEFLQU5BX1NDUklQVCwgLy8gNjMsIEtBVEFLQU5BCisgICAgICAgIEJPUE9NT0ZPX1NDUklQVCwgLy8gNjQsIEJPUE9NT0ZPCisgICAgICAgIEpBTU9fU0NSSVBULCAvLyA2NSwgSEFOR1VMX0NPTVBBVElCSUxJVFlfSkFNTworICAgICAgICBIQU5fU0NSSVBULCAvLyA2NiwgS0FOQlVOCisgICAgICAgIEJPUE9NT0ZPX1NDUklQVCwgLy8gNjcsIEJPUE9NT0ZPX0VYVEVOREVECisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDY4LCBFTkNMT1NFRF9DSktfTEVUVEVSU19BTkRfTU9OVEhTCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDY5LCBDSktfQ09NUEFUSUJJTElUWQorICAgICAgICBIQU5fU0NSSVBULCAvLyA3MCwgQ0pLX1VOSUZJRURfSURFT0dSQVBIU19FWFRFTlNJT05fQQorICAgICAgICBIQU5fU0NSSVBULCAvLyA3MSwgQ0pLX1VOSUZJRURfSURFT0dSQVBIUworICAgICAgICBZSV9TQ1JJUFQsIC8vIDcyLCBZSV9TWUxMQUJMRVMKKyAgICAgICAgWUlfU0NSSVBULCAvLyA3MywgWUlfUkFESUNBTFMKKyAgICAgICAgSEFOR1VMX1NDUklQVCwgLy8gNzQsIEhBTkdVTF9TWUxMQUJMRVMKKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gNzUsIEhJR0hfU1VSUk9HQVRFUworICAgICAgICBDT01NT05fU0NSSVBULCAvLyA3NiwgSElHSF9QUklWQVRFX1VTRV9TVVJST0dBVEVTCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDc3LCBMT1dfU1VSUk9HQVRFUworICAgICAgICBDT01NT05fU0NSSVBULCAvLyA3OCwgUFJJVkFURV9VU0UKKyAgICAgICAgSEFOX1NDUklQVCwgLy8gNzksIENKS19DT01QQVRJQklMSVRZX0lERU9HUkFQSFMKKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gODAsIEFMUEhBQkVUSUNfUFJFU0VOVEFUSU9OX0ZPUk1TCisgICAgICAgIEFSQUJJQ19TQ1JJUFQsIC8vIDgxLCBBUkFCSUNfUFJFU0VOVEFUSU9OX0ZPUk1TX0EKKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gODIsIENPTUJJTklOR19IQUxGX01BUktTCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDgzLCBDSktfQ09NUEFUSUJJTElUWV9GT1JNUworICAgICAgICBDT01NT05fU0NSSVBULCAvLyA4NCwgU01BTExfRk9STV9WQVJJQU5UUworICAgICAgICBBUkFCSUNfU0NSSVBULCAvLyA4NSwgQVJBQklDX1BSRVNFTlRBVElPTl9GT1JNU19CCisgICAgICAgIENPTU1PTl9TQ1JJUFQsIC8vIDg2LCBTUEVDSUFMUworICAgICAgICBDT01NT05fU0NSSVBULCAvLyA4NywgSEFMRldJRFRIX0FORF9GVUxMV0lEVEhfRk9STVMKKyAgICAgICAgQ09NTU9OX1NDUklQVCwgLy8gODgsIFNQRUNJQUxTCisgICAgfTsKKyAgICAgICAgCisgICAgLy8gY291bGQgYmUgZnVydGhlciByZWR1Y2VkIHRvIGEgYnl0ZSBhcnJheSwgYnV0IEkgZGlkbid0IGJvdGhlci4KKyAgICBzdGF0aWMgZmluYWwgaW50W11bXSBzcGxpdCA9IHsKKyAgICAgICAgezB4MDI1MCwgNCwgNX0sIC8vIC0xCisgICAgICAgIHsweDAyQjAsIDUsIDZ9LCAvLyAtMgorICAgICAgICB7MHgwMzcwLCA3LCA4fSwgLy8gLTMKKyAgICAgICAgezB4MDUzMCwgMCwgMTB9LCAvLyAtNAorICAgICAgICB7MHgwNTkwLCAxMCwgMTF9LCAvLyAtNQorICAgICAgICB7MHgwNzUwLCAxMywgMH0sIC8vIC02CisgICAgICAgIHsweDA3QzAsIDE0LCAwfSwgLy8gLTcKKyAgICAgICAgezB4MTBBMCwgMjgsIDI5fSwgLy8gLTgKKyAgICAgICAgezB4MTNBMCwgMCwgMzJ9LCAvLyAtOQorICAgICAgICB7MHgxNkEwLCAzNCwgMzV9LCAvLyAtMTAKKyAgICAgICAgezB4MThCMCwgMzcsIDB9LCAvLyAtMTEKKyAgICAgICAgezB4MjA3MCwgNDAsIDQxfSwgLy8gLTEyCisgICAgICAgIHsweDIwQTAsIDQxLCAtMzF9LCAvLyAtMTMKKyAgICAgICAgezB4MjE1MCwgNDQsIDQ1fSwgLy8gLTE0CisgICAgICAgIHsweDIxOTAsIDQ1LCA0Nn0sIC8vIC0xNQorICAgICAgICB7MHgyNDQwLCA0OSwgLTMyfSwgLy8gLTE2CisgICAgICAgIHsweDI1QTAsIDUzLCA1NH0sIC8vIC0xNworICAgICAgICB7MHgyN0MwLCA1NiwgMH0sIC8vIC0xOAorICAgICAgICB7MHgyRkUwLCA1OSwgLTMzfSwgLy8gLTE5CisgICAgICAgIHsweDMwNDAsIDYxLCA2Mn0sIC8vIC0yMAorICAgICAgICB7MHgzMEEwLCA2MiwgNjN9LCAvLyAtMjEKKyAgICAgICAgezB4MzEzMCwgNjQsIDY1fSwgLy8gLTIyCisgICAgICAgIHsweDMxOTAsIDY1LCAtMzR9LCAvLyAtMjMKKyAgICAgICAgezB4NERCNiwgNzAsIDB9LCAvLyAtMjQKKyAgICAgICAgezB4QTQ5MCwgNzIsIC0zNX0sIC8vIC0yNQorICAgICAgICB7MHhEN0E0LCA3NCwgMH0sIC8vIC0yNgorICAgICAgICB7MHhGQjUwLCA4MCwgODF9LCAvLyAtMjcKKyAgICAgICAgezB4RkUyMCwgMCwgLTM2fSwgLy8gLTI4CisgICAgICAgIHsweEZFRkYsIDg1LCA4Nn0sIC8vIC0yOQorICAgICAgICB7MHhGRkYwLCA4NywgLTM3fSwgLy8gLTMwCisgICAgICAgIHsweDIwRDAsIDQyLCA0M30sIC8vIC0zMQorICAgICAgICB7MHgyNDYwLCA1MCwgNTF9LCAvLyAtMzIKKyAgICAgICAgezB4MkZGMCwgMCwgNjB9LCAvLyAtMzMKKyAgICAgICAgezB4MzFBMCwgNjYsIC0zOH0sIC8vIC0zNAorICAgICAgICB7MHhBNEQwLCA3MywgMH0sIC8vLTM1CisgICAgICAgIHsweEZFMzAsIDgyLCAtMzl9LCAvLy0zNgorICAgICAgICB7MHhGRkZFLCA4OCwgMH0sIC8vLTM3CisgICAgICAgIHsweDMxQzAsIDY3LCAwfSwgLy8gLTM4CisgICAgICAgIHsweEZFNTAsIDgzLCAtNDB9LCAvLy0zOQorICAgICAgICB7MHhGRTcwLCA4NCwgODV9IC8vIC00MAorICAgIH07CisgICAgICAgIAorICAgIHN0YXRpYyBmaW5hbCBieXRlW10gY2hhclRvQmxvY2sgPSB7CisgICAgICAxLCAyLCAzLCA0LCAtMSwgLTIsIC0zLCA4LCA5LCA5LCAtNCwgLTUsIDEyLCAxMiwgLTYsIC03LAorICAgICAgMCwgMCwgMTUsIDE2LCAxNywgMTgsIDE5LCAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI3LAorICAgICAgMjgsIC04LCAzMCwgMzAsIDMxLCAzMSwgMzEsIC05LCAzMywgMzMsIDMzLCAzMywgMzMsIC0xMCwgMCwgMzYsCisgICAgICAzNywgLTExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzOCwgMzgsIDM5LCAzOSwKKyAgICAgIC0xMiwgLTEzLCAtMTQsIC0xNSwgNDcsIDQ3LCA0OCwgNDgsIC0xNiwgNTEsIDUyLCAtMTcsIDU1LCA1NSwgNTYsIC0xOCwKKyAgICAgIDU3LCA1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTgsIDU5LCAtMTksCisgICAgICAtMjAsIC0yMSwgLTIyLCAtMjMsIDY4LCA2OCwgNjksIDY5LCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsCisgICAgICA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwKKyAgICAgIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLAorICAgICAgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCA3MCwgNzAsIDcwLCAtMjQsIDcxLCA3MSwgNzEsIDcxLAorICAgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsCisgICAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwKKyAgICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLAorICAgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsCisgICAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwKKyAgICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLAorICAgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsCisgICAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwKKyAgICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLAorICAgICAgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsCisgICAgICA3MiwgNzIsIDcyLCA3MiwgNzIsIDcyLCA3MiwgNzIsIDcyLCAtMjUsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsCisgICAgICA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwKKyAgICAgIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LAorICAgICAgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsCisgICAgICA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwKKyAgICAgIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIDc0LCA3NCwgNzQsIC0yNiwKKyAgICAgIDc1LCA3NSwgNzUsIDc1LCA3NSwgNzUsIDc1LCA3NiwgNzcsIDc3LCA3NywgNzcsIDc3LCA3NywgNzcsIDc3LAorICAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsCisgICAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwKKyAgICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LAorICAgICAgNzgsIDc4LCA3OSwgNzksIDc5LCA3OSwgLTI3LCA4MSwgODEsIDgxLCA4MSwgODEsIC0yOCwgLTI5LCA4NywgLTMwCisgICAgfTsKKworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGVzdC90cmFuc2xpdC9UcmFuc2xpdGVyYXRvclRlc3QuamF2YSBiL3NyYy9jb20vaWJtL3Rlc3QvdHJhbnNsaXQvVHJhbnNsaXRlcmF0b3JUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODJkMTBhZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3QvdHJhbnNsaXQvVHJhbnNsaXRlcmF0b3JUZXN0LmphdmEKQEAgLTAsMCArMSw3NzIgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3Rlc3QvdHJhbnNsaXQvQXR0aWMvVHJhbnNsaXRlcmF0b3JUZXN0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDEvMDMvMzAgMjI6NTY6NDcgJCAKKyAqICRSZXZpc2lvbjogMS4yOCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXN0LnRyYW5zbGl0OworaW1wb3J0IGNvbS5pYm0udGV4dC4qOworaW1wb3J0IGNvbS5pYm0udGVzdC4qOworaW1wb3J0IGNvbS5pYm0udXRpbC5VdGlsaXR5OworaW1wb3J0IGphdmEudGV4dC4qOworaW1wb3J0IGphdmEudXRpbC4qOworCisvKioKKyAqIEB0ZXN0CisgKiBAc3VtbWFyeSBHZW5lcmFsIHRlc3Qgb2YgVHJhbnNsaXRlcmF0b3IKKyAqLworcHVibGljIGNsYXNzIFRyYW5zbGl0ZXJhdG9yVGVzdCBleHRlbmRzIFRlc3RGbXdrIHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgVHJhbnNsaXRlcmF0b3JUZXN0KCkucnVuKGFyZ3MpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RJbnN0YW50aWF0aW9uKCkgeworICAgICAgICBsb25nIG1zID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIFN0cmluZyBJRDsKKyAgICAgICAgZm9yIChFbnVtZXJhdGlvbiBlID0gVHJhbnNsaXRlcmF0b3IuZ2V0QXZhaWxhYmxlSURzKCk7IGUuaGFzTW9yZUVsZW1lbnRzKCk7ICkgeworICAgICAgICAgICAgSUQgPSAoU3RyaW5nKSBlLm5leHRFbGVtZW50KCk7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZShJRCk7CisgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIGdldCBhIG5ldyBpbnN0YW5jZSBpZiB3ZSB0cnkgYWdhaW4KKyAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0MiA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKElEKTsKKyAgICAgICAgICAgICAgICBpZiAodCAhPSB0MikgeworICAgICAgICAgICAgICAgICAgICBsb2dsbihJRCArICI6IiArIHQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgSUQgKyAiIHJldHVybmVkIGlkZW50aWNhbCBpbnN0YW5jZXMiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIElEKTsKKyAgICAgICAgICAgICAgICB0aHJvdyBleDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIE5vdyB0ZXN0IHRoZSBmYWlsdXJlIHBhdGgKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIElEID0gIjxOb3QgYSB2YWxpZCBUcmFuc2xpdGVyYXRvciBJRD4iOworICAgICAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKElEKTsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiAiICsgSUQgKyAiIHJldHVybmVkICIgKyB0KTsKKyAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBsb2dsbigiT0s6IEJvZ3VzIElEIGhhbmRsZWQgcHJvcGVybHkiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbXMgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSAtIG1zOworICAgICAgICBsb2dsbigiRWxhcHNlZCB0aW1lOiAiICsgbXMgKyAiIG1zIik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdERpc3BsYXlOYW1lKCkgeworICAgICAgICBTdHJpbmcgSUQ7CisgICAgICAgIGZvciAoRW51bWVyYXRpb24gZSA9IFRyYW5zbGl0ZXJhdG9yLmdldEF2YWlsYWJsZUlEcygpOyBlLmhhc01vcmVFbGVtZW50cygpOyApIHsKKyAgICAgICAgICAgIElEID0gKFN0cmluZykgZS5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgbG9nbG4oSUQgKyAiIC0+ICIgKyBUcmFuc2xpdGVyYXRvci5nZXREaXNwbGF5TmFtZShJRCkpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdFNpbXBsZVJ1bGVzKCkgeworICAgICAgICAvKiBFeGFtcGxlOiBydWxlcyAxLiBhYj54fHkKKyAgICAgICAgICogICAgICAgICAgICAgICAgMi4geWM+egorICAgICAgICAgKgorICAgICAgICAgKiBbXXxlYWJjZCAgc3RhcnQgLSBubyBtYXRjaCwgY29weSBlIHRvIHRyYW5sYXRlZCBidWZmZXIKKyAgICAgICAgICogW2VdfGFiY2QgIG1hdGNoIHJ1bGUgMSAtIGNvcHkgb3V0cHV0ICYgYWRqdXN0IGN1cnNvcgorICAgICAgICAgKiBbZXh8eV1jZCAgbWF0Y2ggcnVsZSAyIC0gY29weSBvdXRwdXQgJiBhZGp1c3QgY3Vyc29yCisgICAgICAgICAqIFtleHpdfGQgICBubyBtYXRjaCwgY29weSBkIHRvIHRyYW5zbGl0ZXJhdGVkIGJ1ZmZlcgorICAgICAgICAgKiBbZXh6ZF18ICAgZG9uZQorICAgICAgICAgKi8KKyAgICAgICAgZXhwZWN0KCJhYj54fHk7IiArCisgICAgICAgICAgICAgICAieWM+eiIsCisgICAgICAgICAgICAgICAiZWFiY2QiLCAiZXh6ZCIpOworCisgICAgICAgIC8qIEFub3RoZXIgc2V0IG9mIHJ1bGVzOgorICAgICAgICAgKiAgICAxLiBhYj54fHl6YWN3CisgICAgICAgICAqICAgIDIuIHphPnEKKyAgICAgICAgICogICAgMy4gcWM+cgorICAgICAgICAgKiAgICA0LiBjdz5uCisgICAgICAgICAqCisgICAgICAgICAqIFtdfGFiICAgICAgIFJ1bGUgMQorICAgICAgICAgKiBbeHx5emFjd10gICBObyBtYXRjaAorICAgICAgICAgKiBbeHl8emFjd10gICBSdWxlIDIKKyAgICAgICAgICogW3h5cXxjd10gICAgUnVsZSA0CisgICAgICAgICAqIFt4eXFuXXwgICAgIERvbmUKKyAgICAgICAgICovCisgICAgICAgIGV4cGVjdCgiYWI+eHx5emFjdzsiICsKKyAgICAgICAgICAgICAgICJ6YT5xOyIgKworICAgICAgICAgICAgICAgInFjPnI7IiArCisgICAgICAgICAgICAgICAiY3c+biIsCisgICAgICAgICAgICAgICAiYWIiLCAieHlxbiIpOworCisgICAgICAgIC8qIFRlc3QgY2F0ZWdvcmllcworICAgICAgICAgKi8KKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IG5ldyBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvcigiPElEPiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiRkdW1teT1cdUUxMDA7IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiR2b3dlbD1bYWVpb3VBRUlPVV07IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiRsdT1bOkx1Ol07IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiR2b3dlbCB9ICRsdSA+ICchJzsiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJHZvd2VsID4gJyYnOyIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInIScgeyAkbHUgPiAnXic7IiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiRsdSA+ICcqJzsiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYT5FUlJPUiIpOworICAgICAgICBleHBlY3QodCwgImFiY2RlZmdBQkNERUZHVSIsICImYmNkJmZnIV4qKiFeKiYiKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IHVuZGVmaW5lZCB2YXJpYWJsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0VW5kZWZpbmVkVmFyaWFibGUoKSB7CisgICAgICAgIFN0cmluZyBydWxlID0gIiRpbml0aWFsIH0gYSA8PiBcdTExNjE7IjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBuZXcgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IoIjxJRD4iLCBydWxlKTsKKyAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJPSzogR290IGV4Y2VwdGlvbiBmb3IgIiArIHJ1bGUgKyAiLCBhcyBleHBlY3RlZDogIiArCisgICAgICAgICAgICAgICAgICBlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZXJybG4oIkZhaWw6IGJvZ3VzIHJ1bGUgIiArIHJ1bGUgKyAiIGNvbXBpbGVkIHdpdGhvdXQgZXJyb3IiKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IGVtcHR5IGNvbnRleHQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEVtcHR5Q29udGV4dCgpIHsKKyAgICAgICAgZXhwZWN0KCIgeyBhIH0gPiBiOyIsICJ4YXkgYSAiLCAieGJ5IGIgIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCBpbmxpbmUgc2V0IHN5bnRheCBhbmQgc2V0IHZhcmlhYmxlIHN5bnRheC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0SW5saW5lU2V0KCkgeworICAgICAgICBleHBlY3QoInsgWzpMbDpdIH0geCA+IHk7IFs6TGw6XSA+IHo7IiwgImFBYnhxIiwgInpBeXp6Iik7CisgICAgICAgIGV4cGVjdCgiYVswLTldYiA+IHFycyIsICIxYTdiOSIsICIxcXJzOSIpOworCisgICAgICAgIGV4cGVjdCgiJGRpZ2l0ID0gWzAtOV07IiArCisgICAgICAgICAgICAgICAiJGFscGhhID0gW2EtekEtWl07IiArCisgICAgICAgICAgICAgICAiJGFscGhhbnVtZXJpYyA9IFskZGlnaXQgJGFscGhhXTsiICsgLy8gKioqCisgICAgICAgICAgICAgICAiJHNwZWNpYWwgPSBbXiRhbHBoYW51bWVyaWNdOyIgKyAgICAgLy8gKioqCisgICAgICAgICAgICAgICAiJGFscGhhbnVtZXJpYyA+ICctJzsiICsKKyAgICAgICAgICAgICAgICIkc3BlY2lhbCA+ICcqJzsiLAorCisgICAgICAgICAgICAgICAidGh4LTExMzgiLCAiLS0tKi0tLS0iKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgc29tZSBpbnZlcnNlcyBhbmQgY29uZmlybSB0aGF0IHRoZXkgd29yay4gIFdlIGhhdmUgdG8gYmUKKyAgICAgKiBjYXJlZnVsIGhvdyB3ZSBkbyB0aGlzLCBzaW5jZSB0aGUgaW52ZXJzZXMgd2lsbCBub3QgYmUgdHJ1ZQorICAgICAqIGludmVyc2VzIC0tIHdlIGNhbid0IHRocm93IGFueSByYW5kb20gc3RyaW5nIGF0IHRoZSBjb21wb3NpdGlvbgorICAgICAqIG9mIHRoZSB0cmFuc2xpdGVyYXRvcnMgYW5kIGV4cGVjdCB0aGUgaWRlbnRpdHkgZnVuY3Rpb24uICBGIHgKKyAgICAgKiBGJyAhPSBJLiAgSG93ZXZlciwgaWYgd2UgYXJlIGNhcmVmdWwgYWJvdXQgdGhlIGlucHV0LCB3ZSB3aWxsCisgICAgICogZ2V0IHRoZSBleHBlY3RlZCByZXN1bHRzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RSdWxlQmFzZWRJbnZlcnNlKCkgeworICAgICAgICBTdHJpbmcgUlVMRVMgPQorICAgICAgICAgICAgImFiYz56eXg7IiArCisgICAgICAgICAgICAiYWI+eXo7IiArCisgICAgICAgICAgICAiYmM+eng7IiArCisgICAgICAgICAgICAiY2E+eHk7IiArCisgICAgICAgICAgICAiYT54OyIgKworICAgICAgICAgICAgImI+eTsiICsKKyAgICAgICAgICAgICJjPno7IiArCisKKyAgICAgICAgICAgICJhYmM8enl4OyIgKworICAgICAgICAgICAgImFiPHl6OyIgKworICAgICAgICAgICAgImJjPHp4OyIgKworICAgICAgICAgICAgImNhPHh5OyIgKworICAgICAgICAgICAgImE8eDsiICsKKyAgICAgICAgICAgICJiPHk7IiArCisgICAgICAgICAgICAiYzx6OyIgKworCisgICAgICAgICAgICAiIjsKKworICAgICAgICBTdHJpbmdbXSBEQVRBID0geworICAgICAgICAgICAgLy8gQ2FyZWZ1bCBoZXJlIC0tIHJhbmRvbSBzdHJpbmdzIHdpbGwgbm90IHdvcmsuICBJZiB3ZSBrZWVwCisgICAgICAgICAgICAvLyB0aGUgbGVmdCBzaWRlIHRvIHRoZSBkb21haW4gYW5kIHRoZSByaWdodCBzaWRlIHRvIHRoZSByYW5nZQorICAgICAgICAgICAgLy8gd2Ugd2lsbCBiZSBva2F5IHRob3VnaCAobGVmdCwgYWJjOyByaWdodCB4eXopLgorICAgICAgICAgICAgImEiLCAieCIsCisgICAgICAgICAgICAiYWJjYWNhYiIsICJ6eXh4eHl5IiwKKyAgICAgICAgICAgICJjYWNjYiIsICJ4eXp6eSIsCisgICAgICAgIH07CisKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgZndkID0gbmV3IFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yKCI8SUQ+IiwgUlVMRVMpOworICAgICAgICBUcmFuc2xpdGVyYXRvciByZXYgPSBuZXcgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IoIjxJRD4iLCBSVUxFUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvci5SRVZFUlNFLCBudWxsKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz0yKSB7CisgICAgICAgICAgICBleHBlY3QoZndkLCBEQVRBW2ldLCBEQVRBW2krMV0pOworICAgICAgICAgICAgZXhwZWN0KHJldiwgREFUQVtpKzFdLCBEQVRBW2ldKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEJhc2ljIHRlc3Qgb2Yga2V5Ym9hcmQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEtleWJvYXJkKCkgeworICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gbmV3IFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yKCI8SUQ+IiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBzY2g+WTsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyJwcz55OyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArImNoPng7IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsiYT5BOyIpOworICAgICAgICBTdHJpbmcgREFUQVtdID0geworICAgICAgICAgICAgLy8gaW5zZXJ0aW9uLCBidWZmZXIKKyAgICAgICAgICAgICJhIiwgIkEiLAorICAgICAgICAgICAgInAiLCAiQXAiLAorICAgICAgICAgICAgInMiLCAiQXBzIiwKKyAgICAgICAgICAgICJjIiwgIkFwc2MiLAorICAgICAgICAgICAgImEiLCAiQXljQSIsCisgICAgICAgICAgICAicHNjaCIsICJBeWNBWSIsCisgICAgICAgICAgICBudWxsLCAiQXljQVkiLCAvLyBudWxsIG1lYW5zIGZpbmlzaEtleWJvYXJkVHJhbnNsaXRlcmF0aW9uCisgICAgICAgIH07CisKKyAgICAgICAga2V5Ym9hcmRBdXgodCwgREFUQSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQmFzaWMgdGVzdCBvZiBrZXlib2FyZCB3aXRoIGN1cnNvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0S2V5Ym9hcmQyKCkgeworICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gbmV3IFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yKCI8SUQ+IiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInljaD5ZOyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArInBzPnx5OyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArImNoPng7IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsiYT5BOyIpOworICAgICAgICBTdHJpbmcgREFUQVtdID0geworICAgICAgICAgICAgLy8gaW5zZXJ0aW9uLCBidWZmZXIKKyAgICAgICAgICAgICJhIiwgIkEiLAorICAgICAgICAgICAgInAiLCAiQXAiLAorICAgICAgICAgICAgInMiLCAiQXkiLAorICAgICAgICAgICAgImMiLCAiQXljIiwKKyAgICAgICAgICAgICJhIiwgIkF5Y0EiLAorICAgICAgICAgICAgInAiLCAiQXljQXAiLAorICAgICAgICAgICAgInMiLCAiQXljQXkiLAorICAgICAgICAgICAgImMiLCAiQXljQXljIiwKKyAgICAgICAgICAgICJoIiwgIkF5Y0FZIiwKKyAgICAgICAgICAgIG51bGwsICJBeWNBWSIsIC8vIG51bGwgbWVhbnMgZmluaXNoS2V5Ym9hcmRUcmFuc2xpdGVyYXRpb24KKyAgICAgICAgfTsKKworICAgICAgICBrZXlib2FyZEF1eCh0LCBEQVRBKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IGtleWJvYXJkIHRyYW5zbGl0ZXJhdGlvbiB3aXRoIGJhY2stcmVwbGFjZW1lbnQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEtleWJvYXJkMygpIHsKKyAgICAgICAgLy8gV2Ugd2FudCB0aD56IGJ1dCB0PnkuICBGdXJ0aGVybW9yZSwgZHVyaW5nIGtleWJvYXJkCisgICAgICAgIC8vIHRyYW5zbGl0ZXJhdGlvbiB3ZSB3YW50IHQ+eSB0aGVuIHloPnogaWYgdCwgdGhlbiBoIGFyZQorICAgICAgICAvLyB0eXBlZC4KKyAgICAgICAgU3RyaW5nIFJVTEVTID0KKyAgICAgICAgICAgICJ0Pnx5OyIgKworICAgICAgICAgICAgInloPno7IiArCisgICAgICAgICAgICAiIjsKKworICAgICAgICBTdHJpbmdbXSBEQVRBID0geworICAgICAgICAgICAgLy8gQ29sdW1uIDE6IGNoYXJhY3RlcnMgdG8gYWRkIHRvIGJ1ZmZlciAoYXMgaWYgdHlwZWQpCisgICAgICAgICAgICAvLyBDb2x1bW4gMjogZXhwZWN0ZWQgYXBwZWFyYW5jZSBvZiBidWZmZXIgYWZ0ZXIKKyAgICAgICAgICAgIC8vICAgICAgICAgICBrZXlib2FyZCB4bGl0ZXJhdGlvbi4KKyAgICAgICAgICAgICJhIiwgImEiLAorICAgICAgICAgICAgImIiLCAiYWIiLAorICAgICAgICAgICAgInQiLCAiYWJ5IiwKKyAgICAgICAgICAgICJjIiwgImFieWMiLAorICAgICAgICAgICAgInQiLCAiYWJ5Y3kiLAorICAgICAgICAgICAgImgiLCAiYWJ5Y3oiLAorICAgICAgICAgICAgbnVsbCwgImFieWN6IiwgLy8gbnVsbCBtZWFucyBmaW5pc2hLZXlib2FyZFRyYW5zbGl0ZXJhdGlvbgorICAgICAgICB9OworCisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBuZXcgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IoIjxJRD4iLCBSVUxFUyk7CisgICAgICAgIGtleWJvYXJkQXV4KHQsIERBVEEpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBrZXlib2FyZEF1eChUcmFuc2xpdGVyYXRvciB0LCBTdHJpbmdbXSBEQVRBKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uIGluZGV4ID0gbmV3IFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uKCk7CisgICAgICAgIFJlcGxhY2VhYmxlU3RyaW5nIHMgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz0yKSB7CisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgbG9nOworICAgICAgICAgICAgaWYgKERBVEFbaV0gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGxvZyA9IG5ldyBTdHJpbmdCdWZmZXIocy50b1N0cmluZygpICsgIiArICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgREFUQVtpXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIC0+ICIpOworICAgICAgICAgICAgICAgIHQudHJhbnNsaXRlcmF0ZShzLCBpbmRleCwgREFUQVtpXSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZyA9IG5ldyBTdHJpbmdCdWZmZXIocy50b1N0cmluZygpICsgIiA9PiAiKTsKKyAgICAgICAgICAgICAgICB0LmZpbmlzaFRyYW5zbGl0ZXJhdGlvbihzLCBpbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBTdHJpbmcgc3RyID0gcy50b1N0cmluZygpOworICAgICAgICAgICAgLy8gU2hvdyB0aGUgc3RhcnQgaW5kZXggJ3snIGFuZCB0aGUgY3Vyc29yICd8JworICAgICAgICAgICAgbG9nLmFwcGVuZChzdHIuc3Vic3RyaW5nKDAsIGluZGV4LmNvbnRleHRTdGFydCkpLgorICAgICAgICAgICAgICAgIGFwcGVuZCgneycpLgorICAgICAgICAgICAgICAgIGFwcGVuZChzdHIuc3Vic3RyaW5nKGluZGV4LmNvbnRleHRTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleC5zdGFydCkpLgorICAgICAgICAgICAgICAgIGFwcGVuZCgnfCcpLgorICAgICAgICAgICAgICAgIGFwcGVuZChzdHIuc3Vic3RyaW5nKGluZGV4LnN0YXJ0KSk7CisgICAgICAgICAgICBpZiAoc3RyLmVxdWFscyhEQVRBW2krMV0pKSB7CisgICAgICAgICAgICAgICAgbG9nbG4obG9nLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogIiArIGxvZy50b1N0cmluZygpICsgIiwgZXhwZWN0ZWQgIiArIERBVEFbaSsxXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0QXJhYmljKCkgeworICAgICAgICBTdHJpbmcgREFUQVtdID0geworICAgICAgICAgICAgIkFyYWJpYyIsCisgICAgICAgICAgICAgICAgIlx1MDYyYVx1MDYyYVx1MDY0NVx1MDYyYVx1MDYzOSAiKworICAgICAgICAgICAgICAgICJcdTA2MjdcdTA2NDRcdTA2NDRcdTA2M2FcdTA2MjkgIisKKyAgICAgICAgICAgICAgICAiXHUwNjI3XHUwNjQ0XHUwNjM5XHUwNjMxXHUwNjI4XHUwNjI4XHUwNjRhXHUwNjI5ICIrCisgICAgICAgICAgICAgICAgIlx1MDYyOFx1MDYyOFx1MDY0Nlx1MDYzOFx1MDY0NSAiKworICAgICAgICAgICAgICAgICJcdTA2NDNcdTA2MmFcdTA2MjdcdTA2MjhcdTA2MjhcdTA2NGFcdTA2MjkgIisKKyAgICAgICAgICAgICAgICAiXHUwNjJjXHUwNjQ1XHUwNjRhXHUwNjQ0XHUwNjI5IgorICAgICAgICB9OworCisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiTGF0aW4tQXJhYmljIik7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgaSs9MikgeworICAgICAgICAgICAgZXhwZWN0KHQsIERBVEFbaV0sIERBVEFbaSsxXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb21wb3NlIHRoZSBLYW5hIHRyYW5zbGl0ZXJhdG9yIGZvcndhcmQgYW5kIHJldmVyc2UgYW5kIHRyeQorICAgICAqIHNvbWUgc3RyaW5ncyB0aGF0IHNob3VsZCBjb21lIG91dCB1bmNoYW5nZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdENvbXBvdW5kS2FuYSgpIHsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdCA9IG5ldyBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yKCJMYXRpbi1LYW5hO0thbmEtTGF0aW4iKTsKKyAgICAgICAgZXhwZWN0KHQsICJhYWFhYSIsICJhYWFhYSIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBvc2UgdGhlIGhleCB0cmFuc2xpdGVyYXRvcnMgZm9yd2FyZCBhbmQgcmV2ZXJzZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0Q29tcG91bmRIZXgoKSB7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGEgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiVW5pY29kZS1IZXgiKTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgYiA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJIZXgtVW5pY29kZSIpOworICAgICAgICBUcmFuc2xpdGVyYXRvcltdIHRyYW5zID0geyBhLCBiIH07CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGFiID0gbmV3IENvbXBvdW5kVHJhbnNsaXRlcmF0b3IodHJhbnMpOworCisgICAgICAgIC8vIERvIHNvbWUgYmFzaWMgdGVzdHMgb2YgYgorICAgICAgICBleHBlY3QoYiwgIlxcdTAwMzBcXHUwMDMxIiwgIjAxIik7CisKKyAgICAgICAgU3RyaW5nIHMgPSAiYWJjZGUiOworICAgICAgICBleHBlY3QoYWIsIHMsIHMpOworCisgICAgICAgIHRyYW5zID0gbmV3IFRyYW5zbGl0ZXJhdG9yW10geyBiLCBhIH07CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yIGJhID0gbmV3IENvbXBvdW5kVHJhbnNsaXRlcmF0b3IodHJhbnMpOworICAgICAgICBSZXBsYWNlYWJsZVN0cmluZyBzdHIgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcocyk7CisgICAgICAgIGEudHJhbnNsaXRlcmF0ZShzdHIpOworICAgICAgICBleHBlY3QoYmEsIHN0ci50b1N0cmluZygpLCBzdHIudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRG8gc29tZSBiYXNpYyB0ZXN0cyBvZiBmaWx0ZXJpbmcuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdEZpbHRlcmluZygpIHsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgaGV4ID0gVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoIlVuaWNvZGUtSGV4Iik7CisgICAgICAgIGhleC5zZXRGaWx0ZXIobmV3IFVuaWNvZGVGaWx0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBjb250YWlucyhjaGFyIGMpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYyAhPSAnYyc7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICBTdHJpbmcgcyA9ICJhYmNkZSI7CisgICAgICAgIFN0cmluZyBvdXQgPSBoZXgudHJhbnNsaXRlcmF0ZShzKTsKKyAgICAgICAgU3RyaW5nIGV4cCA9ICJcXHUwMDYxXFx1MDA2MmNcXHUwMDY0XFx1MDA2NSI7CisgICAgICAgIGlmIChvdXQuZXF1YWxzKGV4cCkpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJPazogICBcIiIgKyBleHAgKyAiXCIiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvZ2xuKCJGQUlMOiBcIiIgKyBvdXQgKyAiXCIsIHdhbnRlZCBcIiIgKyBleHAgKyAiXCIiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgYW5jaG9ycworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RBbmNob3JzKCkgeyAKKyAgICAgICAgZXhwZWN0KCJeYWIgID4gMDEgOyIgKworICAgICAgICAgICAgICAgIiBhYiAgPiB8OCA7IiArCisgICAgICAgICAgICAgICAiICBiICA+IGsgOyIgKworICAgICAgICAgICAgICAgIiA4eCQgPiA0NSA7IiArCisgICAgICAgICAgICAgICAiIDh4ICA+IDc3IDsiLAorCisgICAgICAgICAgICAgICAiYWJhYmJhYnhhYngiLAorICAgICAgICAgICAgICAgIjAxOGs3NzQ1Iik7ICAKKyAgICAgICAgZXhwZWN0KCIkcyA9IFt6JF0gOyIgKworICAgICAgICAgICAgICAgIiRze2FiICAgID4gMDEgOyIgKworICAgICAgICAgICAgICAgIiAgIGFiICAgID4gfDggOyIgKworICAgICAgICAgICAgICAgIiAgICBiICAgID4gayA7IiArCisgICAgICAgICAgICAgICAiICAgOHh9JHMgPiA0NSA7IiArCisgICAgICAgICAgICAgICAiICAgOHggICAgPiA3NyA7IiwKKworICAgICAgICAgICAgICAgImFiemFiYWJiYWJ4emFieGFieCIsCisgICAgICAgICAgICAgICAiMDF6MDE4azQ1ejAxeDQ1Iik7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCBwYXR0ZXJuIHF1b3RpbmcgYW5kIGVzY2FwZSBtZWNoYW5pc21zLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RQYXR0ZXJuUXVvdGluZygpIHsKKyAgICAgICAgLy8gQXJyYXkgb2YgM24gaXRlbXMKKyAgICAgICAgLy8gRWFjaCBpdGVtIGlzIDxydWxlcz4sIDxpbnB1dD4sIDxleHBlY3RlZCBvdXRwdXQ+CisgICAgICAgIFN0cmluZ1tdIERBVEEgPSB7CisgICAgICAgICAgICAiXHU0RTAxPidbbWFsZSBhZHVsdF0nIiwgIlx1NEUwMSIsICJbbWFsZSBhZHVsdF0iLAorICAgICAgICB9OworCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgaSs9MykgeworICAgICAgICAgICAgbG9nbG4oIlBhdHRlcm46ICIgKyBVdGlsaXR5LmVzY2FwZShEQVRBW2ldKSk7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gbmV3IFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yKCI8SUQ+IiwgREFUQVtpXSk7CisgICAgICAgICAgICBleHBlY3QodCwgREFUQVtpKzFdLCBEQVRBW2krMl0pOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVncmVzc2lvbiB0ZXN0IGZvciBidWdzIGZvdW5kIGluIEdyZWVrIHRyYW5zbGl0ZXJhdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0SjI3NygpIHsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgZ2wgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSgiR3JlZWstTGF0aW4iKTsKKyAgICAgICAgCisgICAgICAgIGNoYXIgc2lnbWEgPSAoY2hhcikweDNDMzsKKyAgICAgICAgY2hhciB1cHNpbG9uID0gKGNoYXIpMHgzQzU7CisgICAgICAgIGNoYXIgbnUgPSAoY2hhcikweDNCRDsKKyAgICAgICAgY2hhciBQSEkgPSAoY2hhcikweDNBNjsKKyAgICAgICAgY2hhciBhbHBoYSA9IChjaGFyKTB4M0IxOworICAgICAgICBjaGFyIG9tZWdhID0gKGNoYXIpMHgzQzk7CisgICAgICAgIGNoYXIgb21pY3JvbiA9IChjaGFyKTB4M0JGOworICAgICAgICBjaGFyIGVwc2lsb24gPSAoY2hhcikweDNCNTsKKworICAgICAgICAvLyBzaWdtYSB1cHNpbG9uIG51IC0+IHN5bgorICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBidWYuYXBwZW5kKHNpZ21hKS5hcHBlbmQodXBzaWxvbikuYXBwZW5kKG51KTsKKyAgICAgICAgU3RyaW5nIHN5biA9IGJ1Zi50b1N0cmluZygpOworICAgICAgICBleHBlY3QoZ2wsIHN5biwgInN5biIpOworCisgICAgICAgIC8vIHNpZ21hIGFscGhhIHVwc2lsb24gbnUgLT4gc2F1bgorICAgICAgICBidWYuc2V0TGVuZ3RoKDApOworICAgICAgICBidWYuYXBwZW5kKHNpZ21hKS5hcHBlbmQoYWxwaGEpLmFwcGVuZCh1cHNpbG9uKS5hcHBlbmQobnUpOworICAgICAgICBTdHJpbmcgc2F5biA9IGJ1Zi50b1N0cmluZygpOworICAgICAgICBleHBlY3QoZ2wsIHNheW4sICJzYXVuIik7CisKKyAgICAgICAgLy8gQWdhaW4sIHVzaW5nIGEgc21hbGxlciBydWxlIHNldAorICAgICAgICBTdHJpbmcgcnVsZXMgPQorICAgICAgICAgICAgICAgICAgICAiJGFscGhhICAgPSBcdTAzQjE7IiArCisgICAgICAgICAgICAgICAgICAgICIkbnUgICAgICA9IFx1MDNCRDsiICsKKyAgICAgICAgICAgICAgICAgICAgIiRzaWdtYSAgID0gXHUwM0MzOyIgKworICAgICAgICAgICAgICAgICAgICAiJHlwc2lsb24gPSBcdTAzQzU7IiArCisgICAgICAgICAgICAgICAgICAgICIkdm93ZWwgICA9IFthZWlvdUFFSU9VJGFscGhhJHlwc2lsb25dOyIgKworICAgICAgICAgICAgICAgICAgICAicyA8PiAgICAgICAgICAgJHNpZ21hOyIgKworICAgICAgICAgICAgICAgICAgICAiYSA8PiAgICAgICAgICAgJGFscGhhOyIgKworICAgICAgICAgICAgICAgICAgICAidSA8PiAgJHZvd2VsIHsgJHlwc2lsb247IiArCisgICAgICAgICAgICAgICAgICAgICJ5IDw+ICAgICAgICAgICAkeXBzaWxvbjsiICsKKyAgICAgICAgICAgICAgICAgICAgIm4gPD4gICAgICAgICAgICRudTsiOworICAgICAgICBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvciBtaW5pID0gbmV3IFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yCisgICAgICAgICAgICAoIm1pbmkiLCBydWxlcywgVHJhbnNsaXRlcmF0b3IuUkVWRVJTRSwgbnVsbCk7CisgICAgICAgIGV4cGVjdChtaW5pLCBzeW4sICJzeW4iKTsKKyAgICAgICAgZXhwZWN0KG1pbmksIHNheW4sICJzYXVuIik7CisKKy8vfCAgICAvLyBUcmFuc2xpdGVyYXRlIHRoZSBHcmVlayBsb2NhbGUgZGF0YQorLy98ICAgIExvY2FsZSBlbCgiZWwiKTsKKy8vfCAgICBEYXRlRm9ybWF0U3ltYm9scyBzeW1zKGVsLCBzdGF0dXMpOworLy98ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgeyBlcnJsbigiRkFJTDogVHJhbnNsaXRlcmF0b3IgY29uc3RydWN0b3IgZmFpbGVkIik7IHJldHVybjsgfQorLy98ICAgIGludDMyX3QgaSwgY291bnQ7CisvL3wgICAgY29uc3QgVW5pY29kZVN0cmluZyogZGF0YSA9IHN5bXMuZ2V0TW9udGhzKGNvdW50KTsKKy8vfCAgICBmb3IgKGk9MDsgaTxjb3VudDsgKytpKSB7CisvL3wgICAgICAgIGlmIChkYXRhW2ldLmxlbmd0aCgpID09IDApIHsKKy8vfCAgICAgICAgICAgIGNvbnRpbnVlOworLy98ICAgICAgICB9CisvL3wgICAgICAgIFVuaWNvZGVTdHJpbmcgb3V0KGRhdGFbaV0pOworLy98ICAgICAgICBnbC0+dHJhbnNsaXRlcmF0ZShvdXQpOworLy98ICAgICAgICBib29sX3Qgb2sgPSBUUlVFOworLy98ICAgICAgICBpZiAoZGF0YVtpXS5sZW5ndGgoKSA+PSAyICYmIG91dC5sZW5ndGgoKSA+PSAyICYmCisvL3wgICAgICAgICAgICB1X2lzdXBwZXIoZGF0YVtpXS5jaGFyQXQoMCkpICYmIHVfaXNsb3dlcihkYXRhW2ldLmNoYXJBdCgxKSkpIHsKKy8vfCAgICAgICAgICAgIGlmICghKHVfaXN1cHBlcihvdXQuY2hhckF0KDApKSAmJiB1X2lzbG93ZXIob3V0LmNoYXJBdCgxKSkpKSB7CisvL3wgICAgICAgICAgICAgICAgb2sgPSBGQUxTRTsKKy8vfCAgICAgICAgICAgIH0KKy8vfCAgICAgICAgfQorLy98ICAgICAgICBpZiAob2spIHsKKy8vfCAgICAgICAgICAgIGxvZ2xuKHByZXR0aWZ5KGRhdGFbaV0gKyAiIC0+ICIgKyBvdXQpKTsKKy8vfCAgICAgICAgfSBlbHNlIHsKKy8vfCAgICAgICAgICAgIGVycmxuKFVuaWNvZGVTdHJpbmcoIkZBSUw6ICIpICsgcHJldHRpZnkoZGF0YVtpXSArICIgLT4gIiArIG91dCkpOworLy98ICAgICAgICB9CisvL3wgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFByZWZpeCwgc3VmZml4IHN1cHBvcnQgaW4gaGV4IHRyYW5zbGl0ZXJhdG9ycworICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RKMjQzKCkgeworICAgICAgICAvLyBUZXN0IGRlZmF1bHQgSGV4LVVuaWNvZGUsIHdoaWNoIHNob3VsZCBoYW5kbGUKKyAgICAgICAgLy8gXFx1LCBcXFUsIHUrLCBhbmQgVSsKKyAgICAgICAgSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IgaGV4ID0gbmV3IEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yKCk7CisgICAgICAgIGV4cGVjdChoZXgsICJcXHUwMDQxK1xcVTAwNDIsdSswMDQzdXUrMDA0NHoiLCAiQStCLEN1RHoiKTsKKworICAgICAgICAvLyBUcnkgYSBjdXN0b20gSGV4LVVuaWNvZGUKKyAgICAgICAgLy8gXFx1WFhYWCBhbmQgJiN4WFhYWDsKKyAgICAgICAgSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IgaGV4MiA9IG5ldyBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcigiXFxcXHUjIyMwOyZcXCN4IyMjMFxcOyIpOyAKKyAgICAgICAgZXhwZWN0KGhleDIsICJcXHU2MVxcdTA2MlxcdTAwNjNcXHUwMDY0NVxcdTY2eCYjeDMwOyYjeDAzMTsmI3gwMDMyOyYjeDAwMDMzOyIsCisgICAgICAgICAgICAgICAiYWJjZDVmeDAxMiYjeDAwMDMzOyIpOworCisgICAgICAgIC8vIFRyeSBjdXN0b20gVW5pY29kZS1IZXggKGRlZmF1bHQgaXMgdGVzdGVkIGVsc2V3aGVyZSkKKyAgICAgICAgVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IgaGV4MyA9IG5ldyBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcigiJlxcI3gjIyMwOyIpOworICAgICAgICBleHBlY3QoaGV4MywgIjAxMiIsICImI3gzMDsmI3gzMTsmI3gzMjsiKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IHNlZ21lbnRzIGFuZCBzZWdtZW50IHJlZmVyZW5jZXMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdFNlZ21lbnRzKCkgeworICAgICAgICAvLyBBcnJheSBvZiAzbiBpdGVtcworICAgICAgICAvLyBFYWNoIGl0ZW0gaXMgPHJ1bGVzPiwgPGlucHV0PiwgPGV4cGVjdGVkIG91dHB1dD4KKyAgICAgICAgU3RyaW5nW10gREFUQSA9IHsKKyAgICAgICAgICAgICIoW2Etel0pICcuJyAoWzAtOV0pID4gJDIgJy0nICQxIiwKKyAgICAgICAgICAgICJhYmMuMTIzLnh5ei40NTYiLAorICAgICAgICAgICAgImFiMS1jMjMueHk0LXo1NiIsCisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz0zKSB7CisgICAgICAgICAgICBsb2dsbigiUGF0dGVybjogIiArIFV0aWxpdHkuZXNjYXBlKERBVEFbaV0pKTsKKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBuZXcgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IoIjxJRD4iLCBEQVRBW2ldKTsKKyAgICAgICAgICAgIGV4cGVjdCh0LCBEQVRBW2krMV0sIERBVEFbaSsyXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IGN1cnNvciBwb3NpdGlvbmluZyBvdXRzaWRlIG9mIHRoZSBrZXkKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0Q3Vyc29yT2Zmc2V0KCkgeworICAgICAgICAvLyBBcnJheSBvZiAzbiBpdGVtcworICAgICAgICAvLyBFYWNoIGl0ZW0gaXMgPHJ1bGVzPiwgPGlucHV0PiwgPGV4cGVjdGVkIG91dHB1dD4KKyAgICAgICAgU3RyaW5nW10gREFUQSA9IHsKKyAgICAgICAgICAgICJwcmUge2FscGhhfSBwb3N0ID4gfCBAIEFMUEhBIDsiICsKKyAgICAgICAgICAgICJlQUxQSEEgPiBiZXRhIDsiICsKKyAgICAgICAgICAgICJwcmUge2JldGF9IHBvc3QgPiBCRVRBIEBAIHwgOyIgKworICAgICAgICAgICAgInBvc3QgPiB4eXoiLAorCisgICAgICAgICAgICAicHJlYWxwaGFwb3N0IHByZWJldGFwb3N0IiwKKyAgICAgICAgICAgICJwcmJldGF4eXogcHJlQkVUQXBvc3QiLAorICAgICAgICB9OworCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxEQVRBLmxlbmd0aDsgaSs9MykgeworICAgICAgICAgICAgbG9nbG4oIlBhdHRlcm46ICIgKyBVdGlsaXR5LmVzY2FwZShEQVRBW2ldKSk7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gbmV3IFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yKCI8SUQ+IiwgREFUQVtpXSk7CisgICAgICAgICAgICBleHBlY3QodCwgREFUQVtpKzFdLCBEQVRBW2krMl0pOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGVzdCB6ZXJvIGxlbmd0aCBhbmQgPiAxIGNoYXIgbGVuZ3RoIHZhcmlhYmxlIHZhbHVlcy4gIFRlc3QKKyAgICAgKiB1c2Ugb2YgdmFyaWFibGUgcmVmcyBpbiBVbmljb2RlU2V0cy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0QXJiaXRyYXJ5VmFyaWFibGVWYWx1ZXMoKSB7CisgICAgICAgIC8vIEFycmF5IG9mIDNuIGl0ZW1zCisgICAgICAgIC8vIEVhY2ggaXRlbSBpcyA8cnVsZXM+LCA8aW5wdXQ+LCA8ZXhwZWN0ZWQgb3V0cHV0PgorICAgICAgICBTdHJpbmdbXSBEQVRBID0geworICAgICAgICAgICAgIiRhYmUgPSBhYjsiICsKKyAgICAgICAgICAgICIkcGF0ID0geFt5WV16OyIgKworICAgICAgICAgICAgIiRsbCAgPSAnYS16JzsiICsKKyAgICAgICAgICAgICIkbGxaID0gWyRsbF07IiArCisgICAgICAgICAgICAiJGxsWSA9IFskbGwkcGF0XTsiICsKKyAgICAgICAgICAgICIkZW1wID0gOyIgKworCisgICAgICAgICAgICAiJGFiZSA+IEFCRTsiICsKKyAgICAgICAgICAgICIkcGF0ID4gRU5EOyIgKworICAgICAgICAgICAgIiRsbFogPiAxOyIgKworICAgICAgICAgICAgIiRsbFkgPiAyOyIgKworICAgICAgICAgICAgIjckZW1wIDggPiA5OyIgKworICAgICAgICAgICAgIiIsCisKKyAgICAgICAgICAgICJhYiB4WXp4eXogc3RZNzgiLAorICAgICAgICAgICAgIkFCRSBFTkRFTkQgMTEyOSIsCisgICAgICAgIH07CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPERBVEEubGVuZ3RoOyBpKz0zKSB7CisgICAgICAgICAgICBsb2dsbigiUGF0dGVybjogIiArIFV0aWxpdHkuZXNjYXBlKERBVEFbaV0pKTsKKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBuZXcgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IoIjxJRD4iLCBEQVRBW2ldKTsKKyAgICAgICAgICAgIGV4cGVjdCh0LCBEQVRBW2krMV0sIERBVEFbaSsyXSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25maXJtIHRoYXQgdGhlIGNvbnRleHRTdGFydCwgY29udGV4dExpbWl0LCBzdGFydCwgYW5kIGxpbWl0CisgICAgICogYmVoYXZlIGNvcnJlY3RseS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0UG9zaXRpb25IYW5kbGluZygpIHsKKyAgICAgICAgLy8gQXJyYXkgb2YgM24gaXRlbXMKKyAgICAgICAgLy8gRWFjaCBpdGVtIGlzIDxydWxlcz4sIDxpbnB1dD4sIDxleHBlY3RlZCBvdXRwdXQ+CisgICAgICAgIFN0cmluZ1tdIERBVEEgPSB7CisgICAgICAgICAgICAiYXt0fSA+IFNTIDsge3R9YiA+IFVVIDsge3R9ID4gVFQgOyIsCisgICAgICAgICAgICAieHRhdCB0eHRiIiwgLy8gcG9zIDAsOSwwLDkKKyAgICAgICAgICAgICJ4VFRhU1MgVFR4VVViIiwKKworICAgICAgICAgICAgImF7dH0gPiBTUyA7IHt0fWIgPiBVVSA7IHt0fSA+IFRUIDsiLAorICAgICAgICAgICAgInh0YXQgdHh0YiIsIC8vIHBvcyAyLDksMyw4CisgICAgICAgICAgICAieHRhU1MgVFR4VVViIiwKKworICAgICAgICAgICAgImF7dH0gPiBTUyA7IHt0fWIgPiBVVSA7IHt0fSA+IFRUIDsiLAorICAgICAgICAgICAgInh0YXQgdHh0YiIsIC8vIHBvcyAzLDgsMyw4CisgICAgICAgICAgICAieHRhVFQgVFR4VFRiIiwKKyAgICAgICAgfTsKKworICAgICAgICAvLyBBcnJheSBvZiA0biBwb3NpdGlvbnMgLS0gdGhlc2UgZ28gd2l0aCB0aGUgREFUQSBhcnJheQorICAgICAgICAvLyBUaGV5IGFyZTogY29udGV4dFN0YXJ0LCBjb250ZXh0TGltaXQsIHN0YXJ0LCBsaW1pdAorICAgICAgICBpbnRbXSBQT1MgPSB7CisgICAgICAgICAgICAwLCA5LCAwLCA5LAorICAgICAgICAgICAgMiwgOSwgMywgOCwKKyAgICAgICAgICAgIDMsIDgsIDMsIDgsCisgICAgICAgIH07CisKKyAgICAgICAgaW50IG4gPSBEQVRBLmxlbmd0aC8zOworICAgICAgICBmb3IgKGludCBpPTA7IGk8bjsgaSsrKSB7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gbmV3IFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yKCI8SUQ+IiwgREFUQVszKmldKTsKKyAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uIHBvcyA9IG5ldyBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbigKKyAgICAgICAgICAgICAgICBQT1NbNCppXSwgUE9TWzQqaSsxXSwgUE9TWzQqaSsyXSwgUE9TWzQqaSszXSk7CisgICAgICAgICAgICBSZXBsYWNlYWJsZVN0cmluZyByc291cmNlID0gbmV3IFJlcGxhY2VhYmxlU3RyaW5nKERBVEFbMyppKzFdKTsKKyAgICAgICAgICAgIHQudHJhbnNsaXRlcmF0ZShyc291cmNlLCBwb3MpOworICAgICAgICAgICAgdC5maW5pc2hUcmFuc2xpdGVyYXRpb24ocnNvdXJjZSwgcG9zKTsKKyAgICAgICAgICAgIFN0cmluZyByZXN1bHQgPSByc291cmNlLnRvU3RyaW5nKCk7CisgICAgICAgICAgICBTdHJpbmcgZXhwID0gREFUQVszKmkrMl07CisgICAgICAgICAgICBleHBlY3RBdXgoVXRpbGl0eS5lc2NhcGUoREFUQVszKmldKSwKKyAgICAgICAgICAgICAgICAgICAgICBEQVRBWzMqaSsxXSArICIgLT4gIiArIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuZXF1YWxzKGV4cCksCisgICAgICAgICAgICAgICAgICAgICAgZXhwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgdGhlIEhpcmFnYW5hLUthdGFrYW5hIHRyYW5zbGl0ZXJhdG9yLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RIaXJhZ2FuYUthdGFrYW5hKCkgeworICAgICAgICBUcmFuc2xpdGVyYXRvciBoayA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJIaXJhZ2FuYS1LYXRha2FuYSIpOworICAgICAgICBUcmFuc2xpdGVyYXRvciBraCA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJLYXRha2FuYS1IaXJhZ2FuYSIpOworCisgICAgICAgIC8vIEFycmF5IG9mIDNuIGl0ZW1zCisgICAgICAgIC8vIEVhY2ggaXRlbSBpcyAiaGsifCJraCJ8ImJvdGgiLCA8SGlyYWdhbmE+LCA8S2F0YWthbmE+CisgICAgICAgIFN0cmluZ1tdIERBVEEgPSB7CisgICAgICAgICAgICAiYm90aCIsCisgICAgICAgICAgICAiXHUzMDQyXHUzMDkwXHUzMDk5XHUzMDkyXHUzMDUwIiwKKyAgICAgICAgICAgICJcdTMwQTJcdTMwRjhcdTMwRjJcdTMwQjAiLAorCisgICAgICAgICAgICAia2giLAorICAgICAgICAgICAgIlx1MzA3Q1x1MzA1MVx1MzA2MFx1MzA0Mlx1MzA5M1x1MzBGQyIsCisgICAgICAgICAgICAiXHUzMERDXHUzMEY2XHUzMEMwXHUzMEZDXHUzMEYzXHUzMEZDIiwKKyAgICAgICAgfTsKKworICAgICAgICBmb3IgKGludCBpPTA7IGk8REFUQS5sZW5ndGg7IGkrPTMpIHsKKyAgICAgICAgICAgIHN3aXRjaCAoREFUQVtpXS5jaGFyQXQoMCkpIHsKKyAgICAgICAgICAgIGNhc2UgJ2gnOiAvLyBIaXJhZ2FuYS1LYXRha2FuYQorICAgICAgICAgICAgICAgIGV4cGVjdChoaywgREFUQVtpKzFdLCBEQVRBW2krMl0pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnayc6IC8vIEthdGFrYW5hLUhpcmFnYW5hCisgICAgICAgICAgICAgICAgZXhwZWN0KGtoLCBEQVRBW2krMl0sIERBVEFbaSsxXSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlICdiJzogLy8gYm90aAorICAgICAgICAgICAgICAgIGV4cGVjdChoaywgREFUQVtpKzFdLCBEQVRBW2krMl0pOworICAgICAgICAgICAgICAgIGV4cGVjdChraCwgREFUQVtpKzJdLCBEQVRBW2krMV0pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IGludGVyLUluZGljIHRyYW5zbGl0ZXJhdG9ycy4gIFRoZXNlIGFyZSBjb21wb3NlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBUZXN0SW50ZXJJbmRpYygpIHsKKyAgICAgICAgU3RyaW5nIElEID0gIkRldmFuYWdhcmktR3VqYXJhdGkiOworICAgICAgICBUcmFuc2xpdGVyYXRvciBkZyA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKElEKTsKKyAgICAgICAgaWYgKGRnID09IG51bGwpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBnZXRJbnN0YW5jZSgiICsgSUQgKyAiKSByZXR1cm5lZCBudWxsIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIGlkID0gZGcuZ2V0SUQoKTsKKyAgICAgICAgaWYgKCFpZC5lcXVhbHMoSUQpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogZ2V0SW5zdGFuY2UoIiArIElEICsgIikuZ2V0SUQoKSA9PiAiICsgaWQpOworICAgICAgICB9CisgICAgICAgIFN0cmluZyBkZXYgPSAiXHUwOTAxXHUwOTBCXHUwOTI1IjsKKyAgICAgICAgU3RyaW5nIGd1aiA9ICJcdTBBODFcdTBBOEJcdTBBQTUiOworICAgICAgICBleHBlY3QoZGcsIGRldiwgZ3VqKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IGZpbHRlciBzeW50YXggaW4gSURzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIFRlc3RGaWx0ZXJJRHMoKSB7CisgICAgICAgIFN0cmluZyBJRCA9ICJVbmljb2RlLUhleFthZWlvdV0iOworICAgICAgICBleHBlY3QoVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoSUQpLCAicXVpenppY2FsIiwKKyAgICAgICAgICAgICAgICJxXFx1MDA3NVxcdTAwNjl6elxcdTAwNjljXFx1MDA2MWwiKTsKKyAgICAgICAgSUQgPSAiVW5pY29kZS1IZXhbYWVpb3VdO0hleC1Vbmljb2RlW141XSI7CisgICAgICAgIGV4cGVjdChUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZShJRCksICJxdWl6emljYWwiLAorICAgICAgICAgICAgICAgInFcXHUwMDc1aXp6aWNhbCIpOworICAgIH0KKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIFN1cHBvcnQgbWV0aG9kcworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgdm9pZCBleHBlY3QoU3RyaW5nIHJ1bGVzLCBTdHJpbmcgc291cmNlLCBTdHJpbmcgZXhwZWN0ZWRSZXN1bHQpIHsKKyAgICAgICAgZXhwZWN0KG5ldyBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvcigiPElEPiIsIHJ1bGVzKSwgc291cmNlLCBleHBlY3RlZFJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBleHBlY3QoVHJhbnNsaXRlcmF0b3IgdCwgU3RyaW5nIHNvdXJjZSwgU3RyaW5nIGV4cGVjdGVkUmVzdWx0LAorICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHJldmVyc2VUcmFuc2xpdGVyYXRvcikgeworICAgICAgICBleHBlY3QodCwgc291cmNlLCBleHBlY3RlZFJlc3VsdCk7CisgICAgICAgIGlmIChyZXZlcnNlVHJhbnNsaXRlcmF0b3IgIT0gbnVsbCkgeworICAgICAgICAgICAgZXhwZWN0KHJldmVyc2VUcmFuc2xpdGVyYXRvciwgZXhwZWN0ZWRSZXN1bHQsIHNvdXJjZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGV4cGVjdChUcmFuc2xpdGVyYXRvciB0LCBTdHJpbmcgc291cmNlLCBTdHJpbmcgZXhwZWN0ZWRSZXN1bHQpIHsKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9IHQudHJhbnNsaXRlcmF0ZShzb3VyY2UpOworICAgICAgICBleHBlY3RBdXgodC5nZXRJRCgpICsgIjpTdHJpbmciLCBzb3VyY2UsIHJlc3VsdCwgZXhwZWN0ZWRSZXN1bHQpOworCisgICAgICAgIFJlcGxhY2VhYmxlU3RyaW5nIHJzb3VyY2UgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcoc291cmNlKTsKKyAgICAgICAgdC50cmFuc2xpdGVyYXRlKHJzb3VyY2UpOworICAgICAgICByZXN1bHQgPSByc291cmNlLnRvU3RyaW5nKCk7CisgICAgICAgIGV4cGVjdEF1eCh0LmdldElEKCkgKyAiOlJlcGxhY2VhYmxlIiwgc291cmNlLCByZXN1bHQsIGV4cGVjdGVkUmVzdWx0KTsKKworICAgICAgICAvLyBUZXN0IGtleWJvYXJkIChpbmNyZW1lbnRhbCkgdHJhbnNsaXRlcmF0aW9uIC0tIHRoaXMgcmVzdWx0CisgICAgICAgIC8vIG11c3QgYmUgdGhlIHNhbWUgYWZ0ZXIgd2UgZmluYWxpemUgKHNlZSBiZWxvdykuCisgICAgICAgIHJzb3VyY2UucmVwbGFjZSgwLCByc291cmNlLmxlbmd0aCgpLCAiIik7CisgICAgICAgIFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uIGluZGV4ID0gbmV3IFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uKCk7CisgICAgICAgIFN0cmluZ0J1ZmZlciBsb2cgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPHNvdXJjZS5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBpZiAoaSAhPSAwKSB7CisgICAgICAgICAgICAgICAgbG9nLmFwcGVuZCgiICsgIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsb2cuYXBwZW5kKHNvdXJjZS5jaGFyQXQoaSkpLmFwcGVuZCgiIC0+ICIpOworICAgICAgICAgICAgdC50cmFuc2xpdGVyYXRlKHJzb3VyY2UsIGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy52YWx1ZU9mKHNvdXJjZS5jaGFyQXQoaSkpKTsKKyAgICAgICAgICAgIC8vIEFwcGVuZCB0aGUgc3RyaW5nIGJ1ZmZlciB3aXRoIGEgdmVydGljYWwgYmFyICd8JyB3aGVyZQorICAgICAgICAgICAgLy8gdGhlIGNvbW1pdHRlZCBpbmRleCBpcy4KKyAgICAgICAgICAgIFN0cmluZyBzID0gcnNvdXJjZS50b1N0cmluZygpOworICAgICAgICAgICAgbG9nLmFwcGVuZChzLnN1YnN0cmluZygwLCBpbmRleC5zdGFydCkpLgorICAgICAgICAgICAgICAgIGFwcGVuZCgnfCcpLgorICAgICAgICAgICAgICAgIGFwcGVuZChzLnN1YnN0cmluZyhpbmRleC5zdGFydCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBBcyBhIGZpbmFsIHN0ZXAgaW4ga2V5Ym9hcmQgdHJhbnNsaXRlcmF0aW9uLCB3ZSBtdXN0IGNhbGwKKyAgICAgICAgLy8gdHJhbnNsaXRlcmF0ZSB0byBmaW5pc2ggb2ZmIGFueSBwZW5kaW5nIHBhcnRpYWwgbWF0Y2hlcyB0aGF0CisgICAgICAgIC8vIHdlcmUgd2FpdGluZyBmb3IgbW9yZSBpbnB1dC4KKyAgICAgICAgdC5maW5pc2hUcmFuc2xpdGVyYXRpb24ocnNvdXJjZSwgaW5kZXgpOworICAgICAgICByZXN1bHQgPSByc291cmNlLnRvU3RyaW5nKCk7CisgICAgICAgIGxvZy5hcHBlbmQoIiA9PiAiKS5hcHBlbmQocnNvdXJjZS50b1N0cmluZygpKTsKKworICAgICAgICBleHBlY3RBdXgodC5nZXRJRCgpICsgIjpLZXlib2FyZCIsIGxvZy50b1N0cmluZygpLAorICAgICAgICAgICAgICAgICAgcmVzdWx0LmVxdWFscyhleHBlY3RlZFJlc3VsdCksCisgICAgICAgICAgICAgICAgICBleHBlY3RlZFJlc3VsdCk7CisgICAgfQorCisgICAgdm9pZCBleHBlY3RBdXgoU3RyaW5nIHRhZywgU3RyaW5nIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICBTdHJpbmcgcmVzdWx0LCBTdHJpbmcgZXhwZWN0ZWRSZXN1bHQpIHsKKyAgICAgICAgZXhwZWN0QXV4KHRhZywgc291cmNlICsgIiAtPiAiICsgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgcmVzdWx0LmVxdWFscyhleHBlY3RlZFJlc3VsdCksCisgICAgICAgICAgICAgICAgICBleHBlY3RlZFJlc3VsdCk7CisgICAgfQorICAgIAorICAgIHZvaWQgZXhwZWN0QXV4KFN0cmluZyB0YWcsIFN0cmluZyBzdW1tYXJ5LCBib29sZWFuIHBhc3MsCisgICAgICAgICAgICAgICAgICAgU3RyaW5nIGV4cGVjdGVkUmVzdWx0KSB7CisgICAgICAgIGlmIChwYXNzKSB7CisgICAgICAgICAgICBsb2dsbigiKCIrdGFnKyIpICIgKyBVdGlsaXR5LmVzY2FwZShzdW1tYXJ5KSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogKCIrdGFnKyIpICIKKyAgICAgICAgICAgICAgICAgICsgVXRpbGl0eS5lc2NhcGUoc3VtbWFyeSkKKyAgICAgICAgICAgICAgICAgICsgIiwgZXhwZWN0ZWQgIiArIFV0aWxpdHkuZXNjYXBlKGV4cGVjdGVkUmVzdWx0KSk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXN0L3RyYW5zbGl0L1VuaWNvZGVGaWx0ZXJMb2dpY1Rlc3QuamF2YSBiL3NyYy9jb20vaWJtL3Rlc3QvdHJhbnNsaXQvVW5pY29kZUZpbHRlckxvZ2ljVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjUxOTMyYjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXN0L3RyYW5zbGl0L1VuaWNvZGVGaWx0ZXJMb2dpY1Rlc3QuamF2YQpAQCAtMCwwICsxLDE5NiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGVzdC90cmFuc2xpdC9BdHRpYy9Vbmljb2RlRmlsdGVyTG9naWNUZXN0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMTAvMDQgMjM6MTI6MzMgJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRlc3QudHJhbnNsaXQ7CitpbXBvcnQgY29tLmlibS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS50ZXN0Lio7CitpbXBvcnQgY29tLmlibS51dGlsLlV0aWxpdHk7CitpbXBvcnQgamF2YS50ZXh0Lio7CitpbXBvcnQgamF2YS51dGlsLio7CisKKy8qKgorICogQHRlc3QKKyAqIEBzdW1tYXJ5IFVuaWNvZGVGaWx0ZXJMb2dpYyB0ZXN0IAorICovCitwdWJsaWMgY2xhc3MgVW5pY29kZUZpbHRlckxvZ2ljVGVzdCBleHRlbmRzIFRlc3RGbXdrIHsKKworICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIG5ldyBVbmljb2RlRmlsdGVyTG9naWNUZXN0KCkucnVuKGFyZ3MpOworICAgfQorCisKKyAgIFVuaWNvZGVGaWx0ZXIgRmlsdGVyMT1uZXcgVW5pY29kZUZpbHRlcigpIHsKKyAgICAgICAgcHVibGljIGJvb2xlYW4gY29udGFpbnMoY2hhciBjKSB7CisgICAgICAgICAgICBpZihjID09IDB4MDA2MSB8fCBjID09IDB4MDA0MSB8fCBjID09IDB4MDA2MyB8fCBjID09IDB4MDA0MykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgfQorICAgfTsKKyAgIFVuaWNvZGVGaWx0ZXIgRmlsdGVyMj1uZXcgVW5pY29kZUZpbHRlcigpIHsKKyAgICAgICAgcHVibGljIGJvb2xlYW4gY29udGFpbnMoY2hhciBjKSB7CisgICAgICAgICAgICBpZihjID09IDB4MDA3OSB8fCBjID09IDB4MDA1OSB8fCBjID09IDB4MDA3YSB8fCBjID09IDB4MDA1YSAgfHwgYyA9PSAweDAwNjEgfHwgYyA9PSAweDAwNjMpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICB9OworCisgICBwdWJsaWMgdm9pZCBUZXN0QWxsRmlsdGVycygpIHsKKworICAgICAgICBUcmFuc2xpdGVyYXRvciB0MSA9IFRyYW5zbGl0ZXJhdG9yLmdldEluc3RhbmNlKCJVbmljb2RlLUhleCIpOworICAgICAgICBTdHJpbmcgc291cmNlPSJhYmNkQUJDRHl6WVoiOworCisgICAgICAgIC8vc2FuaXR5IHRlc3Rpbmcgd2lodG91dCBhbnkgZmlsdGVyCisgICAgICAgIGV4cGVjdCh0MSwgIndpdGhvdXQgYW55IEZpbHRlciIsIHNvdXJjZSwgIlx1MDA2MVx1MDA2Mlx1MDA2M1x1MDA2NFx1MDA0MVx1MDA0Mlx1MDA0M1x1MDA0NFx1MDA3OVx1MDA3QVx1MDA1OVx1MDA1QSIpOworICAgICAgICAvL3Nhbml0eSB0ZXN0aW5nIHVzaW5nIHRoZSBGaWx0ZXIxKGFjQUMpIGFuZCBGaWx0ZXIyKGFjeXpZWikKKyAgICAgICAgdDEuc2V0RmlsdGVyKEZpbHRlcjEpOworICAgICAgICBleHBlY3QodDEsICJ3aXRoIEZpbHRlcihhY0FDKSIsIHNvdXJjZSwgImFcdTAwNjJjXHUwMDY0QVx1MDA0MkNcdTAwNDRcdTAwNzlcdTAwN0FcdTAwNTlcdTAwNUEiKTsKKyAgICAgICAgdDEuc2V0RmlsdGVyKEZpbHRlcjIpOworICAgICAgICBleHBlY3QodDEsICJ3aXRoIEZpbHRlcjIoYWN5ellaKSIsIHNvdXJjZSwgImFcdTAwNjJjXHUwMDY0XHUwMDQxXHUwMDQyXHUwMDQzXHUwMDQ0eXpZWiIpOworCisgICAgICAgIFVuaWNvZGVGaWx0ZXIgZmlsdGVyTk9UPVVuaWNvZGVGaWx0ZXJMb2dpYy5ub3QoRmlsdGVyMSk7CisgICAgICAgIFVuaWNvZGVGaWx0ZXIgZmlsdGVyQU5EPVVuaWNvZGVGaWx0ZXJMb2dpYy5hbmQoRmlsdGVyMSwgRmlsdGVyMik7CisgICAgICAgIFVuaWNvZGVGaWx0ZXIgZmlsdGVyT1I9VW5pY29kZUZpbHRlckxvZ2ljLm9yKEZpbHRlcjEsIEZpbHRlcjIpOworCisgICAgICAgIGNoZWNrTk9UKHQxLCBGaWx0ZXIxLCAiRmlsdGVyKGFjQUMpIiwgIHNvdXJjZSwgIlx1MDA2MWJcdTAwNjNkXHUwMDQxQlx1MDA0M0R5ellaIik7CisgICAgICAgIGNoZWNrTk9UKHQxLCBGaWx0ZXIyLCAiRmlsdGVyKGFjeXpZWikiLCBzb3VyY2UsICJcdTAwNjFiXHUwMDYzZEFCQ0RcdTAwNzlcdTAwN0FcdTAwNTlcdTAwNUEiKTsKKyAgICAgICAvLyBjaGVja05PVCh0MSwgbnVsbCwgIk5VTEwiLCBzb3VyY2UsICJhYmNkQUJDRHl6WVoiKTsKKyAgICAgICAgY2hlY2tOT1QodDEsIGZpbHRlck5PVCwgIkZpbHRlck5PVChGaXRsZXIxKGFjQUMpKSIsIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgICJhXHUwMDYyY1x1MDA2NEFcdTAwNDJDXHUwMDQ0XHUwMDc5XHUwMDdBXHUwMDU5XHUwMDVBIik7CisgICAgICAgIGNoZWNrTk9UKHQxLCBmaWx0ZXJBTkQsICJGaWx0ZXJBTkQoRml0bGVyMShhY0FDKSwgIEZpbHRlcjIoYWN5ellaKSkiLCAgc291cmNlLCAKKyAgICAgICAgICAgICAgICAgICJcdTAwNjFiXHUwMDYzZFx1MDA0MUJcdTAwNDNEXHUwMDc5XHUwMDdBXHUwMDU5XHUwMDVBIik7CisgICAgICAgIGNoZWNrTk9UKHQxLCBmaWx0ZXJPUiwgIkZpbHRlck9SKEZpdGxlcjEoYWNBQyksICBGaWx0ZXIyKGFjeXpZWikpIiwgIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgICJcdTAwNjFiXHUwMDYzZEFCQ0R5ellaIik7CisKKyAgICAgICAgY2hlY2tBTkQodDEsIEZpbHRlcjEsIEZpbHRlcjIsICJGaWx0ZXIxKGEsYyxBLEMpLCBGaWx0ZXIyKGFjeXpZWikiLCAgc291cmNlLCAKKyAgICAgICAgICAgICAgICAgImFcdTAwNjJjXHUwMDY0QVx1MDA0MkNcdTAwNDR5ellaIik7CisgICAgICAgIGNoZWNrQU5EKHQxLCBGaWx0ZXIyLCBGaWx0ZXIxLCAiRmlsdGVyMihhY3l6WVopLCBGaWx0ZXIxKGEsYyxBLEMpLCAiLCBzb3VyY2UsIAorICAgICAgICAgICAgICAgICAiYVx1MDA2MmNcdTAwNjRBXHUwMDQyQ1x1MDA0NHl6WVoiKTsKKyAgICAgICAgY2hlY2tBTkQodDEsIEZpbHRlcjEsIG51bGwsICJGaWx0ZXIxKGEsYyxBLEMpLCBOVUxMIiwgIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgICJhXHUwMDYyY1x1MDA2NEFcdTAwNDJDXHUwMDQ0XHUwMDc5XHUwMDdBXHUwMDU5XHUwMDVBIik7CisgICAgICAgIGNoZWNrQU5EKHQxLCBudWxsLCBGaWx0ZXIyLCAiTlVMTCwgRmlsdGVyMihhY3l6WVopIiwgICBzb3VyY2UsIAorICAgICAgICAgICAgICAgICAiYVx1MDA2MmNcdTAwNjRcdTAwNDFcdTAwNDJcdTAwNDNcdTAwNDR5ellaIik7CisgICAgICAgIGNoZWNrQU5EKHQxLCBudWxsLCBudWxsLCAiTlVMTCwgTlVMTCIsICBzb3VyY2UsIAorICAgICAgICAgICAgICAgICAiXHUwMDYxXHUwMDYyXHUwMDYzXHUwMDY0XHUwMDQxXHUwMDQyXHUwMDQzXHUwMDQ0XHUwMDc5XHUwMDdBXHUwMDU5XHUwMDVBIik7CisgICAgICAgIGNoZWNrQU5EKHQxLCBmaWx0ZXJBTkQsIG51bGwsICJGaWx0ZXJBTkQoRml0bGVyMShhY0FDKSwgIEZpbHRlcjIoYWN5ellaKSksIE5VTEwiLCAgc291cmNlLAorICAgICAgICAgICAgICAgICAgImFcdTAwNjJjXHUwMDY0QVx1MDA0MkNcdTAwNDR5ellaIik7CisgICAgICAgIGNoZWNrQU5EKHQxLCBmaWx0ZXJBTkQsIEZpbHRlcjEsICJGaWx0ZXJBTkQoRml0bGVyMShhY0FDKSwgIEZpbHRlcjIoYWN5ellaKSksIEZpbHRlcjEoYWNBQykiLCBzb3VyY2UsIAorICAgICAgICAgICAgICAgICAiYVx1MDA2MmNcdTAwNjRBXHUwMDQyQ1x1MDA0NHl6WVoiKTsKKyAgICAgICAgY2hlY2tBTkQodDEsIGZpbHRlckFORCwgRmlsdGVyMiwgIkZpbHRlckFORChGaXRsZXIxKGFjQUMpLCAgRmlsdGVyMihhY3l6WVopKSwgRmlsdGVyMihhY3l6WVopIiwgc291cmNlLCAKKyAgICAgICAgICAgICAgICAgImFcdTAwNjJjXHUwMDY0QVx1MDA0MkNcdTAwNDR5ellaIik7CisgICAgICAgIGNoZWNrQU5EKHQxLCBGaWx0ZXIxLCBmaWx0ZXJBTkQsICJGaWx0ZXIxKGFjQUMpLCBGaWx0ZXJBTkQoRmlsdGVyMShhY0FDKSwgRml0bGVyMShhY0FDKSkiLCBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAiYVx1MDA2MmNcdTAwNjRBXHUwMDQyQ1x1MDA0NHl6WVoiKTsKKyAgICAgICAgY2hlY2tBTkQodDEsIEZpbHRlcjIsIGZpbHRlckFORCwgIkZpbHRlcjIoYWN5ellaKSwgRmlsdGVyQU5EKEZpbHRlcjEoYWNBQyksIEZpdGxlcjEoYWNBQykpIiwgc291cmNlLCAKKyAgICAgICAgICAgICAgICAgImFcdTAwNjJjXHUwMDY0QVx1MDA0MkNcdTAwNDR5ellaIik7CisgICAgICAgIGNoZWNrQU5EKHQxLCBmaWx0ZXJPUiwgbnVsbCwgIkZpbHRlck9SKEZpdGxlcjEoYWNBQyksICBGaWx0ZXIyKGFjeXpZWikpLCBOVUxMIiwgIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgICJhXHUwMDYyY1x1MDA2NFx1MDA0MVx1MDA0Mlx1MDA0M1x1MDA0NFx1MDA3OVx1MDA3QVx1MDA1OVx1MDA1QSIpOworICAgICAgICBjaGVja0FORCh0MSwgZmlsdGVyT1IsIEZpbHRlcjEsICJGaWx0ZXJPUihGaXRsZXIxKGFjQUMpLCAgRmlsdGVyMihhY3l6WVopKSwgRml0bGVyMShhY0FDKSIsIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgImFcdTAwNjJjXHUwMDY0QVx1MDA0MkNcdTAwNDRcdTAwNzlcdTAwN0FcdTAwNTlcdTAwNUEiKTsKKyAgICAgICAgY2hlY2tBTkQodDEsIGZpbHRlck9SLCBGaWx0ZXIyLCAiRmlsdGVyT1IoRml0bGVyMShhY0FDKSwgIEZpbHRlcjIoYWN5ellaKSksIEZpdGxlcjIoYWN5ellaKSIsIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgICJhXHUwMDYyY1x1MDA2NFx1MDA0MVx1MDA0Mlx1MDA0M1x1MDA0NHl6WVoiKTsKKyAgICAgICAgY2hlY2tBTkQodDEsIGZpbHRlck5PVCwgRmlsdGVyMSwgIkZpbHRlck5PVChGaXRsZXIxKGFjQUMpKSwgRml0bGVyMShhY0FDKSIsIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgICJhYmNkQUJDRHl6WVoiKTsKKyAgICAgICAgY2hlY2tBTkQodDEsIEZpbHRlcjEsIGZpbHRlck5PVCwgIkZpdGxlcjEoYWNBQyksIEZpbHRlck5PVChGaXRsZXIxKGFjQUMpKSIsIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgICJhYmNkQUJDRHl6WVoiKTsKKyAgICAgICAgY2hlY2tBTkQodDEsIGZpbHRlck5PVCwgRmlsdGVyMiwgIkZpbHRlck5PVChGaXRsZXIxKGFjQUMpKSwgRml0bGVyMihhY3l6WVopIiwgc291cmNlLCAKKyAgICAgICAgICAgICAgICAgImFiY2RcdTAwNDFCXHUwMDQzRHl6WVoiKTsKKyAgICAgICAgY2hlY2tBTkQodDEsIEZpbHRlcjIsIGZpbHRlck5PVCwgIkZpdGxlcjIoYWN5ellaKSwgRmlsdGVyTk9UKEZpdGxlcjEoYWNBQykpIiwgc291cmNlLCAKKyAgICAgICAgICAgICAgICAgImFiY2RcdTAwNDFCXHUwMDQzRHl6WVoiKTsKKworICAgICAgICBjaGVja09SKHQxLCBGaWx0ZXIxLCBGaWx0ZXIyLCAiRmlsdGVyMShhLGMsQSxDKSwgRmlsdGVyMihhY3l6WVopIiwgIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAiYVx1MDA2MmNcdTAwNjRcdTAwNDFcdTAwNDJcdTAwNDNcdTAwNDRcdTAwNzlcdTAwN0FcdTAwNTlcdTAwNUEiKTsKKyAgICAgICAgY2hlY2tPUih0MSwgRmlsdGVyMiwgRmlsdGVyMSwgIkZpbHRlcjIoYWN5ellaKSwgRmlsdGVyMShhLGMsQSxDKSIsIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgImFcdTAwNjJjXHUwMDY0XHUwMDQxXHUwMDQyXHUwMDQzXHUwMDQ0XHUwMDc5XHUwMDdBXHUwMDU5XHUwMDVBIik7CisgICAgICAgIGNoZWNrT1IodDEsIEZpbHRlcjEsIG51bGwsICJGaWx0ZXIxKGEsYyxBLEMpLCBOVUxMIiwgc291cmNlLCAKKyAgICAgICAgICAgICAgICAiYVx1MDA2MmNcdTAwNjRBXHUwMDQyQ1x1MDA0NFx1MDA3OVx1MDA3QVx1MDA1OVx1MDA1QSIpOworICAgICAgICBjaGVja09SKHQxLCBudWxsLCBGaWx0ZXIyLCAiTlVMTCwgRmlsdGVyMihhY3l6WVopIiwgIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgImFcdTAwNjJjXHUwMDY0XHUwMDQxXHUwMDQyXHUwMDQzXHUwMDQ0eXpZWiIpOworICAgICAgICBjaGVja09SKHQxLCBudWxsLCBudWxsLCAiTlVMTCwgTlVMTCIsICAgc291cmNlLCAKKyAgICAgICAgICAgICAgICAiXHUwMDYxXHUwMDYyXHUwMDYzXHUwMDY0XHUwMDQxXHUwMDQyXHUwMDQzXHUwMDQ0XHUwMDc5XHUwMDdBXHUwMDU5XHUwMDVBIik7CisgICAgICAgIGNoZWNrT1IodDEsIGZpbHRlckFORCwgbnVsbCwgIkZpbHRlckFORChGaXRsZXIxKGFjQUMpLCAgRmlsdGVyMihhY3l6WVopKSwgTlVMTCIsIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgImFcdTAwNjJjXHUwMDY0QVx1MDA0MkNcdTAwNDR5ellaIik7CisgICAgICAgIGNoZWNrT1IodDEsIGZpbHRlckFORCwgRmlsdGVyMSwgIkZpbHRlckFORChGaXRsZXIxKGFjQUMpLCAgRmlsdGVyMihhY3l6WVopKSwgRmlsdGVyMShhY0FDKSIsIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgImFcdTAwNjJjXHUwMDY0QVx1MDA0MkNcdTAwNDRcdTAwNzlcdTAwN0FcdTAwNTlcdTAwNUEiKTsKKyAgICAgICAgY2hlY2tPUih0MSwgZmlsdGVyQU5ELCBGaWx0ZXIyLCAiRmlsdGVyQU5EKEZpdGxlcjEoYWNBQyksICBGaWx0ZXIyKGFjeXpZWikpLCBGaWx0ZXIyKGFjeXpZWikiLCBzb3VyY2UsIAorICAgICAgICAgICAgICAgICJhXHUwMDYyY1x1MDA2NFx1MDA0MVx1MDA0Mlx1MDA0M1x1MDA0NHl6WVoiKTsKKyAgICAgICAgY2hlY2tPUih0MSwgRmlsdGVyMSwgZmlsdGVyQU5ELCAiRmlsdGVyMShhY0FDKSwgRmlsdGVyQU5EKEZpbHRlcjEoYWNBQyksIEZpdGxlcjEoYWNBQykpIiwgc291cmNlLCAKKyAgICAgICAgICAgICAgICAiYVx1MDA2MmNcdTAwNjRBXHUwMDQyQ1x1MDA0NFx1MDA3OVx1MDA3QVx1MDA1OVx1MDA1QSIpOworICAgICAgICBjaGVja09SKHQxLCBGaWx0ZXIyLCBmaWx0ZXJBTkQsICJGaWx0ZXIyKGFjeXpZWiksIEZpbHRlckFORChGaWx0ZXIxKGFjQUMpLCBGaXRsZXIxKGFjQUMpKSIsIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgImFcdTAwNjJjXHUwMDY0XHUwMDQxXHUwMDQyXHUwMDQzXHUwMDQ0eXpZWiIpOworICAgICAgICBjaGVja09SKHQxLCBmaWx0ZXJOT1QsIEZpbHRlcjEsICJGaWx0ZXJOT1QoRml0bGVyMShhY0FDKSksIEZpdGxlcjEoYWNBQykiLCBzb3VyY2UsIAorICAgICAgICAgICAgICAgICJcdTAwNjFcdTAwNjJcdTAwNjNcdTAwNjRcdTAwNDFcdTAwNDJcdTAwNDNcdTAwNDRcdTAwNzlcdTAwN0FcdTAwNTlcdTAwNUEiKTsKKyAgICAgICAgY2hlY2tPUih0MSwgRmlsdGVyMSwgZmlsdGVyTk9ULCAiRml0bGVyMShhY0FDKSwgRmlsdGVyTk9UKEZpdGxlcjEoYWNBQykpIiwgIHNvdXJjZSwgCisgICAgICAgICAgICAgICAgIlx1MDA2MVx1MDA2Mlx1MDA2M1x1MDA2NFx1MDA0MVx1MDA0Mlx1MDA0M1x1MDA0NFx1MDA3OVx1MDA3QVx1MDA1OVx1MDA1QSIpOworICAgICAgICBjaGVja09SKHQxLCBmaWx0ZXJOT1QsIEZpbHRlcjIsICJGaWx0ZXJOT1QoRml0bGVyMShhY0FDKSksIEZpdGxlcjEoYWN5ellaKSIsICBzb3VyY2UsIAorICAgICAgICAgICAgICAgICJcdTAwNjFcdTAwNjJcdTAwNjNcdTAwNjRcdTAwNDFcdTAwNDJcdTAwNDNcdTAwNDR5ellaIik7CisgICAgICAgIGNoZWNrT1IodDEsIEZpbHRlcjIsIGZpbHRlck5PVCwgIkZpdGxlcjIoYWN5ellaKSwgRmlsdGVyTk9UKEZpdGxlcjEoYWNBQykpIiwgc291cmNlLCAKKyAgICAgICAgICAgICAgICAiXHUwMDYxXHUwMDYyXHUwMDYzXHUwMDY0XHUwMDQxXHUwMDQyXHUwMDQzXHUwMDQ0eXpZWiIpOworCisgIAorfQorICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIFN1cHBvcnQgbWV0aG9kcworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgdm9pZCBjaGVja09SKFRyYW5zbGl0ZXJhdG9yIHQsCisgICAgICAgICAgICAgICAgICAgVW5pY29kZUZpbHRlciBmMSwgCisgICAgICAgICAgICAgICAgICAgVW5pY29kZUZpbHRlciBmMiwgCisgICAgICAgICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgU3RyaW5nIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICBTdHJpbmcgZXhwZWN0ZWQpeworICAgICAgICBVbmljb2RlRmlsdGVyIGZpbHRlcj1Vbmljb2RlRmlsdGVyTG9naWMub3IoZjEsIGYyKTsKKyAgICAgICAgdC5zZXRGaWx0ZXIoZmlsdGVyKTsKKyAgICAgICAgZXhwZWN0KHQsICJ3aXRoIEZpbHRlck9SKCIgKyBtZXNzYWdlICsgIikiLCBzb3VyY2UsIGV4cGVjdGVkKTsKKworICAgIH0KKyAgICB2b2lkIGNoZWNrQU5EKFRyYW5zbGl0ZXJhdG9yIHQsCisgICAgICAgICAgICAgICAgICAgVW5pY29kZUZpbHRlciBmMSwgCisgICAgICAgICAgICAgICAgICAgVW5pY29kZUZpbHRlciBmMiwgCisgICAgICAgICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgU3RyaW5nIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICBTdHJpbmcgZXhwZWN0ZWQpeworICAgICAgICBVbmljb2RlRmlsdGVyIGZpbHRlcj1Vbmljb2RlRmlsdGVyTG9naWMuYW5kKGYxLCBmMik7CisgICAgICAgIHQuc2V0RmlsdGVyKGZpbHRlcik7CisgICAgICAgIGV4cGVjdCh0LCAid2l0aCBGaWx0ZXJBTkQoIiArIG1lc3NhZ2UgKyAiKSIsIHNvdXJjZSwgZXhwZWN0ZWQpOworCisgICAgfQorICAgIHZvaWQgY2hlY2tOT1QoVHJhbnNsaXRlcmF0b3IgdCwKKyAgICAgICAgICAgICAgICAgICBVbmljb2RlRmlsdGVyIGYxLCAKKyAgICAgICAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICBTdHJpbmcgc291cmNlLAorICAgICAgICAgICAgICAgICAgIFN0cmluZyBleHBlY3RlZCl7CisgICAgICAgIFVuaWNvZGVGaWx0ZXIgZmlsdGVyPVVuaWNvZGVGaWx0ZXJMb2dpYy5ub3QoZjEpOworICAgICAgICB0LnNldEZpbHRlcihmaWx0ZXIpOworICAgICAgICBleHBlY3QodCwgIndpdGggRmlsdGVyTk9UKCIgKyBtZXNzYWdlICsgIikiLCBzb3VyY2UsIGV4cGVjdGVkKTsKKworICAgIH0gIAorICAgIHZvaWQgZXhwZWN0KFRyYW5zbGl0ZXJhdG9yIHQsICBTdHJpbmcgbWVzc2FnZSwgIFN0cmluZyBzb3VyY2UsICBTdHJpbmcgZXhwZWN0ZWRSZXN1bHQpIHsKKyAgICAgICAgU3RyaW5nIHJzb3VyY2UgPSBzb3VyY2U7CisgICAgICAgIHQudHJhbnNsaXRlcmF0ZShyc291cmNlKTsKKyAgICAgICAgZXhwZWN0QXV4KHQuZ2V0SUQoKSArICI6UmVwbGFjZWFibGUgIiArIG1lc3NhZ2UsIHNvdXJjZSArICItPiIgKyByc291cmNlLCBleHBlY3RlZFJlc3VsdC5lcXVhbHMocnNvdXJjZSksIGV4cGVjdGVkUmVzdWx0KTsKKworICAgIH0KKyAgICB2b2lkIGV4cGVjdEF1eChTdHJpbmcgdGFnLCBTdHJpbmcgc3VtbWFyeSwgYm9vbGVhbiBwYXNzLCBTdHJpbmcgZXhwZWN0ZWRSZXN1bHQpIHsKKyAgICAgICAgaWYgKHBhc3MpIHsKKyAgICAgICAgICAgIGxvZ2xuKCIoIiArIHRhZysgIikgIiArIFV0aWxpdHkuZXNjYXBlKHN1bW1hcnkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiAoIisgdGFnKyAiKSAiCisgICAgICAgICAgICAgICAgKyBVdGlsaXR5LmVzY2FwZShzdW1tYXJ5KQorICAgICAgICAgICAgICAgICsgIiwgZXhwZWN0ZWQgIiArIFV0aWxpdHkuZXNjYXBlKGV4cGVjdGVkUmVzdWx0KSk7CisgICAgICAgIH0KKyAgICB9CisKK30KKworCisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rlc3QvdHJhbnNsaXQvVW5pY29kZVNldFRlc3QuamF2YSBiL3NyYy9jb20vaWJtL3Rlc3QvdHJhbnNsaXQvVW5pY29kZVNldFRlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41NmM1NzM4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGVzdC90cmFuc2xpdC9Vbmljb2RlU2V0VGVzdC5qYXZhCkBAIC0wLDAgKzEsNDY1IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXN0L3RyYW5zbGl0L0F0dGljL1VuaWNvZGVTZXRUZXN0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDUvMjYgMjA6NTc6NDQgJCAKKyAqICRSZXZpc2lvbjogMS45ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRlc3QudHJhbnNsaXQ7CitpbXBvcnQgY29tLmlibS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS50ZXN0Lio7CitpbXBvcnQgY29tLmlibS51dGlsLlV0aWxpdHk7CitpbXBvcnQgamF2YS50ZXh0Lio7CitpbXBvcnQgamF2YS51dGlsLio7CisKKy8qKgorICogQHRlc3QKKyAqIEBzdW1tYXJ5IEdlbmVyYWwgdGVzdCBvZiBVbmljb2RlU2V0CisgKi8KK3B1YmxpYyBjbGFzcyBVbmljb2RlU2V0VGVzdCBleHRlbmRzIFRlc3RGbXdrIHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBuZXcgVW5pY29kZVNldFRlc3QoKS5ydW4oYXJncyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdFBhdHRlcm5zKCkgeworICAgICAgICBVbmljb2RlU2V0IHNldCA9IG5ldyBVbmljb2RlU2V0KCk7CisgICAgICAgIGV4cGVjdFBhdHRlcm4oc2V0LCAiW1thLW1dJltkLXpdJltrLXldXSIsICAia20iKTsKKyAgICAgICAgZXhwZWN0UGF0dGVybihzZXQsICJbW2Etel0tW20teV0tW2Qtcl1dIiwgICJhY3p6Iik7CisgICAgICAgIGV4cGVjdFBhdHRlcm4oc2V0LCAiW2FcXC16XSIsICAiLS1hYXp6Iik7CisgICAgICAgIGV4cGVjdFBhdHRlcm4oc2V0LCAiWy1hel0iLCAgIi0tYWF6eiIpOworICAgICAgICBleHBlY3RQYXR0ZXJuKHNldCwgIlthei1dIiwgICItLWFhenoiKTsKKyAgICAgICAgZXhwZWN0UGF0dGVybihzZXQsICJbW1thLXpdLVthZWlvdV1pXV0iLCAiYmRmbnB0dnoiKTsKKworICAgICAgICAvLyBUaHJvdyBpbiBhIHRlc3Qgb2YgY29tcGxlbWVudAorICAgICAgICBzZXQuY29tcGxlbWVudCgpOworICAgICAgICBTdHJpbmcgZXhwID0gJ1x1MDAwMCcgKyAiYWVlb291dSIgKyAoY2hhcikoJ3onKzEpICsgJ1x1RkZGRic7CisgICAgICAgIGV4cGVjdFBhaXJzKHNldCwgZXhwKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0Q2F0ZWdvcmllcygpIHsKKyAgICAgICAgaW50IGZhaWx1cmVzID0gMDsKKyAgICAgICAgVW5pY29kZVNldCBzZXQgPSBuZXcgVW5pY29kZVNldCgiWzpMdTpdIik7CisgICAgICAgIGV4cGVjdENvbnRhaW5tZW50KHNldCwgIkFCQyIsICJhYmMiKTsKKworICAgICAgICAvLyBNYWtlIHN1cmUgZ2VuZXJhdGlvbiBvZiBMIGRvZXNuJ3QgcG9sbHV0ZSBjYWNoZWQgTHUgc2V0CisgICAgICAgIC8vIEZpcnN0IGdlbmVyYXRlIEwsIHRoZW4gTHUKKyAgICAgICAgaW50IFRPUCA9IDB4MjAwOyAvLyBEb24ndCBuZWVkIHRvIGdvIG92ZXIgdGhlIHdob2xlIHJhbmdlOgorICAgICAgICBzZXQgPSBuZXcgVW5pY29kZVNldCgiWzpMOl0iKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPDB4MjAwOyArK2kpIHsKKyAgICAgICAgICAgIGJvb2xlYW4gbCA9IENoYXJhY3Rlci5pc0xldHRlcigoY2hhcilpKTsKKyAgICAgICAgICAgIGlmIChsICE9IHNldC5jb250YWlucygoY2hhcilpKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBMIGNvbnRhaW5zICIgKyAoY2hhcilpICsgIiA9ICIgKyAKKyAgICAgICAgICAgICAgICAgICAgICBzZXQuY29udGFpbnMoKGNoYXIpaSkpOworICAgICAgICAgICAgICAgIGlmICgrK2ZhaWx1cmVzID09IDEwKSBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHNldCA9IG5ldyBVbmljb2RlU2V0KCJbOkx1Ol0iKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPDB4MjAwOyArK2kpIHsKKyAgICAgICAgICAgIGJvb2xlYW4gbHUgPSAoQ2hhcmFjdGVyLmdldFR5cGUoKGNoYXIpaSkgPT0gQ2hhcmFjdGVyLlVQUEVSQ0FTRV9MRVRURVIpOworICAgICAgICAgICAgaWYgKGx1ICE9IHNldC5jb250YWlucygoY2hhcilpKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBMdSBjb250YWlucyAiICsgKGNoYXIpaSArICIgPSAiICsgCisgICAgICAgICAgICAgICAgICAgICAgc2V0LmNvbnRhaW5zKChjaGFyKWkpKTsKKyAgICAgICAgICAgICAgICBpZiAoKytmYWlsdXJlcyA9PSAyMCkgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0QWRkUmVtb3ZlKCkgeworICAgICAgICBVbmljb2RlU2V0IHNldCA9IG5ldyBVbmljb2RlU2V0KCk7CisgICAgICAgIHNldC5hZGQoJ2EnLCAneicpOworICAgICAgICBleHBlY3RQYWlycyhzZXQsICJheiIpOworICAgICAgICBzZXQucmVtb3ZlKCdtJywgJ3AnKTsKKyAgICAgICAgZXhwZWN0UGFpcnMoc2V0LCAiYWxxeiIpOworICAgICAgICBzZXQucmVtb3ZlKCdlJywgJ2cnKTsKKyAgICAgICAgZXhwZWN0UGFpcnMoc2V0LCAiYWRobHF6Iik7CisgICAgICAgIHNldC5yZW1vdmUoJ2QnLCAnaScpOworICAgICAgICBleHBlY3RQYWlycyhzZXQsICJhY2pscXoiKTsKKyAgICAgICAgc2V0LnJlbW92ZSgnYycsICdyJyk7CisgICAgICAgIGV4cGVjdFBhaXJzKHNldCwgImFic3oiKTsKKyAgICAgICAgc2V0LmFkZCgnZicsICdxJyk7CisgICAgICAgIGV4cGVjdFBhaXJzKHNldCwgImFiZnFzeiIpOworICAgICAgICBzZXQucmVtb3ZlKCdhJywgJ2cnKTsKKyAgICAgICAgZXhwZWN0UGFpcnMoc2V0LCAiaHFzeiIpOworICAgICAgICBzZXQucmVtb3ZlKCdhJywgJ3onKTsKKyAgICAgICAgZXhwZWN0UGFpcnMoc2V0LCAiIik7CisKKyAgICAgICAgLy8gVHJ5IHJlbW92aW5nIGFuIGVudGlyZSBzZXQgZnJvbSBhbm90aGVyIHNldAorICAgICAgICBleHBlY3RQYXR0ZXJuKHNldCwgIltjLXhdIiwgImN4Iik7CisgICAgICAgIFVuaWNvZGVTZXQgc2V0MiA9IG5ldyBVbmljb2RlU2V0KCk7CisgICAgICAgIGV4cGVjdFBhdHRlcm4oc2V0MiwgIltmLWt5LXphLWJjW3Z3XV0iLCAiYWNma3Z3eXoiKTsKKyAgICAgICAgc2V0LnJlbW92ZUFsbChzZXQyKTsKKyAgICAgICAgZXhwZWN0UGFpcnMoc2V0LCAiZGVsdXh4Iik7CisKKyAgICAgICAgLy8gVHJ5IGFkZGluZyBhbiBlbnRpcmUgc2V0IHRvIGFub3RoZXIgc2V0CisgICAgICAgIGV4cGVjdFBhdHRlcm4oc2V0LCAiW2phY2tpZW1jbGVhbl0iLCAiYWFjY2VlaW4iKTsKKyAgICAgICAgZXhwZWN0UGF0dGVybihzZXQyLCAiW2hpdG9zaGluYW1la2F0YWphbWVzYW5kZXJzb25dIiwgImFhZGVoa21vcnQiKTsKKyAgICAgICAgc2V0LmFkZEFsbChzZXQyKTsKKyAgICAgICAgZXhwZWN0UGFpcnMoc2V0LCAiYWFjZWhvcnQiKTsKKworICAgICAgICAvLyBUZXN0IGNvbW11dGF0aXZpdHkKKyAgICAgICAgZXhwZWN0UGF0dGVybihzZXQsICJbaGl0b3NoaW5hbWVrYXRhamFtZXNhbmRlcnNvbl0iLCAiYWFkZWhrbW9ydCIpOworICAgICAgICBleHBlY3RQYXR0ZXJuKHNldDIsICJbamFja2llbWNsZWFuXSIsICJhYWNjZWVpbiIpOworICAgICAgICBzZXQuYWRkQWxsKHNldDIpOworICAgICAgICBleHBlY3RQYWlycyhzZXQsICJhYWNlaG9ydCIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1ha2Ugc3VyZSBtaW5pbWFsIHJlcHJlc2VudGF0aW9uIGlzIG1haW50YWluZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgVGVzdE1pbmltYWxSZXAoKSB7CisgICAgICAgIC8vIFRoaXMgaXMgcHJldHR5IHRob3JvdWdobHkgdGVzdGVkIGJ5IGNoZWNrQ2Fub25pY2FsUmVwKCkKKyAgICAgICAgLy8gcnVuIGFnYWluc3QgdGhlIGV4aGF1c3RpdmUgb3BlcmF0aW9uIHJlc3VsdHMuICBVc2UgdGhlIGNvZGUKKyAgICAgICAgLy8gaGVyZSBmb3IgZGVidWdnaW5nIHNwZWNpZmljIHNwb3QgcHJvYmxlbXMuCisgICAgICAgCisgICAgICAgIC8vIDEgb3ZlcmxhcCBhZ2FpbnN0IDIKKyAgICAgICAgVW5pY29kZVNldCBzZXQgPSBuZXcgVW5pY29kZVNldCgiW2gta20tcV0iKTsKKyAgICAgICAgVW5pY29kZVNldCBzZXQyID0gbmV3IFVuaWNvZGVTZXQoIltpLW9dIik7CisgICAgICAgIHNldC5hZGRBbGwoc2V0Mik7CisgICAgICAgIGV4cGVjdFBhaXJzKHNldCwgImhxIik7CisgICAgICAgIC8vIHJpZ2h0CisgICAgICAgIHNldC5hcHBseVBhdHRlcm4oIlthLW1dIik7CisgICAgICAgIHNldDIuYXBwbHlQYXR0ZXJuKCJbZS1vXSIpOworICAgICAgICBzZXQuYWRkQWxsKHNldDIpOworICAgICAgICBleHBlY3RQYWlycyhzZXQsICJhbyIpOworICAgICAgICAvLyBsZWZ0CisgICAgICAgIHNldC5hcHBseVBhdHRlcm4oIltlLW9dIik7CisgICAgICAgIHNldDIuYXBwbHlQYXR0ZXJuKCJbYS1tXSIpOworICAgICAgICBzZXQuYWRkQWxsKHNldDIpOworICAgICAgICBleHBlY3RQYWlycyhzZXQsICJhbyIpOworICAgICAgICAvLyAxIG92ZXJsYXAgYWdhaW5zdCAzCisgICAgICAgIHNldC5hcHBseVBhdHRlcm4oIlthLWVnLW1vLXddIik7CisgICAgICAgIHNldDIuYXBwbHlQYXR0ZXJuKCJbZC1xXSIpOworICAgICAgICBzZXQuYWRkQWxsKHNldDIpOworICAgICAgICBleHBlY3RQYWlycyhzZXQsICJhdyIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RBUEkoKSB7CisgICAgICAgIC8vIGRlZmF1bHQgY3QKKyAgICAgICAgVW5pY29kZVNldCBzZXQgPSBuZXcgVW5pY29kZVNldCgpOworICAgICAgICBpZiAoIXNldC5pc0VtcHR5KCkgfHwgc2V0LmdldFJhbmdlQ291bnQoKSAhPSAwKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTCwgc2V0IHNob3VsZCBiZSBlbXB0eSBidXQgaXNuJ3Q6ICIgKworICAgICAgICAgICAgICAgICAgc2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGNsZWFyKCksIGlzRW1wdHkoKQorICAgICAgICBzZXQuYWRkKCdhJyk7CisgICAgICAgIGlmIChzZXQuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTCwgc2V0IHNob3VsZG4ndCBiZSBlbXB0eSBidXQgaXM6ICIgKworICAgICAgICAgICAgICAgICAgc2V0KTsKKyAgICAgICAgfQorICAgICAgICBzZXQuY2xlYXIoKTsKKyAgICAgICAgaWYgKCFzZXQuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTCwgc2V0IHNob3VsZCBiZSBlbXB0eSBidXQgaXNuJ3Q6ICIgKworICAgICAgICAgICAgICAgICAgc2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHNpemUoKQorICAgICAgICBzZXQuY2xlYXIoKTsKKyAgICAgICAgaWYgKHNldC5zaXplKCkgIT0gMCkgeworICAgICAgICAgICAgZXJybG4oIkZBSUwsIHNpemUgc2hvdWxkIGJlIDAsIGJ1dCBpcyAiICsgc2V0LnNpemUoKSArCisgICAgICAgICAgICAgICAgICAiOiAiICsgc2V0KTsKKyAgICAgICAgfQorICAgICAgICBzZXQuYWRkKCdhJyk7CisgICAgICAgIGlmIChzZXQuc2l6ZSgpICE9IDEpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMLCBzaXplIHNob3VsZCBiZSAxLCBidXQgaXMgIiArIHNldC5zaXplKCkgKworICAgICAgICAgICAgICAgICAgIjogIiArIHNldCk7CisgICAgICAgIH0KKyAgICAgICAgc2V0LmFkZCgnMScsICc5Jyk7CisgICAgICAgIGlmIChzZXQuc2l6ZSgpICE9IDEwKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTCwgc2l6ZSBzaG91bGQgYmUgMTAsIGJ1dCBpcyAiICsgc2V0LnNpemUoKSArCisgICAgICAgICAgICAgICAgICAiOiAiICsgc2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGNvbnRhaW5zKGZpcnN0LCBsYXN0KQorICAgICAgICBzZXQuY2xlYXIoKTsKKyAgICAgICAgc2V0LmFwcGx5UGF0dGVybigiW0EtWSAxLTggYi1kIGwteV0iKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGk8c2V0LmdldFJhbmdlQ291bnQoKTsgKytpKSB7CisgICAgICAgICAgICBjaGFyIGEgPSBzZXQuZ2V0UmFuZ2VTdGFydChpKTsKKyAgICAgICAgICAgIGNoYXIgYiA9IHNldC5nZXRSYW5nZUVuZChpKTsKKyAgICAgICAgICAgIGlmICghc2V0LmNvbnRhaW5zKGEsIGIpKSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUwsIHNob3VsZCBjb250YWluICIgKyAoY2hhcilhICsgJy0nICsgKGNoYXIpYiArCisgICAgICAgICAgICAgICAgICAgICAgIiBidXQgZG9lc24ndDogIiArIHNldCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2V0LmNvbnRhaW5zKChjaGFyKShhLTEpLCBiKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMLCBzaG91bGRuJ3QgY29udGFpbiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAoY2hhcikoYS0xKSArICctJyArIChjaGFyKWIgKworICAgICAgICAgICAgICAgICAgICAgICIgYnV0IGRvZXM6ICIgKyBzZXQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhhLCAoY2hhcikoYisxKSkpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTCwgc2hvdWxkbid0IGNvbnRhaW4gIiArCisgICAgICAgICAgICAgICAgICAgICAgKGNoYXIpYSArICctJyArIChjaGFyKShiKzEpICsKKyAgICAgICAgICAgICAgICAgICAgICAiIGJ1dCBkb2VzOiAiICsgc2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFBvcnRlZCBJbnZlcnNpb25MaXN0IHRlc3QuCisgICAgICAgIFVuaWNvZGVTZXQgYSA9IG5ldyBVbmljb2RlU2V0KChjaGFyKTMsKGNoYXIpMTApOworICAgICAgICBVbmljb2RlU2V0IGIgPSBuZXcgVW5pY29kZVNldCgoY2hhcik3LChjaGFyKTE1KTsKKyAgICAgICAgVW5pY29kZVNldCBjID0gbmV3IFVuaWNvZGVTZXQoKTsKKworICAgICAgICBsb2dsbigiYSBbMy0xMF06ICIgKyBhKTsKKyAgICAgICAgbG9nbG4oImIgWzctMTVdOiAiICsgYik7CisgICAgICAgIGMuc2V0KGEpOyBjLmFkZEFsbChiKTsKKyAgICAgICAgVW5pY29kZVNldCBleHAgPSBuZXcgVW5pY29kZVNldCgoY2hhcikzLChjaGFyKTE1KTsKKyAgICAgICAgaWYgKGMuZXF1YWxzKGV4cCkpIHsKKyAgICAgICAgICAgIGxvZ2xuKCJjLnNldChhKS5hZGQoYik6ICIgKyBjKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBjLnNldChhKS5hZGQoYikgPSAiICsgYyArICIsIGV4cGVjdCAiICsgZXhwKTsKKyAgICAgICAgfQorICAgICAgICBjLmNvbXBsZW1lbnQoKTsKKyAgICAgICAgZXhwLnNldCgoY2hhcikwLCAoY2hhcikyKTsKKyAgICAgICAgZXhwLmFkZCgoY2hhcikxNiwgVW5pY29kZVNldC5NQVhfVkFMVUUpOworICAgICAgICBpZiAoYy5lcXVhbHMoZXhwKSkgeworICAgICAgICAgICAgbG9nbG4oImMuY29tcGxlbWVudCgpOiAiICsgYyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogYy5jb21wbGVtZW50KCkgPSAiICsgYyArICIsIGV4cGVjdCAiICsgZXhwKTsKKyAgICAgICAgfQorICAgICAgICBjLmNvbXBsZW1lbnQoKTsKKyAgICAgICAgZXhwLnNldCgoY2hhcikzLCAoY2hhcikxNSk7CisgICAgICAgIGlmIChjLmVxdWFscyhleHApKSB7CisgICAgICAgICAgICBsb2dsbigiYy5jb21wbGVtZW50KCk6ICIgKyBjKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBjLmNvbXBsZW1lbnQoKSA9ICIgKyBjICsgIiwgZXhwZWN0ICIgKyBleHApOworICAgICAgICB9CisgICAgICAgIGMuc2V0KGEpOyBjLmNvbXBsZW1lbnRBbGwoYik7CisgICAgICAgIGV4cC5zZXQoKGNoYXIpMywoY2hhcik2KTsKKyAgICAgICAgZXhwLmFkZCgoY2hhcikxMSwoY2hhcikgMTUpOworICAgICAgICBpZiAoYy5lcXVhbHMoZXhwKSkgeworICAgICAgICAgICAgbG9nbG4oImMuc2V0KGEpLmNvbXBsZW1lbnQoYik6ICIgKyBjKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBjLnNldChhKS5jb21wbGVtZW50KGIpID0gIiArIGMgKyAiLCBleHBlY3QgIiArIGV4cCk7CisgICAgICAgIH0KKworICAgICAgICBleHAuc2V0KGMpOworICAgICAgICBjID0gYml0c1RvU2V0KHNldFRvQml0cyhjKSk7CisgICAgICAgIGlmIChjLmVxdWFscyhleHApKSB7CisgICAgICAgICAgICBsb2dsbigiYml0c1RvU2V0KHNldFRvQml0cyhjKSk6ICIgKyBjKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBiaXRzVG9TZXQoc2V0VG9CaXRzKGMpKSA9ICIgKyBjICsgIiwgZXhwZWN0ICIgKyBleHApOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdEV4aGF1c3RpdmUoKSB7CisgICAgICAgIC8vIGV4aGF1c3RpdmUgdGVzdHMuIFNpbXVsYXRlIFVuaWNvZGVTZXRzIHdpdGggaW50ZWdlcnMuCisgICAgICAgIC8vIFRoYXQgZ2l2ZXMgdXMgdmVyeSBzb2xpZCB0ZXN0cyAoZXhjZXB0IGZvciBsYXJnZSBtZW1vcnkgdGVzdHMpLgorCisgICAgICAgIGNoYXIgbGltaXQgPSAoY2hhcikxMjg7CisKKyAgICAgICAgZm9yIChjaGFyIGkgPSAwOyBpIDwgbGltaXQ7ICsraSkgeworICAgICAgICAgICAgbG9nbG4oIlRlc3RpbmcgIiArIGkgKyAiLCAiICsgYml0c1RvU2V0KGkpKTsKKyAgICAgICAgICAgIF90ZXN0Q29tcGxlbWVudChpKTsKKyAgICAgICAgICAgIGZvciAoY2hhciBqID0gMDsgaiA8IGxpbWl0OyArK2opIHsKKyAgICAgICAgICAgICAgICBfdGVzdEFkZChpLGopOworICAgICAgICAgICAgICAgIF90ZXN0WG9yKGksaik7CisgICAgICAgICAgICAgICAgX3Rlc3RSZXRhaW4oaSxqKTsKKyAgICAgICAgICAgICAgICBfdGVzdFJlbW92ZShpLGopOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZvaWQgX3Rlc3RDb21wbGVtZW50KGludCBhKSB7CisgICAgICAgIFVuaWNvZGVTZXQgeCA9IGJpdHNUb1NldChhKTsKKyAgICAgICAgVW5pY29kZVNldCB6ID0gYml0c1RvU2V0KGEpOworICAgICAgICB6LmNvbXBsZW1lbnQoKTsKKyAgICAgICAgaW50IGMgPSBzZXRUb0JpdHMoeik7CisgICAgICAgIGlmIChjICE9ICh+YSkpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMRUQ6IGFkZDogfiIgKyB4ICsgICIgIT0gIiArIHopOworICAgICAgICAgICAgZXJybG4oIkZBSUxFRDogYWRkOiB+IiArIGEgKyAiICE9ICIgKyBjKTsKKyAgICAgICAgfQorICAgICAgICBjaGVja0Nhbm9uaWNhbFJlcCh6LCAiY29tcGxlbWVudCAiICsgYSk7CisgICAgfQorCisgICAgdm9pZCBfdGVzdEFkZChpbnQgYSwgaW50IGIpIHsKKyAgICAgICAgVW5pY29kZVNldCB4ID0gYml0c1RvU2V0KGEpOworICAgICAgICBVbmljb2RlU2V0IHkgPSBiaXRzVG9TZXQoYik7CisgICAgICAgIFVuaWNvZGVTZXQgeiA9IGJpdHNUb1NldChhKTsKKyAgICAgICAgei5hZGRBbGwoeSk7CisgICAgICAgIGludCBjID0gc2V0VG9CaXRzKHopOworICAgICAgICBpZiAoYyAhPSAoYSB8IGIpKSB7CisgICAgICAgICAgICBlcnJsbihVdGlsaXR5LmVzY2FwZSgiRkFJTEVEOiBhZGQ6ICIgKyB4ICsgIiB8ICIgKyB5ICsgIiAhPSAiICsgeikpOworICAgICAgICAgICAgZXJybG4oIkZBSUxFRDogYWRkOiAiICsgYSArICIgfCAiICsgYiArICIgIT0gIiArIGMpOworICAgICAgICB9CisgICAgICAgIGNoZWNrQ2Fub25pY2FsUmVwKHosICJhZGQgIiArIGEgKyAiLCIgKyBiKTsKKyAgICB9CisKKyAgICB2b2lkIF90ZXN0UmV0YWluKGludCBhLCBpbnQgYikgeworICAgICAgICBVbmljb2RlU2V0IHggPSBiaXRzVG9TZXQoYSk7CisgICAgICAgIFVuaWNvZGVTZXQgeSA9IGJpdHNUb1NldChiKTsKKyAgICAgICAgVW5pY29kZVNldCB6ID0gYml0c1RvU2V0KGEpOworICAgICAgICB6LnJldGFpbkFsbCh5KTsKKyAgICAgICAgaW50IGMgPSBzZXRUb0JpdHMoeik7CisgICAgICAgIGlmIChjICE9IChhICYgYikpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMRUQ6IHJldGFpbjogIiArIHggKyAiICYgIiArIHkgKyAiICE9ICIgKyB6KTsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMRUQ6IHJldGFpbjogIiArIGEgKyAiICYgIiArIGIgKyAiICE9ICIgKyBjKTsKKyAgICAgICAgfQorICAgICAgICBjaGVja0Nhbm9uaWNhbFJlcCh6LCAicmV0YWluICIgKyBhICsgIiwiICsgYik7CisgICAgfQorCisgICAgdm9pZCBfdGVzdFJlbW92ZShpbnQgYSwgaW50IGIpIHsKKyAgICAgICAgVW5pY29kZVNldCB4ID0gYml0c1RvU2V0KGEpOworICAgICAgICBVbmljb2RlU2V0IHkgPSBiaXRzVG9TZXQoYik7CisgICAgICAgIFVuaWNvZGVTZXQgeiA9IGJpdHNUb1NldChhKTsKKyAgICAgICAgei5yZW1vdmVBbGwoeSk7CisgICAgICAgIGludCBjID0gc2V0VG9CaXRzKHopOworICAgICAgICBpZiAoYyAhPSAoYSAmfiBiKSkgeworICAgICAgICAgICAgZXJybG4oIkZBSUxFRDogcmVtb3ZlOiAiICsgeCArICIgJn4gIiArIHkgKyAiICE9ICIgKyB6KTsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMRUQ6IHJlbW92ZTogIiArIGEgKyAiICZ+ICIgKyBiICsgIiAhPSAiICsgYyk7CisgICAgICAgIH0KKyAgICAgICAgY2hlY2tDYW5vbmljYWxSZXAoeiwgInJlbW92ZSAiICsgYSArICIsIiArIGIpOworICAgIH0KKworICAgIHZvaWQgX3Rlc3RYb3IoaW50IGEsIGludCBiKSB7CisgICAgICAgIFVuaWNvZGVTZXQgeCA9IGJpdHNUb1NldChhKTsKKyAgICAgICAgVW5pY29kZVNldCB5ID0gYml0c1RvU2V0KGIpOworICAgICAgICBVbmljb2RlU2V0IHogPSBiaXRzVG9TZXQoYSk7CisgICAgICAgIHouY29tcGxlbWVudEFsbCh5KTsKKyAgICAgICAgaW50IGMgPSBzZXRUb0JpdHMoeik7CisgICAgICAgIGlmIChjICE9IChhIF4gYikpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMRUQ6IGNvbXBsZW1lbnQ6ICIgKyB4ICsgIiBeICIgKyB5ICsgIiAhPSAiICsgeik7CisgICAgICAgICAgICBlcnJsbigiRkFJTEVEOiBjb21wbGVtZW50OiAiICsgYSArICIgXiAiICsgYiArICIgIT0gIiArIGMpOworICAgICAgICB9CisgICAgICAgIGNoZWNrQ2Fub25pY2FsUmVwKHosICJjb21wbGVtZW50ICIgKyBhICsgIiwiICsgYik7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENoZWNrIHRoYXQgcmFuZ2VzIGFyZSBtb25vdG9uaWNhbGx5IGluY3JlYXNpbmcgYW5kIG5vbi0KKyAgICAgKiBvdmVybGFwcGluZy4KKyAgICAgKi8KKyAgICB2b2lkIGNoZWNrQ2Fub25pY2FsUmVwKFVuaWNvZGVTZXQgc2V0LCBTdHJpbmcgbXNnKSB7CisgICAgICAgIGludCBuID0gc2V0LmdldFJhbmdlQ291bnQoKTsKKyAgICAgICAgaWYgKG4gPCAwKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTCByZXN1bHQgb2YgIiArIG1zZyArCisgICAgICAgICAgICAgICAgICAiOiByYW5nZSBjb3VudCBzaG91bGQgYmUgPj0gMCBidXQgaXMgIiArCisgICAgICAgICAgICAgICAgICBuICsgIiBmb3IgIiArIFV0aWxpdHkuZXNjYXBlKHNldC50b1N0cmluZygpKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaW50IGxhc3QgPSAwOworICAgICAgICBmb3IgKGludCBpPTA7IGk8bjsgKytpKSB7CisgICAgICAgICAgICBpbnQgc3RhcnQgPSBzZXQuZ2V0UmFuZ2VTdGFydChpKTsKKyAgICAgICAgICAgIGludCBlbmQgPSBzZXQuZ2V0UmFuZ2VFbmQoaSk7CisgICAgICAgICAgICBpZiAoc3RhcnQgPiBlbmQpIHsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTCByZXN1bHQgb2YgIiArIG1zZyArCisgICAgICAgICAgICAgICAgICAgICAgIjogcmFuZ2UgIiArIChpKzEpICsKKyAgICAgICAgICAgICAgICAgICAgICAiIHN0YXJ0ID4gZW5kOiAiICsgc3RhcnQgKyAiLCAiICsgZW5kICsKKyAgICAgICAgICAgICAgICAgICAgICAiIGZvciAiICsgVXRpbGl0eS5lc2NhcGUoc2V0LnRvU3RyaW5nKCkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpID4gMCAmJiBzdGFydCA8PSBsYXN0KSB7CisgICAgICAgICAgICAgICAgZXJybG4oIkZBSUwgcmVzdWx0IG9mICIgKyBtc2cgKworICAgICAgICAgICAgICAgICAgICAgICI6IHJhbmdlICIgKyAoaSsxKSArCisgICAgICAgICAgICAgICAgICAgICAgIiBvdmVybGFwcyBwcmV2aW91cyByYW5nZTogIiArIHN0YXJ0ICsgIiwgIiArIGVuZCArCisgICAgICAgICAgICAgICAgICAgICAgIiBmb3IgIiArIFV0aWxpdHkuZXNjYXBlKHNldC50b1N0cmluZygpKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsYXN0ID0gZW5kOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydCBhIGJpdG1hc2sgdG8gYSBVbmljb2RlU2V0LgorICAgICAqLworICAgIHN0YXRpYyBVbmljb2RlU2V0IGJpdHNUb1NldChpbnQgYSkgeworICAgICAgICBVbmljb2RlU2V0IHJlc3VsdCA9IG5ldyBVbmljb2RlU2V0KCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzI7ICsraSkgeworICAgICAgICAgICAgaWYgKChhICYgKDE8PGkpKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFkZCgoY2hhcilpLChjaGFyKWkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENvbnZlcnQgYSBVbmljb2RlU2V0IHRvIGEgYml0bWFzay4gIE9ubHkgdGhlIGNoYXJhY3RlcnMKKyAgICAgKiBVKzAwMDAgdG8gVSswMDIwIGFyZSByZXByZXNlbnRlZCBpbiB0aGUgYml0bWFzay4KKyAgICAgKi8KKyAgICBzdGF0aWMgaW50IHNldFRvQml0cyhVbmljb2RlU2V0IHgpIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzI7ICsraSkgeworICAgICAgICAgICAgaWYgKHguY29udGFpbnMoKGNoYXIpaSkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgfD0gKDE8PGkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSByZXByZXNlbnRhdGlvbiBvZiBhbiBpbnZlcnNpb24gbGlzdCBiYXNlZCBVbmljb2RlU2V0CisgICAgICogYXMgYSBwYWlycyBsaXN0LiAgUmFuZ2VzIGFyZSBsaXN0ZWQgaW4gYXNjZW5kaW5nIFVuaWNvZGUgb3JkZXIuCisgICAgICogRm9yIGV4YW1wbGUsIHRoZSBzZXQgW2EtekEtTTNdIGlzIHJlcHJlc2VudGVkIGFzICIzM0FNYXoiLgorICAgICAqLworICAgIHN0YXRpYyBTdHJpbmcgZ2V0UGFpcnMoVW5pY29kZVNldCBzZXQpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHBhaXJzID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8c2V0LmdldFJhbmdlQ291bnQoKTsgKytpKSB7CisgICAgICAgICAgICBpbnQgc3RhcnQgPSBzZXQuZ2V0UmFuZ2VTdGFydChpKTsKKyAgICAgICAgICAgIGludCBlbmQgPSBzZXQuZ2V0UmFuZ2VFbmQoaSk7CisgICAgICAgICAgICBpZiAoZW5kID4gMHhGRkZGKSB7CisgICAgICAgICAgICAgICAgZW5kID0gMHhGRkZGOworICAgICAgICAgICAgICAgIGkgPSBzZXQuZ2V0UmFuZ2VDb3VudCgpOyAvLyBTaG91bGQgYmUgdW5uZWNlc3NhcnkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBhaXJzLmFwcGVuZCgoY2hhcilzdGFydCkuYXBwZW5kKChjaGFyKWVuZCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHBhaXJzLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgdm9pZCBleHBlY3RDb250YWlubWVudChVbmljb2RlU2V0IHNldCwgU3RyaW5nIGNoYXJzSW4sIFN0cmluZyBjaGFyc091dCkgeworICAgICAgICBTdHJpbmdCdWZmZXIgYmFkID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBpZiAoY2hhcnNJbiAhPSBudWxsKSB7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8Y2hhcnNJbi5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICAgICAgY2hhciBjID0gY2hhcnNJbi5jaGFyQXQoaSk7CisgICAgICAgICAgICAgICAgaWYgKCFzZXQuY29udGFpbnMoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgYmFkLmFwcGVuZChjKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYmFkLmxlbmd0aCgpID4gMCkgeworICAgICAgICAgICAgICAgIGxvZ2xuKFV0aWxpdHkuZXNjYXBlKCJGYWlsOiBzZXQgIiArIHNldCArICIgZG9lcyBub3QgY29udGFpbiAiICsgYmFkICsKKyAgICAgICAgICAgICAgICAgICAgICAiLCBleHBlY3RlZCBjb250YWlubWVudCBvZiAiICsgY2hhcnNJbikpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsb2dsbihVdGlsaXR5LmVzY2FwZSgiT2s6IHNldCAiICsgc2V0ICsgIiBjb250YWlucyAiICsgY2hhcnNJbikpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChjaGFyc091dCAhPSBudWxsKSB7CisgICAgICAgICAgICBiYWQuc2V0TGVuZ3RoKDApOworICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPGNoYXJzT3V0Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBjaGFyIGMgPSBjaGFyc091dC5jaGFyQXQoaSk7CisgICAgICAgICAgICAgICAgaWYgKHNldC5jb250YWlucyhjKSkgeworICAgICAgICAgICAgICAgICAgICBiYWQuYXBwZW5kKGMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChiYWQubGVuZ3RoKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgbG9nbG4oVXRpbGl0eS5lc2NhcGUoIkZhaWw6IHNldCAiICsgc2V0ICsgIiBjb250YWlucyAiICsgYmFkICsKKyAgICAgICAgICAgICAgICAgICAgICAiLCBleHBlY3RlZCBub24tY29udGFpbm1lbnQgb2YgIiArIGNoYXJzT3V0KSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxvZ2xuKFV0aWxpdHkuZXNjYXBlKCJPazogc2V0ICIgKyBzZXQgKyAiIGRvZXMgbm90IGNvbnRhaW4gIiArIGNoYXJzT3V0KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGV4cGVjdFBhdHRlcm4oVW5pY29kZVNldCBzZXQsCisgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBwYXR0ZXJuLAorICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZXhwZWN0ZWRQYWlycykgeworICAgICAgICBzZXQuYXBwbHlQYXR0ZXJuKHBhdHRlcm4pOworICAgICAgICBpZiAoIWdldFBhaXJzKHNldCkuZXF1YWxzKGV4cGVjdGVkUGFpcnMpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogYXBwbHlQYXR0ZXJuKFwiIiArIHBhdHRlcm4gKworICAgICAgICAgICAgICAgICAgIlwiKSA9PiBwYWlycyBcIiIgKworICAgICAgICAgICAgICAgICAgVXRpbGl0eS5lc2NhcGUoZ2V0UGFpcnMoc2V0KSkgKyAiXCIsIGV4cGVjdGVkIFwiIiArCisgICAgICAgICAgICAgICAgICBVdGlsaXR5LmVzY2FwZShleHBlY3RlZFBhaXJzKSArICJcIiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbG9nbG4oIk9rOiAgIGFwcGx5UGF0dGVybihcIiIgKyBwYXR0ZXJuICsKKyAgICAgICAgICAgICAgICAgICJcIikgPT4gcGFpcnMgXCIiICsKKyAgICAgICAgICAgICAgICAgIFV0aWxpdHkuZXNjYXBlKGdldFBhaXJzKHNldCkpICsgIlwiIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGV4cGVjdFBhaXJzKFVuaWNvZGVTZXQgc2V0LCBTdHJpbmcgZXhwZWN0ZWRQYWlycykgeworICAgICAgICBpZiAoIWdldFBhaXJzKHNldCkuZXF1YWxzKGV4cGVjdGVkUGFpcnMpKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogRXhwZWN0ZWQgcGFpciBsaXN0IFwiIiArCisgICAgICAgICAgICAgICAgICBVdGlsaXR5LmVzY2FwZShleHBlY3RlZFBhaXJzKSArICJcIiwgZ290IFwiIiArCisgICAgICAgICAgICAgICAgICBVdGlsaXR5LmVzY2FwZShnZXRQYWlycyhzZXQpKSArICJcIiIpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGVzdC90cmFuc2xpdC9Vbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvclRlc3QuamF2YSBiL3NyYy9jb20vaWJtL3Rlc3QvdHJhbnNsaXQvVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3JUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjY4NDgzYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rlc3QvdHJhbnNsaXQvVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3JUZXN0LmphdmEKQEAgLTAsMCArMSwzMDAgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3Rlc3QvdHJhbnNsaXQvQXR0aWMvVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3JUZXN0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMTAvMTYgMTY6NTg6MjkgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRlc3QudHJhbnNsaXQ7CitpbXBvcnQgY29tLmlibS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS50ZXN0Lio7CitpbXBvcnQgY29tLmlibS51dGlsLlV0aWxpdHk7CitpbXBvcnQgamF2YS50ZXh0Lio7CitpbXBvcnQgamF2YS51dGlsLio7CisKKworLyoqCisgKiBAdGVzdAorICogQHN1bW1hcnkgR2VuZXJhbCB0ZXN0IG9mIFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yCisgKi8KK3B1YmxpYyBjbGFzcyBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvclRlc3QgZXh0ZW5kcyBUZXN0Rm13ayB7CisKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgbmV3IFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yVGVzdCgpLnJ1bihhcmdzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAqIFVzZWQgYnkgVGVzdENvbnN0cnVjdGlvbigpIGFuZCBUZXN0VHJhbnNsaXRlcmF0ZS4KKyAgICAqLworICAgIFVuaWNvZGVGaWx0ZXIgVW5pRmlsdGVyPW5ldyBVbmljb2RlRmlsdGVyKCkgeworICAgICAgICBwdWJsaWMgYm9vbGVhbiBjb250YWlucyhjaGFyIGMpIHsKKyAgICAgICAgICAgIGlmKGM9PTB4MDA2MyB8fCBjPT0weDAwNjEgfHwgYz09MHgwMDQzIHx8IGM9PTB4MDA0MSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgfQorICAgIH07CisKKyAgICBwdWJsaWMgdm9pZCBUZXN0Q29uc3RydWN0aW9uKCl7CisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIHRoZSBjb25zdHJ1Y3Rpb24gVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IoKSIpOworICAgICAgICBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvciB0cmFuczE9bmV3IFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKCk7CisgICAgICAgIAorCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIHRoZSBjb3NudHJ1Y3Rpb24gVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IocGF0dGVybikiKTsKKyAgICAgICAgU3RyaW5nIHBhdHRlcm49IlxcXFxVKzAwMDBhYmMiOworICAgICAgICB0cnl7CisgICAgICAgICAgICB0cmFuczE9bmV3IFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4pOworICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4MikgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yIGNvbnN0cnVjdGlvbiBmYWlsZWQgd2l0aCBwYXR0ZXJuPSIgKyBwYXR0ZXJuICsgIiBFeGNlcHRpb249ICIgKyBleDIudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKworICAgICAgICBsb2dsbigiVGVzdGluZyB0aGUgY29zbnRydWN0aW9uIFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4pIHdpdGggaWxsZWdhbCBwYXR0ZXJuIik7CisgICAgICAgIFN0cmluZyBwYXR0ZXJuMj0iXFxYKyI7CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHRyYW5zMT1uZXcgVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IocGF0dGVybjIpOworICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4MykgeworICAgICAgICAgICAgbG9nbG4oIk9LOiBjb25zdHJ1Y3Rpb24gd2l0aCBJbGxlZ2FsIHBhdHRlcm4gaGFuZGxlZCBjb3JyZWN0bHkiKTsKKyAgICAgICAgfSAgCisgICAgICAgIAorICAgICAgICBsb2dsbigiVGVzdGluZyB0aGUgY29uc3RydWN0aW9uIFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4sIGlzVXBwZXJjYXNlPWZhbHNlLCBhZG9wdGVkRmlsdGVyPW51bGwpIik7CisgICAgICAgIHRyeXsKKyAgICAgICAgICAgIHRyYW5zMT1uZXcgVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IocGF0dGVybiwgZmFsc2UsIG51bGwpOworICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4NCkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4sIGlzVXBwZXJjYXNlPWZhbHNlLCBhZG9wdGVkRmlsdGVyPW51bGwpIGNvbnN0cnVjdGlvbiBmYWlsZWQuIEV4Y2VwdGlvbj0gIiArIGV4NC50b1N0cmluZygpKTsKKyAgICAgICAgfQorCisgICAgICAgIGxvZ2xuKCJUZXN0aW5nIHRoZSBjb25zdHJ1Y3Rpb24gVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IocGF0dGVybiwgaXNVcHBlcmNhc2U9dHJ1ZSwgYWRvcHRlZEZpbHRlcikiKTsKKyAgICAgICAgdHJ5eworICAgICAgICAgICAgdHJhbnMxPW5ldyBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcihwYXR0ZXJuLCB0cnVlLCBVbmlGaWx0ZXIpOworICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGV4NCkgeworICAgICAgICAgICAgZXJybG4oIkZBSUw6IFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4sIGlzVXBwZXJjYXNlPXRydWUsIGFkb3B0ZWRGaWx0ZXIpIGNvbnN0cnVjdGlvbiBmYWlsZWQuIEV4Y2VwdGlvbj0gIiArIGV4NC50b1N0cmluZygpKTsKKyAgICAgICAgfQorCisgICAgfQorCisgICAgcHVibGljIHZvaWQgVGVzdFVwcGVyQ2FzZSgpeworICAgICAgICBsb2dsbigiVGVzdGluZyB0aGUgaXNVcHBlcmNhc2UoKSBhbmQgc2V0VXBwZXJjYXNlKCkgQVBJIG9mIFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yIik7CisgICAgICAgIFN0cmluZyBzdHI9ImFiayI7CisgICAgICAgIC8qZGVmYXVsdCB0cmFuc2xpdGVyYXRvciBoYXMgdXBwZXIgY2FzZSBUUlVFKi8KKyAgICAgICAgVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IgdHJhbnNkZWZhdWx0PW5ldyBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcigpOworICAgICAgICBleHBlY3QodHJhbnNkZWZhdWx0LCAid2hlcmUgdXBwZXJjYXNlPWRlZmF1bHQiLCBzdHIsICJcXHUwMDYxXFx1MDA2MlxcdTAwNkIiKTsKKworICAgICAgICBTdHJpbmcgcGF0dGVybj0iXFxcXHUwMDAwIjsKKyAgICAgICAgLyp0cmFuc2xpdGVyYXRvciB3aXRoIFVwcGVyY2FzZSBGQUxTRSovCisgICAgICAgIFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yIHRyYW5zMT1udWxsOworICAgICAgICB0cnl7CisgICAgICAgICAgICB0cmFuczE9bmV3IFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4sIGZhbHNlLCBudWxsKTsKKyAgICAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBleDEpIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcihwYXR0ZXJuLCBmYWxzZSxudWxsKSBjb25zdHJ1Y3Rpb24gZmFpbGVkIHdpdGggcGF0dGVyIiAKKyAgICAgICAgICAgICAgICAgICsgcGF0dGVybisgIiBFeGNlcHRpb246ICIgKyBleDEudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICAgICAgZXhwZWN0KHRyYW5zMSwgIndoZXJlIHVwcGVyY2FzZT1GQUxTRSIsIHN0ciwgIlxcdTAwNjFcXHUwMDYyXFx1MDA2YiIpOyAgLypkb2Vzbid0IGRpc3BsYXkgdXBwZXJjYXNlKi8KKworICAgICAgICBpZih0cmFuc2RlZmF1bHQuaXNVcHBlcmNhc2UoKSAhPSB0cnVlICB8fCAKKyAgICAgICAgICAgdHJhbnMxLmlzVXBwZXJjYXNlKCkgIT0gZmFsc2UgKXsKKyAgICAgICAgICAgIGVycmxuKCJpc1VwcGVyQ2FzZSgpIGZhaWxlZCIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKmNoYW5naW5nIHRoZSBvdXRwdXRoZXhkaWdpdHMgdG8gbG93ZXIgY2FzZSBmb3IgdGhlIGRlZmF1bHQgdHJhbnNsaXRlcmF0b3IqLworICAgICAgICB0cmFuc2RlZmF1bHQuc2V0VXBwZXJjYXNlKHRyYW5zMS5pc1VwcGVyY2FzZSgpKTsKKyAgICAgICAgaWYodHJhbnNkZWZhdWx0LmlzVXBwZXJjYXNlKCkgIT0gdHJhbnMxLmlzVXBwZXJjYXNlKCkgfHwgCisgICAgICAgICAgIHRyYW5zZGVmYXVsdC5pc1VwcGVyY2FzZSgpICE9IGZhbHNlKXsKKyAgICAgICAgICAgIGVycmxuKCJzZXRVcHBlcmNhc2UoKSBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgICAgICAvKmRvZXNuJ3Qgb3VwdXQgdXBwZXJjYXNlIGhleCwgc2luY2UgdHJhbnNkZWZhdWx0J3MgdXBwZXJjYXNlIGlzIHNldCB0byBGQUxTRSB1c2luZyBzZXRVcHBlcmNhc2UqLworICAgICAgICBleHBlY3QodHJhbnNkZWZhdWx0LCAid2hlcmUgdXBwZXJjYXNlPUZBTFNFIiwgc3RyLCAiXFx1MDA2MVxcdTAwNjJcXHUwMDZiIik7ICAgICAKKworICAgICAgICAvKnRyeWluZyByb3VuZCB0cmlwKi8KKyAgICAgICAgdHJhbnNkZWZhdWx0LnNldFVwcGVyY2FzZSh0cnVlKTsKKyAgICAgICAgaWYodHJhbnNkZWZhdWx0LmlzVXBwZXJjYXNlKCkgIT0gdHJ1ZSB8fCAKKyAgICAgICAgICAgdHJhbnNkZWZhdWx0LmlzVXBwZXJjYXNlKCkgPT0gdHJhbnMxLmlzVXBwZXJjYXNlKCkgKXsKKyAgICAgICAgICAgIGVycmxuKCJzZXRVcHBlcmNhc2UoKSBmYWlsZWQiKTsKKyAgICAgICAgfQorICAgICAgICAvKmRpc3BsYXlzIHVwcGVyIGNhc2Ugc2luY2UgaXQgaXMgc2V0IHRvIFRSVUUqLworICAgICAgICBleHBlY3QodHJhbnNkZWZhdWx0LCAid2hlcmUgdXBwZXJjYXNlPVRSVUUiLCBzdHIsICJcXHUwMDYxXFx1MDA2MlxcdTAwNkIiKTsKKworICAgIH0gCisgICAgcHVibGljIHZvaWQgVGVzdFBhdHRlcm4oKXsKKyAgICAgICAgbG9nbG4oIlRlc3RpbmcgdGhlIGFwcGx5UGF0dGVybigpIGFuZCB0b1BhdHRlcm4oKSBBUEkgb2YgVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IiKTsKKyAgICAgICAgLypkZWZhdWx0IHRyYW5zbGl0ZXJhdG9yIGhhcyBwYXR0ZXJuIFxcdTAwMDAqLworICAgICAgICBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvciB0cmFuc2RlZmF1bHQ9bmV3IFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgIFN0cmluZyBkZWZhdWx0cGF0dGVybj10cmFuc2RlZmF1bHQudG9QYXR0ZXJuKCk7CisgICAgICAgIFN0cmluZyBwYXR0ZXJuMT0iXFxcXFUrMDAwMCI7CisgICAgICAgIAorICAgICAgICBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvciB0cmFuczE9bnVsbDsKKyAgICAgICAgdHJ5eworICAgICAgICAgICAgdHJhbnMxPW5ldyBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcihwYXR0ZXJuMSwgdHJ1ZSwgbnVsbCk7CisgICAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZXgxKSB7CisgICAgICAgICAgICBlcnJsbigiRkFJTDogVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IgY29uc3RydWN0aW9uIGZhaWxlZCB3aXRoIHBhdHRlcm4gPSIgKyBwYXR0ZXJuMSArCisgICAgICAgICAgICAgICAgICAgIkV4Y2VwdGlvbjoiICsgZXgxLnRvU3RyaW5nKCkpOworICAgICAgICB9CisKKyAgICAgICAgLyp0ZXN0IHRvUGF0dGVybigpICovCisgICAgICAgIGlmKHRyYW5zZGVmYXVsdC50b1BhdHRlcm4oKS5lcXVhbHModHJhbnMxLnRvUGF0dGVybigpKSA9PSB0cnVlIHx8CisgICAgICAgICAgICB0cmFuc2RlZmF1bHQudG9QYXR0ZXJuKCkuZXF1YWxzKCJcXFxcdTAwMDAiKSAhPSB0cnVlIHx8CisgICAgICAgICAgICB0cmFuczEudG9QYXR0ZXJuKCkuZXF1YWxzKHBhdHRlcm4xKSAhPSB0cnVlICl7CisgICAgICAgICAgICBlcnJsbigiRXJyb3I6IHRvUGF0dGVybigpIGZhaWxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgLyphcHBseSBwYXR0ZXJucyBmb3IgdHJhbnNkZWZhdWx0Ki8KKyAgICAgICAgU3RyaW5nIHN0cj0iYWJLZiI7CisgICAgICAgIGV4cGVjdFBhdHRlcm4odHJhbnNkZWZhdWx0LCAgcGF0dGVybjEsIHN0ciwgIlxcVSswMDYxXFxVKzAwNjJcXFUrMDA0QlxcVSswMDY2Iik7CisgICAgICAgIGV4cGVjdFBhdHRlcm4odHJhbnNkZWZhdWx0LCAgIlxcVSMjMDAsIiwgc3RyLCAiVTYxLFU2MixVNEIsVTY2LCIpOworICAgICAgICBleHBlY3RQYXR0ZXJuKHRyYW5zZGVmYXVsdCwgZGVmYXVsdHBhdHRlcm4sIHN0ciwgIlxcdTAwNjFcXHUwMDYyXFx1MDA0QlxcdTAwNjYiKTsKKyAgICAgICAgZXhwZWN0UGF0dGVybih0cmFuczEsICJcXHVuaTAwMDAiLCBzdHIsICJ1bmkwMDYxdW5pMDA2MnVuaTAwNEJ1bmkwMDY2Iik7CisgICAgICAgIGV4cGVjdFBhdHRlcm4odHJhbnMxLCAiXFxcXFMtMDAwMC1FIiwgc3RyLCAiXFxTLTAwNjEtRVxcUy0wMDYyLUVcXFMtMDA0Qi1FXFxTLTAwNjYtRSIpOworICAgICAgICBleHBlY3RQYXR0ZXJuKHRyYW5zMSwgIlxcdSMjMDAwMCIsIHN0ciwgIkZBSUwiKTsKKyAgICAgICAgZXhwZWN0UGF0dGVybih0cmFuczEsICJcXCowMDAwIiwgc3RyLCAiKjAwNjEqMDA2MiowMDRCKjAwNjYiKTsgCisgICAgICAgIGV4cGVjdFBhdHRlcm4odHJhbnMxLCAiXFx1IyMjIyIsIHN0ciwgIkZBSUwiKTsKKyAgIAorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIFRlc3RTaW1wbGVUcmFuc2xpdGVyYXRlKCl7IAorICAgICAgICBTdHJpbmcgcGF0dGVybjE9IlxcXFxVKzAwMDAiOworICAgICAgICBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvciB0cmFuczE9bnVsbDsKKyAgICAgICAgdHJ5eworICAgICAgICAgICAgdHJhbnMxPW5ldyBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcihwYXR0ZXJuMSwgdHJ1ZSwgbnVsbCk7CisgICAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKXsKKyAgICAgICAgICAgIGVycmxuKCJVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcihwYXR0ZXJuMSwgdHJ1ZSwgbnVsbCkgY29uc3RydWN0aW9uIGZhaWxlZCB3aXRoIHBhdHRlcm4gPSIgCisgICAgICAgICAgICAgICAgICArIHBhdHRlcm4xICsgIkV4Y2VwdGlvbjoiICsgaWFlLnRvU3RyaW5nKCkpOworICAgICAgICB9CisgICAgICAgIFN0cmluZyBzb3VyY2U9IkhlbGxvIjsKKyAgICAgICAgU3RyaW5nIGV4cGVjdGVkPSJIZVxcVSswMDZDXFxVKzAwNkNcXFUrMDA2RiI7CisKKyAgICAgICAgZXhwZWN0VHJhbnNsaXQodHJhbnMxLCAiOlJlcGxhY2VhYmxlICIsIHNvdXJjZSwgIDEsIDUsIDIsIGV4cGVjdGVkKTsgICAKKyAgICB9CisgICAKKyAgICBwdWJsaWMgdm9pZCBUZXN0VHJhbnNsaXRlcmF0ZSgpeworICAgICAgICBTdHJpbmcgRGF0YVtdPXsKKyAgICAgICAgLy9wYXR0ZXJuLCBzb3VyY2UsIGluZGV4LmNvbnRleHRTdGFydCwgaW5kZXguY29udGV4dExpbWl0LCBpbmRleC5zdGFydCwgZXhwZWN0ZWRSZXN1bHQsIGV4cGVjdGVkUmVzdWx0IHVzaW5nIGZpbHRlcihhLCBiKQorICAgICAgICAiVSsjIzAwIiwgICAgImFiYyIsICIxIiwgIjMiLCAiMiIsICJhYlUrNjMiLCAiYWJjIiwKKyAgICAgICAgIlxcXFx1MDAwMCIsICJhYmMiLCAiMSIsICIyIiwgIjEiLCAiYVxcdTAwNjJjIiwgImFcXHUwMDYyYyIsCisgICAgICAgICJVbmkwMDAwIiwgICAiYWJjIiwgIjEiLCAiMyIsICIyIiwgImFiVW5pMDA2MyIsICJhYmMiLAorICAgICAgICAiVVswMDAwXSIsICAgImhlbGxvIiwgIjAiLCAiNCIsICIyIiwgImhlVVswMDZDXVVbMDA2Q11vIiwgImhlVVswMDZDXVVbMDA2Q11vIiwKKyAgICAgICAgInByZWZpeC0wMDAwLXN1ZmZpeCIsICJhYmMiLCAiMSIsICIzIiwgIjEiLCAiYXByZWZpeC0wMDYyLXN1ZmZpeHByZWZpeC0wMDYzLXN1ZmZpeCIsICJhcHJlZml4LTAwNjItc3VmZml4YyIsCisgICAgICAgICIqIyMwMCoiLCAgICAgImhlbGxvdGhlcmUiLCAiMSIsICI4IiwgIjQiLCAiaGVsbCo2RioqNzQqKjY4Kio2NSpyZSIsICJoZWxsKjZGKio3NCoqNjgqKjY1KnJlIiwKKworICAgICAgICB9OworICAgICAgICBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvciB0cmFuczE9bnVsbDsKKyAgICAgICAgVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IgdHJhbnMyPW51bGw7CisgICAgICAgIGZvcihpbnQgaT0wO2k8RGF0YS5sZW5ndGg7aSs9Nyl7CisgICAgICAgICAgICB0cnl7CisgICAgICAgICAgICAgICAgdHJhbnMxPW5ldyBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcihEYXRhW2krMF0sdHJ1ZSwgbnVsbCk7CisgICAgICAgICAgICB9Y2F0Y2goSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlhZSl7CisgICAgICAgICAgICAgICAgZXJybG4oIlVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKHBhdHRlcm4xLCB0cnVlLCBudWxsKSBjb25zdHJ1Y3Rpb24gZmFpbGVkIHdpdGggcGF0dGVybiA9IiAKKyAgICAgICAgICAgICAgICAgICsgRGF0YVtpKzBdICsgIkV4Y2VwdGlvbjoiICsgaWFlLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXhwZWN0VHJhbnNsaXQodHJhbnMxLCAiIiwgRGF0YVtpKzFdLCBJbnRlZ2VyLnBhcnNlSW50KERhdGFbaSsyXSksIAorICAgICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyLnBhcnNlSW50KERhdGFbaSszXSksIEludGVnZXIucGFyc2VJbnQoRGF0YVtpKzRdKSwgCisgICAgICAgICAgICAgICAgICAgICAgIERhdGFbaSs1XSApOworICAgICAgICAKKyAgICAgICAgICAgIHRyeXsKKyAgICAgICAgICAgICAgICB0cmFuczI9bmV3IFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKERhdGFbaSswXSwgdHJ1ZSwgVW5pRmlsdGVyKTsKKyAgICAgICAgICAgIH1jYXRjaChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWFlKXsKKyAgICAgICAgICAgICAgICBlcnJsbigiVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IocGF0dGVybjEsIHRydWUsIFVuaWNvZGVGaWx0ZXIpIGNvbnN0cnVjdGlvbiBmYWlsZWQgd2l0aCBwYXR0ZXJuID0iIAorICAgICAgICAgICAgICAgICAgKyAgRGF0YVtpKzBdICsgIiB3aXRoIGZpbHRlcihhLGMpLiAgRXhjZXB0aW9uOiIgKyBpYWUudG9TdHJpbmcoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBleHBlY3RUcmFuc2xpdCh0cmFuczIsICIgd2l0aCBmaWx0ZXIoYSxBLGMsQykiLCBEYXRhW2krMV0sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci5wYXJzZUludChEYXRhW2krMl0pLCBJbnRlZ2VyLnBhcnNlSW50KERhdGFbaSszXSksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci5wYXJzZUludChEYXRhW2krNF0pLCBEYXRhW2krNl0gKTsKKyAgICAgICAgfQorCisgICAgfSAKKyAgICAgICAgCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gU3VwcG9ydCBtZXRob2RzCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICBwcml2YXRlIHZvaWQgZXhwZWN0VHJhbnNsaXQoVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IgdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBzb3VyY2UsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsIGludCBsaW1pdCwgaW50IGN1cnNvciwgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZXhwZWN0ZWRSZXN1bHQpeworICAgIAorCisgICAgICAgIFJlcGxhY2VhYmxlU3RyaW5nIHJzb3VyY2UgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcoc291cmNlKTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24gaW5kZXggPSBuZXcgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24oc3RhcnQsIGxpbWl0LCBjdXJzb3IsIGxpbWl0KTsKKyAgICAgICAgdC50cmFuc2xpdGVyYXRlKHJzb3VyY2UsIGluZGV4KTsKKyAgICAgICAgdC5maW5pc2hUcmFuc2xpdGVyYXRpb24ocnNvdXJjZSwgaW5kZXgpOworICAgICAgICBTdHJpbmcgcmVzdWx0PXJzb3VyY2UudG9TdHJpbmcoKTsKKyAgICAgICAgZXhwZWN0QXV4KHQuZ2V0SUQoKSArICI6a2V5Ym9hcmQgIiArIG1lc3NhZ2UsIHNvdXJjZSArICItPiIgKyByZXN1bHQsIHJlc3VsdC5lcXVhbHMoZXhwZWN0ZWRSZXN1bHQpLCBleHBlY3RlZFJlc3VsdCk7CisgICAgfQorICAgIHByaXZhdGUgdm9pZCBleHBlY3RQYXR0ZXJuKFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yIHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgcGF0dGVybiwgU3RyaW5nIHNvdXJjZSwgU3RyaW5nIGV4cGVjdGVkUmVzdWx0KXsKKworICAgICAgICB0cnl7CisgICAgICAgICAgICB0LmFwcGx5UGF0dGVybihwYXR0ZXJuKTsKKyAgICAgICAgfWNhdGNoKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpYWUpeworICAgICAgICAgICAgaWYoZXhwZWN0ZWRSZXN1bHQuZXF1YWxzKCJGQUlMIikpeworICAgICAgICAgICAgICAgIGxvZ2xuKCJPSzogY2FsbGluZyBhcHBseVBhdHRlcm4oKSB3aXRoIGlsbGVnYWwgcGF0dGVybiBmYWlsZWQgYXMgZXhwZWN0ZWQuIiArIGlhZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIH0gZWxzZXsKKyAgICAgICAgICAgICAgICBlcnJsbigiRkFJTDogYXBwbHlQYXR0ZXJuKCkgZmFpbGVkIHdpdGggcGF0dGVybiA9IiArIHBhdHRlcm4gKyAiLS0tPiIgKyBpYWUudG9TdHJpbmcoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYoIWV4cGVjdGVkUmVzdWx0LmVxdWFscygiRkFJTCIpKXsKKyAgICAgICAgICAgIGlmKCF0LnRvUGF0dGVybigpLmVxdWFscyhwYXR0ZXJuKSkgeworICAgICAgICAgICAgICAgIGVycmxuKCJGQUlMOiBhcHBseVBhdHRlcm4gb3IgdG9QYXR0ZW4gZmFpbGVkLiAgRXhwZWN0ZWQ6ICIgKyBwYXR0ZXJuICsgIkdvdDogIiArIHQudG9QYXR0ZXJuKCkpOworICAgICAgICAgICAgfWVsc2V7CisgICAgICAgICAgICAgICAgbG9nbG4oIk9LOiBhcHBseVBhdHRlcm4gcGFzc2VkLiBUZXN0aW5nIHRyYW5zbGl0ZXJhdGlvbiIpOworICAgICAgICAgICAgICAgIGV4cGVjdCh0LCAiIHdpdGggcGF0dGVybiAiK3BhdHRlcm4sIHNvdXJjZSwgZXhwZWN0ZWRSZXN1bHQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHByaXZhdGUgdm9pZCBleHBlY3QoVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IgdCwgIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgc291cmNlLCBTdHJpbmcgZXhwZWN0ZWRSZXN1bHQpIHsKKyAgICAKKyAgICAgICAgU3RyaW5nIHJlc3VsdD10LnRyYW5zbGl0ZXJhdGUoc291cmNlKTsKKyAgICAgICAgZXhwZWN0QXV4KHQuZ2V0SUQoKSArICI6U3RyaW5nICIgKyBtZXNzYWdlLCBzb3VyY2UgKyAiLT4iICsgcmVzdWx0LCByZXN1bHQuZXF1YWxzKGV4cGVjdGVkUmVzdWx0KSwgZXhwZWN0ZWRSZXN1bHQpOworCisgICAgICAgIFJlcGxhY2VhYmxlU3RyaW5nIHJzb3VyY2UgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcoc291cmNlKTsKKyAgICAgICAgdC50cmFuc2xpdGVyYXRlKHJzb3VyY2UpOworICAgICAgICByZXN1bHQgPSByc291cmNlLnRvU3RyaW5nKCk7CisgICAgICAgIGV4cGVjdEF1eCh0LmdldElEKCkgKyAiOlJlcGxhY2VhYmxlIiArIG1lc3NhZ2UsIHNvdXJjZSArICItPiIgKyByZXN1bHQsIHJlc3VsdC5lcXVhbHMoZXhwZWN0ZWRSZXN1bHQpLCBleHBlY3RlZFJlc3VsdCk7CisKKyAgICAgICAgLy8gVGVzdCBrZXlib2FyZCAoaW5jcmVtZW50YWwpIHRyYW5zbGl0ZXJhdGlvbiAtLSB0aGlzIHJlc3VsdAorICAgICAgICAvLyBtdXN0IGJlIHRoZSBzYW1lIGFmdGVyIHdlIGZpbmFsaXplIChzZWUgYmVsb3cpLgorICAgICAgICByc291cmNlLnJlcGxhY2UoMCwgcnNvdXJjZS5sZW5ndGgoKSwgIiIpOworICAgICAgICBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbiBpbmRleCA9IG5ldyBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbigpOworICAgICAgICBTdHJpbmdCdWZmZXIgbG9nID0gbmV3IFN0cmluZ0J1ZmZlcigpOworCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxzb3VyY2UubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgaWYgKGkgIT0gMCkgeworICAgICAgICAgICAgICAgIGxvZy5hcHBlbmQoIiArICIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbG9nLmFwcGVuZChzb3VyY2UuY2hhckF0KGkpKS5hcHBlbmQoIiAtPiAiKTsKKyAgICAgICAgICAgIHQudHJhbnNsaXRlcmF0ZShyc291cmNlLCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcudmFsdWVPZihzb3VyY2UuY2hhckF0KGkpKSk7CisgICAgICAgICAgICAvLyBBcHBlbmQgdGhlIHN0cmluZyBidWZmZXIgd2l0aCBhIHZlcnRpY2FsIGJhciAnfCcgd2hlcmUKKyAgICAgICAgICAgIC8vIHRoZSBjb21taXR0ZWQgaW5kZXggaXMuCisgICAgICAgICAgICBTdHJpbmcgcyA9IHJzb3VyY2UudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIGxvZy5hcHBlbmQocy5zdWJzdHJpbmcoMCwgaW5kZXguc3RhcnQpKS4KKyAgICAgICAgICAgICAgICBhcHBlbmQoJ3wnKS4KKyAgICAgICAgICAgICAgICBhcHBlbmQocy5zdWJzdHJpbmcoaW5kZXguc3RhcnQpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gQXMgYSBmaW5hbCBzdGVwIGluIGtleWJvYXJkIHRyYW5zbGl0ZXJhdGlvbiwgd2UgbXVzdCBjYWxsCisgICAgICAgIC8vIHRyYW5zbGl0ZXJhdGUgdG8gZmluaXNoIG9mZiBhbnkgcGVuZGluZyBwYXJ0aWFsIG1hdGNoZXMgdGhhdAorICAgICAgICAvLyB3ZXJlIHdhaXRpbmcgZm9yIG1vcmUgaW5wdXQuCisgICAgICAgIHQuZmluaXNoVHJhbnNsaXRlcmF0aW9uKHJzb3VyY2UsIGluZGV4KTsKKyAgICAgICAgcmVzdWx0ID0gcnNvdXJjZS50b1N0cmluZygpOworICAgICAgICBsb2cuYXBwZW5kKCIgPT4gIikuYXBwZW5kKHJzb3VyY2UudG9TdHJpbmcoKSk7CisgICAgICAgIGV4cGVjdEF1eCh0LmdldElEKCkgKyAiOktleWJvYXJkIiwgbG9nLnRvU3RyaW5nKCkgKyAiXG4iICsgc291cmNlICsgIiAtPiAiICsgcmVzdWx0LCByZXN1bHQuZXF1YWxzKGV4cGVjdGVkUmVzdWx0KSwgZXhwZWN0ZWRSZXN1bHQpOworCisgICAgfQorICAgIHByaXZhdGUgdm9pZCBleHBlY3RBdXgoU3RyaW5nIHRhZywgU3RyaW5nIHN1bW1hcnksIGJvb2xlYW4gcGFzcywgIFN0cmluZyBleHBlY3RlZFJlc3VsdCkgeworICAgICAgICBpZiAocGFzcykgeworICAgICAgICAgICAgbG9nbG4oIigiICsgdGFnICsgIikgIiArIFV0aWxpdHkuZXNjYXBlKHN1bW1hcnkpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVycmxuKCJGQUlMOiAoIiArIHRhZysgIikgIgorICAgICAgICAgICAgICAgICsgVXRpbGl0eS5lc2NhcGUoc3VtbWFyeSkKKyAgICAgICAgICAgICAgICArICIsIGV4cGVjdGVkICIgKyBVdGlsaXR5LmVzY2FwZShleHBlY3RlZFJlc3VsdCkpOworICAgICAgICB9CisgICAgfSAgCit9CisKKworCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXN0L3RyYW5zbGl0L3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL3Rlc3QvdHJhbnNsaXQvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjM0NGM0YjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXN0L3RyYW5zbGl0L3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPCEtLSAgQ29weXJpZ2h0IChDKSAyMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorICBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGVzdC90cmFuc2xpdC9BdHRpYy9wYWNrYWdlLmh0bWwsdiAkCisgICRSZXZpc2lvbjogMS4xICQKKyAgJERhdGU6IDIwMDAvMDMvMTUgMjE6MzU6NTEgJAorLS0+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CitUcmFuc2xpdGVyYXRvciB0ZXN0cy4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L0FyYWJpY1NoYXBpbmcuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvQXJhYmljU2hhcGluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQxY2YxZGIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L0FyYWJpY1NoYXBpbmcuamF2YQpAQCAtMCwwICsxLDExNzYgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgQ29weXJpZ2h0IChDKSAyMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzCisqICAgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0udGV4dDsKKworLyoqCisgKiBTaGFwZSBBcmFiaWMgdGV4dCBvbiBhIGNoYXJhY3RlciBiYXNpcy4KKyAqCisgKiA8cD5BcmFiaWNTaGFwaW5nIHBlcmZvcm1zIGJhc2ljIG9wZXJhdGlvbnMgZm9yICJzaGFwaW5nIiBBcmFiaWMgdGV4dC4gSXQgaXMgbW9zdAorICogdXNlZnVsIGZvciB1c2Ugd2l0aCBsZWdhY3kgZGF0YSBmb3JtYXRzIGFuZCBsZWdhY3kgZGlzcGxheSB0ZWNobm9sb2d5CisgKiAoc2ltcGxlIHRlcm1pbmFscykuIEFsbCBvcGVyYXRpb25zIGFyZSBwZXJmb3JtZWQgb24gVW5pY29kZSBjaGFyYWN0ZXJzLjwvcD4KKyAqCisgKiA8cD5UZXh0LWJhc2VkIHNoYXBpbmcgbWVhbnMgdGhhdCBzb21lIGNoYXJhY3RlciBjb2RlIHBvaW50cyBpbiB0aGUgdGV4dCBhcmUKKyAqIHJlcGxhY2VkIGJ5IG90aGVycyBkZXBlbmRpbmcgb24gdGhlIGNvbnRleHQuIEl0IHRyYW5zZm9ybXMgb25lIGtpbmQgb2YgdGV4dAorICogaW50byBhbm90aGVyLiBJbiBjb21wYXJpc29uLCBtb2Rlcm4gZGlzcGxheXMgZm9yIEFyYWJpYyB0ZXh0IHNlbGVjdAorICogYXBwcm9wcmlhdGUsIGNvbnRleHQtZGVwZW5kZW50IGZvbnQgZ2x5cGhzIGZvciBlYWNoIHRleHQgZWxlbWVudCwgd2hpY2ggbWVhbnMKKyAqIHRoYXQgdGhleSB0cmFuc2Zvcm0gdGV4dCBpbnRvIGEgZ2x5cGggdmVjdG9yLjwvcD4KKyAqCisgKiA8cD5UZXh0IHRyYW5zZm9ybWF0aW9ucyBhcmUgbmVjZXNzYXJ5IHdoZW4gbW9kZXJuIGRpc3BsYXkgdGVjaG5vbG9neSBpcyBub3QKKyAqIGF2YWlsYWJsZSBvciB3aGVuIHRleHQgbmVlZHMgdG8gYmUgdHJhbnNmb3JtZWQgdG8gb3IgZnJvbSBsZWdhY3kgZm9ybWF0cyB0aGF0CisgKiB1c2UgInNoYXBlZCIgY2hhcmFjdGVycy4gU2luY2UgdGhlIEFyYWJpYyBzY3JpcHQgaXMgY3Vyc2l2ZSwgY29ubmVjdGluZworICogYWRqYWNlbnQgbGV0dGVycyB0byBlYWNoIG90aGVyLCBjb21wdXRlcnMgc2VsZWN0IGltYWdlcyBmb3IgZWFjaCBsZXR0ZXIgYmFzZWQKKyAqIG9uIHRoZSBzdXJyb3VuZGluZyBsZXR0ZXJzLiBUaGlzIHVzdWFsbHkgcmVzdWx0cyBpbiBmb3VyIGltYWdlcyBwZXIgQXJhYmljCisgKiBsZXR0ZXI6IGluaXRpYWwsIG1pZGRsZSwgZmluYWwsIGFuZCBpc29sYXRlZCBmb3Jtcy4gSW4gVW5pY29kZSwgb24gdGhlIG90aGVyCisgKiBoYW5kLCBsZXR0ZXJzIGFyZSBub3JtYWxseSBzdG9yZWQgYWJzdHJhY3QsIGFuZCBhIGRpc3BsYXkgc3lzdGVtIGlzIGV4cGVjdGVkCisgKiB0byBzZWxlY3QgdGhlIG5lY2Vzc2FyeSBnbHlwaHMuIChUaGlzIG1ha2VzIHNlYXJjaGluZyBhbmQgb3RoZXIgdGV4dAorICogcHJvY2Vzc2luZyBlYXNpZXIgYmVjYXVzZSB0aGUgc2FtZSBsZXR0ZXIgaGFzIG9ubHkgb25lIGNvZGUuKSBJdCBpcyBwb3NzaWJsZQorICogdG8gbWltaWMgdGhpcyB3aXRoIHRleHQgdHJhbnNmb3JtYXRpb25zIGJlY2F1c2UgdGhlcmUgYXJlIGNoYXJhY3RlcnMgaW4KKyAqIFVuaWNvZGUgdGhhdCBhcmUgcmVuZGVyZWQgYXMgbGV0dGVycyB3aXRoIGEgc3BlY2lmaWMgc2hhcGUKKyAqIChvciBjdXJzaXZlIGNvbm5lY3Rpdml0eSkuIFRoZXkgd2VyZSBpbmNsdWRlZCBmb3IgaW50ZXJvcGVyYWJpbGl0eSB3aXRoCisgKiBsZWdhY3kgc3lzdGVtcyBhbmQgY29kZXBhZ2VzLCBhbmQgZm9yIHVuc29waGlzdGljYXRlZCBkaXNwbGF5IHN5c3RlbXMuPC9wPgorICoKKyAqIDxwPkEgc2Vjb25kIGtpbmQgb2YgdGV4dCB0cmFuc2Zvcm1hdGlvbnMgaXMgc3VwcG9ydGVkIGZvciBBcmFiaWMgZGlnaXRzOgorICogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBsZWdhY3kgY29kZXBhZ2VzIHRoYXQgb25seSBpbmNsdWRlIEV1cm9wZWFuIGRpZ2l0cywKKyAqIGl0IGlzIHBvc3NpYmxlIHRvIHJlcGxhY2Ugb25lIHNldCBvZiBkaWdpdHMgYnkgYW5vdGhlciwgY2hhbmdpbmcgdGhlCisgKiBjaGFyYWN0ZXIgY29kZSBwb2ludHMuIFRoZXNlIG9wZXJhdGlvbnMgY2FuIGJlIHBlcmZvcm1lZCBmb3IgZWl0aGVyCisgKiBBcmFiaWMtSW5kaWMgRGlnaXRzIChVKzA2NjAuLi5VKzA2NjkpIG9yIEVhc3Rlcm4gKEV4dGVuZGVkKSBBcmFiaWMtSW5kaWMKKyAqIGRpZ2l0cyAoVSswNmYwLi4uVSswNmY5KS48L3A+CisgKgorICogPHA+U29tZSByZXBsYWNlbWVudHMgbWF5IHJlc3VsdCBpbiBtb3JlIG9yIGZld2VyIGNoYXJhY3RlcnMgKGNvZGUgcG9pbnRzKS4KKyAqIEJ5IGRlZmF1bHQsIHRoaXMgbWVhbnMgdGhhdCB0aGUgZGVzdGluYXRpb24gYnVmZmVyIG1heSByZWNlaXZlIHRleHQgd2l0aCBhCisgKiBsZW5ndGggZGlmZmVyZW50IGZyb20gdGhlIHNvdXJjZSBsZW5ndGguIFNvbWUgbGVnYWN5IHN5c3RlbXMgcmVseSBvbiB0aGUKKyAqIGxlbmd0aCBvZiB0aGUgdGV4dCB0byBiZSBjb25zdGFudC4gVGhleSBleHBlY3QgZXh0cmEgc3BhY2VzIHRvIGJlIGFkZGVkCisgKiBvciBjb25zdW1lZCBlaXRoZXIgbmV4dCB0byB0aGUgYWZmZWN0ZWQgY2hhcmFjdGVyIG9yIGF0IHRoZSBlbmQgb2YgdGhlCisgKiB0ZXh0LjwvcD4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIEFyYWJpY1NoYXBpbmcgeworICAgIHByaXZhdGUgZmluYWwgaW50IG9wdGlvbnM7CisgICAgcHJpdmF0ZSBib29sZWFuIGlzTG9naWNhbDsgLy8gY29udmVuaWVuY2UKKworICAgIC8qKgorICAgICAqIENvbnZlcnQgYSByYW5nZSBvZiB0ZXh0IGluIHRoZSBzb3VyY2UgYXJyYXksIHB1dHRpbmcgdGhlIHJlc3VsdCAKKyAgICAgKiBpbnRvIGEgcmFuZ2Ugb2YgdGV4dCBpbiB0aGUgZGVzdGluYXRpb24gYXJyYXksIGFuZCByZXR1cm4gdGhlIG51bWJlcgorICAgICAqIG9mIGNoYXJhY3RlcnMgd3JpdHRlbi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzb3VyY2UgQW4gYXJyYXkgY29udGFpbmluZyB0aGUgaW5wdXQgdGV4dAorICAgICAqIEBwYXJhbSBzb3VyY2VTdGFydCBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlIG9mIHRleHQgdG8gY29udmVydAorICAgICAqIEBwYXJhbSBzb3VyY2VMZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgcmFuZ2Ugb2YgdGV4dCB0byBjb252ZXJ0CisgICAgICogQHBhcmFtIGRlc3QgVGhlIGRlc3RpbmF0aW9uIGFycmF5IHRoYXQgd2lsbCByZWNlaXZlIHRoZSByZXN1bHQuCisgICAgICogICBJdCBtYXkgYmUgPGNvZGU+TlVMTDwvY29kZT4gb25seSBpZiAgPGNvZGU+ZGVzdFNpemU8L2NvZGU+IGlzIDAuICAKKyAgICAgKiBAcGFyYW0gZGVzdFN0YXJ0IFRoZSBzdGFydCBvZiB0aGUgcmFuZ2Ugb2YgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciB0byB1c2UuCisgICAgICogQHBhcmFtIGRlc3RTaXplIFRoZSBzaXplIChjYXBhY2l0eSkgb2YgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4KKyAgICAgKiAgIElmIDxjb2RlPmRlc3RTaXplPC9jb2RlPiBpcyAwLCB0aGVuIG5vIG91dHB1dCBpcyBwcm9kdWNlZCwKKyAgICAgKiAgIGJ1dCB0aGUgbmVjZXNzYXJ5IGJ1ZmZlciBzaXplIGlzIHJldHVybmVkICgicHJlZmxpZ2h0aW5nIikuICBUaGlzCisgICAgICogICBkb2VzIG5vdCB2YWxpZGF0ZSB0aGUgdGV4dCBhZ2FpbnN0IHRoZSBvcHRpb25zLCBmb3IgZXhhbXBsZSwgCisgICAgICogICBpZiBsZXR0ZXJzIGFyZSBiZWluZyB1bnNoYXBlZCwgYW5kIHNwYWNlcyBhcmUgYmVpbmcgY29uc3VtZWQKKyAgICAgKiAgIGZvbGxvd2luZyBsYW1hbGVmLCB0aGlzIHdpbGwgbm90IGRldGVjdCBhIGxhbWFsZWYgd2l0aG91dCBhIAorICAgICAqICAgY29ycmVzcG9uZGluZyBzcGFjZS4gIEFuIGVycm9yIHdpbGwgYmUgdGhyb3duIHdoZW4gdGhlIGFjdHVhbAorICAgICAqICAgY29udmVyc2lvbiBpcyBhdHRlbXB0ZWQuCisgICAgICogQHJldHVybiBUaGUgbnVtYmVyIG9mIGNoYXJzIHdyaXR0ZW4gdG8gdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlci4KKyAgICAgKiAgIElmIGFuIGVycm9yIG9jY3VycywgdGhlbiBubyBvdXRwdXQgd2FzIHdyaXR0ZW4sIG9yIGl0IG1heSBiZQorICAgICAqICAgaW5jb21wbGV0ZS4KKyAgICAgKiBAdGhyb3dzIEFyYWJpY1NoYXBpbmdFeGNlcHRpb24gaWYgdGhlIHRleHQgY2Fubm90IGJlIGNvbnZlcnRlZCBhY2NvcmRpbmcgdG8gdGhlIG9wdGlvbnMuCisgICAgICovCisgICAgcHVibGljIGludCBzaGFwZShjaGFyW10gc291cmNlLCBpbnQgc291cmNlU3RhcnQsIGludCBzb3VyY2VMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICBjaGFyW10gZGVzdCwgaW50IGRlc3RTdGFydCwgaW50IGRlc3RTaXplKSB0aHJvd3MgQXJhYmljU2hhcGluZ0V4Y2VwdGlvbiB7CisgICAgICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigic291cmNlIGNhbiBub3QgYmUgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIGlmIChzb3VyY2VTdGFydCA8IDAgfHwgc291cmNlTGVuZ3RoIDwgMCB8fCBzb3VyY2VTdGFydCArIHNvdXJjZUxlbmd0aCA+IHNvdXJjZS5sZW5ndGgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImJhZCBzb3VyY2Ugc3RhcnQgKCIgKyBzb3VyY2VTdGFydCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpIG9yIGxlbmd0aCAoIiArIHNvdXJjZUxlbmd0aCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpIGZvciBidWZmZXIgb2YgbGVuZ3RoICIgKyBzb3VyY2UubGVuZ3RoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZGVzdCA9PSBudWxsICYmIGRlc3RTaXplICE9IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIm51bGwgZGVzdCByZXF1aXJlcyBkZXN0U2l6ZSA9PSAwIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKChkZXN0U2l6ZSAhPSAwKSAmJgorICAgICAgICAgICAgKGRlc3RTdGFydCA8IDAgfHwgZGVzdFNpemUgPCAwIHx8IGRlc3RTdGFydCArIGRlc3RTaXplID4gZGVzdC5sZW5ndGgpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJiYWQgZGVzdCBzdGFydCAoIiArIGRlc3RTdGFydCArIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKSBvciBzaXplICgiICsgZGVzdFNpemUgKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIikgZm9yIGJ1ZmZlciBvZiBsZW5ndGggIiArIGRlc3QubGVuZ3RoKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBpbnRlcm5hbFNoYXBlKHNvdXJjZSwgc291cmNlU3RhcnQsIHNvdXJjZUxlbmd0aCwgZGVzdCwgZGVzdFN0YXJ0LCBkZXN0U2l6ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydCBhIHJhbmdlIG9mIHRleHQgaW4gcGxhY2UuICBUaGlzIG1heSBvbmx5IGJlIHVzZWQgaWYgdGhlIExlbmd0aCBvcHRpb24KKyAgICAgKiBkb2VzIG5vdCBncm93IG9yIHNocmluayB0aGUgdGV4dC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzb3VyY2UgQW4gYXJyYXkgY29udGFpbmluZyB0aGUgaW5wdXQgdGV4dAorICAgICAqIEBwYXJhbSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIHJhbmdlIG9mIHRleHQgdG8gY29udmVydAorICAgICAqIEBwYXJhbSBsZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgcmFuZ2Ugb2YgdGV4dCB0byBjb252ZXJ0CisgICAgICogQHRocm93cyBBcmFiaWNTaGFwaW5nRXhjZXB0aW9uIGlmIHRoZSB0ZXh0IGNhbm5vdCBiZSBjb252ZXJ0ZWQgYWNjb3JkaW5nIHRvIHRoZSBvcHRpb25zLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNoYXBlKGNoYXJbXSBzb3VyY2UsIGludCBzdGFydCwgaW50IGxlbmd0aCkgdGhyb3dzIEFyYWJpY1NoYXBpbmdFeGNlcHRpb24geworICAgICAgICBpZiAoKG9wdGlvbnMgJiBMRU5HVEhfTUFTSykgPT0gTEVOR1RIX0dST1dfU0hSSU5LKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgQXJhYmljU2hhcGluZ0V4Y2VwdGlvbigiQ2Fubm90IHNoYXBlIGluIHBsYWNlIHdpdGggbGVuZ3RoIG9wdGlvbiBncm93L3Nocmluay4iKTsKKyAgICAgICAgfQorICAgICAgICBzaGFwZShzb3VyY2UsIHN0YXJ0LCBsZW5ndGgsIHNvdXJjZSwgc3RhcnQsIGxlbmd0aCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydCBhIHN0cmluZywgcmV0dXJuaW5nIHRoZSBuZXcgc3RyaW5nLgorICAgICAqCisgICAgICogQHBhcmFtIHNvdXJjZSBUaGUgc3RyaW5nIHRvIGNvbnZlcnQuCisgICAgICogQHJldHVybiBUaGUgY29udmVydGVkIHN0cmluZy4KKyAgICAgKiBAdGhyb3dzIEFyYWJpY1NoYXBpbmdFeGNlcHRpb24gaWYgdGhlIHN0cmluZyBjYW5ub3QgYmUgY29udmVydGVkIGFjY29yZGluZyB0byB0aGUgb3B0aW9ucy4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHNoYXBlKFN0cmluZyB0ZXh0KSB0aHJvd3MgQXJhYmljU2hhcGluZ0V4Y2VwdGlvbiB7CisgICAgICAgIGNoYXJbXSBzcmMgPSB0ZXh0LnRvQ2hhckFycmF5KCk7CisgICAgICAgIGNoYXJbXSBkZXN0ID0gc3JjOworICAgICAgICBpZiAoKChvcHRpb25zICYgTEVOR1RIX01BU0spID09IExFTkdUSF9HUk9XX1NIUklOSykgJiYKKyAgICAgICAgICAgICgob3B0aW9ucyAmIExFVFRFUlNfTUFTSykgPT0gTEVUVEVSU19VTlNIQVBFKSkgeworCisgICAgICAgICAgICBkZXN0ID0gbmV3IGNoYXJbc3JjLmxlbmd0aCAqIDJdOyAvLyBtYXgKKyAgICAgICAgfQorICAgICAgICBpbnQgbGVuID0gc2hhcGUoc3JjLCAwLCBzcmMubGVuZ3RoLCBkZXN0LCAwLCBkZXN0Lmxlbmd0aCk7CisKKyAgICAgICAgcmV0dXJuIG5ldyBTdHJpbmcoZGVzdCwgMCwgbGVuKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgQXJhYmljU2hhcGluZyB1c2luZyB0aGUgb3B0aW9ucyBmbGFncy4KKyAgICAgKiBUaGUgZmxhZ3MgYXJlIGFzIGZvbGxvd3M6PGJyPgorICAgICAqICdMRU5HVEgnIGZsYWdzIGNvbnRyb2wgd2hldGhlciB0aGUgdGV4dCBjYW4gY2hhbmdlIHNpemUsIGFuZCBpZiBub3QsCisgICAgICogaG93IHRvIG1haW50YWluIHRoZSBzaXplIG9mIHRoZSB0ZXh0IHdoZW4gTGFtQWxlZiBsaWdhdHVyZXMgYXJlIAorICAgICAqIGZvcm1lZCBvciBicm9rZW4uPGJyPgorICAgICAqICdURVhUX0RJUkVDVElPTicgZmxhZ3MgY29udHJvbCB3aGV0aGVyIHRoZSB0ZXh0IGlzIHJlYWQgYW5kIHdyaXR0ZW4KKyAgICAgKiBpbiB2aXN1YWwgb3JkZXIgb3IgaW4gbG9naWNhbCBvcmRlci48YnI+CisgICAgICogJ0xFVFRFUlNfU0hBUEUnIGZsYWdzIGNvbnRyb2wgd2hldGhlciBjb252ZXJzaW9uIGlzIHRvIG9yIGZyb20KKyAgICAgKiBwcmVzZW50YXRpb24gZm9ybXMuPGJyPgorICAgICAqICdESUdJVFMnIGZsYWdzIGNvbnRyb2wgd2hldGhlciBkaWdpdHMgYXJlIHNoYXBlZCwgYW5kIHdoZXRoZXIgZnJvbQorICAgICAqIEV1cm9wZWFuIHRvIEFyYWJpYy1JbmRpYyBvciB2aWNlLXZlcnNhLjxicj4KKyAgICAgKiAnRElHSVRfVFlQRScgZmxhZ3MgY29udHJvbCB3aGV0aGVyIHN0YW5kYXJkIG9yIGV4dGVuZGVkIEFyYWJpYy1JbmRpYworICAgICAqIGRpZ2l0cyBhcmUgdXNlZCB3aGVuIHBlcmZvcm1pbmcgZGlnaXQgY29udmVyc2lvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgQXJhYmljU2hhcGluZyhpbnQgb3B0aW9ucykgeworICAgICAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOworICAgICAgICBpZiAoKG9wdGlvbnMgJiBESUdJVFNfTUFTSykgPiAweDgwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJiYWQgRElHSVRTIG9wdGlvbnMiKTsKKyAgICAgICAgfQorICAgICAgICBpc0xvZ2ljYWwgPSAob3B0aW9ucyAmIFRFWFRfRElSRUNUSU9OX01BU0spID09IFRFWFRfRElSRUNUSU9OX0xPR0lDQUw7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWVtb3J5IG9wdGlvbjogYWxsb3cgdGhlIHJlc3VsdCB0byBoYXZlIGEgZGlmZmVyZW50IGxlbmd0aCB0aGFuIHRoZSBzb3VyY2UuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTEVOR1RIX0dST1dfU0hSSU5LID0gMDsKKworICAgIC8qKgorICAgICAqIE1lbW9yeSBvcHRpb246IHRoZSByZXN1bHQgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc291cmNlLgorICAgICAqIElmIG1vcmUgcm9vbSBpcyBuZWNlc3NhcnksIHRoZW4gdHJ5IHRvIGNvbnN1bWUgc3BhY2VzIG5leHQgdG8gbW9kaWZpZWQgY2hhcmFjdGVycy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMRU5HVEhfRklYRURfU1BBQ0VTX05FQVIgPSAxOworCisgICAgLyoqCisgICAgICogTWVtb3J5IG9wdGlvbjogdGhlIHJlc3VsdCBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzb3VyY2UuCisgICAgICogSWYgbW9yZSByb29tIGlzIG5lY2Vzc2FyeSwgdGhlbiB0cnkgdG8gY29uc3VtZSBzcGFjZXMgYXQgdGhlIGVuZCBvZiB0aGUgdGV4dC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMRU5HVEhfRklYRURfU1BBQ0VTX0FUX0VORCA9IDI7CisKKyAgICAvKioKKyAgICAgKiBNZW1vcnkgb3B0aW9uOiB0aGUgcmVzdWx0IG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNvdXJjZS4KKyAgICAgKiBJZiBtb3JlIHJvb20gaXMgbmVjZXNzYXJ5LCB0aGVuIHRyeSB0byBjb25zdW1lIHNwYWNlcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0ZXh0LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExFTkdUSF9GSVhFRF9TUEFDRVNfQVRfQkVHSU5OSU5HID0gMzsKKworICAgIC8qKiAKKyAgICAgKiBCaXQgbWFzayBmb3IgbWVtb3J5IG9wdGlvbnMuIAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExFTkdUSF9NQVNLID0gMzsKKworCisgICAgLyoqIAorICAgICAqIERpcmVjdGlvbiBpbmRpY2F0b3I6IHRoZSBzb3VyY2UgaXMgaW4gbG9naWNhbCAoa2V5Ym9hcmQpIG9yZGVyLiAKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBURVhUX0RJUkVDVElPTl9MT0dJQ0FMID0gMDsKKworICAgIC8qKiAKKyAgICAgKiBEaXJlY3Rpb24gaW5kaWNhdG9yOiB0aGUgc291cmNlIGlzIGluIHZpc3VhbCAoZGlzcGxheSkgb3JkZXIsIHRoYXQgaXMsCisgICAgICogdGhlIGxlZnRtb3N0IGRpc3BsYXllZCBjaGFyYWN0ZXIgaXMgc3RvcmVkIGZpcnN0LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRFWFRfRElSRUNUSU9OX1ZJU1VBTF9MVFIgPSA0OworCisgICAgLyoqIAorICAgICAqIEJpdCBtYXNrIGZvciBkaXJlY3Rpb24gaW5kaWNhdG9ycy4gCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEVYVF9ESVJFQ1RJT05fTUFTSyA9IDQ7CisKKworICAgIC8qKgorICAgICAqIExldHRlciBzaGFwaW5nIG9wdGlvbjogZG8gbm90IHBlcmZvcm0gbGV0dGVyIHNoYXBpbmcuIAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExFVFRFUlNfTk9PUCA9IDA7CisKKyAgICAvKiogCisgICAgICogTGV0dGVyIHNoYXBpbmcgb3B0aW9uOiByZXBsYWNlIG5vcm1hdGl2ZSBsZXR0ZXIgY2hhcmFjdGVycyBpbiB0aGUgVSswNjAwIChBcmFiaWMpIGJsb2NrLAorICAgICAqIGJ5IHNoYXBlZCBvbmVzIGluIHRoZSBVK0ZFNzAgKFByZXNlbnRhdGlvbiBGb3JtcyBCKSBibG9jay4gUGVyZm9ybXMgTGFtLUFsZWYgbGlnYXR1cmUKKyAgICAgKiBzdWJzdGl0dXRpb24uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTEVUVEVSU19TSEFQRSA9IDg7CisKKyAgICAvKiogCisgICAgICogTGV0dGVyIHNoYXBpbmcgb3B0aW9uOiByZXBsYWNlIHNoYXBlZCBsZXR0ZXIgY2hhcmFjdGVycyBpbiB0aGUgVStGRTcwIChQcmVzZW50YXRpb24gRm9ybXMgQikgYmxvY2sKKyAgICAgKiBieSBub3JtYXRpdmUgb25lcyBpbiB0aGUgVSswNjAwIChBcmFiaWMpIGJsb2NrLiAgQ29udmVydHMgTGFtLUFsZWYgbGlnYXR1cmVzIHRvIHBhaXJzIG9mIExhbSBhbmQKKyAgICAgKiBBbGVmIGNoYXJhY3RlcnMsIGNvbnN1bWluZyBzcGFjZXMgaWYgcmVxdWlyZWQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTEVUVEVSU19VTlNIQVBFID0gMHgxMDsKKworICAgIC8qKgorICAgICAqIExldHRlciBzaGFwaW5nIG9wdGlvbjogcmVwbGFjZSBub3JtYXRpdmUgbGV0dGVyIGNoYXJhY3RlcnMgaW4gdGhlIFUrMDYwMCAoQXJhYmljKSBibG9jaywKKyAgICAgKiBleGNlcHQgZm9yIHRoZSBUQVNIS0VFTCBjaGFyYWN0ZXJzIGF0IFUrMDY0Qi4uLlUrMDY1MiwgYnkgc2hhcGVkIG9uZXMgaW4gdGhlIFUrRmU3MAorICAgICAqIChQcmVzZW50YXRpb24gRm9ybXMgQikgYmxvY2suCisgICAgICogISEhIEN1cnJlbnRseSB1bnN1cHBvcnRlZCBhbmQgaWdub3JlZC4gIFdpbGwgYmUgdHJlYXRlZCBhcyBMRVRURVJTX1NIQVBFLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMRVRURVJTX1NIQVBFX0VYQ0VQVF9UQVNIS0VFTCA9IDB4MTg7CisKKyAgICAvKiogCisgICAgICogQml0IG1hc2sgZm9yIGxldHRlciBzaGFwaW5nIG9wdGlvbnMuIAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExFVFRFUlNfTUFTSyA9IDB4MTg7CisKKworICAgIC8qKiAKKyAgICAgKiBEaWdpdCBzaGFwaW5nIG9wdGlvbjogZG8gbm90IHBlcmZvcm0gZGlnaXQgc2hhcGluZy4gCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElHSVRTX05PT1AgPSAwOworCisgICAgLyoqCisgICAgICogRGlnaXQgc2hhcGluZyBvcHRpb246IFJlcGxhY2UgRXVyb3BlYW4gZGlnaXRzIChVKzAwMzAuLi5VKzAwMzkpIGJ5IEFyYWJpYy1JbmRpYyBkaWdpdHMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElHSVRTX0VOMkFOID0gMHgyMDsKKworICAgIC8qKgorICAgICAqIERpZ2l0IHNoYXBpbmcgb3B0aW9uOiBSZXBsYWNlIEFyYWJpYy1JbmRpYyBkaWdpdHMgYnkgRXVyb3BlYW4gZGlnaXRzIChVKzAwMzAuLi5VKzAwMzkpLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERJR0lUU19BTjJFTiA9IDB4NDA7CisKKyAgICAvKioKKyAgICAgKiBEaWdpdCBzaGFwaW5nIG9wdGlvbjoKKyAgICAgKiBSZXBsYWNlIEV1cm9wZWFuIGRpZ2l0cyAoVSswMDMwLi4uVSswMDM5KSBieSBBcmFiaWMtSW5kaWMgZGlnaXRzCisgICAgICogaWYgdGhlIG1vc3QgcmVjZW50IHN0cm9uZ2x5IGRpcmVjdGlvbmFsIGNoYXJhY3RlcgorICAgICAqIGlzIGFuIEFyYWJpYyBsZXR0ZXIgKGl0cyBCaWRpIGRpcmVjdGlvbiB2YWx1ZSBpcyBSSUdIVF9UT19MRUZUX0FSQUJJQykuIAorICAgICAqIFRoZSBpbml0aWFsIHN0YXRlIGF0IHRoZSBzdGFydCBvZiB0aGUgdGV4dCBpcyBhc3N1bWVkIHRvIGJlIG5vdCBhbiBBcmFiaWMsCisgICAgICogbGV0dGVyLCBzbyBFdXJvcGVhbiBkaWdpdHMgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0IHdpbGwgbm90IGNoYW5nZS4KKyAgICAgKiBDb21wYXJlIHRvIERJR0lUU19BTEVOMkFOX0lOSVRfQUwuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElHSVRTX0VOMkFOX0lOSVRfTFIgPSAweDYwOworCisgICAgLyoqCisgICAgICogRGlnaXQgc2hhcGluZyBvcHRpb246CisgICAgICogUmVwbGFjZSBFdXJvcGVhbiBkaWdpdHMgKFUrMDAzMC4uLlUrMDAzOSkgYnkgQXJhYmljLUluZGljIGRpZ2l0cworICAgICAqIGlmIHRoZSBtb3N0IHJlY2VudCBzdHJvbmdseSBkaXJlY3Rpb25hbCBjaGFyYWN0ZXIKKyAgICAgKiBpcyBhbiBBcmFiaWMgbGV0dGVyIChpdHMgQmlkaSBkaXJlY3Rpb24gdmFsdWUgaXMgUklHSFRfVE9fTEVGVF9BUkFCSUMpLiAKKyAgICAgKiBUaGUgaW5pdGlhbCBzdGF0ZSBhdCB0aGUgc3RhcnQgb2YgdGhlIHRleHQgaXMgYXNzdW1lZCB0byBiZSBhbiBBcmFiaWMsCisgICAgICogbGV0dGVyLCBzbyBFdXJvcGVhbiBkaWdpdHMgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0ZXh0IHdpbGwgY2hhbmdlLgorICAgICAqIENvbXBhcmUgdG8gRElHSVRTX0FMRU4yQU5fSU5UX0xSLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERJR0lUU19FTjJBTl9JTklUX0FMID0gMHg4MDsKKworICAgIC8qKiBOb3QgYSB2YWxpZCBvcHRpb24gdmFsdWUuICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERJR0lUU19SRVNFUlZFRCA9IDB4YTA7CisKKyAgICAvKiogCisgICAgICogQml0IG1hc2sgZm9yIGRpZ2l0IHNoYXBpbmcgb3B0aW9ucy4gCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElHSVRTX01BU0sgPSAweGUwOworCisgICAgLyoqIAorICAgICAqIERpZ2l0IHR5cGUgb3B0aW9uOiBVc2UgQXJhYmljLUluZGljIGRpZ2l0cyAoVSswNjYwLi4uVSswNjY5KS4gCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElHSVRfVFlQRV9BTiA9IDA7CisKKyAgICAvKiogCisgICAgICogRGlnaXQgdHlwZSBvcHRpb246IFVzZSBFYXN0ZXJuIChFeHRlbmRlZCkgQXJhYmljLUluZGljIGRpZ2l0cyAoVSswNmYwLi4uVSswNmY5KS4gCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElHSVRfVFlQRV9BTl9FWFRFTkRFRCA9IDB4MTAwOworCisgICAgLyoqIAorICAgICAqIEJpdCBtYXNrIGZvciBkaWdpdCB0eXBlIG9wdGlvbnMuIAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERJR0lUX1RZUEVfTUFTSyA9IDB4MDEwMDsgLy8gMHgzZjAwPworCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCByaHMpIHsKKyAgICAgICAgcmV0dXJuIHJocyAhPSBudWxsICYmIAorICAgICAgICAgICAgcmhzLmdldENsYXNzKCkgPT0gQXJhYmljU2hhcGluZy5jbGFzcyAmJiAKKyAgICAgICAgICAgIG9wdGlvbnMgPT0gKChBcmFiaWNTaGFwaW5nKXJocykub3B0aW9uczsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICByZXR1cm4gb3B0aW9uczsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsKKyAgICAgICAgYnVmLmFwcGVuZCgnWycpOworICAgICAgICBzd2l0Y2ggKG9wdGlvbnMgJiBMRU5HVEhfTUFTSykgeworICAgICAgICBjYXNlIExFTkdUSF9HUk9XX1NIUklOSzogYnVmLmFwcGVuZCgiZ3Jvdy9zaHJpbmsiKTsgYnJlYWs7CisgICAgICAgIGNhc2UgTEVOR1RIX0ZJWEVEX1NQQUNFU19ORUFSOiBidWYuYXBwZW5kKCJzcGFjZXMgbmVhciIpOyBicmVhazsKKyAgICAgICAgY2FzZSBMRU5HVEhfRklYRURfU1BBQ0VTX0FUX0VORDogYnVmLmFwcGVuZCgic3BhY2VzIGF0IGVuZCIpOyBicmVhazsKKyAgICAgICAgY2FzZSBMRU5HVEhfRklYRURfU1BBQ0VTX0FUX0JFR0lOTklORzogYnVmLmFwcGVuZCgic3BhY2VzIGF0IGJlZ2lubmluZyIpOyBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzd2l0Y2ggKG9wdGlvbnMgJiBURVhUX0RJUkVDVElPTl9NQVNLKSB7CisgICAgICAgIGNhc2UgVEVYVF9ESVJFQ1RJT05fTE9HSUNBTDogYnVmLmFwcGVuZCgiLCBsb2dpY2FsIik7IGJyZWFrOworICAgICAgICBjYXNlIFRFWFRfRElSRUNUSU9OX1ZJU1VBTF9MVFI6IGJ1Zi5hcHBlbmQoIiwgdmlzdWFsIik7IGJyZWFrOworICAgICAgICB9CisgICAgICAgIHN3aXRjaCAob3B0aW9ucyAmIExFVFRFUlNfTUFTSykgeworICAgICAgICBjYXNlIExFVFRFUlNfTk9PUDogYnVmLmFwcGVuZCgiLCBubyBsZXR0ZXIgc2hhcGluZyIpOyBicmVhazsKKyAgICAgICAgY2FzZSBMRVRURVJTX1NIQVBFOiBidWYuYXBwZW5kKCIsIHNoYXBlIGxldHRlcnMiKTsgYnJlYWs7CisgICAgICAgIGNhc2UgTEVUVEVSU19TSEFQRV9FWENFUFRfVEFTSEtFRUw6CisgICAgICAgIGNhc2UgTEVUVEVSU19VTlNIQVBFOiBidWYuYXBwZW5kKCIsIHVuc2hhcGUgbGV0dGVycyIpOyBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzd2l0Y2ggKG9wdGlvbnMgJiBESUdJVFNfTUFTSykgeworICAgICAgICBjYXNlIERJR0lUU19OT09QOiBidWYuYXBwZW5kKCIsIG5vIGRpZ2l0IHNoYXBpbmciKTsgYnJlYWs7CisgICAgICAgIGNhc2UgRElHSVRTX0VOMkFOOiBidWYuYXBwZW5kKCIsIHNoYXBlIGRpZ2l0cyB0byBBTiIpOyBicmVhazsKKyAgICAgICAgY2FzZSBESUdJVFNfQU4yRU46IGJ1Zi5hcHBlbmQoIiwgc2hhcGUgZGlnaXRzIHRvIEVOIik7IGJyZWFrOworICAgICAgICBjYXNlIERJR0lUU19FTjJBTl9JTklUX0xSOiBidWYuYXBwZW5kKCIsIHNoYXBlIGRpZ2l0cyB0byBBTiBjb250ZXh0dWFsbHk6IGRlZmF1bHQgRU4iKTsgYnJlYWs7CisgICAgICAgIGNhc2UgRElHSVRTX0VOMkFOX0lOSVRfQUw6IGJ1Zi5hcHBlbmQoIiwgc2hhcGUgZGlnaXRzIHRvIEFOIGNvbnRleHR1YWxseTogZGVmYXVsdCBBTCIpOyBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzd2l0Y2ggKG9wdGlvbnMgJiBESUdJVF9UWVBFX01BU0spIHsKKyAgICAgICAgY2FzZSBESUdJVF9UWVBFX0FOOiBidWYuYXBwZW5kKCIsIHN0YW5kYXJkIEFyYWJpYy1JbmRpYyBkaWdpdHMiKTsgYnJlYWs7CisgICAgICAgIGNhc2UgRElHSVRfVFlQRV9BTl9FWFRFTkRFRDogYnVmLmFwcGVuZCgiLCBleHRlbmRlZCBBcmFiaWMtSW5kaWMgZGlnaXRzIik7IGJyZWFrOworICAgICAgICB9CisgICAgICAgIGJ1Zi5hcHBlbmQoIl0iKTsKKworICAgICAgICByZXR1cm4gYnVmLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLy8KKyAgICAvLyBwb3J0ZWQgYXBpCisgICAgLy8KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBJUlJFTEVWQU5UID0gNDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTEFNVFlQRSA9IDE2OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBTEVGVFlQRSA9IDMyOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExJTktSID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTElOS0wgPSAyOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMSU5LX01BU0sgPSAzOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGlycmVsZXZhbnRQb3NbXSA9IHsgCisgICAgICAgIDB4MCwgMHgyLCAweDQsIDB4NiwgMHg4LCAweEEsIDB4QywgMHhFIAorICAgIH07CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIGNvbnZlcnRMYW1BbGVmW10gPSAgeworICAgICAgICAnXHUwNjIyJywgLy8gRkVGNSAKKyAgICAgICAgJ1x1MDYyMicsIC8vIEZFRjYKKyAgICAgICAgJ1x1MDYyMycsIC8vIEZFRjcKKyAgICAgICAgJ1x1MDYyMycsIC8vIEZFRjgKKyAgICAgICAgJ1x1MDYyNScsIC8vIEZFRjkKKyAgICAgICAgJ1x1MDYyNScsIC8vIEZFRkEKKyAgICAgICAgJ1x1MDYyNycsIC8vIEZFRkIKKyAgICAgICAgJ1x1MDYyNycgIC8vIEZFRkMgCisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgY29udmVydE5vcm1hbGl6ZWRMYW1BbGVmW10gPSB7CisgICAgICAgICdcdTA2MjInLCAvLyAwNjVDCisgICAgICAgICdcdTA2MjMnLCAvLyAwNjVECisgICAgICAgICdcdTA2MjUnLCAvLyAwNjVFCisgICAgICAgICdcdTA2MjcnLCAvLyAwNjVGCisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdIGFyYUxpbmsgPSB7CisgICAgICAgIDEgICAgICAgICAgICsgMzIgKyAyNTYgKiAweDExLCAgLyoweDA2MjIqLworICAgICAgICAxICAgICAgICAgICArIDMyICsgMjU2ICogMHgxMywgIC8qMHgwNjIzKi8KKyAgICAgICAgMSAgICAgICAgICAgICAgICArIDI1NiAqIDB4MTUsICAvKjB4MDYyNCovCisgICAgICAgIDEgICAgICAgICAgICsgMzIgKyAyNTYgKiAweDE3LCAgLyoweDA2MjUqLworICAgICAgICAxICsgMiAgICAgICAgICAgICsgMjU2ICogMHgxOSwgIC8qMHgwNjI2Ki8KKyAgICAgICAgMSAgICAgICAgICAgKyAzMiArIDI1NiAqIDB4MUQsICAvKjB4MDYyNyovCisgICAgICAgIDEgKyAyICAgICAgICAgICAgKyAyNTYgKiAweDFGLCAgLyoweDA2MjgqLworICAgICAgICAxICAgICAgICAgICAgICAgICsgMjU2ICogMHgyMywgIC8qMHgwNjI5Ki8KKyAgICAgICAgMSArIDIgICAgICAgICAgICArIDI1NiAqIDB4MjUsICAvKjB4MDYyQSovCisgICAgICAgIDEgKyAyICAgICAgICAgICAgKyAyNTYgKiAweDI5LCAgLyoweDA2MkIqLworICAgICAgICAxICsgMiAgICAgICAgICAgICsgMjU2ICogMHgyRCwgIC8qMHgwNjJDKi8KKyAgICAgICAgMSArIDIgICAgICAgICAgICArIDI1NiAqIDB4MzEsICAvKjB4MDYyRCovCisgICAgICAgIDEgKyAyICAgICAgICAgICAgKyAyNTYgKiAweDM1LCAgLyoweDA2MkUqLworICAgICAgICAxICAgICAgICAgICAgICAgICsgMjU2ICogMHgzOSwgIC8qMHgwNjJGKi8KKyAgICAgICAgMSAgICAgICAgICAgICAgICArIDI1NiAqIDB4M0IsICAvKjB4MDYzMCovCisgICAgICAgIDEgICAgICAgICAgICAgICAgKyAyNTYgKiAweDNELCAgLyoweDA2MzEqLworICAgICAgICAxICAgICAgICAgICAgICAgICsgMjU2ICogMHgzRiwgIC8qMHgwNjMyKi8KKyAgICAgICAgMSArIDIgICAgICAgICAgICArIDI1NiAqIDB4NDEsICAvKjB4MDYzMyovCisgICAgICAgIDEgKyAyICAgICAgICAgICAgKyAyNTYgKiAweDQ1LCAgLyoweDA2MzQqLworICAgICAgICAxICsgMiAgICAgICAgICAgICsgMjU2ICogMHg0OSwgIC8qMHgwNjM1Ki8KKyAgICAgICAgMSArIDIgICAgICAgICAgICArIDI1NiAqIDB4NEQsICAvKjB4MDYzNiovCisgICAgICAgIDEgKyAyICAgICAgICAgICAgKyAyNTYgKiAweDUxLCAgLyoweDA2MzcqLworICAgICAgICAxICsgMiAgICAgICAgICAgICsgMjU2ICogMHg1NSwgIC8qMHgwNjM4Ki8KKyAgICAgICAgMSArIDIgICAgICAgICAgICArIDI1NiAqIDB4NTksICAvKjB4MDYzOSovCisgICAgICAgIDEgKyAyICAgICAgICAgICAgKyAyNTYgKiAweDVELCAgLyoweDA2M0EqLworICAgICAgICAwLCAwLCAwLCAwLCAwLCAgICAgICAgICAgICAgICAgIC8qMHgwNjNCLTB4MDYzRiovCisgICAgICAgIDEgKyAyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyoweDA2NDAqLworICAgICAgICAxICsgMiAgICAgICAgICAgICsgMjU2ICogMHg2MSwgIC8qMHgwNjQxKi8KKyAgICAgICAgMSArIDIgICAgICAgICAgICArIDI1NiAqIDB4NjUsICAvKjB4MDY0MiovCisgICAgICAgIDEgKyAyICAgICAgICAgICAgKyAyNTYgKiAweDY5LCAgLyoweDA2NDMqLworICAgICAgICAxICsgMiAgICAgICArIDE2ICsgMjU2ICogMHg2RCwgIC8qMHgwNjQ0Ki8KKyAgICAgICAgMSArIDIgICAgICAgICAgICArIDI1NiAqIDB4NzEsICAvKjB4MDY0NSovCisgICAgICAgIDEgKyAyICAgICAgICAgICAgKyAyNTYgKiAweDc1LCAgLyoweDA2NDYqLworICAgICAgICAxICsgMiAgICAgICAgICAgICsgMjU2ICogMHg3OSwgIC8qMHgwNjQ3Ki8KKyAgICAgICAgMSAgICAgICAgICAgICAgICArIDI1NiAqIDB4N0QsICAvKjB4MDY0OCovCisgICAgICAgIDEgICAgICAgICAgICAgICAgKyAyNTYgKiAweDdGLCAgLyoweDA2NDkqLworICAgICAgICAxICsgMiAgICAgICAgICAgICsgMjU2ICogMHg4MSwgIC8qMHgwNjRBKi8KKyAgICAgICAgNCwgNCwgNCwgNCwgICAgICAgICAgICAgICAgICAgICAvKjB4MDY0Qi0weDA2NEUqLworICAgICAgICA0LCA0LCA0LCA0LCAgICAgICAgICAgICAgICAgICAgIC8qMHgwNjRGLTB4MDY1MiovCisgICAgICAgIDQsIDQsIDQsIDAsIDAsICAgICAgICAgICAgICAgICAgLyoweDA2NTMtMHgwNjU3Ki8KKyAgICAgICAgMCwgMCwgMCwgMCwgICAgICAgICAgICAgICAgICAgICAvKjB4MDY1OC0weDA2NUIqLworICAgICAgICAxICAgICAgICAgICAgICAgICsgMjU2ICogMHg4NSwgIC8qMHgwNjVDKi8KKyAgICAgICAgMSAgICAgICAgICAgICAgICArIDI1NiAqIDB4ODcsICAvKjB4MDY1RCovCisgICAgICAgIDEgICAgICAgICAgICAgICAgKyAyNTYgKiAweDg5LCAgLyoweDA2NUUqLworICAgICAgICAxICAgICAgICAgICAgICAgICsgMjU2ICogMHg4QiwgIC8qMHgwNjVGKi8KKyAgICAgICAgMCwgMCwgMCwgMCwgMCwgICAgICAgICAgICAgICAgICAvKjB4MDY2MC0weDA2NjQqLworICAgICAgICAwLCAwLCAwLCAwLCAwLCAgICAgICAgICAgICAgICAgIC8qMHgwNjY1LTB4MDY2OSovCisgICAgICAgIDAsIDAsIDAsIDAsIDAsIDAsICAgICAgICAgICAgICAgLyoweDA2NkEtMHgwNjZGKi8KKyAgICAgICAgNCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjB4MDY3MCovCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoweDA2NzEqLworICAgICAgICAxICAgICAgICAgICArIDMyLCAgICAgICAgICAgICAgIC8qMHgwNjcyKi8KKyAgICAgICAgMSAgICAgICAgICAgKyAzMiwgICAgICAgICAgICAgICAvKjB4MDY3MyovCisgICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoweDA2NzQqLworICAgICAgICAxICAgICAgICAgICArIDMyLCAgICAgICAgICAgICAgIC8qMHgwNjc1Ki8KKyAgICAgICAgMSwgMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjB4MDY3Ni0weDA2NzcqLworICAgICAgICAxKzIsIDErMiwgMSsyLCAxKzIsIDErMiwgMSsyLCAgIC8qMHgwNjc4LTB4MDY3RCovCisgICAgICAgIDErMiwgMSsyLCAxKzIsIDErMiwgMSsyLCAxKzIsICAgLyoweDA2N0UtMHgwNjgzKi8KKyAgICAgICAgMSsyLCAxKzIsIDErMiwgMSsyLCAgICAgICAgICAgICAvKjB4MDY4NC0weDA2ODcqLworICAgICAgICAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAgIC8qMHgwNjg4LTB4MDY5MSovCisgICAgICAgIDEsIDEsIDEsIDEsIDEsIDEsIDEsIDEsICAgICAgICAgLyoweDA2OTItMHgwNjk5Ki8KKyAgICAgICAgMSsyLCAxKzIsIDErMiwgMSsyLCAxKzIsIDErMiwgICAvKjB4MDY5QS0weDA2QTMqLworICAgICAgICAxKzIsIDErMiwgMSsyLCAxKzIsICAgICAgICAgICAgIC8qMHgwNjlBLTB4MDZBMyovCisgICAgICAgIDErMiwgMSsyLCAxKzIsIDErMiwgMSsyLCAxKzIsICAgLyoweDA2QTQtMHgwNkFEKi8KKyAgICAgICAgMSsyLCAxKzIsIDErMiwgMSsyLCAgICAgICAgICAgICAvKjB4MDZBNC0weDA2QUQqLworICAgICAgICAxKzIsIDErMiwgMSsyLCAxKzIsIDErMiwgMSsyLCAgIC8qMHgwNkFFLTB4MDZCNyovCisgICAgICAgIDErMiwgMSsyLCAxKzIsIDErMiwgICAgICAgICAgICAgLyoweDA2QUUtMHgwNkI3Ki8KKyAgICAgICAgMSsyLCAxKzIsIDErMiwgMSsyLCAxKzIsIDErMiwgICAvKjB4MDZCOC0weDA2QkYqLworICAgICAgICAxKzIsIDErMiwgICAgICAgICAgICAgICAgICAgICAgIC8qMHgwNkI4LTB4MDZCRiovCisgICAgICAgIDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoweDA2QzAqLworICAgICAgICAxKzIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMHgwNkMxKi8KKyAgICAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgICAvKjB4MDZDMi0weDA2Q0IqLworICAgICAgICAxKzIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qMHgwNkNDKi8KKyAgICAgICAgMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjB4MDZDRCovCisgICAgICAgIDErMiwgMSsyLCAxKzIsIDErMiwgICAgICAgICAgICAgLyoweDA2Q0UtMHgwNkQxKi8KKyAgICAgICAgMSwgMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKjB4MDZEMi0weDA2RDMqLworICAgIH07CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBwcmVzTGluayA9IHsKKyAgICAgICAgMSArIDIsICAgICAgICAgICAgICAgICAgICAgICAgLyoweEZFNzAqLworICAgICAgICAxICsgMiwgICAgICAgICAgICAgICAgICAgICAgICAvKjB4RkU3MSovCisgICAgICAgIDEgKyAyLCAwLCAxKyAyLCAwLCAxKyAyLCAgICAgIC8qMHhGRTcyLTB4RkU3NiovCisgICAgICAgIDEgKyAyLCAgICAgICAgICAgICAgICAgICAgICAgIC8qMHhGRTc3Ki8KKyAgICAgICAgMSsgMiwgMSArIDIsIDErMiwgMSArIDIsICAgICAgLyoweEZFNzgtMHhGRTgxKi8KKyAgICAgICAgMSsgMiwgMSArIDIsIDErMiwgMSArIDIsICAgICAgLyoweEZFODItMHhGRTg1Ki8KKyAgICAgICAgMCwgMCArIDMyLCAxICsgMzIsIDAgKyAzMiwgICAgLyoweEZFODYtMHhGRTg5Ki8KKyAgICAgICAgMSArIDMyLCAwLCAxLCAgMCArIDMyLCAgICAgICAgLyoweEZFOEEtMHhGRThEKi8KKyAgICAgICAgMSArIDMyLCAwLCAyLCAgMSArIDIsICAgICAgICAgLyoweEZFOEUtMHhGRTkxKi8KKyAgICAgICAgMSwgMCArIDMyLCAxICsgMzIsIDAsICAgICAgICAgLyoweEZFOTItMHhGRTk1Ki8KKyAgICAgICAgMiwgMSArIDIsIDEsIDAsICAgICAgICAgICAgICAgLyoweEZFOTYtMHhGRTk5Ki8KKyAgICAgICAgMSwgMCwgMiwgMSArIDIsICAgICAgICAgICAgICAgLyoweEZFOUEtMHhGRTlEKi8KKyAgICAgICAgMSwgMCwgMiwgMSArIDIsICAgICAgICAgICAgICAgLyoweEZFOUUtMHhGRUExKi8KKyAgICAgICAgMSwgMCwgMiwgMSArIDIsICAgICAgICAgICAgICAgLyoweEZFQTItMHhGRUE1Ki8KKyAgICAgICAgMSwgMCwgMiwgMSArIDIsICAgICAgICAgICAgICAgLyoweEZFQTYtMHhGRUE5Ki8KKyAgICAgICAgMSwgMCwgMiwgMSArIDIsICAgICAgICAgICAgICAgLyoweEZFQUEtMHhGRUFEKi8KKyAgICAgICAgMSwgMCwgMSwgMCwgICAgICAgICAgICAgICAgICAgLyoweEZFQUUtMHhGRUIxKi8KKyAgICAgICAgMSwgMCwgMSwgMCwgICAgICAgICAgICAgICAgICAgLyoweEZFQjItMHhGRUI1Ki8KKyAgICAgICAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFQjYtMHhGRUI5Ki8KKyAgICAgICAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFQkEtMHhGRUJEKi8KKyAgICAgICAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFQkUtMHhGRUMxKi8KKyAgICAgICAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFQzItMHhGRUM1Ki8KKyAgICAgICAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFQzYtMHhGRUM5Ki8KKyAgICAgICAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFQ0EtMHhGRUNEKi8KKyAgICAgICAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFQ0UtMHhGRUQxKi8KKyAgICAgICAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFRDItMHhGRUQ1Ki8KKyAgICAgICAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFRDYtMHhGRUQ5Ki8KKyAgICAgICAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFREEtMHhGRUREKi8KKyAgICAgICAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFREUtMHhGRUUxKi8KKyAgICAgICAgMSwgMCArIDE2LCAyICsgMTYsIDEgKyAyICsxNiwgLyoweEZFRTItMHhGRUU1Ki8KKyAgICAgICAgMSArIDE2LCAwLCAyLCAxKzIsICAgICAgICAgICAgLyoweEZFRTYtMHhGRUU5Ki8KKyAgICAgICAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFRUEtMHhGRUVEKi8KKyAgICAgICAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFRUUtMHhGRUYxKi8KKyAgICAgICAgMSwgMCwgMSwgMCwgICAgICAgICAgICAgICAgICAgLyoweEZFRjItMHhGRUY1Ki8KKyAgICAgICAgMSwgMCwgMiwgMSsyLCAgICAgICAgICAgICAgICAgLyoweEZFRjYtMHhGRUY5Ki8KKyAgICAgICAgMSwgMCwgMSwgMCwgICAgICAgICAgICAgICAgICAgLyoweEZFRkEtMHhGRUZEKi8KKyAgICAgICAgMSwgMCwgMSwgMCwKKyAgICAgICAgMQorICAgIH07CisKKyAgICBwcml2YXRlIHN0YXRpYyBpbnRbXSBjb252ZXJ0RkV0bzA2ID0geworICAgICAgICAvKioqKioqKioqKiowKioqKioqMSoqKioqKjIqKioqKiozKioqKioqNCoqKioqKjUqKioqKio2KioqKioqNyoqKioqKjgqKioqKio5KioqKioqQSoqKioqKkIqKioqKipDKioqKioqRCoqKioqKkUqKioqKipGKioqLworICAgICAgICAvKkZFNyovICAgMHg2NEIsIDB4NjRCLCAweDY0QywgMHg2NEMsIDB4NjRELCAweDY0RCwgMHg2NEUsIDB4NjRFLCAweDY0RiwgMHg2NEYsIDB4NjUwLCAweDY1MCwgMHg2NTEsIDB4NjUxLCAweDY1MiwgMHg2NTIsCisgICAgICAgIC8qRkU4Ki8gICAweDYyMSwgMHg2MjIsIDB4NjIyLCAweDYyMywgMHg2MjMsIDB4NjI0LCAweDYyNCwgMHg2MjUsIDB4NjI1LCAweDYyNiwgMHg2MjYsIDB4NjI2LCAweDYyNiwgMHg2MjcsIDB4NjI3LCAweDYyOCwKKyAgICAgICAgLypGRTkqLyAgIDB4NjI4LCAweDYyOCwgMHg2MjgsIDB4NjI5LCAweDYyOSwgMHg2MkEsIDB4NjJBLCAweDYyQSwgMHg2MkEsIDB4NjJCLCAweDYyQiwgMHg2MkIsIDB4NjJCLCAweDYyQywgMHg2MkMsIDB4NjJDLAorICAgICAgICAvKkZFQSovICAgMHg2MkMsIDB4NjJELCAweDYyRCwgMHg2MkQsIDB4NjJELCAweDYyRSwgMHg2MkUsIDB4NjJFLCAweDYyRSwgMHg2MkYsIDB4NjJGLCAweDYzMCwgMHg2MzAsIDB4NjMxLCAweDYzMSwgMHg2MzIsCisgICAgICAgIC8qRkVCKi8gICAweDYzMiwgMHg2MzMsIDB4NjMzLCAweDYzMywgMHg2MzMsIDB4NjM0LCAweDYzNCwgMHg2MzQsIDB4NjM0LCAweDYzNSwgMHg2MzUsIDB4NjM1LCAweDYzNSwgMHg2MzYsIDB4NjM2LCAweDYzNiwKKyAgICAgICAgLypGRUMqLyAgIDB4NjM2LCAweDYzNywgMHg2MzcsIDB4NjM3LCAweDYzNywgMHg2MzgsIDB4NjM4LCAweDYzOCwgMHg2MzgsIDB4NjM5LCAweDYzOSwgMHg2MzksIDB4NjM5LCAweDYzQSwgMHg2M0EsIDB4NjNBLAorICAgICAgICAvKkZFRCovICAgMHg2M0EsIDB4NjQxLCAweDY0MSwgMHg2NDEsIDB4NjQxLCAweDY0MiwgMHg2NDIsIDB4NjQyLCAweDY0MiwgMHg2NDMsIDB4NjQzLCAweDY0MywgMHg2NDMsIDB4NjQ0LCAweDY0NCwgMHg2NDQsCisgICAgICAgIC8qRkVFKi8gICAweDY0NCwgMHg2NDUsIDB4NjQ1LCAweDY0NSwgMHg2NDUsIDB4NjQ2LCAweDY0NiwgMHg2NDYsIDB4NjQ2LCAweDY0NywgMHg2NDcsIDB4NjQ3LCAweDY0NywgMHg2NDgsIDB4NjQ4LCAweDY0OSwKKyAgICAgICAgLypGRUYqLyAgIDB4NjQ5LCAweDY0QSwgMHg2NEEsIDB4NjRBLCAweDY0QSwgMHg2NUMsIDB4NjVDLCAweDY1RCwgMHg2NUQsIDB4NjVFLCAweDY1RSwgMHg2NUYsIDB4NjVGCisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBzaGFwZVRhYmxlW11bXVtdID0geworICAgICAgICB7IHswLDAsMCwwfSwgezAsMCwwLDB9LCB7MCwxLDAsM30sIHswLDEsMCwxfSB9LAorICAgICAgICB7IHswLDAsMiwyfSwgezAsMCwxLDJ9LCB7MCwxLDEsMn0sIHswLDEsMSwzfSB9LAorICAgICAgICB7IHswLDAsMCwwfSwgezAsMCwwLDB9LCB7MCwxLDAsM30sIHswLDEsMCwzfSB9LAorICAgICAgICB7IHswLDAsMSwyfSwgezAsMCwxLDJ9LCB7MCwxLDEsMn0sIHswLDEsMSwzfSB9CisgICAgfTsKKworICAgIC8qCisgICAgICogVGhpcyBmdW5jdGlvbiBzaGFwZXMgRXVyb3BlYW4gZGlnaXRzIHRvIEFyYWJpYy1JbmRpYyBkaWdpdHMKKyAgICAgKiBpbi1wbGFjZSwgd3JpdGluZyBvdmVyIHRoZSBpbnB1dCBjaGFyYWN0ZXJzLiAgRGF0YSBpcyBpbiB2aXN1YWwKKyAgICAgKiBvcmRlci4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgc2hhcGVUb0FyYWJpY0RpZ2l0c1dpdGhDb250ZXh0KGNoYXJbXSBkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZGlnaXRCYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBsYXN0U3Ryb25nV2FzQUwpIHsKKworICAgICAgICBkaWdpdEJhc2UgLT0gJzAnOyAvLyBtb3ZlIGNvbW1vbiBhZGp1c3RtZW50IG91dCBvZiBsb29wCisKKyAgICAgICAgZm9yKGludCBpID0gc3RhcnQgKyBsZW5ndGg7IC0taSA+PSBzdGFydDspIHsKKyAgICAgICAgICAgIGNoYXIgY2ggPSBkZXN0W2ldOworICAgICAgICAgICAgaW50IGRpciA9IFVDaGFyYWN0ZXIuZ2V0RGlyZWN0aW9uKGNoKTsKKyAgICAgICAgICAgIHN3aXRjaCAoVUNoYXJhY3Rlci5nZXREaXJlY3Rpb24oY2gpKSB7CisgICAgICAgICAgICBjYXNlIFVDaGFyYWN0ZXJEaXJlY3Rpb24uTEVGVF9UT19SSUdIVDoKKyAgICAgICAgICAgIGNhc2UgVUNoYXJhY3RlckRpcmVjdGlvbi5SSUdIVF9UT19MRUZUOgorICAgICAgICAgICAgICAgIGxhc3RTdHJvbmdXYXNBTCA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBVQ2hhcmFjdGVyRGlyZWN0aW9uLlJJR0hUX1RPX0xFRlRfQVJBQklDOgorICAgICAgICAgICAgICAgIGxhc3RTdHJvbmdXYXNBTCA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFVDaGFyYWN0ZXJEaXJlY3Rpb24uRVVST1BFQU5fTlVNQkVSOgorICAgICAgICAgICAgICAgIGlmIChsYXN0U3Ryb25nV2FzQUwgJiYgY2ggPD0gJ1x1MDAzOScpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFtpXSA9IChjaGFyKShjaCArIGRpZ2l0QmFzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAgICogTmFtZSAgICA6IGludmVydEJ1ZmZlcgorICAgICAqIEZ1bmN0aW9uOiBUaGlzIGZ1bmN0aW9uIGludmVydHMgdGhlIGJ1ZmZlciwgaXQncyB1c2VkCisgICAgICogICAgICAgICAgIGluIGNhc2UgdGhlIHVzZXIgc3BlY2lmaWVzIHRoZSBidWZmZXIgdG8gYmUKKyAgICAgKiAgICAgICAgICAgVEVYVF9ESVJFQ1RJT05fTE9HSUNBTAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgaW52ZXJ0QnVmZmVyKGNoYXJbXSBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGgpIHsKKworICAgICAgICBmb3IoaW50IGkgPSBzdGFydCwgaiA9IHN0YXJ0ICsgbGVuZ3RoIC0gMTsgaSA8IGo7IGkrKywgLS1qKSB7CisgICAgICAgICAgICBjaGFyIHRlbXAgPSBidWZmZXJbaV07CisgICAgICAgICAgICBidWZmZXJbaV0gPSBidWZmZXJbal07CisgICAgICAgICAgICBidWZmZXJbal0gPSB0ZW1wOworICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiBOYW1lICAgIDogY2hhbmdlTGFtQWxlZgorICAgICAqIEZ1bmN0aW9uOiBDb252ZXJ0cyB0aGUgQWxlZiBjaGFyYWN0ZXJzIGludG8gYW4gZXF1aXZhbGVudAorICAgICAqICAgICAgICAgICBMYW1BbGVmIGxvY2F0aW9uIGluIHRoZSAweDA2eHggUmFuZ2UsIHRoaXMgaXMgYW4KKyAgICAgKiAgICAgICAgICAgaW50ZXJtZWRpYXRlIHN0YWdlIGluIHRoZSBvcGVyYXRpb24gb2YgdGhlIHByb2dyYW0KKyAgICAgKiAgICAgICAgICAgbGF0ZXIgaXQnbGwgYmUgY29udmVydGVkIGludG8gdGhlIDB4RkV4eCBMYW1BbGVmcyAKKyAgICAgKiAgICAgICAgICAgaW4gdGhlIHNoYXBpbmcgZnVuY3Rpb24uCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgY2hhciBjaGFuZ2VMYW1BbGVmKGNoYXIgY2gpIHsKKyAgICAgICAgc3dpdGNoKGNoKSB7CisgICAgICAgIGNhc2UgJ1x1MDYyMic6IHJldHVybiAnXHUwNjVDJzsKKyAgICAgICAgY2FzZSAnXHUwNjIzJzogcmV0dXJuICdcdTA2NUQnOworICAgICAgICBjYXNlICdcdTA2MjUnOiByZXR1cm4gJ1x1MDY1RSc7CisgICAgICAgIGNhc2UgJ1x1MDYyNyc6IHJldHVybiAnXHUwNjVGJzsKKyAgICAgICAgZGVmYXVsdDogIHJldHVybiAnXHUwMDAwJzsgLy8gbm90IGEgbGFtYWxlZgorICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiBOYW1lICAgIDogc3BlY2lhbENoYXIKKyAgICAgKiBGdW5jdGlvbjogU3BlY2lhbCBBcmFiaWMgY2hhcmFjdGVycyBuZWVkIHNwZWNpYWwgaGFuZGxpbmcgaW4gdGhlIHNoYXBlVW5pY29kZQorICAgICAqICAgICAgICAgICBmdW5jdGlvbiwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIDEgb3IgMiBmb3IgdGhlc2Ugc3BlY2lhbCBjaGFyYWN0ZXJzCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IHNwZWNpYWxDaGFyKGNoYXIgY2gpIHsKKyAgICAgICAgaWYgKChjaCA+ICdcdTA2MjEnICYmIGNoIDwgJ1x1MDYyNicpIHx8IAorICAgICAgICAgICAgKGNoID09ICdcdTA2MjcnKSB8fAorICAgICAgICAgICAgKGNoID4gJ1x1MDYyRScgJiYgY2ggPCAnXHUwNjMzJykgfHwKKyAgICAgICAgICAgIChjaCA+ICdcdTA2NDcnICYmIGNoIDwgJ1x1MDY0QScpIHx8CisgICAgICAgICAgICAoY2ggPT0gJ1x1MDYyOScpKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfSBlbHNlIGlmIChjaCA+PSAnXHUwNjRCJyAmJiBjaDw9ICdcdTA2NTInKSB7CisgICAgICAgICAgICByZXR1cm4gMjsKKyAgICAgICAgfSBlbHNlIGlmIChjaCA+PSAweDA2NTMgJiYgY2ggPD0gMHgwNjU1IHx8IAorICAgICAgICAgICAgICAgICAgIGNoID09IDB4MDY3MCB8fAorICAgICAgICAgICAgICAgICAgIGNoID49IDB4RkU3MCAmJiBjaCA8PSAweEZFN0YpIHsKKyAgICAgICAgICAgIHJldHVybiAzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoKKyAgICAgKiBOYW1lICAgIDogZ2V0TGluaworICAgICAqIEZ1bmN0aW9uOiBSZXNvbHZlcyB0aGUgbGluayBiZXR3ZWVuIHRoZSBjaGFyYWN0ZXJzIGFzIAorICAgICAqICAgICAgICAgICBBcmFiaWMgY2hhcmFjdGVycyBoYXZlIGZvdXIgZm9ybXMgOgorICAgICAqICAgICAgICAgICBJc29sYXRlZCwgSW5pdGlhbCwgTWlkZGxlIGFuZCBGaW5hbCBGb3JtCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGdldExpbmsoY2hhciBjaCkgeworICAgICAgICBpZiAoY2ggPj0gJ1x1MDYyMicgJiYgY2ggPD0gJ1x1MDZEMycpIHsKKyAgICAgICAgICAgIHJldHVybiBhcmFMaW5rW2NoIC0gJ1x1MDYyMiddOworICAgICAgICB9IGVsc2UgaWYgKGNoID09ICdcdTIwMEQnKSB7CisgICAgICAgICAgICByZXR1cm4gMzsKKyAgICAgICAgfSBlbHNlIGlmIChjaCA+PSAnXHUyMDZEJyAmJiBjaCA8PSAnXHUyMDZGJykgeworICAgICAgICAgICAgcmV0dXJuIDQ7CisgICAgICAgIH0gZWxzZSBpZiAoY2ggPj0gJ1x1RkU3MCcgJiYgY2ggPD0gJ1x1RkVGQycpIHsKKyAgICAgICAgICAgIHJldHVybiBwcmVzTGlua1tjaCAtICdcdUZFNzAnXTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiBOYW1lICAgIDogY291bnRTcGFjZXMKKyAgICAgKiBGdW5jdGlvbjogQ291bnRzIHRoZSBudW1iZXIgb2Ygc3BhY2VzCisgICAgICogICAgICAgICAgIGF0IGVhY2ggZW5kIG9mIHRoZSBsb2dpY2FsIGJ1ZmZlcgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGludCBjb3VudFNwYWNlc0xlZnQoY2hhcltdIGRlc3QsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvdW50KSB7CisgICAgICAgIGZvciAoaW50IGkgPSBzdGFydCwgZSA9IHN0YXJ0ICsgY291bnQ7IGkgPCBlOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChkZXN0W2ldICE9ICdcdTAwMjAnKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGkgLSBzdGFydDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY291bnQ7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgaW50IGNvdW50U3BhY2VzUmlnaHQoY2hhcltdIGRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjb3VudCkgeworCisgICAgICAgIGZvciAoaW50IGkgPSBzdGFydCArIGNvdW50OyAtLWkgPj0gc3RhcnQ7KSB7CisgICAgICAgICAgICBpZiAoZGVzdFtpXSAhPSAnXHUwMDIwJykgeworICAgICAgICAgICAgICAgIHJldHVybiBzdGFydCArIGNvdW50IC0gMSAtIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvdW50OworICAgIH0KKworICAgIC8qCisgICAgICogTmFtZSAgICA6IGlzVGFzaGtlZWxDaGFyCisgICAgICogRnVuY3Rpb246IFJldHVybnMgMSBmb3IgVGFzaGtlZWwgY2hhcmFjdGVycyBlbHNlIHJldHVybiAwCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc1Rhc2hrZWVsQ2hhcihjaGFyIGNoKSB7CisgICAgICAgIHJldHVybiBjaCA+PSdcdTA2NEInICYmIGNoIDw9ICdcdTA2NTInOworICAgIH0KKworICAgIC8qCisgICAgICogTmFtZSAgICA6IGlzQWxlZkNoYXIKKyAgICAgKiBGdW5jdGlvbjogUmV0dXJucyAxIGZvciBBbGVmIGNoYXJhY3RlcnMgZWxzZSByZXR1cm4gMAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNBbGVmQ2hhcihjaGFyIGNoKSB7CisgICAgICAgIHJldHVybiBjaCA9PSAnXHUwNjIyJyB8fCBjaCA9PSAnXHUwNjIzJyB8fCBjaCA9PSAnXHUwNjI1JyB8fCBjaCA9PSAnXHUwNjI3JzsKKyAgICB9CisKKyAgICAvKgorICAgICAqIE5hbWUgICAgOiBpc0xhbUFsZWZDaGFyCisgICAgICogRnVuY3Rpb246IFJldHVybnMgMSBmb3IgTGFtQWxlZiBjaGFyYWN0ZXJzIGVsc2UgcmV0dXJuIDAKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzTGFtQWxlZkNoYXIoY2hhciBjaCkgeworICAgICAgICByZXR1cm4gY2ggPj0gJ1x1RkVGNScgJiYgY2ggPD0gJ1x1RkVGQyc7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc05vcm1hbGl6ZWRMYW1BbGVmQ2hhcihjaGFyIGNoKSB7CisgICAgICAgIHJldHVybiBjaCA+PSAnXHUwNjVDJyAmJiBjaCA8PSAnXHUwNjVGJzsKKyAgICB9CisKKyAgICAvKgorICAgICAqIE5hbWUgICAgOiBjYWxjdWxhdGVTaXplCisgICAgICogRnVuY3Rpb246IFRoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyB0aGUgZGVzdFNpemUgdG8gYmUgdXNlZCBpbiBwcmVmbGlnaHRpbmcKKyAgICAgKiAgICAgICAgICAgd2hlbiB0aGUgZGVzdFNpemUgaXMgZXF1YWwgdG8gMAorICAgICAqLworICAgIHByaXZhdGUgaW50IGNhbGN1bGF0ZVNpemUoY2hhcltdIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb3VyY2VTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb3VyY2VMZW5ndGgpIHsKKwkKKyAgICAgICAgaW50IGRlc3RTaXplID0gc291cmNlTGVuZ3RoOworCisgICAgICAgIHN3aXRjaCAob3B0aW9ucyAmIExFVFRFUlNfTUFTSykgeworICAgICAgICBjYXNlIExFVFRFUlNfU0hBUEU6CisgICAgICAgIGNhc2UgTEVUVEVSU19TSEFQRV9FWENFUFRfVEFTSEtFRUw6CisgICAgICAgICAgICBpZiAoaXNMb2dpY2FsKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IHNvdXJjZVN0YXJ0LCBlID0gc291cmNlU3RhcnQgKyBzb3VyY2VMZW5ndGggLSAxOyBpIDwgZTsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2VbaV0gPT0gJ1x1MDY0NCcgJiYgaXNBbGVmQ2hhcihzb3VyY2VbaSsxXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC0tZGVzdFNpemU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeyAvLyB2aXN1YWwKKyAgICAgICAgICAgICAgICBmb3IoaW50IGkgPSBzb3VyY2VTdGFydCArIDEsIGUgPSBzb3VyY2VTdGFydCArIHNvdXJjZUxlbmd0aDsgaSA8IGU7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlW2ldID09ICdcdTA2NDQnICYmIGlzQWxlZkNoYXIoc291cmNlW2ktMV0pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAtLWRlc3RTaXplOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBMRVRURVJTX1VOU0hBUEU6CisgICAgICAgICAgICBmb3IoaW50IGkgPSBzb3VyY2VTdGFydCwgZSA9IHNvdXJjZVN0YXJ0ICsgc291cmNlTGVuZ3RoOyBpIDwgZTsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzTGFtQWxlZkNoYXIoc291cmNlW2ldKSkgeworICAgICAgICAgICAgICAgICAgICBkZXN0U2l6ZSsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBkZXN0U2l6ZTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIE5hbWUgICAgOiByZW1vdmVMYW1BbGVmU3BhY2VzCisgICAgICogRnVuY3Rpb246IFRoZSBzaGFwZVVuaWNvZGUgZnVuY3Rpb24gY29udmVydHMgTGFtICsgQWxlZiBpbnRvIExhbUFsZWYgKyBzcGFjZSwKKyAgICAgKiAgICAgICAgICAgdGhpcyBmdW5jdGlvbiByZW1vdmVzIHRoZSBzcGFjZXMgYmVoaW5kIHRoZSBMYW1BbGVmcyBhY2NvcmRpbmcgdG8KKyAgICAgKiAgICAgICAgICAgdGhlIG9wdGlvbnMgdGhlIHVzZXIgc3BlY2lmaWVzLCB0aGUgc3BhY2VzIGFyZSByZW1vdmVkIHRvIHRoZSBlbmQKKyAgICAgKiAgICAgICAgICAgb2YgdGhlIGJ1ZmZlciwgb3Igc2hyaW5rIHRoZSBidWZmZXIgYW5kIHJlbW92ZSBzcGFjZXMgZm9yIGdvb2QKKyAgICAgKiAgICAgICAgICAgb3IgbGVhdmUgdGhlIGJ1ZmZlciBhcyBpdCBpcyBMYW1BbGVmICsgc3BhY2UuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgcmVtb3ZlTGFtQWxlZlNwYWNlcyhjaGFyW10gZGVzdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoKSB7CisJCisgICAgICAgIGludCBsZW5PcHRpb25zID0gb3B0aW9ucyAmIExFTkdUSF9NQVNLOworICAgICAgICBpZiAoIWlzTG9naWNhbCkgeworICAgICAgICAgICAgc3dpdGNoIChsZW5PcHRpb25zKSB7CisgICAgICAgICAgICBjYXNlIExFTkdUSF9GSVhFRF9TUEFDRVNfQVRfQkVHSU5OSU5HOiBsZW5PcHRpb25zID0gTEVOR1RIX0ZJWEVEX1NQQUNFU19BVF9FTkQ7IGJyZWFrOworICAgICAgICAgICAgY2FzZSBMRU5HVEhfRklYRURfU1BBQ0VTX0FUX0VORDogbGVuT3B0aW9ucyA9IExFTkdUSF9GSVhFRF9TUEFDRVNfQVRfQkVHSU5OSU5HOyBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGxlbk9wdGlvbnMgPT0gTEVOR1RIX0ZJWEVEX1NQQUNFU19ORUFSKSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gc3RhcnQsIGUgPSBpICsgbGVuZ3RoOyBpIDwgZTsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGRlc3RbaV0gPT0gJ1x1ZmZmZicpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFtpXSA9ICdcdTAwMjAnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZpbmFsIGludCBlID0gc3RhcnQgKyBsZW5ndGg7CisgICAgICAgICAgICBpbnQgdyA9IGU7CisgICAgICAgICAgICBpbnQgciA9IGU7CisgICAgICAgICAgICB3aGlsZSAoLS1yID49IHN0YXJ0KSB7CisgICAgICAgICAgICAgICAgY2hhciBjaCA9IGRlc3Rbcl07CisgICAgICAgICAgICAgICAgaWYgKGNoICE9ICdcdWZmZmYnKSB7CisgICAgICAgICAgICAgICAgICAgIC0tdzsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHcgIT0gcikgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFt3XSA9IGNoOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobGVuT3B0aW9ucyA9PSBMRU5HVEhfRklYRURfU1BBQ0VTX0FUX0VORCkgeworICAgICAgICAgICAgICAgIHdoaWxlICh3ID4gc3RhcnQpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVzdFstLXddID0gJ1x1MDAyMCc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodyA+IHN0YXJ0KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHNoaWZ0LCBhc3N1bWUgc21hbGwgYnVmZmVyIHNpemUgc28gZG9uJ3QgdXNlIGFycmF5Y29weQorICAgICAgICAgICAgICAgICAgICByID0gdzsKKyAgICAgICAgICAgICAgICAgICAgdyA9IHN0YXJ0OworICAgICAgICAgICAgICAgICAgICB3aGlsZSAociA8IGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbdysrXSA9IGRlc3RbcisrXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHcgPSBlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobGVuT3B0aW9ucyA9PSBMRU5HVEhfR1JPV19TSFJJTkspIHsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gdyAtIHN0YXJ0OworICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIHNwYWNlcyBhdCBiZWdpbm5pbmcKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHcgPCBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0W3crK10gPSAnXHUwMDIwJzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0KKworICAgIC8qCisgICAgICogTmFtZSAgICA6IGV4cGFuZExhbUFsZWYKKyAgICAgKiBGdW5jdGlvbjogTGFtQWxlZiBuZWVkcyBzcGVjaWFsIGhhbmRsaW5nIGFzIHRoZSBMYW1BbGVmIGlzCisgICAgICogICAgICAgICAgIG9uZSBjaGFyYWN0ZXIgd2hpbGUgZXhwYW5kaW5nIGl0IHdpbGwgZ2l2ZSB0d28KKyAgICAgKiAgICAgICAgICAgY2hhcmFjdGVycyBMYW0gKyBBbGVmLCBzbyB3ZSBuZWVkIHRvIGV4cGFuZCB0aGUgTGFtQWxlZgorICAgICAqICAgICAgICAgICBpbiBuZWFyIG9yIGZhciBzcGFjZXMgYWNjb3JkaW5nIHRvIHRoZSBvcHRpb25zIHRoZSB1c2VyCisgICAgICogICAgICAgICAgIHNwZWNpZmllcyBvciBpbmNyZWFzZSB0aGUgYnVmZmVyIHNpemUuCisgICAgICogICAgICAgICAgIERlc3QgaGFzIGVub3VnaCByb29tIGZvciB0aGUgZXhwYW5zaW9uIGlmIHdlIGFyZSBncm93aW5nLgorICAgICAqICAgICAgICAgICBsYW1hbGVmIGFyZSBub3JtYWxpemVkIHRvIHRoZSAnc3BlY2lhbCBjaGFyYWN0ZXJzJworICAgICAqLworICAgIHByaXZhdGUgaW50IGV4cGFuZExhbUFsZWYoY2hhcltdIGRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxhY291bnQpIHRocm93cyBBcmFiaWNTaGFwaW5nRXhjZXB0aW9uIHsKKworICAgICAgICBpbnQgbGVuT3B0aW9ucyA9IG9wdGlvbnMgJiBMRU5HVEhfTUFTSzsKKyAgICAgICAgaWYgKCFpc0xvZ2ljYWwpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobGVuT3B0aW9ucykgeworICAgICAgICAgICAgY2FzZSBMRU5HVEhfRklYRURfU1BBQ0VTX0FUX0JFR0lOTklORzogbGVuT3B0aW9ucyA9IExFTkdUSF9GSVhFRF9TUEFDRVNfQVRfRU5EOyBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTEVOR1RIX0ZJWEVEX1NQQUNFU19BVF9FTkQ6IGxlbk9wdGlvbnMgPSBMRU5HVEhfRklYRURfU1BBQ0VTX0FUX0JFR0lOTklORzsgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OiBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAobGVuT3B0aW9ucykgeworICAgICAgICBjYXNlIExFTkdUSF9HUk9XX1NIUklOSzogCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgciA9IHN0YXJ0ICsgbGVuZ3RoLCB3ID0gciArIGxhY291bnQ7IC0tciA+PSBzdGFydDspIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhciBjaCA9IGRlc3Rbcl07CisgICAgICAgICAgICAgICAgICAgIGlmIChpc05vcm1hbGl6ZWRMYW1BbGVmQ2hhcihjaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbLS13XSA9ICdcdTA2NDQnOworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFstLXddID0gY29udmVydE5vcm1hbGl6ZWRMYW1BbGVmW2NoIC0gJ1x1MDY1QyddOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFstLXddID0gY2g7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsZW5ndGggKz0gbGFjb3VudDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTEVOR1RIX0ZJWEVEX1NQQUNFU19ORUFSOiAKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNOb3JtYWxpemVkTGFtQWxlZkNoYXIoZGVzdFtzdGFydF0pKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmFiaWNTaGFwaW5nRXhjZXB0aW9uKCJubyBzcGFjZSBmb3IgbGFtYWxlZiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gc3RhcnQgKyBsZW5ndGg7IC0taSA+IHN0YXJ0OykgeyAvLyBkb24ndCBjaGVjayBzdGFydCwgYWxyZWFkeSBjaGVja2VkCisgICAgICAgICAgICAgICAgICAgIGNoYXIgY2ggPSBkZXN0W2ldOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNOb3JtYWxpemVkTGFtQWxlZkNoYXIoY2gpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVzdFtpLTFdID09ICdcdTAwMjAnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFtpXSA9ICdcdTA2NDQnOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbLS1pXSA9IGNvbnZlcnROb3JtYWxpemVkTGFtQWxlZltjaCAtICdcdTA2NUMnXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyYWJpY1NoYXBpbmdFeGNlcHRpb24oIm5vIHNwYWNlIGZvciBsYW1hbGVmIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIExFTkdUSF9GSVhFRF9TUEFDRVNfQVRfRU5EOiAKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAobGFjb3VudCA+IGNvdW50U3BhY2VzTGVmdChkZXN0LCBzdGFydCwgbGVuZ3RoKSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXJhYmljU2hhcGluZ0V4Y2VwdGlvbigibm8gc3BhY2UgZm9yIGxhbWFsZWYiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZm9yIChpbnQgciA9IHN0YXJ0ICsgbGFjb3VudCwgdyA9IHN0YXJ0LCBlID0gc3RhcnQgKyBsZW5ndGg7IHIgPCBlOyArK3IpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhciBjaCA9IGRlc3Rbcl07CisgICAgICAgICAgICAgICAgICAgIGlmIChpc05vcm1hbGl6ZWRMYW1BbGVmQ2hhcihjaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbdysrXSA9IGNvbnZlcnROb3JtYWxpemVkTGFtQWxlZltjaCAtICdcdTA2NUMnXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbdysrXSA9ICdcdTA2NDQnOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFt3KytdID0gY2g7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgY2FzZSBMRU5HVEhfRklYRURfU1BBQ0VTX0FUX0JFR0lOTklORzogCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGxhY291bnQgPiBjb3VudFNwYWNlc1JpZ2h0KGRlc3QsIHN0YXJ0LCBsZW5ndGgpKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBBcmFiaWNTaGFwaW5nRXhjZXB0aW9uKCJubyBzcGFjZSBmb3IgbGFtYWxlZiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmb3IgKGludCByID0gc3RhcnQgKyBsZW5ndGggLSBsYWNvdW50LCB3ID0gc3RhcnQgKyBsZW5ndGg7IC0tciA+PSBzdGFydDspIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhciBjaCA9IGRlc3Rbcl07CisgICAgICAgICAgICAgICAgICAgIGlmIChpc05vcm1hbGl6ZWRMYW1BbGVmQ2hhcihjaCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbLS13XSA9ICdcdTA2NDQnOworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFstLXddID0gY29udmVydE5vcm1hbGl6ZWRMYW1BbGVmW2NoIC0gJ1x1MDY1QyddOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFstLXddID0gY2g7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBsZW5ndGg7CisgICAgfQorCisgICAgLyogQ29udmVydCB0aGUgaW5wdXQgYnVmZmVyIGZyb20gRkV4eCBSYW5nZSBpbnRvIDA2eHggUmFuZ2UKKyAgICAgKiB0byBwdXQgYWxsIGNoYXJhY3RlcnMgaW50byB0aGUgMDZ4eCByYW5nZQorICAgICAqIGV2ZW4gdGhlIGxhbWFsZWYgaXMgY29udmVydGVkIHRvIHRoZSBzcGVjaWFsIHJlZ2lvbiBpbgorICAgICAqIHRoZSAwNnh4IHJhbmdlLiAgUmV0dXJuIHRoZSBudW1iZXIgb2YgbGFtYWxlZiBjaGFycyBmb3VuZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBub3JtYWxpemUoY2hhcltdIGRlc3QsIGludCBzdGFydCwgaW50IGxlbmd0aCkgeworICAgICAgICBpbnQgbGFjb3VudCA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSBzdGFydCwgZSA9IGkgKyBsZW5ndGg7IGkgPCBlOyArK2kpIHsKKyAgICAgICAgICAgIGNoYXIgY2ggPSBkZXN0W2ldOworICAgICAgICAgICAgaWYgKGNoID49ICdcdUZFNzAnICYmIGNoIDw9ICdcdUZFRkMnKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzTGFtQWxlZkNoYXIoY2gpKSB7CisgICAgICAgICAgICAgICAgICAgICsrbGFjb3VudDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVzdFtpXSA9IChjaGFyKWNvbnZlcnRGRXRvMDZbY2ggLSAnXHVGRTcwJ107CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxhY291bnQ7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBOYW1lICAgIDogc2hhcGVVbmljb2RlCisgICAgICogRnVuY3Rpb246IENvbnZlcnRzIGFuIEFyYWJpYyBVbmljb2RlIGJ1ZmZlciBpbiAwNnh4IFJhbmdlIGludG8gYSBzaGFwZWQKKyAgICAgKiAgICAgICAgICAgYXJhYmljIFVuaWNvZGUgYnVmZmVyIGluIEZFeHggUmFuZ2UKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBzaGFwZVVuaWNvZGUoY2hhcltdIGRlc3QsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiB0YXNoa2VlbCkgeworCisKKyAgICAgICAgbm9ybWFsaXplKGRlc3QsIHN0YXJ0LCBsZW5ndGgpOworCisgICAgICAgIC8vIHJlc29sdmUgdGhlIGxpbmsgYmV0d2VlbiB0aGUgY2hhcmFjdGVycy4KKyAgICAgICAgLy8gQXJhYmljIGNoYXJhY3RlcnMgaGF2ZSBmb3VyIGZvcm1zOiBJc29sYXRlZCwgSW5pdGlhbCwgTWVkaWFsIGFuZCBGaW5hbC4KKyAgICAgICAgLy8gVGFzaGtlZWwgY2hhcmFjdGVycyBoYXZlIHR3bywgaXNvbGF0ZWQgb3IgbWVkaWFsLCBhbmQgc29tZXRpbWVzIG9ubHkgaXNvbGF0ZWQuCisKKyAgICAgICAgYm9vbGVhbiBsYW1hbGVmX2ZvdW5kID0gZmFsc2U7CisgICAgICAgIGludCBpID0gc3RhcnQgKyBsZW5ndGggLSAxOworICAgICAgICBpbnQgY3VyckxpbmsgPSBnZXRMaW5rKGRlc3RbaV0pOworICAgICAgICBpbnQgbmV4dExpbmsgPSAwOworICAgICAgICBpbnQgcHJldkxpbmsgPSAwOworICAgICAgICBpbnQgbGFzdExpbmsgPSAwOworICAgICAgICBpbnQgcHJldlBvcyA9IGk7CisgICAgICAgIGludCBsYXN0UG9zID0gaTsKKyAgICAgICAgaW50IG54ID0gLTI7CisgICAgICAgIGludCBudyA9IDA7CisKKyAgICAgICAgd2hpbGUgKGkgPj0gMCkgeworICAgICAgICAgICAgLy8gSWYgaGlnaCBieXRlIG9mIGN1cnJMaW5rID4gMCB0aGVuIHRoZXJlIG1pZ2h0IGJlIG1vcmUgdGhhbiBvbmUgc2hhcGUKKyAgICAgICAgICAgIGlmICgoY3VyckxpbmsgJiAnXHVGRjAwJykgPiAwIHx8IGlzVGFzaGtlZWxDaGFyKGRlc3RbaV0pKSB7CisgICAgICAgICAgICAgICAgbncgPSBpIC0gMTsKKyAgICAgICAgICAgICAgICBueCA9IC0yOworICAgICAgICAgICAgICAgIHdoaWxlIChueCA8IDApIHsgLy8gd2UgbmVlZCB0byBrbm93IGFib3V0IG5leHQgY2hhcgorICAgICAgICAgICAgICAgICAgICBpZiAobncgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHRMaW5rID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG54ID0gSW50ZWdlci5NQVhfVkFMVUU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0TGluayA9IGdldExpbmsoZGVzdFtud10pOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuZXh0TGluayAmIElSUkVMRVZBTlQpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBueCA9IG53OworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLW53OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKCgoY3VyckxpbmsgJiBBTEVGVFlQRSkgPiAwKSAmJiAoKGxhc3RMaW5rICYgTEFNVFlQRSkgPiAwKSkgeworICAgICAgICAgICAgICAgICAgICBsYW1hbGVmX2ZvdW5kID0gdHJ1ZTsgCisgICAgICAgICAgICAgICAgICAgIGNoYXIgd0xhbWFsZWYgPSBjaGFuZ2VMYW1BbGVmKGRlc3RbaV0pOyAvLyBnZXQgZnJvbSAweDA2NUMtMHgwNjVmCisgICAgICAgICAgICAgICAgICAgIGlmICh3TGFtYWxlZiAhPSAnXHUwMDAwJykgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVwbGFjZSBhbGVmIGJ5IG1hcmtlciwgaXQgd2lsbCBiZSByZW1vdmVkIGxhdGVyCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0W2ldID0gJ1x1ZmZmZic7CisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0W2xhc3RQb3NdID0gd0xhbWFsZWY7CisgICAgICAgICAgICAgICAgICAgICAgICBpID0gbGFzdFBvczsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGxhc3RMaW5rID0gcHJldkxpbms7CisgICAgICAgICAgICAgICAgICAgIGN1cnJMaW5rID0gZ2V0TGluayh3TGFtYWxlZik7IC8vIHJlcXVpcmVzICdcdTAwMDAnLCB1bmZvcnR1bmF0ZWx5CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gZ2V0IHRoZSBwcm9wZXIgc2hhcGUgYWNjb3JkaW5nIHRvIGxpbmsgYWJpbGl0eSBvZiBuZWlnaGJvcnMKKyAgICAgICAgICAgICAgICAvLyBhbmQgb2YgY2hhcmFjdGVyOyBkZXBlbmRzIG9uIHRoZSBvcmRlciBvZiB0aGUgc2hhcGVzCisgICAgICAgICAgICAgICAgLy8gKGlzb2xhdGVkLCBpbml0aWFsLCBtaWRkbGUsIGZpbmFsKSBpbiB0aGUgY29tcGF0aWJpbGl0eSBhcmVhCisKKyAgICAgICAgICAgICAgICBpbnQgZmxhZyA9IHNwZWNpYWxDaGFyKGRlc3RbaV0pOworCisgICAgICAgICAgICAgICAgaW50IHNoYXBlID0gc2hhcGVUYWJsZVtuZXh0TGluayAmIExJTktfTUFTS10KKyAgICAgICAgICAgICAgICAgICAgW2xhc3RMaW5rICYgTElOS19NQVNLXQorICAgICAgICAgICAgICAgICAgICBbY3VyckxpbmsgJiBMSU5LX01BU0tdOworCisgICAgICAgICAgICAgICAgaWYgKGZsYWcgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICBzaGFwZSAmPSAweDE7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmbGFnID09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRhc2hrZWVsICYmCisgICAgICAgICAgICAgICAgICAgICAgICAoKGxhc3RMaW5rICYgTElOS0wpICE9IDApICYmIAorICAgICAgICAgICAgICAgICAgICAgICAgKChuZXh0TGluayAmIExJTktSKSAhPSAwKSAmJiAKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlc3RbaV0gIT0gJ1x1MDY0QycgJiYgCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0W2ldICE9ICdcdTA2NEQnICYmCisgICAgICAgICAgICAgICAgICAgICAgICAhKChuZXh0TGluayAmIEFMRUZUWVBFKSA9PSBBTEVGVFlQRSAmJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGxhc3RMaW5rICYgTEFNVFlQRSkgPT0gTEFNVFlQRSkpIHsKKwkJCisgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IDE7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaGFwZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoZmxhZyA9PSAyKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0YXNoa2VlbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdFtpXSA9IChjaGFyKSgnXHVGRTcwJyArIGlycmVsZXZhbnRQb3NbZGVzdFtpXSAtICdcdTA2NEInXSArIHNoYXBlKTsKKyAgICAgICAgICAgICAgICAgICAgfSAvLyBlbHNlIGxlYXZlIHRhc2hrZWVsIGFsb25lICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBkZXN0W2ldID0gKGNoYXIpKCdcdUZFNzAnICsgKGN1cnJMaW5rID4+IDgpICsgc2hhcGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gbW92ZSBvbmUgbm90Y2ggZm9yd2FyZAorICAgICAgICAgICAgaWYgKChjdXJyTGluayAmIElSUkVMRVZBTlQpID09IDApIHsKKyAgICAgICAgICAgICAgICBwcmV2TGluayA9IGxhc3RMaW5rOworICAgICAgICAgICAgICAgIGxhc3RMaW5rID0gY3Vyckxpbms7CisgICAgICAgICAgICAgICAgcHJldlBvcyA9IGxhc3RQb3M7CisgICAgICAgICAgICAgICAgbGFzdFBvcyA9IGk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC0taTsKKyAgICAgICAgICAgIGlmIChpID09IG54KSB7CisgICAgICAgICAgICAgICAgY3VyckxpbmsgPSBuZXh0TGluazsKKyAgICAgICAgICAgICAgICBueCA9IC0yOworICAgICAgICAgICAgfSBlbHNlIGlmIChpICE9IC0xKSB7CisgICAgICAgICAgICAgICAgY3VyckxpbmsgPSBnZXRMaW5rKGRlc3RbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgd2UgZm91bmQgYSBsYW0vYWxlZiBwYWlyIGluIHRoZSBidWZmZXIgCisgICAgICAgIC8vIGNhbGwgcmVtb3ZlTGFtQWxlZlNwYWNlcyB0byByZW1vdmUgdGhlIHNwYWNlcyB0aGF0IHdlcmUgYWRkZWQKKworICAgICAgICBpZiAobGFtYWxlZl9mb3VuZCkgeworICAgICAgICAgICAgZGVzdFNpemUgPSByZW1vdmVMYW1BbGVmU3BhY2VzKGRlc3QsIHN0YXJ0LCBsZW5ndGgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVzdFNpemUgPSBsZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBkZXN0U2l6ZTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIE5hbWUgICAgOiBkZVNoYXBlVW5pY29kZQorICAgICAqIEZ1bmN0aW9uOiBDb252ZXJ0cyBhbiBBcmFiaWMgVW5pY29kZSBidWZmZXIgaW4gRkV4eCBSYW5nZSBpbnRvIHVuc2hhcGVkCisgICAgICogICAgICAgICAgIGFyYWJpYyBVbmljb2RlIGJ1ZmZlciBpbiAwNnh4IFJhbmdlCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZGVTaGFwZVVuaWNvZGUoY2hhcltdIGRlc3QsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0U2l6ZSkgdGhyb3dzIEFyYWJpY1NoYXBpbmdFeGNlcHRpb24geworCisgICAgICAgIGludCBsYW1hbGVmX2NvdW50ID0gbm9ybWFsaXplKGRlc3QsIHN0YXJ0LCBsZW5ndGgpOworCisgICAgICAgIC8vIElmIHRoZXJlIHdhcyBhIGxhbWFsZWYgaW4gdGhlIGJ1ZmZlciBjYWxsIGV4cGFuZExhbUFsZWYKKyAgICAgICAgaWYgKGxhbWFsZWZfY291bnQgIT0gMCkgeworICAgICAgICAgICAgLy8gbmVlZCB0byBhZGp1c3QgZGVzdCB0byBmaXQgZXhwYW5kZWQgYnVmZmVyLi4uICEhIQorICAgICAgICAgICAgZGVzdFNpemUgPSBleHBhbmRMYW1BbGVmKGRlc3QsIHN0YXJ0LCBsZW5ndGgsIGxhbWFsZWZfY291bnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVzdFNpemUgPSBsZW5ndGg7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZGVzdFNpemU7CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgaW50ZXJuYWxTaGFwZShjaGFyW10gc291cmNlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb3VyY2VTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb3VyY2VMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyW10gZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0U3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzdFNpemUpIHRocm93cyBBcmFiaWNTaGFwaW5nRXhjZXB0aW9uIHsKKworICAgICAgICBpZiAoc291cmNlTGVuZ3RoID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRlc3RTaXplID09IDApIHsKKyAgICAgICAgICAgIGlmICgoKG9wdGlvbnMgJiBMRVRURVJTX01BU0spICE9IExFVFRFUlNfTk9PUCkgJiYKKyAgICAgICAgICAgICAgICAoKG9wdGlvbnMgJiBMRU5HVEhfTUFTSykgPT0gTEVOR1RIX0dST1dfU0hSSU5LKSkgeworCQorICAgICAgICAgICAgICAgIHJldHVybiBjYWxjdWxhdGVTaXplKHNvdXJjZSwgc291cmNlU3RhcnQsIHNvdXJjZUxlbmd0aCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2VMZW5ndGg7IC8vIGJ5IGRlZmluaXRpb24KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIGFsd2F5cyB1c2UgdGVtcCBidWZmZXIKKyAgICAgICAgY2hhcltdIHRlbXAgPSBuZXcgY2hhcltzb3VyY2VMZW5ndGggKiAyXTsgLy8gYWxsIGxhbWFsZWZzIHJlcXVpcmluZyBleHBhbnNpb24KKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShzb3VyY2UsIHNvdXJjZVN0YXJ0LCB0ZW1wLCAwLCBzb3VyY2VMZW5ndGgpOworCisgICAgICAgIGlmIChpc0xvZ2ljYWwpIHsKKyAgICAgICAgICAgIGludmVydEJ1ZmZlcih0ZW1wLCAwLCBzb3VyY2VMZW5ndGgpOworICAgICAgICB9CisKKyAgICAgICAgaW50IG91dHB1dFNpemUgPSBzb3VyY2VMZW5ndGg7CisKKyAgICAgICAgc3dpdGNoIChvcHRpb25zICYgTEVUVEVSU19NQVNLKSB7CisgICAgICAgIGNhc2UgTEVUVEVSU19TSEFQRV9FWENFUFRfVEFTSEtFRUw6CisgICAgICAgIGNhc2UgTEVUVEVSU19TSEFQRToKKyAgICAgICAgICAgIG91dHB1dFNpemUgPSBzaGFwZVVuaWNvZGUodGVtcCwgMCwgc291cmNlTGVuZ3RoLCBkZXN0U2l6ZSwgdHJ1ZSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIExFVFRFUlNfVU5TSEFQRToKKyAgICAgICAgICAgIG91dHB1dFNpemUgPSBkZVNoYXBlVW5pY29kZSh0ZW1wLCAwLCBzb3VyY2VMZW5ndGgsIGRlc3RTaXplKTsKKyAgICAgICAgICAgIGJyZWFrOyAKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgaWYgKG91dHB1dFNpemUgPiBkZXN0U2l6ZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEFyYWJpY1NoYXBpbmdFeGNlcHRpb24oIm5vdCBlbm91Z2ggcm9vbSBmb3IgcmVzdWx0IGRhdGEiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgob3B0aW9ucyAmIERJR0lUU19NQVNLKSAhPSBESUdJVFNfTk9PUCkgeworICAgICAgICAgICAgY2hhciBkaWdpdEJhc2UgPSAnXHUwMDMwJzsgLy8gRXVyb3BlYW4gZGlnaXRzCisgICAgICAgICAgICBzd2l0Y2ggKG9wdGlvbnMgJiBESUdJVF9UWVBFX01BU0spIHsKKyAgICAgICAgICAgIGNhc2UgRElHSVRfVFlQRV9BTjoKKyAgICAgICAgICAgICAgICBkaWdpdEJhc2UgPSAnXHUwNjYwJzsgIC8vIEFyYWJpYy1JbmRpYyBkaWdpdHMKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBESUdJVF9UWVBFX0FOX0VYVEVOREVEOgorICAgICAgICAgICAgICAgIGRpZ2l0QmFzZSA9ICdcdTA2ZjAnOyAgLy8gRWFzdGVybiBBcmFiaWMtSW5kaWMgZGlnaXRzIChQZXJzaWFuIGFuZCBVcmR1KQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKG9wdGlvbnMgJiBESUdJVFNfTUFTSykgeworICAgICAgICAgICAgY2FzZSBESUdJVFNfRU4yQU46CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpbnQgZGlnaXREZWx0YSA9IGRpZ2l0QmFzZSAtICdcdTAwMzAnOworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG91dHB1dFNpemU7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBjaCA9IHRlbXBbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPD0gJ1x1MDAzOScgJiYgY2ggPj0gJ1x1MDAzMCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wW2ldICs9IGRpZ2l0RGVsdGE7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgRElHSVRTX0FOMkVOOgorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhciBkaWdpdFRvcCA9IChjaGFyKShkaWdpdEJhc2UgKyA5KTsKKyAgICAgICAgICAgICAgICAgICAgaW50IGRpZ2l0RGVsdGEgPSAnXHUwMDMwJyAtIGRpZ2l0QmFzZTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvdXRwdXRTaXplOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgY2ggPSB0ZW1wW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoIDw9IGRpZ2l0VG9wICYmIGNoID49IGRpZ2l0QmFzZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBbaV0gKz0gZGlnaXREZWx0YTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBESUdJVFNfRU4yQU5fSU5JVF9MUjoKKyAgICAgICAgICAgICAgICBzaGFwZVRvQXJhYmljRGlnaXRzV2l0aENvbnRleHQodGVtcCwgMCwgb3V0cHV0U2l6ZSwgZGlnaXRCYXNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgRElHSVRTX0VOMkFOX0lOSVRfQUw6CisgICAgICAgICAgICAgICAgc2hhcGVUb0FyYWJpY0RpZ2l0c1dpdGhDb250ZXh0KHRlbXAsIDAsIG91dHB1dFNpemUsIGRpZ2l0QmFzZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXNMb2dpY2FsKSB7CisgICAgICAgICAgICBpbnZlcnRCdWZmZXIodGVtcCwgMCwgb3V0cHV0U2l6ZSk7CisgICAgICAgIH0KKyAgICAgIAorICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHRlbXAsIDAsIGRlc3QsIGRlc3RTdGFydCwgb3V0cHV0U2l6ZSk7CisgICAgICAKKyAgICAgICAgcmV0dXJuIG91dHB1dFNpemU7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9BcmFiaWNTaGFwaW5nRXhjZXB0aW9uLmphdmEgYi9zcmMvY29tL2libS90ZXh0L0FyYWJpY1NoYXBpbmdFeGNlcHRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yMzZjYTFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9BcmFiaWNTaGFwaW5nRXhjZXB0aW9uLmphdmEKQEAgLTAsMCArMSwxNyBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBDb3B5cmlnaHQgKEMpIDIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS50ZXh0OworCisvKioKKyAqIFRocm93biBieSBBcmFiaWNTaGFwaW5nIHdoZW4gdGhlcmUgaXMgYSBzaGFwaW5nIGVycm9yLgorICovCitwdWJsaWMgZmluYWwgY2xhc3MgQXJhYmljU2hhcGluZ0V4Y2VwdGlvbiBleHRlbmRzIEV4Y2VwdGlvbiB7CisgICAgQXJhYmljU2hhcGluZ0V4Y2VwdGlvbihTdHJpbmcgbWVzc2FnZSkgeworICAgICAgICBzdXBlcihtZXNzYWdlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L0JyZWFrRGljdGlvbmFyeS5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9CcmVha0RpY3Rpb25hcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lZjRmM2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9CcmVha0RpY3Rpb25hcnkuamF2YQpAQCAtMCwwICsxLDMwNyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9BdHRpYy9CcmVha0RpY3Rpb25hcnkuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wOS8yNSAyMTozMzo0MyAkIAorICogJFJldmlzaW9uOiAxLjYgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udGV4dDsKKworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5EYXRhSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW1Xcml0ZXI7CitpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKK2ltcG9ydCBqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW07CisKK2ltcG9ydCBjb20uaWJtLnV0aWwuQ29tcGFjdEJ5dGVBcnJheTsKKworLyoqCisgKiBUaGlzIGlzIHRoZSBjbGFzcyB0aGF0IHJlcHJlc2VudHMgdGhlIGxpc3Qgb2Yga25vd24gd29yZHMgdXNlZCBieQorICogRGljdGlvbmFyeUJhc2VkQnJlYWtJdGVyYXRvci4gIFRoZSBjb25jZXB0dWFsIGRhdGEgc3RydWN0dXJlIHVzZWQKKyAqIGhlcmUgaXMgYSB0cmllOiB0aGVyZSBpcyBhIG5vZGUgaGFuZ2luZyBvZmYgdGhlIHJvb3Qgbm9kZSBmb3IgZXZlcnkKKyAqIGxldHRlciB0aGF0IGNhbiBzdGFydCBhIHdvcmQuICBFYWNoIG9mIHRoZXNlIG5vZGVzIGhhcyBhIG5vZGUgaGFuZ2luZworICogb2ZmIG9mIGl0IGZvciBldmVyeSBsZXR0ZXIgdGhhdCBjYW4gYmUgdGhlIHNlY29uZCBsZXR0ZXIgb2YgYSB3b3JkCisgKiBpZiB0aGlzIG5vZGUgaXMgdGhlIGZpcnN0IGxldHRlciwgYW5kIHNvIG9uLiAgVGhlIHRyaWUgaXMgcmVwcmVzZW50ZWQKKyAqIGFzIGEgdHdvLWRpbWVuc2lvbmFsIGFycmF5IHRoYXQgY2FuIGJlIHRyZWF0ZWQgYXMgYSB0YWJsZSBvZiBzdGF0ZQorICogdHJhbnNpdGlvbnMuICBJbmRleGVzIGFyZSB1c2VkIHRvIGNvbXByZXNzIHRoaXMgYXJyYXksIHRha2luZworICogYWR2YW50YWdlIG9mIHRoZSBmYWN0IHRoYXQgdGhpcyBhcnJheSB3aWxsIGFsd2F5cyBiZSB2ZXJ5IHNwYXJzZS4KKyAqLworcHVibGljIGNsYXNzIEJyZWFrRGljdGlvbmFyeSB7CisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyB0ZXN0aW5nIGFuZCBkZWJ1Z2dpbmcKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdzW10pCisgICAgICAgICAgICB0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uLCBVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyBmaWxlbmFtZSA9IGFyZ3NbMF07CisKKyAgICAgICAgQnJlYWtEaWN0aW9uYXJ5IGRpY3Rpb25hcnkgPSBuZXcgQnJlYWtEaWN0aW9uYXJ5KG5ldyBGaWxlSW5wdXRTdHJlYW0oZmlsZW5hbWUpKTsKKworICAgICAgICBQcmludFdyaXRlciBvdXQgPSBudWxsOworICAgICAgICAKKyAgICAgICAgaWYoYXJncy5sZW5ndGggPj0gMikgeworICAgICAgICAgICAgb3V0ID0gbmV3IFByaW50V3JpdGVyKG5ldyBPdXRwdXRTdHJlYW1Xcml0ZXIobmV3IEZpbGVPdXRwdXRTdHJlYW0oYXJnc1sxXSksICJVbmljb2RlTGl0dGxlIikpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBkaWN0aW9uYXJ5LnByaW50V29yZExpc3QoIiIsIDAsIG91dCk7CisgICAgICAgIAorICAgICAgICBpZiAob3V0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIG91dC5jbG9zZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcHJpbnRXb3JkTGlzdChTdHJpbmcgcGFydGlhbFdvcmQsIGludCBzdGF0ZSwgUHJpbnRXcml0ZXIgb3V0KQorICAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKHN0YXRlID09IDB4RkZGRikgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHBhcnRpYWxXb3JkKTsKKyAgICAgICAgICAgIGlmIChvdXQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG91dC5wcmludGxuKHBhcnRpYWxXb3JkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ29sczsgaSsrKSB7CisgICAgICAgICAgICAgICAgaW50IG5ld1N0YXRlID0gKGF0KHN0YXRlLCBpKSkgJiAweEZGRkY7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKG5ld1N0YXRlICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhciBuZXdDaGFyID0gcmV2ZXJzZUNvbHVtbk1hcFtpXTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG5ld1BhcnRpYWxXb3JkID0gcGFydGlhbFdvcmQ7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAobmV3Q2hhciAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdQYXJ0aWFsV29yZCArPSBuZXdDaGFyOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBwcmludFdvcmRMaXN0KG5ld1BhcnRpYWxXb3JkLCBuZXdTdGF0ZSwgb3V0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBIG1hcCB1c2VkIHRvIGdvIGZyb20gY29sdW1uIG51bWJlcnMgdG8gY2hhcmFjdGVycy4gIFVzZWQgb25seQorICAgICAqIGZvciBkZWJ1Z2dpbmcgcmlnaHQgbm93LgorICAgICAqLworICAgIHByaXZhdGUgY2hhcltdIHJldmVyc2VDb2x1bW5NYXAgPSBudWxsOworCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBkYXRhIG1lbWJlcnMKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgLyoqCisgICAgICogTWFwcyBmcm9tIGNoYXJhY3RlcnMgdG8gY29sdW1uIG51bWJlcnMuICBUaGUgbWFpbiB1c2Ugb2YgdGhpcyBpcyB0bworICAgICAqIGF2b2lkIG1ha2luZyByb29tIGluIHRoZSBhcnJheSBmb3IgZW1wdHkgY29sdW1ucy4KKyAgICAgKi8KKyAgICBwcml2YXRlIENvbXBhY3RCeXRlQXJyYXkgY29sdW1uTWFwID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIFRoZSBudW1iZXIgb2YgYWN0dWFsIGNvbHVtbnMgaW4gdGhlIHRhYmxlCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbnVtQ29sczsKKworICAgIC8qKgorICAgICAqIENvbHVtbnMgYXJlIG9yZ2FuaXplZCBpbnRvIGdyb3VwcyBvZiAzMi4gIFRoaXMgc2F5cyBob3cgbWFueQorICAgICAqIGNvbHVtbiBncm91cHMuICAoV2UgY291bGQgY2FsY3VsYXRlIHRoaXMsIGJ1dCB3ZSBzdG9yZSB0aGUKKyAgICAgKiB2YWx1ZSB0byBhdm9pZCBoYXZpbmcgdG8gcmVwZWF0ZWRseSBjYWxjdWxhdGUgaXQuKQorICAgICAqLworICAgIHByaXZhdGUgaW50IG51bUNvbEdyb3VwczsKKworICAgIC8qKgorICAgICAqIFRoZSBhY3R1YWwgY29tcHJlc3NlZCBzdGF0ZSB0YWJsZS4gIEVhY2ggY29uY2VwdHVhbCByb3cgcmVwcmVzZW50cworICAgICAqIGEgc3RhdGUsIGFuZCB0aGUgY2VsbHMgaW4gaXQgY29udGFpbiB0aGUgcm93IG51bWJlcnMgb2YgdGhlIHN0YXRlcworICAgICAqIHRvIHRyYW5zaXRpb24gdG8gZm9yIGVhY2ggcG9zc2libGUgbGV0dGVyLiAgMCBpcyB1c2VkIHRvIGluZGljYXRlCisgICAgICogYW4gaWxsZWdhbCBjb21iaW5hdGlvbiBvZiBsZXR0ZXJzIChpLmUuLCB0aGUgZXJyb3Igc3RhdGUpLiAgVGhlCisgICAgICogdGFibGUgaXMgY29tcHJlc3NlZCBieSBlbGltaW5hdGluZyBhbGwgdGhlIHVucG9wdWxhdGVkIChpLmUuLCB6ZXJvKQorICAgICAqIGNlbGxzLiAgTXVsdGlwbGUgY29uY2VwdHVhbCByb3dzIGNhbiB0aGVuIGJlIGRvdWJsZWQgdXAgaW4gYSBzaW5nbGUKKyAgICAgKiBwaHlzaWNhbCByb3cgYnkgc2xpZGluZyB0aGVtIHVwIGFuZCBwb3NzaWJseSBzaGlmdGluZyB0aGVtIHRvIG9uZQorICAgICAqIHNpZGUgb3IgdGhlIG90aGVyIHNvIHRoZSBwb3B1bGF0ZWQgY2VsbHMgZG9uJ3QgY29sbGlkZS4gIEluZGV4ZXMKKyAgICAgKiBhcmUgdXNlZCB0byBpZGVudGlmeSB1bnBvcHVsYXRlZCBjZWxscyBhbmQgdG8gbG9jYXRlIHBvcHVsYXRlZCBjZWxscy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHNob3J0W10gdGFibGUgPSBudWxsOworCisgICAgLyoqCisgICAgICogVGhpcyBpbmRleCBtYXBzIGxvZ2ljYWwgcm93IG51bWJlcnMgdG8gcGh5c2ljYWwgcm93IG51bWJlcnMKKyAgICAgKi8KKyAgICBwcml2YXRlIHNob3J0W10gcm93SW5kZXggPSBudWxsOworCisgICAgLyoqCisgICAgICogQSBiaXRtYXAgaXMgdXNlZCB0byB0ZWxsIHdoaWNoIGNlbGxzIGluIHRoZSBjb21jZXB0dWFsIHRhYmxlIGFyZQorICAgICAqIHBvcHVsYXRlZC4gIFRoaXMgYXJyYXkgY29udGFpbnMgYWxsIHRoZSB1bmlxdWUgYml0IGNvbWJpbmF0aW9ucworICAgICAqIGluIHRoYXQgYml0bWFwLiAgSWYgdGhlIHRhYmxlIGlzIG1vcmUgdGhhbiAzMiBjb2x1bW5zIHdpZGUsCisgICAgICogc3VjY2Vzc2l2ZSBlbnRyaWVzIGluIHRoaXMgYXJyYXkgYXJlIHVzZWQgZm9yIGEgc2luZ2xlIHJvdy4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludFtdIHJvd0luZGV4RmxhZ3MgPSBudWxsOworCisgICAgLyoqCisgICAgICogVGhpcyBpbmRleCBtYXBzIGZyb20gYSBsb2dpY2FsIHJvdyBudW1iZXIgaW50byB0aGUgYml0bWFwIHRhYmxlIGFib3ZlLgorICAgICAqIChUaGlzIGtlZXBzIHVzIGZyb20gc3RvcmluZyBkdXBsaWNhdGUgYml0bWFwIGNvbWJpbmF0aW9ucy4pICBTaW5jZSB0aGVyZQorICAgICAqIGFyZSBhIGxvdCBvZiByb3dzIHdpdGggb25seSBvbmUgcG9wdWxhdGVkIGNlbGwsIGluc3RlYWQgb2Ygd2FzdGluZyBzcGFjZQorICAgICAqIGluIHRoZSBiaXRtYXAgdGFibGUsIHdlIGp1c3Qgc3RvcmUgYSBuZWdhdGl2ZSBudW1iZXIgaW4gdGhpcyBpbmRleCBmb3IKKyAgICAgKiByb3dzIHdpdGggb25lIHBvcHVsYXRlZCBjZWxsLiAgVGhlIGFic29sdXRlIHZhbHVlIG9mIHRoYXQgbnVtYmVyIGlzCisgICAgICogdGhlIGNvbHVtbiBudW1iZXIgb2YgdGhlIHBvcHVsYXRlZCBjZWxsLgorICAgICAqLworICAgIHByaXZhdGUgc2hvcnRbXSByb3dJbmRleEZsYWdzSW5kZXggPSBudWxsOworCisgICAgLyoqCisgICAgICogRm9yIGVhY2ggbG9naWNhbCByb3csIHRoaXMgaW5kZXggY29udGFpbnMgYSBjb25zdGFudCB0aGF0IGlzIGFkZGVkIHRvCisgICAgICogdGhlIGxvZ2ljYWwgY29sdW1uIG51bWJlciB0byBnZXQgdGhlIHBoeXNpY2FsIGNvbHVtbiBudW1iZXIKKyAgICAgKi8KKyAgICBwcml2YXRlIGJ5dGVbXSByb3dJbmRleFNoaWZ0cyA9IG51bGw7CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIGRlc2VyaWFsaXphdGlvbgorICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICBwdWJsaWMgQnJlYWtEaWN0aW9uYXJ5KElucHV0U3RyZWFtIGRpY3Rpb25hcnlTdHJlYW0pIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIHJlYWREaWN0aW9uYXJ5RmlsZShuZXcgRGF0YUlucHV0U3RyZWFtKGRpY3Rpb25hcnlTdHJlYW0pKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZWFkRGljdGlvbmFyeUZpbGUoRGF0YUlucHV0U3RyZWFtIGluKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBpbnQgbDsKKworICAgICAgICAvLyByZWFkIGluIHRoZSB2ZXJzaW9uIG51bWJlciAocmlnaHQgbm93IHdlIGp1c3QgaWdub3JlIGl0KQorICAgICAgICBpbi5yZWFkSW50KCk7CisgICAgICAgIAorICAgICAgICAvLyByZWFkIGluIHRoZSBjb2x1bW4gbWFwICh0aGlzIGlzIHNlcmlhbGl6ZWQgaW4gaXRzIGludGVybmFsIGZvcm06CisgICAgICAgIC8vIGFuIGluZGV4IGFycmF5IGZvbGxvd2VkIGJ5IGEgZGF0YSBhcnJheSkKKyAgICAgICAgbCA9IGluLnJlYWRJbnQoKTsKKyAgICAgICAgY2hhcltdIHRlbXAgPSBuZXcgY2hhcltsXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZW1wLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgdGVtcFtpXSA9IChjaGFyKWluLnJlYWRTaG9ydCgpOworICAgICAgICBsID0gaW4ucmVhZEludCgpOworICAgICAgICBieXRlW10gdGVtcDIgPSBuZXcgYnl0ZVtsXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZW1wMi5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHRlbXAyW2ldID0gaW4ucmVhZEJ5dGUoKTsKKyAgICAgICAgY29sdW1uTWFwID0gbmV3IENvbXBhY3RCeXRlQXJyYXkodGVtcCwgdGVtcDIpOworCisgICAgICAgIC8vIHJlYWQgaW4gbnVtQ29scyBhbmQgbnVtQ29sR3JvdXBzCisgICAgICAgIG51bUNvbHMgPSBpbi5yZWFkSW50KCk7CisgICAgICAgIG51bUNvbEdyb3VwcyA9IGluLnJlYWRJbnQoKTsKKworICAgICAgICAvLyByZWFkIGluIHRoZSByb3ctbnVtYmVyIGluZGV4CisgICAgICAgIGwgPSBpbi5yZWFkSW50KCk7CisgICAgICAgIHJvd0luZGV4ID0gbmV3IHNob3J0W2xdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd0luZGV4Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgcm93SW5kZXhbaV0gPSBpbi5yZWFkU2hvcnQoKTsKKworICAgICAgICAvLyBsb2FkIGluIHRoZSBwb3B1bGF0ZWQtY2VsbHMgYml0bWFwOiBpbmRleCBmaXJzdCwgdGhlbiBiaXRtYXAgbGlzdAorICAgICAgICBsID0gaW4ucmVhZEludCgpOworICAgICAgICByb3dJbmRleEZsYWdzSW5kZXggPSBuZXcgc2hvcnRbbF07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93SW5kZXhGbGFnc0luZGV4Lmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgcm93SW5kZXhGbGFnc0luZGV4W2ldID0gaW4ucmVhZFNob3J0KCk7CisgICAgICAgIGwgPSBpbi5yZWFkSW50KCk7CisgICAgICAgIHJvd0luZGV4RmxhZ3MgPSBuZXcgaW50W2xdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd0luZGV4RmxhZ3MubGVuZ3RoOyBpKyspCisgICAgICAgICAgICByb3dJbmRleEZsYWdzW2ldID0gaW4ucmVhZEludCgpOworCisgICAgICAgIC8vIGxvYWQgaW4gdGhlIHJvdy1zaGlmdCBpbmRleAorICAgICAgICBsID0gaW4ucmVhZEludCgpOworICAgICAgICByb3dJbmRleFNoaWZ0cyA9IG5ldyBieXRlW2xdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd0luZGV4U2hpZnRzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgcm93SW5kZXhTaGlmdHNbaV0gPSBpbi5yZWFkQnl0ZSgpOworCisgICAgICAgIC8vIGZpbmFsbHksIGxvYWQgaW4gdGhlIGFjdHVhbCBzdGF0ZSB0YWJsZQorICAgICAgICBsID0gaW4ucmVhZEludCgpOworICAgICAgICB0YWJsZSA9IG5ldyBzaG9ydFtsXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0YWJsZS5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHRhYmxlW2ldID0gaW4ucmVhZFNob3J0KCk7CisKKyAgICAgICAgLy8gdGhpcyBkYXRhIHN0cnVjdHVyZSBpcyBvbmx5IG5lY2Vzc2FyeSBmb3IgdGVzdGluZyBhbmQgZGVidWdnaW5nIHB1cnBvc2VzCisgICAgICAgIHJldmVyc2VDb2x1bW5NYXAgPSBuZXcgY2hhcltudW1Db2xzXTsKKyAgICAgICAgZm9yIChjaGFyIGMgPSAwOyBjIDwgMHhmZmZmOyBjKyspIHsKKyAgICAgICAgICAgIGludCBjb2wgPSBjb2x1bW5NYXAuZWxlbWVudEF0KGMpOworICAgICAgICAgICAgaWYgKGNvbCAhPSAwKSB7CisgICAgICAgICAgICAgICByZXZlcnNlQ29sdW1uTWFwW2NvbF0gPSBjOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gY2xvc2UgdGhlIHN0cmVhbQorICAgICAgICBpbi5jbG9zZSgpOworICAgIH0KKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gYWNjZXNzIHRvIHRoZSB3b3JkcworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBVc2VzIHRoZSBjb2x1bW4gbWFwIHRvIG1hcCB0aGUgY2hhcmFjdGVyIHRvIGEgY29sdW1uIG51bWJlciwgdGhlbgorICAgICAqIHBhc3NlcyB0aGUgcm93IGFuZCBjb2x1bW4gbnVtYmVyIHRvIHRoZSBvdGhlciB2ZXJzaW9uIG9mIGF0KCkKKyAgICAgKiBAcGFyYW0gcm93IFRoZSBjdXJyZW50IHN0YXRlCisgICAgICogQHBhcmFtIGNoIFRoZSBjaGFyYWN0ZXIgd2hvc2UgY29sdW1uIHdlJ3JlIGludGVyZXN0ZWQgaW4KKyAgICAgKiBAcmV0dXJuIFRoZSBuZXcgc3RhdGUgdG8gdHJhbnNpdGlvbiB0bworICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzaG9ydCBhdChpbnQgcm93LCBjaGFyIGNoKSB7CisgICAgICAgIGludCBjb2wgPSBjb2x1bW5NYXAuZWxlbWVudEF0KGNoKTsKKyAgICAgICAgcmV0dXJuIGF0KHJvdywgY29sKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBpbiB0aGUgY2VsbCB3aXRoIHRoZSBzcGVjaWZpZWQgKGxvZ2ljYWwpIHJvdyBhbmQKKyAgICAgKiBjb2x1bW4gbnVtYmVycy4gIEluIERpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3IsIHRoZSByb3cgbnVtYmVyIGlzCisgICAgICogYSBzdGF0ZSBudW1iZXIsIHRoZSBjb2x1bW4gbnVtYmVyIGlzIGFuIGlucHV0LCBhbmQgdGhlIHJldHVybiB2YWx1ZQorICAgICAqIGlzIHRoZSByb3cgbnVtYmVyIG9mIHRoZSBuZXcgc3RhdGUgdG8gdHJhbnNpdGlvbiB0by4gICgwIGlzIHRoZQorICAgICAqICJlcnJvciIgc3RhdGUsIGFuZCAtMSBpcyB0aGUgImVuZCBvZiB3b3JkIiBzdGF0ZSBpbiBhIGRpY3Rpb25hcnkpCisgICAgICogQHBhcmFtIHJvdyBUaGUgcm93IG51bWJlciBvZiB0aGUgY3VycmVudCBzdGF0ZQorICAgICAqIEBwYXJhbSBjb2wgVGhlIGNvbHVtbiBudW1iZXIgb2YgdGhlIGlucHV0IGNoYXJhY3RlciAoMCBtZWFucyAibm90IGEKKyAgICAgKiBkaWN0aW9uYXJ5IGNoYXJhY3RlciIpCisgICAgICogQHJldHVybiBUaGUgcm93IG51bWJlciBvZiB0aGUgbmV3IHN0YXRlIHRvIHRyYW5zaXRpb24gdG8KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc2hvcnQgYXQoaW50IHJvdywgaW50IGNvbCkgeworICAgICAgICBpZiAoY2VsbElzUG9wdWxhdGVkKHJvdywgY29sKSkgeworICAgICAgICAgICAgLy8gd2UgbWFwIGZyb20gbG9naWNhbCB0byBwaHlzaWNhbCByb3cgbnVtYmVyIGJ5IGxvb2tpbmcgdXAgdGhlCisgICAgICAgICAgICAvLyBtYXBwaW5nIGluIHJvd0luZGV4OyB3ZSBtYXAgZnJvbSBsb2dpY2FsIGNvbHVtbiBudW1iZXIgdG8KKyAgICAgICAgICAgIC8vIHBoeXNpY2FsIGNvbHVtbiBudW1iZXIgYnkgbG9va2luZyB1cCBhIHNoaWZ0IHZhbHVlIGZvciB0aGlzCisgICAgICAgICAgICAvLyBsb2dpY2FsIHJvdyBhbmQgb2Zmc2V0dGluZyB0aGUgbG9naWNhbCBjb2x1bW4gbnVtYmVyIGJ5CisgICAgICAgICAgICAvLyB0aGUgc2hpZnQgYW1vdW50LiAgVGhlbiB3ZSBjYW4gdXNlIGludGVybmFsQXQoKSB0byBhY3R1YWxseQorICAgICAgICAgICAgLy8gZ2V0IHRoZSB2YWx1ZSBvdXQgb2YgdGhlIHRhYmxlLgorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsQXQocm93SW5kZXhbcm93XSwgY29sICsgcm93SW5kZXhTaGlmdHNbcm93XSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEdpdmVuIChsb2dpY2FsKSByb3cgYW5kIGNvbHVtbiBudW1iZXJzLCByZXR1cm5zIHRydWUgaWYgdGhlCisgICAgICogY2VsbCBpbiB0aGF0IHBvc2l0aW9uIGlzIHBvcHVsYXRlZAorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBjZWxsSXNQb3B1bGF0ZWQoaW50IHJvdywgaW50IGNvbCkgeworICAgICAgICAvLyBsb29rIHVwIHRoZSBlbnRyeSBpbiB0aGUgYml0bWFwIGluZGV4IGZvciB0aGUgc3BlY2lmaWVkIHJvdy4KKyAgICAgICAgLy8gSWYgaXQncyBhIG5lZ2F0aXZlIG51bWJlciwgaXQncyB0aGUgY29sdW1uIG51bWJlciBvZiB0aGUgb25seQorICAgICAgICAvLyBwb3B1bGF0ZWQgY2VsbCBpbiB0aGUgcm93CisgICAgICAgIGlmIChyb3dJbmRleEZsYWdzSW5kZXhbcm93XSA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBjb2wgPT0gLXJvd0luZGV4RmxhZ3NJbmRleFtyb3ddOworICAgICAgICB9CisKKyAgICAgICAgLy8gaWYgaXQncyBhIHBvc2l0aXZlIG51bWJlciwgaXQncyB0aGUgb2Zmc2V0IG9mIGFuIGVudHJ5IGluIHRoZSBiaXRtYXAKKyAgICAgICAgLy8gbGlzdC4gIElmIHRoZSB0YWJsZSBpcyBtb3JlIHRoYW4gMzIgY29sdW1ucyB3aWRlLCB0aGUgYml0bWFwIGlzIHN0b3JlZAorICAgICAgICAvLyBzdWNjZXNzaXZlIGVudHJpZXMgaW4gdGhlIGJpdG1hcCBsaXN0LCBzbyB3ZSBoYXZlIHRvIGRpdmlkZSB0aGUgY29sdW1uCisgICAgICAgIC8vIG51bWJlciBieSAzMiBhbmQgb2Zmc2V0IHRoZSBudW1iZXIgd2UgZ290IG91dCBvZiB0aGUgaW5kZXggYnkgdGhlIHJlc3VsdC4KKyAgICAgICAgLy8gT25jZSB3ZSBoYXZlIHRoZSBhcHByb3ByaWF0ZSBwaWVjZSBvZiB0aGUgYml0bWFwLCB0ZXN0IHRoZSBhcHByb3ByaWF0ZQorICAgICAgICAvLyBiaXQgYW5kIHJldHVybiB0aGUgcmVzdWx0LgorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGludCBmbGFncyA9IHJvd0luZGV4RmxhZ3Nbcm93SW5kZXhGbGFnc0luZGV4W3Jvd10gKyAoY29sID4+IDUpXTsKKyAgICAgICAgICAgIHJldHVybiAoZmxhZ3MgJiAoMSA8PCAoY29sICYgMHgxZikpKSAhPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogSW1wbGVtZW50YXRpb24gb2YgYXQoKSB3aGVuIHdlIGtub3cgdGhlIHNwZWNpZmllZCBjZWxsIGlzIHBvcHVsYXRlZC4KKyAgICAgKiBAcGFyYW0gcm93IFRoZSBQSFlTSUNBTCByb3cgbnVtYmVyIG9mIHRoZSBjZWxsCisgICAgICogQHBhcmFtIGNvbCBUaGUgUEhZU0lDQUwgY29sdW1uIG51bWJlciBvZiB0aGUgY2VsbAorICAgICAqIEByZXR1cm4gVGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgY2VsbAorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgc2hvcnQgaW50ZXJuYWxBdChpbnQgcm93LCBpbnQgY29sKSB7CisgICAgICAgIC8vIHRoZSB0YWJsZSBpcyBhIG9uZS1kaW1lbnNpb25hbCBhcnJheSwgc28gdGhpcyBqdXN0IGRvZXMgdGhlIG1hdGggbmVjZXNzYXJ5CisgICAgICAgIC8vIHRvIHRyZWF0IGl0IGFzIGEgdHdvLWRpbWVuc2lvbmFsIGFycmF5ICh3ZSBkb24ndCBqdXN0IHVzZSBhIHR3by1kaW1lbnNpb25hbAorICAgICAgICAvLyBhcnJheSBiZWNhdXNlIHR3by1kaW1lbnNpb25hbCBhcnJheXMgYXJlIGluZWZmaWNpZW50IGluIEphdmEpCisgICAgICAgIHJldHVybiB0YWJsZVtyb3cgKiBudW1Db2xzICsgY29sXTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvQnJlYWtJdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9CcmVha0l0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDY5OWFmNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvQnJlYWtJdGVyYXRvci5qYXZhCkBAIC0wLDAgKzEsNTk5IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L0F0dGljL0JyZWFrSXRlcmF0b3IuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwNDowNzoxOCAkIAorICogJFJldmlzaW9uOiAxLjQgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udGV4dDsKKworaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pYm0uNTk3CitpbXBvcnQgamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWJtLjU5NworaW1wb3J0IGphdmEudGV4dC5yZXNvdXJjZXMuTG9jYWxlRGF0YTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2libS41OTcKK2ltcG9ydCBqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pYm0uNTk3CitpbXBvcnQgamF2YS50ZXh0LlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWJtLjU5NworCitpbXBvcnQgamF2YS5uZXQuVVJMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWJtLjU5NworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2libS41OTcKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pYm0uNTk3CisKK2ltcG9ydCBqYXZhLmxhbmcucmVmLlNvZnRSZWZlcmVuY2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pYm0uNTk3CisKKy8qKgorICogQSBjbGFzcyB0aGF0IGxvY2F0ZXMgYm91bmRhcmllcyBpbiB0ZXh0LiAgVGhpcyBjbGFzcyBkZWZpbmVzIGEgcHJvdG9jb2wgZm9yCisgKiBvYmplY3RzIHRoYXQgYnJlYWsgdXAgYSBwaWVjZSBvZiBuYXR1cmFsLWxhbmd1YWdlIHRleHQgYWNjb3JkaW5nIHRvIGEgc2V0CisgKiBvZiBjcml0ZXJpYS4gIEluc3RhbmNlcyBvciBzdWJjbGFzc2VzIG9mIEJyZWFrSXRlcmF0b3IgY2FuIGJlIHByb3ZpZGVkLCBmb3IKKyAqIGV4YW1wbGUsIHRvIGJyZWFrIGEgcGllY2Ugb2YgdGV4dCBpbnRvIHdvcmRzLCBzZW50ZW5jZXMsIG9yIGxvZ2ljYWwgY2hhcmFjdGVycworICogYWNjb3JkaW5nIHRvIHRoZSBjb252ZW50aW9ucyBvZiBzb21lIGxhbmd1YWdlIG9yIGdyb3VwIG9mIGxhbmd1YWdlcy4KKyAqCisgKiBXZSBwcm92aWRlIGZvdXIgYnVpbHQtaW4gdHlwZXMgb2YgQnJlYWtJdGVyYXRvcjoKKyAqIDx1bD48bGk+Z2V0U2VudGVuY2VJbnN0YW5jZSgpIHJldHVybnMgYSBCcmVha0l0ZXJhdG9yIHRoYXQgbG9jYXRlcyBib3VuZGFyaWVzCisgKiBiZXR3ZWVuIHNlbnRlbmNlcy4gIFRoaXMgaXMgdXNlZnVsIGZvciB0cmlwbGUtY2xpY2sgc2VsZWN0aW9uLCBmb3IgZXhhbXBsZS4KKyAqIDxsaT5nZXRXb3JkSW5zdGFuY2UoKSByZXR1cm5zIGEgQnJlYWtJdGVyYXRvciB0aGF0IGxvY2F0ZXMgYm91bmRhcmllcyBiZXR3ZWVuCisgKiB3b3Jkcy4gIFRoaXMgaXMgdXNlZnVsIGZvciBkb3VibGUtY2xpY2sgc2VsZWN0aW9uIG9yICJmaW5kIHdob2xlIHdvcmRzIiBzZWFyY2hlcy4KKyAqIFRoaXMgdHlwZSBvZiBCcmVha0l0ZXJhdG9yIG1ha2VzIHN1cmUgdGhlcmUgaXMgYSBib3VuZGFyeSBwb3NpdGlvbiBhdCB0aGUKKyAqIGJlZ2lubmluZyBhbmQgZW5kIG9mIGVhY2ggbGVnYWwgd29yZC4gIChOdW1iZXJzIGNvdW50IGFzIHdvcmRzLCB0b28uKSAgV2hpdGVzcGFjZQorICogYW5kIHB1bmN0dWF0aW9uIGFyZSBrZXB0IHNlcGFyYXRlIGZyb20gcmVhbCB3b3Jkcy4KKyAqIDxsaT5nZXRMaW5lSW5zdGFuY2UoKSByZXR1cm5zIGEgQnJlYWtJdGVyYXRvciB0aGF0IGxvY2F0ZXMgcG9zaXRpb25zIHdoZXJlIGl0IGlzCisgKiBsZWdhbCBmb3IgYSB0ZXh0IGVkaXRvciB0byB3cmFwIGxpbmVzLiAgVGhpcyBpcyBzaW1pbGFyIHRvIHdvcmQgYnJlYWtpbmcsIGJ1dAorICogbm90IHRoZSBzYW1lOiBwdW5jdHVhdGlvbiBhbmQgd2hpdGVzcGFjZSBhcmUgZ2VuZXJhbGx5IGtlcHQgd2l0aCB3b3JkcyAoeW91IGRvbid0CisgKiB3YW50IGEgbGluZSB0byBzdGFydCB3aXRoIHdoaXRlc3BhY2UsIGZvciBleGFtcGxlKSwgYW5kIHNvbWUgc3BlY2lhbCBjaGFyYWN0ZXJzCisgKiBjYW4gZm9yY2UgYSBwb3NpdGlvbiB0byBiZSBjb25zaWRlcmVkIGEgbGluZS1icmVhayBwb3NpdGlvbiBvciBwcmV2ZW50IGEgcG9zaXRpb24KKyAqIGZyb20gYmVpbmcgYSBsaW5lLWJyZWFrIHBvc2l0aW9uLgorICogPGxpPmdldENoYXJhY3Rlckluc3RhbmNlKCkgcmV0dXJucyBhIEJyZWFrSXRlcmF0b3IgdGhhdCBsb2NhdGVzIGJvdW5kYXJpZXMgYmV0d2VlbgorICogbG9naWNhbCBjaGFyYWN0ZXJzLiAgQmVjYXVzZSBvZiB0aGUgc3RydWN0dXJlIG9mIHRoZSBVbmljb2RlIGVuY29kaW5nLCBhIGxvZ2ljYWwKKyAqIGNoYXJhY3RlciBtYXkgYmUgc3RvcmVkIGludGVybmFsbHkgYXMgbW9yZSB0aGFuIG9uZSBVbmljb2RlIGNvZGUgcG9pbnQuICAoQSB3aXRoIGFuCisgKiB1bWxhdXQgbWF5IGJlIHN0b3JlZCBhcyBhbiBhIGZvbGxvd2VkIGJ5IGEgc2VwYXJhdGUgY29tYmluaW5nIHVtbGF1dCBjaGFyYWN0ZXIsCisgKiBmb3IgZXhhbXBsZSwgYnV0IHRoZSB1c2VyIHN0aWxsIHRoaW5rcyBvZiBpdCBhcyBvbmUgY2hhcmFjdGVyLikgIFRoaXMgaXRlcmF0b3IgYWxsb3dzCisgKiB2YXJpb3VzIHByb2Nlc3NlcyAoZXNwZWNpYWxseSB0ZXh0IGVkaXRvcnMpIHRvIHRyZWF0IGFzIGNoYXJhY3RlcnMgdGhlIHVuaXRzIG9mIHRleHQKKyAqIHRoYXQgYSB1c2VyIHdvdWxkIHRoaW5rIG9mIGFzIGNoYXJhY3RlcnMsIHJhdGhlciB0aGFuIHRoZSB1bml0cyBvZiB0ZXh0IHRoYXQgdGhlCisgKiBjb21wdXRlciBzZWVzIGFzICJjaGFyYWN0ZXJzIi48L3VsPgorICoKKyAqIEJyZWFrSXRlcmF0b3IncyBpbnRlcmZhY2UgZm9sbG93cyBhbiAiaXRlcmF0b3IiIG1vZGVsIChoZW5jZSB0aGUgbmFtZSksIG1lYW5pbmcgaXQKKyAqIGhhcyBhIGNvbmNlcHQgb2YgYSAiY3VycmVudCBwb3NpdGlvbiIgYW5kIG1ldGhvZHMgbGlrZSBmaXJzdCgpLCBsYXN0KCksIG5leHQoKSwKKyAqIGFuZCBwcmV2aW91cygpIHRoYXQgdXBkYXRlIHRoZSBjdXJyZW50IHBvc2l0aW9uLiAgQWxsIEJyZWFrSXRlcmF0b3JzIHVwaG9sZCB0aGUKKyAqIGZvbGxvd2luZyBpbnZhcmlhbnRzOgorICogPHVsPjxsaT5UaGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgdGhlIHRleHQgYXJlIGFsd2F5cyB0cmVhdGVkIGFzIGJvdW5kYXJ5IHBvc2l0aW9ucy4KKyAqIDxsaT5UaGUgY3VycmVudCBwb3NpdGlvbiBvZiB0aGUgaXRlcmF0b3IgaXMgYWx3YXlzIGEgYm91bmRhcnkgcG9zaXRpb24gKHJhbmRvbS0KKyAqIGFjY2VzcyBtZXRob2RzIG1vdmUgdGhlIGl0ZXJhdG9yIHRvIHRoZSBuZWFyZXN0IGJvdW5kYXJ5IHBvc2l0aW9uIGJlZm9yZSBvcgorICogYWZ0ZXIgdGhlIHNwZWNpZmllZCBwb3NpdGlvbiwgbm90IF90b18gdGhlIHNwZWNpZmllZCBwb3NpdGlvbikuCisgKiA8bGk+RE9ORSBpcyB1c2VkIGFzIGEgZmxhZyB0byBpbmRpY2F0ZSB3aGVuIGl0ZXJhdGlvbiBoYXMgc3RvcHBlZC4gIERPTkUgaXMgb25seQorICogcmV0dXJuZWQgd2hlbiB0aGUgY3VycmVudCBwb3NpdGlvbiBpcyB0aGUgZW5kIG9mIHRoZSB0ZXh0IGFuZCB0aGUgdXNlciBjYWxscyBuZXh0KCksCisgKiBvciB3aGVuIHRoZSBjdXJyZW50IHBvc2l0aW9uIGlzIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRleHQgYW5kIHRoZSB1c2VyIGNhbGxzCisgKiBwcmV2aW91cygpLgorICogPGxpPkJyZWFrIHBvc2l0aW9ucyBhcmUgbnVtYmVyZWQgYnkgdGhlIHBvc2l0aW9ucyBvZiB0aGUgY2hhcmFjdGVycyB0aGF0IGZvbGxvdworICogdGhlbS4gIFRodXMsIHVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzLCB0aGUgcG9zaXRpb24gYmVmb3JlIHRoZSBmaXJzdCBjaGFyYWN0ZXIKKyAqIGlzIDAsIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgZmlyc3QgY2hhcmFjdGVyIGlzIDEsIGFuZCB0aGUgcG9zaXRpb24gYWZ0ZXIgdGhlCisgKiBsYXN0IGNoYXJhY3RlciBpcyAxIHBsdXMgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nLgorICogPGxpPlRoZSBjbGllbnQgY2FuIGNoYW5nZSB0aGUgcG9zaXRpb24gb2YgYW4gaXRlcmF0b3IsIG9yIHRoZSB0ZXh0IGl0IGFuYWx5emVzLAorICogYXQgd2lsbCwgYnV0IGNhbm5vdCBjaGFuZ2UgdGhlIGJlaGF2aW9yLiAgSWYgdGhlIHVzZXIgd2FudHMgZGlmZmVyZW50IGJlaGF2aW9yLCBoZQorICogbXVzdCBpbnN0YW50aWF0ZSBhIG5ldyBpdGVyYXRvci48L3VsPgorICoKKyAqIEJyZWFrSXRlcmF0b3IgYWNjZXNzZXMgdGhlIHRleHQgaXQgYW5hbHl6ZXMgdGhyb3VnaCBhIENoYXJhY3Rlckl0ZXJhdG9yLCB3aGljaCBtYWtlcworICogaXQgcG9zc2libGUgdG8gdXNlIEJyZWFrSXRlcmF0b3IgdG8gYW5hbHl6ZSB0ZXh0IGluIGFueSB0ZXh0LXN0b3JhZ2UgdmVoaWNsZSB0aGF0CisgKiBwcm92aWRlcyBhIENoYXJhY3Rlckl0ZXJhdG9yIGludGVyZmFjZS4KKyAqCisgKiA8Yj5OT1RFOjwvYj4gIFNvbWUgdHlwZXMgb2YgQnJlYWtJdGVyYXRvciBjYW4gdGFrZSBhIGxvbmcgdGltZSB0byBjcmVhdGUsIGFuZAorICogaW5zdGFuY2VzIG9mIEJyZWFrSXRlcmF0b3IgYXJlIG5vdCBjdXJyZW50bHkgY2FjaGVkIGJ5IHRoZSBzeXN0ZW0uICBGb3IKKyAqIG9wdGltYWwgcGVyZm9ybWFuY2UsIGtlZXAgaW5zdGFuY2VzIG9mIEJyZWFrSXRlcmF0b3IgYXJvdW5kIGFzIGxvbmcgYXMgbWFrZXMKKyAqIHNlbnNlLiAgRm9yIGV4YW1wbGUsIHdoZW4gd29yZC13cmFwcGluZyBhIGRvY3VtZW50LCBkb24ndCBjcmVhdGUgYW5kIGRlc3Ryb3kgYQorICogbmV3IEJyZWFrSXRlcmF0b3IgZm9yIGVhY2ggbGluZS4gIENyZWF0ZSBvbmUgYnJlYWsgaXRlcmF0b3IgZm9yIHRoZSB3aG9sZSBkb2N1bWVudAorICogKG9yIHdoYXRldmVyIHN0cmV0Y2ggb2YgdGV4dCB5b3UncmUgd3JhcHBpbmcpIGFuZCB1c2UgaXQgdG8gZG8gdGhlIHdob2xlIGpvYiBvZgorICogd3JhcHBpbmcgdGhlIHRleHQuCisgKgorICAqIDxQPgorICogPHN0cm9uZz5FeGFtcGxlczwvc3Ryb25nPjo8UD4KKyAqIENyZWF0aW5nIGFuZCB1c2luZyB0ZXh0IGJvdW5kYXJpZXMKKyAqIDxibG9ja3F1b3RlPgorICogPHByZT4KKyAqIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdzW10pIHsKKyAqICAgICAgaWYgKGFyZ3MubGVuZ3RoID09IDEpIHsKKyAqICAgICAgICAgIFN0cmluZyBzdHJpbmdUb0V4YW1pbmUgPSBhcmdzWzBdOworICogICAgICAgICAgLy9wcmludCBlYWNoIHdvcmQgaW4gb3JkZXIKKyAqICAgICAgICAgIEJyZWFrSXRlcmF0b3IgYm91bmRhcnkgPSBCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZSgpOworICogICAgICAgICAgYm91bmRhcnkuc2V0VGV4dChzdHJpbmdUb0V4YW1pbmUpOworICogICAgICAgICAgcHJpbnRFYWNoRm9yd2FyZChib3VuZGFyeSwgc3RyaW5nVG9FeGFtaW5lKTsKKyAqICAgICAgICAgIC8vcHJpbnQgZWFjaCBzZW50ZW5jZSBpbiByZXZlcnNlIG9yZGVyCisgKiAgICAgICAgICBib3VuZGFyeSA9IEJyZWFrSXRlcmF0b3IuZ2V0U2VudGVuY2VJbnN0YW5jZShMb2NhbGUuVVMpOworICogICAgICAgICAgYm91bmRhcnkuc2V0VGV4dChzdHJpbmdUb0V4YW1pbmUpOworICogICAgICAgICAgcHJpbnRFYWNoQmFja3dhcmQoYm91bmRhcnksIHN0cmluZ1RvRXhhbWluZSk7CisgKiAgICAgICAgICBwcmludEZpcnN0KGJvdW5kYXJ5LCBzdHJpbmdUb0V4YW1pbmUpOworICogICAgICAgICAgcHJpbnRMYXN0KGJvdW5kYXJ5LCBzdHJpbmdUb0V4YW1pbmUpOworICogICAgICB9CisgKiB9CisgKiA8L3ByZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqCisgKiBQcmludCBlYWNoIGVsZW1lbnQgaW4gb3JkZXIKKyAqIDxibG9ja3F1b3RlPgorICogPHByZT4KKyAqIHB1YmxpYyBzdGF0aWMgdm9pZCBwcmludEVhY2hGb3J3YXJkKEJyZWFrSXRlcmF0b3IgYm91bmRhcnksIFN0cmluZyBzb3VyY2UpIHsKKyAqICAgICBpbnQgc3RhcnQgPSBib3VuZGFyeS5maXJzdCgpOworICogICAgIGZvciAoaW50IGVuZCA9IGJvdW5kYXJ5Lm5leHQoKTsKKyAqICAgICAgICAgIGVuZCAhPSBCcmVha0l0ZXJhdG9yLkRPTkU7CisgKiAgICAgICAgICBzdGFydCA9IGVuZCwgZW5kID0gYm91bmRhcnkubmV4dCgpKSB7CisgKiAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oc291cmNlLnN1YnN0cmluZyhzdGFydCxlbmQpKTsKKyAqICAgICB9CisgKiB9CisgKiA8L3ByZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqCisgKiBQcmludCBlYWNoIGVsZW1lbnQgaW4gcmV2ZXJzZSBvcmRlcgorICogPGJsb2NrcXVvdGU+CisgKiA8cHJlPgorICogcHVibGljIHN0YXRpYyB2b2lkIHByaW50RWFjaEJhY2t3YXJkKEJyZWFrSXRlcmF0b3IgYm91bmRhcnksIFN0cmluZyBzb3VyY2UpIHsKKyAqICAgICBpbnQgZW5kID0gYm91bmRhcnkubGFzdCgpOworICogICAgIGZvciAoaW50IHN0YXJ0ID0gYm91bmRhcnkucHJldmlvdXMoKTsKKyAqICAgICAgICAgIHN0YXJ0ICE9IEJyZWFrSXRlcmF0b3IuRE9ORTsKKyAqICAgICAgICAgIGVuZCA9IHN0YXJ0LCBzdGFydCA9IGJvdW5kYXJ5LnByZXZpb3VzKCkpIHsKKyAqICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHNvdXJjZS5zdWJzdHJpbmcoc3RhcnQsZW5kKSk7CisgKiAgICAgfQorICogfQorICogPC9wcmU+CisgKiA8L2Jsb2NrcXVvdGU+CisgKgorICogUHJpbnQgZmlyc3QgZWxlbWVudAorICogPGJsb2NrcXVvdGU+CisgKiA8cHJlPgorICogcHVibGljIHN0YXRpYyB2b2lkIHByaW50Rmlyc3QoQnJlYWtJdGVyYXRvciBib3VuZGFyeSwgU3RyaW5nIHNvdXJjZSkgeworICogICAgIGludCBzdGFydCA9IGJvdW5kYXJ5LmZpcnN0KCk7CisgKiAgICAgaW50IGVuZCA9IGJvdW5kYXJ5Lm5leHQoKTsKKyAqICAgICBTeXN0ZW0ub3V0LnByaW50bG4oc291cmNlLnN1YnN0cmluZyhzdGFydCxlbmQpKTsKKyAqIH0KKyAqIDwvcHJlPgorICogPC9ibG9ja3F1b3RlPgorICoKKyAqIFByaW50IGxhc3QgZWxlbWVudAorICogPGJsb2NrcXVvdGU+CisgKiA8cHJlPgorICogcHVibGljIHN0YXRpYyB2b2lkIHByaW50TGFzdChCcmVha0l0ZXJhdG9yIGJvdW5kYXJ5LCBTdHJpbmcgc291cmNlKSB7CisgKiAgICAgaW50IGVuZCA9IGJvdW5kYXJ5Lmxhc3QoKTsKKyAqICAgICBpbnQgc3RhcnQgPSBib3VuZGFyeS5wcmV2aW91cygpOworICogICAgIFN5c3RlbS5vdXQucHJpbnRsbihzb3VyY2Uuc3Vic3RyaW5nKHN0YXJ0LGVuZCkpOworICogfQorICogPC9wcmU+CisgKiA8L2Jsb2NrcXVvdGU+CisgKgorICogUHJpbnQgdGhlIGVsZW1lbnQgYXQgYSBzcGVjaWZpZWQgcG9zaXRpb24KKyAqIDxibG9ja3F1b3RlPgorICogPHByZT4KKyAqIHB1YmxpYyBzdGF0aWMgdm9pZCBwcmludEF0KEJyZWFrSXRlcmF0b3IgYm91bmRhcnksIGludCBwb3MsIFN0cmluZyBzb3VyY2UpIHsKKyAqICAgICBpbnQgZW5kID0gYm91bmRhcnkuZm9sbG93aW5nKHBvcyk7CisgKiAgICAgaW50IHN0YXJ0ID0gYm91bmRhcnkucHJldmlvdXMoKTsKKyAqICAgICBTeXN0ZW0ub3V0LnByaW50bG4oc291cmNlLnN1YnN0cmluZyhzdGFydCxlbmQpKTsKKyAqIH0KKyAqIDwvcHJlPgorICogPC9ibG9ja3F1b3RlPgorICoKKyAqIEZpbmQgdGhlIG5leHQgd29yZAorICogPGJsb2NrcXVvdGU+CisgKiA8cHJlPgorICogcHVibGljIHN0YXRpYyBpbnQgbmV4dFdvcmRTdGFydEFmdGVyKGludCBwb3MsIFN0cmluZyB0ZXh0KSB7CisgKiAgICAgQnJlYWtJdGVyYXRvciB3YiA9IEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKCk7CisgKiAgICAgd2Iuc2V0VGV4dCh0ZXh0KTsKKyAqICAgICBpbnQgbGFzdCA9IHdiLmZvbGxvd2luZyhwb3MpOworICogICAgIGludCBjdXJyZW50ID0gd2IubmV4dCgpOworICogICAgIHdoaWxlIChjdXJyZW50ICE9IEJyZWFrSXRlcmF0b3IuRE9ORSkgeworICogICAgICAgICBmb3IgKGludCBwID0gbGFzdDsgcCA8IGN1cnJlbnQ7IHArKykgeworICogICAgICAgICAgICAgaWYgKENoYXJhY3Rlci5pc0xldHRlcih0ZXh0LmNoYXJBdChwKSkKKyAqICAgICAgICAgICAgICAgICByZXR1cm4gbGFzdDsKKyAqICAgICAgICAgfQorICogICAgICAgICBsYXN0ID0gY3VycmVudDsKKyAqICAgICAgICAgY3VycmVudCA9IHdiLm5leHQoKTsKKyAqICAgICB9CisgKiAgICAgcmV0dXJuIEJyZWFrSXRlcmF0b3IuRE9ORTsKKyAqIH0KKyAqIDwvcHJlPgorICogKFRoZSBpdGVyYXRvciByZXR1cm5lZCBieSBCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZSgpIGlzIHVuaXF1ZSBpbiB0aGF0CisgKiB0aGUgYnJlYWsgcG9zaXRpb25zIGl0IHJldHVybnMgZG9uJ3QgcmVwcmVzZW50IGJvdGggdGhlIHN0YXJ0IGFuZCBlbmQgb2YgdGhlCisgKiB0aGluZyBiZWluZyBpdGVyYXRlZCBvdmVyLiAgVGhhdCBpcywgYSBzZW50ZW5jZS1icmVhayBpdGVyYXRvciByZXR1cm5zIGJyZWFrcworICogdGhhdCBlYWNoIHJlcHJlc2VudCB0aGUgZW5kIG9mIG9uZSBzZW50ZW5jZSBhbmQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dC4KKyAqIFdpdGggdGhlIHdvcmQtYnJlYWsgaXRlcmF0b3IsIHRoZSBjaGFyYWN0ZXJzIGJldHdlZW4gdHdvIGJvdW5kYXJpZXMgbWlnaHQgYmUgYQorICogd29yZCwgb3IgdGhleSBtaWdodCBiZSB0aGUgcHVuY3R1YXRpb24gb3Igd2hpdGVzcGFjZSBiZXR3ZWVuIHR3byB3b3Jkcy4gIFRoZQorICogYWJvdmUgY29kZSB1c2VzIGEgc2ltcGxlIGhldXJpc3RpYyB0byBkZXRlcm1pbmUgd2hpY2ggYm91bmRhcnkgaXMgdGhlIGJlZ2lubmluZworICogb2YgYSB3b3JkOiBJZiB0aGUgY2hhcmFjdGVycyBiZXR3ZWVuIHRoaXMgYm91bmRhcnkgYW5kIHRoZSBuZXh0IGJvdW5kYXJ5CisgKiBpbmNsdWRlIGF0IGxlYXN0IG9uZSBsZXR0ZXIgKHRoaXMgY2FuIGJlIGFuIGFscGhhYmV0aWNhbCBsZXR0ZXIsIGEgQ0pLIGlkZW9ncmFwaCwKKyAqIGEgSGFuZ3VsIHN5bGxhYmxlLCBhIEthbmEgY2hhcmFjdGVyLCBldGMuKSwgdGhlbiB0aGUgdGV4dCBiZXR3ZWVuIHRoaXMgYm91bmRhcnkKKyAqIGFuZCB0aGUgbmV4dCBpcyBhIHdvcmQ7IG90aGVyd2lzZSwgaXQncyB0aGUgbWF0ZXJpYWwgYmV0d2VlbiB3b3Jkcy4pCisgKiA8L2Jsb2NrcXVvdGU+CisgKgorICogQHNlZSBDaGFyYWN0ZXJJdGVyYXRvcgorICoKKyAqLworCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQnJlYWtJdGVyYXRvciBpbXBsZW1lbnRzIENsb25lYWJsZQoreworICAgIC8qKgorICAgICAqIERlZmF1bHQgY29uc3RydWN0b3IuICBUaGVyZSBpcyBubyBzdGF0ZSB0aGF0IGlzIGNhcnJpZWQgYnkgdGhpcyBhYnN0cmFjdAorICAgICAqIGJhc2UgY2xhc3MuCisgICAgICovCisgICAgcHJvdGVjdGVkIEJyZWFrSXRlcmF0b3IoKQorICAgIHsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDbG9uZSBtZXRob2QuICBDcmVhdGVzIGFub3RoZXIgQnJlYWtJdGVyYXRvciB3aXRoIHRoZSBzYW1lIGJlaGF2aW9yIGFuZAorICAgICAqIGN1cnJlbnQgc3RhdGUgYXMgdGhpcyBvbmUuCisgICAgICogQHJldHVybiBUaGUgY2xvbmUuCisgICAgICovCisgICAgcHVibGljIE9iamVjdCBjbG9uZSgpCisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmNsb25lKCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKENsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBET05FIGlzIHJldHVybmVkIGJ5IHByZXZpb3VzKCkgYW5kIG5leHQoKSBhZnRlciBhbGwgdmFsaWQKKyAgICAgKiBib3VuZGFyaWVzIGhhdmUgYmVlbiByZXR1cm5lZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBET05FID0gLTE7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGZpcnN0IGJvdW5kYXJ5IHBvc2l0aW9uLiAgVGhpcyBpcyBhbHdheXMgdGhlIGJlZ2lubmluZworICAgICAqIGluZGV4IG9mIHRoZSB0ZXh0IHRoaXMgaXRlcmF0b3IgaXRlcmF0ZXMgb3Zlci4gIEZvciBleGFtcGxlLCBpZgorICAgICAqIHRoZSBpdGVyYXRvciBpdGVyYXRlcyBvdmVyIGEgd2hvbGUgc3RyaW5nLCB0aGlzIGZ1bmN0aW9uIHdpbGwKKyAgICAgKiBhbHdheXMgcmV0dXJuIDAuICBUaGlzIGZ1bmN0aW9uIGFsc28gdXBkYXRlcyB0aGUgaXRlcmF0aW9uIHBvc2l0aW9uCisgICAgICogdG8gcG9pbnQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgdGV4dC4KKyAgICAgKiBAcmV0dXJuIFRoZSBjaGFyYWN0ZXIgb2Zmc2V0IG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmV0Y2ggb2YgdGV4dAorICAgICAqIGJlaW5nIGJyb2tlbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGZpcnN0KCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGxhc3QgYm91bmRhcnkgcG9zaXRpb24uICBUaGlzIGlzIGFsd2F5cyB0aGUgInBhc3QtdGhlLWVuZCIKKyAgICAgKiBpbmRleCBvZiB0aGUgdGV4dCB0aGlzIGl0ZXJhdG9yIGl0ZXJhdGVzIG92ZXIuICBGb3IgZXhhbXBsZSwgaWYgdGhlCisgICAgICogaXRlcmF0b3IgaXRlcmF0ZXMgb3ZlciBhIHdob2xlIHN0cmluZyAoY2FsbCBpdCAidGV4dCIpLCB0aGlzIGZ1bmN0aW9uCisgICAgICogd2lsbCBhbHdheXMgcmV0dXJuIHRleHQubGVuZ3RoKCkuICBUaGlzIGZ1bmN0aW9uIGFsc28gdXBkYXRlZCB0aGUKKyAgICAgKiBpdGVyYXRpb24gcG9zaXRpb24gdG8gcG9pbnQgdG8gdGhlIGVuZCBvZiB0aGUgdGV4dC4KKyAgICAgKiBAcmV0dXJuIFRoZSBjaGFyYWN0ZXIgb2Zmc2V0IG9mIHRoZSBlbmQgb2YgdGhlIHN0cmV0Y2ggb2YgdGV4dAorICAgICAqIGJlaW5nIGJyb2tlbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGxhc3QoKTsKKworICAgIC8qKgorICAgICAqIEFkdmFuY2VzIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHN0ZXBzIGZvcndhcmQgaW4gdGhlIHRleHQgKGEgbmVnYXRpdmUKKyAgICAgKiBudW1iZXIsIHRoZXJlZm9yZSwgYWR2YW5jZXMgYmFja3dhcmRzKS4gIElmIHRoaXMgY2F1c2VzIHRoZSBpdGVyYXRvcgorICAgICAqIHRvIGFkdmFuY2Ugb2ZmIGVpdGhlciBlbmQgb2YgdGhlIHRleHQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBET05FOworICAgICAqIG90aGVyd2lzZSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBwb3NpdGlvbiBvZiB0aGUgYXBwcm9wcmlhdGUKKyAgICAgKiBib3VuZGFyeS4gIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgbmV4dCgpIG9yCisgICAgICogcHJldmlvdXMoKSBuIHRpbWVzLgorICAgICAqIEBwYXJhbSBuIFRoZSBudW1iZXIgb2YgYm91bmRhcmllcyB0byBhZHZhbmNlIG92ZXIgKGlmIHBvc2l0aXZlLCBtb3ZlcworICAgICAqIGZvcndhcmQ7IGlmIG5lZ2F0aXZlLCBtb3ZlcyBiYWNrd2FyZHMpLgorICAgICAqIEByZXR1cm4gVGhlIHBvc2l0aW9uIG9mIHRoZSBib3VuZGFyeSBuIGJvdW5kYXJpZXMgZnJvbSB0aGUgY3VycmVudAorICAgICAqIGl0ZXJhdGlvbiBwb3NpdGlvbiwgb3IgRE9ORSBpZiBtb3ZpbmcgbiBib3VuZGFyaWVzIGNhdXNlcyB0aGUgaXRlcmF0b3IKKyAgICAgKiB0byBhZHZhbmNlIG9mZiBlaXRoZXIgZW5kIG9mIHRoZSB0ZXh0LgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgbmV4dChpbnQgbik7CisKKyAgICAvKioKKyAgICAgKiBBZHZhbmNlcyB0aGUgaXRlcmF0b3IgZm9yd2FyZCBvbmUgYm91bmRhcnkuICBUaGUgY3VycmVudCBpdGVyYXRpb24KKyAgICAgKiBwb3NpdGlvbiBpcyB1cGRhdGVkIHRvIHBvaW50IHRvIHRoZSBuZXh0IGJvdW5kYXJ5IHBvc2l0aW9uIGFmdGVyIHRoZQorICAgICAqIGN1cnJlbnQgcG9zaXRpb24sIGFuZCB0aGlzIGlzIGFsc28gdGhlIHZhbHVlIHRoYXQgaXMgcmV0dXJuZWQuICBJZgorICAgICAqIHRoZSBjdXJyZW50IHBvc2l0aW9uIGlzIGVxdWFsIHRvIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBsYXN0KCksIG9yIHRvCisgICAgICogRE9ORSwgdGhpcyBmdW5jdGlvbiByZXR1cm5zIERPTkUgYW5kIHNldHMgdGhlIGN1cnJlbnQgcG9zaXRpb24gdG8KKyAgICAgKiBET05FLgorICAgICAqIEByZXR1cm4gVGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBib3VuZGFyeSBwb3NpdGlvbiBmb2xsb3dpbmcgdGhlCisgICAgICogaXRlcmF0aW9uIHBvc2l0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgbmV4dCgpOworCisgICAgLyoqCisgICAgICogQWR2YW5jZXMgdGhlIGl0ZXJhdG9yIGJhY2t3YXJkIG9uZSBib3VuZGFyeS4gIFRoZSBjdXJyZW50IGl0ZXJhdGlvbgorICAgICAqIHBvc2l0aW9uIGlzIHVwZGF0ZWQgdG8gcG9pbnQgdG8gdGhlIGxhc3QgYm91bmRhcnkgcG9zaXRpb24gYmVmb3JlCisgICAgICogdGhlIGN1cnJlbnQgcG9zaXRpb24sIGFuZCB0aGlzIGlzIGFsc28gdGhlIHZhbHVlIHRoYXQgaXMgcmV0dXJuZWQuICBJZgorICAgICAqIHRoZSBjdXJyZW50IHBvc2l0aW9uIGlzIGVxdWFsIHRvIHRoZSB2YWx1ZSByZXR1cm5lZCBieSBmaXJzdCgpLCBvciB0bworICAgICAqIERPTkUsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBET05FIGFuZCBzZXRzIHRoZSBjdXJyZW50IHBvc2l0aW9uIHRvCisgICAgICogRE9ORS4KKyAgICAgKiBAcmV0dXJuIFRoZSBwb3NpdGlvbiBvZiB0aGUgbGFzdCBib3VuZGFyeSBwb3NpdGlvbiBwcmVjZWRpbmcgdGhlCisgICAgICogaXRlcmF0aW9uIHBvc2l0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgcHJldmlvdXMoKTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGl0ZXJhdG9yJ3MgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gdG8gYmUgdGhlIGZpcnN0CisgICAgICogYm91bmRhcnkgcG9zaXRpb24gZm9sbG93aW5nIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uICAoV2hldGhlciB0aGUKKyAgICAgKiBzcGVjaWZpZWQgcG9zaXRpb24gaXMgaXRzZWxmIGEgYm91bmRhcnkgcG9zaXRpb24gb3Igbm90IGRvZXNuJ3QKKyAgICAgKiBtYXR0ZXItLSB0aGlzIGZ1bmN0aW9uIGFsd2F5cyBtb3ZlcyB0aGUgaXRlcmF0aW9uIHBvc2l0aW9uIHRvIHRoZQorICAgICAqIGZpcnN0IGJvdW5kYXJ5IGFmdGVyIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uKSAgSWYgdGhlIHNwZWNpZmllZAorICAgICAqIHBvc2l0aW9uIGlzIHRoZSBwYXN0LXRoZS1lbmQgcG9zaXRpb24sIHJldHVybnMgRE9ORS4KKyAgICAgKiBAcGFyYW0gb2Zmc2V0IFRoZSBjaGFyYWN0ZXIgcG9zaXRpb24gdG8gc3RhcnQgc2VhcmNoaW5nIGZyb20uCisgICAgICogQHJldHVybiBUaGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGJvdW5kYXJ5IHBvc2l0aW9uIGZvbGxvd2luZworICAgICAqICJvZmZzZXQiICh3aGV0aGVyIG9yIG5vdCAib2Zmc2V0IiBpdHNlbGYgaXMgYSBib3VuZGFyeSBwb3NpdGlvbiksCisgICAgICogb3IgRE9ORSBpZiAib2Zmc2V0IiBpcyB0aGUgcGFzdC10aGUtZW5kIG9mZnNldC4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgaW50IGZvbGxvd2luZyhpbnQgb2Zmc2V0KTsKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGl0ZXJhdG9yJ3MgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gdG8gYmUgdGhlIGxhc3QKKyAgICAgKiBib3VuZGFyeSBwb3NpdGlvbiBwcmVjZWRpbmcgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4gIChXaGV0aGVyIHRoZQorICAgICAqIHNwZWNpZmllZCBwb3NpdGlvbiBpcyBpdHNlbGYgYSBib3VuZGFyeSBwb3NpdGlvbiBvciBub3QgZG9lc24ndAorICAgICAqIG1hdHRlci0tIHRoaXMgZnVuY3Rpb24gYWx3YXlzIG1vdmVzIHRoZSBpdGVyYXRpb24gcG9zaXRpb24gdG8gdGhlCisgICAgICogbGFzdCBib3VuZGFyeSBiZWZvcmUgdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4pICBJZiB0aGUgc3BlY2lmaWVkCisgICAgICogcG9zaXRpb24gaXMgdGhlIHN0YXJ0aW5nIHBvc2l0aW9uLCByZXR1cm5zIERPTkUuCisgICAgICogQHBhcmFtIG9mZnNldCBUaGUgY2hhcmFjdGVyIHBvc2l0aW9uIHRvIHN0YXJ0IHNlYXJjaGluZyBmcm9tLgorICAgICAqIEByZXR1cm4gVGhlIHBvc2l0aW9uIG9mIHRoZSBsYXN0IGJvdW5kYXJ5IHBvc2l0aW9uIHByZWNlZGluZworICAgICAqICJvZmZzZXQiICh3aGV0aGVyIG9mIG5vdCAib2Zmc2V0IiBpdHNlbGYgaXMgYSBib3VuZGFyeSBwb3NpdGlvbiksCisgICAgICogb3IgRE9ORSBpZiAib2Zmc2V0IiBpcyB0aGUgc3RhcnRpbmcgb2Zmc2V0IG9mIHRoZSBpdGVyYXRvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHByZWNlZGluZyhpbnQgb2Zmc2V0KSB7CisgICAgICAgIC8vIE5PVEU6ICBUaGlzIGltcGxlbWVudGF0aW9uIGlzIGhlcmUgc29sZWx5IGJlY2F1c2Ugd2UgY2FuJ3QgYWRkIG5ldworICAgICAgICAvLyBhYnN0cmFjdCBtZXRob2RzIHRvIGFuIGV4aXN0aW5nIGNsYXNzLiAgVGhlcmUgaXMgYWxtb3N0IEFMV0FZUyBhCisgICAgICAgIC8vIGJldHRlciwgZmFzdGVyIHdheSB0byBkbyB0aGlzLgorICAgICAgICBpbnQgcG9zID0gZm9sbG93aW5nKG9mZnNldCk7CisgICAgICAgIHdoaWxlIChwb3MgPj0gb2Zmc2V0ICYmIHBvcyAhPSBET05FKQorICAgICAgICAgICAgcG9zID0gcHJldmlvdXMoKTsKKyAgICAgICAgcmV0dXJuIHBvczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3BlY2ZpZWQgcG9zaXRpb24gaXMgYSBib3VuZGFyeSBwb3NpdGlvbi4gIElmIHRoZQorICAgICAqIGZ1bmN0aW9uIHJldHVybnMgdHJ1ZSwgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uIGlzIHNldCB0byB0aGUKKyAgICAgKiBzcGVjaWZpZWQgcG9zaXRpb247IGlmIHRoZSBmdW5jdGlvbiByZXR1cm5zIGZhbHNlLCB0aGUgY3VycmVudAorICAgICAqIGl0ZXJhdGlvbiBwb3NpdGlvbiBpcyBzZXQgYXMgdGhvdWdoIGZvbGxvd2luZygpIGhhZCBiZWVuIGNhbGxlZC4KKyAgICAgKiBAcGFyYW0gb2Zmc2V0IHRoZSBvZmZzZXQgdG8gY2hlY2suCisgICAgICogQHJldHVybiBUcnVlIGlmICJvZmZzZXQiIGlzIGEgYm91bmRhcnkgcG9zaXRpb24uCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNCb3VuZGFyeShpbnQgb2Zmc2V0KSB7CisgICAgICAgIC8vIEFnYWluLCB0aGlzIGlzIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uLCB3aGljaCBpcyBwcm92aWRlZCBzb2xlbHkgYmVjYXVzZQorICAgICAgICAvLyB3ZSBjb3VsZG4ndCBhZGQgYSBuZXcgYWJzdHJhY3QgbWV0aG9kIHRvIGFuIGV4aXN0aW5nIGNsYXNzLiAgVGhlIHJlYWwKKyAgICAgICAgLy8gaW1wbGVtZW50YXRpb25zIHdpbGwgdXN1YWxseSBuZWVkIHRvIGRvIGEgbGl0dGxlIG1vcmUgd29yay4KKyAgICAgICAgaWYgKG9mZnNldCA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gZm9sbG93aW5nKG9mZnNldCAtIDEpID09IG9mZnNldDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGl0ZXJhdG9yJ3MgY3VycmVudCBwb3NpdGlvbi4KKyAgICAgKiBAcmV0dXJuIFRoZSBpdGVyYXRvcidzIGN1cnJlbnQgcG9zaXRpb24uCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IGludCBjdXJyZW50KCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgQ2hhcmFjdGVySXRlcmF0b3Igb3ZlciB0aGUgdGV4dCBiZWluZyBhbmFseXplZC4KKyAgICAgKiBGb3IgYXQgbGVhc3Qgc29tZSBzdWJjbGFzc2VzIG9mIEJyZWFrSXRlcmF0b3IsIHRoaXMgaXMgYSByZWZlcmVuY2UKKyAgICAgKiB0byB0aGUgPGI+YWN0dWFsIGl0ZXJhdG9yIGJlaW5nIHVzZWQ8L2I+IGJ5IHRoZSBCcmVha0l0ZXJhdG9yLAorICAgICAqIGFuZCB0aGVyZWZvcmUsIHRoaXMgZnVuY3Rpb24ncyByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIHRyZWF0ZWQgYXMKKyAgICAgKiA8dHQ+Y29uc3Q8L3R0Pi4gIE5vIGd1YXJhbnRlZXMgYXJlIG1hZGUgYWJvdXQgdGhlIGN1cnJlbnQgcG9zaXRpb24KKyAgICAgKiBvZiB0aGlzIGl0ZXJhdG9yIHdoZW4gaXQgaXMgcmV0dXJuZWQuICBJZiB5b3UgbmVlZCB0byBtb3ZlIHRoYXQKKyAgICAgKiBwb3NpdGlvbiB0byBleGFtaW5lIHRoZSB0ZXh0LCBjbG9uZSB0aGlzIGZ1bmN0aW9uJ3MgcmV0dXJuIHZhbHVlIGZpcnN0LgorICAgICAqIEByZXR1cm4gQSBDaGFyYWN0ZXJJdGVyYXRvciBvdmVyIHRoZSB0ZXh0IGJlaW5nIGFuYWx5emVkLgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBDaGFyYWN0ZXJJdGVyYXRvciBnZXRUZXh0KCk7CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBpdGVyYXRvciB0byBhbmFseXplIGEgbmV3IHBpZWNlIG9mIHRleHQuICBUaGUgbmV3CisgICAgICogcGllY2Ugb2YgdGV4dCBpcyBwYXNzZWQgaW4gYXMgYSBTdHJpbmcsIGFuZCB0aGUgY3VycmVudAorICAgICAqIGl0ZXJhdGlvbiBwb3NpdGlvbiBpcyByZXNldCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuCisgICAgICogKFRoZSBvbGQgdGV4dCBpcyBkcm9wcGVkLikKKyAgICAgKiBAcGFyYW0gbmV3VGV4dCBBIFN0cmluZyBjb250YWluaW5nIHRoZSB0ZXh0IHRvIGFuYWx5emUgd2l0aAorICAgICAqIHRoaXMgQnJlYWtJdGVyYXRvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRUZXh0KFN0cmluZyBuZXdUZXh0KQorICAgIHsKKyAgICAgICAgc2V0VGV4dChuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IobmV3VGV4dCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGl0ZXJhdG9yIHRvIGFuYWx5emUgYSBuZXcgcGllY2Ugb2YgdGV4dC4gIFRoZQorICAgICAqIEJyZWFrSXRlcmF0b3IgaXMgcGFzc2VkIGEgQ2hhcmFjdGVySXRlcmF0b3IgdGhyb3VnaCB3aGljaAorICAgICAqIGl0IHdpbGwgYWNjZXNzIHRoZSB0ZXh0IGl0c2VsZi4gIFRoZSBjdXJyZW50IGl0ZXJhdGlvbgorICAgICAqIHBvc2l0aW9uIGlzIHJlc2V0IHRvIHRoZSBDaGFyYWN0ZXJJdGVyYXRvcidzIHN0YXJ0IGluZGV4LgorICAgICAqIChUaGUgb2xkIGl0ZXJhdG9yIGlzIGRyb3BwZWQuKQorICAgICAqIEBwYXJhbSBuZXdUZXh0IEEgQ2hhcmFjdGVySXRlcmF0b3IgcmVmZXJyaW5nIHRvIHRoZSB0ZXh0CisgICAgICogdG8gYW5hbHl6ZSB3aXRoIHRoaXMgQnJlYWtJdGVyYXRvciAodGhlIGl0ZXJhdG9yJ3MgY3VycmVudAorICAgICAqIHBvc2l0aW9uIGlzIGlnbm9yZWQsIGJ1dCBpdHMgb3RoZXIgc3RhdGUgaXMgc2lnbmlmaWNhbnQpLgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHNldFRleHQoQ2hhcmFjdGVySXRlcmF0b3IgbmV3VGV4dCk7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0hBUkFDVEVSX0lOREVYID0gMDsgICAgICAgICAgICAgICAgICAgLy9pYm0uNTk3CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFdPUkRfSU5ERVggPSAxOyAgICAgICAgICAgICAgICAgICAgICAgIC8vaWJtLjU5NworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMSU5FX0lOREVYID0gMjsgICAgICAgICAgICAgICAgICAgICAgICAvL2libS41OTcKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0VOVEVOQ0VfSU5ERVggPSAzOyAgICAgICAgICAgICAgICAgICAgLy9pYm0uNTk3CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU29mdFJlZmVyZW5jZVtdIGl0ZXJDYWNoZSA9IG5ldyBTb2Z0UmVmZXJlbmNlWzRdOyAgLy9pYm0uNTk3CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIEJyZWFrSXRlcmF0b3IgdGhhdCBsb2NhdGVzIHdvcmQgYm91bmRhcmllcy4KKyAgICAgKiBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCB0aGUgdGV4dCBiZWluZyBhbmFseXplZCBpcyBpbiB0aGUgZGVmYXVsdAorICAgICAqIGxvY2FsZSdzIGxhbmd1YWdlLgorICAgICAqIEByZXR1cm4gQW4gaW5zdGFuY2Ugb2YgQnJlYWtJdGVyYXRvciB0aGF0IGxvY2F0ZXMgd29yZCBib3VuZGFyaWVzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgQnJlYWtJdGVyYXRvciBnZXRXb3JkSW5zdGFuY2UoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldFdvcmRJbnN0YW5jZShMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIEJyZWFrSXRlcmF0b3IgdGhhdCBsb2NhdGVzIHdvcmQgYm91bmRhcmllcy4KKyAgICAgKiBAcGFyYW0gd2hlcmUgQSBsb2NhbGUgc3BlY2lmeWluZyB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIHRleHQgdG8gYmUKKyAgICAgKiBhbmFseXplZC4KKyAgICAgKiBAcmV0dXJuIEFuIGluc3RhbmNlIG9mIEJyZWFrSXRlcmF0b3IgdGhhdCBsb2NhdGVzIHdvcmQgYm91bmRhcmllcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEJyZWFrSXRlcmF0b3IgZ2V0V29yZEluc3RhbmNlKExvY2FsZSB3aGVyZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRCcmVha0luc3RhbmNlKHdoZXJlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWJtLjU5NworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXT1JEX0lOREVYLCAgICAgICAgICAgICAgICAgICAgICAgICAvL2libS41OTcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldvcmRCcmVha1J1bGVzIiwgICAgICAgICAgICAgICAgICAgLy9pYm0uNTk3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXb3JkQnJlYWtEaWN0aW9uYXJ5Iik7ICAgICAgICAgICAgIC8vaWJtLjU5NworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBuZXcgaW5zdGFuY2Ugb2YgQnJlYWtJdGVyYXRvciB0aGF0IGxvY2F0ZXMgbGVnYWwgbGluZS0KKyAgICAgKiB3cmFwcGluZyBwb3NpdGlvbnMuICBUaGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhlIHRleHQgYmVpbmcgYnJva2VuCisgICAgICogaXMgaW4gdGhlIGRlZmF1bHQgbG9jYWxlJ3MgbGFuZ3VhZ2UuCisgICAgICogQHJldHVybnMgQSBuZXcgaW5zdGFuY2Ugb2YgQnJlYWtJdGVyYXRvciB0aGF0IGxvY2F0ZXMgbGVnYWwKKyAgICAgKiBsaW5lLXdyYXBwaW5nIHBvc2l0aW9ucy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEJyZWFrSXRlcmF0b3IgZ2V0TGluZUluc3RhbmNlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRMaW5lSW5zdGFuY2UoTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIG5ldyBpbnN0YW5jZSBvZiBCcmVha0l0ZXJhdG9yIHRoYXQgbG9jYXRlcyBsZWdhbCBsaW5lLQorICAgICAqIHdyYXBwaW5nIHBvc2l0aW9ucy4KKyAgICAgKiBAcGFyYW0gd2hlcmUgQSBMb2NhbGUgc3BlY2lmeWluZyB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIHRleHQgYmVpbmcgYnJva2VuLgorICAgICAqIEByZXR1cm4gQSBuZXcgaW5zdGFuY2Ugb2YgQnJlYWtJdGVyYXRvciB0aGF0IGxvY2F0ZXMgbGVnYWwKKyAgICAgKiBsaW5lLXdyYXBwaW5nIHBvc2l0aW9ucy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEJyZWFrSXRlcmF0b3IgZ2V0TGluZUluc3RhbmNlKExvY2FsZSB3aGVyZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXRCcmVha0luc3RhbmNlKHdoZXJlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWJtLjU5NworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSU5FX0lOREVYLCAgICAgICAgICAgICAgICAgICAgICAgICAvL2libS41OTcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkxpbmVCcmVha1J1bGVzIiwgICAgICAgICAgICAgICAgICAgLy9pYm0uNTk3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJMaW5lQnJlYWtEaWN0aW9uYXJ5Iik7ICAgICAgICAgICAgIC8vaWJtLjU5NworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBuZXcgaW5zdGFuY2Ugb2YgQnJlYWtJdGVyYXRvciB0aGF0IGxvY2F0ZXMgbG9naWNhbC1jaGFyYWN0ZXIKKyAgICAgKiBib3VuZGFyaWVzLiAgVGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgdGhlIHRleHQgYmVpbmcgYW5hbHl6ZWQgaXMKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCBsb2NhbGUncyBsYW5ndWFnZS4KKyAgICAgKiBAcmV0dXJuIEEgbmV3IGluc3RhbmNlIG9mIEJyZWFrSXRlcmF0b3IgdGhhdCBsb2NhdGVzIGxvZ2ljYWwtY2hhcmFjdGVyCisgICAgICogYm91bmRhcmllcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEJyZWFrSXRlcmF0b3IgZ2V0Q2hhcmFjdGVySW5zdGFuY2UoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldENoYXJhY3Rlckluc3RhbmNlKExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBuZXcgaW5zdGFuY2Ugb2YgQnJlYWtJdGVyYXRvciB0aGF0IGxvY2F0ZXMgbG9naWNhbC1jaGFyYWN0ZXIKKyAgICAgKiBib3VuZGFyaWVzLgorICAgICAqIEBwYXJhbSB3aGVyZSBBIExvY2FsZSBzcGVjaWZ5aW5nIHRoZSBsYW5ndWFnZSBvZiB0aGUgdGV4dCBiZWluZyBhbmFseXplZC4KKyAgICAgKiBAcmV0dXJuIEEgbmV3IGluc3RhbmNlIG9mIEJyZWFrSXRlcmF0b3IgdGhhdCBsb2NhdGVzIGxvZ2ljYWwtY2hhcmFjdGVyCisgICAgICogYm91bmRhcmllcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEJyZWFrSXRlcmF0b3IgZ2V0Q2hhcmFjdGVySW5zdGFuY2UoTG9jYWxlIHdoZXJlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldEJyZWFrSW5zdGFuY2Uod2hlcmUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pYm0uNTk3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENIQVJBQ1RFUl9JTkRFWCwgICAgICAgICAgICAgICAgICAgIC8vaWJtLjU5NworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2hhcmFjdGVyQnJlYWtSdWxlcyIsICAgICAgICAgICAgICAvL2libS41OTcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoYXJhY3RlckJyZWFrRGljdGlvbmFyeSIpOyAgICAgICAgLy9pYm0uNTk3CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIG5ldyBpbnN0YW5jZSBvZiBCcmVha0l0ZXJhdG9yIHRoYXQgbG9jYXRlcyBzZW50ZW5jZSBib3VuZGFyaWVzLgorICAgICAqIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGUgdGV4dCBiZWluZyBhbmFseXplZCBpcyBpbiB0aGUgZGVmYXVsdCBsb2NhbGUncworICAgICAqIGxhbmd1YWdlLgorICAgICAqIEByZXR1cm4gQSBuZXcgaW5zdGFuY2Ugb2YgQnJlYWtJdGVyYXRvciB0aGF0IGxvY2F0ZXMgc2VudGVuY2UgYm91bmRhcmllcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEJyZWFrSXRlcmF0b3IgZ2V0U2VudGVuY2VJbnN0YW5jZSgpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0U2VudGVuY2VJbnN0YW5jZShMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgbmV3IGluc3RhbmNlIG9mIEJyZWFrSXRlcmF0b3IgdGhhdCBsb2NhdGVzIHNlbnRlbmNlIGJvdW5kYXJpZXMuCisgICAgICogQHBhcmFtIHdoZXJlIEEgTG9jYWxlIHNwZWNpZnlpbmcgdGhlIGxhbmd1YWdlIG9mIHRoZSB0ZXh0IGJlaW5nIGFuYWx5emVkLgorICAgICAqIEByZXR1cm4gQSBuZXcgaW5zdGFuY2Ugb2YgQnJlYWtJdGVyYXRvciB0aGF0IGxvY2F0ZXMgc2VudGVuY2UgYm91bmRhcmllcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEJyZWFrSXRlcmF0b3IgZ2V0U2VudGVuY2VJbnN0YW5jZShMb2NhbGUgd2hlcmUpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0QnJlYWtJbnN0YW5jZSh3aGVyZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2libS41OTcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0VOVEVOQ0VfSU5ERVgsICAgICAgICAgICAgICAgICAgICAgLy9pYm0uNTk3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZW50ZW5jZUJyZWFrUnVsZXMiLCAgICAgICAgICAgICAgIC8vaWJtLjU5NworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2VudGVuY2VCcmVha0RpY3Rpb25hcnkiKTsgICAgICAgICAvL2libS41OTcKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pYm0uNTk3CisKKyAgICBwcml2YXRlIHN0YXRpYyBCcmVha0l0ZXJhdG9yIGdldEJyZWFrSW5zdGFuY2UoTG9jYWxlIHdoZXJlLCAgICAgLy9pYm0uNTk3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0eXBlLCAgICAgICAgIC8vaWJtLjU5NworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgcnVsZXNOYW1lLCAvL2libS41OTcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGRpY3Rpb25hcnlOYW1lKSB7ICAvL2libS41OTcKKworICAgICAgICBpZiAoaXRlckNhY2hlW3R5cGVdICE9IG51bGwpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2libS41OTcKKyAgICAgICAgICAgIEJyZWFrSXRlcmF0b3JDYWNoZSBjYWNoZSA9IChCcmVha0l0ZXJhdG9yQ2FjaGUpIGl0ZXJDYWNoZVt0eXBlXS5nZXQoKTsgIC8vaWJtLjU5NworICAgICAgICAgICAgaWYgKGNhY2hlICE9IG51bGwpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2libS41OTcKKyAgICAgICAgICAgICAgICBpZiAoY2FjaGUuZ2V0TG9jYWxlKCkuZXF1YWxzKHdoZXJlKSkgeyAgICAgICAgICAgICAgLy9pYm0uNTk3CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZS5jcmVhdGVCcmVha0luc3RhbmNlKCk7ICAgICAgICAgICAgIC8vaWJtLjU5NworICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2libS41OTcKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pYm0uNTk3CisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWJtLjU5NworCisgICAgICAgIEJyZWFrSXRlcmF0b3IgcmVzdWx0ID0gY3JlYXRlQnJlYWtJbnN0YW5jZSh3aGVyZSwgICAgICAgICAgIC8vaWJtLjU5NworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSwgICAgICAgICAgICAvL2libS41OTcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVzTmFtZSwgICAgICAgLy9pYm0uNTk3CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5TmFtZSk7IC8vaWJtLjU5NworICAgICAgICBCcmVha0l0ZXJhdG9yQ2FjaGUgY2FjaGUgPSBuZXcgQnJlYWtJdGVyYXRvckNhY2hlKHdoZXJlLCByZXN1bHQpOyAgIC8vaWJtLjU5NworICAgICAgICBpdGVyQ2FjaGVbdHlwZV0gPSBuZXcgU29mdFJlZmVyZW5jZShjYWNoZSk7ICAgICAgICAgICAgICAgICAvL2libS41OTcKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pYm0uNTk3CisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWJtLjU5NworCisgICAgcHJpdmF0ZSBzdGF0aWMgQnJlYWtJdGVyYXRvciBjcmVhdGVCcmVha0luc3RhbmNlKExvY2FsZSB3aGVyZSwgIC8vaWJtLjU5NworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdHlwZSwgICAgICAvL2libS41OTcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHJ1bGVzTmFtZSwgIC8vaWJtLjU5NworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGljdGlvbmFyeU5hbWUpIHsgICAvL2libS41OTcKKworLy8JCVN5c3RlbS5vdXQucHJpbnRsbigicnVsZXNOYW1lOiAiK3J1bGVzTmFtZSk7CisvLwkJU3lzdGVtLm91dC5wcmludGxuKCJkaWN0aW9uYXJ5TmFtZTogIitkaWN0aW9uYXJ5TmFtZSk7CisgICAgICAgIFJlc291cmNlQnVuZGxlIGJ1bmRsZSA9IFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZSggICAgICAgICAgIC8vaWJtLjU5NworICAgICAgICAgICAgICAgICAgICAgICAgImNvbS5pYm0udGV4dC5yZXNvdXJjZXMuQnJlYWtJdGVyYXRvclJ1bGVzIiwgd2hlcmUpOyAgIC8vaWJtLjU5NworICAgICAgICBTdHJpbmdbXSBjbGFzc05hbWVzID0gYnVuZGxlLmdldFN0cmluZ0FycmF5KCJCcmVha0l0ZXJhdG9yQ2xhc3NlcyIpOyAgICAvL2libS41OTcKKworICAgICAgICBTdHJpbmcgcnVsZXMgPSBidW5kbGUuZ2V0U3RyaW5nKHJ1bGVzTmFtZSk7ICAgICAgICAgICAgICAgICAvL2libS41OTcKKyAgICAgICAgCisgICAgICAgIGlmIChjbGFzc05hbWVzW3R5cGVdLmVxdWFscygiUnVsZUJhc2VkQnJlYWtJdGVyYXRvciIpKSB7ICAgIC8vaWJtLjU5NworICAgICAgICAgICAgcmV0dXJuIG5ldyBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKHJ1bGVzKTsgICAgICAgICAgICAgICAvL2libS41OTcKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pYm0uNTk3CisgICAgICAgIGVsc2UgaWYgKGNsYXNzTmFtZXNbdHlwZV0uZXF1YWxzKCJEaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yIikpIHsgLy9pYm0uNTk3CisgICAgICAgICAgICB0cnkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWJtLjU5NworCQkJCS8vIFN5c3RlbS5vdXQucHJpbnRsbihkaWN0aW9uYXJ5TmFtZSk7CisgICAgICAgICAgICAgICAgT2JqZWN0IHQgPSBidW5kbGUuZ2V0T2JqZWN0KGRpY3Rpb25hcnlOYW1lKTsgICAvL2libS41OTcKKwkJCQkvLyBTeXN0ZW0ub3V0LnByaW50bG4odCk7CisgICAgICAgICAgICAgICAgVVJMIHVybCA9IChVUkwpdDsgICAvL2libS41OTcKKyAgICAgICAgICAgICAgICBJbnB1dFN0cmVhbSBkaWN0aW9uYXJ5ID0gdXJsLm9wZW5TdHJlYW0oKTsgICAgICAgICAgLy9pYm0uNTk3CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yKHJ1bGVzLCBkaWN0aW9uYXJ5KTsgLy9pYm0uNTk3CisgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWJtLjU5NworICAgICAgICAgICAgY2F0Y2goSU9FeGNlcHRpb24gZSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2libS41OTcKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pYm0uNTk3CisgICAgICAgICAgICBjYXRjaChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkgeyAgICAgICAgICAgICAgICAgICAgIC8vaWJtLjU5NworICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2libS41OTcKKyAgICAgICAgICAgIHJldHVybiBuZXcgUnVsZUJhc2VkQnJlYWtJdGVyYXRvcihydWxlcyk7ICAgICAgICAgICAgICAgLy9pYm0uNTk3CisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWJtLjU5NworICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2libS41OTcKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgYnJlYWsgaXRlcmF0b3IgY2xhc3MgXCIiICsgIC8vaWJtLjU5NworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZXNbdHlwZV0gKyAiXCIiKTsgICAgICAgICAgICAgICAvL2libS41OTcKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBsb2NhbGVzIGZvciB3aGljaCBCcmVha0l0ZXJhdG9ycyBjYW4gYmUgdXNlZC4KKyAgICAgKiBAcmV0dXJuIEFuIGFycmF5IG9mIExvY2FsZXMuICBBbGwgb2YgdGhlIGxvY2FsZXMgaW4gdGhlIGFycmF5IGNhbgorICAgICAqIGJlIHVzZWQgd2hlbiBjcmVhdGluZyBhIEJyZWFrSXRlcmF0b3IuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBzeW5jaHJvbml6ZWQgTG9jYWxlW10gZ2V0QXZhaWxhYmxlTG9jYWxlcygpCisgICAgeworICAgICAgICAvL0ZJWCBNRSAtIHRoaXMgaXMgYSBrbm93biBidWcuICBJdCBzaG91bGQgcmV0dXJuCisgICAgICAgIC8vYWxsIGxvY2FsZXMuCisgICAgICAgIHJldHVybiBMb2NhbGVEYXRhLmdldEF2YWlsYWJsZUxvY2FsZXMoIk51bWJlclBhdHRlcm5zIik7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgQnJlYWtJdGVyYXRvckNhY2hlIHsgICAgICAgICAgICAgICAgIC8vaWJtLjU5NworCisgICAgICAgIHByaXZhdGUgQnJlYWtJdGVyYXRvciBpdGVyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWJtLjU5NworICAgICAgICBwcml2YXRlIExvY2FsZSB3aGVyZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2libS41OTcKKworICAgICAgICBCcmVha0l0ZXJhdG9yQ2FjaGUoTG9jYWxlIHdoZXJlLCBCcmVha0l0ZXJhdG9yIGl0ZXIpIHsgICAgICAvL2libS41OTcKKyAgICAgICAgICAgIHRoaXMud2hlcmUgPSB3aGVyZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pYm0uNTk3CisgICAgICAgICAgICB0aGlzLml0ZXIgPSAoQnJlYWtJdGVyYXRvcikgaXRlci5jbG9uZSgpOyAgICAgICAgICAgICAgIC8vaWJtLjU5NworICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2libS41OTcKKworICAgICAgICBMb2NhbGUgZ2V0TG9jYWxlKCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2libS41OTcKKyAgICAgICAgICAgIHJldHVybiB3aGVyZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pYm0uNTk3CisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWJtLjU5NworCisgICAgICAgIEJyZWFrSXRlcmF0b3IgY3JlYXRlQnJlYWtJbnN0YW5jZSgpIHsgICAgICAgICAgICAgICAgICAgICAgIC8vaWJtLjU5NworICAgICAgICAgICAgcmV0dXJuIChCcmVha0l0ZXJhdG9yKSBpdGVyLmNsb25lKCk7ICAgICAgICAgICAgICAgICAgICAvL2libS41OTcKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pYm0uNTk3CisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vaWJtLjU5NworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9DaGluZXNlRGF0ZUZvcm1hdC5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9DaGluZXNlRGF0ZUZvcm1hdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQzMzk4YzkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L0NoaW5lc2VEYXRlRm9ybWF0LmphdmEKQEAgLTAsMCArMSwxMjYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvQXR0aWMvQ2hpbmVzZURhdGVGb3JtYXQuamF2YSx2ICQKKyAqICREYXRlOiAyMDAwLzExLzIxIDIwOjE5OjA4ICQKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqLworcGFja2FnZSBjb20uaWJtLnRleHQ7CitpbXBvcnQgY29tLmlibS51dGlsLio7CitpbXBvcnQgamF2YS50ZXh0LkZpZWxkUG9zaXRpb247CitpbXBvcnQgamF2YS50ZXh0LlBhcnNlUG9zaXRpb247CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKworLyoqCisgKiBBIGNvbmNyZXRlIHtAbGluayBEYXRlRm9ybWF0fSBmb3Ige0BsaW5rIGNvbS5pYm0udXRpbC5DaGluZXNlQ2FsZW5kYXJ9LgorICogVGhpcyBjbGFzcyBoYW5kbGVzIGEgPGNvZGU+Q2hpbmVzZUNhbGVuZGFyPC9jb2RlPi1zcGVjaWZpYyBmaWVsZCwKKyAqIDxjb2RlPkNoaW5lc2VDYWxlbmRhci5JU19MRUFQX01PTlRIPC9jb2RlPi4gIEl0IGFsc28gcmVkZWZpbmVzIHRoZQorICogaGFuZGxpbmcgb2YgdHdvIGZpZWxkcywgPGNvZGU+RVJBPC9jb2RlPiBhbmQgPGNvZGU+WUVBUjwvY29kZT4uICBUaGUKKyAqIGZvcm1lciBpcyBkaXNwbGF5ZWQgbnVtZXJpY2FsbHksIGluc3RlYWQgb2Ygc3ltYm9saWNhbGx5LCBzaW5jZSBpdCBpcworICogdGhlIG51bWVyaWMgY3ljbGUgbnVtYmVyIGluIDxjb2RlPkNoaW5lc2VDYWxlbmRhcjwvY29kZT4uICBUaGUgbGF0dGVyIGlzCisgKiBudW1lcmljLCBhcyBiZWZvcmUsIGJ1dCBoYXMgbm8gc3BlY2lhbCAyLWRpZ2l0IFkySyBiZWhhdmlvci4KKyAqCisgKiA8cD5XaXRoIHJlZ2FyZCB0byA8Y29kZT5DaGluZXNlQ2FsZW5kYXIuSVNfTEVBUF9NT05USDwvY29kZT4sIHRoaXMKKyAqIGNsYXNzIGhhbmRsZXMgcGFyc2luZyBzcGVjaWFsbHkuICBJZiBubyBzdHJpbmcgc3ltYm9sIGlzIGZvdW5kIGF0IGFsbCwKKyAqIHRoaXMgaXMgdGFrZW4gYXMgZXF1aXZhbGVudCB0byBhbiA8Y29kZT5JU19MRUFQX01PTlRIPC9jb2RlPiB2YWx1ZSBvZgorICogemVyby4gIFRoaXMgYWxsb3dzIGZvcm1hdHMgdG8gZGlzcGxheSBhIHNwZWNpYWwgc3RyaW5nIChlLmcuLCAiKiIpIGZvcgorICogbGVhcCBtb250aHMsIGJ1dCBubyBzdHJpbmcgZm9yIG5vcm1hbCBtb250aHMuCisgKgorICogPHA+U3VtbWFyeSBvZiBmaWVsZCBjaGFuZ2VzIHZzLiB7QGxpbmsgU2ltcGxlRGF0ZUZvcm1hdH06PHByZT4KKyAqIFN5bWJvbCAgIE1lYW5pbmcgICAgICAgICAgICAgICAgIFByZXNlbnRhdGlvbiAgICAgICAgRXhhbXBsZQorICogLS0tLS0tICAgLS0tLS0tLSAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tICAgICAgICAtLS0tLS0tCisgKiBHICAgICAgICBjeWNsZSAgICAgICAgICAgICAgICAgICAoTnVtYmVyKSAgICAgICAgICAgIDc4CisgKiB5ICAgICAgICB5ZWFyIG9mIGN5Y2xlICgxLi42MCkgICAoTnVtYmVyKSAgICAgICAgICAgIDE3CisgKiBsICAgICAgICBpcyBsZWFwIG1vbnRoICAgICAgICAgICAoVGV4dCkgICAgICAgICAgICAgIDQ2MzcKKyAqIDwvcHJlPgorICoKKyAqIEBzZWUgY29tLmlibS51dGlsLkNoaW5lc2VDYWxlbmRhcgorICogQHNlZSBDaGluZXNlRGF0ZUZvcm1hdFN5bWJvbHMKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqLworcHVibGljIGNsYXNzIENoaW5lc2VEYXRlRm9ybWF0IGV4dGVuZHMgU2ltcGxlRGF0ZUZvcm1hdCB7CisKKyAgICAvLyBUT0RPIEZpbmlzaCB0aGUgY29uc3RydWN0b3JzCisKKyAgICBwdWJsaWMgQ2hpbmVzZURhdGVGb3JtYXQoU3RyaW5nIHBhdHRlcm4sIExvY2FsZSBsb2NhbGUpIHsKKyAgICAgICAgc3VwZXIocGF0dGVybiwgbmV3IENoaW5lc2VEYXRlRm9ybWF0U3ltYm9scyhsb2NhbGUpKTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgU3RyaW5nIHN1YkZvcm1hdChjaGFyIGNoLCBpbnQgY291bnQsIGludCBiZWdpbk9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIHBvcywgRGF0ZUZvcm1hdFN5bWJvbHMgZm9ybWF0RGF0YSkgIHsKKyAgICAgICAgc3dpdGNoIChjaCkgeworICAgICAgICBjYXNlICdHJzogLy8gJ0cnIC0gRVJBCisgICAgICAgICAgICByZXR1cm4gemVyb1BhZGRpbmdOdW1iZXIoY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkVSQSksIDEsIDkpOworICAgICAgICBjYXNlICdsJzogLy8gJ2wnIC0gSVNfTEVBUF9NT05USAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIENoaW5lc2VEYXRlRm9ybWF0U3ltYm9scyBzeW1ib2xzID0KKyAgICAgICAgICAgICAgICAgICAgKENoaW5lc2VEYXRlRm9ybWF0U3ltYm9scykgZm9ybWF0RGF0YTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3ltYm9scy5nZXRMZWFwTW9udGgoY2FsZW5kYXIuZ2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoaW5lc2VDYWxlbmRhci5JU19MRUFQX01PTlRIKSk7CisgICAgICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuc3ViRm9ybWF0KGNoLCBjb3VudCwgYmVnaW5PZmZzZXQsIHBvcywgZm9ybWF0RGF0YSk7CisgICAgICAgIH0KKyAgICB9ICAgIAorCisgICAgcHJvdGVjdGVkIGludCBzdWJQYXJzZShTdHJpbmcgdGV4dCwgaW50IHN0YXJ0LCBjaGFyIGNoLCBpbnQgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIG9iZXlDb3VudCwgYm9vbGVhbltdIGFtYmlndW91c1llYXIpIHsKKyAgICAgICAgaWYgKGNoICE9ICdHJyAmJiBjaCAhPSAnbCcgJiYgY2ggIT0gJ3knKSB7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuc3ViUGFyc2UodGV4dCwgc3RhcnQsIGNoLCBjb3VudCwgb2JleUNvdW50LCBhbWJpZ3VvdXNZZWFyKTsKKyAgICAgICAgfQorCisgICAgICAgIFBhcnNlUG9zaXRpb24gcG9zID0gbmV3IFBhcnNlUG9zaXRpb24oc3RhcnQpOworCisgICAgICAgIC8vIElmIHRoZXJlIGFyZSBhbnkgc3BhY2VzIGhlcmUsIHNraXAgb3ZlciB0aGVtLiAgSWYgd2UgaGl0IHRoZSBlbmQKKyAgICAgICAgLy8gb2YgdGhlIHN0cmluZywgdGhlbiBmYWlsLgorICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICBpZiAocG9zLmdldEluZGV4KCkgPj0gdGV4dC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIHJldHVybiAtc3RhcnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjaGFyIGMgPSB0ZXh0LmNoYXJBdChwb3MuZ2V0SW5kZXgoKSk7CisgICAgICAgICAgICBpZiAoYyAhPSAnICcgJiYgYyAhPSAnXHQnKSB7IC8vIFRPRE8gU2hvdWxkbid0IHRoaXMgYmUgaXNXaGl0ZXNwYWNlPworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcG9zLnNldEluZGV4KHBvcy5nZXRJbmRleCgpKzEpOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChjaCkgeworICAgICAgICBjYXNlICdHJzogLy8gJ0cnIC0gRVJBCisgICAgICAgIGNhc2UgJ3knOiAvLyAneScgLSBZRUFSLCBidXQgd2l0aG91dCB0aGUgMi1kaWdpdCBZMksgYWRqdXN0bWVudAorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIE51bWJlciBudW1iZXIgPSBudWxsOworICAgICAgICAgICAgICAgIGlmIChvYmV5Q291bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChzdGFydCtjb3VudCkgPiB0ZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLXN0YXJ0OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG51bWJlciA9IG51bWJlckZvcm1hdC5wYXJzZSh0ZXh0LnN1YnN0cmluZygwLCBzdGFydCtjb3VudCksIHBvcyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbnVtYmVyID0gbnVtYmVyRm9ybWF0LnBhcnNlKHRleHQsIHBvcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChudW1iZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLXN0YXJ0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSBudW1iZXIuaW50VmFsdWUoKTsKKyAgICAgICAgICAgICAgICBjYWxlbmRhci5zZXQoY2ggPT0gJ0cnID8gQ2FsZW5kYXIuRVJBIDogQ2FsZW5kYXIuWUVBUiwgdmFsdWUpOworICAgICAgICAgICAgICAgIHJldHVybiBwb3MuZ2V0SW5kZXgoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSAnbCc6IC8vICdsJyAtIElTX0xFQVBfTU9OVEgKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBDaGluZXNlRGF0ZUZvcm1hdFN5bWJvbHMgc3ltYm9scyA9CisgICAgICAgICAgICAgICAgICAgIChDaGluZXNlRGF0ZUZvcm1hdFN5bWJvbHMpIGdldFN5bWJvbHMoKTsKKyAgICAgICAgICAgICAgICBpbnQgcmVzdWx0ID0gbWF0Y2hTdHJpbmcodGV4dCwgc3RhcnQsIENoaW5lc2VDYWxlbmRhci5JU19MRUFQX01PTlRILAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xzLmlzTGVhcE1vbnRoKTsKKyAgICAgICAgICAgICAgICAvLyBUcmVhdCB0aGUgYWJzZW5jZSBvZiBhbnkgbWF0Y2hpbmcgc3RyaW5nIGFzIHNldHRpbmcKKyAgICAgICAgICAgICAgICAvLyBJU19MRUFQX01PTlRIIHRvIGZhbHNlLgorICAgICAgICAgICAgICAgIGlmIChyZXN1bHQ8MCkgeworICAgICAgICAgICAgICAgICAgICBjYWxlbmRhci5zZXQoQ2hpbmVzZUNhbGVuZGFyLklTX0xFQVBfTU9OVEgsIDApOworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBzdGFydDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAwOyAvLyBUaGlzIGNhbiBuZXZlciBoYXBwZW4KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvQ2hpbmVzZURhdGVGb3JtYXRTeW1ib2xzLmphdmEgYi9zcmMvY29tL2libS90ZXh0L0NoaW5lc2VEYXRlRm9ybWF0U3ltYm9scy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmRkZTU2ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L0NoaW5lc2VEYXRlRm9ybWF0U3ltYm9scy5qYXZhCkBAIC0wLDAgKzEsNjAgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvQXR0aWMvQ2hpbmVzZURhdGVGb3JtYXRTeW1ib2xzLmphdmEsdiAkCisgKiAkRGF0ZTogMjAwMC8xMS8yMSAyMDoxOTowOCAkCisgKiAkUmV2aXNpb246IDEuMSAkCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXh0OworaW1wb3J0IGNvbS5pYm0udXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOworaW1wb3J0IGphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb247CisKKy8qKgorICogQSBzdWJjbGFzcyBvZiB7QGxpbmsgRGF0ZUZvcm1hdFN5bWJvbHN9IGZvciB7QGxpbmsgQ2hpbmVzZURhdGVGb3JtYXR9LgorICogVGhpcyBjbGFzcyBjb250YWlucyBhZGRpdGlvbmFsIHN5bWJvbHMgY29ycmVzcG9uZGluZyB0byB0aGUKKyAqIDxjb2RlPkNoaW5lc2VDYWxlbmRhci5JU19MRUFQX01PTlRIPC9jb2RlPiBmaWVsZC4KKyAqCisgKiBAc2VlIENoaW5lc2VEYXRlRm9ybWF0CisgKiBAc2VlIGNvbS5pYm0udXRpbC5DaGluZXNlQ2FsZW5kYXIKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqLworcHVibGljIGNsYXNzIENoaW5lc2VEYXRlRm9ybWF0U3ltYm9scyBleHRlbmRzIERhdGVGb3JtYXRTeW1ib2xzIHsKKyAgICAKKyAgICAvKioKKyAgICAgKiBQYWNrYWdlLXByaXZhdGUgYXJyYXkgdGhhdCBDaGluZXNlRGF0ZUZvcm1hdCBuZWVkcyB0byBiZSBhYmxlIHRvCisgICAgICogcmVhZC4KKyAgICAgKi8KKyAgICBTdHJpbmcgaXNMZWFwTW9udGhbXTsgLy8gRG8gTk9UIGFkZCA9bnVsbCBpbml0aWFsaXplcgorCisgICAgcHVibGljIENoaW5lc2VEYXRlRm9ybWF0U3ltYm9scygpIHsKKyAgICAgICAgdGhpcyhMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgQ2hpbmVzZURhdGVGb3JtYXRTeW1ib2xzKExvY2FsZSBsb2NhbGUpIHsKKyAgICAgICAgc3VwZXIoQ2hpbmVzZUNhbGVuZGFyLmNsYXNzLCBsb2NhbGUpOworICAgIH0KKworICAgIHB1YmxpYyBDaGluZXNlRGF0ZUZvcm1hdFN5bWJvbHMoQ2FsZW5kYXIgY2FsLCBMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIHN1cGVyKGNhbD09bnVsbD9udWxsOmNhbC5nZXRDbGFzcygpLCBsb2NhbGUpOworICAgIH0KKworICAgIC8vIE5ldyBBUEkKKyAgICBwdWJsaWMgU3RyaW5nIGdldExlYXBNb250aChpbnQgaXNMZWFwTW9udGgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuaXNMZWFwTW9udGhbaXNMZWFwTW9udGhdOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlIERhdGVGb3JtYXRTeW1ib2xzLgorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIGNvbnN0cnVjdENhbGVuZGFyU3BlY2lmaWMoUmVzb3VyY2VCdW5kbGUgYnVuZGxlKSB7CisgICAgICAgIHN1cGVyLmNvbnN0cnVjdENhbGVuZGFyU3BlY2lmaWMoYnVuZGxlKTsKKyAgICAgICAgaWYgKGJ1bmRsZSAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGlzTGVhcE1vbnRoID0gYnVuZGxlLmdldFN0cmluZ0FycmF5KCJJc0xlYXBNb250aCIpOworICAgICAgICAgICAgfSBjYXRjaCAoTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIGUpIHt9CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L0NvbXBvc2VEYXRhLmphdmEgYi9zcmMvY29tL2libS90ZXh0L0NvbXBvc2VEYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmViYjA2MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvQ29tcG9zZURhdGEuamF2YQpAQCAtMCwwICsxLDE0NTkgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogICBDb3B5cmlnaHQgKGMpIDE5OTctMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworKiAgIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqID4gVEhJUyBGSUxFIFdBUyBNQUNISU5FIEdFTkVSQVRFRCA8CisqID4gICAgICAgRE8gTk9UIEVESVQgQlkgSEFORCAgICAgICA8CisqID4gICAgICBSVU4gVE9PTCBUTyBSRUdFTkVSQVRFICAgICA8CisqIFRvb2w6IGNvbS5pYm0udGV4dC5Ob3JtYWxpemVyCisqIENyZWF0aW9uIGRhdGU6IEZyaSBKdWwgMjEgMTM6NDE6NDUgUERUIDIwMDAKKyovCisKK3BhY2thZ2UgY29tLmlibS50ZXh0OworaW1wb3J0IGNvbS5pYm0udXRpbC4qOworCitjbGFzcyBDb21wb3NlRGF0YSB7CisgICAgc3RhdGljIGZpbmFsIHNob3J0IEJBU0VfQ09VTlQgPSA3NDg7CisgICAgc3RhdGljIGZpbmFsIHNob3J0IENPTUJJTklOR19DT1VOVCA9IDU1OworICAgIHN0YXRpYyBmaW5hbCBpbnQgTUFYX0NPTVBBVCA9IDQzNDE7CisgICAgc3RhdGljIGZpbmFsIGludCBNQVhfQ0FOT05JQ0FMID0gNTE5OTsKKyAgICBzdGF0aWMgZmluYWwgY2hhciBNQVhfQ09NUE9TRUQgPSAweGZiMWQ7CisgICAgc3RhdGljIGZpbmFsIGludCBNQVhfSU5ERVggPSA4OTgyOworICAgIHN0YXRpYyBmaW5hbCBpbnQgSU5JVElBTF9KQU1PX0lOREVYID0gODk4MzsKKyAgICBzdGF0aWMgZmluYWwgaW50IE1FRElBTF9KQU1PX0lOREVYID0gODk4NDsKKyAgICBzdGF0aWMgZmluYWwgaW50IE1BWF9CQVNFUyA9IDEwMjQ7CisgICAgc3RhdGljIGZpbmFsIGludCBNQVhfQ09NQklORSA9IDY0OworICAgIHN0YXRpYyBmaW5hbCBpbnQgVFlQRV9NQVNLID0gMHg3OworICAgIHN0YXRpYyBmaW5hbCBpbnQgSU5ERVhfU0hJRlQgPSAzOworICAgIHN0YXRpYyBmaW5hbCBpbnQgSUdOT1JFID0gMDsKKyAgICBzdGF0aWMgZmluYWwgaW50IEJBU0UgPSAxOworICAgIHN0YXRpYyBmaW5hbCBpbnQgTk9OX0NPTVBPU0lOR19DT01CSU5JTkcgPSAyOworICAgIHN0YXRpYyBmaW5hbCBpbnQgQ09NQklOSU5HID0gMzsKKyAgICBzdGF0aWMgZmluYWwgaW50IElOSVRJQUxfSkFNTyA9IDQ7CisgICAgc3RhdGljIGZpbmFsIGludCBNRURJQUxfSkFNTyA9IDU7CisgICAgc3RhdGljIGZpbmFsIGludCBGSU5BTF9KQU1PID0gNjsKKyAgICBzdGF0aWMgZmluYWwgaW50IEhBTkdVTCA9IDc7CisKKyAgICBzdGF0aWMgZmluYWwgQ29tcGFjdENoYXJBcnJheSBsb29rdXAgPSBuZXcgQ29tcGFjdENoYXJBcnJheSgKKyAgICAgICAgIlwwMDBcdTA4MDBcMDAwIEBgXDAwMFx1MDA4MFx1MDBBMFx1MDBDMFx1MDBFMFx1MDEwMFx1MDEyMFx1MDE0MFwwMDBcdTAxNjAiKworICAgICAgICAiXHUwMTgwXHUwMUEwXHUwMUMwXHUwMUUwXDAwMFwwMDBcdTAyMDBcdTAyMjBcdTAyNDBcdTAyNjBcdTAyODBcdTAyQTBcdTAyQzAiKworICAgICAgICAiXHUwMkUwXHUwMzAwXHUwMzIwXHUwMzQwXHUwMzYwXHUwMzgwXHUwM0EwXHUwM0MwXHUwM0UwXHUwNDAwXDAwMFx1MDQyMCIrCisgICAgICAgICJcdTA0NDBcdUE1QTVcMDA0XDAwMFx1MDQ2MFx1MDQ4MFx1MDRBMFwwMDBcMDAwXHUwNEMwXHUwNEUwXHUwNTAwXDAwMFwwMDAiKworICAgICAgICAiXHUwNTIwXHUwNTQwXHUwNTYwXHUwNTgwXHUwNUEwXHVBNUE1XDAxNlwwMDBcdTA1QzBcdTA1RTBcMDAwXDAwMFx1MDYwMCIrCisgICAgICAgICJcdTA2MjBcMDAwXDAwMFx1MDY0MFx1MDY2MFwwMDBcMDAwXHUwNjgwXHUwNkEwXDAwMFwwMDBcdTA2QzBcdTA2RTBcMDAwIisKKyAgICAgICAgIlx1MDcwMFx1MDcyMFx1MDc0MFwwMDBcMDAwXDAwMFx1MDc2MFwwMDBcMDAwXHUwNzgwXHUwN0EwXDAwMFwwMDBcdTA3QzAiKworICAgICAgICAiXHUwN0UwXDAwMFwwMDBcMDAwXHUwODAwXDAwMFwwMDBcdTA4MjBcdTA4NDBcMDAwXDAwMFx1MDg2MFx1MDg4MFwwMDBcdTA4QTAiKworICAgICAgICAiXHUwOEMwXHUwOEUwXHUwOTAwXHUwOTIwXHUwOTQwXHUwOTYwXDAwMFwwMDBcdTA5ODBcdUE1QTVcMDA2XDAwMFx1MDlBMCIrCisgICAgICAgICJcdTA5QTBcdTA5QTBcdTA5QzBcdTA5RTBcdTBBMDBcdTBBMjBcdTBBNDBcdUE1QTUuXDAwMFx1MEE2MFx1QTVBNVwwMDYiKworICAgICAgICAiXDAwMFx1MEE4MFx1QTVBNSpcMDAwXHUwQUEwXHUwQUMwXHUwQUUwXHUwQjAwXHUwQjIwXHUwQjQwXHUwQjYwXHUwQjgwIisKKyAgICAgICAgIlx1MEJBMFx1MEJDMFx1MEJFMFx1MEMwMFx1MEMyMFx1MEM0MFx1MEM2MFx1MEM4MFx1MENBMFx1MENDMFx1MENFMFx1MEQwMCIrCisgICAgICAgICJcdTBEMjBcdTBENDBcdTBENjBcdTBEODBcdTBEQTBcdTBEQzBcdTBERTBcdTBFMDBcdTBFMjBcMDAwXHUwRTQwXDAwMFx1MEU2MCIrCisgICAgICAgICJcdTBFODBcdTBFQTBcdTBFQzBcdTBFRTBcdTBGMDBcMDAwXDAwMFwwMDBcdTBGMjBcdUE1QTVcMDExXDAwMFx1MEY0MFx1MEY2MCIrCisgICAgICAgICJcdTBGODBcdTBGQTBcdTBGQzBcdUE1QTVMXDAwMFx1MEZFMFwwMDBcMDAwXHUxMDAwXHUxMDIwXHUxMDQwXHUxMDYwXHUxMDgwIisKKyAgICAgICAgIlx1MTBBMFx1MTBDMFx1MTBFMFwwMDBcdTExMDBcdTExMjBcdTExNDBcdTExNjBcdTExODBcdTExQTBcdTExQzBcdTExRTAiKworICAgICAgICAiXDAwMFx1MTIwMFx1MTIyMFx1MTI0MFx1MTI2MFwwMDBcMDAwXDAwMFx1MTI4MFx1MTJBMFx1MTJDMFx1MTJFMFx1MTMwMCIrCisgICAgICAgICJcdTEzMjBcdTEzNDBcdTEzNjBcdTEzODBcdTEzQTBcdTEzQzBcdTEzRTBcdTE0MDBcdTE0MjBcdTE0NDBcdTE0NjBcdUE1QTUiKworICAgICAgICAiXHUwM0MwXDAwMFx1QTVBNVx1MDE1RFx1MTQ4MFx1MTRBMFx1QTVBNVx1MDEwQVwwMDBcdTE0QzBcdTE0RTBcdTE1MDBcdTE1MjAiKworICAgICAgICAiXHUxNTQwXHUxNTYwXHUxNTgwXHUxNUEwXHUxNUMwXHUxNUUwXHVBNUE1XDAwNlwwMDBcdTE2MDBcdTE2MjBcdTE2NDBcdTE2NjAiKworICAgICAgICAiXHUxNjgwXHUxNkEwXHUxNkMwXHUxNkUwXHUxNzAwXHUxNzIwXHUxNzQwXHUxNzYwXHUxNzgwXHUxN0EwXHUxN0MwXHUxN0UwIisKKyAgICAgICAgIlx1MTgwMFx1MTgyMFx1MTg0MFx1MTg2MFx1MTg4MFx1MThBMFx1MThDMFx1MThFMFwwMDBcdTE5MDBcdTE5MjBcdTE5NDAiKworICAgICAgICAiXHUxOTYwXHUxOTgwXHUxOUEwXHUxOUMwXHUxOUUwXHUxQTAwXHUxQTIwXHUxQTQwXHUxQTYwXHUxQTgwXHUxQUEwXHUxQUMwIgorICAgICAgICAsCisgICAgICAgICJcMDAwXHUxQUUwXHVBNUE1PFwwMDBcMDIxXDAzMSlcMDAwXDAwMDlJUWFpcXlcdTAwODFcdTAwODlcdTAwOTFcdTAwOTkiKworICAgICAgICAiXHUwMEExXHUwMEE5XHUwMEIxXHUwMEI5XHUwMEMxXDAwMFx1MDBDOVx1MDBEMVx1MDBEOVx1MDBFMVx1MDBFOVx1MDBGMSIrCisgICAgICAgICJcdTAwRjlcdTAxMDFcdTAxMDlcdUE1QTVcMDA2XDAwMFx1MDExMVx1MDExOVx1MDEyMVx1MDEyOVx1MDEzMVx1MDEzOVx1MDE0MSIrCisgICAgICAgICJcdTAxNDlcdTAxNTFcdTAxNTlcdTAxNjFcdTAxNjlcdTAxNzFcdTAxNzlcdTAxODFcdTAxODlcMDAwXHUwMTkxXHUwMTk5IisKKyAgICAgICAgIlx1MDFBMVx1MDFBOVx1MDFCMVx1MDFCOVx1MDFDMVx1MDFDOVx1MDFEMVx1QTVBNVwwMDVcMDAwcFx1QTVBNVwwMDdcMDAwIisKKyAgICAgICAgIlwwMTJcMDAwXHUwMDgwXHVBNUE1XDAwNFwwMDBcdTAwOTBcMDAwXDAwMFx1MDBBOFx1MDBCOFx1MDBDOFx1MDBFMFwwMDAiKworICAgICAgICAiXDAwMFx1MDBGMFx1MDEwOFx1MDExOFwwMDBcdTAxMjhcdTAxNDhcdTAxNjhcMDAwXHUwMUQ5XHUwMUUxXHUwMUU5XHUwMUYxIisKKyAgICAgICAgIlx1MDFGOVx1MDIwMVx1MDIwOVx1MDIxMVx1MDIxOVx1MDIyMVx1MDIyOVx1MDIzMVx1MDIzOVx1MDI0MVx1MDI0OVx1MDI1MSIrCisgICAgICAgICJcMDAwXHUwMjU5XHUwMjYxXHUwMjY5XHUwMjcxXHUwMjc5XHUwMjgxXDAwMFx1MDI4OVx1MDI5MVx1MDI5OVx1MDJBMVx1MDJBOSIrCisgICAgICAgICJcdTAyQjFcMDAwXDAwMFx1MDJCOVx1MDJDMVx1MDJDOVx1MDJEMVx1MDJEOVx1MDJFMVx1MDJFOVx1MDJGMVx1MDJGOVx1MDMwMSIrCisgICAgICAgICJcdTAzMDlcdTAzMTFcdTAzMTlcdTAzMjFcdTAzMjlcdTAzMzFcMDAwXHUwMzM5XHUwMzQxXHUwMzQ5XHUwMzUxXHUwMzU5IisKKyAgICAgICAgIlx1MDM2MVwwMDBcdTAzNjlcdTAzNzFcdTAzNzlcdTAzODFcdTAzODlcdTAzOTFcMDAwXHUwMzk5XHUwM0ExXHUwM0E5XHUwM0IxIisKKyAgICAgICAgIlx1MDNCOVwwMDBcMDAwXHUwM0MxXHUwM0M5XHUwM0QxXHUwM0Q5XHUwM0UxXHUwM0U5XHUwM0YxXHUwM0Y5XHUwNDAxXHUwNDA5IisKKyAgICAgICAgIlwwMDBcMDAwXHUwNDExXHUwNDE5XHUwNDIxXHUwNDI5XHUwNDMxXHUwNDM5XDAwMFwwMDBcdTA0NDFcdTA0NDlcdTA0NTEiKworICAgICAgICAiXHUwNDU5XHUwNDYxXHUwNDY5XHUwNDcxXHUwNDc5XDAwMFwwMDBcdTA0ODFcdTA0ODlcMDAwXDAwMFx1MDQ5MVx1MDQ5OSIrCisgICAgICAgICJcdTA0QTFcdTA0QTlcdTA0QjFcdTA0QjlcMDAwXDAwMFx1MDRDMVwwMDBcdTAxODhcdTAxQTBcdUE1QTVcMDA1XDAwMFx1MDRDOSIrCisgICAgICAgICJcdTA0RDFcMDAwXDAwMFx1MDREOVx1MDRFMVx1MDFCOFx1MDFEMFwwMDBcMDAwXHUwNEU5XHUwNEYxXDAwMFwwMDBcdTA0RjkiKworICAgICAgICAiXHUwNTAxXHUwMUU4XDAwMFwwMDBcdTA1MDlcdTA1MTFcdTA1MTlcdTA1MjFcdTA1MjlcdTA1MzFcMDAwXDAwMFx1MDUzOSIrCisgICAgICAgICJcdTA1NDFcMDAwXDAwMFx1MDU0OVx1MDU1MVx1MDU1OVx1MDU2MVx1MDU2OVx1MDU3MVwwMDBcMDAwXHUwNTc5XHUwNTgxIisKKyAgICAgICAgIlwwMDBcMDAwXHUwNTg5XHUwNTkxXDAwMFwwMDBcdTA1OTlcdTA1QTFcdTA1QTlcdTA1QjFcdTA1QjlcdTA1QzFcdTA1QzkiKworICAgICAgICAiXHUwNUQxXHUwNUQ5XHUwNUUxXDAwMFwwMDBcdTA1RTlcdTA1RjFcdTA1RjlcdTA2MDFcdTA2MDlcdTA2MTFcdTA2MTlcdTA2MjEiKworICAgICAgICAiXHUwNjI5XHUwNjMxXHUwNjM5XDA0Mlx1MDY0MVx1MDY0OVx1QTVBNVwwMTVcMDAwXHUwNjUxXHUwNjU5XHVBNUE1XDAwNiIrCisgICAgICAgICJcMDAwXHUwNjYxXHVBNUE1XDAxNFwwMDBcdTAyMDBcdTAyMjBcdTAyNDBcdTAyNjBcdTAyNzhcdTAyOTBcdTAyQThcdTAyQzAiKworICAgICAgICAiXHUwMkQ4XHUwNjY5XHUwNjcxXHUwNjc5XHUwNjgxXHUwNjg5XHUwNjkxXHUwNjk5XHUwNkExXHUwNkE5XHUwNkIxXHUwNkI5IisKKyAgICAgICAgIlx1MDZDMVx1MDZDOVx1MDZEMVx1MDZEOVx1MDZFMVwwMDBcdTA2RTlcdTA2RjFcdTA2RjlcdTA3MDFcdUE1QTVcMDA0XDAwMCIrCisgICAgICAgICJcdTA3MDlcdTA3MTFcdTA3MTlcdTA3MjFcdTA3MjlcdTA3MzFcdUE1QTVcMDA1XDAwMFx1MDJGMFx1MDMwOFx1MDMyMFx1MDczOSIrCisgICAgICAgICJcdTA3NDFcMDAwXDAwMFx1MDc0OVx1MDc1MVx1MDc1OVx1MDc2MVx1QTVBNVwwMDRcMDAwXHUwNzY5XHUwNzcxXHUwNzc5IisKKyAgICAgICAgIlx1MDc4MVx1MDc4OVx1MDc5MVx1MDc5OVx1MDdBMVx1MDdBOVx1MDdCMVx1MDdCOVx1MDdDMVx1MDdDOVx1MDdEMVx1MDdEOSIrCisgICAgICAgICJcdTA3RTFcdTA3RTlcdTA3RjFcdTA3RjlcdTA4MDFcdTA4MDlcdTA4MTFcdTA4MTlcdTA4MjFcdTA4MjlcdTA4MzFcdTA4MzkiKworICAgICAgICAiXHUwODQxXDAwMFwwMDBcdTA4NDlcdTA4NTFcdUE1QTVcMDA2XDAwMFx1MDg1OVx1MDg2MVx1MDg2OVx1MDg3MVx1MDg3OSIrCisgICAgICAgICJcdTA4ODFcdTA4ODlcdTA4OTFcdTA4OTlcdTA4QTFcdTA4QTlcdTA4QjFcdTA4QjlcdTA4QzFcdUE1QTVcMDM2XDAwMFx1MDhDOSIrCisgICAgICAgICJcdUE1QTVcMDM1XDAwMFx1MDMzOFx1MDM0OFx1MDFBOFx1MDM1OFx1MDM2OFx1MDM3OFx1MDM4OFx1MDM5OFx1MDNBOFx1QTVBNSIrCisgICAgICAgICJcMDM3XDAwMFx1MDNCOFx1MDNEMFx1MDNFOFx1MDQwMFx1MDQxOFx1MDQzMFwwMDBcMDAwXHUwNDQ4XHUwNDU4IFx1MDQ2OCIrCisgICAgICAgICJcdTA0NzhcdUE1QTVcMDMzXDAwMFwwMTNcMDIzXDAzMyMrXHUwMUJCMztDS1NbY1x1MDFCQlx1MDFCQmtcdTAxQkJzXHUwMUJCIisKKyAgICAgICAgIntcdTAwODNcdTAxQzNcdUE1QTVcMDA0XHUwMUNCXHUwMUMzXHUwMDhCXHVBNUE1XDAwNVx1MDFDQlx1MDFEM1x1MDFEMyIrCisgICAgICAgICJcdTAwOTNcdTAwOUJcdTAwQTNcdTAwQUJcdTAwQjNcdTAwQkJcdUE1QTVcMDA0XHUwMUNCXHUwMEMzXHUwMENCXHUwMUNCIisKKyAgICAgICAgIlx1MDBEM1x1MDBEQlx1MDFDQlx1MDFDQlx1QTVBNVwwMDRcdTAxREJcdTAwRTNcdUE1QTVcMDA0XHUwMUNCXHUwMUJCXHUwMUJCIisKKyAgICAgICAgIlx1MDFCQlx1ODdCOFx1ODdDOFx1MDBFQlx1ODdEOFx1ODdFOFx1MDBGM1x1MDFCQlx1MDFDQlx1MDFDQlx1MDFDQlx1MDFCQiIrCisgICAgICAgICJcdTAxQkJcdTAxQkJcdTAxQ0JcdTAxQ0JcdUE1QTVcMDIxXDAwMFx1MDFFM1x1MDFFM1x1MDFFQlx1QTVBNVwwMjFcMDAwIisKKyAgICAgICAgIlx1ODgwMFx1QTVBNVwwMDVcMDAwXHUwNDg4XDAwMFwwMDBcMDAwXHU4ODEwXHVBNUE1XDAwNVwwMDBcdTAwQzhcdTA0QTAiKworICAgICAgICAiXDAwMFx1ODgyMFx1QTVBNVwwMTFcMDAwXHUwOEQxXDAwMFwwMDBcMDAwXHUwOEQ5XDAwMFx1MDhFMVwwMDBcdTA4RTlcdUE1QTUiKworICAgICAgICAiXDAwNVwwMDBcdTA4RjFcMDAwXHUwOEY5XDAwMFwwMDBcMDAwXHUwOTAxXDAwMFwwMDBcMDAwXHUwOTA5XDAwMFwwMDBcdTA5MTEiKworICAgICAgICAiXDAwMFx1MDkxOVwwMDBcMDAwXHUwOTIxXDAwMFwwMDBcMDAwXHUwOTI5XDAwMFx1MDkzMVwwMDBcdTA5MzlcdUE1QTVcMDA1IisKKyAgICAgICAgIlwwMDBcdTA5NDFcMDAwXHUwOTQ5XDAwMFwwMDBcMDAwXHUwOTUxXDAwMFwwMDBcMDAwXHUwOTU5XHUwOTYxXHUwOTY5XDAwMCIrCisgICAgICAgICJcMDAwXHUwOTcxXDAwMFx1MDRDMFx1MDREMDJcdTA0RTBcdTA0RjhcdTA1MTBcdTA1MjBcdUE1QTVcMDMxXDAwMFx1MDUzMCIrCisgICAgICAgICJcdTA1NDBcdTA1NTBcdUE1QTVcMDIzXDAwMFx1MDk3OVx1QTVBNVwwMTFcMDAwXHUwOTgxXDAwMFwwMDBcdTA5ODlcMDAwIisKKyAgICAgICAgIlx1MDk5MVx1MDk5OVx1MDlBMVx1MDlBOVwwMDBcdTA5QjFcMDAwXDAwMFwwMDBcdTA5QjlcdUE1QTVcMDA0XDAwMFx1MDlDMSIrCisgICAgICAgICJcMDAwXDAwMFwwMDBcdTA5QzlcMDAwXDAwMFwwMDBcdTA5RDFcMDAwXHUwOUQ5XDAwMFwwMDBcdTA5RTFcMDAwXDAwMFx1MDlFOSIrCisgICAgICAgICJcMDAwXHUwOUYxXHUwOUY5XHUwQTAxXHUwQTA5XDAwMFx1MEExMVwwMDBcMDAwXDAwMFx1MEExOVx1QTVBNVwwMDRcMDAwIisKKyAgICAgICAgIlx1MEEyMVwwMDBcMDAwXDAwMFx1MEEyOVwwMDBcMDAwXDAwMFx1MEEzMVwwMDBcdTBBMzlcdUE1QTVcMDEwXDAwMFx1MEE0MSIrCisgICAgICAgICJcdUE1QTVcMDM1XDAwMFx1MEE0OVx1MEE1MVx1QTVBNVwwMTVcMDAwXHVBNUE1XDAwNFx1MDFCQlx1QTVBNTFcMDAwXHUwQTU5IisKKyAgICAgICAgIlx1MEE2MVx1QTVBNVwwMTZcMDAwXHUwQTY5XHUwQTcxXHVBNUE1XDAzNVwwMDBcdTA1NjBcdUE1QTVcMDExXDAwMFx1MDFDQiIrCisgICAgICAgICJcdUE1QTVcMDA0XHUwMUJCXHUwMUNCXHUwMUJCXHUwMUJCXHUwMUJCXHUwMUYzXHUwMUNCXHVBNUE1XDAwNlx1MDFCQlwwMDAiKworICAgICAgICAiXHVBNUE1XDAwNVx1MDFDQlx1MDFCQlx1MDFCQlx1MDFDQlx1MDFCQlx1MDFCQlx1MDFGM1x1MDFGQlx1MDFCQlx1MDIwMyIrCisgICAgICAgICJcdTAyMEJcdTAyMTNcdTAyMUJcdTAwRkJcdTAyMjNcdTAyMkJcdTAyMzNcdTAyM0JcdTAyNDNcMDAwXHUwMjRCXHUwMjUzIisKKyAgICAgICAgIlx1MDI1QlwwMDBcdTAyNjNcMDAwXHUwMjZCXHUwMjczXDAwMFx1MDFCQlx1QTVBNVwwMjRcMDAwXHUwQTc5XHVBNUE1XDAxMCIrCisgICAgICAgICJcMDAwXHUwQTgxXHUwQTg5XDAwMFwwMDBcMDAwXHUwQTkxXHVBNUE1IFwwMDBcdTBBOTlcMDAwXHUwQUExXHUwMjdCXHUwMjgzIisKKyAgICAgICAgIlx1MDI4Qlx1MDI5M1x1MDI5Qlx1MDJBM1x1MDJBQlx1MDJCM1x1MDEwM1x1MDEwQlx1MDExM1x1QTVBNVwwMzJcMDAwXHUwMkJCIisKKyAgICAgICAgIlx1QTVBNVwwMDRcMDAwXHUwNTc4XHUwNTkwXHUwNUE4XHUwNUMwXHVBNUE1XDAxMFwwMDBcdTBBQTlcdUE1QTVcMDIwXDAwMCIrCisgICAgICAgICJcdTBBQjFcMDAwXDAwMFx1MEFCOVx1QTVBNVwwMDdcdTAxQkJcMDAwXDAwMFx1QTVBNVwwMDRcdTAxQkJcdTAxQ0JcdTAxQkIiKworICAgICAgICAiXDAwMFwwMDBcdTAxQkJcdTAxQkJcMDAwXHUwMUNCXHUwMUJCXHUwMUJCXHUwMUNCXHVBNUE1I1wwMDBcdTAyQzNcdUE1QTUiKworICAgICAgICAiXDAzNlwwMDBcdTAxQkJcdTAxQ0JcdTAxQkJcdTAxQkJcdTAxQ0JcdTAxQkJcdTAxQkJcdTAxQ0JcdTAxQ0JcdTAxQ0JcdTAxQkIiKworICAgICAgICAiXHUwMUNCXHUwMUNCXHUwMUJCXHUwMUNCXHUwMUJCXHUwMUJCXHUwMUJCXHUwMUNCXHUwMUJCXHUwMUNCXHUwMUJCXHUwMUNCIisKKyAgICAgICAgIlx1MDFCQlx1MDFDQlx1MDFCQlx1MDFCQlx1QTVBNVwwMzVcMDAwXHUwQUMxXHVBNUE1XDAwN1wwMDBcdTBBQzlcMDAwXDAwMCIrCisgICAgICAgICJcdTBBRDFcdUE1QTVcMDEwXDAwMFx1MDExQlx1QTVBNVwwMjBcMDAwXHUwMkNCXDAwMFwwMDBcMDAwXHUwMUJCXHUwMUNCIisKKyAgICAgICAgIlx1MDFCQlx1MDFCQlwwMDBcMDAwXDAwMFx1ODgzMFx1ODg0OFx1ODg2MFx1ODg3OFx1ODg5MFx1ODhBOFx1ODhDMFx1ODhEOCIrCisgICAgICAgICJcdUE1QTVcMDM0XDAwMFx1MDJEM1wwMDBcdTAxMjNcdUE1QTVcMDEwXDAwMFx1MEFEOVx1QTVBNVwwMDVcMDAwXHUwMkNCIisKKyAgICAgICAgIlx1QTVBNVwwMTFcMDAwXHUwMTJCXHVBNUE1XDAwNFwwMDBcdTg4RjBcdTg5MDhcMDAwXHU4OTIwXHVBNUE1XDAyM1wwMDAiKworICAgICAgICAiXHU4OTM4XDAwMFwwMDBcdTg5NTBcdUE1QTVcMDA1XDAwMFx1MDJEM1x1QTVBNVwwMjBcMDAwXHUwMkNCXHVBNUE1XDAxMyIrCisgICAgICAgICJcMDAwXHU4OTY4XHU4OTgwXHU4OTk4XDAwMFwwMDBcdTg5QjBcdUE1QTVcMDM1XDAwMFx1MDJEM1x1QTVBNVwwMjBcMDAwIisKKyAgICAgICAgIlx1MDJDQlx1QTVBNS5cMDAwXHUwMkQzXDAwMFx1MDEzM1x1QTVBNVwwMTBcMDAwXHUwQUUxXHVBNUE1XDAwNVwwMDBcdTAyQ0IiKworICAgICAgICAiXHVBNUE1XDAxMFwwMDBcdTAxM0JcdTAxNDNcdUE1QTVcMDA0XDAwMFx1ODlDOFx1ODlFMFx1QTVBNVwwMjRcMDAwXHUwQUU5IisKKyAgICAgICAgIlx1QTVBNStcMDAwXHUwMTRCXHVBNUE1XDAwN1wwMDBcdTBBRjFcdTBBRjlcdUE1QTVcMDA1XDAwMFx1MDJDQlx1QTVBNSIrCisgICAgICAgICJcMDExXDAwMFx1MDE1M1x1QTVBNVwwMTZcMDAwXHUwQjAxXHVBNUE1XDAwNlwwMDBcdTAyQ0JcdUE1QTVcMDA3XDAwMFx1MDJEQiIrCisgICAgICAgICJcdTAxNUJcdUE1QTUoXDAwMFx1MEIwOVwwMDBcMDAwXHUwMTYzXDAwMFwwMDBcMDAwXHUwQjExXDAwMFwwMDBcMDAwXHUwQjE5IisKKyAgICAgICAgIlwwMDBcMDAwXHUwMkNCXHVBNUE1XDAwN1wwMDBcdTAxNkJcdTAxNzNcdUE1QTUnXDAwMFx1MDE3Qlx1QTVBNVwwMDdcMDAwIisKKyAgICAgICAgIlx1MEIyMVx1MEIyOVx1QTVBNVwwMDVcMDAwXHUwMkNCXHVBNUE1XDAxMVwwMDBcdTAxODNcdUE1QTVcMDIyXDAwMFx1MDE4QiIrCisgICAgICAgICJcdUE1QTVcMDA0XDAwMFx1MDE5M1x1QTVBNVwwMTFcMDAwXHUwQjMxXHUwQjM5XDAwMFx1MEI0MVwwMDBcMDAwXHUwMTlCIisKKyAgICAgICAgIlx1QTVBNVwwMjNcMDAwXHUwNUQ4XHVBNUE1XDAwNFwwMDBcdTAyRTNcdTAyRTNcdTAyQ0JcdUE1QTVcMDE1XDAwMFx1QTVBNSIrCisgICAgICAgICJcMDA0XHUwMkVCXHVBNUE1J1wwMDBcdTA1RjBcdUE1QTVcMDA0XDAwMFx1MDJGM1x1MDJGM1x1QTVBNVwwMTZcMDAwXHVBNUE1IisKKyAgICAgICAgIlwwMDRcdTAyRkJcdUE1QTVcMDIwXDAwMFx1MDYwOFx1MDYyMFx1QTVBNVwwMTZcMDAwXHUwNjM4XHVBNUE1XDAxM1wwMDAiKworICAgICAgICAiXHUwMUNCXHUwMUNCXHVBNUE1XDAzM1wwMDBcdTAxQ0JcMDAwXHUwMUNCXDAwMFx1MDMwM1x1QTVBNVwwMTFcMDAwXHU4OUY4IisKKyAgICAgICAgIlx1QTVBNVwwMTFcMDAwXHU4QTEwXHVBNUE1XDAwNFwwMDBcdThBMjhcdUE1QTVcMDA0XDAwMFx1OEE0MFx1QTVBNVwwMDQiKworICAgICAgICAiXDAwMFx1OEE1OFx1QTVBNVwwMTRcMDAwXHU4QTcwXHVBNUE1XDAwN1wwMDBcdTAzMEJcdTAzMTNcdThBODhcdTAzMUJcdThBQTAiKworICAgICAgICAiXHU4QUI4XHUwNjQ4XHU4QUQwXHUwNjY4XHVBNUE1XDAwNFx1MDMxM1wwMDBcMDAwXHUwMzEzXHU4QUU4XHUwMUJCXHUwMUJCIisKKyAgICAgICAgIlx1MDJDQlwwMDBcdTAxQkJcdTAxQkJcdUE1QTVcMDEzXDAwMFx1OEIwMFx1QTVBNVwwMTFcMDAwXHU4QjE4XHVBNUE1XDAwNCIrCisgICAgICAgICJcMDAwXHU4QjMwXHVBNUE1XDAwNFwwMDBcdThCNDhcdUE1QTVcMDA0XDAwMFx1OEI2MFx1QTVBNVwwMTRcMDAwXHU4Qjc4IisKKyAgICAgICAgIlx1QTVBNVwwMTRcMDAwXHUwMUNCXHVBNUE1XDAzNlwwMDBcdTBCNDlcdUE1QTVcMDEwXDAwMFx1MDFBM1x1QTVBNVwwMTAiKworICAgICAgICAiXDAwMFx1MDJEM1wwMDBcdTAyQ0JcdUE1QTVcMDA2XDAwMFx1QTVBNSBcMDA0XDAwMFx1QTVBNUVcMDA1XDAwMFx1QTVBNSIrCisgICAgICAgICJTXDAwNlx1QTVBNVwwMzBcMDAwXHUwMkNCXHVBNUE1XDAyNlwwMDBcdTAxRkJcdUE1QTVcMDI2XDAwMFx1MEI1MVx1MEI1OSIrCisgICAgICAgICJcdTBCNjFcdTBCNjlcdUE1QTVcMDA2XDAwMFx1MEI3MVx1MEI3OVx1MEI4MVx1MEI4OVx1MEI5MVx1MEI5OVwwMDBcMDAwIisKKyAgICAgICAgIlx1MEJBMVx1MEJBOVx1MEJCMVx1MEJCOVx1MEJDMVx1MEJDOVx1MEJEMVx1MEJEOVx1MEJFMVx1MEJFOVx1QTVBNVwwMDQiKworICAgICAgICAiXDAwMFx1MEJGMVx1MEJGOVx1MEMwMVx1MEMwOVx1MEMxMVx1MEMxOVx1MEMyMVx1MEMyOVwwMDBcMDAwXHUwQzMxXHUwQzM5IisKKyAgICAgICAgIlx1MEM0MVx1MEM0OVx1MEM1MVx1MEM1OVx1MEM2MVx1MEM2OVx1MEM3MVx1MEM3OVx1MEM4MVx1MEM4OVx1MEM5MVx1MEM5OSIrCisgICAgICAgICJcdTBDQTFcdTBDQTlcdTBDQjFcdTBDQjlcdTBDQzFcdTBDQzlcdTBDRDFcdTBDRDlcdTBDRTFcdTBDRTlcMDAwXDAwMFx1MENGMSIrCisgICAgICAgICJcdTBDRjlcdTBEMDFcdTBEMDlcdTBEMTFcdTBEMTlcdTBEMjFcdTBEMjlcdTBEMzFcdTBEMzlcdTBENDFcdTBENDlcdTBENTEiKworICAgICAgICAiXHUwRDU5XHUwRDYxXHUwRDY5XHVBNUE1XDAwNFwwMDBcdTBENzFcdTBENzlcdTBEODFcdTBEODlcdTBEOTFcdTBEOTlcdTBEQTEiKworICAgICAgICAiXHUwREE5XHUwREIxXHUwREI5XHUwREMxXHUwREM5XHUwREQxXHUwREQ5XHUwREUxXHUwREU5XHUwREYxXHUwREY5XHUwRTAxIisKKyAgICAgICAgIlx1MEUwOVx1MEUxMVx1MEUxOVx1MEUyMVx1MEUyOVx1MEUzMVx1MEUzOVx1MEU0MVx1MEU0OVx1MEU1MVx1MEU1OVx1MEU2MSIrCisgICAgICAgICJcdTBFNjlcdTBFNzFcdTBFNzlcdTBFODFcdTBFODlcdTBFOTFcdTBFOTlcMDAwXDAwMFx1MEVBMVx1MEVBOVx1MEVCMVx1MEVCOSIrCisgICAgICAgICJcdTBFQzFcdTBFQzlcdTBFRDFcdTBFRDlcdUE1QTVcMDA2XDAwMFx1MEVFMVx1MEVFOVx1MEVGMVx1MEVGOVx1QTVBNVwwMDQiKworICAgICAgICAiXDAwMFx1MEYwMVx1MEYwOVx1MEYxMVx1MEYxOVx1MDY4OFx1MDZBMFx1QTVBNVwwMDRcMDAwXHUwRjIxXHUwRjI5XHUwRjMxIisKKyAgICAgICAgIlx1MEYzOVx1MEY0MVx1MEY0OVx1MEY1MVx1MEY1OVx1MEY2MVx1MEY2OVx1MEY3MVx1MEY3OVx1MEY4MVx1MEY4OVx1MEY5MSIrCisgICAgICAgICJcdTBGOTlcdTBGQTFcdTBGQTlcdTBGQjFcdTBGQjlcdTBGQzFcdTBGQzlcdTBGRDFcdTBGRDlcdTBGRTFcdTBGRTlcdTBGRjEiKworICAgICAgICAiXHUwRkY5XHUxMDAxXHUxMDA5XHUxMDExXHUxMDE5XHUxMDIxXHUxMDI5XHUxMDMxXHUxMDM5XHUxMDQxXHUxMDQ5XHUxMDUxIisKKyAgICAgICAgIlx1MTA1OVx1MTA2MVx1MTA2OVx1MTA3MVx1MTA3OVx1MTA4MVx1MTA4OVx1MTA5MVx1MTA5OVx1MTBBMVx1MTBBOVx1MTBCMSIrCisgICAgICAgICJcdTEwQjlcdTEwQzFcdTEwQzlcdTEwRDFcdTEwRDlcdTEwRTFcdTEwRTlcdTEwRjFcdTEwRjlcdTExMDFcdTExMDlcdTExMTEiKworICAgICAgICAiXHUxMTE5XHUxMTIxXHUxMTI5XHUxMTMxXHUxMTM5XHUxMTQxXHUxMTQ5XHUxMTUxXHUxMTU5XHUxMTYxXHUxMTY5XHUxMTcxIisKKyAgICAgICAgIlx1MTE3OVx1MTE4MVx1MTE4OVx1MTE5MVx1MTE5OVx1MTFBMVx1MTFBOVx1MTFCMVx1MTFCOVwwMDBcMDAwXHUxMUMxXHUxMUM5IisKKyAgICAgICAgIlx1MTFEMVx1MTFEOVx1QTVBNVwwMDZcMDAwXHUxMUUxXHUxMUU5XHUxMUYxXHUxMUY5XHUxMjAxXHUxMjA5XHUxMjExXHUxMjE5IisKKyAgICAgICAgIlx1MTIyMVx1MTIyOVx1MTIzMVx1MTIzOVx1MTI0MVx1MTI0OVx1MTI1MVx1MTI1OVx1MTI2MVx1MTI2OVx1QTVBNVwwMDYiKworICAgICAgICAiXDAwMFx1MTI3MVx1MTI3OVx1QTVBNVwwMDZcMDAwXHUxMjgxXHUxMjg5XHUxMjkxXHUxMjk5XHUxMkExXHUxMkE5XHUxMkIxIisKKyAgICAgICAgIlx1MTJCOVx1MTJDMVx1MTJDOVx1MTJEMVx1MTJEOVx1MTJFMVx1MTJFOVx1MTJGMVx1MTJGOVx1MTMwMVx1MTMwOVx1QTVBNSIrCisgICAgICAgICJcMDA2XDAwMFx1MTMxMVx1MTMxOVx1QTVBNVwwMDZcMDAwXHUxMzIxXHUxMzI5XHVBNUE1XDAwNlwwMDBcdTEzMzFcdTEzMzkiKworICAgICAgICAiXHVBNUE1XDAwNlwwMDBcdTEzNDFcdTEzNDlcdUE1QTVcMDA3XDAwMFx1MTM1MVx1QTVBNVwwMDZcMDAwXHUxMzU5XHUxMzYxIisKKyAgICAgICAgIlx1MTM2OVx1MTM3MVx1MTM3OVx1MTM4MVx1MTM4OVx1MTM5MVx1MTM5OVx1MTNBMVx1MTNBOVx1MTNCMVx1MTNCOVx1MTNDMSIrCisgICAgICAgICJcdTEzQzlcdTEzRDFcdTEzRDlcdThCOTBcMDAwXHU4QkE4XHUxM0UxXHU4QkMwXDAwMFx1OEJEOFwwMDBcdThCRjBcMDAwIisKKyAgICAgICAgIlx1OEMwOFx1MTNFOVx1OEMyMFwwMDBcMDAwXHUxM0YxXHUxM0Y5XHVBNUE1XDAwNlwwMDBcdTE0MDFcdTE0MDlcdUE1QTUiKworICAgICAgICAiXDAwNlwwMDBcdTE0MTFcdTE0MTlcdUE1QTVcMDA2XDAwMFx1MTQyMVx1MTQyOVx1QTVBNVwwMDZcMDAwXHUxNDMxXHUxNDM5IisKKyAgICAgICAgIlx1QTVBNVwwMDZcMDAwXHUxNDQxXHUxNDQ5XHVBNUE1XDAxMVwwMDBcdTE0NTFcMDAwXDAwMFx1MTQ1OVx1QTVBNVwwMDQiKworICAgICAgICAiXDAwMFx1OEMzOFx1MTQ2MUBcdThDNTBCXHUwNkI4XHUwNkQwXDAwMFx1MTQ2OVwwMDBcMDAwXHUxNDcxXDAwMFwwMDBcdThDNjAiKworICAgICAgICAiXDAwMFx1OEM3OFx1MTQ3OVx1MDZGMFx1MDcxMFx1MDczMFwwMDBcMDAwXDAwMFx1OEM5MFx1QTVBNVwwMDdcMDAwXHU4Q0IwIisKKyAgICAgICAgIlwwMDBcdTA3NTBcdTA3NzBcdTA3OTBcMDAwXDAwMFwwMDBcdThDQzhcdUE1QTVcMDA3XDAwMFx1OENFOFwwMDBcdTA3QjAiKworICAgICAgICAiXHVBMjkyXHU4RDAwXDAwMFwwMDBcMDAwXHUxNDgxXDAwMFwwMDBcdTE0ODlcMDAwXDAwMFx1OEQxMFwwMDBcdThEMjhcdTE0OTEiKworICAgICAgICAiXHVBMkEyWlwwMDBcdUEyQjJcdUEyQzJcdUE1QTVcMDExcFx1QTVBNVwwMDZcMDAwXHUwN0QwXHVBNUE1XDAwNVwwMDBcdTA3RTAiKworICAgICAgICAiXHVBNUE1XDAxNFwwMDBcdTA3RjhcdTA4MDhcdTA4MjBcdUE1QTVcMDEwXDAwMHBcMDAwXDAwMFwwMDBcdTA4NDBcdTA4NTgiKworICAgICAgICAiXDAwMFx1MDg3OFx1MDg5MFx1QTVBNVwwMDRcMDAwXHUwOEIwXDAwMFx1MDhDOFx1QTVBNVwwMTFcMDAwXHUwOEUwXHUwOEY4IisKKyAgICAgICAgIlx1QTVBNSZcMDAwXHUwOTEwXDAwMFwwMDBcMDAwXHUwMTM4XHUwOTIwXHUwOTMwXHUwOTQwXHUwOTUwXHUwOTYwXHUwOTcwIisKKyAgICAgICAgIlx1MDk4MFx1MDk5MFx1MDlBMFx1MDlCMFx1MDFGMFx1MDkxMFx1MDEwOFx1MDBBOFx1MDBCOFx1MDEzOFx1MDkyMFx1MDkzMCIrCisgICAgICAgICJcdTA5NDBcdTA5NTBcdTA5NjBcdTA5NzBcdTA5ODBcdTA5OTBcdTA5QTBcdTA5QjBcdUE1QTVcMDMxXDAwMFx1MDlDMFx1QTVBNSIrCisgICAgICAgICInXDAwMFx1MDFCQlx1MDFCQlx1MDFEQlx1MDFEQlx1QTVBNVwwMDRcdTAxQkJcdTAxREJcdTAxREJcdTAxREJcdTAxQkIiKworICAgICAgICAiXHUwMUJCXHVBNUE1XDAwNFwwMDBcdTAxQkJcdUE1QTVcMDM2XDAwMFx1MDlEOFx1MDlGOFx1MEExOFx1MEEyOFwwMDBcdTBBNDAiKworICAgICAgICAiXHUwQTYwXHUwQTgwXDAwMFx1MEE5MFx1MEFBOFx1MEFCOFx1MEFCOFx1MEFCOFx1MDMzOFx1MEFDOFx1MEFEOFx1MEFEOCIrCisgICAgICAgICJcdTBBRThcdTA0NThcMDAwXHUwQUY4XHUwQjA4XDAwMFwwMDBcdTBCMjBcdTBCMzBcdTBCNDBcdTBCNDBcdTBCNDBcMDAwIisKKyAgICAgICAgIlwwMDBcdTBCNTBcdTBCNjhcdTBCODhcMDAwXHUwMkY4XDAwMFx1OEQ0MFwwMDBcdTAyRjhcMDAwXHU4RDUwXHU4RDYwXHUwQkEwIisKKyAgICAgICAgIlx1MEExOFwwMDBcdTBCQjBcdTBCQzBcdTBBOThcMDAwXHUwQjU4XHUwMTE4XHUwQkQwXHUwQkUwXHUwQkYwXHUwQzAwXHUwQzEwIisKKyAgICAgICAgIlx1QTVBNVwwMzFcMDAwXHUwQzIwXHUwQzQwXHUwQzYwXHUwQzgwXHUwQ0EwXHUwQ0MwXHUwQ0UwXHUwRDAwXHUwRDIwXHUwRDQwIisKKyAgICAgICAgIlx1MEQ2MFx1MEQ4MFx1MERBMFx1MEFEOFx1MERCOFx1MEREMFx1MERGMFx1MERGOFx1MEUwOFx1MEUyMFx1MEU0MFx1MEU2OCIrCisgICAgICAgICJcdTBFNzBcdTBFODBcdTBFOThcdTBBRThcdTBBMThcdTBFQjhcdTBCNThcdTBDMTBcdTBFQzhcdTBFRTBcdTBGMDBcdTBGMDgiKworICAgICAgICAiXHUwRjE4XHUwRjMwXHUwRjUwXHUwRjc4XHUwNDY4XHUwRjkwXHUwRkE4XHUwNDU4XHUwOUU4XHUwRkM4XHUwRkQ4XHVBNUE1IisKKyAgICAgICAgIlwwMjBcMDAwXHUxNDk5XDAwMFx1MTRBMVwwMDBcdTE0QTlcdUE1QTVcMDMzXDAwMFx1MTRCMVwwMDBcdTE0QjlcMDAwXHUxNEMxIisKKyAgICAgICAgIlx1QTVBNVwwMTZcMDAwXHUxNEM5XHVBNUE1XDAwNFwwMDBcdTE0RDFcMDAwXDAwMFx1MTREOVx1QTVBNVwwMjdcMDAwXHUxNEUxIisKKyAgICAgICAgIlwwMDBcdTE0RTlcdUE1QTVcMDA2XDAwMFx1MEZFOFx1MTAwMFwwMDBcdTEwMjBcdTEwMzhcdUE1QTVcMDEzXDAwMFx1MTRGMSIrCisgICAgICAgICJcdUE1QTVcMDA2XDAwMFx1MTRGOVwwMDBcdTE1MDFcMDAwXDAwMFx1MTUwOVx1QTVBNVwwMDRcMDAwXHUxNTExXHVBNUE1IisKKyAgICAgICAgIlwwMjNcMDAwXHUxNTE5XDAwMFwwMDBcdTE1MjFcdTE1MjlcdUE1QTVcMDE0XDAwMFx1MTUzMVx1MTUzOVwwMDBcMDAwXHUxNTQxIisKKyAgICAgICAgIlx1MTU0OVwwMDBcMDAwXHUxNTUxXHUxNTU5XHUxNTYxXHUxNTY5XHVBNUE1XDAwNFwwMDBcdTE1NzFcdTE1NzlcMDAwXDAwMCIrCisgICAgICAgICJcdTE1ODFcdTE1ODlcdUE1QTVcMDExXDAwMFx1MTU5MVx1MTU5OVx1QTVBNVwwMTdcMDAwXHUxNUExXHVBNUE1XDAwNVwwMDAiKworICAgICAgICAiXHUxNUE5XHUxNUIxXDAwMFx1MTVCOVx1QTVBNVwwMDZcMDAwXHUxNUMxXHUxNUM5XHUxNUQxXHUxNUQ5XHVBNUE1XDAyMyIrCisgICAgICAgICJcMDAwXHU4RDc4XHU4RDg4XHVBNUE1XDAyNVwwMDBcdTAxMDhcdTAwQThcdTAwQjhcdTAxMzhcdTA5MjBcdTA5MzBcdTA5NDAiKworICAgICAgICAiXHUwOTUwXHUwOTYwXHUxMDU4XHUxMDcwXHUxMDg4XHUxMEEwXHUxMEI4XHUxMEQwXHUxMEU4XHUxMTAwXHUxMTE4XHUxMTMwIisKKyAgICAgICAgIlx1MTE0OFx1MTE2MFx1MTE4MFx1MTFBMFx1MTFDMFx1MTFFMFx1MTIwMFx1MTIyMFx1MTI0MFx1MTI2MFx1MTI4MFx1MTJBOCIrCisgICAgICAgICJcdTEyRDBcdTEyRjhcdTEzMjBcdTEzNDhcdTEzNzBcdTEzOThcdTEzQzBcdTEzRThcdTE0MTBcdTE0MzhcdTE0NTBcdTE0NjgiKworICAgICAgICAiXHUxNDgwXHUxNDk4XHUxNEIwXHUxNEM4XHUxNEUwXHUxNEY4XHUxNTEwXHUxNTMwXHUxNTUwXHUxNTcwXHUxNTkwXHUxNUIwIisKKyAgICAgICAgIlx1MTVEMFx1MTVGMFx1MTYxMFx1MTYzMFx1MTY1MFx1MTY3MFx1MTY5MFx1MTZCMFx1MTZEMFx1MTZGMFx1MTcxMFx1MTczMCIrCisgICAgICAgICJcdTE3NTBcdTE3NzBcdTE3OTBcdTE3QjBcdTE3RDBcdTE3RjBcdTE4MTBcdTE4MzBcdTE4NTBcdTE4NzBcdTE4OTBcdTE4QjAiKworICAgICAgICAiXHUxOEQwXHUxOEYwXHUxOTEwXHUxOTMwXHUxOTUwXHUxOTcwXHUxOTkwXHUxOUIwXHUwQkEwXHUwQTE4XHUwRUI4XHUwQkMwIisKKyAgICAgICAgIlx1MEE5OFx1MTlDMFx1MEFCOFx1MEFEOFx1MDE5MFx1MTlEMFx1MEFFOFx1MEI1OFx1MEFGOFx1MTlFMFx1MEIyMFx1MEIzMCIrCisgICAgICAgICJcdTBCNDBcdTE5RjBcdTFBMDBcdTFBMTBcdTBERjhcdTFBMjBcdTBFNzBcdTFBMzBcdTAyRjhcdTAwODBcdTFBNDBcdTA5RTgiKworICAgICAgICAiXHUwRkM4XHUwQkIwXHUxQTUwXHUwQUE4XHUwMzM4XHUwQzEwXHUwMUE4XHUxQTYwXHUwNDU4XHUwRkQ4XHUwMUYwXHUwMTE4IisKKyAgICAgICAgIlx1MUE3MFx1MUE4MFx1MDM1OCBcdTFBOTBcdTBBNzBcdTBGMDhcdTAzOThcdTA0NjhcdTAzQThcdTAzMTBcdTA5MTBcdUE1QTUiKworICAgICAgICAiNFwwMDBcdTFBQTBcdUE1QTVcMDIzXDAwMFx1MUFCMFx1QTVBNVwwMTRcMDAwXHUxQUMwXHUxQUQwXHUxQUUwXHUxQUYwIisKKyAgICAgICAgIlx1MUIwMFx1MUIxMFx1MUIyMFx1MUIzMFx1MUI0MFx1MUI1MFx1MUI2MFx1MUI3MFx1MUI4MFx1MUI5MFx1MUJBMFx1MUJCMCIrCisgICAgICAgICJcdTFCQzBcdTFCRDBcdTFCRTBcdTFCRjBcdTFDMDBcdTFDMTBcdTFDMjBcdTFDMzBcdTFDNDBcdTFDNTBcdTFDNjBcdTFDNzAiKworICAgICAgICAiXHUxQzgwXHUxQzkwXHUxQ0EwXHUxQ0IwXHUxQ0MwXHUxQ0QwXHUxQ0UwXHUxQ0YwXHUxRDAwXHUxRDEwXHUxRDIwXHUxRDMwIisKKyAgICAgICAgIlx1MUQ0MFx1MUQ1MFx1MUQ2MFx1MUQ3MFx1MUQ4MFx1MUQ5MFx1MURBMFx1MURCMFx1MURDMFx1MUREMFx1MURFMFx1MURGMCIrCisgICAgICAgICJcdTFFMDBcdTFFMTBcdTFFMjBcdTFFMzBcdTFFNDBcdTFFNTBcdTFFNjBcdTFFNzBcdTFFODBcdTFFOTBcdTFFQTBcdTFFQjAiKworICAgICAgICAiXHUxRUMwXHUxRUQwXHUxRUUwXHUxRUYwXHUxRjAwXHUxRjEwXHUxRjIwXHUxRjMwXHUxRjQwXHUxRjUwXHUxRjYwXHUxRjcwIisKKyAgICAgICAgIlx1MUY4MFx1MUY5MFx1MUZBMFx1MUZCMFx1MUZDMFx1MUZEMFx1MUZFMFx1MUZGMFx1MjAwMFx1MjAxMFx1MjAyMFx1MjAzMCIrCisgICAgICAgICJcdTIwNDBcdTIwNTBcdTIwNjBcdTIwNzBcdTIwODBcdTIwOTBcdTIwQTBcdTIwQjBcdTIwQzBcdTIwRDBcdTIwRTBcdTIwRjAiKworICAgICAgICAiXHUyMTAwXHUyMTEwXHUyMTIwXHUyMTMwXHUyMTQwXHUyMTUwXHUyMTYwXHUyMTcwXHUyMTgwXHUyMTkwXHUyMUEwXHUyMUIwIisKKyAgICAgICAgIlx1MjFDMFx1MjFEMFx1MjFFMFx1MjFGMFx1MjIwMFx1MjIxMFx1MjIyMFx1MjIzMFx1MjI0MFx1MjI1MFx1MjI2MFx1MjI3MCIrCisgICAgICAgICJcdTIyODBcdTIyOTBcdTIyQTBcdTIyQjBcdTIyQzBcdTIyRDBcdTIyRTBcdTIyRjBcdTIzMDBcdTIzMTBcdTIzMjBcdTIzMzAiKworICAgICAgICAiXHUyMzQwXHUyMzUwXHUyMzYwXHUyMzcwXHUyMzgwXHUyMzkwXHUyM0EwXHUyM0IwXHUyM0MwXHUyM0QwXHUyM0UwXHUyM0YwIisKKyAgICAgICAgIlx1MjQwMFx1MjQxMFx1MjQyMFx1MjQzMFx1MjQ0MFx1MjQ1MFx1MjQ2MFx1MjQ3MFx1MjQ4MFx1MjQ5MFx1MjRBMFx1MjRCMCIrCisgICAgICAgICJcdTI0QzBcdTI0RDBcdTI0RTBcdTI0RjBcdTI1MDBcdTI1MTBcdTI1MjBcdTI1MzBcdTI1NDBcdTI1NTBcdTI1NjBcdTI1NzAiKworICAgICAgICAiXHUyNTgwXHUyNTkwXHUyNUEwXHUyNUIwXHUyNUMwXHUyNUQwXHUyNUUwXHUyNUYwXHUyNjAwXHUyNjEwXHUyNjIwXHUyNjMwIisKKyAgICAgICAgIlx1MjY0MFx1MjY1MFx1MjY2MFx1MjY3MFx1MjY4MFx1MjY5MFx1MjZBMFx1MjZCMFx1MjZDMFx1MjZEMFx1MjZFMFx1MjZGMCIrCisgICAgICAgICJcdTI3MDBcdTI3MTBcdTI3MjBcdTI3MzBcdTI3NDBcdTI3NTBcdTI3NjBcdTI3NzBcdTI3ODBcdTI3OTBcdTI3QTBcdTI3QjAiKworICAgICAgICAiXHUyN0MwXHUyN0QwXHUyN0UwXHUyN0YwXHUyODAwXHUyODEwXHVBNUE1XDAxMlwwMDBwXHVBNUE1KVwwMDBcdTAzMjNcdTAxRkIiKworICAgICAgICAiXHUwMUMzXHUwMUYzXHUwMzJCXHUwMzJCXHVBNUE1XDAwNlwwMDBcdTI4MjBcMDAwXHUxQzMwXHUyODMwXHUyODQwXHVBNUE1IisKKyAgICAgICAgIlwwMTNcMDAwXHUxNUUxXHVBNUE1XDAwNFwwMDBcdTE1RTlcMDAwXHUxNUYxXDAwMFx1MTVGOVwwMDBcdTE2MDFcMDAwXHUxNjA5IisKKyAgICAgICAgIlwwMDBcdTE2MTFcMDAwXHUxNjE5XDAwMFx1MTYyMVwwMDBcdTE2MjlcMDAwXHUxNjMxXDAwMFx1MTYzOVwwMDBcdTE2NDEiKworICAgICAgICAiXDAwMFwwMDBcdTE2NDlcMDAwXHUxNjUxXDAwMFx1MTY1OVx1QTVBNVwwMDZcMDAwXHUxNjYxXDAwMFwwMDBcdTE2NjlcMDAwIisKKyAgICAgICAgIlwwMDBcdTE2NzFcMDAwXDAwMFx1MTY3OVwwMDBcMDAwXHUxNjgxXHVBNUE1XDAzNVwwMDBcdTAxQUJcdTAxQjNcdTI4NTAiKworICAgICAgICAiXHUyODY4XHUxNjg5XHVBNUE1XDAxMFwwMDBcdTE2OTFcdUE1QTVcMDA0XDAwMFx1MTY5OVwwMDBcdTE2QTFcMDAwXHUxNkE5IisKKyAgICAgICAgIlwwMDBcdTE2QjFcMDAwXHUxNkI5XDAwMFx1MTZDMVwwMDBcdTE2QzlcMDAwXHUxNkQxXDAwMFx1MTZEOVwwMDBcdTE2RTEiKworICAgICAgICAiXDAwMFx1MTZFOVwwMDBcdTE2RjFcMDAwXDAwMFx1MTZGOVwwMDBcdTE3MDFcMDAwXHUxNzA5XHVBNUE1XDAwNlwwMDBcdTE3MTEiKworICAgICAgICAiXDAwMFwwMDBcdTE3MTlcMDAwXDAwMFx1MTcyMVwwMDBcMDAwXHUxNzI5XDAwMFwwMDBcdTE3MzFcdUE1QTVcMDIzXDAwMCIrCisgICAgICAgICJcdTE3MzlcdTE3NDFcdTE3NDlcdTE3NTFcdUE1QTVcMDEyXDAwMFx1MTc1OVx1QTVBNVwwMjNcMDAwXHUyODgwXHUyODkwIisKKyAgICAgICAgIlx1MjhBMFx1MjhCMFx1MjhDMFx1MjhEMFx1MjhFMFx1MjhGMFx1MjkwMFx1MjkxMFx1MjkyMFx1MjkzMFx1Mjk0MFx1Mjk1MCIrCisgICAgICAgICJcdTI5NjBcdTI5NzBcdTI5ODBcdTI5OTBcdTI5QTBcdTI5QjBcdTI5QzBcdTI5RDBcdTI5RTBcdTI5RjBcdTJBMDBcdTJBMTAiKworICAgICAgICAiXHUyQTIwXHUyQTMwXHUyQTQwXHUyQTUwXHUyQTYwXHUyQTcwXHUyQTgwXHUyQTkwXHUyQUEwXHUyQUIwXHUyQUMwXHUyQUQwIisKKyAgICAgICAgIlx1MkFFMFx1MkFGMFx1MkIwMFx1MkIxMFx1MkIyMFx1MkIzMFx1MkI0MFx1MkI1MFx1MkI2MFx1MkI3MFx1MkI4MFx1MkI5MCIrCisgICAgICAgICJcdTJCQTBcdTJCQjBcdTJCQzBcdTJCRDBcdTJCRTBcdTJCRjBcdTJDMDBcdTJDMTBcdTJDMjBcdTJDMzBcdTJDNDBcdTJDNTAiKworICAgICAgICAiXHUyQzYwXHUyQzcwXHUyQzgwXHUyQzkwXHUyQ0EwXHUyQ0IwXHUyQ0MwXHUyQ0QwXHUyQ0UwXHUyQ0YwXHUyRDAwXHUyRDEwIisKKyAgICAgICAgIlx1MkQyMFx1MkQzMFx1MkQ0MFx1MkQ1MFx1MkQ2MFx1MkQ3MFx1MkQ4MFx1MkQ5MFx1MkRBMFx1MkRCMFx1MkRDMFx1MkREMCIrCisgICAgICAgICJcdTJERTBcdTJERjBcdTJFMDBcdTJFMTBcdTJFMjBcdTJFMzBcdTJFNDBcdTJFNTBcMDAwXDAwMFwwMDBcdTFBQzBcdTFCMjAiKworICAgICAgICAiXHUyRTYwXHUyRTcwXHUyRTgwXHUyRTkwXHUyRUEwXHUyRUIwXHUxQjAwXHUyRUMwXHUyRUQwXHUyRUUwXHUyRUYwXHUxQjQwIisKKyAgICAgICAgIlx1MkYwMFx1MkYyMFx1MkY0MFx1MkY2MFx1MkY4MFx1MkZBMFx1MkZDMFx1MkZFMFx1MzAwMFx1MzAyMFx1MzA0MFx1MzA2MCIrCisgICAgICAgICJcdTMwODBcdTMwQTBcdTMwQzBcdTMwRThcdTMxMTBcdTMxMzhcdTMxNjBcdTMxODhcdTMxQjBcdTMxRDhcdTMyMDBcdTMyMjgiKworICAgICAgICAiXHUzMjUwXHUzMjc4XHUzMkEwXHUzMkM4XHUzMkYwXDAwMFwwMDBcMDAwXHUzMzE4XHUzMzM4XHUzMzU4XHUzMzc4XHUzMzk4IisKKyAgICAgICAgIlx1MzNCOFx1MzNEOFx1MzNGOFx1MzQxOFx1MzQzOFx1MzQ1OFx1MzQ3OFx1MzQ5OFx1MzRCOFx1MzREOFx1MzRGOFx1MzUxOCIrCisgICAgICAgICJcdTM1MzhcdTM1NThcdTM1NzhcdTM1OThcdTM1QjhcdTM1RDhcdTM1RjhcdTM2MThcdTM2MzhcdTM2NThcdTM2NzhcdTM2OTgiKworICAgICAgICAiXHUzNkI4XHUzNkQ4XHUzNkY4XHUzNzE4XHUzNzM4XHUzNzU4XHUzNzc4XHVBNUE1XDAzNFwwMDBcdTI4ODBcdTI4QjBcdTI4RTAiKworICAgICAgICAiXHUyOTAwXHUyOTgwXHUyOTkwXHUyOUMwXHUyOUUwXHUyOUYwXHUyQTEwXHUyQTIwXHUyQTMwXHUyQTQwXHUyQTUwXHUzNzk4IisKKyAgICAgICAgIlx1MzdCMFx1MzdDOFx1MzdFMFx1MzdGOFx1MzgxMFx1MzgyOFx1Mzg0MFx1Mzg1OFx1Mzg3MFx1Mzg4OFx1MzhBMFx1MzhCOCIrCisgICAgICAgICJcdTM4RDBcdUE1QTVcMDA0XDAwMFx1MUFDMFx1MUIyMFx1MkU2MFx1MkU3MFx1MzhFOFx1MzhGOFx1MzkwOFx1MUI3MFx1MzkxOCIrCisgICAgICAgICJcdTFDMzBcdTFGNTBcdTIwMTBcdTIwMDBcdTFGNjBcdTI1MjBcdTFDQjBcdTFGMzBcdTM5MjhcdTM5MzhcdTM5NDhcdTM5NTgiKworICAgICAgICAiXHUzOTY4XHUzOTc4XHUzOTg4XHUzOTk4XHUzOUE4XHUzOUI4XHUxRDEwXHUzOUM4XHUzOUQ4XHUzOUU4XHUzOUY4XHUzQTA4IisKKyAgICAgICAgIlx1M0ExOFx1M0EyOFx1M0EzOFx1MkU4MFx1MkU5MFx1MkVBMFx1M0E0OFx1M0E1OFx1M0E2OFx1M0E3OFx1M0E4OFx1M0E5OCIrCisgICAgICAgICJcdTNBQThcdTNBQjhcdTNBQzhcdTNBRDhcdUE1QTVcMDE3XDAwMFx1M0FFOFx1M0IwMFx1M0IxOFx1M0IzMFx1M0I0OFx1M0I2MCIrCisgICAgICAgICJcdTNCNzhcdTNCOTBcdTNCQThcdTNCQzBcdTNCRTBcdTNDMDBcdUE1QTVcMDA0XDAwMFx1M0MyMFx1M0MzMFx1M0M0MFx1M0M1MCIrCisgICAgICAgICJcdTNDNjBcdTNDNzBcdTNDODBcdTNDOTBcdTNDQTBcdTNDQjBcdTNDQzBcdTNDRDBcdTNDRTBcdTNDRjBcdTNEMDBcdTNEMTAiKworICAgICAgICAiXHUzRDIwXHUzRDMwXHUzRDQwXHUzRDUwXHUzRDYwXHUzRDcwXHUzRDgwXHUzRDkwXHUzREEwXHUzREIwXHUzREMwXHUzREQwIisKKyAgICAgICAgIlx1M0RFMFx1M0RGMFx1M0UwMFx1M0UxMFx1M0UyMFx1M0UzMFx1M0U0MFx1M0U1MFx1M0U2MFx1M0U3MFx1M0U4MFx1M0U5MCIrCisgICAgICAgICJcdTNFQTBcdTNFQjBcdTNFQzBcdTNFRDBcdTNFRTBcdTNFRjBcdTNGMDBcMDAwXHUzRjEwXHUzRjQwXHUzRjY4XHUzRjk4IisKKyAgICAgICAgIlx1M0ZCOFx1M0ZFOFx1NDAwOFx1NDAyOFx1NDA2MFx1NDA4OFx1NDBBOFx1NDBDOFx1NDBFOFx1NDExMFx1NDEzOFx1NDE2MCIrCisgICAgICAgICJcdTQxODhcdTQxQjBcdTQxRDhcdTQyMDBcdTQyMzhcdTQyNTBcdTQyODhcdTQyQzBcdTQyNjBcdTQyRjBcdTQzMjhcdTQzNjAiKworICAgICAgICAiXHU0Mzg4XHU0M0E4XHU0M0M4XHU0M0YwXHU0NDE4XHU0NDQ4XHU0NDc4XHU0NDk4XHU0NEI4XHU0NEUwXHU0NTAwXHU0MzEwIisKKyAgICAgICAgIlx1NDUyMFx1NDUzOFx1NDU1OFx1NDU3OFx1NDVCMFx1NDVEOFx1NDYwOFx1NDY0MFx1NDY2OFx1NDY4OFx1NDZBOFx1NDZFMCIrCisgICAgICAgICJcdTQ3MDhcdTQ3NDBcdTQ3NjBcdTQ3OTBcdTQ3QjBcdTQ3RDhcdTQ3RjhcdTQ4MjBcdTQ4NTBcdTQ4NzhcdTQ4QThcdTQ4RDAiKworICAgICAgICAiXHU0OEU4XHU0OTE4XHU0OTM4XHU0OTU4XHU0OTgwXHU0OUEwXHU0OUMwXHU0OUUwXHU0QTEwXHU0QTM4XHU0QTUwXHU0QTg4IisKKyAgICAgICAgIlx1NEFBOFx1NDI5OFx1NEFEOFx1NEIwMFx1NEIyMFx1NEI0MFx1NEI2OFx1NEI4MFx1NEJBOFx1NEJEOFx1NEJGMFx1NDJEMCIrCisgICAgICAgICJcdTRDMjhcdTRDNDBcdTRDNThcdTRDNzBcdTRDODhcdTRDQTBcdTRDQjhcdTRDRDBcdTRDRThcdTREMDBcdTREMThcdTREMzgiKworICAgICAgICAiXHU0RDU4XHU0RDc4XHU0RDk4XHU0REI4XHU0REQ4XHU0REY4XHU0RTE4XHU0RTM4XHU0RTU4XHU0RTc4XHU0RTk4XHU0RUI4IisKKyAgICAgICAgIlx1NEVEOFx1NEVGOFx1NEYxOFx1NEYzMFx1NEY0OFx1NEY2OFx1NEY4MFx1QTVBNVwwMDRcMDAwXHU0Rjk4XHU0RkIwXHU0RkM4IisKKyAgICAgICAgIlx1NEZFMFx1NEZGOFx1NTAyMFx1NTAzOFx1NTA1MFx1NTA2OFx1NTA4MFx1NTA5OFx1NTBCMFx1NTBDOFx1NTBFMFx1NTEwMCIrCisgICAgICAgICJcdTUxMjhcdTUxNDBcdTUxNThcdTUxNzBcdTUxODhcdTUxQTBcdTUxQjhcdTUxRDBcdTUxRjBcdTUyMTBcdTUyMzBcdTUyNTAiKworICAgICAgICAiXHU1MjY4XHU1MjgwXHU1Mjk4XHU1MkIwXHU1MkM4XHU1MkUwXHU1MkY4XHU1MzEwXHU1MzI4XHU1MzQwXHU1MzYwXHU1MzQ4IisKKyAgICAgICAgIlx1NTM4MFx1NTNBMFx1NTNDMFx1NTNBOFx1NTNFMFx1NTQwMFx1NTQyMFx1NEYwMFx1NTQ0OFx1NTQ2OFx1NTQ4OFx1NTRBOCIrCisgICAgICAgICJcdTU0QzhcdTU0RjhcdTU1MzBcdTU1NDhcdTU1NjBcdTU1NzhcdTU1OTBcdTU1QThcdTU1QzBcdTU1RDhcdTU1RjBcdTU2MDgiKworICAgICAgICAiXHU1NjIwXHU1NjM4XHU1NjUwXHU1NjY4XHU1NjgwXHU1Njk4XHU1NkIwXHU1NkM4XHU1NkUwXHU1NzA4XHU1NzIwXHU1NzM4IisKKyAgICAgICAgIlx1NTc1MFx1NTc3OFx1NTc5OFx1NTdCMFx1NTdDOFx1NTdFMFx1NTdGOFx1NTgxMFx1NTgyOFx1NTg0MFx1NTg1OFx1NTg3MCIrCisgICAgICAgICJcdTU4ODhcdTU4QThcdTU4QzBcdTU4RDhcdTU4RjhcdTU5MThcdTU5MzBcdTU5NThcdTU5NzhcdTU5OTBcdTU5QThcdTU5QzAiKworICAgICAgICAiXDAwMFwwMDBcdTU5RDhcdTU5RjBcdTVBMDhcdTVBMjBcdTVBMzhcdTVBNTBcdTVBNjhcdTVBODBcdTVBOThcdTVBQjBcdTVBRDAiKworICAgICAgICAiXHU1QUYwXHU1QjEwXHU1QjMwXHU1QjUwXHU1QjcwXHU1QjkwXHU1QkIwXHU1QkQwXHU1QkYwXHU1QzEwXHU1QzMwXHU1QzUwIisKKyAgICAgICAgIlx1NUM3MFx1NUM5MFx1NUNCMFx1NUNEMFx1NUNGMFx1NUQxMFx1NUQzMFx1NUQ1MFwwMDBcdUE1QTUlXDAwN1x1QTVBNSIrCisgICAgICAgICJcMDMzXDAwMFx1OEQ5OFx1OERBOFx1OERCOFx1OERDOFx1OEREOFx1OERFOFx1OERGOFx1OEUwOFx1OEUxOFx1OEUyOFx1OEUzOCIrCisgICAgICAgICJcdThFNDhcdThFNThcdThFNjhcdThFNzhcdThFODhcdThFOThcdThFQThcdThFQjhcdThFQzhcdThFRDhcdThFRThcdThFRjgiKworICAgICAgICAiXHU4RjA4XHU4RjE4XHU4RjI4XHU4RjM4XHU4RjQ4XHU4RjU4XHU4RjY4XHU4Rjc4XHU4Rjg4XHU4Rjk4XHU4RkE4XHU4RkI4IisKKyAgICAgICAgIlx1OEZDOFx1OEZEOFx1OEZFOFx1OEZGOFx1OTAwOFx1OTAxOFx1OTAyOFx1OTAzOFx1OTA0OFx1OTA1OFx1OTA2OFx1OTA3OCIrCisgICAgICAgICJcdTkwODhcdTkwOThcdTkwQThcdTkwQjhcdTkwQzhcdTkwRDhcdTkwRThcdTkwRjhcdTkxMDhcdTkxMThcdTkxMjhcdTkxMzgiKworICAgICAgICAiXHU5MTQ4XHU5MTU4XHU5MTY4XHU5MTc4XHU5MTg4XHU5MTk4XHU5MUE4XHU5MUI4XHU5MUM4XHU5MUQ4XHU5MUU4XHU5MUY4IisKKyAgICAgICAgIlx1OTIwOFx1OTIxOFx1OTIyOFx1OTIzOFx1OTI0OFx1OTI1OFx1OTI2OFx1OTI3OFx1OTI4OFx1OTI5OFx1OTJBOFx1OTJCOCIrCisgICAgICAgICJcdTkyQzhcdTkyRDhcdTkyRThcdTkyRjhcdTkzMDhcdTkzMThcdTkzMjhcdTkzMzhcdTkzNDhcdThFRDhcdTkzNThcdTkzNjgiKworICAgICAgICAiXHU5Mzc4XHU5Mzg4XHU5Mzk4XHU5M0E4XHU5M0I4XHU5M0M4XHU5M0Q4XHU5M0U4XHU5M0Y4XHU5NDA4XHU5NDE4XHU5NDI4IisKKyAgICAgICAgIlx1OTQzOFx1OTQ0OFx1OTQ1OFx1OTQ2OFx1OTQ3OFx1OTQ4OFx1OTQ5OFx1OTRBOFx1OTRCOFx1OTRDOFx1OTREOFx1OTRFOCIrCisgICAgICAgICJcdTk0RjhcdTk1MDhcdTk1MThcdTk1MjhcdTk1MzhcdTk1NDhcdTk1NThcdTk1NjhcdTk1NzhcdTk1ODhcdTk1OThcdTk1QTgiKworICAgICAgICAiXHU5NUI4XHU5NUM4XHU5NUQ4XHU5NUU4XHU5NUY4XHU5NjA4XHU5NjE4XHU5NjI4XHU5NjM4XHU5NjQ4XHU5NjU4XHU5NjY4IisKKyAgICAgICAgIlx1OTY3OFx1OTY4OFx1OTY5OFx1OTZBOFx1OTZCOFx1OTZDOFx1OTZEOFx1OTZFOFx1OTZGOFx1OTcwOFx1OTcxOFx1OTcyOCIrCisgICAgICAgICJcdTk3MzhcdTk3NDhcdTk3NThcdTk3NjhcdTk3NzhcdTk3ODhcdTk0NzhcdTk3OThcdTk3QThcdTk3QjhcdTk3QzhcdTk3RDgiKworICAgICAgICAiXHU5N0U4XHU5N0Y4XHU5ODA4XHU5Mzc4XHU5ODE4XHU5ODI4XHU5ODM4XHU5ODQ4XHU5ODU4XHU5ODY4XHU5ODc4XHU5ODg4IisKKyAgICAgICAgIlx1OTg5OFx1OThBOFx1OThCOFx1OThDOFx1OThEOFx1OThFOFx1OThGOFx1OTkwOFx1OTkxOFx1OTkyOFx1OTkzOFx1OTk0OCIrCisgICAgICAgICJcdThFRDhcdTk5NThcdTk5NjhcdTk5NzhcdTk5ODhcdTk5OThcdTk5QThcdTk5QjhcdTk5QzhcdTk5RDhcdTk5RThcdTk5RjgiKworICAgICAgICAiXHU5QTA4XHU5QTE4XHU5QTI4XHU5QTM4XHU5QTQ4XHU5QTU4XHU5QTY4XHU5QTc4XHU5QTg4XHU5QTk4XHU5QUE4XHU5QUI4IisKKyAgICAgICAgIlx1OUFDOFx1OUFEOFx1OUFFOFx1OUFGOFx1OTM5OFx1OUIwOFx1OUIxOFx1OUIyOFx1OUIzOFx1OUI0OFx1OUI1OFx1OUI2OCIrCisgICAgICAgICJcdTlCNzhcdTlCODhcdTlCOThcdTlCQThcdTlCQjhcdTlCQzhcdTlCRDhcdTlCRThcdTlCRjhcdTlDMDhcdTlDMThcdTlDMjgiKworICAgICAgICAiXHU5QzM4XHU5QzQ4XHU5QzU4XHU5QzY4XHU5Qzc4XHU5Qzg4XHU5Qzk4XHU5Q0E4XHU5Q0I4XHU5Q0M4XHU5Q0Q4XHU5Q0U4IisKKyAgICAgICAgIlx1OUNGOFx1OUQwOFx1OUQxOFx1OUQyOFx1OUQzOFx1OUQ0OFx1OUQ1OFx1OUQ2OFx1OUQ3OFx1OUQ4OFx1OUQ5OFx1OURBOCIrCisgICAgICAgICJcdTlEQjhcdTlEQzhcdTlERDhcdTlERThcdTlERjhcdTlFMDhcdTlFMThcMDAwXDAwMFx1OUUyOFwwMDBcdTlFMzhcMDAwIisKKyAgICAgICAgIlwwMDBcdTlFNDhcdTlFNThcdTlFNjhcdTlFNzhcdTlFODhcdTlFOThcdTlFQThcdTlFQjhcdTlFQzhcdTlFRDhcMDAwXHU5RUU4IisKKyAgICAgICAgIlwwMDBcdTlFRjhcMDAwXDAwMFx1OUYwOFx1OUYxOFwwMDBcMDAwXDAwMFx1OUYyOFx1OUYzOFx1OUY0OFx1OUY1OFx1QTVBNSIrCisgICAgICAgICJcMDIyXDAwMFx1NUQ3MFx1NUQ4OFx1NURBMFx1NURCOFx1NUREOFx1NURGOFx1NURGOFx1QTVBNVwwMTRcMDAwXHU1RTEwIisKKyAgICAgICAgIlx1NUUyOFx1NUU0MFx1NUU1OFx1NUU3MFx1QTVBNVwwMDZcMDAwXHUwMzMzXHU5RjY4XHU1RTg4XHUwQkQwXHUwQzAwXHU1RTk4IisKKyAgICAgICAgIlx1NUVBOFx1NUVCOFx1NUVDOFx1NUVEOFx1NUVFOFx1MDk3MFx1OUY4MFx1OUY5OFx1OUZCMFx1OUZEMFx1OUZGMFx1QTAwOCIrCisgICAgICAgICJcdUEwMjBcdUEwMzhcdUEwNTBcdUEwNjhcdUEwODBcdUEwOThcdUEwQjBcMDAwXHVBMEM4XHVBMEUwXHVBMEY4XHVBMTEwIisKKyAgICAgICAgIlx1QTEyOFwwMDBcdUExNDBcMDAwXHVBMTU4XHVBMTcwXDAwMFx1QTE4OFx1QTFBMFwwMDBcdUExQjhcdUExRDBcdUExRTgiKworICAgICAgICAiXHVBMjAwXHVBMjE4XHVBMjMwXHVBMjQ4XHVBMjYwXHVBMjc4XHU1RUY4XHU1RjEwXHU1RjEwXHVBNUE1XDAwNFx1NUYyMCIrCisgICAgICAgICJcdUE1QTVcMDA0XHU1RjMwXHVBNUE1XDAwNFx1NUY0MFx1QTVBNVwwMDRcdTVGNTBcdUE1QTVcMDA0XHU1RjYwXHVBNUE1IisKKyAgICAgICAgIlwwMDRcdTVGNzBcdUE1QTVcMDA0XHU1RjgwXHVBNUE1XDAwNFx1NUY5MFx1QTVBNVwwMDRcdTVGQTBcdUE1QTVcMDA0XHU1RkIwIisKKyAgICAgICAgIlx1QTVBNVwwMDRcdTVGQzBcdUE1QTVcMDA0XHU1RkQwXHU1RkUwXHU1RkUwXHU1RkYwXHU1RkYwXHU2MDAwXHU2MDAwXHU2MDEwIisKKyAgICAgICAgIlx1NjAxMFx1NjAyMFx1NjAyMFx1NjAzMFx1NjAzMFx1QTVBNVwwMDRcdTYwNDBcdUE1QTVcMDA0XHU2MDUwXHVBNUE1XDAwNCIrCisgICAgICAgICJcdTYwNjBcdUE1QTVcMDA0XHU2MDcwXHU2MDgwXHU2MDgwXHVBNUE1XDAwNFx1NjA5MFx1NjBBMFx1NjBBMFx1QTVBNVwwMDQiKworICAgICAgICAiXHU2MEI4XHVBNUE1XDAwNFx1NjBDOFx1NjBEOFx1NjBEOFx1NjBFOFx1NjBFOFx1QTVBNSFcMDAwXHVBNUE1XDAwNFx1NjEwMCIrCisgICAgICAgICJcdTYxMTBcdTYxMTBcdTYxMjBcdTYxMjBcdTYxMzBcdTYxMzBcdTA1QThcdTYxNDBcdTYxNDBcdTYxNTBcdTYxNTBcdTYxNjAiKworICAgICAgICAiXHU2MTYwXHVBNUE1XDAwNFx1NjE3MFx1NjE4MFx1NjE4MFx1NjE5MFx1NjE5MFx1NjFCMFx1NjFCMFx1NjFEMFx1NjFEMCIrCisgICAgICAgICJcdTYxRjBcdTYxRjBcdTYyMTBcdTYyMTBcdTYyMzBcdTYyMzBcdTYyNTBcdTYyNTBcdTYyNTBcdTYyNzBcdTYyNzBcdTYyNzAiKworICAgICAgICAiXHVBNUE1XDAwNFx1NjI5MFx1NjJBMFx1NjJDMFx1NjJFMFx1NjI3MFx1NjMwMFx1NjMyMFx1NjMzOFx1NjM1MFx1NjM2OCIrCisgICAgICAgICJcdTYzODBcdTYzOThcdTYzQjBcdTYzQzhcdTYzRTBcdTYzRjhcdTY0MTBcdTY0MjhcdTY0NDBcdTY0NThcdTY0NzBcdTY0ODgiKworICAgICAgICAiXHU2NEEwXHU2NEI4XHU2NEQwXHU2NEU4XHU2NTAwXHU2NTE4XHU2NTMwXHU2NTQ4XHU2NTYwXHU2NTc4XHU2NTkwXHU2NUE4IisKKyAgICAgICAgIlx1NjVDMFx1NjVEOFx1NjVGMFx1NjYwOFx1NjYyMFx1NjYzOFx1NjY1MFx1NjY2OFx1NjY4MFx1NjY5OFx1NjZCMFx1NjZDOCIrCisgICAgICAgICJcdTY2RTBcdTY2RjhcdTY3MTBcdTY3MjhcdTY3NDBcdTY3NThcdTY3NzBcdTY3ODhcdTY3QTBcdTY3QjhcdTY3RDBcdTY3RTgiKworICAgICAgICAiXHU2ODAwXHU2ODE4XHU2ODMwXHU2ODQ4XHU2ODYwXHU2ODc4XHU2ODkwXHU2OEE4XHU2OEMwXHU2OEQ4XHU2OEYwXHU2OTA4IisKKyAgICAgICAgIlx1NjkyMFx1NjkzOFx1Njk1MFx1Njk2OFx1Njk4MFx1Njk5OFx1NjlCMFx1NjlDOFx1NjlFMFx1NjlGOFx1NkExMFx1NkEyOCIrCisgICAgICAgICJcdTZBNDBcdTZBNThcdTZBNzBcdTZBODhcdTZBQTBcdTZBQjhcdTZBRDBcdTZBRThcdTZCMDBcdTZCMThcdTZCMzBcdTZCNDgiKworICAgICAgICAiXHU2QjYwXHU2Qjc4XHU2Qjk4XHU2QkI4XHU2QkQ4XHU2QkY4XHU2QzE4XHU2QzM4XHU2QzU4XHU2MkUwXHU2Qzc4XHU2MjcwIisKKyAgICAgICAgIlx1NjMwMFx1NkM5OFx1NkNCMFx1NjM2OFx1NkNDOFx1NjM4MFx1NjM5OFx1NkNFMFx1NkNGOFx1NjNGOFx1NkQxMFx1NjQxMCIrCisgICAgICAgICJcdTY0MjhcdTZEMjhcdTZENDBcdTY0NThcdTZENThcdTY0NzBcdTY0ODhcdTY3NDBcdTY3NThcdTY3QTBcdTY3QjhcdTY3RDAiKworICAgICAgICAiXHU2ODMwXHU2ODQ4XHU2ODYwXHU2ODc4XHU2OEQ4XHU2OEYwXHU2OTA4XHU2RDcwXHU2OTY4XHU2RDg4XHU2REEwXHU2OUY4IisKKyAgICAgICAgIlx1NkRCOFx1NkExMFx1NkEyOFx1NkI2MFx1NkREMFx1NkRFOFx1NkFFOFx1NkUwMFx1NkIwMFx1NkIxOFx1NjJBMFx1NjJDMCIrCisgICAgICAgICJcdTZFMThcdTYyRTBcdTZFMzhcdTYzMjBcdTYzMzhcdTYzNTBcdTYzNjhcdTZFNThcdTYzQjBcdTYzQzhcdTYzRTBcdTYzRjgiKworICAgICAgICAiXHU2RTcwXHU2NDU4XHU2NEEwXHU2NEI4XHU2NEQwXHU2NEU4XHU2NTAwXHU2NTMwXHU2NTQ4XHU2NTYwXHU2NTc4XHU2NTkwIisKKyAgICAgICAgIlx1NjVBOFx1NkU4OFx1NjVDMFx1NjVEOFx1NjVGMFx1NjYwOFx1NjYyMFx1NjYzOFx1NjY2OFx1NjY4MFx1NjY5OFx1NjZCMCIrCisgICAgICAgICJcdTY2QzhcdTY2RTBcdTY2RjhcdTY3MTBcdTY3MjhcdTY3NzBcdTY3ODhcdTY3RThcdTY4MDBcdTY4MThcdTY4MzBcdTY4NDgiKworICAgICAgICAiXHU2ODkwXHU2OEE4XHU2OEMwXHU2OEQ4XHU2RUEwXHU2OTIwXHU2OTM4XHU2OTUwXHU2OTY4XHU2OUIwXHU2OUM4XHU2OUUwIisKKyAgICAgICAgIlx1NjlGOFx1NkVCOFx1NkE0MFx1NkE1OFx1NkVEMFx1NkFBMFx1NkFCOFx1NkFEMFx1NkFFOFx1NkVFOFx1NjJFMFx1NkUzOCIrCisgICAgICAgICJcdTYzNjhcdTZFNThcdTYzRjhcdTZFNzBcdTY0NThcdTZGMDBcdTY1OTBcdTZGMThcdTZGMzBcdTZGNDhcdTY4MzBcdTY4NDgiKworICAgICAgICAiXHU2OEQ4XHU2OUY4XHU2RUI4XHU2QUU4XHU2RUU4XHU2RjYwXHU2RjgwXHU2RkEwXHU2RkMwXHU2RkQ4XHU2RkYwXHU3MDA4IisKKyAgICAgICAgIlx1NzAyMFx1NzAzOFx1NzA1MFx1NzA2OFx1NzA4MFx1NzA5OFx1NzBCMFx1NzBDOFx1NzBFMFx1NzBGOFx1NzExMFx1NzEyOCIrCisgICAgICAgICJcdTcxNDBcdTcxNThcdTcxNzBcdTcxODhcdTcxQTBcdTcxQjhcdTcxRDBcdTZGMzBcdTcxRThcdTcyMDBcdTcyMThcdTcyMzAiKworICAgICAgICAiXHU2RkMwXHU2RkQ4XHU2RkYwXHU3MDA4XHU3MDIwXHU3MDM4XHU3MDUwXHU3MDY4XHU3MDgwXHU3MDk4XHU3MEIwXHU3MEM4IisKKyAgICAgICAgIlx1NzBFMFx1NzBGOFx1NzExMFx1NzEyOFx1NzE0MFx1NzE1OFx1NzE3MFx1NzE4OFx1NzFBMFx1NzFCOFx1NzFEMFx1NkYzMCIrCisgICAgICAgICJcdTcxRThcdTcyMDBcdTcyMThcdTcyMzBcdTcxQTBcdTcxQjhcdTcxRDBcdTZGMzBcdTZGMThcdTZGNDhcdTY2NTBcdTY1NDgiKworICAgICAgICAiXHU2NTYwXHU2NTc4XHU3MUEwXHU3MUI4XHU3MUQwXHU2NjUwXHU2NjY4XHU3MjQ4XHU3MjQ4XHVBNUE1XDAyMlwwMDBcdTcyNjAiKworICAgICAgICAiXHU3MjgwXHU3MjgwXHU3MkEwXHU3MkMwXHU3MkUwXHU3MzAwXHU3MzIwXHU3MzQwXHU3MzQwXHU3MzYwXHU3MzgwXHU3M0EwIisKKyAgICAgICAgIlx1NzNDMFx1NzNFMFx1NzQwMFx1NzQwMFx1NzQyMFx1NzQ0MFx1NzQ0MFx1NzQ2MFx1NzQ2MFx1NzQ4MFx1NzRBMFx1NzRBMCIrCisgICAgICAgICJcdTc0QzBcdTc0RTBcdTc0RTBcdTc1MDBcdTc1MDBcdTc1MjBcdTc1NDBcdTc1NDBcdTc1NjBcdTc1NjBcdTc1ODBcdTc1QTAiKworICAgICAgICAiXHU3NUMwXHU3NUUwXHU3NUUwXHU3NjAwXHU3NjIwXHU3NjQwXHU3NjYwXHU3NjgwXHU3NjgwXHU3NkEwXHU3NkMwXHU3NkUwIisKKyAgICAgICAgIlx1NzcwMFx1NzcyMFx1Nzc0MFx1Nzc0MFx1Nzc2MFx1Nzc2MFx1Nzc4MFx1Nzc4MFx1NzdBMFx1NzdDMFx1NzdFMFx1NzgwMCIrCisgICAgICAgICJcdTc4MjBcdTc4NDBcdTc4NjBcMDAwXDAwMFx1Nzg4MFx1NzhBMFx1NzhDMFx1NzhFMFx1NzkwMFx1NzkyMFx1NzkyMFx1Nzk0MCIrCisgICAgICAgICJcdTc5NjBcdTc5ODBcdTc5QTBcdTc5QTBcdTc5QzBcdTc5RTBcdTdBMDBcdTdBMjBcdTdBNDBcdTdBNjBcdTdBODBcdTdBQTAiKworICAgICAgICAiXHU3QUMwXHU3QUUwXHU3QjAwXHU3QjIwXHU3QjQwXHU3QjYwXHU3QjgwXHU3QkEwXHU3QkMwXHU3QkUwXHU3QzAwXHU3QzIwIisKKyAgICAgICAgIlx1N0M0MFx1N0M2MFx1NzZBMFx1NzZFMFx1N0M4MFx1N0NBMFx1N0NDMFx1N0NFMFx1N0QwMFx1N0QyMFx1N0QwMFx1N0NDMCIrCisgICAgICAgICJcdTdENDBcdTdENjBcdTdEODBcdTdEQTBcdTdEQzBcdTdEMjBcdTc1QzBcdTc0ODBcdTdERTBcdTdFMDBcdUE1QTUoXDAwMCIrCisgICAgICAgICJcdTdFMjBcdTdFNDBcdTdFNjBcdTdFODhcdTdFQjBcdTdFRDhcdTdGMDBcdTdGMjhcdTdGNTBcdTdGNzhcdTdGOThcdTgwMzAiKworICAgICAgICAiXHVBNUE1XDAwNFwwMDBcdUE1QTVcMDA0XHUwMUJCXHVBNUE1XDAxNFwwMDBcdTA4MDhcdTgwNzhcdTgwODhcdTgwOThcdTgwOTgiKworICAgICAgICAiXHUwOUEwXHUwOUIwXHU4MEE4XHU4MEI4XHU4MEM4XHU4MEQ4XHU4MEU4XHU4MEY4XHU4MTA4XHU4MTE4XHU4MTI4XHU4MTM4IisKKyAgICAgICAgIlx1ODE0OFx1ODE1OFx1ODE2OFx1ODE3OFx1QTVBNVwwMDRcMDAwXHVBNUE1XDAwNFx1MDhDOFx1ODA5OFx1ODA5OFx1ODA5OCIrCisgICAgICAgICJcdTgxODhcdTgxOThcdTA3RjhcMDAwXHU4MUE4XHU4MUI4XHUwOTAwXHUwOEI4XHU4MDc4XHUwOUEwXHUwOUIwXHU4MEE4IisKKyAgICAgICAgIlx1ODBCOFx1ODBDOFx1ODBEOFx1ODFDOFx1ODFEOFx1ODFFOFx1MDk3MFx1ODFGOFx1ODIwOFx1ODIxOFx1MDk5MFwwMDAiKworICAgICAgICAiXHU4MjI4XHU4MjM4XHU4MjQ4XHU4MjU4XHVBNUE1XDAwNFwwMDBcdTgyNjhcdTgyODBcdTgyOThcMDAwXHU4MkIwXDAwMCIrCisgICAgICAgICJcdTgyQzhcdTgyRTBcdTgyRjhcdTgzMTBcdTgzMjhcdTgzNDBcdTgzNThcdTgzNzBcdTgzODhcdTgzQTBcdTgzQjhcdTgzQzgiKworICAgICAgICAiXHU4M0M4XHU4M0UwXHU4M0UwXHU4M0Y4XHU4M0Y4XHU4NDEwXHU4NDEwXHVBNUE1XDAwNFx1ODQyOFx1NjFBMFx1NjFBMCIrCisgICAgICAgICJcdUE1QTVcMDA0XHU4NDQwXHU4NDUwXHU4NDUwXHVBNUE1XDAwNFx1ODQ2MFx1QTVBNVwwMDRcdTg0NzBcdUE1QTVcMDA0IisKKyAgICAgICAgIlx1NjJCMFx1QTVBNVwwMDRcdTYyRDBcdUE1QTVcMDA0XHU2MzU4XHU3RUM4XHU3RUM4XHU4NDgwXHU4NDgwXHU2QzQ4XHU2QzQ4IisKKyAgICAgICAgIlx1NkM2OFx1NkM2OFx1QTVBNVwwMDRcdTg0OTBcdUE1QTVcMDA0XHU4NEEwXHVBNUE1XDAwNFx1ODRCMFx1QTVBNVwwMDQiKworICAgICAgICAiXHU4NEMwXHVBNUE1XDAwNFx1ODREMFx1QTVBNVwwMDRcdTg0RTBcdUE1QTVcMDA0XHU4NEYwXHVBNUE1XDAwNFx1ODUwMCIrCisgICAgICAgICJcdUE1QTVcMDA0XHU4NTEwXHVBNUE1XDAwNFx1ODUyMFx1QTVBNVwwMDRcdTg1MzBcdUE1QTVcMDA0XHU2ODM4XHVBNUE1IisKKyAgICAgICAgIlwwMDRcdTYyRjBcdUE1QTVcMDA0XHU2Qzg4XHVBNUE1XDAwNFx1NkU0OFx1NjFFMFx1NjFFMFx1NjE4MFx1NjE4MFx1QTVBNSIrCisgICAgICAgICJcMDA0XHU2MzEwXHU4NTQwXHU4NTQwXHU4NTYwXHU4NTYwXHU4NTgwXHU4NTgwXHU4NUEwXHU4NUEwXHVBNUE1XDAwNFwwMDAiKworICAgICAgICAiXHUwOEI4XHU4NUI4XHU4MUM4XHU4MjM4XHU4MjQ4XHU4MUQ4XHU4NUM4XHUwOUEwXHUwOUIwXHU4MUU4XHUwOTcwXHU4MTg4IisKKyAgICAgICAgIlx1ODFGOFx1MDdGOFx1ODVEOFx1MDkxMFx1MDEwOFx1MDBBOFx1MDBCOFx1MDEzOFx1MDkyMFx1MDkzMFx1MDk0MFx1MDk1MCIrCisgICAgICAgICJcdTA5NjBcdTgxQjhcdTgxQThcdTgyMDhcdTA5OTBcdTgyMThcdTA5MDBcdTgyNThcdTE5QjBcdTBCQTBcdTBBMThcdTBFQjgiKworICAgICAgICAiXHUwQkMwXHUwQTk4XHUxOUMwXHUwQUI4XHUwQUQ4XHUwMTkwXHUxOUQwXHUwQUU4XHUwQjU4XHUwQUY4XHUxOUUwXHUwQjIwIisKKyAgICAgICAgIlx1MEIzMFx1MEI0MFx1MTlGMFx1MUEwMFx1MUExMFx1MERGOFx1MUEyMFx1MEU3MFx1MUEzMFx1MDJGOFx1ODVFOFx1ODIyOCIrCisgICAgICAgICJcdTg1RjhcdTg2MDhcdTgwOThcdTg2MThcdTAwODBcdTFBNDBcdTA5RThcdTBGQzhcdTBCQjBcdTFBNTBcdTBBQThcdTAzMzgiKworICAgICAgICAiXHUwQzEwXHUwMUE4XHUxQTYwXHUwNDU4XHUwRkQ4XHUwMUYwXHUwMTE4XHUxQTcwXHUxQTgwXHUwMzU4IFx1MUE5MFx1MEE3MCIrCisgICAgICAgICJcdTBGMDhcdTAzOThcdTA0NjhcdTAzQThcdTAzMTBcdTgwQThcdTg2MjhcdTgwQjhcdTg2MzhcMDAwXDAwMFx1ODY0OFx1ODE0OCIrCisgICAgICAgICJcdTgxNThcdTgxOThcdTg2NThcdTNGMDBcdTNGNThcdTg2NjhcdTg2NzhcdTg2ODhcdTg2OThcdTg2QThcdTg2QjhcdTg2QzgiKworICAgICAgICAiXHU4NkQ4XHU0MDc4XHUzQzIwXHUzQzMwXHUzQzQwXHUzQzUwXHUzQzYwXHUzQzcwXHUzQzgwXHUzQzkwXHUzQ0EwXHUzQ0IwIisKKyAgICAgICAgIlx1M0NDMFx1M0NEMFx1M0NFMFx1M0NGMFx1M0QwMFx1M0QxMFx1M0QyMFx1M0QzMFx1M0Q0MFx1M0Q1MFx1M0Q2MFx1M0Q3MCIrCisgICAgICAgICJcdTNEODBcdTNEOTBcdTNEQTBcdTNEQjBcdTNEQzBcdTNERDBcdTNERTBcdTNERjBcdTNFMDBcdTNFMTBcdTNFMjBcdTNFMzAiKworICAgICAgICAiXHUzRTQwXHUzRTUwXHUzRTYwXHUzRTcwXHUzRTgwXHUzRTkwXHUzRUEwXHUzRUIwXHUzRUMwXHUzRUQwXHU0MDE4XHUyODU4IisKKyAgICAgICAgIlx1Mjg3MFx1MkJCMFx1Mjg4MFx1Mjg5MFx1MjhBMFx1MjhCMFx1MjhDMFx1MjhEMFx1MjhFMFx1MjhGMFx1MjkwMFx1MjkxMCIrCisgICAgICAgICJcdTI5MjBcdTI5MzBcdTI5NDBcdTI5NTBcdTI5NjBcdTI5NzBcdTI5ODBcdTI5OTBcdTI5QTBcdTI5QjBcdTI5QzBcdTI5RDAiKworICAgICAgICAiXHUyOUUwXHUyOUYwXHUyQTAwXHUyQTEwXHUyQTIwXHUyQTMwXHUyQTQwXHUyQTUwXDAwMFwwMDBcMDAwXHUyQTYwXHUyQTcwIisKKyAgICAgICAgIlx1MkE4MFx1MkE5MFx1MkFBMFx1MkFCMFwwMDBcMDAwXHUyQUMwXHUyQUQwXHUyQUUwXHUyQUYwXHUyQjAwXHUyQjEwXDAwMCIrCisgICAgICAgICJcMDAwXHUyQjIwXHUyQjMwXHUyQjQwXHUyQjUwXHUyQjYwXHUyQjcwXDAwMFwwMDBcdTJCODBcdTJCOTBcdTJCQTBcMDAwIisKKyAgICAgICAgIlwwMDBcMDAwXHU4NkU4XHU4NkY4XHU4NzA4XHUwMDkwXHU4NzE4XHU4NzI4XHU4NzM4XDAwMFx1ODc0OFx1ODc1OFx1ODc2OCIrCisgICAgICAgICJcdTg3NzhcdTg3ODhcdTg3OThcdTg3QThcdUE1QTVcMDIxXDAwMCIKKyAgICAgICAgKTsKKworICAgIHN0YXRpYyBmaW5hbCBDb21wYWN0Q2hhckFycmF5IGFjdGlvbnMgPSBuZXcgQ29tcGFjdENoYXJBcnJheSgKKyAgICAgICAgIlwwMDBcdTA4MDBcdUE1QTUgXDAwMCBAYFx1MDA4MFx1MDBBMFx1MDBDMFx1MDBFMFwwMDBcdTAxMDBcdTAxMjBcdTAxNDAiKworICAgICAgICAiXHVBNUE1XDAwNlwwMDBcdTAxNjBcdTAxODBcdTAxQTBcdTAxQzBcdUE1QTVcMDEzXDAwMFx1MDFFMFx1MDIwMFx1MDIyMCIrCisgICAgICAgICJcdTAyNDBcdTAyNjBcdTAyODBcdTAyQTBcMDAwXHUwMkMwXHUwMkUwXHUwMzAwXHVBNUE1XDAwNlwwMDBcdTAzMjBcdTAzNDAiKworICAgICAgICAiXHUwMzYwXHUwMzgwXHVBNUE1XDAxM1wwMDBcdTAzQTBcdTAzQzBcdUE1QTVcMDE1XDAwMFx1MDNFMFx1MDQwMFx1QTVBNSIrCisgICAgICAgICJcMDE3XDAwMFx1MDQyMFx1MDQ0MFx1MDQ2MFx1MDQ4MFwwMDBcMDAwXHUwNEEwXHVBNUE1XDAzMVwwMDBcdTA0QzBcdTA0RTAiKworICAgICAgICAiXHUwNTAwXHUwNTIwXDAwMFwwMDBcMDAwXHUwNTQwXHUwNTYwXHUwNTgwXHUwNUEwXDAwMFx1MDVDMFx1MDVFMFx1QTVBNSIrCisgICAgICAgICJcMDA2XDAwMFx1MDYwMFx1QTVBNVwwMTNcMDAwXHUwNjIwXHUwNjQwXHVBNUE1XDAwNlwwMDBcdTA2NjBcdTA2ODBcdTA2QTAiKworICAgICAgICAiXHVBNUE1XDAwNFwwMDBcdTA2QzBcdUE1QTVcMDA0XDAwMFx1MDZFMFx1QTVBNVwwMTNcMDAwXHUwNzAwXHUwNzIwXDAwMCIrCisgICAgICAgICJcMDAwXDAwMFx1MDc0MFx1QTVBNVwwMDdcMDAwXHUwNzYwXHVBNUE1XDAyMlwwMDBcdTA3ODBcdTA3QTBcdTA3QzBcdTA3RTAiKworICAgICAgICAiXDAwMFx1MDgwMFwwMDBcMDAwXHUwODIwXHUwODQwXHUwODYwXHVBNUE1XDAyNVwwMDBcdTA4ODBcdTA4QTBcdTA4QzBcdTA4RTAiKworICAgICAgICAiXDAwMFwwMDBcdTA5MDBcdUE1QTVcMDMxXDAwMFx1MDkyMFx1MDk0MFx1QTVBNVwwMzZcMDAwXHUwOTYwXHUwOTgwXHVBNUE1IisKKyAgICAgICAgIlwwMDdcMDAwXHUwOUEwXHUwOUMwXHVBNUE1XDAyNVwwMDBcdTA5RTBcdTBBMDBcdTBBMjBcdTBBNDBcMDAwXDAwMFx1MEE2MCIrCisgICAgICAgICJcMDAwXHUwQTgwXHVBNUE1XDAyN1wwMDBcdTBBQTBcdTBBQzBcdUE1QTVcMDEwXDAwMFx1MEFFMFx1QTVBNVwwMjVcMDAwIisKKyAgICAgICAgIlx1MEIwMFx1MEIyMFx1QTVBNSZcMDAwXHUwQjQwXHUwQjYwXHVBNUE1XDAxMlwwMDBcdTBCODBcdUE1QTVcMDIzXDAwMCIrCisgICAgICAgICJcdTBCQTBcdTBCQzBcdUE1QTVcMDEyXDAwMFx1MEJFMFx1QTVBNVwwMTNcMDAwXHUwQzAwXHUwQzIwXHUwQzQwXHUwQzYwIisKKyAgICAgICAgIlwwMDBcdTBDODBcdTBDQTBcdTBDQzBcdTBDRTBcdUE1QTVcMDA0XDAwMFx1MEQwMFx1MEQyMFwwMDBcdTBENDBcdTBENjAiKworICAgICAgICAiXHVBNUE1XDAxNlwwMDBcdTBEODBcdTBEQTBcdTBEQzBcdTBERTBcdTBFMDBcdTBFMjBcdTBFNDBcdTBFNjBcdTBFODBcMDAwIisKKyAgICAgICAgIlwwMDBcdTBFQTBcdTBFQzBcdTBFRTBcdTBGMDBcdTBGMjBcdTBGNDBcdTBGNjBcdUE1QTVcMDE2XDAwMFx1MEY4MFx1MEZBMCIrCisgICAgICAgICJcdTBGQzBcdTBGRTBcMDAwXHUxMDAwXHUxMDIwXDAwMFx1MTA0MFx1QTVBNVwwMDVcMDAwXHUxMDYwXDAwMFwwMDBcdTEwODAiKworICAgICAgICAiXHVBNUE1XDAxNlwwMDBcdTEwQTBcdTEwQzBcdTEwRTBcdTExMDBcMDAwXDAwMFx1MTEyMFx1MTE0MFx1MTE2MFx1QTVBNSIrCisgICAgICAgICJcMDA2XDAwMFx1MTE4MFx1QTVBNVwwMjBcMDAwXHUxMUEwXHUxMUMwXDAwMFwwMDBcMDAwXHUxMUUwXHVBNUE1XDAwN1wwMDAiKworICAgICAgICAiXHUxMjAwXHUxMjIwXHUxMjQwXHVBNUE1XDAyMFwwMDBcdTEyNjBcdTEyODBcdTEyQTBcdTEyQzBcdTEyRTBcdTEzMDBcMDAwIisKKyAgICAgICAgIlx1MTMyMFx1MTM0MFwwMDBcMDAwXHUxMzYwXHUxMzgwXHUxM0EwXHUxM0MwXHUxM0UwXHUxNDAwXHVBNUE1XDAxN1wwMDAiKworICAgICAgICAiXHUxNDIwXHUxNDQwXHUxNDYwXHUxNDgwXHUxNEEwXHUxNEMwXHUxNEUwXHUxNTAwXHUxNTIwXDAwMFwwMDBcdTE1NDBcdTE1NjAiKworICAgICAgICAiXHUxNTgwXHUxNUEwXHUxNUMwXHUxNUUwXHUxNjAwXHVBNUE1XDAxNlwwMDBcdTE2MjBcdTE2NDBcdTE2NjBcdTE2ODBcdTE2QTAiKworICAgICAgICAiXHUxNkMwXHUxNkUwXHUxNzAwXHUxNzIwXDAwMFwwMDBcdTE3NDBcdTE3NjBcMDAwXHUxNzgwXHUxN0EwXHUxN0MwXHUxN0UwIisKKyAgICAgICAgIlx1QTVBNVwwMTZcMDAwXHUxODAwXHUxODIwXDAwMFwwMDBcdTE4NDBcMDAwXDAwMFwwMDBcdTE4NjBcMDAwXDAwMFwwMDAiKworICAgICAgICAiXHUxODgwXHVBNUE1XDAyM1wwMDBcdTE4QTBcdTE4QzBcdTE4RTBcdTE5MDBcdTE5MjBcdTE5NDBcdTE5NjBcdTE5ODBcdTE5QTAiKworICAgICAgICAiXDAwMFwwMDBcdTE5QzBcdTE5RTBcMDAwXHUxQTAwXHUxQTIwXHUxQTQwXHUxQTYwXHVBNUE1XDAxNlwwMDBcdTFBODBcdTFBQTAiKworICAgICAgICAiXHUxQUMwXHUxQUUwXHUxQjAwXHUxQjIwXHUxQjQwXHUxQjYwXHUxQjgwXDAwMFwwMDBcdTFCQTBcdTFCQzBcdTFCRTBcdTFDMDAiKworICAgICAgICAiXHUxQzIwXHVBNUE1XDAyMFwwMDBcdTFDNDBcdUE1QTVcMDIzXDAwMFx1MUM2MFx1MUM4MFx1QTVBNVwwMTJcMDAwXHUxQ0EwIisKKyAgICAgICAgIlx1QTVBNVwwMTBcMDAwXHUxQ0MwXHVBNUE1XDAwN1wwMDBcdTFDRTBcdTFEMDBcdTFEMjBcdTFENDBcdUE1QTVcMDIzXDAwMCIrCisgICAgICAgICJcdTFENjBcdTFEODBcdUE1QTVcMDA3XDAwMFx1MURBMFx1MURDMFx1MURFMFx1MUUwMFx1QTVBNVwwMjVcMDAwXHUxRTIwIisKKyAgICAgICAgIlx1QTVBNVwwMzdcMDAwXHUxRTQwXHVBNUE1XDAzN1wwMDBcdTFFNjBcdUE1QTVcMDM3XDAwMFx1MUU4MFx1QTVBNVwwMzciKworICAgICAgICAiXDAwMFx1MUVBMFx1QTVBNVwwMzdcMDAwXHUxRUMwXHVBNUE1XDAzN1wwMDBcdTFFRTBcdUE1QTVcMDM3XDAwMFx1MUYwMCIrCisgICAgICAgICJcdUE1QTVcMDM3XDAwMFx1MUYyMFx1QTVBNVwwMzdcMDAwXHUxRjQwXHVBNUE1XDAzN1wwMDBcdTFGNjBcdUE1QTVcMDM3IisKKyAgICAgICAgIlwwMDBcdTFGODBcdUE1QTUgXDAwMFx1MUZBMFx1QTVBNVwwMzdcMDAwXHUxRkMwXHVBNUE1XDAzN1wwMDBcdTFGRTBcdUE1QTUiKworICAgICAgICAiXDAzN1wwMDBcdTIwMDBcdUE1QTVcMDM3XDAwMFx1MjAyMFx1QTVBNVwwMzdcMDAwXHUyMDQwXHVBNUE1XDAzN1wwMDBcdTIwNjAiKworICAgICAgICAiXHVBNUE1XDAzN1wwMDBcdTIwODBcdUE1QTVcMDM3XDAwMFx1MjBBMFx1QTVBNVwwMzdcMDAwXHUyMEMwXHVBNUE1KVwwMDAiKworICAgICAgICAiXHUyMEUwXHUyMTAwXHUyMTIwXHVBNUE1XDAzNlwwMDBcdTIxNDBcdTIxNjBcdUE1QTVcdTAxMjhcMDAwIgorICAgICAgICAsCisgICAgICAgICJcMDAwXHUyMTgwXHVBNUE1IVwwMDBcdTFGRURcdUE1QTVcMDA1XDAwMFx1MDBDMFx1MUZDRFwwMDBcMDAwXHUxRkREXDAwMCIrCisgICAgICAgICJcdTAwQzhcMDAwXDAwMFwwMDBcdTAwQ0NcdUE1QTVcMDA0XDAwMFx1MDFGOFx1MDBEMlx1QTVBNVwwMDRcMDAwXHUwMEQ5IisKKyAgICAgICAgIlwwMDBcdTFFODBcMDAwXHUxRUYyXDAwMFx1MDBFMFwwMDBcMDAwXDAwMFx1MDBFOFwwMDBcMDAwXDAwMFx1MDBFQ1x1QTVBNSIrCisgICAgICAgICJcMDA0XDAwMFx1MDFGOVx1MDBGMlx1QTVBNVwwMDRcMDAwXHUwMEY5XDAwMFx1MUU4MVwwMDBcdTFFRjNcMDAwXDAwMFwwMDAiKworICAgICAgICAiXHUxRUE2XHVBNUE1XDAwN1wwMDBcdTFFQzBcdUE1QTVcMDEwXDAwMFx1MUVEMlx1QTVBNVwwMDZcMDAwXHUwMURCXDAwMCIrCisgICAgICAgICJcMDAwXDAwMFx1MUVBN1x1QTVBNVwwMDdcMDAwXHUxRUMxXHVBNUE1XDAxMFwwMDBcdTFFRDNcdUE1QTVcMDA2XDAwMFx1MDFEQyIrCisgICAgICAgICJcdUE1QTVcMDA0XDAwMFx1MUVCMFx1MUVCMVx1QTVBNVwwMTJcMDAwXHUxRTE0XHUxRTE1XHVBNUE1XDAzNVwwMDBcdTFFNTAiKworICAgICAgICAiXHUxRTUxXHVBNUE1JVwwMDBcdTFFRENcdTFFRERcdTFFRUFcdTFFRUJcdUE1QTUuXDAwMFx1MUZCQVx1MUZDOFx1MUZDQSIrCisgICAgICAgICJcdTFGREFcdTFGRjhcMDAwXHUxRkVBXHUxRkZBXDAwMFwwMDBcdTFGNzBcdTFGNzJcdTFGNzRcdTFGNzZcdTFGNzhcMDAwIisKKyAgICAgICAgIlx1MUY3QVx1MUY3Q1x1MUZEMlx1MUZFMlx1QTVBNVwwMDRcMDAwXHUwNDAwXDAwMFwwMDBcdTA0MERcdUE1QTVcMDEwXDAwMCIrCisgICAgICAgICJcdTA0NTBcMDAwXDAwMFx1MDQ1RFx1QTVBNTpcMDAwXHUxRjAyXHUxRjAzXHVBNUE1XDAwNlwwMDBcdTFGMEFcdTFGMEIiKworICAgICAgICAiXHVBNUE1XDAwNlwwMDBcdTFGMTJcdTFGMTNcdTFGMUFcdTFGMUJcdTFGMjJcdTFGMjNcdUE1QTVcMDA2XDAwMFx1MUYyQSIrCisgICAgICAgICJcdTFGMkJcdUE1QTVcMDA2XDAwMFx1MUYzMlx1MUYzM1x1MUYzQVx1MUYzQlx1MUY0Mlx1MUY0M1x1MUY0QVx1MUY0Qlx1MUY1MiIrCisgICAgICAgICJcdTFGNTNcdTFGNUJcdTFGNjJcdTFGNjNcdUE1QTVcMDA2XDAwMFx1MUY2QVx1MUY2Qlx1QTVBNVwwMTFcMDAwXHUxRjgyIisKKyAgICAgICAgIlx1MUY4M1x1MUY4QVx1MUY4Qlx1MUY5Mlx1MUY5M1x1MUY5QVx1MUY5Qlx1MUZBMlx1MUZBM1x1MUZBQVx1MUZBQlx1MUZCMiIrCisgICAgICAgICJcMDAwXHVGRThFXHUxRkMyXDAwMFx1RkUxN1x1MUZGMlwwMDBcdUZCQzZcdUE1QTVcMDE2XDAwMFx1MDM4NVx1QTVBNVwwMDQiKworICAgICAgICAiXDAwMFx1MDNEM1x1MDBDMVx1MUZDRVwwMDBcdTAxMDZcdTFGREVcMDAwXHUwMEM5XDAwMFx1MDFGNFwwMDBcdTAwQ0RcMDAwIisKKyAgICAgICAgIlx1MUUzMFx1MDEzOVx1MUUzRVx1MDE0M1x1MDBEM1x1MUU1NFx1MDE1NFx1MDE1QVwwMDBcdTAwREFcMDAwXHUxRTgyXDAwMCIrCisgICAgICAgICJcdTAwRERcdTAxNzlcdTAwRTFcMDAwXHUwMTA3XDAwMFx1MDBFOVwwMDBcdTAxRjVcMDAwXHUwMEVEXDAwMFx1MUUzMVx1MDEzQSIrCisgICAgICAgICJcdTFFM0ZcdTAxNDRcdTAwRjNcdTFFNTVcdTAxNTVcdTAxNUJcMDAwXHUwMEZBXDAwMFx1MUU4M1wwMDBcdTAwRkRcdTAxN0EiKworICAgICAgICAiXDAwMFwwMDBcdTFFQTRcMDAwXDAwMFx1MDFGQVx1MDFGQ1x1MUUwOFwwMDBcMDAwXHUxRUJFXHVBNUE1XDAwNFwwMDBcdTFFMkUiKworICAgICAgICAiXDAwMFwwMDBcMDAwXHUxRUQwXHUxRTRDXDAwMFx1MDFGRVwwMDBcMDAwXDAwMFx1MDFEN1wwMDBcMDAwXDAwMFx1MUVBNSIrCisgICAgICAgICJcMDAwXDAwMFx1MDFGQlx1MDFGRFx1MUUwOVwwMDBcMDAwXHUxRUJGXHVBNUE1XDAwNFwwMDBcdTFFMkZcMDAwXDAwMFwwMDAiKworICAgICAgICAiXHUxRUQxXHUxRTREXDAwMFx1MDFGRlwwMDBcMDAwXDAwMFx1MDFEOFx1QTVBNVwwMDRcMDAwXHUxRUFFXHUxRUFGXHVBNUE1IisKKyAgICAgICAgIlwwMTJcMDAwXHUxRTE2XHUxRTE3XHVBNUE1XDAzNVwwMDBcdTFFNTJcdTFFNTNcdUE1QTVcMDIwXDAwMFx1MUU3OFx1MUU3OSIrCisgICAgICAgICJcdUE1QTVcMDIzXDAwMFx1MUVEQVx1MUVEQlx1MUVFOFx1MUVFOVx1QTVBNS5cMDAwXHUwMzg2XHUwMzg4XHUwMzg5XHUwMzhBIisKKyAgICAgICAgIlx1MDM4Q1wwMDBcdTAzOEVcdTAzOEZcMDAwXDAwMFx1MDNBQ1x1MDNBRFx1MDNBRVx1MDNBRlx1MDNDQ1wwMDBcdTAzQ0QiKworICAgICAgICAiXHUwM0NFXHUwMzkwXHUwM0IwXDAwMFwwMDBcMDAwXHUwNDAzXHVBNUE1XDAwNFwwMDBcdTA0MENcdUE1QTVcMDA2XDAwMCIrCisgICAgICAgICJcdTA0NTNcdUE1QTVcMDA0XDAwMFx1MDQ1Q1x1QTVBNTlcMDAwXHUxRjA0XHUxRjA1XHVBNUE1XDAwNlwwMDBcdTFGMEMiKworICAgICAgICAiXHUxRjBEXHVBNUE1XDAwNlwwMDBcdTFGMTRcdTFGMTVcdTFGMUNcdTFGMURcdTFGMjRcdTFGMjVcdUE1QTVcMDA2XDAwMCIrCisgICAgICAgICJcdTFGMkNcdTFGMkRcdUE1QTVcMDA2XDAwMFx1MUYzNFx1MUYzNVx1MUYzQ1x1MUYzRFx1MUY0NFx1MUY0NVx1MUY0Q1x1MUY0RCIrCisgICAgICAgICJcdTFGNTRcdTFGNTVcdTFGNURcdTFGNjRcdTFGNjVcdUE1QTVcMDA2XDAwMFx1MUY2Q1x1MUY2RFx1QTVBNVwwMTFcMDAwIisKKyAgICAgICAgIlx1MUY4NFx1MUY4NVx1MUY4Q1x1MUY4RFx1MUY5NFx1MUY5NVx1MUY5Q1x1MUY5RFx1MUZBNFx1MUZBNVx1MUZBQ1x1MUZBRCIrCisgICAgICAgICJcdTFGQjRcMDAwXHVGRThEXHUxRkM0XDAwMFx1RkUxNlx1MUZGNFwwMDBcdUZCQzVcdUE1QTVcMDI0XDAwMFx1MDBDMlwwMDAiKworICAgICAgICAiXDAwMFx1MDEwOFwwMDBcMDAwXHUwMENBXDAwMFx1MDExQ1x1MDEyNFx1MDBDRVx1MDEzNFx1QTVBNVwwMDRcMDAwXHUwMEQ0IisKKyAgICAgICAgIlwwMDBcMDAwXHUwMTVDXDAwMFx1MDBEQlwwMDBcdTAxNzRcMDAwXHUwMTc2XHUxRTkwXHUwMEUyXDAwMFx1MDEwOVwwMDAiKworICAgICAgICAiXHUwMEVBXDAwMFx1MDExRFx1MDEyNVx1MDBFRVx1MDEzNVx1QTVBNVwwMDRcMDAwXHUwMEY0XDAwMFwwMDBcdTAxNURcMDAwIisKKyAgICAgICAgIlx1MDBGQlwwMDBcdTAxNzVcMDAwXHUwMTc3XHUxRTkxXHVBNUE1XDAxMVwwMDBcdTFFQUNcdTFFQURcdUE1QTVcMDI2XDAwMCIrCisgICAgICAgICJcdTFFQzZcdTFFQzdcdUE1QTVcMDIyXDAwMFx1MUVEOFx1MUVEOVx1QTVBNVwwMjVcMDAwXHUwMEMzXHVBNUE1XDAwNVwwMDAiKworICAgICAgICAiXHUxRUJDXDAwMFwwMDBcMDAwXHUwMTI4XHVBNUE1XDAwNFwwMDBcdTAwRDFcdTAwRDVcdUE1QTVcMDA0XDAwMFx1MDE2OCIrCisgICAgICAgICJcdTFFN0NcMDAwXDAwMFx1MUVGOFwwMDBcdTAwRTNcMDAwXDAwMFwwMDBcdTFFQkRcMDAwXDAwMFwwMDBcdTAxMjlcdUE1QTUiKworICAgICAgICAiXDAwNFwwMDBcdTAwRjFcdTAwRjVcdUE1QTVcMDA0XDAwMFx1MDE2OVx1MUU3RFwwMDBcMDAwXHUxRUY5XDAwMFwwMDBcMDAwIisKKyAgICAgICAgIlx1MUVBQVx1QTVBNVwwMDdcMDAwXHUxRUM0XHVBNUE1XDAxMFwwMDBcdTFFRDZcdUE1QTVcMDEyXDAwMFx1MUVBQlx1QTVBNSIrCisgICAgICAgICJcMDA3XDAwMFx1MUVDNVx1QTVBNVwwMTBcMDAwXHUxRUQ3XHVBNUE1XDAxM1wwMDBcdTFFQjRcdTFFQjVcdUE1QTVcMDIwIisKKyAgICAgICAgIlwwMDBcdTFFRTBcdTFFRTFcdTFFRUVcdTFFRUZcdUE1QTVcMDMzXDAwMFx1MDEwMFx1QTVBNVwwMDVcMDAwXHUwMTEyXDAwMCIrCisgICAgICAgICJcdTFFMjBcMDAwXHUwMTJBXHVBNUE1XDAwNVwwMDBcdTAxNENcdUE1QTVcMDA0XDAwMFx1MDE2QVwwMDBcMDAwXDAwMFx1MDIzMiIrCisgICAgICAgICJcMDAwXHUwMTAxXDAwMFwwMDBcMDAwXHUwMTEzXDAwMFx1MUUyMVwwMDBcdTAxMkJcdUE1QTVcMDA1XDAwMFx1MDE0RFx1QTVBNSIrCisgICAgICAgICJcMDA0XDAwMFx1MDE2QlwwMDBcMDAwXDAwMFx1MDIzM1x1QTVBNVwwMDVcMDAwXHUwMURFXDAwMFx1MDFFMlx1QTVBNVwwMTUiKworICAgICAgICAiXDAwMFx1MDIyQ1x1MDIyQVx1QTVBNVwwMDRcMDAwXHUwMUQ1XHVBNUE1XDAwNVwwMDBcdTAxREZcMDAwXHUwMUUzXHVBNUE1IisKKyAgICAgICAgIlwwMTVcMDAwXHUwMjJEXHUwMjJCXHVBNUE1XDAwNFwwMDBcdTAxRDZcdUE1QTVcMDIzXDAwMFx1MDFFQ1x1MDFFRFx1QTVBNSIrCisgICAgICAgICIkXDAwMFx1MDFFMFx1MDFFMVx1QTVBNVwwMDZcMDAwXHUwMjMwXHUwMjMxXHVBNUE1XDAwNVwwMDBcdTFGQjlcMDAwXDAwMCIrCisgICAgICAgICJcdTFGRDlcMDAwXDAwMFx1MUZFOVwwMDBcMDAwXDAwMFx1MUZCMVwwMDBcMDAwXHUxRkQxXDAwMFwwMDBcdTFGRTFcdUE1QTUiKworICAgICAgICAiXDAxMlwwMDBcdTA0RTJcMDAwXDAwMFx1MDRFRVx1QTVBNVwwMTBcMDAwXHUwNEUzXDAwMFwwMDBcdTA0RUZcdUE1QTUtIisKKyAgICAgICAgIlwwMDBcdTFFMzhcdTFFMzlcdUE1QTVcMDM0XDAwMFx1MUU1Q1x1MUU1RFx1QTVBNVwwMzBcMDAwXHVGRUQ1XDAwMFx1RkU4QyIrCisgICAgICAgICJcdUE1QTVcMDMyXDAwMFx1MDEwMlx1QTVBNVwwMDVcMDAwXHUwMTE0XDAwMFx1MDExRVwwMDBcdTAxMkNcdUE1QTVcMDA1IisKKyAgICAgICAgIlwwMDBcdTAxNEVcdUE1QTVcMDA0XDAwMFx1MDE2Q1x1QTVBNVwwMDVcMDAwXHUwMTAzXDAwMFwwMDBcMDAwXHUwMTE1XDAwMCIrCisgICAgICAgICJcdTAxMUZcMDAwXHUwMTJEXHVBNUE1XDAwNVwwMDBcdTAxNEZcdUE1QTVcMDA0XDAwMFx1MDE2RFx1QTVBNVwwMjdcMDAwIisKKyAgICAgICAgIlx1MUUxQ1x1MUUxRFx1QTVBNVwwMTNcMDAwXHUxRkI4XDAwMFwwMDBcdTFGRDhcMDAwXDAwMFx1MUZFOFwwMDBcMDAwXDAwMCIrCisgICAgICAgICJcdTFGQjBcMDAwXDAwMFx1MUZEMFwwMDBcMDAwXHUxRkUwXHVBNUE1XDAwNVwwMDBcdTA0RDBcMDAwXHUwNEQ2XHUwNEMxIisKKyAgICAgICAgIlwwMDBcdTA0MTlcMDAwXDAwMFx1MDQwRVwwMDBcMDAwXDAwMFx1MDREMVwwMDBcdTA0RDdcdTA0QzJcMDAwXHUwNDM5XDAwMCIrCisgICAgICAgICJcMDAwXHUwNDVFXHVBNUE1XDAzN1wwMDBcdTFFQjZcdTFFQjdcdUE1QTUkXDAwMFx1RkVENFwwMDBcdUZFOEJcdUE1QTUiKworICAgICAgICAiXDAyN1wwMDBcdTFFOUJcMDAwXDAwMFx1MDIyNlwwMDBcdTFFMDJcdTAxMEFcMDAwXHUxRTBBXHUwMTE2XHUxRTFFXHUwMTIwIisKKyAgICAgICAgIlx1MUUyMlx1MDEzMFwwMDBcMDAwXDAwMFx1MUU0MFx1MUU0NFx1MDIyRVx1MUU1Nlx1MUU1OFx1MUU2MFx1MUU2QVwwMDAiKworICAgICAgICAiXDAwMFx1MUU4Nlx1MUU4QVx1MUU4RVx1MDE3Qlx1MDIyN1x1MUUwM1x1MDEwQlx1MUUwQlx1MDExN1x1MUUxRlx1MDEyMSIrCisgICAgICAgICJcdTFFMjNcdUE1QTVcMDA0XDAwMFx1MUU0MVx1MUU0NVx1MDIyRlx1MUU1N1x1MUU1OVx1MUU2MVx1MUU2QlwwMDBcMDAwIisKKyAgICAgICAgIlx1MUU4N1x1MUU4Qlx1MUU4Rlx1MDE3Q1x1QTVBNVwwMjBcMDAwXHUxRTY0XHUxRTY1XDAwMFwwMDBcdTFFNjZcdTFFNjciKworICAgICAgICAiXHVBNUE1J1wwMDBcdTFFNjhcdTFFNjlcdUE1QTVcMDE0XDAwMFx1MDNENFx1MDBDNFx1QTVBNVwwMDVcMDAwXHUwMENCIisKKyAgICAgICAgIlwwMDBcMDAwXHUxRTI2XHUwMENGXHVBNUE1XDAwNVwwMDBcdTAwRDZcdUE1QTVcMDA0XDAwMFx1MDBEQ1wwMDBcdTFFODQiKworICAgICAgICAiXHUxRThDXHUwMTc4XDAwMFx1MDBFNFwwMDBcMDAwXDAwMFx1MDBFQlwwMDBcMDAwXHUxRTI3XHUwMEVGXHVBNUE1XDAwNSIrCisgICAgICAgICJcMDAwXHUwMEY2XDAwMFwwMDBcMDAwXHUxRTk3XHUwMEZDXDAwMFx1MUU4NVx1MUU4RFx1MDBGRlx1QTVBNVwwMjVcMDAwIisKKyAgICAgICAgIlx1MUU0RVx1QTVBNVwwMzNcMDAwXHUxRTRGXHVBNUE1KVwwMDBcdTFFN0FcdTFFN0JcdUE1QTUmXDAwMFx1MDNBQVwwMDAiKworICAgICAgICAiXDAwMFx1MDNBQlx1QTVBNVwwMDZcMDAwXHUwM0NBXDAwMFwwMDBcdTAzQ0JcdUE1QTVcMDA0XDAwMFx1MDQwN1x1MDREMiIrCisgICAgICAgICJcMDAwXHUwNDAxXHUwNERDXHUwNERFXHUwNEU0XDAwMFx1MDRFNlx1MDRGMFx1MDRGNFx1MDRGOFx1MDRFQ1x1MDREM1wwMDAiKworICAgICAgICAiXHUwNDUxXHUwNEREXHUwNERGXHUwNEU1XDAwMFx1MDRFN1x1MDRGMVx1MDRGNVx1MDRGOVx1MDRFRFx1MDQ1N1wwMDBcMDAwIisKKyAgICAgICAgIlx1MDREQVx1MDREQlx1MDRFQVx1MDRFQlx1QTVBNVwwMzBcMDAwXHUxRUEyXHVBNUE1XDAwNVwwMDBcdTFFQkFcMDAwXDAwMCIrCisgICAgICAgICJcMDAwXHUxRUM4XHVBNUE1XDAwNVwwMDBcdTFFQ0VcdUE1QTVcMDA0XDAwMFx1MUVFNlwwMDBcMDAwXDAwMFx1MUVGNlwwMDAiKworICAgICAgICAiXHUxRUEzXDAwMFwwMDBcMDAwXHUxRUJCXDAwMFwwMDBcMDAwXHUxRUM5XHVBNUE1XDAwNVwwMDBcdTFFQ0ZcdUE1QTVcMDA0IisKKyAgICAgICAgIlwwMDBcdTFFRTdcMDAwXDAwMFwwMDBcdTFFRjdcMDAwXDAwMFwwMDBcdTFFQThcdUE1QTVcMDA3XDAwMFx1MUVDMlx1QTVBNSIrCisgICAgICAgICJcMDEwXDAwMFx1MUVENFx1QTVBNVwwMTJcMDAwXHUxRUE5XHVBNUE1XDAwN1wwMDBcdTFFQzNcdUE1QTVcMDEwXDAwMFx1MUVENSIrCisgICAgICAgICJcdUE1QTVcMDEzXDAwMFx1MUVCMlx1MUVCM1x1QTVBNVwwMjBcMDAwXHUxRURFXHUxRURGXHUxRUVDXHUxRUVEXHVBNUE1IisKKyAgICAgICAgIlwwMzNcMDAwXHUwMEM1XHVBNUE1XDAyNFwwMDBcdTAxNkVcdUE1QTVcMDA1XDAwMFx1MDBFNVx1QTVBNVwwMjJcMDAwXHUwMTZGIisKKyAgICAgICAgIlwwMDBcdTFFOThcMDAwXHUxRTk5XHVBNUE1XDAzNVwwMDBcdTAxNTBcdUE1QTVcMDA0XDAwMFx1MDE3MFx1QTVBNVwwMjMiKworICAgICAgICAiXDAwMFx1MDE1MVx1QTVBNVwwMDRcMDAwXHUwMTcxXHVBNUE1XDA0MlwwMDBcdTA0RjJcdUE1QTVcMDEzXDAwMFx1MDRGMyIrCisgICAgICAgICJcdUE1QTVcMDQyXDAwMFx1MDFDRFwwMDBcMDAwXHUwMTBDXDAwMFx1MDEwRVx1MDExQVwwMDBcdTAxRTZcdTAyMUVcdTAxQ0YiKworICAgICAgICAiXDAwMFx1MDFFOFx1MDEzRFwwMDBcdTAxNDdcdTAxRDFcMDAwXHUwMTU4XHUwMTYwXHUwMTY0XHUwMUQzXHVBNUE1XDAwNCIrCisgICAgICAgICJcMDAwXHUwMTdEXHUwMUNFXDAwMFx1MDEwRFx1MDEwRlx1MDExQlwwMDBcdTAxRTdcdTAyMUZcdTAxRDBcdTAxRjBcdTAxRTkiKworICAgICAgICAiXHUwMTNFXDAwMFx1MDE0OFx1MDFEMlwwMDBcdTAxNTlcdTAxNjFcdTAxNjVcdTAxRDRcdUE1QTVcMDA0XDAwMFx1MDE3RSIrCisgICAgICAgICJcdUE1QTVcMDMyXDAwMFx1MDFEOVx1QTVBNVwwMzNcMDAwXHUwMURBXHVBNUE1XDAzMlwwMDBcdTAxRUVcdUE1QTUsXDAwMCIrCisgICAgICAgICJcdTAxRUZcdUE1QTVcMDE1XDAwMFx1MDIwMFx1QTVBNVwwMDVcMDAwXHUwMjA0XDAwMFwwMDBcMDAwXHUwMjA4XHVBNUE1IisKKyAgICAgICAgIlwwMDVcMDAwXHUwMjBDXDAwMFx1MDIxMFwwMDBcMDAwXHUwMjE0XHVBNUE1XDAwNVwwMDBcdTAyMDFcMDAwXDAwMFwwMDAiKworICAgICAgICAiXHUwMjA1XDAwMFwwMDBcMDAwXHUwMjA5XHVBNUE1XDAwNVwwMDBcdTAyMERcMDAwXHUwMjExXDAwMFwwMDBcdTAyMTVcdUE1QTUiKworICAgICAgICAiXDAyM1wwMDBcdTA0NzZcdTA0NzdcdUE1QTVcMDM0XDAwMFx1MDIwMlx1QTVBNVwwMDVcMDAwXHUwMjA2XDAwMFwwMDBcMDAwIisKKyAgICAgICAgIlx1MDIwQVx1QTVBNVwwMDVcMDAwXHUwMjBFXDAwMFx1MDIxMlwwMDBcMDAwXHUwMjE2XHVBNUE1XDAwNVwwMDBcdTAyMDMiKworICAgICAgICAiXDAwMFwwMDBcMDAwXHUwMjA3XDAwMFwwMDBcMDAwXHUwMjBCXHVBNUE1XDAwNVwwMDBcdTAyMEZcMDAwXHUwMjEzXDAwMCIrCisgICAgICAgICJcMDAwXHUwMjE3XHVBNUE1JFwwMDBcdTFGMDhcdTFGMThcdTFGMjhcdTFGMzhcdTFGNDhcMDAwXDAwMFx1MUY2OFwwMDAiKworICAgICAgICAiXDAwMFx1MUYwMFx1MUYxMFx1MUYyMFx1MUYzMFx1MUY0MFx1MUZFNFx1MUY1MFx1MUY2MFx1QTVBNVwwMzZcMDAwXHUxRjgwIisKKyAgICAgICAgIlwwMDBcdTFGODhcdTFGOTBcMDAwXHUxRjk4XHUxRkEwXDAwMFx1MUZBOFx1QTVBNSdcMDAwXHUxRjA5XHUxRjE5XHUxRjI5IisKKyAgICAgICAgIlx1MUYzOVx1MUY0OVx1MUZFQ1x1MUY1OVx1MUY2OVwwMDBcMDAwXHUxRjAxXHUxRjExXHUxRjIxXHUxRjMxXHUxRjQxXHUxRkU1IisKKyAgICAgICAgIlx1MUY1MVx1MUY2MVx1QTVBNVwwMzZcMDAwXHUxRjgxXDAwMFx1MUY4OVx1MUY5MVwwMDBcdTFGOTlcdTFGQTFcMDAwXHUxRkE5IisKKyAgICAgICAgIlx1QTVBNSRcMDAwXHUwMUEwXHVBNUE1XDAwNFwwMDBcdTAxQUZcdUE1QTVcMDIzXDAwMFx1MDFBMVx1QTVBNVwwMDRcMDAwIisKKyAgICAgICAgIlx1MDFCMFx1QTVBNVwwMjZcMDAwXHUxRURDXHUxRURBXHVGRTFGXHUxRUUwXHVGRTE1XDAwMFx1MUVFQVx1MUVFOFx1RkRERCIrCisgICAgICAgICJcdUZEQzZcdUE1QTVcMDIyXDAwMFx1MUVERFx1MUVEQlx1RkM5Qlx1MUVFMVx1RkM4NVwwMDBcdTFFRUJcdTFFRTlcdUZDNDciKworICAgICAgICAiXHVGQzNCXHVBNUE1XDAxN1wwMDBcdUZEMkRcdUZEMUNcdUZEMERcdUZDRkVcdUZDRjBcdUZDRTJcdUE1QTVcMDE0XDAwMCIrCisgICAgICAgICJcdTFFRUVcdTFFRUZcdUZCQjdcdUZCQTZcdUZCOTVcdUZCODRcdUZCNzJcdUZCNjNcdUZCNTRcdUZCNDJcdUE1QTVcMDI0IisKKyAgICAgICAgIlwwMDBcdUZCNzNcdUZCNjRcdUZCNTVcdUZCNDNcdUZCMkFcdUZGQTFcdUZGOEVcdUZGN0FcdUZGNjRcdUZGNTNcdUZGNDMiKworICAgICAgICAiXHVGRjM0XHVBNUE1XDAzNFwwMDBcdUZENzlcdUZENkRcdUZENURcdUZENERcdUE1QTVcMDA0XDAwMFx1RkQwRVx1RkNGRiIrCisgICAgICAgICJcdUZDRjFcdUZDRTNcdUE1QTVcMDEyXDAwMFx1RkMwQ1x1RkJGQ1x1RkJFQlx1RkJFMlx1RkJEOFx1RkJDOFx1RkJCOFx1RkJBNyIrCisgICAgICAgICJcdUE1QTVcMDE3XDAwMFx1RkQ3N1x1RkQ2Qlx1RkQ1Qlx1RkQ0Qlx1RkQ0M1x1RkQzQVx1RkQyQlx1RkQxQVx1QTVBNVwwMzIiKworICAgICAgICAiXDAwMFx1RkI5Mlx1RkI4MVx1RkI3MFx1RkI2MVx1RkI1Mlx1RkI0MVx1RkIyOVx1RkZBMFx1RkY4RFx1RkY3OVx1QTVBNSIrCisgICAgICAgICJcMDM2XDAwMFx1MUVFMlx1MUVFM1x1MUVERVx1MUVERlx1RkJFMVx1RkJENlx1RkJDNFx1RkJCNlx1RkJBNVx1RkI5NFx1RkI4MyIrCisgICAgICAgICJcdUZCNzFcdUZCNjJcdUZCNTNcdUE1QTVcMDEyXDAwMFx1MUVGMFx1MUVGMVx1MUVFQ1x1MUVFRFx1QTVBNVwwMzNcMDAwIisKKyAgICAgICAgIlx1MUVBMFwwMDBcdTFFMDRcMDAwXDAwMFx1MUUwQ1x1MUVCOFwwMDBcMDAwXHUxRTI0XHUxRUNBXDAwMFx1MUUzMlx1MUUzNiIrCisgICAgICAgICJcdTFFNDJcdTFFNDZcdTFFQ0NcMDAwXHUxRTVBXHUxRTYyXHUxRTZDXHUxRUU0XHUxRTdFXHUxRTg4XDAwMFx1MUVGNFx1MUU5MiIrCisgICAgICAgICJcdTFFQTFcdTFFMDVcMDAwXHUxRTBEXHUxRUI5XDAwMFwwMDBcdTFFMjVcdTFFQ0JcMDAwXHUxRTMzXHUxRTM3XHUxRTQzIisKKyAgICAgICAgIlx1MUU0N1x1MUVDRFwwMDBcdTFFNUJcdTFFNjNcdTFFNkRcdTFFRTVcdTFFN0ZcdTFFODlcMDAwXHUxRUY1XHUxRTkzXHVGRUJDIisKKyAgICAgICAgIlx1RkVCNlx1MUVBQ1x1RkVBNVx1RkU5Rlx1RkU5OFwwMDBcMDAwXHVGRTdCXHVGRTZGXHUxRUM2XHVGRTVDXHVGRTUwXHVGRTRBIisKKyAgICAgICAgIlx1RkU0M1x1RkUzRFx1RkUyRlx1RkUyNlx1RkUyMlx1MUVEOFx1RkUxQlx1RkUxM1wwMDBcdUZERjVcdUZERTlcdUZERDgiKworICAgICAgICAiXHVGREMyXHVGREIxXHVGRDk3XHVGRDhCXHUxRUFEXHVGRDc1XHVGRDY4XHVGRDU4XDAwMFwwMDBcdUZEMzhcdUZEMjhcdTFFQzciKworICAgICAgICAiXHVGRDA4XHVGQ0Y5XHVGQ0VCXHVGQ0REXHVGQ0QxXHVGQ0JCXHVGQ0FEXHVGQ0EzXHUxRUQ5XHVGQzkwXHVGQzgxXDAwMCIrCisgICAgICAgICJcdUZDNjBcdUZDNTJcdUZDNDZcdUZDM0FcdUZDMjlcdUZDMTRcdUZDMTFcdUZDMDhcdTFFQjZcdTFFQjdcdUE1QTVcMDEwIisKKyAgICAgICAgIlwwMDBcdUZCM0NcdUZCMjZcdUZGNzVcdUZGNjBcdUZGNEZcdUZGM0ZcdUZGMzBcdUZGMjVcdUZGMENcdUZFRkJcdUE1QTUiKworICAgICAgICAiXDAwNlwwMDBcdUZFQjdcdUZFQUZcdUZFOTlcdUZFOEFcdUZFODRcdUZFN0RcdUZFNzFcdUZFNjdcdUZFNEJcdUZFMTRcdUZFMDgiKworICAgICAgICAiXHVGREVCXHVGRERBXHVGRDk5XHVGRDhEXHVGRDZBXHVGRDVBXHVGRDI5XHVGRDE4XHVGRDBBXHVGQ0ZCXHVGQ0VEXHVGQ0RGIisKKyAgICAgICAgIlx1RkNCQ1x1RkNBRVx1RkM5MVx1RkM4Mlx1RkM3NVx1RkM2Qlx1RkM2MVx1RkM1M1x1RkMyQlx1RkMxQ1x1RkMwQVx1RkJGOSIrCisgICAgICAgICJcdUZCRDRcdUZCQzJcdUZCQjJcdUZCQTFcdUZCOTBcdUZCN0ZcdUZCNkVcdUZCNUZcdUZCNEZcdUZCM0VcdUZGOEFcdUZGNzYiKworICAgICAgICAiXHVGRjYxXHVGRjUwXHVGRjQwXHVGRjMxXHVGRjI2XHVGRjFCXHVGRjE0XHVGRjBEXHVGRUZDXHUxRUUyXHUxRUUzXHUxRUYwIisKKyAgICAgICAgIlx1MUVGMVwwMDBcdUZCQjRcdUZCQTNcdUZCOTFcdUZCODBcdUZCNkZcdUZCNjBcdUZCNTFcdUZCNDBcdUZCMjhcdUZGOUYiKworICAgICAgICAiXHVGRjhDXHVGRjc4XHVGRjYzXHVGRjUyXHVGRjQyXHVGRjMzXHVGRjFEXHVGRjE2XHVGRjBGXHVGRUZFXDAwMFwwMDBcdUZFQzQiKworICAgICAgICAiXHVGRUJGXHVBNUE1XDAwNFwwMDBcdUZFM0ZcdUZFMzdcdUZFMzJcdUZFMjlcdUZFMEFcdUZERkZcdUZERjhcdUZERURcdUZEREMiKworICAgICAgICAiXHVGREM1XHVGREI0XHVGREFBXHVGREExXHVGRDlBXHVGRDhFXHVGRDgyXHVGRDc4XHVGRDZDXHVGRDVDXHVGRDRDXHVGRDQ0IisKKyAgICAgICAgIlx1RkQzQlx1RkQyQ1x1RkQxQlx1RkQwQ1x1RkNGRFx1RkNFRlx1RkNFMVx1QTVBNVwwMDRcMDAwXHVGQzkzXHVGQzg0XHVGQzJEIisKKyAgICAgICAgIlx1RkMxRVwwMDBcMDAwXHVGQzBCXHVGQkZBXHVGQkU5XHVGQkUwXHVGQkQ1XHVGQkMzXHVGQkI1XHVGQkE0XHVGQjkzXHVGQjgyIisKKyAgICAgICAgIlx1QTVBNVwwMjNcMDAwXHVGQzM2XHVGQzI0XHVGQkREXHVGQkNGXHVBNUE1XDAwNlwwMDBcdUZCMzdcdUZCMjBcdUZGOTkiKworICAgICAgICAiXHVGRjg1XHVBNUE1XDAwNlwwMDBcdUZFRUFcdUZFRTNcMDAwXDAwMFx1RkVEMFx1RkVDOVx1QTVBNVwwMDRcMDAwXHVGRTk1IisKKyAgICAgICAgIlx1RkU4OVx1RkU4Mlx1RkU3QVx1QTVBNVwwMTRcMDAwXHVGRTFBXHVGRTBGXHVGRTAzXHVGREZBXHVGREQyXHVGREJFXHVBNUE1IisKKyAgICAgICAgIlwwMDZcMDAwXHVGRDcxXHVGRDYzXHVGRDUzXHVGRDQ3XHVGRDNGXHVGRDM1XHVGRDI0XHVGRDE2XHVGQ0NGXHVGQ0M0XHVBNUE1IisKKyAgICAgICAgIlwwMDZcMDAwXHUxRTY4XHUxRTY5XDAwMFwwMDBcdUZDNDRcdUZDMzdcdUZDMjVcdUZDMThcMDAwXDAwMFx1RkMwNFx1RkJGMyIrCisgICAgICAgICJcdUE1QTVcMDE0XDAwMFx1RkIyM1x1RkY5Qlx1RkY4N1x1RkY3Mlx1RkY1RFx1RkY0Q1x1RkYyNFx1RkYxOVx1RkYxMlx1RkYwOCIrCisgICAgICAgICJcdUZFRjdcdUZFRUNcdUZFRTVcdUZFRERcdUZFQUVcdUZFQTRcdUZFOUVcdUZFOTdcMDAwXHVGRTVCXHVGRTRGXHVGRTQ5IisKKyAgICAgICAgIlwwMDBcMDAwXHVGRTEyXHVGRTA2XHVGREZDXHVGREY0XHVGREU4XHVGREQ3XHVGREMwXHVGREIwXHVGREE3XHVGRDlGXDAwMCIrCisgICAgICAgICJcMDAwXHVGRDgwXHVGRDc0XHVGRDY3XHVGRDU3XHVGRDQ5XHVGRDQxXHVGRDM3XHVGRDI3XHVBNUE1XDAwNFwwMDBcdUZDREMiKworICAgICAgICAiXHVGQ0QwXHVGQ0M1XHVGQ0JBXHVGQ0FDXHVGQ0EyXHVGQzlBXHVGQzhGXHVGQzgwXHVGQzc0XHVGQzZBXHVGQzVGXDAwMCIrCisgICAgICAgICJcMDAwXHVGQzM5XHVGQzI4XHVBNUE1XDAwNFwwMDBcdUZCRjdcdUZCRTdcdUZCREVcdUZCRDFcdUZCQkZcdUZCQUZcdUZCOUUiKworICAgICAgICAiXHVGQjhFXHVGQjdEXHVGQjZDXDAwMFwwMDBcdUZCM0FcdUZCMjRcdUZGOURcdUZGODlcdUZGNzRcdUZGNUZcdUZGNEVcdUZGM0UiKworICAgICAgICAiXHVBNUE1XDAwNFwwMDBcdUZGMEJcdUZFRkFcdUZFRURcdUZFRTZcdUZFREVcdUZFRDlcdUZFRDJcdUZFQ0JcdUZFQzJcdUZFQkQiKworICAgICAgICAiXDAwMFwwMDBcdUZFQTZcdUZFQTBcdUZFODNcdUZFN0NcdUZFNzBcdUZFNjZcdUE1QTUgXDAwMFx1MUU3Mlx1QTVBNVwwMzAiKworICAgICAgICAiXDAwMFx1MUU3M1x1QTVBNVwwMzRcMDAwXHVGREYzXHVGREU2XHVGREQ1XHVGREMxXHVBNUE1XDAzMFwwMDBcdUZDNURcdUZDNTAiKworICAgICAgICAiXHVGQzQ1XHVGQzM4XHVBNUE1IVwwMDBcdUZCRDJcdUZCQzBcdUZCQjBcdUZCOUZcdUZCOEZcdUZCN0VcdUZCNkRcdUZCNUUiKworICAgICAgICAiXHVGQjRFXHVGQjNEXHVBNUE1XDAyNlwwMDBcdUZCNTBcdUZCM0ZcdUZCMjdcdUZGOUVcdUZGOEJcdUZGNzdcdUZGNjJcdUZGNTEiKworICAgICAgICAiXHVGRjQxXHVGRjMyXHVBNUE1XDAwNFwwMDBcdUZEMEJcdUZDRkNcdUZDRUVcdUZDRTBcdUE1QTUpXDAwMFx1RkIyMVx1RkY5QSIrCisgICAgICAgICJcdUZGODZcdUZGNzFcdUE1QTVcMDMwXDAwMFx1RkYwOVx1RkVGOFx1QTVBNVwwMzNcMDAwXHUxRTAwXHVBNUE1XDAzMlwwMDAiKworICAgICAgICAiXHUxRTAxXHVBNUE1XDAzMFwwMDBcdUZFQkJcdUZFQjRcdUZFQUNcdUZFQTNcdUZFOURcdUZFOTZcdUE1QTVcMDI2XDAwMCIrCisgICAgICAgICJcdUZEOTVcdUZEODlcdUZEN0ZcdUZENzNcdUZENjVcdUZENTVcdUE1QTVcMDI3XDAwMFx1RkMxMFx1RkMwNVx1RkJGNFx1RkJFNiIrCisgICAgICAgICJcdUE1QTVcMDI1XDAwMFx1RkJCM1x1RkJBMlx1QTVBNVwwMTZcMDAwXHVGRjFDXHVGRjE1XHVGRjBFXHVGRUZEXHVBNUE1IisKKyAgICAgICAgIlwwMTJcMDAwXHVGRTMxXHVGRTI4XHVGRTA5XHVGREZFXHVGREY3XHVGREVDXHVBNUE1XDAzMlwwMDBcdUZDMkNcdUZDMUQiKworICAgICAgICAiXHVBNUE1XDAzMVwwMDBcdUZFMTBcdUZFMDRcdUZERkJcdUZERjJcdUZERTRcdUZERDNcdUZEQkZcdUZEQUZcdUZEQTZcdUZEOUUiKworICAgICAgICAiXDAwMFwwMDBcdUZEN0VcdUZENzJcdUZENjRcdUZENTRcdUZENDhcdUZENDBcdUZEMzZcdUZEMjVcdUE1QTUgXDAwMFx1MDIxOCIrCisgICAgICAgICJcdTAyMUFcdUE1QTVcMDI3XDAwMFx1MDIxOVx1MDIxQlx1QTVBNVwwMjZcMDAwXHVGQzczXHVGQzY5XHVGQzVFXHVGQzUxIisKKyAgICAgICAgIlx1RkMyN1x1RkMxQVx1RkMwN1x1RkJGNlx1QTVBNSNcMDAwXHVGQzZGXHVGQzY1XDAwMFwwMDBcdUZDNDBcdUZDMzNcdUZDMjIiKworICAgICAgICAiXHVGQzE2XDAwMFwwMDBcdUZDMDFcdUZCRjBcdUE1QTVcMDM3XDAwMFx1RkU1QVx1QTVBNShcMDAwXHUwMEM3XDAwMFx1MUUxMCIrCisgICAgICAgICJcdTAyMjhcMDAwXHUwMTIyXHUxRTI4XDAwMFwwMDBcdTAxMzZcdTAxM0JcMDAwXHUwMTQ1XDAwMFwwMDBcdTAxNTZcdTAxNUUiKworICAgICAgICAiXHUwMTYyXHVBNUE1XDAxMFwwMDBcdTAwRTdcdTFFMTFcdTAyMjlcMDAwXHUwMTIzXHUxRTI5XDAwMFwwMDBcdTAxMzdcdTAxM0MiKworICAgICAgICAiXDAwMFx1MDE0NlwwMDBcMDAwXHUwMTU3XHUwMTVGXHUwMTYzXHVBNUE1XDAxNlwwMDBcdUZFNzhcdUZFNkRcdUZFNjRcdUZFNTkiKworICAgICAgICAiXHVBNUE1XDAwNFwwMDBcdUZFMkVcdUE1QTVcMDIzXDAwMFx1RkQzNFx1RkQyM1x1RkQxNVx1RkQwNVx1QTVBNVwwMDRcMDAwIisKKyAgICAgICAgIlx1RkNCOFx1QTVBNVwwMjBcMDAwXHUxRTA4XHUxRTA5XHVGQjlCXHVGQjhCXHVGQjdBXHVGQjY5XHVGQjVCXHVGQjRCXHVGQjM4IisKKyAgICAgICAgIlx1RkIyMlx1RkY3MFx1RkY1Q1x1MUUxQ1x1MUUxRFx1RkYyRVx1RkYyM1x1RkYwN1x1RkVGNlx1RkVFQlx1RkVFNFx1RkVEQyIrCisgICAgICAgICJcdUZFRDhcdUZFRDFcdUZFQ0FcdUZFQjVcdUZFQURcdUE1QTVcMDA3XDAwMFx1RkUxMVx1RkUwNVx1RkRFNVx1RkRENFx1RkQ5NiIrCisgICAgICAgICJcdUZEOEFcdUZENjZcdUZENTZcdUE1QTVcMDA2XDAwMFx1RkNCOVx1RkNBQlx1RkM4RVx1RkM3Rlx1RkM3Mlx1RkM2OFx1RkM1QyIrCisgICAgICAgICJcdUZDNEZcdUZDMjZcdUZDMTlcdUZDMDZcdUZCRjVcdUE1QTVcMDE2XDAwMFx1RkVEM1x1RkVDQ1x1RkVDM1x1RkVCRVwwMDAiKworICAgICAgICAiXDAwMFx1RkU1RFx1RkU1MVx1RkUzRVx1RkUzNlx1QTVBNVwwMDZcMDAwXHVGRERCXHVGREM0XHVGREIzXHVGREE5XHVBNUE1IisKKyAgICAgICAgIlwwMTBcMDAwXHVGRDQyXHVGRDM5XHVGRDJBXHVGRDE5XHVBNUE1XDAwNFwwMDBcdUZDRDJcdUZDQzZcdUZDQkRcdUZDQUYiKworICAgICAgICAiXHVGQzkyXHVGQzgzXHVBNUE1I1wwMDBcdUZCREFcdUZCQ0JcdUZCQkFcdUZCQTlcdUZCOTdcdUZCODdcdUZCNTdcdUZCNDUiKworICAgICAgICAiXHVGQjMxXHVGRkFBXHVGRjk1XHVGRjgxXHVGRjZCXHVGRjU4XHVGRjQ4XHVGRjM5XHVGRjA0XHVGRUYzXHVGRUU4XHVGRUUxIisKKyAgICAgICAgIlx1RkVEQVx1RkVENlx1RkVDRVx1RkVDN1x1RkVCMVx1RkVBOVx1QTVBNVwwMDRcMDAwXHVGRTgwXHVGRTc2XHVGRTZCXHVGRTYxIisKKyAgICAgICAgIlx1RkU1Nlx1RkU0RFx1RkU0Nlx1RkU0MVx1RkUzQVx1RkUzNFx1RkUyRFx1RkUyNFx1RkUyMFx1RkUxQ1x1QTVBNVwwMDQiKworICAgICAgICAiXDAwMFx1RkRDRFx1RkRCOVx1RkRBQlx1RkRBM1x1RkQ5Q1x1RkQ5Mlx1RkQ4Nlx1RkQ3Qlx1QTVBNVwwMTBcMDAwXHVGQ0NCIisKKyAgICAgICAgIlx1RkNDMVx1RkNCNVx1RkNBN1x1RkM5RVx1RkM5Nlx1RkM4OVx1RkM3QVx1RkM2RVx1RkM2NFx1RkM1OFx1RkM0Qlx1RkMzRiIrCisgICAgICAgICJcdUZDMzJcdUZDMjFcdUZDMTVcdUZDMTJcdUZDMERcdUZDMDBcdUZCRUZcdUZCRTNcdUZCREJcdUZCQ0RcdUZCQkNcdUZCQUIiKworICAgICAgICAiXHVGQjk5XHVBNUE1XDAzMFwwMDBcdUZFNjNcdUZFNThcdUE1QTVcMDMyXDAwMFx1RkNGNlx1RkNFOFx1RkNEOVx1RkNDRSIrCisgICAgICAgICJcdUZDQzNcdUZDQjdcdUZDQUFcdUZDQTFcdUZDOTlcdUZDOERcdUZDN0VcdUZDNzFcdUZDNjdcdUZDNUJcdUZDNEVcdUZDNDMiKworICAgICAgICAiXHVBNUE1XDAzM1wwMDBcdTAxMDRcdUE1QTVcMDA1XDAwMFx1MDExOFwwMDBcMDAwXDAwMFx1MDEyRVx1QTVBNVwwMDVcMDAwIisKKyAgICAgICAgIlx1MDFFQVx1QTVBNVwwMDRcMDAwXHUwMTcyXHVBNUE1XDAwNVwwMDBcdTAxMDVcMDAwXDAwMFwwMDBcdTAxMTlcMDAwXDAwMCIrCisgICAgICAgICJcMDAwXHUwMTJGXHVBNUE1XDAwNVwwMDBcdTAxRUJcdUE1QTVcMDA0XDAwMFx1MDE3M1x1QTVBNVwwMDVcMDAwXHVGRUI5IisKKyAgICAgICAgIlx1RkVCMlx1RkVBQVx1RkVBMlx1RkU5Q1x1RkU5M1wwMDBcMDAwXHVGRTc3XHVGRTZDXHVGRTYyXHVGRTU3XHVGRTRFXHVGRTQ3IisKKyAgICAgICAgIlx1RkU0Mlx1RkUzQlwwMDBcdUZFMjVcdUZFMjFcdUZFMUVcdUZFMTlcdUZFMEVcMDAwXHVGREYxXHVGREUzXHVGREQwXHVGREJDIisKKyAgICAgICAgIlwwMDBcdUZEOTRcdUZEODhcdUZEN0RcdUZENzBcdUZENjJcdUZENTJcMDAwXDAwMFx1RkQzM1x1RkQyMlx1RkQxNFx1RkQwNCIrCisgICAgICAgICJcdUZDRjVcdUZDRTdcdUZDRDhcdUZDQ0RcMDAwXHVGQ0E5XHVGQ0EwXHVGQzk4XHVGQzhCXHVGQzdDXDAwMFx1RkM1QVx1RkM0RCIrCisgICAgICAgICJcdUZDNDJcdUZDMzVcMDAwXDAwMFx1RkMwRlx1RkMwM1x1RkJGMlx1RkJFNVx1QTVBNVwwMTJcMDAwXHVGRjZGXHVGRjVCIisKKyAgICAgICAgIlx1RkY0Qlx1RkYzQ1x1RkYyRFx1RkYyMlx1RkYwNlx1RkVGNVx1QTVBNVwwMTBcMDAwXHVGRTk0XHVGRTg4XHVGRTgxXHVGRTc5IisKKyAgICAgICAgIlx1RkU2RVx1RkU2NVx1RkU0OFx1QTVBNVwwMTBcMDAwXHUwMUVDXHUwMUVEXHVGRDA3XHVGQ0Y4XHVGQ0VBXHVGQ0RCXHVBNUE1IisKKyAgICAgICAgIlwwMTRcMDAwXHVGQkQwXHVGQkJFXHVGQkFEXHVGQjlDXHVGQjhDXHVGQjdCXHVGQjZBXHVGQjVDXHVGQjRDXHVGQjM5XHVBNUE1IisKKyAgICAgICAgIlwwMTNcMDAwXHVGREU3XHVGREQ2XHVGRDI2XHVGRDE3XDAwMFx1RkJBRVx1RkI5RFx1RkI4RFx1RkI3Q1x1RkI2Qlx1RkI1RCIrCisgICAgICAgICJcdUZCNERcdUZCM0JcdUZCMjVcdUZGOUNcdUZGODhcdUZGNzNcdUZGNUVcdUZGNERcdUZGM0RcdUZGMkZcdUZGMUFcdUZGMTMiKworICAgICAgICAiXHVGRjBBXHVGRUY5XHVBNUE1XDAxMlwwMDBcdUZFMzBcdUZFMjdcdUZFMDdcdUZERkRcdUZERjZcdUZERUFcdUZERDlcdUZEQzMiKworICAgICAgICAiXHVGREIyXHVGREE4XHVGREEwXHVGRDk4XHVGRDhDXHVGRDgxXHVGRDc2XHVGRDY5XHVGRDU5XHVGRDRBXHVBNUE1XDAwNCIrCisgICAgICAgICJcMDAwXHVGRDA5XHVGQ0ZBXHVGQ0VDXHVGQ0RFXHVBNUE1XDAwNlwwMDBcdUZDMkFcdUZDMUJcMDAwXDAwMFx1RkMwOVx1RkJGOCIrCisgICAgICAgICJcdUZCRThcdUZCREZcdUZCRDNcdUZCQzFcdUZCQjFcdUZCQTBcdUE1QTVcMDIzXDAwMFx1RkM0QVx1RkMzRVx1QTVBNVwwMTIiKworICAgICAgICAiXDAwMFx1RkIyRlx1RkZBOFx1RkY5M1x1RkY3Rlx1RkY2OVx1RkY1Nlx1RkY0Nlx1RkYzN1x1QTVBNVwwMTJcMDAwXHVGRUExIisKKyAgICAgICAgIlx1RkU5Qlx1RkU5Mlx1RkU4N1x1QTVBNVwwMzJcMDAwXHVGRDZFXHVGRDYwXHVGRDUwXHVGRDQ1XHVGRDNEXHVGRDMxXHVGRDIwIisKKyAgICAgICAgIlx1RkQxMlx1QTVBNVwwMzJcMDAwXHVGQjg5XHVGQjc4XHVGQjY3XHVGQjU5XHVGQjQ3XHVGQjMzXHVGQjFEXHVGRjk2XHVGRjgyIisKKyAgICAgICAgIlx1RkY2Q1x1QTVBNVwwMjJcMDAwXHVGRTFEXHVGRTE4XHVGRTBEXHVGRTAyXHVGREY5XHVGREYwXHVGREUyXHVGRENGXHVGREJCIisKKyAgICAgICAgIlx1RkRBRFx1RkRBNFx1RkQ5RFx1RkQ5M1x1RkQ4N1x1RkQ3Q1x1RkQ2Rlx1RkQ2MVx1RkQ1MVx1RkQ0Nlx1RkQzRVx1RkQzMiIrCisgICAgICAgICJcdUZEMjFcdUZEMTNcdUZEMDNcdUZDRjRcdUZDRTZcdUZDRDdcdUZDQ0NcdUZDQzJcdUZDQjZcdUZDQThcdUZDOUZcdUZDOTciKworICAgICAgICAiXHVGQzhBXHVGQzdCXHVGQzcwXHVGQzY2XHVGQzU5XHVGQzRDXHVGQzQxXHVGQzM0XHVGQzIzXHVGQzE3XHVGQzEzXHVGQzBFIisKKyAgICAgICAgIlx1RkMwMlx1RkJGMVx1RkJFNFx1RkJEQ1x1RkJDRVx1RkJCRFx1RkJBQ1x1RkI5QVx1RkI4QVx1RkI3OVx1RkI2OFx1RkI1QSIrCisgICAgICAgICJcdUZCNDlcdUZCMzVcdUZCMUZcdUZGOThcdUZGODRcdUZGNkVcdUZGNUFcdUZGNEFcdUZGM0JcdUZGMkNcdUZGMjFcdUZGMTgiKworICAgICAgICAiXHVGRjExXHVGRjA1XHVGRUY0XHVGRUU5XHVGRUUyXHVGRURCXHVGRUQ3XHVGRUNGXHVGRUM4XHVGRUMxXHVGRUJBXHVGRUIzIisKKyAgICAgICAgIlx1RkVBQlx1QTVBNVwwMjZcMDAwXHUxRTEyXHUxRTE4XHVBNUE1XDAwNlwwMDBcdTFFM0NcMDAwXHUxRTRBXHVBNUE1XDAwNCIrCisgICAgICAgICJcMDAwXHUxRTcwXHUxRTc2XHVBNUE1XDAxMFwwMDBcdTFFMTNcdTFFMTlcdUE1QTVcMDA2XDAwMFx1MUUzRFwwMDBcdTFFNEIiKworICAgICAgICAiXHVBNUE1XDAwNFwwMDBcdTFFNzFcdTFFNzdcdUE1QTVcMDE1XDAwMFx1RkU3NVx1RkU2QVx1RkU2MFx1RkU1NVx1QTVBNSIrCisgICAgICAgICJcMDA0XDAwMFx1RkUyQ1x1QTVBNVwwMDZcMDAwXHVGREVGXHVGREUwXHVGRENCXHVGREI4XHVBNUE1XDAxMVwwMDBcdUZEMkYiKworICAgICAgICAiXHVGRDFFXHVGRDEwXHVGRDAxXHVBNUE1XDAwNFwwMDBcdUZDQjRcdUE1QTVcMDA2XDAwMFx1RkM1N1x1RkM0OVx1RkMzRCIrCisgICAgICAgICJcdUZDMzFcdUE1QTVcMDE2XDAwMFx1RkIzMFx1RkZBN1x1RkY2OFx1RkY1NVx1RkY0NVx1RkYzNlx1RkYyOVx1RkYyMFx1RkYwMyIrCisgICAgICAgICJcdUZFRjJcdUE1QTVcMDE3XDAwMFx1RkUwQ1x1RkUwMVx1RkRFMVx1RkRDQ1x1RkQ5MFx1RkQ4NFx1RkQ1Rlx1RkQ0Rlx1QTVBNSIrCisgICAgICAgICJcMDIwXDAwMFx1RkJGRlx1RkJFRVx1RkJDQ1x1RkJCQlx1RkJBQVx1RkI5OFx1RkI4OFx1RkI3N1x1RkI2Nlx1RkI1OFx1RkI0OCIrCisgICAgICAgICJcdUZCMzRcdUE1QTVcMDI2XDAwMFx1RkI0QVx1RkIzNlx1RkIxRVx1RkY5N1x1RkY4M1x1RkY2RFx1RkY1OVx1RkY0OVx1RkYzQSIrCisgICAgICAgICJcdUZGMkJcdUE1QTVcMDE0XDAwMFx1RkUzQ1x1RkUzNVx1QTVBNVwwMDZcMDAwXHVGREQxXHVGREJEXHVGREFFXHVGREE1IisKKyAgICAgICAgIlx1QTVBNVwwMTRcMDAwXHVGRDA2XHVGQ0Y3XHVGQ0U5XHVGQ0RBXHVBNUE1KVwwMDBcdUZCRDlcdUZCQzlcdUE1QTVcMDA2IisKKyAgICAgICAgIlwwMDBcdUZCMkNcdUZGQTRcdUZGOTFcdUZGN0RcdUE1QTUkXDAwMFx1RkRDOFx1RkRCNlx1RkJGRFx1RkJFQ1x1QTVBNSIrCisgICAgICAgICJcMDE0XDAwMFx1RkZBNlx1RkY5Mlx1RkY3RVx1RkY2N1x1QTVBNVwwMTdcMDAwXHVGRTU0XHVBNUE1XDAzNFwwMDBcdUZDRDUiKworICAgICAgICAiXHVGQ0NBXHVGQ0MwXHVGQ0IzXHVGQ0E2XHVGQzlEXHVGQzk1XHVGQzg4XHVGQzc4XHVGQzZEXHVGQzYzXHVGQzU2XHVBNUE1IisKKyAgICAgICAgIiBcMDAwXHVGRjAyXHVGRUYxXHVBNUE1JFwwMDBcdTFFMkFcdUE1QTVcMDMwXDAwMFx1MUUyQlx1QTVBNSZcMDAwXHVGRUIwIisKKyAgICAgICAgIlx1RkVBOFx1QTVBNVwwMjdcMDAwXHVGQzhDXHVGQzdEXHVBNUE1XDAyNVwwMDBcdUZFRTdcdUZFRTBcMDAwXDAwMFx1RkVDRCIrCisgICAgICAgICJcdUZFQzZcdUE1QTUnXDAwMFx1MUUxQVwwMDBcMDAwXDAwMFx1MUUyQ1x1QTVBNVwwMTJcMDAwXHUxRTc0XHVBNUE1XDAxMSIrCisgICAgICAgICJcMDAwXHUxRTFCXDAwMFwwMDBcMDAwXHUxRTJEXHVBNUE1XDAxMlwwMDBcdTFFNzVcdUE1QTVcMDE1XDAwMFx1RkU3M1x1RkU2OCIrCisgICAgICAgICJcdUZFNUVcdUZFNTNcdUZFNENcdUZFNDRcdUZFNDBcdUZFMzhcdUE1QTVcMDA3XDAwMFx1RkRFRVx1RkRERVx1RkRDOVx1RkRCNyIrCisgICAgICAgICJcdUE1QTVcMDExXDAwMFx1RkQyRVx1RkQxRFx1RkQwRlx1RkQwMFx1RkNGMlx1RkNFNFx1RkNENFx1RkNDOVx1QTVBNVwwMDciKworICAgICAgICAiXDAwMFx1RkM1NVx1RkM0OFx1RkMzQ1x1RkMzMFx1QTVBNVwwMjBcMDAwXHVGRjY2XHVGRjU0XHVGRjQ0XHVGRjM1XHVGRjI3IisKKyAgICAgICAgIlx1RkYxRVx1RkYwMFx1RkVFRlx1QTVBNVwwMTBcMDAwXHVGRTkxXHVGRTg2XHVGRTdGXHVGRTc0XHVGRTY5XHVGRTVGXHVGRTQ1IisKKyAgICAgICAgIlx1QTVBNVwwMzJcMDAwXHVGQkNBXHVGQkI5XHVGQkE4XHVGQjk2XHVGQjg1XHVGQjc1XHVGQjY1XHVGQjU2XHVGQjQ0XHVGQjJFIisKKyAgICAgICAgIlx1QTVBNVwwMjJcMDAwXHVGQjg2XHVGQjc2XDAwMFwwMDBcdUZCNDZcdUZCMzJcdUZGQTlcdUZGOTRcdUZGODBcdUZGNkEiKworICAgICAgICAiXHVGRjU3XHVGRjQ3XHVGRjM4XHVGRjJBXHVBNUE1XDAyNFwwMDBcdUZEQ0VcdUZEQkFcdUZEQUNcdUZEQTJcdUZEOUJcdUZEOTEiKworICAgICAgICAiXHVGRDg1XHVGRDdBXHVBNUE1XDAxMFwwMDBcdUZEMDJcdUZDRjNcdUZDRTVcdUZDRDZcdUE1QTUxXDAwMFx1RkIyQlx1RkZBMiIrCisgICAgICAgICJcdUZGOEZcdUZGN0JcdUE1QTVcMDIwXDAwMFx1RkU4Rlx1RkU4NVx1QTVBNVwwNDJcMDAwXHVGRkEzXHVGRjkwXHVGRjdDIisKKyAgICAgICAgIlx1RkY2NVx1QTVBNSxcMDAwXHVGQ0QzXHVGQ0M4XHVGQ0JGXHVGQ0IxXHVGQ0E0XHVGQzlDXHVGQzk0XHVGQzg2XHVGQzc2IisKKyAgICAgICAgIlx1RkM2Q1x1RkM2Mlx1RkM1NFwwMDBcMDAwXHVGQzJGXHVGQzIwXHVBNUE1XDAzNFwwMDBcdUZFRkZcdUZFRUVcdUE1QTUiKworICAgICAgICAiXDAzNVwwMDBcdTFFMDZcMDAwXDAwMFx1MUUwRVx1QTVBNVwwMDZcMDAwXHUxRTM0XHUxRTNBXDAwMFx1MUU0OFwwMDBcMDAwIisKKyAgICAgICAgIlx1MUU1RVwwMDBcdTFFNkVcdUE1QTVcMDA1XDAwMFx1MUU5NFwwMDBcdTFFMDdcMDAwXHUxRTBGXDAwMFwwMDBcMDAwXHUxRTk2IisKKyAgICAgICAgIlwwMDBcMDAwXHUxRTM1XHUxRTNCXDAwMFx1MUU0OVwwMDBcMDAwXHUxRTVGXDAwMFx1MUU2Rlx1QTVBNVwwMDVcMDAwXHUxRTk1IisKKyAgICAgICAgIlx1QTVBNVwwMjBcMDAwXHVGRTJCXHVBNUE1XDAzM1wwMDBcdUZDQjBcdUE1QTVcMDMwXDAwMFx1RkIyRFx1RkZBNVx1QTVBNSIrCisgICAgICAgICJcMDE3XDAwMFx1RkVBN1x1QTVBNVwwMDdcMDAwXHVGRTBCXHVGRTAwXHVGRERGXHVGRENBXHVGRDhGXHVGRDgzXHVGRDVFIisKKyAgICAgICAgIlx1RkQ0RVx1QTVBNVwwMDZcMDAwXHVGQ0IyXHVGQ0E1XHVGQzg3XHVGQzc3XHVBNUE1XDAwNlwwMDBcdUZCRkVcdUZCRUQiKworICAgICAgICAiXHVBNUE1XDAxN1wwMDBcdUZGMjhcdUZGMUZcdUZGMTdcdUZGMTBcdUZGMDFcdUZFRjBcdUE1QTVcMDMzXDAwMFx1RkVDMCIrCisgICAgICAgICJcdUZFQjhcdUE1QTVcMDA0XDAwMFx1RkUzOVx1RkUzM1x1QTVBNVwwMjJcMDAwXHVGRDNDXHVGRDMwXHVGRDFGXHVGRDExIisKKyAgICAgICAgIlx1QTVBNVwwMTFcMDAwXHVGQzc5XHVBNUE1IVwwMDBcdUZDMkVcdUZDMUZcdUZCRDdcdUZCQzdcdUE1QTVcMDIxXDAwMCIrCisgICAgICAgICJcdUZFREZcMDAwXDAwMFwwMDBcdUZFQzVcdUE1QTVcMDA2XDAwMFx1RkU3RVx1RkU3Mlx1QTVBNVwwMjBcMDAwXHVGREM3IisKKyAgICAgICAgIlx1RkRCNVx1QTVBNVwwMTZcMDAwXHVGQ0M3XHVGQ0JFXHVBNUE1XDAyMFwwMDBcdUZCRkJcdUZCRUFcdUE1QTVcMDM0XDAwMCIrCisgICAgICAgICJcdUZFOUFcdUZFOTBcMDAwXHVGRTUyXHVBNUE1IFwwMDBcdTIyNkVcdTIyNjBcMDAwXHUyMjZGXHVBNUE1LVwwMDBcdTIxOUEiKworICAgICAgICAiXHUyMTlCXHUyMUFFXHUyMUNEXHUyMUNGXHUyMUNFXHUyMjA0XHUyMjA5XHUyMjBDXHUyMjI0XHUyMjI2XHUyMjQxXHUyMjQ0IisKKyAgICAgICAgIlx1MjI0N1x1MjI0OVx1MjI2RFx1MjI2Mlx1MjI3MFx1MjI3MVx1MjI3NFx1MjI3NVx1MjI3OFx1MjI3OVx1MjI4MFx1MjI4MSIrCisgICAgICAgICJcdTIyRTBcdTIyRTFcdTIyODRcdTIyODVcdTIyODhcdTIyODlcdTIyRTJcdTIyRTNcdTIyQUNcdTIyQURcdTIyQUVcdTIyQUYiKworICAgICAgICAiXHUyMkVBXHUyMkVCXHUyMkVDXHUyMkVEXHVBNUE1XDAwNVwwMDBcdTFGQzFcdUE1QTVcMDA2XDAwMFx1MUZDRlwwMDBcMDAwIisKKyAgICAgICAgIlx1MUZERlx1QTVBNVwwMzBcMDAwXHUxRkI2XDAwMFx1MUZDNlx1MUZENlwwMDBcMDAwXHUxRkU2XHUxRkY2XHUxRkQ3XHUxRkU3IisKKyAgICAgICAgIlx1QTVBNS5cMDAwXHUxRjA2XHUxRjA3XHVBNUE1XDAwNlwwMDBcdTFGMEVcdTFGMEZcdUE1QTVcMDEyXDAwMFx1MUYyNiIrCisgICAgICAgICJcdTFGMjdcdUE1QTVcMDA2XDAwMFx1MUYyRVx1MUYyRlx1QTVBNVwwMDZcMDAwXHUxRjM2XHUxRjM3XHUxRjNFXHUxRjNGIisKKyAgICAgICAgIlx1QTVBNVwwMDRcMDAwXHUxRjU2XHUxRjU3XHUxRjVGXHUxRjY2XHUxRjY3XHVBNUE1XDAwNlwwMDBcdTFGNkVcdTFGNkYiKworICAgICAgICAiXHVBNUE1XDAxMVwwMDBcdTFGODZcdTFGODdcdTFGOEVcdTFGOEZcdTFGOTZcdTFGOTdcdTFGOUVcdTFGOUZcdTFGQTZcdTFGQTciKworICAgICAgICAiXHUxRkFFXHUxRkFGXHUxRkI3XDAwMFwwMDBcdTFGQzdcMDAwXDAwMFx1MUZGN1x1QTVBNSlcMDAwXHUxRkJDXDAwMFx1MUZDQyIrCisgICAgICAgICJcdUE1QTVcMDA0XDAwMFx1MUZGQ1x1MUZCNFx1MUZDNFx1MUZCM1wwMDBcdTFGQzNcdUE1QTVcMDA0XDAwMFx1MUZGM1wwMDAiKworICAgICAgICAiXDAwMFx1MUZGNFx1QTVBNS1cMDAwXHUxRjgwXHUxRjgxXHUxRjgyXHUxRjgzXHUxRjg0XHUxRjg1XHUxRjg2XHUxRjg3IisKKyAgICAgICAgIlx1MUY4OFx1MUY4OVx1MUY4QVx1MUY4Qlx1MUY4Q1x1MUY4RFx1MUY4RVx1MUY4Rlx1QTVBNVwwMDRcMDAwXHUxRjkwXHUxRjkxIisKKyAgICAgICAgIlx1MUY5Mlx1MUY5M1x1MUY5NFx1MUY5NVx1MUY5Nlx1MUY5N1x1MUY5OFx1MUY5OVx1MUY5QVx1MUY5Qlx1MUY5Q1x1MUY5RCIrCisgICAgICAgICJcdTFGOUVcdTFGOUZcdUE1QTVcMDEzXDAwMFx1MUZBMFx1MUZBMVx1MUZBMlx1MUZBM1x1MUZBNFx1MUZBNVx1MUZBNlx1MUZBNyIrCisgICAgICAgICJcdTFGQThcdTFGQTlcdTFGQUFcdTFGQUJcdTFGQUNcdTFGQURcdTFGQUVcdTFGQUZcdTFGQjJcdTFGQzJcdTFGRjJcdUE1QTUiKworICAgICAgICAiXDAxNVwwMDBcdTFGQjdcMDAwXDAwMFx1MUZDN1wwMDBcMDAwXHUxRkY3XHVBNUE1XDAzNVwwMDBcdUZCMURcdUE1QTVcMDQyIisKKyAgICAgICAgIlwwMDBcdTA2MjJcdUE1QTVcMDM3XDAwMFx1MDYyM1x1MDYyNFx1MDYyNlx1MDZDMlx1MDZEM1x1MDZDMFx1QTVBNVwwMzAiKworICAgICAgICAiXDAwMFx1RkUyQVx1RkUyM1x1MDYyNVx1QTVBNSVcMDAwXHUwOTI5XHUwOTMxXHUwOTM0XHVBNUE1IFwwMDBcdTA5Q0JcdUE1QTUiKworICAgICAgICAiXDAzN1wwMDBcdTA5Q0NcdUE1QTUgXDAwMFx1MEI0Qlx1QTVBNVwwMzdcMDAwXHUwQjQ4XHVBNUE1XDAzN1wwMDBcdTBCNEMiKworICAgICAgICAiXHVBNUE1IVwwMDBcdTBCQ0FcdTBCQ0JcdUE1QTVcMDM1XDAwMFx1MEI5NFx1MEJDQ1wwMDBcdTBDNDhcdUE1QTUhXDAwMCIrCisgICAgICAgICJcdTBDQ0FcdUE1QTVcMDM2XDAwMFx1MENDMFx1MENDN1x1MENDQlx1QTVBNVwwMzZcMDAwXHUwQ0M4XHVBNUE1IVwwMDAiKworICAgICAgICAiXHUwRDRBXHUwRDRCXHVBNUE1XDAzNlwwMDBcdTBENENcdUE1QTUhXDAwMFx1MEREQVwwMDBcdTBERERcdUE1QTVcMDM1IisKKyAgICAgICAgIlwwMDBcdTBERENcdUE1QTVcMDM3XDAwMFx1MERERVx1RkI3NFx1QTVBNSFcMDAwXHUxMDI2XHVBNUE1MlwwMDBcdTMwOTQiKworICAgICAgICAiXHUzMDRDXHUzMDRFXHUzMDUwXHUzMDUyXHUzMDU0XHUzMDU2XHUzMDU4XHUzMDVBXHUzMDVDXHUzMDVFXHUzMDYwXHUzMDYyIisKKyAgICAgICAgIlx1MzA2NVx1MzA2N1x1MzA2OVx1MzA3MFx1MzA3M1x1MzA3Nlx1MzA3OVx1MzA3Q1x1MzA5RVx1MzBGNFx1MzBBQ1x1MzBBRSIrCisgICAgICAgICJcdTMwQjBcdTMwQjJcdTMwQjRcdTMwQjZcdTMwQjhcdTMwQkFcdTMwQkNcdTMwQkVcdTMwQzBcdTMwQzJcdTMwQzVcdTMwQzciKworICAgICAgICAiXHUzMEM5XHUzMEQwXHUzMEQzXHUzMEQ2XHUzMEQ5XHUzMERDXHUzMEY3XHUzMEY4XHUzMEY5XHUzMEZBXHUzMEZFXHVBNUE1IisKKyAgICAgICAgIiBcMDAwXHUzMDcxXHUzMDc0XHUzMDc3XHUzMDdBXHUzMDdEXHVBNUE1XDAyMVwwMDBcdTMwRDFcdTMwRDRcdTMwRDdcdTMwREEiKworICAgICAgICAiXHUzMEREXHVBNUE1XDAzMVwwMDAiCisgICAgICAgICk7CisKKyAgICBzdGF0aWMgZmluYWwgY2hhcltdIGFjdGlvbkluZGV4ID0gVXRpbGl0eS5STEVTdHJpbmdUb0NoYXJBcnJheSgKKyAgICAgICAgIlwwMDBcdTA0OEVcdTE0NUFcdTE0NUVcdTE0NjJcdTE0NjZcdTE0NkFcdTE0NkVcdTE0NzFcdTE0NzVcdTE0NzhcdTE0N0MiKworICAgICAgICAiXHUxNDdGXHUxNDgzXHUxNDg3XHUxNDhBXHUxNDhFXHUxNDkyXHUxNDk2XHUxNDk5XHUxNDlDXHUxNEEwXHUxNEEzXHUxNEE3IisKKyAgICAgICAgIlx1MTRBQVx1MTRBRFx1MTRCMFx1MTRCNFx1MTRCN1x1MTRCQlx1MTRCRVx1MTRDMVx1MTRDNFx1MTRDN1x1MTRDQVx1MTRDRCIrCisgICAgICAgICJcdTE0RDBcdTE0RDNcdTE0RDZcdTE0RDlcdTE0RENcdTE0REZcdTE0RTJcdTE0RTVcdTE0RThcdTE0RUJcdTE0RUVcdTE0RjIiKworICAgICAgICAiXHUxNEY1XHUxNEY4XHUxNEZCXHUxNEZFXHUxNTAxXHUxNTA0XHUxNTA3XHUxNTBBXHUxNTBEXHUxNTEwXHUxNTEzXHUxNTE2IisKKyAgICAgICAgIlx1MTUxOVx1MTUxQ1x1MTUxRlx1MTUyMlx1MTUyNlx1MTUyOVx1MTUyQ1x1MTUyRlx1MTUzMlx1MTUzNVx1MTUzOFx1MTUzQiIrCisgICAgICAgICJcdTE1M0VcdTE1NDFcdTE1NDRcdTE1NDdcdTE1NEFcdTE1NERcdTE1NTFcdTE1NTRcdTE1NTdcdTE1NUFcdTE1NURcdTE1NjAiKworICAgICAgICAiXHUxNTYzXHUxNTY2XHUxNTY5XHUxNTZEXHUxNTcwXHUxNTczXHUxNTc2XHUxNTc5XHUxNTdDXHUxNTdGXHUxNTgyXHUxNTg2IisKKyAgICAgICAgIlx1MTU4OVx1MTU4Q1x1MTU4Rlx1MTU5Mlx1MTU5NVx1MTU5OFx1MTU5Qlx1MTU5RVx1MTVBMVx1MTVBNVx1MTVBOFx1MTVBQiIrCisgICAgICAgICJcdTE1QUVcdTE1QjFcdTE1QjRcdTE1QjdcdTE1QkJcdTE1QkVcdTE1QzFcdTE1QzRcdTE1QzdcdTE1Q0FcdTE1Q0RcdTE1RDAiKworICAgICAgICAiXHUxNUQzXHUxNUQ2XHUxNURBXHUxNUREXHUxNUUwXHUxNUUzXHUxNUU2XHUxNUU5XHUxNUVEXHUxNUYwXHUxNUYzXHUxNUY2IisKKyAgICAgICAgIlx1MTVGOVx1MTVGQ1x1MTYwMFx1MTYwM1x1MTYwNlx1MTYwOVx1MTYwRFx1MTYxMVx1MTYxNFx1MTYxOFx1MTYxQlx1MTYxRSIrCisgICAgICAgICJcdTE2MjFcdTE2MjRcdTE2MjhcdTE2MkJcdTE2MkVcdTE2MzFcdTE2MzRcdTE2MzhcdTE2M0JcdTE2M0VcdTE2NDFcdTE2NDUiKworICAgICAgICAiXHUxNjQ5XHUxNjRDXHUxNjUwXHUxNjUzXHUxNjU2XHUxNjU5XHUxNjVDXHUxNjYwXHUxNjYzXHUxNjY2XHUxNjY5XHUxNjZDIisKKyAgICAgICAgIlx1MTY2Rlx1MTY3Mlx1MTY3Nlx1MTY3OVx1MTY3Q1x1MTY3Rlx1MTY4Mlx1MTY4NVx1MTY4OFx1MTY4Qlx1MTY4RVx1MTY5MSIrCisgICAgICAgICJcdTE2OTVcdTE2OThcdTE2OUJcdTE2OUVcdTE2QTFcdTE2QTRcdTE2QTdcdTE2QUFcdTE2QUVcdTE2QjFcdTE2QjRcdTE2QjciKworICAgICAgICAiXHUxNkJBXHUxNkJEXHUxNkMxXHUxNkM0XHUxNkM3XHUxNkNCXHUxNkNGXHUxNkQzXHUxNkQ2XHUxNkQ5XHUxNkRDXHUxNkRGIisKKyAgICAgICAgIlx1MTZFMlx1MTZFNVx1MTZFOVx1MTZFRFx1MTZGMFx1MTZGM1x1MTZGNlx1MTZGOVx1MTZGQ1x1MTZGRlx1MTcwMlx1MTcwNSIrCisgICAgICAgICJcdTE3MDhcdTE3MEJcdTE3MEVcdTE3MTFcdTE3MTRcdTE3MTdcdTE3MUJcdTE3MUVcdTE3MjJcdTE3MjVcdTE3MjlcdTE3MkMiKworICAgICAgICAiXHUxNzJGXHUxNzMyXHUxNzM1XHUxNzM4XHUxNzNCXHUxNzNFXHUxNzQxXHUxNzQ0XHUxNzQ3XHUxNzRBXHUxNzREXHUxNzUxIisKKyAgICAgICAgIlx1MTc1NFx1MTc1OFx1MTc1Q1x1MTc2MFx1MTc2M1x1MTc2Nlx1MTc2OVx1MTc2Q1x1MTc3MFx1MTc3M1x1MTc3Nlx1MTc3QSIrCisgICAgICAgICJcdTE3N0VcdTE3ODFcdTE3ODVcdTE3ODhcdTE3OEJcdTE3OEVcdTE3OTFcdTE3OTRcdTE3OTdcdTE3OUFcdTE3OURcdTE3QTEiKworICAgICAgICAiXHUxN0E1XHUxN0E4XHUxN0FCXHUxN0FGXHUxN0IyXHUxN0I1XHUxN0I4XHUxN0JCXHUxN0JFXHUxN0MxXHUxN0M0XHUxN0M3IisKKyAgICAgICAgIlx1MTdDQVx1MTdDRFx1MTdEMFx1MTdEM1x1MTdEN1x1MTdEQlx1MTdERVx1MTdFMVx1MTdFNFx1MTdFOFx1MTdFQlx1MTdFRSIrCisgICAgICAgICJcdTE3RjFcdTE3RjRcdTE3RjdcdTE3RkFcdTE3RkRcdTE4MDFcdTE4MDVcdTE4MDlcdTE4MENcdTE4MTBcdTE4MTRcdTE4MTciKworICAgICAgICAiXHUxODFBXHUxODFEXHUxODIwXHUxODIzXHUxODI2XHUxODI5XHUxODJEXHUxODMwXHUxODM0XHUxODM3XHUxODNBXHUxODNEIisKKyAgICAgICAgIlx1MTg0MFx1MTg0M1x1MTg0N1x1MTg0QVx1MTg0RVx1MTg1MVx1MTg1NFx1MTg1OFx1MTg1Qlx1MTg1Rlx1MTg2Mlx1MTg2NSIrCisgICAgICAgICJcdTE4NjhcdTE4NkJcdTE4NkVcdTE4NzFcdTE4NzVcdTE4NzlcdTE4N0NcdTE4N0ZcdTE4ODNcdTE4ODdcdTE4OEFcdTE4OEQiKworICAgICAgICAiXHUxODkwXHUxODkzXHUxODk3XHUxODlCXHUxODlFXHUxOEExXHUxOEE1XHUxOEE5XHUxOEFDXHUxOEFGXHUxOEIyXHUxOEI1IisKKyAgICAgICAgIlx1MThCOVx1MThCQ1x1MThDMFx1MThDM1x1MThDNlx1MThDQVx1MThDRFx1MThEMFx1MThENFx1MThEN1x1MThEQVx1MThERCIrCisgICAgICAgICJcdTE4RTBcdTE4RTNcdTE4RTZcdTE4RTlcdTE4RURcdTE4RjBcdTE4RjRcdTE4RjdcdTE4RkJcdTE4RkVcdTE5MDFcdTE5MDUiKworICAgICAgICAiXHUxOTA4XHUxOTBCXHUxOTBFXHUxOTExXHUxOTE0XHUxOTE3XHUxOTFCXHUxOTFGXHUxOTIzXHUxOTI3XHUxOTJBXHUxOTJFIisKKyAgICAgICAgIlx1MTkzMVx1MTkzNFx1MTkzOFx1MTkzQ1x1MTk0MFx1MTk0NFx1MTk0N1x1MTk0Qlx1MTk0RVx1MTk1MVx1MTk1NVx1MTk1OCIrCisgICAgICAgICJcdTE5NUNcdTE5NUZcdTE5NjNcdTE5NjZcdTE5NkFcdTE5NkRcdTE5NzBcdTE5NzNcdTE5NzZcdTE5NzlcdTE5N0NcdTE5N0YiKworICAgICAgICAiXHUxOTgyXHUxOTg1XHUxOTg4XHUxOThCXHUxOThFXHUxOTkxXHUxOTk0XHUxOTk3XHUxOTlBXHUxOTlEXHUxOUEwXHUxOUEzIisKKyAgICAgICAgIlx1MTlBNlx1MTlBOVx1MTlBQ1x1MTlBRlx1MTlCMlx1MTlCNVx1MTlCOFx1MTlCQlx1MTlCRVx1MTlDMVx1MTlDNFx1MTlDNyIrCisgICAgICAgICJcdTE5Q0FcdTE5Q0RcdTE5RDBcdTE5RDNcdTE5RDZcdTE5RDlcdTE5RENcdTE5REZcdTE5RTJcdTE5RTVcdTE5RThcdTE5RUIiKworICAgICAgICAiXHUxOUVFXHUxOUYxXHUxOUY0XHUxOUY3XHUxOUZBXHUxOUZEXHUxQTAwXHUxQTAzXHUxQTA2XHUxQTA5XHUxQTBDXHUxQTBGIisKKyAgICAgICAgIlx1MUExMlx1MUExNVx1MUExOFx1MUExQlx1MUExRVx1MUEyMVx1MUEyNFx1MUEyN1x1MUEyQVx1MUEyRFx1MUEzMFx1MUEzMyIrCisgICAgICAgICJcdTFBMzZcdTFBMzlcdTFBM0NcdTFBM0ZcdTFBNDJcdTFBNDVcdTFBNDhcdTFBNEJcdTFBNEVcdTFBNTFcdTFBNTRcdTFBNTciKworICAgICAgICAiXHUxQTVBXHUxQTVEXHUxQTYwXHUxQTYzXHUxQTY2XHUxQTY5XHUxQTZDXHUxQTZGXHUxQTcyXHUxQTc2XHUxQTc5XHUxQTdDIisKKyAgICAgICAgIlx1MUE3Rlx1MUE4Mlx1MUE4NVx1MUE4OFx1MUE4Qlx1MUE4RVx1MUE5MVx1MUE5NFx1MUE5N1x1MUE5QVx1MUE5RFx1MUFBMCIrCisgICAgICAgICJcdTFBQTNcdTFBQTdcdTFBQUFcdTFBQURcdTFBQjFcdTFBQjRcdTFBQjdcdTFBQkFcdTFBQkVcdTFBQzFcdTFBQzRcdTFBQzciKworICAgICAgICAiXHUxQUNBXHUxQUNEXHUxQUQwXHUxQUQ0XHUxQUQ3XHUxQURBXHUxQURFXHUxQUUyXHUxQUU1XHUxQUU4XHUxQUVCXHUxQUVFIisKKyAgICAgICAgIlx1MUFGMVx1MUFGNVx1MUFGOFx1MUFGQlx1MUFGRVx1MUIwMVx1MUIwNFx1MUIwN1x1MUIwQlx1MUIwRVx1MUIxMVx1MUIxNSIrCisgICAgICAgICJcdTFCMTlcdTFCMUNcdTFCMUZcdTFCMjJcdTFCMjZcdTFCMjlcdTFCMkNcdTFCMkZcdTFCMzNcdTFCMzdcdTFCM0JcdTFCM0UiKworICAgICAgICAiXHUxQjQxXHUxQjQ1XHUxQjQ4XHUxQjRDXHUxQjUwXHUxQjU0XHUxQjU4XHUxQjVCXHUxQjVFXHUxQjYxXHUxQjY0XHUxQjY3IisKKyAgICAgICAgIlx1MUI2QVx1MUI2RFx1MUI3MVx1MUI3NVx1MUI3OFx1MUI3Q1x1MUI4MFx1MUI4M1x1MUI4Nlx1MUI4OVx1MUI4Q1x1MUI4RiIrCisgICAgICAgICJcdTFCOTJcdTFCOTVcdTFCOThcdTFCOUJcdTFCOUVcdTFCQTFcdTFCQTVcdTFCQTlcdTFCQUNcdTFCQjBcdTFCQjRcdTFCQjciKworICAgICAgICAiXHUxQkJBXHUxQkJEXHUxQkMwXHUxQkMzXHUxQkM2XHUxQkM5XHUxQkNDXHUxQkNGXHUxQkQzXHUxQkQ3XHUxQkRBXHUxQkRFIisKKyAgICAgICAgIlx1MUJFMlx1MUJFNVx1MUJFOFx1MUJFQlx1MUJFRVx1MUJGMVx1MUJGNFx1MUJGN1x1MUJGQVx1MUJGRFx1MUMwMVx1MUMwNCIrCisgICAgICAgICJcdTFDMDhcdTFDMEJcdTFDMEVcdTFDMTFcdTFDMTRcdTFDMTdcdTFDMUFcdTFDMURcdTFDMjBcdTFDMjRcdTFDMjdcdTFDMkEiKworICAgICAgICAiXHUxQzJEXHUxQzMwXHUxQzMzXHUxQzM2XHUxQzM5XHUxQzNDXHUxQzNGXHUxQzQyXHUxQzQ1XHUxQzQ5XHUxQzRDXHUxQzRGIisKKyAgICAgICAgIlx1MUM1Mlx1MUM1NVx1MUM1OFx1MUM1Qlx1MUM1RVx1MUM2MVx1MUM2NFx1MUM2OFx1MUM2Q1x1MUM2Rlx1MUM3Mlx1MUM3NSIrCisgICAgICAgICJcdTFDNzhcdTFDN0JcdTFDN0ZcdTFDODJcdTFDODZcdTFDODlcdTFDOENcdTFDOEZcdTFDOTJcdTFDOTVcdTFDOThcdTFDOUMiKworICAgICAgICAiXHUxQzlGXHUxQ0EzXHUxQ0E2XHUxQ0E5XHUxQ0FDXHUxQ0FGXHUxQ0IyXHUxQ0I1XHUxQ0I4XHUxQ0JCXHUxQ0JFXHUxQ0MxIisKKyAgICAgICAgIlx1MUNDNFx1MUNDOFx1MUNDQlx1MUNDRVx1MUNEMVx1MUNENVx1MUNEOFx1MUNEQlx1MUNERVx1MUNFMVx1MUNFNFx1MUNFNyIrCisgICAgICAgICJcdTFDRUFcdTFDRURcdTFDRjBcdTFDRjNcdTFDRjZcdTFDRjlcdTFDRkNcdTFDRkZcdTFEMDJcdTFEMDZcdTFEMDlcdTFEMEMiKworICAgICAgICAiXHUxRDBGXHUxRDEzXHUxRDE2XHUxRDE5XHUxRDFDXHUxRDFGXHUxRDIyXHUxRDI1XHUxRDI4XHUxRDJCXHUxRDJFXHUxRDMxIisKKyAgICAgICAgIlx1MUQzNFx1MUQzN1x1MUQzQVx1MUQzRFx1MUQ0MVx1MUQ0NFx1MUQ0OFx1MUQ0Qlx1MUQ0RVx1MUQ1MVx1MUQ1NFx1MUQ1NyIrCisgICAgICAgICJcdTFENUFcdTFENURcdTFENjBcdTFENjNcdTFENjZcdTFENjlcdTFENkRcdTFENzBcdTFENzRcdTFENzdcdTFEN0FcdTFEN0QiKworICAgICAgICAiXHUxRDgwXHUxRDgzXHUxRDg2XHUxRDhBXHUxRDhEXHUxRDkxXHUxRDk0XHUxRDk3XHUxRDlBXHUxRDlEXHUxREEwXHUxREEzIisKKyAgICAgICAgIlx1MURBNlx1MURBOVx1MURBQ1x1MURBRlx1MURCMlx1MURCNVx1MURCOFx1MURCQlx1MURCRVx1MURDMVx1MURDNFx1MURDNyIrCisgICAgICAgICJcdTFEQ0FcdTFEQ0RcdTFERDBcdTFERDNcdTFERDZcdTFERDlcdTFERENcdTFEREZcdTFERTJcdTFERTVcdTFERThcdTFERUIiKworICAgICAgICAiXHUxREVFXHUxREYxXHUxREY0XHUxREY3XHUxREZBXHUxREZEXHUxRTAwXHUxRTAzXHUxRTA2XHUxRTA5XHUxRTBDXHUxRTBGIisKKyAgICAgICAgIlx1MUUxMlx1MUUxNlx1MUUxQVx1MUUxRVx1MUUyMVx1MUUyNFx1MUUyN1x1MUUyQVx1MUUyRFx1MUUzMFx1MUUzNFx1MUUzOCIrCisgICAgICAgICJcdTFFM0NcdTFFM0ZcdTFFNDNcdTFFNDZcdTFFNDlcdTFFNENcdTFFNEZcdTFFNTJcdTFFNTZcdTFFNTlcdTFFNUNcdTFFNUYiKworICAgICAgICAiXHUxRTYyXHUxRTY1XHUxRTY4XHUxRTZCXHUxRTZFXHUxRTcxXHUxRTc0XHUxRTc3XHUxRTdBXHUxRTdEXHUxRTgwXHUxRTgzIisKKyAgICAgICAgIlx1MUU4Nlx1MUU4OVx1MUU4Q1x1MUU4Rlx1MUU5Mlx1MUU5NVx1MUU5OFx1MUU5Qlx1MUU5RVx1MUVBMVx1MUVBNFx1MUVBNyIrCisgICAgICAgICJcdTFFQUFcdTFFQURcdTFFQjBcdTFFQjNcdTFFQjZcdTFFQjlcdTFFQkNcdTFFQkZcdTFFQzJcdTFFQzVcdTFFQzhcdTFFQ0IiKworICAgICAgICAiXHUxRUNFXHUxRUQxXHUxRUQ0XHUxRUQ3XHUxRURBXHUxRUREXHUxRUUwXHUxRUUzXHUxRUU2XHUxRUU5XHUxRUVDXHUxRUVGIisKKyAgICAgICAgIlx1MUVGMlx1MUVGNVx1MUVGOFx1MUVGQlx1MUVGRVx1MUYwMVx1MUYwNFx1MUYwN1x1MUYwQVx1MUYwRFx1MUYxMFx1MUYxMyIrCisgICAgICAgICJcdTFGMTZcdTFGMTlcdTFGMUNcdTFGMUZcdTFGMjJcdTFGMjVcdTFGMjhcdTFGMkJcdTFGMkVcdTFGMzFcdTFGMzRcdTFGMzgiKworICAgICAgICAiXHUxRjNCXHUxRjNGXHUxRjQyXHUxRjQ2XHUxRjQ5XHUxRjRDXHUxRjRGXHUxRjUyXHUxRjU1XHUxRjU5XHUxRjVDXHUxRjVGIisKKyAgICAgICAgIlx1MUY2M1x1MUY2Nlx1MUY2OVx1MUY2RFx1MUY3MFx1MUY3M1x1MUY3Nlx1MUY3OVx1MUY3Q1x1MUY3Rlx1MUY4Mlx1MUY4NSIrCisgICAgICAgICJcdTFGODhcdTFGOEJcdTFGOEVcdTFGOTFcdTFGOTRcdTFGOTdcdTFGOUFcdTFGOURcdTFGQTBcdTFGQTNcdTFGQTZcdTFGQTkiKworICAgICAgICAiXHUxRkFDXHUxRkIwXHUxRkIzXHUxRkI2XHUxRkI5XHUxRkJDXHUxRkJGXHUxRkMyXHUxRkM1XHUxRkM5XHUxRkNDXHUxRkNGIisKKyAgICAgICAgIlx1MUZEMlx1MUZENVx1MUZEOFx1MUZEQlx1MUZERlx1MUZFMlx1MUZFNVx1MUZFOFx1MUZFQlx1MUZFRVx1MUZGMVx1MUZGNSIrCisgICAgICAgICJcdTFGRjhcdTFGRkJcdTFGRkVcdTIwMDFcdTIwMDRcdTIwMDdcdTIwMEJcdTIwMEVcdTIwMTFcdTIwMTRcdTIwMTdcdTIwMUEiKworICAgICAgICAiXHUyMDFEXHUyMDIxXHUyMDI0XHUyMDI3XHUyMDJBXHUyMDJEXHUyMDMwXHUyMDMzXHUyMDM2XHUyMDNBXHUyMDNEXHUyMDQwIisKKyAgICAgICAgIlx1MjA0M1x1MjA0N1x1MjA0QVx1MjA0RFx1MjA1MFx1MjA1M1x1MjA1Nlx1MjA1OVx1MjA1RFx1MjA2MFx1MjA2M1x1MjA2NiIrCisgICAgICAgICJcdTIwNjlcdTIwNkNcdTIwNkZcdTIwNzNcdTIwNzZcdTIwNzlcdTIwN0NcdTIwN0ZcdTIwODJcdTIwODVcdTIwODhcdTIwOEIiKworICAgICAgICAiXHUyMDhFXHUyMDkxXHUyMDk0XHUyMDk3XHUyMDlBXHUyMDlEXHUyMEEwXHUyMEE0XHUyMEE3XHUyMEFBXHUyMEFEXHUyMEIxIisKKyAgICAgICAgIlx1MjBCNVx1MjBCOFx1MjBCQlx1MjBCRVx1MjBDMVx1MjBDNFx1MjBDN1x1MjBDQVx1MjBDRFx1MjBEMFx1MjBEM1x1MjBENiIrCisgICAgICAgICJcdTIwREFcdTIwRERcdTIwRTBcdTIwRTNcdTIwRTdcdTIwRUJcdTIwRUVcdTIwRjFcdTIwRjRcdTIwRjhcdTIwRkJcdTIwRkYiKworICAgICAgICAiXHUyMTAzXHUyMTA2XHUyMTA5XHUyMTBDXHUyMTEwXHUyMTEzXHUyMTE3XHUyMTFCXHUyMTFFXHUyMTIxXHUyMTI0XHUyMTI4IisKKyAgICAgICAgIlx1MjEyQlx1MjEyRVx1MjEzMVx1MjEzNFx1MjEzN1x1MjEzQVx1MjEzRFx1MjE0MFx1MjE0NFx1MjE0OFx1MjE0Q1x1MjE0RiIrCisgICAgICAgICJcdTIxNTJcdTIxNTZcdTIxNTlcdTIxNUNcdTIxNjBcdTIxNjRcdTIxNjhcdTIxNkJcdTIxNkVcdTIxNzFcdTIxNzVcdTIxNzgiKworICAgICAgICAiXHUyMTdDXHUyMTgwXHUyMTgzXHUyMTg3XHUyMThBXHUyMThEXHUyMTkwXHUyMTk0XHUyMTk4XHUyMTlDXHUyMTlGXHUyMUEyIisKKyAgICAgICAgIlx1MjFBNVx1MjFBOVx1MjFBQ1x1MjFCMFx1MjFCNFx1MjFCN1x1MjFCQVx1MjFCRVx1MjFDMVx1MjFDNFx1MjFDN1x1MjFDQiIrCisgICAgICAgICJcdTIxQ0ZcdTIxRDNcdTIxRDZcdTIxRDlcdTIxRENcdTIxRTBcdTIxRTNcdTIxRTdcdTIxRUJcdTIxRUVcdTIxRjFcdTIxRjQiKworICAgICAgICAiXHUyMUY4XHUyMUZCXHUyMUZFXHUyMjAxXHUyMjA1XHUyMjA5XHUyMjBEXHUyMjExXHUyMjE0XHUyMjE4XHUyMjFCXHUyMjFFIisKKyAgICAgICAgIlx1MjIyMlx1MjIyNVx1MjIyOVx1MjIyRFx1MjIzMVx1MjIzNFx1MjIzN1x1MjIzQlx1MjIzRlx1MjI0M1x1MjI0Nlx1MjI0OSIrCisgICAgICAgICJcdTIyNENcdTIyNTBcdTIyNTRcdTIyNThcdTIyNUNcdTIyNjBcdTIyNjRcdTIyNjhcdTIyNkNcdTIyNzBcdTIyNzRcdTIyNzgiKworICAgICAgICAiXHUyMjdDXHUyMjgwXHUyMjg0XHUyMjg4XHUyMjhDXHUyMjkwXHUyMjk0XHUyMjk3XHUyMjlBXHUyMjlFXHUyMkEyXHUyMkE2IisKKyAgICAgICAgIlx1MjJBQVx1MjJBRVx1MjJCMlx1MjJCNlx1MjJCQVx1MjJCRVx1MjJDMlx1MjJDNlx1MjJDQVx1MjJDRVx1MjJEMlx1MjJENiIrCisgICAgICAgICJcdTIyREFcdTIyREVcdTIyRTJcdTIyRTVcdTIyRTlcdTIyRURcdTIyRjBcdTIyRjRcdTIyRjhcdTIyRkNcdTIzMDBcdTIzMDMiKworICAgICAgICAiXHUyMzA3XHUyMzBBXHUyMzBFXHUyMzEyIgorICAgICk7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIHJlcGxhY2UgPSAKKyAgICAgICAgIiAgXHUwMzA4XDAwMHNcMDAwXHUwM0E1XDAwMCBcdTAzMTNcMDAwIFx1MDMxNFwwMDAgXDAwMGFcMDAwIFx1MDMwNFwwMDAiKworICAgICAgICAiMlwwMDAzXDAwMCBcdTAzMDFcMDAwXHUwM0JDXDAwMCBcdTAzMjdcMDAwMVwwMDBvXDAwMDFcdTIwNDQ0XDAwMDFcdTIwNDQiKworICAgICAgICAiMlwwMDAzXHUyMDQ0NFwwMDBJSlwwMDBpalwwMDBMXHUwMEI3XDAwMGxcdTAwQjdcMDAwXHUwMkJDblwwMDBEWlx1MDMwQyIrCisgICAgICAgICJcMDAwRHpcdTAzMENcMDAwZHpcdTAzMENcMDAwTEpcMDAwTGpcMDAwbGpcMDAwTkpcMDAwTmpcMDAwbmpcMDAwRFpcMDAwIisKKyAgICAgICAgIkR6XDAwMGR6XDAwMGhcMDAwXHUwMjY2XDAwMHJcMDAwXHUwMjc5XDAwMFx1MDI3QlwwMDBcdTAyODFcMDAwd1wwMDB5XDAwMCIrCisgICAgICAgICIgXHUwMzA2XDAwMCBcdTAzMDdcMDAwIFx1MDMwQVwwMDAgXHUwMzI4XDAwMCBcdTAzMDNcMDAwIFx1MDMwQlwwMDBcdTAyNjMiKworICAgICAgICAiXDAwMGxcMDAweFwwMDBcdTAyOTVcMDAwIFx1MDM0NVwwMDAgXHUwMzA4XHUwMzAxXDAwMFx1MDNCMlwwMDBcdTAzQjhcMDAwIisKKyAgICAgICAgIlx1MDNBNVx1MDMwMVwwMDBcdTAzQTVcdTAzMDhcMDAwXHUwM0M2XDAwMFx1MDNDMFwwMDBcdTAzQkFcMDAwXHUwM0MxXDAwMCIrCisgICAgICAgICJcdTAzQzJcMDAwXHUwNTY1XHUwNTgyXDAwMFx1MDYyN1x1MDY3NFwwMDBcdTA2NDhcdTA2NzRcMDAwXHUwNkM3XHUwNjc0IisKKyAgICAgICAgIlwwMDBcdTA2NEFcdTA2NzRcMDAwXHUwRTREXHUwRTMyXDAwMFx1MEVDRFx1MEVCMlwwMDBcdTBFQUJcdTBFOTlcMDAwXHUwRUFCIisKKyAgICAgICAgIlx1MEVBMVwwMDBcdTBGMEJcMDAwXHUwRkIyXHUwRjcxXHUwRjgwXDAwMFx1MEZCM1x1MEY3MVx1MEY4MFwwMDBhXHUwMkJFIisKKyAgICAgICAgIlwwMDBzXHUwMzA3XDAwMCBcdTAzNDJcMDAwIFx1MDMwOFx1MDM0MlwwMDAgXHUwMzEzXHUwMzAwXDAwMCBcdTAzMTNcdTAzMDEiKworICAgICAgICAiXDAwMCBcdTAzMTNcdTAzNDJcMDAwIFx1MDMxNFx1MDMwMFwwMDAgXHUwMzE0XHUwMzAxXDAwMCBcdTAzMTRcdTAzNDJcMDAwIisKKyAgICAgICAgIiBcdTAzMDhcdTAzMDBcMDAwXHUyMDEwXDAwMCBcdTAzMzNcMDAwLlwwMDAuLlwwMDAuLi5cMDAwXHUyMDMyXHUyMDMyXDAwMCIrCisgICAgICAgICJcdTIwMzJcdTIwMzJcdTIwMzJcMDAwXHUyMDM1XHUyMDM1XDAwMFx1MjAzNVx1MjAzNVx1MjAzNVwwMDAhIVwwMDAgXHUwMzA1IisKKyAgICAgICAgIlwwMDA/IVwwMDAhP1wwMDAwXDAwMDVcMDAwNlwwMDA3XDAwMDhcMDAwOVwwMDArXDAwMFx1MjIxMlwwMDA9XDAwMChcMDAwIisKKyAgICAgICAgIilcMDAwUnNcMDAwYS9jXDAwMGEvc1wwMDBDXDAwMFx1MDBCMENcMDAwYy9vXDAwMGMvdVwwMDBcdTAxOTBcMDAwXHUwMEIwIisKKyAgICAgICAgIkZcMDAwZ1wwMDBIXDAwMFx1MDEyN1wwMDBJXDAwMExcMDAwTlwwMDBOb1wwMDBQXDAwMFFcMDAwUlwwMDBTTVwwMDBURSIrCisgICAgICAgICJMXDAwMFRNXDAwMEJcMDAwZVwwMDBFXDAwMFx1MDVEMFwwMDBcdTA1RDFcMDAwXHUwNUQyXDAwMFx1MDVEM1wwMDBpXDAwMCIrCisgICAgICAgICIxXHUyMDQ0M1wwMDAyXHUyMDQ0M1wwMDAxXHUyMDQ0NVwwMDAyXHUyMDQ0NVwwMDAzXHUyMDQ0NVwwMDA0XHUyMDQ0NVwwMDAiKworICAgICAgICAiMVx1MjA0NDZcMDAwNVx1MjA0NDZcMDAwMVx1MjA0NDhcMDAwM1x1MjA0NDhcMDAwNVx1MjA0NDhcMDAwN1x1MjA0NDhcMDAwIisKKyAgICAgICAgIjFcdTIwNDRcMDAwSUlcMDAwSUlJXDAwMElWXDAwMFZJXDAwMFZJSVwwMDBWSUlJXDAwMElYXDAwMFhJXDAwMFhJSVwwMDAiKworICAgICAgICAiRFwwMDBpaVwwMDBpaWlcMDAwaXZcMDAwdmlcMDAwdmlpXDAwMHZpaWlcMDAwaXhcMDAweGlcMDAweGlpXDAwMGRcMDAwIisKKyAgICAgICAgIm1cMDAwXHUyMjJCXHUyMjJCXDAwMFx1MjIyQlx1MjIyQlx1MjIyQlwwMDBcdTIyMkVcdTIyMkVcMDAwXHUyMjJFXHUyMjJFIisKKyAgICAgICAgIlx1MjIyRVwwMDAxMFwwMDAxMVwwMDAxMlwwMDAxM1wwMDAxNFwwMDAxNVwwMDAxNlwwMDAxN1wwMDAxOFwwMDAxOVwwMDAiKworICAgICAgICAiMjBcMDAwKDEpXDAwMCgyKVwwMDAoMylcMDAwKDQpXDAwMCg1KVwwMDAoNilcMDAwKDcpXDAwMCg4KVwwMDAoOSlcMDAwIisKKyAgICAgICAgIigxMClcMDAwKDExKVwwMDAoMTIpXDAwMCgxMylcMDAwKDE0KVwwMDAoMTUpXDAwMCgxNilcMDAwKDE3KVwwMDAoMTgpXDAwMCIrCisgICAgICAgICIoMTkpXDAwMCgyMClcMDAwMS5cMDAwMi5cMDAwMy5cMDAwNC5cMDAwNS5cMDAwNi5cMDAwNy5cMDAwOC5cMDAwOS5cMDAwIisKKyAgICAgICAgIjEwLlwwMDAxMS5cMDAwMTIuXDAwMDEzLlwwMDAxNC5cMDAwMTUuXDAwMDE2LlwwMDAxNy5cMDAwMTguXDAwMDE5LlwwMDAiKworICAgICAgICAiMjAuXDAwMChhKVwwMDAoYilcMDAwKGMpXDAwMChkKVwwMDAoZSlcMDAwKGYpXDAwMChnKVwwMDAoaClcMDAwKGkpXDAwMCIrCisgICAgICAgICIoailcMDAwKGspXDAwMChsKVwwMDAobSlcMDAwKG4pXDAwMChvKVwwMDAocClcMDAwKHEpXDAwMChyKVwwMDAocylcMDAwIisKKyAgICAgICAgIih0KVwwMDAodSlcMDAwKHYpXDAwMCh3KVwwMDAoeClcMDAwKHkpXDAwMCh6KVwwMDBBXDAwMEdcMDAwS1wwMDBPXDAwMCIrCisgICAgICAgICJTXDAwMFRcMDAwVVwwMDBXXDAwMFlcMDAwYlwwMDBmXDAwMGtcMDAwcFwwMDBxXDAwMHRcMDAwXHU2QkNEXDAwMFx1OUY5RiIrCisgICAgICAgICJcMDAwXHU0RTAwXDAwMFx1NEUyOFwwMDBcdTRFMzZcMDAwXHU0RTNGXDAwMFx1NEU1OVwwMDBcdTRFODVcMDAwXHU0RThDIisKKyAgICAgICAgIlwwMDBcdTRFQTBcMDAwXHU0RUJBXDAwMFx1NTEzRlwwMDBcdTUxNjVcMDAwXHU1MTZCXDAwMFx1NTE4MlwwMDBcdTUxOTYiKworICAgICAgICAiXDAwMFx1NTFBQlwwMDBcdTUxRTBcMDAwXHU1MUY1XDAwMFx1NTIwMFwwMDBcdTUyOUJcMDAwXHU1MkY5XDAwMFx1NTMxNSIrCisgICAgICAgICJcMDAwXHU1MzFBXDAwMFx1NTMzOFwwMDBcdTUzNDFcMDAwXHU1MzVDXDAwMFx1NTM2OVwwMDBcdTUzODJcMDAwXHU1M0I2IisKKyAgICAgICAgIlwwMDBcdTUzQzhcMDAwXHU1M0UzXDAwMFx1NTZEN1wwMDBcdTU3MUZcMDAwXHU1OEVCXDAwMFx1NTkwMlwwMDBcdTU5MEEiKworICAgICAgICAiXDAwMFx1NTkxNVwwMDBcdTU5MjdcMDAwXHU1OTczXDAwMFx1NUI1MFwwMDBcdTVCODBcMDAwXHU1QkY4XDAwMFx1NUMwRiIrCisgICAgICAgICJcMDAwXHU1QzIyXDAwMFx1NUMzOFwwMDBcdTVDNkVcMDAwXHU1QzcxXDAwMFx1NUREQlwwMDBcdTVERTVcMDAwXHU1REYxIisKKyAgICAgICAgIlwwMDBcdTVERkVcMDAwXHU1RTcyXDAwMFx1NUU3QVwwMDBcdTVFN0ZcMDAwXHU1RUY0XDAwMFx1NUVGRVwwMDBcdTVGMEIiKworICAgICAgICAiXDAwMFx1NUYxM1wwMDBcdTVGNTBcMDAwXHU1RjYxXDAwMFx1NUY3M1wwMDBcdTVGQzNcMDAwXHU2MjA4XDAwMFx1NjIzNiIrCisgICAgICAgICJcMDAwXHU2MjRCXDAwMFx1NjUyRlwwMDBcdTY1MzRcMDAwXHU2NTg3XDAwMFx1NjU5N1wwMDBcdTY1QTRcMDAwXHU2NUI5IisKKyAgICAgICAgIlwwMDBcdTY1RTBcMDAwXHU2NUU1XDAwMFx1NjZGMFwwMDBcdTY3MDhcMDAwXHU2NzI4XDAwMFx1NkIyMFwwMDBcdTZCNjIiKworICAgICAgICAiXDAwMFx1NkI3OVwwMDBcdTZCQjNcMDAwXHU2QkNCXDAwMFx1NkJENFwwMDBcdTZCREJcMDAwXHU2QzBGXDAwMFx1NkMxNCIrCisgICAgICAgICJcMDAwXHU2QzM0XDAwMFx1NzA2QlwwMDBcdTcyMkFcMDAwXHU3MjM2XDAwMFx1NzIzQlwwMDBcdTcyM0ZcMDAwXHU3MjQ3IisKKyAgICAgICAgIlwwMDBcdTcyNTlcMDAwXHU3MjVCXDAwMFx1NzJBQ1wwMDBcdTczODRcMDAwXHU3Mzg5XDAwMFx1NzREQ1wwMDBcdTc0RTYiKworICAgICAgICAiXDAwMFx1NzUxOFwwMDBcdTc1MUZcMDAwXHU3NTI4XDAwMFx1NzUzMFwwMDBcdTc1OEJcMDAwXHU3NTkyXDAwMFx1NzY3NiIrCisgICAgICAgICJcMDAwXHU3NjdEXDAwMFx1NzZBRVwwMDBcdTc2QkZcMDAwXHU3NkVFXDAwMFx1NzdEQlwwMDBcdTc3RTJcMDAwXHU3N0YzIisKKyAgICAgICAgIlwwMDBcdTc5M0FcMDAwXHU3OUI4XDAwMFx1NzlCRVwwMDBcdTdBNzRcMDAwXHU3QUNCXDAwMFx1N0FGOVwwMDBcdTdDNzMiKworICAgICAgICAiXDAwMFx1N0NGOFwwMDBcdTdGMzZcMDAwXHU3RjUxXDAwMFx1N0Y4QVwwMDBcdTdGQkRcMDAwXHU4MDAxXDAwMFx1ODAwQyIrCisgICAgICAgICJcMDAwXHU4MDEyXDAwMFx1ODAzM1wwMDBcdTgwN0ZcMDAwXHU4MDg5XDAwMFx1ODFFM1wwMDBcdTgxRUFcMDAwXHU4MUYzIisKKyAgICAgICAgIlwwMDBcdTgxRkNcMDAwXHU4MjBDXDAwMFx1ODIxQlwwMDBcdTgyMUZcMDAwXHU4MjZFXDAwMFx1ODI3MlwwMDBcdTgyNzgiKworICAgICAgICAiXDAwMFx1ODY0RFwwMDBcdTg2NkJcMDAwXHU4ODQwXDAwMFx1ODg0Q1wwMDBcdTg4NjNcMDAwXHU4OTdFXDAwMFx1ODk4QiIrCisgICAgICAgICJcMDAwXHU4OUQyXDAwMFx1OEEwMFwwMDBcdThDMzdcMDAwXHU4QzQ2XDAwMFx1OEM1NVwwMDBcdThDNzhcMDAwXHU4QzlEIisKKyAgICAgICAgIlwwMDBcdThENjRcMDAwXHU4RDcwXDAwMFx1OERCM1wwMDBcdThFQUJcMDAwXHU4RUNBXDAwMFx1OEY5QlwwMDBcdThGQjAiKworICAgICAgICAiXDAwMFx1OEZCNVwwMDBcdTkwOTFcMDAwXHU5MTQ5XDAwMFx1OTFDNlwwMDBcdTkxQ0NcMDAwXHU5MUQxXDAwMFx1OTU3NyIrCisgICAgICAgICJcMDAwXHU5NTgwXDAwMFx1OTYxQ1wwMDBcdTk2QjZcMDAwXHU5NkI5XDAwMFx1OTZFOFwwMDBcdTk3NTFcMDAwXHU5NzVFIisKKyAgICAgICAgIlwwMDBcdTk3NjJcMDAwXHU5NzY5XDAwMFx1OTdDQlwwMDBcdTk3RURcMDAwXHU5N0YzXDAwMFx1OTgwMVwwMDBcdTk4QTgiKworICAgICAgICAiXDAwMFx1OThEQlwwMDBcdTk4REZcMDAwXHU5OTk2XDAwMFx1OTk5OVwwMDBcdTk5QUNcMDAwXHU5QUE4XDAwMFx1OUFEOCIrCisgICAgICAgICJcMDAwXHU5QURGXDAwMFx1OUIyNVwwMDBcdTlCMkZcMDAwXHU5QjMyXDAwMFx1OUIzQ1wwMDBcdTlCNUFcMDAwXHU5Q0U1IisKKyAgICAgICAgIlwwMDBcdTlFNzVcMDAwXHU5RTdGXDAwMFx1OUVBNVwwMDBcdTlFQkJcMDAwXHU5RUMzXDAwMFx1OUVDRFwwMDBcdTlFRDEiKworICAgICAgICAiXDAwMFx1OUVGOVwwMDBcdTlFRkRcMDAwXHU5RjBFXDAwMFx1OUYxM1wwMDBcdTlGMjBcMDAwXHU5RjNCXDAwMFx1OUY0QSIrCisgICAgICAgICJcMDAwXHU5RjUyXDAwMFx1OUY4RFwwMDBcdTlGOUNcMDAwXHU5RkEwXDAwMFx1MzAxMlwwMDBcdTUzNDRcMDAwXHU1MzQ1IisKKyAgICAgICAgIlwwMDAgXHUzMDk5XDAwMCBcdTMwOUFcMDAwXHUxMTAwXDAwMFx1MTEwMVwwMDBcdTExQUFcMDAwXHUxMTAyXDAwMFx1MTFBQyIrCisgICAgICAgICJcMDAwXHUxMUFEXDAwMFx1MTEwM1wwMDBcdTExMDRcMDAwXHUxMTA1XDAwMFx1MTFCMFwwMDBcdTExQjFcMDAwXHUxMUIyIisKKyAgICAgICAgIlwwMDBcdTExQjNcMDAwXHUxMUI0XDAwMFx1MTFCNVwwMDBcdTExMUFcMDAwXHUxMTA2XDAwMFx1MTEwN1wwMDBcdTExMDgiKworICAgICAgICAiXDAwMFx1MTEyMVwwMDBcdTExMDlcMDAwXHUxMTBBXDAwMFx1MTEwQlwwMDBcdTExMENcMDAwXHUxMTBEXDAwMFx1MTEwRSIrCisgICAgICAgICJcMDAwXHUxMTBGXDAwMFx1MTExMFwwMDBcdTExMTFcMDAwXHUxMTEyXDAwMFx1MTE2MVwwMDBcdTExNjJcMDAwXHUxMTYzIisKKyAgICAgICAgIlwwMDBcdTExNjRcMDAwXHUxMTY1XDAwMFx1MTE2NlwwMDBcdTExNjdcMDAwXHUxMTY4XDAwMFx1MTE2OVwwMDBcdTExNkEiKworICAgICAgICAiXDAwMFx1MTE2QlwwMDBcdTExNkNcMDAwXHUxMTZEXDAwMFx1MTE2RVwwMDBcdTExNkZcMDAwXHUxMTcwXDAwMFx1MTE3MSIrCisgICAgICAgICJcMDAwXHUxMTcyXDAwMFx1MTE3M1wwMDBcdTExNzRcMDAwXHUxMTc1XDAwMFx1MTE2MFwwMDBcdTExMTRcMDAwXHUxMTE1IisKKyAgICAgICAgIlwwMDBcdTExQzdcMDAwXHUxMUM4XDAwMFx1MTFDQ1wwMDBcdTExQ0VcMDAwXHUxMUQzXDAwMFx1MTFEN1wwMDBcdTExRDkiKworICAgICAgICAiXDAwMFx1MTExQ1wwMDBcdTExRERcMDAwXHUxMURGXDAwMFx1MTExRFwwMDBcdTExMUVcMDAwXHUxMTIwXDAwMFx1MTEyMiIrCisgICAgICAgICJcMDAwXHUxMTIzXDAwMFx1MTEyN1wwMDBcdTExMjlcMDAwXHUxMTJCXDAwMFx1MTEyQ1wwMDBcdTExMkRcMDAwXHUxMTJFIisKKyAgICAgICAgIlwwMDBcdTExMkZcMDAwXHUxMTMyXDAwMFx1MTEzNlwwMDBcdTExNDBcMDAwXHUxMTQ3XDAwMFx1MTE0Q1wwMDBcdTExRjEiKworICAgICAgICAiXDAwMFx1MTFGMlwwMDBcdTExNTdcMDAwXHUxMTU4XDAwMFx1MTE1OVwwMDBcdTExODRcMDAwXHUxMTg1XDAwMFx1MTE4OCIrCisgICAgICAgICJcMDAwXHUxMTkxXDAwMFx1MTE5MlwwMDBcdTExOTRcMDAwXHUxMTlFXDAwMFx1MTFBMVwwMDBcdTRFMDlcMDAwXHU1NkRCIisKKyAgICAgICAgIlwwMDBcdTRFMEFcMDAwXHU0RTJEXDAwMFx1NEUwQlwwMDBcdTc1MzJcMDAwXHU0RTE5XDAwMFx1NEUwMVwwMDBcdTU5MjkiKworICAgICAgICAiXDAwMFx1NTczMFwwMDAoXHUxMTAwKVwwMDAoXHUxMTAyKVwwMDAoXHUxMTAzKVwwMDAoXHUxMTA1KVwwMDAoXHUxMTA2IisKKyAgICAgICAgIilcMDAwKFx1MTEwNylcMDAwKFx1MTEwOSlcMDAwKFx1MTEwQilcMDAwKFx1MTEwQylcMDAwKFx1MTEwRSlcMDAwKFx1MTEwRiIrCisgICAgICAgICIpXDAwMChcdTExMTApXDAwMChcdTExMTEpXDAwMChcdTExMTIpXDAwMChcdTExMDBcdTExNjEpXDAwMChcdTExMDJcdTExNjEiKworICAgICAgICAiKVwwMDAoXHUxMTAzXHUxMTYxKVwwMDAoXHUxMTA1XHUxMTYxKVwwMDAoXHUxMTA2XHUxMTYxKVwwMDAoXHUxMTA3XHUxMTYxIisKKyAgICAgICAgIilcMDAwKFx1MTEwOVx1MTE2MSlcMDAwKFx1MTEwQlx1MTE2MSlcMDAwKFx1MTEwQ1x1MTE2MSlcMDAwKFx1MTEwRVx1MTE2MSIrCisgICAgICAgICIpXDAwMChcdTExMEZcdTExNjEpXDAwMChcdTExMTBcdTExNjEpXDAwMChcdTExMTFcdTExNjEpXDAwMChcdTExMTJcdTExNjEiKworICAgICAgICAiKVwwMDAoXHUxMTBDXHUxMTZFKVwwMDAoXHU0RTAwKVwwMDAoXHU0RThDKVwwMDAoXHU0RTA5KVwwMDAoXHU1NkRCKVwwMDAiKworICAgICAgICAiKFx1NEU5NClcMDAwKFx1NTE2RClcMDAwKFx1NEUwMylcMDAwKFx1NTE2QilcMDAwKFx1NEU1RClcMDAwKFx1NTM0MSlcMDAwIisKKyAgICAgICAgIihcdTY3MDgpXDAwMChcdTcwNkIpXDAwMChcdTZDMzQpXDAwMChcdTY3MjgpXDAwMChcdTkxRDEpXDAwMChcdTU3MUYpXDAwMCIrCisgICAgICAgICIoXHU2NUU1KVwwMDAoXHU2ODJBKVwwMDAoXHU2NzA5KVwwMDAoXHU3OTNFKVwwMDAoXHU1NDBEKVwwMDAoXHU3Mjc5KVwwMDAiKworICAgICAgICAiKFx1OENBMSlcMDAwKFx1Nzk1RClcMDAwKFx1NTJCNClcMDAwKFx1NEVFMylcMDAwKFx1NTQ3QylcMDAwKFx1NUI2NilcMDAwIisKKyAgICAgICAgIihcdTc2RTMpXDAwMChcdTRGMDEpXDAwMChcdThDQzcpXDAwMChcdTUzNTQpXDAwMChcdTc5NkQpXDAwMChcdTRGMTEpXDAwMCIrCisgICAgICAgICIoXHU4MUVBKVwwMDAoXHU4MUYzKVwwMDBcdTExMDBcdTExNjFcMDAwXHUxMTAyXHUxMTYxXDAwMFx1MTEwM1x1MTE2MVwwMDAiKworICAgICAgICAiXHUxMTA1XHUxMTYxXDAwMFx1MTEwNlx1MTE2MVwwMDBcdTExMDdcdTExNjFcMDAwXHUxMTA5XHUxMTYxXDAwMFx1MTEwQiIrCisgICAgICAgICJcdTExNjFcMDAwXHUxMTBDXHUxMTYxXDAwMFx1MTEwRVx1MTE2MVwwMDBcdTExMEZcdTExNjFcMDAwXHUxMTEwXHUxMTYxIisKKyAgICAgICAgIlwwMDBcdTExMTFcdTExNjFcMDAwXHUxMTEyXHUxMTYxXDAwMFx1NEU5NFwwMDBcdTUxNkRcMDAwXHU0RTAzXDAwMFx1NEU1RCIrCisgICAgICAgICJcMDAwXHU2ODJBXDAwMFx1NjcwOVwwMDBcdTc5M0VcMDAwXHU1NDBEXDAwMFx1NzI3OVwwMDBcdThDQTFcMDAwXHU3OTVEIisKKyAgICAgICAgIlwwMDBcdTUyQjRcMDAwXHU3OUQ4XDAwMFx1NzUzN1wwMDBcdTkwNjlcMDAwXHU1MTJBXDAwMFx1NTM3MFwwMDBcdTZDRTgiKworICAgICAgICAiXDAwMFx1OTgwNVwwMDBcdTRGMTFcMDAwXHU1MTk5XDAwMFx1NkI2M1wwMDBcdTVERTZcMDAwXHU1M0YzXDAwMFx1NTMzQiIrCisgICAgICAgICJcMDAwXHU1Qjk3XDAwMFx1NUI2NlwwMDBcdTc2RTNcMDAwXHU0RjAxXDAwMFx1OENDN1wwMDBcdTUzNTRcMDAwXHU1OTFDIisKKyAgICAgICAgIlwwMDAxXHU2NzA4XDAwMDJcdTY3MDhcMDAwM1x1NjcwOFwwMDA0XHU2NzA4XDAwMDVcdTY3MDhcMDAwNlx1NjcwOFwwMDAiKworICAgICAgICAiN1x1NjcwOFwwMDA4XHU2NzA4XDAwMDlcdTY3MDhcMDAwMTBcdTY3MDhcMDAwMTFcdTY3MDhcMDAwMTJcdTY3MDhcMDAwIisKKyAgICAgICAgIlx1MzBBMlwwMDBcdTMwQTRcMDAwXHUzMEE2XDAwMFx1MzBBOFwwMDBcdTMwQUFcMDAwXHUzMEFCXDAwMFx1MzBBRFwwMDAiKworICAgICAgICAiXHUzMEFGXDAwMFx1MzBCMVwwMDBcdTMwQjNcMDAwXHUzMEI1XDAwMFx1MzBCN1wwMDBcdTMwQjlcMDAwXHUzMEJCXDAwMCIrCisgICAgICAgICJcdTMwQkRcMDAwXHUzMEJGXDAwMFx1MzBDMVwwMDBcdTMwQzRcMDAwXHUzMEM2XDAwMFx1MzBDOFwwMDBcdTMwQ0FcMDAwIisKKyAgICAgICAgIlx1MzBDQlwwMDBcdTMwQ0NcMDAwXHUzMENEXDAwMFx1MzBDRVwwMDBcdTMwQ0ZcMDAwXHUzMEQyXDAwMFx1MzBENVwwMDAiKworICAgICAgICAiXHUzMEQ4XDAwMFx1MzBEQlwwMDBcdTMwREVcMDAwXHUzMERGXDAwMFx1MzBFMFwwMDBcdTMwRTFcMDAwXHUzMEUyXDAwMCIrCisgICAgICAgICJcdTMwRTRcMDAwXHUzMEU2XDAwMFx1MzBFOFwwMDBcdTMwRTlcMDAwXHUzMEVBXDAwMFx1MzBFQlwwMDBcdTMwRUNcMDAwIisKKyAgICAgICAgIlx1MzBFRFwwMDBcdTMwRUZcMDAwXHUzMEYwXDAwMFx1MzBGMVwwMDBcdTMwRjJcMDAwXHUzMEEyXHUzMENGXHUzMDlBXHUzMEZDIisKKyAgICAgICAgIlx1MzBDOFwwMDBcdTMwQTJcdTMwRUJcdTMwRDVcdTMwQTFcMDAwXHUzMEEyXHUzMEYzXHUzMEQ4XHUzMDlBXHUzMEEyXDAwMCIrCisgICAgICAgICJcdTMwQTJcdTMwRkNcdTMwRUJcMDAwXHUzMEE0XHUzMENCXHUzMEYzXHUzMEFGXHUzMDk5XDAwMFx1MzBBNFx1MzBGM1x1MzBDMSIrCisgICAgICAgICJcMDAwXHUzMEE2XHUzMEE5XHUzMEYzXDAwMFx1MzBBOFx1MzBCOVx1MzBBRlx1MzBGQ1x1MzBDOFx1MzA5OVwwMDBcdTMwQTgiKworICAgICAgICAiXHUzMEZDXHUzMEFCXHUzMEZDXDAwMFx1MzBBQVx1MzBGM1x1MzBCOVwwMDBcdTMwQUFcdTMwRkNcdTMwRTBcMDAwXHUzMEFCIisKKyAgICAgICAgIlx1MzBBNFx1MzBFQVwwMDBcdTMwQUJcdTMwRTlcdTMwQzNcdTMwQzhcMDAwXHUzMEFCXHUzMEVEXHUzMEVBXHUzMEZDXDAwMCIrCisgICAgICAgICJcdTMwQUJcdTMwOTlcdTMwRURcdTMwRjNcMDAwXHUzMEFCXHUzMDk5XHUzMEYzXHUzMERFXDAwMFx1MzBBRFx1MzA5OVx1MzBBQiIrCisgICAgICAgICJcdTMwOTlcMDAwXHUzMEFEXHUzMDk5XHUzMENCXHUzMEZDXDAwMFx1MzBBRFx1MzBFNVx1MzBFQVx1MzBGQ1wwMDBcdTMwQUQiKworICAgICAgICAiXHUzMDk5XHUzMEVCXHUzMEJGXHUzMDk5XHUzMEZDXDAwMFx1MzBBRFx1MzBFRFwwMDBcdTMwQURcdTMwRURcdTMwQUZcdTMwOTkiKworICAgICAgICAiXHUzMEU5XHUzMEUwXDAwMFx1MzBBRFx1MzBFRFx1MzBFMVx1MzBGQ1x1MzBDOFx1MzBFQlwwMDBcdTMwQURcdTMwRURcdTMwRUYiKworICAgICAgICAiXHUzMEMzXHUzMEM4XDAwMFx1MzBBRlx1MzA5OVx1MzBFOVx1MzBFMFx1MzBDOFx1MzBGM1wwMDBcdTMwQUZcdTMwRUJcdTMwQkIiKworICAgICAgICAiXHUzMDk5XHUzMEE0XHUzMEVEXDAwMFx1MzBBRlx1MzBFRFx1MzBGQ1x1MzBDRFwwMDBcdTMwQjFcdTMwRkNcdTMwQjlcMDAwIisKKyAgICAgICAgIlx1MzBCM1x1MzBFQlx1MzBDQVwwMDBcdTMwQjNcdTMwRkNcdTMwREJcdTMwOUFcMDAwXHUzMEI1XHUzMEE0XHUzMEFGXHUzMEVCIisKKyAgICAgICAgIlwwMDBcdTMwQjVcdTMwRjNcdTMwQzFcdTMwRkNcdTMwRTBcMDAwXHUzMEI3XHUzMEVBXHUzMEYzXHUzMEFGXHUzMDk5XDAwMCIrCisgICAgICAgICJcdTMwQkJcdTMwRjNcdTMwQzFcMDAwXHUzMEJCXHUzMEYzXHUzMEM4XDAwMFx1MzBCRlx1MzA5OVx1MzBGQ1x1MzBCOVwwMDAiKworICAgICAgICAiXHUzMEM2XHUzMDk5XHUzMEI3XDAwMFx1MzBDOFx1MzA5OVx1MzBFQlwwMDBcdTMwQ0FcdTMwQ0VcMDAwXHUzMENFXHUzMEMzIisKKyAgICAgICAgIlx1MzBDOFwwMDBcdTMwQ0ZcdTMwQTRcdTMwQzRcMDAwXHUzMENGXHUzMDlBXHUzMEZDXHUzMEJCXHUzMEYzXHUzMEM4XDAwMCIrCisgICAgICAgICJcdTMwQ0ZcdTMwOUFcdTMwRkNcdTMwQzRcMDAwXHUzMENGXHUzMDk5XHUzMEZDXHUzMEVDXHUzMEVCXDAwMFx1MzBEMlx1MzA5QSIrCisgICAgICAgICJcdTMwQTJcdTMwQjlcdTMwQzhcdTMwRUJcMDAwXHUzMEQyXHUzMDlBXHUzMEFGXHUzMEVCXDAwMFx1MzBEMlx1MzA5QVx1MzBCMyIrCisgICAgICAgICJcMDAwXHUzMEQyXHUzMDk5XHUzMEVCXDAwMFx1MzBENVx1MzBBMVx1MzBFOVx1MzBDM1x1MzBDOFx1MzA5OVwwMDBcdTMwRDUiKworICAgICAgICAiXHUzMEEzXHUzMEZDXHUzMEM4XDAwMFx1MzBENVx1MzA5OVx1MzBDM1x1MzBCN1x1MzBBN1x1MzBFQlwwMDBcdTMwRDVcdTMwRTkiKworICAgICAgICAiXHUzMEYzXDAwMFx1MzBEOFx1MzBBRlx1MzBCRlx1MzBGQ1x1MzBFQlwwMDBcdTMwRDhcdTMwOUFcdTMwQkRcMDAwXHUzMEQ4IisKKyAgICAgICAgIlx1MzA5QVx1MzBDQlx1MzBEMlwwMDBcdTMwRDhcdTMwRUJcdTMwQzRcMDAwXHUzMEQ4XHUzMDlBXHUzMEYzXHUzMEI5XDAwMCIrCisgICAgICAgICJcdTMwRDhcdTMwOUFcdTMwRkNcdTMwQjdcdTMwOTlcMDAwXHUzMEQ4XHUzMDk5XHUzMEZDXHUzMEJGXDAwMFx1MzBEQlx1MzA5QSIrCisgICAgICAgICJcdTMwQTRcdTMwRjNcdTMwQzhcMDAwXHUzMERCXHUzMDk5XHUzMEVCXHUzMEM4XDAwMFx1MzBEQlx1MzBGM1wwMDBcdTMwREIiKworICAgICAgICAiXHUzMDlBXHUzMEYzXHUzMEM4XHUzMDk5XDAwMFx1MzBEQlx1MzBGQ1x1MzBFQlwwMDBcdTMwREJcdTMwRkNcdTMwRjNcMDAwIisKKyAgICAgICAgIlx1MzBERVx1MzBBNFx1MzBBRlx1MzBFRFwwMDBcdTMwREVcdTMwQTRcdTMwRUJcMDAwXHUzMERFXHUzMEMzXHUzMENGXDAwMCIrCisgICAgICAgICJcdTMwREVcdTMwRUJcdTMwQUZcMDAwXHUzMERFXHUzMEYzXHUzMEI3XHUzMEU3XHUzMEYzXDAwMFx1MzBERlx1MzBBRlx1MzBFRCIrCisgICAgICAgICJcdTMwRjNcMDAwXHUzMERGXHUzMEVBXDAwMFx1MzBERlx1MzBFQVx1MzBDRlx1MzA5OVx1MzBGQ1x1MzBFQlwwMDBcdTMwRTEiKworICAgICAgICAiXHUzMEFCXHUzMDk5XDAwMFx1MzBFMVx1MzBBQlx1MzA5OVx1MzBDOFx1MzBGM1wwMDBcdTMwRTRcdTMwRkNcdTMwQzhcdTMwOTkiKworICAgICAgICAiXDAwMFx1MzBFNFx1MzBGQ1x1MzBFQlwwMDBcdTMwRTZcdTMwQTJcdTMwRjNcMDAwXHUzMEVBXHUzMEMzXHUzMEM4XHUzMEVCIisKKyAgICAgICAgIlwwMDBcdTMwRUFcdTMwRTlcMDAwXHUzMEVCXHUzMEQyXHUzMDlBXHUzMEZDXDAwMFx1MzBFQlx1MzBGQ1x1MzBENVx1MzA5OSIrCisgICAgICAgICJcdTMwRUJcMDAwXHUzMEVDXHUzMEUwXDAwMFx1MzBFQ1x1MzBGM1x1MzBDOFx1MzBCMVx1MzA5OVx1MzBGM1wwMDAwXHU3MEI5IisKKyAgICAgICAgIlwwMDAxXHU3MEI5XDAwMDJcdTcwQjlcMDAwM1x1NzBCOVwwMDA0XHU3MEI5XDAwMDVcdTcwQjlcMDAwNlx1NzBCOVwwMDAiKworICAgICAgICAiN1x1NzBCOVwwMDA4XHU3MEI5XDAwMDlcdTcwQjlcMDAwMTBcdTcwQjlcMDAwMTFcdTcwQjlcMDAwMTJcdTcwQjlcMDAwIisKKyAgICAgICAgIjEzXHU3MEI5XDAwMDE0XHU3MEI5XDAwMDE1XHU3MEI5XDAwMDE2XHU3MEI5XDAwMDE3XHU3MEI5XDAwMDE4XHU3MEI5XDAwMCIrCisgICAgICAgICIxOVx1NzBCOVwwMDAyMFx1NzBCOVwwMDAyMVx1NzBCOVwwMDAyMlx1NzBCOVwwMDAyM1x1NzBCOVwwMDAyNFx1NzBCOVwwMDAiKworICAgICAgICAiaFBhXDAwMGRhXDAwMEFVXDAwMGJhclwwMDBvVlwwMDBwY1wwMDBcdTVFNzNcdTYyMTBcMDAwXHU2NjJEXHU1NDhDXDAwMCIrCisgICAgICAgICJcdTU5MjdcdTZCNjNcMDAwXHU2NjBFXHU2Q0JCXDAwMFx1NjgyQVx1NUYwRlx1NEYxQVx1NzkzRVwwMDBwQVwwMDBuQVwwMDAiKworICAgICAgICAiXHUwM0JDQVwwMDBtQVwwMDBrQVwwMDBLQlwwMDBNQlwwMDBHQlwwMDBjYWxcMDAwa2NhbFwwMDBwRlwwMDBuRlwwMDBcdTAzQkMiKworICAgICAgICAiRlwwMDBcdTAzQkNnXDAwMG1nXDAwMGtnXDAwMEh6XDAwMGtIelwwMDBNSHpcMDAwR0h6XDAwMFRIelwwMDBcdTAzQkNsIisKKyAgICAgICAgIlwwMDBtbFwwMDBkbFwwMDBrbFwwMDBmbVwwMDBubVwwMDBcdTAzQkNtXDAwMG1tXDAwMGNtXDAwMGttXDAwMG1tMlwwMDAiKworICAgICAgICAiY20yXDAwMGttMlwwMDBtbTNcMDAwY20zXDAwMGttM1wwMDBtXHUyMjE1c1wwMDBtXHUyMjE1czJcMDAwa1BhXDAwME1QIisKKyAgICAgICAgImFcMDAwR1BhXDAwMHJhZFwwMDByYWRcdTIyMTVzXDAwMHJhZFx1MjIxNXMyXDAwMHBzXDAwMG5zXDAwMFx1MDNCQ3NcMDAwIisKKyAgICAgICAgIm1zXDAwMHBWXDAwMG5WXDAwMFx1MDNCQ1ZcMDAwbVZcMDAwa1ZcMDAwTVZcMDAwcFdcMDAwbldcMDAwXHUwM0JDV1wwMDAiKworICAgICAgICAibVdcMDAwa1dcMDAwTVdcMDAwa1x1MDNBOVwwMDBNXHUwM0E5XDAwMGEubS5cMDAwQnFcMDAwY2NcMDAwY2RcMDAwQ1x1MjIxNSIrCisgICAgICAgICJrZ1wwMDBDby5cMDAwZEJcMDAwR3lcMDAwaGFcMDAwSFBcMDAwaW5cMDAwS0tcMDAwS01cMDAwa3RcMDAwbG1cMDAwbG4iKworICAgICAgICAiXDAwMGxvZ1wwMDBseFwwMDBtYlwwMDBtaWxcMDAwbW9sXDAwMFBIXDAwMHAubS5cMDAwUFBNXDAwMFBSXDAwMHNyXDAwMCIrCisgICAgICAgICJTdlwwMDBXYlwwMDAxXHU2NUU1XDAwMDJcdTY1RTVcMDAwM1x1NjVFNVwwMDA0XHU2NUU1XDAwMDVcdTY1RTVcMDAwNlx1NjVFNSIrCisgICAgICAgICJcMDAwN1x1NjVFNVwwMDA4XHU2NUU1XDAwMDlcdTY1RTVcMDAwMTBcdTY1RTVcMDAwMTFcdTY1RTVcMDAwMTJcdTY1RTUiKworICAgICAgICAiXDAwMDEzXHU2NUU1XDAwMDE0XHU2NUU1XDAwMDE1XHU2NUU1XDAwMDE2XHU2NUU1XDAwMDE3XHU2NUU1XDAwMDE4XHU2NUU1IisKKyAgICAgICAgIlwwMDAxOVx1NjVFNVwwMDAyMFx1NjVFNVwwMDAyMVx1NjVFNVwwMDAyMlx1NjVFNVwwMDAyM1x1NjVFNVwwMDAyNFx1NjVFNSIrCisgICAgICAgICJcMDAwMjVcdTY1RTVcMDAwMjZcdTY1RTVcMDAwMjdcdTY1RTVcMDAwMjhcdTY1RTVcMDAwMjlcdTY1RTVcMDAwMzBcdTY1RTUiKworICAgICAgICAiXDAwMDMxXHU2NUU1XDAwMGZmXDAwMGZpXDAwMGZsXDAwMGZmaVwwMDBmZmxcMDAwc3RcMDAwXHUwNTc0XHUwNTc2XDAwMCIrCisgICAgICAgICJcdTA1NzRcdTA1NjVcMDAwXHUwNTc0XHUwNTZCXDAwMFx1MDU3RVx1MDU3NlwwMDBcdTA1NzRcdTA1NkRcMDAwXHUwNUUyIisKKyAgICAgICAgIlwwMDBcdTA1RDRcMDAwXHUwNURCXDAwMFx1MDVEQ1wwMDBcdTA1RERcMDAwXHUwNUU4XDAwMFx1MDVFQVwwMDBcdTA1RDAiKworICAgICAgICAiXHUwNURDXDAwMFx1MDY3MVwwMDBcdTA2N0JcMDAwXHUwNjdFXDAwMFx1MDY4MFwwMDBcdTA2N0FcMDAwXHUwNjdGXDAwMCIrCisgICAgICAgICJcdTA2NzlcMDAwXHUwNkE0XDAwMFx1MDZBNlwwMDBcdTA2ODRcMDAwXHUwNjgzXDAwMFx1MDY4NlwwMDBcdTA2ODdcMDAwIisKKyAgICAgICAgIlx1MDY4RFwwMDBcdTA2OENcMDAwXHUwNjhFXDAwMFx1MDY4OFwwMDBcdTA2OThcMDAwXHUwNjkxXDAwMFx1MDZBOVwwMDAiKworICAgICAgICAiXHUwNkFGXDAwMFx1MDZCM1wwMDBcdTA2QjFcMDAwXHUwNkJBXDAwMFx1MDZCQlwwMDBcdTA2RDVcdTA2NTRcMDAwXHUwNkMxIisKKyAgICAgICAgIlwwMDBcdTA2QkVcMDAwXHUwNkQyXDAwMFx1MDZEMlx1MDY1NFwwMDBcdTA2QURcMDAwXHUwNkM3XDAwMFx1MDZDNlwwMDAiKworICAgICAgICAiXHUwNkM4XDAwMFx1MDZDQlwwMDBcdTA2QzVcMDAwXHUwNkM5XDAwMFx1MDZEMFwwMDBcdTA2NDlcMDAwXHUwNjRBXHUwNjU0IisKKyAgICAgICAgIlx1MDYyN1wwMDBcdTA2NEFcdTA2NTRcdTA2RDVcMDAwXHUwNjRBXHUwNjU0XHUwNjQ4XDAwMFx1MDY0QVx1MDY1NFx1MDZDNyIrCisgICAgICAgICJcMDAwXHUwNjRBXHUwNjU0XHUwNkM2XDAwMFx1MDY0QVx1MDY1NFx1MDZDOFwwMDBcdTA2NEFcdTA2NTRcdTA2RDBcMDAwIisKKyAgICAgICAgIlx1MDY0QVx1MDY1NFx1MDY0OVwwMDBcdTA2Q0NcMDAwXHUwNjRBXHUwNjU0XHUwNjJDXDAwMFx1MDY0QVx1MDY1NFx1MDYyRCIrCisgICAgICAgICJcMDAwXHUwNjRBXHUwNjU0XHUwNjQ1XDAwMFx1MDY0QVx1MDY1NFx1MDY0QVwwMDBcdTA2MjhcdTA2MkNcMDAwXHUwNjI4IisKKyAgICAgICAgIlx1MDYyRFwwMDBcdTA2MjhcdTA2MkVcMDAwXHUwNjI4XHUwNjQ1XDAwMFx1MDYyOFx1MDY0OVwwMDBcdTA2MjhcdTA2NEEiKworICAgICAgICAiXDAwMFx1MDYyQVx1MDYyQ1wwMDBcdTA2MkFcdTA2MkRcMDAwXHUwNjJBXHUwNjJFXDAwMFx1MDYyQVx1MDY0NVwwMDBcdTA2MkEiKworICAgICAgICAiXHUwNjQ5XDAwMFx1MDYyQVx1MDY0QVwwMDBcdTA2MkJcdTA2MkNcMDAwXHUwNjJCXHUwNjQ1XDAwMFx1MDYyQlx1MDY0OSIrCisgICAgICAgICJcMDAwXHUwNjJCXHUwNjRBXDAwMFx1MDYyQ1x1MDYyRFwwMDBcdTA2MkNcdTA2NDVcMDAwXHUwNjJEXHUwNjJDXDAwMFx1MDYyRCIrCisgICAgICAgICJcdTA2NDVcMDAwXHUwNjJFXHUwNjJDXDAwMFx1MDYyRVx1MDYyRFwwMDBcdTA2MkVcdTA2NDVcMDAwXHUwNjMzXHUwNjJDIisKKyAgICAgICAgIlwwMDBcdTA2MzNcdTA2MkRcMDAwXHUwNjMzXHUwNjJFXDAwMFx1MDYzM1x1MDY0NVwwMDBcdTA2MzVcdTA2MkRcMDAwXHUwNjM1IisKKyAgICAgICAgIlx1MDY0NVwwMDBcdTA2MzZcdTA2MkNcMDAwXHUwNjM2XHUwNjJEXDAwMFx1MDYzNlx1MDYyRVwwMDBcdTA2MzZcdTA2NDUiKworICAgICAgICAiXDAwMFx1MDYzN1x1MDYyRFwwMDBcdTA2MzdcdTA2NDVcMDAwXHUwNjM4XHUwNjQ1XDAwMFx1MDYzOVx1MDYyQ1wwMDBcdTA2MzkiKworICAgICAgICAiXHUwNjQ1XDAwMFx1MDYzQVx1MDYyQ1wwMDBcdTA2M0FcdTA2NDVcMDAwXHUwNjQxXHUwNjJDXDAwMFx1MDY0MVx1MDYyRCIrCisgICAgICAgICJcMDAwXHUwNjQxXHUwNjJFXDAwMFx1MDY0MVx1MDY0NVwwMDBcdTA2NDFcdTA2NDlcMDAwXHUwNjQxXHUwNjRBXDAwMFx1MDY0MiIrCisgICAgICAgICJcdTA2MkRcMDAwXHUwNjQyXHUwNjQ1XDAwMFx1MDY0Mlx1MDY0OVwwMDBcdTA2NDJcdTA2NEFcMDAwXHUwNjQzXHUwNjI3IisKKyAgICAgICAgIlwwMDBcdTA2NDNcdTA2MkNcMDAwXHUwNjQzXHUwNjJEXDAwMFx1MDY0M1x1MDYyRVwwMDBcdTA2NDNcdTA2NDRcMDAwXHUwNjQzIisKKyAgICAgICAgIlx1MDY0NVwwMDBcdTA2NDNcdTA2NDlcMDAwXHUwNjQzXHUwNjRBXDAwMFx1MDY0NFx1MDYyQ1wwMDBcdTA2NDRcdTA2MkQiKworICAgICAgICAiXDAwMFx1MDY0NFx1MDYyRVwwMDBcdTA2NDRcdTA2NDVcMDAwXHUwNjQ0XHUwNjQ5XDAwMFx1MDY0NFx1MDY0QVwwMDBcdTA2NDUiKworICAgICAgICAiXHUwNjJDXDAwMFx1MDY0NVx1MDYyRFwwMDBcdTA2NDVcdTA2MkVcMDAwXHUwNjQ1XHUwNjQ1XDAwMFx1MDY0NVx1MDY0OSIrCisgICAgICAgICJcMDAwXHUwNjQ1XHUwNjRBXDAwMFx1MDY0Nlx1MDYyQ1wwMDBcdTA2NDZcdTA2MkRcMDAwXHUwNjQ2XHUwNjJFXDAwMFx1MDY0NiIrCisgICAgICAgICJcdTA2NDVcMDAwXHUwNjQ2XHUwNjQ5XDAwMFx1MDY0Nlx1MDY0QVwwMDBcdTA2NDdcdTA2MkNcMDAwXHUwNjQ3XHUwNjQ1IisKKyAgICAgICAgIlwwMDBcdTA2NDdcdTA2NDlcMDAwXHUwNjQ3XHUwNjRBXDAwMFx1MDY0QVx1MDYyQ1wwMDBcdTA2NEFcdTA2MkRcMDAwXHUwNjRBIisKKyAgICAgICAgIlx1MDYyRVwwMDBcdTA2NEFcdTA2NDVcMDAwXHUwNjRBXHUwNjQ5XDAwMFx1MDY0QVx1MDY0QVwwMDBcdTA2MzBcdTA2NzAiKworICAgICAgICAiXDAwMFx1MDYzMVx1MDY3MFwwMDBcdTA2NDlcdTA2NzBcMDAwIFx1MDY0Q1x1MDY1MVwwMDAgXHUwNjREXHUwNjUxXDAwMCIrCisgICAgICAgICIgXHUwNjRFXHUwNjUxXDAwMCBcdTA2NEZcdTA2NTFcMDAwIFx1MDY1MFx1MDY1MVwwMDAgXHUwNjUxXHUwNjcwXDAwMFx1MDY0QSIrCisgICAgICAgICJcdTA2NTRcdTA2MzFcMDAwXHUwNjRBXHUwNjU0XHUwNjMyXDAwMFx1MDY0QVx1MDY1NFx1MDY0NlwwMDBcdTA2MjhcdTA2MzEiKworICAgICAgICAiXDAwMFx1MDYyOFx1MDYzMlwwMDBcdTA2MjhcdTA2NDZcMDAwXHUwNjJBXHUwNjMxXDAwMFx1MDYyQVx1MDYzMlwwMDBcdTA2MkEiKworICAgICAgICAiXHUwNjQ2XDAwMFx1MDYyQlx1MDYzMVwwMDBcdTA2MkJcdTA2MzJcMDAwXHUwNjJCXHUwNjQ2XDAwMFx1MDY0NVx1MDYyNyIrCisgICAgICAgICJcMDAwXHUwNjQ2XHUwNjMxXDAwMFx1MDY0Nlx1MDYzMlwwMDBcdTA2NDZcdTA2NDZcMDAwXHUwNjRBXHUwNjMxXDAwMFx1MDY0QSIrCisgICAgICAgICJcdTA2MzJcMDAwXHUwNjRBXHUwNjQ2XDAwMFx1MDY0QVx1MDY1NFx1MDYyRVwwMDBcdTA2NEFcdTA2NTRcdTA2NDdcMDAwIisKKyAgICAgICAgIlx1MDYyOFx1MDY0N1wwMDBcdTA2MkFcdTA2NDdcMDAwXHUwNjM1XHUwNjJFXDAwMFx1MDY0NFx1MDY0N1wwMDBcdTA2NDYiKworICAgICAgICAiXHUwNjQ3XDAwMFx1MDY0N1x1MDY3MFwwMDBcdTA2NEFcdTA2NDdcMDAwXHUwNjJCXHUwNjQ3XDAwMFx1MDYzM1x1MDY0NyIrCisgICAgICAgICJcMDAwXHUwNjM0XHUwNjQ1XDAwMFx1MDYzNFx1MDY0N1wwMDBcdTA2NDBcdTA2NEVcdTA2NTFcMDAwXHUwNjQwXHUwNjRGIisKKyAgICAgICAgIlx1MDY1MVwwMDBcdTA2NDBcdTA2NTBcdTA2NTFcMDAwXHUwNjM3XHUwNjQ5XDAwMFx1MDYzN1x1MDY0QVwwMDBcdTA2MzkiKworICAgICAgICAiXHUwNjQ5XDAwMFx1MDYzOVx1MDY0QVwwMDBcdTA2M0FcdTA2NDlcMDAwXHUwNjNBXHUwNjRBXDAwMFx1MDYzM1x1MDY0OSIrCisgICAgICAgICJcMDAwXHUwNjMzXHUwNjRBXDAwMFx1MDYzNFx1MDY0OVwwMDBcdTA2MzRcdTA2NEFcMDAwXHUwNjJEXHUwNjQ5XDAwMFx1MDYyRCIrCisgICAgICAgICJcdTA2NEFcMDAwXHUwNjJDXHUwNjQ5XDAwMFx1MDYyQ1x1MDY0QVwwMDBcdTA2MkVcdTA2NDlcMDAwXHUwNjJFXHUwNjRBIisKKyAgICAgICAgIlwwMDBcdTA2MzVcdTA2NDlcMDAwXHUwNjM1XHUwNjRBXDAwMFx1MDYzNlx1MDY0OVwwMDBcdTA2MzZcdTA2NEFcMDAwXHUwNjM0IisKKyAgICAgICAgIlx1MDYyQ1wwMDBcdTA2MzRcdTA2MkRcMDAwXHUwNjM0XHUwNjJFXDAwMFx1MDYzNFx1MDYzMVwwMDBcdTA2MzNcdTA2MzEiKworICAgICAgICAiXDAwMFx1MDYzNVx1MDYzMVwwMDBcdTA2MzZcdTA2MzFcMDAwXHUwNjI3XHUwNjRCXDAwMFx1MDYyQVx1MDYyQ1x1MDY0NSIrCisgICAgICAgICJcMDAwXHUwNjJBXHUwNjJEXHUwNjJDXDAwMFx1MDYyQVx1MDYyRFx1MDY0NVwwMDBcdTA2MkFcdTA2MkVcdTA2NDVcMDAwIisKKyAgICAgICAgIlx1MDYyQVx1MDY0NVx1MDYyQ1wwMDBcdTA2MkFcdTA2NDVcdTA2MkRcMDAwXHUwNjJBXHUwNjQ1XHUwNjJFXDAwMFx1MDYyQyIrCisgICAgICAgICJcdTA2NDVcdTA2MkRcMDAwXHUwNjJEXHUwNjQ1XHUwNjRBXDAwMFx1MDYyRFx1MDY0NVx1MDY0OVwwMDBcdTA2MzNcdTA2MkQiKworICAgICAgICAiXHUwNjJDXDAwMFx1MDYzM1x1MDYyQ1x1MDYyRFwwMDBcdTA2MzNcdTA2MkNcdTA2NDlcMDAwXHUwNjMzXHUwNjQ1XHUwNjJEIisKKyAgICAgICAgIlwwMDBcdTA2MzNcdTA2NDVcdTA2MkNcMDAwXHUwNjMzXHUwNjQ1XHUwNjQ1XDAwMFx1MDYzNVx1MDYyRFx1MDYyRFwwMDAiKworICAgICAgICAiXHUwNjM1XHUwNjQ1XHUwNjQ1XDAwMFx1MDYzNFx1MDYyRFx1MDY0NVwwMDBcdTA2MzRcdTA2MkNcdTA2NEFcMDAwXHUwNjM0IisKKyAgICAgICAgIlx1MDY0NVx1MDYyRVwwMDBcdTA2MzRcdTA2NDVcdTA2NDVcMDAwXHUwNjM2XHUwNjJEXHUwNjQ5XDAwMFx1MDYzNlx1MDYyRSIrCisgICAgICAgICJcdTA2NDVcMDAwXHUwNjM3XHUwNjQ1XHUwNjJEXDAwMFx1MDYzN1x1MDY0NVx1MDY0NVwwMDBcdTA2MzdcdTA2NDVcdTA2NEEiKworICAgICAgICAiXDAwMFx1MDYzOVx1MDYyQ1x1MDY0NVwwMDBcdTA2MzlcdTA2NDVcdTA2NDVcMDAwXHUwNjM5XHUwNjQ1XHUwNjQ5XDAwMCIrCisgICAgICAgICJcdTA2M0FcdTA2NDVcdTA2NDVcMDAwXHUwNjNBXHUwNjQ1XHUwNjRBXDAwMFx1MDYzQVx1MDY0NVx1MDY0OVwwMDBcdTA2NDEiKworICAgICAgICAiXHUwNjJFXHUwNjQ1XDAwMFx1MDY0Mlx1MDY0NVx1MDYyRFwwMDBcdTA2NDJcdTA2NDVcdTA2NDVcMDAwXHUwNjQ0XHUwNjJEIisKKyAgICAgICAgIlx1MDY0NVwwMDBcdTA2NDRcdTA2MkRcdTA2NEFcMDAwXHUwNjQ0XHUwNjJEXHUwNjQ5XDAwMFx1MDY0NFx1MDYyQ1x1MDYyQyIrCisgICAgICAgICJcMDAwXHUwNjQ0XHUwNjJFXHUwNjQ1XDAwMFx1MDY0NFx1MDY0NVx1MDYyRFwwMDBcdTA2NDVcdTA2MkRcdTA2MkNcMDAwIisKKyAgICAgICAgIlx1MDY0NVx1MDYyRFx1MDY0NVwwMDBcdTA2NDVcdTA2MkRcdTA2NEFcMDAwXHUwNjQ1XHUwNjJDXHUwNjJEXDAwMFx1MDY0NSIrCisgICAgICAgICJcdTA2MkNcdTA2NDVcMDAwXHUwNjQ1XHUwNjJFXHUwNjJDXDAwMFx1MDY0NVx1MDYyRVx1MDY0NVwwMDBcdTA2NDVcdTA2MkMiKworICAgICAgICAiXHUwNjJFXDAwMFx1MDY0N1x1MDY0NVx1MDYyQ1wwMDBcdTA2NDdcdTA2NDVcdTA2NDVcMDAwXHUwNjQ2XHUwNjJEXHUwNjQ1IisKKyAgICAgICAgIlwwMDBcdTA2NDZcdTA2MkRcdTA2NDlcMDAwXHUwNjQ2XHUwNjJDXHUwNjQ1XDAwMFx1MDY0Nlx1MDYyQ1x1MDY0OVwwMDAiKworICAgICAgICAiXHUwNjQ2XHUwNjQ1XHUwNjRBXDAwMFx1MDY0Nlx1MDY0NVx1MDY0OVwwMDBcdTA2NEFcdTA2NDVcdTA2NDVcMDAwXHUwNjI4IisKKyAgICAgICAgIlx1MDYyRVx1MDY0QVwwMDBcdTA2MkFcdTA2MkNcdTA2NEFcMDAwXHUwNjJBXHUwNjJDXHUwNjQ5XDAwMFx1MDYyQVx1MDYyRSIrCisgICAgICAgICJcdTA2NEFcMDAwXHUwNjJBXHUwNjJFXHUwNjQ5XDAwMFx1MDYyQVx1MDY0NVx1MDY0QVwwMDBcdTA2MkFcdTA2NDVcdTA2NDkiKworICAgICAgICAiXDAwMFx1MDYyQ1x1MDY0NVx1MDY0QVwwMDBcdTA2MkNcdTA2MkRcdTA2NDlcMDAwXHUwNjJDXHUwNjQ1XHUwNjQ5XDAwMCIrCisgICAgICAgICJcdTA2MzNcdTA2MkVcdTA2NDlcMDAwXHUwNjM1XHUwNjJEXHUwNjRBXDAwMFx1MDYzNFx1MDYyRFx1MDY0QVwwMDBcdTA2MzYiKworICAgICAgICAiXHUwNjJEXHUwNjRBXDAwMFx1MDY0NFx1MDYyQ1x1MDY0QVwwMDBcdTA2NDRcdTA2NDVcdTA2NEFcMDAwXHUwNjRBXHUwNjJEIisKKyAgICAgICAgIlx1MDY0QVwwMDBcdTA2NEFcdTA2MkNcdTA2NEFcMDAwXHUwNjRBXHUwNjQ1XHUwNjRBXDAwMFx1MDY0NVx1MDY0NVx1MDY0QSIrCisgICAgICAgICJcMDAwXHUwNjQyXHUwNjQ1XHUwNjRBXDAwMFx1MDY0Nlx1MDYyRFx1MDY0QVwwMDBcdTA2MzlcdTA2NDVcdTA2NEFcMDAwIisKKyAgICAgICAgIlx1MDY0M1x1MDY0NVx1MDY0QVwwMDBcdTA2NDZcdTA2MkNcdTA2MkRcMDAwXHUwNjQ1XHUwNjJFXHUwNjRBXDAwMFx1MDY0NCIrCisgICAgICAgICJcdTA2MkNcdTA2NDVcMDAwXHUwNjQzXHUwNjQ1XHUwNjQ1XDAwMFx1MDYyQ1x1MDYyRFx1MDY0QVwwMDBcdTA2MkRcdTA2MkMiKworICAgICAgICAiXHUwNjRBXDAwMFx1MDY0NVx1MDYyQ1x1MDY0QVwwMDBcdTA2NDFcdTA2NDVcdTA2NEFcMDAwXHUwNjI4XHUwNjJEXHUwNjRBIisKKyAgICAgICAgIlwwMDBcdTA2MzNcdTA2MkVcdTA2NEFcMDAwXHUwNjQ2XHUwNjJDXHUwNjRBXDAwMFx1MDYzNVx1MDY0NFx1MDZEMlwwMDAiKworICAgICAgICAiXHUwNjQyXHUwNjQ0XHUwNkQyXDAwMFx1MDYyN1x1MDY0NFx1MDY0NFx1MDY0N1wwMDBcdTA2MjdcdTA2NDNcdTA2MjhcdTA2MzEiKworICAgICAgICAiXDAwMFx1MDY0NVx1MDYyRFx1MDY0NVx1MDYyRlwwMDBcdTA2MzVcdTA2NDRcdTA2MzlcdTA2NDVcMDAwXHUwNjMxXHUwNjMzIisKKyAgICAgICAgIlx1MDY0OFx1MDY0NFwwMDBcdTA2MzlcdTA2NDRcdTA2NEFcdTA2NDdcMDAwXHUwNjQ4XHUwNjMzXHUwNjQ0XHUwNjQ1XDAwMCIrCisgICAgICAgICJcdTA2MzVcdTA2NDRcdTA2NDlcMDAwXHUwNjM1XHUwNjQ0XHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDY0NFx1MDY0NyBcdTA2MzkiKworICAgICAgICAiXHUwNjQ0XHUwNjRBXHUwNjQ3IFx1MDY0OFx1MDYzM1x1MDY0NFx1MDY0NVwwMDBcdTA2MkNcdTA2NDQgXHUwNjJDXHUwNjQ0IisKKyAgICAgICAgIlx1MDYyN1x1MDY0NFx1MDY0N1wwMDBcdTIwMTRcMDAwXHUyMDEzXDAwMF9cMDAwe1wwMDB9XDAwMFx1MzAxNFwwMDBcdTMwMTUiKworICAgICAgICAiXDAwMFx1MzAxMFwwMDBcdTMwMTFcMDAwXHUzMDBBXDAwMFx1MzAwQlwwMDBcdTMwMDhcMDAwXHUzMDA5XDAwMFx1MzAwQyIrCisgICAgICAgICJcMDAwXHUzMDBEXDAwMFx1MzAwRVwwMDBcdTMwMEZcMDAwLFwwMDBcdTMwMDFcMDAwO1wwMDA6XDAwMCNcMDAwJlwwMDAiKworICAgICAgICAiKlwwMDAtXDAwMDxcMDAwPlwwMDBcMTM0XDAwMCRcMDAwJVwwMDBAXDAwMCBcdTA2NEJcMDAwXHUwNjQwXHUwNjRCXDAwMCIrCisgICAgICAgICIgXHUwNjRDXDAwMCBcdTA2NERcMDAwIFx1MDY0RVwwMDBcdTA2NDBcdTA2NEVcMDAwIFx1MDY0RlwwMDBcdTA2NDBcdTA2NEYiKworICAgICAgICAiXDAwMCBcdTA2NTBcMDAwXHUwNjQwXHUwNjUwXDAwMCBcdTA2NTFcMDAwXHUwNjQwXHUwNjUxXDAwMCBcdTA2NTJcMDAwIisKKyAgICAgICAgIlx1MDY0MFx1MDY1MlwwMDBcdTA2MjFcMDAwXHUwNjI3XHUwNjUzXDAwMFx1MDYyN1x1MDY1NFwwMDBcdTA2NDhcdTA2NTQiKworICAgICAgICAiXDAwMFx1MDYyN1x1MDY1NVwwMDBcdTA2NEFcdTA2NTRcMDAwXHUwNjI4XDAwMFx1MDYyOVwwMDBcdTA2MkFcMDAwXHUwNjJCIisKKyAgICAgICAgIlwwMDBcdTA2MzBcMDAwXHUwNjMzXDAwMFx1MDYzNFwwMDBcdTA2MzVcMDAwXHUwNjM2XDAwMFx1MDYzN1wwMDBcdTA2MzgiKworICAgICAgICAiXDAwMFx1MDYzOVwwMDBcdTA2M0FcMDAwXHUwNjQxXDAwMFx1MDY0MlwwMDBcdTA2NDNcMDAwXHUwNjQ0XHUwNjI3XHUwNjUzIisKKyAgICAgICAgIlwwMDBcdTA2NDRcdTA2MjdcdTA2NTRcMDAwXHUwNjQ0XHUwNjI3XHUwNjU1XDAwMFx1MDY0NFx1MDYyN1wwMDBcMDQyXDAwMCIrCisgICAgICAgICInXDAwMC9cMDAwW1wwMDBdXDAwMF5cMDAwYFwwMDB8XDAwMH5cMDAwXHUzMDAyXDAwMFx1MzBGQlwwMDBcdTMwQTNcMDAwIisKKyAgICAgICAgIlx1MzBBNVwwMDBcdTMwQTdcMDAwXHUzMEE5XDAwMFx1MzBFM1wwMDBcdTMwRTVcMDAwXHUzMEU3XDAwMFx1MzBDM1wwMDAiKworICAgICAgICAiXHUwMEEyXDAwMFx1MDBBM1wwMDBcdTAwQUNcMDAwXHUwMEE2XDAwMFx1MDBBNVwwMDBcdTIwQTlcMDAwXHUyNTAyXDAwMCIrCisgICAgICAgICJcdTIxOTBcMDAwXHUyMTkxXDAwMFx1MjE5MlwwMDBcdTIxOTNcMDAwXHUyNUEwXDAwMFx1MjVDQlwwMDBcdTAzMDBcMDAwIisKKyAgICAgICAgIlx1MDMwMVwwMDBcdTAzMTNcMDAwXHUwMzA4XHUwMzAxXDAwMFx1MDJCOVwwMDA7XDAwMFx1MDBCN1wwMDBcdTA5MTVcdTA5M0MiKworICAgICAgICAiXDAwMFx1MDkxNlx1MDkzQ1wwMDBcdTA5MTdcdTA5M0NcMDAwXHUwOTFDXHUwOTNDXDAwMFx1MDkyMVx1MDkzQ1wwMDBcdTA5MjIiKworICAgICAgICAiXHUwOTNDXDAwMFx1MDkyQlx1MDkzQ1wwMDBcdTA5MkZcdTA5M0NcMDAwXHUwOUExXHUwOUJDXDAwMFx1MDlBMlx1MDlCQyIrCisgICAgICAgICJcMDAwXHUwOUFGXHUwOUJDXDAwMFx1MEEzMlx1MEEzQ1wwMDBcdTBBMzhcdTBBM0NcMDAwXHUwQTE2XHUwQTNDXDAwMFx1MEExNyIrCisgICAgICAgICJcdTBBM0NcMDAwXHUwQTFDXHUwQTNDXDAwMFx1MEEyQlx1MEEzQ1wwMDBcdTBCMjFcdTBCM0NcMDAwXHUwQjIyXHUwQjNDIisKKyAgICAgICAgIlwwMDBcdTBGNDJcdTBGQjdcMDAwXHUwRjRDXHUwRkI3XDAwMFx1MEY1MVx1MEZCN1wwMDBcdTBGNTZcdTBGQjdcMDAwXHUwRjVCIisKKyAgICAgICAgIlx1MEZCN1wwMDBcdTBGNDBcdTBGQjVcMDAwXHUwRjcxXHUwRjcyXDAwMFx1MEY3MVx1MEY3NFwwMDBcdTBGQjJcdTBGODAiKworICAgICAgICAiXDAwMFx1MEZCM1x1MEY4MFwwMDBcdTBGNzFcdTBGODBcMDAwXHUwRjkyXHUwRkI3XDAwMFx1MEY5Q1x1MEZCN1wwMDBcdTBGQTEiKworICAgICAgICAiXHUwRkI3XDAwMFx1MEZBNlx1MEZCN1wwMDBcdTBGQUJcdTBGQjdcMDAwXHUwRjkwXHUwRkI1XDAwMFx1MDNCMVx1MDMwMSIrCisgICAgICAgICJcMDAwXHUwM0I1XHUwMzAxXDAwMFx1MDNCN1x1MDMwMVwwMDBcdTAzQjlcdTAzMDFcMDAwXHUwM0JGXHUwMzAxXDAwMFx1MDNDNSIrCisgICAgICAgICJcdTAzMDFcMDAwXHUwM0M5XHUwMzAxXDAwMFx1MDM5MVx1MDMwMVwwMDBcdTAzQjlcMDAwXHUwMzk1XHUwMzAxXDAwMFx1MDM5NyIrCisgICAgICAgICJcdTAzMDFcMDAwXHUwM0I5XHUwMzA4XHUwMzAxXDAwMFx1MDM5OVx1MDMwMVwwMDBcdTAzQzVcdTAzMDhcdTAzMDFcMDAwIisKKyAgICAgICAgIlx1MDNBNVx1MDMwMVwwMDBgXDAwMFx1MDM5Rlx1MDMwMVwwMDBcdTAzQTlcdTAzMDFcMDAwXHUwM0E5XDAwMEtcMDAwQSIrCisgICAgICAgICJcdTAzMEFcMDAwXHUzMDA4XDAwMFx1MzAwOVwwMDBcdThDNDhcMDAwXHU2NkY0XDAwMFx1OEVDQVwwMDBcdThDQzhcMDAwIisKKyAgICAgICAgIlx1NkVEMVwwMDBcdTRFMzJcMDAwXHU1M0U1XDAwMFx1OUY5Q1wwMDBcdTlGOUNcMDAwXHU1OTUxXDAwMFx1OTFEMVwwMDAiKworICAgICAgICAiXHU1NTg3XDAwMFx1NTk0OFwwMDBcdTYxRjZcMDAwXHU3NjY5XDAwMFx1N0Y4NVwwMDBcdTg2M0ZcMDAwXHU4N0JBXDAwMCIrCisgICAgICAgICJcdTg4RjhcMDAwXHU5MDhGXDAwMFx1NkEwMlwwMDBcdTZEMUJcMDAwXHU3MEQ5XDAwMFx1NzNERVwwMDBcdTg0M0RcMDAwIisKKyAgICAgICAgIlx1OTE2QVwwMDBcdTk5RjFcMDAwXHU0RTgyXDAwMFx1NTM3NVwwMDBcdTZCMDRcMDAwXHU3MjFCXDAwMFx1ODYyRFwwMDAiKworICAgICAgICAiXHU5RTFFXDAwMFx1NUQ1MFwwMDBcdTZGRUJcMDAwXHU4NUNEXDAwMFx1ODk2NFwwMDBcdTYyQzlcMDAwXHU4MUQ4XDAwMCIrCisgICAgICAgICJcdTg4MUZcMDAwXHU1RUNBXDAwMFx1NjcxN1wwMDBcdTZENkFcMDAwXHU3MkZDXDAwMFx1OTBDRVwwMDBcdTRGODZcMDAwIisKKyAgICAgICAgIlx1NTFCN1wwMDBcdTUyREVcMDAwXHU2NEM0XDAwMFx1NkFEM1wwMDBcdTcyMTBcMDAwXHU3NkU3XDAwMFx1ODAwMVwwMDAiKworICAgICAgICAiXHU4NjA2XDAwMFx1ODY1Q1wwMDBcdThERUZcMDAwXHU5NzMyXDAwMFx1OUI2RlwwMDBcdTlERkFcMDAwXHU3ODhDXDAwMCIrCisgICAgICAgICJcdTc5N0ZcMDAwXHU3REEwXDAwMFx1ODNDOVwwMDBcdTkzMDRcMDAwXHU5RTdGXDAwMFx1OEFENlwwMDBcdTU4REZcMDAwIisKKyAgICAgICAgIlx1NUYwNFwwMDBcdTdDNjBcMDAwXHU4MDdFXDAwMFx1NzI2MlwwMDBcdTc4Q0FcMDAwXHU4Q0MyXDAwMFx1OTZGN1wwMDAiKworICAgICAgICAiXHU1OEQ4XDAwMFx1NUM2MlwwMDBcdTZBMTNcMDAwXHU2RERBXDAwMFx1NkYwRlwwMDBcdTdEMkZcMDAwXHU3RTM3XDAwMCIrCisgICAgICAgICJcdTk2RkJcMDAwXHU1MkQyXDAwMFx1ODA4QlwwMDBcdTUxRENcMDAwXHU1MUNDXDAwMFx1N0ExQ1wwMDBcdTdEQkVcMDAwIisKKyAgICAgICAgIlx1ODNGMVwwMDBcdTk2NzVcMDAwXHU4QjgwXDAwMFx1NjJDRlwwMDBcdThBRkVcMDAwXHU0RTM5XDAwMFx1NUJFN1wwMDAiKworICAgICAgICAiXHU2MDEyXDAwMFx1NzM4N1wwMDBcdTc1NzBcMDAwXHU1MzE3XDAwMFx1NzhGQlwwMDBcdTRGQkZcMDAwXHU1RkE5XDAwMCIrCisgICAgICAgICJcdTRFMERcMDAwXHU2Q0NDXDAwMFx1NjU3OFwwMDBcdTdEMjJcMDAwXHU1M0MzXDAwMFx1NTg1RVwwMDBcdTc3MDFcMDAwIisKKyAgICAgICAgIlx1ODQ0OVwwMDBcdThBQUFcMDAwXHU2QkJBXDAwMFx1OEZCMFwwMDBcdTZDODhcMDAwXHU2MkZFXDAwMFx1ODJFNVwwMDAiKworICAgICAgICAiXHU2M0EwXDAwMFx1NzU2NVwwMDBcdTRFQUVcMDAwXHU1MTY5XDAwMFx1NTFDOVwwMDBcdTY4ODFcMDAwXHU3Q0U3XDAwMCIrCisgICAgICAgICJcdTgyNkZcMDAwXHU4QUQyXDAwMFx1OTFDRlwwMDBcdTUyRjVcMDAwXHU1NDQyXDAwMFx1NTk3M1wwMDBcdTVFRUNcMDAwIisKKyAgICAgICAgIlx1NjVDNVwwMDBcdTZGRkVcMDAwXHU3OTJBXDAwMFx1OTVBRFwwMDBcdTlBNkFcMDAwXHU5RTk3XDAwMFx1OUVDRVwwMDAiKworICAgICAgICAiXHU1MjlCXDAwMFx1NjZDNlwwMDBcdTZCNzdcMDAwXHU4RjYyXDAwMFx1NUU3NFwwMDBcdTYxOTBcMDAwXHU2MjAwXDAwMCIrCisgICAgICAgICJcdTY0OUFcMDAwXHU2RjIzXDAwMFx1NzE0OVwwMDBcdTc0ODlcMDAwXHU3OUNBXDAwMFx1N0RGNFwwMDBcdTgwNkZcMDAwIisKKyAgICAgICAgIlx1OEYyNlwwMDBcdTg0RUVcMDAwXHU5MDIzXDAwMFx1OTM0QVwwMDBcdTUyMTdcMDAwXHU1MkEzXDAwMFx1NTRCRFwwMDAiKworICAgICAgICAiXHU3MEM4XDAwMFx1ODhDMlwwMDBcdTVFQzlcMDAwXHU1RkY1XDAwMFx1NjM3QlwwMDBcdTZCQUVcMDAwXHU3QzNFXDAwMCIrCisgICAgICAgICJcdTczNzVcMDAwXHU0RUU0XDAwMFx1NTZGOVwwMDBcdTVEQkFcMDAwXHU2MDFDXDAwMFx1NzNCMlwwMDBcdTc0NjlcMDAwIisKKyAgICAgICAgIlx1N0Y5QVwwMDBcdTgwNDZcMDAwXHU5MjM0XDAwMFx1OTZGNlwwMDBcdTk3NDhcMDAwXHU5ODE4XDAwMFx1NEY4QlwwMDAiKworICAgICAgICAiXHU3OUFFXDAwMFx1OTFCNFwwMDBcdTk2QjhcMDAwXHU2MEUxXDAwMFx1NEU4NlwwMDBcdTUwREFcMDAwXHU1QkVFXDAwMCIrCisgICAgICAgICJcdTVDM0ZcMDAwXHU2NTk5XDAwMFx1NzFDRVwwMDBcdTc2NDJcMDAwXHU4NEZDXDAwMFx1OTA3Q1wwMDBcdTlGOERcMDAwIisKKyAgICAgICAgIlx1NjY4OFwwMDBcdTk2MkVcMDAwXHU1Mjg5XDAwMFx1Njc3QlwwMDBcdTY3RjNcMDAwXHU2RDQxXDAwMFx1NkU5Q1wwMDAiKworICAgICAgICAiXHU3NDA5XDAwMFx1NzU1OVwwMDBcdTc4NkJcMDAwXHU3RDEwXDAwMFx1OTg1RVwwMDBcdTUxNkRcMDAwXHU2MjJFXDAwMCIrCisgICAgICAgICJcdTk2NzhcMDAwXHU1MDJCXDAwMFx1NUQxOVwwMDBcdTZERUFcMDAwXHU4RjJBXDAwMFx1NUY4QlwwMDBcdTYxNDRcMDAwIisKKyAgICAgICAgIlx1NjgxN1wwMDBcdTk2ODZcMDAwXHU1MjI5XDAwMFx1NTQwRlwwMDBcdTVDNjVcMDAwXHU2NjEzXDAwMFx1Njc0RVwwMDAiKworICAgICAgICAiXHU2OEE4XDAwMFx1NkNFNVwwMDBcdTc0MDZcMDAwXHU3NUUyXDAwMFx1N0Y3OVwwMDBcdTg4Q0ZcMDAwXHU4OEUxXDAwMCIrCisgICAgICAgICJcdTkxQ0NcMDAwXHU5NkUyXDAwMFx1NTMzRlwwMDBcdTZFQkFcMDAwXHU1NDFEXDAwMFx1NzFEMFwwMDBcdTc0OThcMDAwIisKKyAgICAgICAgIlx1ODVGQVwwMDBcdTk2QTNcMDAwXHU5QzU3XDAwMFx1OUU5RlwwMDBcdTY3OTdcMDAwXHU2RENCXDAwMFx1ODFFOFwwMDAiKworICAgICAgICAiXHU3QUNCXDAwMFx1N0IyMFwwMDBcdTdDOTJcMDAwXHU3MkMwXDAwMFx1NzA5OVwwMDBcdThCNThcMDAwXHU0RUMwXDAwMCIrCisgICAgICAgICJcdTgzMzZcMDAwXHU1MjNBXDAwMFx1NTIwN1wwMDBcdTVFQTZcMDAwXHU2MkQzXDAwMFx1N0NENlwwMDBcdTVCODVcMDAwIisKKyAgICAgICAgIlx1NkQxRVwwMDBcdTY2QjRcMDAwXHU4RjNCXDAwMFx1ODg0Q1wwMDBcdTk2NERcMDAwXHU4OThCXDAwMFx1NUVEM1wwMDAiKworICAgICAgICAiXHU1MTQwXDAwMFx1NTVDMFwwMDBcdTU4NUFcMDAwXHU2Njc0XDAwMFx1NTFERVwwMDBcdTczMkFcMDAwXHU3NkNBXDAwMCIrCisgICAgICAgICJcdTc5M0NcMDAwXHU3OTVFXDAwMFx1Nzk2NVwwMDBcdTc5OEZcMDAwXHU5NzU2XDAwMFx1N0NCRVwwMDBcdTdGQkRcMDAwIisKKyAgICAgICAgIlx1ODYxMlwwMDBcdThBRjhcMDAwXHU5MDM4XDAwMFx1OTBGRFwwMDBcdTk4RUZcMDAwXHU5OEZDXDAwMFx1OTkyOFwwMDAiKworICAgICAgICAiXHU5REI0XDAwMFx1MDVGMlx1MDVCN1wwMDBcdTA1RTlcdTA1QzFcMDAwXHUwNUU5XHUwNUMyXDAwMFx1MDVFOVx1MDVCQyIrCisgICAgICAgICJcdTA1QzFcMDAwXHUwNUU5XHUwNUJDXHUwNUMyXDAwMFx1MDVEMFx1MDVCN1wwMDBcdTA1RDBcdTA1QjhcMDAwXHUwNUQwIisKKyAgICAgICAgIlx1MDVCQ1wwMDBcdTA1RDFcdTA1QkNcMDAwXHUwNUQyXHUwNUJDXDAwMFx1MDVEM1x1MDVCQ1wwMDBcdTA1RDRcdTA1QkMiKworICAgICAgICAiXDAwMFx1MDVENVx1MDVCQ1wwMDBcdTA1RDZcdTA1QkNcMDAwXHUwNUQ4XHUwNUJDXDAwMFx1MDVEOVx1MDVCQ1wwMDBcdTA1REEiKworICAgICAgICAiXHUwNUJDXDAwMFx1MDVEQlx1MDVCQ1wwMDBcdTA1RENcdTA1QkNcMDAwXHUwNURFXHUwNUJDXDAwMFx1MDVFMFx1MDVCQyIrCisgICAgICAgICJcMDAwXHUwNUUxXHUwNUJDXDAwMFx1MDVFM1x1MDVCQ1wwMDBcdTA1RTRcdTA1QkNcMDAwXHUwNUU2XHUwNUJDXDAwMFx1MDVFNyIrCisgICAgICAgICJcdTA1QkNcMDAwXHUwNUU4XHUwNUJDXDAwMFx1MDVFOVx1MDVCQ1wwMDBcdTA1RUFcdTA1QkNcMDAwXHUwNUQ1XHUwNUI5IisKKyAgICAgICAgIlwwMDBcdTA1RDFcdTA1QkZcMDAwXHUwNURCXHUwNUJGXDAwMFx1MDVFNFx1MDVCRlwwMDBcdTAzODVcMDAwXHUwMEI0XDAwMCIrCisgICAgICAgICJcdTIwMDJcMDAwXHUyMDAzXDAwMFx1MDE3Mlx1MDMwM1x1MDMwMVwwMDBcdTFFNzZcdTAzMDhcdTAzMDRcMDAwXHUwMUVCIisKKyAgICAgICAgIlx1MDMxQlx1MDMwMVwwMDBcdTFFQjlcdTAzMDRcdTAzMDBcMDAwXHUxRTcyXHUwMzAzXHUwMzAxXDAwMFx1MUUxMVx1MDMwQyIrCisgICAgICAgICJcMDAwXHUxRUU0XHUwMzAzXHUwMzAxXDAwMFx1MUVFM1x1MDMwMVwwMDBcdTAxNzJcdTAzMDhcdTAzMDRcMDAwXHUxRTBEIisKKyAgICAgICAgIlx1MDMwQ1wwMDBcdTFFNzJcdTAzMDhcdTAzMDRcMDAwXHUxRUU0XHUwMzA4XHUwMzA0XDAwMFx1MUVFRVx1MDMwMVwwMDAiKworICAgICAgICAiXHUwMUFGXHUwMzA4XHUwMzA0XDAwMFx1MUUxQVx1MDMwNFx1MDMwMFwwMDBcdTFFMThcdTAzMDRcdTAzMDBcMDAwXHUxRTBFIisKKyAgICAgICAgIlx1MDMwQ1wwMDBcdTFFNzVcdTAzMEJcMDAwXHUwMTE4XHUwMzA0XHUwMzAwXDAwMFx1MUUxMlx1MDMwQ1wwMDBcdTAyMjgiKworICAgICAgICAiXHUwMzA0XHUwMzAwXDAwMFx1MUU3NVx1MDMwQ1wwMDBcdTAxNzNcdTAzMkRcMDAwXHUxRTc3XHUwMzBCXDAwMFx1MDFFQSIrCisgICAgICAgICJcdTAzMUJcdTAzMDFcMDAwXHUxRTc3XHUwMzBDXDAwMFx1MUVCOFx1MDMwNFx1MDMwMFwwMDBcdTFFMTBcdTAzMENcMDAwIisKKyAgICAgICAgIlx1MDE3M1x1MDMwQlwwMDBcdTFFRTJcdTAzMDFcMDAwXHUwMTczXHUwMzBDXDAwMFx1MUUwQ1x1MDMwQ1wwMDBcdTFFNzMiKworICAgICAgICAiXHUwMzBCXDAwMFx1MUVFNVx1MDMwQlwwMDBcdTFFNzNcdTAzMENcMDAwXHUxRUU1XHUwMzBDXDAwMFx1MDFCMFx1MDMyRCIrCisgICAgICAgICJcMDAwXHUwMUIwXHUwMzBCXDAwMFx1MDFCMFx1MDMwQ1wwMDBcdTFFNzRcdTAzMEJcMDAwXHUxRTExXHUwMzJEXDAwMFx1MUU3NCIrCisgICAgICAgICJcdTAzMENcMDAwXHUwMTcyXHUwMzJEXDAwMFx1MUU3Nlx1MDMwQlwwMDBcdTAxRUJcdTAzMjNcdTAzMDJcMDAwXHUxRTc2IisKKyAgICAgICAgIlx1MDMwQ1wwMDBcdTAwRTdcdTAzMENcMDAwXHUwMTcyXHUwMzBCXDAwMFx1MDE3Mlx1MDMwQ1wwMDBcdTFFNzJcdTAzMEIiKworICAgICAgICAiXDAwMFx1MUVFNFx1MDMwQlwwMDBcdTFFNzJcdTAzMENcMDAwXHUxRUU0XHUwMzBDXDAwMFx1MDFBRlx1MDMyRFwwMDBcdTFFRTMiKworICAgICAgICAiXHUwMzAyXDAwMFx1MDFBRlx1MDMwQlwwMDBcdTAxQUZcdTAzMENcMDAwXHUxRTc1XHUwMzBBXDAwMFx1MUUxMFx1MDMyRCIrCisgICAgICAgICJcMDAwXHUxRTc3XHUwMzBBXDAwMFx1MDE3M1x1MDMzMFwwMDBcdTAxRUFcdTAzMjNcdTAzMDJcMDAwXHUwMEM3XHUwMzBDIisKKyAgICAgICAgIlwwMDBcdTAxNzNcdTAzMEFcMDAwXHUwMUVCXHUwMzBDXDAwMFx1MUU3M1x1MDMwQVwwMDBcdTFFRTVcdTAzMEFcMDAwXHUxRUNEIisKKyAgICAgICAgIlx1MDMwQ1wwMDBcdTAxQjBcdTAzMzBcMDAwXHUxRUUyXHUwMzAyXDAwMFx1MDFCMFx1MDMwQVwwMDBcdTAxQTFcdTAzMEMiKworICAgICAgICAiXDAwMFx1MUU3NFx1MDMwQVwwMDBcdTFFNzZcdTAzMEFcMDAwXHUwMTcyXHUwMzMwXDAwMFx1MDFFQlx1MDMwMlx1MDMwMyIrCisgICAgICAgICJcMDAwXHUwMEU3XHUwMzA3XDAwMFx1MDE3Mlx1MDMwQVwwMDBcdTAxRUFcdTAzMENcMDAwXHUxRUQ5XHUwMzAzXDAwMFx1MUU3MiIrCisgICAgICAgICJcdTAzMEFcMDAwXHUxRUU0XHUwMzBBXDAwMFx1MUVDQ1x1MDMwQ1wwMDBcdTAxQUZcdTAzMzBcMDAwXHUwMUExXHUwMzAyIisKKyAgICAgICAgIlx1MDMwM1wwMDBcdTAxQUZcdTAzMEFcMDAwXHUwMUEwXHUwMzBDXDAwMFx1MERERVx1MERDQVwwMDBcdTFFNzVcdTAzMDYiKworICAgICAgICAiXDAwMFx1MUUyRFx1MDMwQ1wwMDBcdTFFNzdcdTAzMDZcMDAwXHUwMTczXHUwMzI0XDAwMFx1MDFFQVx1MDMwMlx1MDMwMyIrCisgICAgICAgICJcMDAwXHUwMEM3XHUwMzA3XDAwMFx1MDE3M1x1MDMwNlwwMDBcdTAxMkZcdTAzMENcMDAwXHUxRUQ4XHUwMzAzXDAwMFx1MUU3MyIrCisgICAgICAgICJcdTAzMDZcMDAwXHUxRUU1XHUwMzA2XDAwMFx1MUVDQlx1MDMwQ1wwMDBcdTAxQjBcdTAzMjRcMDAwXHUxRUY1XHUwMzA0IisKKyAgICAgICAgIlwwMDBcdTAxQTBcdTAzMDJcdTAzMDNcMDAwXHUwMUIwXHUwMzA2XDAwMFx1MUU3NFx1MDMwNlwwMDBcdTFFMkNcdTAzMEMiKworICAgICAgICAiXDAwMFx1MUUxMVx1MDMzMVwwMDBcdTFFNzZcdTAzMDZcMDAwXHUwMTcyXHUwMzI0XDAwMFx1MDFFQlx1MDMwMlx1MDMwOSIrCisgICAgICAgICJcMDAwXHUwMEU3XHUwMzAyXDAwMFx1MDE3Mlx1MDMwNlwwMDBcdTAxMkVcdTAzMENcMDAwXHUxRUQ5XHUwMzA5XDAwMFx1MUU3MiIrCisgICAgICAgICJcdTAzMDZcMDAwXHUxRUU0XHUwMzA2XDAwMFx1MUVDQVx1MDMwQ1wwMDBcdTAxQUZcdTAzMjRcMDAwXHUxRUY0XHUwMzA0IisKKyAgICAgICAgIlwwMDBcdTAxQTFcdTAzMDJcdTAzMDlcMDAwXHUwMUFGXHUwMzA2XDAwMFx1MUU3NVx1MDMwNFwwMDBcdTFFMTBcdTAzMzEiKworICAgICAgICAiXDAwMFx1MUU3N1x1MDMwNFwwMDBcdTAxNjNcdTAzMkRcMDAwXHUwMUVBXHUwMzAyXHUwMzA5XDAwMFx1MDBDN1x1MDMwMiIrCisgICAgICAgICJcMDAwXHUwMTczXHUwMzA0XDAwMFx1MDEwNVx1MDMwQ1wwMDBcdTFFRDhcdTAzMDlcMDAwXHUxRTczXHUwMzA0XDAwMFx1MDFFQiIrCisgICAgICAgICJcdTAzMDdcdTAzMDRcMDAwXHUxRUU1XHUwMzA0XDAwMFx1MUUwMVx1MDMwQ1wwMDBcdTFFQTFcdTAzMENcMDAwXHUxRUNEIisKKyAgICAgICAgIlx1MDMwN1x1MDMwNFwwMDBcdTAxQTBcdTAzMDJcdTAzMDlcMDAwXHUwMUIwXHUwMzA0XDAwMFx1MDFBMVx1MDMwN1x1MDMwNCIrCisgICAgICAgICJcMDAwXHUxRTc0XHUwMzA0XDAwMFx1MUUxMVx1MDMyM1wwMDBcdTFFNzZcdTAzMDRcMDAwXHUwMTYyXHUwMzJEXDAwMFx1MDFFQiIrCisgICAgICAgICJcdTAzMDJcdTAzMDBcMDAwXHUwMTcyXHUwMzA0XDAwMFx1MDEwNFx1MDMwQ1wwMDBcdTFFRDlcdTAzMDBcMDAwXHUxRTcyIisKKyAgICAgICAgIlx1MDMwNFwwMDBcdTAxRUFcdTAzMDdcdTAzMDRcMDAwXHUxRUU0XHUwMzA0XDAwMFx1MUUwMFx1MDMwQ1wwMDBcdTFFQTAiKworICAgICAgICAiXHUwMzBDXDAwMFx1MUVDQ1x1MDMwN1x1MDMwNFwwMDBcdTAxQTFcdTAzMDJcdTAzMDBcMDAwXHUwMUFGXHUwMzA0XDAwMCIrCisgICAgICAgICJcdTAxQTBcdTAzMDdcdTAzMDRcMDAwXHUxRTc1XHUwMzAzXDAwMFx1MUUxMFx1MDMyM1wwMDBcdTFFNzdcdTAzMDNcMDAwIisKKyAgICAgICAgIlx1MDE2M1x1MDMzMVwwMDBcdTAxRUFcdTAzMDJcdTAzMDBcMDAwXHUwMTczXHUwMzAzXDAwMFx1MUVEOFx1MDMwMFwwMDAiKworICAgICAgICAiXHUxRTczXHUwMzAzXDAwMFx1MDFFQlx1MDMwN1wwMDBcdTFFRTVcdTAzMDNcMDAwXHUxRUNEXHUwMzA3XDAwMFx1MDFBMCIrCisgICAgICAgICJcdTAzMDJcdTAzMDBcMDAwXHUwMzhGXHUwMzQ1XDAwMFx1MUZGQVx1MDM0NVwwMDBcdTFFMEZcdTAzMDdcMDAwXHUwMUExIisKKyAgICAgICAgIlx1MDMwN1wwMDBcdTFFMTNcdTAzMDdcMDAwXHUxRTc0XHUwMzAzXDAwMFx1MUUxMVx1MDMwN1wwMDBcdTFFNzZcdTAzMDMiKworICAgICAgICAiXDAwMFx1MDE2Mlx1MDMzMVwwMDBcdTAxRUJcdTAzMDJcdTAzMDFcMDAwXHUxRTBEXHUwMzA3XDAwMFx1MDE3Mlx1MDMwMyIrCisgICAgICAgICJcMDAwXHUxRUQ5XHUwMzAxXDAwMFx1MUU3Mlx1MDMwM1wwMDBcdTAxRUFcdTAzMDdcMDAwXHUxRUU0XHUwMzAzXDAwMFx1MUVDQyIrCisgICAgICAgICJcdTAzMDdcMDAwXHUwMUExXHUwMzAyXHUwMzAxXDAwMFx1MUUwRVx1MDMwN1wwMDBcdTAxQTBcdTAzMDdcMDAwXHUxRTEyIisKKyAgICAgICAgIlx1MDMwN1wwMDBcdTFFMTBcdTAzMDdcMDAwXHUwMTYzXHUwMzIzXDAwMFx1MDFFQVx1MDMwMlx1MDMwMVwwMDBcdTFFMEMiKworICAgICAgICAiXHUwMzA3XDAwMFx1MUVEOFx1MDMwMVwwMDBcdTAxRUJcdTAzMDNcdTAzMDRcMDAwXHUxRUNEXHUwMzAzXHUwMzA0XDAwMCIrCisgICAgICAgICJcdTAxQTBcdTAzMDJcdTAzMDFcMDAwXHUxRUUxXHUwMzA0XDAwMFx1MDE2Mlx1MDMyM1wwMDBcdTAxRUJcdTAzMDlcMDAwIisKKyAgICAgICAgIlx1MDEwNVx1MDMwNlwwMDBcdTFFMDFcdTAzMDZcMDAwXHUxRUNEXHUwMzA5XDAwMFx1MDFFQVx1MDMwM1x1MDMwNFwwMDAiKworICAgICAgICAiXHUxRUNDXHUwMzAzXHUwMzA0XDAwMFx1MUU2Rlx1MDMwN1wwMDBcdTFFRTBcdTAzMDRcMDAwXHUxRTcxXHUwMzA3XDAwMCIrCisgICAgICAgICJcdTFFNkZcdTAzMENcMDAwXHUxRTcxXHUwMzBDXDAwMFx1MDE2M1x1MDMwN1wwMDBcdTAyMUJcdTAzMDdcMDAwXHUwMUVBIisKKyAgICAgICAgIlx1MDMwOVwwMDBcdTAxMDRcdTAzMDZcMDAwXHUxRTZEXHUwMzA3XDAwMFx1MUUwMFx1MDMwNlwwMDBcdTAxNjNcdTAzMEMiKworICAgICAgICAiXDAwMFx1MDIxQlx1MDMwQ1wwMDBcdTFFQ0NcdTAzMDlcMDAwXHUwMUVCXHUwMzA4XHUwMzA0XDAwMFx1MUU2RFx1MDMwQyIrCisgICAgICAgICJcMDAwXHUxRUNEXHUwMzA4XHUwMzA0XDAwMFx1MUU2RVx1MDMwN1wwMDBcdTAxQTFcdTAzMDhcdTAzMDRcMDAwXHUxRTcwIisKKyAgICAgICAgIlx1MDMwN1wwMDBcdTFFNkVcdTAzMENcMDAwXHUxRTcwXHUwMzBDXDAwMFx1MDE2Mlx1MDMwN1wwMDBcdTAyMUFcdTAzMDciKworICAgICAgICAiXDAwMFx1MDFFQlx1MDMyM1wwMDBcdTAxMDVcdTAzMDRcMDAwXHUxRTZDXHUwMzA3XDAwMFx1MUUwMVx1MDMwNFwwMDBcdTAxNjIiKworICAgICAgICAiXHUwMzBDXDAwMFx1MDIxQVx1MDMwQ1wwMDBcdTFFQTFcdTAzMDRcMDAwXHUwMUVBXHUwMzA4XHUwMzA0XDAwMFx1MUU2QyIrCisgICAgICAgICJcdTAzMENcMDAwXHUxRUNDXHUwMzA4XHUwMzA0XDAwMFx1MDFBMFx1MDMwOFx1MDMwNFwwMDBcdTAxNUZcdTAzMjNcdTAzMDciKworICAgICAgICAiXDAwMFx1MDFFQVx1MDMyM1wwMDBcdTAxMDRcdTAzMDRcMDAwXHUxRTAwXHUwMzA0XDAwMFx1MUVBMFx1MDMwNFwwMDBcdTAxNUUiKworICAgICAgICAiXHUwMzIzXHUwMzA3XDAwMFx1MDEyRlx1MDMyM1wwMDBcdTFFRjVcdTAzMDhcMDAwXHUwMTVGXHUwMzBDXHUwMzA3XDAwMCIrCisgICAgICAgICJcdTAyMTlcdTAzMENcdTAzMDdcMDAwXHUwMTJFXHUwMzIzXDAwMFx1MUU2M1x1MDMwQ1x1MDMwN1wwMDBcdTAxNUZcdTAzMEMiKworICAgICAgICAiXDAwMFx1MDIxOVx1MDMwQ1wwMDBcdTAxMDVcdTAzMDdcMDAwXHUxRTYzXHUwMzBDXDAwMFx1MUUwMVx1MDMwN1wwMDBcdTFFQTEiKworICAgICAgICAiXHUwMzA3XDAwMFx1MUUwN1x1MDMwN1wwMDBcdTFFMkRcdTAzMDlcMDAwXHUwMTVFXHUwMzBDXHUwMzA3XDAwMFx1MDIxOCIrCisgICAgICAgICJcdTAzMENcdTAzMDdcMDAwXHUwMTJGXHUwMzA5XDAwMFx1MUUwNVx1MDMwN1wwMDBcdTFFNjJcdTAzMENcdTAzMDdcMDAwIisKKyAgICAgICAgIlx1MDE1RVx1MDMwQ1wwMDBcdTAyMThcdTAzMENcMDAwXHUxRUNCXHUwMzA5XDAwMFx1MUVGNVx1MDMwMVwwMDBcdTAxMDQiKworICAgICAgICAiXHUwMzA3XDAwMFx1MUU2Mlx1MDMwQ1wwMDBcdTFFMDBcdTAzMDdcMDAwXHUxRUEwXHUwMzA3XDAwMFx1MUUwNlx1MDMwNyIrCisgICAgICAgICJcMDAwXHUxRTJDXHUwMzA5XDAwMFx1MUU3NVx1MDMwOFwwMDBcdTFFNzdcdTAzMDhcMDAwXHUwMTVGXHUwMzAxXHUwMzA3IisKKyAgICAgICAgIlwwMDBcdTAyMTlcdTAzMDFcdTAzMDdcMDAwXHUwMTJFXHUwMzA5XDAwMFx1MDE3M1x1MDMwOFwwMDBcdTFFMDRcdTAzMDciKworICAgICAgICAiXDAwMFx1MUU2M1x1MDMwMVx1MDMwN1wwMDBcdTFFNzNcdTAzMDhcMDAwXHUxRUNBXHUwMzA5XDAwMFx1MUVFNVx1MDMwOCIrCisgICAgICAgICJcMDAwXHUwMUIwXHUwMzA4XDAwMFx1MUU3NVx1MDMwMlwwMDBcdTFFNzdcdTAzMDJcMDAwXHUwMTA1XHUwMzI1XDAwMFx1MDE1RSIrCisgICAgICAgICJcdTAzMDFcdTAzMDdcMDAwXHUwMjE4XHUwMzAxXHUwMzA3XDAwMFx1MDExOVx1MDMyM1x1MDMwMlwwMDBcdTAxNzNcdTAzMDIiKworICAgICAgICAiXDAwMFx1MDIyOVx1MDMyM1x1MDMwMlwwMDBcdTFFNjJcdTAzMDFcdTAzMDdcMDAwXHUxRTczXHUwMzAyXDAwMFx1MUVFNSIrCisgICAgICAgICJcdTAzMDJcMDAwXHUwMUIwXHUwMzAyXDAwMFx1MUU3NVx1MDMwMVwwMDBcdTFFNzdcdTAzMDFcMDAwXHUwMTA0XHUwMzI1IisKKyAgICAgICAgIlwwMDBcdTAxNUZcdTAzMjNcMDAwXHUwMTE4XHUwMzIzXHUwMzAyXDAwMFx1MDE3M1x1MDMwMVwwMDBcdTAyMjhcdTAzMjMiKworICAgICAgICAiXHUwMzAyXDAwMFx1MDE1Rlx1MDMwMlwwMDBcdTFFNzNcdTAzMDFcMDAwXHUwMjE5XHUwMzAyXDAwMFx1MUVFNVx1MDMwMSIrCisgICAgICAgICJcMDAwXHUxRTYzXHUwMzAyXDAwMFx1MUUxQlx1MDMwMlx1MDMwM1wwMDBcdTFFNzVcdTAzMDBcMDAwXHUxRTE5XHUwMzAyIisKKyAgICAgICAgIlx1MDMwM1wwMDBcdTFFNzdcdTAzMDBcMDAwXHUwMTVFXHUwMzIzXDAwMFx1MDExOVx1MDMwMlx1MDMwM1wwMDBcdTAxNzMiKworICAgICAgICAiXHUwMzAwXDAwMFx1MDIyOVx1MDMwMlx1MDMwM1wwMDBcdTAxNUVcdTAzMDJcMDAwXHUxRTczXHUwMzAwXDAwMFx1MDIxOCIrCisgICAgICAgICJcdTAzMDJcMDAwXHUxRUM3XHUwMzAzXDAwMFx1MUVFNVx1MDMwMFwwMDBcdTFFNjJcdTAzMDJcMDAwXHUxRTFBXHUwMzAyIisKKyAgICAgICAgIlx1MDMwM1wwMDBcdTFFMThcdTAzMDJcdTAzMDNcMDAwXHUwMTVGXHUwMzA3XDAwMFx1MDIxOVx1MDMwN1wwMDBcdTAxMTgiKworICAgICAgICAiXHUwMzAyXHUwMzAzXDAwMFx1MDIyOFx1MDMwMlx1MDMwM1wwMDBcdTAxNUZcdTAzMDFcMDAwXHUwMjE5XHUwMzAxXDAwMCIrCisgICAgICAgICJcdTFFQzZcdTAzMDNcMDAwXHUxRTYzXHUwMzAxXDAwMFx1MUUxQlx1MDMwMlx1MDMwOVwwMDBcdTFFMTlcdTAzMDJcdTAzMDkiKworICAgICAgICAiXDAwMFx1MDE1RVx1MDMwN1wwMDBcdTAyMThcdTAzMDdcMDAwXHUwMTE5XHUwMzAyXHUwMzA5XDAwMFx1MDIyOVx1MDMwMiIrCisgICAgICAgICJcdTAzMDlcMDAwXHUwMTVFXHUwMzAxXDAwMFx1MDIxOFx1MDMwMVwwMDBcdTFFQzdcdTAzMDlcMDAwXHUxRTYyXHUwMzAxIisKKyAgICAgICAgIlwwMDBcdTFFMUFcdTAzMDJcdTAzMDlcMDAwXHUxRTVGXHUwMzBDXDAwMFx1MUUxOFx1MDMwMlx1MDMwOVwwMDBcdTFFOTYiKworICAgICAgICAiXHUwMzBDXDAwMFx1MDE1N1x1MDMzMVwwMDBcdTAxMThcdTAzMDJcdTAzMDlcMDAwXHUwMUVCXHUwMzA4XDAwMFx1MUUyQiIrCisgICAgICAgICJcdTAzMENcMDAwXHUwMjI4XHUwMzAyXHUwMzA5XDAwMFx1MDE1N1x1MDMwQ1wwMDBcdTFFQzZcdTAzMDlcMDAwXHUxRUNEIisKKyAgICAgICAgIlx1MDMwOFwwMDBcdTFFNUJcdTAzMENcMDAwXHUxRTI5XHUwMzBDXDAwMFx1MUUyNVx1MDMwQ1wwMDBcdTAxQTFcdTAzMDgiKworICAgICAgICAiXDAwMFx1MUUxQlx1MDMwMlx1MDMwMFwwMDBcdTFFNUVcdTAzMENcMDAwXHUxRTE5XHUwMzAyXHUwMzAwXDAwMFx1MDE1NiIrCisgICAgICAgICJcdTAzMzFcMDAwXHUwMTE5XHUwMzAyXHUwMzAwXDAwMFx1MDFFQlx1MDMwM1wwMDBcdTFFMkFcdTAzMENcMDAwXHUwMjI5IisKKyAgICAgICAgIlx1MDMwMlx1MDMwMFwwMDBcdTAxNTZcdTAzMENcMDAwXHUxRUM3XHUwMzAwXDAwMFx1MUVDRFx1MDMwM1wwMDBcdTFFNUEiKworICAgICAgICAiXHUwMzBDXDAwMFx1MUUyOFx1MDMwQ1wwMDBcdTFFMjRcdTAzMENcMDAwXHUxRTFBXHUwMzAyXHUwMzAwXDAwMFx1MUUxOCIrCisgICAgICAgICJcdTAzMDJcdTAzMDBcMDAwXHUwMTU3XHUwMzIzXHUwMzA0XDAwMFx1MDExOFx1MDMwMlx1MDMwMFwwMDBcdTAxRUJcdTAzMDIiKworICAgICAgICAiXDAwMFx1MDIyOFx1MDMwMlx1MDMwMFwwMDBcdTFFQzZcdTAzMDBcMDAwXHUwMUExXHUwMzAyXDAwMFx1MUUxQlx1MDMwMiIrCisgICAgICAgICJcdTAzMDFcMDAwXHUxRTE5XHUwMzAyXHUwMzAxXDAwMFx1MDE1Nlx1MDMyM1x1MDMwNFwwMDBcdTAxMTlcdTAzMDJcdTAzMDEiKworICAgICAgICAiXDAwMFx1MDFFQlx1MDMwMVwwMDBcdTAyMjlcdTAzMDJcdTAzMDFcMDAwXHUxRUM3XHUwMzAxXDAwMFx1MUVDRFx1MDMwMSIrCisgICAgICAgICJcMDAwXHUxRTFBXHUwMzAyXHUwMzAxXDAwMFx1MUU1Rlx1MDMwMVwwMDBcdTFFMThcdTAzMDJcdTAzMDFcMDAwXHUwMTU3IisKKyAgICAgICAgIlx1MDMyM1wwMDBcdTAxMThcdTAzMDJcdTAzMDFcMDAwXHUwMUVCXHUwMzAwXDAwMFx1MDIyOFx1MDMwMlx1MDMwMVwwMDAiKworICAgICAgICAiXHUwMTU3XHUwMzAxXDAwMFx1MUVDNlx1MDMwMVwwMDBcdTFFQ0RcdTAzMDBcMDAwXHUxRTVCXHUwMzAxXDAwMFx1MDE2MyIrCisgICAgICAgICJcdTAzMjZcMDAwXHUxRTQ5XHUwMzAzXDAwMFx1MUUxQlx1MDMwM1wwMDBcdTFFNUVcdTAzMDFcMDAwXHUxRTE5XHUwMzAzIisKKyAgICAgICAgIlwwMDBcdTFFNEJcdTAzMDNcMDAwXHUwMTU2XHUwMzIzXDAwMFx1MDExOVx1MDMwM1wwMDBcdTAyMjlcdTAzMDNcMDAwXHUwMTQ2IisKKyAgICAgICAgIlx1MDMwM1wwMDBcdTAxNTZcdTAzMDFcMDAwXHUxRUI5XHUwMzAzXDAwMFx1MUU0N1x1MDMwM1wwMDBcdTFFNUFcdTAzMDEiKworICAgICAgICAiXDAwMFx1MDE2Mlx1MDMyNlwwMDBcdTFFNUZcdTAzMDdcMDAwXHUxRTFBXHUwMzAzXDAwMFx1MUUxOFx1MDMwM1wwMDBcdTAxNTciKworICAgICAgICAiXHUwMzA3XDAwMFx1MDExOFx1MDMwM1wwMDBcdTAyMjhcdTAzMDNcMDAwXHUxRTVCXHUwMzA3XDAwMFx1MUVCOFx1MDMwMyIrCisgICAgICAgICJcMDAwXHUwMTVGXHUwMzI2XDAwMFx1MUU1RVx1MDMwN1wwMDBcdTFFMUJcdTAzMDlcMDAwXHUxRTJEXHUwMzA4XDAwMFx1MUUxOSIrCisgICAgICAgICJcdTAzMDlcMDAwXHUwMTU2XHUwMzA3XDAwMFx1MDExOVx1MDMwOVwwMDBcdTAxMkZcdTAzMDhcMDAwXHUwMjI5XHUwMzA5IisKKyAgICAgICAgIlwwMDBcdTFFNUFcdTAzMDdcMDAwXHUxRUI5XHUwMzA5XDAwMFx1MUVDQlx1MDMwOFwwMDBcdTAxNUVcdTAzMjZcMDAwXHUxRTFBIisKKyAgICAgICAgIlx1MDMwOVwwMDBcdTFFMkRcdTAzMDJcMDAwXHUxRTE4XHUwMzA5XDAwMFx1MUU3NVx1MDMxMVwwMDBcdTAxMThcdTAzMDkiKworICAgICAgICAiXDAwMFx1MDEyRlx1MDMwMlwwMDBcdTAyMjhcdTAzMDlcMDAwXHUxRTc3XHUwMzExXDAwMFx1MDFFQlx1MDMwQlwwMDBcdTFFQjgiKworICAgICAgICAiXHUwMzA5XDAwMFx1MUVDQlx1MDMwMlwwMDBcdTAxNzNcdTAzMTFcMDAwXHUxRUNEXHUwMzBCXDAwMFx1MUU3M1x1MDMxMSIrCisgICAgICAgICJcMDAwXHUxRUU1XHUwMzExXDAwMFx1MDFBMVx1MDMwQlwwMDBcdTAxQjBcdTAzMTFcMDAwXHUxRTJEXHUwMzAxXDAwMFx1MUU3NCIrCisgICAgICAgICJcdTAzMTFcMDAwXHUwMTE5XHUwMzIzXDAwMFx1MDEyRlx1MDMwMVwwMDBcdTAyMjlcdTAzMjNcMDAwXHUxRTc2XHUwMzExIisKKyAgICAgICAgIlwwMDBcdTAxRUFcdTAzMEJcMDAwXHUxRUNCXHUwMzAxXDAwMFx1MDE3Mlx1MDMxMVwwMDBcdTFFQ0NcdTAzMEJcMDAwXHUxRTcyIisKKyAgICAgICAgIlx1MDMxMVwwMDBcdTFFRTRcdTAzMTFcMDAwXHUwMUEwXHUwMzBCXDAwMFx1MDFBRlx1MDMxMVwwMDBcdTFFMkRcdTAzMDAiKworICAgICAgICAiXDAwMFx1MUU3NVx1MDMwRlwwMDBcdTAxMThcdTAzMjNcMDAwXHUwMTJGXHUwMzAwXDAwMFx1MDIyOFx1MDMyM1wwMDBcdTFFNzciKworICAgICAgICAiXHUwMzBGXDAwMFx1MDFFQlx1MDMwNlwwMDBcdTFFQ0JcdTAzMDBcMDAwXHUwMTczXHUwMzBGXDAwMFx1MUVDRFx1MDMwNiIrCisgICAgICAgICJcMDAwXHUxRTczXHUwMzBGXDAwMFx1MUVFNVx1MDMwRlwwMDBcdTAxQTFcdTAzMDZcMDAwXHUwMUIwXHUwMzBGXDAwMFx1MUUxQiIrCisgICAgICAgICJcdTAzMDhcMDAwXHUxRTE5XHUwMzA4XDAwMFx1MUU3NFx1MDMwRlwwMDBcdTAxMDVcdTAzMjNcdTAzMDZcMDAwXHUwMTE5IisKKyAgICAgICAgIlx1MDMwOFwwMDBcdTAyMjlcdTAzMDhcMDAwXHUxRTc2XHUwMzBGXDAwMFx1MDFFQVx1MDMwNlwwMDBcdTFFQjlcdTAzMDgiKworICAgICAgICAiXDAwMFx1MDE3Mlx1MDMwRlwwMDBcdTFFQ0NcdTAzMDZcMDAwXHUxRTcyXHUwMzBGXDAwMFx1MUVFNFx1MDMwRlwwMDBcdTAxQTAiKworICAgICAgICAiXHUwMzA2XDAwMFx1MDFBRlx1MDMwRlwwMDBcdTFFMUJcdTAzMDJcMDAwXHUxRTE5XHUwMzAyXDAwMFx1MUU1Rlx1MDMxMSIrCisgICAgICAgICJcMDAwXHUwMUVEXHUwMzAxXDAwMFx1MDEwNFx1MDMyM1x1MDMwNlwwMDBcdTAxMTlcdTAzMDJcMDAwXHUwMjI5XHUwMzAyIisKKyAgICAgICAgIlwwMDBcdTFFQ0RcdTAzMDRcdTAzMDFcMDAwXHUwMTczXHUwMzFCXDAwMFx1MUVDRFx1MDMwNFwwMDBcdTAxNTdcdTAzMTEiKworICAgICAgICAiXDAwMFx1MDFBMVx1MDMwNFx1MDMwMVwwMDBcdTFFNUJcdTAzMTFcMDAwXHUwMUExXHUwMzA0XDAwMFx1MUUxQlx1MDMwMSIrCisgICAgICAgICJcMDAwXHUxRTE5XHUwMzAxXDAwMFx1MUU1RVx1MDMxMVwwMDBcdTAxRUNcdTAzMDFcMDAwXHUwMTA1XHUwMzA2XHUwMzAzIisKKyAgICAgICAgIlwwMDBcdTAxMTlcdTAzMDFcMDAwXHUwMjI5XHUwMzAxXDAwMFx1MUVDQ1x1MDMwNFx1MDMwMVwwMDBcdTFFMDFcdTAzMDYiKworICAgICAgICAiXHUwMzAzXDAwMFx1MDE3Mlx1MDMxQlwwMDBcdTFFQjdcdTAzMDNcMDAwXHUxRUI5XHUwMzAxXDAwMFx1MUVDQ1x1MDMwNCIrCisgICAgICAgICJcMDAwXHUwMTU2XHUwMzExXDAwMFx1MDFBMFx1MDMwNFx1MDMwMVwwMDBcdTFFNUFcdTAzMTFcMDAwXHUwMUEwXHUwMzA0IisKKyAgICAgICAgIlwwMDBcdTFFMUJcdTAzMDBcMDAwXHUxRTE5XHUwMzAwXDAwMFx1MUU1Rlx1MDMwRlwwMDBcdTAxRURcdTAzMDBcMDAwXHUwMTA0IisKKyAgICAgICAgIlx1MDMwNlx1MDMwM1wwMDBcdTAxMTlcdTAzMDBcMDAwXHUwMjI5XHUwMzAwXDAwMFx1MUVDRFx1MDMwNFx1MDMwMFwwMDAiKworICAgICAgICAiXHUxRTAwXHUwMzA2XHUwMzAzXDAwMFx1MUVCNlx1MDMwM1wwMDBcdTFFQjlcdTAzMDBcMDAwXHUwMTU3XHUwMzBGXDAwMCIrCisgICAgICAgICJcdTAxQTFcdTAzMDRcdTAzMDBcMDAwXHUxRTVCXHUwMzBGXDAwMFx1MUU1RVx1MDMwRlwwMDBcdTAxRUNcdTAzMDBcMDAwIisKKyAgICAgICAgIlx1MDEwNVx1MDMwNlx1MDMwOVwwMDBcdTFFQ0NcdTAzMDRcdTAzMDBcMDAwXHUxRTAxXHUwMzA2XHUwMzA5XDAwMFx1MUVCNyIrCisgICAgICAgICJcdTAzMDlcMDAwXHUwMTU2XHUwMzBGXDAwMFx1MDFBMFx1MDMwNFx1MDMwMFwwMDBcdTFFNUFcdTAzMEZcMDAwXHUwMUVCIisKKyAgICAgICAgIlx1MDMwM1x1MDMwOFwwMDBcdTAxMDRcdTAzMDZcdTAzMDlcMDAwXHUxRUNEXHUwMzAzXHUwMzA4XDAwMFx1MUUwMFx1MDMwNiIrCisgICAgICAgICJcdTAzMDlcMDAwXHUxRUI2XHUwMzA5XDAwMFx1MDFFQlx1MDMxMVwwMDBcdTFFRTFcdTAzMDhcMDAwXHUxRUNEXHUwMzExIisKKyAgICAgICAgIlwwMDBcdTAxQTFcdTAzMTFcMDAwXHUxRTQ5XHUwMzBDXDAwMFx1MUU0Qlx1MDMwQ1wwMDBcdTAxRUFcdTAzMDNcdTAzMDgiKworICAgICAgICAiXDAwMFx1MDEwNVx1MDMwNlx1MDMwMFwwMDBcdTAxMDVcdTAzMEFcMDAwXHUxRUNDXHUwMzAzXHUwMzA4XDAwMFx1MUUwMSIrCisgICAgICAgICJcdTAzMDZcdTAzMDBcMDAwXHUxRTAxXHUwMzBBXDAwMFx1MDE0Nlx1MDMwQ1wwMDBcdTFFQjdcdTAzMDBcMDAwXHUxRUExIisKKyAgICAgICAgIlx1MDMwQVwwMDBcdTAxRUFcdTAzMTFcMDAwXHUxRTQ3XHUwMzBDXDAwMFx1MUVFMFx1MDMwOFwwMDBcdTFFQ0NcdTAzMTEiKworICAgICAgICAiXDAwMFx1MDFBMFx1MDMxMVwwMDBcdTFFNDhcdTAzMENcMDAwXHUxRTRBXHUwMzBDXDAwMFx1MDFFQlx1MDMwM1x1MDMwMSIrCisgICAgICAgICJcMDAwXHUwMTA0XHUwMzA2XHUwMzAwXDAwMFx1MDEwNVx1MDMwOFwwMDBcdTFFQ0RcdTAzMDNcdTAzMDFcMDAwXHUxRTAwIisKKyAgICAgICAgIlx1MDMwNlx1MDMwMFwwMDBcdTFFMDFcdTAzMDhcMDAwXHUwMTQ1XHUwMzBDXDAwMFx1MUVCNlx1MDMwMFwwMDBcdTFFQTEiKworICAgICAgICAiXHUwMzA4XDAwMFx1MDFFQlx1MDMwRlwwMDBcdTFFNDZcdTAzMENcMDAwXHUxRUUxXHUwMzAxXDAwMFx1MUVDRFx1MDMwRiIrCisgICAgICAgICJcMDAwXHUwMUExXHUwMzBGXDAwMFx1MDFFQVx1MDMwM1x1MDMwMVwwMDBcdTAxMDVcdTAzMDZcdTAzMDFcMDAwXHUwMTA1IisKKyAgICAgICAgIlx1MDMwM1wwMDBcdTFFQ0NcdTAzMDNcdTAzMDFcMDAwXHUxRTAxXHUwMzA2XHUwMzAxXDAwMFx1MUUwMVx1MDMwM1wwMDAiKworICAgICAgICAiXHUxRUI3XHUwMzAxXDAwMFx1MUVBMVx1MDMwM1wwMDBcdTAxRUFcdTAzMEZcMDAwXHUxRUUwXHUwMzAxXDAwMFx1MUVDQyIrCisgICAgICAgICJcdTAzMEZcMDAwXHUwMUEwXHUwMzBGXDAwMFx1MUUyRFx1MDMxMVwwMDBcdTAxNDZcdTAzMkRcMDAwXHUwMTA0XHUwMzA2IisKKyAgICAgICAgIlx1MDMwMVwwMDBcdTAxMDVcdTAzMDJcMDAwXHUxRTAwXHUwMzA2XHUwMzAxXDAwMFx1MUUwMVx1MDMwMlwwMDBcdTFFQjYiKworICAgICAgICAiXHUwMzAxXDAwMFx1MDEyRlx1MDMxMVwwMDBcdTFFQ0JcdTAzMTFcMDAwXHUxRTQ5XHUwMzAxXDAwMFx1MUU0Qlx1MDMwMSIrCisgICAgICAgICJcMDAwXHUxRTJDXHUwMzExXDAwMFx1MDE0NVx1MDMyRFwwMDBcdTAxMDVcdTAzMjNcdTAzMDJcMDAwXHUwMTA1XHUwMzAxIisKKyAgICAgICAgIlwwMDBcdTFFMDFcdTAzMDFcMDAwXHUwMTQ2XHUwMzAxXDAwMFx1MUVBMVx1MDMwMVwwMDBcdTAxMkVcdTAzMTFcMDAwXHUxRTQ3IisKKyAgICAgICAgIlx1MDMwMVwwMDBcdTFFQ0FcdTAzMTFcMDAwXHUxRTQ4XHUwMzAxXDAwMFx1MUU0QVx1MDMwMVwwMDBcdTFFMkRcdTAzMEYiKworICAgICAgICAiXDAwMFx1MDE0Nlx1MDMzMVwwMDBcdTAxMDRcdTAzMjNcdTAzMDJcMDAwXHUwMTA1XHUwMzAwXDAwMFx1MUUwMVx1MDMwMCIrCisgICAgICAgICJcMDAwXHUwMTQ1XHUwMzAxXDAwMFx1MUVBMVx1MDMwMFwwMDBcdTAxMkZcdTAzMEZcMDAwXHUxRTQ2XHUwMzAxXDAwMFx1MUVDQiIrCisgICAgICAgICJcdTAzMEZcMDAwXHUxRTJDXHUwMzBGXDAwMFx1MDE0NVx1MDMzMVwwMDBcdTAxMDVcdTAzMDJcdTAzMDNcMDAwXHUxRTAxIisKKyAgICAgICAgIlx1MDMwMlx1MDMwM1wwMDBcdTFFQURcdTAzMDNcMDAwXHUwMTJFXHUwMzBGXDAwMFx1MUVDQVx1MDMwRlwwMDBcdTFFMUIiKworICAgICAgICAiXHUwMzExXDAwMFx1MDE0Nlx1MDMyM1wwMDBcdTAxMDRcdTAzMDJcdTAzMDNcMDAwXHUxRTE5XHUwMzExXDAwMFx1MUUwMCIrCisgICAgICAgICJcdTAzMDJcdTAzMDNcMDAwXHUxRUFDXHUwMzAzXDAwMFx1MDExOVx1MDMxMVwwMDBcdTAyMjlcdTAzMTFcMDAwXHUxRUI5IisKKyAgICAgICAgIlx1MDMxMVwwMDBcdTAxNDVcdTAzMjNcMDAwXHUxRTFBXHUwMzExXDAwMFx1MDEwNVx1MDMwMlx1MDMwOVwwMDBcdTFFMTgiKworICAgICAgICAiXHUwMzExXDAwMFx1MUUwMVx1MDMwMlx1MDMwOVwwMDBcdTFFQURcdTAzMDlcMDAwXHUxRUY0XHUwMzAxXDAwMFx1MDExOCIrCisgICAgICAgICJcdTAzMTFcMDAwXHUwMjI4XHUwMzExXDAwMFx1MUVCOFx1MDMxMVwwMDBcdTFFNDlcdTAzMDdcMDAwXHUxRTRCXHUwMzA3IisKKyAgICAgICAgIlwwMDBcdTFFNzRcdTAzMDhcMDAwXHUxRTc2XHUwMzA4XDAwMFx1MDE0Nlx1MDMwN1wwMDBcdTFFMUJcdTAzMEZcMDAwXHUwMTA0IisKKyAgICAgICAgIlx1MDMwMlx1MDMwOVwwMDBcdTAxNzJcdTAzMDhcMDAwXHUxRTE5XHUwMzBGXDAwMFx1MUU0N1x1MDMwN1wwMDBcdTFFMDAiKworICAgICAgICAiXHUwMzAyXHUwMzA5XDAwMFx1MUVBQ1x1MDMwOVwwMDBcdTFFNzJcdTAzMDhcMDAwXHUxRUU0XHUwMzA4XDAwMFx1MDExOSIrCisgICAgICAgICJcdTAzMEZcMDAwXHUwMjI5XHUwMzBGXDAwMFx1MUVCOVx1MDMwRlwwMDBcdTAxQUZcdTAzMDhcMDAwXHUxRTQ4XHUwMzA3IisKKyAgICAgICAgIlwwMDBcdTFFNEFcdTAzMDdcMDAwXHUxRTc0XHUwMzAyXDAwMFx1MUUzQlx1MDMwQ1wwMDBcdTFFNzZcdTAzMDJcMDAwXHUxRTNEIisKKyAgICAgICAgIlx1MDMwQ1wwMDBcdTAxNDVcdTAzMDdcMDAwXHUxRTFBXHUwMzBGXDAwMFx1MDEwNVx1MDMwMlx1MDMwMFwwMDBcdTAxNzIiKworICAgICAgICAiXHUwMzAyXDAwMFx1MUUxOFx1MDMwRlwwMDBcdTFFNDZcdTAzMDdcMDAwXHUxRTAxXHUwMzAyXHUwMzAwXDAwMFx1MDEzQyIrCisgICAgICAgICJcdTAzMENcMDAwXHUxRTcyXHUwMzAyXDAwMFx1MDFFQlx1MDMxQlwwMDBcdTFFQURcdTAzMDBcMDAwXHUxRUU0XHUwMzAyIisKKyAgICAgICAgIlwwMDBcdTAxMThcdTAzMEZcMDAwXHUxRTM3XHUwMzBDXDAwMFx1MDIyOFx1MDMwRlwwMDBcdTFFQjhcdTAzMEZcMDAwXHUwMUFGIisKKyAgICAgICAgIlx1MDMwMlwwMDBcdTFFNzRcdTAzMDFcMDAwXHUxRTNBXHUwMzBDXDAwMFx1MUU3Nlx1MDMwMVwwMDBcdTFFM0NcdTAzMEMiKworICAgICAgICAiXDAwMFx1MDEwNFx1MDMwMlx1MDMwMFwwMDBcdTAxNzJcdTAzMDFcMDAwXHUxRTAwXHUwMzAyXHUwMzAwXDAwMFx1MDEzQiIrCisgICAgICAgICJcdTAzMENcMDAwXHUxRTcyXHUwMzAxXDAwMFx1MDFFQVx1MDMxQlwwMDBcdTFFQUNcdTAzMDBcMDAwXHUxRUU0XHUwMzAxIisKKyAgICAgICAgIlwwMDBcdTAxMDVcdTAzMTFcMDAwXHUxRTM2XHUwMzBDXDAwMFx1MUUwMVx1MDMxMVwwMDBcdTFFQTFcdTAzMTFcMDAwXHUxRTc0IisKKyAgICAgICAgIlx1MDMwMFwwMDBcdTFFNzZcdTAzMDBcMDAwXHUwMTA1XHUwMzAyXHUwMzAxXDAwMFx1MDE3Mlx1MDMwMFwwMDBcdTFFMDEiKworICAgICAgICAiXHUwMzAyXHUwMzAxXDAwMFx1MUU3Mlx1MDMwMFwwMDBcdTFFQURcdTAzMDFcMDAwXHUxRUU0XHUwMzAwXDAwMFx1MDEwNCIrCisgICAgICAgICJcdTAzMTFcMDAwXHUxRTAwXHUwMzExXDAwMFx1MUVBMFx1MDMxMVwwMDBcdTAxMDRcdTAzMDJcdTAzMDFcMDAwXHUxRTQzIisKKyAgICAgICAgIlx1MDMwN1wwMDBcdTFFMDBcdTAzMDJcdTAzMDFcMDAwXHUxRUFDXHUwMzAxXDAwMFx1MDEwNVx1MDMwRlwwMDBcdTFFMDEiKworICAgICAgICAiXHUwMzBGXDAwMFx1MUVBMVx1MDMwRlwwMDBcdTFFM0JcdTAzMDFcMDAwXHUxRTNEXHUwMzAxXDAwMFx1MDEwNVx1MDMwOSIrCisgICAgICAgICJcMDAwXHUxRTQyXHUwMzA3XDAwMFx1MUUwMVx1MDMwOVwwMDBcdTAxM0NcdTAzMDFcMDAwXHUxRUExXHUwMzA5XDAwMFx1MDEwNCIrCisgICAgICAgICJcdTAzMEZcMDAwXHUxRTM3XHUwMzAxXDAwMFx1MUUwMFx1MDMwRlwwMDBcdTFFQTBcdTAzMEZcMDAwXHUxRTNBXHUwMzAxIisKKyAgICAgICAgIlwwMDBcdTFFM0NcdTAzMDFcMDAwXHUwMTA0XHUwMzA5XDAwMFx1MDFFQVx1MDMwOFwwMDBcdTFFNDNcdTAzMDFcMDAwXHUxRTAwIisKKyAgICAgICAgIlx1MDMwOVwwMDBcdTAxM0JcdTAzMDFcMDAwXHUxRUEwXHUwMzA5XDAwMFx1MUVDQ1x1MDMwOFwwMDBcdTFFMzZcdTAzMDEiKworICAgICAgICAiXDAwMFx1MDFBMFx1MDMwOFwwMDBcdTAzODlcdTAzNDVcMDAwXHUxRkNBXHUwMzQ1XDAwMFx1MDEwNVx1MDMyM1wwMDBcdTAxRUEiKworICAgICAgICAiXHUwMzAzXDAwMFx1MUU0Mlx1MDMwMVwwMDBcdTFFQ0NcdTAzMDNcMDAwXHUwMTNDXHUwMzJEXDAwMFx1MDEwNFx1MDMyMyIrCisgICAgICAgICJcMDAwXHUwMUVBXHUwMzAyXDAwMFx1MDFBMFx1MDMwMlwwMDBcdTAxM0JcdTAzMkRcMDAwXHUwMUVBXHUwMzAxXDAwMFx1MUVDQyIrCisgICAgICAgICJcdTAzMDFcMDAwXHUwNjI1XHUwNjU0XDAwMFx1MDEzQ1x1MDMzMVwwMDBcdTAxRUFcdTAzMDBcMDAwXHUxRUNDXHUwMzAwIisKKyAgICAgICAgIlwwMDBcdTAxMDVcdTAzMEFcdTAzMDFcMDAwXHUxRTAxXHUwMzBBXHUwMzAxXDAwMFx1MUVBMVx1MDMwQVx1MDMwMVwwMDAiKworICAgICAgICAiXHUwNjI1XHUwNjUzXDAwMFx1MUU0OFx1MDMwM1wwMDBcdTFFNEFcdTAzMDNcMDAwXHUwMTNCXHUwMzMxXDAwMFx1MDE0NSIrCisgICAgICAgICJcdTAzMDNcMDAwXHUxRTQ2XHUwMzAzXDAwMFx1MDEwNFx1MDMwQVx1MDMwMVwwMDBcdTFFMDBcdTAzMEFcdTAzMDFcMDAwIisKKyAgICAgICAgIlx1MUVBMFx1MDMwQVx1MDMwMVwwMDBcdTFFNDlcdTAzMDBcMDAwXHUwMTNDXHUwMzIzXHUwMzA0XDAwMFx1MUU0Qlx1MDMwMCIrCisgICAgICAgICJcMDAwXHUwMTQ2XHUwMzAwXDAwMFx1MUU0N1x1MDMwMFwwMDBcdTFFMkNcdTAzMDhcMDAwXHUxRTQ4XHUwMzAwXDAwMFx1MDEzQiIrCisgICAgICAgICJcdTAzMjNcdTAzMDRcMDAwXHUwMTJFXHUwMzA4XDAwMFx1MUU0QVx1MDMwMFwwMDBcdTFFQ0FcdTAzMDhcMDAwXHUwMTQ1IisKKyAgICAgICAgIlx1MDMwMFwwMDBcdTFFNDZcdTAzMDBcMDAwXHUxRTJDXHUwMzAyXDAwMFx1MDEzQ1x1MDMyM1wwMDBcdTAxMkVcdTAzMDIiKworICAgICAgICAiXDAwMFx1MUVDQVx1MDMwMlwwMDBcdTFFMkNcdTAzMDFcMDAwXHUxRTJDXHUwMzA3XDAwMFx1MDEzQlx1MDMyM1wwMDBcdTAxMkUiKworICAgICAgICAiXHUwMzAxXDAwMFx1MDEyRVx1MDMwN1wwMDBcdTFFRjVcdTAzMEFcMDAwXHUxRUNBXHUwMzAxXDAwMFx1MUVDQVx1MDMwNyIrCisgICAgICAgICJcMDAwXHUxRTJDXHUwMzAwXDAwMFx1MDEzN1x1MDMzMVwwMDBcdTAxMkVcdTAzMDBcMDAwXHUxRTg5XHUwMzBBXDAwMFx1MUVDQSIrCisgICAgICAgICJcdTAzMDBcMDAwXHUwMTIzXHUwMzAxXDAwMFx1MUU2Rlx1MDMwOFwwMDBcdTFFMUFcdTAzMDhcMDAwXHUxRTcxXHUwMzA4IisKKyAgICAgICAgIlwwMDBcdTFFMThcdTAzMDhcMDAwXHUwMTM2XHUwMzMxXDAwMFx1MDExOFx1MDMwOFwwMDBcdTAxNjNcdTAzMDhcMDAwXHUwMjI4IisKKyAgICAgICAgIlx1MDMwOFwwMDBcdTAyMUJcdTAzMDhcMDAwXHUxRTZEXHUwMzA4XDAwMFx1MUVCOFx1MDMwOFwwMDBcdTAxMjJcdTAzMDEiKworICAgICAgICAiXDAwMFx1MUUxQVx1MDMwMlwwMDBcdTFFMkRcdTAzMDZcMDAwXHUxRTE4XHUwMzAyXDAwMFx1MDEzN1x1MDMyM1wwMDBcdTAxMTgiKworICAgICAgICAiXHUwMzAyXDAwMFx1MUUyOVx1MDMzMVwwMDBcdTAyMjhcdTAzMDJcMDAwXHUwMTJGXHUwMzA2XDAwMFx1MUVGNVx1MDMwMyIrCisgICAgICAgICJcMDAwXHUxRUNCXHUwMzA2XDAwMFx1MUUxQVx1MDMwMVwwMDBcdTFFMkNcdTAzMDZcMDAwXHUxRTE4XHUwMzAxXDAwMFx1MDEzNiIrCisgICAgICAgICJcdTAzMjNcMDAwXHUwMTE4XHUwMzAxXDAwMFx1MDIyOFx1MDMwMVwwMDBcdTAxMkVcdTAzMDZcMDAwXHUxRUI4XHUwMzAxIisKKyAgICAgICAgIlwwMDBcdTFFRjRcdTAzMDNcMDAwXHUxRUNBXHUwMzA2XDAwMFx1MUUzNVx1MDMwMVwwMDBcdTFFMUFcdTAzMDBcMDAwXHUxRTJEIisKKyAgICAgICAgIlx1MDMwNFwwMDBcdTFFMThcdTAzMDBcMDAwXHUwMTM3XHUwMzAxXDAwMFx1MDExOFx1MDMwMFwwMDBcdTAyMjhcdTAzMDAiKworICAgICAgICAiXDAwMFx1MDEyRlx1MDMwNFwwMDBcdTFFMzNcdTAzMDFcMDAwXHUxRUI4XHUwMzAwXDAwMFx1MUVGNVx1MDMwOVwwMDBcdTFFQ0IiKworICAgICAgICAiXHUwMzA0XDAwMFx1MUUzNFx1MDMwMVwwMDBcdTFFMkNcdTAzMDRcMDAwXHUwMTM2XHUwMzAxXDAwMFx1MDEyRVx1MDMwNCIrCisgICAgICAgICJcMDAwXHUxRTMyXHUwMzAxXDAwMFx1MUVGNFx1MDMwOVwwMDBcdTFFQ0FcdTAzMDRcMDAwXHUxRTJEXHUwMzA4XHUwMzAxIisKKyAgICAgICAgIlwwMDBcdTFFMkRcdTAzMDNcMDAwXHUwMTJGXHUwMzA4XHUwMzAxXDAwMFx1MDEyRlx1MDMwM1wwMDBcdTFFQ0JcdTAzMDgiKworICAgICAgICAiXHUwMzAxXDAwMFx1MUVDQlx1MDMwM1wwMDBcdTFGQjhcdTAzNDVcMDAwXHUxRkI5XHUwMzQ1XDAwMFx1MDM4Nlx1MDM0NSIrCisgICAgICAgICJcMDAwXHUxRkJBXHUwMzQ1XDAwMFx1MUUyQ1x1MDMwOFx1MDMwMVwwMDBcdTFFOTVcdTAzMDJcMDAwXHUxRTJDXHUwMzAzIisKKyAgICAgICAgIlwwMDBcdTAxMkVcdTAzMDhcdTAzMDFcMDAwXHUwMTA0XHUwMzBBXDAwMFx1MDEyRVx1MDMwM1wwMDBcdTFFQ0FcdTAzMDgiKworICAgICAgICAiXHUwMzAxXDAwMFx1MUUwMFx1MDMwQVwwMDBcdTFFOTNcdTAzMDJcMDAwXHUxRUEwXHUwMzBBXDAwMFx1MUVDQVx1MDMwMyIrCisgICAgICAgICJcMDAwXHUxRTk0XHUwMzAyXDAwMFx1MDEyRlx1MDMzMFwwMDBcdTAxMDRcdTAzMDhcMDAwXHUxRTAwXHUwMzA4XDAwMFx1MUU5MiIrCisgICAgICAgICJcdTAzMDJcMDAwXHUxRUEwXHUwMzA4XDAwMFx1MUVGNVx1MDMwMFwwMDBcdTAxMkVcdTAzMzBcMDAwXHUwMTA0XHUwMzAzIisKKyAgICAgICAgIlwwMDBcdTFFMDBcdTAzMDNcMDAwXHUxRUY1XHUwMzA3XDAwMFx1MUVBMFx1MDMwM1wwMDBcdTFFRjRcdTAzMDBcMDAwXHUxRTk2IisKKyAgICAgICAgIlx1MDMwMlwwMDBcdTFFMkJcdTAzMDJcMDAwXHUxRTI5XHUwMzJFXDAwMFx1MDEwNFx1MDMwMlwwMDBcdTAxNzNcdTAzMUIiKworICAgICAgICAiXHUwMzIzXDAwMFx1MUUwMFx1MDMwMlwwMDBcdTFFMjlcdTAzMDJcMDAwXHUxRUY0XHUwMzA3XDAwMFx1MUUyNVx1MDMwMiIrCisgICAgICAgICJcMDAwXHUxRTJBXHUwMzAyXDAwMFx1MUUyOFx1MDMyRVwwMDBcdTAxMDRcdTAzMDFcMDAwXHUwMTcyXHUwMzFCXHUwMzIzIisKKyAgICAgICAgIlwwMDBcdTFFMDBcdTAzMDFcMDAwXHUxRTI4XHUwMzAyXDAwMFx1MUVBMFx1MDMwMVwwMDBcdTFFMjRcdTAzMDJcMDAwXHUxRTM1IisKKyAgICAgICAgIlx1MDMwQ1wwMDBcdTAxMDRcdTAzMDBcMDAwXHUwMTczXHUwMzFCXHUwMzAzXDAwMFx1MUUwMFx1MDMwMFwwMDBcdTFFQTAiKworICAgICAgICAiXHUwMzAwXDAwMFx1MUVGMVx1MDMwM1wwMDBcdTAxMzdcdTAzMENcMDAwXHUxRTMzXHUwMzBDXDAwMFx1MUUzNFx1MDMwQyIrCisgICAgICAgICJcMDAwXHUwMTcyXHUwMzFCXHUwMzAzXDAwMFx1MUVGMFx1MDMwM1wwMDBcdTAxMzZcdTAzMENcMDAwXHUxRTMyXHUwMzBDIisKKyAgICAgICAgIlwwMDBcdTFFOTZcdTAzMDhcMDAwXHUxRTJCXHUwMzA4XDAwMFx1MUUyOVx1MDMwOFwwMDBcdTAxNzNcdTAzMUJcdTAzMDkiKworICAgICAgICAiXDAwMFx1MUUyNVx1MDMwOFwwMDBcdTAxMjNcdTAzMDdcMDAwXHUxRUYxXHUwMzA5XDAwMFx1MDEyM1x1MDMwQ1wwMDBcdTFFMkEiKworICAgICAgICAiXHUwMzA4XDAwMFx1MUUyOFx1MDMwOFwwMDBcdTAxNzJcdTAzMUJcdTAzMDlcMDAwXHUxRTI0XHUwMzA4XDAwMFx1MDEyMiIrCisgICAgICAgICJcdTAzMDdcMDAwXHUxRUYwXHUwMzA5XDAwMFx1MDEyMlx1MDMwQ1wwMDBcdTFGQjBcdTAzNDVcMDAwXHUxRkIxXHUwMzQ1IisKKyAgICAgICAgIlwwMDBcdTFFMjlcdTAzMjNcMDAwXHUwMTczXHUwMzFCXHUwMzAwXDAwMFx1MDEyM1x1MDMwNlwwMDBcdTFFRjFcdTAzMDAiKworICAgICAgICAiXDAwMFx1MUUyOFx1MDMyM1wwMDBcdTAxNzJcdTAzMUJcdTAzMDBcMDAwXHUwMTIyXHUwMzA2XDAwMFx1MUU4OVx1MDMwNyIrCisgICAgICAgICJcMDAwXHUxRUYwXHUwMzAwXDAwMFx1MUU5Nlx1MDMwN1wwMDBcdTFFMkJcdTAzMDdcMDAwXHUxRTI5XHUwMzA3XDAwMFx1MDE3MyIrCisgICAgICAgICJcdTAzMUJcdTAzMDFcMDAwXHUxRTI1XHUwMzA3XDAwMFx1MDEyM1x1MDMwMlwwMDBcdTFFODhcdTAzMDdcMDAwXHUxRUYxIisKKyAgICAgICAgIlx1MDMwMVwwMDBcdTFFMkFcdTAzMDdcMDAwXHUxRTI4XHUwMzA3XDAwMFx1MDE3Mlx1MDMxQlx1MDMwMVwwMDBcdTFFMjQiKworICAgICAgICAiXHUwMzA3XDAwMFx1MDEyMlx1MDMwMlwwMDBcdTFFODlcdTAzMDhcMDAwXHUxRUYwXHUwMzAxXDAwMFx1MUU3NVx1MDMwOSIrCisgICAgICAgICJcMDAwXHUxRTFCXHUwMzBDXDAwMFx1MUU5NVx1MDMwQ1wwMDBcdTFFNzdcdTAzMDlcMDAwXHUxRTE5XHUwMzBDXDAwMFx1MDEyMyIrCisgICAgICAgICJcdTAzMDRcMDAwXHUwMTczXHUwMzA5XDAwMFx1MDExOVx1MDMwQ1wwMDBcdTAyMjlcdTAzMENcMDAwXHUxRTg4XHUwMzA4IisKKyAgICAgICAgIlwwMDBcdTFFNzNcdTAzMDlcMDAwXHUwMTA1XHUwMzA3XHUwMzA0XDAwMFx1MUVFNVx1MDMwOVwwMDBcdTFFQjlcdTAzMEMiKworICAgICAgICAiXDAwMFx1MUU5M1x1MDMwQ1wwMDBcdTFFMDFcdTAzMDdcdTAzMDRcMDAwXHUxRUExXHUwMzA3XHUwMzA0XDAwMFx1MUU3NCIrCisgICAgICAgICJcdTAzMDlcMDAwXHUxRTFBXHUwMzBDXDAwMFx1MUU5NFx1MDMwQ1wwMDBcdTFFNzZcdTAzMDlcMDAwXHUxRTE4XHUwMzBDIisKKyAgICAgICAgIlwwMDBcdTAxMjJcdTAzMDRcMDAwXHUwMTcyXHUwMzA5XDAwMFx1MDExOFx1MDMwQ1wwMDBcdTAyMjhcdTAzMENcMDAwXHUxRTg5IisKKyAgICAgICAgIlx1MDMwMVwwMDBcdTFFNzJcdTAzMDlcMDAwXHUwMTA0XHUwMzA3XHUwMzA0XDAwMFx1MUVFNFx1MDMwOVwwMDBcdTFFQjgiKworICAgICAgICAiXHUwMzBDXDAwMFx1MUU5Mlx1MDMwQ1wwMDBcdTFFMDBcdTAzMDdcdTAzMDRcMDAwXHUxRUEwXHUwMzA3XHUwMzA0XDAwMCIrCisgICAgICAgICJcdTFFOTVcdTAzMDdcMDAwXHUwMTczXHUwMzIzXDAwMFx1MUU4OFx1MDMwMVwwMDBcdTAxMDVcdTAzMDhcdTAzMDRcMDAwIisKKyAgICAgICAgIlx1MUU5M1x1MDMwN1wwMDBcdTFFMDFcdTAzMDhcdTAzMDRcMDAwXHUxRUExXHUwMzA4XHUwMzA0XDAwMFx1MUU5NFx1MDMwNyIrCisgICAgICAgICJcMDAwXHUwMTcyXHUwMzIzXDAwMFx1MUU4OVx1MDMwMFwwMDBcdTAxMDRcdTAzMDhcdTAzMDRcMDAwXHUxRTkyXHUwMzA3IisKKyAgICAgICAgIlwwMDBcdTFFMDBcdTAzMDhcdTAzMDRcMDAwXHUxRUEwXHUwMzA4XHUwMzA0XDAwMFx1MUUxQlx1MDMwN1wwMDBcdTFFOTUiKworICAgICAgICAiXHUwMzAxXDAwMFx1MUUxOVx1MDMwN1wwMDBcdTAxRUJcdTAzMUJcdTAzMjNcMDAwXHUwMTE5XHUwMzA3XDAwMFx1MDIyOSIrCisgICAgICAgICJcdTAzMDdcMDAwXHUxRTg4XHUwMzAwXDAwMFx1MUVCOVx1MDMwN1wwMDBcdTFFOTNcdTAzMDFcMDAwXHUxRTFBXHUwMzA3IisKKyAgICAgICAgIlwwMDBcdTFFOTRcdTAzMDFcMDAwXHUxRTE4XHUwMzA3XDAwMFx1MUU3NVx1MDMwOFx1MDMwMFwwMDBcdTFFNzdcdTAzMDgiKworICAgICAgICAiXHUwMzAwXDAwMFx1MDFFQVx1MDMxQlx1MDMyM1wwMDBcdTAxMThcdTAzMDdcMDAwXHUwMjI4XHUwMzA3XDAwMFx1MDE3MyIrCisgICAgICAgICJcdTAzMDhcdTAzMDBcMDAwXHUxRUI4XHUwMzA3XDAwMFx1MUU5Mlx1MDMwMVwwMDBcdTFFNzNcdTAzMDhcdTAzMDBcMDAwIisKKyAgICAgICAgIlx1MUVFNVx1MDMwOFx1MDMwMFwwMDBcdTAxQjBcdTAzMDhcdTAzMDBcMDAwXHUxRTFCXHUwMzA2XDAwMFx1MUUxOVx1MDMwNiIrCisgICAgICAgICJcMDAwXHUwMTE5XHUwMzMwXDAwMFx1MUU3NFx1MDMwOFx1MDMwMFwwMDBcdTAyMjlcdTAzMzBcMDAwXHUxRTc2XHUwMzA4IisKKyAgICAgICAgIlx1MDMwMFwwMDBcdTAxRUJcdTAzMUJcdTAzMDNcMDAwXHUwMTE5XHUwMzA2XDAwMFx1MDE3Mlx1MDMwOFx1MDMwMFwwMDAiKworICAgICAgICAiXHUxRUUzXHUwMzAzXDAwMFx1MUVCOVx1MDMwNlwwMDBcdTFFRjRcdTAzMDhcMDAwXHUxRTcyXHUwMzA4XHUwMzAwXDAwMCIrCisgICAgICAgICJcdTFFRTRcdTAzMDhcdTAzMDBcMDAwXHUwMUFGXHUwMzA4XHUwMzAwXDAwMFx1MUUxQVx1MDMwNlwwMDBcdTFFMThcdTAzMDYiKworICAgICAgICAiXDAwMFx1MDExOFx1MDMzMFwwMDBcdTFFNzVcdTAzMDhcdTAzMENcMDAwXHUwMjI4XHUwMzMwXDAwMFx1MUU3N1x1MDMwOCIrCisgICAgICAgICJcdTAzMENcMDAwXHUwMUVBXHUwMzFCXHUwMzAzXDAwMFx1MDExOFx1MDMwNlwwMDBcdTFFN0ZcdTAzMDNcMDAwXHUwMTczIisKKyAgICAgICAgIlx1MDMwOFx1MDMwQ1wwMDBcdTFFRTJcdTAzMDNcMDAwXHUxRUI4XHUwMzA2XDAwMFx1MUVGNVx1MDMwMlwwMDBcdTFFNzMiKworICAgICAgICAiXHUwMzA4XHUwMzBDXDAwMFx1MUVFNVx1MDMwOFx1MDMwQ1wwMDBcdTAxQjBcdTAzMDhcdTAzMENcMDAwXHUxRTFCXHUwMzA0IisKKyAgICAgICAgIlwwMDBcdTFFMTlcdTAzMDRcMDAwXHUwMTE5XHUwMzJEXDAwMFx1MUU3NFx1MDMwOFx1MDMwQ1wwMDBcdTAyMjlcdTAzMkQiKworICAgICAgICAiXDAwMFx1MUU3Nlx1MDMwOFx1MDMwQ1wwMDBcdTAxRUJcdTAzMUJcdTAzMDlcMDAwXHUwMTE5XHUwMzA0XDAwMFx1MDIyOSIrCisgICAgICAgICJcdTAzMDRcMDAwXHUxRTdFXHUwMzAzXDAwMFx1MDE3Mlx1MDMwOFx1MDMwQ1wwMDBcdTFFRTNcdTAzMDlcMDAwXHUxRUI5IisKKyAgICAgICAgIlx1MDMwNFwwMDBcdTFFRjRcdTAzMDJcMDAwXHUxRTcyXHUwMzA4XHUwMzBDXDAwMFx1MUVFNFx1MDMwOFx1MDMwQ1wwMDAiKworICAgICAgICAiXHUwMUFGXHUwMzA4XHUwMzBDXDAwMFx1MUU3NVx1MDMwNFx1MDMwOFwwMDBcdTFFMUFcdTAzMDRcMDAwXHUxRTc3XHUwMzA0IisKKyAgICAgICAgIlx1MDMwOFwwMDBcdTFFMThcdTAzMDRcMDAwXHUwMTE4XHUwMzJEXDAwMFx1MUU3NVx1MDMwOFx1MDMwMVwwMDBcdTAyMjgiKworICAgICAgICAiXHUwMzJEXDAwMFx1MDE3M1x1MDMwNFx1MDMwOFwwMDBcdTFFNzdcdTAzMDhcdTAzMDFcMDAwXHUwMUVBXHUwMzFCXHUwMzA5IisKKyAgICAgICAgIlwwMDBcdTAxMThcdTAzMDRcMDAwXHUwMjI4XHUwMzA0XDAwMFx1MUU3M1x1MDMwNFx1MDMwOFwwMDBcdTFFRTVcdTAzMDQiKworICAgICAgICAiXHUwMzA4XDAwMFx1MDE3M1x1MDMwOFx1MDMwMVwwMDBcdTFFRTJcdTAzMDlcMDAwXHUxRUI4XHUwMzA0XDAwMFx1MUU4OSIrCisgICAgICAgICJcdTAzMDJcMDAwXHUxRTczXHUwMzA4XHUwMzAxXDAwMFx1MUVFNVx1MDMwOFx1MDMwMVwwMDBcdTAxQjBcdTAzMDRcdTAzMDgiKworICAgICAgICAiXDAwMFx1MDFCMFx1MDMwOFx1MDMwMVwwMDBcdTFFMUJcdTAzMDRcdTAzMDFcMDAwXHUxRTc0XHUwMzA0XHUwMzA4XDAwMCIrCisgICAgICAgICJcdTFFMTlcdTAzMDRcdTAzMDFcMDAwXHUxRTc2XHUwMzA0XHUwMzA4XDAwMFx1MDExOVx1MDMwNFx1MDMwMVwwMDBcdTFFNzQiKworICAgICAgICAiXHUwMzA4XHUwMzAxXDAwMFx1MDIyOVx1MDMwNFx1MDMwMVwwMDBcdTAxNzJcdTAzMDRcdTAzMDhcMDAwXHUxRTc2XHUwMzA4IisKKyAgICAgICAgIlx1MDMwMVwwMDBcdTAxRUJcdTAzMUJcdTAzMDBcMDAwXHUxRUI5XHUwMzA0XHUwMzAxXDAwMFx1MUU3Mlx1MDMwNFx1MDMwOCIrCisgICAgICAgICJcMDAwXHUxRUU0XHUwMzA0XHUwMzA4XDAwMFx1MDE3Mlx1MDMwOFx1MDMwMVwwMDBcdTFFRTNcdTAzMDBcMDAwXHUxRTg4IisKKyAgICAgICAgIlx1MDMwMlwwMDBcdTFFNzJcdTAzMDhcdTAzMDFcMDAwXHUxRUU0XHUwMzA4XHUwMzAxXDAwMFx1MDFBRlx1MDMwNFx1MDMwOCIrCisgICAgICAgICJcMDAwXHUwMUFGXHUwMzA4XHUwMzAxXDAwMFx1MUUxQVx1MDMwNFx1MDMwMVwwMDBcdTFFNzVcdTAzMDNcdTAzMDFcMDAwIisKKyAgICAgICAgIlx1MUUxOFx1MDMwNFx1MDMwMVwwMDBcdTFFNzdcdTAzMDNcdTAzMDFcMDAwXHUwMTE4XHUwMzA0XHUwMzAxXDAwMFx1MUU3NSIrCisgICAgICAgICJcdTAzMDhcdTAzMDRcMDAwXHUwMjI4XHUwMzA0XHUwMzAxXDAwMFx1MDE3M1x1MDMwM1x1MDMwMVwwMDBcdTFFNzdcdTAzMDgiKworICAgICAgICAiXHUwMzA0XDAwMFx1MDFFQVx1MDMxQlx1MDMwMFwwMDBcdTFFQjhcdTAzMDRcdTAzMDFcMDAwXHUxRTczXHUwMzAzXHUwMzAxIisKKyAgICAgICAgIlwwMDBcdTFFRTVcdTAzMDNcdTAzMDFcMDAwXHUwMTczXHUwMzA4XHUwMzA0XDAwMFx1MUVFMlx1MDMwMFwwMDBcdTFFNzMiKworICAgICAgICAiXHUwMzA4XHUwMzA0XDAwMFx1MUVFNVx1MDMwOFx1MDMwNFwwMDBcdTFFRUZcdTAzMDFcMDAwXHUwMUIwXHUwMzA4XHUwMzA0IisKKyAgICAgICAgIlwwMDBcdTFFMUJcdTAzMDRcdTAzMDBcMDAwXHUxRTc0XHUwMzAzXHUwMzAxXDAwMFx1MUUxOVx1MDMwNFx1MDMwMFwwMDAiKworICAgICAgICAiXHUxRTBGXHUwMzBDXDAwMFx1MUU3Nlx1MDMwM1x1MDMwMVwwMDBcdTFFMTNcdTAzMENcMDAwXHUwMTE5XHUwMzA0XHUwMzAwIisKKyAgICAgICAgIlwwMDBcdTFFNzRcdTAzMDhcdTAzMDRcMDAwXHUwMjI5XHUwMzA0XHUwMzAwXDAwMCIKKyAgICA7CisKKyAgICBzdGF0aWMgZmluYWwgaW50W10gdHlwZUJpdCA9IFV0aWxpdHkuUkxFU3RyaW5nVG9JbnRBcnJheSgKKyAgICAgICAgIlwwMDBnXDAwMFwwMDBcMDAwXHVBNUE1XDAwMFwwMjBcMDAwMVwwMDArXDAwMFx1QTVBNVwwMDBcMDA0XDAwMC1cMDAwKiIrCisgICAgICAgICJcMDAwKlwwMDBcdUE1QTVcMDAwXDAwNFwwMDAtXDAwMFwwMDJcMDAwMVwwMDA1XDAwMFwwMTJcMDAwMVwwMDAxXDAwMC0iKworICAgICAgICAiXDAwMFwwMDNcMDAwXHVBNUE1XDAwMFwwMDdcMDAwXDAwMVwwMDBcMDQyXDAwMFx1QTVBNVwwMDBcMDA1XDAwMFwwMDFcMDAwIisKKyAgICAgICAgIlwwMDVcMDAwXDAwMVwwMDBcMDAxXDAwMFwwMDFcMDAwXDAwNFwwMDBcMDA0XDAwMDFcMDAwMlwwMDAtXDAwMCpcMDAwXDAwMiIrCisgICAgICAgICJcMDAwNFwwMDAzXDAwMC5cMDAwMFwwMDBcMDA2XDAwMFwwMDdcMDAwXDAxMFwwMDBcMDExXDAwMFwwMTNcMDAwXDAxNFwwMDAiKworICAgICAgICAiXDAxNVwwMDBcMDE2XDAwMFwwMTdcMDAwXDAyMFwwMDBcMDIxXDAwMFwwMjJcMDAwXDAyM1wwMDBcMDI0XDAwMFwwMjVcMDAwIisKKyAgICAgICAgIlwwMjdcMDAwXDAzMFwwMDBcMDMxXDAwMFwwMzJcMDAwXDAzM1wwMDBcMDM0XDAwMFwwMzVcMDAwXDAzNlwwMDBcMDM3XDAwMCIrCisgICAgICAgICIgXDAwMFwwMDVcMDAwXDAwM1wwMDAhXDAwMCNcMDAwJFwwMDAlXDAwMCZcMDAwK1wwMDAnXDAwMChcMDAwKVwwMDAsXDAwMCIrCisgICAgICAgICIvXDAwMFwwMjYiCisgICAgKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvQ29tcG9zZWRDaGFySXRlci5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9Db21wb3NlZENoYXJJdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTM3MGZkZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvQ29tcG9zZWRDaGFySXRlci5qYXZhCkBAIC0wLDAgKzEsMTY3IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L0F0dGljL0NvbXBvc2VkQ2hhckl0ZXIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwNDowNzoxOSAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udGV4dDsKKworLyoqCisgKiA8dHQ+Q29tcG9zZWRDaGFySXRlcjwvdHQ+IGlzIGFuIGl0ZXJhdG9yIGNsYXNzIHRoYXQgcmV0dXJucyBhbGwKKyAqIG9mIHRoZSBwcmVjb21wb3NlZCBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgc3RhbmRhcmQsIGFsb25nCisgKiB3aXRoIHRoZWlyIGRlY29tcG9zZWQgZm9ybXMuICBUaGlzIGlzIG9mdGVuIHVzZWZ1bCB3aGVuIGJ1aWxkaW5nCisgKiBkYXRhIHRhYmxlcyAoPGk+ZS5nLjwvaT4gY29sbGF0aW9uIHRhYmxlcykgd2hpY2ggbmVlZCB0byB0cmVhdCBjb21wb3NlZAorICogYW5kIGRlY29tcG9zZWQgY2hhcmFjdGVycyBlcXVpdmFsZW50bHkuCisgKiA8cD4KKyAqIEZvciBleGFtcGxlLCBpbWFnaW5lIHRoYXQgeW91IGhhdmUgYnVpbHQgYSBjb2xsYXRpb24gdGFibGUgd2l0aCBvcmRlcmluZworICogcnVsZXMgZm9yIHRoZSB7QGxpbmsgTm9ybWFsaXplciNERUNPTVAgY2Fub25pY2FsbHkgZGVjb21wb3NlZH0gZm9ybXMgb2YgYWxsCisgKiBjaGFyYWN0ZXJzIHVzZWQgaW4gYSBwYXJ0aWN1bGFyIGxhbmd1YWdlLiAgV2hlbiB5b3UgcHJvY2VzcyBpbnB1dCB0ZXh0IHVzaW5nCisgKiB0aGlzIHRhYmxlLCB0aGUgdGV4dCBtdXN0IGZpcnN0IGJlIGRlY29tcG9zZWQgc28gdGhhdCBpdCBtYXRjaGVzIHRoZSBmb3JtCisgKiB1c2VkIGluIHRoZSB0YWJsZS4gIFRoaXMgY2FuIGltcG9zZSBhIHBlcmZvcm1hbmNlIHBlbmFsdHkgdGhhdCBtYXkgYmUKKyAqIHVuYWNjZXB0YWJsZSBpbiBzb21lIHNpdHVhdGlvbnMuCisgKiA8cD4KKyAqIFlvdSBjYW4gYXZvaWQgdGhpcyBwcm9ibGVtIGJ5IGVuc3VyaW5nIHRoYXQgdGhlIGNvbGxhdGlvbiB0YWJsZSBjb250YWlucworICogcnVsZXMgZm9yIGJvdGggdGhlIGRlY29tcG9zZWQgPGk+YW5kPC9pPiBjb21wb3NlZCB2ZXJzaW9ucyBvZiBlYWNoIGNoYXJhY3Rlci4KKyAqIFRvIGRvIHNvLCB1c2UgYSA8dHQ+Q29tcG9zZWRDaGFySXRlcjwvdHQ+IHRvIGl0ZXJhdGUgdGhyb3VnaCBhbGwgb2YgdGhlCisgKiBjb21wb3NlZCBjaGFyYWN0ZXJzIGluIFVuaWNvZGUuICBJZiB0aGUgZGVjb21wb3NpdGlvbiBmb3IgdGhhdCBjaGFyYWN0ZXIKKyAqIGNvbnNpc3RzIHNvbGVseSBvZiBjaGFyYWN0ZXJzIHRoYXQgYXJlIGxpc3RlZCBpbiB5b3VyIHJ1bGVzZXQsIHlvdSBjYW4KKyAqIGFkZCBhIG5ldyBydWxlIGZvciB0aGUgY29tcG9zZWQgY2hhcmFjdGVyIHRoYXQgbWFrZXMgaXQgZXF1aXZhbGVudCB0bworICogaXRzIGRlY29tcG9zaXRpb24gc2VxdWVuY2UuCisgKiA8cD4KKyAqIE5vdGUgdGhhdCA8dHQ+Q29tcG9zZWRDaGFySXRlcjwvdHQ+IGl0ZXJhdGVzIG92ZXIgYSA8ZW0+c3RhdGljPC9lbT4gdGFibGUKKyAqIG9mIHRoZSBjb21wb3NlZCBjaGFyYWN0ZXJzIGluIFVuaWNvZGUuICBJZiB5b3Ugd2FudCB0byBpdGVyYXRlIG92ZXIgdGhlCisgKiBjb21wb3NlZCBjaGFyYWN0ZXJzIGluIGEgcGFydGljdWxhciBzdHJpbmcsIHVzZSB7QGxpbmsgTm9ybWFsaXplcn0gaW5zdGVhZC4KKyAqIDxwPgorICogV2hlbiBjb25zdHJ1Y3RpbmcgYSA8dHQ+Q29tcG9zZWRDaGFySXRlcjwvdHQ+IHRoZXJlIGlzIG9uZQorICogb3B0aW9uYWwgZmVhdHVyZSB0aGF0IHlvdSBjYW4gZW5hYmxlIG9yIGRpc2FibGU6CisgKiA8dWw+CisgKiAgIDxsaT57QGxpbmsgTm9ybWFsaXplciNJR05PUkVfSEFOR1VMfSAtIERvIG5vdCBpdGVyYXRlIG92ZXIgdGhlIEhhbmd1bAorICogICAgICAgICAgY2hhcmFjdGVycyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBKYW1vIGRlY29tcG9zaXRpb25zLgorICogICAgICAgICAgVGhpcyBvcHRpb24gaXMgb2ZmIGJ5IGRlZmF1bHQgKDxpPmkuZS48L2k+IEhhbmd1bCBwcm9jZXNzaW5nIGlzIGVuYWJsZWQpCisgKiAgICAgICAgICBzaW5jZSB0aGUgVW5pY29kZSBzdGFuZGFyZCBzcGVjaWZpZXMgdGhhdCBIYW5ndWwgdG8gSmFtbyAKKyAqICAgICAgICAgIGlzIGEgY2Fub25pY2FsIGRlY29tcG9zaXRpb24uCisgKiA8L3VsPgorICogPHA+CisgKiA8dHQ+Q29tcG9zZWRDaGFySXRlcjwvdHQ+IGlzIGN1cnJlbnRseSBiYXNlZCBvbiB2ZXJzaW9uIDIuMS44IG9mIHRoZQorICogPGEgaHJlZj0iaHR0cDovL3d3dy51bmljb2RlLm9yZyIgdGFyZ2V0PSJ1bmljb2RlIj5Vbmljb2RlIFN0YW5kYXJkPC9hPi4KKyAqIEl0IHdpbGwgYmUgdXBkYXRlZCBhcyBsYXRlciB2ZXJzaW9ucyBvZiBVbmljb2RlIGFyZSByZWxlYXNlZC4KKyAqLworcHVibGljIGZpbmFsIGNsYXNzIENvbXBvc2VkQ2hhckl0ZXIgeworICAgIAorICAgIC8qKgorICAgICAqIENvbnN0YW50IHRoYXQgaW5kaWNhdGVzIHRoZSBpdGVyYXRpb24gaGFzIGNvbXBsZXRlZC4KKyAgICAgKiB7QGxpbmsgI25leHR9IHJldHVybnMgdGhpcyB2YWx1ZSB3aGVuIHRoZXJlIGFyZSBubyBtb3JlIGNvbXBvc2VkIGNoYXJhY3RlcnMKKyAgICAgKiBvdmVyIHdoaWNoIHRvIGl0ZXJhdGUuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBjaGFyIERPTkUgPSBOb3JtYWxpemVyLkRPTkU7CisgICAgCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgbmV3IDx0dD5Db21wb3NlZENoYXJJdGVyPC90dD4uICBUaGUgaXRlcmF0b3Igd2lsbCByZXR1cm4KKyAgICAgKiBhbGwgVW5pY29kZSBjaGFyYWN0ZXJzIHdpdGggY2Fub25pY2FsIGRlY29tcG9zaXRpb25zLCBpbmNsdWRpbmcgS29yZWFuCisgICAgICogSGFuZ3VsIGNoYXJhY3RlcnMuCisgICAgICovCisgICAgcHVibGljIENvbXBvc2VkQ2hhckl0ZXIoKSB7CisgICAgICAgIG1pbkRlY29tcCA9IERlY29tcERhdGEuTUFYX0NPTVBBVDsKKyAgICAgICAgaGFuZ3VsID0gZmFsc2U7CisgICAgfQorICAgIAorICAgIAorICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBub24tZGVmYXVsdCA8dHQ+Q29tcG9zZWRDaGFySXRlcjwvdHQ+IHdpdGggb3B0aW9uYWwgYmVoYXZpb3IuCisgICAgICogPHA+CisgICAgICogQHBhcmFtIGNvbXBhdCAgICA8dHQ+ZmFsc2U8L3R0PiBmb3IgY2Fub25pY2FsIGRlY29tcG9zaXRpb25zIG9ubHk7CisgICAgICogICAgICAgICAgICAgICAgICA8dHQ+dHJ1ZTwvdHQ+IGZvciBib3RoIGNhbm9uaWNhbCBhbmQgY29tcGF0aWJpbGl0eQorICAgICAqICAgICAgICAgICAgICAgICAgZGVjb21wb3NpdGlvbnMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gb3B0aW9ucyAgIE9wdGlvbmFsIGRlY29tcG9zaXRpb24gZmVhdHVyZXMuICBDdXJyZW50bHksIHRoZSBvbmx5CisgICAgICogICAgICAgICAgICAgICAgICBzdXBwb3J0ZWQgb3B0aW9uIGlzIHtAbGluayBOb3JtYWxpemVyI0lHTk9SRV9IQU5HVUx9LCB3aGljaAorICAgICAqICAgICAgICAgICAgICAgICAgY2F1c2VzIHRoaXMgPHR0PkNvbXBvc2VkQ2hhckl0ZXI8L3R0PiBub3QgdG8gaXRlcmF0ZQorICAgICAqICAgICAgICAgICAgICAgICAgb3ZlciB0aGUgSGFuZ3VsIGNoYXJhY3RlcnMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcKKyAgICAgKiAgICAgICAgICAgICAgICAgIEphbW8gZGVjb21wb3NpdGlvbnMuCisgICAgICovCisgICAgcHVibGljIENvbXBvc2VkQ2hhckl0ZXIoYm9vbGVhbiBjb21wYXQsIGludCBvcHRpb25zKSB7CisgICAgICAgIC8vIENvbXBhdGliaWxpdHkgZXhwbG9zaW9ucyBoYXZlIGxvd2VyIGluZGljZXM7IHNraXAgdGhlbSBpZiBuZWNlc3NhcnkKKyAgICAgICAgbWluRGVjb21wID0gY29tcGF0ID8gMCA6IERlY29tcERhdGEuTUFYX0NPTVBBVDsKKyAgICAgICAgCisgICAgICAgIGhhbmd1bCA9IChvcHRpb25zICYgTm9ybWFsaXplci5JR05PUkVfSEFOR1VMKSA9PSAwOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlcmUgYW55IHByZWNvbXBvc2VkIFVuaWNvZGUgY2hhcmFjdGVycyBub3QgeWV0IHJldHVybmVkCisgICAgICogYnkge0BsaW5rICNuZXh0fS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBoYXNOZXh0KCkgeworICAgICAgICBpZiAobmV4dENoYXIgPT0gRE9ORSkgIHsKKyAgICAgICAgICAgIGZpbmROZXh0Q2hhcigpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBuZXh0Q2hhciAhPSBET05FOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBuZXh0IHByZWNvbXBvc2VkIFVuaWNvZGUgY2hhcmFjdGVyLgorICAgICAqIFJlcGVhdGVkIGNhbGxzIHRvIDx0dD5uZXh0PC90dD4gcmV0dXJuIGFsbCBvZiB0aGUgcHJlY29tcG9zZWQgY2hhcmFjdGVycyBkZWZpbmVkCisgICAgICogYnkgVW5pY29kZSwgaW4gYXNjZW5kaW5nIG9yZGVyLiAgQWZ0ZXIgYWxsIHByZWNvbXBvc2VkIGNoYXJhY3RlcnMgaGF2ZQorICAgICAqIGJlZW4gcmV0dXJuZWQsIHtAbGluayAjaGFzTmV4dH0gd2lsbCByZXR1cm4gPHR0PmZhbHNlPC90dD4gYW5kIGZ1cnRoZXIgY2FsbHMKKyAgICAgKiB0byA8dHQ+bmV4dDwvdHQ+IHdpbGwgcmV0dXJuIHtAbGluayAjRE9ORX0uCisgICAgICovCisgICAgcHVibGljIGNoYXIgbmV4dCgpIHsKKyAgICAgICAgaWYgKG5leHRDaGFyID09IERPTkUpICB7CisgICAgICAgICAgICBmaW5kTmV4dENoYXIoKTsKKyAgICAgICAgfQorICAgICAgICBjdXJDaGFyID0gbmV4dENoYXI7CisgICAgICAgIG5leHRDaGFyID0gRE9ORTsKKyAgICAgICAgcmV0dXJuIGN1ckNoYXI7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIFVuaWNvZGUgZGVjb21wb3NpdGlvbiBvZiB0aGUgY3VycmVudCBjaGFyYWN0ZXIuCisgICAgICogVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgZGVjb21wb3NpdGlvbiBvZiB0aGUgcHJlY29tcG9zZWQgY2hhcmFjdGVyIG1vc3QKKyAgICAgKiByZWNlbnRseSByZXR1cm5lZCBieSB7QGxpbmsgI25leHR9LiAgVGhlIHJlc3VsdGluZyBkZWNvbXBvc2l0aW9uIGlzCisgICAgICogYWZmZWN0ZWQgYnkgdGhlIHNldHRpbmdzIG9mIHRoZSBvcHRpb25zIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IuCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBkZWNvbXBvc2l0aW9uKCkgeworICAgICAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAKKyAgICAgICAgaW50IHBvcyA9IChjaGFyKShEZWNvbXBEYXRhLm9mZnNldHMuZWxlbWVudEF0KGN1ckNoYXIpICYgRGVjb21wRGF0YS5ERUNPTVBfTUFTSyk7CisgICAgICAgIAorICAgICAgICBpZiAocG9zID4gbWluRGVjb21wKSB7CisgICAgICAgICAgICBOb3JtYWxpemVyLmRvQXBwZW5kKERlY29tcERhdGEuY29udGVudHMsIHBvcywgcmVzdWx0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgCisgICAgICAgIH0gZWxzZSBpZiAoaGFuZ3VsICYmIGN1ckNoYXIgPj0gSEFOR1VMX0JBU0UgJiYgY3VyQ2hhciA8IEhBTkdVTF9MSU1JVCkgeworICAgICAgICAgICAgTm9ybWFsaXplci5oYW5ndWxUb0phbW8oY3VyQ2hhciwgcmVzdWx0LCBtaW5EZWNvbXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjdXJDaGFyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBmaW5kTmV4dENoYXIoKSB7CisgICAgICAgIGlmIChjdXJDaGFyICE9IERPTkUpIHsKKyAgICAgICAgICAgIGNoYXIgY2ggPSBjdXJDaGFyOworICAgICAgICAgICAgd2hpbGUgKCsrY2ggPCAweEZGRkYpIHsKKyAgICAgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gRGVjb21wRGF0YS5vZmZzZXRzLmVsZW1lbnRBdChjaCkgJiBEZWNvbXBEYXRhLkRFQ09NUF9NQVNLOworICAgICAgICAgICAgICAgIGlmIChvZmZzZXQgPiBtaW5EZWNvbXAKKyAgICAgICAgICAgICAgICAgICAgfHwgKGhhbmd1bCAmJiBjaCA+PSBIQU5HVUxfQkFTRSAmJiBjaCA8IEhBTkdVTF9MSU1JVCkgKSB7CisgICAgICAgICAgICAgICAgICAgIG5leHRDaGFyID0gY2g7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIGZpbmFsIGludCBtaW5EZWNvbXA7CisgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIGhhbmd1bDsKKyAgICAKKyAgICBwcml2YXRlIGNoYXIgY3VyQ2hhciA9IDA7CisgICAgcHJpdmF0ZSBjaGFyIG5leHRDaGFyID0gTm9ybWFsaXplci5ET05FOworICAgIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgSEFOR1VMX0JBU0UgPSBOb3JtYWxpemVyLkhBTkdVTF9CQVNFOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgSEFOR1VMX0xJTUlUID0gTm9ybWFsaXplci5IQU5HVUxfTElNSVQ7Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9Db21wb3VuZFRyYW5zbGl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS90ZXh0L0NvbXBvdW5kVHJhbnNsaXRlcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iNmQ2MmI0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9Db21wb3VuZFRyYW5zbGl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSwzNDEgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvQXR0aWMvQ29tcG91bmRUcmFuc2xpdGVyYXRvci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA2LzI4IDIwOjQ5OjU0ICQgCisgKiAkUmV2aXNpb246IDEuMTEgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udGV4dDsKK2ltcG9ydCBjb20uaWJtLnV0aWwuVXRpbGl0eTsKK2ltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247CitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKKworLyoqCisgKiBBIHRyYW5zbGl0ZXJhdG9yIHRoYXQgaXMgY29tcG9zZWQgb2YgdHdvIG9yIG1vcmUgb3RoZXIKKyAqIHRyYW5zbGl0ZXJhdG9yIG9iamVjdHMgbGlua2VkIHRvZ2V0aGVyLiAgRm9yIGV4YW1wbGUsIGlmIG9uZQorICogdHJhbnNsaXRlcmF0b3IgdHJhbnNsaXRlcmF0ZXMgZnJvbSBzY3JpcHQgQSB0byBzY3JpcHQgQiwgYW5kCisgKiBhbm90aGVyIHRyYW5zbGl0ZXJhdGVzIGZyb20gc2NyaXB0IEIgdG8gc2NyaXB0IEMsIHRoZSB0d28gbWF5IGJlCisgKiBjb21iaW5lZCB0byBmb3JtIGEgbmV3IHRyYW5zbGl0ZXJhdG9yIGZyb20gQSB0byBDLgorICoKKyAqIDxwPkNvbXBvc2VkIHRyYW5zbGl0ZXJhdG9ycyBtYXkgbm90IGJlaGF2ZSBhcyBleHBlY3RlZC4gIEZvcgorICogZXhhbXBsZSwgaW52ZXJzZXMgbWF5IG5vdCBjb21iaW5lIHRvIGZvcm0gdGhlIGlkZW50aXR5CisgKiB0cmFuc2xpdGVyYXRvci4gIFNlZSB0aGUgY2xhc3MgZG9jdW1lbnRhdGlvbiBmb3Ige0BsaW5rCisgKiBUcmFuc2xpdGVyYXRvcn0gZm9yIGRldGFpbHMuCisgKgorICogPHA+SWYgYSBub24tPHR0Pm51bGw8L3R0PiA8dHQ+VW5pY29kZUZpbHRlcjwvdHQ+IGlzIGFwcGxpZWQgdG8gYQorICogPHR0PkNvbXBvdW5kVHJhbnNsaXRlcmF0b3I8L3R0PiwgaXQgaGFzIHRoZSBlZmZlY3Qgb2YgYmVpbmcKKyAqIGxvZ2ljYWxseSA8Yj5hbmQ8L2I+ZWQgd2l0aCB0aGUgZmlsdGVyIG9mIGVhY2ggdHJhbnNsaXRlcmF0b3IgaW4KKyAqIHRoZSBjaGFpbi4KKyAqCisgKiA8cD5Db3B5cmlnaHQgJmNvcHk7IElCTSBDb3Jwb3JhdGlvbiAxOTk5LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAdmVyc2lvbiAkUkNTZmlsZTogQ29tcG91bmRUcmFuc2xpdGVyYXRvci5qYXZhLHYgJCAkUmV2aXNpb246IDEuMTEgJCAkRGF0ZTogMjAwMC8wNi8yOCAyMDo0OTo1NCAkCisgKi8KK3B1YmxpYyBjbGFzcyBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yIGV4dGVuZHMgVHJhbnNsaXRlcmF0b3IgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlOworCisgICAgcHJpdmF0ZSBUcmFuc2xpdGVyYXRvcltdIHRyYW5zOworCisgICAgLyoqCisgICAgICogQXJyYXkgb2Ygb3JpZ2luYWwgZmlsdGVycyBhc3NvY2lhdGVkIHdpdGggdHJhbnNsaXRlcmF0b3JzLgorICAgICAqLworICAgIHByaXZhdGUgVW5pY29kZUZpbHRlcltdIGZpbHRlcnMgPSBudWxsOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICJcdTAwQTkgSUJNIENvcnBvcmF0aW9uIDE5OTkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBuZXcgY29tcG91bmQgdHJhbnNsaXRlcmF0b3IgZ2l2ZW4gYW4gYXJyYXkgb2YKKyAgICAgKiB0cmFuc2xpdGVyYXRvcnMuICBUaGUgYXJyYXkgb2YgdHJhbnNsaXRlcmF0b3JzIG1heSBiZSBvZiBhbnkKKyAgICAgKiBsZW5ndGgsIGluY2x1ZGluZyB6ZXJvIG9yIG9uZSwgaG93ZXZlciwgdXNlZnVsIGNvbXBvdW5kCisgICAgICogdHJhbnNsaXRlcmF0b3JzIGhhdmUgYXQgbGVhc3QgdHdvIGNvbXBvbmVudHMuCisgICAgICogQHBhcmFtIHRyYW5zbGl0ZXJhdG9ycyBhcnJheSBvZiA8Y29kZT5UcmFuc2xpdGVyYXRvcjwvY29kZT4KKyAgICAgKiBvYmplY3RzCisgICAgICogQHBhcmFtIGZpbHRlciB0aGUgZmlsdGVyLiAgQW55IGNoYXJhY3RlciBmb3Igd2hpY2gKKyAgICAgKiA8dHQ+ZmlsdGVyLmNvbnRhaW5zKCk8L3R0PiByZXR1cm5zIDx0dD5mYWxzZTwvdHQ+IHdpbGwgbm90IGJlCisgICAgICogYWx0ZXJlZCBieSB0aGlzIHRyYW5zbGl0ZXJhdG9yLiAgSWYgPHR0PmZpbHRlcjwvdHQ+IGlzCisgICAgICogPHR0Pm51bGw8L3R0PiB0aGVuIG5vIGZpbHRlcmluZyBpcyBhcHBsaWVkLgorICAgICAqLworICAgIHB1YmxpYyBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yKFRyYW5zbGl0ZXJhdG9yW10gdHJhbnNsaXRlcmF0b3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVGaWx0ZXIgZmlsdGVyKSB7CisgICAgICAgIHN1cGVyKGpvaW5JRHModHJhbnNsaXRlcmF0b3JzKSwgbnVsbCk7IC8vIGRvbid0IHNldCBmaWx0ZXIgaGVyZSEKKyAgICAgICAgdHJhbnMgPSBuZXcgVHJhbnNsaXRlcmF0b3JbdHJhbnNsaXRlcmF0b3JzLmxlbmd0aF07CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkodHJhbnNsaXRlcmF0b3JzLCAwLCB0cmFucywgMCwgdHJhbnMubGVuZ3RoKTsKKyAgICAgICAgY29tcHV0ZU1heGltdW1Db250ZXh0TGVuZ3RoKCk7CisgICAgICAgIGlmIChmaWx0ZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgc2V0RmlsdGVyKGZpbHRlcik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IGNvbXBvdW5kIHRyYW5zbGl0ZXJhdG9yIGdpdmVuIGFuIGFycmF5IG9mCisgICAgICogdHJhbnNsaXRlcmF0b3JzLiAgVGhlIGFycmF5IG9mIHRyYW5zbGl0ZXJhdG9ycyBtYXkgYmUgb2YgYW55CisgICAgICogbGVuZ3RoLCBpbmNsdWRpbmcgemVybyBvciBvbmUsIGhvd2V2ZXIsIHVzZWZ1bCBjb21wb3VuZAorICAgICAqIHRyYW5zbGl0ZXJhdG9ycyBoYXZlIGF0IGxlYXN0IHR3byBjb21wb25lbnRzLgorICAgICAqIEBwYXJhbSB0cmFuc2xpdGVyYXRvcnMgYXJyYXkgb2YgPGNvZGU+VHJhbnNsaXRlcmF0b3I8L2NvZGU+CisgICAgICogb2JqZWN0cworICAgICAqLworICAgIHB1YmxpYyBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yKFRyYW5zbGl0ZXJhdG9yW10gdHJhbnNsaXRlcmF0b3JzKSB7CisgICAgICAgIHRoaXModHJhbnNsaXRlcmF0b3JzLCBudWxsKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogU3BsaXRzIGFuIElEIG9mIHRoZSBmb3JtICJJRDtJRDsuLi4iIGludG8gYSBjb21wb3VuZCB1c2luZyBlYWNoCisgICAgICogb2YgdGhlIElEcy4gCisgICAgICogQHBhcmFtIElEIG9mIGFib3ZlIGZvcm0KKyAgICAgKiBAcGFyYW0gZm9yd2FyZCBpZiBmYWxzZSwgZG9lcyB0aGUgbGlzdCBpbiByZXZlcnNlIG9yZGVyLCBhbmQKKyAgICAgKiB0YWtlcyB0aGUgaW52ZXJzZSBvZiBlYWNoIElELgorICAgICAqLworICAgIHB1YmxpYyBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yKFN0cmluZyBJRCwgaW50IGRpcmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmljb2RlRmlsdGVyIGZpbHRlcikgeworICAgICAgICAvLyBjaGFuZ2VkIE1FRAorICAgICAgICAvLyBMYXRlciwgYWRkICJydWxlMVtmaWx0ZXJdO3J1bGUyLi4uCisgICAgICAgIHN1cGVyKElELCBudWxsKTsgLy8gZG9uJ3Qgc2V0IGZpbHRlciBoZXJlIQorICAgICAgICBTdHJpbmdbXSBsaXN0ID0gc3BsaXQoSUQsICc7Jyk7CisgICAgICAgIHRyYW5zID0gbmV3IFRyYW5zbGl0ZXJhdG9yW2xpc3QubGVuZ3RoXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICB0cmFuc1tpXSA9IGdldEluc3RhbmNlKGxpc3RbZGlyZWN0aW9uPT1GT1JXQVJEID8gaSA6IChsaXN0Lmxlbmd0aC0xLWkpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uKTsKKyAgICAgICAgfQorICAgICAgICBjb21wdXRlTWF4aW11bUNvbnRleHRMZW5ndGgoKTsKKyAgICAgICAgaWYgKGZpbHRlciAhPSBudWxsKSB7CisgICAgICAgICAgICBzZXRGaWx0ZXIoZmlsdGVyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgQ29tcG91bmRUcmFuc2xpdGVyYXRvcihTdHJpbmcgSUQsIGludCBkaXJlY3Rpb24pIHsKKyAgICAgICAgdGhpcyhJRCwgZGlyZWN0aW9uLCBudWxsKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIENvbXBvdW5kVHJhbnNsaXRlcmF0b3IoU3RyaW5nIElEKSB7CisgICAgICAgIHRoaXMoSUQsIEZPUldBUkQsIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgSURzIG9mIHRoZSBnaXZlbiBsaXN0IG9mIHRyYW5zbGl0ZXJhdG9ycywgY29uY2F0ZW5hdGVkCisgICAgICogd2l0aCAnOycgZGVsaW1pdGluZyB0aGVtLiAgRXF1aXZhbGVudCB0byB0aGUgcGVybGlzaCBleHByZXNzaW9uCisgICAgICogam9pbignOycsIG1hcCgkXy5nZXRJRCgpLCB0cmFuc2xpdGVyYXRvcnMpLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBqb2luSURzKFRyYW5zbGl0ZXJhdG9yW10gdHJhbnNsaXRlcmF0b3JzKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBpZCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPHRyYW5zbGl0ZXJhdG9ycy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKGkgPiAwKSB7CisgICAgICAgICAgICAgICAgaWQuYXBwZW5kKCc7Jyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZC5hcHBlbmQodHJhbnNsaXRlcmF0b3JzW2ldLmdldElEKCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpZC50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNwbGl0cyBhIHN0cmluZywgYXMgaW4gSmF2YVNjcmlwdAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZ1tdIHNwbGl0KFN0cmluZyBzLCBjaGFyIGRpdmlkZXIpIHsKKyAgICAgICAgLy8gY2hhbmdlZCBNRUQKKworCSAgICAvLyBzZWUgaG93IG1hbnkgdGhlcmUgYXJlCisJICAgIGludCBjb3VudCA9IDE7CisJICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcy5sZW5ndGgoKTsgKytpKSB7CisJICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gZGl2aWRlcikgKytjb3VudDsKKwkgICAgfQorCSAgICAKKwkgICAgLy8gbWFrZSBhbiBhcnJheSB3aXRoIHRoZW0KKwkgICAgU3RyaW5nW10gcmVzdWx0ID0gbmV3IFN0cmluZ1tjb3VudF07CisJICAgIGludCBsYXN0ID0gMDsKKwkgICAgaW50IGN1cnJlbnQgPSAwOworCSAgICBpbnQgaTsKKwkgICAgZm9yIChpID0gMDsgaSA8IHMubGVuZ3RoKCk7ICsraSkgeworCSAgICAgICAgaWYgKHMuY2hhckF0KGkpID09IGRpdmlkZXIpIHsKKwkgICAgICAgICAgICByZXN1bHRbY3VycmVudCsrXSA9IHMuc3Vic3RyaW5nKGxhc3QsaSk7CisJICAgICAgICAgICAgbGFzdCA9IGkrMTsKKwkgICAgICAgIH0KKwkgICAgfQorCSAgICByZXN1bHRbY3VycmVudCsrXSA9IHMuc3Vic3RyaW5nKGxhc3QsaSk7CisJICAgIHJldHVybiByZXN1bHQ7CisJfQorICAgIAorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHRyYW5zbGl0ZXJhdG9ycyBpbiB0aGlzIGNoYWluLgorICAgICAqIEByZXR1cm4gbnVtYmVyIG9mIHRyYW5zbGl0ZXJhdG9ycyBpbiB0aGlzIGNoYWluLgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0Q291bnQoKSB7CisgICAgICAgIHJldHVybiB0cmFucy5sZW5ndGg7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgdHJhbnNsaXRlcmF0b3IgYXQgdGhlIGdpdmVuIGluZGV4IGluIHRoaXMgY2hhaW4uCisgICAgICogQHBhcmFtIGluZGV4IGluZGV4IGludG8gY2hhaW4sIGZyb20gMCB0byA8Y29kZT5nZXRDb3VudCgpIC0gMTwvY29kZT4KKyAgICAgKiBAcmV0dXJuIHRyYW5zbGl0ZXJhdG9yIGF0IHRoZSBnaXZlbiBpbmRleAorICAgICAqLworICAgIHB1YmxpYyBUcmFuc2xpdGVyYXRvciBnZXRUcmFuc2xpdGVyYXRvcihpbnQgaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIHRyYW5zW2luZGV4XTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBUcmFuc2xpdGVyYXRvci4gIE1vZGlmeSB0aGUgdHJhbnNsaXRlcmF0b3JzIHRoYXQgbWFrZSB1cAorICAgICAqIHRoaXMgY29tcG91bmQgdHJhbnNsaXRlcmF0b3Igc28gdGhlaXIgZmlsdGVycyBhcmUgdGhlIGxvZ2ljYWwgQU5ECisgICAgICogb2YgdGhpcyB0cmFuc2xpdGVyYXRvcidzIGZpbHRlciBhbmQgdGhlaXIgb3duLiAgT3JpZ2luYWwgZmlsdGVycworICAgICAqIGFyZSBrZXB0IGluIHRoZSBmaWx0ZXJzIGFycmF5LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEZpbHRlcihVbmljb2RlRmlsdGVyIGYpIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIElmIHRoZXJlIGlzIGEgZmlsdGVyIEYgZm9yIHRoZSBjb21wb3VuZCB0cmFuc2xpdGVyYXRvciBhcyBhCisgICAgICAgICAqIHdob2xlLCB0aGVuIHdlIG5lZWQgdG8gbW9kaWZ5IGV2ZXJ5IG5vbi1udWxsIGZpbHRlciBmIGluCisgICAgICAgICAqIHRoZSBjaGFpbiB0byBiZSBmJyA9IEYgJiBmLgorICAgICAgICAgKgorICAgICAgICAgKiBJZiBhbnlvbmUgZWxzZSBpcyB1c2luZyB0aGUgdHJhbnNsaXRlcmF0b3JzIGluIHRoZSBjaGFpbgorICAgICAgICAgKiBvdXRzaWRlIG9mIHRoaXMgY29udGV4dCwgdGhleSB3aWxsIGdldCB1bmV4cGVjdGVkIHJlc3VsdHMuCisgICAgICAgICAqLworICAgICAgICBpZiAoZiA9PSBudWxsKSB7CisgICAgICAgICAgICAvLyBSZXN0b3JlIG9yaWdpbmFsIGZpbHRlcnMKKyAgICAgICAgICAgIGlmIChmaWx0ZXJzICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8ZmlsdGVycy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICB0cmFuc1tpXS5zZXRGaWx0ZXIoZmlsdGVyc1tpXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGZpbHRlcnMgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGZpbHRlcnMgPSBuZXcgVW5pY29kZUZpbHRlclt0cmFucy5sZW5ndGhdOworICAgICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxmaWx0ZXJzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGZpbHRlcnNbaV0gPSB0cmFuc1tpXS5nZXRGaWx0ZXIoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8ZmlsdGVycy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIHRyYW5zW2ldLnNldEZpbHRlcihVbmljb2RlRmlsdGVyTG9naWMuYW5kKGYsIGZpbHRlcnNbaV0pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzdXBlci5zZXRGaWx0ZXIoZik7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW1wbGVtZW50cyB7QGxpbmsgVHJhbnNsaXRlcmF0b3IjaGFuZGxlVHJhbnNsaXRlcmF0ZX0uCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlVHJhbnNsaXRlcmF0ZShSZXBsYWNlYWJsZSB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gaW5kZXgsIGJvb2xlYW4gaW5jcmVtZW50YWwpIHsKKyAgICAgICAgLyogQ2FsbCBlYWNoIHRyYW5zbGl0ZXJhdG9yIHdpdGggdGhlIHNhbWUgc3RhcnQgdmFsdWUgYW5kCisgICAgICAgICAqIGluaXRpYWwgY3Vyc29yIGluZGV4LCBidXQgd2l0aCB0aGUgbGltaXQgaW5kZXggYXMgbW9kaWZpZWQKKyAgICAgICAgICogYnkgcHJlY2VkaW5nIHRyYW5zbGl0ZXJhdG9ycy4gIFRoZSBjdXJzb3IgaW5kZXggbXVzdCBiZQorICAgICAgICAgKiByZXNldCBmb3IgZWFjaCB0cmFuc2xpdGVyYXRvciB0byBnaXZlIGVhY2ggYSBjaGFuY2UgdG8KKyAgICAgICAgICogdHJhbnNsaXRlcmF0ZSB0aGUgdGV4dC4gIFRoZSBpbml0aWFsIGN1cnNvciBpbmRleCBpcyBrbm93bgorICAgICAgICAgKiB0byBzdGlsbCBwb2ludCB0byB0aGUgc2FtZSBwbGFjZSBhZnRlciBlYWNoIHRyYW5zbGl0ZXJhdG9yCisgICAgICAgICAqIGlzIGNhbGxlZCBiZWNhdXNlIGVhY2ggdHJhbnNsaXRlcmF0b3Igd2lsbCBub3QgY2hhbmdlIHRoZQorICAgICAgICAgKiB0ZXh0IGJldHdlZW4gc3RhcnQgYW5kIHRoZSBpbml0aWFsIHZhbHVlIG9mIGN1cnNvci4KKyAgICAgICAgICoKKyAgICAgICAgICogSU1QT1JUQU5UOiBBZnRlciB0aGUgZmlyc3QgdHJhbnNsaXRlcmF0b3IsIGVhY2ggc3Vic2VxdWVudAorICAgICAgICAgKiB0cmFuc2xpdGVyYXRvciBvbmx5IGdldHMgdG8gdHJhbnNsaXRlcmF0ZSB0ZXh0IGNvbW1pdHRlZCBieQorICAgICAgICAgKiBwcmVjZWRpbmcgdHJhbnNsaXRlcmF0b3JzOyB0aGF0IGlzLCB0aGUgY3Vyc29yIChvdXRwdXQKKyAgICAgICAgICogdmFsdWUpIG9mIHRyYW5zbGl0ZXJhdG9yIGkgYmVjb21lcyB0aGUgbGltaXQgKGlucHV0IHZhbHVlKQorICAgICAgICAgKiBvZiB0cmFuc2xpdGVyYXRvciBpKzEuICBGaW5hbGx5LCB0aGUgb3ZlcmFsbCBsaW1pdCBpcyBmaXhlZAorICAgICAgICAgKiB1cCBiZWZvcmUgd2UgcmV0dXJuLgorICAgICAgICAgKgorICAgICAgICAgKiBBc3N1bXB0aW9ucyB3ZSBtYWtlIGhlcmU6CisgICAgICAgICAqICgxKSBzdGFydCA8PSBjdXJzb3IgPD0gbGltaXQgICAgO2N1cnNvciB2YWxpZCBvbiBlbnRyeQorICAgICAgICAgKiAoMikgY3Vyc29yIDw9IGN1cnNvcicgPD0gbGltaXQnIDtjdXJzb3IgZG9lc24ndCBtb3ZlIGJhY2sKKyAgICAgICAgICogKDMpIGN1cnNvciA8PSBsaW1pdCcgICAgICAgICAgICA7dGV4dCBiZWZvcmUgY3Vyc29yIHVuY2hhbmdlZAorICAgICAgICAgKiAtIGN1cnNvcicgaXMgdGhlIHZhbHVlIG9mIGN1cnNvciBhZnRlciBjYWxsaW5nIGhhbmRsZUtUCisgICAgICAgICAqIC0gbGltaXQnIGlzIHRoZSB2YWx1ZSBvZiBsaW1pdCBhZnRlciBjYWxsaW5nIGhhbmRsZUtUCisgICAgICAgICAqLworCisgICAgICAgIC8qKgorICAgICAgICAgKiBFeGFtcGxlOiAzIHRyYW5zbGl0ZXJhdG9ycy4gIFRoaXMgZXhhbXBsZSBpbGx1c3RyYXRlcyB0aGUKKyAgICAgICAgICogbWVjaGFuaWNzIHdlIG5lZWQgdG8gaW1wbGVtZW50LiAgUywgQywgYW5kIEwgYXJlIHRoZSBzdGFydCwKKyAgICAgICAgICogY3Vyc29yLCBhbmQgbGltaXQuICBnbCBpcyB0aGUgZ2xvYmFsTGltaXQuCisgICAgICAgICAqCisgICAgICAgICAqIDEuIGgtdSwgY2hhbmdlcyBoZXggdG8gVW5pY29kZQorICAgICAgICAgKgorICAgICAgICAgKiAgICA0ICA3ICBhICBkICAwICAgICAgNCAgNyAgYQorICAgICAgICAgKiAgICBhYmMvdTAwNjEvdSAgICA9PiAgYWJjYS91ICAgIAorICAgICAgICAgKiAgICBTICBDICAgICAgIEwgICAgICAgUyAgIEMgTCAgIGdsPWYtPmEKKyAgICAgICAgICoKKyAgICAgICAgICogMi4gdXB1cCwgY2hhbmdlcyAieCIgdG8gIlhYIgorICAgICAgICAgKgorICAgICAgICAgKiAgICA0ICA3ICBhICAgICAgIDQgIDcgIGEKKyAgICAgICAgICogICAgYWJjYS91ICAgID0+ICBhYmNBQS91ICAgIAorICAgICAgICAgKiAgICBTICBDTCAgICAgICAgIFMgICAgQyAgIAorICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgTCAgICBnbD1hLT5iCisgICAgICAgICAqIDMuIHUtaCwgY2hhbmdlcyBVbmljb2RlIHRvIGhleAorICAgICAgICAgKgorICAgICAgICAgKiAgICA0ICA3ICBhICAgICAgICA0ICA3ICBhICBkICAwICAzCisgICAgICAgICAqICAgIGFiY0FBL3UgICAgPT4gIGFiYy91MDA0MS91MDA0MS91ICAgIAorICAgICAgICAgKiAgICBTICBDIEwgICAgICAgICBTICAgICAgICAgICAgICBDCisgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwgICBnbD1iLT4xNQorICAgICAgICAgKiA0LiByZXR1cm4KKyAgICAgICAgICoKKyAgICAgICAgICogICAgNCAgNyAgYSAgZCAgMCAgMworICAgICAgICAgKiAgICBhYmMvdTAwNDEvdTAwNDEvdSAgICAKKyAgICAgICAgICogICAgUyBDIEwKKyAgICAgICAgICovCisgICAgICAgIGludCBjdXJzb3IgPSBpbmRleC5zdGFydDsKKyAgICAgICAgaW50IGxpbWl0ID0gaW5kZXgubGltaXQ7CisgICAgICAgIGludCBnbG9iYWxMaW1pdCA9IGxpbWl0OworICAgICAgICAvKiBnbG9iYWxMaW1pdCBpcyB0aGUgb3ZlcmFsbCBsaW1pdC4gIFdlIGtlZXAgdHJhY2sgb2YgdGhpcworICAgICAgICAgKiBzaW5jZSB3ZSBvdmVyd3JpdGUgaW5kZXguY29udGV4dExpbWl0IHdpdGggdGhlIHByZXZpb3VzCisgICAgICAgICAqIGluZGV4LnN0YXJ0LiAgQWZ0ZXIgZWFjaCB0cmFuc2xpdGVyYXRpb24sIHdlIHVwZGF0ZQorICAgICAgICAgKiBnbG9iYWxMaW1pdCBmb3IgaW5zZXJ0aW9ucyBvciBkZWxldGlvbnMgdGhhdCBoYXZlIGhhcHBlbmVkLgorICAgICAgICAgKi8KKworICAgICAgICBmb3IgKGludCBpPTA7IGk8dHJhbnMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGluZGV4LnN0YXJ0ID0gY3Vyc29yOyAvLyBSZXNldCBjdXJzb3IKKyAgICAgICAgICAgIGluZGV4LmxpbWl0ID0gbGltaXQ7CisKKyAgICAgICAgICAgIGlmIChERUJVRykgeworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoVXRpbGl0eS5lc2NhcGUoaSArICI6IFwiIiArCisgICAgICAgICAgICAgICAgICAgIHN1YnN0cmluZyh0ZXh0LCBpbmRleC5jb250ZXh0U3RhcnQsIGluZGV4LnN0YXJ0KSArICd8JyArCisgICAgICAgICAgICAgICAgICAgIHN1YnN0cmluZyh0ZXh0LCBpbmRleC5zdGFydCwgaW5kZXguY29udGV4dExpbWl0KSArCisgICAgICAgICAgICAgICAgICAgICJcIiAtPiBcIiIpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdHJhbnNbaV0uaGFuZGxlVHJhbnNsaXRlcmF0ZSh0ZXh0LCBpbmRleCwgaW5jcmVtZW50YWwpOworCisgICAgICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oVXRpbGl0eS5lc2NhcGUoCisgICAgICAgICAgICAgICAgICAgIHN1YnN0cmluZyh0ZXh0LCBpbmRleC5jb250ZXh0U3RhcnQsIGluZGV4LnN0YXJ0KSArICd8JyArCisgICAgICAgICAgICAgICAgICAgIHN1YnN0cmluZyh0ZXh0LCBpbmRleC5zdGFydCwgaW5kZXguY29udGV4dExpbWl0KSArCisgICAgICAgICAgICAgICAgICAgICciJykpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBBZGp1c3Qgb3ZlcmFsbCBsaW1pdCBmb3IgaW5zZXJ0aW9ucy9kZWxldGlvbnMKKyAgICAgICAgICAgIGdsb2JhbExpbWl0ICs9IGluZGV4LmxpbWl0IC0gbGltaXQ7CisgICAgICAgICAgICBsaW1pdCA9IGluZGV4LnN0YXJ0OyAvLyBNb3ZlIGxpbWl0IHRvIGVuZCBvZiBjb21taXR0ZWQgdGV4dAorICAgICAgICB9CisgICAgICAgIC8vIEN1cnNvciBpcyBnb29kIHdoZXJlIGl0IGlzIC0tIHdoZXJlIHRoZSBsYXN0CisgICAgICAgIC8vIHRyYW5zbGl0ZXJhdG9yIGxlZnQgaXQuICBMaW1pdCBuZWVkcyB0byBiZSBwdXQgYmFjaworICAgICAgICAvLyB3aGVyZSBpdCB3YXMsIG1vZHVsbyBhZGp1c3RtZW50cyBmb3IgZGVsZXRpb25zL2luc2VydGlvbnMuCisgICAgICAgIGluZGV4LmxpbWl0ID0gZ2xvYmFsTGltaXQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcHV0ZSBhbmQgc2V0IHRoZSBsZW5ndGggb2YgdGhlIGxvbmdlc3QgY29udGV4dCByZXF1aXJlZCBieSB0aGlzIHRyYW5zbGl0ZXJhdG9yLgorICAgICAqIFRoaXMgaXMgPGVtPnByZWNlZGluZzwvZW0+IGNvbnRleHQuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGNvbXB1dGVNYXhpbXVtQ29udGV4dExlbmd0aCgpIHsKKyAgICAgICAgaW50IG1heCA9IDA7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTx0cmFucy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaW50IGxlbiA9IHRyYW5zW2ldLmdldE1heGltdW1Db250ZXh0TGVuZ3RoKCk7CisgICAgICAgICAgICBpZiAobGVuID4gbWF4KSB7CisgICAgICAgICAgICAgICAgbWF4ID0gbGVuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNldE1heGltdW1Db250ZXh0TGVuZ3RoKG1heCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogREVCVUcKKyAgICAgKiBSZXR1cm5zIGEgc3Vic3RyaW5nIG9mIGEgUmVwbGFjZWFibGUuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIHN1YnN0cmluZyhSZXBsYWNlYWJsZSBzdHIsIGludCBzdGFydCwgaW50IGxpbWl0KSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIHdoaWxlIChzdGFydCA8IGxpbWl0KSB7CisgICAgICAgICAgICBidWYuYXBwZW5kKHN0ci5jaGFyQXQoc3RhcnQrKykpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L0RhdGVGb3JtYXQuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvRGF0ZUZvcm1hdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmRhNzVkMjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L0RhdGVGb3JtYXQuamF2YQpAQCAtMCwwICsxLDc2OCBAQAorLyoKKyAqIEAoIylEYXRlRm9ybWF0LmphdmEJMS4zNyA5OS8xMS8wMgorICoKKyAqIChDKSBDb3B5cmlnaHQgVGFsaWdlbnQsIEluYy4gMTk5NiAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTYgLSBBbGwgUmlnaHRzIFJlc2VydmVkCisgKgorICogUG9ydGlvbnMgY29weXJpZ2h0IChjKSAxOTk2LTE5OTggU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICAgVGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhpcyBzb3VyY2UgY29kZSBhbmQgZG9jdW1lbnRhdGlvbiBpcyBjb3B5cmlnaHRlZAorICogYW5kIG93bmVkIGJ5IFRhbGlnZW50LCBJbmMuLCBhIHdob2xseS1vd25lZCBzdWJzaWRpYXJ5IG9mIElCTS4gVGhlc2UKKyAqIG1hdGVyaWFscyBhcmUgcHJvdmlkZWQgdW5kZXIgdGVybXMgb2YgYSBMaWNlbnNlIEFncmVlbWVudCBiZXR3ZWVuIFRhbGlnZW50CisgKiBhbmQgU3VuLiBUaGlzIHRlY2hub2xvZ3kgaXMgcHJvdGVjdGVkIGJ5IG11bHRpcGxlIFVTIGFuZCBJbnRlcm5hdGlvbmFsCisgKiBwYXRlbnRzLiBUaGlzIG5vdGljZSBhbmQgYXR0cmlidXRpb24gdG8gVGFsaWdlbnQgbWF5IG5vdCBiZSByZW1vdmVkLgorICogICBUYWxpZ2VudCBpcyBhIHJlZ2lzdGVyZWQgdHJhZGVtYXJrIG9mIFRhbGlnZW50LCBJbmMuCisgKgorICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQorICogYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBOT04tQ09NTUVSQ0lBTCBwdXJwb3NlcyBhbmQgd2l0aG91dAorICogZmVlIGlzIGhlcmVieSBncmFudGVkIHByb3ZpZGVkIHRoYXQgdGhpcyBjb3B5cmlnaHQgbm90aWNlCisgKiBhcHBlYXJzIGluIGFsbCBjb3BpZXMuIFBsZWFzZSByZWZlciB0byB0aGUgZmlsZSAiY29weXJpZ2h0Lmh0bWwiCisgKiBmb3IgZnVydGhlciBpbXBvcnRhbnQgY29weXJpZ2h0IGFuZCBsaWNlbnNpbmcgaW5mb3JtYXRpb24uCisgKgorICogU1VOIE1BS0VTIE5PIFJFUFJFU0VOVEFUSU9OUyBPUiBXQVJSQU5USUVTIEFCT1VUIFRIRSBTVUlUQUJJTElUWSBPRgorICogVEhFIFNPRlRXQVJFLCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVECisgKiBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQQorICogUEFSVElDVUxBUiBQVVJQT1NFLCBPUiBOT04tSU5GUklOR0VNRU5ULiBTVU4gU0hBTEwgTk9UIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBEQU1BR0VTIFNVRkZFUkVEIEJZIExJQ0VOU0VFIEFTIEEgUkVTVUxUIE9GIFVTSU5HLCBNT0RJRllJTkcgT1IKKyAqIERJU1RSSUJVVElORyBUSElTIFNPRlRXQVJFIE9SIElUUyBERVJJVkFUSVZFUy4KKyAqCisgKi8KKworcGFja2FnZSBjb20uaWJtLnRleHQ7CitpbXBvcnQgamF2YS50ZXh0LkZvcm1hdDsKK2ltcG9ydCBqYXZhLnRleHQuRmllbGRQb3NpdGlvbjsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VQb3NpdGlvbjsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VFeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGU7CitpbXBvcnQgamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbjsKK2ltcG9ydCBjb20uaWJtLnV0aWwuVGltZVpvbmU7CitpbXBvcnQgY29tLmlibS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGNvbS5pYm0udXRpbC5HcmVnb3JpYW5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnRleHQucmVzb3VyY2VzLio7CisKKy8qKgorICogRGF0ZUZvcm1hdCBpcyBhbiBhYnN0cmFjdCBjbGFzcyBmb3IgZGF0ZS90aW1lIGZvcm1hdHRpbmcgc3ViY2xhc3NlcyB3aGljaAorICogZm9ybWF0cyBhbmQgcGFyc2VzIGRhdGVzIG9yIHRpbWUgaW4gYSBsYW5ndWFnZS1pbmRlcGVuZGVudCBtYW5uZXIuCisgKiBUaGUgZGF0ZS90aW1lIGZvcm1hdHRpbmcgc3ViY2xhc3MsIHN1Y2ggYXMgU2ltcGxlRGF0ZUZvcm1hdCwgYWxsb3dzIGZvcgorICogZm9ybWF0dGluZyAoaS5lLiwgZGF0ZSAtPiB0ZXh0KSwgcGFyc2luZyAodGV4dCAtPiBkYXRlKSwgYW5kCisgKiBub3JtYWxpemF0aW9uLiAgVGhlIGRhdGUgaXMgcmVwcmVzZW50ZWQgYXMgYSA8Y29kZT5EYXRlPC9jb2RlPiBvYmplY3Qgb3IKKyAqIGFzIHRoZSBtaWxsaXNlY29uZHMgc2luY2UgSmFudWFyeSAxLCAxOTcwLCAwMDowMDowMCBHTVQuCisgKgorICogPHA+RGF0ZUZvcm1hdCBwcm92aWRlcyBtYW55IGNsYXNzIG1ldGhvZHMgZm9yIG9idGFpbmluZyBkZWZhdWx0IGRhdGUvdGltZQorICogZm9ybWF0dGVycyBiYXNlZCBvbiB0aGUgZGVmYXVsdCBvciBhIGdpdmVuIGxvYWNsZSBhbmQgYSBudW1iZXIgb2YgZm9ybWF0dGluZworICogc3R5bGVzLiBUaGUgZm9ybWF0dGluZyBzdHlsZXMgaW5jbHVkZSBGVUxMLCBMT05HLCBNRURJVU0sIGFuZCBTSE9SVC4gTW9yZQorICogZGV0YWlsIGFuZCBleGFtcGxlcyBvZiB1c2luZyB0aGVzZSBzdHlsZXMgYXJlIHByb3ZpZGVkIGluIHRoZSBtZXRob2QKKyAqIGRlc2NyaXB0aW9ucy4KKyAqCisgKiA8cD5EYXRlRm9ybWF0IGhlbHBzIHlvdSB0byBmb3JtYXQgYW5kIHBhcnNlIGRhdGVzIGZvciBhbnkgbG9jYWxlLgorICogWW91ciBjb2RlIGNhbiBiZSBjb21wbGV0ZWx5IGluZGVwZW5kZW50IG9mIHRoZSBsb2NhbGUgY29udmVudGlvbnMgZm9yCisgKiBtb250aHMsIGRheXMgb2YgdGhlIHdlZWssIG9yIGV2ZW4gdGhlIGNhbGVuZGFyIGZvcm1hdDogbHVuYXIgdnMuIHNvbGFyLgorICoKKyAqIDxwPlRvIGZvcm1hdCBhIGRhdGUgZm9yIHRoZSBjdXJyZW50IExvY2FsZSwgdXNlIG9uZSBvZiB0aGUKKyAqIHN0YXRpYyBmYWN0b3J5IG1ldGhvZHM6CisgKiA8cHJlPgorICogIG15U3RyaW5nID0gRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoKS5mb3JtYXQobXlEYXRlKTsKKyAqIDwvcHJlPgorICogPHA+SWYgeW91IGFyZSBmb3JtYXR0aW5nIG11bHRpcGxlIG51bWJlcnMsIGl0IGlzCisgKiBtb3JlIGVmZmljaWVudCB0byBnZXQgdGhlIGZvcm1hdCBhbmQgdXNlIGl0IG11bHRpcGxlIHRpbWVzIHNvIHRoYXQKKyAqIHRoZSBzeXN0ZW0gZG9lc24ndCBoYXZlIHRvIGZldGNoIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbG9jYWwKKyAqIGxhbmd1YWdlIGFuZCBjb3VudHJ5IGNvbnZlbnRpb25zIG11bHRpcGxlIHRpbWVzLgorICogPHByZT4KKyAqICBEYXRlRm9ybWF0IGRmID0gRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoKTsKKyAqICBmb3IgKGludCBpID0gMDsgaSA8IGEubGVuZ3RoOyArK2kpIHsKKyAqICAgIG91dHB1dC5wcmludGxuKGRmLmZvcm1hdChteURhdGVbaV0pICsgIjsgIik7CisgKiAgfQorICogPC9wcmU+CisgKiA8cD5UbyBmb3JtYXQgYSBudW1iZXIgZm9yIGEgZGlmZmVyZW50IExvY2FsZSwgc3BlY2lmeSBpdCBpbiB0aGUKKyAqIGNhbGwgdG8gZ2V0RGF0ZUluc3RhbmNlKCkuCisgKiA8cHJlPgorICogIERhdGVGb3JtYXQgZGYgPSBEYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZShMb2NhbGUuRlJBTkNFKTsKKyAqIDwvcHJlPgorICogPHA+WW91IGNhbiB1c2UgYSBEYXRlRm9ybWF0IHRvIHBhcnNlIGFsc28uCisgKiA8cHJlPgorICogIG15RGF0ZSA9IGRmLnBhcnNlKG15U3RyaW5nKTsKKyAqIDwvcHJlPgorICogPHA+VXNlIGdldERhdGVJbnN0YW5jZSB0byBnZXQgdGhlIG5vcm1hbCBkYXRlIGZvcm1hdCBmb3IgdGhhdCBjb3VudHJ5LgorICogVGhlcmUgYXJlIG90aGVyIHN0YXRpYyBmYWN0b3J5IG1ldGhvZHMgYXZhaWxhYmxlLgorICogVXNlIGdldFRpbWVJbnN0YW5jZSB0byBnZXQgdGhlIHRpbWUgZm9ybWF0IGZvciB0aGF0IGNvdW50cnkuCisgKiBVc2UgZ2V0RGF0ZVRpbWVJbnN0YW5jZSB0byBnZXQgYSBkYXRlIGFuZCB0aW1lIGZvcm1hdC4gWW91IGNhbiBwYXNzIGluIAorICogZGlmZmVyZW50IG9wdGlvbnMgdG8gdGhlc2UgZmFjdG9yeSBtZXRob2RzIHRvIGNvbnRyb2wgdGhlIGxlbmd0aCBvZiB0aGUKKyAqIHJlc3VsdDsgZnJvbSBTSE9SVCB0byBNRURJVU0gdG8gTE9ORyB0byBGVUxMLiBUaGUgZXhhY3QgcmVzdWx0IGRlcGVuZHMKKyAqIG9uIHRoZSBsb2NhbGUsIGJ1dCBnZW5lcmFsbHk6CisgKiA8dWw+PGxpPlNIT1JUIGlzIGNvbXBsZXRlbHkgbnVtZXJpYywgc3VjaCBhcyAxMi4xMy41MiBvciAzOjMwcG0KKyAqIDxsaT5NRURJVU0gaXMgbG9uZ2VyLCBzdWNoIGFzIEphbiAxMiwgMTk1MgorICogPGxpPkxPTkcgaXMgbG9uZ2VyLCBzdWNoIGFzIEphbnVhcnkgMTIsIDE5NTIgb3IgMzozMDozMnBtCisgKiA8bGk+RlVMTCBpcyBwcmV0dHkgY29tcGxldGVseSBzcGVjaWZpZWQsIHN1Y2ggYXMKKyAqIFR1ZXNkYXksIEFwcmlsIDEyLCAxOTUyIEFEIG9yIDM6MzA6NDJwbSBQU1QuCisgKiA8L3VsPgorICoKKyAqIDxwPllvdSBjYW4gYWxzbyBzZXQgdGhlIHRpbWUgem9uZSBvbiB0aGUgZm9ybWF0IGlmIHlvdSB3aXNoLgorICogSWYgeW91IHdhbnQgZXZlbiBtb3JlIGNvbnRyb2wgb3ZlciB0aGUgZm9ybWF0IG9yIHBhcnNpbmcsCisgKiAob3Igd2FudCB0byBnaXZlIHlvdXIgdXNlcnMgbW9yZSBjb250cm9sKSwKKyAqIHlvdSBjYW4gdHJ5IGNhc3RpbmcgdGhlIERhdGVGb3JtYXQgeW91IGdldCBmcm9tIHRoZSBmYWN0b3J5IG1ldGhvZHMKKyAqIHRvIGEgU2ltcGxlRGF0ZUZvcm1hdC4gVGhpcyB3aWxsIHdvcmsgZm9yIHRoZSBtYWpvcml0eQorICogb2YgY291bnRyaWVzOyBqdXN0IHJlbWVtYmVyIHRvIHB1dCBpdCBpbiBhIHRyeSBibG9jayBpbiBjYXNlIHlvdQorICogZW5jb3VudGVyIGFuIHVudXN1YWwgb25lLgorICoKKyAqIDxwPllvdSBjYW4gYWxzbyB1c2UgZm9ybXMgb2YgdGhlIHBhcnNlIGFuZCBmb3JtYXQgbWV0aG9kcyB3aXRoCisgKiBQYXJzZVBvc2l0aW9uIGFuZCBGaWVsZFBvc2l0aW9uIHRvCisgKiBhbGxvdyB5b3UgdG8KKyAqIDx1bD48bGk+cHJvZ3Jlc3NpdmVseSBwYXJzZSB0aHJvdWdoIHBpZWNlcyBvZiBhIHN0cmluZy4KKyAqIDxsaT5hbGlnbiBhbnkgcGFydGljdWxhciBmaWVsZCwgb3IgZmluZCBvdXQgd2hlcmUgaXQgaXMgZm9yIHNlbGVjdGlvbgorICogb24gdGhlIHNjcmVlbi4KKyAqIDwvdWw+CisgKgorICogQHNlZSAgICAgICAgICBGb3JtYXQKKyAqIEBzZWUgICAgICAgICAgTnVtYmVyRm9ybWF0CisgKiBAc2VlICAgICAgICAgIFNpbXBsZURhdGVGb3JtYXQKKyAqIEBzZWUgICAgICAgICAgY29tLmlibS51dGlsLkNhbGVuZGFyCisgKiBAc2VlICAgICAgICAgIGNvbS5pYm0udXRpbC5HcmVnb3JpYW5DYWxlbmRhcgorICogQHNlZSAgICAgICAgICBjb20uaWJtLnV0aWwuVGltZVpvbmUKKyAqIEB2ZXJzaW9uICAgICAgMS4zNyAxMS8wMi85OQorICogQGF1dGhvciAgICAgICBNYXJrIERhdmlzLCBDaGVuLUxpZWggSHVhbmcsIEFsYW4gTGl1CisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBEYXRlRm9ybWF0IGV4dGVuZHMgRm9ybWF0IHsKKworICAgIC8qKgorICAgICAqIFRoZSBjYWxlbmRhciB0aGF0IDxjb2RlPkRhdGVGb3JtYXQ8L2NvZGU+IHVzZXMgdG8gcHJvZHVjZSB0aGUgdGltZSBmaWVsZAorICAgICAqIHZhbHVlcyBuZWVkZWQgdG8gaW1wbGVtZW50IGRhdGUgYW5kIHRpbWUgZm9ybWF0dGluZy4gIFN1YmNsYXNzZXMgc2hvdWxkCisgICAgICogaW5pdGlhbGl6ZSB0aGlzIHRvIGEgY2FsZW5kYXIgYXBwcm9wcmlhdGUgZm9yIHRoZSBsb2NhbGUgYXNzb2NpYXRlZCB3aXRoCisgICAgICogdGhpcyA8Y29kZT5EYXRlRm9ybWF0PC9jb2RlPi4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJvdGVjdGVkIENhbGVuZGFyIGNhbGVuZGFyOworCisgICAgLyoqCisgICAgICogVGhlIG51bWJlciBmb3JtYXR0ZXIgdGhhdCA8Y29kZT5EYXRlRm9ybWF0PC9jb2RlPiB1c2VzIHRvIGZvcm1hdCBudW1iZXJzCisgICAgICogaW4gZGF0ZXMgYW5kIHRpbWVzLiAgU3ViY2xhc3NlcyBzaG91bGQgaW5pdGlhbGl6ZSB0aGlzIHRvIGEgbnVtYmVyIGZvcm1hdAorICAgICAqIGFwcHJvcHJpYXRlIGZvciB0aGUgbG9jYWxlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIDxjb2RlPkRhdGVGb3JtYXQ8L2NvZGU+LgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgTnVtYmVyRm9ybWF0IG51bWJlckZvcm1hdDsKKworICAgIC8qKgorICAgICAqIFVzZWZ1bCBjb25zdGFudCBmb3IgRVJBIGZpZWxkIGFsaWdubWVudC4KKyAgICAgKiBVc2VkIGluIEZpZWxkUG9zaXRpb24gb2YgZGF0ZS90aW1lIGZvcm1hdHRpbmcuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgRVJBX0ZJRUxEID0gMDsKKyAgICAvKioKKyAgICAgKiBVc2VmdWwgY29uc3RhbnQgZm9yIFlFQVIgZmllbGQgYWxpZ25tZW50LgorICAgICAqIFVzZWQgaW4gRmllbGRQb3NpdGlvbiBvZiBkYXRlL3RpbWUgZm9ybWF0dGluZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBZRUFSX0ZJRUxEID0gMTsKKyAgICAvKioKKyAgICAgKiBVc2VmdWwgY29uc3RhbnQgZm9yIE1PTlRIIGZpZWxkIGFsaWdubWVudC4KKyAgICAgKiBVc2VkIGluIEZpZWxkUG9zaXRpb24gb2YgZGF0ZS90aW1lIGZvcm1hdHRpbmcuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgTU9OVEhfRklFTEQgPSAyOworICAgIC8qKgorICAgICAqIFVzZWZ1bCBjb25zdGFudCBmb3IgREFURSBmaWVsZCBhbGlnbm1lbnQuCisgICAgICogVXNlZCBpbiBGaWVsZFBvc2l0aW9uIG9mIGRhdGUvdGltZSBmb3JtYXR0aW5nLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IERBVEVfRklFTEQgPSAzOworICAgIC8qKgorICAgICAqIFVzZWZ1bCBjb25zdGFudCBmb3Igb25lLWJhc2VkIEhPVVJfT0ZfREFZIGZpZWxkIGFsaWdubWVudC4KKyAgICAgKiBVc2VkIGluIEZpZWxkUG9zaXRpb24gb2YgZGF0ZS90aW1lIGZvcm1hdHRpbmcuCisgICAgICogSE9VUl9PRl9EQVkxX0ZJRUxEIGlzIHVzZWQgZm9yIHRoZSBvbmUtYmFzZWQgMjQtaG91ciBjbG9jay4KKyAgICAgKiBGb3IgZXhhbXBsZSwgMjM6NTkgKyAwMTowMCByZXN1bHRzIGluIDI0OjU5LgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IEhPVVJfT0ZfREFZMV9GSUVMRCA9IDQ7CisgICAgLyoqCisgICAgICogVXNlZnVsIGNvbnN0YW50IGZvciB6ZXJvLWJhc2VkIEhPVVJfT0ZfREFZIGZpZWxkIGFsaWdubWVudC4KKyAgICAgKiBVc2VkIGluIEZpZWxkUG9zaXRpb24gb2YgZGF0ZS90aW1lIGZvcm1hdHRpbmcuCisgICAgICogSE9VUl9PRl9EQVkwX0ZJRUxEIGlzIHVzZWQgZm9yIHRoZSB6ZXJvLWJhc2VkIDI0LWhvdXIgY2xvY2suCisgICAgICogRm9yIGV4YW1wbGUsIDIzOjU5ICsgMDE6MDAgcmVzdWx0cyBpbiAwMDo1OS4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBIT1VSX09GX0RBWTBfRklFTEQgPSA1OworICAgIC8qKgorICAgICAqIFVzZWZ1bCBjb25zdGFudCBmb3IgTUlOVVRFIGZpZWxkIGFsaWdubWVudC4KKyAgICAgKiBVc2VkIGluIEZpZWxkUG9zaXRpb24gb2YgZGF0ZS90aW1lIGZvcm1hdHRpbmcuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgTUlOVVRFX0ZJRUxEID0gNjsKKyAgICAvKioKKyAgICAgKiBVc2VmdWwgY29uc3RhbnQgZm9yIFNFQ09ORCBmaWVsZCBhbGlnbm1lbnQuCisgICAgICogVXNlZCBpbiBGaWVsZFBvc2l0aW9uIG9mIGRhdGUvdGltZSBmb3JtYXR0aW5nLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFNFQ09ORF9GSUVMRCA9IDc7CisgICAgLyoqCisgICAgICogVXNlZnVsIGNvbnN0YW50IGZvciBNSUxMSVNFQ09ORCBmaWVsZCBhbGlnbm1lbnQuCisgICAgICogVXNlZCBpbiBGaWVsZFBvc2l0aW9uIG9mIGRhdGUvdGltZSBmb3JtYXR0aW5nLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IE1JTExJU0VDT05EX0ZJRUxEID0gODsKKyAgICAvKioKKyAgICAgKiBVc2VmdWwgY29uc3RhbnQgZm9yIERBWV9PRl9XRUVLIGZpZWxkIGFsaWdubWVudC4KKyAgICAgKiBVc2VkIGluIEZpZWxkUG9zaXRpb24gb2YgZGF0ZS90aW1lIGZvcm1hdHRpbmcuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgREFZX09GX1dFRUtfRklFTEQgPSA5OworICAgIC8qKgorICAgICAqIFVzZWZ1bCBjb25zdGFudCBmb3IgREFZX09GX1lFQVIgZmllbGQgYWxpZ25tZW50LgorICAgICAqIFVzZWQgaW4gRmllbGRQb3NpdGlvbiBvZiBkYXRlL3RpbWUgZm9ybWF0dGluZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBEQVlfT0ZfWUVBUl9GSUVMRCA9IDEwOworICAgIC8qKgorICAgICAqIFVzZWZ1bCBjb25zdGFudCBmb3IgREFZX09GX1dFRUtfSU5fTU9OVEggZmllbGQgYWxpZ25tZW50LgorICAgICAqIFVzZWQgaW4gRmllbGRQb3NpdGlvbiBvZiBkYXRlL3RpbWUgZm9ybWF0dGluZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBEQVlfT0ZfV0VFS19JTl9NT05USF9GSUVMRCA9IDExOworICAgIC8qKgorICAgICAqIFVzZWZ1bCBjb25zdGFudCBmb3IgV0VFS19PRl9ZRUFSIGZpZWxkIGFsaWdubWVudC4KKyAgICAgKiBVc2VkIGluIEZpZWxkUG9zaXRpb24gb2YgZGF0ZS90aW1lIGZvcm1hdHRpbmcuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgV0VFS19PRl9ZRUFSX0ZJRUxEID0gMTI7CisgICAgLyoqCisgICAgICogVXNlZnVsIGNvbnN0YW50IGZvciBXRUVLX09GX01PTlRIIGZpZWxkIGFsaWdubWVudC4KKyAgICAgKiBVc2VkIGluIEZpZWxkUG9zaXRpb24gb2YgZGF0ZS90aW1lIGZvcm1hdHRpbmcuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgV0VFS19PRl9NT05USF9GSUVMRCA9IDEzOworICAgIC8qKgorICAgICAqIFVzZWZ1bCBjb25zdGFudCBmb3IgQU1fUE0gZmllbGQgYWxpZ25tZW50LgorICAgICAqIFVzZWQgaW4gRmllbGRQb3NpdGlvbiBvZiBkYXRlL3RpbWUgZm9ybWF0dGluZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBBTV9QTV9GSUVMRCA9IDE0OworICAgIC8qKgorICAgICAqIFVzZWZ1bCBjb25zdGFudCBmb3Igb25lLWJhc2VkIEhPVVIgZmllbGQgYWxpZ25tZW50LgorICAgICAqIFVzZWQgaW4gRmllbGRQb3NpdGlvbiBvZiBkYXRlL3RpbWUgZm9ybWF0dGluZy4KKyAgICAgKiBIT1VSMV9GSUVMRCBpcyB1c2VkIGZvciB0aGUgb25lLWJhc2VkIDEyLWhvdXIgY2xvY2suCisgICAgICogRm9yIGV4YW1wbGUsIDExOjMwIFBNICsgMSBob3VyIHJlc3VsdHMgaW4gMTI6MzAgQU0uCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgSE9VUjFfRklFTEQgPSAxNTsKKyAgICAvKioKKyAgICAgKiBVc2VmdWwgY29uc3RhbnQgZm9yIHplcm8tYmFzZWQgSE9VUiBmaWVsZCBhbGlnbm1lbnQuCisgICAgICogVXNlZCBpbiBGaWVsZFBvc2l0aW9uIG9mIGRhdGUvdGltZSBmb3JtYXR0aW5nLgorICAgICAqIEhPVVIwX0ZJRUxEIGlzIHVzZWQgZm9yIHRoZSB6ZXJvLWJhc2VkIDEyLWhvdXIgY2xvY2suCisgICAgICogRm9yIGV4YW1wbGUsIDExOjMwIFBNICsgMSBob3VyIHJlc3VsdHMgaW4gMDA6MzAgQU0uCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgSE9VUjBfRklFTEQgPSAxNjsKKyAgICAvKioKKyAgICAgKiBVc2VmdWwgY29uc3RhbnQgZm9yIFRJTUVaT05FIGZpZWxkIGFsaWdubWVudC4KKyAgICAgKiBVc2VkIGluIEZpZWxkUG9zaXRpb24gb2YgZGF0ZS90aW1lIGZvcm1hdHRpbmcuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgVElNRVpPTkVfRklFTEQgPSAxNzsKKworICAgIC8vIFByb2NsYWltIHNlcmlhbCBjb21wYXRpYmlsaXR5IHdpdGggMS4xIEZDUworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDcyMTgzMjIzMDY2NDk5NTM3ODhMOworCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIEZvcm1hdC4KKyAgICAgKiBGb3JtYXRzIGEgdGltZSBvYmplY3QgaW50byBhIHRpbWUgc3RyaW5nLiBFeGFtcGxlcyBvZiB0aW1lIG9iamVjdHMKKyAgICAgKiBhcmUgYSB0aW1lIHZhbHVlIGV4cHJlc3NlZCBpbiBtaWxsaXNlY29uZHMgYW5kIGEgRGF0ZSBvYmplY3QuCisgICAgICogQHBhcmFtIG9iaiBtdXN0IGJlIGEgTnVtYmVyIG9yIGEgRGF0ZS4KKyAgICAgKiBAcGFyYW0gdG9BcHBlbmRUbyB0aGUgc3RyaW5nIGJ1ZmZlciBmb3IgdGhlIHJldHVybmluZyB0aW1lIHN0cmluZy4KKyAgICAgKiBAcmV0dXJuIHRoZSBmb3JtYXR0ZWQgdGltZSBzdHJpbmcuCisgICAgICogQHBhcmFtIGZpZWxkUG9zaXRpb24ga2VlcHMgdHJhY2sgb2YgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaWVsZAorICAgICAqIHdpdGhpbiB0aGUgcmV0dXJuZWQgc3RyaW5nLgorICAgICAqIE9uIGlucHV0OiBhbiBhbGlnbm1lbnQgZmllbGQsCisgICAgICogaWYgZGVzaXJlZC4gT24gb3V0cHV0OiB0aGUgb2Zmc2V0cyBvZiB0aGUgYWxpZ25tZW50IGZpZWxkLiBGb3IKKyAgICAgKiBleGFtcGxlLCBnaXZlbiBhIHRpbWUgdGV4dCAiMTk5Ni4wNy4xMCBBRCBhdCAxNTowODo1NiBQRFQiLAorICAgICAqIGlmIHRoZSBnaXZlbiBmaWVsZFBvc2l0aW9uIGlzIERhdGVGb3JtYXQuWUVBUl9GSUVMRCwgdGhlCisgICAgICogYmVnaW4gaW5kZXggYW5kIGVuZCBpbmRleCBvZiBmaWVsZFBvc2l0aW9uIHdpbGwgYmUgc2V0IHRvCisgICAgICogMCBhbmQgNCwgcmVzcGVjdGl2ZWx5LgorICAgICAqIE5vdGljZSB0aGF0IGlmIHRoZSBzYW1lIHRpbWUgZmllbGQgYXBwZWFycworICAgICAqIG1vcmUgdGhhbiBvbmNlIGluIGEgcGF0dGVybiwgdGhlIGZpZWxkUG9zaXRpb24gd2lsbCBiZSBzZXQgZm9yIHRoZSBmaXJzdAorICAgICAqIG9jY3VyZW5jZSBvZiB0aGF0IHRpbWUgZmllbGQuIEZvciBpbnN0YW5jZSwgZm9ybWF0dGluZyBhIERhdGUgdG8KKyAgICAgKiB0aGUgdGltZSBzdHJpbmcgIjEgUE0gUERUIChQYWNpZmljIERheWxpZ2h0IFRpbWUpIiB1c2luZyB0aGUgcGF0dGVybgorICAgICAqICJoIGEgeiAoenp6eikiIGFuZCB0aGUgYWxpZ25tZW50IGZpZWxkIERhdGVGb3JtYXQuVElNRVpPTkVfRklFTEQsCisgICAgICogdGhlIGJlZ2luIGluZGV4IGFuZCBlbmQgaW5kZXggb2YgZmllbGRQb3NpdGlvbiB3aWxsIGJlIHNldCB0bworICAgICAqIDUgYW5kIDgsIHJlc3BlY3RpdmVseSwgZm9yIHRoZSBmaXJzdCBvY2N1cmVuY2Ugb2YgdGhlIHRpbWV6b25lCisgICAgICogcGF0dGVybiBjaGFyYWN0ZXIgJ3onLgorICAgICAqIEBzZWUgamF2YS50ZXh0LkZvcm1hdAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBTdHJpbmdCdWZmZXIgZm9ybWF0KE9iamVjdCBvYmosIFN0cmluZ0J1ZmZlciB0b0FwcGVuZFRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb24gZmllbGRQb3NpdGlvbikKKyAgICB7CisgICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBEYXRlKQorICAgICAgICAgICAgcmV0dXJuIGZvcm1hdCggKERhdGUpb2JqLCB0b0FwcGVuZFRvLCBmaWVsZFBvc2l0aW9uICk7CisgICAgICAgIGVsc2UgaWYgKG9iaiBpbnN0YW5jZW9mIE51bWJlcikKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXQoIG5ldyBEYXRlKCgoTnVtYmVyKW9iaikubG9uZ1ZhbHVlKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0b0FwcGVuZFRvLCBmaWVsZFBvc2l0aW9uICk7CisgICAgICAgIGVsc2UgCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJDYW5ub3QgZm9ybWF0IGdpdmVuIE9iamVjdCBhcyBhIERhdGUiKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGb3JtYXRzIGEgRGF0ZSBpbnRvIGEgZGF0ZS90aW1lIHN0cmluZy4KKyAgICAgKiBAcGFyYW0gZGF0ZSBhIERhdGUgdG8gYmUgZm9ybWF0dGVkIGludG8gYSBkYXRlL3RpbWUgc3RyaW5nLgorICAgICAqIEBwYXJhbSB0b0FwcGVuZFRvIHRoZSBzdHJpbmcgYnVmZmVyIGZvciB0aGUgcmV0dXJuaW5nIGRhdGUvdGltZSBzdHJpbmcuCisgICAgICogQHBhcmFtIGZpZWxkUG9zaXRpb24ga2VlcHMgdHJhY2sgb2YgdGhlIHBvc2l0aW9uIG9mIHRoZSBmaWVsZAorICAgICAqIHdpdGhpbiB0aGUgcmV0dXJuZWQgc3RyaW5nLgorICAgICAqIE9uIGlucHV0OiBhbiBhbGlnbm1lbnQgZmllbGQsCisgICAgICogaWYgZGVzaXJlZC4gT24gb3V0cHV0OiB0aGUgb2Zmc2V0cyBvZiB0aGUgYWxpZ25tZW50IGZpZWxkLiBGb3IKKyAgICAgKiBleGFtcGxlLCBnaXZlbiBhIHRpbWUgdGV4dCAiMTk5Ni4wNy4xMCBBRCBhdCAxNTowODo1NiBQRFQiLAorICAgICAqIGlmIHRoZSBnaXZlbiBmaWVsZFBvc2l0aW9uIGlzIERhdGVGb3JtYXQuWUVBUl9GSUVMRCwgdGhlCisgICAgICogYmVnaW4gaW5kZXggYW5kIGVuZCBpbmRleCBvZiBmaWVsZFBvc2l0aW9uIHdpbGwgYmUgc2V0IHRvCisgICAgICogMCBhbmQgNCwgcmVzcGVjdGl2ZWx5LgorICAgICAqIE5vdGljZSB0aGF0IGlmIHRoZSBzYW1lIHRpbWUgZmllbGQgYXBwZWFycworICAgICAqIG1vcmUgdGhhbiBvbmNlIGluIGEgcGF0dGVybiwgdGhlIGZpZWxkUG9zaXRpb24gd2lsbCBiZSBzZXQgZm9yIHRoZSBmaXJzdAorICAgICAqIG9jY3VyZW5jZSBvZiB0aGF0IHRpbWUgZmllbGQuIEZvciBpbnN0YW5jZSwgZm9ybWF0dGluZyBhIERhdGUgdG8KKyAgICAgKiB0aGUgdGltZSBzdHJpbmcgIjEgUE0gUERUIChQYWNpZmljIERheWxpZ2h0IFRpbWUpIiB1c2luZyB0aGUgcGF0dGVybgorICAgICAqICJoIGEgeiAoenp6eikiIGFuZCB0aGUgYWxpZ25tZW50IGZpZWxkIERhdGVGb3JtYXQuVElNRVpPTkVfRklFTEQsCisgICAgICogdGhlIGJlZ2luIGluZGV4IGFuZCBlbmQgaW5kZXggb2YgZmllbGRQb3NpdGlvbiB3aWxsIGJlIHNldCB0bworICAgICAqIDUgYW5kIDgsIHJlc3BlY3RpdmVseSwgZm9yIHRoZSBmaXJzdCBvY2N1cmVuY2Ugb2YgdGhlIHRpbWV6b25lCisgICAgICogcGF0dGVybiBjaGFyYWN0ZXIgJ3onLgorICAgICAqIEByZXR1cm4gdGhlIGZvcm1hdHRlZCBkYXRlL3RpbWUgc3RyaW5nLgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmdCdWZmZXIgZm9ybWF0KERhdGUgZGF0ZSwgU3RyaW5nQnVmZmVyIHRvQXBwZW5kVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiBmaWVsZFBvc2l0aW9uKTsKKworICAgIC8qKgorICAgICAqIEZvcm1hdHMgYSBEYXRlIGludG8gYSBkYXRlL3RpbWUgc3RyaW5nLgorICAgICAqIEBwYXJhbSBkYXRlIHRoZSB0aW1lIHZhbHVlIHRvIGJlIGZvcm1hdHRlZCBpbnRvIGEgdGltZSBzdHJpbmcuCisgICAgICogQHJldHVybiB0aGUgZm9ybWF0dGVkIHRpbWUgc3RyaW5nLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZm9ybWF0KERhdGUgZGF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBmb3JtYXQoZGF0ZSwgbmV3IFN0cmluZ0J1ZmZlcigpLG5ldyBGaWVsZFBvc2l0aW9uKDApKS50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFBhcnNlIGEgZGF0ZS90aW1lIHN0cmluZy4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0ZXh0ICBUaGUgZGF0ZS90aW1lIHN0cmluZyB0byBiZSBwYXJzZWQKKyAgICAgKgorICAgICAqIEByZXR1cm4gICAgICBBIERhdGUsIG9yIG51bGwgaWYgdGhlIGlucHV0IGNvdWxkIG5vdCBiZSBwYXJzZWQKKyAgICAgKgorICAgICAqIEBleGNlcHRpb24gIFBhcnNlRXhjZXB0aW9uICBJZiB0aGUgZ2l2ZW4gc3RyaW5nIGNhbm5vdCBiZSBwYXJzZWQgYXMgYSBkYXRlLgorICAgICAqCisgICAgICogQHNlZSAjcGFyc2UoU3RyaW5nLCBQYXJzZVBvc2l0aW9uKQorICAgICAqLworICAgIHB1YmxpYyBEYXRlIHBhcnNlKFN0cmluZyB0ZXh0KSB0aHJvd3MgUGFyc2VFeGNlcHRpb24KKyAgICB7CisgICAgICAgIFBhcnNlUG9zaXRpb24gcG9zID0gbmV3IFBhcnNlUG9zaXRpb24oMCk7CisgICAgICAgIERhdGUgcmVzdWx0ID0gcGFyc2UodGV4dCwgcG9zKTsKKyAgICAgICAgaWYgKHBvcy5nZXRJbmRleCgpID09IDApIC8vIElDVTRKCisgICAgICAgICAgICB0aHJvdyBuZXcgUGFyc2VFeGNlcHRpb24oIlVucGFyc2VhYmxlIGRhdGU6IFwiIiArIHRleHQgKyAiXCIiICwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MuZ2V0RXJyb3JJbmRleCgpKTsgLy8gSUNVNEoKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQYXJzZSBhIGRhdGUvdGltZSBzdHJpbmcgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBwYXJzZSBwb3NpdGlvbi4gIEZvcgorICAgICAqIGV4YW1wbGUsIGEgdGltZSB0ZXh0ICIwNy8xMC85NiA0OjUgUE0sIFBEVCIgd2lsbCBiZSBwYXJzZWQgaW50byBhIERhdGUKKyAgICAgKiB0aGF0IGlzIGVxdWl2YWxlbnQgdG8gRGF0ZSg4MzcwMzk5MjgwNDYpLgorICAgICAqCisgICAgICogPHA+IEJ5IGRlZmF1bHQsIHBhcnNpbmcgaXMgbGVuaWVudDogSWYgdGhlIGlucHV0IGlzIG5vdCBpbiB0aGUgZm9ybSB1c2VkCisgICAgICogYnkgdGhpcyBvYmplY3QncyBmb3JtYXQgbWV0aG9kIGJ1dCBjYW4gc3RpbGwgYmUgcGFyc2VkIGFzIGEgZGF0ZSwgdGhlbgorICAgICAqIHRoZSBwYXJzZSBzdWNjZWVkcy4gIENsaWVudHMgbWF5IGluc2lzdCBvbiBzdHJpY3QgYWRoZXJlbmNlIHRvIHRoZQorICAgICAqIGZvcm1hdCBieSBjYWxsaW5nIHNldExlbmllbnQoZmFsc2UpLgorICAgICAqCisgICAgICogQHNlZSAjc2V0TGVuaWVudChib29sZWFuKQorICAgICAqCisgICAgICogQHBhcmFtIHRleHQgIFRoZSBkYXRlL3RpbWUgc3RyaW5nIHRvIGJlIHBhcnNlZAorICAgICAqCisgICAgICogQHBhcmFtIHBvcyAgIE9uIGlucHV0LCB0aGUgcG9zaXRpb24gYXQgd2hpY2ggdG8gc3RhcnQgcGFyc2luZzsgb24KKyAgICAgKiAgICAgICAgICAgICAgb3V0cHV0LCB0aGUgcG9zaXRpb24gYXQgd2hpY2ggcGFyc2luZyB0ZXJtaW5hdGVkLCBvciB0aGUKKyAgICAgKiAgICAgICAgICAgICAgc3RhcnQgcG9zaXRpb24gaWYgdGhlIHBhcnNlIGZhaWxlZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gICAgICBBIERhdGUsIG9yIG51bGwgaWYgdGhlIGlucHV0IGNvdWxkIG5vdCBiZSBwYXJzZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgRGF0ZSBwYXJzZShTdHJpbmcgdGV4dCwgUGFyc2VQb3NpdGlvbiBwb3MpOworCisgICAgLyoqCisgICAgICogUGFyc2UgYSBkYXRlL3RpbWUgc3RyaW5nIGludG8gYW4gT2JqZWN0LiAgVGhpcyBjb252ZW5pZW5jZSBtZXRob2Qgc2ltcGx5CisgICAgICogY2FsbHMgcGFyc2UoU3RyaW5nLCBQYXJzZVBvc2l0aW9uKS4KKyAgICAgKgorICAgICAqIEBzZWUgI3BhcnNlKFN0cmluZywgUGFyc2VQb3NpdGlvbikKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IHBhcnNlT2JqZWN0IChTdHJpbmcgc291cmNlLCBQYXJzZVBvc2l0aW9uIHBvcykKKyAgICB7CisgICAgICAgIHJldHVybiBwYXJzZShzb3VyY2UsIHBvcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RhbnQgZm9yIGZ1bGwgc3R5bGUgcGF0dGVybi4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGVUxMID0gMDsKKyAgICAvKioKKyAgICAgKiBDb25zdGFudCBmb3IgbG9uZyBzdHlsZSBwYXR0ZXJuLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExPTkcgPSAxOworICAgIC8qKgorICAgICAqIENvbnN0YW50IGZvciBtZWRpdW0gc3R5bGUgcGF0dGVybi4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNRURJVU0gPSAyOworICAgIC8qKgorICAgICAqIENvbnN0YW50IGZvciBzaG9ydCBzdHlsZSBwYXR0ZXJuLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNIT1JUID0gMzsKKyAgICAvKioKKyAgICAgKiBDb25zdGFudCBmb3IgZGVmYXVsdCBzdHlsZSBwYXR0ZXJuLiAgSXRzIHZhbHVlIGlzIE1FRElVTS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBERUZBVUxUID0gTUVESVVNOworCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgdGltZSBmb3JtYXR0ZXIgd2l0aCB0aGUgZGVmYXVsdCBmb3JtYXR0aW5nIHN0eWxlCisgICAgICogZm9yIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBAcmV0dXJuIGEgdGltZSBmb3JtYXR0ZXIuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBEYXRlRm9ybWF0IGdldFRpbWVJbnN0YW5jZSgpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0KC0xLCBERUZBVUxULCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSB0aW1lIGZvcm1hdHRlciB3aXRoIHRoZSBnaXZlbiBmb3JtYXR0aW5nIHN0eWxlCisgICAgICogZm9yIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBAcGFyYW0gc3R5bGUgdGhlIGdpdmVuIGZvcm1hdHRpbmcgc3R5bGUuIEZvciBleGFtcGxlLAorICAgICAqIFNIT1JUIGZvciAiaDptbSBhIiBpbiB0aGUgVVMgbG9jYWxlLgorICAgICAqIEByZXR1cm4gYSB0aW1lIGZvcm1hdHRlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIERhdGVGb3JtYXQgZ2V0VGltZUluc3RhbmNlKGludCBzdHlsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXQoLTEsIHN0eWxlLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSB0aW1lIGZvcm1hdHRlciB3aXRoIHRoZSBnaXZlbiBmb3JtYXR0aW5nIHN0eWxlCisgICAgICogZm9yIHRoZSBnaXZlbiBsb2NhbGUuCisgICAgICogQHBhcmFtIHN0eWxlIHRoZSBnaXZlbiBmb3JtYXR0aW5nIHN0eWxlLiBGb3IgZXhhbXBsZSwKKyAgICAgKiBTSE9SVCBmb3IgImg6bW0gYSIgaW4gdGhlIFVTIGxvY2FsZS4KKyAgICAgKiBAcGFyYW0gYUxvY2FsZSB0aGUgZ2l2ZW4gbG9jYWxlLgorICAgICAqIEByZXR1cm4gYSB0aW1lIGZvcm1hdHRlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIERhdGVGb3JtYXQgZ2V0VGltZUluc3RhbmNlKGludCBzdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbGUgYUxvY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXQoLTEsIHN0eWxlLCBhTG9jYWxlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBkYXRlIGZvcm1hdHRlciB3aXRoIHRoZSBkZWZhdWx0IGZvcm1hdHRpbmcgc3R5bGUKKyAgICAgKiBmb3IgdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqIEByZXR1cm4gYSBkYXRlIGZvcm1hdHRlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIERhdGVGb3JtYXQgZ2V0RGF0ZUluc3RhbmNlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXQoREVGQVVMVCwgLTEsIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGRhdGUgZm9ybWF0dGVyIHdpdGggdGhlIGdpdmVuIGZvcm1hdHRpbmcgc3R5bGUKKyAgICAgKiBmb3IgdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqIEBwYXJhbSBzdHlsZSB0aGUgZ2l2ZW4gZm9ybWF0dGluZyBzdHlsZS4gRm9yIGV4YW1wbGUsCisgICAgICogU0hPUlQgZm9yICJNL2QveXkiIGluIHRoZSBVUyBsb2NhbGUuCisgICAgICogQHJldHVybiBhIGRhdGUgZm9ybWF0dGVyLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgRGF0ZUZvcm1hdCBnZXREYXRlSW5zdGFuY2UoaW50IHN0eWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldChzdHlsZSwgLTEsIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGRhdGUgZm9ybWF0dGVyIHdpdGggdGhlIGdpdmVuIGZvcm1hdHRpbmcgc3R5bGUKKyAgICAgKiBmb3IgdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKiBAcGFyYW0gc3R5bGUgdGhlIGdpdmVuIGZvcm1hdHRpbmcgc3R5bGUuIEZvciBleGFtcGxlLAorICAgICAqIFNIT1JUIGZvciAiTS9kL3l5IiBpbiB0aGUgVVMgbG9jYWxlLgorICAgICAqIEBwYXJhbSBhTG9jYWxlIHRoZSBnaXZlbiBsb2NhbGUuCisgICAgICogQHJldHVybiBhIGRhdGUgZm9ybWF0dGVyLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgRGF0ZUZvcm1hdCBnZXREYXRlSW5zdGFuY2UoaW50IHN0eWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsZSBhTG9jYWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldChzdHlsZSwgLTEsIGFMb2NhbGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGRhdGUvdGltZSBmb3JtYXR0ZXIgd2l0aCB0aGUgZGVmYXVsdCBmb3JtYXR0aW5nIHN0eWxlCisgICAgICogZm9yIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBAcmV0dXJuIGEgZGF0ZS90aW1lIGZvcm1hdHRlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIERhdGVGb3JtYXQgZ2V0RGF0ZVRpbWVJbnN0YW5jZSgpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0KERFRkFVTFQsIERFRkFVTFQsIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGRhdGUvdGltZSBmb3JtYXR0ZXIgd2l0aCB0aGUgZ2l2ZW4gZGF0ZSBhbmQgdGltZQorICAgICAqIGZvcm1hdHRpbmcgc3R5bGVzIGZvciB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICogQHBhcmFtIGRhdGVTdHlsZSB0aGUgZ2l2ZW4gZGF0ZSBmb3JtYXR0aW5nIHN0eWxlLiBGb3IgZXhhbXBsZSwKKyAgICAgKiBTSE9SVCBmb3IgIk0vZC95eSIgaW4gdGhlIFVTIGxvY2FsZS4KKyAgICAgKiBAcGFyYW0gdGltZVN0eWxlIHRoZSBnaXZlbiB0aW1lIGZvcm1hdHRpbmcgc3R5bGUuIEZvciBleGFtcGxlLAorICAgICAqIFNIT1JUIGZvciAiaDptbSBhIiBpbiB0aGUgVVMgbG9jYWxlLgorICAgICAqIEByZXR1cm4gYSBkYXRlL3RpbWUgZm9ybWF0dGVyLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgRGF0ZUZvcm1hdCBnZXREYXRlVGltZUluc3RhbmNlKGludCBkYXRlU3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRpbWVTdHlsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXQoZGF0ZVN0eWxlLCB0aW1lU3R5bGUsIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGRhdGUvdGltZSBmb3JtYXR0ZXIgd2l0aCB0aGUgZ2l2ZW4gZm9ybWF0dGluZyBzdHlsZXMKKyAgICAgKiBmb3IgdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKiBAcGFyYW0gZGF0ZVN0eWxlIHRoZSBnaXZlbiBkYXRlIGZvcm1hdHRpbmcgc3R5bGUuCisgICAgICogQHBhcmFtIHRpbWVTdHlsZSB0aGUgZ2l2ZW4gdGltZSBmb3JtYXR0aW5nIHN0eWxlLgorICAgICAqIEBwYXJhbSBhTG9jYWxlIHRoZSBnaXZlbiBsb2NhbGUuCisgICAgICogQHJldHVybiBhIGRhdGUvdGltZSBmb3JtYXR0ZXIuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBEYXRlRm9ybWF0CisgICAgICAgIGdldERhdGVUaW1lSW5zdGFuY2UoaW50IGRhdGVTdHlsZSwgaW50IHRpbWVTdHlsZSwgTG9jYWxlIGFMb2NhbGUpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0KGRhdGVTdHlsZSwgdGltZVN0eWxlLCBhTG9jYWxlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXQgYSBkZWZhdWx0IGRhdGUvdGltZSBmb3JtYXR0ZXIgdGhhdCB1c2VzIHRoZSBTSE9SVCBzdHlsZSBmb3IgYm90aCB0aGUKKyAgICAgKiBkYXRlIGFuZCB0aGUgdGltZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIERhdGVGb3JtYXQgZ2V0SW5zdGFuY2UoKSB7CisgICAgICAgIHJldHVybiBnZXREYXRlVGltZUluc3RhbmNlKFNIT1JULCBTSE9SVCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgc2V0IG9mIGxvY2FsZXMgZm9yIHdoaWNoIERhdGVGb3JtYXRzIGFyZSBpbnN0YWxsZWQuCisgICAgICogQHJldHVybiB0aGUgc2V0IG9mIGxvY2FsZXMgZm9yIHdoaWNoIERhdGVGb3JtYXRzIGFyZSBpbnN0YWxsZWQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBMb2NhbGVbXSBnZXRBdmFpbGFibGVMb2NhbGVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBMb2NhbGVEYXRhLmdldEF2YWlsYWJsZUxvY2FsZXMoIkRhdGVUaW1lUGF0dGVybnMiKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGNhbGVuZGFyIHRvIGJlIHVzZWQgYnkgdGhpcyBkYXRlIGZvcm1hdC4gIEluaXRpYWxseSwgdGhlIGRlZmF1bHQKKyAgICAgKiBjYWxlbmRhciBmb3IgdGhlIHNwZWNpZmllZCBvciBkZWZhdWx0IGxvY2FsZSBpcyB1c2VkLgorICAgICAqIEBwYXJhbSBuZXdDYWxlbmRhciB0aGUgbmV3IENhbGVuZGFyIHRvIGJlIHVzZWQgYnkgdGhlIGRhdGUgZm9ybWF0CisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Q2FsZW5kYXIoQ2FsZW5kYXIgbmV3Q2FsZW5kYXIpCisgICAgeworICAgICAgICB0aGlzLmNhbGVuZGFyID0gbmV3Q2FsZW5kYXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgY2FsZW5kYXIgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGF0ZS90aW1lIGZvcm1hdHRlci4KKyAgICAgKiBAcmV0dXJuIHRoZSBjYWxlbmRhciBhc3NvY2lhdGVkIHdpdGggdGhpcyBkYXRlL3RpbWUgZm9ybWF0dGVyLgorICAgICAqLworICAgIHB1YmxpYyBDYWxlbmRhciBnZXRDYWxlbmRhcigpCisgICAgeworICAgICAgICByZXR1cm4gY2FsZW5kYXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWxsb3dzIHlvdSB0byBzZXQgdGhlIG51bWJlciBmb3JtYXR0ZXIuCisgICAgICogQHBhcmFtIG5ld051bWJlckZvcm1hdCB0aGUgZ2l2ZW4gbmV3IE51bWJlckZvcm1hdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXROdW1iZXJGb3JtYXQoTnVtYmVyRm9ybWF0IG5ld051bWJlckZvcm1hdCkKKyAgICB7CisgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0ID0gbmV3TnVtYmVyRm9ybWF0OworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIG51bWJlciBmb3JtYXR0ZXIgd2hpY2ggdGhpcyBkYXRlL3RpbWUgZm9ybWF0dGVyIHVzZXMgdG8KKyAgICAgKiBmb3JtYXQgYW5kIHBhcnNlIGEgdGltZS4KKyAgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgZm9ybWF0dGVyIHdoaWNoIHRoaXMgZGF0ZS90aW1lIGZvcm1hdHRlciB1c2VzLgorICAgICAqLworICAgIHB1YmxpYyBOdW1iZXJGb3JtYXQgZ2V0TnVtYmVyRm9ybWF0KCkKKyAgICB7CisgICAgICAgIHJldHVybiBudW1iZXJGb3JtYXQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgdGltZSB6b25lIGZvciB0aGUgY2FsZW5kYXIgb2YgdGhpcyBEYXRlRm9ybWF0IG9iamVjdC4KKyAgICAgKiBAcGFyYW0gem9uZSB0aGUgZ2l2ZW4gbmV3IHRpbWUgem9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRUaW1lWm9uZShUaW1lWm9uZSB6b25lKQorICAgIHsKKyAgICAgICAgY2FsZW5kYXIuc2V0VGltZVpvbmUoem9uZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgdGltZSB6b25lLgorICAgICAqIEByZXR1cm4gdGhlIHRpbWUgem9uZSBhc3NvY2lhdGVkIHdpdGggdGhlIGNhbGVuZGFyIG9mIERhdGVGb3JtYXQuCisgICAgICovCisgICAgcHVibGljIFRpbWVab25lIGdldFRpbWVab25lKCkKKyAgICB7CisgICAgICAgIHJldHVybiBjYWxlbmRhci5nZXRUaW1lWm9uZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNwZWNpZnkgd2hldGhlciBvciBub3QgZGF0ZS90aW1lIHBhcnNpbmcgaXMgdG8gYmUgbGVuaWVudC4gIFdpdGgKKyAgICAgKiBsZW5pZW50IHBhcnNpbmcsIHRoZSBwYXJzZXIgbWF5IHVzZSBoZXVyaXN0aWNzIHRvIGludGVycHJldCBpbnB1dHMgdGhhdAorICAgICAqIGRvIG5vdCBwcmVjaXNlbHkgbWF0Y2ggdGhpcyBvYmplY3QncyBmb3JtYXQuICBXaXRoIHN0cmljdCBwYXJzaW5nLAorICAgICAqIGlucHV0cyBtdXN0IG1hdGNoIHRoaXMgb2JqZWN0J3MgZm9ybWF0LgorICAgICAqIEBwYXJhbSBsZW5pZW50IHdoZW4gdHJ1ZSwgcGFyc2luZyBpcyBsZW5pZW50CisgICAgICogQHNlZSBjb20uaWJtLnV0aWwuQ2FsZW5kYXIjc2V0TGVuaWVudAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldExlbmllbnQoYm9vbGVhbiBsZW5pZW50KQorICAgIHsKKyAgICAgICAgY2FsZW5kYXIuc2V0TGVuaWVudChsZW5pZW50KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZWxsIHdoZXRoZXIgZGF0ZS90aW1lIHBhcnNpbmcgaXMgdG8gYmUgbGVuaWVudC4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0xlbmllbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGNhbGVuZGFyLmlzTGVuaWVudCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBoYXNoQ29kZQorICAgICAqLworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIHJldHVybiBudW1iZXJGb3JtYXQuaGFzaENvZGUoKTsKKyAgICAgICAgLy8ganVzdCBlbm91Z2ggZmllbGRzIGZvciBhIHJlYXNvbmFibGUgZGlzdHJpYnV0aW9uCisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIGVxdWFscworICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7CisgICAgICAgIGlmICh0aGlzID09IG9iaikgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChvYmogPT0gbnVsbCB8fCBnZXRDbGFzcygpICE9IG9iai5nZXRDbGFzcygpKSByZXR1cm4gZmFsc2U7CisgICAgICAgIERhdGVGb3JtYXQgb3RoZXIgPSAoRGF0ZUZvcm1hdCkgb2JqOworICAgICAgICByZXR1cm4gKC8vIGNhbGVuZGFyLmVxdWl2YWxlbnRUbyhvdGhlci5jYWxlbmRhcikgLy8gVEhJUyBBUEkgRE9FU04nVCBFWElTVCBZRVQhCisgICAgICAgICAgICAgICAgY2FsZW5kYXIuZ2V0Rmlyc3REYXlPZldlZWsoKSA9PSBvdGhlci5jYWxlbmRhci5nZXRGaXJzdERheU9mV2VlaygpICYmCisgICAgICAgICAgICAgICAgY2FsZW5kYXIuZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpID09IG90aGVyLmNhbGVuZGFyLmdldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsoKSAmJgorICAgICAgICAgICAgICAgIGNhbGVuZGFyLmlzTGVuaWVudCgpID09IG90aGVyLmNhbGVuZGFyLmlzTGVuaWVudCgpICYmCisgICAgICAgICAgICAgICAgY2FsZW5kYXIuZ2V0VGltZVpvbmUoKS5lcXVhbHMob3RoZXIuY2FsZW5kYXIuZ2V0VGltZVpvbmUoKSkgJiYKKyAgICAgICAgICAgICAgICBudW1iZXJGb3JtYXQuZXF1YWxzKG90aGVyLm51bWJlckZvcm1hdCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBDbG9uZWFibGUKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGNsb25lKCkKKyAgICB7CisgICAgICAgIERhdGVGb3JtYXQgb3RoZXIgPSAoRGF0ZUZvcm1hdCkgc3VwZXIuY2xvbmUoKTsKKyAgICAgICAgb3RoZXIuY2FsZW5kYXIgPSAoQ2FsZW5kYXIpIGNhbGVuZGFyLmNsb25lKCk7CisgICAgICAgIG90aGVyLm51bWJlckZvcm1hdCA9IChOdW1iZXJGb3JtYXQpIG51bWJlckZvcm1hdC5jbG9uZSgpOworICAgICAgICByZXR1cm4gb3RoZXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIERhdGVGb3JtYXQgd2l0aCB0aGUgZ2l2ZW4gdGltZSBhbmQvb3IgZGF0ZSBzdHlsZSBpbiB0aGUgZ2l2ZW4KKyAgICAgKiBsb2NhbGUuCisgICAgICogQHBhcmFtIGRhdGVTdHlsZSBhIHZhbHVlIGZyb20gMCB0byAzIGluZGljYXRpbmcgdGhlIHRpbWUgZm9ybWF0LAorICAgICAqIG9yIC0xIHRvIGluZGljYXRlIG5vIGRhdGUKKyAgICAgKiBAcGFyYW0gdGltZVN0eWxlIGEgdmFsdWUgZnJvbSAwIHRvIDMgaW5kaWNhdGluZyB0aGUgdGltZSBmb3JtYXQsCisgICAgICogb3IgLTEgdG8gaW5kaWNhdGUgbm8gdGltZQorICAgICAqIEBwYXJhbSBsb2MgdGhlIGxvY2FsZSBmb3IgdGhlIGZvcm1hdAorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIERhdGVGb3JtYXQgZ2V0KGludCBkYXRlU3R5bGUsIGludCB0aW1lU3R5bGUsIExvY2FsZSBsb2MpIHsKKyAgICAgICAgaWYgKHRpbWVTdHlsZSA8IC0xIHx8IHRpbWVTdHlsZSA+IDMpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgdGltZSBzdHlsZSAiICsgdGltZVN0eWxlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZGF0ZVN0eWxlIDwgLTEgfHwgZGF0ZVN0eWxlID4gMykgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCBkYXRlIHN0eWxlICIgKyBkYXRlU3R5bGUpOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFNpbXBsZURhdGVGb3JtYXQodGltZVN0eWxlLCBkYXRlU3R5bGUsIGxvYyk7CisgICAgICAgIH0gY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFNpbXBsZURhdGVGb3JtYXQoIk0vZC95eSBoOm1tIGEiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIG5ldyBkYXRlIGZvcm1hdC4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgRGF0ZUZvcm1hdCgpIHt9CisKKyAgICAvL35+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFB1YmxpYyBzdGF0aWMgaW50ZXJmYWNlIGZvciBjcmVhdGluZyBjdXN0b24gRGF0ZUZvcm1hdHMgZm9yIGRpZmZlcmVudAorICAgIC8vIHR5cGVzIG9mIENhbGVuZGFycy4KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSB7QGxpbmsgRGF0ZUZvcm1hdH0gb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gZm9ybWF0IGRhdGVzIGluCisgICAgICogdGhlIGNhbGVuZGFyIHN5c3RlbSBzcGVjaWZpZWQgYnkgPGNvZGU+Y2FsPC9jb2RlPi4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gY2FsICAgVGhlIGNhbGVuZGFyIHN5c3RlbSBmb3Igd2hpY2ggYSBkYXRlIGZvcm1hdCBpcyBkZXNpcmVkLgorICAgICAqCisgICAgICogQHBhcmFtIGRhdGVTdHlsZSBUaGUgdHlwZSBvZiBkYXRlIGZvcm1hdCBkZXNpcmVkLiAgVGhpcyBjYW4gYmUKKyAgICAgKiAgICAgICAgICAgICAge0BsaW5rIERhdGVGb3JtYXQjU0hPUlR9LCB7QGxpbmsgRGF0ZUZvcm1hdCNNRURJVU19LAorICAgICAqICAgICAgICAgICAgICBldGMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbG9jYWxlIFRoZSBsb2NhbGUgZm9yIHdoaWNoIHRoZSBkYXRlIGZvcm1hdCBpcyBkZXNpcmVkLgorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBwdWJsaWMgRGF0ZUZvcm1hdCBnZXREYXRlSW5zdGFuY2UoQ2FsZW5kYXIgY2FsLCBpbnQgZGF0ZVN0eWxlLCBMb2NhbGUgbG9jYWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGdldERhdGVUaW1lSW5zdGFuY2UoY2FsLCBkYXRlU3R5bGUsIC0xLCBsb2NhbGUpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSB7QGxpbmsgRGF0ZUZvcm1hdH0gb2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgdG8gZm9ybWF0IHRpbWVzIGluCisgICAgICogdGhlIGNhbGVuZGFyIHN5c3RlbSBzcGVjaWZpZWQgYnkgPGNvZGU+Y2FsPC9jb2RlPi4KKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5Ob3RlOjwvYj4gV2hlbiB0aGlzIGZ1bmN0aW9uYWxpdHkgaXMgbW92ZWQgaW50byB0aGUgY29yZSBKREssIHRoaXMgbWV0aG9kCisgICAgICogd2lsbCBwcm9iYWJseSBiZSByZXBsYWNlZCBieSBhIG5ldyBvdmVybG9hZCBvZiB7QGxpbmsgRGF0ZUZvcm1hdCNnZXRJbnN0YW5jZX0uCisgICAgICogPHA+CisgICAgICogQHBhcmFtIGNhbCAgIFRoZSBjYWxlbmRhciBzeXN0ZW0gZm9yIHdoaWNoIGEgdGltZSBmb3JtYXQgaXMgZGVzaXJlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0aW1lU3R5bGUgVGhlIHR5cGUgb2YgdGltZSBmb3JtYXQgZGVzaXJlZC4gIFRoaXMgY2FuIGJlCisgICAgICogICAgICAgICAgICAgIHtAbGluayBEYXRlRm9ybWF0I1NIT1JUfSwge0BsaW5rIERhdGVGb3JtYXQjTUVESVVNfSwKKyAgICAgKiAgICAgICAgICAgICAgZXRjLgorICAgICAqCisgICAgICogQHBhcmFtIGxvY2FsZSBUaGUgbG9jYWxlIGZvciB3aGljaCB0aGUgdGltZSBmb3JtYXQgaXMgZGVzaXJlZC4KKyAgICAgKgorICAgICAqIEBzZWUgRGF0ZUZvcm1hdCNnZXRUaW1lSW5zdGFuY2UKKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgcHVibGljIERhdGVGb3JtYXQgZ2V0VGltZUluc3RhbmNlKENhbGVuZGFyIGNhbCwgaW50IHRpbWVTdHlsZSwgTG9jYWxlIGxvY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBnZXREYXRlVGltZUluc3RhbmNlKGNhbCwgLTEsIHRpbWVTdHlsZSwgbG9jYWxlKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEge0BsaW5rIERhdGVGb3JtYXR9IG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIHRvIGZvcm1hdCBkYXRlcyBhbmQgdGltZXMgaW4KKyAgICAgKiB0aGUgY2FsZW5kYXIgc3lzdGVtIHNwZWNpZmllZCBieSA8Y29kZT5jYWw8L2NvZGU+LgorICAgICAqIDxwPgorICAgICAqIDxiPk5vdGU6PC9iPiBXaGVuIHRoaXMgZnVuY3Rpb25hbGl0eSBpcyBtb3ZlZCBpbnRvIHRoZSBjb3JlIEpESywgdGhpcyBtZXRob2QKKyAgICAgKiB3aWxsIHByb2JhYmx5IGJlIHJlcGxhY2VkIGJ5IGEgbmV3IG92ZXJsb2FkIG9mIHtAbGluayBEYXRlRm9ybWF0I2dldEluc3RhbmNlfS4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gY2FsICAgVGhlIGNhbGVuZGFyIHN5c3RlbSBmb3Igd2hpY2ggYSBkYXRlL3RpbWUgZm9ybWF0IGlzIGRlc2lyZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZGF0ZVN0eWxlIFRoZSB0eXBlIG9mIGRhdGUgZm9ybWF0IGRlc2lyZWQuICBUaGlzIGNhbiBiZQorICAgICAqICAgICAgICAgICAgICB7QGxpbmsgRGF0ZUZvcm1hdCNTSE9SVH0sIHtAbGluayBEYXRlRm9ybWF0I01FRElVTX0sCisgICAgICogICAgICAgICAgICAgIGV0Yy4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0aW1lU3R5bGUgVGhlIHR5cGUgb2YgdGltZSBmb3JtYXQgZGVzaXJlZC4gIFRoaXMgY2FuIGJlCisgICAgICogICAgICAgICAgICAgIHtAbGluayBEYXRlRm9ybWF0I1NIT1JUfSwge0BsaW5rIERhdGVGb3JtYXQjTUVESVVNfSwKKyAgICAgKiAgICAgICAgICAgICAgZXRjLgorICAgICAqCisgICAgICogQHBhcmFtIGxvY2FsZSBUaGUgbG9jYWxlIGZvciB3aGljaCB0aGUgZGF0ZS90aW1lIGZvcm1hdCBpcyBkZXNpcmVkLgorICAgICAqCisgICAgICogQHNlZSBEYXRlRm9ybWF0I2dldERhdGVUaW1lSW5zdGFuY2UKKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgcHVibGljIERhdGVGb3JtYXQgZ2V0RGF0ZVRpbWVJbnN0YW5jZShDYWxlbmRhciBjYWwsIGludCBkYXRlU3R5bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRpbWVTdHlsZSwgTG9jYWxlIGxvY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBjYWwuZ2V0RGF0ZVRpbWVGb3JtYXQoZGF0ZVN0eWxlLCB0aW1lU3R5bGUsIGxvY2FsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVuaWVuY2Ugb3ZlcmxvYWQKKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgcHVibGljIERhdGVGb3JtYXQgZ2V0SW5zdGFuY2UoQ2FsZW5kYXIgY2FsLCBMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIHJldHVybiBnZXREYXRlVGltZUluc3RhbmNlKGNhbCwgU0hPUlQsIFNIT1JULCBsb2NhbGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG92ZXJsb2FkCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIHB1YmxpYyBEYXRlRm9ybWF0IGdldEluc3RhbmNlKENhbGVuZGFyIGNhbCkgeworICAgICAgICByZXR1cm4gZ2V0SW5zdGFuY2UoY2FsLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSBvdmVybG9hZAorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBwdWJsaWMgRGF0ZUZvcm1hdCBnZXREYXRlSW5zdGFuY2UoQ2FsZW5kYXIgY2FsLCBpbnQgZGF0ZVN0eWxlKSB7CisgICAgICAgIHJldHVybiBnZXREYXRlSW5zdGFuY2UoY2FsLCBkYXRlU3R5bGUsIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIG92ZXJsb2FkCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIHB1YmxpYyBEYXRlRm9ybWF0IGdldFRpbWVJbnN0YW5jZShDYWxlbmRhciBjYWwsIGludCB0aW1lU3R5bGUpIHsKKyAgICAgICAgcmV0dXJuIGdldFRpbWVJbnN0YW5jZShjYWwsIHRpbWVTdHlsZSwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVuaWVuY2Ugb3ZlcmxvYWQKKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgcHVibGljIERhdGVGb3JtYXQgZ2V0RGF0ZVRpbWVJbnN0YW5jZShDYWxlbmRhciBjYWwsIGludCBkYXRlU3R5bGUsIGludCB0aW1lU3R5bGUpIHsKKyAgICAgICAgcmV0dXJuIGdldERhdGVUaW1lSW5zdGFuY2UoY2FsLCBkYXRlU3R5bGUsIHRpbWVTdHlsZSwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9EYXRlRm9ybWF0U3ltYm9scy5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9EYXRlRm9ybWF0U3ltYm9scy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjczNWEyZTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L0RhdGVGb3JtYXRTeW1ib2xzLmphdmEKQEAgLTAsMCArMSw4MzEgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvQXR0aWMvRGF0ZUZvcm1hdFN5bWJvbHMuamF2YSx2ICQKKyAqICREYXRlOiAyMDAxLzAxLzA5IDIyOjQ4OjUxICQKKyAqICRSZXZpc2lvbjogMS44ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0udGV4dDsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsKK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKK2ltcG9ydCBqYXZhLmxhbmcucmVmLlNvZnRSZWZlcmVuY2U7CitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKK2ltcG9ydCBqYXZhLnRleHQucmVzb3VyY2VzLkRhdGVGb3JtYXRab25lRGF0YTsKK2ltcG9ydCBjb20uaWJtLnV0aWwuVXRpbGl0eTsKK2ltcG9ydCBjb20uaWJtLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS51dGlsLkdyZWdvcmlhbkNhbGVuZGFyOworaW1wb3J0IGNvbS5pYm0udXRpbC5UaW1lWm9uZTsKK2ltcG9ydCBqYXZhLnV0aWwuTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uOworCisvKioKKyAqIDxjb2RlPkRhdGVGb3JtYXRTeW1ib2xzPC9jb2RlPiBpcyBhIHB1YmxpYyBjbGFzcyBmb3IgZW5jYXBzdWxhdGluZworICogbG9jYWxpemFibGUgZGF0ZS10aW1lIGZvcm1hdHRpbmcgZGF0YSwgc3VjaCBhcyB0aGUgbmFtZXMgb2YgdGhlCisgKiBtb250aHMsIHRoZSBuYW1lcyBvZiB0aGUgZGF5cyBvZiB0aGUgd2VlaywgYW5kIHRoZSB0aW1lIHpvbmUgZGF0YS4KKyAqIDxjb2RlPkRhdGVGb3JtYXQ8L2NvZGU+IGFuZCA8Y29kZT5TaW1wbGVEYXRlRm9ybWF0PC9jb2RlPiBib3RoIHVzZQorICogPGNvZGU+RGF0ZUZvcm1hdFN5bWJvbHM8L2NvZGU+IHRvIGVuY2Fwc3VsYXRlIHRoaXMgaW5mb3JtYXRpb24uCisgKgorICogPHA+CisgKiBUeXBpY2FsbHkgeW91IHNob3VsZG4ndCB1c2UgPGNvZGU+RGF0ZUZvcm1hdFN5bWJvbHM8L2NvZGU+IGRpcmVjdGx5LgorICogUmF0aGVyLCB5b3UgYXJlIGVuY291cmFnZWQgdG8gY3JlYXRlIGEgZGF0ZS10aW1lIGZvcm1hdHRlciB3aXRoIHRoZQorICogPGNvZGU+RGF0ZUZvcm1hdDwvY29kZT4gY2xhc3MncyBmYWN0b3J5IG1ldGhvZHM6IDxjb2RlPmdldFRpbWVJbnN0YW5jZTwvY29kZT4sCisgKiA8Y29kZT5nZXREYXRlSW5zdGFuY2U8L2NvZGU+LCBvciA8Y29kZT5nZXREYXRlVGltZUluc3RhbmNlPC9jb2RlPi4KKyAqIFRoZXNlIG1ldGhvZHMgYXV0b21hdGljYWxseSBjcmVhdGUgYSA8Y29kZT5EYXRlRm9ybWF0U3ltYm9sczwvY29kZT4gZm9yCisgKiB0aGUgZm9ybWF0dGVyIHNvIHRoYXQgeW91IGRvbid0IGhhdmUgdG8uIEFmdGVyIHRoZQorICogZm9ybWF0dGVyIGlzIGNyZWF0ZWQsIHlvdSBtYXkgbW9kaWZ5IGl0cyBmb3JtYXQgcGF0dGVybiB1c2luZyB0aGUKKyAqIDxjb2RlPnNldFBhdHRlcm48L2NvZGU+IG1ldGhvZC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQKKyAqIGNyZWF0aW5nIGZvcm1hdHRlcnMgdXNpbmcgPGNvZGU+RGF0ZUZvcm1hdDwvY29kZT4ncyBmYWN0b3J5IG1ldGhvZHMsCisgKiBzZWUge0BsaW5rIERhdGVGb3JtYXR9LgorICoKKyAqIDxwPgorICogSWYgeW91IGRlY2lkZSB0byBjcmVhdGUgYSBkYXRlLXRpbWUgZm9ybWF0dGVyIHdpdGggYSBzcGVjaWZpYworICogZm9ybWF0IHBhdHRlcm4gZm9yIGEgc3BlY2lmaWMgbG9jYWxlLCB5b3UgY2FuIGRvIHNvIHdpdGg6CisgKiA8YmxvY2txdW90ZT4KKyAqIDxwcmU+CisgKiBuZXcgU2ltcGxlRGF0ZUZvcm1hdChhUGF0dGVybiwgbmV3IERhdGVGb3JtYXRTeW1ib2xzKGFMb2NhbGUpKS4KKyAqIDwvcHJlPgorICogPC9ibG9ja3F1b3RlPgorICoKKyAqIDxwPgorICogPGNvZGU+RGF0ZUZvcm1hdFN5bWJvbHM8L2NvZGU+IG9iamVjdHMgYXJlIGNsb25hYmxlLiBXaGVuIHlvdSBvYnRhaW4KKyAqIGEgPGNvZGU+RGF0ZUZvcm1hdFN5bWJvbHM8L2NvZGU+IG9iamVjdCwgZmVlbCBmcmVlIHRvIG1vZGlmeSB0aGUKKyAqIGRhdGUtdGltZSBmb3JtYXR0aW5nIGRhdGEuIEZvciBpbnN0YW5jZSwgeW91IGNhbiByZXBsYWNlIHRoZSBsb2NhbGl6ZWQKKyAqIGRhdGUtdGltZSBmb3JtYXQgcGF0dGVybiBjaGFyYWN0ZXJzIHdpdGggdGhlIG9uZXMgdGhhdCB5b3UgZmVlbCBlYXN5CisgKiB0byByZW1lbWJlci4gT3IgeW91IGNhbiBjaGFuZ2UgdGhlIHJlcHJlc2VudGF0aXZlIGNpdGllcworICogdG8geW91ciBmYXZvcml0ZSBvbmVzLgorICoKKyAqIDxwPgorICogTmV3IDxjb2RlPkRhdGVGb3JtYXRTeW1ib2xzPC9jb2RlPiBzdWJjbGFzc2VzIG1heSBiZSBhZGRlZCB0byBzdXBwb3J0CisgKiA8Y29kZT5TaW1wbGVEYXRlRm9ybWF0PC9jb2RlPiBmb3IgZGF0ZS10aW1lIGZvcm1hdHRpbmcgZm9yIGFkZGl0aW9uYWwgbG9jYWxlcy4KKworICogQHNlZSAgICAgICAgICBEYXRlRm9ybWF0CisgKiBAc2VlICAgICAgICAgIFNpbXBsZURhdGVGb3JtYXQKKyAqIEBzZWUgICAgICAgICAgY29tLmlibS51dGlsLlNpbXBsZVRpbWVab25lCisgKiBAdmVyc2lvbiAgICAgIDEuMzEgMDkvMjEvOTkKKyAqIEBhdXRob3IgICAgICAgQ2hlbi1MaWVoIEh1YW5nCisgKi8KK3B1YmxpYyBjbGFzcyBEYXRlRm9ybWF0U3ltYm9scyBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZSwgQ2xvbmVhYmxlIHsKKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIERhdGVGb3JtYXRTeW1ib2xzIG9iamVjdCBieSBsb2FkaW5nIGZvcm1hdCBkYXRhIGZyb20KKyAgICAgKiByZXNvdXJjZXMgZm9yIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKgorICAgICAqIEBleGNlcHRpb24gIGphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24KKyAgICAgKiAgICAgICAgICAgICBpZiB0aGUgcmVzb3VyY2VzIGZvciB0aGUgZGVmYXVsdCBsb2NhbGUgY2Fubm90IGJlCisgICAgICogICAgICAgICAgICAgZm91bmQgb3IgY2Fubm90IGJlIGxvYWRlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgRGF0ZUZvcm1hdFN5bWJvbHMoKQorICAgIHsKKyAgICAgICAgaW5pdGlhbGl6ZURhdGEoTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgRGF0ZUZvcm1hdFN5bWJvbHMgb2JqZWN0IGJ5IGxvYWRpbmcgZm9ybWF0IGRhdGEgZnJvbQorICAgICAqIHJlc291cmNlcyBmb3IgdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKgorICAgICAqIEBleGNlcHRpb24gIGphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24KKyAgICAgKiAgICAgICAgICAgICBpZiB0aGUgcmVzb3VyY2VzIGZvciB0aGUgc3BlY2lmaWVkIGxvY2FsZSBjYW5ub3QgYmUKKyAgICAgKiAgICAgICAgICAgICBmb3VuZCBvciBjYW5ub3QgYmUgbG9hZGVkLgorICAgICAqLworICAgIHB1YmxpYyBEYXRlRm9ybWF0U3ltYm9scyhMb2NhbGUgbG9jYWxlKQorICAgIHsKKyAgICAgICAgaW5pdGlhbGl6ZURhdGEobG9jYWxlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBFcmEgc3RyaW5ncy4gRm9yIGV4YW1wbGU6ICJBRCIgYW5kICJCQyIuICBBbiBhcnJheSBvZiAyIHN0cmluZ3MsCisgICAgICogaW5kZXhlZCBieSA8Y29kZT5DYWxlbmRhci5CQzwvY29kZT4gYW5kIDxjb2RlPkNhbGVuZGFyLkFEPC9jb2RlPi4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgU3RyaW5nIGVyYXNbXSA9IG51bGw7CisKKyAgICAvKioKKyAgICAgKiBNb250aCBzdHJpbmdzLiBGb3IgZXhhbXBsZTogIkphbnVhcnkiLCAiRmVicnVhcnkiLCBldGMuICBBbiBhcnJheQorICAgICAqIG9mIDEzIHN0cmluZ3MgKHNvbWUgY2FsZW5kYXJzIGhhdmUgMTMgbW9udGhzKSwgaW5kZXhlZCBieQorICAgICAqIDxjb2RlPkNhbGVuZGFyLkpBTlVBUlk8L2NvZGU+LCA8Y29kZT5DYWxlbmRhci5GRUJSVUFSWTwvY29kZT4sIGV0Yy4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgU3RyaW5nIG1vbnRoc1tdID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIFNob3J0IG1vbnRoIHN0cmluZ3MuIEZvciBleGFtcGxlOiAiSmFuIiwgIkZlYiIsIGV0Yy4gIEFuIGFycmF5IG9mCisgICAgICogMTMgc3RyaW5ncyAoc29tZSBjYWxlbmRhcnMgaGF2ZSAxMyBtb250aHMpLCBpbmRleGVkIGJ5CisgICAgICogPGNvZGU+Q2FsZW5kYXIuSkFOVUFSWTwvY29kZT4sIDxjb2RlPkNhbGVuZGFyLkZFQlJVQVJZPC9jb2RlPiwgZXRjLgorCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIFN0cmluZyBzaG9ydE1vbnRoc1tdID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIFdlZWtkYXkgc3RyaW5ncy4gRm9yIGV4YW1wbGU6ICJTdW5kYXkiLCAiTW9uZGF5IiwgZXRjLiAgQW4gYXJyYXkKKyAgICAgKiBvZiA4IHN0cmluZ3MsIGluZGV4ZWQgYnkgPGNvZGU+Q2FsZW5kYXIuU1VOREFZPC9jb2RlPiwKKyAgICAgKiA8Y29kZT5DYWxlbmRhci5NT05EQVk8L2NvZGU+LCBldGMuCisgICAgICogVGhlIGVsZW1lbnQgPGNvZGU+d2Vla2RheXNbMF08L2NvZGU+IGlzIGlnbm9yZWQuCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIFN0cmluZyB3ZWVrZGF5c1tdID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIFNob3J0IHdlZWtkYXkgc3RyaW5ncy4gRm9yIGV4YW1wbGU6ICJTdW4iLCAiTW9uIiwgZXRjLiAgQW4gYXJyYXkKKyAgICAgKiBvZiA4IHN0cmluZ3MsIGluZGV4ZWQgYnkgPGNvZGU+Q2FsZW5kYXIuU1VOREFZPC9jb2RlPiwKKyAgICAgKiA8Y29kZT5DYWxlbmRhci5NT05EQVk8L2NvZGU+LCBldGMuCisgICAgICogVGhlIGVsZW1lbnQgPGNvZGU+c2hvcnRXZWVrZGF5c1swXTwvY29kZT4gaXMgaWdub3JlZC4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgU3RyaW5nIHNob3J0V2Vla2RheXNbXSA9IG51bGw7CisKKyAgICAvKioKKyAgICAgKiBBTSBhbmQgUE0gc3RyaW5ncy4gRm9yIGV4YW1wbGU6ICJBTSIgYW5kICJQTSIuICBBbiBhcnJheSBvZgorICAgICAqIDIgc3RyaW5ncywgaW5kZXhlZCBieSA8Y29kZT5DYWxlbmRhci5BTTwvY29kZT4gYW5kCisgICAgICogPGNvZGU+Q2FsZW5kYXIuUE08L2NvZGU+LgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBTdHJpbmcgYW1wbXNbXSA9IG51bGw7CisKKyAgICAvKioKKyAgICAgKiBMb2NhbGl6ZWQgbmFtZXMgb2YgdGltZSB6b25lcyBpbiB0aGlzIGxvY2FsZS4gIFRoaXMgaXMgYQorICAgICAqIHR3by1kaW1lbnNpb25hbCBhcnJheSBvZiBzdHJpbmdzIG9mIHNpemUgPGVtPm48L2VtPiBieSA8ZW0+bTwvZW0+LAorICAgICAqIHdoZXJlIDxlbT5tPC9lbT4gaXMgYXQgbGVhc3QgNS4gIEVhY2ggb2YgdGhlIDxlbT5uPC9lbT4gcm93cyBpcyBhbgorICAgICAqIGVudHJ5IGNvbnRhaW5pbmcgdGhlIGxvY2FsaXplZCBuYW1lcyBmb3IgYSBzaW5nbGUgPGNvZGU+VGltZVpvbmU8L2NvZGU+LgorICAgICAqIEVhY2ggc3VjaCByb3cgY29udGFpbnMgKHdpdGggPGNvZGU+aTwvY29kZT4gcmFuZ2luZyBmcm9tCisgICAgICogMC4uPGVtPm48L2VtPi0xKToKKyAgICAgKiA8dWw+CisgICAgICogPGxpPjxjb2RlPnpvbmVTdHJpbmdzW2ldWzBdPC9jb2RlPiAtIHRpbWUgem9uZSBJRDwvbGk+CisgICAgICogPGxpPjxjb2RlPnpvbmVTdHJpbmdzW2ldWzFdPC9jb2RlPiAtIGxvbmcgbmFtZSBvZiB6b25lIGluIHN0YW5kYXJkCisgICAgICogdGltZTwvbGk+CisgICAgICogPGxpPjxjb2RlPnpvbmVTdHJpbmdzW2ldWzJdPC9jb2RlPiAtIHNob3J0IG5hbWUgb2Ygem9uZSBpbgorICAgICAqIHN0YW5kYXJkIHRpbWU8L2xpPgorICAgICAqIDxsaT48Y29kZT56b25lU3RyaW5nc1tpXVszXTwvY29kZT4gLSBsb25nIG5hbWUgb2Ygem9uZSBpbiBkYXlsaWdodAorICAgICAqIHNhdmluZ3MgdGltZTwvbGk+CisgICAgICogPGxpPjxjb2RlPnpvbmVTdHJpbmdzW2ldWzRdPC9jb2RlPiAtIHNob3J0IG5hbWUgb2Ygem9uZSBpbiBkYXlsaWdodAorICAgICAqIHNhdmluZ3MgdGltZTwvbGk+CisgICAgICogPC91bD4KKyAgICAgKiBUaGUgem9uZSBJRCBpcyA8ZW0+bm90PC9lbT4gbG9jYWxpemVkOyBpdCBjb3JyZXNwb25kcyB0byB0aGUgSUQKKyAgICAgKiB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBzeXN0ZW0gdGltZSB6b25lIG9iamVjdC4gIEFsbCBvdGhlciBlbnRyaWVzCisgICAgICogYXJlIGxvY2FsaXplZCBuYW1lcy4gIElmIGEgem9uZSBkb2VzIG5vdCBpbXBsZW1lbnQgZGF5bGlnaHQgc2F2aW5ncworICAgICAqIHRpbWUsIHRoZSBkYXlsaWdodCBzYXZpbmdzIHRpbWUgbmFtZXMgYXJlIGlnbm9yZWQuCisgICAgICogQHNlZSBqYXZhLnRleHQucmVzb3VyY2VzLkRhdGVGb3JtYXRab25lRGF0YQorICAgICAqIEBzZWUgY29tLmlibS51dGlsLlRpbWVab25lCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIFN0cmluZyB6b25lU3RyaW5nc1tdW10gPSBudWxsOworCisgICAgLyoqCisgICAgICogVW5sb2NhbGl6ZWQgZGF0ZS10aW1lIHBhdHRlcm4gY2hhcmFjdGVycy4gRm9yIGV4YW1wbGU6ICd5JywgJ2QnLCBldGMuCisgICAgICogQWxsIGxvY2FsZXMgdXNlIHRoZSBzYW1lIHRoZXNlIHVubG9jYWxpemVkIHBhdHRlcm4gY2hhcmFjdGVycy4KKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nICBwYXR0ZXJuQ2hhcnMgPSAiR3lNZGtIbXNTRURGd1dhaEt6IjsKKworICAgIC8qKgorICAgICAqIExvY2FsaXplZCBkYXRlLXRpbWUgcGF0dGVybiBjaGFyYWN0ZXJzLiBGb3IgZXhhbXBsZSwgYSBsb2NhbGUgbWF5CisgICAgICogd2lzaCB0byB1c2UgJ3UnIHJhdGhlciB0aGFuICd5JyB0byByZXByZXNlbnQgeWVhcnMgaW4gaXRzIGRhdGUgZm9ybWF0CisgICAgICogcGF0dGVybiBzdHJpbmdzLgorICAgICAqIFRoaXMgc3RyaW5nIG11c3QgYmUgZXhhY3RseSAxOCBjaGFyYWN0ZXJzIGxvbmcsIHdpdGggdGhlIGluZGV4IG9mCisgICAgICogdGhlIGNoYXJhY3RlcnMgZGVzY3JpYmVkIGJ5IDxjb2RlPkRhdGVGb3JtYXQuRVJBX0ZJRUxEPC9jb2RlPiwKKyAgICAgKiA8Y29kZT5EYXRlRm9ybWF0LllFQVJfRklFTEQ8L2NvZGU+LCBldGMuICBUaHVzLCBpZiB0aGUgc3RyaW5nIHdlcmUKKyAgICAgKiAiWHouLi4iLCB0aGVuIGxvY2FsaXplZCBwYXR0ZXJucyB3b3VsZCB1c2UgJ1gnIGZvciBlcmEgYW5kICd6JyBmb3IgeWVhci4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgU3RyaW5nICBsb2NhbFBhdHRlcm5DaGFycyA9IG51bGw7CisKKyAgICAvKiB1c2Ugc2VyaWFsVmVyc2lvblVJRCBmcm9tIEpESyAxLjEuNCBmb3IgaW50ZXJvcGVyYWJpbGl0eSAqLworICAgIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtNTk4Nzk3MzU0NTU0OTQyNDcwMkw7CisKKyAgICAvKioKKyAgICAgKiBHZXRzIGVyYSBzdHJpbmdzLiBGb3IgZXhhbXBsZTogIkFEIiBhbmQgIkJDIi4KKyAgICAgKiBAcmV0dXJuIHRoZSBlcmEgc3RyaW5ncy4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nW10gZ2V0RXJhcygpIHsKKyAgICAgICAgcmV0dXJuIGR1cGxpY2F0ZShlcmFzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIGVyYSBzdHJpbmdzLiBGb3IgZXhhbXBsZTogIkFEIiBhbmQgIkJDIi4KKyAgICAgKiBAcGFyYW0gbmV3RXJhcyB0aGUgbmV3IGVyYSBzdHJpbmdzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEVyYXMoU3RyaW5nW10gbmV3RXJhcykgeworICAgICAgICBlcmFzID0gZHVwbGljYXRlKG5ld0VyYXMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgbW9udGggc3RyaW5ncy4gRm9yIGV4YW1wbGU6ICJKYW51YXJ5IiwgIkZlYnJ1YXJ5IiwgZXRjLgorICAgICAqIEByZXR1cm4gdGhlIG1vbnRoIHN0cmluZ3MuCisgICAgICovCisgICAgcHVibGljIFN0cmluZ1tdIGdldE1vbnRocygpIHsKKyAgICAgICAgcmV0dXJuIGR1cGxpY2F0ZShtb250aHMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgbW9udGggc3RyaW5ncy4gRm9yIGV4YW1wbGU6ICJKYW51YXJ5IiwgIkZlYnJ1YXJ5IiwgZXRjLgorICAgICAqIEBwYXJhbSBuZXdNb250aHMgdGhlIG5ldyBtb250aCBzdHJpbmdzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldE1vbnRocyhTdHJpbmdbXSBuZXdNb250aHMpIHsKKyAgICAgICAgbW9udGhzID0gZHVwbGljYXRlKG5ld01vbnRocyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyBzaG9ydCBtb250aCBzdHJpbmdzLiBGb3IgZXhhbXBsZTogIkphbiIsICJGZWIiLCBldGMuCisgICAgICogQHJldHVybiB0aGUgc2hvcnQgbW9udGggc3RyaW5ncy4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nW10gZ2V0U2hvcnRNb250aHMoKSB7CisgICAgICAgIHJldHVybiBkdXBsaWNhdGUoc2hvcnRNb250aHMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgc2hvcnQgbW9udGggc3RyaW5ncy4gRm9yIGV4YW1wbGU6ICJKYW4iLCAiRmViIiwgZXRjLgorICAgICAqIEBwYXJhbSBuZXdTaG9ydE1vbnRocyB0aGUgbmV3IHNob3J0IG1vbnRoIHN0cmluZ3MuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0U2hvcnRNb250aHMoU3RyaW5nW10gbmV3U2hvcnRNb250aHMpIHsKKyAgICAgICAgc2hvcnRNb250aHMgPSBkdXBsaWNhdGUobmV3U2hvcnRNb250aHMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgd2Vla2RheSBzdHJpbmdzLiBGb3IgZXhhbXBsZTogIlN1bmRheSIsICJNb25kYXkiLCBldGMuCisgICAgICogQHJldHVybiB0aGUgd2Vla2RheSBzdHJpbmdzLiBVc2UgPGNvZGU+Q2FsZW5kYXIuU1VOREFZPC9jb2RlPiwKKyAgICAgKiA8Y29kZT5DYWxlbmRhci5NT05EQVk8L2NvZGU+LCBldGMuIHRvIGluZGV4IHRoZSByZXN1bHQgYXJyYXkuCisgICAgICovCisgICAgcHVibGljIFN0cmluZ1tdIGdldFdlZWtkYXlzKCkgeworICAgICAgICByZXR1cm4gZHVwbGljYXRlKHdlZWtkYXlzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHdlZWtkYXkgc3RyaW5ncy4gRm9yIGV4YW1wbGU6ICJTdW5kYXkiLCAiTW9uZGF5IiwgZXRjLgorICAgICAqIEBwYXJhbSBuZXdXZWVrZGF5cyB0aGUgbmV3IHdlZWtkYXkgc3RyaW5ncy4gVGhlIGFycmF5IHNob3VsZAorICAgICAqIGJlIGluZGV4ZWQgYnkgPGNvZGU+Q2FsZW5kYXIuU1VOREFZPC9jb2RlPiwKKyAgICAgKiA8Y29kZT5DYWxlbmRhci5NT05EQVk8L2NvZGU+LCBldGMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0V2Vla2RheXMoU3RyaW5nW10gbmV3V2Vla2RheXMpIHsKKyAgICAgICAgd2Vla2RheXMgPSBkdXBsaWNhdGUobmV3V2Vla2RheXMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgc2hvcnQgd2Vla2RheSBzdHJpbmdzLiBGb3IgZXhhbXBsZTogIlN1biIsICJNb24iLCBldGMuCisgICAgICogQHJldHVybiB0aGUgc2hvcnQgd2Vla2RheSBzdHJpbmdzLiBVc2UgPGNvZGU+Q2FsZW5kYXIuU1VOREFZPC9jb2RlPiwKKyAgICAgKiA8Y29kZT5DYWxlbmRhci5NT05EQVk8L2NvZGU+LCBldGMuIHRvIGluZGV4IHRoZSByZXN1bHQgYXJyYXkuCisgICAgICovCisgICAgcHVibGljIFN0cmluZ1tdIGdldFNob3J0V2Vla2RheXMoKSB7CisgICAgICAgIHJldHVybiBkdXBsaWNhdGUoc2hvcnRXZWVrZGF5cyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyBzaG9ydCB3ZWVrZGF5IHN0cmluZ3MuIEZvciBleGFtcGxlOiAiU3VuIiwgIk1vbiIsIGV0Yy4KKyAgICAgKiBAcGFyYW0gbmV3U2hvcnRXZWVrZGF5cyB0aGUgbmV3IHNob3J0IHdlZWtkYXkgc3RyaW5ncy4gVGhlIGFycmF5IHNob3VsZAorICAgICAqIGJlIGluZGV4ZWQgYnkgPGNvZGU+Q2FsZW5kYXIuU1VOREFZPC9jb2RlPiwKKyAgICAgKiA8Y29kZT5DYWxlbmRhci5NT05EQVk8L2NvZGU+LCBldGMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0U2hvcnRXZWVrZGF5cyhTdHJpbmdbXSBuZXdTaG9ydFdlZWtkYXlzKSB7CisgICAgICAgIHNob3J0V2Vla2RheXMgPSBkdXBsaWNhdGUobmV3U2hvcnRXZWVrZGF5cyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyBhbXBtIHN0cmluZ3MuIEZvciBleGFtcGxlOiAiQU0iIGFuZCAiUE0iLgorICAgICAqIEByZXR1cm4gdGhlIHdlZWtkYXkgc3RyaW5ncy4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nW10gZ2V0QW1QbVN0cmluZ3MoKSB7CisgICAgICAgIHJldHVybiBkdXBsaWNhdGUoYW1wbXMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgYW1wbSBzdHJpbmdzLiBGb3IgZXhhbXBsZTogIkFNIiBhbmQgIlBNIi4KKyAgICAgKiBAcGFyYW0gbmV3QW1wbXMgdGhlIG5ldyBhbXBtIHN0cmluZ3MuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0QW1QbVN0cmluZ3MoU3RyaW5nW10gbmV3QW1wbXMpIHsKKyAgICAgICAgYW1wbXMgPSBkdXBsaWNhdGUobmV3QW1wbXMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGltZXpvbmUgc3RyaW5ncy4KKyAgICAgKiBAcmV0dXJuIHRoZSB0aW1lem9uZSBzdHJpbmdzLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmdbXVtdIGdldFpvbmVTdHJpbmdzKCkgeworICAgICAgICBTdHJpbmdbXVtdIGFDb3B5ID0gbmV3IFN0cmluZ1t6b25lU3RyaW5ncy5sZW5ndGhdW107CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgem9uZVN0cmluZ3MubGVuZ3RoOyArK2kpCisgICAgICAgICAgICBhQ29weVtpXSA9IGR1cGxpY2F0ZSh6b25lU3RyaW5nc1tpXSk7CisgICAgICAgIHJldHVybiBhQ29weTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRpbWV6b25lIHN0cmluZ3MuCisgICAgICogQHBhcmFtIG5ld1pvbmVTdHJpbmdzIHRoZSBuZXcgdGltZXpvbmUgc3RyaW5ncy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRab25lU3RyaW5ncyhTdHJpbmdbXVtdIG5ld1pvbmVTdHJpbmdzKSB7CisgICAgICAgIFN0cmluZ1tdW10gYUNvcHkgPSBuZXcgU3RyaW5nW25ld1pvbmVTdHJpbmdzLmxlbmd0aF1bXTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuZXdab25lU3RyaW5ncy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGFDb3B5W2ldID0gZHVwbGljYXRlKG5ld1pvbmVTdHJpbmdzW2ldKTsKKyAgICAgICAgem9uZVN0cmluZ3MgPSBhQ29weTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIGxvY2FsaXplZCBkYXRlLXRpbWUgcGF0dGVybiBjaGFyYWN0ZXJzLiBGb3IgZXhhbXBsZTogJ3UnLCAndCcsIGV0Yy4KKyAgICAgKiBAcmV0dXJuIHRoZSBsb2NhbGl6ZWQgZGF0ZS10aW1lIHBhdHRlcm4gY2hhcmFjdGVycy4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldExvY2FsUGF0dGVybkNoYXJzKCkgeworICAgICAgICByZXR1cm4gbmV3IFN0cmluZyhsb2NhbFBhdHRlcm5DaGFycyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyBsb2NhbGl6ZWQgZGF0ZS10aW1lIHBhdHRlcm4gY2hhcmFjdGVycy4gRm9yIGV4YW1wbGU6ICd1JywgJ3QnLCBldGMuCisgICAgICogQHBhcmFtIG5ld0xvY2FsUGF0dGVybkNoYXJzIHRoZSBuZXcgbG9jYWxpemVkIGRhdGUtdGltZQorICAgICAqIHBhdHRlcm4gY2hhcmFjdGVycy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRMb2NhbFBhdHRlcm5DaGFycyhTdHJpbmcgbmV3TG9jYWxQYXR0ZXJuQ2hhcnMpIHsKKyAgICAgICAgbG9jYWxQYXR0ZXJuQ2hhcnMgPSBuZXcgU3RyaW5nKG5ld0xvY2FsUGF0dGVybkNoYXJzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgQ2xvbmVhYmxlCisgICAgICovCisgICAgcHVibGljIE9iamVjdCBjbG9uZSgpCisgICAgeworICAgICAgICB0cnkKKyAgICAgICAgeworICAgICAgICAgICAgRGF0ZUZvcm1hdFN5bWJvbHMgb3RoZXIgPSAoRGF0ZUZvcm1hdFN5bWJvbHMpc3VwZXIuY2xvbmUoKTsKKyAgICAgICAgICAgIGNvcHlNZW1iZXJzKHRoaXMsIG90aGVyKTsKKyAgICAgICAgICAgIHJldHVybiBvdGhlcjsKKyAgICAgICAgfSBjYXRjaCAoQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlIGhhc2hDb2RlLgorICAgICAqIEdlbmVyYXRlcyBhIGhhc2ggY29kZSBmb3IgdGhlIERhdGVGb3JtYXRTeW1ib2xzIG9iamVjdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICBpbnQgaGFzaGNvZGUgPSAwOworICAgICAgICBmb3IgKGludCBpbmRleCA9IDA7IGluZGV4IDwgdGhpcy56b25lU3RyaW5nc1swXS5sZW5ndGg7ICsraW5kZXgpCisgICAgICAgICAgICBoYXNoY29kZSBePSB0aGlzLnpvbmVTdHJpbmdzWzBdW2luZGV4XS5oYXNoQ29kZSgpOworICAgICAgICByZXR1cm4gaGFzaGNvZGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgZXF1YWxzCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvYmopCisgICAgeworICAgICAgICBpZiAodGhpcyA9PSBvYmopIHJldHVybiB0cnVlOworICAgICAgICBpZiAob2JqID09IG51bGwgfHwgZ2V0Q2xhc3MoKSAhPSBvYmouZ2V0Q2xhc3MoKSkgcmV0dXJuIGZhbHNlOworICAgICAgICBEYXRlRm9ybWF0U3ltYm9scyB0aGF0ID0gKERhdGVGb3JtYXRTeW1ib2xzKSBvYmo7CisgICAgICAgIHJldHVybiAoVXRpbGl0eS5hcnJheUVxdWFscyhlcmFzLCB0aGF0LmVyYXMpCisgICAgICAgICAgICAgICAgJiYgVXRpbGl0eS5hcnJheUVxdWFscyhtb250aHMsIHRoYXQubW9udGhzKQorICAgICAgICAgICAgICAgICYmIFV0aWxpdHkuYXJyYXlFcXVhbHMoc2hvcnRNb250aHMsIHRoYXQuc2hvcnRNb250aHMpCisgICAgICAgICAgICAgICAgJiYgVXRpbGl0eS5hcnJheUVxdWFscyh3ZWVrZGF5cywgdGhhdC53ZWVrZGF5cykKKyAgICAgICAgICAgICAgICAmJiBVdGlsaXR5LmFycmF5RXF1YWxzKHNob3J0V2Vla2RheXMsIHRoYXQuc2hvcnRXZWVrZGF5cykKKyAgICAgICAgICAgICAgICAmJiBVdGlsaXR5LmFycmF5RXF1YWxzKGFtcG1zLCB0aGF0LmFtcG1zKQorICAgICAgICAgICAgICAgICYmIFV0aWxpdHkuYXJyYXlFcXVhbHMoem9uZVN0cmluZ3MsIHRoYXQuem9uZVN0cmluZ3MpCisgICAgICAgICAgICAgICAgJiYgVXRpbGl0eS5hcnJheUVxdWFscyhsb2NhbFBhdHRlcm5DaGFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQubG9jYWxQYXR0ZXJuQ2hhcnMpKTsKKyAgICB9CisKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PXByaXZhdGVzPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgLyoqCisgICAgICogVXNlZnVsIGNvbnN0YW50IGZvciBkZWZpbmluZyB0aW1lem9uZSBvZmZzZXRzLgorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBpbnQgbWlsbGlzUGVySG91ciA9IDYwKjYwKjEwMDA7CisKKyAgICAvKioKKyAgICAgKiBDYWNoZSB0byBob2xkIHRoZSBMb2NhbGVFbGVtZW50cyBhbmQgRGF0ZUZvcm1hdFpvbmVEYXRhIFJlc291cmNlQnVuZGxlcworICAgICAqIG9mIGEgTG9jYWxlLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIEhhc2h0YWJsZSBjYWNoZWRMb2NhbGVEYXRhID0gbmV3IEhhc2h0YWJsZSgzKTsKKworICAgIC8qKgorICAgICAqIGNhY2hlIHRvIGhvbGQgdGltZSB6b25lIGxvY2FsaXplZCBzdHJpbmdzLiBLZXllZCBieSBMb2NhbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBIYXNodGFibGUgY2FjaGVkWm9uZURhdGEgPSBuZXcgSGFzaHRhYmxlKCk7CisKKyAgICAvKiBVdGlsaXR5IG1ldGhvZHMgZm9yIGZldGNoaW5nIHJlc291cmNlIGJ1bmRsZXMgKi8KKyAgICBwcml2YXRlIFJlc291cmNlQnVuZGxlIGdldExvY2FsZUVsZW1lbnRzKExvY2FsZSBkZXNpcmVkTG9jYWxlKSB7CisgICAgcmV0dXJuIFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZSgiamF2YS50ZXh0LnJlc291cmNlcy5Mb2NhbGVFbGVtZW50cyIsCisgICAgICAgICAgICAgICAgICAgIGRlc2lyZWRMb2NhbGUpOworICAgIH0KKworICAgIHByaXZhdGUgUmVzb3VyY2VCdW5kbGUgZ2V0Wm9uZURhdGEoTG9jYWxlIGRlc2lyZWRMb2NhbGUpIHsKKyAgICByZXR1cm4gUmVzb3VyY2VCdW5kbGUuZ2V0QnVuZGxlKCJqYXZhLnRleHQucmVzb3VyY2VzLkRhdGVGb3JtYXRab25lRGF0YSIsCisgICAgICAgICAgICAgICAgICAgIGRlc2lyZWRMb2NhbGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIExvb2sgdXAgcmVzb3VyY2UgZGF0YSBmb3IgdGhlIGRlc2lyZWRMb2NhbGUgaW4gdGhlIGNhY2hlOyB1cGRhdGUgdGhlCisgICAgICogY2FjaGUgaWYgbmVjZXNzYXJ5LgorICAgICAqLworICAgIHByaXZhdGUgUmVzb3VyY2VCdW5kbGVbXSBjYWNoZUxvb2t1cChMb2NhbGUgZGVzaXJlZExvY2FsZSkgeworCVJlc291cmNlQnVuZGxlW10gcmJzID0gbmV3IFJlc291cmNlQnVuZGxlWzJdOworCVNvZnRSZWZlcmVuY2VbXSBkYXRhCisJICAgID0gKFNvZnRSZWZlcmVuY2VbXSljYWNoZWRMb2NhbGVEYXRhLmdldChkZXNpcmVkTG9jYWxlKTsKKwlpZiAoZGF0YSA9PSBudWxsKSB7CisJICAgIHJic1swXSA9IGdldExvY2FsZUVsZW1lbnRzKGRlc2lyZWRMb2NhbGUpOworCSAgICByYnNbMV0gPSBnZXRab25lRGF0YShkZXNpcmVkTG9jYWxlKTsKKwkgICAgZGF0YSA9IG5ldyBTb2Z0UmVmZXJlbmNlW10geyBuZXcgU29mdFJlZmVyZW5jZShyYnNbMF0pLAorCQkJCQkgICAgIG5ldyBTb2Z0UmVmZXJlbmNlKHJic1sxXSkgfTsKKwkgICAgY2FjaGVkTG9jYWxlRGF0YS5wdXQoZGVzaXJlZExvY2FsZSwgZGF0YSk7CisJfSBlbHNlIHsKKwkgICAgUmVzb3VyY2VCdW5kbGUgcjsKKwkgICAgaWYgKChyID0gKFJlc291cmNlQnVuZGxlKWRhdGFbMF0uZ2V0KCkpID09IG51bGwpIHsKKwkJciA9IGdldExvY2FsZUVsZW1lbnRzKGRlc2lyZWRMb2NhbGUpOworCQlkYXRhWzBdID0gbmV3IFNvZnRSZWZlcmVuY2Uocik7CisJICAgIH0KKwkgICAgcmJzWzBdID0gcjsKKwkgICAgaWYgKChyID0gKFJlc291cmNlQnVuZGxlKWRhdGFbMV0uZ2V0KCkpID09IG51bGwpIHsKKwkJciA9IGdldFpvbmVEYXRhKGRlc2lyZWRMb2NhbGUpOworCQlkYXRhWzFdID0gbmV3IFNvZnRSZWZlcmVuY2Uocik7CisJICAgIH0KKwkgICAgcmJzWzFdID0gcjsKKwl9CisJcmV0dXJuIHJiczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBMb2FkIHRpbWUgem9uZSBsb2NhbGl6ZWQgc3RyaW5ncy4gRW51bWVyYXRlIGFsbCBrZXlzIChleGNlcHQKKyAgICAgKiAibG9jYWxQYXR0ZXJuQ2hhcnMiIGFuZCAiem9uZVN0cmluZ3MiKS4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZ1tdW10gbG9hZFpvbmVTdHJpbmdzKExvY2FsZSBkZXNpcmVkTG9jYWxlLAorCQkJCSAgICAgICBSZXNvdXJjZUJ1bmRsZSByc3JjKQorICAgIHsKKyAgICAgICAgLyogV2UgaGF2ZSB0byBoYW5kbGUgdHdvIGRpZmZlcmVudCBmb3JtYXRzIG9mIERhdGVGb3JtYXRab25lRGF0YS4KKyAgICAgICAgICogVGhlIGZpcnN0IGlzIHVzZWQgaW4gSkRLIDEuMi4yOgorICAgICAgICAgKgorICAgICAgICAgKiB8IHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICAgKiB8ICAgcmV0dXJuIG5ldyBPYmplY3RbXVtdIHsKKyAgICAgICAgICogfCAgICAgeyJ6b25lU3RyaW5ncyIsCisgICAgICAgICAqIHwgICAgICAgbmV3IFN0cmluZ1tdW10geworICAgICAgICAgKiB8ICAgICAgICAgeyJBbWVyaWNhL0xvc19BbmdlbGVzIiwgIlBhY2lmaWMgU3RhbmRhcmQgVGltZSIsICJQU1QiLAorICAgICAgICAgKiB8ICAgICAgICAgICJQYWNpZmljIERheWxpZ2h0IFRpbWUiLCAiUERUIiB9LAorICAgICAgICAgKiB8ICAgICAgICAgLy8uLi4KKyAgICAgICAgICogfCAgICAgICB9CisgICAgICAgICAqIHwgICAgIH0sCisgICAgICAgICAqIHwgICAgIHsibG9jYWxQYXR0ZXJuQ2hhcnMiLCAiR3lNZGtIbXNTRURGd1dhaEt6In0sCisgICAgICAgICAqIHwgICB9OworICAgICAgICAgKiB8IH0KKyAgICAgICAgICoKKyAgICAgICAgICogVGhlIHNlY29uZCBpcyB1c2VkIGluIEpESyAxLjM6CisgICAgICAgICAqCisgICAgICAgICAqIHwgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgICAqIHwgICByZXR1cm4gbmV3IE9iamVjdFtdW10geworICAgICAgICAgKiB8ICAgICB7IkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCBuZXcgU3RyaW5nW10geyJBbWVyaWNhL0xvc19BbmdlbGVzIiwgIlBhY2lmaWMgU3RhbmRhcmQgVGltZSIsICJQU1QiLAorICAgICAgICAgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJQYWNpZmljIERheWxpZ2h0IFRpbWUiLCAiUERUIn19LAorICAgICAgICAgKiB8ICAgICB7ImxvY2FsUGF0dGVybkNoYXJzIiwgIkd5TWRrSG1zU0VERndXYWhLeiJ9LAorICAgICAgICAgKiB8ICAgfTsKKyAgICAgICAgICogfCB9CisgICAgICAgICAqCisgICAgICAgICAqIExldCdzIHByYXkgdGhleSBkb24ndCBhbHRlciBpdCBmdXJ0aGVyLgorICAgICAgICAgKi8KKyAgICAgICAgU3RyaW5nW11bXSB6b25lcyA9IG51bGw7CisgICAgICAgIFNvZnRSZWZlcmVuY2UgZGF0YSA9IChTb2Z0UmVmZXJlbmNlKWNhY2hlZFpvbmVEYXRhLmdldChkZXNpcmVkTG9jYWxlKTsKKyAgICAgICAgaWYgKGRhdGEgPT0gbnVsbCB8fCAoKHpvbmVzID0gKFN0cmluZ1tdW10pZGF0YS5nZXQoKSkgPT0gbnVsbCkpIHsKKyAgICAgICAgICAgIC8vIEZvciBKREsgMS4zLCB3ZSBoYXZlIHRvIGVudW1lcmF0ZSBvdmVyIHRoZSBrZXlzLiAgRm9yIDEuMi4yLCBhCisgICAgICAgICAgICAvLyBzaW5nbGUgZ2V0T2JqZWN0KCkgY2FsbCB3b3Jrcy4gIEFzIGEgaGV1cmlzdGljLCB3ZSBhc3N1bWUgdGhhdCBpZgorICAgICAgICAgICAgLy8gdGhlIHpvbmVTdHJpbmdzIGtleSBpcyBwcmVzZW50LCB0aGVuIHdlIGFyZSBoYXZlIGEgMS4yLjIgZm9ybWF0LgorICAgICAgICAgICAgLy8gT3RoZXJ3aXNlIHdlIHBhcnNlIHRoZSAxLjMgZm9ybWF0LiAtIGxpdQorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICB6b25lcyA9IChTdHJpbmdbXVtdKXJzcmMuZ2V0T2JqZWN0KCJ6b25lU3RyaW5ncyIpOworICAgICAgICAgICAgfSBjYXRjaCAoamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7fQorICAgICAgICAgICAgaWYgKHpvbmVzID09IG51bGwgfHwgem9uZXMubGVuZ3RoID09IDApIHsKKyAgICAgICAgICAgIFZlY3RvciB2ZWMgPSBuZXcgVmVjdG9yKCk7CisgICAgICAgICAgICBFbnVtZXJhdGlvbiBrZXlzID0gcnNyYy5nZXRLZXlzKCk7CisgICAgICAgICAgICB3aGlsZShrZXlzLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGtleSA9IChTdHJpbmcpa2V5cy5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgICAgIGlmICgha2V5LmVxdWFscygibG9jYWxQYXR0ZXJuQ2hhcnMiKSAmJgorICAgICAgICAgICAgICAgICAgICAha2V5LmVxdWFscygiem9uZVN0cmluZ3MiKSkgeworICAgICAgICAgICAgICAgICAgICB2ZWMuYWRkKHJzcmMuZ2V0T2JqZWN0KGtleSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHpvbmVzID0gbmV3IFN0cmluZ1t2ZWMuc2l6ZSgpXVtdOworICAgICAgICAgICAgdmVjLnRvQXJyYXkoem9uZXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGF0YSA9IG5ldyBTb2Z0UmVmZXJlbmNlKHpvbmVzKTsKKyAgICAgICAgICAgIGNhY2hlZFpvbmVEYXRhLnB1dChkZXNpcmVkTG9jYWxlLCBkYXRhKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gem9uZXM7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGluaXRpYWxpemVEYXRhKExvY2FsZSBkZXNpcmVkTG9jYWxlKQorICAgIHsKKwlpbnQgaTsKKwlSZXNvdXJjZUJ1bmRsZVtdIHJicyA9IGNhY2hlTG9va3VwKGRlc2lyZWRMb2NhbGUpOworCVJlc291cmNlQnVuZGxlIHJlc291cmNlID0gcmJzWzBdOworCVJlc291cmNlQnVuZGxlIHpvbmVSZXNvdXJjZSA9IHJic1sxXTsKKworCS8vIEZJWE1FOiBjYWNoZSBvbmx5IFJlc291cmNlQnVuZGxlLiBIZW5jZSBldmVyeSB0aW1lLCB3aWxsIGRvCisJLy8gZ2V0T2JqZWN0KCkuIFRoaXMgd29uJ3QgYmUgbmVjZXNzYXJ5IGlmIHRoZSBSZXNvdXJjZSBpdHNlbGYKKwkvLyBpcyBjYWNoZWQuCisJZXJhcyA9IChTdHJpbmdbXSlyZXNvdXJjZS5nZXRPYmplY3QoIkVyYXMiKTsKKyAgICAgICAgbW9udGhzID0gcmVzb3VyY2UuZ2V0U3RyaW5nQXJyYXkoIk1vbnRoTmFtZXMiKTsKKyAgICAgICAgc2hvcnRNb250aHMgPSByZXNvdXJjZS5nZXRTdHJpbmdBcnJheSgiTW9udGhBYmJyZXZpYXRpb25zIik7CisgICAgICAgIFN0cmluZ1tdIGxXZWVrZGF5cyA9IHJlc291cmNlLmdldFN0cmluZ0FycmF5KCJEYXlOYW1lcyIpOworICAgICAgICB3ZWVrZGF5cyA9IG5ldyBTdHJpbmdbOF07CisgICAgICAgIHdlZWtkYXlzWzBdID0gIiI7ICAvLyAxLWJhc2VkCisgICAgICAgIGZvciAoaT0wOyBpPGxXZWVrZGF5cy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHdlZWtkYXlzW2krMV0gPSBsV2Vla2RheXNbaV07CisgICAgICAgIFN0cmluZ1tdIHNXZWVrZGF5cyA9IHJlc291cmNlLmdldFN0cmluZ0FycmF5KCJEYXlBYmJyZXZpYXRpb25zIik7CisgICAgICAgIHNob3J0V2Vla2RheXMgPSBuZXcgU3RyaW5nWzhdOworICAgICAgICBzaG9ydFdlZWtkYXlzWzBdID0gIiI7ICAvLyAxLWJhc2VkCisgICAgICAgIGZvciAoaT0wOyBpPHNXZWVrZGF5cy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHNob3J0V2Vla2RheXNbaSsxXSA9IHNXZWVrZGF5c1tpXTsKKyAgICAgICAgYW1wbXMgPSByZXNvdXJjZS5nZXRTdHJpbmdBcnJheSgiQW1QbU1hcmtlcnMiKTsKKwl6b25lU3RyaW5ncyA9IChTdHJpbmdbXVtdKWxvYWRab25lU3RyaW5ncyhkZXNpcmVkTG9jYWxlLAorCQkJCQkJICB6b25lUmVzb3VyY2UpOworICAgICAgICBsb2NhbFBhdHRlcm5DaGFycworICAgICAgICAgICAgPSAoU3RyaW5nKSB6b25lUmVzb3VyY2UuZ2V0T2JqZWN0KCJsb2NhbFBhdHRlcm5DaGFycyIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFBhY2thZ2UgcHJpdmF0ZTogdXNlZCBieSBTaW1wbGVEYXRlRm9ybWF0CisgICAgICogR2V0cyB0aGUgaW5kZXggZm9yIHRoZSBnaXZlbiB0aW1lIHpvbmUgSUQgdG8gb2J0YWluIHRoZSB0aW1lem9uZQorICAgICAqIHN0cmluZ3MgZm9yIGZvcm1hdHRpbmcuIFRoZSB0aW1lIHpvbmUgSUQgaXMganVzdCBmb3IgcHJvZ3JhbW1hdGljCisgICAgICogbG9va3VwLiBOT1QgTE9DQUxJWkVEISEhCisgICAgICogQHBhcmFtIElEIHRoZSBnaXZlbiB0aW1lIHpvbmUgSUQuCisgICAgICogQHJldHVybiB0aGUgaW5kZXggb2YgdGhlIGdpdmVuIHRpbWUgem9uZSBJRC4gIFJldHVybnMgLTEgaWYKKyAgICAgKiB0aGUgZ2l2ZW4gdGltZSB6b25lIElEIGNhbid0IGJlIGxvY2F0ZWQgaW4gdGhlIERhdGVGb3JtYXRTeW1ib2xzIG9iamVjdC4KKyAgICAgKiBAc2VlIGNvbS5pYm0udXRpbC5TaW1wbGVUaW1lWm9uZQorICAgICAqLworICAgIGZpbmFsIGludCBnZXRab25lSW5kZXgoU3RyaW5nIElEKSB7CisgICAgICAgIGludCByZXN1bHQgPSBfZ2V0Wm9uZUluZGV4KElEKTsKKyAgICAgICAgaWYgKHJlc3VsdCA+PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBEbyBhIHNlYXJjaCB0aHJvdWdoIHRoZSBlcXVpdmFsZW5jeSBncm91cCBmb3IgdGhlIGdpdmVuIElECisgICAgICAgIGludCBuID0gVGltZVpvbmUuY291bnRFcXVpdmFsZW50SURzKElEKTsKKyAgICAgICAgaWYgKG4gPiAxKSB7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8bjsgKytpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIGVxdWl2SUQgPSBUaW1lWm9uZS5nZXRFcXVpdmFsZW50SUQoSUQsIGkpOworICAgICAgICAgICAgICAgIGlmICghZXF1aXZJRC5lcXVhbHMoSUQpKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBlcXVpdlJlc3VsdCA9IF9nZXRab25lSW5kZXgoZXF1aXZJRCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChlcXVpdlJlc3VsdCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXF1aXZSZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogTG9va3VwIHRoZSBnaXZlbiBJRC4gIERvIE5PVCBkbyBhbiBlcXVpdmFsZW5jeSBzZWFyY2guCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgX2dldFpvbmVJbmRleChTdHJpbmcgSUQpCisgICAgeworICAgICAgICBmb3IgKGludCBpbmRleD0wOyBpbmRleDx6b25lU3RyaW5ncy5sZW5ndGg7IGluZGV4KyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChJRC5lcXVhbHNJZ25vcmVDYXNlKHpvbmVTdHJpbmdzW2luZGV4XVswXSkpIHJldHVybiBpbmRleDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDbG9uZXMgYW4gYXJyYXkgb2YgU3RyaW5ncy4KKyAgICAgKiBAcGFyYW0gc3JjQXJyYXkgdGhlIHNvdXJjZSBhcnJheSB0byBiZSBjbG9uZWQuCisgICAgICogQHBhcmFtIGNvdW50IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIGdpdmVuIHNvdXJjZSBhcnJheS4KKyAgICAgKiBAcmV0dXJuIGEgY2xvbmVkIGFycmF5LgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nW10gZHVwbGljYXRlKFN0cmluZ1tdIHNyY0FycmF5KQorICAgIHsKKyAgICAgICAgU3RyaW5nW10gZHN0QXJyYXkgPSBuZXcgU3RyaW5nW3NyY0FycmF5Lmxlbmd0aF07CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoc3JjQXJyYXksIDAsIGRzdEFycmF5LCAwLCBzcmNBcnJheS5sZW5ndGgpOworICAgICAgICByZXR1cm4gZHN0QXJyYXk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2xvbmVzIGFsbCB0aGUgZGF0YSBtZW1iZXJzIGZyb20gdGhlIHNvdXJjZSBEYXRlRm9ybWF0U3ltYm9scyB0bworICAgICAqIHRoZSB0YXJnZXQgRGF0ZUZvcm1hdFN5bWJvbHMuIFRoaXMgaXMgb25seSBmb3Igc3ViY2xhc3Nlcy4KKyAgICAgKiBAcGFyYW0gc3JjIHRoZSBzb3VyY2UgRGF0ZUZvcm1hdFN5bWJvbHMuCisgICAgICogQHBhcmFtIGRzdCB0aGUgdGFyZ2V0IERhdGVGb3JtYXRTeW1ib2xzLgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgdm9pZCBjb3B5TWVtYmVycyhEYXRlRm9ybWF0U3ltYm9scyBzcmMsIERhdGVGb3JtYXRTeW1ib2xzIGRzdCkKKyAgICB7CisgICAgICAgIGRzdC5lcmFzID0gZHVwbGljYXRlKHNyYy5lcmFzKTsKKyAgICAgICAgZHN0Lm1vbnRocyA9IGR1cGxpY2F0ZShzcmMubW9udGhzKTsKKyAgICAgICAgZHN0LnNob3J0TW9udGhzID0gZHVwbGljYXRlKHNyYy5zaG9ydE1vbnRocyk7CisgICAgICAgIGRzdC53ZWVrZGF5cyA9IGR1cGxpY2F0ZShzcmMud2Vla2RheXMpOworICAgICAgICBkc3Quc2hvcnRXZWVrZGF5cyA9IGR1cGxpY2F0ZShzcmMuc2hvcnRXZWVrZGF5cyk7CisgICAgICAgIGRzdC5hbXBtcyA9IGR1cGxpY2F0ZShzcmMuYW1wbXMpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGRzdC56b25lU3RyaW5ncy5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgIGRzdC56b25lU3RyaW5nc1tpXSA9IGR1cGxpY2F0ZShzcmMuem9uZVN0cmluZ3NbaV0pOworICAgICAgICBkc3QubG9jYWxQYXR0ZXJuQ2hhcnMgPSBuZXcgU3RyaW5nIChzcmMubG9jYWxQYXR0ZXJuQ2hhcnMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBhcmVzIHRoZSBlcXVhbGl0eSBvZiB0aGUgdHdvIGFycmF5cyBvZiBTdHJpbmcuCisgICAgICogQHBhcmFtIGN1cnJlbnQgdGhpcyBTdHJpbmcgYXJyYXkuCisgICAgICogQHBhcmFtIG90aGVyIHRoYXQgU3RyaW5nIGFycmF5LgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBlcXVhbHMoU3RyaW5nW10gY3VycmVudCwgU3RyaW5nW10gb3RoZXIpCisgICAgeworICAgICAgICBpbnQgY291bnQgPSBjdXJyZW50Lmxlbmd0aDsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpCisgICAgICAgICAgICBpZiAoIWN1cnJlbnRbaV0uZXF1YWxzKG90aGVyW2ldKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fgorCisgICAgLyoqCisgICAgICogR2V0IHRoZSB7QGxpbmsgRGF0ZUZvcm1hdFN5bWJvbHN9IG9iamVjdCB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGZvcm1hdCBhCisgICAgICogY2FsZW5kYXIgc3lzdGVtJ3MgZGF0ZXMgaW4gdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5TdWJjbGFzc2luZzo8L2I+PGJyPgorICAgICAqIFdoZW4gY3JlYXRpbmcgYSBuZXcgQ2FsZW5kYXIgc3ViY2xhc3MsIHlvdSBtdXN0IGNyZWF0ZSB0aGUKKyAgICAgKiB7QGxpbmsgUmVzb3VyY2VCdW5kbGUgUmVzb3VyY2VCdW5kbGV9CisgICAgICogY29udGFpbmluZyBpdHMge0BsaW5rIERhdGVGb3JtYXRTeW1ib2xzIERhdGVGb3JtYXRTeW1ib2xzfSBpbiBhIHNwZWNpZmljIHBsYWNlLgorICAgICAqIFRoZSByZXNvdXJjZSBidW5kbGUgbmFtZSBpcyBiYXNlZCBvbiB0aGUgY2FsZW5kYXIncyBmdWxseS1zcGVjaWZpZWQKKyAgICAgKiBjbGFzcyBuYW1lLCB3aXRoICIucmVzb3VyY2VzIiBpbnNlcnRlZCBhdCB0aGUgZW5kIG9mIHRoZSBwYWNrYWdlIG5hbWUKKyAgICAgKiAoanVzdCBiZWZvcmUgdGhlIGNsYXNzIG5hbWUpIGFuZCAiU3ltYm9scyIgYXBwZW5kZWQgdG8gdGhlIGVuZC4KKyAgICAgKiBGb3IgZXhhbXBsZSwgdGhlIGJ1bmRsZSBjb3JyZXNwb25kaW5nIHRvICJjb20uaWJtLnV0aWwuSGVicmV3Q2FsZW5kYXIiCisgICAgICogaXMgImNvbS5pYm0udXRpbC5yZXNvdXJjZXMuSGVicmV3Q2FsZW5kYXJTeW1ib2xzIi4KKyAgICAgKiA8cD4KKyAgICAgKiBXaXRoaW4gdGhlIFJlc291cmNlQnVuZGxlLCB0aGlzIG1ldGhvZCBzZWFyY2hlcyBmb3IgZml2ZSBrZXlzOgorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+PGI+RGF5TmFtZXM8L2I+IC0KKyAgICAgKiAgICAgIEFuIGFycmF5IG9mIHN0cmluZ3MgY29ycmVzcG9uZGluZyB0byBlYWNoIHBvc3NpYmxlCisgICAgICogICAgICB2YWx1ZSBvZiB0aGUgPGNvZGU+REFZX09GX1dFRUs8L2NvZGU+IGZpZWxkLiAgRXZlbiB0aG91Z2gKKyAgICAgKiAgICAgIDxjb2RlPkRBWV9PRl9XRUVLPC9jb2RlPiBzdGFydHMgd2l0aCA8Y29kZT5TVU5EQVk8L2NvZGU+ID0gMSwKKyAgICAgKiAgICAgIFRoaXMgYXJyYXkgaXMgMC1iYXNlZDsgdGhlIG5hbWUgZm9yIFN1bmRheSBnb2VzIGluIHRoZQorICAgICAqICAgICAgZmlyc3QgcG9zaXRpb24sIGF0IGluZGV4IDAuICBJZiB0aGlzIGtleSBpcyBub3QgZm91bmQKKyAgICAgKiAgICAgIGluIHRoZSBidW5kbGUsIHRoZSBkYXkgbmFtZXMgYXJlIGluaGVyaXRlZCBmcm9tIHRoZQorICAgICAqICAgICAgZGVmYXVsdCA8Y29kZT5EYXRlRm9ybWF0U3ltYm9sczwvY29kZT4gZm9yIHRoZSByZXF1ZXN0ZWQgbG9jYWxlLgorICAgICAqCisgICAgICogPGxpPjxiPkRheUFiYnJldmlhdGlvbnM8L2I+IC0KKyAgICAgKiAgICAgIEFuIGFycmF5IG9mIGFiYnJldmlhdGVkIGRheSBuYW1lcyBjb3JyZXNwb25kaW5nCisgICAgICogICAgICB0byB0aGUgdmFsdWVzIGluIHRoZSAiRGF5TmFtZXMiIGFycmF5LiAgSWYgdGhpcyBrZXkKKyAgICAgKiAgICAgIGlzIG5vdCBmb3VuZCBpbiB0aGUgcmVzb3VyY2UgYnVuZGxlLCB0aGUgIkRheU5hbWVzIgorICAgICAqICAgICAgdmFsdWVzIGFyZSB1c2VkIGluc3RlYWQuICBJZiBuZWl0aGVyIGtleSBpcyBmb3VuZCwKKyAgICAgKiAgICAgIHRoZSBkYXkgYWJicmV2aWF0aW9ucyBhcmUgaW5oZXJpdGVkIGZyb20gdGhlIGRlZmF1bHQKKyAgICAgKiAgICAgIDxjb2RlPkRhdGVGb3JtYXRTeW1ib2xzPC9jb2RlPiBmb3IgdGhlIGxvY2FsZS4KKyAgICAgKgorICAgICAqIDxsaT48Yj5Nb250aE5hbWVzPC9iPiAtCisgICAgICogICAgICBBbiBhcnJheSBvZiBzdHJpbmdzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBwb3NzaWJsZQorICAgICAqICAgICAgdmFsdWUgb2YgdGhlIDxjb2RlPk1PTlRIPC9jb2RlPiBmaWVsZC4gIElmIHRoaXMga2V5IGlzIG5vdCBmb3VuZAorICAgICAqICAgICAgaW4gdGhlIGJ1bmRsZSwgdGhlIG1vbnRoIG5hbWVzIGFyZSBpbmhlcml0ZWQgZnJvbSB0aGUKKyAgICAgKiAgICAgIGRlZmF1bHQgPGNvZGU+RGF0ZUZvcm1hdFN5bWJvbHM8L2NvZGU+IGZvciB0aGUgcmVxdWVzdGVkIGxvY2FsZS4KKyAgICAgKgorICAgICAqIDxsaT48Yj5Nb250aEFiYnJldmlhdGlvbnM8L2I+IC0KKyAgICAgKiAgICAgIEFuIGFycmF5IG9mIGFiYnJldmlhdGVkIGRheSBuYW1lcyBjb3JyZXNwb25kaW5nCisgICAgICogICAgICB0byB0aGUgdmFsdWVzIGluIHRoZSAiTW9udGhOYW1lcyIgYXJyYXkuICBJZiB0aGlzIGtleQorICAgICAqICAgICAgaXMgbm90IGZvdW5kIGluIHRoZSByZXNvdXJjZSBidW5kbGUsIHRoZSAiTW9udGhOYW1lcyIKKyAgICAgKiAgICAgIHZhbHVlcyBhcmUgdXNlZCBpbnN0ZWFkLiAgSWYgbmVpdGhlciBrZXkgaXMgZm91bmQsCisgICAgICogICAgICB0aGUgZGF5IGFiYnJldmlhdGlvbnMgYXJlIGluaGVyaXRlZCBmcm9tIHRoZSBkZWZhdWx0CisgICAgICogICAgICA8Y29kZT5EYXRlRm9ybWF0U3ltYm9sczwvY29kZT4gZm9yIHRoZSBsb2NhbGUuCisgICAgICoKKyAgICAgKiA8bGk+PGI+RXJhczwvYj4gLQorICAgICAqICAgICAgQW4gYXJyYXkgb2Ygc3RyaW5ncyBjb3JyZXNwb25kaW5nIHRvIGVhY2ggcG9zc2libGUKKyAgICAgKiAgICAgIHZhbHVlIG9mIHRoZSA8Y29kZT5FUkE8L2NvZGU+IGZpZWxkLiAgSWYgdGhpcyBrZXkgaXMgbm90IGZvdW5kCisgICAgICogICAgICBpbiB0aGUgYnVuZGxlLCB0aGUgZXJhIG5hbWVzIGFyZSBpbmhlcml0ZWQgZnJvbSB0aGUKKyAgICAgKiAgICAgIGRlZmF1bHQgPGNvZGU+RGF0ZUZvcm1hdFN5bWJvbHM8L2NvZGU+IGZvciB0aGUgcmVxdWVzdGVkIGxvY2FsZS4KKyAgICAgKiA8L3VsPgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBjYWwgICAgICAgVGhlIGNhbGVuZGFyIHN5c3RlbSB3aG9zZSBkYXRlIGZvcm1hdCBzeW1ib2xzIGFyZSBkZXNpcmVkLgorICAgICAqIEBwYXJhbSBsb2NhbGUgICAgVGhlIGxvY2FsZSB3aG9zZSBzeW1ib2xzIGFyZSBkZXNpcmVkLgorICAgICAqCisgICAgICogQHNlZSBEYXRlRm9ybWF0U3ltYm9scyNEYXRlRm9ybWF0U3ltYm9scyhqYXZhLnV0aWwuTG9jYWxlKQorICAgICAqLworICAgIHB1YmxpYyBEYXRlRm9ybWF0U3ltYm9scyhDYWxlbmRhciBjYWwsIExvY2FsZSBsb2NhbGUpIHsKKyAgICAgICAgdGhpcyhjYWw9PW51bGw/bnVsbDpjYWwuZ2V0Q2xhc3MoKSwgbG9jYWxlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgRGF0ZUZvcm1hdFN5bWJvbHMoQ2xhc3MgY2FsZW5kYXJDbGFzcywgTG9jYWxlIGxvY2FsZSkgeworICAgICAgICB0aGlzKGxvY2FsZSk7IC8vIG9sZC1zdHlsZSBjb25zdHJ1Y3Rpb24KKyAgICAgICAgaWYgKGNhbGVuZGFyQ2xhc3MgIT0gbnVsbCkgeworICAgICAgICAgICAgUmVzb3VyY2VCdW5kbGUgYnVuZGxlID0gbnVsbDsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgYnVuZGxlID0gZ2V0RGF0ZUZvcm1hdEJ1bmRsZShjYWxlbmRhckNsYXNzLCBsb2NhbGUpOworICAgICAgICAgICAgfSBjYXRjaCAoTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAvL2lmICghKGNhbCBpbnN0YW5jZW9mIEdyZWdvcmlhbkNhbGVuZGFyKSkgeworICAgICAgICAgICAgICAgIGlmICghKEdyZWdvcmlhbkNhbGVuZGFyLmNsYXNzLmlzQXNzaWduYWJsZUZyb20oY2FsZW5kYXJDbGFzcykpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIE9rIGZvciBzeW1ib2xzIHRvIGJlIG1pc3NpbmcgZm9yIGEgR3JlZ29yaWFuIGNhbGVuZGFyLCBidXQKKyAgICAgICAgICAgICAgICAgICAgLy8gbm90IGZvciBhbnkgb3RoZXIgdHlwZS4KKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb25zdHJ1Y3RDYWxlbmRhclNwZWNpZmljKGJ1bmRsZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGZXRjaCBhIGN1c3RvbSBjYWxlbmRhcidzIERhdGVGb3JtYXRTeW1ib2xzIG91dCBvZiB0aGUgZ2l2ZW4gcmVzb3VyY2UKKyAgICAgKiBidW5kbGUuICBTeW1ib2xzIHRoYXQgYXJlIG5vdCBvdmVycmlkZGVuIGFyZSBpbmhlcml0ZWQgZnJvbSB0aGUKKyAgICAgKiBkZWZhdWx0IERhdGVGb3JtYXRTeW1ib2xzIGZvciB0aGUgbG9jYWxlLgorICAgICAqIEBzZWUgRGF0ZUZvcm1hdFN5bWJvbHMjRGF0ZUZvcm1hdFN5bWJvbHMKKyAgICAgKi8KKyAgICBwdWJsaWMgRGF0ZUZvcm1hdFN5bWJvbHMoUmVzb3VyY2VCdW5kbGUgYnVuZGxlLCBMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIC8vIEdldCB0aGUgZGVmYXVsdCBzeW1ib2xzIGZvciB0aGUgbG9jYWxlLCBzaW5jZSBtb3N0CisgICAgICAgIC8vIGNhbGVuZGFycyB3aWxsIG9ubHkgbmVlZCB0byBvdmVycmlkZSBtb250aCBuYW1lcyBhbmQgd2lsbAorICAgICAgICAvLyB3YW50IGV2ZXJ5dGhpbmcgZWxzZSB0aGUgc2FtZQorICAgICAgICB0aGlzKGxvY2FsZSk7IC8vIG9sZC1zdHlsZSBjb25zdHJ1Y3Rpb24KKyAgICAgICAgY29uc3RydWN0Q2FsZW5kYXJTcGVjaWZpYyhidW5kbGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdpdmVuIGEgcmVzb3VyY2UgYnVuZGxlIHNwZWNpZmljIHRvIHRoZSBnaXZlbiBDYWxlbmRhciBjbGFzcywKKyAgICAgKiBpbml0aWFsaXplIHRoaXMgb2JqZWN0LiAgTWVtYmVyIHZhcmlhYmxlcyB3aWxsIGhhdmUgYWxyZWFkeSBiZWVuCisgICAgICogaW5pdGlhbGl6ZWQgdXNpbmcgdGhlIGRlZmF1bHQgbWVjaGFuaXNtLCBzbyBvbmx5IHRob3NlIHRoYXQgZGlmZmVyCisgICAgICogZnJvbSBvciBzdXBwbGVtZW50IHRoZSBzdGFuZGFyZCByZXNvdXJjZSBkYXRhIG5lZWQgYmUgaGFuZGxlZCBoZXJlLgorICAgICAqIElmIHN1YmNsYXNzZXMgb3ZlcnJpZGUgdGhpcyBtZXRob2QsIHRoZXkgc2hvdWxkIGNhbGwKKyAgICAgKiA8Y29kZT5zdXBlci5jb25zdHJ1Y3RDYWxlbmRhclNwZWNpZmljKGJ1bmRsZSk8L2NvZGU+IGFzIG5lZWRlZCB0bworICAgICAqIGhhbmRsZSB0aGUgIkRheU5hbWVzIiwgIkRheUFiYnJldmlhdGlvbnMiLCAiTW9udGhOYW1lcyIsCisgICAgICogIk1vbnRoQWJicmV2aWF0aW9ucyIsIGFuZCAiRXJhcyIgcmVzb3VyY2UgZGF0YS4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBjb25zdHJ1Y3RDYWxlbmRhclNwZWNpZmljKFJlc291cmNlQnVuZGxlIGJ1bmRsZSkgeworCisgICAgICAgIC8vIEZldGNoIHRoZSBkYXkgbmFtZXMgZnJvbSB0aGUgcmVzb3VyY2UgYnVuZGxlLiAgSWYgdGhleSdyZSBub3QgZm91bmQsCisgICAgICAgIC8vIGl0J3Mgb2s7IHdlJ2xsIGp1c3QgdXNlIHRoZSBkZWZhdWx0IG9uZXMuCisgICAgICAgIC8vIEFsbG93IGEgbnVsbCBSZXNvdXJjZUJ1bmRsZSBqdXN0IGZvciB0aGUgc2FrZSBvZiBjb21wbGV0ZW5lc3M7CisgICAgICAgIC8vIHRoaXMgaXMgdXNlZnVsIGZvciBjYWxlbmRhcnMgdGhhdCBkb24ndCBoYXZlIGFueSBvdmVycmlkZGVuIHN5bWJvbHMKKworICAgICAgICBpZiAoYnVuZGxlICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgU3RyaW5nW10gdGVtcCA9IGJ1bmRsZS5nZXRTdHJpbmdBcnJheSgiRGF5TmFtZXMiKTsKKyAgICAgICAgICAgICAgICBzZXRXZWVrZGF5cyh0ZW1wKTsKKyAgICAgICAgICAgICAgICBzZXRTaG9ydFdlZWtkYXlzKHRlbXApOworCisgICAgICAgICAgICAgICAgdGVtcCA9IGJ1bmRsZS5nZXRTdHJpbmdBcnJheSgiRGF5QWJicmV2aWF0aW9ucyIpOworICAgICAgICAgICAgICAgIHNldFNob3J0V2Vla2RheXMoIHRlbXAgKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7fQorCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIFN0cmluZ1tdIHRlbXAgPSBidW5kbGUuZ2V0U3RyaW5nQXJyYXkoIk1vbnRoTmFtZXMiKTsKKyAgICAgICAgICAgICAgICBzZXRNb250aHMoIHRlbXAgKTsKKyAgICAgICAgICAgICAgICBzZXRTaG9ydE1vbnRocyggdGVtcCApOworCisgICAgICAgICAgICAgICAgdGVtcCA9IGJ1bmRsZS5nZXRTdHJpbmdBcnJheSgiTW9udGhBYmJyZXZpYXRpb25zIik7CisgICAgICAgICAgICAgICAgc2V0U2hvcnRNb250aHMoIHRlbXAgKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7fQorCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIFN0cmluZ1tdIHRlbXAgPSBidW5kbGUuZ2V0U3RyaW5nQXJyYXkoIkVyYXMiKTsKKyAgICAgICAgICAgICAgICBzZXRFcmFzKCB0ZW1wICk7CisgICAgICAgICAgICB9IGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkge30KKyAgICAgICAgfQorICAgIH0KKworLy9+ICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGphdmEudGV4dC5EYXRlRm9ybWF0U3ltYm9scyBvbGRTdHlsZVN5bWJvbHMoRGF0ZUZvcm1hdFN5bWJvbHMgc3ltcywgTG9jYWxlIGxvYykgeworLy9+ICAgICAgICBqYXZhLnRleHQuRGF0ZUZvcm1hdFN5bWJvbHMgcmVzdWx0ID0gbmV3IGphdmEudGV4dC5EYXRlRm9ybWF0U3ltYm9scyhsb2MpOworLy9+ICAgICAgICByZXN1bHQuc2V0QW1QbVN0cmluZ3Moc3ltcy5nZXRBbVBtU3RyaW5ncygpKTsKKy8vfiAgICAgICAgcmVzdWx0LnNldEVyYXMoc3ltcy5nZXRFcmFzKCkpOworLy9+ICAgICAgICByZXN1bHQuc2V0TG9jYWxQYXR0ZXJuQ2hhcnMoc3ltcy5nZXRMb2NhbFBhdHRlcm5DaGFycygpKTsKKy8vfiAgICAgICAgcmVzdWx0LnNldE1vbnRocyhzeW1zLmdldE1vbnRocygpKTsKKy8vfiAgICAgICAgcmVzdWx0LnNldFNob3J0TW9udGhzKHN5bXMuZ2V0U2hvcnRNb250aHMoKSk7CisvL34gICAgICAgIHJlc3VsdC5zZXRTaG9ydFdlZWtkYXlzKHN5bXMuZ2V0U2hvcnRXZWVrZGF5cygpKTsKKy8vfiAgICAgICAgcmVzdWx0LnNldFdlZWtkYXlzKHN5bXMuZ2V0V2Vla2RheXMoKSk7CisvL34gICAgICAgIHJlc3VsdC5zZXRab25lU3RyaW5ncyhzeW1zLmdldFpvbmVTdHJpbmdzKCkpOworLy9+ICAgICAgICByZXR1cm4gcmVzdWx0OworLy9+ICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbmQgdGhlIFJlc291cmNlQnVuZGxlIGNvbnRhaW5pbmcgdGhlIGRhdGUgZm9ybWF0IGluZm9ybWF0aW9uIGZvcgorICAgICAqIGEgc3BlY2lmaWVkIGNhbGVuZGFyIHN1YmNsYXNzIGluIGEgZ2l2ZW4gbG9jYWxlLgorICAgICAqIDxwPgorICAgICAqIFRoZSByZXNvdXJjZSBidW5kbGUgbmFtZSBpcyBiYXNlZCBvbiB0aGUgY2FsZW5kYXIncyBmdWxseS1zcGVjaWZpZWQKKyAgICAgKiBjbGFzcyBuYW1lLCB3aXRoICIucmVzb3VyY2VzIiBpbnNlcnRlZCBhdCB0aGUgZW5kIG9mIHRoZSBwYWNrYWdlIG5hbWUKKyAgICAgKiAoanVzdCBiZWZvcmUgdGhlIGNsYXNzIG5hbWUpIGFuZCAiU3ltYm9scyIgYXBwZW5kZWQgdG8gdGhlIGVuZC4KKyAgICAgKiBGb3IgZXhhbXBsZSwgdGhlIGJ1bmRsZSBjb3JyZXNwb25kaW5nIHRvICJjb20uaWJtLnV0aWwuSGVicmV3Q2FsZW5kYXIiCisgICAgICogaXMgImNvbS5pYm0udXRpbC5yZXNvdXJjZXMuSGVicmV3Q2FsZW5kYXJTeW1ib2xzIi4KKyAgICAgKi8KKyAgICBzdGF0aWMgcHVibGljIFJlc291cmNlQnVuZGxlIGdldERhdGVGb3JtYXRCdW5kbGUoQ2xhc3MgY2FsZW5kYXJDbGFzcywgTG9jYWxlIGxvY2FsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIHsKKworICAgICAgICAvLyBGaW5kIHRoZSBjYWxlbmRhcidzIGNsYXNzIG5hbWUsIHdoaWNoIHdlJ3JlIGdvaW5nIHRvIHVzZSB0byBjb25zdHJ1Y3QgdGhlCisgICAgICAgIC8vIHJlc291cmNlIGJ1bmRsZSBuYW1lLgorICAgICAgICBTdHJpbmcgZnVsbE5hbWUgPSBjYWxlbmRhckNsYXNzLmdldE5hbWUoKTsKKyAgICAgICAgaW50IGxhc3REb3QgPSBmdWxsTmFtZS5sYXN0SW5kZXhPZignLicpOworICAgICAgICBTdHJpbmcgY2xhc3NOYW1lID0gZnVsbE5hbWUuc3Vic3RyaW5nKGxhc3REb3QrMSk7CisKKyAgICAgICAgLy8gVGhlIG5hbWUgb2YgdGhlIFJlc291cmNlQnVuZGxlIGl0c2VsZiBpcyB0aGUgY2FsZW5kYXIncyBmdWxseS1xdWFsaWZpZWQKKyAgICAgICAgLy8gbmFtZSwgd2l0aCAiLnJlc291cmNlcyIgaW5zZXJ0ZWQgaW4gdGhlIHBhY2thZ2UgYW5kICJTeW1ib2xzIiBhcHBlbmRlZC4KKyAgICAgICAgLy8gRS5nLiwgIm15LnBrZy5NeUNhbGVuZGFyIiAtPiAibXkucGtnLnJlc291cmNlcy5NeUNhbGVuZGFyU3ltYm9scyIKKyAgICAgICAgU3RyaW5nIGJ1bmRsZU5hbWUgPSBmdWxsTmFtZS5zdWJzdHJpbmcoMCwgbGFzdERvdCsxKSArICJyZXNvdXJjZXMuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGNsYXNzTmFtZSArICJTeW1ib2xzIjsKKworICAgICAgICBSZXNvdXJjZUJ1bmRsZSByZXN1bHQgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmVzdWx0ID0gUmVzb3VyY2VCdW5kbGUuZ2V0QnVuZGxlKGJ1bmRsZU5hbWUsIGxvY2FsZSk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAvL2lmICghKGNhbCBpbnN0YW5jZW9mIEdyZWdvcmlhbkNhbGVuZGFyKSkgeworICAgICAgICAgICAgaWYgKCEoR3JlZ29yaWFuQ2FsZW5kYXIuY2xhc3MuaXNBc3NpZ25hYmxlRnJvbShjYWxlbmRhckNsYXNzKSkpIHsKKyAgICAgICAgICAgICAgICAvLyBPayBmb3Igc3ltYm9scyB0byBiZSBtaXNzaW5nIGZvciBhIEdyZWdvcmlhbiBjYWxlbmRhciwgYnV0CisgICAgICAgICAgICAgICAgLy8gbm90IGZvciBhbnkgb3RoZXIgdHlwZS4KKyAgICAgICAgICAgICAgICB0aHJvdyBlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIHB1YmxpYyBSZXNvdXJjZUJ1bmRsZSBnZXREYXRlRm9ybWF0QnVuZGxlKENhbGVuZGFyIGNhbCwgTG9jYWxlIGxvY2FsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIGdldERhdGVGb3JtYXRCdW5kbGUoY2FsPT1udWxsP251bGw6Y2FsLmdldENsYXNzKCksIGxvY2FsZSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9EZWNpbWFsRm9ybWF0LmphdmEgYi9zcmMvY29tL2libS90ZXh0L0RlY2ltYWxGb3JtYXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wZjQyZDU2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9EZWNpbWFsRm9ybWF0LmphdmEKQEAgLTAsMCArMSwyODYwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L0F0dGljL0RlY2ltYWxGb3JtYXQuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wNi8wMSAyMzo1MjoxNyAkIAorICogJFJldmlzaW9uOiAxLjggJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udGV4dDsKKworaW1wb3J0IGphdmEudGV4dC5Gb3JtYXQ7CitpbXBvcnQgamF2YS50ZXh0LlBhcnNlUG9zaXRpb247CitpbXBvcnQgamF2YS50ZXh0LkZpZWxkUG9zaXRpb247CitpbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7CitpbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLk9iamVjdElucHV0U3RyZWFtOworaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7CisKKy8qKgorICogPGNvZGU+RGVjaW1hbEZvcm1hdDwvY29kZT4gaXMgYSBjb25jcmV0ZSBzdWJjbGFzcyBvZgorICogPGNvZGU+TnVtYmVyRm9ybWF0PC9jb2RlPiB0aGF0IGZvcm1hdHMgZGVjaW1hbCBudW1iZXJzLiBJdCBoYXMgYSB2YXJpZXR5IG9mCisgKiBmZWF0dXJlcyBkZXNpZ25lZCB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIHBhcnNlIGFuZCBmb3JtYXQgbnVtYmVycyBpbiBhbnkKKyAqIGxvY2FsZSwgaW5jbHVkaW5nIHN1cHBvcnQgZm9yIFdlc3Rlcm4sIEFyYWJpYywgb3IgSW5kaWMgZGlnaXRzLiAgSXQgYWxzbworICogc3VwcG9ydHMgZGlmZmVyZW50IGZsYXZvcnMgb2YgbnVtYmVycywgaW5jbHVkaW5nIGludGVnZXJzICgxMjMpLCBmaXhlZC1wb2ludAorICogbnVtYmVycyAoMTIzLjQpLCBzY2llbnRpZmljIG5vdGF0aW9uICgxLjIzRTQpLCBwZXJjZW50YWdlcyAoMTIlKSwgYW5kCisgKiBjdXJyZW5jeSBhbW91bnRzICgkMTIzKS4gIEFsbCBvZiB0aGVzZSBmbGF2b3JzIGNhbiBiZSBlYXNpbHkgbG9jYWxpemVkLgorICoKKyAqIDxwPjxzdHJvbmc+VGhpcyBpcyBhbiBlbmhhbmNlZCB2ZXJzaW9uIG9mIDxjb2RlPkRlY2ltYWxGb3JtYXQ8L2NvZGU+IHRoYXQKKyAqIGlzIGJhc2VkIG9uIHRoZSBzdGFuZGFyZCB2ZXJzaW9uIGluIHRoZSBKREsuICBOZXcgb3IgY2hhbmdlZCBmdW5jdGlvbmFsaXR5CisgKiBpcyBsYWJlbGVkCisgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+IG9yCisgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5DSEFOR0VEPC9mb250Pjwvc3Ryb25nPi48L3N0cm9uZz4KKyAqCisgKiA8cD5UbyBvYnRhaW4gYSA8Y29kZT5OdW1iZXJGb3JtYXQ8L2NvZGU+IGZvciBhIHNwZWNpZmljIGxvY2FsZSAoaW5jbHVkaW5nIHRoZQorICogZGVmYXVsdCBsb2NhbGUpIGNhbGwgb25lIG9mIDxjb2RlPk51bWJlckZvcm1hdDwvY29kZT4ncyBmYWN0b3J5IG1ldGhvZHMgc3VjaAorICogYXMgPGNvZGU+Z2V0SW5zdGFuY2UoKTwvY29kZT4uIERvIG5vdCBjYWxsIHRoZSA8Y29kZT5EZWNpbWFsRm9ybWF0PC9jb2RlPgorICogY29uc3RydWN0b3JzIGRpcmVjdGx5LCB1bmxlc3MgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nLCBzaW5jZSB0aGUKKyAqIDxjb2RlPk51bWJlckZvcm1hdDwvY29kZT4gZmFjdG9yeSBtZXRob2RzIG1heSByZXR1cm4gc3ViY2xhc3NlcyBvdGhlciB0aGFuCisgKiA8Y29kZT5EZWNpbWFsRm9ybWF0PC9jb2RlPi4gSWYgeW91IG5lZWQgdG8gY3VzdG9taXplIHRoZSBmb3JtYXQgb2JqZWN0LCBkbworICogc29tZXRoaW5nIGxpa2UgdGhpczoKKyAqCisgKiA8YmxvY2txdW90ZT48cHJlPgorICogTnVtYmVyRm9ybWF0IGYgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UobG9jKTsKKyAqIGlmIChmIGluc3RhbmNlb2YgRGVjaW1hbEZvcm1hdCkgeworICogICAgICgoRGVjaW1hbEZvcm1hdCkgZikuc2V0RGVjaW1hbFNlcGFyYXRvckFsd2F5c1Nob3duKHRydWUpOworICogfQorICogPC9wcmU+PC9ibG9ja3F1b3RlPgorICoKKyAqIDxwPkEgPGNvZGU+RGVjaW1hbEZvcm1hdDwvY29kZT4gY29tcHJpc2VzIGEgPGVtPnBhdHRlcm48L2VtPiBhbmQgYSBzZXQgb2YKKyAqIDxlbT5zeW1ib2xzPC9lbT4uICBUaGUgcGF0dGVybiBtYXkgYmUgc2V0IGRpcmVjdGx5IHVzaW5nCisgKiA8Y29kZT5hcHBseVBhdHRlcm4oKTwvY29kZT4sIG9yIGluZGlyZWN0bHkgdXNpbmcgdGhlIEFQSSBtZXRob2RzLiAgVGhlCisgKiBzeW1ib2xzIGFyZSBzdG9yZWQgaW4gYSA8Y29kZT5EZWNpbWFsRm9ybWF0U3ltYm9sczwvY29kZT4gb2JqZWN0LiAgV2hlbiB1c2luZworICogdGhlIDxjb2RlPk51bWJlckZvcm1hdDwvY29kZT4gZmFjdG9yeSBtZXRob2RzLCB0aGUgcGF0dGVybiBhbmQgc3ltYm9scyBhcmUKKyAqIHJlYWQgZnJvbSBsb2NhbGl6ZWQgPGNvZGU+UmVzb3VyY2VCdW5kbGU8L2NvZGU+cyBpbiB0aGUgcGFja2FnZQorICogPGNvZGU+amF2YS50ZXh0LnJlc291cmNlPC9jb2RlPi4KKyAqCisgKiA8cD48c3Ryb25nPkV4YW1wbGU8L3N0cm9uZz4KKyAqCisgKiA8YmxvY2txdW90ZT48cHJlPgorICogPHN0cm9uZz4vLyBQcmludCBvdXQgYSBudW1iZXIgdXNpbmcgdGhlIGxvY2FsaXplZCBudW1iZXIsIGN1cnJlbmN5LAorICogLy8gYW5kIHBlcmNlbnQgZm9ybWF0IGZvciBlYWNoIGxvY2FsZTwvc3Ryb25nPgorICogTG9jYWxlW10gbG9jYWxlcyA9IE51bWJlckZvcm1hdC5nZXRBdmFpbGFibGVMb2NhbGVzKCk7CisgKiBkb3VibGUgbXlOdW1iZXIgPSAtMTIzNC41NjsKKyAqIE51bWJlckZvcm1hdCBmb3JtOworICogZm9yIChpbnQgaj0wOyBqPDM7ICsraikgeworICogICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRk9STUFUIik7CisgKiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsb2NhbGVzLmxlbmd0aDsgKytpKSB7CisgKiAgICAgICAgIGlmIChsb2NhbGVzW2ldLmdldENvdW50cnkoKS5sZW5ndGgoKSA9PSAwKSB7CisgKiAgICAgICAgICAgIC8vIFNraXAgbGFuZ3VhZ2Utb25seSBsb2NhbGVzCisgKiAgICAgICAgICAgIGNvbnRpbnVlOworICogICAgICAgICB9CisgKiAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQobG9jYWxlc1tpXS5nZXREaXNwbGF5TmFtZSgpKTsKKyAqICAgICAgICAgc3dpdGNoIChqKSB7CisgKiAgICAgICAgIGNhc2UgMDoKKyAqICAgICAgICAgICAgIGZvcm0gPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UobG9jYWxlc1tpXSk7IGJyZWFrOworICogICAgICAgICBjYXNlIDE6CisgKiAgICAgICAgICAgICBmb3JtID0gTnVtYmVyRm9ybWF0LmdldEN1cnJlbmN5SW5zdGFuY2UobG9jYWxlc1tpXSk7IGJyZWFrOworICogICAgICAgICBkZWZhdWx0OgorICogICAgICAgICAgICAgZm9ybSA9IE51bWJlckZvcm1hdC5nZXRQZXJjZW50SW5zdGFuY2UobG9jYWxlc1tpXSk7IGJyZWFrOworICogICAgICAgICB9CisgKiAgICAgICAgIHRyeSB7CisgKiAgICAgICAgICAgICAvLyBBc3N1bWUgZm9ybSBpcyBhIERlY2ltYWxGb3JtYXQKKyAqICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIjogIiArICgoRGVjaW1hbEZvcm1hdCkgZm9ybSkudG9QYXR0ZXJuKCkKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIC0+ICIgKyBmb3JtLmZvcm1hdChteU51bWJlcikpOworICogICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkge30KKyAqICAgICAgICAgdHJ5IHsKKyAqICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiIC0+ICIgKyBmb3JtLnBhcnNlKGZvcm0uZm9ybWF0KG15TnVtYmVyKSkpOworICogICAgICAgICB9IGNhdGNoIChQYXJzZUV4Y2VwdGlvbiBlKSB7fQorICogICAgIH0KKyAqIH0KKyAqIDwvcHJlPjwvYmxvY2txdW90ZT4KKyAqCisgKiA8cD48c3Ryb25nPk5vdGVzPC9zdHJvbmc+CisgKgorICogPHA+QSA8Y29kZT5EZWNpbWFsRm9ybWF0PC9jb2RlPiBwYXR0ZXJuIGNvbnRhaW5zIGEgcG9zdGl2ZSBhbmQgbmVnYXRpdmUKKyAqIHN1YnBhdHRlcm4sIGZvciBleGFtcGxlLCAiIywjIzAuMDA7KCMsIyMwLjAwKSIuICBFYWNoIHN1YnBhdHRlcm4gaGFzIGEKKyAqIHByZWZpeCwgbnVtZXJpYyBwYXJ0LCBhbmQgc3VmZml4LiAgSWYgdGhlcmUgaXMgbm8gZXhwbGljaXQgbmVnYXRpdmUKKyAqIHN1YnBhdHRlcm4sIHRoZSBsb2NhbGl6ZWQgbWludXMgc2lnbiwgdHlwaWNhbGx5ICctJywgaXMgcHJlZml4ZWQgdG8gdGhlCisgKiBwb3NpdGl2ZSBmb3JtLiBUaGF0IGlzLCAiMC4wMCIgYWxvbmUgaXMgZXF1aXZhbGVudCB0byAiMC4wMDstMC4wMCIuICBJZiB0aGVyZQorICogaXMgYW4gZXhwbGljaXQgbmVnYXRpdmUgc3VicGF0dGVybiwgaXQgc2VydmVzIG9ubHkgdG8gc3BlY2lmeSB0aGUgbmVnYXRpdmUKKyAqIHByZWZpeCBhbmQgc3VmZml4OyB0aGUgbnVtYmVyIG9mIGRpZ2l0cywgbWluaW1hbCBkaWdpdHMsIGFuZCBvdGhlcgorICogY2hhcmFjdGVyaXN0aWNzIGFyZSBhbGwgdGhlIHNhbWUgYXMgdGhlIHBvc2l0aXZlIHBhdHRlcm4uIFRoYXQgbWVhbnMgdGhhdAorICogIiMsIyMwLjAjOygjKSIgaGFzIHByZWNpc2VseSB0aGUgc2FtZSByZXN1bHQgYXMgIiMsIyMwLjAjOygjLCMjMC4wIykiLgorICoKKyAqIDxwPlRoZSBwcmVmaXhlcywgc3VmZml4ZXMsIGFuZCB2YXJpb3VzIHN5bWJvbHMgdXNlZCBmb3IgaW5maW5pdHksIGRpZ2l0cywKKyAqIHRob3VzYW5kcyBzZXBhcmF0b3JzLCBkZWNpbWFsIHNlcGFyYXRvcnMsIGV0Yy4gbWF5IGJlIHNldCB0byBhcmJpdHJhcnkKKyAqIHZhbHVlcywgYW5kIHRoZXkgd2lsbCBhcHBlYXIgcHJvcGVybHkgZHVyaW5nIGZvcm1hdHRpbmcuICBIb3dldmVyLCBjYXJlIG11c3QKKyAqIGJlIHRha2VuIHRoYXQgdGhlIHN5bWJvbHMgYW5kIHN0cmluZ3MgZG8gbm90IGNvbmZsaWN0LCBvciBwYXJzaW5nIHdpbGwgYmUKKyAqIHVucmVsaWFibGUuICBGb3IgZXhhbXBsZSwgZWl0aGVyIHRoZSBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgcHJlZml4ZXMgb3IgdGhlCisgKiBzdWZmaXhlcyBtdXN0IGJlIGRpc3RpbmN0IGZvciA8Y29kZT5EZWNpbWFsRm9ybWF0LnBhcnNlKCk8L2NvZGU+IHRvIGJlIGFibGUKKyAqIHRvIGRpc3Rpbmd1aXNoIHBvc2l0aXZlIGZyb20gbmVnYXRpdmUgdmFsdWVzLiAgQW5vdGhlciBleGFtcGxlIGlzIHRoYXQgdGhlCisgKiBkZWNpbWFsIHNlcGFyYXRvciBhbmQgdGhvdXNhbmRzIHNlcGFyYXRvciBzaG91bGQgYmUgZGlzdGluY3QgY2hhcmFjdGVycywgb3IKKyAqIHBhcnNpbmcgd2lsbCBiZSBpbXBvc3NpYmxlLgorICoKKyAqIDxwPlRoZSBncm91cGluZyBzZXBhcmF0b3IgaXMgY29tbW9ubHkgdXNlZCBmb3IgdGhvdXNhbmRzLCBidXQgaW4gc29tZQorICogY291bnRyaWVzIGl0IHNlcGFyYXRlcyB0ZW4tdGhvdXNhbmRzLiBUaGUgZ3JvdXBpbmcgc2l6ZSBpcyBhIGNvbnN0YW50IG51bWJlcgorICogb2YgZGlnaXRzIGJldHdlZW4gdGhlIGdyb3VwaW5nIGNoYXJhY3RlcnMsIHN1Y2ggYXMgMyBmb3IgMTAwLDAwMCwwMDAgb3IgNCBmb3IKKyAqIDEsMDAwMCwwMDAwLgorICogSWYgeW91IHN1cHBseSBhIHBhdHRlcm4gd2l0aCBtdWx0aXBsZSBncm91cGluZyBjaGFyYWN0ZXJzLCB0aGUgaW50ZXJ2YWwKKyAqIGJldHdlZW4gdGhlIGxhc3Qgb25lIGFuZCB0aGUgZW5kIG9mIHRoZSBpbnRlZ2VyIGRldGVybWluZXMgdGhlIHByaW1hcnkKKyAqIGdyb3VwaW5nIHNpemUsIGFuZCB0aGUgaW50ZXJ2YWwgYmV0d2VlbiB0aGUgbGFzdCB0d28gZGV0ZXJtaW5lcworICogdGhlIHNlY29uZGFyeSBncm91cGluZyBzaXplIChzZWUgYmVsb3cpOyBhbGwgb3RoZXJzIGFyZSBpZ25vcmVkLgorICogU28gIiMsIyMsIyMjLCMjIyMiID09ICIjIyMsIyMjLCMjIyMiID09ICIjIywjLCMjIywjIyMjIi4KKyAqCisgKiA8UD5Tb21lIGxvY2FsZXMgaGF2ZSB0d28gZGlmZmVyZW50IGdyb3VwaW5nIGludGVydmFsczogIE9uZSB1c2VkIGZvciB0aGUKKyAqIGxlYXN0IHNpZ25pZmljYW50IGludGVnZXIgZGlnaXRzICh0aGUgcHJpbWFyeSBncm91cGluZyBzaXplKSwgYW5kCisgKiBvbmUgdXNlZCBmb3IgYWxsIG90aGVycyAodGhlIHNlY29uZGFyeSBncm91cGluZyBzaXplKS4gIEZvciBleGFtcGxlLAorICogaWYgdGhlIHByaW1hcnkgZ3JvdXBpbmcgaW50ZXJ2YWwgaXMgMywgYW5kIHRoZSBzZWNvbmRhcnkgaXMgMiwgdGhlbgorICogdGhpcyBjb3JyZXNwb25kcyB0byB0aGUgcGF0dGVybiAiIywjIywjIzAiLCBhbmQgdGhlIG51bWJlciAxMjM0NTY3ODkKKyAqIGlzIGZvcm1hdHRlZCBhcyAiMTIsMzQsNTYsNzg5Ii4KKyAqCisgKiA8cD48Y29kZT5EZWNpbWFsRm9ybWF0PC9jb2RlPiBwYXJzZXMgYWxsIFVuaWNvZGUgY2hhcmFjdGVycyB0aGF0IHJlcHJlc2VudAorICogZGVjaW1hbCBkaWdpdHMsIGFzIGRlZmluZWQgYnkgPGNvZGU+Q2hhcmFjdGVyLmRpZ2l0KCk8L2NvZGU+LiAgSW4gYWRkaXRpb24sCisgKiA8Y29kZT5EZWNpbWFsRm9ybWF0PC9jb2RlPiBhbHNvIHJlY29nbml6ZXMgYXMgZGlnaXRzIHRoZSB0ZW4gY29uc2VjdXRpdmUKKyAqIGNoYXJhY3RlcnMgc3RhcnRpbmcgd2l0aCB0aGUgbG9jYWxpemVkIHplcm8gZGlnaXQgZGVmaW5lZCBpbiB0aGUKKyAqIDxjb2RlPkRlY2ltYWxGb3JtYXRTeW1ib2xzPC9jb2RlPiBvYmplY3QuICBEdXJpbmcgZm9ybWF0dGluZywgdGhlCisgKiA8Y29kZT5EZWNpbWFsRm9ybWF0U3ltYm9sczwvY29kZT4tYmFzZWQgZGlnaXRzIGFyZSBvdXRwdXQuCisgKgorICogPHA+SWxsZWdhbCBwYXR0ZXJucywgc3VjaCBhcyAiIy4jLiMiIG9yICIjLiMjIywjIyMiLCB3aWxsIGNhdXNlCisgKiA8Y29kZT5EZWNpbWFsRm9ybWF0PC9jb2RlPiB0byB0aHJvdyBhbiA8Y29kZT5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb248L2NvZGU+CisgKiB3aXRoIGEgbWVzc2FnZSB0aGF0IGRlc2NyaWJlcyB0aGUgcHJvYmxlbS4KKyAqCisgKiA8cD5JZiA8Y29kZT5EZWNpbWFsRm9ybWF0LnBhcnNlKFN0cmluZywgUGFyc2VQb3NpdGlvbik8L2NvZGU+IGZhaWxzIHRvIHBhcnNlCisgKiBhIHN0cmluZywgaXQgcmV0dXJucyA8Y29kZT5udWxsPC9jb2RlPiBhbmQgbGVhdmVzIHRoZSBwYXJzZSBwb3NpdGlvbgorICogdW5jaGFuZ2VkLiAgVGhlIGNvbnZlbmllbmNlIG1ldGhvZCA8Y29kZT5EZWNpbWFsRm9ybWF0LnBhcnNlKFN0cmluZyk8L2NvZGU+CisgKiBpbmRpY2F0ZXMgcGFyc2UgZmFpbHVyZSBieSB0aHJvd2luZyBhIDxjb2RlPlBhcnNlRXhjZXB0aW9uPC9jb2RlPi4KKyAqCisgKiA8cD48c3Ryb25nPlNwZWNpYWwgQ2FzZXM8L3N0cm9uZz4KKyAqCisgKiA8cD48Y29kZT5OYU48L2NvZGU+IGlzIGZvcm1hdHRlZCBhcyBhIHNpbmdsZSBjaGFyYWN0ZXIsIHR5cGljYWxseQorICogPGNvZGU+JiM5Mjt1RkZGRDwvY29kZT4uICBUaGlzIGNoYXJhY3RlciBpcyBkZXRlcm1pbmVkIGJ5IHRoZQorICogPGNvZGU+RGVjaW1hbEZvcm1hdFN5bWJvbHM8L2NvZGU+IG9iamVjdC4gIFRoaXMgaXMgdGhlIG9ubHkgdmFsdWUgZm9yIHdoaWNoCisgKiB0aGUgcHJlZml4ZXMgYW5kIHN1ZmZpeGVzIGFyZSBub3QgdXNlZC4KKyAqCisgKiA8cD5JbmZpbml0eSBpcyBmb3JtYXR0ZWQgYXMgYSBzaW5nbGUgY2hhcmFjdGVyLCB0eXBpY2FsbHkKKyAqIDxjb2RlPiYjOTI7dTIyMUU8L2NvZGU+LCB3aXRoIHRoZSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBwcmVmaXhlcyBhbmQgc3VmZml4ZXMKKyAqIGFwcGxpZWQuICBUaGUgaW5maW5pdHkgY2hhcmFjdGVyIGlzIGRldGVybWluZWQgYnkgdGhlCisgKiA8Y29kZT5EZWNpbWFsRm9ybWF0U3ltYm9sczwvY29kZT4gb2JqZWN0LgorICoKKyAqIDxwPgorICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICogPHN0cm9uZz5TY2llbnRpZmljIE5vdGF0aW9uPC9zdHJvbmc+CisgKgorICogPHA+TnVtYmVycyBpbiBzY2llbnRpZmljIG5vdGF0aW9uIGFyZSBleHByZXNzZWQgYXMgdGhlIHByb2R1Y3Qgb2YgYSBtYW50aXNzYQorICogYW5kIGEgcG93ZXIgb2YgdGVuLCBmb3IgZXhhbXBsZSwgMTIzNCBjYW4gYmUgZXhwcmVzc2VkIGFzIDEuMjM0IHggMTBeMy4gIFRoZQorICogbWFudGlzc2EgaXMgb2Z0ZW4gaW4gdGhlIHJhbmdlIDEuMCA8PSB4IDwgMTAuMCwgYnV0IGl0IG5lZWQgbm90IGJlLgorICogPGNvZGU+RGVjaW1hbEZvcm1hdDwvY29kZT4gY2FuIGJlIGluc3RydWN0ZWQgdG8gZm9ybWF0IGFuZCBwYXJzZSBzY2llbnRpZmljCisgKiBub3RhdGlvbiB0aHJvdWdoIHRoZSBBUEkgb3IgdmlhIGEgcGF0dGVybi4gIEluIGEgcGF0dGVybiwgdGhlIGV4cG9uZW50CisgKiBjaGFyYWN0ZXIgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgZGlnaXQgY2hhcmFjdGVycyBpbmRpY2F0ZXMKKyAqIHNjaWVudGlmaWMgbm90YXRpb24uICBFeGFtcGxlOiAiMC4jIyNFMCIgZm9ybWF0cyB0aGUgbnVtYmVyIDEyMzQgYXMKKyAqICIxLjIzNEUzIi4KKyAqCisgKiA8dWw+CisgKiA8bGk+VGhlIG51bWJlciBvZiBkaWdpdCBjaGFyYWN0ZXJzIGFmdGVyIHRoZSBleHBvbmVudCBjaGFyYWN0ZXIgZ2l2ZXMgdGhlCisgKiBtaW5pbXVtIGV4cG9uZW50IGRpZ2l0IGNvdW50LiAgVGhlcmUgaXMgbm8gbWF4aW11bS4gIE5lZ2F0aXZlIGV4cG9uZW50cyBhcmUKKyAqIGZvcm1hdHRlZCB1c2luZyB0aGUgbG9jYWxpemVkIG1pbnVzIHNpZ24sIDxlbT5ub3Q8L2VtPiB0aGUgcHJlZml4IGFuZCBzdWZmaXgKKyAqIGZyb20gdGhlIHBhdHRlcm4uICBUaGlzIGFsbG93cyBwYXR0ZXJucyBzdWNoIGFzICIwLiMjI0UwIG0vcyIuICBUbyBwcmVmaXgKKyAqIHBvc2l0aXZlIGV4cG9uZW50cyB3aXRoIGEgbG9jYWxpemVkIHBsdXMgc2lnbiwgc3BlY2lmeSAnKycgYmV0d2VlbiB0aGUKKyAqIGV4cG9uZW50IGFuZCB0aGUgZGlnaXRzOiAiMC4jIyNFKzAiIHdpbGwgcHJvZHVjZSBmb3JtYXRzICIxRSsxIiwgIjFFKzAiLAorICogIjFFLTEiLCBldGMuICAoSW4gbG9jYWxpemVkIHBhdHRlcm5zLCB1c2UgdGhlIGxvY2FsaXplZCBwbHVzIHNpZ24gcmF0aGVyIHRoYW4KKyAqICcrJy4pCisgKgorICogPGxpPlRoZSBtaW5pbXVtIG51bWJlciBvZiBpbnRlZ2VyIGRpZ2l0cyBpcyBhY2hpZXZlZCBieSBhZGp1c3RpbmcgdGhlCisgKiBleHBvbmVudC4gIEV4YW1wbGU6IDAuMDAxMjMgZm9ybWF0dGVkIHdpdGggIjAwLiMjI0UwIiB5aWVsZHMgIjEyLjNFLTQiLiAgVGhpcworICogb25seSBoYXBwZW5zIGlmIHRoZXJlIGlzIG5vIG1heGltdW0gbnVtYmVyIG9mIGludGVnZXIgZGlnaXRzLiAgSWYgdGhlcmUgaXMgYQorICogbWF4aW11bSwgdGhlbiB0aGUgbWluaW11bSBudW1iZXIgb2YgaW50ZWdlciBkaWdpdHMgaXMgZml4ZWQgYXQgb25lLgorICoKKyAqIDxsaT5UaGUgbWF4aW11bSBudW1iZXIgb2YgaW50ZWdlciBkaWdpdHMsIGlmIHByZXNlbnQsIHNwZWNpZmllcyB0aGUgZXhwb25lbnQKKyAqIGdyb3VwaW5nLiAgVGhlIG1vc3QgY29tbW9uIHVzZSBvZiB0aGlzIGlzIHRvIGdlbmVyYXRlIDxlbT5lbmdpbmVlcmluZworICogbm90YXRpb248L2VtPiwgaW4gd2hpY2ggdGhlIGV4cG9uZW50IGlzIGEgbXVsdGlwbGUgb2YgdGhyZWUsIGUuZy4sCisgKiAiIyMwLiMjI0UwIi4gIFRoZSBudW1iZXIgMTIzNDUgaXMgZm9ybWF0dGVkIHVzaW5nICIjIzAuIyMjI0UwIiBhcyAiMTIuMzQ1RTMiLgorICoKKyAqIDxsaT5UaGUgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cyBpcyB0aGUgc3VtIG9mIHRoZSA8ZW0+bWluaW11bQorICogaW50ZWdlcjwvZW0+IGFuZCA8ZW0+bWF4aW11bSBmcmFjdGlvbjwvZW0+IGRpZ2l0cywgYW5kIGlzIHVuYWZmZWN0ZWQgYnkgdGhlCisgKiBtYXhpbXVtIGludGVnZXIgZGlnaXRzLiAgSWYgdGhpcyBzdW0gaXMgemVybywgdGhlbiBhbGwgc2lnbmlmaWNhbnQgZGlnaXRzIGFyZQorICogc2hvd24uICBUaGUgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cyBsaW1pdHMgdGhlIHRvdGFsIG51bWJlciBvZiBpbnRlZ2VyCisgKiBhbmQgZnJhY3Rpb24gZGlnaXRzIHRoYXQgd2lsbCBiZSBzaG93biBpbiB0aGUgbWFudGlzc2E7IGl0IGRvZXMgbm90IGFmZmVjdAorICogcGFyc2luZy4gIEZvciBleGFtcGxlLCAxMjM0NSBmb3JtYXR0ZWQgd2l0aCAiIyMwLiMjRTAiIGlzICIxMi4zRTMiLgorICoKKyAqIDxsaT5FeHBvbmVudGlhbCBwYXR0ZXJucyBtYXkgbm90IGNvbnRhaW4gZ3JvdXBpbmcgc2VwYXJhdG9ycy4KKyAqIDwvdWw+CisgKgorICogPHA+CisgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgKiA8c3Ryb25nPlBhZGRpbmc8L3N0cm9uZz4KKyAqCisgKiA8cD48Y29kZT5EZWNpbWFsRm9ybWF0PC9jb2RlPiBzdXBwb3J0cyBwYWRkaW5nIHRoZSByZXN1bHQgb2YKKyAqIDxjb2RlPmZvcm1hdCgpPC9jb2RlPiB0byBhIHNwZWNpZmljIHdpZHRoLiAgUGFkZGluZyBtYXkgYmUgc3BlY2lmaWVkIGVpdGhlcgorICogdGhyb3VnaCB0aGUgQVBJIG9yIHRocm91Z2ggdGhlIHBhdHRlcm4gc3ludGF4LiAgSW4gYSBwYXR0ZXJuIHRoZSBwYWQgZXNjYXBlCisgKiBjaGFyYWN0ZXIsIGZvbGxvd2VkIGJ5IGEgc2luZ2xlIHBhZCBjaGFyYWN0ZXIsIGNhdXNlcyBwYWRkaW5nIHRvIGJlIHBhcnNlZAorICogYW5kIGZvcm1hdHRlZC4gIFRoZSBwYWQgZXNjYXBlIGNoYXJhY3RlciBpcyAnKicgaW4gdW5sb2NhbGl6ZWQgcGF0dGVybnMsIGFuZAorICogY2FuIGJlIGxvY2FsaXplZCB1c2luZyA8Y29kZT5EZWNpbWFsRm9ybWF0U3ltYm9scy5zZXRQYWRFc2NhcGUoKTwvY29kZT4uICBGb3IKKyAqIGV4YW1wbGUsIDxjb2RlPiIkKngjLCMjMC4wMCI8L2NvZGU+IGZvcm1hdHMgMTIzIHRvIDxjb2RlPiIkeHgxMjMuMDAiPC9jb2RlPiwKKyAqIGFuZCAxMjM0IHRvIDxjb2RlPiIkMSwyMzQuMDAiPC9jb2RlPi4KKyAqCisgKiA8dWw+CisgKiA8bGk+V2hlbiBwYWRkaW5nIGlzIGluIGVmZmVjdCwgdGhlIHdpZHRoIG9mIHRoZSBwb3NpdGl2ZSBzdWJwYXR0ZXJuLAorICogaW5jbHVkaW5nIHByZWZpeCBhbmQgc3VmZml4LCBkZXRlcm1pbmVzIHRoZSBmb3JtYXQgd2lkdGguICBGb3IgZXhhbXBsZSwgaW4KKyAqIHRoZSBwYXR0ZXJuIDxjb2RlPiIqICMwIG8nJ2Nsb2NrIjwvY29kZT4sIHRoZSBmb3JtYXQgd2lkdGggaXMgMTAuCisgKgorICogPGxpPlNvbWUgcGFyYW1ldGVycyB3aGljaCB1c3VhbGx5IGRvIG5vdCBtYXR0ZXIgaGF2ZSBtZWFuaW5nIHdoZW4gcGFkZGluZyBpcworICogdXNlZCwgYmVjYXVzZSB0aGUgcGF0dGVybiB3aWR0aCBpcyBzaWduaWZpY2FudCB3aXRoIHBhZGRpbmcuICBJbiB0aGUgcGF0dGVybgorICogIl4gIyMsIyMsIywjIzAuIyMiLCB0aGUgZm9ybWF0IHdpZHRoIGlzIDE0LiAgVGhlIGluaXRpYWwgY2hhcmFjdGVycyAiIyMsIyMsIgorICogZG8gbm90IGFmZmVjdCB0aGUgZ3JvdXBpbmcgc2l6ZSBvciBtYXhpbXVtIGludGVnZXIgZGlnaXRzLCBidXQgdGhleSBkbyBhZmZlY3QKKyAqIHRoZSBmb3JtYXQgd2lkdGguCisgKgorICogPGxpPlBhZGRpbmcgbWF5IGJlIGluc2VydGVkIGF0IG9uZSBvZiBmb3VyIGxvY2F0aW9uczogYmVmb3JlIHRoZSBwcmVmaXgsCisgKiBhZnRlciB0aGUgcHJlZml4LCBiZWZvcmUgdGhlIHN1ZmZpeCwgb3IgYWZ0ZXIgdGhlIHN1ZmZpeC4gIElmIHBhZGRpbmcgaXMKKyAqIHNwZWNpZmllZCBpbiBhbnkgb3RoZXIgbG9jYXRpb24sIDxjb2RlPkRlY2ltYWxGb3JtYXQuYXBwbHlQYXR0ZXJuKCk8L2NvZGU+CisgKiB0aHJvd3MgYW4gPGNvZGU+SWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uPC9jb2RlPi4gIElmIHRoZXJlIGlzIG5vIHByZWZpeCwKKyAqIGJlZm9yZSB0aGUgcHJlZml4IGFuZCBhZnRlciB0aGUgcHJlZml4IGFyZSBlcXVpdmFsZW50LCBsaWtld2lzZSBmb3IgdGhlCisgKiBzdWZmaXguCisgKgorICogPGxpPlRoZSBwYWQgY2hhcmFjdGVyIG1heSBub3QgYmUgYSBxdW90ZS4KKyAqIDwvdWw+CisgKgorICogPHA+CisgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgKiA8c3Ryb25nPlJvdW5kaW5nPC9zdHJvbmc+CisgKgorICogPHA+PGNvZGU+RGVjaW1hbEZvcm1hdDwvY29kZT4gc3VwcG9ydHMgcm91bmRpbmcgdG8gYSBzcGVjaWZpYyBpbmNyZW1lbnQuICBGb3IKKyAqIGV4YW1wbGUsIDEyMzAgcm91bmRlZCB0byB0aGUgbmVhcmVzdCA1MCBpcyAxMjUwLiAgMS4yMzQgcm91bmRlZCB0byB0aGUKKyAqIG5lYXJlc3QgMC42NSBpcyAxLjMuICBUaGUgcm91bmRpbmcgaW5jcmVtZW50IG1heSBiZSBzcGVjaWZpZWQgdGhyb3VnaCB0aGUgQVBJCisgKiBvciBpbiBhIHBhdHRlcm4uICBUbyBzcGVjaWZ5IGEgcm91bmRpbmcgaW5jcmVtZW50IGluIGEgcGF0dGVybiwgaW5jbHVkZSB0aGUKKyAqIGluY3JlbWVudCBpbiB0aGUgcGF0dGVybiBpdHNlbGYuICAiIywjNTAiIHNwZWNpZmllcyBhIHJvdW5kaW5nIGluY3JlbWVudCBvZgorICogNTAuICAiIywjIzAuMDUiIHNwZWNpZmllcyBhIHJvdW5kaW5nIGluY3JlbWVudCBvZiAwLjA1LgorICoKKyAqIDx1bD4KKyAqIDxsaT5Sb3VuZGluZyBvbmx5IGFmZmVjdHMgdGhlIHN0cmluZyBwcm9kdWNlZCBieSBmb3JtYXR0aW5nLiAgSXQgZG9lcworICogbm90IGFmZmVjdCBwYXJzaW5nIG9yIGNoYW5nZSBhbnkgbnVtZXJpY2FsIHZhbHVlcy4KKyAqCisgKiA8bGk+QSA8ZW0+cm91bmRpbmcgbW9kZTwvZW0+IGRldGVybWluZXMgaG93IHZhbHVlcyBhcmUgcm91bmRlZDsgc2VlIHRoZQorICogPGNvZGU+amF2YS5tYXRoLkJpZ0RlY2ltYWw8L2NvZGU+IGRvY3VtZW50YXRpb24gZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlCisgKiBtb2Rlcy4gIFJvdW5kaW5nIGluY3JlbWVudHMgc3BlY2lmaWVkIGluIHBhdHRlcm5zIHVzZSB0aGUgZGVmYXVsdCBtb2RlLAorICogPGNvZGU+Uk9VTkRfSEFMRl9FVkVOPC9jb2RlPi4KKyAqCisgKiA8bGk+U29tZSBsb2NhbGVzIHVzZSByb3VuZGluZyBpbiB0aGVpciBjdXJyZW5jeSBmb3JtYXRzIHRvIHJlZmxlY3QgdGhlCisgKiBzbWFsbGVzdCBjdXJyZW5jeSBkZW5vbWluYXRpb24uCisgKgorICogPGxpPkluIGEgcGF0dGVybiwgZGlnaXRzICcxJyB0aHJvdWdoICc5JyBzcGVjaWZ5IHJvdW5kaW5nLCBidXQgb3RoZXJ3aXNlCisgKiBiZWhhdmUgaWRlbnRpY2FsbHkgdG8gZGlnaXQgJzAnLgorICogPC91bD4KKyAqCisgKiA8cD48c3Ryb25nPlBhdHRlcm4gU3ludGF4PC9zdHJvbmc+CisgKiA8cHJlPgorICogcGF0dGVybiAgICA6PSBzdWJwYXR0ZXJueyc7JyBzdWJwYXR0ZXJufQorICogc3VicGF0dGVybiA6PSB7cHJlZml4fW51bWJlcntzdWZmaXh9CisgKiBudW1iZXIgICAgIDo9IGludGVnZXJ7Jy4nIGZyYWN0aW9ufXtleHBvbmVudH0KKyAqIHByZWZpeCAgICAgOj0gJyYjOTI7dTAwMDAnLi4nJiM5Mjt1RkZGRCcgLSBzcGVjaWFsQ2hhcmFjdGVycworICogc3VmZml4ICAgICA6PSAnJiM5Mjt1MDAwMCcuLicmIzkyO3VGRkZEJyAtIHNwZWNpYWxDaGFyYWN0ZXJzCisgKiBpbnRlZ2VyICAgIDo9ICcjJyogJzAnKiAnMCcKKyAqIGZyYWN0aW9uICAgOj0gJzAnKiAnIycqCisgKiBleHBvbmVudCAgIDo9ICdFJyB7JysnfSAnMCcqICcwJworICogcGFkU3BlYyAgICA6PSAnKicgcGFkQ2hhcgorICogcGFkQ2hhciAgICA6PSAnJiM5Mjt1MDAwMCcuLicmIzkyO3VGRkZEJyAtIHF1b3RlCisgKiAmIzMyOworICogTm90YXRpb246CisgKiAgIFgqICAgICAgIDAgb3IgbW9yZSBpbnN0YW5jZXMgb2YgWAorICogICB7IFggfSAgICAwIG9yIDEgaW5zdGFuY2VzIG9mIFgKKyAqICAgWC4uWSAgICAgYW55IGNoYXJhY3RlciBmcm9tIFggdXAgdG8gWSwgaW5jbHVzaXZlCisgKiAgIFMgLSBUICAgIGNoYXJhY3RlcnMgaW4gUywgZXhjZXB0IHRob3NlIGluIFQKKyAqIDwvcHJlPgorICogVGhlIGZpcnN0IHN1YnBhdHRlcm4gaXMgZm9yIHBvc2l0aXZlIG51bWJlcnMuIFRoZSBzZWNvbmQgKG9wdGlvbmFsKQorICogc3VicGF0dGVybiBpcyBmb3IgbmVnYXRpdmUgbnVtYmVycy4KKyAqIAorICogPHA+Tm90IGluZGljYXRlZCBpbiB0aGUgQk5GIHN5bnRheCBhYm92ZToKKyAqIDx1bD48bGk+VGhlIGdyb3VwaW5nIHNlcGFyYXRvciAnLCcgY2FuIG9jY3VyIGluc2lkZSB0aGUgaW50ZWdlciBwb3J0aW9uIGJldHdlZW4gdGhlCisgKiBtb3N0IHNpZ25pZmljYW50IGRpZ2l0IGFuZCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgZGlnaXQuCisgKgorICogPGxpPjxmb250IGNvbG9yPXJlZCBmYWNlPWhlbHZldGljYT48c3Ryb25nPk5FVzwvc3Ryb25nPjwvZm9udD4KKyAqICAgICBUd28gZ3JvdXBpbmcgaW50ZXJ2YWxzIGFyZSByZWNvZ25pemVkOiBUaGF0IGJldHdlZW4gdGhlCisgKiAgICAgZGVjaW1hbCBwb2ludCBhbmQgdGhlIGZpcnN0IGdyb3VwaW5nIHN5bWJvbCwgYW5kIHRoYXQKKyAqICAgICBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgc2Vjb25kIGdyb3VwaW5nIHN5bWJvbHMuIFRoZXNlCisgKiAgICAgaW50ZXJ2YWxzIGFyZSBpZGVudGljYWwgaW4gbW9zdCBsb2NhbGVzLCBidXQgaW4gc29tZQorICogICAgIGxvY2FsZXMgdGhleSBkaWZmZXIuIEZvciBleGFtcGxlLCB0aGUgcGF0dGVybgorICogICAgICZxdW90OyMsIyMsIyMjJnF1b3Q7IGZvcm1hdHMgdGhlIG51bWJlciAxMjM0NTY3ODkgYXMKKyAqICAgICAmcXVvdDsxMiwzNCw1Niw3ODkmcXVvdDsuPC9saT4KKyAqIAorICogPGxpPgorICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICogVGhlIHBhZCBzcGVjaWZpZXIgPGNvZGU+cGFkU3BlYzwvY29kZT4gbWF5IGFwcGVhciBiZWZvcmUgdGhlIHByZWZpeCwKKyAqIGFmdGVyIHRoZSBwcmVmaXgsIGJlZm9yZSB0aGUgc3VmZml4LCBhZnRlciB0aGUgc3VmZml4LCBvciBub3QgYXQgYWxsLgorICoKKyAqIDxsaT4KKyAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAqIEluIHBsYWNlIG9mICcwJywgdGhlIGRpZ2l0cyAnMScgdGhyb3VnaCAnOScgbWF5IGJlIHVzZWQgdG8KKyAqIGluZGljYXRlIGEgcm91bmRpbmcgaW5jcmVtZW50LgorICogPC91bD4KKyAqCisgKiA8cD48c3Ryb25nPlNwZWNpYWwgUGF0dGVybiBDaGFyYWN0ZXJzPC9zdHJvbmc+CisgKgorICogPHA+SGVyZSBhcmUgdGhlIHNwZWNpYWwgY2hhcmFjdGVycyB1c2VkIGluIHRoZSBwYXR0ZXJuLCB3aXRoIG5vdGVzIG9uIHRoZWlyCisgKiB1c2FnZS4gIFNwZWNpYWwgY2hhcmFjdGVycyBtdXN0IGJlIHF1b3RlZCwgdW5sZXNzIG5vdGVkIG90aGVyd2lzZSwgaWYgdGhleQorICogYXJlIHRvIGFwcGVhciBpbiB0aGUgcHJlZml4IG9yIHN1ZmZpeC4gIFRoaXMgZG9lcyBub3QgYXBwbHkgdG8gdGhvc2UgbGlzdGVkCisgKiB3aXRoIGxvY2F0aW9uICJwcmVmaXggb3Igc3VmZml4LiIgIFN1Y2ggY2hhcmFjdGVycyBzaG91bGQgb25seSBiZSBxdW90ZWQgaW4KKyAqIG9yZGVyIHRvIHJlbW92ZSB0aGVpciBzcGVjaWFsIG1lYW5pbmcuCisgKgorICogPHA+PHRhYmxlIGJvcmRlcj0xPgorICogPHRyPjx0aD5TeW1ib2w8dGg+TG9jYXRpb248dGg+TWVhbmluZzwvdHI+CisgKiA8dHI+PHRkPjAtOTx0ZD5OdW1iZXI8dGQ+RGlnaXQuCisgKiAgICAgICAgICAgICAgICAgIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAqICAgICAgICAgICAgICAgICAgJzEnIHRocm91Z2ggJzknIGluZGljYXRlIHJvdW5kaW5nPC90cj4KKyAqIDx0cj48dGQ+Izx0ZD5OdW1iZXI8dGQ+RGlnaXQsIHplcm8gc2hvd3MgYXMgYWJzZW50PC90cj4KKyAqIDx0cj48dGQ+Ljx0ZD5OdW1iZXI8dGQ+RGVjaW1hbCBzZXBhcmF0b3Igb3IgbW9uZXRhcnkgZGVjaW1hbCBzZXBhcmF0b3I8L3RyPgorICogPHRyPjx0ZD4sPHRkPk51bWJlcjx0ZD5Hcm91cGluZyBzZXBhcmF0b3I8L3RyPgorICogPHRyPjx0ZD5FPHRkPk51bWJlcgorICogICAgICAgICAgPHRkPlNlcGFyYXRlcyBtYW50aXNzYSBhbmQgZXhwb25lbnQgaW4gc2NpZW50aWZpYyBub3RhdGlvbi4KKyAqICAgICAgICAgICAgICA8ZW0+TmVlZCBub3QgYmUgcXVvdGVkIGluIHByZWZpeCBvciBzdWZmaXguPC9lbT48L3RyPgorICogPHRyPjx0ZD48c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgKiAgICAgICAgICs8dGQ+RXhwb25lbnQKKyAqICAgICAgICAgIDx0ZD5QcmVmaXggcG9zaXRpdmUgZXhwb25lbnRzIHdpdGggbG9jYWxpemVkIHBsdXMgc2lnbi4KKyAqICAgICAgICAgICAgICA8ZW0+TmVlZCBub3QgYmUgcXVvdGVkIGluIHByZWZpeCBvciBzdWZmaXguPC9lbT48L3RyPgorICogPHRyPjx0ZD47PHRkPlN1YnBhdHRlcm4gYm91bmRhcnkKKyAqICAgICAgICAgIDx0ZD5TZXBhcmF0ZXMgcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHN1YnBhdHRlcm5zPC90cj4KKyAqIDx0cj48dGQ+JTx0ZD5QcmVmaXggb3Igc3VmZml4PHRkPk11bHRpcGx5IGJ5IDEwMCBhbmQgc2hvdyBhcyBwZXJjZW50YWdlPC90cj4KKyAqIDx0cj48dGQ+JiM5Mjt1MjAzMDx0ZD5QcmVmaXggb3Igc3VmZml4CisgKiAgICAgICAgICAgICAgICAgICA8dGQ+TXVsdGlwbHkgYnkgMTAwMCBhbmQgc2hvdyBhcyBwZXIgbWlsbGU8L3RyPgorICogPHRyPjx0ZD4mIzkyO3UwMEE0PHRkPlByZWZpeCBvciBzdWZmaXgKKyAqICAgICAgICAgICAgICAgICAgIDx0ZD5DdXJyZW5jeSBzaWduLCByZXBsYWNlZCBieSBjdXJyZW5jeSBzeW1ib2wuICBJZgorICogICAgICAgICAgICAgICAgICAgZG91YmxlZCwgcmVwbGFjZWQgYnkgaW50ZXJuYXRpb25hbCBjdXJyZW5jeSBzeW1ib2wuCisgKiAgICAgICAgICAgICAgICAgICBJZiBwcmVzZW50IGluIGEgcGF0dGVybiwgdGhlIG1vbmV0YXJ5IGRlY2ltYWwgc2VwYXJhdG9yCisgKiAgICAgICAgICAgICAgICAgICBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIGRlY2ltYWwgc2VwYXJhdG9yLjwvdHI+CisgKiA8dHI+PHRkPic8dGQ+UHJlZml4IG9yIHN1ZmZpeAorICogICAgICAgICAgPHRkPlVzZWQgdG8gcXVvdGUgc3BlY2lhbCBjaGFyYWN0ZXJzIGluIGEgcHJlZml4IG9yIHN1ZmZpeCwKKyAqICAgICAgICAgICAgICBmb3IgZXhhbXBsZSwgPGNvZGU+IicjJyMiPC9jb2RlPiBmb3JtYXRzIDEyMyB0bworICogICAgICAgICAgICAgIDxjb2RlPiIjMTIzIjwvY29kZT4uICBUbyBjcmVhdGUgYSBzaW5nbGUgcXVvdGUKKyAqICAgICAgICAgICAgICBpdHNlbGYsIHVzZSB0d28gaW4gYSByb3c6IDxjb2RlPiIjIG8nJ2Nsb2NrIjwvY29kZT4uPC90cj4KKyAqIDx0cj48dGQ+PHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICogICAgICAgICAqPHRkPlByZWZpeCBvciBzdWZmaXggYm91bmRhcnkKKyAqICAgICAgICAgIDx0ZD5QYWQgZXNjYXBlLCBwcmVjZWRlcyBwYWQgY2hhcmFjdGVyPC90cj4KKyAqIDwvdGFibGU+CisgKiA8L3ByZT4KKyAqCisgKgorICogQHNlZSAgICAgICAgICBqYXZhLnRleHQuRm9ybWF0CisgKiBAc2VlICAgICAgICAgIE51bWJlckZvcm1hdAorICogQHZlcnNpb24gICAgICAxLjQ4IDA5LzIxLzk4CisgKiBAYXV0aG9yICAgICAgIE1hcmsgRGF2aXMKKyAqIEBhdXRob3IgICAgICAgQWxhbiBMaXUKKyAqICovCitwdWJsaWMgY2xhc3MgRGVjaW1hbEZvcm1hdCBleHRlbmRzIE51bWJlckZvcm1hdCB7CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBEZWNpbWFsRm9ybWF0IHVzaW5nIHRoZSBkZWZhdWx0IHBhdHRlcm4gYW5kIHN5bWJvbHMKKyAgICAgKiBmb3IgdGhlIGRlZmF1bHQgbG9jYWxlLiBUaGlzIGlzIGEgY29udmVuaWVudCB3YXkgdG8gb2J0YWluIGEKKyAgICAgKiBEZWNpbWFsRm9ybWF0IHdoZW4gaW50ZXJuYXRpb25hbGl6YXRpb24gaXMgbm90IHRoZSBtYWluIGNvbmNlcm4uCisgICAgICogPHA+CisgICAgICogVG8gb2J0YWluIHN0YW5kYXJkIGZvcm1hdHMgZm9yIGEgZ2l2ZW4gbG9jYWxlLCB1c2UgdGhlIGZhY3RvcnkgbWV0aG9kcworICAgICAqIG9uIE51bWJlckZvcm1hdCBzdWNoIGFzIGdldE51bWJlckluc3RhbmNlLiBUaGVzZSBmYWN0b3JpZXMgd2lsbAorICAgICAqIHJldHVybiB0aGUgbW9zdCBhcHByb3ByaWF0ZSBzdWItY2xhc3Mgb2YgTnVtYmVyRm9ybWF0IGZvciBhIGdpdmVuCisgICAgICogbG9jYWxlLgorICAgICAqIEBzZWUgTnVtYmVyRm9ybWF0I2dldEluc3RhbmNlCisgICAgICogQHNlZSBOdW1iZXJGb3JtYXQjZ2V0TnVtYmVySW5zdGFuY2UKKyAgICAgKiBAc2VlIE51bWJlckZvcm1hdCNnZXRDdXJyZW5jeUluc3RhbmNlCisgICAgICogQHNlZSBOdW1iZXJGb3JtYXQjZ2V0UGVyY2VudEluc3RhbmNlCisgICAgICovCisgICAgcHVibGljIERlY2ltYWxGb3JtYXQoKSB7CisgICAgICAgIC8vIFtORVddCisgICAgICAgIExvY2FsZSBkZWYgPSBMb2NhbGUuZ2V0RGVmYXVsdCgpOworICAgICAgICBTdHJpbmcgcGF0dGVybiA9IGdldFBhdHRlcm4oZGVmLCAwKTsKKyAgICAgICAgLy8gQWx3YXlzIGFwcGx5UGF0dGVybiBhZnRlciB0aGUgc3ltYm9scyBhcmUgc2V0CisgICAgICAgIHRoaXMuc3ltYm9scyA9IG5ldyBEZWNpbWFsRm9ybWF0U3ltYm9scyhkZWYpOworICAgICAgICBhcHBseVBhdHRlcm4ocGF0dGVybiwgZmFsc2UpOworICAgIH0KKworCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgRGVjaW1hbEZvcm1hdCBmcm9tIHRoZSBnaXZlbiBwYXR0ZXJuIGFuZCB0aGUgc3ltYm9scworICAgICAqIGZvciB0aGUgZGVmYXVsdCBsb2NhbGUuIFRoaXMgaXMgYSBjb252ZW5pZW50IHdheSB0byBvYnRhaW4gYQorICAgICAqIERlY2ltYWxGb3JtYXQgd2hlbiBpbnRlcm5hdGlvbmFsaXphdGlvbiBpcyBub3QgdGhlIG1haW4gY29uY2Vybi4KKyAgICAgKiA8cD4KKyAgICAgKiBUbyBvYnRhaW4gc3RhbmRhcmQgZm9ybWF0cyBmb3IgYSBnaXZlbiBsb2NhbGUsIHVzZSB0aGUgZmFjdG9yeSBtZXRob2RzCisgICAgICogb24gTnVtYmVyRm9ybWF0IHN1Y2ggYXMgZ2V0TnVtYmVySW5zdGFuY2UuIFRoZXNlIGZhY3RvcmllcyB3aWxsCisgICAgICogcmV0dXJuIHRoZSBtb3N0IGFwcHJvcHJpYXRlIHN1Yi1jbGFzcyBvZiBOdW1iZXJGb3JtYXQgZm9yIGEgZ2l2ZW4KKyAgICAgKiBsb2NhbGUuCisgICAgICogQHBhcmFtIHBhdHRlcm4gQSBub24tbG9jYWxpemVkIHBhdHRlcm4gc3RyaW5nLgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBnaXZlbiBwYXR0ZXJuIGlzIGludmFsaWQuCisgICAgICogQHNlZSBOdW1iZXJGb3JtYXQjZ2V0SW5zdGFuY2UKKyAgICAgKiBAc2VlIE51bWJlckZvcm1hdCNnZXROdW1iZXJJbnN0YW5jZQorICAgICAqIEBzZWUgTnVtYmVyRm9ybWF0I2dldEN1cnJlbmN5SW5zdGFuY2UKKyAgICAgKiBAc2VlIE51bWJlckZvcm1hdCNnZXRQZXJjZW50SW5zdGFuY2UKKyAgICAgKi8KKyAgICBwdWJsaWMgRGVjaW1hbEZvcm1hdChTdHJpbmcgcGF0dGVybikgeworICAgIC8vIEFsd2F5cyBhcHBseVBhdHRlcm4gYWZ0ZXIgdGhlIHN5bWJvbHMgYXJlIHNldAorICAgICAgICB0aGlzLnN5bWJvbHMgPSBuZXcgRGVjaW1hbEZvcm1hdFN5bWJvbHMoIExvY2FsZS5nZXREZWZhdWx0KCkgKTsKKyAgICAgICAgYXBwbHlQYXR0ZXJuKCBwYXR0ZXJuLCBmYWxzZSApOworICAgIH0KKworCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgRGVjaW1hbEZvcm1hdCBmcm9tIHRoZSBnaXZlbiBwYXR0ZXJuIGFuZCBzeW1ib2xzLgorICAgICAqIFVzZSB0aGlzIGNvbnN0cnVjdG9yIHdoZW4geW91IG5lZWQgdG8gY29tcGxldGVseSBjdXN0b21pemUgdGhlCisgICAgICogYmVoYXZpb3Igb2YgdGhlIGZvcm1hdC4KKyAgICAgKiA8cD4KKyAgICAgKiBUbyBvYnRhaW4gc3RhbmRhcmQgZm9ybWF0cyBmb3IgYSBnaXZlbgorICAgICAqIGxvY2FsZSwgdXNlIHRoZSBmYWN0b3J5IG1ldGhvZHMgb24gTnVtYmVyRm9ybWF0IHN1Y2ggYXMKKyAgICAgKiBnZXRJbnN0YW5jZSBvciBnZXRDdXJyZW5jeUluc3RhbmNlLiBJZiB5b3UgbmVlZCBvbmx5IG1pbm9yIGFkanVzdG1lbnRzCisgICAgICogdG8gYSBzdGFuZGFyZCBmb3JtYXQsIHlvdSBjYW4gbW9kaWZ5IHRoZSBmb3JtYXQgcmV0dXJuZWQgYnkKKyAgICAgKiBhIE51bWJlckZvcm1hdCBmYWN0b3J5IG1ldGhvZC4KKyAgICAgKiBAcGFyYW0gcGF0dGVybiBhIG5vbi1sb2NhbGl6ZWQgcGF0dGVybiBzdHJpbmcKKyAgICAgKiBAcGFyYW0gc3ltYm9scyB0aGUgc2V0IG9mIHN5bWJvbHMgdG8gYmUgdXNlZAorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBnaXZlbiBwYXR0ZXJuIGlzIGludmFsaWQKKyAgICAgKiBAc2VlIE51bWJlckZvcm1hdCNnZXRJbnN0YW5jZQorICAgICAqIEBzZWUgTnVtYmVyRm9ybWF0I2dldE51bWJlckluc3RhbmNlCisgICAgICogQHNlZSBOdW1iZXJGb3JtYXQjZ2V0Q3VycmVuY3lJbnN0YW5jZQorICAgICAqIEBzZWUgTnVtYmVyRm9ybWF0I2dldFBlcmNlbnRJbnN0YW5jZQorICAgICAqIEBzZWUgRGVjaW1hbEZvcm1hdFN5bWJvbHMKKyAgICAgKi8KKyAgICBwdWJsaWMgRGVjaW1hbEZvcm1hdCAoU3RyaW5nIHBhdHRlcm4sIERlY2ltYWxGb3JtYXRTeW1ib2xzIHN5bWJvbHMpIHsKKyAgICAgICAgLy8gQWx3YXlzIGFwcGx5UGF0dGVybiBhZnRlciB0aGUgc3ltYm9scyBhcmUgc2V0CisgICAgICAgIHRoaXMuc3ltYm9scyA9IChEZWNpbWFsRm9ybWF0U3ltYm9scylzeW1ib2xzLmNsb25lKCk7CisgICAgICAgIGFwcGx5UGF0dGVybiggcGF0dGVybiwgZmFsc2UgKTsKKyAgICB9CisKKworICAgIC8vIE92ZXJyaWRlcworICAgIHB1YmxpYyBTdHJpbmdCdWZmZXIgZm9ybWF0KGRvdWJsZSBudW1iZXIsIFN0cmluZ0J1ZmZlciByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiBmaWVsZFBvc2l0aW9uKQorICAgIHsKKyAgICAgICAgLy9GUDpmaWVsZFBvc2l0aW9uLnNldEJlZ2luSW5kZXgoMCk7CisgICAgICAgIC8vRlA6ZmllbGRQb3NpdGlvbi5zZXRFbmRJbmRleCgwKTsKKworICAgICAgICBpZiAoRG91YmxlLmlzTmFOKG51bWJlcikpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vRlA6aWYgKGZpZWxkUG9zaXRpb24uZ2V0RmllbGQoKSA9PSBOdW1iZXJGb3JtYXQuSU5URUdFUl9GSUVMRCkKKyAgICAgICAgICAgIC8vRlA6ZmllbGRQb3NpdGlvbi5zZXRCZWdpbkluZGV4KHJlc3VsdC5sZW5ndGgoKSk7CisKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3ltYm9scy5nZXROYU4oKSk7CisKKyAgICAgICAgICAgIC8vRlA6aWYgKGZpZWxkUG9zaXRpb24uZ2V0RmllbGQoKSA9PSBOdW1iZXJGb3JtYXQuSU5URUdFUl9GSUVMRCkKKyAgICAgICAgICAgIC8vRlA6ZmllbGRQb3NpdGlvbi5zZXRFbmRJbmRleChyZXN1bHQubGVuZ3RoKCkpOworCisgICAgICAgICAgICBhZGRQYWRkaW5nKHJlc3VsdCwgZmFsc2UsIGZhbHNlIC8qaWdub3JlZCovKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICAvKiBEZXRlY3Rpbmcgd2hldGhlciBhIGRvdWJsZSBpcyBuZWdhdGl2ZSBpcyBlYXN5IHdpdGggdGhlIGV4Y2VwdGlvbiBvZgorICAgICAgICAgKiB0aGUgdmFsdWUgLTAuMC4gIFRoaXMgaXMgYSBkb3VibGUgd2hpY2ggaGFzIGEgemVybyBtYW50aXNzYSAoYW5kCisgICAgICAgICAqIGV4cG9uZW50KSwgYnV0IGEgbmVnYXRpdmUgc2lnbiBiaXQuICBJdCBpcyBzZW1hbnRpY2FsbHkgZGlzdGluY3QgZnJvbQorICAgICAgICAgKiBhIHplcm8gd2l0aCBhIHBvc2l0aXZlIHNpZ24gYml0LCBhbmQgdGhpcyBkaXN0aW5jdGlvbiBpcyBpbXBvcnRhbnQKKyAgICAgICAgICogdG8gY2VydGFpbiBraW5kcyBvZiBjb21wdXRhdGlvbnMuICBIb3dldmVyLCBpdCdzIGEgbGl0dGxlIHRyaWNreSB0bworICAgICAgICAgKiBkZXRlY3QsIHNpbmNlICgtMC4wID09IDAuMCkgYW5kICEoLTAuMCA8IDAuMCkuICBIb3cgdGhlbiwgeW91IG1heQorICAgICAgICAgKiBhc2ssIGRvZXMgaXQgYmVoYXZlIGRpc3RpbmN0bHkgZnJvbSArMC4wPyAgV2VsbCwgMS8oLTAuMCkgPT0KKyAgICAgICAgICogLUluZmluaXR5LiAgUHJvcGVyIGRldGVjdGlvbiBvZiAtMC4wIGlzIG5lZWRlZCB0byBkZWFsIHdpdGggdGhlCisgICAgICAgICAqIGlzc3VlcyByYWlzZWQgYnkgYnVncyA0MTA2NjU4LCA0MTA2NjY3LCBhbmQgNDE0NzcwNi4gIExpdSA3LzYvOTguCisgICAgICAgICAqLworICAgICAgICBib29sZWFuIGlzTmVnYXRpdmUgPSAobnVtYmVyIDwgMC4wKSB8fCAobnVtYmVyID09IDAuMCAmJiAxL251bWJlciA8IDAuMCk7CisgICAgICAgIGlmIChpc05lZ2F0aXZlKSBudW1iZXIgPSAtbnVtYmVyOworCisgICAgICAgIC8vIERvIHRoaXMgQkVGT1JFIGNoZWNraW5nIHRvIHNlZSBpZiB2YWx1ZSBpcyBpbmZpbml0ZSEKKyAgICAgICAgaWYgKG11bHRpcGxpZXIgIT0gMSkgbnVtYmVyICo9IG11bHRpcGxpZXI7CisKKyAgICAgICAgLy8gQXBwbHkgcm91bmRpbmcgYWZ0ZXIgbXVsdGlwbGllcgorICAgICAgICBpZiAocm91bmRpbmdEb3VibGUgPiAwLjApIHsKKyAgICAgICAgICAgIG51bWJlciA9IHJvdW5kaW5nRG91YmxlCisgICAgICAgICAgICAgICAgKiByb3VuZChudW1iZXIgLyByb3VuZGluZ0RvdWJsZSwgcm91bmRpbmdNb2RlLCBpc05lZ2F0aXZlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChEb3VibGUuaXNJbmZpbml0ZShudW1iZXIpKQorICAgICAgICB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGlzTmVnYXRpdmUgPyBuZWdhdGl2ZVByZWZpeCA6IHBvc2l0aXZlUHJlZml4KTsKKworICAgICAgICAgICAgLy9GUDppZiAoZmllbGRQb3NpdGlvbi5nZXRGaWVsZCgpID09IE51bWJlckZvcm1hdC5JTlRFR0VSX0ZJRUxEKQorICAgICAgICAgICAgLy9GUDpmaWVsZFBvc2l0aW9uLnNldEJlZ2luSW5kZXgocmVzdWx0Lmxlbmd0aCgpKTsKKworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzeW1ib2xzLmdldEluZmluaXR5KCkpOworCisgICAgICAgICAgICAvL0ZQOmlmIChmaWVsZFBvc2l0aW9uLmdldEZpZWxkKCkgPT0gTnVtYmVyRm9ybWF0LklOVEVHRVJfRklFTEQpCisgICAgICAgICAgICAvL0ZQOmV5ZGZpZWxkUG9zaXRpb24uc2V0RW5kSW5kZXgocmVzdWx0Lmxlbmd0aCgpKTsKKworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChpc05lZ2F0aXZlID8gbmVnYXRpdmVTdWZmaXggOiBwb3NpdGl2ZVN1ZmZpeCk7CisKKyAgICAgICAgICAgIGFkZFBhZGRpbmcocmVzdWx0LCB0cnVlLCBpc05lZ2F0aXZlKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGFyZSBndWFyYW50ZWVkIGEgbm9ubmVnYXRpdmUgZmluaXRlCisgICAgICAgIC8vIG51bWJlci4KKyAgICAgICAgc3luY2hyb25pemVkKGRpZ2l0TGlzdCkgeworICAgICAgICAgICAgZGlnaXRMaXN0LnNldChudW1iZXIsIHVzZUV4cG9uZW50aWFsTm90YXRpb24gPworICAgICAgICAgICAgICAgICAgICAgIGdldE1pbmltdW1JbnRlZ2VyRGlnaXRzKCkgKyBnZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoKSA6CisgICAgICAgICAgICAgICAgICAgICAgZ2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKCksCisgICAgICAgICAgICAgICAgICAgICAgIXVzZUV4cG9uZW50aWFsTm90YXRpb24pOworCisgICAgICAgICAgICByZXR1cm4gc3ViZm9ybWF0KHJlc3VsdCwgZmllbGRQb3NpdGlvbiwgaXNOZWdhdGl2ZSwgZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFJvdW5kIGEgZG91YmxlIHZhbHVlIHRvIHRoZSBuZWFyZXN0IGludGVnZXIgYWNjb3JkaW5nIHRvIHRoZQorICAgICAqIGdpdmVuIG1vZGUuCisgICAgICogQHBhcmFtIGEgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBudW1iZXIgdG8gYmUgcm91bmRlZAorICAgICAqIEBwYXJhbSBtb2RlIGEgQmlnRGVjaW1hbCByb3VuZGluZyBtb2RlCisgICAgICogQHBhcmFtIGlzTmVnYXRpdmUgdHJ1ZSBpZiB0aGUgbnVtYmVyIHRvIGJlIHJvdW5kZWQgaXMgbmVnYXRpdmUKKyAgICAgKiBAcmV0dXJuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgcm91bmRlZCByZXN1bHQKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBkb3VibGUgcm91bmQoZG91YmxlIGEsIGludCBtb2RlLCBib29sZWFuIGlzTmVnYXRpdmUpIHsKKyAgICAgICAgc3dpdGNoIChtb2RlKSB7CisgICAgICAgIGNhc2UgamF2YS5tYXRoLkJpZ0RlY2ltYWwuUk9VTkRfQ0VJTElORzoKKyAgICAgICAgICAgIHJldHVybiBpc05lZ2F0aXZlID8gTWF0aC5mbG9vcihhKSA6IE1hdGguY2VpbChhKTsKKyAgICAgICAgY2FzZSBqYXZhLm1hdGguQmlnRGVjaW1hbC5ST1VORF9GTE9PUjoKKyAgICAgICAgICAgIHJldHVybiBpc05lZ2F0aXZlID8gTWF0aC5jZWlsKGEpIDogTWF0aC5mbG9vcihhKTsKKyAgICAgICAgY2FzZSBqYXZhLm1hdGguQmlnRGVjaW1hbC5ST1VORF9ET1dOOgorICAgICAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IoYSk7CisgICAgICAgIGNhc2UgamF2YS5tYXRoLkJpZ0RlY2ltYWwuUk9VTkRfVVA6CisgICAgICAgICAgICByZXR1cm4gTWF0aC5jZWlsKGEpOworICAgICAgICBjYXNlIGphdmEubWF0aC5CaWdEZWNpbWFsLlJPVU5EX0hBTEZfRVZFTjoKKyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBiZSBhYmxlIHRvIGp1c3QgcmV0dXJuIE1hdGgucmludChhKSwgYnV0IHRoaXMKKyAgICAgICAgICAgIC8vIGRvZXNuJ3Qgd29yayBpbiBzb21lIFZNcy4KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBkb3VibGUgZiA9IE1hdGguZmxvb3IoYSk7CisgICAgICAgICAgICAgICAgaWYgKChhIC0gZikgIT0gMC41KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnJpbnQoYSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGYgLz0gMi4wOworICAgICAgICAgICAgICAgIHJldHVybiBmID09IE1hdGguZmxvb3IoZikgPyBNYXRoLmZsb29yKGEpIDogKE1hdGguZmxvb3IoYSkgKyAxLjApOworICAgICAgICAgICAgfQorICAgICAgICBjYXNlIGphdmEubWF0aC5CaWdEZWNpbWFsLlJPVU5EX0hBTEZfRE9XTjoKKyAgICAgICAgICAgIHJldHVybiAoKGEgLSBNYXRoLmZsb29yKGEpKSA8PSAwLjUpID8gTWF0aC5mbG9vcihhKSA6IE1hdGguY2VpbChhKTsKKyAgICAgICAgY2FzZSBqYXZhLm1hdGguQmlnRGVjaW1hbC5ST1VORF9IQUxGX1VQOgorICAgICAgICAgICAgcmV0dXJuICgoYSAtIE1hdGguZmxvb3IoYSkpIDwgMC41KSA/IE1hdGguZmxvb3IoYSkgOiBNYXRoLmNlaWwoYSk7CisgICAgICAgIGNhc2UgamF2YS5tYXRoLkJpZ0RlY2ltYWwuUk9VTkRfVU5ORUNFU1NBUlk6CisgICAgICAgICAgICBpZiAoYSAhPSBNYXRoLmZsb29yKGEpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEFyaXRobWV0aWNFeGNlcHRpb24oIlJvdW5kaW5nIG5lY2Vzc2FyeSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGE7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIHJvdW5kaW5nIG1vZGU6ICIgKyBtb2RlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmdCdWZmZXIgZm9ybWF0KGxvbmcgbnVtYmVyLCBTdHJpbmdCdWZmZXIgcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb24gZmllbGRQb3NpdGlvbikKKyAgICB7CisgICAgICAgIC8vRlA6ZmllbGRQb3NpdGlvbi5zZXRCZWdpbkluZGV4KDApOworICAgICAgICAvL0ZQOmZpZWxkUG9zaXRpb24uc2V0RW5kSW5kZXgoMCk7CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIHRvIGRvIHJvdW5kaW5nLCB3ZSBuZWVkIHRvIG1vdmUgaW50byB0aGUgQmlnRGVjaW1hbAorICAgICAgICAvLyBkb21haW4gaW4gb3JkZXIgdG8gZG8gZGl2aWRlL211bHRpcGx5IGNvcnJlY3RseS4KKyAgICAgICAgLy8gW05FV10KKyAgICAgICAgaWYgKHJvdW5kaW5nSW5jcmVtZW50ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXQoamF2YS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihudW1iZXIpLCByZXN1bHQsIGZpZWxkUG9zaXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbiBpc05lZ2F0aXZlID0gKG51bWJlciA8IDApOworICAgICAgICBpZiAoaXNOZWdhdGl2ZSkgbnVtYmVyID0gLW51bWJlcjsKKworICAgICAgICAvLyBJbiBnZW5lcmFsLCBsb25nIHZhbHVlcyBhbHdheXMgcmVwcmVzZW50IHJlYWwgZmluaXRlIG51bWJlcnMsIHNvCisgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgdG8gY2hlY2sgZm9yICsvLSBJbmZpbml0eSBvciBOYU4uICBIb3dldmVyLCB0aGVyZQorICAgICAgICAvLyBpcyBvbmUgY2FzZSB3ZSBoYXZlIHRvIGJlIGNhcmVmdWwgb2Y6ICBUaGUgbXVsdGlwbGllciBjYW4gcHVzaAorICAgICAgICAvLyBhIG51bWJlciBuZWFyIE1JTl9WQUxVRSBvciBNQVhfVkFMVUUgb3V0c2lkZSB0aGUgbGVnYWwgcmFuZ2UuICBXZQorICAgICAgICAvLyBjaGVjayBmb3IgdGhpcyBiZWZvcmUgbXVsdGlwbHlpbmcsIGFuZCBpZiBpdCBoYXBwZW5zIHdlIHVzZSBCaWdJbnRlZ2VyCisgICAgICAgIC8vIGluc3RlYWQuCisgICAgICAgIC8vIFtORVddCisgICAgICAgIGlmIChtdWx0aXBsaWVyICE9IDEpIHsKKyAgICAgICAgICAgIGJvb2xlYW4gdG9vQmlnID0gZmFsc2U7CisgICAgICAgICAgICBpZiAobnVtYmVyIDwgMCkgeyAvLyBUaGlzIGNhbiBvbmx5IGhhcHBlbiBpZiBudW1iZXIgPT0gTG9uZy5NSU5fVkFMVUUKKyAgICAgICAgICAgICAgICBsb25nIGN1dG9mZiA9IExvbmcuTUlOX1ZBTFVFIC8gbXVsdGlwbGllcjsKKyAgICAgICAgICAgICAgICB0b29CaWcgPSAobnVtYmVyIDwgY3V0b2ZmKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbG9uZyBjdXRvZmYgPSBMb25nLk1BWF9WQUxVRSAvIG11bHRpcGxpZXI7CisgICAgICAgICAgICAgICAgdG9vQmlnID0gKG51bWJlciA+IGN1dG9mZik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodG9vQmlnKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdChCaWdJbnRlZ2VyLnZhbHVlT2YoaXNOZWdhdGl2ZSA/IC1udW1iZXIgOiBudW1iZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LCBmaWVsZFBvc2l0aW9uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIG51bWJlciAqPSBtdWx0aXBsaWVyOworICAgICAgICBzeW5jaHJvbml6ZWQoZGlnaXRMaXN0KSB7CisgICAgICAgICAgICBkaWdpdExpc3Quc2V0KG51bWJlciwgdXNlRXhwb25lbnRpYWxOb3RhdGlvbiA/CisgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE1pbmltdW1JbnRlZ2VyRGlnaXRzKCkgKyBnZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoKSA6IDApOworCisgICAgICAgICAgICByZXR1cm4gc3ViZm9ybWF0KHJlc3VsdCwgZmllbGRQb3NpdGlvbiwgaXNOZWdhdGl2ZSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogRm9ybWF0IGEgQmlnSW50ZWdlciBudW1iZXIuCisgICAgICovCisgICAgcHVibGljIFN0cmluZ0J1ZmZlciBmb3JtYXQoQmlnSW50ZWdlciBudW1iZXIsIFN0cmluZ0J1ZmZlciByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiBmaWVsZFBvc2l0aW9uKSB7CisgICAgICAgIC8vIElmIHdlIGFyZSB0byBkbyByb3VuZGluZywgd2UgbmVlZCB0byBtb3ZlIGludG8gdGhlIEJpZ0RlY2ltYWwKKyAgICAgICAgLy8gZG9tYWluIGluIG9yZGVyIHRvIGRvIGRpdmlkZS9tdWx0aXBseSBjb3JyZWN0bHkuCisgICAgICAgIGlmIChyb3VuZGluZ0luY3JlbWVudCAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0KG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbChudW1iZXIpLCByZXN1bHQsIGZpZWxkUG9zaXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG11bHRpcGxpZXIgIT0gMSkgeworICAgICAgICAgICAgbnVtYmVyID0gbnVtYmVyLm11bHRpcGx5KEJpZ0ludGVnZXIudmFsdWVPZihtdWx0aXBsaWVyKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGFyZSBndWFyYW50ZWVkIGEgbm9ubmVnYXRpdmUgZmluaXRlCisgICAgICAgIC8vIG51bWJlci4KKyAgICAgICAgc3luY2hyb25pemVkKGRpZ2l0TGlzdCkgeworICAgICAgICAgICAgZGlnaXRMaXN0LnNldChudW1iZXIsIHVzZUV4cG9uZW50aWFsTm90YXRpb24gPworICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRNaW5pbXVtSW50ZWdlckRpZ2l0cygpICsgZ2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKCkgOiAwKTsKKworICAgICAgICAgICAgcmV0dXJuIHN1YmZvcm1hdChyZXN1bHQsIGZpZWxkUG9zaXRpb24sIG51bWJlci5zaWdudW0oKSA8IDAsIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBGb3JtYXQgYSBCaWdEZWNpbWFsIG51bWJlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nQnVmZmVyIGZvcm1hdChqYXZhLm1hdGguQmlnRGVjaW1hbCBudW1iZXIsIFN0cmluZ0J1ZmZlciByZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiBmaWVsZFBvc2l0aW9uKSB7CisgICAgICAgIGlmIChtdWx0aXBsaWVyICE9IDEpIHsKKyAgICAgICAgICAgIG51bWJlciA9IG51bWJlci5tdWx0aXBseShqYXZhLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKG11bHRpcGxpZXIpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyb3VuZGluZ0luY3JlbWVudCAhPSBudWxsKSB7CisgICAgICAgICAgICBudW1iZXIgPSBudW1iZXIuZGl2aWRlKHJvdW5kaW5nSW5jcmVtZW50LCAwLCByb3VuZGluZ01vZGUpCisgICAgICAgICAgICAgICAgICAgIC5tdWx0aXBseShyb3VuZGluZ0luY3JlbWVudCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGFyZSBndWFyYW50ZWVkIGEgbm9ubmVnYXRpdmUgZmluaXRlCisgICAgICAgIC8vIG51bWJlci4KKyAgICAgICAgc3luY2hyb25pemVkKGRpZ2l0TGlzdCkgeworICAgICAgICAgICAgZGlnaXRMaXN0LnNldChudW1iZXIsIHVzZUV4cG9uZW50aWFsTm90YXRpb24gPworICAgICAgICAgICAgICAgICAgICAgIGdldE1pbmltdW1JbnRlZ2VyRGlnaXRzKCkgKyBnZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoKSA6CisgICAgICAgICAgICAgICAgICAgICAgZ2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKCksCisgICAgICAgICAgICAgICAgICAgICAgIXVzZUV4cG9uZW50aWFsTm90YXRpb24pOworICAgICAgICAgICAgcmV0dXJuIHN1YmZvcm1hdChyZXN1bHQsIGZpZWxkUG9zaXRpb24sIG51bWJlci5zaWdudW0oKSA8IDAsIGZhbHNlKTsKKyAgICAgICAgfSAgICAgICAgCisgICAgfQorCisgICAgLy9UaGlzIGhhcyBiZWVuIHJlbW92ZWQgcGVuZGluZyBhZGRpdGlvbiBvZiBjb20uaWJtLm1hdGggcGFja2FnZSB0byBJQ1U0SgorICAgIC8qCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIEZvcm1hdCBhIEJpZ0RlY2ltYWwgbnVtYmVyLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmdCdWZmZXIgZm9ybWF0KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIG51bWJlciwgU3RyaW5nQnVmZmVyIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIGZpZWxkUG9zaXRpb24pIHsKKyAgICAgICAgLyogVGhpcyBtZXRob2QgaXMganVzdCBhIGNvcHkgb2YgdGhlIGNvcnJlc3BvbmRpbmcgamF2YS5tYXRoLkJpZ0RlY2ltYWwKKyAgICAgICAgICogbWV0aG9kIGZvciBub3cuICBJdCBpc24ndCB2ZXJ5IGVmZmljaWVudCBzaW5jZSBpdCBtdXN0IGNyZWF0ZSBhCisgICAgICAgICAqIGNvbnZlcnNpb24gb2JqZWN0IHRvIGRvIG1hdGggb24gdGhlIHJvdW5kaW5nIGluY3JlbWVudC4gIEluIHRoZQorICAgICAgICAgKiBmdXR1cmUgd2UgbWF5IHRyeSB0byBjbGVhbiB0aGlzIHVwLCBvciBldmVuIGJldHRlciwgbGltaXQgb3VyIHN1cHBvcnQKKyAgICAgICAgICogdG8ganVzdCBvbmUgZmxhdm9yIG9mIEJpZ0RlY2ltYWwuCisgICAgICAgICAqLworICAgICAgICBpZiAobXVsdGlwbGllciAhPSAxKSB7CisgICAgICAgICAgICBudW1iZXIgPSBudW1iZXIubXVsdGlwbHkoY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihtdWx0aXBsaWVyKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocm91bmRpbmdJbmNyZW1lbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwgcmkgPSBuZXcgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwocm91bmRpbmdJbmNyZW1lbnQpOworICAgICAgICAgICAgbnVtYmVyID0gbnVtYmVyLmRpdmlkZShyaSwgMCwgcm91bmRpbmdNb2RlKQorICAgICAgICAgICAgICAgICAgICAubXVsdGlwbHkocmkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQXQgdGhpcyBwb2ludCB3ZSBhcmUgZ3VhcmFudGVlZCBhIG5vbm5lZ2F0aXZlIGZpbml0ZQorICAgICAgICAvLyBudW1iZXIuCisgICAgICAgIHN5bmNocm9uaXplZChkaWdpdExpc3QpIHsKKyAgICAgICAgICAgIGRpZ2l0TGlzdC5zZXQobnVtYmVyLCB1c2VFeHBvbmVudGlhbE5vdGF0aW9uID8KKyAgICAgICAgICAgICAgICAgICAgICBnZXRNaW5pbXVtSW50ZWdlckRpZ2l0cygpICsgZ2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKCkgOgorICAgICAgICAgICAgICAgICAgICAgIGdldE1heGltdW1GcmFjdGlvbkRpZ2l0cygpLAorICAgICAgICAgICAgICAgICAgICAgICF1c2VFeHBvbmVudGlhbE5vdGF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBzdWJmb3JtYXQocmVzdWx0LCBmaWVsZFBvc2l0aW9uLCBudW1iZXIuc2lnbnVtKCkgPCAwLCBmYWxzZSk7CisgICAgICAgIH0gICAgICAgIAorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIGEgZ3JvdXBpbmcgc2VwYXJhdG9yIGJlbG9uZ3MgYXQgdGhlIGdpdmVuCisgICAgICogcG9zaXRpb24sIGJhc2VkIG9uIHdoZXRoZXIgZ3JvdXBpbmcgaXMgaW4gdXNlIGFuZCB0aGUgdmFsdWVzIG9mCisgICAgICogdGhlIHByaW1hcnkgYW5kIHNlY29uZGFyeSBncm91cGluZyBpbnRlcnZhbC4KKyAgICAgKiBAcGFyYW0gcG9zIHRoZSBudW1iZXIgb2YgaW50ZWdlciBkaWdpdHMgdG8gdGhlIHJpZ2h0IG9mCisgICAgICogdGhlIGN1cnJlbnQgcG9zaXRpb24uICBaZXJvIGluZGljYXRlcyB0aGUgcG9zaXRpb24gYWZ0ZXIgdGhlCisgICAgICogcmlnaHRtb3N0IGludGVnZXIgZGlnaXQuCisgICAgICogQHJldHVybiB0cnVlIGlmIGEgZ3JvdXBpbmcgY2hhcmFjdGVyIGJlbG9uZ3MgYXQgdGhlIGN1cnJlbnQKKyAgICAgKiBwb3NpdGlvbi4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gaXNHcm91cGluZ1Bvc2l0aW9uKGludCBwb3MpIHsKKyAgICAgICAgYm9vbGVhbiByZXN1bHQgPSBmYWxzZTsKKyAgICAgICAgaWYgKGlzR3JvdXBpbmdVc2VkKCkgJiYgKHBvcyA+IDApICYmIChncm91cGluZ1NpemUgPiAwKSkgeworICAgICAgICAgICAgaWYgKChncm91cGluZ1NpemUyID4gMCkgJiYgKHBvcyA+IGdyb3VwaW5nU2l6ZSkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSAoKHBvcyAtIGdyb3VwaW5nU2l6ZSkgJSBncm91cGluZ1NpemUyKSA9PSAwOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBwb3MgJSBncm91cGluZ1NpemUgPT0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBsZXRlIHRoZSBmb3JtYXR0aW5nIG9mIGEgZmluaXRlIG51bWJlci4gIE9uIGVudHJ5LCB0aGUgZGlnaXRMaXN0IG11c3QKKyAgICAgKiBiZSBmaWxsZWQgaW4gd2l0aCB0aGUgY29ycmVjdCBkaWdpdHMuCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmdCdWZmZXIgc3ViZm9ybWF0KFN0cmluZ0J1ZmZlciByZXN1bHQsIEZpZWxkUG9zaXRpb24gZmllbGRQb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICBib29sZWFuIGlzTmVnYXRpdmUsIGJvb2xlYW4gaXNJbnRlZ2VyKQorICAgIHsKKyAgICAgICAgLy8gTk9URTogVGhpcyBpc24ndCByZXF1aXJlZCBhbnltb3JlIGJlY2F1c2UgRGlnaXRMaXN0IHRha2VzIGNhcmUgb2YgdGhpcy4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gIC8vIFRoZSBuZWdhdGl2ZSBvZiB0aGUgZXhwb25lbnQgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIGxlYWRpbmcKKyAgICAgICAgLy8gIC8vIHplcm9zIGJldHdlZW4gdGhlIGRlY2ltYWwgYW5kIHRoZSBmaXJzdCBub24temVybyBkaWdpdCwgZm9yCisgICAgICAgIC8vICAvLyBhIHZhbHVlIDwgMC4xIChlLmcuLCBmb3IgMC4wMDEyMywgLWZFeHBvbmVudCA9PSAyKS4gIElmIHRoaXMKKyAgICAgICAgLy8gIC8vIGlzIG1vcmUgdGhhbiB0aGUgbWF4aW11bSBmcmFjdGlvbiBkaWdpdHMsIHRoZW4gd2UgaGF2ZSBhbiB1bmRlcmZsb3cKKyAgICAgICAgLy8gIC8vIGZvciB0aGUgcHJpbnRlZCByZXByZXNlbnRhdGlvbi4gIFdlIHJlY29nbml6ZSB0aGlzIGhlcmUgYW5kIHNldAorICAgICAgICAvLyAgLy8gdGhlIERpZ2l0TGlzdCByZXByZXNlbnRhdGlvbiB0byB6ZXJvIGluIHRoaXMgc2l0dWF0aW9uLgorICAgICAgICAvLworICAgICAgICAvLyAgaWYgKC1kaWdpdExpc3QuZGVjaW1hbEF0ID49IGdldE1heGltdW1GcmFjdGlvbkRpZ2l0cygpKQorICAgICAgICAvLyAgeworICAgICAgICAvLyAgICAgIGRpZ2l0TGlzdC5jb3VudCA9IDA7CisgICAgICAgIC8vICB9CisKKyAgICAgICAgaW50IGk7CisgICAgICAgIGNoYXIgemVybyA9IHN5bWJvbHMuZ2V0WmVyb0RpZ2l0KCk7CisgICAgICAgIGludCB6ZXJvRGVsdGEgPSB6ZXJvIC0gJzAnOyAvLyAnMCcgaXMgdGhlIERpZ2l0TGlzdCByZXByZXNlbnRhdGlvbiBvZiB6ZXJvCisgICAgICAgIGNoYXIgZ3JvdXBpbmcgPSBzeW1ib2xzLmdldEdyb3VwaW5nU2VwYXJhdG9yKCk7CisgICAgICAgIGNoYXIgZGVjaW1hbCA9IGlzQ3VycmVuY3lGb3JtYXQgPworICAgICAgICAgICAgc3ltYm9scy5nZXRNb25ldGFyeURlY2ltYWxTZXBhcmF0b3IoKSA6CisgICAgICAgICAgICBzeW1ib2xzLmdldERlY2ltYWxTZXBhcmF0b3IoKTsKKyAgICAgICAgaW50IG1heEludERpZyA9IGdldE1heGltdW1JbnRlZ2VyRGlnaXRzKCk7CisgICAgICAgIGludCBtaW5JbnREaWcgPSBnZXRNaW5pbXVtSW50ZWdlckRpZ2l0cygpOworCisgICAgICAgIC8qIFBlciBidWcgNDE0NzcwNiwgRGVjaW1hbEZvcm1hdCBtdXN0IHJlc3BlY3QgdGhlIHNpZ24gb2YgbnVtYmVycyB3aGljaAorICAgICAgICAgKiBmb3JtYXQgYXMgemVyby4gIFRoaXMgYWxsb3dzIHNlbnNpYmxlIGNvbXB1dGF0aW9ucyBhbmQgcHJlc2VydmVzCisgICAgICAgICAqIHJlbGF0aW9ucyBzdWNoIGFzIHNpZ251bSgxL3gpID0gc2lnbnVtKHgpLCB3aGVyZSB4IGlzICtJbmZpbml0eSBvcgorICAgICAgICAgKiAtSW5maW5pdHkuICBQcmlvciB0byB0aGlzIGZpeCwgd2UgYWx3YXlzIGZvcm1hdHRlZCB6ZXJvIHZhbHVlcyBhcyBpZgorICAgICAgICAgKiB0aGV5IHdlcmUgcG9zaXRpdmUuICBMaXUgNy82Lzk4LgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKGRpZ2l0TGlzdC5pc1plcm8oKSkKKyAgICAgICAgeworICAgICAgICAgICAgZGlnaXRMaXN0LmRlY2ltYWxBdCA9IDA7IC8vIE5vcm1hbGl6ZQorICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0LmFwcGVuZChpc05lZ2F0aXZlID8gbmVnYXRpdmVQcmVmaXggOiBwb3NpdGl2ZVByZWZpeCk7CisKKyAgICAgICAgaWYgKHVzZUV4cG9uZW50aWFsTm90YXRpb24pCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFJlY29yZCBmaWVsZCBpbmZvcm1hdGlvbiBmb3IgY2FsbGVyLgorICAgICAgICAgICAgLy9GUDppZiAoZmllbGRQb3NpdGlvbi5nZXRGaWVsZCgpID09IE51bWJlckZvcm1hdC5JTlRFR0VSX0ZJRUxEKQorICAgICAgICAgICAgLy9GUDp7CisgICAgICAgICAgICAgICAgLy9GUDpmaWVsZFBvc2l0aW9uLnNldEJlZ2luSW5kZXgocmVzdWx0Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICAvL0ZQOmZpZWxkUG9zaXRpb24uc2V0RW5kSW5kZXgoLTEpOworICAgICAgICAgICAgLy9GUDp9CisgICAgICAgICAgICAvL0ZQOmVsc2UgaWYgKGZpZWxkUG9zaXRpb24uZ2V0RmllbGQoKSA9PSBOdW1iZXJGb3JtYXQuRlJBQ1RJT05fRklFTEQpCisgICAgICAgICAgICAvL0ZQOnsKKyAgICAgICAgICAgICAgICAvL0ZQOmZpZWxkUG9zaXRpb24uc2V0QmVnaW5JbmRleCgtMSk7CisgICAgICAgICAgICAvL0ZQOn0KKworICAgICAgICAgICAgLy8gTWluaW11bSBpbnRlZ2VyIGRpZ2l0cyBhcmUgaGFuZGxlZCBpbiBleHBvbmVudGlhbCBmb3JtYXQgYnkKKyAgICAgICAgICAgIC8vIGFkanVzdGluZyB0aGUgZXhwb25lbnQuICBGb3IgZXhhbXBsZSwgMC4wMTIzNCB3aXRoIDMgbWluaW11bQorICAgICAgICAgICAgLy8gaW50ZWdlciBkaWdpdHMgaXMgIjEyMy40RS00Ii4KKworICAgICAgICAgICAgLy8gTWF4aW11bSBpbnRlZ2VyIGRpZ2l0cyBhcmUgaW50ZXJwcmV0ZWQgYXMgaW5kaWNhdGluZyB0aGUKKyAgICAgICAgICAgIC8vIHJlcGVhdGluZyByYW5nZS4gIFRoaXMgaXMgdXNlZnVsIGZvciBlbmdpbmVlcmluZyBub3RhdGlvbiwgaW4KKyAgICAgICAgICAgIC8vIHdoaWNoIHRoZSBleHBvbmVudCBpcyByZXN0cmljdGVkIHRvIGEgbXVsdGlwbGUgb2YgMy4gIEZvcgorICAgICAgICAgICAgLy8gZXhhbXBsZSwgMC4wMTIzNCB3aXRoIDMgbWF4aW11bSBpbnRlZ2VyIGRpZ2l0cyBpcyAiMTIuMzRlLTMiLgorICAgICAgICAgICAgLy8gSWYgbWF4aW11bSBpbnRlZ2VyIGRpZ2l0cyBhcmUgZGVmaW5lZCBhbmQgYXJlIGxhcmdlciB0aGFuCisgICAgICAgICAgICAvLyBtaW5pbXVtIGludGVnZXIgZGlnaXRzLCB0aGVuIG1pbmltdW0gaW50ZWdlciBkaWdpdHMgYXJlCisgICAgICAgICAgICAvLyBpZ25vcmVkLgorCisgICAgICAgICAgICBpbnQgZXhwb25lbnQgPSBkaWdpdExpc3QuZGVjaW1hbEF0OworICAgICAgICAgICAgaWYgKG1heEludERpZyA+IDEgJiYgbWF4SW50RGlnICE9IG1pbkludERpZykgeworICAgICAgICAgICAgICAgIC8vIEEgZXhwb25lbnQgaW5jcmVtZW50IGlzIGRlZmluZWQ7IGFkanVzdCB0byBpdC4KKyAgICAgICAgICAgICAgICBleHBvbmVudCA9IChleHBvbmVudCA+IDApID8gKGV4cG9uZW50IC0gMSkgLyBtYXhJbnREaWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogKGV4cG9uZW50IC8gbWF4SW50RGlnKSAtIDE7CisgICAgICAgICAgICAgICAgZXhwb25lbnQgKj0gbWF4SW50RGlnOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBObyBleHBvbmVudCBpbmNyZW1lbnQgaXMgZGVmaW5lZDsgdXNlIG1pbmltdW0gaW50ZWdlciBkaWdpdHMuCisgICAgICAgICAgICAgICAgLy8gSWYgbm9uZSBpcyBzcGVjaWZpZWQsIGFzIGluICIjRTAiLCBnZW5lcmF0ZSAxIGludGVnZXIgZGlnaXQuCisgICAgICAgICAgICAgICAgZXhwb25lbnQgLT0gKG1pbkludERpZyA+IDAgfHwgZ2V0TWluaW11bUZyYWN0aW9uRGlnaXRzKCkgPiAwKQorICAgICAgICAgICAgICAgICAgICA/IG1pbkludERpZyA6IDE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFdlIG5vdyBvdXRwdXQgYSBtaW5pbXVtIG51bWJlciBvZiBkaWdpdHMsIGFuZCBtb3JlIGlmIHRoZXJlCisgICAgICAgICAgICAvLyBhcmUgbW9yZSBkaWdpdHMsIHVwIHRvIHRoZSBtYXhpbXVtIG51bWJlciBvZiBkaWdpdHMuICBXZQorICAgICAgICAgICAgLy8gcGxhY2UgdGhlIGRlY2ltYWwgcG9pbnQgYWZ0ZXIgdGhlICJpbnRlZ2VyIiBkaWdpdHMsIHdoaWNoCisgICAgICAgICAgICAvLyBhcmUgdGhlIGZpcnN0IChkZWNpbWFsQXQgLSBleHBvbmVudCkgZGlnaXRzLgorICAgICAgICAgICAgaW50IG1pbmltdW1EaWdpdHMgPSBtaW5JbnREaWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBnZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoKTsKKyAgICAgICAgICAgIC8vIFRoZSBudW1iZXIgb2YgaW50ZWdlciBkaWdpdHMgaXMgaGFuZGxlZCBzcGVjaWFsbHkgaWYgdGhlIG51bWJlcgorICAgICAgICAgICAgLy8gaXMgemVybywgc2luY2UgdGhlbiB0aGVyZSBtYXkgYmUgbm8gZGlnaXRzLgorICAgICAgICAgICAgaW50IGludGVnZXJEaWdpdHMgPSBkaWdpdExpc3QuaXNaZXJvKCkgPyBtaW5JbnREaWcgOgorICAgICAgICAgICAgICAgIGRpZ2l0TGlzdC5kZWNpbWFsQXQgLSBleHBvbmVudDsKKyAgICAgICAgICAgIGludCB0b3RhbERpZ2l0cyA9IGRpZ2l0TGlzdC5jb3VudDsKKyAgICAgICAgICAgIGlmIChtaW5pbXVtRGlnaXRzID4gdG90YWxEaWdpdHMpIHRvdGFsRGlnaXRzID0gbWluaW11bURpZ2l0czsKKyAgICAgICAgICAgIGlmIChpbnRlZ2VyRGlnaXRzID4gdG90YWxEaWdpdHMpIHRvdGFsRGlnaXRzID0gaW50ZWdlckRpZ2l0czsKKworICAgICAgICAgICAgZm9yIChpPTA7IGk8dG90YWxEaWdpdHM7ICsraSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA9PSBpbnRlZ2VyRGlnaXRzKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gUmVjb3JkIGZpZWxkIGluZm9ybWF0aW9uIGZvciBjYWxsZXIuCisgICAgICAgICAgICAgICAgICAgIC8vRlA6aWYgKGZpZWxkUG9zaXRpb24uZ2V0RmllbGQoKSA9PSBOdW1iZXJGb3JtYXQuSU5URUdFUl9GSUVMRCkKKyAgICAgICAgICAgICAgICAgICAgLy9GUDpmaWVsZFBvc2l0aW9uLnNldEVuZEluZGV4KHJlc3VsdC5sZW5ndGgoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChkZWNpbWFsKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBSZWNvcmQgZmllbGQgaW5mb3JtYXRpb24gZm9yIGNhbGxlci4KKyAgICAgICAgICAgICAgICAgICAgLy9GUDppZiAoZmllbGRQb3NpdGlvbi5nZXRGaWVsZCgpID09IE51bWJlckZvcm1hdC5GUkFDVElPTl9GSUVMRCkKKyAgICAgICAgICAgICAgICAgICAgLy9GUDpmaWVsZFBvc2l0aW9uLnNldEJlZ2luSW5kZXgocmVzdWx0Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgoaSA8IGRpZ2l0TGlzdC5jb3VudCkgPworICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhcikoZGlnaXRMaXN0LmRpZ2l0c1tpXSArIHplcm9EZWx0YSkgOgorICAgICAgICAgICAgICAgICAgICAgICAgICB6ZXJvKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gUmVjb3JkIGZpZWxkIGluZm9ybWF0aW9uCisgICAgICAgICAgICBpZiAoZmllbGRQb3NpdGlvbi5nZXRGaWVsZCgpID09IE51bWJlckZvcm1hdC5JTlRFR0VSX0ZJRUxEKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vRlA6aWYgKGZpZWxkUG9zaXRpb24uZ2V0RW5kSW5kZXgoKSA8IDApCisgICAgICAgICAgICAgICAgLy9GUDpmaWVsZFBvc2l0aW9uLnNldEVuZEluZGV4KHJlc3VsdC5sZW5ndGgoKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChmaWVsZFBvc2l0aW9uLmdldEZpZWxkKCkgPT0gTnVtYmVyRm9ybWF0LkZSQUNUSU9OX0ZJRUxEKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vRlA6aWYgKGZpZWxkUG9zaXRpb24uZ2V0QmVnaW5JbmRleCgpIDwgMCkKKyAgICAgICAgICAgICAgICAvL0ZQOmZpZWxkUG9zaXRpb24uc2V0QmVnaW5JbmRleChyZXN1bHQubGVuZ3RoKCkpOworICAgICAgICAgICAgICAgIC8vRlA6ZmllbGRQb3NpdGlvbi5zZXRFbmRJbmRleChyZXN1bHQubGVuZ3RoKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUaGUgZXhwb25lbnQgaXMgb3V0cHV0IHVzaW5nIHRoZSBwYXR0ZXJuLXNwZWNpZmllZCBtaW5pbXVtCisgICAgICAgICAgICAvLyBleHBvbmVudCBkaWdpdHMuICBUaGVyZSBpcyBubyBtYXhpbXVtIGxpbWl0IHRvIHRoZSBleHBvbmVudAorICAgICAgICAgICAgLy8gZGlnaXRzLCBzaW5jZSB0cnVuY2F0aW5nIHRoZSBleHBvbmVudCB3b3VsZCByZXN1bHQgaW4gYW4KKyAgICAgICAgICAgIC8vIHVuYWNjZXB0YWJsZSBpbmFjY3VyYWN5LgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzeW1ib2xzLmdldEV4cG9uZW50U2VwYXJhdG9yKCkpOworCisgICAgICAgICAgICAvLyBGb3IgemVybyB2YWx1ZXMsIHdlIGZvcmNlIHRoZSBleHBvbmVudCB0byB6ZXJvLiAgV2UKKyAgICAgICAgICAgIC8vIG11c3QgZG8gdGhpcyBoZXJlLCBhbmQgbm90IGVhcmxpZXIsIGJlY2F1c2UgdGhlIHZhbHVlCisgICAgICAgICAgICAvLyBpcyB1c2VkIHRvIGRldGVybWluZSBpbnRlZ2VyIGRpZ2l0IGNvdW50IGFib3ZlLgorICAgICAgICAgICAgaWYgKGRpZ2l0TGlzdC5pc1plcm8oKSkgZXhwb25lbnQgPSAwOworCisgICAgICAgICAgICBib29sZWFuIG5lZ2F0aXZlRXhwb25lbnQgPSBleHBvbmVudCA8IDA7CisgICAgICAgICAgICBpZiAobmVnYXRpdmVFeHBvbmVudCkgeworICAgICAgICAgICAgICAgIGV4cG9uZW50ID0gLWV4cG9uZW50OworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoc3ltYm9scy5nZXRNaW51c1NpZ24oKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGV4cG9uZW50U2lnbkFsd2F5c1Nob3duKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzeW1ib2xzLmdldFBsdXNTaWduKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGlnaXRMaXN0LnNldChleHBvbmVudCk7CisgICAgICAgICAgICBmb3IgKGk9ZGlnaXRMaXN0LmRlY2ltYWxBdDsgaTxtaW5FeHBvbmVudERpZ2l0czsgKytpKSByZXN1bHQuYXBwZW5kKHplcm8pOworICAgICAgICAgICAgZm9yIChpPTA7IGk8ZGlnaXRMaXN0LmRlY2ltYWxBdDsgKytpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoKGkgPCBkaWdpdExpc3QuY291bnQpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIpKGRpZ2l0TGlzdC5kaWdpdHNbaV0gKyB6ZXJvRGVsdGEpIDogemVybyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICAvLyBSZWNvcmQgZmllbGQgaW5mb3JtYXRpb24gZm9yIGNhbGxlci4KKyAgICAgICAgICAgIC8vRlA6aWYgKGZpZWxkUG9zaXRpb24uZ2V0RmllbGQoKSA9PSBOdW1iZXJGb3JtYXQuSU5URUdFUl9GSUVMRCkKKyAgICAgICAgICAgIC8vRlA6ZmllbGRQb3NpdGlvbi5zZXRCZWdpbkluZGV4KHJlc3VsdC5sZW5ndGgoKSk7CisKKyAgICAgICAgICAgIC8vIE91dHB1dCB0aGUgaW50ZWdlciBwb3J0aW9uLiAgSGVyZSAnY291bnQnIGlzIHRoZSB0b3RhbAorICAgICAgICAgICAgLy8gbnVtYmVyIG9mIGludGVnZXIgZGlnaXRzIHdlIHdpbGwgZGlzcGxheSwgaW5jbHVkaW5nIGJvdGgKKyAgICAgICAgICAgIC8vIGxlYWRpbmcgemVyb3MgcmVxdWlyZWQgdG8gc2F0aXNmeSBnZXRNaW5pbXVtSW50ZWdlckRpZ2l0cywKKyAgICAgICAgICAgIC8vIGFuZCBhY3R1YWwgZGlnaXRzIHByZXNlbnQgaW4gdGhlIG51bWJlci4KKyAgICAgICAgICAgIGludCBjb3VudCA9IG1pbkludERpZzsKKyAgICAgICAgICAgIGludCBkaWdpdEluZGV4ID0gMDsgLy8gSW5kZXggaW50byBkaWdpdExpc3QuZkRpZ2l0c1tdCisgICAgICAgICAgICBpZiAoZGlnaXRMaXN0LmRlY2ltYWxBdCA+IDAgJiYgY291bnQgPCBkaWdpdExpc3QuZGVjaW1hbEF0KQorICAgICAgICAgICAgICAgIGNvdW50ID0gZGlnaXRMaXN0LmRlY2ltYWxBdDsKKworICAgICAgICAgICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIGdldE1heGltdW1JbnRlZ2VyRGlnaXRzKCkgaXMgc21hbGxlcgorICAgICAgICAgICAgLy8gdGhhbiB0aGUgcmVhbCBudW1iZXIgb2YgaW50ZWdlciBkaWdpdHMuICBJZiB0aGlzIGlzIHNvLCB3ZQorICAgICAgICAgICAgLy8gb3V0cHV0IHRoZSBsZWFzdCBzaWduaWZpY2FudCBtYXggaW50ZWdlciBkaWdpdHMuICBGb3IgZXhhbXBsZSwKKyAgICAgICAgICAgIC8vIHRoZSB2YWx1ZSAxOTk3IHByaW50ZWQgd2l0aCAyIG1heCBpbnRlZ2VyIGRpZ2l0cyBpcyBqdXN0ICI5NyIuCisKKyAgICAgICAgICAgIGlmIChjb3VudCA+IG1heEludERpZykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb3VudCA9IG1heEludERpZzsKKyAgICAgICAgICAgICAgICBkaWdpdEluZGV4ID0gZGlnaXRMaXN0LmRlY2ltYWxBdCAtIGNvdW50OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpbnQgc2l6ZUJlZm9yZUludGVnZXJQYXJ0ID0gcmVzdWx0Lmxlbmd0aCgpOworICAgICAgICAgICAgZm9yIChpPWNvdW50LTE7IGk+PTA7IC0taSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA8IGRpZ2l0TGlzdC5kZWNpbWFsQXQgJiYgZGlnaXRJbmRleCA8IGRpZ2l0TGlzdC5jb3VudCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIE91dHB1dCBhIHJlYWwgZGlnaXQKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgoY2hhcikoZGlnaXRMaXN0LmRpZ2l0c1tkaWdpdEluZGV4KytdICsgemVyb0RlbHRhKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIE91dHB1dCBhIGxlYWRpbmcgemVybworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHplcm8pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIE91dHB1dCBncm91cGluZyBzZXBhcmF0b3IgaWYgbmVjZXNzYXJ5LgorICAgICAgICAgICAgICAgIGlmIChpc0dyb3VwaW5nUG9zaXRpb24oaSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChncm91cGluZyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBSZWNvcmQgZmllbGQgaW5mb3JtYXRpb24gZm9yIGNhbGxlci4KKyAgICAgICAgICAgIC8vRlA6aWYgKGZpZWxkUG9zaXRpb24uZ2V0RmllbGQoKSA9PSBOdW1iZXJGb3JtYXQuSU5URUdFUl9GSUVMRCkKKyAgICAgICAgICAgIC8vRlA6ZmllbGRQb3NpdGlvbi5zZXRFbmRJbmRleChyZXN1bHQubGVuZ3RoKCkpOworCisgICAgICAgICAgICAvLyBEZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlcmUgYXJlIGFueSBwcmludGFibGUgZnJhY3Rpb25hbAorICAgICAgICAgICAgLy8gZGlnaXRzLiAgSWYgd2UndmUgdXNlZCB1cCB0aGUgZGlnaXRzIHdlIGtub3cgdGhlcmUgYXJlbid0LgorICAgICAgICAgICAgYm9vbGVhbiBmcmFjdGlvblByZXNlbnQgPSAoZ2V0TWluaW11bUZyYWN0aW9uRGlnaXRzKCkgPiAwKSB8fAorICAgICAgICAgICAgKCFpc0ludGVnZXIgJiYgZGlnaXRJbmRleCA8IGRpZ2l0TGlzdC5jb3VudCk7CisKKyAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG5vIGZyYWN0aW9uIHByZXNlbnQsIGFuZCB3ZSBoYXZlbid0IHByaW50ZWQgYW55CisgICAgICAgICAgICAvLyBpbnRlZ2VyIGRpZ2l0cywgdGhlbiBwcmludCBhIHplcm8uICBPdGhlcndpc2Ugd2Ugd29uJ3QgcHJpbnQKKyAgICAgICAgICAgIC8vIF9hbnlfIGRpZ2l0cywgYW5kIHdlIHdvbid0IGJlIGFibGUgdG8gcGFyc2UgdGhpcyBzdHJpbmcuCisgICAgICAgICAgICBpZiAoIWZyYWN0aW9uUHJlc2VudCAmJiByZXN1bHQubGVuZ3RoKCkgPT0gc2l6ZUJlZm9yZUludGVnZXJQYXJ0KQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoemVybyk7CisKKyAgICAgICAgICAgIC8vIE91dHB1dCB0aGUgZGVjaW1hbCBzZXBhcmF0b3IgaWYgd2UgYWx3YXlzIGRvIHNvLgorICAgICAgICAgICAgaWYgKGRlY2ltYWxTZXBhcmF0b3JBbHdheXNTaG93biB8fCBmcmFjdGlvblByZXNlbnQpCisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChkZWNpbWFsKTsKKworICAgICAgICAgICAgLy8gUmVjb3JkIGZpZWxkIGluZm9ybWF0aW9uIGZvciBjYWxsZXIuCisgICAgICAgICAgICAvL0ZQOmlmIChmaWVsZFBvc2l0aW9uLmdldEZpZWxkKCkgPT0gTnVtYmVyRm9ybWF0LkZSQUNUSU9OX0ZJRUxEKQorICAgICAgICAgICAgLy9GUDpmaWVsZFBvc2l0aW9uLnNldEJlZ2luSW5kZXgocmVzdWx0Lmxlbmd0aCgpKTsKKworICAgICAgICAgICAgZm9yIChpPTA7IGkgPCBnZXRNYXhpbXVtRnJhY3Rpb25EaWdpdHMoKTsgKytpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEhlcmUgaXMgd2hlcmUgd2UgZXNjYXBlIGZyb20gdGhlIGxvb3AuICBXZSBlc2NhcGUgaWYgd2UndmUgb3V0cHV0CisgICAgICAgICAgICAgICAgLy8gdGhlIG1heGltdW0gZnJhY3Rpb24gZGlnaXRzIChzcGVjaWZpZWQgaW4gdGhlIGZvciBleHByZXNzaW9uIGFib3ZlKS4KKyAgICAgICAgICAgICAgICAvLyBXZSBhbHNvIHN0b3Agd2hlbiB3ZSd2ZSBvdXRwdXQgdGhlIG1pbmltdW0gZGlnaXRzIGFuZCBlaXRoZXI6CisgICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSBhbiBpbnRlZ2VyLCBzbyB0aGVyZSBpcyBubyBmcmFjdGlvbmFsIHN0dWZmIHRvIGRpc3BsYXksCisgICAgICAgICAgICAgICAgLy8gb3Igd2UncmUgb3V0IG9mIHNpZ25pZmljYW50IGRpZ2l0cy4KKyAgICAgICAgICAgICAgICBpZiAoaSA+PSBnZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoKSAmJgorICAgICAgICAgICAgICAgICAgICAoaXNJbnRlZ2VyIHx8IGRpZ2l0SW5kZXggPj0gZGlnaXRMaXN0LmNvdW50KSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAvLyBPdXRwdXQgbGVhZGluZyBmcmFjdGlvbmFsIHplcm9zLiAgVGhlc2UgYXJlIHplcm9zIHRoYXQgY29tZSBhZnRlcgorICAgICAgICAgICAgICAgIC8vIHRoZSBkZWNpbWFsIGJ1dCBiZWZvcmUgYW55IHNpZ25pZmljYW50IGRpZ2l0cy4gIFRoZXNlIGFyZSBvbmx5CisgICAgICAgICAgICAgICAgLy8gb3V0cHV0IGlmIGFicyhudW1iZXIgYmVpbmcgZm9ybWF0dGVkKSA8IDEuMC4KKyAgICAgICAgICAgICAgICBpZiAoLTEtaSA+IChkaWdpdExpc3QuZGVjaW1hbEF0LTEpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh6ZXJvKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gT3V0cHV0IGEgZGlnaXQsIGlmIHdlIGhhdmUgYW55IHByZWNpc2lvbiBsZWZ0LCBvciBhCisgICAgICAgICAgICAgICAgLy8gemVybyBpZiB3ZSBkb24ndC4gIFdlIGRvbid0IHdhbnQgdG8gb3V0cHV0IG5vaXNlIGRpZ2l0cy4KKyAgICAgICAgICAgICAgICBpZiAoIWlzSW50ZWdlciAmJiBkaWdpdEluZGV4IDwgZGlnaXRMaXN0LmNvdW50KQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgoY2hhcikoZGlnaXRMaXN0LmRpZ2l0c1tkaWdpdEluZGV4KytdICsgemVyb0RlbHRhKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoemVybyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBSZWNvcmQgZmllbGQgaW5mb3JtYXRpb24gZm9yIGNhbGxlci4KKyAgICAgICAgICAgIC8vRlA6aWYgKGZpZWxkUG9zaXRpb24uZ2V0RmllbGQoKSA9PSBOdW1iZXJGb3JtYXQuRlJBQ1RJT05fRklFTEQpCisgICAgICAgICAgICAvL0ZQOmZpZWxkUG9zaXRpb24uc2V0RW5kSW5kZXgocmVzdWx0Lmxlbmd0aCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc3VsdC5hcHBlbmQoaXNOZWdhdGl2ZSA/IG5lZ2F0aXZlU3VmZml4IDogcG9zaXRpdmVTdWZmaXgpOworCisgICAgICAgIC8vIFtORVddCisgICAgICAgIGFkZFBhZGRpbmcocmVzdWx0LCB0cnVlLCBpc05lZ2F0aXZlKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvLyBbTkVXXQorICAgIHByaXZhdGUgZmluYWwgdm9pZCBhZGRQYWRkaW5nKFN0cmluZ0J1ZmZlciByZXN1bHQsIGJvb2xlYW4gaGFzQWZmaXhlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGlzTmVnYXRpdmUpIHsKKyAgICAgICAgaWYgKGZvcm1hdFdpZHRoID4gMCkgeworICAgICAgICAgICAgaW50IGxlbiA9IGZvcm1hdFdpZHRoIC0gcmVzdWx0Lmxlbmd0aCgpOworICAgICAgICAgICAgaWYgKGxlbiA+IDApIHsKKyAgICAgICAgICAgICAgICBjaGFyW10gcGFkZGluZyA9IG5ldyBjaGFyW2xlbl07CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPGxlbjsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIHBhZGRpbmdbaV0gPSBwYWQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN3aXRjaCAocGFkUG9zaXRpb24pIHsKKyAgICAgICAgICAgICAgICBjYXNlIFBBRF9BRlRFUl9QUkVGSVg6CisgICAgICAgICAgICAgICAgICAgIGlmIChoYXNBZmZpeGVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuaW5zZXJ0KGlzTmVnYXRpdmUgPyBuZWdhdGl2ZVByZWZpeC5sZW5ndGgoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHBvc2l0aXZlUHJlZml4Lmxlbmd0aCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9IC8vIGVsc2UgZmFsbCB0aHJvdWdoIHRvIG5leHQgY2FzZQorICAgICAgICAgICAgICAgIGNhc2UgUEFEX0JFRk9SRV9QUkVGSVg6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5pbnNlcnQoMCwgcGFkZGluZyk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgUEFEX0JFRk9SRV9TVUZGSVg6CisgICAgICAgICAgICAgICAgICAgIGlmIChoYXNBZmZpeGVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuaW5zZXJ0KHJlc3VsdC5sZW5ndGgoKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpc05lZ2F0aXZlID8gbmVnYXRpdmVTdWZmaXgubGVuZ3RoKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogcG9zaXRpdmVTdWZmaXgubGVuZ3RoKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9IC8vIGVsc2UgZmFsbCB0aHJvdWdoIHRvIG5leHQgY2FzZQorICAgICAgICAgICAgICAgIGNhc2UgUEFEX0FGVEVSX1NVRkZJWDoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChwYWRkaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+Q0hBTkdFRDwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBQYXJzZSB0aGUgZ2l2ZW4gc3RyaW5nLCByZXR1cm5pbmcgYSA8Y29kZT5OdW1iZXI8L2NvZGU+IG9iamVjdCB0bworICAgICAqIHJlcHJlc2VudCB0aGUgcGFyc2VkIHZhbHVlLiAgPGNvZGU+RG91YmxlPC9jb2RlPiBvYmplY3RzIGFyZSByZXR1cm5lZCB0bworICAgICAqIHJlcHJlc2VudCBub24taW50ZWdyYWwgdmFsdWVzIHdoaWNoIGNhbm5vdCBiZSBzdG9yZWQgaW4gYQorICAgICAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+LiAgVGhlc2UgYXJlIDxjb2RlPk5hTjwvY29kZT4sIGluZmluaXR5LAorICAgICAqIC1pbmZpbml0eSwgYW5kIC0wLjAuICBBbGwgb3RoZXIgdmFsdWVzIGFyZSByZXR1cm5lZCBhcyA8Y29kZT5Mb25nPC9jb2RlPiwKKyAgICAgKiA8Y29kZT5CaWdJbnRlZ2VyPC9jb2RlPiwgb3IgPGNvZGU+QmlnRGVjaW1hbDwvY29kZT4gdmFsdWVzLCBpbiB0aGF0IG9yZGVyCisgICAgICogb2YgcHJlZmVyZW5jZS4gIElmIHRoZSBwYXJzZSBmYWlscywgbnVsbCBpcyByZXR1cm5lZC4KKyAgICAgKiBAcGFyYW0gdGV4dCB0aGUgc3RyaW5nIHRvIGJlIHBhcnNlZAorICAgICAqIEBwYXJhbSBwYXJzZVBvc2l0aW9uIGRlZmluZXMgdGhlIHBvc2l0aW9uIHdoZXJlIHBhcnNpbmcgaXMgdG8gYmVnaW4sCisgICAgICogYW5kIHVwb24gcmV0dXJuLCB0aGUgcG9zaXRpb24gd2hlcmUgcGFyc2luZyBsZWZ0IG9mZi4gIElmIHRoZSBwb3NpdGlvbgorICAgICAqIGhhcyBub3QgY2hhbmdlZCB1cG9uIHJldHVybiwgdGhlbiBwYXJzaW5nIGZhaWxlZC4KKyAgICAgKiBAcmV0dXJuIGEgPGNvZGU+TnVtYmVyPC9jb2RlPiBvYmplY3Qgd2l0aCB0aGUgcGFyc2VkIHZhbHVlIG9yCisgICAgICogPGNvZGU+bnVsbDwvY29kZT4gaWYgdGhlIHBhcnNlIGZhaWxlZAorICAgICAqLworICAgIHB1YmxpYyBOdW1iZXIgcGFyc2UoU3RyaW5nIHRleHQsIFBhcnNlUG9zaXRpb24gcGFyc2VQb3NpdGlvbikKKyAgICB7CisgICAgICAgIC8vIFNraXAgcGFkZGluZyBjaGFyYWN0ZXJzLCBpZiBhbnkKKyAgICAgICAgaW50IGJhY2t1cDsKKyAgICAgICAgaW50IGkgPSBiYWNrdXAgPSBwYXJzZVBvc2l0aW9uLmdldEluZGV4KCk7CisgICAgICAgIGlmIChmb3JtYXRXaWR0aCA+IDApIHsKKyAgICAgICAgICAgIHdoaWxlIChpIDwgdGV4dC5sZW5ndGgoKSAmJiB0ZXh0LmNoYXJBdChpKSA9PSBwYWQpIHsKKyAgICAgICAgICAgICAgICArK2k7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwYXJzZVBvc2l0aW9uLnNldEluZGV4KGkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSGFuZGxlIE5hTiBhcyBhIHNwZWNpYWwgY2FzZQorICAgICAgICBpZiAodGV4dC5yZWdpb25NYXRjaGVzKHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSwgc3ltYm9scy5nZXROYU4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBzeW1ib2xzLmdldE5hTigpLmxlbmd0aCgpKSkgeworICAgICAgICAgICAgcGFyc2VQb3NpdGlvbi5zZXRJbmRleChwYXJzZVBvc2l0aW9uLmdldEluZGV4KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzeW1ib2xzLmdldE5hTigpLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgRG91YmxlKERvdWJsZS5OYU4pOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbltdIHN0YXR1cyA9IG5ldyBib29sZWFuW1NUQVRVU19MRU5HVEhdOworICAgICAgICBpZiAoIXN1YnBhcnNlKHRleHQsIHBhcnNlUG9zaXRpb24sIGRpZ2l0TGlzdCwgZmFsc2UsIHN0YXR1cykpIHsKKyAgICAgICAgICAgIHBhcnNlUG9zaXRpb24uc2V0SW5kZXgoYmFja3VwKTsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9IGVsc2UgaWYgKGZvcm1hdFdpZHRoIDwgMCkgeworICAgICAgICAgICAgaSA9IHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKTsKKyAgICAgICAgICAgIHdoaWxlIChpIDwgdGV4dC5sZW5ndGgoKSAmJiB0ZXh0LmNoYXJBdChpKSA9PSBwYWQpIHsKKyAgICAgICAgICAgICAgICArK2k7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwYXJzZVBvc2l0aW9uLnNldEluZGV4KGkpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSGFuZGxlIGluZmluaXR5CisgICAgICAgIGlmIChzdGF0dXNbU1RBVFVTX0lORklOSVRFXSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBEb3VibGUoc3RhdHVzW1NUQVRVU19QT1NJVElWRV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRG91YmxlLlBPU0lUSVZFX0lORklOSVRZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IERvdWJsZS5ORUdBVElWRV9JTkZJTklUWSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBIYW5kbGUgLTAuMAorICAgICAgICBpZiAoIXN0YXR1c1tTVEFUVVNfUE9TSVRJVkVdICYmIGRpZ2l0TGlzdC5pc1plcm8oKSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBEb3VibGUoLTAuMCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBEbyBhcyBtdWNoIG9mIHRoZSBtdWx0aXBsaWVyIGNvbnZlcnNpb24gYXMgcG9zc2libGUgd2l0aG91dAorICAgICAgICAvLyBsb3NpbmcgYWNjdXJhY3kuCisgICAgICAgIGludCBtdWx0ID0gbXVsdGlwbGllcjsgLy8gRG9uJ3QgbW9kaWZ5IHRoaXMubXVsdGlwbGllcgorICAgICAgICB3aGlsZSAobXVsdCAlIDEwID09IDApIHsKKyAgICAgICAgICAgIC0tZGlnaXRMaXN0LmRlY2ltYWxBdDsKKyAgICAgICAgICAgIG11bHQgLz0gMTA7CisgICAgICAgIH0KKworICAgICAgICAvLyBIYW5kbGUgaW50ZWdyYWwgdmFsdWVzCisgICAgICAgIGlmIChtdWx0ID09IDEgJiYgZGlnaXRMaXN0LmlzSW50ZWdyYWwoKSkgeworICAgICAgICAgICAgQmlnSW50ZWdlciBuID0gZGlnaXRMaXN0LmdldEJpZ0ludGVnZXIoc3RhdHVzW1NUQVRVU19QT1NJVElWRV0pOworICAgICAgICAgICAgcmV0dXJuIChuLmJpdExlbmd0aCgpIDwgNjQpCisgICAgICAgICAgICAgICAgPyAoTnVtYmVyKSBuZXcgTG9uZyhuLmxvbmdWYWx1ZSgpKSAKKyAgICAgICAgICAgICAgICA6IChOdW1iZXIpIG47CisgICAgICAgIH0KKworICAgICAgICAvLyBIYW5kbGUgbm9uLWludGVncmFsIHZhbHVlcworICAgICAgICBqYXZhLm1hdGguQmlnRGVjaW1hbCBuID0gZGlnaXRMaXN0LmdldEJpZ0RlY2ltYWwoc3RhdHVzW1NUQVRVU19QT1NJVElWRV0pOworICAgICAgICBpZiAobXVsdCAhPSAxKSB7CisgICAgICAgICAgICBuID0gbi5kaXZpZGUoamF2YS5tYXRoLkJpZ0RlY2ltYWwudmFsdWVPZihtdWx0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLm1hdGguQmlnRGVjaW1hbC5ST1VORF9IQUxGX0VWRU4pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBuOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTVEFUVVNfSU5GSU5JVEUgPSAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTVEFUVVNfUE9TSVRJVkUgPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTVEFUVVNfTEVOR1RIICAgPSAyOworCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+Q0hBTkdFRDwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBQYXJzZSB0aGUgZ2l2ZW4gdGV4dCBpbnRvIGEgbnVtYmVyLiAgVGhlIHRleHQgaXMgcGFyc2VkIGJlZ2lubmluZyBhdAorICAgICAqIHBhcnNlUG9zaXRpb24sIHVudGlsIGFuIHVucGFyc2VhYmxlIGNoYXJhY3RlciBpcyBzZWVuLgorICAgICAqIEBwYXJhbSB0ZXh0IFRoZSBzdHJpbmcgdG8gcGFyc2UuCisgICAgICogQHBhcmFtIHBhcnNlUG9zaXRpb24gVGhlIHBvc2l0aW9uIGF0IHdoaWNoIHRvIGJlaW5nIHBhcnNpbmcuICBVcG9uCisgICAgICogcmV0dXJuLCB0aGUgZmlyc3QgdW5wYXJzZWFibGUgY2hhcmFjdGVyLgorICAgICAqIEBwYXJhbSBkaWdpdHMgVGhlIERpZ2l0TGlzdCB0byBzZXQgdG8gdGhlIHBhcnNlZCB2YWx1ZS4KKyAgICAgKiBAcGFyYW0gaXNFeHBvbmVudCBJZiB0cnVlLCBwYXJzZSBhbiBleHBvbmVudC4gIFRoaXMgbWVhbnMgbm8KKyAgICAgKiBpbmZpbml0ZSB2YWx1ZXMgYW5kIGludGVnZXIgb25seS4KKyAgICAgKiBAcGFyYW0gc3RhdHVzIFVwb24gcmV0dXJuIGNvbnRhaW5zIGJvb2xlYW4gc3RhdHVzIGZsYWdzIGluZGljYXRpbmcKKyAgICAgKiB3aGV0aGVyIHRoZSB2YWx1ZSB3YXMgaW5maW5pdGUgYW5kIHdoZXRoZXIgaXQgd2FzIHBvc2l0aXZlLgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBzdWJwYXJzZShTdHJpbmcgdGV4dCwgUGFyc2VQb3NpdGlvbiBwYXJzZVBvc2l0aW9uLAorICAgICAgICAgICAgICAgICAgIERpZ2l0TGlzdCBkaWdpdHMsIGJvb2xlYW4gaXNFeHBvbmVudCwKKyAgICAgICAgICAgICAgICAgICBib29sZWFuIHN0YXR1c1tdKQorICAgIHsKKyAgICAgICAgaW50IHBvc2l0aW9uID0gcGFyc2VQb3NpdGlvbi5nZXRJbmRleCgpOworICAgICAgICBpbnQgb2xkU3RhcnQgPSBwYXJzZVBvc2l0aW9uLmdldEluZGV4KCk7CisgICAgICAgIGludCBiYWNrdXA7CisKKyAgICAgICAgLy8gY2hlY2sgZm9yIHBvc2l0aXZlUHJlZml4OyB0YWtlIGxvbmdlc3QKKyAgICAgICAgYm9vbGVhbiBnb3RQb3NpdGl2ZSA9IHRleHQucmVnaW9uTWF0Y2hlcyhwb3NpdGlvbixwb3NpdGl2ZVByZWZpeCwwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aXZlUHJlZml4Lmxlbmd0aCgpKTsKKyAgICAgICAgYm9vbGVhbiBnb3ROZWdhdGl2ZSA9IHRleHQucmVnaW9uTWF0Y2hlcyhwb3NpdGlvbixuZWdhdGl2ZVByZWZpeCwwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5lZ2F0aXZlUHJlZml4Lmxlbmd0aCgpKTsKKyAgICAgICAgaWYgKGdvdFBvc2l0aXZlICYmIGdvdE5lZ2F0aXZlKSB7CisgICAgICAgICAgICBpZiAocG9zaXRpdmVQcmVmaXgubGVuZ3RoKCkgPiBuZWdhdGl2ZVByZWZpeC5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBnb3ROZWdhdGl2ZSA9IGZhbHNlOworICAgICAgICAgICAgZWxzZSBpZiAocG9zaXRpdmVQcmVmaXgubGVuZ3RoKCkgPCBuZWdhdGl2ZVByZWZpeC5sZW5ndGgoKSkKKyAgICAgICAgICAgICAgICBnb3RQb3NpdGl2ZSA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmIChnb3RQb3NpdGl2ZSkgeworICAgICAgICAgICAgcG9zaXRpb24gKz0gcG9zaXRpdmVQcmVmaXgubGVuZ3RoKCk7CisgICAgICAgIH0gZWxzZSBpZiAoZ290TmVnYXRpdmUpIHsKKyAgICAgICAgICAgIHBvc2l0aW9uICs9IG5lZ2F0aXZlUHJlZml4Lmxlbmd0aCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy9QUDpwYXJzZVBvc2l0aW9uLmVycm9ySW5kZXggPSBwb3NpdGlvbjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICAvLyBwcm9jZXNzIGRpZ2l0cyBvciBJbmYsIGZpbmQgZGVjaW1hbCBwb3NpdGlvbgorICAgICAgICBzdGF0dXNbU1RBVFVTX0lORklOSVRFXSA9IGZhbHNlOworICAgICAgICBpZiAoIWlzRXhwb25lbnQgJiYgdGV4dC5yZWdpb25NYXRjaGVzKHBvc2l0aW9uLHN5bWJvbHMuZ2V0SW5maW5pdHkoKSwwLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xzLmdldEluZmluaXR5KCkubGVuZ3RoKCkpKQorICAgICAgICB7CisgICAgICAgICAgICBwb3NpdGlvbiArPSBzeW1ib2xzLmdldEluZmluaXR5KCkubGVuZ3RoKCk7CisgICAgICAgICAgICBzdGF0dXNbU1RBVFVTX0lORklOSVRFXSA9IHRydWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBXZSBub3cgaGF2ZSBhIHN0cmluZyBvZiBkaWdpdHMsIHBvc3NpYmx5IHdpdGggZ3JvdXBpbmcgc3ltYm9scywKKyAgICAgICAgICAgIC8vIGFuZCBkZWNpbWFsIHBvaW50cy4gIFdlIHdhbnQgdG8gcHJvY2VzcyB0aGVzZSBpbnRvIGEgRGlnaXRMaXN0LgorICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBwdXQgYSBidW5jaCBvZiBsZWFkaW5nIHplcm9zIGludG8gdGhlIERpZ2l0TGlzdAorICAgICAgICAgICAgLy8gdGhvdWdoLCBzbyB3ZSBrZWVwIHRyYWNrIG9mIHRoZSBsb2NhdGlvbiBvZiB0aGUgZGVjaW1hbCBwb2ludCwKKyAgICAgICAgICAgIC8vIHB1dCBvbmx5IHNpZ25pZmljYW50IGRpZ2l0cyBpbnRvIHRoZSBEaWdpdExpc3QsIGFuZCBhZGp1c3QgdGhlCisgICAgICAgICAgICAvLyBleHBvbmVudCBhcyBuZWVkZWQuCisKKyAgICAgICAgICAgIGRpZ2l0cy5kZWNpbWFsQXQgPSBkaWdpdHMuY291bnQgPSAwOworICAgICAgICAgICAgY2hhciB6ZXJvID0gc3ltYm9scy5nZXRaZXJvRGlnaXQoKTsKKyAgICAgICAgICAgIGNoYXIgZGVjaW1hbCA9IGlzQ3VycmVuY3lGb3JtYXQgPworICAgICAgICAgICAgc3ltYm9scy5nZXRNb25ldGFyeURlY2ltYWxTZXBhcmF0b3IoKSA6IHN5bWJvbHMuZ2V0RGVjaW1hbFNlcGFyYXRvcigpOworICAgICAgICAgICAgY2hhciBncm91cGluZyA9IHN5bWJvbHMuZ2V0R3JvdXBpbmdTZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIFN0cmluZyBleHBvbmVudFNlcCA9IHN5bWJvbHMuZ2V0RXhwb25lbnRTZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIGJvb2xlYW4gc2F3RGVjaW1hbCA9IGZhbHNlOworICAgICAgICAgICAgYm9vbGVhbiBzYXdFeHBvbmVudCA9IGZhbHNlOworICAgICAgICAgICAgYm9vbGVhbiBzYXdEaWdpdCA9IGZhbHNlOworICAgICAgICAgICAgaW50IGV4cG9uZW50ID0gMDsgLy8gU2V0IHRvIHRoZSBleHBvbmVudCB2YWx1ZSwgaWYgYW55CisgICAgICAgICAgICBpbnQgZGlnaXQgPSAwOworCisgICAgICAgICAgICAvLyBXZSBoYXZlIHRvIHRyYWNrIGRpZ2l0Q291bnQgb3Vyc2VsdmVzLCBiZWNhdXNlIGRpZ2l0cy5jb3VudCB3aWxsCisgICAgICAgICAgICAvLyBwaW4gd2hlbiB0aGUgbWF4aW11bSBhbGxvd2FibGUgZGlnaXRzIGlzIHJlYWNoZWQuCisgICAgICAgICAgICBpbnQgZGlnaXRDb3VudCA9IDA7CisKKyAgICAgICAgICAgIGJhY2t1cCA9IC0xOworICAgICAgICAgICAgZm9yICg7IHBvc2l0aW9uIDwgdGV4dC5sZW5ndGgoKTsgKytwb3NpdGlvbikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjaGFyIGNoID0gdGV4dC5jaGFyQXQocG9zaXRpb24pOworCisgICAgICAgICAgICAgICAgLyogV2UgcmVjb2duaXplIGFsbCBkaWdpdCByYW5nZXMsIG5vdCBvbmx5IHRoZSBMYXRpbiBkaWdpdCByYW5nZQorICAgICAgICAgICAgICAgICAqICcwJy4uJzknLiAgV2UgZG8gc28gYnkgdXNpbmcgdGhlIENoYXJhY3Rlci5kaWdpdCgpIG1ldGhvZCwKKyAgICAgICAgICAgICAgICAgKiB3aGljaCBjb252ZXJ0cyBhIHZhbGlkIFVuaWNvZGUgZGlnaXQgdG8gdGhlIHJhbmdlIDAuLjkuCisgICAgICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAgICAgKiBUaGUgY2hhcmFjdGVyICdjaCcgbWF5IGJlIGEgZGlnaXQuICBJZiBzbywgcGxhY2UgaXRzIHZhbHVlCisgICAgICAgICAgICAgICAgICogZnJvbSAwIHRvIDkgaW4gJ2RpZ2l0Jy4gIEZpcnN0IHRyeSB1c2luZyB0aGUgbG9jYWxlIGRpZ2l0LAorICAgICAgICAgICAgICAgICAqIHdoaWNoIG1heSBvciBNQVkgTk9UIGJlIGEgc3RhbmRhcmQgVW5pY29kZSBkaWdpdCByYW5nZS4gIElmCisgICAgICAgICAgICAgICAgICogdGhpcyBmYWlscywgdHJ5IHVzaW5nIHRoZSBzdGFuZGFyZCBVbmljb2RlIGRpZ2l0IHJhbmdlcyBieQorICAgICAgICAgICAgICAgICAqIGNhbGxpbmcgQ2hhcmFjdGVyLmRpZ2l0KCkuICBJZiB0aGlzIGFsc28gZmFpbHMsIGRpZ2l0IHdpbGwKKyAgICAgICAgICAgICAgICAgKiBoYXZlIGEgdmFsdWUgb3V0c2lkZSB0aGUgcmFuZ2UgMC4uOS4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBkaWdpdCA9IGNoIC0gemVybzsKKyAgICAgICAgICAgICAgICBpZiAoZGlnaXQgPCAwIHx8IGRpZ2l0ID4gOSkgZGlnaXQgPSBDaGFyYWN0ZXIuZGlnaXQoY2gsIDEwKTsKKworICAgICAgICAgICAgICAgIGlmIChkaWdpdCA9PSAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ2FuY2VsIG91dCBiYWNrdXAgc2V0dGluZyAoc2VlIGdyb3VwaW5nIGhhbmRsZXIgYmVsb3cpCisgICAgICAgICAgICAgICAgICAgIGJhY2t1cCA9IC0xOyAvLyBEbyB0aGlzIEJFRk9SRSBjb250aW51ZSBzdGF0ZW1lbnQgYmVsb3chISEKKyAgICAgICAgICAgICAgICAgICAgc2F3RGlnaXQgPSB0cnVlOworCisgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBsZWFkaW5nIHplcm9zCisgICAgICAgICAgICAgICAgICAgIGlmIChkaWdpdHMuY291bnQgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIGxlYWRpbmcgemVyb3MgaW4gaW50ZWdlciBwYXJ0IG9mIG51bWJlci4KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2F3RGVjaW1hbCkgY29udGludWU7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGhhdmUgc2VlbiB0aGUgZGVjaW1hbCwgYnV0IG5vIHNpZ25pZmljYW50IGRpZ2l0cyB5ZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGVuIHdlIGFjY291bnQgZm9yIGxlYWRpbmcgemVyb3MgYnkgZGVjcmVtZW50aW5nIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGlnaXRzLmRlY2ltYWxBdCBpbnRvIG5lZ2F0aXZlIHZhbHVlcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlnaXRzLmRlY2ltYWxBdDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrZGlnaXRDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2l0cy5hcHBlbmQoKGNoYXIpKGRpZ2l0ICsgJzAnKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoZGlnaXQgPiAwICYmIGRpZ2l0IDw9IDkpIC8vIFtzaWNdIGRpZ2l0PT0wIGhhbmRsZWQgYWJvdmUKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHNhd0RpZ2l0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgKytkaWdpdENvdW50OworICAgICAgICAgICAgICAgICAgICBkaWdpdHMuYXBwZW5kKChjaGFyKShkaWdpdCArICcwJykpOworCisgICAgICAgICAgICAgICAgICAgIC8vIENhbmNlbCBvdXQgYmFja3VwIHNldHRpbmcgKHNlZSBncm91cGluZyBoYW5kbGVyIGJlbG93KQorICAgICAgICAgICAgICAgICAgICBiYWNrdXAgPSAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoIWlzRXhwb25lbnQgJiYgY2ggPT0gZGVjaW1hbCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIG9ubHkgcGFyc2luZyBpbnRlZ2Vycywgb3IgaWYgd2UgQUxSRUFEWSBzYXcgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIGRlY2ltYWwsIHRoZW4gZG9uJ3QgcGFyc2UgdGhpcyBvbmUuCisgICAgICAgICAgICAgICAgICAgIGlmIChpc1BhcnNlSW50ZWdlck9ubHkoKSB8fCBzYXdEZWNpbWFsKSBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGlnaXRzLmRlY2ltYWxBdCA9IGRpZ2l0Q291bnQ7IC8vIE5vdCBkaWdpdHMuY291bnQhCisgICAgICAgICAgICAgICAgICAgIHNhd0RlY2ltYWwgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmICghaXNFeHBvbmVudCAmJiBjaCA9PSBncm91cGluZyAmJiBpc0dyb3VwaW5nVXNlZCgpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNhd0RlY2ltYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSBncm91cGluZyBjaGFyYWN0ZXJzLCBpZiB3ZSBhcmUgdXNpbmcgdGhlbSwgYnV0IHJlcXVpcmUKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCB0aGV5IGJlIGZvbGxvd2VkIGJ5IGEgZGlnaXQuICBPdGhlcndpc2Ugd2UgYmFja3VwIGFuZAorICAgICAgICAgICAgICAgICAgICAvLyByZXByb2Nlc3MgdGhlbS4KKyAgICAgICAgICAgICAgICAgICAgYmFja3VwID0gcG9zaXRpb247CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKCFpc0V4cG9uZW50ICYmICFzYXdFeHBvbmVudCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQucmVnaW9uTWF0Y2hlcyhwb3NpdGlvbiwgZXhwb25lbnRTZXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIGV4cG9uZW50U2VwLmxlbmd0aCgpKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIFBhcnNlIHNpZ24sIGlmIHByZXNlbnQKKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBuZWdFeHAgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHBvcyA9IHBvc2l0aW9uICsgZXhwb25lbnRTZXAubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwb3MgPCB0ZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjaCA9IHRleHQuY2hhckF0KHBvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT0gc3ltYm9scy5nZXRQbHVzU2lnbigpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytwb3M7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09IHN5bWJvbHMuZ2V0TWludXNTaWduKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3BvczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdFeHAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgRGlnaXRMaXN0IGV4cG9uZW50RGlnaXRzID0gbmV3IERpZ2l0TGlzdCgpOworICAgICAgICAgICAgICAgICAgICBleHBvbmVudERpZ2l0cy5jb3VudCA9IDA7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChwb3MgPCB0ZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkaWdpdCA9IHRleHQuY2hhckF0KHBvcykgLSB6ZXJvOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpZ2l0IDwgMCB8fCBkaWdpdCA+IDkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdpdCA9IENoYXJhY3Rlci5kaWdpdChjaCwgMTApOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpZ2l0ID49IDAgJiYgZGlnaXQgPD0gOSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9uZW50RGlnaXRzLmFwcGVuZCgoY2hhcikoZGlnaXQgKyAnMCcpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3BvczsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChleHBvbmVudERpZ2l0cy5jb3VudCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cG9uZW50RGlnaXRzLmRlY2ltYWxBdCA9IGV4cG9uZW50RGlnaXRzLmNvdW50OworICAgICAgICAgICAgICAgICAgICAgICAgZXhwb25lbnQgPSAoaW50KSBleHBvbmVudERpZ2l0cy5nZXRMb25nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmVnRXhwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwb25lbnQgPSAtZXhwb25lbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IHBvczsgLy8gQWR2YW5jZSBwYXN0IHRoZSBleHBvbmVudAorICAgICAgICAgICAgICAgICAgICAgICAgc2F3RXhwb25lbnQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIFdoZXRoZXIgd2UgZmFpbCBvciBzdWNjZWVkLCB3ZSBleGl0IHRoaXMgbG9vcAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYmFja3VwICE9IC0xKSBwb3NpdGlvbiA9IGJhY2t1cDsKKworICAgICAgICAgICAgLy8gSWYgdGhlcmUgd2FzIG5vIGRlY2ltYWwgcG9pbnQgd2UgaGF2ZSBhbiBpbnRlZ2VyCisgICAgICAgICAgICBpZiAoIXNhd0RlY2ltYWwpIGRpZ2l0cy5kZWNpbWFsQXQgPSBkaWdpdENvdW50OyAvLyBOb3QgZGlnaXRzLmNvdW50IQorCisgICAgICAgICAgICAvLyBBZGp1c3QgZm9yIGV4cG9uZW50LCBpZiBhbnkKKyAgICAgICAgICAgIGRpZ2l0cy5kZWNpbWFsQXQgKz0gZXhwb25lbnQ7CisKKyAgICAgICAgICAgIC8vIElmIG5vbmUgb2YgdGhlIHRleHQgc3RyaW5nIHdhcyByZWNvZ25pemVkLiAgRm9yIGV4YW1wbGUsIHBhcnNlCisgICAgICAgICAgICAvLyAieCIgd2l0aCBwYXR0ZXJuICIjMC4wMCIgKHJldHVybiBpbmRleCBhbmQgZXJyb3IgaW5kZXggYm90aCAwKQorICAgICAgICAgICAgLy8gcGFyc2UgIiQiIHdpdGggcGF0dGVybiAiJCMwLjAwIi4gKHJldHVybiBpbmRleCAwIGFuZCBlcnJvciBpbmRleAorICAgICAgICAgICAgLy8gMSkuCisgICAgICAgICAgICBpZiAoIXNhd0RpZ2l0ICYmIGRpZ2l0Q291bnQgPT0gMCkgeworICAgICAgICAgICAgICAgIHBhcnNlUG9zaXRpb24uc2V0SW5kZXgob2xkU3RhcnQpOworICAgICAgICAgICAgICAgIC8vUFA6cGFyc2VQb3NpdGlvbi5lcnJvckluZGV4ID0gb2xkU3RhcnQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gY2hlY2sgZm9yIHBvc2l0aXZlU3VmZml4CisgICAgICAgIGlmIChnb3RQb3NpdGl2ZSkKKyAgICAgICAgICAgIGdvdFBvc2l0aXZlID0gdGV4dC5yZWdpb25NYXRjaGVzKHBvc2l0aW9uLHBvc2l0aXZlU3VmZml4LDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGl2ZVN1ZmZpeC5sZW5ndGgoKSk7CisgICAgICAgIGlmIChnb3ROZWdhdGl2ZSkKKyAgICAgICAgICAgIGdvdE5lZ2F0aXZlID0gdGV4dC5yZWdpb25NYXRjaGVzKHBvc2l0aW9uLG5lZ2F0aXZlU3VmZml4LDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWdhdGl2ZVN1ZmZpeC5sZW5ndGgoKSk7CisKKyAgICAgICAgLy8gaWYgYm90aCBtYXRjaCwgdGFrZSBsb25nZXN0CisgICAgICAgIGlmIChnb3RQb3NpdGl2ZSAmJiBnb3ROZWdhdGl2ZSkgeworICAgICAgICAgICAgaWYgKHBvc2l0aXZlU3VmZml4Lmxlbmd0aCgpID4gbmVnYXRpdmVTdWZmaXgubGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgZ290TmVnYXRpdmUgPSBmYWxzZTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHBvc2l0aXZlU3VmZml4Lmxlbmd0aCgpIDwgbmVnYXRpdmVTdWZmaXgubGVuZ3RoKCkpCisgICAgICAgICAgICAgICAgZ290UG9zaXRpdmUgPSBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGZhaWwgaWYgbmVpdGhlciBvciBib3RoCisgICAgICAgIGlmIChnb3RQb3NpdGl2ZSA9PSBnb3ROZWdhdGl2ZSkgeworICAgICAgICAgICAgLy9QUDpwYXJzZVBvc2l0aW9uLmVycm9ySW5kZXggPSBwb3NpdGlvbjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHBhcnNlUG9zaXRpb24uc2V0SW5kZXgocG9zaXRpb24gKworICAgICAgICAgICAgKGdvdFBvc2l0aXZlID8gcG9zaXRpdmVTdWZmaXgubGVuZ3RoKCkgOiBuZWdhdGl2ZVN1ZmZpeC5sZW5ndGgoKSkpOyAvLyBtYXJrIHN1Y2Nlc3MhCisKKyAgICAgICAgc3RhdHVzW1NUQVRVU19QT1NJVElWRV0gPSBnb3RQb3NpdGl2ZTsKKyAgICAgICAgaWYgKHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSA9PSBvbGRTdGFydCkgeworICAgICAgICAgICAgLy9QUDpwYXJzZVBvc2l0aW9uLmVycm9ySW5kZXggPSBwb3NpdGlvbjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBkZWNpbWFsIGZvcm1hdCBzeW1ib2xzLCB3aGljaCBpcyBnZW5lcmFsbHkgbm90IGNoYW5nZWQKKyAgICAgKiBieSB0aGUgcHJvZ3JhbW1lciBvciB1c2VyLgorICAgICAqIEByZXR1cm4gZGVzaXJlZCBEZWNpbWFsRm9ybWF0U3ltYm9scworICAgICAqIEBzZWUgRGVjaW1hbEZvcm1hdFN5bWJvbHMKKyAgICAgKi8KKyAgICBwdWJsaWMgRGVjaW1hbEZvcm1hdFN5bWJvbHMgZ2V0RGVjaW1hbEZvcm1hdFN5bWJvbHMoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyBkb24ndCBhbGxvdyBtdWx0aXBsZSByZWZlcmVuY2VzCisgICAgICAgICAgICByZXR1cm4gKERlY2ltYWxGb3JtYXRTeW1ib2xzKSBzeW1ib2xzLmNsb25lKCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBmb28pIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOyAvLyBzaG91bGQgbmV2ZXIgaGFwcGVuCisgICAgICAgIH0KKyAgICB9CisKKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGRlY2ltYWwgZm9ybWF0IHN5bWJvbHMsIHdoaWNoIGlzIGdlbmVyYWxseSBub3QgY2hhbmdlZAorICAgICAqIGJ5IHRoZSBwcm9ncmFtbWVyIG9yIHVzZXIuCisgICAgICogQHBhcmFtIG5ld1N5bWJvbHMgZGVzaXJlZCBEZWNpbWFsRm9ybWF0U3ltYm9scworICAgICAqIEBzZWUgRGVjaW1hbEZvcm1hdFN5bWJvbHMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXREZWNpbWFsRm9ybWF0U3ltYm9scyhEZWNpbWFsRm9ybWF0U3ltYm9scyBuZXdTeW1ib2xzKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyBkb24ndCBhbGxvdyBtdWx0aXBsZSByZWZlcmVuY2VzCisgICAgICAgICAgICBzeW1ib2xzID0gKERlY2ltYWxGb3JtYXRTeW1ib2xzKSBuZXdTeW1ib2xzLmNsb25lKCk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBmb28pIHsKKyAgICAgICAgICAgIC8vIHNob3VsZCBuZXZlciBoYXBwZW4KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEdldCB0aGUgcG9zaXRpdmUgcHJlZml4LgorICAgICAqIDxQPkV4YW1wbGVzOiArMTIzLCAkMTIzLCBzRnIxMjMKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldFBvc2l0aXZlUHJlZml4ICgpIHsKKyAgICAgICAgcmV0dXJuIHBvc2l0aXZlUHJlZml4OworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgcG9zaXRpdmUgcHJlZml4LgorICAgICAqIDxQPkV4YW1wbGVzOiArMTIzLCAkMTIzLCBzRnIxMjMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRQb3NpdGl2ZVByZWZpeCAoU3RyaW5nIG5ld1ZhbHVlKSB7CisgICAgICAgIHBvc2l0aXZlUHJlZml4ID0gbmV3VmFsdWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0IHRoZSBuZWdhdGl2ZSBwcmVmaXguCisgICAgICogPFA+RXhhbXBsZXM6IC0xMjMsICgkMTIzKSAod2l0aCBuZWdhdGl2ZSBzdWZmaXgpLCBzRnItMTIzCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXROZWdhdGl2ZVByZWZpeCAoKSB7CisgICAgICAgIHJldHVybiBuZWdhdGl2ZVByZWZpeDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIG5lZ2F0aXZlIHByZWZpeC4KKyAgICAgKiA8UD5FeGFtcGxlczogLTEyMywgKCQxMjMpICh3aXRoIG5lZ2F0aXZlIHN1ZmZpeCksIHNGci0xMjMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXROZWdhdGl2ZVByZWZpeCAoU3RyaW5nIG5ld1ZhbHVlKSB7CisgICAgICAgIG5lZ2F0aXZlUHJlZml4ID0gbmV3VmFsdWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0IHRoZSBwb3NpdGl2ZSBzdWZmaXguCisgICAgICogPFA+RXhhbXBsZTogMTIzJQorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0UG9zaXRpdmVTdWZmaXggKCkgeworICAgICAgICByZXR1cm4gcG9zaXRpdmVTdWZmaXg7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBwb3NpdGl2ZSBzdWZmaXguCisgICAgICogPFA+RXhhbXBsZTogMTIzJQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFBvc2l0aXZlU3VmZml4IChTdHJpbmcgbmV3VmFsdWUpIHsKKyAgICAgICAgcG9zaXRpdmVTdWZmaXggPSBuZXdWYWx1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXQgdGhlIG5lZ2F0aXZlIHN1ZmZpeC4KKyAgICAgKiA8UD5FeGFtcGxlczogLTEyMyUsICgkMTIzKSAod2l0aCBwb3NpdGl2ZSBzdWZmaXhlcykKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldE5lZ2F0aXZlU3VmZml4ICgpIHsKKyAgICAgICAgcmV0dXJuIG5lZ2F0aXZlU3VmZml4OworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgcG9zaXRpdmUgc3VmZml4LgorICAgICAqIDxQPkV4YW1wbGVzOiAxMjMlCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TmVnYXRpdmVTdWZmaXggKFN0cmluZyBuZXdWYWx1ZSkgeworICAgICAgICBuZWdhdGl2ZVN1ZmZpeCA9IG5ld1ZhbHVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldCB0aGUgbXVsdGlwbGllciBmb3IgdXNlIGluIHBlcmNlbnQsIHBlcm1pbGwsIGV0Yy4KKyAgICAgKiBGb3IgYSBwZXJjZW50YWdlLCBzZXQgdGhlIHN1ZmZpeGVzIHRvIGhhdmUgIiUiIGFuZCB0aGUgbXVsdGlwbGllciB0byBiZSAxMDAuCisgICAgICogKEZvciBBcmFiaWMsIHVzZSBhcmFiaWMgcGVyY2VudCBzeW1ib2wpLgorICAgICAqIEZvciBhIHBlcm1pbGwsIHNldCB0aGUgc3VmZml4ZXMgdG8gaGF2ZSAiXHUyMDMxIiBhbmQgdGhlIG11bHRpcGxpZXIgdG8gYmUgMTAwMC4KKyAgICAgKiA8UD5FeGFtcGxlczogd2l0aCAxMDAsIDEuMjMgLT4gIjEyMyIsIGFuZCAiMTIzIiAtPiAxLjIzCisgICAgICovCisgICAgcHVibGljIGludCBnZXRNdWx0aXBsaWVyICgpIHsKKyAgICAgICAgcmV0dXJuIG11bHRpcGxpZXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBtdWx0aXBsaWVyIGZvciB1c2UgaW4gcGVyY2VudCwgcGVybWlsbCwgZXRjLgorICAgICAqIEZvciBhIHBlcmNlbnRhZ2UsIHNldCB0aGUgc3VmZml4ZXMgdG8gaGF2ZSAiJSIgYW5kIHRoZSBtdWx0aXBsaWVyIHRvIGJlIDEwMC4KKyAgICAgKiAoRm9yIEFyYWJpYywgdXNlIGFyYWJpYyBwZXJjZW50IHN5bWJvbCkuCisgICAgICogRm9yIGEgcGVybWlsbCwgc2V0IHRoZSBzdWZmaXhlcyB0byBoYXZlICJcdTIwMzEiIGFuZCB0aGUgbXVsdGlwbGllciB0byBiZSAxMDAwLgorICAgICAqIDxQPkV4YW1wbGVzOiB3aXRoIDEwMCwgMS4yMyAtPiAiMTIzIiwgYW5kICIxMjMiIC0+IDEuMjMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRNdWx0aXBsaWVyIChpbnQgbmV3VmFsdWUpIHsKKyAgICAgICAgaWYgKG5ld1ZhbHVlIDw9IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkJhZCBtdWx0aXBsaWVyOiAiICsgbmV3VmFsdWUpOworICAgICAgICB9CisgICAgICAgIG11bHRpcGxpZXIgPSBuZXdWYWx1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogR2V0IHRoZSByb3VuZGluZyBpbmNyZW1lbnQuCisgICAgICogQHJldHVybiBBIHBvc2l0aXZlIHJvdW5kaW5nIGluY3JlbWVudCwgb3IgPGNvZGU+bnVsbDwvY29kZT4gaWYgcm91bmRpbmcKKyAgICAgKiBpcyBub3QgaW4gZWZmZWN0LgorICAgICAqIEBzZWUgI3NldFJvdW5kaW5nSW5jcmVtZW50CisgICAgICogQHNlZSAjZ2V0Um91bmRpbmdNb2RlCisgICAgICogQHNlZSAjc2V0Um91bmRpbmdNb2RlCisgICAgICovCisgICAgcHVibGljIGphdmEubWF0aC5CaWdEZWNpbWFsIGdldFJvdW5kaW5nSW5jcmVtZW50KCkgeworICAgICAgICByZXR1cm4gcm91bmRpbmdJbmNyZW1lbnQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFNldCB0aGUgcm91bmRpbmcgaW5jcmVtZW50LiAgVGhpcyBtZXRob2QgYWxzbyBjb250cm9scyB3aGV0aGVyCisgICAgICogcm91bmRpbmcgaXMgZW5hYmxlZC4KKyAgICAgKiBAcGFyYW0gbmV3VmFsdWUgQSBwb3NpdGl2ZSByb3VuZGluZyBpbmNyZW1lbnQsIG9yIDxjb2RlPm51bGw8L2NvZGU+IG9yCisgICAgICogPGNvZGU+QmlnRGVjaW1hbCgwLjApPC9jb2RlPiB0byBkaXNhYmxlIHJvdW5kaW5nLgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIDxjb2RlPm5ld1ZhbHVlPC9jb2RlPiBpcyA8IDAuMAorICAgICAqIEBzZWUgI2dldFJvdW5kaW5nSW5jcmVtZW50CisgICAgICogQHNlZSAjZ2V0Um91bmRpbmdNb2RlCisgICAgICogQHNlZSAjc2V0Um91bmRpbmdNb2RlCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Um91bmRpbmdJbmNyZW1lbnQoamF2YS5tYXRoLkJpZ0RlY2ltYWwgbmV3VmFsdWUpIHsKKyAgICAgICAgaW50IGkgPSBuZXdWYWx1ZSA9PSBudWxsCisgICAgICAgICAgICAgICAgPyAwIDogbmV3VmFsdWUuY29tcGFyZVRvKGphdmEubWF0aC5CaWdEZWNpbWFsLnZhbHVlT2YoMCkpOworICAgICAgICBpZiAoaSA8IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgcm91bmRpbmcgaW5jcmVtZW50Iik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGkgPT0gMCkgeworICAgICAgICAgICAgcm91bmRpbmdJbmNyZW1lbnQgPSBudWxsOworICAgICAgICAgICAgcm91bmRpbmdEb3VibGUgPSAwLjA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByb3VuZGluZ0luY3JlbWVudCA9IG5ld1ZhbHVlOworICAgICAgICAgICAgcm91bmRpbmdEb3VibGUgPSBuZXdWYWx1ZS5kb3VibGVWYWx1ZSgpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBTZXQgdGhlIHJvdW5kaW5nIGluY3JlbWVudC4gIFRoaXMgbWV0aG9kIGFsc28gY29udHJvbHMgd2hldGhlcgorICAgICAqIHJvdW5kaW5nIGlzIGVuYWJsZWQuCisgICAgICogQHBhcmFtIG5ld1ZhbHVlIEEgcG9zaXRpdmUgcm91bmRpbmcgaW5jcmVtZW50LCBvciAwLjAgdG8gZGlzYWJsZQorICAgICAqIHJvdW5kaW5nLgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIDxjb2RlPm5ld1ZhbHVlPC9jb2RlPiBpcyA8IDAuMAorICAgICAqIEBzZWUgI2dldFJvdW5kaW5nSW5jcmVtZW50CisgICAgICogQHNlZSAjZ2V0Um91bmRpbmdNb2RlCisgICAgICogQHNlZSAjc2V0Um91bmRpbmdNb2RlCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Um91bmRpbmdJbmNyZW1lbnQoZG91YmxlIG5ld1ZhbHVlKSB7CisgICAgICAgIGlmIChuZXdWYWx1ZSA8IDAuMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCByb3VuZGluZyBpbmNyZW1lbnQiKTsKKyAgICAgICAgfQorICAgICAgICByb3VuZGluZ0RvdWJsZSA9IG5ld1ZhbHVlOworICAgICAgICByb3VuZGluZ0luY3JlbWVudCA9IChuZXdWYWx1ZSA+IDAuMCkKKyAgICAgICAgICAgID8gbmV3IGphdmEubWF0aC5CaWdEZWNpbWFsKFN0cmluZy52YWx1ZU9mKG5ld1ZhbHVlKSkgOiBudWxsOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogR2V0IHRoZSByb3VuZGluZyBtb2RlLgorICAgICAqIEByZXR1cm4gQSByb3VuZGluZyBtb2RlLCBiZXR3ZWVuIDxjb2RlPkJpZ0RlY2ltYWwuUk9VTkRfVVA8L2NvZGU+CisgICAgICogYW5kIDxjb2RlPkJpZ0RlY2ltYWwuUk9VTkRfVU5ORUNFU1NBUlk8L2NvZGU+LgorICAgICAqIEBzZWUgI3NldFJvdW5kaW5nSW5jcmVtZW50CisgICAgICogQHNlZSAjZ2V0Um91bmRpbmdJbmNyZW1lbnQKKyAgICAgKiBAc2VlICNzZXRSb3VuZGluZ01vZGUKKyAgICAgKiBAc2VlIGphdmEubWF0aC5CaWdEZWNpbWFsCisgICAgICovCisgICAgcHVibGljIGludCBnZXRSb3VuZGluZ01vZGUoKSB7CisgICAgICAgIHJldHVybiByb3VuZGluZ01vZGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFNldCB0aGUgcm91bmRpbmcgbW9kZS4gIFRoaXMgaGFzIG5vIGVmZmVjdCB1bmxlc3MgdGhlIHJvdW5kaW5nCisgICAgICogaW5jcmVtZW50IGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLgorICAgICAqIEBwYXJhbSByb3VuZGluZ01vZGUgQSByb3VuZGluZyBtb2RlLCBiZXR3ZWVuCisgICAgICogPGNvZGU+QmlnRGVjaW1hbC5ST1VORF9VUDwvY29kZT4gYW5kCisgICAgICogPGNvZGU+QmlnRGVjaW1hbC5ST1VORF9VTk5FQ0VTU0FSWTwvY29kZT4uCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgPGNvZGU+cm91bmRpbmdNb2RlPC9jb2RlPgorICAgICAqIGlzIHVucmVjb2duaXplZC4KKyAgICAgKiBAc2VlICNzZXRSb3VuZGluZ0luY3JlbWVudAorICAgICAqIEBzZWUgI2dldFJvdW5kaW5nSW5jcmVtZW50CisgICAgICogQHNlZSAjZ2V0Um91bmRpbmdNb2RlCisgICAgICogQHNlZSBqYXZhLm1hdGguQmlnRGVjaW1hbAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFJvdW5kaW5nTW9kZShpbnQgcm91bmRpbmdNb2RlKSB7CisgICAgICAgIGlmIChyb3VuZGluZ01vZGUgPCBqYXZhLm1hdGguQmlnRGVjaW1hbC5ST1VORF9VUAorICAgICAgICAgICAgfHwgcm91bmRpbmdNb2RlID4gamF2YS5tYXRoLkJpZ0RlY2ltYWwuUk9VTkRfVU5ORUNFU1NBUlkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgcm91bmRpbmcgbW9kZTogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHJvdW5kaW5nTW9kZSk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5yb3VuZGluZ01vZGUgPSByb3VuZGluZ01vZGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIEdldCB0aGUgd2lkdGggdG8gd2hpY2ggdGhlIG91dHB1dCBvZiA8Y29kZT5mb3JtYXQoKTwvY29kZT4gaXMgcGFkZGVkLgorICAgICAqIEByZXR1cm4gdGhlIGZvcm1hdCB3aWR0aCwgb3IgemVybyBpZiBubyBwYWRkaW5nIGlzIGluIGVmZmVjdAorICAgICAqIEBzZWUgI3NldEZvcm1hdFdpZHRoCisgICAgICogQHNlZSAjZ2V0UGFkQ2hhcmFjdGVyCisgICAgICogQHNlZSAjc2V0UGFkQ2hhcmFjdGVyCisgICAgICogQHNlZSAjZ2V0UGFkUG9zaXRpb24KKyAgICAgKiBAc2VlICNzZXRQYWRQb3NpdGlvbgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0Rm9ybWF0V2lkdGgoKSB7CisgICAgICAgIHJldHVybiBmb3JtYXRXaWR0aDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogU2V0IHRoZSB3aWR0aCB0byB3aGljaCB0aGUgb3V0cHV0IG9mIDxjb2RlPmZvcm1hdCgpPC9jb2RlPiBpcyBwYWRkZWQuCisgICAgICogVGhpcyBtZXRob2QgYWxzbyBjb250cm9scyB3aGV0aGVyIHBhZGRpbmcgaXMgZW5hYmxlZC4KKyAgICAgKiBAcGFyYW0gd2lkdGggdGhlIHdpZHRoIHRvIHdoaWNoIHRvIHBhZCB0aGUgcmVzdWx0IG9mCisgICAgICogPGNvZGU+Zm9ybWF0KCk8L2NvZGU+LCBvciB6ZXJvIHRvIGRpc2FibGUgcGFkZGluZworICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIDxjb2RlPndpZHRoPC9jb2RlPiBpcyA8IDAKKyAgICAgKiBAc2VlICNnZXRGb3JtYXRXaWR0aAorICAgICAqIEBzZWUgI2dldFBhZENoYXJhY3RlcgorICAgICAqIEBzZWUgI3NldFBhZENoYXJhY3RlcgorICAgICAqIEBzZWUgI2dldFBhZFBvc2l0aW9uCisgICAgICogQHNlZSAjc2V0UGFkUG9zaXRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRGb3JtYXRXaWR0aChpbnQgd2lkdGgpIHsKKyAgICAgICAgaWYgKHdpZHRoIDwgMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCBmb3JtYXQgd2lkdGgiKTsKKyAgICAgICAgfQorICAgICAgICBmb3JtYXRXaWR0aCA9IHdpZHRoOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBHZXQgdGhlIGNoYXJhY3RlciB1c2VkIHRvIHBhZCB0byB0aGUgZm9ybWF0IHdpZHRoLiAgVGhlIGRlZmF1bHQgaXMgJyAnLgorICAgICAqIEByZXR1cm4gdGhlIHBhZCBjaGFyYWN0ZXIKKyAgICAgKiBAc2VlICNzZXRGb3JtYXRXaWR0aAorICAgICAqIEBzZWUgI2dldEZvcm1hdFdpZHRoCisgICAgICogQHNlZSAjc2V0UGFkQ2hhcmFjdGVyCisgICAgICogQHNlZSAjZ2V0UGFkUG9zaXRpb24KKyAgICAgKiBAc2VlICNzZXRQYWRQb3NpdGlvbgorICAgICAqLworICAgIHB1YmxpYyBjaGFyIGdldFBhZENoYXJhY3RlcigpIHsKKyAgICAgICAgcmV0dXJuIHBhZDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogU2V0IHRoZSBjaGFyYWN0ZXIgdXNlZCB0byBwYWQgdG8gdGhlIGZvcm1hdCB3aWR0aC4gIFRoaXMgaGFzIG5vIGVmZmVjdAorICAgICAqIHVubGVzcyBwYWRkaW5nIGlzIGVuYWJsZWQuCisgICAgICogQHBhcmFtIHBhZENoYXIgdGhlIHBhZCBjaGFyYWN0ZXIKKyAgICAgKiBAc2VlICNzZXRGb3JtYXRXaWR0aAorICAgICAqIEBzZWUgI2dldEZvcm1hdFdpZHRoCisgICAgICogQHNlZSAjZ2V0UGFkQ2hhcmFjdGVyCisgICAgICogQHNlZSAjZ2V0UGFkUG9zaXRpb24KKyAgICAgKiBAc2VlICNzZXRQYWRQb3NpdGlvbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFBhZENoYXJhY3RlcihjaGFyIHBhZENoYXIpIHsKKyAgICAgICAgcGFkID0gcGFkQ2hhcjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogR2V0IHRoZSBwb3NpdGlvbiBhdCB3aGljaCBwYWRkaW5nIHdpbGwgdGFrZSBwbGFjZS4gIFRoaXMgaXMgdGhlIGxvY2F0aW9uCisgICAgICogYXQgd2hpY2ggcGFkZGluZyB3aWxsIGJlIGluc2VydGVkIGlmIHRoZSByZXN1bHQgb2YgPGNvZGU+Zm9ybWF0KCk8L2NvZGU+CisgICAgICogaXMgc2hvcnRlciB0aGFuIHRoZSBmb3JtYXQgd2lkdGguCisgICAgICogQHJldHVybiB0aGUgcGFkIHBvc2l0aW9uLCBvbmUgb2YgPGNvZGU+UEFEX0JFRk9SRV9QUkVGSVg8L2NvZGU+LAorICAgICAqIDxjb2RlPlBBRF9BRlRFUl9QUkVGSVg8L2NvZGU+LCA8Y29kZT5QQURfQkVGT1JFX1NVRkZJWDwvY29kZT4sIG9yCisgICAgICogPGNvZGU+UEFEX0FGVEVSX1NVRkZJWDwvY29kZT4uCisgICAgICogQHNlZSAjc2V0Rm9ybWF0V2lkdGgKKyAgICAgKiBAc2VlICNnZXRGb3JtYXRXaWR0aAorICAgICAqIEBzZWUgI3NldFBhZENoYXJhY3RlcgorICAgICAqIEBzZWUgI2dldFBhZENoYXJhY3RlcgorICAgICAqIEBzZWUgI3NldFBhZFBvc2l0aW9uCisgICAgICogQHNlZSAjUEFEX0JFRk9SRV9QUkVGSVgKKyAgICAgKiBAc2VlICNQQURfQUZURVJfUFJFRklYCisgICAgICogQHNlZSAjUEFEX0JFRk9SRV9TVUZGSVgKKyAgICAgKiBAc2VlICNQQURfQUZURVJfU1VGRklYCisgICAgICovCisgICAgcHVibGljIGludCBnZXRQYWRQb3NpdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIHBhZFBvc2l0aW9uOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBTZXQgdGhlIHBvc2l0aW9uIGF0IHdoaWNoIHBhZGRpbmcgd2lsbCB0YWtlIHBsYWNlLiAgVGhpcyBpcyB0aGUgbG9jYXRpb24KKyAgICAgKiBhdCB3aGljaCBwYWRkaW5nIHdpbGwgYmUgaW5zZXJ0ZWQgaWYgdGhlIHJlc3VsdCBvZiA8Y29kZT5mb3JtYXQoKTwvY29kZT4KKyAgICAgKiBpcyBzaG9ydGVyIHRoYW4gdGhlIGZvcm1hdCB3aWR0aC4gIFRoaXMgaGFzIG5vIGVmZmVjdCB1bmxlc3MgcGFkZGluZyBpcworICAgICAqIGVuYWJsZWQuCisgICAgICogQHBhcmFtIHBhZFBvcyB0aGUgcGFkIHBvc2l0aW9uLCBvbmUgb2YgPGNvZGU+UEFEX0JFRk9SRV9QUkVGSVg8L2NvZGU+LAorICAgICAqIDxjb2RlPlBBRF9BRlRFUl9QUkVGSVg8L2NvZGU+LCA8Y29kZT5QQURfQkVGT1JFX1NVRkZJWDwvY29kZT4sIG9yCisgICAgICogPGNvZGU+UEFEX0FGVEVSX1NVRkZJWDwvY29kZT4uCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHBhZCBwb3NpdGlvbiBpbgorICAgICAqIHVucmVjb2duaXplZAorICAgICAqIEBzZWUgI3NldEZvcm1hdFdpZHRoCisgICAgICogQHNlZSAjZ2V0Rm9ybWF0V2lkdGgKKyAgICAgKiBAc2VlICNzZXRQYWRDaGFyYWN0ZXIKKyAgICAgKiBAc2VlICNnZXRQYWRDaGFyYWN0ZXIKKyAgICAgKiBAc2VlICNnZXRQYWRQb3NpdGlvbgorICAgICAqIEBzZWUgI1BBRF9CRUZPUkVfUFJFRklYCisgICAgICogQHNlZSAjUEFEX0FGVEVSX1BSRUZJWAorICAgICAqIEBzZWUgI1BBRF9CRUZPUkVfU1VGRklYCisgICAgICogQHNlZSAjUEFEX0FGVEVSX1NVRkZJWAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFBhZFBvc2l0aW9uKGludCBwYWRQb3MpIHsKKyAgICAgICAgaWYgKHBhZFBvcyA8IFBBRF9CRUZPUkVfUFJFRklYIHx8IHBhZFBvcyA+IFBBRF9BRlRFUl9TVUZGSVgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgcGFkIHBvc2l0aW9uIik7CisgICAgICAgIH0KKyAgICAgICAgcGFkUG9zaXRpb24gPSBwYWRQb3M7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFJldHVybiB3aGV0aGVyIG9yIG5vdCBzY2llbnRpZmljIG5vdGF0aW9uIGlzIHVzZWQuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoaXMgb2JqZWN0IGZvcm1hdHMgYW5kIHBhcnNlcyBzY2llbnRpZmljIG5vdGF0aW9uCisgICAgICogQHNlZSAjc2V0U2NpZW50aWZpY05vdGF0aW9uCisgICAgICogQHNlZSAjZ2V0TWluaW11bUV4cG9uZW50RGlnaXRzCisgICAgICogQHNlZSAjc2V0TWluaW11bUV4cG9uZW50RGlnaXRzCisgICAgICogQHNlZSAjaXNFeHBvbmVudFNpZ25BbHdheXNTaG93bgorICAgICAqIEBzZWUgI3NldEV4cG9uZW50U2lnbkFsd2F5c1Nob3duCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNTY2llbnRpZmljTm90YXRpb24oKSB7CisgICAgICAgIHJldHVybiB1c2VFeHBvbmVudGlhbE5vdGF0aW9uOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBTZXQgd2hldGhlciBvciBub3Qgc2NpZW50aWZpYyBub3RhdGlvbiBpcyB1c2VkLgorICAgICAqIEBwYXJhbSB1c2VTY2llbnRpZmljIHRydWUgaWYgdGhpcyBvYmplY3QgZm9ybWF0cyBhbmQgcGFyc2VzIHNjaWVudGlmaWMKKyAgICAgKiBub3RhdGlvbgorICAgICAqIEBzZWUgI2lzU2NpZW50aWZpY05vdGF0aW9uCisgICAgICogQHNlZSAjZ2V0TWluaW11bUV4cG9uZW50RGlnaXRzCisgICAgICogQHNlZSAjc2V0TWluaW11bUV4cG9uZW50RGlnaXRzCisgICAgICogQHNlZSAjaXNFeHBvbmVudFNpZ25BbHdheXNTaG93bgorICAgICAqIEBzZWUgI3NldEV4cG9uZW50U2lnbkFsd2F5c1Nob3duCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0U2NpZW50aWZpY05vdGF0aW9uKGJvb2xlYW4gdXNlU2NpZW50aWZpYykgeworICAgICAgICB1c2VFeHBvbmVudGlhbE5vdGF0aW9uID0gdXNlU2NpZW50aWZpYzsKKyAgICAgICAgaWYgKHVzZUV4cG9uZW50aWFsTm90YXRpb24gJiYgbWluRXhwb25lbnREaWdpdHMgPCAxKSB7CisgICAgICAgICAgICBtaW5FeHBvbmVudERpZ2l0cyA9IDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogUmV0dXJuIHRoZSBtaW5pbXVtIGV4cG9uZW50IGRpZ2l0cyB0aGF0IHdpbGwgYmUgc2hvd24uCisgICAgICogQHJldHVybiB0aGUgbWluaW11bSBleHBvbmVudCBkaWdpdHMgdGhhdCB3aWxsIGJlIHNob3duCisgICAgICogQHNlZSAjc2V0U2NpZW50aWZpY05vdGF0aW9uCisgICAgICogQHNlZSAjaXNTY2llbnRpZmljTm90YXRpb24KKyAgICAgKiBAc2VlICNzZXRNaW5pbXVtRXhwb25lbnREaWdpdHMKKyAgICAgKiBAc2VlICNpc0V4cG9uZW50U2lnbkFsd2F5c1Nob3duCisgICAgICogQHNlZSAjc2V0RXhwb25lbnRTaWduQWx3YXlzU2hvd24KKyAgICAgKi8KKyAgICBwdWJsaWMgYnl0ZSBnZXRNaW5pbXVtRXhwb25lbnREaWdpdHMoKSB7CisgICAgICAgIHJldHVybiBtaW5FeHBvbmVudERpZ2l0czsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFNldCB0aGUgbWluaW11bSBleHBvbmVudCBkaWdpdHMgdGhhdCB3aWxsIGJlIHNob3duLiAgVGhpcyBoYXMgbm8KKyAgICAgKiBlZmZlY3QgdW5sZXNzIHNjaWVudGlmaWMgbm90YXRpb24gaXMgaW4gdXNlLgorICAgICAqIEBwYXJhbSBtaW5FeHBEaWcgYSB2YWx1ZSA+PSAxIGluZGljYXRpbmcgdGhlIGZld2VzdCBleHBvbmVudCBkaWdpdHMKKyAgICAgKiB0aGF0IHdpbGwgYmUgc2hvd24KKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiA8Y29kZT5taW5FeHBEaWc8L2NvZGU+IDwgMQorICAgICAqIEBzZWUgI3NldFNjaWVudGlmaWNOb3RhdGlvbgorICAgICAqIEBzZWUgI2lzU2NpZW50aWZpY05vdGF0aW9uCisgICAgICogQHNlZSAjZ2V0TWluaW11bUV4cG9uZW50RGlnaXRzCisgICAgICogQHNlZSAjaXNFeHBvbmVudFNpZ25BbHdheXNTaG93bgorICAgICAqIEBzZWUgI3NldEV4cG9uZW50U2lnbkFsd2F5c1Nob3duCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TWluaW11bUV4cG9uZW50RGlnaXRzKGJ5dGUgbWluRXhwRGlnKSB7CisgICAgICAgIGlmIChtaW5FeHBEaWcgPCAxKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJFeHBvbmVudCBkaWdpdHMgbXVzdCBiZSA+PSAxIik7CisgICAgICAgIH0KKyAgICAgICAgbWluRXhwb25lbnREaWdpdHMgPSBtaW5FeHBEaWc7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFJldHVybiB3aGV0aGVyIHRoZSBleHBvbmVudCBzaWduIGlzIGFsd2F5cyBzaG93bi4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGV4cG9uZW50IGlzIGFsd2F5cyBwcmVmaXhlZCB3aXRoIGVpdGhlciB0aGUKKyAgICAgKiBsb2NhbGl6ZWQgbWludXMgc2lnbiBvciB0aGUgbG9jYWxpemVkIHBsdXMgc2lnbiwgZmFsc2UgaWYgb25seSBuZWdhdGl2ZQorICAgICAqIGV4cG9uZW50cyBhcmUgcHJlZml4ZWQgd2l0aCB0aGUgbG9jYWxpemVkIG1pbnVzIHNpZ24uCisgICAgICogQHNlZSAjc2V0U2NpZW50aWZpY05vdGF0aW9uCisgICAgICogQHNlZSAjaXNTY2llbnRpZmljTm90YXRpb24KKyAgICAgKiBAc2VlICNzZXRNaW5pbXVtRXhwb25lbnREaWdpdHMKKyAgICAgKiBAc2VlICNnZXRNaW5pbXVtRXhwb25lbnREaWdpdHMKKyAgICAgKiBAc2VlICNzZXRFeHBvbmVudFNpZ25BbHdheXNTaG93bgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzRXhwb25lbnRTaWduQWx3YXlzU2hvd24oKSB7CisgICAgICAgIHJldHVybiBleHBvbmVudFNpZ25BbHdheXNTaG93bjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogU2V0IHdoZXRoZXIgdGhlIGV4cG9uZW50IHNpZ24gaXMgYWx3YXlzIHNob3duLiAgVGhpcyBoYXMgbm8gZWZmZWN0CisgICAgICogdW5sZXNzIHNjaWVudGlmaWMgbm90YXRpb24gaXMgaW4gdXNlLgorICAgICAqIEBwYXJhbSBleHBTaWduQWx3YXlzIHRydWUgaWYgdGhlIGV4cG9uZW50IGlzIGFsd2F5cyBwcmVmaXhlZCB3aXRoIGVpdGhlcgorICAgICAqIHRoZSBsb2NhbGl6ZWQgbWludXMgc2lnbiBvciB0aGUgbG9jYWxpemVkIHBsdXMgc2lnbiwgZmFsc2UgaWYgb25seQorICAgICAqIG5lZ2F0aXZlIGV4cG9uZW50cyBhcmUgcHJlZml4ZWQgd2l0aCB0aGUgbG9jYWxpemVkIG1pbnVzIHNpZ24uCisgICAgICogQHNlZSAjc2V0U2NpZW50aWZpY05vdGF0aW9uCisgICAgICogQHNlZSAjaXNTY2llbnRpZmljTm90YXRpb24KKyAgICAgKiBAc2VlICNzZXRNaW5pbXVtRXhwb25lbnREaWdpdHMKKyAgICAgKiBAc2VlICNnZXRNaW5pbXVtRXhwb25lbnREaWdpdHMKKyAgICAgKiBAc2VlICNpc0V4cG9uZW50U2lnbkFsd2F5c1Nob3duCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0RXhwb25lbnRTaWduQWx3YXlzU2hvd24oYm9vbGVhbiBleHBTaWduQWx3YXlzKSB7CisgICAgICAgIGV4cG9uZW50U2lnbkFsd2F5c1Nob3duID0gZXhwU2lnbkFsd2F5czsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGdyb3VwaW5nIHNpemUuIEdyb3VwaW5nIHNpemUgaXMgdGhlIG51bWJlciBvZiBkaWdpdHMgYmV0d2VlbgorICAgICAqIGdyb3VwaW5nIHNlcGFyYXRvcnMgaW4gdGhlIGludGVnZXIgcG9ydGlvbiBvZiBhIG51bWJlci4gIEZvciBleGFtcGxlLAorICAgICAqIGluIHRoZSBudW1iZXIgIjEyMyw0NTYuNzgiLCB0aGUgZ3JvdXBpbmcgc2l6ZSBpcyAzLgorICAgICAqIEBzZWUgI3NldEdyb3VwaW5nU2l6ZQorICAgICAqIEBzZWUgTnVtYmVyRm9ybWF0I2lzR3JvdXBpbmdVc2VkCisgICAgICogQHNlZSBEZWNpbWFsRm9ybWF0U3ltYm9scyNnZXRHcm91cGluZ1NlcGFyYXRvcgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0R3JvdXBpbmdTaXplICgpIHsKKyAgICAgICAgcmV0dXJuIGdyb3VwaW5nU2l6ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGdyb3VwaW5nIHNpemUuIEdyb3VwaW5nIHNpemUgaXMgdGhlIG51bWJlciBvZiBkaWdpdHMgYmV0d2VlbgorICAgICAqIGdyb3VwaW5nIHNlcGFyYXRvcnMgaW4gdGhlIGludGVnZXIgcG9ydGlvbiBvZiBhIG51bWJlci4gIEZvciBleGFtcGxlLAorICAgICAqIGluIHRoZSBudW1iZXIgIjEyMyw0NTYuNzgiLCB0aGUgZ3JvdXBpbmcgc2l6ZSBpcyAzLgorICAgICAqIEBzZWUgI2dldEdyb3VwaW5nU2l6ZQorICAgICAqIEBzZWUgTnVtYmVyRm9ybWF0I3NldEdyb3VwaW5nVXNlZAorICAgICAqIEBzZWUgRGVjaW1hbEZvcm1hdFN5bWJvbHMjc2V0R3JvdXBpbmdTZXBhcmF0b3IKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRHcm91cGluZ1NpemUgKGludCBuZXdWYWx1ZSkgeworICAgICAgICBncm91cGluZ1NpemUgPSAoYnl0ZSluZXdWYWx1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHNlY29uZGFyeSBncm91cGluZyBzaXplLiBJbiBzb21lIGxvY2FsZXMgb25lCisgICAgICogZ3JvdXBpbmcgaW50ZXJ2YWwgaXMgdXNlZCBmb3IgdGhlIGxlYXN0IHNpZ25pZmljYW50IGludGVnZXIKKyAgICAgKiBkaWdpdHMgKHRoZSBwcmltYXJ5IGdyb3VwaW5nIHNpemUpLCBhbmQgYW5vdGhlciBpcyB1c2VkIGZvciBhbGwKKyAgICAgKiBvdGhlcnMgKHRoZSBzZWNvbmRhcnkgZ3JvdXBpbmcgc2l6ZSkuICBBIGZvcm1hdHRlciBzdXBwb3J0aW5nIGEKKyAgICAgKiBzZWNvbmRhcnkgZ3JvdXBpbmcgc2l6ZSB3aWxsIHJldHVybiBhIHBvc2l0aXZlIGludGVnZXIgdW5lcXVhbAorICAgICAqIHRvIHRoZSBwcmltYXJ5IGdyb3VwaW5nIHNpemUgcmV0dXJuZWQgYnkKKyAgICAgKiA8Y29kZT5nZXRHcm91cGluZ1NpemUoKTwvY29kZT4uICBGb3IgZXhhbXBsZSwgaWYgdGhlIHByaW1hcnkKKyAgICAgKiBncm91cGluZyBzaXplIGlzIDQsIGFuZCB0aGUgc2Vjb25kYXJ5IGdyb3VwaW5nIHNpemUgaXMgMiwgdGhlbgorICAgICAqIHRoZSBudW1iZXIgMTIzNDU2Nzg5IGZvcm1hdHMgYXMgIjEsMjMsNDUsNjc4OSIsIGFuZCB0aGUgcGF0dGVybgorICAgICAqIGFwcGVhcnMgYXMgIiMsIyMsIyMjMCIuCisgICAgICogW05FV10KKyAgICAgKiBAcmV0dXJuIHRoZSBzZWNvbmRhcnkgZ3JvdXBpbmcgc2l6ZSwgb3IgYSB2YWx1ZSBsZXNzIHRoYW4KKyAgICAgKiBvbmUgaWYgdGhlcmUgaXMgbm9uZQorICAgICAqIEBzZWUgI3NldFNlY29uZGFyeUdyb3VwaW5nU2l6ZQorICAgICAqIEBzZWUgTnVtYmVyRm9ybWF0I2lzR3JvdXBpbmdVc2VkCisgICAgICogQHNlZSBEZWNpbWFsRm9ybWF0U3ltYm9scyNnZXRHcm91cGluZ1NlcGFyYXRvcgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0U2Vjb25kYXJ5R3JvdXBpbmdTaXplICgpIHsKKyAgICAgICAgcmV0dXJuIGdyb3VwaW5nU2l6ZTI7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBzZWNvbmRhcnkgZ3JvdXBpbmcgc2l6ZS4gSWYgc2V0IHRvIGEgdmFsdWUgbGVzcyB0aGFuIDEsCisgICAgICogdGhlbiBzZWNvbmRhcnkgZ3JvdXBpbmcgaXMgdHVybmVkIG9mZiwgYW5kIHRoZSBwcmltYXJ5IGdyb3VwaW5nCisgICAgICogc2l6ZSBpcyB1c2VkIGZvciBhbGwgaW50ZXJ2YWxzLCBub3QganVzdCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQuCisgICAgICogW05FV10KKyAgICAgKiBAc2VlICNnZXRTZWNvbmRhcnlHcm91cGluZ1NpemUKKyAgICAgKiBAc2VlIE51bWJlckZvcm1hdCNzZXRHcm91cGluZ1VzZWQKKyAgICAgKiBAc2VlIERlY2ltYWxGb3JtYXRTeW1ib2xzI3NldEdyb3VwaW5nU2VwYXJhdG9yCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0U2Vjb25kYXJ5R3JvdXBpbmdTaXplIChpbnQgbmV3VmFsdWUpIHsKKyAgICAgICAgZ3JvdXBpbmdTaXplMiA9IChieXRlKW5ld1ZhbHVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFsbG93cyB5b3UgdG8gZ2V0IHRoZSBiZWhhdmlvciBvZiB0aGUgZGVjaW1hbCBzZXBhcmF0b3Igd2l0aCBpbnRlZ2Vycy4KKyAgICAgKiAoVGhlIGRlY2ltYWwgc2VwYXJhdG9yIHdpbGwgYWx3YXlzIGFwcGVhciB3aXRoIGRlY2ltYWxzLikKKyAgICAgKiA8UD5FeGFtcGxlOiBEZWNpbWFsIE9OOiAxMjM0NSAtPiAxMjM0NS47IE9GRjogMTIzNDUgLT4gMTIzNDUKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0RlY2ltYWxTZXBhcmF0b3JBbHdheXNTaG93bigpIHsKKyAgICAgICAgcmV0dXJuIGRlY2ltYWxTZXBhcmF0b3JBbHdheXNTaG93bjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBbGxvd3MgeW91IHRvIHNldCB0aGUgYmVoYXZpb3Igb2YgdGhlIGRlY2ltYWwgc2VwYXJhdG9yIHdpdGggaW50ZWdlcnMuCisgICAgICogKFRoZSBkZWNpbWFsIHNlcGFyYXRvciB3aWxsIGFsd2F5cyBhcHBlYXIgd2l0aCBkZWNpbWFscy4pCisgICAgICogPFA+RXhhbXBsZTogRGVjaW1hbCBPTjogMTIzNDUgLT4gMTIzNDUuOyBPRkY6IDEyMzQ1IC0+IDEyMzQ1CisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0RGVjaW1hbFNlcGFyYXRvckFsd2F5c1Nob3duKGJvb2xlYW4gbmV3VmFsdWUpIHsKKyAgICAgICAgZGVjaW1hbFNlcGFyYXRvckFsd2F5c1Nob3duID0gbmV3VmFsdWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogU3RhbmRhcmQgb3ZlcnJpZGU7IG5vIGNoYW5nZSBpbiBzZW1hbnRpY3MuCisgICAgICovCisgICAgcHVibGljIE9iamVjdCBjbG9uZSgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIERlY2ltYWxGb3JtYXQgb3RoZXIgPSAoRGVjaW1hbEZvcm1hdCkgc3VwZXIuY2xvbmUoKTsKKyAgICAgICAgICAgIG90aGVyLnN5bWJvbHMgPSAoRGVjaW1hbEZvcm1hdFN5bWJvbHMpIHN5bWJvbHMuY2xvbmUoKTsKKyAgICAgICAgICAgIHJldHVybiBvdGhlcjsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgZXF1YWxzCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvYmopCisgICAgeworICAgICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFzdXBlci5lcXVhbHMob2JqKSkgcmV0dXJuIGZhbHNlOyAvLyBzdXBlciBkb2VzIGNsYXNzIGNoZWNrCisgICAgICAgIERlY2ltYWxGb3JtYXQgb3RoZXIgPSAoRGVjaW1hbEZvcm1hdCkgb2JqOworICAgICAgICByZXR1cm4gKHBvc2l0aXZlUHJlZml4LmVxdWFscyhvdGhlci5wb3NpdGl2ZVByZWZpeCkKKyAgICAgICAgICAgICYmIHBvc2l0aXZlU3VmZml4LmVxdWFscyhvdGhlci5wb3NpdGl2ZVN1ZmZpeCkKKyAgICAgICAgICAgICYmIG5lZ2F0aXZlUHJlZml4LmVxdWFscyhvdGhlci5uZWdhdGl2ZVByZWZpeCkKKyAgICAgICAgICAgICYmIG5lZ2F0aXZlU3VmZml4LmVxdWFscyhvdGhlci5uZWdhdGl2ZVN1ZmZpeCkKKyAgICAgICAgICAgICYmIG11bHRpcGxpZXIgPT0gb3RoZXIubXVsdGlwbGllcgorICAgICAgICAgICAgJiYgZ3JvdXBpbmdTaXplID09IG90aGVyLmdyb3VwaW5nU2l6ZQorICAgICAgICAgICAgJiYgZ3JvdXBpbmdTaXplMiA9PSBvdGhlci5ncm91cGluZ1NpemUyCisgICAgICAgICAgICAmJiBkZWNpbWFsU2VwYXJhdG9yQWx3YXlzU2hvd24gPT0gb3RoZXIuZGVjaW1hbFNlcGFyYXRvckFsd2F5c1Nob3duCisgICAgICAgICAgICAmJiB1c2VFeHBvbmVudGlhbE5vdGF0aW9uID09IG90aGVyLnVzZUV4cG9uZW50aWFsTm90YXRpb24KKyAgICAgICAgICAgICYmICghdXNlRXhwb25lbnRpYWxOb3RhdGlvbiB8fAorICAgICAgICAgICAgICAgIG1pbkV4cG9uZW50RGlnaXRzID09IG90aGVyLm1pbkV4cG9uZW50RGlnaXRzKQorICAgICAgICAgICAgJiYgc3ltYm9scy5lcXVhbHMob3RoZXIuc3ltYm9scykpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBoYXNoQ29kZQorICAgICAqLworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIHJldHVybiBzdXBlci5oYXNoQ29kZSgpICogMzcgKyBwb3NpdGl2ZVByZWZpeC5oYXNoQ29kZSgpOworICAgICAgICAvLyBqdXN0IGVub3VnaCBmaWVsZHMgZm9yIGEgcmVhc29uYWJsZSBkaXN0cmlidXRpb24KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTeW50aGVzaXplcyBhIHBhdHRlcm4gc3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGUgY3VycmVudCBzdGF0ZQorICAgICAqIG9mIHRoaXMgRm9ybWF0IG9iamVjdC4KKyAgICAgKiBAc2VlICNhcHBseVBhdHRlcm4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvUGF0dGVybigpIHsKKyAgICAgICAgcmV0dXJuIHRvUGF0dGVybiggZmFsc2UgKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTeW50aGVzaXplcyBhIGxvY2FsaXplZCBwYXR0ZXJuIHN0cmluZyB0aGF0IHJlcHJlc2VudHMgdGhlIGN1cnJlbnQKKyAgICAgKiBzdGF0ZSBvZiB0aGlzIEZvcm1hdCBvYmplY3QuCisgICAgICogQHNlZSAjYXBwbHlQYXR0ZXJuCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b0xvY2FsaXplZFBhdHRlcm4oKSB7CisgICAgICAgIHJldHVybiB0b1BhdHRlcm4oIHRydWUgKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBcHBlbmQgYW4gYWZmaXggdG8gdGhlIGdpdmVuIFN0cmluZ0J1ZmZlciwgdXNpbmcgcXVvdGVzIGlmCisgICAgICogdGhlcmUgYXJlIHNwZWNpYWwgY2hhcmFjdGVycy4gIFNpbmdsZSBxdW90ZXMgdGhlbXNlbHZlcyBtdXN0IGJlCisgICAgICogZXNjYXBlZCBpbiBlaXRoZXIgY2FzZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgYXBwZW5kQWZmaXgoU3RyaW5nQnVmZmVyIGJ1ZmZlciwgU3RyaW5nIGFmZml4LCBib29sZWFuIGxvY2FsaXplZCkgeworICAgICAgICBib29sZWFuIG5lZWRRdW90ZTsKKyAgICAgICAgaWYgKGxvY2FsaXplZCkgeworICAgICAgICAgICAgbmVlZFF1b3RlID0gYWZmaXguaW5kZXhPZihzeW1ib2xzLmdldFplcm9EaWdpdCgpKSA+PSAwCisgICAgICAgICAgICAgICAgfHwgYWZmaXguaW5kZXhPZihzeW1ib2xzLmdldEdyb3VwaW5nU2VwYXJhdG9yKCkpID49IDAKKyAgICAgICAgICAgICAgICB8fCBhZmZpeC5pbmRleE9mKHN5bWJvbHMuZ2V0RGVjaW1hbFNlcGFyYXRvcigpKSA+PSAwCisgICAgICAgICAgICAgICAgfHwgYWZmaXguaW5kZXhPZihzeW1ib2xzLmdldFBlcmNlbnQoKSkgPj0gMAorICAgICAgICAgICAgICAgIHx8IGFmZml4LmluZGV4T2Yoc3ltYm9scy5nZXRQZXJNaWxsKCkpID49IDAKKyAgICAgICAgICAgICAgICB8fCBhZmZpeC5pbmRleE9mKHN5bWJvbHMuZ2V0RGlnaXQoKSkgPj0gMAorICAgICAgICAgICAgICAgIHx8IGFmZml4LmluZGV4T2Yoc3ltYm9scy5nZXRQYXR0ZXJuU2VwYXJhdG9yKCkpID49IDAKKyAgICAgICAgICAgICAgICB8fCBhZmZpeC5pbmRleE9mKHN5bWJvbHMuZ2V0RXhwb25lbnRTZXBhcmF0b3IoKSkgPj0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG5lZWRRdW90ZSA9IGFmZml4LmluZGV4T2YoUEFUVEVSTl9aRVJPX0RJR0lUKSA+PSAwCisgICAgICAgICAgICAgICAgfHwgYWZmaXguaW5kZXhPZihQQVRURVJOX0dST1VQSU5HX1NFUEFSQVRPUikgPj0gMAorICAgICAgICAgICAgICAgIHx8IGFmZml4LmluZGV4T2YoUEFUVEVSTl9ERUNJTUFMX1NFUEFSQVRPUikgPj0gMAorICAgICAgICAgICAgICAgIHx8IGFmZml4LmluZGV4T2YoUEFUVEVSTl9QRVJDRU5UKSA+PSAwCisgICAgICAgICAgICAgICAgfHwgYWZmaXguaW5kZXhPZihQQVRURVJOX1BFUl9NSUxMRSkgPj0gMAorICAgICAgICAgICAgICAgIHx8IGFmZml4LmluZGV4T2YoUEFUVEVSTl9ESUdJVCkgPj0gMAorICAgICAgICAgICAgICAgIHx8IGFmZml4LmluZGV4T2YoUEFUVEVSTl9TRVBBUkFUT1IpID49IDAKKyAgICAgICAgICAgICAgICB8fCBhZmZpeC5pbmRleE9mKFBBVFRFUk5fRVhQT05FTlQpID49IDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5lZWRRdW90ZSkgYnVmZmVyLmFwcGVuZCgnXCcnKTsKKyAgICAgICAgaWYgKGFmZml4LmluZGV4T2YoJ1wnJykgPCAwKSBidWZmZXIuYXBwZW5kKGFmZml4KTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmb3IgKGludCBqPTA7IGo8YWZmaXgubGVuZ3RoKCk7ICsraikgeworICAgICAgICAgICAgICAgIGNoYXIgYyA9IGFmZml4LmNoYXJBdChqKTsKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGMpOworICAgICAgICAgICAgICAgIGlmIChjID09ICdcJycpIGJ1ZmZlci5hcHBlbmQoYyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5lZWRRdW90ZSkgYnVmZmVyLmFwcGVuZCgnXCcnKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5DSEFOR0VEPC9mb250Pjwvc3Ryb25nPgorICAgICAqIERvZXMgdGhlIHJlYWwgd29yayBvZiBnZW5lcmF0aW5nIGEgcGF0dGVybi4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyB0b1BhdHRlcm4oYm9vbGVhbiBsb2NhbGl6ZWQpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgY2hhciB6ZXJvID0gbG9jYWxpemVkID8gc3ltYm9scy5nZXRaZXJvRGlnaXQoKSA6IFBBVFRFUk5fWkVST19ESUdJVDsKKyAgICAgICAgY2hhciBkaWdpdCA9IGxvY2FsaXplZCA/IHN5bWJvbHMuZ2V0RGlnaXQoKSA6IFBBVFRFUk5fRElHSVQ7CisgICAgICAgIGNoYXIgZ3JvdXAgPSBsb2NhbGl6ZWQgPyBzeW1ib2xzLmdldEdyb3VwaW5nU2VwYXJhdG9yKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFBBVFRFUk5fR1JPVVBJTkdfU0VQQVJBVE9SOworICAgICAgICBpbnQgaTsKKyAgICAgICAgaW50IHJvdW5kaW5nRGVjaW1hbFBvcyA9IDA7IC8vIFBvcyBvZiBkZWNpbWFsIGluIHJvdW5kaW5nRGlnaXRzCisgICAgICAgIFN0cmluZyByb3VuZGluZ0RpZ2l0cyA9IG51bGw7CisgICAgICAgIGludCBwYWRQb3MgPSAoZm9ybWF0V2lkdGggPiAwKSA/IHBhZFBvc2l0aW9uIDogLTE7CisgICAgICAgIFN0cmluZyBwYWRTcGVjID0gKGZvcm1hdFdpZHRoID4gMCkKKyAgICAgICAgICAgID8gbmV3IFN0cmluZ0J1ZmZlcigyKS4KKyAgICAgICAgICAgICAgICBhcHBlbmQobG9jYWxpemVkID8gc3ltYm9scy5nZXRQYWRFc2NhcGUoKSA6IFBBVFRFUk5fUEFEX0VTQ0FQRSkuCisgICAgICAgICAgICAgICAgYXBwZW5kKHBhZCkudG9TdHJpbmcoKQorICAgICAgICAgICAgOiBudWxsOworICAgICAgICBpZiAocm91bmRpbmdJbmNyZW1lbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgaSA9IHJvdW5kaW5nSW5jcmVtZW50LnNjYWxlKCk7CisgICAgICAgICAgICByb3VuZGluZ0RpZ2l0cyA9IHJvdW5kaW5nSW5jcmVtZW50Lm1vdmVQb2ludFJpZ2h0KGkpLnRvU3RyaW5nKCk7CisgICAgICAgICAgICByb3VuZGluZ0RlY2ltYWxQb3MgPSByb3VuZGluZ0RpZ2l0cy5sZW5ndGgoKSAtIGk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgcGFydD0wOyBwYXJ0PDI7ICsrcGFydCkgeworICAgICAgICAgICAgaW50IHBhcnRTdGFydCA9IHJlc3VsdC5sZW5ndGgoKTsKKyAgICAgICAgICAgIGlmIChwYWRQb3MgPT0gUEFEX0JFRk9SRV9QUkVGSVgpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHBhZFNwZWMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXBwZW5kQWZmaXgocmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgKHBhcnQ9PTAgPyBwb3NpdGl2ZVByZWZpeCA6IG5lZ2F0aXZlUHJlZml4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsaXplZCk7CisgICAgICAgICAgICBpZiAocGFkUG9zID09IFBBRF9BRlRFUl9QUkVGSVgpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHBhZFNwZWMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IHN1YjBTdGFydCA9IHJlc3VsdC5sZW5ndGgoKTsKKyAgICAgICAgICAgIGludCBnID0gaXNHcm91cGluZ1VzZWQoKSA/IE1hdGgubWF4KDAsIGdyb3VwaW5nU2l6ZSkgOiAwOworICAgICAgICAgICAgaWYgKGcgPiAwICYmIGdyb3VwaW5nU2l6ZTIgPiAwICYmIGdyb3VwaW5nU2l6ZTIgIT0gZ3JvdXBpbmdTaXplKSB7CisgICAgICAgICAgICAgICAgZyArPSBncm91cGluZ1NpemUyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IG1heEludERpZyA9IHVzZUV4cG9uZW50aWFsTm90YXRpb24gPyBnZXRNYXhpbXVtSW50ZWdlckRpZ2l0cygpIDoKKyAgICAgICAgICAgICAgICAoTWF0aC5tYXgoTWF0aC5tYXgoZywgZ2V0TWluaW11bUludGVnZXJEaWdpdHMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kaW5nRGVjaW1hbFBvcykgKyAxKTsKKyAgICAgICAgICAgIGZvciAoaSA9IG1heEludERpZzsgaSA+IDA7IC0taSkgeworICAgICAgICAgICAgICAgIGlmICghdXNlRXhwb25lbnRpYWxOb3RhdGlvbiAmJiBpPG1heEludERpZyAmJgorICAgICAgICAgICAgICAgICAgICBpc0dyb3VwaW5nUG9zaXRpb24oaSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChncm91cCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChyb3VuZGluZ0RpZ2l0cyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBwb3MgPSByb3VuZGluZ0RlY2ltYWxQb3MgLSBpOworICAgICAgICAgICAgICAgICAgICBpZiAocG9zID49IDAgJiYgcG9zIDwgcm91bmRpbmdEaWdpdHMubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoKGNoYXIpIChyb3VuZGluZ0RpZ2l0cy5jaGFyQXQocG9zKSAtICcwJyArIHplcm8pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaTw9Z2V0TWluaW11bUludGVnZXJEaWdpdHMoKSA/IHplcm8gOiBkaWdpdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZ2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKCkgPiAwIHx8IGRlY2ltYWxTZXBhcmF0b3JBbHdheXNTaG93bikgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobG9jYWxpemVkID8gc3ltYm9scy5nZXREZWNpbWFsU2VwYXJhdG9yKCkgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFUVEVSTl9ERUNJTUFMX1NFUEFSQVRPUik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgcG9zID0gcm91bmRpbmdEZWNpbWFsUG9zOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGdldE1heGltdW1GcmFjdGlvbkRpZ2l0cygpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAocm91bmRpbmdEaWdpdHMgIT0gbnVsbCAmJgorICAgICAgICAgICAgICAgICAgICBwb3MgPCByb3VuZGluZ0RpZ2l0cy5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHBvcyA8IDAgPyB6ZXJvIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhcikgKHJvdW5kaW5nRGlnaXRzLmNoYXJBdChwb3MpIC0gJzAnICsgemVybykpOworICAgICAgICAgICAgICAgICAgICArK3BvczsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoaTxnZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMoKSA/IHplcm8gOiBkaWdpdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodXNlRXhwb25lbnRpYWxOb3RhdGlvbikgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQobG9jYWxpemVkID8gc3ltYm9scy5nZXRFeHBvbmVudFNlcGFyYXRvcigpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBVFRFUk5fRVhQT05FTlQpOworICAgICAgICAgICAgICAgIGlmIChleHBvbmVudFNpZ25BbHdheXNTaG93bikgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxvY2FsaXplZCA/IHN5bWJvbHMuZ2V0UGx1c1NpZ24oKSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFUVEVSTl9QTFVTX1NJR04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTxtaW5FeHBvbmVudERpZ2l0czsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoemVybyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHBhZFNwZWMgIT0gbnVsbCAmJiAhdXNlRXhwb25lbnRpYWxOb3RhdGlvbikgeworICAgICAgICAgICAgICAgIGludCBhZGQgPSBmb3JtYXRXaWR0aCAtIHJlc3VsdC5sZW5ndGgoKSArIHN1YjBTdGFydAorICAgICAgICAgICAgICAgICAgICAtICgocGFydCA9PSAwKQorICAgICAgICAgICAgICAgICAgICAgICA/IHBvc2l0aXZlUHJlZml4Lmxlbmd0aCgpICsgcG9zaXRpdmVTdWZmaXgubGVuZ3RoKCkKKyAgICAgICAgICAgICAgICAgICAgICAgOiBuZWdhdGl2ZVByZWZpeC5sZW5ndGgoKSArIG5lZ2F0aXZlU3VmZml4Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoYWRkID4gMCkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuaW5zZXJ0KHN1YjBTdGFydCwgZGlnaXQpOworICAgICAgICAgICAgICAgICAgICArK21heEludERpZzsKKyAgICAgICAgICAgICAgICAgICAgLS1hZGQ7CisgICAgICAgICAgICAgICAgICAgIC8vIE9ubHkgYWRkIGEgZ3JvdXBpbmcgc2VwYXJhdG9yIGlmIHdlIGhhdmUgYXQgbGVhc3QKKyAgICAgICAgICAgICAgICAgICAgLy8gMiBhZGRpdGlvbmFsIGNoYXJhY3RlcnMgdG8gYmUgYWRkZWQsIHNvIHdlIGRvbid0CisgICAgICAgICAgICAgICAgICAgIC8vIGVuZCB1cCB3aXRoICIsIyMjIi4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGFkZD4xICYmIGlzR3JvdXBpbmdQb3NpdGlvbihtYXhJbnREaWcpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuaW5zZXJ0KHN1YjBTdGFydCwgZ3JvdXApOworICAgICAgICAgICAgICAgICAgICAgICAgLS1hZGQ7ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocGFkUG9zID09IFBBRF9CRUZPUkVfU1VGRklYKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChwYWRTcGVjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwYXJ0ID09IDApIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRBZmZpeChyZXN1bHQsIHBvc2l0aXZlU3VmZml4LCBsb2NhbGl6ZWQpOworICAgICAgICAgICAgICAgIGlmIChwYWRQb3MgPT0gUEFEX0FGVEVSX1NVRkZJWCkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHBhZFNwZWMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmVTdWZmaXguZXF1YWxzKHBvc2l0aXZlU3VmZml4KSAmJgorICAgICAgICAgICAgICAgICAgICBuZWdhdGl2ZVByZWZpeC5lcXVhbHMoc3ltYm9scy5nZXRNaW51c1NpZ24oKSArIHBvc2l0aXZlUHJlZml4KSkgeworICAgICAgICAgICAgICAgICAgICBwYXJ0ID0gMjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGxvY2FsaXplZCA/IHN5bWJvbHMuZ2V0UGF0dGVyblNlcGFyYXRvcigpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQVRURVJOX1NFUEFSQVRPUik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRBZmZpeChyZXN1bHQsIG5lZ2F0aXZlU3VmZml4LCBsb2NhbGl6ZWQpOworICAgICAgICAgICAgICAgIGlmIChwYWRQb3MgPT0gUEFEX0FGVEVSX1NVRkZJWCkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHBhZFNwZWMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQXBwbHkgdGhlIGdpdmVuIHBhdHRlcm4gdG8gdGhpcyBGb3JtYXQgb2JqZWN0LiAgQSBwYXR0ZXJuIGlzIGEKKyAgICAgKiBzaG9ydC1oYW5kIHNwZWNpZmljYXRpb24gZm9yIHRoZSB2YXJpb3VzIGZvcm1hdHRpbmcgcHJvcGVydGllcy4KKyAgICAgKiBUaGVzZSBwcm9wZXJ0aWVzIGNhbiBhbHNvIGJlIGNoYW5nZWQgaW5kaXZpZHVhbGx5IHRocm91Z2ggdGhlCisgICAgICogdmFyaW91cyBzZXR0ZXIgbWV0aG9kcy4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGVyZSBpcyBubyBsaW1pdCB0byBpbnRlZ2VyIGRpZ2l0cyBhcmUgc2V0CisgICAgICogYnkgdGhpcyByb3V0aW5lLCBzaW5jZSB0aGF0IGlzIHRoZSB0eXBpY2FsIGVuZC11c2VyIGRlc2lyZTsKKyAgICAgKiB1c2Ugc2V0TWF4aW11bUludGVnZXIgaWYgeW91IHdhbnQgdG8gc2V0IGEgcmVhbCB2YWx1ZS4KKyAgICAgKiBGb3IgbmVnYXRpdmUgbnVtYmVycywgdXNlIGEgc2Vjb25kIHBhdHRlcm4sIHNlcGFyYXRlZCBieSBhIHNlbWljb2xvbgorICAgICAqIDxQPkV4YW1wbGUgIiMsIzAwLjAjIiAtPiAxLDIzNC41NgorICAgICAqIDxQPlRoaXMgbWVhbnMgYSBtaW5pbXVtIG9mIDIgaW50ZWdlciBkaWdpdHMsIDEgZnJhY3Rpb24gZGlnaXQsIGFuZAorICAgICAqIGEgbWF4aW11bSBvZiAyIGZyYWN0aW9uIGRpZ2l0cy4KKyAgICAgKiA8cD5FeGFtcGxlOiAiIywjMDAuMCM7KCMsIzAwLjAjKSIgZm9yIG5lZ2F0aXZlcyBpbiBwYXJhbnRoZXNlcy4KKyAgICAgKiA8cD5JbiBuZWdhdGl2ZSBwYXR0ZXJucywgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gY291bnRzIGFyZSBpZ25vcmVkOworICAgICAqIHRoZXNlIGFyZSBwcmVzdW1lZCB0byBiZSBzZXQgaW4gdGhlIHBvc2l0aXZlIHBhdHRlcm4uCisgICAgICovCisgICAgcHVibGljIHZvaWQgYXBwbHlQYXR0ZXJuKCBTdHJpbmcgcGF0dGVybiApIHsKKyAgICAgICAgYXBwbHlQYXR0ZXJuKCBwYXR0ZXJuLCBmYWxzZSApOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFwcGx5IHRoZSBnaXZlbiBwYXR0ZXJuIHRvIHRoaXMgRm9ybWF0IG9iamVjdC4gIFRoZSBwYXR0ZXJuCisgICAgICogaXMgYXNzdW1lZCB0byBiZSBpbiBhIGxvY2FsaXplZCBub3RhdGlvbi4gQSBwYXR0ZXJuIGlzIGEKKyAgICAgKiBzaG9ydC1oYW5kIHNwZWNpZmljYXRpb24gZm9yIHRoZSB2YXJpb3VzIGZvcm1hdHRpbmcgcHJvcGVydGllcy4KKyAgICAgKiBUaGVzZSBwcm9wZXJ0aWVzIGNhbiBhbHNvIGJlIGNoYW5nZWQgaW5kaXZpZHVhbGx5IHRocm91Z2ggdGhlCisgICAgICogdmFyaW91cyBzZXR0ZXIgbWV0aG9kcy4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGVyZSBpcyBubyBsaW1pdCB0byBpbnRlZ2VyIGRpZ2l0cyBhcmUgc2V0CisgICAgICogYnkgdGhpcyByb3V0aW5lLCBzaW5jZSB0aGF0IGlzIHRoZSB0eXBpY2FsIGVuZC11c2VyIGRlc2lyZTsKKyAgICAgKiB1c2Ugc2V0TWF4aW11bUludGVnZXIgaWYgeW91IHdhbnQgdG8gc2V0IGEgcmVhbCB2YWx1ZS4KKyAgICAgKiBGb3IgbmVnYXRpdmUgbnVtYmVycywgdXNlIGEgc2Vjb25kIHBhdHRlcm4sIHNlcGFyYXRlZCBieSBhIHNlbWljb2xvbgorICAgICAqIDxQPkV4YW1wbGUgIiMsIzAwLjAjIiAtPiAxLDIzNC41NgorICAgICAqIDxQPlRoaXMgbWVhbnMgYSBtaW5pbXVtIG9mIDIgaW50ZWdlciBkaWdpdHMsIDEgZnJhY3Rpb24gZGlnaXQsIGFuZAorICAgICAqIGEgbWF4aW11bSBvZiAyIGZyYWN0aW9uIGRpZ2l0cy4KKyAgICAgKiA8cD5FeGFtcGxlOiAiIywjMDAuMCM7KCMsIzAwLjAjKSIgZm9yIG5lZ2F0aXZlcyBpbiBwYXJhbnRoZXNlcy4KKyAgICAgKiA8cD5JbiBuZWdhdGl2ZSBwYXR0ZXJucywgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gY291bnRzIGFyZSBpZ25vcmVkOworICAgICAqIHRoZXNlIGFyZSBwcmVzdW1lZCB0byBiZSBzZXQgaW4gdGhlIHBvc2l0aXZlIHBhdHRlcm4uCisgICAgICovCisgICAgcHVibGljIHZvaWQgYXBwbHlMb2NhbGl6ZWRQYXR0ZXJuKCBTdHJpbmcgcGF0dGVybiApIHsKKyAgICAgICAgYXBwbHlQYXR0ZXJuKCBwYXR0ZXJuLCB0cnVlICk7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+Q0hBTkdFRDwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBEb2VzIHRoZSByZWFsIHdvcmsgb2YgYXBwbHlpbmcgYSBwYXR0ZXJuLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBhcHBseVBhdHRlcm4oU3RyaW5nIHBhdHRlcm4sIGJvb2xlYW4gbG9jYWxpemVkKSB7CisgICAgICAgIGNoYXIgemVyb0RpZ2l0ICAgICAgICAgPSBQQVRURVJOX1pFUk9fRElHSVQ7CisgICAgICAgIGNoYXIgZ3JvdXBpbmdTZXBhcmF0b3IgPSBQQVRURVJOX0dST1VQSU5HX1NFUEFSQVRPUjsKKyAgICAgICAgY2hhciBkZWNpbWFsU2VwYXJhdG9yICA9IFBBVFRFUk5fREVDSU1BTF9TRVBBUkFUT1I7CisgICAgICAgIGNoYXIgcGVyY2VudCAgICAgICAgICAgPSBQQVRURVJOX1BFUkNFTlQ7CisgICAgICAgIGNoYXIgcGVyTWlsbCAgICAgICAgICAgPSBQQVRURVJOX1BFUl9NSUxMRTsKKyAgICAgICAgY2hhciBkaWdpdCAgICAgICAgICAgICA9IFBBVFRFUk5fRElHSVQ7CisgICAgICAgIGNoYXIgc2VwYXJhdG9yICAgICAgICAgPSBQQVRURVJOX1NFUEFSQVRPUjsKKyAgICAgICAgU3RyaW5nIGV4cG9uZW50ICAgICAgICA9IFBBVFRFUk5fRVhQT05FTlQ7CisgICAgICAgIGNoYXIgcGx1cyAgICAgICAgICAgICAgPSBQQVRURVJOX1BMVVNfU0lHTjsKKyAgICAgICAgY2hhciBwYWRFc2NhcGUgICAgICAgICA9IFBBVFRFUk5fUEFEX0VTQ0FQRTsKKyAgICAgICAgaWYgKGxvY2FsaXplZCkgeworICAgICAgICAgICAgemVyb0RpZ2l0ICAgICAgICAgPSBzeW1ib2xzLmdldFplcm9EaWdpdCgpOworICAgICAgICAgICAgZ3JvdXBpbmdTZXBhcmF0b3IgPSBzeW1ib2xzLmdldEdyb3VwaW5nU2VwYXJhdG9yKCk7CisgICAgICAgICAgICBkZWNpbWFsU2VwYXJhdG9yICA9IHN5bWJvbHMuZ2V0RGVjaW1hbFNlcGFyYXRvcigpOworICAgICAgICAgICAgcGVyY2VudCAgICAgICAgICAgPSBzeW1ib2xzLmdldFBlcmNlbnQoKTsKKyAgICAgICAgICAgIHBlck1pbGwgICAgICAgICAgID0gc3ltYm9scy5nZXRQZXJNaWxsKCk7CisgICAgICAgICAgICBkaWdpdCAgICAgICAgICAgICA9IHN5bWJvbHMuZ2V0RGlnaXQoKTsKKyAgICAgICAgICAgIHNlcGFyYXRvciAgICAgICAgID0gc3ltYm9scy5nZXRQYXR0ZXJuU2VwYXJhdG9yKCk7CisgICAgICAgICAgICBleHBvbmVudCAgICAgICAgICA9IHN5bWJvbHMuZ2V0RXhwb25lbnRTZXBhcmF0b3IoKTsKKyAgICAgICAgICAgIHBsdXMgICAgICAgICAgICAgID0gc3ltYm9scy5nZXRQbHVzU2lnbigpOworICAgICAgICAgICAgcGFkRXNjYXBlICAgICAgICAgPSBzeW1ib2xzLmdldFBhZEVzY2FwZSgpOworICAgICAgICB9CisgICAgICAgIGNoYXIgbmluZURpZ2l0ID0gKGNoYXIpICh6ZXJvRGlnaXQgKyA5KTsKKworICAgICAgICBib29sZWFuIGdvdE5lZ2F0aXZlID0gZmFsc2U7CisKKyAgICAgICAgaW50IHBvcyA9IDA7CisgICAgICAgIC8vIFBhcnQgMCBpcyB0aGUgcG9zaXRpdmUgcGF0dGVybi4gIFBhcnQgMSwgaWYgcHJlc2VudCwgaXMgdGhlIG5lZ2F0aXZlCisgICAgICAgIC8vIHBhdHRlcm4uCisgICAgICAgIGZvciAoaW50IHBhcnQ9MDsgcGFydDwyICYmIHBvczxwYXR0ZXJuLmxlbmd0aCgpOyArK3BhcnQpIHsKKyAgICAgICAgICAgIC8vIFRoZSBzdWJwYXJ0IHJhbmdlcyBmcm9tIDAgdG8gNDogMD1wYXR0ZXJuIHByb3BlciwgMT1wcmVmaXgsCisgICAgICAgICAgICAvLyAyPXN1ZmZpeCwgMz1wcmVmaXggaW4gcXVvdGUsIDQ9c3VmZml4IGluIHF1b3RlLiAgU3VicGFydCAwIGlzCisgICAgICAgICAgICAvLyBiZXR3ZWVuIHRoZSBwcmVmaXggYW5kIHN1ZmZpeCwgYW5kIGNvbnNpc3RzIG9mIHBhdHRlcm4KKyAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMuICBJbiB0aGUgcHJlZml4IGFuZCBzdWZmaXgsIHBlcmNlbnQsIHBlcm1pbGxlLCBhbmQKKyAgICAgICAgICAgIC8vIGN1cnJlbmN5IHN5bWJvbHMgYXJlIHJlY29nbml6ZWQgYW5kIHRyYW5zbGF0ZWQuCisgICAgICAgICAgICBpbnQgc3VicGFydCA9IDEsIHN1YjBTdGFydCA9IDAsIHN1YjBMaW1pdCA9IDAsIHN1YjJMaW1pdCA9IDA7CisKKyAgICAgICAgICAgIC8vIEl0J3MgaW1wb3J0YW50IHRoYXQgd2UgZG9uJ3QgY2hhbmdlIGFueSBmaWVsZHMgb2YgdGhpcyBvYmplY3QKKyAgICAgICAgICAgIC8vIHByZW1hdHVyZWx5LiAgV2Ugc2V0IHRoZSBmb2xsb3dpbmcgdmFyaWFibGVzIGZvciB0aGUgbXVsdGlwbGllciwKKyAgICAgICAgICAgIC8vIGdyb3VwaW5nLCBldGMuLCBhbmQgdGhlbiBvbmx5IGNoYW5nZSB0aGUgYWN0dWFsIG9iamVjdCBmaWVsZHMgaWYKKyAgICAgICAgICAgIC8vIGV2ZXJ5dGhpbmcgcGFyc2VzIGNvcnJlY3RseS4gIFRoaXMgYWxzbyBsZXRzIHVzIHJlZ2lzdGVyCisgICAgICAgICAgICAvLyB0aGUgZGF0YSBmcm9tIHBhcnQgMCBhbmQgaWdub3JlIHRoZSBwYXJ0IDEsIGV4Y2VwdCBmb3IgdGhlCisgICAgICAgICAgICAvLyBwcmVmaXggYW5kIHN1ZmZpeC4KKyAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBwcmVmaXggPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgc3VmZml4ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgICAgaW50IGRlY2ltYWxQb3MgPSAtMTsKKyAgICAgICAgICAgIGludCBtdWx0aXBsaWVyID0gMTsKKyAgICAgICAgICAgIGludCBkaWdpdExlZnRDb3VudCA9IDAsIHplcm9EaWdpdENvdW50ID0gMCwgZGlnaXRSaWdodENvdW50ID0gMDsKKyAgICAgICAgICAgIGJ5dGUgZ3JvdXBpbmdDb3VudCA9IC0xOworICAgICAgICAgICAgYnl0ZSBncm91cGluZ0NvdW50MiA9IC0xOworICAgICAgICAgICAgaW50IHBhZFBvcyA9IC0xOworICAgICAgICAgICAgY2hhciBwYWRDaGFyID0gMDsKKyAgICAgICAgICAgIGludCBpbmNyZW1lbnRQb3MgPSAtMTsKKyAgICAgICAgICAgIGxvbmcgaW5jcmVtZW50VmFsID0gMDsKKyAgICAgICAgICAgIGJ5dGUgZXhwRGlnaXRzID0gLTE7CisgICAgICAgICAgICBib29sZWFuIGV4cFNpZ25BbHdheXMgPSBmYWxzZTsKKyAgICAgICAgICAgIGJvb2xlYW4gaXNDdXJyZW5jeSA9IGZhbHNlOworCisgICAgICAgICAgICAvLyBUaGUgYWZmaXggaXMgZWl0aGVyIHRoZSBwcmVmaXggb3IgdGhlIHN1ZmZpeC4KKyAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBhZmZpeCA9IHByZWZpeDsKKworICAgICAgICAgICAgaW50IHN0YXJ0ID0gcG9zOworCisgICAgICAgIFBBUlRMT09QOgorICAgICAgICAgICAgZm9yICg7IHBvcyA8IHBhdHRlcm4ubGVuZ3RoKCk7ICsrcG9zKSB7CisgICAgICAgICAgICAgICAgY2hhciBjaCA9IHBhdHRlcm4uY2hhckF0KHBvcyk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChzdWJwYXJ0KSB7CisgICAgICAgICAgICAgICAgY2FzZSAwOiAvLyBQYXR0ZXJuIHByb3BlciBzdWJwYXJ0IChiZXR3ZWVuIHByZWZpeCAmIHN1ZmZpeCkKKyAgICAgICAgICAgICAgICAgICAgLy8gUHJvY2VzcyB0aGUgZGlnaXRzLCBkZWNpbWFsLCBhbmQgZ3JvdXBpbmcgY2hhcmFjdGVycy4gIFdlCisgICAgICAgICAgICAgICAgICAgIC8vIHJlY29yZCBmaXZlIHBpZWNlcyBvZiBpbmZvcm1hdGlvbi4gIFdlIGV4cGVjdCB0aGUgZGlnaXRzCisgICAgICAgICAgICAgICAgICAgIC8vIHRvIG9jY3VyIGluIHRoZSBwYXR0ZXJuICMjIyMwMC4wMCMjIyMsIGFuZCB3ZSByZWNvcmQgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIG51bWJlciBvZiBsZWZ0IGRpZ2l0cywgemVybyAoY2VudHJhbCkgZGlnaXRzLCBhbmQgcmlnaHQKKyAgICAgICAgICAgICAgICAgICAgLy8gZGlnaXRzLiAgVGhlIHBvc2l0aW9uIG9mIHRoZSBsYXN0IGdyb3VwaW5nIGNoYXJhY3RlciBpcworICAgICAgICAgICAgICAgICAgICAvLyByZWNvcmRlZCAoc2hvdWxkIGJlIHNvbWV3aGVyZSB3aXRoaW4gdGhlIGZpcnN0IHR3byBibG9ja3MKKyAgICAgICAgICAgICAgICAgICAgLy8gb2YgY2hhcmFjdGVycyksIGFzIGlzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZGVjaW1hbCBwb2ludCwKKyAgICAgICAgICAgICAgICAgICAgLy8gaWYgYW55IChzaG91bGQgYmUgaW4gdGhlIHplcm8gZGlnaXRzKS4gIElmIHRoZXJlIGlzIG5vCisgICAgICAgICAgICAgICAgICAgIC8vIGRlY2ltYWwgcG9pbnQsIHRoZW4gdGhlcmUgc2hvdWxkIGJlIG5vIHJpZ2h0IGRpZ2l0cy4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09IGRpZ2l0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoemVyb0RpZ2l0Q291bnQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytkaWdpdFJpZ2h0Q291bnQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrZGlnaXRMZWZ0Q291bnQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ3JvdXBpbmdDb3VudCA+PSAwICYmIGRlY2ltYWxQb3MgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytncm91cGluZ0NvdW50OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID49IHplcm9EaWdpdCAmJiBjaCA8PSBuaW5lRGlnaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaWdpdFJpZ2h0Q291bnQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuZXhwZWN0ZWQgJzAnIGluIHBhdHRlcm4gXCIiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiArICciJyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICArK3plcm9EaWdpdENvdW50OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdyb3VwaW5nQ291bnQgPj0gMCAmJiBkZWNpbWFsUG9zIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrZ3JvdXBpbmdDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCAhPSB6ZXJvRGlnaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcCA9IGRpZ2l0TGVmdENvdW50ICsgemVyb0RpZ2l0Q291bnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBkaWdpdFJpZ2h0Q291bnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluY3JlbWVudFBvcyA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpbmNyZW1lbnRQb3MgPCBwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRWYWwgKj0gMTA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2luY3JlbWVudFBvczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudFBvcyA9IHA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY3JlbWVudFZhbCArPSBjaCAtIHplcm9EaWdpdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSBncm91cGluZ1NlcGFyYXRvcikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlY2ltYWxQb3MgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR3JvdXBpbmcgc2VwYXJhdG9yIGFmdGVyIGRlY2ltYWwgaW4gcGF0dGVybiBcIiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiArICciJyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBncm91cGluZ0NvdW50MiA9IGdyb3VwaW5nQ291bnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBncm91cGluZ0NvdW50ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSBkZWNpbWFsU2VwYXJhdG9yKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVjaW1hbFBvcyA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNdWx0aXBsZSBkZWNpbWFsIHNlcGFyYXRvcnMgaW4gcGF0dGVybiBcIiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiArICciJyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnRlbnRpb25hbGx5IGluY29ycG9yYXRlIHRoZSBkaWdpdFJpZ2h0Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVuIHRob3VnaCBpdCBpcyBpbGxlZ2FsIGZvciB0aGlzIHRvIGJlID4gMAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXQgdGhpcyBwb2ludC4gIFdlIGNoZWNrIHBhdHRlcm4gc3ludGF4IGJlbG93LgorICAgICAgICAgICAgICAgICAgICAgICAgZGVjaW1hbFBvcyA9IGRpZ2l0TGVmdENvdW50ICsgemVyb0RpZ2l0Q291bnQgKyBkaWdpdFJpZ2h0Q291bnQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGF0dGVybi5yZWdpb25NYXRjaGVzKHBvcywgZXhwb25lbnQsIDAsIGV4cG9uZW50Lmxlbmd0aCgpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBEaWdpdHMgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNdWx0aXBsZSBleHBvbmVudGlhbCAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3ltYm9scyBpbiBwYXR0ZXJuIFwiIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiArICciJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChncm91cGluZ0NvdW50ID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR3JvdXBpbmcgc2VwYXJhdG9yIGluIGV4cG9uZW50aWFsICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXR0ZXJuIFwiIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybiArICciJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBwb3NpdGl2ZSBwcmVmaXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHBvcysxKSA8IHBhdHRlcm4ubGVuZ3RoKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcGF0dGVybi5jaGFyQXQocG9zKzEpID09IHBsdXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwU2lnbkFsd2F5cyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrcG9zOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2UgbG9va2FoZWFkIHRvIHBhcnNlIG91dCB0aGUgZXhwb25lbnRpYWwgcGFydCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXR0ZXJuLCB0aGVuIGp1bXAgaW50byBzdWZmaXggc3VicGFydC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBEaWdpdHMgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgrK3BvcyA8IHBhdHRlcm4ubGVuZ3RoKCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybi5jaGFyQXQocG9zKSA9PSB6ZXJvRGlnaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytleHBEaWdpdHM7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZGlnaXRMZWZ0Q291bnQgKyB6ZXJvRGlnaXRDb3VudCkgPCAxIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cERpZ2l0cyA8IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWFsZm9ybWVkIGV4cG9uZW50aWFsICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwYXR0ZXJuIFwiIiArIHBhdHRlcm4gKyAnIicpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRyYW5zaXRpb24gdG8gc3VmZml4IHN1YnBhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIHN1YnBhcnQgPSAyOyAvLyBzdWZmaXggc3VicGFydAorICAgICAgICAgICAgICAgICAgICAgICAgYWZmaXggPSBzdWZmaXg7CisgICAgICAgICAgICAgICAgICAgICAgICBzdWIwTGltaXQgPSBwb3MtLTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTogLy8gUHJlZml4IHN1YnBhcnQKKyAgICAgICAgICAgICAgICBjYXNlIDI6IC8vIFN1ZmZpeCBzdWJwYXJ0CisgICAgICAgICAgICAgICAgICAgIC8vIFByb2Nlc3MgdGhlIHByZWZpeCAvIHN1ZmZpeCBjaGFyYWN0ZXJzCisgICAgICAgICAgICAgICAgICAgIC8vIFByb2Nlc3MgdW5xdW90ZWQgY2hhcmFjdGVycyBzZWVuIGluIHByZWZpeCBvciBzdWZmaXgKKyAgICAgICAgICAgICAgICAgICAgLy8gc3VicGFydC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoID09IGRpZ2l0IHx8CisgICAgICAgICAgICAgICAgICAgICAgICBjaCA9PSBncm91cGluZ1NlcGFyYXRvciB8fAorICAgICAgICAgICAgICAgICAgICAgICAgY2ggPT0gZGVjaW1hbFNlcGFyYXRvciB8fAorICAgICAgICAgICAgICAgICAgICAgICAgKGNoID49IHplcm9EaWdpdCAmJiBjaCA8PSBuaW5lRGlnaXQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBBbnkgb2YgdGhlc2UgY2hhcmFjdGVycyBpbXBsaWNpdGx5IGJlZ2lucyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5leHQgc3VicGFydCBpZiB3ZSBhcmUgaW4gdGhlIHByZWZpeAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1YnBhcnQgPT0gMSkgeyAvLyBwcmVmaXggc3VicGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnBhcnQgPSAwOyAvLyBwYXR0ZXJuIHByb3BlciBzdWJwYXJ0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViMFN0YXJ0ID0gcG9zLS07IC8vIFJlcHJvY2VzcyB0aGlzIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIGFwcGVuZChjaCkKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSBDVVJSRU5DWV9TSUdOKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBVc2UgbG9va2FoZWFkIHRvIGRldGVybWluZSBpZiB0aGUgY3VycmVuY3kgc2lnbiBpcworICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG91YmxlZCBvciBub3QuCisgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGRvdWJsZWQgPSAocG9zICsgMSkgPCBwYXR0ZXJuLmxlbmd0aCgpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybi5jaGFyQXQocG9zICsgMSkgPT0gQ1VSUkVOQ1lfU0lHTjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFmZml4LmFwcGVuZChkb3VibGVkID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xzLmdldEludGVybmF0aW9uYWxDdXJyZW5jeVN5bWJvbCgpIDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW1ib2xzLmdldEN1cnJlbmN5U3ltYm9sKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvdWJsZWQpICsrcG9zOyAvLyBTa2lwIG92ZXIgdGhlIGRvdWJsZWQgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgICAgICBpc0N1cnJlbmN5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09IFFVT1RFKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBBIHF1b3RlIG91dHNpZGUgcXVvdGVzIGluZGljYXRlcyBlaXRoZXIgdGhlIG9wZW5pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHF1b3RlIG9yIHR3byBxdW90ZXMsIHdoaWNoIGlzIGEgcXVvdGUgbGl0ZXJhbC4gIFRoYXQgaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIHRoZSBmaXJzdCBxdW90ZSBpbiAnZG8nIG9yIG8nJ2Nsb2NrLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwb3MrMSkgPCBwYXR0ZXJuLmxlbmd0aCgpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0dGVybi5jaGFyQXQocG9zKzEpID09IFFVT1RFKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytwb3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIGFwcGVuZChjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VicGFydCArPSAyOyAvLyBvcGVuIHF1b3RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gc2VwYXJhdG9yKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBEb24ndCBhbGxvdyBzZXBhcmF0b3JzIGluIHRoZSBwcmVmaXgsIGFuZCBkb24ndCBhbGxvdworICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2VwYXJhdG9ycyBpbiB0aGUgc2Vjb25kIHBhdHRlcm4gKHBhcnQgPT0gMSkuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3VicGFydCA9PSAxIHx8IHBhcnQgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5xdW90ZWQgc3BlY2lhbCBjaGFyYWN0ZXIgJyIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ggKyAiJyBpbiBwYXR0ZXJuIFwiIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuICsgJyInKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN1YjJMaW1pdCA9IHBvcysrOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgUEFSVExPT1A7IC8vIEdvIHRvIG5leHQgcGFydAorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoID09IHBlcmNlbnQgfHwgY2ggPT0gcGVyTWlsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTmV4dCBoYW5kbGUgY2hhcmFjdGVycyB3aGljaCBhcmUgYXBwZW5kZWQgZGlyZWN0bHkuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobXVsdGlwbGllciAhPSAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUb28gbWFueSBwZXJjZW50L3Blcm1pbGxlIGNoYXJhY3RlcnMgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiaW4gcGF0dGVybiBcIiIgKyBwYXR0ZXJuICsgJyInKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCA9PSBwZXJjZW50KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGllciA9IDEwMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaCA9IHN5bWJvbHMuZ2V0UGVyY2VudCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVyID0gMTAwMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaCA9IHN5bWJvbHMuZ2V0UGVyTWlsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoIHRvIGFwcGVuZChjaCkKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PSBwYWRFc2NhcGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYWRQb3MgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTXVsdGlwbGUgcGFkIHNwZWNpZmllcnMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocG9zKzEpID09IHBhdHRlcm4ubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgcGFkIHNwZWNpZmllciIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcGFkUG9zID0gcG9zKys7IC8vIEFkdmFuY2UgcGFzdCBwYWQgY2hhcgorICAgICAgICAgICAgICAgICAgICAgICAgcGFkQ2hhciA9IHBhdHRlcm4uY2hhckF0KHBvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBVbnF1b3RlZCwgbm9uLXNwZWNpYWwgY2hhcmFjdGVycyBmYWxsIHRocm91Z2ggdG8gaGVyZSwgYXMKKyAgICAgICAgICAgICAgICAgICAgLy8gd2VsbCBhcyBvdGhlciBjb2RlIHdoaWNoIG5lZWRzIHRvIGFwcGVuZCBzb21ldGhpbmcgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIGFmZml4LgorICAgICAgICAgICAgICAgICAgICBhZmZpeC5hcHBlbmQoY2gpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDM6IC8vIFByZWZpeCBzdWJwYXJ0LCBpbiBxdW90ZQorICAgICAgICAgICAgICAgIGNhc2UgNDogLy8gU3VmZml4IHN1YnBhcnQsIGluIHF1b3RlCisgICAgICAgICAgICAgICAgICAgIC8vIEEgcXVvdGUgd2l0aGluIHF1b3RlcyBpbmRpY2F0ZXMgZWl0aGVyIHRoZSBjbG9zaW5nCisgICAgICAgICAgICAgICAgICAgIC8vIHF1b3RlIG9yIHR3byBxdW90ZXMsIHdoaWNoIGlzIGEgcXVvdGUgbGl0ZXJhbC4gIFRoYXQgaXMsCisgICAgICAgICAgICAgICAgICAgIC8vIHdlIGhhdmUgdGhlIHNlY29uZCBxdW90ZSBpbiAnZG8nIG9yICdkb24nJ3QnLgorICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPT0gUVVPVEUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocG9zKzEpIDwgcGF0dGVybi5sZW5ndGgoKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm4uY2hhckF0KHBvcysxKSA9PSBRVU9URSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrcG9zOyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGYWxsIHRocm91Z2ggdG8gYXBwZW5kKGNoKQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJwYXJ0IC09IDI7IC8vIGNsb3NlIHF1b3RlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYWZmaXguYXBwZW5kKGNoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzdWIwTGltaXQgPT0gMCkgeworICAgICAgICAgICAgICAgIHN1YjBMaW1pdCA9IHBhdHRlcm4ubGVuZ3RoKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzdWIyTGltaXQgPT0gMCkgeworICAgICAgICAgICAgICAgIHN1YjJMaW1pdCA9IHBhdHRlcm4ubGVuZ3RoKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIEhhbmRsZSBwYXR0ZXJucyB3aXRoIG5vICcwJyBwYXR0ZXJuIGNoYXJhY3Rlci4gIFRoZXNlIHBhdHRlcm5zCisgICAgICAgICAgICAgKiBhcmUgbGVnYWwsIGJ1dCBtdXN0IGJlIHJlY29kaWZpZWQgdG8gbWFrZSBzZW5zZS4gICIjIy4jIyMiIC0+CisgICAgICAgICAgICAgKiAiIzAuIyMjIi4gICIuIyMjIiAtPiAiLjAjIyIuCisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogV2UgYWxsb3cgcGF0dGVybnMgb2YgdGhlIGZvcm0gIiMjIyMiIHRvIHByb2R1Y2UgYSB6ZXJvRGlnaXRDb3VudAorICAgICAgICAgICAgICogb2YgemVybyAoZ290IHRoYXQ/KTsgYWx0aG91Z2ggdGhpcyBzZWVtcyBsaWtlIGl0IG1pZ2h0IG1ha2UgaXQKKyAgICAgICAgICAgICAqIHBvc3NpYmxlIGZvciBmb3JtYXQoKSB0byBwcm9kdWNlIGVtcHR5IHN0cmluZ3MsIGZvcm1hdCgpIGNoZWNrcworICAgICAgICAgICAgICogZm9yIHRoaXMgY29uZGl0aW9uIGFuZCBvdXRwdXRzIGEgemVybyBkaWdpdCBpbiB0aGlzIHNpdHVhdGlvbi4KKyAgICAgICAgICAgICAqIEhhdmluZyBhIHplcm9EaWdpdENvdW50IG9mIHplcm8geWllbGRzIGEgbWluaW11bSBpbnRlZ2VyIGRpZ2l0cworICAgICAgICAgICAgICogb2YgemVybywgd2hpY2ggYWxsb3dzIHByb3BlciByb3VuZC10cmlwIHBhdHRlcm5zLiAgV2UgZG9uJ3Qgd2FudAorICAgICAgICAgICAgICogIiMiIHRvIGJlY29tZSAiIzAiIHdoZW4gdG9QYXR0ZXJuKCkgaXMgY2FsbGVkIChldmVuIHRob3VnaCB0aGF0J3MKKyAgICAgICAgICAgICAqIHdoYXQgaXQgcmVhbGx5IGlzLCBzZW1hbnRpY2FsbHkpLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoemVyb0RpZ2l0Q291bnQgPT0gMCAmJiBkaWdpdExlZnRDb3VudCA+IDAgJiYgZGVjaW1hbFBvcyA+PSAwKSB7CisgICAgICAgICAgICAgICAgLy8gSGFuZGxlICIjIyMuIyMjIiBhbmQgIiMjIy4iIGFuZCAiLiMjIyIKKyAgICAgICAgICAgICAgICBpbnQgbiA9IGRlY2ltYWxQb3M7CisgICAgICAgICAgICAgICAgaWYgKG4gPT0gMCkgKytuOyAvLyBIYW5kbGUgIi4jIyMiCisgICAgICAgICAgICAgICAgZGlnaXRSaWdodENvdW50ID0gZGlnaXRMZWZ0Q291bnQgLSBuOworICAgICAgICAgICAgICAgIGRpZ2l0TGVmdENvdW50ID0gbiAtIDE7CisgICAgICAgICAgICAgICAgemVyb0RpZ2l0Q291bnQgPSAxOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBEbyBzeW50YXggY2hlY2tpbmcgb24gdGhlIGRpZ2l0cywgZGVjaW1hbCBwb2ludHMsIGFuZCBxdW90ZXMuCisgICAgICAgICAgICBpZiAoKGRlY2ltYWxQb3MgPCAwICYmIGRpZ2l0UmlnaHRDb3VudCA+IDApIHx8CisgICAgICAgICAgICAgICAgKGRlY2ltYWxQb3MgPj0gMCAmJgorICAgICAgICAgICAgICAgICAoZGVjaW1hbFBvcyA8IGRpZ2l0TGVmdENvdW50IHx8CisgICAgICAgICAgICAgICAgICBkZWNpbWFsUG9zID4gKGRpZ2l0TGVmdENvdW50ICsgemVyb0RpZ2l0Q291bnQpKSkgfHwKKyAgICAgICAgICAgICAgICBncm91cGluZ0NvdW50ID09IDAgfHwgZ3JvdXBpbmdDb3VudDIgPT0gMCB8fAorICAgICAgICAgICAgICAgIHN1YnBhcnQgPiAyKSB7IC8vIHN1YnBhcnQgPiAyID09IHVubWF0Y2hlZCBxdW90ZQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIk1hbGZvcm1lZCBwYXR0ZXJuIFwiIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuICsgJyInKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHBhZCBpcyBhdCBsZWdhbCBwb3NpdGlvbiBiZWZvcmUgb3IgYWZ0ZXIgYWZmaXguCisgICAgICAgICAgICBpZiAocGFkUG9zID49IDApIHsKKyAgICAgICAgICAgICAgICBpZiAocGFkUG9zID09IHN0YXJ0KSB7CisgICAgICAgICAgICAgICAgICAgIHBhZFBvcyA9IFBBRF9CRUZPUkVfUFJFRklYOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFkUG9zKzIgPT0gc3ViMFN0YXJ0KSB7CisgICAgICAgICAgICAgICAgICAgIHBhZFBvcyA9IFBBRF9BRlRFUl9QUkVGSVg7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYWRQb3MgPT0gc3ViMExpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgIHBhZFBvcyA9IFBBRF9CRUZPUkVfU1VGRklYOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGFkUG9zKzIgPT0gc3ViMkxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgIHBhZFBvcyA9IFBBRF9BRlRFUl9TVUZGSVg7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCBwYWQgcG9zaXRpb24iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChwYXJ0ID09IDApIHsKKyAgICAgICAgICAgICAgICAvLyBTZXQgbmVnYXRpdmUgYWZmaXhlcyB0ZW1wb3JhcmlseSB0byBtYXRjaCB0aGUgcG9zaXRpdmUKKyAgICAgICAgICAgICAgICAvLyBhZmZpeGVzLiAgRml4IHRoaXMgdXAgbGF0ZXIgYWZ0ZXIgcHJvY2Vzc2luZyBib3RoIHBhcnRzLgorICAgICAgICAgICAgICAgIHRoaXMucG9zaXRpdmVQcmVmaXggPSB0aGlzLm5lZ2F0aXZlUHJlZml4ID0gcHJlZml4LnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgdGhpcy5wb3NpdGl2ZVN1ZmZpeCA9IHRoaXMubmVnYXRpdmVTdWZmaXggPSBzdWZmaXgudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICB1c2VFeHBvbmVudGlhbE5vdGF0aW9uID0gKGV4cERpZ2l0cyA+PSAwKTsKKyAgICAgICAgICAgICAgICBpZiAodXNlRXhwb25lbnRpYWxOb3RhdGlvbikgeworICAgICAgICAgICAgICAgICAgICBtaW5FeHBvbmVudERpZ2l0cyA9IGV4cERpZ2l0czsKKyAgICAgICAgICAgICAgICAgICAgZXhwb25lbnRTaWduQWx3YXlzU2hvd24gPSBleHBTaWduQWx3YXlzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpc0N1cnJlbmN5Rm9ybWF0ID0gaXNDdXJyZW5jeTsKKyAgICAgICAgICAgICAgICBpbnQgZGlnaXRUb3RhbENvdW50ID0gZGlnaXRMZWZ0Q291bnQgKyB6ZXJvRGlnaXRDb3VudCArIGRpZ2l0UmlnaHRDb3VudDsKKyAgICAgICAgICAgICAgICAvLyBUaGUgZWZmZWN0aXZlRGVjaW1hbFBvcyBpcyB0aGUgcG9zaXRpb24gdGhlIGRlY2ltYWwgaXMgYXQgb3IKKyAgICAgICAgICAgICAgICAvLyB3b3VsZCBiZSBhdCBpZiB0aGVyZSBpcyBubyBkZWNpbWFsLiAgTm90ZSB0aGF0IGlmCisgICAgICAgICAgICAgICAgLy8gZGVjaW1hbFBvczwwLCB0aGVuIGRpZ2l0VG90YWxDb3VudCA9PSBkaWdpdExlZnRDb3VudCArCisgICAgICAgICAgICAgICAgLy8gemVyb0RpZ2l0Q291bnQuCisgICAgICAgICAgICAgICAgaW50IGVmZmVjdGl2ZURlY2ltYWxQb3MgPSBkZWNpbWFsUG9zID49IDAgPyBkZWNpbWFsUG9zIDogZGlnaXRUb3RhbENvdW50OworICAgICAgICAgICAgICAgIHNldE1pbmltdW1JbnRlZ2VyRGlnaXRzKGVmZmVjdGl2ZURlY2ltYWxQb3MgLSBkaWdpdExlZnRDb3VudCk7CisgICAgICAgICAgICAgICAgc2V0TWF4aW11bUludGVnZXJEaWdpdHModXNlRXhwb25lbnRpYWxOb3RhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgPyBkaWdpdExlZnRDb3VudCArIGdldE1pbmltdW1JbnRlZ2VyRGlnaXRzKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIDogSW50ZWdlci5NQVhfVkFMVUUpOworICAgICAgICAgICAgICAgIHNldE1heGltdW1GcmFjdGlvbkRpZ2l0cyhkZWNpbWFsUG9zID49IDAKKyAgICAgICAgICAgICAgICAgICAgICAgID8gKGRpZ2l0VG90YWxDb3VudCAtIGRlY2ltYWxQb3MpIDogMCk7CisgICAgICAgICAgICAgICAgc2V0TWluaW11bUZyYWN0aW9uRGlnaXRzKGRlY2ltYWxQb3MgPj0gMAorICAgICAgICAgICAgICAgICAgICAgICAgPyAoZGlnaXRMZWZ0Q291bnQgKyB6ZXJvRGlnaXRDb3VudCAtIGRlY2ltYWxQb3MpIDogMCk7CisgICAgICAgICAgICAgICAgc2V0R3JvdXBpbmdVc2VkKGdyb3VwaW5nQ291bnQgPiAwKTsKKyAgICAgICAgICAgICAgICB0aGlzLmdyb3VwaW5nU2l6ZSA9IChncm91cGluZ0NvdW50ID4gMCkgPyBncm91cGluZ0NvdW50IDogMDsKKyAgICAgICAgICAgICAgICB0aGlzLmdyb3VwaW5nU2l6ZTIgPSAoZ3JvdXBpbmdDb3VudDIgPiAwICYmIGdyb3VwaW5nQ291bnQyICE9IGdyb3VwaW5nQ291bnQpCisgICAgICAgICAgICAgICAgICAgID8gZ3JvdXBpbmdDb3VudDIgOiAwOworICAgICAgICAgICAgICAgIHRoaXMubXVsdGlwbGllciA9IG11bHRpcGxpZXI7CisgICAgICAgICAgICAgICAgc2V0RGVjaW1hbFNlcGFyYXRvckFsd2F5c1Nob3duKGRlY2ltYWxQb3MgPT0gMAorICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVjaW1hbFBvcyA9PSBkaWdpdFRvdGFsQ291bnQpOworICAgICAgICAgICAgICAgIGlmIChwYWRQb3MgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICBwYWRQb3NpdGlvbiA9IHBhZFBvczsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0V2lkdGggPSBwcmVmaXgubGVuZ3RoKCkgKyBzdWZmaXgubGVuZ3RoKCkgKworICAgICAgICAgICAgICAgICAgICAgICAgc3ViMExpbWl0IC0gc3ViMFN0YXJ0OworICAgICAgICAgICAgICAgICAgICBwYWQgPSBwYWRDaGFyOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdFdpZHRoID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGluY3JlbWVudFZhbCAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEJpZ0RlY2ltYWwgc2NhbGUgY2Fubm90IGJlIG5lZ2F0aXZlIChldmVuIHRob3VnaAorICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIG1ha2VzIHBlcmZlY3Qgc2Vuc2UpLCBzbyB3ZSBuZWVkIHRvIGhhbmRsZSB0aGlzLgorICAgICAgICAgICAgICAgICAgICBpbnQgc2NhbGUgPSBpbmNyZW1lbnRQb3MgLSBlZmZlY3RpdmVEZWNpbWFsUG9zOworICAgICAgICAgICAgICAgICAgICByb3VuZGluZ0luY3JlbWVudCA9CisgICAgICAgICAgICAgICAgICAgICAgICBqYXZhLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKGluY3JlbWVudFZhbCwgc2NhbGUgPiAwID8gc2NhbGUgOiAwKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNjYWxlIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcm91bmRpbmdJbmNyZW1lbnQgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdW5kaW5nSW5jcmVtZW50Lm1vdmVQb2ludFJpZ2h0KC1zY2FsZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcm91bmRpbmdEb3VibGUgPSByb3VuZGluZ0luY3JlbWVudC5kb3VibGVWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICByb3VuZGluZ01vZGUgPSBqYXZhLm1hdGguQmlnRGVjaW1hbC5ST1VORF9IQUxGX0VWRU47CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0Um91bmRpbmdJbmNyZW1lbnQobnVsbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLm5lZ2F0aXZlUHJlZml4ID0gcHJlZml4LnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgdGhpcy5uZWdhdGl2ZVN1ZmZpeCA9IHN1ZmZpeC50b1N0cmluZygpOworICAgICAgICAgICAgICAgIGdvdE5lZ2F0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHRoZXJlIHdhcyBubyBuZWdhdGl2ZSBwYXR0ZXJuLCBvciBpZiB0aGUgbmVnYXRpdmUgcGF0dGVybiBpcworICAgICAgICAvLyBpZGVudGljYWwgdG8gdGhlIHBvc2l0aXZlIHBhdHRlcm4sIHRoZW4gcHJlcGVuZCB0aGUgbWludXMgc2lnbiB0byB0aGUKKyAgICAgICAgLy8gcG9zaXRpdmUgcGF0dGVybiB0byBmb3JtIHRoZSBuZWdhdGl2ZSBwYXR0ZXJuLgorICAgICAgICBpZiAoIWdvdE5lZ2F0aXZlIHx8CisgICAgICAgICAgICAobmVnYXRpdmVQcmVmaXguZXF1YWxzKHBvc2l0aXZlUHJlZml4KQorICAgICAgICAgICAgICYmIG5lZ2F0aXZlU3VmZml4LmVxdWFscyhwb3NpdGl2ZVN1ZmZpeCkpKSB7CisgICAgICAgICAgICBuZWdhdGl2ZVN1ZmZpeCA9IHBvc2l0aXZlU3VmZml4OworICAgICAgICAgICAgbmVnYXRpdmVQcmVmaXggPSBzeW1ib2xzLmdldE1pbnVzU2lnbigpICsgcG9zaXRpdmVQcmVmaXg7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGaXJzdCwgcmVhZCB0aGUgZGVmYXVsdCBzZXJpYWxpemFibGUgZmllbGRzIGZyb20gdGhlIHN0cmVhbS4gIFRoZW4KKyAgICAgKiBpZiA8Y29kZT5zZXJpYWxWZXJzaW9uT25TdHJlYW08L2NvZGU+IGlzIGxlc3MgdGhhbiAxLCBpbmRpY2F0aW5nIHRoYXQKKyAgICAgKiB0aGUgc3RyZWFtIHdhcyB3cml0dGVuIGJ5IEpESyAxLjEsIGluaXRpYWxpemUgPGNvZGU+dXNlRXhwb25lbnRpYWxOb3RhdGlvbjwvY29kZT4KKyAgICAgKiB0byBmYWxzZSwgc2luY2UgaXQgd2FzIG5vdCBwcmVzZW50IGluIEpESyAxLjEuCisgICAgICogRmluYWxseSwgc2V0IHNlcmlhbFZlcnNpb25PblN0cmVhbSBiYWNrIHRvIHRoZSBtYXhpbXVtIGFsbG93ZWQgdmFsdWUgc28gdGhhdAorICAgICAqIGRlZmF1bHQgc2VyaWFsaXphdGlvbiB3aWxsIHdvcmsgcHJvcGVybHkgaWYgdGhpcyBvYmplY3QgaXMgc3RyZWFtZWQgb3V0IGFnYWluLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCByZWFkT2JqZWN0KE9iamVjdElucHV0U3RyZWFtIHN0cmVhbSkKKyAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiwgQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbgorICAgIHsKKyAgICAgICAgc3RyZWFtLmRlZmF1bHRSZWFkT2JqZWN0KCk7CisgICAgICAgIGlmIChzZXJpYWxWZXJzaW9uT25TdHJlYW0gPCAyKSB7CisgICAgICAgICAgICBleHBvbmVudFNpZ25BbHdheXNTaG93biA9IGZhbHNlOworICAgICAgICAgICAgcm91bmRpbmdEb3VibGUgPSAwLjA7CisgICAgICAgICAgICByb3VuZGluZ0luY3JlbWVudCA9IG51bGw7CisgICAgICAgICAgICByb3VuZGluZ01vZGUgPSBqYXZhLm1hdGguQmlnRGVjaW1hbC5ST1VORF9IQUxGX0VWRU47CisgICAgICAgICAgICBmb3JtYXRXaWR0aCA9IDA7CisgICAgICAgICAgICBwYWQgPSAnICc7CisgICAgICAgICAgICBwYWRQb3NpdGlvbiA9IFBBRF9CRUZPUkVfUFJFRklYOworICAgICAgICAgICAgaWYgKHNlcmlhbFZlcnNpb25PblN0cmVhbSA8IDEpIHsKKyAgICAgICAgICAgICAgICAvLyBEaWRuJ3QgaGF2ZSBleHBvbmVudGlhbCBmaWVsZHMKKyAgICAgICAgICAgICAgICB1c2VFeHBvbmVudGlhbE5vdGF0aW9uID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2VyaWFsVmVyc2lvbk9uU3RyZWFtID0gY3VycmVudFNlcmlhbFZlcnNpb247CisgICAgICAgIGRpZ2l0TGlzdCA9IG5ldyBEaWdpdExpc3QoKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBJTlNUQU5DRSBWQVJJQUJMRVMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHByaXZhdGUgdHJhbnNpZW50IERpZ2l0TGlzdCBkaWdpdExpc3QgPSBuZXcgRGlnaXRMaXN0KCk7CisKKyAgICAvKioKKyAgICAgKiBUaGUgc3ltYm9sIHVzZWQgYXMgYSBwcmVmaXggd2hlbiBmb3JtYXR0aW5nIHBvc2l0aXZlIG51bWJlcnMsIGUuZy4gIisiLgorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqIEBzZWUgI2dldFBvc2l0aXZlUHJlZml4CisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgIHBvc2l0aXZlUHJlZml4ID0gIiI7CisKKyAgICAvKioKKyAgICAgKiBUaGUgc3ltYm9sIHVzZWQgYXMgYSBzdWZmaXggd2hlbiBmb3JtYXR0aW5nIHBvc2l0aXZlIG51bWJlcnMuCisgICAgICogVGhpcyBpcyBvZnRlbiBhbiBlbXB0eSBzdHJpbmcuCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNlZSAjZ2V0UG9zaXRpdmVTdWZmaXgKKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyAgcG9zaXRpdmVTdWZmaXggPSAiIjsKKworICAgIC8qKgorICAgICAqIFRoZSBzeW1ib2wgdXNlZCBhcyBhIHByZWZpeCB3aGVuIGZvcm1hdHRpbmcgbmVnYXRpdmUgbnVtYmVycywgZS5nLiAiLSIuCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNlZSAjZ2V0TmVnYXRpdmVQcmVmaXgKKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyAgbmVnYXRpdmVQcmVmaXggPSAiLSI7CisKKyAgICAvKioKKyAgICAgKiBUaGUgc3ltYm9sIHVzZWQgYXMgYSBzdWZmaXggd2hlbiBmb3JtYXR0aW5nIG5lZ2F0aXZlIG51bWJlcnMuCisgICAgICogVGhpcyBpcyBvZnRlbiBhbiBlbXB0eSBzdHJpbmcuCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNlZSAjZ2V0TmVnYXRpdmVTdWZmaXgKKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyAgbmVnYXRpdmVTdWZmaXggPSAiIjsKKworICAgIC8qKgorICAgICAqIFRoZSBtdWx0aXBsaWVyIGZvciB1c2UgaW4gcGVyY2VudCwgcGVybWlsbCwgZXRjLgorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqIEBzZWUgI2dldE11bHRpcGxpZXIKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCAgICAgbXVsdGlwbGllciA9IDE7CisgICAgCisgICAgLyoqCisgICAgICogVGhlIG51bWJlciBvZiBkaWdpdHMgYmV0d2VlbiBncm91cGluZyBzZXBhcmF0b3JzIGluIHRoZSBpbnRlZ2VyCisgICAgICogcG9ydGlvbiBvZiBhIG51bWJlci4gIE11c3QgYmUgZ3JlYXRlciB0aGFuIDAgaWYKKyAgICAgKiA8Y29kZT5OdW1iZXJGb3JtYXQuZ3JvdXBpbmdVc2VkPC9jb2RlPiBpcyB0cnVlLgorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqIEBzZWUgI2dldEdyb3VwaW5nU2l6ZQorICAgICAqIEBzZWUgTnVtYmVyRm9ybWF0I2lzR3JvdXBpbmdVc2VkCisgICAgICovCisgICAgcHJpdmF0ZSBieXRlICAgIGdyb3VwaW5nU2l6ZSA9IDM7ICAvLyBpbnZhcmlhbnQsID4gMCBpZiB1c2VUaG91c2FuZHMKKworICAgIC8qKgorICAgICAqIFRoZSBzZWNvbmRhcnkgZ3JvdXBpbmcgc2l6ZS4gIFRoaXMgaXMgb25seSB1c2VkIGZvciBIaW5kaQorICAgICAqIG51bWVyYWxzLCB3aGljaCB1c2UgYSBwcmltYXJ5IGdyb3VwaW5nIG9mIDMgYW5kIGEgc2Vjb25kYXJ5CisgICAgICogZ3JvdXBpbmcgb2YgMiwgZS5nLiwgIjEyLDM0LDU2NyIuICBJZiB0aGlzIHZhbHVlIGlzIGxlc3MgdGhhbgorICAgICAqIDEsIHRoZW4gc2Vjb25kYXJ5IGdyb3VwaW5nIGlzIGVxdWFsIHRvIHRoZSBwcmltYXJ5IGdyb3VwaW5nLgorICAgICAqIFtORVddCisgICAgICovCisgICAgcHJpdmF0ZSBieXRlICAgIGdyb3VwaW5nU2l6ZTIgPSAwOworICAgIAorICAgIC8qKgorICAgICAqIElmIHRydWUsIGZvcmNlcyB0aGUgZGVjaW1hbCBzZXBhcmF0b3IgdG8gYWx3YXlzIGFwcGVhciBpbiBhIGZvcm1hdHRlZAorICAgICAqIG51bWJlciwgZXZlbiBpZiB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIHRoZSBudW1iZXIgaXMgemVyby4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNpc0RlY2ltYWxTZXBhcmF0b3JBbHdheXNTaG93bgorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBkZWNpbWFsU2VwYXJhdG9yQWx3YXlzU2hvd24gPSBmYWxzZTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBUcnVlIGlmIHRoaXMgb2JqZWN0IHJlcHJlc2VudHMgYSBjdXJyZW5jeSBmb3JtYXQuICBUaGlzIGRldGVybWluZXMKKyAgICAgKiB3aGV0aGVyIHRoZSBtb25ldGFyeSBkZWNpbWFsIHNlcGFyYXRvciBpcyB1c2VkIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBvbmUuCisgICAgICovCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgYm9vbGVhbiBpc0N1cnJlbmN5Rm9ybWF0ID0gZmFsc2U7CisgICAgCisgICAgLyoqCisgICAgICogVGhlIDxjb2RlPkRlY2ltYWxGb3JtYXRTeW1ib2xzPC9jb2RlPiBvYmplY3QgdXNlZCBieSB0aGlzIGZvcm1hdC4KKyAgICAgKiBJdCBjb250YWlucyB0aGUgc3ltYm9scyB1c2VkIHRvIGZvcm1hdCBudW1iZXJzLCBlLmcuIHRoZSBncm91cGluZyBzZXBhcmF0b3IsCisgICAgICogZGVjaW1hbCBzZXBhcmF0b3IsIGFuZCBzbyBvbi4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNzZXREZWNpbWFsRm9ybWF0U3ltYm9scworICAgICAqIEBzZWUgRGVjaW1hbEZvcm1hdFN5bWJvbHMKKyAgICAgKi8KKyAgICBwcml2YXRlIERlY2ltYWxGb3JtYXRTeW1ib2xzIHN5bWJvbHMgPSBudWxsOyAvLyBMSVUgbmV3IERlY2ltYWxGb3JtYXRTeW1ib2xzKCk7CisKKyAgICAvKioKKyAgICAgKiBUcnVlIHRvIGZvcmNlIHRoZSB1c2Ugb2YgZXhwb25lbnRpYWwgKGkuZS4gc2NpZW50aWZpYykgbm90YXRpb24gd2hlbiBmb3JtYXR0aW5nCisgICAgICogbnVtYmVycy4KKyAgICAgKiA8cD4KKyAgICAgKiBOb3RlIHRoYXQgdGhlIEpESyAxLjIgcHVibGljIEFQSSBwcm92aWRlcyBubyB3YXkgdG8gc2V0IHRoaXMgZmllbGQsCisgICAgICogZXZlbiB0aG91Z2ggaXQgaXMgc3VwcG9ydGVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgdGhlIHN0cmVhbSBmb3JtYXQuCisgICAgICogVGhlIGludGVudCBpcyB0aGF0IHRoaXMgd2lsbCBiZSBhZGRlZCB0byB0aGUgQVBJIGluIHRoZSBmdXR1cmUuCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNpbmNlIEpESyAxLjIKKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gdXNlRXhwb25lbnRpYWxOb3RhdGlvbjsgIC8vIE5ld2x5IHBlcnNpc3RlbnQgaW4gSkRLIDEuMgorCisgICAgLyoqCisgICAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyB1c2VkIHRvIGRpc3BsYXkgdGhlIGV4cG9uZW50IHdoZW4gYSBudW1iZXIgaXMKKyAgICAgKiBmb3JtYXR0ZWQgaW4gZXhwb25lbnRpYWwgbm90YXRpb24uICBUaGlzIGZpZWxkIGlzIGlnbm9yZWQgaWYKKyAgICAgKiA8Y29kZT51c2VFeHBvbmVudGlhbE5vdGF0aW9uPC9jb2RlPiBpcyBub3QgdHJ1ZS4KKyAgICAgKiA8cD4KKyAgICAgKiBOb3RlIHRoYXQgdGhlIEpESyAxLjIgcHVibGljIEFQSSBwcm92aWRlcyBubyB3YXkgdG8gc2V0IHRoaXMgZmllbGQsCisgICAgICogZXZlbiB0aG91Z2ggaXQgaXMgc3VwcG9ydGVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiBhbmQgdGhlIHN0cmVhbSBmb3JtYXQuCisgICAgICogVGhlIGludGVudCBpcyB0aGF0IHRoaXMgd2lsbCBiZSBhZGRlZCB0byB0aGUgQVBJIGluIHRoZSBmdXR1cmUuCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNpbmNlIEpESyAxLjIKKyAgICAgKi8KKyAgICBwcml2YXRlIGJ5dGUgICAgbWluRXhwb25lbnREaWdpdHM7ICAgICAgIC8vIE5ld2x5IHBlcnNpc3RlbnQgaW4gSkRLIDEuMgorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIElmIHRydWUsIHRoZSBleHBvbmVudCBpcyBhbHdheXMgcHJlZml4ZWQgd2l0aCBlaXRoZXIgdGhlIHBsdXMKKyAgICAgKiBzaWduIG9yIHRoZSBtaW51cyBzaWduLiAgT3RoZXJ3aXNlLCBvbmx5IG5lZ2F0aXZlIGV4cG9uZW50cyBhcmUKKyAgICAgKiBwcmVmaXhlZCB3aXRoIHRoZSBtaW51cyBzaWduLiAgVGhpcyBoYXMgbm8gZWZmZWN0IHVubGVzcworICAgICAqIDxjb2RlPnVzZUV4cG9uZW50aWFsTm90YXRpb248L2NvZGU+IGlzIHRydWUuCisgICAgICogQHNlcmlhbAorICAgICAqIEBzaW5jZSBBbHBoYVdvcmtzIE51bWJlckZvcm1hdAorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBleHBvbmVudFNpZ25BbHdheXNTaG93biA9IGZhbHNlOworCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFRoZSB2YWx1ZSB0byB3aGljaCBudW1iZXJzIGFyZSByb3VuZGVkIGR1cmluZyBmb3JtYXR0aW5nLiAgRm9yIGV4YW1wbGUsCisgICAgICogaWYgdGhlIHJvdW5kaW5nIGluY3JlbWVudCBpcyAwLjA1LCB0aGVuIDEzLjM3MSB3b3VsZCBiZSBmb3JtYXR0ZWQgYXMKKyAgICAgKiAxMy4zNTAsIGFzc3VtaW5nIDMgZnJhY3Rpb24gZGlnaXRzLiAgSGFzIHRoZSB2YWx1ZSA8Y29kZT5udWxsPC9jb2RlPiBpZgorICAgICAqIHJvdW5kaW5nIGlzIG5vdCBpbiBlZmZlY3QsIG9yIGEgcG9zaXRpdmUgdmFsdWUgaWYgcm91bmRpbmcgaXMgaW4gZWZmZWN0LgorICAgICAqIERlZmF1bHQgdmFsdWUgPGNvZGU+bnVsbDwvY29kZT4uCisgICAgICogQHNlcmlhbAorICAgICAqIEBzaW5jZSBBbHBoYVdvcmtzIE51bWJlckZvcm1hdAorICAgICAqLworICAgIHByaXZhdGUgamF2YS5tYXRoLkJpZ0RlY2ltYWwgcm91bmRpbmdJbmNyZW1lbnQgPSBudWxsOworCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFRoZSByb3VuZGluZyBpbmNyZW1lbnQgYXMgYSBkb3VibGUuICBJZiB0aGlzIHZhbHVlIGlzIDw9IDAsIHRoZW4gbm8KKyAgICAgKiByb3VuZGluZyBpcyBkb25lLiAgVGhpcyB2YWx1ZSBpcworICAgICAqIDxjb2RlPnJvdW5kaW5nSW5jcmVtZW50LmRvdWJsZVZhbHVlKCk8L2NvZGU+LiAgRGVmYXVsdCB2YWx1ZSAwLjAuCisgICAgICovCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgZG91YmxlIHJvdW5kaW5nRG91YmxlID0gMC4wOworCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFRoZSByb3VuZGluZyBtb2RlLiAgVGhpcyB2YWx1ZSBjb250cm9scyBhbnkgcm91bmRpbmcgb3BlcmF0aW9ucyB3aGljaAorICAgICAqIG9jY3VyIHdoZW4gYXBwbHlpbmcgYSByb3VuZGluZyBpbmNyZW1lbnQgb3Igd2hlbiByZWR1Y2luZyB0aGUgbnVtYmVyIG9mCisgICAgICogZnJhY3Rpb24gZGlnaXRzIHRvIHNhdGlzZnkgYSBtYXhpbXVtIGZyYWN0aW9uIGRpZ2l0cyBsaW1pdC4gIFRoZSB2YWx1ZQorICAgICAqIG1heSBhc3N1bWUgYW55IG9mIHRoZSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPiByb3VuZGluZyBtb2RlIHZhbHVlcy4KKyAgICAgKiBEZWZhdWx0IHZhbHVlIDxjb2RlPkJpZ0RlY2ltYWwuUk9VTkRfSEFMRl9FVkVOPC9jb2RlPi4KKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNpbmNlIEFscGhhV29ya3MgTnVtYmVyRm9ybWF0CisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgcm91bmRpbmdNb2RlID0gamF2YS5tYXRoLkJpZ0RlY2ltYWwuUk9VTkRfSEFMRl9FVkVOOworCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFRoZSBwYWRkZWQgZm9ybWF0IHdpZHRoLCBvciB6ZXJvIGlmIHRoZXJlIGlzIG5vIHBhZGRpbmcuICBNdXN0CisgICAgICogYmUgPj0gMC4gIERlZmF1bHQgdmFsdWUgemVyby4KKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNpbmNlIEFscGhhV29ya3MgTnVtYmVyRm9ybWF0CisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZm9ybWF0V2lkdGggPSAwOworCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFRoZSBjaGFyYWN0ZXIgdXNlZCB0byBwYWQgdGhlIHJlc3VsdCBvZiBmb3JtYXQgdG8KKyAgICAgKiA8Y29kZT5mb3JtYXRXaWR0aDwvY29kZT4sIGlmIHBhZGRpbmcgaXMgaW4gZWZmZWN0LiAgRGVmYXVsdCB2YWx1ZSAnICcuCisgICAgICogQHNlcmlhbAorICAgICAqIEBzaW5jZSBBbHBoYVdvcmtzIE51bWJlckZvcm1hdAorICAgICAqLworICAgIHByaXZhdGUgY2hhciBwYWQgPSAnICc7CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogVGhlIHBvc2l0aW9uIGluIHRoZSBzdHJpbmcgYXQgd2hpY2ggdGhlIDxjb2RlPnBhZDwvY29kZT4gY2hhcmFjdGVyCisgICAgICogd2lsbCBiZSBpbnNlcnRlZCwgaWYgcGFkZGluZyBpcyBpbiBlZmZlY3QuICBNdXN0IGhhdmUgYSB2YWx1ZSBmcm9tCisgICAgICogPGNvZGU+UEFEX0JFRk9SRV9QUkVGSVg8L2NvZGU+IHRvIDxjb2RlPlBBRF9BRlRFUl9TVUZGSVg8L2NvZGU+LgorICAgICAqIERlZmF1bHQgdmFsdWUgPGNvZGU+UEFEX0JFRk9SRV9QUkVGSVg8L2NvZGU+LgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2luY2UgQWxwaGFXb3JrcyBOdW1iZXJGb3JtYXQKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBwYWRQb3NpdGlvbiA9IFBBRF9CRUZPUkVfUFJFRklYOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBzdGF0aWMgZmluYWwgaW50IGN1cnJlbnRTZXJpYWxWZXJzaW9uID0gMjsKKworICAgIC8qKgorICAgICAqIFRoZSBpbnRlcm5hbCBzZXJpYWwgdmVyc2lvbiB3aGljaCBzYXlzIHdoaWNoIHZlcnNpb24gd2FzIHdyaXR0ZW4KKyAgICAgKiBQb3NzaWJsZSB2YWx1ZXMgYXJlOgorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+PGI+MDwvYj4gKGRlZmF1bHQpOiB2ZXJzaW9ucyBiZWZvcmUgSkRLIDEuMgorICAgICAqIDxsaT48Yj4xPC9iPjogdmVyc2lvbiBmcm9tIEpESyAxLjIgYW5kIGxhdGVyLCB3aGljaCBpbmNsdWRlcyB0aGUgdHdvIG5ldyBmaWVsZHMKKyAgICAgKiAgICAgIDxjb2RlPnVzZUV4cG9uZW50aWFsTm90YXRpb248L2NvZGU+IGFuZCA8Y29kZT5taW5FeHBvbmVudERpZ2l0czwvY29kZT4uCisgICAgICogPGxpPjxiPjI8L2I+OiB2ZXJzaW9uIG9uIEFscGhhV29ya3MsIHdoaWNoIGFkZHMgcm91bmRpbmdNb2RlLCBmb3JtYXRXaWR0aCwKKyAgICAgKiAgICAgIHBhZCwgcGFkUG9zaXRpb24sIGV4cG9uZW50U2lnbkFsd2F5c1Nob3duLCByb3VuZGluZ0luY3JlbWVudC4KKyAgICAgKiA8L3VsPgorICAgICAqIEBzaW5jZSBKREsgMS4yCisgICAgICogQHNlcmlhbCAqLworICAgIHByaXZhdGUgaW50IHNlcmlhbFZlcnNpb25PblN0cmVhbSA9IGN1cnJlbnRTZXJpYWxWZXJzaW9uOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQ09OU1RBTlRTCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogQ29uc3RhbnQgZm9yIDxjb2RlPmdldFBhZFBvc2l0aW9uKCk8L2NvZGU+IGFuZAorICAgICAqIDxjb2RlPnNldFBhZFBvc2l0aW9uKCk8L2NvZGU+IHNwZWNpZnlpbmcgcGFkIGNoYXJhY3RlcnMgaW5zZXJ0ZWQgYmVmb3JlCisgICAgICogdGhlIHByZWZpeC4KKyAgICAgKiBAc2VlICNzZXRQYWRQb3NpdGlvbgorICAgICAqIEBzZWUgI2dldFBhZFBvc2l0aW9uCisgICAgICogQHNlZSAjUEFEX0FGVEVSX1BSRUZJWAorICAgICAqIEBzZWUgI1BBRF9CRUZPUkVfU1VGRklYCisgICAgICogQHNlZSAjUEFEX0FGVEVSX1NVRkZJWAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBBRF9CRUZPUkVfUFJFRklYID0gMDsKKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBDb25zdGFudCBmb3IgPGNvZGU+Z2V0UGFkUG9zaXRpb24oKTwvY29kZT4gYW5kCisgICAgICogPGNvZGU+c2V0UGFkUG9zaXRpb24oKTwvY29kZT4gc3BlY2lmeWluZyBwYWQgY2hhcmFjdGVycyBpbnNlcnRlZCBhZnRlcgorICAgICAqIHRoZSBwcmVmaXguCisgICAgICogQHNlZSAjc2V0UGFkUG9zaXRpb24KKyAgICAgKiBAc2VlICNnZXRQYWRQb3NpdGlvbgorICAgICAqIEBzZWUgI1BBRF9CRUZPUkVfUFJFRklYCisgICAgICogQHNlZSAjUEFEX0JFRk9SRV9TVUZGSVgKKyAgICAgKiBAc2VlICNQQURfQUZURVJfU1VGRklYCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEFEX0FGVEVSX1BSRUZJWCAgPSAxOworCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIENvbnN0YW50IGZvciA8Y29kZT5nZXRQYWRQb3NpdGlvbigpPC9jb2RlPiBhbmQKKyAgICAgKiA8Y29kZT5zZXRQYWRQb3NpdGlvbigpPC9jb2RlPiBzcGVjaWZ5aW5nIHBhZCBjaGFyYWN0ZXJzIGluc2VydGVkIGJlZm9yZQorICAgICAqIHRoZSBzdWZmaXguCisgICAgICogQHNlZSAjc2V0UGFkUG9zaXRpb24KKyAgICAgKiBAc2VlICNnZXRQYWRQb3NpdGlvbgorICAgICAqIEBzZWUgI1BBRF9CRUZPUkVfUFJFRklYCisgICAgICogQHNlZSAjUEFEX0FGVEVSX1BSRUZJWAorICAgICAqIEBzZWUgI1BBRF9BRlRFUl9TVUZGSVgKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQQURfQkVGT1JFX1NVRkZJWCA9IDI7CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogQ29uc3RhbnQgZm9yIDxjb2RlPmdldFBhZFBvc2l0aW9uKCk8L2NvZGU+IGFuZAorICAgICAqIDxjb2RlPnNldFBhZFBvc2l0aW9uKCk8L2NvZGU+IHNwZWNpZnlpbmcgcGFkIGNoYXJhY3RlcnMgaW5zZXJ0ZWQgYWZ0ZXIKKyAgICAgKiB0aGUgc3VmZml4LgorICAgICAqIEBzZWUgI3NldFBhZFBvc2l0aW9uCisgICAgICogQHNlZSAjZ2V0UGFkUG9zaXRpb24KKyAgICAgKiBAc2VlICNQQURfQkVGT1JFX1BSRUZJWAorICAgICAqIEBzZWUgI1BBRF9BRlRFUl9QUkVGSVgKKyAgICAgKiBAc2VlICNQQURfQkVGT1JFX1NVRkZJWAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBBRF9BRlRFUl9TVUZGSVggID0gMzsKKworICAgIC8vIENvbnN0YW50cyBmb3IgY2hhcmFjdGVycyB1c2VkIGluIHByb2dyYW1tYXRpYyAodW5sb2NhbGl6ZWQpIHBhdHRlcm5zLgorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgICAgICAgUEFUVEVSTl9aRVJPX0RJR0lUICAgICAgICAgPSAnMCc7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciAgICAgICBQQVRURVJOX0dST1VQSU5HX1NFUEFSQVRPUiA9ICcsJzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyICAgICAgIFBBVFRFUk5fREVDSU1BTF9TRVBBUkFUT1IgID0gJy4nOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgICAgICAgUEFUVEVSTl9QRVJfTUlMTEUgICAgICAgICAgPSAnXHUyMDMwJzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyICAgICAgIFBBVFRFUk5fUEVSQ0VOVCAgICAgICAgICAgID0gJyUnOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgICAgICAgUEFUVEVSTl9ESUdJVCAgICAgICAgICAgICAgPSAnIyc7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciAgICAgICBQQVRURVJOX1NFUEFSQVRPUiAgICAgICAgICA9ICc7JzsKKyAgICAgICAgICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgICAgIFBBVFRFUk5fRVhQT05FTlQgICAgICAgICAgID0gIkUiOyAvLyBbTkVXXQorICAgICAgICAgICAgc3RhdGljIGZpbmFsIGNoYXIgICAgICAgUEFUVEVSTl9QQURfRVNDQVBFICAgICAgICAgPSAnKic7IC8vIFtORVddCisgICAgICAgICAgICBzdGF0aWMgZmluYWwgY2hhciAgICAgICBQQVRURVJOX1BMVVNfU0lHTiAgICAgICAgICA9ICcrJzsgLy8gW05FV10KKyAgICAvLyBQYWQgZXNjYXBlIGlzIHBhY2thZ2UgcHJpdmF0ZSB0byBhbGxvdyBhY2Nlc3MgYnkgRGVjaW1hbEZvcm1hdFN5bWJvbHMuCisgICAgLy8gQWxzbyBwbHVzIHNpZ24uICBBbHNvIGV4cG9uZW50LgorCisgICAgLyoqCisgICAgICogVGhlIENVUlJFTkNZX1NJR04gaXMgdGhlIHN0YW5kYXJkIFVuaWNvZGUgc3ltYm9sIGZvciBjdXJyZW5jeS4gIEl0CisgICAgICogaXMgdXNlZCBpbiBwYXR0ZXJucyBhbmQgc3Vic3RpdHVlZCB3aXRoIGVpdGhlciB0aGUgY3VycmVuY3kgc3ltYm9sLAorICAgICAqIG9yIGlmIGl0IGlzIGRvdWJsZWQsIHdpdGggdGhlIGludGVybmF0aW9uYWwgY3VycmVuY3kgc3ltYm9sLiAgSWYgdGhlCisgICAgICogQ1VSUkVOQ1lfU0lHTiBpcyBzZWVuIGluIGEgcGF0dGVybiwgdGhlbiB0aGUgZGVjaW1hbCBzZXBhcmF0b3IgaXMKKyAgICAgKiByZXBsYWNlZCB3aXRoIHRoZSBtb25ldGFyeSBkZWNpbWFsIHNlcGFyYXRvci4KKyAgICAgKgorICAgICAqIFRoZSBDVVJSRU5DWV9TSUdOIGlzIG5vdCBsb2NhbGl6ZWQuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciAgICAgICBDVVJSRU5DWV9TSUdOID0gJ1x1MDBBNCc7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyICAgICAgIFFVT1RFID0gJ1wnJzsKKworICAgIC8vIFByb2NsYWltIEpESyAxLjEgc2VyaWFsIGNvbXBhdGliaWxpdHkuCisgICAgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDg2NDQxMzM3NjU1MTQ2NTAxOEw7CisKKyAgICAvKioKKyAgICAgKiBDYWNoZSB0byBob2xkIHRoZSBOdW1iZXJQYXR0ZXJuIG9mIGEgTG9jYWxlLgorICAgICAqIFtORVddIE5vIGxvbmdlciBuZWVkZWQgLS0gc2hhcmUgdGhlIE51bWJlckZvcm1hdCBjYWNoZQorICAgICAqLworICAgIC8vIHByaXZhdGUgc3RhdGljIEhhc2h0YWJsZSBjYWNoZWRMb2NhbGVEYXRhID0gbmV3IEhhc2h0YWJsZSgzKTsKK30KKworLy9lb2YKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvRGVjaW1hbEZvcm1hdFN5bWJvbHMuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvRGVjaW1hbEZvcm1hdFN5bWJvbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42NzYxYjIwNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvRGVjaW1hbEZvcm1hdFN5bWJvbHMuamF2YQpAQCAtMCwwICsxLDYxOSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9BdHRpYy9EZWNpbWFsRm9ybWF0U3ltYm9scy5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDA0OjA3OjE5ICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXh0OworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLk9iamVjdElucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7CisKKy8qKgorICogVGhpcyBjbGFzcyByZXByZXNlbnRzIHRoZSBzZXQgb2Ygc3ltYm9scyAoc3VjaCBhcyB0aGUgZGVjaW1hbCBzZXBhcmF0b3IsIHRoZQorICogZ3JvdXBpbmcgc2VwYXJhdG9yLCBhbmQgc28gb24pIG5lZWRlZCBieSA8Y29kZT5EZWNpbWFsRm9ybWF0PC9jb2RlPiB0byBmb3JtYXQKKyAqIG51bWJlcnMuIDxjb2RlPkRlY2ltYWxGb3JtYXQ8L2NvZGU+IGNyZWF0ZXMgZm9yIGl0c2VsZiBhbiBpbnN0YW5jZSBvZgorICogPGNvZGU+RGVjaW1hbEZvcm1hdFN5bWJvbHM8L2NvZGU+IGZyb20gaXRzIGxvY2FsZSBkYXRhLiAgSWYgeW91IG5lZWQgdG8KKyAqIGNoYW5nZSBhbnkgb2YgdGhlc2Ugc3ltYm9scywgeW91IGNhbiBnZXQgdGhlCisgKiA8Y29kZT5EZWNpbWFsRm9ybWF0U3ltYm9sczwvY29kZT4gb2JqZWN0IGZyb20geW91ciA8Y29kZT5EZWNpbWFsRm9ybWF0PC9jb2RlPgorICogYW5kIG1vZGlmeSBpdC4KKyAqCisgKiA8cD48c3Ryb25nPlRoaXMgaXMgYW4gZW5oYW5jZWQgdmVyc2lvbiBvZiA8Y29kZT5EZWNpbWFsRm9ybWF0U3ltYm9sczwvY29kZT4gdGhhdAorICogaXMgYmFzZWQgb24gdGhlIHN0YW5kYXJkIHZlcnNpb24gaW4gdGhlIEpESy4gIE5ldyBvciBjaGFuZ2VkIGZ1bmN0aW9uYWxpdHkKKyAqIGlzIGxhYmVsZWQKKyAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4uPC9zdHJvbmc+CisgKgorICogQHNlZSAgICAgICAgICBqYXZhLnV0aWwuTG9jYWxlCisgKiBAc2VlICAgICAgICAgIERlY2ltYWxGb3JtYXQKKyAqIEB2ZXJzaW9uICAgICAgMS4xMiAyOSBKYW4gMTk5NworICogQGF1dGhvciAgICAgICBNYXJrIERhdmlzCisgKiBAYXV0aG9yICAgICAgIEFsYW4gTGl1CisgKi8KKworZmluYWwgcHVibGljIGNsYXNzIERlY2ltYWxGb3JtYXRTeW1ib2xzIGltcGxlbWVudHMgQ2xvbmVhYmxlLCBTZXJpYWxpemFibGUgeworCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgRGVjaW1hbEZvcm1hdFN5bWJvbHMgb2JqZWN0IGZvciB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICovCisgICAgcHVibGljIERlY2ltYWxGb3JtYXRTeW1ib2xzKCkgeworICAgICAgICBpbml0aWFsaXplKCBMb2NhbGUuZ2V0RGVmYXVsdCgpICk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgRGVjaW1hbEZvcm1hdFN5bWJvbHMgb2JqZWN0IGZvciB0aGUgZ2l2ZW4gbG9jYWxlLgorICAgICAqLworICAgIHB1YmxpYyBEZWNpbWFsRm9ybWF0U3ltYm9scyggTG9jYWxlIGxvY2FsZSApIHsKKyAgICAgICAgaW5pdGlhbGl6ZSggbG9jYWxlICk7CisgICAgfQorCisgICAgLyoqCisgICAgICogY2hhcmFjdGVyIHVzZWQgZm9yIHplcm8uIERpZmZlcmVudCBmb3IgQXJhYmljLCBldGMuCisgICAgICovCisgICAgcHVibGljIGNoYXIgZ2V0WmVyb0RpZ2l0KCkgeworICAgICAgICByZXR1cm4gemVyb0RpZ2l0OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFplcm9EaWdpdChjaGFyIHplcm9EaWdpdCkgeworICAgICAgICB0aGlzLnplcm9EaWdpdCA9IHplcm9EaWdpdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBjaGFyYWN0ZXIgdXNlZCBmb3IgdGhvdXNhbmRzIHNlcGFyYXRvci4gRGlmZmVyZW50IGZvciBGcmVuY2gsIGV0Yy4KKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBnZXRHcm91cGluZ1NlcGFyYXRvcigpIHsKKyAgICAgICAgcmV0dXJuIGdyb3VwaW5nU2VwYXJhdG9yOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEdyb3VwaW5nU2VwYXJhdG9yKGNoYXIgZ3JvdXBpbmdTZXBhcmF0b3IpIHsKKyAgICAgICAgdGhpcy5ncm91cGluZ1NlcGFyYXRvciA9IGdyb3VwaW5nU2VwYXJhdG9yOworICAgIH0KKworICAgIC8qKgorICAgICAqIGNoYXJhY3RlciB1c2VkIGZvciBkZWNpbWFsIHNpZ24uIERpZmZlcmVudCBmb3IgRnJlbmNoLCBldGMuCisgICAgICovCisgICAgcHVibGljIGNoYXIgZ2V0RGVjaW1hbFNlcGFyYXRvcigpIHsKKyAgICAgICAgcmV0dXJuIGRlY2ltYWxTZXBhcmF0b3I7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RGVjaW1hbFNlcGFyYXRvcihjaGFyIGRlY2ltYWxTZXBhcmF0b3IpIHsKKyAgICAgICAgdGhpcy5kZWNpbWFsU2VwYXJhdG9yID0gZGVjaW1hbFNlcGFyYXRvcjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBjaGFyYWN0ZXIgdXNlZCBmb3IgbWlsbGUgcGVyY2VudCBzaWduLiBEaWZmZXJlbnQgZm9yIEFyYWJpYywgZXRjLgorICAgICAqLworICAgIHB1YmxpYyBjaGFyIGdldFBlck1pbGwoKSB7CisgICAgICAgIHJldHVybiBwZXJNaWxsOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFBlck1pbGwoY2hhciBwZXJNaWxsKSB7CisgICAgICAgIHRoaXMucGVyTWlsbCA9IHBlck1pbGw7CisgICAgfQorCisgICAgLyoqCisgICAgICogY2hhcmFjdGVyIHVzZWQgZm9yIHBlcmNlbnQgc2lnbi4gRGlmZmVyZW50IGZvciBBcmFiaWMsIGV0Yy4KKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBnZXRQZXJjZW50KCkgeworICAgICAgICByZXR1cm4gcGVyY2VudDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRQZXJjZW50KGNoYXIgcGVyY2VudCkgeworICAgICAgICB0aGlzLnBlcmNlbnQgPSBwZXJjZW50OworICAgIH0KKworICAgIC8qKgorICAgICAqIGNoYXJhY3RlciB1c2VkIGZvciBhIGRpZ2l0IGluIGEgcGF0dGVybi4KKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBnZXREaWdpdCgpIHsKKyAgICAgICAgcmV0dXJuIGRpZ2l0OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldERpZ2l0KGNoYXIgZGlnaXQpIHsKKyAgICAgICAgdGhpcy5kaWdpdCA9IGRpZ2l0OworICAgIH0KKworICAgIC8qKgorICAgICAqIGNoYXJhY3RlciB1c2VkIHRvIHNlcGFyYXRlIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBzdWJwYXR0ZXJucworICAgICAqIGluIGEgcGF0dGVybi4KKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBnZXRQYXR0ZXJuU2VwYXJhdG9yKCkgeworICAgICAgICByZXR1cm4gcGF0dGVyblNlcGFyYXRvcjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRQYXR0ZXJuU2VwYXJhdG9yKGNoYXIgcGF0dGVyblNlcGFyYXRvcikgeworICAgICAgICB0aGlzLnBhdHRlcm5TZXBhcmF0b3IgPSBwYXR0ZXJuU2VwYXJhdG9yOworICAgIH0KKworICAgIC8qKgorICAgICAqIGNoYXJhY3RlciB1c2VkIHRvIHJlcHJlc2VudCBpbmZpbml0eS4gQWxtb3N0IGFsd2F5cyBsZWZ0CisgICAgICogdW5jaGFuZ2VkLgorICAgICAqLworCisgICAgcHVibGljIFN0cmluZyBnZXRJbmZpbml0eSgpIHsKKyAgICAgICAgcmV0dXJuIGluZmluaXR5OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEluZmluaXR5KFN0cmluZyBpbmZpbml0eSkgeworICAgICAgICB0aGlzLmluZmluaXR5ID0gaW5maW5pdHk7CisgICAgfQorCisgICAgLyoqCisgICAgICogY2hhcmFjdGVyIHVzZWQgdG8gcmVwcmVzZW50IE5hTi4gQWxtb3N0IGFsd2F5cyBsZWZ0CisgICAgICogdW5jaGFuZ2VkLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFOKCkgeworICAgICAgICByZXR1cm4gTmFOOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE5hTihTdHJpbmcgTmFOKSB7CisgICAgICAgIHRoaXMuTmFOID0gTmFOOworICAgIH0KKworICAgIC8qKgorICAgICAqIGNoYXJhY3RlciB1c2VkIHRvIHJlcHJlc2VudCBtaW51cyBzaWduLiBJZiBubyBleHBsaWNpdAorICAgICAqIG5lZ2F0aXZlIGZvcm1hdCBpcyBzcGVjaWZpZWQsIG9uZSBpcyBmb3JtZWQgYnkgcHJlZml4aW5nCisgICAgICogbWludXNTaWduIHRvIHRoZSBwb3NpdGl2ZSBmb3JtYXQuCisgICAgICovCisgICAgcHVibGljIGNoYXIgZ2V0TWludXNTaWduKCkgeworICAgICAgICByZXR1cm4gbWludXNTaWduOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1pbnVzU2lnbihjaGFyIG1pbnVzU2lnbikgeworICAgICAgICB0aGlzLm1pbnVzU2lnbiA9IG1pbnVzU2lnbjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHN0cmluZyBkZW5vdGluZyB0aGUgbG9jYWwgY3VycmVuY3kuCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXRDdXJyZW5jeVN5bWJvbCgpCisgICAgeworICAgICAgICByZXR1cm4gY3VycmVuY3lTeW1ib2w7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBzdHJpbmcgZGVub3RpbmcgdGhlIGxvY2FsIGN1cnJlbmN5LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEN1cnJlbmN5U3ltYm9sKFN0cmluZyBjdXJyZW5jeSkKKyAgICB7CisgICAgICAgIGN1cnJlbmN5U3ltYm9sID0gY3VycmVuY3k7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBpbnRlcm5hdGlvbmFsIHN0cmluZyBkZW5vdGluZyB0aGUgbG9jYWwgY3VycmVuY3kuCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXRJbnRlcm5hdGlvbmFsQ3VycmVuY3lTeW1ib2woKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGludGxDdXJyZW5jeVN5bWJvbDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGludGVybmF0aW9uYWwgc3RyaW5nIGRlbm90aW5nIHRoZSBsb2NhbCBjdXJyZW5jeS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRJbnRlcm5hdGlvbmFsQ3VycmVuY3lTeW1ib2woU3RyaW5nIGN1cnJlbmN5KQorICAgIHsKKyAgICAgICAgaW50bEN1cnJlbmN5U3ltYm9sID0gY3VycmVuY3k7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBtb25ldGFyeSBkZWNpbWFsIHNlcGFyYXRvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBnZXRNb25ldGFyeURlY2ltYWxTZXBhcmF0b3IoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1vbmV0YXJ5U2VwYXJhdG9yOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgbW9uZXRhcnkgZGVjaW1hbCBzZXBhcmF0b3IuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TW9uZXRhcnlEZWNpbWFsU2VwYXJhdG9yKGNoYXIgc2VwKQorICAgIHsKKyAgICAgICAgbW9uZXRhcnlTZXBhcmF0b3IgPSBzZXA7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFJldHVybiB0aGUgc3RyaW5nIHVzZWQgdG8gc2VwYXJhdGUgdGhlIG1hbnRpc3NhIGZyb20gdGhlIGV4cG9uZW50LgorICAgICAqIEV4YW1wbGVzOiAieDEwXiIgZm9yIDEuMjN4MTBeNCwgIkUiIGZvciAxLjIzRTQuCisgICAgICogQHJldHVybiB0aGUgbG9jYWxpemVkIGV4cG9uZW50IHN5bWJvbCwgdXNlZCBpbiBsb2NhbGl6ZWQgcGF0dGVybnMKKyAgICAgKiBhbmQgZm9ybWF0dGVkIHN0cmluZ3MKKyAgICAgKiBAc2VlICNzZXRFeHBvbmVudFNlcGFyYXRvcgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0RXhwb25lbnRTZXBhcmF0b3IoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGV4cG9uZW50U2VwYXJhdG9yOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBTZXQgdGhlIHN0cmluZyB1c2VkIHRvIHNlcGFyYXRlIHRoZSBtYW50aXNzYSBmcm9tIHRoZSBleHBvbmVudC4KKyAgICAgKiBFeGFtcGxlczogIngxMF4iIGZvciAxLjIzeDEwXjQsICJFIiBmb3IgMS4yM0U0LgorICAgICAqIEBwYXJhbSBleHAgdGhlIGxvY2FsaXplZCBleHBvbmVudCBzeW1ib2wsIHVzZWQgaW4gbG9jYWxpemVkIHBhdHRlcm5zCisgICAgICogYW5kIGZvcm1hdHRlZCBzdHJpbmdzCisgICAgICogQHNlZSAjZ2V0RXhwb25lbnRTZXBhcmF0b3IKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRFeHBvbmVudFNlcGFyYXRvcihTdHJpbmcgZXhwKQorICAgIHsKKyAgICAgICAgZXhwb25lbnRTZXBhcmF0b3IgPSBleHA7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFJldHVybiB0aGUgbG9jYWxpemVkIHBsdXMgc2lnbi4KKyAgICAgKiBAcmV0dXJuIHRoZSBwbHVzIHNpZ24sIHVzZWQgaW4gbG9jYWxpemVkIHBhdHRlcm5zIGFuZCBmb3JtYXR0ZWQKKyAgICAgKiBzdHJpbmdzCisgICAgICogQHNlZSAjc2V0UGx1c1NpZ24KKyAgICAgKiBAc2VlICNzZXRNaW51c1NpZ24KKyAgICAgKiBAc2VlICNnZXRNaW51c1NpZ24KKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBnZXRQbHVzU2lnbigpIHsKKyAgICAgICAgcmV0dXJuIHBsdXNTaWduOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBTZXQgdGhlIGxvY2FsaXplZCBwbHVzIHNpZ24uCisgICAgICogQHBhcmFtIHBsdXMgdGhlIHBsdXMgc2lnbiwgdXNlZCBpbiBsb2NhbGl6ZWQgcGF0dGVybnMgYW5kIGZvcm1hdHRlZAorICAgICAqIHN0cmluZ3MKKyAgICAgKiBAc2VlICNnZXRQbHVzU2lnbgorICAgICAqIEBzZWUgI3NldE1pbnVzU2lnbgorICAgICAqIEBzZWUgI2dldE1pbnVzU2lnbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFBsdXNTaWduKGNoYXIgcGx1cykgeworICAgICAgICBwbHVzU2lnbiA9IHBsdXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFJldHVybiB0aGUgY2hhcmFjdGVyIHVzZWQgdG8gcGFkIG51bWJlcnMgb3V0IHRvIGEgc3BlY2lmaWVkIHdpZHRoLiAgVGhpcworICAgICAqIGlzIG5vdCB0aGUgcGFkIGNoYXJhY3RlciBpdHNlbGY7IHJhdGhlciwgaXQgaXMgdGhlIHNwZWNpYWwgcGF0dGVybgorICAgICAqIGNoYXJhY3RlciA8ZW0+cHJlY2VkaW5nPC9lbT4gdGhlIHBhZCBjaGFyYWN0ZXIuICBJbiB0aGUgcGF0dGVybgorICAgICAqICIqXyMsIyMwIiwgJyonIGlzIHRoZSBwYWQgZXNjYXBlLCBhbmQgJ18nIGlzIHRoZSBwYWQgY2hhcmFjdGVyLgorICAgICAqIEByZXR1cm4gdGhlIGNoYXJhY3RlciAKKyAgICAgKiBAc2VlICNzZXRQYWRFc2NhcGUKKyAgICAgKiBAc2VlIERlY2ltYWxGb3JtYXQjZ2V0Rm9ybWF0V2lkdGgKKyAgICAgKiBAc2VlIERlY2ltYWxGb3JtYXQjZ2V0UGFkUG9zaXRpb24KKyAgICAgKiBAc2VlIERlY2ltYWxGb3JtYXQjZ2V0UGFkQ2hhcmFjdGVyCisgICAgICovCisgICAgcHVibGljIGNoYXIgZ2V0UGFkRXNjYXBlKCkgeworICAgICAgICByZXR1cm4gcGFkRXNjYXBlOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBTZXQgdGhlIGNoYXJhY3RlciB1c2VkIHRvIHBhZCBudW1iZXJzIG91dCB0byBhIHNwZWNpZmllZCB3aWR0aC4gIFRoaXMgaXMKKyAgICAgKiBub3QgdGhlIHBhZCBjaGFyYWN0ZXIgaXRzZWxmOyByYXRoZXIsIGl0IGlzIHRoZSBzcGVjaWFsIHBhdHRlcm4gY2hhcmFjdGVyCisgICAgICogPGVtPnByZWNlZGluZzwvZW0+IHRoZSBwYWQgY2hhcmFjdGVyLiAgSW4gdGhlIHBhdHRlcm4gIipfIywjIzAiLCAnKicgaXMKKyAgICAgKiB0aGUgcGFkIGVzY2FwZSwgYW5kICdfJyBpcyB0aGUgcGFkIGNoYXJhY3Rlci4KKyAgICAgKiBAc2VlICNnZXRQYWRFc2NhcGUKKyAgICAgKiBAc2VlIERlY2ltYWxGb3JtYXQjc2V0Rm9ybWF0V2lkdGgKKyAgICAgKiBAc2VlIERlY2ltYWxGb3JtYXQjc2V0UGFkUG9zaXRpb24KKyAgICAgKiBAc2VlIERlY2ltYWxGb3JtYXQjc2V0UGFkQ2hhcmFjdGVyCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0UGFkRXNjYXBlKGNoYXIgYykgeworICAgICAgICBwYWRFc2NhcGUgPSBjOworICAgIH0KKworICAgIC8qKgorICAgICAqIFN0YW5kYXJkIG92ZXJyaWRlLgorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gKERlY2ltYWxGb3JtYXRTeW1ib2xzKXN1cGVyLmNsb25lKCk7CisgICAgICAgICAgICAvLyBvdGhlciBmaWVsZHMgYXJlIGJpdC1jb3BpZWQKKyAgICAgICAgfSBjYXRjaCAoQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlIGVxdWFscworICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7CisgICAgICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAodGhpcyA9PSBvYmopIHJldHVybiB0cnVlOworICAgICAgICBpZiAoZ2V0Q2xhc3MoKSAhPSBvYmouZ2V0Q2xhc3MoKSkgcmV0dXJuIGZhbHNlOworICAgICAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyBvdGhlciA9IChEZWNpbWFsRm9ybWF0U3ltYm9scykgb2JqOworICAgICAgICByZXR1cm4gKHplcm9EaWdpdCA9PSBvdGhlci56ZXJvRGlnaXQgJiYKKyAgICAgICAgZ3JvdXBpbmdTZXBhcmF0b3IgPT0gb3RoZXIuZ3JvdXBpbmdTZXBhcmF0b3IgJiYKKyAgICAgICAgZGVjaW1hbFNlcGFyYXRvciA9PSBvdGhlci5kZWNpbWFsU2VwYXJhdG9yICYmCisgICAgICAgIHBlcmNlbnQgPT0gb3RoZXIucGVyY2VudCAmJgorICAgICAgICBwZXJNaWxsID09IG90aGVyLnBlck1pbGwgJiYKKyAgICAgICAgZGlnaXQgPT0gb3RoZXIuZGlnaXQgJiYKKyAgICAgICAgbWludXNTaWduID09IG90aGVyLm1pbnVzU2lnbiAmJgorICAgICAgICBwYXR0ZXJuU2VwYXJhdG9yID09IG90aGVyLnBhdHRlcm5TZXBhcmF0b3IgJiYKKyAgICAgICAgaW5maW5pdHkuZXF1YWxzKG90aGVyLmluZmluaXR5KSAmJgorICAgICAgICBOYU4uZXF1YWxzKG90aGVyLk5hTikgJiYKKyAgICAgICAgY3VycmVuY3lTeW1ib2wuZXF1YWxzKG90aGVyLmN1cnJlbmN5U3ltYm9sKSAmJgorICAgICAgICBpbnRsQ3VycmVuY3lTeW1ib2wuZXF1YWxzKG90aGVyLmludGxDdXJyZW5jeVN5bWJvbCkgJiYKKyAgICAgICAgcGFkRXNjYXBlID09IG90aGVyLnBhZEVzY2FwZSAmJiAvLyBbTkVXXQorICAgICAgICBwbHVzU2lnbiA9PSBvdGhlci5wbHVzU2lnbiAmJiAvLyBbTkVXXQorICAgICAgICBleHBvbmVudFNlcGFyYXRvci5lcXVhbHMob3RoZXIuZXhwb25lbnRTZXBhcmF0b3IpICYmIC8vIFtORVddCisgICAgICAgIG1vbmV0YXJ5U2VwYXJhdG9yID09IG90aGVyLm1vbmV0YXJ5U2VwYXJhdG9yKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBoYXNoQ29kZQorICAgICAqLworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgICAgICBpbnQgcmVzdWx0ID0gemVyb0RpZ2l0OworICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMzcgKyBncm91cGluZ1NlcGFyYXRvcjsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDM3ICsgZGVjaW1hbFNlcGFyYXRvcjsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW5pdGlhbGl6ZXMgdGhlIHN5bWJvbHMgZnJvbSB0aGUgTG9jYWxlRWxlbWVudHMgcmVzb3VyY2UgYnVuZGxlLgorICAgICAqIE5vdGU6IFRoZSBvcmdhbml6YXRpb24gb2YgTG9jYWxlRWxlbWVudHMgYmFkbHkgbmVlZHMgdG8gYmUKKyAgICAgKiBjbGVhbmVkIHVwLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBpbml0aWFsaXplKCBMb2NhbGUgbG9jYWxlICkgeworICAgICAgICAvKiB0cnkgdGhlIGNhY2hlIGZpcnN0ICovCisgICAgICAgIFN0cmluZ1tdW10gZGF0YSA9IChTdHJpbmdbXVtdKSBjYWNoZWRMb2NhbGVEYXRhLmdldChsb2NhbGUpOworICAgICAgICBTdHJpbmdbXSBudW1iZXJFbGVtZW50czsKKyAgICAgICAgU3RyaW5nW10gY3VycmVuY3lFbGVtZW50czsKKyAgICAgICAgaWYgKGRhdGEgPT0gbnVsbCkgeyAgLyogY2FjaGUgbWlzcyAqLworICAgICAgICAgICAgZGF0YSA9IG5ldyBTdHJpbmdbMl1bXTsKKyAgICAgICAgICAgIFJlc291cmNlQnVuZGxlIHJiID0gUmVzb3VyY2VCdW5kbGUuZ2V0QnVuZGxlCisgICAgICAgICAgICAgICAgKE51bWJlckZvcm1hdC5SRVNPVVJDRV9CQVNFLCBsb2NhbGUpOyAvLyBbTkVXXSBUZW1wb3JhcnkKKyAgICAgICAgICAgIGRhdGFbMF0gPSByYi5nZXRTdHJpbmdBcnJheSgiTnVtYmVyRWxlbWVudHMiKTsKKyAgICAgICAgICAgIGRhdGFbMV0gPSByYi5nZXRTdHJpbmdBcnJheSgiQ3VycmVuY3lFbGVtZW50cyIpOworICAgICAgICAgICAgLyogdXBkYXRlIGNhY2hlICovCisgICAgICAgICAgICBjYWNoZWRMb2NhbGVEYXRhLnB1dChsb2NhbGUsIGRhdGEpOworICAgICAgICB9CisgICAgICAgIG51bWJlckVsZW1lbnRzID0gZGF0YVswXTsKKyAgICAgICAgY3VycmVuY3lFbGVtZW50cyA9IGRhdGFbMV07CisKKyAgICAgICAgZGVjaW1hbFNlcGFyYXRvciA9IG51bWJlckVsZW1lbnRzWzBdLmNoYXJBdCgwKTsKKyAgICAgICAgZ3JvdXBpbmdTZXBhcmF0b3IgPSBudW1iZXJFbGVtZW50c1sxXS5jaGFyQXQoMCk7CisgICAgICAgIC8vIFtORVddIFRlbXBvcmFyeSBoYWNrIHRvIHN1cHBvcnQgb2xkIEpESyAxLjEgcmVzb3VyY2VzCisgICAgICAgIHBhdHRlcm5TZXBhcmF0b3IgPSBudW1iZXJFbGVtZW50c1syXS5sZW5ndGgoKSA+IDAgPworICAgICAgICAgICAgbnVtYmVyRWxlbWVudHNbMl0uY2hhckF0KDApIDogJzsnOworICAgICAgICAvLyBwYXR0ZXJuU2VwYXJhdG9yID0gbnVtYmVyRWxlbWVudHNbMl0uY2hhckF0KDApOworICAgICAgICBwZXJjZW50ID0gbnVtYmVyRWxlbWVudHNbM10uY2hhckF0KDApOworICAgICAgICB6ZXJvRGlnaXQgPSBudW1iZXJFbGVtZW50c1s0XS5jaGFyQXQoMCk7IC8vZGlmZmVyZW50IGZvciBBcmFiaWMsZXRjLgorICAgICAgICBkaWdpdCA9IG51bWJlckVsZW1lbnRzWzVdLmNoYXJBdCgwKTsKKyAgICAgICAgbWludXNTaWduID0gbnVtYmVyRWxlbWVudHNbNl0uY2hhckF0KDApOworICAgICAgICAKKyAgICAgICAgLy8gW05FV10gVGVtcG9yYXJ5IGhhY2sgdG8gc3VwcG9ydCBKREsgdmVyc2lvbnMgYmVmb3JlIDEuMS42ICg/KQorICAgICAgICBleHBvbmVudFNlcGFyYXRvciA9IG51bWJlckVsZW1lbnRzLmxlbmd0aCA+PSA5ID8KKyAgICAgICAgICAgIG51bWJlckVsZW1lbnRzWzddIDogRGVjaW1hbEZvcm1hdC5QQVRURVJOX0VYUE9ORU5UOworICAgICAgICBwZXJNaWxsID0gbnVtYmVyRWxlbWVudHMubGVuZ3RoID49IDkgPworICAgICAgICAgICAgbnVtYmVyRWxlbWVudHNbOF0uY2hhckF0KDApIDogJ1x1MjAzMCc7CisgICAgICAgIGluZmluaXR5ICA9IG51bWJlckVsZW1lbnRzLmxlbmd0aCA+PSAxMCA/CisgICAgICAgICAgICBudW1iZXJFbGVtZW50c1s5XSA6ICJcdTIyMWUiOworICAgICAgICBOYU4gPSBudW1iZXJFbGVtZW50cy5sZW5ndGggPj0gMTEgPworICAgICAgICAgICAgbnVtYmVyRWxlbWVudHNbMTBdIDogIlx1ZmZmZCI7CisgICAgICAgIAorICAgICAgICAvLyBbTkVXXSBUZW1wb3JhcmlseSBoYXJkIGNvZGU7IHJldHJpZXZlIGZyb20gcmVzb3VyY2UgbGF0ZXIKKyAgICAgICAgcGx1c1NpZ24gID0gRGVjaW1hbEZvcm1hdC5QQVRURVJOX1BMVVNfU0lHTjsKKyAgICAgICAgcGFkRXNjYXBlID0gRGVjaW1hbEZvcm1hdC5QQVRURVJOX1BBRF9FU0NBUEU7CisKKyAgICAgICAgY3VycmVuY3lTeW1ib2wgPSBjdXJyZW5jeUVsZW1lbnRzWzBdOworICAgICAgICBpbnRsQ3VycmVuY3lTeW1ib2wgPSBjdXJyZW5jeUVsZW1lbnRzWzFdOworCisgICAgICAgIC8vIGlmIHRoZSByZXNvdXJjZSBkYXRhIHNwZWNpZmllZCB0aGUgZW1wdHkgc3RyaW5nIGFzIHRoZSBtb25ldGFyeSBkZWNpbWFsCisgICAgICAgIC8vIHNlcGFyYXRvciwgdGhhdCBtZWFucyB3ZSBzaG91bGQganVzdCB1c2UgdGhlIHJlZ3VsYXIgc2VwYXJhdG9yIGFzIHRoZQorICAgICAgICAvLyBtb25ldGFyeSBzZXBhcmF0b3IKKyAgICAgICAgaWYgKGN1cnJlbmN5RWxlbWVudHNbMl0ubGVuZ3RoKCkgPT0gMCkKKyAgICAgICAgICAgIG1vbmV0YXJ5U2VwYXJhdG9yID0gZGVjaW1hbFNlcGFyYXRvcjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbW9uZXRhcnlTZXBhcmF0b3IgPSBjdXJyZW5jeUVsZW1lbnRzWzJdLmNoYXJBdCgwKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWFkIHRoZSBkZWZhdWx0IHNlcmlhbGl6YWJsZSBmaWVsZHMsIHRoZW4gaWYgPGNvZGU+c2VyaWFsVmVyc2lvbk9uU3RyZWFtPC9jb2RlPgorICAgICAqIGlzIGxlc3MgdGhhbiAxLCBpbml0aWFsaXplIDxjb2RlPm1vbmV0YXJ5U2VwYXJhdG9yPC9jb2RlPiB0byBiZQorICAgICAqIHRoZSBzYW1lIGFzIDxjb2RlPmRlY2ltYWxTZXBhcmF0b3I8L2NvZGU+IGFuZCA8Y29kZT5leHBvbmVudGlhbDwvY29kZT4KKyAgICAgKiB0byBiZSAnRScuCisgICAgICogRmluYWxseSwgc2V0IHNlcmlhbFZlcnNpb25PblN0cmVhbSBiYWNrIHRvIHRoZSBtYXhpbXVtIGFsbG93ZWQgdmFsdWUgc28gdGhhdAorICAgICAqIGRlZmF1bHQgc2VyaWFsaXphdGlvbiB3aWxsIHdvcmsgcHJvcGVybHkgaWYgdGhpcyBvYmplY3QgaXMgc3RyZWFtZWQgb3V0IGFnYWluLgorICAgICAqCisgICAgICogQHNpbmNlIEpESyAxLjEuNgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCByZWFkT2JqZWN0KE9iamVjdElucHV0U3RyZWFtIHN0cmVhbSkKKyAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKKyAgICAgICAgc3RyZWFtLmRlZmF1bHRSZWFkT2JqZWN0KCk7CisgICAgICAgIGlmIChzZXJpYWxWZXJzaW9uT25TdHJlYW0gPCAxKSB7CisgICAgICAgICAgICAvLyBEaWRuJ3QgaGF2ZSBtb25ldGFyeVNlcGFyYXRvciBvciBleHBvbmVudGlhbCBmaWVsZDsKKyAgICAgICAgICAgIC8vIHVzZSBkZWZhdWx0cy4KKyAgICAgICAgICAgIG1vbmV0YXJ5U2VwYXJhdG9yID0gZGVjaW1hbFNlcGFyYXRvcjsKKyAgICAgICAgICAgIGV4cG9uZW50aWFsID0gJ0UnOworICAgICAgICB9CisgICAgICAgIGlmIChzZXJpYWxWZXJzaW9uT25TdHJlYW0gPCAyKSB7IC8vIFtORVddCisgICAgICAgICAgICBwYWRFc2NhcGUgPSBEZWNpbWFsRm9ybWF0LlBBVFRFUk5fUEFEX0VTQ0FQRTsKKyAgICAgICAgICAgIHBsdXNTaWduID0gRGVjaW1hbEZvcm1hdC5QQVRURVJOX1BMVVNfU0lHTjsKKyAgICAgICAgICAgIGV4cG9uZW50U2VwYXJhdG9yID0gU3RyaW5nLnZhbHVlT2YoZXhwb25lbnRpYWwpOworICAgICAgICAgICAgLy8gQWx0aG91Z2ggd2UgcmVhZCB0aGUgZXhwb25lbnRpYWwgZmllbGQgb24gc3RyZWFtIHRvIGNyZWF0ZSB0aGUKKyAgICAgICAgICAgIC8vIGV4cG9uZW50U2VwYXJhdG9yLCB3ZSBkb24ndCBkbyB0aGUgcmV2ZXJzZSwgc2luY2Ugc2NpZW50aWZpYworICAgICAgICAgICAgLy8gbm90YXRpb24gaXNuJ3Qgc3VwcG9ydGVkIGJ5IHRoZSBvbGQgY2xhc3NlcywgZXZlbiB0aG91Z2ggdGhlCisgICAgICAgICAgICAvLyBzeW1ib2wgaXMgdGhlcmUuCisgICAgICAgIH0KKyAgICAgICAgc2VyaWFsVmVyc2lvbk9uU3RyZWFtID0gY3VycmVudFNlcmlhbFZlcnNpb247CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2hhcmFjdGVyIHVzZWQgZm9yIHplcm8uCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNlZSAjZ2V0WmVyb0RpZ2l0CisgICAgICovCisgICAgcHJpdmF0ZSAgY2hhciAgICB6ZXJvRGlnaXQ7CisKKyAgICAvKioKKyAgICAgKiBDaGFyYWN0ZXIgdXNlZCBmb3IgdGhvdXNhbmRzIHNlcGFyYXRvci4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNnZXRHcm91cGluZ1NlcGFyYXRvcgorICAgICAqLworICAgIHByaXZhdGUgIGNoYXIgICAgZ3JvdXBpbmdTZXBhcmF0b3I7CisKKyAgICAvKioKKyAgICAgKiBDaGFyYWN0ZXIgdXNlZCBmb3IgZGVjaW1hbCBzaWduLgorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqIEBzZWUgI2dldERlY2ltYWxTZXBhcmF0b3IKKyAgICAgKi8KKyAgICBwcml2YXRlICBjaGFyICAgIGRlY2ltYWxTZXBhcmF0b3I7CisKKyAgICAvKioKKyAgICAgKiBDaGFyYWN0ZXIgdXNlZCBmb3IgbWlsbGUgcGVyY2VudCBzaWduLgorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqIEBzZWUgI2dldFBlck1pbGwKKyAgICAgKi8KKyAgICBwcml2YXRlICBjaGFyICAgIHBlck1pbGw7CisKKyAgICAvKioKKyAgICAgKiBDaGFyYWN0ZXIgdXNlZCBmb3IgcGVyY2VudCBzaWduLgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNnZXRQZXJjZW50CisgICAgICovCisgICAgcHJpdmF0ZSAgY2hhciAgICBwZXJjZW50OworCisgICAgLyoqCisgICAgICogQ2hhcmFjdGVyIHVzZWQgZm9yIGEgZGlnaXQgaW4gYSBwYXR0ZXJuLgorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqIEBzZWUgI2dldERpZ2l0CisgICAgICovCisgICAgcHJpdmF0ZSAgY2hhciAgICBkaWdpdDsKKworICAgIC8qKgorICAgICAqIENoYXJhY3RlciB1c2VkIHRvIHNlcGFyYXRlIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSBzdWJwYXR0ZXJucworICAgICAqIGluIGEgcGF0dGVybi4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNnZXRQYXR0ZXJuU2VwYXJhdG9yCisgICAgICovCisgICAgcHJpdmF0ZSAgY2hhciAgICBwYXR0ZXJuU2VwYXJhdG9yOworCisgICAgLyoqCisgICAgICogQ2hhcmFjdGVyIHVzZWQgdG8gcmVwcmVzZW50IGluZmluaXR5LgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNnZXRJbmZpbml0eQorICAgICAqLworICAgIHByaXZhdGUgIFN0cmluZyAgaW5maW5pdHk7CisKKyAgICAvKioKKyAgICAgKiBDaGFyYWN0ZXIgdXNlZCB0byByZXByZXNlbnQgTmFOLgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNnZXROYU4KKyAgICAgKi8KKyAgICBwcml2YXRlICBTdHJpbmcgIE5hTjsKKworICAgIC8qKgorICAgICAqIENoYXJhY3RlciB1c2VkIHRvIHJlcHJlc2VudCBtaW51cyBzaWduLgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNnZXRNaW51c1NpZ24KKyAgICAgKi8KKyAgICBwcml2YXRlICBjaGFyICAgIG1pbnVzU2lnbjsKKworICAgIC8qKgorICAgICAqIFN0cmluZyBkZW5vdGluZyB0aGUgbG9jYWwgY3VycmVuY3ksIGUuZy4gIiQiLgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2VlICNnZXRDdXJyZW5jeVN5bWJvbAorICAgICAqLworICAgIHByaXZhdGUgIFN0cmluZyAgY3VycmVuY3lTeW1ib2w7CisKKyAgICAvKioKKyAgICAgKiBJbnRlcm5hdGlvbmFsIHN0cmluZyBkZW5vdGluZyB0aGUgbG9jYWwgY3VycmVuY3ksIGUuZy4gIlVTRCIuCisgICAgICogQHNlcmlhbAorICAgICAqIEBzZWUgI2dldEludGVybmF0aW9uYWxDdXJyZW5jeVN5bWJvbAorICAgICAqLworICAgIHByaXZhdGUgIFN0cmluZyAgaW50bEN1cnJlbmN5U3ltYm9sOworCisgICAgLyoqCisgICAgICogVGhlIGRlY2ltYWwgc2VwYXJhdG9yIHVzZWQgd2hlbiBmb3JtYXR0aW5nIGN1cnJlbmN5IHZhbHVlcy4KKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNpbmNlIEpESyAxLjEuNgorICAgICAqIEBzZWUgI2dldE1vbmV0YXJ5RGVjaW1hbFNlcGFyYXRvcgorICAgICAqLworICAgIHByaXZhdGUgIGNoYXIgICAgbW9uZXRhcnlTZXBhcmF0b3I7IC8vIEZpZWxkIG5ldyBpbiBKREsgMS4xLjYKKworICAgIC8qKgorICAgICAqIFRoZSBjaGFyYWN0ZXIgdXNlZCB0byBkaXN0aW5ndWlzaCB0aGUgZXhwb25lbnQgaW4gYSBudW1iZXIgZm9ybWF0dGVkCisgICAgICogaW4gZXhwb25lbnRpYWwgbm90YXRpb24sIGUuZy4gJ0UnIGZvciBhIG51bWJlciBzdWNoIGFzICIxLjIzRTQ1Ii4KKyAgICAgKiA8cD4KKyAgICAgKiBOb3RlIHRoYXQgdGhpcyBmaWVsZCBoYXMgYmVlbiBzdXBlcnNlZGVkIGJ5IDxjb2RlPmV4cG9uZW50U2VwYXJhdG9yPC9jb2RlPi4KKyAgICAgKiBJdCBpcyByZXRhaW5lZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2luY2UgSkRLIDEuMS42CisgICAgICovCisgICAgcHJpdmF0ZSAgY2hhciAgICBleHBvbmVudGlhbDsgICAgICAgLy8gRmllbGQgbmV3IGluIEpESyAxLjEuNgorCisgICAgLyoqCisgICAgICogVGhlIHN0cmluZyB1c2VkIHRvIHNlcGFyYXRlIHRoZSBtYW50aXNzYSBmcm9tIHRoZSBleHBvbmVudC4KKyAgICAgKiBFeGFtcGxlczogIngxMF4iIGZvciAxLjIzeDEwXjQsICJFIiBmb3IgMS4yM0U0LgorICAgICAqIDxwPgorICAgICAqIE5vdGUgdGhhdCB0aGlzIHN1cGVyc2VkZXMgdGhlIDxjb2RlPmV4cG9uZW50aWFsPC9jb2RlPiBmaWVsZC4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2luY2UgQWxwaGFXb3JrcworICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nIGV4cG9uZW50U2VwYXJhdG9yOworCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFRoZSBjaGFyYWN0ZXIgdXNlZCB0byBpbmRpY2F0ZSBhIHBhZGRpbmcgY2hhcmFjdGVyIGluIGEgZm9ybWF0LAorICAgICAqIGUuZy4sICcqJyBpbiBhIHBhdHRlcm4gc3VjaCBhcyAiJCpfIywjIzAuMDAiLgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2luY2UgQWxwaGFXb3JrcworICAgICAqLworICAgIHByaXZhdGUgY2hhciBwYWRFc2NhcGU7CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogVGhlIGNoYXJhY3RlciB1c2VkIHRvIGluZGljYXRlIGEgcGx1cyBzaWduLgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2luY2UgQWxwaGFXb3JrcworICAgICAqLworICAgIHByaXZhdGUgY2hhciBwbHVzU2lnbjsKKworICAgIC8vIFByb2NsYWltIEpESyAxLjEgRkNTIGNvbXBhdGliaWxpdHkKKyAgICBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gNTc3Mjc5NjI0MzM5NzM1MDMwMEw7CisKKyAgICAvLyBUaGUgaW50ZXJuYWwgc2VyaWFsIHZlcnNpb24gd2hpY2ggc2F5cyB3aGljaCB2ZXJzaW9uIHdhcyB3cml0dGVuCisgICAgLy8gLSAwIChkZWZhdWx0KSBmb3IgdmVyc2lvbiB1cCB0byBKREsgMS4xLjUKKyAgICAvLyAtIDEgZm9yIHZlcnNpb24gZnJvbSBKREsgMS4xLjYsIHdoaWNoIGluY2x1ZGVzIHR3byBuZXcgZmllbGRzOgorICAgIC8vICAgICBtb25ldGFyeVNlcGFyYXRvciBhbmQgZXhwb25lbnRpYWwuCisgICAgLy8gLSAyIGZvciB2ZXJzaW9uIGZyb20gQWxwaGFXb3Jrcywgd2hpY2ggaW5jbHVkZXMgMyBuZXcgZmllbGRzOgorICAgIC8vICAgICBwYWRFc2NhcGUsIGV4cG9uZW50U2VwYXJhdG9yLCBhbmQgcGx1c1NpZ24uCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGN1cnJlbnRTZXJpYWxWZXJzaW9uID0gMjsKKyAgICAKKyAgICAvKioKKyAgICAgKiBEZXNjcmliZXMgdGhlIHZlcnNpb24gb2YgPGNvZGU+RGVjaW1hbEZvcm1hdFN5bWJvbHM8L2NvZGU+IHByZXNlbnQgb24gdGhlIHN0cmVhbS4KKyAgICAgKiBQb3NzaWJsZSB2YWx1ZXMgYXJlOgorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+PGI+MDwvYj4gKG9yIHVuaW5pdGlhbGl6ZWQpOiB2ZXJzaW9ucyBwcmlvciB0byBKREsgMS4xLjYuCisgICAgICoKKyAgICAgKiA8bGk+PGI+MTwvYj46IFZlcnNpb25zIHdyaXR0ZW4gYnkgSkRLIDEuMS42IG9yIGxhdGVyLCB3aGljaCBpbmNsdWRlcworICAgICAqICAgICAgdHdvIG5ldyBmaWVsZHM6IDxjb2RlPm1vbmV0YXJ5U2VwYXJhdG9yPC9jb2RlPiBhbmQgPGNvZGU+ZXhwb25lbnRpYWw8L2NvZGU+LgorICAgICAqIDxsaT48Yj4yPC9iPjogVmVyc2lvbiBmb3IgQWxwaGFXb3Jrcy4gIEFkZHMgcGFkRXNjYXBlLCBleHBvbmVudFNlcGFyYXRvciwKKyAgICAgKiAgICAgIGFuZCBwbHVzU2lnbi4KKyAgICAgKiA8L3VsPgorICAgICAqIFdoZW4gc3RyZWFtaW5nIG91dCBhIDxjb2RlPkRlY2ltYWxGb3JtYXRTeW1ib2xzPC9jb2RlPiwgdGhlIG1vc3QgcmVjZW50IGZvcm1hdAorICAgICAqIChjb3JyZXNwb25kaW5nIHRvIHRoZSBoaWdoZXN0IGFsbG93YWJsZSA8Y29kZT5zZXJpYWxWZXJzaW9uT25TdHJlYW08L2NvZGU+KQorICAgICAqIGlzIGFsd2F5cyB3cml0dGVuLgorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqIEBzaW5jZSBKREsgMS4xLjYKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBzZXJpYWxWZXJzaW9uT25TdHJlYW0gPSBjdXJyZW50U2VyaWFsVmVyc2lvbjsKKworICAgIC8qKgorICAgICAqIGNhY2hlIHRvIGhvbGQgdGhlIE51bWJlckVsZW1lbnRzIGFuZCB0aGUgQ3VycmVuY3lFbGVtZW50cworICAgICAqIG9mIGEgTG9jYWxlLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEhhc2h0YWJsZSBjYWNoZWRMb2NhbGVEYXRhID0gbmV3IEhhc2h0YWJsZSgzKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvRGVjb21wRGF0YS5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9EZWNvbXBEYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWYwOWU0ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvRGVjb21wRGF0YS5qYXZhCkBAIC0wLDAgKzEsNzQ1IEBACisvKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqICAgQ29weXJpZ2h0IChjKSAxOTk3LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKyogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiA+IFRISVMgRklMRSBXQVMgTUFDSElORSBHRU5FUkFURUQgPAorKiA+ICAgICAgIERPIE5PVCBFRElUIEJZIEhBTkQgICAgICAgPAorKiA+ICAgICAgUlVOIFRPT0wgVE8gUkVHRU5FUkFURSAgICAgPAorKiBUb29sOiBjb20uaWJtLnRleHQuTm9ybWFsaXplcgorKiBDcmVhdGlvbiBkYXRlOiBUdWUgSnVsIDE4IDExOjA1OjI4IFBEVCAyMDAwCisqLworCitwYWNrYWdlIGNvbS5pYm0udGV4dDsKK2ltcG9ydCBjb20uaWJtLnV0aWwuKjsKKworY2xhc3MgRGVjb21wRGF0YSB7CisgICAgc3RhdGljIGZpbmFsIGludCBNQVhfQ0FOT05JQ0FMID0gMjE3NTQ7CisgICAgc3RhdGljIGZpbmFsIGludCBNQVhfQ09NUEFUID0gMTExNzc7CisgICAgc3RhdGljIGZpbmFsIGludCBERUNPTVBfTUFTSyA9IDMyNzY3OworICAgIHN0YXRpYyBmaW5hbCBpbnQgREVDT01QX1JFQ1VSU0UgPSAzMjc2ODsKKyAgICBzdGF0aWMgZmluYWwgc2hvcnQgQkFTRSA9IDA7CisKKyAgICBzdGF0aWMgZmluYWwgQ29tcGFjdENoYXJBcnJheSBvZmZzZXRzID0gbmV3IENvbXBhY3RDaGFyQXJyYXkoCisgICAgICAgICJcMDAwXHUwODAwXHVBNUE1XDAwNVwwMDAgQGBcdTAwODBcdTAwQTBcdTAwQzBcdTAwRTBcMDAwXHUwMTAwXHUwMTIwXHUwMTQwIisKKyAgICAgICAgIlx1MDE2MFx1MDE4MFwwMDBcMDAwXDAwMFx1MDFBMFx1MDFDMFx1MDFFMFwwMDBcMDAwXHUwMjAwXHUwMjIwXHUwMjQwXHUwMjYwIisKKyAgICAgICAgIlx1MDI4MFx1MDJBMFx1MDJDMFx1MDJFMFx1MDMwMFx1MDMyMFwwMDBcMDAwXHUwMzQwXHUwMzYwXHVBNUE1XDAwNFwwMDAiKworICAgICAgICAiXHUwMzgwXHVBNUE1XDAwNFwwMDBcdTAzQTBcMDAwXHUwM0MwXDAwMFwwMDBcdTAzRTBcdUE1QTVcMDIyXDAwMFx1MDQwMCIrCisgICAgICAgICJcdTA0MjBcMDAwXDAwMFwwMDBcdTA0NDBcMDAwXDAwMFx1MDQ2MFx1MDQ4MFx1QTVBNVwwMDdcMDAwXHUwNEEwXDAwMFx1MDRDMCIrCisgICAgICAgICJcMDAwXHUwNEUwXDAwMFwwMDBcMDAwXHUwNTAwXDAwMFwwMDBcMDAwXHUwNTIwXDAwMFwwMDBcMDAwXHUwNTQwXDAwMFwwMDAiKworICAgICAgICAiXDAwMFx1MDU2MFwwMDBcMDAwXHUwNTgwXDAwMFwwMDBcMDAwXHUwNUEwXHUwNUMwXDAwMFx1MDVFMFwwMDBcdTA2MDBcdTA2MjAiKworICAgICAgICAiXHUwNjQwXHUwNjYwXDAwMFwwMDBcMDAwXHUwNjgwXHVBNUE1blwwMDBcdTA2QTBcdTA2QzBcdTA2RTBcdTA3MDBcdTA3MjAiKworICAgICAgICAiXHUwNzQwXHUwNzYwXHUwNzgwXHUwN0EwXHUwN0MwXHUwN0UwXHUwODAwXHUwODIwXHUwODQwXHUwODYwXHUwODgwXHUwOEEwIisKKyAgICAgICAgIlx1MDhDMFx1MDhFMFx1MDkwMFx1MDkyMFx1MDk0MFwwMDBcMDAwXHUwOTYwXHUwOTgwXHUwOUEwXHUwOUMwXHUwOUUwXHUwQTAwIisKKyAgICAgICAgIlx1MEEyMFwwMDBcdTBBNDBcdTBBNjBcdTBBODBcdTBBQTBcdTBBQzBcdTBBRTBcMDAwXHUwQjAwXDAwMFx1MEIyMFx1QTVBNSIrCisgICAgICAgICJcMDExXDAwMFx1MEI0MFx1MEI2MFx1MEI4MFx1MEJBMFx1MEJDMFx1QTVBNUxcMDAwXHUwQkUwXDAwMFwwMDBcdTBDMDAiKworICAgICAgICAiXHUwQzIwXHUwQzQwXHUwQzYwXHUwQzgwXHUwQ0EwXHUwQ0MwXHUwQ0UwXDAwMFx1MEQwMFx1MEQyMFx1MEQ0MFx1MEQ2MCIrCisgICAgICAgICJcdTBEODBcdTBEQTBcdTBEQzBcdTBERTBcMDAwXHUwRTAwXHUwRTIwXHUwRTQwXHUwRTYwXDAwMFwwMDBcMDAwXHUwRTgwIisKKyAgICAgICAgIlx1MEVBMFx1MEVDMFx1MEVFMFx1MEYwMFx1MEYyMFx1MEY0MFx1MEY2MFx1MEY4MFx1MEZBMFx1MEZDMFx1MEZFMFx1MTAwMCIrCisgICAgICAgICJcdTEwMjBcdTEwNDBcdTEwNjBcdUE1QTVcdTA2MjhcMDAwXHUxMDgwXHUxMEEwXHUxMEMwXHUxMEUwXHUxMTAwXHUxMTIwIisKKyAgICAgICAgIlx1MTE0MFx1MTE2MFx1MTE4MFx1MTFBMFx1QTVBNVwwMDZcMDAwXHUxMUMwXHUxMUUwXHUxMjAwXHUxMjIwXHUxMjQwXHUxMjYwIisKKyAgICAgICAgIlx1MTI4MFx1MTJBMFx1MTJDMFx1MTJFMFx1MTMwMFx1MTMyMFx1MTM0MFx1MTM2MFx1MTM4MFx1MTNBMFx1MTNDMFx1MTNFMCIrCisgICAgICAgICJcdTE0MDBcdTE0MjBcdTE0NDBcdTE0NjBcdTE0ODBcdTE0QTBcMDAwXHUxNEMwXHUxNEUwXHUxNTAwXHUxNTIwXHUxNTQwIisKKyAgICAgICAgIlx1MTU2MFx1MTU4MFx1MTVBMFx1MTVDMFx1MTVFMFx1MTYwMFx1MTYyMFx1MTY0MFx1MTY2MFx1MTY4MCIKKyAgICAgICAgLAorICAgICAgICAiXDAwMFx1MTZBMFx1QTVBNSBcMDAwXDAwNVx1QTVBNVwwMDdcMDAwXDAxMlwwMDBcMDIxXHVBNUE1XDAwNFwwMDBcMDI2IisKKyAgICAgICAgIlwwMDBcMDAwXDAzNSEmLVwwMDBcMDAwMjk9XDAwMENPW1wwMDBcdTJCQUVcdTJCQjZcdTJCQkVcdTJCQzZcdTJCQ0VcdTJCRDYiKworICAgICAgICAiXDAwMFx1MkJERVx1MkJFNlx1MkJFRVx1MkJGNlx1MkJGRVx1MkMwNlx1MkMwRVx1MkMxNlx1MkMxRVwwMDBcdTJDMjZcdTJDMkUiKworICAgICAgICAiXHUyQzM2XHUyQzNFXHUyQzQ2XHUyQzRFXDAwMFwwMDBcdTJDNTZcdTJDNUVcdTJDNjZcdTJDNkVcdTJDNzZcMDAwXDAwMCIrCisgICAgICAgICJcdTJDN0VcdTJDODZcdTJDOEVcdTJDOTZcdTJDOUVcdTJDQTZcMDAwXHUyQ0FFXHUyQ0I2XHUyQ0JFXHUyQ0M2XHUyQ0NFIisKKyAgICAgICAgIlx1MkNENlx1MkNERVx1MkNFNlx1MkNFRVwwMDBcdTJDRjZcdTJDRkVcdTJEMDZcdTJEMEVcdTJEMTZcdTJEMUVcMDAwXDAwMCIrCisgICAgICAgICJcdTJEMjZcdTJEMkVcdTJEMzZcdTJEM0VcdTJENDZcMDAwXHUyRDRFXHUyRDU2XHUyRDVFXHUyRDY2XHUyRDZFXHUyRDc2IisKKyAgICAgICAgIlx1MkQ3RVx1MkQ4Nlx1MkQ4RVx1MkQ5Nlx1MkQ5RVx1MkRBNlx1MkRBRVx1MkRCNlx1MkRCRVx1MkRDNlx1MkRDRVwwMDAiKworICAgICAgICAiXDAwMFx1MkRENlx1MkRERVx1MkRFNlx1MkRFRVx1MkRGNlx1MkRGRVx1MkUwNlx1MkUwRVx1MkUxNlx1MkUxRVx1MkUyNiIrCisgICAgICAgICJcdTJFMkVcdTJFMzZcdTJFM0VcdTJFNDZcdTJFNEVcdTJFNTZcdTJFNUVcdTJFNjZcdTJFNkVcMDAwXDAwMFx1MkU3Nlx1MkU3RSIrCisgICAgICAgICJcdTJFODZcdTJFOEVcdTJFOTZcdTJFOUVcdTJFQTZcdTJFQUVcdTJFQjZcMDAwZm5cdTJFQkVcdTJFQzZcdTJFQ0VcdTJFRDYiKworICAgICAgICAiXDAwMFx1MkVERVx1MkVFNlx1MkVFRVx1MkVGNlx1MkVGRVx1MkYwNnZ+XDAwMFwwMDBcdTJGMEVcdTJGMTZcdTJGMUVcdTJGMjYiKworICAgICAgICAiXHUyRjJFXHUyRjM2XHUwMDg2XDAwMFwwMDBcdTJGM0VcdTJGNDZcdTJGNEVcdTJGNTZcdTJGNUVcdTJGNjZcMDAwXDAwMCIrCisgICAgICAgICJcdTJGNkVcdTJGNzZcdTJGN0VcdTJGODZcdTJGOEVcdTJGOTZcdTJGOUVcdTJGQTZcdTJGQUVcdTJGQjZcdTJGQkVcdTJGQzYiKworICAgICAgICAiXHUyRkNFXHUyRkQ2XHUyRkRFXHUyRkU2XHUyRkVFXHUyRkY2XDAwMFwwMDBcdTJGRkVcdTMwMDZcdTMwMEVcdTMwMTZcdTMwMUUiKworICAgICAgICAiXHUzMDI2XHUzMDJFXHUzMDM2XHUzMDNFXHUzMDQ2XHUzMDRFXHUzMDU2XHUzMDVFXHUzMDY2XHUzMDZFXHUzMDc2XHUzMDdFIisKKyAgICAgICAgIlx1MzA4Nlx1MzA4RVx1MzA5Nlx1MzA5RVx1MzBBNlx1MzBBRVx1MDA4RFx1MzBCNlx1MzBCRVx1QTVBNVwwMTVcMDAwXHUzMEM2IisKKyAgICAgICAgIlx1MzBDRVx1QTVBNVwwMjNcMDAwXHUwMDkzXHUwMDlGXHUwMEFCXHUwMEI2XHUwMEJFXHUwMEM2XHUwMENFXHUwMEQ2XHUwMERFIisKKyAgICAgICAgIlx1MzBENlx1MzBERVx1MzBFNlx1MzBFRVx1MzBGNlx1MzBGRVx1MzEwNlx1MzEwRVx1MzExN1x1MzEyM1x1MzEyRlx1MzEzQiIrCisgICAgICAgICJcdTMxNDdcdTMxNTNcdTMxNUZcdTMxNkJcMDAwXHUzMTc3XHUzMTgzXHUzMThGXHUzMTlCXHUzMUE2XHUzMUFFXDAwMFwwMDAiKworICAgICAgICAiXHUzMUI2XHUzMUJFXHUzMUM2XHUzMUNFXHUzMUQ2XHUzMURFXHUzMUU3XHUzMUYzXHUzMUZFXHUzMjA2XHUzMjBFXHUwMDkyIisKKyAgICAgICAgIlx1MDA5RVx1MDBBQVx1MzIxNlx1MzIxRVwwMDBcMDAwXHUzMjI2XHUzMjJFXHUzMjM3XHUzMjQzXHUzMjRFXHUzMjU2XHUzMjVFIisKKyAgICAgICAgIlx1MzI2Nlx1MzI2RVx1MzI3Nlx1MzI3RVx1MzI4Nlx1MzI4RVx1MzI5Nlx1MzI5RVx1MzJBNlx1MzJBRVx1MzJCNlx1MzJCRSIrCisgICAgICAgICJcdTMyQzZcdTMyQ0VcdTMyRDZcdTMyREVcdTMyRTZcdTMyRUVcdTMyRjZcdTMyRkVcdTMzMDZcdTMzMEVcdTMzMTZcdTMzMUUiKworICAgICAgICAiXHUzMzI2XHUzMzJFXHUzMzM2XHUzMzNFXHUzMzQ2XDAwMFwwMDBcdTMzNEVcdTMzNTZcdUE1QTVcMDA2XDAwMFx1MzM1RSIrCisgICAgICAgICJcdTMzNjZcdTMzNkVcdTMzNzZcdTMzN0ZcdTMzOEJcdTMzOTdcdTMzQTNcdTMzQUVcdTMzQjZcdTMzQkZcdTMzQ0JcdTMzRDYiKworICAgICAgICAiXHUzM0RFXHVBNUE1XDAzNFwwMDBcdTAwRTVcdTAwRTlxXHUwMEVEXHUwMEYxXHUwMEY1XHUwMEY5XHUwMEZEXHUwMTAxIisKKyAgICAgICAgIlx1QTVBNVwwMzdcMDAwXHUwMTA2XHUwMTBFXHUwMTE2XHUwMTFFXHUwMTI2XHUwMTJFXDAwMFwwMDBcdTAxMzV9XHUwMDhEIisKKyAgICAgICAgIlx1MDEzOVx1MDEzRFx1QTVBNVwwMzNcMDAwXHUzM0U1XHUzM0U5XDAwMFx1MzNFRFx1MzNGMlx1QTVBNS9cMDAwXHUzM0Y5IisKKyAgICAgICAgIlx1QTVBNVwwMDVcMDAwXHUwMTQyXDAwMFwwMDBcMDAwXHUzM0ZEXHVBNUE1XDAwNVwwMDAmXHVCNDAyXHUzNDBBXHUzNDExIisKKyAgICAgICAgIlx1MzQxNlx1MzQxRVx1MzQyNlwwMDBcdTM0MkVcMDAwXHUzNDM2XHUzNDNFXHUzNDQ3XHVBNUE1XDAzMVwwMDBcdTM0NTIiKworICAgICAgICAiXHUzNDVBXHUzNDYyXHUzNDZBXHUzNDcyXHUzNDdBXHUzNDgzXHVBNUE1XDAzMVwwMDBcdTM0OEVcdTM0OTZcdTM0OUVcdTM0QTYiKworICAgICAgICAiXHUzNEFFXDAwMFx1MDE0OVx1MDE0RFx1MDE1MVx1QjRCNlx1QjRCRVx1MDE1NVx1MDE1OVx1QTVBNVwwMzFcMDAwXHUwMTVEIisKKyAgICAgICAgIlx1MDE2MVx1MDE2NVx1QTVBNVwwMTVcMDAwXHUzNEM2XHUzNENFXDAwMFx1MzRENlwwMDBcMDAwXDAwMFx1MzRERVx1QTVBNSIrCisgICAgICAgICJcMDA0XDAwMFx1MzRFNlx1MzRFRVx1MzRGNlx1QTVBNVwwMTJcMDAwXHUzNEZFXHVBNUE1XDAzN1wwMDBcdTM1MDZcdUE1QTUiKworICAgICAgICAiXDAyNlwwMDBcdTM1MEVcdTM1MTZcMDAwXHUzNTFFXDAwMFwwMDBcMDAwXHUzNTI2XHVBNUE1XDAwNFwwMDBcdTM1MkVcdTM1MzYiKworICAgICAgICAiXHUzNTNFXHVBNUE1XDAyN1wwMDBcdTM1NDZcdTM1NEVcdUE1QTVcMDExXDAwMFx1MzU1Nlx1MzU1RVx1QTVBNVwwMTVcMDAwIisKKyAgICAgICAgIlx1MzU2Nlx1MzU2RVx1MzU3Nlx1MzU3RVwwMDBcMDAwXHUzNTg2XHUzNThFXDAwMFwwMDBcdTM1OTZcdTM1OUVcdTM1QTYiKworICAgICAgICAiXHUzNUFFXHUzNUI2XHUzNUJFXDAwMFwwMDBcdTM1QzZcdTM1Q0VcdTM1RDZcdTM1REVcdTM1RTZcdTM1RUVcMDAwXDAwMCIrCisgICAgICAgICJcdTM1RjZcdTM1RkVcdTM2MDZcdTM2MEVcdTM2MTZcdTM2MUVcdTM2MjZcdTM2MkVcdTM2MzZcdTM2M0VcdTM2NDZcdTM2NEUiKworICAgICAgICAiXDAwMFwwMDBcdTM2NTZcdTM2NUVcdUE1QTVcMDE1XDAwMFx1MDE2QVx1QTVBNVwwMzJcMDAwXHUzNjY2XHUzNjZFXHUzNjc2IisKKyAgICAgICAgIlx1MzY3RVx1MzY4Nlx1QTVBNS5cMDAwXHUwMTcyXHUwMTdBXHUwMTgyXHUwMThBXHVBNUE1XDAwN1wwMDBcdTM2OEVcMDAwIisKKyAgICAgICAgIlx1MzY5Nlx1QTVBNVwwMjBcMDAwXHUzNjlFXHVBNUE1XDAyNVwwMDBcdTM2QTZcdUE1QTVcMDA3XDAwMFx1MzZBRVwwMDAiKworICAgICAgICAiXDAwMFx1MzZCNlx1QTVBNSNcMDAwXHUzNkJFXHUzNkM2XHUzNkNFXHUzNkQ2XHUzNkRFXHUzNkU2XHUzNkVFXHUzNkY2IisKKyAgICAgICAgIlx1QTVBNVwwMTNcMDAwXHUzNkZFXHUzNzA2XHVBNUE1XDAxN1wwMDBcdTM3MEVcdTM3MTZcMDAwXHUzNzFFXHVBNUE1XDAyMyIrCisgICAgICAgICJcMDAwXHUzNzI2XDAwMFwwMDBcdTM3MkVcdUE1QTVcMDQyXDAwMFx1MzczNlx1MzczRVx1Mzc0NlwwMDBcMDAwXHUzNzRFIisKKyAgICAgICAgIlx1QTVBNVwwMTFcMDAwXHUzNzU2XDAwMFwwMDBcdTM3NUVcdTM3NjZcdUE1QTVcMDE3XDAwMFx1Mzc2RVx1Mzc3Nlx1QTVBNSIrCisgICAgICAgICJcMDI2XDAwMFx1Mzc3RVx1QTVBNVwwMjVcMDAwXHUzNzg2XHUzNzhFXHUzNzk2XHVBNUE1XDAzM1wwMDBcdTM3OUVcdUE1QTUiKworICAgICAgICAiXDAyN1wwMDBcdTM3QTZcdUE1QTVcMDA2XDAwMFx1MzdBRVx1MzdCNlwwMDBcdTM3QkVcdTM3QzdcdUE1QTVcMDM2XDAwMCIrCisgICAgICAgICJcdTM3RDJcdTM3REFcdTM3RTJcdUE1QTUtXDAwMFx1MzdFQVwwMDBcdTM3RjJcdTM3RkJcdTM4MDZcdUE1QTVcMDI0XDAwMCIrCisgICAgICAgICJcdTAxOTJcdUE1QTVcMDM3XDAwMFx1MDE5QVx1QTVBNShcMDAwXHUwMUEyXHUwMUFBXHVBNUE1XDAxNlwwMDBcdTAxQjEiKworICAgICAgICAiXHVBNUE1XDAyNlwwMDBcdTM4MEVcdUE1QTVcMDExXDAwMFx1MzgxNlx1QTVBNVwwMDRcMDAwXHUzODFFXHVBNUE1XDAwNCIrCisgICAgICAgICJcMDAwXHUzODI2XHVBNUE1XDAwNFwwMDBcdTM4MkVcdUE1QTVcMDE0XDAwMFx1MzgzNlx1QTVBNVwwMTFcMDAwXHUzODNFIisKKyAgICAgICAgIlwwMDBcdTM4NDZcdTM4NEVcdTAxQjdcdTM4NTZcdTAxQzNcdUE1QTVcMDA3XDAwMFx1Mzg1RVx1QTVBNVwwMjFcMDAwXHUzODY2IisKKyAgICAgICAgIlx1QTVBNVwwMTFcMDAwXHUzODZFXHVBNUE1XDAwNFwwMDBcdTM4NzZcdUE1QTVcMDA0XDAwMFx1Mzg3RVx1QTVBNVwwMDQiKworICAgICAgICAiXDAwMFx1Mzg4Nlx1QTVBNVwwMTRcMDAwXHUzODhFXHVBNUE1XDAxNFwwMDBcdTM4OTZcdUE1QTVcMDMxXDAwMFx1Mzg5RSIrCisgICAgICAgICJcdTM4QTZcdTM4QUVcdTM4QjZcdTM4QkVcdTM4QzZcdTM4Q0VcdTM4RDZcdTM4REZcdTM4RUJcdTM4RjZcdTM4RkVcdTM5MDYiKworICAgICAgICAiXHUzOTBFXHUzOTE2XHUzOTFFXHUzOTI2XHUzOTJFXHUzOTM2XHUzOTNFXHUzOTQ3XHUzOTUzXHUzOTVGXHUzOTZCXHUzOTc2IisKKyAgICAgICAgIlx1Mzk3RVx1Mzk4Nlx1Mzk4RVx1Mzk5N1x1MzlBM1x1MzlBRVx1MzlCNlx1MzlCRVx1MzlDNlx1MzlDRVx1MzlENlx1MzlERSIrCisgICAgICAgICJcdTM5RTZcdTM5RUVcdTM5RjZcdTM5RkVcdTNBMDZcdTNBMEVcdTNBMTZcdTNBMUVcdTNBMjZcdTNBMkZcdTNBM0JcdTNBNDYiKworICAgICAgICAiXHUzQTRFXHUzQTU2XHUzQTVFXHUzQTY2XHUzQTZFXHUzQTc2XHUzQTdFXHUzQTg3XHUzQTkzXHUzQTlFXHUzQUE2XHUzQUFFIisKKyAgICAgICAgIlx1M0FCNlx1M0FCRVx1M0FDNlx1M0FDRVx1M0FENlx1M0FERVx1M0FFNlx1M0FFRVx1M0FGNlx1M0FGRVx1M0IwNlx1M0IwRSIrCisgICAgICAgICJcdTNCMTZcdTNCMUVcdTNCMjZcdTNCMkZcdTNCM0JcdTNCNDdcdTNCNTNcdTNCNUZcdTNCNkJcdTNCNzdcdTNCODNcdTNCOEUiKworICAgICAgICAiXHUzQjk2XHUzQjlFXHUzQkE2XHUzQkFFXHUzQkI2XHUzQkJFXHUzQkM2XHUzQkNGXHUzQkRCXHUzQkU2XHUzQkVFXHUzQkY2IisKKyAgICAgICAgIlx1M0JGRVx1M0MwNlx1M0MwRVx1M0MxN1x1M0MyM1x1M0MyRlx1M0MzQlx1M0M0N1x1M0M1M1x1M0M1RVx1M0M2Nlx1M0M2RSIrCisgICAgICAgICJcdTNDNzZcdTNDN0VcdTNDODZcdTNDOEVcdTNDOTZcdTNDOUVcdTNDQTZcdTNDQUVcdTNDQjZcdTNDQkVcdTNDQzZcdTNDQ0YiKworICAgICAgICAiXHUzQ0RCXHUzQ0U3XHUzQ0YzXHUzQ0ZFXHUzRDA2XHUzRDBFXHUzRDE2XHUzRDFFXHUzRDI2XHUzRDJFXHUzRDM2XHUzRDNFIisKKyAgICAgICAgIlx1M0Q0Nlx1M0Q0RVx1M0Q1Nlx1M0Q1RVx1M0Q2Nlx1M0Q2RVx1M0Q3Nlx1M0Q3RVx1M0Q4Nlx1M0Q4RVx1M0Q5Nlx1M0Q5RSIrCisgICAgICAgICJcdTNEQTZcdTNEQUVcdTNEQjZcdTNEQkVcdTNEQzZcdTNEQ0VcdTNERDZcdTNEREVcdTNERTZcdTAxQ0VcdUJERUVcdUE1QTUiKworICAgICAgICAiXDAwNFwwMDBcdTNERjZcdTNERkVcdTNFMDZcdTNFMEVcdTNFMTdcdTNFMjNcdTNFMkZcdTNFM0JcdTNFNDdcdTNFNTNcdTNFNUYiKworICAgICAgICAiXHUzRTZCXHUzRTc3XHUzRTgzXHUzRThGXHUzRTlCXHUzRUE3XHUzRUIzXHUzRUJGXHUzRUNCXHUzRUQ3XHUzRUUzXHUzRUVGIisKKyAgICAgICAgIlx1M0VGQlx1M0YwNlx1M0YwRVx1M0YxNlx1M0YxRVx1M0YyNlx1M0YyRVx1M0YzN1x1M0Y0M1x1M0Y0Rlx1M0Y1Qlx1M0Y2NyIrCisgICAgICAgICJcdTNGNzNcdTNGN0ZcdTNGOEJcdTNGOTdcdTNGQTNcdTNGQUVcdTNGQjZcdTNGQkVcdTNGQzZcdTNGQ0VcdTNGRDZcdTNGREUiKworICAgICAgICAiXHUzRkU2XHUzRkVGXHUzRkZCXHU0MDA3XHU0MDEzXHU0MDFGXHU0MDJCXHU0MDM3XHU0MDQzXHU0MDRGXHU0MDVCXHU0MDY3IisKKyAgICAgICAgIlx1NDA3M1x1NDA3Rlx1NDA4Qlx1NDA5N1x1NDBBM1x1NDBBRlx1NDBCQlx1NDBDN1x1NDBEM1x1NDBERVx1NDBFNlx1NDBFRSIrCisgICAgICAgICJcdTQwRjZcdTQwRkZcdTQxMEJcdTQxMTdcdTQxMjNcdTQxMkZcdTQxM0JcdTQxNDdcdTQxNTNcdTQxNUZcdTQxNkJcdTQxNzYiKworICAgICAgICAiXHU0MTdFXHU0MTg2XHU0MThFXHU0MTk2XHU0MTlFXHU0MUE2XHU0MUFFXHVBNUE1XDAwNlwwMDBcdTQxQjZcdTQxQkVcdTQxQzciKworICAgICAgICAiXHU0MUQzXHU0MURGXHU0MUVCXHU0MUY3XHU0MjAzXHU0MjBFXHU0MjE2XHU0MjFGXHU0MjJCXHU0MjM3XHU0MjQzXHU0MjRGIisKKyAgICAgICAgIlx1NDI1Qlx1NDI2Nlx1NDI2RVx1NDI3N1x1NDI4M1x1NDI4Rlx1NDI5QlwwMDBcMDAwXHU0MkE2XHU0MkFFXHU0MkI3XHU0MkMzIisKKyAgICAgICAgIlx1NDJDRlx1NDJEQlwwMDBcMDAwXHU0MkU2XHU0MkVFXHU0MkY3XHU0MzAzXHU0MzBGXHU0MzFCXHU0MzI3XHU0MzMzXHU0MzNFIisKKyAgICAgICAgIlx1NDM0Nlx1NDM0Rlx1NDM1Qlx1NDM2N1x1NDM3M1x1NDM3Rlx1NDM4Qlx1NDM5Nlx1NDM5RVx1NDNBN1x1NDNCM1x1NDNCRiIrCisgICAgICAgICJcdTQzQ0JcdTQzRDdcdTQzRTNcdTQzRUVcdTQzRjZcdTQzRkZcdTQ0MEJcdTQ0MTdcdTQ0MjNcdTQ0MkZcdTQ0M0JcdTQ0NDYiKworICAgICAgICAiXHU0NDRFXHU0NDU3XHU0NDYzXHU0NDZGXHU0NDdCXDAwMFwwMDBcdTQ0ODZcdTQ0OEVcdTQ0OTdcdTQ0QTNcdTQ0QUZcdTQ0QkIiKworICAgICAgICAiXDAwMFwwMDBcdTQ0QzZcdTQ0Q0VcdTQ0RDdcdTQ0RTNcdTQ0RUZcdTQ0RkJcdTQ1MDdcdTQ1MTNcMDAwXHU0NTFFXDAwMCIrCisgICAgICAgICJcdTQ1MjdcMDAwXHU0NTMzXDAwMFx1NDUzRlx1NDU0QVx1NDU1Mlx1NDU1Qlx1NDU2N1x1NDU3M1x1NDU3Rlx1NDU4Qlx1NDU5NyIrCisgICAgICAgICJcdTQ1QTJcdTQ1QUFcdTQ1QjNcdTQ1QkZcdTQ1Q0JcdTQ1RDdcdTQ1RTNcdTQ1RUZcdTQ1RkFcdTQ2MDJcdTQ2MEFcdTQ2MTIiKworICAgICAgICAiXHU0NjFBXHU0NjIyXHU0NjJBXHU0NjMyXHU0NjNBXHU0NjQyXHU0NjRBXHU0NjUyXHU0NjVBXHU0NjYyXDAwMFwwMDBcdTQ2NkIiKworICAgICAgICAiXHU0Njc3XHU0NjgwXHU0Njk0XHU0NkE4XHU0NkJDXHU0NkQwXHU0NkU0XHU0NkZCXHU0NzA3XHU0NzEwXHU0NzI0XHU0NzM4IisKKyAgICAgICAgIlx1NDc0Q1x1NDc2MFx1NDc3NFx1NDc4Qlx1NDc5N1x1NDdBMFx1NDdCNFx1NDdDOFx1NDdEQ1x1NDdGMFx1NDgwNFx1NDgxQiIrCisgICAgICAgICJcdTQ4MjdcdTQ4MzBcdTQ4NDRcdTQ4NThcdTQ4NkNcdTQ4ODBcdTQ4OTRcdTQ4QUJcdTQ4QjdcdTQ4QzBcdTQ4RDRcdTQ4RTgiKworICAgICAgICAiXHU0OEZDXHU0OTEwXHU0OTI0XHU0OTNCXHU0OTQ3XHU0OTUwXHU0OTY0XHU0OTc4XHU0OThDXHU0OUEwXHU0OUI0XHU0OUNBIisKKyAgICAgICAgIlx1NDlEMlx1NDlEQlx1NDlFNlx1NDlFRlwwMDBcdTQ5RkFcdTRBMDNcdTRBMEVcdTRBMTZcdTRBMUVcdTRBMjZcdTRBMkUiKworICAgICAgICAiXHUwMUQ2XHU0QTM1XHUwMUQ2XHUwMURFXHVDQTNBXHU0QTQzXHU0QTRFXHU0QTU3XDAwMFx1NEE2Mlx1NEE2Qlx1NEE3NiIrCisgICAgICAgICJcdTRBN0VcdTRBODZcdTRBOEVcdTRBOTZcdUNBOUVcdUNBQTZcdUNBQUVcdTRBQjZcdTRBQkVcdTRBQzdcdTRBRDNcMDAwIisKKyAgICAgICAgIlwwMDBcdTRBREVcdTRBRTdcdTRBRjJcdTRBRkFcdTRCMDJcdTRCMEFcMDAwXHVDQjEyXHVDQjFBXHVDQjIyXHU0QjJBXHU0QjMyIisKKyAgICAgICAgIlx1NEIzQlx1NEI0N1x1NEI1Mlx1NEI1QVx1NEI2Mlx1NEI2Qlx1NEI3Nlx1NEI3RVx1NEI4Nlx1NEI4RVx1NEI5Nlx1Q0I5RSIrCisgICAgICAgICJcdUNCQTZcdTRCQURcMDAwXDAwMFx1NEJCM1x1NEJCRVx1NEJDN1wwMDBcdTRCRDJcdTRCREJcdTRCRTZcdTRCRUVcdTRCRjYiKworICAgICAgICAiXHU0QkZFXHU0QzA2XHVDQzBEXHUwMUU2XDAwMFx1Q0MxMVx1Q0MxNVx1QTVBNVwwMTFcMDA1XHVBNUE1XDAwNlwwMDBcdTAxRUQiKworICAgICAgICAiXHVBNUE1XDAwNVwwMDBcdTAxRjJcdUE1QTVcMDE0XDAwMFx1MDFGOVx1MDFGRVx1MDFGQlx1QTVBNVwwMTBcMDAwXDAwNSIrCisgICAgICAgICJcMDAwXDAwMFwwMDBcdTAyMDZcdTAyMEZcMDAwXHUwMjFBXHUwMjIzXHVBNUE1XDAwNFwwMDBcdTAyMkVcMDAwXHUwMjM2IisKKyAgICAgICAgIlx1QTVBNVwwMTFcMDAwXHUwMjNFXHUwMjQ2XHVBNUE1JlwwMDBcdTAyNERcMDAwXDAwMFwwMDBJXHUwMjUxXHUwMjU1XHUwMjU5IisKKyAgICAgICAgIlx1MDI1RFx1MDI2MVx1MDI2NVx1MDI2OVx1MDI2RFx1MDI3MVx1MDI3NVx1MDA4OVx1MDI0RDlcMDM1IUlcdTAyNTFcdTAyNTUiKworICAgICAgICAiXHUwMjU5XHUwMjVEXHUwMjYxXHUwMjY1XHUwMjY5XHUwMjZEXHUwMjcxXHUwMjc1XHVBNUE1XDAzMVwwMDBcdTAyN0FcdUE1QTUiKworICAgICAgICAiXDAyN1wwMDBcdTAyODNcdTAyOEZcdTAyOTlcdTAyOUVcMDAwXHUwMkE3XHUwMkIzXHUwMkJEXDAwMFx1MDJDMlx1MDJDOSIrCisgICAgICAgICJcdTAyQ0RcdTAyQ0RcdTAyQ0RcdTAwRTVcdTAyRDFlZXV9XDAwMFx1MDBDRFx1MDJENlwwMDBcMDAwXHUwMkREXHUwMkUxIisKKyAgICAgICAgIlx1MDI3OVx1MDI3OVx1MDI3OVwwMDBcMDAwXHUwMkU2XHUwMkVGXHUwMkZBXDAwMFx1MDA5NVwwMDBcdTRDMTlcMDAwXHUwMDk1IisKKyAgICAgICAgIlwwMDBcdTRDMURcdTRDMjJcdTAzMDFcdTAyOTlcMDAwXHUwMzA1XHUwMkYxXHUwMkM1XDAwMFx1MDJFOT1cdTAzMDlcdTAzMEQiKworICAgICAgICAiXHUwMzExXHUwMzE1bVx1QTVBNVwwMzFcMDAwXHUwMzFCXHUwMzI3XHUwMzMzXHUwMzNGXHUwMzRCXHUwMzU3XHUwMzYzIisKKyAgICAgICAgIlx1MDM2Rlx1MDM3Qlx1MDM4N1x1MDM5M1x1MDM5RkJlXHUwM0FBXHUwM0IzXHUwM0JFXHUwM0MxXHUwM0M2XHUwM0NGXHUwM0Q4IisKKyAgICAgICAgIlx1MDNFRVx1MDNGMVx1MDNGNlx1MDNGRnVcdTAyOTlcdTAwOTFcdTAyRTltXHUwNDBBXHUwNDEzXHUwNDFFXHUwNDIxXHUwNDI2IisKKyAgICAgICAgIlx1MDQyRlx1MDQzOFx1MDQ0RVx1MDEzOVx1MDQ1Nlx1MDQ1Rn1cdTAyODlcdTAwQTlcdTA0NjlcdUE1QTVcMDMyXDAwMCIrCisgICAgICAgICJcdTRDMkFcdTRDMzJcdUE1QTVcMDIyXDAwMFx1NEMzQVx1QTVBNVwwMzZcMDAwXHU0QzQyXHU0QzRBXHU0QzUyXHVBNUE1IisKKyAgICAgICAgIlwwMjRcMDAwXHU0QzVBXHVBNUE1XDAwNFwwMDBcdTRDNjJcMDAwXDAwMFx1NEM2QVx1QTVBNVwwMjdcMDAwXHU0QzcyXDAwMCIrCisgICAgICAgICJcdTRDN0FcdUE1QTVcMDA1XDAwMFx1MDQ2RVx1MDQ3N1wwMDBcdTA0ODJcdTA0OEJcdUE1QTVcMDIwXDAwMFx1NEM4MlwwMDAiKworICAgICAgICAiXDAwMFx1NEM4QVwwMDBcMDAwXHU0QzkyXDAwMFx1NEM5QVx1QTVBNVwwMjZcMDAwXHU0Q0EyXDAwMFx1NENBQVx1QTVBNSIrCisgICAgICAgICJcMDEyXDAwMFx1NENCMlx1NENCQVx1NENDMlx1NENDQVx1NENEMlwwMDBcMDAwXHU0Q0RBXHU0Q0UyXDAwMFwwMDBcdTRDRUEiKworICAgICAgICAiXHU0Q0YyXHVBNUE1XDAwNlwwMDBcdTRDRkFcdTREMDJcMDAwXDAwMFx1NEQwQVx1NEQxMlwwMDBcMDAwXHU0RDFBXHU0RDIyIisKKyAgICAgICAgIlx1QTVBNVwwNDJcMDAwXHU0RDJBXHU0RDMyXHU0RDNBXHU0RDQyXHVBNUE1XDAyMFwwMDBcdTRENEFcdTRENTJcdTRENUEiKworICAgICAgICAiXHU0RDYyXHVBNUE1XDAwNlwwMDBcdTRENkFcdTRENzJcdTREN0FcdTREODJcdUE1QTVcMDMzXDAwMFx1NEQ4OVx1NEQ4RCIrCisgICAgICAgICJcdUE1QTVcMDI1XDAwMDlcMDM1IUlcdTAyNTFcdTAyNTVcdTAyNTlcdTAyNURcdTAyNjFcdTA0OTZcdTA0OUVcdTA0QTYiKworICAgICAgICAiXHUwNEFFXHUwNEI2XHUwNEJFXHUwNEM2XHUwNENFXHUwNEQ2XHUwNERFXHUwNEU2XHUwNEVGXHUwNEZCXHUwNTA3XHUwNTEzIisKKyAgICAgICAgIlx1MDUxRlx1MDUyQlx1MDUzN1x1MDU0M1x1MDU0Rlx1MDU1OFx1MDU2Q1x1MDU4MFx1MDU5NFx1MDVBOFx1MDVCQ1x1MDVEMCIrCisgICAgICAgICJcdTA1RTRcdTA1RjhcdTA2MENcdTA2MjBcdTA2MzZcdTA2M0VcdTA2NDZcdTA2NEVcdTA2NTZcdTA2NUVcdTA2NjZcdTA2NkUiKworICAgICAgICAiXHUwNjc2XHUwNjdGXHUwNjhCXHUwNjk3XHUwNkEzXHUwNkFGXHUwNkJCXHUwNkM3XHUwNkQzXHUwNkRGXHUwNkVCXHUwNkY3IisKKyAgICAgICAgIlx1MDcwM1x1MDcwRlx1MDcxQlx1MDcyN1x1MDczM1x1MDczRlx1MDc0Qlx1MDc1N1x1MDc2M1x1MDc2Rlx1MDc3Qlx1MDc4NyIrCisgICAgICAgICJcdTA3OTNcdTA3OUZcdTA3QUJcdTA3QjdcdTA3QzNcdTA3Q0ZcdTA3REJcdTA3RTdcdTA3RjNcdTA3RkZcdTA4MEJcdTA4MTciKworICAgICAgICAiXHUwODIzXHUwODJGXHUwODM5XHUwMzAxXHUwMjk5XHUwMDkxXHUwMkYxXHUwMkM1XHUwODNEXHUwMkNEZWlcdTA4NDF1IisKKyAgICAgICAgIlx1MDJFOVx1MDBDRFx1MDg0NVx1MDJERFx1MDJFMVx1MDI3OVx1MDJFNVx1MDJFRFx1MDg0OVx1MDNDMVx1MDg0RFx1MDNGMSIrCisgICAgICAgICJcdTA4NTFcdTAwOTVcMDIxXHUwNzExXHUwMjg5XHUwMEE5XHUwMzA1XHUwNzQxXHUwMkM5XHUwMEU1bXFcdTA3N0R9XHUwNDY5IisKKyAgICAgICAgIlx1MDA4OT1cdTA3QjlcdTA3QzVcdTAwRURcdTAwOERcdTA3RTlcdTAyQjlcdTA0MjFcdTAwRkRcdTAxMzlcdTAxMDFcdTAwQTEiKworICAgICAgICAiXHUwMjREXHVBNUE1NFwwMDBcdTA4NTVcdUE1QTVcMDIzXDAwMFx1MDg1OVx1QTVBNVwwMTRcMDAwXHUwODVEXHUwODYxIisKKyAgICAgICAgIlx1MDg2NVx1MDg2OVx1MDg2RFx1MDg3MVx1MDg3NVx1MDg3OVx1MDg3RFx1MDg4MVx1MDg4NVx1MDg4OVx1MDg4RFx1MDg5MSIrCisgICAgICAgICJcdTA4OTVcdTA4OTlcdTA4OURcdTA4QTFcdTA4QTVcdTA4QTlcdTA4QURcdTA4QjFcdTA4QjVcdTA4QjlcdTA4QkRcdTA4QzEiKworICAgICAgICAiXHUwOEM1XHUwOEM5XHUwOENEXHUwOEQxXHUwOEQ1XHUwOEQ5XHUwOEREXHUwOEUxXHUwOEU1XHUwOEU5XHUwOEVEXHUwOEYxIisKKyAgICAgICAgIlx1MDhGNVx1MDhGOVx1MDhGRFx1MDkwMVx1MDkwNVx1MDkwOVx1MDkwRFx1MDkxMVx1MDkxNVx1MDkxOVx1MDkxRFx1MDkyMSIrCisgICAgICAgICJcdTA5MjVcdTA5MjlcdTA5MkRcdTA5MzFcdTA5MzVcdTA5MzlcdTA5M0RcdTA5NDFcdTA5NDVcdTA5NDlcdTA5NERcdTA5NTEiKworICAgICAgICAiXHUwOTU1XHUwOTU5XHUwOTVEXHUwOTYxXHUwOTY1XHUwOTY5XHUwOTZEXHUwOTcxXHUwOTc1XHUwOTc5XHUwOTdEXHUwOTgxIisKKyAgICAgICAgIlx1MDk4NVx1MDk4OVx1MDk4RFx1MDk5MVx1MDk5NVx1MDk5OVx1MDk5RFx1MDlBMVx1MDlBNVx1MDlBOVx1MDlBRFx1MDlCMSIrCisgICAgICAgICJcdTA5QjVcdTA5QjlcdTA5QkRcdTA5QzFcdTA5QzVcdTA5QzlcdTA5Q0RcdTA5RDFcdTA5RDVcdTA5RDlcdTA5RERcdTA5RTEiKworICAgICAgICAiXHUwOUU1XHUwOUU5XHUwOUVEXHUwOUYxXHUwOUY1XHUwOUY5XHUwOUZEXHUwQTAxXHUwQTA1XHUwQTA5XHUwQTBEXHUwQTExIisKKyAgICAgICAgIlx1MEExNVx1MEExOVx1MEExRFx1MEEyMVx1MEEyNVx1MEEyOVx1MEEyRFx1MEEzMVx1MEEzNVx1MEEzOVx1MEEzRFx1MEE0MSIrCisgICAgICAgICJcdTBBNDVcdTBBNDlcdTBBNERcdTBBNTFcdTBBNTVcdTBBNTlcdTBBNURcdTBBNjFcdTBBNjVcdTBBNjlcdTBBNkRcdTBBNzEiKworICAgICAgICAiXHUwQTc1XHUwQTc5XHUwQTdEXHUwQTgxXHUwQTg1XHUwQTg5XHUwQThEXHUwQTkxXHUwQTk1XHUwQTk5XHUwQTlEXHUwQUExIisKKyAgICAgICAgIlx1MEFBNVx1MEFBOVx1MEFBRFx1MEFCMVx1MEFCNVx1MEFCOVx1MEFCRFx1MEFDMVx1MEFDNVx1MEFDOVx1MEFDRFx1MEFEMSIrCisgICAgICAgICJcdTBBRDVcdTBBRDlcdTBBRERcdTBBRTFcdTBBRTVcdTBBRTlcdTBBRURcdTBBRjFcdTBBRjVcdTBBRjlcdTBBRkRcdTBCMDEiKworICAgICAgICAiXHUwQjA1XHUwQjA5XHUwQjBEXHUwQjExXHUwQjE1XHUwQjE5XHUwQjFEXHUwQjIxXHUwQjI1XHUwQjI5XHUwQjJEXHUwQjMxIisKKyAgICAgICAgIlx1MEIzNVx1MEIzOVx1MEIzRFx1MEI0MVx1MEI0NVx1MEI0OVx1MEI0RFx1MEI1MVx1MEI1NVx1MEI1OVx1MEI1RFx1MEI2MSIrCisgICAgICAgICJcdTBCNjVcdTBCNjlcdTBCNkRcdTBCNzFcdTBCNzVcdTBCNzlcdTBCN0RcdTBCODFcdTBCODVcdTBCODlcdTBCOERcdTBCOTEiKworICAgICAgICAiXHUwQjk1XHUwQjk5XHUwQjlEXHUwQkExXHUwQkE1XHUwQkE5XHUwQkFEXHUwQkIxXHVBNUE1XDAxMlwwMDBcMDA1XHVBNUE1IisKKyAgICAgICAgIjVcMDAwXHUwQkI1XDAwMFx1MDhCOVx1MEJCOVx1MEJCRFx1QTVBNVwwMjFcMDAwXHU0RDkyXDAwMFx1NEQ5QVwwMDBcdTREQTIiKworICAgICAgICAiXDAwMFx1NERBQVwwMDBcdTREQjJcMDAwXHU0REJBXDAwMFx1NERDMlwwMDBcdTREQ0FcMDAwXHU0REQyXDAwMFx1NEREQSIrCisgICAgICAgICJcMDAwXHU0REUyXDAwMFx1NERFQVwwMDBcMDAwXHU0REYyXDAwMFx1NERGQVwwMDBcdTRFMDJcdUE1QTVcMDA2XDAwMFx1NEUwQSIrCisgICAgICAgICJcdTRFMTJcMDAwXHU0RTFBXHU0RTIyXDAwMFx1NEUyQVx1NEUzMlwwMDBcdTRFM0FcdTRFNDJcMDAwXHU0RTRBXHU0RTUyIisKKyAgICAgICAgIlx1QTVBNVwwMjZcMDAwXHU0RTVBXHVBNUE1XDAwNlwwMDBcdTBCQzJcdTBCQ0FcMDAwXHU0RTYyXHVBNUE1XDAxNVwwMDAiKworICAgICAgICAiXHU0RTZBXDAwMFx1NEU3MlwwMDBcdTRFN0FcMDAwXHU0RTgyXDAwMFx1NEU4QVwwMDBcdTRFOTJcMDAwXHU0RTlBXDAwMCIrCisgICAgICAgICJcdTRFQTJcMDAwXHU0RUFBXDAwMFx1NEVCMlwwMDBcdTRFQkFcMDAwXHU0RUMyXDAwMFwwMDBcdTRFQ0FcMDAwXHU0RUQyIisKKyAgICAgICAgIlwwMDBcdTRFREFcdUE1QTVcMDA2XDAwMFx1NEVFMlx1NEVFQVwwMDBcdTRFRjJcdTRFRkFcMDAwXHU0RjAyXHU0RjBBXDAwMCIrCisgICAgICAgICJcdTRGMTJcdTRGMUFcMDAwXHU0RjIyXHU0RjJBXHVBNUE1XDAyNlwwMDBcdTRGMzJcMDAwXDAwMFx1NEYzQVx1NEY0Mlx1NEY0QSIrCisgICAgICAgICJcdTRGNTJcMDAwXDAwMFwwMDBcdTRGNUFcdUE1QTVcMDIyXDAwMFx1MEJEMVx1MEJENVx1MEJEOVx1MEJERFx1MEJFMVx1MEJFNSIrCisgICAgICAgICJcdTBCRTlcdTBCRURcdTBCRjFcdTBCRjVcdTBCRjlcdTBCRkRcdTBDMDFcdTBDMDVcdTBDMDlcdTBDMERcdTBDMTFcdTBDMTUiKworICAgICAgICAiXHUwQzE5XHUwQzFEXHUwQzIxXHUwQzI1XHUwQzI5XHUwQzJEXHUwQzMxXHUwQzM1XHUwQzM5XHUwQzNEXHUwQzQxXHUwQzQ1IisKKyAgICAgICAgIlx1MEM0OVx1MEM0RFx1MEM1MVx1MEM1NVx1MEM1OVx1MEM1RFx1MEM2MVx1MEM2NVx1MEM2OVx1MEM2RFx1MEM3MVx1MEM3NSIrCisgICAgICAgICJcdTBDNzlcdTBDN0RcdTBDODFcdTBDODVcdTBDODlcdTBDOERcdTBDOTFcdTBDOTVcdTBDOTlcdTBDOURcdTBDQTFcdTBDQTUiKworICAgICAgICAiXHUwQ0E5XHUwQ0FEXHUwQ0IxXHUwQ0I1XHUwQ0I5XHUwQ0JEXHUwQ0MxXHUwQ0M1XHUwQ0M5XHUwQ0NEXHUwQ0QxXHUwQ0Q1IisKKyAgICAgICAgIlx1MENEOVx1MENERFx1MENFMVx1MENFNVx1MENFOVx1MENFRFx1MENGMVx1MENGNVx1MENGOVx1MENGRFx1MEQwMVx1MEQwNSIrCisgICAgICAgICJcdTBEMDlcdTBEMERcdTBEMTFcdTBEMTVcdTBEMTlcdTBEMURcdTBEMjFcdTBEMjVcdTBEMjlcdTBEMkRcdTBEMzFcdTBEMzUiKworICAgICAgICAiXHUwRDM5XHUwRDNEXHUwRDQxXHUwRDQ1XDAwMFwwMDBcMDAwXHUwODVEXHUwODc1XHUwRDQ5XHUwRDREXHUwRDUxXHUwRDU1IisKKyAgICAgICAgIlx1MEQ1OVx1MEQ1RFx1MDg2RFx1MEQ2MVx1MEQ2NVx1MEQ2OVx1MEQ2RFx1MDg3RFx1MEQ3M1x1MEQ3Rlx1MEQ4Qlx1MEQ5NyIrCisgICAgICAgICJcdTBEQTNcdTBEQUZcdTBEQkJcdTBEQzdcdTBERDNcdTBEREZcdTBERUJcdTBERjdcdTBFMDNcdTBFMEZcdTBFMThcdTBFMkMiKworICAgICAgICAiXHUwRTQwXHUwRTU0XHUwRTY4XHUwRTdDXHUwRTkwXHUwRUE0XHUwRUI4XHUwRUNDXHUwRUUwXHUwRUY0XHUwRjA4XHUwRjFDIisKKyAgICAgICAgIlx1MEYzMFwwMDBcMDAwXDAwMFx1MEY0N1x1MEY1M1x1MEY1Rlx1MEY2Qlx1MEY3N1x1MEY4M1x1MEY4Rlx1MEY5Qlx1MEZBNyIrCisgICAgICAgICJcdTBGQjNcdTBGQkZcdTBGQ0JcdTBGRDdcdTBGRTNcdTBGRUZcdTBGRkJcdTEwMDdcdTEwMTNcdTEwMUZcdTEwMkJcdTEwMzciKworICAgICAgICAiXHUxMDQzXHUxMDRGXHUxMDVCXHUxMDY3XHUxMDczXHUxMDdGXHUxMDhCXHUxMDk3XHUxMEEzXHUxMEFGXHUxMEJCXHUxMEM3IisKKyAgICAgICAgIlx1MTBEM1x1MTBERlx1MTBFQlx1QTVBNVwwMzRcMDAwXHUwQkQxXHUwQkREXHUwQkU5XHUwQkYxXHUwQzExXHUwQzE1XHUwQzIxIisKKyAgICAgICAgIlx1MEMyOVx1MEMyRFx1MEMzNVx1MEMzOVx1MEMzRFx1MEM0MVx1MEM0NVx1MEUxRVx1MEUzMlx1MEU0Nlx1MEU1QVx1MEU2RSIrCisgICAgICAgICJcdTBFODJcdTBFOTZcdTBFQUFcdTBFQkVcdTBFRDJcdTBFRTZcdTBFRkFcdTBGMEVcdTBDNDZcdUE1QTVcMDA0XDAwMFx1MDg1RCIrCisgICAgICAgICJcdTA4NzVcdTBENDlcdTBENERcdTBGNzlcdTBGODVcdTBGOTFcdTA4ODlcdTBGQTlcdTA4QjlcdTA5ODFcdTA5QjFcdTA5QUQiKworICAgICAgICAiXHUwOTg1XHUwQUY1XHUwOEQ5XHUwOTc5XHUxMDE1XHUxMDIxXHUxMDJEXHUxMDM5XHUxMDQ1XHUxMDUxXHUxMDVEXHUxMDY5IisKKyAgICAgICAgIlx1MTBGNVx1MTBGOVx1MDhGMVx1MTBGRFx1MTEwMVx1MTEwNVx1MTEwOVx1MTEwRFx1MTBENVx1MTExMVx1MTExNVx1MEQ1MSIrCisgICAgICAgICJcdTBENTVcdTBENTlcdTExMTlcdTExMURcdTExMjFcdTExMjVcdTEwOERcdTEwOTlcdTEwQTVcdTEwQjFcdTEwQkRcdTExMjkiKworICAgICAgICAiXHVBNUE1XDAxN1wwMDBcdTExMkVcdTExMzZcdTExM0VcdTExNDZcdTExNEVcdTExNTZcdTExNUVcdTExNjZcdTExNkVcdTExNzciKworICAgICAgICAiXHUxMTgzXHUxMThGXHVBNUE1XDAwNFwwMDBcdTExOTlcdTExOURcdTExQTFcdTExQTVcdTExQTlcdTExQURcdTExQjFcdTExQjUiKworICAgICAgICAiXHUxMUI5XHUxMUJEXHUxMUMxXHUxMUM1XHUxMUM5XHUxMUNEXHUxMUQxXHUxMUQ1XHUxMUQ5XHUxMUREXHUxMUUxXHUxMUU1IisKKyAgICAgICAgIlx1MTFFOVx1MTFFRFx1MTFGMVx1MTFGNVx1MTFGOVx1MTFGRFx1MTIwMVx1MTIwNVx1MTIwOVx1MTIwRFx1MTIxMVx1MTIxNSIrCisgICAgICAgICJcdTEyMTlcdTEyMURcdTEyMjFcdTEyMjVcdTEyMjlcdTEyMkRcdTEyMzFcdTEyMzVcdTEyMzlcdTEyM0RcdTEyNDFcdTEyNDUiKworICAgICAgICAiXHUxMjQ5XHUxMjREXHUxMjUxXDAwMFx1MTI1NFx1MTI2Q1x1MTI4MFx1MTI5Qlx1MTJBNFx1MTJCRlx1MTJDQlx1MTJENCIrCisgICAgICAgICJcdTEyRjBcdTEzMDdcdTEzMTNcdTEzMUZcdTEzMjhcdTEzM0NcdTEzNTBcdTEzNjRcdTEzNzhcdTEzOENcdTEzQTBcdTEzQjQiKworICAgICAgICAiXHUxM0QyXHUxM0Q4XHUxM0Y0XHUxNDEwXHUxM0UwXHUxNDI4XHUxNDQ0XHUxNDYwXHUxNDc3XHUxNDgzXHUxNDhDXHUxNEEwIisKKyAgICAgICAgIlx1MTRCNFx1MTRDQ1x1MTRFN1x1MTRGM1x1MTRGQ1x1MTUxM1x1MTUxRlx1MTQzQVx1MTUyQVx1MTUzM1x1MTUzRlx1MTU0OCIrCisgICAgICAgICJcdTE1NjRcdTE1NzhcdTE1OTBcdTE1QUNcdTE1QzNcdTE1Q0ZcdTE1RDhcdTE1RjRcdTE2MDhcdTE2MjdcdTE2MzBcdTE2NEIiKworICAgICAgICAiXHUxNjU0XHUxNjZCXHUxNjc0XHUxNjg4XHUxNkEwXHUxNkI0XHUxNkNDXHUxNkUyXHUxNkU4XHUxNzAzXHUxNzBGXHUxNzE4IisKKyAgICAgICAgIlx1MTcyRlx1MTczQlx1MTc0N1x1MTc1MFx1MTc2OFx1MTc3RVx1MTc4NFx1MTdBM1x1MTdBQ1x1MTNGQ1x1MTdDNFx1MTdEQiIrCisgICAgICAgICJcdTE3RTdcdTE3RjBcdTE4MDZcdTE4MENcdTE4MjBcdTE4M0FcdTE4NDBcdTE0MUJcdTE4NUVcdTE4NjZcdTE4NkVcdTE4NzYiKworICAgICAgICAiXHUxODdFXHUxODg2XHUxODhFXHUxODk2XHUxODlFXHUxOEE2XHUxOEFGXHUxOEJCXHUxOEM3XHUxOEQzXHUxOERGXHUxOEVCIisKKyAgICAgICAgIlx1MThGN1x1MTkwM1x1MTkwRlx1MTkxQlx1MTkyN1x1MTkzM1x1MTkzRlx1MTk0Qlx1MTk1N1x1MTk2M1x1MTk2RVx1MTk3NiIrCisgICAgICAgICJcdTE5N0ZcdTE5OEFcdTE5OTJcdUE1QTVcMDA0XDAwMFx1MTk5QVx1MTlBMlx1MTlBQVx1MTlCMlx1MTlCOFx1MTlDRVx1MTlENiIrCisgICAgICAgICJcdTE5REVcdTE5RTZcdTE5RUVcdTE5RjZcdTAyRkVcdTE5RkVcdTFBMDdcdTFBMTBcdTFBMjZcdTFBMkVcdTFBMzZcdTFBM0UiKworICAgICAgICAiXHUxQTQ2XHUxQTRFXHUxQTU2XHUxQTVGXHUxQTZCXHUxQTc3XHUxQTgzXHUxQThFXHUxQTk2XHUxQTlFXHUxQUE2XHUxQUFFIisKKyAgICAgICAgIlx1MUFCNlx1MUFCRVx1MUFDNlx1MUFDRVx1MUFENlx1MUFERlx1MUFFQlx1MUFFMlx1MUFGN1x1MUIwM1x1MUIwRlx1MUIwNiIrCisgICAgICAgICJcdTFCMUJcdTFCMjdcdTFCMzBcdTE5NjZcdTFCNDdcdTFCNTNcdTFCNUZcdTFCNkJcdTFCNzRcdTFCOENcdTFCQUFcdTAwOEEiKworICAgICAgICAiXHUxQkIyXHUxQkJBXHUxQkMyXHUxQkNBXHUxQkQyXHUxQkRBXHUxQkUyXHUxQkVBXHUxQkYyXHUxQkZBXHUxQzAyXHUxQzBBIisKKyAgICAgICAgIlx1MUMxMlx1MUMxQVx1MUMyMlx1MUMyQVx1MUMzMFx1MUM0Nlx1MUM0RVx1MUM1Nlx1MUM1Q1x1MUM3M1x1MUM3RVx1MUM4NiIrCisgICAgICAgICJcdTFDOEVcdTFDOTZcdTFDOUVcdTFDQTZcdTFDQUVcdTFDQjZcdTFBOTJcdTFDQkVcdTFDQzdcdTFDRDJcdTFDREFcdTFDRTMiKworICAgICAgICAiXHUxQ0VGXHUxQ0ZBXHUxRDAwXHUxRDE3XHUxRDIyXHUxRDJBXHUxRDMyXHUxRDNBXDAwMFwwMDBcdTFENDJcdTFENEFcdTFENTIiKworICAgICAgICAiXHUxRDVBXHUxRDYyXHUxRDZBXHUxRDcyXHUxRDdBXHUxRDgyXHUxRDhCXHUxRDk3XHUxREEzXHUxREFGXHUxREJCXHUxREM3IisKKyAgICAgICAgIlx1MUREM1x1MURERlx1MURFQlx1MURGN1x1MUUwM1x1MUUwRlx1MUUxQlx1MUUyN1x1MUUzM1x1MUUzRlx1MUU0Qlx1MUU1NyIrCisgICAgICAgICJcdTFFNjNcdTFFNkZcdTFFN0JcdTFFODdcMDAwXHU0RjYxXHU0RjY1XHU0RjY5XHU0RjZEXHU0RjcxXHU0Rjc1XHU0Rjc5IisKKyAgICAgICAgIlx1NEY3RFx1NEY4MVx1NEY4NVx1NEY4OVx1NEY4RFx1NEY5MVx1NEY5NVx1NEY5OVx1NEY5RFx1NEZBMVx1NEZBNVx1NEZBOSIrCisgICAgICAgICJcdTRGQURcdTRGQjFcdTRGQjVcdTRGQjlcdTRGQkRcdTRGQzFcdTRGQzVcdTRGQzlcdTRGQ0RcdTRGRDFcdTRGRDVcdTRGRDkiKworICAgICAgICAiXHU0RkREXHU0RkUxXHU0RkU1XHU0RkU5XHU0RkVEXHU0RkYxXHU0RkY1XHU0RkY5XHU0RkZEXHU1MDAxXHU1MDA1XHU1MDA5IisKKyAgICAgICAgIlx1NTAwRFx1NTAxMVx1NTAxNVx1NTAxOVx1NTAxRFx1NTAyMVx1NTAyNVx1NTAyOVx1NTAyRFx1NTAzMVx1NTAzNVx1NTAzOSIrCisgICAgICAgICJcdTUwM0RcdTUwNDFcdTUwNDVcdTUwNDlcdTUwNERcdTUwNTFcdTUwNTVcdTUwNTlcdTUwNURcdTUwNjFcdTUwNjVcdTUwNjkiKworICAgICAgICAiXHU1MDZEXHU1MDcxXHU1MDc1XHU1MDc5XHU1MDdEXHU1MDgxXHU1MDg1XHU1MDg5XHU1MDhEXHU1MDkxXHU1MDk1XHU1MDk5IisKKyAgICAgICAgIlx1NTA5RFx1NTBBMVx1NTBBNVx1NTBBOVx1NTBBRFx1NTBCMVx1NTBCNVx1NTBCOVx1NTBCRFx1NTBDMVx1NTBDNVx1NTBDOSIrCisgICAgICAgICJcdTUwQ0RcdTUwRDFcdTUwRDVcdTUwRDlcdTUwRERcdTUwRTFcdTUwRTVcdTUwRTlcdTUwRURcdTUwRjFcdTUwRjVcdTUwRjkiKworICAgICAgICAiXHU1MEZEXHU1MTAxXHU1MTA1XHU1MTA5XHU1MTBEXHU1MTExXHU1MTE1XHU1MTE5XHU1MTFEXHU1MTIxXHU1MTI1XHU1MTI5IisKKyAgICAgICAgIlx1NTEyRFx1NTEzMVx1NTEzNVx1NTEzOVx1NTEzRFx1NTE0MVx1NTE0NVx1NTE0OVx1NTE0RFx1NTE1MVx1NTE1NVx1NTE1OSIrCisgICAgICAgICJcdTUxNURcdTUxNjFcdTUxNjVcdTUxNjlcdTUxNkRcdTUxNzFcdTUxNzVcdTUxNzlcdTUxN0RcdTUxODFcdTUxODVcdTUxODkiKworICAgICAgICAiXHU1MThEXHU1MTkxXHU1MTk1XHU1MTk5XHU1MTlEXHU1MUExXHU1MUE1XHU1MUE5XHU1MUFEXHU1MUIxXHU1MUI1XHU1MUI5IisKKyAgICAgICAgIlx1NTFCRFx1NTFDMVx1NTFDNVx1NTFDOVx1NTFDRFx1NTFEMVx1NTFENVx1NTFEOVx1NTFERFx1NTFFMVx1NTFFNVx1NTFFOSIrCisgICAgICAgICJcdTUxRURcdTUxRjFcdTUxRjVcdTUxRjlcdTUxRkRcdTUyMDFcdTUyMDVcdTUyMDlcdTUyMERcdTUyMTFcdTUyMTVcdTUyMTkiKworICAgICAgICAiXHU1MjFEXHU1MjIxXHU1MjI1XHU1MjI5XHU1MjJEXHU1MjMxXHU1MjM1XHU1MjM5XHU1MjNEXHU1MjQxXHU1MjQ1XHU1MjQ5IisKKyAgICAgICAgIlx1NTI0RFx1NTI1MVx1NTI1NVx1NTI1OVx1NTI1RFx1NTI2MVx1NTI2NVx1NTI2OVx1NTI2RFx1NTI3MVx1NTI3NVx1NTI3OSIrCisgICAgICAgICJcdTUyN0RcdTUyODFcdTUyODVcdTUyODlcdTUyOERcdTUyOTFcdTUyOTVcdTUyOTlcdTUyOURcdTUyQTFcdTUyQTVcdTUyQTkiKworICAgICAgICAiXHU1MkFEXHU1MkIxXHU1MkI1XHU1MkI5XHU1MkJEXHU1MkMxXHU1MkM1XHU1MkM5XHU1MkNEXHU1MkQxXHU1MkQ1XHU1MkQ5IisKKyAgICAgICAgIlx1NTJERFx1NTJFMVx1NTJFNVx1NTJFOVx1NTJFRFx1NTJGMVx1NTJGNVx1NTJGOVx1NTJGRFx1NTMwMVx1NTMwNVx1NTMwOSIrCisgICAgICAgICJcdTUzMERcdTUzMTFcdTUzMTVcdTUzMTlcdTUzMURcdTUzMjFcdTUzMjVcdTUzMjlcdTUzMkRcdTUzMzFcdTUzMzVcdTUzMzkiKworICAgICAgICAiXHU1MzNEXHU1MzQxXHU1MzQ1XHU1MzQ5XHU1MzREXHU1MzUxXHU1MzU1XHU1MzU5XHU1MzVEXHU1MzYxXHU1MzY1XHU1MzY5IisKKyAgICAgICAgIlx1NTM2RFx1NTM3MVx1NTM3NVx1NTM3OVx1NTM3RFx1NTM4MVx1NTM4NVx1NTM4OVx1NTM4RFx1NTM5MVx1NTM5NVwwMDAiKworICAgICAgICAiXDAwMFx1NTM5OVwwMDBcdTUzOURcMDAwXDAwMFx1NTNBMVx1NTNBNVx1NTNBOVx1NTNBRFx1NTNCMVx1NTNCNVx1NTNCOSIrCisgICAgICAgICJcdTUzQkRcdTUzQzFcdTUzQzVcMDAwXHU1M0M5XDAwMFx1NTNDRFwwMDBcMDAwXHU1M0QxXHU1M0Q1XDAwMFwwMDBcMDAwIisKKyAgICAgICAgIlx1NTNEOVx1NTNERFx1NTNFMVx1NTNFNVx1QTVBNVwwMjJcMDAwXHUxRTkyXHUxRTlBXHUxRUEyXHUxRTk3XHUxRUFCXHUxRUI2IisKKyAgICAgICAgIlx1MUVCNlx1QTVBNVwwMTRcMDAwXHUxRUJFXHUxRUM2XHUxRUNFXHUxRUQ2XHUxRURFXHVBNUE1XDAwNVwwMDBcdTUzRUEiKworICAgICAgICAiXDAwMFx1NTNGMlx1MUVFNVx1MDMwOVx1MDMxNVx1MUVFOVx1MUVFRFx1MUVGMVx1MUVGNVx1MUVGOVx1MUVGRFx1MDI2NSIrCisgICAgICAgICJcdTUzRkFcdTU0MDJcdTU0MEJcdTU0MTdcdTU0MjJcdTU0MkFcdTU0MzJcdTU0M0FcdTU0NDJcdTU0NEFcdTU0NTJcdTU0NUEiKworICAgICAgICAiXHU1NDYyXDAwMFx1NTQ2QVx1NTQ3Mlx1NTQ3QVx1NTQ4Mlx1NTQ4QVwwMDBcdTU0OTJcMDAwXHU1NDlBXHU1NEEyXDAwMCIrCisgICAgICAgICJcdTU0QUFcdTU0QjJcMDAwXHU1NEJBXHU1NEMyXHU1NENBXHU1NEQyXHU1NERBXHU1NEUyXHU1NEVBXHU1NEYyXHU1NEZBIisKKyAgICAgICAgIlx1MUYwMlx1MUYwOVx1MUYwOVx1QTVBNVwwMDRcdTFGMERcdUE1QTVcMDA0XHUxRjExXHVBNUE1XDAwNFx1MUYxNVx1QTVBNSIrCisgICAgICAgICJcMDA0XHUxRjE5XHVBNUE1XDAwNFx1MUYxRFx1QTVBNVwwMDRcdTFGMjFcdUE1QTVcMDA0XHUxRjI1XHVBNUE1XDAwNFx1MUYyOSIrCisgICAgICAgICJcdUE1QTVcMDA0XHUxRjJEXHVBNUE1XDAwNFx1MUYzMVx1QTVBNVwwMDRcdTFGMzVcdUE1QTVcMDA0XHUxRjM5XHUxRjNEIisKKyAgICAgICAgIlx1MUYzRFx1MUY0MVx1MUY0MVx1MUY0NVx1MUY0NVx1MUY0OVx1MUY0OVx1MUY0RFx1MUY0RFx1MUY1MVx1MUY1MVx1QTVBNSIrCisgICAgICAgICJcMDA0XHUxRjU1XHVBNUE1XDAwNFx1MUY1OVx1QTVBNVwwMDRcdTFGNURcdUE1QTVcMDA0XHUxRjYxXHUxRjY1XHUxRjY1IisKKyAgICAgICAgIlx1QTVBNVwwMDRcdTFGNjlcdTFGNkVcdTFGNkVcdUE1QTVcMDA0XHUxRjc1XHVBNUE1XDAwNFx1MUY3OVx1MUY3RFx1MUY3RCIrCisgICAgICAgICJcdTFGODJcdTFGODJcdUE1QTUhXDAwMFx1QTVBNVwwMDRcdTFGODlcdTAxODFcdTAxODFcdTFGOERcdTFGOERcdTFGOTEiKworICAgICAgICAiXHUxRjkxXHUwMTgyXHUxRjk1XHUxRjk1XHUxRjk5XHUxRjk5XHUxRjlEXHUxRjlEXHVBNUE1XDAwNFx1MUZBMVx1MUZBNSIrCisgICAgICAgICJcdTFGQTVcdTFGQUJcdTFGQUJcdTFGQjdcdTFGQjdcdTFGQzNcdTFGQzNcdTFGQ0ZcdTFGQ0ZcdTFGREJcdTFGREJcdTFGRTciKworICAgICAgICAiXHUxRkU3XHUxRkYzXHUxRkYzXHUxRkYzXHUxRkZGXHUxRkZGXHUxRkZGXHVBNUE1XDAwNFx1MjAwOVx1MjAwRlx1MjAxQiIrCisgICAgICAgICJcdTIwMjdcdTFGRkZcdTIwMzNcdTIwM0VcdTIwNDZcdTIwNEVcdTIwNTZcdTIwNUVcdTIwNjZcdTIwNkVcdTIwNzZcdTIwN0UiKworICAgICAgICAiXHUyMDg2XHUyMDhFXHUyMDk2XHUyMDlFXHUyMEE2XHUyMEFFXHUyMEI2XHUyMEJFXHUyMEM2XHUyMEMyXHUyMENFXHUyMEQ2IisKKyAgICAgICAgIlx1MjBERVx1MjBFNlx1MjBFRVx1MjBGNlx1MjBGRVx1MjEwNlx1MjEwRVx1MjExNlx1MjExRVx1MjEyNlx1MjEyRVx1MjEzNiIrCisgICAgICAgICJcdTIxM0VcdTIxNDZcdTIxNEVcdTIxNTZcdTIxNUVcdTIxNjZcdTIxNkVcdTIxNzZcdTIxN0VcdTIxODZcdTIxOEVcdTIxOTYiKworICAgICAgICAiXHUyMTlFXHUyMUE2XHUyMUFFXHUyMUI2XHUyMUJFXHUyMUM2XHUyMUNFXHUyMUQ2XHUyMURFXHUyMUU2XHUyMUVFXHUyMUY2IisKKyAgICAgICAgIlx1MjFGRVx1MjIwNlx1MjIwRVx1MjIxNlx1MjIxRVx1MjIyNlx1MjIyRVx1MjIzNlx1MjBDQVx1MjBEMlx1MjIzRVx1MjI0NiIrCisgICAgICAgICJcdTIwMkVcdTIyNEVcdTIyNTZcdTIyNUVcdTIyNjZcdTIyNkVcdTIyNzZcdTIyN0VcdTIyODZcdTIyOEVcdTIyOTZcdTIwQkEiKworICAgICAgICAiXHUyMjlFXHUyMkE2XHUyMjMyXHUyMkFFXHUyMjlBXHUyMkI2XHUyMkJFXHUyMkM2XHUyMkNGXHUyMkRCXHUyMkU3XHUyMkYzIisKKyAgICAgICAgIlx1MjJGRlx1MjMwQlx1MjMxN1x1MjMyM1x1MjAyN1x1MjMyRlx1MUZGRlx1MjAzM1x1MjMzQVx1MjM0Mlx1MjA1Nlx1MjM0QSIrCisgICAgICAgICJcdTIwNUVcdTIwNjZcdTIzNTJcdTIzNUFcdTIwODZcdTIzNjJcdTIwOEVcdTIwOTZcdTIzNkFcdTIzNzJcdTIwQTZcdTIzN0EiKworICAgICAgICAiXHUyMEFFXHUyMEI2XHUyMTk2XHUyMTlFXHUyMUI2XHUyMUJFXHUyMUM2XHUyMUU2XHUyMUVFXHUyMUY2XHUyMUZFXHUyMjFFIisKKyAgICAgICAgIlx1MjIyNlx1MjIyRVx1MjM4Mlx1MjIzRVx1MjM4QVx1MjM5Mlx1MjI2Nlx1MjM5QVx1MjI2RVx1MjI3Nlx1MjJDNlx1MjNBMiIrCisgICAgICAgICJcdTIzQUFcdTIyMzJcdTIzQjJcdTIyQUVcdTIyOUFcdTIwMEZcdTIwMUJcdTIzQkJcdTIwMjdcdTIzQzdcdTIwM0VcdTIwNDYiKworICAgICAgICAiXHUyMDRFXHUyMDU2XHUyM0QyXHUyMDZFXHUyMDc2XHUyMDdFXHUyMDg2XHUyM0RBXHUyMEE2XHUyMEJFXHUyMEM2XHUyMEMyIisKKyAgICAgICAgIlx1MjBDRVx1MjBENlx1MjBFNlx1MjBFRVx1MjBGNlx1MjBGRVx1MjEwNlx1MjEwRVx1MjNFMlx1MjExNlx1MjExRVx1MjEyNiIrCisgICAgICAgICJcdTIxMkVcdTIxMzZcdTIxM0VcdTIxNEVcdTIxNTZcdTIxNUVcdTIxNjZcdTIxNkVcdTIxNzZcdTIxN0VcdTIxODZcdTIxOEUiKworICAgICAgICAiXHUyMUE2XHUyMUFFXHUyMUNFXHUyMUQ2XHUyMURFXHUyMUU2XHUyMUVFXHUyMjA2XHUyMjBFXHUyMjE2XHUyMjFFXHUyM0VBIisKKyAgICAgICAgIlx1MjIzNlx1MjBDQVx1MjBEMlx1MjIzRVx1MjI0RVx1MjI1Nlx1MjI1RVx1MjI2Nlx1MjNGMlx1MjI3RVx1MjI4Nlx1MjNGQSIrCisgICAgICAgICJcdTIwQkFcdTIyOUVcdTIyQTZcdTIyMzJcdTIyN0FcdTIwMjdcdTIzQzdcdTIwNTZcdTIzRDJcdTIwODZcdTIzREFcdTIwQTYiKworICAgICAgICAiXHUyNDAyXHUyMTA2XHUyNDBBXHUyNDEyXHUyNDFBXHUyMUU2XHUyMUVFXHUyMjFFXHUyMjY2XHUyM0YyXHUyMjMyXHUyMjdBIisKKyAgICAgICAgIlx1MjQyM1x1MjQyRlx1MjQzQlx1MjQ0Nlx1MjQ0RVx1MjQ1Nlx1MjQ1RVx1MjQ2Nlx1MjQ2RVx1MjQ3Nlx1MjQ3RVx1MjQ4NiIrCisgICAgICAgICJcdTI0OEVcdTI0OTZcdTIwMjJcdTI0OUVcdTIwMTZcdTI0QTZcdTIyQUFcdTI0QUVcdTI0QjZcdTI0QkVcdTI0QzZcdTI0Q0UiKworICAgICAgICAiXHUyNEQ2XHUyNERFXHUyNDEyXHUyNEU2XHUyNEVFXHUyNEY2XHUyNEZFXHUyNDQ2XHUyNDRFXHUyNDU2XHUyNDVFXHUyNDY2IisKKyAgICAgICAgIlx1MjQ2RVx1MjQ3Nlx1MjQ3RVx1MjQ4Nlx1MjQ4RVx1MjQ5Nlx1MjAyMlx1MjQ5RVx1MjAxNlx1MjRBNlx1MjJBQVx1MjRBRSIrCisgICAgICAgICJcdTI0QjZcdTI0QkVcdTI0QzZcdTI0Q0VcdTI0RDZcdTI0REVcdTI0MTJcdTI0RTZcdTI0RUVcdTI0RjZcdTI0RkVcdTI0Q0UiKworICAgICAgICAiXHUyNEQ2XHUyNERFXHUyNDEyXHUyNDBBXHUyNDFBXHUyMTQ2XHUyMEVFXHUyMEY2XHUyMEZFXHUyNENFXHUyNEQ2XHUyNERFIisKKyAgICAgICAgIlx1MjE0Nlx1MjE0RVx1MjUwNlx1MjUwNlx1QTVBNVwwMjJcMDAwXHUyNTBGXHUyNTFCXHUyNTFCXHUyNTI3XHUyNTMzXHUyNTNGIisKKyAgICAgICAgIlx1MjU0Qlx1MjU1N1x1MjBDN1x1MjBDN1x1MjU2M1x1MjU2Rlx1MjU3Qlx1MjU4N1x1MjU5M1x1MjU5Rlx1MjU5Rlx1MjVBQiIrCisgICAgICAgICJcdTI1QjdcdTI1QjdcdTI1QzNcdTI1QzNcdTI1Q0ZcdTI1REJcdTI1REJcdTI1RTdcdTI1RjNcdTI1RjNcdTI1RkZcdTI1RkYiKworICAgICAgICAiXHUyNjBCXHUyNjE3XHUyNjE3XHUyNjIzXHUyNjIzXHUyNjJGXHUyNjNCXHUyNjQ3XHUyNjUzXHUyNjUzXHUyNjVGXHUyNjZCIisKKyAgICAgICAgIlx1MjY3N1x1MjY4M1x1MjY4Rlx1MjY4Rlx1MjY5Qlx1MjZBN1x1MjZCM1x1MjZCRlx1MjZDQlx1MjZEN1x1MjZEN1x1MjZFMyIrCisgICAgICAgICJcdTI2RTNcdTI2RUZcdTI2RUZcdTI2RkJcdTIwQ0JcdTI3MDdcdTI3MTNcdTIyMzdcdTIwRDNcdTI3MUZcMDAwXDAwMFx1MjcyQiIrCisgICAgICAgICJcdTI3MzdcdTI3NDNcdTI3NEZcdTI3NUJcdTI3NjdcdTI3NjdcdTI3NzNcdTI3N0ZcdTI3OEJcdTI3OTdcdTI3OTdcdTI3QTMiKworICAgICAgICAiXHUyN0FGXHUyN0JCXHUyN0M3XHUyN0QzXHUyN0RGXHUyN0VCXHUyN0Y3XHUyODAzXHUyODBGXHUyODFCXHUyODI3XHUyODMzIisKKyAgICAgICAgIlx1MjgzRlx1Mjg0Qlx1Mjg1N1x1MjI5Rlx1Mjg2M1x1Mjg2Rlx1Mjg3Qlx1Mjg4N1x1Mjg5M1x1MjY5Qlx1MjZCM1x1Mjg5RiIrCisgICAgICAgICJcdTI4QUJcdTI4QjdcdTI4QzNcdTI4Q0ZcdTI4REJcdTI4Q0ZcdTI4QjdcdTI4RTdcdTI4RjNcdTI4RkZcdTI5MEJcdTI5MTciKworICAgICAgICAiXHUyOERCXHUyNjQ3XHUyNUNGXHUyOTIzXHUyOTJGXHVBNUE1KFwwMDBcdTI5M0JcdTI5NDdcdTI5NTBcdTI5NjRcdTI5NzgiKworICAgICAgICAiXHUyOThDXHUyOUEwXHUyOUI0XHUyOUM4XHUyOURGXHUyOUU4XHUyQTM0XHVBNUE1XDAyNFwwMDBcdTAxRkFcdTJBNTlcdTJBNUQiKworICAgICAgICAiXHUyQTYxXHUyQTYxXHUwMjcxXHUwMjc1XHUyQTY1XHUyQTY5XHUyQTZEXHUyQTcxXHUyQTc1XHUyQTc5XHUyQTdEXHUyQTgxIisKKyAgICAgICAgIlx1MkE4NVx1MkE4OVx1MkE4RFx1MkE5MVx1MkE5NVx1MkE5OVx1QTVBNVwwMDRcMDAwXHVBNUE1XDAwNFx1MDIzNlx1MkE2MSIrCisgICAgICAgICJcdTJBNjFcdTJBNjFcdTJBOURcdTJBQTFcdTAxRjlcMDAwXHUyQUE1XHUyQUE5XHUwMjNEXHUwMjJEXHUyQTU5XHUwMjcxIisKKyAgICAgICAgIlx1MDI3NVx1MkE2NVx1MkE2OVx1MkE2RFx1MkE3MVx1MkFBRFx1MkFCMVx1MkFCNVx1MDI2NVx1MkFCOVx1MkFCRFx1MkFDMSIrCisgICAgICAgICJcdTAyNkRcMDAwXHUyQUM1XHUyQUM5XHUyQUNEXHUyQUQxXHVBNUE1XDAwNFwwMDBcdTJBRDZcdTJBREVcdTIyQ0VcMDAwIisKKyAgICAgICAgIlx1MjJEQVwwMDBcdTIyRTZcdTI0MjJcdTIyRjJcdTI0MkVcdTIyRkVcdTI0M0FcdTIzMEFcdTJBRTZcdTJBRUVcdTJBRjYiKworICAgICAgICAiXHUyQUZEXHUyQjAyXHUyQjAyXHUyQjBBXHUyQjBBXHUyQjEyXHUyQjEyXHUyQjFBXHUyQjFBXHVBNUE1XDAwNFx1MUZBQSIrCisgICAgICAgICJcdTAxNzFcdTAxNzFcdUE1QTVcMDA0XHUyMDNEXHUyQjIxXHUyQjIxXHVBNUE1XDAwNFx1MjA2RFx1QTVBNVwwMDRcdTIwOUQiKworICAgICAgICAiXHVBNUE1XDAwNFx1MjAxNVx1QTVBNVwwMDRcdTIwMjFcdUE1QTVcMDA0XHUyMDUxXHUyOTg1XHUyOTg1XHUyMkI1XHUyMkI1IisKKyAgICAgICAgIlx1MjJCRFx1MjJCRFx1MjMyOVx1MjMyOVx1QTVBNVwwMDRcdTIwRURcdUE1QTVcMDA0XHUyNDExXHVBNUE1XDAwNFx1MjEwRCIrCisgICAgICAgICJcdUE1QTVcMDA0XHUyMTFEXHVBNUE1XDAwNFx1MjEzRFx1QTVBNVwwMDRcdTIxNERcdUE1QTVcMDA0XHUyMTU1XHVBNUE1IisKKyAgICAgICAgIlwwMDRcdTIxNjVcdUE1QTVcMDA0XHUyMTc1XHVBNUE1XDAwNFx1MjFBNVx1QTVBNVwwMDRcdTIxQzVcdUE1QTVcMDA0XHUyMUU5IisKKyAgICAgICAgIlx1QTVBNVwwMDRcdTIwMkRcdUE1QTVcMDA0XHUyMjREXHVBNUE1XDAwNFx1MjI3RFx1MDE3OVx1MDE3OVx1MUZBNVx1MUZBNSIrCisgICAgICAgICJcdUE1QTVcMDA0XHUwMTg5XHUyQjI3XHUyQjI3XHUyQjMzXHUyQjMzXHUyQjNGXHUyQjNGXHUyQTQ2XHUyQTQ2XHVBNUE1IisKKyAgICAgICAgIlwwMDRcMDAwXHUwMjJEXHUyQjQ5XHUyQUFEXHUyQUM5XHUyQUNEXHUyQUIxXHUyQjREXHUwMjcxXHUwMjc1XHUyQUI1XHUwMjY1IisKKyAgICAgICAgIlx1MkE5RFx1MkFCOVx1MDFGOVx1MDI4NVx1MDI0RDlcMDM1IUlcdTAyNTFcdTAyNTVcdTAyNTlcdTAyNURcdTAyNjFcdTJBQTkiKworICAgICAgICAiXHUyQUE1XHUyQUJEXHUwMjZEXHUyQUMxXHUwMjNEXHUyQUQxXHUwODM5XHUwMzAxXHUwMjk5XHUwMDkxXHUwMkYxXHUwMkM1IisKKyAgICAgICAgIlx1MDgzRFx1MDJDRGVpXHUwODQxdVx1MDJFOVx1MDBDRFx1MDg0NVx1MDJERFx1MDJFMVx1MDI3OVx1MDJFNVx1MDJFRCIrCisgICAgICAgICJcdTA4NDlcdTAzQzFcdTA4NERcdTAzRjFcdTA4NTFcdTAwOTVcdTJCNTFcdTJBQzVcdTJCNTVcdTJCNTlcdTJBNjFcdTJCNUQiKworICAgICAgICAiXDAyMVx1MDcxMVx1MDI4OVx1MDBBOVx1MDMwNVx1MDc0MVx1MDJDOVx1MDBFNW1xXHUwNzdEfVx1MDQ2OVx1MDA4OT1cdTA3QjkiKworICAgICAgICAiXHUwN0M1XHUwMEVEXHUwMDhEXHUwN0U5XHUwMkI5XHUwNDIxXHUwMEZEXHUwMTM5XHUwMTAxXHUwMEExXHUyQTY1XHUyQjYxIisKKyAgICAgICAgIlx1MkE2OVx1MkI2NVwwMDBcMDAwXHUyQjY5XHUyQThEXHUyQTkxXHUyQUExXHUyQjZEXHUxMjUxXHUxMjc5XHUxNUY5XHUyQjcxIisKKyAgICAgICAgIlx1MTYxOVx1MTJDRFx1MkI3NVx1MTNBNVx1MTc1RFx1MTMzMVx1MTI2MVx1MTE5OVx1MTE5RFx1MTFBMVx1MTFBNVx1MTFBOSIrCisgICAgICAgICJcdTExQURcdTExQjFcdTExQjVcdTExQjlcdTExQkRcdTExQzFcdTExQzVcdTExQzlcdTExQ0RcdTExRDFcdTExRDVcdTExRDkiKworICAgICAgICAiXHUxMUREXHUxMUUxXHUxMUU1XHUxMUU5XHUxMUVEXHUxMUYxXHUxMUY1XHUxMUY5XHUxMUZEXHUxMjAxXHUxMjA1XHUxMjA5IisKKyAgICAgICAgIlx1MTIwRFx1MTIxMVx1MTIxNVx1MTIxOVx1MTIxRFx1MTIyMVx1MTIyNVx1MTIyOVx1MTIyRFx1MTIzMVx1MTIzNVx1MTIzOSIrCisgICAgICAgICJcdTEyM0RcdTEyNDFcdTEyNDVcdTEyODVcdTBCQzVcdTBCQ0RcdTBDOURcdTBCRDFcdTBCRDVcdTBCRDlcdTBCRERcdTBCRTEiKworICAgICAgICAiXHUwQkU1XHUwQkU5XHUwQkVEXHUwQkYxXHUwQkY1XHUwQkY5XHUwQkZEXHUwQzAxXHUwQzA1XHUwQzA5XHUwQzBEXHUwQzExIisKKyAgICAgICAgIlx1MEMxNVx1MEMxOVx1MEMxRFx1MEMyMVx1MEMyNVx1MEMyOVx1MEMyRFx1MEMzMVx1MEMzNVx1MEMzOVx1MEMzRFx1MEM0MSIrCisgICAgICAgICJcdTBDNDVcMDAwXDAwMFwwMDBcdTBDNDlcdTBDNERcdTBDNTFcdTBDNTVcdTBDNTlcdTBDNURcMDAwXDAwMFx1MEM2MVx1MEM2NSIrCisgICAgICAgICJcdTBDNjlcdTBDNkRcdTBDNzFcdTBDNzVcMDAwXDAwMFx1MEM3OVx1MEM3RFx1MEM4MVx1MEM4NVx1MEM4OVx1MEM4RFwwMDAiKworICAgICAgICAiXDAwMFx1MEM5MVx1MEM5NVx1MEM5OVwwMDBcMDAwXDAwMFx1MkI3OVx1MkI3RFx1MkI4MVwwMjZcdTJCODVcdTJCODlcdTJCOEQiKworICAgICAgICAiXDAwMFx1MkI5MVx1MkI5NVx1MkI5OVx1MkI5RFx1MkJBMVx1MkJBNVx1MkJBOVx1QTVBNVwwMjFcMDAwIgorICAgICAgICApOworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBjb250ZW50cyA9IAorICAgICAgICAiXHVGRkZGICBcdTAzMDhhIFx1MDMwNDIzIFx1MDMwMVx1MDNCQyBcdTAzMjcxbzFcdTIwNDQ0MVx1MjA0NDIzXHUyMDQ0IisKKyAgICAgICAgIjRJSmlqTFx1MDBCN2xcdTAwQjdcdTAyQkNuc0RaXHUwMzBDRHpcdTAzMENkelx1MDMwQ0xKTGpsak5KTmpuamhcdTAyNjYiKworICAgICAgICAiclx1MDI3OVx1MDI3Qlx1MDI4MXd5IFx1MDMwNiBcdTAzMDcgXHUwMzBBIFx1MDMyOCBcdTAzMDMgXHUwMzBCXHUwMjYzIisKKyAgICAgICAgInhcdTAyOTUgXHUwMzQ1XHUwM0IyXHUwM0I4XHUwM0E1XHUwM0M2XHUwM0MwXHUwM0JBXHUwM0MxXHUwM0MyXHUwNTY1XHUwNTgyIisKKyAgICAgICAgIlx1MDYyN1x1MDY3NFx1MDY0OFx1MDY3NFx1MDZDN1x1MDY3NFx1MDY0QVx1MDY3NFx1MEU0RFx1MEUzMlx1MEVDRFx1MEVCMiIrCisgICAgICAgICJcdTBFQUJcdTBFOTlcdTBFQUJcdTBFQTFcdTBGMEJcdTBGQjJcdTBGNzFcdTBGODBcdTBGQjNcdTBGNzFcdTBGODBhXHUwMkJFIisKKyAgICAgICAgIiBcdTAzMTMgXHUwMzQyIFx1MDMxNFx1MjAxMCBcdTAzMzMuLi5cdTIwMzJcdTIwMzJcdTIwMzJcdTIwMzJcdTIwMzJcdTIwMzUiKworICAgICAgICAiXHUyMDM1XHUyMDM1XHUyMDM1XHUyMDM1ISEgXHUwMzA1PyEhPzA1Njc4OStcdTIyMTI9KClSc2EvY2Evc0NcdTAwQjBDIisKKyAgICAgICAgImMvb2MvdVx1MDE5MFx1MDBCMEZnSFx1MDEyN05vUFFTTVRFTFRNQmVcdTA1RDBcdTA1RDFcdTA1RDJcdTA1RDMxXHUyMDQ0IisKKyAgICAgICAgIjMyXHUyMDQ0MzFcdTIwNDQ1Mlx1MjA0NDUzXHUyMDQ0NTRcdTIwNDQ1MVx1MjA0NDY1XHUyMDQ0NjFcdTIwNDQ4M1x1MjA0NCIrCisgICAgICAgICI4NVx1MjA0NDg3XHUyMDQ0OElJSUlJSVZWSVZJSVZJSUlcMDAwSVhYSVhJSWlpaWlpaXZ2aXZpaXZpaWlcMDAwaXh4aXgiKworICAgICAgICAiaWltXHUyMjJCXHUyMjJCXHUyMjJCXHUyMjJCXHUyMjJCXHUyMjJFXHUyMjJFXHUyMjJFXHUyMjJFXHUyMjJFMTAxMTEyIisKKyAgICAgICAgIjEzMTQxNTE2MTcxODE5MjAoMSkoMikoMykoNCkoNSkoNikoNykoOCkoOSkoMTApXDAwMCgxMSlcMDAwKDEyKVwwMDAoMSIrCisgICAgICAgICIzKVwwMDAoMTQpXDAwMCgxNSlcMDAwKDE2KVwwMDAoMTcpXDAwMCgxOClcMDAwKDE5KVwwMDAoMjApXDAwMDEuMi4zLjQiKworICAgICAgICAiLjUuNi43LjguOS4xMC4xMS4xMi4xMy4xNC4xNS4xNi4xNy4xOC4xOS4yMC4oYSkoYikoYykoZCkoZSkoZikoZykoaCkoIisKKyAgICAgICAgImkpKGopKGspKGwpKG0pKG4pKG8pKHApKHEpKHIpKHMpKHQpKHUpKHYpKHcpKHgpKHkpKHopQUdLT1VXWVx1NkJDRFx1OUY5RiIrCisgICAgICAgICJcdTRFMDBcdTRFMjhcdTRFMzZcdTRFM0ZcdTRFNTlcdTRFODVcdTRFOENcdTRFQTBcdTRFQkFcdTUxM0ZcdTUxNjVcdTUxNkIiKworICAgICAgICAiXHU1MTgyXHU1MTk2XHU1MUFCXHU1MUUwXHU1MUY1XHU1MjAwXHU1MjlCXHU1MkY5XHU1MzE1XHU1MzFBXHU1MzM4XHU1MzQxIisKKyAgICAgICAgIlx1NTM1Q1x1NTM2OVx1NTM4Mlx1NTNCNlx1NTNDOFx1NTNFM1x1NTZEN1x1NTcxRlx1NThFQlx1NTkwMlx1NTkwQVx1NTkxNSIrCisgICAgICAgICJcdTU5MjdcdTU5NzNcdTVCNTBcdTVCODBcdTVCRjhcdTVDMEZcdTVDMjJcdTVDMzhcdTVDNkVcdTVDNzFcdTVEREJcdTVERTUiKworICAgICAgICAiXHU1REYxXHU1REZFXHU1RTcyXHU1RTdBXHU1RTdGXHU1RUY0XHU1RUZFXHU1RjBCXHU1RjEzXHU1RjUwXHU1RjYxXHU1RjczIisKKyAgICAgICAgIlx1NUZDM1x1NjIwOFx1NjIzNlx1NjI0Qlx1NjUyRlx1NjUzNFx1NjU4N1x1NjU5N1x1NjVBNFx1NjVCOVx1NjVFMFx1NjVFNSIrCisgICAgICAgICJcdTY2RjBcdTY3MDhcdTY3MjhcdTZCMjBcdTZCNjJcdTZCNzlcdTZCQjNcdTZCQ0JcdTZCRDRcdTZCREJcdTZDMEZcdTZDMTQiKworICAgICAgICAiXHU2QzM0XHU3MDZCXHU3MjJBXHU3MjM2XHU3MjNCXHU3MjNGXHU3MjQ3XHU3MjU5XHU3MjVCXHU3MkFDXHU3Mzg0XHU3Mzg5IisKKyAgICAgICAgIlx1NzREQ1x1NzRFNlx1NzUxOFx1NzUxRlx1NzUyOFx1NzUzMFx1NzU4Qlx1NzU5Mlx1NzY3Nlx1NzY3RFx1NzZBRVx1NzZCRiIrCisgICAgICAgICJcdTc2RUVcdTc3REJcdTc3RTJcdTc3RjNcdTc5M0FcdTc5QjhcdTc5QkVcdTdBNzRcdTdBQ0JcdTdBRjlcdTdDNzNcdTdDRjgiKworICAgICAgICAiXHU3RjM2XHU3RjUxXHU3RjhBXHU3RkJEXHU4MDAxXHU4MDBDXHU4MDEyXHU4MDMzXHU4MDdGXHU4MDg5XHU4MUUzXHU4MUVBIisKKyAgICAgICAgIlx1ODFGM1x1ODFGQ1x1ODIwQ1x1ODIxQlx1ODIxRlx1ODI2RVx1ODI3Mlx1ODI3OFx1ODY0RFx1ODY2Qlx1ODg0MFx1ODg0QyIrCisgICAgICAgICJcdTg4NjNcdTg5N0VcdTg5OEJcdTg5RDJcdThBMDBcdThDMzdcdThDNDZcdThDNTVcdThDNzhcdThDOURcdThENjRcdThENzAiKworICAgICAgICAiXHU4REIzXHU4RUFCXHU4RUNBXHU4RjlCXHU4RkIwXHU4RkI1XHU5MDkxXHU5MTQ5XHU5MUM2XHU5MUNDXHU5MUQxXHU5NTc3IisKKyAgICAgICAgIlx1OTU4MFx1OTYxQ1x1OTZCNlx1OTZCOVx1OTZFOFx1OTc1MVx1OTc1RVx1OTc2Mlx1OTc2OVx1OTdDQlx1OTdFRFx1OTdGMyIrCisgICAgICAgICJcdTk4MDFcdTk4QThcdTk4REJcdTk4REZcdTk5OTZcdTk5OTlcdTk5QUNcdTlBQThcdTlBRDhcdTlBREZcdTlCMjVcdTlCMkYiKworICAgICAgICAiXHU5QjMyXHU5QjNDXHU5QjVBXHU5Q0U1XHU5RTc1XHU5RTdGXHU5RUE1XHU5RUJCXHU5RUMzXHU5RUNEXHU5RUQxXHU5RUY5IisKKyAgICAgICAgIlx1OUVGRFx1OUYwRVx1OUYxM1x1OUYyMFx1OUYzQlx1OUY0QVx1OUY1Mlx1OUY4RFx1OUY5Q1x1OUZBMFx1MzAxMlx1NTM0NCIrCisgICAgICAgICJcdTUzNDUgXHUzMDk5IFx1MzA5QVx1MTEwMFx1MTEwMVx1MTFBQVx1MTEwMlx1MTFBQ1x1MTFBRFx1MTEwM1x1MTEwNFx1MTEwNSIrCisgICAgICAgICJcdTExQjBcdTExQjFcdTExQjJcdTExQjNcdTExQjRcdTExQjVcdTExMUFcdTExMDZcdTExMDdcdTExMDhcdTExMjFcdTExMDkiKworICAgICAgICAiXHUxMTBBXHUxMTBCXHUxMTBDXHUxMTBEXHUxMTBFXHUxMTBGXHUxMTEwXHUxMTExXHUxMTEyXHUxMTYxXHUxMTYyXHUxMTYzIisKKyAgICAgICAgIlx1MTE2NFx1MTE2NVx1MTE2Nlx1MTE2N1x1MTE2OFx1MTE2OVx1MTE2QVx1MTE2Qlx1MTE2Q1x1MTE2RFx1MTE2RVx1MTE2RiIrCisgICAgICAgICJcdTExNzBcdTExNzFcdTExNzJcdTExNzNcdTExNzRcdTExNzVcdTExNjBcdTExMTRcdTExMTVcdTExQzdcdTExQzhcdTExQ0MiKworICAgICAgICAiXHUxMUNFXHUxMUQzXHUxMUQ3XHUxMUQ5XHUxMTFDXHUxMUREXHUxMURGXHUxMTFEXHUxMTFFXHUxMTIwXHUxMTIyXHUxMTIzIisKKyAgICAgICAgIlx1MTEyN1x1MTEyOVx1MTEyQlx1MTEyQ1x1MTEyRFx1MTEyRVx1MTEyRlx1MTEzMlx1MTEzNlx1MTE0MFx1MTE0N1x1MTE0QyIrCisgICAgICAgICJcdTExRjFcdTExRjJcdTExNTdcdTExNThcdTExNTlcdTExODRcdTExODVcdTExODhcdTExOTFcdTExOTJcdTExOTRcdTExOUUiKworICAgICAgICAiXHUxMUExXHU0RTA5XHU1NkRCXHU0RTBBXHU0RTJEXHU0RTBCXHU3NTMyXHU0RTE5XHU0RTAxXHU1OTI5XHU1NzMwKFx1MTEwMCIrCisgICAgICAgICIpKFx1MTEwMikoXHUxMTAzKShcdTExMDUpKFx1MTEwNikoXHUxMTA3KShcdTExMDkpKFx1MTEwQikoXHUxMTBDKShcdTExMEUiKworICAgICAgICAiKShcdTExMEYpKFx1MTExMCkoXHUxMTExKShcdTExMTIpKFx1MTEwMFx1MTE2MSlcMDAwKFx1MTEwMlx1MTE2MSlcMDAwIisKKyAgICAgICAgIihcdTExMDNcdTExNjEpXDAwMChcdTExMDVcdTExNjEpXDAwMChcdTExMDZcdTExNjEpXDAwMChcdTExMDdcdTExNjEpXDAwMCIrCisgICAgICAgICIoXHUxMTA5XHUxMTYxKVwwMDAoXHUxMTBCXHUxMTYxKVwwMDAoXHUxMTBDXHUxMTYxKVwwMDAoXHUxMTBFXHUxMTYxKVwwMDAiKworICAgICAgICAiKFx1MTEwRlx1MTE2MSlcMDAwKFx1MTExMFx1MTE2MSlcMDAwKFx1MTExMVx1MTE2MSlcMDAwKFx1MTExMlx1MTE2MSlcMDAwIisKKyAgICAgICAgIihcdTExMENcdTExNkUpXDAwMChcdTRFMDApKFx1NEU4QykoXHU0RTA5KShcdTU2REIpKFx1NEU5NCkoXHU1MTZEKShcdTRFMDMiKworICAgICAgICAiKShcdTUxNkIpKFx1NEU1RCkoXHU1MzQxKShcdTY3MDgpKFx1NzA2QikoXHU2QzM0KShcdTY3MjgpKFx1OTFEMSkoXHU1NzFGIisKKyAgICAgICAgIikoXHU2NUU1KShcdTY4MkEpKFx1NjcwOSkoXHU3OTNFKShcdTU0MEQpKFx1NzI3OSkoXHU4Q0ExKShcdTc5NUQpKFx1NTJCNCIrCisgICAgICAgICIpKFx1NEVFMykoXHU1NDdDKShcdTVCNjYpKFx1NzZFMykoXHU0RjAxKShcdThDQzcpKFx1NTM1NCkoXHU3OTZEKShcdTRGMTEiKworICAgICAgICAiKShcdTgxRUEpKFx1ODFGMylcdTc5RDhcdTc1MzdcdTkwNjlcdTUxMkFcdTUzNzBcdTZDRThcdTk4MDVcdTUxOTlcdTZCNjMiKworICAgICAgICAiXHU1REU2XHU1M0YzXHU1MzNCXHU1Qjk3XHU1OTFDMVx1NjcwODJcdTY3MDgzXHU2NzA4NFx1NjcwODVcdTY3MDg2XHU2NzA4IisKKyAgICAgICAgIjdcdTY3MDg4XHU2NzA4OVx1NjcwODEwXHU2NzA4MTFcdTY3MDgxMlx1NjcwOFx1MzBBMlx1MzBBNFx1MzBBNlx1MzBBOCIrCisgICAgICAgICJcdTMwQUFcdTMwQUJcdTMwQURcdTMwQUZcdTMwQjFcdTMwQjNcdTMwQjVcdTMwQjdcdTMwQjlcdTMwQkJcdTMwQkRcdTMwQkYiKworICAgICAgICAiXHUzMEMxXHUzMEM0XHUzMEM2XHUzMEM4XHUzMENBXHUzMENCXHUzMENDXHUzMENEXHUzMENFXHUzMENGXHUzMEQyXHUzMEQ1IisKKyAgICAgICAgIlx1MzBEOFx1MzBEQlx1MzBERVx1MzBERlx1MzBFMFx1MzBFMVx1MzBFMlx1MzBFNFx1MzBFNlx1MzBFOFx1MzBFOVx1MzBFQSIrCisgICAgICAgICJcdTMwRUJcdTMwRUNcdTMwRURcdTMwRUZcdTMwRjBcdTMwRjFcdTMwRjJcdTMwQTJcdTMwQ0ZcdTMwOUFcdTMwRkNcdTMwQzgiKworICAgICAgICAiXDAwMFx1MzBBMlx1MzBFQlx1MzBENVx1MzBBMVwwMDBcdTMwQTJcdTMwRjNcdTMwRDhcdTMwOUFcdTMwQTJcMDAwXHUzMEEyIisKKyAgICAgICAgIlx1MzBGQ1x1MzBFQlx1MzBBNFx1MzBDQlx1MzBGM1x1MzBBRlx1MzA5OVwwMDBcdTMwQTRcdTMwRjNcdTMwQzFcdTMwQTYiKworICAgICAgICAiXHUzMEE5XHUzMEYzXHUzMEE4XHUzMEI5XHUzMEFGXHUzMEZDXHUzMEM4XHUzMDk5XDAwMFx1MzBBOFx1MzBGQ1x1MzBBQiIrCisgICAgICAgICJcdTMwRkNcMDAwXHUzMEFBXHUzMEYzXHUzMEI5XHUzMEFBXHUzMEZDXHUzMEUwXHUzMEFCXHUzMEE0XHUzMEVBXHUzMEFCIisKKyAgICAgICAgIlx1MzBFOVx1MzBDM1x1MzBDOFwwMDBcdTMwQUJcdTMwRURcdTMwRUFcdTMwRkNcMDAwXHUzMEFCXHUzMDk5XHUzMEVEXHUzMEYzIisKKyAgICAgICAgIlwwMDBcdTMwQUJcdTMwOTlcdTMwRjNcdTMwREVcMDAwXHUzMEFEXHUzMDk5XHUzMEFCXHUzMDk5XDAwMFx1MzBBRFx1MzA5OSIrCisgICAgICAgICJcdTMwQ0JcdTMwRkNcMDAwXHUzMEFEXHUzMEU1XHUzMEVBXHUzMEZDXDAwMFx1MzBBRFx1MzA5OVx1MzBFQlx1MzBCRlx1MzA5OSIrCisgICAgICAgICJcdTMwRkNcMDAwXHUzMEFEXHUzMEVEXHUzMEFEXHUzMEVEXHUzMEFGXHUzMDk5XHUzMEU5XHUzMEUwXDAwMFx1MzBBRFx1MzBFRCIrCisgICAgICAgICJcdTMwRTFcdTMwRkNcdTMwQzhcdTMwRUJcMDAwXHUzMEFEXHUzMEVEXHUzMEVGXHUzMEMzXHUzMEM4XDAwMFx1MzBBRlx1MzA5OSIrCisgICAgICAgICJcdTMwRTlcdTMwRTBcdTMwQzhcdTMwRjNcMDAwXHUzMEFGXHUzMEVCXHUzMEJCXHUzMDk5XHUzMEE0XHUzMEVEXDAwMFx1MzBBRiIrCisgICAgICAgICJcdTMwRURcdTMwRkNcdTMwQ0RcMDAwXHUzMEIxXHUzMEZDXHUzMEI5XHUzMEIzXHUzMEVCXHUzMENBXHUzMEIzXHUzMEZDIisKKyAgICAgICAgIlx1MzBEQlx1MzA5QVwwMDBcdTMwQjVcdTMwQTRcdTMwQUZcdTMwRUJcMDAwXHUzMEI1XHUzMEYzXHUzMEMxXHUzMEZDXHUzMEUwIisKKyAgICAgICAgIlwwMDBcdTMwQjdcdTMwRUFcdTMwRjNcdTMwQUZcdTMwOTlcMDAwXHUzMEJCXHUzMEYzXHUzMEMxXHUzMEJCXHUzMEYzXHUzMEM4IisKKyAgICAgICAgIlx1MzBCRlx1MzA5OVx1MzBGQ1x1MzBCOVwwMDBcdTMwQzZcdTMwOTlcdTMwQjdcdTMwQzhcdTMwOTlcdTMwRUJcdTMwQ0EiKworICAgICAgICAiXHUzMENFXHUzMENFXHUzMEMzXHUzMEM4XHUzMENGXHUzMEE0XHUzMEM0XHUzMENGXHUzMDlBXHUzMEZDXHUzMEJCXHUzMEYzIisKKyAgICAgICAgIlx1MzBDOFwwMDBcdTMwQ0ZcdTMwOUFcdTMwRkNcdTMwQzRcMDAwXHUzMENGXHUzMDk5XHUzMEZDXHUzMEVDXHUzMEVCXDAwMCIrCisgICAgICAgICJcdTMwRDJcdTMwOUFcdTMwQTJcdTMwQjlcdTMwQzhcdTMwRUJcMDAwXHUzMEQyXHUzMDlBXHUzMEFGXHUzMEVCXDAwMFx1MzBEMiIrCisgICAgICAgICJcdTMwOUFcdTMwQjNcdTMwRDJcdTMwOTlcdTMwRUJcdTMwRDVcdTMwQTFcdTMwRTlcdTMwQzNcdTMwQzhcdTMwOTlcMDAwIisKKyAgICAgICAgIlx1MzBENVx1MzBBM1x1MzBGQ1x1MzBDOFwwMDBcdTMwRDVcdTMwOTlcdTMwQzNcdTMwQjdcdTMwQTdcdTMwRUJcMDAwXHUzMEQ1IisKKyAgICAgICAgIlx1MzBFOVx1MzBGM1x1MzBEOFx1MzBBRlx1MzBCRlx1MzBGQ1x1MzBFQlwwMDBcdTMwRDhcdTMwOUFcdTMwQkRcdTMwRDgiKworICAgICAgICAiXHUzMDlBXHUzMENCXHUzMEQyXDAwMFx1MzBEOFx1MzBFQlx1MzBDNFx1MzBEOFx1MzA5QVx1MzBGM1x1MzBCOVwwMDBcdTMwRDgiKworICAgICAgICAiXHUzMDlBXHUzMEZDXHUzMEI3XHUzMDk5XDAwMFx1MzBEOFx1MzA5OVx1MzBGQ1x1MzBCRlwwMDBcdTMwREJcdTMwOUFcdTMwQTQiKworICAgICAgICAiXHUzMEYzXHUzMEM4XDAwMFx1MzBEQlx1MzA5OVx1MzBFQlx1MzBDOFwwMDBcdTMwREJcdTMwRjNcdTMwREJcdTMwOUFcdTMwRjMiKworICAgICAgICAiXHUzMEM4XHUzMDk5XDAwMFx1MzBEQlx1MzBGQ1x1MzBFQlx1MzBEQlx1MzBGQ1x1MzBGM1x1MzBERVx1MzBBNFx1MzBBRiIrCisgICAgICAgICJcdTMwRURcMDAwXHUzMERFXHUzMEE0XHUzMEVCXHUzMERFXHUzMEMzXHUzMENGXHUzMERFXHUzMEVCXHUzMEFGXHUzMERFIisKKyAgICAgICAgIlx1MzBGM1x1MzBCN1x1MzBFN1x1MzBGM1wwMDBcdTMwREZcdTMwQUZcdTMwRURcdTMwRjNcMDAwXHUzMERGXHUzMEVBXHUzMERGIisKKyAgICAgICAgIlx1MzBFQVx1MzBDRlx1MzA5OVx1MzBGQ1x1MzBFQlwwMDBcdTMwRTFcdTMwQUJcdTMwOTlcdTMwRTFcdTMwQUJcdTMwOTkiKworICAgICAgICAiXHUzMEM4XHUzMEYzXDAwMFx1MzBFNFx1MzBGQ1x1MzBDOFx1MzA5OVwwMDBcdTMwRTRcdTMwRkNcdTMwRUJcdTMwRTZcdTMwQTIiKworICAgICAgICAiXHUzMEYzXHUzMEVBXHUzMEMzXHUzMEM4XHUzMEVCXDAwMFx1MzBFQVx1MzBFOVx1MzBFQlx1MzBEMlx1MzA5QVx1MzBGQyIrCisgICAgICAgICJcMDAwXHUzMEVCXHUzMEZDXHUzMEQ1XHUzMDk5XHUzMEVCXDAwMFx1MzBFQ1x1MzBFMFx1MzBFQ1x1MzBGM1x1MzBDOFx1MzBCMSIrCisgICAgICAgICJcdTMwOTlcdTMwRjNcMDAwMFx1NzBCOTFcdTcwQjkyXHU3MEI5M1x1NzBCOTRcdTcwQjk1XHU3MEI5Nlx1NzBCOTdcdTcwQjkiKworICAgICAgICAiOFx1NzBCOTlcdTcwQjkxMFx1NzBCOTExXHU3MEI5MTJcdTcwQjkxM1x1NzBCOTE0XHU3MEI5MTVcdTcwQjkxNlx1NzBCOSIrCisgICAgICAgICIxN1x1NzBCOTE4XHU3MEI5MTlcdTcwQjkyMFx1NzBCOTIxXHU3MEI5MjJcdTcwQjkyM1x1NzBCOTI0XHU3MEI5aFBhZGEiKworICAgICAgICAiQVViYXJvVnBjXHU1RTczXHU2MjEwXHU2NjJEXHU1NDhDXHU1OTI3XHU2QjYzXHU2NjBFXHU2Q0JCXHU2ODJBXHU1RjBGIisKKyAgICAgICAgIlx1NEYxQVx1NzkzRVwwMDBwQW5BXHUwM0JDQW1Ba0FLQkdCY2Fsa2NhbFwwMDBwRm5GXHUwM0JDRlx1MDNCQ2dtZ2tnSCIrCisgICAgICAgICJ6a0h6TUh6R0h6VEh6XHUwM0JDbG1sZGxrbGZtbm1cdTAzQkNtbW1jbWttbW0yY20ya20ybW0zY20za20zbVx1MjIxNXMiKworICAgICAgICAibVx1MjIxNXMyXDAwMGtQYU1QYUdQYXJhZHJhZFx1MjIxNXNcMDAwcmFkXHUyMjE1czJcMDAwcHNcdTAzQkNzbXNwVm5WIisKKyAgICAgICAgIlx1MDNCQ1ZtVmtWTVZwV25XXHUwM0JDV21Xa1dNV2tcdTAzQTlNXHUwM0E5YS5tLlwwMDBCcWNjY2RDXHUyMjE1a2dcMDAwIisKKyAgICAgICAgIkNvLmRCR3loYUhQaW5LS0tNa3RsbmxvZ2x4bWJtaWxtb2xQSHAubS5cMDAwUFBNUFJzclN2V2IxXHU2NUU1Mlx1NjVFNSIrCisgICAgICAgICIzXHU2NUU1NFx1NjVFNTVcdTY1RTU2XHU2NUU1N1x1NjVFNThcdTY1RTU5XHU2NUU1MTBcdTY1RTUxMVx1NjVFNTEyXHU2NUU1IisKKyAgICAgICAgIjEzXHU2NUU1MTRcdTY1RTUxNVx1NjVFNTE2XHU2NUU1MTdcdTY1RTUxOFx1NjVFNTE5XHU2NUU1MjBcdTY1RTUyMVx1NjVFNSIrCisgICAgICAgICIyMlx1NjVFNTIzXHU2NUU1MjRcdTY1RTUyNVx1NjVFNTI2XHU2NUU1MjdcdTY1RTUyOFx1NjVFNTI5XHU2NUU1MzBcdTY1RTUiKworICAgICAgICAiMzFcdTY1RTVmZmZpZmxmZmxzdFx1MDU3NFx1MDU3Nlx1MDU3NFx1MDU2NVx1MDU3NFx1MDU2Qlx1MDU3RVx1MDU3Nlx1MDU3NCIrCisgICAgICAgICJcdTA1NkRcdTA1RTJcdTA1RDRcdTA1REJcdTA1RENcdTA1RERcdTA1RThcdTA1RUFcdTA1RDBcdTA1RENcdTA2NzFcdTA2N0IiKworICAgICAgICAiXHUwNjdFXHUwNjgwXHUwNjdBXHUwNjdGXHUwNjc5XHUwNkE0XHUwNkE2XHUwNjg0XHUwNjgzXHUwNjg2XHUwNjg3XHUwNjhEIisKKyAgICAgICAgIlx1MDY4Q1x1MDY4RVx1MDY4OFx1MDY5OFx1MDY5MVx1MDZBOVx1MDZBRlx1MDZCM1x1MDZCMVx1MDZCQVx1MDZCQlx1MDZENSIrCisgICAgICAgICJcdTA2NTRcdTA2QzFcdTA2QkVcdTA2RDJcdTA2RDJcdTA2NTRcdTA2QURcdTA2QzZcdTA2QzhcdTA2Q0JcdTA2QzVcdTA2QzkiKworICAgICAgICAiXHUwNkQwXHUwNjQ5XHUwNjRBXHUwNjU0XHUwNjI3XHUwNjRBXHUwNjU0XHUwNkQ1XHUwNjRBXHUwNjU0XHUwNjQ4XHUwNjRBIisKKyAgICAgICAgIlx1MDY1NFx1MDZDN1x1MDY0QVx1MDY1NFx1MDZDNlx1MDY0QVx1MDY1NFx1MDZDOFx1MDY0QVx1MDY1NFx1MDZEMFx1MDY0QSIrCisgICAgICAgICJcdTA2NTRcdTA2NDlcdTA2Q0NcdTA2NEFcdTA2NTRcdTA2MkNcdTA2NEFcdTA2NTRcdTA2MkRcdTA2NEFcdTA2NTRcdTA2NDUiKworICAgICAgICAiXHUwNjRBXHUwNjU0XHUwNjRBXHUwNjI4XHUwNjJDXHUwNjI4XHUwNjJEXHUwNjI4XHUwNjJFXHUwNjI4XHUwNjQ1XHUwNjI4IisKKyAgICAgICAgIlx1MDY0OVx1MDYyOFx1MDY0QVx1MDYyQVx1MDYyQ1x1MDYyQVx1MDYyRFx1MDYyQVx1MDYyRVx1MDYyQVx1MDY0NVx1MDYyQSIrCisgICAgICAgICJcdTA2NDlcdTA2MkFcdTA2NEFcdTA2MkJcdTA2MkNcdTA2MkJcdTA2NDVcdTA2MkJcdTA2NDlcdTA2MkJcdTA2NEFcdTA2MkMiKworICAgICAgICAiXHUwNjJEXHUwNjJDXHUwNjQ1XHUwNjJEXHUwNjQ1XHUwNjJFXHUwNjJDXHUwNjJFXHUwNjJEXHUwNjJFXHUwNjQ1XHUwNjMzIisKKyAgICAgICAgIlx1MDYyQ1x1MDYzM1x1MDYyRFx1MDYzM1x1MDYyRVx1MDYzM1x1MDY0NVx1MDYzNVx1MDYyRFx1MDYzNVx1MDY0NVx1MDYzNiIrCisgICAgICAgICJcdTA2MkNcdTA2MzZcdTA2MkRcdTA2MzZcdTA2MkVcdTA2MzZcdTA2NDVcdTA2MzdcdTA2MkRcdTA2MzdcdTA2NDVcdTA2MzgiKworICAgICAgICAiXHUwNjQ1XHUwNjM5XHUwNjJDXHUwNjM5XHUwNjQ1XHUwNjNBXHUwNjJDXHUwNjNBXHUwNjQ1XHUwNjQxXHUwNjJDXHUwNjQxIisKKyAgICAgICAgIlx1MDYyRFx1MDY0MVx1MDYyRVx1MDY0MVx1MDY0NVx1MDY0MVx1MDY0OVx1MDY0MVx1MDY0QVx1MDY0Mlx1MDYyRFx1MDY0MiIrCisgICAgICAgICJcdTA2NDVcdTA2NDJcdTA2NDlcdTA2NDJcdTA2NEFcdTA2NDNcdTA2MjdcdTA2NDNcdTA2MkNcdTA2NDNcdTA2MkRcdTA2NDMiKworICAgICAgICAiXHUwNjJFXHUwNjQzXHUwNjQ0XHUwNjQzXHUwNjQ1XHUwNjQzXHUwNjQ5XHUwNjQzXHUwNjRBXHUwNjQ0XHUwNjJDXHUwNjQ0IisKKyAgICAgICAgIlx1MDYyRFx1MDY0NFx1MDYyRVx1MDY0NFx1MDY0NVx1MDY0NFx1MDY0OVx1MDY0NFx1MDY0QVx1MDY0NVx1MDYyQ1x1MDY0NSIrCisgICAgICAgICJcdTA2NDVcdTA2NDVcdTA2NDlcdTA2NDZcdTA2MkNcdTA2NDZcdTA2MkRcdTA2NDZcdTA2MkVcdTA2NDZcdTA2NDVcdTA2NDYiKworICAgICAgICAiXHUwNjQ5XHUwNjQ2XHUwNjRBXHUwNjQ3XHUwNjJDXHUwNjQ3XHUwNjQ1XHUwNjQ3XHUwNjQ5XHUwNjQ3XHUwNjRBXHUwNjRBIisKKyAgICAgICAgIlx1MDYyRFx1MDY0QVx1MDYyRVx1MDY0QVx1MDY0OVx1MDYzMFx1MDY3MFx1MDYzMVx1MDY3MFx1MDY0OVx1MDY3MCBcdTA2NEMiKworICAgICAgICAiXHUwNjUxIFx1MDY0RFx1MDY1MSBcdTA2NEVcdTA2NTEgXHUwNjRGXHUwNjUxIFx1MDY1MFx1MDY1MSBcdTA2NTFcdTA2NzAiKworICAgICAgICAiXHUwNjRBXHUwNjU0XHUwNjMxXHUwNjRBXHUwNjU0XHUwNjMyXHUwNjRBXHUwNjU0XHUwNjQ2XHUwNjI4XHUwNjMxXHUwNjI4IisKKyAgICAgICAgIlx1MDYzMlx1MDYyOFx1MDY0Nlx1MDYyQVx1MDYzMVx1MDYyQVx1MDYzMlx1MDYyQVx1MDY0Nlx1MDYyQlx1MDYzMVx1MDYyQiIrCisgICAgICAgICJcdTA2MzJcdTA2MkJcdTA2NDZcdTA2NDVcdTA2MjdcdTA2NDZcdTA2MzFcdTA2NDZcdTA2MzJcdTA2NDZcdTA2NDZcdTA2NEEiKworICAgICAgICAiXHUwNjMxXHUwNjRBXHUwNjMyXHUwNjRBXHUwNjQ2XHUwNjRBXHUwNjU0XHUwNjJFXHUwNjRBXHUwNjU0XHUwNjQ3XHUwNjI4IisKKyAgICAgICAgIlx1MDY0N1x1MDYyQVx1MDY0N1x1MDYzNVx1MDYyRVx1MDY0NFx1MDY0N1x1MDY0Nlx1MDY0N1x1MDY0N1x1MDY3MFx1MDYyQiIrCisgICAgICAgICJcdTA2NDdcdTA2MzNcdTA2NDdcdTA2MzRcdTA2NDVcdTA2MzRcdTA2NDdcdTA2NDBcdTA2NEVcdTA2NTFcdTA2NDBcdTA2NEYiKworICAgICAgICAiXHUwNjUxXHUwNjQwXHUwNjUwXHUwNjUxXHUwNjM3XHUwNjQ5XHUwNjM3XHUwNjRBXHUwNjM5XHUwNjQ5XHUwNjM5XHUwNjRBIisKKyAgICAgICAgIlx1MDYzQVx1MDY0OVx1MDYzQVx1MDY0QVx1MDYzM1x1MDY0OVx1MDYzM1x1MDY0QVx1MDYzNFx1MDY0OVx1MDYzNFx1MDY0QSIrCisgICAgICAgICJcdTA2MkRcdTA2NDlcdTA2MkNcdTA2NDlcdTA2MkVcdTA2NDlcdTA2MzVcdTA2NDlcdTA2MzVcdTA2NEFcdTA2MzZcdTA2NDkiKworICAgICAgICAiXHUwNjM2XHUwNjRBXHUwNjM0XHUwNjJDXHUwNjM0XHUwNjJEXHUwNjM0XHUwNjJFXHUwNjM0XHUwNjMxXHUwNjMzXHUwNjMxIisKKyAgICAgICAgIlx1MDYzNVx1MDYzMVx1MDYzNlx1MDYzMVx1MDYyN1x1MDY0Qlx1MDYyQVx1MDYyQ1x1MDY0NVx1MDYyQVx1MDYyRFx1MDYyQyIrCisgICAgICAgICJcdTA2MkFcdTA2MkRcdTA2NDVcdTA2MkFcdTA2MkVcdTA2NDVcdTA2MkFcdTA2NDVcdTA2MkNcdTA2MkFcdTA2NDVcdTA2MkQiKworICAgICAgICAiXHUwNjJBXHUwNjQ1XHUwNjJFXHUwNjJEXHUwNjQ1XHUwNjRBXHUwNjJEXHUwNjQ1XHUwNjQ5XHUwNjMzXHUwNjJEXHUwNjJDIisKKyAgICAgICAgIlx1MDYzM1x1MDYyQ1x1MDYyRFx1MDYzM1x1MDYyQ1x1MDY0OVx1MDYzM1x1MDY0NVx1MDYyRFx1MDYzM1x1MDY0NVx1MDYyQyIrCisgICAgICAgICJcdTA2MzNcdTA2NDVcdTA2NDVcdTA2MzVcdTA2MkRcdTA2MkRcdTA2MzVcdTA2NDVcdTA2NDVcdTA2MzRcdTA2MkRcdTA2NDUiKworICAgICAgICAiXHUwNjM0XHUwNjJDXHUwNjRBXHUwNjM0XHUwNjQ1XHUwNjJFXHUwNjM0XHUwNjQ1XHUwNjQ1XHUwNjM2XHUwNjJEXHUwNjQ5IisKKyAgICAgICAgIlx1MDYzNlx1MDYyRVx1MDY0NVx1MDYzN1x1MDY0NVx1MDYyRFx1MDYzN1x1MDY0NVx1MDY0NVx1MDYzN1x1MDY0NVx1MDY0QSIrCisgICAgICAgICJcdTA2MzlcdTA2MkNcdTA2NDVcdTA2MzlcdTA2NDVcdTA2NDVcdTA2MzlcdTA2NDVcdTA2NDlcdTA2M0FcdTA2NDVcdTA2NDUiKworICAgICAgICAiXHUwNjNBXHUwNjQ1XHUwNjRBXHUwNjNBXHUwNjQ1XHUwNjQ5XHUwNjQxXHUwNjJFXHUwNjQ1XHUwNjQyXHUwNjQ1XHUwNjJEIisKKyAgICAgICAgIlx1MDY0Mlx1MDY0NVx1MDY0NVx1MDY0NFx1MDYyRFx1MDY0NVx1MDY0NFx1MDYyRFx1MDY0QVx1MDY0NFx1MDYyRFx1MDY0OSIrCisgICAgICAgICJcdTA2NDRcdTA2MkNcdTA2MkNcdTA2NDRcdTA2MkVcdTA2NDVcdTA2NDRcdTA2NDVcdTA2MkRcdTA2NDVcdTA2MkRcdTA2MkMiKworICAgICAgICAiXHUwNjQ1XHUwNjJEXHUwNjRBXHUwNjQ1XHUwNjJDXHUwNjJEXHUwNjQ1XHUwNjJFXHUwNjQ1XHUwNjQ1XHUwNjJDXHUwNjJFIisKKyAgICAgICAgIlx1MDY0N1x1MDY0NVx1MDYyQ1x1MDY0N1x1MDY0NVx1MDY0NVx1MDY0Nlx1MDYyRFx1MDY0NVx1MDY0Nlx1MDYyRFx1MDY0OSIrCisgICAgICAgICJcdTA2NDZcdTA2MkNcdTA2NDVcdTA2NDZcdTA2MkNcdTA2NDlcdTA2NDZcdTA2NDVcdTA2NEFcdTA2NDZcdTA2NDVcdTA2NDkiKworICAgICAgICAiXHUwNjRBXHUwNjQ1XHUwNjQ1XHUwNjI4XHUwNjJFXHUwNjRBXHUwNjJBXHUwNjJDXHUwNjRBXHUwNjJBXHUwNjJDXHUwNjQ5IisKKyAgICAgICAgIlx1MDYyQVx1MDYyRVx1MDY0QVx1MDYyQVx1MDYyRVx1MDY0OVx1MDYyQVx1MDY0NVx1MDY0QVx1MDYyQVx1MDY0NVx1MDY0OSIrCisgICAgICAgICJcdTA2MkNcdTA2NDVcdTA2NEFcdTA2MkNcdTA2MkRcdTA2NDlcdTA2MkNcdTA2NDVcdTA2NDlcdTA2MzNcdTA2MkVcdTA2NDkiKworICAgICAgICAiXHUwNjM1XHUwNjJEXHUwNjRBXHUwNjM0XHUwNjJEXHUwNjRBXHUwNjM2XHUwNjJEXHUwNjRBXHUwNjQ0XHUwNjJDXHUwNjRBIisKKyAgICAgICAgIlx1MDY0NFx1MDY0NVx1MDY0QVx1MDY0QVx1MDYyQ1x1MDY0QVx1MDY0QVx1MDY0NVx1MDY0QVx1MDY0NVx1MDY0NVx1MDY0QSIrCisgICAgICAgICJcdTA2NDJcdTA2NDVcdTA2NEFcdTA2NDZcdTA2MkRcdTA2NEFcdTA2MzlcdTA2NDVcdTA2NEFcdTA2NDNcdTA2NDVcdTA2NEEiKworICAgICAgICAiXHUwNjQ2XHUwNjJDXHUwNjJEXHUwNjQ1XHUwNjJFXHUwNjRBXHUwNjQ0XHUwNjJDXHUwNjQ1XHUwNjQzXHUwNjQ1XHUwNjQ1IisKKyAgICAgICAgIlx1MDYyQ1x1MDYyRFx1MDY0QVx1MDYyRFx1MDYyQ1x1MDY0QVx1MDY0NVx1MDYyQ1x1MDY0QVx1MDY0MVx1MDY0NVx1MDY0QSIrCisgICAgICAgICJcdTA2MjhcdTA2MkRcdTA2NEFcdTA2MzNcdTA2MkVcdTA2NEFcdTA2NDZcdTA2MkNcdTA2NEFcdTA2MzVcdTA2NDRcdTA2RDIiKworICAgICAgICAiXHUwNjQyXHUwNjQ0XHUwNkQyXHUwNjI3XHUwNjQ0XHUwNjQ0XHUwNjQ3XDAwMFx1MDYyN1x1MDY0M1x1MDYyOFx1MDYzMSIrCisgICAgICAgICJcMDAwXHUwNjQ1XHUwNjJEXHUwNjQ1XHUwNjJGXDAwMFx1MDYzNVx1MDY0NFx1MDYzOVx1MDY0NVwwMDBcdTA2MzFcdTA2MzMiKworICAgICAgICAiXHUwNjQ4XHUwNjQ0XDAwMFx1MDYzOVx1MDY0NFx1MDY0QVx1MDY0N1wwMDBcdTA2NDhcdTA2MzNcdTA2NDRcdTA2NDVcMDAwIisKKyAgICAgICAgIlx1MDYzNVx1MDY0NFx1MDY0OVx1MDYzNVx1MDY0NFx1MDY0OSBcdTA2MjdcdTA2NDRcdTA2NDRcdTA2NDcgXHUwNjM5XHUwNjQ0IisKKyAgICAgICAgIlx1MDY0QVx1MDY0NyBcdTA2NDhcdTA2MzNcdTA2NDRcdTA2NDVcMDAwXHUwNjJDXHUwNjQ0IFx1MDYyQ1x1MDY0NFx1MDYyNyIrCisgICAgICAgICJcdTA2NDRcdTA2NDdcMDAwXHUyMDE0XHUyMDEzX3t9XHUzMDE0XHUzMDE1XHUzMDEwXHUzMDExXHUzMDBBXHUzMDBCXHUzMDA4IisKKyAgICAgICAgIlx1MzAwOVx1MzAwQ1x1MzAwRFx1MzAwRVx1MzAwRixcdTMwMDE7OiMmKi08PlwxMzQkJUAgXHUwNjRCXHUwNjQwXHUwNjRCIisKKyAgICAgICAgIlx1MDY0MFx1MDY1MSBcdTA2NTJcdTA2NDBcdTA2NTJcdTA2MjFcdTA2MjdcdTA2NTNcdTA2MjdcdTA2NTRcdTA2NDhcdTA2NTQiKworICAgICAgICAiXHUwNjI3XHUwNjU1XHUwNjI5XHUwNjQ0XHUwNjI3XHUwNjUzXHUwNjQ0XHUwNjI3XHUwNjU0XHUwNjQ0XHUwNjI3XHUwNjU1IisKKyAgICAgICAgIlwwNDInW11eYHx+XHUzMDAyXHUzMEZCXHUzMEE1XHUzMEUzXHUwMEEyXHUwMEEzXHUwMEFDXHUwMEE2XHUwMEE1XHUyMEE5IisKKyAgICAgICAgIlx1MjUwMlx1MjE5MFx1MjE5MVx1MjE5Mlx1MjE5M1x1MjVBMFx1MjVDQkFcdTAzMDBBXHUwMzAxQVx1MDMwMkFcdTAzMDMiKworICAgICAgICAiQVx1MDMwOEFcdTAzMEFDXHUwMzI3RVx1MDMwMEVcdTAzMDFFXHUwMzAyRVx1MDMwOElcdTAzMDBJXHUwMzAxSVx1MDMwMiIrCisgICAgICAgICJJXHUwMzA4Tlx1MDMwM09cdTAzMDBPXHUwMzAxT1x1MDMwMk9cdTAzMDNPXHUwMzA4VVx1MDMwMFVcdTAzMDFVXHUwMzAyIisKKyAgICAgICAgIlVcdTAzMDhZXHUwMzAxYVx1MDMwMGFcdTAzMDFhXHUwMzAyYVx1MDMwM2FcdTAzMDhhXHUwMzBBY1x1MDMyN2VcdTAzMDAiKworICAgICAgICAiZVx1MDMwMWVcdTAzMDJlXHUwMzA4aVx1MDMwMGlcdTAzMDFpXHUwMzAyaVx1MDMwOG5cdTAzMDNvXHUwMzAwb1x1MDMwMSIrCisgICAgICAgICJvXHUwMzAyb1x1MDMwM29cdTAzMDh1XHUwMzAwdVx1MDMwMXVcdTAzMDJ1XHUwMzA4eVx1MDMwMXlcdTAzMDhBXHUwMzA0IisKKyAgICAgICAgImFcdTAzMDRBXHUwMzA2YVx1MDMwNkFcdTAzMjhhXHUwMzI4Q1x1MDMwMWNcdTAzMDFDXHUwMzAyY1x1MDMwMkNcdTAzMDciKworICAgICAgICAiY1x1MDMwN0NcdTAzMENjXHUwMzBDRFx1MDMwQ2RcdTAzMENFXHUwMzA0ZVx1MDMwNEVcdTAzMDZlXHUwMzA2RVx1MDMwNyIrCisgICAgICAgICJlXHUwMzA3RVx1MDMyOGVcdTAzMjhFXHUwMzBDZVx1MDMwQ0dcdTAzMDJnXHUwMzAyR1x1MDMwNmdcdTAzMDZHXHUwMzA3IisKKyAgICAgICAgImdcdTAzMDdHXHUwMzI3Z1x1MDMyN0hcdTAzMDJoXHUwMzAySVx1MDMwM2lcdTAzMDNJXHUwMzA0aVx1MDMwNElcdTAzMDYiKworICAgICAgICAiaVx1MDMwNklcdTAzMjhpXHUwMzI4SVx1MDMwN0pcdTAzMDJqXHUwMzAyS1x1MDMyN2tcdTAzMjdMXHUwMzAxbFx1MDMwMSIrCisgICAgICAgICJMXHUwMzI3bFx1MDMyN0xcdTAzMENsXHUwMzBDTlx1MDMwMW5cdTAzMDFOXHUwMzI3blx1MDMyN05cdTAzMENuXHUwMzBDIisKKyAgICAgICAgIk9cdTAzMDRvXHUwMzA0T1x1MDMwNm9cdTAzMDZPXHUwMzBCb1x1MDMwQlJcdTAzMDFyXHUwMzAxUlx1MDMyN3JcdTAzMjciKworICAgICAgICAiUlx1MDMwQ3JcdTAzMENTXHUwMzAxc1x1MDMwMVNcdTAzMDJzXHUwMzAyU1x1MDMyN3NcdTAzMjdTXHUwMzBDc1x1MDMwQyIrCisgICAgICAgICJUXHUwMzI3dFx1MDMyN1RcdTAzMEN0XHUwMzBDVVx1MDMwM3VcdTAzMDNVXHUwMzA0dVx1MDMwNFVcdTAzMDZ1XHUwMzA2IisKKyAgICAgICAgIlVcdTAzMEF1XHUwMzBBVVx1MDMwQnVcdTAzMEJVXHUwMzI4dVx1MDMyOFdcdTAzMDJ3XHUwMzAyWVx1MDMwMnlcdTAzMDIiKworICAgICAgICAiWVx1MDMwOFpcdTAzMDF6XHUwMzAxWlx1MDMwN3pcdTAzMDdaXHUwMzBDelx1MDMwQ09cdTAzMUJvXHUwMzFCVVx1MDMxQiIrCisgICAgICAgICJ1XHUwMzFCQVx1MDMwQ2FcdTAzMENJXHUwMzBDaVx1MDMwQ09cdTAzMENvXHUwMzBDVVx1MDMwQ3VcdTAzMENVXHUwMzA4IisKKyAgICAgICAgIlx1MDMwNHVcdTAzMDhcdTAzMDRVXHUwMzA4XHUwMzAxdVx1MDMwOFx1MDMwMVVcdTAzMDhcdTAzMEN1XHUwMzA4XHUwMzBDIisKKyAgICAgICAgIlVcdTAzMDhcdTAzMDB1XHUwMzA4XHUwMzAwQVx1MDMwOFx1MDMwNGFcdTAzMDhcdTAzMDRBXHUwMzA3XHUwMzA0YVx1MDMwNyIrCisgICAgICAgICJcdTAzMDRcdTAwQzZcdTAzMDRcdTAwRTZcdTAzMDRHXHUwMzBDZ1x1MDMwQ0tcdTAzMENrXHUwMzBDT1x1MDMyOG9cdTAzMjgiKworICAgICAgICAiT1x1MDMyOFx1MDMwNG9cdTAzMjhcdTAzMDRcdTAxQjdcdTAzMENcdTAyOTJcdTAzMENqXHUwMzBDR1x1MDMwMWdcdTAzMDEiKworICAgICAgICAiTlx1MDMwMG5cdTAzMDBBXHUwMzBBXHUwMzAxYVx1MDMwQVx1MDMwMVx1MDBDNlx1MDMwMVx1MDBFNlx1MDMwMVx1MDBEOCIrCisgICAgICAgICJcdTAzMDFcdTAwRjhcdTAzMDFBXHUwMzBGYVx1MDMwRkFcdTAzMTFhXHUwMzExRVx1MDMwRmVcdTAzMEZFXHUwMzExZVx1MDMxMSIrCisgICAgICAgICJJXHUwMzBGaVx1MDMwRklcdTAzMTFpXHUwMzExT1x1MDMwRm9cdTAzMEZPXHUwMzExb1x1MDMxMVJcdTAzMEZyXHUwMzBGIisKKyAgICAgICAgIlJcdTAzMTFyXHUwMzExVVx1MDMwRnVcdTAzMEZVXHUwMzExdVx1MDMxMVNcdTAzMjZzXHUwMzI2VFx1MDMyNnRcdTAzMjYiKworICAgICAgICAiSFx1MDMwQ2hcdTAzMENBXHUwMzA3YVx1MDMwN0VcdTAzMjdlXHUwMzI3T1x1MDMwOFx1MDMwNG9cdTAzMDhcdTAzMDRPIisKKyAgICAgICAgIlx1MDMwM1x1MDMwNG9cdTAzMDNcdTAzMDRPXHUwMzA3b1x1MDMwN09cdTAzMDdcdTAzMDRvXHUwMzA3XHUwMzA0WVx1MDMwNCIrCisgICAgICAgICJ5XHUwMzA0XHUwMzAwXHUwMzAxXHUwMzEzXHUwMzA4XHUwMzAxXHUwMkI5O1x1MDBBOFx1MDMwMVx1MDM5MVx1MDMwMVx1MDBCNyIrCisgICAgICAgICJcdTAzOTVcdTAzMDFcdTAzOTdcdTAzMDFcdTAzOTlcdTAzMDFcdTAzOUZcdTAzMDFcdTAzQTVcdTAzMDFcdTAzQTlcdTAzMDEiKworICAgICAgICAiXHUwM0I5XHUwMzA4XHUwMzAxXHUwMzk5XHUwMzA4XHUwM0E1XHUwMzA4XHUwM0IxXHUwMzAxXHUwM0I1XHUwMzAxXHUwM0I3IisKKyAgICAgICAgIlx1MDMwMVx1MDNCOVx1MDMwMVx1MDNDNVx1MDMwOFx1MDMwMVx1MDNCOVx1MDMwOFx1MDNDNVx1MDMwOFx1MDNCRlx1MDMwMSIrCisgICAgICAgICJcdTAzQzVcdTAzMDFcdTAzQzlcdTAzMDFcdTAzRDJcdTAzMDFcdTAzRDJcdTAzMDhcdTA0MTVcdTAzMDBcdTA0MTVcdTAzMDgiKworICAgICAgICAiXHUwNDEzXHUwMzAxXHUwNDA2XHUwMzA4XHUwNDFBXHUwMzAxXHUwNDE4XHUwMzAwXHUwNDIzXHUwMzA2XHUwNDE4XHUwMzA2IisKKyAgICAgICAgIlx1MDQzOFx1MDMwNlx1MDQzNVx1MDMwMFx1MDQzNVx1MDMwOFx1MDQzM1x1MDMwMVx1MDQ1Nlx1MDMwOFx1MDQzQVx1MDMwMSIrCisgICAgICAgICJcdTA0MzhcdTAzMDBcdTA0NDNcdTAzMDZcdTA0NzRcdTAzMEZcdTA0NzVcdTAzMEZcdTA0MTZcdTAzMDZcdTA0MzZcdTAzMDYiKworICAgICAgICAiXHUwNDEwXHUwMzA2XHUwNDMwXHUwMzA2XHUwNDEwXHUwMzA4XHUwNDMwXHUwMzA4XHUwNDE1XHUwMzA2XHUwNDM1XHUwMzA2IisKKyAgICAgICAgIlx1MDREOFx1MDMwOFx1MDREOVx1MDMwOFx1MDQxNlx1MDMwOFx1MDQzNlx1MDMwOFx1MDQxN1x1MDMwOFx1MDQzN1x1MDMwOCIrCisgICAgICAgICJcdTA0MThcdTAzMDRcdTA0MzhcdTAzMDRcdTA0MThcdTAzMDhcdTA0MzhcdTAzMDhcdTA0MUVcdTAzMDhcdTA0M0VcdTAzMDgiKworICAgICAgICAiXHUwNEU4XHUwMzA4XHUwNEU5XHUwMzA4XHUwNDJEXHUwMzA4XHUwNDREXHUwMzA4XHUwNDIzXHUwMzA0XHUwNDQzXHUwMzA0IisKKyAgICAgICAgIlx1MDQyM1x1MDMwOFx1MDQ0M1x1MDMwOFx1MDQyM1x1MDMwQlx1MDQ0M1x1MDMwQlx1MDQyN1x1MDMwOFx1MDQ0N1x1MDMwOCIrCisgICAgICAgICJcdTA0MkJcdTAzMDhcdTA0NEJcdTAzMDhcdTA2MjdcdTA2NTNcdTA2MjdcdTA2NTRcdTA2NDhcdTA2NTRcdTA2MjdcdTA2NTUiKworICAgICAgICAiXHUwNjRBXHUwNjU0XHUwNkQ1XHUwNjU0XHUwNkMxXHUwNjU0XHUwNkQyXHUwNjU0XHUwOTI4XHUwOTNDXHUwOTMwXHUwOTNDIisKKyAgICAgICAgIlx1MDkzM1x1MDkzQ1x1MDkxNVx1MDkzQ1x1MDkxNlx1MDkzQ1x1MDkxN1x1MDkzQ1x1MDkxQ1x1MDkzQ1x1MDkyMVx1MDkzQyIrCisgICAgICAgICJcdTA5MjJcdTA5M0NcdTA5MkJcdTA5M0NcdTA5MkZcdTA5M0NcdTA5QzdcdTA5QkVcdTA5QzdcdTA5RDdcdTA5QTFcdTA5QkMiKworICAgICAgICAiXHUwOUEyXHUwOUJDXHUwOUFGXHUwOUJDXHUwQTMyXHUwQTNDXHUwQTM4XHUwQTNDXHUwQTE2XHUwQTNDXHUwQTE3XHUwQTNDIisKKyAgICAgICAgIlx1MEExQ1x1MEEzQ1x1MEEyQlx1MEEzQ1x1MEI0N1x1MEI1Nlx1MEI0N1x1MEIzRVx1MEI0N1x1MEI1N1x1MEIyMVx1MEIzQyIrCisgICAgICAgICJcdTBCMjJcdTBCM0NcdTBCOTJcdTBCRDdcdTBCQzZcdTBCQkVcdTBCQzdcdTBCQkVcdTBCQzZcdTBCRDdcdTBDNDZcdTBDNTYiKworICAgICAgICAiXHUwQ0JGXHUwQ0Q1XHUwQ0M2XHUwQ0Q1XHUwQ0M2XHUwQ0Q2XHUwQ0M2XHUwQ0MyXHUwQ0M2XHUwQ0MyXHUwQ0Q1XHUwRDQ2IisKKyAgICAgICAgIlx1MEQzRVx1MEQ0N1x1MEQzRVx1MEQ0Nlx1MEQ1N1x1MEREOVx1MERDQVx1MEREOVx1MERDRlx1MEREOVx1MERDRlx1MERDQSIrCisgICAgICAgICJcdTBERDlcdTBEREZcdTBGNDJcdTBGQjdcdTBGNENcdTBGQjdcdTBGNTFcdTBGQjdcdTBGNTZcdTBGQjdcdTBGNUJcdTBGQjciKworICAgICAgICAiXHUwRjQwXHUwRkI1XHUwRjcxXHUwRjcyXHUwRjcxXHUwRjc0XHUwRkIyXHUwRjgwXHUwRkIzXHUwRjgwXHUwRjcxXHUwRjgwIisKKyAgICAgICAgIlx1MEY5Mlx1MEZCN1x1MEY5Q1x1MEZCN1x1MEZBMVx1MEZCN1x1MEZBNlx1MEZCN1x1MEZBQlx1MEZCN1x1MEY5MFx1MEZCNSIrCisgICAgICAgICJcdTEwMjVcdTEwMkVBXHUwMzI1YVx1MDMyNUJcdTAzMDdiXHUwMzA3Qlx1MDMyM2JcdTAzMjNCXHUwMzMxYlx1MDMzMUMiKworICAgICAgICAiXHUwMzI3XHUwMzAxY1x1MDMyN1x1MDMwMURcdTAzMDdkXHUwMzA3RFx1MDMyM2RcdTAzMjNEXHUwMzMxZFx1MDMzMURcdTAzMjciKworICAgICAgICAiZFx1MDMyN0RcdTAzMkRkXHUwMzJERVx1MDMwNFx1MDMwMGVcdTAzMDRcdTAzMDBFXHUwMzA0XHUwMzAxZVx1MDMwNFx1MDMwMSIrCisgICAgICAgICJFXHUwMzJEZVx1MDMyREVcdTAzMzBlXHUwMzMwRVx1MDMyN1x1MDMwNmVcdTAzMjdcdTAzMDZGXHUwMzA3Zlx1MDMwN0ciKworICAgICAgICAiXHUwMzA0Z1x1MDMwNEhcdTAzMDdoXHUwMzA3SFx1MDMyM2hcdTAzMjNIXHUwMzA4aFx1MDMwOEhcdTAzMjdoXHUwMzI3IisKKyAgICAgICAgIkhcdTAzMkVoXHUwMzJFSVx1MDMzMGlcdTAzMzBJXHUwMzA4XHUwMzAxaVx1MDMwOFx1MDMwMUtcdTAzMDFrXHUwMzAxSyIrCisgICAgICAgICJcdTAzMjNrXHUwMzIzS1x1MDMzMWtcdTAzMzFMXHUwMzIzbFx1MDMyM0xcdTAzMjNcdTAzMDRsXHUwMzIzXHUwMzA0TFx1MDMzMSIrCisgICAgICAgICJsXHUwMzMxTFx1MDMyRGxcdTAzMkRNXHUwMzAxbVx1MDMwMU1cdTAzMDdtXHUwMzA3TVx1MDMyM21cdTAzMjNOXHUwMzA3IisKKyAgICAgICAgIm5cdTAzMDdOXHUwMzIzblx1MDMyM05cdTAzMzFuXHUwMzMxTlx1MDMyRG5cdTAzMkRPXHUwMzAzXHUwMzAxb1x1MDMwMyIrCisgICAgICAgICJcdTAzMDFPXHUwMzAzXHUwMzA4b1x1MDMwM1x1MDMwOE9cdTAzMDRcdTAzMDBvXHUwMzA0XHUwMzAwT1x1MDMwNFx1MDMwMSIrCisgICAgICAgICJvXHUwMzA0XHUwMzAxUFx1MDMwMXBcdTAzMDFQXHUwMzA3cFx1MDMwN1JcdTAzMDdyXHUwMzA3Ulx1MDMyM3JcdTAzMjMiKworICAgICAgICAiUlx1MDMyM1x1MDMwNHJcdTAzMjNcdTAzMDRSXHUwMzMxclx1MDMzMVNcdTAzMDdzXHUwMzA3U1x1MDMyM3NcdTAzMjNTIisKKyAgICAgICAgIlx1MDMwMVx1MDMwN3NcdTAzMDFcdTAzMDdTXHUwMzBDXHUwMzA3c1x1MDMwQ1x1MDMwN1NcdTAzMjNcdTAzMDdzXHUwMzIzIisKKyAgICAgICAgIlx1MDMwN1RcdTAzMDd0XHUwMzA3VFx1MDMyM3RcdTAzMjNUXHUwMzMxdFx1MDMzMVRcdTAzMkR0XHUwMzJEVVx1MDMyNCIrCisgICAgICAgICJ1XHUwMzI0VVx1MDMzMHVcdTAzMzBVXHUwMzJEdVx1MDMyRFVcdTAzMDNcdTAzMDF1XHUwMzAzXHUwMzAxVVx1MDMwNFx1MDMwOCIrCisgICAgICAgICJ1XHUwMzA0XHUwMzA4Vlx1MDMwM3ZcdTAzMDNWXHUwMzIzdlx1MDMyM1dcdTAzMDB3XHUwMzAwV1x1MDMwMXdcdTAzMDEiKworICAgICAgICAiV1x1MDMwOHdcdTAzMDhXXHUwMzA3d1x1MDMwN1dcdTAzMjN3XHUwMzIzWFx1MDMwN3hcdTAzMDdYXHUwMzA4eFx1MDMwOCIrCisgICAgICAgICJZXHUwMzA3eVx1MDMwN1pcdTAzMDJ6XHUwMzAyWlx1MDMyM3pcdTAzMjNaXHUwMzMxelx1MDMzMWhcdTAzMzF0XHUwMzA4IisKKyAgICAgICAgIndcdTAzMEF5XHUwMzBBXHUwMTdGXHUwMzA3QVx1MDMyM2FcdTAzMjNBXHUwMzA5YVx1MDMwOUFcdTAzMDJcdTAzMDFhXHUwMzAyIisKKyAgICAgICAgIlx1MDMwMUFcdTAzMDJcdTAzMDBhXHUwMzAyXHUwMzAwQVx1MDMwMlx1MDMwOWFcdTAzMDJcdTAzMDlBXHUwMzAyXHUwMzAzIisKKyAgICAgICAgImFcdTAzMDJcdTAzMDNBXHUwMzIzXHUwMzAyYVx1MDMyM1x1MDMwMkFcdTAzMDZcdTAzMDFhXHUwMzA2XHUwMzAxQVx1MDMwNiIrCisgICAgICAgICJcdTAzMDBhXHUwMzA2XHUwMzAwQVx1MDMwNlx1MDMwOWFcdTAzMDZcdTAzMDlBXHUwMzA2XHUwMzAzYVx1MDMwNlx1MDMwMyIrCisgICAgICAgICJBXHUwMzIzXHUwMzA2YVx1MDMyM1x1MDMwNkVcdTAzMjNlXHUwMzIzRVx1MDMwOWVcdTAzMDlFXHUwMzAzZVx1MDMwM0UiKworICAgICAgICAiXHUwMzAyXHUwMzAxZVx1MDMwMlx1MDMwMUVcdTAzMDJcdTAzMDBlXHUwMzAyXHUwMzAwRVx1MDMwMlx1MDMwOWVcdTAzMDIiKworICAgICAgICAiXHUwMzA5RVx1MDMwMlx1MDMwM2VcdTAzMDJcdTAzMDNFXHUwMzIzXHUwMzAyZVx1MDMyM1x1MDMwMklcdTAzMDlpXHUwMzA5IisKKyAgICAgICAgIklcdTAzMjNpXHUwMzIzT1x1MDMyM29cdTAzMjNPXHUwMzA5b1x1MDMwOU9cdTAzMDJcdTAzMDFvXHUwMzAyXHUwMzAxTyIrCisgICAgICAgICJcdTAzMDJcdTAzMDBvXHUwMzAyXHUwMzAwT1x1MDMwMlx1MDMwOW9cdTAzMDJcdTAzMDlPXHUwMzAyXHUwMzAzb1x1MDMwMiIrCisgICAgICAgICJcdTAzMDNPXHUwMzIzXHUwMzAyb1x1MDMyM1x1MDMwMk9cdTAzMUJcdTAzMDFvXHUwMzFCXHUwMzAxT1x1MDMxQlx1MDMwMCIrCisgICAgICAgICJvXHUwMzFCXHUwMzAwT1x1MDMxQlx1MDMwOW9cdTAzMUJcdTAzMDlPXHUwMzFCXHUwMzAzb1x1MDMxQlx1MDMwM09cdTAzMUIiKworICAgICAgICAiXHUwMzIzb1x1MDMxQlx1MDMyM1VcdTAzMjN1XHUwMzIzVVx1MDMwOXVcdTAzMDlVXHUwMzFCXHUwMzAxdVx1MDMxQlx1MDMwMSIrCisgICAgICAgICJVXHUwMzFCXHUwMzAwdVx1MDMxQlx1MDMwMFVcdTAzMUJcdTAzMDl1XHUwMzFCXHUwMzA5VVx1MDMxQlx1MDMwM3VcdTAzMUIiKworICAgICAgICAiXHUwMzAzVVx1MDMxQlx1MDMyM3VcdTAzMUJcdTAzMjNZXHUwMzAweVx1MDMwMFlcdTAzMjN5XHUwMzIzWVx1MDMwOXlcdTAzMDkiKworICAgICAgICAiWVx1MDMwM3lcdTAzMDNcdTAzQjFcdTAzMTNcdTAzQjFcdTAzMTRcdTAzQjFcdTAzMTNcdTAzMDBcdTAzQjFcdTAzMTRcdTAzMDAiKworICAgICAgICAiXHUwM0IxXHUwMzEzXHUwMzAxXHUwM0IxXHUwMzE0XHUwMzAxXHUwM0IxXHUwMzEzXHUwMzQyXHUwM0IxXHUwMzE0XHUwMzQyIisKKyAgICAgICAgIlx1MDM5MVx1MDMxM1x1MDM5MVx1MDMxNFx1MDM5MVx1MDMxM1x1MDMwMFx1MDM5MVx1MDMxNFx1MDMwMFx1MDM5MVx1MDMxMyIrCisgICAgICAgICJcdTAzMDFcdTAzOTFcdTAzMTRcdTAzMDFcdTAzOTFcdTAzMTNcdTAzNDJcdTAzOTFcdTAzMTRcdTAzNDJcdTAzQjVcdTAzMTMiKworICAgICAgICAiXHUwM0I1XHUwMzE0XHUwM0I1XHUwMzEzXHUwMzAwXHUwM0I1XHUwMzE0XHUwMzAwXHUwM0I1XHUwMzEzXHUwMzAxXHUwM0I1IisKKyAgICAgICAgIlx1MDMxNFx1MDMwMVx1MDM5NVx1MDMxM1x1MDM5NVx1MDMxNFx1MDM5NVx1MDMxM1x1MDMwMFx1MDM5NVx1MDMxNFx1MDMwMCIrCisgICAgICAgICJcdTAzOTVcdTAzMTNcdTAzMDFcdTAzOTVcdTAzMTRcdTAzMDFcdTAzQjdcdTAzMTNcdTAzQjdcdTAzMTRcdTAzQjdcdTAzMTMiKworICAgICAgICAiXHUwMzAwXHUwM0I3XHUwMzE0XHUwMzAwXHUwM0I3XHUwMzEzXHUwMzAxXHUwM0I3XHUwMzE0XHUwMzAxXHUwM0I3XHUwMzEzIisKKyAgICAgICAgIlx1MDM0Mlx1MDNCN1x1MDMxNFx1MDM0Mlx1MDM5N1x1MDMxM1x1MDM5N1x1MDMxNFx1MDM5N1x1MDMxM1x1MDMwMFx1MDM5NyIrCisgICAgICAgICJcdTAzMTRcdTAzMDBcdTAzOTdcdTAzMTNcdTAzMDFcdTAzOTdcdTAzMTRcdTAzMDFcdTAzOTdcdTAzMTNcdTAzNDJcdTAzOTciKworICAgICAgICAiXHUwMzE0XHUwMzQyXHUwM0I5XHUwMzEzXHUwM0I5XHUwMzE0XHUwM0I5XHUwMzEzXHUwMzAwXHUwM0I5XHUwMzE0XHUwMzAwIisKKyAgICAgICAgIlx1MDNCOVx1MDMxM1x1MDMwMVx1MDNCOVx1MDMxNFx1MDMwMVx1MDNCOVx1MDMxM1x1MDM0Mlx1MDNCOVx1MDMxNFx1MDM0MiIrCisgICAgICAgICJcdTAzOTlcdTAzMTNcdTAzOTlcdTAzMTRcdTAzOTlcdTAzMTNcdTAzMDBcdTAzOTlcdTAzMTRcdTAzMDBcdTAzOTlcdTAzMTMiKworICAgICAgICAiXHUwMzAxXHUwMzk5XHUwMzE0XHUwMzAxXHUwMzk5XHUwMzEzXHUwMzQyXHUwMzk5XHUwMzE0XHUwMzQyXHUwM0JGXHUwMzEzIisKKyAgICAgICAgIlx1MDNCRlx1MDMxNFx1MDNCRlx1MDMxM1x1MDMwMFx1MDNCRlx1MDMxNFx1MDMwMFx1MDNCRlx1MDMxM1x1MDMwMVx1MDNCRiIrCisgICAgICAgICJcdTAzMTRcdTAzMDFcdTAzOUZcdTAzMTNcdTAzOUZcdTAzMTRcdTAzOUZcdTAzMTNcdTAzMDBcdTAzOUZcdTAzMTRcdTAzMDAiKworICAgICAgICAiXHUwMzlGXHUwMzEzXHUwMzAxXHUwMzlGXHUwMzE0XHUwMzAxXHUwM0M1XHUwMzEzXHUwM0M1XHUwMzE0XHUwM0M1XHUwMzEzIisKKyAgICAgICAgIlx1MDMwMFx1MDNDNVx1MDMxNFx1MDMwMFx1MDNDNVx1MDMxM1x1MDMwMVx1MDNDNVx1MDMxNFx1MDMwMVx1MDNDNVx1MDMxMyIrCisgICAgICAgICJcdTAzNDJcdTAzQzVcdTAzMTRcdTAzNDJcdTAzQTVcdTAzMTRcdTAzQTVcdTAzMTRcdTAzMDBcdTAzQTVcdTAzMTRcdTAzMDEiKworICAgICAgICAiXHUwM0E1XHUwMzE0XHUwMzQyXHUwM0M5XHUwMzEzXHUwM0M5XHUwMzE0XHUwM0M5XHUwMzEzXHUwMzAwXHUwM0M5XHUwMzE0IisKKyAgICAgICAgIlx1MDMwMFx1MDNDOVx1MDMxM1x1MDMwMVx1MDNDOVx1MDMxNFx1MDMwMVx1MDNDOVx1MDMxM1x1MDM0Mlx1MDNDOVx1MDMxNCIrCisgICAgICAgICJcdTAzNDJcdTAzQTlcdTAzMTNcdTAzQTlcdTAzMTRcdTAzQTlcdTAzMTNcdTAzMDBcdTAzQTlcdTAzMTRcdTAzMDBcdTAzQTkiKworICAgICAgICAiXHUwMzEzXHUwMzAxXHUwM0E5XHUwMzE0XHUwMzAxXHUwM0E5XHUwMzEzXHUwMzQyXHUwM0E5XHUwMzE0XHUwMzQyXHUwM0IxIisKKyAgICAgICAgIlx1MDMwMFx1MDNCMVx1MDMwMVx1MDNCNVx1MDMwMFx1MDNCNVx1MDMwMVx1MDNCN1x1MDMwMFx1MDNCN1x1MDMwMVx1MDNCOSIrCisgICAgICAgICJcdTAzMDBcdTAzQjlcdTAzMDFcdTAzQkZcdTAzMDBcdTAzQkZcdTAzMDFcdTAzQzVcdTAzMDBcdTAzQzVcdTAzMDFcdTAzQzkiKworICAgICAgICAiXHUwMzAwXHUwM0M5XHUwMzAxXHUwM0IxXHUwMzEzXHUwMzQ1XHUwM0IxXHUwMzE0XHUwMzQ1XHUwM0IxXHUwMzEzXHUwMzAwIisKKyAgICAgICAgIlx1MDM0NVwwMDBcdTAzQjFcdTAzMTRcdTAzMDBcdTAzNDVcMDAwXHUwM0IxXHUwMzEzXHUwMzAxXHUwMzQ1XDAwMFx1MDNCMSIrCisgICAgICAgICJcdTAzMTRcdTAzMDFcdTAzNDVcMDAwXHUwM0IxXHUwMzEzXHUwMzQyXHUwMzQ1XDAwMFx1MDNCMVx1MDMxNFx1MDM0Mlx1MDM0NSIrCisgICAgICAgICJcMDAwXHUwMzkxXHUwMzEzXHUwMzQ1XHUwMzkxXHUwMzE0XHUwMzQ1XHUwMzkxXHUwMzEzXHUwMzAwXHUwMzQ1XDAwMFx1MDM5MSIrCisgICAgICAgICJcdTAzMTRcdTAzMDBcdTAzNDVcMDAwXHUwMzkxXHUwMzEzXHUwMzAxXHUwMzQ1XDAwMFx1MDM5MVx1MDMxNFx1MDMwMVx1MDM0NSIrCisgICAgICAgICJcMDAwXHUwMzkxXHUwMzEzXHUwMzQyXHUwMzQ1XDAwMFx1MDM5MVx1MDMxNFx1MDM0Mlx1MDM0NVwwMDBcdTAzQjdcdTAzMTMiKworICAgICAgICAiXHUwMzQ1XHUwM0I3XHUwMzE0XHUwMzQ1XHUwM0I3XHUwMzEzXHUwMzAwXHUwMzQ1XDAwMFx1MDNCN1x1MDMxNFx1MDMwMCIrCisgICAgICAgICJcdTAzNDVcMDAwXHUwM0I3XHUwMzEzXHUwMzAxXHUwMzQ1XDAwMFx1MDNCN1x1MDMxNFx1MDMwMVx1MDM0NVwwMDBcdTAzQjciKworICAgICAgICAiXHUwMzEzXHUwMzQyXHUwMzQ1XDAwMFx1MDNCN1x1MDMxNFx1MDM0Mlx1MDM0NVwwMDBcdTAzOTdcdTAzMTNcdTAzNDVcdTAzOTciKworICAgICAgICAiXHUwMzE0XHUwMzQ1XHUwMzk3XHUwMzEzXHUwMzAwXHUwMzQ1XDAwMFx1MDM5N1x1MDMxNFx1MDMwMFx1MDM0NVwwMDBcdTAzOTciKworICAgICAgICAiXHUwMzEzXHUwMzAxXHUwMzQ1XDAwMFx1MDM5N1x1MDMxNFx1MDMwMVx1MDM0NVwwMDBcdTAzOTdcdTAzMTNcdTAzNDJcdTAzNDUiKworICAgICAgICAiXDAwMFx1MDM5N1x1MDMxNFx1MDM0Mlx1MDM0NVwwMDBcdTAzQzlcdTAzMTNcdTAzNDVcdTAzQzlcdTAzMTRcdTAzNDVcdTAzQzkiKworICAgICAgICAiXHUwMzEzXHUwMzAwXHUwMzQ1XDAwMFx1MDNDOVx1MDMxNFx1MDMwMFx1MDM0NVwwMDBcdTAzQzlcdTAzMTNcdTAzMDFcdTAzNDUiKworICAgICAgICAiXDAwMFx1MDNDOVx1MDMxNFx1MDMwMVx1MDM0NVwwMDBcdTAzQzlcdTAzMTNcdTAzNDJcdTAzNDVcMDAwXHUwM0M5XHUwMzE0IisKKyAgICAgICAgIlx1MDM0Mlx1MDM0NVwwMDBcdTAzQTlcdTAzMTNcdTAzNDVcdTAzQTlcdTAzMTRcdTAzNDVcdTAzQTlcdTAzMTNcdTAzMDAiKworICAgICAgICAiXHUwMzQ1XDAwMFx1MDNBOVx1MDMxNFx1MDMwMFx1MDM0NVwwMDBcdTAzQTlcdTAzMTNcdTAzMDFcdTAzNDVcMDAwXHUwM0E5IisKKyAgICAgICAgIlx1MDMxNFx1MDMwMVx1MDM0NVwwMDBcdTAzQTlcdTAzMTNcdTAzNDJcdTAzNDVcMDAwXHUwM0E5XHUwMzE0XHUwMzQyXHUwMzQ1IisKKyAgICAgICAgIlwwMDBcdTAzQjFcdTAzMDZcdTAzQjFcdTAzMDRcdTAzQjFcdTAzMDBcdTAzNDVcdTAzQjFcdTAzNDVcdTAzQjFcdTAzMDEiKworICAgICAgICAiXHUwMzQ1XHUwM0IxXHUwMzQyXHUwM0IxXHUwMzQyXHUwMzQ1XHUwMzkxXHUwMzA2XHUwMzkxXHUwMzA0XHUwMzkxXHUwMzAwIisKKyAgICAgICAgIlx1MDM5MVx1MDMwMVx1MDM5MVx1MDM0NVx1MDNCOVx1MDBBOFx1MDM0Mlx1MDNCN1x1MDMwMFx1MDM0NVx1MDNCN1x1MDM0NSIrCisgICAgICAgICJcdTAzQjdcdTAzMDFcdTAzNDVcdTAzQjdcdTAzNDJcdTAzQjdcdTAzNDJcdTAzNDVcdTAzOTVcdTAzMDBcdTAzOTVcdTAzMDEiKworICAgICAgICAiXHUwMzk3XHUwMzAwXHUwMzk3XHUwMzAxXHUwMzk3XHUwMzQ1XHUxRkJGXHUwMzAwXHUxRkJGXHUwMzAxXHUxRkJGXHUwMzQyIisKKyAgICAgICAgIlx1MDNCOVx1MDMwNlx1MDNCOVx1MDMwNFx1MDNCOVx1MDMwOFx1MDMwMFx1MDNCOVx1MDMwOFx1MDMwMVx1MDNCOVx1MDM0MiIrCisgICAgICAgICJcdTAzQjlcdTAzMDhcdTAzNDJcdTAzOTlcdTAzMDZcdTAzOTlcdTAzMDRcdTAzOTlcdTAzMDBcdTAzOTlcdTAzMDFcdTFGRkUiKworICAgICAgICAiXHUwMzAwXHUxRkZFXHUwMzAxXHUxRkZFXHUwMzQyXHUwM0M1XHUwMzA2XHUwM0M1XHUwMzA0XHUwM0M1XHUwMzA4XHUwMzAwIisKKyAgICAgICAgIlx1MDNDNVx1MDMwOFx1MDMwMVx1MDNDMVx1MDMxM1x1MDNDMVx1MDMxNFx1MDNDNVx1MDM0Mlx1MDNDNVx1MDMwOFx1MDM0MiIrCisgICAgICAgICJcdTAzQTVcdTAzMDZcdTAzQTVcdTAzMDRcdTAzQTVcdTAzMDBcdTAzQTVcdTAzMDFcdTAzQTFcdTAzMTRcdTAwQThcdTAzMDAiKworICAgICAgICAiXHUwMEE4XHUwMzAxYFx1MDNDOVx1MDMwMFx1MDM0NVx1MDNDOVx1MDM0NVx1MDNDOVx1MDMwMVx1MDM0NVx1MDNDOVx1MDM0MiIrCisgICAgICAgICJcdTAzQzlcdTAzNDJcdTAzNDVcdTAzOUZcdTAzMDBcdTAzOUZcdTAzMDFcdTAzQTlcdTAzMDBcdTAzQTlcdTAzMDFcdTAzQTkiKworICAgICAgICAiXHUwMzQ1XHUwMEI0XHUyMDAyXHUyMDAzXHUwM0E5S0FcdTAzMEFcdTIxOTBcdTAzMzhcdTIxOTJcdTAzMzhcdTIxOTRcdTAzMzgiKworICAgICAgICAiXHUyMUQwXHUwMzM4XHUyMUQ0XHUwMzM4XHUyMUQyXHUwMzM4XHUyMjAzXHUwMzM4XHUyMjA4XHUwMzM4XHUyMjBCXHUwMzM4IisKKyAgICAgICAgIlx1MjIyM1x1MDMzOFx1MjIyNVx1MDMzOFx1MjIzQ1x1MDMzOFx1MjI0M1x1MDMzOFx1MjI0NVx1MDMzOFx1MjI0OFx1MDMzOCIrCisgICAgICAgICI9XHUwMzM4XHUyMjYxXHUwMzM4XHUyMjREXHUwMzM4PFx1MDMzOD5cdTAzMzhcdTIyNjRcdTAzMzhcdTIyNjVcdTAzMzgiKworICAgICAgICAiXHUyMjcyXHUwMzM4XHUyMjczXHUwMzM4XHUyMjc2XHUwMzM4XHUyMjc3XHUwMzM4XHUyMjdBXHUwMzM4XHUyMjdCXHUwMzM4IisKKyAgICAgICAgIlx1MjI4Mlx1MDMzOFx1MjI4M1x1MDMzOFx1MjI4Nlx1MDMzOFx1MjI4N1x1MDMzOFx1MjJBMlx1MDMzOFx1MjJBOFx1MDMzOCIrCisgICAgICAgICJcdTIyQTlcdTAzMzhcdTIyQUJcdTAzMzhcdTIyN0NcdTAzMzhcdTIyN0RcdTAzMzhcdTIyOTFcdTAzMzhcdTIyOTJcdTAzMzgiKworICAgICAgICAiXHUyMkIyXHUwMzM4XHUyMkIzXHUwMzM4XHUyMkI0XHUwMzM4XHUyMkI1XHUwMzM4XHUzMDA4XHUzMDA5XHUzMDRCXHUzMDk5IisKKyAgICAgICAgIlx1MzA0RFx1MzA5OVx1MzA0Rlx1MzA5OVx1MzA1MVx1MzA5OVx1MzA1M1x1MzA5OVx1MzA1NVx1MzA5OVx1MzA1N1x1MzA5OSIrCisgICAgICAgICJcdTMwNTlcdTMwOTlcdTMwNUJcdTMwOTlcdTMwNURcdTMwOTlcdTMwNUZcdTMwOTlcdTMwNjFcdTMwOTlcdTMwNjRcdTMwOTkiKworICAgICAgICAiXHUzMDY2XHUzMDk5XHUzMDY4XHUzMDk5XHUzMDZGXHUzMDk5XHUzMDZGXHUzMDlBXHUzMDcyXHUzMDk5XHUzMDcyXHUzMDlBIisKKyAgICAgICAgIlx1MzA3NVx1MzA5OVx1MzA3NVx1MzA5QVx1MzA3OFx1MzA5OVx1MzA3OFx1MzA5QVx1MzA3Qlx1MzA5OVx1MzA3Qlx1MzA5QSIrCisgICAgICAgICJcdTMwNDZcdTMwOTlcdTMwOURcdTMwOTlcdTMwQUJcdTMwOTlcdTMwQURcdTMwOTlcdTMwQUZcdTMwOTlcdTMwQjFcdTMwOTkiKworICAgICAgICAiXHUzMEIzXHUzMDk5XHUzMEI1XHUzMDk5XHUzMEI3XHUzMDk5XHUzMEI5XHUzMDk5XHUzMEJCXHUzMDk5XHUzMEJEXHUzMDk5IisKKyAgICAgICAgIlx1MzBCRlx1MzA5OVx1MzBDMVx1MzA5OVx1MzBDNFx1MzA5OVx1MzBDNlx1MzA5OVx1MzBDOFx1MzA5OVx1MzBDRlx1MzA5OSIrCisgICAgICAgICJcdTMwQ0ZcdTMwOUFcdTMwRDJcdTMwOTlcdTMwRDJcdTMwOUFcdTMwRDVcdTMwOTlcdTMwRDVcdTMwOUFcdTMwRDhcdTMwOTkiKworICAgICAgICAiXHUzMEQ4XHUzMDlBXHUzMERCXHUzMDk5XHUzMERCXHUzMDlBXHUzMEE2XHUzMDk5XHUzMEVGXHUzMDk5XHUzMEYwXHUzMDk5IisKKyAgICAgICAgIlx1MzBGMVx1MzA5OVx1MzBGMlx1MzA5OVx1MzBGRFx1MzA5OVx1OEM0OFx1NjZGNFx1OEVDQVx1OENDOFx1NkVEMVx1NEUzMiIrCisgICAgICAgICJcdTUzRTVcdTlGOUNcdTlGOUNcdTU5NTFcdTkxRDFcdTU1ODdcdTU5NDhcdTYxRjZcdTc2NjlcdTdGODVcdTg2M0ZcdTg3QkEiKworICAgICAgICAiXHU4OEY4XHU5MDhGXHU2QTAyXHU2RDFCXHU3MEQ5XHU3M0RFXHU4NDNEXHU5MTZBXHU5OUYxXHU0RTgyXHU1Mzc1XHU2QjA0IisKKyAgICAgICAgIlx1NzIxQlx1ODYyRFx1OUUxRVx1NUQ1MFx1NkZFQlx1ODVDRFx1ODk2NFx1NjJDOVx1ODFEOFx1ODgxRlx1NUVDQVx1NjcxNyIrCisgICAgICAgICJcdTZENkFcdTcyRkNcdTkwQ0VcdTRGODZcdTUxQjdcdTUyREVcdTY0QzRcdTZBRDNcdTcyMTBcdTc2RTdcdTgwMDFcdTg2MDYiKworICAgICAgICAiXHU4NjVDXHU4REVGXHU5NzMyXHU5QjZGXHU5REZBXHU3ODhDXHU3OTdGXHU3REEwXHU4M0M5XHU5MzA0XHU5RTdGXHU4QUQ2IisKKyAgICAgICAgIlx1NThERlx1NUYwNFx1N0M2MFx1ODA3RVx1NzI2Mlx1NzhDQVx1OENDMlx1OTZGN1x1NThEOFx1NUM2Mlx1NkExM1x1NkREQSIrCisgICAgICAgICJcdTZGMEZcdTdEMkZcdTdFMzdcdTk2RkJcdTUyRDJcdTgwOEJcdTUxRENcdTUxQ0NcdTdBMUNcdTdEQkVcdTgzRjFcdTk2NzUiKworICAgICAgICAiXHU4QjgwXHU2MkNGXHU2QTAyXHU4QUZFXHU0RTM5XHU1QkU3XHU2MDEyXHU3Mzg3XHU3NTcwXHU1MzE3XHU3OEZCXHU0RkJGIisKKyAgICAgICAgIlx1NUZBOVx1NEUwRFx1NkNDQ1x1NjU3OFx1N0QyMlx1NTNDM1x1NTg1RVx1NzcwMVx1ODQ0OVx1OEFBQVx1NkJCQVx1OEZCMCIrCisgICAgICAgICJcdTZDODhcdTYyRkVcdTgyRTVcdTYzQTBcdTc1NjVcdTRFQUVcdTUxNjlcdTUxQzlcdTY4ODFcdTdDRTdcdTgyNkZcdThBRDIiKworICAgICAgICAiXHU5MUNGXHU1MkY1XHU1NDQyXHU1OTczXHU1RUVDXHU2NUM1XHU2RkZFXHU3OTJBXHU5NUFEXHU5QTZBXHU5RTk3XHU5RUNFIisKKyAgICAgICAgIlx1NTI5Qlx1NjZDNlx1NkI3N1x1OEY2Mlx1NUU3NFx1NjE5MFx1NjIwMFx1NjQ5QVx1NkYyM1x1NzE0OVx1NzQ4OVx1NzlDQSIrCisgICAgICAgICJcdTdERjRcdTgwNkZcdThGMjZcdTg0RUVcdTkwMjNcdTkzNEFcdTUyMTdcdTUyQTNcdTU0QkRcdTcwQzhcdTg4QzJcdThBQUEiKworICAgICAgICAiXHU1RUM5XHU1RkY1XHU2MzdCXHU2QkFFXHU3QzNFXHU3Mzc1XHU0RUU0XHU1NkY5XHU1QkU3XHU1REJBXHU2MDFDXHU3M0IyIisKKyAgICAgICAgIlx1NzQ2OVx1N0Y5QVx1ODA0Nlx1OTIzNFx1OTZGNlx1OTc0OFx1OTgxOFx1NEY4Qlx1NzlBRVx1OTFCNFx1OTZCOFx1NjBFMSIrCisgICAgICAgICJcdTRFODZcdTUwREFcdTVCRUVcdTVDM0ZcdTY1OTlcdTZBMDJcdTcxQ0VcdTc2NDJcdTg0RkNcdTkwN0NcdTlGOERcdTY2ODgiKworICAgICAgICAiXHU5NjJFXHU1Mjg5XHU2NzdCXHU2N0YzXHU2RDQxXHU2RTlDXHU3NDA5XHU3NTU5XHU3ODZCXHU3RDEwXHU5ODVFXHU1MTZEIisKKyAgICAgICAgIlx1NjIyRVx1OTY3OFx1NTAyQlx1NUQxOVx1NkRFQVx1OEYyQVx1NUY4Qlx1NjE0NFx1NjgxN1x1NzM4N1x1OTY4Nlx1NTIyOSIrCisgICAgICAgICJcdTU0MEZcdTVDNjVcdTY2MTNcdTY3NEVcdTY4QThcdTZDRTVcdTc0MDZcdTc1RTJcdTdGNzlcdTg4Q0ZcdTg4RTFcdTkxQ0MiKworICAgICAgICAiXHU5NkUyXHU1MzNGXHU2RUJBXHU1NDFEXHU3MUQwXHU3NDk4XHU4NUZBXHU5NkEzXHU5QzU3XHU5RTlGXHU2Nzk3XHU2RENCIisKKyAgICAgICAgIlx1ODFFOFx1N0FDQlx1N0IyMFx1N0M5Mlx1NzJDMFx1NzA5OVx1OEI1OFx1NEVDMFx1ODMzNlx1NTIzQVx1NTIwN1x1NUVBNiIrCisgICAgICAgICJcdTYyRDNcdTdDRDZcdTVCODVcdTZEMUVcdTY2QjRcdThGM0JcdTg4NENcdTk2NERcdTg5OEJcdTVFRDNcdTUxNDBcdTU1QzAiKworICAgICAgICAiXHU1ODVBXHU2Njc0XHU1MURFXHU3MzJBXHU3NkNBXHU3OTNDXHU3OTVFXHU3OTY1XHU3OThGXHU5NzU2XHU3Q0JFXHU3RkJEIisKKyAgICAgICAgIlx1ODYxMlx1OEFGOFx1OTAzOFx1OTBGRFx1OThFRlx1OThGQ1x1OTkyOFx1OURCNFx1MDVEOVx1MDVCNFx1MDVGMlx1MDVCNyIrCisgICAgICAgICJcdTA1RTlcdTA1QzFcdTA1RTlcdTA1QzJcdTA1RTlcdTA1QkNcdTA1QzFcdTA1RTlcdTA1QkNcdTA1QzJcdTA1RDBcdTA1QjciKworICAgICAgICAiXHUwNUQwXHUwNUI4XHUwNUQwXHUwNUJDXHUwNUQxXHUwNUJDXHUwNUQyXHUwNUJDXHUwNUQzXHUwNUJDXHUwNUQ0XHUwNUJDIisKKyAgICAgICAgIlx1MDVENVx1MDVCQ1x1MDVENlx1MDVCQ1x1MDVEOFx1MDVCQ1x1MDVEOVx1MDVCQ1x1MDVEQVx1MDVCQ1x1MDVEQlx1MDVCQyIrCisgICAgICAgICJcdTA1RENcdTA1QkNcdTA1REVcdTA1QkNcdTA1RTBcdTA1QkNcdTA1RTFcdTA1QkNcdTA1RTNcdTA1QkNcdTA1RTRcdTA1QkMiKworICAgICAgICAiXHUwNUU2XHUwNUJDXHUwNUU3XHUwNUJDXHUwNUU4XHUwNUJDXHUwNUU5XHUwNUJDXHUwNUVBXHUwNUJDXHUwNUQ1XHUwNUI5IisKKyAgICAgICAgIlx1MDVEMVx1MDVCRlx1MDVEQlx1MDVCRlx1MDVFNFx1MDVCRiIKKyAgICA7CisKKyAgICBzdGF0aWMgZmluYWwgQ29tcGFjdEJ5dGVBcnJheSBjYW5vbkNsYXNzID0gbmV3IENvbXBhY3RCeXRlQXJyYXkoCisgICAgICAgICJcMDAwXHUwMjAwXHVBNUE1XDAwNlwwMDBcdTAwODBcMDAwXDAwMFx1MDEwMFwwMDBcdTAxODBcdTAyMDBcdTAyODBcdTAzMDAiKworICAgICAgICAiXDAwMFwwMDBcMDAwXHUwMzgwXHVBNUE1XDAwNFx1MDQwMFx1MDQ4MFx1MDUwMFx1MDQ4MFx1MDQ4MFx1MDU4MFx1MDYwMCIrCisgICAgICAgICJcdTA2ODBcdTA3MDBcdTA3ODBcdTA4MDBcdUE1QTVcMDE2XDAwMFx1MDg4MFwwMDBcdTA5MDBcdUE1QTVcMDE3XDAwMFx1MDk4MCIrCisgICAgICAgICJcdUE1QTVcMDM2XDAwMFx1MEEwMFx1MEE4MFx1QTVBNVx1MDE5NFwwMDBcdTBCMDBcdUE1QTVcMDA1XDAwMFx1MEI4MFwwMDAiKworICAgICAgICAiXDAwMFwwMDAiCisgICAgICAgICwKKyAgICAgICAgIlwwMDBcdTBDMDBcdUE1ODBcdTAwQTVcdTE1RTZcdUU4QTVcdTA0RENcdUU4RDhcdUE1MDVcdURDQ0FcdUNBQTVcdTA0REMiKworICAgICAgICAiXHVDQUNBXHVBNTBCXHVEQ0E1XHUwNTAxXHVBNTA0XHVEQ0E1XHUwOEU2XHVGMEU2XHVEQ0RDXHVEQ0U2XHVFNkU2XHVEQ0RDIisKKyAgICAgICAgIlx1QTUxMVx1MDBFQVx1RUFFOVx1QTUyMFx1MDBBNVx1MDRFNlx1QTU4QVx1MDBEQ1x1QTUwNFx1RTZEQ1x1RTZFNlx1RTZERSIrCisgICAgICAgICJcdURDQTVcdTA2RTZcdTAwQTVcdTA1RENcdUU2RTZcdURDRTZcdUU2REVcdUU0RTZcdTBBMEJcdTBDMERcdTBFMEZcdTEwMTEiKworICAgICAgICAiXHUxMjEzXDAyNFx1MTUxNlwwMjdcMDMwXHUxOTAwXHVFNkE1XHU4NjAwXHUxQjFDXHUxRDFFXHUxRjIwXHUyMTIyXHVFNkU2IisKKyAgICAgICAgIlx1RENBNVx1MUEwMFx1MjNBNVx1NjUwMFx1QTUwN1x1RTYwMFx1MDBBNVx1MDRFNlx1RENFNlwwMDBcdUU2RTZcdTAwREMiKworICAgICAgICAiXHVFNkU2XHVEQ0E1XHUyMzAwXHUyNEE1XHUxRTAwXHVFNkRDXHVFNkU2XHVEQ0U2XHVFNkRDXHVEQ0RDXHVFNkRDXHVEQ0U2IisKKyAgICAgICAgIlx1RENFNlx1RTZFNlx1RENFNlx1RENFNlx1RENFNlx1RENFNlx1RTZBNVx1NzEwMFx1MDdBNVx1MTAwMFx1MDkwMFwwMDAiKworICAgICAgICAiXHVFNkRDXHVFNkU2XHVBNTY3XDAwN1x1QTUxMFwwMTFcdUE1N0ZcMDExXHVBNTdGXDAxMVx1QTUwN1RcdTVCQTVcdTczMDAiKworICAgICAgICAiXHUwOUE1XHU2RDAwXHU2NzY3XHUwOUE1XHUwRDAwXHVBNTA0XHU2QkE1XHU2QzAwXHU3Njc2XHVBNTBFXHUwMEE1XHUwNDdBIisKKyAgICAgICAgIlx1QTU0Q1x1MDBEQ1x1RENBNVx1MUIwMFx1REMwMFx1REMwMFx1RDhBNVx1MzcwMFx1ODE4Mlx1MDA4NFx1QTUwNVx1MDBBNSIrCisgICAgICAgICJcdTA0ODJcMDAwXHU4MjAwXHVFNkU2XHUwOTAwXHVFNkU2XHVBNTNFXHUwMERDXHVBNTcwXDAwN1wwMTFcdUE1OThcMDExIisKKyAgICAgICAgIlx1QTU1Nlx1MDBFNFx1QTVBNlx1MDBFNlx1RTYwMVx1MDFBNVx1MDRFNlx1MDEwMVx1MDFFNlx1RTZBNVx1MDQwMFx1RTZBNSIrCisgICAgICAgICJcdTQ4MDBcdURBRTRcdUU4REVcdUUwRTBcdUE1NjlcMDEwXHUwOEE1XHU4MzAwXHUxQUE1XHU4MTAwXHVBNTA0XHVFNkE1IisKKyAgICAgICAgIlx1NUMwMCIKKyAgICAgICAgKTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvRGljdGlvbmFyeUJhc2VkQnJlYWtJdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9EaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGE5NTNkMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvRGljdGlvbmFyeUJhc2VkQnJlYWtJdGVyYXRvci5qYXZhCkBAIC0wLDAgKzEsNTc0IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L0F0dGljL0RpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3IuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMS8wMi8wNiAyMjozNzozMCAkIAorICogJFJldmlzaW9uOiAxLjcgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS50ZXh0OworCitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKK2ltcG9ydCBqYXZhLnV0aWwuU3RhY2s7CitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKK2ltcG9ydCBqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I7CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCitpbXBvcnQgamF2YS5pby4qOworCisvKioKKyAqIEEgc3ViY2xhc3Mgb2YgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciB0aGF0IGFkZHMgdGhlIGFiaWxpdHkgdG8gdXNlIGEgZGljdGlvbmFyeQorICogdG8gZnVydGhlciBzdWJkaXZpZGUgcmFuZ2VzIG9mIHRleHQgYmV5b25kIHdoYXQgaXMgcG9zc2libGUgdXNpbmcganVzdCB0aGUKKyAqIHN0YXRlLXRhYmxlLWJhc2VkIGFsZ29yaXRobS4gIFRoaXMgaXMgbmVjZXNzYXJ5LCBmb3IgZXhhbXBsZSwgdG8gaGFuZGxlCisgKiB3b3JkIGFuZCBsaW5lIGJyZWFraW5nIGluIFRoYWksIHdoaWNoIGRvZXNuJ3QgdXNlIHNwYWNlcyBiZXR3ZWVuIHdvcmRzLiAgVGhlCisgKiBzdGF0ZS10YWJsZS1iYXNlZCBhbGdvcml0aG0gdXNlZCBieSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGlzIHVzZWQgdG8gZGl2aWRlCisgKiB1cCB0ZXh0IGFzIGZhciBhcyBwb3NzaWJsZSwgYW5kIHRoZW4gY29udGlndW91cyByYW5nZXMgb2YgbGV0dGVycyBhcmUKKyAqIHJlcGVhdGVkbHkgY29tcGFyZWQgYWdhaW5zdCBhIGxpc3Qgb2Yga25vd24gd29yZHMgKGkuZS4sIHRoZSBkaWN0aW9uYXJ5KQorICogdG8gZGl2aWRlIHRoZW0gdXAgaW50byB3b3Jkcy4KKyAqCisgKiBEaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yIHVzZXMgdGhlIHNhbWUgcnVsZSBsYW5ndWFnZSBhcyBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLAorICogYnV0IGFkZHMgb25lIG1vcmUgc3BlY2lhbCBzdWJzdGl0dXRpb24gbmFtZTogX2RpY3Rpb25hcnlfLiAgVGhpcyBzdWJzdGl0dXRpb24KKyAqIG5hbWUgaXMgdXNlZCB0byBpZGVudGlmeSBjaGFyYWN0ZXJzIGluIHdvcmRzIGluIHRoZSBkaWN0aW9uYXJ5LiAgVGhlIGlkZWEgaXMgdGhhdAorICogaWYgdGhlIGl0ZXJhdG9yIHBhc3NlcyBvdmVyIGEgY2h1bmsgb2YgdGV4dCB0aGF0IGluY2x1ZGVzIHR3byBvciBtb3JlIGNoYXJhY3RlcnMKKyAqIGluIGEgcm93IHRoYXQgYXJlIGluY2x1ZGVkIGluIF9kaWN0aW9uYXJ5XywgaXQgZ29lcyBiYWNrIHRocm91Z2ggdGhhdCByYW5nZSBhbmQKKyAqIGRlcml2ZXMgYWRkaXRpb25hbCBicmVhayBwb3NpdGlvbnMgKGlmIHBvc3NpYmxlKSB1c2luZyB0aGUgZGljdGlvbmFyeS4KKyAqCisgKiBEaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yIGlzIGFsc28gY29uc3RydWN0ZWQgd2l0aCB0aGUgZmlsZW5hbWUgb2YgYSBkaWN0aW9uYXJ5CisgKiBmaWxlLiAgSXQgdXNlcyBDbGFzcy5nZXRSZXNvdXJjZSgpIHRvIGxvY2F0ZSB0aGUgZGljdGlvbmFyeSBmaWxlLiAgVGhlCisgKiBkaWN0aW9uYXJ5IGZpbGUgaXMgaW4gYSBzZXJpYWxpemVkIGJpbmFyeSBmb3JtYXQuICBXZSBoYXZlIGEgdmVyeSBwcmltaXRpdmUgKGFuZAorICogc2xvdykgQnVpbGREaWN0aW9uYXJ5RmlsZSB1dGlsaXR5IGZvciBjcmVhdGluZyBkaWN0aW9uYXJ5IGZpbGVzLCBidXQgYXJlbid0CisgKiBjdXJyZW50bHkgbWFraW5nIGl0IHB1YmxpYy4gIENvbnRhY3QgdXMgZm9yIGhlbHAuCisgKi8KK3B1YmxpYyBjbGFzcyBEaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yIGV4dGVuZHMgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciB7CisKKyAgICAvKioKKyAgICAgKiBhIGxpc3Qgb2Yga25vd24gd29yZHMgdGhhdCBpcyB1c2VkIHRvIGRpdmlkZSB1cCBjb250aWd1b3VzIHJhbmdlcyBvZiBsZXR0ZXJzLAorICAgICAqIHN0b3JlZCBpbiBhIGNvbXByZXNzZWQsIGluZGV4ZWQsIGZvcm1hdCB0aGF0IG9mZmVycyBmYXN0IGFjY2VzcworICAgICAqLworICAgIHByaXZhdGUgQnJlYWtEaWN0aW9uYXJ5IGRpY3Rpb25hcnk7CisKKyAgICAvKioKKyAgICAgKiBhIGxpc3Qgb2YgZmxhZ3MgaW5kaWNhdGluZyB3aGljaCBjaGFyYWN0ZXIgY2F0ZWdvcmllcyBhcmUgY29udGFpbmVkIGluCisgICAgICogdGhlIGRpY3Rpb25hcnkgZmlsZSAodGhpcyBpcyB1c2VkIHRvIGRldGVybWluZSB3aGljaCByYW5nZXMgb2YgY2hhcmFjdGVycworICAgICAqIHRvIGFwcGx5IHRoZSBkaWN0aW9uYXJ5IHRvKQorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbltdIGNhdGVnb3J5RmxhZ3M7CisKKyAgICAvKioKKyAgICAgKiBhIHRlbXBvcmFyeSBoaWRpbmcgcGxhY2UgZm9yIHRoZSBudW1iZXIgb2YgZGljdGlvbmFyeSBjaGFyYWN0ZXJzIGluIHRoZQorICAgICAqIGxhc3QgcmFuZ2UgcGFzc2VkIG92ZXIgYnkgbmV4dCgpCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZGljdGlvbmFyeUNoYXJDb3VudDsKKworICAgIC8qKgorICAgICAqIHdoZW4gYSByYW5nZSBvZiBjaGFyYWN0ZXJzIGlzIGRpdmlkZWQgdXAgdXNpbmcgdGhlIGRpY3Rpb25hcnksIHRoZSBicmVhaworICAgICAqIHBvc2l0aW9ucyB0aGF0IGFyZSBkaXNjb3ZlcmVkIGFyZSBzdG9yZWQgaGVyZSwgcHJldmVudGluZyB1cyBmcm9tIGhhdmluZworICAgICAqIHRvIHVzZSBlaXRoZXIgdGhlIGRpY3Rpb25hcnkgb3IgdGhlIHN0YXRlIHRhYmxlIGFnYWluIHVudGlsIHRoZSBpdGVyYXRvcgorICAgICAqIGxlYXZlcyB0aGlzIHJhbmdlIG9mIHRleHQKKyAgICAgKi8KKyAgICBwcml2YXRlIGludFtdIGNhY2hlZEJyZWFrUG9zaXRpb25zOworCisgICAgLyoqCisgICAgICogaWYgY2FjaGVkQnJlYWtQb3NpdGlvbnMgaXMgbm90IG51bGwsIHRoaXMgaW5kaWNhdGVzIHdoaWNoIGl0ZW0gaW4gdGhlCisgICAgICogY2FjaGUgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uIHJlZmVycyB0bworICAgICAqLworICAgIHByaXZhdGUgaW50IHBvc2l0aW9uSW5DYWNoZTsKKworICAgIC8qKgorICAgICAqIFNwZWNpYWwgdmFyaWFibGUgbmFtZSBmb3IgY2hhcmFjdGVycyBpbiB3b3JkcyBpbiBkaWN0aW9uYXJ5CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIERJQ1RJT05BUllfVkFSID0gIl9kaWN0aW9uYXJ5XyI7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgRGljdGlvbmFyeUJhc2VkQnJlYWtJdGVyYXRvci4KKyAgICAgKiBAcGFyYW0gZGVzY3JpcHRpb24gU2FtZSBhcyB0aGUgZGVzY3JpcHRpb24gcGFyYW1ldGVyIG9uIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IsCisgICAgICogZXhjZXB0IGZvciB0aGUgc3BlY2lhbCBtZWFuaW5nIG9mIERJQ1RJT05BUllfVkFSLiAgVGhpcyBwYXJhbWV0ZXIgaXMganVzdAorICAgICAqIHBhc3NlZCB0aHJvdWdoIHRvIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IncyBjb25zdHJ1Y3Rvci4KKyAgICAgKiBAcGFyYW0gZGljdGlvbmFyeUZpbGVuYW1lIFRoZSBmaWxlbmFtZSBvZiB0aGUgZGljdGlvbmFyeSBmaWxlIHRvIHVzZQorICAgICAqLworICAgIHB1YmxpYyBEaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yKFN0cmluZyBkZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dFN0cmVhbSBkaWN0aW9uYXJ5U3RyZWFtKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBzdXBlcihkZXNjcmlwdGlvbik7CisgICAgICAgIGRpY3Rpb25hcnkgPSBuZXcgQnJlYWtEaWN0aW9uYXJ5KGRpY3Rpb25hcnlTdHJlYW0pOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBCdWlsZGVyIHRoYXQgaXMgY3VzdG9taXplZCB0byBidWlsZCBhIERpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3IuCisgICAgICogVGhpcyBpcyB0aGUgc2FtZSBhcyBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLkJ1aWxkZXIsIGV4Y2VwdCBmb3IgdGhlIGV4dHJhIGNvZGUKKyAgICAgKiB0byBoYW5kbGUgdGhlIERJQ1RJT05BUllfVkFSIHRhZy4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5CdWlsZGVyIG1ha2VCdWlsZGVyKCkgeworICAgICAgICByZXR1cm4gbmV3IEJ1aWxkZXIoKTsKKyAgICB9CisKK3B1YmxpYyB2b2lkIHdyaXRlVGFibGVzVG9GaWxlKEZpbGVPdXRwdXRTdHJlYW0gZmlsZSwgYm9vbGVhbiBsaXR0bGVFbmRpYW4pIHRocm93cyBJT0V4Y2VwdGlvbiB7CitzdXBlci53cml0ZVRhYmxlc1RvRmlsZShmaWxlLCBsaXR0bGVFbmRpYW4pOworCitEYXRhT3V0cHV0U3RyZWFtIG91dCA9IG5ldyBEYXRhT3V0cHV0U3RyZWFtKGZpbGUpOworCisvLyAtLS0gd3JpdGUgaW5kZXggdG8gZmllbGRzICh0aGVyZSdzIG9ubHkgb25lIGVudHJ5LCBidXQgdGhpcyBhbGxvd3Mgc3ViY2xhc3Npbmcgb2YgdGhpcyBjbGFzcykKK3dyaXRlU3dhcHBlZEludCgoc2hvcnQpOCwgb3V0LCBsaXR0bGVFbmRpYW4pOword3JpdGVTd2FwcGVkSW50KChzaG9ydCkoY2F0ZWdvcnlGbGFncy5sZW5ndGggKyAzICYgMHgwZiksIG91dCwgbGl0dGxlRW5kaWFuKTsKKworZm9yIChpbnQgaSA9IDA7IGkgPCBjYXRlZ29yeUZsYWdzLmxlbmd0aDsgaSsrKQorICAgIG91dC53cml0ZUJvb2xlYW4oY2F0ZWdvcnlGbGFnc1tpXSk7Citzd2l0Y2ggKGNhdGVnb3J5RmxhZ3MubGVuZ3RoICUgNCkgeworICAgIGNhc2UgMTogb3V0LndyaXRlKDApOworICAgIGNhc2UgMjogb3V0LndyaXRlKDApOworICAgIGNhc2UgMzogb3V0LndyaXRlKDApOworICAgIGRlZmF1bHQ6IGJyZWFrOworfQorfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHNldFRleHQoQ2hhcmFjdGVySXRlcmF0b3IgbmV3VGV4dCkgeworICAgICAgICBzdXBlci5zZXRUZXh0KG5ld1RleHQpOworICAgICAgICBjYWNoZWRCcmVha1Bvc2l0aW9ucyA9IG51bGw7CisgICAgICAgIGRpY3Rpb25hcnlDaGFyQ291bnQgPSAwOworICAgICAgICBwb3NpdGlvbkluQ2FjaGUgPSAwOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRleHQuCisgICAgICogKGkuZS4sIHRoZSBDaGFyYWN0ZXJJdGVyYXRvcidzIHN0YXJ0aW5nIG9mZnNldCkuCisgICAgICogQHJldHVybiBUaGUgb2Zmc2V0IG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRleHQuCisgICAgICovCisgICAgcHVibGljIGludCBmaXJzdCgpIHsKKyAgICAgICAgY2FjaGVkQnJlYWtQb3NpdGlvbnMgPSBudWxsOworICAgICAgICBkaWN0aW9uYXJ5Q2hhckNvdW50ID0gMDsKKyAgICAgICAgcG9zaXRpb25JbkNhY2hlID0gMDsKKyAgICAgICAgcmV0dXJuIHN1cGVyLmZpcnN0KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gdG8gdGhlIGVuZCBvZiB0aGUgdGV4dC4KKyAgICAgKiAoaS5lLiwgdGhlIENoYXJhY3Rlckl0ZXJhdG9yJ3MgZW5kaW5nIG9mZnNldCkuCisgICAgICogQHJldHVybiBUaGUgdGV4dCdzIHBhc3QtdGhlLWVuZCBvZmZzZXQuCisgICAgICovCisgICAgcHVibGljIGludCBsYXN0KCkgeworICAgICAgICBjYWNoZWRCcmVha1Bvc2l0aW9ucyA9IG51bGw7CisgICAgICAgIGRpY3Rpb25hcnlDaGFyQ291bnQgPSAwOworICAgICAgICBwb3NpdGlvbkluQ2FjaGUgPSAwOworICAgICAgICByZXR1cm4gc3VwZXIubGFzdCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFkdmFuY2VzIHRoZSBpdGVyYXRvciBvbmUgc3RlcCBiYWNrd2FyZHMuCisgICAgICogQHJldHVybiBUaGUgcG9zaXRpb24gb2YgdGhlIGxhc3QgYm91bmRhcnkgcG9zaXRpb24gYmVmb3JlIHRoZQorICAgICAqIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uCisgICAgICovCisgICAgcHVibGljIGludCBwcmV2aW91cygpIHsKKyAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgdGV4dCA9IGdldFRleHQoKTsKKworICAgICAgICAvLyBpZiB3ZSBoYXZlIGNhY2hlZCBicmVhayBwb3NpdGlvbnMgYW5kIHdlJ3JlIHN0aWxsIGluIHRoZSByYW5nZQorICAgICAgICAvLyBjb3ZlcmVkIGJ5IHRoZW0sIGp1c3QgbW92ZSBvbmUgc3RlcCBiYWNrd2FyZCBpbiB0aGUgY2FjaGUKKyAgICAgICAgaWYgKGNhY2hlZEJyZWFrUG9zaXRpb25zICE9IG51bGwgJiYgcG9zaXRpb25JbkNhY2hlID4gMCkgeworICAgICAgICAgICAgLS1wb3NpdGlvbkluQ2FjaGU7CisgICAgICAgICAgICB0ZXh0LnNldEluZGV4KGNhY2hlZEJyZWFrUG9zaXRpb25zW3Bvc2l0aW9uSW5DYWNoZV0pOworICAgICAgICAgICAgcmV0dXJuIGNhY2hlZEJyZWFrUG9zaXRpb25zW3Bvc2l0aW9uSW5DYWNoZV07CisgICAgICAgIH0KKworICAgICAgICAvLyBvdGhlcndpc2UsIGR1bXAgdGhlIGNhY2hlIGFuZCB1c2UgdGhlIGluaGVyaXRlZCBwcmV2aW91cygpIG1ldGhvZCB0byBtb3ZlCisgICAgICAgIC8vIGJhY2t3YXJkLiAgVGhpcyBtYXkgZmlsbCB1cCB0aGUgY2FjaGUgd2l0aCBuZXcgYnJlYWsgcG9zaXRpb25zLCBpbiB3aGljaAorICAgICAgICAvLyBjYXNlIHdlIGhhdmUgdG8gbWFyayBvdXIgcG9zaXRpb24gaW4gdGhlIGNhY2hlCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY2FjaGVkQnJlYWtQb3NpdGlvbnMgPSBudWxsOworICAgICAgICAgICAgaW50IHJlc3VsdCA9IHN1cGVyLnByZXZpb3VzKCk7CisgICAgICAgICAgICBpZiAoY2FjaGVkQnJlYWtQb3NpdGlvbnMgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICBwb3NpdGlvbkluQ2FjaGUgPSBjYWNoZWRCcmVha1Bvc2l0aW9ucy5sZW5ndGggLSAyOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uIHRvIHRoZSBsYXN0IGJvdW5kYXJ5IHBvc2l0aW9uCisgICAgICogYmVmb3JlIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uCisgICAgICogQHBhcmFtIG9mZnNldCBUaGUgcG9zaXRpb24gdG8gYmVnaW4gc2VhcmNoaW5nIGZyb20KKyAgICAgKiBAcmV0dXJuIFRoZSBwb3NpdGlvbiBvZiB0aGUgbGFzdCBib3VuZGFyeSBiZWZvcmUgIm9mZnNldCIKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHByZWNlZGluZyhpbnQgb2Zmc2V0KSB7CisgICAgICAgIENoYXJhY3Rlckl0ZXJhdG9yIHRleHQgPSBnZXRUZXh0KCk7CisgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdGV4dCk7CisKKyAgICAgICAgLy8gaWYgd2UgaGF2ZSBubyBjYWNoZWQgYnJlYWsgcG9zaXRpb25zLCBvciAib2Zmc2V0IiBpcyBvdXRzaWRlIHRoZQorICAgICAgICAvLyByYW5nZSBjb3ZlcmVkIGJ5IHRoZSBjYWNoZSwgd2UgY2FuIGp1c3QgY2FsbCB0aGUgaW5oZXJpdGVkIHJvdXRpbmUKKyAgICAgICAgLy8gKHdoaWNoIHdpbGwgZXZlbnR1YWxseSBjYWxsIG90aGVyIHJvdXRpbmVzIGluIHRoaXMgY2xhc3MgdGhhdCBtYXkKKyAgICAgICAgLy8gcmVmcmVzaCB0aGUgY2FjaGUpCisgICAgICAgIGlmIChjYWNoZWRCcmVha1Bvc2l0aW9ucyA9PSBudWxsIHx8IG9mZnNldCA8PSBjYWNoZWRCcmVha1Bvc2l0aW9uc1swXSB8fAorICAgICAgICAgICAgICAgIG9mZnNldCA+IGNhY2hlZEJyZWFrUG9zaXRpb25zW2NhY2hlZEJyZWFrUG9zaXRpb25zLmxlbmd0aCAtIDFdKSB7CisgICAgICAgICAgICBjYWNoZWRCcmVha1Bvc2l0aW9ucyA9IG51bGw7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIucHJlY2VkaW5nKG9mZnNldCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBvbiB0aGUgb3RoZXIgaGFuZCwgaWYgIm9mZnNldCIgaXMgd2l0aGluIHRoZSByYW5nZSBjb3ZlcmVkIGJ5IHRoZSBjYWNoZSwKKyAgICAgICAgLy8gdGhlbiBhbGwgd2UgaGF2ZSB0byBkbyBpcyBzZWFyY2ggdGhlIGNhY2hlIGZvciB0aGUgbGFzdCBicmVhayBwb3NpdGlvbgorICAgICAgICAvLyBiZWZvcmUgIm9mZnNldCIKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwb3NpdGlvbkluQ2FjaGUgPSAwOworICAgICAgICAgICAgd2hpbGUgKHBvc2l0aW9uSW5DYWNoZSA8IGNhY2hlZEJyZWFrUG9zaXRpb25zLmxlbmd0aAorICAgICAgICAgICAgICAgICAgICYmIG9mZnNldCA+IGNhY2hlZEJyZWFrUG9zaXRpb25zW3Bvc2l0aW9uSW5DYWNoZV0pCisgICAgICAgICAgICAgICAgKytwb3NpdGlvbkluQ2FjaGU7CisgICAgICAgICAgICAtLXBvc2l0aW9uSW5DYWNoZTsKKyAgICAgICAgICAgIHRleHQuc2V0SW5kZXgoY2FjaGVkQnJlYWtQb3NpdGlvbnNbcG9zaXRpb25JbkNhY2hlXSk7CisgICAgICAgICAgICByZXR1cm4gdGV4dC5nZXRJbmRleCgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gdG8gdGhlIGZpcnN0IGJvdW5kYXJ5IHBvc2l0aW9uIGFmdGVyCisgICAgICogdGhlIHNwZWNpZmllZCBwb3NpdGlvbi4KKyAgICAgKiBAcGFyYW0gb2Zmc2V0IFRoZSBwb3NpdGlvbiB0byBiZWdpbiBzZWFyY2hpbmcgZm9yd2FyZCBmcm9tCisgICAgICogQHJldHVybiBUaGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGJvdW5kYXJ5IGFmdGVyICJvZmZzZXQiCisgICAgICovCisgICAgcHVibGljIGludCBmb2xsb3dpbmcoaW50IG9mZnNldCkgeworICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciB0ZXh0ID0gZ2V0VGV4dCgpOworICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHRleHQpOworCisgICAgICAgIC8vIGlmIHdlIGhhdmUgbm8gY2FjaGVkIGJyZWFrIHBvc2l0aW9ucywgb3IgaWYgIm9mZnNldCIgaXMgb3V0c2lkZSB0aGUKKyAgICAgICAgLy8gcmFuZ2UgY292ZXJlZCBieSB0aGUgY2FjaGUsIHRoZW4gZHVtcCB0aGUgY2FjaGUgYW5kIGNhbGwgb3VyCisgICAgICAgIC8vIGluaGVyaXRlZCBmb2xsb3dpbmcoKSBtZXRob2QuICBUaGlzIHdpbGwgY2FsbCBvdGhlciBtZXRob2RzIGluIHRoaXMKKyAgICAgICAgLy8gY2xhc3MgdGhhdCBtYXkgcmVmcmVzaCB0aGUgY2FjaGUuCisgICAgICAgIGlmIChjYWNoZWRCcmVha1Bvc2l0aW9ucyA9PSBudWxsIHx8IG9mZnNldCA8IGNhY2hlZEJyZWFrUG9zaXRpb25zWzBdIHx8CisgICAgICAgICAgICAgICAgb2Zmc2V0ID49IGNhY2hlZEJyZWFrUG9zaXRpb25zW2NhY2hlZEJyZWFrUG9zaXRpb25zLmxlbmd0aCAtIDFdKSB7CisgICAgICAgICAgICBjYWNoZWRCcmVha1Bvc2l0aW9ucyA9IG51bGw7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuZm9sbG93aW5nKG9mZnNldCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBvbiB0aGUgb3RoZXIgaGFuZCwgaWYgIm9mZnNldCIgaXMgd2l0aGluIHRoZSByYW5nZSBjb3ZlcmVkIGJ5IHRoZQorICAgICAgICAvLyBjYWNoZSwgdGhlbiBqdXN0IHNlYXJjaCB0aGUgY2FjaGUgZm9yIHRoZSBmaXJzdCBicmVhayBwb3NpdGlvbgorICAgICAgICAvLyBhZnRlciAib2Zmc2V0IgorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHBvc2l0aW9uSW5DYWNoZSA9IDA7CisgICAgICAgICAgICB3aGlsZSAocG9zaXRpb25JbkNhY2hlIDwgY2FjaGVkQnJlYWtQb3NpdGlvbnMubGVuZ3RoCisgICAgICAgICAgICAgICAgICAgJiYgb2Zmc2V0ID49IGNhY2hlZEJyZWFrUG9zaXRpb25zW3Bvc2l0aW9uSW5DYWNoZV0pCisgICAgICAgICAgICAgICAgKytwb3NpdGlvbkluQ2FjaGU7CisgICAgICAgICAgICB0ZXh0LnNldEluZGV4KGNhY2hlZEJyZWFrUG9zaXRpb25zW3Bvc2l0aW9uSW5DYWNoZV0pOworICAgICAgICAgICAgcmV0dXJuIHRleHQuZ2V0SW5kZXgoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9uIGZvciBuZXh0KCkuCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVOZXh0KCkgeworICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciB0ZXh0ID0gZ2V0VGV4dCgpOworCisgICAgICAgIC8vIGlmIHRoZXJlIGFyZSBubyBjYWNoZWQgYnJlYWsgcG9zaXRpb25zLCBvciBpZiB3ZSd2ZSBqdXN0IG1vdmVkCisgICAgICAgIC8vIG9mZiB0aGUgZW5kIG9mIHRoZSByYW5nZSBjb3ZlcmVkIGJ5IHRoZSBjYWNoZSwgd2UgaGF2ZSB0byBkdW1wCisgICAgICAgIC8vIGFuZCBwb3NzaWJseSByZWdlbmVyYXRlIHRoZSBjYWNoZQorICAgICAgICBpZiAoY2FjaGVkQnJlYWtQb3NpdGlvbnMgPT0gbnVsbCB8fCBwb3NpdGlvbkluQ2FjaGUgPT0gY2FjaGVkQnJlYWtQb3NpdGlvbnMubGVuZ3RoIC0gMSkgeworCisgICAgICAgICAgICAvLyBzdGFydCBieSB1c2luZyB0aGUgaW5oZXJpdGVkIGhhbmRsZU5leHQoKSB0byBmaW5kIGEgdGVudGF0aXZlIHJldHVybgorICAgICAgICAgICAgLy8gdmFsdWUuICAgZGljdGlvbmFyeUNoYXJDb3VudCB0ZWxscyB1cyBob3cgbWFueSBkaWN0aW9uYXJ5IGNoYXJhY3RlcnMKKyAgICAgICAgICAgIC8vIHdlIHBhc3NlZCBvdmVyIG9uIG91ciB3YXkgdG8gdGhlIHRlbnRhdGl2ZSByZXR1cm4gdmFsdWUKKyAgICAgICAgICAgIGludCBzdGFydFBvcyA9IHRleHQuZ2V0SW5kZXgoKTsKKyAgICAgICAgICAgIGRpY3Rpb25hcnlDaGFyQ291bnQgPSAwOworICAgICAgICAgICAgaW50IHJlc3VsdCA9IHN1cGVyLmhhbmRsZU5leHQoKTsKKworICAgICAgICAgICAgLy8gaWYgd2UgcGFzc2VkIG92ZXIgbW9yZSB0aGFuIG9uZSBkaWN0aW9uYXJ5IGNoYXJhY3RlciwgdGhlbiB3ZSB1c2UKKyAgICAgICAgICAgIC8vIGRpdmlkZVVwRGljdGlvbmFyeVJhbmdlKCkgdG8gcmVnZW5lcmF0ZSB0aGUgY2FjaGVkIGJyZWFrIHBvc2l0aW9ucworICAgICAgICAgICAgLy8gZm9yIHRoZSBuZXcgcmFuZ2UKKyAgICAgICAgICAgIGlmIChkaWN0aW9uYXJ5Q2hhckNvdW50ID4gMSAmJiByZXN1bHQgLSBzdGFydFBvcyA+IDEpIHsKKyAgICAgICAgICAgICAgICBkaXZpZGVVcERpY3Rpb25hcnlSYW5nZShzdGFydFBvcywgcmVzdWx0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gb3RoZXJ3aXNlLCB0aGUgdmFsdWUgd2UgZ290IGJhY2sgZnJvbSB0aGUgaW5oZXJpdGVkIGZ1Y3Rpb24KKyAgICAgICAgICAgIC8vIGlzIG91ciByZXR1cm4gdmFsdWUsIGFuZCB3ZSBjYW4gZHVtcCB0aGUgY2FjaGUKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGNhY2hlZEJyZWFrUG9zaXRpb25zID0gbnVsbDsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gaWYgdGhlIGNhY2hlIG9mIGJyZWFrIHBvc2l0aW9ucyBoYXMgYmVlbiByZWdlbmVyYXRlZCAob3IgZXhpc3RlZCBhbGwKKyAgICAgICAgLy8gYWxvbmcpLCB0aGVuIGp1c3QgYWR2YW5jZSB0byB0aGUgbmV4dCBicmVhayBwb3NpdGlvbiBpbiB0aGUgY2FjaGUKKyAgICAgICAgLy8gYW5kIHJldHVybiBpdAorICAgICAgICBpZiAoY2FjaGVkQnJlYWtQb3NpdGlvbnMgIT0gbnVsbCkgeworICAgICAgICAgICAgKytwb3NpdGlvbkluQ2FjaGU7CisgICAgICAgICAgICB0ZXh0LnNldEluZGV4KGNhY2hlZEJyZWFrUG9zaXRpb25zW3Bvc2l0aW9uSW5DYWNoZV0pOworICAgICAgICAgICAgcmV0dXJuIGNhY2hlZEJyZWFrUG9zaXRpb25zW3Bvc2l0aW9uSW5DYWNoZV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC05OTk5OyAgIC8vIFNIT1VMRCBORVZFUiBHRVQgSEVSRSEKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBMb29rcyB1cCBhIGNoYXJhY3RlciBjYXRlZ29yeSBmb3IgYSBjaGFyYWN0ZXIuCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBsb29rdXBDYXRlZ29yeShjaGFyIGMpIHsKKyAgICAgICAgLy8gdGhpcyBvdmVycmlkZSBvZiBsb29rdXBDYXRlZ29yeSgpIGV4aXN0cyBvbmx5IHRvIGtlZXAgdHJhY2sgb2Ygd2hldGhlciB3ZSd2ZQorICAgICAgICAvLyBwYXNzZWQgb3ZlciBhbnkgZGljdGlvbmFyeSBjaGFyYWN0ZXJzLiAgSXQgY2FsbHMgdGhlIGluaGVyaXRlZCBsb29rdXBDYXRlZ29yeSgpCisgICAgICAgIC8vIHRvIGRvIHRoZSByZWFsIHdvcmssIGFuZCB0aGVuIGNoZWNrcyB3aGV0aGVyIGl0cyByZXR1cm4gdmFsdWUgaXMgb25lIG9mIHRoZQorICAgICAgICAvLyBjYXRlZ29yaWVzIHJlcHJlc2VudGVkIGluIHRoZSBkaWN0aW9uYXJ5LiAgSWYgaXQgaXMsIGJ1bXAgdGhlIGRpY3Rpb25hcnktCisgICAgICAgIC8vIGNoYXJhY3RlciBjb3VudC4KKyAgICAgICAgaW50IHJlc3VsdCA9IHN1cGVyLmxvb2t1cENhdGVnb3J5KGMpOworICAgICAgICBpZiAocmVzdWx0ICE9IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuSUdOT1JFICYmIGNhdGVnb3J5RmxhZ3NbcmVzdWx0XSkgeworICAgICAgICAgICAgKytkaWN0aW9uYXJ5Q2hhckNvdW50OworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBpcyB0aGUgZnVuY3Rpb24gdGhhdCBhY3R1YWxseSBpbXBsZW1lbnRzIHRoZSBkaWN0aW9uYXJ5LWJhc2VkCisgICAgICogYWxnb3JpdGhtLiAgR2l2ZW4gdGhlIGVuZHBvaW50cyBvZiBhIHJhbmdlIG9mIHRleHQsIGl0IHVzZXMgdGhlCisgICAgICogZGljdGlvbmFyeSB0byBkZXRlcm1pbmUgdGhlIHBvc2l0aW9ucyBvZiBhbnkgYm91bmRhcmllcyBpbiB0aGlzCisgICAgICogcmFuZ2UuICBJdCBzdG9yZXMgYWxsIHRoZSBib3VuZGFyeSBwb3NpdGlvbnMgaXQgZGlzY292ZXJzIGluCisgICAgICogY2FjaGVkQnJlYWtQb3NpdGlvbnMgc28gdGhhdCB3ZSBvbmx5IGhhdmUgdG8gZG8gdGhpcyB3b3JrIG9uY2UKKyAgICAgKiBmb3IgZWFjaCB0aW1lIHdlIGVudGVyIHRoZSByYW5nZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgZGl2aWRlVXBEaWN0aW9uYXJ5UmFuZ2UoaW50IHN0YXJ0UG9zLCBpbnQgZW5kUG9zKSB7CisgICAgICAgIENoYXJhY3Rlckl0ZXJhdG9yIHRleHQgPSBnZXRUZXh0KCk7CisKKyAgICAgICAgLy8gdGhlIHJhbmdlIHdlJ3JlIGRpdmlkaW5nIG1heSBiZWdpbiBvciBlbmQgd2l0aCBub24tZGljdGlvbmFyeSBjaGFyYWN0ZXJzCisgICAgICAgIC8vIChpLmUuLCBmb3IgbGluZSBicmVha2luZywgd2UgbWF5IGhhdmUgbGVhZGluZyBvciB0cmFpbGluZyBwdW5jdHVhdGlvbgorICAgICAgICAvLyB0aGF0IG5lZWRzIHRvIGJlIGtlcHQgd2l0aCB0aGUgd29yZCkuICBTZWVrIGZyb20gdGhlIGJlZ2lubmluZyBvZiB0aGUKKyAgICAgICAgLy8gcmFuZ2UgdG8gdGhlIGZpcnN0IGRpY3Rpb25hcnkgY2hhcmFjdGVyCisgICAgICAgIHRleHQuc2V0SW5kZXgoc3RhcnRQb3MpOworICAgICAgICBjaGFyIGMgPSB0ZXh0LmN1cnJlbnQoKTsKKyAgICAgICAgaW50IGNhdGVnb3J5ID0gbG9va3VwQ2F0ZWdvcnkoYyk7CisgICAgICAgIHdoaWxlIChjYXRlZ29yeSA9PSBJR05PUkUgfHwgIWNhdGVnb3J5RmxhZ3NbY2F0ZWdvcnldKSB7CisgICAgICAgICAgICBjID0gdGV4dC5uZXh0KCk7CisgICAgICAgICAgICBjYXRlZ29yeSA9IGxvb2t1cENhdGVnb3J5KGMpOworICAgICAgICB9CisvL1N5c3RlbS5vdXQucHJpbnRsbigiXG5EaXZpZGluZyB1cCByYW5nZSBmcm9tICIgKyAodGV4dC5nZXRJbmRleCgpICsgMSkgKyAiIHRvICIgKyBlbmRQb3MpOworCisgICAgICAgIC8vIGluaXRpYWxpemUuICBXZSBtYWludGFpbiB0d28gc3RhY2tzOiBjdXJyZW50QnJlYWtQb3NpdGlvbnMgY29udGFpbnMKKyAgICAgICAgLy8gdGhlIGxpc3Qgb2YgYnJlYWsgcG9zaXRpb25zIHRoYXQgd2lsbCBiZSByZXR1cm5lZCBpZiB3ZSBzdWNjZXNzZnVsbHkKKyAgICAgICAgLy8gZmluaXNoIHRyYXZlcnNpbmcgdGhlIHdob2xlIHJhbmdlIG5vdy4gIHBvc3NpYmxlQnJlYWtQb3NpdGlvbnMgbGlzdHMKKyAgICAgICAgLy8gYWxsIG90aGVyIHBvc3NpYmxlIHdvcmQgZW5kcyB3ZSd2ZSBwYXNzZWQgYWxvbmcgdGhlIHdheS4gIChXaGVuZXZlcgorICAgICAgICAvLyB3ZSByZWFjaCBhbiBlcnJvciBbYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIHRoYXQgY2FuJ3QgYmVnaW4gYW55IHdvcmQKKyAgICAgICAgLy8gaW4gdGhlIGRpY3Rpb25hcnldLCB3ZSBiYWNrIHVwLCBwb3NzaWJseSBkZWxldGUgc29tZSBicmVha3MgZnJvbQorICAgICAgICAvLyBjdXJyZW50QnJlYWtQb3NpdGlvbnMsIG1vdmUgYSBicmVhayBmcm9tIHBvc3NpYmxlQnJlYWtQb3NpdGlvbnMKKyAgICAgICAgLy8gdG8gY3VycmVudEJyZWFrUG9zaXRpb25zLCBhbmQgc3RhcnQgb3ZlciBmcm9tIHRoZXJlLiAgVGhpcyBwcm9jZXNzCisgICAgICAgIC8vIGNvbnRpbnVlcyBpbiB0aGlzIHdheSB1bnRpbCB3ZSBlaXRoZXIgc3VjY2Vzc2Z1bGx5IG1ha2UgaXQgYWxsIHRoZSB3YXkKKyAgICAgICAgLy8gYWNyb3NzIHRoZSByYW5nZSwgb3IgZXhoYXVzdCBhbGwgb2Ygb3VyIGNvbWJpbmF0aW9ucyBvZiBicmVhaworICAgICAgICAvLyBwb3NpdGlvbnMuKQorICAgICAgICBTdGFjayBjdXJyZW50QnJlYWtQb3NpdGlvbnMgPSBuZXcgU3RhY2soKTsKKyAgICAgICAgU3RhY2sgcG9zc2libGVCcmVha1Bvc2l0aW9ucyA9IG5ldyBTdGFjaygpOworICAgICAgICBWZWN0b3Igd3JvbmdCcmVha1Bvc2l0aW9ucyA9IG5ldyBWZWN0b3IoKTsKKworICAgICAgICAvLyB0aGUgZGljdGlvbmFyeSBpcyBpbXBsZW1lbnRlZCBhcyBhIHRyaWUsIHdoaWNoIGlzIHRyZWF0ZWQgYXMgYSBzdGF0ZQorICAgICAgICAvLyBtYWNoaW5lLiAgLTEgcmVwcmVzZW50cyB0aGUgZW5kIG9mIGEgbGVnYWwgd29yZC4gIEV2ZXJ5IHdvcmQgaW4gdGhlCisgICAgICAgIC8vIGRpY3Rpb25hcnkgaXMgcmVwcmVzZW50ZWQgYnkgYSBwYXRoIGZyb20gdGhlIHJvb3Qgbm9kZSB0byAtMS4gIEEgcGF0aAorICAgICAgICAvLyB0aGF0IGVuZHMgaW4gc3RhdGUgMCBpcyBhbiBpbGxlZ2FsIGNvbWJpbmF0aW9uIG9mIGNoYXJhY3RlcnMuCisgICAgICAgIGludCBzdGF0ZSA9IDA7CisKKyAgICAgICAgLy8gdGhlc2UgdHdvIHZhcmlhYmxlcyBhcmUgdXNlZCBmb3IgZXJyb3IgaGFuZGxpbmcuICBXZSBrZWVwIHRyYWNrIG9mIHRoZQorICAgICAgICAvLyBmYXJ0aGVzdCB3ZSd2ZSBnb3R0ZW4gdGhyb3VnaCB0aGUgcmFuZ2UgYmVpbmcgZGl2aWRlZCwgYW5kIHRoZSBjb21iaW5hdGlvbgorICAgICAgICAvLyBvZiBicmVha3MgdGhhdCBnb3QgdXMgdGhhdCBmYXIuICBJZiB3ZSB1c2UgdXAgYWxsIHBvc3NpYmxlIGJyZWFrCisgICAgICAgIC8vIGNvbWJpbmF0aW9ucywgdGhlIHRleHQgY29udGFpbnMgYW4gZXJyb3Igb3IgYSB3b3JkIHRoYXQncyBub3QgaW4gdGhlCisgICAgICAgIC8vIGRpY3Rpb25hcnkuICBJbiB0aGlzIGNhc2UsIHdlICJibGVzcyIgdGhlIGJyZWFrIHBvc2l0aW9ucyB0aGF0IGdvdCB1cyB0aGUKKyAgICAgICAgLy8gZmFydGhlc3QgYXMgcmVhbCBicmVhayBwb3NpdGlvbnMsIGFuZCB0aGVuIHN0YXJ0IG92ZXIgZnJvbSBzY3JhdGNoIHdpdGgKKyAgICAgICAgLy8gdGhlIGNoYXJhY3RlciB3aGVyZSB0aGUgZXJyb3Igb2NjdXJyZWQuCisgICAgICAgIGludCBmYXJ0aGVzdEVuZFBvaW50ID0gdGV4dC5nZXRJbmRleCgpOworICAgICAgICBTdGFjayBiZXN0QnJlYWtQb3NpdGlvbnMgPSBudWxsOworCisgICAgICAgIC8vIGluaXRpYWxpemUgKHdlIGFsd2F5cyBleGl0IHRoZSBsb29wIHdpdGggYSBicmVhayBzdGF0ZW1lbnQpCisgICAgICAgIGMgPSB0ZXh0LmN1cnJlbnQoKTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKy8vU3lzdGVtLm91dC5wcmludCgiYyA9ICIgKyBJbnRlZ2VyLnRvU3RyaW5nKGMsIDE2KSArICIsIHBvcyA9ICIgKyB0ZXh0LmdldEluZGV4KCkpOworCisgICAgICAgICAgICAvLyBpZiB3ZSBjYW4gdHJhbnNpdGlvbiB0byBzdGF0ZSAiLTEiIGZyb20gb3VyIGN1cnJlbnQgc3RhdGUsIHdlJ3JlCisgICAgICAgICAgICAvLyBvbiB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgYSBsZWdhbCB3b3JkLiAgUHVzaCB0aGF0IHBvc2l0aW9uIG9udG8KKyAgICAgICAgICAgIC8vIHRoZSBwb3NzaWJsZS1icmVhay1wb3NpdGlvbnMgc3RhY2sKKyAgICAgICAgICAgIGlmIChkaWN0aW9uYXJ5LmF0KHN0YXRlLCAwKSA9PSAtMSkgeworICAgICAgICAgICAgICAgIHBvc3NpYmxlQnJlYWtQb3NpdGlvbnMucHVzaChuZXcgSW50ZWdlcih0ZXh0LmdldEluZGV4KCkpKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gbG9vayB1cCB0aGUgbmV3IHN0YXRlIHRvIHRyYW5zaXRpb24gdG8gaW4gdGhlIGRpY3Rpb25hcnkKKyAgICAgICAgICAgIHN0YXRlID0gKGRpY3Rpb25hcnkuYXQoc3RhdGUsIGMpKSAmIDB4RkZGRjsKKy8vU3lzdGVtLm91dC5wcmludCgiLCBzdGF0ZSA9ICIgKyBzdGF0ZSk7CisKKyAgICAgICAgICAgIC8vIGlmIHRoZSBjaGFyYWN0ZXIgd2UncmUgc2l0dGluZyBvbiBjYXVzZXMgdXMgdG8gdHJhbnNpdGlvbiB0bworICAgICAgICAgICAgLy8gdGhlICJlbmQgb2Ygd29yZCIgc3RhdGUsIHRoZW4gaXQgd2FzIGEgbm9uLWRpY3Rpb25hcnkgY2hhcmFjdGVyCisgICAgICAgICAgICAvLyBhbmQgd2UndmUgc3VjY2Vzc2Z1bGx5IHRyYXZlcnNlZCB0aGUgd2hvbGUgcmFuZ2UuICBEcm9wIG91dAorICAgICAgICAgICAgLy8gb2YgdGhlIGxvb3AuCisgICAgICAgICAgICBpZiAoc3RhdGUgPT0gLyotMSovIDB4RkZGRikgeworICAgICAgICAgICAgICAgIGN1cnJlbnRCcmVha1Bvc2l0aW9ucy5wdXNoKG5ldyBJbnRlZ2VyKHRleHQuZ2V0SW5kZXgoKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBpZiB0aGUgY2hhcmFjdGVyIHdlJ3JlIHNpdHRpbmcgb24gY2F1c2VzIHVzIHRvIHRyYW5zaXRpb24gdG8KKyAgICAgICAgICAgIC8vIHRoZSBlcnJvciBzdGF0ZSwgb3IgaWYgd2UndmUgZ29uZSBvZmYgdGhlIGVuZCBvZiB0aGUgcmFuZ2UKKyAgICAgICAgICAgIC8vIHdpdGhvdXQgdHJhbnNpdGlvbmluZyB0byB0aGUgImVuZCBvZiB3b3JkIiBzdGF0ZSwgd2UndmUgaGl0CisgICAgICAgICAgICAvLyBhbiBlcnJvci4uLgorICAgICAgICAgICAgZWxzZSBpZiAoc3RhdGUgPT0gMCB8fCB0ZXh0LmdldEluZGV4KCkgPj0gZW5kUG9zKSB7CisKKyAgICAgICAgICAgICAgICAvLyBpZiB0aGlzIGlzIHRoZSBmYXJ0aGVzdCB3ZSd2ZSBnb3R0ZW4sIHRha2Ugbm90ZSBvZiBpdCBpbgorICAgICAgICAgICAgICAgIC8vIGNhc2UgdGhlcmUncyBhbiBlcnJvciBpbiB0aGUgdGV4dAorICAgICAgICAgICAgICAgIGlmICh0ZXh0LmdldEluZGV4KCkgPiBmYXJ0aGVzdEVuZFBvaW50KSB7CisgICAgICAgICAgICAgICAgICAgIGZhcnRoZXN0RW5kUG9pbnQgPSB0ZXh0LmdldEluZGV4KCk7CisgICAgICAgICAgICAgICAgICAgIGJlc3RCcmVha1Bvc2l0aW9ucyA9IChTdGFjaykoY3VycmVudEJyZWFrUG9zaXRpb25zLmNsb25lKCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIHdyb25nQnJlYWtQb3NpdGlvbnMgaXMgYSBsaXN0IG9mIGFsbCBicmVhayBwb3NpdGlvbnMgd2UndmUgdHJpZWQgc3RhcnRpbmcKKyAgICAgICAgICAgICAgICAvLyB0aGF0IGRpZG4ndCBhbGxvdyB1cyB0byB0cmF2ZXJzZSBhbGwgdGhlIHdheSB0aHJvdWdoIHRoZSB0ZXh0LiAgRXZlcnkgdGltZQorICAgICAgICAgICAgICAgIC8vIHdlIHBvcCBhIGJyZWFrIHBvc2l0aW9uIG9mZiBvZiBjdXJyZW50QnJlYWtQb3NpdGlvbnMsIHdlIHB1dCBpdCBpbnRvCisgICAgICAgICAgICAgICAgLy8gd3JvbmdCcmVha1Bvc2l0aW9ucyB0byBhdm9pZCB0cnlpbmcgaXQgYWdhaW4gbGF0ZXIuICBJZiB3ZSBtYWtlIGl0IHRvIHRoaXMKKyAgICAgICAgICAgICAgICAvLyBzcG90LCB3ZSdyZSBlaXRoZXIgZ29pbmcgdG8gYmFjayB1cCB0byBhIGJyZWFrIGluIHBvc3NpYmxlQnJlYWtQb3NpdGlvbnMKKyAgICAgICAgICAgICAgICAvLyBhbmQgdHJ5IHN0YXJ0aW5nIG92ZXIgZnJvbSB0aGVyZSwgb3Igd2UndmUgZXhoYXVzdGVkIGFsbCBwb3NzaWJsZSBicmVhaworICAgICAgICAgICAgICAgIC8vIHBvc2l0aW9ucyBhbmQgYXJlIGdvaW5nIHRvIGRvIHRoZSBmYWxsYmFjayBwcm9jZWR1cmUuICBUaGlzIGxvb3AgcHJldmVudHMKKyAgICAgICAgICAgICAgICAvLyB1cyBmcm9tIG1lc3Npbmcgd2l0aCBhbnl0aGluZyBpbiBwb3NzaWJsZUJyZWFrUG9zaXRpb25zIHRoYXQgZGlkbid0IHdvcmsgYXMKKyAgICAgICAgICAgICAgICAvLyBhIHN0YXJ0aW5nIHBvaW50IHRoZSBsYXN0IHRpbWUgd2UgdHJpZWQgaXQgKHRoaXMgaXMgdG8gcHJldmVudCBhIGJ1bmNoIG9mCisgICAgICAgICAgICAgICAgLy8gcmVwZXRpdGl2ZSBjaGVja3MgZnJvbSBzbG93aW5nIGRvd24gc29tZSBleHRyZW1lIGNhc2VzKQorICAgICAgICAgICAgICAgIEludGVnZXIgbmV3U3RhcnRpbmdTcG90ID0gbnVsbDsKKyAgICAgICAgICAgICAgICB3aGlsZSAoIXBvc3NpYmxlQnJlYWtQb3NpdGlvbnMuaXNFbXB0eSgpICYmIHdyb25nQnJlYWtQb3NpdGlvbnMuY29udGFpbnMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGVCcmVha1Bvc2l0aW9ucy5wZWVrKCkpKSB7CisgICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlQnJlYWtQb3NpdGlvbnMucG9wKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIGlmIHdlJ3ZlIHVzZWQgdXAgYWxsIHBvc3NpYmxlIGJyZWFrLXBvc2l0aW9uIGNvbWJpbmF0aW9ucywgdGhlcmUncworICAgICAgICAgICAgICAgIC8vIGFuIGVycm9yIG9yIGFuIHVua25vd24gd29yZCBpbiB0aGUgdGV4dC4gIEluIHRoaXMgY2FzZSwgd2Ugc3RhcnQKKyAgICAgICAgICAgICAgICAvLyBvdmVyLCB0cmVhdGluZyB0aGUgZmFydGhlc3QgY2hhcmFjdGVyIHdlJ3ZlIHJlYWNoZWQgYXMgdGhlIGJlZ2lubmluZworICAgICAgICAgICAgICAgIC8vIG9mIHRoZSByYW5nZSwgYW5kICJibGVzc2luZyIgdGhlIGJyZWFrIHBvc2l0aW9ucyB0aGF0IGdvdCB1cyB0aGF0CisgICAgICAgICAgICAgICAgLy8gZmFyIGFzIHJlYWwgYnJlYWsgcG9zaXRpb25zCisgICAgICAgICAgICAgICAgaWYgKHBvc3NpYmxlQnJlYWtQb3NpdGlvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChiZXN0QnJlYWtQb3NpdGlvbnMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudEJyZWFrUG9zaXRpb25zID0gYmVzdEJyZWFrUG9zaXRpb25zOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhcnRoZXN0RW5kUG9pbnQgPCBlbmRQb3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LnNldEluZGV4KGZhcnRoZXN0RW5kUG9pbnQgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChjdXJyZW50QnJlYWtQb3NpdGlvbnMuc2l6ZSgpID09IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKChJbnRlZ2VyKShjdXJyZW50QnJlYWtQb3NpdGlvbnMucGVlaygpKSkuaW50VmFsdWUoKSAhPSB0ZXh0LmdldEluZGV4KCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRleHQuZ2V0SW5kZXgoKSAhPSBzdGFydFBvcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRCcmVha1Bvc2l0aW9ucy5wdXNoKG5ldyBJbnRlZ2VyKHRleHQuZ2V0SW5kZXgoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdGV4dC5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50QnJlYWtQb3NpdGlvbnMucHVzaChuZXcgSW50ZWdlcih0ZXh0LmdldEluZGV4KCkpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGlmIHdlIHN0aWxsIGhhdmUgbW9yZSBicmVhayBwb3NpdGlvbnMgd2UgY2FuIHRyeSwgdGhlbiBwcm9tb3RlIHRoZQorICAgICAgICAgICAgICAgIC8vIGxhc3QgYnJlYWsgaW4gcG9zc2libGVCcmVha1Bvc2l0aW9ucyBpbnRvIGN1cnJlbnRCcmVha1Bvc2l0aW9ucywKKyAgICAgICAgICAgICAgICAvLyBhbmQgZ2V0IHJpZCBvZiBhbGwgZW50cmllcyBpbiBjdXJyZW50QnJlYWtQb3NpdGlvbnMgdGhhdCBjb21lIGFmdGVyCisgICAgICAgICAgICAgICAgLy8gaXQuICBUaGVuIGJhY2sgdXAgdG8gdGhhdCBwb3NpdGlvbiBhbmQgc3RhcnQgb3ZlciBmcm9tIHRoZXJlIChpLmUuLAorICAgICAgICAgICAgICAgIC8vIHRyZWF0IHRoYXQgcG9zaXRpb24gYXMgdGhlIGJlZ2lubmluZyBvZiBhIG5ldyB3b3JkKQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyIHRlbXAgPSAoSW50ZWdlcilwb3NzaWJsZUJyZWFrUG9zaXRpb25zLnBvcCgpOworICAgICAgICAgICAgICAgICAgICBPYmplY3QgdGVtcDIgPSBudWxsOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoIWN1cnJlbnRCcmVha1Bvc2l0aW9ucy5pc0VtcHR5KCkgJiYgdGVtcC5pbnRWYWx1ZSgpIDwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgoSW50ZWdlciljdXJyZW50QnJlYWtQb3NpdGlvbnMucGVlaygpKS5pbnRWYWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wMiA9IGN1cnJlbnRCcmVha1Bvc2l0aW9ucy5wb3AoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyb25nQnJlYWtQb3NpdGlvbnMuYWRkRWxlbWVudCh0ZW1wMik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY3VycmVudEJyZWFrUG9zaXRpb25zLnB1c2godGVtcCk7CisgICAgICAgICAgICAgICAgICAgIHRleHQuc2V0SW5kZXgoKChJbnRlZ2VyKWN1cnJlbnRCcmVha1Bvc2l0aW9ucy5wZWVrKCkpLmludFZhbHVlKCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIHJlLXN5bmMgImMiIGZvciB0aGUgbmV4dCBnby1yb3VuZCwgYW5kIGRyb3Agb3V0IG9mIHRoZSBsb29wIGlmCisgICAgICAgICAgICAgICAgLy8gd2UndmUgbWFkZSBpdCBvZmYgdGhlIGVuZCBvZiB0aGUgcmFuZ2UKKyAgICAgICAgICAgICAgICBjID0gdGV4dC5jdXJyZW50KCk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSAwOworICAgICAgICAgICAgICAgIGlmICh0ZXh0LmdldEluZGV4KCkgPj0gZW5kUG9zKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gaWYgd2UgZGlkbid0IGhpdCBhbnkgZXhjZXB0aW9uYWwgY29uZGl0aW9ucyBvbiB0aGlzIGxhc3QgaXRlcmF0aW9uLAorICAgICAgICAgICAgLy8ganVzdCBhZHZhbmNlIHRvIHRoZSBuZXh0IGNoYXJhY3RlciBhbmQgbG9vcAorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYyA9IHRleHQubmV4dCgpOworICAgICAgICAgICAgfQorLy9TeXN0ZW0ub3V0LnByaW50KCIsIHBvc3NpYmxlQnJlYWtQb3NpdGlvbnMgPSB7ICIpOyBmb3IgKGludCBpID0gMDsgaSA8IHBvc3NpYmxlQnJlYWtQb3NpdGlvbnMuc2l6ZSgpOyBpKyspIFN5c3RlbS5vdXQucHJpbnQocG9zc2libGVCcmVha1Bvc2l0aW9ucy5lbGVtZW50QXQoaSkgKyAiICIpOyBTeXN0ZW0ub3V0LnByaW50KCJ9Iik7CisvL1N5c3RlbS5vdXQucHJpbnQoIiwgY3VycmVudEJyZWFrUG9zaXRpb25zID0geyAiKTsgZm9yIChpbnQgaSA9IDA7IGkgPCBjdXJyZW50QnJlYWtQb3NpdGlvbnMuc2l6ZSgpOyBpKyspIFN5c3RlbS5vdXQucHJpbnQoY3VycmVudEJyZWFrUG9zaXRpb25zLmVsZW1lbnRBdChpKSArICIgIik7IFN5c3RlbS5vdXQucHJpbnRsbigifSIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gZHVtcCB0aGUgbGFzdCBicmVhayBwb3NpdGlvbiBpbiB0aGUgbGlzdCwgYW5kIHJlcGxhY2UgaXQgd2l0aCB0aGUgYWN0dWFsCisgICAgICAgIC8vIGVuZCBvZiB0aGUgcmFuZ2UgKHdoaWNoIG1heSBiZSB0aGUgc2FtZSBjaGFyYWN0ZXIsIG9yIG1heSBiZSBmdXJ0aGVyIG9uCisgICAgICAgIC8vIGJlY2F1c2UgdGhlIHJhbmdlIGFjdHVhbGx5IGVuZGVkIHdpdGggbm9uLWRpY3Rpb25hcnkgY2hhcmFjdGVycyB3ZSB3YW50IHRvCisgICAgICAgIC8vIGtlZXAgd2l0aCB0aGUgd29yZCkKKyAgICAgICAgaWYgKCFjdXJyZW50QnJlYWtQb3NpdGlvbnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBjdXJyZW50QnJlYWtQb3NpdGlvbnMucG9wKCk7CisgICAgICAgIH0KKyAgICAgICAgY3VycmVudEJyZWFrUG9zaXRpb25zLnB1c2gobmV3IEludGVnZXIoZW5kUG9zKSk7CisKKyAgICAgICAgLy8gY3JlYXRlIGEgcmVndWxhciBhcnJheSB0byBob2xkIHRoZSBicmVhayBwb3NpdGlvbnMgYW5kIGNvcHkKKyAgICAgICAgLy8gdGhlIGJyZWFrIHBvc2l0aW9ucyBmcm9tIHRoZSBzdGFjayB0byB0aGUgYXJyYXkgKGluIGFkZGl0aW9uLAorICAgICAgICAvLyBvdXIgc3RhcnRpbmcgcG9zaXRpb24gZ29lcyBpbnRvIHRoaXMgYXJyYXkgYXMgYSBicmVhayBwb3NpdGlvbikuCisgICAgICAgIC8vIFRoaXMgYXJyYXkgYmVjb21lcyB0aGUgY2FjaGUgb2YgYnJlYWsgcG9zaXRpb25zIHVzZWQgYnkgbmV4dCgpCisgICAgICAgIC8vIGFuZCBwcmV2aW91cygpLCBzbyB0aGlzIGlzIHdoZXJlIHdlIGFjdHVhbGx5IHJlZnJlc2ggdGhlIGNhY2hlLgorICAgICAgICBjYWNoZWRCcmVha1Bvc2l0aW9ucyA9IG5ldyBpbnRbY3VycmVudEJyZWFrUG9zaXRpb25zLnNpemUoKSArIDFdOworICAgICAgICBjYWNoZWRCcmVha1Bvc2l0aW9uc1swXSA9IHN0YXJ0UG9zOworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY3VycmVudEJyZWFrUG9zaXRpb25zLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBjYWNoZWRCcmVha1Bvc2l0aW9uc1tpICsgMV0gPSAoKEludGVnZXIpY3VycmVudEJyZWFrUG9zaXRpb25zLmVsZW1lbnRBdChpKSkuaW50VmFsdWUoKTsKKyAgICAgICAgfQorICAgICAgICBwb3NpdGlvbkluQ2FjaGUgPSAwOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZSBCdWlsZGVyIGNsYXNzIGZvciBEaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yIGluaGVyaXRzIGFsbW9zdCBhbGwgb2YKKyAgICAgKiBpdHMgZnVuY3Rpb25hbGl0eSBmcm9tIHRoZSBCdWlsZGVyIGNsYXNzIGZvciBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLCBidXQKKyAgICAgKiBleHRlbmRzIGl0IHdpdGggZXh0cmEgbG9naWMgdG8gaGFuZGxlIHRoZSBESUNUSUlPTkFSWV9WQVIgdG9rZW4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgY2xhc3MgQnVpbGRlciBleHRlbmRzIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuQnVpbGRlciB7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEEgVW5pY29kZVNldCB0aGF0IGNvbnRhaW5zIGFsbCB0aGUgY2hhcmFjdGVycyByZXByZXNlbnRlZCBpbiB0aGUgZGljdGlvbmFyeQorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSBVbmljb2RlU2V0IGRpY3Rpb25hcnlDaGFycyA9IG5ldyBVbmljb2RlU2V0KCk7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIGRpY3Rpb25hcnlFeHByZXNzaW9uID0gIiI7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIE5vIHNwZWNpYWwgaW5pdGlhbGl6YXRpb24KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBCdWlsZGVyKCkgeworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFdlIG92ZXJyaWRlIGhhbmRsZVNwZWNpYWxTdWJzdGl0dXRpb24oKSB0byBhZGQgbG9naWMgdG8gaGFuZGxlCisgICAgICAgICAqIHRoZSAkZGljdGlvbmFyeSB0YWcuICBJZiB3ZSBzZWUgYSBzdWJzdGl0dXRpb24gbmFtZWQgRElDVElPTkFSWV9WQVIsCisgICAgICAgICAqIHBhcnNlIHRoZSBzdWJzdGl0dXRpb24gZXhwcmVzc2lvbiBhbmQgc3RvcmUgdGhlIHJlc3VsdCBpbgorICAgICAgICAgKiBkaWN0aW9uYXJ5Q2hhcnMuCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVTcGVjaWFsU3Vic3RpdHV0aW9uKFN0cmluZyByZXBsYWNlLCBTdHJpbmcgcmVwbGFjZVdpdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0UG9zLCBTdHJpbmcgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgICAgIHN1cGVyLmhhbmRsZVNwZWNpYWxTdWJzdGl0dXRpb24ocmVwbGFjZSwgcmVwbGFjZVdpdGgsIHN0YXJ0UG9zLCBkZXNjcmlwdGlvbik7CisKKyAgICAgICAgICAgIGlmIChyZXBsYWNlLmVxdWFscyhESUNUSU9OQVJZX1ZBUikpIHsKKyAgICAgICAgICAgICAgICBpZiAocmVwbGFjZVdpdGguY2hhckF0KDApID09ICcoJykgeworICAgICAgICAgICAgICAgICAgICBlcnJvcigiRGljdGlvbmFyeSBncm91cCBjYW4ndCBiZSBlbmNsb3NlZCBpbiAoIiwgc3RhcnRQb3MsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGljdGlvbmFyeUV4cHJlc3Npb24gPSByZXBsYWNlV2l0aDsKKyAgICAgICAgICAgICAgICBkaWN0aW9uYXJ5Q2hhcnMgPSBuZXcgVW5pY29kZVNldChyZXBsYWNlV2l0aCwgZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBvdGhlciBoYWxmIG9mIHRoZSBsb2dpYyB0byBoYW5kbGUgdGhlIGRpY3Rpb25hcnkgY2hhcmFjdGVycyBoYXBwZW5zIGhlcmUuCisgICAgICAgICAqIEFmdGVyIHRoZSBpbmhlcml0ZWQgYnVpbGRlciBoYXMgZGVyaXZlZCB0aGUgcmVhbCBjaGFyYWN0ZXIgY2F0ZWdvcmllcywgd2UKKyAgICAgICAgICogc2V0IHVwIHRoZSBjYXRlZ29yeUZsYWdzIGFycmF5IGluIHRoZSBpdGVyYXRvci4gIFRoaXMgYXJyYXkgY29udGFpbnMgInRydWUiCisgICAgICAgICAqIGZvciBldmVyeSBjaGFyYWN0ZXIgY2F0ZWdvcnkgdGhhdCBpbmNsdWRlcyBhIGRpY3Rpb25hcnkgY2hhcmFjdGVyLgorICAgICAgICAgKi8KKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgYnVpbGRDaGFyQ2F0ZWdvcmllcyhWZWN0b3IgdGVtcFJ1bGVMaXN0KSB7CisgICAgICAgICAgICBzdXBlci5idWlsZENoYXJDYXRlZ29yaWVzKHRlbXBSdWxlTGlzdCk7CisKKyAgICAgICAgICAgIGNhdGVnb3J5RmxhZ3MgPSBuZXcgYm9vbGVhbltjYXRlZ29yaWVzLnNpemUoKV07CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNhdGVnb3JpZXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBVbmljb2RlU2V0IGNzID0gKFVuaWNvZGVTZXQpY2F0ZWdvcmllcy5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY3MucmV0YWluQWxsKGRpY3Rpb25hcnlDaGFycyk7CisgICAgICAgICAgICAgICAgaWYgKCFjcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnlGbGFnc1tpXSA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBhY3R1YWxseSBjYWxsZWQgYnkgUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5idWlsZENoYXJDYXRlZ29yaWVzKCksCisgICAgICAgIC8vIHdoaWNoIGlzIGNhbGxlZCBieSB0aGUgZnVuY3Rpb24gYWJvdmUuICBUaGlzIGdpdmVzIHVzIGEgd2F5IHRvIGNyZWF0ZSBhIHNlcGFyYXRlCisgICAgICAgIC8vIGNoYXJhY3RlciBjYXRlZ29yeSBmb3IgdGhlIGRpY3Rpb25hcnkgY2hhcmFjdGVycyBldmVuIHdoZW4gUnVsZUJhc2VkQnJlYWtJdGVyYXRvcgorICAgICAgICAvLyBpc24ndCBtYWtpbmcgYSBkaXN0aW5jdGlvbgorICAgICAgICBwcm90ZWN0ZWQgdm9pZCBtdW5nZUV4cHJlc3Npb25MaXN0KEhhc2h0YWJsZSBleHByZXNzaW9ucykgeworICAgICAgICAgICAgZXhwcmVzc2lvbnMucHV0KGRpY3Rpb25hcnlFeHByZXNzaW9uLCBkaWN0aW9uYXJ5Q2hhcnMpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9EaWdpdExpc3QuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvRGlnaXRMaXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGZlYTdkOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvRGlnaXRMaXN0LmphdmEKQEAgLTAsMCArMSw3MDggQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvQXR0aWMvRGlnaXRMaXN0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDUvMjYgMjE6Mzg6NTUgJCAKKyAqICRSZXZpc2lvbjogMS41ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRleHQ7CisKK2ltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKKworLyoqCisgKiA8Y29kZT5EaWdpdExpc3Q8L2NvZGU+IGhhbmRsZXMgdGhlIHRyYW5zY29kaW5nIGJldHdlZW4gbnVtZXJpYyB2YWx1ZXMgYW5kCisgKiBzdHJpbmdzIG9mIGNoYXJhY3RlcnMuICBJdCBvbmx5IHJlcHJlc2VudHMgbm9uLW5lZ2F0aXZlIG51bWJlcnMuICBUaGUKKyAqIGRpdmlzaW9uIG9mIGxhYm9yIGJldHdlZW4gPGNvZGU+RGlnaXRMaXN0PC9jb2RlPiBhbmQKKyAqIDxjb2RlPkRlY2ltYWxGb3JtYXQ8L2NvZGU+IGlzIHRoYXQgPGNvZGU+RGlnaXRMaXN0PC9jb2RlPiBoYW5kbGVzIHRoZSByYWRpeAorICogMTAgcmVwcmVzZW50YXRpb24gaXNzdWVzIGFuZCBudW1lcmljIGNvbnZlcnNpb24sIGluY2x1ZGluZyByb3VuZGluZzsKKyAqIDxjb2RlPkRlY2ltYWxGb3JtYXQ8L2NvZGU+IGhhbmRsZXMgdGhlIGxvY2FsZS1zcGVjaWZpYyBpc3N1ZXMgc3VjaCBhcworICogcG9zaXRpdmUgYW5kIG5lZ2F0aXZlIHJlcHJlc2VudGF0aW9uLCBkaWdpdCBncm91cGluZywgZGVjaW1hbCBwb2ludCwKKyAqIGN1cnJlbmN5LCBhbmQgc28gb24uCisgKgorICogPHA+QSA8Y29kZT5EaWdpdExpc3Q8L2NvZGU+IGlzIGEgcmVwcmVzZW50YXRpb24gb2YgYSBmaW5pdGUgbnVtZXJpYyB2YWx1ZS4KKyAqIDxjb2RlPkRpZ2l0TGlzdDwvY29kZT4gb2JqZWN0cyBkbyBub3QgcmVwcmVzZW50IDxjb2RlPk5hTjwvY29kZT4gb3IgaW5maW5pdGUKKyAqIHZhbHVlcy4gIEEgPGNvZGU+RGlnaXRMaXN0PC9jb2RlPiB2YWx1ZSBjYW4gYmUgY29udmVydGVkIHRvIGEKKyAqIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHdpdGhvdXQgbG9zcyBvZiBwcmVjaXNpb24uICBDb252ZXJzaW9uIHRvIG90aGVyCisgKiBudW1lcmljIGZvcm1hdHMgbWF5IGludm9sdmUgbG9zcyBvZiBwcmVjaXNpb24sIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWMKKyAqIHZhbHVlLgorICoKKyAqIDxwPlRoZSA8Y29kZT5EaWdpdExpc3Q8L2NvZGU+IHJlcHJlc2VudGF0aW9uIGNvbnNpc3RzIG9mIGEgc3RyaW5nIG9mCisgKiBjaGFyYWN0ZXJzLCB3aGljaCBhcmUgdGhlIGRpZ2l0cyByYWRpeCAxMCwgZnJvbSAnMCcgdG8gJzknLiAgSXQgYWxzbyBoYXMgYQorICogYmFzZSAxMCBleHBvbmVudCBhc3NvY2lhdGVkIHdpdGggaXQuICBUaGUgdmFsdWUgcmVwcmVzZW50ZWQgYnkgYQorICogPGNvZGU+RGlnaXRMaXN0PC9jb2RlPiBvYmplY3QgY2FuIGJlIGNvbXB1dGVkIGJ5IG11bGl0cGx5aW5nIHRoZSBmcmFjdGlvbgorICogPGVtPmY8L2VtPiwgd2hlcmUgMCA8PSA8ZW0+ZjwvZW0+IDwgMSwgZGVyaXZlZCBieSBwbGFjaW5nIGFsbCB0aGUgZGlnaXRzIG9mCisgKiB0aGUgbGlzdCB0byB0aGUgcmlnaHQgb2YgdGhlIGRlY2ltYWwgcG9pbnQsIGJ5IDEwXmV4cG9uZW50LgorICoKKyAqIEBzZWUgamF2YS51dGlsLkxvY2FsZQorICogQHNlZSBqYXZhLnRleHQuRm9ybWF0CisgKiBAc2VlIE51bWJlckZvcm1hdAorICogQHNlZSBEZWNpbWFsRm9ybWF0CisgKiBAc2VlIGphdmEudGV4dC5DaG9pY2VGb3JtYXQKKyAqIEBzZWUgamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQKKyAqIEB2ZXJzaW9uICAgICAgMS4xOCAwOC8xMi85OAorICogQGF1dGhvciAgICAgICBNYXJrIERhdmlzLCBBbGFuIExpdQorICogKi8KK2ZpbmFsIGNsYXNzIERpZ2l0TGlzdCBpbXBsZW1lbnRzIENsb25lYWJsZSB7CisgICAgLyoqCisgICAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cyBpbiBhbiBJRUVFIDc1NCBkb3VibGUsIHRoYXQKKyAgICAgKiBpcywgaW4gYSBKYXZhIGRvdWJsZS4gIFRoaXMgbXVzdCBub3QgYmUgaW5jcmVhc2VkLCBvciBnYXJiYWdlIGRpZ2l0cworICAgICAqIHdpbGwgYmUgZ2VuZXJhdGVkLCBhbmQgc2hvdWxkIG5vdCBiZSBkZWNyZWFzZWQsIG9yIGFjY3VyYWN5IHdpbGwgYmUgbG9zdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNQVhfTE9OR19ESUdJVFMgPSAxOTsgLy8gPT0gTG9uZy50b1N0cmluZyhMb25nLk1BWF9WQUxVRSkubGVuZ3RoKCkKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBEQkxfRElHID0gMTc7CisKKyAgICAvKioKKyAgICAgKiBUaGVzZSBkYXRhIG1lbWJlcnMgYXJlIGludGVudGlvbmFsbHkgcHVibGljIGFuZCBjYW4gYmUgc2V0IGRpcmVjdGx5LgorICAgICAqCisgICAgICogVGhlIHZhbHVlIHJlcHJlc2VudGVkIGlzIGdpdmVuIGJ5IHBsYWNpbmcgdGhlIGRlY2ltYWwgcG9pbnQgYmVmb3JlCisgICAgICogZGlnaXRzW2RlY2ltYWxBdF0uICBJZiBkZWNpbWFsQXQgaXMgPCAwLCB0aGVuIGxlYWRpbmcgemVyb3MgYmV0d2VlbgorICAgICAqIHRoZSBkZWNpbWFsIHBvaW50IGFuZCB0aGUgZmlyc3Qgbm9uemVybyBkaWdpdCBhcmUgaW1wbGllZC4gIElmIGRlY2ltYWxBdAorICAgICAqIGlzID4gY291bnQsIHRoZW4gdHJhaWxpbmcgemVyb3MgYmV0d2VlbiB0aGUgZGlnaXRzW2NvdW50LTFdIGFuZCB0aGUKKyAgICAgKiBkZWNpbWFsIHBvaW50IGFyZSBpbXBsaWVkLgorICAgICAqCisgICAgICogRXF1aXZhbGVudGx5LCB0aGUgcmVwcmVzZW50ZWQgdmFsdWUgaXMgZ2l2ZW4gYnkgZiAqIDEwXmRlY2ltYWxBdC4gIEhlcmUKKyAgICAgKiBmIGlzIGEgdmFsdWUgMC4xIDw9IGYgPCAxIGFycml2ZWQgYXQgYnkgcGxhY2luZyB0aGUgZGlnaXRzIGluIERpZ2l0cyB0bworICAgICAqIHRoZSByaWdodCBvZiB0aGUgZGVjaW1hbC4KKyAgICAgKgorICAgICAqIERpZ2l0TGlzdCBpcyBub3JtYWxpemVkLCBzbyBpZiBpdCBpcyBub24temVybywgZmlnaXRzWzBdIGlzIG5vbi16ZXJvLiAgV2UKKyAgICAgKiBkb24ndCBhbGxvdyBkZW5vcm1hbGl6ZWQgbnVtYmVycyBiZWNhdXNlIG91ciBleHBvbmVudCBpcyBlZmZlY3RpdmVseSBvZgorICAgICAqIHVubGltaXRlZCBtYWduaXR1ZGUuICBUaGUgY291bnQgdmFsdWUgY29udGFpbnMgdGhlIG51bWJlciBvZiBzaWduaWZpY2FudAorICAgICAqIGRpZ2l0cyBwcmVzZW50IGluIGRpZ2l0c1tdLgorICAgICAqCisgICAgICogWmVybyBpcyByZXByZXNlbnRlZCBieSBhbnkgRGlnaXRMaXN0IHdpdGggY291bnQgPT0gMCBvciB3aXRoIGVhY2ggZGlnaXRzW2ldCisgICAgICogZm9yIGFsbCBpIDw9IGNvdW50ID09ICcwJy4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGRlY2ltYWxBdCA9IDA7CisgICAgcHVibGljIGludCBjb3VudCA9IDA7CisgICAgcHVibGljIGJ5dGVbXSBkaWdpdHMgPSBuZXcgYnl0ZVtNQVhfTE9OR19ESUdJVFNdOworCisgICAgcHJpdmF0ZSB2b2lkIGVuc3VyZUNhcGFjaXR5KGludCBkaWdpdENhcGFjaXR5LCBpbnQgZGlnaXRzVG9Db3B5KSB7CisgICAgICAgIGlmIChkaWdpdENhcGFjaXR5ID4gZGlnaXRzLmxlbmd0aCkgeworICAgICAgICAgICAgYnl0ZVtdIG5ld0RpZ2l0cyA9IG5ldyBieXRlW2RpZ2l0Q2FwYWNpdHkgKiAyXTsKKyAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZGlnaXRzLCAwLCBuZXdEaWdpdHMsIDAsIGRpZ2l0c1RvQ29weSk7CisgICAgICAgICAgICBkaWdpdHMgPSBuZXdEaWdpdHM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgcmVwcmVzZW50ZWQgbnVtYmVyIGlzIHplcm8uCisgICAgICovCisgICAgYm9vbGVhbiBpc1plcm8oKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPGNvdW50OyArK2kpIGlmIChkaWdpdHNbaV0gIT0gJzAnKSByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIENsZWFycyBvdXQgdGhlIGRpZ2l0cy4KKyAgICAgKiBVc2UgYmVmb3JlIGFwcGVuZGluZyB0aGVtLgorICAgICAqIFR5cGljYWxseSwgeW91IHNldCBhIHNlcmllcyBvZiBkaWdpdHMgd2l0aCBhcHBlbmQsIHRoZW4gYXQgdGhlIHBvaW50CisgICAgICogeW91IGhpdCB0aGUgZGVjaW1hbCBwb2ludCwgeW91IHNldCBteURpZ2l0TGlzdC5kZWNpbWFsQXQgPSBteURpZ2l0TGlzdC5jb3VudDsKKyAgICAgKiB0aGVuIGdvIG9uIGFwcGVuZGluZyBkaWdpdHMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgY2xlYXIgKCkgeworICAgICAgICBkZWNpbWFsQXQgPSAwOworICAgICAgICBjb3VudCA9IDA7CisgICAgfQorICAgIC8qKgorICAgICAqIEFwcGVuZHMgZGlnaXRzIHRvIHRoZSBsaXN0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFwcGVuZCAoaW50IGRpZ2l0KSB7CisgICAgICAgIGVuc3VyZUNhcGFjaXR5KGNvdW50KzEsIGNvdW50KTsKKyAgICAgICAgZGlnaXRzW2NvdW50KytdID0gKGJ5dGUpIGRpZ2l0OworICAgIH0KKyAgICAvKioKKyAgICAgKiBVdGlsaXR5IHJvdXRpbmUgdG8gZ2V0IHRoZSB2YWx1ZSBvZiB0aGUgZGlnaXQgbGlzdAorICAgICAqIElmIChjb3VudCA9PSAwKSB0aGlzIHRocm93cyBhIE51bWJlckZvcm1hdEV4Y2VwdGlvbiwgd2hpY2gKKyAgICAgKiBtaW1pY3MgTG9uZy5wYXJzZUxvbmcoKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgZG91YmxlIGdldERvdWJsZSgpIHsKKyAgICAgICAgaWYgKGNvdW50ID09IDApIHJldHVybiAwLjA7CisgICAgICAgIFN0cmluZ0J1ZmZlciB0ZW1wID0gbmV3IFN0cmluZ0J1ZmZlcihjb3VudCk7CisgICAgICAgIHRlbXAuYXBwZW5kKCcuJyk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgdGVtcC5hcHBlbmQoKGNoYXIpKGRpZ2l0c1tpXSkpOworICAgICAgICB0ZW1wLmFwcGVuZCgnRScpOworICAgICAgICB0ZW1wLmFwcGVuZChJbnRlZ2VyLnRvU3RyaW5nKGRlY2ltYWxBdCkpOworICAgICAgICByZXR1cm4gRG91YmxlLnZhbHVlT2YodGVtcC50b1N0cmluZygpKS5kb3VibGVWYWx1ZSgpOworICAgICAgICAvLyBsb25nIHZhbHVlID0gTG9uZy5wYXJzZUxvbmcodGVtcC50b1N0cmluZygpKTsKKyAgICAgICAgLy8gcmV0dXJuICh2YWx1ZSAqIE1hdGgucG93KDEwLCBkZWNpbWFsQXQgLSBjb3VudCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFV0aWxpdHkgcm91dGluZSB0byBnZXQgdGhlIHZhbHVlIG9mIHRoZSBkaWdpdCBsaXN0LgorICAgICAqIElmIChjb3VudCA9PSAwKSB0aGlzIHJldHVybnMgMCwgdW5saWtlIExvbmcucGFyc2VMb25nKCkuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIGxvbmcgZ2V0TG9uZygpIHsKKyAgICAgICAgLy8gZm9yIG5vdywgc2ltcGxlIGltcGxlbWVudGF0aW9uOyBsYXRlciwgZG8gcHJvcGVyIElFRUUgbmF0aXZlIHN0dWZmCisKKyAgICAgICAgaWYgKGNvdW50ID09IDApIHJldHVybiAwOworCisgICAgICAgIC8vIFdlIGhhdmUgdG8gY2hlY2sgZm9yIHRoaXMsIGJlY2F1c2UgdGhpcyBpcyB0aGUgb25lIE5FR0FUSVZFIHZhbHVlCisgICAgICAgIC8vIHdlIHJlcHJlc2VudC4gIElmIHdlIHRyaWVkIHRvIGp1c3QgcGFzcyB0aGUgZGlnaXRzIG9mZiB0byBwYXJzZUxvbmcsCisgICAgICAgIC8vIHdlJ2QgZ2V0IGEgcGFyc2UgZmFpbHVyZS4KKyAgICAgICAgaWYgKGlzTG9uZ01JTl9WQUxVRSgpKSByZXR1cm4gTG9uZy5NSU5fVkFMVUU7CisKKyAgICAgICAgU3RyaW5nQnVmZmVyIHRlbXAgPSBuZXcgU3RyaW5nQnVmZmVyKGNvdW50KTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkZWNpbWFsQXQ7ICsraSkKKyAgICAgICAgeworICAgICAgICAgICAgdGVtcC5hcHBlbmQoKGkgPCBjb3VudCkgPyAoY2hhcikoZGlnaXRzW2ldKSA6ICcwJyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIExvbmcucGFyc2VMb25nKHRlbXAudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgPGNvZGU+QmlnSW50ZWdlcjwvY29kZT4gcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBzdG9yZWQgaW4gdGhpcworICAgICAqIDxjb2RlPkRpZ2l0TGlzdDwvY29kZT4uICBUaGlzIG1ldGhvZCBhc3N1bWVzIHRoYXQgdGhpcyBvYmplY3QgY29udGFpbnMKKyAgICAgKiBhbiBpbnRlZ3JhbCB2YWx1ZTsgaWYgbm90LCBpdCB3aWxsIHJldHVybiBhbiBpbmNvcnJlY3QgdmFsdWUuCisgICAgICogW2JuZl0KKyAgICAgKiBAcGFyYW0gaXNQb3NpdGl2ZSBkZXRlcm1pbmVzIHRoZSBzaWduIG9mIHRoZSByZXR1cm5lZCByZXN1bHQKKyAgICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGlzIG9iamVjdCBhcyBhIDxjb2RlPkJpZ0ludGVnZXI8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIEJpZ0ludGVnZXIgZ2V0QmlnSW50ZWdlcihib29sZWFuIGlzUG9zaXRpdmUpIHsKKyAgICAgICAgaWYgKGlzWmVybygpKSByZXR1cm4gQmlnSW50ZWdlci52YWx1ZU9mKDApOworICAgICAgICBTdHJpbmdCdWZmZXIgc3RyaW5nUmVwID0gbmV3IFN0cmluZ0J1ZmZlcihjb3VudCk7CisgICAgICAgIGlmICghaXNQb3NpdGl2ZSkgeworICAgICAgICAgICAgc3RyaW5nUmVwLmFwcGVuZCgnLScpOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxjb3VudDsgKytpKSB7CisgICAgICAgICAgICBzdHJpbmdSZXAuYXBwZW5kKChjaGFyKSBkaWdpdHNbaV0pOworICAgICAgICB9CisgICAgICAgIGludCBkID0gZGVjaW1hbEF0OworICAgICAgICB3aGlsZSAoZC0tID4gY291bnQpIHsKKyAgICAgICAgICAgIHN0cmluZ1JlcC5hcHBlbmQoJzAnKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmV3IEJpZ0ludGVnZXIoc3RyaW5nUmVwLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IHJlcHJlc2VudGluZyB0aGUgdmFsdWUgc3RvcmVkIGluIHRoaXMKKyAgICAgKiA8Y29kZT5EaWdpdExpc3Q8L2NvZGU+LgorICAgICAqIFtibmZdCisgICAgICogQHBhcmFtIGlzUG9zaXRpdmUgZGV0ZXJtaW5lcyB0aGUgc2lnbiBvZiB0aGUgcmV0dXJuZWQgcmVzdWx0CisgICAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhpcyBvYmplY3QgYXMgYSA8Y29kZT5CaWdEZWNpbWFsPC9jb2RlPgorICAgICAqLworICAgIHB1YmxpYyBqYXZhLm1hdGguQmlnRGVjaW1hbCBnZXRCaWdEZWNpbWFsKGJvb2xlYW4gaXNQb3NpdGl2ZSkgeworICAgICAgICBpZiAoaXNaZXJvKCkpIHJldHVybiBqYXZhLm1hdGguQmlnRGVjaW1hbC52YWx1ZU9mKDApOworICAgICAgICBTdHJpbmdCdWZmZXIgc3RyaW5nUmVwID0gbmV3IFN0cmluZ0J1ZmZlcihjb3VudCsxKTsKKyAgICAgICAgaWYgKCFpc1Bvc2l0aXZlKSB7CisgICAgICAgICAgICBzdHJpbmdSZXAuYXBwZW5kKCctJyk7CisgICAgICAgIH0KKyAgICAgICAgaW50IGQgPSBkZWNpbWFsQXQ7CisgICAgICAgIGlmIChkIDwgMCkgeworICAgICAgICAgICAgc3RyaW5nUmVwLmFwcGVuZCgnLicpOworICAgICAgICAgICAgd2hpbGUgKGQgPCAwKSB7CisgICAgICAgICAgICAgICAgc3RyaW5nUmVwLmFwcGVuZCgnMCcpOworICAgICAgICAgICAgICAgICsrZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGQgPSAtMTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGludCBpPTA7IGk8Y291bnQ7ICsraSkgeworICAgICAgICAgICAgaWYgKGQgPT0gaSkgeworICAgICAgICAgICAgICAgIHN0cmluZ1JlcC5hcHBlbmQoJy4nKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0cmluZ1JlcC5hcHBlbmQoKGNoYXIpIGRpZ2l0c1tpXSk7CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGQtLSA+IGNvdW50KSB7CisgICAgICAgICAgICBzdHJpbmdSZXAuYXBwZW5kKCcwJyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBqYXZhLm1hdGguQmlnRGVjaW1hbChzdHJpbmdSZXAudG9TdHJpbmcoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHdoZXRoZXIgb3Igbm90IHRoaXMgb2JqZWN0cyByZXByZXNlbnRlZCB2YWx1ZSBpcyBhbiBpbnRlZ2VyLgorICAgICAqIFtibmZdCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSByZXByZXNlbnRlZCB2YWx1ZSBvZiB0aGlzIG9iamVjdCBpcyBhbiBpbnRlZ2VyCisgICAgICovCisgICAgYm9vbGVhbiBpc0ludGVncmFsKCkgeworICAgICAgICAvLyBUcmltIHRyYWlsaW5nIHplcm9zLiAgVGhpcyBkb2VzIG5vdCBjaGFuZ2UgdGhlIHJlcHJlc2VudGVkIHZhbHVlLgorICAgICAgICB3aGlsZSAoY291bnQgPiAwICYmIGRpZ2l0c1tjb3VudCAtIDFdID09IChieXRlKScwJykgLS1jb3VudDsKKyAgICAgICAgcmV0dXJuIGNvdW50ID09IDAgfHwgZGVjaW1hbEF0ID49IGNvdW50OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBudW1iZXIgcmVwcmVzZW50ZWQgYnkgdGhpcyBvYmplY3QgY2FuIGZpdCBpbnRvCisgICAgICogYSBsb25nLgorICAgICAqLworICAgIGJvb2xlYW4gZml0c0ludG9Mb25nKGJvb2xlYW4gaXNQb3NpdGl2ZSkKKyAgICB7CisgICAgICAgIC8vIEZpZ3VyZSBvdXQgaWYgdGhlIHJlc3VsdCB3aWxsIGZpdCBpbiBhIGxvbmcuICBXZSBoYXZlIHRvCisgICAgICAgIC8vIGZpcnN0IGxvb2sgZm9yIG5vbnplcm8gZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50OworICAgICAgICAvLyB0aGVuIGNoZWNrIHRoZSBzaXplLiAgSWYgdGhlIGRpZ2l0IGNvdW50IGlzIDE4IG9yIGxlc3MsIHRoZW4KKyAgICAgICAgLy8gdGhlIHZhbHVlIGNhbiBkZWZpbml0ZWx5IGJlIHJlcHJlc2VudGVkIGFzIGEgbG9uZy4gIElmIGl0IGlzIDE5CisgICAgICAgIC8vIHRoZW4gaXQgbWF5IGJlIHRvbyBsYXJnZS4KKworICAgICAgICAvLyBUcmltIHRyYWlsaW5nIHplcm9zLiAgVGhpcyBkb2VzIG5vdCBjaGFuZ2UgdGhlIHJlcHJlc2VudGVkIHZhbHVlLgorICAgICAgICB3aGlsZSAoY291bnQgPiAwICYmIGRpZ2l0c1tjb3VudCAtIDFdID09IChieXRlKScwJykgLS1jb3VudDsKKworICAgICAgICBpZiAoY291bnQgPT0gMCkgeworICAgICAgICAgICAgLy8gUG9zaXRpdmUgemVybyBmaXRzIGludG8gYSBsb25nLCBidXQgbmVnYXRpdmUgemVybyBjYW4gb25seQorICAgICAgICAgICAgLy8gYmUgcmVwcmVzZW50ZWQgYXMgYSBkb3VibGUuIC0gYnVnIDQxNjI4NTIKKyAgICAgICAgICAgIHJldHVybiBpc1Bvc2l0aXZlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRlY2ltYWxBdCA8IGNvdW50IHx8IGRlY2ltYWxBdCA+IE1BWF9MT05HX0RJR0lUUykgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGlmIChkZWNpbWFsQXQgPCBNQVhfTE9OR19ESUdJVFMpIHJldHVybiB0cnVlOworCisgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBkZWNpbWFsQXQgPT0gY291bnQsIGFuZCBjb3VudCA9PSBNQVhfTE9OR19ESUdJVFMuCisgICAgICAgIC8vIFRoZSBudW1iZXIgd2lsbCBvdmVyZmxvdyBpZiBpdCBpcyBsYXJnZXIgdGhhbiA5MjIzMzcyMDM2ODU0Nzc1ODA3CisgICAgICAgIC8vIG9yIHNtYWxsZXIgdGhhbiAtOTIyMzM3MjAzNjg1NDc3NTgwOC4KKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPGNvdW50OyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJ5dGUgZGlnID0gZGlnaXRzW2ldLCBtYXggPSBMT05HX01JTl9SRVBbaV07CisgICAgICAgICAgICBpZiAoZGlnID4gbWF4KSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoZGlnIDwgbWF4KSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIGZpcnN0IGNvdW50IGRpZ2l0cyBtYXRjaC4gIElmIGRlY2ltYWxBdCBpcyBsZXNzCisgICAgICAgIC8vIHRoYW4gY291bnQsIHRoZW4gdGhlIHJlbWFpbmluZyBkaWdpdHMgYXJlIHplcm8sIGFuZCB3ZSByZXR1cm4gdHJ1ZS4KKyAgICAgICAgaWYgKGNvdW50IDwgZGVjaW1hbEF0KSByZXR1cm4gdHJ1ZTsKKworICAgICAgICAvLyBOb3cgd2UgaGF2ZSBhIHJlcHJlc2VudGF0aW9uIG9mIExvbmcuTUlOX1ZBTFVFLCB3aXRob3V0IHRoZSBsZWFkaW5nCisgICAgICAgIC8vIG5lZ2F0aXZlIHNpZ24uICBJZiB0aGlzIHJlcHJlc2VudHMgYSBwb3NpdGl2ZSB2YWx1ZSwgdGhlbiBpdCBkb2VzCisgICAgICAgIC8vIG5vdCBmaXQ7IG90aGVyd2lzZSBpdCBmaXRzLgorICAgICAgICByZXR1cm4gIWlzUG9zaXRpdmU7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBkaWdpdCBsaXN0IHRvIGEgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIGRvdWJsZSB2YWx1ZS4KKyAgICAgKiBUaGlzIG1ldGhvZCBzdXBwb3J0cyBmaXhlZC1wb2ludCBub3RhdGlvbi4KKyAgICAgKiBAcGFyYW0gc291cmNlIFZhbHVlIHRvIGJlIGNvbnZlcnRlZDsgbXVzdCBub3QgYmUgSW5mLCAtSW5mLCBOYW4sCisgICAgICogb3IgYSB2YWx1ZSA8PSAwLgorICAgICAqIEBwYXJhbSBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgVGhlIG1vc3QgZnJhY3Rpb25hbCBkaWdpdHMgd2hpY2ggc2hvdWxkCisgICAgICogYmUgY29udmVydGVkLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldChkb3VibGUgc291cmNlLCBpbnQgbWF4aW11bUZyYWN0aW9uRGlnaXRzKQorICAgIHsKKyAgICAgICAgc2V0KHNvdXJjZSwgbWF4aW11bUZyYWN0aW9uRGlnaXRzLCB0cnVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGRpZ2l0IGxpc3QgdG8gYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gZG91YmxlIHZhbHVlLgorICAgICAqIFRoaXMgbWV0aG9kIHN1cHBvcnRzIGJvdGggZml4ZWQtcG9pbnQgYW5kIGV4cG9uZW50aWFsIG5vdGF0aW9uLgorICAgICAqIEBwYXJhbSBzb3VyY2UgVmFsdWUgdG8gYmUgY29udmVydGVkOyBtdXN0IG5vdCBiZSBJbmYsIC1JbmYsIE5hbiwKKyAgICAgKiBvciBhIHZhbHVlIDw9IDAuCisgICAgICogQHBhcmFtIG1heGltdW1EaWdpdHMgVGhlIG1vc3QgZnJhY3Rpb25hbCBvciB0b3RhbCBkaWdpdHMgd2hpY2ggc2hvdWxkCisgICAgICogYmUgY29udmVydGVkLgorICAgICAqIEBwYXJhbSBmaXhlZFBvaW50IElmIHRydWUsIHRoZW4gbWF4aW11bURpZ2l0cyBpcyB0aGUgbWF4aW11bQorICAgICAqIGZyYWN0aW9uYWwgZGlnaXRzIHRvIGJlIGNvbnZlcnRlZC4gIElmIGZhbHNlLCB0b3RhbCBkaWdpdHMuCisgICAgICovCisgICAgZmluYWwgdm9pZCBzZXQoZG91YmxlIHNvdXJjZSwgaW50IG1heGltdW1EaWdpdHMsIGJvb2xlYW4gZml4ZWRQb2ludCkKKyAgICB7CisgICAgICAgIGlmIChzb3VyY2UgPT0gMCkgc291cmNlID0gMDsKKyAgICAgICAgLy8gR2VuZXJhdGUgYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZm9ybSBERERERCwgREREREQuREREREQsIG9yCisgICAgICAgIC8vIERERERERSsvLURERERELgorICAgICAgICBTdHJpbmcgcmVwID0gRG91YmxlLnRvU3RyaW5nKHNvdXJjZSk7CisKKyAgICAgICAgZGVjaW1hbEF0ID0gLTE7CisgICAgICAgIGNvdW50ID0gMDsKKyAgICAgICAgaW50IGV4cG9uZW50ID0gMDsKKyAgICAgICAgLy8gTnVtYmVyIG9mIHplcm9zIGJldHdlZW4gZGVjaW1hbCBwb2ludCBhbmQgZmlyc3Qgbm9uLXplcm8gZGlnaXQgYWZ0ZXIKKyAgICAgICAgLy8gZGVjaW1hbCBwb2ludCwgZm9yIG51bWJlcnMgPCAxLgorICAgICAgICBpbnQgbGVhZGluZ1plcm9zQWZ0ZXJEZWNpbWFsID0gMDsKKyAgICAgICAgYm9vbGVhbiBub25aZXJvRGlnaXRTZWVuID0gZmFsc2U7CisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IHJlcC5sZW5ndGgoKTsgKytpKQorICAgICAgICB7CisgICAgICAgICAgICBjaGFyIGMgPSByZXAuY2hhckF0KGkpOworICAgICAgICAgICAgaWYgKGMgPT0gJy4nKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGRlY2ltYWxBdCA9IGNvdW50OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnZScgfHwgYyA9PSAnRScpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZXhwb25lbnQgPSBJbnRlZ2VyLnZhbHVlT2YocmVwLnN1YnN0cmluZyhpKzEpKS5pbnRWYWx1ZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY291bnQgPCBNQVhfTE9OR19ESUdJVFMpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCFub25aZXJvRGlnaXRTZWVuKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgbm9uWmVyb0RpZ2l0U2VlbiA9IChjICE9ICcwJyk7CisgICAgICAgICAgICAgICAgICAgIGlmICghbm9uWmVyb0RpZ2l0U2VlbiAmJiBkZWNpbWFsQXQgIT0gLTEpICsrbGVhZGluZ1plcm9zQWZ0ZXJEZWNpbWFsOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChub25aZXJvRGlnaXRTZWVuKSBkaWdpdHNbY291bnQrK10gPSAoYnl0ZSljOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChkZWNpbWFsQXQgPT0gLTEpIGRlY2ltYWxBdCA9IGNvdW50OworICAgICAgICBkZWNpbWFsQXQgKz0gZXhwb25lbnQgLSBsZWFkaW5nWmVyb3NBZnRlckRlY2ltYWw7CisKKyAgICAgICAgaWYgKGZpeGVkUG9pbnQpIHsKKyAgICAgICAgICAgIC8vIFRoZSBuZWdhdGl2ZSBvZiB0aGUgZXhwb25lbnQgcmVwcmVzZW50cyB0aGUgbnVtYmVyIG9mIGxlYWRpbmcKKyAgICAgICAgICAgIC8vIHplcm9zIGJldHdlZW4gdGhlIGRlY2ltYWwgYW5kIHRoZSBmaXJzdCBub24temVybyBkaWdpdCwgZm9yCisgICAgICAgICAgICAvLyBhIHZhbHVlIDwgMC4xIChlLmcuLCBmb3IgMC4wMDEyMywgLWRlY2ltYWxBdCA9PSAyKS4gIElmIHRoaXMKKyAgICAgICAgICAgIC8vIGlzIG1vcmUgdGhhbiB0aGUgbWF4aW11bSBmcmFjdGlvbiBkaWdpdHMsIHRoZW4gd2UgaGF2ZSBhbiB1bmRlcmZsb3cKKyAgICAgICAgICAgIC8vIGZvciB0aGUgcHJpbnRlZCByZXByZXNlbnRhdGlvbi4KKyAgICAgICAgICAgIGlmICgtZGVjaW1hbEF0ID4gbWF4aW11bURpZ2l0cykgeworICAgICAgICAgICAgICAgIGNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9IGVsc2UgaWYgKC1kZWNpbWFsQXQgPT0gbWF4aW11bURpZ2l0cykgeworICAgICAgICAgICAgICAgIGlmIChzaG91bGRSb3VuZFVwKDApKSB7CisgICAgICAgICAgICAgICAgICAgIGNvdW50ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgKytkZWNpbWFsQXQ7CisgICAgICAgICAgICAgICAgICAgIGRpZ2l0c1swXSA9IChieXRlKScxJzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjb3VudCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIGVsc2UgZmFsbCB0aHJvdWdoCisgICAgICAgIH0KKworICAgICAgICAvLyBFbGltaW5hdGUgdHJhaWxpbmcgemVyb3MuCisgICAgICAgIHdoaWxlIChjb3VudCA+IDEgJiYgZGlnaXRzW2NvdW50IC0gMV0gPT0gJzAnKQorICAgICAgICAgICAgLS1jb3VudDsKKworICAgICAgICAvLyBFbGltaW5hdGUgZGlnaXRzIGJleW9uZCBtYXhpbXVtIGRpZ2l0cyB0byBiZSBkaXNwbGF5ZWQuCisgICAgICAgIC8vIFJvdW5kIHVwIGlmIGFwcHJvcHJpYXRlLgorICAgICAgICByb3VuZChmaXhlZFBvaW50ID8gKG1heGltdW1EaWdpdHMgKyBkZWNpbWFsQXQpIDogbWF4aW11bURpZ2l0cyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdHJ1bmNhdGluZyB0aGUgcmVwcmVzZW50YXRpb24gdG8gdGhlIGdpdmVuIG51bWJlcgorICAgICAqIG9mIGRpZ2l0cyB3aWxsIHJlc3VsdCBpbiBhbiBpbmNyZW1lbnQgdG8gdGhlIGxhc3QgZGlnaXQuICBUaGlzCisgICAgICogbWV0aG9kIGltcGxlbWVudHMgaGFsZi1ldmVuIHJvdW5kaW5nLCB0aGUgZGVmYXVsdCByb3VuZGluZyBtb2RlLgorICAgICAqIFtibmZdCisgICAgICogQHBhcmFtIG1heGltdW1EaWdpdHMgdGhlIG51bWJlciBvZiBkaWdpdHMgdG8ga2VlcCwgZnJvbSAwIHRvCisgICAgICogPGNvZGU+Y291bnQtMTwvY29kZT4uICBJZiAwLCB0aGVuIGFsbCBkaWdpdHMgYXJlIHJvdW5kZWQgYXdheSwgYW5kCisgICAgICogdGhpcyBtZXRob2QgcmV0dXJucyB0cnVlIGlmIGEgb25lIHNob3VsZCBiZSBnZW5lcmF0ZWQgKGUuZy4sIGZvcm1hdHRpbmcKKyAgICAgKiAwLjA5IHdpdGggIiMuIyIpLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBkaWdpdCA8Y29kZT5tYXhpbXVtRGlnaXRzLTE8L2NvZGU+IHNob3VsZCBiZQorICAgICAqIGluY3JlbWVudGVkCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIHNob3VsZFJvdW5kVXAoaW50IG1heGltdW1EaWdpdHMpIHsKKyAgICAgICAgYm9vbGVhbiBpbmNyZW1lbnQgPSBmYWxzZTsKKyAgICAgICAgLy8gSW1wbGVtZW50IElFRUUgaGFsZi1ldmVuIHJvdW5kaW5nCisgICAgICAgIGlmIChkaWdpdHNbbWF4aW11bURpZ2l0c10gPiAnNScpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKGRpZ2l0c1ttYXhpbXVtRGlnaXRzXSA9PSAnNScgKSB7CisgICAgICAgICAgICBmb3IgKGludCBpPW1heGltdW1EaWdpdHMrMTsgaTxjb3VudDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGRpZ2l0c1tpXSAhPSAnMCcpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG1heGltdW1EaWdpdHMgPT0gMCB8fCAoZGlnaXRzW21heGltdW1EaWdpdHMtMV0gJSAyICE9IDApOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSb3VuZCB0aGUgcmVwcmVzZW50YXRpb24gdG8gdGhlIGdpdmVuIG51bWJlciBvZiBkaWdpdHMuCisgICAgICogQHBhcmFtIG1heGltdW1EaWdpdHMgVGhlIG1heGltdW0gbnVtYmVyIG9mIGRpZ2l0cyB0byBiZSBzaG93bi4KKyAgICAgKiBVcG9uIHJldHVybiwgY291bnQgd2lsbCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gbWF4aW11bURpZ2l0cy4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgdm9pZCByb3VuZChpbnQgbWF4aW11bURpZ2l0cykgeyAgICAgICAgCisgICAgICAgIC8vIEVsaW1pbmF0ZSBkaWdpdHMgYmV5b25kIG1heGltdW0gZGlnaXRzIHRvIGJlIGRpc3BsYXllZC4KKyAgICAgICAgLy8gUm91bmQgdXAgaWYgYXBwcm9wcmlhdGUuCisgICAgICAgIC8vIFtibmZdIHJld3JpdHRlbiB0byBmaXggNDE3OTgxOAorICAgICAgICBpZiAobWF4aW11bURpZ2l0cyA+IDAgJiYgbWF4aW11bURpZ2l0cyA8IGNvdW50KSB7CisgICAgICAgICAgICBpZiAoc2hvdWxkUm91bmRVcChtYXhpbXVtRGlnaXRzKSkgeworICAgICAgICAgICAgICAgIC8vIFJvdW5kaW5nIHVwIGludm9sdmVkIGluY3JlbWVudGluZyBkaWdpdHMgZnJvbSBMU0QgdG8gTVNELgorICAgICAgICAgICAgICAgIC8vIEluIG1vc3QgY2FzZXMgdGhpcyBpcyBzaW1wbGUsIGJ1dCBpbiBhIHdvcnN0IGNhc2Ugc2l0dWF0aW9uCisgICAgICAgICAgICAgICAgLy8gKDk5OTkuLjk5KSB3ZSBoYXZlIHRvIGFkanVzdCB0aGUgZGVjaW1hbEF0IHZhbHVlLgorICAgICAgICAgICAgICAgIGZvciAoOzspCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAtLW1heGltdW1EaWdpdHM7CisgICAgICAgICAgICAgICAgICAgIGlmIChtYXhpbXVtRGlnaXRzIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBhbGwgOSdzLCBzbyB3ZSBpbmNyZW1lbnQgdG8gYSBzaW5nbGUgZGlnaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIG9uZSBhbmQgYWRqdXN0IHRoZSBleHBvbmVudC4KKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZ2l0c1swXSA9IChieXRlKSAnMSc7CisgICAgICAgICAgICAgICAgICAgICAgICArK2RlY2ltYWxBdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heGltdW1EaWdpdHMgPSAwOyAvLyBBZGp1c3QgdGhlIGNvdW50CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICsrZGlnaXRzW21heGltdW1EaWdpdHNdOworICAgICAgICAgICAgICAgICAgICBpZiAoZGlnaXRzW21heGltdW1EaWdpdHNdIDw9ICc5JykgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIC8vIGRpZ2l0c1ttYXhpbXVtRGlnaXRzXSA9ICcwJzsgLy8gVW5uZWNlc3Nhcnkgc2luY2Ugd2UnbGwgdHJ1bmNhdGUgdGhpcworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICArK21heGltdW1EaWdpdHM7IC8vIEluY3JlbWVudCBmb3IgdXNlIGFzIGNvdW50CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb3VudCA9IG1heGltdW1EaWdpdHM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVdGlsaXR5IHJvdXRpbmUgdG8gc2V0IHRoZSB2YWx1ZSBvZiB0aGUgZGlnaXQgbGlzdCBmcm9tIGEgbG9uZworICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldChsb25nIHNvdXJjZSkKKyAgICB7CisgICAgICAgIHNldChzb3VyY2UsIDApOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgZGlnaXQgbGlzdCB0byBhIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBnaXZlbiBsb25nIHZhbHVlLgorICAgICAqIEBwYXJhbSBzb3VyY2UgVmFsdWUgdG8gYmUgY29udmVydGVkOyBtdXN0IGJlID49IDAgb3IgPT0KKyAgICAgKiBMb25nLk1JTl9WQUxVRS4KKyAgICAgKiBAcGFyYW0gbWF4aW11bURpZ2l0cyBUaGUgbW9zdCBkaWdpdHMgd2hpY2ggc2hvdWxkIGJlIGNvbnZlcnRlZC4KKyAgICAgKiBJZiBtYXhpbXVtRGlnaXRzIGlzIGxvd2VyIHRoYW4gdGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMKKyAgICAgKiBpbiBzb3VyY2UsIHRoZSByZXByZXNlbnRhdGlvbiB3aWxsIGJlIHJvdW5kZWQuICBJZ25vcmVkIGlmIDw9IDAuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgc2V0KGxvbmcgc291cmNlLCBpbnQgbWF4aW11bURpZ2l0cykKKyAgICB7CisgICAgICAgIC8vIFRoaXMgbWV0aG9kIGRvZXMgbm90IGV4cGVjdCBhIG5lZ2F0aXZlIG51bWJlci4gSG93ZXZlciwKKyAgICAgICAgLy8gInNvdXJjZSIgY2FuIGJlIGEgTG9uZy5NSU5fVkFMVUUgKC05MjIzMzcyMDM2ODU0Nzc1ODA4KSwKKyAgICAgICAgLy8gaWYgdGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQgaXMgYSBMb25nLk1JTl9WQUxVRS4gIEluIHRoYXQKKyAgICAgICAgLy8gY2FzZSwgaXQgd2lsbCBiZSBmb3JtYXR0ZWQgYXMgLUxvbmcuTUlOX1ZBTFVFLCBhIG51bWJlcgorICAgICAgICAvLyB3aGljaCBpcyBvdXRzaWRlIHRoZSBsZWdhbCByYW5nZSBvZiBhIGxvbmcsIGJ1dCB3aGljaCBjYW4KKyAgICAgICAgLy8gYmUgcmVwcmVzZW50ZWQgYnkgRGlnaXRMaXN0LgorICAgICAgICAvLyBbTkVXXSBGYXN0ZXIgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaWYgKHNvdXJjZSA8PSAwKSB7CisgICAgICAgICAgICBpZiAoc291cmNlID09IExvbmcuTUlOX1ZBTFVFKSB7CisgICAgICAgICAgICAgICAgZGVjaW1hbEF0ID0gY291bnQgPSBNQVhfTE9OR19ESUdJVFM7CisgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShMT05HX01JTl9SRVAsIDAsIGRpZ2l0cywgMCwgY291bnQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb3VudCA9IDA7CisgICAgICAgICAgICAgICAgZGVjaW1hbEF0ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGludCBsZWZ0ID0gTUFYX0xPTkdfRElHSVRTOworICAgICAgICAgICAgaW50IHJpZ2h0OworICAgICAgICAgICAgd2hpbGUgKHNvdXJjZSA+IDApIHsKKyAgICAgICAgICAgICAgICBkaWdpdHNbLS1sZWZ0XSA9IChieXRlKSAoKChsb25nKSAnMCcpICsgKHNvdXJjZSAlIDEwKSk7CisgICAgICAgICAgICAgICAgc291cmNlIC89IDEwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVjaW1hbEF0ID0gTUFYX0xPTkdfRElHSVRTLWxlZnQ7CisgICAgICAgICAgICAvLyBEb24ndCBjb3B5IHRyYWlsaW5nIHplcm9zCisgICAgICAgICAgICAvLyB3ZSBhcmUgZ3VhcmFudGVlZCB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBub24temVybyBkaWdpdCwKKyAgICAgICAgICAgIC8vIHNvIHdlIGRvbid0IGhhdmUgdG8gY2hlY2sgbG93ZXIgYm91bmRzCisgICAgICAgICAgICBmb3IgKHJpZ2h0ID0gTUFYX0xPTkdfRElHSVRTIC0gMTsgZGlnaXRzW3JpZ2h0XSA9PSAoYnl0ZSkgJzAnOyAtLXJpZ2h0KSB7fQorICAgICAgICAgICAgY291bnQgPSByaWdodCAtIGxlZnQgKyAxOworICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShkaWdpdHMsIGxlZnQsIGRpZ2l0cywgMCwgY291bnQpOworICAgICAgICB9ICAgICAgICAKKyAgICAgICAgaWYgKG1heGltdW1EaWdpdHMgPiAwKSByb3VuZChtYXhpbXVtRGlnaXRzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGRpZ2l0IGxpc3QgdG8gYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gQmlnSW50ZWdlciB2YWx1ZS4KKyAgICAgKiBbYm5mXQorICAgICAqIEBwYXJhbSBzb3VyY2UgVmFsdWUgdG8gYmUgY29udmVydGVkCisgICAgICogQHBhcmFtIG1heGltdW1EaWdpdHMgVGhlIG1vc3QgZGlnaXRzIHdoaWNoIHNob3VsZCBiZSBjb252ZXJ0ZWQuCisgICAgICogSWYgbWF4aW11bURpZ2l0cyBpcyBsb3dlciB0aGFuIHRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzCisgICAgICogaW4gc291cmNlLCB0aGUgcmVwcmVzZW50YXRpb24gd2lsbCBiZSByb3VuZGVkLiAgSWdub3JlZCBpZiA8PSAwLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldChCaWdJbnRlZ2VyIHNvdXJjZSwgaW50IG1heGltdW1EaWdpdHMpIHsKKyAgICAgICAgU3RyaW5nIHN0cmluZ0RpZ2l0cyA9IHNvdXJjZS50b1N0cmluZygpOworCisgICAgICAgIGNvdW50ID0gZGVjaW1hbEF0ID0gc3RyaW5nRGlnaXRzLmxlbmd0aCgpOworCisgICAgICAgIC8vIERvbid0IGNvcHkgdHJhaWxpbmcgemVyb3MKKyAgICAgICAgd2hpbGUgKGNvdW50ID4gMSAmJiBzdHJpbmdEaWdpdHMuY2hhckF0KGNvdW50IC0gMSkgPT0gJzAnKSAtLWNvdW50OworCisgICAgICAgIGludCBvZmZzZXQgPSAwOworICAgICAgICBpZiAoc3RyaW5nRGlnaXRzLmNoYXJBdCgwKSA9PSAnLScpIHsKKyAgICAgICAgICAgICsrb2Zmc2V0OworICAgICAgICAgICAgLS1jb3VudDsKKyAgICAgICAgICAgIC0tZGVjaW1hbEF0OworICAgICAgICB9CisKKyAgICAgICAgZW5zdXJlQ2FwYWNpdHkoY291bnQsIDApOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgIGRpZ2l0c1tpXSA9IChieXRlKSBzdHJpbmdEaWdpdHMuY2hhckF0KGkgKyBvZmZzZXQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1heGltdW1EaWdpdHMgPiAwKSByb3VuZChtYXhpbXVtRGlnaXRzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbnRlcm5hbCBtZXRob2QgdGhhdCBzZXRzIHRoaXMgZGlnaXQgbGlzdCB0byByZXByZXNlbnQgdGhlCisgICAgICogZ2l2ZW4gdmFsdWUuICBUaGUgdmFsdWUgaXMgZ2l2ZW4gYXMgYSBTdHJpbmcgb2YgdGhlIGZvcm1hdAorICAgICAqIHJldHVybmVkIGJ5IEJpZ0RlY2ltYWwuCisgICAgICogQHBhcmFtIHN0cmluZ0RpZ2l0cyB2YWx1ZSB0byBiZSByZXByZXNlbnRlZCB3aXRoIHRoZSBmb2xsb3dpbmcKKyAgICAgKiBzeW50YXgsIGV4cHJlc3NlZCBhcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbjogLT9cZCouP1xkKgorICAgICAqIE11c3Qgbm90IGJlIGFuIGVtcHR5IHN0cmluZy4KKyAgICAgKiBAcGFyYW0gbWF4aW11bURpZ2l0cyBUaGUgbW9zdCBkaWdpdHMgd2hpY2ggc2hvdWxkIGJlIGNvbnZlcnRlZC4KKyAgICAgKiBJZiBtYXhpbXVtRGlnaXRzIGlzIGxvd2VyIHRoYW4gdGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMKKyAgICAgKiBpbiBzb3VyY2UsIHRoZSByZXByZXNlbnRhdGlvbiB3aWxsIGJlIHJvdW5kZWQuICBJZ25vcmVkIGlmIDw9IDAuCisgICAgICogQHBhcmFtIGZpeGVkUG9pbnQgSWYgdHJ1ZSwgdGhlbiBtYXhpbXVtRGlnaXRzIGlzIHRoZSBtYXhpbXVtCisgICAgICogZnJhY3Rpb25hbCBkaWdpdHMgdG8gYmUgY29udmVydGVkLiAgSWYgZmFsc2UsIHRvdGFsIGRpZ2l0cy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgc2V0QmlnRGVjaW1hbERpZ2l0cyhTdHJpbmcgc3RyaW5nRGlnaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXhpbXVtRGlnaXRzLCBib29sZWFuIGZpeGVkUG9pbnQpIHsKKyAgICAgICAgLy8gRmluZCB0aGUgZmlyc3Qgbm9uLXplcm8gZGlnaXQsIHRoZSBkZWNpbWFsLCBhbmQgdGhlIGxhc3Qgbm9uLXplcm8gZGlnaXQuCisgICAgICAgIGludCBmaXJzdD0tMSwgbGFzdD1zdHJpbmdEaWdpdHMubGVuZ3RoKCktMSwgZGVjaW1hbD0tMTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyAoZmlyc3Q8MCB8fCBkZWNpbWFsPDApICYmIGk8PWxhc3Q7ICsraSkgeworICAgICAgICAgICAgY2hhciBjID0gc3RyaW5nRGlnaXRzLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGlmIChjID09ICcuJykgeworICAgICAgICAgICAgICAgIGRlY2ltYWwgPSBpOworICAgICAgICAgICAgfSBlbHNlIGlmIChmaXJzdCA8IDAgJiYgKGMgPj0gJzEnICYmIGMgPD0gJzknKSkgeworICAgICAgICAgICAgICAgIGZpcnN0ID0gaTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChmaXJzdCA8IDApIHsKKyAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIGtub3cgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIG5vbi16ZXJvIGRpZ2l0LCBzbyB0aGUKKyAgICAgICAgLy8gZm9sbG93aW5nIGxvb3AgaXMgc2FmZS4KKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgY2hhciBjID0gc3RyaW5nRGlnaXRzLmNoYXJBdChsYXN0KTsKKyAgICAgICAgICAgIGlmIChjICE9ICcwJyAmJiBjICE9ICcuJykgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLS1sYXN0OworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRlY2ltYWwgPCAwKSB7CisgICAgICAgICAgICBkZWNpbWFsID0gc3RyaW5nRGlnaXRzLmxlbmd0aCgpOworICAgICAgICB9CisKKyAgICAgICAgY291bnQgPSBsYXN0IC0gZmlyc3Q7CisgICAgICAgIGlmIChkZWNpbWFsIDwgZmlyc3QgfHwgZGVjaW1hbCA+IGxhc3QpIHsKKyAgICAgICAgICAgICsrY291bnQ7CisgICAgICAgIH0KKyAgICAgICAgZGVjaW1hbEF0ID0gZGVjaW1hbCAtIGZpcnN0OworICAgICAgICBpZiAoZGVjaW1hbEF0IDwgMCkgeworICAgICAgICAgICAgKytkZWNpbWFsQXQ7CisgICAgICAgIH0KKworICAgICAgICBlbnN1cmVDYXBhY2l0eShjb3VudCwgMCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICAgICAgZGlnaXRzW2ldID0gKGJ5dGUpIHN0cmluZ0RpZ2l0cy5jaGFyQXQoZmlyc3QrKyk7CisgICAgICAgICAgICBpZiAoZmlyc3QgPT0gZGVjaW1hbCkgeworICAgICAgICAgICAgICAgICsrZmlyc3Q7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBFbGltaW5hdGUgZGlnaXRzIGJleW9uZCBtYXhpbXVtIGRpZ2l0cyB0byBiZSBkaXNwbGF5ZWQuCisgICAgICAgIC8vIFJvdW5kIHVwIGlmIGFwcHJvcHJpYXRlLgorICAgICAgICByb3VuZChmaXhlZFBvaW50ID8gKG1heGltdW1EaWdpdHMgKyBkZWNpbWFsQXQpIDogbWF4aW11bURpZ2l0cyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBkaWdpdCBsaXN0IHRvIGEgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVuIEJpZ0RlY2ltYWwgdmFsdWUuCisgICAgICogW2JuZl0KKyAgICAgKiBAcGFyYW0gc291cmNlIFZhbHVlIHRvIGJlIGNvbnZlcnRlZAorICAgICAqIEBwYXJhbSBtYXhpbXVtRGlnaXRzIFRoZSBtb3N0IGRpZ2l0cyB3aGljaCBzaG91bGQgYmUgY29udmVydGVkLgorICAgICAqIElmIG1heGltdW1EaWdpdHMgaXMgbG93ZXIgdGhhbiB0aGUgbnVtYmVyIG9mIHNpZ25pZmljYW50IGRpZ2l0cworICAgICAqIGluIHNvdXJjZSwgdGhlIHJlcHJlc2VudGF0aW9uIHdpbGwgYmUgcm91bmRlZC4gIElnbm9yZWQgaWYgPD0gMC4KKyAgICAgKiBAcGFyYW0gZml4ZWRQb2ludCBJZiB0cnVlLCB0aGVuIG1heGltdW1EaWdpdHMgaXMgdGhlIG1heGltdW0KKyAgICAgKiBmcmFjdGlvbmFsIGRpZ2l0cyB0byBiZSBjb252ZXJ0ZWQuICBJZiBmYWxzZSwgdG90YWwgZGlnaXRzLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldChqYXZhLm1hdGguQmlnRGVjaW1hbCBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXhpbXVtRGlnaXRzLCBib29sZWFuIGZpeGVkUG9pbnQpIHsKKyAgICAgICAgc2V0QmlnRGVjaW1hbERpZ2l0cyhzb3VyY2UudG9TdHJpbmcoKSwgbWF4aW11bURpZ2l0cywgZml4ZWRQb2ludCk7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBTZXQgdGhlIGRpZ2l0IGxpc3QgdG8gYSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZ2l2ZW4gQmlnRGVjaW1hbCB2YWx1ZS4KKyAgICAgKiBbYm5mXQorICAgICAqIEBwYXJhbSBzb3VyY2UgVmFsdWUgdG8gYmUgY29udmVydGVkCisgICAgICogQHBhcmFtIG1heGltdW1EaWdpdHMgVGhlIG1vc3QgZGlnaXRzIHdoaWNoIHNob3VsZCBiZSBjb252ZXJ0ZWQuCisgICAgICogSWYgbWF4aW11bURpZ2l0cyBpcyBsb3dlciB0aGFuIHRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzCisgICAgICogaW4gc291cmNlLCB0aGUgcmVwcmVzZW50YXRpb24gd2lsbCBiZSByb3VuZGVkLiAgSWdub3JlZCBpZiA8PSAwLgorICAgICAqIEBwYXJhbSBmaXhlZFBvaW50IElmIHRydWUsIHRoZW4gbWF4aW11bURpZ2l0cyBpcyB0aGUgbWF4aW11bQorICAgICAqIGZyYWN0aW9uYWwgZGlnaXRzIHRvIGJlIGNvbnZlcnRlZC4gIElmIGZhbHNlLCB0b3RhbCBkaWdpdHMuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgc2V0KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1heGltdW1EaWdpdHMsIGJvb2xlYW4gZml4ZWRQb2ludCkgeworICAgICAgICBzZXRCaWdEZWNpbWFsRGlnaXRzKHNvdXJjZS50b1N0cmluZygpLCBtYXhpbXVtRGlnaXRzLCBmaXhlZFBvaW50KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBlcXVhbGl0eSB0ZXN0IGJldHdlZW4gdHdvIGRpZ2l0IGxpc3RzLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7CisgICAgICAgIGlmICh0aGlzID09IG9iaikgICAgICAgICAgICAgICAgICAgICAgLy8gcXVpY2sgY2hlY2sKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBpZiAoIShvYmogaW5zdGFuY2VvZiBEaWdpdExpc3QpKSAgICAgICAgIC8vICgxKSBzYW1lIG9iamVjdD8KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgRGlnaXRMaXN0IG90aGVyID0gKERpZ2l0TGlzdCkgb2JqOworICAgICAgICBpZiAoY291bnQgIT0gb3RoZXIuY291bnQgfHwKKyAgICAgICAgZGVjaW1hbEF0ICE9IG90aGVyLmRlY2ltYWxBdCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQorICAgICAgICAgICAgaWYgKGRpZ2l0c1tpXSAhPSBvdGhlci5kaWdpdHNbaV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZW5lcmF0ZXMgdGhlIGhhc2ggY29kZSBmb3IgdGhlIGRpZ2l0IGxpc3QuCisgICAgICovCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgaW50IGhhc2hjb2RlID0gZGVjaW1hbEF0OworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykKKyAgICAgICAgICAgIGhhc2hjb2RlID0gaGFzaGNvZGUgKiAzNyArIGRpZ2l0c1tpXTsKKworICAgICAgICByZXR1cm4gaGFzaGNvZGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0cnVlIGlmIHRoaXMgRGlnaXRMaXN0IHJlcHJlc2VudHMgTG9uZy5NSU5fVkFMVUU7CisgICAgICogZmFsc2UsIG90aGVyd2lzZS4gIFRoaXMgaXMgcmVxdWlyZWQgc28gdGhhdCBnZXRMb25nKCkgd29ya3MuCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGlzTG9uZ01JTl9WQUxVRSgpCisgICAgeworICAgICAgICBpZiAoZGVjaW1hbEF0ICE9IGNvdW50IHx8IGNvdW50ICE9IE1BWF9MT05HX0RJR0lUUykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZGlnaXRzW2ldICE9IExPTkdfTUlOX1JFUFtpXSkgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgYnl0ZVtdIExPTkdfTUlOX1JFUDsKKworICAgIHN0YXRpYworICAgIHsKKyAgICAgICAgLy8gU3RvcmUgdGhlIHJlcHJlc2VudGF0aW9uIG9mIExPTkdfTUlOIHdpdGhvdXQgdGhlIGxlYWRpbmcgJy0nCisgICAgICAgIFN0cmluZyBzID0gTG9uZy50b1N0cmluZyhMb25nLk1JTl9WQUxVRSk7CisgICAgICAgIExPTkdfTUlOX1JFUCA9IG5ldyBieXRlW01BWF9MT05HX0RJR0lUU107CisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IE1BWF9MT05HX0RJR0lUUzsgKytpKQorICAgICAgICB7CisgICAgICAgICAgICBMT05HX01JTl9SRVBbaV0gPSAoYnl0ZSlzLmNoYXJBdChpICsgMSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGZsb29yIG9mIHRoZSBsb2cgYmFzZSAxMCBvZiBhIGdpdmVuIGRvdWJsZS4KKyAgICAgKiBUaGlzIG1ldGhvZCBjb21wZW5zYXRlcyBmb3IgaW5hY2N1cmFjaWVzIHdoaWNoIGFyaXNlIG5hdHVyYWxseSB3aGVuCisgICAgICogY29tcHV0aW5nIGxvZ3MsIGFuZCBhbHdheXMgZ2l2ZSB0aGUgY29ycmVjdCB2YWx1ZS4gIFRoZSBwYXJhbWV0ZXIKKyAgICAgKiBtdXN0IGJlIHBvc2l0aXZlIGFuZCBmaW5pdGUuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGxvZzEwKGRvdWJsZSBkKQorICAgIHsKKyAgICAgICAgLy8gVGhlIHJlYXNvbiB0aGlzIHJvdXRpbmUgaXMgbmVlZGVkIGlzIHRoYXQgc2ltcGx5IHRha2luZyB0aGUKKyAgICAgICAgLy8gbG9nIGFuZCBkaXZpZGluZyBieSBsb2cxMCB5aWVsZHMgYSByZXN1bHQgd2hpY2ggbWF5IGJlIG9mZgorICAgICAgICAvLyBieSAxIGR1ZSB0byByb3VuZGluZyBlcnJvcnMuICBGb3IgZXhhbXBsZSwgdGhlIG5haXZlIGxvZzEwCisgICAgICAgIC8vIG9mIDEuMGUzMDAgdGFrZW4gdGhpcyB3YXkgaXMgMjk5LCByYXRoZXIgdGhhbiAzMDAuCisgICAgICAgIGRvdWJsZSBsb2cxMCA9IE1hdGgubG9nKGQpIC8gTE9HMTA7CisgICAgICAgIGludCBpbG9nMTAgPSAoaW50KU1hdGguZmxvb3IobG9nMTApOworICAgICAgICAvLyBQb3NpdGl2ZSBsb2dzIGNvdWxkIGJlIHRvbyBzbWFsbCwgZS5nLiAwLjk5IGluc3RlYWQgb2YgMS4wCisgICAgICAgIGlmIChsb2cxMCA+IDAgJiYgZCA+PSBNYXRoLnBvdygxMCwgaWxvZzEwICsgMSkpCisgICAgICAgIHsKKyAgICAgICAgICAgICsraWxvZzEwOworICAgICAgICB9CisgICAgICAgIC8vIE5lZ2F0aXZlIGxvZ3MgY291bGQgYmUgdG9vIGJpZywgZS5nLiAtMC45OSBpbnN0ZWFkIG9mIC0xLjAKKyAgICAgICAgZWxzZSBpZiAobG9nMTAgPCAwICYmIGQgPCBNYXRoLnBvdygxMCwgaWxvZzEwKSkKKyAgICAgICAgeworICAgICAgICAgICAgLS1pbG9nMTA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGlsb2cxMDsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBkb3VibGUgTE9HMTAgPSBNYXRoLmxvZygxMC4wKTsKKworICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQorICAgIHsKKyAgICAgICAgaWYgKGlzWmVybygpKSByZXR1cm4gIjAiOworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigiMC4iKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPGNvdW50OyArK2kpIGJ1Zi5hcHBlbmQoKGNoYXIpZGlnaXRzW2ldKTsKKyAgICAgICAgYnVmLmFwcGVuZCgieDEwXiIpOworICAgICAgICBidWYuYXBwZW5kKGRlY2ltYWxBdCk7CisgICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L0hhbmd1bEphbW9UcmFuc2xpdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9IYW5ndWxKYW1vVHJhbnNsaXRlcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kMThlMzgzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9IYW5ndWxKYW1vVHJhbnNsaXRlcmF0b3IuamF2YQpAQCAtMCwwICsxLDg3IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L0F0dGljL0hhbmd1bEphbW9UcmFuc2xpdGVyYXRvci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA2LzI4IDIwOjQ5OjU0ICQgCisgKiAkUmV2aXNpb246IDEuNyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXh0OworaW1wb3J0IGphdmEudXRpbC4qOworCisvKioKKyAqIEEgdHJhbnNsaXRlcmF0b3IgdGhhdCBjb252ZXJ0cyBIYW5ndWwgdG8gSmFtbworICoKKyAqIDxwPkNvcHlyaWdodCAmY29weTsgSUJNIENvcnBvcmF0aW9uIDE5OTkuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIEBhdXRob3IgTWFyayBEYXZpcworICogQHZlcnNpb24gJFJDU2ZpbGU6IEhhbmd1bEphbW9UcmFuc2xpdGVyYXRvci5qYXZhLHYgJCAkUmV2aXNpb246IDEuNyAkICREYXRlOiAyMDAwLzA2LzI4IDIwOjQ5OjU0ICQKKyAqLworcHVibGljIGNsYXNzIEhhbmd1bEphbW9UcmFuc2xpdGVyYXRvciBleHRlbmRzIFRyYW5zbGl0ZXJhdG9yIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgIlx1MDBBOSBJQk0gQ29ycG9yYXRpb24gMTk5OS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4iOworCisgICAgLyoqCisgICAgICogUGFja2FnZSBhY2Nlc3NpYmxlIElEIGZvciB0aGlzIHRyYW5zbGl0ZXJhdG9yLgorICAgICAqLworICAgIHN0YXRpYyBTdHJpbmcgX0lEID0gIkhhbmd1bC1KYW1vIjsKKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSB0cmFuc2xpdGVyYXRvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgSGFuZ3VsSmFtb1RyYW5zbGl0ZXJhdG9yKCkgeworICAgICAgICBzdXBlcihfSUQsIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEltcGxlbWVudHMge0BsaW5rIFRyYW5zbGl0ZXJhdG9yI2hhbmRsZVRyYW5zbGl0ZXJhdGV9LgorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVRyYW5zbGl0ZXJhdGUoUmVwbGFjZWFibGUgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIG9mZnNldHMsIGJvb2xlYW4gaW5jcmVtZW50YWwpIHsKKyAgICAgICAgaW50IGN1cnNvciA9IG9mZnNldHMuc3RhcnQ7CisgICAgICAgIGludCBsaW1pdCA9IG9mZnNldHMubGltaXQ7CisKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlcGxhY2VtZW50ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICB3aGlsZSAoY3Vyc29yIDwgbGltaXQpIHsKKyAgICAgICAgICAgIGNoYXIgYyA9IGZpbHRlcmVkQ2hhckF0KHRleHQsIGN1cnNvcik7CisgICAgICAgICAgICBpZiAoZGVjb21wb3NlSGFuZ3VsKGMsIHJlcGxhY2VtZW50KSkgeworICAgICAgICAgICAgICAgIHRleHQucmVwbGFjZShjdXJzb3IsIGN1cnNvcisxLCByZXBsYWNlbWVudC50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICBjdXJzb3IgKz0gcmVwbGFjZW1lbnQubGVuZ3RoKCk7IC8vIHNraXAgb3ZlciByZXBsYWNlbWVudAorICAgICAgICAgICAgICAgIGxpbWl0ICs9IHJlcGxhY2VtZW50Lmxlbmd0aCgpIC0gMTsgLy8gZml4IHVwIGxpbWl0CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICsrY3Vyc29yOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgb2Zmc2V0cy5jb250ZXh0TGltaXQgKz0gbGltaXQgLSBvZmZzZXRzLmxpbWl0OworICAgICAgICBvZmZzZXRzLmNvbnRleHRMaW1pdCA9IGxpbWl0OworICAgICAgICBvZmZzZXRzLnN0YXJ0ID0gY3Vyc29yOworICAgIH0KKworCisgICAgc3RhdGljIGZpbmFsIGludCAKKyAgICAgICAgU0Jhc2UgPSAweEFDMDAsIExCYXNlID0gMHgxMTAwLCBWQmFzZSA9IDB4MTE2MSwgVEJhc2UgPSAweDExQTcsCisgICAgICAgIExDb3VudCA9IDE5LCBWQ291bnQgPSAyMSwgVENvdW50ID0gMjgsCisgICAgICAgIE5Db3VudCA9IFZDb3VudCAqIFRDb3VudCwgICAvLyA1ODgKKyAgICAgICAgU0NvdW50ID0gTENvdW50ICogTkNvdW50OyAgIC8vIDExMTcyCisgICAgCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGRlY29tcG9zZUhhbmd1bChjaGFyIHMsIFN0cmluZ0J1ZmZlciByZXN1bHQpIHsKKyAgICAgICAgaW50IFNJbmRleCA9IHMgLSBTQmFzZTsKKyAgICAgICAgaWYgKDAgPiBTSW5kZXggfHwgU0luZGV4ID49IFNDb3VudCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGludCBMID0gTEJhc2UgKyBTSW5kZXggLyBOQ291bnQ7CisgICAgICAgIGludCBWID0gVkJhc2UgKyAoU0luZGV4ICUgTkNvdW50KSAvIFRDb3VudDsKKyAgICAgICAgaW50IFQgPSBUQmFzZSArIFNJbmRleCAlIFRDb3VudDsKKyAgICAgICAgcmVzdWx0LnNldExlbmd0aCgwKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgoY2hhcilMKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgoY2hhcilWKTsKKyAgICAgICAgaWYgKFQgIT0gVEJhc2UpIHJlc3VsdC5hcHBlbmQoKGNoYXIpVCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hYjllZTVmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9IZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvci5qYXZhCkBAIC0wLDAgKzEsMzgwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L0F0dGljL0hleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDYvMjggMjA6NDk6NTQgJCAKKyAqICRSZXZpc2lvbjogMS44ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRleHQ7CitpbXBvcnQgamF2YS51dGlsLio7CisKKy8qKgorICogQSB0cmFuc2xpdGVyYXRvciB0aGF0IGNvbnZlcnRzIGZyb20gaGV4YWRlY2ltYWwgVW5pY29kZSBlc2NhcGUKKyAqIHNlcXVlbmNlcyB0byB0aGUgY2hhcmFjdGVycyB0aGV5IHJlcHJlc2VudC4gIEZvciBleGFtcGxlLCAiVSswMDQwIgorICogYW5kICdcdTAwNDAnLiAgQSBkZWZhdWx0IEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yIHJlY29nbml6ZXMgdGhlCisgKiBwcmVmaXhlcyAiVSsiLCAidSsiLCAiJiM5MjtVIiwgYW5kICImIzkyO3UiLiAgSGV4IHZhbHVlcyBtYXkgYmUKKyAqIHVwcGVyLSBvciBsb3dlcmNhc2UuICBCeSBjYWxsaW5nIHRoZSBhcHBseVBhdHRlcm4oKSBtZXRob2QsIG9uZQorICogb3IgbW9yZSBjdXN0b20gcHJlZml4L3N1ZmZpeCBwYWlycyBtYXkgYmUgc3BlY2lmaWVkLiAgU2VlCisgKiBhcHBseVBhdHRlcm4oKSBmb3IgZGV0YWlscy4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAdmVyc2lvbiAkUkNTZmlsZTogSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IuamF2YSx2ICQgJFJldmlzaW9uOiAxLjggJCAkRGF0ZTogMjAwMC8wNi8yOCAyMDo0OTo1NCAkCisgKi8KK3B1YmxpYyBjbGFzcyBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvciBleHRlbmRzIFRyYW5zbGl0ZXJhdG9yIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgIlx1MDBBOSBJQk0gQ29ycG9yYXRpb24gMTk5OS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4iOworCisgICAgLyoqCisgICAgICogUGFja2FnZSBhY2Nlc3NpYmxlIElEIGZvciB0aGlzIHRyYW5zbGl0ZXJhdG9yLgorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgX0lEID0gIkhleC1Vbmljb2RlIjsKKworICAgIC8qKgorICAgICAqIFRoaXMgcGF0dGVybiBlbmNvZGVzIHRoZSBmb2xsb3dpbmcgc3BlY3MgZm9yIHRoZSBkZWZhdWx0IGNvbnN0cnVjdG9yOgorICAgICAqICAgXFx1MDAwMAorICAgICAqICAgXFxVMDAwMAorICAgICAqICAgdSswMDAwCisgICAgICogICBVKzAwMDAKKyAgICAgKiBUaGUgbXVsdGlwbGUgYmFja3NsYXNoZXMgcmVzb2x2ZSB0byBhIHNpbmdsZSBiYWNrc2xhc2gKKyAgICAgKiBpbiB0aGUgZWZmZWN0aXZlIHByZWZpeC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVGQVVMVF9QQVRURVJOID0gIlxcXFx1MDAwMDtcXFxcVTAwMDA7dSswMDAwO1UrMDAwMCI7CisKKyAgICAvLyBDaGFyYWN0ZXIgY29uc3RhbnRzIGZvciBzcGVjaWFsIHBhdHRlcm4gY2hhcmFjdGVycworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgU0VNSUNPTE9OID0gJzsnOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgWkVSTyAgICAgID0gJzAnOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgUE9VTkQgICAgID0gJyMnOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgQkFDS1NMQVNIID0gJ1xcJzsKKworICAgIC8qKgorICAgICAqIFRoZSBwYXR0ZXJuIGZvciB0aGlzIHRyYW5zbGl0ZXJhdG9yCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgcGF0dGVybjsKKworICAgIC8qKgorICAgICAqIFRoZSBwcm9jZXNzZWQgcGF0dGVybiBzcGVjaWZpY2F0aW9uLiAgU2VlIGFwcGx5UGF0dGVybigpIGZvcgorICAgICAqIGRldGFpbHMuCisgICAgICovCisgICAgcHJpdmF0ZSBjaGFyW10gYWZmaXhlczsKKworICAgIC8qKgorICAgICAqIFRoZSBudW1iZXIgb2YgZGlmZmVyZW50IGFmZml4IHNldHMgaW4gYWZmaXhlcy4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBhZmZpeENvdW50OworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIHRyYW5zbGl0ZXJhdG9yLgorICAgICAqLworICAgIHB1YmxpYyBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcigpIHsKKyAgICAgICAgc3VwZXIoX0lELCBudWxsKTsKKyAgICAgICAgYXBwbHlQYXR0ZXJuKERFRkFVTFRfUEFUVEVSTik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIHRyYW5zbGl0ZXJhdG9yLgorICAgICAqLworICAgIHB1YmxpYyBIZXhUb1VuaWNvZGVUcmFuc2xpdGVyYXRvcihTdHJpbmcgdGhlUGF0dGVybikgeworICAgICAgICB0aGlzKHRoZVBhdHRlcm4sIG51bGwpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgdHJhbnNsaXRlcmF0b3IuCisgICAgICovCisgICAgcHVibGljIEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yKFN0cmluZyB0aGVQYXR0ZXJuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmljb2RlRmlsdGVyIHRoZUZpbHRlcikgeworICAgICAgICBzdXBlcihfSUQsIHRoZUZpbHRlcik7CisgICAgICAgIGFwcGx5UGF0dGVybih0aGVQYXR0ZXJuKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIHBhdHRlcm5zIHJlY29nbml6ZWQgYnkgdGhpcyB0cmFuc2xpdGVyYXRvci4gIE9uZSBvcgorICAgICAqIG1vcmUgcGF0dGVybnMgbWF5IGJlIHNwZWNpZmllZCwgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbnMgKCc7JykuCisgICAgICogRWFjaCBwYXR0ZXJuIGNvbnRhaW5zIHplcm8gb3IgbW9yZSBwcmVmaXggY2hhcmFjdGVycywgb25lIG9yCisgICAgICogbW9yZSBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgemVybyBvciBtb3JlIHN1ZmZpeCBjaGFyYWN0ZXJzLiAgVGhlCisgICAgICogZGlnaXQgY2hhcmFjdGVycyBpbmRpY2F0ZXMgb3B0aW9uYWwgZGlnaXRzICgnIycpIGZvbGxvd2VkIGJ5CisgICAgICogcmVxdWlyZWQgZGlnaXRzICgnMCcpLiAgVGhlIHRvdGFsIG51bWJlciBvZiBkaWdpdHMgY2Fubm90CisgICAgICogZXhjZWVkIDQsIGFuZCBtdXN0IGJlIGF0IGxlYXN0IDEgcmVxdWlyZWQgZGlnaXQuICBVc2UgYQorICAgICAqIGJhY2tzbGFzaCAoJ1xcJykgdG8gZXNjYXBlIGFueSBvZiB0aGUgc3BlY2lhbCBjaGFyYWN0ZXJzLiAgQW4KKyAgICAgKiBlbXB0eSBwYXR0ZXJuIGlzIGFsbG93ZWQ7IGl0IHNwZWNpZmllcyBhIHRyYW5zbGl0ZXJhdG9yIHRoYXQKKyAgICAgKiBkb2VzIG5vdGhpbmcuCisgICAgICoKKyAgICAgKiA8cD5FeGFtcGxlOiAiVSswMDAwOzwjIyMwPiIgc3BlY2lmaWVzIHR3byBwYXR0ZXJucy4gIFRoZSBmaXJzdAorICAgICAqIGhhcyBhIHByZWZpeCBvZiAiVSsiLCBleGFjdGx5IGZvdXIgZGlnaXRzLCBhbmQgbm8gc3VmZml4LiAgVGhlCisgICAgICogc2Vjb25kIGhhcyBhIHByZWZpeCBvZiAiPCIsIGJldHdlZW4gb25lIGFuZCBmb3VyIGRpZ2l0cywgYW5kIGEKKyAgICAgKiBzdWZmaXggb2YgIj4iLgorICAgICAqCisgICAgICogPHA+PHByZT4KKyAgICAgKiBwYXR0ZXJuIDo9IHNwZWMgfCAoIHBhdHRlcm4gJzsnIHNwZWMgKQorICAgICAqIHNwZWMgOj0gcHJlZml4LWNoYXIqIGRpZ2l0LXNwZWMgc3VmZml4LWNoYXIqCisgICAgICogZGlnaXQtc3BlYyA6PSAnIycqICcwJysKKyAgICAgKiBwcmVmaXgtY2hhciA6PSBbXnNwZWNpYWwtY2hhcl0gfCAnXFwnIHNwZWNpYWwtY2hhcgorICAgICAqIHN1ZmZpeC1jaGFyIDo9IFtec3BlY2lhbC1jaGFyXSB8ICdcXCcgc3BlY2lhbC1jaGFyCisgICAgICogc3BlY2lhbC1jaGFyIDo9ICc7JyB8ICcwJyB8ICcjJyB8ICdcXCcKKyAgICAgKiA8L3ByZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhcHBseVBhdHRlcm4oU3RyaW5nIHBhdHRlcm4pIHsKKworICAgICAgICAvKiBUaGUgcGF0dGVybiBpcyBwcm9jZXNzZWQgYW5kIHN0b3JlZCBpbiBhZmZpeGVzLiAgVGhlIHBhdHRlcm4KKyAgICAgICAgICogY29uc2lzdHMgb2YgemVybyBvciBtb3JlIGFmZml4ZXMuICBFYWNoIGFmZml4IGlzIHBhcnNlZCB0bworICAgICAgICAgKiBkZXRlcm1pbmUgdGhlIHByZWZpeCwgc3VmZml4LCBtaW5pbXVtIGRpZ2l0IGNvdW50LCBhbmQgbWF4aW11bQorICAgICAgICAgKiBkaWdpdCBjb3VudC4gIFRoZXNlIHZhbHVlcyBhcmUgdGhlbiBzdG9yZWQgYXMgYSBmb3VyIGNoYXJhY3RlcgorICAgICAgICAgKiBoZWFkZXIuICBUaGF0IGlzLCB0aGVpciBudW1lcmljIHZhbHVlcyBhcmUgY2FzdCB0byBVQ2hhcnMgYW5kCisgICAgICAgICAqIHN0b3JlZCBpbiB0aGUgc3RyaW5nLiAgRm9sbG93aW5nIHRoZXNlIGZvdXIgY2hhcmFjdGVycywgdGhlIHByZWZpeAorICAgICAgICAgKiBjaGFyYWN0ZXJzLCB0aGVuIHN1ZmZpeCBjaGFyYWN0ZXJzIGFyZSBzdG9yZWQuICBFYWNoIHNwZWMgdGFrZXMKKyAgICAgICAgICogbis0IGNoYXJhY3RlcnMsIHdoZXJlIG4gaXMgdGhlIHRvdGFsIGxlbmd0aCBvZiB0aGUgcHJlZml4IGFuZAorICAgICAgICAgKiBzdWZmaXguCisgICAgICAgICAqLworCisgICAgICAgIFN0cmluZ0J1ZmZlciBhZmZpeGVzID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBhZmZpeENvdW50ID0gMDsKKworICAgICAgICAvKiBUaGUgbW9kZSBzcGVjaWZpZXMgd2hlcmUgd2UgYXJlIGluIGVhY2ggc3BlYy4KKyAgICAgICAgICogbW9kZSAwID0gaW4gcHJlZml4CisgICAgICAgICAqIG1vZGUgMSA9IGluIG9wdGlvbmFsIGRpZ2l0cyAoIykKKyAgICAgICAgICogbW9kZSAyID0gaW4gcmVxdWlyZWQgZGlnaXRzICgwKQorICAgICAgICAgKiBtb2RlIDMgPSBpbiBzdWZmaXgKKyAgICAgICAgICovCisgICAgICAgIGludCBtb2RlID0gMDsKKworICAgICAgICBpbnQgcHJlZml4TGVuID0gMCwgc3VmZml4TGVuID0gMCwgbWluRGlnaXRzID0gMCwgbWF4RGlnaXRzID0gMDsKKyAgICAgICAgaW50IHN0YXJ0ID0gMDsKKworICAgICAgICAvKiBUbyBtYWtlIHBhcnNpbmcgZWFzaWVyLCB3ZSBhcHBlbmQgYSB2aXJ0dWFsICc7JyBhdCB0aGUgZW5kIG9mCisgICAgICAgICAqIHRoZSBwYXR0ZXJuIHN0cmluZywgaWYgdGhlcmUgaXNuJ3Qgb25lIGFscmVhZHkuICBXaGVuIHdlIGdldCB0bworICAgICAgICAgKiB0aGUgaW5kZXggcGF0dGVybi5sZW5ndGgoKSAodGhhdCBpcywgb25lIHBhc3QgdGhlIGVuZCksIHdlCisgICAgICAgICAqIGNyZWF0ZSBhIHZpcnR1YWwgJzsnIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgICovCisgICAgICAgIGNoYXIgYyA9IDA7ICAgICAgICAgICAgICAgIC8vIFRoZXNlIGFyZSBvdXRzaWRlIHRoZSBsb29wIHNvIHdlIGNhbgorICAgICAgICBib29sZWFuIGlzTGl0ZXJhbCA9IGZhbHNlOyAvLyBzZWUgdGhlIHByZXZpb3VzIGNoYXJhY3Rlci4uLgorICAgICAgICBmb3IgKGludCBpPTA7IGk8PXBhdHRlcm4ubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSB2aXJ0dWFsIHRyYWlsaW5nICc7JyBpZiBuZWNlc3NhcnkKKyAgICAgICAgICAgIGlmIChpID09IHBhdHRlcm4ubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbGFzdCBjaGFyYWN0ZXIgd2FzIG5vdCBhIG5vbi1saXRlcmFsICc7Jy4uLgorICAgICAgICAgICAgICAgIGlmIChpID4gMCAmJiAhKGMgPT0gU0VNSUNPTE9OICYmICFpc0xpdGVyYWwpKSB7CisgICAgICAgICAgICAgICAgICAgIGMgPSBTRU1JQ09MT047CisgICAgICAgICAgICAgICAgICAgIGlzTGl0ZXJhbCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYyA9IHBhdHRlcm4uY2hhckF0KGkpOworICAgICAgICAgICAgICAgIGlzTGl0ZXJhbCA9IGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoYyA9PSBCQUNLU0xBU0gpIHsKKyAgICAgICAgICAgICAgICBpZiAoKGkrMSk8cGF0dGVybi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBpc0xpdGVyYWwgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBjID0gcGF0dGVybi5jaGFyQXQoKytpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBUcmFpbGluZyAnXFwnCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRyYWlsaW5nICdcXCciKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghaXNMaXRlcmFsKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChjKSB7CisgICAgICAgICAgICAgICAgY2FzZSBQT1VORDoKKyAgICAgICAgICAgICAgICAgICAgLy8gU2VlaW5nIGEgJyMnIG1vdmVzIHVzIGZyb20gbW9kZSAwIChwcmVmaXgpIHRvIG1vZGUgMQorICAgICAgICAgICAgICAgICAgICAvLyAob3B0aW9uYWwgZGlnaXRzKS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgKyttb2RlOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1vZGUgIT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVW5xdW90ZWQgJyMnCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJVbnF1b3RlZCAnIyciKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICArK21heERpZ2l0czsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBaRVJPOgorICAgICAgICAgICAgICAgICAgICAvLyBTZWVpbmcgYSAnMCcgbW92ZXMgdXMgdG8gbW9kZSAyIChyZXF1aXJlZCBkaWdpdHMpCisgICAgICAgICAgICAgICAgICAgIGlmIChtb2RlIDwgMikgeworICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSA9IDI7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobW9kZSAhPSAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBVbnF1b3RlZCAnMCcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlVucXVvdGVkICcwJyIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICsrbWluRGlnaXRzOworICAgICAgICAgICAgICAgICAgICArK21heERpZ2l0czsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBTRU1JQ09MT046CisgICAgICAgICAgICAgICAgICAgIGlmIChtaW5EaWdpdHMgPCAxIHx8IG1heERpZ2l0cyA+IDQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEludmFsaWQgbWluL21heCBkaWdpdCBjb3VudAorICAgICAgICAgICAgICAgICAgICAgICAgfHwgcHJlZml4TGVuID4gMHhGRkZGIHx8IHN1ZmZpeExlbiA+IDB4RkZGRikgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gU3VmZml4IG9yIHByZWZpeCB0b28gbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiU3VmZml4IG9yIHByZWZpeCB0b28gbG9uZyIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIHdhcyBubyBwcmVmaXggYW5kIG5vIHN1ZmZpeCwgdGhlbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gaGVhZGVyIHdpbGwgbm90IGhhdmUgYmVlbiBhbGxvY2F0ZWQgeWV0LiAgV2UgbmVlZAorICAgICAgICAgICAgICAgICAgICAvLyBhbGxvY2F0ZSB0aGUgaGVhZGVyIG5vdy4KKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID09IGFmZml4ZXMubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFmZml4ZXMuYXBwZW5kKCJBQUFBIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLy8gRmlsbCBpbiA0LWNoYXJhY3RlciBoZWFkZXIKKyAgICAgICAgICAgICAgICAgICAgYWZmaXhlcy5zZXRDaGFyQXQoc3RhcnQrKywgKGNoYXIpIHByZWZpeExlbik7CisgICAgICAgICAgICAgICAgICAgIGFmZml4ZXMuc2V0Q2hhckF0KHN0YXJ0KyssIChjaGFyKSBzdWZmaXhMZW4pOworICAgICAgICAgICAgICAgICAgICBhZmZpeGVzLnNldENoYXJBdChzdGFydCsrLCAoY2hhcikgbWluRGlnaXRzKTsKKyAgICAgICAgICAgICAgICAgICAgYWZmaXhlcy5zZXRDaGFyQXQoc3RhcnQsICAgKGNoYXIpIG1heERpZ2l0cyk7CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gYWZmaXhlcy5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgKythZmZpeENvdW50OworICAgICAgICAgICAgICAgICAgICBwcmVmaXhMZW4gPSBzdWZmaXhMZW4gPSBtaW5EaWdpdHMgPSBtYXhEaWdpdHMgPSBtb2RlID0gMDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgaXNMaXRlcmFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNMaXRlcmFsKSB7CisgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID09IGFmZml4ZXMubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzcGFjZSBmb3IgdGhlIGhlYWRlci4gIEFwcGVuZCBhbnkgZm91cgorICAgICAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzIGFzIHBsYWNlIGhvbGRlcnMgZm9yIHRoZSBoZWFkZXIgdmFsdWVzLgorICAgICAgICAgICAgICAgICAgICAvLyBXZSBmaWxsIHRoZXNlIGluIHdoZW4gd2UgcGFyc2UgdGhlICc7Jy4KKyAgICAgICAgICAgICAgICAgICAgYWZmaXhlcy5hcHBlbmQoIkFBQUEiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYWZmaXhlcy5hcHBlbmQoYyk7CisgICAgICAgICAgICAgICAgaWYgKG1vZGUgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICArK3ByZWZpeExlbjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBBbnkgbGl0ZXJhbCBvdXRzaWRlIHRoZSBwcmVmaXggbW92ZXMgdXMgaW50byBtb2RlIDMKKyAgICAgICAgICAgICAgICAgICAgLy8gKHN1ZmZpeCkKKyAgICAgICAgICAgICAgICAgICAgbW9kZSA9IDM7CisgICAgICAgICAgICAgICAgICAgICsrc3VmZml4TGVuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIG9ubHkgbW9kaWZ5IHRoZSBwYXR0ZXJuIGFuZCBhZmZpeGVzIG1lbWJlciB2YXJpYWJsZXMgaWYKKyAgICAgICAgLy8gd2UgZ2V0IHRvIHRoaXMgcG9pbnQsIHRoYXQgaXMsIGlmIHRoZSBwYXJzZSBzdWNjZWVkcy4KKyAgICAgICAgdGhpcy5wYXR0ZXJuID0gcGF0dGVybjsKKyAgICAgICAgaW50IGxlbiA9IGFmZml4ZXMubGVuZ3RoKCk7CisgICAgICAgIHRoaXMuYWZmaXhlcyA9IG5ldyBjaGFyW2xlbl07CisgICAgICAgIGFmZml4ZXMuZ2V0Q2hhcnMoMCwgbGVuLCB0aGlzLmFmZml4ZXMsIDApOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGlzIHRyYW5zbGl0ZXJhdG9yJ3MgcGF0dGVybi4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvUGF0dGVybigpIHsKKyAgICAgICAgcmV0dXJuIHBhdHRlcm47CisgICAgfQorCisgICAgLyoqCisgICAgICogSW1wbGVtZW50cyB7QGxpbmsgVHJhbnNsaXRlcmF0b3IjaGFuZGxlVHJhbnNsaXRlcmF0ZX0uCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlVHJhbnNsaXRlcmF0ZShSZXBsYWNlYWJsZSB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gb2Zmc2V0cywgYm9vbGVhbiBpc0luY3JlbWVudGFsKSB7CisgICAgICAgIGludCBjdXJzb3IgPSBvZmZzZXRzLnN0YXJ0OworICAgICAgICBpbnQgbGltaXQgPSBvZmZzZXRzLmxpbWl0OworICAgICAgICBpbnQgaSwgaiwgaXBhdDsKKworICAgICAgbG9vcDoKKyAgICAgICAgd2hpbGUgKGN1cnNvciA8IGxpbWl0KSB7CisgICAgICAgICAgICAvLyBMb29wIG92ZXIgdGhlIHNwZWNzIGluIGFmZml4ZXMuICBJZiBhZmZpeENvdW50IGlzIHplcm8gKGFuCisgICAgICAgICAgICAvLyBlbXB0eSBwYXR0ZXJuKSwgdGhlbiB3ZSBkbyBub3RoaW5nLiAgV2UgZXhpdCB0aGlzIGxvb3Agd2hlbgorICAgICAgICAgICAgLy8gd2UgbWF0Y2ggb25lIG9mIHRoZSBzcGVjcy4gIFdlIGV4aXQgdGhpcyBmdW5jdGlvbiAoYnkKKyAgICAgICAgICAgIC8vIGp1bXBpbmcgdG8gZXhpdDogYmVsb3cpIGlmIGEgcGFydGlhbCBtYXRjaCBpcyBkZXRlY3RlZCBhbmQKKyAgICAgICAgICAgIC8vIGlzSW5jcmVtZW50YWwgaXMgdHJ1ZS4KKyAgICAgICAgICAgIGZvciAoaj0wLCBpcGF0PTA7IGo8YWZmaXhDb3VudDsgKytqKSB7CisKKyAgICAgICAgICAgICAgICAvLyBSZWFkIHRoZSBoZWFkZXIKKyAgICAgICAgICAgICAgICBpbnQgcHJlZml4TGVuID0gYWZmaXhlc1tpcGF0KytdOworICAgICAgICAgICAgICAgIGludCBzdWZmaXhMZW4gPSBhZmZpeGVzW2lwYXQrK107CisgICAgICAgICAgICAgICAgaW50IG1pbkRpZ2l0cyA9IGFmZml4ZXNbaXBhdCsrXTsKKyAgICAgICAgICAgICAgICBpbnQgbWF4RGlnaXRzID0gYWZmaXhlc1tpcGF0KytdOworCisgICAgICAgICAgICAgICAgLy8gY3VycyBpcyBhIGNvcHkgb2YgY3Vyc29yIHRoYXQgaXMgYWR2YW5jZWQgb3ZlciB0aGUKKyAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzIGFzIHdlIHBhcnNlIHRoZW0uCisgICAgICAgICAgICAgICAgaW50IGN1cnMgPSBjdXJzb3I7CisgICAgICAgICAgICAgICAgYm9vbGVhbiBtYXRjaCA9IHRydWU7CisKKyAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTxwcmVmaXhMZW47ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoY3VycyA+PSBsaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UndmUgYWxyZWFkeSBtYXRjaGVkIGEgY2hhcmFjdGVyLiAgVGhpcyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGEgcGFydGlhbCBtYXRjaCwgc28gd2UgcmV0dXJuIGlmIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5jcmVtZW50YWwgbW9kZS4gIEluIG5vbi1pbmNyZW1lbnRhbCBtb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGdvIHRvIHRoZSBuZXh0IHNwZWMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlzSW5jcmVtZW50YWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbG9vcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjaGFyIGMgPSBmaWx0ZXJlZENoYXJBdCh0ZXh0LCBjdXJzKyspOworICAgICAgICAgICAgICAgICAgICBpZiAoYyAhPSBhZmZpeGVzW2lwYXQgKyBpXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgdSA9IDA7CisgICAgICAgICAgICAgICAgICAgIGludCBkaWdpdENvdW50ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnMgPj0gbGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgcGFydGlhbCBtYXRjaCBpbiBpbmNyZW1lbnRhbCBtb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJzID4gY3Vyc29yICYmIGlzSW5jcmVtZW50YWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgbG9vcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGlnaXQgPSBDaGFyYWN0ZXIuZGlnaXQoZmlsdGVyZWRDaGFyQXQodGV4dCwgY3VycyksIDE2KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaWdpdCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICsrY3VyczsKKyAgICAgICAgICAgICAgICAgICAgICAgIHUgPDw9IDQ7CisgICAgICAgICAgICAgICAgICAgICAgICB1IHw9IChjaGFyKSBkaWdpdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgrK2RpZ2l0Q291bnQgPT0gbWF4RGlnaXRzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IChkaWdpdENvdW50ID49IG1pbkRpZ2l0cyk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGNoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGk9MDsgaTxzdWZmaXhMZW47ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJzID49IGxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGZvciBwYXJ0aWFsIG1hdGNoIGluIGluY3JlbWVudGFsIG1vZGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJzID4gY3Vyc29yICYmIGlzSW5jcmVtZW50YWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGxvb3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgYyA9IGZpbHRlcmVkQ2hhckF0KHRleHQsIGN1cnMrKyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgIT0gYWZmaXhlc1tpcGF0ICsgcHJlZml4TGVuICsgaV0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobWF0Y2gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIGEgbWF0Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LnJlcGxhY2UoY3Vyc29yLCBjdXJzLCBTdHJpbmcudmFsdWVPZih1KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQgLT0gY3VycyAtIGN1cnNvciAtIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBicmVhayBzdGF0ZW1lbnQgbGVhdmVzIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvb3AgdGhhdCBpcyB0cmF2ZXJzaW5nIHRoZSBzcGVjcyBpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFmZml4ZXMuICBXZSB0aGVuIHBhcnNlIHRoZSBuZXh0IGlucHV0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaXBhdCArPSBwcmVmaXhMZW4gKyBzdWZmaXhMZW47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICsrY3Vyc29yOworICAgICAgICB9CisKKyAgICAgICAgb2Zmc2V0cy5jb250ZXh0TGltaXQgKz0gbGltaXQgLSBvZmZzZXRzLmxpbWl0OworICAgICAgICBvZmZzZXRzLmxpbWl0ID0gbGltaXQ7CisgICAgICAgIG9mZnNldHMuc3RhcnQgPSBjdXJzb3I7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9KYW1vSGFuZ3VsVHJhbnNsaXRlcmF0b3IuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvSmFtb0hhbmd1bFRyYW5zbGl0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzIxZDU1ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvSmFtb0hhbmd1bFRyYW5zbGl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSwxMzYgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvQXR0aWMvSmFtb0hhbmd1bFRyYW5zbGl0ZXJhdG9yLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDYvMjggMjA6NDk6NTQgJCAKKyAqICRSZXZpc2lvbjogMS44ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRleHQ7CitpbXBvcnQgamF2YS51dGlsLio7CisKKy8qKgorICogQSB0cmFuc2xpdGVyYXRvciB0aGF0IGNvbnZlcnRzIEphbW8gdG8gSGFuZ3VsCisgKgorICogPHA+Q29weXJpZ2h0ICZjb3B5OyBJQk0gQ29ycG9yYXRpb24gMTk5OS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogQGF1dGhvciBNYXJrIERhdmlzCisgKi8KK3B1YmxpYyBjbGFzcyBKYW1vSGFuZ3VsVHJhbnNsaXRlcmF0b3IgZXh0ZW5kcyBUcmFuc2xpdGVyYXRvciB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICJcdTAwQTkgSUJNIENvcnBvcmF0aW9uIDE5OTkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIC8qKgorICAgICAqIFBhY2thZ2UgYWNjZXNzaWJsZSBJRCBmb3IgdGhpcyB0cmFuc2xpdGVyYXRvci4KKyAgICAgKi8KKyAgICBzdGF0aWMgU3RyaW5nIF9JRCA9ICJKYW1vLUhhbmd1bCI7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgdHJhbnNsaXRlcmF0b3IuCisgICAgICovCisgICAgcHVibGljIEphbW9IYW5ndWxUcmFuc2xpdGVyYXRvcigpIHsKKyAgICAgICAgc3VwZXIoX0lELCBudWxsKTsKKyAgICAgICAgc2V0TWF4aW11bUNvbnRleHRMZW5ndGgoMyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW1wbGVtZW50cyB7QGxpbmsgVHJhbnNsaXRlcmF0b3IjaGFuZGxlVHJhbnNsaXRlcmF0ZX0uCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlVHJhbnNsaXRlcmF0ZShSZXBsYWNlYWJsZSB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gb2Zmc2V0cywgYm9vbGVhbiBpbmNyZW1lbnRhbCkgeworICAgICAgICAvKioKKyAgICAgICAgICogUGVyZm9ybXMgdHJhbnNsaXRlcmF0aW9uIGNoYW5naW5nIEphbW8gdG8gSGFuZ3VsIAorICAgICAgICAgKi8KKyAgICAgICAgaW50IGN1cnNvciA9IG9mZnNldHMuc3RhcnQ7CisgICAgICAgIGludCBsaW1pdCA9IG9mZnNldHMubGltaXQ7CisgICAgICAgIGlmIChjdXJzb3IgPj0gbGltaXQpIHJldHVybjsKKyAgICAgICAgCisgICAgICAgIGludCBjb3VudFtdID0gbmV3IGludFsxXTsKKworICAgICAgICBjaGFyIGxhc3QgPSBmaWx0ZXJlZENoYXJBdCh0ZXh0LCBjdXJzb3IrKyk7CisgICAgICAgIHdoaWxlIChjdXJzb3IgPD0gbGltaXQpIHsKKyAgICAgICAgICAgIGNoYXIgbmV4dCA9IDB4RkZGRjsgLy8gZ28gb3ZlciBlbmQgb2Ygc3RyaW5nLCBqdXN0IGluIGNhc2UKKyAgICAgICAgICAgIGlmIChjdXJzb3IgPCBsaW1pdCkgbmV4dCA9IGZpbHRlcmVkQ2hhckF0KHRleHQsIGN1cnNvcik7CisgICAgICAgICAgICBjaGFyIHJlcGxhY2VtZW50ID0gY29tcG9zZUhhbmd1bChsYXN0LCBuZXh0LCBjb3VudCk7CisgICAgICAgICAgICBpZiAocmVwbGFjZW1lbnQgIT0gbGFzdCkgeworICAgICAgICAgICAgICAgIHRleHQucmVwbGFjZShjdXJzb3ItMSwgY3Vyc29yLTEgKyBjb3VudFswXSwgU3RyaW5nLnZhbHVlT2YocmVwbGFjZW1lbnQpKTsKKyAgICAgICAgICAgICAgICBsaW1pdCA9IGxpbWl0IC0gY291bnRbMF0gKyAxOyAvLyBmaXggdXAgbGltaXQgMiA9PiAtMSwgMSA9PiAwCisgICAgICAgICAgICAgICAgbGFzdCA9IHJlcGxhY2VtZW50OworICAgICAgICAgICAgICAgIGlmIChuZXh0ID09IDB4RkZGRikgYnJlYWs7CisgICAgICAgICAgICAgICAgLy8gZG9uJ3QgY2hhbmdlIGN1cnNvciwgc28gd2UgcmV2aXNpdCBjaGFyCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICsrY3Vyc29yOworICAgICAgICAgICAgICAgIGxhc3QgPSBuZXh0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICArK2xpbWl0OworICAgICAgICBvZmZzZXRzLmNvbnRleHRMaW1pdCArPSBsaW1pdCAtIG9mZnNldHMubGltaXQ7CisgICAgICAgIG9mZnNldHMubGltaXQgPSBsaW1pdDsKKyAgICAgICAgb2Zmc2V0cy5zdGFydCA9IGN1cnNvcjsKKyAgICB9CisgICAgCisKKyAgICBzdGF0aWMgZmluYWwgaW50IAorICAgICAgICBTQmFzZSA9IDB4QUMwMCwgTEJhc2UgPSAweDExMDAsIFZCYXNlID0gMHgxMTYxLCBUQmFzZSA9IDB4MTFBNywKKyAgICAgICAgTENvdW50ID0gMTksIFZDb3VudCA9IDIxLCBUQ291bnQgPSAyOCwKKyAgICAgICAgTkNvdW50ID0gVkNvdW50ICogVENvdW50LCAgIC8vIDU4OAorICAgICAgICBTQ291bnQgPSBMQ291bnQgKiBOQ291bnQsICAgLy8gMTExNzIKKyAgICAgICAgTExpbWl0ID0gMHgxMjAwOworICAgCisgICAvKioKKyAgICAqIFJldHVybiBjb21wb3NlZCBjaGFyYWN0ZXIgKGlmIGl0IGlzIGEgbW9kZXJuIGphbW8pCisgICAgKiBsYXN0IG90aGVyd2lzZS4KKyAgICAqIElmIHRoZXJlIGlzIGEgcmVwbGFjZW1lbnQsIHJldHVybnMgY291bnRbMF0gPSAyIGlmIGNoIHdhcyB1c2VkLCAxIG90aGVyd2lzZQorICAgICovCisgICBwdWJsaWMgc3RhdGljIGNoYXIgY29tcG9zZUhhbmd1bChjaGFyIGxhc3QsIGNoYXIgY2gsIGludFtdIGNvdW50KSB7CisgICAgICBjb3VudFswXSA9IDI7IC8vIGRlZmF1bHQgaXMgcmVwbGFjZSAyIGNoYXJzCisgICAgICAvLyBjaGVjayB0byBzZWUgaWYgdHdvIGN1cnJlbnQgY2hhcmFjdGVycyBhcmUgTCBhbmQgVgorICAgICAgaW50IExJbmRleCA9IGxhc3QgLSBMQmFzZTsKKyAgICAgIGlmICgwIDw9IExJbmRleCAmJiBMSW5kZXggPCBMQ291bnQpIHsKKyAgICAgICAgICBpbnQgVkluZGV4ID0gY2ggLSBWQmFzZTsKKyAgICAgICAgICBpZiAoMCA8PSBWSW5kZXggJiYgVkluZGV4IDwgVkNvdW50KSB7CisgICAgICAgICAgICAgIC8vIG1ha2Ugc3lsbGFibGUgb2YgZm9ybSBMVgorICAgICAgICAgICAgICByZXR1cm4gKGNoYXIpKFNCYXNlICsgKExJbmRleCAqIFZDb3VudCArIFZJbmRleCkgKiBUQ291bnQpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBpdCBpcyBpc29sYXRlZCwgc28gZml4IQorICAgICAgICAgICAgY291bnRbMF0gPSAxOyAvLyBub3QgdXNpbmcgY2gKKyAgICAgICAgICAgIHJldHVybiAoY2hhcikoU0Jhc2UgKyAoTEluZGV4ICogVkNvdW50KSAqIFRDb3VudCk7CisgICAgICAgICAgfQorICAgICAgfQorICAgICAgCisgICAgICAvLyBpZiBuZWl0aGVyIGNhc2Ugd2FzIHRydWUsIHNlZSBpZiB3ZSBoYXZlIGFuIGlzb2xhdGVkIEphbW8gd2UgbmVlZCB0byBmaXgKKyAgICAgIGlmIChMQmFzZSA8PSBsYXN0ICYmIGxhc3QgPCBMTGltaXQpIHsKKyAgICAgICAgLy8gbmVlZCB0byBmaXg6IGl0IGlzIGVpdGhlciBtZWRpYWwgb3IgZmluYWwhCisgICAgICAgIGludCBWSW5kZXggPSBsYXN0IC0gVkJhc2U7CisgICAgICAgIGlmICgwIDw9IFZJbmRleCAmJiBWSW5kZXggPCBWQ291bnQpIHsKKyAgICAgICAgICAgIExJbmRleCA9IDB4MTEwQiAtIExCYXNlOyAvLyB1c2UgZW1wdHkgY29uc29uYW50CisgICAgICAgICAgICAvLyBtYWtlIHN5bGxhYmxlIG9mIGZvcm0gTFYKKyAgICAgICAgICAgIGNvdW50WzBdID0gMTsgLy8gbm90IHVzaW5nIGNoCisgICAgICAgICAgICByZXR1cm4gKGNoYXIpKFNCYXNlICsgKExJbmRleCAqIFZDb3VudCArIFZJbmRleCkgKiBUQ291bnQpOworICAgICAgICB9CisgICAgICAgIC8vIG9rLCBzZWUgaWYgZmluYWwuIFVzZSBudWxsIGNvbnNvbmFudCArIGEgKyBmaW5hbAorICAgICAgICBpbnQgVEluZGV4ID0gbGFzdCAtIFRCYXNlOworICAgICAgICBpZiAoMCA8PSBUSW5kZXggJiYgVEluZGV4IDw9IFRDb3VudCkgeyAgLy8gbmVlZCB0byBmaXghCisgICAgICAgICAgICBjb3VudFswXSA9IDE7IC8vIG5vdCB1c2luZyBjaAorICAgICAgICAgICAgcmV0dXJuIChjaGFyKSgweEM1NDQgKyBUSW5kZXgpOworICAgICAgICB9CisgICAgICB9CisgCisgICAgICAvLyBjaGVjayB0byBzZWUgaWYgdHdvIGN1cnJlbnQgY2hhcmFjdGVycyBhcmUgTFYgYW5kIFQKKyAgICAgIGludCBTSW5kZXggPSBsYXN0IC0gU0Jhc2U7CisgICAgICBpZiAoMCA8PSBTSW5kZXggJiYgU0luZGV4IDwgU0NvdW50ICYmIChTSW5kZXggJSBUQ291bnQpID09IDApIHsKKyAgICAgICAgICBpbnQgVEluZGV4ID0gY2ggLSBUQmFzZTsKKyAgICAgICAgICBpZiAoMCA8PSBUSW5kZXggJiYgVEluZGV4IDw9IFRDb3VudCkgeworICAgICAgICAgICAgICAvLyBtYWtlIHN5bGxhYmxlIG9mIGZvcm0gTFZUCisgICAgICAgICAgICAgIHJldHVybiAoY2hhcikobGFzdCArIFRJbmRleCk7CisgICAgICAgICAgfQorICAgICAgfQorICAgICAgCisgICAgICByZXR1cm4gbGFzdDsKKyAgICB9ICAgIAorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9ORlJ1bGUuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvTkZSdWxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTQ1NzlkZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvTkZSdWxlLmphdmEKQEAgLTAsMCArMSwxMzIwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L0F0dGljL05GUnVsZS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDA0OjA3OjIxICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXh0OworCitpbXBvcnQgamF2YS50ZXh0Lio7CisKKy8qKgorICogQSBjbGFzcyByZXByZXNudGluZyBhIHNpbmdsZSBydWxlIGluIGEgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LiAgQSBydWxlCisgKiBpbnNlcnRzIGl0cyB0ZXh0IGludG8gdGhlIHJlc3VsdCBzdHJpbmcgYW5kIHRoZW4gcGFzc2VzIGNvbnRyb2wgdG8gaXRzCisgKiBzdWJzdGl0dXRpb25zLCB3aGljaCBkbyB0aGUgc2FtZSB0aGluZy4KKyAqICRSQ1NmaWxlOiBORlJ1bGUuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMC8wMy8xMCAwNDowNzoyMSAkCisgKi8KK2ZpbmFsIGNsYXNzIE5GUnVsZSB7CisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGNvbnN0YW50cworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFB1dHMgYSBjb3B5cmlnaHQgaW4gdGhlIC5jbGFzcyBmaWxlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodE5vdGljZQorICAgICAgICA9ICJDb3B5cmlnaHQgXHUwMGE5MTk5Ny0xOTk4IElCTSBDb3JwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4iOworCisgICAgLyoqCisgICAgICogU3BlY2lhbCBiYXNlIHZhbHVlIHVzZWQgdG8gaWRlbnRpZnkgYSBuZWdhdGl2ZS1udW1iZXIgcnVsZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE5FR0FUSVZFX05VTUJFUl9SVUxFID0gLTE7CisKKyAgICAvKioKKyAgICAgKiBTcGVjaWFsIGJhc2UgdmFsdWUgdXNlZCB0byBpZGVudGlmeSBhbiBpbXByb3BlciBmcmFjdGlvbiAoeC54KSBydWxlCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU1QUk9QRVJfRlJBQ1RJT05fUlVMRSA9IC0yOworCisgICAgLyoqCisgICAgICogU3BlY2lhbCBiYXNlIHZhbHVlIHVzZWQgdG8gaWRlbnRpZnkgYSBwcm9wZXIgZnJhY3Rpb24gKDAueCkgcnVsZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBST1BFUl9GUkFDVElPTl9SVUxFID0gLTM7CisKKyAgICAvKioKKyAgICAgKiBTcGVjaWFsIGJhc2UgdmFsdWUgdXNlZCB0byBpZGVudGlmeSBhIG1hc3RlciBydWxlCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTUFTVEVSX1JVTEUgPSAtNDsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBkYXRhIG1lbWJlcnMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBUaGUgcnVsZSdzIGJhc2UgdmFsdWUKKyAgICAgKi8KKyAgICBwcml2YXRlIGxvbmcgYmFzZVZhbHVlOworCisgICAgLyoqCisgICAgICogVGhlIHJ1bGUncyByYWRpeCAodGhlIHJhZGl4IHRvIHRoZSBwb3dlciBvZiB0aGUgZXhwb25lbnQgZXF1YWxzCisgICAgICogdGhlIHJ1bGUncyBkaXZpc29yKQorICAgICAqLworICAgIHByaXZhdGUgc2hvcnQgcmFkaXggPSAxMDsKKworICAgIC8qKgorICAgICAqIFRoZSBydWxlJ3MgZXhwb25lbnQgKHRoZSByYWR4IHJhc2VkIHRvIHRoZSBwb3dlciBvZiB0aGUgZXhwb25zbnQKKyAgICAgKiBlcXVhbHMgdGhlIHJ1bGUncyBkaXZpc29yKQorICAgICAqLworICAgIHByaXZhdGUgc2hvcnQgZXhwb25lbnQgPSAwOworCisgICAgLyoqCisgICAgICogVGhlIHJ1bGUncyBydWxlIHRleHQuICBXaGVuIGZvcm1hdHRpbmcgYSBudW1iZXIsIHRoZSBydWxlJ3MgdGV4dAorICAgICAqIGlzIGluc2VydGVkIGludG8gdGhlIHJlc3VsdCBzdHJpbmcsIGFuZCB0aGVuIHRoZSB0ZXh0IGZyb20gYW55CisgICAgICogc3Vic3RpdHV0aW9ucyBpcyBpbnNlcnRlZCBpbnRvIHRoZSByZXN1bHQgc3RyaW5nCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgcnVsZVRleHQgPSBudWxsOworCisgICAgLyoqCisgICAgICogVGhlIHJ1bGUncyBmaXJzdCBzdWJzdGl0dXRpb24gKHRoZSBvbmUgd2l0aCB0aGUgbG93ZXIgb2Zmc2V0CisgICAgICogaW50byB0aGUgcnVsZSB0ZXh0KQorICAgICAqLworICAgIHByaXZhdGUgTkZTdWJzdGl0dXRpb24gc3ViMSA9IG51bGw7CisKKyAgICAvKioKKyAgICAgKiBUaGUgcnVsZSdzIHNlY29uZCBzdWJzdGl0dXRpb24gKHRoZSBvbmUgd2l0aCB0aGUgaGlnaGVyIG9mZnNldAorICAgICAqIGludG8gdGhlIHJ1bGUgdGV4dCkKKyAgICAgKi8KKyAgICBwcml2YXRlIE5GU3Vic3RpdHV0aW9uIHN1YjIgPSBudWxsOworCisgICAgLyoqCisgICAgICogVGhlIFJ1bGVCYXNlZE51bWJlckZvcm1hdCB0aGF0IG93bnMgdGhpcyBydWxlCisgICAgICovCisgICAgcHJpdmF0ZSBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyID0gbnVsbDsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjb25zdHJ1Y3Rpb24KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIG9uZSBvciBtb3JlIHJ1bGVzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbiBwYXNzZWQgaW4uCisgICAgICogQHBhcmFtIGRlc2NyaXB0aW9uIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgcnVsZShzKS4KKyAgICAgKiBAcGFyYW0gb3duZXIgVGhlIHJ1bGUgc2V0IGNvbnRhaW5pbmcgdGhlIG5ldyBydWxlKHMpLgorICAgICAqIEBwYXJhbSBwcmVkZWNlc3NvciBUaGUgcnVsZSB0aGF0IHByZWNlZGVzIHRoZSBuZXcgb25lKHMpIGluICJvd25lciIncworICAgICAqIHJ1bGUgbGlzdAorICAgICAqIEBwYXJhbSBvd25lcnNPd25lciBUaGUgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IHRoYXQgb3ducyB0aGUKKyAgICAgKiBydWxlIHNldCB0aGF0IG93bnMgdGhlIG5ldyBydWxlKHMpCisgICAgICogQHJldHVybiBBbiBpbnN0YW5jZSBvZiBORlJ1bGUsIG9yIGFuIGFycmF5IG9mIE5GUnVsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIE9iamVjdCBtYWtlUnVsZXMoU3RyaW5nICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORlJ1bGVTZXQgICAgICAgICAgICAgb3duZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5GUnVsZSAgICAgICAgICAgICAgICBwcmVkZWNlc3NvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IG93bmVyc093bmVyKSB7CisgICAgICAgIC8vIHdlIGtub3cgd2UncmUgbWFraW5nIGF0IGxlYXN0IG9uZSBydWxlLCBzbyBnbyBhaGVhZCBhbmQKKyAgICAgICAgLy8gbmV3IGl0IHVwIGFuZCBpbml0aWFsaXplIGl0cyBiYXNldmFsdWUgYW5kIGRpdmlzb3IKKyAgICAgICAgLy8gKHRoaXMgYWxzbyBzdHJpcHMgdGhlIHJ1bGUgZGVzY3JpcHRvciwgaWYgYW55LCBvZmYgdGhlCisgICAgICAgIC8vIGRlc2NyaXB0b24gc3RyaW5nKQorICAgICAgICBORlJ1bGUgcnVsZTEgPSBuZXcgTkZSdWxlKG93bmVyc093bmVyKTsKKyAgICAgICAgZGVzY3JpcHRpb24gPSBydWxlMS5wYXJzZVJ1bGVEZXNjcmlwdG9yKGRlc2NyaXB0aW9uKTsKKworICAgICAgICAvLyBjaGVjayB0aGUgZGVzY3JpcHRpb24gdG8gc2VlIHdoZXRoZXIgdGhlcmUncyB0ZXh0IGVuY2xvc2VkCisgICAgICAgIC8vIGluIGJyYWNrZXRzCisgICAgICAgIGludCBicmFjazEgPSBkZXNjcmlwdGlvbi5pbmRleE9mKCJbIik7CisgICAgICAgIGludCBicmFjazIgPSBkZXNjcmlwdGlvbi5pbmRleE9mKCJdIik7CisKKyAgICAgICAgLy8gaWYgdGhlIGRlc2NyaXB0aW9uIGRvZXNuJ3QgY29udGFpbiBhIG1hdGNoZWQgcGFpciBvZiBicmFja2V0cywKKyAgICAgICAgLy8gb3IgaWYgaXQncyBvZiBhIHR5cGUgdGhhdCBkb2Vzbid0IHJlY29nbml6ZSBicmFja2V0ZWQgdGV4dCwKKyAgICAgICAgLy8gdGhlbiBsZWF2ZSB0aGUgZGVzY3JpcHRpb24gYWxvbmUsIGluaXRpYWxpemUgdGhlIHJ1bGUncworICAgICAgICAvLyBydWxlIHRleHQgYW5kIHN1YnN0aXR1dGlvbnMsIGFuZCByZXR1cm4gdGhhdCBydWxlCisgICAgICAgIGlmIChicmFjazEgPT0gLTEgfHwgYnJhY2syID09IC0xIHx8IGJyYWNrMSA+IGJyYWNrMgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHJ1bGUxLmdldEJhc2VWYWx1ZSgpID09IFBST1BFUl9GUkFDVElPTl9SVUxFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgcnVsZTEuZ2V0QmFzZVZhbHVlKCkgPT0gTkVHQVRJVkVfTlVNQkVSX1JVTEUpIHsKKyAgICAgICAgICAgIHJ1bGUxLnJ1bGVUZXh0ID0gZGVzY3JpcHRpb247CisgICAgICAgICAgICBydWxlMS5leHRyYWN0U3Vic3RpdHV0aW9ucyhvd25lciwgcHJlZGVjZXNzb3IsIG93bmVyc093bmVyKTsKKyAgICAgICAgICAgIHJldHVybiBydWxlMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIGlmIHRoZSBkZXNjcmlwdGlvbiBkb2VzIGNvbnRhaW4gYSBtYXRjaGVkIHBhaXIgb2YgYnJhY2tldHMsCisgICAgICAgICAgICAvLyB0aGVuIGl0J3MgcmVhbGx5IHNob3J0aGFuZCBmb3IgdHdvIHJ1bGVzICh3aXRoIG9uZSBleGNlcHRpb24pCisgICAgICAgICAgICBORlJ1bGUgcnVsZTIgPSBudWxsOworICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHNidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAgICAgICAgIC8vIHdlJ2xsIGFjdHVhbGx5IG9ubHkgc3BsaXQgdGhlIHJ1bGUgaW50byB0d28gcnVsZXMgaWYgaXRzCisgICAgICAgICAgICAvLyBiYXNlIHZhbHVlIGlzIGFuIGV2ZW4gbXVsdGlwbGUgb2YgaXRzIGRpdmlzb3IgKG9yIGl0J3Mgb25lCisgICAgICAgICAgICAvLyBvZiB0aGUgc3BlY2lhbCBydWxlcykKKyAgICAgICAgICAgIGlmICgocnVsZTEuYmFzZVZhbHVlID4gMAorICAgICAgICAgICAgICAgICAgICAmJiBydWxlMS5iYXNlVmFsdWUgJSAoTWF0aC5wb3cocnVsZTEucmFkaXgsIHJ1bGUxLmV4cG9uZW50KSkgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgfHwgcnVsZTEuYmFzZVZhbHVlID09IElNUFJPUEVSX0ZSQUNUSU9OX1JVTEUKKyAgICAgICAgICAgICAgICAgICAgfHwgcnVsZTEuYmFzZVZhbHVlID09IE1BU1RFUl9SVUxFKSB7CisKKyAgICAgICAgICAgICAgICAvLyBpZiBpdCBwYXNzZXMgdGhhdCB0ZXN0LCBuZXcgdXAgdGhlIHNlY29uZCBydWxlLiAgSWYgdGhlCisgICAgICAgICAgICAgICAgLy8gcnVsZSBzZXQgYm90aCBydWxlcyB3aWxsIGJlbG9uZyB0byBpcyBhIGZyYWN0aW9uIHJ1bGUKKyAgICAgICAgICAgICAgICAvLyBzZXQsIHRoZXkgYm90aCBoYXZlIHRoZSBzYW1lIGJhc2UgdmFsdWU7IG90aGVyd2lzZSwKKyAgICAgICAgICAgICAgICAvLyBpbmNyZW1lbnQgdGhlIG9yaWdpbmFsIHJ1bGUncyBiYXNlIHZhbHVlICgicnVsZTEiIGFjdHVhbGx5CisgICAgICAgICAgICAgICAgLy8gZ29lcyBTRUNPTkQgaW4gdGhlIHJ1bGUgc2V0J3MgcnVsZSBsaXN0KQorICAgICAgICAgICAgICAgIHJ1bGUyID0gbmV3IE5GUnVsZShvd25lcnNPd25lcik7CisgICAgICAgICAgICAgICAgaWYgKHJ1bGUxLmJhc2VWYWx1ZSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJ1bGUyLmJhc2VWYWx1ZSA9IHJ1bGUxLmJhc2VWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFvd25lci5pc0ZyYWN0aW9uU2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrcnVsZTEuYmFzZVZhbHVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGRlc2NyaXB0aW9uIGJlZ2FuIHdpdGggIngueCIgYW5kIGNvbnRhaW5zIGJyYWNrZXRlZAorICAgICAgICAgICAgICAgIC8vIHRleHQsIGl0IGRlc2NyaWJlcyBib3RoIHRoZSBpbXByb3BlciBmcmFjdGlvbiBydWxlIGFuZAorICAgICAgICAgICAgICAgIC8vIHRoZSBwcm9wZXIgZnJhY3Rpb24gcnVsZQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJ1bGUxLmJhc2VWYWx1ZSA9PSBJTVBST1BFUl9GUkFDVElPTl9SVUxFKSB7CisgICAgICAgICAgICAgICAgICAgIHJ1bGUyLmJhc2VWYWx1ZSA9IFBST1BFUl9GUkFDVElPTl9SVUxFOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBkZXNjcmlwdGlvbiBiZWdhbiB3aXRoICJ4LjAiIGFuZCBjb250YWlucyBicmFja2V0ZWQKKyAgICAgICAgICAgICAgICAvLyB0ZXh0LCBpdCBkZXNjcmliZXMgYm90aCB0aGUgbWFzdGVyIHJ1bGUgYW5kIHRoZQorICAgICAgICAgICAgICAgIC8vIGltcHJvcGVyIGZyYWN0aW9uIHJ1bGUKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChydWxlMS5iYXNlVmFsdWUgPT0gTUFTVEVSX1JVTEUpIHsKKyAgICAgICAgICAgICAgICAgICAgcnVsZTIuYmFzZVZhbHVlID0gcnVsZTEuYmFzZVZhbHVlOworICAgICAgICAgICAgICAgICAgICBydWxlMS5iYXNlVmFsdWUgPSBJTVBST1BFUl9GUkFDVElPTl9SVUxFOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGJvdGggcnVsZXMgaGF2ZSB0aGUgc2FtZSByYWRpeCBhbmQgZXhwb25lbnQgKGkuZS4sIHRoZQorICAgICAgICAgICAgICAgIC8vIHNhbWUgZGl2aXNvcikKKyAgICAgICAgICAgICAgICBydWxlMi5yYWRpeCA9IHJ1bGUxLnJhZGl4OworICAgICAgICAgICAgICAgIHJ1bGUyLmV4cG9uZW50ID0gcnVsZTEuZXhwb25lbnQ7CisKKyAgICAgICAgICAgICAgICAvLyBydWxlMidzIHJ1bGUgdGV4dCBvbWl0cyB0aGUgc3R1ZmYgaW4gYnJhY2tldHM6IGluaXRhbGl6ZQorICAgICAgICAgICAgICAgIC8vIGl0cyBydWxlIHRleHQgYW5kIHN1YnN0aXR1dGlvbnMgYWNjb3JkaW5nbHkKKyAgICAgICAgICAgICAgICBzYnVmLmFwcGVuZChkZXNjcmlwdGlvbi5zdWJzdHJpbmcoMCwgYnJhY2sxKSk7CisgICAgICAgICAgICAgICAgaWYgKGJyYWNrMiArIDEgPCBkZXNjcmlwdGlvbi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBzYnVmLmFwcGVuZChkZXNjcmlwdGlvbi5zdWJzdHJpbmcoYnJhY2syICsgMSkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBydWxlMi5ydWxlVGV4dCA9IHNidWYudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBydWxlMi5leHRyYWN0U3Vic3RpdHV0aW9ucyhvd25lciwgcHJlZGVjZXNzb3IsIG93bmVyc093bmVyKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gcnVsZTEncyB0ZXh0IGluY2x1ZGVzIHRoZSB0ZXh0IGluIHRoZSBicmFja2V0cyBidXQgb21pdHMKKyAgICAgICAgICAgIC8vIHRoZSBicmFja2V0cyB0aGVtc2VsdmVzOiBpbml0aWFsaXplIF9pdHNfIHJ1bGUgdGV4dCBhbmQKKyAgICAgICAgICAgIC8vIHN1YnN0aXR1dGlvbnMgYWNjb3JkaW5nbHkKKyAgICAgICAgICAgIHNidWYuc2V0TGVuZ3RoKDApOworICAgICAgICAgICAgc2J1Zi5hcHBlbmQoZGVzY3JpcHRpb24uc3Vic3RyaW5nKDAsIGJyYWNrMSkpOworICAgICAgICAgICAgc2J1Zi5hcHBlbmQoZGVzY3JpcHRpb24uc3Vic3RyaW5nKGJyYWNrMSArIDEsIGJyYWNrMikpOworICAgICAgICAgICAgaWYgKGJyYWNrMiArIDEgPCBkZXNjcmlwdGlvbi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIHNidWYuYXBwZW5kKGRlc2NyaXB0aW9uLnN1YnN0cmluZyhicmFjazIgKyAxKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBydWxlMS5ydWxlVGV4dCA9IHNidWYudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIHJ1bGUxLmV4dHJhY3RTdWJzdGl0dXRpb25zKG93bmVyLCBwcmVkZWNlc3Nvciwgb3duZXJzT3duZXIpOworCisgICAgICAgICAgICAvLyBpZiB3ZSBvbmx5IGhhdmUgb25lIHJ1bGUsIHJldHVybiBpdDsgaWYgd2UgaGF2ZSB0d28sIHJldHVybgorICAgICAgICAgICAgLy8gYSB0d28tZWxlbWVudCBhcnJheSBjb250YWluaW5nIHRoZW0gKG5vdGljZSB0aGF0IHJ1bGUyIGdvZXMKKyAgICAgICAgICAgIC8vIEJFRk9SRSBydWxlMSBpbiB0aGUgbGlzdDogaW4gYWxsIGNhc2VzLCBydWxlMiBPTUlUUyB0aGUKKyAgICAgICAgICAgIC8vIG1hdGVyaWFsIGluIHRoZSBicmFja2V0cyBhbmQgcnVsZTEgSU5DTFVERVMgdGhlIG1hdGVyaWFsCisgICAgICAgICAgICAvLyBpbiB0aGUgYnJhY2tldHMpCisgICAgICAgICAgICBpZiAocnVsZTIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiBydWxlMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBORlJ1bGVbXSB7IHJ1bGUyLCBydWxlMSB9OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTm9taW5hbCBjb25zdHJ1Y3RvciBmb3IgTkZSdWxlLiAgTW9zdCBvZiB0aGUgd29yayBvZiBjb25zdHJ1Y3RpbmcKKyAgICAgKiBhbiBORlJ1bGUgaXMgYWN0dWFsbHkgcGVyZm9ybWVkIGJ5IG1ha2VSdWxlcygpLgorICAgICAqLworICAgIHB1YmxpYyBORlJ1bGUoUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlcikgeworICAgICAgICB0aGlzLmZvcm1hdHRlciA9IGZvcm1hdHRlcjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgcnVsZSdzIHJ1bGUgZGVzY3JpcHRvciAoaS5lLiwgdGhlIGJhc2UKKyAgICAgKiB2YWx1ZSBhbmQvb3Igb3RoZXIgdG9rZW5zIHRoYXQgcHJlY2VkZSB0aGUgcnVsZSdzIHJ1bGUgdGV4dAorICAgICAqIGluIHRoZSBkZXNjcmlwdGlvbikgYW5kIHNldHMgdGhlIHJ1bGUncyBiYXNlIHZhbHVlLCByYWRpeCwgYW5kCisgICAgICogZXhwb25lbnQgYWNjb3JkaW5nIHRvIHRoZSBkZXNjcmlwdG9yLiAgKElmIHRoZSBkZXNjcmlwdGlvbiBkb2Vzbid0CisgICAgICogaW5jbHVkZSBhIHJ1bGUgZGVzY3JpcHRvciwgdGhlbiB0aGlzIGZ1bmN0aW9uIHNldHMgZXZlcnl0aGluZyB0bworICAgICAqIGRlZmF1bHQgdmFsdWVzIGFuZCB0aGUgcnVsZSBzZXQgc2V0cyB0aGUgcnVsZSdzIHJlYWwgYmFzZSB2YWx1ZSkuCisgICAgICogQHBhcmFtIGRlc2NyaXB0aW9uIFRoZSBydWxlJ3MgZGVzY3JpcHRpb24KKyAgICAgKiBAcmV0dXJuIElmICJkZXNjcmlwdGlvbiIgaW5jbHVkZWQgYSBydWxlIGRlc2NyaXB0b3IsIHRoaXMgaXMKKyAgICAgKiAiZGVzY3JpcHRpb24iIHdpdGggdGhlIGRlc2NyaXB0b3IgYW5kIGFueSB0cmFpbGluZyB3aGl0ZXNwYWNlCisgICAgICogc3RyaXBwZWQgb2ZmLiAgT3RoZXJ3aXNlOyBpdCdzICJkZXNjcmlwdG9yIiB1bmNoYW5nZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyBwYXJzZVJ1bGVEZXNjcmlwdG9yKFN0cmluZyBkZXNjcmlwdGlvbikgeworICAgICAgICBTdHJpbmcgZGVzY3JpcHRvcjsKKworICAgICAgICAvLyB0aGUgZGVzY3JpcHRpb24gY29uc2lzdHMgb2YgYSBydWxlIGRlc2NyaXB0b3IgYW5kIGEgcnVsZSBib2R5LAorICAgICAgICAvLyBzZXBhcmF0ZWQgYnkgYSBjb2xvbi4gIFRoZSBydWxlIGRlc2NyaXB0b3IgaXMgb3B0aW9uYWwuICBJZgorICAgICAgICAvLyBpdCdzIG9taXR0ZWQsIGp1c3Qgc2V0IHRoZSBiYXNlIHZhbHVlIHRvIDAuCisgICAgICAgIGludCBwID0gZGVzY3JpcHRpb24uaW5kZXhPZigiOiIpOworICAgICAgICBpZiAocCA9PSAtMSkgeworICAgICAgICAgICAgc2V0QmFzZVZhbHVlKDApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gY29weSB0aGUgZGVzY3JpcHRvciBvdXQgaW50byBpdHMgb3duIHN0cmluZyBhbmQgc3RyaXAgaXQsCisgICAgICAgICAgICAvLyBhbG9uZyB3aXRoIGFueSB0cmFpbGluZyB3aGl0ZXNwYWNlLCBvdXQgb2YgdGhlIG9yaWdpbmFsCisgICAgICAgICAgICAvLyBkZXNjcmlwdGlvbgorICAgICAgICAgICAgZGVzY3JpcHRvciA9IGRlc2NyaXB0aW9uLnN1YnN0cmluZygwLCBwKTsKKyAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgIHdoaWxlIChwIDwgZGVzY3JpcHRpb24ubGVuZ3RoKCkgJiYgQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZShkZXNjcmlwdGlvbi5jaGFyQXQocCkpKQorICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uc3Vic3RyaW5nKHApOworCisgICAgICAgICAgICAvLyBjaGVjayBmaXJzdCB0byBzZWUgaWYgdGhlIHJ1bGUgZGVzY3JpcHRvciBtYXRjaGVzIHRoZSB0b2tlbgorICAgICAgICAgICAgLy8gZm9yIG9uZSBvZiB0aGUgc3BlY2lhbCBydWxlcy4gIElmIGl0IGRvZXMsIHNldCB0aGUgYmFzZQorICAgICAgICAgICAgLy8gdmFsdWUgdG8gdGhlIGNvcnJlY3QgaWRlbnRmaWVyIHZhbHVlCisgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci5lcXVhbHMoIi14IikpIHsKKyAgICAgICAgICAgICAgICBzZXRCYXNlVmFsdWUoTkVHQVRJVkVfTlVNQkVSX1JVTEUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoZGVzY3JpcHRvci5lcXVhbHMoIngueCIpKSB7CisgICAgICAgICAgICAgICAgc2V0QmFzZVZhbHVlKElNUFJPUEVSX0ZSQUNUSU9OX1JVTEUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoZGVzY3JpcHRvci5lcXVhbHMoIjAueCIpKSB7CisgICAgICAgICAgICAgICAgc2V0QmFzZVZhbHVlKFBST1BFUl9GUkFDVElPTl9SVUxFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGRlc2NyaXB0b3IuZXF1YWxzKCJ4LjAiKSkgeworICAgICAgICAgICAgICAgIHNldEJhc2VWYWx1ZShNQVNURVJfUlVMRSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGlmIHRoZSBydWxlIGRlc2NyaXB0b3IgYmVnaW5zIHdpdGggYSBkaWdpdCwgaXQncyBhIGRlc2NyaXB0b3IKKyAgICAgICAgICAgIC8vIGZvciBhIG5vcm1hbCBydWxlCisgICAgICAgICAgICBlbHNlIGlmIChkZXNjcmlwdG9yLmNoYXJBdCgwKSA+PSAnMCcgJiYgZGVzY3JpcHRvci5jaGFyQXQoMCkgPD0gJzknKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHRlbXBWYWx1ZSA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgICAgICAgICBwID0gMDsKKyAgICAgICAgICAgICAgICBjaGFyIGMgPSAnICc7CisKKyAgICAgICAgICAgICAgICAvLyBiZWdpbiBwYXJzaW5nIHRoZSBkZXNjcmlwdG9yOiBjb3B5IGRpZ2l0cworICAgICAgICAgICAgICAgIC8vIGludG8gInRlbXBWYWx1ZSIsIHNraXAgcGVyaW9kcywgY29tbWFzLCBhbmQgc3BhY2VzLAorICAgICAgICAgICAgICAgIC8vIHN0b3Agb24gYSBzbGFzaCBvciA+IHNpZ24gKG9yIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyksCisgICAgICAgICAgICAgICAgLy8gYW5kIHRocm93IGFuIGV4Y2VwdGlvbiBvbiBhbnkgb3RoZXIgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgd2hpbGUgKHAgPCBkZXNjcmlwdG9yLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGMgPSBkZXNjcmlwdG9yLmNoYXJBdChwKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wVmFsdWUuYXBwZW5kKGMpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJy8nIHx8IGMgPT0gJz4nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChDaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKGMpIHx8IGMgPT0gJywnIHx8IGMgPT0gJy4nKSB7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIGNoYXJhY3RlciBpbiBydWxlIGRlc2NyaXB0b3IiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gdGVtcFZhbHVlIG5vdyBjb250YWlucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUKKyAgICAgICAgICAgICAgICAvLyBydWxlJ3MgYmFzZSB2YWx1ZSB3aXRoIHRoZSBwdW5jdHVhdGlvbiBzdHJpcHBlZCBvdXQuCisgICAgICAgICAgICAgICAgLy8gU2V0IHRoZSBydWxlJ3MgYmFzZSB2YWx1ZSBhY2NvcmRpbmdseQorICAgICAgICAgICAgICAgIHNldEJhc2VWYWx1ZShMb25nLnBhcnNlTG9uZyh0ZW1wVmFsdWUudG9TdHJpbmcoKSkpOworCisgICAgICAgICAgICAgICAgLy8gaWYgd2Ugc3RvcHBlZCB0aGUgcHJldmlvdXMgbG9vcCBvbiBhIHNsYXNoLCB3ZSdyZQorICAgICAgICAgICAgICAgIC8vIG5vdyBwYXJzaW5nIHRoZSBydWxlJ3MgcmFkaXguICBBZ2FpbiwgYWNjdW11bGF0ZSBkaWdpdHMKKyAgICAgICAgICAgICAgICAvLyBpbiB0ZW1wVmFsdWUsIHNraXAgcHVuY3R1YXRpb24sIHN0b3Agb24gYSA+IG1hcmssIGFuZAorICAgICAgICAgICAgICAgIC8vIHRocm93IGFuIGV4Y2VwdGlvbiBvbiBhbnl0aGluZyBlbHNlCisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgICAgIHRlbXBWYWx1ZS5zZXRMZW5ndGgoMCk7CisgICAgICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHAgPCBkZXNjcmlwdG9yLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gZGVzY3JpcHRvci5jaGFyQXQocCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wVmFsdWUuYXBwZW5kKGMpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnPicpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKENoYXJhY3Rlci5pc1doaXRlc3BhY2UoYykgfHwgYyA9PSAnLCcgfHwgYyA9PSAnLicpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgY2hhcmFjdGVyIGlzIHJ1bGUgZGVzY3JpcHRvciIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gdGVtcFZhbHVlIG5vdyBjb250YWluJ3MgdGhlIHJ1bGUncyByYWRpeC4gIFNldCBpdAorICAgICAgICAgICAgICAgICAgICAvLyBhY2NvcmRpbmdseSwgYW5kIHJlY2FsY3VsYXRlIHRoZSBydWxlJ3MgZXhwb25lbnQKKyAgICAgICAgICAgICAgICAgICAgcmFkaXggPSBTaG9ydC5wYXJzZVNob3J0KHRlbXBWYWx1ZS50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJhZGl4ID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlJ1bGUgY2FuJ3QgaGF2ZSByYWRpeCBvZiAwIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZXhwb25lbnQgPSBleHBlY3RlZEV4cG9uZW50KCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gaWYgd2Ugc3RvcHBlZCB0aGUgcHJldmlvdXMgbG9vcCBvbiBhID4gc2lnbiwgdGhlbiBjb250aW51ZQorICAgICAgICAgICAgICAgIC8vIGZvciBhcyBsb25nIGFzIHdlIHN0aWxsIHNlZSA+IHNpZ25zLiAgRm9yIGVhY2ggb25lLAorICAgICAgICAgICAgICAgIC8vIGRlY3JlbWVudCB0aGUgZXhwb25lbnQgKHVubGVzcyB0aGUgZXhwb25lbnQgaXMgYWxyZWFkeSAwKS4KKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSBzZWUgYW5vdGhlciBjaGFyYWN0ZXIgYmVmb3JlIHJlYWNoaW5nIHRoZSBlbmQgb2YKKyAgICAgICAgICAgICAgICAvLyB0aGUgZGVzY3JpcHRvciwgdGhhdCdzIGFsc28gYSBzeW50YXggZXJyb3IuCisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJz4nKSB7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChwIDwgZGVzY3JpcHRvci5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGRlc2NyaXB0b3IuY2hhckF0KHApOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJz4nICYmIGV4cG9uZW50ID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZXhwb25lbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgY2hhcmFjdGVyIGluIHJ1bGUgZGVzY3JpcHRvciIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gZmluYWxseSwgaWYgdGhlIHJ1bGUgYm9keSBiZWdpbnMgd2l0aCBhbiBhcG9zdHJvcGhlLCBzdHJpcCBpdCBvZmYKKyAgICAgICAgLy8gKHRoaXMgaXMgZ2VuZXJhbGx5IHVzZWQgdG8gcHV0IHdoaXRlc3BhY2UgYXQgdGhlIGJlZ2lubmluZyBvZgorICAgICAgICAvLyBhIHJ1bGUncyBydWxlIHRleHQpCisgICAgICAgIGlmIChkZXNjcmlwdGlvbi5sZW5ndGgoKSA+IDAgJiYgZGVzY3JpcHRpb24uY2hhckF0KDApID09ICdcJycpIHsKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb24uc3Vic3RyaW5nKDEpOworICAgICAgICB9CisKKyAgICAgICAgLy8gcmV0dXJuIHRoZSBkZXNjcmlwdGlvbiB3aXRoIGFsbCB0aGUgc3R1ZmYgd2UndmUganVzdCB3YWRlZCB0aHJvdWdoCisgICAgICAgIC8vIHN0cmlwcGVkIG9mZiB0aGUgZnJvbnQuICBJdCBub3cgY29udGFpbnMganVzdCB0aGUgcnVsZSBib2R5LgorICAgICAgICByZXR1cm4gZGVzY3JpcHRpb247CisgICAgfQorCisgICAgLyoqCisgICAgICogU2VhcmNoZXMgdGhlIHJ1bGUncyBydWxlIHRleHQgZm9yIHRoZSBzdWJzdGl0dXRpb24gdG9rZW5zLAorICAgICAqIGNyZWF0ZXMgdGhlIHN1YnN0aXR1dGlvbnMsIGFuZCByZW1vdmVzIHRoZSBzdWJzdGl0dXRpb24gdG9rZW5zCisgICAgICogZnJvbSB0aGUgcnVsZSdzIHJ1bGUgdGV4dC4KKyAgICAgKiBAcGFyYW0gb3duZXIgVGhlIHJ1bGUgc2V0IGNvbnRhaW5pbmcgdGhpcyBydWxlCisgICAgICogQHBhcmFtIHByZWRlY2Vzc29yIFRoZSBydWxlIHByZXNlZGluZyB0aGlzIG9uZSBpbiAib3duZXJzIiBydWxlIGxpc3QKKyAgICAgKiBAcGFyYW0gb3duZXJzT3duZXIgVGhlIFJ1bGVCYXNlZEZvcm1hdCB0aGF0IG93bnMgdGhpcyBydWxlCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGV4dHJhY3RTdWJzdGl0dXRpb25zKE5GUnVsZVNldCAgICAgICAgICAgICBvd25lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkZSdWxlICAgICAgICAgICAgICAgIHByZWRlY2Vzc29yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgb3duZXJzT3duZXIpIHsKKyAgICAgICAgc3ViMSA9IGV4dHJhY3RTdWJzdGl0dXRpb24ob3duZXIsIHByZWRlY2Vzc29yLCBvd25lcnNPd25lcik7CisgICAgICAgIHN1YjIgPSBleHRyYWN0U3Vic3RpdHV0aW9uKG93bmVyLCBwcmVkZWNlc3Nvciwgb3duZXJzT3duZXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNlYXJjaGVzIHRoZSBydWxlJ3MgcnVsZSB0ZXh0IGZvciB0aGUgZmlyc3Qgc3Vic3RpdHV0aW9uIHRva2VuLAorICAgICAqIGNyZWF0ZXMgYSBzdWJzdGl0dXRpb24gYmFzZWQgb24gaXQsIGFuZCByZW1vdmVzIHRoZSB0b2tlbiBmcm9tCisgICAgICogdGhlIHJ1bGUncyBydWxlIHRleHQuCisgICAgICogQHBhcmFtIG93bmVyIFRoZSBydWxlIHNldCBjb250YWluaW5nIHRoaXMgcnVsZQorICAgICAqIEBwYXJhbSBwcmVkZWNlc3NvciBUaGUgcnVsZSBwcmVjZWRpbmcgdGhpcyBvbmUgaW4gdGhlIHJ1bGUgc2V0J3MKKyAgICAgKiBydWxlIGxpc3QKKyAgICAgKiBAcGFyYW0gb3duZXJzT3duZXIgVGhlIFJ1bGVCYXNlZE51bWJlckZvcm1hdCB0aGF0IG93bnMgdGhpcyBydWxlCisgICAgICogQHJldHVybiBUaGUgbmV3bHktY3JlYXRlZCBzdWJzdGl0dXRpb24uICBUaGlzIGlzIG5ldmVyIG51bGw7IGlmCisgICAgICogdGhlIHJ1bGUgdGV4dCBkb2Vzbid0IGNvbnRhaW4gYW55IHN1YnN0aXR1dGlvbiB0b2tlbnMsIHRoaXMgd2lsbAorICAgICAqIGJlIGEgTnVsbFN1YnN0aXR1dGlvbi4KKyAgICAgKi8KKyAgICBwcml2YXRlIE5GU3Vic3RpdHV0aW9uIGV4dHJhY3RTdWJzdGl0dXRpb24oTkZSdWxlU2V0ICAgICAgICAgICAgIG93bmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORlJ1bGUgICAgICAgICAgICAgICAgcHJlZGVjZXNzb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBvd25lcnNPd25lcikgeworICAgICAgICBORlN1YnN0aXR1dGlvbiByZXN1bHQgPSBudWxsOworICAgICAgICBpbnQgc3ViU3RhcnQ7CisgICAgICAgIGludCBzdWJFbmQ7CisKKyAgICAgICAgLy8gc2VhcmNoIHRoZSBydWxlJ3MgcnVsZSB0ZXh0IGZvciB0aGUgZmlyc3QgdHdvIGNoYXJhY3RlcnMgb2YKKyAgICAgICAgLy8gYSBzdWJzdGl0dXRpb24gdG9rZW4KKyAgICAgICAgc3ViU3RhcnQgPSBpbmRleE9mQW55KG5ldyBTdHJpbmdbXSB7ICI8PCIsICI8JSIsICI8IyIsICI8MCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPj4iLCAiPiUiLCAiPiMiLCAiPjAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIj0lIiwgIj0jIiwgIj0wIiB9ICk7CisKKyAgICAgICAgLy8gaWYgd2UgZGlkbid0IGZpbmQgb25lLCBjcmVhdGUgYSBudWxsIHN1YnN0aXR1dGlvbiBwb3NpdGlvbmVkCisgICAgICAgIC8vIGF0IHRoZSBlbmQgb2YgdGhlIHJ1bGUgdGV4dAorICAgICAgICBpZiAoc3ViU3RhcnQgPT0gLTEpIHsKKyAgICAgICAgICAgIHJldHVybiBORlN1YnN0aXR1dGlvbi5tYWtlU3Vic3RpdHV0aW9uKHJ1bGVUZXh0Lmxlbmd0aCgpLCB0aGlzLCBwcmVkZWNlc3NvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lciwgb3duZXJzT3duZXIsICIiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHNwZWNpYWwtY2FzZSB0aGUgIj4+PiIgdG9rZW4sIHNpbmNlIHNlYXJjaGluZyBmb3IgdGhlID4gYXQgdGhlCisgICAgICAgIC8vIGVuZCB3aWxsIGFjdHVhbGx5IGZpbmQgdGhlID4gaW4gdGhlIG1pZGRsZQorICAgICAgICBpZiAocnVsZVRleHQuc3Vic3RyaW5nKHN1YlN0YXJ0KS5zdGFydHNXaXRoKCI+Pj4iKSkgeworICAgICAgICAgICAgc3ViRW5kID0gc3ViU3RhcnQgKyAyOworCisgICAgICAgIC8vIG90aGVyd2lzZSB0aGUgc3Vic3RpdHV0aW9uIHRva2VuIGVuZHMgd2l0aCB0aGUgc2FtZSBjaGFyYWN0ZXIKKyAgICAgICAgLy8gaXQgYmVnYW4gd2l0aAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3ViRW5kID0gcnVsZVRleHQuaW5kZXhPZihydWxlVGV4dC5jaGFyQXQoc3ViU3RhcnQpLCBzdWJTdGFydCArIDEpOworICAgICAgICB9CisKKyAgICAgICAgLy8gaWYgd2UgZG9uJ3QgZmluZCB0aGUgZW5kIG9mIHRoZSB0b2tlbiAoaS5lLiwgaWYgd2UncmUgb24gYSBzaW5nbGUsCisgICAgICAgIC8vIHVubWF0Y2hlZCB0b2tlbiBjaGFyYWN0ZXIpLCBjcmVhdGUgYSBudWxsIHN1YnN0aXR1dGlvbiBwb3NpdGlvbmVkCisgICAgICAgIC8vIGF0IHRoZSBlbmQgb2YgdGhlIHJ1bGUKKyAgICAgICAgaWYgKHN1YkVuZCA9PSAtMSkgeworICAgICAgICAgICAgcmV0dXJuIE5GU3Vic3RpdHV0aW9uLm1ha2VTdWJzdGl0dXRpb24ocnVsZVRleHQubGVuZ3RoKCksIHRoaXMsIHByZWRlY2Vzc29yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyLCBvd25lcnNPd25lciwgIiIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gaWYgd2UgZ2V0IGhlcmUsIHdlIGhhdmUgYSByZWFsIHN1YnN0aXR1dGlvbiB0b2tlbiAob3IgYXQgbGVhc3QKKyAgICAgICAgLy8gc29tZSB0ZXh0IGJvdW5kZWQgYnkgc3Vic3RpdHV0aW9uIHRva2VuIGNoYXJhY3RlcnMpLiAgVXNlCisgICAgICAgIC8vIG1ha2VTdWJzdGl0dXRpb24oKSB0byBjcmVhdGUgdGhlIHJpZ2h0IGtpbmQgb2Ygc3Vic3RpdHV0aW9uCisgICAgICAgIHJlc3VsdCA9IE5GU3Vic3RpdHV0aW9uLm1ha2VTdWJzdGl0dXRpb24oc3ViU3RhcnQsIHRoaXMsIHByZWRlY2Vzc29yLCBvd25lciwKKyAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyc093bmVyLCBydWxlVGV4dC5zdWJzdHJpbmcoc3ViU3RhcnQsIHN1YkVuZCArIDEpKTsKKworICAgICAgICAvLyByZW1vdmUgdGhlIHN1YnN0aXR1dGlvbiBmcm9tIHRoZSBydWxlIHRleHQKKyAgICAgICAgcnVsZVRleHQgPSBydWxlVGV4dC5zdWJzdHJpbmcoMCwgc3ViU3RhcnQpICsgcnVsZVRleHQuc3Vic3RyaW5nKHN1YkVuZCArIDEpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHJ1bGUncyBiYXNlIHZhbHVlLCBhbmQgY2F1c2VzIHRoZSByYWRpeCBhbmQgZXhwb25lbnQKKyAgICAgKiB0byBiZSByZWNhbGN1bGF0ZWQuICBUaGlzIGlzIHVzZWQgZHVyaW5nIGNvbnN0cnVjdGlvbiB3aGVuIHdlCisgICAgICogZG9uJ3Qga25vdyB0aGUgcnVsZSdzIGJhc2UgdmFsdWUgdW50aWwgYWZ0ZXIgaXQncyBiZWVuCisgICAgICogY29uc3RydWN0ZWQuICBJdCBzaG91bGQgYmUgdXNlZCBhdCBhbnkgb3RoZXIgdGltZS4KKyAgICAgKiBAcGFyYW0gVGhlIG5ldyBiYXNlIHZhbHVlIGZvciB0aGUgcnVsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRCYXNlVmFsdWUobG9uZyBuZXdCYXNlVmFsdWUpIHsKKyAgICAgICAgLy8gc2V0IHRoZSBiYXNlIHZhbHVlCisgICAgICAgIGJhc2VWYWx1ZSA9IG5ld0Jhc2VWYWx1ZTsKKworICAgICAgICAvLyBpZiB0aGlzIGlzbid0IGEgc3BlY2lhbCBydWxlLCByZWNhbGN1bGF0ZSB0aGUgcmFkaXggYW5kIGV4cG9uZW50CisgICAgICAgIC8vICh0aGUgcmFkaXggYWx3YXlzIGRlZmF1bHRzIHRvIDEwOyBpZiBpdCdzIHN1cHBvc2VkIHRvIGJlIHNvbWV0aGluZworICAgICAgICAvLyBlbHNlLCBpdCdzIGNsZWFuZWQgdXAgYnkgdGhlIGNhbGxlciBhbmQgdGhlIGV4cG9uZW50IGlzCisgICAgICAgIC8vIHJlY2FsY3VsYXRlZCBhZ2Fpbi0tIHRoZSBvbmx5IGZ1bmN0aW9uIHRoYXQgZG9lcyB0aGlzIGlzCisgICAgICAgIC8vIE5GUnVsZS5wYXJzZVJ1bGVEZXNjcmlwdG9yKCkgKQorICAgICAgICBpZiAoYmFzZVZhbHVlID49IDEpIHsKKyAgICAgICAgICAgIHJhZGl4ID0gMTA7CisgICAgICAgICAgICBleHBvbmVudCA9IGV4cGVjdGVkRXhwb25lbnQoKTsKKworICAgICAgICAgICAgLy8gdGhpcyBmdW5jdGlvbiBnZXRzIGNhbGxlZCBvbiBhIGZ1bGx5LWNvbnN0cnVjdGVkIHJ1bGUgd2hvc2UKKyAgICAgICAgICAgIC8vIGRlc2NyaXB0aW9uIGRpZG4ndCBzcGVjaWZ5IGEgYmFzZSB2YWx1ZS4gIFRoaXMgbWVhbnMgaXQKKyAgICAgICAgICAgIC8vIGhhcyBzdWJzdGl0dXRpb25zLCBhbmQgc29tZSBzdWJzdGl0dXRpb25zIGhvbGQgb24gdG8gY29waWVzCisgICAgICAgICAgICAvLyBvZiB0aGUgcnVsZSdzIGRpdmlzb3IuICBGaXggdGhlaXIgY29waWVzIG9mIHRoZSBkaXZpc29yLgorICAgICAgICAgICAgaWYgKHN1YjEgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHN1YjEuc2V0RGl2aXNvcihyYWRpeCwgZXhwb25lbnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN1YjIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHN1YjIuc2V0RGl2aXNvcihyYWRpeCwgZXhwb25lbnQpOworICAgICAgICAgICAgfQorCisgICAgICAgIC8vIGlmIHRoaXMgaXMgYSBzcGVjaWFsIHJ1bGUsIGl0cyByYWRpeCBhbmQgZXhwb25lbnQgYXJlIGJhc2ljYWxseQorICAgICAgICAvLyBpZ25vcmVkLiAgU2V0IHRoZW0gdG8gInNhZmUiIGRlZmF1bHQgdmFsdWVzCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByYWRpeCA9IDEwOworICAgICAgICAgICAgZXhwb25lbnQgPSAwOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBjYWxjdWxhdGVzIHRoZSBydWxlJ3MgZXhwb25lbnQgYmFzZWQgb24gaXRzIHJhZGl4IGFuZCBiYXNlCisgICAgICogdmFsdWUuICBUaGlzIHdpbGwgYmUgdGhlIGhpZ2hlc3QgcG93ZXIgdGhlIHJhZGl4IGNhbiBiZSByYWlzZWQgdG8KKyAgICAgKiBhbmQgc3RpbGwgcHJvZHVjZSBhIHJlc3VsdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGJhc2UgdmFsdWUuCisgICAgICovCisgICAgcHJpdmF0ZSBzaG9ydCBleHBlY3RlZEV4cG9uZW50KCkgeworICAgICAgICAvLyBzaW5jZSB0aGUgbG9nIG9mIDAsIG9yIHRoZSBsb2cgYmFzZSAwIG9mIHNvbWV0aGluZywgY2F1c2VzIGFuCisgICAgICAgIC8vIGVycm9yLCBkZWNsYXJlIHRoZSBleHBvbmVudCBpbiB0aGVzZSBjYXNlcyB0byBiZSAwICh3ZSBhbHNvCisgICAgICAgIC8vIGRlYWwgd2l0aCB0aGUgc3BlY2lhbC1ydWxlIGlkZW50aWZpZXJzIGhlcmUpCisgICAgICAgIGlmIChyYWRpeCA9PSAwIHx8IGJhc2VWYWx1ZSA8IDEpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisKKyAgICAgICAgLy8gd2UgZ2V0IHJvdW5kaW5nIGVycm9yIGluIHNvbWUgY2FzZXMtLSBmb3IgZXhhbXBsZSwgbG9nIDEwMDAgLyBsb2cgMTAKKyAgICAgICAgLy8gZ2l2ZXMgdXMgMS45OTk5OTk5OTk2IGluc3RlYWQgb2YgMi4gIFRoZSBleHRyYSBsb2dpYyBoZXJlIGlzIHRvIHRha2UKKyAgICAgICAgLy8gdGhhdCBpbnRvIGFjY291bnQKKyAgICAgICAgc2hvcnQgdGVtcFJlc3VsdCA9IChzaG9ydCkoTWF0aC5sb2coYmFzZVZhbHVlKSAvIE1hdGgubG9nKHJhZGl4KSk7CisgICAgICAgIGlmIChNYXRoLnBvdyhyYWRpeCwgdGVtcFJlc3VsdCArIDEpIDw9IGJhc2VWYWx1ZSkgeworICAgICAgICAgICAgcmV0dXJuIChzaG9ydCkodGVtcFJlc3VsdCArIDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHRlbXBSZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZWFyY2hlcyB0aGUgcnVsZSdzIHJ1bGUgdGV4dCBmb3IgYW55IG9mIHRoZSBzcGVjaWZpZWQgc3RyaW5ncy4KKyAgICAgKiBAcGFyYW0gc3RyaW5ncyBBbiBhcnJheSBvZiBzdHJpbmdzIHRvIHNlYXJjaCB0aGUgcnVsZSdzIHJ1bGUKKyAgICAgKiB0ZXh0IGZvcgorICAgICAqIEByZXR1cm4gVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBtYXRjaCBpbiB0aGUgcnVsZSdzIHJ1bGUgdGV4dAorICAgICAqIChpLmUuLCB0aGUgZmlyc3Qgc3Vic3RyaW5nIGluIHRoZSBydWxlJ3MgcnVsZSB0ZXh0IHRoYXQgbWF0Y2hlcworICAgICAqIF9hbnlfIG9mIHRoZSBzdHJpbmdzIGluICJzdHJpbmdzIikuICBJZiBub25lIG9mIHRoZSBzdHJpbmdzIGluCisgICAgICogInN0cmluZ3MiIGlzIGZvdW5kIGluIHRoZSBydWxlJ3MgcnVsZSB0ZXh0LCByZXR1cm5zIC0xLgorICAgICAqLworICAgIHByaXZhdGUgaW50IGluZGV4T2ZBbnkoU3RyaW5nW10gc3RyaW5ncykgeworICAgICAgICBpbnQgcG9zOworICAgICAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RyaW5ncy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgcG9zID0gcnVsZVRleHQuaW5kZXhPZihzdHJpbmdzW2ldKTsKKyAgICAgICAgICAgIGlmIChwb3MgIT0gLTEgJiYgKHJlc3VsdCA9PSAtMSB8fCBwb3MgPCByZXN1bHQpKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcG9zOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGJvaWxlcnBsYXRlCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogVGVzdHMgdHdvIHJ1bGVzIGZvciBlcXVhbGl0eS4KKyAgICAgKiBAcGFyYW0gdGhhdCBUaGUgcnVsZSB0byBjb21wYXJlIHRoaXMgb25lIGFnYWluc3QKKyAgICAgKiBAcmV0dXJuIFRydWUgaXMgdGhlIHR3byBydWxlcyBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IHRoYXQpIHsKKyAgICAgICAgaWYgKHRoYXQgaW5zdGFuY2VvZiBORlJ1bGUpIHsKKyAgICAgICAgICAgIE5GUnVsZSB0aGF0MiA9IChORlJ1bGUpdGhhdDsKKworICAgICAgICAgICAgcmV0dXJuIGJhc2VWYWx1ZSA9PSB0aGF0Mi5iYXNlVmFsdWUKKyAgICAgICAgICAgICAgICAgICAmJiByYWRpeCA9PSB0aGF0Mi5yYWRpeAorICAgICAgICAgICAgICAgICAgICYmIGV4cG9uZW50ID09IHRoYXQyLmV4cG9uZW50CisgICAgICAgICAgICAgICAgICAgJiYgcnVsZVRleHQuZXF1YWxzKHRoYXQyLnJ1bGVUZXh0KQorICAgICAgICAgICAgICAgICAgICYmIHN1YjEuZXF1YWxzKHRoYXQyLnN1YjEpCisgICAgICAgICAgICAgICAgICAgJiYgc3ViMi5lcXVhbHModGhhdDIuc3ViMik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcnVsZS4gIFRoaXMgd29uJ3QKKyAgICAgKiBuZWNlc3NhcmlseSBiZSB0aGUgc2FtZSBhcyB0aGUgZGVzY3JpcHRpb24gdGhhdCB0aGlzIHJ1bGUKKyAgICAgKiB3YXMgY3JlYXRlZCB3aXRoLCBidXQgaXQgd2lsbCBwcm9kdWNlIHRoZSBzYW1lIHJlc3VsdC4KKyAgICAgKiBAcmV0dXJuIEEgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiB0aGUgcnVsZQorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAgICAgLy8gc3RhcnQgd2l0aCB0aGUgcnVsZSBkZXNjcmlwdG9yLiAgU3BlY2lhbC1jYXNlIHRoZSBzcGVjaWFsIHJ1bGVzCisgICAgICAgIGlmIChiYXNlVmFsdWUgPT0gTkVHQVRJVkVfTlVNQkVSX1JVTEUpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIi14OiAiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChiYXNlVmFsdWUgPT0gSU1QUk9QRVJfRlJBQ1RJT05fUlVMRSkgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgieC54OiAiKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChiYXNlVmFsdWUgPT0gUFJPUEVSX0ZSQUNUSU9OX1JVTEUpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIjAueDogIik7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoYmFzZVZhbHVlID09IE1BU1RFUl9SVUxFKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJ4LjA6ICIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gZm9yIGEgbm9ybWFsIHJ1bGUsIHdyaXRlIG91dCBpdHMgYmFzZSB2YWx1ZSwgYW5kIGlmIHRoZSByYWRpeCBpcworICAgICAgICAvLyBzb21ldGhpbmcgb3RoZXIgdGhhbiAxMCwgd3JpdGUgb3V0IHRoZSByYWRpeCAod2l0aCB0aGUgcHJlY2VkaW5nCisgICAgICAgIC8vIHNsYXNoLCBvZiBjb3Vyc2UpLiAgVGhlbiBjYWxjdWxhdGUgdGhlIGV4cGVjdGVkIGV4cG9uZW50IGFuZCBpZgorICAgICAgICAvLyBpZiBpc24ndCB0aGUgc2FtZSBhcyB0aGUgYWN0dWFsIGV4cG9uZW50LCB3cml0ZSBhbiBhcHByb3ByaWF0ZQorICAgICAgICAvLyBudW1iZXIgb2YgPiBzaWducy4gIEZpbmFsbHksIHRlcm1pbmF0ZSB0aGUgd2hvbGUgdGhpbmcgd2l0aAorICAgICAgICAvLyBhIGNvbG9uLgorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoU3RyaW5nLnZhbHVlT2YoYmFzZVZhbHVlKSk7CisgICAgICAgICAgICBpZiAocmFkaXggIT0gMTApIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCcvJyk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcudmFsdWVPZihyYWRpeCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IG51bUNhcmV0cyA9IGV4cGVjdGVkRXhwb25lbnQoKSAtIGV4cG9uZW50OworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DYXJldHM7IGkrKykKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCc+Jyk7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCI6ICIpOworICAgICAgICB9CisKKyAgICAgICAgLy8gaWYgdGhlIHJ1bGUgdGV4dCBiZWdpbnMgd2l0aCBhIHNwYWNlLCB3cml0ZSBhbiBhcG9zdHJvcGhlCisgICAgICAgIC8vICh3aGl0ZXNwYWNlIGFmdGVyIHRoZSBydWxlIGRlc2NyaXB0b3IgaXMgaWdub3JlZDsgdGhlCisgICAgICAgIC8vIGFwb3N0cm9waGUgaXMgdXNlZCB0byBtYWtlIHRoZSB3aGl0ZXNwYWNlIHNpZ25pZmljYW50KQorICAgICAgICBpZiAocnVsZVRleHQuc3RhcnRzV2l0aCgiICIpICYmIChzdWIxID09IG51bGwgfHwgc3ViMS5nZXRQb3MoKSAhPSAwKSkgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiXCciKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIG5vdywgd3JpdGUgdGhlIHJ1bGUncyBydWxlIHRleHQsIGluc2VydGluZyBhcHByb3ByaWF0ZQorICAgICAgICAvLyBzdWJzdGl0dXRpb24gdG9rZW5zIGluIHRoZSBhcHByb3ByaWF0ZSBwbGFjZXMKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJ1bGVUZXh0Q29weSA9IG5ldyBTdHJpbmdCdWZmZXIocnVsZVRleHQpOworICAgICAgICBydWxlVGV4dENvcHkuaW5zZXJ0KHN1YjIuZ2V0UG9zKCksIHN1YjIudG9TdHJpbmcoKSk7CisgICAgICAgIHJ1bGVUZXh0Q29weS5pbnNlcnQoc3ViMS5nZXRQb3MoKSwgc3ViMS50b1N0cmluZygpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChydWxlVGV4dENvcHkpOworCisgICAgICAgIC8vIGFuZCBmaW5hbGx5LCB0b3AgdGhlIHdob2xlIHRoaW5nIG9mZiB3aXRoIGEgc2VtaWNvbG9uIGFuZAorICAgICAgICAvLyByZXR1cm4gdGhlIHJlc3VsdAorICAgICAgICByZXN1bHQuYXBwZW5kKCc7Jyk7CisgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gc2ltcGxlIGFjY2Vzc29ycworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHJ1bGUncyBiYXNlIHZhbHVlCisgICAgICogQHJldHVybiBUaGUgcnVsZSdzIGJhc2UgdmFsdWUKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgbG9uZyBnZXRCYXNlVmFsdWUoKSB7CisgICAgICAgIHJldHVybiBiYXNlVmFsdWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgcnVsZSdzIGRpdmlzb3IgKHRoZSB2YWx1ZSB0aGF0IGNvdHJvbHMgdGhlIGJlaGF2aW9yCisgICAgICogb2YgaXRzIHN1YnN0aXR1dGlvbnMpCisgICAgICogQHJldHVybiBUaGUgcnVsZSdzIGRpdmlzb3IKKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGdldERpdmlzb3IoKSB7CisgICAgICAgIHJldHVybiBNYXRoLnBvdyhyYWRpeCwgZXhwb25lbnQpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBmb3JtYXR0aW5nCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogRm9ybWF0cyB0aGUgbnVtYmVyLCBhbmQgaW5zZXJ0cyB0aGUgcmVzdWx0aW5nIHRleHQgaW50bworICAgICAqIHRvSW5zZXJ0SW50by4KKyAgICAgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkCisgICAgICogQHBhcmFtIHRvSW5zZXJ0SW50byBUaGUgc3RyaW5nIHdoZXJlIHRoZSByZXN1bHRhbnQgdGV4dCBzaG91bGQKKyAgICAgKiBiZSBpbnNlcnRlZAorICAgICAqIEBwYXJhbSBwb3MgVGhlIHBvc2l0aW9uIGluIHRvSW5zZXJ0SW50byB3aGVyZSB0aGUgcmVzdWx0YW50IHRleHQKKyAgICAgKiBzaG91bGQgYmUgaW5zZXJ0ZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBkb0Zvcm1hdChsb25nIG51bWJlciwgU3RyaW5nQnVmZmVyIHRvSW5zZXJ0SW50bywgaW50IHBvcykgeworICAgICAgICAvLyBmaXJzdCwgaW5zZXJ0IHRoZSBydWxlJ3MgcnVsZSB0ZXh0IGludG8gdG9JbnNlcnRJbnRvIGF0IHRoZQorICAgICAgICAvLyBzcGVjaWZpZWQgcG9zaXRpb24sIHRoZW4gaW5zZXJ0IHRoZSByZXN1bHRzIG9mIHRoZSBzdWJzdGl0dXRpb25zCisgICAgICAgIC8vIGludG8gdGhlIHJpZ2h0IHBsYWNlcyBpbiB0b0luc2VydEludG8gKG5vdGljZSB3ZSBkbyB0aGUKKyAgICAgICAgLy8gc3Vic3RpdHV0aW9ucyBpbiByZXZlcnNlIG9yZGVyIHNvIHRoYXQgdGhlIG9mZnNldHMgZG9uJ3QgZ2V0CisgICAgICAgIC8vIG1lc3NlZCB1cCkKKyAgICAgICAgdG9JbnNlcnRJbnRvLmluc2VydChwb3MsIHJ1bGVUZXh0KTsKKyAgICAgICAgc3ViMi5kb1N1YnN0aXR1dGlvbihudW1iZXIsIHRvSW5zZXJ0SW50bywgcG9zKTsKKyAgICAgICAgc3ViMS5kb1N1YnN0aXR1dGlvbihudW1iZXIsIHRvSW5zZXJ0SW50bywgcG9zKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGb3JtYXRzIHRoZSBudW1iZXIsIGFuZCBpbnNlcnRzIHRoZSByZXN1bHRpbmcgdGV4dCBpbnRvCisgICAgICogdG9JbnNlcnRJbnRvLgorICAgICAqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQKKyAgICAgKiBAcGFyYW0gdG9JbnNlcnRJbnRvIFRoZSBzdHJpbmcgd2hlcmUgdGhlIHJlc3VsdGFudCB0ZXh0IHNob3VsZAorICAgICAqIGJlIGluc2VydGVkCisgICAgICogQHBhcmFtIHBvcyBUaGUgcG9zaXRpb24gaW4gdG9JbnNlcnRJbnRvIHdoZXJlIHRoZSByZXN1bHRhbnQgdGV4dAorICAgICAqIHNob3VsZCBiZSBpbnNlcnRlZAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGRvRm9ybWF0KGRvdWJsZSBudW1iZXIsIFN0cmluZ0J1ZmZlciB0b0luc2VydEludG8sIGludCBwb3MpIHsKKyAgICAgICAgLy8gZmlyc3QsIGluc2VydCB0aGUgcnVsZSdzIHJ1bGUgdGV4dCBpbnRvIHRvSW5zZXJ0SW50byBhdCB0aGUKKyAgICAgICAgLy8gc3BlY2lmaWVkIHBvc2l0aW9uLCB0aGVuIGluc2VydCB0aGUgcmVzdWx0cyBvZiB0aGUgc3Vic3RpdHV0aW9ucworICAgICAgICAvLyBpbnRvIHRoZSByaWdodCBwbGFjZXMgaW4gdG9JbnNlcnRJbnRvCisgICAgICAgIC8vIFthZ2Fpbiwgd2UgaGF2ZSB0d28gY29waWVzIG9mIHRoaXMgcm91dGluZSB0aGF0IGRvIHRoZSBzYW1lIHRoaW5nCisgICAgICAgIC8vIHNvIHRoYXQgd2UgZG9uJ3Qgc2FjcmlmaWNlIHByZWNpc2lvbiBpbiBhIGxvbmcgYnkgY2FzdGluZyBpdAorICAgICAgICAvLyB0byBhIGRvdWJsZV0KKyAgICAgICAgdG9JbnNlcnRJbnRvLmluc2VydChwb3MsIHJ1bGVUZXh0KTsKKyAgICAgICAgc3ViMi5kb1N1YnN0aXR1dGlvbihudW1iZXIsIHRvSW5zZXJ0SW50bywgcG9zKTsKKyAgICAgICAgc3ViMS5kb1N1YnN0aXR1dGlvbihudW1iZXIsIHRvSW5zZXJ0SW50bywgcG9zKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVc2VkIGJ5IHRoZSBvd25pbmcgcnVsZSBzZXQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gaW52b2tlIHRoZQorICAgICAqIHJvbGxiYWNrIHJ1bGUgKGkuZS4sIHdoZXRoZXIgdGhpcyBydWxlIG9yIHRoZSBvbmUgdGhhdCBwcmVjZWRlcworICAgICAqIGl0IGluIHRoZSBydWxlIHNldCdzIGxpc3Qgc2hvdWxkIGJlIHVzZWQgdG8gZm9ybWF0IHRoZSBudW1iZXIpCisgICAgICogQHBhcmFtIFRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkCisgICAgICogQHJldHVybiBUcnVlIGlmIHRoZSBydWxlIHNldCBzaG91bGQgdXNlIHRoZSBydWxlIHRoYXQgcHJlY2VkZXMKKyAgICAgKiB0aGlzIG9uZSBpbiBpdHMgbGlzdDsgZmFsc2UgaWYgaXQgc2hvdWxkIHVzZSB0aGlzIHJ1bGUKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBzaG91bGRSb2xsQmFjayhkb3VibGUgbnVtYmVyKSB7CisgICAgICAgIC8vIHdlIHJvbGwgYmFjayBpZiB0aGUgcnVsZSBjb250YWlucyBhIG1vZHVsdXMgc3Vic3RpdHV0aW9uLAorICAgICAgICAvLyB0aGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZCBpcyBhbiBldmVuIG11bHRpcGxlIG9mIHRoZSBydWxlJ3MKKyAgICAgICAgLy8gZGl2aXNvciwgYW5kIHRoZSBydWxlJ3MgYmFzZSB2YWx1ZSBpcyBOT1QgYW4gZXZlbiBtdWx0aXBsZQorICAgICAgICAvLyBvZiBpdHMgZGl2aXNvcgorICAgICAgICAvLyBJbiBvdGhlciB3b3JkcywgaWYgdGhlIG9yaWdpbmFsIGRlc2NyaXB0aW9uIGhhZAorICAgICAgICAvLyAgICAxMDA6IDw8IGh1bmRyZWRbID4+XTsKKyAgICAgICAgLy8gdGhhdCBleHBhbmRzIGludG8KKyAgICAgICAgLy8gICAgMTAwOiA8PCBodW5kcmVkOworICAgICAgICAvLyAgICAxMDE6IDw8IGh1bmRyZWQgPj47CisgICAgICAgIC8vIGludGVybmFsbHkuICBCdXQgd2hlbiB3ZSdyZSBmb3JtYXR0aW5nIDIwMCwgaWYgd2UgdXNlIHRoZSBydWxlCisgICAgICAgIC8vIGF0IDEwMSwgd2hpY2ggd291bGQgbm9ybWFsbHkgYXBwbHksIHdlIGdldCAidHdvIGh1bmRyZWQgemVybyIuCisgICAgICAgIC8vIFRvIHByZXZlbnQgdGhpcywgd2Ugcm9sbCBiYWNrIGFuZCB1c2UgdGhlIHJ1bGUgYXQgMTAwIGluc3RlYWQuCisgICAgICAgIC8vIFRoaXMgaXMgdGhlIGxvZ2ljIHRoYXQgbWFrZXMgdGhpcyBoYXBwZW46IHRoZSBydWxlIGF0IDEwMSBoYXMKKyAgICAgICAgLy8gYSBtb2R1bHVzIHN1YnN0aXR1dGlvbiwgaXRzIGJhc2UgdmFsdWUgaXNuJ3QgYW4gZXZlbiBtdWx0aXBsZQorICAgICAgICAvLyBvZiAxMDAsIGFuZCB0aGUgdmFsdWUgd2UncmUgdHJ5aW5nIHRvIGZvcm1hdCBfaXNfIGFuIGV2ZW4KKyAgICAgICAgLy8gbXVsdGlwbGUgb2YgMTAwLiAgVGhpcyBpcyBjYWxsZWQgdGhlICJyb2xsYmFjayBydWxlLiIKKyAgICAgICAgaWYgKChzdWIxLmlzTW9kdWx1c1N1YnN0aXR1dGlvbigpKSB8fCAoc3ViMi5pc01vZHVsdXNTdWJzdGl0dXRpb24oKSkpIHsKKyAgICAgICAgICAgIHJldHVybiAobnVtYmVyICUgTWF0aC5wb3cocmFkaXgsIGV4cG9uZW50KSkgPT0gMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChiYXNlVmFsdWUgJSBNYXRoLnBvdyhyYWRpeCwgZXhwb25lbnQpKSAhPSAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gcGFyc2luZworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIEF0dGVtcHRzIHRvIHBhcnNlIHRoZSBzdHJpbmcgd2l0aCB0aGlzIHJ1bGUuCisgICAgICogQHBhcmFtIHRleHQgVGhlIHN0cmluZyBiZWluZyBwYXJzZWQKKyAgICAgKiBAcGFyYW0gcGFyc2VQb3NpdGlvbiBPbiBlbnRyeSwgdGhlIHZhbHVlIGlzIGlnbm9yZWQgYW5kIGFzc3VtZWQgdG8KKyAgICAgKiBiZSAwLiBPbiBleGl0LCB0aGlzIGhhcyBiZWVuIHVwZGF0ZWQgd2l0aCB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0CisgICAgICogY2hhcmFjdGVyIG5vdCBjb25zdW1lZCBieSBtYXRjaGluZyB0aGUgdGV4dCBhZ2FpbnN0IHRoaXMgcnVsZQorICAgICAqIChpZiB0aGlzIHJ1bGUgZG9lc24ndCBtYXRjaCB0aGUgdGV4dCBhdCBhbGwsIHRoZSBwYXJzZSBwb3NpdGlvbgorICAgICAqIGlmIGxlZnQgdW5jaGFuZ2VkIChwcmVzdW1hYmx5IGF0IDApIGFuZCB0aGUgZnVuY3Rpb24gcmV0dXJucworICAgICAqIG5ldyBMb25nKDApKS4KKyAgICAgKiBAcGFyYW0gaXNGcmFjdGlvblJ1bGUgVHJ1ZSBpZiB0aGlzIHJ1bGUgaXMgY29udGFpbmVkIHdpdGhpbiBhCisgICAgICogZnJhY3Rpb24gcnVsZSBzZXQuICBUaGlzIGlzIG9ubHkgdXNlZCBpZiB0aGUgcnVsZSBoYXMgbm8KKyAgICAgKiBzdWJzdGl0dXRpb25zLgorICAgICAqIEByZXR1cm4gSWYgdGhpcyBydWxlIG1hdGNoZWQgdGhlIHRleHQsIHRoaXMgaXMgdGhlIHJ1bGUncyBiYXNlIHZhbHVlCisgICAgICogY29tYmluZWQgYXBwcm9wcmlhdGVseSB3aXRoIHRoZSByZXN1bHRzIG9mIHBhcnNpbmcgdGhlIHN1YnN0aXR1dGlvbnMuCisgICAgICogSWYgbm90aGluZyBtYXRjaGVkLCB0aGlzIGlzIG5ldyBMb25nKDApIGFuZCB0aGUgcGFyc2UgcG9zaXRpb24gaXMKKyAgICAgKiBsZWZ0IHVuY2hhbmdlZC4gIFRoZSByZXN1bHQgd2lsbCBiZSBhbiBpbnN0YW5jZSBvZiBMb25nIGlmIHRoZQorICAgICAqIHJlc3VsdCBpcyBhbiBpbnRlZ2VyIGFuZCBEb3VibGUgb3RoZXJ3aXNlLiAgVGhlIHJlc3VsdCBpcyBuZXZlciBudWxsLgorICAgICAqLworICAgIHB1YmxpYyBOdW1iZXIgZG9QYXJzZShTdHJpbmcgdGV4dCwgUGFyc2VQb3NpdGlvbiBwYXJzZVBvc2l0aW9uLCBib29sZWFuIGlzRnJhY3Rpb25SdWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHVwcGVyQm91bmQpIHsKKworICAgICAgICAvLyBpbnRlcm5hbGx5IHdlIG9wZXJhdGUgb24gYSBjb3B5IG9mIHRoZSBzdHJpbmcgYmVpbmcgcGFyc2VkCisgICAgICAgIC8vIChiZWNhdXNlIHdlJ3JlIGdvaW5nIHRvIGNoYW5nZSBpdCkgYW5kIHVzZSBvdXIgb3duIFBhcnNlUG9zaXRpb24KKyAgICAgICAgUGFyc2VQb3NpdGlvbiBwcCA9IG5ldyBQYXJzZVBvc2l0aW9uKDApOworICAgICAgICBTdHJpbmcgd29ya1RleHQgPSBuZXcgU3RyaW5nKHRleHQpOworCisgICAgICAgIC8vIGNoZWNrIHRvIHNlZSB3aGV0aGVyIHRoZSB0ZXh0IGJlZm9yZSB0aGUgZmlyc3Qgc3Vic3RpdHV0aW9uCisgICAgICAgIC8vIG1hdGNoZXMgdGhlIHRleHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nIGJlaW5nCisgICAgICAgIC8vIHBhcnNlZC4gIElmIGl0IGRvZXMsIHN0cmlwIHRoYXQgb2ZmIHRoZSBmcm9udCBvZiB3b3JrVGV4dDsKKyAgICAgICAgLy8gb3RoZXJ3aXNlLCBkdW1wIG91dCB3aXRoIGEgbWlzbWF0Y2gKKyAgICAgICAgd29ya1RleHQgPSBzdHJpcFByZWZpeCh3b3JrVGV4dCwgcnVsZVRleHQuc3Vic3RyaW5nKDAsIHN1YjEuZ2V0UG9zKCkpLCBwcCk7CisgICAgICAgIGludCBwcmVmaXhMZW5ndGggPSB0ZXh0Lmxlbmd0aCgpIC0gd29ya1RleHQubGVuZ3RoKCk7CisKKyAgICAgICAgaWYgKHBwLmdldEluZGV4KCkgPT0gMCAmJiBzdWIxLmdldFBvcygpICE9IDApIHsKKy8vIGNvbW1lbnRlZCBvdXQgYmVjYXVzZSBQYXJzZVBvc2l0aW9uIGRvZXNuJ3QgaGF2ZSBlcnJvciBpbmRleCBpbiAxLjEueAorLy8gICAgICAgICAgICAgICAgcGFyc2VQb3NpdGlvbi5zZXRFcnJvckluZGV4KHBwLmdldEVycm9ySW5kZXgoKSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IExvbmcoMCk7CisgICAgICAgIH0KKworICAgICAgICAvLyB0aGlzIGlzIHRoZSBmdW4gcGFydC4gIFRoZSBiYXNpYyBndXRzIG9mIHRoZSBydWxlLW1hdGNoaW5nCisgICAgICAgIC8vIGxvZ2ljIGlzIG1hdGNoVG9EZWxpbWl0ZXIoKSwgd2hpY2ggaXMgY2FsbGVkIHR3aWNlLiAgVGhlIGZpcnN0CisgICAgICAgIC8vIHRpbWUgaXQgc2VhcmNoZXMgdGhlIGlucHV0IHN0cmluZyBmb3IgdGhlIHJ1bGUgdGV4dCBCRVRXRUVOCisgICAgICAgIC8vIHRoZSBzdWJzdGl0dXRpb25zIGFuZCB0cmllcyB0byBtYXRjaCB0aGUgaW50ZXJ2ZW5pbmcgdGV4dAorICAgICAgICAvLyBpbiB0aGUgaW5wdXQgc3RyaW5nIHdpdGggdGhlIGZpcnN0IHN1YnN0aXR1dGlvbi4gIElmIHRoYXQKKyAgICAgICAgLy8gc3VjY2VlZHMsIGl0IHRoZW4gY2FsbHMgaXQgYWdhaW4sIHRoaXMgdGltZSB0byBsb29rIGZvciB0aGUKKyAgICAgICAgLy8gcnVsZSB0ZXh0IGFmdGVyIHRoZSBzZWNvbmQgc3Vic3RpdHV0aW9uIGFuZCB0byBtYXRjaCB0aGUKKyAgICAgICAgLy8gaW50ZXJ2ZW5pbmcgaW5wdXQgdGV4dCBhZ2FpbnN0IHRoZSBzZWNvbmQgc3Vic3RpdHV0aW9uLgorICAgICAgICAvLworICAgICAgICAvLyBGb3IgZXhhbXBsZSwgc2F5IHdlIGhhdmUgYSBydWxlIHRoYXQgbG9va3MgbGlrZSB0aGlzOgorICAgICAgICAvLyAgICBmaXJzdCA8PCBtaWRkbGUgPj4gbGFzdDsKKyAgICAgICAgLy8gYW5kIGlucHV0IHRleHQgdGhhdCBsb29rcyBsaWtlIHRoaXM6CisgICAgICAgIC8vICAgIGZpcnN0IG9uZSBtaWRkbGUgdHdvIGxhc3QKKyAgICAgICAgLy8gRmlyc3Qgd2UgdXNlIHN0cmlwUHJlZml4KCkgdG8gbWF0Y2ggImZpcnN0ICIgaW4gYm90aCBwbGFjZXMgYW5kCisgICAgICAgIC8vIHN0cmlwIGl0IG9mZiB0aGUgZnJvbnQsIGxlYXZpbmcKKyAgICAgICAgLy8gICAgb25lIG1pZGRsZSB0d28gbGFzdAorICAgICAgICAvLyBUaGVuIHdlIHVzZSBtYXRjaFRvRGVsaW1pdGVyKCkgdG8gbWF0Y2ggIiBtaWRkbGUgIiBhbmQgdHJ5IHRvCisgICAgICAgIC8vIG1hdGNoICJvbmUiIGFnYWluc3QgYSBzdWJzdGl0dXRpb24uICBJZiBpdCdzIHN1Y2Nlc3NmdWwsIHdlIG5vdworICAgICAgICAvLyBoYXZlCisgICAgICAgIC8vICAgIHR3byBsYXN0CisgICAgICAgIC8vIFdlIHVzZSBtYXRjaFRvRGVsaW1pdGVyKCkgYSBzZWNvbmQgdGltZSB0byBtYXRjaCAiIGxhc3QiIGFuZAorICAgICAgICAvLyB0cnkgdG8gbWF0Y2ggInR3byIgYWdhaW5zdCBhIHN1YnN0aXR1dGlvbi4gIElmICJ0d28iIG1hdGNoZXMKKyAgICAgICAgLy8gdGhlIHN1YnN0aXR1dGlvbiwgd2UgaGF2ZSBhIHN1Y2Nlc3NmdWwgcGFyc2UuCisgICAgICAgIC8vCisgICAgICAgIC8vIFNpbmNlIGl0J3MgcG9zc2libGUgaW4gbWFueSBjYXNlcyB0byBmaW5kIG11bHRpcGxlIGluc3RhbmNlcworICAgICAgICAvLyBvZiBlYWNoIG9mIHRoZXNlIHBpZWNlcyBvZiBydWxlIHRleHQgaW4gdGhlIGlucHV0IHN0cmluZywKKyAgICAgICAgLy8gd2UgbmVlZCB0byB0cnkgYWxsIHRoZSBwb3NzaWJsZSBjb21iaW5hdGlvbnMgb2YgdGhlc2UKKyAgICAgICAgLy8gbG9jYXRpb25zLiAgVGhpcyBwcmV2ZW50cyB1cyBmcm9tIHByZW1hdHVyZWx5IGRlY2xhcmluZyBhIG1pc21hdGNoLAorICAgICAgICAvLyBhbmQgbWFrZXMgc3VyZSB3ZSBtYXRjaCBhcyBtdWNoIGlucHV0IHRleHQgYXMgd2UgY2FuLgorICAgICAgICBpbnQgaGlnaFdhdGVyTWFyayA9IDA7CisgICAgICAgIGRvdWJsZSByZXN1bHQgPSAwOworICAgICAgICBpbnQgc3RhcnQgPSAwOworICAgICAgICBkb3VibGUgdGVtcEJhc2VWYWx1ZSA9IE1hdGgubWF4KDAsIGJhc2VWYWx1ZSk7CisKKyAgICAgICAgZG8geworICAgICAgICAgICAgLy8gb3VyIHBhcnRpYWwgcGFyc2UgcmVzdWx0IHN0YXJ0cyBvdXQgYXMgdGhpcyBydWxlJ3MgYmFzZQorICAgICAgICAgICAgLy8gdmFsdWUuICBJZiBpdCBmaW5kcyBhIHN1Y2Nlc3NmdWwgbWF0Y2gsIG1hdGNoVG9EZWxpbWl0ZXIoKQorICAgICAgICAgICAgLy8gd2lsbCBjb21wb3NlIHRoaXMgaW4gc29tZSB3YXkgd2l0aCB3aGF0IGl0IGdldHMgYmFjayBmcm9tCisgICAgICAgICAgICAvLyB0aGUgc3Vic3RpdHV0aW9uLCBnaXZpbmcgdXMgYSBuZXcgcGFydGlhbCBwYXJzZSByZXN1bHQKKyAgICAgICAgICAgIHBwLnNldEluZGV4KDApOworICAgICAgICAgICAgZG91YmxlIHBhcnRpYWxSZXN1bHQgPSBtYXRjaFRvRGVsaW1pdGVyKHdvcmtUZXh0LCBzdGFydCwgdGVtcEJhc2VWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlVGV4dC5zdWJzdHJpbmcoc3ViMS5nZXRQb3MoKSwgc3ViMi5nZXRQb3MoKSksIHBwLCBzdWIxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyQm91bmQpLmRvdWJsZVZhbHVlKCk7CisKKyAgICAgICAgICAgIC8vIGlmIHdlIGdvdCBhIHN1Y2Nlc3NmdWwgbWF0Y2ggKG9yIHdlcmUgdHJ5aW5nIHRvIG1hdGNoIGEKKyAgICAgICAgICAgIC8vIG51bGwgc3Vic3RpdHV0aW9uKSwgcHAgaXMgbm93IHBvaW50aW5nIGF0IHRoZSBmaXJzdCB1bm1hdGNoZWQKKyAgICAgICAgICAgIC8vIGNoYXJhY3Rlci4gIFRha2Ugbm90ZSBvZiB0aGF0LCBhbmQgdHJ5IG1hdGNoVG9EZWxpbWl0ZXIoKQorICAgICAgICAgICAgLy8gb24gdGhlIGlucHV0IHRleHQgYWdhaW4KKyAgICAgICAgICAgIGlmIChwcC5nZXRJbmRleCgpICE9IDAgfHwgc3ViMS5pc051bGxTdWJzdGl0dXRpb24oKSkgeworICAgICAgICAgICAgICAgIHN0YXJ0ID0gcHAuZ2V0SW5kZXgoKTsKKworICAgICAgICAgICAgICAgIFN0cmluZyB3b3JrVGV4dDIgPSB3b3JrVGV4dC5zdWJzdHJpbmcocHAuZ2V0SW5kZXgoKSk7CisgICAgICAgICAgICAgICAgUGFyc2VQb3NpdGlvbiBwcDIgPSBuZXcgUGFyc2VQb3NpdGlvbigwKTsKKworICAgICAgICAgICAgICAgIC8vIHRoZSBzZWNvbmQgbWF0Y2hUb0RlbGltaXRlcigpIHdpbGwgY29tcG9zZSBvdXIgcHJldmlvdXMKKyAgICAgICAgICAgICAgICAvLyBwYXJ0aWFsIHJlc3VsdCB3aXRoIHdoYXRldmVyIGl0IGdldHMgYmFjayBmcm9tIGl0cworICAgICAgICAgICAgICAgIC8vIHN1YnN0aXR1dGlvbiBpZiB0aGVyZSdzIGEgc3VjY2Vzc2Z1bCBtYXRjaCwgZ2l2aW5nIHVzCisgICAgICAgICAgICAgICAgLy8gYSByZWFsIHJlc3VsdAorICAgICAgICAgICAgICAgIHBhcnRpYWxSZXN1bHQgPSBtYXRjaFRvRGVsaW1pdGVyKHdvcmtUZXh0MiwgMCwgcGFydGlhbFJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZVRleHQuc3Vic3RyaW5nKHN1YjIuZ2V0UG9zKCkpLCBwcDIsIHN1YjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwcGVyQm91bmQpLmRvdWJsZVZhbHVlKCk7CisKKyAgICAgICAgICAgICAgICAvLyBpZiB3ZSBnb3QgYSBzdWNjZXNzZnVsIG1hdGNoIG9uIHRoaXMgc2Vjb25kCisgICAgICAgICAgICAgICAgLy8gbWF0Y2hUb0RlbGltaXRlcigpIGNhbGwsIHVwZGF0ZSB0aGUgaGlnaC13YXRlciBtYXJrCisgICAgICAgICAgICAgICAgLy8gYW5kIHJlc3VsdCAoaWYgbmVjZXNzYXJ5KQorICAgICAgICAgICAgICAgIGlmIChwcDIuZ2V0SW5kZXgoKSAhPSAwIHx8IHN1YjIuaXNOdWxsU3Vic3RpdHV0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZpeExlbmd0aCArIHBwLmdldEluZGV4KCkgKyBwcDIuZ2V0SW5kZXgoKSA+IGhpZ2hXYXRlck1hcmspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhpZ2hXYXRlck1hcmsgPSBwcmVmaXhMZW5ndGggKyBwcC5nZXRJbmRleCgpICsgcHAyLmdldEluZGV4KCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBwYXJ0aWFsUmVzdWx0OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorLy8gY29tbWVudGVkIG91dCBiZWNhdXNlIFBhcnNlUG9zaXRpb24gZG9lc24ndCBoYXZlIGVycm9yIGluZGV4IGluIDEuMS54CisvLyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisvLyAgICAgICAgICAgICAgICAgICAgICAgIGludCB0ZW1wID0gcHAyLmdldEVycm9ySW5kZXgoKSArIHN1YjEuZ2V0UG9zKCkgKyBwcC5nZXRJbmRleCgpOworLy8gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGVtcD4gcGFyc2VQb3NpdGlvbi5nZXRFcnJvckluZGV4KCkpIHsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlUG9zaXRpb24uc2V0RXJyb3JJbmRleCh0ZW1wKTsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgfQorLy8gICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKy8vIGNvbW1lbnRlZCBvdXQgYmVjYXVzZSBQYXJzZVBvc2l0aW9uIGRvZXNuJ3QgaGF2ZSBlcnJvciBpbmRleCBpbiAxLjEueAorLy8gICAgICAgICAgICAgICAgZWxzZSB7CisvLyAgICAgICAgICAgICAgICAgICAgaW50IHRlbXAgPSBzdWIxLmdldFBvcygpICsgcHAuZ2V0RXJyb3JJbmRleCgpOworLy8gICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wID4gcGFyc2VQb3NpdGlvbi5nZXRFcnJvckluZGV4KCkpIHsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VQb3NpdGlvbi5zZXRFcnJvckluZGV4KHRlbXApOworLy8gICAgICAgICAgICAgICAgICAgIH0KKy8vICAgICAgICAgICAgICAgIH0KKyAgICAgICAgLy8ga2VlcCB0cnlpbmcgdG8gbWF0Y2ggdGhpbmdzIHVudGlsIHRoZSBvdXRlciBtYXRjaFRvRGVsaW1pdGVyKCkKKyAgICAgICAgLy8gY2FsbCBmYWlscyB0byBtYWtlIGEgbWF0Y2ggKGVhY2ggdGltZSwgaXQgcGlja3MgdXAgd2hlcmUgaXQKKyAgICAgICAgLy8gbGVmdCBvZmYgdGhlIHByZXZpb3VzIHRpbWUpCisgICAgICAgIH0gd2hpbGUgKHN1YjEuZ2V0UG9zKCkgIT0gc3ViMi5nZXRQb3MoKSAmJiBwcC5nZXRJbmRleCgpID4gMCAmJiBwcC5nZXRJbmRleCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCB3b3JrVGV4dC5sZW5ndGgoKSAmJiBwcC5nZXRJbmRleCgpICE9IHN0YXJ0KTsKKworICAgICAgICAvLyB1cGRhdGUgdGhlIGNhbGxlcidzIFBhcnNlUG9zaXRpb24gd2l0aCBvdXIgaGlnaC13YXRlciBtYXJrCisgICAgICAgIC8vIChpLmUuLCBpdCBub3cgcG9pbnRzIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgdGhpcyBmdW5jdGlvbgorICAgICAgICAvLyBkaWRuJ3QgbWF0Y2gtLSB0aGUgUGFyc2VQb3NpdGlvbiBpcyB0aGVyZWZvcmUgdW5jaGFuZ2VkIGlmCisgICAgICAgIC8vIHdlIGRpZG4ndCBtYXRjaCBhbnl0aGluZykKKyAgICAgICAgcGFyc2VQb3NpdGlvbi5zZXRJbmRleChoaWdoV2F0ZXJNYXJrKTsKKy8vIGNvbW1lbnRlZCBvdXQgYmVjYXVzZSBQYXJzZVBvc2l0aW9uIGRvZXNuJ3QgaGF2ZSBlcnJvciBpbmRleCBpbiAxLjEueAorLy8gICAgICAgIGlmIChoaWdoV2F0ZXJNYXJrID4gMCkgeworLy8gICAgICAgICAgICBwYXJzZVBvc2l0aW9uLnNldEVycm9ySW5kZXgoMCk7CisvLyAgICAgICAgfQorCisgICAgICAgIC8vIHRoaXMgaXMgYSBoYWNrIGZvciBvbmUgdW51c3VhbCBjb25kaXRpb246IE5vcm1hbGx5LCB3aGV0aGVyIHRoaXMKKyAgICAgICAgLy8gcnVsZSBiZWxvbmcgdG8gYSBmcmFjdGlvbiBydWxlIHNldCBvciBub3QgaXMgaGFuZGxlZCBieSBpdHMKKyAgICAgICAgLy8gc3Vic3RpdHV0aW9ucy4gIEJ1dCBpZiB0aGF0IHJ1bGUgSEFTIE5PIHN1YnN0aXR1dGlvbnMsIHRoZW4KKyAgICAgICAgLy8gd2UgaGF2ZSB0byBhY2NvdW50IGZvciBpdCBoZXJlLiAgQnkgZGVmaW5pdGlvbiwgaWYgdGhlIG1hdGNoaW5nCisgICAgICAgIC8vIHJ1bGUgaW4gYSBmcmFjdGlvbiBydWxlIHNldCBoYXMgbm8gc3Vic3RpdHV0aW9ucywgaXRzIG51bWVyYXRvcgorICAgICAgICAvLyBpcyAxLCBhbmQgc28gdGhlIHJlc3VsdCBpcyB0aGUgcmVjaXByb2NhbCBvZiBpdHMgYmFzZSB2YWx1ZS4KKyAgICAgICAgaWYgKGlzRnJhY3Rpb25SdWxlICYmIGhpZ2hXYXRlck1hcmsgPiAwICYmIHN1YjEuaXNOdWxsU3Vic3RpdHV0aW9uKCkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IDEgLyByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICAvLyByZXR1cm4gdGhlIHJlc3VsdCBhcyBhIExvbmcgaWYgcG9zc2libGUsIG9yIGFzIGEgRG91YmxlCisgICAgICAgIGlmIChyZXN1bHQgPT0gKGxvbmcpcmVzdWx0KSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IExvbmcoKGxvbmcpcmVzdWx0KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgRG91YmxlKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkgcGFyc2UoKSB0byBtYXRjaCB0aGUgdGV4dCBiZWluZyBwYXJzZWQKKyAgICAgKiBhZ2FpbnN0IGEgcG9zc2libGUgcHJlZml4IHN0cmluZy4gIFRoaXMgZnVuY3Rpb24KKyAgICAgKiBtYXRjaGVzIGNoYXJhY3RlcnMgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcgYmVpbmcgcGFyc2VkCisgICAgICogdG8gY2hhcmFjdGVycyBmcm9tIHRoZSBwcm9zcGVjdGl2ZSBwcmVmaXguICBJZiB0aGV5IG1hdGNoLCBwcCBpcworICAgICAqIHVwZGF0ZWQgdG8gdGhlIGZpcnN0IGNoYXJhY3RlciBub3QgbWF0Y2hlZCwgYW5kIHRoZSByZXN1bHQgaXMKKyAgICAgKiB0aGUgdW5wYXJzZWQgcGFydCBvZiB0aGUgc3RyaW5nLiAgSWYgdGhleSBkb24ndCBtYXRjaCwgdGhlIHdob2xlCisgICAgICogc3RyaW5nIGlzIHJldHVybmVkLCBhbmQgcHAgaXMgbGVmdCB1bmNoYW5nZWQuCisgICAgICogQHBhcmFtIHRleHQgVGhlIHN0cmluZyBiZWluZyBwYXJzZWQKKyAgICAgKiBAcGFyYW0gcHJlZml4IFRoZSB0ZXh0IHRvIG1hdGNoIGFnYWluc3QKKyAgICAgKiBAcGFyYW0gcHAgT24gZW50cnksIGlnbm9yZWQgYW5kIGFzc3VtZWQgdG8gYmUgMC4gIE9uIGV4aXQsIHBvaW50cworICAgICAqIHRvIHRoZSBmaXJzdCB1bm1hdGNoZWQgY2hhcmFjdGVyIChhc3N1bWluZyB0aGUgd2hvbGUgcHJlZml4IG1hdGNoZWQpLAorICAgICAqIG9yIGlzIHVuY2hhbmdlZCAoaWYgdGhlIHdob2xlIHByZWZpeCBkaWRuJ3QgbWF0Y2gpLgorICAgICAqIEByZXR1cm4gSWYgdGhpbmdzIG1hdGNoLCB0aGlzIGlzIHRoZSB1bnBhcnNlZCBwYXJ0IG9mICJ0ZXh0IjsKKyAgICAgKiBpZiB0aGV5IGRpZG4ndCBtYXRjaCwgdGhpcyBpcyAidGV4dCIuCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgc3RyaXBQcmVmaXgoU3RyaW5nIHRleHQsIFN0cmluZyBwcmVmaXgsIFBhcnNlUG9zaXRpb24gcHApIHsKKyAgICAgICAgLy8gaWYgdGhlIHByZWZpeCB0ZXh0IGlzIGVtcHR5LCBkdW1wIG91dCB3aXRob3V0IGRvaW5nIGFueXRoaW5nCisgICAgICAgIGlmIChwcmVmaXgubGVuZ3RoKCkgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBvdGhlcndpc2UsIHVzZSBwcmVmaXhMZW5ndGgoKSB0byBtYXRjaCB0aGUgYmVnaW5uaW5nIG9mCisgICAgICAgICAgICAvLyAidGV4dCIgYWdhaW5zdCAicHJlZml4Ii4gIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUKKyAgICAgICAgICAgIC8vIG51bWJlciBvZiBjaGFyYWN0ZXJzIGZyb20gInRleHQiIHRoYXQgbWF0Y2hlZCAob3IgMCBpZgorICAgICAgICAgICAgLy8gd2UgZGlkbid0IG1hdGNoIHRoZSB3aG9sZSBwcmVmaXgpCisgICAgICAgICAgICBpbnQgcGZsID0gcHJlZml4TGVuZ3RoKHRleHQsIHByZWZpeCk7CisgICAgICAgICAgICBpZiAocGZsICE9IDApIHsKKyAgICAgICAgICAgICAgICAvLyBpZiB3ZSBnb3QgYSBzdWNjZXNzZnVsIG1hdGNoLCB1cGRhdGUgdGhlIHBhcnNlIHBvc2l0aW9uCisgICAgICAgICAgICAgICAgLy8gYW5kIHN0cmlwIHRoZSBwcmVmaXggb2ZmIG9mICJ0ZXh0IgorICAgICAgICAgICAgICAgIHBwLnNldEluZGV4KHBwLmdldEluZGV4KCkgKyBwZmwpOworICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0LnN1YnN0cmluZyhwZmwpOworCisgICAgICAgICAgICAvLyBpZiB3ZSBkaWRuJ3QgZ2V0IGEgc3VjY2Vzc2Z1bCBtYXRjaCwgbGVhdmUgZXZlcnl0aGluZyBhbG9uZQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFVzZWQgYnkgcGFyc2UoKSB0byBtYXRjaCBhIHN1YnN0aXR1dGlvbiBhbmQgYW55IGZvbGxvd2luZyB0ZXh0LgorICAgICAqICJ0ZXh0IiBpcyBzZWFyY2hlZCBmb3IgaW5zdGFuY2VzIG9mICJkZWxpbWl0ZXIiLiAgRm9yIGVhY2ggaW5zdGFuY2UKKyAgICAgKiBvZiBkZWxpbWl0ZXIsIHRoZSBpbnRlcnZlbmluZyB0ZXh0IGlzIHRlc3RlZCB0byBzZWUgd2hldGhlciBpdAorICAgICAqIG1hdGNoZXMgdGhlIHN1YnN0aXR1dGlvbi4gIFRoZSBsb25nZXN0IG1hdGNoIHdpbnMuCisgICAgICogQHBhcmFtIHRleHQgVGhlIHN0cmluZyBiZWluZyBwYXJzZWQKKyAgICAgKiBAcGFyYW0gc3RhcnRQb3MgVGhlIHBvc2l0aW9uIGluICJ0ZXh0IiB3aGVyZSB3ZSBzaG91bGQgc3RhcnQgbG9va2luZworICAgICAqIGZvciAiZGVsaW1pdGVyIi4KKyAgICAgKiBAcGFyYW0gYmFzZVZhbHVlIEEgcGFydGlhbCBwYXJzZSByZXN1bHQgKG9mdGVuIHRoZSBydWxlJ3MgYmFzZSB2YWx1ZSksCisgICAgICogd2hpY2ggaXMgY29tYmluZWQgd2l0aCB0aGUgcmVzdWx0IGZyb20gbWF0Y2hpbmcgdGhlIHN1YnN0aXR1dGlvbgorICAgICAqIEBwYXJhbSBkZWxpbWl0ZXIgVGhlIHN0cmluZyB0byBzZWFyY2ggInRleHQiIGZvci4KKyAgICAgKiBAcGFyYW0gcHAgSWdub3JlZCBhbmQgcHJlc3VtZWQgdG8gYmUgMCBvbiBlbnRyeS4gIElmIHRoZXJlJ3MgYSBtYXRjaCwKKyAgICAgKiBvbiBleGl0IHRoaXMgd2lsbCBwb2ludCB0byB0aGUgZmlyc3QgdW5tYXRjaGVkIGNoYXJhY3Rlci4KKyAgICAgKiBAcGFyYW0gc3ViIElmIHdlIGZpbmQgImRlbGltaXRlciIgaW4gInRleHQiLCB0aGlzIHN1YnN0aXR1dGlvbiBpcyB1c2VkCisgICAgICogdG8gbWF0Y2ggdGhlIHRleHQgYmV0d2VlbiB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcgYW5kIHRoZQorICAgICAqIHBvc2l0aW9uIG9mICJkZWxpbWl0ZXIuIiAgKElmICJkZWxpbWl0ZXIiIGlzIHRoZSBlbXB0eSBzdHJpbmcsIHRoZW4KKyAgICAgKiB0aGlzIGZ1bmN0aW9uIGp1c3QgbWF0Y2hlcyBhZ2FpbnN0IHRoaXMgc3Vic3RpdHV0aW9uIGFuZCB1cGRhdGVzCisgICAgICogZXZlcnl0aGluZyBhY2NvcmRpbmdseS4pCisgICAgICogQHBhcmFtIHVwcGVyQm91bmQgV2hlbiBtYXRjaGluZyB0aGUgc3Vic3RpdHV0aW9uLCBpdCB3aWxsIG9ubHkKKyAgICAgKiBjb25zaWRlciBydWxlcyB3aXRoIGJhc2UgdmFsdWVzIGxvd2VyIHRoYW4gdGhpcyB2YWx1ZS4KKyAgICAgKiBAcmV0dXJuIElmIHRoZXJlJ3MgYSBtYXRjaCwgdGhpcyBpcyB0aGUgcmVzdWx0IG9mIGNvbXBvc2luZworICAgICAqIGJhc2VWYWx1ZSB3aXRoIHRoZSByZXN1bHQgb2YgbWF0Y2hpbmcgdGhlIHN1YnN0aXR1dGlvbi4gIE90aGVyd2lzZSwKKyAgICAgKiB0aGlzIGlzIG5ldyBMb25nKDApLiAgSXQncyBuZXZlciBudWxsLiAgSWYgdGhlIHJlc3VsdCBpcyBhbiBpbnRlZ2VyLAorICAgICAqIHRoaXMgd2lsbCBiZSBhbiBpbnN0YW5jZSBvZiBMb25nOyBvdGhlcndpc2UsIGl0J3MgYW4gaW5zdGFuY2Ugb2YKKyAgICAgKiBEb3VibGUuCisgICAgICovCisgICAgcHJpdmF0ZSBOdW1iZXIgbWF0Y2hUb0RlbGltaXRlcihTdHJpbmcgdGV4dCwgaW50IHN0YXJ0UG9zLCBkb3VibGUgYmFzZVZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGRlbGltaXRlciwgUGFyc2VQb3NpdGlvbiBwcCwgTkZTdWJzdGl0dXRpb24gc3ViLCBkb3VibGUgdXBwZXJCb3VuZCkgeworICAgICAgICAvLyBpZiAiZGVsaW1pdGVyIiBjb250YWlucyByZWFsIChpLmUuLCBub24taWdub3JhYmxlKSB0ZXh0LCBzZWFyY2gKKyAgICAgICAgLy8gaXQgZm9yICJkZWxpbWl0ZXIiIGJlZ2lubmluZyBhdCAic3RhcnQiLiAgSWYgdGhhdCBzdWNjZWVkcywgdGhlbgorICAgICAgICAvLyB1c2UgInN1YiIncyBkb1BhcnNlKCkgbWV0aG9kIHRvIG1hdGNoIHRoZSB0ZXh0IGJlZm9yZSB0aGUKKyAgICAgICAgLy8gaW5zdGFuY2Ugb2YgImRlbGltaXRlciIgd2UganVzdCBmb3VuZC4KKyAgICAgICAgaWYgKCFhbGxJZ25vcmFibGUoZGVsaW1pdGVyKSkgeworICAgICAgICAgICAgUGFyc2VQb3NpdGlvbiB0ZW1wUFAgPSBuZXcgUGFyc2VQb3NpdGlvbigwKTsKKyAgICAgICAgICAgIE51bWJlciB0ZW1wUmVzdWx0OworCisgICAgICAgICAgICAvLyB1c2UgZmluZFRleHQoKSB0byBzZWFyY2ggZm9yICJkZWxpbWl0ZXIiLiAgSXQgcmV0dXJucyBhIHR3by0KKyAgICAgICAgICAgIC8vIGVsZW1lbnQgYXJyYXk6IGVsZW1lbnQgMCBpcyB0aGUgcG9zaXRpb24gb2YgdGhlIG1hdGNoLCBhbmQKKyAgICAgICAgICAgIC8vIGVsZW1lbnQgMSBpcyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCBtYXRjaGVkCisgICAgICAgICAgICAvLyAiZGVsaW1pdGVyIi4KKyAgICAgICAgICAgIGludFtdIHRlbXAgPSBmaW5kVGV4dCh0ZXh0LCBkZWxpbWl0ZXIsIHN0YXJ0UG9zKTsKKyAgICAgICAgICAgIGludCBkUG9zID0gdGVtcFswXTsKKyAgICAgICAgICAgIGludCBkTGVuID0gdGVtcFsxXTsKKworICAgICAgICAgICAgLy8gaWYgZmluZFRleHQoKSBzdWNjZWVkZWQsIGlzb2xhdGUgdGhlIHRleHQgcHJlY2VkaW5nIHRoZQorICAgICAgICAgICAgLy8gbWF0Y2gsIGFuZCB1c2UgInN1YiIgdG8gbWF0Y2ggdGhhdCB0ZXh0CisgICAgICAgICAgICB3aGlsZSAoZFBvcyA+PSAwKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHN1YlRleHQgPSB0ZXh0LnN1YnN0cmluZygwLCBkUG9zKTsKKyAgICAgICAgICAgICAgICBpZiAoc3ViVGV4dC5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdGVtcFJlc3VsdCA9IHN1Yi5kb1BhcnNlKHN1YlRleHQsIHRlbXBQUCwgYmFzZVZhbHVlLCB1cHBlckJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLmxlbmllbnRQYXJzZUVuYWJsZWQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHN1YnN0aXR1dGlvbiBjb3VsZCBtYXRjaCBhbGwgdGhlIHRleHQgdXAgdG8KKyAgICAgICAgICAgICAgICAgICAgLy8gd2hlcmUgd2UgZm91bmQgImRlbGltaXRlciIsIHRoZW4gdGhpcyBmdW5jdGlvbiBoYXMKKyAgICAgICAgICAgICAgICAgICAgLy8gYSBzdWNjZXNzZnVsIG1hdGNoLiAgQnVtcCB0aGUgY2FsbGVyJ3MgcGFyc2UgcG9zaXRpb24KKyAgICAgICAgICAgICAgICAgICAgLy8gdG8gcG9pbnQgdG8gdGhlIGZpcnN0IGNoYXJhY3RlciBhZnRlciB0aGUgdGV4dAorICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IG1hdGNoZXMgImRlbGltaXRlciIsIGFuZCByZXR1cm4gdGhlIHJlc3VsdAorICAgICAgICAgICAgICAgICAgICAvLyB3ZSBnb3QgZnJvbSBwYXJzaW5nIHRoZSBzdWJzdGl0dXRpb24uCisgICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wUFAuZ2V0SW5kZXgoKSA9PSBkUG9zKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcC5zZXRJbmRleChkUG9zICsgZExlbik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVtcFJlc3VsdDsKKyAgICAgICAgICAgICAgICAgICAgfQorLy8gY29tbWVudGVkIG91dCBiZWNhdXNlIFBhcnNlUG9zaXRpb24gZG9lc24ndCBoYXZlIGVycm9yIGluZGV4IGluIDEuMS54CisvLyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisvLyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wUFAuZ2V0RXJyb3JJbmRleCgpID4gMCkgeworLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHAuc2V0RXJyb3JJbmRleCh0ZW1wUFAuZ2V0RXJyb3JJbmRleCgpKTsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwLnNldEVycm9ySW5kZXgodGVtcFBQLmdldEluZGV4KCkpOworLy8gICAgICAgICAgICAgICAgICAgICAgICB9CisvLyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGlmIHdlIGRpZG4ndCBtYXRjaCB0aGUgc3Vic3RpdHV0aW9uLCBzZWFyY2ggZm9yIGFub3RoZXIKKyAgICAgICAgICAgICAgICAvLyBjb3B5IG9mICJkZWxpbWl0ZXIiIGluICJ0ZXh0IiBhbmQgcmVwZWF0IHRoZSBsb29wIGlmCisgICAgICAgICAgICAgICAgLy8gd2UgZmluZCBpdAorICAgICAgICAgICAgICAgIHRlbXBQUC5zZXRJbmRleCgwKTsKKyAgICAgICAgICAgICAgICB0ZW1wID0gZmluZFRleHQodGV4dCwgZGVsaW1pdGVyLCBkUG9zICsgZExlbik7CisgICAgICAgICAgICAgICAgZFBvcyA9IHRlbXBbMF07CisgICAgICAgICAgICAgICAgZExlbiA9IHRlbXBbMV07CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBpZiB3ZSBtYWtlIGl0IGhlcmUsIHRoaXMgd2FzIGFuIHVuc3VjY2Vzc2Z1bCBtYXRjaCwgYW5kIHdlCisgICAgICAgICAgICAvLyBsZWF2ZSBwcCB1bmNoYW5nZWQgYW5kIHJldHVybiAwCisgICAgICAgICAgICBwcC5zZXRJbmRleCgwKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgTG9uZygwKTsKKworICAgICAgICAvLyBpZiAiZGVsaW1pdGVyIiBpcyBlbXB0eSwgb3IgY29uc2lzdHMgb25seSBvZiBpZ25vcmFibGUgY2hhcmFjdGVycworICAgICAgICAvLyAoaS5lLiwgaXMgc2VtYW50aWNhbGx5IGVtcHR5KSwgdGh3ZSB3ZSBvYnZpb3VzbHkgY2FuJ3Qgc2VhcmNoCisgICAgICAgIC8vIGZvciAiZGVsaW1pdGVyIi4gIEluc3RlYWQsIGp1c3QgdXNlICJzdWIiIHRvIHBhcnNlIGFzIG11Y2ggb2YKKyAgICAgICAgLy8gInRleHQiIGFzIHBvc3NpYmxlLgorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUGFyc2VQb3NpdGlvbiB0ZW1wUFAgPSBuZXcgUGFyc2VQb3NpdGlvbigwKTsKKyAgICAgICAgICAgIE51bWJlciByZXN1bHQgPSBuZXcgTG9uZygwKTsKKyAgICAgICAgICAgIE51bWJlciB0ZW1wUmVzdWx0OworCisgICAgICAgICAgICAvLyB0cnkgdG8gbWF0Y2ggdGhlIHdob2xlIHN0cmluZyBhZ2FpbnN0IHRoZSBzdWJzdGl0dXRpb24KKyAgICAgICAgICAgIHRlbXBSZXN1bHQgPSBzdWIuZG9QYXJzZSh0ZXh0LCB0ZW1wUFAsIGJhc2VWYWx1ZSwgdXBwZXJCb3VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIubGVuaWVudFBhcnNlRW5hYmxlZCgpKTsKKyAgICAgICAgICAgIGlmICh0ZW1wUFAuZ2V0SW5kZXgoKSAhPSAwIHx8IHN1Yi5pc051bGxTdWJzdGl0dXRpb24oKSkgeworICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlJ3MgYSBzdWNjZXNzZnVsIG1hdGNoIChvciBpdCdzIGEgbnVsbAorICAgICAgICAgICAgICAgIC8vIHN1YnN0aXR1dGlvbiksIHVwZGF0ZSBwcCB0byBwb2ludCB0byB0aGUgZmlyc3QKKyAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXIgd2UgZGlkbid0IG1hdGNoLCBhbmQgcGFzcyB0aGUgcmVzdWx0IGZyb20KKyAgICAgICAgICAgICAgICAvLyBzdWIuZG9QYXJzZSgpIG9uIHRocm91Z2ggdG8gdGhlIGNhbGxlcgorICAgICAgICAgICAgICAgIHBwLnNldEluZGV4KHRlbXBQUC5nZXRJbmRleCgpKTsKKyAgICAgICAgICAgICAgICBpZiAodGVtcFJlc3VsdCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRlbXBSZXN1bHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorLy8gY29tbWVudGVkIG91dCBiZWNhdXNlIFBhcnNlUG9zaXRpb24gZG9lc24ndCBoYXZlIGVycm9yIGluZGV4IGluIDEuMS54CisvLyAgICAgICAgICAgIGVsc2UgeworLy8gICAgICAgICAgICAgICAgcHAuc2V0RXJyb3JJbmRleCh0ZW1wUFAuZ2V0RXJyb3JJbmRleCgpKTsKKy8vICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBhbmQgaWYgd2UgZ2V0IHRvIGhlcmUsIHRoZW4gbm90aGluZyBtYXRjaGVkLCBzbyB3ZSByZXR1cm4KKyAgICAgICAgICAgIC8vIDAgYW5kIGxlYXZlIHBwIGFsb25lCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVXNlZCBieSBzdHJpcFByZWZpeCgpIHRvIG1hdGNoIGNoYXJhY3RlcnMuICBJZiBsZW5pZW50IHBhcnNlIG1vZGUKKyAgICAgKiBpcyBvZmYsIHRoaXMganVzdCBjYWxscyBzdGFydHNXaXRoKCkuICBJZiBsZW5pZW50IHBhcnNlIG1vZGUgaXMgb24sCisgICAgICogdGhpcyBmdW5jdGlvbiB1c2VzIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcnMgdG8gbWF0Y2ggY2hhcmFjdGVycyBpbgorICAgICAqIHRoZSBzdHJpbmdzIChvbmx5IHByaW1hcnktb3JkZXIgZGlmZmVyZW5jZXMgYXJlIHNpZ25pZmljYW50IGluCisgICAgICogZGV0ZXJtaW5pbmcgd2hldGhlciB0aGVyZSdzIGEgbWF0Y2gpLgorICAgICAqIEBwYXJhbSBzdHIgVGhlIHN0cmluZyBiZWluZyB0ZXN0ZWQKKyAgICAgKiBAcGFyYW0gcHJlZml4IFRoZSB0ZXh0IHdlJ3JlIGhvcGluZyB0byBzZWUgYXQgdGhlIGJlZ2lubmluZworICAgICAqIG9mICJzdHIiCisgICAgICogQHJldHVybiBJZiAicHJlZml4IiBpcyBmb3VuZCBhdCB0aGUgYmVnaW5uaW5nIG9mICJzdHIiLCB0aGlzCisgICAgICogaXMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluICJzdHIiIHRoYXQgd2VyZSBtYXRjaGVkICh0aGlzCisgICAgICogaXNuJ3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgdGhlIGxlbmd0aCBvZiAicHJlZml4IiB3aGVuIG1hdGNoaW5nCisgICAgICogdGV4dCB3aXRoIGEgY29sbGF0b3IpLiAgSWYgdGhlcmUncyBubyBtYXRjaCwgdGhpcyBpcyAwLgorICAgICAqLworICAgIHByaXZhdGUgaW50IHByZWZpeExlbmd0aChTdHJpbmcgc3RyLCBTdHJpbmcgcHJlZml4KSB7CisgICAgICAgIC8vIGlmIHdlJ3JlIGxvb2tpbmcgZm9yIGFuIGVtcHR5IHByZWZpeCwgaXQgb2J2aW91c2x5IG1hdGNoZXMKKyAgICAgICAgLy8gemVybyBjaGFyYWN0ZXJzLiAgSnVzdCBnbyBhaGVhZCBhbmQgcmV0dXJuIDAuCisgICAgICAgIGlmIChwcmVmaXgubGVuZ3RoKCkgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICAvLyBnbyB0aHJvdWdoIGFsbCB0aGlzIGdyaWVmIGlmIHdlJ3JlIGluIGxlbmllbnQtcGFyc2UgbW9kZQorICAgICAgICBpZiAoZm9ybWF0dGVyLmxlbmllbnRQYXJzZUVuYWJsZWQoKSkgeworICAgICAgICAgICAgLy8gZ2V0IHRoZSBmb3JtYXR0ZXIncyBjb2xsYXRvciBhbmQgdXNlIGl0IHRvIGNyZWF0ZSB0d28KKyAgICAgICAgICAgIC8vIGNvbGxhdGlvbiBlbGVtZW50IGl0ZXJhdG9ycywgb25lIG92ZXIgdGhlIHRhcmdldCBzdHJpbmcKKyAgICAgICAgICAgIC8vIGFuZCBhbm90aGVyIG92ZXIgdGhlIHByZWZpeCAocmlnaHQgbm93LCB3ZSdsbCB0aHJvdyBhbgorICAgICAgICAgICAgLy8gZXhjZXB0aW9uIGlmIHRoZSBjb2xsYXRvciB3ZSBnZXQgYmFjayBmcm9tIHRoZSBmb3JtYXR0ZXIKKyAgICAgICAgICAgIC8vIGlzbid0IGEgUnVsZUJhc2VkQ29sbGF0b3IsIGJlY2F1c2UgUnVsZUJhc2VkQ29sbGF0b3IgZGVmaW5lcworICAgICAgICAgICAgLy8gdGhlIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvZXIgcHJvdG9jb2wuICBIb3BlZnVsbHksIHRoaXMKKyAgICAgICAgICAgIC8vIHdpbGwgY2hhbmdlIHNvbWVkYXkuKQorICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IgPSAoUnVsZUJhc2VkQ29sbGF0b3IpZm9ybWF0dGVyLmdldENvbGxhdG9yKCk7CisgICAgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3Igc3RySXRlciA9IGNvbGxhdG9yLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcihzdHIpOworICAgICAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIHByZWZpeEl0ZXIgPSBjb2xsYXRvci5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IocHJlZml4KTsKKworICAgICAgICAgICAgLy8gbWF0Y2ggY29sbGF0aW9uIGVsZW1lbnRzIGJldHdlZW4gdGhlIHN0cmluZ3MKKyAgICAgICAgICAgIGludCBvU3RyID0gc3RySXRlci5uZXh0KCk7CisgICAgICAgICAgICBpbnQgb1ByZWZpeCA9IHByZWZpeEl0ZXIubmV4dCgpOworCisgICAgICAgICAgICB3aGlsZSAob1ByZWZpeCAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisgICAgICAgICAgICAgICAgLy8gc2tpcCBvdmVyIGlnbm9yYWJsZSBjaGFyYWN0ZXJzIGluIHRoZSB0YXJnZXQgc3RyaW5nCisgICAgICAgICAgICAgICAgd2hpbGUgKENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5wcmltYXJ5T3JkZXIob1N0cikgPT0gMCAmJiBvU3RyICE9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKyAgICAgICAgICAgICAgICAgICAgb1N0ciA9IHN0ckl0ZXIubmV4dCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGFraXAgb3ZlciBpZ25vcmFibGUgY2hhcmFjdGVycyBpbiB0aGUgcHJlZml4CisgICAgICAgICAgICAgICAgd2hpbGUgKENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5wcmltYXJ5T3JkZXIob1ByZWZpeCkgPT0gMCAmJiBvUHJlZml4ICE9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKyAgICAgICAgICAgICAgICAgICAgb1ByZWZpeCA9IHByZWZpeEl0ZXIubmV4dCgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGlmIHNraXBwaW5nIG92ZXIgaWdub3JhYmxlcyBicm91Z2h0IHVzIHRvIHRoZSBlbmQKKyAgICAgICAgICAgICAgICAvLyBvZiB0aGUgdGFyZ2V0IHN0cmluZywgd2UgZGlkbid0IG1hdGNoIGFuZCByZXR1cm4gMAorICAgICAgICAgICAgICAgIGlmIChvU3RyID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gaWYgc2tpcHBpbmcgb3ZlciBpZ25vcmFibGVzIGJyb3VnaHQgdG8gdGhlIGVuZCBvZgorICAgICAgICAgICAgICAgIC8vIHRoZSBwcmVmaXgsIHdlIERJRCBtYXRjaDogZHJvcCBvdXQgb2YgdGhlIGxvb3AKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChvUHJlZml4ID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gbWF0Y2ggY29sbGF0aW9uIGVsZW1lbnRzIGZyb20gdGhlIHR3byBzdHJpbmdzCisgICAgICAgICAgICAgICAgLy8gKGNvbnNpZGVyaW5nIG9ubHkgcHJpbWFyeSBkaWZmZXJlbmNlcykuICBJZiB3ZQorICAgICAgICAgICAgICAgIC8vIGdldCBhIG1pc21hdGNoLCBkdW1wIG91dCBhbmQgcmV0dXJuIDAKKyAgICAgICAgICAgICAgICBpZiAoQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLnByaW1hcnlPcmRlcihvU3RyKSAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW1hcnlPcmRlcihvUHJlZml4KSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKworICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSwgYWR2YW5jZSB0byB0aGUgbmV4dCBjaGFyYWN0ZXIgaW4gZWFjaCBzdHJpbmcKKyAgICAgICAgICAgICAgICAvLyBhbmQgbG9vcCAod2UgZHJvcCBvdXQgb2YgdGhlIGxvb3Agd2hlbiB3ZSBleGhhdXN0CisgICAgICAgICAgICAgICAgLy8gY29sbGF0aW9uIGVsZW1lbnRzIGluIHRoZSBwcmVmaXgpCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgb1N0ciA9IHN0ckl0ZXIubmV4dCgpOworICAgICAgICAgICAgICAgICAgICBvUHJlZml4ID0gcHJlZml4SXRlci5uZXh0KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgIC8vIEpESyAxLjItc3BlY2lmaWMgQVBJIGNhbGwKKyAgICAgICAgICAgIC8vIHJldHVybiBzdHJJdGVyLmdldE9mZnNldCgpOworICAgICAgICAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAvLyBKREsgMS4xIEhBQ0sgKHRha2Ugb3V0IGZvciAxLjItc3BlY2lmaWMgY29kZSkKKworICAgICAgICAgICAgLy8gaWYgd2UgbWFrZSBpdCB0byBoZXJlLCB3ZSBoYXZlIGEgc3VjY2Vzc2Z1bCBtYXRjaC4gIE5vdyB3ZQorICAgICAgICAgICAgLy8gaGF2ZSB0byBmaW5kIG91dCBIT1cgTUFOWSBjaGFyYWN0ZXJzIGZyb20gdGhlIHRhcmdldCBzdHJpbmcKKyAgICAgICAgICAgIC8vIG1hdGNoZWQgdGhlIHByZWZpeCAodGhlcmUgaXNuJ3QgbmVjZXNzYXJpbHkgYSBvbmUtdG8tb25lCisgICAgICAgICAgICAvLyBtYXBwaW5nIGJldHdlZW4gY29sbGF0aW9uIGVsZW1lbnRzIGFuZCBjaGFyYWN0ZXJzKS4KKyAgICAgICAgICAgIC8vIEluIEpESyAxLjIsIHRoZXJlJ3MgYSBzaW1wbGUgZ2V0T2Zmc2V0KCkgY2FsbCB3ZSBjYW4gdXNlLgorICAgICAgICAgICAgLy8gSW4gSkRLIDEuMSwgb24gdGhlIG90aGVyIGhhbmQsIHdlIGhhdmUgdG8gZ28gdGhyb3VnaCBzb21lCisgICAgICAgICAgICAvLyB1Z2x5IGNvbnRvcnRpb25zLiAgRmlyc3QsIHVzZSB0aGUgY29sbGF0b3IgdG8gY29tcGFyZSB0aGUKKyAgICAgICAgICAgIC8vIHNhbWUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgZnJvbSB0aGUgcHJlZml4IGFuZCB0YXJnZXQgc3RyaW5nLgorICAgICAgICAgICAgLy8gSWYgdGhleSdyZSBlcXVhbCwgd2UncmUgZG9uZS4KKyAgICAgICAgICAgIGNvbGxhdG9yLnNldFN0cmVuZ3RoKENvbGxhdG9yLlBSSU1BUlkpOworICAgICAgICAgICAgaWYgKHN0ci5sZW5ndGgoKSA+PSBwcmVmaXgubGVuZ3RoKCkKKyAgICAgICAgICAgICAgICAgICAgJiYgY29sbGF0b3IuZXF1YWxzKHN0ci5zdWJzdHJpbmcoMCwgcHJlZml4Lmxlbmd0aCgpKSwgcHJlZml4KSkgeworICAgICAgICAgICAgICAgIHJldHVybiBwcmVmaXgubGVuZ3RoKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGlmIHRoZXkncmUgbm90IGVxdWFsLCB0aGVuIHdlIGhhdmUgdG8gY29tcGFyZSBzdWNjZXNzaXZlbHkKKyAgICAgICAgICAgIC8vIGxhcmdlciBhbmQgbGFyZ2VyIHN1YnN0cmluZ3Mgb2YgdGhlIHRhcmdldCBzdHJpbmcgdW50aWwgd2UKKyAgICAgICAgICAgIC8vIGdldCB0byBvbmUgdGhhdCBtYXRjaGVzIHRoZSBwcmVmaXguICBBdCB0aGF0IHBvaW50LCB3ZSBrbm93CisgICAgICAgICAgICAvLyBob3cgbWFueSBjaGFyYWN0ZXJzIG1hdGNoZWQgdGhlIHByZWZpeCwgYW5kIHdlIGNhbiByZXR1cm4uCisgICAgICAgICAgICBpbnQgcCA9IDE7CisgICAgICAgICAgICB3aGlsZSAocCA8PSBzdHIubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoY29sbGF0b3IuZXF1YWxzKHN0ci5zdWJzdHJpbmcoMCwgcCksIHByZWZpeCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHA7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU0hPVUxLRCBORVZFUiBHRVQgSEVSRSEhIQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICAgICAvLyBJZiBsZW5pZW50IHBhcnNpbmcgaXMgdHVybmVkIG9mZiwgZm9yZ2V0IGFsbCB0aGF0IGNyYXAgYWJvdmUuCisgICAgICAgIC8vIEp1c3QgdXNlIFN0cmluZy5zdGFydHNXaXRoKCkgYW5kIGJlIGRvbmUgd2l0aCBpdC4KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChzdHIuc3RhcnRzV2l0aChwcmVmaXgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHByZWZpeC5sZW5ndGgoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZWFyY2hlcyBhIHN0cmluZyBmb3IgYW5vdGhlciBzdHJpbmcuICBJZiBsZW5pZW50IHBhcnNpbmcgaXMgb2ZmLAorICAgICAqIHRoaXMganVzdCBjYWxscyBpbmRleE9mKCkuICBJZiBsZW5pZW50IHBhcnNpbmcgaXMgb24sIHRoaXMgZnVuY3Rpb24KKyAgICAgKiB1c2VzIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciB0byBtYXRjaCBjaGFyYWN0ZXJzLCBhbmQgb25seQorICAgICAqIHByaW1hcnktb3JkZXIgZGlmZmVyZW5jZXMgYXJlIHNpZ25pZmljYW50IGluIGRldGVybWluaW5nIHdoZXRoZXIKKyAgICAgKiB0aGVyZSdzIGEgbWF0Y2guCisgICAgICogQHBhcmFtIHN0ciBUaGUgc3RyaW5nIHRvIHNlYXJjaAorICAgICAqIEBwYXJhbSBrZXkgVGhlIHN0cmluZyB0byBzZWFyY2ggInN0ciIgZm9yCisgICAgICogQHJldHVybiBBIHR3by1lbGVtZW50IGFycmF5IG9mIGludHMuICBFbGVtZW50IDAgaXMgdGhlIHBvc2l0aW9uCisgICAgICogb2YgdGhlIG1hdGNoLCBvciAtMSBpZiB0aGVyZSB3YXMgbm8gbWF0Y2guICBFbGVtZW50IDEgaXMgdGhlCisgICAgICogbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gInN0ciIgdGhhdCBtYXRjaGVkICh3aGljaCBpc24ndCBuZWNlc3NhcmlseQorICAgICAqIHRoZSBzYW1lIGFzIHRoZSBsZW5ndGggb2YgImtleSIpCisgICAgICovCisgICAgcHJpdmF0ZSBpbnRbXSBmaW5kVGV4dChTdHJpbmcgc3RyLCBTdHJpbmcga2V5KSB7CisgICAgICAgIHJldHVybiBmaW5kVGV4dChzdHIsIGtleSwgMCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2VhcmNoZXMgYSBzdHJpbmcgZm9yIGFub3RoZXIgc3RyaW5nLiAgSWYgbGVuaWVudCBwYXJzaW5nIGlzIG9mZiwKKyAgICAgKiB0aGlzIGp1c3QgY2FsbHMgaW5kZXhPZigpLiAgSWYgbGVuaWVudCBwYXJzaW5nIGlzIG9uLCB0aGlzIGZ1bmN0aW9uCisgICAgICogdXNlcyBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgdG8gbWF0Y2ggY2hhcmFjdGVycywgYW5kIG9ubHkKKyAgICAgKiBwcmltYXJ5LW9yZGVyIGRpZmZlcmVuY2VzIGFyZSBzaWduaWZpY2FudCBpbiBkZXRlcm1pbmluZyB3aGV0aGVyCisgICAgICogdGhlcmUncyBhIG1hdGNoLgorICAgICAqIEBwYXJhbSBzdHIgVGhlIHN0cmluZyB0byBzZWFyY2gKKyAgICAgKiBAcGFyYW0ga2V5IFRoZSBzdHJpbmcgdG8gc2VhcmNoICJzdHIiIGZvcgorICAgICAqIEBwYXJhbSBzdGFydGluZ0F0IFRoZSBpbmRleCBpbnRvICJzdHIiIHdoZXJlIHRoZSBzZWFyY2ggaXMgdG8KKyAgICAgKiBiZWdpbgorICAgICAqIEByZXR1cm4gQSB0d28tZWxlbWVudCBhcnJheSBvZiBpbnRzLiAgRWxlbWVudCAwIGlzIHRoZSBwb3NpdGlvbgorICAgICAqIG9mIHRoZSBtYXRjaCwgb3IgLTEgaWYgdGhlcmUgd2FzIG5vIG1hdGNoLiAgRWxlbWVudCAxIGlzIHRoZQorICAgICAqIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluICJzdHIiIHRoYXQgbWF0Y2hlZCAod2hpY2ggaXNuJ3QgbmVjZXNzYXJpbHkKKyAgICAgKiB0aGUgc2FtZSBhcyB0aGUgbGVuZ3RoIG9mICJrZXkiKQorICAgICAqLworICAgIHByaXZhdGUgaW50W10gZmluZFRleHQoU3RyaW5nIHN0ciwgU3RyaW5nIGtleSwgaW50IHN0YXJ0aW5nQXQpIHsKKyAgICAgICAgLy8gaWYgbGVuaWVudCBwYXJzaW5nIGlzIHR1cm5lZCBvZmYsIHRoaXMgaXMgZWFzeToganVzdCBjYWxsCisgICAgICAgIC8vIFN0cmluZy5pbmRleE9mKCkgYW5kIHdlJ3JlIGRvbmUKKyAgICAgICAgaWYgKCFmb3JtYXR0ZXIubGVuaWVudFBhcnNlRW5hYmxlZCgpKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IGludFtdIHsgc3RyLmluZGV4T2Yoa2V5LCBzdGFydGluZ0F0KSwga2V5Lmxlbmd0aCgpIH07CisKKyAgICAgICAgLy8gYnV0IGlmIGxlbmllbnQgcGFyc2luZyBpcyB0dXJuZWQgT04sIHdlJ3ZlIGdvdCBzb21lIHdvcmsKKyAgICAgICAgLy8gYWhlYWQgb2YgdXMKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgLy8gSkRLIDEuMSBIQUNLICh0YWtlIG91dCBvZiAxLjItc3BlY2lmaWMgY29kZSkKKworICAgICAgICAgICAgLy8gaW4gSkRLIDEuMiwgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIHByb3ZpZGVzIHVzIHdpdGggYW4KKyAgICAgICAgICAgIC8vIEFQSSB0byBtYXAgYmV0d2VlbiBjaGFyYWN0ZXIgb2Zmc2V0cyBhbmQgY29sbGF0aW9uIGVsZW1lbnRzCisgICAgICAgICAgICAvLyBhbmQgd2UgY2FuIGRvIHRoaXMgYnkgbWFyY2hpbmcgdGhyb3VnaCB0aGUgc3RyaW5nIGNvbXBhcmluZworICAgICAgICAgICAgLy8gY29sbGF0aW9uIGVsZW1lbnRzLiAgV2UgY2FuJ3QgZG8gdGhhdCBpbiBKREsgMS4xLiAgSW5zdGVkLAorICAgICAgICAgICAgLy8gd2UgaGF2ZSB0byBnbyB0aHJvdWdoIHRoaXMgaG9ycmlibGUgc2xvdyBtZXNzOgorICAgICAgICAgICAgaW50IHAgPSBzdGFydGluZ0F0OworICAgICAgICAgICAgaW50IGtleUxlbiA9IDA7CisKKyAgICAgICAgICAgIC8vIGJhc2ljYWxseSBqdXN0IGlzb2xhdGUgc21hbGxlciBhbmQgc21hbGxlciBzdWJzdHJpbmdzIG9mCisgICAgICAgICAgICAvLyB0aGUgdGFyZ2V0IHN0cmluZyAoZWFjaCBydW5uaW5nIHRvIHRoZSBlbmQgb2YgdGhlIHN0cmluZywKKyAgICAgICAgICAgIC8vIGFuZCB3aXRoIHRoZSBmaXJzdCBvbmUgcnVubmluZyBmcm9tIHN0YXJ0aW5nQXQgdG8gdGhlIGVuZCkKKyAgICAgICAgICAgIC8vIGFuZCB0aGVuIHVzZSBwcmVmaXhMZW5ndGgoKSB0byBzZWUgaWYgdGhlIHNlYXJjaCBrZXkgaXMgYXQKKyAgICAgICAgICAgIC8vIHRoZSBiZWdpbm5pbmcgb2YgZWFjaCBzdWJzdHJpbmcuICBUaGlzIGlzIGV4Y3J1Y2lhdGluZ2x5CisgICAgICAgICAgICAvLyBzbG93LCBidXQgaXQgd2lsbCBsb2NhdGUgdGhlIGtleSBhbmQgdGVsbCB1c2UgaG93IGxvbmcgdGhlCisgICAgICAgICAgICAvLyBtYXRjaGluZyB0ZXh0IHdhcy4KKyAgICAgICAgICAgIHdoaWxlIChwIDwgc3RyLmxlbmd0aCgpICYmIGtleUxlbiA9PSAwKSB7CisgICAgICAgICAgICAgICAga2V5TGVuID0gcHJlZml4TGVuZ3RoKHN0ci5zdWJzdHJpbmcocCksIGtleSk7CisgICAgICAgICAgICAgICAgaWYgKGtleUxlbiAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgaW50W10geyBwLCBrZXlMZW4gfTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gaWYgd2UgbWFrZSBpdCB0byBoZXJlLCB3ZSBkaWRuJ3QgZmluZCBpdC4gIFJldHVybiAtMSBmb3IgdGhlCisgICAgICAgICAgICAvLyBsb2NhdGlvbi4gIFRoZSBsZW5ndGggc2hvdWxkIGJlIGlnbm9yZWQsIGJ1dCBzZXQgaXQgdG8gMCwKKyAgICAgICAgICAgIC8vIHdoaWNoIHNob3VsZCBiZSAic2FmZSIKKyAgICAgICAgICAgIHJldHVybiBuZXcgaW50W10geyAtMSwgMCB9OworCisgICAgICAgICAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgIC8vIEpESyAxLjIgdmVyc2lvbiBvZiB0aGlzIHJvdXRpbmUKKyAgICAgICAgICAgIC8vUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IgPSAoUnVsZUJhc2VkQ29sbGF0b3IpZm9ybWF0dGVyLmdldENvbGxhdG9yKCk7CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy9Db2xsYXRpb25FbGVtZW50SXRlcmF0b3Igc3RySXRlciA9IGNvbGxhdG9yLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcihzdHIpOworICAgICAgICAgICAgLy9Db2xsYXRpb25FbGVtZW50SXRlcmF0b3Iga2V5SXRlciA9IGNvbGxhdG9yLmdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvcihrZXkpOworICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vaW50IGtleVN0YXJ0ID0gLTE7CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy9zdHIuc2V0T2Zmc2V0KHN0YXJ0aW5nQXQpOworICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vaW50IG9TdHIgPSBzdHJJdGVyLm5leHQoKTsKKyAgICAgICAgICAgIC8vaW50IG9LZXkgPSBrZXlJdGVyLm5leHQoKTsKKyAgICAgICAgICAgIC8vd2hpbGUgKG9LZXkgIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikgeworICAgICAgICAgICAgLy8gICAgd2hpbGUgKG9TdHIgIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUiAmJgorICAgICAgICAgICAgLy8gICAgICAgICAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLnByaW1hcnlPcmRlcihvU3RyKSA9PSAwKQorICAgICAgICAgICAgLy8gICAgICAgIG9TdHIgPSBzdHJJdGVyLm5leHQoKTsKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyAgICB3aGlsZSAob0tleSAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSICYmCisgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IucHJpbWFyeU9yZGVyKG9LZXkpID09IDApCisgICAgICAgICAgICAvLyAgICAgICAgb0tleSA9IGtleUl0ZXIubmV4dCgpOworICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vICAgIGlmIChvU3RyID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKyAgICAgICAgICAgIC8vICAgICAgICByZXR1cm4gbmV3IGludFtdIHsgLTEsIDAgfTsKKyAgICAgICAgICAgIC8vICAgIH0KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyAgICBpZiAob0tleSA9PSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSKSB7CisgICAgICAgICAgICAvLyAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvLyAgICB9CisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gICAgaWYgKENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5wcmltYXJ5T3JkZXIob1N0cikgPT0KKyAgICAgICAgICAgIC8vICAgICAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLnByaW1hcnlPcmRlcihvS2V5KSkgeworICAgICAgICAgICAgLy8gICAgICAgIGtleVN0YXJ0ID0gc3RySXRlci5nZXRPZmZzZXQoKTsKKyAgICAgICAgICAgIC8vICAgICAgICBvU3RyID0gc3RySXRlci5uZXh0KCk7CisgICAgICAgICAgICAvLyAgICAgICAgb0tleSA9IGtleUl0ZXIubmV4dCgpOworICAgICAgICAgICAgLy8gICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vICAgICAgICBpZiAoa2V5U3RhcnQgIT0gLTEpIHsKKyAgICAgICAgICAgIC8vICAgICAgICAgICAga2V5U3RhcnQgPSAtMTsKKyAgICAgICAgICAgIC8vICAgICAgICAgICAga2V5SXRlci5yZXNldCgpOworICAgICAgICAgICAgLy8gICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyAgICAgICAgICAgIG9TdHIgPSBzdHJJdGVyLm5leHQoKTsKKyAgICAgICAgICAgIC8vICAgICAgICB9CisgICAgICAgICAgICAvLyAgICB9CisgICAgICAgICAgICAvL30KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvL2lmIChvS2V5ID09IENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvci5OVUxMT1JERVIpIHsKKyAgICAgICAgICAgIC8vICAgIHJldHVybiBuZXcgaW50W10geyBrZXlTdGFydCwgc3RySXRlci5nZXRPZmZzZXQoKSAtIGtleVN0YXJ0IH07CisgICAgICAgICAgICAvL30gZWxzZSB7CisgICAgICAgICAgICAvLyAgICByZXR1cm4gbmV3IGludFtdIHsgLTEsIDAgfTsKKyAgICAgICAgICAgIC8vfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2hlY2tzIHRvIHNlZSB3aGV0aGVyIGEgc3RyaW5nIGNvbnNpc3RzIGVudGlyZWx5IG9mIGlnbm9yYWJsZQorICAgICAqIGNoYXJhY3RlcnMuCisgICAgICogQHBhcmFtIHN0ciBUaGUgc3RyaW5nIHRvIHRlc3QuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBzdHJpbmcgaXMgZW1wdHkgb2YgY29uc2lzdHMgZW50aXJlbHkgb2YKKyAgICAgKiBjaGFyYWN0ZXJzIHRoYXQgdGhlIG51bWJlciBmb3JtYXR0ZXIncyBjb2xsYXRvciBzYXlzIGFyZQorICAgICAqIGlnbm9yYWJsZSBhdCB0aGUgcHJpbWFyeS1vcmRlciBsZXZlbC4gIGZhbHNlIG90aGVyd2lzZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gYWxsSWdub3JhYmxlKFN0cmluZyBzdHIpIHsKKyAgICAgICAgLy8gaWYgdGhlIHN0cmluZyBpcyBlbXB0eSwgd2UgY2FuIGp1c3QgcmV0dXJuIHRydWUKKyAgICAgICAgaWYgKHN0ci5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGlmIGxlbmllbnQgcGFyc2luZyBpcyB0dXJuZWQgb24sIHdhbGsgdGhyb3VnaCB0aGUgc3RyaW5nIHdpdGgKKyAgICAgICAgLy8gYSBjb2xsYXRpb24gZWxlbWVudCBpdGVyYXRvciBhbmQgbWFrZSBzdXJlIGVhY2ggY29sbGF0aW9uCisgICAgICAgIC8vIGVsZW1lbnQgaXMgMCAoaWdub3JhYmxlKSBhdCB0aGUgcHJpbWFyeSBsZXZlbAorICAgICAgICBpZiAoZm9ybWF0dGVyLmxlbmllbnRQYXJzZUVuYWJsZWQoKSkgeworICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IgPSAoUnVsZUJhc2VkQ29sbGF0b3IpKGZvcm1hdHRlci5nZXRDb2xsYXRvcigpKTsKKyAgICAgICAgICAgIENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciBpdGVyID0gY29sbGF0b3IuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHN0cik7CisKKyAgICAgICAgICAgIGludCBvID0gaXRlci5uZXh0KCk7CisgICAgICAgICAgICB3aGlsZSAobyAhPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSCisgICAgICAgICAgICAgICAgICAgJiYgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLnByaW1hcnlPcmRlcihvKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgbyA9IGl0ZXIubmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG8gPT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUjsKKyAgICAgICAgLy8gaWYgbGVuaWVudCBwYXJzaW5nIGlzIHR1cm5lZCBvZmYsIHRoZXJlIGlzIG5vIHN1Y2ggdGhpbmcgYXMKKyAgICAgICAgLy8gYW4gaWdub3JhYmxlIGNoYXJhY3RlcjogcmV0dXJuIHRydWUgb25seSBpZiB0aGUgc3RyaW5nIGlzIGVtcHR5CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9ORlJ1bGVTZXQuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvTkZSdWxlU2V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZTQ2MWQ1YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvTkZSdWxlU2V0LmphdmEKQEAgLTAsMCArMSw3NDYgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvQXR0aWMvTkZSdWxlU2V0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDMvMTAgMDQ6MDc6MjEgJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRleHQ7CisKK2ltcG9ydCBqYXZhLnRleHQuKjsKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworCisvKioKKyAqIEEgY29sbGVjdGlvbiBvZiBydWxlcyB1c2VkIGJ5IGEgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IHRvIGZvcm1hdCBhbmQKKyAqIHBhcnNlIG51bWJlcnMuICBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgYSBSdWxlU2V0IHRvIHNlbGVjdCBhbgorICogYXBwcm9wcmlhdGUgcnVsZSBmb3IgZm9ybWF0dGluZyBhIHBhcnRpY3VsYXIgbnVtYmVyIGFuZCBkaXNwYXRjaAorICogY29udHJvbCB0byBpdCwgYW5kIHRvIGFyYml0cmF0ZSBiZXR3ZWVuIGRpZmZlcmVudCBydWxlcyB3aGVuIHBhcnNpbmcKKyAqIGEgbnVtYmVyLgorICogJFJDU2ZpbGU6IE5GUnVsZVNldC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMiAkICREYXRlOiAyMDAwLzAzLzEwIDA0OjA3OjIxICQKKyAqLworZmluYWwgY2xhc3MgTkZSdWxlU2V0IHsKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY29uc3RhbnRzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUHV0cyBhIGNvcHlyaWdodCBpbiB0aGUgLmNsYXNzIGZpbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0Tm90aWNlCisgICAgICAgID0gIkNvcHlyaWdodCBcdTAwYTkxOTk3LTE5OTggSUJNIENvcnAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gZGF0YSBtZW1iZXJzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogVGhlIHJ1bGUgc2V0J3MgbmFtZQorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nIG5hbWU7CisKKyAgICAvKioKKyAgICAgKiBUaGUgcnVsZSBzZXQncyByZWd1bGFyIHJ1bGVzCisgICAgICovCisgICAgcHJpdmF0ZSBORlJ1bGVbXSBydWxlczsKKworICAgIC8qKgorICAgICAqIFRoZSBydWxlIHNldCdzIG5lZ2F0aXZlLW51bWJlciBydWxlCisgICAgICovCisgICAgcHJpdmF0ZSBORlJ1bGUgbmVnYXRpdmVOdW1iZXJSdWxlID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIFRoZSBydWxlIHNldCdzIGZyYWN0aW9uIHJ1bGVzOiBlbGVtZW50IDAgaXMgdGhlIHByb3BlciBmcmFjdGlvbgorICAgICAqICgwLngpIHJ1bGUsIGVsZW1lbnQgMSBpcyB0aGUgaW1wcm9wZXIgZnJhY3Rpb24gKHgueCkgcnVsZSwgYW5kCisgICAgICogZWxlbWVudCAyIGlzIHRoZSBtYXN0ZXIgKHguMCkgcnVsZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIE5GUnVsZVtdIGZyYWN0aW9uUnVsZXMgPSBuZXcgTkZSdWxlWzNdOworCisgICAgLyoqCisgICAgICogVHJ1ZSBpZiB0aGUgcnVsZSBzZXQgaXMgYSBmcmFjdGlvbiBydWxlIHNldC4gIEEgZnJhY3Rpb24gcnVsZSBzZXQKKyAgICAgKiBpcyBhIHJ1bGUgc2V0IHRoYXQgaXMgdXNlZCB0byBmb3JtYXQgdGhlIGZyYWN0aW9uYWwgcGFydCBvZiBhCisgICAgICogbnVtYmVyLiAgSXQgaXMgY2FsbGVkIGZyb20gYSA+PiBzdWJzdGl0dXRpb24gaW4gYW5vdGhlciBydWxlIHNldCdzCisgICAgICogZnJhY3Rpb24gcnVsZSwgYW5kIGlzIG9ubHkgY2FsbGVkIHVwb24gdG8gZm9ybWF0IHZhbHVlcyBiZXR3ZWVuCisgICAgICogMCBhbmQgMS4gIEEgZnJhY3Rpb24gcnVsZSBzZXQgaGFzIGRpZmZlcmVudCBydWxlLXNlbGVjdGlvbgorICAgICAqIGJlaGF2aW9yIHRoYW4gYSByZWd1bGFyIHJ1bGUgc2V0LgorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBpc0ZyYWN0aW9uUnVsZVNldCA9IGZhbHNlOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGNvbnN0cnVjdGlvbgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qCisgICAgICogQ29uc3RydWN0cyBhIHJ1bGUgc2V0LgorICAgICAqIEBwYXJhbSBkZXNjcmlwdGlvbnMgQW4gYXJyYXkgb2YgU3RyaW5ncyByZXByZXNlbnRpbmcgcnVsZSBzZXQKKyAgICAgKiBkZXNjcmlwdGlvbnMuICBPbiBleGl0LCB0aGlzIHJ1bGUgc2V0J3MgZW50cnkgaW4gdGhlIGFycmF5IHdpbGwKKyAgICAgKiBoYXZlIGJlZW4gc3RyaXBwZWQgb2YgaXRzIHJ1bGUgc2V0IG5hbWUgYW5kIGFueSB0cmFpbGluZyB3aGl0ZXNwYWNlLgorICAgICAqIEBwYXJhbSBpbmRleCBUaGUgaW5kZXggaW50byAiZGVzY3JpcHRpb25zIiBvZiB0aGUgZGVzY3JpcHRpb24KKyAgICAgKiBmb3IgdGhlIHJ1bGUgdG8gYmUgY29uc3RydWN0ZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgTkZSdWxlU2V0KFN0cmluZ1tdIGRlc2NyaXB0aW9ucywgaW50IGluZGV4KSB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHsKKyAgICAgICAgU3RyaW5nIGRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb25zW2luZGV4XTsKKworICAgICAgICAvLyBpZiB0aGUgZGVzY3JpcHRpb24gYmVnaW5zIHdpdGggYSBydWxlIHNldCBuYW1lICh0aGUgcnVsZSBzZXQKKyAgICAgICAgLy8gbmFtZSBjYW4gYmUgb21pdHRlZCBpbiBmb3JtYXR0ZXIgZGVzY3JpcHRpb25zIHRoYXQgY29uc2lzdAorICAgICAgICAvLyBvZiBvbmx5IG9uZSBydWxlIHNldCksIGNvcHkgaXQgb3V0IGludG8gb3VyICJuYW1lIiBtZW1iZXIKKyAgICAgICAgLy8gYW5kIGRlbGV0ZSBpdCBmcm9tIHRoZSBkZXNjcmlwdGlvbgorICAgICAgICBpZiAoZGVzY3JpcHRpb24uY2hhckF0KDApID09ICclJykgeworICAgICAgICAgICAgaW50IHBvcyA9IGRlc2NyaXB0aW9uLmluZGV4T2YoJzonKTsKKyAgICAgICAgICAgIGlmIChwb3MgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJSdWxlIHNldCBuYW1lIGRvZXNuJ3QgZW5kIGluIGNvbG9uIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG5hbWUgPSBkZXNjcmlwdGlvbi5zdWJzdHJpbmcoMCwgcG9zKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAocG9zIDwgZGVzY3JpcHRpb24ubGVuZ3RoKCkgJiYgQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZShkZXNjcmlwdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhckF0KCsrcG9zKSkpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5zdWJzdHJpbmcocG9zKTsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbnNbaW5kZXhdID0gZGVzY3JpcHRpb247CisgICAgICAgICAgICB9CisKKyAgICAgICAgLy8gaWYgdGhlIGRlc2NyaXB0aW9uIGRvZXNuJ3QgYmVnaW4gd2l0aCBhIHJ1bGUgc2V0IG5hbWUsIGl0cworICAgICAgICAvLyBuYW1lIGlzICIlZGVmYXVsdCIKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5hbWUgPSAiJWRlZmF1bHQiOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRlc2NyaXB0aW9uLmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkVtcHR5IHJ1bGUgc2V0IGRlc2NyaXB0aW9uIik7CisgICAgICAgIH0KKworICAgICAgICAvLyBhbGwgb2YgdGhlIG90aGVyIG1lbWJlcnMgb2YgTkZSdWxlU2V0IGFyZSBpbml0aWFsaXplZAorICAgICAgICAvLyBieSBwYXJzZVJ1bGVzKCkKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgdGhlIHN1Ym9yZGluYXRlIGRhdGEgc3RydWN0dXJlcyB1c2VkIGJ5IHRoaXMgb2JqZWN0LgorICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBSdWxlQmFzZWROdW1iZXJGb3JtYXQgY29uc3RydWN0b3IKKyAgICAgKiBhZnRlciBhbGwgdGhlIHJ1bGUgc2V0cyBoYXZlIGJlZW4gY3JlYXRlZCB0byBhY3R1YWxseSBwYXJzZQorICAgICAqIHRoZSBkZXNjcmlwdGlvbiBhbmQgYnVpbGQgcnVsZXMgZnJvbSBpdC4gIFNpbmNlIGFueSBydWxlIHNldAorICAgICAqIGNhbiByZWZlciB0byBhbnkgb3RoZXIgcnVsZSBzZXQsIHdlIGhhdmUgdG8gaGF2ZSBjcmVhdGVkIGFsbCBvZgorICAgICAqIHRoZW0gYmVmb3JlIHdlIGNhbiBjcmVhdGUgYW55dGhpbmcgZWxzZS4KKyAgICAgKiBAcGFyYW0gZGVzY3JpcHRpb24gVGhlIHRleHR1YWwgZGVzY3JpcHRpb24gb2YgdGhpcyBydWxlIHNldAorICAgICAqIEBwYXJhbSBvd25lciBUaGUgZm9ybWF0dGVyIHRoYXQgb3ducyB0aGlzIHJ1bGUgc2V0CisgICAgICovCisgICAgcHVibGljIHZvaWQgcGFyc2VSdWxlcyhTdHJpbmcgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgb3duZXIpIHsKKyAgICAgICAgLy8gc3RhcnQgYnkgY3JlYXRpbmcgYSBWZWN0b3Igd2hvc2UgZWxlbWVudHMgYXJlIFN0cmluZ3MgY29udGFpbmluZworICAgICAgICAvLyB0aGUgZGVzY3JpcHRpb25zIG9mIHRoZSBydWxlcyAob25lIHJ1bGUgcGVyIGVsZW1lbnQpLiAgVGhlIHJ1bGVzCisgICAgICAgIC8vIGFyZSBzZXBhcmF0ZWQgYnkgc2VtaWNvbG9ucyAodGhlcmUncyBubyBlc2NhcGUgZmFjaWxpdHk6IEFMTAorICAgICAgICAvLyBzZW1pY29sb25zIGFyZSBydWxlIGRlbGltaXRlcnMpCisgICAgICAgIFZlY3RvciBydWxlRGVzY3JpcHRpb25zID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIGludCBvbGRQID0gMDsKKyAgICAgICAgaW50IHAgPSBkZXNjcmlwdGlvbi5pbmRleE9mKCc7Jyk7CisgICAgICAgIHdoaWxlIChvbGRQICE9IC0xKSB7CisgICAgICAgICAgICBpZiAocCAhPSAtMSkgeworICAgICAgICAgICAgICAgIHJ1bGVEZXNjcmlwdGlvbnMuYWRkRWxlbWVudChkZXNjcmlwdGlvbi5zdWJzdHJpbmcob2xkUCwgcCkpOworICAgICAgICAgICAgICAgIG9sZFAgPSBwICsgMTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKG9sZFAgPCBkZXNjcmlwdGlvbi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBydWxlRGVzY3JpcHRpb25zLmFkZEVsZW1lbnQoZGVzY3JpcHRpb24uc3Vic3RyaW5nKG9sZFApKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgb2xkUCA9IHA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwID0gZGVzY3JpcHRpb24uaW5kZXhPZignOycsIHAgKyAxKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIG5vdyBnbyBiYWNrIHRocm91Z2ggYW5kIGJ1aWxkIGEgdmVjdG9yIG9mIHRoZSBydWxlcyB0aGVtc2VsdmVzCisgICAgICAgIC8vICh0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBkZXNjcmlwdGlvbiBsaXN0IGlzbid0IG5lY2Vzc2FyaWx5CisgICAgICAgIC8vIHRoZSBudW1iZXIgb2YgcnVsZXMtLSBzb21lIGRlc2NyaXB0aW9ucyBtYXkgZXhwZW5kIGludG8gdHdvIHJ1bGVzKQorICAgICAgICBWZWN0b3IgdGVtcFJ1bGVzID0gbmV3IFZlY3RvcigpOworCisgICAgICAgIC8vIHdlIGtlZXAgdHJhY2sgb2YgdGhlIHJ1bGUgYmVmb3JlIHRoZSBvbmUgd2UncmUgY3VycmVudGx5IHdvcmtpbmcKKyAgICAgICAgLy8gb24gc29sZWx5IHRvIHN1cHBvcnQgPj4+IHN1YnN0aXR1dGlvbnMKKyAgICAgICAgTkZSdWxlIHByZWRlY2Vzc29yID0gbnVsbDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBydWxlRGVzY3JpcHRpb25zLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAvLyBtYWtlUnVsZXMgKGEgZmFjdG9yeSBtZXRob2Qgb24gTkZSdWxlKSB3aWxsIHJldHVybiBlaXRoZXIKKyAgICAgICAgICAgIC8vIGEgc2luZ2xlIHJ1bGUgb3IgYW4gYXJyYXkgb2YgcnVsZXMuICBFaXRoZXIgd2F5LCBhZGQgdGhlbQorICAgICAgICAgICAgLy8gdG8gb3VyIHJ1bGUgdmVjdG9yCisgICAgICAgICAgICBPYmplY3QgdGVtcCA9IE5GUnVsZS5tYWtlUnVsZXMoKFN0cmluZylydWxlRGVzY3JpcHRpb25zLmVsZW1lbnRBdChpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLCBwcmVkZWNlc3Nvciwgb3duZXIpOworCisgICAgICAgICAgICBpZiAodGVtcCBpbnN0YW5jZW9mIE5GUnVsZSkgeworICAgICAgICAgICAgICAgIHRlbXBSdWxlcy5hZGRFbGVtZW50KHRlbXApOworICAgICAgICAgICAgICAgIHByZWRlY2Vzc29yID0gKE5GUnVsZSl0ZW1wOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAodGVtcCBpbnN0YW5jZW9mIE5GUnVsZVtdKSB7CisgICAgICAgICAgICAgICAgTkZSdWxlW10gcnVsZXNUb0FkZCA9IChORlJ1bGVbXSl0ZW1wOworCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBydWxlc1RvQWRkLmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgIHRlbXBSdWxlcy5hZGRFbGVtZW50KHJ1bGVzVG9BZGRbal0pOworICAgICAgICAgICAgICAgICAgICBwcmVkZWNlc3NvciA9IHJ1bGVzVG9BZGRbal07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vIG5vdyB3ZSBjYW4gYmFnIHRoZSBkZXNjcmlwdGlvbiBsaXN0CisgICAgICAgIHJ1bGVEZXNjcmlwdGlvbnMgPSBudWxsOworCisgICAgICAgIC8vIGZvciBydWxlcyB0aGF0IGRpZG4ndCBzcGVjaWZ5IGEgYmFzZSB2YWx1ZSwgdGhlaXIgYmFzZSB2YWx1ZXMKKyAgICAgICAgLy8gd2VyZSBpbml0aWFsaXplZCB0byAwLiAgTWFrZSBhbm90aGVyIHBhc3MgdGhyb3VnaCB0aGUgbGlzdCBhbmQKKyAgICAgICAgLy8gc2V0IGFsbCB0aG9zZSBydWxlcycgYmFzZSB2YWx1ZXMuICBXZSBhbHNvIHJlbW92ZSBhbnkgc3BlY2lhbAorICAgICAgICAvLyBydWxlcyBmcm9tIHRoZSBsaXN0IGFuZCBwdXQgdGhlbSBpbnRvIHRoZWlyIG93biBtZW1iZXIgdmFyaWFibGVzCisgICAgICAgIGxvbmcgZGVmYXVsdEJhc2VWYWx1ZSA9IDA7CisKKyAgICAgICAgLy8gKHRoaXMgaXNuJ3QgYSBmb3IgbG9vcCBiZWNhdXNlIHdlIG1pZ2h0IGJlIGRlbGV0aW5nIGl0ZW1zIGZyb20KKyAgICAgICAgLy8gdGhlIHZlY3Rvci0tIHdlIHdhbnQgdG8gbWFrZSBzdXJlIHdlIG9ubHkgaW5jcmVtZW50IGkgd2hlbgorICAgICAgICAvLyB3ZSBfZGlkbid0XyBkZWxldGUgYXl0aGluZyBmcm9tIHRoZSB2ZWN0b3IpCisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgd2hpbGUgKGkgPCB0ZW1wUnVsZXMuc2l6ZSgpKSB7CisgICAgICAgICAgICBORlJ1bGUgcnVsZSA9IChORlJ1bGUpdGVtcFJ1bGVzLmVsZW1lbnRBdChpKTsKKworICAgICAgICAgICAgc3dpdGNoICgoaW50KXJ1bGUuZ2V0QmFzZVZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcnVsZSdzIGJhc2UgdmFsdWUgaXMgMCwgZmlsbCBpbiBhIGRlZmF1bHQKKyAgICAgICAgICAgICAgICAvLyBiYXNlIHZhbHVlICh0aGlzIHdpbGwgYmUgMSBwbHVzIHRoZSBwcmVjZWRpbmcKKyAgICAgICAgICAgICAgICAvLyBydWxlJ3MgYmFzZSB2YWx1ZSBmb3IgcmVndWxhciBydWxlIHNldHMsIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAvLyBzYW1lIGFzIHRoZSBwcmVjZWRpbmcgcnVsZSdzIGJhc2UgdmFsdWUgaW4gZnJhY3Rpb24KKyAgICAgICAgICAgICAgICAvLyBydWxlIHNldHMpCisgICAgICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgICAgICBydWxlLnNldEJhc2VWYWx1ZShkZWZhdWx0QmFzZVZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc0ZyYWN0aW9uUnVsZVNldCkgeworICAgICAgICAgICAgICAgICAgICAgICAgKytkZWZhdWx0QmFzZVZhbHVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAvLyBpZiBpdCdzIHRoZSBuZWdhdGl2ZS1udW1iZXIgcnVsZSwgY29weSBpdCBpbnRvIGl0cyBvd24KKyAgICAgICAgICAgICAgICAvLyBkYXRhIG1lbWJlciBhbmQgZGVsZXRlIGl0IGZyb20gdGhlIGxpc3QKKyAgICAgICAgICAgICAgICBjYXNlIE5GUnVsZS5ORUdBVElWRV9OVU1CRVJfUlVMRToKKyAgICAgICAgICAgICAgICAgICAgbmVnYXRpdmVOdW1iZXJSdWxlID0gcnVsZTsKKyAgICAgICAgICAgICAgICAgICAgdGVtcFJ1bGVzLnJlbW92ZUVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAvLyBpZiBpdCdzIHRoZSBpbXByb3BlciBmcmFjdGlvbiBydWxlLCBjb3B5IGl0IGludG8gdGhlCisgICAgICAgICAgICAgICAgLy8gY29ycmVjdCBlbGVtZW50IG9mIGZyYWN0aW9uUnVsZXMKKyAgICAgICAgICAgICAgICBjYXNlIE5GUnVsZS5JTVBST1BFUl9GUkFDVElPTl9SVUxFOgorICAgICAgICAgICAgICAgICAgICBmcmFjdGlvblJ1bGVzWzBdID0gcnVsZTsKKyAgICAgICAgICAgICAgICAgICAgdGVtcFJ1bGVzLnJlbW92ZUVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAvLyBpZiBpdCdzIHRoZSBwcm9wZXIgZnJhY3Rpb24gcnVsZSwgY29weSBpdCBpbnRvIHRoZQorICAgICAgICAgICAgICAgIC8vIGNvcnJlY3QgZWxlbWVudCBvZiBmcmFjdGlvblJ1bGVzCisgICAgICAgICAgICAgICAgY2FzZSBORlJ1bGUuUFJPUEVSX0ZSQUNUSU9OX1JVTEU6CisgICAgICAgICAgICAgICAgICAgIGZyYWN0aW9uUnVsZXNbMV0gPSBydWxlOworICAgICAgICAgICAgICAgICAgICB0ZW1wUnVsZXMucmVtb3ZlRWxlbWVudEF0KGkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIC8vIGlmIGl0J3MgdGhlIG1hc3RlciBydWxlLCBjb3B5IGl0IGludG8gdGhlCisgICAgICAgICAgICAgICAgLy8gY29ycmVjdCBlbGVtZW50IG9mIGZyYWN0aW9uUnVsZXMKKyAgICAgICAgICAgICAgICBjYXNlIE5GUnVsZS5NQVNURVJfUlVMRToKKyAgICAgICAgICAgICAgICAgICAgZnJhY3Rpb25SdWxlc1syXSA9IHJ1bGU7CisgICAgICAgICAgICAgICAgICAgIHRlbXBSdWxlcy5yZW1vdmVFbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgLy8gaWYgaXQncyBhIHJlZ3VsYXIgcnVsZSB0aGF0IGFscmVhZHkga25vd3MgaXRzIGJhc2UgdmFsdWUsCisgICAgICAgICAgICAgICAgLy8gY2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBydWxlcyBhcmUgaW4gb3JkZXIsIGFuZCB1cGRhdGUKKyAgICAgICAgICAgICAgICAvLyB0aGUgZGVmYXVsdCBiYXNlIHZhbHVlIGZvciB0aGUgbmV4dCBydWxlCisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGUuZ2V0QmFzZVZhbHVlKCkgPCBkZWZhdWx0QmFzZVZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJSdWxlcyBhcmUgbm90IGluIG9yZGVyIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdEJhc2VWYWx1ZSA9IHJ1bGUuZ2V0QmFzZVZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghaXNGcmFjdGlvblJ1bGVTZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrZGVmYXVsdEJhc2VWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICArK2k7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gZmluYWxseSwgd2UgY2FuIGNvcHkgdGhlIHJ1bGVzIGZyb20gdGhlIHZlY3RvciBpbnRvIGEKKyAgICAgICAgLy8gZml4ZWQtbGVuZ3RoIGFycmF5CisgICAgICAgIHJ1bGVzID0gbmV3IE5GUnVsZVt0ZW1wUnVsZXMuc2l6ZSgpXTsKKyAgICAgICAgdGVtcFJ1bGVzLmNvcHlJbnRvKChPYmplY3RbXSlydWxlcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRmxhZ3MgdGhpcyBydWxlIHNldCBhcyBhIGZyYWN0aW9uIHJ1bGUgc2V0LiAgVGhpcyBmdW5jdGlvbiBpcworICAgICAqIGNhbGxlZCBkdXJpbmcgdGhlIGNvbnN0cnVjdGlvbiBwcm9jZXNzIG9uY2Ugd2Uga25vdyB0aGlzIHJ1bGUKKyAgICAgKiBzZXQgaXMgYSBmcmFjdGlvbiBydWxlIHNldC4gIFdlIGRvbid0IGtub3cgYSBydWxlIHNldCBpcyBhCisgICAgICogZnJhY3Rpb24gcnVsZSBzZXQgdW50aWwgd2Ugc2VlIGl0IHVzZWQgc29tZXdoZXJlLiAgVGhpcyBmdW5jdGlvbgorICAgICAqIGlzIG5vdCBhZCBtdXN0IG5vdCBiZSBjYWxsZWQgYXQgYW55IHRpbWUgb3RoZXIgdGhhbiBkdXJpbmcKKyAgICAgKiBjb25zdHJ1Y3Rpb24gb2YgYSBSdWxlQmFzZWROdW1iZXJGb3JtYXQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgbWFrZUludG9GcmFjdGlvblJ1bGVTZXQoKSB7CisgICAgICAgIGlzRnJhY3Rpb25SdWxlU2V0ID0gdHJ1ZTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gYm9pbGVycGxhdGUKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDb21wYXJlcyB0d28gcnVsZSBzZXRzIGZvciBlcXVhbGl0eS4KKyAgICAgKiBAcGFyYW0gdGhhdCBUaGUgb3RoZXIgcnVsZSBzZXQKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHR3byBydWxlIHNldHMgYXJlIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50LgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgdGhhdCkgeworICAgICAgICAvLyBpZiBkaWZmZXJlbnQgY2xhc3NlcywgdGhleSdyZSBub3QgZXF1YWwKKyAgICAgICAgaWYgKCEodGhhdCBpbnN0YW5jZW9mIE5GUnVsZVNldCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIG90aGVyd2lzZSwgY29tcGFyZSB0aGUgbWVtYmVycyBvbmUgYnkgb25lLi4uCisgICAgICAgICAgICBORlJ1bGVTZXQgdGhhdDIgPSAoTkZSdWxlU2V0KXRoYXQ7CisKKyAgICAgICAgICAgIGlmICghbmFtZS5lcXVhbHModGhhdDIubmFtZSkKKyAgICAgICAgICAgICAgICB8fCAhbmVnYXRpdmVOdW1iZXJSdWxlLmVxdWFscyh0aGF0Mi5uZWdhdGl2ZU51bWJlclJ1bGUpCisgICAgICAgICAgICAgICAgfHwgIWZyYWN0aW9uUnVsZXNbMF0uZXF1YWxzKHRoYXQyLmZyYWN0aW9uUnVsZXNbMF0pCisgICAgICAgICAgICAgICAgfHwgIWZyYWN0aW9uUnVsZXNbMV0uZXF1YWxzKHRoYXQyLmZyYWN0aW9uUnVsZXNbMV0pCisgICAgICAgICAgICAgICAgfHwgIWZyYWN0aW9uUnVsZXNbMl0uZXF1YWxzKHRoYXQyLmZyYWN0aW9uUnVsZXNbMl0pCisgICAgICAgICAgICAgICAgfHwgcnVsZXMubGVuZ3RoICE9IHRoYXQyLnJ1bGVzLmxlbmd0aAorICAgICAgICAgICAgICAgIHx8IGlzRnJhY3Rpb25SdWxlU2V0ICE9IHRoYXQyLmlzRnJhY3Rpb25SdWxlU2V0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyAuLi50aGVuIGNvbXBhcmUgdGhlIHJ1bGUgbGlzdHMuLi4KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcnVsZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoIXJ1bGVzW2ldLmVxdWFscyh0aGF0Mi5ydWxlc1tpXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gLi4uYW5kIGlmIHdlIG1ha2UgaXQgaGVyZSwgdG5leSdyZSBlcXVhbAorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBCdWlsZHMgYSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIGEgcnVsZSBzZXQuCisgICAgICogQHJldHVybiBBIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgYSBydWxlIHNldC4gIFRoaXMgd29uJ3QKKyAgICAgKiBuZWNlc3NhcmlseSBiZSB0aGUgc2FtZSBkZXNjcmlwdGlvbiB0aGF0IHRoZSBydWxlIHNldCB3YXMKKyAgICAgKiBjb25zdHJ1Y3RlZCB3aXRoLCBidXQgaXQgd2lsbCBwcm9kdWNlIHRoZSBzYW1lIHJlc3VsdHMuCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKworICAgICAgICAvLyB0aGUgcnVsZSBzZXQgbmFtZSBnb2VzIGZpcnN0Li4uCisgICAgICAgIHJlc3VsdC5hcHBlbmQobmFtZSArICI6XG4iKTsKKworICAgICAgICAvLyBmb2xsb3dlZCBieSB0aGUgcmVndWxhciBydWxlcy4uLgorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIgICAgIiArIHJ1bGVzW2ldLnRvU3RyaW5nKCkgKyAiXG4iKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGZvbGxvd2VkIGJ5IHRoZSBzcGVjaWFsIHJ1bGVzIChpZiB0aGV5IGV4aXN0KQorICAgICAgICBpZiAobmVnYXRpdmVOdW1iZXJSdWxlICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiAgICAiICsgbmVnYXRpdmVOdW1iZXJSdWxlLnRvU3RyaW5nKCkgKyAiXG4iKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZnJhY3Rpb25SdWxlc1swXSAhPSBudWxsKSB7CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIgICAgIiArIGZyYWN0aW9uUnVsZXNbMF0udG9TdHJpbmcoKSArICJcbiIpOworICAgICAgICB9CisgICAgICAgIGlmIChmcmFjdGlvblJ1bGVzWzFdICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIiAgICAiICsgZnJhY3Rpb25SdWxlc1sxXS50b1N0cmluZygpICsgIlxuIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZyYWN0aW9uUnVsZXNbMl0gIT0gbnVsbCkgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiICAgICIgKyBmcmFjdGlvblJ1bGVzWzJdLnRvU3RyaW5nKCkgKyAiXG4iKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gc2ltcGxlIGFjY2Vzc29ycworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFNheXMgd2hldGhlciB0aGlzIHJ1bGUgc2V0IGlzIGEgZnJhY3Rpb24gcnVsZSBzZXQuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoaXMgcnVsZSBpcyBhIGZyYWN0aW9uIHJ1bGUgc2V0OyBmYWxzZSBpZiBpdCBpc24ndAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzRnJhY3Rpb25TZXQoKSB7CisgICAgICAgIHJldHVybiBpc0ZyYWN0aW9uUnVsZVNldDsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFJldHVybnMgdGhlIHJ1bGUgc2V0J3MgbmFtZQorICAgICAqIEByZXR1cm4gVGhlIHJ1bGUgc2V0J3MgbmFtZQorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGZvcm1hdHRpbmcKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBGb3JtYXRzIGEgbG9uZy4gIFNlbGVjdHMgYW4gYXBwcm9wcmlhdGUgcnVsZSBhbmQgZGlzcGF0Y2hlcworICAgICAqIGNvbnRyb2wgdG8gaXQuCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZAorICAgICAqIEBwYXJhbSB0b0luc2VydEludG8gVGhlIHN0cmluZyB3aGVyZSB0aGUgcmVzdWx0IGlzIHRvIGJlIHBsYWNlZAorICAgICAqIEBwYXJhbSBwb3MgVGhlIHBvc2l0aW9uIGluIHRvSW5zZXJ0SW50byB3aGVyZSB0aGUgcmVzdWx0IG9mCisgICAgICogdGhpcyBvcGVyYXRpb24gaXMgdG8gYmUgaW5zZXJ0ZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBmb3JtYXQobG9uZyBudW1iZXIsIFN0cmluZ0J1ZmZlciB0b0luc2VydEludG8sIGludCBwb3MpIHsKKyAgICAgICAgTkZSdWxlIGFwcGxpY2FibGVSdWxlID0gZmluZE5vcm1hbFJ1bGUobnVtYmVyKTsKKworICAgICAgICBhcHBsaWNhYmxlUnVsZS5kb0Zvcm1hdChudW1iZXIsIHRvSW5zZXJ0SW50bywgcG9zKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGb3JtYXRzIGEgZG91YmxlLiAgU2VsZWN0cyBhbiBhcHByb3ByaWF0ZSBydWxlIGFuZCBkaXNwYXRjaGVzCisgICAgICogY29udHJvbCB0byBpdC4KKyAgICAgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkCisgICAgICogQHBhcmFtIHRvSW5zZXJ0SW50byBUaGUgc3RyaW5nIHdoZXJlIHRoZSByZXN1bHQgaXMgdG8gYmUgcGxhY2VkCisgICAgICogQHBhcmFtIHBvcyBUaGUgcG9zaXRpb24gaW4gdG9JbnNlcnRJbnRvIHdoZXJlIHRoZSByZXN1bHQgb2YKKyAgICAgKiB0aGlzIG9wZXJhdGlvbiBpcyB0byBiZSBpbnNlcnRlZAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGZvcm1hdChkb3VibGUgbnVtYmVyLCBTdHJpbmdCdWZmZXIgdG9JbnNlcnRJbnRvLCBpbnQgcG9zKSB7CisgICAgICAgIE5GUnVsZSBhcHBsaWNhYmxlUnVsZSA9IGZpbmRSdWxlKG51bWJlcik7CisKKyAgICAgICAgYXBwbGljYWJsZVJ1bGUuZG9Gb3JtYXQobnVtYmVyLCB0b0luc2VydEludG8sIHBvcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2VsZWN0cyBhbiBhcHJvcHJpYXRlIHJ1bGUgZm9yIGZvcm1hdHRpbmcgdGhlIG51bWJlci4KKyAgICAgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkLgorICAgICAqIEByZXR1cm4gVGhlIHJ1bGUgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBmb3JtYXQgaXQKKyAgICAgKi8KKyAgICBwcml2YXRlIE5GUnVsZSBmaW5kUnVsZShkb3VibGUgbnVtYmVyKSB7CisgICAgICAgIC8vIGlmIHRoaXMgaXMgYSBmcmFjdGlvbiBydWxlIHNldCwgdXNlIGZpbmRGcmFjdGlvblJ1bGVTZXRSdWxlKCkKKyAgICAgICAgaWYgKGlzRnJhY3Rpb25SdWxlU2V0KSB7CisgICAgICAgICAgICByZXR1cm4gZmluZEZyYWN0aW9uUnVsZVNldFJ1bGUobnVtYmVyKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGlmIHRoZSBudW1iZXIgaXMgbmVnYXRpdmUsIHJldHVybiB0aGUgbmVnYXRpdmUgbnVtYmVyIHJ1bGUKKyAgICAgICAgLy8gKGlmIHRoZXJlIGlzbid0IGEgbmVnYXRpdmUtbnVtYmVyIHJ1bGUsIHdlIHByZXRlbmQgaXQncyBhCisgICAgICAgIC8vIHBvc2l0aXZlIG51bWJlcikKKyAgICAgICAgaWYgKG51bWJlciA8IDApIHsKKyAgICAgICAgICAgIGlmIChuZWdhdGl2ZU51bWJlclJ1bGUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZWdhdGl2ZU51bWJlclJ1bGU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG51bWJlciA9IC1udW1iZXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBpZiB0aGUgbnVtYmVyIGlzbid0IGFuIGludGVnZXIsIHdlIHVzZSBvbmUgZiB0aGUgZnJhY3Rpb24gcnVsZXMuLi4KKyAgICAgICAgaWYgKG51bWJlciAhPSBNYXRoLmZsb29yKG51bWJlcikpIHsKKyAgICAgICAgICAgIC8vIGlmIHRoZSBudW1iZXIgaXMgYmV0d2VlbiAwIGFuZCAxLCByZXR1cm4gdGhlIHByb3BlcgorICAgICAgICAgICAgLy8gZnJhY3Rpb24gcnVsZQorICAgICAgICAgICAgaWYgKG51bWJlciA8IDEgJiYgZnJhY3Rpb25SdWxlc1sxXSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZyYWN0aW9uUnVsZXNbMV07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIG90aGVyd2lzZSwgcmV0dXJuIHRoZSBpbXByb3BlciBmcmFjdGlvbiBydWxlCisgICAgICAgICAgICBlbHNlIGlmIChmcmFjdGlvblJ1bGVzWzBdICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZnJhY3Rpb25SdWxlc1swXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIGlmIHRoZXJlJ3MgYSBtYXN0ZXIgcnVsZSwgdXNlIGl0IHRvIGZvcm1hdCB0aGUgbnVtYmVyCisgICAgICAgIGlmIChmcmFjdGlvblJ1bGVzWzJdICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmcmFjdGlvblJ1bGVzWzJdOworCisgICAgICAgIC8vIGFuZCBpZiB3ZSBoYXZlbid0IHlldCByZXR1cm5lZCBhIHJ1bGUsIHVzZSBmaW5kTm9ybWFsUnVsZSgpCisgICAgICAgIC8vIHRvIGZpbmQgdGhlIGFwcGxpY2FibGUgcnVsZQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZpbmROb3JtYWxSdWxlKChsb25nKU1hdGgucm91bmQobnVtYmVyKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJZiB0aGUgdmFsdWUgcGFzc2VkIHRvIGZpbmRSdWxlKCkgaXMgYSBwb3NpdGl2ZSBpbnRlZ2VyLCBmaW5kUnVsZSgpCisgICAgICogdXNlcyB0aGlzIGZ1bmN0aW9uIHRvIHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgcnVsZS4gIFRoZSByZXN1bHQgd2lsbAorICAgICAqIGdlbmVyYWxseSBiZSB0aGUgcnVsZSB3aXRoIHRoZSBoaWdoZXN0IGJhc2UgdmFsdWUgbGVzcyB0aGFuIG9yIGVxdWFsCisgICAgICogdG8gdGhlIG51bWJlci4gIFRoZXJlIGlzIG9uZSBleGNlcHRpb24gdG8gdGhpczogSWYgdGhhdCBydWxlIGhhcworICAgICAqIHR3byBzdWJzdGl0dXRpb25zIGFuZCBhIGJhc2UgdmFsdWUgdGhhdCBpcyBub3QgYW4gZXZlbiBtdWx0aXBsZSBvZgorICAgICAqIGl0cyBkaXZpc29yLCBhbmQgdGhlIG51bWJlciBpdHNlbGYgSVMgYW4gZXZlbiBtdWx0aXBsZSBvZiB0aGUgcnVsZSdzCisgICAgICogZGl2aXNvciwgdGhlbiB0aGUgcmVzdWx0IHdpbGwgYmUgdGhlIHJ1bGUgdGhhdCBwcmVjZWRlZCB0aGUgb3JpZ2luYWwKKyAgICAgKiByZXN1bHQgaW4gdGhlIHJ1bGUgbGlzdC4gIChUaGlzIGJlaGF2aW9yIGlzIGtub3duIGFzIHRoZSAicm9sbGJhY2sKKyAgICAgKiBydWxlIiwgYW5kIGlzIHVzZWQgdG8gaGFuZGxlIG9wdGlvbmFsIHRleHQ6IGEgcnVsZSB3aXRoIG9wdGlvbmFsCisgICAgICogdGV4dCBpcyByZXByZXNlbnRlZCBpbnRlcm5hbGx5IGFzIHR3byBydWxlcywgYW5kIHRoZSByb2xsYmFjayBydWxlCisgICAgICogc2VsZWN0cyBhcHByb3ByaWF0ZSBiZXR3ZWVuIHRoZW0uICBUaGlzIGF2b2lkcyB0aGluZ3MgbGlrZSAidHdvCisgICAgICogaHVuZHJlZCB6ZXJvIi4pCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZAorICAgICAqIEByZXR1cm4gVGhlIHJ1bGUgdG8gdXNlIHRvIGZvcm1hdCB0aGlzIG51bWJlcgorICAgICAqLworICAgIHByaXZhdGUgTkZSdWxlIGZpbmROb3JtYWxSdWxlKGxvbmcgbnVtYmVyKSB7CisgICAgICAgIC8vIGlmIHRoaXMgaXMgYSBmcmFjdGlvbiBydWxlIHNldCwgdXNlIGZpbmRGcmFjdGlvblJ1bGVTZXRSdWxlKCkKKyAgICAgICAgLy8gdG8gZmluZCB0aGUgcnVsZSAod2Ugc2hvdWxkIG9ubHkgZ28gaW50byB0aGlzIGNsYXVzZSBpZiB0aGUKKyAgICAgICAgLy8gdmFsdWUgaXMgMCkKKyAgICAgICAgaWYgKGlzRnJhY3Rpb25SdWxlU2V0KSB7CisgICAgICAgICAgICByZXR1cm4gZmluZEZyYWN0aW9uUnVsZVNldFJ1bGUobnVtYmVyKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGlmIHRoZSBudW1iZXIgaXMgbmVnYXRpdmUsIHJldHVybiB0aGUgbmVnYXRpdmUtbnVtYmVyIHJ1bGUKKyAgICAgICAgLy8gKGlmIHRoZXJlIGlzbid0IG9uZSwgcHJldGVuZCB0aGUgbnVtYmVyIGlzIHBvc2l0aXZlKQorICAgICAgICBpZiAobnVtYmVyIDwgMCkgeworICAgICAgICAgICAgaWYgKG5lZ2F0aXZlTnVtYmVyUnVsZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5lZ2F0aXZlTnVtYmVyUnVsZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbnVtYmVyID0gLW51bWJlcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIHdlIGhhdmUgdG8gcmVwZWF0IHRoZSBwcmVjZWRpbmcgdHdvIGNoZWNrcywgZXZlbiB0aG91Z2ggd2UKKyAgICAgICAgLy8gZG8gdGhlbSBpbiBmaW5kUnVsZSgpLCBiZWNhdXNlIHRoZSB2ZXJzaW9uIG9mIGZvcm1hdCgpIHRoYXQKKyAgICAgICAgLy8gdGFrZXMgYSBsb25nIGJ5cGFzc2VzIGZpbmRSdWxlKCkgYW5kIGdvZXMgc3RyYWlnaHQgdG8gdGhpcworICAgICAgICAvLyBmdW5jdGlvbi4gIFRoaXMgZnVuY3Rpb24gZG9lcyBza2lwIHRoZSBmcmFjdGlvbiBydWxlcyBzaW5jZQorICAgICAgICAvLyB3ZSBrbm93IHRoZSB2YWx1ZSBpcyBhbiBpbnRlZ2VyIChpdCBhbHNvIHNraXBzIHRoZSBtYXN0ZXIKKyAgICAgICAgLy8gcnVsZSwgc2luY2UgaXQncyBjb25zaWRlcmVkIGEgZnJhY3Rpb24gcnVsZS4gIFNraXBwaW5nIHRoZQorICAgICAgICAvLyBtYXN0ZXIgcnVsZSBpbiB0aGlzIGZ1bmN0aW9uIGlzIGFsc28gaG93IHdlIGF2b2lkIGluZmluaXRlCisgICAgICAgIC8vIHJlY3Vyc2lvbikKKworICAgICAgICAvLyBiaW5hcnktc2VhcmNoIHRoZSBydWxlIGxpc3QgZm9yIHRoZSBhcHBsaWNhYmxlIHJ1bGUKKyAgICAgICAgLy8gKGEgcnVsZSBpcyB1c2VkIGZvciBhbGwgdmFsdWVzIGZyb20gaXRzIGJhc2UgdmFsdWUgdG8KKyAgICAgICAgLy8gdGhlIG5leHQgcnVsZSdzIGJhc2UgdmFsdWUpCisgICAgICAgIGludCBsbyA9IDA7CisgICAgICAgIGludCBoaSA9IHJ1bGVzLmxlbmd0aDsKKyAgICAgICAgd2hpbGUgKGxvIDwgaGkpIHsKKyAgICAgICAgICAgIGludCBtaWQgPSAobG8gKyBoaSkgLyAyOworICAgICAgICAgICAgaWYgKHJ1bGVzW21pZF0uZ2V0QmFzZVZhbHVlKCkgPT0gbnVtYmVyKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJ1bGVzW21pZF07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChydWxlc1ttaWRdLmdldEJhc2VWYWx1ZSgpID4gbnVtYmVyKSB7CisgICAgICAgICAgICAgICAgaGkgPSBtaWQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBsbyA9IG1pZCArIDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgTkZSdWxlIHJlc3VsdCA9IHJ1bGVzW2hpIC0gMV07CisKKyAgICAgICAgLy8gdXNlIHNob3VsZFJvbGxCYWNrKCkgdG8gc2VlIHdoZXRoZXIgd2UgbmVlZCB0byBpbnZva2UgdGhlCisgICAgICAgIC8vIHJvbGxiYWNrIHJ1bGUgKHNlZSBzaG91bGRSb2xsQmFjaygpJ3MgZG9jdW1lbnRhdGlvbiBmb3IKKyAgICAgICAgLy8gYW4gZXhwbGFuYXRpb24gb2YgdGhlIHJvbGxiYWNrIHJ1bGUpLiAgSWYgd2UgZG8sIHJvbGwgYmFjaworICAgICAgICAvLyBvbmUgcnVsZSBhbmQgcmV0dXJuIHRoYXQgb25lIGluc3RlYWQgb2YgdGhlIG9uZSB3ZSdkIG5vcm1hbGx5CisgICAgICAgIC8vIHJldHVybgorICAgICAgICBpZiAocmVzdWx0LnNob3VsZFJvbGxCYWNrKG51bWJlcikpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bGVzW2hpIC0gMl07CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIElmIHRoaXMgcnVsZSBpcyBhIGZyYWN0aW9uIHJ1bGUgc2V0LCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkKKyAgICAgKiBmaW5kUnVsZSgpIHRvIHNlbGVjdCB0aGUgbW9zdCBhcHByb3ByaWF0ZSBydWxlIGZvciBmb3JtYXR0aW5nCisgICAgICogdGhlIG51bWJlci4gIEJhc2ljYWxseSwgdGhlIGJhc2UgdmFsdWUgb2YgZWFjaCBydWxlIGluIHRoZSBydWxlCisgICAgICogc2V0IGlzIHRyZWF0ZWQgYXMgdGhlIGRlbm9taW5hdG9yIG9mIGEgZnJhY3Rpb24uICBXaGljaGV2ZXIKKyAgICAgKiBkZW5vbWluYXRvciBjYW4gcHJvZHVjZSB0aGUgZnJhY3Rpb24gY2xvc2VzdCBpbiB2YWx1ZSB0byB0aGUKKyAgICAgKiBudW1iZXIgcGFzc2VkIGluIGlzIHRoZSByZXN1bHQuICBJZiB0aGVyZSdzIGEgdGllLCB0aGUgZWFybGllcgorICAgICAqIG9uZSBpbiB0aGUgbGlzdCB3aW5zLiAgKElmIHRoZXJlIGFyZSB0d28gcnVsZXMgaW4gYSByb3cgd2l0aCB0aGUKKyAgICAgKiBzYW1lIGJhc2UgdmFsdWUsIHRoZSBmaXJzdCBvbmUgaXMgdXNlZCB3aGVuIHRoZSBudW1lcmF0b3Igb2YgdGhlCisgICAgICogZnJhY3Rpb24gd291bGQgYmUgMSwgYW5kIHRoZSBzZWNvbmQgcnVsZSBpcyB1c2VkIHRoZSByZXN0IG9mIHRoZQorICAgICAqIHRpbWUuCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZCAod2hpY2ggd2lsbCBhbHdheXMgYmUKKyAgICAgKiBhIG51bWJlciBiZXR3ZWVuIDAgYW5kIDEpCisgICAgICogQHJldHVybiBUaGUgcnVsZSB0byB1c2UgdG8gZm9ybWF0IHRoaXMgbnVtYmVyCisgICAgICovCisgICAgcHJpdmF0ZSBORlJ1bGUgZmluZEZyYWN0aW9uUnVsZVNldFJ1bGUoZG91YmxlIG51bWJlcikgeworICAgICAgICAvLyB0aGUgb2J2aW91cyB3YXkgdG8gZG8gdGhpcyAobXVsdGlwbHkgdGhlIHZhbHVlIGJlaW5nIGZvcm1hdHRlZAorICAgICAgICAvLyBieSBlYWNoIHJ1bGUncyBiYXNlIHZhbHVlIHVudGlsIHlvdSBnZXQgYW4gaW50ZWdyYWwgcmVzdWx0KQorICAgICAgICAvLyBkb2Vzbid0IHdvcmsgYmVjYXVzZSBvZiByb3VuZGluZyBlcnJvci4gIFRoaXMgbWV0aG9kIGlzIG1vcmUKKyAgICAgICAgLy8gYWNjdXJhdGUKKworICAgICAgICAvLyBmaW5kIHRoZSBsZWFzdCBjb21tb24gbXVsdGlwbGUgb2YgdGhlIHJ1bGVzJyBiYXNlIHZhbHVlcworICAgICAgICAvLyBhbmQgbXVsdGlwbHkgdGhpcyBieSB0aGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZC4gIFRoaXMgaXMKKyAgICAgICAgLy8gYWxsIHRoZSBwcmVjaXNpb24gd2UgbmVlZCwgYW5kIHdlIGNhbiBkbyBhbGwgb2YgdGhlIHJlc3QKKyAgICAgICAgLy8gb2YgdGhlIG1hdGggdXNpbmcgaW50ZWdlciBhcml0aG1ldGljCisgICAgICAgIGxvbmcgbGVhc3RDb21tb25NdWx0aXBsZSA9IHJ1bGVzWzBdLmdldEJhc2VWYWx1ZSgpOworICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IHJ1bGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBsZWFzdENvbW1vbk11bHRpcGxlID0gbGNtKGxlYXN0Q29tbW9uTXVsdGlwbGUsIHJ1bGVzW2ldLmdldEJhc2VWYWx1ZSgpKTsKKyAgICAgICAgfQorICAgICAgICBsb25nIG51bWVyYXRvciA9IChsb25nKShNYXRoLnJvdW5kKG51bWJlciAqIGxlYXN0Q29tbW9uTXVsdGlwbGUpKTsKKworICAgICAgICAvLyBmb3IgZWFjaCBydWxlLCBkbyB0aGUgZm9sbG93aW5nLi4uCisgICAgICAgIGxvbmcgdGVtcERpZmZlcmVuY2U7CisgICAgICAgIGxvbmcgZGlmZmVyZW5jZSA9IExvbmcuTUFYX1ZBTFVFOworICAgICAgICBpbnQgd2lubmVyID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBydWxlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgLy8gIm51bWVyYXRvciIgaXMgdGhlIG51bWVyYXRvciBvZiB0aGUgZnJhY3Rpb24gaXMgdGhlCisgICAgICAgICAgICAvLyBkZW5vbWluYXRvciBpcyB0aGUgTENELiAgVGhlIG51bWVyYXRvciBpZiB0aGUgdGhlIHJ1bGUncworICAgICAgICAgICAgLy8gYmFzZSB2YWx1ZSBpcyB0aGUgZGVub21pYXRvciBpcyAibnVtZXJhdG9yIiB0aW1lcyB0aGUKKyAgICAgICAgICAgIC8vIGJhc2UgdmFsdWUgZGl2aWRlZCBieXRoZSBMQ0QuICBIZXJlIHdlIGNoZWNrIHRvIHNlZSBpZgorICAgICAgICAgICAgLy8gdGhhdCdzIGFuIGludGVnZXIsIGFuZCBpZiBub3QsIGhvdyBjbG9zZSBpdCBpcyB0byBiZWluZworICAgICAgICAgICAgLy8gYW4gaW50ZWdlci4KKyAgICAgICAgICAgIHRlbXBEaWZmZXJlbmNlID0gbnVtZXJhdG9yICogcnVsZXNbaV0uZ2V0QmFzZVZhbHVlKCkgJSBsZWFzdENvbW1vbk11bHRpcGxlOworCisgICAgICAgICAgICAvLyBub3JtYWxpemUgdGhlIHJlc3VsdCBvZiB0aGUgYWJvdmUgY2FsY3VsYXRpb246IHdlIHdhbnQKKyAgICAgICAgICAgIC8vIHRoZSBudW1lcmF0b3IncyBkaXN0YW5jZSBmcm9tIHRoZSBDTE9TRVNUIG11bHRpcGxlCisgICAgICAgICAgICAvLyBvZiB0aGUgTENECisgICAgICAgICAgICBpZiAobGVhc3RDb21tb25NdWx0aXBsZSAtIHRlbXBEaWZmZXJlbmNlIDwgdGVtcERpZmZlcmVuY2UpIHsKKyAgICAgICAgICAgICAgICB0ZW1wRGlmZmVyZW5jZSA9IGxlYXN0Q29tbW9uTXVsdGlwbGUgLSB0ZW1wRGlmZmVyZW5jZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyBhcyBjbG9zZSBhcyB3ZSd2ZSBjb21lLCBrZWVwIHRyYWNrIG9mIGhvdyBjbG9zZQorICAgICAgICAgICAgLy8gdGhhdCBpcywgYW5kIHRoZSBsaW5lIG51bWJlciBvZiB0aGUgcnVsZSB0aGF0IGRpZCBpdC4gIElmCisgICAgICAgICAgICAvLyB3ZSd2ZSBzY29yZWQgYSBkaXJlY3QgaGl0LCB3ZSBkb24ndCBoYXZlIHRvIGxvb2sgYXQgYW55IG1vcmUKKyAgICAgICAgICAgIC8vIHJ1bGVzCisgICAgICAgICAgICBpZiAodGVtcERpZmZlcmVuY2UgPCBkaWZmZXJlbmNlKSB7CisgICAgICAgICAgICAgICAgZGlmZmVyZW5jZSA9IHRlbXBEaWZmZXJlbmNlOworICAgICAgICAgICAgICAgIHdpbm5lciA9IGk7CisgICAgICAgICAgICAgICAgaWYgKGRpZmZlcmVuY2UgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBpZiB3ZSBoYXZlIHR3byBzdWNjZXNzaXZlIHJ1bGVzIHRoYXQgYm90aCBoYXZlIHRoZSB3aW5uaW5nIGJhc2UKKyAgICAgICAgLy8gdmFsdWUsIHRoZW4gdGhlIGZpcnN0IG9uZSAodGhlIG9uZSB3ZSBmb3VuZCBhYm92ZSkgaXMgdXNlZCBpZgorICAgICAgICAvLyB0aGUgbnVtZXJhdG9yIG9mIHRoZSBmcmFjdGlvbiBpcyAxIGFuZCB0aGUgc2Vjb25kIG9uZSBpcyB1c2VkIGlmCisgICAgICAgIC8vIHRoZSBudW1lcmF0b3Igb2YgdGhlIGZyYWN0aW9uIGlzIGFueXRoaW5nIGVsc2UgKHRoaXMgbGV0cyB1cworICAgICAgICAvLyBkbyB0aGluZ3MgbGlrZSAib25lIHRoaXJkIi8idHdvIHRoaXJkcyIgd2l0aG91dCBoYXZlaW5nIHRvIGRlZmluZQorICAgICAgICAvLyBhIHdob2xlIGJ1bmNoIG9mIGV4dHJhIHJ1bGUgc2V0cykKKyAgICAgICAgaWYgKHdpbm5lciArIDEgPCBydWxlcy5sZW5ndGgKKyAgICAgICAgICAgICAgICAmJiBydWxlc1t3aW5uZXIgKyAxXS5nZXRCYXNlVmFsdWUoKSA9PSBydWxlc1t3aW5uZXJdLmdldEJhc2VWYWx1ZSgpKSB7CisgICAgICAgICAgICBpZiAoTWF0aC5yb3VuZChudW1iZXIgKiBydWxlc1t3aW5uZXJdLmdldEJhc2VWYWx1ZSgpKSA8IDEKKyAgICAgICAgICAgICAgICAgICAgfHwgTWF0aC5yb3VuZChudW1iZXIgKiBydWxlc1t3aW5uZXJdLmdldEJhc2VWYWx1ZSgpKSA+PSAyKSB7CisgICAgICAgICAgICAgICAgKyt3aW5uZXI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBmaW5hbGx5LCByZXR1cm4gdGhlIHdpbm5pbmcgcnVsZQorICAgICAgICByZXR1cm4gcnVsZXNbd2lubmVyXTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDYWxjdWxhdGVzIHRoZSBsZWFzdCBjb21tb24gbXVsdGlwbGUgb2YgeCBhbmQgeS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBsb25nIGxjbShsb25nIHgsIGxvbmcgeSkgeworICAgICAgICAvLyBiaW5hcnkgZ2NkIGFsZ29yaXRobSBmcm9tIEtudXRoLCAiVGhlIEFydCBvZiBDb21wdXRlciBQcm9ncmFtbWluZywiCisgICAgICAgIC8vIHZvbC4gMiwgMXN0IGVkLiwgcHAuIDI5OC0yOTkKKyAgICAgICAgbG9uZyB4MSA9IHg7CisgICAgICAgIGxvbmcgeTEgPSB5OworCisgICAgICAgIGludCBwMiA9IDA7CisgICAgICAgIHdoaWxlICgoeDEgJiAxKSA9PSAwICYmICh5MSAmIDEpID09IDApIHsKKyAgICAgICAgICAgICsrcDI7CisgICAgICAgICAgICB4MSA+Pj0gMTsKKyAgICAgICAgICAgIHkxID4+PSAxOworICAgICAgICB9CisKKyAgICAgICAgbG9uZyB0OworICAgICAgICBpZiAoKHgxICYgMSkgPT0gMSkgeworICAgICAgICAgICAgdCA9IC15MTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHQgPSB4MTsKKyAgICAgICAgfQorCisgICAgICAgIHdoaWxlICh0ICE9IDApIHsKKyAgICAgICAgICAgIHdoaWxlICgodCAmIDEpID09IDApIHsKKyAgICAgICAgICAgICAgICB0ID4+PSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHQgPiAwKSB7CisgICAgICAgICAgICAgICAgeDEgPSB0OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB5MSA9IC10OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdCA9IHgxIC0geTE7CisgICAgICAgIH0KKyAgICAgICAgbG9uZyBnY2QgPSB4MSA8PCBwMjsKKworICAgICAgICAvLyB4ICogeSA9PSBnY2QoeCwgeSkgKiBsY20oeCwgeSkKKyAgICAgICAgcmV0dXJuIHggLyBnY2QgKiB5OworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBwYXJzaW5nCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUGFyc2VzIGEgc3RyaW5nLiAgTWF0Y2hlcyB0aGUgc3RyaW5nIHRvIGJlIHBhcnNlZCBhZ2FpbnN0IGVhY2gKKyAgICAgKiBvZiBpdHMgcnVsZXMgKHdpdGggYSBiYXNlIHZhbHVlIGxlc3MgdGhhbiB1cHBlckJvdW5kKSBhbmQgcmV0dXJucworICAgICAqIHRoZSB2YWx1ZSBwcm9kdWNlZCBieSB0aGUgcnVsZSB0aGF0IG1hdGNoZWQgdGhlIG1vc3QgY2hhcmN0ZXJzCisgICAgICogaW4gdGhlIHNvdXJjZSBzdHJpbmcuCisgICAgICogQHBhcmFtIHRleHQgVGhlIHN0cmluZyB0byBwYXJzZQorICAgICAqIEBwYXJhbSBwYXJzZVBvc2l0aW9uIFRoZSBpbml0aWFsIHBvc2l0aW9uIGlzIGlnbm9yZWQgYW5kIGFzc3VtZWQKKyAgICAgKiB0byBiZSAwLiAgT24gZXhpdCwgdGhpcyBvYmplY3QgaGFzIGJlZW4gdXBkYXRlZCB0byBwb2ludCB0byB0aGUKKyAgICAgKiBmaXJzdCBjaGFyYWN0ZXIgcG9zaXRpb24gdGhpcyBydWxlIHNldCBkaWRuJ3QgY29uc3VtZS4KKyAgICAgKiBAcGFyYW0gdXBwZXJCb3VuZCBMaW1pdHMgdGhlIHJ1bGVzIHRoYXQgY2FuIGJlIGFsbG93ZWQgdG8gbWF0Y2guCisgICAgICogT25seSBydWxlcyB3aG9zZSBiYXNlIHZhbHVlcyBhcmUgc3RyaWN0bHkgbGVzcyB0aGFuIHVwcGVyQm91bmQKKyAgICAgKiBhcmUgY29uc2lkZXJlZC4KKyAgICAgKiBAcmV0dXJuIFRoZSBudW1lcmljYWwgcmVzdWx0IG9mIHBhcnNpbmcgdGhpcyBzdHJpbmcuICBUaGlzIHdpbGwKKyAgICAgKiBiZSB0aGUgbWF0Y2hpbmcgcnVsZSdzIGJhc2UgdmFsdWUsIGNvbXBvc2VkIGFwcHJvcHJpYXRlbHkgd2l0aAorICAgICAqIHRoZSByZXN1bHRzIG9mIG1hdGNoaW5nIGFueSBvZiBpdHMgc3Vic3RpdHV0aW9ucy4gIFRoZSBvYmplY3QKKyAgICAgKiB3aWxsIGJlIGFuIGluc3RhbmNlIG9mIExvbmcgaWYgaXQncyBhbiBpbnRlZ3JhbCB2YWx1ZTsgb3RoZXJ3aXNlLAorICAgICAqIGl0IHdpbGwgYmUgYW4gaW5zdGFuY2Ugb2YgRG91YmxlLiAgVGhpcyBmdW5jdGlvbiBhbHdheXMgcmV0dXJucworICAgICAqIGEgdmFsaWQgb2JqZWN0OiBJZiBub3RoaW5nIG1hdGNoZWQgdGhlIGlucHV0IHN0cmluZyBhdCBhbGwsCisgICAgICogdGhpcyBmdW5jdGlvbiByZXR1cm5zIG5ldyBMb25nKDApLCBhbmQgdGhlIHBhcnNlIHBvc2l0aW9uIGlzCisgICAgICogbGVmdCB1bmNoYW5nZWQuCisgICAgICovCisgICAgcHVibGljIE51bWJlciBwYXJzZShTdHJpbmcgdGV4dCwgUGFyc2VQb3NpdGlvbiBwYXJzZVBvc2l0aW9uLCBkb3VibGUgdXBwZXJCb3VuZCkgeworICAgICAgICAvLyB0cnkgbWF0Y2hpbmcgZWFjaCBydWxlIGluIHRoZSBydWxlIHNldCBhZ2FpbnN0IHRoZSB0ZXh0IGJlaW5nCisgICAgICAgIC8vIHBhcnNlZC4gIFdoaWNoZXZlciBvbmUgbWF0Y2hlcyB0aGUgbW9zdCBjaGFyYWN0ZXJzIGlzIHRoZSBvbmUKKyAgICAgICAgLy8gdGhhdCBkZXRlcm1pbmVzIHRoZSB2YWx1ZSB3ZSByZXR1cm4uCisKKyAgICAgICAgUGFyc2VQb3NpdGlvbiBoaWdoV2F0ZXJNYXJrID0gbmV3IFBhcnNlUG9zaXRpb24oMCk7CisgICAgICAgIE51bWJlciByZXN1bHQgPSBuZXcgTG9uZygwKTsKKyAgICAgICAgTnVtYmVyIHRlbXBSZXN1bHQgPSBudWxsOworCisgICAgICAgIC8vIGR1bXAgb3V0IGlmIHRoZXJlJ3Mgbm8gdGV4dCB0byBwYXJzZQorICAgICAgICBpZiAodGV4dC5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgLy8gc3RhcnQgYnkgdHJ5aW5nIHRoZSBuZWhhdGl2ZSBudW1iZXIgcnVsZSAoaWYgdGhlcmUgaXMgb25lKQorICAgICAgICBpZiAobmVnYXRpdmVOdW1iZXJSdWxlICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRlbXBSZXN1bHQgPSBuZWdhdGl2ZU51bWJlclJ1bGUuZG9QYXJzZSh0ZXh0LCBwYXJzZVBvc2l0aW9uLCBmYWxzZSwgdXBwZXJCb3VuZCk7CisgICAgICAgICAgICBpZiAocGFyc2VQb3NpdGlvbi5nZXRJbmRleCgpID4gaGlnaFdhdGVyTWFyay5nZXRJbmRleCgpKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGVtcFJlc3VsdDsKKyAgICAgICAgICAgICAgICBoaWdoV2F0ZXJNYXJrLnNldEluZGV4KHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSk7CisgICAgICAgICAgICB9CisvLyBjb21tZW50ZWQgb3V0IGJlY2F1c2UgdGhlIGVycm9yLWluZGV4IEFQSSBvbiBQYXJzZVBvc2l0aW9uIGlzbid0IHRoZXJlIGluIDEuMS54CisvLyAgICAgICAgICAgIGlmIChwYXJzZVBvc2l0aW9uLmdldEVycm9ySW5kZXgoKSA+IGhpZ2hXYXRlck1hcmsuZ2V0RXJyb3JJbmRleCgpKSB7CisvLyAgICAgICAgICAgICAgICBoaWdoV2F0ZXJNYXJrLnNldEVycm9ySW5kZXgocGFyc2VQb3NpdGlvbi5nZXRFcnJvckluZGV4KCkpOworLy8gICAgICAgICAgICB9CisgICAgICAgICAgICBwYXJzZVBvc2l0aW9uLnNldEluZGV4KDApOworICAgICAgICB9CisKKyAgICAgICAgLy8gdGhlbiB0cnkgZWFjaCBvZiB0aGUgZnJhY3Rpb24gcnVsZXMKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChmcmFjdGlvblJ1bGVzW2ldICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0ZW1wUmVzdWx0ID0gZnJhY3Rpb25SdWxlc1tpXS5kb1BhcnNlKHRleHQsIHBhcnNlUG9zaXRpb24sIGZhbHNlLCB1cHBlckJvdW5kKTsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VQb3NpdGlvbi5nZXRJbmRleCgpID4gaGlnaFdhdGVyTWFyay5nZXRJbmRleCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRlbXBSZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgIGhpZ2hXYXRlck1hcmsuc2V0SW5kZXgocGFyc2VQb3NpdGlvbi5nZXRJbmRleCgpKTsKKyAgICAgICAgICAgICAgICB9CisvLyBjb21tZW50ZWQgb3V0IGJlY2F1c2UgdGhlIGVycm9yLWluZGV4IEFQSSBvbiBQYXJzZVBvc2l0aW9uIGlzbid0IHRoZXJlIGluIDEuMS54CisvLyAgICAgICAgICAgIGlmIChwYXJzZVBvc2l0aW9uLmdldEVycm9ySW5kZXgoKSA+IGhpZ2hXYXRlck1hcmsuZ2V0RXJyb3JJbmRleCgpKSB7CisvLyAgICAgICAgICAgICAgICBoaWdoV2F0ZXJNYXJrLnNldEVycm9ySW5kZXgocGFyc2VQb3NpdGlvbi5nZXRFcnJvckluZGV4KCkpOworLy8gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcGFyc2VQb3NpdGlvbi5zZXRJbmRleCgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIGZpbmFsbHksIGdvIHRocm91Z2ggdGhlIHJlZ3VsYXIgcnVsZXMgb25lIGF0IGEgdGltZS4gIFdlIHN0YXJ0CisgICAgICAgIC8vIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QgYmVjYXVzZSB3ZSB3YW50IHRvIHRyeSBtYXRjaGluZyB0aGUgbW9zdAorICAgICAgICAvLyBzaWdpZmljYW50IHJ1bGUgZmlyc3QgKHRoaXMgaGVscHMgZW5zdXJlIHRoYXQgd2UgcGFyc2UKKyAgICAgICAgLy8gImZpdmUgdGhvdXNhbmQgdGhyZWUgaHVuZHJlZCBzaXgiIGFzCisgICAgICAgIC8vICIoZml2ZSB0aG91c2FuZCkgKHRocmVlIGh1bmRyZWQpIChzaXgpIiByYXRoZXIgdGhhbgorICAgICAgICAvLyAiKChmaXZlIHRob3VzYW5kIHRocmVlKSBodW5kcmVkKSAoc2l4KSIpLiAgU2tpcCBydWxlcyB3aG9zZQorICAgICAgICAvLyBiYXNlIHZhbHVlcyBhcmUgaGlnaGVyIHRoYW4gdGhlIHVwcGVyIGJvdW5kIChhZ2FpbiwgdGhpcyBoZWxwcworICAgICAgICAvLyBsaW1pdCBhbWJpZ3VpdHkgYnkgbWFraW5nIHN1cmUgdGhlIHJ1bGVzIHRoYXQgbWF0Y2ggYSBydWxlJ3MKKyAgICAgICAgLy8gYXJlIGxlc3Mgc2lnbmlmaWNhbnQgdGhhbiB0aGUgcnVsZSBjb250YWluaW5nIHRoZSBzdWJzdGl0dXRpb25zKS8KKyAgICAgICAgZm9yIChpbnQgaSA9IHJ1bGVzLmxlbmd0aCAtIDE7IGkgPj0gMCAmJiBoaWdoV2F0ZXJNYXJrLmdldEluZGV4KCkgPCB0ZXh0Lmxlbmd0aCgpOyBpLS0pIHsKKyAgICAgICAgICAgIGlmICghaXNGcmFjdGlvblJ1bGVTZXQgJiYgcnVsZXNbaV0uZ2V0QmFzZVZhbHVlKCkgPj0gdXBwZXJCb3VuZCkgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0ZW1wUmVzdWx0ID0gcnVsZXNbaV0uZG9QYXJzZSh0ZXh0LCBwYXJzZVBvc2l0aW9uLCBpc0ZyYWN0aW9uUnVsZVNldCwgdXBwZXJCb3VuZCk7CisgICAgICAgICAgICBpZiAocGFyc2VQb3NpdGlvbi5nZXRJbmRleCgpID4gaGlnaFdhdGVyTWFyay5nZXRJbmRleCgpKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGVtcFJlc3VsdDsKKyAgICAgICAgICAgICAgICBoaWdoV2F0ZXJNYXJrLnNldEluZGV4KHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSk7CisgICAgICAgICAgICB9CisvLyBjb21tZW50ZWQgb3V0IGJlY2F1c2UgdGhlIGVycm9yLWluZGV4IEFQSSBvbiBQYXJzZVBvc2l0aW9uIGlzbid0IHRoZXJlIGluIDEuMS54CisvLyAgICAgICAgICAgIGlmIChwYXJzZVBvc2l0aW9uLmdldEVycm9ySW5kZXgoKSA+IGhpZ2hXYXRlck1hcmsuZ2V0RXJyb3JJbmRleCgpKSB7CisvLyAgICAgICAgICAgICAgICBoaWdoV2F0ZXJNYXJrLnNldEVycm9ySW5kZXgocGFyc2VQb3NpdGlvbi5nZXRFcnJvckluZGV4KCkpOworLy8gICAgICAgICAgICB9CisgICAgICAgICAgICBwYXJzZVBvc2l0aW9uLnNldEluZGV4KDApOworICAgICAgICB9CisKKyAgICAgICAgLy8gZmluYWxseSwgdXBkYXRlIHRoZSBwYXJzZSBwb3N0aW9uIHdlIHdlcmUgcGFzc2VkIHRvIHBvaW50IHRvIHRoZQorICAgICAgICAvLyBmaXJzdCBjaGFyYWN0ZXIgd2UgZGlkbid0IHVzZSwgYW5kIHJldHVybiB0aGUgcmVzdWx0IHRoYXQKKyAgICAgICAgLy8gY3BvcnJlc3BvbmRzIHRvIHRoYXQgc3RyaW5nIG9mIGNoYXJhY3RlcnMKKyAgICAgICAgcGFyc2VQb3NpdGlvbi5zZXRJbmRleChoaWdoV2F0ZXJNYXJrLmdldEluZGV4KCkpOworLy8gY29tbWVudGVkIG91dCBiZWNhdXNlIHRoZSBlcnJvci1pbmRleCBBUEkgb24gUGFyc2VQb3NpdGlvbiBpc24ndCB0aGVyZSBpbiAxLjEueAorLy8gICAgICAgIGlmIChwYXJzZVBvc2l0aW9uLmdldEluZGV4KCkgPT0gMCkgeworLy8gICAgICAgICAgICBwYXJzZVBvc2l0aW9uLnNldEVycm9ySW5kZXgoaGlnaFdhdGVyTWFyay5nZXRFcnJvckluZGV4KCkpOworLy8gICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvTkZTdWJzdGl0dXRpb24uamF2YSBiL3NyYy9jb20vaWJtL3RleHQvTkZTdWJzdGl0dXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42NDgyZjc5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9ORlN1YnN0aXR1dGlvbi5qYXZhCkBAIC0wLDAgKzEsMTczOCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9BdHRpYy9ORlN1YnN0aXR1dGlvbi5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA1LzI2IDIxOjM4OjU1ICQgCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXh0OworCitpbXBvcnQgamF2YS50ZXh0Lio7CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gTkZTdWJzdGl0dXRpb24gKGFic3RyYWN0IGJhc2UgY2xhc3MpCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLyoqCisgKiBBbiBhYnN0cmFjdCBjbGFzcyBkZWZpbmluZyBwcm90b2NvbCBmb3Igc3Vic3RpdHV0aW9ucy4gIEEgc3Vic3RpdHV0aW9uCisgKiBpcyBhIHNlY3Rpb24gb2YgYSBydWxlIHRoYXQgaW5zZXJ0cyB0ZXh0IGludG8gdGhlIHJ1bGUncyBydWxlIHRleHQKKyAqIGJhc2VkIG9uIHNvbWUgcGFydCBvZiB0aGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZC4KKyAqIEBhdXRob3IgUmljaGFyZCBHaWxsYW0KKyAqIEB2ZXJzaW9uICRSQ1NmaWxlOiBORlN1YnN0aXR1dGlvbi5qYXZhLHYgJCAkUmV2aXNpb246IDEuNCAkICREYXRlOiAyMDAwLzA1LzI2IDIxOjM4OjU1ICQKKyAqLworYWJzdHJhY3QgY2xhc3MgTkZTdWJzdGl0dXRpb24geworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjb25zdGFudHMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBQdXRzIGEgY29weXJpZ2h0IGluIHRoZSAuY2xhc3MgZmlsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHROb3RpY2UKKyAgICAgICAgPSAiQ29weXJpZ2h0IFx1MDBhOTE5OTctMTk5OCBJQk0gQ29ycC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBkYXRhIG1lbWJlcnMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBUaGUgc3Vic3RpdHV0aW9uJ3MgcG9zaXRpb24gaW4gdGhlIHJ1bGUgdGV4dCBvZiB0aGUgcnVsZSB0aGF0IG93bnMgaXQKKyAgICAgKi8KKyAgICBpbnQgcG9zOworCisgICAgLyoqCisgICAgICogVGhlIHJ1bGUgc2V0IHRoaXMgc3Vic3RpdHV0aW9uIHVzZXMgdG8gZm9ybWF0IGl0cyByZXN1bHQsIG9yIG51bGwuCisgICAgICogKEVpdGhlciB0aGlzIG9yIG51bWJlckZvcm1hdCBoYXMgdG8gYmUgbm9uLW51bGwuKQorICAgICAqLworICAgIE5GUnVsZVNldCBydWxlU2V0ID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIFRoZSBEZWNpbWFsRm9ybWF0IHRoaXMgc3Vic3RpdHV0aW9uIHVzZXMgdG8gZm9ybWF0IGl0cyByZXN1bHQsCisgICAgICogb3IgbnVsbC4gIChFaXRoZXIgdGhpcyBvciBydWxlU2V0IGhhcyB0byBiZSBub24tbnVsbC4pCisgICAgICovCisgICAgRGVjaW1hbEZvcm1hdCBudW1iZXJGb3JtYXQgPSBudWxsOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGNvbnN0cnVjdGlvbgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFBhcnNlcyB0aGUgZGVzY3JpcHRpb24sIGNyZWF0ZXMgdGhlIHJpZ2h0IGtpbmQgb2Ygc3Vic3RpdHV0aW9uLAorICAgICAqIGFuZCBpbml0aWFsaXplcyBpdCBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb24uCisgICAgICogQHBhcmFtIHBvcyBUaGUgc3Vic3RpdHV0aW9uJ3MgcG9zaXRpb24gaW4gdGhlIHJ1bGUgdGV4dCBvZiB0aGUKKyAgICAgKiBydWxlIHRoYXQgb3ducyBpdC4KKyAgICAgKiBAcGFyYW0gcnVsZSBUaGUgcnVsZSBjb250YWluaW5nIHRoaXMgc3Vic3RpdHV0aW9uCisgICAgICogQHBhcmFtIHJ1bGVQcmVkZWNlc3NvciBUaGUgcnVsZSBwcmVjZWRpbmcgdGhlIG9uZSB0aGF0IGNvbnRhaW5zCisgICAgICogdGhpcyBzdWJzdGl0dXRpb24gaW4gdGhlIHJ1bGUgc2V0J3MgcnVsZSBsaXN0ICh0aGlzIGlzIHVzZWQKKyAgICAgKiBvbmx5IGZvciA+Pj4gc3Vic3RpdHV0aW9ucykuCisgICAgICogQHBhcmFtIHJ1bGVTZXQgVGhlIHJ1bGUgc2V0IGNvbnRhaW5pbmcgdGhlIHJ1bGUgY29udGFpbmluZyB0aGlzCisgICAgICogc3Vic3RpdHV0aW9uCisgICAgICogQHBhcmFtIGZvcm1hdHRlciBUaGUgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IHRoYXQgdWx0aW1hdGVseSBvd25zCisgICAgICogdGhpcyBzdWJzdGl0dXRpb24KKyAgICAgKiBAcGFyYW0gZGVzY3JpcHRpb24gVGhlIGRlc2NyaXB0aW9uIHRvIHBhcnNlIHRvIGJ1aWxkIHRoZSBzdWJzdGl0dXRpb24KKyAgICAgKiAodGhpcyBpcyBqdXN0IHRoZSBzdWJzdHJpbmcgb2YgdGhlIHJ1bGUncyBkZXNjcmlwdGlvbiBjb250YWluaW5nCisgICAgICogdGhlIHN1YnN0aXR1dGlvbiB0b2tlbiBpdHNlbGYpCisgICAgICogQHJldHVybiBBIG5ldyBzdWJzdGl0dXRpb24gY29uc3RydWN0ZWQgYWNjb3JkaW5nIHRvIHRoZSBkZXNjcmlwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgTkZTdWJzdGl0dXRpb24gbWFrZVN1YnN0aXR1dGlvbihpbnQgcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORlJ1bGUgcnVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkZSdWxlIHJ1bGVQcmVkZWNlc3NvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkZSdWxlU2V0IHJ1bGVTZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBkZXNjcmlwdGlvbikgeworICAgICAgICAvLyBpZiB0aGUgZGVzY3JpcHRpb24gaXMgZW1wdHksIHJldHVybiBhIE51bW1TdWJzdGl0dXRpb24KKyAgICAgICAgaWYgKGRlc2NyaXB0aW9uLmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgTnVsbFN1YnN0aXR1dGlvbihwb3MsIHJ1bGVTZXQsIGZvcm1hdHRlciwgZGVzY3JpcHRpb24pOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChkZXNjcmlwdGlvbi5jaGFyQXQoMCkpIHsKKyAgICAgICAgICAgIC8vIGlmIHRoZSBkZXNjcmlwdGlvbiBiZWdpbnMgd2l0aCAnPCcuLi4KKyAgICAgICAgICAgIGNhc2UgJzwnOgorICAgICAgICAgICAgICAgIC8vIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgcnVsZSBpcyBhIG5lZ2F0aXZlIG51bWJlcgorICAgICAgICAgICAgICAgIC8vIHJ1bGUKKyAgICAgICAgICAgICAgICBpZiAocnVsZS5nZXRCYXNlVmFsdWUoKSA9PSBORlJ1bGUuTkVHQVRJVkVfTlVNQkVSX1JVTEUpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiPDwgbm90IGFsbG93ZWQgaW4gbmVnYXRpdmUtbnVtYmVyIHJ1bGUiKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcnVsZSBpcyBhIGZyYWN0aW9uIHJ1bGUsIHJldHVybiBhbgorICAgICAgICAgICAgICAgIC8vIEludGVncmFsUGFydFN1YnN0aXR1dGlvbgorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJ1bGUuZ2V0QmFzZVZhbHVlKCkgPT0gTkZSdWxlLklNUFJPUEVSX0ZSQUNUSU9OX1JVTEUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBydWxlLmdldEJhc2VWYWx1ZSgpID09IE5GUnVsZS5QUk9QRVJfRlJBQ1RJT05fUlVMRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHJ1bGUuZ2V0QmFzZVZhbHVlKCkgPT0gTkZSdWxlLk1BU1RFUl9SVUxFKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgSW50ZWdyYWxQYXJ0U3Vic3RpdHV0aW9uKHBvcywgcnVsZVNldCwgZm9ybWF0dGVyLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHJ1bGUgc2V0IGNvbnRhaW5pbmcgdGhlIHJ1bGUgaXMgYSBmcmFjdGlvbgorICAgICAgICAgICAgICAgIC8vIHJ1bGUgc2V0LCByZXR1cm4gYSBOdW1lcmF0b3JTdWJzdGl0dXRpb24KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChydWxlU2V0LmlzRnJhY3Rpb25TZXQoKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE51bWVyYXRvclN1YnN0aXR1dGlvbihwb3MsIHJ1bGUuZ2V0QmFzZVZhbHVlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXIuZ2V0RGVmYXVsdFJ1bGVTZXQoKSwgZm9ybWF0dGVyLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlLCByZXR1cm4gYSBNdWx0aXBsaWVyU3Vic3RpdHV0aW9uCisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTXVsdGlwbGllclN1YnN0aXR1dGlvbihwb3MsIHJ1bGUuZ2V0RGl2aXNvcigpLCBydWxlU2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVyLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBpZiB0aGUgZGVzY3JpcHRpb24gYmVnaW5zIHdpdGggJz4nLi4uCisgICAgICAgICAgICBjYXNlICc+JzoKKyAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcnVsZSBpcyBhIG5lZ2F0aXZlLW51bWJlciBydWxlLCByZXR1cm4KKyAgICAgICAgICAgICAgICAvLyBhbiBBYnNvbHV0ZVZhbHVlU3Vic3RpdHV0aW9uCisgICAgICAgICAgICAgICAgaWYgKHJ1bGUuZ2V0QmFzZVZhbHVlKCkgPT0gTkZSdWxlLk5FR0FUSVZFX05VTUJFUl9SVUxFKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQWJzb2x1dGVWYWx1ZVN1YnN0aXR1dGlvbihwb3MsIHJ1bGVTZXQsIGZvcm1hdHRlciwgZGVzY3JpcHRpb24pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBydWxlIGlzIGEgZnJhY3Rpb24gcnVsZSwgcmV0dXJuIGEKKyAgICAgICAgICAgICAgICAvLyBGcmFjdGlvbmFsUGFydFN1YnN0aXR1dGlvbgorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJ1bGUuZ2V0QmFzZVZhbHVlKCkgPT0gTkZSdWxlLklNUFJPUEVSX0ZSQUNUSU9OX1JVTEUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBydWxlLmdldEJhc2VWYWx1ZSgpID09IE5GUnVsZS5QUk9QRVJfRlJBQ1RJT05fUlVMRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHJ1bGUuZ2V0QmFzZVZhbHVlKCkgPT0gTkZSdWxlLk1BU1RFUl9SVUxFKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRnJhY3Rpb25hbFBhcnRTdWJzdGl0dXRpb24ocG9zLCBydWxlU2V0LCBmb3JtYXR0ZXIsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBpZiB0aGUgcnVsZSBzZXQgb3duaW5nIHRoZSBydWxlIGlzIGEgZnJhY3Rpb24gcnVsZSBzZXQsCisgICAgICAgICAgICAgICAgLy8gdGhyb3cgYW4gZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgZWxzZSBpZiAocnVsZVNldC5pc0ZyYWN0aW9uU2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiPj4gbm90IGFsbG93ZWQgaW4gZnJhY3Rpb24gcnVsZSBzZXQiKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UsIHJldHVybiBhIE1vZHVsdXNTdWJzdGl0dXRpb24KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBNb2R1bHVzU3Vic3RpdHV0aW9uKHBvcywgcnVsZS5nZXREaXZpc29yKCksIHJ1bGVQcmVkZWNlc3NvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGVTZXQsIGZvcm1hdHRlciwgZGVzY3JpcHRpb24pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gaWYgdGhlIGRlc2NyaXB0aW9uIGJlZ2lucyB3aXRoICc9JywgYWx3YXlzIHJldHVybiBhCisgICAgICAgICAgICAvLyBTYW1lVmFsdWVTdWJzdGl0dXRpb24KKyAgICAgICAgICAgIGNhc2UgJz0nOgorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2FtZVZhbHVlU3Vic3RpdHV0aW9uKHBvcywgcnVsZVNldCwgZm9ybWF0dGVyLCBkZXNjcmlwdGlvbik7CisKKyAgICAgICAgICAgIC8vIGFuZCBpZiBpdCdzIGFueXRoaW5nIGVsc2UsIHRocm93IGFuIGV4Y2VwdGlvbgorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIHN1YnN0aXR1dGlvbiBjaGFyYWN0ZXIiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEJhc2UgY29uc3RydWN0b3IgZm9yIHN1YnN0aXR1dGlvbnMuICBUaGlzIGNvbnN0cnVjdG9yIHNldHMgdXAgdGhlCisgICAgICogZmllbGRzIHdoaWNoIGFyZSBjb21tb24gdG8gYWxsIHN1YnN0aXR1dGlvbnMuCisgICAgICogQHBhcmFtIHBvcyBUaGUgc3Vic3RpdHV0aW9uJ3MgcG9zaXRpb24gaW4gdGhlIG93bmluZyBydWxlJ3MgcnVsZQorICAgICAqIHRleHQKKyAgICAgKiBAcGFyYW0gcnVsZVNldCBUaGUgcnVsZSBzZXQgdGhhdCBvd25zIHRoaXMgc3Vic3RpdHV0aW9uCisgICAgICogQHBhcmFtIGZvcm1hdHRlciBUaGUgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IHRoYXQgb3ducyB0aGlzIHN1YnN0aXR1dGlvbgorICAgICAqIEBwYXJhbSBkZXNjcmlwdGlvbiBUaGUgc3Vic3RpdHV0aW9uIGRlc2NyaXB0b3IgKGkuZS4sIHRoZSB0ZXh0CisgICAgICogaW5zaWRlIHRoZSB0b2tlbiBjaGFyYWN0ZXJzKQorICAgICAqLworICAgIE5GU3Vic3RpdHV0aW9uKGludCBwb3MsCisgICAgICAgICAgICAgICAgICAgTkZSdWxlU2V0IHJ1bGVTZXQsCisgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlciwKKyAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgc3Vic3RpdHV0aW9uJ3MgcG9zaXRpb24gaW4gaXRzIHBhcmVudCBydWxlCisgICAgICAgIHRoaXMucG9zID0gcG9zOworCisgICAgICAgIC8vIHRoZSBkZXNjcmlwdGlvbiBzaG91bGQgYmVnaW4gYW5kIGVuZCB3aXRoIHRoZSBzYW1lIGNoYXJhY3Rlci4KKyAgICAgICAgLy8gSWYgaXQgZG9lc24ndCB0aGF0J3MgYSBzeW50YXggZXJyb3IuICBPdGhlcndpc2UsCisgICAgICAgIC8vIG1ha2VTdWJzdGl0dXRpb24oKSB3YXMgdGhlIG9ubHkgdGhpbmcgdGhhdCBuZWVkZWQgdG8ga25vdworICAgICAgICAvLyBhYm91dCB0aGVzZSBjaGFyYWN0ZXJzLCBzbyBzdHJpcCB0aGVtIG9mZgorICAgICAgICBpZiAoZGVzY3JpcHRpb24ubGVuZ3RoKCkgPj0gMiAmJiBkZXNjcmlwdGlvbi5jaGFyQXQoMCkgPT0gZGVzY3JpcHRpb24uY2hhckF0KAorICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24ubGVuZ3RoKCkgLSAxKSkgeworICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbi5zdWJzdHJpbmcoMSwgZGVzY3JpcHRpb24ubGVuZ3RoKCkgLSAxKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChkZXNjcmlwdGlvbi5sZW5ndGgoKSAhPSAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIHN1YnN0aXR1dGlvbiBzeW50YXgiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGlmIHRoZSBkZXNjcmlwdGlvbiB3YXMganVzdCB0d28gcGFpcmVkIHRva2VuIGNoYXJhY3RlcnMKKyAgICAgICAgLy8gKGkuZS4sICI8PCIgb3IgIj4+IiksIGl0IHVzZXMgdGhlIHJ1bGUgc2V0IGl0IGJlbG9uZ3MgdG8gdG8KKyAgICAgICAgLy8gZm9ybWF0IGl0cyByZXN1bHQKKyAgICAgICAgaWYgKGRlc2NyaXB0aW9uLmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgIHRoaXMucnVsZVNldCA9IHJ1bGVTZXQ7CisgICAgICAgIH0KKworICAgICAgICAvLyBpZiB0aGUgZGVzY3JpcHRpb24gY29udGFpbnMgYSBydWxlIHNldCBuYW1lLCB0aGF0J3MgdGhlIHJ1bGUKKyAgICAgICAgLy8gc2V0IHdlIHVzZSB0byBmb3JtYXQgdGhlIHJlc3VsdDogZ2V0IGEgcmVmZXJlbmNlIHRvIHRoZQorICAgICAgICAvLyBuYW1lcyBydWxlIHNldAorICAgICAgICBlbHNlIGlmIChkZXNjcmlwdGlvbi5jaGFyQXQoMCkgPT0gJyUnKSB7CisgICAgICAgICAgICB0aGlzLnJ1bGVTZXQgPSBmb3JtYXR0ZXIuZmluZFJ1bGVTZXQoZGVzY3JpcHRpb24pOworICAgICAgICB9CisKKyAgICAgICAgLy8gaWYgdGhlIGRlc2NyaXB0aW9uIGJlZ2lucyB3aXRoIDAgb3IgIywgdHJlYXQgaXQgYXMgYQorICAgICAgICAvLyBEZWNpbWFsRm9ybWF0IHBhdHRlcm4sIGFuZCBpbml0aWFsaXplIGEgRGVjaW1hbEZvcm1hdCB3aXRoCisgICAgICAgIC8vIHRoYXQgcGF0dGVybiAodGhlbiBzZXQgaXQgdG8gdXNlIHRoZSBEZWNpbWFsRm9ybWF0U3ltYm9scworICAgICAgICAvLyBiZWxvbmdpbmcgdG8gb3VyIGZvcm1hdHRlcikKKyAgICAgICAgZWxzZSBpZiAoZGVzY3JpcHRpb24uY2hhckF0KDApID09ICcjJyB8fCBkZXNjcmlwdGlvbi5jaGFyQXQoMCkgPT0gJzAnKSB7CisgICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdCA9IG5ldyBEZWNpbWFsRm9ybWF0KGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIHRoaXMubnVtYmVyRm9ybWF0LnNldERlY2ltYWxGb3JtYXRTeW1ib2xzKGZvcm1hdHRlci5nZXREZWNpbWFsRm9ybWF0U3ltYm9scygpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGlmIHRoZSBkZXNjcmlwdGlvbiBpcyAiPj4+IiwgdGhpcyBzdWJzdGl0dXRpb24gYnlwYXNzZXMgdGhlCisgICAgICAgIC8vIHVzdWFsIHJ1bGUtc2VhcmNoIHByb2Nlc3MgYW5kIGFsd2F5cyB1c2VzIHRoZSBydWxlIHRoYXQgcHJlY2VkZXMKKyAgICAgICAgLy8gaXQgaW4gaXRzIG93biBydWxlIHNldCdzIHJ1bGUgbGlzdCAodGhpcyBpcyB1c2VkIGZvciBwbGFjZS12YWx1ZQorICAgICAgICAvLyBub3RhdGlvbnM6IGZvcm1hdHMgd2hlcmUgeW91IHdhbnQgdG8gc2VlIGEgcGFydGljdWxhciBwYXJ0IG9mCisgICAgICAgIC8vIGEgbnVtYmVyIGV2ZW4gd2hlbiBpdCdzIDApCisgICAgICAgIGVsc2UgaWYgKGRlc2NyaXB0aW9uLmNoYXJBdCgwKSA9PSAnPicpIHsKKyAgICAgICAgICAgIHRoaXMucnVsZVNldCA9IG51bGw7CisgICAgICAgICAgICB0aGlzLm51bWJlckZvcm1hdCA9IG51bGw7CisgICAgICAgIH0KKworICAgICAgICAvLyBhbmQgb2YgdGhlIGRlc2NyaXB0aW9uIGlzIG5vbmUgb2YgdGhlc2UgdGhpbmdzLCBpdCdzIGEgc3ludGF4IGVycm9yCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCBzdWJzdGl0dXRpb24gc3ludGF4Iik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQncyB0aGUgc3Vic3RpdHV0aW9uJ3MgZGl2aXNvci4gIFVzZWQgYnkgTkZSdWxlLnNldEJhc2VWYWx1ZSgpLgorICAgICAqIEEgbm8tb3AgZm9yIGFsbCBzdWJzdGl0dXRpb25zIGV4Y2VwdCBtdWx0aXBsaWVyIGFuZCBtb2R1bHVzCisgICAgICogc3Vic3RpdHV0aW9ucy4KKyAgICAgKiBAcGFyYW0gcmFkaXggVGhlIHJhZGl4IG9mIHRoZSBkaXZpc29yCisgICAgICogQHBhcmFtIGV4cG9uZW50IFRoZSBleHBvbmVudCBvZiB0aGUgZGl2aXNvcgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldERpdmlzb3IoaW50IHJhZGl4LCBpbnQgZXhwb25lbnQpIHsKKyAgICAgICAgLy8gYSBuby1vcCBmb3IgYWxsIHN1YnN0aXR1dGlvbnMgZXhjZXB0IG11bHRpcGxpZXIgYW5kIG1vZHVsdXMgc3Vic3RpdHV0aW9ucworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBib2lsZXJwbGF0ZQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIENvbXBhcmVzIHR3byBzdWJzdGl0dXRpb25zIGZvciBlcXVhbGl0eQorICAgICAqIEBwYXJhbSBUaGUgc3Vic3RpdHV0aW9uIHRvIGNvbXBhcmUgdGhpcyBvbmUgdG8KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHR3byBzdWJzdGl0dXRpb25zIGFyZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgdGhhdCkgeworICAgICAgICAvLyBjb21wYXJlIGNsYXNzIGFuZCBhbGwgb2YgdGhlIGZpZWxkcyBhbGwgc3Vic3RpdHV0aW9ucyBoYXZlCisgICAgICAgIC8vIGluIGNvbW1vbgorICAgICAgICBpZiAodGhpcy5nZXRDbGFzcygpID09IHRoYXQuZ2V0Q2xhc3MoKSkgeworICAgICAgICAgICAgTkZTdWJzdGl0dXRpb24gdGhhdDIgPSAoTkZTdWJzdGl0dXRpb24pdGhhdDsKKworICAgICAgICAgICAgcmV0dXJuIHBvcyA9PSB0aGF0Mi5wb3MKKyAgICAgICAgICAgICAgICAgICAmJiBydWxlU2V0ID09IHRoYXQyLnJ1bGVTZXQKKyAgICAgICAgICAgICAgICAgICAmJiBudW1iZXJGb3JtYXQuZXF1YWxzKHRoYXQyLm51bWJlckZvcm1hdCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiB0aGUgc3Vic3RpdHV0aW9uCisgICAgICogQHJldHVybiBBIHRleHR1YWwgZGVzY3JpcHRpb24gb2YgdGhlIHN1YnN0aXR1dGlvbi4gIFRoaXMgbWlnaHQKKyAgICAgKiBub3QgYmUgaWRlbnRpY2FsIHRvIHRoZSBkZXNjcmlwdGlvbiBpdCB3YXMgY3JlYXRlZCBmcm9tLCBidXQKKyAgICAgKiBpdCdsbCBwcm9kdWNlIHRoZSBzYW1lIHJlc3VsdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAvLyB1c2UgdG9rZW5DaGFyKCkgdG8gZ2V0IHRoZSBjaGFyYWN0ZXIgYXQgdGhlIGJlZ2lubmluZyBhbmQKKyAgICAgICAgLy8gZW5kIG9mIHRoZSBzdWJzdGl0dXRpbiB0b2tlbi4gIEluIGJldHdlZW4gdGhlbSB3aWxsIGdvCisgICAgICAgIC8vIGVpdGhlciB0aGUgbmFtZSBvZiB0aGUgcnVsZSBzZXQgaXQgdXNlcywgb3IgdGhlIHBhdHRlcm4gb2YKKyAgICAgICAgLy8gdGhlIERlY2ltYWxGb3JtYXQgaXQgdXNlcworICAgICAgICBpZiAocnVsZVNldCAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gdG9rZW5DaGFyKCkgKyBydWxlU2V0LmdldE5hbWUoKSArIHRva2VuQ2hhcigpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHRva2VuQ2hhcigpICsgbnVtYmVyRm9ybWF0LnRvUGF0dGVybigpICsgdG9rZW5DaGFyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gZm9ybWF0dGluZworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFBlcmZvcm1zIGEgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbiBvbiB0aGUgbnVtYmVyLCBmb3JtYXRzIGl0IHVzaW5nCisgICAgICogZWl0aGVyIHJ1bGVTZXQgb3IgZGVjaW1hbEZvcm1hdCwgYW5kIGluc2VydHMgdGhlIHJlc3VsdCBpbnRvCisgICAgICogdG9JbnNlcnRJbnRvLgorICAgICAqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQuCisgICAgICogQHBhcmFtIHRvSW5zZXJ0SW50byBUaGUgc3RyaW5nIHdlIGluc2VydCB0aGUgcmVzdWx0IGludG8KKyAgICAgKiBAcGFyYW0gcG9zIFRoZSBwb3NpdGlvbiBpbiB0b0luc2VydEludG8gd2hlcmUgdGhlIG93bmluZyBydWxlJ3MKKyAgICAgKiBydWxlIHRleHQgYmVnaW5zICh0aGlzIHZhbHVlIGlzIGFkZGVkIHRvIHRoaXMgc3Vic3RpdHV0aW9uJ3MKKyAgICAgKiBwb3NpdGlvbiB0byBkZXRlcm1pbmUgZXhhY3RseSB3aGVyZSB0byBpbnNlcnQgdGhlIG5ldyB0ZXh0KQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGRvU3Vic3RpdHV0aW9uKGxvbmcgbnVtYmVyLCBTdHJpbmdCdWZmZXIgdG9JbnNlcnRJbnRvLCBpbnQgcG9zKSB7CisgICAgICAgIGlmIChydWxlU2V0ICE9IG51bGwpIHsKKyAgICAgICAgICAgLy8gcGVyZm9ybSBhIHRyYW5zZm9ybWF0aW9uIG9uIHRoZSBudW1iZXIgdGhhdCBpcyBkZXBlbmRlbnQKKyAgICAgICAgICAgLy8gb24gdGhlIHR5cGUgb2Ygc3Vic3RpdHV0aW9uIHRoaXMgaXMsIHRoZW4ganVzdCBjYWxsIGl0cworICAgICAgICAgICAvLyBydWxlIHNldCdzIGZvcm1hdCgpIG1ldGhvZCB0byBmb3JtYXQgdGhlIHJlc3VsdAorICAgICAgICAgICBsb25nIG51bWJlclRvRm9ybWF0ID0gdHJhbnNmb3JtTnVtYmVyKG51bWJlcik7CisKKyAgICAgICAgICAgIHJ1bGVTZXQuZm9ybWF0KG51bWJlclRvRm9ybWF0LCB0b0luc2VydEludG8sIHBvcyArIHRoaXMucG9zKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIG9yIHBlcmZvcm0gdGhlIHRyYW5zZm9ybWF0aW9uIG9uIHRoZSBudW1iZXIgKHByZXNlcnZpbmcKKyAgICAgICAgICAgIC8vIHRoZSByZXN1bHQncyBmcmFjdGlvbmFsIHBhcnQgaWYgdGhlIGZvcm1hdHRlciBpdCBzZXQKKyAgICAgICAgICAgIC8vIHRvIHNob3cgaXQpLCB0aGVuIHVzZSB0aGF0IGZvcm1hdHRlcidzIGZvcm1hdCgpIG1ldGhvZAorICAgICAgICAgICAgLy8gdG8gZm9ybWF0IHRoZSByZXN1bHQKKyAgICAgICAgICAgIGRvdWJsZSBudW1iZXJUb0Zvcm1hdCA9IHRyYW5zZm9ybU51bWJlcigoZG91YmxlKW51bWJlcik7CisgICAgICAgICAgICBpZiAobnVtYmVyRm9ybWF0LmdldE1heGltdW1GcmFjdGlvbkRpZ2l0cygpID09IDApIHsKKyAgICAgICAgICAgICAgICBudW1iZXJUb0Zvcm1hdCA9IE1hdGguZmxvb3IobnVtYmVyVG9Gb3JtYXQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0b0luc2VydEludG8uaW5zZXJ0KHBvcyArIHRoaXMucG9zLCBudW1iZXJGb3JtYXQuZm9ybWF0KG51bWJlclRvRm9ybWF0KSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQZXJmb3JtcyBhIG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gb24gdGhlIG51bWJlciwgZm9ybWF0cyBpdCB1c2luZworICAgICAqIGVpdGhlciBydWxlU2V0IG9yIGRlY2ltYWxGb3JtYXQsIGFuZCBpbnNlcnRzIHRoZSByZXN1bHQgaW50bworICAgICAqIHRvSW5zZXJ0SW50by4KKyAgICAgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkLgorICAgICAqIEBwYXJhbSB0b0luc2VydEludG8gVGhlIHN0cmluZyB3ZSBpbnNlcnQgdGhlIHJlc3VsdCBpbnRvCisgICAgICogQHBhcmFtIHBvcyBUaGUgcG9zaXRpb24gaW4gdG9JbnNlcnRJbnRvIHdoZXJlIHRoZSBvd25pbmcgcnVsZSdzCisgICAgICogcnVsZSB0ZXh0IGJlZ2lucyAodGhpcyB2YWx1ZSBpcyBhZGRlZCB0byB0aGlzIHN1YnN0aXR1dGlvbidzCisgICAgICogcG9zaXRpb24gdG8gZGV0ZXJtaW5lIGV4YWN0bHkgd2hlcmUgdG8gaW5zZXJ0IHRoZSBuZXcgdGV4dCkKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBkb1N1YnN0aXR1dGlvbihkb3VibGUgbnVtYmVyLCBTdHJpbmdCdWZmZXIgdG9JbnNlcnRJbnRvLCBpbnQgcG9zKSB7CisgICAgICAgIC8vIHBlcmZvcm0gYSB0cmFuc2Zvcm1hdGlvbiBvbiB0aGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZCB0aGF0CisgICAgICAgIC8vIGlzIGRlcGVuZGVudCBvbiB0aGUgdHlwZSBvZiBzdWJzdGl0dXRpb24gdGhpcyBpcworICAgICAgICBkb3VibGUgbnVtYmVyVG9Gb3JtYXQgPSB0cmFuc2Zvcm1OdW1iZXIobnVtYmVyKTsKKworICAgICAgICAvLyBpZiB0aGUgcmVzdWx0IGlzIGFuIGludGVnZXIsIGZyb20gaGVyZSBvbiBvdXQgd2Ugd29yayBpbiBpbnRlZ2VyCisgICAgICAgIC8vIHNwYWNlIChzYXZpbmcgdGltZSBhbmQgbWVtb3J5IGFuZCBwcmVzZXJ2aW5nIGFjY3VyYWN5KQorICAgICAgICBpZiAobnVtYmVyVG9Gb3JtYXQgPT0gTWF0aC5mbG9vcihudW1iZXJUb0Zvcm1hdCkgJiYgcnVsZVNldCAhPSBudWxsKSB7CisgICAgICAgICAgICBydWxlU2V0LmZvcm1hdCgobG9uZyludW1iZXJUb0Zvcm1hdCwgdG9JbnNlcnRJbnRvLCBwb3MgKyB0aGlzLnBvcyk7CisKKyAgICAgICAgLy8gaWYgdGhlIHJlc3VsdCBpc24ndCBhbiBpbnRlZ2VyLCB0aGVuIGNhbGwgZWl0aGVyIG91ciBydWxlIHNldCdzCisgICAgICAgIC8vIGZvcm1hdCgpIG1ldGhvZCBvciBvdXIgRGVjaW1hbEZvcm1hdCdzIGZvcm1hdCgpIG1ldGhvZCB0bworICAgICAgICAvLyBmb3JtYXQgdGhlIHJlc3VsdAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHJ1bGVTZXQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJ1bGVTZXQuZm9ybWF0KG51bWJlclRvRm9ybWF0LCB0b0luc2VydEludG8sIHBvcyArIHRoaXMucG9zKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdG9JbnNlcnRJbnRvLmluc2VydChwb3MgKyB0aGlzLnBvcywgbnVtYmVyRm9ybWF0LmZvcm1hdChudW1iZXJUb0Zvcm1hdCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogU3ViY2xhc3NlcyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIHRvIHBlcmZvcm0gc29tZSBraW5kIG9mCisgICAgICogbWF0aGVtYXRpY2FsIG9wZXJhdGlvbiBvbiB0aGUgbnVtYmVyLiAgVGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbgorICAgICAqIGlzIGZvcm1hdHRlZCB1c2luZyB0aGUgcnVsZSBzZXQgb3IgRGVjaW1hbEZvcm1hdCB0aGF0IHRoaXMKKyAgICAgKiBzdWJzdGl0dXRpb24gcmVmZXJzIHRvLCBhbmQgdGhlIHJlc3VsdCBpcyBpbnNlcnRlZCBpbnRvIHRoZSByZXN1bHQKKyAgICAgKiBzdHJpbmcuCisgICAgICogQHBhcmFtIFRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkCisgICAgICogQHJldHVybiBUaGUgcmVzdWx0IG9mIHBlcmZvcm1pbmcgdGhlIG9wcmVyYXRpb24gb24gdGhlIG51bWJlcgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBsb25nIHRyYW5zZm9ybU51bWJlcihsb25nIG51bWJlcik7CisKKyAgICAvKioKKyAgICAgKiBTdWJjbGFzc2VzIG92ZXJyaWRlIHRoaXMgZnVuY3Rpb24gdG8gcGVyZm9ybSBzb21lIGtpbmQgb2YKKyAgICAgKiBtYXRoZW1hdGljYWwgb3BlcmF0aW9uIG9uIHRoZSBudW1iZXIuICBUaGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uCisgICAgICogaXMgZm9ybWF0dGVkIHVzaW5nIHRoZSBydWxlIHNldCBvciBEZWNpbWFsRm9ybWF0IHRoYXQgdGhpcworICAgICAqIHN1YnN0aXR1dGlvbiByZWZlcnMgdG8sIGFuZCB0aGUgcmVzdWx0IGlzIGluc2VydGVkIGludG8gdGhlIHJlc3VsdAorICAgICAqIHN0cmluZy4KKyAgICAgKiBAcGFyYW0gVGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQKKyAgICAgKiBAcmV0dXJuIFRoZSByZXN1bHQgb2YgcGVyZm9ybWluZyB0aGUgb3ByZXJhdGlvbiBvbiB0aGUgbnVtYmVyCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IGRvdWJsZSB0cmFuc2Zvcm1OdW1iZXIoZG91YmxlIG51bWJlcik7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gcGFyc2luZworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFBhcnNlcyBhIHN0cmluZyB1c2luZyB0aGUgcnVsZSBzZXQgb3IgRGVjaW1hbEZvcm1hdCBiZWxvbmdpbmcKKyAgICAgKiB0byB0aGlzIHN1YnN0aXR1dGlvbi4gIElmIHRoZXJlJ3MgYSBtYXRjaCwgYSBtYXRoZW1hdGljYWwKKyAgICAgKiBvcGVyYXRpb24gKHRoZSBpbnZlcnNlIG9mIHRoZSBvbmUgdXNlZCBpbiBmb3JtYXR0aW5nKSBpcworICAgICAqIHBlcmZvcm1lZCBvbiB0aGUgcmVzdWx0IG9mIHRoZSBwYXJzZSBhbmQgdGhlIHZhbHVlIHBhc3NlZCBpbgorICAgICAqIGFuZCByZXR1cm5lZCBhcyB0aGUgcmVzdWx0LiAgVGhlIHBhcnNlIHBvc2l0aW9uIGlzIHVwZGF0ZWQgdG8KKyAgICAgKiBwb2ludCB0byB0aGUgZmlyc3QgdW5tYXRjaGVkIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLgorICAgICAqIEBwYXJhbSB0ZXh0IFRoZSBzdHJpbmcgdG8gcGFyc2UKKyAgICAgKiBAcGFyYW0gcGFyc2VQb3NpdGlvbiBPbiBlbnRyeSwgaWdub3JlZCwgYnV0IGFzc3VtZWQgdG8gYmUgMC4KKyAgICAgKiBPbiBleGl0LCB0aGlzIGlzIHVwZGF0ZWQgdG8gcG9pbnQgdG8gdGhlIGZpcnN0IHVubWF0Y2hlZAorICAgICAqIGNoYXJhY3RlciAob3IgMCBpZiB0aGUgc3Vic3RpdHV0aW9uIGRpZG4ndCBtYXRjaCkKKyAgICAgKiBAcGFyYW0gYmFzZVZhbHVlIEEgcGFydGlhbCBwYXJzZSByZXN1bHQgdGhhdCBzaG91bGQgYmUKKyAgICAgKiBjb21iaW5lZCB3aXRoIHRoZSByZXN1bHQgb2YgdGhpcyBwYXJzZQorICAgICAqIEBwYXJhbSB1cHBlckJvdW5kIFdoZW4gc2VhcmNoaW5nIHRoZSBydWxlIHNldCBmb3IgYSBydWxlCisgICAgICogbWF0Y2hpbmcgdGhlIHN0cmluZyBwYXNzZWQgaW4sIG9ubHkgcnVsZXMgd2l0aCBiYXNlIHZhbHVlcworICAgICAqIGxvd2VyIHRoYW4gdGhpcyBhcmUgY29uc2lkZXJlZAorICAgICAqIEBwYXJhbSBsZW5pZW50UGFyc2UgSWYgdHJ1ZSBhbmQgbWF0Y2hpbmcgYWdhaW5zdCBydWxlcyBmYWlscywKKyAgICAgKiB0aGUgc3Vic3RpdHV0aW9uIHdpbGwgYWxzbyB0cnkgbWF0Y2hpbmcgdGhlIHRleHQgYWdhaW5zdAorICAgICAqIG51bWVyYWxzIHVzaW5nIGEgZGVmYXVsdC1jb3N0cnVjdGVkIE51bWJlckZvcm1hdC4gIElmIGZhbHNlLAorICAgICAqIG5vIGV4dHJhIHdvcmsgaXMgZG9uZS4gIChUaGlzIHZhbHVlIGlzIGZhbHNlIHdoZW5ldmVyIHRoZQorICAgICAqIGZvcm1hdHRlciBpc24ndCBpbiBsZW5pZW50LXBhcnNlIG1vZGUsIGJ1dCBpcyBhbHNvIGZhbHNlCisgICAgICogdW5kZXIgc29tZSBjb25kaXRpb25zIGV2ZW4gd2hlbiB0aGUgZm9ybWF0dGVyIF9pc18gaW4KKyAgICAgKiBsZW5pZW50LXBhcnNlIG1vZGUuKQorICAgICAqIEByZXR1cm4gSWYgdGhlcmUncyBhIG1hdGNoLCB0aGlzIGlzIHRoZSByZXN1bHQgb2YgY29tcG9zaW5nCisgICAgICogYmFzZVZhbHVlIHdpdGggd2hhdGV2ZXIgd2FzIHJldHVybmVkIGZyb20gbWF0Y2hpbmcgdGhlCisgICAgICogY2hhcmFjdGVycy4gIFRoaXMgd2lsbCBiZSBlaXRoZXIgYSBMb25nIG9yIGEgRG91YmxlLiAgSWYgdGhlcmUncworICAgICAqIG5vIG1hdGNoIHRoaXMgaXMgbmV3IExvbmcoMCkgKG5vdCBudWxsKSwgYW5kIHBhcnNlUG9zaXRpb24KKyAgICAgKiBpcyBsZWZ0IHVuY2hhbmdlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgTnVtYmVyIGRvUGFyc2UoU3RyaW5nIHRleHQsIFBhcnNlUG9zaXRpb24gcGFyc2VQb3NpdGlvbiwgZG91YmxlIGJhc2VWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgZG91YmxlIHVwcGVyQm91bmQsIGJvb2xlYW4gbGVuaWVudFBhcnNlKSB7CisgICAgICAgIE51bWJlciB0ZW1wUmVzdWx0OworCisgICAgICAgIC8vIGZpZ3VyZSBvdXQgdGhlIGhpZ2hlc3QgYmFzZSB2YWx1ZSBhIHJ1bGUgY2FuIGhhdmUgYW5kIG1hdGNoCisgICAgICAgIC8vIHRoZSB0ZXh0IGJlaW5nIHBhcnNlZCAodGhpcyB2YXJpZXMgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIG9mCisgICAgICAgIC8vIHN1YnN0aXR1dGlvbnM6IG11bHRpcGxpZXIsIG1vZHVsdXMsIGFuZCBudW1lcmF0b3Igc3Vic3RpdHV0aW9ucworICAgICAgICAvLyByZXN0cmljdCB0aGUgc2VhcmNoIHRvIHJ1bGVzIHdpdGggYmFzZSB2YWx1ZXMgbG93ZXIgdGhhbiB0aGVpcgorICAgICAgICAvLyBvd247IHNhbWUtdmFsdWUgc3Vic3RpdHV0aW9ucyBsZWF2ZSB0aGUgdXBwZXIgYm91bmQgd2hlcmV2ZXIKKyAgICAgICAgLy8gaXQgd2FzLCBhbmQgdGhlIG90aGVycyBhbGxvdyBhbnkgcnVsZSB0byBtYXRjaAorICAgICAgICB1cHBlckJvdW5kID0gY2FsY1VwcGVyQm91bmQodXBwZXJCb3VuZCk7CisKKyAgICAgICAgLy8gdXNlIG91ciBydWxlIHNldCB0byBwYXJzZSB0aGUgdGV4dC4gIElmIHRoYXQgZmFpbHMgYW5kCisgICAgICAgIC8vIGxlbmllbnQgcGFyc2luZyBpcyBlbmFibGVkICh0aGlzIGlzIGFsd2F5cyBmYWxzZSBpZiB0aGUKKyAgICAgICAgLy8gZm9ybWF0dGVyJ3MgbGVuaWVudC1wYXJzaW5nIG1vZGUgaXMgb2ZmLCBidXQgaXQgbWF5IGFsc28KKyAgICAgICAgLy8gYmUgZmFsc2UgZXZlbiB3aGVuIHRoZSBmb3JtYXR0ZXIncyBsZW5pZW50LXBhcnNlIG1vZGUgaXMKKyAgICAgICAgLy8gb24pLCB0aGVuIGFsc28gdHJ5IHBhcnNpbmcgdGhlIHRleHQgdXNpbmcgYSBkZWZhdWx0LQorICAgICAgICAvLyBjb25zdHJ1Y3RlZCBOdW1iZXJGb3JtYXQKKyAgICAgICAgaWYgKHJ1bGVTZXQgIT0gbnVsbCkgeworICAgICAgICAgICAgdGVtcFJlc3VsdCA9IHJ1bGVTZXQucGFyc2UodGV4dCwgcGFyc2VQb3NpdGlvbiwgdXBwZXJCb3VuZCk7CisgICAgICAgICAgICBpZiAobGVuaWVudFBhcnNlICYmICFydWxlU2V0LmlzRnJhY3Rpb25TZXQoKSAmJiBwYXJzZVBvc2l0aW9uLmdldEluZGV4KCkgPT0gMCkgeworICAgICAgICAgICAgICAgIHRlbXBSZXN1bHQgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoKS5wYXJzZSh0ZXh0LCBwYXJzZVBvc2l0aW9uKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAvLyAuLi5vciB1c2Ugb3VyIERlY2ltYWxGb3JtYXQgdG8gcGFyc2UgdGhlIHRleHQKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRlbXBSZXN1bHQgPSBudW1iZXJGb3JtYXQucGFyc2UodGV4dCwgcGFyc2VQb3NpdGlvbik7CisgICAgICAgIH0KKworICAgICAgICAvLyBpZiB0aGUgcGFyc2Ugd2FzIHN1Y2Nlc3NmdWwsIHdlJ3ZlIGFscmVhZHkgYWR2YW5jZWQgdGhlIGNhbGxlcidzCisgICAgICAgIC8vIHBhcnNlIHBvc2l0aW9uICh0aGlzIGlzIHRoZSBvbmUgZnVuY3Rpb24gdGhhdCBkb2Vzbid0IGhhdmUgb25lCisgICAgICAgIC8vIG9mIGl0cyBvd24pLiAgRGVyaXZlIGEgcGFyc2UgcmVzdWx0IGFuZCByZXR1cm4gaXQgYXMgYSBMb25nLAorICAgICAgICAvLyBpZiBwb3NzaWJsZSwgb3IgYSBEb3VibGUKKyAgICAgICAgaWYgKHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSAhPSAwKSB7CisgICAgICAgICAgICBkb3VibGUgcmVzdWx0ID0gdGVtcFJlc3VsdC5kb3VibGVWYWx1ZSgpOworCisgICAgICAgICAgICAvLyBjb21wb3NlUnVsZVZhbHVlKCkgcHJvZHVjZXMgYSBmdWxsIHBhcnNlIHJlc3VsdCBmcm9tCisgICAgICAgICAgICAvLyB0aGUgcGFydGlhbCBwYXJzZSByZXN1bHQgcGFzc2VkIHRvIHRoaXMgZnVuY3Rpb24gZnJvbQorICAgICAgICAgICAgLy8gdGhlIGNhbGxlciAodGhpcyBpcyBlaXRoZXIgdGhlIG93bmluZyBydWxlJ3MgYmFzZSB2YWx1ZQorICAgICAgICAgICAgLy8gb3IgdGhlIHBhcnRpYWwgcmVzdWx0IG9idGFpbmVkIGZyb20gY29tcG9zaW5nIHRoZQorICAgICAgICAgICAgLy8gb3duaW5nIHJ1bGUncyBiYXNlIHZhbHVlIHdpdGggaXRzIG90aGVyIHN1YnN0aXR1dGlvbidzCisgICAgICAgICAgICAvLyBwYXJzZSByZXN1bHQpIGFuZCB0aGUgcGFydGlhbCBwYXJzZSByZXN1bHQgb2J0YWluZWQgYnkKKyAgICAgICAgICAgIC8vIG1hdGNoaW5nIHRoZSBzdWJzdGl0dXRpb24gKHdoaWNoIHdpbGwgYmUgdGhlIHNhbWUgdmFsdWUKKyAgICAgICAgICAgIC8vIHRoZSBjYWxsZXIgd291bGQgZ2V0IGJ5IHBhcnNpbmcganVzdCB0aGlzIHBhcnQgb2YgdGhlCisgICAgICAgICAgICAvLyB0ZXh0IHdpdGggUnVsZUJhc2VkTnVtYmVyRm9ybWF0LnBhcnNlKCkgKS4gIEhvdyB0aGUgdHdvCisgICAgICAgICAgICAvLyB2YWx1ZXMgYXJlIHVzZWQgdG8gZGVyaXZlIHRoZSBmdWxsIHBhcnNlIHJlc3VsdCBkZXBlbmRzCisgICAgICAgICAgICAvLyBvbiB0aGUgdHlwZXMgb2Ygc3Vic3RpdHV0aW9uczogRm9yIGEgcmVndWxhciBydWxlLCB0aGUKKyAgICAgICAgICAgIC8vIHVsdGltYXRlIHJlc3VsdCBpcyBpdHMgbXVsdGlwbGllciBzdWJzdGl0dXRpb24ncyByZXN1bHQKKyAgICAgICAgICAgIC8vIHRpbWVzIHRoZSBydWxlJ3MgZGl2aXNvciAob3IgdGhlIHJ1bGUncyBiYXNlIHZhbHVlKSBwbHVzCisgICAgICAgICAgICAvLyB0aGUgbW9kdWx1cyBzdWJzdGl0dXRpb24ncyByZXN1bHQgKHdoaWNoIHdpbGwgYWN0dWFsbHkKKyAgICAgICAgICAgIC8vIHN1cGVyc2VkZSBwYXJ0IG9mIHRoZSBydWxlJ3MgYmFzZSB2YWx1ZSkuICBGb3IgYSBuZWdhdGl2ZS0KKyAgICAgICAgICAgIC8vIG51bWJlciBydWxlLCB0aGUgcmVzdWx0IGlzIHRoZSBuZWdhdGl2ZSBvZiBpdHMgc3Vic3RpdHV0aW9uJ3MKKyAgICAgICAgICAgIC8vIHJlc3VsdC4gIEZvciBhIGZyYWN0aW9uIHJ1bGUsIGl0J3MgdGhlIHN1bSBvZiBpdHMgdHdvCisgICAgICAgICAgICAvLyBzdWJzdGl0dXRpb24gcmVzdWx0cy4gIEZvciBhIHJ1bGUgaW4gYSBmcmFjdGlvbiBydWxlIHNldCwKKyAgICAgICAgICAgIC8vIGl0J3MgdGhlIG51bWVyYXRvciBzdWJzdGl0dXRpb24ncyByZXN1bHQgZGl2aWRlZCBieQorICAgICAgICAgICAgLy8gdGhlIHJ1bGUncyBiYXNlIHZhbHVlLiAgUmVzdWx0cyBmcm9tIHNhbWUtdmFsdWUgc3Vic3RpdHV0aW9ucworICAgICAgICAgICAgLy8gcHJvcGFnYXRlIGJhY2sgdXBhcmQsIGFuZCBudWxsIHN1YnN0aXR1dGlvbnMgZG9uJ3QgYWZmZWN0CisgICAgICAgICAgICAvLyB0aGUgcmVzdWx0LgorICAgICAgICAgICAgcmVzdWx0ID0gY29tcG9zZVJ1bGVWYWx1ZShyZXN1bHQsIGJhc2VWYWx1ZSk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IChsb25nKXJlc3VsdCkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTG9uZygobG9uZylyZXN1bHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IERvdWJsZShyZXN1bHQpOworICAgICAgICAgICAgfQorCisgICAgICAgIC8vIGlmIHRoZSBwYXJzZSB3YXMgVU5zdWNjZXNzZnVsLCByZXR1cm4gMAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHRlbXBSZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZXJpdmVzIGEgbmV3IHZhbHVlIGZyb20gdGhlIHR3byB2YWx1ZXMgcGFzc2VkIGluLiAgVGhlIHR3byB2YWx1ZXMKKyAgICAgKiBhcmUgdHlwaWNhbGx5IGVpdGhlciB0aGUgYmFzZSB2YWx1ZXMgb2YgdHdvIHJ1bGVzICh0aGUgb25lIGNvbnRhaW5pbmcKKyAgICAgKiB0aGUgc3Vic3RpdHV0aW9uIGFuZCB0aGUgb25lIG1hdGNoaW5nIHRoZSBzdWJzdGl0dXRpb24pIG9yIHBhcnRpYWwKKyAgICAgKiBwYXJzZSByZXN1bHRzIGRlcml2ZWQgaW4gc29tZSBvdGhlciB3YXkuICBUaGUgb3BlcmF0aW9uIGlzIGdlbmVyYWxseQorICAgICAqIHRoZSBpbnZlcnNlIG9mIHRoZSBvcGVyYXRpb24gcGVyZm9ybWVkIGJ5IHRyYW5zZm9ybU51bWJlcigpLgorICAgICAqIEBwYXJhbSBuZXdSdWxlVmFsdWUgVGhlIHZhbHVlIHByb2R1Y2VkIGJ5IG1hdGNoaW5nIHRoaXMgc3Vic3RpdHV0aW9uCisgICAgICogQHBhcmFtIG9sZFJ1bGVWYWx1ZSBUaGUgdmFsdWUgdGhhdCB3YXMgcGFzc2VkIHRvIHRoZSBzdWJzdGl0dXRpb24KKyAgICAgKiBieSB0aGUgcnVsZSB0aGF0IG93bnMgaXQKKyAgICAgKiBAcmV0dXJuIEEgdGhpcmQgdmFsdWUgZGVyaXZlZCBmcm9tIHRoZSBvdGhlciB0d28sIHJlcHJlc2VudGluZyBhCisgICAgICogcGFydGlhbCBwYXJzZSByZXN1bHQKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgZG91YmxlIGNvbXBvc2VSdWxlVmFsdWUoZG91YmxlIG5ld1J1bGVWYWx1ZSwgZG91YmxlIG9sZFJ1bGVWYWx1ZSk7CisKKyAgICAvKioKKyAgICAgKiBDYWxjdWxhdGVzIGFuIHVwcGVyIGJvdW5kIHdoZW4gc2VhcmNoaW5nIGZvciBhIHJ1bGUgdGhhdCBtYXRjaGVzCisgICAgICogdGhpcyBzdWJzdGl0dXRpb24uICBSdWxlcyB3aXRoIGJhc2UgdmFsdWVzIGdyZWF0ZXIgdGhhbiBvciBlcXVhbAorICAgICAqIHRvIHVwcGVyQm91bmQgYXJlIG5vdCBjb25zaWRlcmVkLgorICAgICAqIEBwYXJhbSBvbGRVcHBlckJvdW5kIFRoZSBjdXJyZW50IHVwcGVyLWJvdW5kIHNldHRpbmcuICBUaGUgbmV3CisgICAgICogdXBwZXIgYm91bmQgY2FuJ3QgYmUgYW55IGhpZ2hlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgZG91YmxlIGNhbGNVcHBlckJvdW5kKGRvdWJsZSBvbGRVcHBlckJvdW5kKTsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBzaW1wbGUgYWNjZXNzb3JzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgc3Vic3RpdHV0aW9uJ3MgcG9zaXRpb24gaW4gdGhlIHJ1bGUgdGhhdCBvd25zIGl0LgorICAgICAqIEByZXR1cm4gVGhlIHN1YnN0aXR1dGlvbidzIHBvc2l0aW9uIGluIHRoZSBydWxlIHRoYXQgb3ducyBpdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgaW50IGdldFBvcygpIHsKKyAgICAgICAgcmV0dXJuIHBvczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBjaGFyYWN0ZXIgdXNlZCBpbiB0aGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZgorICAgICAqIHN1YnN0aXR1dGlvbnMgb2YgdGhpcyB0eXBlLiAgVXNlZCBieSB0b1N0cmluZygpLgorICAgICAqIEByZXR1cm4gVGhpcyBzdWJzdGl0dXRpb24ncyB0b2tlbiBjaGFyYWN0ZXIuCisgICAgICovCisgICAgYWJzdHJhY3QgY2hhciB0b2tlbkNoYXIoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGlzIGEgbnVsbCBzdWJzdGl0dXRpb24uICAoV2UgZGlkbid0IGRvIHRoaXMKKyAgICAgKiB3aXRoIGluc3RhbmNlb2YgcGFydGlhbGx5IGJlY2F1c2UgaXQgY2F1c2VzIHNvdXJjZSBmaWxlcyB0bworICAgICAqIHByb2xpZmVyYXRlIGFuZCBwYXJ0aWFsbHkgYmVjYXVzZSB3ZSBoYXZlIHRvIHBvcnQgdGhpcyB0byBDKysuKQorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIG9iamVjdCBpcyBhbiBpbnN0YW5jZSBvZiBOdWxsU3Vic3RpdHV0aW9uCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNOdWxsU3Vic3RpdHV0aW9uKCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0cnVlIGlmIHRoaXMgaXMgYSBtb2R1bHVzIHN1YnN0aXR1dGlvbi4gIChXZSBkaWRuJ3QgZG8gdGhpcworICAgICAqIHdpdGggaW5zdGFuY2VvZiBwYXJ0aWFsbHkgYmVjYXVzZSBpdCBjYXVzZXMgc291cmNlIGZpbGVzIHRvCisgICAgICogcHJvbGlmZXJhdGUgYW5kIHBhcnRpYWxseSBiZWNhdXNlIHdlIGhhdmUgdG8gcG9ydCB0aGlzIHRvIEMrKy4pCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoaXMgb2JqZWN0IGlzIGFuIGluc3RhbmNlIG9mIE1vZHVsdXNTdWJzdGl0dXRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc01vZHVsdXNTdWJzdGl0dXRpb24oKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gU2FtZVZhbHVlU3Vic3RpdHV0aW9uCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLyoqCisgKiBBIHN1YnN0aXR1dGlvbiB0aGF0IHBhc3NlcyB0aGUgdmFsdWUgcGFzc2VkIHRvIGl0IHRocm91Z2ggdW5jaGFuZ2VkLgorICogUmVwcmVzZW50ZWQgYnkgPT0gaW4gcnVsZSBkZXNjcmlwdGlvbnMuCisgKi8KK2NsYXNzIFNhbWVWYWx1ZVN1YnN0aXR1dGlvbiBleHRlbmRzIE5GU3Vic3RpdHV0aW9uIHsKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY29uc3RhbnRzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUHV0cyBhIGNvcHlyaWdodCBpbiB0aGUgLmNsYXNzIGZpbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0Tm90aWNlCisgICAgICAgID0gIkNvcHlyaWdodCBcdTAwYTkxOTk3LTE5OTggSUJNIENvcnAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY29uc3RydWN0aW9uCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIFNhbWVWYWx1ZVN1YnN0dXRpb24uICBUaGlzIGZ1bmN0aW9uIGp1c3QgdXNlcyB0aGUKKyAgICAgKiBzdXBlcmNsYXNzIGNvbnN0cnVjdG9yLCBidXQgaXQgcGVyZm9ybXMgYSBjaGVjayB0aGF0IHRoaXMKKyAgICAgKiBzdWJzdGl0dXRpb24gZG9lc24ndCBjYWxsIHRoZSBydWxlIHNldCB0aGF0IG93bnMgaXQsIHNpbmNlIHRoYXQKKyAgICAgKiB3b3VsZCBsZWFkIHRvIGluZmluaXRlIHJlY3Vyc2lvbi4KKyAgICAgKi8KKyAgICBTYW1lVmFsdWVTdWJzdGl0dXRpb24oaW50IHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTkZSdWxlU2V0IHJ1bGVTZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBkZXNjcmlwdGlvbikgeworICAgICAgICBzdXBlcihwb3MsIHJ1bGVTZXQsIGZvcm1hdHRlciwgZGVzY3JpcHRpb24pOworICAgICAgICBpZiAoZGVzY3JpcHRpb24uZXF1YWxzKCI9PSIpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCI9PSBpcyBub3QgYSBsZWdhbCB0b2tlbiIpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGZvcm1hdHRpbmcKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zICJudW1iZXIiIHVuY2hhbmdlZC4KKyAgICAgKiBAcmV0dXJuICJudW1iZXIiCisgICAgICovCisgICAgcHVibGljIGxvbmcgdHJhbnNmb3JtTnVtYmVyKGxvbmcgbnVtYmVyKSB7CisgICAgICAgIHJldHVybiBudW1iZXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyAibnVtYmVyIiB1bmNoYW5nZWQuCisgICAgICogQHJldHVybiAibnVtYmVyIgorICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgdHJhbnNmb3JtTnVtYmVyKGRvdWJsZSBudW1iZXIpIHsKKyAgICAgICAgcmV0dXJuIG51bWJlcjsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gcGFyc2luZworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgbmV3UnVsZVZhbHVlIGFuZCBpZ25vcmVzIG9sZFJ1bGVWYWx1ZS4gKFRoZSB2YWx1ZSB3ZSBnb3QKKyAgICAgKiBtYXRjaGluZyB0aGUgc3Vic3RpdHV0aW9uIHN1cGVyc2VkZXMgdGhlIHZhbHVlIG9mIHRoZSBydWxlCisgICAgICogdGhhdCBvd25zIHRoZSBzdWJzdGl0dXRpb24uKQorICAgICAqIEBwYXJhbSBuZXdSdWxlVmFsdWUgVGhlIHZhbHVlIHJlc3VsdGluZyBmcm9tIG1hdGNoaW5nIHRoZSBzdWJzdGl0dWlvbgorICAgICAqIEBwYXJhbSBvbGRSdWxlVmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBydWxlIGNvbnRhaW5pbmcgdGhlCisgICAgICogc3Vic3RpdHV0aW9uLgorICAgICAqIEByZXR1cm4gbmV3UnVsZVZhbHVlCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSBjb21wb3NlUnVsZVZhbHVlKGRvdWJsZSBuZXdSdWxlVmFsdWUsIGRvdWJsZSBvbGRSdWxlVmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIG5ld1J1bGVWYWx1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTYW1lVmFsdWVTdWJzdGl0dXRpb24gZG9lc24ndCBjaGFuZ2UgdGhlIHVwcGVyIGJvdW5kLgorICAgICAqIEBwYXJhbSBvbGRVcHBlckJvdW5kIFRoZSBjdXJyZW50IHVwcGVyIGJvdW5kLgorICAgICAqIEByZXR1cm4gb2xkVXBwZXJCb3VuZAorICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgY2FsY1VwcGVyQm91bmQoZG91YmxlIG9sZFVwcGVyQm91bmQpIHsKKyAgICAgICAgcmV0dXJuIG9sZFVwcGVyQm91bmQ7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIHNpbXBsZSBhY2Nlc3NvcgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFRoZSB0b2tlbiBjaGFyYWN0ZXIgZm9yIGEgU2FtZVZhbHVlU3Vic3RpdHV0aW9uIGlzID0uCisgICAgICogQHJldHVybiAnPScKKyAgICAgKi8KKyAgICBjaGFyIHRva2VuQ2hhcigpIHsKKyAgICAgICAgcmV0dXJuICc9JzsKKyAgICB9Cit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gTXVsdGlwbGllclN1YnN0aXR1dGlvbgorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy8qKgorICogQSBzdWJzdGl0dXRpb24gdGhhdCBkaXZpZGVzIHRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkIGJ5IHRoZSBydWxlJ3MKKyAqIGRpdmlzb3IgYW5kIGZvcm1hdHMgdGhlIHF1b3RpZW50LiAgUmVwcmVzZW50ZWQgYnkgJmx0OyZsdDsgaW4gbm9ybWFsCisgKiBydWxlcy4KKyAqLworY2xhc3MgTXVsdGlwbGllclN1YnN0aXR1dGlvbiBleHRlbmRzIE5GU3Vic3RpdHV0aW9uIHsKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY29uc3RhbnRzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUHV0cyBhIGNvcHlyaWdodCBpbiB0aGUgLmNsYXNzIGZpbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0Tm90aWNlCisgICAgICAgID0gIkNvcHlyaWdodCBcdTAwYTkxOTk3LTE5OTggSUJNIENvcnAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gZGF0YSBtZW1iZXJzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogVGhlIGRpdmlzb3Igb2YgdGhlIHJ1bGUgdGhhdCBvd25zIHRoaXMgc3Vic3RpdHV0aW9uLgorICAgICAqLworICAgIGRvdWJsZSBkaXZpc29yOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGNvbnN0cnVjdGlvbgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBNdWx0aXBsaWVyU3Vic3RpdHV0aW9uLiAgVGhpcyB1c2VzIHRoZSBzdXBlcmNsYXNzCisgICAgICogY29uc3RydWN0b3IgdG8gaW5pdGlhbGl6ZSBtb3N0IG1lbWJlcnMsIGJ1dCB0aGlzIHN1YnN0aXR1dGlvbgorICAgICAqIGFsc28gbWFpbnRhaW5zIGl0cyBvd24gY29weSBvZiBpdHMgcnVsZSdzIGRpdmlzb3IuCisgICAgICogQHBhcmFtIHBvcyBUaGUgc3Vic3RpdHV0aW9uJ3MgcG9zaXRpb24gaW4gaXRzIHJ1bGUncyBydWxlIHRleHQKKyAgICAgKiBAcGFyYW0gZGl2aXNvciBUaGUgb3duaW5nIHJ1bGUncyBkaXZpc29yCisgICAgICogQHJ1bGVTZXQgVGhlIHJ1bGVTZXQgdGhpcyBzdWJzdGl0dXRpb24gdXNlcyB0byBmb3JtYXQgaXRzIHJlc3VsdAorICAgICAqIEBmb3JtYXR0ZXIgVGhlIGZvcm1hdHRlciB0aGF0IG93bnMgdGhpcyBzdWJzdGl0dXRpb24KKyAgICAgKiBAZGVzY3JpcHRpb24gVGhlIGRlc2NyaXB0aW9uIGRlc2NyaWJpbmcgdGhpcyBzdWJzdGl0dXRpb24KKyAgICAgKi8KKyAgICBNdWx0aXBsaWVyU3Vic3RpdHV0aW9uKGludCBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGl2aXNvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE5GUnVsZVNldCBydWxlU2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBkZXNjcmlwdGlvbikgeworICAgICAgICBzdXBlcihwb3MsIHJ1bGVTZXQsIGZvcm1hdHRlciwgZGVzY3JpcHRpb24pOworCisgICAgICAgIC8vIHRoZSBvd25pbmcgcnVsZSdzIGRpdmlzb3IgYWZmZWN0cyB0aGUgYmVoYXZpb3Igb2YgdGhpcworICAgICAgICAvLyBzdWJzdGl0dXRpb24uICBSYXRoZXIgdGhhbiBrZWVwaW5nIGEgYmFjay1wb2ludGVyIHRvIHRoZQorICAgICAgICAvLyBydWxlLCB3ZSBrZWVwIGEgY29weSBvZiB0aGUgZGl2aXNvcgorICAgICAgICB0aGlzLmRpdmlzb3IgPSBkaXZpc29yOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHN1YnN0aXR1dGlvbidzIGRpdmlzb3IgYmFzZWQgb24gdGhlIHZhbHVlcyBwYXNzZWQgaW4uCisgICAgICogQHBhcmFtIHJhZGl4IFRoZSByYWRpeCBvZiB0aGUgZGl2aXNvci4KKyAgICAgKiBAcGFyYW0gZXhwb25lbnQgVGhlIGV4cG9uZW50IG9mIHRoZSBkaXZpc29yLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldERpdmlzb3IoaW50IHJhZGl4LCBpbnQgZXhwb25lbnQpIHsKKyAgICAgICAgZGl2aXNvciA9IE1hdGgucG93KHJhZGl4LCBleHBvbmVudCk7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGJvaWxlcnBsYXRlCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQXVnbWVudHMgdGhlIHN1cGVyY2xhc3MncyBlcXVhbHMoKSBmdW5jdGlvbiBieSBjb21wYXJpbmcgZGl2aXNvcnMuCisgICAgICogQHBhcmFtIHRoYXQgVGhlIG90aGVyIHN1YnN0aXR1dGlvbgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgdHdvIHN1YnN0aXR1dGlvbnMgYXJlIGZ1bmN0aW9uYWxseSBlcXVhbAorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgdGhhdCkgeworICAgICAgICBpZiAoc3VwZXIuZXF1YWxzKHRoYXQpKSB7CisgICAgICAgICAgICBNdWx0aXBsaWVyU3Vic3RpdHV0aW9uIHRoYXQyID0gKE11bHRpcGxpZXJTdWJzdGl0dXRpb24pdGhhdDsKKworICAgICAgICAgICAgcmV0dXJuIGRpdmlzb3IgPT0gdGhhdDIuZGl2aXNvcjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBmb3JtYXR0aW5nCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogRGl2aWRlcyB0aGUgbnVtYmVyIGJ5IHRoZSBydWxlJ3MgZGl2aXNvciBhbmQgcmV0dXJucyB0aGUgcXVvdGllbnQuCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZC4KKyAgICAgKiBAcmV0dXJuICJudW1iZXIiIGRpdmlkZWQgYnkgdGhlIHJ1bGUncyBkaXZpc29yCisgICAgICovCisgICAgcHVibGljIGxvbmcgdHJhbnNmb3JtTnVtYmVyKGxvbmcgbnVtYmVyKSB7CisgICAgICAgIHJldHVybiAobG9uZylNYXRoLmZsb29yKG51bWJlciAvIGRpdmlzb3IpOworICAgIH0KKworICAgIC8qKgorICAgICAqIERpdmlkZXMgdGhlIG51bWJlciBieSB0aGUgcnVsZSdzIGRpdmlzb3IgYW5kIHJldHVybnMgdGhlIHF1b3RpZW50LgorICAgICAqIFRoaXMgaXMgYW4gaW50ZWdyYWwgcXVvdGllbnQgaWYgd2UncmUgZmlsbGluZyBpbiB0aGUgc3Vic3RpdHV0aW9uCisgICAgICogdXNpbmcgYW5vdGhlciBydWxlIHNldCwgYnV0IGl0J3MgdGhlIGZ1bGwgcXVvdGllbnQgKGludGVncmFsIGFuZAorICAgICAqIGZyYWN0aW9uYWwgcGFydHMpIGlmIHdlJ3JlIGZpbGxpbmcgaW4gdGhlIHN1YnN0aXR1dGlvbiB1c2luZworICAgICAqIGEgRGVjaW1hbEZvcm1hdC4gIChUaGlzIGFsbG93cyB0aGluZ3Mgc3VjaCBhcyAiMS4yIG1pbGxpb24iLikKKyAgICAgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkCisgICAgICogQHJldHVybiAibnVtYmVyIiBkaXZpZGVkIGJ5IHRoZSBydWxlJ3MgZGl2aXNvcgorICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgdHJhbnNmb3JtTnVtYmVyKGRvdWJsZSBudW1iZXIpIHsKKyAgICAgICAgaWYgKHJ1bGVTZXQgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG51bWJlciAvIGRpdmlzb3I7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihudW1iZXIgLyBkaXZpc29yKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBwYXJzaW5nCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBuZXdSdWxlVmFsdWUgdGltZXMgdGhlIGRpdmlzb3IuICBJZ25vcmVzIG9sZFJ1bGVWYWx1ZS4KKyAgICAgKiAoVGhlIHJlc3VsdCBvZiBtYXRjaGluZyBhIDw8IHN1YnN0aXR1dGlvbiBzdXBlcnNlZGVzIHRoZSBiYXNlCisgICAgICogdmFsdWUgb2YgdGhlIHJ1bGUgdGhhdCBjb250YWlucyBpdC4pCisgICAgICogQHBhcmFtIG5ld1J1bGVWYWx1ZSBUaGUgcmVzdWx0IG9mIG1hdGNoaW5nIHRoZSBzdWJzdGl0dXRpb24KKyAgICAgKiBAcGFyYW0gb2xkUnVsZVZhbHVlIFRoZSBiYXNlIHZhbHVlIG9mIHRoZSBydWxlIGNvbnRhaW5pbmcgdGhlCisgICAgICogc3Vic3RpdHV0aW9uCisgICAgICogQHJldHVybiBuZXdSdWxlVmFsdWUgKiBkaXZpc29yCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSBjb21wb3NlUnVsZVZhbHVlKGRvdWJsZSBuZXdSdWxlVmFsdWUsIGRvdWJsZSBvbGRSdWxlVmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIG5ld1J1bGVWYWx1ZSAqIGRpdmlzb3I7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgdXBwZXIgYm91bmQgZG93biB0byB0aGUgcnVsZSdzIGRpdmlzb3IuCisgICAgICogQHBhcmFtIG9sZFVwcGVyQm91bmQgSWdub3JlZC4KKyAgICAgKiBAcmV0dXJuIFRoZSBydWxlJ3MgZGl2aXNvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGNhbGNVcHBlckJvdW5kKGRvdWJsZSBvbGRVcHBlckJvdW5kKSB7CisgICAgICAgIHJldHVybiBkaXZpc29yOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBzaW1wbGUgYWNjZXNzb3IKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBUaGUgdG9rZW4gY2hhcmFjdGVyIGZvciBhIG11bHRpcGxpZXIgc3Vic3RpdHV0aW9uIGlzICZsdDsuCisgICAgICogQHJldHVybiAnJmx0OycKKyAgICAgKi8KKyAgICBjaGFyIHRva2VuQ2hhcigpIHsKKyAgICAgICAgcmV0dXJuICc8JzsKKyAgICB9Cit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gTW9kdWx1c1N1YnN0aXR1dGlvbgorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy8qKgorICogQSBzdWJzdGl0dXRpb24gdGhhdCBkaXZpZGVzIHRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkIGJ5IHRoZSBpdHMgcnVsZSdzCisgKiBkaXZpc29yIGFuZCBmb3JtYXRzIHRoZSByZW1haW5kZXIuICBSZXByZXNlbnRlZCBieSAiJmd0OyZndDsiIGluIGEKKyAqIHJlZ3VsYXIgcnVsZS4KKyAqLworY2xhc3MgTW9kdWx1c1N1YnN0aXR1dGlvbiBleHRlbmRzIE5GU3Vic3RpdHV0aW9uIHsKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY29uc3RhbnRzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUHV0cyBhIGNvcHlyaWdodCBpbiB0aGUgLmNsYXNzIGZpbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0Tm90aWNlCisgICAgICAgID0gIkNvcHlyaWdodCBcdTAwYTkxOTk3LTE5OTggSUJNIENvcnAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gZGF0YSBtZW1iZXJzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogVGhlIGRpdmlzb3Igb2YgdGhlIHJ1bGUgb3duaW5nIHRoaXMgc3Vic3RpdHV0aW9uCisgICAgICovCisgICAgZG91YmxlIGRpdmlzb3I7CisKKyAgICAvKioKKyAgICAgKiBJZiB0aGlzIGlzIGEgJmd0OyZndDsmZ3Q7IHN1YnN0aXR1dGlvbiwgdGhlIHJ1bGUgdG8gdXNlIHRvIGZvcm1hdAorICAgICAqIHRoZSBzdWJzdGl0dXRpb24gdmFsdWUuICBPdGhlcndpc2UsIG51bGwuCisgICAgICovCisgICAgTkZSdWxlIHJ1bGVUb1VzZTsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjb25zdHJ1Y3Rpb24KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgTW9kdWx1c1N1YnN0dXRpb24uICBJbiBhZGRpdGlvbiB0byB0aGUgaW5oZXJpdGVkCisgICAgICogbWVtYmVycywgYSBNb2R1bHVzU3Vic3RpdHV0aW9uIGtlZXBzIHRyYWNrIG9mIHRoZSBkaXZpc29yIG9mIHRoZQorICAgICAqIHJ1bGUgdGhhdCBvd25zIGl0LCBhbmQgbWF5IGFsc28ga2VlcCBhIHJlZmVyZW5jZSB0byB0aGUgcnVsZQorICAgICAqIHRoYXQgcHJlY2VkZXMgdGhlIHJ1bGUgY29udGFpbmluZyB0aGlzIHN1YnN0aXR1dGlvbiBpbiB0aGUgcnVsZQorICAgICAqIHNldCdzIHJ1bGUgbGlzdC4KKyAgICAgKiBAcGFyYW0gcG9zIFRoZSBzdWJzdGl0dXRpb24ncyBwb3NpdGlvbiBpbiBpdHMgcnVsZSdzIHJ1bGUgdGV4dAorICAgICAqIEBwYXJhbSBkaXZpc29yIFRoZSBkaXZpc29yIG9mIHRoZSBydWxlIHRoYXQgb3ducyB0aGlzIHN1YnN0aXR1dGlvbgorICAgICAqIEBwYXJhbSBydWxlUHJlZGVjZXNzb3IgVGhlIHJ1bGUgdGhhdCBwcmVjZWRlcyB0aGlzIHN1YnN0aXR1dGlvbidzCisgICAgICogcnVsZSBpbiBpdHMgcnVsZSBzZXQncyBydWxlIGxpc3QKKyAgICAgKiBAcGFyYW0gZm9ybWF0dGVyIFRoZSBSdWxlQmFzZWROdW1iZXJGb3JtYXQgb3duaW5nIHRoaXMgc3Vic3RpdHV0aW9uCisgICAgICogQHBhcmFtIGRlc2NyaXB0aW9uIFRoZSBkZXNjcmlwdGlvbiBmb3IgdGhpcyBzdWJzdGl0dXRpb24KKyAgICAgKi8KKyAgICBNb2R1bHVzU3Vic3RpdHV0aW9uKGludCBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGl2aXNvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIE5GUnVsZSBydWxlUHJlZGVjZXNzb3IsCisgICAgICAgICAgICAgICAgICAgICAgICBORlJ1bGVTZXQgcnVsZVNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgc3VwZXIocG9zLCBydWxlU2V0LCBmb3JtYXR0ZXIsIGRlc2NyaXB0aW9uKTsKKworICAgICAgICAvLyB0aGUgb3duaW5nIHJ1bGUncyBkaXZpc29yIGNvbnRyb2xzIHRoZSBiZWhhdmlvciBvZiB0aGlzCisgICAgICAgIC8vIHN1YnN0aXR1dGlvbjogcmF0aGVyIHRoYW4ga2VlcGluZyBhIGJhY2twb2ludGVyIHRvIHRoZSBydWxlLAorICAgICAgICAvLyB3ZSBrZWVwIGEgY29weSBvZiB0aGUgZGl2aXNvcgorICAgICAgICB0aGlzLmRpdmlzb3IgPSBkaXZpc29yOworCisgICAgICAgIC8vIHRoZSA+Pj4gdG9rZW4gZG9lc24ndCBhbHRlciBob3cgdGhpcyBzdWJzdGl0dWlvbiBjYWxjdWxhdGVzIHRoZQorICAgICAgICAvLyB2YWx1ZXMgaXQgdXNlcyBmb3IgZm9ybWF0dGluZyBhbmQgcGFyc2luZywgYnV0IGl0IGNoYW5nZXMKKyAgICAgICAgLy8gd2hhdCdzIGRvbmUgd2l0aCB0aGF0IHZhbHVlIGFmdGVyIGl0J3Mgb2J0YWluZWQ6ID4+PiBzaG9ydC0KKyAgICAgICAgLy8gY2lyY3VpdHMgdGhlIHJ1bGUtc2VhcmNoIHByb2Nlc3MgYW5kIGdvZXMgc3RyYWlnaHQgdG8gdGhlCisgICAgICAgIC8vIHNwZWNpZmllZCBydWxlIHRvIGZvcm1hdCB0aGUgc3Vic3RpdHV0aW9uIHZhbHVlCisgICAgICAgIGlmIChkZXNjcmlwdGlvbi5lcXVhbHMoIj4+PiIpKSB7CisgICAgICAgICAgICBydWxlVG9Vc2UgPSBydWxlUHJlZGVjZXNzb3I7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBydWxlVG9Vc2UgPSBudWxsOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTWFrZXMgdGhlIHN1YnN0aXR1dGlvbidzIGRpdmlzb3IgY29uZm9ybSB0byB0aGF0IG9mIHRoZSBydWxlCisgICAgICogdGhhdCBvd25zIGl0LiAgVXNlZCB3aGVuIHRoZSBkaXZpc29yIGlzIGRldGVybWluZWQgYWZ0ZXIgY3JlYXRpb24uCisgICAgICogQHBhcmFtIHJhZGl4IFRoZSByYWRpeCBvZiB0aGUgZGl2c29yLgorICAgICAqIEBwYXJhbSBleHBvbmVudCBUaGUgZXhwb25lbnQgb2YgdGhlIGRpdmlzb3IuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0RGl2aXNvcihpbnQgcmFkaXgsIGludCBleHBvbmVudCkgeworICAgICAgICBkaXZpc29yID0gTWF0aC5wb3cocmFkaXgsIGV4cG9uZW50KTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gYm9pbGVycGxhdGUKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBBdWdtZW50cyB0aGUgaW5oZXJpdGVkIGVxdWFscygpIGZ1bmN0aW9uIGJ5IGNvbXBhcmluZyBkaXZpc29ycyBhbmQKKyAgICAgKiBydWxlVG9Vc2UuCisgICAgICogQHBhcmFtIHRoYXQgVGhlIG90aGVyIHN1YnN0aXR1dGlvbgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgdHdvIHN1YnN0aXR1dGlvbnMgYXJlIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50CisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCB0aGF0KSB7CisgICAgICAgIGlmIChzdXBlci5lcXVhbHModGhhdCkpIHsKKyAgICAgICAgICAgIE1vZHVsdXNTdWJzdGl0dXRpb24gdGhhdDIgPSAoTW9kdWx1c1N1YnN0aXR1dGlvbil0aGF0OworCisgICAgICAgICAgICByZXR1cm4gZGl2aXNvciA9PSB0aGF0Mi5kaXZpc29yOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGZvcm1hdHRpbmcKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBJZiB0aGlzIGlzIGEgJmd0OyZndDsmZ3Q7IHN1YnN0aXR1dGlvbiwgdXNlIHJ1bGVUb1VzZSB0byBmaWxsIGluCisgICAgICogdGhlIHN1YnN0aXR1dGlvbi4gIE90aGVyd2lzZSwganVzdCB1c2UgdGhlIHN1cGVyY2xhc3MgZnVuY3Rpb24uCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZAorICAgICAqIEB0b0luc2VydEludG8gVGhlIHN0cmluZyB0byBpbnNlcnQgdGhlIHJlc3VsdCBvZiB0aGlzIHN1YnN0aXR1dGlvbgorICAgICAqIGludG8KKyAgICAgKiBAcGFyYW0gcG9zIFRoZSBwb3NpdGlvbiBvZiB0aGUgcnVsZSB0ZXh0IGluIHRvSW5zZXJ0SW50bworICAgICAqLworICAgIHB1YmxpYyB2b2lkIGRvU3Vic3RpdHV0aW9uKGxvbmcgbnVtYmVyLCBTdHJpbmdCdWZmZXIgdG9JbnNlcnRJbnRvLCBpbnQgcG9zKSB7CisgICAgICAgIC8vIGlmIHRoaXMgaXNuJ3QgYSA+Pj4gc3Vic3RpdHV0aW9uLCBqdXN0IHVzZSB0aGUgaW5oZXJpdGVkIHZlcnNpb24KKyAgICAgICAgLy8gb2YgdGhpcyBmdW5jdGlvbiAod2hpY2ggdXNlcyBlaXRoZXIgYSBydWxlIHNldCBvciBhIERlY2ltYWxGb3JtYXQKKyAgICAgICAgLy8gdG8gZm9ybWF0IGl0cyBzdWJzdGl0dXRpb24gdmFsdWUpCisgICAgICAgIGlmIChydWxlVG9Vc2UgPT0gbnVsbCkgeworICAgICAgICAgICAgc3VwZXIuZG9TdWJzdGl0dXRpb24obnVtYmVyLCB0b0luc2VydEludG8sIHBvcyk7CisKKyAgICAgICAgLy8gYSA+Pj4gc3Vic3RpdHV0aW9uIGdvZXMgc3RyYWlnaHQgdG8gYSBwYXJ0aWN1bGFyIHJ1bGUgdG8KKyAgICAgICAgLy8gZm9ybWF0IHRoZSBzdWJzdGl0dXRpb24gdmFsdWUKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvbmcgbnVtYmVyVG9Gb3JtYXQgPSB0cmFuc2Zvcm1OdW1iZXIobnVtYmVyKTsKKyAgICAgICAgICAgIHJ1bGVUb1VzZS5kb0Zvcm1hdChudW1iZXJUb0Zvcm1hdCwgdG9JbnNlcnRJbnRvLCBwb3MgKyB0aGlzLnBvcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJZiB0aGlzIGlzIGEgJmd0OyZndDsmZ3Q7IHN1YnN0aXR1dGlvbiwgdXNlIHJ1bGVUb1VzZSB0byBmaWxsIGluCisgICAgICogdGhlIHN1YnN0aXR1dGlvbi4gIE90aGVyd2lzZSwganVzdCB1c2UgdGhlIHN1cGVyY2xhc3MgZnVuY3Rpb24uCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZAorICAgICAqIEB0b0luc2VydEludG8gVGhlIHN0cmluZyB0byBpbnNlcnQgdGhlIHJlc3VsdCBvZiB0aGlzIHN1YnN0aXR1dGlvbgorICAgICAqIGludG8KKyAgICAgKiBAcGFyYW0gcG9zIFRoZSBwb3NpdGlvbiBvZiB0aGUgcnVsZSB0ZXh0IGluIHRvSW5zZXJ0SW50bworICAgICAqLworICAgIHB1YmxpYyB2b2lkIGRvU3Vic3RpdHV0aW9uKGRvdWJsZSBudW1iZXIsIFN0cmluZ0J1ZmZlciB0b0luc2VydEludG8sIGludCBwb3MpIHsKKyAgICAgICAgLy8gaWYgdGhpcyBpc24ndCBhID4+PiBzdWJzdGl0dXRpb24sIGp1c3QgdXNlIHRoZSBpbmhlcml0ZWQgdmVyc2lvbgorICAgICAgICAvLyBvZiB0aGlzIGZ1bmN0aW9uICh3aGljaCB1c2VzIGVpdGhlciBhIHJ1bGUgc2V0IG9yIGEgRGVjaW1hbEZvcm1hdAorICAgICAgICAvLyB0byBmb3JtYXQgaXRzIHN1YnN0aXR1dGlvbiB2YWx1ZSkKKyAgICAgICAgaWYgKHJ1bGVUb1VzZSA9PSBudWxsKSB7CisgICAgICAgICAgICBzdXBlci5kb1N1YnN0aXR1dGlvbihudW1iZXIsIHRvSW5zZXJ0SW50bywgcG9zKTsKKworICAgICAgICAvLyBhID4+PiBzdWJzdGl0dXRpb24gZ29lcyBzdHJhaWdodCB0byBhIHBhcnRpY3VsYXIgcnVsZSB0bworICAgICAgICAvLyBmb3JtYXQgdGhlIHN1YnN0aXR1dGlvbiB2YWx1ZQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZG91YmxlIG51bWJlclRvRm9ybWF0ID0gdHJhbnNmb3JtTnVtYmVyKG51bWJlcik7CisKKyAgICAgICAgICAgIHJ1bGVUb1VzZS5kb0Zvcm1hdChudW1iZXJUb0Zvcm1hdCwgdG9JbnNlcnRJbnRvLCBwb3MgKyB0aGlzLnBvcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEaXZpZGVzIHRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkIGJ5IHRoZSBydWxlJ3MgZGl2aXNvciBhbmQKKyAgICAgKiByZXR1cm5zIHRoZSByZW1haW5kZXIuCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZAorICAgICAqIEByZXR1cm4gIm51bWJlciIgbW9kIGRpdmlzb3IKKyAgICAgKi8KKyAgICBwdWJsaWMgbG9uZyB0cmFuc2Zvcm1OdW1iZXIobG9uZyBudW1iZXIpIHsKKyAgICAgICAgcmV0dXJuIChsb25nKU1hdGguZmxvb3IobnVtYmVyICUgZGl2aXNvcik7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGl2aWRlcyB0aGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZCBieSB0aGUgcnVsZSdzIGRpdmlzb3IgYW5kCisgICAgICogcmV0dXJucyB0aGUgcmVtYWluZGVyLgorICAgICAqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQKKyAgICAgKiBAcmV0dXJuICJudW1iZXIiIG1vZCBkaXZpc29yCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSB0cmFuc2Zvcm1OdW1iZXIoZG91YmxlIG51bWJlcikgeworICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihudW1iZXIgJSBkaXZpc29yKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gcGFyc2luZworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIElmIHRoaXMgaXMgYSAmZ3Q7Jmd0OyZndDsgc3Vic3RpdHV0aW9uLCBtYXRjaCBvbmx5IGFnYWluc3QgcnVsZVRvVXNlLgorICAgICAqIE90aGVyd2lzZSwgdXNlIHRoZSBzdXBlcmNsYXNzIGZ1bmN0aW9uLgorICAgICAqIEBwYXJhbSB0ZXh0IFRoZSBzdHJpbmcgdG8gcGFyc2UKKyAgICAgKiBAcGFyYW0gcGFyc2VQb3NpdGlvbiBJZ25vcmVkIG9uIGVudHJ5LCB1cGRhdGVkIG9uIGV4aXQgdG8gcG9pbnQgdG8KKyAgICAgKiB0aGUgZmlyc3QgdW5tYXRjaGVkIGNoYXJhY3Rlci4KKyAgICAgKiBAcGFyYW0gYmFzZVZhbHVlIFRoZSBwYXJ0aWFsIHBhcnNlIHJlc3VsdCBwcmlvciB0byBjYWxsaW5nIHRoaXMKKyAgICAgKiByb3V0aW5lLgorICAgICAqLworICAgIHB1YmxpYyBOdW1iZXIgZG9QYXJzZShTdHJpbmcgdGV4dCwgUGFyc2VQb3NpdGlvbiBwYXJzZVBvc2l0aW9uLCBkb3VibGUgYmFzZVZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHVwcGVyQm91bmQsIGJvb2xlYW4gbGVuaWVudFBhcnNlKSB7CisgICAgICAgIC8vIGlmIHRoaXMgaXNuJ3QgYSA+Pj4gc3Vic3RpdHV0aW9uLCB3ZSBjYW4ganVzdCB1c2UgdGhlCisgICAgICAgIC8vIGluaGVyaXRlZCBwYXJzZSgpIHJvdXRpbmUgdG8gZG8gdGhlIHBhcnNpbmcKKyAgICAgICAgaWYgKHJ1bGVUb1VzZSA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuZG9QYXJzZSh0ZXh0LCBwYXJzZVBvc2l0aW9uLCBiYXNlVmFsdWUsIHVwcGVyQm91bmQsIGxlbmllbnRQYXJzZSk7CisKKyAgICAgICAgLy8gYnV0IGlmIGl0IElTIGEgPj4+IHN1YnN0aXR1dGlvbiwgd2UgaGF2ZSB0byBkbyBpdCBoZXJlOiB3ZQorICAgICAgICAvLyB1c2UgdGhlIHNwZWNpZmljIHJ1bGUncyBkb1BhcnNlKCkgbWV0aG9kLCBhbmQgdGhlbiB3ZSBoYXZlIHRvCisgICAgICAgIC8vIGRvIHNvbWUgb2YgdGhlIG90aGVyIHdvcmsgb2YgTkZSdWxlU2V0LnBhcnNlKCkKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIE51bWJlciB0ZW1wUmVzdWx0ID0gcnVsZVRvVXNlLmRvUGFyc2UodGV4dCwgcGFyc2VQb3NpdGlvbiwgZmFsc2UsIHVwcGVyQm91bmQpOworCisgICAgICAgICAgICBpZiAocGFyc2VQb3NpdGlvbi5nZXRJbmRleCgpICE9IDApIHsKKyAgICAgICAgICAgICAgICBkb3VibGUgcmVzdWx0ID0gdGVtcFJlc3VsdC5kb3VibGVWYWx1ZSgpOworCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tcG9zZVJ1bGVWYWx1ZShyZXN1bHQsIGJhc2VWYWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAobG9uZylyZXN1bHQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBMb25nKChsb25nKXJlc3VsdCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBEb3VibGUocmVzdWx0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiB0ZW1wUmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgaGlnaGVzdCBtdWx0aXBsZSBvZiB0aGUgcnVsZSdzIGRpdmlzb3IgdGhhdCBpdHMgbGVzcworICAgICAqIHRoYW4gb3IgZXF1YWwgdG8gb2xkUnVsZVZhbHVlLCBwbHVzIG5ld1J1bGVWYWx1ZS4gIChUaGUgcmVzdWx0CisgICAgICogaXMgdGhlIHN1bSBvZiB0aGUgcmVzdWx0IG9mIHBhcnNpbmcgdGhlIHN1YnN0aXR1dGlvbiBwbHVzIHRoZQorICAgICAqIGJhc2UgdmFsdWVvZiB0aGUgcnVsZSBjb250YWluaW5nIHRoZSBzdWJzdGl0dXRpb24sIGJ1dCBpZiB0aGUKKyAgICAgKiBvd25pbmcgcnVsZSdzIGJhc2UgdmFsdWUgaXNuJ3QgYW4gZXZlbiBtdWx0aXBsZSBvZiBpdHMgZGl2aXNvciwKKyAgICAgKiB3ZSBoYXZlIHRvIHJvdW5kIGl0IGRvd24gdG8gYSBtdWx0aXBsZSBvZiB0aGUgZGl2aXNvciwgb3Igd2UKKyAgICAgKiBnZXQgdW53YW50ZWQgZGlnaXRzIGluIHRoZSByZXN1bHQuKQorICAgICAqIEBwYXJhbSBuZXdSdWxlVmFsdWUgVGhlIHJlc3VsdCBvZiBwYXJzaW5nIHRoZSBzdWJzdGl0dXRpb24KKyAgICAgKiBAcGFyYW0gb2xkUnVsZVZhbHVlIFRoZSBiYXNlIHZhbHVlIG9mIHRoZSBydWxlIGNvbnRhaW5pbmcgdGhlCisgICAgICogc3Vic3RpdHV0aW9uCisgICAgICogQHJldHVybiAob2xkUnVsZVZhbHVlIC0gKG9sZFJ1bGVWYWx1ZSAlIGRpdmlzb3IpKSArIG5ld1J1bGVWYWx1ZQorICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgY29tcG9zZVJ1bGVWYWx1ZShkb3VibGUgbmV3UnVsZVZhbHVlLCBkb3VibGUgb2xkUnVsZVZhbHVlKSB7CisgICAgICAgIHJldHVybiAob2xkUnVsZVZhbHVlIC0gKG9sZFJ1bGVWYWx1ZSAlIGRpdmlzb3IpKSArIG5ld1J1bGVWYWx1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSB1cHBlciBib3VuZCBkb3duIHRvIHRoZSBvd25pbmcgcnVsZSdzIGRpdmlzb3IKKyAgICAgKiBAcGFyYW0gb2xkVXBwZXJCb3VuZCBJZ25vcmVkCisgICAgICogQHJldHVybiBUaGUgb3duaW5nIHJ1bGUncyBkdmlzb3IKKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGNhbGNVcHBlckJvdW5kKGRvdWJsZSBvbGRVcHBlckJvdW5kKSB7CisgICAgICAgIHJldHVybiBkaXZpc29yOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBzaW1wbGUgYWNjZXNzb3JzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0cnVlLiAgVGhpcyBfaXNfIGEgTW9kdWx1c1N1YnN0aXR1dGlvbi4KKyAgICAgKiBAcmV0dXJuIHRydWUKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc01vZHVsdXNTdWJzdGl0dXRpb24oKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZSB0b2tlbiBjaGFyYWN0ZXIgb2YgYSBNb2R1bHVzU3Vic3RpdHV0aW9uIGlzICZndDsuCisgICAgICogQHJldHVybiAnJmd0OycKKyAgICAgKi8KKyAgICBjaGFyIHRva2VuQ2hhcigpIHsKKyAgICAgICAgcmV0dXJuICc+JzsKKyAgICB9Cit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gSW50ZWdyYWxQYXJ0U3Vic3RpdHV0aW9uCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLyoqCisgKiBBIHN1YnN0aXR1dGlvbiB0aGF0IGZvcm1hdHMgdGhlIG51bWJlcidzIGludGVncmFsIHBhcnQuICBUaGlzIGlzCisgKiByZXByZXNlbnRlZCBieSAmbHQ7Jmx0OyBpbiBhIGZyYWN0aW9uIHJ1bGUuCisgKi8KK2NsYXNzIEludGVncmFsUGFydFN1YnN0aXR1dGlvbiBleHRlbmRzIE5GU3Vic3RpdHV0aW9uIHsKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY29uc3RhbnRzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUHV0cyBhIGNvcHlyaWdodCBpbiB0aGUgLmNsYXNzIGZpbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0Tm90aWNlCisgICAgICAgID0gIkNvcHlyaWdodCBcdTAwYTkxOTk3LTE5OTggSUJNIENvcnAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY29uc3RydWN0aW9uCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhbiBJbnRlZ3JhbFBhcnRTdWJzdGl0dXRpb24uICBUaGlzIGp1c3QgY2FsbHMKKyAgICAgKiB0aGUgc3VwZXJjbGFzcyBjb25zdHJ1Y3Rvci4KKyAgICAgKi8KKyAgICBJbnRlZ3JhbFBhcnRTdWJzdGl0dXRpb24oaW50IHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkZSdWxlU2V0IHJ1bGVTZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBkZXNjcmlwdGlvbikgeworICAgICAgICBzdXBlcihwb3MsIHJ1bGVTZXQsIGZvcm1hdHRlciwgZGVzY3JpcHRpb24pOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBmb3JtYXR0aW5nCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbnVtYmVyJ3MgaW50ZWdyYWwgcGFydC4gKEZvciBhIGxvbmcsIHRoYXQncyBqdXN0IHRoZQorICAgICAqIG51bWJlciB1bmNoYW5nZWQuKQorICAgICAqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQKKyAgICAgKiBAcmV0dXJuICJudW1iZXIiIHVuY2hhbmdlZAorICAgICAqLworICAgIHB1YmxpYyBsb25nIHRyYW5zZm9ybU51bWJlcihsb25nIG51bWJlcikgeworICAgICAgICByZXR1cm4gbnVtYmVyOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG51bWJlcidzIGludGVncmFsIHBhcnQuCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgaW50ZWdyYWwgcGFydCBvZiB0aGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZAorICAgICAqIEByZXR1cm4gZmxvb3IobnVtYmVyKQorICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgdHJhbnNmb3JtTnVtYmVyKGRvdWJsZSBudW1iZXIpIHsKKyAgICAgICAgcmV0dXJuIE1hdGguZmxvb3IobnVtYmVyKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gcGFyc2luZworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHN1bSBvZiB0aGUgcmVzdWx0IG9mIHBhcnNpbmcgdGhlIHN1YnN0aXR1dGlvbiBhbmQgdGhlCisgICAgICogb3duaW5nIHJ1bGUncyBiYXNlIHZhbHVlLiAgKFRoZSBvd25pbmcgcnVsZSwgYXQgYmVzdCwgaGFzIGFuCisgICAgICogaW50ZWdyYWwtcGFydCBzdWJzdGl0dXRpb24gYW5kIGEgZnJhY3Rpb25hbC1wYXJ0IHN1YnN0aXR1dGlvbiwKKyAgICAgKiBzbyB3ZSBjYW4gc2FmZWx5IGp1c3QgYWRkIHRoZW0uKQorICAgICAqIEBwYXJhbSBuZXdSdWxlVmFsdWUgVGhlIHJlc3VsdCBvZiBtYXRjaGluZyB0aGUgc3Vic3RpdHV0aW9uCisgICAgICogQHBhcmFtIG9sZFJ1bGVWYWx1ZSBUaGUgcGFydGlhbCByZXN1bHQgb2YgdGhlIHBhcnNlIHByaW9yIHRvCisgICAgICogY2FsbGluZyB0aGlzIGZ1bmN0aW9uCisgICAgICogQHJldHVybiBvbGRSdWxlVmFsdWUgKyBuZXdSdWxlVmFsdWUKKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGNvbXBvc2VSdWxlVmFsdWUoZG91YmxlIG5ld1J1bGVWYWx1ZSwgZG91YmxlIG9sZFJ1bGVWYWx1ZSkgeworICAgICAgICByZXR1cm4gbmV3UnVsZVZhbHVlICsgb2xkUnVsZVZhbHVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFuIEludGVncmFsUGFydFN1YnN0aXR1dGlvbiBzZXRzIHRoZSB1cHBlciBib3VuZCBiYWNrIHVwIHNvIGFsbAorICAgICAqIHBvdGVudGlhbGx5IG1hdGNoaW5nIHJ1bGVzIGFyZSBjb25zaWRlcmVkLgorICAgICAqIEBwYXJhbSBvbGRVcHBlckJvdW5kIElnbm9yZWQKKyAgICAgKiBAcmV0dXJuIERvdWJsZS5NQVhfVkFMVUUKKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGNhbGNVcHBlckJvdW5kKGRvdWJsZSBvbGRVcHBlckJvdW5kKSB7CisgICAgICAgIHJldHVybiBEb3VibGUuTUFYX1ZBTFVFOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBzaW1wbGUgYWNjZXNzb3IKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBBbiBJbnRlZ3JhbFBhcnRTdWJzdGl0dXRpb24ncyB0b2tlbiBjaGFyYWN0ZXIgaXMgJmx0OworICAgICAqIEByZXR1cm4gJyZsdDsnCisgICAgICovCisgICAgY2hhciB0b2tlbkNoYXIoKSB7CisgICAgICAgIHJldHVybiAnPCc7CisgICAgfQorfQorCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIEZyYWN0aW9uYWxQYXJ0U3Vic3RpdHV0aW9uCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLyoqCisgKiBBIHN1YnN0aXR1dGlvbiB0aGF0IGZvcm1hdHMgdGhlIGZyYWN0aW9uYWwgcGFydCBvZiBhIG51bWJlci4gIFRoaXMgaXMKKyAqIHJlcHJlc2VudGVkIGJ5ICZndDsmZ3Q7IGluIGEgZnJhY3Rpb24gcnVsZS4KKyAqLworY2xhc3MgRnJhY3Rpb25hbFBhcnRTdWJzdGl0dXRpb24gZXh0ZW5kcyBORlN1YnN0aXR1dGlvbiB7CisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGNvbnN0YW50cworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFB1dHMgYSBjb3B5cmlnaHQgaW4gdGhlIC5jbGFzcyBmaWxlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodE5vdGljZQorICAgICAgICA9ICJDb3B5cmlnaHQgXHUwMGE5MTk5Ny0xOTk4IElCTSBDb3JwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4iOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGRhdGEgbWVtYmVycworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIHRydWUgaWYgdGhpcyBzdWJzdGl0dXRpb24gc2hvdWxkIGhhdmUgdGhlIGRlZmF1bHQgImJ5IGRpZ2l0cyIKKyAgICAgKiBiZWhhdmlvciwgZmFsc2Ugb3RoZXJ3aXNlCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGJ5RGlnaXRzID0gZmFsc2U7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbGFyZ2VzdCBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50IHRoYXQgdGhpcworICAgICAqIG9iamVjdCB3aWxsIHNob3cgaW4gImJ5IGRpZ2l0cyIgbW9kZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNQVhERUNJTUFMRElHSVRTID0gODsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjb25zdHJ1Y3Rpb24KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgRnJhY3Rpb25hbFBhcnRTdWJzdGl0dXRpb24uICBUaGlzIG9iamVjdCBrZWVwcyBhIGZsYWcKKyAgICAgKiB0ZWxsaW5nIHdoZXRoZXIgaXQgc2hvdWxkIGZvcm1hdCBieSBkaWdpdHMgb3Igbm90LiAgSW4gYWRkaXRpb24sCisgICAgICogaXQgbWFya3MgdGhlIHJ1bGUgc2V0IGl0IGNhbGxzIChpZiBhbnkpIGFzIGEgZnJhY3Rpb24gcnVsZSBzZXQuCisgICAgICovCisgICAgRnJhY3Rpb25hbFBhcnRTdWJzdGl0dXRpb24oaW50IHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORlJ1bGVTZXQgcnVsZVNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBkZXNjcmlwdGlvbikgeworICAgICAgICBzdXBlcihwb3MsIHJ1bGVTZXQsIGZvcm1hdHRlciwgZGVzY3JpcHRpb24pOworICAgICAgICBpZiAoZGVzY3JpcHRpb24uZXF1YWxzKCI+PiIpIHx8IHJ1bGVTZXQgPT0gdGhpcy5ydWxlU2V0KSB7CisgICAgICAgICAgICBieURpZ2l0cyA9IHRydWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLnJ1bGVTZXQubWFrZUludG9GcmFjdGlvblJ1bGVTZXQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBmb3JtYXR0aW5nCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogSWYgaW4gImJ5IGRpZ2l0cyIgbW9kZSwgZmlsbHMgaW4gdGhlIHN1YnN0aXR1dGlvbiBvbmUgZGVjaW1hbCBkaWdpdAorICAgICAqIGF0IGEgdGltZSB1c2luZyB0aGUgcnVsZSBzZXQgY29udGFpbmluZyB0aGlzIHN1YnN0aXR1dGlvbi4KKyAgICAgKiBPdGhlcndpc2UsIHVzZXMgdGhlIHN1cGVyY2xhc3MgZnVuY3Rpb24uCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZAorICAgICAqIEBwYXJhbSB0b0luc2VydEludG8gVGhlIHN0cmluZyB0byBpbnNlcnQgdGhlIHJlc3VsdCBvZiBmb3JtYXR0aW5nCisgICAgICogdGhlIHN1YnN0aXR1dGlvbiBpbnRvCisgICAgICogQHBhcmFtIHBvcyBUaGUgcG9zaXRpb24gb2YgdGhlIG93bmluZyBydWxlJ3MgcnVsZSB0ZXh0IGluCisgICAgICogdG9JbnNlcnRJbnRvCisgICAgICovCisgICAgcHVibGljIHZvaWQgZG9TdWJzdGl0dXRpb24oZG91YmxlIG51bWJlciwgU3RyaW5nQnVmZmVyIHRvSW5zZXJ0SW50bywgaW50IHBvcykgeworICAgICAgICAvLyBpZiB3ZSdyZSBub3QgaW4gImJ5RGlnaXRzIiBtb2RlLCBqdXN0IHVzZSB0aGUgaW5oZXJpdGVkCisgICAgICAgIC8vIGRvU3Vic3RpdHV0aW9uKCkgcm91dGluZQorICAgICAgICBpZiAoIWJ5RGlnaXRzKSB7CisgICAgICAgICAgICBzdXBlci5kb1N1YnN0aXR1dGlvbihudW1iZXIsIHRvSW5zZXJ0SW50bywgcG9zKTsKKworICAgICAgICAvLyBpZiB3ZSdyZSBpbiAiYnlEaWdpdHMiIG1vZGUsIHRyYW5zZm9ybSB0aGUgdmFsdWUgaW50byBhbiBpbnRlZ2VyCisgICAgICAgIC8vIGJ5IG1vdmluZyB0aGUgZGVjaW1hbCBwb2ludCBlaWdodCBwbGFjZXMgdG8gdGhlIHJpZ2h0IGFuZAorICAgICAgICAvLyBwdWxsaW5nIGRpZ2l0cyBvZmYgdGhlIHJpZ2h0IG9uZSBhdCBhIHRpbWUsIGZvcm1hdHRpbmcgZWFjaCBkaWdpdAorICAgICAgICAvLyBhcyBhbiBpbnRlZ2VyIHVzaW5nIHRoaXMgc3Vic3RpdHV0aW9uJ3Mgb3duaW5nIHJ1bGUgc2V0CisgICAgICAgIC8vICh0aGlzIGlzIHNsb3dlciwgYnV0IG1vcmUgYWNjdXJhdGUsIHRoYW4gZG9pbmcgaXQgZnJvbSB0aGUKKyAgICAgICAgLy8gb3RoZXIgZW5kKQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50IG51bWJlclRvRm9ybWF0ID0gKGludClNYXRoLnJvdW5kKHRyYW5zZm9ybU51bWJlcihudW1iZXIpICogTWF0aC5wb3coCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAsIE1BWERFQ0lNQUxESUdJVFMpKTsKKyAgICAgICAgICAgIC8vIHRoaXMgZmxhZyBrZWVwcyB1cyBmcm9tIGZvcm1hdHRpbmcgdHJhaWxpbmcgemVyb3MuICBJdCBzdGFydHMKKyAgICAgICAgICAgIC8vIG91dCBmYWxzZSBiZWNhdXNlIHdlJ3JlIHB1bGxpbmcgZnJvbSB0aGUgcmlnaHQsIGFuZCBzd2l0Y2hlcworICAgICAgICAgICAgLy8gdG8gdHJ1ZSB0aGUgZmlyc3QgdGltZSB3ZSBlbmNvdW50ZXIgYSBub24temVybyBkaWdpdAorICAgICAgICAgICAgYm9vbGVhbiBkb1plcm9zID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BWERFQ0lNQUxESUdJVFM7IGkrKykgeworICAgICAgICAgICAgICAgIGludCBkaWdpdCA9IG51bWJlclRvRm9ybWF0ICUgMTA7CisgICAgICAgICAgICAgICAgaWYgKGRpZ2l0ICE9IDAgfHwgZG9aZXJvcykgeworICAgICAgICAgICAgICAgICAgICBpZiAoZG9aZXJvcykgeworICAgICAgICAgICAgICAgICAgICAgICAgdG9JbnNlcnRJbnRvLmluc2VydChwb3MgKyB0aGlzLnBvcywgJyAnKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkb1plcm9zID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgcnVsZVNldC5mb3JtYXQoZGlnaXQsIHRvSW5zZXJ0SW50bywgcG9zICsgdGhpcy5wb3MpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBudW1iZXJUb0Zvcm1hdCAvPSAxMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGZyYWN0aW9uYWwgcGFydCBvZiB0aGUgbnVtYmVyLCB3aGljaCB3aWxsIGFsd2F5cyBiZQorICAgICAqIHplcm8gaWYgaXQncyBhIGxvbmcuCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZAorICAgICAqIEByZXR1cm4gMAorICAgICAqLworICAgIHB1YmxpYyBsb25nIHRyYW5zZm9ybU51bWJlcihsb25nIG51bWJlcikgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIG51bWJlci4KKyAgICAgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkLgorICAgICAqIEByZXR1cm4gbnVtYmVyIC0gZmxvb3IobnVtYmVyKQorICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgdHJhbnNmb3JtTnVtYmVyKGRvdWJsZSBudW1iZXIpIHsKKyAgICAgICAgcmV0dXJuIG51bWJlciAtIE1hdGguZmxvb3IobnVtYmVyKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gcGFyc2luZworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIElmIGluICJieSBkaWdpdHMiIG1vZGUsIHBhcnNlcyB0aGUgc3RyaW5nIGFzIGlmIGl0IHdlcmUgYSBzdHJpbmcKKyAgICAgKiBvZiBpbmRpdmlkdWFsIGRpZ2l0czsgb3RoZXJ3aXNlLCB1c2VzIHRoZSBzdXBlcmNsYXNzIGZ1bmN0aW9uLgorICAgICAqIEBwYXJhbSB0ZXh0IFRoZSBzdHJpbmcgdG8gcGFyc2UKKyAgICAgKiBAcGFyYW0gcGFyc2VQb3NpdGlvbiBJZ25vcmVkIG9uIGVudHJ5LCBidXQgdXBkYXRlZCBvbiBleGl0IHRvIHBvaW50CisgICAgICogdG8gdGhlIGZpcnN0IHVubWF0Y2hlZCBjaGFyYWN0ZXIKKyAgICAgKiBAcGFyYW0gYmFzZVZhbHVlIFRoZSBwYXJ0aWFsIHBhcnNlIHJlc3VsdCBwcmlvciB0byBlbnRlcmluZyB0aGlzCisgICAgICogZnVuY3Rpb24KKyAgICAgKiBAcGFyYW0gdXBwZXJCb3VuZCBPbmx5IGNvbnNpZGVyIHJ1bGVzIHdpdGggYmFzZSB2YWx1ZXMgbG93ZXIgdGhhbgorICAgICAqIHRoaXMgd2hlbiBmaWxsaW5nIGluIHRoZSBzdWJzdGl0dXRpb24KKyAgICAgKiBAcGFyYW0gbGVuaWVudFBhcnNlIElmIHRydWUsIHRyeSBtYXRjaGluZyB0aGUgdGV4dCBhcyBudW1lcmFscyBpZgorICAgICAqIG1hdGNoaW5nIGFzIHdvcmRzIGRvZXNuJ3Qgd29yaworICAgICAqIEByZXR1cm4gSWYgdGhlIG1hdGNoIHdhcyBzdWNjZXNzZnVsLCB0aGUgY3VycmVudCBwYXJ0aWFsIHBhcnNlCisgICAgICogcmVzdWx0OyBvdGhlcndpc2UgbmV3IExvbmcoMCkuICBUaGUgcmVzdWx0IGlzIGVpdGhlciBhIExvbmcgb3IKKyAgICAgKiBhIERvdWJsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgTnVtYmVyIGRvUGFyc2UoU3RyaW5nIHRleHQsIFBhcnNlUG9zaXRpb24gcGFyc2VQb3NpdGlvbiwgZG91YmxlIGJhc2VWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB1cHBlckJvdW5kLCBib29sZWFuIGxlbmllbnRQYXJzZSkgeworICAgICAgICAvLyBpZiB3ZSdyZSBub3QgaW4gYnlEaWdpdHMgbW9kZSwgd2UgY2FuIGp1c3QgdXNlIHRoZSBpbmhlcml0ZWQKKyAgICAgICAgLy8gZG9QYXJzZSgpCisgICAgICAgIGlmICghYnlEaWdpdHMpIHsKKyAgICAgICAgICAgIHJldHVybiBzdXBlci5kb1BhcnNlKHRleHQsIHBhcnNlUG9zaXRpb24sIGJhc2VWYWx1ZSwgMCwgbGVuaWVudFBhcnNlKTsKKworICAgICAgICAvLyBpZiB3ZSBBUkUgaW4gYnlEaWdpdHMgbW9kZSwgcGFyc2UgdGhlIHRleHQgb25lIGRpZ2l0IGF0IGEgdGltZQorICAgICAgICAvLyB1c2luZyB0aGlzIHN1YnN0aXR1dGlvbidzIG93bmluZyBydWxlIHNldCAod2UgZG8gdGhpcyBieSBzZXR0aW5nCisgICAgICAgIC8vIHVwcGVyQm91bmQgdG8gMTAgd2hlbiBjYWxsaW5nIGRvUGFyc2UoKSApIHVudGlsIHdlIHJlYWNoCisgICAgICAgIC8vIG5vbm1hdGNoaW5nIHRleHQKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFN0cmluZyB3b3JrVGV4dCA9IG5ldyBTdHJpbmcodGV4dCk7CisgICAgICAgICAgICBQYXJzZVBvc2l0aW9uIHdvcmtQb3MgPSBuZXcgUGFyc2VQb3NpdGlvbigxKTsKKyAgICAgICAgICAgIGRvdWJsZSByZXN1bHQgPSAwOworICAgICAgICAgICAgaW50IGRpZ2l0OworICAgICAgICAgICAgZG91YmxlIHAxMCA9IDAuMTsKKworICAgICAgICAgICAgd2hpbGUgKHdvcmtUZXh0Lmxlbmd0aCgpID4gMCAmJiB3b3JrUG9zLmdldEluZGV4KCkgIT0gMCkgeworICAgICAgICAgICAgICAgIHdvcmtQb3Muc2V0SW5kZXgoMCk7CisgICAgICAgICAgICAgICAgZGlnaXQgPSBydWxlU2V0LnBhcnNlKHdvcmtUZXh0LCB3b3JrUG9zLCAxMCkuaW50VmFsdWUoKTsKKyAgICAgICAgICAgICAgICBpZiAobGVuaWVudFBhcnNlICYmIHdvcmtQb3MuZ2V0SW5kZXgoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGRpZ2l0ID0gTnVtYmVyRm9ybWF0LmdldEluc3RhbmNlKCkucGFyc2Uod29ya1RleHQsIHdvcmtQb3MpLmludFZhbHVlKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKHdvcmtQb3MuZ2V0SW5kZXgoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCArPSBkaWdpdCAqIHAxMDsKKyAgICAgICAgICAgICAgICAgICAgcDEwIC89IDEwOworICAgICAgICAgICAgICAgICAgICBwYXJzZVBvc2l0aW9uLnNldEluZGV4KHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSArIHdvcmtQb3MuZ2V0SW5kZXgoKSk7CisgICAgICAgICAgICAgICAgICAgIHdvcmtUZXh0ID0gd29ya1RleHQuc3Vic3RyaW5nKHdvcmtQb3MuZ2V0SW5kZXgoKSk7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICh3b3JrVGV4dC5sZW5ndGgoKSA+IDAgJiYgd29ya1RleHQuY2hhckF0KDApID09ICcgJykgeworICAgICAgICAgICAgICAgICAgICAgICAgd29ya1RleHQgPSB3b3JrVGV4dC5zdWJzdHJpbmcoMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZVBvc2l0aW9uLnNldEluZGV4KHBhcnNlUG9zaXRpb24uZ2V0SW5kZXgoKSArIDEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0ID0gY29tcG9zZVJ1bGVWYWx1ZShyZXN1bHQsIGJhc2VWYWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gbmV3IERvdWJsZShyZXN1bHQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgc3VtIG9mIHRoZSB0d28gcGFydGlhbCBwYXJzZSByZXN1bHRzLgorICAgICAqIEBwYXJhbSBuZXdSdWxlVmFsdWUgVGhlIHJlc3VsdCBvZiBwYXJzaW5nIHRoZSBzdWJzdGl0dXRpb24KKyAgICAgKiBAcGFyYW0gb2xkUnVsZVZhbHVlIFRoZSBwYXJ0aWFsIHBhcnNlIHJlc3VsdCBwcmlvciB0byBjYWxsaW5nCisgICAgICogdGhpcyBmdW5jdGlvbgorICAgICAqIEByZXR1cm4gbmV3UnVsZVZhbHVlICsgb2xkUnVsZVZhbHVlCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSBjb21wb3NlUnVsZVZhbHVlKGRvdWJsZSBuZXdSdWxlVmFsdWUsIGRvdWJsZSBvbGRSdWxlVmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIG5ld1J1bGVWYWx1ZSArIG9sZFJ1bGVWYWx1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBOb3QgdXNlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGNhbGNVcHBlckJvdW5kKGRvdWJsZSBvbGRVcHBlckJvdW5kKSB7CisgICAgICAgIHJldHVybiAwOyAgIC8vIHRoaXMgdmFsdWUgaXMgaWdub3JlZAorICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBzaW1wbGUgYWNjZXNzb3IKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBUaGUgdG9rZW4gY2hhcmFjdGVyIGZvciBhIEZyYWN0aW9uYWxQYXJ0U3Vic3RpdHV0aW9uIGlzICZndDsuCisgICAgICogQHJldHVybiAnJmd0OycKKyAgICAgKi8KKyAgICBjaGFyIHRva2VuQ2hhcigpIHsKKyAgICAgICAgcmV0dXJuICc+JzsKKyAgICB9Cit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gQWJzb2x1dGVWYWx1ZVN1YnN0aXR1dGlvbgorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAvKioKKyAgKiBBIHN1YnN0aXR1dGlvbiB0aGF0IGZvcm1hdHMgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSBudW1iZXIuCisgICogVGhpcyBzdWJzdGl0aW9uIGlzIHJlcHJlc2VudGVkIGJ5ICZndDsmZ3Q7IGluIGEgbmVnYXRpdmUtbnVtYmVyIHJ1bGUuCisgICovCitjbGFzcyBBYnNvbHV0ZVZhbHVlU3Vic3RpdHV0aW9uIGV4dGVuZHMgTkZTdWJzdGl0dXRpb24geworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjb25zdGFudHMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBQdXRzIGEgY29weXJpZ2h0IGluIHRoZSAuY2xhc3MgZmlsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHROb3RpY2UKKyAgICAgICAgPSAiQ29weXJpZ2h0IFx1MDBhOTE5OTctMTk5OCBJQk0gQ29ycC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjb25zdHJ1Y3Rpb24KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGFuIEFic29sdXRlVmFsdWVTdWJzdGl0dXRpb24uICBUaGlzIGp1c3QgdXNlcyB0aGUKKyAgICAgKiBzdXBlcmNsYXNzIGNvbnN0cnVjdG9yLgorICAgICAqLworICAgIEFic29sdXRlVmFsdWVTdWJzdGl0dXRpb24oaW50IHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5GUnVsZVNldCBydWxlU2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGZvcm1hdHRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBkZXNjcmlwdGlvbikgeworICAgICAgICBzdXBlcihwb3MsIHJ1bGVTZXQsIGZvcm1hdHRlciwgZGVzY3JpcHRpb24pOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBmb3JtYXR0aW5nCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIG51bWJlci4KKyAgICAgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkLgorICAgICAqIEByZXR1cm4gYWJzKG51bWJlcikKKyAgICAgKi8KKyAgICBwdWJsaWMgbG9uZyB0cmFuc2Zvcm1OdW1iZXIobG9uZyBudW1iZXIpIHsKKyAgICAgICAgcmV0dXJuIE1hdGguYWJzKG51bWJlcik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIG51bWJlci4KKyAgICAgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkLgorICAgICAqIEByZXR1cm4gYWJzKG51bWJlcikKKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIHRyYW5zZm9ybU51bWJlcihkb3VibGUgbnVtYmVyKSB7CisgICAgICAgIHJldHVybiBNYXRoLmFicyhudW1iZXIpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBwYXJzaW5nCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgYWRkdGl2ZSBpbnZlcnNlIG9mIHRoZSByZXN1bHQgb2YgcGFyc2luZyB0aGUKKyAgICAgKiBzdWJzdGl0dXRpb24gKHRoaXMgc3VwZXJzZWRlcyB0aGUgZWFybGllciBwYXJ0aWFsIHJlc3VsdCkKKyAgICAgKiBAcGFyYW0gbmV3UnVsZVZhbHVlIFRoZSByZXN1bHQgb2YgcGFyc2luZyB0aGUgc3Vic3RpdHV0aW9uCisgICAgICogQHBhcmFtIG9sZFJ1bGVWYWx1ZSBUaGUgcGFydGlhbCBwYXJzZSByZXN1bHQgcHJpb3IgdG8gY2FsbGluZworICAgICAqIHRoaXMgZnVuY3Rpb24KKyAgICAgKiBAcmV0dXJuIC1uZXdSdWxlVmFsdWUKKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGNvbXBvc2VSdWxlVmFsdWUoZG91YmxlIG5ld1J1bGVWYWx1ZSwgZG91YmxlIG9sZFJ1bGVWYWx1ZSkgeworICAgICAgICByZXR1cm4gLW5ld1J1bGVWYWx1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSB1cHBlciBib3VuZCBiZWNrIHVwIHRvIGNvbnNpZGVyIGFsbCBydWxlcworICAgICAqIEBwYXJhbSBvbGRVcHBlckJvdW5kIElnbm9yZWQuCisgICAgICogQHJldHVybiBEb3VibGUuTUFYX1ZBTFVFCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSBjYWxjVXBwZXJCb3VuZChkb3VibGUgb2xkVXBwZXJCb3VuZCkgeworICAgICAgICByZXR1cm4gRG91YmxlLk1BWF9WQUxVRTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gc2ltcGxlIGFjY2Vzc29yCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogVGhlIHRva2VuIGNoYXJhY3RlciBmb3IgYW4gQWJzb2x1dGVWYWx1ZVN1YnN0aXR1dGlvbiBpcyAmZ3Q7CisgICAgICogQHJldHVybiAnJmd0OycKKyAgICAgKi8KKyAgICBjaGFyIHRva2VuQ2hhcigpIHsKKyAgICAgICAgcmV0dXJuICc+JzsKKyAgICB9Cit9CisKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gTnVtZXJhdG9yU3Vic3RpdHV0aW9uCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLyoqCisgKiBBIHN1YnN0aXR1dGlvbiB0aGF0IG11bHRpcGxpZXMgdGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQgKHdoaWNoIGlzCisgKiBiZXR3ZWVuIDAgYW5kIDEpIGJ5IHRoZSBiYXNlIHZhbHVlIG9mIHRoZSBydWxlIHRoYXQgb3ducyBpdCBhbmQKKyAqIGZvcm1hdHMgdGhlIHJlc3VsdC4gIEl0IGlzIHJlcHJlc2VudGVkIGJ5ICZsdDsmbHQ7IGluIHRoZSBydWxlcworICogaW4gYSBmcmFjdGlvbiBydWxlIHNldC4KKyAqLworY2xhc3MgTnVtZXJhdG9yU3Vic3RpdHV0aW9uIGV4dGVuZHMgTkZTdWJzdGl0dXRpb24geworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjb25zdGFudHMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBQdXRzIGEgY29weXJpZ2h0IGluIHRoZSAuY2xhc3MgZmlsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHROb3RpY2UKKyAgICAgICAgPSAiQ29weXJpZ2h0IFx1MDBhOTE5OTctMTk5OCBJQk0gQ29ycC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBkYXRhIG1lbWJlcnMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBUaGUgZGVub21pbmF0b3Igb2YgdGhlIGZyYWN0aW9uIHdlJ3JlIGZpbmRpbmcgdGhlIG51bWVyYXRvciBmb3IuCisgICAgICogKFRoZSBiYXNlIHZhbHVlIG9mIHRoZSBydWxlIHRoYXQgb3ducyB0aGlzIHN1YnN0aXR1dGlvbi4pCisgICAgICovCisgICAgZG91YmxlIGRlbm9taW5hdG9yOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGNvbnN0cnVjdGlvbgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBOdW1iZXJhdG9yU3Vic3RpdHV0aW9uLiAgSW4gYWRkaXRpb24gdG8gdGhlIGluaGVyaXRlZAorICAgICAqIGZpZWxkcywgYSBOdW1lcmF0b3JTdWJzdGl0dXRpb24ga2VlcHMgdHJhY2sgb2YgYSBkZW5vbWluYXRvciwgd2hpY2gKKyAgICAgKiBpcyBtZXJlbHkgdGhlIGJhc2UgdmFsdWUgb2YgdGhlIHJ1bGUgdGhhdCBvd25zIGl0LgorICAgICAqLworICAgIE51bWVyYXRvclN1YnN0aXR1dGlvbihpbnQgcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZGVub21pbmF0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE5GUnVsZVNldCBydWxlU2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZm9ybWF0dGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgc3VwZXIocG9zLCBydWxlU2V0LCBmb3JtYXR0ZXIsIGRlc2NyaXB0aW9uKTsKKworICAgICAgICAvLyB0aGlzIHN1YnN0aXR1dGlvbidzIGJlaGF2aW9yIGRlcGVuZHMgb24gdGhlIHJ1bGUncyBiYXNlIHZhbHVlCisgICAgICAgIC8vIFJhdGhlciB0aGFuIGtlZXBpbmcgYSBiYWNrcG9pbnRlciB0byB0aGUgcnVsZSwgd2UgY29weSBpdHMKKyAgICAgICAgLy8gYmFzZSB2YWx1ZSBoZXJlCisgICAgICAgIHRoaXMuZGVub21pbmF0b3IgPSBkZW5vbWluYXRvcjsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gYm9pbGVycGxhdGUKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBUZXN0cyB0d28gTnVtZXJhdG9yU3Vic3RpdHV0aW9ucyBmb3IgZXF1YWxpdHkKKyAgICAgKiBAcGFyYW0gdGhhdCBUaGUgb3RoZXIgTnVtZXJhdG9yU3Vic3RpdHV0aW9uCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSB0d28gb2JqZWN0cyBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IHRoYXQpIHsKKyAgICAgICAgaWYgKHN1cGVyLmVxdWFscyh0aGF0KSkgeworICAgICAgICAgICAgTnVtZXJhdG9yU3Vic3RpdHV0aW9uIHRoYXQyID0gKE51bWVyYXRvclN1YnN0aXR1dGlvbil0aGF0OworCisgICAgICAgICAgICByZXR1cm4gZGVub21pbmF0b3IgPT0gdGhhdDIuZGVub21pbmF0b3I7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gZm9ybWF0dGluZworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQgdGltZXMgdGhlIGRlbm9taW5hdG9yLgorICAgICAqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQKKyAgICAgKiBAcmV0dXJuIG51bWJlciAqIGRlbm9taW5hdG9yCisgICAgICovCisgICAgcHVibGljIGxvbmcgdHJhbnNmb3JtTnVtYmVyKGxvbmcgbnVtYmVyKSB7CisgICAgICAgIHJldHVybiBNYXRoLnJvdW5kKG51bWJlciAqIGRlbm9taW5hdG9yKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkIHRpbWVzIHRoZSBkZW5vbWluYXRvci4KKyAgICAgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkCisgICAgICogQHJldHVybiBudW1iZXIgKiBkZW5vbWluYXRvcgorICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgdHJhbnNmb3JtTnVtYmVyKGRvdWJsZSBudW1iZXIpIHsKKyAgICAgICAgcmV0dXJuIE1hdGgucm91bmQobnVtYmVyICogZGVub21pbmF0b3IpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBwYXJzaW5nCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogRGlzcGF0Y2hlcyB0byB0aGUgaW5oZXJpdGVkIHZlcnNpb24gb2YgdGhpcyBmdW5jdGlvbiwgYnV0IG1ha2VzCisgICAgICogc3VyZSB0aGF0IGxlbmllbnRQYXJzZSBpcyBvZmYuCisgICAgICovCisgICAgcHVibGljIE51bWJlciBkb1BhcnNlKFN0cmluZyB0ZXh0LCBQYXJzZVBvc2l0aW9uIHBhcnNlUG9zaXRpb24sIGRvdWJsZSBiYXNlVmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgdXBwZXJCb3VuZCwgYm9vbGVhbiBsZW5pZW50UGFyc2UpIHsKKyAgICAgICAgLy8gd2UgZG9uJ3QgaGF2ZSB0byBkbyBhbnl0aGluZyBzcGVjaWFsIHRvIGRvIHRoZSBwYXJzaW5nIGhlcmUsCisgICAgICAgIC8vIGJ1dCB3ZSBoYXZlIHRvIHR1cm4gbGVuaWVudCBwYXJzaW5nIG9mZi0tIGlmIHdlIGxlYXZlIGl0IG9uLAorICAgICAgICAvLyBpdCBTRVJJT1VTTFkgbWVzc2VzIHVwIHRoZSBhbGdvcml0aG0KKyAgICAgICAgcmV0dXJuIHN1cGVyLmRvUGFyc2UodGV4dCwgcGFyc2VQb3NpdGlvbiwgYmFzZVZhbHVlLCB1cHBlckJvdW5kLCBmYWxzZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGl2aWRlcyB0aGUgcmVzdWx0IG9mIHBhcnNpbmcgdGhlIHN1YnN0aXR1dGlvbiBieSB0aGUgcGFydGlhbAorICAgICAqIHBhcnNlIHJlc3VsdC4KKyAgICAgKiBAcGFyYW0gbmV3UnVsZVZhbHVlIFRoZSByZXN1bHQgb2YgcGFyc2luZyB0aGUgc3Vic3RpdHV0aW9uCisgICAgICogQHBhcmFtIG9sZFJ1bGVWYWx1ZSBUaGUgb3duaW5nIHJ1bGUncyBiYXNlIHZhbHVlCisgICAgICogQHJldHVybiBuZXdSdWxlVmFsdWUgLyBvbGRSdWxlVmFsdWUKKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGNvbXBvc2VSdWxlVmFsdWUoZG91YmxlIG5ld1J1bGVWYWx1ZSwgZG91YmxlIG9sZFJ1bGVWYWx1ZSkgeworICAgICAgICByZXR1cm4gbmV3UnVsZVZhbHVlIC8gb2xkUnVsZVZhbHVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHVwZXIgYm91bmQgZG93biB0byB0aGlzIHJ1bGUncyBiYXNlIHZhbHVlCisgICAgICogQHBhcmFtIG9sZFVwcGVyQm91bmQgSWdub3JlZAorICAgICAqIEByZXR1cm4gVGhlIGJhc2UgdmFsdWUgb2YgdGhlIHJ1bGUgb3duaW5nIHRoaXMgc3Vic3RpdHV0aW9uCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSBjYWxjVXBwZXJCb3VuZChkb3VibGUgb2xkVXBwZXJCb3VuZCkgeworICAgICAgICByZXR1cm4gZGVub21pbmF0b3I7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIHNpbXBsZSBhY2Nlc3NvcgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFRoZSB0b2tlbiBjaGFyYWN0ZXIgZm9yIGEgTnVtZXJhdG9yU3Vic3RpdHV0aW9uIGlzICZsdDsKKyAgICAgKiBAcmV0dXJuICcmbHQ7JworICAgICAqLworICAgIGNoYXIgdG9rZW5DaGFyKCkgeworICAgICAgICByZXR1cm4gJzwnOworICAgIH0KK30KKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBOdWxsU3Vic3RpdHV0aW9uCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworLyoqCisgKiBBIHN1YnN0aXR1dGlvbiB3aGljaCBkb2VzIG5vdGhpbmcuICBUaGlzIGNsYXNzIGV4aXN0cyBqdXN0IHRvIHNpbXBsaWZ5CisgKiB0aGUgbG9naWMgaW4gc29tZSBvdGhlciByb3V0aW5lcyBzbyB0aGF0IHRoZXkgZG9uJ3QgaGF2ZSB0byB3b3JyeQorICogYWJvdXQgaG93IG1hbnkgc3Vic3RpdHV0aW9ucyBhIHJ1bGUgaGFzLgorICovCitjbGFzcyBOdWxsU3Vic3RpdHV0aW9uIGV4dGVuZHMgTkZTdWJzdGl0dXRpb24geworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjb25zdGFudHMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBQdXRzIGEgY29weXJpZ2h0IGluIHRoZSAuY2xhc3MgZmlsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHROb3RpY2UKKyAgICAgICAgPSAiQ29weXJpZ2h0IFx1MDBhOTE5OTctMTk5OCBJQk0gQ29ycC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjb25zdHJ1Y3Rpb24KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgTnVsbFN1YnN0aXR1dGlvbi4gIFRoaXMganVzdCBkZWxlZ2F0ZXMgdG8gdGhlIHN1cGVyY2xhc3MKKyAgICAgKiBjb25zdHJ1Y3RvciwgYnV0IHRoZSBvbmx5IHZhbHVlIHdlIHJlYWxseSBjYXJlIGFib3V0IGlzIHRoZSBwb3NpdGlvbi4KKyAgICAgKi8KKyAgICBOdWxsU3Vic3RpdHV0aW9uKGludCBwb3MsCisgICAgICAgICAgICAgICAgICAgICBORlJ1bGVTZXQgcnVsZVNldCwKKyAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmb3JtYXR0ZXIsCisgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgc3VwZXIocG9zLCBydWxlU2V0LCBmb3JtYXR0ZXIsIGRlc2NyaXB0aW9uKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gYm9pbGVycGxhdGUKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBPbmx5IGNoZWNrcyBmb3IgY2xhc3MgZXF1YWxpdHkKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IHRoYXQpIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLmVxdWFscyh0aGF0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBOdWxsU3Vic3RpdHV0aW9ucyBkb24ndCBzaG93IHVwIGluIHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uCisgICAgICogb2YgYSBSdWxlQmFzZWROdW1iZXJGb3JtYXQKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICByZXR1cm4gIiI7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGZvcm1hdHRpbmcKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBEb2VzIG5vdGhpbmcuCisgICAgICovCisgICAgcHVibGljIHZvaWQgZG9TdWJzdGl0dXRpb24obG9uZyBudW1iZXIsIFN0cmluZ0J1ZmZlciB0b0luc2VydEludG8sIGludCBwb3MpIHsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEb2VzIG5vdGhpbmcuCisgICAgICovCisgICAgcHVibGljIHZvaWQgZG9TdWJzdGl0dXRpb24oZG91YmxlIG51bWJlciwgU3RyaW5nQnVmZmVyIHRvSW5zZXJ0SW50bywgaW50IHBvcykgeworICAgIH0KKworICAgIC8qKgorICAgICAqIE5ldmVyIGNhbGxlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgbG9uZyB0cmFuc2Zvcm1OdW1iZXIobG9uZyBudW1iZXIpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyoqCisgICAgICogTmV2ZXIgY2FsbGVkLgorICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgdHJhbnNmb3JtTnVtYmVyKGRvdWJsZSBudW1iZXIpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIHBhcnNpbmcKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBwYXJ0aWFsIHBhcnNlIHJlc3VsdCB1bmNoYW5nZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgTnVtYmVyIGRvUGFyc2UoU3RyaW5nIHRleHQsIFBhcnNlUG9zaXRpb24gcGFyc2VQb3NpdGlvbiwgZG91YmxlIGJhc2VWYWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSB1cHBlckJvdW5kLCBib29sZWFuIGxlbmllbnRQYXJzZSkgeworICAgICAgICBpZiAoYmFzZVZhbHVlID09IChsb25nKWJhc2VWYWx1ZSkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBMb25nKChsb25nKWJhc2VWYWx1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IERvdWJsZShiYXNlVmFsdWUpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogTmV2ZXIgY2FsbGVkLgorICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgY29tcG9zZVJ1bGVWYWx1ZShkb3VibGUgbmV3UnVsZVZhbHVlLCBkb3VibGUgb2xkUnVsZVZhbHVlKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qKgorICAgICAqIE5ldmVyIGNhbGxlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGNhbGNVcHBlckJvdW5kKGRvdWJsZSBvbGRVcHBlckJvdW5kKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBzaW1wbGUgYWNjZXNzb3JzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0cnVlICh0aGlzIF9pc18gYSBOaWxsU3Vic3RpdHV0aW9uKS4KKyAgICAgKiBAcmV0dXJuIHRydWUKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc051bGxTdWJzdGl0dXRpb24oKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIE5ldmVyIGNhbGxlZC4KKyAgICAgKi8KKyAgICBjaGFyIHRva2VuQ2hhcigpIHsKKyAgICAgICAgcmV0dXJuICcgJzsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvTm9ybWFsaXplci5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9Ob3JtYWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2U4NmExZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvTm9ybWFsaXplci5qYXZhCkBAIC0wLDAgKzEsMTY0NyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9BdHRpYy9Ob3JtYWxpemVyLmphdmEsdiAkIAorICogJERhdGU6IDIwMDEvMDQvMDIgMTk6MjE6MjEgJCAKKyAqICRSZXZpc2lvbjogMS4xMSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXh0OworCitpbXBvcnQgamF2YS5sYW5nLkNoYXJhY3RlcjsKK2ltcG9ydCBqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I7CitpbXBvcnQgamF2YS50ZXh0LlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGNvbS5pYm0udXRpbC5Db21wYWN0Qnl0ZUFycmF5OworaW1wb3J0IGNvbS5pYm0udXRpbC5VdGlsaXR5OworCisvKioKKyAqIDx0dD5Ob3JtYWxpemVyPC90dD4gdHJhbnNmb3JtcyBVbmljb2RlIHRleHQgaW50byBhbiBlcXVpdmFsZW50IGNvbXBvc2VkIG9yCisgKiBkZWNvbXBvc2VkIGZvcm0sIGFsbG93aW5nIGZvciBlYXNpZXIgc29ydGluZyBhbmQgc2VhcmNoaW5nIG9mIHRleHQuCisgKiA8dHQ+Tm9ybWFsaXplcjwvdHQ+IHN1cHBvcnRzIHRoZSBzdGFuZGFyZCBub3JtYWxpemF0aW9uIGZvcm1zIGRlc2NyaWJlZCBpbgorICogPGEgaHJlZj0iaHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHIxNS8iIHRhcmdldD0idW5pY29kZSI+CisgKiBVbmljb2RlIFRlY2huaWNhbCBSZXBvcnQgIzE1PC9hPi4KKyAqIDxwPgorICogQ2hhcmFjdGVycyB3aXRoIGFjY2VudHMgb3Igb3RoZXIgYWRvcm5tZW50cyBjYW4gYmUgZW5jb2RlZCBpbgorICogc2V2ZXJhbCBkaWZmZXJlbnQgd2F5cyBpbiBVbmljb2RlLiAgRm9yIGV4YW1wbGUsIHRha2UgdGhlIGNoYXJhY3RlciAiwiIKKyAqIChBLWFjdXRlKS4gICBJbiBVbmljb2RlLCB0aGlzIGNhbiBiZSBlbmNvZGVkIGFzIGEgc2luZ2xlIGNoYXJhY3RlciAodGhlCisgKiAiY29tcG9zZWQiIGZvcm0pOgorICogPHByZT4KKyAqICAgICAgMDBDMSAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEU8L3ByZT4KKyAqIG9yIGFzIHR3byBzZXBhcmF0ZSBjaGFyYWN0ZXJzICh0aGUgImRlY29tcG9zZWQiIGZvcm0pOgorICogPHByZT4KKyAqICAgICAgMDA0MSAgICBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCisgKiAgICAgIDAzMDEgICAgQ09NQklOSU5HIEFDVVRFIEFDQ0VOVDwvcHJlPgorICogPHA+CisgKiBUbyBhIHVzZXIgb2YgeW91ciBwcm9ncmFtLCBob3dldmVyLCBib3RoIG9mIHRoZXNlIHNlcXVlbmNlcyBzaG91bGQgYmUKKyAqIHRyZWF0ZWQgYXMgdGhlIHNhbWUgInVzZXItbGV2ZWwiIGNoYXJhY3RlciAiwiIuICBXaGVuIHlvdSBhcmUgc2VhcmNoaW5nIG9yCisgKiBjb21wYXJpbmcgdGV4dCwgeW91IG11c3QgZW5zdXJlIHRoYXQgdGhlc2UgdHdvIHNlcXVlbmNlcyBhcmUgdHJlYXRlZAorICogZXF1aXZhbGVudGx5LiAgSW4gYWRkaXRpb24sIHlvdSBtdXN0IGhhbmRsZSBjaGFyYWN0ZXJzIHdpdGggbW9yZSB0aGFuIG9uZQorICogYWNjZW50LiAgU29tZXRpbWVzIHRoZSBvcmRlciBvZiBhIGNoYXJhY3RlcidzIGNvbWJpbmluZyBhY2NlbnRzIGlzCisgKiBzaWduaWZpY2FudCwgd2hpbGUgaW4gb3RoZXIgY2FzZXMgYWNjZW50IHNlcXVlbmNlcyBpbiBkaWZmZXJlbnQgb3JkZXJzIGFyZQorICogcmVhbGx5IGVxdWl2YWxlbnQuCisgKiA8cD4KKyAqIFNpbWlsYXJseSwgdGhlIHN0cmluZyAiZmZpIiBjYW4gYmUgZW5jb2RlZCBhcyB0aHJlZSBzZXBhcmF0ZSBsZXR0ZXJzOgorICogPHByZT4KKyAqICAgICAgMDA2NiAgICBMQVRJTiBTTUFMTCBMRVRURVIgRgorICogICAgICAwMDY2ICAgIExBVElOIFNNQUxMIExFVFRFUiBGCisgKiAgICAgIDAwNjkgICAgTEFUSU4gU01BTEwgTEVUVEVSIEk8L3ByZT4KKyAqIG9yIGFzIHRoZSBzaW5nbGUgY2hhcmFjdGVyCisgKiA8cHJlPgorICogICAgICBGQjAzICAgIExBVElOIFNNQUxMIExJR0FUVVJFIEZGSTwvcHJlPgorICogPHA+CisgKiBUaGUgZmZpIGxpZ2F0dXJlIGlzIG5vdCBhIGRpc3RpbmN0IHNlbWFudGljIGNoYXJhY3RlciwgYW5kIHN0cmljdGx5IHNwZWFraW5nCisgKiBpdCBzaG91bGRuJ3QgYmUgaW4gVW5pY29kZSBhdCBhbGwsIGJ1dCBpdCB3YXMgaW5jbHVkZWQgZm9yIGNvbXBhdGliaWxpdHkKKyAqIHdpdGggZXhpc3RpbmcgY2hhcmFjdGVyIHNldHMgdGhhdCBhbHJlYWR5IHByb3ZpZGVkIGl0LiAgVGhlIFVuaWNvZGUgc3RhbmRhcmQKKyAqIGlkZW50aWZpZXMgc3VjaCBjaGFyYWN0ZXJzIGJ5IGdpdmluZyB0aGVtICJjb21wYXRpYmlsaXR5IiBkZWNvbXBvc2l0aW9ucworICogaW50byB0aGUgY29ycmVzcG9uZGluZyBzZW1hbnRpYyBjaGFyYWN0ZXJzLiAgV2hlbiBzb3J0aW5nIGFuZCBzZWFyY2hpbmcsIHlvdQorICogd2lsbCBvZnRlbiB3YW50IHRvIHVzZSB0aGVzZSBtYXBwaW5ncy4KKyAqIDxwPgorICogPHR0Pk5vcm1hbGl6ZXI8L3R0PiBoZWxwcyBzb2x2ZSB0aGVzZSBwcm9ibGVtcyBieSB0cmFuc2Zvcm1pbmcgdGV4dCBpbnRvIHRoZQorICogY2Fub25pY2FsIGNvbXBvc2VkIGFuZCBkZWNvbXBvc2VkIGZvcm1zIGFzIHNob3duIGluIHRoZSBmaXJzdCBleGFtcGxlIGFib3ZlLgorICogSW4gYWRkaXRpb24sIHlvdSBjYW4gaGF2ZSBpdCBwZXJmb3JtIGNvbXBhdGliaWxpdHkgZGVjb21wb3NpdGlvbnMgc28gdGhhdAorICogeW91IGNhbiB0cmVhdCBjb21wYXRpYmlsaXR5IGNoYXJhY3RlcnMgdGhlIHNhbWUgYXMgdGhlaXIgZXF1aXZhbGVudHMuCisgKiBGaW5hbGx5LCA8dHQ+Tm9ybWFsaXplcjwvdHQ+IHJlYXJyYW5nZXMgYWNjZW50cyBpbnRvIHRoZSBwcm9wZXIgY2Fub25pY2FsCisgKiBvcmRlciwgc28gdGhhdCB5b3UgZG8gbm90IGhhdmUgdG8gd29ycnkgYWJvdXQgYWNjZW50IHJlYXJyYW5nZW1lbnQgb24geW91cgorICogb3duLgorICogPHA+CisgKiA8dHQ+Tm9ybWFsaXplcjwvdHQ+IGFkZHMgb25lIG9wdGlvbmFsIGJlaGF2aW9yLCB7QGxpbmsgI0lHTk9SRV9IQU5HVUx9LAorICogdGhhdCBkaWZmZXJzIGZyb20KKyAqIHRoZSBzdGFuZGFyZCBVbmljb2RlIE5vcm1hbGl6YXRpb24gRm9ybXMuICBUaGlzIG9wdGlvbiBjYW4gYmUgcGFzc2VkCisgKiB0byB0aGUge0BsaW5rICNOb3JtYWxpemVyIGNvbnN0cnVjdG9yc30gYW5kIHRvIHRoZSBzdGF0aWMKKyAqIHtAbGluayAjY29tcG9zZSBjb21wb3NlfSBhbmQge0BsaW5rICNkZWNvbXBvc2UgZGVjb21wb3NlfSBtZXRob2RzLiAgVGhpcworICogb3B0aW9uLCBhbmQgYW55IHRoYXQgYXJlIGFkZGVkIGluIHRoZSBmdXR1cmUsIHdpbGwgYmUgdHVybmVkIG9mZiBieSBkZWZhdWx0LgorICogPHA+CisgKiBUaGVyZSBhcmUgdGhyZWUgY29tbW9uIHVzYWdlIG1vZGVscyBmb3IgPHR0Pk5vcm1hbGl6ZXI8L3R0Pi4gIEluIHRoZSBmaXJzdCwKKyAqIHRoZSBzdGF0aWMge0BsaW5rICNub3JtYWxpemUgbm9ybWFsaXplKCl9IG1ldGhvZCBpcyB1c2VkIHRvIHByb2Nlc3MgYW4KKyAqIGVudGlyZSBpbnB1dCBzdHJpbmcgYXQgb25jZS4gIFNlY29uZCwgeW91IGNhbiBjcmVhdGUgYSA8dHQ+Tm9ybWFsaXplcjwvdHQ+CisgKiBvYmplY3QgYW5kIHVzZSBpdCB0byBpdGVyYXRlIHRocm91Z2ggdGhlIG5vcm1hbGl6ZWQgZm9ybSBvZiBhIHN0cmluZyBieQorICogY2FsbGluZyB7QGxpbmsgI2ZpcnN0fSBhbmQge0BsaW5rICNuZXh0fS4gIEZpbmFsbHksIHlvdSBjYW4gdXNlIHRoZQorICoge0BsaW5rICNzZXRJbmRleCBzZXRJbmRleCgpfSBhbmQge0BsaW5rICNnZXRJbmRleH0gbWV0aG9kcyB0byBwZXJmb3JtCisgKiByYW5kb20tYWNjZXNzIGl0ZXJhdGlvbiwgd2hpY2ggaXMgdmVyeSB1c2VmdWwgZm9yIHNlYXJjaGluZy4KKyAqIDxwPgorICogPGI+Tm90ZTo8L2I+IDx0dD5Ob3JtYWxpemVyPC90dD4gb2JqZWN0cyBiZWhhdmUgbGlrZSBpdGVyYXRvcnMgYW5kIGhhdmUKKyAqIG1ldGhvZHMgc3VjaCBhcyA8dHQ+c2V0SW5kZXg8L3R0PiwgPHR0Pm5leHQ8L3R0PiwgPHR0PnByZXZpb3VzPC90dD4sIGV0Yy4KKyAqIFlvdSBzaG91bGQgbm90ZSB0aGF0IHdoaWxlIHRoZSA8dHQ+c2V0SW5kZXg8L3R0PiBhbmQgPHR0PmdldEluZGV4PC90dD4gcmVmZXIKKyAqIHRvIGluZGljZXMgaW4gdGhlIHVuZGVybHlpbmcgPGVtPmlucHV0PC9lbT4gdGV4dCBiZWluZyBwcm9jZXNzZWQsIHRoZQorICogPHR0Pm5leHQ8L3R0PiBhbmQgPHR0PnByZXZpb3VzPC90dD4gbWV0aG9kcyBpdCBpdGVyYXRlIHRocm91Z2ggY2hhcmFjdGVycworICogaW4gdGhlIG5vcm1hbGl6ZWQgPGVtPm91dHB1dDwvZW0+LiAgVGhpcyBtZWFucyB0aGF0IHRoZXJlIGlzIG5vdAorICogbmVjZXNzYXJpbHkgYSBvbmUtdG8tb25lIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gY2hhcmFjdGVycyByZXR1cm5lZAorICogYnkgPHR0Pm5leHQ8L3R0PiBhbmQgPHR0PnByZXZpb3VzPC90dD4gYW5kIHRoZSBpbmRpY2VzIHBhc3NlZCB0byBhbmQKKyAqIHJldHVybmVkIGZyb20gPHR0PnNldEluZGV4PC90dD4gYW5kIDx0dD5nZXRJbmRleDwvdHQ+LiAgSXQgaXMgZm9yIHRoaXMKKyAqIHJlYXNvbiB0aGF0IDx0dD5Ob3JtYWxpemVyPC90dD4gZG9lcyBub3QgaW1wbGVtZW50IHRoZQorICoge0BsaW5rIENoYXJhY3Rlckl0ZXJhdG9yfSBpbnRlcmZhY2UuCisgKiA8cD4KKyAqIDxiPk5vdGU6PC9iPiA8dHQ+Tm9ybWFsaXplcjwvdHQ+IGlzIGN1cnJlbnRseSBiYXNlZCBvbiB2ZXJzaW9uIDIuMS44CisgKiBvZiB0aGUgPGEgaHJlZj0iaHR0cDovL3d3dy51bmljb2RlLm9yZyIgdGFyZ2V0PSJ1bmljb2RlIj5Vbmljb2RlIFN0YW5kYXJkPC9hPi4KKyAqIEl0IHdpbGwgYmUgdXBkYXRlZCBhcyBsYXRlciB2ZXJzaW9ucyBvZiBVbmljb2RlIGFyZSByZWxlYXNlZC4gIElmIHlvdSBhcmUKKyAqIHVzaW5nIHRoaXMgY2xhc3Mgb24gYSBKREsgdGhhdCBzdXBwb3J0cyBhbiBlYXJsaWVyIHZlcnNpb24gb2YgVW5pY29kZSwgaXQKKyAqIGlzIHBvc3NpYmxlIHRoYXQgPHR0Pk5vcm1hbGl6ZXI8L3R0PiBtYXkgZ2VuZXJhdGUgY29tcG9zZWQgb3IgZGVkZWNvbXBvc2VkCisgKiBjaGFyYWN0ZXJzIGZvciB3aGljaCB5b3VyIEpESydzIHtAbGluayBqYXZhLmxhbmcuQ2hhcmFjdGVyfSBjbGFzcyBkb2VzIG5vdAorICogaGF2ZSBhbnkgZGF0YS4KKyAqIDxwPgorICogQGF1dGhvciBMYXVyYSBXZXJuZXIsIE1hcmsgRGF2aXMKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIE5vcm1hbGl6ZXIgeworCisgICAgLyoqCisgICAgICogQ29uc3RhbnQgaW5kaWNhdGluZyB0aGF0IHRoZSBlbmQgb2YgdGhlIGl0ZXJhdGlvbiBoYXMgYmVlbiByZWFjaGVkLgorICAgICAqIFRoaXMgaXMgZ3VhcmFudGVlZCB0byBoYXZlIHRoZSBzYW1lIHZhbHVlIGFzIHtAbGluayBDaGFyYWN0ZXJJdGVyYXRvciNET05FfS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNoYXIgRE9ORSA9IENoYXJhY3Rlckl0ZXJhdG9yLkRPTkU7CisKKyAgICAvLyBUaGlzIHRlbGxzIHVzIHdoYXQgdGhlIGJpdHMgaW4gdGhlICJtb2RlIiBvYmplY3QgbWVhbi4KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ09NUEFUX0JJVCA9IDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERFQ09NUF9CSVQgPSAyOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDT01QT1NFX0JJVCA9IDQ7CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGNsYXNzIHJlcHJlc2VudHMgdGhlIG1vZGUgb2YgYSB7QGxpbmsgTm9ybWFsaXplcn0KKyAgICAgKiBvYmplY3QsIDxpPmkuZS48L2k+IHRoZSBVbmljb2RlIE5vcm1hbGl6YXRpb24gRm9ybSBvZiB0aGUKKyAgICAgKiB0ZXh0IHRoYXQgdGhlIDx0dD5Ob3JtYWxpemVyPC90dD4gcHJvZHVjZXMuICA8dHQ+TW9kZTwvdHQ+IG9iamVjdHMKKyAgICAgKiBhcmUgdXNlZCBhcyBhcmd1bWVudHMgdG8gdGhlIHtAbGluayBOb3JtYWxpemVyI05vcm1hbGl6ZXIgY29uc3RydWN0b3JzfQorICAgICAqIGFuZCB7QGxpbmsgTm9ybWFsaXplciNzZXRNb2RlIHNldE1vZGV9IG1ldGhvZCBvZiA8dHQ+Tm9ybWFsaXplcjwvdHQ+LgorICAgICAqIDxwPgorICAgICAqIENsaWVudHMgY2Fubm90IGNyZWF0ZSA8dHQ+TW9kZTwvdHQ+IG9iamVjdHMgZGlyZWN0bHkuCisgICAgICogSW5zdGVhZCwgdXNlIHRoZSBwcmVkZWZpbmVkIGNvbnN0YW50cyB7QGxpbmsgTm9ybWFsaXplciNOT19PUH0sCisgICAgICoge0BsaW5rIE5vcm1hbGl6ZXIjQ09NUE9TRX0sIHtAbGluayBOb3JtYWxpemVyI0NPTVBPU0VfQ09NUEFUfSwKKyAgICAgKiB7QGxpbmsgTm9ybWFsaXplciNERUNPTVB9LCBhbmQge0BsaW5rIE5vcm1hbGl6ZXIjREVDT01QX0NPTVBBVH0uCisgICAgICogPHA+CisgICAgICogQHNlZSBOb3JtYWxpemVyCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBjbGFzcyBNb2RlIHsKKyAgICAgICAgTW9kZShpbnQgbSkgeworICAgICAgICAgICAgbW9kZSA9IG07CisgICAgICAgIH0KKyAgICAgICAgZmluYWwgYm9vbGVhbiBjb21wYXQoKSB7CisgICAgICAgICAgICByZXR1cm4gKG1vZGUgJiBDT01QQVRfQklUKSAhPSAwOworICAgICAgICB9CisgICAgICAgIGZpbmFsIGJvb2xlYW4gY29tcG9zZSgpIHsKKyAgICAgICAgICAgIHJldHVybiAobW9kZSAmIENPTVBPU0VfQklUKSAhPSAwOworICAgICAgICB9CisgICAgICAgIGZpbmFsIGJvb2xlYW4gZGVjb21wKCkgeworICAgICAgICAgICAgcmV0dXJuIChtb2RlICYgREVDT01QX0JJVCkgIT0gMDsKKyAgICAgICAgfQorICAgICAgICBmaW5hbCBpbnQgbW9kZTsKKyAgICB9OworCisgICAgLyoqCisgICAgICogTnVsbCBvcGVyYXRpb24gZm9yIHVzZSB3aXRoIHRoZSB7QGxpbmsgI05vcm1hbGl6ZXIgY29uc3RydWN0b3JzfQorICAgICAqIGFuZCB0aGUgc3RhdGljIHtAbGluayAjbm9ybWFsaXplIG5vcm1hbGl6ZX0gbWV0aG9kLiAgVGhpcyB2YWx1ZSB0ZWxscworICAgICAqIHRoZSA8dHQ+Tm9ybWFsaXplcjwvdHQ+IHRvIGRvIG5vdGhpbmcgYnV0IHJldHVybiB1bnByb2Nlc3NlZCBjaGFyYWN0ZXJzCisgICAgICogZnJvbSB0aGUgdW5kZXJseWluZyBTdHJpbmcgb3IgQ2hhcmFjdGVySXRlcmF0b3IuICBJZiB5b3UgaGF2ZSBjb2RlIHdoaWNoCisgICAgICogcmVxdWlyZXMgcmF3IHRleHQgYXQgc29tZSB0aW1lcyBhbmQgbm9ybWFsaXplZCB0ZXh0IGF0IG90aGVycywgeW91IGNhbgorICAgICAqIHVzZSA8dHQ+Tk9fT1A8L3R0PiBmb3IgdGhlIGNhc2VzIHdoZXJlIHlvdSB3YW50IHJhdyB0ZXh0LCByYXRoZXIKKyAgICAgKiB0aGFuIGhhdmluZyBhIHNlcGFyYXRlIGNvZGUgcGF0aCB0aGF0IGJ5cGFzc2VzIDx0dD5Ob3JtYWxpemVyPC90dD4KKyAgICAgKiBhbHRvZ2V0aGVyLgorICAgICAqIDxwPgorICAgICAqIEBzZWUgI3NldE1vZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE1vZGUgTk9fT1AgPSBuZXcgTW9kZSgwKTsKKworICAgIC8qKgorICAgICAqIENhbm9uaWNhbCBkZWNvbXBvc2l0aW9uIGZvbGxvd2VkIGJ5IGNhbm9uaWNhbCBjb21wb3NpdGlvbi4gIFVzZWQgd2l0aCB0aGUKKyAgICAgKiB7QGxpbmsgI05vcm1hbGl6ZXIgY29uc3RydWN0b3JzfSBhbmQgdGhlIHN0YXRpYyB7QGxpbmsgI25vcm1hbGl6ZSBub3JtYWxpemV9CisgICAgICogbWV0aG9kIHRvIGRldGVybWluZSB0aGUgb3BlcmF0aW9uIHRvIGJlIHBlcmZvcm1lZC4KKyAgICAgKiA8cD4KKyAgICAgKiBJZiBhbGwgb3B0aW9uYWwgZmVhdHVyZXMgKDxpPmUuZy48L2k+IHtAbGluayAjSUdOT1JFX0hBTkdVTH0pIGFyZSB0dXJuZWQKKyAgICAgKiBvZmYsIHRoaXMgb3BlcmF0aW9uIHByb2R1Y2VzIG91dHB1dCB0aGF0IGlzIGluCisgICAgICogPGEgaHJlZj1odHRwOi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvcmVwb3J0cy90cjE1Lz5Vbmljb2RlIENhbm9uaWNhbCBGb3JtPC9hPgorICAgICAqIDxiPkM8L2I+LgorICAgICAqIDxwPgorICAgICAqIEBzZWUgI3NldE1vZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE1vZGUgQ09NUE9TRSA9IG5ldyBNb2RlKENPTVBPU0VfQklUKTsKKworICAgIC8qKgorICAgICAqIENvbXBhdGliaWxpdHkgZGVjb21wb3NpdGlvbiBmb2xsb3dlZCBieSBjYW5vbmljYWwgY29tcG9zaXRpb24uCisgICAgICogVXNlZCB3aXRoIHRoZSB7QGxpbmsgI05vcm1hbGl6ZXIgY29uc3RydWN0b3JzfSBhbmQgdGhlIHN0YXRpYworICAgICAqIHtAbGluayAjbm9ybWFsaXplIG5vcm1hbGl6ZX0gbWV0aG9kIHRvIGRldGVybWluZSB0aGUgb3BlcmF0aW9uIHRvIGJlIHBlcmZvcm1lZC4KKyAgICAgKiA8cD4KKyAgICAgKiBJZiBhbGwgb3B0aW9uYWwgZmVhdHVyZXMgKDxpPmUuZy48L2k+IHtAbGluayAjSUdOT1JFX0hBTkdVTH0pIGFyZSB0dXJuZWQKKyAgICAgKiBvZmYsIHRoaXMgb3BlcmF0aW9uIHByb2R1Y2VzIG91dHB1dCB0aGF0IGlzIGluCisgICAgICogPGEgaHJlZj1odHRwOi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvcmVwb3J0cy90cjE1Lz5Vbmljb2RlIENhbm9uaWNhbCBGb3JtPC9hPgorICAgICAqIDxiPktDPC9iPi4KKyAgICAgKiA8cD4KKyAgICAgKiBAc2VlICNzZXRNb2RlCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBNb2RlIENPTVBPU0VfQ09NUEFUID0gbmV3IE1vZGUoQ09NUE9TRV9CSVQgfCBDT01QQVRfQklUKTsKKworICAgIC8qKgorICAgICAqIENhbm9uaWNhbCBkZWNvbXBvc2l0aW9uLiAgVGhpcyB2YWx1ZSBpcyBwYXNzZWQgdG8gdGhlCisgICAgICoge0BsaW5rICNOb3JtYWxpemVyIGNvbnN0cnVjdG9yc30gYW5kIHRoZSBzdGF0aWMge0BsaW5rICNub3JtYWxpemUgbm9ybWFsaXplfQorICAgICAqIG1ldGhvZCB0byBkZXRlcm1pbmUgdGhlIG9wZXJhdGlvbiB0byBiZSBwZXJmb3JtZWQuCisgICAgICogPHA+CisgICAgICogSWYgYWxsIG9wdGlvbmFsIGZlYXR1cmVzICg8aT5lLmcuPC9pPiB7QGxpbmsgI0lHTk9SRV9IQU5HVUx9KSBhcmUgdHVybmVkCisgICAgICogb2ZmLCB0aGlzIG9wZXJhdGlvbiBwcm9kdWNlcyBvdXRwdXQgdGhhdCBpcyBpbgorICAgICAqIDxhIGhyZWY9aHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHIxNS8+VW5pY29kZSBDYW5vbmljYWwgRm9ybTwvYT4KKyAgICAgKiA8Yj5EPC9iPi4KKyAgICAgKiA8cD4KKyAgICAgKiBAc2VlICNzZXRNb2RlCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBNb2RlIERFQ09NUCA9IG5ldyBNb2RlKERFQ09NUF9CSVQpOworCisgICAgLyoqCisgICAgICogQ29tcGF0aWJpbGl0eSBkZWNvbXBvc2l0aW9uLiAgVGhpcyB2YWx1ZSBpcyBwYXNzZWQgdG8gdGhlCisgICAgICoge0BsaW5rICNOb3JtYWxpemVyIGNvbnN0cnVjdG9yc30gYW5kIHRoZSBzdGF0aWMge0BsaW5rICNub3JtYWxpemUgbm9ybWFsaXplfQorICAgICAqIG1ldGhvZCB0byBkZXRlcm1pbmUgdGhlIG9wZXJhdGlvbiB0byBiZSBwZXJmb3JtZWQuCisgICAgICogPHA+CisgICAgICogSWYgYWxsIG9wdGlvbmFsIGZlYXR1cmVzICg8aT5lLmcuPC9pPiB7QGxpbmsgI0lHTk9SRV9IQU5HVUx9KSBhcmUgdHVybmVkCisgICAgICogb2ZmLCB0aGlzIG9wZXJhdGlvbiBwcm9kdWNlcyBvdXRwdXQgdGhhdCBpcyBpbgorICAgICAqIDxhIGhyZWY9aHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHIxNS8+VW5pY29kZSBDYW5vbmljYWwgRm9ybTwvYT4KKyAgICAgKiA8Yj5LRDwvYj4uCisgICAgICogPHA+CisgICAgICogQHNlZSAjc2V0TW9kZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgTW9kZSBERUNPTVBfQ09NUEFUID0gbmV3IE1vZGUoREVDT01QX0JJVCB8IENPTVBBVF9CSVQpOworCisgICAgLyoqCisgICAgICogT3B0aW9uIHRvIGRpc2FibGUgSGFuZ3VsL0phbW8gY29tcG9zaXRpb24gYW5kIGRlY29tcG9zaXRpb24uCisgICAgICogVGhpcyBvcHRpb24gYXBwbGllcyB0byBLb3JlYW4gdGV4dCwKKyAgICAgKiB3aGljaCBjYW4gYmUgcmVwcmVzZW50ZWQgZWl0aGVyIGluIHRoZSBKYW1vIGFscGhhYmV0IG9yIGluIEhhbmd1bAorICAgICAqIGNoYXJhY3RlcnMsIHdoaWNoIGFyZSByZWFsbHkganVzdCB0d28gb3IgdGhyZWUgSmFtbyBjb21iaW5lZAorICAgICAqIGludG8gb25lIHZpc3VhbCBnbHlwaC4gIFNpbmNlIEphbW8gdGFrZXMgdXAgbW9yZSBzdG9yYWdlIHNwYWNlIHRoYW4KKyAgICAgKiBIYW5ndWwsIGFwcGxpY2F0aW9ucyB0aGF0IHByb2Nlc3Mgb25seSBIYW5ndWwgdGV4dCBtYXkgd2lzaCB0byB0dXJuCisgICAgICogdGhpcyBvcHRpb24gb24gd2hlbiBkZWNvbXBvc2luZyB0ZXh0LgorICAgICAqIDxwPgorICAgICAqIFRoZSBVbmljb2RlIHN0YW5kYXJkIHRyZWF0ZXMgSGFuZ3VsIHRvIEphbW8gY29udmVyc2lvbiBhcyBhCisgICAgICogY2Fub25pY2FsIGRlY29tcG9zaXRpb24sIHNvIHRoaXMgb3B0aW9uIG11c3QgYmUgdHVybmVkIDxiPm9mZjwvYj4gaWYgeW91CisgICAgICogd2lzaCB0byB0cmFuc2Zvcm0gc3RyaW5ncyBpbnRvIG9uZSBvZiB0aGUgc3RhbmRhcmQKKyAgICAgKiA8YSBocmVmPSJodHRwOi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvcmVwb3J0cy90cjE1LyIgdGFyZ2V0PSJ1bmljb2RlIj4KKyAgICAgKiBVbmljb2RlIE5vcm1hbGl6YXRpb24gRm9ybXM8L2E+LgorICAgICAqIDxwPgorICAgICAqIEBzZWUgI3NldE9wdGlvbgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElHTk9SRV9IQU5HVUwgPSAweDAwMDE7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBDb25zdHJ1Y3RvcnMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBuZXcgPHR0Pk5vcm1hbGl6ZXI8L3R0PiBvYmplY3QgZm9yIGl0ZXJhdGluZyBvdmVyIHRoZQorICAgICAqIG5vcm1hbGl6ZWQgZm9ybSBvZiBhIGdpdmVuIHN0cmluZy4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gc3RyICAgVGhlIHN0cmluZyB0byBiZSBub3JtYWxpemVkLiAgVGhlIG5vcm1hbGl6YXRpb24KKyAgICAgKiAgICAgICAgICAgICAgd2lsbCBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbW9kZSAgVGhlIG5vcm1hbGl6YXRpb24gbW9kZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgTm9ybWFsaXplcihTdHJpbmcgc3RyLCBNb2RlIG1vZGUpIHsKKyAgICAgICAgdGhpcyhuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3Ioc3RyKSwgbW9kZSwgMCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIG5ldyA8dHQ+Tm9ybWFsaXplcjwvdHQ+IG9iamVjdCBmb3IgaXRlcmF0aW5nIG92ZXIgdGhlCisgICAgICogbm9ybWFsaXplZCBmb3JtIG9mIGEgZ2l2ZW4gc3RyaW5nLgorICAgICAqIDxwPgorICAgICAqIFRoZSA8dHQ+b3B0aW9uczwvdHQ+IHBhcmFtZXRlciBzcGVjaWZpZXMgd2hpY2ggb3B0aW9uYWwKKyAgICAgKiA8dHQ+Tm9ybWFsaXplcjwvdHQ+IGZlYXR1cmVzIGFyZSB0byBiZSBlbmFibGVkIGZvciB0aGlzIG9iamVjdC4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gc3RyICAgVGhlIHN0cmluZyB0byBiZSBub3JtYWxpemVkLiAgVGhlIG5vcm1hbGl6YXRpb24KKyAgICAgKiAgICAgICAgICAgICAgd2lsbCBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbW9kZSAgVGhlIG5vcm1hbGl6YXRpb24gbW9kZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBvcHQgICBBbnkgb3B0aW9uYWwgZmVhdHVyZXMgdG8gYmUgZW5hYmxlZC4KKyAgICAgKiAgICAgICAgICAgICAgQ3VycmVudGx5IHRoZSBvbmx5IGF2YWlsYWJsZSBvcHRpb24gaXMge0BsaW5rICNJR05PUkVfSEFOR1VMfS4KKyAgICAgKiAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdGhlIGRlZmF1bHQgYmVoYXZpb3IgY29ycmVzcG9uZGluZyB0byBvbmUgb2YgdGhlCisgICAgICogICAgICAgICAgICAgIHN0YW5kYXJkIFVuaWNvZGUgTm9ybWFsaXphdGlvbiBGb3JtcywgdXNlIDAgZm9yIHRoaXMgYXJndW1lbnQuCisgICAgICovCisgICAgcHVibGljIE5vcm1hbGl6ZXIoU3RyaW5nIHN0ciwgTW9kZSBtb2RlLCBpbnQgb3B0KSB7CisgICAgICAgIHRoaXMobmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKHN0ciksIG1vZGUsIG9wdCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIG5ldyA8dHQ+Tm9ybWFsaXplcjwvdHQ+IG9iamVjdCBmb3IgaXRlcmF0aW5nIG92ZXIgdGhlCisgICAgICogbm9ybWFsaXplZCBmb3JtIG9mIHRoZSBnaXZlbiB0ZXh0LgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBpdGVyICBUaGUgaW5wdXQgdGV4dCB0byBiZSBub3JtYWxpemVkLiAgVGhlIG5vcm1hbGl6YXRpb24KKyAgICAgKiAgICAgICAgICAgICAgd2lsbCBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbW9kZSAgVGhlIG5vcm1hbGl6YXRpb24gbW9kZS4KKyAgICAgKgorICAgICAqLworICAgIHB1YmxpYyBOb3JtYWxpemVyKENoYXJhY3Rlckl0ZXJhdG9yIGl0ZXIsIE1vZGUgbW9kZSkgeworICAgICAgICB0aGlzKGl0ZXIsIG1vZGUsIDApOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBuZXcgPHR0Pk5vcm1hbGl6ZXI8L3R0PiBvYmplY3QgZm9yIGl0ZXJhdGluZyBvdmVyIHRoZQorICAgICAqIG5vcm1hbGl6ZWQgZm9ybSBvZiB0aGUgZ2l2ZW4gdGV4dC4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gaXRlciAgVGhlIGlucHV0IHRleHQgdG8gYmUgbm9ybWFsaXplZC4gIFRoZSBub3JtYWxpemF0aW9uCisgICAgICogICAgICAgICAgICAgIHdpbGwgc3RhcnQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3RyaW5nLgorICAgICAqCisgICAgICogQHBhcmFtIG1vZGUgIFRoZSBub3JtYWxpemF0aW9uIG1vZGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gb3B0ICAgQW55IG9wdGlvbmFsIGZlYXR1cmVzIHRvIGJlIGVuYWJsZWQuCisgICAgICogICAgICAgICAgICAgIEN1cnJlbnRseSB0aGUgb25seSBhdmFpbGFibGUgb3B0aW9uIGlzIHtAbGluayAjSUdOT1JFX0hBTkdVTH0uCisgICAgICogICAgICAgICAgICAgIElmIHlvdSB3YW50IHRoZSBkZWZhdWx0IGJlaGF2aW9yIGNvcnJlc3BvbmRpbmcgdG8gb25lIG9mIHRoZQorICAgICAqICAgICAgICAgICAgICBzdGFuZGFyZCBVbmljb2RlIE5vcm1hbGl6YXRpb24gRm9ybXMsIHVzZSAwIGZvciB0aGlzIGFyZ3VtZW50LgorICAgICAqLworICAgIHB1YmxpYyBOb3JtYWxpemVyKENoYXJhY3Rlckl0ZXJhdG9yIGl0ZXIsIE1vZGUgbW9kZSwgaW50IG9wdCkgeworICAgICAgICB0ZXh0ID0gaXRlcjsKKyAgICAgICAgdGhpcy5tb2RlID0gbW9kZTsKKyAgICAgICAgb3B0aW9ucyA9IG9wdDsKKworICAgICAgICAvLyBDb21wYXRpYmlsaXR5IGV4cGxvc2lvbnMgaGF2ZSBsb3dlciBpbmRpY2VzOyBza2lwIHRoZW0gaWYgbmVjZXNzYXJ5CisgICAgICAgIG1pbkRlY29tcCA9IG1vZGUuY29tcGF0KCkgPyAwIDogRGVjb21wRGF0YS5NQVhfQ09NUEFUOworICAgIH0KKworICAgIC8qKgorICAgICAqIENsb25lcyB0aGlzIDx0dD5Ob3JtYWxpemVyPC90dD4gb2JqZWN0LiAgQWxsIHByb3BlcnRpZXMgb2YgdGhpcworICAgICAqIG9iamVjdCBhcmUgZHVwbGljYXRlZCBpbiB0aGUgbmV3IG9iamVjdCwgaW5jbHVkaW5nIHRoZSBjbG9uaW5nIG9mIGFueQorICAgICAqIHtAbGluayBDaGFyYWN0ZXJJdGVyYXRvcn0gdGhhdCB3YXMgcGFzc2VkIGluIHRvIHRoZSBjb25zdHJ1Y3RvcgorICAgICAqIG9yIHRvIHtAbGluayAjc2V0VGV4dChDaGFyYWN0ZXJJdGVyYXRvcikgc2V0VGV4dH0uCisgICAgICogSG93ZXZlciwgdGhlIHRleHQgc3RvcmFnZSB1bmRlcmx5aW5nCisgICAgICogdGhlIDx0dD5DaGFyYWN0ZXJJdGVyYXRvcjwvdHQ+IGlzIG5vdCBkdXBsaWNhdGVkIHVubGVzcyB0aGUKKyAgICAgKiBpdGVyYXRvcidzIDx0dD5jbG9uZTwvdHQ+IG1ldGhvZCBkb2VzIHNvLgorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBOb3JtYWxpemVyIGNvcHkgPSAoTm9ybWFsaXplcikgc3VwZXIuY2xvbmUoKTsKKyAgICAgICAgICAgIGNvcHkudGV4dCA9IChDaGFyYWN0ZXJJdGVyYXRvcikgdGV4dC5jbG9uZSgpOworICAgICAgICAgICAgcmV0dXJuIGNvcHk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKENsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGUudG9TdHJpbmcoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBTdGF0aWMgdXRpbGl0eSBtZXRob2RzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBOb3JtYWxpemVzIGEgPHR0PlN0cmluZzwvdHQ+IHVzaW5nIHRoZSBnaXZlbiBub3JtYWxpemF0aW9uIG9wZXJhdGlvbi4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGUgPHR0Pm9wdGlvbnM8L3R0PiBwYXJhbWV0ZXIgc3BlY2lmaWVzIHdoaWNoIG9wdGlvbmFsCisgICAgICogPHR0Pk5vcm1hbGl6ZXI8L3R0PiBmZWF0dXJlcyBhcmUgdG8gYmUgZW5hYmxlZCBmb3IgdGhpcyBvcGVyYXRpb24uCisgICAgICogQ3VycmVudGx5IHRoZSBvbmx5IGF2YWlsYWJsZSBvcHRpb24gaXMge0BsaW5rICNJR05PUkVfSEFOR1VMfS4KKyAgICAgKiBJZiB5b3Ugd2FudCB0aGUgZGVmYXVsdCBiZWhhdmlvciBjb3JyZXNwb25kaW5nIHRvIG9uZSBvZiB0aGUgc3RhbmRhcmQKKyAgICAgKiBVbmljb2RlIE5vcm1hbGl6YXRpb24gRm9ybXMsIHVzZSAwIGZvciB0aGlzIGFyZ3VtZW50LgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBzdHIgICAgICAgdGhlIGlucHV0IHN0cmluZyB0byBiZSBub3JtYWxpemVkLgorICAgICAqCisgICAgICogQHBhcmFtIGFNb2RlICAgICB0aGUgbm9ybWFsaXphdGlvbiBtb2RlCisgICAgICoKKyAgICAgKiBAcGFyYW0gb3B0aW9ucyAgIHRoZSBvcHRpb25hbCBmZWF0dXJlcyB0byBiZSBlbmFibGVkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIG5vcm1hbGl6ZShTdHJpbmcgc3RyLCBNb2RlIG1vZGUsIGludCBvcHRpb25zKSB7CisgICAgICAgIGlmIChtb2RlLmNvbXBvc2UoKSkgeworICAgICAgICAgICAgLy8gY29tcG9zZSgpIGhhbmRsZXMgZGVjb21wb3NpdGlvbiBhbmQgcmVvcmRlcmluZzsKKyAgICAgICAgICAgIC8vIGRvbid0IGNhbGwgZGVjb21wb3NlKCkgZmlyc3QuCisgICAgICAgICAgICByZXR1cm4gY29tcG9zZShzdHIsIG1vZGUuY29tcGF0KCksIG9wdGlvbnMpOworICAgICAgICB9CisgICAgICAgIGlmIChtb2RlLmRlY29tcCgpKSB7CisgICAgICAgICAgICByZXR1cm4gZGVjb21wb3NlKHN0ciwgbW9kZS5jb21wYXQoKSwgb3B0aW9ucyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0cjsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBDb21wb3NlIG1ldGhvZHMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIENvbXBvc2UgYSA8dHQ+U3RyaW5nPC90dD4uCisgICAgICogPHA+CisgICAgICogVGhlIDx0dD5vcHRpb25zPC90dD4gcGFyYW1ldGVyIHNwZWNpZmllcyB3aGljaCBvcHRpb25hbAorICAgICAqIDx0dD5Ob3JtYWxpemVyPC90dD4gZmVhdHVyZXMgYXJlIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgb3BlcmF0aW9uLgorICAgICAqIEN1cnJlbnRseSB0aGUgb25seSBhdmFpbGFibGUgb3B0aW9uIGlzIHtAbGluayAjSUdOT1JFX0hBTkdVTH0uCisgICAgICogSWYgeW91IHdhbnQgdGhlIGRlZmF1bHQgYmVoYXZpb3IgY29ycmVzcG9uZGluZworICAgICAqIHRvIFVuaWNvZGUgTm9ybWFsaXphdGlvbiBGb3JtIDxiPkM8L2I+IG9yIDxiPktDPC9iPiwKKyAgICAgKiB1c2UgMCBmb3IgdGhpcyBhcmd1bWVudC4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gc291cmNlICAgIHRoZSBzdHJpbmcgdG8gYmUgY29tcG9zZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gY29tcGF0ICAgIFBlcmZvcm0gY29tcGF0aWJpbGl0eSBkZWNvbXBvc2l0aW9uIGJlZm9yZSBjb21wb3NpdGlvbi4KKyAgICAgKiAgICAgICAgICAgICAgICAgIElmIHRoaXMgYXJndW1lbnQgaXMgPHR0PmZhbHNlPC90dD4sIG9ubHkgY2Fub25pY2FsCisgICAgICogICAgICAgICAgICAgICAgICBkZWNvbXBvc2l0aW9uIHdpbGwgYmUgcGVyZm9ybWVkLgorICAgICAqCisgICAgICogQHBhcmFtIG9wdGlvbnMgICB0aGUgb3B0aW9uYWwgZmVhdHVyZXMgdG8gYmUgZW5hYmxlZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gICAgICAgICAgdGhlIGNvbXBvc2VkIHN0cmluZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBjb21wb3NlKFN0cmluZyBzb3VyY2UsIGJvb2xlYW4gY29tcGF0LCBpbnQgb3B0aW9ucykKKyAgICB7CisgICAgICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIFN0cmluZ0J1ZmZlciBleHBsb2RlQnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworCisgICAgICAgIGludCAgICAgZXhwbG9kZVBvcyA9IEVNUFRZOyAgICAgICAgIC8vIFBvc2l0aW9uIGluIGlucHV0IGJ1ZmZlcgorICAgICAgICBpbnQgICAgIGJhc2VQb3MgPSAwOyAgICAgICAgICAgICAgICAvLyBQb3NpdGlvbiBvZiBsYXN0IGJhc2UgaW4gb3V0cHV0IHN0cmluZworICAgICAgICBpbnQgICAgIGJhc2VJbmRleCA9IDA7ICAgICAgICAgICAgICAvLyBJbmRleCBvZiBsYXN0IGJhc2UgaW4gImFjdGlvbnMiIGFycmF5CisgICAgICAgIGludCAgICAgY2xhc3Nlc1NlZW5MID0gMDsgICAgICAgICAgIC8vIENvbWJpbmluZyBjbGFzc2VzIHNlZW4gc2luY2UgbGFzdCBiYXNlCisgICAgICAgIGludCAgICAgY2xhc3Nlc1NlZW5IID0gMDsgICAgICAgICAgIC8vICA2NC1iaXQgbWFzaworICAgICAgICBpbnQgICAgIGFjdGlvbjsKKworICAgICAgICAvLyBDb21wYXRpYmlsaXR5IGV4cGxvc2lvbnMgaGF2ZSBsb3dlciBpbmRpY2VzOyBza2lwIHRoZW0gaWYgbmVjZXNzYXJ5CisgICAgICAgIGludCBtaW5FeHBsb2RlID0gY29tcGF0ID8gMCA6IENvbXBvc2VEYXRhLk1BWF9DT01QQVQ7CisgICAgICAgIGludCBtaW5EZWNvbXAgID0gY29tcGF0ID8gMCA6IERlY29tcERhdGEuTUFYX0NPTVBBVDsKKworICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigibWluRXhwbG9kZSA9ICIgKyBtaW5FeHBsb2RlKTsKKworICAgICAgICBpbnQgaSA9IDA7CisgICAgICAgIHdoaWxlIChpIDwgc291cmNlLmxlbmd0aCgpIHx8IGV4cGxvZGVQb3MgIT0gRU1QVFkpIHsKKyAgICAgICAgICAgIC8vIEdldCB0aGUgbmV4dCBjaGFyIGZyb20gZWl0aGVyIHRoZSBidWZmZXIgb3IgdGhlIHNvdXJjZQorICAgICAgICAgICAgY2hhciBjaDsKKyAgICAgICAgICAgIGlmIChleHBsb2RlUG9zID09IEVNUFRZKSB7CisgICAgICAgICAgICAgICAgY2ggPSBzb3VyY2UuY2hhckF0KGkrKyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNoID0gZXhwbG9kZUJ1Zi5jaGFyQXQoZXhwbG9kZVBvcysrKTsKKyAgICAgICAgICAgICAgICBpZiAoZXhwbG9kZVBvcyA+PSBleHBsb2RlQnVmLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGV4cGxvZGVQb3MgPSBFTVBUWTsKKyAgICAgICAgICAgICAgICAgICAgZXhwbG9kZUJ1Zi5zZXRMZW5ndGgoMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBHZXQgdGhlIGJhc2ljIGluZm8gZm9yIHRoZSBjaGFyYWN0ZXIKKyAgICAgICAgICAgIGludCBjaGFySW5mbyA9IGNvbXBvc2VMb29rdXAoY2gpOworICAgICAgICAgICAgaW50IHR5cGUgPSBjaGFySW5mbyAmIENvbXBvc2VEYXRhLlRZUEVfTUFTSzsKKyAgICAgICAgICAgIGludCBpbmRleCA9IGNoYXJJbmZvID4+PiBDb21wb3NlRGF0YS5JTkRFWF9TSElGVDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oIkdvdCBjaGFyICIgKyBVdGlsaXR5LmhleChjaCkgKyAiLCB0eXBlPSIgKyB0eXBlICsgIiwgaW5kZXg9IiArIGluZGV4KTsKKworICAgICAgICAgICAgLy8gRXhhbXBsZXMgb2YgTk9OX0NPTVBPU0lOR19DT01CSU5JTkcgd2l0aCBhbiBpbmRleCA8IG1pbkV4cGxvZGU6CisgICAgICAgICAgICAvLyAwMEE4IDAxN0YgMDNEMiAxRkJGIDFGRkUKKyAgICAgICAgICAgIGlmICh0eXBlID09IENvbXBvc2VEYXRhLkJBU0UgfHwgKHR5cGUgPT0gQ29tcG9zZURhdGEuTk9OX0NPTVBPU0lOR19DT01CSU5JTkcgJiYgaW5kZXggPCBtaW5FeHBsb2RlKSkgeworICAgICAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJOZXcgYmFzZSAiICsgVXRpbGl0eS5oZXgoY2gpICsgIiwgdHlwZT0iICsgdHlwZSArICIsIGluZGV4PSIgKyBpbmRleCk7CisgICAgICAgICAgICAgICAgY2xhc3Nlc1NlZW5MID0gY2xhc3Nlc1NlZW5IID0gMDsKKyAgICAgICAgICAgICAgICBiYXNlSW5kZXggPSBpbmRleDsKKyAgICAgICAgICAgICAgICBiYXNlUG9zID0gcmVzdWx0Lmxlbmd0aCgpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2gpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDb21wb3NlRGF0YS5DT01CSU5JTkcpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gYXNzZXJ0KGluZGV4ID4gMCk7CisgICAgICAgICAgICAgICAgaW50IGNjbGFzcyA9IENvbXBvc2VEYXRhLnR5cGVCaXRbaW5kZXhdOworICAgICAgICAgICAgICAgIC8vIHR5cGVCaXQgaXMgYSBiaXQgdmFsdWUgZnJvbSAwLi42MywgaW5kaWNhdGluZyB0aGUgY2xhc3MuCisgICAgICAgICAgICAgICAgLy8gV2UgdXNlIGEgYml0IG1hc2sgb2YgMiAzMi1iaXQgaW50cy4KKyAgICAgICAgICAgICAgICBib29sZWFuIHNlZW4gPSAwICE9ICgoY2NsYXNzIDwgMzIpID8KKyAgICAgICAgICAgICAgICAgICAgKGNsYXNzZXNTZWVuTCAmICgxIDw8IGNjbGFzcykpIDoKKyAgICAgICAgICAgICAgICAgICAgKGNsYXNzZXNTZWVuSCAmICgxIDw8IChjY2xhc3MgJiAzMSkpKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiQ2xhc3Mgb2YgIiArIFV0aWxpdHkuaGV4KGNoKSArICIgPSAiICsgY2NsYXNzICsKKyAgICAgICAgICAgICAgICAgICAgIiBzZWVuOiIgKyBzZWVuICsKKyAgICAgICAgICAgICAgICAgICAgIiBiYXNlSW5kZXg6IiArIGJhc2VJbmRleCArCisgICAgICAgICAgICAgICAgICAgICIgYWN0aW9uOiIgKyBjb21wb3NlQWN0aW9uKGJhc2VJbmRleCwgaW5kZXgpKTsKKworICAgICAgICAgICAgICAgIC8vIFdlIGNhbiBvbmx5IGNvbWJpbmUgYSBjaGFyYWN0ZXIgd2l0aCB0aGUgYmFzZSBpZiB3ZSBoYXZlbid0CisgICAgICAgICAgICAgICAgLy8gYWxyZWFkeSBzZWVuIGEgY29tYmluaW5nIGNoYXJhY3RlciB3aXRoIHRoZSBzYW1lIGNhbm9uaWNhbCBjbGFzcy4KKyAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IGNvbWJpbmUgY2hhcmFjdGVycyB3aXRoIGFuIGluZGV4IGZyb20KKyAgICAgICAgICAgICAgICAvLyAxLi5DT01CSU5JTkdfQ09VTlQtMS4gIEluZGljZXMgPj0gQ09NQklOSU5HX0NPVU5UIGFyZQorICAgICAgICAgICAgICAgIC8vIGFsc28gY29tYmluaW5nIGNoYXJhY3RlcnMsIGJ1dCB3ZSBrbm93IHRoYXQgdGhleSBkb24ndAorICAgICAgICAgICAgICAgIC8vIGNvbXBvc2Ugd2l0aCBhbnl0aGluZy4KKyAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCBDb21wb3NlRGF0YS5DT01CSU5JTkdfQ09VTlQgJiYgIXNlZW4KKyAgICAgICAgICAgICAgICAgICAgJiYgKGFjdGlvbiA9IGNvbXBvc2VBY3Rpb24oYmFzZUluZGV4LCBpbmRleCkpID4gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhY3Rpb24gPiBDb21wb3NlRGF0YS5NQVhfQ09NUE9TRUQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFBhaXJ3aXNlIGV4cGxvc2lvbi4gIEFjdGlvbnMgYWJvdmUgdGhpcyB2YWx1ZSBhcmUgcmVhbGx5CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbmRpY2VzIGludG8gYW4gYXJyYXkgdGhhdCBpbiB0dXJuIGNvbnRhaW5zIGluZGljZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGludG8gdGhlIGV4cGxvZGluZyBzdHJpbmcgdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IFdoYXQgaWYgdGhlcmUgYXJlIHVucHJvY2Vzc2VkIGNoYXJzIGluIHRoZSBleHBsb2RlIGJ1ZmZlcj8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJQYWlyd2lzZSBleHBsb2RpbmciKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgbmV3QmFzZSA9IHBhaXJFeHBsb2RlKGV4cGxvZGVCdWYsIGFjdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICBleHBsb2RlUG9zID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRDaGFyQXQoYmFzZVBvcywgbmV3QmFzZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VJbmRleCA9IGNvbXBvc2VMb29rdXAobmV3QmFzZSkgPj4+IENvbXBvc2VEYXRhLklOREVYX1NISUZUOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oIk5ldyBiYXNlICIgKyBVdGlsaXR5LmhleChuZXdCYXNlKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3JtYWwgcGFpcndpc2UgY29tYmluYXRpb24uICBSZXBsYWNlIHRoZSBiYXNlIGNoYXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJQYWlyd2lzZSBjb21iaW5pbmciKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgbmV3QmFzZSA9IChjaGFyKSBhY3Rpb247CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuc2V0Q2hhckF0KGJhc2VQb3MsIG5ld0Jhc2UpOworCisgICAgICAgICAgICAgICAgICAgICAgICBiYXNlSW5kZXggPSBjb21wb3NlTG9va3VwKG5ld0Jhc2UpID4+PiBDb21wb3NlRGF0YS5JTkRFWF9TSElGVDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJOZXcgYmFzZSAiICsgVXRpbGl0eS5oZXgobmV3QmFzZSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAgICAgICAgIC8vIFNpbmNlIHRoZXJlIGFyZSBVbmljb2RlIGNoYXJhY3RlcnMgdGhhdCBjYW5ub3QgYmUgY29tYmluZWQgaW4gYXJiaXRyYXJ5CisgICAgICAgICAgICAgICAgICAgIC8vIG9yZGVyLCB3ZSBoYXZlIHRvIHJlLXByb2Nlc3MgYW55IGNvbWJpbmluZyBtYXJrcyB0aGF0IGdvIHdpdGggdGhpcworICAgICAgICAgICAgICAgICAgICAvLyBiYXNlIGNoYXJhY3Rlci4gIFRoZXJlIGFyZSBvbmx5IGZvdXIgY2hhcmFjdGVycyBpbiBVbmljb2RlIHRoYXQgaGF2ZQorICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIHByb2JsZW0uICBJZiB0aGV5IGFyZSBmaXhlZCBpbiBVbmljb2RlIDMuMCwgdGhpcyBjb2RlIGNhbiBnbyBhd2F5LgorICAgICAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgICAgICBpbnQgbGVuID0gcmVzdWx0Lmxlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICBpZiAobGVuIC0gYmFzZVBvcyA+IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSBiYXNlUG9zKzE7IGogPCBsZW47IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxvZGVCdWYuYXBwZW5kKHJlc3VsdC5jaGFyQXQoaikpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnNldExlbmd0aChiYXNlUG9zKzEpOworICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nlc1NlZW5MID0gY2xhc3Nlc1NlZW5IID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBsb2RlUG9zID09IEVNUFRZKSBleHBsb2RlUG9zID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIE5vIGNvbWJpbmF0aW9uIHdpdGggdGhpcyBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oIk5vIGFjdGlvbiIpOworICAgICAgICAgICAgICAgICAgICBidWJibGVBcHBlbmQocmVzdWx0LCBjaCwgY2NsYXNzKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNjbGFzcyA8IDMyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzU2VlbkwgfD0gMSA8PCBjY2xhc3M7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2VzU2VlbkggfD0gMSA8PCAoY2NsYXNzICYgMzEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoaW5kZXggPiBtaW5FeHBsb2RlKSB7CisgICAgICAgICAgICAgICAgLy8gU2luZ2xlIGV4cGxvZGluZyBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICBleHBsb2RlKGV4cGxvZGVCdWYsIGluZGV4KTsKKyAgICAgICAgICAgICAgICBleHBsb2RlUG9zID0gMDsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiZXhwbG9zaW9uOiAiICsgVXRpbGl0eS5oZXgoY2gpICsgIiAtLT4gIiArIFV0aWxpdHkuaGV4KGV4cGxvZGVCdWYpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ29tcG9zZURhdGEuSEFOR1VMICYmIG1pbkV4cGxvZGUgPT0gMCkgeworICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIGluIGNvbXBhdGliaWxpdHkgbW9kZSB3ZSBuZWVkIHRvIGRlY29tcG9zZSBIYW5ndWwgdG8gSmFtbywKKyAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHNvbWUgb2YgdGhlIEphbW8gbWlnaHQgaGF2ZSBjb21wYXRpYmlsaXR5IGRlY29tcG9zaXRpb25zLgorICAgICAgICAgICAgICAgIGhhbmd1bFRvSmFtbyhjaCwgZXhwbG9kZUJ1ZiwgbWluRGVjb21wKTsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiZGVjb21wb3NlZCBoYW5ndWwgIiArIFV0aWxpdHkuaGV4KGNoKSArICIgdG8gamFtbyAiICsgVXRpbGl0eS5oZXgoZXhwbG9kZUJ1ZikpOworICAgICAgICAgICAgICAgIGV4cGxvZGVQb3MgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDb21wb3NlRGF0YS5JTklUSUFMX0pBTU8pIHsKKyAgICAgICAgICAgICAgICBjbGFzc2VzU2VlbkwgPSBjbGFzc2VzU2VlbkggPSAwOworICAgICAgICAgICAgICAgIGJhc2VJbmRleCA9IENvbXBvc2VEYXRhLklOSVRJQUxfSkFNT19JTkRFWDsKKyAgICAgICAgICAgICAgICBiYXNlUG9zID0gcmVzdWx0Lmxlbmd0aCgpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoY2gpOworICAgICAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJnb3QgaW5pdGlhbCBqYW1vICIgKyBVdGlsaXR5LmhleChjaCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDb21wb3NlRGF0YS5NRURJQUxfSkFNTyAmJiBjbGFzc2VzU2VlbkwgPT0gMCAmJiBjbGFzc2VzU2VlbkggPT0gMAorICAgICAgICAgICAgICAgICAgICAgICAgJiYgYmFzZUluZGV4ID09IENvbXBvc2VEYXRhLklOSVRJQUxfSkFNT19JTkRFWCkgeworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBsYXN0IGNoYXJhY3RlciB3YXMgYW4gaW5pdGlhbCBqYW1vLCB3ZSBjYW4gY29tYmluZSBpdCB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgICAvLyBvbmUgdG8gY3JlYXRlIGEgSGFuZ3VsIGNoYXJhY3Rlci4KKyAgICAgICAgICAgICAgICBpbnQgbCA9IHJlc3VsdC5jaGFyQXQoYmFzZVBvcykgLSBKQU1PX0xCQVNFOworICAgICAgICAgICAgICAgIGludCB2ID0gY2ggLSBKQU1PX1ZCQVNFOworICAgICAgICAgICAgICAgIGNoYXIgbmV3Q2ggPSAoY2hhcikoSEFOR1VMX0JBU0UgKyAobCpKQU1PX1ZDT1VOVCArIHYpICogSkFNT19UQ09VTlQpOworICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRDaGFyQXQoYmFzZVBvcywgbmV3Q2gpOworCisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oImdvdCBtZWRpYWwgamFtbyAiICsgVXRpbGl0eS5oZXgoY2gpICsgIiwgcmVwbGFjaW5nIHdpdGggSGFuZ3VsICIgKyBVdGlsaXR5LmhleChuZXdDaCkpOworCisgICAgICAgICAgICAgICAgYmFzZUluZGV4ID0gQ29tcG9zZURhdGEuTUVESUFMX0pBTU9fSU5ERVg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IENvbXBvc2VEYXRhLkZJTkFMX0pBTU8gJiYgY2xhc3Nlc1NlZW5MID09IDAgJiYgY2xhc3Nlc1NlZW5IID09IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGJhc2VJbmRleCA9PSBDb21wb3NlRGF0YS5NRURJQUxfSkFNT19JTkRFWCkgeworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBsYXN0IGNoYXJhY3RlciB3YXMgYSBtZWRpYWwgamFtbyB0aGF0IHdlIHR1cm5lZCBpbnRvIEhhbmd1bCwKKyAgICAgICAgICAgICAgICAvLyB3ZSBjYW4gYWRkIHRoaXMgY2hhcmFjdGVyIHRvby4KKyAgICAgICAgICAgICAgICBjaGFyIG5ld0NoID0gKGNoYXIpKHJlc3VsdC5jaGFyQXQoYmFzZVBvcykgKyAoY2ggLSBKQU1PX1RCQVNFKSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LnNldENoYXJBdChiYXNlUG9zLCBuZXdDaCk7CisKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiZ290IGZpbmFsIGphbW8gIiArIFV0aWxpdHkuaGV4KGNoKSArICIsIHJlcGxhY2luZyB3aXRoIEhhbmd1bCAiICsgVXRpbGl0eS5oZXgobmV3Q2gpKTsKKworICAgICAgICAgICAgICAgIGJhc2VJbmRleCA9IDA7CisgICAgICAgICAgICAgICAgYmFzZVBvcyA9IC0xOworICAgICAgICAgICAgICAgIGNsYXNzZXNTZWVuTCA9IGNsYXNzZXNTZWVuSCA9IDA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJObyBiYXNlIGFzIG9mICIgKyBVdGlsaXR5LmhleChjaCkpOworICAgICAgICAgICAgICAgIGJhc2VJbmRleCA9IDA7CisgICAgICAgICAgICAgICAgYmFzZVBvcyA9IC0xOworICAgICAgICAgICAgICAgIGNsYXNzZXNTZWVuTCA9IGNsYXNzZXNTZWVuSCA9IDA7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjaCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBvc2Ugc3RhcnRpbmcgd2l0aCBjdXJyZW50IGlucHV0IGNoYXJhY3RlciBhbmQgY29udGludWluZworICAgICAqIHVudGlsIGp1c3QgYmVmb3JlIHRoZSBuZXh0IGJhc2UgY2hhci4KKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5JbnB1dDwvYj46CisgICAgICogPHVsPgorICAgICAqICA8bGk+dW5kZXJseWluZyBjaGFyIGl0ZXIgcG9pbnRzIHRvIGZpcnN0IGNoYXJhY3RlciB0byBjb21wb3NlCisgICAgICogPC91bD4KKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5PdXRwdXQ6PC9iPgorICAgICAqIDx1bD4KKyAgICAgKiAgPGxpPnJldHVybnMgZmlyc3QgY2hhciBvZiBjb21wb3NpdGlvbiBvciBET05FIGlmIGF0IGVuZAorICAgICAqICA8bGk+VW5kZXJseWluZyBjaGFyIGl0ZXIgaXMgcG9pbnRpbmcgYXQgbmV4dCBiYXNlIGNoYXIgb3IgcGFzdCBlbmQKKyAgICAgKiA8L3VsPgorICAgICAqLworICAgIHByaXZhdGUgY2hhciBuZXh0Q29tcG9zZSgpCisgICAgeworICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiLS0tLS0tLS0tLS0tLS0tIHRvcCBvZiBuZXh0Q29tcG9zZSgpIC0tLS0tLS0tLS0tLS0tLSIpOworCisgICAgICAgIGludCAgICAgZXhwbG9kZVBvcyA9IEVNUFRZOyAgICAgICAgIC8vIFBvc2l0aW9uIGluIGlucHV0IGJ1ZmZlcgorICAgICAgICBpbnQgICAgIGJhc2VQb3MgPSAwOyAgICAgICAgICAgICAgICAvLyBQb3NpdGlvbiBvZiBsYXN0IGJhc2UgaW4gb3V0cHV0IHN0cmluZworICAgICAgICBpbnQgICAgIGJhc2VJbmRleCA9IDA7ICAgICAgICAgICAgICAvLyBJbmRleCBvZiBsYXN0IGJhc2UgaW4gImFjdGlvbnMiIGFycmF5CisgICAgICAgIGludCAgICAgY2xhc3Nlc1NlZW5MID0gMDsgICAgICAgICAgIC8vIENvbWJpbmluZyBjbGFzc2VzIHNlZW4gc2luY2UgbGFzdCBiYXNlCisgICAgICAgIGludCAgICAgY2xhc3Nlc1NlZW5IID0gMDsgICAgICAgICAgIC8vICA2NC1iaXQgbWFzaworICAgICAgICBpbnQgICAgIGFjdGlvbjsKKyAgICAgICAgY2hhciAgICBsYXN0QmFzZSA9IDA7CisgICAgICAgIGJvb2xlYW4gY2hGcm9tVGV4dCA9IHRydWU7CisKKyAgICAgICAgLy8gQ29tcGF0aWJpbGl0eSBleHBsb3Npb25zIGhhdmUgbG93ZXIgaW5kaWNlczsgc2tpcCB0aGVtIGlmIG5lY2Vzc2FyeQorICAgICAgICBpbnQgbWluRXhwbG9kZSA9IG1vZGUuY29tcGF0KCkgPyAwIDogQ29tcG9zZURhdGEuTUFYX0NPTVBBVDsKKyAgICAgICAgaW50IG1pbkRlY29tcCAgPSBtb2RlLmNvbXBhdCgpID8gMCA6IERlY29tcERhdGEuTUFYX0NPTVBBVDsKKworICAgICAgICBpbml0QnVmZmVyKCk7CisgICAgICAgIGlmIChleHBsb2RlQnVmID09IG51bGwpIHsKKyAgICAgICAgICAgIGV4cGxvZGVCdWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBleHBsb2RlQnVmLnNldExlbmd0aCgwKTsKKyAgICAgICAgfQorCisgICAgICAgIGNoYXIgY2ggPSBjdXJGb3J3YXJkKCk7CisKKyAgICAgICAgd2hpbGUgKGNoICE9IERPTkUpIHsKKyAgICAgICAgICAgIC8vIEdldCB0aGUgYmFzaWMgaW5mbyBmb3IgdGhlIGNoYXJhY3RlcgorICAgICAgICAgICAgaW50IGNoYXJJbmZvID0gY29tcG9zZUxvb2t1cChjaCk7CisgICAgICAgICAgICBpbnQgdHlwZSA9IGNoYXJJbmZvICYgQ29tcG9zZURhdGEuVFlQRV9NQVNLOworICAgICAgICAgICAgaW50IGluZGV4ID0gY2hhckluZm8gPj4+IENvbXBvc2VEYXRhLklOREVYX1NISUZUOworCisgICAgICAgICAgICBpZiAodHlwZSA9PSBDb21wb3NlRGF0YS5CQVNFIHx8ICh0eXBlID09IENvbXBvc2VEYXRhLk5PTl9DT01QT1NJTkdfQ09NQklOSU5HICYmIGluZGV4IDwgbWluRXhwbG9kZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aCgpID4gMCAmJiBjaEZyb21UZXh0ICYmIGV4cGxvZGVQb3MgPT0gRU1QVFkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiB3ZSBoaXQgYSBiYXNlIGNoYXIgaW4gdGhlIHNvdXJjZSB0ZXh0LCB3ZSBjYW4gcmV0dXJuIHRoZSB0ZXh0CisgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQncyBiZWVuIGNvbXBvc2VkIHNvIGZhci4gIFdlJ2xsIHJlLXByb2Nlc3MgdGhpcyBjaGFyIG5leHQgdGltZSB0aHJvdWdoLgorICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigicmV0dXJuaW5nIGVhcmx5IGJlY2F1c2Ugd2UgaGl0IGEgbmV3IGJhc2UiKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNsYXNzZXNTZWVuTCA9IGNsYXNzZXNTZWVuSCA9IDA7CisgICAgICAgICAgICAgICAgYmFzZUluZGV4ID0gaW5kZXg7CisgICAgICAgICAgICAgICAgYmFzZVBvcyA9IGJ1ZmZlci5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGNoKTsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiZ290IEJBU0UgY2hhciAiICsgVXRpbGl0eS5oZXgoY2gpICsgIiwgdHlwZT0iICsgdHlwZSArICIsIGluZGV4PSIgKyBpbmRleCk7CisgICAgICAgICAgICAgICAgbGFzdEJhc2UgPSBjaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ29tcG9zZURhdGEuQ09NQklOSU5HKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIGFzc2VydChpbmRleCA+IDApOworICAgICAgICAgICAgICAgIGludCBjY2xhc3MgPSBDb21wb3NlRGF0YS50eXBlQml0W2luZGV4XTsKKyAgICAgICAgICAgICAgICBib29sZWFuIHNlZW4gPSAwICE9ICgoY2NsYXNzIDwgMzIpID8KKyAgICAgICAgICAgICAgICAgICAgKGNsYXNzZXNTZWVuTCAmICgxIDw8IGNjbGFzcykpIDoKKyAgICAgICAgICAgICAgICAgICAgKGNsYXNzZXNTZWVuSCAmICgxIDw8IChjY2xhc3MgJiAzMSkpKSk7CisKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiZ290IENPTUJJTklORyBjaGFyICIgKyBVdGlsaXR5LmhleChjaCkgKyAiLCB0eXBlPSIgKyB0eXBlICsgIiwgaW5kZXg9IiArIGluZGV4CisgICAgICAgICAgICAgICAgICAgICAgICArICIsIGNsYXNzPSIgKyBjY2xhc3MpOworCisgICAgICAgICAgICAgICAgLy8gV2UgY2FuIG9ubHkgY29tYmluZSBhIGNoYXJhY3RlciB3aXRoIHRoZSBiYXNlIGlmIHdlIGhhdmVuJ3QKKyAgICAgICAgICAgICAgICAvLyBhbHJlYWR5IHNlZW4gYSBjb21iaW5pbmcgY2hhcmFjdGVyIHdpdGggdGhlIHNhbWUgY2Fub25pY2FsIGNsYXNzLgorICAgICAgICAgICAgICAgIGlmIChpbmRleCA8IENvbXBvc2VEYXRhLkNPTUJJTklOR19DT1VOVCAmJiAhc2VlbgorICAgICAgICAgICAgICAgICAgICAmJiAoYWN0aW9uID0gY29tcG9zZUFjdGlvbihiYXNlSW5kZXgsIGluZGV4KSkgPiAwKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlvbiA+IENvbXBvc2VEYXRhLk1BWF9DT01QT1NFRCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFpcndpc2UgZXhwbG9zaW9uLiAgQWN0aW9ucyBhYm92ZSB0aGlzIHZhbHVlIGFyZSByZWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluZGljZXMgaW50byBhbiBhcnJheSB0aGF0IGluIHR1cm4gY29udGFpbnMgaW5kaWNlcworICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50byB0aGUgZXhwbG9kaW5nIHN0cmluZyB0YWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gVE9ETzogV2hhdCBpZiB0aGVyZSBhcmUgdW5wcm9jZXNzZWQgY2hhcnMgaW4gdGhlIGV4cGxvZGUgYnVmZmVyPworICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBuZXdCYXNlID0gcGFpckV4cGxvZGUoZXhwbG9kZUJ1ZiwgYWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxvZGVQb3MgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLnNldENoYXJBdChiYXNlUG9zLCBuZXdCYXNlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgYmFzZUluZGV4ID0gY29tcG9zZUxvb2t1cChuZXdCYXNlKSA+Pj4gQ29tcG9zZURhdGEuSU5ERVhfU0hJRlQ7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJQYWlyd2lzZSBleHBsb3Npb246ICIgKyBVdGlsaXR5LmhleChsYXN0QmFzZSkgKyAiLCIgKyBVdGlsaXR5LmhleChjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgLS0+ICIgKyBVdGlsaXR5LmhleChuZXdCYXNlKSArICIsIiArIFV0aWxpdHkuaGV4KGV4cGxvZGVCdWYpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RCYXNlID0gbmV3QmFzZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vcm1hbCBwYWlyd2lzZSBjb21iaW5hdGlvbi4gIFJlcGxhY2UgdGhlIGJhc2UgY2hhcgorICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBuZXdCYXNlID0gKGNoYXIpIGFjdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5zZXRDaGFyQXQoYmFzZVBvcywgbmV3QmFzZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VJbmRleCA9IGNvbXBvc2VMb29rdXAobmV3QmFzZSkgPj4+IENvbXBvc2VEYXRhLklOREVYX1NISUZUOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiUGFpcndpc2UgY29tYmluYXRpb246ICIgKyBVdGlsaXR5LmhleChsYXN0QmFzZSkgKyAiLCIgKyBVdGlsaXR5LmhleChjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgLS0+ICIgKyBVdGlsaXR5LmhleChuZXdCYXNlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0QmFzZSA9IG5ld0Jhc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAgICAgLy8gU2luY2UgdGhlcmUgYXJlIFVuaWNvZGUgY2hhcmFjdGVycyB0aGF0IGNhbm5vdCBiZSBjb21iaW5lZCBpbiBhcmJpdHJhcnkKKyAgICAgICAgICAgICAgICAgICAgLy8gb3JkZXIsIHdlIGhhdmUgdG8gcmUtcHJvY2VzcyBhbnkgY29tYmluaW5nIG1hcmtzIHRoYXQgZ28gd2l0aCB0aGlzCisgICAgICAgICAgICAgICAgICAgIC8vIGJhc2UgY2hhcmFjdGVyLiAgVGhlcmUgYXJlIG9ubHkgZm91ciBjaGFyYWN0ZXJzIGluIFVuaWNvZGUgdGhhdCBoYXZlCisgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgcHJvYmxlbS4gIElmIHRoZXkgYXJlIGZpeGVkIGluIFVuaWNvZGUgMy4wLCB0aGlzIGNvZGUgY2FuIGdvIGF3YXkuCisgICAgICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAgICAgICAgIGludCBsZW4gPSBidWZmZXIubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gLSBiYXNlUG9zID4gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oIlJlcHJvY2Vzc2luZyBjb21iaW5pbmcgbWFya3MiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSBiYXNlUG9zKzE7IGogPCBsZW47IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxvZGVCdWYuYXBwZW5kKGJ1ZmZlci5jaGFyQXQoaikpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLnNldExlbmd0aChiYXNlUG9zKzEpOworICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nlc1NlZW5MID0gY2xhc3Nlc1NlZW5IID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBsb2RlUG9zID09IEVNUFRZKSBleHBsb2RlUG9zID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJjaGFyIGRvZXNuJ3QgY29tYmluZSIpOworICAgICAgICAgICAgICAgICAgICAvLyBObyBjb21iaW5hdGlvbiB3aXRoIHRoaXMgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgIGJ1YmJsZUFwcGVuZChidWZmZXIsIGNoLCBjY2xhc3MpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2NsYXNzIDwgMzIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXNTZWVuTCB8PSAxIDw8IGNjbGFzczsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzZXNTZWVuSCB8PSAxIDw8IChjY2xhc3MgJiAzMSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChpbmRleCA+IG1pbkV4cGxvZGUpIHsKKyAgICAgICAgICAgICAgICAvLyBTaW5nbGUgZXhwbG9kaW5nIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgIGV4cGxvZGUoZXhwbG9kZUJ1ZiwgaW5kZXgpOworICAgICAgICAgICAgICAgIGV4cGxvZGVQb3MgPSAwOworICAgICAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJleHBsb3Npb246ICIgKyBVdGlsaXR5LmhleChjaCkgKyAiIC0tPiAiICsgVXRpbGl0eS5oZXgoZXhwbG9kZUJ1ZikpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDb21wb3NlRGF0YS5IQU5HVUwgJiYgbWluRXhwbG9kZSA9PSAwKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgd2UncmUgaW4gY29tcGF0aWJpbGl0eSBtb2RlIHdlIG5lZWQgdG8gZGVjb21wb3NlIEhhbmd1bCB0byBKYW1vLAorICAgICAgICAgICAgICAgIC8vIGJlY2F1c2Ugc29tZSBvZiB0aGUgSmFtbyBtaWdodCBoYXZlIGNvbXBhdGliaWxpdHkgZGVjb21wb3NpdGlvbnMuCisgICAgICAgICAgICAgICAgaGFuZ3VsVG9KYW1vKGNoLCBleHBsb2RlQnVmLCBtaW5EZWNvbXApOworICAgICAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJkZWNvbXBvc2VkIGhhbmd1bCAiICsgVXRpbGl0eS5oZXgoY2gpICsgIiB0byBqYW1vICIgKyBVdGlsaXR5LmhleChleHBsb2RlQnVmKSk7CisgICAgICAgICAgICAgICAgZXhwbG9kZVBvcyA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmICh0eXBlID09IENvbXBvc2VEYXRhLklOSVRJQUxfSkFNTykgeworICAgICAgICAgICAgICAgIGlmIChidWZmZXIubGVuZ3RoKCkgPiAwICYmIGNoRnJvbVRleHQgJiYgZXhwbG9kZVBvcyA9PSBFTVBUWSkgeworICAgICAgICAgICAgICAgICAgICAvLyBXaGVuIHdlIGhpdCBhIGJhc2UgY2hhciBpbiB0aGUgc291cmNlIHRleHQsIHdlIGNhbiByZXR1cm4gdGhlIHRleHQKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCdzIGJlZW4gY29tcG9zZWQgc28gZmFyLiAgV2UnbGwgcmUtcHJvY2VzcyB0aGlzIGNoYXIgbmV4dCB0aW1lIHRocm91Z2guCisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJyZXR1cm5pbmcgZWFybHkgYmVjYXVzZSB3ZSBoaXQgYSBuZXcgYmFzZSIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2xhc3Nlc1NlZW5MID0gY2xhc3Nlc1NlZW5IID0gMDsKKyAgICAgICAgICAgICAgICBiYXNlSW5kZXggPSBDb21wb3NlRGF0YS5JTklUSUFMX0pBTU9fSU5ERVg7CisgICAgICAgICAgICAgICAgYmFzZVBvcyA9IGJ1ZmZlci5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGNoKTsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiZ290IGluaXRpYWwgamFtbyAiICsgVXRpbGl0eS5oZXgoY2gpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ29tcG9zZURhdGEuTUVESUFMX0pBTU8gJiYgY2xhc3Nlc1NlZW5MID09IDAgJiYgY2xhc3Nlc1NlZW5IID09IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIGJhc2VJbmRleCA9PSBDb21wb3NlRGF0YS5JTklUSUFMX0pBTU9fSU5ERVgpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbGFzdCBjaGFyYWN0ZXIgd2FzIGFuIGluaXRpYWwgamFtbywgd2UgY2FuIGNvbWJpbmUgaXQgd2l0aCB0aGlzCisgICAgICAgICAgICAgICAgLy8gb25lIHRvIGNyZWF0ZSBhIEhhbmd1bCBjaGFyYWN0ZXIuCisgICAgICAgICAgICAgICAgaW50IGwgPSBidWZmZXIuY2hhckF0KGJhc2VQb3MpIC0gSkFNT19MQkFTRTsKKyAgICAgICAgICAgICAgICBpbnQgdiA9IGNoIC0gSkFNT19WQkFTRTsKKyAgICAgICAgICAgICAgICBjaGFyIG5ld0NoID0gKGNoYXIpKEhBTkdVTF9CQVNFICsgKGwqSkFNT19WQ09VTlQgKyB2KSAqIEpBTU9fVENPVU5UKTsKKyAgICAgICAgICAgICAgICBidWZmZXIuc2V0Q2hhckF0KGJhc2VQb3MsIG5ld0NoKTsKKworICAgICAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJnb3QgbWVkaWFsIGphbW8gIiArIFV0aWxpdHkuaGV4KGNoKSArICIsIHJlcGxhY2luZyB3aXRoIEhhbmd1bCAiICsgVXRpbGl0eS5oZXgobmV3Q2gpKTsKKworICAgICAgICAgICAgICAgIGJhc2VJbmRleCA9IENvbXBvc2VEYXRhLk1FRElBTF9KQU1PX0lOREVYOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDb21wb3NlRGF0YS5GSU5BTF9KQU1PICYmIGNsYXNzZXNTZWVuTCA9PSAwICYmIGNsYXNzZXNTZWVuSCA9PSAwCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBiYXNlSW5kZXggPT0gQ29tcG9zZURhdGEuTUVESUFMX0pBTU9fSU5ERVgpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbGFzdCBjaGFyYWN0ZXIgd2FzIGEgbWVkaWFsIGphbW8gdGhhdCB3ZSB0dXJuZWQgaW50byBIYW5ndWwsCisgICAgICAgICAgICAgICAgLy8gd2UgY2FuIGFkZCB0aGlzIGNoYXJhY3RlciB0b28uCisgICAgICAgICAgICAgICAgY2hhciBuZXdDaCA9IChjaGFyKShidWZmZXIuY2hhckF0KGJhc2VQb3MpICsgKGNoIC0gSkFNT19UQkFTRSkpOworICAgICAgICAgICAgICAgIGJ1ZmZlci5zZXRDaGFyQXQoYmFzZVBvcywgbmV3Q2gpOworCisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oImdvdCBmaW5hbCBqYW1vICIgKyBVdGlsaXR5LmhleChjaCkgKyAiLCByZXBsYWNpbmcgd2l0aCBIYW5ndWwgIiArIFV0aWxpdHkuaGV4KG5ld0NoKSk7CisKKyAgICAgICAgICAgICAgICBiYXNlSW5kZXggPSAwOworICAgICAgICAgICAgICAgIGJhc2VQb3MgPSAtMTsKKyAgICAgICAgICAgICAgICBjbGFzc2VzU2VlbkwgPSBjbGFzc2VzU2VlbkggPSAwOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBUT0RPOiBkZWFsIHdpdGggSkFNTyBjaGFyYWN0ZXIgdHlwZXMKKyAgICAgICAgICAgICAgICBiYXNlSW5kZXggPSAwOworICAgICAgICAgICAgICAgIGJhc2VQb3MgPSAtMTsKKyAgICAgICAgICAgICAgICBjbGFzc2VzU2VlbkwgPSBjbGFzc2VzU2VlbkggPSAwOworICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoY2gpOworICAgICAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJVTktOT1dOIGNoYXIgIiArIFV0aWxpdHkuaGV4KGNoKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChleHBsb2RlUG9zID09IEVNUFRZKSB7CisgICAgICAgICAgICAgICAgY2ggPSB0ZXh0Lm5leHQoKTsKKyAgICAgICAgICAgICAgICBjaEZyb21UZXh0ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY2ggPSBleHBsb2RlQnVmLmNoYXJBdChleHBsb2RlUG9zKyspOworICAgICAgICAgICAgICAgIGlmIChleHBsb2RlUG9zID49IGV4cGxvZGVCdWYubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXhwbG9kZVBvcyA9IEVNUFRZOworICAgICAgICAgICAgICAgICAgICBleHBsb2RlQnVmLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2hGcm9tVGV4dCA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChidWZmZXIubGVuZ3RoKCkgPiAwKSB7CisgICAgICAgICAgICBidWZmZXJMaW1pdCA9IGJ1ZmZlci5sZW5ndGgoKSAtIDE7CisgICAgICAgICAgICBjaCA9IGJ1ZmZlci5jaGFyQXQoMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjaCA9IERPTkU7CisgICAgICAgICAgICBidWZmZXJMaW1pdCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNoOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBvc2Ugc3RhcnRpbmcgd2l0aCB0aGUgaW5wdXQgY2hhciBqdXN0IGJlZm9yZSB0aGUgY3VycmVudCBwb3NpdGlvbgorICAgICAqIGFuZCBjb250aW51aW5nIGJhY2t3YXJkIHVudGlsIChhbmQgaW5jbHVkaW5nKSB0aGUgcHJldmlvdXMgYmFzZSBjaGFyLgorICAgICAqIDxwPgorICAgICAqIDxiPklucHV0PC9iPjoKKyAgICAgKiA8dWw+CisgICAgICogIDxsaT51bmRlcmx5aW5nIGNoYXIgaXRlciBwb2ludHMganVzdCBhZnRlciBsYXN0IGNoYXIgdG8gZGVjb21wb3NlCisgICAgICogPC91bD4KKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5PdXRwdXQ6PC9iPgorICAgICAqIDx1bD4KKyAgICAgKiAgPGxpPnJldHVybnMgbGFzdCBjaGFyIG9mIHJlc3VsdGluZyBkZWNvbXBvc2l0aW9uIHNlcXVlbmNlCisgICAgICogIDxsaT51bmRlcmx5aW5nIGl0ZXIgcG9pbnRzIHRvIGxvd2VzdC1pbmRleCBjaGFyIHdlIGRlY29tcG9zZWQsIGkuZS4gdGhlIGJhc2UgY2hhcgorICAgICAqIDwvdWw+CisgICAgICovCisgICAgcHJpdmF0ZSBjaGFyIHByZXZDb21wb3NlKCkgeworICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiLS0tLS0tLS0tLS0tLS0tIHRvcCBvZiBwcmV2Q29tcG9zZSgpIC0tLS0tLS0tLS0tLS0tLSIpOworCisgICAgICAgIC8vIENvbXBhdGliaWxpdHkgZXhwbG9zaW9ucyBoYXZlIGxvd2VyIGluZGljZXM7IHNraXAgdGhlbSBpZiBuZWNlc3NhcnkKKyAgICAgICAgaW50IG1pbkV4cGxvZGUgPSBtb2RlLmNvbXBhdCgpID8gMCA6IENvbXBvc2VEYXRhLk1BWF9DT01QQVQ7CisKKyAgICAgICAgaW5pdEJ1ZmZlcigpOworCisgICAgICAgIC8vIFNsdXJwIHVwIGNoYXJhY3RlcnMgdW50aWwgd2UgaGl0IGEgYmFzZSBjaGFyIG9yIGFuIGluaXRpYWwgSmFtbworICAgICAgICBjaGFyIGNoOworICAgICAgICB3aGlsZSAoKGNoID0gY3VyQmFja3dhcmQoKSkgIT0gRE9ORSkgeworICAgICAgICAgICAgYnVmZmVyLmluc2VydCgwLCBjaCk7CisKKyAgICAgICAgICAgIC8vIEdldCB0aGUgYmFzaWMgaW5mbyBmb3IgdGhlIGNoYXJhY3RlcgorICAgICAgICAgICAgaW50IGNoYXJJbmZvID0gY29tcG9zZUxvb2t1cChjaCk7CisgICAgICAgICAgICBpbnQgdHlwZSA9IGNoYXJJbmZvICYgQ29tcG9zZURhdGEuVFlQRV9NQVNLOworICAgICAgICAgICAgaW50IGluZGV4ID0gY2hhckluZm8gPj4+IENvbXBvc2VEYXRhLklOREVYX1NISUZUOworCisgICAgICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigicHJldkNvbXBvc2UgZ290IGNoYXIgIiArIFV0aWxpdHkuaGV4KGNoKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCB0eXBlPSIgKyB0eXBlICsgIiwgaW5kZXg9IiArIGluZGV4ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIG1pbkV4cGxvZGU9IiArIG1pbkV4cGxvZGUpOworCisgICAgICAgICAgICBpZiAodHlwZSA9PSBDb21wb3NlRGF0YS5CQVNFCisgICAgICAgICAgICAgICAgfHwgKHR5cGUgPT0gQ29tcG9zZURhdGEuTk9OX0NPTVBPU0lOR19DT01CSU5JTkcgJiYgaW5kZXggPCBtaW5FeHBsb2RlKQorICAgICAgICAgICAgICAgIHx8IHR5cGUgPT0gQ29tcG9zZURhdGEuSEFOR1VMCisgICAgICAgICAgICAgICAgfHwgdHlwZSA9PSBDb21wb3NlRGF0YS5JTklUSUFMX0pBTU8pCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gSWYgdGhlcmUncyBtb3JlIHRoYW4gb25lIGNoYXJhY3RlciBpbiB0aGUgYnVmZmVyLCBjb21wb3NlIGl0IGFsbCBhdCBvbmNlLi4uLgorICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aCgpID4gMCkgeworICAgICAgICAgICAgLy8gVE9ETzogVGhlIHBlcmZvcm1hbmNlIG9mIHRoaXMgaXMgYXdmdWw7IGFkZCBhIHdheSB0byBjb21wb3NlCisgICAgICAgICAgICAvLyBhIFN0cmluZ0J1ZmZlciBpbiBwbGFjZS4KKyAgICAgICAgICAgIFN0cmluZyBjb21wb3NlZCA9IGNvbXBvc2UoYnVmZmVyLnRvU3RyaW5nKCksIG1vZGUuY29tcGF0KCksIG9wdGlvbnMpOworICAgICAgICAgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oInByZXZDb21wb3NlIGNhbGxlZCBjb21wb3NlKCIgKyBVdGlsaXR5LmhleChidWZmZXIpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpLT4iICsgVXRpbGl0eS5oZXgoY29tcG9zZWQpKTsgICAgICAgICAgICAKKyAgICAgICAgICAgIGJ1ZmZlci5zZXRMZW5ndGgoMCk7CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGNvbXBvc2VkKTsKKworICAgICAgICAgICAgaWYgKGJ1ZmZlci5sZW5ndGgoKSA+IDEpIHsKKyAgICAgICAgICAgICAgICBidWZmZXJMaW1pdCA9IGJ1ZmZlclBvcyA9IGJ1ZmZlci5sZW5ndGgoKSAtIDE7CisgICAgICAgICAgICAgICAgY2ggPSBidWZmZXIuY2hhckF0KGJ1ZmZlclBvcyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNoID0gYnVmZmVyLmNoYXJBdCgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNoID0gRE9ORTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJwcmV2Q29tcG9zZSByZXR1cm5pbmcgIiArIFV0aWxpdHkuaGV4KGNoKSk7CisgICAgICAgIHJldHVybiBjaDsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGJ1YmJsZUFwcGVuZChTdHJpbmdCdWZmZXIgdGFyZ2V0LCBjaGFyIGNoLCBpbnQgY2NsYXNzKSB7CisgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCIgYnViYmxlQXBwZW5kKCIgKyBVdGlsaXR5LmhleCh0YXJnZXQpICsgIiwgIiArIFV0aWxpdHkuaGV4KGNoKSArICIsICIgKyBjY2xhc3MgKyAiKSIgKTsKKyAgICAgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oIiAgZ2V0Q29tcG9zZUNsYXNzKCIgKyBVdGlsaXR5LmhleChjaCkgKyAiKT0iICsgZ2V0Q29tcG9zZUNsYXNzKGNoKSk7CisgICAgICAgIGludCBpOworICAgICAgICBmb3IgKGkgPSB0YXJnZXQubGVuZ3RoKCkgLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICAgICAgaW50IGlDbGFzcyA9IGdldENvbXBvc2VDbGFzcyh0YXJnZXQuY2hhckF0KGkpKTsKKyAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCIgYnViYmxlQXBwZW5kOiB0YXJnZXRbIiArIGkgKyAiXT0iICsgVXRpbGl0eS5oZXgodGFyZ2V0LmNoYXJBdChpKSkgKyAiIGlzIGNsYXNzICIgKyBpQ2xhc3MpOworCisgICAgICAgICAgICBpZiAoaUNsYXNzID09IDEgfHwgaUNsYXNzIDw9IGNjbGFzcykgeyAgICAgIC8vIDEgbWVhbnMgY29tYmluaW5nIGNsYXNzIDAKKyAgICAgICAgICAgICAgICAvLyBXZSd2ZSBoaXQgc29tZXRoaW5nIHdlIGNhbid0IGJ1YmJsZSB0aGlzIGNoYXJhY3RlciBwYXN0LCBzbyBpbnNlcnQgaGVyZQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vIFdlIG5lZWQgdG8gaW5zZXJ0IGp1c3QgYWZ0ZXIgY2hhcmFjdGVyICJpIgorICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiIGJ1YmJsZUFwcGVuZCBpbnNlcnRpbmcgYXQgaW5kZXggIiArIChpKzEpKTsKKyAgICAgICAgdGFyZ2V0Lmluc2VydChpKzEsIGNoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgZ2V0Q29tcG9zZUNsYXNzKGNoYXIgY2gpIHsKKyAgICAgICAgaW50IGNjbGFzcyA9IDA7CisgICAgICAgIGludCBjaGFySW5mbyA9IGNvbXBvc2VMb29rdXAoY2gpOworICAgICAgICBpbnQgdHlwZSA9IGNoYXJJbmZvICYgQ29tcG9zZURhdGEuVFlQRV9NQVNLOworICAgICAgICBpZiAodHlwZSA9PSBDb21wb3NlRGF0YS5DT01CSU5JTkcpIHsKKyAgICAgICAgICAgIGNjbGFzcyA9IENvbXBvc2VEYXRhLnR5cGVCaXRbY2hhckluZm8gPj4+IENvbXBvc2VEYXRhLklOREVYX1NISUZUXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY2NsYXNzOworICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBpbnQgY29tcG9zZUxvb2t1cChjaGFyIGNoKSB7CisgICAgICAgIHJldHVybiBDb21wb3NlRGF0YS5sb29rdXAuZWxlbWVudEF0KGNoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgaW50IGNvbXBvc2VBY3Rpb24oaW50IGJhc2VJbmRleCwgaW50IGNvbUluZGV4KSB7CisgICAgICAgIHJldHVybiBDb21wb3NlRGF0YS5hY3Rpb25zLmVsZW1lbnRBdCgoY2hhcikoYmFzZUluZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgQ29tcG9zZURhdGEuTUFYX0JBU0VTKmNvbUluZGV4KSk7CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIHZvaWQgZXhwbG9kZShTdHJpbmdCdWZmZXIgdGFyZ2V0LCBpbnQgaW5kZXgpIHsKKyAgICAgICAgY2hhciBjaDsKKyAgICAgICAgd2hpbGUgKChjaCA9IENvbXBvc2VEYXRhLnJlcGxhY2UuY2hhckF0KGluZGV4KyspKSAhPSAwKQorICAgICAgICAgICAgdGFyZ2V0LmFwcGVuZChjaCk7CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIGNoYXIgcGFpckV4cGxvZGUoU3RyaW5nQnVmZmVyIHRhcmdldCwgaW50IGFjdGlvbikgeworICAgICAgICBpbnQgaW5kZXggPSBDb21wb3NlRGF0YS5hY3Rpb25JbmRleFthY3Rpb24gLSBDb21wb3NlRGF0YS5NQVhfQ09NUE9TRURdOworICAgICAgICBleHBsb2RlKHRhcmdldCwgaW5kZXggKyAxKTsKKyAgICAgICAgcmV0dXJuIENvbXBvc2VEYXRhLnJlcGxhY2UuY2hhckF0KGluZGV4KTsgICAvLyBOZXcgYmFzZSBjaGFyCisgICAgfQorCisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBEZWNvbXBvc2UgbWV0aG9kcworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogU3RhdGljIG1ldGhvZCB0byBkZWNvbXBvc2UgYSA8dHQ+U3RyaW5nPC90dD4uCisgICAgICogPHA+CisgICAgICogVGhlIDx0dD5vcHRpb25zPC90dD4gcGFyYW1ldGVyIHNwZWNpZmllcyB3aGljaCBvcHRpb25hbAorICAgICAqIDx0dD5Ob3JtYWxpemVyPC90dD4gZmVhdHVyZXMgYXJlIHRvIGJlIGVuYWJsZWQgZm9yIHRoaXMgb3BlcmF0aW9uLgorICAgICAqIEN1cnJlbnRseSB0aGUgb25seSBhdmFpbGFibGUgb3B0aW9uIGlzIHtAbGluayAjSUdOT1JFX0hBTkdVTH0uCisgICAgICogVGhlIGRlc2lyZWQgb3B0aW9ucyBzaG91bGQgYmUgT1InZWQgdG9nZXRoZXIgdG8gZGV0ZXJtaW5lIHRoZSB2YWx1ZQorICAgICAqIG9mIHRoaXMgYXJndW1lbnQuICBJZiB5b3Ugd2FudCB0aGUgZGVmYXVsdCBiZWhhdmlvciBjb3JyZXNwb25kaW5nCisgICAgICogdG8gVW5pY29kZSBOb3JtYWxpemF0aW9uIEZvcm0gPGI+RDwvYj4gb3IgPGI+S0Q8L2I+LAorICAgICAqIHVzZSAwIGZvciB0aGlzIGFyZ3VtZW50LgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBzdHIgICB0aGUgc3RyaW5nIHRvIGJlIGRlY29tcG9zZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gY29tcGF0ICAgIFBlcmZvcm0gY29tcGF0aWJpbGl0eSBkZWNvbXBvc2l0aW9uLgorICAgICAqICAgICAgICAgICAgICAgICAgSWYgdGhpcyBhcmd1bWVudCBpcyA8dHQ+ZmFsc2U8L3R0Piwgb25seSBjYW5vbmljYWwKKyAgICAgKiAgICAgICAgICAgICAgICAgIGRlY29tcG9zaXRpb24gd2lsbCBiZSBwZXJmb3JtZWQuCisgICAgICoKKyAgICAgKgorICAgICAqIEByZXR1cm4gICAgICB0aGUgZGVjb21wb3NlZCBzdHJpbmcuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZGVjb21wb3NlKFN0cmluZyBzb3VyY2UsIGJvb2xlYW4gY29tcGF0LCBpbnQgb3B0aW9ucykKKyAgICB7CisgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCItLS0tLS0tLS0tLS0tLS0gdG9wIG9mIGRlY29tcG9zZSgpIC0tLS0tLS0tLS0tLS0tLSIpOworCisgICAgICAgIGJvb2xlYW4gaGFuZ3VsID0gKG9wdGlvbnMgJiBJR05PUkVfSEFOR1VMKSA9PSAwOworICAgICAgICBpbnQgbWluRGVjb21wID0gY29tcGF0ID8gMCA6IERlY29tcERhdGEuTUFYX0NPTVBBVDsKKyAKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlciA9IG51bGw7CisKKyAgICAgICAgaW50IGkgPSAwLCBidWZQdHIgPSAtMTsKKworICAgICAgICB3aGlsZSAoaSA8IHNvdXJjZS5sZW5ndGgoKSB8fCBidWZQdHIgPj0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgY2hhciBjaDsKKworICAgICAgICAgICAgaWYgKGJ1ZlB0ciA+PSAwKSB7CisgICAgICAgICAgICAgICAgY2ggPSBidWZmZXIuY2hhckF0KGJ1ZlB0cisrKTsKKyAgICAgICAgICAgICAgICBpZiAoYnVmUHRyID09IGJ1ZmZlci5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBidWZQdHIgPSAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNoID0gc291cmNlLmNoYXJBdChpKyspOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gRGVjb21wRGF0YS5vZmZzZXRzLmVsZW1lbnRBdChjaCk7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBvZmZzZXQgJiBEZWNvbXBEYXRhLkRFQ09NUF9NQVNLOworCisgICAgICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiZGVjb21wb3NlIGdvdCAiICsgVXRpbGl0eS5oZXgoY2gpKTsKKworICAgICAgICAgICAgaWYgKGluZGV4ID4gbWluRGVjb21wKSB7CisgICAgICAgICAgICAgICAgaWYgKChvZmZzZXQgJiBEZWNvbXBEYXRhLkRFQ09NUF9SRUNVUlNFKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCIgIiArIFV0aWxpdHkuaGV4KGNoKSArICIgaGFzIFJFQ1VSU0lWRSBkZWNvbXBvc2l0aW9uLCBpbmRleD0iICsgaW5kZXgpOworICAgICAgICAgICAgICAgICAgICBpZiAoYnVmZmVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5zZXRMZW5ndGgoMCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZG9BcHBlbmQoRGVjb21wRGF0YS5jb250ZW50cywgaW5kZXgsIGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgICAgIGJ1ZlB0ciA9IDA7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oIiAiICsgVXRpbGl0eS5oZXgoY2gpICsgIiBoYXMgZGVjb21wb3NpdGlvbiwgaW5kZXg9IiArIGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgZG9BcHBlbmQoRGVjb21wRGF0YS5jb250ZW50cywgaW5kZXgsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA+PSBIQU5HVUxfQkFTRSAmJiBjaCA8IEhBTkdVTF9MSU1JVCAmJiBoYW5ndWwpIHsKKyAgICAgICAgICAgICAgICBoYW5ndWxUb0phbW8oY2gsIHJlc3VsdCwgbWluRGVjb21wKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjaCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZml4Q2Fub25pY2FsKHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZWNvbXBvc2Ugc3RhcnRpbmcgd2l0aCBjdXJyZW50IGlucHV0IGNoYXJhY3RlciBhbmQgY29udGludWluZworICAgICAqIHVudGlsIGp1c3QgYmVmb3JlIHRoZSBuZXh0IGJhc2UgY2hhci4KKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5JbnB1dDwvYj46CisgICAgICogPHVsPgorICAgICAqICA8bGk+dW5kZXJseWluZyBjaGFyIGl0ZXIgcG9pbnRzIHRvIGZpcnN0IGNoYXJhY3RlciB0byBkZWNvbXBvc2UKKyAgICAgKiA8L3VsPgorICAgICAqIDxwPgorICAgICAqIDxiPk91dHB1dDo8L2I+CisgICAgICogPHVsPgorICAgICAqICA8bGk+cmV0dXJucyBmaXJzdCBjaGFyIG9mIGRlY29tcG9zaXRpb24gb3IgRE9ORSBpZiBhdCBlbmQKKyAgICAgKiAgPGxpPlVuZGVybHlpbmcgY2hhciBpdGVyIGlzIHBvaW50aW5nIGF0IG5leHQgYmFzZSBjaGFyIG9yIHBhc3QgZW5kCisgICAgICogPC91bD4KKyAgICAgKi8KKyAgICBwcml2YXRlIGNoYXIgbmV4dERlY29tcCgpCisgICAgeworICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiLS0tLS0tLS0tLS0tLS0tIHRvcCBvZiBuZXh0RGVjb21wKCkgLS0tLS0tLS0tLS0tLS0tIik7CisKKyAgICAgICAgYm9vbGVhbiBoYW5ndWwgPSAob3B0aW9ucyAmIElHTk9SRV9IQU5HVUwpID09IDA7CisgICAgICAgIGNoYXIgY2ggPSBjdXJGb3J3YXJkKCk7CisKKyAgICAgICAgaW50IG9mZnNldCA9IERlY29tcERhdGEub2Zmc2V0cy5lbGVtZW50QXQoY2gpOworICAgICAgICBpbnQgaW5kZXggPSBvZmZzZXQgJiBEZWNvbXBEYXRhLkRFQ09NUF9NQVNLOworCisgICAgICAgIGlmIChpbmRleCA+IG1pbkRlY29tcCB8fCBEZWNvbXBEYXRhLmNhbm9uQ2xhc3MuZWxlbWVudEF0KGNoKSAhPSBEZWNvbXBEYXRhLkJBU0UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluaXRCdWZmZXIoKTsKKworICAgICAgICAgICAgaWYgKGluZGV4ID4gbWluRGVjb21wKSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oIiAiICsgVXRpbGl0eS5oZXgoY2gpICsgIiBoYXMgZGVjb21wb3NpdGlvbiwgaW5kZXg9IiArIGluZGV4KTsKKyAgICAgICAgICAgICAgICBkb0FwcGVuZChEZWNvbXBEYXRhLmNvbnRlbnRzLCBpbmRleCwgYnVmZmVyKTsKKworICAgICAgICAgICAgICAgIGlmICgob2Zmc2V0ICYgRGVjb21wRGF0YS5ERUNPTVBfUkVDVVJTRSkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAvLyBOZWVkIHRvIGRlY29tcG9zZSB0aGUgb3V0cHV0IG9mIHRoaXMgZGVjb21wb3NpdGlvbiByZWN1cnNpdmVseS4KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBidWZmZXIubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgY2ggPSBidWZmZXIuY2hhckF0KGkpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSBEZWNvbXBEYXRhLm9mZnNldHMuZWxlbWVudEF0KGNoKSAmIERlY29tcERhdGEuREVDT01QX01BU0s7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IG1pbkRlY29tcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgKz0gZG9SZXBsYWNlKERlY29tcERhdGEuY29udGVudHMsIGluZGV4LCBidWZmZXIsIGkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGNoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJvb2xlYW4gbmVlZFRvUmVvcmRlciA9IGZhbHNlOworCisgICAgICAgICAgICAvLyBBbnkgb3RoZXIgY29tYmluaW5nIGNoYWN0ZXJzIHRoYXQgaW1tZWRpYXRlbHkgZm9sbG93IHRoZSBkZWNvbXBvc2VkCisgICAgICAgICAgICAvLyBjaGFyYWN0ZXIgbXVzdCBiZSBpbmNsdWRlZCBpbiB0aGUgYnVmZmVyIHRvbywgYmVjYXVzZSB0aGV5J3JlCisgICAgICAgICAgICAvLyBjb25jZXB0dWFsbHkgcGFydCBvZiB0aGUgc2FtZSBsb2dpY2FsIGNoYXJhY3Rlci4KKyAgICAgICAgICAgIHdoaWxlICgoY2ggPSB0ZXh0Lm5leHQoKSkgIT0gRE9ORQorICAgICAgICAgICAgICAgICYmIERlY29tcERhdGEuY2Fub25DbGFzcy5lbGVtZW50QXQoY2gpICE9IERlY29tcERhdGEuQkFTRSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBuZWVkVG9SZW9yZGVyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAvLyBEZWNvbXBvc2UgYW55IG9mIHRoZXNlIGNoYXJhY3RlcnMgdGhhdCBuZWVkIGl0IC0gTGl1CisgICAgICAgICAgICAgICAgaW5kZXggPSBEZWNvbXBEYXRhLm9mZnNldHMuZWxlbWVudEF0KGNoKSAmIERlY29tcERhdGEuREVDT01QX01BU0s7CisgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gbWluRGVjb21wKSB7CisgICAgICAgICAgICAgICAgICAgIGRvQXBwZW5kKERlY29tcERhdGEuY29udGVudHMsIGluZGV4LCBidWZmZXIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoY2gpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGJ1ZmZlci5sZW5ndGgoKSA+IDEgJiYgbmVlZFRvUmVvcmRlcikgeworICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgY29tYmluaW5nIGNoYXJhY3RlciBpbiB0aGUgYnVmZmVyLAorICAgICAgICAgICAgICAgIC8vIHB1dCB0aGVtIGludG8gdGhlIGNhbm9uaWNhbCBvcmRlci4KKyAgICAgICAgICAgICAgICAvLyBCdXQgd2UgZG9uJ3QgbmVlZCB0byBzb3J0IGlmIG9ubHkgY2hhcmFjdGVycyBhcmUgdGhlIG9uZXMgdGhhdAorICAgICAgICAgICAgICAgIC8vIHJlc3VsdGVkIGZyb20gZGVjb21vc2luZyB0aGUgYmFzZSBjaGFyYWN0ZXIuCisgICAgICAgICAgICAgICAgZml4Q2Fub25pY2FsKGJ1ZmZlcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidWZmZXJMaW1pdCA9IGJ1ZmZlci5sZW5ndGgoKSAtIDE7CisgICAgICAgICAgICBjaCA9IGJ1ZmZlci5jaGFyQXQoMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBKdXN0IHVzZSB0aGlzIGNoYXJhY3RlciwgYnV0IGZpcnN0IGFkdmFuY2UgdG8gdGhlIG5leHQgb25lCisgICAgICAgICAgICB0ZXh0Lm5leHQoKTsKKworICAgICAgICAgICAgLy8gRG8gSGFuZ3VsIC0+IEphbW8gZGVjb21wb3NpdGlvbiBpZiBuZWNlc3NhcnkKKyAgICAgICAgICAgIGlmIChoYW5ndWwgJiYgY2ggPj0gSEFOR1VMX0JBU0UgJiYgY2ggPCBIQU5HVUxfTElNSVQpIHsKKyAgICAgICAgICAgICAgICBpbml0QnVmZmVyKCk7CisgICAgICAgICAgICAgICAgaGFuZ3VsVG9KYW1vKGNoLCBidWZmZXIsIG1pbkRlY29tcCk7CisgICAgICAgICAgICAgICAgYnVmZmVyTGltaXQgPSBidWZmZXIubGVuZ3RoKCkgLSAxOworICAgICAgICAgICAgICAgIGNoID0gYnVmZmVyLmNoYXJBdCgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiIG5leHREZWNvbXAgcmV0dXJuaW5nICIgKyBVdGlsaXR5LmhleChjaCkgKyAiLCB0ZXh0IGluZGV4PSIgKyB0ZXh0LmdldEluZGV4KCkpOworICAgICAgICByZXR1cm4gY2g7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGVjb21wb3NlIHN0YXJ0aW5nIHdpdGggdGhlIGlucHV0IGNoYXIganVzdCBiZWZvcmUgdGhlIGN1cnJlbnQgcG9zaXRpb24KKyAgICAgKiBhbmQgY29udGludWluZyBiYWNrd2FyZCB1bnRpbCAoYW5kIGluY2x1ZGluZykgdGhlIHByZXZpb3VzIGJhc2UgY2hhci4KKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5JbnB1dDwvYj46CisgICAgICogPHVsPgorICAgICAqICA8bGk+dW5kZXJseWluZyBjaGFyIGl0ZXIgcG9pbnRzIGp1c3QgYWZ0ZXIgbGFzdCBjaGFyIHRvIGRlY29tcG9zZQorICAgICAqIDwvdWw+CisgICAgICogPHA+CisgICAgICogPGI+T3V0cHV0OjwvYj4KKyAgICAgKiA8dWw+CisgICAgICogIDxsaT5yZXR1cm5zIGxhc3QgY2hhciBvZiByZXN1bHRpbmcgZGVjb21wb3NpdGlvbiBzZXF1ZW5jZQorICAgICAqICA8bGk+dW5kZXJseWluZyBpdGVyIHBvaW50cyB0byBsb3dlc3QtaW5kZXggY2hhciB3ZSBkZWNvbXBvc2VkLCBpLmUuIHRoZSBiYXNlIGNoYXIKKyAgICAgKiA8L3VsPgorICAgICAqLworICAgIHByaXZhdGUgY2hhciBwcmV2RGVjb21wKCkgeworICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiLS0tLS0tLS0tLS0tLS0tIHRvcCBvZiBwcmV2RGVjb21wKCkgLS0tLS0tLS0tLS0tLS0tIik7CisKKyAgICAgICAgYm9vbGVhbiBoYW5ndWwgPSAob3B0aW9ucyAmIElHTk9SRV9IQU5HVUwpID09IDA7CisKKyAgICAgICAgY2hhciBjaCA9IGN1ckJhY2t3YXJkKCk7CisKKyAgICAgICAgaW50IG9mZnNldCA9IERlY29tcERhdGEub2Zmc2V0cy5lbGVtZW50QXQoY2gpOworICAgICAgICBpbnQgaW5kZXggPSBvZmZzZXQgJiBEZWNvbXBEYXRhLkRFQ09NUF9NQVNLOworCisgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJwcmV2RGVjb21wIGdvdCBpbnB1dCBjaGFyICIgKyBVdGlsaXR5LmhleChjaCkpOworCisgICAgICAgIGlmIChpbmRleCA+IG1pbkRlY29tcCB8fCBEZWNvbXBEYXRhLmNhbm9uQ2xhc3MuZWxlbWVudEF0KGNoKSAhPSBEZWNvbXBEYXRhLkJBU0UpCisgICAgICAgIHsKKyAgICAgICAgICAgIGluaXRCdWZmZXIoKTsKKworICAgICAgICAgICAgLy8gVGhpcyBtZXRob2QgcmV3cml0dGVuIHRvIHBhc3MgY29uZm9ybWFuY2UgdGVzdHMuIC0gTGl1CisgICAgICAgICAgICAvLyBDb2xsZWN0IGFsbCBjaGFyYWN0ZXJzIHVwIHRvIHRoZSBwcmV2aW91cyBiYXNlIGNoYXIKKyAgICAgICAgICAgIHdoaWxlIChjaCAhPSBET05FKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyLmluc2VydCgwLCBjaCk7CisgICAgICAgICAgICAgICAgaWYgKERlY29tcERhdGEuY2Fub25DbGFzcy5lbGVtZW50QXQoY2gpID09IERlY29tcERhdGEuQkFTRSkgYnJlYWs7CisgICAgICAgICAgICAgICAgY2ggPSB0ZXh0LnByZXZpb3VzKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJwcmV2RGVjb21wIGJ1ZmZlcjogIiArIFV0aWxpdHkuaGV4KGJ1ZmZlcikpOworCisgICAgICAgICAgICAvLyBEZWNvbXBvc2UgdGhlIGJ1ZmZlcgorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBidWZmZXIubGVuZ3RoKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGNoID0gYnVmZmVyLmNoYXJBdChpKTsKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBEZWNvbXBEYXRhLm9mZnNldHMuZWxlbWVudEF0KGNoKTsKKyAgICAgICAgICAgICAgICBpbmRleCA9IG9mZnNldCAmIERlY29tcERhdGEuREVDT01QX01BU0s7ICAgICAgICAgICAgICAgIAorCisgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gbWluRGVjb21wKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBqID0gZG9SZXBsYWNlKERlY29tcERhdGEuY29udGVudHMsIGluZGV4LCBidWZmZXIsIGkpOworICAgICAgICAgICAgICAgICAgICBpZiAoKG9mZnNldCAmIERlY29tcERhdGEuREVDT01QX1JFQ1VSU0UpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gZGVjb21wb3NlIHRoaXMgcmVjdXJzaXZlbHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOyBpIDwgajsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ggPSBidWZmZXIuY2hhckF0KGkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gRGVjb21wRGF0YS5vZmZzZXRzLmVsZW1lbnRBdChjaCkgJiBEZWNvbXBEYXRhLkRFQ09NUF9NQVNLOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IG1pbkRlY29tcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpICs9IGRvUmVwbGFjZShEZWNvbXBEYXRhLmNvbnRlbnRzLCBpbmRleCwgYnVmZmVyLCBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaSA9IGo7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigicHJldkRlY29tcCBidWZmZXIgYWZ0ZXIgZGVjb21wOiAiICsgVXRpbGl0eS5oZXgoYnVmZmVyKSk7CisKKyAgICAgICAgICAgIGlmIChidWZmZXIubGVuZ3RoKCkgPiAxKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBjb21iaW5pbmcgY2hhcmFjdGVyIGluIHRoZSBidWZmZXIsCisgICAgICAgICAgICAgICAgLy8gcHV0IHRoZW0gaW50byB0aGUgY2Fub25pY2FsIG9yZGVyLgorICAgICAgICAgICAgICAgIGZpeENhbm9uaWNhbChidWZmZXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnVmZmVyTGltaXQgPSBidWZmZXJQb3MgPSBidWZmZXIubGVuZ3RoKCkgLSAxOworICAgICAgICAgICAgY2ggPSBidWZmZXIuY2hhckF0KGJ1ZmZlclBvcyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoaGFuZ3VsICYmIGNoID49IEhBTkdVTF9CQVNFICYmIGNoIDwgSEFOR1VMX0xJTUlUKSB7CisgICAgICAgICAgICBpbml0QnVmZmVyKCk7CisgICAgICAgICAgICBoYW5ndWxUb0phbW8oY2gsIGJ1ZmZlciwgbWluRGVjb21wKTsKKyAgICAgICAgICAgIGJ1ZmZlckxpbWl0ID0gYnVmZmVyUG9zID0gYnVmZmVyLmxlbmd0aCgpIC0gMTsKKyAgICAgICAgICAgIGNoID0gYnVmZmVyLmNoYXJBdChidWZmZXJQb3MpOworICAgICAgICB9CisgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCIgcHJldkRlY29tcCByZXR1cm5pbmcgJyIgKyBjaCArICInICIgKyBVdGlsaXR5LmhleChjaCkgKyAiLCB0ZXh0IGluZGV4PSIgKyB0ZXh0LmdldEluZGV4KCkpOworICAgICAgICByZXR1cm4gY2g7CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIGludCBnZXRDbGFzcyhjaGFyIGNoKSB7CisgICAgICAgIGludCB2YWx1ZSA9IERlY29tcERhdGEuY2Fub25DbGFzcy5lbGVtZW50QXQoY2gpOworICAgICAgICByZXR1cm4gKHZhbHVlID49IDApID8gdmFsdWUgOiB2YWx1ZSArIDI1NjsKKyAgICB9CisKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIENoYXJhY3Rlckl0ZXJhdG9yIG92ZXJyaWRlcworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpbiB0aGUgbm9ybWFsaXplZCB0ZXh0LgorICAgICAqLworICAgIHB1YmxpYyBjaGFyIGN1cnJlbnQoKSB7CisgICAgICAgIGlmIChjdXJyZW50Q2hhciA9PSBET05FKSB7CisgICAgICAgICAgICBpZiAobW9kZS5jb21wb3NlKCkpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50Q2hhciA9IG5leHRDb21wb3NlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChtb2RlLmRlY29tcCgpKSB7CisgICAgICAgICAgICAgICAgY3VycmVudENoYXIgPSBuZXh0RGVjb21wKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50Q2hhciA9IHRleHQuY3VycmVudCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBjdXJyZW50Q2hhcjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGZpcnN0IGNoYXJhY3RlciBpbiB0aGUgbm9ybWFsaXplZCB0ZXh0LiAgVGhpcyByZXNldHMKKyAgICAgKiB0aGUgPHR0Pk5vcm1hbGl6ZXInczwvdHQ+IHBvc2l0aW9uIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRleHQuCisgICAgICovCisgICAgcHVibGljIGNoYXIgZmlyc3QoKSB7CisgICAgICAgIHJldHVybiBzZXRJbmRleCh0ZXh0LmdldEJlZ2luSW5kZXgoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUgbm9ybWFsaXplZCB0ZXh0LiAgVGhpcyByZXNldHMKKyAgICAgKiB0aGUgPHR0Pk5vcm1hbGl6ZXInczwvdHQ+IHBvc2l0aW9uIHRvIGJlIGp1c3QgYmVmb3JlIHRoZQorICAgICAqIHRoZSBpbnB1dCB0ZXh0IGNvcnJlc3BvbmRpbmcgdG8gdGhhdCBub3JtYWxpemVkIGNoYXJhY3Rlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBsYXN0KCkgeworICAgICAgICB0ZXh0LnNldEluZGV4KHRleHQuZ2V0RW5kSW5kZXgoKSAtIDEpOyAgLy8gU2V0dGluZyB0byBnZXRFbmRJbmRleCgpIGZhaWxzIGluIDEuMQorICAgICAgICBhdEVuZCA9IHRydWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvIHdvcmsgYXJvdW5kIHRoZSBidWcKKworICAgICAgICBjdXJyZW50Q2hhciA9IERPTkU7ICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGN1cnJlbnQgY2hhciBoYXNuJ3QgYmVlbiBwcm9jZXNzZWQKKyAgICAgICAgY2xlYXJCdWZmZXIoKTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBidWZmZXIgaXMgZW1wdHkgdG9vCisgICAgICAgIHJldHVybiBwcmV2aW91cygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbmV4dCBjaGFyYWN0ZXIgaW4gdGhlIG5vcm1hbGl6ZWQgdGV4dCBhbmQgYWR2YW5jZQorICAgICAqIHRoZSBpdGVyYXRpb24gcG9zaXRpb24gYnkgb25lLiAgSWYgdGhlIGVuZAorICAgICAqIG9mIHRoZSB0ZXh0IGhhcyBhbHJlYWR5IGJlZW4gcmVhY2hlZCwge0BsaW5rICNET05FfSBpcyByZXR1cm5lZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBuZXh0KCkgeworICAgICAgICBpZiAoYnVmZmVyUG9zIDwgYnVmZmVyTGltaXQpIHsKKyAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBvdXRwdXQgY2hhcmFjdGVycyBsZWZ0IGluIHRoZSBidWZmZXIKKyAgICAgICAgICAgIGN1cnJlbnRDaGFyID0gYnVmZmVyLmNoYXJBdCgrK2J1ZmZlclBvcyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBidWZmZXJMaW1pdCA9IGJ1ZmZlclBvcyA9IDA7ICAgIC8vIEJ1ZmZlciBpcyBub3cgb3V0IG9mIGRhdGUKKyAgICAgICAgICAgIGlmIChtb2RlLmNvbXBvc2UoKSkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFyID0gbmV4dENvbXBvc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1vZGUuZGVjb21wKCkpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50Q2hhciA9IG5leHREZWNvbXAoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFyID0gdGV4dC5uZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGN1cnJlbnRDaGFyOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgcHJldmlvdXMgY2hhcmFjdGVyIGluIHRoZSBub3JtYWxpemVkIHRleHQgYW5kIGRlY3JlbWVudAorICAgICAqIHRoZSBpdGVyYXRpb24gcG9zaXRpb24gYnkgb25lLiAgSWYgdGhlIGJlZ2lubmluZworICAgICAqIG9mIHRoZSB0ZXh0IGhhcyBhbHJlYWR5IGJlZW4gcmVhY2hlZCwge0BsaW5rICNET05FfSBpcyByZXR1cm5lZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBwcmV2aW91cygpIHsKKyAgICAgICAgaWYgKGJ1ZmZlclBvcyA+IDApIHsKKyAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBvdXRwdXQgY2hhcmFjdGVycyBsZWZ0IGluIHRoZSBidWZmZXIKKyAgICAgICAgICAgIGN1cnJlbnRDaGFyID0gYnVmZmVyLmNoYXJBdCgtLWJ1ZmZlclBvcyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBidWZmZXJMaW1pdCA9IGJ1ZmZlclBvcyA9IDA7ICAgIC8vIEJ1ZmZlciBpcyBub3cgb3V0IG9mIGRhdGUKKyAgICAgICAgICAgIGlmIChtb2RlLmNvbXBvc2UoKSkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFyID0gcHJldkNvbXBvc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKG1vZGUuZGVjb21wKCkpIHsKKyAgICAgICAgICAgICAgICBjdXJyZW50Q2hhciA9IHByZXZEZWNvbXAoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFyID0gdGV4dC5wcmV2aW91cygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBjdXJyZW50Q2hhcjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGl0ZXJhdGlvbiBwb3NpdGlvbiBpbiB0aGUgaW5wdXQgdGV4dCB0aGF0IGlzIGJlaW5nIG5vcm1hbGl6ZWQKKyAgICAgKiBhbmQgcmV0dXJuIHRoZSBmaXJzdCBub3JtYWxpemVkIGNoYXJhY3RlciBhdCB0aGF0IHBvc2l0aW9uLgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBpbmRleCB0aGUgZGVzaXJlZCBpbmRleCBpbiB0aGUgaW5wdXQgdGV4dC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gICAgICB0aGUgZmlyc3Qgbm9ybWFsaXplZCBjaGFyYWN0ZXIgdGhhdCBpcyB0aGUgcmVzdWx0IG9mIGl0ZXJhdGluZworICAgICAqICAgICAgICAgICAgICBmb3J3YXJkIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiBpbmRleC4KKyAgICAgKgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBnaXZlbiBpbmRleCBpcyBsZXNzIHRoYW4KKyAgICAgKiAgICAgICAgICB7QGxpbmsgI2dldEJlZ2luSW5kZXh9IG9yIGdyZWF0ZXIgdGhhbiB7QGxpbmsgI2dldEVuZEluZGV4fS4KKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBzZXRJbmRleChpbnQgaW5kZXgpIHsKKyAgICAgICAgdGV4dC5zZXRJbmRleChpbmRleCk7ICAgLy8gQ2hlY2tzIHJhbmdlCisgICAgICAgIGN1cnJlbnRDaGFyID0gRE9ORTsgICAgIC8vIFRoZSBjdXJyZW50IGNoYXIgaGFzbid0IGJlZW4gcHJvY2Vzc2VkCisgICAgICAgIGNsZWFyQnVmZmVyKCk7ICAgICAgICAgIC8vIFRoZSBidWZmZXIgaXMgZW1wdHkgdG9vCisKKyAgICAgICAgcmV0dXJuIGN1cnJlbnQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXRyaWV2ZSB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gaW4gdGhlIGlucHV0IHRleHQgdGhhdCBpcworICAgICAqIGJlaW5nIG5vcm1hbGl6ZWQuICBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgaW4gYXBwbGljYXRpb25zIHN1Y2ggYXMKKyAgICAgKiBzZWFyY2hpbmcsIHdoZXJlIHlvdSBuZWVkIHRvIGJlIGFibGUgdG8gZGV0ZXJtaW5lIHRoZSBwb3NpdGlvbiBpbgorICAgICAqIHRoZSBpbnB1dCB0ZXh0IHRoYXQgY29ycmVzcG9uZHMgdG8gYSBnaXZlbiBub3JtYWxpemVkIG91dHB1dCBjaGFyYWN0ZXIuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIGludCBnZXRJbmRleCgpIHsKKyAgICAgICAgcmV0dXJuIHRleHQuZ2V0SW5kZXgoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXRyaWV2ZSB0aGUgaW5kZXggb2YgdGhlIHN0YXJ0IG9mIHRoZSBpbnB1dCB0ZXh0LiAgVGhpcyBpcyB0aGUgYmVnaW4gaW5kZXgKKyAgICAgKiBvZiB0aGUgPHR0PkNoYXJhY3Rlckl0ZXJhdG9yPC90dD4gb3IgdGhlIHN0YXJ0IChpLmUuIDApIG9mIHRoZSA8dHQ+U3RyaW5nPC90dD4KKyAgICAgKiBvdmVyIHdoaWNoIHRoaXMgPHR0Pk5vcm1hbGl6ZXI8L3R0PiBpcyBpdGVyYXRpbmcKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgaW50IGdldEJlZ2luSW5kZXgoKSB7CisgICAgICAgIHJldHVybiB0ZXh0LmdldEJlZ2luSW5kZXgoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXRyaWV2ZSB0aGUgaW5kZXggb2YgdGhlIGVuZCBvZiB0aGUgaW5wdXQgdGV4dC4gIFRoaXMgaXMgdGhlIGVuZCBpbmRleAorICAgICAqIG9mIHRoZSA8dHQ+Q2hhcmFjdGVySXRlcmF0b3I8L3R0PiBvciB0aGUgbGVuZ3RoIG9mIHRoZSA8dHQ+U3RyaW5nPC90dD4KKyAgICAgKiBvdmVyIHdoaWNoIHRoaXMgPHR0Pk5vcm1hbGl6ZXI8L3R0PiBpcyBpdGVyYXRpbmcKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgaW50IGdldEVuZEluZGV4KCkgeworICAgICAgICByZXR1cm4gdGV4dC5nZXRFbmRJbmRleCgpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFByb3BlcnR5IGFjY2VzcyBtZXRob2RzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIG5vcm1hbGl6YXRpb24gbW9kZSBmb3IgdGhpcyBvYmplY3QuCisgICAgICogPHA+CisgICAgICogPGI+Tm90ZTo8L2I+SWYgdGhlIG5vcm1hbGl6YXRpb24gbW9kZSBpcyBjaGFuZ2VkIHdoaWxlIGl0ZXJhdGluZworICAgICAqIG92ZXIgYSBzdHJpbmcsIGNhbGxzIHRvIHtAbGluayAjbmV4dH0gYW5kIHtAbGluayAjcHJldmlvdXN9IG1heQorICAgICAqIHJldHVybiBwcmV2aW91c2x5IGJ1ZmZlcnMgY2hhcmFjdGVycyBpbiB0aGUgb2xkIG5vcm1hbGl6YXRpb24gbW9kZQorICAgICAqIHVudGlsIHRoZSBpdGVyYXRpb24gaXMgYWJsZSB0byByZS1zeW5jIGF0IHRoZSBuZXh0IGJhc2UgY2hhcmFjdGVyLgorICAgICAqIEl0IGlzIHNhZmVzdCB0byBjYWxsIHtAbGluayAjc2V0VGV4dCBzZXRUZXh0KCl9LCB7QGxpbmsgI2ZpcnN0fSwKKyAgICAgKiB7QGxpbmsgI2xhc3R9LCBldGMuIGFmdGVyIGNhbGxpbmcgPHR0PnNldE1vZGU8L3R0Pi4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gbmV3TW9kZSB0aGUgbmV3IG1vZGUgZm9yIHRoaXMgPHR0Pk5vcm1hbGl6ZXI8L3R0Pi4KKyAgICAgKiBUaGUgc3VwcG9ydGVkIG1vZGVzIGFyZToKKyAgICAgKiA8dWw+CisgICAgICogIDxsaT57QGxpbmsgI0NPTVBPU0V9ICAgICAgICAtIFVuaWNvZGUgY2Fub25pY2FsIGRlY29tcG9zaXRpaW9uCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sbG93ZWQgYnkgY2Fub25pY2FsIGNvbXBvc2l0aW9uLgorICAgICAqICA8bGk+e0BsaW5rICNDT01QT1NFX0NPTVBBVH0gLSBVbmljb2RlIGNvbXBhdGliaWxpdHkgZGVjb21wb3NpdGlpb24KKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb2xsd2VkIGJ5IGNhbm9uaWNhbCBjb21wb3NpdGlvbi4KKyAgICAgKiAgPGxpPntAbGluayAjREVDT01QfSAgICAgICAgIC0gVW5pY29kZSBjYW5vbmljYWwgZGVjb21wb3NpdGlvbgorICAgICAqICA8bGk+e0BsaW5rICNERUNPTVBfQ09NUEFUfSAgLSBVbmljb2RlIGNvbXBhdGliaWxpdHkgZGVjb21wb3NpdGlvbi4KKyAgICAgKiAgPGxpPntAbGluayAjTk9fT1B9ICAgICAgICAgIC0gRG8gbm90aGluZyBidXQgcmV0dXJuIGNoYXJhY3RlcnMKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIHRoZSB1bmRlcmx5aW5nIGlucHV0IHRleHQuCisgICAgICogPC91bD4KKyAgICAgKgorICAgICAqIEBzZWUgI2dldE1vZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRNb2RlKE1vZGUgbmV3TW9kZSkgeworICAgICAgICBtb2RlID0gbmV3TW9kZTsKKyAgICAgICAgbWluRGVjb21wID0gbW9kZS5jb21wYXQoKSA/IDAgOiBEZWNvbXBEYXRhLk1BWF9DT01QQVQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBiYXNpYyBvcGVyYXRpb24gcGVyZm9ybWVkIGJ5IHRoaXMgPHR0Pk5vcm1hbGl6ZXI8L3R0PgorICAgICAqCisgICAgICogQHNlZSAjc2V0TW9kZQorICAgICAqLworICAgIHB1YmxpYyBNb2RlIGdldE1vZGUoKSB7CisgICAgICAgIHJldHVybiBtb2RlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCBvcHRpb25zIHRoYXQgYWZmZWN0IHRoaXMgPHR0Pk5vcm1hbGl6ZXI8L3R0PidzIG9wZXJhdGlvbi4KKyAgICAgKiBPcHRpb25zIGRvIG5vdCBjaGFuZ2UgdGhlIGJhc2ljIGNvbXBvc2l0aW9uIG9yIGRlY29tcG9zaXRpb24gb3BlcmF0aW9uCisgICAgICogdGhhdCBpcyBiZWluZyBwZXJmb3JtZWQgLCBidXQgdGhleSBjb250cm9sIHdoZXRoZXIKKyAgICAgKiBjZXJ0YWluIG9wdGlvbmFsIHBvcnRpb25zIG9mIHRoZSBvcGVyYXRpb24gYXJlIGRvbmUuCisgICAgICogQ3VycmVudGx5IHRoZSBvbmx5IGF2YWlsYWJsZSBvcHRpb24gaXM6CisgICAgICogPHA+CisgICAgICogPHVsPgorICAgICAqICAgPGxpPntAbGluayAjSUdOT1JFX0hBTkdVTH0gLSBEbyBub3QgZGVjb21wb3NlIEhhbmd1bCBzeWxsYWJsZXMgaW50byB0aGUgSmFtbyBhbHBoYWJldAorICAgICAqICAgICAgICAgIGFuZCB2aWNlLXZlcnNhLiAgVGhpcyBvcHRpb24gaXMgb2ZmIGJ5IGRlZmF1bHQgKDxpPmkuZS48L2k+IEhhbmd1bCBwcm9jZXNzaW5nCisgICAgICogICAgICAgICAgaXMgZW5hYmxlZCkgc2luY2UgdGhlIFVuaWNvZGUgc3RhbmRhcmQgc3BlY2lmaWVzIHRoYXQgSGFuZ3VsIHRvIEphbW8KKyAgICAgKiAgICAgICAgICBpcyBhIGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uLiAgRm9yIGFueSBvZiB0aGUgc3RhbmRhcmQgVW5pY29kZSBOb3JtYWxpemF0aW9uCisgICAgICogICAgICAgICAgRm9ybXMsIHlvdSBzaG91bGQgbGVhdmUgdGhpcyBvcHRpb24gb2ZmLgorICAgICAqIDwvdWw+CisgICAgICogPHA+CisgICAgICogQHBhcmFtICAgb3B0aW9uICB0aGUgb3B0aW9uIHdob3NlIHZhbHVlIGlzIHRvIGJlIHNldC4KKyAgICAgKiBAcGFyYW0gICB2YWx1ZSAgIHRoZSBuZXcgc2V0dGluZyBmb3IgdGhlIG9wdGlvbi4gIFVzZSA8dHQ+dHJ1ZTwvdHQ+IHRvCisgICAgICogICAgICAgICAgICAgICAgICB0dXJuIHRoZSBvcHRpb24gb24gYW5kIDx0dD5mYWxzZTwvdHQ+IHRvIHR1cm4gaXQgb2ZmLgorICAgICAqCisgICAgICogQHNlZSAjZ2V0T3B0aW9uCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0T3B0aW9uKGludCBvcHRpb24sIGJvb2xlYW4gdmFsdWUpIHsKKyAgICAgICAgaWYgKG9wdGlvbiAhPSBJR05PUkVfSEFOR1VMKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIG9wdGlvbiIpOworICAgICAgICB9CisgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgb3B0aW9ucyB8PSBvcHRpb247CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBvcHRpb25zICY9ICh+b3B0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIERldGVybWluZSB3aGV0aGVyIGFuIG9wdGlvbiBpcyB0dXJuZWQgb24gb3Igb2ZmLgorICAgICAqIDxwPgorICAgICAqIEBzZWUgI3NldE9wdGlvbgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGdldE9wdGlvbihpbnQgb3B0aW9uKSB7CisgICAgICAgIHJldHVybiAob3B0aW9ucyAmIG9wdGlvbikgIT0gMDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIGlucHV0IHRleHQgb3ZlciB3aGljaCB0aGlzIDx0dD5Ob3JtYWxpemVyPC90dD4gd2lsbCBpdGVyYXRlLgorICAgICAqIFRoZSBpdGVyYXRpb24gcG9zaXRpb24gd2lsbCBiZSByZXNldCB0byB0aGUgYmVnaW5uaW5nLgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBuZXdUZXh0ICAgVGhlIG5ldyBzdHJpbmcgdG8gYmUgbm9ybWFsaXplZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRUZXh0KFN0cmluZyBuZXdUZXh0KSB7CisgICAgICAgIHRleHQgPSBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IobmV3VGV4dCk7CisgICAgICAgIHJlc2V0KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBpbnB1dCB0ZXh0IG92ZXIgd2hpY2ggdGhpcyA8dHQ+Tm9ybWFsaXplcjwvdHQ+IHdpbGwgaXRlcmF0ZS4KKyAgICAgKiBUaGUgaXRlcmF0aW9uIHBvc2l0aW9uIHdpbGwgYmUgcmVzZXQgdG8gdGhlIGJlZ2lubmluZy4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gbmV3VGV4dCAgIFRoZSBuZXcgdGV4dCB0byBiZSBub3JtYWxpemVkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFRleHQoQ2hhcmFjdGVySXRlcmF0b3IgbmV3VGV4dCkgeworICAgICAgICB0ZXh0ID0gbmV3VGV4dDsKKyAgICAgICAgcmVzZXQoKTsKKyAgICB9CisKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFByaXZhdGUgdXRpbGl0eSBtZXRob2RzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBwcml2YXRlIGZpbmFsIGNoYXIgY3VyRm9yd2FyZCgpIHsKKyAgICAgICAgY2hhciBjaCA9IHRleHQuY3VycmVudCgpOworICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiIGN1ckZvcndhcmQgcmV0dXJuaW5nICIgKyBVdGlsaXR5LmhleChjaCkgKyAiLCB0ZXh0IGluZGV4PSIgKyB0ZXh0LmdldEluZGV4KCkpOworICAgICAgICByZXR1cm4gY2g7CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCBjaGFyIGN1ckJhY2t3YXJkKCkgeworICAgICAgICBjaGFyIGNoID0gYXRFbmQgPyB0ZXh0LmN1cnJlbnQoKSA6IHRleHQucHJldmlvdXMoKTsKKyAgICAgICAgYXRFbmQgPSBmYWxzZTsKKyAgICAgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oIiBjdXJCYWNrd2FyZCByZXR1cm5pbmcgIiArIFV0aWxpdHkuaGV4KGNoKSArICIsIHRleHQgaW5kZXg9IiArIHRleHQuZ2V0SW5kZXgoKSk7CisgICAgICAgIHJldHVybiBjaDsKKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgaW50IGRvQXBwZW5kKFN0cmluZyBzb3VyY2UsIGludCBvZmZzZXQsIFN0cmluZ0J1ZmZlciBkZXN0KSB7CisgICAgICAgIGludCBpbmRleCA9IG9mZnNldCA+Pj4gU1RSX0lOREVYX1NISUZUOworICAgICAgICBpbnQgbGVuZ3RoID0gb2Zmc2V0ICYgU1RSX0xFTkdUSF9NQVNLOworCisgICAgICAgIGlmIChsZW5ndGggPT0gMCkgeworICAgICAgICAgICAgY2hhciBjaDsKKyAgICAgICAgICAgIHdoaWxlICgoY2ggPSBEZWNvbXBEYXRhLmNvbnRlbnRzLmNoYXJBdChpbmRleCsrKSkgIT0gMHgwMDAwKSB7CisgICAgICAgICAgICAgICAgZGVzdC5hcHBlbmQoY2gpOworICAgICAgICAgICAgICAgIGxlbmd0aCsrOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGRlc3QuYXBwZW5kKERlY29tcERhdGEuY29udGVudHMuY2hhckF0KGluZGV4KyspKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0KKworCisgICAgc3RhdGljIGZpbmFsIGludCBkb0luc2VydChTdHJpbmcgc291cmNlLCBpbnQgb2Zmc2V0LCBTdHJpbmdCdWZmZXIgZGVzdCwgaW50IHBvcykKKyAgICB7CisgICAgICAgIGludCBpbmRleCA9IG9mZnNldCA+Pj4gU1RSX0lOREVYX1NISUZUOworICAgICAgICBpbnQgbGVuZ3RoID0gb2Zmc2V0ICYgU1RSX0xFTkdUSF9NQVNLOworCisgICAgICAgIGlmIChsZW5ndGggPT0gMCkgeworICAgICAgICAgICAgY2hhciBjaDsKKyAgICAgICAgICAgIHdoaWxlICgoY2ggPSBEZWNvbXBEYXRhLmNvbnRlbnRzLmNoYXJBdChpbmRleCsrKSkgIT0gMHgwMDAwKSB7CisgICAgICAgICAgICAgICAgZGVzdC5pbnNlcnQocG9zKyssIGNoKTsKKyAgICAgICAgICAgICAgICBsZW5ndGgrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBkZXN0Lmluc2VydChwb3MrKywgRGVjb21wRGF0YS5jb250ZW50cy5jaGFyQXQoaW5kZXgrKykpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBsZW5ndGg7CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIGludCBkb1JlcGxhY2UoU3RyaW5nIHNvdXJjZSwgaW50IG9mZnNldCwgU3RyaW5nQnVmZmVyIGRlc3QsIGludCBwb3MpCisgICAgeworICAgICAgICBpbnQgaW5kZXggPSBvZmZzZXQgPj4+IFNUUl9JTkRFWF9TSElGVDsKKyAgICAgICAgaW50IGxlbmd0aCA9IG9mZnNldCAmIFNUUl9MRU5HVEhfTUFTSzsKKworICAgICAgICBkZXN0LnNldENoYXJBdChwb3MrKywgRGVjb21wRGF0YS5jb250ZW50cy5jaGFyQXQoaW5kZXgrKykpOworICAgICAgICBpZiAobGVuZ3RoID09IDApIHsKKyAgICAgICAgICAgIGNoYXIgY2g7CisgICAgICAgICAgICB3aGlsZSAoKGNoID0gRGVjb21wRGF0YS5jb250ZW50cy5jaGFyQXQoaW5kZXgrKykpICE9IDB4MDAwMCkgeworICAgICAgICAgICAgICAgIGRlc3QuaW5zZXJ0KHBvcysrLCBjaCk7CisgICAgICAgICAgICAgICAgbGVuZ3RoKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgZGVzdC5pbnNlcnQocG9zKyssIERlY29tcERhdGEuY29udGVudHMuY2hhckF0KGluZGV4KyspKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCByZXNldCgpIHsKKyAgICAgICAgdGV4dC5zZXRJbmRleCh0ZXh0LmdldEJlZ2luSW5kZXgoKSk7CisgICAgICAgIGF0RW5kID0gZmFsc2U7CisgICAgICAgIGJ1ZmZlclBvcyA9IDA7CisgICAgICAgIGJ1ZmZlckxpbWl0ID0gMDsKKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgaW5pdEJ1ZmZlcigpIHsKKyAgICAgICAgaWYgKGJ1ZmZlciA9PSBudWxsKSB7CisgICAgICAgICAgICBidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKDEwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1ZmZlci5zZXRMZW5ndGgoMCk7CisgICAgICAgIH0KKyAgICAgICAgY2xlYXJCdWZmZXIoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgY2xlYXJCdWZmZXIoKSB7CisgICAgICAgIGJ1ZmZlckxpbWl0ID0gYnVmZmVyUG9zID0gMDsKKyAgICB9CisKKworICAgIC8qKgorICAgICAqIEZpeGVzIHRoZSBzb3J0aW5nIHNlcXVlbmNlIG9mIG5vbi1zcGFjaW5nIGNoYXJhY3RlcnMgYWNjb3JkaW5nIHRvCisgICAgICogdGhlaXIgY29tYmluaW5nIGNsYXNzLiAgVGhlIGFsZ29yaXRobSBpcyBsaXN0ZWQgb24gcC4zLTExIGluIHRoZQorICAgICAqIFVuaWNvZGUgU3RhbmRhcmQgMi4wLiAgVGhlIHRhYmxlIG9mIGNvbWJpbmluZyBjbGFzc2VzIGlzIG9uIHAuNC0yCisgICAgICogaW4gdGhlIFVuaWNvZGUgU3RhbmRhcmQgMi4wLgorICAgICAqIEBwYXJhbSByZXN1bHQgdGhlIHN0cmluZyB0byBmaXguCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBmaXhDYW5vbmljYWwoU3RyaW5nQnVmZmVyIHJlc3VsdCkgeworICAgICAgICBpbnQgaSA9IHJlc3VsdC5sZW5ndGgoKSAtIDE7CisgICAgICAgIGludCBjdXJyZW50VHlwZSA9IGdldENsYXNzKHJlc3VsdC5jaGFyQXQoaSkpOworICAgICAgICBpbnQgbGFzdFR5cGU7CisKKyAgICAgICAgZm9yICgtLWk7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICBsYXN0VHlwZSA9IGN1cnJlbnRUeXBlOworICAgICAgICAgICAgY3VycmVudFR5cGUgPSBnZXRDbGFzcyhyZXN1bHQuY2hhckF0KGkpKTsKKworICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIGEgc3dhcCBpcyBwcmVzdW1lZCB0byBiZSByYXJlIChhbmQgYSBkb3VibGUtc3dhcCB2ZXJ5IHJhcmUpLAorICAgICAgICAgICAgLy8gc28gZG9uJ3Qgd29ycnkgYWJvdXQgZWZmaWNpZW5jeSBoZXJlLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIGlmIChjdXJyZW50VHlwZSA+IGxhc3RUeXBlICYmIGxhc3RUeXBlICE9IERlY29tcERhdGEuQkFTRSkgeworICAgICAgICAgICAgICAgIC8vIHN3YXAgY2hhcmFjdGVycworICAgICAgICAgICAgICAgIGNoYXIgdGVtcCA9IHJlc3VsdC5jaGFyQXQoaSk7CisgICAgICAgICAgICAgICAgcmVzdWx0LnNldENoYXJBdChpLCByZXN1bHQuY2hhckF0KGkrMSkpOworICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRDaGFyQXQoaSsxLCB0ZW1wKTsKKyAgICAgICAgICAgICAgICAvLyBpZiBub3QgYXQgZW5kLCBiYWNrdXAgKG9uZSBmdXJ0aGVyLCB0byBjb21wZW5zYXRlIGZvciBmb3ItbG9vcCkKKyAgICAgICAgICAgICAgICBpZiAoaSA8IHJlc3VsdC5sZW5ndGgoKSAtIDIpIHsKKyAgICAgICAgICAgICAgICAgICAgaSArPSAyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyByZXNldCB0eXBlLCBzaW5jZSB3ZSBzd2FwcGVkLgorICAgICAgICAgICAgICAgIGN1cnJlbnRUeXBlID0gZ2V0Q2xhc3MocmVzdWx0LmNoYXJBdChpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBIYW5ndWwgLyBKYW1vIGNvbnZlcnNpb24gdXRpbGl0aWVzIGZvciBpbnRlcm5hbCB1c2UKKyAgICAvLyBTZWUgc2VjdGlvbiAzLjEwIG9mIFRoZSBVbmljb2RlIFN0YW5kYXJkLCB2IDIuMC4KKyAgICAvLworCisgICAgLy8gUGFja2FnZS1hY2Nlc3NpYmxlIGZvciB1c2UgYnkgQ29tcG9zZWRDaGFySXRlcgorICAgIHN0YXRpYyBmaW5hbCBjaGFyIEhBTkdVTF9CQVNFICAgPSAweGFjMDA7CisgICAgc3RhdGljIGZpbmFsIGNoYXIgSEFOR1VMX0xJTUlUICA9IDB4ZDdhNDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgSkFNT19MQkFTRSAgICA9IDB4MTEwMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIEpBTU9fVkJBU0UgICAgPSAweDExNjE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBKQU1PX1RCQVNFICAgID0gMHgxMWE3OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCAgSkFNT19MQ09VTlQgICA9IDE5OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCAgSkFNT19WQ09VTlQgICA9IDIxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCAgSkFNT19UQ09VTlQgICA9IDI4OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCAgSkFNT19OQ09VTlQgICA9IEpBTU9fVkNPVU5UICogSkFNT19UQ09VTlQ7CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0IGEgc2luZ2xlIEhhbmd1bCBzeWxsYWJsZSBpbnRvIG9uZSBvciBtb3JlIEphbW8gY2hhcmFjdGVycy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjb25qb2luIElmIHRydWUsIGRlY29tcG9zZSBKYW1vIGludG8gY29uam9pbmluZyBKYW1vLgorICAgICAqLworICAgIHN0YXRpYyBpbnQgaGFuZ3VsVG9KYW1vKGNoYXIgY2gsIFN0cmluZ0J1ZmZlciByZXN1bHQsIGludCBkZWNvbXBMaW1pdCkgeworICAgICAgICBjaGFyIHNJbmRleCAgPSAoY2hhcikoY2ggLSBIQU5HVUxfQkFTRSk7CisgICAgICAgIGNoYXIgbGVhZGluZyA9IChjaGFyKShKQU1PX0xCQVNFICsgc0luZGV4IC8gSkFNT19OQ09VTlQpOworICAgICAgICBjaGFyIHZvd2VsICAgPSAoY2hhcikoSkFNT19WQkFTRSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc0luZGV4ICUgSkFNT19OQ09VTlQpIC8gSkFNT19UQ09VTlQpOworICAgICAgICBjaGFyIHRyYWlsaW5nPSAoY2hhcikoSkFNT19UQkFTRSArIChzSW5kZXggJSBKQU1PX1RDT1VOVCkpOworCisgICAgICAgIGludCBsZW5ndGggPSAwOworCisgICAgICAgIGxlbmd0aCArPSBqYW1vQXBwZW5kKGxlYWRpbmcsIGRlY29tcExpbWl0LCByZXN1bHQpOworICAgICAgICBsZW5ndGggKz0gamFtb0FwcGVuZCh2b3dlbCwgZGVjb21wTGltaXQsIHJlc3VsdCk7CisgICAgICAgIGlmICh0cmFpbGluZyAhPSBKQU1PX1RCQVNFKSB7CisgICAgICAgICAgICBsZW5ndGggKz0gamFtb0FwcGVuZCh0cmFpbGluZywgZGVjb21wTGltaXQsIHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxlbmd0aDsKKyAgICB9CisgICAgc3RhdGljIGZpbmFsIGludCBqYW1vQXBwZW5kKGNoYXIgY2gsIGludCBsaW1pdCwgU3RyaW5nQnVmZmVyIGRlc3QpIHsKKyAgICAgICAgaW50IG9mZnNldCA9IERlY29tcERhdGEub2Zmc2V0cy5lbGVtZW50QXQoY2gpOworICAgICAgICBpZiAob2Zmc2V0ID4gbGltaXQpIHsKKyAgICAgICAgICAgIHJldHVybiBkb0FwcGVuZChEZWNvbXBEYXRhLmNvbnRlbnRzLCBvZmZzZXQsIGRlc3QpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVzdC5hcHBlbmQoY2gpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgcHJpdmF0ZSB2b2lkIGphbW9Ub0hhbmd1bChTdHJpbmdCdWZmZXIgYnVmZmVyLCBpbnQgc3RhcnQpIHsKKyAgICAgICAgaW50IG91dCA9IDA7CisgICAgICAgIGludCBsaW1pdCA9IGJ1ZmZlci5sZW5ndGgoKSAtIDE7CisKKyAgICAgICAgaW50IGluLCBsLCB2LCB0OworCisgICAgICAgIGZvciAoaW4gPSBzdGFydDsgaW4gPCBsaW1pdDsgaW4rKykgeworICAgICAgICAgICAgY2hhciBjaCA9IGJ1ZmZlci5jaGFyQXQoaW4pOworCisgICAgICAgICAgICBpZiAoKGwgPSBjaCAtIEpBTU9fTEJBU0UpID49IDAgJiYgbCA8IEpBTU9fTENPVU5UCisgICAgICAgICAgICAgICAgICAgICYmICh2ID0gYnVmZmVyLmNoYXJBdChpbisxKSAtIEpBTU9fVkJBU0UpID49IDAgJiYgdiA8IEpBTU9fVkNPVU5UKSB7CisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICAvLyBXZSd2ZSBmb3VuZCBhIHBhaXIgb2YgSmFtbyBjaGFyYWN0ZXJzIHRvIGNvbXBvc2UuCisgICAgICAgICAgICAgICAgLy8gU25hcmYgdGhlIEphbW8gdm93ZWwgYW5kIHNlZSBpZiB0aGVyZSdzIGFsc28gYSB0cmFpbGluZyBjaGFyCisgICAgICAgICAgICAgICAgLy8KKyAgICAgICAgICAgICAgICBpbisrOyAgIC8vIFNuYXJmIHRoZSBKYW1vIHZvd2VsIHRvby4KKworICAgICAgICAgICAgICAgIHQgPSAoaW4gPCBsaW1pdCkgPyBidWZmZXIuY2hhckF0KGluKzEpIDogMDsKKyAgICAgICAgICAgICAgICB0IC09IEpBTU9fVEJBU0U7CisKKyAgICAgICAgICAgICAgICBpZiAodCA+PSAwICYmIHQgPCBKQU1PX1RDT1VOVCkgeworICAgICAgICAgICAgICAgICAgICBpbisrOyAgIC8vIFNuYXJmIHRoZSB0cmFpbGluZyBjb25zb25hbnQgdG9vCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdCA9IDA7ICAvLyBObyB0cmFpbGluZyBjb25zb25hbnQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnVmZmVyLnNldENoYXJBdChvdXQrKywgKGNoYXIpKChsKkpBTU9fVkNPVU5UICsgdikgKiBKQU1PX1RDT1VOVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHQgKyBIQU5HVUxfQkFTRSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBidWZmZXIuc2V0Q2hhckF0KG91dCsrLCBjaCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGluIDwgYnVmZmVyLmxlbmd0aCgpKSB7CisgICAgICAgICAgICBidWZmZXIuc2V0Q2hhckF0KG91dCsrLCBidWZmZXIuY2hhckF0KGluKyspKTsKKyAgICAgICAgfQorCisgICAgICAgIGJ1ZmZlci5zZXRMZW5ndGgob3V0KTsKKyAgICB9CisKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFByaXZhdGUgZGF0YQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlOworCisgICAgcHJpdmF0ZSBNb2RlICAgICAgICAgICAgICAgIG1vZGUgPSBERUNPTVA7CisgICAgcHJpdmF0ZSBpbnQgICAgICAgICAgICAgICAgIG9wdGlvbnMgPSAwOworICAgIHByaXZhdGUgdHJhbnNpZW50IGludCAgICAgICBtaW5EZWNvbXA7CisKKyAgICAvLyBUaGUgaW5wdXQgdGV4dCBhbmQgb3VyIHBvc2l0aW9uIGluIGl0CisgICAgcHJpdmF0ZSBDaGFyYWN0ZXJJdGVyYXRvciAgIHRleHQ7CisgICAgcHJpdmF0ZSBib29sZWFuICAgICAgICAgICAgIGF0RW5kID0gZmFsc2U7CisKKyAgICAvLyBBIGJ1ZmZlciBmb3IgaG9sZGluZyBpbnRlcm1lZGlhdGUgcmVzdWx0cworICAgIHByaXZhdGUgU3RyaW5nQnVmZmVyICAgICAgICBidWZmZXIgPSBudWxsOworICAgIHByaXZhdGUgaW50ICAgICAgICAgICAgICAgICBidWZmZXJQb3MgPSAwOworICAgIHByaXZhdGUgaW50ICAgICAgICAgICAgICAgICBidWZmZXJMaW1pdCA9IDA7CisgICAgcHJpdmF0ZSBjaGFyICAgICAgICAgICAgICAgIGN1cnJlbnRDaGFyOworCisgICAgLy8gQW5vdGhlciBidWZmZXIgZm9yIHVzZSBkdXJpbmcgaXRlcmF0aXZlIGNvbXBvc2l0aW9uCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50ICAgIEVNUFRZID0gLTE7CisgICAgcHJpdmF0ZSBTdHJpbmdCdWZmZXIgICAgICAgIGV4cGxvZGVCdWYgPSBudWxsOworCisgICAgLy8gVGhlc2UgbXVzdCBhZ3JlZSB3aXRoIHRoZSBjb25zdGFudHMgdXNlZCBpbiBOb3JtYWxpemVyQnVpbGRlcgorICAgIHN0YXRpYyBmaW5hbCBpbnQgU1RSX0lOREVYX1NISUZUID0gMjsKKyAgICBzdGF0aWMgZmluYWwgaW50IFNUUl9MRU5HVEhfTUFTSyA9IDB4MDAwMzsKK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L051bGxUcmFuc2xpdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9OdWxsVHJhbnNsaXRlcmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wZGJmODg4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9OdWxsVHJhbnNsaXRlcmF0b3IuamF2YQpAQCAtMCwwICsxLDQyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L0F0dGljL051bGxUcmFuc2xpdGVyYXRvci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA2LzI4IDIwOjQ5OjU0ICQgCisgKiAkUmV2aXNpb246IDEuOCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXh0OworaW1wb3J0IGphdmEudXRpbC4qOworCisvKioKKyAqIEEgdHJhbnNsaXRlcmF0b3IgdGhhdCBsZWF2ZXMgdGV4dCB1bmNoYW5nZWQuCisgKi8KK3B1YmxpYyBjbGFzcyBOdWxsVHJhbnNsaXRlcmF0b3IgZXh0ZW5kcyBUcmFuc2xpdGVyYXRvciB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICJcdTAwQTkgSUJNIENvcnBvcmF0aW9uIDIwMDAuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIC8qKgorICAgICAqIFBhY2thZ2UgYWNjZXNzaWJsZSBJRCBmb3IgdGhpcyB0cmFuc2xpdGVyYXRvci4KKyAgICAgKi8KKyAgICBzdGF0aWMgU3RyaW5nIF9JRCA9ICJOdWxsIjsKKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSB0cmFuc2xpdGVyYXRvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgTnVsbFRyYW5zbGl0ZXJhdG9yKCkgeworICAgICAgICBzdXBlcihfSUQsIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEltcGxlbWVudHMge0BsaW5rIFRyYW5zbGl0ZXJhdG9yI2hhbmRsZVRyYW5zbGl0ZXJhdGV9LgorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVRyYW5zbGl0ZXJhdGUoUmVwbGFjZWFibGUgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIG9mZnNldHMsIGJvb2xlYW4gaW5jcmVtZW50YWwpIHsKKyAgICAgICAgb2Zmc2V0cy5zdGFydCA9IG9mZnNldHMubGltaXQ7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9OdW1iZXJGb3JtYXQuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvTnVtYmVyRm9ybWF0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzQ1MzExZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvTnVtYmVyRm9ybWF0LmphdmEKQEAgLTAsMCArMSw4NzAgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvQXR0aWMvTnVtYmVyRm9ybWF0LmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDYvMDEgMDE6MjE6MzQgJCAKKyAqICRSZXZpc2lvbjogMS44ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRleHQ7CisKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsKK2ltcG9ydCBqYXZhLnRleHQuRm9ybWF0OworaW1wb3J0IGphdmEudGV4dC5GaWVsZFBvc2l0aW9uOworaW1wb3J0IGphdmEudGV4dC5QYXJzZVBvc2l0aW9uOworaW1wb3J0IGphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnRleHQucmVzb3VyY2VzLio7CitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKK2ltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uT2JqZWN0SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5PYmplY3RPdXRwdXRTdHJlYW07CisKKy8qKgorICogPGNvZGU+TnVtYmVyRm9ybWF0PC9jb2RlPiBpcyB0aGUgYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgYWxsIG51bWJlcgorICogZm9ybWF0cy4gVGhpcyBjbGFzcyBwcm92aWRlcyB0aGUgaW50ZXJmYWNlIGZvciBmb3JtYXR0aW5nIGFuZCBwYXJzaW5nCisgKiBudW1iZXJzLiA8Y29kZT5OdW1iZXJGb3JtYXQ8L2NvZGU+IGFsc28gcHJvdmlkZXMgbWV0aG9kcyBmb3IgZGV0ZXJtaW5pbmcKKyAqIHdoaWNoIGxvY2FsZXMgaGF2ZSBudW1iZXIgZm9ybWF0cywgYW5kIHdoYXQgdGhlaXIgbmFtZXMgYXJlLgorICoKKyAqIDxwPjxzdHJvbmc+VGhpcyBpcyBhbiBlbmhhbmNlZCB2ZXJzaW9uIG9mIDxjb2RlPk51bWJlckZvcm1hdDwvY29kZT4gdGhhdAorICogaXMgYmFzZWQgb24gdGhlIHN0YW5kYXJkIHZlcnNpb24gaW4gdGhlIEpESy4gIE5ldyBvciBjaGFuZ2VkIGZ1bmN0aW9uYWxpdHkKKyAqIGlzIGxhYmVsZWQKKyAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4gb3IKKyAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPkNIQU5HRUQ8L2ZvbnQ+PC9zdHJvbmc+Ljwvc3Ryb25nPgorICoKKyAqIDxwPgorICogPGNvZGU+TnVtYmVyRm9ybWF0PC9jb2RlPiBoZWxwcyB5b3UgdG8gZm9ybWF0IGFuZCBwYXJzZSBudW1iZXJzIGZvciBhbnkgbG9jYWxlLgorICogWW91ciBjb2RlIGNhbiBiZSBjb21wbGV0ZWx5IGluZGVwZW5kZW50IG9mIHRoZSBsb2NhbGUgY29udmVudGlvbnMgZm9yCisgKiBkZWNpbWFsIHBvaW50cywgdGhvdXNhbmRzLXNlcGFyYXRvcnMsIG9yIGV2ZW4gdGhlIHBhcnRpY3VsYXIgZGVjaW1hbAorICogZGlnaXRzIHVzZWQsIG9yIHdoZXRoZXIgdGhlIG51bWJlciBmb3JtYXQgaXMgZXZlbiBkZWNpbWFsLgorICoKKyAqIDxwPgorICogVG8gZm9ybWF0IGEgbnVtYmVyIGZvciB0aGUgY3VycmVudCBMb2NhbGUsIHVzZSBvbmUgb2YgdGhlIGZhY3RvcnkKKyAqIGNsYXNzIG1ldGhvZHM6CisgKiA8YmxvY2txdW90ZT4KKyAqIDxwcmU+CisgKiAgbXlTdHJpbmcgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoKS5mb3JtYXQobXlOdW1iZXIpOworICogPC9wcmU+CisgKiA8L2Jsb2NrcXVvdGU+CisgKiBJZiB5b3UgYXJlIGZvcm1hdHRpbmcgbXVsdGlwbGUgbnVtYmVycywgaXQgaXMKKyAqIG1vcmUgZWZmaWNpZW50IHRvIGdldCB0aGUgZm9ybWF0IGFuZCB1c2UgaXQgbXVsdGlwbGUgdGltZXMgc28gdGhhdAorICogdGhlIHN5c3RlbSBkb2Vzbid0IGhhdmUgdG8gZmV0Y2ggdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBsb2NhbAorICogbGFuZ3VhZ2UgYW5kIGNvdW50cnkgY29udmVudGlvbnMgbXVsdGlwbGUgdGltZXMuCisgKiA8YmxvY2txdW90ZT4KKyAqIDxwcmU+CisgKiBOdW1iZXJGb3JtYXQgbmYgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoKTsKKyAqIGZvciAoaW50IGkgPSAwOyBpIDwgYS5sZW5ndGg7ICsraSkgeworICogICAgIG91dHB1dC5wcmludGxuKG5mLmZvcm1hdChteU51bWJlcltpXSkgKyAiOyAiKTsKKyAqIH0KKyAqIDwvcHJlPgorICogPC9ibG9ja3F1b3RlPgorICogVG8gZm9ybWF0IGEgbnVtYmVyIGZvciBhIGRpZmZlcmVudCBMb2NhbGUsIHNwZWNpZnkgaXQgaW4gdGhlCisgKiBjYWxsIHRvIDxjb2RlPmdldEluc3RhbmNlPC9jb2RlPi4KKyAqIDxibG9ja3F1b3RlPgorICogPHByZT4KKyAqIE51bWJlckZvcm1hdCBuZiA9IE51bWJlckZvcm1hdC5nZXRJbnN0YW5jZShMb2NhbGUuRlJFTkNIKTsKKyAqIDwvcHJlPgorICogPC9ibG9ja3F1b3RlPgorICogWW91IGNhbiBhbHNvIHVzZSBhIDxjb2RlPk51bWJlckZvcm1hdDwvY29kZT4gdG8gcGFyc2UgbnVtYmVyczoKKyAqIDxibG9ja3F1b3RlPgorICogPHByZT4KKyAqIG15TnVtYmVyID0gbmYucGFyc2UobXlTdHJpbmcpOworICogPC9wcmU+CisgKiA8L2Jsb2NrcXVvdGU+CisgKiBVc2UgPGNvZGU+Z2V0SW5zdGFuY2U8L2NvZGU+IG9yIDxjb2RlPmdldE51bWJlckluc3RhbmNlPC9jb2RlPiB0byBnZXQgdGhlCisgKiBub3JtYWwgbnVtYmVyIGZvcm1hdC4gVXNlIDxjb2RlPmdldEN1cnJlbmN5SW5zdGFuY2U8L2NvZGU+IHRvIGdldCB0aGUKKyAqIGN1cnJlbmN5IG51bWJlciBmb3JtYXQuIEFuZCB1c2UgPGNvZGU+Z2V0UGVyY2VudEluc3RhbmNlPC9jb2RlPiB0byBnZXQgYQorICogZm9ybWF0IGZvciBkaXNwbGF5aW5nIHBlcmNlbnRhZ2VzLiBXaXRoIHRoaXMgZm9ybWF0LCBhIGZyYWN0aW9uIGxpa2UKKyAqIDAuNTMgaXMgZGlzcGxheWVkIGFzIDUzJS4KKyAqCisgKiA8cD4KKyAqIFlvdSBjYW4gYWxzbyBjb250cm9sIHRoZSBkaXNwbGF5IG9mIG51bWJlcnMgd2l0aCBzdWNoIG1ldGhvZHMgYXMKKyAqIDxjb2RlPnNldE1pbmltdW1GcmFjdGlvbkRpZ2l0czwvY29kZT4uCisgKiBJZiB5b3Ugd2FudCBldmVuIG1vcmUgY29udHJvbCBvdmVyIHRoZSBmb3JtYXQgb3IgcGFyc2luZywKKyAqIG9yIHdhbnQgdG8gZ2l2ZSB5b3VyIHVzZXJzIG1vcmUgY29udHJvbCwKKyAqIHlvdSBjYW4gdHJ5IGNhc3RpbmcgdGhlIDxjb2RlPk51bWJlckZvcm1hdDwvY29kZT4geW91IGdldCBmcm9tIHRoZSBmYWN0b3J5IG1ldGhvZHMKKyAqIHRvIGEgPGNvZGU+RGVjaW1hbE51bWJlckZvcm1hdDwvY29kZT4uIFRoaXMgd2lsbCB3b3JrIGZvciB0aGUgdmFzdCBtYWpvcml0eQorICogb2YgbG9jYWxlczsganVzdCByZW1lbWJlciB0byBwdXQgaXQgaW4gYSA8Y29kZT50cnk8L2NvZGU+IGJsb2NrIGluIGNhc2UgeW91CisgKiBlbmNvdW50ZXIgYW4gdW51c3VhbCBvbmUuCisgKgorICogPHA+CisgKiBOdW1iZXJGb3JtYXQgYW5kIERlY2ltYWxGb3JtYXQgYXJlIGRlc2lnbmVkIHN1Y2ggdGhhdCBzb21lIGNvbnRyb2xzCisgKiB3b3JrIGZvciBmb3JtYXR0aW5nIGFuZCBvdGhlcnMgd29yayBmb3IgcGFyc2luZy4gIFRoZSBmb2xsb3dpbmcgaXMKKyAqIHRoZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBmb3IgZWFjaCB0aGVzZSBjb250cm9sIG1ldGhvZHMsCisgKiA8cD4KKyAqIHNldFBhcnNlSW50ZWdlck9ubHkgOiBvbmx5IGFmZmVjdHMgcGFyc2luZywgZS5nLgorICogaWYgdHJ1ZSwgICIzNDU2Ljc4IiAtPiAzNDU2IChhbmQgbGVhdmVzIHRoZSBwYXJzZSBwb3NpdGlvbiBqdXN0IGFmdGVyIGluZGV4IDYpCisgKiBpZiBmYWxzZSwgIjM0NTYuNzgiIC0+IDM0NTYuNzggKGFuZCBsZWF2ZXMgdGhlIHBhcnNlIHBvc2l0aW9uIGp1c3QgYWZ0ZXIgaW5kZXggOCkKKyAqIFRoaXMgaXMgaW5kZXBlbmRlbnQgb2YgZm9ybWF0dGluZy4gIElmIHlvdSB3YW50IHRvIG5vdCBzaG93IGEgZGVjaW1hbCBwb2ludAorICogd2hlcmUgdGhlcmUgbWlnaHQgYmUgbm8gZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50LCB1c2UKKyAqIHNldERlY2ltYWxTZXBhcmF0b3JBbHdheXNTaG93bi4KKyAqIDxwPgorICogc2V0RGVjaW1hbFNlcGFyYXRvckFsd2F5c1Nob3duIDogb25seSBhZmZlY3RzIGZvcm1hdHRpbmcsIGFuZCBvbmx5IHdoZXJlCisgKiB0aGVyZSBtaWdodCBiZSBubyBkaWdpdHMgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQsIHN1Y2ggYXMgd2l0aCBhIHBhdHRlcm4KKyAqIGxpa2UgIiMsIyMwLiMjIiwgZS5nLiwKKyAqIGlmIHRydWUsICAzNDU2LjAwIC0+ICIzLDQ1Ni4iCisgKiBpZiBmYWxzZSwgMzQ1Ni4wMCAtPiAiMzQ1NiIKKyAqIFRoaXMgaXMgaW5kZXBlbmRlbnQgb2YgcGFyc2luZy4gIElmIHlvdSB3YW50IHBhcnNpbmcgdG8gc3RvcCBhdCB0aGUgZGVjaW1hbAorICogcG9pbnQsIHVzZSBzZXRQYXJzZUludGVnZXJPbmx5LgorICoKKyAqIDxwPgorICogWW91IGNhbiBhbHNvIHVzZSBmb3JtcyBvZiB0aGUgPGNvZGU+cGFyc2U8L2NvZGU+IGFuZCA8Y29kZT5mb3JtYXQ8L2NvZGU+CisgKiBtZXRob2RzIHdpdGggPGNvZGU+UGFyc2VQb3NpdGlvbjwvY29kZT4gYW5kIDxjb2RlPkZpZWxkUG9zaXRpb248L2NvZGU+IHRvCisgKiBhbGxvdyB5b3UgdG86CisgKiA8dWw+CisgKiA8bGk+IHByb2dyZXNzaXZlbHkgcGFyc2UgdGhyb3VnaCBwaWVjZXMgb2YgYSBzdHJpbmcKKyAqIDxsaT4gYWxpZ24gdGhlIGRlY2ltYWwgcG9pbnQgYW5kIG90aGVyIGFyZWFzCisgKiA8L3VsPgorICogRm9yIGV4YW1wbGUsIHlvdSBjYW4gYWxpZ24gbnVtYmVycyBpbiB0d28gd2F5czoKKyAqIDxvbD4KKyAqIDxsaT4gSWYgeW91IGFyZSB1c2luZyBhIG1vbm9zcGFjZWQgZm9udCB3aXRoIHNwYWNpbmcgZm9yIGFsaWdubWVudCwKKyAqICAgICAgeW91IGNhbiBwYXNzIHRoZSA8Y29kZT5GaWVsZFBvc2l0aW9uPC9jb2RlPiBpbiB5b3VyIGZvcm1hdCBjYWxsLCB3aXRoCisgKiAgICAgIDxjb2RlPmZpZWxkPC9jb2RlPiA9IDxjb2RlPklOVEVHRVJfRklFTEQ8L2NvZGU+LiBPbiBvdXRwdXQsCisgKiAgICAgIDxjb2RlPmdldEVuZEluZGV4PC9jb2RlPiB3aWxsIGJlIHNldCB0byB0aGUgb2Zmc2V0IGJldHdlZW4gdGhlCisgKiAgICAgIGxhc3QgY2hhcmFjdGVyIG9mIHRoZSBpbnRlZ2VyIGFuZCB0aGUgZGVjaW1hbC4gQWRkCisgKiAgICAgIChkZXNpcmVkU3BhY2VDb3VudCAtIGdldEVuZEluZGV4KSBzcGFjZXMgYXQgdGhlIGZyb250IG9mIHRoZSBzdHJpbmcuCisgKgorICogPGxpPiBJZiB5b3UgYXJlIHVzaW5nIHByb3BvcnRpb25hbCBmb250cywKKyAqICAgICAgaW5zdGVhZCBvZiBwYWRkaW5nIHdpdGggc3BhY2VzLCBtZWFzdXJlIHRoZSB3aWR0aAorICogICAgICBvZiB0aGUgc3RyaW5nIGluIHBpeGVscyBmcm9tIHRoZSBzdGFydCB0byA8Y29kZT5nZXRFbmRJbmRleDwvY29kZT4uCisgKiAgICAgIFRoZW4gbW92ZSB0aGUgcGVuIGJ5CisgKiAgICAgIChkZXNpcmVkUGl4ZWxXaWR0aCAtIHdpZHRoVG9BbGlnbm1lbnRQb2ludCkgYmVmb3JlIGRyYXdpbmcgdGhlIHRleHQuCisgKiAgICAgIEl0IGFsc28gd29ya3Mgd2hlcmUgdGhlcmUgaXMgbm8gZGVjaW1hbCwgYnV0IHBvc3NpYmx5IGFkZGl0aW9uYWwKKyAqICAgICAgY2hhcmFjdGVycyBhdCB0aGUgZW5kLCBlLmcuLCB3aXRoIHBhcmVudGhlc2VzIGluIG5lZ2F0aXZlCisgKiAgICAgIG51bWJlcnM6ICIoMTIpIiBmb3IgLTEyLgorICogPC9vbD4KKyAqCisgKiBzZWUgICAgICAgICAgRGVjaW1hbEZvcm1hdAorICogc2VlICAgICAgICAgIGphdmEudGV4dC5DaG9pY2VGb3JtYXQKKyAqIEB2ZXJzaW9uICAgICAgJFJldmlzaW9uOiAxLjggJAorICogQGF1dGhvciAgICAgICBNYXJrIERhdmlzCisgKiBAYXV0aG9yICAgICAgIEhlbGVuYSBTaGloCisgKiBAYXV0aG9yICAgICAgIEFsYW4gTGl1CisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBOdW1iZXJGb3JtYXQgZXh0ZW5kcyBGb3JtYXR7CisKKyAgICAvKioKKyAgICAgKiBGaWVsZCBjb25zdGFudCB1c2VkIHRvIGNvbnN0cnVjdCBhIEZpZWxkUG9zaXRpb24gb2JqZWN0LiBTaWduaWZpZXMgdGhhdAorICAgICAqIHRoZSBwb3NpdGlvbiBvZiB0aGUgaW50ZWdlciBwYXJ0IG9mIGEgZm9ybWF0dGVkIG51bWJlciBzaG91bGQgYmUgcmV0dXJuZWQuCisgICAgICogQHNlZSBqYXZhLnRleHQuRmllbGRQb3NpdGlvbgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElOVEVHRVJfRklFTEQgPSAwOworCisgICAgLyoqCisgICAgICogRmllbGQgY29uc3RhbnQgdXNlZCB0byBjb25zdHJ1Y3QgYSBGaWVsZFBvc2l0aW9uIG9iamVjdC4gU2lnbmlmaWVzIHRoYXQKKyAgICAgKiB0aGUgcG9zaXRpb24gb2YgdGhlIGZyYWN0aW9uIHBhcnQgb2YgYSBmb3JtYXR0ZWQgbnVtYmVyIHNob3VsZCBiZSByZXR1cm5lZC4KKyAgICAgKiBAc2VlIGphdmEudGV4dC5GaWVsZFBvc2l0aW9uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRlJBQ1RJT05fRklFTEQgPSAxOworCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+Q0hBTkdFRDwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBGb3JtYXQgYW4gb2JqZWN0LiAgQ2hhbmdlOiByZWNvZ25pemVzIDxjb2RlPkJpZ0ludGVnZXI8L2NvZGU+CisgICAgICogYW5kIDxjb2RlPkJpZ0RlY2ltYWw8L2NvZGU+IG9iamVjdHMgbm93LgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBTdHJpbmdCdWZmZXIgZm9ybWF0KE9iamVjdCBudW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHRvQXBwZW5kVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiBwb3MpCisgICAgeworICAgICAgICBpZiAobnVtYmVyIGluc3RhbmNlb2YgTG9uZykgeworICAgICAgICAgICAgcmV0dXJuIGZvcm1hdCgoKExvbmcpbnVtYmVyKS5sb25nVmFsdWUoKSwgdG9BcHBlbmRUbywgcG9zKTsKKyAgICAgICAgfSBlbHNlIGlmIChudW1iZXIgaW5zdGFuY2VvZiBCaWdJbnRlZ2VyKSB7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0KChCaWdJbnRlZ2VyKSBudW1iZXIsIHRvQXBwZW5kVG8sIHBvcyk7CisgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIGluc3RhbmNlb2YgamF2YS5tYXRoLkJpZ0RlY2ltYWwpIHsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXQoKGphdmEubWF0aC5CaWdEZWNpbWFsKSBudW1iZXIsIHRvQXBwZW5kVG8sIHBvcyk7CisgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIGluc3RhbmNlb2YgY29tLmlibS5tYXRoLkJpZ0RlY2ltYWwpIHsKKyAgICAgICAgICAgIHJldHVybiBmb3JtYXQoKGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKSBudW1iZXIsIHRvQXBwZW5kVG8sIHBvcyk7CisgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyIGluc3RhbmNlb2YgTnVtYmVyKSB7CisgICAgICAgICAgICByZXR1cm4gZm9ybWF0KCgoTnVtYmVyKW51bWJlcikuZG91YmxlVmFsdWUoKSwgdG9BcHBlbmRUbywgcG9zKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkNhbm5vdCBmb3JtYXQgZ2l2ZW4gT2JqZWN0IGFzIGEgTnVtYmVyIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgZmluYWwgT2JqZWN0IHBhcnNlT2JqZWN0KFN0cmluZyBzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJzZVBvc2l0aW9uIHBhcnNlUG9zaXRpb24pCisgICAgeworICAgICAgICByZXR1cm4gcGFyc2Uoc291cmNlLCBwYXJzZVBvc2l0aW9uKTsKKyAgICB9CisKKyAgIC8qKgorICAgICAqIFNwZWNpYWxpemF0aW9uIG9mIGZvcm1hdC4KKyAgICAgKiBAc2VlIGphdmEudGV4dC5Gb3JtYXQjZm9ybWF0CisgICAgICovCisgICAgcHVibGljIGZpbmFsIFN0cmluZyBmb3JtYXQgKGRvdWJsZSBudW1iZXIpIHsKKyAgICAgICAgcmV0dXJuIGZvcm1hdChudW1iZXIsbmV3IFN0cmluZ0J1ZmZlcigpLAorICAgICAgICAgICAgICAgICAgICAgIG5ldyBGaWVsZFBvc2l0aW9uKDApKS50b1N0cmluZygpOworICAgIH0KKworICAgLyoqCisgICAgICogU3BlY2lhbGl6YXRpb24gb2YgZm9ybWF0LgorICAgICAqIEBzZWUgamF2YS50ZXh0LkZvcm1hdCNmb3JtYXQKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGZvcm1hdCAobG9uZyBudW1iZXIpIHsKKyAgICAgICAgcmV0dXJuIGZvcm1hdChudW1iZXIsbmV3IFN0cmluZ0J1ZmZlcigpLAorICAgICAgICAgICAgICAgICAgICAgIG5ldyBGaWVsZFBvc2l0aW9uKDApKS50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QgdG8gZm9ybWF0IGEgQmlnSW50ZWdlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGZvcm1hdChCaWdJbnRlZ2VyIG51bWJlcikgeworICAgICAgICByZXR1cm4gZm9ybWF0KG51bWJlciwgbmV3IFN0cmluZ0J1ZmZlcigpLAorICAgICAgICAgICAgICAgICAgICAgIG5ldyBGaWVsZFBvc2l0aW9uKDApKS50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBDb252ZW5pZW5jZSBtZXRob2QgdG8gZm9ybWF0IGEgQmlnRGVjaW1hbC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGZvcm1hdChqYXZhLm1hdGguQmlnRGVjaW1hbCBudW1iZXIpIHsKKyAgICAgICAgcmV0dXJuIGZvcm1hdChudW1iZXIsIG5ldyBTdHJpbmdCdWZmZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICBuZXcgRmllbGRQb3NpdGlvbigwKSkudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICAvKiB0aGlzIGhhcyBiZWVuIHJlbW92ZWQgcGVuZGluZyBhZGRpdGlvbiBvZiBjb20uaWJtLm1hdGggcGFja2dlIHRvIElDVTRKCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIENvbnZlbmllbmNlIG1ldGhvZCB0byBmb3JtYXQgYSBCaWdEZWNpbWFsLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZm9ybWF0KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIG51bWJlcikgeworICAgICAgICByZXR1cm4gZm9ybWF0KG51bWJlciwgbmV3IFN0cmluZ0J1ZmZlcigpLAorICAgICAgICAgICAgICAgICAgICAgIG5ldyBGaWVsZFBvc2l0aW9uKDApKS50b1N0cmluZygpOworICAgIH0KKworICAgLyoqCisgICAgICogU3BlY2lhbGl6YXRpb24gb2YgZm9ybWF0LgorICAgICAqIEBzZWUgamF2YS50ZXh0LkZvcm1hdCNmb3JtYXQKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nQnVmZmVyIGZvcm1hdChkb3VibGUgbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciB0b0FwcGVuZFRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb24gcG9zKTsKKworICAgLyoqCisgICAgICogU3BlY2lhbGl6YXRpb24gb2YgZm9ybWF0LgorICAgICAqIEBzZWUgamF2YS50ZXh0LkZvcm1hdCNmb3JtYXQKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nQnVmZmVyIGZvcm1hdChsb25nIG51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgdG9BcHBlbmRUbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIHBvcyk7CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogRm9ybWF0IGEgQmlnSW50ZWdlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgU3RyaW5nQnVmZmVyIGZvcm1hdChCaWdJbnRlZ2VyIG51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgdG9BcHBlbmRUbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIHBvcyk7IAorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIEZvcm1hdCBhIEJpZ0RlY2ltYWwuCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IFN0cmluZ0J1ZmZlciBmb3JtYXQoamF2YS5tYXRoLkJpZ0RlY2ltYWwgbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciB0b0FwcGVuZFRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb24gcG9zKTsKKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBGb3JtYXQgYSBCaWdEZWNpbWFsLgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmdCdWZmZXIgZm9ybWF0KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIG51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgdG9BcHBlbmRUbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIHBvcyk7CisgICAKKyAgIC8qKgorICAgICAqIFJldHVybnMgYSBMb25nIGlmIHBvc3NpYmxlIChlLmcuLCB3aXRoaW4gdGhlIHJhbmdlIFtMb25nLk1JTl9WQUxVRSwKKyAgICAgKiBMb25nLk1BWF9WQUxVRV0gYW5kIHdpdGggbm8gZGVjaW1hbHMpLCBvdGhlcndpc2UgYSBEb3VibGUuCisgICAgICogSWYgSW50ZWdlck9ubHkgaXMgc2V0LCB3aWxsIHN0b3AgYXQgYSBkZWNpbWFsCisgICAgICogcG9pbnQgKG9yIGVxdWl2YWxlbnQ7IGUuZy4sIGZvciByYXRpb25hbCBudW1iZXJzICIxIDIvMyIsIHdpbGwgc3RvcAorICAgICAqIGFmdGVyIHRoZSAxKS4KKyAgICAgKiBEb2VzIG5vdCB0aHJvdyBhbiBleGNlcHRpb247IGlmIG5vIG9iamVjdCBjYW4gYmUgcGFyc2VkLCBpbmRleCBpcworICAgICAqIHVuY2hhbmdlZCEKKyAgICAgKiBAc2VlICNpc1BhcnNlSW50ZWdlck9ubHkKKyAgICAgKiBAc2VlIGphdmEudGV4dC5Gb3JtYXQjcGFyc2VPYmplY3QKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgTnVtYmVyIHBhcnNlKFN0cmluZyB0ZXh0LCBQYXJzZVBvc2l0aW9uIHBhcnNlUG9zaXRpb24pOworCisgICAgLyoqCisgICAgICogQ29udmVuaWVuY2UgbWV0aG9kLgorICAgICAqCisgICAgICogQGV4Y2VwdGlvbiBQYXJzZUV4Y2VwdGlvbiBpZiB0aGUgc3BlY2lmaWVkIHN0cmluZyBpcyBpbnZhbGlkLgorICAgICAqIEBzZWUgI2Zvcm1hdAorICAgICAqLworICAgIHB1YmxpYyBOdW1iZXIgcGFyc2UoU3RyaW5nIHRleHQpIHRocm93cyBQYXJzZUV4Y2VwdGlvbiB7CisgICAgICAgIFBhcnNlUG9zaXRpb24gcGFyc2VQb3NpdGlvbiA9IG5ldyBQYXJzZVBvc2l0aW9uKDApOworICAgICAgICBOdW1iZXIgcmVzdWx0ID0gcGFyc2UodGV4dCwgcGFyc2VQb3NpdGlvbik7CisgICAgICAgIGlmIChwYXJzZVBvc2l0aW9uLmdldEluZGV4KCkgPT0gMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFBhcnNlRXhjZXB0aW9uKCJVbnBhcnNlYWJsZSBudW1iZXI6IFwiIiArIHRleHQgKyAiXCIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vUFA6cGFyc2VQb3NpdGlvbi5lcnJvckluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGZvcm1hdCB3aWxsIHBhcnNlIG51bWJlcnMgYXMgaW50ZWdlcnMgb25seS4KKyAgICAgKiBGb3IgZXhhbXBsZSBpbiB0aGUgRW5nbGlzaCBsb2NhbGUsIHdpdGggUGFyc2VJbnRlZ2VyT25seSB0cnVlLCB0aGUKKyAgICAgKiBzdHJpbmcgIjEyMzQuIiB3b3VsZCBiZSBwYXJzZWQgYXMgdGhlIGludGVnZXIgdmFsdWUgMTIzNCBhbmQgcGFyc2luZworICAgICAqIHdvdWxkIHN0b3AgYXQgdGhlICIuIiBjaGFyYWN0ZXIuICBPZiBjb3Vyc2UsIHRoZSBleGFjdCBmb3JtYXQgYWNjZXB0ZWQKKyAgICAgKiBieSB0aGUgcGFyc2Ugb3BlcmF0aW9uIGlzIGxvY2FsZSBkZXBlbmRhbnQgYW5kIGRldGVybWluZWQgYnkgc3ViLWNsYXNzZXMKKyAgICAgKiBvZiBOdW1iZXJGb3JtYXQuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNQYXJzZUludGVnZXJPbmx5KCkgeworICAgICAgICByZXR1cm4gcGFyc2VJbnRlZ2VyT25seTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHdoZXRoZXIgb3Igbm90IG51bWJlcnMgc2hvdWxkIGJlIHBhcnNlZCBhcyBpbnRlZ2VycyBvbmx5LgorICAgICAqIEBzZWUgI2lzUGFyc2VJbnRlZ2VyT25seQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFBhcnNlSW50ZWdlck9ubHkoYm9vbGVhbiB2YWx1ZSkgeworICAgICAgICBwYXJzZUludGVnZXJPbmx5ID0gdmFsdWU7CisgICAgfQorCisgICAgLy89PT09PT09PT09PT09PSBMb2NhbGUgU3R1ZmYgPT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBkZWZhdWx0IG51bWJlciBmb3JtYXQgZm9yIHRoZSBjdXJyZW50IGRlZmF1bHQgbG9jYWxlLgorICAgICAqIFRoZSBkZWZhdWx0IGZvcm1hdCBpcyBvbmUgb2YgdGhlIHN0eWxlcyBwcm92aWRlZCBieSB0aGUgb3RoZXIKKyAgICAgKiBmYWN0b3J5IG1ldGhvZHM6IGdldE51bWJlckluc3RhbmNlLCBnZXRDdXJyZW5jeUluc3RhbmNlIG9yIGdldFBlcmNlbnRJbnN0YW5jZS4KKyAgICAgKiBFeGFjdGx5IHdoaWNoIG9uZSBpcyBsb2NhbGUgZGVwZW5kYW50LgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgTnVtYmVyRm9ybWF0IGdldEluc3RhbmNlKCkgeworICAgICAgICByZXR1cm4gZ2V0SW5zdGFuY2UoTG9jYWxlLmdldERlZmF1bHQoKSwgTlVNQkVSU1RZTEUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGRlZmF1bHQgbnVtYmVyIGZvcm1hdCBmb3IgdGhlIHNwZWNpZmllZCBsb2NhbGUuCisgICAgICogVGhlIGRlZmF1bHQgZm9ybWF0IGlzIG9uZSBvZiB0aGUgc3R5bGVzIHByb3ZpZGVkIGJ5IHRoZSBvdGhlcgorICAgICAqIGZhY3RvcnkgbWV0aG9kczogZ2V0TnVtYmVySW5zdGFuY2UsIGdldEN1cnJlbmN5SW5zdGFuY2Ugb3IgZ2V0UGVyY2VudEluc3RhbmNlLgorICAgICAqIEV4YWN0bHkgd2hpY2ggb25lIGlzIGxvY2FsZSBkZXBlbmRhbnQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBOdW1iZXJGb3JtYXQgZ2V0SW5zdGFuY2UoTG9jYWxlIGluTG9jYWxlKSB7CisgICAgICAgIHJldHVybiBnZXRJbnN0YW5jZShpbkxvY2FsZSwgTlVNQkVSU1RZTEUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBnZW5lcmFsLXB1cnBvc2UgbnVtYmVyIGZvcm1hdCBmb3IgdGhlIGN1cnJlbnQgZGVmYXVsdCBsb2NhbGUuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBOdW1iZXJGb3JtYXQgZ2V0TnVtYmVySW5zdGFuY2UoKSB7CisgICAgICAgIHJldHVybiBnZXRJbnN0YW5jZShMb2NhbGUuZ2V0RGVmYXVsdCgpLCBOVU1CRVJTVFlMRSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIGdlbmVyYWwtcHVycG9zZSBudW1iZXIgZm9ybWF0IGZvciB0aGUgc3BlY2lmaWVkIGxvY2FsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIE51bWJlckZvcm1hdCBnZXROdW1iZXJJbnN0YW5jZShMb2NhbGUgaW5Mb2NhbGUpIHsKKyAgICAgICAgcmV0dXJuIGdldEluc3RhbmNlKGluTG9jYWxlLCBOVU1CRVJTVFlMRSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIGN1cnJlbmN5IGZvcm1hdCBmb3IgdGhlIGN1cnJlbnQgZGVmYXVsdCBsb2NhbGUuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBOdW1iZXJGb3JtYXQgZ2V0Q3VycmVuY3lJbnN0YW5jZSgpIHsKKyAgICAgICAgcmV0dXJuIGdldEluc3RhbmNlKExvY2FsZS5nZXREZWZhdWx0KCksIENVUlJFTkNZU1RZTEUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBjdXJyZW5jeSBmb3JtYXQgZm9yIHRoZSBzcGVjaWZpZWQgbG9jYWxlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgTnVtYmVyRm9ybWF0IGdldEN1cnJlbmN5SW5zdGFuY2UoTG9jYWxlIGluTG9jYWxlKSB7CisgICAgICAgIHJldHVybiBnZXRJbnN0YW5jZShpbkxvY2FsZSwgQ1VSUkVOQ1lTVFlMRSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIHBlcmNlbnRhZ2UgZm9ybWF0IGZvciB0aGUgY3VycmVudCBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIE51bWJlckZvcm1hdCBnZXRQZXJjZW50SW5zdGFuY2UoKSB7CisgICAgICAgIHJldHVybiBnZXRJbnN0YW5jZShMb2NhbGUuZ2V0RGVmYXVsdCgpLCBQRVJDRU5UU1RZTEUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBwZXJjZW50YWdlIGZvcm1hdCBmb3IgdGhlIHNwZWNpZmllZCBsb2NhbGUuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBOdW1iZXJGb3JtYXQgZ2V0UGVyY2VudEluc3RhbmNlKExvY2FsZSBpbkxvY2FsZSkgeworICAgICAgICByZXR1cm4gZ2V0SW5zdGFuY2UoaW5Mb2NhbGUsIFBFUkNFTlRTVFlMRSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogPHN0cm9uZz48Zm9udCBmYWNlPWhlbHZldGljYSBjb2xvcj1yZWQ+TkVXPC9mb250Pjwvc3Ryb25nPgorICAgICAqIFJldHVybnMgYSBzY2llbnRpZmljIGZvcm1hdCBmb3IgdGhlIGN1cnJlbnQgZGVmYXVsdCBsb2NhbGUuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBOdW1iZXJGb3JtYXQgZ2V0U2NpZW50aWZpY0luc3RhbmNlKCkgeworICAgICAgICByZXR1cm4gZ2V0SW5zdGFuY2UoTG9jYWxlLmdldERlZmF1bHQoKSwgU0NJRU5USUZJQ1NUWUxFKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiA8c3Ryb25nPjxmb250IGZhY2U9aGVsdmV0aWNhIGNvbG9yPXJlZD5ORVc8L2ZvbnQ+PC9zdHJvbmc+CisgICAgICogUmV0dXJucyBhIHNjaWVudGlmaWMgZm9ybWF0IGZvciB0aGUgc3BlY2lmaWVkIGxvY2FsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIE51bWJlckZvcm1hdCBnZXRTY2llbnRpZmljSW5zdGFuY2UoTG9jYWxlIGluTG9jYWxlKSB7CisgICAgICAgIHJldHVybiBnZXRJbnN0YW5jZShpbkxvY2FsZSwgU0NJRU5USUZJQ1NUWUxFKTsKKyAgICB9CisKKworICAgIC8qKgorICAgICAqIEdldCB0aGUgc2V0IG9mIExvY2FsZXMgZm9yIHdoaWNoIE51bWJlckZvcm1hdHMgYXJlIGluc3RhbGxlZAorICAgICAqIEByZXR1cm4gYXZhaWxhYmxlIGxvY2FsZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIExvY2FsZVtdIGdldEF2YWlsYWJsZUxvY2FsZXMoKSB7CisgICAgICAgIHJldHVybiBMb2NhbGVEYXRhLmdldEF2YWlsYWJsZUxvY2FsZXMoIk51bWJlclBhdHRlcm5zIik7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIGhhc2hDb2RlCisgICAgICovCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgcmV0dXJuIG1heGltdW1JbnRlZ2VyRGlnaXRzICogMzcgKyBtYXhGcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgLy8ganVzdCBlbm91Z2ggZmllbGRzIGZvciBhIHJlYXNvbmFibGUgZGlzdHJpYnV0aW9uCisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIGVxdWFscworICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7CisgICAgICAgIGlmIChvYmogPT0gbnVsbCkgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAodGhpcyA9PSBvYmopCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKGdldENsYXNzKCkgIT0gb2JqLmdldENsYXNzKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIE51bWJlckZvcm1hdCBvdGhlciA9IChOdW1iZXJGb3JtYXQpIG9iajsKKyAgICAgICAgcmV0dXJuIChtYXhpbXVtSW50ZWdlckRpZ2l0cyA9PSBvdGhlci5tYXhpbXVtSW50ZWdlckRpZ2l0cworICAgICAgICAgICAgJiYgbWluaW11bUludGVnZXJEaWdpdHMgPT0gb3RoZXIubWluaW11bUludGVnZXJEaWdpdHMKKyAgICAgICAgICAgICYmIG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9PSBvdGhlci5tYXhpbXVtRnJhY3Rpb25EaWdpdHMKKyAgICAgICAgICAgICYmIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9PSBvdGhlci5taW5pbXVtRnJhY3Rpb25EaWdpdHMKKyAgICAgICAgICAgICYmIGdyb3VwaW5nVXNlZCA9PSBvdGhlci5ncm91cGluZ1VzZWQKKyAgICAgICAgICAgICYmIHBhcnNlSW50ZWdlck9ubHkgPT0gb3RoZXIucGFyc2VJbnRlZ2VyT25seSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIENsb25lYWJsZQorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKQorICAgIHsKKyAgICAgICAgTnVtYmVyRm9ybWF0IG90aGVyID0gKE51bWJlckZvcm1hdCkgc3VwZXIuY2xvbmUoKTsKKyAgICAgICAgcmV0dXJuIG90aGVyOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiBncm91cGluZyBpcyB1c2VkIGluIHRoaXMgZm9ybWF0LiBGb3IgZXhhbXBsZSwgaW4gdGhlCisgICAgICogRW5nbGlzaCBsb2NhbGUsIHdpdGggZ3JvdXBpbmcgb24sIHRoZSBudW1iZXIgMTIzNDU2NyBtaWdodCBiZSBmb3JtYXR0ZWQKKyAgICAgKiBhcyAiMSwyMzQsNTY3Ii4gVGhlIGdyb3VwaW5nIHNlcGFyYXRvciBhcyB3ZWxsIGFzIHRoZSBzaXplIG9mIGVhY2ggZ3JvdXAKKyAgICAgKiBpcyBsb2NhbGUgZGVwZW5kYW50IGFuZCBpcyBkZXRlcm1pbmVkIGJ5IHN1Yi1jbGFzc2VzIG9mIE51bWJlckZvcm1hdC4KKyAgICAgKiBAc2VlICNzZXRHcm91cGluZ1VzZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0dyb3VwaW5nVXNlZCgpIHsKKyAgICAgICAgcmV0dXJuIGdyb3VwaW5nVXNlZDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgd2hldGhlciBvciBub3QgZ3JvdXBpbmcgd2lsbCBiZSB1c2VkIGluIHRoaXMgZm9ybWF0LgorICAgICAqIEBzZWUgI2lzR3JvdXBpbmdVc2VkCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0R3JvdXBpbmdVc2VkKGJvb2xlYW4gbmV3VmFsdWUpIHsKKyAgICAgICAgZ3JvdXBpbmdVc2VkID0gbmV3VmFsdWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbWF4aW11bSBudW1iZXIgb2YgZGlnaXRzIGFsbG93ZWQgaW4gdGhlIGludGVnZXIgcG9ydGlvbiBvZiBhCisgICAgICogbnVtYmVyLgorICAgICAqIEBzZWUgI3NldE1heGltdW1JbnRlZ2VyRGlnaXRzCisgICAgICovCisgICAgcHVibGljIGludCBnZXRNYXhpbXVtSW50ZWdlckRpZ2l0cygpIHsKKyAgICAgICAgcmV0dXJuIG1heGltdW1JbnRlZ2VyRGlnaXRzOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhbGxvd2VkIGluIHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgYQorICAgICAqIG51bWJlci4gbWF4aW11bUludGVnZXJEaWdpdHMgbXVzdCBiZSA+PSBtaW5pbXVtSW50ZWdlckRpZ2l0cy4gIElmIHRoZQorICAgICAqIG5ldyB2YWx1ZSBmb3IgbWF4aW11bUludGVnZXJEaWdpdHMgaXMgbGVzcyB0aGFuIHRoZSBjdXJyZW50IHZhbHVlCisgICAgICogb2YgbWluaW11bUludGVnZXJEaWdpdHMsIHRoZW4gbWluaW11bUludGVnZXJEaWdpdHMgd2lsbCBhbHNvIGJlIHNldCB0bworICAgICAqIHRoZSBuZXcgdmFsdWUuCisgICAgICogQHBhcmFtIG5ld1ZhbHVlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBpbnRlZ2VyIGRpZ2l0cyB0byBiZSBzaG93bjsgaWYKKyAgICAgKiBsZXNzIHRoYW4gemVybywgdGhlbiB6ZXJvIGlzIHVzZWQuIFRoZSBjb25jcmV0ZSBzdWJjbGFzcyBtYXkgZW5mb3JjZSBhbgorICAgICAqIHVwcGVyIGxpbWl0IHRvIHRoaXMgdmFsdWUgYXBwcm9wcmlhdGUgdG8gdGhlIG51bWVyaWMgdHlwZSBiZWluZyBmb3JtYXR0ZWQuCisgICAgICogQHNlZSAjZ2V0TWF4aW11bUludGVnZXJEaWdpdHMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRNYXhpbXVtSW50ZWdlckRpZ2l0cyhpbnQgbmV3VmFsdWUpIHsKKyAgICAgICAgbWF4aW11bUludGVnZXJEaWdpdHMgPSBNYXRoLm1heCgwLG5ld1ZhbHVlKTsKKyAgICAgICAgaWYgKG1pbmltdW1JbnRlZ2VyRGlnaXRzID4gbWF4aW11bUludGVnZXJEaWdpdHMpCisgICAgICAgICAgICBtaW5pbXVtSW50ZWdlckRpZ2l0cyA9IG1heGltdW1JbnRlZ2VyRGlnaXRzOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhbGxvd2VkIGluIHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgYQorICAgICAqIG51bWJlci4KKyAgICAgKiBAc2VlICNzZXRNaW5pbXVtSW50ZWdlckRpZ2l0cworICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0TWluaW11bUludGVnZXJEaWdpdHMoKSB7CisgICAgICAgIHJldHVybiBtaW5pbXVtSW50ZWdlckRpZ2l0czsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBkaWdpdHMgYWxsb3dlZCBpbiB0aGUgaW50ZWdlciBwb3J0aW9uIG9mIGEKKyAgICAgKiBudW1iZXIuIG1pbmltdW1JbnRlZ2VyRGlnaXRzIG11c3QgYmUgPD0gbWF4aW11bUludGVnZXJEaWdpdHMuICBJZiB0aGUKKyAgICAgKiBuZXcgdmFsdWUgZm9yIG1pbmltdW1JbnRlZ2VyRGlnaXRzIGV4Y2VlZHMgdGhlIGN1cnJlbnQgdmFsdWUKKyAgICAgKiBvZiBtYXhpbXVtSW50ZWdlckRpZ2l0cywgdGhlbiBtYXhpbXVtSW50ZWdlckRpZ2l0cyB3aWxsIGFsc28gYmUgc2V0IHRvCisgICAgICogdGhlIG5ldyB2YWx1ZQorICAgICAqIEBwYXJhbSBuZXdWYWx1ZSB0aGUgbWluaW11bSBudW1iZXIgb2YgaW50ZWdlciBkaWdpdHMgdG8gYmUgc2hvd247IGlmCisgICAgICogbGVzcyB0aGFuIHplcm8sIHRoZW4gemVybyBpcyB1c2VkLiBUaGUgY29uY3JldGUgc3ViY2xhc3MgbWF5IGVuZm9yY2UgYW4KKyAgICAgKiB1cHBlciBsaW1pdCB0byB0aGlzIHZhbHVlIGFwcHJvcHJpYXRlIHRvIHRoZSBudW1lcmljIHR5cGUgYmVpbmcgZm9ybWF0dGVkLgorICAgICAqIEBzZWUgI2dldE1pbmltdW1JbnRlZ2VyRGlnaXRzCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TWluaW11bUludGVnZXJEaWdpdHMoaW50IG5ld1ZhbHVlKSB7CisgICAgICAgIG1pbmltdW1JbnRlZ2VyRGlnaXRzID0gTWF0aC5tYXgoMCxuZXdWYWx1ZSk7CisgICAgICAgIGlmIChtaW5pbXVtSW50ZWdlckRpZ2l0cyA+IG1heGltdW1JbnRlZ2VyRGlnaXRzKQorICAgICAgICAgICAgbWF4aW11bUludGVnZXJEaWdpdHMgPSBtaW5pbXVtSW50ZWdlckRpZ2l0czsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBtYXhpbXVtIG51bWJlciBvZiBkaWdpdHMgYWxsb3dlZCBpbiB0aGUgZnJhY3Rpb24gcG9ydGlvbiBvZiBhCisgICAgICogbnVtYmVyLgorICAgICAqIEBzZWUgI3NldE1heGltdW1GcmFjdGlvbkRpZ2l0cworICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzKCkgeworICAgICAgICByZXR1cm4gbWF4aW11bUZyYWN0aW9uRGlnaXRzOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhbGxvd2VkIGluIHRoZSBmcmFjdGlvbiBwb3J0aW9uIG9mIGEKKyAgICAgKiBudW1iZXIuIG1heGltdW1GcmFjdGlvbkRpZ2l0cyBtdXN0IGJlID49IG1pbmltdW1GcmFjdGlvbkRpZ2l0cy4gIElmIHRoZQorICAgICAqIG5ldyB2YWx1ZSBmb3IgbWF4aW11bUZyYWN0aW9uRGlnaXRzIGlzIGxlc3MgdGhhbiB0aGUgY3VycmVudCB2YWx1ZQorICAgICAqIG9mIG1pbmltdW1GcmFjdGlvbkRpZ2l0cywgdGhlbiBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgd2lsbCBhbHNvIGJlIHNldCB0bworICAgICAqIHRoZSBuZXcgdmFsdWUuCisgICAgICogQHBhcmFtIG5ld1ZhbHVlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBmcmFjdGlvbiBkaWdpdHMgdG8gYmUgc2hvd247IGlmCisgICAgICogbGVzcyB0aGFuIHplcm8sIHRoZW4gemVybyBpcyB1c2VkLiBUaGUgY29uY3JldGUgc3ViY2xhc3MgbWF5IGVuZm9yY2UgYW4KKyAgICAgKiB1cHBlciBsaW1pdCB0byB0aGlzIHZhbHVlIGFwcHJvcHJpYXRlIHRvIHRoZSBudW1lcmljIHR5cGUgYmVpbmcgZm9ybWF0dGVkLgorICAgICAqIEBzZWUgI2dldE1heGltdW1GcmFjdGlvbkRpZ2l0cworICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldE1heGltdW1GcmFjdGlvbkRpZ2l0cyhpbnQgbmV3VmFsdWUpIHsKKyAgICAgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gTWF0aC5tYXgoMCxuZXdWYWx1ZSk7CisgICAgICAgIGlmIChtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMpCisgICAgICAgICAgICBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhpbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbWluaW11bSBudW1iZXIgb2YgZGlnaXRzIGFsbG93ZWQgaW4gdGhlIGZyYWN0aW9uIHBvcnRpb24gb2YgYQorICAgICAqIG51bWJlci4KKyAgICAgKiBAc2VlICNzZXRNaW5pbXVtRnJhY3Rpb25EaWdpdHMKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldE1pbmltdW1GcmFjdGlvbkRpZ2l0cygpIHsKKyAgICAgICAgcmV0dXJuIG1pbmltdW1GcmFjdGlvbkRpZ2l0czsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBkaWdpdHMgYWxsb3dlZCBpbiB0aGUgZnJhY3Rpb24gcG9ydGlvbiBvZiBhCisgICAgICogbnVtYmVyLiBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgbXVzdCBiZSA8PSBtYXhpbXVtRnJhY3Rpb25EaWdpdHMuICBJZiB0aGUKKyAgICAgKiBuZXcgdmFsdWUgZm9yIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBleGNlZWRzIHRoZSBjdXJyZW50IHZhbHVlCisgICAgICogb2YgbWF4aW11bUZyYWN0aW9uRGlnaXRzLCB0aGVuIG1heGltdW1JbnRlZ2VyRGlnaXRzIHdpbGwgYWxzbyBiZSBzZXQgdG8KKyAgICAgKiB0aGUgbmV3IHZhbHVlCisgICAgICogQHBhcmFtIG5ld1ZhbHVlIHRoZSBtaW5pbXVtIG51bWJlciBvZiBmcmFjdGlvbiBkaWdpdHMgdG8gYmUgc2hvd247IGlmCisgICAgICogbGVzcyB0aGFuIHplcm8sIHRoZW4gemVybyBpcyB1c2VkLiBUaGUgY29uY3JldGUgc3ViY2xhc3MgbWF5IGVuZm9yY2UgYW4KKyAgICAgKiB1cHBlciBsaW1pdCB0byB0aGlzIHZhbHVlIGFwcHJvcHJpYXRlIHRvIHRoZSBudW1lcmljIHR5cGUgYmVpbmcgZm9ybWF0dGVkLgorICAgICAqIEBzZWUgI2dldE1pbmltdW1GcmFjdGlvbkRpZ2l0cworICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldE1pbmltdW1GcmFjdGlvbkRpZ2l0cyhpbnQgbmV3VmFsdWUpIHsKKyAgICAgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gTWF0aC5tYXgoMCxuZXdWYWx1ZSk7CisgICAgICAgIGlmIChtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMpCisgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtaW5pbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgfQorCisgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT1wcml2YXRlcz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8vIFtORVddCisgICAgcHJpdmF0ZSBzdGF0aWMgTnVtYmVyRm9ybWF0IGdldEluc3RhbmNlKExvY2FsZSBkZXNpcmVkTG9jYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hvaWNlKSB7CisgICAgICAgIHJldHVybiBuZXcgRGVjaW1hbEZvcm1hdChnZXRQYXR0ZXJuKGRlc2lyZWRMb2NhbGUsIGNob2ljZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgRGVjaW1hbEZvcm1hdFN5bWJvbHMoZGVzaXJlZExvY2FsZSkpOworICAgIH0KKworICAgIC8vIFtORVddCisgICAgcHJvdGVjdGVkIHN0YXRpYyBTdHJpbmcgZ2V0UGF0dGVybihMb2NhbGUgZm9yTG9jYWxlLCBpbnQgY2hvaWNlKSB7CisKKyAgICAgICAgLyogVGhlIGZvbGxvd2luZyBjb2RlIHRha2VzIGNhcmUgb2YgYSBmZXcgY2FzZXMgd2hlcmUgdGhlCisgICAgICAgICAqIHJlc291cmNlIGRhdGEgaW4gdGhlIHVuZGVybHlpbmcgSkRLIGxhZ3MgdGhlIG5ldyBmZWF0dXJlcworICAgICAgICAgKiB3ZSBoYXZlIGFkZGVkIHRvIElDVTRKOiBzY2llbnRpZmljIG5vdGF0aW9uLCByb3VuZGluZywgYW5kCisgICAgICAgICAqIHNlY29uZGFyeSBncm91cGluZy4KKyAgICAgICAgICoKKyAgICAgICAgICogV2UgZGV0ZWN0IHRoZXNlIGNhc2VzIGhlcmUgYW5kIHJldHVybiB2YXJpb3VzIGhhcmQtY29kZWQKKyAgICAgICAgICogcmVzb3VyY2UgZGF0YS4gIFRoaXMgaXMgdGhlIHNpbXBsZXN0IHNvbHV0aW9uIGZvciBub3csIGJ1dAorICAgICAgICAgKiBpdCBpcyBub3QgYSBnb29kIGxvbmctdGVybSBtZWNoYW5pc20uCisgICAgICAgICAqIAorICAgICAgICAgKiBXZSBzaG91bGQgcmVwbGFjZSB0aGlzIGNvZGUgd2l0aCBhIGRhdGEtZHJpdmVuIG1lY2hhbmlzbQorICAgICAgICAgKiB0aGF0IHJlYWRzIHRoZSBidW5kbGUgY29tLmlibS50ZXh0LnJlc291cmNlcy5Mb2NhbGVFbGVtZW50cworICAgICAgICAgKiBhbmQgcGFyc2VzIGFuIGV4Y2VwdGlvbiB0YWJsZSB0aGF0IG92ZXJyaWRlcyB0aGUgc3RhbmRhcmQKKyAgICAgICAgICogZGF0YSBhdCBqYXZhLnRleHQucmVzb3VyY2UuTG9jYWxlRWxlbWVudHMqLmphdmEuCisgICAgICAgICAqIEFsdGVybmF0aXZlbHksIHdlIHNob3VsZCBjcmVhdGUgb3VyIG93biBjb3B5IG9mIHRoZQorICAgICAgICAgKiByZXNvdXJjZSBkYXRhLCBhbmQgdXNlIHRoYXQgZXhjbHVzaXZlbHkuCisgICAgICAgICAqLworCisgICAgICAgIC8vIFRFTVBPUkFSWSwgdW50aWwgd2UgZ2V0IHNjaWVudGlmaWMgcGF0dGVybnMgaW50byB0aGUgbWFpbgorICAgICAgICAvLyByZXNvdXJjZXM6ICBSZXRyaWV2ZSBzY2llbnRpZmljIHBhdHRlcm5zIGZyb20gb3VyIHJlc291cmNlcy4KKyAgICAgICAgaWYgKGNob2ljZSA9PSBTQ0lFTlRJRklDU1RZTEUpIHsKKyAgICAgICAgICAgIC8vIFRlbXBvcmFyaWx5IGhhcmQgY29kZTsgcmV0cmlldmUgZnJvbSByZXNvdXJjZSBsYXRlcgorICAgICAgICAgICAgcmV0dXJuICIwLiMjIyMjI0UwIjsKKyAgICAgICAgICAgIC8vIHJldHVybiBOdW1iZXJGb3JtYXQuZ2V0QmFzZVN0cmluZ0FycmF5KCJOdW1iZXJQYXR0ZXJucyIpW1NDSUVOVElGSUNTVFlMRV07CisgICAgICAgIH0KKyAgICAgICAgLy8gVEVNUE9SQVJZOiBVc2Ugcm91bmRpbmcgZm9yIFN3aXNzIGN1cnJlbmN5CisgICAgICAgIGlmIChjaG9pY2UgPT0gQ1VSUkVOQ1lTVFlMRSAmJgorICAgICAgICAgICAgZm9yTG9jYWxlLmdldENvdW50cnkoKS5lcXVhbHMoIkNIIikpIHsKKyAgICAgICAgICAgIHJldHVybiAiJ0ZyLiAnIywjIzAuMDU7J0ZyLi0nIywjIzAuMDUiOworICAgICAgICB9CisgICAgICAgIC8vIFRFTVBPUkFSWTogU3BlY2lhbCBjYXNlIElOIG51bWJlciBmb3JtYXQKKyAgICAgICAgaWYgKGNob2ljZSA9PSBOVU1CRVJTVFlMRSAmJgorICAgICAgICAgICAgZm9yTG9jYWxlLmdldENvdW50cnkoKS5lcXVhbHMoIklOIikpIHsKKyAgICAgICAgICAgIHJldHVybiAiIywjIywjIzAuIyMjIjsKKyAgICAgICAgfQorICAgICAgICAvLyBUcnkgdGhlIGNhY2hlIGZpcnN0CisgICAgICAgIFN0cmluZ1tdIG51bWJlclBhdHRlcm5zID0gKFN0cmluZ1tdKSBjYWNoZWRMb2NhbGVEYXRhLmdldChmb3JMb2NhbGUpOworICAgICAgICBpZiAobnVtYmVyUGF0dGVybnMgPT0gbnVsbCkgeworICAgICAgICAgICAgUmVzb3VyY2VCdW5kbGUgcmVzb3VyY2UgPSBSZXNvdXJjZUJ1bmRsZS5nZXRCdW5kbGUKKyAgICAgICAgICAgICAgICAoUkVTT1VSQ0VfQkFTRSwgZm9yTG9jYWxlKTsKKyAgICAgICAgICAgIG51bWJlclBhdHRlcm5zID0gcmVzb3VyY2UuZ2V0U3RyaW5nQXJyYXkoIk51bWJlclBhdHRlcm5zIik7CisgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGNhY2hlCisgICAgICAgICAgICBjYWNoZWRMb2NhbGVEYXRhLnB1dChmb3JMb2NhbGUsIG51bWJlclBhdHRlcm5zKTsgCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bWJlclBhdHRlcm5zW2Nob2ljZV07CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkVTT1VSQ0VfQkFTRSA9ICJqYXZhLnRleHQucmVzb3VyY2VzLkxvY2FsZUVsZW1lbnRzIjsKKyAgICAKKy8vISAgICBzdGF0aWMgUmVzb3VyY2VCdW5kbGUgYmFzZUJ1bmRsZSA9IG51bGw7CisvLyEgICAgCisvLyEgICAgcHVibGljIHN5bmNocm9uaXplZCBzdGF0aWMgZmluYWwgU3RyaW5nW10gZ2V0QmFzZVN0cmluZ0FycmF5KFN0cmluZyBuYW1lKSB7CisvLyEgICAgICAgIGlmIChiYXNlQnVuZGxlID09IG51bGwpIHsKKy8vISAgICAgICAgICAgIGJhc2VCdW5kbGUgPSBSZXNvdXJjZUJ1bmRsZS5nZXRCdW5kbGUoUkVTT1VSQ0VfQkFTRSk7CisvLyEgICAgICAgIH0KKy8vISAgICAgICAgcmV0dXJuIGJhc2VCdW5kbGUuZ2V0U3RyaW5nQXJyYXkobmFtZSk7CisvLyEgICAgfQorCisgICAgLyoqCisgICAgICogRmlyc3QsIHJlYWQgaW4gdGhlIGRlZmF1bHQgc2VyaWFsaXphYmxlIGRhdGEuCisgICAgICoKKyAgICAgKiBUaGVuLCBpZiA8Y29kZT5zZXJpYWxWZXJzaW9uT25TdHJlYW08L2NvZGU+IGlzIGxlc3MgdGhhbiAxLCBpbmRpY2F0aW5nIHRoYXQKKyAgICAgKiB0aGUgc3RyZWFtIHdhcyB3cml0dGVuIGJ5IEpESyAxLjEsCisgICAgICogc2V0IHRoZSA8Y29kZT5pbnQ8L2NvZGU+IGZpZWxkcyBzdWNoIGFzIDxjb2RlPm1heGltdW1JbnRlZ2VyRGlnaXRzPC9jb2RlPgorICAgICAqIHRvIGJlIGVxdWFsIHRvIHRoZSA8Y29kZT5ieXRlPC9jb2RlPiBmaWVsZHMgc3VjaCBhcyA8Y29kZT5tYXhJbnRlZ2VyRGlnaXRzPC9jb2RlPiwKKyAgICAgKiBzaW5jZSB0aGUgPGNvZGU+aW50PC9jb2RlPiBmaWVsZHMgd2VyZSBub3QgcHJlc2VudCBpbiBKREsgMS4xLgorICAgICAqIEZpbmFsbHksIHNldCBzZXJpYWxWZXJzaW9uT25TdHJlYW0gYmFjayB0byB0aGUgbWF4aW11bSBhbGxvd2VkIHZhbHVlIHNvIHRoYXQKKyAgICAgKiBkZWZhdWx0IHNlcmlhbGl6YXRpb24gd2lsbCB3b3JrIHByb3Blcmx5IGlmIHRoaXMgb2JqZWN0IGlzIHN0cmVhbWVkIG91dCBhZ2Fpbi4KKyAgICAgKgorICAgICAqIEBzaW5jZSBKREsgMS4yCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHJlYWRPYmplY3QoT2JqZWN0SW5wdXRTdHJlYW0gc3RyZWFtKQorICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBDbGFzc05vdEZvdW5kRXhjZXB0aW9uCisgICAgeworICAgICAgICBzdHJlYW0uZGVmYXVsdFJlYWRPYmplY3QoKTsKKyAgICAgICAgaWYgKHNlcmlhbFZlcnNpb25PblN0cmVhbSA8IDEpIHsKKyAgICAgICAgICAgIC8vIERpZG4ndCBoYXZlIGFkZGl0aW9uYWwgaW50IGZpZWxkcywgcmVhc3NpZ24gdG8gdXNlIHRoZW0uCisgICAgICAgICAgICBtYXhpbXVtSW50ZWdlckRpZ2l0cyA9IG1heEludGVnZXJEaWdpdHM7CisgICAgICAgICAgICBtaW5pbXVtSW50ZWdlckRpZ2l0cyA9IG1pbkludGVnZXJEaWdpdHM7CisgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBtYXhGcmFjdGlvbkRpZ2l0czsKKyAgICAgICAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IG1pbkZyYWN0aW9uRGlnaXRzOworICAgICAgICB9CisgICAgICAgIHNlcmlhbFZlcnNpb25PblN0cmVhbSA9IGN1cnJlbnRTZXJpYWxWZXJzaW9uOworICAgIH0KKworICAgIC8qKgorICAgICAqIFdyaXRlIG91dCB0aGUgZGVmYXVsdCBzZXJpYWxpemFibGUgZGF0YSwgYWZ0ZXIgZmlyc3Qgc2V0dGluZworICAgICAqIHRoZSA8Y29kZT5ieXRlPC9jb2RlPiBmaWVsZHMgc3VjaCBhcyA8Y29kZT5tYXhJbnRlZ2VyRGlnaXRzPC9jb2RlPiB0byBiZQorICAgICAqIGVxdWFsIHRvIHRoZSA8Y29kZT5pbnQ8L2NvZGU+IGZpZWxkcyBzdWNoIGFzIDxjb2RlPm1heGltdW1JbnRlZ2VyRGlnaXRzPC9jb2RlPgorICAgICAqIChvciB0byA8Y29kZT5CeXRlLk1BWF9WQUxVRTwvY29kZT4sIHdoaWNoZXZlciBpcyBzbWFsbGVyKSwgZm9yIGNvbXBhdGliaWxpdHkKKyAgICAgKiB3aXRoIHRoZSBKREsgMS4xIHZlcnNpb24gb2YgdGhlIHN0cmVhbSBmb3JtYXQuCisgICAgICoKKyAgICAgKiBAc2luY2UgSkRLIDEuMgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCB3cml0ZU9iamVjdChPYmplY3RPdXRwdXRTdHJlYW0gc3RyZWFtKQorICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uCisgICAgeworICAgICAgICBtYXhJbnRlZ2VyRGlnaXRzID0gKG1heGltdW1JbnRlZ2VyRGlnaXRzID4gQnl0ZS5NQVhfVkFMVUUpID8gQnl0ZS5NQVhfVkFMVUUgOgorICAgICAgICAgICAgKGJ5dGUpbWF4aW11bUludGVnZXJEaWdpdHM7CisgICAgICAgIG1pbkludGVnZXJEaWdpdHMgPSAobWluaW11bUludGVnZXJEaWdpdHMgPiBCeXRlLk1BWF9WQUxVRSkgPyBCeXRlLk1BWF9WQUxVRSA6CisgICAgICAgICAgICAoYnl0ZSltaW5pbXVtSW50ZWdlckRpZ2l0czsKKyAgICAgICAgbWF4RnJhY3Rpb25EaWdpdHMgPSAobWF4aW11bUZyYWN0aW9uRGlnaXRzID4gQnl0ZS5NQVhfVkFMVUUpID8gQnl0ZS5NQVhfVkFMVUUgOgorICAgICAgICAgICAgKGJ5dGUpbWF4aW11bUZyYWN0aW9uRGlnaXRzOworICAgICAgICBtaW5GcmFjdGlvbkRpZ2l0cyA9IChtaW5pbXVtRnJhY3Rpb25EaWdpdHMgPiBCeXRlLk1BWF9WQUxVRSkgPyBCeXRlLk1BWF9WQUxVRSA6CisgICAgICAgICAgICAoYnl0ZSltaW5pbXVtRnJhY3Rpb25EaWdpdHM7CisgICAgICAgIHN0cmVhbS5kZWZhdWx0V3JpdGVPYmplY3QoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDYWNoZSB0byBob2xkIHRoZSBOdW1iZXJQYXR0ZXJucyBvZiBhIExvY2FsZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBIYXNodGFibGUgY2FjaGVkTG9jYWxlRGF0YSA9IG5ldyBIYXNodGFibGUoMyk7CisKKyAgICAvLyBDb25zdGFudHMgdXNlZCBieSBmYWN0b3J5IG1ldGhvZHMgdG8gc3BlY2lmeSBhIHN0eWxlIG9mIGZvcm1hdC4KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTlVNQkVSU1RZTEUgPSAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDVVJSRU5DWVNUWUxFID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgUEVSQ0VOVFNUWUxFID0gMjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0NJRU5USUZJQ1NUWUxFID0gMzsKKworICAgIC8qKgorICAgICAqIFRydWUgaWYgdGhlIHRoZSBncm91cGluZyAoaS5lLiB0aG91c2FuZHMpIHNlcGFyYXRvciBpcyB1c2VkIHdoZW4KKyAgICAgKiBmb3JtYXR0aW5nIGFuZCBwYXJzaW5nIG51bWJlcnMuCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNlZSAjaXNHcm91cGluZ1VzZWQKKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gZ3JvdXBpbmdVc2VkID0gdHJ1ZTsKKworICAgIC8qKgorICAgICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBkaWdpdHMgYWxsb3dlZCBpbiB0aGUgaW50ZWdlciBwb3J0aW9uIG9mIGEKKyAgICAgKiBudW1iZXIuICA8Y29kZT5tYXhJbnRlZ2VyRGlnaXRzPC9jb2RlPiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bworICAgICAqIDxjb2RlPm1pbkludGVnZXJEaWdpdHM8L2NvZGU+LgorICAgICAqIDxwPgorICAgICAqIDxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVGhpcyBmaWVsZCBleGlzdHMgb25seSBmb3Igc2VyaWFsaXphdGlvbgorICAgICAqIGNvbXBhdGliaWxpdHkgd2l0aCBKREsgMS4xLiAgSW4gSkRLIDEuMiBhbmQgaGlnaGVyLCB0aGUgbmV3CisgICAgICogPGNvZGU+aW50PC9jb2RlPiBmaWVsZCA8Y29kZT5tYXhpbXVtSW50ZWdlckRpZ2l0czwvY29kZT4gaXMgdXNlZCBpbnN0ZWFkLgorICAgICAqIFdoZW4gd3JpdGluZyB0byBhIHN0cmVhbSwgPGNvZGU+bWF4SW50ZWdlckRpZ2l0czwvY29kZT4gaXMgc2V0IHRvCisgICAgICogPGNvZGU+bWF4aW11bUludGVnZXJEaWdpdHM8L2NvZGU+IG9yIDxjb2RlPkJ5dGUuTUFYX1ZBTFVFPC9jb2RlPiwKKyAgICAgKiB3aGljaGV2ZXIgaXMgc21hbGxlci4gIFdoZW4gcmVhZGluZyBmcm9tIGEgc3RyZWFtLCB0aGlzIGZpZWxkIGlzIHVzZWQKKyAgICAgKiBvbmx5IGlmIDxjb2RlPnNlcmlhbFZlcnNpb25PblN0cmVhbTwvY29kZT4gaXMgbGVzcyB0aGFuIDEuIAorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqIEBzZWUgI2dldE1heGltdW1JbnRlZ2VyRGlnaXRzCisgICAgICovCisgICAgcHJpdmF0ZSBieXRlICAgIG1heEludGVnZXJEaWdpdHMgPSA0MDsKKworICAgIC8qKgorICAgICAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiBkaWdpdHMgYWxsb3dlZCBpbiB0aGUgaW50ZWdlciBwb3J0aW9uIG9mIGEKKyAgICAgKiBudW1iZXIuICA8Y29kZT5taW5pbXVtSW50ZWdlckRpZ2l0czwvY29kZT4gbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8KKyAgICAgKiA8Y29kZT5tYXhpbXVtSW50ZWdlckRpZ2l0czwvY29kZT4uCisgICAgICogPHA+CisgICAgICogPHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGlzIGZpZWxkIGV4aXN0cyBvbmx5IGZvciBzZXJpYWxpemF0aW9uCisgICAgICogY29tcGF0aWJpbGl0eSB3aXRoIEpESyAxLjEuICBJbiBKREsgMS4yIGFuZCBoaWdoZXIsIHRoZSBuZXcKKyAgICAgKiA8Y29kZT5pbnQ8L2NvZGU+IGZpZWxkIDxjb2RlPm1pbmltdW1JbnRlZ2VyRGlnaXRzPC9jb2RlPiBpcyB1c2VkIGluc3RlYWQuCisgICAgICogV2hlbiB3cml0aW5nIHRvIGEgc3RyZWFtLCA8Y29kZT5taW5JbnRlZ2VyRGlnaXRzPC9jb2RlPiBpcyBzZXQgdG8KKyAgICAgKiA8Y29kZT5taW5pbXVtSW50ZWdlckRpZ2l0czwvY29kZT4gb3IgPGNvZGU+Qnl0ZS5NQVhfVkFMVUU8L2NvZGU+LAorICAgICAqIHdoaWNoZXZlciBpcyBzbWFsbGVyLiAgV2hlbiByZWFkaW5nIGZyb20gYSBzdHJlYW0sIHRoaXMgZmllbGQgaXMgdXNlZAorICAgICAqIG9ubHkgaWYgPGNvZGU+c2VyaWFsVmVyc2lvbk9uU3RyZWFtPC9jb2RlPiBpcyBsZXNzIHRoYW4gMS4gCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNlZSAjZ2V0TWluaW11bUludGVnZXJEaWdpdHMKKyAgICAgKi8KKyAgICBwcml2YXRlIGJ5dGUgICAgbWluSW50ZWdlckRpZ2l0cyA9IDE7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZGlnaXRzIGFsbG93ZWQgaW4gdGhlIGZyYWN0aW9uYWwgcG9ydGlvbiBvZiBhCisgICAgICogbnVtYmVyLiAgPGNvZGU+bWF4aW11bUZyYWN0aW9uRGlnaXRzPC9jb2RlPiBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0bworICAgICAqIDxjb2RlPm1pbmltdW1GcmFjdGlvbkRpZ2l0czwvY29kZT4uCisgICAgICogPHA+CisgICAgICogPHN0cm9uZz5Ob3RlOjwvc3Ryb25nPiBUaGlzIGZpZWxkIGV4aXN0cyBvbmx5IGZvciBzZXJpYWxpemF0aW9uCisgICAgICogY29tcGF0aWJpbGl0eSB3aXRoIEpESyAxLjEuICBJbiBKREsgMS4yIGFuZCBoaWdoZXIsIHRoZSBuZXcKKyAgICAgKiA8Y29kZT5pbnQ8L2NvZGU+IGZpZWxkIDxjb2RlPm1heGltdW1GcmFjdGlvbkRpZ2l0czwvY29kZT4gaXMgdXNlZCBpbnN0ZWFkLgorICAgICAqIFdoZW4gd3JpdGluZyB0byBhIHN0cmVhbSwgPGNvZGU+bWF4RnJhY3Rpb25EaWdpdHM8L2NvZGU+IGlzIHNldCB0bworICAgICAqIDxjb2RlPm1heGltdW1GcmFjdGlvbkRpZ2l0czwvY29kZT4gb3IgPGNvZGU+Qnl0ZS5NQVhfVkFMVUU8L2NvZGU+LAorICAgICAqIHdoaWNoZXZlciBpcyBzbWFsbGVyLiAgV2hlbiByZWFkaW5nIGZyb20gYSBzdHJlYW0sIHRoaXMgZmllbGQgaXMgdXNlZAorICAgICAqIG9ubHkgaWYgPGNvZGU+c2VyaWFsVmVyc2lvbk9uU3RyZWFtPC9jb2RlPiBpcyBsZXNzIHRoYW4gMS4gCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNlZSAjZ2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzCisgICAgICovCisgICAgcHJpdmF0ZSBieXRlICAgIG1heEZyYWN0aW9uRGlnaXRzID0gMzsgICAgLy8gaW52YXJpYW50LCA+PSBtaW5GcmFjdGlvbkRpZ2l0cworCisgICAgLyoqCisgICAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhbGxvd2VkIGluIHRoZSBmcmFjdGlvbmFsIHBvcnRpb24gb2YgYQorICAgICAqIG51bWJlci4gIDxjb2RlPm1pbmltdW1GcmFjdGlvbkRpZ2l0czwvY29kZT4gbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8KKyAgICAgKiA8Y29kZT5tYXhpbXVtRnJhY3Rpb25EaWdpdHM8L2NvZGU+LgorICAgICAqIDxwPgorICAgICAqIDxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVGhpcyBmaWVsZCBleGlzdHMgb25seSBmb3Igc2VyaWFsaXphdGlvbgorICAgICAqIGNvbXBhdGliaWxpdHkgd2l0aCBKREsgMS4xLiAgSW4gSkRLIDEuMiBhbmQgaGlnaGVyLCB0aGUgbmV3CisgICAgICogPGNvZGU+aW50PC9jb2RlPiBmaWVsZCA8Y29kZT5taW5pbXVtRnJhY3Rpb25EaWdpdHM8L2NvZGU+IGlzIHVzZWQgaW5zdGVhZC4KKyAgICAgKiBXaGVuIHdyaXRpbmcgdG8gYSBzdHJlYW0sIDxjb2RlPm1pbkZyYWN0aW9uRGlnaXRzPC9jb2RlPiBpcyBzZXQgdG8KKyAgICAgKiA8Y29kZT5taW5pbXVtRnJhY3Rpb25EaWdpdHM8L2NvZGU+IG9yIDxjb2RlPkJ5dGUuTUFYX1ZBTFVFPC9jb2RlPiwKKyAgICAgKiB3aGljaGV2ZXIgaXMgc21hbGxlci4gIFdoZW4gcmVhZGluZyBmcm9tIGEgc3RyZWFtLCB0aGlzIGZpZWxkIGlzIHVzZWQKKyAgICAgKiBvbmx5IGlmIDxjb2RlPnNlcmlhbFZlcnNpb25PblN0cmVhbTwvY29kZT4gaXMgbGVzcyB0aGFuIDEuIAorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqIEBzZWUgI2dldE1pbmltdW1GcmFjdGlvbkRpZ2l0cworICAgICAqLworICAgIHByaXZhdGUgYnl0ZSAgICBtaW5GcmFjdGlvbkRpZ2l0cyA9IDA7CisKKyAgICAvKioKKyAgICAgKiBUcnVlIGlmIHRoaXMgZm9ybWF0IHdpbGwgcGFyc2UgbnVtYmVycyBhcyBpbnRlZ2VycyBvbmx5LgorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqIEBzZWUgI2lzUGFyc2VJbnRlZ2VyT25seQorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBwYXJzZUludGVnZXJPbmx5ID0gZmFsc2U7CisKKyAgICAvLyBuZXcgZmllbGRzIGZvciAxLjIuICBieXRlIGlzIHRvbyBzbWFsbCBmb3IgaW50ZWdlciBkaWdpdHMuCisKKyAgICAvKioKKyAgICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZGlnaXRzIGFsbG93ZWQgaW4gdGhlIGludGVnZXIgcG9ydGlvbiBvZiBhCisgICAgICogbnVtYmVyLiAgPGNvZGU+bWF4aW11bUludGVnZXJEaWdpdHM8L2NvZGU+IG11c3QgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvCisgICAgICogPGNvZGU+bWluaW11bUludGVnZXJEaWdpdHM8L2NvZGU+LgorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqIEBzaW5jZSBKREsgMS4yCisgICAgICogQHNlZSAjZ2V0TWF4aW11bUludGVnZXJEaWdpdHMKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCAgICBtYXhpbXVtSW50ZWdlckRpZ2l0cyA9IDQwOworCisgICAgLyoqCisgICAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhbGxvd2VkIGluIHRoZSBpbnRlZ2VyIHBvcnRpb24gb2YgYQorICAgICAqIG51bWJlci4gIDxjb2RlPm1pbmltdW1JbnRlZ2VyRGlnaXRzPC9jb2RlPiBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0bworICAgICAqIDxjb2RlPm1heGltdW1JbnRlZ2VyRGlnaXRzPC9jb2RlPi4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2luY2UgSkRLIDEuMgorICAgICAqIEBzZWUgI2dldE1pbmltdW1JbnRlZ2VyRGlnaXRzCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgICAgbWluaW11bUludGVnZXJEaWdpdHMgPSAxOworCisgICAgLyoqCisgICAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhbGxvd2VkIGluIHRoZSBmcmFjdGlvbmFsIHBvcnRpb24gb2YgYQorICAgICAqIG51bWJlci4gIDxjb2RlPm1heGltdW1GcmFjdGlvbkRpZ2l0czwvY29kZT4gbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8KKyAgICAgKiA8Y29kZT5taW5pbXVtRnJhY3Rpb25EaWdpdHM8L2NvZGU+LgorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqIEBzaW5jZSBKREsgMS4yCisgICAgICogQHNlZSAjZ2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgICAgbWF4aW11bUZyYWN0aW9uRGlnaXRzID0gMzsgICAgLy8gaW52YXJpYW50LCA+PSBtaW5GcmFjdGlvbkRpZ2l0cworCisgICAgLyoqCisgICAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIGRpZ2l0cyBhbGxvd2VkIGluIHRoZSBmcmFjdGlvbmFsIHBvcnRpb24gb2YgYQorICAgICAqIG51bWJlci4gIDxjb2RlPm1pbmltdW1GcmFjdGlvbkRpZ2l0czwvY29kZT4gbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8KKyAgICAgKiA8Y29kZT5tYXhpbXVtRnJhY3Rpb25EaWdpdHM8L2NvZGU+LgorICAgICAqCisgICAgICogQHNlcmlhbAorICAgICAqIEBzaW5jZSBKREsgMS4yCisgICAgICogQHNlZSAjZ2V0TWluaW11bUZyYWN0aW9uRGlnaXRzCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgICAgbWluaW11bUZyYWN0aW9uRGlnaXRzID0gMDsKKworICAgIHN0YXRpYyBmaW5hbCBpbnQgY3VycmVudFNlcmlhbFZlcnNpb24gPSAxOworCisgICAgLyoqCisgICAgICogRGVzY3JpYmVzIHRoZSB2ZXJzaW9uIG9mIDxjb2RlPk51bWJlckZvcm1hdDwvY29kZT4gcHJlc2VudCBvbiB0aGUgc3RyZWFtLgorICAgICAqIFBvc3NpYmxlIHZhbHVlcyBhcmU6CisgICAgICogPHVsPgorICAgICAqIDxsaT48Yj4wPC9iPiAob3IgdW5pbml0aWFsaXplZCk6IHRoZSBKREsgMS4xIHZlcnNpb24gb2YgdGhlIHN0cmVhbSBmb3JtYXQuCisgICAgICogICAgIEluIHRoaXMgdmVyc2lvbiwgdGhlIDxjb2RlPmludDwvY29kZT4gZmllbGRzIHN1Y2ggYXMKKyAgICAgKiAgICAgPGNvZGU+bWF4aW11bUludGVnZXJEaWdpdHM8L2NvZGU+IHdlcmUgbm90IHByZXNlbnQsIGFuZCB0aGUgPGNvZGU+Ynl0ZTwvY29kZT4KKyAgICAgKiAgICAgZmllbGRzIHN1Y2ggYXMgPGNvZGU+bWF4SW50ZWdlckRpZ2l0czwvY29kZT4gYXJlIHVzZWQgaW5zdGVhZC4KKyAgICAgKgorICAgICAqIDxsaT48Yj4xPC9iPjogdGhlIEpESyAxLjIgdmVyc2lvbiBvZiB0aGUgc3RyZWFtIGZvcm1hdC4gIFRoZSB2YWx1ZXMgb2YgdGhlCisgICAgICogICAgIDxjb2RlPmJ5dGU8L2NvZGU+IGZpZWxkcyBzdWNoIGFzIDxjb2RlPm1heEludGVnZXJEaWdpdHM8L2NvZGU+IGFyZSBpZ25vcmVkLAorICAgICAqICAgICBhbmQgdGhlIDxjb2RlPmludDwvY29kZT4gZmllbGRzIHN1Y2ggYXMgPGNvZGU+bWF4aW11bUludGVnZXJEaWdpdHM8L2NvZGU+CisgICAgICogICAgIGFyZSB1c2VkIGluc3RlYWQuCisgICAgICogPC91bD4KKyAgICAgKiBXaGVuIHN0cmVhbWluZyBvdXQgYSA8Y29kZT5OdW1iZXJGb3JtYXQ8L2NvZGU+LCB0aGUgbW9zdCByZWNlbnQgZm9ybWF0CisgICAgICogKGNvcnJlc3BvbmRpbmcgdG8gdGhlIGhpZ2hlc3QgYWxsb3dhYmxlIDxjb2RlPnNlcmlhbFZlcnNpb25PblN0cmVhbTwvY29kZT4pCisgICAgICogaXMgYWx3YXlzIHdyaXR0ZW4uCisgICAgICoKKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNpbmNlIEpESyAxLjIKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBzZXJpYWxWZXJzaW9uT25TdHJlYW0gPSBjdXJyZW50U2VyaWFsVmVyc2lvbjsKKworICAgIC8vIFJlbW92ZWQgImltcGxlbWVudHMgQ2xvbmVhYmxlIiBjbGF1c2UuICBOZWVkcyB0byB1cGRhdGUgc2VyaWFsaXphdGlvbgorICAgIC8vIElEIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgorICAgIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtMjMwODQ2MDEyNTczMzcxMzk0NEw7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L1JlcGxhY2VhYmxlLmphdmEgYi9zcmMvY29tL2libS90ZXh0L1JlcGxhY2VhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDNiMzE3MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvUmVwbGFjZWFibGUuamF2YQpAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9BdHRpYy9SZXBsYWNlYWJsZS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA0LzI1IDE3OjE3OjM3ICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXh0OworCisvKioKKyAqIDxjb2RlPlJlcGxhY2VhYmxlPC9jb2RlPiBpcyBhbiBpbnRlcmZhY2UgdGhhdCBzdXBwb3J0cyB0aGUKKyAqIG9wZXJhdGlvbiBvZiByZXBsYWNpbmcgYSBzdWJzdHJpbmcgd2l0aCBhbm90aGVyIHBpZWNlIG9mIHRleHQuCisgKiA8Y29kZT5SZXBsYWNlYWJsZTwvY29kZT4gaXMgbmVlZGVkIGluIG9yZGVyIHRvIGNoYW5nZSBhIHBpZWNlIG9mCisgKiB0ZXh0IHdoaWxlIHJldGFpbmluZyBzdHlsZSBhdHRyaWJ1dGVzLiAgRm9yIGV4YW1wbGUsIGlmIHRoZSBzdHJpbmcKKyAqICJ0aGUgPGI+Ym9sZDwvYj4gZm9udCIgaGFzIHJhbmdlICg0LCA4KSByZXBsYWNlZCB3aXRoICJzdHJvbmciLAorICogdGhlbiBpdCBiZWNvbWVzICJ0aGUgPGI+c3Ryb25nPC9iPiBmb250Ii4KKyAqCisgKiA8cD5Db3B5cmlnaHQgJmNvcHk7IElCTSBDb3Jwb3JhdGlvbiAxOTk5LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAdmVyc2lvbiAkUkNTZmlsZTogUmVwbGFjZWFibGUuamF2YSx2ICQgJFJldmlzaW9uOiAxLjMgJCAkRGF0ZTogMjAwMC8wNC8yNSAxNzoxNzozNyAkCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgUmVwbGFjZWFibGUgeworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhlIHRleHQuCisgICAgICogQHJldHVybiBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0ZXh0CisgICAgICovIAorICAgIGludCBsZW5ndGgoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgY2hhcmFjdGVyIGF0IHRoZSBnaXZlbiBvZmZzZXQgaW50byB0aGUgdGV4dC4KKyAgICAgKiBAcGFyYW0gb2Zmc2V0IGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCA8Y29kZT5sZW5ndGgoKTwvY29kZT4tMQorICAgICAqIGluY2x1c2l2ZQorICAgICAqIEByZXR1cm4gY2hhcmFjdGVyIG9mIHRleHQgYXQgZ2l2ZW4gb2Zmc2V0CisgICAgICovCisgICAgY2hhciBjaGFyQXQoaW50IG9mZnNldCk7CisKKyAgICAvKioKKyAgICAgKiBDb3BpZXMgY2hhcmFjdGVycyBmcm9tIHRoaXMgb2JqZWN0IGludG8gdGhlIGRlc3RpbmF0aW9uCisgICAgICogY2hhcmFjdGVyIGFycmF5LiAgVGhlIGZpcnN0IGNoYXJhY3RlciB0byBiZSBjb3BpZWQgaXMgYXQgaW5kZXgKKyAgICAgKiA8Y29kZT5zcmNTdGFydDwvY29kZT47IHRoZSBsYXN0IGNoYXJhY3RlciB0byBiZSBjb3BpZWQgaXMgYXQKKyAgICAgKiBpbmRleCA8Y29kZT5zcmNMaW1pdC0xPC9jb2RlPiAodGh1cyB0aGUgdG90YWwgbnVtYmVyIG9mCisgICAgICogY2hhcmFjdGVycyB0byBiZSBjb3BpZWQgaXMgPGNvZGU+c3JjTGltaXQtc3JjU3RhcnQ8L2NvZGU+KS4gVGhlCisgICAgICogY2hhcmFjdGVycyBhcmUgY29waWVkIGludG8gdGhlIHN1YmFycmF5IG9mIDxjb2RlPmRzdDwvY29kZT4KKyAgICAgKiBzdGFydGluZyBhdCBpbmRleCA8Y29kZT5kc3RTdGFydDwvY29kZT4gYW5kIGVuZGluZyBhdCBpbmRleAorICAgICAqIDxjb2RlPmRzdFN0YXJ0ICsgKHNyY0xpbWl0LXNyY1N0YXJ0KSAtIDE8L2NvZGU+LgorICAgICAqCisgICAgICogQHBhcmFtIHNyY1N0YXJ0IHRoZSBiZWdpbm5pbmcgaW5kZXggdG8gY29weSwgaW5jbHVzaXZlOyA8Y29kZT4wCisgICAgICogPD0gc3RhcnQgPD0gbGltaXQ8L2NvZGU+LgorICAgICAqIEBwYXJhbSBzcmNMaW1pdCB0aGUgZW5kaW5nIGluZGV4IHRvIGNvcHksIGV4Y2x1c2l2ZTsKKyAgICAgKiA8Y29kZT5zdGFydCA8PSBsaW1pdCA8PSBsZW5ndGgoKTwvY29kZT4uCisgICAgICogQHBhcmFtIGRzdCB0aGUgZGVzdGluYXRpb24gYXJyYXkuCisgICAgICogQHBhcmFtIGRzdFN0YXJ0IHRoZSBzdGFydCBvZmZzZXQgaW4gdGhlIGRlc3RpbmF0aW9uIGFycmF5LgorICAgICAqLworICAgIHZvaWQgZ2V0Q2hhcnMoaW50IHNyY1N0YXJ0LCBpbnQgc3JjTGltaXQsIGNoYXIgZHN0W10sIGludCBkc3RTdGFydCk7CisKKyAgICAvKioKKyAgICAgKiBSZXBsYWNlIGEgc3Vic3RyaW5nIG9mIHRoaXMgb2JqZWN0IHdpdGggdGhlIGdpdmVuIHRleHQuCisgICAgICogQHBhcmFtIHN0YXJ0IHRoZSBiZWdpbm5pbmcgaW5kZXgsIGluY2x1c2l2ZTsgPGNvZGU+MCA8PSBzdGFydAorICAgICAqIDw9IGxpbWl0PC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gbGltaXQgdGhlIGVuZGluZyBpbmRleCwgZXhjbHVzaXZlOyA8Y29kZT5zdGFydCA8PSBsaW1pdAorICAgICAqIDw9IGxlbmd0aCgpPC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gdGV4dCB0aGUgdGV4dCB0byByZXBsYWNlIGNoYXJhY3RlcnMgPGNvZGU+c3RhcnQ8L2NvZGU+CisgICAgICogdG8gPGNvZGU+bGltaXQgLSAxPC9jb2RlPgorICAgICAqLworICAgIHZvaWQgcmVwbGFjZShpbnQgc3RhcnQsIGludCBsaW1pdCwgU3RyaW5nIHRleHQpOworCisgICAgLyoqCisgICAgICogUmVwbGFjZSBhIHN1YnN0cmluZyBvZiB0aGlzIG9iamVjdCB3aXRoIHRoZSBnaXZlbiB0ZXh0LgorICAgICAqIEBwYXJhbSBzdGFydCB0aGUgYmVnaW5uaW5nIGluZGV4LCBpbmNsdXNpdmU7IDxjb2RlPjAgPD0gc3RhcnQKKyAgICAgKiA8PSBsaW1pdDwvY29kZT4uCisgICAgICogQHBhcmFtIGxpbWl0IHRoZSBlbmRpbmcgaW5kZXgsIGV4Y2x1c2l2ZTsgPGNvZGU+c3RhcnQgPD0gbGltaXQKKyAgICAgKiA8PSBsZW5ndGgoKTwvY29kZT4uCisgICAgICogQHBhcmFtIGNoYXJzIHRoZSB0ZXh0IHRvIHJlcGxhY2UgY2hhcmFjdGVycyA8Y29kZT5zdGFydDwvY29kZT4KKyAgICAgKiB0byA8Y29kZT5saW1pdCAtIDE8L2NvZGU+CisgICAgICogQHBhcmFtIGNoYXJzU3RhcnQgdGhlIGJlZ2lubmluZyBpbmRleCBpbnRvIDxjb2RlPmNoYXJzPC9jb2RlPiwKKyAgICAgKiBpbmNsdXNpdmU7IDxjb2RlPjAgPD0gc3RhcnQgPD0gbGltaXQ8L2NvZGU+LgorICAgICAqIEBwYXJhbSBjaGFyc0xlbiB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgb2YgPGNvZGU+Y2hhcnM8L2NvZGU+LgorICAgICAqLworICAgIHZvaWQgcmVwbGFjZShpbnQgc3RhcnQsIGludCBsaW1pdCwgY2hhcltdIGNoYXJzLAorICAgICAgICAgICAgICAgICBpbnQgY2hhcnNTdGFydCwgaW50IGNoYXJzTGVuKTsKKyAgICAvLyBOb3RlOiBXZSB1c2UgbGVuZ3RoIHJhdGhlciB0aGFuIGxpbWl0IHRvIGNvbmZvcm0gdG8gU3RyaW5nQnVmZmVyCisgICAgLy8gYW5kIFN5c3RlbS5hcnJheWNvcHkuCisKKyAgICAvKioKKyAgICAgKiBDb3B5IGEgc3Vic3RyaW5nIG9mIHRoaXMgb2JqZWN0LCByZXRhaW5pbmcgYXR0cmlidXRlIChvdXQtb2YtYmFuZCkKKyAgICAgKiBpbmZvcm1hdGlvbi4gIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gZHVwbGljYXRlIG9yIHJlb3JkZXIgc3Vic3RyaW5ncy4KKyAgICAgKiBUaGUgZGVzdGluYXRpb24gaW5kZXggbXVzdCBub3Qgb3ZlcmxhcCB0aGUgc291cmNlIHJhbmdlLgorICAgICAqIEltcGxlbWVudGF0aW9ucyB0aGF0IGRvIG5vdCBjYXJlIGFib3V0IG1haW50YWluaW5nIG91dC1vZi1iYW5kCisgICAgICogaW5mb3JtYXRpb24gZHVyaW5nIGNvcHlpbmcgbWF5IHVzZSB0aGUgbmFpdmUgaW1wbGVtZW50YXRpb246CisgICAgICoKKyAgICAgKiA8cHJlPiBjaGFyW10gdGV4dCA9IG5ldyBjaGFyW2xpbWl0IC0gc3RhcnRdOworICAgICAqIGdldENoYXJzKHN0YXJ0LCBsaW1pdCwgdGV4dCwgMCk7CisgICAgICogcmVwbGFjZShkZXN0LCBkZXN0LCB0ZXh0LCAwLCBsaW1pdCAtIHN0YXJ0KTs8L3ByZT4KKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gc3RhcnQgdGhlIGJlZ2lubmluZyBpbmRleCwgaW5jbHVzaXZlOyA8Y29kZT4wIDw9IHN0YXJ0IDw9CisgICAgICogbGltaXQ8L2NvZGU+LgorICAgICAqIEBwYXJhbSBsaW1pdCB0aGUgZW5kaW5nIGluZGV4LCBleGNsdXNpdmU7IDxjb2RlPnN0YXJ0IDw9IGxpbWl0IDw9CisgICAgICogbGVuZ3RoKCk8L2NvZGU+LgorICAgICAqIEBwYXJhbSBkZXN0IHRoZSBkZXN0aW5hdGlvbiBpbmRleC4gIFRoZSBjaGFyYWN0ZXJzIGZyb20KKyAgICAgKiA8Y29kZT5zdGFydC4ubGltaXQtMTwvY29kZT4gd2lsbCBiZSBjb3BpZWQgdG8gPGNvZGU+ZGVzdDwvY29kZT4uCisgICAgICogSW1wbGVtZW50YXRpb25zIG9mIHRoaXMgbWV0aG9kIG1heSBhc3N1bWUgdGhhdCA8Y29kZT5kZXN0IDw9IHN0YXJ0IHx8CisgICAgICogZGVzdCA+PSBsaW1pdDwvY29kZT4uCisgICAgICovCisgICAgdm9pZCBjb3B5KGludCBzdGFydCwgaW50IGxpbWl0LCBpbnQgZGVzdCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L1JlcGxhY2VhYmxlU3RyaW5nLmphdmEgYi9zcmMvY29tL2libS90ZXh0L1JlcGxhY2VhYmxlU3RyaW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYjM4M2MyYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvUmVwbGFjZWFibGVTdHJpbmcuamF2YQpAQCAtMCwwICsxLDE4MSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9BdHRpYy9SZXBsYWNlYWJsZVN0cmluZy5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA0LzI1IDE3OjE3OjM3ICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXh0OworCisvKioKKyAqIDxjb2RlPlJlcGxhY2VhYmxlU3RyaW5nPC9jb2RlPiBpcyBhbiBhZGFwdGVyIGNsYXNzIHRoYXQgaW1wbGVtZW50cyB0aGUKKyAqIDxjb2RlPlJlcGxhY2VhYmxlPC9jb2RlPiBBUEkgYXJvdW5kIGFuIG9yZGluYXJ5IDxjb2RlPlN0cmluZ0J1ZmZlcjwvY29kZT4uCisgKgorICogPHA+PGVtPk5vdGU6PC9lbT4gVGhpcyBjbGFzcyBkb2VzIG5vdCBzdXBwb3J0IGF0dHJpYnV0ZXMgYW5kIGlzIG5vdAorICogaW50ZW5kZWQgZm9yIGdlbmVyYWwgdXNlLiAgTW9zdCBjbGllbnRzIHdpbGwgbmVlZCB0byBpbXBsZW1lbnQKKyAqIHtAbGluayBSZXBsYWNlYWJsZX0gaW4gdGhlaXIgdGV4dCByZXByZXNlbnRhdGlvbiBjbGFzcy4KKyAqCisgKiA8cD5Db3B5cmlnaHQgJmNvcHk7IElCTSBDb3Jwb3JhdGlvbiAxOTk5LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBAc2VlIFJlcGxhY2VhYmxlCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAdmVyc2lvbiAkUkNTZmlsZTogUmVwbGFjZWFibGVTdHJpbmcuamF2YSx2ICQgJFJldmlzaW9uOiAxLjMgJCAkRGF0ZTogMjAwMC8wNC8yNSAxNzoxNzozNyAkCisgKi8KK3B1YmxpYyBjbGFzcyBSZXBsYWNlYWJsZVN0cmluZyBpbXBsZW1lbnRzIFJlcGxhY2VhYmxlIHsKKyAgICBwcml2YXRlIFN0cmluZ0J1ZmZlciBidWY7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgIlx1MDBBOSBJQk0gQ29ycG9yYXRpb24gMTk5OS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4iOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgbmV3IG9iamVjdCB3aXRoIHRoZSBnaXZlbiBpbml0aWFsIGNvbnRlbnRzLgorICAgICAqIEBwYXJhbSBzdHIgaW5pdGlhbCBjb250ZW50cworICAgICAqLworICAgIHB1YmxpYyBSZXBsYWNlYWJsZVN0cmluZyhTdHJpbmcgc3RyKSB7CisgICAgICAgIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoc3RyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBuZXcgb2JqZWN0IHVzaW5nIDxjb2RlPmJ1ZjwvY29kZT4gZm9yIGludGVybmFsCisgICAgICogc3RvcmFnZS4gIFRoZSBjb250ZW50cyBvZiA8Y29kZT5idWY8L2NvZGU+IGF0IHRoZSB0aW1lIG9mCisgICAgICogY29uc3RydWN0aW9uIGFyZSB1c2VkIGFzIHRoZSBpbml0aWFsIGNvbnRlbnRzLiAgPGVtPk5vdGUhCisgICAgICogTW9kaWZpY2F0aW9ucyB0byA8Y29kZT5idWY8L2NvZGU+IHdpbGwgbW9kaWZ5IHRoaXMgb2JqZWN0LCBhbmQKKyAgICAgKiB2aWNlIHZlcnNhLjwvZW0+CisgICAgICogQHBhcmFtIGJ1ZiBvYmplY3QgdG8gYmUgdXNlZCBhcyBpbnRlcm5hbCBzdG9yYWdlCisgICAgICovCisgICAgcHVibGljIFJlcGxhY2VhYmxlU3RyaW5nKFN0cmluZ0J1ZmZlciBidWYpIHsKKyAgICAgICAgdGhpcy5idWYgPSBidWY7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgbmV3IGVtcHR5IG9iamVjdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgUmVwbGFjZWFibGVTdHJpbmcoKSB7CisgICAgICAgIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGNvbnRlbnRzIG9mIHRoaXMgb2JqZWN0IGFzIGEgPGNvZGU+U3RyaW5nPC9jb2RlPi4KKyAgICAgKiBAcmV0dXJuIHN0cmluZyBjb250ZW50cyBvZiB0aGlzIG9iamVjdAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGNvbnRhaW5lZCBpbiB0aGlzIG9iamVjdC4KKyAgICAgKiA8Y29kZT5SZXBsYWNlYWJsZTwvY29kZT4gQVBJLgorICAgICAqLyAKKyAgICBwdWJsaWMgaW50IGxlbmd0aCgpIHsKKyAgICAgICAgcmV0dXJuIGJ1Zi5sZW5ndGgoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGNoYXJhY3RlciBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24gaW4gdGhpcyBvYmplY3QuCisgICAgICogPGNvZGU+UmVwbGFjZWFibGU8L2NvZGU+IEFQSS4KKyAgICAgKiBAcGFyYW0gb2Zmc2V0IG9mZnNldCBpbnRvIHRoZSBjb250ZW50cywgZnJvbSAwIHRvCisgICAgICogPGNvZGU+bGVuZ3RoKCk8L2NvZGU+IC0gMQorICAgICAqLworICAgIHB1YmxpYyBjaGFyIGNoYXJBdChpbnQgb2Zmc2V0KSB7CisgICAgICAgIHJldHVybiBidWYuY2hhckF0KG9mZnNldCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29waWVzIGNoYXJhY3RlcnMgZnJvbSB0aGlzIG9iamVjdCBpbnRvIHRoZSBkZXN0aW5hdGlvbgorICAgICAqIGNoYXJhY3RlciBhcnJheS4gIFRoZSBmaXJzdCBjaGFyYWN0ZXIgdG8gYmUgY29waWVkIGlzIGF0IGluZGV4CisgICAgICogPGNvZGU+c3JjU3RhcnQ8L2NvZGU+OyB0aGUgbGFzdCBjaGFyYWN0ZXIgdG8gYmUgY29waWVkIGlzIGF0CisgICAgICogaW5kZXggPGNvZGU+c3JjTGltaXQtMTwvY29kZT4gKHRodXMgdGhlIHRvdGFsIG51bWJlciBvZgorICAgICAqIGNoYXJhY3RlcnMgdG8gYmUgY29waWVkIGlzIDxjb2RlPnNyY0xpbWl0LXNyY1N0YXJ0PC9jb2RlPikuIFRoZQorICAgICAqIGNoYXJhY3RlcnMgYXJlIGNvcGllZCBpbnRvIHRoZSBzdWJhcnJheSBvZiA8Y29kZT5kc3Q8L2NvZGU+CisgICAgICogc3RhcnRpbmcgYXQgaW5kZXggPGNvZGU+ZHN0U3RhcnQ8L2NvZGU+IGFuZCBlbmRpbmcgYXQgaW5kZXgKKyAgICAgKiA8Y29kZT5kc3RTdGFydCArIChzcmNMaW1pdC1zcmNTdGFydCkgLSAxPC9jb2RlPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzcmNTdGFydCB0aGUgYmVnaW5uaW5nIGluZGV4IHRvIGNvcHksIGluY2x1c2l2ZTsgPGNvZGU+MAorICAgICAqIDw9IHN0YXJ0IDw9IGxpbWl0PC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gc3JjTGltaXQgdGhlIGVuZGluZyBpbmRleCB0byBjb3B5LCBleGNsdXNpdmU7CisgICAgICogPGNvZGU+c3RhcnQgPD0gbGltaXQgPD0gbGVuZ3RoKCk8L2NvZGU+LgorICAgICAqIEBwYXJhbSBkc3QgdGhlIGRlc3RpbmF0aW9uIGFycmF5LgorICAgICAqIEBwYXJhbSBkc3RTdGFydCB0aGUgc3RhcnQgb2Zmc2V0IGluIHRoZSBkZXN0aW5hdGlvbiBhcnJheS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBnZXRDaGFycyhpbnQgc3JjU3RhcnQsIGludCBzcmNMaW1pdCwgY2hhciBkc3RbXSwgaW50IGRzdFN0YXJ0KSB7CisgICAgICAgIGJ1Zi5nZXRDaGFycyhzcmNTdGFydCwgc3JjTGltaXQsIGRzdCwgZHN0U3RhcnQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlcGxhY2UgemVybyBvciBtb3JlIGNoYXJhY3RlcnMgd2l0aCBuZXcgY2hhcmFjdGVycy4KKyAgICAgKiA8Y29kZT5SZXBsYWNlYWJsZTwvY29kZT4gQVBJLgorICAgICAqIEBwYXJhbSBzdGFydCB0aGUgYmVnaW5uaW5nIGluZGV4LCBpbmNsdXNpdmU7IDxjb2RlPjAgPD0gc3RhcnQKKyAgICAgKiA8PSBsaW1pdDwvY29kZT4uCisgICAgICogQHBhcmFtIGxpbWl0IHRoZSBlbmRpbmcgaW5kZXgsIGV4Y2x1c2l2ZTsgPGNvZGU+c3RhcnQgPD0gbGltaXQKKyAgICAgKiA8PSBsZW5ndGgoKTwvY29kZT4uCisgICAgICogQHBhcmFtIHRleHQgbmV3IHRleHQgdG8gcmVwbGFjZSBjaGFyYWN0ZXJzIDxjb2RlPnN0YXJ0PC9jb2RlPiB0bworICAgICAqIDxjb2RlPmxpbWl0IC0gMTwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZXBsYWNlKGludCBzdGFydCwgaW50IGxpbWl0LCBTdHJpbmcgdGV4dCkgeworICAgICAgICBpZiAoc3RhcnQgPT0gbGltaXQpIHsKKyAgICAgICAgICAgIGJ1Zi5pbnNlcnQoc3RhcnQsIHRleHQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2hhcltdIHRhaWwgPSBudWxsOworICAgICAgICAgICAgaWYgKGxpbWl0IDwgYnVmLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgdGFpbCA9IG5ldyBjaGFyW2J1Zi5sZW5ndGgoKSAtIGxpbWl0XTsKKyAgICAgICAgICAgICAgICBidWYuZ2V0Q2hhcnMobGltaXQsIGJ1Zi5sZW5ndGgoKSwgdGFpbCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidWYuc2V0TGVuZ3RoKHN0YXJ0KTsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQodGV4dCk7CisgICAgICAgICAgICBpZiAodGFpbCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCh0YWlsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJlcGxhY2UgYSBzdWJzdHJpbmcgb2YgdGhpcyBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gdGV4dC4KKyAgICAgKiBAcGFyYW0gc3RhcnQgdGhlIGJlZ2lubmluZyBpbmRleCwgaW5jbHVzaXZlOyA8Y29kZT4wIDw9IHN0YXJ0CisgICAgICogPD0gbGltaXQ8L2NvZGU+LgorICAgICAqIEBwYXJhbSBsaW1pdCB0aGUgZW5kaW5nIGluZGV4LCBleGNsdXNpdmU7IDxjb2RlPnN0YXJ0IDw9IGxpbWl0CisgICAgICogPD0gbGVuZ3RoKCk8L2NvZGU+LgorICAgICAqIEBwYXJhbSBjaGFycyB0aGUgdGV4dCB0byByZXBsYWNlIGNoYXJhY3RlcnMgPGNvZGU+c3RhcnQ8L2NvZGU+CisgICAgICogdG8gPGNvZGU+bGltaXQgLSAxPC9jb2RlPgorICAgICAqIEBwYXJhbSBjaGFyc1N0YXJ0IHRoZSBiZWdpbm5pbmcgaW5kZXggaW50byA8Y29kZT5jaGFyczwvY29kZT4sCisgICAgICogaW5jbHVzaXZlOyA8Y29kZT4wIDw9IHN0YXJ0IDw9IGxpbWl0PC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gY2hhcnNMZW4gdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIG9mIDxjb2RlPmNoYXJzPC9jb2RlPi4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZXBsYWNlKGludCBzdGFydCwgaW50IGxpbWl0LCBjaGFyW10gY2hhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hhcnNTdGFydCwgaW50IGNoYXJzTGVuKSB7CisgICAgICAgIGNoYXJbXSB0YWlsID0gbnVsbDsKKyAgICAgICAgaWYgKGxpbWl0IDwgYnVmLmxlbmd0aCgpKSB7CisgICAgICAgICAgICB0YWlsID0gbmV3IGNoYXJbYnVmLmxlbmd0aCgpIC0gbGltaXRdOworICAgICAgICAgICAgYnVmLmdldENoYXJzKGxpbWl0LCBidWYubGVuZ3RoKCksIHRhaWwsIDApOworICAgICAgICB9CisgICAgICAgIGJ1Zi5zZXRMZW5ndGgoc3RhcnQpOworICAgICAgICBidWYuYXBwZW5kKGNoYXJzLCBjaGFyc1N0YXJ0LCBjaGFyc0xlbik7CisgICAgICAgIGlmICh0YWlsICE9IG51bGwpIHsKKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQodGFpbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb3B5IGEgc3Vic3RyaW5nIG9mIHRoaXMgb2JqZWN0LCByZXRhaW5pbmcgYXR0cmlidXRlIChvdXQtb2YtYmFuZCkKKyAgICAgKiBpbmZvcm1hdGlvbi4gIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gZHVwbGljYXRlIG9yIHJlb3JkZXIgc3Vic3RyaW5ncy4KKyAgICAgKiBUaGUgZGVzdGluYXRpb24gaW5kZXggbXVzdCBub3Qgb3ZlcmxhcCB0aGUgc291cmNlIHJhbmdlLgorICAgICAqIAorICAgICAqIEBwYXJhbSBzdGFydCB0aGUgYmVnaW5uaW5nIGluZGV4LCBpbmNsdXNpdmU7IDxjb2RlPjAgPD0gc3RhcnQgPD0KKyAgICAgKiBsaW1pdDwvY29kZT4uCisgICAgICogQHBhcmFtIGxpbWl0IHRoZSBlbmRpbmcgaW5kZXgsIGV4Y2x1c2l2ZTsgPGNvZGU+c3RhcnQgPD0gbGltaXQgPD0KKyAgICAgKiBsZW5ndGgoKTwvY29kZT4uCisgICAgICogQHBhcmFtIGRlc3QgdGhlIGRlc3RpbmF0aW9uIGluZGV4LiAgVGhlIGNoYXJhY3RlcnMgZnJvbQorICAgICAqIDxjb2RlPnN0YXJ0Li5saW1pdC0xPC9jb2RlPiB3aWxsIGJlIGNvcGllZCB0byA8Y29kZT5kZXN0PC9jb2RlPi4KKyAgICAgKiBJbXBsZW1lbnRhdGlvbnMgb2YgdGhpcyBtZXRob2QgbWF5IGFzc3VtZSB0aGF0IDxjb2RlPmRlc3QgPD0gc3RhcnQgfHwKKyAgICAgKiBkZXN0ID49IGxpbWl0PC9jb2RlPi4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjb3B5KGludCBzdGFydCwgaW50IGxpbWl0LCBpbnQgZGVzdCkgeworICAgICAgICBjaGFyW10gdGV4dCA9IG5ldyBjaGFyW2xpbWl0IC0gc3RhcnRdOworICAgICAgICBnZXRDaGFycyhzdGFydCwgbGltaXQsIHRleHQsIDApOworICAgICAgICByZXBsYWNlKGRlc3QsIGRlc3QsIHRleHQsIDAsIGxpbWl0IC0gc3RhcnQpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9SdWxlQmFzZWRCcmVha0l0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTA1OGIyNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5qYXZhCkBAIC0wLDAgKzEsMzA3NCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9BdHRpYy9SdWxlQmFzZWRCcmVha0l0ZXJhdG9yLmphdmEsdiAkIAorICogJERhdGU6IDIwMDEvMDIvMDYgMjI6Mzc6MzAgJCAKKyAqICRSZXZpc2lvbjogMS4xMSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworCisvL2libS41OTcKKy8qCisgKiBAKCMpUnVsZUJhc2VkQnJlYWtJdGVyYXRvci5qYXZhCTEuMyA5OS8wNC8wNworICoKKyAqIChDKSBDb3B5cmlnaHQgVGFsaWdlbnQsIEluYy4gMTk5NiwgMTk5NyAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTYgLSAxOTk4IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZAorICoKKyAqIFRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoaXMgc291cmNlIGNvZGUgYW5kIGRvY3VtZW50YXRpb24KKyAqIGlzIGNvcHlyaWdodGVkIGFuZCBvd25lZCBieSBUYWxpZ2VudCwgSW5jLiwgYSB3aG9sbHktb3duZWQKKyAqIHN1YnNpZGlhcnkgb2YgSUJNLiBUaGVzZSBtYXRlcmlhbHMgYXJlIHByb3ZpZGVkIHVuZGVyIHRlcm1zCisgKiBvZiBhIExpY2Vuc2UgQWdyZWVtZW50IGJldHdlZW4gVGFsaWdlbnQgYW5kIFN1bi4gVGhpcyB0ZWNobm9sb2d5CisgKiBpcyBwcm90ZWN0ZWQgYnkgbXVsdGlwbGUgVVMgYW5kIEludGVybmF0aW9uYWwgcGF0ZW50cy4KKyAqCisgKiBUaGlzIG5vdGljZSBhbmQgYXR0cmlidXRpb24gdG8gVGFsaWdlbnQgbWF5IG5vdCBiZSByZW1vdmVkLgorICogVGFsaWdlbnQgaXMgYSByZWdpc3RlcmVkIHRyYWRlbWFyayBvZiBUYWxpZ2VudCwgSW5jLgorICovCisKK3BhY2thZ2UgY29tLmlibS50ZXh0OworCitpbXBvcnQgY29tLmlibS51dGlsLkNvbXBhY3RCeXRlQXJyYXk7CitpbXBvcnQgY29tLmlibS51dGlsLlV0aWxpdHk7CitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKK2ltcG9ydCBqYXZhLnV0aWwuU3RhY2s7CitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247CitpbXBvcnQgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGphdmEudGV4dC5TdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcjsKKworaW1wb3J0IGphdmEuaW8uKjsKKworLyoqCisgKiA8cD5BIHN1YmNsYXNzIG9mIEJyZWFrSXRlcmF0b3Igd2hvc2UgYmVoYXZpb3IgaXMgc3BlY2lmaWVkIHVzaW5nIGEgbGlzdCBvZiBydWxlcy48L3A+CisgKgorICogPHA+VGhlcmUgYXJlIHR3byBraW5kcyBvZiBydWxlcywgd2hpY2ggYXJlIHNlcGFyYXRlZCBieSBzZW1pY29sb25zOiA8aT5zdWJzdGl0dXRpb25zPC9pPgorICogYW5kIDxpPnJlZ3VsYXIgZXhwcmVzc2lvbnMuPC9pPjwvcD4KKyAqCisgKiA8cD5BIHN1YnN0aXR1dGlvbiBydWxlIGRlZmluZXMgYSBuYW1lIHRoYXQgY2FuIGJlIHVzZWQgaW4gcGxhY2Ugb2YgYW4gZXhwcmVzc2lvbi4gSXQKKyAqIGNvbnNpc3RzIG9mIGEgbmFtZSwgYW4gZXF1YWxzIHNpZ24sIGFuZCBhbiBleHByZXNzaW9uLiAoVGhlcmUgY2FuIGJlIG5vIHdoaXRlc3BhY2Ugb24gCisgKiBlaXRoZXIgc2lkZSBvZiB0aGUgZXF1YWxzIHNpZ24uKSAgVG8ga2VlcCBpdHMgc3ludGFjdGljIG1lYW5pbmcgaW50YWN0LCB0aGUgZXhwcmVzc2lvbiAKKyAqIG11c3QgYmUgZW5jbG9zZWQgaW4gcGFyZW50aGVzZXMgb3Igc3F1YXJlIGJyYWNrZXRzLiBBIHN1YnN0aXR1dGlvbiBpcyB2aXNpYmxlIGFmdGVyIGl0cyAKKyAqIGRlZmluaXRpb24sIGFuZCBpcyBmaWxsZWQgaW4gdXNpbmcgc2ltcGxlIHRleHR1YWwgc3Vic3RpdHV0aW9uICh3aGVuIGEgc3Vic3RpdHV0aW9uIGlzCisgKiB1c2VkLCBpdHMgbmFtZSBpcyBlbmNsb3NlZCBpbiBjdXJseSBicmFjZXMuICBUaGUgY3VybHkgYnJhY2VzIGFyZSBvcHRpb25hbCBpbiB0aGUKKyAqIHN1YnN0aXRpb24ncyBkZWZpbml0aW9uKS4gU3Vic3RpdHV0aW9uIGRlZmluaXRpb25zIGNhbiBjb250YWluIG90aGVyIHN1YnN0aXR1dGlvbnMsIGFzCisgKiBsb25nIGFzIHRob3NlIHN1YnN0aXR1dGlvbnMgaGF2ZSBiZWVuIGRlZmluZWQgZmlyc3QuIFN1YnN0aXR1dGlvbnMgYXJlIGdlbmVyYWxseSB1c2VkIHRvCisgKiBtYWtlIHRoZSByZWd1bGFyIGV4cHJlc3Npb25zICh3aGljaCBjYW4gZ2V0IHF1aXRlIGNvbXBsZXgpIHNob3J0ZXIgYW5kIGVhc2llciB0byByZWFkLgorICogVGhleSB0eXBpY2FsbHkgZGVmaW5lIGVpdGhlciBjaGFyYWN0ZXIgY2F0ZWdvcmllcyBvciBjb21tb25seS11c2VkIHN1YmV4cHJlc3Npb25zLjwvcD4KKyAqCisgKiA8cD5UaGVyZSBpcyBvbmUgc3BlY2lhbCBzdWJzdGl0dXRpb24uJm5ic3A7IElmIHRoZSBkZXNjcmlwdGlvbiBkZWZpbmVzIGEgc3Vic3RpdHV0aW9uCisgKiBjYWxsZWQgJnF1b3Q7X2lnbm9yZV8mcXVvdDssIHRoZSBleHByZXNzaW9uIG11c3QgYmUgYSBbXSBleHByZXNzaW9uLCBhbmQgdGhlCisgKiBleHByZXNzaW9uIGRlZmluZXMgYSBzZXQgb2YgY2hhcmFjdGVycyAodGhlICZxdW90OzxlbT5pZ25vcmUgY2hhcmFjdGVyczwvZW0+JnF1b3Q7KSB0aGF0CisgKiB3aWxsIGJlIHRyYW5zcGFyZW50IHRvIHRoZSBCcmVha0l0ZXJhdG9yLiZuYnNwOyBBIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgd2lsbCBicmVhayB0aGUKKyAqIHNhbWUgd2F5IGl0IHdvdWxkIGlmIGFueSBpZ25vcmUgY2hhcmFjdGVycyBpdCBjb250YWlucyBhcmUgdGFrZW4gb3V0LiZuYnNwOyBCcmVhaworICogcG9zaXRpb25zIG5ldmVyIG9jY3VyIGJlZm9yZSBpZ25vcmUgY2hhcmFjdGVycywgZXhjZXB0IHdoZW4gdGhlIGNoYXJhY3RlciBiZWZvcmUgdGhlCisgKiBpZ25vcmUgY2hhcmFjdGVycyBpcyBhIGxpbmUgb3IgcGFyYWdyYXBoIHRlcm1pbmF0b3IuPC9wPgorICoKKyAqIDxwPkEgcmVndWxhciBleHByZXNzaW9uIHVzZXMgYSBzeW50YXggc2ltaWxhciB0byB0aGUgbm9ybWFsIFVuaXggcmVndWxhci1leHByZXNzaW9uIAorICogc3ludGF4LCBhbmQgZGVmaW5lcyBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgdG8gYmUga2VwdCB0b2dldGhlci4gV2l0aCBvbmUgc2lnbmlmaWNhbnQgCisgKiBleGNlcHRpb24sIHRoZSBpdGVyYXRvciB1c2VzIGEgbG9uZ2VzdC1wb3NzaWJsZS1tYXRjaCBhbGdvcml0aG0gd2hlbiBtYXRjaGluZyB0ZXh0IHRvIHJlZ3VsYXIKKyAqIGV4cHJlc3Npb25zLiBUaGUgaXRlcmF0b3IgYWxzbyB0cmVhdHMgZGVzY3JpcHRpb25zIGNvbnRhaW5pbmcgbXVsdGlwbGUgcmVndWxhciBleHByZXNzaW9ucworICogYXMgaWYgdGhleSB3ZXJlIE9SZWQgdG9nZXRoZXIgKGkuZS4sIGFzIGlmIHRoZXkgd2VyZSBzZXBhcmF0ZWQgYnkgfCkuPC9wPgorICoKKyAqIDxwPlRoZSBzcGVjaWFsIGNoYXJhY3RlcnMgcmVjb2duaXplZCBieSB0aGUgcmVndWxhci1leHByZXNzaW9uIHBhcnNlciBhcmUgYXMgZm9sbG93czo8L3A+CisgKgorICogPGJsb2NrcXVvdGU+CisgKiAgIDx0YWJsZSBib3JkZXI9IjEiIHdpZHRoPSIxMDAlIj4KKyAqICAgICA8dHI+CisgKiAgICAgICA8dGQgd2lkdGg9IjYlIj4qPC90ZD4KKyAqICAgICAgIDx0ZCB3aWR0aD0iOTQlIj5TcGVjaWZpZXMgdGhhdCB0aGUgZXhwcmVzc2lvbiBwcmVjZWRpbmcgdGhlIGFzdGVyaXNrIG1heSBvY2N1ciBhbnkgbnVtYmVyCisgKiAgICAgICBvZiB0aW1lcyAoaW5jbHVkaW5nIG5vdCBhdCBhbGwpLjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICA8dGQgd2lkdGg9IjYlIj4rPC90ZD4KKyAqICAgICAgIDx0ZCB3aWR0aD0iOTQlIj5TcGVjaWZpZXMgdGhhdCB0aGUgZXhwcmVzc2lvbiBwcmVjZWRpbmcgdGhlIGFzdGVyaXNrIG1heSBvY2N1ciBvbmUgb3IKKyAqICAgICAgIG1vcmUgdGltZXMsIGJ1dCBtdXN0IG9jY3VyIGF0IGxlYXN0IG9uY2UuPC90ZD4KKyAqICAgICA8L3RyPgorICogICAgIDx0cj4KKyAqICAgICAgIDx0ZCB3aWR0aD0iNiUiPj88L3RkPgorICogICAgICAgPHRkIHdpZHRoPSI5NCUiPlNwZWNpZmllcyB0aGF0IHRoZSBleHByZXNzaW9uIHByZWNlZGluZyB0aGUgYXN0ZXJpc2sgbWF5IG9jY3VyIG9uY2UKKyAqICAgICAgIG9yIG5vdCBhdCBhbGwgKGkuZS4sIGl0IG1ha2VzIHRoZSBwcmVjZWRpbmcgZXhwcmVzc2lvbiBvcHRpb25hbCkuPC90ZD4KKyAqICAgICA8L3RyPgorICogICAgIDx0cj4KKyAqICAgICAgIDx0ZCB3aWR0aD0iNiUiPigpPC90ZD4KKyAqICAgICAgIDx0ZCB3aWR0aD0iOTQlIj5FbmNsb3NlcyBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMuICBJZiBmb2xsb3dlZCBieSAqIG9yICssIHRoZSAKKyAqICAgICAgIHNlcXVlbmNlIHJlcGVhdHMuICBJZiBmb2xsb3dlZCBieSA/LCB0aGUgc2VxdWVuY2UgaXMgb3B0aW9uYWwuICBPdGhlcndpc2UsIHRoZSAKKyAqICAgICAgIHBhcmVudGhlc2VzIGFyZSBqdXN0IGEgZ3JvdXBpbmcgZGV2aWNlIGFuZCBhIHdheSB0byBkZWxpbWl0IHRoZSBlbmRzIG9mIGV4cHJlc3Npb25zIAorICogICAgICAgY29udGFpbmluZyB8LjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICA8dGQgd2lkdGg9IjYlIj58PC90ZD4KKyAqICAgICAgIDx0ZCB3aWR0aD0iOTQlIj5TZXBhcmF0ZXMgdHdvIGFsdGVybmF0aXZlIHNlcXVlbmNlcyBvZiBjaGFyYWN0ZXJzLiZuYnNwOyBFaXRoZXIgb25lCisgKiAgICAgICBzZXF1ZW5jZSBvciB0aGUgb3RoZXIsIGJ1dCBub3QgYm90aCwgbWF0Y2hlcyB0aGlzIGV4cHJlc3Npb24uJm5ic3A7IFRoZSB8IGNoYXJhY3RlciBjYW4KKyAqICAgICAgIG9ubHkgb2NjdXIgaW5zaWRlICgpLjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICA8dGQgd2lkdGg9IjYlIj4uPC90ZD4KKyAqICAgICAgIDx0ZCB3aWR0aD0iOTQlIj5NYXRjaGVzIGFueSBjaGFyYWN0ZXIuPC90ZD4KKyAqICAgICA8L3RyPgorICogICAgIDx0cj4KKyAqICAgICAgIDx0ZCB3aWR0aD0iNiUiPio/PC90ZD4KKyAqICAgICAgIDx0ZCB3aWR0aD0iOTQlIj5TcGVjaWZpZXMgYSBub24tZ3JlZWR5IGFzdGVyaXNrLiZuYnNwOyAqPyB3b3JrcyB0aGUgc2FtZSB3YXkgYXMgKiwgZXhjZXB0CisgKiAgICAgICB3aGVuIHRoZXJlIGlzIG92ZXJsYXAgYmV0d2VlbiB0aGUgbGFzdCBncm91cCBvZiBjaGFyYWN0ZXJzIGluIHRoZSBleHByZXNzaW9uIHByZWNlZGluZyB0aGUKKyAqICAgICAgICogYW5kIHRoZSBmaXJzdCBncm91cCBvZiBjaGFyYWN0ZXJzIGZvbGxvd2luZyB0aGUgKi4mbmJzcDsgV2hlbiB0aGVyZSBpcyB0aGlzIGtpbmQgb2YKKyAqICAgICAgIG92ZXJsYXAsICogd2lsbCBtYXRjaCB0aGUgbG9uZ2VzdCBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIHRoYXQgbWF0Y2ggdGhlIGV4cHJlc3Npb24gYmVmb3JlCisgKiAgICAgICB0aGUgKiwgYW5kICo/IHdpbGwgbWF0Y2ggdGhlIHNob3J0ZXN0IHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgbWF0Y2hpbmcgdGhlIGV4cHJlc3Npb24KKyAqICAgICAgIGJlZm9yZSB0aGUgKj8uJm5ic3A7IEZvciBleGFtcGxlLCBpZiB5b3UgaGF2ZSAmcXVvdDt4eHl4eXl5eHl4eXh4eXh5eHl5JnF1b3Q7IGluIHRoZSB0ZXh0LAorICogICAgICAgJnF1b3Q7eFt4eV0qeCZxdW90OyB3aWxsIG1hdGNoIHRocm91Z2ggdG8gdGhlIGxhc3QgeCAoaS5lLiwgJnF1b3Q7PHN0cm9uZz54eHl4eXl5eHl4eXh4eXh5eDwvc3Ryb25nPnl5JnF1b3Q7LAorICogICAgICAgYnV0ICZxdW90O3hbeHldKj94JnF1b3Q7IHdpbGwgb25seSBtYXRjaCB0aGUgZmlyc3QgdHdvIHhlcyAoJnF1b3Q7PHN0cm9uZz54eDwvc3Ryb25nPnl4eXl5eHl4eXh4eXh5eHl5JnF1b3Q7KS48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyPgorICogICAgICAgPHRkIHdpZHRoPSI2JSI+W108L3RkPgorICogICAgICAgPHRkIHdpZHRoPSI5NCUiPlNwZWNpZmllcyBhIGdyb3VwIG9mIGFsdGVybmF0aXZlIGNoYXJhY3RlcnMuJm5ic3A7IEEgW10gZXhwcmVzc2lvbiB3aWxsCisgKiAgICAgICBtYXRjaCBhbnkgc2luZ2xlIGNoYXJhY3RlciB0aGF0IGlzIHNwZWNpZmllZCBpbiB0aGUgW10gZXhwcmVzc2lvbi4mbmJzcDsgRm9yIG1vcmUgb24gdGhlCisgKiAgICAgICBzeW50YXggb2YgW10gZXhwcmVzc2lvbnMsIHNlZSBiZWxvdy48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyPgorICogICAgICAgPHRkIHdpZHRoPSI2JSI+LzwvdGQ+CisgKiAgICAgICA8dGQgd2lkdGg9Ijk0JSI+U3BlY2lmaWVzIHdoZXJlIHRoZSBicmVhayBwb3NpdGlvbiBzaG91bGQgZ28gaWYgdGV4dCBtYXRjaGVzIHRoaXMKKyAqICAgICAgIGV4cHJlc3Npb24uJm5ic3A7IChlLmcuLCAmcXVvdDtbYS16XSYjNDI7L1s6WnM6XSpbMS0wXSZxdW90OyB3aWxsIG1hdGNoIGlmIHRoZSBpdGVyYXRvciBzZWVzIGEgcnVuCisgKiAgICAgICBvZiBsZXR0ZXJzLCBmb2xsb3dlZCBieSBhIHJ1biBvZiB3aGl0ZXNwYWNlLCBmb2xsb3dlZCBieSBhIGRpZ2l0LCBidXQgdGhlIGJyZWFrIHBvc2l0aW9uCisgKiAgICAgICB3aWxsIGFjdHVhbGx5IGdvIGJlZm9yZSB0aGUgd2hpdGVzcGFjZSkuJm5ic3A7IEV4cHJlc3Npb25zIHRoYXQgZG9uJ3QgY29udGFpbiAvIHB1dCB0aGUKKyAqICAgICAgIGJyZWFrIHBvc2l0aW9uIGF0IHRoZSBlbmQgb2YgdGhlIG1hdGNoaW5nIHRleHQuPC90ZD4KKyAqICAgICA8L3RyPgorICogICAgIDx0cj4KKyAqICAgICAgIDx0ZCB3aWR0aD0iNiUiPlw8L3RkPgorICogICAgICAgPHRkIHdpZHRoPSI5NCUiPkVzY2FwZSBjaGFyYWN0ZXIuJm5ic3A7IFRoZSBcIGl0c2VsZiBpcyBpZ25vcmVkLCBidXQgY2F1c2VzIHRoZSBuZXh0CisgKiAgICAgICBjaGFyYWN0ZXIgdG8gYmUgdHJlYXRlZCBhcyBsaXRlcmFsIGNoYXJhY3Rlci4mbmJzcDsgVGhpcyBoYXMgbm8gZWZmZWN0IGZvciBtYW55CisgKiAgICAgICBjaGFyYWN0ZXJzLCBidXQgZm9yIHRoZSBjaGFyYWN0ZXJzIGxpc3RlZCBhYm92ZSwgdGhpcyBkZXByaXZlcyB0aGVtIG9mIHRoZWlyIHNwZWNpYWwKKyAqICAgICAgIG1lYW5pbmcuJm5ic3A7IChUaGVyZSBhcmUgbm8gc3BlY2lhbCBlc2NhcGUgc2VxdWVuY2VzIGZvciBVbmljb2RlIGNoYXJhY3RlcnMsIG9yIHRhYnMgYW5kCisgKiAgICAgICBuZXdsaW5lczsgdGhlc2UgYXJlIGFsbCBoYW5kbGVkIGJ5IGEgaGlnaGVyLWxldmVsIHByb3RvY29sLiZuYnNwOyBJbiBhIEphdmEgc3RyaW5nLAorICogICAgICAgJnF1b3Q7XG4mcXVvdDsgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gYSBsaXRlcmFsIG5ld2xpbmUgY2hhcmFjdGVyIGJ5IHRoZSB0aW1lIHRoZQorICogICAgICAgcmVndWxhci1leHByZXNzaW9uIHBhcnNlciBzZWVzIGl0LiZuYnNwOyBPZiBjb3Vyc2UsIHRoaXMgbWVhbnMgdGhhdCBcIHNlcXVlbmNlcyB0aGF0IGFyZQorICogICAgICAgdmlzaWJsZSB0byB0aGUgcmVnZXhwIHBhcnNlciBtdXN0IGJlIHdyaXR0ZW4gYXMgXFwgd2hlbiBpbnNpZGUgYSBKYXZhIHN0cmluZy4pJm5ic3A7IEFsbAorICogICAgICAgY2hhcmFjdGVycyBpbiB0aGUgQVNDSUkgcmFuZ2UgZXhjZXB0IGZvciBsZXR0ZXJzLCBkaWdpdHMsIGFuZCBjb250cm9sIGNoYXJhY3RlcnMgYXJlCisgKiAgICAgICByZXNlcnZlZCBjaGFyYWN0ZXJzIHRvIHRoZSBwYXJzZXIgYW5kIG11c3QgYmUgcHJlY2VkZWQgYnkgXCBldmVuIGlmIHRoZXkgY3VycmVudGx5IGRvbid0CisgKiAgICAgICBtZWFuIGFueXRoaW5nLjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICA8dGQgd2lkdGg9IjYlIj4hPC90ZD4KKyAqICAgICAgIDx0ZCB3aWR0aD0iOTQlIj5JZiAhIGFwcGVhcnMgYXQgdGhlIGJlZ2lubmluZyBvZiBhIHJlZ3VsYXIgZXhwcmVzc2lvbiwgaXQgdGVsbHMgdGhlIHJlZ2V4cAorICogICAgICAgcGFyc2VyIHRoYXQgdGhpcyBleHByZXNzaW9uIHNwZWNpZmllcyB0aGUgYmFja3dhcmRzLWl0ZXJhdGlvbiBiZWhhdmlvciBvZiB0aGUgaXRlcmF0b3IsCisgKiAgICAgICBhbmQgbm90IGl0cyBub3JtYWwgaXRlcmF0aW9uIGJlaGF2aW9yLiZuYnNwOyBUaGlzIGlzIGdlbmVyYWxseSBvbmx5IHVzZWQgaW4gc2l0dWF0aW9ucworICogICAgICAgd2hlcmUgdGhlIGF1dG9tYXRpY2FsbHktZ2VuZXJhdGVkIGJhY2t3YXJkcy1pdGVyYXRpb24gYmVoYXZpb3IgZG9lc24ndCBwcm9kdWNlCisgKiAgICAgICBzYXRpc2ZhY3RvcnkgcmVzdWx0cyBhbmQgbXVzdCBiZSBzdXBwbGVtZW50ZWQgd2l0aCBleHRyYSBjbGllbnQtc3BlY2lmaWVkIHJ1bGVzLjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICA8dGQgd2lkdGg9IjYlIj48ZW0+KGFsbCBvdGhlcnMpPC9lbT48L3RkPgorICogICAgICAgPHRkIHdpZHRoPSI5NCUiPkFsbCBvdGhlciBjaGFyYWN0ZXJzIGFyZSB0cmVhdGVkIGFzIGxpdGVyYWwgY2hhcmFjdGVycywgd2hpY2ggbXVzdCBtYXRjaAorICogICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyKHMpIGluIHRoZSB0ZXh0IGV4YWN0bHkuPC90ZD4KKyAqICAgICA8L3RyPgorICogICA8L3RhYmxlPgorICogPC9ibG9ja3F1b3RlPgorICoKKyAqIDxwPldpdGhpbiBhIFtdIGV4cHJlc3Npb24sIGEgbnVtYmVyIG9mIG90aGVyIHNwZWNpYWwgY2hhcmFjdGVycyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5CisgKiBncm91cHMgb2YgY2hhcmFjdGVyczo8L3A+CisgKgorICogPGJsb2NrcXVvdGU+CisgKiAgIDx0YWJsZSBib3JkZXI9IjEiIHdpZHRoPSIxMDAlIj4KKyAqICAgICA8dHI+CisgKiAgICAgICA8dGQgd2lkdGg9IjYlIj4tPC90ZD4KKyAqICAgICAgIDx0ZCB3aWR0aD0iOTQlIj5TcGVjaWZpZXMgYSByYW5nZSBvZiBtYXRjaGluZyBjaGFyYWN0ZXJzLiZuYnNwOyBGb3IgZXhhbXBsZQorICogICAgICAgJnF1b3Q7W2EtcF0mcXVvdDsgbWF0Y2hlcyBhbGwgbG93ZXJjYXNlIExhdGluIGxldHRlcnMgZnJvbSBhIHRvIHAgKGluY2x1c2l2ZSkuJm5ic3A7IFRoZSAtCisgKiAgICAgICBzaWduIHNwZWNpZmllcyByYW5nZXMgb2YgY29udGludW91cyBVbmljb2RlIG51bWVyaWMgdmFsdWVzLCBub3QgcmFuZ2VzIG9mIGNoYXJhY3RlcnMgaW4gYQorICogICAgICAgbGFuZ3VhZ2UncyBhbHBoYWJldGljYWwgb3JkZXI6ICZxdW90O1thLXpdJnF1b3Q7IGRvZXNuJ3QgaW5jbHVkZSBjYXBpdGFsIGxldHRlcnMsIG5vciBkb2VzCisgKiAgICAgICBpdCBpbmNsdWRlIGFjY2VudGVkIGxldHRlcnMgc3VjaCBhcyBhLXVtbGF1dC48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyPgorICogICAgICAgPHRkIHdpZHRoPSI2JSI+XjwvdGQ+CisgKiAgICAgICA8dGQgd2lkdGg9Ijk0JSI+SW52ZXJ0cyB0aGUgZXhwcmVzc2lvbi4gIEFsbCBjaGFyYWN0ZXJzIHRoZSBleHByZXNzaW9uIGluY2x1ZGVzIGFyZQorICogICAgICAgZXhjbHVkZWQsIGFuZCB2aWNlIHZlcnNhLiAgKGkuZS4sIGl0IGhhcyB0aGUgZWZmZWN0IG9mIHNheWluZyAiYWxsIFVuaWNvZGUgY2hhcmFjdGVycworICogICAgICAgZXhjZXB0Li4uIikgIFRoaXMgY2hhcmFjdGVyIG9ubHkgaGFzIGl0cyBzcGVjaWFsIG1lYW5pbmcgd2hlbiBpdCdzIHRoZSBmaXJzdCBjaGFyYWN0ZXIKKyAqICAgICAgIGluIHRoZSBbXSBleHByZXNzaW9uLiAgKEdlbmVyYWxseSwgeW91IG9ubHkgc2VlIHRoZSBeIGNoYXJhY3RlciBpbnNpZGUgYSBuZXN0ZWQgW10KKyAqICAgICAgIGV4cHJlc3Npb24gdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBzeW50YXggYmVsb3cuKTwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICA8dGQgd2lkdGg9IjYlIj48ZW0+KGFsbCBvdGhlcnMpPC9lbT48L3RkPgorICogICAgICAgPHRkIHdpZHRoPSI5NCUiPkFsbCBvdGhlciBjaGFyYWN0ZXJzIGFyZSB0cmVhdGVkIGFzIGxpdGVyYWwgY2hhcmFjdGVycy4mbmJzcDsgKEZvcgorICogICAgICAgZXhhbXBsZSwgJnF1b3Q7W2FlaW91XSZxdW90OyBzcGVjaWZpZXMganVzdCB0aGUgbGV0dGVycyBhLCBlLCBpLCBvLCBhbmQgdS4pPC90ZD4KKyAqICAgICA8L3RyPgorICogICA8L3RhYmxlPgorICogPC9ibG9ja3F1b3RlPgorICoKKyAqIDxwPltdIGV4cHJlc3Npb25zIGNhbiBuZXN0LiAgVGhlcmUgYXJlIHNvbWUgb3RoZXIgY2hhcmFjdGVycyB0aGF0IGhhdmUgc3BlY2lhbCBtZWFuaW5nIG9ubHkKKyAqIHdoZW4gdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlciBbXSBleHByZXNzaW9uczo8L3A+CisgKgorICogPGJsb2NrcXVvdGU+CisgKiAgIDx0YWJsZSBib3JkZXI9IjEiIHdpZHRoPSIxMDAlIj4KKyAqICAgICA8dHI+CisgKiAgICAgICA8dGQgd2lkdGg9IjYlIj46OjwvdGQ+CisgKiAgICAgICA8dGQgd2lkdGg9Ijk0JSI+V2l0aGluIGEgbmVzdGVkIFtdIGV4cHJlc3Npb24sIGEgcGFpciBvZiBjb2xvbnMgY29udGFpbmluZyBhIG9uZS0gb3IgCisgKiAgICAgICB0d28tbGV0dGVyIGNvZGUgbWF0Y2hlcyBhbGwgY2hhcmFjdGVycyBpbiB0aGUgY29ycmVzcG9uZGluZyBVbmljb2RlIGNhdGVnb3J5LiZuYnNwOyAKKyAqICAgICAgIFRoZSA6OiBleHByZXNzaW9uIGhhcyB0byBiZSB0aGUgb25seSB0aGluZyBpbnNpZGUgdGhlIFtdIGV4cHJlc3Npb24uIFRoZSB0d28tbGV0dGVyIGNvZGVzIAorICogICAgICAgYXJlIHRoZSBzYW1lIGFzIHRoZSB0d28tbGV0dGVyIGNvZGVzIGluIHRoZSBVbmljb2RlIGRhdGFiYXNlIChmb3IgZXhhbXBsZSwgCisgKiAgICAgICAmcXVvdDtbWzpTYzpdWzpTbTpdXSZxdW90OyBtYXRjaGVzIGFsbCBjdXJyZW5jeSBzeW1ib2xzIGFuZCBhbGwgbWF0aCBzeW1ib2xzKS4mbmJzcDsgCisgKiAgICAgICBTcGVjaWZ5aW5nIGEgb25lLWxldHRlciBjb2RlIGlzIHRoZSBzYW1lIGFzIHNwZWNpZnlpbmcgYWxsIHR3by1sZXR0ZXIgY29kZXMgdGhhdCBiZWdpbiAKKyAqICAgICAgIHdpdGggdGhhdCBsZXR0ZXIgKGZvciBleGFtcGxlLCAmcXVvdDtbWzpMOl1dJnF1b3Q7IG1hdGNoZXMgYWxsIGxldHRlcnMsIGFuZCBpcyBlcXVpdmFsZW50IAorICogICAgICAgdG8gJnF1b3Q7W1s6THU6XVs6TGw6XVs6TG86XVs6TG06XVs6THQ6XV0mcXVvdDspLiZuYnNwOyBBbnl0aGluZyBvdGhlciB0aGFuIGEgdmFsaWQgCisgKiAgICAgICB0d28tbGV0dGVyIFVuaWNvZGUgY2F0ZWdvcnkgY29kZSBvciBhIHNpbmdsZSBsZXR0ZXIgdGhhdCBiZWdpbnMgYSB2YWxpZGUgVW5pY29kZSBjYXRlZ29yeSAKKyAqICAgICAgIGNvZGUgaXMgaWxsZWdhbCB3aXRoaW4gdGhlIGNvbG9ucy48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyPgorICogICAgICAgPHRkIHdpZHRoPSI2JSI+fDwvdGQ+CisgKiAgICAgICA8dGQgd2lkdGg9Ijk0JSI+VHdvIG5lc3RlZCBbXSBleHByZXNzaW9ucyBqdXh0YXBvc2VkIG9yIHNlcGFyYXRlZCBvbmx5IGJ5IGEgfCBjaGFyYWN0ZXIKKyAqICAgICAgIGFyZSBtZXJnZWQgdG9nZXRoZXIgaW50byBhIHNpbmdsZSBbXSBleHByZXNzaW9uIG1hdGNoaW5nIGFsbCB0aGUgY2hhcmFjdGVycyBpbiBlaXRoZXIKKyAqICAgICAgIG9mIHRoZSBvcmlnaW5hbCBbXSBleHByZXNzaW9ucy4gIChlLmcuLCAiW1thYl1bYmNdXSIgaXMgZXF1aXZhbGVudCB0byAiW2FiY10iLCBhbmQgc28KKyAqICAgICAgIGlzICJbW2FiXXxbYmNdXSIuIDxiPk5PVEU6PC9iPiAgIlthYl1bYmNdIiBpcyBOT1QgdGhlIHNhbWUgdGhpbmcgYXMgIltbYWJdW2JjXV0iLiAgCisgKiAgICAgICBUaGUgZmlyc3QgZXhwcmVzc2lvbiB3aWxsIG1hdGNoIHR3byBjaGFyYWN0ZXJzOiBhbiBhIG9yIGIgZm9sbG93ZWQgYnkgZWl0aGVyIGFub3RoZXIgCisgKiAgICAgICBiIG9yIGEgYy4gIFRoZSBzZWNvbmQgZXhwcmVzc2lvbiB3aWxsIG1hdGNoIGEgc2luZ2xlIGNoYXJhY3Rlciwgd2hpY2ggbWF5IGJlIGEsIGIsIG9yIGMuCisgKiAgICAgICBUaGUgbmVzdGluZyBpcyA8ZW0+cmVxdWlyZWQ8L2VtPiBmb3IgdGhlIGV4cHJlc3Npb25zIHRvIG1lcmdlIHRvZ2V0aGVyLjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICA8dGQgd2lkdGg9IjYlIj4mPC90ZD4KKyAqICAgICAgIDx0ZCB3aWR0aD0iOTQlIj5Ud28gbmVzdGVkIFtdIGV4cHJlc3Npb25zIHdpdGggb25seSAmIGJldHdlZW4gdGhlbSB3aWxsIG1hdGNoIGFueSAKKyAqICAgICAgIGNoYXJhY3RlciB0aGF0IGFwcGVhcnMgaW4gYm90aCBuZXN0ZWQgW10gZXhwcmVzc2lvbnMgKHRoaXMgaXMgYSBzZXQgaW50ZXJzZWN0aW9uKS4KKyAqICAgICAgIChlLmcuLCAiW1thYl0mW2JjXV0iIHdpbGwgb25seSBtYXRjaCB0aGUgbGV0dGVyIGIuKTwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICA8dGQgd2lkdGg9IjYlIj4tPC90ZD4KKyAqICAgICAgIDx0ZCB3aWR0aD0iOTQlIj5Ud28gbmVzdGVkIFtdIGV4cHJlc3Npb25zIHdpdGggLSBiZXR3ZWVuIHRoZW0gd2lsbCBtYXRjaCBhbnkKKyAqICAgICAgIGNoYXJhY3RlciB0aGF0IGFwcGVhcnMgaW4gdGhlIGZpcnN0IG5lc3RlZCBbXSBleHByZXNzaW9uIDxlbT5idXQgbm90PC9lbT4gdGhlCisgKiAgICAgICBzZWNvbmQgb25lICh0aGlzIGlzIGFuIGFzeW1tZXRyaWNhbCBzZXQgZGlmZmVyZW5jZSkuICAoZS5nLiwgIltbOlNjOl0tWyRdXSIKKyAqICAgICAgIG1hdGNoZXMgYW55IGN1cnJlbmN5IHN5bWJvbCBleGNlcHQgdGhlIGRvbGxhciBzaWduLiAgIltbYWJdLVtiY11dIHdpbGwgbWF0Y2gKKyAqICAgICAgIG9ubHkgdGhlIGxldHRlciBhLiAgVGhpcyBoYXMgZXhhY3RseSB0aGUgc2FtZSBlZmZlY3QgYXMgIltbYWJdJlteYmNdXSIuKTwvdGQ+CisgKiAgICAgPC90cj4KKyAqCisgKiA8cD5Gb3IgYSBtb3JlIGNvbXBsZXRlIGV4cGxhbmF0aW9uLCBzZWUgPGEKKyAqIGhyZWY9Imh0dHA6Ly93d3cuaWJtLmNvbS9qYXZhL2VkdWNhdGlvbi9ib3VuZGFyaWVzL2JvdW5kYXJpZXMuaHRtbCI+aHR0cDovL3d3dy5pYm0uY29tL2phdmEvZWR1Y2F0aW9uL2JvdW5kYXJpZXMvYm91bmRhcmllcy5odG1sPC9hPi4KKyAqICZuYnNwOyBGb3IgZXhhbXBsZXMsIHNlZSB0aGUgcmVzb3VyY2UgZGF0YSAod2hpY2ggaXMgYW5ub3RhdGVkKS48L3A+CisgKgorICogQGF1dGhvciBSaWNoYXJkIEdpbGxhbQorICogJFJDU2ZpbGU6IFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuamF2YSx2ICQgJFJldmlzaW9uOiAxLjExICQgJERhdGU6IDIwMDEvMDIvMDYgMjI6Mzc6MzAgJAorICovCitwdWJsaWMgY2xhc3MgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBleHRlbmRzIEJyZWFrSXRlcmF0b3IgeworCisgICAgLyoqCisgICAgICogQSB0b2tlbiB1c2VkIGFzIGEgY2hhcmFjdGVyLWNhdGVnb3J5IHZhbHVlIHRvIGlkZW50aWZ5IGlnbm9yZSBjaGFyYWN0ZXJzCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBieXRlIElHTk9SRSA9IC0xOworCisgICAgLyoqCisgICAgICogU3BlY2lhbCB2YXJpYWJsZSB1c2VkIHRvIGRlZmluZSBpZ25vcmUgY2hhcmFjdGVycworICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBJR05PUkVfVkFSID0gIl9pZ25vcmVfIjsKKworICAgIC8qKgorICAgICAqIFRoZSBzdGF0ZSBudW1iZXIgb2YgdGhlIHN0YXJ0aW5nIHN0YXRlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgc2hvcnQgU1RBUlRfU1RBVEUgPSAxOworCisgICAgLyoqCisgICAgICogVGhlIHN0YXRlLXRyYW5zaXRpb24gdmFsdWUgaW5kaWNhdGluZyAic3RvcCIKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBzaG9ydCBTVE9QX1NUQVRFID0gMDsKKworICAgIC8qKgorICAgICAqIFRoZSB0ZXh0dWFsIGRlc2NyaXB0aW9uIHRoaXMgaXRlcmF0b3Igd2FzIGNyZWF0ZWQgZnJvbQorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nIGRlc2NyaXB0aW9uOworCisgICAgLyoqCisgICAgICogQSB0YWJsZSB0aGF0IGluZGV4ZXMgZnJvbSBjaGFyYWN0ZXIgdmFsdWVzIHRvIGNoYXJhY3RlciBjYXRlZ29yeSBudW1iZXJzCisgICAgICovCisgICAgcHJpdmF0ZSBDb21wYWN0Qnl0ZUFycmF5IGNoYXJDYXRlZ29yeVRhYmxlID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIFRoZSB0YWJsZSBvZiBzdGF0ZSB0cmFuc2l0aW9ucyB1c2VkIGZvciBmb3J3YXJkIGl0ZXJhdGlvbgorICAgICAqLworICAgIHByaXZhdGUgc2hvcnRbXSBzdGF0ZVRhYmxlID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIFRoZSB0YWJsZSBvZiBzdGF0ZSB0cmFuc2l0aW9ucyB1c2VkIHRvIHN5bmMgdXAgdGhlIGl0ZXJhdG9yIHdpdGggdGhlCisgICAgICogdGV4dCBpbiBiYWNrd2FyZHMgYW5kIHJhbmRvbS1hY2Nlc3MgaXRlcmF0aW9uCisgICAgICovCisgICAgcHJpdmF0ZSBzaG9ydFtdIGJhY2t3YXJkc1N0YXRlVGFibGUgPSBudWxsOworCisgICAgLyoqCisgICAgICogQSBsaXN0IG9mIGZsYWdzIGluZGljYXRpbmcgd2hpY2ggc3RhdGVzIGluIHRoZSBzdGF0ZSB0YWJsZSBhcmUgYWNjZXB0aW5nCisgICAgICogKCJlbmQiKSBzdGF0ZXMKKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW5bXSBlbmRTdGF0ZXMgPSBudWxsOworCisgICAgLyoqCisgICAgICogQSBsaXN0IG9mIGZsYWdzIGluZGljYXRpbmcgd2hpY2ggc3RhdGVzIGluIHRoZSBzdGF0ZSB0YWJsZSBhcmUKKyAgICAgKiBsb29rYWhlYWQgc3RhdGVzIChzdGF0ZXMgd2hpY2ggdHVybiBsb29rYWhlYWQgb24gYW5kIG9mZikKKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW5bXSBsb29rYWhlYWRTdGF0ZXMgPSBudWxsOworCisgICAgLyoqCisgICAgICogVGhlIG51bWJlciBvZiBjaGFyYWN0ZXIgY2F0ZWdvcmllcyAoYW5kLCB0aHVzLCB0aGUgbnVtYmVyIG9mIGNvbHVtbnMgaW4KKyAgICAgKiB0aGUgc3RhdGUgdGFibGVzKQorICAgICAqLworICAgIHByaXZhdGUgaW50IG51bUNhdGVnb3JpZXM7CisKKyAgICAvKioKKyAgICAgKiBUaGUgY2hhcmFjdGVyIGl0ZXJhdG9yIHRocm91Z2ggd2hpY2ggdGhpcyBCcmVha0l0ZXJhdG9yIGFjY2Vzc2VzIHRoZSB0ZXh0CisgICAgICovCisgICAgcHJpdmF0ZSBDaGFyYWN0ZXJJdGVyYXRvciB0ZXh0ID0gbnVsbDsKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBjb25zdHJ1Y3RvcnMKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBhY2NvcmRpbmcgdG8gdGhlIGRlc2NyaXB0aW9uCisgICAgICogcHJvdmlkZWQuICBJZiB0aGUgZGVzY3JpcHRpb24gaXMgbWFsZm9ybWVkLCB0aHJvd3MgYW4KKyAgICAgKiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24uICBOb3JtYWxseSwgaW5zdGVhZCBvZiBjb25zdHJ1Y3RpbmcgYQorICAgICAqIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgZGlyZWN0b3J5LCB5b3UnbGwgdXNlIHRoZSBmYWN0b3J5IG1ldGhvZHMKKyAgICAgKiBvbiBCcmVha0l0ZXJhdG9yIHRvIGNyZWF0ZSBvbmUgaW5kaXJlY3RseSBmcm9tIGEgZGVzY3JpcHRpb24KKyAgICAgKiBpbiB0aGUgZnJhbWV3b3JrJ3MgcmVzb3VyY2UgZmlsZXMuICBZb3UnZCB1c2UgdGhpcyB3aGVuIHlvdSB3YW50CisgICAgICogc3BlY2lhbCBiZWhhdmlvciBub3QgcHJvdmlkZWQgYnkgdGhlIGJ1aWx0LWluIGl0ZXJhdG9ycy4KKyAgICAgKi8KKyAgICBwdWJsaWMgUnVsZUJhc2VkQnJlYWtJdGVyYXRvcihTdHJpbmcgZGVzY3JpcHRpb24pIHsKKy8vU3lzdGVtLm91dC5wcmludGxuKCI+Pj5SQkJJIGNvbnN0cnVjdG9yIik7CisgICAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbjsKKworICAgICAgICAvLyB0aGUgYWN0dWFsIHdvcmsgaXMgZG9uZSBieSB0aGUgQnVpbGRlciBjbGFzcworICAgICAgICBCdWlsZGVyIGJ1aWxkZXIgPSBtYWtlQnVpbGRlcigpOworICAgICAgICBidWlsZGVyLmJ1aWxkQnJlYWtJdGVyYXRvcigpOworLy9TeXN0ZW0ub3V0LnByaW50bG4oIjw8PFJCQkkgY29uc3RydWN0b3IiKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgQnVpbGRlci4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgQnVpbGRlciBtYWtlQnVpbGRlcigpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBCdWlsZGVyKCk7CisgICAgfQorCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIGJvaWxlcnBsYXRlCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8qKgorICAgICAqIENsb25lcyB0aGlzIGl0ZXJhdG9yLgorICAgICAqIEByZXR1cm4gQSBuZXdseS1jb25zdHJ1Y3RlZCBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIHdpdGggdGhlIHNhbWUKKyAgICAgKiBiZWhhdmlvciBhcyB0aGlzIG9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGNsb25lKCkKKyAgICB7CisgICAgICAgIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgcmVzdWx0ID0gKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpIHN1cGVyLmNsb25lKCk7CisgICAgICAgIGlmICh0ZXh0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJlc3VsdC50ZXh0ID0gKENoYXJhY3Rlckl0ZXJhdG9yKSB0ZXh0LmNsb25lKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgYm90aCBCcmVha0l0ZXJhdG9ycyBhcmUgb2YgdGhlIHNhbWUgY2xhc3MsIGhhdmUgdGhlIHNhbWUKKyAgICAgKiBydWxlcywgYW5kIGl0ZXJhdGUgb3ZlciB0aGUgc2FtZSB0ZXh0LgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgdGhhdCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBvdGhlciA9IChSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKSB0aGF0OworICAgICAgICAgICAgaWYgKCFkZXNjcmlwdGlvbi5lcXVhbHMob3RoZXIuZGVzY3JpcHRpb24pKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRleHQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiBvdGhlci50ZXh0ID09IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGV4dC5lcXVhbHMob3RoZXIudGV4dCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2goQ2xhc3NDYXN0RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGRlc2NyaXB0aW9uIHVzZWQgdG8gY3JlYXRlIHRoaXMgaXRlcmF0b3IKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICByZXR1cm4gZGVzY3JpcHRpb247CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcHV0ZSBhIGhhc2hjb2RlIGZvciB0aGlzIEJyZWFrSXRlcmF0b3IKKyAgICAgKiBAcmV0dXJuIEEgaGFzaCBjb2RlCisgICAgICovCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpCisgICAgeworICAgICAgICByZXR1cm4gZGVzY3JpcHRpb24uaGFzaENvZGUoKTsKKyAgICB9CisKKy8vIERFTEVURSBNRSBCRUZPUkUgUkVMRUFTRSEhIQorcHVibGljIHZvaWQgd3JpdGVUYWJsZXNUb0ZpbGUoRmlsZU91dHB1dFN0cmVhbSBmaWxlLCBib29sZWFuIGxpdHRsZUVuZGlhbikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAvLyBOT1RFOiBUaGUgZm9ybWF0IGJlaW5nIHdyaXR0ZW4gaGVyZSBpcyBkZXNpZ25lZCB0byBiZSBjb21wYXRpYmxlIHdpdGgKKyAgICAvLyB0aGUgSUNVIHVkYXRhIGludGVyZmFjZXMgYW5kIG1heSBub3QgYmUgdXNlZnVsIGZvciBtdWNoIGVsc2UKKyAgICBEYXRhT3V0cHV0U3RyZWFtIG91dCA9IG5ldyBEYXRhT3V0cHV0U3RyZWFtKGZpbGUpOworICAgIAorLy8gLS0tIHdyaXRlIHRoZSBmaWxlIGhlYWRlciAtLS0KK2J5dGVbXSBjb21tZW50ID0gIkNvcHlyaWdodCAoQykgMTk5OSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3JwLiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiIuZ2V0Qnl0ZXMoIlVTLUFTQ0lJIik7CisvLyB3cml0ZSB0aGUgc2l6ZSBvZiB0aGUgaGVhZGVyIChyb3VuZGVkIHVwIHRvIHRoZSBuZXh0IDE2LWJ5dGUgYm91bmRhcnkpCitzaG9ydCBoZWFkZXJTaXplID0gKHNob3J0KShjb21tZW50Lmxlbmd0aCArIDEgLy8gbGVuZ3RoIG9mIGNvbW1lbnQKKyAgICAgICAgICAgICAgICAgICArIDI0KTsgLy8gc2l6ZSBvZiBzdGF0aWMgaGVhZGVyIGRhdGEKK3Nob3J0IHJlYWxIZWFkZXJTaXplID0gKHNob3J0KShoZWFkZXJTaXplICsgKChoZWFkZXJTaXplICUgMTYgPT0gMCkgPyAwIDogMTYgLSAoaGVhZGVyU2l6ZSAlIDE2KSkpOword3JpdGVTd2FwcGVkU2hvcnQocmVhbEhlYWRlclNpemUsIG91dCwgbGl0dGxlRW5kaWFuKTsKKy8vIHdyaXRlIG1hZ2ljIGJ5dGUgdmFsdWVzCitvdXQud3JpdGUoMHhkYSk7CitvdXQud3JpdGUoMHgyNyk7CisvLyB3cml0ZSBzaXplIG9mIGNvcmUgaGVhZGVyIGRhdGEKK3dyaXRlU3dhcHBlZFNob3J0KChzaG9ydCkyMCwgb3V0LCBsaXR0bGVFbmRpYW4pOworLy8gd3JpdGUgcmVzZXJ2ZWQgYnl0ZXMKK3dyaXRlU3dhcHBlZFNob3J0KChzaG9ydCkwLCBvdXQsIGxpdHRsZUVuZGlhbik7CisKKy8vIHdyaXRlIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHdlJ3JlIGJpZy1lbmRpYW4KK2lmIChsaXR0bGVFbmRpYW4pIHsKKyAgICBvdXQud3JpdGUoMCk7Cit9IGVsc2UgeworICAgIG91dC53cml0ZSgxKTsKK30KKworLy8gd3JpdGUgY2hhcmFjdGVyIHNldCBmYW1pbHkgY29kZSAoMCBtZWFucyBBU0NJSSkKK291dC53cml0ZSgwKTsKKy8vIHdyaXRlIHNpemUgb2YgVUNoYXIgaW4gdGhpcyBmaWxlCitvdXQud3JpdGUoMik7CisvLyB3cml0ZSByZXNlcnZlZCBieXRlCitvdXQud3JpdGUoMCk7CisvLyB3cml0ZSBkYXRhIGZvcm1hdCBpZGVudGlmaWVyICh0aGlzIGlzIGFuIGFycmF5IG9mIGJ5dGVzIGluIElDVSwgc28gdGhlIHZhbHVlIGlzIE5PVCBzd2FwcGVkISkKK291dC53cml0ZUludCgweDQyNTI0YjUzKTsgICAvLyAoIkJSS1MiKQorLy8gd3JpdGUgZmlsZSBmb3JtYXQgdmVyc2lvbiBudW1iZXIgKE5PVCBzd2FwcGVkISkKK291dC53cml0ZUludCgwKTsKKy8vIHdyaXRlIGRhdGEgdmVyc2lvbiBudW1iZXIgKE5PVCBzd2FwcGVkISkKK291dC53cml0ZUludCgwKTsKKy8vIHdyaXRlIGNvcHlyaWdodCBub3RpY2UKK291dC53cml0ZShjb21tZW50KTsKK291dC53cml0ZSgwKTsKKy8vIGZpbGwgaW4gcGFkZGluZyBieXRlcword2hpbGUgKGhlYWRlclNpemUgPCByZWFsSGVhZGVyU2l6ZSkgeworICAgIG91dC53cml0ZSgwKTsKKyAgICArK2hlYWRlclNpemU7Cit9CisKKy8vIC0tLSB3cml0ZSBpbmRleCB0byB0aGUgZmlsZSAtLS0KKy8vIHdyaXRlIHRoZSBudW1iZXIgb2YgY29sdW1ucyBpbiB0aGUgc3RhdGUgdGFibGUKK3dyaXRlU3dhcHBlZEludChudW1DYXRlZ29yaWVzLCBvdXQsIGxpdHRsZUVuZGlhbik7CitpbnQgZmlsZUVuZCA9IDM2OworLy8gd3JpdGUgdGhlIGxvY2F0aW9uIGluIHRoZSBmaWxlIG9mIHRoZSBCcmVha0l0ZXJhdG9yIGRlc2NyaXB0aW9uIHN0cmluZword3JpdGVTd2FwcGVkSW50KGZpbGVFbmQsIG91dCwgbGl0dGxlRW5kaWFuKTsKK2ZpbGVFbmQgKz0gKGRlc2NyaXB0aW9uLmxlbmd0aCgpICsgMSkgKiAyOworZmlsZUVuZCArPSAoZmlsZUVuZCAlIDQgPT0gMCkgPyAwIDogNCAtIChmaWxlRW5kICUgNCk7CisvLyB3cml0ZSB0aGUgbG9jYXRpb24gb2YgdGhlIGNoYXJhY3RlciBjYXRlZ29yeSB0YWJsZSdzIGluZGV4Cit3cml0ZVN3YXBwZWRJbnQoZmlsZUVuZCwgb3V0LCBsaXR0bGVFbmRpYW4pOworZmlsZUVuZCArPSBjaGFyQ2F0ZWdvcnlUYWJsZS5nZXRJbmRleEFycmF5KCkubGVuZ3RoICogMjsKK2ZpbGVFbmQgKz0gKGZpbGVFbmQgJSA0ID09IDApID8gMCA6IDQgLSAoZmlsZUVuZCAlIDQpOworLy8gd3JpdGUgdGhlIGxvY2F0aW9uIG9mIHRoZSBjaGFyYWN0ZXIgY2F0ZWdvcnkgdGFibGUncyB2YWx1ZXMgYXJyYXkKK3dyaXRlU3dhcHBlZEludChmaWxlRW5kLCBvdXQsIGxpdHRsZUVuZGlhbik7CitmaWxlRW5kICs9IGNoYXJDYXRlZ29yeVRhYmxlLmdldFZhbHVlQXJyYXkoKS5sZW5ndGg7CitmaWxlRW5kICs9IChmaWxlRW5kICUgNCA9PSAwKSA/IDAgOiA0IC0gKGZpbGVFbmQgJSA0KTsKKy8vIHdyaXRlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZm9yd2FyZCBzdGF0ZSB0YWJsZQord3JpdGVTd2FwcGVkSW50KGZpbGVFbmQsIG91dCwgbGl0dGxlRW5kaWFuKTsKK2ZpbGVFbmQgKz0gc3RhdGVUYWJsZS5sZW5ndGggKiAyOworZmlsZUVuZCArPSAoZmlsZUVuZCAlIDQgPT0gMCkgPyAwIDogNCAtIChmaWxlRW5kICUgNCk7CisvLyB3cml0ZSB0aGUgbG9jYXRpb24gb2YgdGhlIGJhY2t3YXJkIHN0YXRlIHRhYmxlCit3cml0ZVN3YXBwZWRJbnQoZmlsZUVuZCwgb3V0LCBsaXR0bGVFbmRpYW4pOworZmlsZUVuZCArPSBiYWNrd2FyZHNTdGF0ZVRhYmxlLmxlbmd0aCAqIDI7CitmaWxlRW5kICs9IChmaWxlRW5kICUgNCA9PSAwKSA/IDAgOiA0IC0gKGZpbGVFbmQgJSA0KTsKKy8vIHdyaXRlIHRoZSBsb2NhdGlvbiBvZiB0aGUgZW5kU3RhdGVzIGZsYWdzCit3cml0ZVN3YXBwZWRJbnQoZmlsZUVuZCwgb3V0LCBsaXR0bGVFbmRpYW4pOworZmlsZUVuZCArPSBlbmRTdGF0ZXMubGVuZ3RoOworZmlsZUVuZCArPSAoZmlsZUVuZCAlIDQgPT0gMCkgPyAwIDogNCAtIChmaWxlRW5kICUgNCk7CisvLyB3cml0ZSB0aGUgbG9jYXRpb24gb2YgdGhlIGxvb2thaGVhZFN0YXRlcyBmbGFncword3JpdGVTd2FwcGVkSW50KGZpbGVFbmQsIG91dCwgbGl0dGxlRW5kaWFuKTsKK2ZpbGVFbmQgKz0gbG9va2FoZWFkU3RhdGVzLmxlbmd0aDsKK2ZpbGVFbmQgKz0gKGZpbGVFbmQgJSA0ID09IDApID8gMCA6IDQgLSAoZmlsZUVuZCAlIDQpOworLy8gd3JpdGUgdGhlIGxlbmd0aCBvZiB0aGUgZmlsZQord3JpdGVTd2FwcGVkSW50KGZpbGVFbmQsIG91dCwgbGl0dGxlRW5kaWFuKTsKKworLy8gLS0tIHdyaXRlIHRoZSBhY3R1YWwgZGF0YSAtLS0KKy8vIHdyaXRlIGRlc2NyaXB0aW9uIHN0cmluZworZm9yIChpbnQgaSA9IDA7IGkgPCBkZXNjcmlwdGlvbi5sZW5ndGgoKTsgaSsrKQorICAgIHdyaXRlU3dhcHBlZFNob3J0KChzaG9ydClkZXNjcmlwdGlvbi5jaGFyQXQoaSksIG91dCwgbGl0dGxlRW5kaWFuKTsKK291dC53cml0ZVNob3J0KDApOworaWYgKChkZXNjcmlwdGlvbi5sZW5ndGgoKSArIDEpICUgMiA9PSAxKQorICAgIG91dC53cml0ZVNob3J0KDApOworLy8gd3JpdGUgY2hhcmFjdGVyIGNhdGVnb3J5IHRhYmxlCitjaGFyW10gdGVtcDEgPSBjaGFyQ2F0ZWdvcnlUYWJsZS5nZXRJbmRleEFycmF5KCk7Citmb3IgKGludCBpID0gMDsgaSA8IHRlbXAxLmxlbmd0aDsgaSsrKQorICAgIHdyaXRlU3dhcHBlZFNob3J0KChzaG9ydCl0ZW1wMVtpXSwgb3V0LCBsaXR0bGVFbmRpYW4pOworaWYgKHRlbXAxLmxlbmd0aCAlIDIgPT0gMSkKKyAgICBvdXQud3JpdGVTaG9ydCgwKTsKK2J5dGVbXSB0ZW1wMiA9IGNoYXJDYXRlZ29yeVRhYmxlLmdldFZhbHVlQXJyYXkoKTsKK291dC53cml0ZSh0ZW1wMik7Citzd2l0Y2ggKHRlbXAyLmxlbmd0aCAlIDQpIHsKKyAgICBjYXNlIDE6IG91dC53cml0ZSgwKTsKKyAgICBjYXNlIDI6IG91dC53cml0ZSgwKTsKKyAgICBjYXNlIDM6IG91dC53cml0ZSgwKTsKKyAgICBkZWZhdWx0OiBicmVhazsKK30KKy8vIHdyaXRlIHRoZSBzdGF0ZSB0cmFuc2l0aW9uIHRhYmxlcworZm9yIChpbnQgaSA9IDA7IGkgPCBzdGF0ZVRhYmxlLmxlbmd0aDsgaSsrKQorICAgIHdyaXRlU3dhcHBlZFNob3J0KHN0YXRlVGFibGVbaV0sIG91dCwgbGl0dGxlRW5kaWFuKTsKK2lmIChzdGF0ZVRhYmxlLmxlbmd0aCAlIDIgPT0gMSkKKyAgICBvdXQud3JpdGVTaG9ydCgwKTsKK2ZvciAoaW50IGkgPSAwOyBpIDwgYmFja3dhcmRzU3RhdGVUYWJsZS5sZW5ndGg7IGkrKykKKyAgICB3cml0ZVN3YXBwZWRTaG9ydChiYWNrd2FyZHNTdGF0ZVRhYmxlW2ldLCBvdXQsIGxpdHRsZUVuZGlhbik7CitpZiAoYmFja3dhcmRzU3RhdGVUYWJsZS5sZW5ndGggJSAyID09IDEpCisgICAgb3V0LndyaXRlU2hvcnQoMCk7CisvLyB3cml0ZSB0aGUgZmxhZyBhcnJheXMKK2ZvciAoaW50IGkgPSAwOyBpIDwgZW5kU3RhdGVzLmxlbmd0aDsgaSsrKQorICAgIG91dC53cml0ZUJvb2xlYW4oZW5kU3RhdGVzW2ldKTsKK3N3aXRjaCAoZW5kU3RhdGVzLmxlbmd0aCAlIDQpIHsKKyAgICBjYXNlIDE6IG91dC53cml0ZSgwKTsKKyAgICBjYXNlIDI6IG91dC53cml0ZSgwKTsKKyAgICBjYXNlIDM6IG91dC53cml0ZSgwKTsKKyAgICBkZWZhdWx0OiBicmVhazsKK30KK2ZvciAoaW50IGkgPSAwOyBpIDwgbG9va2FoZWFkU3RhdGVzLmxlbmd0aDsgaSsrKQorICAgIG91dC53cml0ZUJvb2xlYW4obG9va2FoZWFkU3RhdGVzW2ldKTsKK3N3aXRjaCAobG9va2FoZWFkU3RhdGVzLmxlbmd0aCAlIDQpIHsKKyAgICBjYXNlIDE6IG91dC53cml0ZSgwKTsKKyAgICBjYXNlIDI6IG91dC53cml0ZSgwKTsKKyAgICBjYXNlIDM6IG91dC53cml0ZSgwKTsKKyAgICBkZWZhdWx0OiBicmVhazsKK30KK30KKyAgICAKK3Byb3RlY3RlZCB2b2lkIHdyaXRlU3dhcHBlZFNob3J0KHNob3J0IHgsIERhdGFPdXRwdXRTdHJlYW0gb3V0LCBib29sZWFuIGxpdHRsZUVuZGlhbikKK3Rocm93cyBJT0V4Y2VwdGlvbnsKKyAgICBpZiAobGl0dGxlRW5kaWFuKSB7CisgICAgICAgIG91dC53cml0ZSgoYnl0ZSkoeCAmIDB4ZmYpKTsKKyAgICAgICAgb3V0LndyaXRlKChieXRlKSgoeCA+PiA4KSAmIDB4ZmYpKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG91dC53cml0ZSgoYnl0ZSkoKHggPj4gOCkgJiAweGZmKSk7CisgICAgICAgIG91dC53cml0ZSgoYnl0ZSkoeCAmIDB4ZmYpKTsKKyAgICB9Cit9CisKK3Byb3RlY3RlZCB2b2lkIHdyaXRlU3dhcHBlZEludChpbnQgeCwgRGF0YU91dHB1dFN0cmVhbSBvdXQsIGJvb2xlYW4gbGl0dGxlRW5kaWFuKQordGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICBpZiAobGl0dGxlRW5kaWFuKSB7CisgICAgICAgIG91dC53cml0ZSgoYnl0ZSkoeCAmIDB4ZmYpKTsKKyAgICAgICAgb3V0LndyaXRlKChieXRlKSgoeCA+PiA4KSAmIDB4ZmYpKTsKKyAgICAgICAgb3V0LndyaXRlKChieXRlKSgoeCA+PiAxNikgJiAweGZmKSk7CisgICAgICAgIG91dC53cml0ZSgoYnl0ZSkoKHggPj4gMjQpICYgMHhmZikpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgb3V0LndyaXRlKChieXRlKSgoeCA+PiAyNCkgJiAweGZmKSk7CisgICAgICAgIG91dC53cml0ZSgoYnl0ZSkoKHggPj4gMTYpICYgMHhmZikpOworICAgICAgICBvdXQud3JpdGUoKGJ5dGUpKCh4ID4+IDgpICYgMHhmZikpOworICAgICAgICBvdXQud3JpdGUoKGJ5dGUpKHggJiAweGZmKSk7CisgICAgfQorfQorICAgIAorICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBCcmVha0l0ZXJhdG9yIG92ZXJyaWRlcworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRleHQuCisgICAgICogKGkuZS4sIHRoZSBDaGFyYWN0ZXJJdGVyYXRvcidzIHN0YXJ0aW5nIG9mZnNldCkuCisgICAgICogQHJldHVybiBUaGUgb2Zmc2V0IG9mIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRleHQuCisgICAgICovCisgICAgcHVibGljIGludCBmaXJzdCgpIHsKKyAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgdCA9IGdldFRleHQoKTsKKworICAgICAgICB0LmZpcnN0KCk7CisgICAgICAgIHJldHVybiB0LmdldEluZGV4KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gdG8gdGhlIGVuZCBvZiB0aGUgdGV4dC4KKyAgICAgKiAoaS5lLiwgdGhlIENoYXJhY3Rlckl0ZXJhdG9yJ3MgZW5kaW5nIG9mZnNldCkuCisgICAgICogQHJldHVybiBUaGUgdGV4dCdzIHBhc3QtdGhlLWVuZCBvZmZzZXQuCisgICAgICovCisgICAgcHVibGljIGludCBsYXN0KCkgeworICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciB0ID0gZ2V0VGV4dCgpOworCisgICAgICAgIC8vIEknbSBub3Qgc3VyZSB3aHksIGJ1dCB0Lmxhc3QoKSByZXR1cm5zIHRoZSBvZmZzZXQgb2YgdGhlIGxhc3QgY2hhcmFjdGVyLAorICAgICAgICAvLyByYXRoZXIgdGhhbiB0aGUgcGFzdC10aGUtZW5kIG9mZnNldAorICAgICAgICB0LnNldEluZGV4KHQuZ2V0RW5kSW5kZXgoKSk7CisgICAgICAgIHJldHVybiB0LmdldEluZGV4KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWR2YW5jZXMgdGhlIGl0ZXJhdG9yIGVpdGhlciBmb3J3YXJkIG9yIGJhY2t3YXJkIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIHN0ZXBzLgorICAgICAqIE5lZ2F0aXZlIHZhbHVlcyBtb3ZlIGJhY2t3YXJkLCBhbmQgcG9zaXRpdmUgdmFsdWVzIG1vdmUgZm9yd2FyZC4gIFRoaXMgaXMKKyAgICAgKiBlcXVpdmFsZW50IHRvIHJlcGVhdGVkbHkgY2FsbGluZyBuZXh0KCkgb3IgcHJldmlvdXMoKS4KKyAgICAgKiBAcGFyYW0gbiBUaGUgbnVtYmVyIG9mIHN0ZXBzIHRvIG1vdmUuICBUaGUgc2lnbiBpbmRpY2F0ZXMgdGhlIGRpcmVjdGlvbgorICAgICAqIChuZWdhdGl2ZSBpcyBiYWNrd2FyZHMsIGFuZCBwb3NpdGl2ZSBpcyBmb3J3YXJkcykuCisgICAgICogQHJldHVybiBUaGUgY2hhcmFjdGVyIG9mZnNldCBvZiB0aGUgYm91bmRhcnkgcG9zaXRpb24gbiBib3VuZGFyaWVzIGF3YXkgZnJvbQorICAgICAqIHRoZSBjdXJyZW50IG9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IG5leHQoaW50IG4pIHsKKyAgICAgICAgaW50IHJlc3VsdCA9IGN1cnJlbnQoKTsKKyAgICAgICAgd2hpbGUgKG4gPiAwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBoYW5kbGVOZXh0KCk7CisgICAgICAgICAgICAtLW47CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKG4gPCAwKSB7CisgICAgICAgICAgICByZXN1bHQgPSBwcmV2aW91cygpOworICAgICAgICAgICAgKytuOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWR2YW5jZXMgdGhlIGl0ZXJhdG9yIHRvIHRoZSBuZXh0IGJvdW5kYXJ5IHBvc2l0aW9uLgorICAgICAqIEByZXR1cm4gVGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBib3VuZGFyeSBhZnRlciB0aGlzIG9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IG5leHQoKSB7CisgICAgICAgIHJldHVybiBoYW5kbGVOZXh0KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWR2YW5jZXMgdGhlIGl0ZXJhdG9yIGJhY2t3YXJkcywgdG8gdGhlIGxhc3QgYm91bmRhcnkgcHJlY2VkaW5nIHRoaXMgb25lLgorICAgICAqIEByZXR1cm4gVGhlIHBvc2l0aW9uIG9mIHRoZSBsYXN0IGJvdW5kYXJ5IHBvc2l0aW9uIHByZWNlZGluZyB0aGlzIG9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHByZXZpb3VzKCkgeworICAgICAgICAvLyBpZiB3ZSdyZSBhbHJlYWR5IHNpdHRpbmcgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgdGV4dCwgcmV0dXJuIERPTkUKKyAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgdGV4dCA9IGdldFRleHQoKTsKKyAgICAgICAgaWYgKGN1cnJlbnQoKSA9PSB0ZXh0LmdldEJlZ2luSW5kZXgoKSkgeworICAgICAgICAgICAgcmV0dXJuIEJyZWFrSXRlcmF0b3IuRE9ORTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHNldCB0aGluZ3MgdXAuICBoYW5kbGVQcmV2aW91cygpIHdpbGwgYmFjayB1cyB1cCB0byBzb21lIHZhbGlkCisgICAgICAgIC8vIGJyZWFrIHBvc2l0aW9uIGJlZm9yZSB0aGUgY3VycmVudCBwb3NpdGlvbiAod2UgYmFjayBvdXIgaW50ZXJuYWwKKyAgICAgICAgLy8gaXRlcmF0b3IgdXAgb25lIHN0ZXAgdG8gcHJldmVudCBoYW5kbGVQcmV2aW91cygpIGZyb20gcmV0dXJuaW5nCisgICAgICAgIC8vIHRoZSBjdXJyZW50IHBvc2l0aW9uKSwgYnV0IG5vdCBuZWNlc3NhcmlseSB0aGUgbGFzdCBvbmUgYmVmb3JlCisgICAgICAgIC8vIHdoZXJlIHdlIHN0YXJ0ZWQKKyAgICAgICAgaW50IHN0YXJ0ID0gY3VycmVudCgpOworICAgICAgICB0ZXh0LnByZXZpb3VzKCk7CisgICAgICAgIGludCBsYXN0UmVzdWx0ID0gaGFuZGxlUHJldmlvdXMoKTsKKyAgICAgICAgaW50IHJlc3VsdCA9IGxhc3RSZXN1bHQ7CisKKyAgICAgICAgLy8gaXRlcmF0ZSBmb3J3YXJkIGZyb20gdGhlIGtub3duIGJyZWFrIHBvc2l0aW9uIHVudGlsIHdlIHBhc3Mgb3VyCisgICAgICAgIC8vIHN0YXJ0aW5nIHBvaW50LiAgVGhlIGxhc3QgYnJlYWsgcG9zaXRpb24gYmVmb3JlIHRoZSBzdGFydGluZworICAgICAgICAvLyBwb2ludCBpcyBvdXIgcmV0dXJuIHZhbHVlCisgICAgICAgIHdoaWxlIChyZXN1bHQgIT0gQnJlYWtJdGVyYXRvci5ET05FICYmIHJlc3VsdCA8IHN0YXJ0KSB7CisgICAgICAgICAgICBsYXN0UmVzdWx0ID0gcmVzdWx0OworICAgICAgICAgICAgcmVzdWx0ID0gaGFuZGxlTmV4dCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gc2V0IHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiB0byBiZSB0aGUgbGFzdCBicmVhayBwb3NpdGlvbgorICAgICAgICAvLyBiZWZvcmUgd2hlcmUgd2Ugc3RhcnRlZCwgYW5kIHRoZW4gcmV0dXJuIHRoYXQgdmFsdWUKKyAgICAgICAgdGV4dC5zZXRJbmRleChsYXN0UmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIGxhc3RSZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhyb3cgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHVubGVzcyBiZWdpbiA8PSBvZmZzZXQgPCBlbmQuCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCB2b2lkIGNoZWNrT2Zmc2V0KGludCBvZmZzZXQsIENoYXJhY3Rlckl0ZXJhdG9yIHRleHQpIHsKKyAgICAgICAgaWYgKG9mZnNldCA8IHRleHQuZ2V0QmVnaW5JbmRleCgpIHx8IG9mZnNldCA+IHRleHQuZ2V0RW5kSW5kZXgoKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigib2Zmc2V0IG91dCBvZiBib3VuZHMiKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGl0ZXJhdG9yIHRvIHJlZmVyIHRvIHRoZSBmaXJzdCBib3VuZGFyeSBwb3NpdGlvbiBmb2xsb3dpbmcKKyAgICAgKiB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLgorICAgICAqIEBvZmZzZXQgVGhlIHBvc2l0aW9uIGZyb20gd2hpY2ggdG8gYmVnaW4gc2VhcmNoaW5nIGZvciBhIGJyZWFrIHBvc2l0aW9uLgorICAgICAqIEByZXR1cm4gVGhlIHBvc2l0aW9uIG9mIHRoZSBmaXJzdCBicmVhayBhZnRlciB0aGUgY3VycmVudCBwb3NpdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGZvbGxvd2luZyhpbnQgb2Zmc2V0KSB7CisgICAgICAgIC8vIGlmIHRoZSBvZmZzZXQgcGFzc2VkIGluIGlzIGFscmVhZHkgcGFzdCB0aGUgZW5kIG9mIHRoZSB0ZXh0LAorICAgICAgICAvLyBqdXN0IHJldHVybiBET05FCisgICAgICAgIENoYXJhY3Rlckl0ZXJhdG9yIHRleHQgPSBnZXRUZXh0KCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gdGV4dC5nZXRFbmRJbmRleCgpKSB7CisgICAgICAgICAgICByZXR1cm4gQnJlYWtJdGVyYXRvci5ET05FOworICAgICAgICB9CisgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdGV4dCk7CisKKyAgICAgICAgLy8gb3RoZXJ3aXNlLCBzZXQgb3VyIGludGVybmFsIGl0ZXJhdGlvbiBwb3NpdGlvbiAodGVtcG9yYXJpbHkpCisgICAgICAgIC8vIHRvIHRoZSBwb3NpdGlvbiBwYXNzZWQgaW4uICBJZiB0aGlzIGlzIHRoZSBfYmVnaW5uaW5nXyBwb3NpdGlvbiwKKyAgICAgICAgLy8gdGhlbiB3ZSBjYW4ganVzdCB1c2UgbmV4dCgpIHRvIGdldCBvdXIgcmV0dXJuIHZhbHVlCisgICAgICAgIHRleHQuc2V0SW5kZXgob2Zmc2V0KTsKKyAgICAgICAgaWYgKG9mZnNldCA9PSB0ZXh0LmdldEJlZ2luSW5kZXgoKSkgeworICAgICAgICAgICAgcmV0dXJuIGhhbmRsZU5leHQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIG90aGVyd2lzZSwgd2UgaGF2ZSB0byBzeW5jIHVwIGZpcnN0LiAgVXNlIGhhbmRsZVByZXZpb3VzKCkgdG8gYmFjaworICAgICAgICAvLyB1cyB1cCB0byBhIGtub3duIGJyZWFrIHBvc2l0aW9uIGJlZm9yZSB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uIChpZgorICAgICAgICAvLyB3ZSBjYW4gZGV0ZXJtaW5lIHRoYXQgdGhlIHNwZWNpZmllZCBwb3NpdGlvbiBpcyBhIGJyZWFrIHBvc2l0aW9uLAorICAgICAgICAvLyB3ZSBkb24ndCBiYWNrIHVwIGF0IGFsbCkuICBUaGlzIG1heSBvciBtYXkgbm90IGJlIHRoZSBsYXN0IGJyZWFrCisgICAgICAgIC8vIHBvc2l0aW9uIGF0IG9yIGJlZm9yZSBvdXIgc3RhcnRpbmcgcG9zaXRpb24uICBBZHZhbmNlIGZvcndhcmQKKyAgICAgICAgLy8gZnJvbSBoZXJlIHVudGlsIHdlJ3ZlIHBhc3NlZCB0aGUgc3RhcnRpbmcgcG9zaXRpb24uICBUaGUgcG9zaXRpb24KKyAgICAgICAgLy8gd2Ugc3RvcCBvbiB3aWxsIGJlIHRoZSBmaXJzdCBicmVhayBwb3NpdGlvbiBhZnRlciB0aGUgc3BlY2lmaWVkIG9uZS4KKyAgICAgICAgaW50IHJlc3VsdCA9IGhhbmRsZVByZXZpb3VzKCk7CisgICAgICAgIHdoaWxlIChyZXN1bHQgIT0gQnJlYWtJdGVyYXRvci5ET05FICYmIHJlc3VsdCA8PSBvZmZzZXQpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGhhbmRsZU5leHQoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGl0ZXJhdG9yIHRvIHJlZmVyIHRvIHRoZSBsYXN0IGJvdW5kYXJ5IHBvc2l0aW9uIGJlZm9yZSB0aGUKKyAgICAgKiBzcGVjaWZpZWQgcG9zaXRpb24uCisgICAgICogQG9mZnNldCBUaGUgcG9zaXRpb24gdG8gYmVnaW4gc2VhcmNoaW5nIGZvciBhIGJyZWFrIGZyb20uCisgICAgICogQHJldHVybiBUaGUgcG9zaXRpb24gb2YgdGhlIGxhc3QgYm91bmRhcnkgYmVmb3JlIHRoZSBzdGFydGluZyBwb3NpdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHByZWNlZGluZyhpbnQgb2Zmc2V0KSB7CisgICAgICAgIC8vIGlmIHdlIHN0YXJ0IGJ5IHVwZGF0aW5nIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbiB0byB0aGUKKyAgICAgICAgLy8gcG9zaXRpb24gc3BlY2lmaWVkIGJ5IHRoZSBjYWxsZXIsIHdlIGNhbiBqdXN0IHVzZSBwcmV2aW91cygpCisgICAgICAgIC8vIHRvIGNhcnJ5IG91dCB0aGlzIG9wZXJhdGlvbgorICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciB0ZXh0ID0gZ2V0VGV4dCgpOworICAgICAgICBjaGVja09mZnNldChvZmZzZXQsIHRleHQpOworICAgICAgICB0ZXh0LnNldEluZGV4KG9mZnNldCk7CisgICAgICAgIHJldHVybiBwcmV2aW91cygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgc3BlY2ZpZWQgcG9zaXRpb24gaXMgYSBib3VuZGFyeSBwb3NpdGlvbi4gIEFzIGEgc2lkZQorICAgICAqIGVmZmVjdCwgbGVhdmVzIHRoZSBpdGVyYXRvciBwb2ludGluZyB0byB0aGUgZmlyc3QgYm91bmRhcnkgcG9zaXRpb24gYXQKKyAgICAgKiBvciBhZnRlciAib2Zmc2V0Ii4KKyAgICAgKiBAcGFyYW0gb2Zmc2V0IHRoZSBvZmZzZXQgdG8gY2hlY2suCisgICAgICogQHJldHVybiBUcnVlIGlmICJvZmZzZXQiIGlzIGEgYm91bmRhcnkgcG9zaXRpb24uCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNCb3VuZGFyeShpbnQgb2Zmc2V0KSB7CisgICAgICAgIENoYXJhY3Rlckl0ZXJhdG9yIHRleHQgPSBnZXRUZXh0KCk7CisgICAgICAgIGNoZWNrT2Zmc2V0KG9mZnNldCwgdGV4dCk7CisgICAgICAgIGlmIChvZmZzZXQgPT0gdGV4dC5nZXRCZWdpbkluZGV4KCkpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gdG8gY2hlY2sgd2hldGhlciB0aGlzIGlzIGEgYm91bmRhcnksIHdlIGNhbiB1c2UgZm9sbG93aW5nKCkgb24gdGhlCisgICAgICAgIC8vIHBvc2l0aW9uIGJlZm9yZSB0aGUgc3BlY2lmaWVkIG9uZSBhbmQgcmV0dXJuIHRydWUgaWYgdGhlIHBvc2l0aW9uIHdlCisgICAgICAgIC8vIGdldCBiYWNrIGlzIHRoZSBvbmUgdGhlIHVzZXIgc3BlY2lmaWVkCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZvbGxvd2luZyhvZmZzZXQgLSAxKSA9PSBvZmZzZXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbi4KKyAgICAgKiBAcmV0dXJuIFRoZSBjdXJyZW50IGl0ZXJhdGlvbiBwb3NpdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGN1cnJlbnQoKSB7CisgICAgICAgIHJldHVybiBnZXRUZXh0KCkuZ2V0SW5kZXgoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBDaGFyYWN0ZXJJdGVyYXRvciBvdmVyIHRoZSB0ZXh0IGJlaW5nIGFuYWx5emVkLiAgVGhpcyB2ZXJzaW9uCisgICAgICogb2YgdGhpcyBtZXRob2QgcmV0dXJucyB0aGUgYWN0dWFsIENoYXJhY3Rlckl0ZXJhdG9yIHdlJ3JlIHVzaW5nIGludGVybmFsbHkuCisgICAgICogQ2hhbmdpbmcgdGhlIHN0YXRlIG9mIHRoaXMgaXRlcmF0b3IgY2FuIGhhdmUgdW5kZWZpbmVkIGNvbnNlcXVlbmNlcy4gIElmCisgICAgICogeW91IG5lZWQgdG8gY2hhbmdlIGl0LCBjbG9uZSBpdCBmaXJzdC4KKyAgICAgKiBAcmV0dXJuIEFuIGl0ZXJhdG9yIG92ZXIgdGhlIHRleHQgYmVpbmcgYW5hbHl6ZWQuCisgICAgICovCisgICAgcHVibGljIENoYXJhY3Rlckl0ZXJhdG9yIGdldFRleHQoKSB7CisgICAgICAgIC8vIFRoZSBpdGVyYXRvciBpcyBpbml0aWFsaXplZCBwb2ludGluZyB0byBubyB0ZXh0IGF0IGFsbCwgc28gaWYgdGhpcworICAgICAgICAvLyBmdW5jdGlvbiBpcyBjYWxsZWQgd2hpbGUgd2UncmUgaW4gdGhhdCBzdGF0ZSwgd2UgaGF2ZSB0byBmdWRnZSBhbgorICAgICAgICAvLyBhbiBpdGVyYXRvciB0byByZXR1cm4uCisgICAgICAgIGlmICh0ZXh0ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRleHQgPSBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IoIiIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0ZXh0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgaXRlcmF0b3IgdG8gYW5hbHl6ZSBhIG5ldyBwaWVjZSBvZiB0ZXh0LiAgVGhpcyBmdW5jdGlvbiByZXNldHMKKyAgICAgKiB0aGUgY3VycmVudCBpdGVyYXRpb24gcG9zaXRpb24gdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgdGV4dC4KKyAgICAgKiBAcGFyYW0gbmV3VGV4dCBBbiBpdGVyYXRvciBvdmVyIHRoZSB0ZXh0IHRvIGFuYWx5emUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0VGV4dChDaGFyYWN0ZXJJdGVyYXRvciBuZXdUZXh0KSB7CisgICAgICAgIC8vIFRlc3QgdGV4dCB0byBzZWUgaWYgd2UgbmVlZCB0byB3cmFwIGl0IGluIGEgU2FmZUNoYXJJdGVyYXRvcjoKKyAgICAgICAgaW50IGVuZCA9IG5ld1RleHQuZ2V0RW5kSW5kZXgoKTsKKyAgICAgICAgbmV3VGV4dC5zZXRJbmRleChlbmQpOworICAgICAgICBpZiAobmV3VGV4dC5nZXRJbmRleCgpICE9IGVuZCkgeworICAgICAgICAgICAgLy8gZmFpbGVkIC0gd3JhcCBpbiBjb3JyZWN0IGltcGxlbWVudGF0aW9uCisgICAgICAgICAgICB0ZXh0ID0gbmV3IFNhZmVDaGFySXRlcmF0b3IobmV3VGV4dCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0ZXh0ID0gbmV3VGV4dDsKKyAgICAgICAgfQorICAgICAgICB0ZXh0LmZpcnN0KCk7CisgICAgfQorCisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gaW1wbGVtZW50YXRpb24KKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBUaGlzIG1ldGhvZCBpcyB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIG9mIHRoZSBuZXh0KCkgbWV0aG9kLiAgQWxsIGl0ZXJhdGlvbgorICAgICAqIHZlY3RvcnMgdGhyb3VnaCBoZXJlLiAgVGhpcyBtZXRob2QgaW5pdGlhbGl6ZXMgdGhlIHN0YXRlIG1hY2hpbmUgdG8gc3RhdGUgMQorICAgICAqIGFuZCBhZHZhbmNlcyB0aHJvdWdoIHRoZSB0ZXh0IGNoYXJhY3RlciBieSBjaGFyYWN0ZXIgdW50aWwgd2UgcmVhY2ggdGhlIGVuZAorICAgICAqIG9mIHRoZSB0ZXh0IG9yIHRoZSBzdGF0ZSBtYWNoaW5lIHRyYW5zaXRpb25zIHRvIHN0YXRlIDAuICBXZSB1cGRhdGUgb3VyIHJldHVybgorICAgICAqIHZhbHVlIGV2ZXJ5IHRpbWUgdGhlIHN0YXRlIG1hY2hpbmUgcGFzc2VzIHRocm91Z2ggYSBwb3NzaWJsZSBlbmQgc3RhdGUuCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVOZXh0KCkgeworICAgICAgICAvLyBpZiB3ZSdyZSBhbHJlYWR5IGF0IHRoZSBlbmQgb2YgdGhlIHRleHQsIHJldHVybiBET05FLgorICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciB0ZXh0ID0gZ2V0VGV4dCgpOworICAgICAgICBpZiAodGV4dC5nZXRJbmRleCgpID09IHRleHQuZ2V0RW5kSW5kZXgoKSkgeworICAgICAgICAgICAgcmV0dXJuIEJyZWFrSXRlcmF0b3IuRE9ORTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIG5vIG1hdHRlciB3aGF0LCB3ZSBhbHdheXMgYWR2YW5jZSBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyIGZvcndhcmQKKyAgICAgICAgaW50IHJlc3VsdCA9IHRleHQuZ2V0SW5kZXgoKSArIDE7CisgICAgICAgIGludCBsb29rYWhlYWRSZXN1bHQgPSAwOworCisgICAgICAgIC8vIGJlZ2luIGluIHN0YXRlIDEKKyAgICAgICAgaW50IHN0YXRlID0gU1RBUlRfU1RBVEU7CisgICAgICAgIGludCBjYXRlZ29yeTsKKyAgICAgICAgY2hhciBjID0gdGV4dC5jdXJyZW50KCk7CisgICAgICAgIGNoYXIgbGFzdEMgPSBjOworICAgICAgICBpbnQgbGFzdENQb3MgPSAwOworCisgICAgICAgIC8vIGlmIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhpcyBzZWdtZW50IGlzIGFuIGlnbm9yZSBjaGFyYWN0ZXIgKHdoaWNoIGNhbiBoYXBwZW4KKyAgICAgICAgLy8gd2hlbiBpdCdzIGVpdGhlciB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSBmaWxlIG9yIGZvbGxvd3MgYSBtYW5kYXRvcnkgYnJlYWsKKyAgICAgICAgLy8gY2hhcmFjdGVyKSwgYW5kIHRoZSBmaXJzdCBub24taWdub3JlIGNoYXJhY3RlciBpc24ndCBhIGdsdWUgY2hhcmFjdGVyLCBhbHdheXMKKyAgICAgICAgLy8gcHV0IGEgYnJlYWsgYmV0d2VlbiB0aGUgaWdub3JlIGNoYXJhY3RlcnMgYW5kIHRoZSByZXN0IG9mIHRoZSB0ZXh0CisgICAgICAgIGlmIChsb29rdXBDYXRlZ29yeShjKSA9PSBJR05PUkUpIHsKKyAgICAgICAgICAgIHdoaWxlIChsb29rdXBDYXRlZ29yeShjKSA9PSBJR05PUkUpCisgICAgICAgICAgICAgICAgYyA9IHRleHQubmV4dCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoQ2hhcmFjdGVyLmdldFR5cGUoYykgPT0gQ2hhcmFjdGVyLk5PTl9TUEFDSU5HX01BUksgfHwgQ2hhcmFjdGVyLmdldFR5cGUoYykKKyAgICAgICAgICAgICAgICAgICAgPT0gQ2hhcmFjdGVyLkVOQ0xPU0lOR19NQVJLKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQuZ2V0SW5kZXgoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gbG9vcCB1bnRpbCB3ZSByZWFjaCB0aGUgZW5kIG9mIHRoZSB0ZXh0IG9yIHRyYW5zaXRpb24gdG8gc3RhdGUgMAorICAgICAgICB3aGlsZSAoYyAhPSBDaGFyYWN0ZXJJdGVyYXRvci5ET05FICYmIHN0YXRlICE9IFNUT1BfU1RBVEUpIHsKKworICAgICAgICAgICAgLy8gbG9vayB1cCB0aGUgY3VycmVudCBjaGFyYWN0ZXIncyBjaGFyYWN0ZXIgY2F0ZWdvcnkgKHdoaWNoIHRlbGxzIHVzCisgICAgICAgICAgICAvLyB3aGljaCBjb2x1bW4gaW4gdGhlIHN0YXRlIHRhYmxlIHRvIGxvb2sgYXQpCisgICAgICAgICAgICBjYXRlZ29yeSA9IGxvb2t1cENhdGVnb3J5KGMpOworCisgICAgICAgICAgICAvLyBpZiB0aGUgY2hhcmFjdGVyIGlzbid0IGFuIGlnbm9yZSBjaGFyYWN0ZXIsIGxvb2sgdXAgYSBzdGF0ZQorICAgICAgICAgICAgLy8gdHJhbnNpdGlvbiBpbiB0aGUgc3RhdGUgdGFibGUKKyAgICAgICAgICAgIGlmIChjYXRlZ29yeSAhPSBJR05PUkUpIHsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IGxvb2t1cFN0YXRlKHN0YXRlLCBjYXRlZ29yeSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGlmIHRoZSBzdGF0ZSB3ZSd2ZSBqdXN0IHRyYW5zaXRpb25lZCB0byBpcyBhIGxvb2thaGVhZCBzdGF0ZSwKKyAgICAgICAgICAgIC8vIChidXQgbm90IGFsc28gYW4gZW5kIHN0YXRlKSwgc2F2ZSBpdHMgcG9zaXRpb24uICBJZiBpdCdzCisgICAgICAgICAgICAvLyBib3RoIGEgbG9va2FoZWFkIHN0YXRlIGFuZCBhbiBlbmQgc3RhdGUsIHVwZGF0ZSB0aGUgYnJlYWsgcG9zaXRpb24KKyAgICAgICAgICAgIC8vIHRvIHRoZSBsYXN0IHNhdmVkIGxvb2t1cC1zdGF0ZSBwb3NpdGlvbgorICAgICAgICAgICAgaWYgKGxvb2thaGVhZFN0YXRlc1tzdGF0ZV0pIHsKKyAgICAgICAgICAgICAgICBpZiAoZW5kU3RhdGVzW3N0YXRlXSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobG9va2FoZWFkUmVzdWx0ID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbG9va2FoZWFkUmVzdWx0OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGV4dC5nZXRJbmRleCgpICsgMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbG9va2FoZWFkUmVzdWx0ID0gdGV4dC5nZXRJbmRleCgpICsgMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIG90aGVyd2lzZSwgaWYgdGhlIHN0YXRlIHdlJ3ZlIGp1c3QgdHJhbnNpdGlvbmVkIHRvIGlzIGFuIGFjY2VwdGluZworICAgICAgICAgICAgLy8gc3RhdGUsIHVwZGF0ZSB0aGUgYnJlYWsgcG9zaXRpb24gdG8gYmUgdGhlIGN1cnJlbnQgaXRlcmF0aW9uIHBvc2l0aW9uCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoZW5kU3RhdGVzW3N0YXRlXSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSB0ZXh0LmdldEluZGV4KCkgKyAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8ga2VlcCB0cmFjayBvZiB0aGUgbGFzdCAicmVhbCIgY2hhcmFjdGVyIHdlIHNhdy4gIElmIHRoaXMgY2hhcmFjdGVyIGlzbid0IGFuCisgICAgICAgICAgICAvLyBpZ25vcmUgY2hhcmFjdGVyLCB0YWtlIG5vdGUgb2YgaXQgYW5kIGl0cyBwb3NpdGlvbiBpbiB0aGUgdGV4dAorICAgICAgICAgICAgaWYgKGNhdGVnb3J5ICE9IElHTk9SRSAmJiBzdGF0ZSAhPSBTVE9QX1NUQVRFKSB7CisgICAgICAgICAgICAgICAgbGFzdEMgPSBjOworICAgICAgICAgICAgICAgIGxhc3RDUG9zID0gdGV4dC5nZXRJbmRleCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYyA9IHRleHQubmV4dCgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gaWYgd2UndmUgcnVuIG9mZiB0aGUgZW5kIG9mIHRoZSB0ZXh0LCBhbmQgdGhlIHZlcnkgbGFzdCBjaGFyYWN0ZXIgdG9vayB1cyBpbnRvCisgICAgICAgIC8vIGEgbG9va2FoZWFkIHN0YXRlLCBhZHZhbmNlIHRoZSBicmVhayBwb3NpdGlvbiB0byB0aGUgbG9va2FoZWFkIHBvc2l0aW9uCisgICAgICAgIC8vICh0aGUgdGhlb3J5IGhlcmUgaXMgdGhhdCBpZiB0aGVyZSBhcmUgbm8gY2hhcmFjdGVycyBhdCBhbGwgYWZ0ZXIgdGhlIGxvb2thaGVhZAorICAgICAgICAvLyBwb3NpdGlvbiwgdGhhdCBhbHdheXMgbWF0Y2hlcyB0aGUgbG9va2FoZWFkIGNyaXRlcmlhKQorICAgICAgICBpZiAoYyA9PSBDaGFyYWN0ZXJJdGVyYXRvci5ET05FICYmIGxvb2thaGVhZFJlc3VsdCA9PSB0ZXh0LmdldEVuZEluZGV4KCkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGxvb2thaGVhZFJlc3VsdDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gaWYgdGhlIGxhc3QgY2hhcmFjdGVyIHdlIHNhdyBiZWZvcmUgdGhlIG9uZSB0aGF0IHRvb2sgdXMgaW50byB0aGUgc3RvcCBzdGF0ZQorICAgICAgICAvLyB3YXMgYSBtYW5kYXRvcnkgYnJlYWtpbmcgY2hhcmFjdGVyLCB0aGVuIHRoZSBicmVhayBwb3NpdGlvbiBnb2VzIHJpZ2h0IGFmdGVyIGl0CisgICAgICAgIC8vICh0aGlzIGlzIGhlcmUgc28gdGhhdCBicmVha3MgY29tZSBiZWZvcmUsIHJhdGhlciB0aGFuIGFmdGVyLCBhIHN0cmluZyBvZgorICAgICAgICAvLyBpZ25vcmUgY2hhcmFjdGVycyB3aGVuIHRoZXkgZm9sbG93IGEgbWFuZGF0b3J5IGJyZWFrIGNoYXJhY3RlcikKKyAgICAgICAgZWxzZSBpZiAoIlxuXHJcZlx1MjAyOFx1MjAyOSIuaW5kZXhPZihsYXN0QykgIT0gLTEpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGxhc3RDUG9zICsgMTsKKyAgICAgICAgfQorCisgICAgICAgIHRleHQuc2V0SW5kZXgocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIG1ldGhvZCBiYWNrcyB0aGUgaXRlcmF0b3IgYmFjayB1cCB0byBhICJzYWZlIHBvc2l0aW9uIiBpbiB0aGUgdGV4dC4KKyAgICAgKiBUaGlzIGlzIGEgcG9zaXRpb24gdGhhdCB3ZSBrbm93LCB3aXRob3V0IGFueSBjb250ZXh0LCBtdXN0IGJlIGEgYnJlYWsgcG9zaXRpb24uCisgICAgICogVGhlIHZhcmlvdXMgY2FsbGluZyBtZXRob2RzIHRoZW4gaXRlcmF0ZSBmb3J3YXJkIGZyb20gdGhpcyBzYWZlIHBvc2l0aW9uIHRvCisgICAgICogdGhlIGFwcHJvcHJpYXRlIHBvc2l0aW9uIHRvIHJldHVybi4gIChGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBkZXNjcmlwdGlvbgorICAgICAqIG9mIGJ1aWxkQmFja3dhcmRzU3RhdGVUYWJsZSgpIGluIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuQnVpbGRlci4pCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVQcmV2aW91cygpIHsKKyAgICAgICAgQ2hhcmFjdGVySXRlcmF0b3IgdGV4dCA9IGdldFRleHQoKTsKKyAgICAgICAgaW50IHN0YXRlID0gU1RBUlRfU1RBVEU7CisgICAgICAgIGludCBjYXRlZ29yeSA9IDA7CisgICAgICAgIGludCBsYXN0Q2F0ZWdvcnkgPSAwOworICAgICAgICBjaGFyIGMgPSB0ZXh0LmN1cnJlbnQoKTsKKworICAgICAgICAvLyBsb29wIHVudGlsIHdlIHJlYWNoIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRleHQgb3IgdHJhbnNpdGlvbiB0byBzdGF0ZSAwCisgICAgICAgIHdoaWxlIChjICE9IENoYXJhY3Rlckl0ZXJhdG9yLkRPTkUgJiYgc3RhdGUgIT0gU1RPUF9TVEFURSkgeworLy9TeXN0ZW0ub3V0LnByaW50KCIgIiArIHRleHQuZ2V0SW5kZXgoKSk7CisKKyAgICAgICAgICAgIC8vIHNhdmUgdGhlIGxhc3QgY2hhcmFjdGVyJ3MgY2F0ZWdvcnkgYW5kIGxvb2sgdXAgdGhlIGN1cnJlbnQKKyAgICAgICAgICAgIC8vIGNoYXJhY3RlcidzIGNhdGVnb3J5CisgICAgICAgICAgICBsYXN0Q2F0ZWdvcnkgPSBjYXRlZ29yeTsKKyAgICAgICAgICAgIGNhdGVnb3J5ID0gbG9va3VwQ2F0ZWdvcnkoYyk7CisKKyAgICAgICAgICAgIC8vIGlmIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpc24ndCBhbiBpZ25vcmUgY2hhcmFjdGVyLCBsb29rIHVwIGEKKyAgICAgICAgICAgIC8vIHN0YXRlIHRyYW5zaXRpb24gaW4gdGhlIGJhY2t3YXJkcyBzdGF0ZSB0YWJsZQorICAgICAgICAgICAgaWYgKGNhdGVnb3J5ICE9IElHTk9SRSkgeworICAgICAgICAgICAgICAgIHN0YXRlID0gbG9va3VwQmFja3dhcmRTdGF0ZShzdGF0ZSwgY2F0ZWdvcnkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyB0aGVuIGFkdmFuY2Ugb25lIGNoYXJhY3RlciBiYWNrd2FyZHMKKyAgICAgICAgICAgIGMgPSB0ZXh0LnByZXZpb3VzKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBpZiB3ZSBkaWRuJ3QgbWFyY2ggb2ZmIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRleHQsIHdlJ3JlIGVpdGhlciBvbmUgb3IgdHdvCisgICAgICAgIC8vIHBvc2l0aW9ucyBhd2F5IGZyb20gdGhlIHJlYWwgYnJlYWsgcG9zaXRpb24uICAoT25lIGJlY2F1c2Ugb2YgdGhlIGNhbGwgdG8KKyAgICAgICAgLy8gcHJldmlvdXMoKSBhdCB0aGUgZW5kIG9mIHRoZSBsb29wIGFib3ZlLCBhbmQgYW5vdGhlciBiZWNhdXNlIHRoZSBjaGFyYWN0ZXIKKyAgICAgICAgLy8gdGhhdCB0YWtlcyB1cyBpbnRvIHRoZSBzdG9wIHN0YXRlIHdpbGwgYWx3YXlzIGJlIHRoZSBjaGFyYWN0ZXIgQkVGT1JFCisgICAgICAgIC8vIHRoZSBicmVhayBwb3NpdGlvbi4pCisgICAgICAgIGlmIChjICE9IENoYXJhY3Rlckl0ZXJhdG9yLkRPTkUpIHsKKyAgICAgICAgICAgIGlmIChsYXN0Q2F0ZWdvcnkgIT0gSUdOT1JFKSB7CisgICAgICAgICAgICAgICAgdGV4dC5zZXRJbmRleCh0ZXh0LmdldEluZGV4KCkgKyAyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHRleHQubmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisvL1N5c3RlbS5vdXQucHJpbnQoIiwiKTsKKyAgICAgICAgcmV0dXJuIHRleHQuZ2V0SW5kZXgoKTsKKyAgICB9CisKKy8vc3RhdGljIGludCB2aXNpdGVkQ2hhcnMgPSAwOworICAgIC8qKgorICAgICAqIExvb2tzIHVwIGEgY2hhcmFjdGVyJ3MgY2F0ZWdvcnkgKGkuZS4sIGl0cyBjYXRlZ29yeSBmb3IgYnJlYWtpbmcgcHVycG9zZXMsCisgICAgICogbm90IGl0cyBVbmljb2RlIGNhdGVnb3J5KQorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgbG9va3VwQ2F0ZWdvcnkoY2hhciBjKSB7CisvLysrdmlzaXRlZENoYXJzOworICAgICAgICByZXR1cm4gY2hhckNhdGVnb3J5VGFibGUuZWxlbWVudEF0KGMpOworICAgIH0KKworLyoKK3N0YXRpYyB2b2lkIHByaW50VmlzaXRlZENoYXJDb3VudCgpIHsKK1N5c3RlbS5vdXQucHJpbnRsbigiVG90YWwgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdmlzaXRlZCA9ICIgKyB2aXNpdGVkQ2hhcnMpOwordmlzaXRlZENoYXJzID0gMDsKK30KKyovCisKKyAgICAvKioKKyAgICAgKiBHaXZlbiBhIGN1cnJlbnQgc3RhdGUgYW5kIGEgY2hhcmFjdGVyIGNhdGVnb3J5LCBsb29rcyB1cCB0aGUKKyAgICAgKiBuZXh0IHN0YXRlIHRvIHRyYW5zaXRpb24gdG8gaW4gdGhlIHN0YXRlIHRhYmxlLgorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgbG9va3VwU3RhdGUoaW50IHN0YXRlLCBpbnQgY2F0ZWdvcnkpIHsKKyAgICAgICAgcmV0dXJuIHN0YXRlVGFibGVbc3RhdGUgKiBudW1DYXRlZ29yaWVzICsgY2F0ZWdvcnldOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdpdmVuIGEgY3VycmVudCBzdGF0ZSBhbmQgYSBjaGFyYWN0ZXIgY2F0ZWdvcnksIGxvb2tzIHVwIHRoZQorICAgICAqIG5leHQgc3RhdGUgdG8gdHJhbnNpdGlvbiB0byBpbiB0aGUgYmFja3dhcmRzIHN0YXRlIHRhYmxlLgorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgbG9va3VwQmFja3dhcmRTdGF0ZShpbnQgc3RhdGUsIGludCBjYXRlZ29yeSkgeworICAgICAgICByZXR1cm4gYmFja3dhcmRzU3RhdGVUYWJsZVtzdGF0ZSAqIG51bUNhdGVnb3JpZXMgKyBjYXRlZ29yeV07CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBpcyBhIGhlbHBlciBmdW5jdGlvbiBmb3IgY29tcHV0aW5nIHRoZSBpbnRlcnNlY3Rpb24gb2YKKyAgICAgKiB0d28gPGNvZGU+VW5pY29kZVNldDwvY29kZT4gb2JqZWN0cy4KKyAgICAgKiBAcGFyYW0gYSwgYiB0aGUgdHdvIDxjb2RlPlVuaWNvZGVTZXQ8L2NvZGU+cyB0byBpbnRlcnNlY3QKKyAgICAgKiBAcmV0dXJuIGEgbmV3IDxjb2RlPlVuaWNvZGVTZXQ8L2NvZGU+IHdoaWNoIGlzIHRoZSBpbnRlcnNlY3Rpb24gb2YgYSBhbmQgYgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIFVuaWNvZGVTZXQgaW50ZXJzZWN0aW9uKFVuaWNvZGVTZXQgYSwgVW5pY29kZVNldCBiKQorICAgIHsKKyAgICAgICAgVW5pY29kZVNldCByZXN1bHQgPSBuZXcgVW5pY29kZVNldChhKTsKKyAgICAgICAgICAgIAorICAgICAgICByZXN1bHQucmV0YWluQWxsKGIpOworICAgICAgICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IuQnVpbGRlcgorICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvKioKKyAgICAgKiBUaGUgQnVpbGRlciBjbGFzcyBoYXMgdGhlIGpvYiBvZiBjb25zdHJ1Y3RpbmcgYSBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGZyb20gYQorICAgICAqIHRleHR1YWwgZGVzY3JpcHRpb24uICBBIEJ1aWxkZXIgaXMgY29uc3RydWN0ZWQgYnkgUnVsZUJhc2VkQnJlYWtJdGVyYXRvcidzCisgICAgICogY29uc3RydWN0b3IsIHdoaWNoIHVzZXMgaXQgdG8gY29uc3RydWN0IHRoZSBpdGVyYXRvciBpdHNlbGYgYW5kIHRoZW4gdGhyb3dzIGl0CisgICAgICogYXdheS4KKyAgICAgKiA8cD5UaGUgY29uc3RydWN0aW9uIGxvZ2ljIGlzIHNlcGFyYXRlZCBvdXQgaW50byBpdHMgb3duIGNsYXNzIGZvciB0d28gcHJpbWFyeQorICAgICAqIHJlYXNvbnM6CisgICAgICogPHVsPjxsaT5UaGUgY29uc3RydWN0aW9uIGxvZ2ljIGlzIHF1aXRlIHNvcGhpc3RpY2F0ZWQgYW5kIGxhcmdlLiAgU2VwYXJhdGluZyBpdAorICAgICAqIG91dCBpbnRvIGl0cyBvd24gY2xhc3MgbWVhbnMgdGhlIGNvZGUgbXVzdCBvbmx5IGJlIGxvYWRlZCBpbnRvIG1lbW9yeSB3aGlsZSBhCisgICAgICogUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBpcyBiZWluZyBjb25zdHJ1Y3RlZCwgYW5kIGNhbiBiZSBwdXJnZWQgYWZ0ZXIgdGhhdC4KKyAgICAgKiA8bGk+VGhlcmUgaXMgYSBmYWlyIGFtb3VudCBvZiBzdGF0ZSB0aGF0IG11c3QgYmUgbWFpbnRhaW5lZCB0aHJvdWdob3V0IHRoZQorICAgICAqIGNvbnN0cnVjdGlvbiBwcm9jZXNzIHRoYXQgaXMgbm90IG5lZWRlZCBieSB0aGUgaXRlcmF0b3IgYWZ0ZXIgY29uc3RydWN0aW9uLgorICAgICAqIFNlcGFyYXRpbmcgdGhpcyBzdGF0ZSBvdXQgaW50byBhbm90aGVyIGNsYXNzIHByZXZlbnRzIGFsbCBvZiB0aGUgZnVuY3Rpb25zIHRoYXQKKyAgICAgKiBjb25zdHJ1Y3QgdGhlIGl0ZXJhdG9yIGZyb20gaGF2aW5nIHRvIGhhdmUgcmVhbGx5IGxvbmcgcGFyYW1ldGVyIGxpc3RzLAorICAgICAqIChob3BlZnVsbHkpIGNvbnRyaWJ1dGluZyB0byByZWFkYWJpbGl0eSBhbmQgbWFpbnRhaW5hYmlsaXR5LjwvdWw+CisgICAgICogPHA+SXQnZCBiZSByZWFsbHkgbmljZSBpZiB0aGlzIGNvdWxkIGJlIGFuIGluZGVwZW5kZW50IGNsYXNzIHJhdGhlciB0aGFuIGFuCisgICAgICogaW5uZXIgY2xhc3MsIGJlY2F1c2UgdGhhdCB3b3VsZCBzaG9ydGVuIHRoZSBzb3VyY2UgZmlsZSBjb25zaWRlcmFibHksIGJ1dAorICAgICAqIG1ha2luZyBCdWlsZGVyIGFuIGlubmVyIGNsYXNzIG9mIFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IgYWxsb3dzIGl0IGRpcmVjdCBhY2Nlc3MKKyAgICAgKiB0byBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yJ3MgcHJpdmF0ZSBtZW1iZXJzLCB3aGljaCBzYXZlcyB1cyBmcm9tIGhhdmluZyB0bworICAgICAqIHByb3ZpZGUgc29tZSBraW5kIG9mICJiYWNrIGRvb3IiIHRvIHRoZSBCdWlsZGVyIGNsYXNzIHRoYXQgY291bGQgdGhlbiBhbHNvIGJlCisgICAgICogdXNlZCBieSBvdGhlciBjbGFzc2VzLgorICAgICAqLworICAgIHByb3RlY3RlZCBjbGFzcyBCdWlsZGVyIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIEEgdGVtcG9yYXJ5IGhvbGRpbmcgcGxhY2UgdXNlZCBmb3IgY2FsY3VsYXRpbmcgdGhlIGNoYXJhY3RlciBjYXRlZ29yaWVzLgorICAgICAgICAgKiBUaGlzIG9iamVjdCBjb250YWlucyBVbmljb2RlU2V0IG9iamVjdHMuCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgVmVjdG9yIGNhdGVnb3JpZXMgPSBudWxsOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBBIHRhYmxlIHVzZWQgdG8gbWFwIHBhcnRzIG9mIHJlZ2V4cCB0ZXh0IHRvIGxpc3RzIG9mIGNoYXJhY3RlciBjYXRlZ29yaWVzLAorICAgICAgICAgKiByYXRoZXIgdGhhbiBoYXZpbmcgdG8gZmlndXJlIHRoZW0gb3V0IGZyb20gc2NyYXRjaCBlYWNoIHRpbWUKKyAgICAgICAgICovCisgICAgICAgIHByb3RlY3RlZCBIYXNodGFibGUgZXhwcmVzc2lvbnMgPSBudWxsOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBBIHRlbXBvcmFyeSBob2xkaW5nIHBsYWNlIGZvciB0aGUgbGlzdCBvZiBpZ25vcmUgY2hhcmFjdGVycworICAgICAgICAgKi8KKyAgICAgICAgcHJvdGVjdGVkIFVuaWNvZGVTZXQgaWdub3JlQ2hhcnMgPSBudWxsOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBBIHRlbXBvcmFyeSBob2xkaW5nIHBsYWNlIHdoZXJlIHRoZSBmb3J3YXJkIHN0YXRlIHRhYmxlIGlzIGJ1aWx0CisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgVmVjdG9yIHRlbXBTdGF0ZVRhYmxlID0gbnVsbDsKKworICAgICAgICAvKioKKyAgICAgICAgICogQSBsaXN0IG9mIGFsbCB0aGUgc3RhdGVzIHRoYXQgaGF2ZSB0byBiZSBmaWxsZWQgaW4gd2l0aCB0cmFuc2l0aW9ucyB0byB0aGUKKyAgICAgICAgICogbmV4dCBzdGF0ZSB0aGF0IGlzIGNyZWF0ZWQuICBVc2VkIHdoZW4gYnVpbGRpbmcgdGhlIHN0YXRlIHRhYmxlIGZyb20gdGhlCisgICAgICAgICAqIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgVmVjdG9yIGRlY2lzaW9uUG9pbnRMaXN0ID0gbnVsbDsKKworICAgICAgICAvKioKKyAgICAgICAgICogQSBzdGFjayBmb3IgaG9sZGluZyBkZWNpc2lvbiBwb2ludCBsaXN0cy4gIFRoaXMgaXMgdXNlZCB0byBoYW5kbGUgbmVzdGVkCisgICAgICAgICAqIHBhcmVudGhlc2VzIGFuZCBicmFjZXMgaW4gcmVnZXhwcy4KKyAgICAgICAgICovCisgICAgICAgIHByb3RlY3RlZCBTdGFjayBkZWNpc2lvblBvaW50U3RhY2sgPSBudWxsOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBBIGxpc3Qgb2Ygc3RhdGVzIHRoYXQgbG9vcCBiYWNrIG9uIHRoZW1zZWx2ZXMuICBVc2VkIHRvIGhhbmRsZSAuKj8KKyAgICAgICAgICovCisgICAgICAgIHByb3RlY3RlZCBWZWN0b3IgbG9vcGluZ1N0YXRlcyA9IG51bGw7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIExvb3Bpbmcgc3RhdGVzIGFjdHVhbGx5IGhhdmUgdG8gYmUgYmFja2ZpbGxlZCBsYXRlciBpbiB0aGUgcHJvY2VzcworICAgICAgICAgKiB0aGFuIGV2ZXJ5dGhpbmcgZWxzZS4gIFRoaXMgaXMgd2hlcmUgYSB0aGUgbGlzdCBvZiBzdGF0ZXMgdG8gYmFja2ZpbGwKKyAgICAgICAgICogaXMgYWNjdW11bGF0ZWQuICBUaGlzIGlzIGFsc28gdXNlZCB0byBoYW5kbGUgLio/CisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgVmVjdG9yIHN0YXRlc1RvQmFja2ZpbGwgPSBudWxsOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBBIGxpc3QgbWFwcGluZyBwYWlycyBvZiBzdGF0ZSBudW1iZXJzIGZvciBzdGF0ZXMgdGhhdCBhcmUgdG8gYmUgY29tYmluZWQKKyAgICAgICAgICogdG8gdGhlIHN0YXRlIG51bWJlciBvZiB0aGUgc3RhdGUgcmVwcmVzZW50aW5nIHRoZWlyIGNvbWJpbmF0aW9uLiAgVXNlZAorICAgICAgICAgKiBpbiB0aGUgcHJvY2VzcyBvZiBtYWtpbmcgdGhlIHN0YXRlIHRhYmxlIGRldGVybWluaXN0aWMgdG8gcHJldmVudAorICAgICAgICAgKiBpbmZpbml0ZSByZWN1cnNpb24uCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgVmVjdG9yIG1lcmdlTGlzdCA9IG51bGw7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEEgZmxhZyB0aGF0IGlzIHVzZWQgdG8gaW5kaWNhdGUgd2hlbiB0aGUgbGlzdCBvZiBsb29waW5nIHN0YXRlcyBjYW4KKyAgICAgICAgICogYmUgcmVzZXQuCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgYm9vbGVhbiBjbGVhckxvb3BpbmdTdGF0ZXMgPSBmYWxzZTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQSBiaXQgbWFzayB1c2VkIHRvIGluZGljYXRlIGEgYml0IGluIHRoZSB0YWJsZSdzIGZsYWdzIGNvbHVtbiB0aGF0IG1hcmtzIGEKKyAgICAgICAgICogc3RhdGUgYXMgYW4gYWNjZXB0aW5nIHN0YXRlLgorICAgICAgICAgKi8KKyAgICAgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgRU5EX1NUQVRFX0ZMQUcgPSAweDgwMDA7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEEgYml0IG1hc2sgdXNlZCB0byBpbmRpY2F0ZSBhIGJpdCBpbiB0aGUgdGFibGUncyBmbGFncyBjb2x1bW4gdGhhdCBtYXJrcyBhCisgICAgICAgICAqIHN0YXRlIGFzIG9uZSB0aGUgYnVpbGRlciBzaG91bGRuJ3QgbG9vcCB0byBhbnkgbG9vcGluZyBzdGF0ZXMKKyAgICAgICAgICovCisgICAgICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IERPTlRfTE9PUF9GTEFHID0gMHg0MDAwOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBBIGJpdCBtYXNrIHVzZWQgdG8gaW5kaWNhdGUgYSBiaXQgaW4gdGhlIHRhYmxlJ3MgZmxhZ3MgY29sdW1uIHRoYXQgbWFya3MgYQorICAgICAgICAgKiBzdGF0ZSBhcyBhIGxvb2thaGVhZCBzdGF0ZS4KKyAgICAgICAgICovCisgICAgICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IExPT0tBSEVBRF9TVEFURV9GTEFHID0gMHgyMDAwOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBBIGJpdCBtYXNrIHJlcHJlc2VudGluZyB0aGUgdW5pb24gb2YgdGhlIG1hc2sgdmFsdWVzIGxpc3RlZCBhYm92ZS4KKyAgICAgICAgICogVXNlZCBmb3IgY2xlYXJpbmcgb3IgbWFza2luZyBvZmYgdGhlIGZsYWcgYml0cy4KKyAgICAgICAgICovCisgICAgICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IEFMTF9GTEFHUyA9IEVORF9TVEFURV9GTEFHIHwgTE9PS0FIRUFEX1NUQVRFX0ZMQUcKKyAgICAgICAgICAgICAgICB8IERPTlRfTE9PUF9GTEFHOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBObyBzcGVjaWFsIGNvbnN0cnVjdGlvbiBpcyByZXF1aXJlZCBmb3IgdGhlIEJ1aWxkZXIuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgQnVpbGRlcigpIHsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGlzIGlzIHRoZSBtYWluIGZ1bmN0aW9uIGZvciBzZXR0aW5nIHVwIHRoZSBCcmVha0l0ZXJhdG9yJ3MgdGFibGVzLiAgSXQKKyAgICAgICAgICoganVzdCB2ZWN0b3JzIGRpZmZlcmVudCBwYXJ0cyBvZiB0aGUgam9iIG9mZiB0byBvdGhlciBmdW5jdGlvbnMuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgdm9pZCBidWlsZEJyZWFrSXRlcmF0b3IoKSB7CisgICAgICAgICAgICBWZWN0b3IgdGVtcFJ1bGVMaXN0ID0gYnVpbGRSdWxlTGlzdChkZXNjcmlwdGlvbik7CisgICAgICAgICAgICBidWlsZENoYXJDYXRlZ29yaWVzKHRlbXBSdWxlTGlzdCk7CisgICAgICAgICAgICBidWlsZFN0YXRlVGFibGUodGVtcFJ1bGVMaXN0KTsKKyAgICAgICAgICAgIGJ1aWxkQmFja3dhcmRzU3RhdGVUYWJsZSh0ZW1wUnVsZUxpc3QpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogVGh1cyBmdW5jdGlvbiBoYXMgdGhyZWUgbWFpbiBwdXJwb3NlczoKKyAgICAgICAgICogPHVsPjxsaT5QZXJmb3JtIGdlbmVyYWwgc3ludGF4IGNoZWNraW5nIG9uIHRoZSBkZXNjcmlwdGlvbiwgc28gdGhlIHJlc3Qgb2YgdGhlCisgICAgICAgICAqIGJ1aWxkIGNvZGUgY2FuIGFzc3VtZSB0aGF0IGl0J3MgcGFyc2luZyBhIGxlZ2FsIGRlc2NyaXB0aW9uLgorICAgICAgICAgKiA8bGk+U3BsaXQgdGhlIGRlc2NyaXB0aW9uIGludG8gc2VwYXJhdGUgcnVsZXMKKyAgICAgICAgICogPGxpPlBlcmZvcm0gdmFyaWFibGUtbmFtZSBzdWJzdGl0dXRpb25zIChzbyB0aGF0IG5vIG9uZSBlbHNlIHNlZXMgdmFyaWFibGUgbmFtZXMpCisgICAgICAgICAqIDwvdWw+CisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIFZlY3RvciBidWlsZFJ1bGVMaXN0KFN0cmluZyBkZXNjcmlwdGlvbikgeworICAgICAgICAgICAgLy8gaW52YXJpYW50czoKKyAgICAgICAgICAgIC8vIC0gcGFyZW50aGVzZXMgbXVzdCBiZSBiYWxhbmNlZDogKClbXXt9PD4KKyAgICAgICAgICAgIC8vIC0gbm90aGluZyBjYW4gYmUgbmVzdGVkIGluc2lkZSB7fQorICAgICAgICAgICAgLy8gLSBub3RoaW5nIGNhbiBiZSBuZXN0ZWQgaW5zaWRlIFtdIGV4Y2VwdCBtb3JlIFtdcworICAgICAgICAgICAgLy8gLSBwYWlycyBvZiAoKVtde308PiBtdXN0IG5vdCBiZSBlbXB0eQorICAgICAgICAgICAgLy8gLSA7IGNhbiBvbmx5IG9jY3VyIGF0IHRoZSBvdXRlciBsZXZlbAorICAgICAgICAgICAgLy8gLSB8IGNhbiBvbmx5IGFwcGVhciBpbnNpZGUgKCkKKyAgICAgICAgICAgIC8vIC0gb25seSBvbmUgPSBvciAvIGNhbiBvY2N1ciBpbiBhIHNpbmdsZSBydWxlCisgICAgICAgICAgICAvLyAtID0gYW5kIC8gY2Fubm90IGJvdGggb2NjdXIgaW4gdGhlIHNhbWUgcnVsZQorICAgICAgICAgICAgLy8gLSB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIGEgPSBleHByZXNzaW9uIG11c3QgYmUgZW5jbG9zZWQgaW4gW10gb3IgKCkKKyAgICAgICAgICAgIC8vIC0gKiBtYXkgbm90IG9jY3VyIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBydWxlLCBub3IgbWF5IGl0IGZvbGxvdworICAgICAgICAgICAgLy8gICA9LCAvLCAoLCAoLCB8LCB9LCA7LCBvciAqCisgICAgICAgICAgICAvLyAtID8gbWF5IG9ubHkgZm9sbG93ICoKKyAgICAgICAgICAgIC8vIC0gdGhlIHJ1bGUgbGlzdCBtdXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIC8gcnVsZQorICAgICAgICAgICAgLy8gLSBubyBydWxlIG1heSBiZSBlbXB0eQorICAgICAgICAgICAgLy8gLSBhbGwgcHJpbnRpbmcgY2hhcmFjdGVycyBpbiB0aGUgQVNDSUkgcmFuZ2UgZXhjZXB0IGxldHRlcnMgYW5kIGRpZ2l0cworICAgICAgICAgICAgLy8gICBhcmUgcmVzZXJ2ZWQgYW5kIG11c3QgYmUgcHJlY2VkZWQgYnkgXAorICAgICAgICAgICAgLy8gLSAhIG1heSBvbmx5IG9jY3VyIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBydWxlCisKKyAgICAgICAgICAgIC8vIHNldCB1cCBhIHZlY3RvciB0byBjb250YWluIHRoZSBicm9rZW4tdXAgZGVzY3JpcHRpb24gKGVhY2ggZW50cnkgaW4gdGhlCisgICAgICAgICAgICAvLyB2ZWN0b3IgaXMgYSBzZXBhcmF0ZSBydWxlKSBhbmQgYSBzdGFjayBmb3Iga2VlcGluZyB0cmFjayBvZiBvcGVuaW5nCisgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbgorICAgICAgICAgICAgVmVjdG9yIHRlbXBSdWxlTGlzdCA9IG5ldyBWZWN0b3IoKTsKKyAgICAgICAgICAgIFN0YWNrIHBhcmVuU3RhY2sgPSBuZXcgU3RhY2soKTsKKworICAgICAgICAgICAgaW50IHAgPSAwOworICAgICAgICAgICAgaW50IHJ1bGVTdGFydCA9IDA7CisgICAgICAgICAgICBjaGFyIGMgPSAnXHUwMDAwJzsKKyAgICAgICAgICAgIGNoYXIgbGFzdEMgPSAnXHUwMDAwJzsKKyAgICAgICAgICAgIGNoYXIgbGFzdE9wZW4gPSAnXHUwMDAwJzsKKyAgICAgICAgICAgIGJvb2xlYW4gaGF2ZUVxdWFscyA9IGZhbHNlOworICAgICAgICAgICAgYm9vbGVhbiBoYXZlUGlwZSA9IGZhbHNlOworICAgICAgICAgICAgYm9vbGVhbiBzYXdWYXJOYW1lID0gZmFsc2U7CisgICAgICAgICAgICBib29sZWFuIHNhd0lsbGVnYWxDaGFyID0gZmFsc2U7CisgICAgICAgICAgICBpbnQgaWxsZWdhbENoYXJQb3MgPSAwOworICAgICAgICAgICAgZmluYWwgU3RyaW5nIGNoYXJzVGhhdENhbnRQcmVjZWRlQXN0ZXJpc2sgPSAiPS88KHw+Kis/O1x1MDAwMCI7CisKKyAgICAgICAgICAgIC8vIGlmIHRoZSBkZXNjcmlwdGlvbiBkb2Vzbid0IGVuZCB3aXRoIGEgc2VtaWNvbG9uLCB0YWNrIGEgc2VtaWNvbG9uIG9udG8gdGhlIGVuZAorICAgICAgICAgICAgaWYgKGRlc2NyaXB0aW9uLmxlbmd0aCgpICE9IDAgJiYgZGVzY3JpcHRpb24uY2hhckF0KGRlc2NyaXB0aW9uLmxlbmd0aCgpIC0gMSkgIT0gJzsnKSB7CisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBkZXNjcmlwdGlvbiArICI7IjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gZm9yIGVhY2ggY2hhcmFjdGVyLCBkby4uLgorICAgICAgICAgICAgd2hpbGUgKHAgPCBkZXNjcmlwdGlvbi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGMgPSBkZXNjcmlwdGlvbi5jaGFyQXQocCk7CisgICAgICAgICAgICAgICAgc3dpdGNoIChjKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBjaGFyYWN0ZXIgaXMgb3BlbmluZyBwdW5jdHVhdGlvbiwgdmVyaWZ5IHRoYXQgbm8gbmVzdGluZworICAgICAgICAgICAgICAgICAgICAvLyBydWxlcyBhcmUgYnJva2VuLCBhbmQgcHVzaCB0aGUgY2hhcmFjdGVyIG9udG8gdGhlIHN0YWNrCisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3snOgorICAgICAgICAgICAgICAgICAgICBjYXNlICdbJzoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnKCc6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFzdE9wZW4gPT0gJ3snKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIkNhbid0IG5lc3QgYnJhY2tldHMgaW5zaWRlIHt9IiwgcCwgZGVzY3JpcHRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RPcGVuID09ICdbJyAmJiBjICE9ICdbJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJDYW4ndCBuZXN0IGFueXRoaW5nIGluIFtdIGJ1dCBbXSIsIHAsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2Ugc2VlIHsgYW55d2hlcmUgZXhjZXB0IG9uIHRoZSBsZWZ0LWhhbmQgc2lkZSBvZiA9LAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgbXVzdCBiZSBzZWVpbmcgYSB2YXJpYWJsZSBuYW1lIHRoYXQgd2FzIG5ldmVyIGRlZmluZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICd7JyAmJiAoaGF2ZUVxdWFscyB8fCBoYXZlUGlwZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiVW5rbm93biB2YXJpYWJsZSBuYW1lIiwgcCwgZGVzY3JpcHRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0T3BlbiA9IGM7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlblN0YWNrLnB1c2gobmV3IENoYXJhY3RlcihjKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAneycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXdWYXJOYW1lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBjaGFyYWN0ZXIgaXMgY2xvc2luZyBwdW5jdHVhdGlvbiwgdmVyaWZ5IHRoYXQgaXQgbWF0Y2hlcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gbGFzdCBvcGVuaW5nIHB1bmN0dWF0aW9uIHdlIHNhdywgYW5kIHRoYXQgdGhlIGJyYWNrZXRzIGNvbnRhaW4KKyAgICAgICAgICAgICAgICAgICAgLy8gc29tZXRoaW5nLCB0aGVuIHBvcCB0aGUgc3RhY2sKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnfSc6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ10nOgorICAgICAgICAgICAgICAgICAgICBjYXNlICcpJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZXhwZWN0ZWRDbG9zZSA9ICdcdTAwMDAnOworICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChsYXN0T3BlbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3snOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZENsb3NlID0gJ30nOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdbJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRDbG9zZSA9ICddJzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnKCc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkQ2xvc2UgPSAnKSc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgIT0gZXhwZWN0ZWRDbG9zZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJVbmJhbGFuY2VkIHBhcmVudGhlc2VzIiwgcCwgZGVzY3JpcHRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RDID09IGxhc3RPcGVuKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIlBhcmVucyBkb24ndCBjb250YWluIGFueXRoaW5nIiwgcCwgZGVzY3JpcHRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW5TdGFjay5wb3AoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcGFyZW5TdGFjay5lbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdE9wZW4gPSAoKENoYXJhY3RlcikocGFyZW5TdGFjay5wZWVrKCkpKS5jaGFyVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RPcGVuID0gJ1x1MDAwMCc7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBjaGFyYWN0ZXIgaXMgYW4gYXN0ZXJpc2ssIG1ha2Ugc3VyZSBpdCBvY2N1cnMgaW4gYSBwbGFjZQorICAgICAgICAgICAgICAgICAgICAvLyB3aGVyZSBhbiBhc3RlcmlzayBjYW4gbGVnYWxseSBnbworICAgICAgICAgICAgICAgICAgICBjYXNlICcqJzogY2FzZSAnKyc6IGNhc2UgJz8nOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoYXJzVGhhdENhbnRQcmVjZWRlQXN0ZXJpc2suaW5kZXhPZihsYXN0QykgIT0gLTEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGMgIT0gJz8nIHx8IGxhc3RDICE9ICcqJykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiTWlzcGxhY2VkICosICssIG9yID8iLCBwLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgY2hhcmFjdGVyIGlzIGFuIGVxdWFscyBzaWduLCBtYWtlIHN1cmUgd2UgaGF2ZW4ndCBzZWVuIGFub3RoZXIKKyAgICAgICAgICAgICAgICAgICAgLy8gZXF1YWxzIHNpZ24gb3IgYSBzbGFzaCB5ZXQKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnPSc6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGF2ZUVxdWFscyB8fCBoYXZlUGlwZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJNb3JlIHRoYW4gb25lID0gb3IgLyBpbiBydWxlIiwgcCwgZGVzY3JpcHRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZUVxdWFscyA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBzYXdJbGxlZ2FsQ2hhciA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGNoYXJhY3RlciBpcyBhIHNsYXNoLCBtYWtlIHN1cmUgd2UgaGF2ZW4ndCBzZWVuIGFub3RoZXIgc2xhc2gKKyAgICAgICAgICAgICAgICAgICAgLy8gb3IgYW4gZXF1YWxzIHNpZ24geWV0CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJy8nOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhdmVFcXVhbHMgfHwgaGF2ZVBpcGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiTW9yZSB0aGFuIG9uZSA9IG9yIC8gaW4gcnVsZSIsIHAsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzYXdWYXJOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIlVua25vd24gdmFyaWFibGUgbmFtZSIsIHAsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVQaXBlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBjaGFyYWN0ZXIgaXMgYW4gZXhjbGFtYXRpb24gcG9pbnQsIG1ha2Ugc3VyZSBpdCBvY2N1cnMgb25seQorICAgICAgICAgICAgICAgICAgICAvLyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgcnVsZQorICAgICAgICAgICAgICAgICAgICBjYXNlICchJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0QyAhPSAnOycgJiYgbGFzdEMgIT0gJ1x1MDAwMCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiISBjYW4gb25seSBvY2N1ciBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgcnVsZSIsIHAsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBjaGFyYWN0ZXIgaXMgYSBiYWNrc2xhc2gsIHNraXAgdGhlIGNoYXJhY3RlciB0aGF0IGZvbGxvd3MgaXQKKyAgICAgICAgICAgICAgICAgICAgLy8gKGl0J2xsIGdldCB0cmVhdGVkIGFzIGEgbGl0ZXJhbCBjaGFyYWN0ZXIpCisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ1xcJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIC8vIHdlIGRvbid0IGhhdmUgdG8gZG8gYW55dGhpbmcgc3BlY2lhbCBvbiBhIHBlcmlvZAorICAgICAgICAgICAgICAgICAgICBjYXNlICcuJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBjaGFyYWN0ZXIgaXMgYSBzeW50YXggY2hhcmFjdGVyIHRoYXQgY2FuIG9ubHkgb2NjdXIKKyAgICAgICAgICAgICAgICAgICAgLy8gaW5zaWRlIFtdLCBtYWtlIHN1cmUgdGhhdCBpdCBkb2VzIGluIGZhY3Qgb25seSBvY2N1ciBpbnNpZGUgW10KKyAgICAgICAgICAgICAgICAgICAgLy8gKG9yIGluIGEgdmFyaWFibGUgbmFtZSkKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnXic6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJy0nOgorICAgICAgICAgICAgICAgICAgICBjYXNlICc6JzoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnJic6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFzdE9wZW4gIT0gJ1snICYmIGxhc3RPcGVuICE9ICd7JyAmJiAhc2F3SWxsZWdhbENoYXIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXdJbGxlZ2FsQ2hhciA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWxsZWdhbENoYXJQb3MgPSBwOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGNoYXJhY3RlciBpcyBhIHNlbWljb2xvbiwgZG8gdGhlIGZvbGxvd2luZy4uLgorICAgICAgICAgICAgICAgICAgICBjYXNlICc7JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlIHNhdyBhbnkgaWxsZWdhbCBjaGFyYWN0ZXJzIGFsb25nIHRoZSB3YXksIHRocm93CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbiBlcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNhd0lsbGVnYWxDaGFyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIklsbGVnYWwgY2hhcmFjdGVyIiwgaWxsZWdhbENoYXJQb3MsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhlIHJ1bGUgY29udGFpbnMgc29tZXRoaW5nIGFuZCB0aGF0IHRoZXJlIGFyZSBubworICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5iYWxhbmNlZCBwYXJlbnRoZXNlcyBvciBicmFja2V0cworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RDID09ICc7JyB8fCBsYXN0QyA9PSAnXHUwMDAwJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJFbXB0eSBydWxlIiwgcCwgZGVzY3JpcHRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFwYXJlblN0YWNrLmVtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiVW5iYWxhbmNlZCBwYXJlbmhlc2VzIiwgcCwgZGVzY3JpcHRpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW5TdGFjay5lbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHJ1bGUgY29udGFpbmVkIGFuID0gc2lnbiwgY2FsbCBwcm9jZXNzU3Vic3RpdHV0aW9uKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0byByZXBsYWNlIHRoZSBzdWJzdGl0dXRpb24gbmFtZSB3aXRoIHRoZSBzdWJzdGl0dXRpb24gdGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZXJldmVyIGl0IGFwcGVhcnMgaW4gdGhlIGRlc2NyaXB0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhdmVFcXVhbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBwcm9jZXNzU3Vic3RpdHV0aW9uKGRlc2NyaXB0aW9uLnN1YnN0cmluZyhydWxlU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwKSwgZGVzY3JpcHRpb24sIHAgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG90aGVyd2lzZSwgY2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBydWxlIGRvZXNuJ3QgcmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFueSB1bmRlZmluZWQgc3Vic3RpdHV0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2F3VmFyTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IoIlVua25vd24gdmFyaWFibGUgbmFtZSIsIHAsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gYWRkIGl0IHRvIHRlbXBSdWxlTGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wUnVsZUxpc3QuYWRkRWxlbWVudChkZXNjcmlwdGlvbi5zdWJzdHJpbmcocnVsZVN0YXJ0LCBwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHJlc2V0IGV2ZXJ5dGhpbmcgdG8gcHJvY2VzcyB0aGUgbmV4dCBydWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZVN0YXJ0ID0gcCArIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZUVxdWFscyA9IGhhdmVQaXBlID0gc2F3VmFyTmFtZSA9IHNhd0lsbGVnYWxDaGFyID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgY2hhcmFjdGVyIGlzIGEgdmVydGljYWwgYmFyLCBjaGVjayB0byBtYWtlIHN1cmUgdGhhdCBpdAorICAgICAgICAgICAgICAgICAgICAvLyBvY2N1cnMgaW5zaWRlIGEgKCkgZXhwcmVzc2lvbiBhbmQgdGhhdCB0aGUgY2hhcmFjdGVyIHRoYXQgcHJlY2VkZXMKKyAgICAgICAgICAgICAgICAgICAgLy8gaXQgaXNuJ3QgYWxzbyBhIHZlcnRpY2FsIGJhcgorICAgICAgICAgICAgICAgICAgICBjYXNlICd8JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsYXN0QyA9PSAnfCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcigiRW1wdHkgYWx0ZXJuYXRpdmUiLCBwLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW5TdGFjay5lbXB0eSgpIHx8IGxhc3RPcGVuICE9ICcoJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKCJNaXNwbGFjZWQgfCIsIHAsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBjaGFyYWN0ZXIgaXMgYW55dGhpbmcgZWxzZSAoZXNjYXBlZCBjaGFyYWN0ZXJzIGFyZQorICAgICAgICAgICAgICAgICAgICAvLyBza2lwcGVkIGFuZCBkb24ndCBtYWtlIGl0IGhlcmUpLCBpdCdzIGFuIGVycm9yCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA+PSAnICcgJiYgYyA8ICdcdTAwN2YnICYmICFDaGFyYWN0ZXIuaXNMZXR0ZXIoYykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIUNoYXJhY3Rlci5pc0RpZ2l0KGMpICYmICFzYXdJbGxlZ2FsQ2hhcikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhd0lsbGVnYWxDaGFyID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbGxlZ2FsQ2hhclBvcyA9IHA7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbGFzdEMgPSBjOworICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0ZW1wUnVsZUxpc3Quc2l6ZSgpID09IDApIHsKKyAgICAgICAgICAgICAgICBlcnJvcigiTm8gdmFsaWQgcnVsZXMgaW4gZGVzY3JpcHRpb24iLCBwLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdGVtcFJ1bGVMaXN0OworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoaXMgZnVuY3Rpb24gcGVyZm9ybXMgdmFyaWFibGUtbmFtZSBzdWJzdGl0dXRpb25zLiAgRmlyc3QgaXQgZG9lcyBzeW50YXgKKyAgICAgICAgICogY2hlY2tpbmcgb24gdGhlIHZhcmlhYmxlLW5hbWUgZGVmaW5pdGlvbi4gIElmIGl0J3Mgc3ludGFjdGljYWxseSB2YWxpZCwgaXQKKyAgICAgICAgICogdGhlbiBnb2VzIHRocm91Z2ggdGhlIHJlbWFpbmRlciBvZiB0aGUgZGVzY3JpcHRpb24gYW5kIGRvZXMgYSBzaW1wbGUKKyAgICAgICAgICogZmluZC1hbmQtcmVwbGFjZSBvZiB0aGUgdmFyaWFibGUgbmFtZSB3aXRoIGl0cyB0ZXh0LiAgKFRoZSB2YXJpYWJsZSB0ZXh0CisgICAgICAgICAqIG11c3QgYmUgZW5jbG9zZWQgaW4gZWl0aGVyIFtdIG9yICgpIGZvciB0aGlzIHRvIHdvcmsuKQorICAgICAgICAgKi8KKyAgICAgICAgcHJvdGVjdGVkIFN0cmluZyBwcm9jZXNzU3Vic3RpdHV0aW9uKFN0cmluZyBzdWJzdGl0dXRpb25SdWxlLCBTdHJpbmcgZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRQb3MpIHsKKyAgICAgICAgICAgIC8vIGlzb2xhdGUgb3V0IHRoZSB0ZXh0IG9uIGVpdGhlciBzaWRlIG9mIHRoZSBlcXVhbHMgc2lnbgorICAgICAgICAgICAgU3RyaW5nIHJlcGxhY2U7CisgICAgICAgICAgICBTdHJpbmcgcmVwbGFjZVdpdGg7CisgICAgICAgICAgICBpbnQgZXF1YWxQb3MgPSBzdWJzdGl0dXRpb25SdWxlLmluZGV4T2YoJz0nKTsKKyAgICAgICAgICAgIGlmIChzdWJzdGl0dXRpb25SdWxlLmNoYXJBdCgwKSAhPSAnJCcpIHsKKyAgICAgICAgICAgICAgICBlcnJvcigiTWlzc2luZyAnJCcgb24gbGVmdC1oYW5kIHNpZGUgb2YgPSIsIHN0YXJ0UG9zLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXBsYWNlID0gc3Vic3RpdHV0aW9uUnVsZS5zdWJzdHJpbmcoMSwgZXF1YWxQb3MpOworICAgICAgICAgICAgcmVwbGFjZVdpdGggPSBzdWJzdGl0dXRpb25SdWxlLnN1YnN0cmluZyhlcXVhbFBvcyArIDEpOworCisgICAgICAgICAgICAvLyBjaGVjayB0byBzZWUgd2hldGhlciB0aGUgc3Vic3RpdHV0aW9uIG5hbWUgaXMgc29tZXRoaW5nIHdlJ3ZlIGRlY2xhcmVkCisgICAgICAgICAgICAvLyB0byBiZSAic3BlY2lhbCIuICBGb3IgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBpdHNlbGYsIHRoaXMgaXMgSUdOT1JFX1ZBUi4KKyAgICAgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gdGFrZXMgY2FyZSBvZiBhbnkgZXh0cmEgcHJvY2Vzc2luZyB0aGF0IGhhcyB0byBiZSBkb25lCisgICAgICAgICAgICAvLyB3aXRoICJzcGVjaWFsIiBzdWJzdGl0dXRpb24gbmFtZXMuCisgICAgICAgICAgICBoYW5kbGVTcGVjaWFsU3Vic3RpdHV0aW9uKHJlcGxhY2UsIHJlcGxhY2VXaXRoLCBzdGFydFBvcywgZGVzY3JpcHRpb24pOworCisgICAgICAgICAgICAvLyBwZXJmb3JtIHZhcmlvdXMgb3RoZXIgc3ludGF4IGNoZWNrcyBvbiB0aGUgcnVsZQorICAgICAgICAgICAgaWYgKHJlcGxhY2VXaXRoLmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgICAgICBlcnJvcigiTm90aGluZyBvbiByaWdodC1oYW5kIHNpZGUgb2YgPSIsIHN0YXJ0UG9zLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVwbGFjZS5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgZXJyb3IoIk5vdGhpbmcgb24gbGVmdC1oYW5kIHNpZGUgb2YgPSIsIHN0YXJ0UG9zLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIShyZXBsYWNlV2l0aC5jaGFyQXQoMCkgPT0gJ1snICYmIHJlcGxhY2VXaXRoLmNoYXJBdChyZXBsYWNlV2l0aC5sZW5ndGgoKSAtIDEpCisgICAgICAgICAgICAgICAgICAgID09ICddJykgJiYgIShyZXBsYWNlV2l0aC5jaGFyQXQoMCkgPT0gJygnICYmIHJlcGxhY2VXaXRoLmNoYXJBdCgKKyAgICAgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGgubGVuZ3RoKCkgLSAxKSA9PSAnKScpKSB7CisgICAgICAgICAgICAgICAgZXJyb3IoIklsbGVnYWwgcmlnaHQtaGFuZCBzaWRlIGZvciA9Iiwgc3RhcnRQb3MsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gbm93IGdvIHRocm91Z2ggdGhlIHJlc3Qgb2YgdGhlIGRlc2NyaXB0aW9uICh3aGljaCBoYXNuJ3QgYmVlbiBicm9rZW4gdXAKKyAgICAgICAgICAgIC8vIGludG8gc2VwYXJhdGUgcnVsZXMgeWV0KSBhbmQgcmVwbGFjZSBldmVyeSBvY2N1cnJlbmNlIG9mIHRoZQorICAgICAgICAgICAgLy8gc3Vic3RpdHV0aW9uIG5hbWUgd2l0aCB0aGUgc3Vic3RpdHV0aW9uIGJvZHkKKyAgICAgICAgICAgIHJlcGxhY2UgPSAiJCIgKyByZXBsYWNlOworICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZGVzY3JpcHRpb24uc3Vic3RyaW5nKDAsIHN0YXJ0UG9zKSk7CisgICAgICAgICAgICBpbnQgbGFzdFBvcyA9IHN0YXJ0UG9zOworICAgICAgICAgICAgaW50IHBvcyA9IGRlc2NyaXB0aW9uLmluZGV4T2YocmVwbGFjZSwgc3RhcnRQb3MpOworICAgICAgICAgICAgd2hpbGUgKHBvcyAhPSAtMSkgeworICAgICAgICAgICAgICAgIC8vIFtsaXVdIENoZWNrIHRoYXQgdGhlIHN0cmluZyB3ZSd2ZSBmb3VuZCBpc24ndCBhIHJlZGVmaW5pdGlvbgorICAgICAgICAgICAgICAgIC8vIG9mIHRoZSB2YXJpYWJsZS4KKyAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRpb24uY2hhckF0KHBvcy0xKSA9PSAnOycgJiYKKyAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24uY2hhckF0KHBvcyArIHJlcGxhY2UubGVuZ3RoKCkpID09ICc9JykgeworICAgICAgICAgICAgICAgICAgICBlcnJvcigiQXR0ZW1wdCB0byByZWRlZmluZSAiICsgcmVwbGFjZSwgcG9zLCBkZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZGVzY3JpcHRpb24uc3Vic3RyaW5nKGxhc3RQb3MsIHBvcykpOworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocmVwbGFjZVdpdGgpOworICAgICAgICAgICAgICAgIGxhc3RQb3MgPSBwb3MgKyByZXBsYWNlLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIHBvcyA9IGRlc2NyaXB0aW9uLmluZGV4T2YocmVwbGFjZSwgbGFzdFBvcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGRlc2NyaXB0aW9uLnN1YnN0cmluZyhsYXN0UG9zKSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVGhpcyBmdW5jdGlvbiBkZWZpbmVzIGEgcHJvdG9jb2wgZm9yIGhhbmRsaW5nIHN1YnN0aXR1dGlvbiBuYW1lcyB0aGF0CisgICAgICAgICAqIGFyZSAic3BlY2lhbCwiIGkuZS4sIHRoYXQgaGF2ZSBzb21lIHByb3BlcnR5IGJleW9uZCBqdXN0IGJlaW5nCisgICAgICAgICAqIHN1YnN0aXR1dGlvbnMuICBBdCB0aGUgUnVsZUJhc2VkQnJlYWtJdGVyYXRvciBsZXZlbCwgd2UgaGF2ZSBvbmUKKyAgICAgICAgICogc3BlY2lhbCBzdWJzdGl0dXRpb24gbmFtZSwgSUdOT1JFX1ZBUi4gIFN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIHRoaXMKKyAgICAgICAgICogZnVuY3Rpb24gdG8gYWRkIG1vcmUuICBBbnkgc3BlY2lhbCBwcm9jZXNzaW5nIHRoYXQgaGFzIHRvIGdvIG9uIGJleW9uZAorICAgICAgICAgKiB0aGF0IHdoaWNoIGlzIGRvbmUgYnkgdGhlIG5vcm1hbCBzdWJzdGl0dXRpb24tcHJvY2Vzc2luZyBjb2RlIGlzIGRvbmUKKyAgICAgICAgICogaGVyZS4KKyAgICAgICAgICovCisgICAgICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVNwZWNpYWxTdWJzdGl0dXRpb24oU3RyaW5nIHJlcGxhY2UsIFN0cmluZyByZXBsYWNlV2l0aCwKKyAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0UG9zLCBTdHJpbmcgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgICAgIC8vIGlmIHdlIGdldCBhIGRlZmluaXRpb24gZm9yIGEgc3Vic3RpdHV0aW9uIGNhbGxlZCBJR05PUkVfVkFSLCBpdCBkZWZpbmVzCisgICAgICAgICAgICAvLyB0aGUgaWdub3JlIGNoYXJhY3RlcnMgZm9yIHRoZSBpdGVyYXRvci4gIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgZXhwcmVzc2lvbgorICAgICAgICAgICAgLy8gaXMgYSBbXSBleHByZXNzaW9uLCBhbmQgaWYgaXQgaXMsIHBhcnNlIGl0IGFuZCBzdG9yZSB0aGUgY2hhcmFjdGVycyBvZmYKKyAgICAgICAgICAgIC8vIHRvIHRoZSBzaWRlLgorICAgICAgICAgICAgaWYgKHJlcGxhY2UuZXF1YWxzKElHTk9SRV9WQVIpKSB7CisgICAgICAgICAgICAgICAgaWYgKHJlcGxhY2VXaXRoLmNoYXJBdCgwKSA9PSAnKCcpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IoIklnbm9yZSBncm91cCBjYW4ndCBiZSBlbmNsb3NlZCBpbiAoIiwgc3RhcnRQb3MsIGRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWdub3JlQ2hhcnMgPSBuZXcgVW5pY29kZVNldChyZXBsYWNlV2l0aCwgZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoaXMgZnVuY3Rpb24gYnVpbGRzIHRoZSBjaGFyYWN0ZXIgY2F0ZWdvcnkgdGFibGUuICBPbiBlbnRyeSwKKyAgICAgICAgICogdGVtcFJ1bGVMaXN0IGlzIGEgdmVjdG9yIG9mIGJyZWFrIHJ1bGVzIHRoYXQgaGFzIGhhZCB2YXJpYWJsZSBuYW1lcyBzdWJzdGl0dXRlZC4KKyAgICAgICAgICogT24gZXhpdCwgdGhlIGNoYXJDYXRlZ29yeVRhYmxlIGRhdGEgbWVtYmVyIGhhcyBiZWVuIGluaXRpYWxpemVkIHRvIGhvbGQgdGhlCisgICAgICAgICAqIGNoYXJhY3RlciBjYXRlZ29yeSB0YWJsZSwgYW5kIHRlbXBSdWxlTGlzdCdzIHJ1bGVzIGhhdmUgYmVlbiBtdW5nZWQgdG8gY29udGFpbgorICAgICAgICAgKiBjaGFyYWN0ZXIgY2F0ZWdvcnkgbnVtYmVycyBldmVyeXdoZXJlIGEgbGl0ZXJhbCBjaGFyYWN0ZXIgb3IgYSBbXSBleHByZXNzaW9uCisgICAgICAgICAqIG9yaWdpbmFsbHkgb2NjdXJyZWQuCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgdm9pZCBidWlsZENoYXJDYXRlZ29yaWVzKFZlY3RvciB0ZW1wUnVsZUxpc3QpIHsKKyAgICAgICAgICAgIGludCBicmFja2V0TGV2ZWwgPSAwOworICAgICAgICAgICAgaW50IHAgPSAwOworICAgICAgICAgICAgaW50IGxpbmVOdW0gPSAwOworCisgICAgICAgICAgICAvLyBidWlsZCBoYXNoIHRhYmxlIG9mIGV2ZXJ5IGxpdGVyYWwgY2hhcmFjdGVyIG9yIFtdIGV4cHJlc3Npb24gaW4gdGhlIHJ1bGUgbGlzdAorICAgICAgICAgICAgLy8gYW5kIGRlcml2ZSBhIFVuaWNvZGVTZXQgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgY2hhcmFjdGVycyBlYWNoIHJlZmVycyB0bworICAgICAgICAgICAgZXhwcmVzc2lvbnMgPSBuZXcgSGFzaHRhYmxlKCk7CisgICAgICAgICAgICB3aGlsZSAobGluZU51bSA8IHRlbXBSdWxlTGlzdC5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbGluZSA9IChTdHJpbmcpKHRlbXBSdWxlTGlzdC5lbGVtZW50QXQobGluZU51bSkpOworICAgICAgICAgICAgICAgIHAgPSAwOworICAgICAgICAgICAgICAgIHdoaWxlIChwIDwgbGluZS5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBjaGFyIGMgPSBsaW5lLmNoYXJBdChwKTsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBza2lwIG92ZXIgYWxsIHN5bnRheCBjaGFyYWN0ZXJzIGV4Y2VwdCBbCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICcoJzogY2FzZSAnKSc6IGNhc2UgJyonOiBjYXNlICcuJzogY2FzZSAnLyc6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd8JzogY2FzZSAnOyc6IGNhc2UgJz8nOiBjYXNlICchJzogY2FzZSAnKyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBbLCBmaW5kIHRoZSBtYXRjaGluZyBdICh0YWtpbmcgbmVzdGVkIFtdIHBhaXJzIGludG8gYWNjb3VudCkKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBhZGQgdGhlIHdob2xlIGV4cHJlc3Npb24gdG8gdGhlIGV4cHJlc3Npb24gbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnWyc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHEgPSBwICsgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2JyYWNrZXRMZXZlbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAocSA8IGxpbmUubGVuZ3RoKCkgJiYgYnJhY2tldExldmVsICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IGxpbmUuY2hhckF0KHEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnWycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrYnJhY2tldExldmVsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ10nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWJyYWNrZXRMZXZlbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3E7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHByZXNzaW9ucy5nZXQobGluZS5zdWJzdHJpbmcocCwgcSkpID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbnMucHV0KGxpbmUuc3Vic3RyaW5nKHAsIHEpLCBuZXcgVW5pY29kZVNldChsaW5lLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic3RyaW5nKHAsIHEpLCBmYWxzZSkpOworLy9UZXN0LmRlYnVnUHJpbnRsbigiMS4gQWRkaW5nIGV4cHJlc3Npb246ICIgKyBsaW5lLnN1YnN0cmluZyhwLCBxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBxIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIFwgc2VxdWVuY2VzLCBqdXN0IG1vdmUgdG8gdGhlIG5leHQgY2hhcmFjdGVyIGFuZCB0cmVhdAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgYXMgYSBzaW5nbGUgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdcXCc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSBsaW5lLmNoYXJBdChwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBET04nVCBicmVhazsgZmFsbCB0aHJvdWdoIGludG8gImRlZmF1bHQiIGNsYXVzZQorCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3IgYW4gaXNvbGF0ZWQgc2luZ2xlIGNoYXJhY3RlciwgYWRkIGl0IHRvIHRoZSBleHByZXNzaW9uIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVNldCBzID0gbmV3IFVuaWNvZGVTZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmFkZChsaW5lLmNoYXJBdChwKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbnMucHV0KGxpbmUuc3Vic3RyaW5nKHAsIHAgKyAxKSwgcyk7CisvL1Rlc3QuZGVidWdQcmludGxuKCIyLiBBZGRpbmcgZXhwcmVzc2lvbjogIiArIGxpbmUuc3Vic3RyaW5nKHAsIHAgKyAxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICArK2xpbmVOdW07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGNyZWF0ZSB0aGUgdGVtcG9yYXJ5IGNhdGVnb3J5IHRhYmxlICh3aGljaCBpcyBhIHZlY3RvciBvZiBVbmljb2RlU2V0IG9iamVjdHMpCisgICAgICAgICAgICBjYXRlZ29yaWVzID0gbmV3IFZlY3RvcigpOworICAgICAgICAgICAgaWYgKGlnbm9yZUNoYXJzICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBjYXRlZ29yaWVzLmFkZEVsZW1lbnQoaWdub3JlQ2hhcnMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgY2F0ZWdvcmllcy5hZGRFbGVtZW50KG5ldyBVbmljb2RlU2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWdub3JlQ2hhcnMgPSBudWxsOworCisgICAgICAgICAgICAvLyB0aGlzIGlzIGEgaG9vayB0byBhbGxvdyBzdWJjbGFzc2VzIHRvIGFkZCBjYXRlZ29yaWVzIG9uIHRoZWlyIG93bgorICAgICAgICAgICAgbXVuZ2VFeHByZXNzaW9uTGlzdChleHByZXNzaW9ucyk7CisKKyAgICAgICAgICAgIC8vIERlcml2ZSB0aGUgY2hhcmFjdGVyIGNhdGVnb3JpZXMuICBHbyB0aHJvdWdoIHRoZSBleGlzdGluZyBjaGFyYWN0ZXIgY2F0ZWdvcmllcworICAgICAgICAgICAgLy8gbG9va2luZyBmb3Igb3ZlcmxhcC4gIEFueSB0aW1lIHRoZXJlJ3Mgb3ZlcmxhcCwgd2UgY3JlYXRlIGEgbmV3IGNoYXJhY3RlcgorICAgICAgICAgICAgLy8gY2F0ZWdvcnkgZm9yIHRoZSBjaGFyYWN0ZXJzIHRoYXQgb3ZlcmxhcHBlZCBhbmQgcmVtb3ZlIHRoZW0gZnJvbSB0aGVpciBvcmlnaW5hbAorICAgICAgICAgICAgLy8gY2F0ZWdvcnkuICBBdCB0aGUgZW5kLCBhbnkgY2hhcmFjdGVycyB0aGF0IGFyZSBsZWZ0IGluIHRoZSBleHByZXNzaW9uIGhhdmVuJ3QKKyAgICAgICAgICAgIC8vIGJlZW4gbWVudGlvbmVkIGluIGFueSBjYXRlZ29yeSwgc28gYW5vdGhlciBuZXcgY2F0ZWdvcnkgaXMgY3JlYXRlZCBmb3IgdGhlbS4KKyAgICAgICAgICAgIC8vIEZvciBleGFtcGxlLCBpZiB0aGUgZmlyc3QgZXhwcmVzc2lvbiBpcyBbYWJjXSwgdGhlbiBhLCBiLCBhbmQgYyB3aWxsIGJlIHBsYWNlZAorICAgICAgICAgICAgLy8gaW50byBhIHNpbmdsZSBjaGFyYWN0ZXIgY2F0ZWdvcnkuICBJZiB0aGUgbmV4dCBleHByZXNzaW9uIGlzIFtiY2RdLCB3ZSB3aWxsIGZpcnN0CisgICAgICAgICAgICAvLyByZW1vdmUgYiBhbmQgYyBmcm9tIHRoZWlyIGV4aXN0aW5nIGNhdGVnb3J5IChsZWF2aW5nIGEgYmVoaW5kKSwgY3JlYXRlIGEgbmV3CisgICAgICAgICAgICAvLyBjYXRlZ29yeSBmb3IgYiBhbmQgYywgYW5kIHRoZW4gY3JlYXRlIGFub3RoZXIgbmV3IGNhdGVnb3J5IGZvciBkICh3aGljaCBoYWRuJ3QKKyAgICAgICAgICAgIC8vIGJlZW4gbWVudGlvbmVkIGluIHRoZSBwcmV2aW91cyBleHByZXNzaW9uKS4KKyAgICAgICAgICAgIC8vIEF0IG5vIHRpbWUgc2hvdWxkIGEgY2hhcmFjdGVyIGV2ZXIgb2NjdXIgaW4gbW9yZSB0aGFuIG9uZSBjaGFyYWN0ZXIgY2F0ZWdvcnkuCisKKyAgICAgICAgICAgIC8vIGZvciBlYWNoIGV4cHJlc3Npb24gaW4gdGhlIGV4cHJlc3Npb25zIGxpc3QsIGRvLi4uCisgICAgICAgICAgICBFbnVtZXJhdGlvbiBpdGVyID0gZXhwcmVzc2lvbnMuZWxlbWVudHMoKTsKKyAgICAgICAgICAgIHdoaWxlIChpdGVyLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgd29ya2luZyBjaGFyIHNldCB0byB0aGUgY2hhcnMgaW4gdGhlIGN1cnJlbnQgZXhwcmVzc2lvbgorICAgICAgICAgICAgICAgIFVuaWNvZGVTZXQgd29yayA9IG5ldyBVbmljb2RlU2V0KChVbmljb2RlU2V0KWl0ZXIubmV4dEVsZW1lbnQoKSk7CisKKyAgICAgICAgICAgICAgICAvLyBmb3IgZWFjaCBjYXRlZ29yeSBpbiB0aGUgY2F0ZWdvcnkgbGlzdCwgZG8uLi4KKyAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gY2F0ZWdvcmllcy5zaXplKCkgLSAxOyAhd29yay5pc0VtcHR5KCkgJiYgaiA+IDA7IGotLSkgeworCisgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlJ3Mgb3ZlcmxhcCBiZXR3ZWVuIHRoZSBjdXJyZW50IHdvcmtpbmcgc2V0IG9mIGNoYXJzCisgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB0aGUgY3VycmVudCBjYXRlZ29yeS4uLgorICAgICAgICAgICAgICAgICAgICBVbmljb2RlU2V0IGNhdCA9IChVbmljb2RlU2V0KShjYXRlZ29yaWVzLmVsZW1lbnRBdChqKSk7CisgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVTZXQgb3ZlcmxhcCA9IGludGVyc2VjdGlvbih3b3JrLCBjYXQpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFvdmVybGFwLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGN1cnJlbnQgY2F0ZWdvcnkgaXMgbm90IGEgc3Vic2V0IG9mIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgICAgICAgICAgICAvLyB3b3JraW5nIHNldCBvZiBjaGFyYWN0ZXJzLCB0aGVuIHJlbW92ZSB0aGUgb3ZlcmxhcHBpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMgZnJvbSB0aGUgY3VycmVudCBjYXRlZ29yeSBhbmQgY3JlYXRlIGEgbmV3CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXRlZ29yeSBmb3IgdGhlbQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFvdmVybGFwLmVxdWFscyhjYXQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0LnJlbW92ZUFsbChvdmVybGFwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlZ29yaWVzLmFkZEVsZW1lbnQob3ZlcmxhcCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBhbHdheXMgcmVtb3ZlIHRoZSBvdmVybGFwcGluZyBjaGFyYWN0ZXJzIGZyb20gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdvcmtpbmcgc2V0IG9mIGNoYXJhY3RlcnMKKyAgICAgICAgICAgICAgICAgICAgICAgIHdvcmsucmVtb3ZlQWxsKG92ZXJsYXApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gaWYgdGhlcmUgYXJlIHN0aWxsIGNoYXJhY3RlcnMgbGVmdCBpbiB0aGUgd29ya2luZyBjaGFyIHNldCwKKyAgICAgICAgICAgICAgICAvLyBhZGQgYSBuZXcgY2F0ZWdvcnkgY29udGFpbmluZyB0aGVtCisgICAgICAgICAgICAgICAgaWYgKCF3b3JrLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgICAgICBjYXRlZ29yaWVzLmFkZEVsZW1lbnQod29yayk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyB3ZSBoYXZlIHRoZSBpZ25vcmUgY2hhcmFjdGVycyBzdG9yZWQgaW4gcG9zaXRpb24gMC4gIE1ha2UgYW4gZXh0cmEgcGFzcyB0aHJvdWdoCisgICAgICAgICAgICAvLyB0aGUgY2hhcmFjdGVyIGNhdGVnb3J5IGxpc3QgYW5kIHJlbW92ZSBhbnl0aGluZyBmcm9tIHRoZSBpZ25vcmUgbGlzdCB0aGF0IHNob3dzCisgICAgICAgICAgICAvLyB1cCBpbiBzb21lIG90aGVyIGNhdGVnb3J5CisgICAgICAgICAgICBVbmljb2RlU2V0IGFsbENoYXJzID0gbmV3IFVuaWNvZGVTZXQoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgY2F0ZWdvcmllcy5zaXplKCk7IGkrKykKKyAgICAgICAgICAgICAgICBhbGxDaGFycy5hZGRBbGwoKFVuaWNvZGVTZXQpKGNhdGVnb3JpZXMuZWxlbWVudEF0KGkpKSk7CisgICAgICAgICAgICBVbmljb2RlU2V0IGlnbm9yZUNoYXJzID0gKFVuaWNvZGVTZXQpKGNhdGVnb3JpZXMuZWxlbWVudEF0KDApKTsKKyAgICAgICAgICAgIGlnbm9yZUNoYXJzLnJlbW92ZUFsbChhbGxDaGFycyk7CisKKyAgICAgICAgICAgIC8vIG5vdyB0aGF0IHdlJ3ZlIGRlcml2ZWQgdGhlIGNoYXJhY3RlciBjYXRlZ29yaWVzLCBnbyBiYWNrIHRocm91Z2ggdGhlIGV4cHJlc3Npb24KKyAgICAgICAgICAgIC8vIGxpc3QgYW5kIHJlcGxhY2UgZWFjaCBVbmljb2RlU2V0IG9iamVjdCB3aXRoIGEgU3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGUKKyAgICAgICAgICAgIC8vIGNoYXJhY3RlciBjYXRlZ29yaWVzIHRoYXQgZXhwcmVzc2lvbiByZWZlcnMgdG8uICBUaGUgU3RyaW5nIGlzIGVuY29kZWQ6IGVhY2gKKyAgICAgICAgICAgIC8vIGNoYXJhY3RlciBpcyBhIGNoYXJhY3RlciBjYXRlZ29yeSBudW1iZXIgKHBsdXMgMHgxMDAgdG8gYXZvaWQgY29uZnVzaW5nIHRoZW0KKyAgICAgICAgICAgIC8vIHdpdGggc3ludGF4IGNoYXJhY3RlcnMgaW4gdGhlIHJ1bGUgZ3JhbW1hcikKKyAgICAgICAgICAgIGl0ZXIgPSBleHByZXNzaW9ucy5rZXlzKCk7CisgICAgICAgICAgICB3aGlsZSAoaXRlci5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgICAgIFN0cmluZyBrZXkgPSAoU3RyaW5nKWl0ZXIubmV4dEVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICBVbmljb2RlU2V0IGNzID0gKFVuaWNvZGVTZXQpZXhwcmVzc2lvbnMuZ2V0KGtleSk7CisgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIGNhdHMgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAgICAgICAgICAgICAvLyBmb3IgZWFjaCBjYXRlZ29yeS4uLgorICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAxOyBqIDwgY2F0ZWdvcmllcy5zaXplKCk7IGorKykgeworICAgICAgICAgICAgICAgICAgICBVbmljb2RlU2V0IGNhdCA9IG5ldyBVbmljb2RlU2V0KChVbmljb2RlU2V0KSBjYXRlZ29yaWVzLmVsZW1lbnRBdChqKSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgY3VycmVudCBleHByZXNzaW9uIGNvbnRhaW5zIGNoYXJhY3RlcnMgaW4gdGhhdCBjYXRlZ29yeS4uLgorICAgICAgICAgICAgICAgICAgICBpZiAoY3MuY29udGFpbnNBbGwoY2F0KSkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGVuIGFkZCB0aGUgZW5jb2RlZCBjYXRlZ29yeSBudW1iZXIgdG8gdGhlIFN0cmluZyBmb3IgdGhpcworICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhwcmVzc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgY2F0cy5hcHBlbmQoKGNoYXIpKDB4MTAwICsgaikpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNzLmVxdWFscyhjYXQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBvbmNlIHdlJ3ZlIGZpbmlzaGVkIGJ1aWxkaW5nIHRoZSBlbmNvZGVkIFN0cmluZyBmb3IgdGhpcyBleHByZXNzaW9uLAorICAgICAgICAgICAgICAgIC8vIHJlcGxhY2UgdGhlIFVuaWNvZGVTZXQgb2JqZWN0IHdpdGggaXQKKyAgICAgICAgICAgICAgICBleHByZXNzaW9ucy5wdXQoa2V5LCBjYXRzLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBhbmQgZmluYWxseSwgd2UgdHVybiB0aGUgdGVtcG9yYXJ5IGNhdGVnb3J5IHRhYmxlIGludG8gYSBwZXJtYW5lbnQgY2F0ZWdvcnkKKyAgICAgICAgICAgIC8vIHRhYmxlLCB3aGljaCBpcyBhIENvbXBhY3RCeXRlQXJyYXkuICh3ZSBza2lwIGNhdGVnb3J5IDAsIHdoaWNoIGJ5IGRlZmluaXRpb24KKyAgICAgICAgICAgIC8vIHJlZmVycyB0byBhbGwgY2hhcmFjdGVycyBub3QgbWVudGlvbmVkIHNwZWNpZmljYWxseSBpbiB0aGUgcnVsZXMpCisgICAgICAgICAgICBjaGFyQ2F0ZWdvcnlUYWJsZSA9IG5ldyBDb21wYWN0Qnl0ZUFycmF5KChieXRlKTApOworCisgICAgICAgICAgICAvLyBmb3IgZWFjaCBjYXRlZ29yeS4uLgorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjYXRlZ29yaWVzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgVW5pY29kZVNldCBjaGFycyA9IChVbmljb2RlU2V0KShjYXRlZ29yaWVzLmVsZW1lbnRBdChpKSk7CisgICAgICAgICAgICAgICAgaW50IG4gPSBjaGFycy5nZXRSYW5nZUNvdW50KCk7CisKKyAgICAgICAgICAgICAgICAvLyBnbyB0aHJvdWdoIHRoZSBjaGFyYWN0ZXIgcmFuZ2VzIGluIHRoZSBjYXRlZ29yeSBvbmUgYnkgb25lLi4uCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBuOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHNldCB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50cyBpbiB0aGUgQ29tcGFjdEFycmF5IGFjY29yZGluZ2x5CisgICAgICAgICAgICAgICAgICAgIGlmIChpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJDYXRlZ29yeVRhYmxlLnNldEVsZW1lbnRBdCgoY2hhciljaGFycy5nZXRSYW5nZVN0YXJ0KGopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKWNoYXJzLmdldFJhbmdlRW5kKGopLCAoYnl0ZSlpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8vIChjYXRlZ29yeSAwIGlzIHNwZWNpYWwtLSBpdCdzIHRoZSBoaWRpbmcgcGxhY2UgZm9yIHRoZSBpZ25vcmUKKyAgICAgICAgICAgICAgICAgICAgLy8gY2hhcmFjdGVycywgd2hvc2UgcmVhbCBjYXRlZ29yeSBudW1iZXIgaW4gdGhlIENvbXBhY3RBcnJheSBpcworICAgICAgICAgICAgICAgICAgICAvLyAtMSBbdGhpcyBpcyBiZWNhdXNlIGNhdGVnb3J5IDAgY29udGFpbnMgYWxsIGNoYXJhY3RlcnMgbm90CisgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpZmljYWxseSBtZW50aW9uZWQgYW55d2hlcmUgaW4gdGhlIHJ1bGVzXSApCisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgY2hhckNhdGVnb3J5VGFibGUuc2V0RWxlbWVudEF0KChjaGFyKWNoYXJzLmdldFJhbmdlU3RhcnQoaiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIpY2hhcnMuZ2V0UmFuZ2VFbmQoaiksIElHTk9SRSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIG9uY2Ugd2UndmUgcG9wdWxhdGVkIHRoZSBDb21wYWN0QXJyYXksIGNvbXBhY3QgaXQKKyAgICAgICAgICAgIGNoYXJDYXRlZ29yeVRhYmxlLmNvbXBhY3QoKTsKKworICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSBudW1DYXRlZ29yaWVzCisgICAgICAgICAgICBudW1DYXRlZ29yaWVzID0gY2F0ZWdvcmllcy5zaXplKCk7CisgICAgICAgIH0KKworICAgICAgICBwcm90ZWN0ZWQgdm9pZCBtdW5nZUV4cHJlc3Npb25MaXN0KEhhc2h0YWJsZSBleHByZXNzaW9ucykgeworICAgICAgICAgICAgLy8gZW1wdHkgaW4gdGhlIHBhcmVudCBjbGFzcy4gIFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgYSBob29rIGZvciBzdWJjbGFzc2VzCisgICAgICAgICAgICAvLyB0byBtZXNzIHdpdGggdGhlIGNoYXJhY3RlciBjYXRlZ29yeSB0YWJsZS4KKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGlzIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGJ1aWxkcyB0aGUgZm9yd2FyZCBzdGF0ZSB0YWJsZS4gIE1vc3Qgb2YgdGhlIHJlYWwKKyAgICAgICAgICogd29yayBpcyBkb25lIGluIHBhcnNlUnVsZSgpLCB3aGljaCBpcyBjYWxsZWQgb25jZSBmb3IgZWFjaCBydWxlIGluIHRoZQorICAgICAgICAgKiBkZXNjcmlwdGlvbi4KKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgdm9pZCBidWlsZFN0YXRlVGFibGUoVmVjdG9yIHRlbXBSdWxlTGlzdCkgeworICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSBvdXIgdGVtcG9yYXJ5IHN0YXRlIHRhYmxlLCBhbmQgZmlsbCBpdCB3aXRoIHR3byBzdGF0ZXM6CisgICAgICAgICAgICAvLyBzdGF0ZSAwIGlzIGEgZHVtbXkgc3RhdGUgdGhhdCBhbGxvd3Mgc3RhdGUgMSB0byBiZSB0aGUgc3RhcnRpbmcgc3RhdGUKKyAgICAgICAgICAgIC8vIGFuZCAwIHRvIHJlcHJlc2VudCAic3RvcCIuICBTdGF0ZSAxIGlzIGFkZGVkIGhlcmUgdG8gc2VlZCB0aGluZ3MKKyAgICAgICAgICAgIC8vIGJlZm9yZSB3ZSBzdGFydCBwYXJzaW5nCisgICAgICAgICAgICB0ZW1wU3RhdGVUYWJsZSA9IG5ldyBWZWN0b3IoKTsKKyAgICAgICAgICAgIHRlbXBTdGF0ZVRhYmxlLmFkZEVsZW1lbnQobmV3IHNob3J0W251bUNhdGVnb3JpZXMgKyAxXSk7CisgICAgICAgICAgICB0ZW1wU3RhdGVUYWJsZS5hZGRFbGVtZW50KG5ldyBzaG9ydFtudW1DYXRlZ29yaWVzICsgMV0pOworCisgICAgICAgICAgICAvLyBjYWxsIHBhcnNlUnVsZSgpIGZvciBldmVyeSBydWxlIGluIHRoZSBydWxlIGxpc3QgKGV4Y2VwdCB0aG9zZSB3aGljaAorICAgICAgICAgICAgLy8gc3RhcnQgd2l0aCAhLCB3aGljaCBhcmUgYWN0dWFsbHkgYmFja3dhcmRzLWl0ZXJhdGlvbiBydWxlcykKKyAgICAgICAgICAgIGludCBuID0gdGVtcFJ1bGVMaXN0LnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVtcFJ1bGVMaXN0LnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHJ1bGUgPSAoU3RyaW5nKXRlbXBSdWxlTGlzdC5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgICAgaWYgKHJ1bGUuY2hhckF0KDApICE9ICchJykgeworICAgICAgICAgICAgICAgICAgICBwYXJzZVJ1bGUocnVsZSwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBmaW5hbGx5LCB1c2UgZmluaXNoQnVpbGRpbmdTdGF0ZVRhYmxlKCkgdG8gbWluaW1pemUgdGhlIG51bWJlciBvZgorICAgICAgICAgICAgLy8gc3RhdGVzIGluIHRoZSB0YWJsZSBhbmQgcGVyZm9ybSBzb21lIG90aGVyIGNsZWFudXAgd29yaworICAgICAgICAgICAgZmluaXNoQnVpbGRpbmdTdGF0ZVRhYmxlKHRydWUpOworLyoKK1N5c3RlbS5vdXQucHJpbnQoIkM6XHQiKTsKK2ZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ2F0ZWdvcmllczsgaSsrKQorU3lzdGVtLm91dC5wcmludChJbnRlZ2VyLnRvU3RyaW5nKGkpICsgIlx0Iik7CitTeXN0ZW0ub3V0LnByaW50bG4oKTsgU3lzdGVtLm91dC5wcmludCgiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIpOworZm9yIChpbnQgaSA9IDA7IGkgPCBzdGF0ZVRhYmxlLmxlbmd0aDsgaSsrKSB7CitpZiAoaSAlIG51bUNhdGVnb3JpZXMgPT0gMCkgeworU3lzdGVtLm91dC5wcmludGxuKCk7CitpZiAoZW5kU3RhdGVzW2kgLyBudW1DYXRlZ29yaWVzXSkKK1N5c3RlbS5vdXQucHJpbnQoIioiKTsKK2Vsc2UKK1N5c3RlbS5vdXQucHJpbnQoIiAiKTsKK2lmIChsb29rYWhlYWRTdGF0ZXNbaSAvIG51bUNhdGVnb3JpZXNdKSB7CitTeXN0ZW0ub3V0LnByaW50KCIlIik7Cit9CitlbHNlCitTeXN0ZW0ub3V0LnByaW50KCIgIik7CitTeXN0ZW0ub3V0LnByaW50KEludGVnZXIudG9TdHJpbmcoaSAvIG51bUNhdGVnb3JpZXMpICsgIjpcdCIpOworfQoraWYgKHN0YXRlVGFibGVbaV0gPT0gMCkgU3lzdGVtLm91dC5wcmludCgiLlx0Iik7IGVsc2UgU3lzdGVtLm91dC5wcmludChJbnRlZ2VyLnRvU3RyaW5nKHN0YXRlVGFibGVbaV0pICsgIlx0Iik7Cit9CitTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyovCisgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGlzIGlzIHdoZXJlIG1vc3Qgb2YgdGhlIHdvcmsgcmVhbGx5IGhhcHBlbnMuICBUaGlzIHJvdXRpbmUgcGFyc2VzIGEgc2luZ2xlCisgICAgICAgICAqIHJ1bGUgaW4gdGhlIHJ1bGUgZGVzY3JpcHRpb24sIGFkZGluZyBhbmQgbW9kaWZ5aW5nIHN0YXRlcyBpbiB0aGUgc3RhdGUKKyAgICAgICAgICogdGFibGUgYWNjb3JkaW5nIHRvIHRoZSBuZXcgZXhwcmVzc2lvbi4gIFRoZSBzdGF0ZSB0YWJsZSBpcyBrZXB0IGRldGVybWluaXN0aWMKKyAgICAgICAgICogdGhyb3VnaG91dCB0aGUgd2hvbGUgb3BlcmF0aW9uLCBhbHRob3VnaCBzb21lIHVnbHkgcG9zdHByb2Nlc3NpbmcgaXMgbmVlZGVkCisgICAgICAgICAqIHRvIGhhbmRsZSB0aGUgKj8gdG9rZW4uCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIHZvaWQgcGFyc2VSdWxlKFN0cmluZyBydWxlLCBib29sZWFuIGZvcndhcmQpIHsKKyAgICAgICAgICAgIC8vIGFsZ29yaXRobSBub3RlczoKKyAgICAgICAgICAgIC8vICAgLSBUaGUgYmFzaWMgaWRlYSBoZXJlIGlzIHRvIHJlYWQgc3VjY2Vzc2l2ZSBjaGFyYWN0ZXItY2F0ZWdvcnkgZ3JvdXBzCisgICAgICAgICAgICAvLyAgIGZyb20gdGhlIGlucHV0IHN0cmluZy4gIEZvciBlYWNoIGdyb3VwLCB5b3UgY3JlYXRlIGEgc3RhdGUgYW5kIHBvaW50CisgICAgICAgICAgICAvLyAgIHRoZSBhcHByb3ByaWF0ZSBlbnRyaWVzIGluIHRoZSBwcmV2aW91cyBzdGF0ZSB0byBpdC4gIFRoaXMgcHJvZHVjZXMgYQorICAgICAgICAgICAgLy8gICBzdHJhaWdodCBsaW5lIGZyb20gdGhlIHN0YXJ0IHN0YXRlIHRvIHRoZSBlbmQgc3RhdGUuICBUaGUgPywgKywgKiwgYW5kICh8KQorICAgICAgICAgICAgLy8gICBpZGlvbXMgcHJvZHVjZSBicmFuY2hlcyBpbiB0aGlzIHN0cmFpZ2h0IGxpbmUuICBUaGVzZSBicmFuY2hlcyAoc3RhdGVzCisgICAgICAgICAgICAvLyAgIHRoYXQgY2FuIHRyYW5zaXRpb24gdG8gbW9yZSB0aGFuIG9uZSBvdGhlciBzdGF0ZSkgYXJlIGNhbGxlZCAiZGVjaXNpb24KKyAgICAgICAgICAgIC8vICAgcG9pbnRzLiIgIEEgbGlzdCBvZiBkZWNpc2lvbiBwb2ludHMgaXMga2VwdC4gIFRoaXMgY29udGFpbnMgYSBsaXN0IG9mCisgICAgICAgICAgICAvLyAgIGFsbCBzdGF0ZXMgdGhhdCBjYW4gdHJhbnNpdGlvbiB0byB0aGUgbmV4dCBzdGF0ZSB0byBiZSBjcmVhdGVkLiAgRm9yIGEKKyAgICAgICAgICAgIC8vICAgc3RyYWlnaHQgbGluZSBwcm9ncmVzc2lvbiwgdGhlIG9ubHkgdGhpbmcgaW4gdGhlIGRlY2lzaW9uLXBvaW50IGxpc3QgaXMKKyAgICAgICAgICAgIC8vICAgdGhlIGN1cnJlbnQgc3RhdGUuICBCdXQgaWYgdGhlcmUncyBhIGJyYW5jaCwgdGhlIGRlY2lzaW9uLXBvaW50IGxpc3QKKyAgICAgICAgICAgIC8vICAgd2lsbCBjb250YWluIGFsbCBvZiB0aGUgYmVnaW5uaW5nIHBvaW50cyBvZiB0aGUgYnJhbmNoIHdoZW4gdGhlIG5leHQKKyAgICAgICAgICAgIC8vICAgc3RhdGUgdG8gYmUgY3JlYXRlZCByZXByZXNlbnRzIHRoZSBlbmQgcG9pbnQgb2YgdGhlIGJyYW5jaC4gIEEgc3RhY2sgaXMKKyAgICAgICAgICAgIC8vICAgdXNlZCB0byBzYXZlIGRlY2lzaW9uIHBvaW50IGxpc3RzIGluIHRoZSBwcmVzZW5jZSBvZiBuZXN0ZWQgcGFyZW50aGVzZXMKKyAgICAgICAgICAgIC8vICAgYW5kIHRoZSBsaWtlLiAgRm9yIGV4YW1wbGUsIHdoZW4gYSB7IGlzIGVuY291bnRlcmVkLCB0aGUgY3VycmVudCBkZWNpc2lvbgorICAgICAgICAgICAgLy8gICBwb2ludCBsaXN0IGlzIHNhdmVkIG9uIHRoZSBzdGFjayBhbmQgcmVzdG9yZWQgd2hlbiB0aGUgY29ycmVzcG9uZGluZyB9CisgICAgICAgICAgICAvLyAgIGlzIGVuY291bnRlcmVkLiAgVGhpcyB3YXksIGFmdGVyIHRoZSB9IGlzIHJlYWQsIHRoZSBkZWNpc2lvbiBwb2ludCBsaXN0CisgICAgICAgICAgICAvLyAgIHdpbGwgY29udGFpbiBib3RoIHRoZSBzdGF0ZSByaWdodCBiZWZvcmUgdGhlIH0gX2FuZF8gdGhlIHN0YXRlIGJlZm9yZQorICAgICAgICAgICAgLy8gICB0aGUgd2hvbGUge30gZXhwcmVzc2lvbi4gIEJvdGggb2YgdGhlc2Ugc3RhdGVzIGNhbiB0cmFuc2l0aW9uIHRvIHRoZSBuZXh0CisgICAgICAgICAgICAvLyAgIHN0YXRlIGFmdGVyIHRoZSB7fSBleHByZXNzaW9uLgorICAgICAgICAgICAgLy8gICAtIG9uZSBjb21wbGljYXRpb24gYXJpc2VzIHdoZW4gd2UgaGF2ZSB0byBzdGFtcCBhIHRyYW5zaXRpb24gdmFsdWUgaW50bworICAgICAgICAgICAgLy8gICBhbiBhcnJheSBjZWxsIHRoYXQgYWxyZWFkeSBjb250YWlucyBvbmUuICBUaGUgdXBkYXRlU3RhdGVUYWJsZSgpIGFuZAorICAgICAgICAgICAgLy8gICBtZXJnZVN0YXRlcygpIGZ1bmN0aW9ucyBoYW5kbGUgdGhpcyBjYXNlLiAgVGhlaXIgYmFzaWMgYXBwcm9hY2ggaXMgdG8KKyAgICAgICAgICAgIC8vICAgY3JlYXRlIGEgbmV3IHN0YXRlIHRoYXQgY29tYmluZXMgdGhlIHR3byBzdGF0ZXMgdGhhdCBjb25mbGljdCBhbmQgcG9pbnQKKyAgICAgICAgICAgIC8vICAgYXQgaXQgd2hlbiBuZWNlc3NhcnkuICBUaGlzIGhhcHBlbnMgcmVjdXJzaXZlbHksIHNvIGlmIHRoZSBtZXJnZWQgc3RhdGVzCisgICAgICAgICAgICAvLyAgIGFsc28gY29uZmxpY3QsIHRoZXkncmUgcmVzb2x2ZWQgaW4gdGhlIHNhbWUgd2F5LCBhbmQgc28gb24uICBUaGVyZSBhcmUKKyAgICAgICAgICAgIC8vICAgYSBudW1iZXIgb2YgdGVzdHMgYWltZWQgYXQgcHJldmVudGluZyBpbmZpbml0ZSByZWN1cnNpb24uCisgICAgICAgICAgICAvLyAgIC0gYW5vdGhlciBjb21wbGljYXRpb24gYXJpc2VzIHdpdGggcmVwZWF0aW5nIGNoYXJhY3RlcnMuICBJdCdzIHNvbWV3aGF0CisgICAgICAgICAgICAvLyAgIGFtYmlndW91cyB3aGV0aGVyIHRoZSB1c2VyIHdhbnRzIGEgZ3JlZWR5IG9yIG5vbi1ncmVlZHkgbWF0Y2ggaW4gdGhlc2UgY2FzZXMuCisgICAgICAgICAgICAvLyAgIChlLmcuLCB3aGV0aGVyICJbYS16XSphYmMiIG1lYW5zIHRoZSBTSE9SVEVTVCBzZXF1ZW5jZSBvZiBsZXR0ZXJzIGVuZGluZyBpbgorICAgICAgICAgICAgLy8gICAiYWJjIiBvciB0aGUgTE9OR0VTVCBzZXF1ZW5jZSBvZiBsZXR0ZXJzIGVuZGluZyBpbiAiYWJjIi4gIFdlJ3ZlIGFkb3B0ZWQKKyAgICAgICAgICAgIC8vICAgdGhlICo/IHRvIG1lYW4gInNob3J0ZXN0IiBhbmQgKiBieSBpdHNlbGYgdG8gbWVhbiAibG9uZ2VzdCIuICAoWW91IGdldCB0aGUKKyAgICAgICAgICAgIC8vICAgc2FtZSByZXN1bHQgd2l0aCBib3RoIGlmIHRoZXJlJ3Mgbm8gb3ZlcmxhcCBiZXR3ZWVuIHRoZSByZXBlYXRpbmcgY2hhcmFjdGVyCisgICAgICAgICAgICAvLyAgIGdyb3VwIGFuZCB0aGUgZ3JvdXAgaW1tZWRpYXRlbHkgZm9sbG93aW5nIGl0LikgIEhhbmRsaW5nIHRoZSAqPyB0b2tlbiBpcworICAgICAgICAgICAgLy8gICByYXRoZXIgY29tcGxpY2F0ZWQgYW5kIGludm9sdmVzIGtlZXBpbmcgdHJhY2sgb2Ygd2hldGhlciBhIHN0YXRlIG5lZWRzIHRvCisgICAgICAgICAgICAvLyAgIGJlIG1lcmdlZCAoYXMgZGVzY3JpYmVkIGFib3ZlKSBvciBtZXJlbHkgb3ZlcndyaXR0ZW4gd2hlbiB5b3UgdXBkYXRlIG9uZSBvZgorICAgICAgICAgICAgLy8gICBpdHMgY2VsbHMsIGFuZCBjb3B5aW5nIHRoZSBjb250ZW50cyBvZiBhIHN0YXRlIHRoYXQgbG9vcHMgd2l0aCBhICo/IHRva2VuCisgICAgICAgICAgICAvLyAgIGludG8gc29tZSBvZiB0aGUgc3RhdGVzIHRoYXQgZm9sbG93IGl0IGFmdGVyIHRoZSByZXN0IG9mIHRoZSB0YWJsZS1idWlsZGluZworICAgICAgICAgICAgLy8gICBwcm9jZXNzIGlzIGNvbXBsZXRlICgiYmFja2ZpbGxpbmciKS4KKyAgICAgICAgICAgIC8vIGltcGxlbWVudGF0aW9uIG5vdGVzOgorICAgICAgICAgICAgLy8gICAtIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyBzeW50YXggY2hlY2tpbmcgaGFzIGJlZW4gcGVyZm9ybWVkIG9uIHRoZSBpbnB1dCBzdHJpbmcKKyAgICAgICAgICAgIC8vICAgcHJpb3IgdG8gaXRzIGJlaW5nIHBhc3NlZCBpbiBoZXJlLiAgSXQgYXNzdW1lcyB0aGF0IHBhcmVudGhlc2VzIGFyZQorICAgICAgICAgICAgLy8gICBiYWxhbmNlZCwgYWxsIGxpdGVyYWwgY2hhcmFjdGVycyBhcmUgZW5jbG9zZWQgaW4gW10gYW5kIHR1cm5lZCBpbnRvIGNhdGVnb3J5CisgICAgICAgICAgICAvLyAgIG51bWJlcnMsIHRoYXQgdGhlcmUgYXJlIG5vIGlsbGVnYWwgY2hhcmFjdGVycyBvciBjaGFyYWN0ZXIgc2VxdWVuY2VzLCBhbmQgc28KKyAgICAgICAgICAgIC8vICAgb24uICBWaW9sYXRpb24gb2YgdGhlc2UgaW52YXJpYW50cyB3aWxsIGxlYWQgdG8gdW5kZWZpbmVkIGJlaGF2aW9yLgorICAgICAgICAgICAgLy8gICAtIEl0J2QgcHJvYmFibHkgYmUgYmV0dGVyIHRvIHVzZSBsaW5rZWQgbGlzdHMgcmF0aGVyIHRoYW4gVmVjdG9yIGFuZCBTdGFjaworICAgICAgICAgICAgLy8gICB0byBtYWludGFpbiB0aGUgZGVjaXNpb24gcG9pbnQgbGlzdCBhbmQgc3RhY2suICBJIHdlbnQgZm9yIHNpbXBsaWNpdHkgaW4KKyAgICAgICAgICAgIC8vICAgdGhpcyBpbml0aWFsIGltcGxlbWVudGF0aW9uLiAgSWYgcGVyZm9ybWFuY2UgaXMgY3JpdGljYWwgZW5vdWdoLCB3ZSBjYW4gZ28KKyAgICAgICAgICAgIC8vICAgYmFjayBhbmQgZml4IHRoaXMgbGF0ZXIuCisgICAgICAgICAgICAvLyAgIC1UaGVyZSBhcmUgYSBudW1iZXIgb2YgaW1wb3J0YW50IGxpbWl0YXRpb25zIG9uIHRoZSAqPyB0b2tlbi4gIEl0IGRvZXMgbm90IHdvcmsKKyAgICAgICAgICAgIC8vICAgcmlnaHQgd2hlbiBmb2xsb3dlZCBieSBhIHJlcGVhdGluZyBjaGFyYWN0ZXIgc2VxdWVuY2UgKGUuZy4sICIuKj8oYWJjKSoiKQorICAgICAgICAgICAgLy8gICAoYWx0aG91Z2ggaXQgZG9lcyB3b3JrIHJpZ2h0IHdoZW4gZm9sbG93ZWQgYnkgYSBzaW5nbGUgcmVwZWF0aW5nIGNoYXJhY3RlcikuCisgICAgICAgICAgICAvLyAgIEl0IHdpbGwgbm90IGFsd2F5cyB3b3JrIHJpZ2h0IHdoZW4gbmVzdGVkIGluIHBhcmVudGhlc2VzIG9yIGJyYWNlcyAoYWx0aG91Z2gKKyAgICAgICAgICAgIC8vICAgc29tZXRpbWVzIGl0IHdpbGwpLiAgSXQgYWxzbyB3aWxsIG5vdCB3b3JrIHJpZ2h0IGlmIHRoZSBncm91cCBvZiByZXBlYXRpbmcKKyAgICAgICAgICAgIC8vICAgY2hhcmFjdGVycyBhbmQgdGhlIGdyb3VwIG9mIGNoYXJhY3RlcnMgdGhhdCBmb2xsb3dzIG92ZXJsYXAgcGFydGlhbGx5CisgICAgICAgICAgICAvLyAgIChlLmcuLCAiW2EtZ10qP1tlLWpdIikuICBOb25lIG9mIHRoZXNlIGNhcGFiaWxpdGVzIHdhcyBkZWVtZWQgbmVjZXNzYXJ5IGZvcgorICAgICAgICAgICAgLy8gICBkZXNjcmliaW5nIGJyZWFraW5nIHJ1bGVzIHdlIGtub3cgYWJvdXQsIHNvIHdlIGxlZnQgdGhlbSBvdXQgZm9yCisgICAgICAgICAgICAvLyAgIGV4cGVkaXRpb3VzbmVzcy4KKyAgICAgICAgICAgIC8vICAgLSBSdWxlcyBzdWNoIGFzICJbYS16XSo/YWJjOyIgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzICJbYS16XSo/YWEqYmM7Ii0tCisgICAgICAgICAgICAvLyAgIHRoYXQgaXMsIGlmIHRoZSBzdHJpbmcgZW5kcyBpbiAiYWFhYWJjIiwgdGhlIGJyZWFrIHdpbGwgZ28gYmVmb3JlIHRoZSBmaXJzdAorICAgICAgICAgICAgLy8gICAiYSIgcmF0aGVyIHRoYW4gdGhlIGxhc3Qgb25lLiAgQm90aCBvZiB0aGVzZSBhcmUgbGltaXRhdGlvbnMgaW4gdGhlIGRlc2lnbgorICAgICAgICAgICAgLy8gICBvZiBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIGFuZCBub3QgbGltaXRhdGlvbnMgb2YgdGhlIHJ1bGUgcGFyc2VyLgorCisgICAgICAgICAgICBpbnQgcCA9IDA7CisgICAgICAgICAgICBpbnQgY3VycmVudFN0YXRlID0gMTsgICAvLyBkb24ndCB1c2Ugc3RhdGUgbnVtYmVyIDA7IDAgbWVhbnMgInN0b3AiCisgICAgICAgICAgICBpbnQgbGFzdFN0YXRlID0gY3VycmVudFN0YXRlOworICAgICAgICAgICAgU3RyaW5nIHBlbmRpbmdDaGFycyA9ICIiOworCisgICAgICAgICAgICBkZWNpc2lvblBvaW50U3RhY2sgPSBuZXcgU3RhY2soKTsKKyAgICAgICAgICAgIGRlY2lzaW9uUG9pbnRMaXN0ID0gbmV3IFZlY3RvcigpOworICAgICAgICAgICAgbG9vcGluZ1N0YXRlcyA9IG5ldyBWZWN0b3IoKTsKKyAgICAgICAgICAgIHN0YXRlc1RvQmFja2ZpbGwgPSBuZXcgVmVjdG9yKCk7CisKKyAgICAgICAgICAgIHNob3J0W10gc3RhdGU7CisgICAgICAgICAgICBib29sZWFuIHNhd0Vhcmx5QnJlYWsgPSBmYWxzZTsKKworICAgICAgICAgICAgLy8gaWYgd2UncmUgYWRkaW5nIHJ1bGVzIHRvIHRoZSBiYWNrd2FyZCBzdGF0ZSB0YWJsZSwgbWFyayB0aGUgaW5pdGlhbCBzdGF0ZQorICAgICAgICAgICAgLy8gYXMgYSBsb29waW5nIHN0YXRlCisgICAgICAgICAgICBpZiAoIWZvcndhcmQpIHsKKyAgICAgICAgICAgICAgICBsb29waW5nU3RhdGVzLmFkZEVsZW1lbnQobmV3IEludGVnZXIoMSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBwdXQgdGhlIGN1cnJlbnQgc3RhdGUgb24gdGhlIGRlY2lzaW9uIHBvaW50IGxpc3QgYmVmb3JlIHdlIHN0YXJ0CisgICAgICAgICAgICBkZWNpc2lvblBvaW50TGlzdC5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKGN1cnJlbnRTdGF0ZSkpOyAvLyB3ZSB3YW50IGN1cnJlbnRTdGF0ZSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmUgMSBoZXJlLi4uCisgICAgICAgICAgICBjdXJyZW50U3RhdGUgPSB0ZW1wU3RhdGVUYWJsZS5zaXplKCkgLSAxOyAgIC8vIGJ1dCBhZnRlciB0aGF0LCB3ZSB3YW50IGl0IHRvIGJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEgbGVzcyB0aGFuIHRoZSBzdGF0ZSBudW1iZXIgb2YgdGhlIG5leHQgc3RhdGUKKyAgICAgICAgICAgIHdoaWxlIChwIDwgcnVsZS5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIGNoYXIgYyA9IHJ1bGUuY2hhckF0KHApOworICAgICAgICAgICAgICAgIGNsZWFyTG9vcGluZ1N0YXRlcyA9IGZhbHNlOworCisgICAgICAgICAgICAgICAgLy8gdGhpcyBzZWN0aW9uIGhhbmRsZXMgbGl0ZXJhbCBjaGFyYWN0ZXJzLCBlc2NhcGVkIGNoYXJhY3RlcnMgKHdoaWNoIGFyZQorICAgICAgICAgICAgICAgIC8vIGVmZmVjdGl2ZWx5IGxpdGVyYWwgY2hhcmFjdGVycyB0b28pLCB0aGUgLiB0b2tlbiwgYW5kIFtdIGV4cHJlc3Npb25zCisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1snCisgICAgICAgICAgICAgICAgICAgIHx8IGMgPT0gJ1xcJworICAgICAgICAgICAgICAgICAgICB8fCBDaGFyYWN0ZXIuaXNMZXR0ZXIoYykKKyAgICAgICAgICAgICAgICAgICAgfHwgQ2hhcmFjdGVyLmlzRGlnaXQoYykKKyAgICAgICAgICAgICAgICAgICAgfHwgYyA8ICcgJworICAgICAgICAgICAgICAgICAgICB8fCBjID09ICcuJworICAgICAgICAgICAgICAgICAgICB8fCBjID49ICdcdTAwN2YnKSB7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2UncmUgbm90IG9uIGEgcGVyaW9kLCBpc29sYXRlIHRoZSBleHByZXNzaW9uIGFuZCBsb29rIHVwCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjb3JyZXNwb25kaW5nIGNhdGVnb3J5IGxpc3QKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgIT0gJy4nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcSA9IHA7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHdlJ3JlIG9uIGEgYmFja3NsYXNoLCB0aGUgZXhwcmVzc2lvbiBpcyB0aGUgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciB0aGUgYmFja3NsYXNoCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXFwnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcSA9IHAgKyAyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2UncmUgb24gYW4gb3BlbmluZyBicmFja2V0LCBzY2FuIHRvIHRoZSBjbG9zaW5nIGJyYWNrZXQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGlzb2xhdGUgdGhlIGV4cHJlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1snKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJyYWNrZXRMZXZlbCA9IDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGJyYWNrZXRMZXZlbCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gcnVsZS5jaGFyQXQocSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICdbJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyticmFja2V0TGV2ZWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnXScpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tYnJhY2tldExldmVsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1xcJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrcTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlLCB0aGUgZXhwcmVzc2lvbiBpcyBqdXN0IHRoZSBjaGFyYWN0ZXIgaXRzZWxmCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBxID0gcCArIDE7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvb2sgdXAgdGhlIGNhdGVnb3J5IGxpc3QgZm9yIHRoZSBleHByZXNzaW9uIGFuZCBzdG9yZSBpdAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW4gcGVuZGluZ0NoYXJzCisgICAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nQ2hhcnMgPSAoU3RyaW5nKWV4cHJlc3Npb25zLmdldChydWxlLnN1YnN0cmluZyhwLCBxKSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkdmFuY2UgdGhlIGN1cnJlbnQgcG9zaXRpb24gcGFzdCB0aGUgZXhwcmVzc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHEgLSAxOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gaWYgdGhlIGNoYXJhY3RlciB3ZSdyZSBvbiBpcyBhIHBlcmlvZCwgd2UgZW5kIHVwIGRvd24gaGVyZQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCByb3dOdW0gPSAoKEludGVnZXIpZGVjaXNpb25Qb2ludExpc3QubGFzdEVsZW1lbnQoKSkuaW50VmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gKHNob3J0W10pdGVtcFN0YXRlVGFibGUuZWxlbWVudEF0KHJvd051bSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBwZXJpb2QgaXMgZm9sbG93ZWQgYnkgYW4gYXN0ZXJpc2ssIHRoZW4ganVzdCBzZXQgdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXRlIHRvIGxvb3AgYmFjayBvbiBpdHNlbGYKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwICsgMSA8IHJ1bGUubGVuZ3RoKCkgJiYgcnVsZS5jaGFyQXQocCArIDEpID09ICcqJyAmJiBzdGF0ZVswXSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25Qb2ludExpc3QuYWRkRWxlbWVudChuZXcgSW50ZWdlcihzdGF0ZVswXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlbmRpbmdDaGFycyA9ICIiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocCArIDEgPCBydWxlLmxlbmd0aCgpICYmIHJ1bGUuY2hhckF0KHAgKyAxKSA9PSAnPycpIHsKKy8vU3lzdGVtLm91dC5wcmludGxuKCJTYXcgKj8iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0TG9vcGluZ1N0YXRlcyhkZWNpc2lvblBvaW50TGlzdCwgZGVjaXNpb25Qb2ludExpc3QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorLy9TeXN0ZW0ub3V0LnByaW50bG4oIlNhdyAuKiIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UsIGZhYnJpY2F0ZSBhIGNhdGVnb3J5IGxpc3QgKCJwZW5kaW5nQ2hhcnMiKSB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVyeSBjYXRlZ29yeSBpbiBpdAorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHRlbXAgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DYXRlZ29yaWVzOyBpKyspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAuYXBwZW5kKChjaGFyKShpICsgMHgxMDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nQ2hhcnMgPSB0ZW1wLnRvU3RyaW5nKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyB3ZSdsbCBlbmQgdXAgaW4gaGVyZSBmb3IgYWxsIGV4cHJlc3Npb25zIGV4Y2VwdCBmb3IgLiosIHdoaWNoIGlzCisgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwtY2FzZWQgYWJvdmUKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBlbmRpbmdDaGFycy5sZW5ndGgoKSAhPSAwKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBleHByZXNzaW9uIGlzIGZvbGxvd2VkIGJ5IGFuIGFzdGVyaXNrIG9yIGEgcXVlc3Rpb24gbWFyaywKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vICB0aGVuIHB1c2ggYSBjb3B5IG9mIHRoZSBjdXJyZW50IGRlY2lzaW9uIHBvaW50IGxpc3Qgb250byB0aGUgc3RhY2sKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwICsgMSA8IHJ1bGUubGVuZ3RoKCkgJiYgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUuY2hhckF0KHAgKyAxKSA9PSAnKicgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlLmNoYXJBdChwICsgMSkgPT0gJz8nCisgICAgICAgICAgICAgICAgICAgICAgICApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25Qb2ludFN0YWNrLnB1c2goZGVjaXNpb25Qb2ludExpc3QuY2xvbmUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBhIG5ldyBzdGF0ZSwgYWRkIGl0IHRvIHRoZSBsaXN0IG9mIHN0YXRlcyB0byBiYWNrZmlsbAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2UgaGF2ZSBsb29waW5nIHN0YXRlcyB0byB3b3JyeSBhYm91dCwgc2V0IGl0cyAiZG9uJ3QgbWFrZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWUgYW4gYWNjZXB0aW5nIHN0YXRlIiBmbGFnIGlmIHdlJ3ZlIHNlZW4gYSBzbGFzaCwgYW5kIGFkZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgdG8gdGhlIGVuZCBvZiB0aGUgc3RhdGUgdGFibGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBuZXdTdGF0ZSA9IHRlbXBTdGF0ZVRhYmxlLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb29waW5nU3RhdGVzLnNpemUoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVzVG9CYWNrZmlsbC5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKG5ld1N0YXRlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IG5ldyBzaG9ydFtudW1DYXRlZ29yaWVzICsgMV07CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc2F3RWFybHlCcmVhaykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlW251bUNhdGVnb3JpZXNdID0gRE9OVF9MT09QX0ZMQUc7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wU3RhdGVUYWJsZS5hZGRFbGVtZW50KHN0YXRlKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlIGV2ZXJ5Ym9keSBpbiB0aGUgZGVjaXNpb24gcG9pbnQgbGlzdCB0byBwb2ludCB0bworICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG5ldyBzdGF0ZSAodGhpcyBhbHNvIHBlcmZvcm1zIGFsbCB0aGUgcmVjb25jaWxpYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5lZWRlZCB0byBtYWtlIHRoZSB0YWJsZSBkZXRlcm1pbmlzdGljKSwgdGhlbiBjbGVhciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlY2lzaW9uIHBvaW50IGxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlVGFibGUoZGVjaXNpb25Qb2ludExpc3QsIHBlbmRpbmdDaGFycywgKHNob3J0KW5ld1N0YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uUG9pbnRMaXN0LnJlbW92ZUFsbEVsZW1lbnRzKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZCBhbGwgc3RhdGVzIGNyZWF0ZWQgc2luY2UgdGhlIGxhc3QgbGl0ZXJhbCBjaGFyYWN0ZXIgd2UndmUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlZW4gdG8gdGhlIGRlY2lzaW9uIHBvaW50IGxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RTdGF0ZSA9IGN1cnJlbnRTdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK2N1cnJlbnRTdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvblBvaW50TGlzdC5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKGN1cnJlbnRTdGF0ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoY3VycmVudFN0YXRlICsgMSA8IHRlbXBTdGF0ZVRhYmxlLnNpemUoKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBhICogb3IgYSArIGRlbm90ZXMgYSByZXBlYXRpbmcgY2hhcmFjdGVyIG9yIGdyb3VwLCBhbmQgYSA/IGRlbm90ZXMgYW4KKyAgICAgICAgICAgICAgICAvLyBvcHRpb25hbCBjaGFyYWN0ZXIgZ3JvdXAuICgqLCArIGFuZCA/IGFmdGVyICgpIGFyZSBoYW5kbGVkIHNlcGFyYXRlbHkgYmVsb3cuKQorICAgICAgICAgICAgICAgIGlmIChjID09ICcrJyB8fCBjID09ICcqJyB8fCBjID09ICc/JykgeworICAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHRoZXJlJ3MgYSAqIG9yIGEgKywgdXBkYXRlIHRoZSBjdXJyZW50IHN0YXRlIHRvIGxvb3AgYmFjayBvbiBpdHNlbGYKKyAgICAgICAgICAgICAgICAgICAgLy8gb24gdGhlIGNoYXJhY3RlciBjYXRlZ29yaWVzIHRoYXQgY2F1c2VkIHVzIHRvIGVudGVyIHRoaXMgc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJyonIHx8IGMgPT0gJysnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiB3ZSBwcm9jZXNzIG9uZSBzdGF0ZSBhdCBhIHRpbWUgYmVjYXVzZSB1cGRhdGVTdGF0ZVRhYmxlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXkgYWRkIG5ldyBzdGF0ZXMsIGFuZCB3ZSB3YW50IHRvIHByb2Nlc3MgdGhlbSBhcyB3ZWxsLgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IGxhc3RTdGF0ZSArIDE7IGkgPCB0ZW1wU3RhdGVUYWJsZS5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvciB0ZW1wID0gbmV3IFZlY3RvcigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAuYWRkRWxlbWVudChuZXcgSW50ZWdlcihpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdGVUYWJsZSh0ZW1wLCBwZW5kaW5nQ2hhcnMsIChzaG9ydCkobGFzdFN0YXRlICsgMSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBqdXN0IGFkZGVkIGFueSBuZXcgc3RhdGVzLCBhZGQgdGhlbSB0byB0aGUgZGVjaXNvbiBwb2ludCBsaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiBpdCBtaWdodCBiZSBhIGdvb2QgaWRlYSB0byBhdm9pZCBhZGRpbmcgbmV3IHN0YXRlcyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlY2lzaW9uIHBvaW50IGxpc3QgaW4gbW9yZSB0aGFuIG9uZSBwbGFjZS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGN1cnJlbnRTdGF0ZSArIDEgPCB0ZW1wU3RhdGVUYWJsZS5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpc2lvblBvaW50TGlzdC5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKCsrY3VycmVudFN0YXRlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBmb3IgKiBhbmQgPyBwb3AgdGhlIHRvcCBlbGVtZW50IG9mZiB0aGUgZGVjaXNpb24gcG9pbnQgc3RhY2sgYW5kIG1lcmdlCisgICAgICAgICAgICAgICAgICAgIC8vIGl0IHdpdGggdGhlIGN1cnJlbnQgZGVjaXNpb24gcG9pbnQgbGlzdCAodGhpcyBjYXVzZXMgdGhlIGRpdmVyZ2VudAorICAgICAgICAgICAgICAgICAgICAvLyBwYXRocyB0aHJvdWdoIHRoZSBzdGF0ZSB0YWJsZSB0byBjb21lIHRvZ2V0aGVyIGFnYWluIG9uIHRoZSBuZXh0CisgICAgICAgICAgICAgICAgICAgIC8vIG5ldyBzdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJyonIHx8IGMgPT0gJz8nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3IgdGVtcCA9IChWZWN0b3IpZGVjaXNpb25Qb2ludFN0YWNrLnBvcCgpOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkZWNpc2lvblBvaW50TGlzdC5zaXplKCk7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wLmFkZEVsZW1lbnQoZGVjaXNpb25Qb2ludExpc3QuZWxlbWVudEF0KGkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uUG9pbnRMaXN0ID0gdGVtcDsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gYSA/IGFmdGVyIGEgKiBtb2RpZmllcyB0aGUgYmVoYXZpb3Igb2YgKiBpbiBjYXNlcyB3aGVyZSB0aGVyZSBpcyBvdmVybGFwCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZXR3ZWVuIHRoZSBzZXQgb2YgY2hhcmFjdGVycyB0aGF0IHJlcGVhdCBhbmQgdGhlIGNoYXJhY3RlcnMgd2hpY2ggZm9sbG93LgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2l0aG91dCB0aGUgPywgYWxsIHN0YXRlcyBmb2xsb3dpbmcgdGhlIHJlcGVhdGluZyBzdGF0ZSwgdXAgdG8gYSBzdGF0ZSB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgcmVhY2hlZCBieSBhIGNoYXJhY3RlciB0aGF0IGRvZXNuJ3Qgb3ZlcmxhcCwgd2lsbCBsb29wIGJhY2sgaW50byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlcGVhdGluZyBzdGF0ZS4gIFdpdGggdGhlID8sIHRoZSBtYXJrIHN0YXRlcyBmb2xsb3dpbmcgdGhlICo/IERPTidUIGxvb3AKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJhY2sgaW50byB0aGUgcmVwZWF0aW5nIHN0YXRlLiAgVGh1cywgIlthLXpdKnh5eiIgd2lsbCBtYXRjaCB0aGUgbG9uZ2VzdAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2VxdWVuY2Ugb2YgbGV0dGVycyB0aGF0IGVuZHMgaW4gInh5eiwiIHdoaWxlICJbYS16XSo/IHdpbGwgbWF0Y2ggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBfc2hvcnRlc3RfIHNlcXVlbmNlIG9mIGxldHRlcnMgdGhhdCBlbmRzIGluICJ4eXoiLgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgdXNlIGV4dHJhIGJvb2trZWVwaW5nIHRvIGFjaGlldmUgdGhpcyBlZmZlY3QsIHNpbmNlIGV2ZXJ5dGhpbmcgZWxzZSB3b3JrcworICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWNjb3JkaW5nIHRvIHRoZSAibG9uZ2VzdCBwb3NzaWJsZSBtYXRjaCIgcHJpbmNpcGxlLiAgVGhlIGJhc2ljIHByaW5jaXBsZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgdGhhdCB0cmFuc2l0aW9ucyBvdXQgb2YgYSBsb29waW5nIHN0YXRlIGFyZSB3cml0dGVuIGluIG92ZXIgdGhlIGxvb3BpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlIGluc3RlYWQgb2YgYmVpbmcgcmVjb25jaWxlZCwgYW5kIHRoYXQgd2UgY29weSB0aGUgY29udGVudHMgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb29waW5nIHN0YXRlIGludG8gZW1wdHkgY2VsbHMgb2YgYWxsIG5vbi10ZXJtaW5hbCBzdGF0ZXMgdGhhdCBmb2xsb3cgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBsb29waW5nIHN0YXRlLgorLy9TeXN0ZW0ub3V0LnByaW50bG4oImMgPSAiICsgYyArICIsIHAgPSAiICsgcCArICIsIHJ1bGUubGVuZ3RoKCkgPSAiICsgcnVsZS5sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnKicgJiYgcCArIDEgPCBydWxlLmxlbmd0aCgpICYmIHJ1bGUuY2hhckF0KHAgKyAxKSA9PSAnPycpIHsKKy8vU3lzdGVtLm91dC5wcmludGxuKCJTYXcgKj8iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRMb29waW5nU3RhdGVzKGRlY2lzaW9uUG9pbnRMaXN0LCBkZWNpc2lvblBvaW50TGlzdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gYSAoIG1hcmtzIHRoZSBiZWdpbm5pbmcgb2YgYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzLiAgUGFyZW50aGVzZXMgY2FuIGVpdGhlcgorICAgICAgICAgICAgICAgIC8vIGNvbnRhaW4gc2V2ZXJhbCBhbHRlcm5hdGl2ZSBjaGFyYWN0ZXIgc2VxdWVuY2VzIChpLmUuLCAiKGFifGNkfGVmKSIpLCBvcgorICAgICAgICAgICAgICAgIC8vIHRoZXkgY2FuIGNvbnRhaW4gYSBzZXF1ZW5jZSBvZiBjaGFyYWN0ZXJzIHRoYXQgY2FuIHJlcGVhdCAoaS5lLiwgIihhYmMpKiIpLiAgVGh1cywKKyAgICAgICAgICAgICAgICAvLyBBICgpIGdyb3VwIGNhbiBoYXZlIG11bHRpcGxlIGVudHJ5IGFuZCBleGl0IHBvaW50cy4gIFRvIGtlZXAgdHJhY2sgb2YgdGhpcywKKyAgICAgICAgICAgICAgICAvLyB3ZSByZXNlcnZlIFRXTyBzcG90cyBvbiB0aGUgZGVjaXNpb24tcG9pbnQgc3RhY2suICBUaGUgdG9wIG9mIHRoZSBzdGFjayBpcworICAgICAgICAgICAgICAgIC8vIHRoZSBsaXN0IG9mIGV4aXQgcG9pbnRzLCB3aGljaCBiZWNvbWVzIHRoZSBjdXJyZW50IGRlY2lzaW9uIHBvaW50IGxpc3Qgd2hlbgorICAgICAgICAgICAgICAgIC8vIHRoZSApIGlzIHJlYWNoZWQuICBUaGUgbmV4dCBlbnRyeSBkb3duIGlzIHRoZSBkZWNpc2lvbiBwb2ludCBsaXN0IGF0IHRoZQorICAgICAgICAgICAgICAgIC8vIGJlZ2lubmluZyBvZiB0aGUgKCksIHdoaWNoIGJlY29tZXMgdGhlIGN1cnJlbnQgZGVjaXNpb24gcG9pbnQgbGlzdCBhdCBldmVyeQorICAgICAgICAgICAgICAgIC8vIGVudHJ5IHBvaW50LgorICAgICAgICAgICAgICAgIC8vIEluIGFkZGl0aW9uIHRvIGtlZXBpbmcgdHJhY2sgb2YgdGhlIGV4aXQgcG9pbnRzIGFuZCB0aGUgYWN0aXZlIGRlY2lzaW9uCisgICAgICAgICAgICAgICAgLy8gcG9pbnRzIGJlZm9yZSB0aGUgKCAoaS5lLiwgdGhlIHBsYWNlcyBmcm9tIHdoaWNoIHRoZSAoKSBjYW4gYmUgZW50ZXJlZCksCisgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoZSBlbnRyeSBwb2ludHMgaW4gY2FzZSB0aGUgZXhwcmVzc2lvbiBsb29wcworICAgICAgICAgICAgICAgIC8vIChpLmUuLCBpcyBmb2xsb3dlZCBieSAqKS4gIFdlIGRvIHRoYXQgYnkgY3JlYXRpbmcgYSBkdW1teSBzdGF0ZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAvLyBzdGF0ZSB0YWJsZSBhbmQgYWRkaW5nIGl0IHRvIHRoZSBkZWNpc2lvbiBwb2ludCBsaXN0IChCRUZPUkUgaXQncyBkdXBsaWNhdGVkCisgICAgICAgICAgICAgICAgLy8gb24gdGhlIHN0YWNrKS4gIE5vYm9keSBwb2ludHMgdG8gdGhpcyBzdGF0ZSwgc28gaXQnbGwgZ2V0IG9wdGltaXplZCBvdXQKKyAgICAgICAgICAgICAgICAvLyBhdCB0aGUgZW5kLiAgSXQgZXhpc3RzIG9ubHkgdG8gaG9sZCB0aGUgZW50cnkgcG9pbnRzIGluIGNhc2UgdGhlICgpCisgICAgICAgICAgICAgICAgLy8gZXhwcmVzc2lvbiBsb29wcy4KKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnKCcpIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBhZGQgYSBuZXcgc3RhdGUgdG8gdGhlIHN0YXRlIHRhYmxlIHRvIGhvbGQgdGhlIGVudHJ5IHBvaW50cyBpbnRvCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSAoKSBleHByZXNzaW9uCisgICAgICAgICAgICAgICAgICAgIHRlbXBTdGF0ZVRhYmxlLmFkZEVsZW1lbnQobmV3IHNob3J0W251bUNhdGVnb3JpZXMgKyAxXSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSB0byBhZGp1c3QgbGFzdFN0YXRlIGFuZCBjdXJyZW50U3RhdGUgdG8gYWNjb3VudCBmb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIG5ldyBkdW1teSBzdGF0ZQorICAgICAgICAgICAgICAgICAgICBsYXN0U3RhdGUgPSBjdXJyZW50U3RhdGU7CisgICAgICAgICAgICAgICAgICAgICsrY3VycmVudFN0YXRlOworCisgICAgICAgICAgICAgICAgICAgIC8vIGFkZCB0aGUgY3VycmVudCBzdGF0ZSB0byB0aGUgZGVjaXNpb24gcG9pbnQgbGlzdCAoYWRkIGl0IGF0IHRoZQorICAgICAgICAgICAgICAgICAgICAvLyBCRUdJTk5JTkcgc28gd2UgY2FuIGZpbmQgaXQgbGF0ZXIpCisgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uUG9pbnRMaXN0Lmluc2VydEVsZW1lbnRBdChuZXcgSW50ZWdlcihjdXJyZW50U3RhdGUpLCAwKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBmaW5hbGx5LCBwdXNoIGEgY29weSBvZiB0aGUgY3VycmVudCBkZWNpc2lvbiBwb2ludCBsaXN0IG9udG8gdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIHN0YWNrICh0aGlzIGtlZXBzIHRyYWNrIG9mIHRoZSBhY3RpdmUgZGVjaXNpb24gcG9pbnQgbGlzdCBiZWZvcmUKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlICgpIGV4cHJlc3Npb24pLCBmb2xsb3dlZCBieSBhbiBlbXB0eSBkZWNpc2lvbiBwb2ludCBsaXN0CisgICAgICAgICAgICAgICAgICAgIC8vICh0aGlzIHdpbGwgaG9sZCB0aGUgZXhpdCBwb2ludHMpCisgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uUG9pbnRTdGFjay5wdXNoKGRlY2lzaW9uUG9pbnRMaXN0LmNsb25lKCkpOworICAgICAgICAgICAgICAgICAgICBkZWNpc2lvblBvaW50U3RhY2sucHVzaChuZXcgVmVjdG9yKCkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGEgfCBzZXBhcmF0ZXMgYWx0ZXJuYXRpdmUgY2hhcmFjdGVyIHNlcXVlbmNlcyBpbiBhICgpIGV4cHJlc3Npb24uICBXaGVuCisgICAgICAgICAgICAgICAgLy8gYSB8IGlzIGVuY291bnRlcmVkLCB3ZSBhZGQgdGhlIGN1cnJlbnQgZGVjaXNpb24gcG9pbnQgbGlzdCB0byB0aGUgZXhpdC1wb2ludAorICAgICAgICAgICAgICAgIC8vIGxpc3QsIGFuZCByZXN0b3JlIHRoZSBkZWNpc2lvbiBwb2ludCBsaXN0IHRvIGl0cyBzdGF0ZSBwcmlvciB0byB0aGUgKC4KKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnfCcpIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBwaWNrIG91dCB0aGUgdG9wIHR3byBkZWNpc2lvbiBwb2ludCBsaXN0cyBvbiB0aGUgc3RhY2sKKyAgICAgICAgICAgICAgICAgICAgVmVjdG9yIG9uZURvd24gPSAoVmVjdG9yKWRlY2lzaW9uUG9pbnRTdGFjay5wb3AoKTsKKyAgICAgICAgICAgICAgICAgICAgVmVjdG9yIHR3b0Rvd24gPSAoVmVjdG9yKWRlY2lzaW9uUG9pbnRTdGFjay5wZWVrKCk7CisgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uUG9pbnRTdGFjay5wdXNoKG9uZURvd24pOworCisgICAgICAgICAgICAgICAgICAgIC8vIGFwcGVuZCB0aGUgY3VycmVudCBkZWNpc2lvbiBwb2ludCBsaXN0IHRvIHRoZSBsaXN0IGJlbG93IGl0CisgICAgICAgICAgICAgICAgICAgIC8vIG9uIHRoZSBzdGFjayAodGhlIGxpc3Qgb2YgZXhpdCBwb2ludHMpLCBhbmQgcmVzdG9yZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gY3VycmVudCBkZWNpc2lvbiBwb2ludCBsaXN0IHRvIGl0cyBzdGF0ZSBiZWZvcmUgdGhlICgpIGV4cHJlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBkZWNpc2lvblBvaW50TGlzdC5zaXplKCk7IGkrKykKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uZURvd24uYWRkRWxlbWVudChkZWNpc2lvblBvaW50TGlzdC5lbGVtZW50QXQoaSkpOworICAgICAgICAgICAgICAgICAgICBkZWNpc2lvblBvaW50TGlzdCA9IChWZWN0b3IpdHdvRG93bi5jbG9uZSgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGEgKSBtYXJrcyB0aGUgZW5kIG9mIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycy4gIFdlIGRvIG9uZSBvZiB0d28gdGhpbmdzCisgICAgICAgICAgICAgICAgLy8gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIHNlcXVlbmNlIHJlcGVhdHMgKGkuZS4sIHdoZXRoZXIgdGhlICkgaXMgZm9sbG93ZWQKKyAgICAgICAgICAgICAgICAvLyBieSAqKTogIElmIHRoZSBzZXF1ZW5jZSBkb2Vzbid0IHJlcGVhdCwgdGhlbiB0aGUgZXhpdC1wb2ludCBsaXN0IGlzIG1lcmdlZAorICAgICAgICAgICAgICAgIC8vIHdpdGggdGhlIGN1cnJlbnQgZGVjaXNpb24gcG9pbnQgbGlzdCBhbmQgdGhlIGRlY2lzaW9uIHBvaW50IGxpc3QgZnJvbSBiZWZvcmUKKyAgICAgICAgICAgICAgICAvLyB0aGUgKCkgaXMgdGhyb3duIGF3YXkuICBJZiB0aGUgc2VxdWVuY2UgZG9lcyByZXBlYXQsIHRoZW4gd2UgZmlzaCBvdXQgdGhlCisgICAgICAgICAgICAgICAgLy8gc3RhdGUgd2Ugd2VyZSBpbiBiZWZvcmUgdGhlICggYW5kIGNvcHkgYWxsIG9mIGl0cyBmb3J3YXJkIHRyYW5zaXRpb25zCisgICAgICAgICAgICAgICAgLy8gKGkuZS4sIGV2ZXJ5IHRyYW5zaXRpb24gYWRkZWQgYnkgdGhlICgpIGV4cHJlc3Npb24pIGludG8gZXZlcnkgc3RhdGUgaW4gdGhlCisgICAgICAgICAgICAgICAgLy8gZXhpdC1wb2ludCBsaXN0IGFuZCB0aGUgY3VycmVudCBkZWNpc2lvbiBwb2ludCBsaXN0LiAgVGhlIGN1cnJlbnQgZGVjaXNpb24KKyAgICAgICAgICAgICAgICAvLyBwb2ludCBsaXN0IGlzIHRoZW4gbWVyZ2VkIHdpdGggYm90aCB0aGUgZXhpdC1wb2ludCBsaXN0IEFORCB0aGUgc2F2ZWQgdmVyc2lvbgorICAgICAgICAgICAgICAgIC8vIG9mIHRoZSBkZWNpc2lvbiBwb2ludCBsaXN0IGZyb20gYmVmb3JlIHRoZSAoKS4gIFRoZW4gd2UgdGhyb3cgb3V0IHRoZSAqLgorICAgICAgICAgICAgICAgIGlmIChjID09ICcpJykgeworCisgICAgICAgICAgICAgICAgICAgIC8vIHB1bGwgdGhlIGV4aXQgcG9pbnQgbGlzdCBvZmYgdGhlIHN0YWNrLCBtZXJnZSBpdCB3aXRoIHRoZSBjdXJyZW50CisgICAgICAgICAgICAgICAgICAgIC8vIGRlY2lzaW9uIHBvaW50IGxpc3QsIGFuZCBtYWtlIHRoZSBtZXJnZWQgdmVyc2lvbiB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICAvLyBkZWNpc2lvbiBwb2ludCBsaXN0CisgICAgICAgICAgICAgICAgICAgIFZlY3RvciBleGl0UG9pbnRzID0gKFZlY3RvcilkZWNpc2lvblBvaW50U3RhY2sucG9wKCk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGVjaXNpb25Qb2ludExpc3Quc2l6ZSgpOyBpKyspCisgICAgICAgICAgICAgICAgICAgICAgICBleGl0UG9pbnRzLmFkZEVsZW1lbnQoZGVjaXNpb25Qb2ludExpc3QuZWxlbWVudEF0KGkpKTsKKyAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25Qb2ludExpc3QgPSBleGl0UG9pbnRzOworCisgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSApIGlzbid0IGZvbGxvd2VkIGJ5IGEgKiwgKyBvciA/LCB0aGVuIGFsbCB3ZSBoYXZlIHRvIGRvIGlzIHRocm93CisgICAgICAgICAgICAgICAgICAgIC8vIGF3YXkgdGhlIG90aGVyIGxpc3Qgb24gdGhlIGRlY2lzaW9uIHBvaW50IHN0YWNrLCBhbmQgd2UncmUgZG9uZQorICAgICAgICAgICAgICAgICAgICBpZiAocCArIDEgPj0gcnVsZS5sZW5ndGgoKSB8fCAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZS5jaGFyQXQocCArIDEpICE9ICcqJyAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUuY2hhckF0KHAgKyAxKSAhPSAnKycgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlLmNoYXJBdChwICsgMSkgIT0gJz8nKQorICAgICAgICAgICAgICAgICAgICApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uUG9pbnRTdGFjay5wb3AoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCBpZiB0aGUgc2VxdWVuY2UgaXMgY29uZGl0aW9uYWwgb3IgaXQgcmVwZWF0cywKKyAgICAgICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSBhIGxvdCBtb3JlIHdvcmsgdG8gZG8uLi4KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdyBleGl0UG9pbnRzIGFuZCBkZWNpc2lvblBvaW50TGlzdCBoYXZlIHRvIHBvaW50IHRvIGVxdWl2YWxlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZlY3RvcnMsIGJ1dCBub3QgdGhlIFNBTUUgdmVjdG9yCisgICAgICAgICAgICAgICAgICAgICAgICBleGl0UG9pbnRzID0gKFZlY3RvcilkZWNpc2lvblBvaW50TGlzdC5jbG9uZSgpOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3AgdGhlIG9yaWdpbmFsIGRlY2lzaW9uIHBvaW50IGxpc3Qgb2ZmIHRoZSBzdGFjaworICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yIHRlbXAgPSAoVmVjdG9yKWRlY2lzaW9uUG9pbnRTdGFjay5wb3AoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2Ugc3F1aXJyZWxlZCBhd2F5IHRoZSByb3cgbnVtYmVyIG9mIG91ciBlbnRyeSBwb2ludCBsaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBvcmlnaW5hbCBkZWNpc2lvbiBwb2ludCBsaXN0LiAgRmlzaAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhhdCBzdGF0ZSBudW1iZXIgb3V0IGFuZCByZXRyaWV2ZSB0aGUgZW50cnkgcG9pbnQgbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRlbXBTdGF0ZU51bSA9ICgoSW50ZWdlcil0ZW1wLmZpcnN0RWxlbWVudCgpKS5pbnRWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgc2hvcnRbXSB0ZW1wU3RhdGUgPSAoc2hvcnRbXSl0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQodGVtcFN0YXRlTnVtKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWVyZ2UgdGhlIG9yaWdpbmFsIGRlY2lzaW9uIHBvaW50IGxpc3Qgd2l0aCB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gZGVjaXNpb24gcG9pbnQgbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGUuY2hhckF0KHAgKyAxKSA9PSAnPycgfHwgcnVsZS5jaGFyQXQocCArIDEpID09ICcqJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZGVjaXNpb25Qb2ludExpc3Quc2l6ZSgpOyBpKyspCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAuYWRkRWxlbWVudChkZWNpc2lvblBvaW50TGlzdC5lbGVtZW50QXQoaSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2lzaW9uUG9pbnRMaXN0ID0gdGVtcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmluYWxseSwgZm9yICogYW5kICsgY29weSBldmVyeSBmb3J3YXJkIHJlZmVyZW5jZSBmcm9tIHRoZSBlbnRyeSBwb2ludAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGlzdCBpbnRvIGV2ZXJ5IHN0YXRlIGluIHRoZSBuZXcgZGVjaXNpb24gcG9pbnQgbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJ1bGUuY2hhckF0KHAgKyAxKSA9PSAnKycgfHwgcnVsZS5jaGFyQXQocCArIDEpID09ICcqJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVtcFN0YXRlLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wU3RhdGVbaV0gPiB0ZW1wU3RhdGVOdW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXRlVGFibGUoZXhpdFBvaW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IENoYXJhY3RlcigoY2hhcikoaSArIDB4MTAwKSkudG9TdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcFN0YXRlW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlIGxhc3RTdGF0ZSBhbmQgY3VycmVudFN0YXRlLCBhbmQgdGhyb3cgYXdheSB0aGUgKiwgKywgb3IgPworICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFN0YXRlID0gY3VycmVudFN0YXRlOworICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFN0YXRlID0gdGVtcFN0YXRlVGFibGUuc2l6ZSgpIC0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrcDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGEgLyBtYXJrcyB0aGUgcG9zaXRpb24gd2hlcmUgdGhlIGJyZWFrIGlzIHRvIGdvIGlmIHRoZSBjaGFyYWN0ZXIgc2VxdWVuY2UKKyAgICAgICAgICAgICAgICAvLyBtYXRjaGVzIHRoaXMgcnVsZS4gIFdlIHVwZGF0ZSB0aGUgZmxhZyB3b3JkIG9mIGV2ZXJ5IHN0YXRlIG9uIHRoZSBkZWNpc2lvbgorICAgICAgICAgICAgICAgIC8vIHBvaW50IGxpc3QgdG8gbWFyayB0aGVtIGFzIGVuZGluZyBzdGF0ZXMsIGFuZCB0YWtlIG5vdGUgb2YgdGhlIGZhY3QgdGhhdAorICAgICAgICAgICAgICAgIC8vIHdlJ3ZlIHNlZW4gdGhlIHNsYXNoCisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJy8nKSB7CisgICAgICAgICAgICAgICAgICAgIHNhd0Vhcmx5QnJlYWsgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGRlY2lzaW9uUG9pbnRMaXN0LnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9IChzaG9ydFtdKXRlbXBTdGF0ZVRhYmxlLmVsZW1lbnRBdCgoKEludGVnZXIpZGVjaXNpb25Qb2ludExpc3QuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudEF0KGkpKS5pbnRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlW251bUNhdGVnb3JpZXNdIHw9IExPT0tBSEVBRF9TVEFURV9GTEFHOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gaWYgd2UgZ2V0IGhlcmUgd2l0aG91dCBleGVjdXRpbmcgYW55IG9mIHRoZSBhYm92ZSBjbGF1c2VzLCB3ZSBoYXZlIGEKKyAgICAgICAgICAgICAgICAvLyBzeW50YXggZXJyb3IuICBIb3dldmVyLCBmb3Igbm93IHdlIGp1c3QgaWdub3JlIHRoZSBvZmZlbmRpbmcgY2hhcmFjdGVyCisgICAgICAgICAgICAgICAgLy8gYW5kIG1vdmUgb24KKy8qCitkZWJ1Z1ByaW50bG4oIj09PT1QYXJzZWQgXCIiICsgcnVsZS5zdWJzdHJpbmcoMCwgcCArIDEpICsgIlwiLi4uIik7CitTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgIGN1cnJlbnRTdGF0ZSA9ICIgKyBjdXJyZW50U3RhdGUpOworZGVidWdQcmludFZlY3Rvck9mVmVjdG9ycygiICAgICAgZGVjaXNpb25Qb2ludFN0YWNrOiIsICIgICAgICAgICIsIGRlY2lzaW9uUG9pbnRTdGFjayk7CitkZWJ1Z1ByaW50VmVjdG9yKCIgICAgICAgICIsIGRlY2lzaW9uUG9pbnRMaXN0KTsKK2RlYnVnUHJpbnRWZWN0b3IoIiAgICAgIGxvb3BpbmdTdGF0ZXMgPSAiLCBsb29waW5nU3RhdGVzKTsKK2RlYnVnUHJpbnRWZWN0b3IoIiAgICAgIHN0YXRlc1RvQmFja2ZpbGwgPSAiLCBzdGF0ZXNUb0JhY2tmaWxsKTsKK1N5c3RlbS5vdXQucHJpbnRsbigiICAgICAgc2F3RWFybHlCcmVhayA9ICIgKyBzYXdFYXJseUJyZWFrKTsKK2RlYnVnUHJpbnRUZW1wU3RhdGVUYWJsZSgpOworKi8KKworICAgICAgICAgICAgICAgIC8vIGNsZWFyTG9vcGluZ1N0YXRlcyBpcyBhIHNpZ25hbCBiYWNrIGZyb20gdXBkYXRlU3RhdGVUYWJsZSgpIHRoYXQgd2UndmUKKyAgICAgICAgICAgICAgICAvLyB0cmFuc2l0aW9uZWQgdG8gYSBzdGF0ZSB0aGF0IHdvbid0IGxvb3AgYmFjayB0byB0aGUgY3VycmVudCBsb29waW5nCisgICAgICAgICAgICAgICAgLy8gc3RhdGUuICAoSW4gb3RoZXIgd29yZHMsIHdlJ3ZlIGdvdHRlbiB0byBhIHBvaW50IHdoZXJlIHdlIGNhbiBubyBsb25nZXIKKyAgICAgICAgICAgICAgICAvLyBnbyBiYWNrIGludG8gYSAqPyB3ZSBzYXcgZWFybGllci4pICBDbGVhciBvdXQgdGhlIGxpc3Qgb2YgbG9vcGluZyBzdGF0ZXMKKyAgICAgICAgICAgICAgICAvLyBhbmQgYmFja2ZpbGwgYW55IHN0YXRlcyB0aGF0IG5lZWQgdG8gYmUgYmFja2ZpbGxlZC4KKyAgICAgICAgICAgICAgICBpZiAoY2xlYXJMb29waW5nU3RhdGVzKSB7CisgICAgICAgICAgICAgICAgICAgIHNldExvb3BpbmdTdGF0ZXMobnVsbCwgZGVjaXNpb25Qb2ludExpc3QpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGFkdmFuY2UgdG8gdGhlIG5leHQgY2hhcmFjdGVyLCBub3cgdGhhdCB3ZSd2ZSBwcm9jZXNzZWQgdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHRoaXMgdGFrZXMgY2FyZSBvZiBiYWNrZmlsbGluZyBhbnkgc3RhdGVzIHRoYXQgc3RpbGwgbmVlZCB0byBiZSBiYWNrZmlsbGVkCisgICAgICAgICAgICBzZXRMb29waW5nU3RhdGVzKG51bGwsIGRlY2lzaW9uUG9pbnRMaXN0KTsKKworICAgICAgICAgICAgLy8gd2hlbiB3ZSByZWFjaCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcsIHdlIGRvIGEgcG9zdHByb2Nlc3Npbmcgc3RlcCB0byBtYXJrIHRoZQorICAgICAgICAgICAgLy8gZW5kIHN0YXRlcy4gIFRoZSBkZWNpc2lvbiBwb2ludCBsaXN0IGNvbnRhaW5zIGV2ZXJ5IHN0YXRlIHRoYXQgY2FuIHRyYW5zaXRpb24KKyAgICAgICAgICAgIC8vIHRvIHRoZSBlbmQgc3RhdGUtLSB0aGF0IGlzLCBldmVyeSBzdGF0ZSB0aGF0IGlzIHRoZSBsYXN0IHN0YXRlIGluIGEgc2VxdWVuY2UKKyAgICAgICAgICAgIC8vIHRoYXQgbWF0Y2hlcyB0aGUgcnVsZS4gIEFsbCBvZiB0aGVzZSBzdGF0ZXMgYXJlIGNvbnNpZGVyZWQgIm1hcmsgc3RhdGVzIgorICAgICAgICAgICAgLy8gb3IgImFjY2VwdGluZyBzdGF0ZXMiLS0gdGhhdCBpcywgc3RhdGVzIHRoYXQgY2F1c2UgdGhlIHBvc2l0aW9uIHJldHVybmVkIGZyb20KKyAgICAgICAgICAgIC8vIG5leHQoKSB0byBiZSB1cGRhdGVkLiAgQSBtYXJrIHN0YXRlIHJlcHJlc2VudHMgYSBwb3NzaWJsZSBicmVhayBwb3NpdGlvbi4KKyAgICAgICAgICAgIC8vIFRoaXMgYWxsb3dzIHVzIHRvIGxvb2sgYWhlYWQgYW5kIHJlbWVtYmVyIGhvdyBmYXIgdGhlIHJ1bGUgbWF0Y2hlZAorICAgICAgICAgICAgLy8gYmVmb3JlIGZvbGxvd2luZyB0aGUgbmV3IGJyYW5jaCAoc2VlIG5leHQoKSBmb3IgbW9yZSBpbmZvcm1hdGlvbikuCisgICAgICAgICAgICAvLyBUaGUgdGVtcG9yYXJ5IHN0YXRlIHRhYmxlIGhhcyBhbiBleHRyYSAiZmxhZyBjb2x1bW4iIGF0IHRoZSBlbmQgd2hlcmUgdGhpcworICAgICAgICAgICAgLy8gaW5mb3JtYXRpb24gaXMgc3RvcmVkLiAgV2UgbWFyayB0aGUgZW5kIHN0YXRlcyBieSBzZXR0aW5nIGEgZmxhZyBpbiB0aGVpcgorICAgICAgICAgICAgLy8gZmxhZyBjb2x1bW4uCisgICAgICAgICAgICAvLyBOb3cgaWYgd2Ugc2F3IHRoZSAvIGluIHRoZSBydWxlLCB0aGVuIGV2ZXJ5dGhpbmcgYWZ0ZXIgaXQgaXMgbG9va2FoZWFkCisgICAgICAgICAgICAvLyBtYXRlcmlhbCBhbmQgdGhlIGJyZWFrIHJlYWxseSBnb2VzIHdoZXJlIHRoZSBzbGFzaCBpcy4gIEluIHRoaXMgY2FzZSwKKyAgICAgICAgICAgIC8vIHdlIG1hcmsgdGhlc2Ugc3RhdGVzIGFzIEJPVEggYWNjZXB0aW5nIHN0YXRlcyBhbmQgbG9va2FoZWFkIHN0YXRlcy4gIFRoaXMKKyAgICAgICAgICAgIC8vIHNpZ25hbHMgdGhhdCB0aGVzZSBzdGF0ZXMgY2F1c2UgdGhlIGJyZWFrIHBvc2l0aW9uIHRvIGJlIHVwZGF0ZWQgdG8gdGhlCisgICAgICAgICAgICAvLyBwb3NpdGlvbiBvZiB0aGUgc2xhc2ggcmF0aGVyIHRoYW4gdGhlIGN1cnJlbnQgYnJlYWsgcG9zaXRpb24uCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGRlY2lzaW9uUG9pbnRMaXN0LnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgaW50IHJvd051bSA9ICgoSW50ZWdlcilkZWNpc2lvblBvaW50TGlzdC5lbGVtZW50QXQoaSkpLmludFZhbHVlKCk7CisgICAgICAgICAgICAgICAgc3RhdGUgPSAoc2hvcnRbXSl0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQocm93TnVtKTsKKyAgICAgICAgICAgICAgICBzdGF0ZVtudW1DYXRlZ29yaWVzXSB8PSBFTkRfU1RBVEVfRkxBRzsKKyAgICAgICAgICAgICAgICBpZiAoc2F3RWFybHlCcmVhaykgeworICAgICAgICAgICAgICAgICAgICBzdGF0ZVtudW1DYXRlZ29yaWVzXSB8PSBMT09LQUhFQURfU1RBVEVfRkxBRzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisvKgorZGVidWdQcmludGxuKCI9PT09UGFyc2VkIFwiIiArIHJ1bGUgKyAiOyIpOworU3lzdGVtLm91dC5wcmludGxuKCk7CitTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgIGN1cnJlbnRTdGF0ZSA9ICIgKyBjdXJyZW50U3RhdGUpOworZGVidWdQcmludFZlY3Rvck9mVmVjdG9ycygiICAgICAgZGVjaXNpb25Qb2ludFN0YWNrOiIsICIgICAgICAgICIsIGRlY2lzaW9uUG9pbnRTdGFjayk7CitkZWJ1Z1ByaW50VmVjdG9yKCIgICAgICAgICIsIGRlY2lzaW9uUG9pbnRMaXN0KTsKK2RlYnVnUHJpbnRWZWN0b3IoIiAgICAgIGxvb3BpbmdTdGF0ZXMgPSAiLCBsb29waW5nU3RhdGVzKTsKK2RlYnVnUHJpbnRWZWN0b3IoIiAgICAgIHN0YXRlc1RvQmFja2ZpbGwgPSAiLCBzdGF0ZXNUb0JhY2tmaWxsKTsKK1N5c3RlbS5vdXQucHJpbnRsbigiICAgICAgc2F3RWFybHlCcmVhayA9ICIgKyBzYXdFYXJseUJyZWFrKTsKK2RlYnVnUHJpbnRUZW1wU3RhdGVUYWJsZSgpOworKi8KKyAgICAgICAgfQorCisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFVwZGF0ZSBlbnRyaWVzIGluIHRoZSBzdGF0ZSB0YWJsZSwgYW5kIG1lcmdlIHN0YXRlcyB3aGVuIG5lY2Vzc2FyeSB0byBrZWVwCisgICAgICAgICAqIHRoZSB0YWJsZSBkZXRlcm1pbmlzdGljLgorICAgICAgICAgKiBAcGFyYW0gcm93cyBUaGUgbGlzdCBvZiByb3dzIHRoYXQgbmVlZCB1cGRhdGluZyAodGhlIGRlY2lzaW9uIHBvaW50IGxpc3QpCisgICAgICAgICAqIEBwYXJhbSBwZW5kaW5nQ2hhcnMgQSBjaGFyYWN0ZXIgY2F0ZWdvcnkgbGlzdCwgZW5jb2RlZCBpbiBhIFN0cmluZy4gIFRoaXMgaXMgdGhlCisgICAgICAgICAqIGxpc3Qgb2YgdGhlIGNvbHVtbnMgdGhhdCBuZWVkIHVwZGF0aW5nLgorICAgICAgICAgKiBAcGFyYW0gbmV3VmFsdWUgVXBkYXRlIHRoZSBjZWxscyBzcGVjZmllZCBhYm92ZSB0byBjb250YWluIHRoaXMgdmFsdWUKKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgdm9pZCB1cGRhdGVTdGF0ZVRhYmxlKFZlY3RvciByb3dzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgcGVuZGluZ0NoYXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG9ydCBuZXdWYWx1ZSkgeworICAgICAgICAgICAgLy8gY3JlYXRlIGEgZHVtbXkgc3RhdGUgdGhhdCBoYXMgdGhlIHNwZWNpZmllZCByb3cgbnVtYmVyIChuZXdWYWx1ZSkgaW4KKyAgICAgICAgICAgIC8vIHRoZSBjZWxscyB0aGF0IG5lZWQgdG8gYmUgdXBkYXRlZCAodGhvc2Ugc3BlY2lmaWVkIGJ5IHBlbmRpbmdDaGFycykKKyAgICAgICAgICAgIC8vIGFuZCAwIGluIHRoZSBvdGhlciBjZWxscworICAgICAgICAgICAgc2hvcnRbXSBuZXdWYWx1ZXMgPSBuZXcgc2hvcnRbbnVtQ2F0ZWdvcmllcyArIDFdOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwZW5kaW5nQ2hhcnMubGVuZ3RoKCk7IGkrKykKKyAgICAgICAgICAgICAgICBuZXdWYWx1ZXNbKGludCkocGVuZGluZ0NoYXJzLmNoYXJBdChpKSkgLSAweDEwMF0gPSBuZXdWYWx1ZTsKKworICAgICAgICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgbGlzdCBvZiByb3dzIHRvIHVwZGF0ZSwgYW5kIHVwZGF0ZSB0aGVtIGJ5IGNhbGxpbmcKKyAgICAgICAgICAgIC8vIG1lcmdlU3RhdGVzKCkgdG8gbWVyZ2UgdGhlbSB0aGUgdGhlIGR1bW15IHN0YXRlIHdlIGNyZWF0ZWQKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93cy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIG1lcmdlU3RhdGVzKCgoSW50ZWdlcilyb3dzLmVsZW1lbnRBdChpKSkuaW50VmFsdWUoKSwgbmV3VmFsdWVzLCByb3dzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgcmVhbCB3b3JrIG9mIG1ha2luZyB0aGUgc3RhdGUgdGFibGUgZGV0ZXJtaW5pc3RpYyBoYXBwZW5zIGhlcmUuICBUaGlzIGZ1bmN0aW9uCisgICAgICAgICAqIG1lcmdlcyBhIHN0YXRlIGluIHRoZSBzdGF0ZSB0YWJsZSAoc3BlY2lmaWVkIGJ5IHJvd051bSkgd2l0aCBhIHN0YXRlIHRoYXQgaXMKKyAgICAgICAgICogcGFzc2VkIGluIChuZXdWYWx1ZXMpLiAgVGhlIGJhc2ljIHByb2Nlc3MgaXMgdG8gY29weSB0aGUgbm9uemVybyBjZWxscyBpbiBuZXdTdGF0ZXMKKyAgICAgICAgICogaW50byB0aGUgc3RhdGUgaW4gdGhlIHN0YXRlIHRhYmxlICh3ZSdsbCBjYWxsIHRoYXQgb2xkVmFsdWVzKS4gIElmIHRoZXJlJ3MgYQorICAgICAgICAgKiBjb2xsaXNpb24gKGkuZS4sIGlmIHRoZSBzYW1lIGNlbGwgaGFzIGEgbm9uemVybyB2YWx1ZSBpbiBib3RoIHN0YXRlcywgYW5kIGl0J3MKKyAgICAgICAgICogbm90IHRoZSBTQU1FIHZhbHVlKSwgdGhlbiB3ZSBoYXZlIHRvIHJlY29uY2lsZSB0aGUgY29sbGlzaW9uLiAgV2UgZG8gdGhpcyBieQorICAgICAgICAgKiBjcmVhdGluZyBhIG5ldyBzdGF0ZSwgYWRkaW5nIGl0IHRvIHRoZSBlbmQgb2YgdGhlIHN0YXRlIHRhYmxlLCBhbmQgdXNpbmcgdGhpcworICAgICAgICAgKiBmdW5jdGlvbiByZWN1cnNpdmVseSB0byBtZXJnZSB0aGUgb3JpZ2luYWwgdHdvIHN0YXRlcyBpbnRvIGEgc2luZ2xlLCBjb21iaW5lZAorICAgICAgICAgKiBzdGF0ZS4gIFRoaXMgcHJvY2VzcyBtYXkgaGFwcGVuIHJlY3Vyc2l2ZWx5IChpLmUuLCBlYWNoIHN1Y2Nlc3NpdmUgbGV2ZWwgbWF5CisgICAgICAgICAqIGludm9sdmUgY29sbGlzaW9ucykuICBUbyBwcmV2ZW50IGluZmluaXRlIHJlY3Vyc2lvbiwgd2Uga2VlcCBhIGxvZyBvZiBtZXJnZQorICAgICAgICAgKiBvcGVyYXRpb25zLiAgQW55IHRpbWUgd2UncmUgbWVyZ2luZyB0d28gc3RhdGVzIHdlJ3ZlIG1lcmdlZCBiZWZvcmUsIHdlIGNhbiBqdXN0CisgICAgICAgICAqIHN1cHBseSB0aGUgcm93IG51bWJlciBmb3IgdGhlIHJlc3VsdCBvZiB0aGF0IG1lcmdlIG9wZXJhdGlvbiByYXRoZXIgdGhhbiBjcmVhdGluZworICAgICAgICAgKiBhIG5ldyBzdGF0ZSBqdXN0IGxpa2UgaXQuCisgICAgICAgICAqIEBwYXJhbSByb3dOdW0gVGhlIHJvdyBudW1iZXIgaW4gdGhlIHN0YXRlIHRhYmxlIG9mIHRoZSBzdGF0ZSB0byBiZSB1cGRhdGVkCisgICAgICAgICAqIEBwYXJhbSBuZXdWYWx1ZXMgVGhlIHN0YXRlIHRvIG1lcmdlIGl0IHdpdGguCisgICAgICAgICAqIEBwYXJhbSByb3dzQmVpbmdVcGRhdGVkIEEgY29weSBvZiB0aGUgbGlzdCBvZiByb3dzIHBhc3NlZCB0byB1cGRhdGVTdGF0ZVRhYmxlKCkKKyAgICAgICAgICogKGl0c2VsZiBhIGNvcHkgb2YgdGhlIGRlY2lzaW9uIHBvaW50IGxpc3QgZnJvbSBwYXJzZVJ1bGUoKSkuICBOZXdseS1jcmVhdGVkCisgICAgICAgICAqIHN0YXRlcyBnZXQgYWRkZWQgdG8gdGhlIGRlY2lzaW9uIHBvaW50IGxpc3QgaWYgdGhlaXIgInBhcmVudHMiIHdlcmUgb24gaXQuCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIHZvaWQgbWVyZ2VTdGF0ZXMoaW50IHJvd051bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0W10gbmV3VmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yIHJvd3NCZWluZ1VwZGF0ZWQpIHsKKyAgICAgICAgICAgIHNob3J0W10gb2xkVmFsdWVzID0gKHNob3J0W10pKHRlbXBTdGF0ZVRhYmxlLmVsZW1lbnRBdChyb3dOdW0pKTsKKy8qCitTeXN0ZW0ub3V0LnByaW50KCIqKipNZXJnaW5nICIgKyByb3dOdW0gKyAiOiIpOworZm9yIChpbnQgaSA9IDA7IGkgPCBvbGRWYWx1ZXMubGVuZ3RoOyBpKyspIFN5c3RlbS5vdXQucHJpbnQoIlx0IiArIG9sZFZhbHVlc1tpXSk7CitTeXN0ZW0ub3V0LnByaW50bG4oKTsKK1N5c3RlbS5vdXQucHJpbnQoIiAgICB3aXRoICAgXHQiKTsKK2ZvciAoaW50IGkgPSAwOyBpIDwgbmV3VmFsdWVzLmxlbmd0aDsgaSsrKSBTeXN0ZW0ub3V0LnByaW50KCJcdCIgKyBuZXdWYWx1ZXNbaV0pOworU3lzdGVtLm91dC5wcmludGxuKCk7CisqLworCisgICAgICAgICAgICBib29sZWFuIGlzTG9vcGluZ1N0YXRlID0gbG9vcGluZ1N0YXRlcy5jb250YWlucyhuZXcgSW50ZWdlcihyb3dOdW0pKTsKKworICAgICAgICAgICAgLy8gZm9yIGVhY2ggb2YgdGhlIGNlbGxzIGluIHRoZSByb3dzIHdlJ3JlIHJlY29uY2lsaW5nLCBkby4uLgorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvbGRWYWx1ZXMubGVuZ3RoOyBpKyspIHsKKworICAgICAgICAgICAgICAgIC8vIGlmIHRoZXkgY29udGFpbiB0aGUgc2FtZSB2YWx1ZSwgd2UgZG9uJ3QgaGF2ZSB0byBkbyBhbnl0aGluZworICAgICAgICAgICAgICAgIGlmIChvbGRWYWx1ZXNbaV0gPT0gbmV3VmFsdWVzW2ldKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGlmIG9sZFZhbHVlcyBpcyBhIGxvb3Bpbmcgc3RhdGUgYW5kIHRoZSBzdGF0ZSB0aGUgY3VycmVudCBjZWxsIHBvaW50cyB0bworICAgICAgICAgICAgICAgIC8vIGlzIHRvbywgdGhlbiB3ZSBjYW4ganVzdCBzdG9tcCBvdmVyIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoYXQgY2VsbCAoYW5kCisgICAgICAgICAgICAgICAgLy8gc2V0IHRoZSBjbGVhci1sb29waW5nLXN0YXRlcyBmbGFnIGlmIG5lY2Vzc2FyeSkKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChpc0xvb3BpbmdTdGF0ZSAmJiBsb29waW5nU3RhdGVzLmNvbnRhaW5zKG5ldyBJbnRlZ2VyKG9sZFZhbHVlc1tpXSkpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChuZXdWYWx1ZXNbaV0gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9sZFZhbHVlc1tpXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJMb29waW5nU3RhdGVzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG9sZFZhbHVlc1tpXSA9IG5ld1ZhbHVlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBjdXJyZW50IGNlbGwgaW4gb2xkVmFsdWVzIGlzIDAsIGNvcHkgaW4gdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUKKyAgICAgICAgICAgICAgICAvLyBmcm9tIG5ld1ZhbHVlcworICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9sZFZhbHVlc1tpXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIG9sZFZhbHVlc1tpXSA9IG5ld1ZhbHVlc1tpXTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyB0aGUgbGFzdCBjb2x1bW4gb2YgZWFjaCByb3cgaXMgdGhlIGZsYWcgY29sdW1uLiAgVGFrZSBjYXJlIHRvIG1lcmdlIHRoZQorICAgICAgICAgICAgICAgIC8vIGZsYWcgd29yZHMgY29ycmVjdGx5CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoaSA9PSBudW1DYXRlZ29yaWVzKSB7CisgICAgICAgICAgICAgICAgICAgIG9sZFZhbHVlc1tpXSA9IChzaG9ydCkoKG5ld1ZhbHVlc1tpXSAmIEFMTF9GTEFHUykgfCBvbGRWYWx1ZXNbaV0pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIGlmIGJvdGggbmV3VmFsdWVzIGFuZCBvbGRWYWx1ZXMgaGF2ZSBhIG5vbnplcm8gdmFsdWUgaW4gdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAvLyBjZWxsLCBhbmQgaXQgaXNuJ3QgdGhlIHNhbWUgdmFsdWUgYm90aCBwbGFjZXMuLi4KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChvbGRWYWx1ZXNbaV0gIT0gMCAmJiBuZXdWYWx1ZXNbaV0gIT0gMCkgeworCisgICAgICAgICAgICAgICAgICAgIC8vIGxvb2sgdXAgdGhpcyBwYWlyIG9mIGNlbGwgdmFsdWVzIGluIHRoZSBtZXJnZSBsaXN0LiAgSWYgaXQncworICAgICAgICAgICAgICAgICAgICAvLyBmb3VuZCwgdXBkYXRlIHRoZSBjZWxsIGluIG9sZFZhbHVlcyB0byBwb2ludCB0byB0aGUgbWVyZ2VkIHN0YXRlCisgICAgICAgICAgICAgICAgICAgIGludCBjb21iaW5lZFJvd051bSA9IHNlYXJjaE1lcmdlTGlzdChvbGRWYWx1ZXNbaV0sIG5ld1ZhbHVlc1tpXSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb21iaW5lZFJvd051bSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvbGRWYWx1ZXNbaV0gPSAoc2hvcnQpY29tYmluZWRSb3dOdW07CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UsIHdlIGhhdmUgdG8gcmVjb25jaWxlIHRoZW0uLi4KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb3B5IG91ciByb3cgbnVtYmVycyBpbnRvIHZhcmlhYmxlcyB0byBtYWtlIHRoaW5ncyBlYXNpZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBvbGRSb3dOdW0gPSBvbGRWYWx1ZXNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmV3Um93TnVtID0gbmV3VmFsdWVzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgY29tYmluZWRSb3dOdW0gPSB0ZW1wU3RhdGVUYWJsZS5zaXplKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkZCB0aGlzIHBhaXIgb2Ygcm93IG51bWJlcnMgdG8gdGhlIG1lcmdlIGxpc3QgKGNyZWF0ZSBpdCBmaXJzdAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgd2UgaGF2ZW4ndCBjcmVhdGVkIHRoZSBtZXJnZSBsaXN0IHlldCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtZXJnZUxpc3QgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlTGlzdCA9IG5ldyBWZWN0b3IoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlTGlzdC5hZGRFbGVtZW50KG5ldyBpbnRbXSB7IG9sZFJvd051bSwgbmV3Um93TnVtLCBjb21iaW5lZFJvd051bSB9KTsKKworLy9TeXN0ZW0ub3V0LnByaW50bG4oIioqKkF0ICIgKyByb3dOdW0gKyAiLCBtZXJnaW5nICIgKyBvbGRSb3dOdW0gKyAiIGFuZCAiICsgbmV3Um93TnVtICsgIiBpbnRvICIgKyBjb21iaW5lZFJvd051bSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBhIG5ldyByb3cgdG8gcmVwcmVzZW50IHRoZSBtZXJnZWQgc3RhdGUsIGFuZCBjb3B5IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29udGVudHMgb2Ygb2xkUm93IGludG8gaXQsIHRoZW4gYWRkIGl0IHRvIHRoZSBlbmQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBzdGF0ZSB0YWJsZSBhbmQgdXBkYXRlIHRoZSBvcmlnaW5hbCByb3cgKG9sZFZhbHVlcykgdG8gcG9pbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBuZXcsIG1lcmdlZCwgc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0W10gbmV3Um93ID0gbmV3IHNob3J0W251bUNhdGVnb3JpZXMgKyAxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNob3J0W10gb2xkUm93ID0gKHNob3J0W10pKHRlbXBTdGF0ZVRhYmxlLmVsZW1lbnRBdChvbGRSb3dOdW0pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkob2xkUm93LCAwLCBuZXdSb3csIDAsIG51bUNhdGVnb3JpZXMgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBTdGF0ZVRhYmxlLmFkZEVsZW1lbnQobmV3Um93KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9sZFZhbHVlc1tpXSA9IChzaG9ydCljb21iaW5lZFJvd051bTsKKworCisvL1N5c3RlbS5vdXQucHJpbnRsbigibGFzdE9sZFJvd051bSA9ICIgKyBsYXN0T2xkUm93TnVtKTsKKy8vU3lzdGVtLm91dC5wcmludGxuKCJsYXN0Q29tYmluZWRSb3dOdW0gPSAiICsgbGFzdENvbWJpbmVkUm93TnVtKTsKKy8vU3lzdGVtLm91dC5wcmludGxuKCJkZWNpc2lvblBvaW50TGlzdC5jb250YWlucyhsYXN0T2xkUm93TnVtKSA9ICIgKyBkZWNpc2lvblBvaW50TGlzdC5jb250YWlucyhuZXcgSW50ZWdlcihsYXN0T2xkUm93TnVtKSkpOworLy9TeXN0ZW0ub3V0LnByaW50bG4oImRlY2lzaW9uUG9pbnRMaXN0LmNvbnRhaW5zKGxhc3RDb21iaW5lZFJvd051bSkgPSAiICsgZGVjaXNpb25Qb2ludExpc3QuY29udGFpbnMobmV3IEludGVnZXIobGFzdENvbWJpbmVkUm93TnVtKSkpOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgZGVjaXNpb24gcG9pbnQgbGlzdCBjb250YWlucyBlaXRoZXIgb2YgdGhlIHBhcmVudCByb3dzLAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXBkYXRlIGl0IHRvIGluY2x1ZGUgdGhlIG5ldyByb3cgYXMgd2VsbAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChkZWNpc2lvblBvaW50TGlzdC5jb250YWlucyhuZXcgSW50ZWdlcihvbGRSb3dOdW0pKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBkZWNpc2lvblBvaW50TGlzdC5jb250YWlucyhuZXcgSW50ZWdlcihuZXdSb3dOdW0pKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhZGVjaXNpb25Qb2ludExpc3QuY29udGFpbnMobmV3IEludGVnZXIoY29tYmluZWRSb3dOdW0pKQorICAgICAgICAgICAgICAgICAgICAgICAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25Qb2ludExpc3QuYWRkRWxlbWVudChuZXcgSW50ZWdlcihjb21iaW5lZFJvd051bSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBkbyB0aGUgc2FtZSB0aGluZyB3aXRoIHRoZSBsaXN0IG9mIHJvd3MgYmVpbmcgdXBkYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChyb3dzQmVpbmdVcGRhdGVkLmNvbnRhaW5zKG5ldyBJbnRlZ2VyKG9sZFJvd051bSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHJvd3NCZWluZ1VwZGF0ZWQuY29udGFpbnMobmV3IEludGVnZXIobmV3Um93TnVtKSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIXJvd3NCZWluZ1VwZGF0ZWQuY29udGFpbnMobmV3IEludGVnZXIoY29tYmluZWRSb3dOdW0pKQorICAgICAgICAgICAgICAgICAgICAgICAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjaXNpb25Qb2ludExpc3QuYWRkRWxlbWVudChuZXcgSW50ZWdlcihjb21iaW5lZFJvd051bSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm93IChncm9hbikgZG8gdGhlIHNhbWUgdGhpbmcgZm9yIGFsbCB0aGUgZW50cmllcyBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRlY2lzaW9uIHBvaW50IHN0YWNrCisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IGRlY2lzaW9uUG9pbnRTdGFjay5zaXplKCk7IGsrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvciBkcGwgPSAoVmVjdG9yKWRlY2lzaW9uUG9pbnRTdGFjay5lbGVtZW50QXQoayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChkcGwuY29udGFpbnMobmV3IEludGVnZXIob2xkUm93TnVtKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRwbC5jb250YWlucyhuZXcgSW50ZWdlcihuZXdSb3dOdW0pKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgIWRwbC5jb250YWlucyhuZXcgSW50ZWdlcihjb21iaW5lZFJvd051bSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRwbC5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKGNvbWJpbmVkUm93TnVtKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSU5BTExZIChwdWZmIHB1ZmYgcHVmZiksIGNhbGwgbWVyZ2VTdGF0ZXMoKSByZWN1cnNpdmVseSB0byBjb3B5CisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgcm93IHJlZmVycmVkIHRvIGJ5IG5ld1ZhbHVlcyBpbnRvIHRoZSBuZXcgcm93IGFuZCByZXNvbHZlIGFueQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29uZmxpY3RzIHRoYXQgY29tZSB1cCBhdCB0aGF0IGxldmVsCisgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZVN0YXRlcyhjb21iaW5lZFJvd051bSwgKHNob3J0W10pKHRlbXBTdGF0ZVRhYmxlLmVsZW1lbnRBdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdWYWx1ZXNbaV0pKSwgcm93c0JlaW5nVXBkYXRlZCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIG1lcmdlIGxpc3QgaXMgYSBsaXN0IG9mIHBhaXJzIG9mIHJvd3MgdGhhdCBoYXZlIGJlZW4gbWVyZ2VkIHNvbWV3aGVyZSBpbgorICAgICAgICAgKiB0aGUgcHJvY2VzcyBvZiBidWlsZGluZyB0aGlzIHN0YXRlIHRhYmxlLCBhbG9uZyB3aXRoIHRoZSByb3cgbnVtYmVyIG9mIHRoZQorICAgICAgICAgKiByb3cgY29udGFpbmluZyB0aGUgbWVyZ2VkIHN0YXRlLiAgVGhpcyBmdW5jdGlvbiBsb29rcyB1cCBhIHBhaXIgb2Ygcm93IG51bWJlcnMKKyAgICAgICAgICogYW5kIHJldHVybnMgdGhlIHJvdyBudW1iZXIgb2YgdGhlIHJvdyB0aGV5IGNvbWJpbmUgaW50by4gIChJdCByZXR1cm5zIDAgaWYKKyAgICAgICAgICogdGhpcyBwYWlyIG9mIHJvd3MgaXNuJ3QgaW4gdGhlIG1lcmdlIGxpc3QuKQorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSBpbnQgc2VhcmNoTWVyZ2VMaXN0KGludCBhLCBpbnQgYikgeworICAgICAgICAgICAgLy8gaWYgdGhlcmUgaXMgbm8gbWVyZ2UgbGlzdCwgdGhlcmUgb2J2aW91c2x5IGlzbid0IGFueXRoaW5nIGluIGl0CisgICAgICAgICAgICBpZiAobWVyZ2VMaXN0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gb3RoZXJ3aXNlLCBmb3IgZWFjaCBlbGVtZW50IGluIHRoZSBtZXJnZSBsaXN0Li4uCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnRbXSBlbnRyeTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1lcmdlTGlzdC5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBlbnRyeSA9IChpbnRbXSkobWVyZ2VMaXN0LmVsZW1lbnRBdChpKSk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSBhIGhpdCBpZiB0aGUgdHdvIHJvdyBudW1iZXJzIG1hdGNoIHRoZSB0d28gcm93IG51bWJlcnMKKyAgICAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIGJlZ2lubmluZyBvZiB0aGUgZW50cnkgKHRoZSB0d28gdGhhdCBjb21iaW5lKSwgaW4gZWl0aGVyCisgICAgICAgICAgICAgICAgICAgIC8vIG9yZGVyCisgICAgICAgICAgICAgICAgICAgIGlmICgoZW50cnlbMF0gPT0gYSAmJiBlbnRyeVsxXSA9PSBiKSB8fCAoZW50cnlbMF0gPT0gYiAmJiBlbnRyeVsxXSA9PSBhKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5WzJdOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gd2UgYWxzbyBoYXZlIGEgaGl0IGlmIG9uZSBvZiB0aGUgdHdvIHJvdyBudW1iZXJzIG1hdGNoZXMgdGhlIG1hcmdlZAorICAgICAgICAgICAgICAgICAgICAvLyByb3cgbnVtYmVyIGFuZCB0aGUgb3RoZXIgb25lIG1hdGNoZXMgb25lIG9mIHRoZSBvcmlnaW5hbCByb3cgbnVtYmVycworICAgICAgICAgICAgICAgICAgICBpZiAoKGVudHJ5WzJdID09IGEgJiYgKGVudHJ5WzBdID09IGIgfHwgZW50cnlbMV0gPT0gYikpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZW50cnlbMl07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKChlbnRyeVsyXSA9PSBiICYmIChlbnRyeVswXSA9PSBhIHx8IGVudHJ5WzFdID09IGEpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVudHJ5WzJdOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byB1cGRhdGUgdGhlIGxpc3Qgb2YgY3VycmVudCBsb29vcGluZyBzdGF0ZXMgKGkuZS4sCisgICAgICAgICAqIHN0YXRlcyB0aGF0IGFyZSBjb250cm9sbGVkIGJ5IGEgKj8gY29uc3RydWN0KS4gIEl0IGJhY2tmaWxscyB2YWx1ZXMgZnJvbQorICAgICAgICAgKiB0aGUgbG9vcGluZyBzdGF0ZXMgaW50byB1bnBvcHVsYXRlZCBjZWxscyBvZiB0aGUgc3RhdGVzIHRoYXQgYXJlIGN1cnJlbnRseQorICAgICAgICAgKiBtYXJrZWQgZm9yIGJhY2tmaWxsaW5nLCBhbmQgdGhlbiB1cGRhdGVzIHRoZSBsaXN0IG9mIGxvb3Bpbmcgc3RhdGVzIHRvIGJlCisgICAgICAgICAqIHRoZSBuZXcgbGlzdAorICAgICAgICAgKiBAcGFyYW0gbmV3TG9vcGluZ1N0YXRlcyBUaGUgbGlzdCBvZiBuZXcgbG9vcGluZyBzdGF0ZXMKKyAgICAgICAgICogQHBhcmFtIGVuZFN0YXRlcyBUaGUgbGlzdCBvZiBzdGF0ZXMgdG8gdHJlYXQgYXMgZW5kIHN0YXRlcyAoc3RhdGVzIHRoYXQKKyAgICAgICAgICogY2FuIGV4aXQgdGhlIGxvb3ApLgorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSB2b2lkIHNldExvb3BpbmdTdGF0ZXMoVmVjdG9yIG5ld0xvb3BpbmdTdGF0ZXMsIFZlY3RvciBlbmRTdGF0ZXMpIHsKKworICAgICAgICAgICAgLy8gaWYgdGhlIGN1cnJlbnQgbGlzdCBvZiBsb29waW5nIHN0YXRlcyBpc24ndCBlbXB0eSwgd2UgaGF2ZSB0byBiYWNrZmlsbAorICAgICAgICAgICAgLy8gdmFsdWVzIGZyb20gdGhlIGxvb3Bpbmcgc3RhdGVzIGludG8gdGhlIHN0YXRlcyB0aGF0IGFyZSB3YWl0aW5nIHRvIGJlCisgICAgICAgICAgICAvLyBiYWNrZmlsbGVkCisgICAgICAgICAgICBpZiAoIWxvb3BpbmdTdGF0ZXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgaW50IGxvb3BpbmdTdGF0ZSA9ICgoSW50ZWdlcilsb29waW5nU3RhdGVzLmxhc3RFbGVtZW50KCkpLmludFZhbHVlKCk7CisgICAgICAgICAgICAgICAgaW50IHJvd051bTsKKworICAgICAgICAgICAgICAgIC8vIGRvbid0IGJhY2tmaWxsIGludG8gYW4gZW5kIHN0YXRlIE9SIGFueSBzdGF0ZSByZWFjaGFibGUgZnJvbSBhbiBlbmQgc3RhdGUKKyAgICAgICAgICAgICAgICAvLyAoc2luY2UgdGhlIHNlYXJjaCBmb3IgcmVhY2hhYmxlIHN0YXRlcyBpcyByZWN1cnNpdmUsIGl0J3Mgc3BsaXQgb3V0IGludG8KKyAgICAgICAgICAgICAgICAvLyBhIHNlcGFyYXRlIGZ1bmN0aW9uLCBlbGltaW5hdGVCYWNrZmlsbFN0YXRlcygpLCBiZWxvdykKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGVuZFN0YXRlcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBlbGltaW5hdGVCYWNrZmlsbFN0YXRlcygoKEludGVnZXIpZW5kU3RhdGVzLmVsZW1lbnRBdChpKSkuaW50VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gd2UgRE9OJ1QgYWN0dWFsbHkgYmFja2ZpbGwgdGhlIHN0YXRlcyB0aGF0IG5lZWQgdG8gYmUgYmFja2ZpbGxlZCBoZXJlLgorICAgICAgICAgICAgICAgIC8vIEluc3RlYWQsIHdlIE1BUksgdGhlbSBmb3IgYmFja2ZpbGxpbmcuICBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHRoYXQgaWYKKyAgICAgICAgICAgICAgICAvLyB0aGVyZSBhcmUgbXVsdGlwbGUgcnVsZXMgaW4gdGhlIHN0YXRlLXRhYmxlIGRlc2NyaXB0aW9uLCB0aGUgbG9vcGluZworICAgICAgICAgICAgICAgIC8vIHN0YXRlcyBtYXkgaGF2ZSBzb21lIG9mIHRoZWlyIHZhbHVlcyBjaGFuZ2VkIGJ5IGEgc3VjY2VlZGluZyBydWxlLCBhbmQKKyAgICAgICAgICAgICAgICAvLyB0aGlzIHdvdWxkbid0IGJlIHJlZmxlY3RlZCBpbiB0aGUgYmFja2ZpbGxlZCBzdGF0ZXMuICBXZSBtYXJrIGEgc3RhdGUKKyAgICAgICAgICAgICAgICAvLyBmb3IgYmFja2ZpbGxpbmcgYnkgcHV0dGluZyB0aGUgcm93IG51bWJlciBvZiB0aGUgc3RhdGUgdG8gY29weSBmcm9tCisgICAgICAgICAgICAgICAgLy8gaW50byB0aGUgZmxhZyBjZWxsIGF0IHRoZSBlbmQgb2YgdGhlIHJvdworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3RhdGVzVG9CYWNrZmlsbC5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICByb3dOdW0gPSAoKEludGVnZXIpc3RhdGVzVG9CYWNrZmlsbC5lbGVtZW50QXQoaSkpLmludFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIHNob3J0W10gc3RhdGUgPSAoc2hvcnRbXSl0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQocm93TnVtKTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbbnVtQ2F0ZWdvcmllc10gPQorICAgICAgICAgICAgICAgICAgICAgICAgKHNob3J0KSgoc3RhdGVbbnVtQ2F0ZWdvcmllc10gJiBBTExfRkxBR1MpIHwgbG9vcGluZ1N0YXRlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RhdGVzVG9CYWNrZmlsbC5yZW1vdmVBbGxFbGVtZW50cygpOworICAgICAgICAgICAgICAgIGxvb3BpbmdTdGF0ZXMucmVtb3ZlQWxsRWxlbWVudHMoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG5ld0xvb3BpbmdTdGF0ZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGxvb3BpbmdTdGF0ZXMgPSAoVmVjdG9yKW5ld0xvb3BpbmdTdGF0ZXMuY2xvbmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGlzIHJlbW92ZXMgImVuZGluZyBzdGF0ZXMiIGFuZCBzdGF0ZXMgcmVhY2hhYmxlIGZyb20gdGhlbSBmcm9tIHRoZQorICAgICAgICAgKiBsaXN0IG9mIHN0YXRlcyB0byBiYWNrZmlsbC4KKyAgICAgICAgICogQHBhcmFtIFRoZSByb3cgbnVtYmVyIG9mIHRoZSBzdGF0ZSB0byByZW1vdmUgZnJvbSB0aGUgYmFja2ZpbGwgbGlzdAorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSB2b2lkIGVsaW1pbmF0ZUJhY2tmaWxsU3RhdGVzKGludCBiYXNlU3RhdGUpIHsKKworICAgICAgICAgICAgLy8gZG9uJ3QgZG8gYW55dGhpbmcgdW5sZXNzIHRoaXMgc3RhdGUgaXMgYWN0dWFsbHkgaW4gdGhlIGJhY2tmaWxsIGxpc3QuLi4KKyAgICAgICAgICAgIGlmIChzdGF0ZXNUb0JhY2tmaWxsLmNvbnRhaW5zKG5ldyBJbnRlZ2VyKGJhc2VTdGF0ZSkpKSB7CisKKyAgICAgICAgICAgICAgICAvLyBpZiBpdCBpcywgdGFrZSBpdCBvdXQKKyAgICAgICAgICAgICAgICBzdGF0ZXNUb0JhY2tmaWxsLnJlbW92ZUVsZW1lbnQobmV3IEludGVnZXIoYmFzZVN0YXRlKSk7CisKKyAgICAgICAgICAgICAgICAvLyB0aGVuIGdvIHRocm91Z2ggYW5kIHJlY3Vyc2l2ZWx5IGNhbGwgdGhpcyBmdW5jdGlvbiBmb3IgZXZlcnkKKyAgICAgICAgICAgICAgICAvLyBzdGF0ZSB0aGF0IHRoZSBiYXNlIHN0YXRlIHBvaW50cyB0bworICAgICAgICAgICAgICAgIHNob3J0W10gc3RhdGUgPSAoc2hvcnRbXSl0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQoYmFzZVN0YXRlKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNhdGVnb3JpZXM7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVbaV0gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZWxpbWluYXRlQmFja2ZpbGxTdGF0ZXMoc3RhdGVbaV0pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoaXMgZnVuY3Rpb24gY29tcGxldGVzIHRoZSBiYWNrZmlsbGluZyBwcm9jZXNzIGJ5IGFjdHVhbGx5IGRvaW5nIHRoZQorICAgICAgICAgKiBiYWNrZmlsbGluZyBvbiB0aGUgc3RhdGVzIHRoYXQgYXJlIG1hcmtlZCBmb3IgaXQKKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgdm9pZCBiYWNrZmlsbExvb3BpbmdTdGF0ZXMoKSB7CisgICAgICAgICAgICBzaG9ydFtdIHN0YXRlOworICAgICAgICAgICAgc2hvcnRbXSBsb29waW5nU3RhdGUgPSBudWxsOworICAgICAgICAgICAgaW50IGxvb3BpbmdTdGF0ZVJvd051bSA9IDA7CisgICAgICAgICAgICBpbnQgZnJvbVN0YXRlOworCisgICAgICAgICAgICAvLyBmb3IgZWFjaCBzdGF0ZSBpbiB0aGUgc3RhdGUgdGFibGUuLi4KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVtcFN0YXRlVGFibGUuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IChzaG9ydFtdKXRlbXBTdGF0ZVRhYmxlLmVsZW1lbnRBdChpKTsKKworICAgICAgICAgICAgICAgIC8vIGNoZWNrIHRoZSBzdGF0ZSdzIGZsYWcgd29yZCB0byBzZWUgaWYgaXQncyBtYXJrZWQgZm9yIGJhY2tmaWxsaW5nCisgICAgICAgICAgICAgICAgLy8gKGl0J3MgbWFya2VkIGZvciBiYWNrZmlsbGluZyBpZiBhbnkgYml0cyBvdGhlciB0aGFuIHRoZSB0d28gaGlnaC1vcmRlcgorICAgICAgICAgICAgICAgIC8vIGJpdHMgYXJlIHNldC0tIGlmIHRoZXkgYXJlLCB0aGVuIHRoZSBmbGFnIHdvcmQsIG1pbnVzIHRoZSB0d28gaGlnaCBiaXRzLAorICAgICAgICAgICAgICAgIC8vIGlzIHRoZSByb3cgbnVtYmVyIHRvIGNvcHkgZnJvbSkKKyAgICAgICAgICAgICAgICBmcm9tU3RhdGUgPSBzdGF0ZVtudW1DYXRlZ29yaWVzXSAmIH5BTExfRkxBR1M7CisgICAgICAgICAgICAgICAgaWYgKGZyb21TdGF0ZSA+IDApIHsKKworICAgICAgICAgICAgICAgICAgICAvLyBsb2FkIHVwIHRoZSBzdGF0ZSB0byBjb3B5IGZyb20gKGlmIHdlIGhhdmVuJ3QgYWxyZWFkeSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZyb21TdGF0ZSAhPSBsb29waW5nU3RhdGVSb3dOdW0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BpbmdTdGF0ZVJvd051bSA9IGZyb21TdGF0ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BpbmdTdGF0ZSA9IChzaG9ydFtdKXRlbXBTdGF0ZVRhYmxlLmVsZW1lbnRBdChsb29waW5nU3RhdGVSb3dOdW0pOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gY2xlYXIgb3V0IHRoZSBiYWNrZmlsbCBwYXJ0IG9mIHRoZSBmbGFnIHdvcmQKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVbbnVtQ2F0ZWdvcmllc10gJj0gQUxMX0ZMQUdTOworCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gZmlsbCBhbGwgemVybyBjZWxscyBpbiB0aGUgY3VycmVudCBzdGF0ZSB3aXRoIHZhbHVlcworICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIHRoZSBjb3JyZXNwb25kaW5nIGNlbGxzIG9mIHRoZSBmcm9tU3RhdGUKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBzdGF0ZS5sZW5ndGg7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlW2pdID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZVtqXSA9IGxvb3BpbmdTdGF0ZVtqXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXRlW2pdID09IERPTlRfTE9PUF9GTEFHKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVbal0gPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoaXMgZnVuY3Rpb24gY29tcGxldGVzIHRoZSBzdGF0ZS10YWJsZS1idWlsZGluZyBwcm9jZXNzIGJ5IGRvaW5nIHNldmVyYWwKKyAgICAgICAgICogcG9zdHByb2Nlc3Npbmcgc3RlcHMgYW5kIGNvcHlpbmcgZXZlcnl0aGluZyBpbnRvIGl0cyBmaW5hbCByZXN0aW5nIHBsYWNlCisgICAgICAgICAqIGluIHRoZSBpdGVyYXRvciBpdHNlbGYKKyAgICAgICAgICogQHBhcmFtIGZvcndhcmQgVHJ1ZSBpZiB3ZSdyZSB3b3JraW5nIG9uIHRoZSBmb3J3YXJkIHN0YXRlIHRhYmxlCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIHZvaWQgZmluaXNoQnVpbGRpbmdTdGF0ZVRhYmxlKGJvb2xlYW4gZm9yd2FyZCkgeworLy9kZWJ1Z1ByaW50VGVtcFN0YXRlVGFibGUoKTsKKyAgICAgICAgICAgIC8vIHN0YXJ0IGJ5IGJhY2tmaWxsaW5nIHRoZSBsb29waW5nIHN0YXRlcworICAgICAgICAgICAgYmFja2ZpbGxMb29waW5nU3RhdGVzKCk7CisvL2RlYnVnUHJpbnRUZW1wU3RhdGVUYWJsZSgpOworCisgICAgICAgICAgICBpbnRbXSByb3dOdW1NYXAgPSBuZXcgaW50W3RlbXBTdGF0ZVRhYmxlLnNpemUoKV07CisgICAgICAgICAgICBTdGFjayByb3dzVG9Gb2xsb3cgPSBuZXcgU3RhY2soKTsKKyAgICAgICAgICAgIHJvd3NUb0ZvbGxvdy5wdXNoKG5ldyBJbnRlZ2VyKDEpKTsKKyAgICAgICAgICAgIHJvd051bU1hcFsxXSA9IDE7CisKKyAgICAgICAgICAgIC8vIGRldGVybWluZSB3aGljaCBzdGF0ZXMgYXJlIG5vIGxvbmdlciByZWFjaGFibGUgZnJvbSB0aGUgc3RhcnQgc3RhdGUKKyAgICAgICAgICAgIC8vICh0aGUgcmVhY2hhYmxlIHN0YXRlcyB3aWxsIGhhdmUgdGhlaXIgcm93IG51bWJlcnMgaW4gdGhlIHJvdyBudW1iZXIKKyAgICAgICAgICAgIC8vIG1hcCwgYW5kIHRoZSBub25yZWFjaGFibGUgc3RhdGVzIHdpbGwgaGF2ZSB6ZXJvIGluIHRoZSByb3cgbnVtYmVyIG1hcCkKKyAgICAgICAgICAgIHdoaWxlIChyb3dzVG9Gb2xsb3cuc2l6ZSgpICE9IDApIHsKKyAgICAgICAgICAgICAgICBpbnQgcm93TnVtID0gKChJbnRlZ2VyKXJvd3NUb0ZvbGxvdy5wb3AoKSkuaW50VmFsdWUoKTsKKyAgICAgICAgICAgICAgICBzaG9ydFtdIHJvdyA9IChzaG9ydFtdKSh0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQocm93TnVtKSk7CisKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNhdGVnb3JpZXM7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBpZiAocm93W2ldICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyb3dOdW1NYXBbcm93W2ldXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93TnVtTWFwW3Jvd1tpXV0gPSByb3dbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93c1RvRm9sbG93LnB1c2gobmV3IEludGVnZXIocm93W2ldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisvKgorU3lzdGVtLm91dC5wcmludGxuKCJUaGUgZm9sbG93aW5nIHJvd3MgYXJlIG5vdCByZWFjaGFibGU6Iik7Citmb3IgKGludCBpID0gMTsgaSA8IHJvd051bU1hcC5sZW5ndGg7IGkrKykKK2lmIChyb3dOdW1NYXBbaV0gPT0gMCkgU3lzdGVtLm91dC5wcmludCgiXHQiICsgaSk7CitTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyovCisKKyAgICAgICAgICAgIGJvb2xlYW4gbWFkZUNoYW5nZTsKKyAgICAgICAgICAgIGludCBuZXdSb3dOdW07CisKKyAgICAgICAgICAgIC8vIGFsZ29yaXRobSBmb3IgbWluaW1pemluZyB0aGUgbnVtYmVyIG9mIHN0YXRlcyBpbiB0aGUgdGFibGUgYWRhcHRlZCBmcm9tCisgICAgICAgICAgICAvLyBBaG8gJiBVbGxtYW4sICJQcmluY2lwbGVzIG9mIENvbXBpbGVyIERlc2lnbiIKKyAgICAgICAgICAgIC8vIFRoZSBiYXNpYyBpZGVhIGhlcmUgaXMgdG8gb3JnYW5pemUgdGhlIHN0YXRlcyBpbnRvIGNsYXNzZXMuICBXaGVuIHdlJ3JlIGRvbmUsCisgICAgICAgICAgICAvLyBhbGwgc3RhdGVzIGluIHRoZSBzYW1lIGNsYXNzIGNhbiBiZSBjb25zaWRlcmVkIGlkZW50aWNhbCBhbmQgYWxsIGJ1dCBvbmUgZWxpbWluYXRlZC4KKworICAgICAgICAgICAgLy8gaW5pdGlhbGx5IGFzc2lnbiBzdGF0ZXMgdG8gY2xhc3NlcyBiYXNlZCBvbiB0aGUgbnVtYmVyIG9mIHBvcHVsYXRlZCBjZWxscyB0aGV5CisgICAgICAgICAgICAvLyBjb250YWluICh0aGUgY2xhc3MgbnVtYmVyIGlzIHRoZSBudW1iZXIgb2YgcG9wdWxhdGVkIGNlbGxzKQorICAgICAgICAgICAgaW50W10gc3RhdGVDbGFzc2VzID0gbmV3IGludFt0ZW1wU3RhdGVUYWJsZS5zaXplKCldOworICAgICAgICAgICAgaW50IG5leHRDbGFzcyA9IG51bUNhdGVnb3JpZXMgKyAxOworICAgICAgICAgICAgc2hvcnRbXSBzdGF0ZTEsIHN0YXRlMjsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgc3RhdGVDbGFzc2VzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKHJvd051bU1hcFtpXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZTEgPSAoc2hvcnRbXSl0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBudW1DYXRlZ29yaWVzOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlMVtqXSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICArK3N0YXRlQ2xhc3Nlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc3RhdGVDbGFzc2VzW2ldID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGVDbGFzc2VzW2ldID0gbmV4dENsYXNzOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICsrbmV4dENsYXNzOworCisgICAgICAgICAgICAvLyB0aGVuLCBmb3IgZWFjaCBjbGFzcywgZWxlY3QgdGhlIGZpcnN0IG1lbWJlciBvZiB0aGF0IGNsYXNzIGFzIHRoYXQgY2xhc3MncworICAgICAgICAgICAgLy8gInJlcHJlc2VudGF0aXZlIi4gIEZvciBlYWNoIG1lbWJlciBvZiB0aGUgY2xhc3MsIGNvbXBhcmUgaXQgdG8gdGhlICJyZXByZXNlbnRhdGl2ZS4iCisgICAgICAgICAgICAvLyBJZiB0aGVyZSdzIGEgY29sdW1uIHBvc2l0aW9uIHdoZXJlIHRoZSBzdGF0ZSBiZWluZyB0ZXN0ZWQgdHJhbnNpdGlvbnMgdG8gYQorICAgICAgICAgICAgLy8gc3RhdGUgaW4gYSBESUZGRVJFTlQgY2xhc3MgZnJvbSB0aGUgY2xhc3Mgd2hlcmUgdGhlICJyZXByZXNlbnRhdGl2ZSIgdHJhbnNpdGlvbnMsCisgICAgICAgICAgICAvLyB0aGVuIG1vdmUgdGhlIHN0YXRlIGludG8gYSBuZXcgY2xhc3MuICBSZXBlYXQgdGhpcyBwcm9jZXNzIHVudGlsIG5vIG5ldyBjbGFzc2VzCisgICAgICAgICAgICAvLyBhcmUgY3JlYXRlZC4KKyAgICAgICAgICAgIGludCBjdXJyZW50Q2xhc3M7CisgICAgICAgICAgICBpbnQgbGFzdENsYXNzOworICAgICAgICAgICAgYm9vbGVhbiBzcGxpdDsKKworICAgICAgICAgICAgZG8geworLy9TeXN0ZW0ub3V0LnByaW50bG4oIk1ha2luZyBhIHBhc3MuLi4iKTsKKyAgICAgICAgICAgICAgICBjdXJyZW50Q2xhc3MgPSAxOworICAgICAgICAgICAgICAgIGxhc3RDbGFzcyA9IG5leHRDbGFzczsKKyAgICAgICAgICAgICAgICB3aGlsZSAoY3VycmVudENsYXNzIDwgbmV4dENsYXNzKSB7CisvL1N5c3RlbS5vdXQucHJpbnQoIlN0YXRlcyBpbiBjbGFzcyAjIiArIGN1cnJlbnRDbGFzcyArIjoiKTsKKyAgICAgICAgICAgICAgICAgICAgc3BsaXQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUxID0gc3RhdGUyID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdGF0ZUNsYXNzZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZUNsYXNzZXNbaV0gPT0gY3VycmVudENsYXNzKSB7CisvL1N5c3RlbS5vdXQucHJpbnQoIlx0IiArIGkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZTEgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTEgPSAoc2hvcnRbXSl0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTIgPSAoc2hvcnRbXSl0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgc3RhdGUyLmxlbmd0aDsgaisrKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChqID09IG51bUNhdGVnb3JpZXMgJiYgc3RhdGUxW2pdICE9IHN0YXRlMltqXSAmJiBmb3J3YXJkKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoaiAhPSBudW1DYXRlZ29yaWVzICYmIHN0YXRlQ2xhc3Nlc1tzdGF0ZTFbal1dCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICE9IHN0YXRlQ2xhc3Nlc1tzdGF0ZTJbal1dKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlQ2xhc3Nlc1tpXSA9IG5leHRDbGFzczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpdCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChzcGxpdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgKytuZXh0Q2xhc3M7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgKytjdXJyZW50Q2xhc3M7CisvL1N5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gd2hpbGUgKGxhc3RDbGFzcyAhPSBuZXh0Q2xhc3MpOworCisgICAgICAgICAgICAvLyBhdCB0aGlzIHBvaW50LCBhbGwgb2YgdGhlIHN0YXRlcyBpbiBhIGNsYXNzIGV4Y2VwdCB0aGUgZmlyc3Qgb25lICh0aGUKKyAgICAgICAgICAgIC8vInJlcHJlc2VudGF0aXZlIikgY2FuIGJlIGVsaW1pbmF0ZWQsIHNvIHVwZGF0ZSB0aGUgcm93LW51bWJlciBtYXAgYWNjb3JkaW5nbHkKKyAgICAgICAgICAgIGludFtdIHJlcHJlc2VudGF0aXZlcyA9IG5ldyBpbnRbbmV4dENsYXNzXTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgc3RhdGVDbGFzc2VzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgICAgIGlmIChyZXByZXNlbnRhdGl2ZXNbc3RhdGVDbGFzc2VzW2ldXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJlcHJlc2VudGF0aXZlc1tzdGF0ZUNsYXNzZXNbaV1dID0gaTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJvd051bU1hcFtpXSA9IHJlcHJlc2VudGF0aXZlc1tzdGF0ZUNsYXNzZXNbaV1dOworICAgICAgICAgICAgICAgIH0KKy8vU3lzdGVtLm91dC5wcmludGxuKCJSZW51bWJlcmluZy4uLiIpOworCisgICAgICAgICAgICAvLyByZW51bWJlciBhbGwgcmVtYWluaW5nIHJvd3MuLi4KKyAgICAgICAgICAgIC8vIGZpcnN0IGRyb3AgYWxsIHRoYXQgYXJlIGVpdGhlciB1bnJlZmVyZW5jZWQgb3Igbm90IGEgY2xhc3MgcmVwcmVzZW50YXRpdmUKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgcm93TnVtTWFwLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKHJvd051bU1hcFtpXSAhPSBpKSB7CisgICAgICAgICAgICAgICAgICAgIHRlbXBTdGF0ZVRhYmxlLnNldEVsZW1lbnRBdChudWxsLCBpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHRoZW4gY2FsY3VsYXRlIGV2ZXJ5Ym9keSdzIG5ldyByb3cgbnVtYmVyIGFuZCB1cGRhdGUgdGhlIHJvdworICAgICAgICAgICAgLy8gbnVtYmVyIG1hcCBhcHByb3ByaWF0ZWx5ICh0aGUgZmlyc3QgcGFzcyB1cGRhdGVzIHRoZSByb3cgbnVtYmVycworICAgICAgICAgICAgLy8gb2YgYWxsIHRoZSBjbGFzcyByZXByZXNlbnRhdGl2ZXMgW3RoZSByb3dzIHdlJ3JlIGtlZXBpbmddLCBhbmQgdGhlCisgICAgICAgICAgICAvLyBzZWNvbmQgcGFzcyB1cGRhdGVzIHRoZSBjcm9zcyByZWZlcmVuY2VzIGZvciBhbGwgdGhlIHJvd3MgdGhhdAorICAgICAgICAgICAgLy8gYXJlIGJlaW5nIGRlbGV0ZWQpCisgICAgICAgICAgICBuZXdSb3dOdW0gPSAxOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCByb3dOdW1NYXAubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAodGVtcFN0YXRlVGFibGUuZWxlbWVudEF0KGkpICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcm93TnVtTWFwW2ldID0gbmV3Um93TnVtKys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCByb3dOdW1NYXAubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAodGVtcFN0YXRlVGFibGUuZWxlbWVudEF0KGkpID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcm93TnVtTWFwW2ldID0gcm93TnVtTWFwW3Jvd051bU1hcFtpXV07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorLy9mb3IgKGludCBpID0gMTsgaSA8IHJvd051bU1hcC5sZW5ndGg7IGkrKykgcm93TnVtTWFwW2ldID0gaTsgaW50IG5ld1Jvd051bSA9IHJvd051bU1hcC5sZW5ndGg7CisKKyAgICAgICAgICAgIC8vIGFsbG9jYXRlIHRoZSBwZXJtYW5lbnQgc3RhdGUgdGFibGUsIGFuZCBjb3B5IHRoZSByZW1haW5pbmcgcm93cyBpbnRvIGl0CisgICAgICAgICAgICAvLyAoYWRqdXN0aW5nIGFsbCB0aGUgY2VsbCB2YWx1ZXMsIG9mIGNvdXJzZSkKKworICAgICAgICAgICAgLy8gdGhpcyBzZWN0aW9uIGRvZXMgdGhhdCBmb3IgdGhlIGZvcndhcmQgc3RhdGUgdGFibGUKKyAgICAgICAgICAgIGlmIChmb3J3YXJkKSB7CisgICAgICAgICAgICAgICAgZW5kU3RhdGVzID0gbmV3IGJvb2xlYW5bbmV3Um93TnVtXTsKKyAgICAgICAgICAgICAgICBsb29rYWhlYWRTdGF0ZXMgPSBuZXcgYm9vbGVhbltuZXdSb3dOdW1dOworICAgICAgICAgICAgICAgIHN0YXRlVGFibGUgPSBuZXcgc2hvcnRbbmV3Um93TnVtICogbnVtQ2F0ZWdvcmllc107CisgICAgICAgICAgICAgICAgaW50IHAgPSAwOworICAgICAgICAgICAgICAgIGludCBwMiA9IDA7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZW1wU3RhdGVUYWJsZS5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBzaG9ydFtdIHJvdyA9IChzaG9ydFtdKSh0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQoaSkpOworICAgICAgICAgICAgICAgICAgICBpZiAocm93ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVtQ2F0ZWdvcmllczsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZVRhYmxlW3BdID0gKHNob3J0KShyb3dOdW1NYXBbcm93W2pdXSk7CisgICAgICAgICAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZW5kU3RhdGVzW3AyXSA9ICgocm93W251bUNhdGVnb3JpZXNdICYgRU5EX1NUQVRFX0ZMQUcpICE9IDApOworICAgICAgICAgICAgICAgICAgICBsb29rYWhlYWRTdGF0ZXNbcDJdID0gKChyb3dbbnVtQ2F0ZWdvcmllc10gJiBMT09LQUhFQURfU1RBVEVfRkxBRykgIT0gMCk7CisgICAgICAgICAgICAgICAgICAgICsrcDI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBhbmQgdGhpcyBzZWN0aW9uIGRvZXMgaXQgZm9yIHRoZSBiYWNrd2FyZCBzdGF0ZSB0YWJsZQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYmFja3dhcmRzU3RhdGVUYWJsZSA9IG5ldyBzaG9ydFtuZXdSb3dOdW0gKiBudW1DYXRlZ29yaWVzXTsKKyAgICAgICAgICAgICAgICBpbnQgcCA9IDA7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZW1wU3RhdGVUYWJsZS5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBzaG9ydFtdIHJvdyA9IChzaG9ydFtdKSh0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQoaSkpOworICAgICAgICAgICAgICAgICAgICBpZiAocm93ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVtQ2F0ZWdvcmllczsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBiYWNrd2FyZHNTdGF0ZVRhYmxlW3BdID0gKHNob3J0KShyb3dOdW1NYXBbcm93W2pdXSk7CisgICAgICAgICAgICAgICAgICAgICAgICArK3A7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogVGhpcyBmdW5jdGlvbiBidWlsZHMgdGhlIGJhY2t3YXJkIHN0YXRlIHRhYmxlIGZyb20gdGhlIGZvcndhcmQgc3RhdGUKKyAgICAgICAgICogdGFibGUgYW5kIGFueSBhZGRpdGlvbmFsIHJ1bGVzIChpZGVudGlmaWVkIGJ5IHRoZSAhIG9uIHRoZSBmcm9udCkKKyAgICAgICAgICogc3VwcGxpZWQgaW4gdGhlIGRlc2NyaXB0aW9uCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIHZvaWQgYnVpbGRCYWNrd2FyZHNTdGF0ZVRhYmxlKFZlY3RvciB0ZW1wUnVsZUxpc3QpIHsKKworICAgICAgICAgICAgLy8gY3JlYXRlIHRoZSB0ZW1wb3Jhcnkgc3RhdGUgdGFibGUgYW5kIHNlZWQgaXQgd2l0aCB0d28gcm93cyAocm93IDAKKyAgICAgICAgICAgIC8vIGlzbid0IHVzZWQgZm9yIGFueXRoaW5nLCBhbmQgd2UgaGF2ZSB0byBjcmVhdGUgcm93IDEgKHRoZSBpbml0aWFsCisgICAgICAgICAgICAvLyBzdGF0ZSkgYmVmb3JlIHdlIGNhbiBkbyBhbnl0aGluZyBlbHNlCisgICAgICAgICAgICB0ZW1wU3RhdGVUYWJsZSA9IG5ldyBWZWN0b3IoKTsKKyAgICAgICAgICAgIHRlbXBTdGF0ZVRhYmxlLmFkZEVsZW1lbnQobmV3IHNob3J0W251bUNhdGVnb3JpZXMgKyAxXSk7CisgICAgICAgICAgICB0ZW1wU3RhdGVUYWJsZS5hZGRFbGVtZW50KG5ldyBzaG9ydFtudW1DYXRlZ29yaWVzICsgMV0pOworCisgICAgICAgICAgICAvLyBhbHRob3VnaCB0aGUgYmFja3dhcmRzIHN0YXRlIHRhYmxlIGlzIGJ1aWx0IGF1dG9tYXRpY2FsbHkgZnJvbSB0aGUgZm9yd2FyZAorICAgICAgICAgICAgLy8gc3RhdGUgdGFibGUsIHRoZXJlIGFyZSBzb21lIHNpdHVhdGlvbnMgKHRoZSBkZWZhdWx0IHNlbnRlbmNlLWJyZWFrIHJ1bGVzLAorICAgICAgICAgICAgLy8gZm9yIGV4YW1wbGUpIHdoZXJlIHRoaXMgZG9lc24ndCB5aWVsZCBlbm91Z2ggc3RvcCBzdGF0ZXMsIGNhdXNpbmcgYSBkcmFtYXRpYworICAgICAgICAgICAgLy8gZHJvcCBpbiBwZXJmb3JtYW5jZS4gIFRvIGhlbHAgd2l0aCB0aGVzZSBjYXNlcywgdGhlIHVzZXIgbWF5IHN1cHBseQorICAgICAgICAgICAgLy8gc3VwcGxlbWVudGFsIHJ1bGVzIHRoYXQgYXJlIGFkZGVkIHRvIHRoZSBiYWNrd2FyZCBzdGF0ZSB0YWJsZS4gIFRoZXNlIGhhdmUKKyAgICAgICAgICAgIC8vIHRoZSBzYW1lIHN5bnRheCBhcyB0aGUgbm9ybWFsIGJyZWFrIHJ1bGVzLCBidXQgYmVnaW4gd2l0aCAnIScgdG8gZGlzdGluZ3Vpc2gKKyAgICAgICAgICAgIC8vIHRoZW0gZnJvbSBub3JtYWwgYnJlYWsgcnVsZXMKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVtcFJ1bGVMaXN0LnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHJ1bGUgPSAoU3RyaW5nKXRlbXBSdWxlTGlzdC5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgICAgaWYgKHJ1bGUuY2hhckF0KDApID09ICchJykgeworICAgICAgICAgICAgICAgICAgICBwYXJzZVJ1bGUocnVsZS5zdWJzdHJpbmcoMSksIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBiYWNrZmlsbExvb3BpbmdTdGF0ZXMoKTsKKworICAgICAgICAgICAgLy8gQmFja3dhcmRzIGl0ZXJhdGlvbiBpcyBxdWFsaXRhdGl2ZWx5IGRpZmZlcmVudCBmcm9tIGZvcndhcmRzIGl0ZXJhdGlvbi4KKyAgICAgICAgICAgIC8vIFRoaXMgaXMgYmVjYXVzZSBiYWNrd2FyZHMgaXRlcmF0aW9uIGhhcyB0byBiZSBtYWRlIHRvIG9wZXJhdGUgZnJvbSBubyBjb250ZXh0CisgICAgICAgICAgICAvLyBhdCBhbGwtLSB0aGUgdXNlciBzaG91bGQgYmUgYWJsZSB0byBhc2sgQnJlYWtJdGVyYXRvciBmb3IgdGhlIGJyZWFrIHBvc2l0aW9uCisgICAgICAgICAgICAvLyBpbW1lZGlhdGVseSBvbiBlaXRoZXIgc2lkZSBvZiBzb21lIGFyYml0cmFyeSBvZmZzZXQgaW4gdGhlIHRleHQuICBUaGUKKyAgICAgICAgICAgIC8vIGZvcndhcmQgaXRlcmF0aW9uIHRhYmxlIGRvZXNuJ3QgbGV0IHVzIGRvIHRoYXQtLSBpdCBhc3N1bWVzIGNvbXBsZXRlCisgICAgICAgICAgICAvLyBpbmZvcm1hdGlvbiBvbiB0aGUgY29udGV4dCwgd2hpY2ggbWVhbnMgc3RhcnRpbmcgZnJvbSB0aGUgYmVnaW5uaW5nIG9mIHRoZQorICAgICAgICAgICAgLy8gZG9jdW1lbnQuCisgICAgICAgICAgICAvLyBUaGUgd2F5IHdlIGRvIGJhY2t3YXJkIGFuZCByYW5kb20tYWNjZXNzIGl0ZXJhdGlvbiBpcyB0byBiYWNrIHVwIGZyb20gdGhlCisgICAgICAgICAgICAvLyBjdXJyZW50IChvciB1c2VyLXNwZWNpZmllZCkgcG9zaXRpb24gdW50aWwgd2Ugc2VlIHNvbWV0aGluZyB3ZSdyZSBzdXJlIGlzCisgICAgICAgICAgICAvLyBhIGJyZWFrIHBvc2l0aW9uIChpdCBtYXkgbm90IGJlIHRoZSBsYXN0IGJyZWFrIHBvc2l0aW9uIGltbWVkaWF0ZWx5CisgICAgICAgICAgICAvLyBwcmVjZWRpbmcgb3VyIHN0YXJ0aW5nIHBvaW50LCBob3dldmVyKS4gIFRoZW4gd2Ugcm9sbCBmb3J3YXJkIGZyb20gdGhlcmUgdG8KKyAgICAgICAgICAgIC8vIGxvY2F0ZSB0aGUgYWN0dWFsIGJyZWFrIHBvc2l0aW9uIHdlJ3JlIGFmdGVyLgorICAgICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGF0IHRoZSBiYWNrd2FyZHMgc3RhdGUgdGFibGUgZG9lc24ndCBoYXZlIHRvIGlkZW50aWZ5IGV2ZXJ5CisgICAgICAgICAgICAvLyBicmVhayBwb3NpdGlvbiwgYWxsb3dpbmcgdGhlIGJ1aWxkaW5nIGFsZ29yaXRobSB0byBiZSBtdWNoIHNpbXBsZXIuICBIZXJlLAorICAgICAgICAgICAgLy8gd2UgdXNlIGEgInBhaXJzIiBhcHByb2FjaCwgc2Nhbm5pbmcgdGhlIGZvcndhcmQtaXRlcmF0aW9uIHN0YXRlIHRhYmxlIGZvcgorICAgICAgICAgICAgLy8gcGFpcnMgb2YgY2hhcmFjdGVyIGNhdGVnb3JpZXMgd2UgQUxXQVlTIGJyZWFrIGJldHdlZW4sIGFuZCBidWlsZGluZyBhIHN0YXRlCisgICAgICAgICAgICAvLyB0YWJsZSBmcm9tIHRoYXQgaW5mb3JtYXRpb24uICBObyBjb250ZXh0IGlzIHJlcXVpcmVkLS0gYWxsIHRoaXMgc3RhdGUgdGFibGUKKyAgICAgICAgICAgIC8vIGxvb2tzIGF0IGlzIGEgcGFpciBvZiBhZGphY2VudCBjaGFyYWN0ZXJzLgorCisgICAgICAgICAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHVzZXIgaGFzIHN1cHBsaWVkIHN1cHBsZW1lbnRhcnkgcnVsZXMgKHNlZSBhYm92ZSkuCisgICAgICAgICAgICAvLyBUaGlzIGhhcyB0byBiZSBkb25lIGZpcnN0IHRvIGtlZXAgcGFyc2VSdWxlKCkgYW5kIGZyaWVuZHMgZnJvbSBiZWNvbWluZworICAgICAgICAgICAgLy8gRVZFTiBNT1JFIGNvbXBsaWNhdGVkLiAgVGhlIGF1dG9tYXRpY2FsbHktZ2VuZXJhdGVkIHN0YXRlcyBhcmUgYXBwZW5kZWQKKyAgICAgICAgICAgIC8vIG9udG8gdGhlIGVuZCBvZiB0aGUgc3RhdGUgdGFibGUsIGFuZCB0aGVuIHRoZSB0d28gc2V0cyBvZiBydWxlcyBhcmUKKyAgICAgICAgICAgIC8vIHN0aXRjaGVkIHRvZ2V0aGVyIGF0IHRoZSBlbmQuICBUYWtlIG5vdGUgb2YgdGhlIHJvdyBudW1iZXIgb2YgdGhlCisgICAgICAgICAgICAvLyBmaXJzdCByb3cgb2YgdGhlIGF1cm9tYXRpY2FsbHktZ2VuZXJhdGVkIHBhcnQuCisgICAgICAgICAgICBpbnQgYmFja1RhYmxlT2Zmc2V0ID0gdGVtcFN0YXRlVGFibGUuc2l6ZSgpOworICAgICAgICAgICAgaWYgKGJhY2tUYWJsZU9mZnNldCA+IDIpIHsKKyAgICAgICAgICAgICAgICArK2JhY2tUYWJsZU9mZnNldDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gdGhlIGF1dG9tYXRpY2FsbHktZ2VuZXJhdGVkIHBhcnQgb2YgdGhlIHRhYmxlIG1vZGVscyBhIHR3by1kaW1lbnNpb25hbAorICAgICAgICAgICAgLy8gYXJyYXkgd2hlcmUgdGhlIHR3byBkaW1lbnNpb25zIHJlcHJlc2VudCB0aGUgdHdvIGNoYXJhY3RlcnMgd2UncmUgY3VycmVudGx5CisgICAgICAgICAgICAvLyBsb29raW5nIGF0LiAgVG8gbW9kZWwgdGhpcyBhcyBhIHN0YXRlIHRhYmxlLCB3ZSBhY3R1YWxseSBuZWVkIG9uZSBhZGRpdGlvbmFsCisgICAgICAgICAgICAvLyByb3cgdG8gcmVwcmVzZW50IHRoZSBpbml0aWFsIHN0YXRlLiAgSXQgZ2V0cyBwb3B1bGF0ZWQgd2l0aCB0aGUgcm93IG51bWJlcnMKKyAgICAgICAgICAgIC8vIG9mIHRoZSBvdGhlciByb3dzIChpbiBvcmRlcikuCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNhdGVnb3JpZXMgKyAxOyBpKyspCisgICAgICAgICAgICAgICAgdGVtcFN0YXRlVGFibGUuYWRkRWxlbWVudChuZXcgc2hvcnRbbnVtQ2F0ZWdvcmllcyArIDFdKTsKKworICAgICAgICAgICAgc2hvcnRbXSBzdGF0ZSA9IChzaG9ydFtdKXRlbXBTdGF0ZVRhYmxlLmVsZW1lbnRBdChiYWNrVGFibGVPZmZzZXQgLSAxKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ2F0ZWdvcmllczsgaSsrKQorICAgICAgICAgICAgICAgIHN0YXRlW2ldID0gKHNob3J0KShpICsgYmFja1RhYmxlT2Zmc2V0KTsKKworICAgICAgICAgICAgLy8gc2NhdmVuZ2UgdGhlIGZvcndhcmQgc3RhdGUgdGFibGUgZm9yIHBhaXJzIG9mIGNoYXJhY3RlciBjYXRlZ29yaWVzCisgICAgICAgICAgICAvLyB0aGF0IGFsd2F5cyBoYXZlIGEgYnJlYWsgYmV0d2VlbiB0aGVtLiAgVGhlIGFsZ29yaXRobSBpcyBhcyBmb2xsb3dzOgorICAgICAgICAgICAgLy8gTG9vayBkb3duIGVhY2ggY29sdW1uIGluIHRoZSBzdGF0ZSB0YWJsZS4gIEZvciBlYWNoIG5vbnplcm8gY2VsbCBpbgorICAgICAgICAgICAgLy8gdGhhdCBjb2x1bW4sIGxvb2sgdXAgdGhlIHJvdyBpdCBwb2ludHMgdG8uICBGb3IgZWFjaCBub256ZXJvIGNlbGwgaW4KKyAgICAgICAgICAgIC8vIHRoYXQgcm93LCBwb3B1bGF0ZSBhIGNlbGwgaW4gdGhlIGJhY2t3YXJkcyBzdGF0ZSB0YWJsZTogdGhlIHJvdyBudW1iZXIKKyAgICAgICAgICAgIC8vIG9mIHRoYXQgY2VsbCBpcyB0aGUgbnVtYmVyIG9mIHRoZSBjb2x1bW4gd2Ugd2VyZSBzY2FubmluZyAocGx1cyB0aGUKKyAgICAgICAgICAgIC8vIG9mZnNldCB0aGF0IGxvY2F0ZXMgdGhpcyBzdWItdGFibGUpLCBhbmQgdGhlIGNvbHVtbiBudW1iZXIgb2YgdGhhdCBjZWxsCisgICAgICAgICAgICAvLyBpcyB0aGUgY29sdW1uIG51bWJlciBvZiB0aGUgbm9uemVybyBjZWxsIHdlIGp1c3QgZm91bmQuICBUaGlzIGNlbGwgaXMKKyAgICAgICAgICAgIC8vIHBvcHVsYXRlZCB3aXRoIGl0cyBvd24gY29sdW1uIG51bWJlciAoYWRqdXN0ZWQgYWNjb3JkaW5nIHRvIHRoZSBhY3R1YWwKKyAgICAgICAgICAgIC8vIGxvY2F0aW9uIG9mIHRoZSBzdWItdGFibGUpLiAgVGhpcyBwcm9jZXNzIHdpbGwgcHJvZHVjZSBhIHN0YXRlIHRhYmxlCisgICAgICAgICAgICAvLyB3aG9zZSBiZWhhdmlvciBpcyB0aGUgc2FtZSBhcyBsb29raW5nIHVwIHN1Y2Nlc3NpdmUgcGFpcnMgb2YgY2hhcmFjdGVycworICAgICAgICAgICAgLy8gaW4gYW4gYXJyYXkgb2YgQm9vbGVhbnMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlcmUgaXMgYSBicmVhay4KKyAgICAgICAgICAgIGludCBudW1Sb3dzID0gc3RhdGVUYWJsZS5sZW5ndGggLyBudW1DYXRlZ29yaWVzOworICAgICAgICAgICAgZm9yIChpbnQgY29sdW1uID0gMDsgY29sdW1uIDwgbnVtQ2F0ZWdvcmllczsgY29sdW1uKyspIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBudW1Sb3dzOyByb3crKykgeworICAgICAgICAgICAgICAgICAgICBpbnQgbmV4dFJvdyA9IGxvb2t1cFN0YXRlKHJvdywgY29sdW1uKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG5leHRSb3cgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgbmV4dENvbHVtbiA9IDA7IG5leHRDb2x1bW4gPCBudW1DYXRlZ29yaWVzOyBuZXh0Q29sdW1uKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2VsbFZhbHVlID0gbG9va3VwU3RhdGUobmV4dFJvdywgbmV4dENvbHVtbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNlbGxWYWx1ZSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gKHNob3J0W10pdGVtcFN0YXRlVGFibGUuZWxlbWVudEF0KG5leHRDb2x1bW4gKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja1RhYmxlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVbY29sdW1uXSA9IChzaG9ydCkoY29sdW1uICsgYmFja1RhYmxlT2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKy8vZGVidWdQcmludFRlbXBTdGF0ZVRhYmxlKCk7CisgICAgICAgICAgICAvLyBpZiB0aGUgdXNlciBzcGVjaWZpZWQgc29tZSBiYWNrd2FyZC1pdGVyYXRpb24gcnVsZXMgd2l0aCB0aGUgISB0b2tlbiwKKyAgICAgICAgICAgIC8vIHdlIGhhdmUgdG8gbWVyZ2UgdGhlIHJlc3VsdGluZyBzdGF0ZSB0YWJsZSB3aXRoIHRoZSBhdXRvLWdlbmVyYXRlZCBvbmUKKyAgICAgICAgICAgIC8vIGFib3ZlLiAgRmlyc3QgY29weSB0aGUgcG9wdWxhdGVkIGNlbGxzIGZyb20gcm93IDEgb3ZlciB0aGUgcG9wdWxhdGVkCisgICAgICAgICAgICAvLyBjZWxscyBpbiB0aGUgYXV0by1nZW5lcmF0ZWQgdGFibGUuICBUaGVuIGNvcHkgdmFsdWVzIGZyb20gcm93IDEgb2YgdGhlCisgICAgICAgICAgICAvLyBhdXRvLWdlbmVyYXRlZCB0YWJsZSBpbnRvIGFsbCBvZiB0aGUgdGhlIHVucG9wdWxhdGVkIGNlbGxzIG9mIHRoZQorICAgICAgICAgICAgLy8gcnVsZS1iYXNlZCB0YWJsZS4KKyAgICAgICAgICAgIGlmIChiYWNrVGFibGVPZmZzZXQgPiAxKSB7CisKKyAgICAgICAgICAgICAgICAvLyBmb3IgZXZlcnkgcm93IGluIHRoZSBhdXRvLWdlbmVyYXRlZCBzdWItdGFibGUsIGlmIGEgY2VsbCBpcworICAgICAgICAgICAgICAgIC8vIHBvcHVsYXRlZCB0aGF0IGlzIGFsc28gcG9wdWxhdGVkIGluIHJvdyAxIG9mIHRoZSBydWxlLWJhc2VkCisgICAgICAgICAgICAgICAgLy8gc3ViLXRhYmxlLCBjb3B5IHRoZSB2YWx1ZSBmcm9tIHJvdyAxIG92ZXIgdGhlIHZhbHVlIGluIHRoZQorICAgICAgICAgICAgICAgIC8vIGF1dG8tZ2VuZXJhdGVkIHN1Yi10YWJsZQorICAgICAgICAgICAgICAgIHN0YXRlID0gKHNob3J0W10pdGVtcFN0YXRlVGFibGUuZWxlbWVudEF0KDEpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSBiYWNrVGFibGVPZmZzZXQgLSAxOyBpIDwgdGVtcFN0YXRlVGFibGUuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgc2hvcnRbXSBzdGF0ZTIgPSAoc2hvcnRbXSl0ZW1wU3RhdGVUYWJsZS5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVtQ2F0ZWdvcmllczsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGVbal0gIT0gMCAmJiBzdGF0ZTJbal0gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlMltqXSA9IHN0YXRlW2pdOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gbm93LCBmb3IgZXZlcnkgcm93IGluIHRoZSBydWxlLWJhc2VkIHN1Yi10YWJsZSB0aGF0IGlzIG5vdAorICAgICAgICAgICAgICAgIC8vIGFuIGVuZCBzdGF0ZSwgZmlsbCBpbiBhbGwgdW5wb3B1bGF0ZWQgY2VsbHMgd2l0aCB0aGUgdmFsdWVzCisgICAgICAgICAgICAgICAgLy8gb2YgdGhlIGNvcnJlc3BvbmRpbmcgY2VsbHMgaW4gdGhlIGZpcnN0IHJvdyBvZiB0aGUgYXV0by0KKyAgICAgICAgICAgICAgICAvLyBnZW5lcmF0ZWQgc3ViLXRhYmxlLgorICAgICAgICAgICAgICAgIHN0YXRlID0gKHNob3J0W10pdGVtcFN0YXRlVGFibGUuZWxlbWVudEF0KGJhY2tUYWJsZU9mZnNldCAtIDEpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgYmFja1RhYmxlT2Zmc2V0IC0gMTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHNob3J0W10gc3RhdGUyID0gKHNob3J0W10pdGVtcFN0YXRlVGFibGUuZWxlbWVudEF0KGkpOworICAgICAgICAgICAgICAgICAgICBpZiAoKHN0YXRlMltudW1DYXRlZ29yaWVzXSAmIEVORF9TVEFURV9GTEFHKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG51bUNhdGVnb3JpZXM7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGF0ZTJbal0gPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTJbal0gPSBzdGF0ZVtqXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKy8vZGVidWdQcmludFRlbXBTdGF0ZVRhYmxlKCk7CisKKyAgICAgICAgICAgIC8vIGZpbmFsbHksIGNsZWFuIGV2ZXJ5dGhpbmcgdXAgYW5kIGNvcHkgaXQgaW50byB0aGUgYWN0dWFsIEJyZWFrSXRlcmF0b3IKKyAgICAgICAgICAgIC8vIGJ5IGNhbGxpbmcgZmluaXNoQnVpbGRpbmdTdGF0ZVRhYmxlKCkKKyAgICAgICAgICAgIGZpbmlzaEJ1aWxkaW5nU3RhdGVUYWJsZShmYWxzZSk7CisvKgorU3lzdGVtLm91dC5wcmludCgiQzpcdCIpOworZm9yIChpbnQgaSA9IDA7IGkgPCBudW1DYXRlZ29yaWVzOyBpKyspCitTeXN0ZW0ub3V0LnByaW50KEludGVnZXIudG9TdHJpbmcoaSkgKyAiXHQiKTsKK1N5c3RlbS5vdXQucHJpbnRsbigpOyBTeXN0ZW0ub3V0LnByaW50KCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7Citmb3IgKGludCBpID0gMDsgaSA8IGJhY2t3YXJkc1N0YXRlVGFibGUubGVuZ3RoOyBpKyspIHsKK2lmIChpICUgbnVtQ2F0ZWdvcmllcyA9PSAwKSB7CitTeXN0ZW0ub3V0LnByaW50bG4oKTsKK1N5c3RlbS5vdXQucHJpbnQoSW50ZWdlci50b1N0cmluZyhpIC8gbnVtQ2F0ZWdvcmllcykgKyAiOlx0Iik7Cit9CitpZiAoYmFja3dhcmRzU3RhdGVUYWJsZVtpXSA9PSAwKSBTeXN0ZW0ub3V0LnByaW50KCIuXHQiKTsgZWxzZSBTeXN0ZW0ub3V0LnByaW50KEludGVnZXIudG9TdHJpbmcoYmFja3dhcmRzU3RhdGVUYWJsZVtpXSkgKyAiXHQiKTsKK30KK1N5c3RlbS5vdXQucHJpbnRsbigpOworKi8KKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaHJvd3MgYW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHJlcHJlc2VudGluZyBhIHN5bnRheCBlcnJvciBpbiB0aGUgcnVsZQorICAgICAgICAgKiBkZXNjcmlwdGlvbi4gIFRoZSBleGNlcHRpb24ncyBtZXNzYWdlIGNvbnRhaW5zIHNvbWUgZGVidWdnaW5nIGluZm9ybWF0aW9uLgorICAgICAgICAgKiBAcGFyYW0gbWVzc2FnZSBBIG1lc3NhZ2UgZGVzY3JpYmluZyB0aGUgcHJvYmxlbQorICAgICAgICAgKiBAcGFyYW0gcG9zaXRpb24gVGhlIHBvc2l0aW9uIGluIHRoZSBkZXNjcmlwdGlvbiB3aGVyZSB0aGUgcHJvYmxlbSB3YXMKKyAgICAgICAgICogZGlzY292ZXJlZAorICAgICAgICAgKiBAcGFyYW0gY29udGV4dCBUaGUgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGVycm9yCisgICAgICAgICAqLworICAgICAgICBwcm90ZWN0ZWQgdm9pZCBlcnJvcihTdHJpbmcgbWVzc2FnZSwgaW50IHBvc2l0aW9uLCBTdHJpbmcgY29udGV4dCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiUGFyc2UgZXJyb3I6ICIgKyBtZXNzYWdlICsgIlxuIiArCisgICAgICAgICAgICAgICAgICAgIFV0aWxpdHkuZXNjYXBlKGNvbnRleHQuc3Vic3RyaW5nKDAsIHBvc2l0aW9uKSkgKyAiXG5cbiIgKworICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LmVzY2FwZShjb250ZXh0LnN1YnN0cmluZyhwb3NpdGlvbikpKTsKKyAgICAgICAgfQorCisKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgZGVidWdQcmludFZlY3RvcihTdHJpbmcgbGFiZWwsIFZlY3RvciB2KSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KGxhYmVsKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdi5zaXplKCk7IGkrKykKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KHYuZWxlbWVudEF0KGkpLnRvU3RyaW5nKCkgKyAiXHQiKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICB9CisKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgZGVidWdQcmludFZlY3Rvck9mVmVjdG9ycyhTdHJpbmcgbGFiZWwxLCBTdHJpbmcgbGFiZWwyLCBWZWN0b3IgdikgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGxhYmVsMSk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHYuc2l6ZSgpOyBpKyspCisgICAgICAgICAgICAgICAgZGVidWdQcmludFZlY3RvcihsYWJlbDIsIChWZWN0b3Ipdi5lbGVtZW50QXQoaSkpOworICAgICAgICB9CisKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgZGVidWdQcmludFRlbXBTdGF0ZVRhYmxlKCkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAgICB0ZW1wU3RhdGVUYWJsZToiKTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiAgICAgICAgQzpcdCIpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gbnVtQ2F0ZWdvcmllczsgaSsrKQorICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoSW50ZWdlci50b1N0cmluZyhpKSArICJcdCIpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IHRlbXBTdGF0ZVRhYmxlLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgc2hvcnRbXSByb3cgPSAoc2hvcnRbXSkodGVtcFN0YXRlVGFibGUuZWxlbWVudEF0KGkpKTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIgICAgICAgICIgKyBpICsgIjpcdCIpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgcm93Lmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyb3dbal0gPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiLlx0Iik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KEludGVnZXIudG9TdHJpbmcocm93W2pdKSArICJcdCIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICB9CisKKyAgICAvKgorICAgICAqIFRoaXMgY2xhc3MgZXhpc3RzIHRvIHdvcmsgYXJvdW5kIGEgYnVnIGluIEhvdEphdmEncyBpbXBsZW1lbnRhdGlvbgorICAgICAqIG9mIENoYXJhY3Rlckl0ZXJhdG9yLCB3aGljaCBpbmNvcnJlY3RseSBoYW5kbGVzIHNldEluZGV4KGVuZEluZGV4KS4KKyAgICAgKiBUaGlzIGl0ZXJhdG9yIHJlbGllcyBvbmx5IG9uIGJhc2Uuc2V0SW5kZXgobikgd2hlcmUgbiBpcyBsZXNzIHRoYW4KKyAgICAgKiBlbmRJbmRleC4KKyAgICAgKgorICAgICAqIE9uZSBjYXZlYXQ6ICBpZiB0aGUgYmFzZSBpdGVyYXRvcidzIGJlZ2luIGFuZCBlbmQgaW5kaWNlcyBjaGFuZ2UKKyAgICAgKiB0aGUgY2hhbmdlIHdpbGwgbm90IGJlIHJlZmxlY3RlZCBieSB0aGlzIHdyYXBwZXIuICBEb2VzIHRoYXQgbWF0dGVyPworICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIFNhZmVDaGFySXRlcmF0b3IgaW1wbGVtZW50cyBDaGFyYWN0ZXJJdGVyYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvbmVhYmxlIHsKKworICAgICAgICBwcml2YXRlIENoYXJhY3Rlckl0ZXJhdG9yIGJhc2U7CisgICAgICAgIHByaXZhdGUgaW50IHJhbmdlU3RhcnQ7CisgICAgICAgIHByaXZhdGUgaW50IHJhbmdlTGltaXQ7CisgICAgICAgIHByaXZhdGUgaW50IGN1cnJlbnRJbmRleDsKKworICAgICAgICBTYWZlQ2hhckl0ZXJhdG9yKENoYXJhY3Rlckl0ZXJhdG9yIGJhc2UpIHsKKyAgICAgICAgICAgIHRoaXMuYmFzZSA9IGJhc2U7CisgICAgICAgICAgICB0aGlzLnJhbmdlU3RhcnQgPSBiYXNlLmdldEJlZ2luSW5kZXgoKTsKKyAgICAgICAgICAgIHRoaXMucmFuZ2VMaW1pdCA9IGJhc2UuZ2V0RW5kSW5kZXgoKTsKKyAgICAgICAgICAgIHRoaXMuY3VycmVudEluZGV4ID0gYmFzZS5nZXRJbmRleCgpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGNoYXIgZmlyc3QoKSB7CisgICAgICAgICAgICByZXR1cm4gc2V0SW5kZXgocmFuZ2VTdGFydCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgY2hhciBsYXN0KCkgeworICAgICAgICAgICAgcmV0dXJuIHNldEluZGV4KHJhbmdlTGltaXQgLSAxKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBjaGFyIGN1cnJlbnQoKSB7CisgICAgICAgICAgICBpZiAoY3VycmVudEluZGV4IDwgcmFuZ2VTdGFydCB8fCBjdXJyZW50SW5kZXggPj0gcmFuZ2VMaW1pdCkgeworICAgICAgICAgICAgICAgIHJldHVybiBET05FOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJhc2Uuc2V0SW5kZXgoY3VycmVudEluZGV4KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBjaGFyIG5leHQoKSB7CisKKyAgICAgICAgICAgIGN1cnJlbnRJbmRleCsrOworICAgICAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA+PSByYW5nZUxpbWl0KSB7CisgICAgICAgICAgICAgICAgY3VycmVudEluZGV4ID0gcmFuZ2VMaW1pdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gRE9ORTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBiYXNlLnNldEluZGV4KGN1cnJlbnRJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgY2hhciBwcmV2aW91cygpIHsKKworICAgICAgICAgICAgY3VycmVudEluZGV4LS07CisgICAgICAgICAgICBpZiAoY3VycmVudEluZGV4IDwgcmFuZ2VTdGFydCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRJbmRleCA9IHJhbmdlU3RhcnQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIERPTkU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYmFzZS5zZXRJbmRleChjdXJyZW50SW5kZXgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGNoYXIgc2V0SW5kZXgoaW50IGkpIHsKKworICAgICAgICAgICAgaWYgKGkgPCByYW5nZVN0YXJ0IHx8IGkgPiByYW5nZUxpbWl0KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBwb3NpdGlvbiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY3VycmVudEluZGV4ID0gaTsKKyAgICAgICAgICAgIHJldHVybiBjdXJyZW50KCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IGdldEJlZ2luSW5kZXgoKSB7CisgICAgICAgICAgICByZXR1cm4gcmFuZ2VTdGFydDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0RW5kSW5kZXgoKSB7CisgICAgICAgICAgICByZXR1cm4gcmFuZ2VMaW1pdDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0SW5kZXgoKSB7CisgICAgICAgICAgICByZXR1cm4gY3VycmVudEluZGV4OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIE9iamVjdCBjbG9uZSgpIHsKKworICAgICAgICAgICAgU2FmZUNoYXJJdGVyYXRvciBjb3B5ID0gbnVsbDsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgY29weSA9IChTYWZlQ2hhckl0ZXJhdG9yKSBzdXBlci5jbG9uZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2goQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiQ2xvbmUgbm90IHN1cHBvcnRlZDogIiArIGUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciBjb3B5T2ZCYXNlID0gKENoYXJhY3Rlckl0ZXJhdG9yKSBiYXNlLmNsb25lKCk7CisgICAgICAgICAgICBjb3B5LmJhc2UgPSBjb3B5T2ZCYXNlOworICAgICAgICAgICAgcmV0dXJuIGNvcHk7CisgICAgICAgIH0KKyAgICB9CisKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBkZWJ1Z1ByaW50bG4oU3RyaW5nIHMpIHsKKyAgICAgICAgZmluYWwgU3RyaW5nIHplcm9zID0gIjAwMDAiOworICAgICAgICBTdHJpbmcgdGVtcDsKKyAgICAgICAgU3RyaW5nQnVmZmVyIG91dCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAgIGNoYXIgYyA9IHMuY2hhckF0KGkpOworICAgICAgICAgICAgaWYgKGMgPj0gJyAnICYmIGMgPCAnXHUwMDdmJykgeworICAgICAgICAgICAgICAgIG91dC5hcHBlbmQoYyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBvdXQuYXBwZW5kKCJcXHUiKTsKKyAgICAgICAgICAgICAgICB0ZW1wID0gSW50ZWdlci50b0hleFN0cmluZygoaW50KWMpOworICAgICAgICAgICAgICAgIG91dC5hcHBlbmQoemVyb3Muc3Vic3RyaW5nKDAsIDQgLSB0ZW1wLmxlbmd0aCgpKSk7CisgICAgICAgICAgICAgICAgb3V0LmFwcGVuZCh0ZW1wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4ob3V0KTsKKyAgICB9CisKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9SdWxlQmFzZWROdW1iZXJGb3JtYXQuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvUnVsZUJhc2VkTnVtYmVyRm9ybWF0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTA3ZDJmYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvUnVsZUJhc2VkTnVtYmVyRm9ybWF0LmphdmEKQEAgLTAsMCArMSwxMjg2IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L0F0dGljL1J1bGVCYXNlZE51bWJlckZvcm1hdC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA1LzI2IDIxOjM4OjU1ICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLnRleHQ7CisKK2ltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKK2ltcG9ydCBqYXZhLnRleHQuKjsKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOworCisvKioKKyAqIDxwPkEgY2xhc3MgdGhhdCBmb3JtYXRzIG51bWJlcnMgYWNjb3JkaW5nIHRvIGEgc2V0IG9mIHJ1bGVzLiBUaGlzIG51bWJlciBmb3JtYXR0ZXIgaXMKKyAqIHR5cGljYWxseSB1c2VkIGZvciBzcGVsbGluZyBvdXQgbnVtZXJpYyB2YWx1ZXMgaW4gd29yZHMgKGUuZy4sIDI1LDM0NzYgYXMKKyAqICZxdW90O3R3ZW50eS1maXZlIHRob3VzYW5kIHRocmVlIGh1bmRyZWQgc2V2ZW50eS1zaXgmcXVvdDsgb3IgJnF1b3Q7dmluZ3QtY2lucSBtaWxsZSB0cm9pcworICogY2VudHMgc29peGFudGUtc2VpemUmcXVvdDsgb3IKKyAqICZxdW90O2Z1bmZ1bmR6d2FuemlndGF1c2VuZGRyZWlodW5kZXJ0c2VjaHN1bmRzaWViemlnJnF1b3Q7KSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgZm9yCisgKiBvdGhlciBjb21wbGljYXRlZCBmb3JtYXR0aW5nIHRhc2tzLCBzdWNoIGFzIGZvcm1hdHRpbmcgYSBudW1iZXIgb2Ygc2Vjb25kcyBhcyBob3VycywKKyAqIG1pbnV0ZXMgYW5kIHNlY29uZHMgKGUuZy4sIDMsNzMwIGFzICZxdW90OzE6MDI6MTAmcXVvdDspLjwvcD4KKyAqCisgKiA8cD5UaGUgcmVzb3VyY2VzIGNvbnRhaW4gdGhyZWUgcHJlZGVmaW5lZCBmb3JtYXR0ZXJzIGZvciBlYWNoIGxvY2FsZTogc3BlbGxvdXQsIHdoaWNoCisgKiBzcGVsbHMgb3V0IGEgdmFsdWUgaW4gd29yZHMgKDEyMyBpcyAmcXVvdDtvbmUgaHVuZHJlZCB0d2VudHktdGhyZWUmcXVvdDspOyBvcmRpbmFsLCB3aGljaAorICogYXBwZW5kcyBhbiBvcmRpbmFsIHN1ZmZpeCB0byB0aGUgZW5kIG9mIGEgbnVtZXJhbCAoMTIzIGlzICZxdW90OzEyM3JkJnF1b3Q7KTsgYW5kCisgKiBkdXJhdGlvbiwgd2hpY2ggc2hvd3MgYSBkdXJhdGlvbiBpbiBzZWNvbmRzIGFzIGhvdXJzLCBtaW51dGVzLCBhbmQgc2Vjb25kcyAoMTIzIGlzCisgKiAmcXVvdDsyOjAzJnF1b3Q7KS4mbmJzcDsgVGhlIGNsaWVudCBjYW4gYWxzbyBkZWZpbmUgbW9yZSBzcGVjaWFsaXplZCA8dHQ+UnVsZUJhc2VkTnVtYmVyRm9ybWF0PC90dD5zCisgKiBieSBzdXBwbHlpbmcgcHJvZ3JhbW1lci1kZWZpbmVkIHJ1bGUgc2V0cy48L3A+CisgKgorICogPHA+VGhlIGJlaGF2aW9yIG9mIGEgPHR0PlJ1bGVCYXNlZE51bWJlckZvcm1hdDwvdHQ+IGlzIHNwZWNpZmllZCBieSBhIHRleHR1YWwgZGVzY3JpcHRpb24KKyAqIHRoYXQgaXMgZWl0aGVyIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IgYXMgYSA8dHQ+U3RyaW5nPC90dD4gb3IgbG9hZGVkIGZyb20gYSByZXNvdXJjZQorICogYnVuZGxlLiBJbiBpdHMgc2ltcGxlc3QgZm9ybSwgdGhlIGRlc2NyaXB0aW9uIGNvbnNpc3RzIG9mIGEgc2VtaWNvbG9uLWRlbGltaXRlZCBsaXN0IG9mIDxlbT5ydWxlcy48L2VtPgorICogRWFjaCBydWxlIGhhcyBhIHN0cmluZyBvZiBvdXRwdXQgdGV4dCBhbmQgYSB2YWx1ZSBvciByYW5nZSBvZiB2YWx1ZXMgaXQgaXMgYXBwbGljYWJsZSB0by4KKyAqIEluIGEgdHlwaWNhbCBzcGVsbG91dCBydWxlIHNldCwgdGhlIGZpcnN0IHR3ZW50eSBydWxlcyBhcmUgdGhlIHdvcmRzIGZvciB0aGUgbnVtYmVycyBmcm9tCisgKiAwIHRvIDE5OjwvcD4KKyAqCisgKiA8cHJlPnplcm87IG9uZTsgdHdvOyB0aHJlZTsgZm91cjsgZml2ZTsgc2l4OyBzZXZlbjsgZWlnaHQ7IG5pbmU7CisgKiB0ZW47IGVsZXZlbjsgdHdlbHZlOyB0aGlydGVlbjsgZm91cnRlZW47IGZpZnRlZW47IHNpeHRlZW47IHNldmVudGVlbjsgZWlnaHRlZW47IG5pbmV0ZWVuOzwvcHJlPgorICoKKyAqIDxwPkZvciBsYXJnZXIgbnVtYmVycywgd2UgY2FuIHVzZSB0aGUgcHJlY2VkaW5nIHNldCBvZiBydWxlcyB0byBmb3JtYXQgdGhlIG9uZXMgcGxhY2UsIGFuZAorICogd2Ugb25seSBoYXZlIHRvIHN1cHBseSB0aGUgd29yZHMgZm9yIHRoZSBtdWx0aXBsZXMgb2YgMTA6PC9wPgorICoKKyAqIDxwcmU+MjA6IHR3ZW50eVstJmd0OyZndDtdOworICogMzA6IHRoaXJ0eXstJmd0OyZndDtdOworICogNDA6IGZvcnR5Wy0mZ3Q7Jmd0O107CisgKiA1MDogZmlmdHlbLSZndDsmZ3Q7XTsKKyAqIDYwOiBzaXh0eVstJmd0OyZndDtdOworICogNzA6IHNldmVudHlbLSZndDsmZ3Q7XTsKKyAqIDgwOiBlaWdodHlbLSZndDsmZ3Q7XTsKKyAqIDkwOiBuaW5ldHlbLSZndDsmZ3Q7XTs8L3ByZT4KKyAqCisgKiA8cD5JbiB0aGVzZSBydWxlcywgdGhlIDxlbT5iYXNlIHZhbHVlPC9lbT4gaXMgc3BlbGxlZCBvdXQgZXhwbGljaXRseSBhbmQgc2V0IG9mZiBmcm9tIHRoZQorICogcnVsZSdzIG91dHB1dCB0ZXh0IHdpdGggYSBjb2xvbi4gVGhlIHJ1bGVzIGFyZSBpbiBhIHNvcnRlZCBsaXN0LCBhbmQgYSBydWxlIGlzIGFwcGxpY2FibGUKKyAqIHRvIGFsbCBudW1iZXJzIGZyb20gaXRzIG93biBiYXNlIHZhbHVlIHRvIG9uZSBsZXNzIHRoYW4gdGhlIG5leHQgcnVsZSdzIGJhc2UgdmFsdWUuIFRoZQorICogJnF1b3Q7Jmd0OyZndDsmcXVvdDsgdG9rZW4gaXMgY2FsbGVkIGEgPGVtPnN1YnN0aXR1dGlvbjwvZW0+IGFuZCB0ZWxscyB0aGUgZm9tYXR0ZXIgdG8KKyAqIGlzb2xhdGUgdGhlIG51bWJlcidzIG9uZXMgZGlnaXQsIGZvcm1hdCBpdCB1c2luZyB0aGlzIHNhbWUgc2V0IG9mIHJ1bGVzLCBhbmQgcGxhY2UgdGhlCisgKiByZXN1bHQgYXQgdGhlIHBvc2l0aW9uIG9mIHRoZSAmcXVvdDsmZ3Q7Jmd0OyZxdW90OyB0b2tlbi4gVGV4dCBpbiBicmFja2V0cyBpcyBvbWl0dGVkIGlmCisgKiB0aGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZCBpcyBhbiBldmVuIG11bHRpcGxlIG9mIDEwICh0aGUgaHlwaGVuIGlzIGEgbGl0ZXJhbCBoeXBoZW47IDI0CisgKiBpcyAmcXVvdDt0d2VudHktZm91ciwmcXVvdDsgbm90ICZxdW90O3R3ZW50eSBmb3VyJnF1b3Q7KS48L3A+CisgKgorICogPHA+Rm9yIGV2ZW4gbGFyZ2VyIG51bWJlcnMsIHdlIGNhbiBhY3R1YWxseSBsb29rIHVwIHNldmVyYWwgcGFydHMgb2YgdGhlIG51bWJlciBpbiB0aGUKKyAqIGxpc3Q6PC9wPgorICoKKyAqIDxwcmU+MTAwOiAmbHQ7Jmx0OyBodW5kcmVkWyAmZ3Q7Jmd0O107PC9wcmU+CisgKgorICogPHA+VGhlICZxdW90OyZsdDsmbHQ7JnF1b3Q7IHJlcHJlc2VudHMgYSBuZXcga2luZCBvZiBzdWJzdGl0dXRpb24uIFRoZSAmbHQ7Jmx0OyBpc29sYXRlcworICogdGhlIGh1bmRyZWRzIGRpZ2l0IChhbmQgYW55IGRpZ2l0cyB0byBpdHMgbGVmdCksIGZvcm1hdHMgaXQgdXNpbmcgdGhpcyBzYW1lIHJ1bGUgc2V0LCBhbmQKKyAqIHBsYWNlcyB0aGUgcmVzdWx0IHdoZXJlIHRoZSAmcXVvdDsmbHQ7Jmx0OyZxdW90OyB3YXMuIE5vdGljZSBhbHNvIHRoYXQgdGhlIG1lYW5pbmcgb2YKKyAqICZndDsmZ3Q7IGhhcyBjaGFuZ2VkOiBpdCBub3cgcmVmZXJzIHRvIGJvdGggdGhlIHRlbnMgYW5kIHRoZSBvbmVzIGRpZ2l0cy4gVGhlIG1lYW5pbmcgb2YKKyAqIGJvdGggc3Vic3RpdHV0aW9ucyBkZXBlbmRzIG9uIHRoZSBydWxlJ3MgYmFzZSB2YWx1ZS4gVGhlIGJhc2UgdmFsdWUgZGV0ZXJtaW5lcyB0aGUgcnVsZSdzIDxlbT5kaXZpc29yLDwvZW0+CisgKiB3aGljaCBpcyB0aGUgaGlnaGVzdCBwb3dlciBvZiAxMCB0aGF0IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgYmFzZSB2YWx1ZSAodGhlIHVzZXIKKyAqIGNhbiBjaGFuZ2UgdGhpcykuIFRvIGZpbGwgaW4gdGhlIHN1YnN0aXR1dGlvbnMsIHRoZSBmb3JtYXR0ZXIgZGl2aWRlcyB0aGUgbnVtYmVyIGJlaW5nCisgKiBmb3JtYXR0ZWQgYnkgdGhlIGRpdmlzb3IuIFRoZSBpbnRlZ3JhbCBxdW90aWVudCBpcyB1c2VkIHRvIGZpbGwgaW4gdGhlICZsdDsmbHQ7CisgKiBzdWJzdGl0dXRpb24sIGFuZCB0aGUgcmVtYWluZGVyIGlzIHVzZWQgdG8gZmlsbCBpbiB0aGUgJmd0OyZndDsgc3Vic3RpdHV0aW9uLiBUaGUgbWVhbmluZworICogb2YgdGhlIGJyYWNrZXRzIGNoYW5nZXMgc2ltaWxhcmx5OiB0ZXh0IGluIGJyYWNrZXRzIGlzIG9taXR0ZWQgaWYgdGhlIHZhbHVlIGJlaW5nCisgKiBmb3JtYXR0ZWQgaXMgYW4gZXZlbiBtdWx0aXBsZSBvZiB0aGUgcnVsZSdzIGRpdmlzb3IuIFRoZSBydWxlcyBhcmUgYXBwbGllZCByZWN1cnNpdmVseSwgc28KKyAqIGlmIGEgc3Vic3RpdHV0aW9uIGlzIGZpbGxlZCBpbiB3aXRoIHRleHQgdGhhdCBpbmNsdWRlcyBhbm90aGVyIHN1YnN0aXR1dGlvbiwgdGhhdAorICogc3Vic3RpdHV0aW9uIGlzIGFsc28gZmlsbGVkIGluLjwvcD4KKyAqCisgKiA8cD5UaGlzIHJ1bGUgY292ZXJzIHZhbHVlcyB1cCB0byA5OTksIGF0IHdoaWNoIHBvaW50IHdlIGFkZCBhbm90aGVyIHJ1bGU6PC9wPgorICoKKyAqIDxwcmU+MTAwMDogJmx0OyZsdDsgdGhvdXNhbmRbICZndDsmZ3Q7XTs8L3ByZT4KKyAqCisgKiA8cD5BZ2FpbiwgdGhlIG1lYW5pbmdzIG9mIHRoZSBicmFja2V0cyBhbmQgc3Vic3RpdHV0aW9uIHRva2VucyBzaGlmdCBiZWNhdXNlIHRoZSBydWxlJ3MKKyAqIGJhc2UgdmFsdWUgaXMgYSBoaWdoZXIgcG93ZXIgb2YgMTAsIGNoYW5naW5nIHRoZSBydWxlJ3MgZGl2aXNvci4gVGhpcyBydWxlIGNhbiBhY3R1YWxseSBiZQorICogdXNlZCBhbGwgdGhlIHdheSB1cCB0byA5OTksOTk5LiBUaGlzIGFsbG93cyB1cyB0byBmaW5pc2ggb3V0IHRoZSBydWxlcyBhcyBmb2xsb3dzOjwvcD4KKyAqCisgKiA8cHJlPjEsMDAwLDAwMDogJmx0OyZsdDsgbWlsbGlvblsgJmd0OyZndDtdOworICogMSwwMDAsMDAwLDAwMDogJmx0OyZsdDsgYmlsbGlvblsgJmd0OyZndDtdOworICogMSwwMDAsMDAwLDAwMCwwMDA6ICZsdDsmbHQ7IHRyaWxsaW9uWyAmZ3Q7Jmd0O107CisgKiAxLDAwMCwwMDAsMDAwLDAwMCwwMDA6IE9VVCBPRiBSQU5HRSE7PC9wcmU+CisgKgorICogPHA+Q29tbWFzLCBwZXJpb2RzLCBhbmQgc3BhY2VzIGNhbiBiZSB1c2VkIGluIHRoZSBiYXNlIHZhbHVlcyB0byBpbXByb3ZlIGxlZ2liaWxpdHkgYW5kCisgKiBhcmUgaWdub3JlZCBieSB0aGUgcnVsZSBwYXJzZXIuIFRoZSBsYXN0IHJ1bGUgaW4gdGhlIGxpc3QgaXMgY3VzdG9tYXJpbHkgdHJlYXRlZCBhcyBhbgorICogJnF1b3Q7b3ZlcmZsb3cgcnVsZSwmcXVvdDsgYXBwbHlpbmcgdG8gZXZlcnl0aGluZyBmcm9tIGl0cyBiYXNlIHZhbHVlIG9uIHVwLCBhbmQgb2Z0ZW4gKGFzCisgKiBpbiB0aGlzIGV4YW1wbGUpIGJlaW5nIHVzZWQgdG8gcHJpbnQgb3V0IGFuIGVycm9yIG1lc3NhZ2Ugb3IgZGVmYXVsdCByZXByZXNlbnRhdGlvbi4KKyAqIE5vdGljZSBhbHNvIHRoYXQgdGhlIHNpemUgb2YgdGhlIG1ham9yIGdyb3VwaW5ncyBpbiBsYXJnZSBudW1iZXJzIGlzIGNvbnRyb2xsZWQgYnkgdGhlCisgKiBzcGFjaW5nIG9mIHRoZSBydWxlczogYmVjYXVzZSBpbiBFbmdsaXNoIHdlIGdyb3VwIG51bWJlcnMgYnkgdGhvdXNhbmQsIHRoZSBoaWdoZXIgcnVsZXMKKyAqIGFyZSBzZXBhcmF0ZWQgZnJvbSBlYWNoIG90aGVyIGJ5IGEgZmFjdG9yIG9mIDEsMDAwLjwvcD4KKyAqCisgKiA8cD5UbyBzZWUgaG93IHRoZXNlIHJ1bGVzIGFjdHVhbGx5IHdvcmsgaW4gcHJhY3RpY2UsIGNvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZToKKyAqIEZvcm1hdHRpbmcgMjUsNDMwIHdpdGggdGhpcyBydWxlIHNldCB3b3VsZCB3b3JrIGxpa2UgdGhpczo8L3A+CisgKgorICogPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjYzMCI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjIxIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMjU3IiB2YWxpZ249InRvcCI+PHN0cm9uZz4mbHQ7Jmx0OyB0aG91c2FuZCAmZ3Q7Jmd0Ozwvc3Ryb25nPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIzNDAiIHZhbGlnbj0idG9wIj5bdGhlIHJ1bGUgd2hvc2UgYmFzZSB2YWx1ZSBpcyAxLDAwMCBpcyBhcHBsaWNhYmxlIHRvIDI1LDM0MF08L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSIyMSI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjI1NyIgdmFsaWduPSJ0b3AiPjxzdHJvbmc+dHdlbnR5LSZndDsmZ3Q7PC9zdHJvbmc+IHRob3VzYW5kICZndDsmZ3Q7PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjM0MCIgdmFsaWduPSJ0b3AiPlsyNSwzNDAgb3ZlciAxLDAwMCBpcyAyNS4gVGhlIHJ1bGUgZm9yIDIwIGFwcGxpZXMuXTwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjIxIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMjU3IiB2YWxpZ249InRvcCI+dHdlbnR5LTxzdHJvbmc+Zml2ZTwvc3Ryb25nPiB0aG91c2FuZCAmZ3Q7Jmd0OzwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIzNDAiIHZhbGlnbj0idG9wIj5bMjUgbW9kIDEwIGlzIDUuIFRoZSBydWxlIGZvciA1IGlzICZxdW90O2ZpdmUuJnF1b3Q7PC90ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgorICogICAgIDx0ZCB3aWR0aD0iMjEiPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIyNTciIHZhbGlnbj0idG9wIj50d2VudHktZml2ZSB0aG91c2FuZCA8c3Ryb25nPiZsdDsmbHQ7IGh1bmRyZWQgJmd0OyZndDs8L3N0cm9uZz48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMzQwIiB2YWxpZ249InRvcCI+WzI1LDM0MCBtb2QgMSwwMDAgaXMgMzQwLiBUaGUgcnVsZSBmb3IgMTAwIGFwcGxpZXMuXTwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjIxIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMjU3IiB2YWxpZ249InRvcCI+dHdlbnR5LWZpdmUgdGhvdXNhbmQgPHN0cm9uZz50aHJlZTwvc3Ryb25nPiBodW5kcmVkICZndDsmZ3Q7PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjM0MCIgdmFsaWduPSJ0b3AiPlszNDAgb3ZlciAxMDAgaXMgMy4gVGhlIHJ1bGUgZm9yIDMgaXMgJnF1b3Q7dGhyZWUuJnF1b3Q7XTwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjIxIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMjU3IiB2YWxpZ249InRvcCI+dHdlbnR5LWZpdmUgdGhvdXNhbmQgdGhyZWUgaHVuZHJlZCA8c3Ryb25nPmZvcnR5PC9zdHJvbmc+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjM0MCIgdmFsaWduPSJ0b3AiPlszNDAgbW9kIDEwMCBpcyA0MC4gVGhlIHJ1bGUgZm9yIDQwIGFwcGxpZXMuIFNpbmNlIDQwIGRpdmlkZXMKKyAqICAgICBldmVubHkgYnkgMTAsIHRoZSBoeXBoZW4gYW5kIHN1YnN0aXR1dGlvbiBpbiB0aGUgYnJhY2tldHMgYXJlIG9taXR0ZWQuXTwvdGQ+CisgKiAgIDwvdHI+CisgKiA8L3RhYmxlPgorICoKKyAqIDxwPlRoZSBhYm92ZSBzeW50YXggc3VmZmljZXMgb25seSB0byBmb3JtYXQgcG9zaXRpdmUgaW50ZWdlcnMuIFRvIGZvcm1hdCBuZWdhdGl2ZSBudW1iZXJzLAorICogd2UgYWRkIGEgc3BlY2lhbCBydWxlOjwvcD4KKyAqCisgKiA8cHJlPi14OiBtaW51cyAmZ3Q7Jmd0Ozs8L3ByZT4KKyAqCisgKiA8cD5UaGlzIGlzIGNhbGxlZCBhIDxlbT5uZWdhdGl2ZS1udW1iZXIgcnVsZSw8L2VtPiBhbmQgaXMgaWRlbnRpZmllZCBieSAmcXVvdDsteCZxdW90OworICogd2hlcmUgdGhlIGJhc2UgdmFsdWUgd291bGQgYmUuIFRoaXMgcnVsZSBpcyB1c2VkIHRvIGZvcm1hdCBhbGwgbmVnYXRpdmUgbnVtYmVycy4gdGhlCisgKiAmZ3Q7Jmd0OyB0b2tlbiBoZXJlIG1lYW5zICZxdW90O2ZpbmQgdGhlIG51bWJlcidzIGFic29sdXRlIHZhbHVlLCBmb3JtYXQgaXQgd2l0aCB0aGVzZQorICogcnVsZXMsIGFuZCBwdXQgdGhlIHJlc3VsdCBoZXJlLiZxdW90OzwvcD4KKyAqCisgKiA8cD5XZSBhbHNvIGFkZCBhIHNwZWNpYWwgcnVsZSBjYWxsZWQgYSA8ZW0+ZnJhY3Rpb24gcnVsZSA8L2VtPmZvciBudW1iZXJzIHdpdGggZnJhY3Rpb25hbAorICogcGFydHM6PC9wPgorICoKKyAqIDxwcmU+eC54OiAmbHQ7Jmx0OyBwb2ludCAmZ3Q7Jmd0Ozs8L3ByZT4KKyAqCisgKiA8cD5UaGlzIHJ1bGUgaXMgdXNlZCBmb3IgYWxsIHBvc2l0aXZlIG5vbi1pbnRlZ2VycyAobmVnYXRpdmUgbm9uLWludGVnZXJzIHBhc3MgdGhyb3VnaCB0aGUKKyAqIG5lZ2F0aXZlLW51bWJlciBydWxlIGZpcnN0IGFuZCB0aGVuIHRocm91Z2ggdGhpcyBydWxlKS4gSGVyZSwgdGhlICZsdDsmbHQ7IHRva2VuIHJlZmVycyB0bworICogdGhlIG51bWJlcidzIGludGVncmFsIHBhcnQsIGFuZCB0aGUgJmd0OyZndDsgdG8gdGhlIG51bWJlcidzIGZyYWN0aW9uYWwgcGFydC4gVGhlCisgKiBmcmFjdGlvbmFsIHBhcnQgaXMgZm9ybWF0dGVkIGFzIGEgc2VyaWVzIG9mIHNpbmdsZS1kaWdpdCBudW1iZXJzIChlLmcuLCAxMjMuNDU2IHdvdWxkIGJlCisgKiBmb3JtYXR0ZWQgYXMgJnF1b3Q7b25lIGh1bmRyZWQgdHdlbnR5LXRocmVlIHBvaW50IGZvdXIgZml2ZSBzaXgmcXVvdDspLjwvcD4KKyAqCisgKiA8cD5UbyBzZWUgaG93IHRoaXMgcnVsZSBzeW50YXggaXMgYXBwbGllZCB0byB2YXJpb3VzIGxhbmd1YWdlcywgZXhhbWluZSB0aGUgcmVzb3VyY2UgZGF0YS48L3A+CisgKgorICogPHA+VGhlcmUgaXMgYWN0dWFsbHkgbXVjaCBtb3JlIGZsZXhpYmlsaXR5IGJ1aWx0IGludG8gdGhlIHJ1bGUgbGFuZ3VhZ2UgdGhhbiB0aGUKKyAqIGRlc2NyaXB0aW9uIGFib3ZlIHNob3dzLiBBIGZvcm1hdHRlciBtYXkgb3duIG11bHRpcGxlIHJ1bGUgc2V0cywgd2hpY2ggY2FuIGJlIHNlbGVjdGVkIGJ5CisgKiB0aGUgY2FsbGVyLCBhbmQgd2hpY2ggY2FuIHVzZSBlYWNoIG90aGVyIHRvIGZpbGwgaW4gdGhlaXIgc3Vic3RpdHV0aW9ucy4gU3Vic3RpdHV0aW9ucyBjYW4KKyAqIGFsc28gYmUgZmlsbGVkIGluIHdpdGggZGlnaXRzLCB1c2luZyBhIERlY2ltYWxGb3JtYXQgb2JqZWN0LiBUaGVyZSBpcyBzeW50YXggdGhhdCBjYW4gYmUKKyAqIHVzZWQgdG8gYWx0ZXIgYSBydWxlJ3MgZGl2aXNvciBpbiB2YXJpb3VzIHdheXMuIEFuZCB0aGVyZSBpcyBwcm92aXNpb24gZm9yIG11Y2ggbW9yZQorICogZmxleGlibGUgZnJhY3Rpb24gaGFuZGxpbmcuIEEgY29tcGxldGUgZGVzY3JpcHRpb24gb2YgdGhlIHJ1bGUgc3ludGF4IGZvbGxvd3M6PC9wPgorICoKKyAqIDxocj4KKyAqCisgKiA8cD5UaGUgZGVzY3JpcHRpb24gb2YgYSA8dHQ+UnVsZUJhc2VkTnVtYmVyRm9ybWF0PC90dD4ncyBiZWhhdmlvciBjb25zaXN0cyBvZiBvbmUgb3IgbW9yZSA8ZW0+cnVsZQorICogc2V0cy48L2VtPiBFYWNoIHJ1bGUgc2V0IGNvbnNpc3RzIG9mIGEgbmFtZSwgYSBjb2xvbiwgYW5kIGEgbGlzdCBvZiA8ZW0+cnVsZXMuPC9lbT4gQSBydWxlCisgKiBzZXQgbmFtZSBtdXN0IGJlZ2luIHdpdGggYSAlIHNpZ24uIFJ1bGUgc2V0cyB3aXRoIG5hbWVzIHRoYXQgYmVnaW4gd2l0aCBhIHNpbmdsZSAlIHNpZ24KKyAqIGFyZSA8ZW0+cHVibGljOjwvZW0+IHRoZSBjYWxsZXIgY2FuIHNwZWNpZnkgdGhhdCB0aGV5IGJlIHVzZWQgdG8gZm9ybWF0IGFuZCBwYXJzZSBudW1iZXJzLgorICogUnVsZSBzZXRzIHdpdGggbmFtZXMgdGhhdCBiZWdpbiB3aXRoICUlIGFyZSA8ZW0+cHJpdmF0ZTo8L2VtPiB0aGV5IGV4aXN0IG9ubHkgZm9yIHRoZSB1c2UKKyAqIG9mIG90aGVyIHJ1bGUgc2V0cy4gSWYgYSBmb3JtYXR0ZXIgb25seSBoYXMgb25lIHJ1bGUgc2V0LCB0aGUgbmFtZSBtYXkgYmUgb21pdHRlZC48L3A+CisgKgorICogPHA+VGhlIHVzZXIgY2FuIGFsc28gc3BlY2lmeSBhIHNwZWNpYWwgJnF1b3Q7cnVsZSBzZXQmcXVvdDsgbmFtZWQgPHR0PiUlbGVuaWVudC1wYXJzZTwvdHQ+LgorICogVGhlIGJvZHkgb2YgPHR0PiUlbGVuaWVudC1wYXJzZTwvdHQ+IGlzbid0IGEgc2V0IG9mIG51bWJlci1mb3JtYXR0aW5nIHJ1bGVzLCBidXQgYSA8dHQ+UnVsZUJhc2VkQ29sbGF0b3I8L3R0PgorICogZGVzY3JpcHRpb24gd2hpY2ggaXMgdXNlZCB0byBkZWZpbmUgZXF1aXZhbGVuY2VzIGZvciBsZW5pZW50IHBhcnNpbmcuIEZvciBtb3JlIGluZm9ybWF0aW9uCisgKiBvbiB0aGUgc3ludGF4LCBzZWUgPHR0PlJ1bGVCYXNlZENvbGxhdG9yPC90dD4uIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGxlbmllbnQgcGFyc2luZywKKyAqIHNlZSA8dHQ+c2V0TGVuaWVudFBhcnNlKCk8L3R0Pi48L3A+CisgKgorICogPHA+VGhlIGJvZHkgb2YgYSBydWxlIHNldCBjb25zaXN0cyBvZiBhbiBvcmRlcmVkLCBzZW1pY29sb24tZGVsaW1pdGVkIGxpc3Qgb2YgPGVtPnJ1bGVzLjwvZW0+CisgKiBJbnRlcm5hbGx5LCBldmVyeSBydWxlIGhhcyBhIGJhc2UgdmFsdWUsIGEgZGl2aXNvciwgcnVsZSB0ZXh0LCBhbmQgemVybywgb25lLCBvciB0d28gPGVtPnN1YnN0dHV0aW9ucy48L2VtPgorICogVGhlc2UgcGFyYW1ldGVycyBhcmUgY29udHJvbGxlZCBieSB0aGUgZGVzY3JpcHRpb24gc3ludGF4LCB3aGljaCBjb25zaXN0cyBvZiBhIDxlbT5ydWxlCisgKiBkZXNjcmlwdG9yLDwvZW0+IGEgY29sb24sIGFuZCBhIDxlbT5ydWxlIGJvZHkuPC9lbT48L3A+CisgKgorICogPHA+QSBydWxlIGRlc2NyaXB0b3IgY2FuIHRha2Ugb25lIG9mIHRoZSBmb2xsb3dpbmcgZm9ybXMgKHRleHQgaW4gPGVtPml0YWxpY3M8L2VtPiBpcyB0aGUKKyAqIG5hbWUgb2YgYSB0b2tlbik6PC9wPgorICoKKyAqIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIj4KKyAqICAgPHRyPgorICogICAgIDx0ZCB3aWR0aD0iNSUiIHZhbGlnbj0idG9wIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iOCUiIHZhbGlnbj0idG9wIj48ZW0+YnY8L2VtPjo8L3RkPgorICogICAgIDx0ZCB2YWxpZ249InRvcCI+PGVtPmJ2PC9lbT4gc3BlY2lmaWVzIHRoZSBydWxlJ3MgYmFzZSB2YWx1ZS4gPGVtPmJ2PC9lbT4gaXMgYSBkZWNpbWFsCisgKiAgICAgbnVtYmVyIGV4cHJlc3NlZCB1c2luZyBBU0NJSSBkaWdpdHMuIDxlbT5idjwvZW0+IG1heSBjb250YWluIHNwYWNlcywgcGVyaW9kLCBhbmQgY29tbWFzLAorICogICAgIHdoaWNoIGFyZSBpcmdub3JlZC4gVGhlIHJ1bGUncyBkaXZpc29yIGlzIHRoZSBoaWdoZXN0IHBvd2VyIG9mIDEwIGxlc3MgdGhhbiBvciBlcXVhbCB0bworICogICAgIHRoZSBiYXNlIHZhbHVlLjwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjUlIiB2YWxpZ249InRvcCI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjglIiB2YWxpZ249InRvcCI+PGVtPmJ2PC9lbT4vPGVtPnJhZDwvZW0+OjwvdGQ+CisgKiAgICAgPHRkIHZhbGlnbj0idG9wIj48ZW0+YnY8L2VtPiBzcGVjaWZpZXMgdGhlIHJ1bGUncyBiYXNlIHZhbHVlLiBUaGUgcnVsZSdzIGRpdmlzb3IgaXMgdGhlCisgKiAgICAgaGlnaGVzdCBwb3dlciBvZiA8ZW0+cmFkPC9lbT4gbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHRoZSBiYXNlIHZhbHVlLjwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjUlIiB2YWxpZ249InRvcCI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjglIiB2YWxpZ249InRvcCI+PGVtPmJ2PC9lbT4mZ3Q7OjwvdGQ+CisgKiAgICAgPHRkIHZhbGlnbj0idG9wIj48ZW0+YnY8L2VtPiBzcGVjaWZpZXMgdGhlIHJ1bGUncyBiYXNlIHZhbHVlLiBUbyBjYWxjdWxhdGUgdGhlIGRpdmlzb3IsCisgKiAgICAgbGV0IHRoZSByYWRpeCBiZSAxMCwgYW5kIHRoZSBleHBvbmVudCBiZSB0aGUgaGlnaGVzdCBleHBvbmVudCBvZiB0aGUgcmFkaXggdGhhdCB5aWVsZHMgYQorICogICAgIHJlc3VsdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGJhc2UgdmFsdWUuIEV2ZXJ5ICZndDsgY2hhcmFjdGVyIGFmdGVyIHRoZSBiYXNlIHZhbHVlCisgKiAgICAgZGVjcmVhc2VzIHRoZSBleHBvbmVudCBieSAxLiBJZiB0aGUgZXhwb25lbnQgaXMgcG9zaXRpdmUgb3IgMCwgdGhlIGRpdmlzb3IgaXMgdGhlIHJhZGl4CisgKiAgICAgcmFpc2VkIHRvIHRoZSBwb3dlciBvZiB0aGUgZXhwb25lbnQ7IG90aGVyd2lzZSwgdGhlIGRpdmlzb3IgaXMgMS48L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSI1JSIgdmFsaWduPSJ0b3AiPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSI4JSIgdmFsaWduPSJ0b3AiPjxlbT5idjwvZW0+LzxlbT5yYWQ8L2VtPiZndDs6PC90ZD4KKyAqICAgICA8dGQgdmFsaWduPSJ0b3AiPjxlbT5idjwvZW0+IHNwZWNpZmllcyB0aGUgcnVsZSdzIGJhc2UgdmFsdWUuIFRvIGNhbGN1bGF0ZSB0aGUgZGl2aXNvciwKKyAqICAgICBsZXQgdGhlIHJhZGl4IGJlIDxlbT5yYWQ8L2VtPiwgYW5kIHRoZSBleHBvbmVudCBiZSB0aGUgaGlnaGVzdCBleHBvbmVudCBvZiB0aGUgcmFkaXggdGhhdAorICogICAgIHlpZWxkcyBhIHJlc3VsdCBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGJhc2UgdmFsdWUuIEV2ZXJ5ICZndDsgY2hhcmFjdGVyIGFmdGVyIHRoZSByYWRpeAorICogICAgIGRlY3JlYXNlcyB0aGUgZXhwb25lbnQgYnkgMS4gSWYgdGhlIGV4cG9uZW50IGlzIHBvc2l0aXZlIG9yIDAsIHRoZSBkaXZpc29yIGlzIHRoZSByYWRpeAorICogICAgIHJhaXNlZCB0byB0aGUgcG93ZXIgb2YgdGhlIGV4cG9uZW50OyBvdGhlcndpc2UsIHRoZSBkaXZpc29yIGlzIDEuPC90ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgorICogICAgIDx0ZCB3aWR0aD0iNSUiIHZhbGlnbj0idG9wIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iOCUiIHZhbGlnbj0idG9wIj4teDo8L3RkPgorICogICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIHJ1bGUgaXMgYSBuZWdhdGl2ZS1udW1iZXIgcnVsZS48L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSI1JSIgdmFsaWduPSJ0b3AiPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSI4JSIgdmFsaWduPSJ0b3AiPngueDo8L3RkPgorICogICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIHJ1bGUgaXMgYW4gPGVtPmltcHJvcGVyIGZyYWN0aW9uIHJ1bGUuPC9lbT48L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSI1JSIgdmFsaWduPSJ0b3AiPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSI4JSIgdmFsaWduPSJ0b3AiPjAueDo8L3RkPgorICogICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIHJ1bGUgaXMgYSA8ZW0+cHJvcGVyIGZyYWN0aW9uIHJ1bGUuPC9lbT48L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSI1JSIgdmFsaWduPSJ0b3AiPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSI4JSIgdmFsaWduPSJ0b3AiPnguMDo8L3RkPgorICogICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIHJ1bGUgaXMgYSA8ZW0+bWFzdGVyIHJ1bGUuPC9lbT48L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSI1JSIgdmFsaWduPSJ0b3AiPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSI4JSIgdmFsaWduPSJ0b3AiPjxlbT5ub3RoaW5nPC9lbT48L3RkPgorICogICAgIDx0ZCB2YWxpZ249InRvcCI+SWYgdGhlIHJ1bGUncyBydWxlIGRlc2NyaXB0b3IgaXMgbGVmdCBvdXQsIHRoZSBiYXNlIHZhbHVlIGlzIG9uZSBwbHVzIHRoZQorICogICAgIHByZWNlZGluZyBydWxlJ3MgYmFzZSB2YWx1ZSAob3IgemVybyBpZiB0aGlzIGlzIHRoZSBmaXJzdCBydWxlIGluIHRoZSBsaXN0KSBpbiBhIG5vcm1hbAorICogICAgIHJ1bGUgc2V0LiZuYnNwOyBJbiBhIGZyYWN0aW9uIHJ1bGUgc2V0LCB0aGUgYmFzZSB2YWx1ZSBpcyB0aGUgc2FtZSBhcyB0aGUgcHJlY2VkaW5nIHJ1bGUncworICogICAgIGJhc2UgdmFsdWUuPC90ZD4KKyAqICAgPC90cj4KKyAqIDwvdGFibGU+CisgKgorICogPHA+QSBydWxlIHNldCBtYXkgYmUgZWl0aGVyIGEgcmVndWxhciBydWxlIHNldCBvciBhIDxlbT5mcmFjdGlvbiBydWxlIHNldCw8L2VtPiBkZXBlbmRpbmcKKyAqIG9uIHdoZXRoZXIgaXQgaXMgdXNlZCB0byBmb3JtYXQgYSBudW1iZXIncyBpbnRlZ3JhbCBwYXJ0IChvciB0aGUgd2hvbGUgbnVtYmVyKSBvciBhCisgKiBudW1iZXIncyBmcmFjdGlvbmFsIHBhcnQuIFVzaW5nIGEgcnVsZSBzZXQgdG8gZm9ybWF0IGEgcnVsZSdzIGZyYWN0aW9uYWwgcGFydCBtYWtlcyBpdCBhCisgKiBmcmFjdGlvbiBydWxlIHNldC48L3A+CisgKgorICogPHA+V2hpY2ggcnVsZSBpcyB1c2VkIHRvIGZvcm1hdCBhIG51bWJlciBpcyBkZWZpbmVkIGFjY29yZGluZyB0byBvbmUgb2YgdGhlIGZvbGxvd2luZworICogYWxnb3JpdGhtczogSWYgdGhlIHJ1bGUgc2V0IGlzIGEgcmVndWxhciBydWxlIHNldCwgZG8gdGhlIGZvbGxvd2luZzoKKyAqCisgKiA8dWw+CisgKiAgIDxsaT5JZiB0aGUgcnVsZSBzZXQgaW5jbHVkZXMgYSBtYXN0ZXIgcnVsZSAoYW5kIHRoZSBudW1iZXIgd2FzIHBhc3NlZCBpbiBhcyBhIDx0dD5kb3VibGU8L3R0PiksCisgKiAgICAgdXNlIHRoZSBtYXN0ZXIgcnVsZS4mbmJzcDsgKElmIHRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkIHdhcyBwYXNzZWQgaW4gYXMgYSA8dHQ+bG9uZzwvdHQ+LAorICogICAgIHRoZSBtYXN0ZXIgcnVsZSBpcyBpZ25vcmVkLik8L2xpPgorICogICA8bGk+SWYgdGhlIG51bWJlciBpcyBuZWdhdGl2ZSwgdXNlIHRoZSBuZWdhdGl2ZS1udW1iZXIgcnVsZS48L2xpPgorICogICA8bGk+SWYgdGhlIG51bWJlciBoYXMgYSBmcmFjdGlvbmFsIHBhcnQgYW5kIGlzIGdyZWF0ZXIgdGhhbiAxLCB1c2UgdGhlIGltcHJvcGVyIGZyYWN0aW9uCisgKiAgICAgcnVsZS48L2xpPgorICogICA8bGk+SWYgdGhlIG51bWJlciBoYXMgYSBmcmFjdGlvbmFsIHBhcnQgYW5kIGlzIGJldHdlZW4gMCBhbmQgMSwgdXNlIHRoZSBwcm9wZXIgZnJhY3Rpb24KKyAqICAgICBydWxlLjwvbGk+CisgKiAgIDxsaT5CaW5hcnktc2VhcmNoIHRoZSBydWxlIGxpc3QgZm9yIHRoZSBydWxlIHdpdGggdGhlIGhpZ2hlc3QgYmFzZSB2YWx1ZSBsZXNzIHRoYW4gb3IgZXF1YWwKKyAqICAgICB0byB0aGUgbnVtYmVyLiBJZiB0aGF0IHJ1bGUgaGFzIHR3byBzdWJzdGl0dXRpb25zLCBpdHMgYmFzZSB2YWx1ZSBpcyBub3QgYW4gZXZlbiBtdWx0aXBsZQorICogICAgIG9mIGl0cyBkaXZpc29yLCBhbmQgdGhlIG51bWJlciA8ZW0+aXM8L2VtPiBhbiBldmVuIG11bHRpcGxlIG9mIHRoZSBydWxlJ3MgZGl2aXNvciwgdXNlIHRoZQorICogICAgIHJ1bGUgdGhhdCBwcmVjZWRlcyBpdCBpbiB0aGUgcnVsZSBsaXN0LiBPdGhlcndpc2UsIHVzZSB0aGUgcnVsZSBpdHNlbGYuPC9saT4KKyAqIDwvdWw+CisgKgorICogPHA+SWYgdGhlIHJ1bGUgc2V0IGlzIGEgZnJhY3Rpb24gcnVsZSBzZXQsIGRvIHRoZSBmb2xsb3dpbmc6CisgKgorICogPHVsPgorICogICA8bGk+SWdub3JlIG5lZ2F0aXZlLW51bWJlciBhbmQgZnJhY3Rpb24gcnVsZXMuPC9saT4KKyAqICAgPGxpPkZvciBlYWNoIHJ1bGUgaW4gdGhlIGxpc3QsIG11bHRpcGx5IHRoZSBudW1iZXIgYmVpbmcgZm9ybWF0dGVkICh3aGljaCB3aWxsIGFsd2F5cyBiZQorICogICAgIGJldHdlZW4gMCBhbmQgMSkgYnkgdGhlIHJ1bGUncyBiYXNlIHZhbHVlLiBLZWVwIHRyYWNrIG9mIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSByZXN1bHQKKyAqICAgICB0aGUgbmVhcmVzdCBpbnRlZ2VyLjwvbGk+CisgKiAgIDxsaT5Vc2UgdGhlIHJ1bGUgdGhhdCBwcm9kdWNlZCB0aGUgcmVzdWx0IGNsb3Nlc3QgdG8gemVybyBpbiB0aGUgYWJvdmUgY2FsY3VsYXRpb24uIEluIHRoZQorICogICAgIGV2ZW50IG9mIGEgdGllIG9yIGEgZGlyZWN0IGhpdCwgdXNlIHRoZSBmaXJzdCBtYXRjaGluZyBydWxlIGVuY291bnRlcmVkLiAoVGhlIGlkZWEgaGVyZSBpcworICogICAgIHRvIHRyeSBlYWNoIHJ1bGUncyBiYXNlIHZhbHVlIGFzIGEgcG9zc2libGUgZGVub21pbmF0b3Igb2YgYSBmcmFjdGlvbi4gV2hpY2hldmVyCisgKiAgICAgZGVub21pbmF0b3IgcHJvZHVjZXMgdGhlIGZyYWN0aW9uIGNsb3Nlc3QgaW4gdmFsdWUgdG8gdGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQgd2lucy4pIElmCisgKiAgICAgdGhlIHJ1bGUgZm9sbG93aW5nIHRoZSBtYXRjaGluZyBydWxlIGhhcyB0aGUgc2FtZSBiYXNlIHZhbHVlLCB1c2UgaXQgaWYgdGhlIG51bWVyYXRvciBvZgorICogICAgIHRoZSBmcmFjdGlvbiBpcyBhbnl0aGluZyBvdGhlciB0aGFuIDE7IGlmIHRoZSBudW1lcmF0b3IgaXMgMSwgdXNlIHRoZSBvcmlnaW5hbCBtYXRjaGluZworICogICAgIHJ1bGUuIChUaGlzIGlzIHRvIGFsbG93IHNpbmd1bGFyIGFuZCBwbHVyYWwgZm9ybXMgb2YgdGhlIHJ1bGUgdGV4dCB3aXRob3V0IGEgbG90IG9mIGV4dHJhCisgKiAgICAgaGFzc2xlLik8L2xpPgorICogPC91bD4KKyAqCisgKiA8cD5BIHJ1bGUncyBib2R5IGNvbnNpc3RzIG9mIGEgc3RyaW5nIG9mIGNoYXJhY3RlcnMgdGVybWluYXRlZCBieSBhIHNlbWljb2xvbi4gVGhlIHJ1bGUKKyAqIG1heSBpbmNsdWRlIHplcm8sIG9uZSwgb3IgdHdvIDxlbT5zdWJzdGl0dXRpb24gdG9rZW5zLDwvZW0+IGFuZCBhIHJhbmdlIG9mIHRleHQgaW4KKyAqIGJyYWNrZXRzLiBUaGUgYnJhY2tldHMgZGVub3RlIG9wdGlvbmFsIHRleHQgKGFuZCBtYXkgYWxzbyBpbmNsdWRlIG9uZSBvciBib3RoCisgKiBzdWJzdGl0dXRpb25zKS4gVGhlIGV4YWN0IG1lYW5pbmdzIG9mIHRoZSBzdWJzdGl0dXRpb24gdG9rZW5zLCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zCisgKiBvcHRpb25hbCB0ZXh0IGlzIG9taXR0ZWQsIGRlcGVuZCBvbiB0aGUgc3ludGF4IG9mIHRoZSBzdWJzdGl0dXRpb24gdG9rZW4gYW5kIHRoZSBjb250ZXh0LgorICogVGhlIHJlc3Qgb2YgdGhlIHRleHQgaW4gYSBydWxlIGJvZHkgaXMgbGl0ZXJhbCB0ZXh0IHRoYXQgaXMgb3V0cHV0IHdoZW4gdGhlIHJ1bGUgbWF0Y2hlcworICogdGhlIG51bWJlciBiZWluZyBmb3JtYXR0ZWQuPC9wPgorICoKKyAqIDxwPkEgc3Vic3RpdHV0aW9uIHRva2VuIGJlZ2lucyBhbmQgZW5kcyB3aXRoIGEgPGVtPnRva2VuIGNoYXJhY3Rlci48L2VtPiBUaGUgdG9rZW4KKyAqIGNoYXJhY3RlciBhbmQgdGhlIGNvbnRleHQgdG9nZXRoZXIgc3BlY2lmeSBhIG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gdG8gYmUgcGVyZm9ybWVkIG9uIHRoZQorICogbnVtYmVyIGJlaW5nIGZvcm1hdHRlZC4gQW4gb3B0aW9uYWwgPGVtPnN1YnN0aXR1dGlvbiBkZXNjcmlwdG9yIDwvZW0+c3BlY2lmaWVzIGhvdyB0aGUKKyAqIHZhbHVlIHJlc3VsdGluZyBmcm9tIHRoYXQgb3BlcmF0aW9uIGlzIHVzZWQgdG8gZmlsbCBpbiB0aGUgc3Vic3RpdHV0aW9uLiBUaGUgcG9zaXRpb24gb2YKKyAqIHRoZSBzdWJzdGl0dXRpb24gdG9rZW4gaW4gdGhlIHJ1bGUgYm9keSBzcGVjaWZpZXMgdGhlIGxvY2F0aW9uIG9mIHRoZSByZXN1bHRhbnQgdGV4dCBpbgorICogdGhlIG9yaWdpbmFsIHJ1bGUgdGV4dC48L3A+CisgKgorICogPHA+VGhlIG1lYW5pbmdzIG9mIHRoZSBzdWJzdGl0dXRpb24gdG9rZW4gY2hhcmFjdGVycyBhcmUgYXMgZm9sbG93czo8L3A+CisgKgorICogPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSIzNyI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjIzIj4mZ3Q7Jmd0OzwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIxNjUiIHZhbGlnbj0idG9wIj5pbiBub3JtYWwgcnVsZTwvdGQ+CisgKiAgICAgPHRkPkRpdmlkZSB0aGUgbnVtYmVyIGJ5IHRoZSBydWxlJ3MgZGl2aXNvciBhbmQgZm9ybWF0IHRoZSByZW1haW5kZXI8L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSIzNyI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjIzIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMTY1IiB2YWxpZ249InRvcCI+aW4gbmVnYXRpdmUtbnVtYmVyIHJ1bGU8L3RkPgorICogICAgIDx0ZD5GaW5kIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgbnVtYmVyIGFuZCBmb3JtYXQgdGhlIHJlc3VsdDwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjM3Ij48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMjMiPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIxNjUiIHZhbGlnbj0idG9wIj5pbiBmcmFjdGlvbiBvciBtYXN0ZXIgcnVsZTwvdGQ+CisgKiAgICAgPHRkPklzb2xhdGUgdGhlIG51bWJlcidzIGZyYWN0aW9uYWwgcGFydCBhbmQgZm9ybWF0IGl0LjwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjM3Ij48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMjMiPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIxNjUiIHZhbGlnbj0idG9wIj5pbiBydWxlIGluIGZyYWN0aW9uIHJ1bGUgc2V0PC90ZD4KKyAqICAgICA8dGQ+Tm90IGFsbG93ZWQuPC90ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgorICogICAgIDx0ZCB3aWR0aD0iMzciPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIyMyI+Jmd0OyZndDsmZ3Q7PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjE2NSIgdmFsaWduPSJ0b3AiPmluIG5vcm1hbCBydWxlPC90ZD4KKyAqICAgICA8dGQ+RGl2aWRlIHRoZSBudW1iZXIgYnkgdGhlIHJ1bGUncyBkaXZpc29yIGFuZCBmb3JtYXQgdGhlIHJlbWFpbmRlciwKKyAqICAgICAgIGJ1dCBieXBhc3MgdGhlIG5vcm1hbCBydWxlLXNlbGVjdGlvbiBwcm9jZXNzIGFuZCBqdXN0IHVzZSB0aGUKKyAqICAgICAgIHJ1bGUgdGhhdCBwcmVjZWRlcyB0aGlzIG9uZSBpbiB0aGlzIHJ1bGUgbGlzdC48L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSIzNyI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjIzIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMTY1IiB2YWxpZ249InRvcCI+aW4gYWxsIG90aGVyIHJ1bGVzPC90ZD4KKyAqICAgICA8dGQ+Tm90IGFsbG93ZWQuPC90ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgorICogICAgIDx0ZCB3aWR0aD0iMzciPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIyMyI+Jmx0OyZsdDs8L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMTY1IiB2YWxpZ249InRvcCI+aW4gbm9ybWFsIHJ1bGU8L3RkPgorICogICAgIDx0ZD5EaXZpZGUgdGhlIG51bWJlciBieSB0aGUgcnVsZSdzIGRpdmlzb3IgYW5kIGZvcm1hdCB0aGUgcXVvdGllbnQ8L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSIzNyI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjIzIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMTY1IiB2YWxpZ249InRvcCI+aW4gbmVnYXRpdmUtbnVtYmVyIHJ1bGU8L3RkPgorICogICAgIDx0ZD5Ob3QgYWxsb3dlZC48L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSIzNyI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjIzIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMTY1IiB2YWxpZ249InRvcCI+aW4gZnJhY3Rpb24gb3IgbWFzdGVyIHJ1bGU8L3RkPgorICogICAgIDx0ZD5Jc29sYXRlIHRoZSBudW1iZXIncyBpbnRlZ3JhbCBwYXJ0IGFuZCBmb3JtYXQgaXQuPC90ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgorICogICAgIDx0ZCB3aWR0aD0iMzciPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIyMyI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjE2NSIgdmFsaWduPSJ0b3AiPmluIHJ1bGUgaW4gZnJhY3Rpb24gcnVsZSBzZXQ8L3RkPgorICogICAgIDx0ZD5NdWx0aXBseSB0aGUgbnVtYmVyIGJ5IHRoZSBydWxlJ3MgYmFzZSB2YWx1ZSBhbmQgZm9ybWF0IHRoZSByZXN1bHQuPC90ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgorICogICAgIDx0ZCB3aWR0aD0iMzciPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIyMyI+PT08L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMTY1IiB2YWxpZ249InRvcCI+aW4gYWxsIHJ1bGUgc2V0czwvdGQ+CisgKiAgICAgPHRkPkZvcm1hdCB0aGUgbnVtYmVyIHVuY2hhbmdlZDwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjM3Ij48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMjMiPltdPC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjE2NSIgdmFsaWduPSJ0b3AiPmluIG5vcm1hbCBydWxlPC90ZD4KKyAqICAgICA8dGQ+T21pdCB0aGUgb3B0aW9uYWwgdGV4dCBpZiB0aGUgbnVtYmVyIGlzIGFuIGV2ZW4gbXVsdGlwbGUgb2YgdGhlIHJ1bGUncyBkaXZpc29yPC90ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgorICogICAgIDx0ZCB3aWR0aD0iMzciPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIyMyI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjE2NSIgdmFsaWduPSJ0b3AiPmluIG5lZ2F0aXZlLW51bWJlciBydWxlPC90ZD4KKyAqICAgICA8dGQ+Tm90IGFsbG93ZWQuPC90ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgorICogICAgIDx0ZCB3aWR0aD0iMzciPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIyMyI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjE2NSIgdmFsaWduPSJ0b3AiPmluIGltcHJvcGVyLWZyYWN0aW9uIHJ1bGU8L3RkPgorICogICAgIDx0ZD5PbWl0IHRoZSBvcHRpb25hbCB0ZXh0IGlmIHRoZSBudW1iZXIgaXMgYmV0d2VlbiAwIGFuZCAxIChzYW1lIGFzIHNwZWNpZnlpbmcgYm90aCBhbgorICogICAgIHgueCBydWxlIGFuZCBhIDAueCBydWxlKTwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjM3Ij48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMjMiPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIxNjUiIHZhbGlnbj0idG9wIj5pbiBtYXN0ZXIgcnVsZTwvdGQ+CisgKiAgICAgPHRkPk9taXQgdGhlIG9wdGlvbmFsIHRleHQgaWYgdGhlIG51bWJlciBpcyBhbiBpbnRlZ2VyIChzYW1lIGFzIHNwZWNpZnlpbmcgYm90aCBhbiB4LngKKyAqICAgICBydWxlIGFuZCBhbiB4LjAgcnVsZSk8L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSIzNyI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjIzIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMTY1IiB2YWxpZ249InRvcCI+aW4gcHJvcGVyLWZyYWN0aW9uIHJ1bGU8L3RkPgorICogICAgIDx0ZD5Ob3QgYWxsb3dlZC48L3RkPgorICogICA8L3RyPgorICogICA8dHI+CisgKiAgICAgPHRkIHdpZHRoPSIzNyI+PC90ZD4KKyAqICAgICA8dGQgd2lkdGg9IjIzIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMTY1IiB2YWxpZ249InRvcCI+aW4gcnVsZSBpbiBmcmFjdGlvbiBydWxlIHNldDwvdGQ+CisgKiAgICAgPHRkPk9taXQgdGhlIG9wdGlvbmFsIHRleHQgaWYgbXVsdGlwbHlpbmcgdGhlIG51bWJlciBieSB0aGUgcnVsZSdzIGJhc2UgdmFsdWUgeWllbGRzIDEuPC90ZD4KKyAqICAgPC90cj4KKyAqIDwvdGFibGU+CisgKgorICogPHA+VGhlIHN1YnN0aXR1dGlvbiBkZXNjcmlwdG9yIChpLmUuLCB0aGUgdGV4dCBiZXR3ZWVuIHRoZSB0b2tlbiBjaGFyYWN0ZXJzKSBtYXkgdGFrZSBvbmUKKyAqIG9mIHRocmVlIGZvcm1zOjwvcD4KKyAqCisgKiA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjQyIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMTY2IiB2YWxpZ249InRvcCI+YSBydWxlIHNldCBuYW1lPC90ZD4KKyAqICAgICA8dGQ+UGVyZm9ybSB0aGUgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbiBvbiB0aGUgbnVtYmVyLCBhbmQgZm9ybWF0IHRoZSByZXN1bHQgdXNpbmcgdGhlCisgKiAgICAgbmFtZWQgcnVsZSBzZXQuPC90ZD4KKyAqICAgPC90cj4KKyAqICAgPHRyPgorICogICAgIDx0ZCB3aWR0aD0iNDIiPjwvdGQ+CisgKiAgICAgPHRkIHdpZHRoPSIxNjYiIHZhbGlnbj0idG9wIj5hIERlY2ltYWxGb3JtYXQgcGF0dGVybjwvdGQ+CisgKiAgICAgPHRkPlBlcmZvcm0gdGhlIG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gb24gdGhlIG51bWJlciwgYW5kIGZvcm1hdCB0aGUgcmVzdWx0IHVzaW5nIGEKKyAqICAgICBEZWNpbWFsRm9ybWF0IHdpdGggdGhlIHNwZWNpZmllZCBwYXR0ZXJuLiZuYnNwOyBUaGUgcGF0dGVybiBtdXN0IGJlZ2luIHdpdGggMCBvciAjLjwvdGQ+CisgKiAgIDwvdHI+CisgKiAgIDx0cj4KKyAqICAgICA8dGQgd2lkdGg9IjQyIj48L3RkPgorICogICAgIDx0ZCB3aWR0aD0iMTY2IiB2YWxpZ249InRvcCI+bm90aGluZzwvdGQ+CisgKiAgICAgPHRkPlBlcmZvcm0gdGhlIG1hdGhlbWF0aWNhbCBvcGVyYXRpb24gb24gdGhlIG51bWJlciwgYW5kIGZvcm1hdCB0aGUgcmVzdWx0IHVzaW5nIHRoZSBydWxlCisgKiAgICAgc2V0IGNvbnRhaW5pbmcgdGhlIGN1cnJlbnQgcnVsZSwgZXhjZXB0Ojx1bD4KKyAqICAgICAgIDxsaT5Zb3UgY2FuJ3QgaGF2ZSBhbiBlbXB0eSBzdWJzdGl0dXRpb24gZGVzY3JpcHRvciB3aXRoIGEgPT0gc3Vic3RpdHV0aW9uLjwvbGk+CisgKiAgICAgICA8bGk+SWYgeW91IG9taXQgdGhlIHN1YnN0aXR1dGlvbiBkZXNjcmlwdG9yIGluIGEgJmd0OyZndDsgc3Vic3RpdHV0aW9uIGluIGEgZnJhY3Rpb24gcnVsZSwKKyAqICAgICAgICAgZm9ybWF0IHRoZSByZXN1bHQgb25lIGRpZ2l0IGF0IGEgdGltZSB1c2luZyB0aGUgcnVsZSBzZXQgY29udGFpbmluZyB0aGUgY3VycmVudCBydWxlLjwvbGk+CisgKiAgICAgICA8bGk+SWYgeW91IG9taXQgdGhlIHN1YnN0aXR1dGlvbiBkZXNjcmlwdG9yIGluIGEgJmx0OyZsdDsgc3Vic3RpdHV0aW9uIGluIGEgcnVsZSBpbiBhCisgKiAgICAgICAgIGZyYWN0aW9uIHJ1bGUgc2V0LCBmb3JtYXQgdGhlIHJlc3VsdCB1c2luZyB0aGUgZGVmYXVsdCBydWxlIHNldCBmb3IgdGhpcyBmb3JtYXR0ZXIuPC9saT4KKyAqICAgICA8L3VsPgorICogICAgIDwvdGQ+CisgKiAgIDwvdHI+CisgKiA8L3RhYmxlPgorICoKKyAqIDxwPldoaXRlc3BhY2UgaXMgaWdub3JlZCBiZXR3ZWVuIGEgcnVsZSBzZXQgbmFtZSBhbmQgYSBydWxlIHNldCBib2R5LCBiZXR3ZWVuIGEgcnVsZQorICogZGVzY3JpcHRvciBhbmQgYSBydWxlIGJvZHksIG9yIGJldHdlZW4gcnVsZXMuIElmIGEgcnVsZSBib2R5IGJlZ2lucyB3aXRoIGFuIGFwb3N0cm9waGUsCisgKiB0aGUgYXBvc3Ryb3BoZSBpcyBpZ25vcmVkLCBidXQgYWxsIHRleHQgYWZ0ZXIgaXQgYmVjb21lcyBzaWduaWZpY2FudCAodGhpcyBpcyBob3cgeW91IGNhbgorICogaGF2ZSBhIHJ1bGUncyBydWxlIHRleHQgYmVnaW4gd2l0aCB3aGl0ZXNwYWNlKS4gVGhlcmUgaXMgbm8gZXNjYXBlIGZ1bmN0aW9uOiB0aGUgc2VtaWNvbG9uCisgKiBpcyBub3QgYWxsb3dlZCBpbiBydWxlIHNldCBuYW1lcyBvciBpbiBydWxlIHRleHQsIGFuZCB0aGUgY29sb24gaXMgbm90IGFsbG93ZWQgaW4gcnVsZSBzZXQKKyAqIG5hbWVzLiBUaGUgY2hhcmFjdGVycyBiZWdpbm5pbmcgYSBzdWJzdGl0dXRpb24gdG9rZW4gYXJlIGFsd2F5cyB0cmVhdGVkIGFzIHRoZSBiZWdpbm5pbmcKKyAqIG9mIGEgc3Vic3RpdHV0aW9uIHRva2VuLjwvcD4KKyAqCisgKiA8cD5TZWUgdGhlIHJlc291cmNlIGRhdGEgYW5kIHRoZSBkZW1vIHByb2dyYW0gZm9yIGFubm90YXRlZCBleGFtcGxlcyBvZiByZWFsIHJ1bGUgc2V0cworICogdXNpbmcgdGhlc2UgZmVhdHVyZXMuPC9wPgorICoKKyAqIEBhdXRob3IgUmljaGFyZCBHaWxsYW0KKyAqICRSQ1NmaWxlOiBSdWxlQmFzZWROdW1iZXJGb3JtYXQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjMgJCAkRGF0ZTogMjAwMC8wNS8yNiAyMTozODo1NSAkCisgKiBAc2VlIE51bWJlckZvcm1hdAorICogQHNlZSBEZWNpbWFsRm9ybWF0CisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZXh0ZW5kcyBOdW1iZXJGb3JtYXQgeworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGNvbnN0YW50cworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFB1dHMgYSBjb3B5cmlnaHQgaW4gdGhlIC5jbGFzcyBmaWxlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodE5vdGljZQorICAgICAgICA9ICJDb3B5cmlnaHQgXHUwMGE5MTk5Ny0xOTk4IElCTSBDb3JwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4iOworCisgICAgLyoqCisgICAgICogU2VsZWN0b3IgY29kZSB0aGF0IHRlbGxzIHRoZSBjb25zdHJ1Y3RvciB0byBjcmVhdGUgYSBzcGVsbG91dCBmb3JtYXR0ZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTUEVMTE9VVCA9IDE7CisKKyAgICAvKioKKyAgICAgKiBTZWxlY3RvciBjb2RlIHRoYXQgdGVsbHMgdGhlIGNvbnN0cnVjdG9yIHRvIGNyZWF0ZSBhbiBvcmRpbmFsIGZvcm1hdHRlcgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE9SRElOQUwgPSAyOworCisgICAgLyoqCisgICAgICogU2VsZWN0b3IgY29kZSB0aGF0IHRlbGxzIHRoZSBjb25zdHJ1Y3RvciB0byBjcmVhdGUgYSBkdXJhdGlvbiBmb3JtYXR0ZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBEVVJBVElPTiA9IDM7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gZGF0YSBtZW1iZXJzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogVGhlIGZvcm1hdHRlcidzIHJ1bGUgc2V0cy4KKyAgICAgKi8KKyAgICBwcml2YXRlIE5GUnVsZVNldFtdIHJ1bGVTZXRzID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIEEgcG9pbnRlciB0byB0aGUgZm9ybWF0dGVyJ3MgZGVmYXVsdCBydWxlIHNldC4gIFRoaXMgaXMgYWx3YXlzIGluY2x1ZGVkCisgICAgICogaW4gcnVsZVNldHMuCisgICAgICovCisgICAgcHJpdmF0ZSBORlJ1bGVTZXQgZGVmYXVsdFJ1bGVTZXQgPSBudWxsOworCisgICAgLyoqCisgICAgICogVGhlIGZvcm1hdHRlcidzIGxvY2FsZS4gIFRoaXMgaXMgdXNlZCB0byBjcmVhdGUgRGVjaW1hbEZvcm1hdFN5bWJvbHMgYW5kCisgICAgICogQ29sbGF0b3Igb2JqZWN0cy4KKyAgICAgKi8KKyAgICBwcml2YXRlIExvY2FsZSBsb2NhbGUgPSBudWxsOworCisgICAgLyoqCisgICAgICogQ29sbGF0b3IgdG8gYmUgdXNlZCBpbiBsZW5pZW50IHBhcnNpbmcuICBUaGlzIHZhcmlhYmxlIGlzIGxhenktZXZhbHVhdGVkOgorICAgICAqIHRoZSBjb2xsYXRvciBpcyBhY3R1YWxseSBjcmVhdGVkIHRoZSBmaXJzdCB0aW1lIHRoZSBjbGllbnQgZG9lcyBhIHBhcnNlCisgICAgICogd2l0aCBsZW5pZW50LXBhcnNlIG1vZGUgdHVybmVkIG9uLgorICAgICAqLworICAgIHByaXZhdGUgQ29sbGF0b3IgY29sbGF0b3IgPSBudWxsOworCisgICAgLyoqCisgICAgICogVGhlIERlY2ltYWxGb3JtYXRTeW1ib2xzIG9iamVjdCB0aGF0IGFueSBEZWNpbWFsRm9ybWF0IG9iamVjdHMgdGhpcworICAgICAqIGZvcm1hdHRlciB1c2VzIHNob3VsZCB1c2UuICBUaGlzIHZhcmlhYmxlIGlzIGxhenktZXZhbHVhdGVkOiBpdCBpc24ndAorICAgICAqIGZpbGxlZCBpbiBpZiB0aGUgcnVsZSBzZXQgbmV2ZXIgdXNlcyBhIERlY2ltYWxGb3JtYXQgcGF0dGVybi4KKyAgICAgKi8KKyAgICBwcml2YXRlIERlY2ltYWxGb3JtYXRTeW1ib2xzIGRlY2ltYWxGb3JtYXRTeW1ib2xzID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIEZsYWcgc3BlY2lmeWluZyB3aGV0aGVyIGxlbmllbnQgcGFyc2UgbW9kZSBpcyBvbiBvciBvZmYuICBPZmYgYnkgZGVmYXVsdC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gbGVuaWVudFBhcnNlID0gZmFsc2U7CisKKyAgICAvKioKKyAgICAgKiBJZiB0aGUgZGVzY3JpcHRpb24gc3BlY2lmaWVzIGxlbmllbnQtcGFyc2UgcnVsZXMsIHRoZXkncmUgc3RvcmVkIGhlcmUgdW50aWwKKyAgICAgKiB0aGUgY29sbGF0b3IgaXMgY3JlYXRlZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyBsZW5pZW50UGFyc2VSdWxlcyA9IG51bGw7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gY29uc3RydWN0b3JzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIFJ1bGVCYXNlZE51bWJlckZvcm1hdCB0aGF0IGJlaGF2ZXMgYWNjb3JkaW5nIHRvIHRoZSBkZXNjcmlwdGlvbgorICAgICAqIHBhc3NlZCBpbi4gIFRoZSBmb3JtYXR0ZXIgdXNlcyB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICogQHBhcmFtIGRlc2NyaXB0aW9uIEEgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRlcidzIGRlc2lyZWQgYmVoYXZpb3IuCisgICAgICogU2VlIHRoZSBjbGFzcyBkb2N1bWVudGF0aW9uIGZvciBhIGNvbXBsZXRlIGV4cGxhbmF0aW9uIG9mIHRoZSBkZXNjcmlwdGlvbgorICAgICAqIHN5bnRheC4KKyAgICAgKi8KKyAgICBwdWJsaWMgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KFN0cmluZyBkZXNjcmlwdGlvbikgeworICAgICAgICBsb2NhbGUgPSBMb2NhbGUuZ2V0RGVmYXVsdCgpOworICAgICAgICBpbml0KGRlc2NyaXB0aW9uKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIGEgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IHRoYXQgYmVoYXZlcyBhY2NvcmRpbmcgdG8gdGhlIGRlc2NyaXB0aW9uCisgICAgICogcGFzc2VkIGluLiAgVGhlIGZvcm1hdHRlciB1c2VzIHRoZSBzcGVjaWZpZWQgbG9jYWxlIHRvIGRldGVybWluZSB0aGUKKyAgICAgKiBjaGFyYWN0ZXJzIHRvIHVzZSB3aGVuIGZvcm1hdHRpbmcgaW4gbnVtZXJhbHMsIGFuZCB0byBkZWZpbmUgZXF1aXZhbGVuY2VzCisgICAgICogZm9yIGxlbmllbnQgcGFyc2luZy4KKyAgICAgKiBAcGFyYW0gZGVzY3JpcHRpb24gQSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGVyJ3MgZGVzaXJlZCBiZWhhdmlvci4KKyAgICAgKiBTZWUgdGhlIGNsYXNzIGRvY3VtZW50YXRpb24gZm9yIGEgY29tcGxldGUgZXhwbGFuYXRpb24gb2YgdGhlIGRlc2NyaXB0aW9uCisgICAgICogc3ludGF4LgorICAgICAqIEBwYXJhbSBsb2NhbGUgQSBsb2NhbGUsIHdoaWNoIGdvdmVybnMgd2hpY2ggY2hhcmFjdGVycyBhcmUgdXNlZCBmb3IKKyAgICAgKiBmb3JtYXR0aW5nIHZhbHVlcyBpbiBudW1lcmFscywgYW5kIHdoaWNoIGNoYXJhY3RlcnMgYXJlIGVxdWl2YWxlbnQgaW4KKyAgICAgKiBsZW5pZW50IHBhcnNpbmcuCisgICAgICovCisgICAgcHVibGljIFJ1bGVCYXNlZE51bWJlckZvcm1hdChTdHJpbmcgZGVzY3JpcHRpb24sIExvY2FsZSBsb2NhbGUpIHsKKyAgICAgICAgdGhpcy5sb2NhbGUgPSBsb2NhbGU7CisgICAgICAgIGluaXQoZGVzY3JpcHRpb24pOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZnJvbSBhIHByZWRlZmluZWQgZGVzY3JpcHRpb24uICBUaGUgc2VsZWN0b3IKKyAgICAgKiBjb2RlIGNob29zZWQgYW1vbmcgdGhyZWUgcG9zc2libGUgcHJlZGVmaW5lZCBmb3JtYXRzOiBzcGVsbG91dCwgb3JkaW5hbCwKKyAgICAgKiBhbmQgZHVyYXRpb24uCisgICAgICogQHBhcmFtIGxvY2FsZSBUaGUgbG9jYWxlIGZvciB0aGUgZm9ybWF0dGVyLgorICAgICAqIEBwYXJhbSBmb3JtYXQgQSBzZWxlY3RvciBjb2RlIHNwZWNpZnlpbmcgd2hpY2gga2luZCBvZiBmb3JtYXR0ZXIgdG8gY3JlYXRlIGZvciB0aGF0CisgICAgICogbG9jYWxlLiAgVGhlcmUgYXJlIHRocmVlIGxlZ2FsIHZhbHVlczogU1BFTExPVVQsIHdoaWNoIGNyZWF0ZXMgYSBmb3JtYXR0ZXIgdGhhdAorICAgICAqIHNwZWxscyBvdXQgYSB2YWx1ZSBpbiB3b3JkcyBpbiB0aGUgZGVzaXJlZCBsYW5ndWFnZSwgT1JESU5BTCwgd2hpY2ggYXR0YWNoZXMKKyAgICAgKiBhbiBvcmRpbmFsIHN1ZmZpeCBmcm9tIHRoZSBkZXNpcmVkIGxhbmd1YWdlIHRvIHRoZSBlbmQgb2YgYSBudW1iZXIgKGUuZy4gIjEyM3JkIiksCisgICAgICogYW5kIERVUkFUSU9OLCB3aGljaCBmb3JtYXRzIGEgZHVyYXRpb24gaW4gc2Vjb25kcyBhcyBob3VycywgbWludXRlcywgYW5kIHNlY29uZHMuCisgICAgICovCisgICAgcHVibGljIFJ1bGVCYXNlZE51bWJlckZvcm1hdChMb2NhbGUgbG9jYWxlLCBpbnQgZm9ybWF0KSB7CisgICAgICAgIHRoaXMubG9jYWxlID0gbG9jYWxlOworCisgICAgICAgIC8vIGxvYWQgdXAgdGhlIHJlc291cmNlIGJ1bmRsZSBjb250YWluaW5nIHRoZSBkZXNjcmlwdGlvbgorICAgICAgICAvLyBmcm9tIHRoZSBzcGVjaWZpZWQgbG9jYWxlCisgICAgICAgIFJlc291cmNlQnVuZGxlIGJ1bmRsZSA9IFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICJjb20uaWJtLnRleHQucmVzb3VyY2VzLk51bWJlckZvcm1hdFJ1bGVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZSk7CisgICAgICAgIFN0cmluZyBkZXNjcmlwdGlvbiA9ICIiOworCisgICAgICAgIC8vIHBpY2sgYSBkZXNjcmlwdGlvbiBmcm9tIHRoZSByZXNvdXJjZSBidW5kbGUgYmFzZWQgb24gdGhlCisgICAgICAgIC8vIGtpbmQgb2YgZm9ybWF0dGVyIHRoZSB1c2VyIGFza2VkIGZvcgorICAgICAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAgICAgICAgY2FzZSBTUEVMTE9VVDoKKyAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiA9IGJ1bmRsZS5nZXRTdHJpbmcoIlNwZWxsb3V0UnVsZXMiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBPUkRJTkFMOgorICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uID0gYnVuZGxlLmdldFN0cmluZygiT3JkaW5hbFJ1bGVzIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgRFVSQVRJT046CisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBidW5kbGUuZ2V0U3RyaW5nKCJEdXJhdGlvblJ1bGVzIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBjb25zdHJ1Y3QgdGhlIGZvcm1hdHRlciBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb24KKyAgICAgICAgaW5pdChkZXNjcmlwdGlvbik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmcm9tIGEgcHJlZGVmaW5lZCBkZXNjcmlwdGlvbi4gIFVzZXMgdGhlCisgICAgICogZGVmYXVsdCBsb2NhbGUuCisgICAgICogQHBhcmFtIGZvcm1hdCBBIHNlbGVjdG9yIGNvZGUgc3BlY2lmeWluZyB3aGljaCBraW5kIG9mIGZvcm1hdHRlciB0byBjcmVhdGUuCisgICAgICogVGhlcmUgYXJlIHRocmVlIGxlZ2FsIHZhbHVlczogU1BFTExPVVQsIHdoaWNoIGNyZWF0ZXMgYSBmb3JtYXR0ZXIgdGhhdCBzcGVsbHMKKyAgICAgKiBvdXQgYSB2YWx1ZSBpbiB3b3JkcyBpbiB0aGUgZGVmYXVsdCBsb2NhbGUncyBsYW5neWFnZSwgT1JESU5BTCwgd2hpY2ggYXR0YWNoZXMKKyAgICAgKiBhbiBvcmRpbmFsIHN1ZmZpeCBmcm9tIHRoZSBkZWZhdWx0IGxvY2FsZSdzIGxhbmd1YWdlIHRvIGEgbnVtZXJhbCwgYW5kCisgICAgICogRFVSQVRJT04sIHdoaWNoIGZvcm1hdHMgYSBkdXJhdGlvbiBpbiBzZWNvbmRzIGFzIGhvdXJzLCBtaW51dGVzLCBhbmQgc2Vjb25kcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KGludCBmb3JtYXQpIHsKKyAgICAgICAgdGhpcyhMb2NhbGUuZ2V0RGVmYXVsdCgpLCBmb3JtYXQpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBib2lsZXJwbGF0ZQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIER1cGxpY2F0ZXMgdGhpcyBmb3JtYXR0ZXIuCisgICAgICogQHJldHVybiBBIFJ1bGVCYXNlZE51bWJlckZvcm1hdCB0aGF0IGlzIGVxdWFsIHRvIHRoaXMgb25lLgorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKSB7CisgICAgICAgIHJldHVybiBzdXBlci5jbG9uZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3RzIHR3byBSdWxlQmFzZWROdW1iZXJGb3JtYXRzIGZvciBlcXVhbGl0eS4KKyAgICAgKiBAcGFyYW0gdGhhdCBUaGUgZm9ybWF0dGVyIHRvIGNvbXBhcmUgYWdhaW5zdCB0aGlzIG9uZS4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHR3byBmb3JtYXR0ZXJzIGhhdmUgaWRlbnRpY2FsIGJlaGF2aW9yLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3QgdGhhdCkgeworICAgICAgICAvLyBpZiB0aGUgb3RoZXIgb2JqZWN0IGlzbid0IGEgUnVsZUJhc2VkTnVtYmVyRm9ybWF0LCB0aGF0J3MKKyAgICAgICAgLy8gYWxsIHdlIG5lZWQgdG8ga25vdworICAgICAgICBpZiAoISh0aGF0IGluc3RhbmNlb2YgUnVsZUJhc2VkTnVtYmVyRm9ybWF0KSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gY2FzdCB0aGUgb3RoZXIgb2JqZWN0J3MgcG9pbnRlciB0byBhIHBvaW50ZXIgdG8gYQorICAgICAgICAgICAgLy8gUnVsZUJhc2VkTnVtYmVyRm9ybWF0CisgICAgICAgICAgICBSdWxlQmFzZWROdW1iZXJGb3JtYXQgdGhhdDIgPSAoUnVsZUJhc2VkTnVtYmVyRm9ybWF0KXRoYXQ7CisKKyAgICAgICAgICAgIC8vIGNvbXBhcmUgdGhlaXIgbG9jYWxlcyBhbmQgbGVuaWVudC1wYXJzZSBtb2RlcworICAgICAgICAgICAgaWYgKCFsb2NhbGUuZXF1YWxzKHRoYXQyLmxvY2FsZSkgfHwgbGVuaWVudFBhcnNlICE9IHRoYXQyLmxlbmllbnRQYXJzZSkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gaWYgdGhhdCBzdWNjZWVkcywgdGhlbiBjb21wYXJlIHRoZWlyIHJ1bGUgc2V0IGxpc3RzCisgICAgICAgICAgICBpZiAocnVsZVNldHMubGVuZ3RoICE9IHRoYXQyLnJ1bGVTZXRzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcnVsZVNldHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoIXJ1bGVTZXRzW2ldLmVxdWFscyh0aGF0Mi5ydWxlU2V0c1tpXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZW5lcmF0ZXMgYSB0ZXh0dWFsIGRlc2NyaXB0aW9uIG9mIHRoaXMgZm9ybWF0dGVyLgorICAgICAqIEByZXR1cm4gYSBTdHJpbmcgY29udGFpbmluZyBhIHJ1bGUgc2V0IHRoYXQgd2lsbCBwcm9kdWNlIGEgUnVsZUJhc2VkTnVtYmVyRm9ybWF0CisgICAgICogd2l0aCBpZGVudGljYWwgYmVoYXZpb3IgdG8gdGhpcyBvbmUuICBUaGlzIHdvbid0IG5lY2Vzc2FyaWx5IGJlIGlkZW50aWNhbAorICAgICAqIHRvIHRoZSBydWxlIHNldCBkZXNjcmlwdGlvbiB0aGF0IHdhcyBvcmlnaW5hbGx5IHBhc3NlZCBpbiwgYnV0IHdpbGwgcHJvZHVjZQorICAgICAqIHRoZSBzYW1lIHJlc3VsdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworCisgICAgICAgIC8vIGFjY3VtdWxhdGUgdGhlIGRlc2NyaXB0aW9ucyBvZiBhbGwgdGhlIHJ1bGUgc2V0cyBpbiBhCisgICAgICAgIC8vIFN0cmluZ0J1ZmZlciwgdGhlbiBjYXN0IGl0IHRvIGEgU3RyaW5nIGFuZCByZXR1cm4gaXQKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBydWxlU2V0cy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChydWxlU2V0c1tpXS50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogV3JpdGVzIHRoaXMgb2JqZWN0IHRvIGEgc3RyZWFtLgorICAgICAqIEBwYXJhbSBvdXQgVGhlIHN0cmVhbSB0byB3cml0ZSB0by4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgd3JpdGVPYmplY3QoamF2YS5pby5PYmplY3RPdXRwdXRTdHJlYW0gb3V0KQorICAgICAgICAgICAgICAgICAgICB0aHJvd3MgamF2YS5pby5JT0V4Y2VwdGlvbiB7CisgICAgICAgIC8vIHdlIGp1c3Qgd3JpdGUgdGhlIHRleHR1YWwgZGVzY3JpcHRpb24gdG8gdGhlIHN0cmVhbSwgc28gd2UKKyAgICAgICAgLy8gaGF2ZSBhbiBpbXBsZW1lbnRhdGlvbi1pbmRlcGVuZGVudCBzdHJlYW1pbmcgZm9ybWF0CisgICAgICAgIG91dC53cml0ZVVURih0aGlzLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlYWRzIHRoaXMgb2JqZWN0IGluIGZyb20gYSBzdHJlYW0uCisgICAgICogQHBhcmFtIGluIFRoZSBzdHJlYW0gdG8gcmVhZCBmcm9tLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCByZWFkT2JqZWN0KGphdmEuaW8uT2JqZWN0SW5wdXRTdHJlYW0gaW4pCisgICAgICAgICAgICAgICAgICAgIHRocm93cyBqYXZhLmlvLklPRXhjZXB0aW9uIHsKKworICAgICAgICAvLyByZWFkIHRoZSBkZXNjcmlwdGlvbiBpbiBmcm9tIHRoZSBzdHJlYW0KKyAgICAgICAgU3RyaW5nIGRlc2NyaXB0aW9uID0gaW4ucmVhZFVURigpOworCisgICAgICAgIC8vIGJ1aWxkIGEgYnJhbmQtbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdCBmcm9tIHRoZSBkZXNjcmlwdGlvbiwKKyAgICAgICAgLy8gdGhlbiBzdGVhbCBpdHMgc3Vic3RydWN0dXJlLiAgVGhpcyBvYmplY3QncyBzdWJzdHJ1Y3R1cmUgYW5kCisgICAgICAgIC8vIHRoZSB0ZW1wb3JhcnkgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGRyb3Agb24gdGhlIGZsb29yIGFuZAorICAgICAgICAvLyBnZXQgc3dlcHQgdXAgYnkgdGhlIGdhcmJhZ2UgY29sbGVjdG9yCisgICAgICAgIFJ1bGVCYXNlZE51bWJlckZvcm1hdCB0ZW1wID0gbmV3IFJ1bGVCYXNlZE51bWJlckZvcm1hdChkZXNjcmlwdGlvbik7CisgICAgICAgIHJ1bGVTZXRzID0gdGVtcC5ydWxlU2V0czsKKyAgICAgICAgZGVmYXVsdFJ1bGVTZXQgPSB0ZW1wLmRlZmF1bHRSdWxlU2V0OworICAgIH0KKworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIHB1YmxpYyBBUEkgZnVuY3Rpb25zCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIGxpc3Qgb2YgdGhlIG5hbWVzIG9mIGFsbCBvZiB0aGlzIGZvcm1hdHRlcidzIHB1YmxpYyBydWxlIHNldHMuCisgICAgICogQHJldHVybiBBIGxpc3Qgb2YgdGhlIG5hbWVzIG9mIGFsbCBvZiB0aGlzIGZvcm1hdHRlcidzIHB1YmxpYyBydWxlIHNldHMuCisgICAgICovCisgICAgcHVibGljIFN0cmluZ1tdIGdldFJ1bGVTZXROYW1lcygpIHsKKyAgICAgICAgLy8gcHJlZmxpZ2h0IHRoZSBpdGVyYXRpb24sIGNvdW50aW5nIHRoZSBudW1iZXIgb2YgcHVibGljIHJ1bGUgc2V0cworICAgICAgICAvLyAocHVibGljIHJ1bGUgc2V0cyBoYXZlIG5hbWVzIHRoYXQgYmVnaW4gd2l0aCAlIGluc3RlYWQgb2YgJSUpCisgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcnVsZVNldHMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmICghcnVsZVNldHNbaV0uZ2V0TmFtZSgpLnN0YXJ0c1dpdGgoIiUlIikpIHsKKyAgICAgICAgICAgICAgICArK2NvdW50OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gdGhlbiBuZXcgdXAgYW4gYXJyYXkgb2YgdGhlIHByb3BlciBzaXplIGFuZCBjb3B5IHRoZSBuYW1lcyBpbnRvIGl0CisgICAgICAgIFN0cmluZ1tdIHJlc3VsdCA9IG5ldyBTdHJpbmdbY291bnRdOworICAgICAgICBjb3VudCA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSBydWxlU2V0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICAgICAgaWYgKCFydWxlU2V0c1tpXS5nZXROYW1lKCkuc3RhcnRzV2l0aCgiJSUiKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdFtjb3VudCsrXSA9IHJ1bGVTZXRzW2ldLmdldE5hbWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogRm9ybWF0cyB0aGUgc3BlY2lmaWVkIG51bWJlciBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBydWxlIHNldC4KKyAgICAgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgdG8gZm9ybWF0LgorICAgICAqIEBwYXJhbSBydWxlU2V0IFRoZSBuYW1lIG9mIHRoZSBydWxlIHNldCB0byBmb3JtYXQgdGhlIG51bWJlciB3aXRoLgorICAgICAqIFRoaXMgbXVzdCBiZSB0aGUgbmFtZSBvZiBhIHZhbGlkIHB1YmxpYyBydWxlIHNldCBmb3IgdGhpcyBmb3JtYXR0ZXIuCisgICAgICogQHJldHVybiBBIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGZvcm1hdChkb3VibGUgbnVtYmVyLCBTdHJpbmcgcnVsZVNldCkgdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB7CisgICAgICAgIGlmIChydWxlU2V0LnN0YXJ0c1dpdGgoIiUlIikpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkNhbid0IHVzZSBpbnRlcm5hbCBydWxlIHNldCIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmb3JtYXQobnVtYmVyLCBmaW5kUnVsZVNldChydWxlU2V0KSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRm9ybWF0cyB0aGUgc3BlY2lmaWVkIG51bWJlciBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmllZCBydWxlIHNldC4KKyAgICAgKiAoSWYgdGhlIHNwZWNpZmllZCBydWxlIHNldCBzcGVjaWZpZXMgYSBtYXN0ZXIgWyJ4LjAiXSBydWxlLCB0aGlzIGZ1bmN0aW9uCisgICAgICogaWdub3JlcyBpdC4gIENvbnZlcnQgdGhlIG51bWJlciB0byBhIGRvdWJsZSBmaXJzdCBpZiB5b3UgbmVkIGl0LikgIFRoaXMKKyAgICAgKiBmdW5jdGlvbiBwcmVzZXJ2ZXMgYWxsIHRoZSBwcmVjaXNpb24gaW4gdGhlIGxvbmctLSBpdCBkb2Vzbid0IGNvbnZlcnQgaXQKKyAgICAgKiB0byBhIGRvdWJsZS4KKyAgICAgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgdG8gZm9ybWF0LgorICAgICAqIEBwYXJhbSBydWxlU2V0IFRoZSBuYW1lIG9mIHRoZSBydWxlIHNldCB0byBmb3JtYXQgdGhlIG51bWJlciB3aXRoLgorICAgICAqIFRoaXMgbXVzdCBiZSB0aGUgbmFtZSBvZiBhIHZhbGlkIHB1YmxpYyBydWxlIHNldCBmb3IgdGhpcyBmb3JtYXR0ZXIuCisgICAgICogQHJldHVybiBBIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIG51bWJlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGZvcm1hdChsb25nIG51bWJlciwgU3RyaW5nIHJ1bGVTZXQpIHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24geworICAgICAgICBpZiAocnVsZVNldC5zdGFydHNXaXRoKCIlJSIpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJDYW4ndCB1c2UgaW50ZXJuYWwgcnVsZSBzZXQiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZm9ybWF0KG51bWJlciwgZmluZFJ1bGVTZXQocnVsZVNldCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZvcm1hdHMgdGhlIHNwZWNpZmllZCBudW1iZXIgdXNpbmcgdGhlIGZvcm1hdHRlcidzIGRlZmF1bHQgcnVsZSBzZXQuCisgICAgICogKFRoZSBkZWZhdWx0IHJ1bGUgc2V0IGlzIHRoZSBsYXN0IHB1YmxpYyBydWxlIHNldCBkZWZpbmVkIGluIHRoZSBkZXNjcmlwdGlvbi4pCisgICAgICogQHBhcmFtIG51bWJlciBUaGUgbnVtYmVyIHRvIGZvcm1hdC4KKyAgICAgKiBAcGFyYW0gdG9BcHBlbmRUbyBBIFN0cmluZ0J1ZmZlciB0aGF0IHRoZSByZXN1bHQgc2hvdWxkIGJlIGFwcGVuZGVkIHRvLgorICAgICAqIEBwYXJhbSBpZ25vcmUgVGhpcyBmdW5jdGlvbiBkb2Vzbid0IGV4YW1pbmUgb3IgdXBkYXRlIHRoZSBmaWVsZCBwb3NpdGlvbi4KKyAgICAgKiBAcmV0dXJuIHRvQXBwZW5kVG8KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nQnVmZmVyIGZvcm1hdChkb3VibGUgbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciB0b0FwcGVuZFRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb24gaWdub3JlKSB7CisgICAgICAgIC8vIHRoaXMgaXMgb25lIG9mIHRoZSBpbmhlcml0ZWQgZm9ybWF0KCkgbWV0aG9kcy4gIFNpbmNlIGl0IGRvZXNuJ3QKKyAgICAgICAgLy8gaGF2ZSBhIHdheSB0byBzZWxlY3QgdGhlIHJ1bGUgc2V0IHRvIHVzZSwgaXQganVzdCB1c2VzIHRoZQorICAgICAgICAvLyBkZWZhdWx0IG9uZQorICAgICAgICB0b0FwcGVuZFRvLmFwcGVuZChmb3JtYXQobnVtYmVyLCBkZWZhdWx0UnVsZVNldCkpOworICAgICAgICByZXR1cm4gdG9BcHBlbmRUbzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGb3JtYXRzIHRoZSBzcGVjaWZpZWQgbnVtYmVyIHVzaW5nIHRoZSBmb3JtYXR0ZXIncyBkZWZhdWx0IHJ1bGUgc2V0LgorICAgICAqIChUaGUgZGVmYXVsdCBydWxlIHNldCBpcyB0aGUgbGFzdCBwdWJsaWMgcnVsZSBzZXQgZGVmaW5lZCBpbiB0aGUgZGVzY3JpcHRpb24uKQorICAgICAqIChJZiB0aGUgc3BlY2lmaWVkIHJ1bGUgc2V0IHNwZWNpZmllcyBhIG1hc3RlciBbInguMCJdIHJ1bGUsIHRoaXMgZnVuY3Rpb24KKyAgICAgKiBpZ25vcmVzIGl0LiAgQ29udmVydCB0aGUgbnVtYmVyIHRvIGEgZG91YmxlIGZpcnN0IGlmIHlvdSBuZWQgaXQuKSAgVGhpcworICAgICAqIGZ1bmN0aW9uIHByZXNlcnZlcyBhbGwgdGhlIHByZWNpc2lvbiBpbiB0aGUgbG9uZy0tIGl0IGRvZXNuJ3QgY29udmVydCBpdAorICAgICAqIHRvIGEgZG91YmxlLgorICAgICAqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciB0byBmb3JtYXQuCisgICAgICogQHBhcmFtIHRvQXBwZW5kVG8gQSBTdHJpbmdCdWZmZXIgdGhhdCB0aGUgcmVzdWx0IHNob3VsZCBiZSBhcHBlbmRlZCB0by4KKyAgICAgKiBAcGFyYW0gaWdub3JlIFRoaXMgZnVuY3Rpb24gZG9lc24ndCBleGFtaW5lIG9yIHVwZGF0ZSB0aGUgZmllbGQgcG9zaXRpb24uCisgICAgICogQHJldHVybiB0b0FwcGVuZFRvCisgICAgICovCisgICAgcHVibGljIFN0cmluZ0J1ZmZlciBmb3JtYXQobG9uZyBudW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVmZmVyIHRvQXBwZW5kVG8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiBpZ25vcmUpIHsKKyAgICAgICAgLy8gdGhpcyBpcyBvbmUgb2YgdGhlIGluaGVyaXRlZCBmb3JtYXQoKSBtZXRob2RzLiAgU2luY2UgaXQgZG9lc24ndAorICAgICAgICAvLyBoYXZlIGEgd2F5IHRvIHNlbGVjdCB0aGUgcnVsZSBzZXQgdG8gdXNlLCBpdCBqdXN0IHVzZXMgdGhlCisgICAgICAgIC8vIGRlZmF1bHQgb25lCisgICAgICAgIHRvQXBwZW5kVG8uYXBwZW5kKGZvcm1hdChudW1iZXIsIGRlZmF1bHRSdWxlU2V0KSk7CisgICAgICAgIHJldHVybiB0b0FwcGVuZFRvOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBJbXBsZW1lbnQgY29tLmlibS50ZXh0Lk51bWJlckZvcm1hdDoKKyAgICAgKiBGb3JtYXQgYSBCaWdJbnRlZ2VyLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmdCdWZmZXIgZm9ybWF0KEJpZ0ludGVnZXIgbnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciB0b0FwcGVuZFRvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkUG9zaXRpb24gcG9zKSB7CisgICAgICAgIHJldHVybiBmb3JtYXQobmV3IGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsKG51bWJlciksIHRvQXBwZW5kVG8sIHBvcyk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBJbXBsZW1lbnQgY29tLmlibS50ZXh0Lk51bWJlckZvcm1hdDoKKyAgICAgKiBGb3JtYXQgYSBCaWdEZWNpbWFsLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmdCdWZmZXIgZm9ybWF0KGphdmEubWF0aC5CaWdEZWNpbWFsIG51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgdG9BcHBlbmRUbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIHBvcykgeworICAgICAgICByZXR1cm4gZm9ybWF0KG5ldyBjb20uaWJtLm1hdGguQmlnRGVjaW1hbChudW1iZXIpLCB0b0FwcGVuZFRvLCBwb3MpOworICAgIH0KKworICAgIC8qKgorICAgICAqIDxzdHJvbmc+PGZvbnQgZmFjZT1oZWx2ZXRpY2EgY29sb3I9cmVkPk5FVzwvZm9udD48L3N0cm9uZz4KKyAgICAgKiBJbXBsZW1lbnQgY29tLmlibS50ZXh0Lk51bWJlckZvcm1hdDoKKyAgICAgKiBGb3JtYXQgYSBCaWdEZWNpbWFsLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmdCdWZmZXIgZm9ybWF0KGNvbS5pYm0ubWF0aC5CaWdEZWNpbWFsIG51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgdG9BcHBlbmRUbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIHBvcykgeworICAgICAgICAvLyBURU1QT1JBUlk6CisgICAgICAgIHJldHVybiBmb3JtYXQobnVtYmVyLmRvdWJsZVZhbHVlKCksIHRvQXBwZW5kVG8sIHBvcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGFyc2VzIHRoZSBzcGVjZmllZCBzdHJpbmcsIGJlZ2lubmluZyBhdCB0aGUgc3BlY2lmaWVkIHBvc2l0aW9uLCBhY2NvcmRpbmcKKyAgICAgKiB0byB0aGlzIGZvcm1hdHRlcidzIHJ1bGVzLiAgVGhpcyB3aWxsIG1hdGNoIHRoZSBzdHJpbmcgYWdhaW5zdCBhbGwgb2YgdGhlCisgICAgICogZm9ybWF0dGVyJ3MgcHVibGljIHJ1bGUgc2V0cyBhbmQgcmV0dXJuIHRoZSB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBsb25nZXN0CisgICAgICogcGFyc2VhYmxlIHN1YnN0cmluZy4gIFRoaXMgZnVuY3Rpb24ncyBiZWhhdmlvciBpcyBhZmZlY3RlZCBieSB0aGUgbGVuaWVudAorICAgICAqIHBhcnNlIG1vZGUuCisgICAgICogQHBhcmFtIHRleHQgVGhlIHN0cmluZyB0byBwYXJzZQorICAgICAqIEBwYXJhbSBwYXJzZVBvc2l0aW9uIE9uIGVudHJ5LCBjb250YWlucyB0aGUgcG9zaXRpb24gb2YgdGhlIGZpcnN0IGNoYXJhY3RlcgorICAgICAqIGluICJ0ZXh0IiB0byBleGFtaW5lLiAgT24gZXhpdCwgaGFzIGJlZW4gdXBkYXRlZCB0byBjb250YWluIHRoZSBwb3NpdGlvbgorICAgICAqIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gInRleHQiIHRoYXQgd2Fzbid0IGNvbnN1bWVkIGJ5IHRoZSBwYXJzZS4KKyAgICAgKiBAcmV0dXJuIFRoZSBudW1iZXIgdGhhdCBjb3JyZXNwb25kcyB0byB0aGUgcGFyc2VkIHRleHQuICBUaGlzIHdpbGwgYmUgYW4KKyAgICAgKiBpbnN0YW5jZSBvZiBlaXRoZXIgTG9uZyBvciBEb3VibGUsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSByZXN1bHQgaGFzIGEKKyAgICAgKiBmcmFjdGlvbmFsIHBhcnQuCisgICAgICogQHNlZSAjc2V0TGVuaWVudFBhcnNlTW9kZQorICAgICAqLworICAgIHB1YmxpYyBOdW1iZXIgcGFyc2UoU3RyaW5nIHRleHQsIFBhcnNlUG9zaXRpb24gcGFyc2VQb3NpdGlvbikgeworCisgICAgICAgIC8vIHBhcnNlUG9zaXRpb24gdGVsbHMgdXMgd2hlcmUgdG8gc3RhcnQgcGFyc2luZy4gIFdlIGNvcHkgdGhlCisgICAgICAgIC8vIHRleHQgaW4gdGhlIHN0cmluZyBmcm9tIGhlcmUgdG8gdGhlIGVuZCBpbnJvIGEgbmV3IHN0cmluZywKKyAgICAgICAgLy8gYW5kIGNyZWF0ZSBhIG5ldyBQYXJzZVBvc2l0aW9uIGFuZCByZXN1bHQgdmFyaWFibGUgdG8gdXNlCisgICAgICAgIC8vIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHBhcnNlIG9wZXJhdGlvbgorICAgICAgICBTdHJpbmcgd29ya2luZ1RleHQgPSB0ZXh0LnN1YnN0cmluZyhwYXJzZVBvc2l0aW9uLmdldEluZGV4KCkpOworICAgICAgICBQYXJzZVBvc2l0aW9uIHdvcmtpbmdQb3MgPSBuZXcgUGFyc2VQb3NpdGlvbigwKTsKKyAgICAgICAgTnVtYmVyIHRlbXBSZXN1bHQgPSBudWxsOworCisgICAgICAgIC8vIGtlZXAgdHJhY2sgb2YgdGhlIGxhcmdlc3QgbnVtYmVyIG9mIGNoYXJhY3RlcnMgY29uc3VtZWQgaW4KKyAgICAgICAgLy8gdGhlIHZhcmlvdXMgdHJpYWxzLCBhbmQgdGhlIHJlc3VsdCB0aGF0IGNvcnJlc3BvbmRzIHRvIGl0CisgICAgICAgIE51bWJlciByZXN1bHQgPSBuZXcgTG9uZygwKTsKKyAgICAgICAgUGFyc2VQb3NpdGlvbiBoaWdoV2F0ZXJNYXJrID0gbmV3IFBhcnNlUG9zaXRpb24od29ya2luZ1Bvcy5nZXRJbmRleCgpKTsKKworICAgICAgICAvLyBpdGVyYXRlIG92ZXIgdGhlIHB1YmxpYyBydWxlIHNldHMgKGJlZ2lubmluZyB3aXRoIHRoZSBkZWZhdWx0IG9uZSkKKyAgICAgICAgLy8gYW5kIHRyeSBwYXJzaW5nIHRoZSB0ZXh0IHdpdGggZWFjaCBvZiB0aGVtLiAgS2VlcCB0cmFjayBvZiB3aGljaAorICAgICAgICAvLyBvbmUgY29uc3VtZXMgdGhlIG1vc3QgY2hhcmFjdGVyczogdGhhdCdzIHRoZSBvbmUgdGhhdCBkZXRlcm1pbmVzCisgICAgICAgIC8vIHRoZSByZXN1bHQgd2UgcmV0dXJuCisgICAgICAgIGZvciAoaW50IGkgPSBydWxlU2V0cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICAgICAgLy8gc2tpcCBwcml2YXRlIHJ1bGUgc2V0cworICAgICAgICAgICAgaWYgKHJ1bGVTZXRzW2ldLmdldE5hbWUoKS5zdGFydHNXaXRoKCIlJSIpKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHRyeSBwYXJzaW5nIHRoZSBzdHJpbmcgd2l0aCB0aGUgcnVsZSBzZXQuICBJZiBpdCBnZXRzIHBhc3QgdGhlCisgICAgICAgICAgICAvLyBoaWdoLXdhdGVyIG1hcmssIHVwZGF0ZSB0aGUgaGlnaC13YXRlciBtYXJrIGFuZCB0aGUgcmVzdWx0CisgICAgICAgICAgICB0ZW1wUmVzdWx0ID0gcnVsZVNldHNbaV0ucGFyc2Uod29ya2luZ1RleHQsIHdvcmtpbmdQb3MsIERvdWJsZS5NQVhfVkFMVUUpOworICAgICAgICAgICAgaWYgKHdvcmtpbmdQb3MuZ2V0SW5kZXgoKSA+IGhpZ2hXYXRlck1hcmsuZ2V0SW5kZXgoKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRlbXBSZXN1bHQ7CisgICAgICAgICAgICAgICAgaGlnaFdhdGVyTWFyay5zZXRJbmRleCh3b3JraW5nUG9zLmdldEluZGV4KCkpOworICAgICAgICAgICAgfQorLy8gY29tbWVudGVkIG91dCBiZWNhdXNlIHRoaXMgQVBJIG9uIFBhcnNlUG9zaXRpb24gZG9lc24ndCBleGlzdCBpbiAxLjEueAorLy8gICAgICAgICAgICBpZiAod29ya2luZ1Bvcy5nZXRFcnJvckluZGV4KCkgPiBoaWdoV2F0ZXJNYXJrLmdldEVycm9ySW5kZXgoKSkgeworLy8gICAgICAgICAgICAgICAgaGlnaFdhdGVyTWFyay5zZXRFcnJvckluZGV4KHdvcmtpbmdQb3MuZ2V0RXJyb3JJbmRleCgpKTsKKy8vICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBpZiB3ZSBtYW5hZ2UgdG8gdXNlIHVwIGFsbCB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nLAorICAgICAgICAgICAgLy8gd2UgZG9uJ3QgaGF2ZSB0byB0cnkgYW55IG1vcmUgcnVsZSBzZXRzCisgICAgICAgICAgICBpZiAoaGlnaFdhdGVyTWFyay5nZXRJbmRleCgpID09IHdvcmtpbmdUZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIG90aGVyd2lzZSwgcmVzZXQgb3VyIGludGVybmFsIHBhcnNlIHBvc2l0aW9uIHRvIHRoZQorICAgICAgICAgICAgLy8gYmVnaW5uaW5nIGFuZCB0cnkgYWdhaW4gd2l0aCB0aGUgbmV4dCBydWxlIHNldAorICAgICAgICAgICAgd29ya2luZ1Bvcy5zZXRJbmRleCgwKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGFkZCB0aGUgaGlnaCB3YXRlciBtYXJrIHRvIG91ciBvcmlnaW5hbCBwYXJzZSBwb3NpdGlvbiBhbmQKKyAgICAgICAgLy8gcmV0dXJuIHRoZSByZXN1bHQKKyAgICAgICAgcGFyc2VQb3NpdGlvbi5zZXRJbmRleChwYXJzZVBvc2l0aW9uLmdldEluZGV4KCkgKyBoaWdoV2F0ZXJNYXJrLmdldEluZGV4KCkpOworLy8gY29tbWVudGVkIG91dCBiZWNhdXNlIHRoaXMgQVBJIG9uIFBhcnNlUG9zaXRpb24gZG9lc24ndCBleGlzdCBpbiAxLjEueAorLy8gICAgICAgIGlmIChoaWdoV2F0ZXJNYXJrLmdldEluZGV4KCkgPT0gMCkgeworLy8gICAgICAgICAgICBwYXJzZVBvc2l0aW9uLnNldEVycm9ySW5kZXgocGFyc2VQb3NpdGlvbi5nZXRJbmRleCgpICsgaGlnaFdhdGVyTWFyay5nZXRFcnJvckluZGV4KCkpOworLy8gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUdXJucyBsZW5pZW50IHBhcnNlIG1vZGUgb24gYW5kIG9mZi4KKyAgICAgKgorICAgICAqIFdoZW4gaW4gbGVuaWVudCBwYXJzZSBtb2RlLCB0aGUgZm9ybWF0dGVyIHVzZXMgYSBDb2xsYXRvciBmb3IgcGFyc2luZyB0aGUgdGV4dC4KKyAgICAgKiBPbmx5IHByaW1hcnkgZGlmZmVyZW5jZXMgYXJlIHRyZWF0ZWQgYXMgc2lnbmlmaWNhbnQuICBUaGlzIG1lYW5zIHRoYXQgY2FzZQorICAgICAqIGRpZmZlcmVuY2VzLCBhY2NlbnQgZGlmZmVyZW5jZXMsIGFsdGVybmF0ZSBzcGVsbGluZ3Mgb2YgdGhlIHNhbWUgbGV0dGVyCisgICAgICogKGUuZy4sIGFlIGFuZCBhLXVtbGF1dCBpbiBHZXJtYW4pLCBpZ25vcmFibGUgY2hhcmFjdGVycywgZXRjLiBhcmUgaWdub3JlZCBpbgorICAgICAqIG1hdGNoaW5nIHRoZSB0ZXh0LiAgSW4gbWFueSBjYXNlcywgbnVtZXJhbHMgd2lsbCBiZSBhY2NlcHRlZCBpbiBwbGFjZSBvZiB3b3JkcworICAgICAqIG9yIHBocmFzZXMgYXMgd2VsbC4KKyAgICAgKgorICAgICAqIEZvciBleGFtcGxlLCBhbGwgb2YgdGhlIGZvbGxvd2luZyB3aWxsIGNvcnJlY3RseSBwYXJzZSBhcyAyNTUgaW4gRW5nbGlzaCBpbgorICAgICAqIGxlbmllbnQtcGFyc2UgbW9kZToKKyAgICAgKiA8YnI+InR3byBodW5kcmVkIGZpZnR5LWZpdmUiCisgICAgICogPGJyPiJ0d28gaHVuZHJlZCBmaWZ0eSBmaXZlIgorICAgICAqIDxicj4iVFdPIEhVTkRSRUQgRklGVFktRklWRSIKKyAgICAgKiA8YnI+InR3b2h1bmRyZWRmaWZ0eWZpdmUiCisgICAgICogPGJyPiIyIGh1bmRyZWQgZmlmdHktNSIKKyAgICAgKgorICAgICAqIFRoZSBDb2xsYXRvciB1c2VkIGlzIGRldGVybWluZWQgYnkgdGhlIGxvY2FsZSB0aGF0IHdhcworICAgICAqIHBhc3NlZCB0byB0aGlzIG9iamVjdCBvbiBjb25zdHJ1Y3Rpb24uICBUaGUgZGVzY3JpcHRpb24gcGFzc2VkIHRvIHRoaXMgb2JqZWN0CisgICAgICogb24gY29uc3RydWN0aW9uIG1heSBzdXBwbHkgYWRkaXRpb25hbCBjb2xsYXRpb24gcnVsZXMgdGhhdCBhcmUgYXBwZW5kZWQgdG8gdGhlCisgICAgICogZW5kIG9mIHRoZSBkZWZhdWx0IGNvbGxhdG9yIGZvciB0aGUgbG9jYWxlLCBlbmFibGluZyBhZGRpdGlvbmFsIGVxdWl2YWxlbmNlcworICAgICAqIChzdWNoIGFzIGFkZGluZyBtb3JlIGlnbm9yYWJsZSBjaGFyYWN0ZXJzIG9yIHBlcm1pdHRpbmcgc3BlbGxlZC1vdXQgdmVyc2lvbiBvZgorICAgICAqIHN5bWJvbHM7IHNlZSB0aGUgZGVtbyBwcm9ncmFtIGZvciBleGFtcGxlcykuCisgICAgICoKKyAgICAgKiBJdCdzIGltcG9ydGFudCB0byBlbXBoYXNpemUgdGhhdCBldmVuIHN0cmljdCBwYXJzaW5nIGlzIHJlbGF0aXZlbHkgbGVuaWVudDogaXQKKyAgICAgKiB3aWxsIGFjY2VwdCBzb21lIHRleHQgdGhhdCBpdCB3b24ndCBwcm9kdWNlIGFzIG91dHB1dC4gIEluIEVuZ2xpc2gsIGZvciBleGFtcGxlLAorICAgICAqIGl0IHdpbGwgY29ycmVjdGx5IHBhcnNlICJ0d28gaHVuZHJlZCB6ZXJvIiBhbmQgImZpZnRlZW4gaHVuZHJlZCIuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZW5hYmxlZCBJZiB0cnVlLCB0dXJucyBsZW5pZW50LXBhcnNlIG1vZGUgb247IGlmIGZhbHNlLCB0dXJucyBpdCBvZmYuCisgICAgICogQHNlZSBqYXZhLnRleHQuUnVsZUJhc2VkQ29sbGF0b3IKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRMZW5pZW50UGFyc2VNb2RlKGJvb2xlYW4gZW5hYmxlZCkgeworICAgICAgICBsZW5pZW50UGFyc2UgPSBlbmFibGVkOworCisgICAgICAgIC8vIGlmIHdlJ3JlIGxlYXZpbmcgbGVuaWVudC1wYXJzZSBtb2RlLCB0aHJvdyBhd2F5IHRoZSBjb2xsYXRvcgorICAgICAgICAvLyB3ZSd2ZSBiZWVuIHVzaW5nCisgICAgICAgIGlmICghZW5hYmxlZCkgeworICAgICAgICAgICAgY29sbGF0b3IgPSBudWxsOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0cnVlIGlmIGxlbmllbnQtcGFyc2UgbW9kZSBpcyB0dXJuZWQgb24uICBMZW5pZW50IHBhcnNpbmcgaXMgb2ZmCisgICAgICogYnkgZGVmYXVsdC4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgbGVuaWVudC1wYXJzZSBtb2RlIGlzIHR1cm5lZCBvbi4KKyAgICAgKiBAc2VlICNzZXRMZW5pZW50UGFyc2VNb2RlCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gbGVuaWVudFBhcnNlRW5hYmxlZCgpIHsKKyAgICAgICAgcmV0dXJuIGxlbmllbnRQYXJzZTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gcGFja2FnZS1pbnRlcm5hbCBBUEkKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBmb3JtYXR0ZXIncyBkZWZhdWx0IHJ1bGUgc2V0LiAgVGhlIGRlZmF1bHQKKyAgICAgKiBydWxlIHNldCBpcyB0aGUgbGFzdCBwdWJsaWMgcnVsZSBzZXQgaW4gdGhlIGRlc2NyaXB0aW9uLgorICAgICAqIEByZXR1cm4gVGhlIGZvcm1hdHRlcidzIGRlZmF1bHQgcnVsZSBzZXQuCisgICAgICovCisgICAgTkZSdWxlU2V0IGdldERlZmF1bHRSdWxlU2V0KCkgeworICAgICAgICByZXR1cm4gZGVmYXVsdFJ1bGVTZXQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgY29sbGF0b3IgdG8gdXNlIGZvciBsZW5pZW50IHBhcnNpbmcuICBUaGUgY29sbGF0b3IgaXMgbGF6aWx5IGNyZWF0ZWQ6CisgICAgICogdGhpcyBmdW5jdGlvbiBjcmVhdGVzIGl0IHRoZSBmaXJzdCB0aW1lIGl0J3MgY2FsbGVkLgorICAgICAqIEByZXR1cm4gVGhlIGNvbGxhdG9yIHRvIHVzZSBmb3IgbGVuaWVudCBwYXJzaW5nLCBvciBudWxsIGlmIGxlbmllbnQgcGFyc2luZworICAgICAqIGlzIHR1cm5lZCBvZmYuCisgICAgICovCisgICAgQ29sbGF0b3IgZ2V0Q29sbGF0b3IoKSB7CisgICAgICAgIC8vIGxhenktZXZhdWxhdGUgdGhlIGNvbGxhdG9yCisgICAgICAgIGlmIChjb2xsYXRvciA9PSBudWxsICYmIGxlbmllbnRQYXJzZSkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAvLyBjcmVhdGUgYSBkZWZhdWx0IGNvbGxhdG9yIGJhc2VkIG9uIHRoZSBmb3JtYXR0ZXIncyBsb2NhbGUsCisgICAgICAgICAgICAgICAgLy8gdGhlbiBwdWxsIG91dCB0aGF0IGNvbGxhdG9yJ3MgcnVsZXMsIGFwcGVuZCBhbnkgYWRkaXRpb25hbAorICAgICAgICAgICAgICAgIC8vIHJ1bGVzIHNwZWNpZmllZCBpbiB0aGUgZGVzY3JpcHRpb24sIGFuZCBjcmVhdGUgYSBfbmV3XworICAgICAgICAgICAgICAgIC8vIGNvbGxhdG9yIGJhc2VkIG9uIHRoZSBjb21iaW5haXRvbiBvZiB0aG9zZSBydWxlcworICAgICAgICAgICAgICAgIFJ1bGVCYXNlZENvbGxhdG9yIHRlbXAgPSAoUnVsZUJhc2VkQ29sbGF0b3IpY29sbGF0b3IuZ2V0SW5zdGFuY2UobG9jYWxlKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcnVsZXMgPSB0ZW1wLmdldFJ1bGVzKCkgKyBsZW5pZW50UGFyc2VSdWxlczsKKworICAgICAgICAgICAgICAgIGNvbGxhdG9yID0gbmV3IFJ1bGVCYXNlZENvbGxhdG9yKHJ1bGVzKTsKKyAgICAgICAgICAgICAgICBjb2xsYXRvci5zZXREZWNvbXBvc2l0aW9uKENvbGxhdG9yLkNBTk9OSUNBTF9ERUNPTVBPU0lUSU9OKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIC8vIElmIHdlIGdldCBoZXJlLCBpdCBtZWFucyB3ZSBoYXZlIGEgbWFsZm9ybWVkIHNldCBvZgorICAgICAgICAgICAgICAgIC8vIGNvbGxhdGlvbiBydWxlcywgd2hpY2ggaG9wZWZ1bGx5IHdvbid0IGhhcHBlbgorICAgICAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICAgICAgY29sbGF0b3IgPSBudWxsOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gaWYgbGVuaWVudC1wYXJzZSBtb2RlIGlzIG9mZiwgdGhpcyB3aWxsIGJlIG51bGwKKyAgICAgICAgLy8gKHNlZSBzZXRMZW5pZW50UGFyc2VNb2RlKCkpCisgICAgICAgIHJldHVybiBjb2xsYXRvcjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBEZWNpbWFsRm9ybWF0U3ltYm9scyBvYmplY3QgdGhhdCBzaG91bGQgYmUgdXNlZCBieSBhbGwgRGVjaW1hbEZvcm1hdAorICAgICAqIGluc3RhbmNlcyBvd25lZCBieSB0aGlzIGZvcm1hdHRlci4gIFRoaXMgb2JqZWN0IGlzIGxhemlseSBjcmVhdGVkOiB0aGlzIGZ1bmN0aW9uCisgICAgICogY3JlYXRlcyBpdCB0aGUgZmlyc3QgdGltZSBpdCdzIGNhbGxlZC4KKyAgICAgKiBAcmV0dXJuIFRoZSBEZWNpbWFsRm9ybWF0U3ltYm9scyBvYmplY3QgdGhhdCBzaG91bGQgYmUgdXNlZCBieSBhbGwgRGVjaW1hbEZvcm1hdAorICAgICAqIGluc3RhbmNlcyBvd25lZCBieSB0aGlzIGZvcm1hdHRlci4KKyAgICAgKi8KKyAgICBEZWNpbWFsRm9ybWF0U3ltYm9scyBnZXREZWNpbWFsRm9ybWF0U3ltYm9scygpIHsKKyAgICAgICAgLy8gbGF6eS1ldmFsdWF0ZSB0aGUgRGVjaW1hbEZvcm1hdFN5bWJvbHMgb2JqZWN0LiAgVGhpcyBvYmplY3QKKyAgICAgICAgLy8gaXMgc2hhcmVkIGJ5IGFsbCBEZWNpbWFsRm9ybWF0IGluc3RhbmNlcyBiZWxvbmdpbmcgdG8gdGhpcworICAgICAgICAvLyBmb3JtYXR0ZXIKKyAgICAgICAgaWYgKGRlY2ltYWxGb3JtYXRTeW1ib2xzID09IG51bGwpIHsKKyAgICAgICAgICAgIGRlY2ltYWxGb3JtYXRTeW1ib2xzID0gbmV3IERlY2ltYWxGb3JtYXRTeW1ib2xzKGxvY2FsZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRlY2ltYWxGb3JtYXRTeW1ib2xzOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBjb25zdHJ1Y3Rpb24gaW1wbGVtZW50YXRpb24KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBUaGlzIGZ1bmN0aW9uIHBhcnNlcyB0aGUgZGVzY3JpcHRpb24gYW5kIHVzZXMgaXQgdG8gYnVpbGQgYWxsIG9mCisgICAgICogaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgdGhlIGZvcm1hdHRlciB1c2VzIHRvIGRvIGZvcm1hdHRpbmcKKyAgICAgKiBAcGFyYW0gZGVzY3JpcHRpb24gVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0ZXIncyBkZXNpcmVkIGJlaGF2aW9yLgorICAgICAqIFRoaXMgaXMgZWl0aGVyIHBhc3NlZCBpbiBieSB0aGUgY2FsbGVyIG9yIGxvYWRlZCBvdXQgb2YgYSByZXNvdXJjZQorICAgICAqIGJ5IG9uZSBvZiB0aGUgY29uc3RydWN0b3JzLCBhbmQgaXMgaW4gdGhlIGRlc2NyaXB0aW9uIGZvcm1hdCBzcGVjaWZpZWQKKyAgICAgKiBpbiB0aGUgY2xhc3MgZG9jcy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgaW5pdChTdHJpbmcgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgLy8gc3RhcnQgYnkgc3RyaXBwaW5nIHRoZSB0cmFpbGluZyB3aGl0ZXNwYWNlIGZyb20gYWxsIHRoZSBydWxlcworICAgICAgICAvLyAodGhpcyBpcyBhbGwgdGhlIHdoaXRlc3BhY2UgZm9sbHdpbmcgZWFjaCBzZW1pY29sb24gaW4gdGhlCisgICAgICAgIC8vIGRlc2NyaXB0aW9uKS4gIFRoaXMgYWxsb3dzIHVzIHRvIGxvb2sgZm9yIHJ1bGUtc2V0IGJvdW5kYXJpZXMKKyAgICAgICAgLy8gYnkgc2VhcmNoaW5nIGZvciAiOyUiIHdpdGhvdXQgaGF2aW5nIHRvIHdvcnJ5IGFib3V0IHdoaXRlc3BhY2UKKyAgICAgICAgLy8gYmV0d2VlbiB0aGUgOyBhbmQgdGhlICUKKyAgICAgICAgZGVzY3JpcHRpb24gPSBzdHJpcFdoaXRlc3BhY2UoZGVzY3JpcHRpb24pOworCisgICAgICAgIC8vIGNoZWNrIHRvIHNlZSBpZiB0aGVyZSdzIGEgc2V0IG9mIGxlbmllbnQtcGFyc2UgcnVsZXMuICBJZiB0aGVyZQorICAgICAgICAvLyBpcywgcHVsbCB0aGVtIG91dCBpbnRvIG91ciB0ZW1wb3JhcnkgaG9sZGluZyBwbGFjZSBmb3IgdGhlbSwKKyAgICAgICAgLy8gYW5kIGRlbGV0ZSB0aGVtIGZyb20gdGhlIGRlc2NyaXB0aW9uIGJlZm9yZSB0aGUgcmVhbCBkZXNjaXB0aW9uLQorICAgICAgICAvLyBwYXJzaW5nIGNvZGUgc2VlcyB0aGVtCisgICAgICAgIGludCBscCA9IGRlc2NyaXB0aW9uLmluZGV4T2YoIiUlbGVuaWVudC1wYXJzZToiKTsKKyAgICAgICAgaWYgKGxwICE9IC0xKSB7CisgICAgICAgICAgICAvLyB3ZSd2ZSBnb3QgdG8gbWFrZSBzdXJlIHdlJ3JlIG5vdCBpbiB0aGUgbWlkZGxlIG9mIGEgcnVsZQorICAgICAgICAgICAgLy8gKHdoZXJlICIlJWxlbmllbnQtcGFyc2UiIHdvdWxkIGFjdHVhbGx5IGdldCB0cmVhdGVkIGFzCisgICAgICAgICAgICAvLyBydWxlIHRleHQpCisgICAgICAgICAgICBpZiAobHAgPT0gMCB8fCBkZXNjcmlwdGlvbi5jaGFyQXQobHAgLSAxKSA9PSAnOycpIHsKKyAgICAgICAgICAgICAgICAvLyBsb2NhdGUgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIHRoZSBhY3R1YWwgY29sbGF0aW9uCisgICAgICAgICAgICAgICAgLy8gcnVsZXMgKHRoZXJlIG1heSBiZSB3aGl0ZXNwYWNlIGJldHdlZW4gdGhlIG5hbWUgYW5kCisgICAgICAgICAgICAgICAgLy8gdGhlIGZpcnN0IHRva2VuIGluIHRoZSBkZXNjcmlwdGlvbikKKyAgICAgICAgICAgICAgICBpbnQgbHBFbmQgPSBkZXNjcmlwdGlvbi5pbmRleE9mKCI7JSIsIGxwKTsKKworICAgICAgICAgICAgICAgIGlmIChscEVuZCA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBscEVuZCA9IGRlc2NyaXB0aW9uLmxlbmd0aCgpIC0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaW50IGxwU3RhcnQgPSBscCArICIlJWxlbmllbnQtcGFyc2U6Ii5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZShkZXNjcmlwdGlvbi5jaGFyQXQobHBTdGFydCkpKSB7CisgICAgICAgICAgICAgICAgICAgICsrbHBTdGFydDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBjb3B5IG91dCB0aGUgbGVuaWVudC1wYXJzZSBydWxlcyBhbmQgZGVsZXRlIHRoZW0KKyAgICAgICAgICAgICAgICAvLyBmcm9tIHRoZSBkZXNjcmlwdGlvbgorICAgICAgICAgICAgICAgIGxlbmllbnRQYXJzZVJ1bGVzID0gZGVzY3JpcHRpb24uc3Vic3RyaW5nKGxwU3RhcnQsIGxwRW5kKTsKKyAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgdGVtcCA9IG5ldyBTdHJpbmdCdWZmZXIoZGVzY3JpcHRpb24uc3Vic3RyaW5nKDAsIGxwKSk7CisgICAgICAgICAgICAgICAgaWYgKGxwRW5kICsgMSA8IGRlc2NyaXB0aW9uLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHRlbXAuYXBwZW5kKGRlc2NyaXB0aW9uLnN1YnN0cmluZyhscEVuZCArIDEpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gPSB0ZW1wLnRvU3RyaW5nKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBwcmUtZmxpZ2h0IHBhcnNpbmcgdGhlIGRlc2NyaXB0aW9uIGFuZCBjb3VudCB0aGUgbnVtYmVyIG9mCisgICAgICAgIC8vIHJ1bGUgc2V0cyAoIjslIiBtYXJrcyB0aGUgZW5kIG9mIG9uZSBydWxlIHNldCBhbmQgdGhlIGJlZ2lubmluZworICAgICAgICAvLyBvZiB0aGUgbmV4dCkKKyAgICAgICAgaW50IG51bVJ1bGVTZXRzID0gMDsKKyAgICAgICAgZm9yIChpbnQgcCA9IGRlc2NyaXB0aW9uLmluZGV4T2YoIjslIik7IHAgIT0gLTE7IHAgPSBkZXNjcmlwdGlvbi5pbmRleE9mKCI7JSIsIHApKSB7CisgICAgICAgICAgICArK251bVJ1bGVTZXRzOworICAgICAgICAgICAgKytwOworICAgICAgICB9CisgICAgICAgICsrbnVtUnVsZVNldHM7CisKKyAgICAgICAgLy8gb3VyIHJ1bGUgbGlzdCBpcyBhbiBhcnJheSBvZiB0aGUgYXBwcnByaWF0ZSBzaXplCisgICAgICAgIHJ1bGVTZXRzID0gbmV3IE5GUnVsZVNldFtudW1SdWxlU2V0c107CisKKyAgICAgICAgLy8gZGl2aWRlIHVwIHRoZSBkZXNjcmlwdGlvbnMgaW50byBpbmRpdmlkdWFsIHJ1bGUtc2V0IGRlc2NyaXB0aW9ucworICAgICAgICAvLyBhbmQgc3RvcmUgdGhlbSBpbiBhIHRlbXBvcmFyeSBhcnJheS4gIEF0IGVhY2ggc3RlcCwgd2UgYWxzbworICAgICAgICAvLyBuZXcgdXAgYSBydWxlIHNldCwgYnV0IGFsbCB0aGlzIGRvZXMgaXMgaW5pdGlhbGl6ZSBpdHMgbmFtZQorICAgICAgICAvLyBhbmQgcmVtb3ZlIGl0IGZyb20gaXRzIGRlc2NyaXB0aW9uLiAgV2UgY2FuJ3QgYWN0dWFsbHkgcGFyc2UKKyAgICAgICAgLy8gdGhlIHJlc3Qgb2YgdGhlIGRlc2NyaXB0aW9ucyBhbmQgZmluaXNoIGluaXRpYWxpemluZyBldmVyeXRoaW5nCisgICAgICAgIC8vIGJlY2F1c2Ugd2UgaGF2ZSB0byBrbm93IHRoZSBuYW1lcyBhbmQgbG9jYXRpb25zIG9mIGFsbCB0aGUgcnVsZQorICAgICAgICAvLyBzZXRzIGJlZm9yZSB3ZSBjYW4gYWN0dWFsbHkgc2V0IGV2ZXJ5dGhpbmcgdXAKKyAgICAgICAgU3RyaW5nW10gcnVsZVNldERlc2NyaXB0aW9ucyA9IG5ldyBTdHJpbmdbbnVtUnVsZVNldHNdOworCisgICAgICAgIGludCBjdXJSdWxlU2V0ID0gMDsKKyAgICAgICAgaW50IHN0YXJ0ID0gMDsKKyAgICAgICAgZm9yIChpbnQgcCA9IGRlc2NyaXB0aW9uLmluZGV4T2YoIjslIik7IHAgIT0gLTE7IHAgPSBkZXNjcmlwdGlvbi5pbmRleE9mKCI7JSIsIHN0YXJ0KSkgeworICAgICAgICAgICAgcnVsZVNldERlc2NyaXB0aW9uc1tjdXJSdWxlU2V0XSA9IGRlc2NyaXB0aW9uLnN1YnN0cmluZyhzdGFydCwgcCArIDEpOworICAgICAgICAgICAgcnVsZVNldHNbY3VyUnVsZVNldF0gPSBuZXcgTkZSdWxlU2V0KHJ1bGVTZXREZXNjcmlwdGlvbnMsIGN1clJ1bGVTZXQpOworICAgICAgICAgICAgKytjdXJSdWxlU2V0OworICAgICAgICAgICAgc3RhcnQgPSBwICsgMTsKKyAgICAgICAgfQorICAgICAgICBydWxlU2V0RGVzY3JpcHRpb25zW2N1clJ1bGVTZXRdID0gZGVzY3JpcHRpb24uc3Vic3RyaW5nKHN0YXJ0KTsKKyAgICAgICAgcnVsZVNldHNbY3VyUnVsZVNldF0gPSBuZXcgTkZSdWxlU2V0KHJ1bGVTZXREZXNjcmlwdGlvbnMsIGN1clJ1bGVTZXQpOworCisgICAgICAgIC8vIG5vdyB3ZSBjYW4gdGFrZSBub3RlIG9mIHRoZSBmb3JtYXR0ZXIncyBkZWZhdWx0IHJ1bGUgc2V0LCB3aGljaAorICAgICAgICAvLyBpcyB0aGUgbGFzdCBwdWJsaWMgcnVsZSBzZXQgaW4gdGhlIGRlc2NyaXB0aW9uIChpdCdzIHRoZSBsYXN0CisgICAgICAgIC8vIHJhdGhlciB0aGFuIHRoZSBmaXJzdCBzbyB0aGF0IGEgdXNlciBjYW4gY3JlYXRlIGEgbmV3IGZvcm1hdHRlcgorICAgICAgICAvLyBmcm9tIGFuIGV4aXN0aW5nIGZvcm1hdHRlciBhbmQgY2hhbmdlIGl0cyBkZWZhdWx0IGJldmhhaW9yIGp1c3QKKyAgICAgICAgLy8gYnkgYXBwZW5kaW5nIG1vcmUgcnVsZSBzZXRzIHRvIHRoZSBlbmQpCisgICAgICAgIHNldERlZmF1bHRSdWxlU2V0KCk7CisKKyAgICAgICAgLy8gZmluYWxseSwgd2UgY2FuIGdvIGJhY2sgdGhyb3VnaCB0aGUgdGVtcG9yYXJ5IGRlc2NyaXB0aW9ucworICAgICAgICAvLyBsaXN0IGFuZCBmaW5pc2ggc2V0aW5nIHVwIHRoZSBzdWJzdHJ1Y3R1cmUgKGFuZCB3ZSB0aHJvdworICAgICAgICAvLyBhd2F5IHRoZSB0ZW1wb3JhcnkgZGVzY3JpcHRpb25zIGFzIHdlIGdvKQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJ1bGVTZXRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBydWxlU2V0c1tpXS5wYXJzZVJ1bGVzKHJ1bGVTZXREZXNjcmlwdGlvbnNbaV0sIHRoaXMpOworICAgICAgICAgICAgcnVsZVNldERlc2NyaXB0aW9uc1tpXSA9IG51bGw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgYnkgaW5pdCgpIHRvIHN0cmlwIHdoaXRlc3BhY2UgYmV0d2VlbiBydWxlcyAoaS5lLiwKKyAgICAgKiBhZnRlciBzZW1pY29sb25zKS4KKyAgICAgKiBAcGFyYW0gZGVzY3JpcHRpb24gVGhlIGZvcm1hdHRlciBkZXNjcmlwdGlvbgorICAgICAqIEByZXR1cm4gVGhlIGRlc2NyaXB0aW9uIHdpdGggYWxsIHRoZSB3aGl0ZXNwYWNlIHRoYXQgZm9sbG93cyBzZW1pY29sb25zCisgICAgICogdGFrZW4gb3V0LgorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nIHN0cmlwV2hpdGVzcGFjZShTdHJpbmcgZGVzY3JpcHRpb24pIHsKKyAgICAgICAgLy8gc2luY2Ugd2UgZG9uJ3QgaGF2ZSBhIG1ldGhvZCB0aGF0IGRlbGV0ZXMgY2hhcmFjdGVycyAod2h5PyEhKQorICAgICAgICAvLyBjcmVhdGUgYSBud2UgU3RyaW5nQnVmZmVyIHRvIGNvcHkgdGhlIHRleHQgaW50bworICAgICAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworCisgICAgICAgIC8vIGl0ZXJhdGUgdGhyb3VnaCB0aGUgY2hhcmFjdGVycy4uLgorICAgICAgICBpbnQgc3RhcnQgPSAwOworICAgICAgICB3aGlsZSAoc3RhcnQgIT0gLTEgJiYgc3RhcnQgPCBkZXNjcmlwdGlvbi5sZW5ndGgoKSkgeworICAgICAgICAgICAgLy8gc2VlayB0byB0aGUgZmlyc3Qgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyLi4uCisgICAgICAgICAgICB3aGlsZSAoc3RhcnQgPCBkZXNjcmlwdGlvbi5sZW5ndGgoKQorICAgICAgICAgICAgICAgICAgICYmIENoYXJhY3Rlci5pc1doaXRlc3BhY2UoZGVzY3JpcHRpb24uY2hhckF0KHN0YXJ0KSkpIHsKKyAgICAgICAgICAgICAgICArK3N0YXJ0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBsb2NhdGUgdGhlIG5leHQgc2VtaWNvbG9uIGluIHRoZSB0ZXh0IGFuZCBjb3B5dCBoZSB0ZXh0IGZyb20KKyAgICAgICAgICAgIC8vIG91ciBjdXJyZW50IHBvc2l0aW9uIHVwIHRvIHRoYXQgc2VtaWNvbG9uIGludG8gdGhlIHJlc3VsdAorICAgICAgICAgICAgaW50IHA7CisgICAgICAgICAgICBwID0gZGVzY3JpcHRpb24uaW5kZXhPZignOycsIHN0YXJ0KTsKKyAgICAgICAgICAgIGlmIChwID09IC0xKSB7CisgICAgICAgICAgICAgICAgLy8gb3IgaWYgd2UgZG9uJ3QgZmluZCBhIHNlbWljb2xvbiwganVzdCBjb3B5IHRoZSByZXN0IG9mCisgICAgICAgICAgICAgICAgLy8gdGhlIHN0cmluZyBpbnRvIHRoZSByZXN1bHQKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGRlc2NyaXB0aW9uLnN1YnN0cmluZyhzdGFydCkpOworICAgICAgICAgICAgICAgIHN0YXJ0ID0gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChwIDwgZGVzY3JpcHRpb24ubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGRlc2NyaXB0aW9uLnN1YnN0cmluZyhzdGFydCwgcCArIDEpKTsKKyAgICAgICAgICAgICAgICBzdGFydCA9IHAgKyAxOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyB3aGVuIHdlIGdldCBoZXJlLCB3ZSd2ZSBzZWVrZWQgb2ZmIHRoZSBlbmQgb2YgdGhlIHNyaW5nLCBhbmQKKyAgICAgICAgICAgIC8vIHdlIHRlcm1pbmF0ZSB0aGUgbG9vcCAod2UgY29udGludWUgdW50aWwgKnN0YXJ0KiBpcyAtMSByYXRoZXIKKyAgICAgICAgICAgIC8vIHRoYW4gdW50aWwgKnAqIGlzIC0xLCBiZWNhdXNlIG90aGVyd2lzZSB3ZSdkIG1pc3MgdGhlIGxhc3QKKyAgICAgICAgICAgIC8vIHJ1bGUgaW4gdGhlIGRlc2NyaXB0aW9uKQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgc3RhcnQgPSAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgT05MWSBEVVJJTkcgQ09OU1RSVUNUSU9OIHRvIGZpbGwgaW4gdGhlCisgICAgICogZGVmYXVsdFJ1bGVTZXQgdmFyaWFibGUgb25jZSB3ZSd2ZSBzZXQgdXAgYWxsIHRoZSBydWxlIHNldHMuCisgICAgICogVGhlIGRlZmF1bHQgcnVsZSBzZXQgaXMgdGhlIGxhc3QgcHVibGljIHJ1bGUgc2V0IGluIHRoZSBkZXNjcmlwdGlvbi4KKyAgICAgKiAoSXQncyB0aGUgbGFzdCByYXRoZXIgdGhhbiB0aGUgZmlyc3Qgc28gdGhhdCBhIGNhbGxlciBjYW4gYXBwZW5kCisgICAgICogdGV4dCB0byB0aGUgZW5kIG9mIGFuIGV4aXN0aW5nIGZvcm1hdHRlciBkZXNjcmlwdGlvbiB0byBjaGFuZ2UgaXRzCisgICAgICogYmVoYXZpb3IuKQorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBzZXREZWZhdWx0UnVsZVNldCgpIHsKKyAgICAgICAgLy8gc2VlayBiYWNrd2FyZCBmcm9tIHRoZSBlbmQgb2YgdGhlIGxpc3QgdW50aWwgd2UgcmVhY2ggYSBydWxlIHNldAorICAgICAgICAvLyB3aG9zZSBuYW1lIERPRVNOJ1QgYmVnaW4gd2l0aCAlJS4gIFRoYXQncyB0aGUgZGVmYXVsdCBydWxlIHNldAorICAgICAgICBmb3IgKGludCBpID0gcnVsZVNldHMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsKKyAgICAgICAgICAgIGlmICghcnVsZVNldHNbaV0uZ2V0TmFtZSgpLnN0YXJ0c1dpdGgoIiUlIikpIHsKKyAgICAgICAgICAgICAgICBkZWZhdWx0UnVsZVNldCA9IHJ1bGVTZXRzW2ldOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBkZWZhdWx0UnVsZVNldCA9IHJ1bGVTZXRzW3J1bGVTZXRzLmxlbmd0aCAtIDFdOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBmb3JtYXR0aW5nIGltcGxlbWVudGF0aW9uCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQm90dGxlbmVjayB0aHJvdWdoIHdoaWNoIGFsbCB0aGUgcHVibGljIGZvcm1hdCgpIG1ldGhvZHMKKyAgICAgKiB0aGF0IHRha2UgYSBkb3VibGUgcGFzcy4gQnkgdGhlIHRpbWUgd2UgZ2V0IGhlcmUsIHdlIGtub3cKKyAgICAgKiB3aGljaCBydWxlIHNldCB3ZSdyZSB1c2luZyB0byBkbyB0aGUgZm9ybWF0dGluZy4KKyAgICAgKiBAcGFyYW0gbnVtYmVyIFRoZSBudW1iZXIgdG8gZm9ybWF0CisgICAgICogQHBhcmFtIHJ1bGVTZXQgVGhlIHJ1bGUgc2V0IHRvIHVzZSB0byBmb3JtYXQgdGhlIG51bWJlcgorICAgICAqIEByZXR1cm4gVGhlIHRleHQgdGhhdCByZXN1bHRlZCBmcm9tIGZvcm1hdHRpbmcgdGhlIG51bWJlcgorICAgICAqLworICAgIFN0cmluZyBmb3JtYXQoZG91YmxlIG51bWJlciwgTkZSdWxlU2V0IHJ1bGVTZXQpIHsKKyAgICAgICAgLy8gYWxsIEFQSSBmb3JtYXQoKSByb3V0aW5lcyB0aGF0IHRha2UgYSBkb3VibGUgdmVjdG9yIHRocm91Z2gKKyAgICAgICAgLy8gaGVyZS4gIENyZWF0ZSBhbiBlbXB0eSBzdHJpbmcgYnVmZmVyIHdoZXJlIHRoZSByZXN1bHQgd2lsbAorICAgICAgICAvLyBiZSBidWlsdCwgYW5kIHBhc3MgaXQgdG8gdGhlIHJ1bGUgc2V0IChhbG9uZyB3aXRoIGFuIGluc2VydGlvbgorICAgICAgICAvLyBwb3NpdGlvbiBvZiAwIGFuZCB0aGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZCkgdG8gdGhlIHJ1bGUgc2V0CisgICAgICAgIC8vIGZvciBmb3JtYXR0aW5nCisgICAgICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIHJ1bGVTZXQuZm9ybWF0KG51bWJlciwgcmVzdWx0LCAwKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEJvdHRsZW5lY2sgdGhyb3VnaCB3aGljaCBhbGwgdGhlIHB1YmxpYyBmb3JtYXQoKSBtZXRob2RzCisgICAgICogdGhhdCB0YWtlIGEgbG9uZyBwYXNzLiBCeSB0aGUgdGltZSB3ZSBnZXQgaGVyZSwgd2Uga25vdworICAgICAqIHdoaWNoIHJ1bGUgc2V0IHdlJ3JlIHVzaW5nIHRvIGRvIHRoZSBmb3JtYXR0aW5nLgorICAgICAqIEBwYXJhbSBudW1iZXIgVGhlIG51bWJlciB0byBmb3JtYXQKKyAgICAgKiBAcGFyYW0gcnVsZVNldCBUaGUgcnVsZSBzZXQgdG8gdXNlIHRvIGZvcm1hdCB0aGUgbnVtYmVyCisgICAgICogQHJldHVybiBUaGUgdGV4dCB0aGF0IHJlc3VsdGVkIGZyb20gZm9ybWF0dGluZyB0aGUgbnVtYmVyCisgICAgICovCisgICAgU3RyaW5nIGZvcm1hdChsb25nIG51bWJlciwgTkZSdWxlU2V0IHJ1bGVTZXQpIHsKKyAgICAgICAgLy8gYWxsIEFQSSBmb3JtYXQoKSByb3V0aW5lcyB0aGF0IHRha2UgYSBkb3VibGUgdmVjdG9yIHRocm91Z2gKKyAgICAgICAgLy8gaGVyZS4gIFdlIGhhdmUgdGhlc2UgdHdvIGlkZW50aWNhbCBmdW5jdGlvbnMtLSBvbmUgdGFraW5nIGEKKyAgICAgICAgLy8gZG91YmxlIGFuZCBvbmUgdGFraW5nIGEgbG9uZy0tIHRoZSBjb3VwbGUgZGlnaXRzIG9mIHByZWNpc2lvbgorICAgICAgICAvLyB0aGF0IGxvbmcgaGFzIGJ1dCBkb3VibGUgZG9lc24ndCAoYm90aCB0eXBlcyBhcmUgOCBieXRlcyBsb25nLAorICAgICAgICAvLyBidXQgZG91YmxlIGhhcyB0byBib3Jyb3cgc29tZSBvZiB0aGUgbWFudGlzc2EgYml0cyB0byBob2xkCisgICAgICAgIC8vIHRoZSBleHBvbmVudCkuCisgICAgICAgIC8vIENyZWF0ZSBhbiBlbXB0eSBzdHJpbmcgYnVmZmVyIHdoZXJlIHRoZSByZXN1bHQgd2lsbAorICAgICAgICAvLyBiZSBidWlsdCwgYW5kIHBhc3MgaXQgdG8gdGhlIHJ1bGUgc2V0IChhbG9uZyB3aXRoIGFuIGluc2VydGlvbgorICAgICAgICAvLyBwb3NpdGlvbiBvZiAwIGFuZCB0aGUgbnVtYmVyIGJlaW5nIGZvcm1hdHRlZCkgdG8gdGhlIHJ1bGUgc2V0CisgICAgICAgIC8vIGZvciBmb3JtYXR0aW5nCisgICAgICAgIFN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIHJ1bGVTZXQuZm9ybWF0KG51bWJlciwgcmVzdWx0LCAwKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG5hbWVkIHJ1bGUgc2V0LiAgVGhyb3dzIGFuIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbgorICAgICAqIGlmIHRoaXMgZm9ybWF0dGVyIGRvZXNuJ3QgaGF2ZSBhIHJ1bGUgc2V0IHdpdGggdGhhdCBuYW1lLgorICAgICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBkZXNpcmVkIHJ1bGUgc2V0CisgICAgICogQHJldHVybiBUaGUgcnVsZSBzZXQgd2l0aCB0aGF0IG5hbWUKKyAgICAgKi8KKyAgICBORlJ1bGVTZXQgZmluZFJ1bGVTZXQoU3RyaW5nIG5hbWUpIHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24geworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJ1bGVTZXRzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAocnVsZVNldHNbaV0uZ2V0TmFtZSgpLmVxdWFscyhuYW1lKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBydWxlU2V0c1tpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJObyBydWxlIHNldCBuYW1lZCAiICsgbmFtZSk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L1J1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS90ZXh0L1J1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzA4Y2Q1MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IuamF2YQpAQCAtMCwwICsxLDE1ODQgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvQXR0aWMvUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMS8wMi8yMCAxNzo1OTo0MCAkIAorICogJFJldmlzaW9uOiAxLjQyICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRleHQ7CisKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7CitpbXBvcnQgamF2YS50ZXh0LlBhcnNlUG9zaXRpb247CitpbXBvcnQgY29tLmlibS51dGlsLlV0aWxpdHk7CitpbXBvcnQgY29tLmlibS50ZXh0LnJlc291cmNlcy5SZXNvdXJjZVJlYWRlcjsKKworLyoqCisgKiA8Y29kZT5SdWxlQmFzZWRUcmFuc2xpdGVyYXRvcjwvY29kZT4gaXMgYSB0cmFuc2xpdGVyYXRvcgorICogdGhhdCByZWFkcyBhIHNldCBvZiBydWxlcyBpbiBvcmRlciB0byBkZXRlcm1pbmUgaG93IHRvIHBlcmZvcm0KKyAqIHRyYW5zbGF0aW9ucy4gUnVsZSBzZXRzIGFyZSBzdG9yZWQgaW4gcmVzb3VyY2UgYnVuZGxlcyBpbmRleGVkIGJ5CisgKiBuYW1lLiBSdWxlcyB3aXRoaW4gYSBydWxlIHNldCBhcmUgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbnMgKCc7JykuCisgKiBUbyBpbmNsdWRlIGEgbGl0ZXJhbCBzZW1pY29sb24sIHByZWZpeCBpdCB3aXRoIGEgYmFja3NsYXNoICgnXCcpLgorICogV2hpdGVzcGFjZSwgYXMgZGVmaW5lZCBieSA8Y29kZT5DaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKCk8L2NvZGU+LAorICogaXMgaWdub3JlZC4gSWYgdGhlIGZpcnN0IG5vbi1ibGFuayBjaGFyYWN0ZXIgb24gYSBsaW5lIGlzICcjJywKKyAqIHRoZSBlbnRpcmUgbGluZSBpcyBpZ25vcmVkIGFzIGEgY29tbWVudC4gPC9wPgorICogCisgKiA8cD5FYWNoIHNldCBvZiBydWxlcyBjb25zaXN0cyBvZiB0d28gZ3JvdXBzLCBvbmUgZm9yd2FyZCwgYW5kIG9uZQorICogcmV2ZXJzZS4gVGhpcyBpcyBhIGNvbnZlbnRpb24gdGhhdCBpcyBub3QgZW5mb3JjZWQ7IHJ1bGVzIGZvciBvbmUKKyAqIGRpcmVjdGlvbiBtYXkgYmUgb21pdHRlZCwgd2l0aCB0aGUgcmVzdWx0IHRoYXQgdHJhbnNsYXRpb25zIGluCisgKiB0aGF0IGRpcmVjdGlvbiB3aWxsIG5vdCBtb2RpZnkgdGhlIHNvdXJjZSB0ZXh0LiBJbiBhZGRpdGlvbiwKKyAqIGJpZGlyZWN0aW9uYWwgZm9yd2FyZC1yZXZlcnNlIHJ1bGVzIG1heSBiZSBzcGVjaWZpZWQgZm9yCisgKiBzeW1tZXRyaWNhbCB0cmFuc2Zvcm1hdGlvbnMuPC9wPgorICogCisgKiA8cD48Yj5SdWxlIHN5bnRheDwvYj4gPC9wPgorICogCisgKiA8cD5SdWxlIHN0YXRlbWVudHMgdGFrZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBmb3JtczogPC9wPgorICogCisgKiA8ZGw+CisgKiAgICAgPGR0Pjxjb2RlPiRhbGVmbWFkZGE9XHUwNjIyOzwvY29kZT48L2R0PgorICogICAgIDxkZD48c3Ryb25nPlZhcmlhYmxlIGRlZmluaXRpb24uPC9zdHJvbmc+IFRoZSBuYW1lIG9uIHRoZQorICogICAgICAgICBsZWZ0IGlzIGFzc2lnbmVkIHRoZSB0ZXh0IG9uIHRoZSByaWdodC4gSW4gdGhpcyBleGFtcGxlLAorICogICAgICAgICBhZnRlciB0aGlzIHN0YXRlbWVudCwgaW5zdGFuY2VzIG9mIHRoZSBsZWZ0IGhhbmQgbmFtZSwKKyAqICAgICAgICAgJnF1b3Q7PGNvZGU+JGFsZWZtYWRkYTwvY29kZT4mcXVvdDssIHdpbGwgYmUgcmVwbGFjZWQgYnkKKyAqICAgICAgICAgdGhlIFVuaWNvZGUgY2hhcmFjdGVyIFUrMDYyMi4gVmFyaWFibGUgbmFtZXMgbXVzdCBiZWdpbgorICogICAgICAgICB3aXRoIGEgbGV0dGVyIGFuZCBjb25zaXN0IG9ubHkgb2YgbGV0dGVycywgZGlnaXRzLCBhbmQKKyAqICAgICAgICAgdW5kZXJzY29yZXMuIENhc2UgaXMgc2lnbmlmaWNhbnQuIER1cGxpY2F0ZSBuYW1lcyBjYXVzZQorICogICAgICAgICBhbiBleGNlcHRpb24gdG8gYmUgdGhyb3duLCB0aGF0IGlzLCB2YXJpYWJsZXMgY2Fubm90IGJlCisgKiAgICAgICAgIHJlZGVmaW5lZC4gVGhlIHJpZ2h0IGhhbmQgc2lkZSBtYXkgY29udGFpbiB3ZWxsLWZvcm1lZAorICogICAgICAgICB0ZXh0IG9mIGFueSBsZW5ndGgsIGluY2x1ZGluZyBubyB0ZXh0IGF0IGFsbCAoJnF1b3Q7PGNvZGU+JGVtcHR5PTs8L2NvZGU+JnF1b3Q7KS4KKyAqICAgICAgICAgVGhlIHJpZ2h0IGhhbmQgc2lkZSBtYXkgY29udGFpbiBlbWJlZGRlZCA8Y29kZT5Vbmljb2RlU2V0PC9jb2RlPgorICogICAgICAgICBwYXR0ZXJucywgZm9yIGV4YW1wbGUsICZxdW90Ozxjb2RlPiRzb2Z0dm93ZWw9W2VpeUVJWV08L2NvZGU+JnF1b3Q7LjwvZGQ+CisgKiAgICAgPGRkPiZuYnNwOzwvZGQ+CisgKiAgICAgPGR0Pjxjb2RlPmFpJmd0OyRhbGVmbWFkZGE7PC9jb2RlPjwvZHQ+CisgKiAgICAgPGRkPjxzdHJvbmc+Rm9yd2FyZCB0cmFuc2xhdGlvbiBydWxlLjwvc3Ryb25nPiBUaGlzIHJ1bGUKKyAqICAgICAgICAgc3RhdGVzIHRoYXQgdGhlIHN0cmluZyBvbiB0aGUgbGVmdCB3aWxsIGJlIGNoYW5nZWQgdG8gdGhlCisgKiAgICAgICAgIHN0cmluZyBvbiB0aGUgcmlnaHQgd2hlbiBwZXJmb3JtaW5nIGZvcndhcmQKKyAqICAgICAgICAgdHJhbnNsaXRlcmF0aW9uLjwvZGQ+CisgKiAgICAgPGR0PiZuYnNwOzwvZHQ+CisgKiAgICAgPGR0Pjxjb2RlPmFpJmx0OyRhbGVmbWFkZGE7PC9jb2RlPjwvZHQ+CisgKiAgICAgPGRkPjxzdHJvbmc+UmV2ZXJzZSB0cmFuc2xhdGlvbiBydWxlLjwvc3Ryb25nPiBUaGlzIHJ1bGUKKyAqICAgICAgICAgc3RhdGVzIHRoYXQgdGhlIHN0cmluZyBvbiB0aGUgcmlnaHQgd2lsbCBiZSBjaGFuZ2VkIHRvCisgKiAgICAgICAgIHRoZSBzdHJpbmcgb24gdGhlIGxlZnQgd2hlbiBwZXJmb3JtaW5nIHJldmVyc2UKKyAqICAgICAgICAgdHJhbnNsaXRlcmF0aW9uLjwvZGQ+CisgKiA8L2RsPgorICogCisgKiA8ZGw+CisgKiAgICAgPGR0Pjxjb2RlPmFpJmx0OyZndDskYWxlZm1hZGRhOzwvY29kZT48L2R0PgorICogICAgIDxkZD48c3Ryb25nPkJpZGlyZWN0aW9uYWwgdHJhbnNsYXRpb24gcnVsZS48L3N0cm9uZz4gVGhpcworICogICAgICAgICBydWxlIHN0YXRlcyB0aGF0IHRoZSBzdHJpbmcgb24gdGhlIHJpZ2h0IHdpbGwgYmUgY2hhbmdlZAorICogICAgICAgICB0byB0aGUgc3RyaW5nIG9uIHRoZSBsZWZ0IHdoZW4gcGVyZm9ybWluZyBmb3J3YXJkCisgKiAgICAgICAgIHRyYW5zbGl0ZXJhdGlvbiwgYW5kIHZpY2UgdmVyc2Egd2hlbiBwZXJmb3JtaW5nIHJldmVyc2UKKyAqICAgICAgICAgdHJhbnNsaXRlcmF0aW9uLjwvZGQ+CisgKiA8L2RsPgorICogCisgKiA8cD5UcmFuc2xhdGlvbiBydWxlcyBjb25zaXN0IG9mIGEgPGVtPm1hdGNoIHBhdHRlcm48L2VtPiBhbmQgYW4gPGVtPm91dHB1dAorICogc3RyaW5nPC9lbT4uIFRoZSBtYXRjaCBwYXR0ZXJuIGNvbnNpc3RzIG9mIGxpdGVyYWwgY2hhcmFjdGVycywKKyAqIG9wdGlvbmFsbHkgcHJlY2VkZWQgYnkgY29udGV4dCwgYW5kIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkKKyAqIGNvbnRleHQuIENvbnRleHQgY2hhcmFjdGVycywgbGlrZSBsaXRlcmFsIHBhdHRlcm4gY2hhcmFjdGVycywKKyAqIG11c3QgYmUgbWF0Y2hlZCBpbiB0aGUgdGV4dCBiZWluZyB0cmFuc2xpdGVyYXRlZC4gSG93ZXZlciwgdW5saWtlCisgKiBsaXRlcmFsIHBhdHRlcm4gY2hhcmFjdGVycywgdGhleSBhcmUgbm90IHJlcGxhY2VkIGJ5IHRoZSBvdXRwdXQKKyAqIHRleHQuIEZvciBleGFtcGxlLCB0aGUgcGF0dGVybiAmcXVvdDs8Y29kZT5hYmN7ZGVmfTwvY29kZT4mcXVvdDsKKyAqIGluZGljYXRlcyB0aGUgY2hhcmFjdGVycyAmcXVvdDs8Y29kZT5kZWY8L2NvZGU+JnF1b3Q7IG11c3QgYmUKKyAqIHByZWNlZGVkIGJ5ICZxdW90Ozxjb2RlPmFiYzwvY29kZT4mcXVvdDsgZm9yIGEgc3VjY2Vzc2Z1bCBtYXRjaC4KKyAqIElmIHRoZXJlIGlzIGEgc3VjY2Vzc2Z1bCBtYXRjaCwgJnF1b3Q7PGNvZGU+ZGVmPC9jb2RlPiZxdW90OyB3aWxsCisgKiBiZSByZXBsYWNlZCwgYnV0IG5vdCAmcXVvdDs8Y29kZT5hYmM8L2NvZGU+JnF1b3Q7LiBUaGUgZmluYWwgJzxjb2RlPn08L2NvZGU+JworICogaXMgb3B0aW9uYWwsIHNvICZxdW90Ozxjb2RlPmFiY3tkZWY8L2NvZGU+JnF1b3Q7IGlzIGVxdWl2YWxlbnQgdG8KKyAqICZxdW90Ozxjb2RlPmFiY3tkZWZ9PC9jb2RlPiZxdW90Oy4gQW5vdGhlciBleGFtcGxlIGlzICZxdW90Ozxjb2RlPnsxMjN9NDU2PC9jb2RlPiZxdW90OworICogKG9yICZxdW90Ozxjb2RlPjEyM300NTY8L2NvZGU+JnF1b3Q7KSBpbiB3aGljaCB0aGUgbGl0ZXJhbAorICogcGF0dGVybiAmcXVvdDs8Y29kZT4xMjM8L2NvZGU+JnF1b3Q7IG11c3QgYmUgZm9sbG93ZWQgYnkgJnF1b3Q7PGNvZGU+NDU2PC9jb2RlPiZxdW90Oy4KKyAqIDwvcD4KKyAqIAorICogPHA+VGhlIG91dHB1dCBzdHJpbmcgb2YgYSBmb3J3YXJkIG9yIHJldmVyc2UgcnVsZSBjb25zaXN0cyBvZgorICogY2hhcmFjdGVycyB0byByZXBsYWNlIHRoZSBsaXRlcmFsIHBhdHRlcm4gY2hhcmFjdGVycy4gSWYgdGhlCisgKiBvdXRwdXQgc3RyaW5nIGNvbnRhaW5zIHRoZSBjaGFyYWN0ZXIgJzxjb2RlPnw8L2NvZGU+JywgdGhpcyBpcworICogdGFrZW4gdG8gaW5kaWNhdGUgdGhlIGxvY2F0aW9uIG9mIHRoZSA8ZW0+Y3Vyc29yPC9lbT4gYWZ0ZXIKKyAqIHJlcGxhY2VtZW50LiBUaGUgY3Vyc29yIGlzIHRoZSBwb2ludCBpbiB0aGUgdGV4dCBhdCB3aGljaCB0aGUKKyAqIG5leHQgcmVwbGFjZW1lbnQsIGlmIGFueSwgd2lsbCBiZSBhcHBsaWVkLiBUaGUgY3Vyc29yIGlzIHVzdWFsbHkKKyAqIHBsYWNlZCB3aXRoaW4gdGhlIHJlcGxhY2VtZW50IHRleHQ7IGhvd2V2ZXIsIGl0IGNhbiBhY3R1YWxseSBiZQorICogcGxhY2VkIGludG8gdGhlIHByZWNlbmRpbmcgb3IgZm9sbG93aW5nIGNvbnRleHQgYnkgdXNpbmcgdGhlCisgKiBzcGVjaWFsIGNoYXJhY3RlciAnPGNvZGU+QDwvY29kZT4nLiBFeGFtcGxlczo8L3A+CisgKiAKKyAqIDxibG9ja3F1b3RlPgorICogICAgIDxwPjxjb2RlPmEge2Zvb30geiAmZ3Q7IHwgQCBiYXI7ICMgZm9vIC0mZ3Q7IGJhciwgbW92ZSBjdXJzb3IKKyAqICAgICBiZWZvcmUgYTxicj4KKyAqICAgICB7Zm9vfSB4eXogJmd0OyBiYXIgQEB8OyAjJm5ic3A7Zm9vIC0mZ3Q7IGJhciwgY3Vyc29yIGJldHdlZW4KKyAqICAgICB5IGFuZCB6PC9jb2RlPjwvcD4KKyAqIDwvYmxvY2txdW90ZT4KKyAqIAorICogPHA+PGI+VW5pY29kZVNldDwvYj48L3A+CisgKiAKKyAqIDxwPjxjb2RlPlVuaWNvZGVTZXQ8L2NvZGU+IHBhdHRlcm5zIG1heSBhcHBlYXIgYW55d2hlcmUgdGhhdAorICogbWFrZXMgc2Vuc2UuIFRoZXkgbWF5IGFwcGVhciBpbiB2YXJpYWJsZSBkZWZpbml0aW9ucy4KKyAqIENvbnRyYXJpd2lzZSwgPGNvZGU+VW5pY29kZVNldDwvY29kZT4gcGF0dGVybnMgbWF5IHRoZW1zZWx2ZXMKKyAqIGNvbnRhaW4gdmFyaWFibGUgcmVmZXJlbmNlcywgc3VjaCBhcyAmcXVvdDs8Y29kZT4kYT1bYS16XTskbm90X2E9W14kYV08L2NvZGU+JnF1b3Q7LAorICogb3IgJnF1b3Q7PGNvZGU+JHJhbmdlPWEtejskbGw9WyRyYW5nZV08L2NvZGU+JnF1b3Q7LjwvcD4KKyAqIAorICogPHA+PGNvZGU+VW5pY29kZVNldDwvY29kZT4gcGF0dGVybnMgbWF5IGFsc28gYmUgZW1iZWRkZWQgZGlyZWN0bHkKKyAqIGludG8gcnVsZSBzdHJpbmdzLiBUaHVzLCB0aGUgZm9sbG93aW5nIHR3byBydWxlcyBhcmUgZXF1aXZhbGVudDo8L3A+CisgKiAKKyAqIDxibG9ja3F1b3RlPgorICogICAgIDxwPjxjb2RlPiR2b3dlbD1bYWVpb3VdOyAkdm93ZWwmZ3Q7JyonOyAjIE9uZSB3YXkgdG8gZG8gdGhpczxicj4KKyAqICAgICBbYWVpb3VdJmd0OycqJzsKKyAqICAgICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsjCisgKiAgICAgQW5vdGhlciB3YXk8L2NvZGU+PC9wPgorICogPC9ibG9ja3F1b3RlPgorICogCisgKiA8cD5TZWUge0BsaW5rIFVuaWNvZGVTZXR9IGZvciBtb3JlIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzLjwvcD4KKyAqIAorICogPHA+PGI+U2VnbWVudHM8L2I+PC9wPgorICogCisgKiA8cD5TZWdtZW50cyBvZiB0aGUgaW5wdXQgc3RyaW5nIGNhbiBiZSBtYXRjaGVkIGFuZCBjb3BpZWQgdG8gdGhlCisgKiBvdXRwdXQgc3RyaW5nLiBUaGlzIG1ha2VzIGNlcnRhaW4gc2V0cyBvZiBydWxlcyBzaW1wbGVyIGFuZCBtb3JlCisgKiBnZW5lcmFsLCBhbmQgbWFrZXMgcmVvcmRlcmluZyBwb3NzaWJsZS4gRm9yIGV4YW1wbGU6PC9wPgorICogCisgKiA8YmxvY2txdW90ZT4KKyAqICAgICA8cD48Y29kZT4oW2Etel0pICZndDsgJDEgJDE7CisgKiAgICAgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IworICogICAgIGRvdWJsZSBsb3dlcmNhc2UgbGV0dGVyczxicj4KKyAqICAgICAoWzpMdTpdKSAoWzpMbDpdKSAmZ3Q7ICQyICQxOyAjIHJldmVyc2Ugb3JkZXIgb2YgTHUtTGwgcGFpcnM8L2NvZGU+PC9wPgorICogPC9ibG9ja3F1b3RlPgorICogCisgKiA8cD5UaGUgc2VnbWVudCBvZiB0aGUgaW5wdXQgc3RyaW5nIHRvIGJlIGNvcGllZCBpcyBkZWxpbWl0ZWQgYnkKKyAqICZxdW90Ozxjb2RlPig8L2NvZGU+JnF1b3Q7IGFuZCAmcXVvdDs8Y29kZT4pPC9jb2RlPiZxdW90Oy4gVXAgdG8KKyAqIG5pbmUgc2VnbWVudHMgbWF5IGJlIGRlZmluZWQuIFNlZ21lbnRzIG1heSBub3Qgb3ZlcmxhcC4gSW4gdGhlCisgKiBvdXRwdXQgc3RyaW5nLCAmcXVvdDs8Y29kZT4kMTwvY29kZT4mcXVvdDsgdGhyb3VnaCAmcXVvdDs8Y29kZT4kOTwvY29kZT4mcXVvdDsKKyAqIHJlcHJlc2VudCB0aGUgaW5wdXQgc3RyaW5nIHNlZ21lbnRzLCBpbiBsZWZ0LXRvLXJpZ2h0IG9yZGVyIG9mCisgKiBkZWZpbml0aW9uLjwvcD4KKyAqIAorICogPHA+PGI+QW5jaG9yczwvYj48L3A+CisgKiAKKyAqIDxwPlBhdHRlcm5zIGNhbiBiZSBhbmNob3JlZCB0byB0aGUgYmVnaW5uaW5nIG9yIHRoZSBlbmQgb2YgdGhlIHRleHQuIFRoaXMgaXMgZG9uZSB3aXRoIHRoZQorICogc3BlY2lhbCBjaGFyYWN0ZXJzICc8Y29kZT5ePC9jb2RlPicgYW5kICc8Y29kZT4kPC9jb2RlPicuIEZvciBleGFtcGxlOjwvcD4KKyAqIAorICogPGJsb2NrcXVvdGU+CisgKiAgIDxwPjxjb2RlPl4gYSZuYnNwOyZuYnNwOyAmZ3Q7ICdCRUdfQSc7ICZuYnNwOyZuYnNwOyMgbWF0Y2ggJ2EnIGF0IHN0YXJ0IG9mIHRleHQ8YnI+CisgKiAgICZuYnNwOyBhJm5ic3A7Jm5ic3A7ICZndDsgJ0EnOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAjIG1hdGNoIG90aGVyIGluc3RhbmNlcworICogICBvZiAnYSc8YnI+CisgKiAgICZuYnNwOyB6ICQgJmd0OyAnRU5EX1onOyAmbmJzcDsmbmJzcDsjIG1hdGNoICd6JyBhdCBlbmQgb2YgdGV4dDxicj4KKyAqICAgJm5ic3A7IHombmJzcDsmbmJzcDsgJmd0OyAnWic7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICMgbWF0Y2ggb3RoZXIgaW5zdGFuY2VzCisgKiAgIG9mICd6JzwvY29kZT48L3A+CisgKiA8L2Jsb2NrcXVvdGU+CisgKiAKKyAqIDxwPkl0IGlzIGFsc28gcG9zc2libGUgdG8gbWF0Y2ggdGhlIGJlZ2lubmluZyBvciB0aGUgZW5kIG9mIHRoZSB0ZXh0IHVzaW5nIGEgPGNvZGU+VW5pY29kZVNldDwvY29kZT4uCisgKiBUaGlzIGlzIGRvbmUgYnkgaW5jbHVkaW5nIGEgdmlydHVhbCBhbmNob3IgY2hhcmFjdGVyICc8Y29kZT4kPC9jb2RlPicgYXQgdGhlIGVuZCBvZiB0aGUKKyAqIHNldCBwYXR0ZXJuLiBBbHRob3VnaCB0aGlzIGlzIHVzdWFsbHkgdGhlIG1hdGNoIGNoYWZhY3RlciBmb3IgdGhlIGVuZCBhbmNob3IsIHRoZSBzZXQgd2lsbAorICogbWF0Y2ggZWl0aGVyIHRoZSBiZWdpbm5pbmcgb3IgdGhlIGVuZCBvZiB0aGUgdGV4dCwgZGVwZW5kaW5nIG9uIGl0cyBwbGFjZW1lbnQuIEZvcgorICogZXhhbXBsZTo8L3A+CisgKiAKKyAqIDxibG9ja3F1b3RlPgorICogICA8cD48Y29kZT4keCA9IFthLXokXTsgJm5ic3A7Jm5ic3A7IyBtYXRjaCAnYScgdGhyb3VnaCAneicgT1IgYW5jaG9yPGJyPgorICogICAkeCAxJm5ic3A7Jm5ic3A7Jm5ic3A7ICZndDsgMjsmbmJzcDsmbmJzcDsgIyBtYXRjaCAnMScgYWZ0ZXIgYS16IG9yIGF0IHRoZSBzdGFydDxicj4KKyAqICAgJm5ic3A7Jm5ic3A7IDMgJHggJmd0OyA0OyAmbmJzcDsmbmJzcDsjIG1hdGNoICczJyBiZWZvcmUgYS16IG9yIGF0IHRoZSBlbmQ8L2NvZGU+PC9wPgorICogPC9ibG9ja3F1b3RlPgorICogCisgKiA8cD48Yj5FeGFtcGxlPC9iPiA8L3A+CisgKiAKKyAqIDxwPlRoZSBmb2xsb3dpbmcgZXhhbXBsZSBydWxlcyBpbGx1c3RyYXRlIG1hbnkgb2YgdGhlIGZlYXR1cmVzIG9mCisgKiB0aGUgcnVsZSBsYW5ndWFnZS4gPC9wPgorICogCisgKiA8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iNCI+CisgKiAgICAgPHRyPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlJ1bGUgMS48L3RkPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiIG5vd3JhcD48Y29kZT5hYmN7ZGVmfSZndDt4fHk8L2NvZGU+PC90ZD4KKyAqICAgICA8L3RyPgorICogICAgIDx0cj4KKyAqICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5SdWxlIDIuPC90ZD4KKyAqICAgICAgICAgPHRkIHZhbGlnbj0idG9wIiBub3dyYXA+PGNvZGU+eHl6Jmd0O3I8L2NvZGU+PC90ZD4KKyAqICAgICA8L3RyPgorICogICAgIDx0cj4KKyAqICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5SdWxlIDMuPC90ZD4KKyAqICAgICAgICAgPHRkIHZhbGlnbj0idG9wIiBub3dyYXA+PGNvZGU+eXomZ3Q7cTwvY29kZT48L3RkPgorICogICAgIDwvdHI+CisgKiA8L3RhYmxlPgorICogCisgKiA8cD5BcHBseWluZyB0aGVzZSBydWxlcyB0byB0aGUgc3RyaW5nICZxdW90Ozxjb2RlPmFkZWZhYmNkZWZ6PC9jb2RlPiZxdW90OworICogeWllbGRzIHRoZSBmb2xsb3dpbmcgcmVzdWx0czogPC9wPgorICogCisgKiA8dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iNCI+CisgKiAgICAgPHRyPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiIG5vd3JhcD48Y29kZT58YWRlZmFiY2RlZno8L2NvZGU+PC90ZD4KKyAqICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5Jbml0aWFsIHN0YXRlLCBubyBydWxlcyBtYXRjaC4gQWR2YW5jZQorICogICAgICAgICBjdXJzb3IuPC90ZD4KKyAqICAgICA8L3RyPgorICogICAgIDx0cj4KKyAqICAgICAgICAgPHRkIHZhbGlnbj0idG9wIiBub3dyYXA+PGNvZGU+YXxkZWZhYmNkZWZ6PC9jb2RlPjwvdGQ+CisgKiAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U3RpbGwgbm8gbWF0Y2guIFJ1bGUgMSBkb2VzIG5vdCBtYXRjaAorICogICAgICAgICBiZWNhdXNlIHRoZSBwcmVjZWRpbmcgY29udGV4dCBpcyBub3QgcHJlc2VudC48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiIG5vd3JhcD48Y29kZT5hZHxlZmFiY2RlZno8L2NvZGU+PC90ZD4KKyAqICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TdGlsbCBubyBtYXRjaC4gS2VlcCBhZHZhbmNpbmcgdW50aWwKKyAqICAgICAgICAgdGhlcmUgaXMgYSBtYXRjaC4uLjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgbm93cmFwPjxjb2RlPmFkZXxmYWJjZGVmejwvY29kZT48L3RkPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPi4uLjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgbm93cmFwPjxjb2RlPmFkZWZ8YWJjZGVmejwvY29kZT48L3RkPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPi4uLjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgbm93cmFwPjxjb2RlPmFkZWZhfGJjZGVmejwvY29kZT48L3RkPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPi4uLjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgbm93cmFwPjxjb2RlPmFkZWZhYnxjZGVmejwvY29kZT48L3RkPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPi4uLjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgICA8dHI+CisgKiAgICAgICAgIDx0ZCB2YWxpZ249InRvcCIgbm93cmFwPjxjb2RlPmFkZWZhYmN8ZGVmejwvY29kZT48L3RkPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlJ1bGUgMSBtYXRjaGVzOyByZXBsYWNlICZxdW90Ozxjb2RlPmRlZjwvY29kZT4mcXVvdDsKKyAqICAgICAgICAgd2l0aCAmcXVvdDs8Y29kZT54eTwvY29kZT4mcXVvdDsgYW5kIGJhY2sgdXAgdGhlIGN1cnNvcgorICogICAgICAgICB0byBiZWZvcmUgdGhlICc8Y29kZT55PC9jb2RlPicuPC90ZD4KKyAqICAgICA8L3RyPgorICogICAgIDx0cj4KKyAqICAgICAgICAgPHRkIHZhbGlnbj0idG9wIiBub3dyYXA+PGNvZGU+YWRlZmFiY3h8eXo8L2NvZGU+PC90ZD4KKyAqICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5BbHRob3VnaCAmcXVvdDs8Y29kZT54eXo8L2NvZGU+JnF1b3Q7IGlzCisgKiAgICAgICAgIHByZXNlbnQsIHJ1bGUgMiBkb2VzIG5vdCBtYXRjaCBiZWNhdXNlIHRoZSBjdXJzb3IgaXMKKyAqICAgICAgICAgYmVmb3JlIHRoZSAnPGNvZGU+eTwvY29kZT4nLCBub3QgYmVmb3JlIHRoZSAnPGNvZGU+eDwvY29kZT4nLgorICogICAgICAgICBSdWxlIDMgZG9lcyBtYXRjaC4gUmVwbGFjZSAmcXVvdDs8Y29kZT55ejwvY29kZT4mcXVvdDsKKyAqICAgICAgICAgd2l0aCAmcXVvdDs8Y29kZT5xPC9jb2RlPiZxdW90Oy48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyPgorICogICAgICAgICA8dGQgdmFsaWduPSJ0b3AiIG5vd3JhcD48Y29kZT5hZGVmYWJjeHF8PC9jb2RlPjwvdGQ+CisgKiAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIGN1cnNvciBpcyBhdCB0aGUgZW5kOworICogICAgICAgICB0cmFuc2xpdGVyYXRpb24gaXMgY29tcGxldGUuPC90ZD4KKyAqICAgICA8L3RyPgorICogPC90YWJsZT4KKyAqIAorICogPHA+VGhlIG9yZGVyIG9mIHJ1bGVzIGlzIHNpZ25pZmljYW50LiBJZiBtdWx0aXBsZSBydWxlcyBtYXkgbWF0Y2gKKyAqIGF0IHNvbWUgcG9pbnQsIHRoZSBmaXJzdCBtYXRjaGluZyBydWxlIGlzIGFwcGxpZWQuIDwvcD4KKyAqIAorICogPHA+Rm9yd2FyZCBhbmQgcmV2ZXJzZSBydWxlcyBtYXkgaGF2ZSBhbiBlbXB0eSBvdXRwdXQgc3RyaW5nLgorICogT3RoZXJ3aXNlLCBhbiBlbXB0eSBsZWZ0IG9yIHJpZ2h0IGhhbmQgc2lkZSBvZiBhbnkgc3RhdGVtZW50IGlzIGEKKyAqIHN5bnRheCBlcnJvci4gPC9wPgorICogCisgKiA8cD5TaW5nbGUgcXVvdGVzIGFyZSB1c2VkIHRvIHF1b3RlIGFueSBjaGFyYWN0ZXIgb3RoZXIgdGhhbiBhCisgKiBkaWdpdCBvciBsZXR0ZXIuIFRvIHNwZWNpZnkgYSBzaW5nbGUgcXVvdGUgaXRzZWxmLCBpbnNpZGUgb3IKKyAqIG91dHNpZGUgb2YgcXVvdGVzLCB1c2UgdHdvIHNpbmdsZSBxdW90ZXMgaW4gYSByb3cuIEZvciBleGFtcGxlLAorICogdGhlIHJ1bGUgJnF1b3Q7PGNvZGU+JyZndDsnJmd0O28nJ2Nsb2NrPC9jb2RlPiZxdW90OyBjaGFuZ2VzIHRoZQorICogc3RyaW5nICZxdW90Ozxjb2RlPiZndDs8L2NvZGU+JnF1b3Q7IHRvIHRoZSBzdHJpbmcgJnF1b3Q7PGNvZGU+bydjbG9jazwvY29kZT4mcXVvdDsuCisgKiA8L3A+CisgKiAKKyAqIDxwPjxiPk5vdGVzPC9iPiA8L3A+CisgKiAKKyAqIDxwPldoaWxlIGEgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IgaXMgYmVpbmcgYnVpbHQsIGl0IGNoZWNrcyB0aGF0CisgKiB0aGUgcnVsZXMgYXJlIGFkZGVkIGluIHByb3BlciBvcmRlci4gRm9yIGV4YW1wbGUsIGlmIHRoZSBydWxlCisgKiAmcXVvdDthJmd0O3gmcXVvdDsgaXMgZm9sbG93ZWQgYnkgdGhlIHJ1bGUgJnF1b3Q7YWImZ3Q7eSZxdW90OywKKyAqIHRoZW4gdGhlIHNlY29uZCBydWxlIHdpbGwgdGhyb3cgYW4gZXhjZXB0aW9uLiBUaGUgcmVhc29uIGlzIHRoYXQKKyAqIHRoZSBzZWNvbmQgcnVsZSBjYW4gbmV2ZXIgYmUgdHJpZ2dlcmVkLCBzaW5jZSB0aGUgZmlyc3QgcnVsZQorICogYWx3YXlzIG1hdGNoZXMgYW55dGhpbmcgaXQgbWF0Y2hlcy4gSW4gb3RoZXIgd29yZHMsIHRoZSBmaXJzdAorICogcnVsZSA8ZW0+bWFza3M8L2VtPiB0aGUgc2Vjb25kIHJ1bGUuIDwvcD4KKyAqIAorICogPHA+Q29weXJpZ2h0IChjKSBJQk0gQ29ycG9yYXRpb24gMTk5OS0yMDAwLiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvcD4KKyAqIAorICogQGF1dGhvciBBbGFuIExpdQorICogQHZlcnNpb24gJFJDU2ZpbGU6IFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLmphdmEsdiAkICRSZXZpc2lvbjogMS40MiAkICREYXRlOiAyMDAxLzAyLzIwIDE3OjU5OjQwICQKKyAqLworcHVibGljIGNsYXNzIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yIGV4dGVuZHMgVHJhbnNsaXRlcmF0b3IgeworCisgICAgcHJpdmF0ZSBEYXRhIGRhdGE7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09QWVJJR0hUID0KKyAgICAgICAgIlx1MDBBOSBJQk0gQ29ycG9yYXRpb24gMTk5OS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4iOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIG5ldyB0cmFuc2xpdGVyYXRvciBmcm9tIHRoZSBnaXZlbiBydWxlcy4KKyAgICAgKiBAcGFyYW0gcnVsZXMgcnVsZXMsIHNlcGFyYXRlZCBieSAnOycKKyAgICAgKiBAcGFyYW0gZGlyZWN0aW9uIGVpdGhlciBGT1JXQVJEIG9yIFJFVkVSU0UuCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgcnVsZXMgYXJlIG1hbGZvcm1lZAorICAgICAqIG9yIGRpcmVjdGlvbiBpcyBpbnZhbGlkLgorICAgICAqLworICAgIHB1YmxpYyBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvcihTdHJpbmcgSUQsIFN0cmluZyBydWxlcywgaW50IGRpcmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZUZpbHRlciBmaWx0ZXIpIHsKKyAgICAgICAgc3VwZXIoSUQsIGZpbHRlcik7CisgICAgICAgIGlmIChkaXJlY3Rpb24gIT0gRk9SV0FSRCAmJiBkaXJlY3Rpb24gIT0gUkVWRVJTRSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBkaXJlY3Rpb24iKTsKKyAgICAgICAgfQorICAgICAgICBkYXRhID0gcGFyc2UocnVsZXMsIGRpcmVjdGlvbik7CisgICAgICAgIHNldE1heGltdW1Db250ZXh0TGVuZ3RoKGRhdGEucnVsZVNldC5nZXRNYXhpbXVtQ29udGV4dExlbmd0aCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgbmV3IHRyYW5zbGl0ZXJhdG9yIGZyb20gdGhlIGdpdmVuIHJ1bGVzIGluIHRoZQorICAgICAqIDxjb2RlPkZPUldBUkQ8L2NvZGU+IGRpcmVjdGlvbi4KKyAgICAgKiBAcGFyYW0gcnVsZXMgcnVsZXMsIHNlcGFyYXRlZCBieSAnOycKKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBydWxlcyBhcmUgbWFsZm9ybWVkCisgICAgICogb3IgZGlyZWN0aW9uIGlzIGludmFsaWQuCisgICAgICovCisgICAgcHVibGljIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yKFN0cmluZyBJRCwgU3RyaW5nIHJ1bGVzKSB7CisgICAgICAgIHRoaXMoSUQsIHJ1bGVzLCBGT1JXQVJELCBudWxsKTsKKyAgICB9CisKKyAgICBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvcihTdHJpbmcgSUQsIERhdGEgZGF0YSwgVW5pY29kZUZpbHRlciBmaWx0ZXIpIHsKKyAgICAgICAgc3VwZXIoSUQsIGZpbHRlcik7CisgICAgICAgIHRoaXMuZGF0YSA9IGRhdGE7CisgICAgICAgIHNldE1heGltdW1Db250ZXh0TGVuZ3RoKGRhdGEucnVsZVNldC5nZXRNYXhpbXVtQ29udGV4dExlbmd0aCgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgRGF0YSBwYXJzZShTdHJpbmdbXSBydWxlcywgaW50IGRpcmVjdGlvbikgeworICAgICAgICByZXR1cm4gbmV3IFBhcnNlcihydWxlcywgZGlyZWN0aW9uKS5nZXREYXRhKCk7CisgICAgfQorCisgICAgc3RhdGljIERhdGEgcGFyc2UoU3RyaW5nIHJ1bGVzLCBpbnQgZGlyZWN0aW9uKSB7CisgICAgICAgIHJldHVybiBwYXJzZShuZXcgU3RyaW5nW10geyBydWxlcyB9LCBkaXJlY3Rpb24pOworICAgIH0KKworICAgIHN0YXRpYyBEYXRhIHBhcnNlKFJlc291cmNlUmVhZGVyIHJ1bGVzLCBpbnQgZGlyZWN0aW9uKSB7CisgICAgICAgIHJldHVybiBuZXcgUGFyc2VyKHJ1bGVzLCBkaXJlY3Rpb24pLmdldERhdGEoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbXBsZW1lbnRzIHtAbGluayBUcmFuc2xpdGVyYXRvciNoYW5kbGVUcmFuc2xpdGVyYXRlfS4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVUcmFuc2xpdGVyYXRlKFJlcGxhY2VhYmxlIHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbiBpbmRleCwgYm9vbGVhbiBpbmNyZW1lbnRhbCkgeworICAgICAgICAvKiBXZSBrZWVwIHN0YXJ0IGFuZCBsaW1pdCBmaXhlZCB0aGUgZW50aXJlIHRpbWUsCisgICAgICAgICAqIHJlbGF0aXZlIHRvIHRoZSB0ZXh0IC0tIGxpbWl0IG1heSBtb3ZlIG51bWVyaWNhbGx5IGlmIHRleHQgaXMKKyAgICAgICAgICogaW5zZXJ0ZWQgb3IgcmVtb3ZlZC4gIFRoZSBjdXJzb3IgbW92ZXMgZnJvbSBzdGFydCB0byBsaW1pdCwgd2l0aAorICAgICAgICAgKiByZXBsYWNlbWVudHMgaGFwcGVuaW5nIHVuZGVyIGl0LgorICAgICAgICAgKgorICAgICAgICAgKiBFeGFtcGxlOiBydWxlcyAxLiBhYj54fHkKKyAgICAgICAgICogICAgICAgICAgICAgICAgMi4geWM+egorICAgICAgICAgKgorICAgICAgICAgKiB8ZWFiY2QgICBzdGFydCAtIG5vIG1hdGNoLCBhZHZhbmNlIGN1cnNvcgorICAgICAgICAgKiBlfGFiY2QgICBtYXRjaCBydWxlIDEgLSBjaGFuZ2UgdGV4dCAmIGFkanVzdCBjdXJzb3IKKyAgICAgICAgICogZXh8eWNkICAgbWF0Y2ggcnVsZSAyIC0gY2hhbmdlIHRleHQgJiBhZGp1c3QgY3Vyc29yCisgICAgICAgICAqIGV4enxkICAgIG5vIG1hdGNoLCBhZHZhbmNlIGN1cnNvcgorICAgICAgICAgKiBleHpkfCAgICBkb25lCisgICAgICAgICAqLworCisgICAgICAgIC8qIEEgcnVsZSBsaWtlCisgICAgICAgICAqICAgYT5ifGEKKyAgICAgICAgICogY3JlYXRlcyBhbiBpbmZpbml0ZSBsb29wLiBUbyBwcmV2ZW50IHRoYXQsIHdlIHB1dCBhbiBhcmJpdHJhcnkKKyAgICAgICAgICogbGltaXQgb24gdGhlIG51bWJlciBvZiBpdGVyYXRpb25zIHRoYXQgd2UgdGFrZSwgb25lIHRoYXQgaXMKKyAgICAgICAgICogaGlnaCBlbm91Z2ggdGhhdCBhbnkgcmVhc29uYWJsZSBydWxlcyBhcmUgb2ssIGJ1dCBsb3cgZW5vdWdoIHRvCisgICAgICAgICAqIHByZXZlbnQgYSBzZXJ2ZXIgZnJvbSBoYW5naW5nLiAgVGhlIGxpbWl0IGlzIDE2IHRpbWVzIHRoZQorICAgICAgICAgKiBudW1iZXIgb2YgY2hhcmFjdGVycyBuLCB1bmxlc3MgbiBpcyBzbyBsYXJnZSB0aGF0IDE2biBleGNlZWRzIGEKKyAgICAgICAgICogdWludDMyX3QuCisgICAgICAgICAqLworICAgICAgICBpbnQgbG9vcENvdW50ID0gMDsKKyAgICAgICAgaW50IGxvb3BMaW1pdCA9IChpbmRleC5saW1pdCAtIGluZGV4LnN0YXJ0KSA8PCA0OworICAgICAgICBpZiAobG9vcExpbWl0IDwgMCkgeworICAgICAgICAgICAgbG9vcExpbWl0ID0gMHg3RkZGRkZGRjsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2xlYW4gcGFydGlhbFtdID0gbmV3IGJvb2xlYW5bMV07CisgICAgICAgIHBhcnRpYWxbMF0gPSBmYWxzZTsKKworICAgICAgICB3aGlsZSAoaW5kZXguc3RhcnQgPCBpbmRleC5saW1pdCAmJiBsb29wQ291bnQgPD0gbG9vcExpbWl0KSB7CisgICAgICAgICAgICBUcmFuc2xpdGVyYXRpb25SdWxlIHIgPSBpbmNyZW1lbnRhbCA/CisgICAgICAgICAgICAgICAgZGF0YS5ydWxlU2V0LmZpbmRJbmNyZW1lbnRhbE1hdGNoKHRleHQsIGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLCBwYXJ0aWFsLCBnZXRGaWx0ZXIoKSkgOgorICAgICAgICAgICAgICAgIGRhdGEucnVsZVNldC5maW5kTWF0Y2godGV4dCwgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLCBnZXRGaWx0ZXIoKSk7CisgICAgICAgICAgICAvKiBJZiB3ZSBtYXRjaCBhIHJ1bGUgdGhlbiBhcHBseSBpdCBieSByZXBsYWNpbmcgdGhlIGtleQorICAgICAgICAgICAgICogd2l0aCB0aGUgcnVsZSBvdXRwdXQgYW5kIHJlcG9zaXRpb25pbmcgdGhlIGN1cnNvcgorICAgICAgICAgICAgICogYXBwcm9wcmlhdGVseS4gIElmIHdlIGdldCBhIHBhcnRpYWwgbWF0Y2gsIHRoZW4gd2UKKyAgICAgICAgICAgICAqIGNhbid0IGRvIGFueXRoaW5nIHdpdGhvdXQgbW9yZSB0ZXh0OyByZXR1cm4gd2l0aCB0aGUKKyAgICAgICAgICAgICAqIGN1cnNvciBhdCB0aGUgY3VycmVudCBwb3NpdGlvbi4gIElmIHdlIGdldCBudWxsLCB0aGVuCisgICAgICAgICAgICAgKiB0aGVyZSBpcyBubyBtYXRjaCBhdCB0aGlzIHBvc2l0aW9uLCBhbmQgd2UgY2FuIGFkdmFuY2UKKyAgICAgICAgICAgICAqIHRoZSBjdXJzb3IuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAocGFydGlhbFswXSkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICArK2luZGV4LnN0YXJ0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gRGVsZWdhdGUgcmVwbGFjZW1lbnQgdG8gVHJhbnNsaXRlcmF0aW9uUnVsZSBvYmplY3QKKyAgICAgICAgICAgICAgICBpbnQgbGVuRGVsdGEgPSByLnJlcGxhY2UodGV4dCwgaW5kZXguc3RhcnQsIGRhdGEpOworICAgICAgICAgICAgICAgIGluZGV4LmxpbWl0ICs9IGxlbkRlbHRhOworICAgICAgICAgICAgICAgIGluZGV4LmNvbnRleHRMaW1pdCArPSBsZW5EZWx0YTsKKyAgICAgICAgICAgICAgICBpbmRleC5zdGFydCArPSByLmdldEN1cnNvclBvcygpOworICAgICAgICAgICAgICAgICsrbG9vcENvdW50OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisKKyAgICBzdGF0aWMgY2xhc3MgRGF0YSB7CisgICAgICAgIHB1YmxpYyBEYXRhKCkgeworICAgICAgICAgICAgdmFyaWFibGVOYW1lcyA9IG5ldyBIYXNodGFibGUoKTsKKyAgICAgICAgICAgIHJ1bGVTZXQgPSBuZXcgVHJhbnNsaXRlcmF0aW9uUnVsZVNldCgpOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJ1bGUgdGFibGUuICBNYXkgYmUgZW1wdHkuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgVHJhbnNsaXRlcmF0aW9uUnVsZVNldCBydWxlU2V0OworCisgICAgICAgIC8qKgorICAgICAgICAgKiBNYXAgdmFyaWFibGUgbmFtZSAoU3RyaW5nKSB0byB2YXJpYWJsZSAoY2hhcltdKS4gIEEgdmFyaWFibGUgbmFtZQorICAgICAgICAgKiBjb3JyZXNwb25kcyB0byB6ZXJvIG9yIG1vcmUgY2hhcmFjdGVycywgc3RvcmVkIGluIGEgY2hhcltdIGFycmF5IGluCisgICAgICAgICAqIHRoaXMgaGFzaC4gIE9uZSBvciBtb3JlIG9mIHRoZXNlIGNoYXJzIG1heSBhbHNvIGNvcnJlc3BvbmQgdG8gYQorICAgICAgICAgKiBVbmljb2RlU2V0LCBpbiB3aGljaCBjYXNlIHRoZSBjaGFyYWN0ZXIgaW4gdGhlIGNoYXJbXSBpbiB0aGlzIGhhc2ggaXMKKyAgICAgICAgICogYSBzdGFuZC1pbjogaXQgaXMgYW4gaW5kZXggZm9yIGEgc2Vjb25kYXJ5IGxvb2t1cCBpbgorICAgICAgICAgKiBkYXRhLnNldFZhcmlhYmxlcy4gIFRoZSBzdGFuZC1pbiBhbHNvIHJlcHJlc2VudHMgdGhlIFVuaWNvZGVTZXQgaW4KKyAgICAgICAgICogdGhlIHN0b3JlZCBydWxlcy4KKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgSGFzaHRhYmxlIHZhcmlhYmxlTmFtZXM7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIE1hcCBjYXRlZ29yeSB2YXJpYWJsZSAoQ2hhcmFjdGVyKSB0byBzZXQgKFVuaWNvZGVTZXQpLgorICAgICAgICAgKiBWYXJpYWJsZXMgdGhhdCBjb3JyZXNwb25kIHRvIGEgc2V0IG9mIGNoYXJhY3RlcnMgYXJlIG1hcHBlZAorICAgICAgICAgKiBmcm9tIHZhcmlhYmxlIG5hbWUgdG8gYSBzdGFuZC1pbiBjaGFyYWN0ZXIgaW4gZGF0YS52YXJpYWJsZU5hbWVzLgorICAgICAgICAgKiBUaGUgc3RhbmQtaW4gdGhlbiBzZXJ2ZXMgYXMgYSBrZXkgaW4gdGhpcyBoYXNoIHRvIGxvb2t1cCB0aGUKKyAgICAgICAgICogYWN0dWFsIFVuaWNvZGVTZXQgb2JqZWN0LiAgSW4gYWRkaXRpb24sIHRoZSBzdGFuZC1pbiBpcworICAgICAgICAgKiBzdG9yZWQgaW4gdGhlIHJ1bGUgdGV4dCB0byByZXByZXNlbnQgdGhlIHNldCBvZiBjaGFyYWN0ZXJzLgorICAgICAgICAgKiBzZXRWYXJpYWJsZXNbaV0gcmVwcmVzZW50cyBjaGFyYWN0ZXIgKHNldFZhcmlhYmxlc0Jhc2UgKyBpKS4KKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgVW5pY29kZVNldFtdIHNldFZhcmlhYmxlczsKKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIGNoYXJhY3RlciB0aGF0IHJlcHJlc2VudHMgc2V0VmFyaWFibGVzWzBdLiAgQ2hhcmFjdGVycworICAgICAgICAgKiBzZXRWYXJpYWJsZXNCYXNlIHRocm91Z2ggc2V0VmFyaWFibGVzQmFzZSArCisgICAgICAgICAqIHNldFZhcmlhYmxlcy5sZW5ndGggLSAxIHJlcHJlc2VudCBVbmljb2RlU2V0IG9iamVjdHMuCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIGNoYXIgc2V0VmFyaWFibGVzQmFzZTsKKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIGNoYXJhY3RlciB0aGF0IHJlcHJlc2VudHMgc2VnbWVudCAxLiAgQ2hhcmFjdGVycyBzZWdtZW50QmFzZQorICAgICAgICAgKiB0aHJvdWdoIHNlZ21lbnRCYXNlICsgOCByZXByZXNlbnQgc2VnbWVudHMgMSB0aHJvdWdoIDkuCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIGNoYXIgc2VnbWVudEJhc2U7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHVybiB0aGUgVW5pY29kZVNldCByZXByZXNlbnRlZCBieSB0aGUgZ2l2ZW4gY2hhcmFjdGVyLCBvcgorICAgICAgICAgKiBudWxsIGlmIG5vbmUuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgVW5pY29kZVNldCBsb29rdXBTZXQoY2hhciBjKSB7CisgICAgICAgICAgICBpbnQgaSA9IGMgLSBzZXRWYXJpYWJsZXNCYXNlOworICAgICAgICAgICAgcmV0dXJuIChpID49IDAgJiYgaSA8IHNldFZhcmlhYmxlcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgPyBzZXRWYXJpYWJsZXNbaV0gOiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHVybiB0aGUgemVyby1iYXNlZCBpbmRleCBvZiB0aGUgc2VnbWVudCByZXByZXNlbnRlZCBieSB0aGUgZ2l2ZW4KKyAgICAgICAgICogY2hhcmFjdGVyLCBvciAtMSBpZiBub25lLiAgUmVwZWF0OiBUaGlzIGlzIGEgemVyby1iYXNlZCByZXR1cm4gdmFsdWUsCisgICAgICAgICAqIDAuLjgsIGV2ZW4gdGhvdWdoIHRoZXNlIGFyZSBub3RhdGVkICIkMSIuLiIkOSIuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgaW50IGxvb2t1cFNlZ21lbnRSZWZlcmVuY2UoY2hhciBjKSB7CisgICAgICAgICAgICBpbnQgaSA9IGMgLSBzZWdtZW50QmFzZTsKKyAgICAgICAgICAgIHJldHVybiAoaSA+PSAwICYmIGkgPCA5KSA/IGkgOiAtMTsKKyAgICAgICAgfQorICAgIH0KKworCisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBQYXJzZXIgeworICAgICAgICAvKioKKyAgICAgICAgICogQ3VycmVudCBydWxlIGJlaW5nIHBhcnNlZC4KKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgU3RyaW5nIHJ1bGVzOworCisgICAgICAgIHByaXZhdGUgaW50IGRpcmVjdGlvbjsKKworICAgICAgICBwcml2YXRlIERhdGEgZGF0YTsKKworICAgICAgICAvKioKKyAgICAgICAgICogVGhpcyBjbGFzcyBpbXBsZW1lbnRzIHRoZSBTeW1ib2xUYWJsZSBpbnRlcmZhY2UuICBJdCBpcyB1c2VkCisgICAgICAgICAqIGR1cmluZyBwYXJzaW5nIHRvIGdpdmUgVW5pY29kZVNldCBhY2Nlc3MgdG8gdmFyaWFibGVzIHRoYXQKKyAgICAgICAgICogaGF2ZSBiZWVuIGRlZmluZWQgc28gZmFyLiAgTm90ZSB0aGF0IGl0IHVzZXMgc2V0VmFyaWFibGVzVmVjdG9yLAorICAgICAgICAgKiBfbm90XyBkYXRhLnNldFZhcmlhYmxlcy4KKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgY2xhc3MgUGFyc2VEYXRhIGltcGxlbWVudHMgU3ltYm9sVGFibGUgeworICAgICAgICAgICAgCisgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAqIEltcGxlbWVudCBTeW1ib2xUYWJsZSBBUEkuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHB1YmxpYyBjaGFyW10gbG9va3VwKFN0cmluZyBuYW1lKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChjaGFyW10pIGRhdGEudmFyaWFibGVOYW1lcy5nZXQobmFtZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogSW1wbGVtZW50IFN5bWJvbFRhYmxlIEFQSS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcHVibGljIFVuaWNvZGVTZXQgbG9va3VwU2V0KGNoYXIgY2gpIHsKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgd2UgY2Fubm90IHVzZSBkYXRhLmxvb2t1cFNldCgpIGJlY2F1c2UgdGhlCisgICAgICAgICAgICAgICAgLy8gc2V0IGFycmF5IGhhcyBub3QgYmVlbiBjb25zdHJ1Y3RlZCB5ZXQuCisgICAgICAgICAgICAgICAgaW50IGkgPSBjaCAtIGRhdGEuc2V0VmFyaWFibGVzQmFzZTsKKyAgICAgICAgICAgICAgICBpZiAoaSA+PSAwICYmIGkgPCBzZXRWYXJpYWJsZXNWZWN0b3Iuc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAoVW5pY29kZVNldCkgc2V0VmFyaWFibGVzVmVjdG9yLmVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogSW1wbGVtZW50IFN5bWJvbFRhYmxlIEFQSS4gIFBhcnNlIG91dCBhIHN5bWJvbCByZWZlcmVuY2UKKyAgICAgICAgICAgICAqIG5hbWUuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHB1YmxpYyBTdHJpbmcgcGFyc2VSZWZlcmVuY2UoU3RyaW5nIHRleHQsIFBhcnNlUG9zaXRpb24gcG9zLCBpbnQgbGltaXQpIHsKKyAgICAgICAgICAgICAgICBpbnQgc3RhcnQgPSBwb3MuZ2V0SW5kZXgoKTsKKyAgICAgICAgICAgICAgICBpbnQgaSA9IHN0YXJ0OworICAgICAgICAgICAgICAgIHdoaWxlIChpIDwgbGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhciBjID0gdGV4dC5jaGFyQXQoaSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgoaT09c3RhcnQgJiYgIUNoYXJhY3Rlci5pc1VuaWNvZGVJZGVudGlmaWVyU3RhcnQoYykpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAhQ2hhcmFjdGVyLmlzVW5pY29kZUlkZW50aWZpZXJQYXJ0KGMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICArK2k7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpID09IHN0YXJ0KSB7IC8vIE5vIHZhbGlkIG5hbWUgY2hhcnMKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHBvcy5zZXRJbmRleChpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGV4dC5zdWJzdHJpbmcoc3RhcnQsIGkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRlbXBvcmFyeSBzeW1ib2wgdGFibGUgdXNlZCBkdXJpbmcgcGFyc2luZy4KKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgUGFyc2VEYXRhIHBhcnNlRGF0YTsKKworICAgICAgICAvKioKKyAgICAgICAgICogVGVtcG9yYXJ5IHZlY3RvciBvZiBzZXQgdmFyaWFibGVzLiAgV2hlbiBwYXJzaW5nIGlzIGNvbXBsZXRlLCB0aGlzCisgICAgICAgICAqIGlzIGNvcGllZCBpbnRvIHRoZSBhcnJheSBkYXRhLnNldFZhcmlhYmxlcy4gIEFzIHdpdGggZGF0YS5zZXRWYXJpYWJsZXMsCisgICAgICAgICAqIGVsZW1lbnQgMCBjb3JyZXNwb25kcyB0byBjaGFyYWN0ZXIgZGF0YS5zZXRWYXJpYWJsZXNCYXNlLgorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSBWZWN0b3Igc2V0VmFyaWFibGVzVmVjdG9yOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgbmV4dCBhdmFpbGFibGUgc3RhbmQtaW4gZm9yIHZhcmlhYmxlcy4gIFRoaXMgc3RhcnRzIGF0IHNvbWUgcG9pbnQgaW4KKyAgICAgICAgICogdGhlIHByaXZhdGUgdXNlIGFyZWEgKGRpc2NvdmVyZWQgZHluYW1pY2FsbHkpIGFuZCBpbmNyZW1lbnRzIHVwIHRvd2FyZAorICAgICAgICAgKiA8Y29kZT52YXJpYWJsZUxpbWl0PC9jb2RlPi4gIEF0IGFueSBwb2ludCBkdXJpbmcgcGFyc2luZywgYXZhaWxhYmxlCisgICAgICAgICAqIHZhcmlhYmxlcyBhcmUgPGNvZGU+dmFyaWFibGVOZXh0Li52YXJpYWJsZUxpbWl0LTE8L2NvZGU+LgorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSBjaGFyIHZhcmlhYmxlTmV4dDsKKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIGxhc3QgYXZhaWxhYmxlIHN0YW5kLWluIGZvciB2YXJpYWJsZXMuICBUaGlzIGlzIGRpc2NvdmVyZWQKKyAgICAgICAgICogZHluYW1pY2FsbHkuICBBdCBhbnkgcG9pbnQgZHVyaW5nIHBhcnNpbmcsIGF2YWlsYWJsZSB2YXJpYWJsZXMgYXJlCisgICAgICAgICAqIDxjb2RlPnZhcmlhYmxlTmV4dC4udmFyaWFibGVMaW1pdC0xPC9jb2RlPi4gIER1cmluZyB2YXJpYWJsZSBkZWZpbml0aW9uCisgICAgICAgICAqIHdlIHVzZSB0aGUgc3BlY2lhbCB2YWx1ZSB2YXJpYWJsZUxpbWl0LTEgYXMgYSBwbGFjZWhvbGRlci4KKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgY2hhciB2YXJpYWJsZUxpbWl0OworCisgICAgICAgIC8qKgorICAgICAgICAgKiBXaGVuIHdlIGVuY291bnRlciBhbiB1bmRlZmluZWQgdmFyaWFibGUsIHdlIGRvIG5vdCBpbW1lZGlhdGVseSBzaWduYWwKKyAgICAgICAgICogYW4gZXJyb3IsIGluIGNhc2Ugd2UgYXJlIGRlZmluaW5nIHRoaXMgdmFyaWFibGUsIGUuZy4sICIkYSA9IFthLXpdOyIuCisgICAgICAgICAqIEluc3RlYWQsIHdlIHNhdmUgdGhlIG5hbWUgb2YgdGhlIHVuZGVmaW5lZCB2YXJpYWJsZSwgYW5kIHN1YnN0aXR1dGUKKyAgICAgICAgICogaW4gdGhlIHBsYWNlaG9sZGVyIGNoYXIgdmFyaWFibGVMaW1pdCAtIDEsIGFuZCBkZWNyZW1lbnQKKyAgICAgICAgICogdmFyaWFibGVMaW1pdC4KKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgU3RyaW5nIHVuZGVmaW5lZFZhcmlhYmxlTmFtZTsKKworICAgICAgICAvLyBPcGVyYXRvcnMKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBWQVJJQUJMRV9ERUZfT1AgICA9ICc9JzsKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBGT1JXQVJEX1JVTEVfT1AgICA9ICc+JzsKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBSRVZFUlNFX1JVTEVfT1AgICA9ICc8JzsKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBGV0RSRVZfUlVMRV9PUCAgICA9ICd+JzsgLy8gaW50ZXJuYWwgcmVwIG9mIDw+IG9wCisKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE9QRVJBVE9SUyA9ICI9PjwiOworCisgICAgICAgIC8vIE90aGVyIHNwZWNpYWwgY2hhcmFjdGVycworICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIFFVT1RFICAgICAgICAgICAgICAgPSAnXCcnOworICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIEVTQ0FQRSAgICAgICAgICAgICAgPSAnXFwnOworICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIEVORF9PRl9SVUxFICAgICAgICAgPSAnOyc7CisgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgUlVMRV9DT01NRU5UX0NIQVIgICA9ICcjJzsKKworICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIENPTlRFWFRfQU5URSAgICAgICAgPSAneyc7IC8vIGFudGV7a2V5CisgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgQ09OVEVYVF9QT1NUICAgICAgICA9ICd9JzsgLy8ga2V5fXBvc3QKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBTRVRfT1BFTiAgICAgICAgICAgID0gJ1snOworICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIFNFVF9DTE9TRSAgICAgICAgICAgPSAnXSc7CisgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgQ1VSU09SX1BPUyAgICAgICAgICA9ICd8JzsKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBDVVJTT1JfT0ZGU0VUICAgICAgID0gJ0AnOworICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIEFOQ0hPUl9TVEFSVCAgICAgICAgPSAnXic7CisKKyAgICAgICAgLy8gQnkgZGVmaW5pdGlvbiwgdGhlIEFOQ0hPUl9FTkQgc3BlY2lhbCBjaGFyYWN0ZXIgaXMgYQorICAgICAgICAvLyB0cmFpbGluZyBTeW1ib2xUYWJsZS5TWU1CT0xfUkVGIGNoYXJhY3Rlci4KKyAgICAgICAgLy8gcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBBTkNIT1JfRU5EICAgICAgID0gJyQnOworCisgICAgICAgIC8vIFNlZ21lbnRzIG9mIHRoZSBpbnB1dCBzdHJpbmcgYXJlIGRlbGltaXRlZCBieSAiKCIgYW5kICIpIi4gIEluIHRoZQorICAgICAgICAvLyBvdXRwdXQgc3RyaW5nIHRoZXNlIHNlZ21lbnRzIGFyZSByZWZlcmVuY2VkIGFzICIkMSIgdGhyb3VnaCAiJDkiLgorICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIFNFR01FTlRfT1BFTiAgICAgICAgPSAnKCc7CisgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgU0VHTUVOVF9DTE9TRSAgICAgICA9ICcpJzsKKworICAgICAgICAvKioKKyAgICAgICAgICogQSBwcml2YXRlIGFic3RyYWN0IGNsYXNzIHJlcHJlc2VudGluZyB0aGUgaW50ZXJmYWNlIHRvIHJ1bGUKKyAgICAgICAgICogc291cmNlIGNvZGUgdGhhdCBpcyBicm9rZW4gdXAgaW50byBsaW5lcy4gIEhhbmRsZXMgdGhlCisgICAgICAgICAqIGZvbGRpbmcgb2YgbGluZXMgdGVybWluYXRlZCBieSBhIGJhY2tzbGFzaC4gIFRoaXMgZm9sZGluZworICAgICAgICAgKiBpcyBsaW1pdGVkOyBpdCBkb2VzIG5vdCBhY2NvdW50IGZvciBjb21tZW50cywgcXVvdGVzLCBvcgorICAgICAgICAgKiBlc2NhcGVzLCBzbyBpdHMgdXNlIHRvIGJlIGxpbWl0ZWQuCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIGFic3RyYWN0IGNsYXNzIFJ1bGVCb2R5IHsKKworICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiBSZXRyaWV2ZSB0aGUgbmV4dCBsaW5lIG9mIHRoZSBzb3VyY2UsIG9yIHJldHVybiBudWxsIGlmCisgICAgICAgICAgICAgKiBub25lLiAgRm9sZHMgbGluZXMgdGVybWluYXRlZCBieSBhIGJhY2tzbGFzaCBpbnRvIHRoZQorICAgICAgICAgICAgICogbmV4dCBsaW5lLCB3aXRob3V0IHJlZ2FyZCBmb3IgY29tbWVudHMsIHF1b3Rlcywgb3IKKyAgICAgICAgICAgICAqIGVzY2FwZXMuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIFN0cmluZyBuZXh0TGluZSgpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcyA9IGhhbmRsZU5leHRMaW5lKCk7CisgICAgICAgICAgICAgICAgaWYgKHMgIT0gbnVsbCAmJgorICAgICAgICAgICAgICAgICAgICBzLmxlbmd0aCgpID4gMCAmJgorICAgICAgICAgICAgICAgICAgICBzLmNoYXJBdChzLmxlbmd0aCgpIC0gMSkgPT0gJ1xcJykgeworCisgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBiID0gbmV3IFN0cmluZ0J1ZmZlcihzKTsKKyAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgYi5kZWxldGVDaGFyQXQoYi5sZW5ndGgoKS0xKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBoYW5kbGVOZXh0TGluZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYi5hcHBlbmQocyk7CisgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKHMubGVuZ3RoKCkgPiAwICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY2hhckF0KHMubGVuZ3RoKCkgLSAxKSA9PSAnXFwnKTsKKworICAgICAgICAgICAgICAgICAgICBzID0gYi50b1N0cmluZygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gczsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiBSZXNldCB0byB0aGUgZmlyc3QgbGluZSBvZiB0aGUgc291cmNlLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBhYnN0cmFjdCB2b2lkIHJlc2V0KCk7CisKKyAgICAgICAgICAgIC8qKgorICAgICAgICAgICAgICogU3ViY2xhc3MgbWV0aG9kIHRvIHJldHVybiB0aGUgbmV4dCBsaW5lIG9mIHRoZSBzb3VyY2UuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGFic3RyYWN0IFN0cmluZyBoYW5kbGVOZXh0TGluZSgpOworICAgICAgICB9OworCisgICAgICAgIC8qKgorICAgICAgICAgKiBSdWxlQm9keSBzdWJjbGFzcyBmb3IgYSBTdHJpbmdbXSBhcnJheS4KKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgY2xhc3MgUnVsZUFycmF5IGV4dGVuZHMgUnVsZUJvZHkgeworICAgICAgICAgICAgU3RyaW5nW10gYXJyYXk7CisgICAgICAgICAgICBpbnQgaTsKKyAgICAgICAgICAgIHB1YmxpYyBSdWxlQXJyYXkoU3RyaW5nW10gYXJyYXkpIHsgdGhpcy5hcnJheSA9IGFycmF5OyBpID0gMDsgfQorICAgICAgICAgICAgcHVibGljIFN0cmluZyBoYW5kbGVOZXh0TGluZSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gKGkgPCBhcnJheS5sZW5ndGgpID8gYXJyYXlbaSsrXSA6IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdWJsaWMgdm9pZCByZXNldCgpIHsKKyAgICAgICAgICAgICAgICBpID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICAvKioKKyAgICAgICAgICogUnVsZUJvZHkgc3ViY2xhc3MgZm9yIGEgUmVzb3VyY2VSZWFkZXIuCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIGNsYXNzIFJ1bGVSZWFkZXIgZXh0ZW5kcyBSdWxlQm9keSB7CisgICAgICAgICAgICBSZXNvdXJjZVJlYWRlciByZWFkZXI7CisgICAgICAgICAgICBwdWJsaWMgUnVsZVJlYWRlcihSZXNvdXJjZVJlYWRlciByZWFkZXIpIHsgdGhpcy5yZWFkZXIgPSByZWFkZXI7IH0KKyAgICAgICAgICAgIHB1YmxpYyBTdHJpbmcgaGFuZGxlTmV4dExpbmUoKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkTGluZSgpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGphdmEuaW8uSU9FeGNlcHRpb24gZSkge30KKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJlc2V0KCkgeworICAgICAgICAgICAgICAgIHJlYWRlci5yZXNldCgpOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gcnVsZXMgbGlzdCBvZiBydWxlcywgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbiBjaGFyYWN0ZXJzCisgICAgICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZXJlIGlzIGEgc3ludGF4IGVycm9yIGluIHRoZQorICAgICAgICAgKiBydWxlcworICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIFBhcnNlcihTdHJpbmdbXSBydWxlQXJyYXksIGludCBkaXJlY3Rpb24pIHsKKyAgICAgICAgICAgIHRoaXMuZGlyZWN0aW9uID0gZGlyZWN0aW9uOworICAgICAgICAgICAgZGF0YSA9IG5ldyBEYXRhKCk7CisgICAgICAgICAgICBwYXJzZVJ1bGVzKG5ldyBSdWxlQXJyYXkocnVsZUFycmF5KSk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIHJ1bGVzIHJlc291cmNlIHJlYWRlciBmb3IgdGhlIHJ1bGVzCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgUGFyc2VyKFJlc291cmNlUmVhZGVyIHJ1bGVzLCBpbnQgZGlyZWN0aW9uKSB7CisgICAgICAgICAgICB0aGlzLmRpcmVjdGlvbiA9IGRpcmVjdGlvbjsKKyAgICAgICAgICAgIGRhdGEgPSBuZXcgRGF0YSgpOworICAgICAgICAgICAgcGFyc2VSdWxlcyhuZXcgUnVsZVJlYWRlcihydWxlcykpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIERhdGEgZ2V0RGF0YSgpIHsKKyAgICAgICAgICAgIHJldHVybiBkYXRhOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFBhcnNlIGFuIGFycmF5IG9mIHplcm8gb3IgbW9yZSBydWxlcy4gIFRoZSBzdHJpbmdzIGluIHRoZSBhcnJheSBhcmUKKyAgICAgICAgICogdHJlYXRlZCBhcyBpZiB0aGV5IHdlcmUgY29uY2F0ZW5hdGVkIHRvZ2V0aGVyLCB3aXRoIHJ1bGUgdGVybWluYXRvcnMKKyAgICAgICAgICogaW5zZXJ0ZWQgYmV0d2VlbiBhcnJheSBlbGVtZW50cyBpZiBub3QgcHJlc2VudCBhbHJlYWR5LgorICAgICAgICAgKgorICAgICAgICAgKiBBbnkgcHJldmlvdXMgcnVsZXMgYXJlIGRpc2NhcmRlZC4gIFR5cGljYWxseSB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgZXhhY3RseQorICAgICAgICAgKiBvbmNlLCBkdXJpbmcgY29uc3RydWN0aW9uLgorICAgICAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGVyZSBpcyBhIHN5bnRheCBlcnJvciBpbiB0aGUKKyAgICAgICAgICogcnVsZXMKKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgdm9pZCBwYXJzZVJ1bGVzKFJ1bGVCb2R5IHJ1bGVBcnJheSkgeworICAgICAgICAgICAgZGV0ZXJtaW5lVmFyaWFibGVSYW5nZShydWxlQXJyYXkpOworICAgICAgICAgICAgc2V0VmFyaWFibGVzVmVjdG9yID0gbmV3IFZlY3RvcigpOworICAgICAgICAgICAgcGFyc2VEYXRhID0gbmV3IFBhcnNlRGF0YSgpOworCisgICAgICAgICAgICBTdHJpbmdCdWZmZXIgZXJyb3JzID0gbnVsbDsKKyAgICAgICAgICAgIGludCBlcnJvckNvdW50ID0gMDsKKworICAgICAgICAgICAgcnVsZUFycmF5LnJlc2V0KCk7CisgICAgICAgIG1haW46CisgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHJ1bGUgPSBydWxlQXJyYXkubmV4dExpbmUoKTsKKyAgICAgICAgICAgICAgICBpZiAocnVsZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpbnQgcG9zID0gMDsKKyAgICAgICAgICAgICAgICBpbnQgbGltaXQgPSBydWxlLmxlbmd0aCgpOworICAgICAgICAgICAgICAgIHdoaWxlIChwb3MgPCBsaW1pdCkgeworICAgICAgICAgICAgICAgICAgICBjaGFyIGMgPSBydWxlLmNoYXJBdChwb3MrKyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChDaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKGMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgbGVhZGluZyB3aGl0ZXNwYWNlLiAgTm90ZSB0aGF0IHRoaXMgaXMgbm90CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBVbmljb2RlIHNwYWNlcywgYnV0IEphdmEgc3BhY2VzIC0tIGEgc3Vic2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVwcmVzZW50aW5nIHdoaXRlc3BhY2UgbGlrZWx5IHRvIGJlIHNlZW4gaW4gY29kZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIFNraXAgbGluZXMgc3RhcnRpbmcgd2l0aCB0aGUgY29tbWVudCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gUlVMRV9DT01NRU5UX0NIQVIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvcyA9IHJ1bGUuaW5kZXhPZigiXG4iLCBwb3MpICsgMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3MgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBObyAiXG4iIGZvdW5kOyByZXN0IG9mIHJ1bGUgaXMgYSBjb21tbmV0CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gRWl0aGVyIGZhbGwgb3V0IG9yIHJlc3RhcnQgd2l0aCBuZXh0IGxpbmUKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBPZnRlbiBhIHJ1bGUgZmlsZSBjb250YWlucyBtdWx0aXBsZSBlcnJvcnMuICBJdCdzCisgICAgICAgICAgICAgICAgICAgIC8vIGNvbnZlbmllbnQgdG8gdGhlIHJ1bGUgYXV0aG9yIGlmIHRoZXNlIGFyZSBhbGwgcmVwb3J0ZWQKKyAgICAgICAgICAgICAgICAgICAgLy8gYXQgb25jZS4gIFdlIGtlZXAgcGFyc2luZyBydWxlcyBldmVuIGFmdGVyIGEgZmFpbHVyZSwgdXAKKyAgICAgICAgICAgICAgICAgICAgLy8gdG8gYSBzcGVjaWZpZWQgbGltaXQsIGFuZCByZXBvcnQgYWxsIGVycm9ycyBhdCBvbmNlLgorICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UndmUgZm91bmQgdGhlIHN0YXJ0IG9mIGEgcnVsZS4gIGMgaXMgaXRzIGZpcnN0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXIsIGFuZCBwb3MgcG9pbnRzIHBhc3QgYy4gIExleGljYWxseSBwYXJzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJ1bGUgaW50byBjb21wb25lbnQgcGllY2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gcGFyc2VSdWxlKHJ1bGUsIC0tcG9zLCBsaW1pdCk7ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvckNvdW50ID09IDMwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgiXG5Nb3JlIHRoYW4gMzAgZXJyb3JzOyBmdXJ0aGVyIG1lc3NhZ2VzIHNxdWVsY2hlZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG1haW47CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JzID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBuZXcgU3RyaW5nQnVmZmVyKGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgiXG4iICsgZS5nZXRNZXNzYWdlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgKytlcnJvckNvdW50OworICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gcnVsZUVuZChydWxlLCBwb3MsIGxpbWl0KSArIDE7IC8vICsxIGFkdmFuY2VzIHBhc3QgJzsnCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIENvbnZlcnQgdGhlIHNldCB2ZWN0b3IgdG8gYW4gYXJyYXkKKyAgICAgICAgICAgIGRhdGEuc2V0VmFyaWFibGVzID0gbmV3IFVuaWNvZGVTZXRbc2V0VmFyaWFibGVzVmVjdG9yLnNpemUoKV07CisgICAgICAgICAgICBzZXRWYXJpYWJsZXNWZWN0b3IuY29weUludG8oZGF0YS5zZXRWYXJpYWJsZXMpOworICAgICAgICAgICAgc2V0VmFyaWFibGVzVmVjdG9yID0gbnVsbDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gSW5kZXggdGhlIHJ1bGVzCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGRhdGEucnVsZVNldC5mcmVlemUoZGF0YSk7CisgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGlmIChlcnJvcnMgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBlcnJvcnMgPSBuZXcgU3RyaW5nQnVmZmVyKGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCJcbiIpLmFwcGVuZChlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZXJyb3JzICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKGVycm9ycy50b1N0cmluZygpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBBIGNsYXNzIHJlcHJlc2VudGluZyBvbmUgc2lkZSBvZiBhIHJ1bGUuICBUaGlzIGNsYXNzIGtub3dzIGhvdyB0bworICAgICAgICAgKiBwYXJzZSBoYWxmIG9mIGEgcnVsZS4gIEl0IGlzIHRpZ2h0bHkgY291cGxlZCB0byB0aGUgbWV0aG9kCisgICAgICAgICAqIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLlBhcnNlci5wYXJzZVJ1bGUoKS4KKyAgICAgICAgICovCisgICAgICAgIHN0YXRpYyBjbGFzcyBSdWxlSGFsZiB7CisKKyAgICAgICAgICAgIHB1YmxpYyBTdHJpbmcgdGV4dDsKKworICAgICAgICAgICAgcHVibGljIGludCBjdXJzb3IgPSAtMTsgLy8gcG9zaXRpb24gb2YgY3Vyc29yIGluIHRleHQKKyAgICAgICAgICAgIHB1YmxpYyBpbnQgYW50ZSA9IC0xOyAgIC8vIHBvc2l0aW9uIG9mIGFudGUgY29udGV4dCBtYXJrZXIgJ3snIGluIHRleHQKKyAgICAgICAgICAgIHB1YmxpYyBpbnQgcG9zdCA9IC0xOyAgIC8vIHBvc2l0aW9uIG9mIHBvc3QgY29udGV4dCBtYXJrZXIgJ30nIGluIHRleHQKKworICAgICAgICAgICAgLy8gUmVjb3JkIHRoZSBwb3NpdGlvbiBvZiB0aGUgc2VnbWVudCBzdWJzdHJpbmdzIGFuZCByZWZlcmVuY2VzLiAgQQorICAgICAgICAgICAgLy8gZ2l2ZW4gc2lkZSBzaG91bGQgaGF2ZSBzZWdtZW50cyBvciBzZWdtZW50IHJlZmVyZW5jZXMsIGJ1dCBub3QKKyAgICAgICAgICAgIC8vIGJvdGguCisgICAgICAgICAgICBwdWJsaWMgVmVjdG9yIHNlZ21lbnRzID0gbnVsbDsgLy8gcmVmIHN1YnN0cmluZyBzdGFydCxsaW1pdHMKKyAgICAgICAgICAgIHB1YmxpYyBpbnQgbWF4UmVmID0gLTE7IC8vIGluZGV4IG9mIGxhcmdlc3QgcmVmICgxLi45KQorCisgICAgICAgICAgICAvLyBSZWNvcmQgdGhlIG9mZnNldCB0byB0aGUgY3Vyc29yIGVpdGhlciB0byB0aGUgbGVmdCBvciB0byB0aGUKKyAgICAgICAgICAgIC8vIHJpZ2h0IG9mIHRoZSBrZXkuICBUaGlzIGlzIGluZGljYXRlZCBieSBjaGFyYWN0ZXJzIG9uIHRoZSBvdXRwdXQKKyAgICAgICAgICAgIC8vIHNpZGUgdGhhdCBhbGxvdyB0aGUgY3Vyc29yIHRvIGJlIHBvc2l0aW9uZWQgYXJiaXRyYXJpbHkgd2l0aGluCisgICAgICAgICAgICAvLyB0aGUgbWF0Y2hpbmcgdGV4dC4gIEZvciBleGFtcGxlLCBhYmN7ZGVmfSA+IHwgQEBAIHh5ejsgY2hhbmdlcworICAgICAgICAgICAgLy8gZGVmIHRvIHh5eiBhbmQgbW92ZXMgdGhlIGN1cnNvciB0byBiZWZvcmUgYWJjLiAgT2Zmc2V0IGNoYXJhY3RlcnMKKyAgICAgICAgICAgIC8vIG11c3QgYmUgYXQgdGhlIHN0YXJ0IG9yIGVuZCwgYW5kIHRoZXkgY2Fubm90IG1vdmUgdGhlIGN1cnNvciBwYXN0CisgICAgICAgICAgICAvLyB0aGUgYW50ZS0gb3IgcG9zdGNvbnRleHQgdGV4dC4gIFBsYWNlaG9sZGVycyBhcmUgb25seSB2YWxpZCBpbgorICAgICAgICAgICAgLy8gb3V0cHV0IHRleHQuCisgICAgICAgICAgICBwdWJsaWMgaW50IGN1cnNvck9mZnNldCA9IDA7IC8vIG9ubHkgbm9uemVybyBvbiBvdXRwdXQgc2lkZQorCisgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBhbmNob3JTdGFydCA9IGZhbHNlOworICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gYW5jaG9yRW5kICAgPSBmYWxzZTsKKworICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiBQYXJzZSBvbmUgc2lkZSBvZiBhIHJ1bGUsIHN0b3BwaW5nIGF0IGVpdGhlciB0aGUgbGltaXQsCisgICAgICAgICAgICAgKiB0aGUgRU5EX09GX1JVTEUgY2hhcmFjdGVyLCBvciBhbiBvcGVyYXRvci4gIFJldHVybgorICAgICAgICAgICAgICogdGhlIHBvcyBvZiB0aGUgdGVybWluYXRpbmcgY2hhcmFjdGVyIChvciBsaW1pdCkuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHB1YmxpYyBpbnQgcGFyc2UoU3RyaW5nIHJ1bGUsIGludCBwb3MsIGludCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IuUGFyc2VyIHBhcnNlcikgeworICAgICAgICAgICAgICAgIGludCBzdGFydCA9IHBvczsKKyAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgICAgICAgIFBhcnNlUG9zaXRpb24gcHAgPSBudWxsOworICAgICAgICAgICAgICAgIGludCBjdXJzb3JPZmZzZXRQb3MgPSAwOyAvLyBQb3NpdGlvbiBvZiBmaXJzdCBDVVJTT1JfT0ZGU0VUIG9uIF9yaWdodF8KKworICAgICAgICAgICAgbWFpbjoKKyAgICAgICAgICAgICAgICB3aGlsZSAocG9zIDwgbGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhciBjID0gcnVsZS5jaGFyQXQocG9zKyspOworICAgICAgICAgICAgICAgICAgICBpZiAoQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZShjKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlIHdoaXRlc3BhY2UuICBOb3RlIHRoYXQgdGhpcyBpcyBub3QgVW5pY29kZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BhY2VzLCBidXQgSmF2YSBzcGFjZXMgLS0gYSBzdWJzZXQsIHJlcHJlc2VudGluZworICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2hpdGVzcGFjZSBsaWtlbHkgdG8gYmUgc2VlbiBpbiBjb2RlLgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKE9QRVJBVE9SUy5pbmRleE9mKGMpID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC0tcG9zOyAvLyBCYWNrdXAgdG8gcG9pbnQgdG8gb3BlcmF0b3IKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIG1haW47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGFuY2hvckVuZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGV4dCBhZnRlciBhIHByZXN1bWVkIGVuZCBhbmNob3IgaXMgYSBzeW50YXggZXJyCisgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhFcnJvcigiU3ludGF4IGVycm9yOiAkIiwgcnVsZSwgc3RhcnQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSBlc2NhcGVzCisgICAgICAgICAgICAgICAgICAgIGlmIChjID09IEVTQ0FQRSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcyA9PSBsaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheEVycm9yKCJUcmFpbGluZyBiYWNrc2xhc2giLCBydWxlLCBzdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gcnVsZS5jaGFyQXQocG9zKyspOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ3UnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChwb3MrNCkgPiBsaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhFcnJvcigiSW52YWxpZCBcXHUgZXNjYXBlIiwgcnVsZSwgc3RhcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gJ1x1MDAwMCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaj1wb3MrNDsgcG9zPGo7KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaWdpdCA9IENoYXJhY3Rlci5kaWdpdChydWxlLmNoYXJBdChwb3MrKyksIDE2KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpZ2l0PDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheEVycm9yKCJJbnZhbGlkIFxcdSBlc2NhcGUiLCBydWxlLCBzdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyA9IChjaGFyKSAoKGMgPDwgNCkgfCBkaWdpdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoYyk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgcXVvdGVkIG1hdHRlcgorICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSBRVU9URSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlxID0gcnVsZS5pbmRleE9mKFFVT1RFLCBwb3MpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlxID09IHBvcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoYyk7IC8vIFBhcnNlIFsnJ10gb3V0c2lkZSBxdW90ZXMgYXMgWyddCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytwb3M7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRoaXMgbG9vcCBwaWNrcyB1cCBhIHNlZ21lbnQgb2YgcXVvdGVkIHRleHQgb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZm9ybSAnYWFhYScgZWFjaCB0aW1lIHRocm91Z2guICBJZiB0aGlzIHNlZ21lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBoYXNuJ3QgcmVhbGx5IGVuZGVkICgnYWFhYScnYmJiYicpIHRoZW4gaXQga2VlcHMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBsb29waW5nLCBlYWNoIHRpbWUgYWRkaW5nIG9uIGEgbmV3IHNlZ21lbnQuICBXaGVuIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcmVhY2hlcyB0aGUgZmluYWwgcXVvdGUgaXQgYnJlYWtzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlxIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4RXJyb3IoIlVudGVybWluYXRlZCBxdW90ZSIsIHJ1bGUsIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKHJ1bGUuc3Vic3RyaW5nKHBvcywgaXEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gaXErMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBvcyA8IGxpbWl0ICYmIHJ1bGUuY2hhckF0KHBvcykgPT0gUVVPVEUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFyc2UgWycnXSBpbnNpZGUgcXVvdGVzIGFzIFsnXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXEgPSBydWxlLmluZGV4T2YoUVVPVEUsIHBvcysxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ29udGludWUgbG9vcGluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBBTkNIT1JfU1RBUlQ6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnVmLmxlbmd0aCgpID09IDAgJiYgIWFuY2hvclN0YXJ0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5jaG9yU3RhcnQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhFcnJvcigiTWlzcGxhY2VkIGFuY2hvciBzdGFydCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZSwgc3RhcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU0VHTUVOVF9PUEVOOgorICAgICAgICAgICAgICAgICAgICBjYXNlIFNFR01FTlRfQ0xPU0U6CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgc2VnbWVudCBkZWZpbml0aW9ucyAiKCIgYW5kICIpIgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFyc2UgIigiLCAiKSIKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWdtZW50cyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VnbWVudHMgPSBuZXcgVmVjdG9yKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGMgPT0gU0VHTUVOVF9PUEVOKSAhPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWdtZW50cy5zaXplKCkgJSAyID09IDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ludGF4RXJyb3IoIk1pc21hdGNoZWQgc2VnbWVudCBkZWxpbWl0ZXJzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlLCBzdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBzZWdtZW50cy5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKGJ1Zi5sZW5ndGgoKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgRU5EX09GX1JVTEU6CisgICAgICAgICAgICAgICAgICAgICAgICAtLXBvczsgLy8gQmFja3VwIHRvIHBvaW50IHRvIEVORF9PRl9SVUxFCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBtYWluOworICAgICAgICAgICAgICAgICAgICBjYXNlIFN5bWJvbFRhYmxlLlNZTUJPTF9SRUY6CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgdmFyaWFibGUgcmVmZXJlbmNlcyBhbmQgc2VnbWVudCByZWZlcmVuY2VzICIkMSIgLi4gIiQ5IgorICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgdmFyaWFibGUgcmVmZXJlbmNlIG11c3QgYmUgZm9sbG93ZWQgaW1tZWRpYXRlbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBieSBhIFVuaWNvZGUgaWRlbnRpZmllciBzdGFydCBhbmQgemVybyBvciBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVW5pY29kZSBpZGVudGlmaWVyIHBhcnQgY2hhcmFjdGVycywgb3IgYnkgYSBkaWdpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEuLjkgaWYgaXQgaXMgYSBzZWdtZW50IHJlZmVyZW5jZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9zID09IGxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgdmFyaWFibGUgcmVmIGNoYXJhY3RlciBhdCB0aGUgZW5kIGFjdHMgYXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW4gYW5jaG9yIHRvIHRoZSBjb250ZXh0IGxpbWl0LCBhcyBpbiBwZXJsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JFbmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUGFyc2UgIiQxIiAiJDIiIC4uICIkOSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gcnVsZS5jaGFyQXQocG9zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgciA9IENoYXJhY3Rlci5kaWdpdChjLCAxMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPj0gMSAmJiByIDw9IDkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPiBtYXhSZWYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heFJlZiA9IHI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgoY2hhcikgKHBhcnNlci5kYXRhLnNlZ21lbnRCYXNlICsgciAtIDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytwb3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBwID09IG51bGwpIHsgLy8gTGF6eSBjcmVhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwID0gbmV3IFBhcnNlUG9zaXRpb24oMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHAuc2V0SW5kZXgocG9zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG5hbWUgPSBwYXJzZXIucGFyc2VEYXRhLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VSZWZlcmVuY2UocnVsZSwgcHAsIGxpbWl0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5hbWUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBtZWFucyB0aGUgJyQnIHdhcyBub3QgZm9sbG93ZWQgYnkgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmFsaWQgbmFtZS4gIFRyeSB0byBpbnRlcnByZXQgaXQgYXMgYW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGVuZCBhbmNob3IgdGhlbi4gIElmIHRoaXMgYWxzbyBkb2Vzbid0IHdvcmsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIChpZiB3ZSBzZWUgYSBmb2xsb3dpbmcgY2hhcmFjdGVyKSB0aGVuIHNpZ25hbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW4gZXJyb3IuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3JFbmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gcHAuZ2V0SW5kZXgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHZhcmlhYmxlIGRlZmluaXRpb24gc3RhdGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGVuIHRoZSBMSFMgdmFyaWFibGUgd2lsbCBiZSB1bmRlZmluZWQuICBJbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IGNhc2UgYXBwZW5kVmFyaWFibGVEZWYoKSB3aWxsIGFwcGVuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lhbCBwbGFjZWhvbGRlciBjaGFyIHZhcmlhYmxlTGltaXQtMS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLmFwcGVuZFZhcmlhYmxlRGVmKG5hbWUsIGJ1Zik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQ09OVEVYVF9BTlRFOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFudGUgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheEVycm9yKCJNdWx0aXBsZSBhbnRlIGNvbnRleHRzIiwgcnVsZSwgc3RhcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYW50ZSA9IGJ1Zi5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIENPTlRFWFRfUE9TVDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwb3N0ID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhFcnJvcigiTXVsdGlwbGUgcG9zdCBjb250ZXh0cyIsIHJ1bGUsIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc3QgPSBidWYubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBTRVRfT1BFTjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwcCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHAgPSBuZXcgUGFyc2VQb3NpdGlvbigwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBwLnNldEluZGV4KHBvcy0xKTsgLy8gQmFja3VwIHRvIG9wZW5pbmcgJ1snCisgICAgICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKHBhcnNlci5wYXJzZVNldChydWxlLCBwcCkpOworICAgICAgICAgICAgICAgICAgICAgICAgcG9zID0gcHAuZ2V0SW5kZXgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIENVUlNPUl9QT1M6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3Vyc29yID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhFcnJvcigiTXVsdGlwbGUgY3Vyc29ycyIsIHJ1bGUsIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvciA9IGJ1Zi5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIENVUlNPUl9PRkZTRVQ6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3Vyc29yT2Zmc2V0IDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWYubGVuZ3RoKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheEVycm9yKCJNaXNwbGFjZWQgIiArIGMsIHJ1bGUsIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1jdXJzb3JPZmZzZXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnNvck9mZnNldCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYnVmLmxlbmd0aCgpICE9IGN1cnNvck9mZnNldFBvcyB8fCBjdXJzb3IgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhFcnJvcigiTWlzcGxhY2VkICIgKyBjLCBydWxlLCBzdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrY3Vyc29yT2Zmc2V0OworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3Vyc29yID09IDAgJiYgYnVmLmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yT2Zmc2V0ID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJzb3IgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvck9mZnNldFBvcyA9IGJ1Zi5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yT2Zmc2V0ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW50YXhFcnJvcigiTWlzcGxhY2VkICIgKyBjLCBydWxlLCBzdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIC8vIGNhc2UgU0VUX0NMT1NFOgorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGlzYWxsb3cgdW5xdW90ZWQgY2hhcmFjdGVycyBvdGhlciB0aGFuIFswLTlBLVphLXpdCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbiB0aGUgcHJpbnRhYmxlIEFTQ0lJIHJhbmdlLiAgVGhlc2UgY2hhcmFjdGVycyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlc2VydmVkIGZvciBwb3NzaWJsZSBmdXR1cmUgdXNlLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPj0gMHgwMDIxICYmIGMgPD0gMHgwMDdFICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgISgoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYyA+PSAnQScgJiYgYyA8PSAnWicpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYyA+PSAnYScgJiYgYyA8PSAneicpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bnRheEVycm9yKCJVbnF1b3RlZCAiICsgYywgcnVsZSwgc3RhcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGN1cnNvck9mZnNldCA+IDAgJiYgY3Vyc29yICE9IGN1cnNvck9mZnNldFBvcykgeworICAgICAgICAgICAgICAgICAgICBzeW50YXhFcnJvcigiTWlzcGxhY2VkICIgKyBDVVJTT1JfUE9TLCBydWxlLCBzdGFydCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRleHQgPSBidWYudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcG9zOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAqIFJlbW92ZSBjb250ZXh0LgorICAgICAgICAgICAgICovCisgICAgICAgICAgICB2b2lkIHJlbW92ZUNvbnRleHQoKSB7CisgICAgICAgICAgICAgICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKGFudGUgPCAwID8gMCA6IGFudGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc3QgPCAwID8gdGV4dC5sZW5ndGgoKSA6IHBvc3QpOworICAgICAgICAgICAgICAgIGFudGUgPSBwb3N0ID0gLTE7CisgICAgICAgICAgICAgICAgYW5jaG9yU3RhcnQgPSBhbmNob3JFbmQgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiBDcmVhdGUgYW5kIHJldHVybiBhbiBpbnRbXSBhcnJheSBvZiBzZWdtZW50cy4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaW50W10gZ2V0U2VnbWVudHMoKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlZ21lbnRzID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGludFtdIHJlc3VsdCA9IG5ldyBpbnRbc2VnbWVudHMuc2l6ZSgpXTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8c2VnbWVudHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2ldID0gKChOdW1iZXIpc2VnbWVudHMuZWxlbWVudEF0KGkpKS5pbnRWYWx1ZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIE1BSU4gUEFSU0VSLiAgUGFyc2UgdGhlIG5leHQgcnVsZSBpbiB0aGUgZ2l2ZW4gcnVsZSBzdHJpbmcsIHN0YXJ0aW5nCisgICAgICAgICAqIGF0IHBvcy4gIFJldHVybiB0aGUgaW5kZXggYWZ0ZXIgdGhlIGxhc3QgY2hhcmFjdGVyIHBhcnNlZC4gIERvIG5vdAorICAgICAgICAgKiBwYXJzZSBjaGFyYWN0ZXJzIGF0IG9yIGFmdGVyIGxpbWl0LgorICAgICAgICAgKgorICAgICAgICAgKiBJbXBvcnRhbnQ6ICBUaGUgY2hhcmFjdGVyIGF0IHBvcyBtdXN0IGJlIGEgbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVyCisgICAgICAgICAqIHRoYXQgaXMgbm90IHRoZSBjb21tZW50IGNoYXJhY3Rlci4KKyAgICAgICAgICoKKyAgICAgICAgICogVGhpcyBtZXRob2QgaGFuZGxlcyBxdW90aW5nLCBlc2NhcGluZywgYW5kIHdoaXRlc3BhY2UgcmVtb3ZhbC4gIEl0CisgICAgICAgICAqIHBhcnNlcyB0aGUgZW5kLW9mLXJ1bGUgY2hhcmFjdGVyLiAgSXQgcmVjb2duaXplcyBjb250ZXh0IGFuZCBjdXJzb3IKKyAgICAgICAgICogaW5kaWNhdG9ycy4gIE9uY2UgaXQgZG9lcyBhIGxleGljYWwgYnJlYWtkb3duIG9mIHRoZSBydWxlIGF0IHBvcywgaXQKKyAgICAgICAgICogY3JlYXRlcyBhIHJ1bGUgb2JqZWN0IGFuZCBhZGRzIGl0IHRvIG91ciBydWxlIGxpc3QuCisgICAgICAgICAqCisgICAgICAgICAqIFRoaXMgbWV0aG9kIGlzIHRpZ2h0bHkgY291cGxlZCB0byB0aGUgaW5uZXIgY2xhc3MgUnVsZUhhbGYuCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIGludCBwYXJzZVJ1bGUoU3RyaW5nIHJ1bGUsIGludCBwb3MsIGludCBsaW1pdCkgeworICAgICAgICAgICAgLy8gTG9jYXRlIHRoZSBsZWZ0IHNpZGUsIG9wZXJhdG9yLCBhbmQgcmlnaHQgc2lkZQorICAgICAgICAgICAgaW50IHN0YXJ0ID0gcG9zOworICAgICAgICAgICAgY2hhciBvcGVyYXRvciA9IDA7CisKKyAgICAgICAgICAgIFJ1bGVIYWxmIGxlZnQgID0gbmV3IFJ1bGVIYWxmKCk7CisgICAgICAgICAgICBSdWxlSGFsZiByaWdodCA9IG5ldyBSdWxlSGFsZigpOworCisgICAgICAgICAgICB1bmRlZmluZWRWYXJpYWJsZU5hbWUgPSBudWxsOworICAgICAgICAgICAgcG9zID0gbGVmdC5wYXJzZShydWxlLCBwb3MsIGxpbWl0LCB0aGlzKTsKKworICAgICAgICAgICAgaWYgKHBvcyA9PSBsaW1pdCB8fAorICAgICAgICAgICAgICAgIE9QRVJBVE9SUy5pbmRleE9mKG9wZXJhdG9yID0gcnVsZS5jaGFyQXQocG9zKyspKSA8IDApIHsKKyAgICAgICAgICAgICAgICBzeW50YXhFcnJvcigiTm8gb3BlcmF0b3IiLCBydWxlLCBzdGFydCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEZvdW5kIGFuIG9wZXJhdG9yIGNoYXIuICBDaGVjayBmb3IgZm9yd2FyZC1yZXZlcnNlIG9wZXJhdG9yLgorICAgICAgICAgICAgaWYgKG9wZXJhdG9yID09IFJFVkVSU0VfUlVMRV9PUCAmJgorICAgICAgICAgICAgICAgIChwb3MgPCBsaW1pdCAmJiBydWxlLmNoYXJBdChwb3MpID09IEZPUldBUkRfUlVMRV9PUCkpIHsKKyAgICAgICAgICAgICAgICArK3BvczsKKyAgICAgICAgICAgICAgICBvcGVyYXRvciA9IEZXRFJFVl9SVUxFX09QOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwb3MgPSByaWdodC5wYXJzZShydWxlLCBwb3MsIGxpbWl0LCB0aGlzKTsKKworICAgICAgICAgICAgaWYgKHBvcyA8IGxpbWl0KSB7CisgICAgICAgICAgICAgICAgaWYgKHJ1bGUuY2hhckF0KHBvcykgPT0gRU5EX09GX1JVTEUpIHsKKyAgICAgICAgICAgICAgICAgICAgKytwb3M7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gUnVsZUhhbGYgcGFyc2VyIG11c3QgaGF2ZSB0ZXJtaW5hdGVkIGF0IGFuIG9wZXJhdG9yCisgICAgICAgICAgICAgICAgICAgIHN5bnRheEVycm9yKCJVbnF1b3RlZCBvcGVyYXRvciIsIHJ1bGUsIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChvcGVyYXRvciA9PSBWQVJJQUJMRV9ERUZfT1ApIHsKKyAgICAgICAgICAgICAgICAvLyBMSFMgaXMgdGhlIG5hbWUuICBSSFMgaXMgYSBzaW5nbGUgY2hhcmFjdGVyLCBlaXRoZXIgYSBsaXRlcmFsCisgICAgICAgICAgICAgICAgLy8gb3IgYSBzZXQgKGFscmVhZHkgcGFyc2VkKS4gIElmIFJIUyBpcyBsb25nZXIgdGhhbiBvbmUKKyAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXIsIGl0IGlzIGVpdGhlciBhIG11bHRpLWNoYXJhY3RlciBzdHJpbmcsIG9yIG11bHRpcGxlCisgICAgICAgICAgICAgICAgLy8gc2V0cywgb3IgYSBtaXh0dXJlIG9mIGNoYXJzIGFuZCBzZXRzIC0tIHN5bnRheCBlcnJvci4KKworICAgICAgICAgICAgICAgIC8vIFdlIGV4cGVjdCB0byBzZWUgYSBzaW5nbGUgdW5kZWZpbmVkIHZhcmlhYmxlICh0aGUgb25lIGJlaW5nCisgICAgICAgICAgICAgICAgLy8gZGVmaW5lZCkuCisgICAgICAgICAgICAgICAgaWYgKHVuZGVmaW5lZFZhcmlhYmxlTmFtZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHN5bnRheEVycm9yKCJNaXNzaW5nICckJyBvciBkdXBsaWNhdGUgZGVmaW5pdGlvbiIsIHJ1bGUsIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGxlZnQudGV4dC5sZW5ndGgoKSAhPSAxIHx8IGxlZnQudGV4dC5jaGFyQXQoMCkgIT0gdmFyaWFibGVMaW1pdCkgeworICAgICAgICAgICAgICAgICAgICBzeW50YXhFcnJvcigiTWFsZm9ybWVkIExIUyIsIHJ1bGUsIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGxlZnQuYW5jaG9yU3RhcnQgfHwgbGVmdC5hbmNob3JFbmQgfHwKKyAgICAgICAgICAgICAgICAgICAgcmlnaHQuYW5jaG9yU3RhcnQgfHwgcmlnaHQuYW5jaG9yRW5kKSB7CisgICAgICAgICAgICAgICAgICAgIHN5bnRheEVycm9yKCJNYWxmb3JtZWQgdmFyaWFibGUgZGVmIiwgcnVsZSwgc3RhcnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBXZSBhbGxvdyBhbnl0aGluZyBvbiB0aGUgcmlnaHQsIGluY2x1ZGluZyBhbiBlbXB0eSBzdHJpbmcuCisgICAgICAgICAgICAgICAgaW50IG4gPSByaWdodC50ZXh0Lmxlbmd0aCgpOworICAgICAgICAgICAgICAgIGNoYXJbXSB2YWx1ZSA9IG5ldyBjaGFyW25dOworICAgICAgICAgICAgICAgIHJpZ2h0LnRleHQuZ2V0Q2hhcnMoMCwgbiwgdmFsdWUsIDApOworICAgICAgICAgICAgICAgIGRhdGEudmFyaWFibGVOYW1lcy5wdXQodW5kZWZpbmVkVmFyaWFibGVOYW1lLCB2YWx1ZSk7CisKKyAgICAgICAgICAgICAgICArK3ZhcmlhYmxlTGltaXQ7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBvczsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBub3QgYSB2YXJpYWJsZSBkZWZpbml0aW9uIHJ1bGUsIHdlIHNob3VsZG4ndCBoYXZlCisgICAgICAgICAgICAvLyBhbnkgdW5kZWZpbmVkIHZhcmlhYmxlIG5hbWVzLgorICAgICAgICAgICAgaWYgKHVuZGVmaW5lZFZhcmlhYmxlTmFtZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgc3ludGF4RXJyb3IoIlVuZGVmaW5lZCB2YXJpYWJsZSAkIiArIHVuZGVmaW5lZFZhcmlhYmxlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlLCBzdGFydCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHRoZSBkaXJlY3Rpb24gd2Ugd2FudCBkb2Vzbid0IG1hdGNoIHRoZSBydWxlCisgICAgICAgICAgICAvLyBkaXJlY3Rpb24sIGRvIG5vdGhpbmcuCisgICAgICAgICAgICBpZiAob3BlcmF0b3IgIT0gRldEUkVWX1JVTEVfT1AgJiYKKyAgICAgICAgICAgICAgICAoKGRpcmVjdGlvbiA9PSBGT1JXQVJEKSAhPSAob3BlcmF0b3IgPT0gRk9SV0FSRF9SVUxFX09QKSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcG9zOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUcmFuc2Zvcm0gdGhlIHJ1bGUgaW50byBhIGZvcndhcmQgcnVsZSBieSBzd2FwcGluZyB0aGUKKyAgICAgICAgICAgIC8vIHNpZGVzIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gUkVWRVJTRSkgeworICAgICAgICAgICAgICAgIFJ1bGVIYWxmIHRlbXAgPSBsZWZ0OworICAgICAgICAgICAgICAgIGxlZnQgPSByaWdodDsKKyAgICAgICAgICAgICAgICByaWdodCA9IHRlbXA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFJlbW92ZSBub24tYXBwbGljYWJsZSBlbGVtZW50cyBpbiBmb3J3YXJkLXJldmVyc2UKKyAgICAgICAgICAgIC8vIHJ1bGVzLiAgQmlkaXJlY3Rpb25hbCBydWxlcyBpZ25vcmUgZWxlbWVudHMgdGhhdCBkbyBub3QKKyAgICAgICAgICAgIC8vIGFwcGx5LgorICAgICAgICAgICAgaWYgKG9wZXJhdG9yID09IEZXRFJFVl9SVUxFX09QKSB7CisgICAgICAgICAgICAgICAgcmlnaHQucmVtb3ZlQ29udGV4dCgpOworICAgICAgICAgICAgICAgIHJpZ2h0LnNlZ21lbnRzID0gbnVsbDsKKyAgICAgICAgICAgICAgICBsZWZ0LmN1cnNvciA9IGxlZnQubWF4UmVmID0gLTE7CisgICAgICAgICAgICAgICAgbGVmdC5jdXJzb3JPZmZzZXQgPSAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBOb3JtYWxpemUgY29udGV4dAorICAgICAgICAgICAgaWYgKGxlZnQuYW50ZSA8IDApIHsKKyAgICAgICAgICAgICAgICBsZWZ0LmFudGUgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGxlZnQucG9zdCA8IDApIHsKKyAgICAgICAgICAgICAgICBsZWZ0LnBvc3QgPSBsZWZ0LnRleHQubGVuZ3RoKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIENvbnRleHQgaXMgb25seSBhbGxvd2VkIG9uIHRoZSBpbnB1dCBzaWRlLiAgQ3Vyc29ycyBhcmUgb25seQorICAgICAgICAgICAgLy8gYWxsb3dlZCBvbiB0aGUgb3V0cHV0IHNpZGUuICBTZWdtZW50IGRlbGltaXRlcnMgY2FuIG9ubHkgYXBwZWFyCisgICAgICAgICAgICAvLyBvbiB0aGUgbGVmdCwgYW5kIHJlZmVyZW5jZXMgb24gdGhlIHJpZ2h0LiAgQ3Vyc29yIG9mZnNldAorICAgICAgICAgICAgLy8gY2Fubm90IGFwcGVhciB3aXRob3V0IGFuIGV4cGxpY2l0IGN1cnNvci4gIEN1cnNvciBvZmZzZXQKKyAgICAgICAgICAgIC8vIGNhbm5vdCBwbGFjZSB0aGUgY3Vyc29yIG91dHNpZGUgdGhlIGxpbWl0cyBvZiB0aGUgY29udGV4dC4KKyAgICAgICAgICAgIC8vIEFuY2hvcnMgYXJlIG9ubHkgYWxsb3dlZCBvbiB0aGUgaW5wdXQgc2lkZS4KKyAgICAgICAgICAgIGlmIChyaWdodC5hbnRlID49IDAgfHwgcmlnaHQucG9zdCA+PSAwIHx8IGxlZnQuY3Vyc29yID49IDAgfHwKKyAgICAgICAgICAgICAgICByaWdodC5zZWdtZW50cyAhPSBudWxsIHx8IGxlZnQubWF4UmVmID49IDAgfHwKKyAgICAgICAgICAgICAgICAocmlnaHQuY3Vyc29yT2Zmc2V0ICE9IDAgJiYgcmlnaHQuY3Vyc29yIDwgMCkgfHwKKyAgICAgICAgICAgICAgICAocmlnaHQuY3Vyc29yT2Zmc2V0ID4gKGxlZnQudGV4dC5sZW5ndGgoKSAtIGxlZnQucG9zdCkpIHx8CisgICAgICAgICAgICAgICAgKC1yaWdodC5jdXJzb3JPZmZzZXQgPiBsZWZ0LmFudGUpIHx8CisgICAgICAgICAgICAgICAgcmlnaHQuYW5jaG9yU3RhcnQgfHwgcmlnaHQuYW5jaG9yRW5kKSB7CisgICAgICAgICAgICAgICAgc3ludGF4RXJyb3IoIk1hbGZvcm1lZCBydWxlIiwgcnVsZSwgc3RhcnQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBDaGVjayBpbnRlZ3JpdHkgb2Ygc2VnbWVudHMgYW5kIHNlZ21lbnQgcmVmZXJlbmNlcy4gIEVhY2gKKyAgICAgICAgICAgIC8vIHNlZ21lbnQncyBzdGFydCBtdXN0IGhhdmUgYSBjb3JyZXNwb25kaW5nIGxpbWl0LCBhbmQgdGhlCisgICAgICAgICAgICAvLyByZWZlcmVuY2VzIG11c3Qgbm90IHJlZmVyIHRvIHNlZ21lbnRzIHRoYXQgZG8gbm90IGV4aXN0LgorICAgICAgICAgICAgaWYgKGxlZnQuc2VnbWVudHMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGludCBuID0gbGVmdC5zZWdtZW50cy5zaXplKCk7CisgICAgICAgICAgICAgICAgaWYgKG4gJSAyICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgc3ludGF4RXJyb3IoIk9kZCBsZW5ndGggc2VnbWVudHMiLCBydWxlLCBzdGFydCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG4gLz0gMjsKKyAgICAgICAgICAgICAgICBpZiAocmlnaHQubWF4UmVmID4gbikgeworICAgICAgICAgICAgICAgICAgICBzeW50YXhFcnJvcigiVW5kZWZpbmVkIHNlZ21lbnQgcmVmZXJlbmNlICIgKyByaWdodC5tYXhSZWYsIHJ1bGUsIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRhdGEucnVsZVNldC5hZGRSdWxlKG5ldyBUcmFuc2xpdGVyYXRpb25SdWxlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0LnRleHQsIGxlZnQuYW50ZSwgbGVmdC5wb3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodC50ZXh0LCByaWdodC5jdXJzb3IsIHJpZ2h0LmN1cnNvck9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdC5nZXRTZWdtZW50cygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWZ0LmFuY2hvclN0YXJ0LCBsZWZ0LmFuY2hvckVuZCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gcG9zOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRocm93IGFuIGV4Y2VwdGlvbiBpbmRpY2F0aW5nIGEgc3ludGF4IGVycm9yLiAgU2VhcmNoIHRoZSBydWxlIHN0cmluZworICAgICAgICAgKiBmb3IgdGhlIHByb2JhYmxlIGVuZCBvZiB0aGUgcnVsZS4gIE9mIGNvdXJzZSwgaWYgdGhlIGVycm9yIGlzIHRoYXQKKyAgICAgICAgICogdGhlIGVuZCBvZiBydWxlIG1hcmtlciBpcyBtaXNzaW5nLCB0aGVuIHRoZSBydWxlIGVuZCB3aWxsIG5vdCBiZSBmb3VuZC4KKyAgICAgICAgICogSW4gYW55IGNhc2UgdGhlIHJ1bGUgc3RhcnQgd2lsbCBiZSBjb3JyZWN0bHkgcmVwb3J0ZWQuCisgICAgICAgICAqIEBwYXJhbSBtc2cgZXJyb3IgZGVzY3JpcHRpb24KKyAgICAgICAgICogQHBhcmFtIHJ1bGUgcGF0dGVybiBzdHJpbmcKKyAgICAgICAgICogQHBhcmFtIHN0YXJ0IHBvc2l0aW9uIG9mIGZpcnN0IGNoYXJhY3RlciBvZiBjdXJyZW50IHJ1bGUKKyAgICAgICAgICovCisgICAgICAgIHN0YXRpYyBmaW5hbCB2b2lkIHN5bnRheEVycm9yKFN0cmluZyBtc2csIFN0cmluZyBydWxlLCBpbnQgc3RhcnQpIHsKKyAgICAgICAgICAgIGludCBlbmQgPSBydWxlRW5kKHJ1bGUsIHN0YXJ0LCBydWxlLmxlbmd0aCgpKTsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24obXNnICsgIiBpbiBcIiIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LmVzY2FwZShydWxlLnN1YnN0cmluZyhzdGFydCwgZW5kKSkgKyAnIicpOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGljIGZpbmFsIGludCBydWxlRW5kKFN0cmluZyBydWxlLCBpbnQgc3RhcnQsIGludCBsaW1pdCkgeworICAgICAgICAgICAgaW50IGVuZCA9IHF1b3RlZEluZGV4T2YocnVsZSwgc3RhcnQsIGxpbWl0LCAiOyIpOworICAgICAgICAgICAgaWYgKGVuZCA8IDApIHsKKyAgICAgICAgICAgICAgICBlbmQgPSBsaW1pdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBlbmQ7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogUGFyc2UgYSBVbmljb2RlU2V0IG91dCwgc3RvcmUgaXQsIGFuZCByZXR1cm4gdGhlIHN0YW5kLWluIGNoYXJhY3RlcgorICAgICAgICAgKiB1c2VkIHRvIHJlcHJlc2VudCBpdC4KKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgZmluYWwgY2hhciBwYXJzZVNldChTdHJpbmcgcnVsZSwgUGFyc2VQb3NpdGlvbiBwb3MpIHsKKyAgICAgICAgICAgIFVuaWNvZGVTZXQgc2V0ID0gbmV3IFVuaWNvZGVTZXQocnVsZSwgcG9zLCBwYXJzZURhdGEpOworICAgICAgICAgICAgaWYgKHZhcmlhYmxlTmV4dCA+PSB2YXJpYWJsZUxpbWl0KSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIlByaXZhdGUgdXNlIHZhcmlhYmxlcyBleGhhdXN0ZWQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNldC5jb21wYWN0KCk7CisgICAgICAgICAgICBzZXRWYXJpYWJsZXNWZWN0b3IuYWRkRWxlbWVudChzZXQpOworICAgICAgICAgICAgcmV0dXJuIHZhcmlhYmxlTmV4dCsrOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEFwcGVuZCB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIHZhcmlhYmxlIG5hbWUgdG8gdGhlIGdpdmVuCisgICAgICAgICAqIFN0cmluZ0J1ZmZlci4KKyAgICAgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIG5hbWUgaXMgdW5rbm93bi4KKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgdm9pZCBhcHBlbmRWYXJpYWJsZURlZihTdHJpbmcgbmFtZSwgU3RyaW5nQnVmZmVyIGJ1ZikgeworICAgICAgICAgICAgY2hhcltdIGNoID0gKGNoYXJbXSkgZGF0YS52YXJpYWJsZU5hbWVzLmdldChuYW1lKTsKKyAgICAgICAgICAgIGlmIChjaCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgYWxsb3cgb25lIHVuZGVmaW5lZCB2YXJpYWJsZSBzbyB0aGF0IHZhcmlhYmxlIGRlZmluaXRpb24KKyAgICAgICAgICAgICAgICAvLyBzdGF0ZW1lbnRzIHdvcmsuICBGb3IgdGhlIGZpcnN0IHVuZGVmaW5lZCB2YXJpYWJsZSB3ZSByZXR1cm4KKyAgICAgICAgICAgICAgICAvLyB0aGUgc3BlY2lhbCBwbGFjZWhvbGRlciB2YXJpYWJsZUxpbWl0LTEsIGFuZCBzYXZlIHRoZSB2YXJpYWJsZQorICAgICAgICAgICAgICAgIC8vIG5hbWUuCisgICAgICAgICAgICAgICAgaWYgKHVuZGVmaW5lZFZhcmlhYmxlTmFtZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZFZhcmlhYmxlTmFtZSA9IG5hbWU7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZU5leHQgPj0gdmFyaWFibGVMaW1pdCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIlByaXZhdGUgdXNlIHZhcmlhYmxlcyBleGhhdXN0ZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKChjaGFyKSAtLXZhcmlhYmxlTGltaXQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlVuZGVmaW5lZCB2YXJpYWJsZSAkIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbmFtZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKGNoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBEZXRlcm1pbmVzIHdoYXQgcGFydCBvZiB0aGUgcHJpdmF0ZSB1c2UgcmVnaW9uIG9mIFVuaWNvZGUgd2UgY2FuIHVzZSBmb3IKKyAgICAgICAgICogdmFyaWFibGUgc3RhbmQtaW5zLiAgVGhlIGNvcnJlY3Qgd2F5IHRvIGRvIHRoaXMgaXMgYXMgZm9sbG93czogUGFyc2UgZWFjaAorICAgICAgICAgKiBydWxlLCBhbmQgZm9yIGZvcndhcmQgYW5kIHJldmVyc2UgcnVsZXMsIHRha2UgdGhlIEZST00gZXhwcmVzc2lvbiwgYW5kCisgICAgICAgICAqIG1ha2UgYSBoYXNoIG9mIGFsbCBjaGFyYWN0ZXJzIHVzZWQuICBUaGUgVE8gZXhwcmVzc2lvbiBzaG91bGQgYmUgaWdub3JlZC4KKyAgICAgICAgICogV2hlbiBkb25lLCBldmVyeXRoaW5nIG5vdCBpbiB0aGUgaGFzaCBpcyBhdmFpbGFibGUgZm9yIHVzZS4gIEluIHByYWN0aWNlLAorICAgICAgICAgKiB0aGlzIG1ldGhvZCBtYXkgZW1wbG95IHNvbWUgb3RoZXIgYWxnb3JpdGhtIGZvciBpbXByb3ZlZCBzcGVlZC4KKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgZmluYWwgdm9pZCBkZXRlcm1pbmVWYXJpYWJsZVJhbmdlKFJ1bGVCb2R5IHJ1bGVBcnJheSkgeworICAgICAgICAgICAgLy8gQXMgYW4gaW5pdGlhbCBpbXBsZW1lbnRhdGlvbiwgd2UganVzdCBydW4gdGhyb3VnaCBhbGwgdGhlCisgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzLCBpZ25vcmluZyBhbnkgcXVvdGluZy4gIFRoaXMgd29ya3Mgc2luY2UgdGhlIHF1b3RlCisgICAgICAgICAgICAvLyBtZWNoYW5pc21zIGFyZSBvdXRzaWRlIHRoZSBwcml2YXRlIHVzZSBhcmVhLgorCisgICAgICAgICAgICBSYW5nZSByID0gbmV3IFJhbmdlKCdcdUUwMDAnLCAweDE5MDApOyAvLyBQcml2YXRlIHVzZSBhcmVhCisgICAgICAgICAgICByID0gci5sYXJnZXN0VW51c2VkU3VicmFuZ2UocnVsZUFycmF5KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAiTm8gcHJpdmF0ZSB1c2UgY2hhcmFjdGVycyBhdmFpbGFibGUgZm9yIHZhcmlhYmxlcyIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBBbGxvY2F0ZSA5IGNoYXJhY3RlcnMgZm9yIHNlZ21lbnQgcmVmZXJlbmNlcyAxIHRocm91Z2ggOQorICAgICAgICAgICAgZGF0YS5zZWdtZW50QmFzZSA9IHIuc3RhcnQ7CisgICAgICAgICAgICBkYXRhLnNldFZhcmlhYmxlc0Jhc2UgPSB2YXJpYWJsZU5leHQgPSAoY2hhcikgKGRhdGEuc2VnbWVudEJhc2UgKyA5KTsKKyAgICAgICAgICAgIHZhcmlhYmxlTGltaXQgPSAoY2hhcikgKHIuc3RhcnQgKyByLmxlbmd0aCk7CisKKyAgICAgICAgICAgIGlmICh2YXJpYWJsZU5leHQgPj0gdmFyaWFibGVMaW1pdCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgIlRvbyBmZXcgcHJpdmF0ZSB1c2UgY2hhcmFjdGVycyBhdmFpbGFibGUgZm9yIHZhcmlhYmxlcyIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHVybnMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gYSBzZXQsIGlnbm9yaW5nIHF1b3RlZCB0ZXh0LgorICAgICAgICAgKiBGb3IgZXhhbXBsZSwgaW4gdGhlIHN0cmluZyAiYWJjJ2hpZGUnaCIsIHRoZSAnaCcgaW4gImhpZGUiIHdpbGwgbm90IGJlCisgICAgICAgICAqIGZvdW5kIGJ5IGEgc2VhcmNoIGZvciAiaCIuICBVbmxpa2UgU3RyaW5nLmluZGV4T2YoKSwgdGhpcyBtZXRob2Qgc2VhcmNoZXMKKyAgICAgICAgICogbm90IGZvciBhIHNpbmdsZSBjaGFyYWN0ZXIsIGJ1dCBmb3IgYW55IGNoYXJhY3RlciBvZiB0aGUgc3RyaW5nCisgICAgICAgICAqIDxjb2RlPnNldE9mQ2hhcnM8L2NvZGU+LgorICAgICAgICAgKiBAcGFyYW0gdGV4dCB0ZXh0IHRvIGJlIHNlYXJjaGVkCisgICAgICAgICAqIEBwYXJhbSBzdGFydCB0aGUgYmVnaW5uaW5nIGluZGV4LCBpbmNsdXNpdmU7IDxjb2RlPjAgPD0gc3RhcnQKKyAgICAgICAgICogPD0gbGltaXQ8L2NvZGU+LgorICAgICAgICAgKiBAcGFyYW0gbGltaXQgdGhlIGVuZGluZyBpbmRleCwgZXhjbHVzaXZlOyA8Y29kZT5zdGFydCA8PSBsaW1pdAorICAgICAgICAgKiA8PSB0ZXh0Lmxlbmd0aCgpPC9jb2RlPi4KKyAgICAgICAgICogQHBhcmFtIHNldE9mQ2hhcnMgc3RyaW5nIHdpdGggb25lIG9yIG1vcmUgZGlzdGluY3QgY2hhcmFjdGVycworICAgICAgICAgKiBAcmV0dXJuIE9mZnNldCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIDxjb2RlPnNldE9mQ2hhcnM8L2NvZGU+CisgICAgICAgICAqIGZvdW5kLCBvciAtMSBpZiBub3QgZm91bmQuCisgICAgICAgICAqIEBzZWUgI2luZGV4T2YKKyAgICAgICAgICovCisgICAgICAgIHByaXZhdGUgc3RhdGljIGludCBxdW90ZWRJbmRleE9mKFN0cmluZyB0ZXh0LCBpbnQgc3RhcnQsIGludCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHNldE9mQ2hhcnMpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGk9c3RhcnQ7IGk8bGltaXQ7ICsraSkgeworICAgICAgICAgICAgICAgIGNoYXIgYyA9IHRleHQuY2hhckF0KGkpOworICAgICAgICAgICAgICAgIGlmIChjID09IEVTQ0FQRSkgeworICAgICAgICAgICAgICAgICAgICArK2k7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjID09IFFVT1RFKSB7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlICgrK2kgPCBsaW1pdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdGV4dC5jaGFyQXQoaSkgIT0gUVVPVEUpIHt9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzZXRPZkNoYXJzLmluZGV4T2YoYykgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworCisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEEgcmFuZ2Ugb2YgVW5pY29kZSBjaGFyYWN0ZXJzLiAgU3VwcG9ydCB0aGUgb3BlcmF0aW9ucyBvZiB0ZXN0aW5nIGZvcgorICAgICAgICAgKiBpbmNsdXNpb24gKGRvZXMgdGhpcyByYW5nZSBjb250YWluIHRoaXMgY2hhcmFjdGVyPykgYW5kIHNwbGl0dGluZy4KKyAgICAgICAgICogU3BsaXR0aW5nIGludm9sdmVzIGJyZWFraW5nIGEgcmFuZ2UgaW50byB0d28gc21hbGxlciByYW5nZXMgYXJvdW5kIGEKKyAgICAgICAgICogY2hhcmFjdGVyIGluc2lkZSB0aGUgb3JpZ2luYWwgcmFuZ2UuICBUaGUgc3BsaXQgY2hhcmFjdGVyIGlzIG5vdCBpbmNsdWRlZAorICAgICAgICAgKiBpbiBlaXRoZXIgcmFuZ2UuICBJZiB0aGUgc3BsaXQgY2hhcmFjdGVyIGlzIGF0IGVpdGhlciBleHRyZW1lIGVuZCBvZiB0aGUKKyAgICAgICAgICogcmFuZ2UsIG9uZSBvZiB0aGUgc3BsaXQgcHJvZHVjdHMgaXMgYW4gZW1wdHkgcmFuZ2UuCisgICAgICAgICAqCisgICAgICAgICAqIFRoaXMgY2xhc3MgaXMgdXNlZCBpbnRlcm5hbGx5IHRvIGRldGVybWluZSB0aGUgbGFyZ2VzdCBhdmFpbGFibGUgcHJpdmF0ZQorICAgICAgICAgKiB1c2UgY2hhcmFjdGVyIHJhbmdlIGZvciB2YXJpYWJsZSBzdGFuZC1pbnMuCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBSYW5nZSBpbXBsZW1lbnRzIENsb25lYWJsZSB7CisgICAgICAgICAgICBjaGFyIHN0YXJ0OworICAgICAgICAgICAgaW50IGxlbmd0aDsKKworICAgICAgICAgICAgUmFuZ2UoY2hhciBzdGFydCwgaW50IGxlbmd0aCkgeworICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQgPSBzdGFydDsKKyAgICAgICAgICAgICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIE9iamVjdCBjbG9uZSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFJhbmdlKHN0YXJ0LCBsZW5ndGgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBib29sZWFuIGNvbnRhaW5zKGNoYXIgYykgeworICAgICAgICAgICAgICAgIHJldHVybiBjID49IHN0YXJ0ICYmIChjIC0gc3RhcnQpIDwgbGVuZ3RoOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAqIEFzc3VtZSB0aGF0IGNvbnRhaW5zKGMpIGlzIHRydWUuICBTcGxpdCB0aGlzIHJhbmdlIGludG8gdHdvIG5ldworICAgICAgICAgICAgICogcmFuZ2VzIGFyb3VuZCB0aGUgY2hhcmFjdGVyIGMuICBNYWtlIHRoaXMgcmFuZ2Ugb25lIG9mIHRoZSBuZXcgcmFuZ2VzCisgICAgICAgICAgICAgKiAobW9kaWZ5IGl0IGluIHBsYWNlKSBhbmQgcmV0dXJuIHRoZSBvdGhlciBuZXcgcmFuZ2UuICBUaGUgY2hhcmFjdGVyCisgICAgICAgICAgICAgKiBpdHNlbGYgaXMgbm90IGluY2x1ZGVkIGluIGVpdGhlciByYW5nZS4gIElmIHRoZSBzcGxpdCByZXN1bHRzIGluIGFuCisgICAgICAgICAgICAgKiBlbXB0eSByYW5nZSAodGhhdCBpcywgaWYgYyA9PSBzdGFydCBvciBjID09IHN0YXJ0ICsgbGVuZ3RoIC0gMSkgdGhlbgorICAgICAgICAgICAgICogcmV0dXJuIG51bGwuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIFJhbmdlIHNwbGl0KGNoYXIgYykgeworICAgICAgICAgICAgICAgIGlmIChjID09IHN0YXJ0KSB7CisgICAgICAgICAgICAgICAgICAgICsrc3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIC0tbGVuZ3RoOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGMgLSBzdGFydCA9PSBsZW5ndGggLSAxKSB7CisgICAgICAgICAgICAgICAgICAgIC0tbGVuZ3RoOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICArK2M7CisgICAgICAgICAgICAgICAgICAgIFJhbmdlIHIgPSBuZXcgUmFuZ2UoYywgc3RhcnQgKyBsZW5ndGggLSBjKTsKKyAgICAgICAgICAgICAgICAgICAgbGVuZ3RoID0gLS1jIC0gc3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiBGaW5kcyB0aGUgbGFyZ2VzdCB1bnVzZWQgc3VicmFuZ2UgYnkgdGhlIGdpdmVuIHN0cmluZy4gIEEKKyAgICAgICAgICAgICAqIHN1YnJhbmdlIGlzIHVudXNlZCBieSBhIHN0cmluZyBpZiB0aGUgc3RyaW5nIGNvbnRhaW5zIG5vCisgICAgICAgICAgICAgKiBjaGFyYWN0ZXJzIGluIHRoYXQgcmFuZ2UuICBJZiB0aGUgZ2l2ZW4gc3RyaW5nIGNvbnRhaW5zIG5vCisgICAgICAgICAgICAgKiBjaGFyYWN0ZXJzIGluIHRoaXMgcmFuZ2UsIHRoZW4gdGhpcyByYW5nZSBpdHNlbGYgaXMKKyAgICAgICAgICAgICAqIHJldHVybmVkLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBSYW5nZSBsYXJnZXN0VW51c2VkU3VicmFuZ2UoUnVsZUJvZHkgc3RyaW5ncykgeworICAgICAgICAgICAgICAgIFZlY3RvciB2ID0gbmV3IFZlY3RvcigxKTsKKyAgICAgICAgICAgICAgICB2LmFkZEVsZW1lbnQoY2xvbmUoKSk7CisKKyAgICAgICAgICAgICAgICBzdHJpbmdzLnJlc2V0KCk7CisgICAgICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgc3RyID0gc3RyaW5ncy5uZXh0TGluZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAoc3RyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGludCBuID0gc3RyLmxlbmd0aCgpOworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8bjsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGMgPSBzdHIuY2hhckF0KGkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5zKGMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqPHYuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmFuZ2UgciA9IChSYW5nZSkgdi5lbGVtZW50QXQoaik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLmNvbnRhaW5zKGMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gci5zcGxpdChjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2LmFkZEVsZW1lbnQocik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIFJhbmdlIGJlc3RSYW5nZSA9IG51bGw7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqPHYuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgUmFuZ2UgciA9IChSYW5nZSkgdi5lbGVtZW50QXQoaik7CisgICAgICAgICAgICAgICAgICAgIGlmIChiZXN0UmFuZ2UgPT0gbnVsbCB8fCByLmxlbmd0aCA+IGJlc3RSYW5nZS5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RSYW5nZSA9IHI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gYmVzdFJhbmdlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCisvKioKKyAqICRMb2c6IFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLmphdmEsdiAkCisgKiBSZXZpc2lvbiAxLjQyICAyMDAxLzAyLzIwIDE3OjU5OjQwICBhbGFuNGoKKyAqIFJlbW92ZSBiYWNrc2xhc2gtdSBmcm9tIGxvZworICoKKyAqIFJldmlzaW9uIDEuNDEgIDIwMDEvMDIvMTYgMTg6NTM6NTUgIGFsYW40agorICogSGFuZGxlIGJhY2tzbGFzaC11IGVzY2FwZXMKKyAqCisgKiBSZXZpc2lvbiAxLjQwICAyMDAxLzAyLzAzIDAwOjQ2OjIxICBhbGFuNGoKKyAqIExvYWQgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IgZmlsZXMgZnJvbSBVVEY4IGZpbGVzIGluc3RlYWQgb2YgUmVzb3VyY2VCdW5kbGVzCisgKgorICogUmV2aXNpb24gMS4zOSAgMjAwMC8wOC8zMSAxNzoxMTo0MiAgYWxhbjRqCisgKiBJbXBsZW1lbnQgYW5jaG9ycy4KKyAqCisgKiBSZXZpc2lvbiAxLjM4ICAyMDAwLzA4LzMwIDIwOjQwOjMwICBhbGFuNGoKKyAqIEltcGxlbWVudCBhbmNob3JzLgorICoKKyAqIFJldmlzaW9uIDEuMzcgIDIwMDAvMDcvMTIgMTY6MzE6MzYgIGFsYW40agorICogU2ltcGxpZnkgbG9vcCBsaW1pdCBsb2dpYworICoKKyAqIFJldmlzaW9uIDEuMzYgIDIwMDAvMDYvMjkgMjE6NTk6MjMgIGFsYW40agorICogRml4IGhhbmRsaW5nIG9mIFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uIGZpZWxkcworICoKKyAqIFJldmlzaW9uIDEuMzUgIDIwMDAvMDYvMjggMjA6NDk6NTQgIGFsYW40agorICogRml4IGhhbmRsaW5nIG9mIFBvc2l0aW9ucyBmaWVsZHMKKyAqCisgKiBSZXZpc2lvbiAxLjM0ICAyMDAwLzA2LzI4IDIwOjM2OjMyICBhbGFuNGoKKyAqIENsZWFuIHVwIFRyYW5zbGl0ZXJhdG9yOjpQb3NpdGlvbiAtIHJlbmFtZSB0ZW1wb3JhcnkgbmFtZXMKKyAqCisgKiBSZXZpc2lvbiAxLjMzICAyMDAwLzA2LzI4IDIwOjMxOjQzICBhbGFuNGoKKyAqIENsZWFuIHVwIFRyYW5zbGl0ZXJhdG9yOjpQb3NpdGlvbiBhbmQgcmVuYW1lIGZpZWxkcyAocmVsYXRlZCB0byBqaXR0ZXJidWcgNDUwKQorICoKKyAqIFJldmlzaW9uIDEuMzIgIDIwMDAvMDUvMjQgMjI6MjE6MDAgIGFsYW40agorICogQ29tcGFjdCBVbmljb2RlU2V0cworICoKKyAqIFJldmlzaW9uIDEuMzEgIDIwMDAvMDUvMjMgMTY6NDg6MjcgIGFsYW40agorICogRml4IGRvYzsgcmVtb3ZlIHVudXNlZCBhdXRvCisgKgorICogUmV2aXNpb24gMS4zMCAgMjAwMC8wNS8xOCAyMjo0OTo1MSAgYWxhbgorICogVXBkYXRlIGRvY3MKKyAqCisgKiBSZXZpc2lvbiAxLjI5ICAyMDAwLzA0LzI4IDAwOjI1OjQyICBhbGFuCisgKiBJbXByb3ZlIGVycm9yIHJlcG9ydGluZworICoKKyAqIFJldmlzaW9uIDEuMjggIDIwMDAvMDQvMjUgMTc6Mzg6MDAgIGFsYW4KKyAqIE1pbm9yIHBhcnNlciBjbGVhbnVwLgorICoKKyAqIFJldmlzaW9uIDEuMjcgIDIwMDAvMDQvMjUgMDE6NDI6NTggIGFsYW4KKyAqIEFsbG93IGFyYml0cmFyeSBsZW5ndGggdmFyaWFibGUgdmFsdWVzLiBDbGVhbiB1cCBEYXRhIEFQSS4gVXBkYXRlIGphdmFkb2NzLgorICoKKyAqIFJldmlzaW9uIDEuMjYgIDIwMDAvMDQvMjIgMDE6MjU6MTAgIGFsYW4KKyAqIEFkZCBzdXBwb3J0IGZvciBjdXJzb3IgcG9zaXRpb25lciAnQCc7IHVwZGF0ZSBqYXZhZG9jCisgKgorICogUmV2aXNpb24gMS4yNSAgMjAwMC8wNC8yMiAwMDowODo0MyAgYWxhbgorICogTmFycm93IHJhbmdlIHRvIDIxIC0gN0UgZm9yIG1hbmRhdG9yeSBxdW90aW5nLgorICoKKyAqIFJldmlzaW9uIDEuMjQgIDIwMDAvMDQvMjIgMDA6MDM6NTQgIGFsYW4KKyAqIERpc2FsbG93IHVucXVvdGVkIHNwZWNpYWwgY2hhcnMuIFJlcG9ydCBtdWx0aXBsZSBlcnJvcnMgYXQgb25jZS4KKyAqCisgKiBSZXZpc2lvbiAxLjIzICAyMDAwLzA0LzIxIDIyOjIzOjQwICBhbGFuCisgKiBDbGVhbiB1cCBwYXJzZVJlZmVyZW5jZS4gUHJldmlvdXMgbG9nIHNob3VsZCByZWFkICdkZWxlZ2F0ZScsIG5vdCAnZGVsZXRlJy4KKyAqCisgKiBSZXZpc2lvbiAxLjIyICAyMDAwLzA0LzIxIDIyOjE2OjI5ICBhbGFuCisgKiBEZWxldGUgdmFyaWFibGUgbmFtZSBwYXJzaW5nIHRvIFN5bWJvbFRhYmxlIGludGVyZmFjZSB0byBjb25zb2xpZGF0ZSBwYXJzaW5nIGNvZGUuCisgKgorICogUmV2aXNpb24gMS4yMSAgMjAwMC8wNC8yMSAyMToxNjo0MCAgYWxhbgorICogTW9kaWZ5IHJ1bGUgc3ludGF4CisgKgorICogUmV2aXNpb24gMS4yMCAgMjAwMC8wNC8xOSAxNzozNToyMyAgYWxhbgorICogVXBkYXRlIGphdmFkb2M7IGZpeCBjb21waWxlIGVycm9yCisgKgorICogUmV2aXNpb24gMS4xOSAgMjAwMC8wNC8xOSAxNjozNDoxOCAgYWxhbgorICogQWRkIHNlZ21lbnQgc3VwcG9ydC4KKyAqCisgKiBSZXZpc2lvbiAxLjE4ICAyMDAwLzA0LzEyIDIwOjE3OjQ1ICBhbGFuCisgKiBEZWxlZ2F0ZSByZXBsYWNlIG9wZXJhdGlvbiB0byBydWxlIG9iamVjdAorICoKKyAqIFJldmlzaW9uIDEuMTcgIDIwMDAvMDMvMTAgMDQ6MDc6MjMgIGpvaG5mCisgKiBDb3B5cmlnaHQgdXBkYXRlCisgKgorICogUmV2aXNpb24gMS4xNiAgMjAwMC8wMi8yNCAyMDo0Njo0OSAgbGl1CisgKiBBZGQgaW5maW5pdGUgbG9vcCBjaGVjaworICoKKyAqIFJldmlzaW9uIDEuMTUgIDIwMDAvMDIvMTAgMDc6MzY6MjUgIGpvaG5mCisgKiBmaXhlZCBpbXBvcnRzIGZvciBjb20uaWJtLnV0aWwuVXRpbGl0eQorICoKKyAqIFJldmlzaW9uIDEuMTQgIDIwMDAvMDIvMDMgMTg6MTg6NDIgIEFsYW4KKyAqIFVzZSBhcnJheSByYXRoZXIgdGhhbiBoYXNodGFibGUgZm9yIGNoYXItdG8tc2V0IG1hcAorICoKKyAqIFJldmlzaW9uIDEuMTMgIDIwMDAvMDEvMjcgMTg6NTk6MTkgIEFsYW4KKyAqIFVzZSBQb3NpdGlvbiByYXRoZXIgdGhhbiBpbnRbXSBhbmQgbW92ZSBhbGwgc3ViY2xhc3Mgb3ZlcnJpZGVzIHRvIG9uZSBtZXRob2QgKGhhbmRsZVRyYW5zbGl0ZXJhdGUpCisgKgorICogUmV2aXNpb24gMS4xMiAgMjAwMC8wMS8xOCAxNzo1MTowOSAgQWxhbgorICogUmVtb3ZlICJrZXlib2FyZCIgZnJvbSBtZXRob2QgbmFtZXMuIE1ha2UgbWF4aW11bSBjb250ZXh0IGEgZmllbGQgb2YgVHJhbnNsaXRlcmF0b3IsIGFuZCBoYXZlIHN1YmNsYXNzZXMgc2V0IGl0LgorICoKKyAqIFJldmlzaW9uIDEuMTEgIDIwMDAvMDEvMTggMDI6MzA6NDkgIEFsYW4KKyAqIEFkZCBKYW1vLUhhbmd1bCwgSGFuZ3VsLUphbW8sIGZpeCBydWxlcywgYWRkIGNvbXBvdW5kIElEIHN1cHBvcnQKKyAqCisgKiBSZXZpc2lvbiAxLjEwICAyMDAwLzAxLzEzIDIzOjUzOjIzICBBbGFuCisgKiBGaXggYnVncyBmb3VuZCBkdXJpbmcgSUNVIHBvcnQKKyAqCisgKiBSZXZpc2lvbiAxLjkgIDIwMDAvMDEvMTEgMDQ6MTI6MDYgIEFsYW4KKyAqIENsZWFudXAsIGVtYmVsbGlzaCBjb21tZW50cworICoKKyAqIFJldmlzaW9uIDEuOCAgMjAwMC8wMS8xMSAwMjoyNTowMyAgQWxhbgorICogUmV3cml0ZSBVbmljb2RlU2V0IGFuZCBSQlQgcGFyc2VycyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlIGFuZCBuZXcgc3ludGF4CisgKgorICogUmV2aXNpb24gMS43ICAyMDAwLzAxLzA2IDAxOjM2OjM2ICBBbGFuCisgKiBBbGxvdyBzdHJpbmcgYXJyYXlzIGluIHJ1bGUgcmVzb3VyY2UgYnVuZGxlcworICoKKyAqIFJldmlzaW9uIDEuNiAgMjAwMC8wMS8wNCAyMTo0Mzo1NyAgQWxhbgorICogQWRkIHJ1bGUgaW5kZXhpbmcsIGFuZCBtb3ZlIG1hc2tpbmcgY2hlY2sgdG8gVHJhbnNsaXRlcmF0aW9uUnVsZVNldC4KKyAqCisgKiBSZXZpc2lvbiAxLjUgIDE5OTkvMTIvMjIgMDE6NDA6NTQgIEFsYW4KKyAqIENvbnNvbGlkYXRlIHJ1bGUgcGF0dGVybiBhbnRlQ29udGV4dCwga2V5LCBhbmQgcG9zdENvbnRleHQgaW50byBvbmUgc3RyaW5nLgorICoKKyAqIFJldmlzaW9uIDEuNCAgMTk5OS8xMi8yMiAwMTowNTo1NCAgQWxhbgorICogSW1wcm92ZSBtYXNraW5nIGNoZWNraW5nOyB0dXJuIGl0IG9mZiBieSBkZWZhdWx0LCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlCisgKi8KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvU0NTVS5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9TQ1NVLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uY2EzYTc3ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvU0NTVS5qYXZhCkBAIC0wLDAgKzEsMTkwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L0F0dGljL1NDU1UuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwNDowNzoyMyAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS50ZXh0OworCisvKioKKyAqIEFuIGludGVyZmFjZSBkZWZpbmluZyAgY29uc3RhbnRzIGZvciB0aGUgU3RhbmRhcmQgQ29tcHJlc3Npb24gU2NoZW1lCisgKiBmb3IgVW5pY29kZSAoU0NTVSkgYXMgb3V0bGluZWQgaW4gPEEKKyAqIEhSRUY9Imh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyNiI+VW5pY29kZSBUZWNobmljYWwKKyAqIFJlcG9ydCAjNjwvQT4uCisgKgorICogQGF1dGhvciBTdGVwaGVuIEYuIEJvb3RoCisgKiBAdmVyc2lvbiAxLjEgMDUgQXVnIDk5CisgKiBAdmVyc2lvbiAxLjAgMjYgSnVsIDk5CisgKi8KK2ludGVyZmFjZSBTQ1NVCit7CisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIEdlbmVyaWMgd2luZG93IHNoaWZ0CisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIGZpbmFsIHN0YXRpYyBpbnQgQ09NUFJFU1NJT05PRkZTRVQgICAgICAgICAgID0gMHg4MDsKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBOdW1iZXIgb2Ygd2luZG93cworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBmaW5hbCBzdGF0aWMgaW50IE5VTVdJTkRPV1MgICAgICAgICAgICAgICAgICA9IDg7CisgICAgZmluYWwgc3RhdGljIGludCBOVU1TVEFUSUNXSU5ET1dTICAgICAgICAgICAgPSA4OworCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIEluZGljYXRlcyBhIHdpbmRvdyBpbmRleCBpcyBpbnZhbGlkCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIGZpbmFsIHN0YXRpYyBpbnQgSU5WQUxJRFdJTkRPVyAgICAgICAgICAgICAgID0gLTE7CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gSW5kaWNhdGVzIGEgY2hhcmFjdGVyIGRvZXNuJ3QgZXhpc3QgaW4gaW5wdXQgKHBhc3QgZW5kIG9mIGJ1ZmZlcikKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgZmluYWwgc3RhdGljIGludCBJTlZBTElEQ0hBUiAgICAgICAgICAgICAgICAgPSAtMTsKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBDb21wcmVzc2lvbiBtb2RlcworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBmaW5hbCBzdGF0aWMgaW50IFNJTkdMRUJZVEVNT0RFICAgICAgICAgICAgICA9IDA7CisgICAgZmluYWwgc3RhdGljIGludCBVTklDT0RFTU9ERSAgICAgICAgICAgICAgICAgPSAxOworCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIE1heGltdW0gdmFsdWUgZm9yIGEgd2luZG93J3MgaW5kZXgKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgZmluYWwgc3RhdGljIGludCBNQVhJTkRFWCAgICAgICAgICAgICAgICAgICAgPSAweEZGOworCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIFJlc2VydmVkIGluZGV4IHZhbHVlIChjaGFyYWN0ZXJzIGJlbG9uZ3MgdG8gZmlyc3QgYmxvY2spCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIGZpbmFsIHN0YXRpYyBpbnQgUkVTRVJWRURJTkRFWCAgICAgICAgICAgICAgID0gMHgwMDsKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBJbmRpY2VzIGZvciBzY3JpcHRzIHdoaWNoIGNyb3NzIGEgaGFsZi1ibG9jayBib3VuZGFyeQorICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBmaW5hbCBzdGF0aWMgaW50IExBVElOSU5ERVggICAgICAgICAgICAgICAgICA9IDB4Rjk7CisgICAgZmluYWwgc3RhdGljIGludCBJUEFFWFRFTlNJT05JTkRFWCAgICAgICAgICAgPSAweEZBOworICAgIGZpbmFsIHN0YXRpYyBpbnQgR1JFRUtJTkRFWCAgICAgICAgICAgICAgICAgID0gMHhGQjsKKyAgICBmaW5hbCBzdGF0aWMgaW50IEFSTUVOSUFOSU5ERVggICAgICAgICAgICAgICA9IDB4RkM7CisgICAgZmluYWwgc3RhdGljIGludCBISVJBR0FOQUlOREVYICAgICAgICAgICAgICAgPSAweEZEOworICAgIGZpbmFsIHN0YXRpYyBpbnQgS0FUQUtBTkFJTkRFWCAgICAgICAgICAgICAgID0gMHhGRTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IEhBTEZXSURUSEtBVEFLQU5BSU5ERVggICAgICA9IDB4RkY7CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gU2luZ2xlLWJ5dGUgbW9kZSB0YWdzCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORVggICAgICAgICAgICAgICAgICAgID0gMHgwQjsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNSRVNFUlZFRCAgICAgICAgICAgICAgICAgICA9IDB4MEM7ICAvLyByZXNlcnZlZCB2YWx1ZQorICAgIGZpbmFsIHN0YXRpYyBpbnQgU1FVT1RFVSAgICAgICAgICAgICAgICAgICAgID0gMHgwRTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNDSEFOR0VVICAgICAgICAgICAgICAgICAgICA9IDB4MEY7CisKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNRVU9URTAgICAgICAgICAgICAgICAgICAgICA9IDB4MDE7CisgICAgZmluYWwgc3RhdGljIGludCBTUVVPVEUxICAgICAgICAgICAgICAgICAgICAgPSAweDAyOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU1FVT1RFMiAgICAgICAgICAgICAgICAgICAgID0gMHgwMzsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNRVU9URTMgICAgICAgICAgICAgICAgICAgICA9IDB4MDQ7CisgICAgZmluYWwgc3RhdGljIGludCBTUVVPVEU0ICAgICAgICAgICAgICAgICAgICAgPSAweDA1OworICAgIGZpbmFsIHN0YXRpYyBpbnQgU1FVT1RFNSAgICAgICAgICAgICAgICAgICAgID0gMHgwNjsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNRVU9URTYgICAgICAgICAgICAgICAgICAgICA9IDB4MDc7CisgICAgZmluYWwgc3RhdGljIGludCBTUVVPVEU3ICAgICAgICAgICAgICAgICAgICAgPSAweDA4OworCisgICAgZmluYWwgc3RhdGljIGludCBTQ0hBTkdFMCAgICAgICAgICAgICAgICAgICAgPSAweDEwOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0NIQU5HRTEgICAgICAgICAgICAgICAgICAgID0gMHgxMTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNDSEFOR0UyICAgICAgICAgICAgICAgICAgICA9IDB4MTI7CisgICAgZmluYWwgc3RhdGljIGludCBTQ0hBTkdFMyAgICAgICAgICAgICAgICAgICAgPSAweDEzOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0NIQU5HRTQgICAgICAgICAgICAgICAgICAgID0gMHgxNDsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNDSEFOR0U1ICAgICAgICAgICAgICAgICAgICA9IDB4MTU7CisgICAgZmluYWwgc3RhdGljIGludCBTQ0hBTkdFNiAgICAgICAgICAgICAgICAgICAgPSAweDE2OworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0NIQU5HRTcgICAgICAgICAgICAgICAgICAgID0gMHgxNzsKKworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORTAgICAgICAgICAgICAgICAgICAgID0gMHgxODsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNERUZJTkUxICAgICAgICAgICAgICAgICAgICA9IDB4MTk7CisgICAgZmluYWwgc3RhdGljIGludCBTREVGSU5FMiAgICAgICAgICAgICAgICAgICAgPSAweDFBOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORTMgICAgICAgICAgICAgICAgICAgID0gMHgxQjsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNERUZJTkU0ICAgICAgICAgICAgICAgICAgICA9IDB4MUM7CisgICAgZmluYWwgc3RhdGljIGludCBTREVGSU5FNSAgICAgICAgICAgICAgICAgICAgPSAweDFEOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORTYgICAgICAgICAgICAgICAgICAgID0gMHgxRTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNERUZJTkU3ICAgICAgICAgICAgICAgICAgICA9IDB4MUY7CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gVW5pY29kZSBtb2RlIHRhZ3MKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgZmluYWwgc3RhdGljIGludCBVQ0hBTkdFMCAgICAgICAgICAgICAgICAgICAgPSAweEUwOworICAgIGZpbmFsIHN0YXRpYyBpbnQgVUNIQU5HRTEgICAgICAgICAgICAgICAgICAgID0gMHhFMTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVDSEFOR0UyICAgICAgICAgICAgICAgICAgICA9IDB4RTI7CisgICAgZmluYWwgc3RhdGljIGludCBVQ0hBTkdFMyAgICAgICAgICAgICAgICAgICAgPSAweEUzOworICAgIGZpbmFsIHN0YXRpYyBpbnQgVUNIQU5HRTQgICAgICAgICAgICAgICAgICAgID0gMHhFNDsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVDSEFOR0U1ICAgICAgICAgICAgICAgICAgICA9IDB4RTU7CisgICAgZmluYWwgc3RhdGljIGludCBVQ0hBTkdFNiAgICAgICAgICAgICAgICAgICAgPSAweEU2OworICAgIGZpbmFsIHN0YXRpYyBpbnQgVUNIQU5HRTcgICAgICAgICAgICAgICAgICAgID0gMHhFNzsKKworICAgIGZpbmFsIHN0YXRpYyBpbnQgVURFRklORTAgICAgICAgICAgICAgICAgICAgID0gMHhFODsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVERUZJTkUxICAgICAgICAgICAgICAgICAgICA9IDB4RTk7CisgICAgZmluYWwgc3RhdGljIGludCBVREVGSU5FMiAgICAgICAgICAgICAgICAgICAgPSAweEVBOworICAgIGZpbmFsIHN0YXRpYyBpbnQgVURFRklORTMgICAgICAgICAgICAgICAgICAgID0gMHhFQjsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVERUZJTkU0ICAgICAgICAgICAgICAgICAgICA9IDB4RUM7CisgICAgZmluYWwgc3RhdGljIGludCBVREVGSU5FNSAgICAgICAgICAgICAgICAgICAgPSAweEVEOworICAgIGZpbmFsIHN0YXRpYyBpbnQgVURFRklORTYgICAgICAgICAgICAgICAgICAgID0gMHhFRTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVERUZJTkU3ICAgICAgICAgICAgICAgICAgICA9IDB4RUY7CisKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVRVU9URVUgICAgICAgICAgICAgICAgICAgICA9IDB4RjA7CisgICAgZmluYWwgc3RhdGljIGludCBVREVGSU5FWCAgICAgICAgICAgICAgICAgICAgPSAweEYxOworICAgIGZpbmFsIHN0YXRpYyBpbnQgVVJFU0VSVkVEICAgICAgICAgICAgICAgICAgID0gMHhGMjsgIC8vIHJlc2VydmVkIHZhbHVlCisKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBDbGFzcyB2YXJpYWJsZXMKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKiogRm9yIHdpbmRvdyBvZmZzZXQgbWFwcGluZyAqLworICAgIGZpbmFsIHN0YXRpYyBpbnQgW10gc09mZnNldFRhYmxlID0geyAKKyAgICAgICAgLy8gdGFibGUgZ2VuZXJhdGVkIGJ5IENvbXByZXNzaW9uVGFibGVHZW5lcmF0b3IKKyAgICAgICAgMHgwLCAweDgwLCAweDEwMCwgMHgxODAsIDB4MjAwLCAweDI4MCwgMHgzMDAsIDB4MzgwLCAweDQwMCwKKwkweDQ4MCwgMHg1MDAsIDB4NTgwLCAweDYwMCwgMHg2ODAsIDB4NzAwLCAweDc4MCwgMHg4MDAsIDB4ODgwLAorCTB4OTAwLCAweDk4MCwgMHhhMDAsIDB4YTgwLCAweGIwMCwgMHhiODAsIDB4YzAwLCAweGM4MCwgMHhkMDAsCisJMHhkODAsIDB4ZTAwLCAweGU4MCwgMHhmMDAsIDB4ZjgwLCAweDEwMDAsIDB4MTA4MCwgMHgxMTAwLAorCTB4MTE4MCwgMHgxMjAwLCAweDEyODAsIDB4MTMwMCwgMHgxMzgwLCAweDE0MDAsIDB4MTQ4MCwKKwkweDE1MDAsIDB4MTU4MCwgMHgxNjAwLCAweDE2ODAsIDB4MTcwMCwgMHgxNzgwLCAweDE4MDAsCisJMHgxODgwLCAweDE5MDAsIDB4MTk4MCwgMHgxYTAwLCAweDFhODAsIDB4MWIwMCwgMHgxYjgwLAorCTB4MWMwMCwgMHgxYzgwLCAweDFkMDAsIDB4MWQ4MCwgMHgxZTAwLCAweDFlODAsIDB4MWYwMCwKKwkweDFmODAsIDB4MjAwMCwgMHgyMDgwLCAweDIxMDAsIDB4MjE4MCwgMHgyMjAwLCAweDIyODAsCisJMHgyMzAwLCAweDIzODAsIDB4MjQwMCwgMHgyNDgwLCAweDI1MDAsIDB4MjU4MCwgMHgyNjAwLAorCTB4MjY4MCwgMHgyNzAwLCAweDI3ODAsIDB4MjgwMCwgMHgyODgwLCAweDI5MDAsIDB4Mjk4MCwKKwkweDJhMDAsIDB4MmE4MCwgMHgyYjAwLCAweDJiODAsIDB4MmMwMCwgMHgyYzgwLCAweDJkMDAsCisJMHgyZDgwLCAweDJlMDAsIDB4MmU4MCwgMHgyZjAwLCAweDJmODAsIDB4MzAwMCwgMHgzMDgwLAorCTB4MzEwMCwgMHgzMTgwLCAweDMyMDAsIDB4MzI4MCwgMHgzMzAwLCAweDMzODAsIDB4ZTAwMCwKKwkweGUwODAsIDB4ZTEwMCwgMHhlMTgwLCAweGUyMDAsIDB4ZTI4MCwgMHhlMzAwLCAweGUzODAsCisJMHhlNDAwLCAweGU0ODAsIDB4ZTUwMCwgMHhlNTgwLCAweGU2MDAsIDB4ZTY4MCwgMHhlNzAwLAorCTB4ZTc4MCwgMHhlODAwLCAweGU4ODAsIDB4ZTkwMCwgMHhlOTgwLCAweGVhMDAsIDB4ZWE4MCwKKwkweGViMDAsIDB4ZWI4MCwgMHhlYzAwLCAweGVjODAsIDB4ZWQwMCwgMHhlZDgwLCAweGVlMDAsCisJMHhlZTgwLCAweGVmMDAsIDB4ZWY4MCwgMHhmMDAwLCAweGYwODAsIDB4ZjEwMCwgMHhmMTgwLAorCTB4ZjIwMCwgMHhmMjgwLCAweGYzMDAsIDB4ZjM4MCwgMHhmNDAwLCAweGY0ODAsIDB4ZjUwMCwKKwkweGY1ODAsIDB4ZjYwMCwgMHhmNjgwLCAweGY3MDAsIDB4Zjc4MCwgMHhmODAwLCAweGY4ODAsCisJMHhmOTAwLCAweGY5ODAsIDB4ZmEwMCwgMHhmYTgwLCAweGZiMDAsIDB4ZmI4MCwgMHhmYzAwLAorCTB4ZmM4MCwgMHhmZDAwLCAweGZkODAsIDB4ZmUwMCwgMHhmZTgwLCAweGZmMDAsIDB4ZmY4MCwgMHgwLAorCTB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsCisJMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwKKwkweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLAorCTB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsCisJMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwKKwkweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLAorCTB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweDAsIDB4MCwgMHgwLCAweGMwLCAweDI1MCwgMHgzNzAsCisJMHg1MzAsIDB4MzA0MCwgMHgzMGEwLCAweGZmNjAgIAorICAgIH07CisKKyAgICAvKiogU3RhdGljIGNvbXByZXNzaW9uIHdpbmRvdyBvZmZzZXRzICovCisgICAgZmluYWwgc3RhdGljIGludCBbXSBzT2Zmc2V0cyA9IHsKKyAgICAgICAgMHgwMDAwLCAgLy8gZm9yIHF1b3Rpbmcgc2luZ2xlLWJ5dGUgbW9kZSB0YWdzCisgICAgICAgIDB4MDA4MCwgIC8vIExhdGluLTEgU3VwcGxlbWVudAorICAgICAgICAweDAxMDAsICAvLyBMYXRpbiBFeHRlbmRlZC1BCisgICAgICAgIDB4MDMwMCwgIC8vIENvbWJpbmluZyBEaWFjcml0aWNhbCBNYXJrcworICAgICAgICAweDIwMDAsICAvLyBHZW5lcmFsIFB1bmN0dWF0aW9uCisgICAgICAgIDB4MjA4MCwgIC8vIEN1cmVuY3kgU3ltYm9scworICAgICAgICAweDIxMDAsICAvLyBMZXR0ZXJsaWtlIFN5bWJvbHMgYW5kIE51bWJlciBGb3JtcworICAgICAgICAweDMwMDAgICAvLyBDSksgU3ltYm9scyBhbmQgUHVuY3R1YXRpb24KKyAgICB9OworCit9OworCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L1NlYXJjaEl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS90ZXh0L1NlYXJjaEl0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmI4YTM0NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvU2VhcmNoSXRlcmF0b3IuamF2YQpAQCAtMCwwICsxLDQzOCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9BdHRpYy9TZWFyY2hJdGVyYXRvci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDA0OjA3OjIzICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLnRleHQ7CisKK2ltcG9ydCBqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3I7CitpbXBvcnQgamF2YS50ZXh0LkJyZWFrSXRlcmF0b3I7CisKKy8qKgorICogPGNvZGU+U2VhcmNoSXRlcmF0b3I8L2NvZGU+IGlzIGFuIGFic3RyYWN0IGJhc2UgY2xhc3MgdGhhdCBwcm92aWRlcyBtZXRob2RzCisgKiB0byBzZWFyY2ggZm9yIGEgcGF0dGVybiB3aXRoaW4gYSB0ZXh0IHN0cmluZy4gIEluc3RhbmNlcyBvZgorICogPGNvZGU+U2VhcmNoSXRlcmF0b3I8L2NvZGU+IG1haW50YWluIGEgY3VycmVudCBwb3NpdGlvbiBhbmQgc2NhbiBvdmVyCisgKiB0aGUgdGFyZ2V0IHRleHQsIHJldHVybmluZyB0aGUgaW5kaWNlcyB0aGUgcGF0dGVybiBpcyBtYXRjaGVkCisgKiBhbmQgdGhlIGxlbmd0aCBvZiBlYWNoIG1hdGNoLgorICogPHA+CisgKiA8Y29kZT5TZWFyY2hJdGVyYXRvcjwvY29kZT4gaXMgYW4gYWJzdHJhY3QgYmFzZSBjbGFzcyB0aGF0IGRlZmluZXMgYQorICogcHJvdG9jb2wgZm9yIHRleHQgc2VhcmNoaW5nLiAgU3ViY2xhc3NlcyBwcm92aWRlIGNvbmNyZXRlIGltcGxlbWVudGF0aW9ucyBvZgorICogdmFyaW91cyBzZWFyY2ggYWxnb3JpdGhtcy4gIEZvciBleGFtcGxlLCB7QGxpbmsgU3RyaW5nU2VhcmNofQorICogaW1wbGVtZW50cyBsYW5ndWFnZS1zZW5zaXRpdmUgcGF0dGVybiBtYXRjaGluZyBiYXNlZCBvbiB0aGUgY29tcGFyaXNvbiBydWxlcworICogZGVmaW5lZCBpbiBhIHtAbGluayBqYXZhLnRleHQuUnVsZUJhc2VkQ29sbGF0b3IgUnVsZUJhc2VkQ29sbGF0b3J9IG9iamVjdC4KKyAqIDxwPgorICogSW50ZXJuYWxseSwgPGNvZGU+U2VhcmNoSXRlcmF0b3I8L2NvZGU+IHNjYW5zIHRleHQgdXNpbmcgYQorICoge0BsaW5rIENoYXJhY3Rlckl0ZXJhdG9yfSwgYW5kIGlzIHRodXMgYWJsZSB0byBzY2FuIHRleHQgaGVsZAorICogYnkgYW55IG9iamVjdCBpbXBsZW1lbnRpbmcgdGhhdCBwcm90b2NvbC4gQSA8Y29kZT5TdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcjwvY29kZT4KKyAqIGlzIHVzZWQgdG8gc2NhbiA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdHMgcGFzc2VkIHRvIDxjb2RlPnNldFRleHQ8L2NvZGU+LgorICogPHA+CisgKiA8Y29kZT5TZWFyY2hJdGVyYXRvcjwvY29kZT4gcHJvdmlkZXMgYW4gQVBJIHRoYXQgaXMgc2ltaWxhciB0byB0aGF0IG9mCisgKiBvdGhlciB0ZXh0IGl0ZXJhdGlvbiBjbGFzc2VzIHN1Y2ggYXMgPGNvZGU+QnJlYWtJdGVyYXRvcjwvY29kZT4uICBVc2luZyB0aGlzCisgKiBjbGFzcywgaXQgaXMgZWFzeSB0byBzY2FuIHRocm91Z2ggdGV4dCBsb29raW5nIGZvciBhbGwgb2NjdXJhbmNlcyBvZiBhCisgKiBnaXZlbiBwYXR0ZXJuLiAgVGhlIGZvbGxvd2luZyBleGFtcGxlIHVzZXMgYSA8Y29kZT5TdHJpbmdTZWFyY2g8L2NvZGU+IG9iamVjdCB0bworICogZmluZCBhbGwgaW5zdGFuY2VzIG9mICJmb3giIGluIHRoZSB0YXJnZXQgc3RyaW5nLiAgQW55IG90aGVyIHN1YmNsYXNzIG9mCisgKiA8Y29kZT5TZWFyY2hJdGVyYXRvcjwvY29kZT4gY2FuIGJlIHVzZWQgaW4gYW4gaWRlbnRpY2FsIG1hbm5lci4KKyAqIDxwcmU+PGNvZGU+CisgKiBTdHJpbmcgdGFyZ2V0ID0gIlRoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgdGhlIGxhenkgZm94IjsKKyAqIFN0cmluZyBwYXR0ZXJuID0gImZveCI7CisgKgorICogU2VhcmNoSXRlcmF0b3IgaXRlciA9IG5ldyBTdHJpbmdTZWFyY2gocGF0dGVybiwgdGFyZ2V0KTsKKyAqCisgKiBmb3IgKGludCBwb3MgPSBpdGVyLmZpcnN0KCk7IHBvcyAhPSBTZWFyY2hJdGVyYXRvci5ET05FOyBwb3MgPSBpdGVyLm5leHQoKSkgeworICogICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRm91bmQgbWF0Y2ggYXQgIiArIHBvcyArCisgKiAgICAgICAgICAgICAgICAgICAgICAgICIsIGxlbmd0aCBpcyAiICsgaXRlci5nZXRNYXRjaExlbmd0aCgpKTsKKyAqIH0KKyAqIDwvY29kZT48L3ByZT4KKyAqCisgKiBAc2VlIFN0cmluZ1NlYXJjaAorICovCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgU2VhcmNoSXRlcmF0b3IgeworICAgIC8qKgorICAgICAqIERPTkUgaXMgcmV0dXJuZWQgYnkgcHJldmlvdXMoKSBhbmQgbmV4dCgpIGFmdGVyIGFsbCB2YWxpZAorICAgICAqIG1hdGNoZXMgaGF2ZSBiZWVuIHJldHVybmVkLCBhbmQgYnkgZmlyc3QoKSBhbmQgbGFzdCgpIGlmCisgICAgICogdGhlcmUgYXJlIG5vIG1hdGNoZXMgYXQgYWxsLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERPTkUgPSAtMTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBQcml2YXRlIHZhbHVlIGluZGljYXRpbmcgdGhhdCB0aGUgaXRlcmF0b3IgaXMgcG9pbnRpbmcKKyAgICAgKiBiZWZvcmUgdGhlIGJlZ2lubmluZyBvZiB0aGUgdGFyZ2V0IHRleHQuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEJFRk9SRSA9IC0yOworCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBmaXJzdCBpbmRleCBhdCB3aGljaCB0aGUgdGFyZ2V0IHRleHQgbWF0Y2hlcyB0aGUgc2VhcmNoCisgICAgICogcGF0dGVybi4gIFRoZSBpdGVyYXRvciBpcyBhZGp1c3RlZCBzbyB0aGF0IGl0cyBjdXJyZW50IGluZGV4CisgICAgICogKGFzIHJldHVybmVkIGJ5IHtAbGluayAjZ2V0SW5kZXh9KSBpcyB0aGUgbWF0Y2ggcG9zaXNpdGlvbiBpZiBvbmUgd2FzIGZvdW5kCisgICAgICogYW5kIDxjb2RlPkRPTkU8L2NvZGU+IGlmIG9uZSB3YXMgbm90LgorICAgICAqCisgICAgICogQHJldHVybiBUaGUgY2hhcmFjdGVyIGluZGV4IG9mIHRoZSBmaXJzdCBtYXRjaCwgb3IgPGNvZGU+RE9ORTwvY29kZT4gaWYgdGhlcmUKKyAgICAgKiAgICAgICAgICBhcmUgbm8gbWF0Y2hlcy4KKyAgICAgKi8KKyAgICBmaW5hbCBwdWJsaWMgaW50IGZpcnN0KCkgeworICAgICAgICBzZXRJbmRleChCRUZPUkUpOworICAgICAgICByZXR1cm4gbmV4dCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgZmlyc3QgaW5kZXggZ3JlYXRlciB0aGFuIDx0dD5wb3M8L3R0PiBhdCB3aGljaCB0aGUgdGFyZ2V0CisgICAgICogdGV4dCBtYXRjaGVzIHRoZSBzZWFyY2ggcGF0dGVybi4gICBUaGUgaXRlcmF0b3IgaXMgYWRqdXN0ZWQgc28gdGhhdCBpdHMgY3VycmVudCBpbmRleAorICAgICAqIChhcyByZXR1cm5lZCBieSB7QGxpbmsgI2dldEluZGV4fSkgaXMgdGhlIG1hdGNoIHBvc2lzaXRpb24gaWYgb25lIHdhcyBmb3VuZAorICAgICAqIGFuZCA8Y29kZT5ET05FPC9jb2RlPiBpZiBvbmUgd2FzIG5vdC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gVGhlIGNoYXJhY3RlciBpbmRleCBvZiB0aGUgZmlyc3QgbWF0Y2ggZm9sbG93aW5nIDxjb2RlPnBvczwvY29kZT4sCisgICAgICogICAgICAgICAgb3IgPHR0PkRPTkU8L3R0PiBpZiB0aGVyZSBhcmUgbm8gbWF0Y2hlcy4KKyAgICAgKi8KKyAgICBmaW5hbCBwdWJsaWMgaW50IGZvbGxvd2luZyhpbnQgcG9zKSB7CisgICAgICAgIHNldEluZGV4KHBvcyk7CisgICAgICAgIHJldHVybiBuZXh0KCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbGFzdCBpbmRleCBpbiB0aGUgdGFyZ2V0IHRleHQgYXQgd2hpY2ggaXQgbWF0Y2hlcworICAgICAqIHRoZSBzZWFyY2ggcGF0dGVybiBhbmQgYWRqdXN0cyB0aGUgaXRlcmF0aW9uIHRvIHBvaW50IHRvIHRoYXQgcG9zaXRpb24uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgbWF0Y2gsIG9yIDx0dD5ET05FPC90dD4gaWYgdGhlcmUKKyAgICAgKiAgICAgICAgICBhcmUgbm8gbWF0Y2hlcy4KKyAgICAgKi8KKyAgICBmaW5hbCBwdWJsaWMgaW50IGxhc3QoKSB7CisgICAgICAgIHNldEluZGV4KERPTkUpOworICAgICAgICByZXR1cm4gcHJldmlvdXMoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGZpcnN0IGluZGV4IGxlc3MgdGhhbiA8Y29kZT5wb3M8L2NvZGU+IGF0IHdoaWNoIHRoZSB0YXJnZXQKKyAgICAgKiB0ZXh0IG1hdGNoZXMgdGhlIHNlYXJjaCBwYXR0ZXJuLiAgIFRoZSBpdGVyYXRvciBpcyBhZGp1c3RlZCBzbyB0aGF0IGl0cyBjdXJyZW50IGluZGV4CisgICAgICogKGFzIHJldHVybmVkIGJ5IHtAbGluayAjZ2V0SW5kZXh9KSBpcyB0aGUgbWF0Y2ggcG9zaXNpdGlvbiBpZiBvbmUgd2FzIGZvdW5kCisgICAgICogYW5kIDx0dD5ET05FPC90dD4gaWYgb25lIHdhcyBub3QuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIFRoZSBjaGFyYWN0ZXIgaW5kZXggb2YgdGhlIGZpcnN0IG1hdGNoIHByZWNlZGluZyA8Y29kZT5wb3M8L2NvZGU+LAorICAgICAqICAgICAgICAgIG9yIDxjb2RlPkRPTkU8L2NvZGU+IGlmIHRoZXJlIGFyZSBubyBtYXRjaGVzLgorICAgICAqLworICAgIGZpbmFsIHB1YmxpYyBpbnQgcHJlY2VkaW5nKGludCBwb3MpIHsKKyAgICAgICAgc2V0SW5kZXgocG9zKTsKKyAgICAgICAgcmV0dXJuIHByZXZpb3VzKCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgaW5kZXggb2YgdGhlIG5leHQgcG9pbnQgYXQgd2hpY2ggdGhlIHRleHQgbWF0Y2hlcyB0aGUKKyAgICAgKiBzZWFyY2ggcGF0dGVybiwgc3RhcnRpbmcgZnJvbSB0aGUgY3VycmVudCBwb3NpdGlvbgorICAgICAqIDxwPgorICAgICAqIEByZXR1cm4gVGhlIGluZGV4IG9mIHRoZSBuZXh0IG1hdGNoIGFmdGVyIHRoZSBjdXJyZW50IHBvc2l0aW9uLAorICAgICAqICAgICAgICAgIG9yIDxjb2RlPkRPTkU8L2NvZGU+IGlmIHRoZXJlIGFyZSBubyBtb3JlIG1hdGNoZXMuCisgICAgICoKKyAgICAgKiBAc2VlICNmaXJzdAorICAgICAqLworICAgIHB1YmxpYyBpbnQgbmV4dCgpIHsKKyAgICAgICAgaWYgKGluZGV4ID09IEJFRk9SRSl7CisgICAgICAgICAgICAvLyBTdGFydGluZyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0ZXh0CisgICAgICAgICAgICBpbmRleCA9IHRhcmdldC5nZXRCZWdpbkluZGV4KCk7CisgICAgICAgIH0gZWxzZSBpZiAobGVuZ3RoID4gMCkgeworICAgICAgICAgICAgLy8gRmluZGluZyB0aGUgbmV4dCBtYXRjaCBhZnRlciBhIHByZXZpb3VzIG9uZQorICAgICAgICAgICAgaW5kZXggKz0gb3ZlcmxhcCA/IDEgOiBsZW5ndGg7CisgICAgICAgIH0KKyAgICAgICAgaW5kZXggLT0gMTsKKyAgICAgICAgCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGxlbmd0aCA9IDA7CisgICAgICAgICAgICBpbmRleCA9IGhhbmRsZU5leHQoaW5kZXggKyAxKTsKKyAgICAgICAgfSB3aGlsZSAoaW5kZXggIT0gRE9ORSAmJiAhaXNCcmVha1VuaXQoaW5kZXgsIGluZGV4K2xlbmd0aCkpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGluZGV4OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgaW5kZXggb2YgdGhlIHByZXZpb3VzIHBvaW50IGF0IHdoaWNoIHRoZSB0ZXh0IG1hdGNoZXMKKyAgICAgKiB0aGUgc2VhcmNoIHBhdHRlcm4sIHN0YXJ0aW5nIGF0IHRoZSBjdXJyZW50IHBvc2l0aW9uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIFRoZSBpbmRleCBvZiB0aGUgcHJldmlvdXMgbWF0Y2ggYmVmb3JlIHRoZSBjdXJyZW50IHBvc2l0aW9uLAorICAgICAqICAgICAgICAgIG9yIDxjb2RlPkRPTkU8L2NvZGU+IGlmIHRoZXJlIGFyZSBubyBtb3JlIG1hdGNoZXMuCisgICAgICovCisgICAgcHVibGljIGludCBwcmV2aW91cygpIHsKKyAgICAgICAgaWYgKGluZGV4ID09IERPTkUpIHsKKyAgICAgICAgICAgIGluZGV4ID0gdGFyZ2V0LmdldEVuZEluZGV4KCk7CisgICAgICAgIH0gZWxzZSBpZiAobGVuZ3RoID4gMCkgeworICAgICAgICAgICAgLy8gRmluZGluZyB0aGUgcHJldmlvdXMgbWF0Y2ggYmVmb3JlIGEgZm9sbG93aW5nIG9uZQorICAgICAgICAgICAgaW5kZXggPSBvdmVybGFwID8gaW5kZXggKyBsZW5ndGggLSAxIDogaW5kZXg7CisgICAgICAgIH0KKyAgICAgICAgaW5kZXggKz0gMTsKKyAgICAgICAgCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGxlbmd0aCA9IDA7CisgICAgICAgICAgICBpbmRleCA9IGhhbmRsZVByZXYoaW5kZXggLSAxKTsKKyAgICAgICAgfSB3aGlsZSAoaW5kZXggIT0gRE9ORSAmJiAhaXNCcmVha1VuaXQoaW5kZXgsIGluZGV4K2xlbmd0aCkpOworCisgICAgICAgIGlmIChpbmRleCA9PSBET05FKSB7CisgICAgICAgICAgICBpbmRleCA9IEJFRk9SRTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZ2V0SW5kZXgoKTsKKyAgICB9CisKKworCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBjdXJyZW50IGluZGV4IGluIHRoZSB0ZXh0IGJlaW5nIHNlYXJjaGVkLgorICAgICAqIElmIHRoZSBpdGVyYXRpb24gaGFzIGdvbmUgcGFzdCB0aGUgZW5kIG9mIHRoZSB0ZXh0CisgICAgICogKG9yIHBhc3QgdGhlIGJlZ2lubmluZyBmb3IgYSBiYWNrd2FyZHMgc2VhcmNoKSwgCisgICAgICoge0BsaW5rICNET05FfSBpcyByZXR1cm5lZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEluZGV4KCkgeworICAgICAgICByZXR1cm4gaW5kZXggPT0gQkVGT1JFID8gRE9ORSA6IGluZGV4OworICAgIH0KKworICAgIC8qKgorICAgICAqIERldGVybWluZXMgd2hldGhlciBvdmVybGFwcGluZyBtYXRjaGVzIGFyZSByZXR1cm5lZC4gIElmIHRoaXMKKyAgICAgKiBwcm9wZXJ0eSBpcyA8Y29kZT50cnVlPC9jb2RlPiwgbWF0Y2hlcyB0aGF0IGJlZ2luIHdpdGhpbiB0aGUKKyAgICAgKiBib3VuZHJ5IG9mIHRoZSBwcmV2aW91cyBtYXRjaCBhcmUgY29uc2lkZXJlZCB2YWxpZCBhbmQgd2lsbAorICAgICAqIGJlIHJldHVybmVkLiAgRm9yIGV4YW1wbGUsIHdoZW4gc2VhcmNoaW5nIGZvciAiYWJhYiIgaW4gdGhlCisgICAgICogdGFyZ2V0IHRleHQgImFiYWJhYiIsIGJvdGggb2Zmc2V0cyAwIGFuZCAyIHdpbGwgYmUgcmV0dXJuZWQKKyAgICAgKiBhcyB2YWxpZCBtYXRjaGVzIGlmIHRoaXMgcHJvcGVydHkgaXMgPGNvZGU+dHJ1ZTwvY29kZT4uCisgICAgICogPHA+CisgICAgICogVGhlIGRlZmF1bHQgc2V0dGluZyBvZiB0aGlzIHByb3BlcnR5IGlzIDx0dD50cnVlPC90dD4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRPdmVybGFwcGluZyhib29sZWFuIGFsbG93T3ZlcmxhcCkgeworICAgICAgICBvdmVybGFwID0gYWxsb3dPdmVybGFwOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgb3ZlcmxhcHBpbmcgbWF0Y2hlcyBhcmUgcmV0dXJuZWQuCisgICAgICoKKyAgICAgKiBAc2VlICNzZXRPdmVybGFwcGluZworICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzT3ZlcmxhcHBpbmcoKSB7CisgICAgICAgIHJldHVybiBvdmVybGFwOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGV4dCBpbiB0aGUgdGFyZ2V0IHdoaWNoIG1hdGNoZXMgdGhlIHNlYXJjaAorICAgICAqIHBhdHRlcm4uICBUaGlzIGNhbGwgcmV0dXJucyBhIHZhbGlkIHJlc3VsdCBvbmx5IGFmdGVyIGEgc3VjY2Vzc2Z1bAorICAgICAqIGNhbGwgdG8ge0BsaW5rICNmaXJzdH0sIHtAbGluayAjbmV4dH0sIHtAbGluayAjcHJldmlvdXN9LCBvciB7QGxpbmsgI2xhc3R9LgorICAgICAqIEp1c3QgYWZ0ZXIgY29uc3RydWN0aW9uLCBvciBhZnRlciBhIHNlYXJjaGluZyBtZXRob2QgcmV0dXJucworICAgICAqIDx0dD5ET05FPC90dD4sIHRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIDAuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIFRoZSBsZW5ndGggb2YgdGhlIG1hdGNoIGluIHRoZSB0YXJnZXQgdGV4dCwgb3IgMCBpZiB0aGVyZQorICAgICAqICAgICAgICAgIGlzIG5vIG1hdGNoIGN1cnJlbnRseS4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldE1hdGNoTGVuZ3RoKCkgeworICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB0aGUgQnJlYWtJdGVyYXRvciB0aGF0IHdpbGwgYmUgdXNlZCB0byByZXN0cmljdCB0aGUgcG9pbnRzCisgICAgICogYXQgd2hpY2ggbWF0Y2hlcyBhcmUgZGV0ZWN0ZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYnJlYWtlciAgIEEge0BsaW5rIGphdmEudGV4dC5CcmVha0l0ZXJhdG9yIEJyZWFrSXRlcmF0b3J9CisgICAgICogICAgICAgICAgICAgICAgICB0aGF0IHdpbGwgYmUgdXNlZCB0byByZXN0cmljdCB0aGUgcG9pbnRzCisgICAgICogICAgICAgICAgICAgICAgICBhdCB3aGljaCBtYXRjaGVzIGFyZSBkZXRlY3RlZC4gIElmIGEgbWF0Y2ggaXMgZm91bmQsIGJ1dCB0aGUgbWF0Y2gncyBzdGFydAorICAgICAqICAgICAgICAgICAgICAgICAgb3IgZW5kIGluZGV4IGlzIG5vdCBhIGJvdW5kYXJ5IGFzIGRldGVybWluZWQgYnkKKyAgICAgKiAgICAgICAgICAgICAgICAgIHRoZSA8dHQ+QnJlYWtJdGVyYXRvcjwvdHQ+LCB0aGUgbWF0Y2ggd2lsbCBiZSByZWplY3RlZCBhbmQKKyAgICAgKiAgICAgICAgICAgICAgICAgIGFub3RoZXIgd2lsbCBiZSBzZWFyY2hlZCBmb3IuCisgICAgICoKKyAgICAgKiAgICAgICAgICAgICAgICAgIElmIHRoaXMgcGFyYW1ldGVyIGlzIDx0dD5udWxsPC90dD4sIG5vIGJyZWFrCisgICAgICogICAgICAgICAgICAgICAgICBkZXRlY3Rpb24gaXMgYXR0ZW1wdGVkLgorICAgICAqCisgICAgICogQHNlZSAjZ2V0QnJlYWtJdGVyYXRvcgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEJyZWFrSXRlcmF0b3IoQnJlYWtJdGVyYXRvciBpdGVyYXRvcikgeworICAgICAgICBicmVha2VyID0gaXRlcmF0b3I7CisgICAgICAgIGlmIChicmVha2VyICE9IG51bGwpIHsKKyAgICAgICAgICAgIGJyZWFrZXIuc2V0VGV4dCh0YXJnZXQpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIEJyZWFrSXRlcmF0b3IgdGhhdCBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBwb2ludHMKKyAgICAgKiBhdCB3aGljaCBtYXRjaGVzIGFyZSBkZXRlY3RlZC4gIFRoaXMgd2lsbCBiZSB0aGUgc2FtZSBvYmplY3QKKyAgICAgKiB0aGF0IHdhcyBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yIG9yIHRvIDxjb2RlPnNldEJyZWFrSXRlcmF0b3I8L2NvZGU+LgorICAgICAqIE5vdGUgdGhhdCA8dHQ+bnVsbDwvdHQ+IGlzIGEgbGVnYWwgdmFsdWU7IGl0IG1lYW5zIHRoYXQgYnJlYWsKKyAgICAgKiBkZXRlY3Rpb24gc2hvdWxkIG5vdCBiZSBhdHRlbXB0ZWQuCisgICAgICoKKyAgICAgKiBAc2VlICNzZXRCcmVha0l0ZXJhdG9yCisgICAgICovCisgICAgcHVibGljIEJyZWFrSXRlcmF0b3IgZ2V0QnJlYWtJdGVyYXRvcigpIHsKKyAgICAgICAgcmV0dXJuIGJyZWFrZXI7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFNldCB0aGUgdGFyZ2V0IHRleHQgd2hpY2ggc2hvdWxkIGJlIHNlYXJjaGVkIGFuZCByZXNldHMgdGhlCisgICAgICogaXRlcmF0b3IncyBwb3NpdGlvbiB0byBwb2ludCBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSB0YXJnZXQgdGV4dC4KKyAgICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gcmUtdXNlIGFuIGl0ZXJhdG9yIHRvCisgICAgICogc2VhcmNoIGZvciB0aGUgc2FtZSBwYXR0ZXJuIHdpdGhpbiBhIGRpZmZlcmVudCBib2R5IG9mIHRleHQuCisgICAgICoKKyAgICAgKiBAc2VlICNnZXRUYXJnZXQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRUYXJnZXQoQ2hhcmFjdGVySXRlcmF0b3IgaXRlcmF0b3IpIHsKKyAgICAgICAgdGFyZ2V0ID0gaXRlcmF0b3I7CisgICAgICAgIGlmIChicmVha2VyICE9IG51bGwpIHsKKyAgICAgICAgICAgIGJyZWFrZXIuc2V0VGV4dCh0YXJnZXQpOworICAgICAgICB9CisgICAgICAgIHNldEluZGV4KEJFRk9SRSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgdGFyZ2V0IHRleHQgd2hpY2ggaXMgYmVpbmcgc2VhcmNoZWQKKyAgICAgKgorICAgICAqIEBzZWUgI3NldFRhcmdldAorICAgICAqLworICAgIHB1YmxpYyBDaGFyYWN0ZXJJdGVyYXRvciBnZXRUYXJnZXQoKSB7CisgICAgICAgIHJldHVybiB0YXJnZXQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHRleHQgdGhhdCB3YXMgbWF0Y2hlZCBieSB0aGUgbW9zdCByZWNlbnQgY2FsbCB0byAKKyAgICAgKiB7QGxpbmsgI2ZpcnN0fSwge0BsaW5rICNuZXh0fSwge0BsaW5rICNwcmV2aW91c30sIG9yIHtAbGluayAjbGFzdH0uCisgICAgICogSWYgdGhlIGl0ZXJhdG9yIGlzIG5vdCBwb2ludGluZyBhdCBhIHZhbGlkIG1hdGNoIChlLmcuIGp1c3QgYWZ0ZXIKKyAgICAgKiBjb25zdHJ1Y3Rpb24gb3IgYWZ0ZXIgPHR0PkRPTkU8L3R0PiBoYXMgYmVlbiByZXR1cm5lZCwgcmV0dXJucworICAgICAqIGFuIGVtcHR5IHN0cmluZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldE1hdGNoZWRUZXh0KCkgeworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAKKyAgICAgICAgaWYgKGxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgICAgIGZvciAoY2hhciBjID0gdGFyZ2V0LnNldEluZGV4KGluZGV4KTsgaSA8IGxlbmd0aDsgYyA9IHRhcmdldC5uZXh0KCksIGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBidWZmZXIudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBQcm90ZWN0ZWQgaW50ZXJmYWNlIGZvciBzdWJjbGFzc2VzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RvciBmb3IgdXNlIGJ5IHN1YmNsYXNzZXMKKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gdGFyZ2V0ICAgIFRoZSB0YXJnZXQgdGV4dCB0byBiZSBzZWFyY2hlZC4gIFRoaXMgaXMgZm9yIGludGVybmFsCisgICAgICogICAgICAgICAgICAgICAgICB1c2UgYnkgdGhpcyBjbGFzcy4gIFN1YmNsYXNzZXMgbmVlZCB0byBtYWludGFpbiB0aGVpcgorICAgICAqICAgICAgICAgICAgICAgICAgb3duIHJlZmVyZW5jZSB0byBvciBpdGVyYXRvciBvdmVyIHRoZSB0YXJnZXQgdGV4dAorICAgICAqICAgICAgICAgICAgICAgICAgZm9yIHVzZSBieSB0aGVpciB7QGxpbmsgI2hhbmRsZU5leHQgaGFuZGxlTmV4dH0gYW5kCisgICAgICogICAgICAgICAgICAgICAgICB7QGxpbmsgI2hhbmRsZVByZXYgaGFuZGxlUHJldn0gbWV0aG9kcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBicmVha2VyICAgQSB7QGxpbmsgQnJlYWtJdGVyYXRvcn0gdGhhdCBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBwb2ludHMKKyAgICAgKiAgICAgICAgICAgICAgICAgIGF0IHdoaWNoIG1hdGNoZXMgYXJlIGRldGVjdGVkLiAgSWYgPHR0PmhhbmRsZU5leHQ8L3R0PiBvcgorICAgICAqICAgICAgICAgICAgICAgICAgPHR0PmhhbmRsZVByZXY8L3R0PiBmaW5kcyBhIG1hdGNoLCBidXQgdGhlIG1hdGNoJ3Mgc3RhcnQKKyAgICAgKiAgICAgICAgICAgICAgICAgIG9yIGVuZCBpbmRleCBpcyBub3QgYSBib3VuZGFyeSBhcyBkZXRlcm1pbmVkIGJ5CisgICAgICogICAgICAgICAgICAgICAgICB0aGUgPHR0PkJyZWFrSXRlcmF0b3I8L3R0PiwgdGhlIG1hdGNoIGlzIHJlamVjdGVkIGFuZCAKKyAgICAgKiAgICAgICAgICAgICAgICAgIDx0dD5oYW5kbGVOZXh0PC90dD4gb3IgPHR0PmhhbmRsZVByZXY8L3R0PiBpcyBjYWxsZWQgYWdhaW4uCisgICAgICogICAgICAgICAgICAgICAgICBJZiB0aGlzIHBhcmFtZXRlciBpcyA8dHQ+bnVsbDwvdHQ+LCBubyBicmVhaworICAgICAqICAgICAgICAgICAgICAgICAgZGV0ZWN0aW9uIGlzIGF0dGVtcHRlZC4KKyAgICAgKiAgICAgICAgICAgICAgICAgIAorICAgICAqLworICAgIHByb3RlY3RlZCBTZWFyY2hJdGVyYXRvcihDaGFyYWN0ZXJJdGVyYXRvciB0YXJnZXQsIEJyZWFrSXRlcmF0b3IgYnJlYWtlcikKKyAgICB7CisgICAgICAgIHRoaXMudGFyZ2V0ID0gdGFyZ2V0OworICAgICAgICAKKyAgICAgICAgaWYgKGJyZWFrZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgdGhpcy5icmVha2VyID0gKEJyZWFrSXRlcmF0b3IpYnJlYWtlci5jbG9uZSgpOworICAgICAgICAgICAgdGhpcy5icmVha2VyLnNldFRleHQodGFyZ2V0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaW5kZXggPSB0YXJnZXQuZ2V0QmVnaW5JbmRleCgpOworICAgICAgICBsZW5ndGggPSAwOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFic3RyYWN0IG1ldGhvZCB3aGljaCBzdWJjbGFzc2VzIG92ZXJyaWRlIHRvIHByb3ZpZGUgdGhlIG1lY2hhbmlzbQorICAgICAqIGZvciBmaW5kaW5nIHRoZSBuZXh0IG1hdGNoIGluIHRoZSB0YXJnZXQgdGV4dC4gIFRoaXMgYWxsb3dzIGRpZmZlcmVudAorICAgICAqIHN1YmNsYXNzZXMgdG8gcHJvdmlkZSBkaWZmZXJlbnQgc2VhcmNoIGFsZ29yaXRobXMuCisgICAgICogPHA+CisgICAgICogSWYgYSBtYXRjaCBpcyBmb3VuZCwgdGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCByZXR1cm4gdGhlIGluZGV4IGF0CisgICAgICogd2hpY2ggdGhlIG1hdGNoIHN0YXJ0cyBhbmQgc2hvdWxkIGNhbGwge0BsaW5rICNzZXRNYXRjaExlbmd0aCBzZXRNYXRjaExlbmd0aH0KKyAgICAgKiB3aXRoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgdGFyZ2V0CisgICAgICogdGV4dCB0aGF0IG1ha2UgdXAgdGhlIG1hdGNoLiAgSWYgbm8gbWF0Y2ggaXMgZm91bmQsIHRoZSBtZXRob2QKKyAgICAgKiBzaG91bGQgcmV0dXJuIERPTkUgYW5kIHNob3VsZCBub3QgY2FsbCA8dHQ+c2V0TWF0Y2hMZW5ndGg8L3R0Pi4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gc3RhcnRBdCAgIFRoZSBpbmRleCBpbiB0aGUgdGFyZ2V0IHRleHQgYXQgd2hpY2ggdGhlIHNlYXJjaAorICAgICAqICAgICAgICAgICAgICAgICAgc2hvdWxkIHN0YXJ0LgorICAgICAqCisgICAgICogQHNlZSAjc2V0TWF0Y2hMZW5ndGgKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW50IGhhbmRsZU5leHQoaW50IHN0YXJ0QXQpOworCisgICAgLyoqCisgICAgICogQWJzdHJhY3QgbWV0aG9kIHdoaWNoIHN1YmNsYXNzZXMgb3ZlcnJpZGUgdG8gcHJvdmlkZSB0aGUgbWVjaGFuaXNtCisgICAgICogZm9yIGZpbmRpbmcgdGhlIHByZXZpb3VzIG1hdGNoIGluIHRoZSB0YXJnZXQgdGV4dC4gIFRoaXMgYWxsb3dzIGRpZmZlcmVudAorICAgICAqIHN1YmNsYXNzZXMgdG8gcHJvdmlkZSBkaWZmZXJlbnQgc2VhcmNoIGFsZ29yaXRobXMuCisgICAgICogPHA+CisgICAgICogSWYgYSBtYXRjaCBpcyBmb3VuZCwgdGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCByZXR1cm4gdGhlIGluZGV4IGF0CisgICAgICogd2hpY2ggdGhlIG1hdGNoIHN0YXJ0cyBhbmQgc2hvdWxkIGNhbGwge0BsaW5rICNzZXRNYXRjaExlbmd0aCBzZXRNYXRjaExlbmd0aH0KKyAgICAgKiB3aXRoIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgdGFyZ2V0CisgICAgICogdGV4dCB0aGF0IG1ha2UgdXAgdGhlIG1hdGNoLiAgSWYgbm8gbWF0Y2ggaXMgZm91bmQsIHRoZSBtZXRob2QKKyAgICAgKiBzaG91bGQgcmV0dXJuIERPTkUgYW5kIHNob3VsZCBub3QgY2FsbCA8dHQ+c2V0TWF0Y2hMZW5ndGg8L3R0Pi4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gc3RhcnRBdCAgIFRoZSBpbmRleCBpbiB0aGUgdGFyZ2V0IHRleHQgYXQgd2hpY2ggdGhlIHNlYXJjaAorICAgICAqICAgICAgICAgICAgICAgICAgc2hvdWxkIHN0YXJ0LgorICAgICAqCisgICAgICogQHNlZSAjc2V0TWF0Y2hMZW5ndGgKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW50IGhhbmRsZVByZXYoaW50IHN0YXJ0QXQpOworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgbGVuZ3RoIG9mIHRoZSBjdXJyZW50bHkgbWF0Y2hlZCBzdHJpbmcgaW4gdGhlIHRhcmdldCB0ZXh0LgorICAgICAqIFN1YmNsYXNzZXMnIDxjb2RlPmhhbmRsZU5leHQ8L2NvZGU+IGFuZCA8Y29kZT5oYW5kbGVQcmV2PC9jb2RlPgorICAgICAqIG1ldGhvZHMgc2hvdWxkIGNhbGwgdGhpcyB3aGVuIHRoZXkgZmluZCBhIG1hdGNoIGluIHRoZSB0YXJnZXQgdGV4dC4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBzZXRNYXRjaExlbmd0aChpbnQgbGVuZ3RoKSB7CisgICAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFByaXZhdGVzCisgICAgLy8KKyAgICAKKyAgICAvKioKKyAgICAgKiBJbnRlcm5hbCBtZXRob2QgdXNlZCBieSBwcmVjZWRpbmcgYW5kIGZvbGxvd2luZy4gIFNldHMgdGhlIGluZGV4CisgICAgICogdG8gcG9pbnQgdG8gdGhlIGdpdmVuIHBvc2l0aW9uLCBhbmQgY2xlYXJzIGFueSBzdGF0ZSB0aGF0J3MKKyAgICAgKiBhZmZlY3RlZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgc2V0SW5kZXgoaW50IHBvcykgeworICAgICAgICBpbmRleCA9IHBvczsKKyAgICAgICAgbGVuZ3RoID0gMDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHRhcmdldCB0ZXh0IGJvdW5kZWQgYnkgPGNvZGU+c3RhcnQ8L2NvZGU+IGFuZAorICAgICAqIDxjb2RlPmVuZDwvY29kZT4gaXMgb25lIG9yIG1vcmUgd2hvbGUgdW5pdHMgb2YgdGV4dCBhcyBkZXRlcm1pbmVkIGJ5CisgICAgICogdGhlIGN1cnJlbnQgPGNvZGU+QnJlYWtJdGVyYXRvcjwvY29kZT4uCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGlzQnJlYWtVbml0KGludCBzdGFydCwgaW50IGVuZCkKKyAgICB7CisgICAgICAgIGlmIChicmVha2VyID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9IAorICAgICAgICBib29sZWFuIHN0YXJ0Qm91bmQgPSBicmVha2VyLmlzQm91bmRhcnkoc3RhcnQpOworICAgICAgICBib29sZWFuIGVuZEJvdW5kID0gKGVuZCA9PSB0YXJnZXQuZ2V0RW5kSW5kZXgoKSkgfHwgYnJlYWtlci5pc0JvdW5kYXJ5KGVuZCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gc3RhcnRCb3VuZCAmJiBlbmRCb3VuZDsKKyAgICB9CisgICAgCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gUHJpdmF0ZSBkYXRhLi4uCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgcHJpdmF0ZSBpbnQgICAgICAgICAgICAgICAgIGluZGV4OyAgICAgICAgICAvLyBDdXJyZW50IHBvc2l0aW9uIGluIHRoZSB0YXJnZXQgdGV4dAorICAgIHByaXZhdGUgaW50ICAgICAgICAgICAgICAgICBsZW5ndGg7ICAgICAgICAgLy8gTGVuZ3RoIG9mIG1hdGNoZWQgdGV4dCwgb3IgMAorICAgIHByaXZhdGUgYm9vbGVhbiAgICAgICAgICAgICBvdmVybGFwID0gdHJ1ZTsgLy8gUmV0dXJuIG92ZXJsYXBwaW5nIG1hdGNoZXM/CisgICAgcHJpdmF0ZSBDaGFyYWN0ZXJJdGVyYXRvciAgIHRhcmdldDsgICAgICAgICAvLyBUYXJnZXQgdGV4dCB0byBiZSBzZWFyY2hlZAorICAgIHByaXZhdGUgQnJlYWtJdGVyYXRvciAgICAgICBicmVha2VyOyAgICAgICAgLy8gQnJlYWsgaXRlcmF0b3IgdG8gY29uc3RyYWluIG1hdGNoZXMKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIERlYnVnZ2luZyBzdXBwb3J0Li4uCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBib29sZWFuIERFQlVHID0gZmFsc2U7CisKKyAgICBzdGF0aWMgdm9pZCBkZWJ1ZyhTdHJpbmcgc3RyKSB7CisgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbihzdHIpOworICAgIH0KK307ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9TaW1wbGVEYXRlRm9ybWF0LmphdmEgYi9zcmMvY29tL2libS90ZXh0L1NpbXBsZURhdGVGb3JtYXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MWViZWRjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9TaW1wbGVEYXRlRm9ybWF0LmphdmEKQEAgLTAsMCArMSwxMzk4IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L0F0dGljL1NpbXBsZURhdGVGb3JtYXQuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8xMS8yMSAwNjo1NDo1MyAkIAorICogJFJldmlzaW9uOiAxLjcgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS50ZXh0OworCitpbXBvcnQgY29tLmlibS50ZXh0LkRhdGVGb3JtYXQ7CitpbXBvcnQgamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQ7CitpbXBvcnQgamF2YS50ZXh0LkZpZWxkUG9zaXRpb247CitpbXBvcnQgamF2YS50ZXh0LlBhcnNlUG9zaXRpb247CisKK2ltcG9ydCBjb20uaWJtLnV0aWwuVGltZVpvbmU7CitpbXBvcnQgY29tLmlibS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOworaW1wb3J0IGNvbS5pYm0udXRpbC5TaW1wbGVUaW1lWm9uZTsKK2ltcG9ydCBjb20uaWJtLnV0aWwuR3JlZ29yaWFuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS5pby5PYmplY3RJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7CitpbXBvcnQgamF2YS5sYW5nLlN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb247CisKKy8qKgorICogPGNvZGU+U2ltcGxlRGF0ZUZvcm1hdDwvY29kZT4gaXMgYSBjb25jcmV0ZSBjbGFzcyBmb3IgZm9ybWF0dGluZyBhbmQKKyAqIHBhcnNpbmcgZGF0ZXMgaW4gYSBsb2NhbGUtc2Vuc2l0aXZlIG1hbm5lci4gSXQgYWxsb3dzIGZvciBmb3JtYXR0aW5nCisgKiAoZGF0ZSAtPiB0ZXh0KSwgcGFyc2luZyAodGV4dCAtPiBkYXRlKSwgYW5kIG5vcm1hbGl6YXRpb24uCisgKgorICogPHA+CisgKiA8Y29kZT5TaW1wbGVEYXRlRm9ybWF0PC9jb2RlPiBhbGxvd3MgeW91IHRvIHN0YXJ0IGJ5IGNob29zaW5nCisgKiBhbnkgdXNlci1kZWZpbmVkIHBhdHRlcm5zIGZvciBkYXRlLXRpbWUgZm9ybWF0dGluZy4gSG93ZXZlciwgeW91CisgKiBhcmUgZW5jb3VyYWdlZCB0byBjcmVhdGUgYSBkYXRlLXRpbWUgZm9ybWF0dGVyIHdpdGggZWl0aGVyCisgKiA8Y29kZT5nZXRUaW1lSW5zdGFuY2U8L2NvZGU+LCA8Y29kZT5nZXREYXRlSW5zdGFuY2U8L2NvZGU+LCBvcgorICogPGNvZGU+Z2V0RGF0ZVRpbWVJbnN0YW5jZTwvY29kZT4gaW4gPGNvZGU+RGF0ZUZvcm1hdDwvY29kZT4uIEVhY2gKKyAqIG9mIHRoZXNlIGNsYXNzIG1ldGhvZHMgY2FuIHJldHVybiBhIGRhdGUvdGltZSBmb3JtYXR0ZXIgaW5pdGlhbGl6ZWQKKyAqIHdpdGggYSBkZWZhdWx0IGZvcm1hdCBwYXR0ZXJuLiBZb3UgbWF5IG1vZGlmeSB0aGUgZm9ybWF0IHBhdHRlcm4KKyAqIHVzaW5nIHRoZSA8Y29kZT5hcHBseVBhdHRlcm48L2NvZGU+IG1ldGhvZHMgYXMgZGVzaXJlZC4KKyAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZXNlIG1ldGhvZHMsIHNlZQorICoge0BsaW5rIERhdGVGb3JtYXR9LgorICoKKyAqIDxwPgorICogPHN0cm9uZz5UaW1lIEZvcm1hdCBTeW50YXg6PC9zdHJvbmc+CisgKiA8cD4KKyAqIFRvIHNwZWNpZnkgdGhlIHRpbWUgZm9ybWF0IHVzZSBhIDxlbT50aW1lIHBhdHRlcm48L2VtPiBzdHJpbmcuCisgKiBJbiB0aGlzIHBhdHRlcm4sIGFsbCBBU0NJSSBsZXR0ZXJzIGFyZSByZXNlcnZlZCBhcyBwYXR0ZXJuIGxldHRlcnMsCisgKiB3aGljaCBhcmUgZGVmaW5lZCBhcyB0aGUgZm9sbG93aW5nOgorICogPGJsb2NrcXVvdGU+CisgKiA8cHJlPgorICogU3ltYm9sICAgTWVhbmluZyAgICAgICAgICAgICAgICAgUHJlc2VudGF0aW9uICAgICAgICBFeGFtcGxlCisgKiAtLS0tLS0gICAtLS0tLS0tICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0gICAgICAgIC0tLS0tLS0KKyAqIEcgICAgICAgIGVyYSBkZXNpZ25hdG9yICAgICAgICAgIChUZXh0KSAgICAgICAgICAgICAgQUQKKyAqIHkgICAgICAgIHllYXIgICAgICAgICAgICAgICAgICAgIChOdW1iZXIpICAgICAgICAgICAgMTk5NgorICogdSAgICAgICAgZXh0ZW5kZWQgeWVhciAgICAgICAgICAgKE51bWJlcikgICAgICAgICAgICA0NjAxCisgKiBNICAgICAgICBtb250aCBpbiB5ZWFyICAgICAgICAgICAoVGV4dCAmIE51bWJlcikgICAgIEp1bHkgJiAwNworICogZCAgICAgICAgZGF5IGluIG1vbnRoICAgICAgICAgICAgKE51bWJlcikgICAgICAgICAgICAxMAorICogaCAgICAgICAgaG91ciBpbiBhbS9wbSAoMX4xMikgICAgKE51bWJlcikgICAgICAgICAgICAxMgorICogSCAgICAgICAgaG91ciBpbiBkYXkgKDB+MjMpICAgICAgKE51bWJlcikgICAgICAgICAgICAwCisgKiBtICAgICAgICBtaW51dGUgaW4gaG91ciAgICAgICAgICAoTnVtYmVyKSAgICAgICAgICAgIDMwCisgKiBzICAgICAgICBzZWNvbmQgaW4gbWludXRlICAgICAgICAoTnVtYmVyKSAgICAgICAgICAgIDU1CisgKiBTICAgICAgICBtaWxsaXNlY29uZCAgICAgICAgICAgICAoTnVtYmVyKSAgICAgICAgICAgIDk3OAorICogRSAgICAgICAgZGF5IGluIHdlZWsgICAgICAgICAgICAgKFRleHQpICAgICAgICAgICAgICBUdWVzZGF5CisgKiBEICAgICAgICBkYXkgaW4geWVhciAgICAgICAgICAgICAoTnVtYmVyKSAgICAgICAgICAgIDE4OQorICogRiAgICAgICAgZGF5IG9mIHdlZWsgaW4gbW9udGggICAgKE51bWJlcikgICAgICAgICAgICAyICgybmQgV2VkIGluIEp1bHkpCisgKiB3ICAgICAgICB3ZWVrIGluIHllYXIgICAgICAgICAgICAoTnVtYmVyKSAgICAgICAgICAgIDI3CisgKiBXICAgICAgICB3ZWVrIGluIG1vbnRoICAgICAgICAgICAoTnVtYmVyKSAgICAgICAgICAgIDIKKyAqIGEgICAgICAgIGFtL3BtIG1hcmtlciAgICAgICAgICAgIChUZXh0KSAgICAgICAgICAgICAgUE0KKyAqIGsgICAgICAgIGhvdXIgaW4gZGF5ICgxfjI0KSAgICAgIChOdW1iZXIpICAgICAgICAgICAgMjQKKyAqIEsgICAgICAgIGhvdXIgaW4gYW0vcG0gKDB+MTEpICAgIChOdW1iZXIpICAgICAgICAgICAgMAorICogeiAgICAgICAgdGltZSB6b25lICAgICAgICAgICAgICAgKFRleHQpICAgICAgICAgICAgICBQYWNpZmljIFN0YW5kYXJkIFRpbWUKKyAqICcgICAgICAgIGVzY2FwZSBmb3IgdGV4dCAgICAgICAgIChEZWxpbWl0ZXIpCisgKiAnJyAgICAgICBzaW5nbGUgcXVvdGUgICAgICAgICAgICAoTGl0ZXJhbCkgICAgICAgICAgICcKKyAqIDwvcHJlPgorICogPC9ibG9ja3F1b3RlPgorICogVGhlIGNvdW50IG9mIHBhdHRlcm4gbGV0dGVycyBkZXRlcm1pbmUgdGhlIGZvcm1hdC4KKyAqIDxwPgorICogPHN0cm9uZz4oVGV4dCk8L3N0cm9uZz46IDQgb3IgbW9yZSBwYXR0ZXJuIGxldHRlcnMtLXVzZSBmdWxsIGZvcm0sCisgKiAmbHQ7IDQtLXVzZSBzaG9ydCBvciBhYmJyZXZpYXRlZCBmb3JtIGlmIG9uZSBleGlzdHMuCisgKiA8cD4KKyAqIDxzdHJvbmc+KE51bWJlcik8L3N0cm9uZz46IHRoZSBtaW5pbXVtIG51bWJlciBvZiBkaWdpdHMuIFNob3J0ZXIKKyAqIG51bWJlcnMgYXJlIHplcm8tcGFkZGVkIHRvIHRoaXMgYW1vdW50LiBZZWFyIGlzIGhhbmRsZWQgc3BlY2lhbGx5OworICogdGhhdCBpcywgaWYgdGhlIGNvdW50IG9mICd5JyBpcyAyLCB0aGUgWWVhciB3aWxsIGJlIHRydW5jYXRlZCB0byAyIGRpZ2l0cy4KKyAqIDxwPgorICogPHN0cm9uZz4oVGV4dCAmIE51bWJlcik8L3N0cm9uZz46IDMgb3Igb3ZlciwgdXNlIHRleHQsIG90aGVyd2lzZSB1c2UgbnVtYmVyLgorICogPHA+CisgKiBBbnkgY2hhcmFjdGVycyBpbiB0aGUgcGF0dGVybiB0aGF0IGFyZSBub3QgaW4gdGhlIHJhbmdlcyBvZiBbJ2EnLi4neiddCisgKiBhbmQgWydBJy4uJ1onXSB3aWxsIGJlIHRyZWF0ZWQgYXMgcXVvdGVkIHRleHQuIEZvciBpbnN0YW5jZSwgY2hhcmFjdGVycworICogbGlrZSAnOicsICcuJywgJyAnLCAnIycgYW5kICdAJyB3aWxsIGFwcGVhciBpbiB0aGUgcmVzdWx0aW5nIHRpbWUgdGV4dAorICogZXZlbiB0aGV5IGFyZSBub3QgZW1icmFjZWQgd2l0aGluIHNpbmdsZSBxdW90ZXMuCisgKiA8cD4KKyAqIEEgcGF0dGVybiBjb250YWluaW5nIGFueSBpbnZhbGlkIHBhdHRlcm4gbGV0dGVyIHdpbGwgcmVzdWx0IGluIGEgdGhyb3duCisgKiBleGNlcHRpb24gZHVyaW5nIGZvcm1hdHRpbmcgb3IgcGFyc2luZy4KKyAqCisgKiA8cD4KKyAqIDxzdHJvbmc+RXhhbXBsZXMgVXNpbmcgdGhlIFVTIExvY2FsZTo8L3N0cm9uZz4KKyAqIDxibG9ja3F1b3RlPgorICogPHByZT4KKyAqIEZvcm1hdCBQYXR0ZXJuICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdAorICogLS0tLS0tLS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLQorICogInl5eXkuTU0uZGQgRyAnYXQnIGhoOm1tOnNzIHoiICAgIC0+PiAgMTk5Ni4wNy4xMCBBRCBhdCAxNTowODo1NiBQRFQKKyAqICJFRUUsIE1NTSBkLCAnJ3l5IiAgICAgICAgICAgICAgICAtPj4gIFdlZCwgSnVseSAxMCwgJzk2CisgKiAiaDptbSBhIiAgICAgICAgICAgICAgICAgICAgICAgICAgLT4+ICAxMjowOCBQTQorICogImhoICdvJydjbG9jaycgYSwgenp6eiIgICAgICAgICAgIC0+PiAgMTIgbydjbG9jayBQTSwgUGFjaWZpYyBEYXlsaWdodCBUaW1lCisgKiAiSzptbSBhLCB6IiAgICAgICAgICAgICAgICAgICAgICAgLT4+ICAwOjAwIFBNLCBQU1QKKyAqICJ5eXl5eS5NTU1NTS5kZCBHR0cgaGg6bW0gYWFhIiAgICAtPj4gIDE5OTYuSnVseS4xMCBBRCAxMjowOCBQTQorICogPC9wcmU+CisgKiA8L2Jsb2NrcXVvdGU+CisgKiA8c3Ryb25nPkNvZGUgU2FtcGxlOjwvc3Ryb25nPgorICogPGJsb2NrcXVvdGU+CisgKiA8cHJlPgorICogU2ltcGxlVGltZVpvbmUgcGR0ID0gbmV3IFNpbXBsZVRpbWVab25lKC04ICogNjAgKiA2MCAqIDEwMDAsICJQU1QiKTsKKyAqIHBkdC5zZXRTdGFydFJ1bGUoRGF0ZUZpZWxkcy5BUFJJTCwgMSwgRGF0ZUZpZWxkcy5TVU5EQVksIDIqNjAqNjAqMTAwMCk7CisgKiBwZHQuc2V0RW5kUnVsZShEYXRlRmllbGRzLk9DVE9CRVIsIC0xLCBEYXRlRmllbGRzLlNVTkRBWSwgMio2MCo2MCoxMDAwKTsKKyAqIDxicj4KKyAqIC8vIEZvcm1hdCB0aGUgY3VycmVudCB0aW1lLgorICogU2ltcGxlRGF0ZUZvcm1hdCBmb3JtYXR0ZXIKKyAqICAgICA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0ICgieXl5eS5NTS5kZCBHICdhdCcgaGg6bW06c3MgYSB6enoiKTsKKyAqIERhdGUgY3VycmVudFRpbWVfMSA9IG5ldyBEYXRlKCk7CisgKiBTdHJpbmcgZGF0ZVN0cmluZyA9IGZvcm1hdHRlci5mb3JtYXQoY3VycmVudFRpbWVfMSk7CisgKiA8YnI+CisgKiAvLyBQYXJzZSB0aGUgcHJldmlvdXMgc3RyaW5nIGJhY2sgaW50byBhIERhdGUuCisgKiBQYXJzZVBvc2l0aW9uIHBvcyA9IG5ldyBQYXJzZVBvc2l0aW9uKDApOworICogRGF0ZSBjdXJyZW50VGltZV8yID0gZm9ybWF0dGVyLnBhcnNlKGRhdGVTdHJpbmcsIHBvcyk7CisgKiA8L3ByZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqIEluIHRoZSBleGFtcGxlLCB0aGUgdGltZSB2YWx1ZSA8Y29kZT5jdXJyZW50VGltZV8yPC9jb2RlPiBvYnRhaW5lZCBmcm9tCisgKiBwYXJzaW5nIHdpbGwgYmUgZXF1YWwgdG8gPGNvZGU+Y3VycmVudFRpbWVfMTwvY29kZT4uIEhvd2V2ZXIsIHRoZXkgbWF5IG5vdCBiZQorICogZXF1YWwgaWYgdGhlIGFtL3BtIG1hcmtlciAnYScgaXMgbGVmdCBvdXQgZnJvbSB0aGUgZm9ybWF0IHBhdHRlcm4gd2hpbGUKKyAqIHRoZSAiaG91ciBpbiBhbS9wbSIgcGF0dGVybiBzeW1ib2wgaXMgdXNlZC4gVGhpcyBpbmZvcm1hdGlvbiBsb3NzIGNhbgorICogaGFwcGVuIHdoZW4gZm9ybWF0dGluZyB0aGUgdGltZSBpbiBQTS4KKyAqCisgKiA8cD4KKyAqIFdoZW4gcGFyc2luZyBhIGRhdGUgc3RyaW5nIHVzaW5nIHRoZSBhYmJyZXZpYXRlZCB5ZWFyIHBhdHRlcm4gKCJ5IiBvciAieXkiKSwKKyAqIFNpbXBsZURhdGVGb3JtYXQgbXVzdCBpbnRlcnByZXQgdGhlIGFiYnJldmlhdGVkIHllYXIKKyAqIHJlbGF0aXZlIHRvIHNvbWUgY2VudHVyeS4gIEl0IGRvZXMgdGhpcyBieSBhZGp1c3RpbmcgZGF0ZXMgdG8gYmUKKyAqIHdpdGhpbiA4MCB5ZWFycyBiZWZvcmUgYW5kIDIwIHllYXJzIGFmdGVyIHRoZSB0aW1lIHRoZSBTaW1wbGVEYXRlRm9ybWF0CisgKiBpbnN0YW5jZSBpcyBjcmVhdGVkLiBGb3IgZXhhbXBsZSwgdXNpbmcgYSBwYXR0ZXJuIG9mICJNTS9kZC95eSIgYW5kIGEKKyAqIFNpbXBsZURhdGVGb3JtYXQgaW5zdGFuY2UgY3JlYXRlZCBvbiBKYW4gMSwgMTk5NywgIHRoZSBzdHJpbmcKKyAqICIwMS8xMS8xMiIgd291bGQgYmUgaW50ZXJwcmV0ZWQgYXMgSmFuIDExLCAyMDEyIHdoaWxlIHRoZSBzdHJpbmcgIjA1LzA0LzY0IgorICogd291bGQgYmUgaW50ZXJwcmV0ZWQgYXMgTWF5IDQsIDE5NjQuCisgKiBEdXJpbmcgcGFyc2luZywgb25seSBzdHJpbmdzIGNvbnNpc3Rpbmcgb2YgZXhhY3RseSB0d28gZGlnaXRzLCBhcyBkZWZpbmVkIGJ5CisgKiB7QGxpbmsgQ2hhcmFjdGVyI2lzRGlnaXQoY2hhcil9LCB3aWxsIGJlIHBhcnNlZCBpbnRvIHRoZSBkZWZhdWx0IGNlbnR1cnkuCisgKiBBbnkgb3RoZXIgbnVtZXJpYyBzdHJpbmcsIHN1Y2ggYXMgYSBvbmUgZGlnaXQgc3RyaW5nLCBhIHRocmVlIG9yIG1vcmUgZGlnaXQKKyAqIHN0cmluZywgb3IgYSB0d28gZGlnaXQgc3RyaW5nIHRoYXQgaXNuJ3QgYWxsIGRpZ2l0cyAoZm9yIGV4YW1wbGUsICItMSIpLCBpcworICogaW50ZXJwcmV0ZWQgbGl0ZXJhbGx5LiAgU28gIjAxLzAyLzMiIG9yICIwMS8wMi8wMDMiIGFyZSBwYXJzZWQsIHVzaW5nIHRoZQorICogc2FtZSBwYXR0ZXJuLCBhcyBKYW4gMiwgMyBBRC4gIExpa2V3aXNlLCAiMDEvMDIvLTMiIGlzIHBhcnNlZCBhcyBKYW4gMiwgNCBCQy4KKyAqCisgKiA8cD4KKyAqIElmIHRoZSB5ZWFyIHBhdHRlcm4gaGFzIG1vcmUgdGhhbiB0d28gJ3knIGNoYXJhY3RlcnMsIHRoZSB5ZWFyIGlzCisgKiBpbnRlcnByZXRlZCBsaXRlcmFsbHksIHJlZ2FyZGxlc3Mgb2YgdGhlIG51bWJlciBvZiBkaWdpdHMuICBTbyB1c2luZyB0aGUKKyAqIHBhdHRlcm4gIk1NL2RkL3l5eXkiLCAiMDEvMTEvMTIiIHBhcnNlcyB0byBKYW4gMTEsIDEyIEEuRC4KKyAqCisgKiA8cD4KKyAqIEZvciB0aW1lIHpvbmVzIHRoYXQgaGF2ZSBubyBuYW1lcywgdXNlIHN0cmluZ3MgR01UK2hvdXJzOm1pbnV0ZXMgb3IKKyAqIEdNVC1ob3VyczptaW51dGVzLgorICoKKyAqIDxwPgorICogVGhlIGNhbGVuZGFyIGRlZmluZXMgd2hhdCBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLCB0aGUgZmlyc3Qgd2VlaworICogb2YgdGhlIHllYXIsIHdoZXRoZXIgaG91cnMgYXJlIHplcm8gYmFzZWQgb3Igbm90ICgwIHZzIDEyIG9yIDI0KSwgYW5kIHRoZQorICogdGltZSB6b25lLiBUaGVyZSBpcyBvbmUgY29tbW9uIGRlY2ltYWwgZm9ybWF0IHRvIGhhbmRsZSBhbGwgdGhlIG51bWJlcnM7CisgKiB0aGUgZGlnaXQgY291bnQgaXMgaGFuZGxlZCBwcm9ncmFtbWF0aWNhbGx5IGFjY29yZGluZyB0byB0aGUgcGF0dGVybi4KKyAqCisgKiBAc2VlICAgICAgICAgIGNvbS5pYm0udXRpbC5DYWxlbmRhcgorICogQHNlZSAgICAgICAgICBjb20uaWJtLnV0aWwuR3JlZ29yaWFuQ2FsZW5kYXIKKyAqIEBzZWUgICAgICAgICAgY29tLmlibS51dGlsLlRpbWVab25lCisgKiBAc2VlICAgICAgICAgIERhdGVGb3JtYXQKKyAqIEBzZWUgICAgICAgICAgRGF0ZUZvcm1hdFN5bWJvbHMKKyAqIEBzZWUgICAgICAgICAgRGVjaW1hbEZvcm1hdAorICogQHZlcnNpb24gICAgICAxLjUxLCAwOS8yNC85OQorICogQGF1dGhvciAgICAgICBNYXJrIERhdmlzLCBDaGVuLUxpZWggSHVhbmcsIEFsYW4gTGl1CisgKi8KK3B1YmxpYyBjbGFzcyBTaW1wbGVEYXRlRm9ybWF0IGV4dGVuZHMgRGF0ZUZvcm1hdCB7CisKKyAgICAvLyB0aGUgb2ZmaWNpYWwgc2VyaWFsIHZlcnNpb24gSUQgd2hpY2ggc2F5cyBjcnlwdGljYWxseQorICAgIC8vIHdoaWNoIHZlcnNpb24gd2UncmUgY29tcGF0aWJsZSB3aXRoCisgICAgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDQ3NzQ4ODE5NzA1NTg4NzUwMjRMOworCisgICAgLy8gdGhlIGludGVybmFsIHNlcmlhbCB2ZXJzaW9uIHdoaWNoIHNheXMgd2hpY2ggdmVyc2lvbiB3YXMgd3JpdHRlbgorICAgIC8vIC0gMCAoZGVmYXVsdCkgZm9yIHZlcnNpb24gdXAgdG8gSkRLIDEuMS4zCisgICAgLy8gLSAxIGZvciB2ZXJzaW9uIGZyb20gSkRLIDEuMS40LCB3aGljaCBpbmNsdWRlcyBhIG5ldyBmaWVsZAorICAgIHN0YXRpYyBmaW5hbCBpbnQgY3VycmVudFNlcmlhbFZlcnNpb24gPSAxOworCisgICAgLyoqCisgICAgICogVGhlIHZlcnNpb24gb2YgdGhlIHNlcmlhbGl6ZWQgZGF0YSBvbiB0aGUgc3RyZWFtLiAgUG9zc2libGUgdmFsdWVzOgorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+PGI+MDwvYj4gb3Igbm90IHByZXNlbnQgb24gc3RyZWFtOiBKREsgMS4xLjMuICBUaGlzIHZlcnNpb24KKyAgICAgKiBoYXMgbm8gPGNvZGU+ZGVmYXVsdENlbnR1cnlTdGFydDwvY29kZT4gb24gc3RyZWFtLgorICAgICAqIDxsaT48Yj4xPC9iPiBKREsgMS4xLjQgb3IgbGF0ZXIuICBUaGlzIHZlcnNpb24gYWRkcworICAgICAqIDxjb2RlPmRlZmF1bHRDZW50dXJ5U3RhcnQ8L2NvZGU+LgorICAgICAqIDwvdWw+CisgICAgICogV2hlbiBzdHJlYW1pbmcgb3V0IHRoaXMgY2xhc3MsIHRoZSBtb3N0IHJlY2VudCBmb3JtYXQKKyAgICAgKiBhbmQgdGhlIGhpZ2hlc3QgYWxsb3dhYmxlIDxjb2RlPnNlcmlhbFZlcnNpb25PblN0cmVhbTwvY29kZT4KKyAgICAgKiBpcyB3cml0dGVuLgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2luY2UgSkRLMS4xLjQKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBzZXJpYWxWZXJzaW9uT25TdHJlYW0gPSBjdXJyZW50U2VyaWFsVmVyc2lvbjsKKworICAgIC8qKgorICAgICAqIFRoZSBwYXR0ZXJuIHN0cmluZyBvZiB0aGlzIGZvcm1hdHRlci4gIFRoaXMgaXMgYWx3YXlzIGEgbm9uLWxvY2FsaXplZAorICAgICAqIHBhdHRlcm4uICBNYXkgbm90IGJlIG51bGwuICBTZWUgY2xhc3MgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgcGF0dGVybjsKKworICAgIC8qKgorICAgICAqIFRoZSBzeW1ib2xzIHVzZWQgYnkgdGhpcyBmb3JtYXR0ZXIgZm9yIHdlZWsgbmFtZXMsIG1vbnRoIG5hbWVzLAorICAgICAqIGV0Yy4gIE1heSBub3QgYmUgbnVsbC4KKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNlZSBEYXRlRm9ybWF0U3ltYm9scworICAgICAqLworICAgIHByaXZhdGUgRGF0ZUZvcm1hdFN5bWJvbHMgZm9ybWF0RGF0YTsKKworICAgIC8qKgorICAgICAqIFdlIG1hcCBkYXRlcyB3aXRoIHR3by1kaWdpdCB5ZWFycyBpbnRvIHRoZSBjZW50dXJ5IHN0YXJ0aW5nIGF0CisgICAgICogPGNvZGU+ZGVmYXVsdENlbnR1cnlTdGFydDwvY29kZT4sIHdoaWNoIG1heSBiZSBhbnkgZGF0ZS4gIE1heQorICAgICAqIG5vdCBiZSBudWxsLgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2luY2UgSkRLMS4xLjQKKyAgICAgKi8KKyAgICBwcml2YXRlIERhdGUgZGVmYXVsdENlbnR1cnlTdGFydDsKKworICAgIHRyYW5zaWVudCBwcml2YXRlIGludCBkZWZhdWx0Q2VudHVyeVN0YXJ0WWVhcjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBtaWxsaXNQZXJIb3VyID0gNjAgKiA2MCAqIDEwMDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IG1pbGxpc1Blck1pbnV0ZSA9IDYwICogMTAwMDsKKworICAgIC8vIEZvciB0aW1lIHpvbmVzIHRoYXQgaGF2ZSBubyBuYW1lcywgdXNlIHN0cmluZ3MgR01UK21pbnV0ZXMgYW5kCisgICAgLy8gR01ULW1pbnV0ZXMuIEZvciBpbnN0YW5jZSwgaW4gRnJhbmNlIHRoZSB0aW1lIHpvbmUgaXMgR01UKzYwLgorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBHTVRfUExVUyA9ICJHTVQrIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgR01UX01JTlVTID0gIkdNVC0iOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBHTVQgPSAiR01UIjsKKworICAgIC8qKgorICAgICAqIENhY2hlIHRvIGhvbGQgdGhlIERhdGVUaW1lUGF0dGVybnMgb2YgYSBMb2NhbGUuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgSGFzaHRhYmxlIGNhY2hlZExvY2FsZURhdGEgPSBuZXcgSGFzaHRhYmxlKDMpOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgU2ltcGxlRGF0ZUZvcm1hdCB1c2luZyB0aGUgZGVmYXVsdCBwYXR0ZXJuIGZvciB0aGUgZGVmYXVsdAorICAgICAqIGxvY2FsZS4gIDxiPk5vdGU6PC9iPiBOb3QgYWxsIGxvY2FsZXMgc3VwcG9ydCBTaW1wbGVEYXRlRm9ybWF0OyBmb3IgZnVsbAorICAgICAqIGdlbmVyYWxpdHksIHVzZSB0aGUgZmFjdG9yeSBtZXRob2RzIGluIHRoZSBEYXRlRm9ybWF0IGNsYXNzLgorICAgICAqCisgICAgICogQHNlZSBEYXRlRm9ybWF0CisgICAgICovCisgICAgcHVibGljIFNpbXBsZURhdGVGb3JtYXQoKSB7CisgICAgICAgIHRoaXMoU0hPUlQsIFNIT1JULCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBTaW1wbGVEYXRlRm9ybWF0IHVzaW5nIHRoZSBnaXZlbiBwYXR0ZXJuIGluIHRoZSBkZWZhdWx0CisgICAgICogbG9jYWxlLiAgPGI+Tm90ZTo8L2I+IE5vdCBhbGwgbG9jYWxlcyBzdXBwb3J0IFNpbXBsZURhdGVGb3JtYXQ7IGZvciBmdWxsCisgICAgICogZ2VuZXJhbGl0eSwgdXNlIHRoZSBmYWN0b3J5IG1ldGhvZHMgaW4gdGhlIERhdGVGb3JtYXQgY2xhc3MuCisgICAgICovCisgICAgcHVibGljIFNpbXBsZURhdGVGb3JtYXQoU3RyaW5nIHBhdHRlcm4pCisgICAgeworICAgICAgICB0aGlzKHBhdHRlcm4sIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIFNpbXBsZURhdGVGb3JtYXQgdXNpbmcgdGhlIGdpdmVuIHBhdHRlcm4gYW5kIGxvY2FsZS4KKyAgICAgKiA8Yj5Ob3RlOjwvYj4gTm90IGFsbCBsb2NhbGVzIHN1cHBvcnQgU2ltcGxlRGF0ZUZvcm1hdDsgZm9yIGZ1bGwKKyAgICAgKiBnZW5lcmFsaXR5LCB1c2UgdGhlIGZhY3RvcnkgbWV0aG9kcyBpbiB0aGUgRGF0ZUZvcm1hdCBjbGFzcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgU2ltcGxlRGF0ZUZvcm1hdChTdHJpbmcgcGF0dGVybiwgTG9jYWxlIGxvYykKKyAgICB7CisgICAgICAgIHRoaXMucGF0dGVybiA9IHBhdHRlcm47CisgICAgICAgIHRoaXMuZm9ybWF0RGF0YSA9IG5ldyBEYXRlRm9ybWF0U3ltYm9scyhsb2MpOworICAgICAgICBpbml0aWFsaXplKGxvYyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgU2ltcGxlRGF0ZUZvcm1hdCB1c2luZyB0aGUgZ2l2ZW4gcGF0dGVybiBhbmQKKyAgICAgKiBsb2NhbGUtc3BlY2lmaWMgc3ltYm9sIGRhdGEuCisgICAgICovCisgICAgcHVibGljIFNpbXBsZURhdGVGb3JtYXQoU3RyaW5nIHBhdHRlcm4sIERhdGVGb3JtYXRTeW1ib2xzIGZvcm1hdERhdGEpCisgICAgeworICAgICAgICB0aGlzLnBhdHRlcm4gPSBwYXR0ZXJuOworICAgICAgICB0aGlzLmZvcm1hdERhdGEgPSAoRGF0ZUZvcm1hdFN5bWJvbHMpIGZvcm1hdERhdGEuY2xvbmUoKTsKKyAgICAgICAgaW5pdGlhbGl6ZShMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKiBQYWNrYWdlLXByaXZhdGUsIGNhbGxlZCBieSBEYXRlRm9ybWF0IGZhY3RvcnkgbWV0aG9kcyAqLworICAgIFNpbXBsZURhdGVGb3JtYXQoaW50IHRpbWVTdHlsZSwgaW50IGRhdGVTdHlsZSwgTG9jYWxlIGxvYykgeworICAgICAgICAvKiB0cnkgdGhlIGNhY2hlIGZpcnN0ICovCisgICAgICAgIFN0cmluZ1tdIGRhdGVUaW1lUGF0dGVybnMgPSAoU3RyaW5nW10pIGNhY2hlZExvY2FsZURhdGEuZ2V0KGxvYyk7CisgICAgICAgIGlmIChkYXRlVGltZVBhdHRlcm5zID09IG51bGwpIHsgLyogY2FjaGUgbWlzcyAqLworICAgICAgICAgICAgUmVzb3VyY2VCdW5kbGUgciA9IFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZQorICAgICAgICAgICAgKCJqYXZhLnRleHQucmVzb3VyY2VzLkxvY2FsZUVsZW1lbnRzIiwgbG9jKTsKKyAgICAgICAgICAgIGRhdGVUaW1lUGF0dGVybnMgPSByLmdldFN0cmluZ0FycmF5KCJEYXRlVGltZVBhdHRlcm5zIik7CisgICAgICAgICAgICAvKiB1cGRhdGUgY2FjaGUgKi8KKyAgICAgICAgICAgIGNhY2hlZExvY2FsZURhdGEucHV0KGxvYywgZGF0ZVRpbWVQYXR0ZXJucyk7CisgICAgICAgIH0KKwlmb3JtYXREYXRhID0gbmV3IERhdGVGb3JtYXRTeW1ib2xzKGxvYyk7CisJaWYgKCh0aW1lU3R5bGUgPj0gMCkgJiYgKGRhdGVTdHlsZSA+PSAwKSkgeworCSAgT2JqZWN0W10gZGF0ZVRpbWVBcmdzID0ge2RhdGVUaW1lUGF0dGVybnNbdGltZVN0eWxlXSwKKwkJCSAgICAgICBkYXRlVGltZVBhdHRlcm5zW2RhdGVTdHlsZSArIDRdfTsKKwkgIHBhdHRlcm4gPSBNZXNzYWdlRm9ybWF0LmZvcm1hdChkYXRlVGltZVBhdHRlcm5zWzhdLCBkYXRlVGltZUFyZ3MpOworCX0KKwllbHNlIGlmICh0aW1lU3R5bGUgPj0gMCkgeworCSAgcGF0dGVybiA9IGRhdGVUaW1lUGF0dGVybnNbdGltZVN0eWxlXTsKKwl9CisJZWxzZSBpZiAoZGF0ZVN0eWxlID49IDApIHsKKyAgICAgICAgICAgIHBhdHRlcm4gPSBkYXRlVGltZVBhdHRlcm5zW2RhdGVTdHlsZSArIDRdOworCX0KKwllbHNlIHsKKwkgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiTm8gZGF0ZSBvciB0aW1lIHN0eWxlIHNwZWNpZmllZCIpOworCX0KKworCWluaXRpYWxpemUobG9jKTsKKyAgICB9CisKKyAgICAvKiBJbml0aWFsaXplIGNhbGVuZGFyIGFuZCBudW1iZXJGb3JtYXQgZmllbGRzICovCisgICAgcHJpdmF0ZSB2b2lkIGluaXRpYWxpemUoTG9jYWxlIGxvYykgeworICAgICAgICAvLyBUaGUgZm9ybWF0IG9iamVjdCBtdXN0IGJlIGNvbnN0cnVjdGVkIHVzaW5nIHRoZSBzeW1ib2xzIGZvciB0aGlzIHpvbmUuCisgICAgICAgIC8vIEhvd2V2ZXIsIHRoZSBjYWxlbmRhciBzaG91bGQgdXNlIHRoZSBjdXJyZW50IGRlZmF1bHQgVGltZVpvbmUuCisgICAgICAgIC8vIElmIHRoaXMgaXMgbm90IGNvbnRhaW5lZCBpbiB0aGUgbG9jYWxlIHpvbmUgc3RyaW5ncywgdGhlbiB0aGUgem9uZQorICAgICAgICAvLyB3aWxsIGJlIGZvcm1hdHRlZCB1c2luZyBnZW5lcmljIEdNVCsvLUg6TU0gbm9tZW5jbGF0dXJlLgorICAgICAgICBjYWxlbmRhciA9IENhbGVuZGFyLmdldEluc3RhbmNlKFRpbWVab25lLmdldERlZmF1bHQoKSwgbG9jKTsKKyAgICAgICAgbnVtYmVyRm9ybWF0ID0gTnVtYmVyRm9ybWF0LmdldEluc3RhbmNlKGxvYyk7CisgICAgICAgIG51bWJlckZvcm1hdC5zZXRHcm91cGluZ1VzZWQoZmFsc2UpOworICAgICAgICBpZiAobnVtYmVyRm9ybWF0IGluc3RhbmNlb2YgRGVjaW1hbEZvcm1hdCkKKyAgICAgICAgICAgICgoRGVjaW1hbEZvcm1hdCludW1iZXJGb3JtYXQpLnNldERlY2ltYWxTZXBhcmF0b3JBbHdheXNTaG93bihmYWxzZSk7CisgICAgICAgIG51bWJlckZvcm1hdC5zZXRQYXJzZUludGVnZXJPbmx5KHRydWUpOyAvKiBTbyB0aGF0IGRkLk1NLnl5IGNhbiBiZSBwYXJzZWQgKi8KKyAgICAgICAgbnVtYmVyRm9ybWF0LnNldE1pbmltdW1GcmFjdGlvbkRpZ2l0cygwKTsgLy8gVG8gcHJldmVudCAiSmFuIDEuMDAsIDE5OTcuMDAiCisKKyAgICAgICAgaW5pdGlhbGl6ZURlZmF1bHRDZW50dXJ5KCk7CisgICAgfQorCisgICAgLyogSW5pdGlhbGl6ZSB0aGUgZmllbGRzIHdlIHVzZSB0byBkaXNhbWJpZ3VhdGUgYW1iaWd1b3VzIHllYXJzLiBTZXBhcmF0ZQorICAgICAqIHNvIHdlIGNhbiBjYWxsIGl0IGZyb20gcmVhZE9iamVjdCgpLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBpbml0aWFsaXplRGVmYXVsdENlbnR1cnkoKSB7CisgICAgICAgIGNhbGVuZGFyLnNldFRpbWUoIG5ldyBEYXRlKCkgKTsKKyAgICAgICAgY2FsZW5kYXIuYWRkKCBDYWxlbmRhci5ZRUFSLCAtODAgKTsKKyAgICAgICAgcGFyc2VBbWJpZ3VvdXNEYXRlc0FzQWZ0ZXIoY2FsZW5kYXIuZ2V0VGltZSgpKTsKKyAgICB9CisKKyAgICAvKiBEZWZpbmUgb25lLWNlbnR1cnkgd2luZG93IGludG8gd2hpY2ggdG8gZGlzYW1iaWd1YXRlIGRhdGVzIHVzaW5nCisgICAgICogdHdvLWRpZ2l0IHllYXJzLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBwYXJzZUFtYmlndW91c0RhdGVzQXNBZnRlcihEYXRlIHN0YXJ0RGF0ZSkgeworICAgICAgICBkZWZhdWx0Q2VudHVyeVN0YXJ0ID0gc3RhcnREYXRlOworICAgICAgICBjYWxlbmRhci5zZXRUaW1lKHN0YXJ0RGF0ZSk7CisgICAgICAgIGRlZmF1bHRDZW50dXJ5U3RhcnRZZWFyID0gY2FsZW5kYXIuZ2V0KENhbGVuZGFyLllFQVIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIDEwMC15ZWFyIHBlcmlvZCAyLWRpZ2l0IHllYXJzIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgYmVpbmcgaW4KKyAgICAgKiB0byBiZWdpbiBvbiB0aGUgZGF0ZSB0aGUgdXNlciBzcGVjaWZpZXMuCisgICAgICogQHBhcmFtIHN0YXJ0RGF0ZSBEdXJpbmcgcGFyc2luZywgdHdvIGRpZ2l0IHllYXJzIHdpbGwgYmUgcGxhY2VkIGluIHRoZSByYW5nZQorICAgICAqIDxjb2RlPnN0YXJ0RGF0ZTwvY29kZT4gdG8gPGNvZGU+c3RhcnREYXRlICsgMTAwIHllYXJzPC9jb2RlPi4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXQyRGlnaXRZZWFyU3RhcnQoRGF0ZSBzdGFydERhdGUpIHsKKyAgICAgICAgcGFyc2VBbWJpZ3VvdXNEYXRlc0FzQWZ0ZXIoc3RhcnREYXRlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBiZWdpbm5pbmcgZGF0ZSBvZiB0aGUgMTAwLXllYXIgcGVyaW9kIDItZGlnaXQgeWVhcnMgYXJlIGludGVycHJldGVkCisgICAgICogYXMgYmVpbmcgd2l0aGluLgorICAgICAqIEByZXR1cm4gdGhlIHN0YXJ0IG9mIHRoZSAxMDAteWVhciBwZXJpb2QgaW50byB3aGljaCB0d28gZGlnaXQgeWVhcnMgYXJlCisgICAgICogcGFyc2VkCisgICAgICovCisgICAgcHVibGljIERhdGUgZ2V0MkRpZ2l0WWVhclN0YXJ0KCkgeworICAgICAgICByZXR1cm4gZGVmYXVsdENlbnR1cnlTdGFydDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgRGF0ZUZvcm1hdAorICAgICAqIDxwPkZvcm1hdHMgYSBkYXRlIG9yIHRpbWUsIHdoaWNoIGlzIHRoZSBzdGFuZGFyZCBtaWxsaXMKKyAgICAgKiBzaW5jZSBKYW51YXJ5IDEsIDE5NzAsIDAwOjAwOjAwIEdNVC4KKyAgICAgKiA8cD5FeGFtcGxlOiB1c2luZyB0aGUgVVMgbG9jYWxlOgorICAgICAqICJ5eXl5Lk1NLmRkIEcgJ2F0JyBISDptbTpzcyB6enoiIC0+PiAxOTk2LjA3LjEwIEFEIGF0IDE1OjA4OjU2IFBEVAorICAgICAqIEBwYXJhbSBkYXRlIHRoZSBkYXRlLXRpbWUgdmFsdWUgdG8gYmUgZm9ybWF0dGVkIGludG8gYSBkYXRlLXRpbWUgc3RyaW5nLgorICAgICAqIEBwYXJhbSB0b0FwcGVuZFRvIHdoZXJlIHRoZSBuZXcgZGF0ZS10aW1lIHRleHQgaXMgdG8gYmUgYXBwZW5kZWQuCisgICAgICogQHBhcmFtIHBvcyB0aGUgZm9ybWF0dGluZyBwb3NpdGlvbi4gT24gaW5wdXQ6IGFuIGFsaWdubWVudCBmaWVsZCwKKyAgICAgKiBpZiBkZXNpcmVkLiBPbiBvdXRwdXQ6IHRoZSBvZmZzZXRzIG9mIHRoZSBhbGlnbm1lbnQgZmllbGQuCisgICAgICogQHJldHVybiB0aGUgZm9ybWF0dGVkIGRhdGUtdGltZSBzdHJpbmcuCisgICAgICogQHNlZSBEYXRlRm9ybWF0CisgICAgICovCisgICAgcHVibGljIFN0cmluZ0J1ZmZlciBmb3JtYXQoRGF0ZSBkYXRlLCBTdHJpbmdCdWZmZXIgdG9BcHBlbmRUbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWVsZFBvc2l0aW9uIHBvcykKKyAgICB7CisgICAgICAgIC8vIEluaXRpYWxpemUKKyAgICAgICAgcG9zLnNldEJlZ2luSW5kZXgoMCk7CisgICAgICAgIHBvcy5zZXRFbmRJbmRleCgwKTsKKworICAgICAgICAvLyBDb252ZXJ0IGlucHV0IGRhdGUgdG8gdGltZSBmaWVsZCBsaXN0CisgICAgICAgIGNhbGVuZGFyLnNldFRpbWUoZGF0ZSk7CisKKyAgICAgICAgYm9vbGVhbiBpblF1b3RlID0gZmFsc2U7IC8vIHRydWUgd2hlbiBiZXR3ZWVuIHNpbmdsZSBxdW90ZXMKKyAgICAgICAgY2hhciBwcmV2Q2ggPSAwOyAvLyBwcmV2aW91cyBwYXR0ZXJuIGNoYXJhY3RlcgorICAgICAgICBpbnQgY291bnQgPSAwOyAgLy8gbnVtYmVyIG9mIHRpbWUgcHJldkNoIHJlcGVhdGVkCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxwYXR0ZXJuLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGNoYXIgY2ggPSBwYXR0ZXJuLmNoYXJBdChpKTsKKyAgICAgICAgICAgIC8vIFVzZSBzdWJGb3JtYXQoKSB0byBmb3JtYXQgYSByZXBlYXRlZCBwYXR0ZXJuIGNoYXJhY3RlcgorICAgICAgICAgICAgLy8gd2hlbiBhIGRpZmZlcmVudCBwYXR0ZXJuIG9yIG5vbi1wYXR0ZXJuIGNoYXJhY3RlciBpcyBzZWVuCisgICAgICAgICAgICBpZiAoY2ggIT0gcHJldkNoICYmIGNvdW50ID4gMCkgeworICAgICAgICAgICAgICAgIHRvQXBwZW5kVG8uYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgc3ViRm9ybWF0KHByZXZDaCwgY291bnQsIHRvQXBwZW5kVG8ubGVuZ3RoKCksIHBvcywgZm9ybWF0RGF0YSkpOworICAgICAgICAgICAgICAgIGNvdW50ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjaCA9PSAnXCcnKSB7CisgICAgICAgICAgICAgICAgLy8gQ29uc2VjdXRpdmUgc2luZ2xlIHF1b3RlcyBhcmUgYSBzaW5nbGUgcXVvdGUgbGl0ZXJhbCwKKyAgICAgICAgICAgICAgICAvLyBlaXRoZXIgb3V0c2lkZSBvZiBxdW90ZXMgb3IgYmV0d2VlbiBxdW90ZXMKKyAgICAgICAgICAgICAgICBpZiAoKGkrMSk8cGF0dGVybi5sZW5ndGgoKSAmJiBwYXR0ZXJuLmNoYXJBdChpKzEpID09ICdcJycpIHsKKyAgICAgICAgICAgICAgICAgICAgdG9BcHBlbmRUby5hcHBlbmQoJ1wnJyk7CisgICAgICAgICAgICAgICAgICAgICsraTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpblF1b3RlID0gIWluUXVvdGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmICghaW5RdW90ZQorICAgICAgICAgICAgICAgICAgICAgICAmJiAoY2ggPj0gJ2EnICYmIGNoIDw9ICd6JyB8fCBjaCA+PSAnQScgJiYgY2ggPD0gJ1onKSkgeworICAgICAgICAgICAgICAgIC8vIGNoIGlzIGEgZGF0ZS10aW1lIHBhdHRlcm4gY2hhcmFjdGVyIHRvIGJlIGludGVycHJldGVkCisgICAgICAgICAgICAgICAgLy8gYnkgc3ViRm9ybWF0KCk7IGNvdW50IHRoZSBudW1iZXIgb2YgdGltZXMgaXQgaXMgcmVwZWF0ZWQKKyAgICAgICAgICAgICAgICBwcmV2Q2ggPSBjaDsKKyAgICAgICAgICAgICAgICArK2NvdW50OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gQXBwZW5kIHF1b3RlZCBjaGFyYWN0ZXJzIGFuZCB1bnF1b3RlZCBub24tcGF0dGVybiBjaGFyYWN0ZXJzCisgICAgICAgICAgICAgICAgdG9BcHBlbmRUby5hcHBlbmQoY2gpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vIEZvcm1hdCB0aGUgbGFzdCBpdGVtIGluIHRoZSBwYXR0ZXJuLCBpZiBhbnkKKyAgICAgICAgaWYgKGNvdW50ID4gMCkgeworICAgICAgICAgICAgdG9BcHBlbmRUby5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgIHN1YkZvcm1hdChwcmV2Q2gsIGNvdW50LCB0b0FwcGVuZFRvLmxlbmd0aCgpLCBwb3MsIGZvcm1hdERhdGEpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdG9BcHBlbmRUbzsKKyAgICB9CisKKyAgICAvLyBNYXAgaW5kZXggaW50byBwYXR0ZXJuIGNoYXJhY3RlciBzdHJpbmcgdG8gQ2FsZW5kYXIgZmllbGQgbnVtYmVyCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gUEFUVEVSTl9JTkRFWF9UT19DQUxFTkRBUl9GSUVMRCA9CisgICAgeworICAgICAgICBDYWxlbmRhci5FUkEsIENhbGVuZGFyLllFQVIsIENhbGVuZGFyLk1PTlRILCBDYWxlbmRhci5EQVRFLAorICAgICAgICBDYWxlbmRhci5IT1VSX09GX0RBWSwgQ2FsZW5kYXIuSE9VUl9PRl9EQVksIENhbGVuZGFyLk1JTlVURSwKKyAgICAgICAgQ2FsZW5kYXIuU0VDT05ELCBDYWxlbmRhci5NSUxMSVNFQ09ORCwgQ2FsZW5kYXIuREFZX09GX1dFRUssCisgICAgICAgIENhbGVuZGFyLkRBWV9PRl9ZRUFSLCBDYWxlbmRhci5EQVlfT0ZfV0VFS19JTl9NT05USCwKKyAgICAgICAgQ2FsZW5kYXIuV0VFS19PRl9ZRUFSLCBDYWxlbmRhci5XRUVLX09GX01PTlRILAorICAgICAgICBDYWxlbmRhci5BTV9QTSwgQ2FsZW5kYXIuSE9VUiwgQ2FsZW5kYXIuSE9VUiwgQ2FsZW5kYXIuWk9ORV9PRkZTRVQKKyAgICB9OworCisgICAgLy8gTWFwIGluZGV4IGludG8gcGF0dGVybiBjaGFyYWN0ZXIgc3RyaW5nIHRvIERhdGVGb3JtYXQgZmllbGQgbnVtYmVyCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gUEFUVEVSTl9JTkRFWF9UT19EQVRFX0ZPUk1BVF9GSUVMRCA9IHsKKyAgICAgICAgRGF0ZUZvcm1hdC5FUkFfRklFTEQsIERhdGVGb3JtYXQuWUVBUl9GSUVMRCwgRGF0ZUZvcm1hdC5NT05USF9GSUVMRCwKKyAgICAgICAgRGF0ZUZvcm1hdC5EQVRFX0ZJRUxELCBEYXRlRm9ybWF0LkhPVVJfT0ZfREFZMV9GSUVMRCwKKyAgICAgICAgRGF0ZUZvcm1hdC5IT1VSX09GX0RBWTBfRklFTEQsIERhdGVGb3JtYXQuTUlOVVRFX0ZJRUxELAorICAgICAgICBEYXRlRm9ybWF0LlNFQ09ORF9GSUVMRCwgRGF0ZUZvcm1hdC5NSUxMSVNFQ09ORF9GSUVMRCwKKyAgICAgICAgRGF0ZUZvcm1hdC5EQVlfT0ZfV0VFS19GSUVMRCwgRGF0ZUZvcm1hdC5EQVlfT0ZfWUVBUl9GSUVMRCwKKyAgICAgICAgRGF0ZUZvcm1hdC5EQVlfT0ZfV0VFS19JTl9NT05USF9GSUVMRCwgRGF0ZUZvcm1hdC5XRUVLX09GX1lFQVJfRklFTEQsCisgICAgICAgIERhdGVGb3JtYXQuV0VFS19PRl9NT05USF9GSUVMRCwgRGF0ZUZvcm1hdC5BTV9QTV9GSUVMRCwKKyAgICAgICAgRGF0ZUZvcm1hdC5IT1VSMV9GSUVMRCwgRGF0ZUZvcm1hdC5IT1VSMF9GSUVMRCwKKyAgICAgICAgRGF0ZUZvcm1hdC5USU1FWk9ORV9GSUVMRCwKKyAgICB9OworCisgICAgLyoqCisgICAgICogRm9ybWF0IGEgc2luZ2xlIGZpZWxkLCBnaXZlbiBpdHMgcGF0dGVybiBjaGFyYWN0ZXIuICBTdWJjbGFzc2VzIG1heQorICAgICAqIG92ZXJyaWRlIHRoaXMgbWV0aG9kIGluIG9yZGVyIHRvIG1vZGlmeSBvciBhZGQgZm9ybWF0dGluZworICAgICAqIGNhcGFiaWxpdGllcy4KKyAgICAgKiBAcGFyYW0gY2ggdGhlIHBhdHRlcm4gY2hhcmFjdGVyCisgICAgICogQHBhcmFtIGNvdW50IHRoZSBudW1iZXIgb2YgdGltZXMgY2ggaXMgcmVwZWF0ZWQgaW4gdGhlIHBhdHRlcm4KKyAgICAgKiBAcGFyYW0gYmVnaW5PZmZzZXQgdGhlIG9mZnNldCBvZiB0aGUgb3V0cHV0IHN0cmluZyBhdCB0aGUgc3RhcnQgb2YKKyAgICAgKiB0aGlzIGZpZWxkOyB1c2VkIHRvIHNldCBwb3Mgd2hlbiBhcHByb3ByaWF0ZQorICAgICAqIEBwYXJhbSBwb3MgcmVjZWl2ZXMgdGhlIHBvc2l0aW9uIG9mIGEgZmllbGQsIHdoZW4gYXBwcm9wcmlhdGUKKyAgICAgKiBAcGFyYW0gZm9ybWF0RGF0YSB0aGUgc3ltYm9scyBmb3IgdGhpcyBmb3JtYXR0ZXIKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgU3RyaW5nIHN1YkZvcm1hdChjaGFyIGNoLCBpbnQgY291bnQsIGludCBiZWdpbk9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRQb3NpdGlvbiBwb3MsIERhdGVGb3JtYXRTeW1ib2xzIGZvcm1hdERhdGEpCisgICAgICAgICB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgeworICAgICAgICBpbnQgICAgIHBhdHRlcm5DaGFySW5kZXggPSAtMTsKKyAgICAgICAgaW50ICAgICBtYXhJbnRDb3VudCA9IEludGVnZXIuTUFYX1ZBTFVFOworICAgICAgICBTdHJpbmcgIGN1cnJlbnQgPSAiIjsKKworICAgICAgICAvLyBURU1QT1JBUlkgSEFDSyBUT0RPIGZpeCB0aGlzCisgICAgICAgIGlmIChjaCA9PSAndScpIHsgLy8gJ3UnIC0gRVhURU5ERURfWUVBUgorICAgICAgICAgICAgcmV0dXJuIHplcm9QYWRkaW5nTnVtYmVyKGNhbGVuZGFyLmdldChDYWxlbmRhci5FWFRFTkRFRF9ZRUFSKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBtYXhJbnRDb3VudCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoKHBhdHRlcm5DaGFySW5kZXg9Zm9ybWF0RGF0YS5wYXR0ZXJuQ2hhcnMuaW5kZXhPZihjaCkpID09IC0xKQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCBwYXR0ZXJuIGNoYXJhY3RlciAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiciICsgY2ggKyAiJyIpOworCisgICAgICAgIGludCBmaWVsZCA9IFBBVFRFUk5fSU5ERVhfVE9fQ0FMRU5EQVJfRklFTERbcGF0dGVybkNoYXJJbmRleF07CisgICAgICAgIGludCB2YWx1ZSA9IGNhbGVuZGFyLmdldChmaWVsZCk7CisKKyAgICAgICAgc3dpdGNoIChwYXR0ZXJuQ2hhckluZGV4KSB7CisgICAgICAgIGNhc2UgMDogLy8gJ0cnIC0gRVJBCisgICAgICAgICAgICBjdXJyZW50ID0gZm9ybWF0RGF0YS5lcmFzW3ZhbHVlXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE6IC8vICd5JyAtIFlFQVIKKyAgICAgICAgICAgIGlmIChjb3VudCA+PSA0KQorICAgICAgICAgICAgICAgIGN1cnJlbnQgPSB6ZXJvUGFkZGluZ051bWJlcih2YWx1ZSwgNCwgbWF4SW50Q291bnQpOworICAgICAgICAgICAgZWxzZSAvLyBjb3VudCA8IDQKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gemVyb1BhZGRpbmdOdW1iZXIodmFsdWUsIDIsIDIpOyAvLyBjbGlwIDE5OTYgdG8gOTYKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDI6IC8vICdNJyAtIE1PTlRICisgICAgICAgICAgICBpZiAoY291bnQgPj0gNCkKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gZm9ybWF0RGF0YS5tb250aHNbdmFsdWVdOworICAgICAgICAgICAgZWxzZSBpZiAoY291bnQgPT0gMykKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gZm9ybWF0RGF0YS5zaG9ydE1vbnRoc1t2YWx1ZV07CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY3VycmVudCA9IHplcm9QYWRkaW5nTnVtYmVyKHZhbHVlKzEsIGNvdW50LCBtYXhJbnRDb3VudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA0OiAvLyAnaycgLSBIT1VSX09GX0RBWTogMS1iYXNlZC4gIGVnLCAyMzo1OSArIDEgaG91ciA9Pj4gMjQ6NTkKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAwKQorICAgICAgICAgICAgICAgIGN1cnJlbnQgPSB6ZXJvUGFkZGluZ051bWJlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXIuZ2V0TWF4aW11bShDYWxlbmRhci5IT1VSX09GX0RBWSkrMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnQsIG1heEludENvdW50KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gemVyb1BhZGRpbmdOdW1iZXIodmFsdWUsIGNvdW50LCBtYXhJbnRDb3VudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSA5OiAvLyAnRScgLSBEQVlfT0ZfV0VFSworICAgICAgICAgICAgaWYgKGNvdW50ID49IDQpCisgICAgICAgICAgICAgICAgY3VycmVudCA9IGZvcm1hdERhdGEud2Vla2RheXNbdmFsdWVdOworICAgICAgICAgICAgZWxzZSAvLyBjb3VudCA8IDQsIHVzZSBhYmJyZXZpYXRlZCBmb3JtIGlmIGV4aXN0cworICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBmb3JtYXREYXRhLnNob3J0V2Vla2RheXNbdmFsdWVdOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMTQ6ICAgIC8vICdhJyAtIEFNX1BNCisgICAgICAgICAgICBjdXJyZW50ID0gZm9ybWF0RGF0YS5hbXBtc1t2YWx1ZV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxNTogLy8gJ2gnIC0gSE9VUjoxLWJhc2VkLiAgZWcsIDExUE0gKyAxIGhvdXIgPT4+IDEyIEFNCisgICAgICAgICAgICBpZiAodmFsdWUgPT0gMCkKKyAgICAgICAgICAgICAgICBjdXJyZW50ID0gemVyb1BhZGRpbmdOdW1iZXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGVuZGFyLmdldExlYXN0TWF4aW11bShDYWxlbmRhci5IT1VSKSsxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgbWF4SW50Q291bnQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGN1cnJlbnQgPSB6ZXJvUGFkZGluZ051bWJlcih2YWx1ZSwgY291bnQsIG1heEludENvdW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIDE3OiAvLyAneicgLSBaT05FX09GRlNFVAorICAgICAgICAgICAgaW50IHpvbmVJbmRleAorICAgICAgICAgICAgICAgID0gZm9ybWF0RGF0YS5nZXRab25lSW5kZXggKGNhbGVuZGFyLmdldFRpbWVab25lKCkuZ2V0SUQoKSk7CisgICAgICAgICAgICBpZiAoem9uZUluZGV4ID09IC0xKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIEZvciB0aW1lIHpvbmVzIHRoYXQgaGF2ZSBubyBuYW1lcywgdXNlIHN0cmluZ3MKKyAgICAgICAgICAgICAgICAvLyBHTVQraG91cnM6bWludXRlcyBhbmQgR01ULWhvdXJzOm1pbnV0ZXMuCisgICAgICAgICAgICAgICAgLy8gRm9yIGluc3RhbmNlLCBGcmFuY2UgdGltZSB6b25lIHVzZXMgR01UKzAxOjAwLgorICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciB6b25lU3RyaW5nID0gbmV3IFN0cmluZ0J1ZmZlcigpOworCisgICAgICAgICAgICAgICAgdmFsdWUgPSBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuWk9ORV9PRkZTRVQpICsKKyAgICAgICAgICAgICAgICAgICAgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkRTVF9PRkZTRVQpOworCisgICAgICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIHpvbmVTdHJpbmcuYXBwZW5kKEdNVF9NSU5VUyk7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gLXZhbHVlOyAvLyBzdXBwcmVzcyB0aGUgJy0nIHNpZ24gZm9yIHRleHQgZGlzcGxheS4KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICB6b25lU3RyaW5nLmFwcGVuZChHTVRfUExVUyk7CisgICAgICAgICAgICAgICAgem9uZVN0cmluZy5hcHBlbmQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgemVyb1BhZGRpbmdOdW1iZXIoKGludCkodmFsdWUvbWlsbGlzUGVySG91ciksIDIsIDIpKTsKKyAgICAgICAgICAgICAgICB6b25lU3RyaW5nLmFwcGVuZCgnOicpOworICAgICAgICAgICAgICAgIHpvbmVTdHJpbmcuYXBwZW5kKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHplcm9QYWRkaW5nTnVtYmVyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKCh2YWx1ZSVtaWxsaXNQZXJIb3VyKS9taWxsaXNQZXJNaW51dGUpLCAyLCAyKSk7CisgICAgICAgICAgICAgICAgY3VycmVudCA9IHpvbmVTdHJpbmcudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNhbGVuZGFyLmdldChDYWxlbmRhci5EU1RfT0ZGU0VUKSAhPSAwKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChjb3VudCA+PSA0KQorICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gZm9ybWF0RGF0YS56b25lU3RyaW5nc1t6b25lSW5kZXhdWzNdOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgLy8gY291bnQgPCA0LCB1c2UgYWJicmV2aWF0ZWQgZm9ybSBpZiBleGlzdHMKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IGZvcm1hdERhdGEuem9uZVN0cmluZ3Nbem9uZUluZGV4XVs0XTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoY291bnQgPj0gNCkKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IGZvcm1hdERhdGEuem9uZVN0cmluZ3Nbem9uZUluZGV4XVsxXTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBmb3JtYXREYXRhLnpvbmVTdHJpbmdzW3pvbmVJbmRleF1bMl07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIGNhc2UgMzogLy8gJ2QnIC0gREFURQorICAgICAgICAgICAgLy8gY2FzZSA1OiAvLyAnSCcgLSBIT1VSX09GX0RBWTowLWJhc2VkLiAgZWcsIDIzOjU5ICsgMSBob3VyID0+PiAwMDo1OQorICAgICAgICAgICAgLy8gY2FzZSA2OiAvLyAnbScgLSBNSU5VVEUKKyAgICAgICAgICAgIC8vIGNhc2UgNzogLy8gJ3MnIC0gU0VDT05ECisgICAgICAgICAgICAvLyBjYXNlIDg6IC8vICdTJyAtIE1JTExJU0VDT05ECisgICAgICAgICAgICAvLyBjYXNlIDEwOiAvLyAnRCcgLSBEQVlfT0ZfWUVBUgorICAgICAgICAgICAgLy8gY2FzZSAxMTogLy8gJ0YnIC0gREFZX09GX1dFRUtfSU5fTU9OVEgKKyAgICAgICAgICAgIC8vIGNhc2UgMTI6IC8vICd3JyAtIFdFRUtfT0ZfWUVBUgorICAgICAgICAgICAgLy8gY2FzZSAxMzogLy8gJ1cnIC0gV0VFS19PRl9NT05USAorICAgICAgICAgICAgLy8gY2FzZSAxNjogLy8gJ0snIC0gSE9VUjogMC1iYXNlZC4gIGVnLCAxMVBNICsgMSBob3VyID0+PiAwIEFNCisgICAgICAgICAgICBjdXJyZW50ID0gemVyb1BhZGRpbmdOdW1iZXIodmFsdWUsIGNvdW50LCBtYXhJbnRDb3VudCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSAvLyBzd2l0Y2ggKHBhdHRlcm5DaGFySW5kZXgpCisKKyAgICAgICAgaWYgKHBvcy5nZXRGaWVsZCgpID09IFBBVFRFUk5fSU5ERVhfVE9fREFURV9GT1JNQVRfRklFTERbcGF0dGVybkNoYXJJbmRleF0pIHsKKyAgICAgICAgICAgIC8vIHNldCBmb3IgdGhlIGZpcnN0IG9jY3VyZW5jZSBvbmx5LgorICAgICAgICAgICAgaWYgKHBvcy5nZXRCZWdpbkluZGV4KCkgPT0gMCAmJiBwb3MuZ2V0RW5kSW5kZXgoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcG9zLnNldEJlZ2luSW5kZXgoYmVnaW5PZmZzZXQpOworICAgICAgICAgICAgICAgIHBvcy5zZXRFbmRJbmRleChiZWdpbk9mZnNldCArIGN1cnJlbnQubGVuZ3RoKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGN1cnJlbnQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogRm9ybWF0cyBhIG51bWJlciB3aXRoIHRoZSBzcGVjaWZpZWQgbWluaW11bSBhbmQgbWF4aW11bSBudW1iZXIgb2YgZGlnaXRzLgorICAgICAqLworICAgIHByb3RlY3RlZCBTdHJpbmcgemVyb1BhZGRpbmdOdW1iZXIobG9uZyB2YWx1ZSwgaW50IG1pbkRpZ2l0cywgaW50IG1heERpZ2l0cykKKyAgICB7CisgICAgICAgIG51bWJlckZvcm1hdC5zZXRNaW5pbXVtSW50ZWdlckRpZ2l0cyhtaW5EaWdpdHMpOworICAgICAgICBudW1iZXJGb3JtYXQuc2V0TWF4aW11bUludGVnZXJEaWdpdHMobWF4RGlnaXRzKTsKKyAgICAgICAgcmV0dXJuIG51bWJlckZvcm1hdC5mb3JtYXQodmFsdWUpOworICAgIH0KKworCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIERhdGVGb3JtYXQKKyAgICAgKiBAc2VlIERhdGVGb3JtYXQKKyAgICAgKi8KKyAgICBwdWJsaWMgRGF0ZSBwYXJzZShTdHJpbmcgdGV4dCwgUGFyc2VQb3NpdGlvbiBwb3MpCisgICAgeworICAgICAgICBpbnQgc3RhcnQgPSBwb3MuZ2V0SW5kZXgoKTsKKyAgICAgICAgaW50IG9sZFN0YXJ0ID0gc3RhcnQ7CisgICAgICAgIGJvb2xlYW5bXSBhbWJpZ3VvdXNZZWFyID0ge2ZhbHNlfTsKKworICAgICAgICBjYWxlbmRhci5jbGVhcigpOyAvLyBDbGVhcnMgYWxsIHRoZSB0aW1lIGZpZWxkcworCisgICAgICAgIGJvb2xlYW4gaW5RdW90ZSA9IGZhbHNlOyAvLyBpblF1b3RlIHNldCB0cnVlIHdoZW4gaGl0cyAxc3Qgc2luZ2xlIHF1b3RlCisgICAgICAgIGNoYXIgcHJldkNoID0gMDsKKyAgICAgICAgaW50IGNvdW50ID0gMDsKKyAgICAgICAgaW50IGludGVyUXVvdGVDb3VudCA9IDE7IC8vIE51bWJlciBvZiBjaGFycyBiZXR3ZWVuIHF1b3RlcworCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxwYXR0ZXJuLmxlbmd0aCgpOyArK2kpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNoYXIgY2ggPSBwYXR0ZXJuLmNoYXJBdChpKTsKKworICAgICAgICAgICAgaWYgKGluUXVvdGUpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKGNoID09ICdcJycpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBlbmRzIHdpdGggMm5kIHNpbmdsZSBxdW90ZQorICAgICAgICAgICAgICAgICAgICBpblF1b3RlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIC8vIHR3byBjb25zZWN1dGl2ZSBxdW90ZXMgb3V0c2lkZSBhIHF1b3RlIG1lYW5zIHdlIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgLy8gYSBxdW90ZSBsaXRlcmFsIHdlIG5lZWQgdG8gbWF0Y2guCisgICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA9PSAwKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gdGV4dC5sZW5ndGgoKSB8fCBjaCAhPSB0ZXh0LmNoYXJBdChzdGFydCkpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zLnNldEluZGV4KG9sZFN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3Muc2V0RXJyb3JJbmRleChzdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICArK3N0YXJ0OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJRdW90ZUNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gcGF0dGVybiB1c2VzIHRleHQgZm9sbG93aW5nIGZyb20gMXN0IHNpbmdsZSBxdW90ZS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IHRleHQubGVuZ3RoKCkgfHwgY2ggIT0gdGV4dC5jaGFyQXQoc3RhcnQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBmb3IgY2FzZXMgbGlrZTogJ2F0JyBpbiBwYXR0ZXJuIHZzICJ4dCIKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIHRpbWUgdGV4dCwgd2hlcmUgJ2EnIGRvZXNuJ3QgbWF0Y2ggd2l0aCAneCcuCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBmYWlsIHRvIG1hdGNoLCByZXR1cm4gbnVsbC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBvcy5zZXRJbmRleChvbGRTdGFydCk7IC8vIGxlZnQgdW5jaGFuZ2VkCisgICAgICAgICAgICAgICAgICAgICAgICBwb3Muc2V0RXJyb3JJbmRleChzdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICArK2NvdW50OworICAgICAgICAgICAgICAgICAgICArK3N0YXJ0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgICAgLy8gIWluUXVvdGUKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoY2ggPT0gJ1wnJykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGluUXVvdGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBpZiAoY291bnQgPiAwKSAvLyBoYW5kbGUgY2FzZXMgbGlrZTogZSdhdCcKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0T2Zmc2V0ID0gc3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydD1zdWJQYXJzZSh0ZXh0LCBzdGFydCwgcHJldkNoLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCBhbWJpZ3VvdXNZZWFyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc3RhcnQ8MCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3Muc2V0RXJyb3JJbmRleChzdGFydE9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zLnNldEluZGV4KG9sZFN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChpbnRlclF1b3RlQ291bnQgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpbmRpY2F0ZXMgdHdvIGNvbnNlY3V0aXZlIHF1b3RlcyBpbnNpZGUgYSBxdW90ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvciBleGFtcGxlLCAnbycnY2xvY2snLiAgV2UgbmVlZCB0byBwYXJzZSB0aGlzIGFzCisgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXByZXNlbnRpbmcgYSBzaW5nbGUgcXVvdGUgd2l0aGluIHRoZSBxdW90ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydE9mZnNldCA9IHN0YXJ0OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IHRleHQubGVuZ3RoKCkgfHwgIGNoICE9IHRleHQuY2hhckF0KHN0YXJ0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3Muc2V0RXJyb3JJbmRleChzdGFydE9mZnNldCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zLnNldEluZGV4KG9sZFN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICsrc3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCA9IDE7IC8vIE1ha2UgaXQgbG9vayBsaWtlIHdlIG5ldmVyIGxlZnQKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjaCA+PSAnYScgJiYgY2ggPD0gJ3onIHx8IGNoID49ICdBJyAmJiBjaCA8PSAnWicpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBjaCBpcyBhIGRhdGUtdGltZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgICAgIGlmIChjaCAhPSBwcmV2Q2ggJiYgY291bnQgPiAwKSAvLyBlLmcuLCB5eXl5TU1kZAorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRPZmZzZXQgPSBzdGFydDsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSB3aGVyZSB3ZSBwYXNzIGluICd0cnVlJyBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9iZXlDb3VudC4gIFRoYXQncyBiZWNhdXNlIHRoZSBuZXh0IGZpZWxkIGRpcmVjdGx5CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhYnV0cyB0aGlzIG9uZSwgc28gd2UgaGF2ZSB0byB1c2UgdGhlIGNvdW50IHRvIGtub3cgd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gc3RvcCBwYXJzaW5nLiBbTElVXQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBzdWJQYXJzZSh0ZXh0LCBzdGFydCwgcHJldkNoLCBjb3VudCwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1iaWd1b3VzWWVhcik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zLnNldEVycm9ySW5kZXgoc3RhcnRPZmZzZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcy5zZXRJbmRleChvbGRTdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBwcmV2Q2ggPSBjaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaCAhPSBwcmV2Q2gpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldkNoID0gY2g7CisgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCsrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvdW50ID4gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBjYXNlcyBsaWtlOiBNTS1kZC15eSwgSEg6bW06c3MsIG9yIHl5eXkgTU0gZGQsCisgICAgICAgICAgICAgICAgICAgIC8vIHdoZXJlIGNoID0gJy0nLCAnOicsIG9yICcgJywgcmVwZWN0aXZlbHkuCisgICAgICAgICAgICAgICAgICAgIGludCBzdGFydE9mZnNldCA9IHN0YXJ0OworICAgICAgICAgICAgICAgICAgICBzdGFydD1zdWJQYXJzZSh0ZXh0LCBzdGFydCwgcHJldkNoLCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIGFtYmlndW91c1llYXIpOworICAgICAgICAgICAgICAgICAgICBpZiAoIHN0YXJ0IDwgMCApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvcy5zZXRFcnJvckluZGV4KHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvcy5zZXRJbmRleChvbGRTdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gdGV4dC5sZW5ndGgoKSB8fCBjaCAhPSB0ZXh0LmNoYXJBdChzdGFydCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBjYXNlcyBsaWtlOiAnTU1NTSBkZCcgaW4gcGF0dGVybiB2cy4gImphbngyMCIKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIHRpbWUgdGV4dCwgd2hlcmUgJyAnIGRvZXNuJ3QgbWF0Y2ggd2l0aCAneCcuCisgICAgICAgICAgICAgICAgICAgICAgICBwb3Muc2V0RXJyb3JJbmRleChzdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICBwb3Muc2V0SW5kZXgob2xkU3RhcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc3RhcnQrKzsKKyAgICAgICAgICAgICAgICAgICAgY291bnQgPSAwOworICAgICAgICAgICAgICAgICAgICBwcmV2Q2ggPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIC8vIGFueSBvdGhlciB1bnF1b3RlZCBjaGFyYWN0ZXJzCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBpZiAoc3RhcnQgPj0gdGV4dC5sZW5ndGgoKSB8fCBjaCAhPSB0ZXh0LmNoYXJBdChzdGFydCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhhbmRsZSBjYXNlcyBsaWtlOiAnTU1NTSAgIGRkJyBpbiBwYXR0ZXJuIHZzLgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gImphbiwsLDIwIiBpbiB0aW1lIHRleHQsIHdoZXJlICIgICAiIGRvZXNuJ3QKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hdGNoIHdpdGggIiwsLCIuCisgICAgICAgICAgICAgICAgICAgICAgICBwb3Muc2V0RXJyb3JJbmRleChzdGFydCk7CisgICAgICAgICAgICAgICAgICAgICAgICBwb3Muc2V0SW5kZXgob2xkU3RhcnQpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc3RhcnQrKzsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICArK2ludGVyUXVvdGVDb3VudDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvLyBQYXJzZSB0aGUgbGFzdCBpdGVtIGluIHRoZSBwYXR0ZXJuCisgICAgICAgIGlmIChjb3VudCA+IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCBzdGFydE9mZnNldCA9IHN0YXJ0OworICAgICAgICAgICAgc3RhcnQ9c3ViUGFyc2UodGV4dCwgc3RhcnQsIHByZXZDaCwgY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSwgYW1iaWd1b3VzWWVhcik7CisgICAgICAgICAgICBpZiAoIHN0YXJ0IDwgMCApIHsKKyAgICAgICAgICAgICAgICBwb3Muc2V0SW5kZXgob2xkU3RhcnQpOworICAgICAgICAgICAgICAgIHBvcy5zZXRFcnJvckluZGV4KHN0YXJ0T2Zmc2V0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIGZpZWxkcyBvZiBDYWxlbmRhciBoYXZlIGJlZW4gc2V0LiAgQ2FsZW5kYXIKKyAgICAgICAgLy8gd2lsbCBmaWxsIGluIGRlZmF1bHQgdmFsdWVzIGZvciBtaXNzaW5nIGZpZWxkcyB3aGVuIHRoZSB0aW1lCisgICAgICAgIC8vIGlzIGNvbXB1dGVkLgorCisgICAgICAgIHBvcy5zZXRJbmRleChzdGFydCk7CisKKyAgICAgICAgLy8gVGhpcyBwYXJ0IGlzIGEgcHJvYmxlbTogIFdoZW4gd2UgY2FsbCBwYXJzZWREYXRlLmFmdGVyLCB3ZSBjb21wdXRlIHRoZSB0aW1lLgorICAgICAgICAvLyBUYWtlIHRoZSBkYXRlIEFwcmlsIDMgMjAwNCBhdCAyOjMwIGFtLiAgV2hlbiB0aGlzIGlzIGZpcnN0IHNldCB1cCwgdGhlIHllYXIKKyAgICAgICAgLy8gd2lsbCBiZSB3cm9uZyBpZiB3ZSdyZSBwYXJzaW5nIGEgMi1kaWdpdCB5ZWFyIHBhdHRlcm4uICBJdCB3aWxsIGJlIDE5MDQuCisgICAgICAgIC8vIEFwcmlsIDMgMTkwNCBpcyBhIFN1bmRheSAodW5saWtlIDIwMDQpIHNvIGl0IGlzIHRoZSBEU1Qgb25zZXQgZGF5LiAgMjozMCBhbQorICAgICAgICAvLyBpcyB0aGVyZWZvcmUgYW4gImltcG9zc2libGUiIHRpbWUsIHNpbmNlIHRoZSB0aW1lIGdvZXMgZnJvbSAxOjU5IHRvIDM6MDAgYW0KKyAgICAgICAgLy8gb24gdGhhdCBkYXkuICBJdCBpcyB0aGVyZWZvcmUgcGFyc2VkIG91dCB0byBmaWVsZHMgYXMgMzozMCBhbS4gIFRoZW4gd2UKKyAgICAgICAgLy8gYWRkIDEwMCB5ZWFycywgYW5kIGdldCBBcHJpbCAzIDIwMDQgYXQgMzozMCBhbS4gIE5vdGUgdGhhdCBBcHJpbCAzIDIwMDQgaXMKKyAgICAgICAgLy8gYSBTYXR1cmRheSwgc28gaXQgY2FuIGhhdmUgYSAyOjMwIGFtIC0tIGFuZCBpdCBzaG91bGQuIFtMSVVdCisgICAgICAgIC8qCisgICAgICAgIERhdGUgcGFyc2VkRGF0ZSA9IGNhbGVuZGFyLmdldFRpbWUoKTsKKyAgICAgICAgaWYoIGFtYmlndW91c1llYXJbMF0gJiYgIXBhcnNlZERhdGUuYWZ0ZXIoZGVmYXVsdENlbnR1cnlTdGFydCkgKSB7CisgICAgICAgICAgICBjYWxlbmRhci5hZGQoQ2FsZW5kYXIuWUVBUiwgMTAwKTsKKyAgICAgICAgICAgIHBhcnNlZERhdGUgPSBjYWxlbmRhci5nZXRUaW1lKCk7CisgICAgICAgIH0KKyAgICAgICAgKi8KKyAgICAgICAgLy8gQmVjYXVzZSBvZiB0aGUgYWJvdmUgY29uZGl0aW9uLCBzYXZlIG9mZiB0aGUgZmllbGRzIGluIGNhc2Ugd2UgbmVlZCB0byByZWFkanVzdC4KKyAgICAgICAgLy8gVGhlIHByb2NlZHVyZSB3ZSB1c2UgaGVyZSBpcyBub3QgcGFydGljdWxhcmx5IGVmZmljaWVudCwgYnV0IHRoZXJlIGlzIG5vIG90aGVyCisgICAgICAgIC8vIHdheSB0byBkbyB0aGlzIGdpdmVuIHRoZSBBUEkgcmVzdHJpY3Rpb25zIHByZXNlbnQgaW4gQ2FsZW5kYXIuICBXZSBtaW5pbWl6ZQorICAgICAgICAvLyBpbmVmZmljaWVuY3kgYnkgb25seSBwZXJmb3JtaW5nIHRoaXMgY29tcHV0YXRpb24gd2hlbiBpdCBtaWdodCBhcHBseSwgdGhhdCBpcywKKyAgICAgICAgLy8gd2hlbiB0aGUgdHdvLWRpZ2l0IHllYXIgaXMgZXF1YWwgdG8gdGhlIHN0YXJ0IHllYXIsIGFuZCB0aHVzIG1pZ2h0IGZhbGwgYXQgdGhlCisgICAgICAgIC8vIGZyb250IG9yIHRoZSBiYWNrIG9mIHRoZSBkZWZhdWx0IGNlbnR1cnkuICBUaGlzIG9ubHkgd29ya3MgYmVjYXVzZSB3ZSBhZGp1c3QKKyAgICAgICAgLy8gdGhlIHllYXIgY29ycmVjdGx5IHRvIHN0YXJ0IHdpdGggaW4gb3RoZXIgY2FzZXMgLS0gc2VlIHN1YlBhcnNlKCkuCisgICAgICAgIERhdGUgcGFyc2VkRGF0ZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmIChhbWJpZ3VvdXNZZWFyWzBdKSAvLyBJZiB0aGlzIGlzIHRydWUgdGhlbiB0aGUgdHdvLWRpZ2l0IHllYXIgPT0gdGhlIGRlZmF1bHQgc3RhcnQgeWVhcgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFdlIG5lZWQgYSBjb3B5IG9mIHRoZSBmaWVsZHMsIGFuZCB3ZSBuZWVkIHRvIGF2b2lkIHRyaWdnZXJpbmcgYSBjYWxsIHRvCisgICAgICAgICAgICAgICAgLy8gY29tcGxldGUoKSwgd2hpY2ggd2lsbCByZWNhbGN1bGF0ZSB0aGUgZmllbGRzLiAgU2luY2Ugd2UgY2FuJ3QgYWNjZXNzCisgICAgICAgICAgICAgICAgLy8gdGhlIGZpZWxkc1tdIGFycmF5IGluIENhbGVuZGFyLCB3ZSBjbG9uZSB0aGUgZW50aXJlIG9iamVjdC4gIFRoaXMgd2lsbAorICAgICAgICAgICAgICAgIC8vIHN0b3Agd29ya2luZyBpZiBDYWxlbmRhci5jbG9uZSgpIGlzIGV2ZXIgcmV3cml0dGVuIHRvIGNhbGwgY29tcGxldGUoKS4KKyAgICAgICAgICAgICAgICBDYWxlbmRhciBzYXZlZENhbGVuZGFyID0gKENhbGVuZGFyKWNhbGVuZGFyLmNsb25lKCk7CisgICAgICAgICAgICAgICAgcGFyc2VkRGF0ZSA9IGNhbGVuZGFyLmdldFRpbWUoKTsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VkRGF0ZS5iZWZvcmUoZGVmYXVsdENlbnR1cnlTdGFydCkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCB1c2UgYWRkIGhlcmUgYmVjYXVzZSB0aGF0IGRvZXMgYSBjb21wbGV0ZSgpIGZpcnN0LgorICAgICAgICAgICAgICAgICAgICBzYXZlZENhbGVuZGFyLnNldChDYWxlbmRhci5ZRUFSLCBkZWZhdWx0Q2VudHVyeVN0YXJ0WWVhciArIDEwMCk7CisgICAgICAgICAgICAgICAgICAgIHBhcnNlZERhdGUgPSBzYXZlZENhbGVuZGFyLmdldFRpbWUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHBhcnNlZERhdGUgPSBjYWxlbmRhci5nZXRUaW1lKCk7CisgICAgICAgIH0KKyAgICAgICAgLy8gQW4gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHdpbGwgYmUgdGhyb3duIGJ5IENhbGVuZGFyLmdldFRpbWUoKQorICAgICAgICAvLyBpZiBhbnkgZmllbGRzIGFyZSBvdXQgb2YgcmFuZ2UsIGUuZy4sIE1PTlRIID09IDE3LgorICAgICAgICBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHBvcy5zZXRFcnJvckluZGV4KHN0YXJ0KTsKKyAgICAgICAgICAgIHBvcy5zZXRJbmRleChvbGRTdGFydCk7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBwYXJzZWREYXRlOworICAgIH0KKworICAgIC8qKgorICAgICAqIEF0dGVtcHQgdG8gbWF0Y2ggdGhlIHRleHQgYXQgYSBnaXZlbiBwb3NpdGlvbiBhZ2FpbnN0IGFuIGFycmF5IG9mCisgICAgICogc3RyaW5ncy4gIFNpbmNlIG11bHRpcGxlIHN0cmluZ3MgaW4gdGhlIGFycmF5IG1heSBtYXRjaCAoZm9yCisgICAgICogZXhhbXBsZSwgaWYgdGhlIGFycmF5IGNvbnRhaW5zICJhIiwgImFiIiwgYW5kICJhYmMiLCBhbGwgd2lsbCBtYXRjaAorICAgICAqIHRoZSBpbnB1dCBzdHJpbmcgImFiY2QiKSB0aGUgbG9uZ2VzdCBtYXRjaCBpcyByZXR1cm5lZC4gIEFzIGEgc2lkZQorICAgICAqIGVmZmVjdCwgdGhlIGdpdmVuIGZpZWxkIG9mIDxjb2RlPmNhbGVuZGFyPC9jb2RlPiBpcyBzZXQgdG8gdGhlIGluZGV4CisgICAgICogb2YgdGhlIGJlc3QgbWF0Y2gsIGlmIHRoZXJlIGlzIG9uZS4KKyAgICAgKiBAcGFyYW0gdGV4dCB0aGUgdGltZSB0ZXh0IGJlaW5nIHBhcnNlZC4KKyAgICAgKiBAcGFyYW0gc3RhcnQgd2hlcmUgdG8gc3RhcnQgcGFyc2luZy4KKyAgICAgKiBAcGFyYW0gZmllbGQgdGhlIGRhdGUgZmllbGQgYmVpbmcgcGFyc2VkLgorICAgICAqIEBwYXJhbSBkYXRhIHRoZSBzdHJpbmcgYXJyYXkgdG8gcGFyc2VkLgorICAgICAqIEByZXR1cm4gdGhlIG5ldyBzdGFydCBwb3NpdGlvbiBpZiBtYXRjaGluZyBzdWNjZWVkZWQ7IGEgbmVnYXRpdmUKKyAgICAgKiBudW1iZXIgaW5kaWNhdGluZyBtYXRjaGluZyBmYWlsdXJlLCBvdGhlcndpc2UuICBBcyBhIHNpZGUgZWZmZWN0LAorICAgICAqIHNldHMgdGhlIDxjb2RlPmNhbGVuZGFyPC9jb2RlPiBmaWVsZCA8Y29kZT5maWVsZDwvY29kZT4gdG8gdGhlIGluZGV4CisgICAgICogb2YgdGhlIGJlc3QgbWF0Y2gsIGlmIG1hdGNoaW5nIHN1Y2NlZWRlZC4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IG1hdGNoU3RyaW5nKFN0cmluZyB0ZXh0LCBpbnQgc3RhcnQsIGludCBmaWVsZCwgU3RyaW5nW10gZGF0YSkKKyAgICB7CisgICAgICAgIGludCBpID0gMDsKKyAgICAgICAgaW50IGNvdW50ID0gZGF0YS5sZW5ndGg7CisKKyAgICAgICAgaWYgKGZpZWxkID09IENhbGVuZGFyLkRBWV9PRl9XRUVLKSBpID0gMTsKKworICAgICAgICAvLyBUaGVyZSBtYXkgYmUgbXVsdGlwbGUgc3RyaW5ncyBpbiB0aGUgZGF0YVtdIGFycmF5IHdoaWNoIGJlZ2luIHdpdGgKKyAgICAgICAgLy8gdGhlIHNhbWUgcHJlZml4IChlLmcuLCBDZXJ2ZW4gYW5kIENlcnZlbmVjIChKdW5lIGFuZCBKdWx5KSBpbiBDemVjaCkuCisgICAgICAgIC8vIFdlIGtlZXAgdHJhY2sgb2YgdGhlIGxvbmdlc3QgbWF0Y2gsIGFuZCByZXR1cm4gdGhhdC4gIE5vdGUgdGhhdCB0aGlzCisgICAgICAgIC8vIHVuZm9ydHVuYXRlbHkgcmVxdWlyZXMgdXMgdG8gdGVzdCBhbGwgYXJyYXkgZWxlbWVudHMuCisgICAgICAgIGludCBiZXN0TWF0Y2hMZW5ndGggPSAwLCBiZXN0TWF0Y2ggPSAtMTsKKyAgICAgICAgZm9yICg7IGk8Y291bnQ7ICsraSkKKyAgICAgICAgeworICAgICAgICAgICAgaW50IGxlbmd0aCA9IGRhdGFbaV0ubGVuZ3RoKCk7CisgICAgICAgICAgICAvLyBBbHdheXMgY29tcGFyZSBpZiB3ZSBoYXZlIG5vIG1hdGNoIHlldDsgb3RoZXJ3aXNlIG9ubHkgY29tcGFyZQorICAgICAgICAgICAgLy8gYWdhaW5zdCBwb3RlbnRpYWxseSBiZXR0ZXIgbWF0Y2hlcyAobG9uZ2VyIHN0cmluZ3MpLgorICAgICAgICAgICAgaWYgKGxlbmd0aCA+IGJlc3RNYXRjaExlbmd0aCAmJgorICAgICAgICAgICAgICAgIHRleHQucmVnaW9uTWF0Y2hlcyh0cnVlLCBzdGFydCwgZGF0YVtpXSwgMCwgbGVuZ3RoKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBiZXN0TWF0Y2ggPSBpOworICAgICAgICAgICAgICAgIGJlc3RNYXRjaExlbmd0aCA9IGxlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoYmVzdE1hdGNoID49IDApCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhbGVuZGFyLnNldChmaWVsZCwgYmVzdE1hdGNoKTsKKyAgICAgICAgICAgIHJldHVybiBzdGFydCArIGJlc3RNYXRjaExlbmd0aDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLXN0YXJ0OworICAgIH0KKworICAgIHByaXZhdGUgaW50IG1hdGNoWm9uZVN0cmluZyhTdHJpbmcgdGV4dCwgaW50IHN0YXJ0LCBpbnQgem9uZUluZGV4KSB7CisJaW50IGo7CisJZm9yIChqID0gMTsgaiA8PSA0OyArK2opIHsKKwkgICAgLy8gQ2hlY2tpbmcgbG9uZyBhbmQgc2hvcnQgem9uZXMgWzEgJiAyXSwKKwkgICAgLy8gYW5kIGxvbmcgYW5kIHNob3J0IGRheWxpZ2h0IFszICYgNF0uCisJICAgIGlmICh0ZXh0LnJlZ2lvbk1hdGNoZXModHJ1ZSwgc3RhcnQsCisJCQkJICAgZm9ybWF0RGF0YS56b25lU3RyaW5nc1t6b25lSW5kZXhdW2pdLCAwLAorCQkJCSAgIGZvcm1hdERhdGEuem9uZVN0cmluZ3Nbem9uZUluZGV4XVtqXS5sZW5ndGgoKSkpIHsKKwkJYnJlYWs7CisJICAgIH0KKwl9CisJcmV0dXJuIChqID4gNCkgPyAtMSA6IGo7CisgICAgfQkKKworICAgIC8qKgorICAgICAqIGZpbmQgdGltZSB6b25lICd0ZXh0JyBtYXRjaGVkIHpvbmVTdHJpbmdzIGFuZCBzZXQgdG8gaW50ZXJuYWwKKyAgICAgKiBjYWxlbmRhci4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBzdWJQYXJzZVpvbmVTdHJpbmcoU3RyaW5nIHRleHQsIGludCBzdGFydCkgeworCS8vIEF0IHRoaXMgcG9pbnQsIGNoZWNrIGZvciBuYW1lZCB0aW1lIHpvbmVzIGJ5IGxvb2tpbmcgdGhyb3VnaAorCS8vIHRoZSBsb2NhbGUgZGF0YSBmcm9tIHRoZSBEYXRlRm9ybWF0Wm9uZURhdGEgc3RyaW5ncy4KKwkvLyBXYW50IHRvIGJlIGFibGUgdG8gcGFyc2UgYm90aCBzaG9ydCBhbmQgbG9uZyBmb3Jtcy4KKwlpbnQgem9uZUluZGV4ID0gCisJICAgIGZvcm1hdERhdGEuZ2V0Wm9uZUluZGV4IChnZXRUaW1lWm9uZSgpLmdldElEKCkpOworCVRpbWVab25lIHR6ID0gbnVsbDsKKwlpbnQgaiA9IDAsIGkgPSAwOworCWlmICgoem9uZUluZGV4ICE9IC0xKSAmJiAoKGogPSBtYXRjaFpvbmVTdHJpbmcodGV4dCwgc3RhcnQsIHpvbmVJbmRleCkpID4gMCkpIHsKKwkgICAgdHogPSBUaW1lWm9uZS5nZXRUaW1lWm9uZShmb3JtYXREYXRhLnpvbmVTdHJpbmdzW3pvbmVJbmRleF1bMF0pOworCSAgICBpID0gem9uZUluZGV4OworCX0KKwlpZiAodHogPT0gbnVsbCkgeworCSAgICB6b25lSW5kZXggPSAKKwkJZm9ybWF0RGF0YS5nZXRab25lSW5kZXggKFRpbWVab25lLmdldERlZmF1bHQoKS5nZXRJRCgpKTsKKwkgICAgaWYgKCh6b25lSW5kZXggIT0gLTEpICYmICgoaiA9IG1hdGNoWm9uZVN0cmluZyh0ZXh0LCBzdGFydCwgem9uZUluZGV4KSkgPiAwKSkgeworCQl0eiA9IFRpbWVab25lLmdldFRpbWVab25lKGZvcm1hdERhdGEuem9uZVN0cmluZ3Nbem9uZUluZGV4XVswXSk7CisJCWkgPSB6b25lSW5kZXg7CisJICAgIH0KKwl9CSAgICAKKworCWlmICh0eiA9PSBudWxsKSB7CisJICAgIGZvciAoaSA9IDA7IGkgPCBmb3JtYXREYXRhLnpvbmVTdHJpbmdzLmxlbmd0aDsgaSsrKSB7CisJCWlmICgoaiA9IG1hdGNoWm9uZVN0cmluZyh0ZXh0LCBzdGFydCwgaSkpID4gMCkgeworCQkgICAgdHogPSBUaW1lWm9uZS5nZXRUaW1lWm9uZShmb3JtYXREYXRhLnpvbmVTdHJpbmdzW2ldWzBdKTsKKwkJICAgIGJyZWFrOworCQl9CisJICAgIH0KKwl9CisJaWYgKHR6ICE9IG51bGwpIHsgLy8gTWF0Y2hlZCBhbnkgPworCSAgICBjYWxlbmRhci5zZXQoQ2FsZW5kYXIuWk9ORV9PRkZTRVQsIHR6LmdldFJhd09mZnNldCgpKTsKKwkgICAgLy8gVGhlIGNvZGUgYmVsb3cgdGltZSB6b25lIGlzIGFzc3VtZWQgdG8gYmUgaW5zdGFuY2Ugb2YKKwkgICAgLy8gU2ltcGxlVGltZVpvbmUuCisJICAgIGNhbGVuZGFyLnNldChDYWxlbmRhci5EU1RfT0ZGU0VULCAKKwkJCSBqID49IDMgPyAoKFNpbXBsZVRpbWVab25lKXR6KS5nZXREU1RTYXZpbmdzKCkgOiAwKTsKKwkgICAgcmV0dXJuIChzdGFydCArIGZvcm1hdERhdGEuem9uZVN0cmluZ3NbaV1bal0ubGVuZ3RoKCkpOworCX0KKwlyZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcm90ZWN0ZWQgbWV0aG9kIHRoYXQgY29udmVydHMgb25lIGZpZWxkIG9mIHRoZSBpbnB1dCBzdHJpbmcgaW50byBhCisgICAgICogbnVtZXJpYyBmaWVsZCB2YWx1ZSBpbiA8Y29kZT5jYWxlbmRhcjwvY29kZT4uICBSZXR1cm5zIC1zdGFydCAoZm9yCisgICAgICogUGFyc2VQb3NpdGlvbikgaWYgZmFpbGVkLiAgU3ViY2xhc3NlcyBtYXkgb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8KKyAgICAgKiBtb2RpZnkgb3IgYWRkIHBhcnNpbmcgY2FwYWJpbGl0aWVzLgorICAgICAqIEBwYXJhbSB0ZXh0IHRoZSB0aW1lIHRleHQgdG8gYmUgcGFyc2VkLgorICAgICAqIEBwYXJhbSBzdGFydCB3aGVyZSB0byBzdGFydCBwYXJzaW5nLgorICAgICAqIEBwYXJhbSBjaCB0aGUgcGF0dGVybiBjaGFyYWN0ZXIgZm9yIHRoZSBkYXRlIGZpZWxkIHRleHQgdG8gYmUgcGFyc2VkLgorICAgICAqIEBwYXJhbSBjb3VudCB0aGUgY291bnQgb2YgYSBwYXR0ZXJuIGNoYXJhY3Rlci4KKyAgICAgKiBAcGFyYW0gb2JleUNvdW50IGlmIHRydWUsIHRoZW4gdGhlIG5leHQgZmllbGQgZGlyZWN0bHkgYWJ1dHMgdGhpcyBvbmUsCisgICAgICogYW5kIHdlIHNob3VsZCB1c2UgdGhlIGNvdW50IHRvIGtub3cgd2hlbiB0byBzdG9wIHBhcnNpbmcuCisgICAgICogQHBhcmFtIGFtYmlndW91c1llYXIgcmV0dXJuIHBhcmFtZXRlcjsgdXBvbiByZXR1cm4sIGlmIGFtYmlndW91c1llYXJbMF0KKyAgICAgKiBpcyB0cnVlLCB0aGVuIGEgdHdvLWRpZ2l0IHllYXIgd2FzIHBhcnNlZCBhbmQgbWF5IG5lZWQgdG8gYmUgcmVhZGp1c3RlZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBuZXcgc3RhcnQgcG9zaXRpb24gaWYgbWF0Y2hpbmcgc3VjY2VlZGVkOyBhIG5lZ2F0aXZlCisgICAgICogbnVtYmVyIGluZGljYXRpbmcgbWF0Y2hpbmcgZmFpbHVyZSwgb3RoZXJ3aXNlLiAgQXMgYSBzaWRlIGVmZmVjdCwKKyAgICAgKiBzZXQgdGhlIGFwcHJvcHJpYXRlIGZpZWxkIG9mIDxjb2RlPmNhbGVuZGFyPC9jb2RlPiB3aXRoIHRoZSBwYXJzZWQKKyAgICAgKiB2YWx1ZS4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IHN1YlBhcnNlKFN0cmluZyB0ZXh0LCBpbnQgc3RhcnQsIGNoYXIgY2gsIGludCBjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gb2JleUNvdW50LCBib29sZWFuW10gYW1iaWd1b3VzWWVhcikKKyAgICB7CisgICAgICAgIE51bWJlciBudW1iZXIgPSBudWxsOworICAgICAgICBpbnQgdmFsdWUgPSAwOworICAgICAgICBpbnQgaTsKKyAgICAgICAgUGFyc2VQb3NpdGlvbiBwb3MgPSBuZXcgUGFyc2VQb3NpdGlvbigwKTsKKyAgICAgICAgaW50IHBhdHRlcm5DaGFySW5kZXggPSAtMTsKKworICAgICAgICAvLyBURU1QT1JBUlkgSEFDSyBUT0RPIGZpeCB0aGlzCisgICAgICAgIGlmIChjaCA9PSAndScpIHsgLy8gJ3UnIC0gRVhURU5ERURfWUVBUgorICAgICAgICAgICAgcG9zLnNldEluZGV4KHN0YXJ0KTsKKyAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICBpZiAocG9zLmdldEluZGV4KCkgPj0gdGV4dC5sZW5ndGgoKSkgcmV0dXJuIC1zdGFydDsKKyAgICAgICAgICAgICAgICBjaGFyIGMgPSB0ZXh0LmNoYXJBdChwb3MuZ2V0SW5kZXgoKSk7CisgICAgICAgICAgICAgICAgaWYgKGMgIT0gJyAnICYmIGMgIT0gJ1x0JykgYnJlYWs7CisgICAgICAgICAgICAgICAgcG9zLnNldEluZGV4KHBvcy5nZXRJbmRleCgpKzEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG9iZXlDb3VudCkgeworICAgICAgICAgICAgICAgIGlmICgoc3RhcnQrY291bnQpID4gdGV4dC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLXN0YXJ0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBudW1iZXIgPSBudW1iZXJGb3JtYXQucGFyc2UodGV4dC5zdWJzdHJpbmcoMCwgc3RhcnQrY291bnQpLCBwb3MpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBudW1iZXIgPSBudW1iZXJGb3JtYXQucGFyc2UodGV4dCwgcG9zKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChudW1iZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiAtc3RhcnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YWx1ZSA9IG51bWJlci5pbnRWYWx1ZSgpOworICAgICAgICAgICAgY2FsZW5kYXIuc2V0KENhbGVuZGFyLkVYVEVOREVEX1lFQVIsIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBwb3MuZ2V0SW5kZXgoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgocGF0dGVybkNoYXJJbmRleD1mb3JtYXREYXRhLnBhdHRlcm5DaGFycy5pbmRleE9mKGNoKSkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLXN0YXJ0OworCisgICAgICAgIHBvcy5zZXRJbmRleChzdGFydCk7CisKKyAgICAgICAgaW50IGZpZWxkID0gUEFUVEVSTl9JTkRFWF9UT19DQUxFTkRBUl9GSUVMRFtwYXR0ZXJuQ2hhckluZGV4XTsKKworICAgICAgICAvLyBJZiB0aGVyZSBhcmUgYW55IHNwYWNlcyBoZXJlLCBza2lwIG92ZXIgdGhlbS4gIElmIHdlIGhpdCB0aGUgZW5kCisgICAgICAgIC8vIG9mIHRoZSBzdHJpbmcsIHRoZW4gZmFpbC4KKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgaWYgKHBvcy5nZXRJbmRleCgpID49IHRleHQubGVuZ3RoKCkpIHJldHVybiAtc3RhcnQ7CisgICAgICAgICAgICBjaGFyIGMgPSB0ZXh0LmNoYXJBdChwb3MuZ2V0SW5kZXgoKSk7CisgICAgICAgICAgICBpZiAoYyAhPSAnICcgJiYgYyAhPSAnXHQnKSBicmVhazsKKyAgICAgICAgICAgIHBvcy5zZXRJbmRleChwb3MuZ2V0SW5kZXgoKSsxKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIGhhbmRsZSBhIGZldyBzcGVjaWFsIGNhc2VzIGhlcmUgd2hlcmUgd2UgbmVlZCB0byBwYXJzZQorICAgICAgICAvLyBhIG51bWJlciB2YWx1ZS4gIFdlIGhhbmRsZSBmdXJ0aGVyLCBtb3JlIGdlbmVyaWMgY2FzZXMgYmVsb3cuICBXZSBuZWVkCisgICAgICAgIC8vIHRvIGhhbmRsZSBzb21lIG9mIHRoZW0gaGVyZSBiZWNhdXNlIHNvbWUgZmllbGRzIHJlcXVpcmUgZXh0cmEgcHJvY2Vzc2luZyBvbgorICAgICAgICAvLyB0aGUgcGFyc2VkIHZhbHVlLgorICAgICAgICBpZiAocGF0dGVybkNoYXJJbmRleCA9PSA0IC8qSE9VUl9PRl9EQVkxX0ZJRUxEKi8gfHwKKyAgICAgICAgICAgIHBhdHRlcm5DaGFySW5kZXggPT0gMTUgLypIT1VSMV9GSUVMRCovIHx8CisgICAgICAgICAgICAocGF0dGVybkNoYXJJbmRleCA9PSAyIC8qTU9OVEhfRklFTEQqLyAmJiBjb3VudCA8PSAyKSB8fAorICAgICAgICAgICAgcGF0dGVybkNoYXJJbmRleCA9PSAxKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBJdCB3b3VsZCBiZSBnb29kIHRvIHVuaWZ5IHRoaXMgd2l0aCB0aGUgb2JleUNvdW50IGxvZ2ljIGJlbG93LAorICAgICAgICAgICAgLy8gYnV0IHRoYXQncyBnb2luZyB0byBiZSBkaWZmaWN1bHQuCisgICAgICAgICAgICBpZiAob2JleUNvdW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICgoc3RhcnQrY291bnQpID4gdGV4dC5sZW5ndGgoKSkgcmV0dXJuIC1zdGFydDsKKyAgICAgICAgICAgICAgICBudW1iZXIgPSBudW1iZXJGb3JtYXQucGFyc2UodGV4dC5zdWJzdHJpbmcoMCwgc3RhcnQrY291bnQpLCBwb3MpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBudW1iZXIgPSBudW1iZXJGb3JtYXQucGFyc2UodGV4dCwgcG9zKTsKKyAgICAgICAgICAgIGlmIChudW1iZXIgPT0gbnVsbCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLXN0YXJ0OworICAgICAgICAgICAgdmFsdWUgPSBudW1iZXIuaW50VmFsdWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAocGF0dGVybkNoYXJJbmRleCkKKyAgICAgICAgeworICAgICAgICBjYXNlIDA6IC8vICdHJyAtIEVSQQorICAgICAgICAgICAgcmV0dXJuIG1hdGNoU3RyaW5nKHRleHQsIHN0YXJ0LCBDYWxlbmRhci5FUkEsIGZvcm1hdERhdGEuZXJhcyk7CisgICAgICAgIGNhc2UgMTogLy8gJ3knIC0gWUVBUgorICAgICAgICAgICAgLy8gSWYgdGhlcmUgYXJlIDMgb3IgbW9yZSBZRUFSIHBhdHRlcm4gY2hhcmFjdGVycywgdGhpcyBpbmRpY2F0ZXMKKyAgICAgICAgICAgIC8vIHRoYXQgdGhlIHllYXIgdmFsdWUgaXMgdG8gYmUgdHJlYXRlZCBsaXRlcmFsbHksIHdpdGhvdXQgYW55CisgICAgICAgICAgICAvLyB0d28tZGlnaXQgeWVhciBhZGp1c3RtZW50cyAoZS5nLiwgZnJvbSAiMDEiIHRvIDIwMDEpLiAgT3RoZXJ3aXNlCisgICAgICAgICAgICAvLyB3ZSBtYWRlIGFkanVzdG1lbnRzIHRvIHBsYWNlIHRoZSAyLWRpZ2l0IHllYXIgaW4gdGhlIHByb3BlcgorICAgICAgICAgICAgLy8gY2VudHVyeSwgZm9yIHBhcnNlZCBzdHJpbmdzIGZyb20gIjAwIiB0byAiOTkiLiAgQW55IG90aGVyIHN0cmluZworICAgICAgICAgICAgLy8gaXMgdHJlYXRlZCBsaXRlcmFsbHk6ICAiMjI1MCIsICItMSIsICIxIiwgIjAwMiIuCisgICAgICAgICAgICBpZiAoY291bnQgPD0gMiAmJiAocG9zLmdldEluZGV4KCkgLSBzdGFydCkgPT0gMgorICAgICAgICAgICAgICAgICYmIENoYXJhY3Rlci5pc0RpZ2l0KHRleHQuY2hhckF0KHN0YXJ0KSkKKyAgICAgICAgICAgICAgICAmJiBDaGFyYWN0ZXIuaXNEaWdpdCh0ZXh0LmNoYXJBdChzdGFydCsxKSkpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gQXNzdW1lIGZvciBleGFtcGxlIHRoYXQgdGhlIGRlZmF1bHRDZW50dXJ5U3RhcnQgaXMgNi8xOC8xOTAzLgorICAgICAgICAgICAgICAgIC8vIFRoaXMgbWVhbnMgdGhhdCB0d28tZGlnaXQgeWVhcnMgd2lsbCBiZSBmb3JjZWQgaW50byB0aGUgcmFuZ2UKKyAgICAgICAgICAgICAgICAvLyA2LzE4LzE5MDMgdG8gNi8xNy8yMDAzLiAgQXMgYSByZXN1bHQsIHllYXJzIDAwLCAwMSwgYW5kIDAyCisgICAgICAgICAgICAgICAgLy8gY29ycmVzcG9uZCB0byAyMDAwLCAyMDAxLCBhbmQgMjAwMi4gIFllYXJzIDA0LCAwNSwgZXRjLiBjb3JyZXNwb25kCisgICAgICAgICAgICAgICAgLy8gdG8gMTkwNCwgMTkwNSwgZXRjLiAgSWYgdGhlIHllYXIgaXMgMDMsIHRoZW4gaXQgaXMgMjAwMyBpZiB0aGUKKyAgICAgICAgICAgICAgICAvLyBvdGhlciBmaWVsZHMgc3BlY2lmeSBhIGRhdGUgYmVmb3JlIDYvMTgsIG9yIDE5MDMgaWYgdGhleSBzcGVjaWZ5IGEKKyAgICAgICAgICAgICAgICAvLyBkYXRlIGFmdGVyd2FyZHMuICBBcyBhIHJlc3VsdCwgMDMgaXMgYW4gYW1iaWd1b3VzIHllYXIuICBBbGwgb3RoZXIKKyAgICAgICAgICAgICAgICAvLyB0d28tZGlnaXQgeWVhcnMgYXJlIHVuYW1iaWd1b3VzLgorICAgICAgICAgICAgICAgIGludCBhbWJpZ3VvdXNUd29EaWdpdFllYXIgPSBkZWZhdWx0Q2VudHVyeVN0YXJ0WWVhciAlIDEwMDsKKyAgICAgICAgICAgICAgICBhbWJpZ3VvdXNZZWFyWzBdID0gdmFsdWUgPT0gYW1iaWd1b3VzVHdvRGlnaXRZZWFyOworICAgICAgICAgICAgICAgIHZhbHVlICs9IChkZWZhdWx0Q2VudHVyeVN0YXJ0WWVhci8xMDApKjEwMCArCisgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA8IGFtYmlndW91c1R3b0RpZ2l0WWVhciA/IDEwMCA6IDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FsZW5kYXIuc2V0KENhbGVuZGFyLllFQVIsIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBwb3MuZ2V0SW5kZXgoKTsKKyAgICAgICAgY2FzZSAyOiAvLyAnTScgLSBNT05USAorICAgICAgICAgICAgaWYgKGNvdW50IDw9IDIpIC8vIGkuZS4sIE0gb3IgTU0uCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gRG9uJ3Qgd2FudCB0byBwYXJzZSB0aGUgbW9udGggaWYgaXQgaXMgYSBzdHJpbmcKKyAgICAgICAgICAgICAgICAvLyB3aGlsZSBwYXR0ZXJuIHVzZXMgbnVtZXJpYyBzdHlsZTogTSBvciBNTS4KKyAgICAgICAgICAgICAgICAvLyBbV2UgY29tcHV0ZWQgJ3ZhbHVlJyBhYm92ZS5dCisgICAgICAgICAgICAgICAgY2FsZW5kYXIuc2V0KENhbGVuZGFyLk1PTlRILCB2YWx1ZSAtIDEpOworICAgICAgICAgICAgICAgIHJldHVybiBwb3MuZ2V0SW5kZXgoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBjb3VudCA+PSAzIC8vIGkuZS4sIE1NTSBvciBNTU1NCisgICAgICAgICAgICAgICAgLy8gV2FudCB0byBiZSBhYmxlIHRvIHBhcnNlIGJvdGggc2hvcnQgYW5kIGxvbmcgZm9ybXMuCisgICAgICAgICAgICAgICAgLy8gVHJ5IGNvdW50ID09IDQgZmlyc3Q6CisgICAgICAgICAgICAgICAgaW50IG5ld1N0YXJ0ID0gMDsKKyAgICAgICAgICAgICAgICBpZiAoKG5ld1N0YXJ0PW1hdGNoU3RyaW5nKHRleHQsIHN0YXJ0LCBDYWxlbmRhci5NT05USCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdERhdGEubW9udGhzKSkgPiAwKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3U3RhcnQ7CisgICAgICAgICAgICAgICAgZWxzZSAvLyBjb3VudCA9PSA0IGZhaWxlZCwgbm93IHRyeSBjb3VudCA9PSAzCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaFN0cmluZyh0ZXh0LCBzdGFydCwgQ2FsZW5kYXIuTU9OVEgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXREYXRhLnNob3J0TW9udGhzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSA0OiAvLyAnaycgLSBIT1VSX09GX0RBWTogMS1iYXNlZC4gIGVnLCAyMzo1OSArIDEgaG91ciA9Pj4gMjQ6NTkKKyAgICAgICAgICAgIC8vIFtXZSBjb21wdXRlZCAndmFsdWUnIGFib3ZlLl0KKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBjYWxlbmRhci5nZXRNYXhpbXVtKENhbGVuZGFyLkhPVVJfT0ZfREFZKSsxKSB2YWx1ZSA9IDA7CisgICAgICAgICAgICBjYWxlbmRhci5zZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVksIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBwb3MuZ2V0SW5kZXgoKTsKKyAgICAgICAgY2FzZSA5OiB7IC8vICdFJyAtIERBWV9PRl9XRUVLCisgICAgICAgICAgICAvLyBXYW50IHRvIGJlIGFibGUgdG8gcGFyc2UgYm90aCBzaG9ydCBhbmQgbG9uZyBmb3Jtcy4KKyAgICAgICAgICAgIC8vIFRyeSBjb3VudCA9PSA0IChEREREKSBmaXJzdDoKKyAgICAgICAgICAgIGludCBuZXdTdGFydCA9IDA7CisgICAgICAgICAgICBpZiAoKG5ld1N0YXJ0PW1hdGNoU3RyaW5nKHRleHQsIHN0YXJ0LCBDYWxlbmRhci5EQVlfT0ZfV0VFSywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0RGF0YS53ZWVrZGF5cykpID4gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3U3RhcnQ7CisgICAgICAgICAgICBlbHNlIC8vIEREREQgZmFpbGVkLCBub3cgdHJ5IERERAorICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaFN0cmluZyh0ZXh0LCBzdGFydCwgQ2FsZW5kYXIuREFZX09GX1dFRUssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdERhdGEuc2hvcnRXZWVrZGF5cyk7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSAxNDogICAgLy8gJ2EnIC0gQU1fUE0KKyAgICAgICAgICAgIHJldHVybiBtYXRjaFN0cmluZyh0ZXh0LCBzdGFydCwgQ2FsZW5kYXIuQU1fUE0sIGZvcm1hdERhdGEuYW1wbXMpOworICAgICAgICBjYXNlIDE1OiAvLyAnaCcgLSBIT1VSOjEtYmFzZWQuICBlZywgMTFQTSArIDEgaG91ciA9Pj4gMTIgQU0KKyAgICAgICAgICAgIC8vIFtXZSBjb21wdXRlZCAndmFsdWUnIGFib3ZlLl0KKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBjYWxlbmRhci5nZXRMZWFzdE1heGltdW0oQ2FsZW5kYXIuSE9VUikrMSkgdmFsdWUgPSAwOworICAgICAgICAgICAgY2FsZW5kYXIuc2V0KENhbGVuZGFyLkhPVVIsIHZhbHVlKTsKKyAgICAgICAgICAgIHJldHVybiBwb3MuZ2V0SW5kZXgoKTsKKyAgICAgICAgY2FzZSAxNzogLy8gJ3onIC0gWk9ORV9PRkZTRVQKKyAgICAgICAgICAgIC8vIEZpcnN0IHRyeSB0byBwYXJzZSBnZW5lcmljIGZvcm1zIHN1Y2ggYXMgR01ULTA3OjAwLiBEbyB0aGlzIGZpcnN0CisgICAgICAgICAgICAvLyBpbiBjYXNlIGxvY2FsaXplZCBEYXRlRm9ybWF0Wm9uZURhdGEgY29udGFpbnMgdGhlIHN0cmluZyAiR01UIgorICAgICAgICAgICAgLy8gZm9yIGEgem9uZTsgaW4gdGhhdCBjYXNlLCB3ZSBkb24ndCB3YW50IHRvIG1hdGNoIHRoZSBmaXJzdCB0aHJlZQorICAgICAgICAgICAgLy8gY2hhcmFjdGVycyBvZiBHTVQrLy1ISDpNTSBldGMuCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW50IHNpZ24gPSAwOworICAgICAgICAgICAgICAgIGludCBvZmZzZXQ7CisKKyAgICAgICAgICAgICAgICAvLyBGb3IgdGltZSB6b25lcyB0aGF0IGhhdmUgbm8ga25vd24gbmFtZXMsIGxvb2sgZm9yIHN0cmluZ3MKKyAgICAgICAgICAgICAgICAvLyBvZiB0aGUgZm9ybToKKyAgICAgICAgICAgICAgICAvLyAgICBHTVRbKy1daG91cnM6bWludXRlcyBvcgorICAgICAgICAgICAgICAgIC8vICAgIEdNVFsrLV1oaG1tIG9yCisgICAgICAgICAgICAgICAgLy8gICAgR01ULgorICAgICAgICAgICAgICAgIGlmICgodGV4dC5sZW5ndGgoKSAtIHN0YXJ0KSA+PSBHTVQubGVuZ3RoKCkgJiYKKyAgICAgICAgICAgICAgICAgICAgdGV4dC5yZWdpb25NYXRjaGVzKHRydWUsIHN0YXJ0LCBHTVQsIDAsIEdNVC5sZW5ndGgoKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBjYWxlbmRhci5zZXQoQ2FsZW5kYXIuRFNUX09GRlNFVCwgMCk7CisKKyAgICAgICAgICAgICAgICAgICAgcG9zLnNldEluZGV4KHN0YXJ0ICsgR01ULmxlbmd0aCgpKTsKKworCQkgICAgdHJ5IHsgLy8gdHJ5LWNhdGNoIGZvciAiR01UIiBvbmx5IHRpbWUgem9uZSBzdHJpbmcKKwkJCWlmKCB0ZXh0LmNoYXJBdChwb3MuZ2V0SW5kZXgoKSkgPT0gJysnICkgeworCQkJICAgIHNpZ24gPSAxOworCQkJfSBlbHNlIGlmKCB0ZXh0LmNoYXJBdChwb3MuZ2V0SW5kZXgoKSkgPT0gJy0nICkgeworCQkJICAgIHNpZ24gPSAtMTsKKwkJCX0gCisJCSAgICB9IGNhdGNoKFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICB9CisJCSAgICBpZiAoc2lnbiA9PSAwKSB7CisJCQljYWxlbmRhci5zZXQoQ2FsZW5kYXIuWk9ORV9PRkZTRVQsIDAgKTsKKwkJCXJldHVybiBwb3MuZ2V0SW5kZXgoKTsKKwkJICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvLyBMb29rIGZvciBob3VyczptaW51dGVzIG9yIGhobW0uCisgICAgICAgICAgICAgICAgICAgIHBvcy5zZXRJbmRleChwb3MuZ2V0SW5kZXgoKSArIDEpOworICAgICAgICAgICAgICAgICAgICBOdW1iZXIgdHpOdW1iZXIgPSBudW1iZXJGb3JtYXQucGFyc2UodGV4dCwgcG9zKTsKKyAgICAgICAgICAgICAgICAgICAgaWYoIHR6TnVtYmVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtc3RhcnQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYoIHRleHQuY2hhckF0KHBvcy5nZXRJbmRleCgpKSA9PSAnOicgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBob3VyczptaW51dGVzIGNhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IHR6TnVtYmVyLmludFZhbHVlKCkgKiA2MDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvcy5zZXRJbmRleChwb3MuZ2V0SW5kZXgoKSArIDEpOworICAgICAgICAgICAgICAgICAgICAgICAgdHpOdW1iZXIgPSBudW1iZXJGb3JtYXQucGFyc2UodGV4dCwgcG9zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKCB0ek51bWJlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1zdGFydDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCArPSB0ek51bWJlci5pbnRWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgaGhtbSBjYXNlLgorICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gdHpOdW1iZXIuaW50VmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKCBvZmZzZXQgPCAyNCApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICo9IDYwOworICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IG9mZnNldCAlIDEwMCArIG9mZnNldCAvIDEwMCAqIDYwOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoIGZvciBmaW5hbCBwcm9jZXNzaW5nIGJlbG93IG9mICdvZmZzZXQnIGFuZCAnc2lnbicuCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBBdCB0aGlzIHBvaW50LCBjaGVjayBmb3IgbmFtZWQgdGltZSB6b25lcyBieSBsb29raW5nIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGxvY2FsZSBkYXRhIGZyb20gdGhlIERhdGVGb3JtYXRab25lRGF0YSBzdHJpbmdzLgorICAgICAgICAgICAgICAgICAgICAvLyBXYW50IHRvIGJlIGFibGUgdG8gcGFyc2UgYm90aCBzaG9ydCBhbmQgbG9uZyBmb3Jtcy4KKwkJICAgIGkgPSBzdWJQYXJzZVpvbmVTdHJpbmcodGV4dCwgc3RhcnQpOworCQkgICAgaWYgKGkgIT0gMCkKKwkJCXJldHVybiBpOworCisgICAgICAgICAgICAgICAgICAgIC8vIEFzIGEgbGFzdCByZXNvcnQsIGxvb2sgZm9yIG51bWVyaWMgdGltZXpvbmVzIG9mIHRoZSBmb3JtCisgICAgICAgICAgICAgICAgICAgIC8vIFsrLV1oaG1tIGFzIHNwZWNpZmllZCBieSBSRkMgODIyLiAgVGhpcyBjb2RlIGlzIGFjdHVhbGx5CisgICAgICAgICAgICAgICAgICAgIC8vIGEgbGl0dGxlIG1vcmUgcGVybWlzc2l2ZSB0aGFuIFJGQyA4MjIuICBJdCB3aWxsIHRyeSB0byBkbworICAgICAgICAgICAgICAgICAgICAvLyBpdHMgYmVzdCB3aXRoIG51bWJlcnMgdGhhdCBhcmVuJ3Qgc3RyaWN0bHkgNCBkaWdpdHMgbG9uZy4KKyAgICAgICAgICAgICAgICAgICAgRGVjaW1hbEZvcm1hdCBmbXQgPSBuZXcgRGVjaW1hbEZvcm1hdCgiKyMjIyM7LSMjIyMiKTsKKyAgICAgICAgICAgICAgICAgICAgZm10LnNldFBhcnNlSW50ZWdlck9ubHkodHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIE51bWJlciB0ek51bWJlciA9IGZtdC5wYXJzZSggdGV4dCwgcG9zICk7CisgICAgICAgICAgICAgICAgICAgIGlmKCB0ek51bWJlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLXN0YXJ0OyAgIC8vIFdhc24ndCBhY3R1YWxseSBhIG51bWJlci4KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSB0ek51bWJlci5pbnRWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBzaWduID0gMTsKKyAgICAgICAgICAgICAgICAgICAgaWYoIG9mZnNldCA8IDAgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaWduID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSAtb2Zmc2V0OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmKCBvZmZzZXQgPCAyNCApCisgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBvZmZzZXQgKiA2MDsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0ICUgMTAwICsgb2Zmc2V0IC8gMTAwICogNjA7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRmFsbCB0aHJvdWdoIGZvciBmaW5hbCBwcm9jZXNzaW5nIGJlbG93IG9mICdvZmZzZXQnIGFuZCAnc2lnbicuCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gRG8gdGhlIGZpbmFsIHByb2Nlc3NpbmcgZm9yIGJvdGggb2YgdGhlIGFib3ZlIGNhc2VzLiAgV2Ugb25seQorICAgICAgICAgICAgICAgIC8vIGFycml2ZSBoZXJlIGlmIHRoZSBmb3JtIEdNVCsvLS4uLiBvciBhbiBSRkMgODIyIGZvcm0gd2FzIHNlZW4uCisgICAgICAgICAgICAgICAgaWYgKHNpZ24gIT0gMCkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIG9mZnNldCAqPSBtaWxsaXNQZXJNaW51dGUgKiBzaWduOworCisgICAgICAgICAgICAgICAgICAgIGlmIChjYWxlbmRhci5nZXRUaW1lWm9uZSgpLnVzZURheWxpZ2h0VGltZSgpKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYWxlbmRhci5zZXQoQ2FsZW5kYXIuRFNUX09GRlNFVCwgbWlsbGlzUGVySG91cik7CisgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgLT0gbWlsbGlzUGVySG91cjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjYWxlbmRhci5zZXQoQ2FsZW5kYXIuWk9ORV9PRkZTRVQsIG9mZnNldCk7CisKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvcy5nZXRJbmRleCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gQWxsIGVmZm9ydHMgdG8gcGFyc2UgYSB6b25lIGZhaWxlZC4KKyAgICAgICAgICAgIHJldHVybiAtc3RhcnQ7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIGNhc2UgMzogLy8gJ2QnIC0gREFURQorICAgICAgICAgICAgLy8gY2FzZSA1OiAvLyAnSCcgLSBIT1VSX09GX0RBWTowLWJhc2VkLiAgZWcsIDIzOjU5ICsgMSBob3VyID0+PiAwMDo1OQorICAgICAgICAgICAgLy8gY2FzZSA2OiAvLyAnbScgLSBNSU5VVEUKKyAgICAgICAgICAgIC8vIGNhc2UgNzogLy8gJ3MnIC0gU0VDT05ECisgICAgICAgICAgICAvLyBjYXNlIDg6IC8vICdTJyAtIE1JTExJU0VDT05ECisgICAgICAgICAgICAvLyBjYXNlIDEwOiAvLyAnRCcgLSBEQVlfT0ZfWUVBUgorICAgICAgICAgICAgLy8gY2FzZSAxMTogLy8gJ0YnIC0gREFZX09GX1dFRUtfSU5fTU9OVEgKKyAgICAgICAgICAgIC8vIGNhc2UgMTI6IC8vICd3JyAtIFdFRUtfT0ZfWUVBUgorICAgICAgICAgICAgLy8gY2FzZSAxMzogLy8gJ1cnIC0gV0VFS19PRl9NT05USAorICAgICAgICAgICAgLy8gY2FzZSAxNjogLy8gJ0snIC0gSE9VUjogMC1iYXNlZC4gIGVnLCAxMVBNICsgMSBob3VyID0+PiAwIEFNCisKKyAgICAgICAgICAgIC8vIEhhbmRsZSAiZ2VuZXJpYyIgZmllbGRzCisgICAgICAgICAgICBpZiAob2JleUNvdW50KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmICgoc3RhcnQrY291bnQpID4gdGV4dC5sZW5ndGgoKSkgcmV0dXJuIC1zdGFydDsKKyAgICAgICAgICAgICAgICBudW1iZXIgPSBudW1iZXJGb3JtYXQucGFyc2UodGV4dC5zdWJzdHJpbmcoMCwgc3RhcnQrY291bnQpLCBwb3MpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBudW1iZXIgPSBudW1iZXJGb3JtYXQucGFyc2UodGV4dCwgcG9zKTsKKyAgICAgICAgICAgIGlmIChudW1iZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGNhbGVuZGFyLnNldChmaWVsZCwgbnVtYmVyLmludFZhbHVlKCkpOworICAgICAgICAgICAgICAgIHJldHVybiBwb3MuZ2V0SW5kZXgoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAtc3RhcnQ7CisgICAgICAgIH0KKyAgICB9CisKKworICAgIC8qKgorICAgICAqIFRyYW5zbGF0ZSBhIHBhdHRlcm4sIG1hcHBpbmcgZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIGZyb20gc3RyaW5nIHRvIHRoZQorICAgICAqIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVyIGluIHRoZSB0byBzdHJpbmcuCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgdHJhbnNsYXRlUGF0dGVybihTdHJpbmcgcGF0dGVybiwgU3RyaW5nIGZyb20sIFN0cmluZyB0bykgeworICAgICAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICBib29sZWFuIGluUXVvdGUgPSBmYWxzZTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBwYXR0ZXJuLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGNoYXIgYyA9IHBhdHRlcm4uY2hhckF0KGkpOworICAgICAgICAgICAgaWYgKGluUXVvdGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXCcnKQorICAgICAgICAgICAgICAgICAgICBpblF1b3RlID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXCcnKQorICAgICAgICAgICAgICAgICAgICBpblF1b3RlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBlbHNlIGlmICgoYyA+PSAnYScgJiYgYyA8PSAneicpIHx8IChjID49ICdBJyAmJiBjIDw9ICdaJykpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGNpID0gZnJvbS5pbmRleE9mKGMpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2kgPT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIHBhdHRlcm4gIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgY2hhcmFjdGVyICciICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYyArICInIik7CisgICAgICAgICAgICAgICAgICAgIGMgPSB0by5jaGFyQXQoY2kpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGluUXVvdGUpCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJVbmZpbmlzaGVkIHF1b3RlIGluIHBhdHRlcm4iKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIHBhdHRlcm4gc3RyaW5nIGRlc2NyaWJpbmcgdGhpcyBkYXRlIGZvcm1hdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvUGF0dGVybigpIHsKKyAgICAgICAgcmV0dXJuIHBhdHRlcm47CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgbG9jYWxpemVkIHBhdHRlcm4gc3RyaW5nIGRlc2NyaWJpbmcgdGhpcyBkYXRlIGZvcm1hdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvTG9jYWxpemVkUGF0dGVybigpIHsKKyAgICAgICAgcmV0dXJuIHRyYW5zbGF0ZVBhdHRlcm4ocGF0dGVybiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0RGF0YS5wYXR0ZXJuQ2hhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdERhdGEubG9jYWxQYXR0ZXJuQ2hhcnMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFwcGx5IHRoZSBnaXZlbiB1bmxvY2FsaXplZCBwYXR0ZXJuIHN0cmluZyB0byB0aGlzIGRhdGUgZm9ybWF0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFwcGx5UGF0dGVybiAoU3RyaW5nIHBhdHRlcm4pCisgICAgeworICAgICAgICB0aGlzLnBhdHRlcm4gPSBwYXR0ZXJuOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFwcGx5IHRoZSBnaXZlbiBsb2NhbGl6ZWQgcGF0dGVybiBzdHJpbmcgdG8gdGhpcyBkYXRlIGZvcm1hdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhcHBseUxvY2FsaXplZFBhdHRlcm4oU3RyaW5nIHBhdHRlcm4pIHsKKyAgICAgICAgdGhpcy5wYXR0ZXJuID0gdHJhbnNsYXRlUGF0dGVybihwYXR0ZXJuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdERhdGEubG9jYWxQYXR0ZXJuQ2hhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0RGF0YS5wYXR0ZXJuQ2hhcnMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGRhdGUvdGltZSBmb3JtYXR0aW5nIGRhdGEuCisgICAgICogQHJldHVybiBhIGNvcHkgb2YgdGhlIGRhdGUtdGltZSBmb3JtYXR0aW5nIGRhdGEgYXNzb2NpYXRlZAorICAgICAqIHdpdGggdGhpcyBkYXRlLXRpbWUgZm9ybWF0dGVyLgorICAgICAqLworICAgIHB1YmxpYyBEYXRlRm9ybWF0U3ltYm9scyBnZXREYXRlRm9ybWF0U3ltYm9scygpCisgICAgeworICAgICAgICByZXR1cm4gKERhdGVGb3JtYXRTeW1ib2xzKWZvcm1hdERhdGEuY2xvbmUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBbGxvd3MgeW91IHRvIHNldCB0aGUgZGF0ZS90aW1lIGZvcm1hdHRpbmcgZGF0YS4KKyAgICAgKiBAcGFyYW0gbmV3Rm9ybWF0RGF0YSB0aGUgZ2l2ZW4gZGF0ZS10aW1lIGZvcm1hdHRpbmcgZGF0YS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXREYXRlRm9ybWF0U3ltYm9scyhEYXRlRm9ybWF0U3ltYm9scyBuZXdGb3JtYXRTeW1ib2xzKQorICAgIHsKKyAgICAgICAgdGhpcy5mb3JtYXREYXRhID0gKERhdGVGb3JtYXRTeW1ib2xzKW5ld0Zvcm1hdFN5bWJvbHMuY2xvbmUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNZXRob2QgZm9yIHN1YmNsYXNzZXMgdG8gYWNjZXNzIHRoZSBEYXRlRm9ybWF0U3ltYm9scy4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgRGF0ZUZvcm1hdFN5bWJvbHMgZ2V0U3ltYm9scygpIHsKKyAgICAgICAgcmV0dXJuIGZvcm1hdERhdGE7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIENsb25lYWJsZQorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKSB7CisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgb3RoZXIgPSAoU2ltcGxlRGF0ZUZvcm1hdCkgc3VwZXIuY2xvbmUoKTsKKyAgICAgICAgb3RoZXIuZm9ybWF0RGF0YSA9IChEYXRlRm9ybWF0U3ltYm9scykgZm9ybWF0RGF0YS5jbG9uZSgpOworICAgICAgICByZXR1cm4gb3RoZXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgaGFzaENvZGUuCisgICAgICogR2VuZXJhdGVzIHRoZSBoYXNoIGNvZGUgZm9yIHRoZSBTaW1wbGVEYXRlRm9ybWF0IG9iamVjdAorICAgICAqLworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHBhdHRlcm4uaGFzaENvZGUoKTsKKyAgICAgICAgLy8ganVzdCBlbm91Z2ggZmllbGRzIGZvciBhIHJlYXNvbmFibGUgZGlzdHJpYnV0aW9uCisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgZXF1YWxzLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKQorICAgIHsKKyAgICAgICAgaWYgKCFzdXBlci5lcXVhbHMob2JqKSkgcmV0dXJuIGZhbHNlOyAvLyBzdXBlciBkb2VzIGNsYXNzIGNoZWNrCisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgdGhhdCA9IChTaW1wbGVEYXRlRm9ybWF0KSBvYmo7CisgICAgICAgIHJldHVybiAocGF0dGVybi5lcXVhbHModGhhdC5wYXR0ZXJuKQorICAgICAgICAgICAgICAgICYmIGZvcm1hdERhdGEuZXF1YWxzKHRoYXQuZm9ybWF0RGF0YSkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlIHJlYWRPYmplY3QuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHJlYWRPYmplY3QoT2JqZWN0SW5wdXRTdHJlYW0gc3RyZWFtKQorICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uLCBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKKyAgICAgICAgICAgICBzdHJlYW0uZGVmYXVsdFJlYWRPYmplY3QoKTsKKyAgICAgICAgICAgICBpZiAoc2VyaWFsVmVyc2lvbk9uU3RyZWFtIDwgMSkgeworICAgICAgICAgICAgICAgICAvLyBkaWRuJ3QgaGF2ZSBkZWZhdWx0Q2VudHVyeVN0YXJ0IGZpZWxkCisgICAgICAgICAgICAgICAgIGluaXRpYWxpemVEZWZhdWx0Q2VudHVyeSgpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgLy8gZmlsbCBpbiBkZXBlbmRlbnQgdHJhbnNpZW50IGZpZWxkCisgICAgICAgICAgICAgICAgIHBhcnNlQW1iaWd1b3VzRGF0ZXNBc0FmdGVyKGRlZmF1bHRDZW50dXJ5U3RhcnQpOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBzZXJpYWxWZXJzaW9uT25TdHJlYW0gPSBjdXJyZW50U2VyaWFsVmVyc2lvbjsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L1N0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS90ZXh0L1N0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmI5ZjVhMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IuamF2YQpAQCAtMCwwICsxLDI2OSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9BdHRpYy9TdHJpbmdDaGFyYWN0ZXJJdGVyYXRvci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDA0OjA3OjIzICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworCisvLyBOT1RFOiAgVGhpcyBjbGFzcyBpcyBpZGVudGljYWwgdG8gamF2YS50ZXh0LlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yCisvLyBpbiBKREsgMS4yLiAgSXQncyBjb3BpZWQgaGVyZSBiZWNhdXNlIHRoZSBKREsgMS4xIHZlcnNpb24gb2YKKy8vIFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yIGhhcyBhIGJ1ZyB0aGF0IHByZXZlbnRzIGl0IGZyb20gd29ya2luZworLy8gcmlnaHQgd2l0aCBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLiAgVGhpcyBjbGFzcyBpcyB1bm5lY2Vzc2FyeQorLy8gd2hlbiB1c2luZyBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIHdpdGggSkRLIDEuMi4KKworcGFja2FnZSBjb20uaWJtLnRleHQ7CitpbXBvcnQgamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yOworCisvKioKKyAqIDxjb2RlPlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yPC9jb2RlPiBpbXBsZW1lbnRzIHRoZQorICogPGNvZGU+Q2hhcmFjdGVySXRlcmF0ZXI8L2NvZGU+IHByb3RvY29sIGZvciBhIDxjb2RlPlN0cmluZzwvY29kZT4uCisgKiBUaGUgPGNvZGU+U3RyaW5nQ2hhcmFjdGVySXRlcmF0b3I8L2NvZGU+IGNsYXNzIGl0ZXJhdGVzIG92ZXIgdGhlCisgKiBlbnRpcmUgPGNvZGU+U3RyaW5nPC9jb2RlPi4KKyAqCisgKiBAc2VlIENoYXJhY3Rlckl0ZXJhdG9yCisgKi8KKworcHVibGljIGZpbmFsIGNsYXNzIFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yIGltcGxlbWVudHMgQ2hhcmFjdGVySXRlcmF0b3IKK3sKKyAgICBwcml2YXRlIFN0cmluZyB0ZXh0OworICAgIHByaXZhdGUgaW50IGJlZ2luOworICAgIHByaXZhdGUgaW50IGVuZDsKKyAgICAvLyBpbnZhcmlhbnQ6IGJlZ2luIDw9IHBvcyA8PSBlbmQKKyAgICBwcml2YXRlIGludCBwb3M7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGFuIGl0ZXJhdG9yIHdpdGggYW4gaW5pdGlhbCBpbmRleCBvZiAwLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcihTdHJpbmcgdGV4dCkKKyAgICB7CisgICAgICAgIHRoaXModGV4dCwgMCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhbiBpdGVyYXRvciB3aXRoIHRoZSBzcGVjaWZpZWQgaW5pdGlhbCBpbmRleC4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgdGV4dCAgIFRoZSBTdHJpbmcgdG8gYmUgaXRlcmF0ZWQgb3ZlcgorICAgICAqIEBwYXJhbSAgcG9zICAgIEluaXRpYWwgaXRlcmF0b3IgcG9zaXRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IoU3RyaW5nIHRleHQsIGludCBwb3MpCisgICAgeworICAgIHRoaXModGV4dCwgMCwgdGV4dC5sZW5ndGgoKSwgcG9zKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGdpdmVuIHJhbmdlIG9mIHRoZSBnaXZlbiBzdHJpbmcsIHdpdGggdGhlCisgICAgICogaW5kZXggc2V0IGF0IHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uCisgICAgICoKKyAgICAgKiBAcGFyYW0gIHRleHQgICBUaGUgU3RyaW5nIHRvIGJlIGl0ZXJhdGVkIG92ZXIKKyAgICAgKiBAcGFyYW0gIGJlZ2luICBJbmRleCBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyCisgICAgICogQHBhcmFtICBlbmQgICAgSW5kZXggb2YgdGhlIGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIGxhc3QgY2hhcmFjdGVyCisgICAgICogQHBhcmFtICBwb3MgICAgSW5pdGlhbCBpdGVyYXRvciBwb3NpdGlvbgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcihTdHJpbmcgdGV4dCwgaW50IGJlZ2luLCBpbnQgZW5kLCBpbnQgcG9zKSB7CisgICAgICAgIGlmICh0ZXh0ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigpOworICAgICAgICB9CisgICAgICAgIHRoaXMudGV4dCA9IHRleHQ7CisKKyAgICAgICAgaWYgKGJlZ2luIDwgMCB8fCBiZWdpbiA+IGVuZCB8fCBlbmQgPiB0ZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIHN1YnN0cmluZyByYW5nZSIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBvcyA8IGJlZ2luIHx8IHBvcyA+IGVuZCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBwb3NpdGlvbiIpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5iZWdpbiA9IGJlZ2luOworICAgICAgICB0aGlzLmVuZCA9IGVuZDsKKyAgICAgICAgdGhpcy5wb3MgPSBwb3M7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVzZXQgdGhpcyBpdGVyYXRvciB0byBwb2ludCB0byBhIG5ldyBzdHJpbmcuICBUaGlzIHBhY2thZ2UtdmlzaWJsZQorICAgICAqIG1ldGhvZCBpcyB1c2VkIGJ5IG90aGVyIGphdmEudGV4dCBjbGFzc2VzIHRoYXQgd2FudCB0byBhdm9pZCBhbGxvY2F0aW5nCisgICAgICogbmV3IFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yIG9iamVjdHMgZXZlcnkgdGltZSB0aGVpciBzZXRUZXh0IG1ldGhvZAorICAgICAqIGlzIGNhbGxlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSAgdGV4dCAgIFRoZSBTdHJpbmcgdG8gYmUgaXRlcmF0ZWQgb3ZlcgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFRleHQoU3RyaW5nIHRleHQpIHsKKyAgICAgICAgaWYgKHRleHQgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy50ZXh0ID0gdGV4dDsKKyAgICAgICAgdGhpcy5iZWdpbiA9IDA7CisgICAgICAgIHRoaXMuZW5kID0gdGV4dC5sZW5ndGgoKTsKKyAgICAgICAgdGhpcy5wb3MgPSAwOworICAgIH0KKworICAgIC8qKgorICAgICAqIEltcGxlbWVudHMgQ2hhcmFjdGVySXRlcmF0b3IuZmlyc3QoKSBmb3IgU3RyaW5nLgorICAgICAqIEBzZWUgQ2hhcmFjdGVySXRlcmF0b3IjZmlyc3QKKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBmaXJzdCgpCisgICAgeworICAgICAgICBwb3MgPSBiZWdpbjsKKyAgICAgICAgcmV0dXJuIGN1cnJlbnQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbXBsZW1lbnRzIENoYXJhY3Rlckl0ZXJhdG9yLmxhc3QoKSBmb3IgU3RyaW5nLgorICAgICAqIEBzZWUgQ2hhcmFjdGVySXRlcmF0b3IjbGFzdAorICAgICAqLworICAgIHB1YmxpYyBjaGFyIGxhc3QoKQorICAgIHsKKyAgICAgICAgaWYgKGVuZCAhPSBiZWdpbikgeworICAgICAgICAgICAgcG9zID0gZW5kIC0gMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBvcyA9IGVuZDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY3VycmVudCgpOworICAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbXBsZW1lbnRzIENoYXJhY3Rlckl0ZXJhdG9yLnNldEluZGV4KCkgZm9yIFN0cmluZy4KKyAgICAgKiBAc2VlIENoYXJhY3Rlckl0ZXJhdG9yI3NldEluZGV4CisgICAgICovCisgICAgcHVibGljIGNoYXIgc2V0SW5kZXgoaW50IHApCisgICAgeworICAgIGlmIChwIDwgYmVnaW4gfHwgcCA+IGVuZCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBpbmRleCIpOworICAgIH0KKyAgICAgICAgcG9zID0gcDsKKyAgICAgICAgcmV0dXJuIGN1cnJlbnQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbXBsZW1lbnRzIENoYXJhY3Rlckl0ZXJhdG9yLmN1cnJlbnQoKSBmb3IgU3RyaW5nLgorICAgICAqIEBzZWUgQ2hhcmFjdGVySXRlcmF0b3IjY3VycmVudAorICAgICAqLworICAgIHB1YmxpYyBjaGFyIGN1cnJlbnQoKQorICAgIHsKKyAgICAgICAgaWYgKHBvcyA+PSBiZWdpbiAmJiBwb3MgPCBlbmQpIHsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0LmNoYXJBdChwb3MpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIERPTkU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbXBsZW1lbnRzIENoYXJhY3Rlckl0ZXJhdG9yLm5leHQoKSBmb3IgU3RyaW5nLgorICAgICAqIEBzZWUgQ2hhcmFjdGVySXRlcmF0b3IjbmV4dAorICAgICAqLworICAgIHB1YmxpYyBjaGFyIG5leHQoKQorICAgIHsKKyAgICAgICAgaWYgKHBvcyA8IGVuZCAtIDEpIHsKKyAgICAgICAgICAgIHBvcysrOworICAgICAgICAgICAgcmV0dXJuIHRleHQuY2hhckF0KHBvcyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwb3MgPSBlbmQ7CisgICAgICAgICAgICByZXR1cm4gRE9ORTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEltcGxlbWVudHMgQ2hhcmFjdGVySXRlcmF0b3IucHJldmlvdXMoKSBmb3IgU3RyaW5nLgorICAgICAqIEBzZWUgQ2hhcmFjdGVySXRlcmF0b3IjcHJldmlvdXMKKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBwcmV2aW91cygpCisgICAgeworICAgICAgICBpZiAocG9zID4gYmVnaW4pIHsKKyAgICAgICAgICAgIHBvcy0tOworICAgICAgICAgICAgcmV0dXJuIHRleHQuY2hhckF0KHBvcyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gRE9ORTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEltcGxlbWVudHMgQ2hhcmFjdGVySXRlcmF0b3IuZ2V0QmVnaW5JbmRleCgpIGZvciBTdHJpbmcuCisgICAgICogQHNlZSBDaGFyYWN0ZXJJdGVyYXRvciNnZXRCZWdpbkluZGV4CisgICAgICovCisgICAgcHVibGljIGludCBnZXRCZWdpbkluZGV4KCkKKyAgICB7CisgICAgICAgIHJldHVybiBiZWdpbjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbXBsZW1lbnRzIENoYXJhY3Rlckl0ZXJhdG9yLmdldEVuZEluZGV4KCkgZm9yIFN0cmluZy4KKyAgICAgKiBAc2VlIENoYXJhY3Rlckl0ZXJhdG9yI2dldEVuZEluZGV4CisgICAgICovCisgICAgcHVibGljIGludCBnZXRFbmRJbmRleCgpCisgICAgeworICAgICAgICByZXR1cm4gZW5kOworICAgIH0KKworICAgIC8qKgorICAgICAqIEltcGxlbWVudHMgQ2hhcmFjdGVySXRlcmF0b3IuZ2V0SW5kZXgoKSBmb3IgU3RyaW5nLgorICAgICAqIEBzZWUgQ2hhcmFjdGVySXRlcmF0b3IjZ2V0SW5kZXgKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEluZGV4KCkKKyAgICB7CisgICAgICAgIHJldHVybiBwb3M7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcGFyZXMgdGhlIGVxdWFsaXR5IG9mIHR3byBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciBvYmplY3RzLgorICAgICAqIEBwYXJhbSBvYmogdGhlIFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yIG9iamVjdCB0byBiZSBjb21wYXJlZCB3aXRoLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gb2JqIGlzIHRoZSBzYW1lIGFzIHRoaXMKKyAgICAgKiBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciBvYmplY3Q7IGZhbHNlIG90aGVyd2lzZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikKKyAgICB7CisgICAgICAgIGlmICh0aGlzID09IG9iaikgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCEob2JqIGluc3RhbmNlb2YgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciB0aGF0ID0gKFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yKSBvYmo7CisKKyAgICAgICAgaWYgKGhhc2hDb2RlKCkgIT0gdGhhdC5oYXNoQ29kZSgpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF0ZXh0LmVxdWFscyh0aGF0LnRleHQpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBvcyAhPSB0aGF0LnBvcyB8fCBiZWdpbiAhPSB0aGF0LmJlZ2luIHx8IGVuZCAhPSB0aGF0LmVuZCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXB1dGVzIGEgaGFzaGNvZGUgZm9yIHRoaXMgaXRlcmF0b3IuCisgICAgICogQHJldHVybiBBIGhhc2ggY29kZQorICAgICAqLworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRleHQuaGFzaENvZGUoKSBeIHBvcyBeIGJlZ2luIF4gZW5kOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoaXMgaXRlcmF0b3IuCisgICAgICogQHJldHVybiBBIGNvcHkgb2YgdGhpcworICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKQorICAgIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yIG90aGVyCisgICAgICAgICAgICA9IChTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvcikgc3VwZXIuY2xvbmUoKTsKKyAgICAgICAgICAgIHJldHVybiBvdGhlcjsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoKTsKKyAgICAgICAgfQorICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9TdHJpbmdTZWFyY2guamF2YSBiL3NyYy9jb20vaWJtL3RleHQvU3RyaW5nU2VhcmNoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2FjZWFjYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvU3RyaW5nU2VhcmNoLmphdmEKQEAgLTAsMCArMSw2MzAgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvQXR0aWMvU3RyaW5nU2VhcmNoLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDMvMTAgMDQ6MDc6MjQgJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0udGV4dDsKKworaW1wb3J0IGphdmEudGV4dC5CcmVha0l0ZXJhdG9yOworaW1wb3J0IGphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnRleHQuQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yOworaW1wb3J0IGphdmEudGV4dC5Db2xsYXRvcjsKK2ltcG9ydCBqYXZhLnRleHQuUnVsZUJhc2VkQ29sbGF0b3I7CitpbXBvcnQgamF2YS50ZXh0LlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisKKy8qKgorICogPGNvZGU+U3RyaW5nU2VhcmNoPC9jb2RlPiBpcyBhIDxjb2RlPlNlYXJjaEl0ZXJhdG9yPC9jb2RlPiB0aGF0IHByb3ZpZGVzCisgKiBsYW5ndWFnZS1zZW5zaXRpdmUgdGV4dCBzZWFyY2hpbmcgYmFzZWQgb24gdGhlIGNvbXBhcmlzb24gcnVsZXMgZGVmaW5lZAorICogaW4gYSB7QGxpbmsgUnVsZUJhc2VkQ29sbGF0b3J9IG9iamVjdC4KKyAqIEluc3RhbmNlcyBvZiA8Y29kZT5TdHJpbmdTZWFyY2g8L2NvZGU+IGZ1bmN0aW9uIGFzIGl0ZXJhdG9ycworICogbWFpbnRhaW4gYSBjdXJyZW50IHBvc2l0aW9uIGFuZCBzY2FuIG92ZXIgdGV4dCByZXR1cm5pbmcgdGhlIGluZGV4IG9mCisgKiBjaGFyYWN0ZXJzIHdoZXJlIHRoZSBwYXR0ZXJuIG9jY3VycyBhbmQgdGhlIGxlbmd0aCBvZiBlYWNoIG1hdGNoLgorICogPHA+CisgKiA8Y29kZT5TdHJpbmdTZWFyY2g8L2NvZGU+IHVzZXMgYSB2ZXJzaW9uIG9mIHRoZSBmYXN0IEJveWVyLU1vb3JlIHNlYXJjaAorICogYWxnb3JpdGhtIHRoYXQgaGFzIGJlZW4gYWRhcHRlZCB0byB3b3JrIHdpdGggdGhlIGxhcmdlIGNoYXJhY3RlciBzZXQgb2YKKyAqIFVuaWNvZGUuICBTZWUgIkVmZmljaWVudCBUZXh0IFNlYXJjaGluZyBpbiBKYXZhIiwgdG8gYmUgcHVibGlzaGVkIGluCisgKiA8aT5KYXZhIFJlcG9ydDwvaT4gaW4gRmVicnVhcnksIDE5OTksIGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uIG9uIHRoZSBhbGdvcml0aG0uCisgKiA8cD4KKyAqIENvbnN1bHQgdGhlIDxjb2RlPlNlYXJjaEl0ZXJhdG9yPC9jb2RlPiBkb2N1bWVudGF0aW9uIGZvciBpbmZvcm1hdGlvbiBvbgorICogYW5kIGV4YW1wbGVzIG9mIGhvdyB0byB1c2UgaW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MgdG8gaW1wbGVtZW50IHRleHQKKyAqIHNlYXJjaGluZy4gIDxjb2RlPlNlYXJjaEl0ZXJhdG9yPC9jb2RlPiBwcm92aWRlcyBhbGwgb2YgdGhlIG5lY2Vzc2FyeQorICogQVBJOyB0aGlzIGNsYXNzIG9ubHkgcHJvdmlkZXMgY29uc3RydWN0b3JzIGFuZCBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbgorICogbWV0aG9kcy4KKyAqCisgKiBAc2VlIFNlYXJjaEl0ZXJhdG9yCisgKiBAc2VlIGphdmEudGV4dC5SdWxlQmFzZWRDb2xsYXRvcgorICoKKyAqIEBhdXRob3IgTGF1cmEgV2VybmVyCisgKiBAdmVyc2lvbiAxLjAKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIFN0cmluZ1NlYXJjaCBleHRlbmRzIFNlYXJjaEl0ZXJhdG9yCit7CisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgPGNvZGU+U3RyaW5nU2VhcmNoPC9jb2RlPiBvYmplY3QgdXNpbmcgYSBzcGVjaWZpYyBjb2xsYXRvciBhbmQgc2V0CisgICAgICogb2YgYm91bmRhcnktZGV0ZWN0aW9uIHJ1bGVzLgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBwYXQgICAgICAgVGhlIHRleHQgZm9yIHdoaWNoIHRoaXMgb2JqZWN0IHdpbGwgc2VhcmNoLgorICAgICAqCisgICAgICogQHBhcmFtIHRhcmdldCAgICBUaGUgdGV4dCBpbiB3aGljaCB0byBzZWFyY2ggZm9yIHRoZSBwYXR0ZXJuLgorICAgICAqCisgICAgICogQHBhcmFtIGNvbGwgICAgICBBIDxjb2RlPlJ1bGVCYXNlZENvbGxhdG9yPC9jb2RlPiBvYmplY3Qgd2hpY2ggZGVmaW5lcyB0aGUKKyAgICAgKiAgICAgICAgICAgICAgICAgIGxhbmd1YWdlLXNlbnNpdGl2ZSBjb21wYXJpc29uIHJ1bGVzIHVzZWQgdG8gZGV0ZXJtaW5lIAorICAgICAqICAgICAgICAgICAgICAgICAgd2hldGhlciB0ZXh0IGluIHRoZSBwYXR0ZXJuIGFuZCB0YXJnZXQgbWF0Y2hlcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBicmVha2VyICAgQSA8Y29kZT5CcmVha0l0ZXJhdG9yPC9jb2RlPiBvYmplY3QgdXNlZCB0byBjb25zdHJhaW4gdGhlIG1hdGNoZXMKKyAgICAgKiAgICAgICAgICAgICAgICAgIHRoYXQgYXJlIGZvdW5kLiAgTWF0Y2hlcyB3aG9zZSBzdGFydCBhbmQgZW5kIGluZGljZXMKKyAgICAgKiAgICAgICAgICAgICAgICAgIGluIHRoZSB0YXJnZXQgdGV4dCBhcmUgbm90IGJvdW5kYXJpZXMgYXMgZGV0ZXJtaW5lZAorICAgICAqICAgICAgICAgICAgICAgICAgYnkgdGhlIDxjb2RlPkJyZWFrSXRlcmF0b3I8L2NvZGU+IGFyZSBpZ25vcmVkLiAgSWYgdGhpcyBiZWhhdmlvcgorICAgICAqICAgICAgICAgICAgICAgICAgaXMgbm90IGRlc2lyZWQsIDxjb2RlPm51bGw8L2NvZGU+IGNhbiBiZSBwYXNzZWQgaW4gaW5zdGVhZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nU2VhcmNoKFN0cmluZyBwYXQsIENoYXJhY3Rlckl0ZXJhdG9yIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRDb2xsYXRvciBjb2xsLCBCcmVha0l0ZXJhdG9yIGJyZWFrZXIpIHsKKyAgICAgICAgc3VwZXIodGFyZ2V0LCBicmVha2VyKTsKKworICAgICAgICBwYXR0ZXJuID0gcGF0OworICAgICAgICBjb2xsYXRvciA9IGNvbGw7CisgICAgICAgIHN0cmVuZ3RoID0gY29sbC5nZXRTdHJlbmd0aCgpOworICAgICAgICBpdGVyID0gY29sbGF0b3IuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHRhcmdldCk7CisgICAgICAgIAorICAgICAgICBpbml0aWFsaXplKCk7ICAgLy8gSW5pdGlhbGl6ZSB0aGUgQm95ZXItTW9vcmUgdGFibGVzCisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgPGNvZGU+U3RyaW5nU2VhcmNoPC9jb2RlPiBvYmplY3QgdXNpbmcgYSBzcGVjaWZpYyBjb2xsYXRvci4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gcGF0dGVybiAgIFRoZSB0ZXh0IGZvciB3aGljaCB0aGlzIG9iamVjdCB3aWxsIHNlYXJjaC4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0YXJnZXQgICAgVGhlIHRleHQgaW4gd2hpY2ggdG8gc2VhcmNoIGZvciB0aGUgcGF0dGVybi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjb2xsYXRvciAgQSA8Y29kZT5SdWxlQmFzZWRDb2xsYXRvcjwvY29kZT4gb2JqZWN0IHdoaWNoIGRlZmluZXMgdGhlCisgICAgICogICAgICAgICAgICAgICAgICBsYW5ndWFnZS1zZW5zaXRpdmUgY29tcGFyaXNvbiBydWxlcyB1c2VkIHRvIGRldGVybWluZSAKKyAgICAgKiAgICAgICAgICAgICAgICAgIHdoZXRoZXIgdGV4dCBpbiB0aGUgcGF0dGVybiBhbmQgdGFyZ2V0IG1hdGNoZXMuCisgICAgICovCisgICAgcHVibGljIFN0cmluZ1NlYXJjaChTdHJpbmcgcGF0dGVybiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXJJdGVyYXRvciB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkQ29sbGF0b3IgY29sbGF0b3IpIHsKKyAgICAgICAgdGhpcyhwYXR0ZXJuLCB0YXJnZXQsIGNvbGxhdG9yLCBCcmVha0l0ZXJhdG9yLmdldENoYXJhY3Rlckluc3RhbmNlKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIDxjb2RlPlN0cmluZ1NlYXJjaDwvY29kZT4gb2JqZWN0IHVzaW5nIHRoZSBjb2xsYXRvciBhbmQKKyAgICAgKiBjaGFyYWN0ZXIgYm91bmRhcnkgZGV0ZWN0aW9uIHJ1bGVzIGZvciBhIGdpdmVuIGxvY2FsZQorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBwYXR0ZXJuICAgVGhlIHRleHQgZm9yIHdoaWNoIHRoaXMgb2JqZWN0IHdpbGwgc2VhcmNoLgorICAgICAqCisgICAgICogQHBhcmFtIHRhcmdldCAgICBUaGUgdGV4dCBpbiB3aGljaCB0byBzZWFyY2ggZm9yIHRoZSBwYXR0ZXJuLgorICAgICAqCisgICAgICogQHBhcmFtIGxvYyAgICAgICBUaGUgbG9jYWxlIHdob3NlIGNvbGxhdGlvbiBhbmQgYnJlYWstZGV0ZWN0aW9uIHJ1bGVzCisgICAgICogICAgICAgICAgICAgICAgICBzaG91bGQgYmUgdXNlZC4KKyAgICAgKgorICAgICAqIEBleGNlcHRpb24gICAgICAgQ2xhc3NDYXN0RXhjZXB0aW9uIHRocm93biBpZiB0aGUgY29sbGF0b3IgZm9yIHRoZSBzcGVjaWZpZWQKKyAgICAgKiAgICAgICAgICAgICAgICAgIGxvY2FsZSBpcyBub3QgYSBSdWxlQmFzZWRDb2xsYXRvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nU2VhcmNoKFN0cmluZyBwYXR0ZXJuLCBDaGFyYWN0ZXJJdGVyYXRvciB0YXJnZXQsIExvY2FsZSBsb2MpIHsKKyAgICAgICAgdGhpcyhwYXR0ZXJuLCB0YXJnZXQsCisgICAgICAgICAgICAgKFJ1bGVCYXNlZENvbGxhdG9yKSBDb2xsYXRvci5nZXRJbnN0YW5jZShsb2MpLAorICAgICAgICAgICAgIEJyZWFrSXRlcmF0b3IuZ2V0Q2hhcmFjdGVySW5zdGFuY2UobG9jKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgPGNvZGU+U3RyaW5nU2VhcmNoPC9jb2RlPiBvYmplY3QgdXNpbmcgdGhlIGNvbGxhdG9yIGZvciB0aGUgZGVmYXVsdAorICAgICAqIGxvY2FsZQorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBwYXR0ZXJuICAgVGhlIHRleHQgZm9yIHdoaWNoIHRoaXMgb2JqZWN0IHdpbGwgc2VhcmNoLgorICAgICAqCisgICAgICogQHBhcmFtIHRhcmdldCAgICBUaGUgdGV4dCBpbiB3aGljaCB0byBzZWFyY2ggZm9yIHRoZSBwYXR0ZXJuLgorICAgICAqCisgICAgICogQHBhcmFtIGNvbGxhdG9yICBBIDxjb2RlPlJ1bGVCYXNlZENvbGxhdG9yPC9jb2RlPiBvYmplY3Qgd2hpY2ggZGVmaW5lcyB0aGUKKyAgICAgKiAgICAgICAgICAgICAgICAgIGxhbmd1YWdlLXNlbnNpdGl2ZSBjb21wYXJpc29uIHJ1bGVzIHVzZWQgdG8gZGV0ZXJtaW5lIAorICAgICAqICAgICAgICAgICAgICAgICAgd2hldGhlciB0ZXh0IGluIHRoZSBwYXR0ZXJuIGFuZCB0YXJnZXQgbWF0Y2hlcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nU2VhcmNoKFN0cmluZyBwYXR0ZXJuLCBTdHJpbmcgdGFyZ2V0KSB7CisgICAgICAgIHRoaXMocGF0dGVybiwKKyAgICAgICAgICAgICBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IodGFyZ2V0KSwKKyAgICAgICAgICAgICAoUnVsZUJhc2VkQ29sbGF0b3IpQ29sbGF0b3IuZ2V0SW5zdGFuY2UoKSwKKyAgICAgICAgICAgICBCcmVha0l0ZXJhdG9yLmdldENoYXJhY3Rlckluc3RhbmNlKCkpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIEdldHRlcnMgYW5kIFNldHRlcnMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoaXMgb2JqZWN0J3Mgc3RyZW5ndGggcHJvcGVydHkuIFRoZSBzdHJlbmd0aCBkZXRlcm1pbmVzIHRoZQorICAgICAqIG1pbmltdW0gbGV2ZWwgb2YgZGlmZmVyZW5jZSBjb25zaWRlcmVkIHNpZ25pZmljYW50IGR1cmluZyBhCisgICAgICogc2VhcmNoLiAgR2VuZXJhbGx5LCB7QGxpbmsgQ29sbGF0b3IjVEVSVElBUll9IGFuZCAKKyAgICAgKiB7QGxpbmsgQ29sbGF0b3IjSURFTlRJQ0FMfSBpbmRpY2F0ZSB0aGF0IGFsbCBkaWZmZXJlbmNlcyBhcmUKKyAgICAgKiBjb25zaWRlcmVkIHNpZ25pZmljYW50LCB7QGxpbmsgQ29sbGF0b3IjU0VDT05EQVJZfSBpbmRpY2F0ZXMKKyAgICAgKiB0aGF0IHVwcGVyL2xvd2VyIGNhc2UgZGlzdGluY3Rpb25zIHNob3VsZCBiZSBpZ25vcmVkLCBhbmQKKyAgICAgKiB7QGxpbmsgQ29sbGF0b3IjUFJJTUFSWX0gaW5kaWNhdGVzIHRoYXQgYm90aCBjYXNlIGFuZCBhY2NlbnRzCisgICAgICogc2hvdWxkIGJlIGlnbm9yZWQuICBIb3dldmVyLCB0aGUgZXhhY3QgbWVhbmluZ3Mgb2YgdGhlc2UgY29uc3RhbnRzCisgICAgICogYXJlIGRldGVybWluZWQgYnkgaW5kaXZpZHVhbCBDb2xsYXRvciBvYmplY3RzLgorICAgICAqIDxwPgorICAgICAqIEBzZWUgamF2YS50ZXh0LkNvbGxhdG9yI1BSSU1BUlkKKyAgICAgKiBAc2VlIGphdmEudGV4dC5Db2xsYXRvciNTRUNPTkRBUlkKKyAgICAgKiBAc2VlIGphdmEudGV4dC5Db2xsYXRvciNURVJUSUFSWQorICAgICAqIEBzZWUgamF2YS50ZXh0LkNvbGxhdG9yI0lERU5USUNBTAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFN0cmVuZ3RoKGludCBuZXdTdHJlbmd0aCkgeworICAgICAgICBzdHJlbmd0aCA9IG5ld1N0cmVuZ3RoOworICAgICAgICAKKyAgICAgICAgLy8gRHVlIHRvIGEgYnVnICg/KSBpbiBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IsIHdlIG11c3Qgc2V0IHRoZQorICAgICAgICAvLyBjb2xsYXRvcidzIHN0cmVuZ3RoIGFzIHdlbGwsIHNpbmNlIHRoZSBpdGVyYXRvciBpcyBnb2luZyB0bworICAgICAgICAvLyBtYXNrIG91dCB0aGUgcG9ydGlvbnMgb2YgdGhlIGNvbGxhdGlvbiBlbGVtZW50IHRoYXQgYXJlIG5vdAorICAgICAgICAvLyByZWxldmFudCBmb3IgdGhlIGNvbGxhdG9yJ3MgY3VycmVudCBzdHJlbmd0aCBzZXR0aW5nCisgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIG1ha2VzIGl0IGltcG9zc2libGUgdG8gc2hhcmUgYSBDb2xsYXRvciBhbW9uZworICAgICAgICAvLyBtdWx0aXBsZSBTdHJpbmdTZWFyY2ggb2JqZWN0cyBpZiB5b3UgYWRqdXN0IFN0cmVuZ3RoIHNldHRpbmdzLgorICAgICAgICBjb2xsYXRvci5zZXRTdHJlbmd0aChzdHJlbmd0aCk7CisgICAgICAgIGluaXRpYWxpemUoKTsKKyAgICB9CisgICAgCisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGlzIG9iamVjdCdzIHN0cmVuZ3RoIHByb3BlcnR5LCB3aGljaCBpbmRpY2F0ZXMgd2hhdCBsZXZlbAorICAgICAqIG9mIGRpZmZlcmVuY2VzIGFyZSBjb25zaWRlcmVkIHNpZ25pZmljYW50IGR1cmluZyBhIHNlYXJjaC4KKyAgICAgKiA8cD4KKyAgICAgKiBAc2VlICNzZXRTdHJlbmd0aAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0U3RyZW5ndGgoKSB7CisgICAgICAgIHJldHVybiBzdHJlbmd0aDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogU2V0IHRoZSBjb2xsYXRvciB0byBiZSB1c2VkIGZvciB0aGlzIHN0cmluZyBzZWFyY2guICBBbHNvIGNoYW5nZXMKKyAgICAgKiB0aGUgc2VhcmNoIHN0cmVuZ3RoIHRvIG1hdGNoIHRoYXQgb2YgdGhlIG5ldyBjb2xsYXRvci4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGlzIG1ldGhvZCBjYXVzZXMgaW50ZXJuYWwgZGF0YSBzdWNoIGFzIEJveWVyLU1vb3JlIHNoaWZ0IHRhYmxlcworICAgICAqIHRvIGJlIHJlY2FsY3VsYXRlZCwgYnV0IHRoZSBpdGVyYXRvcidzIHBvc2l0aW9uIGlzIHVuY2hhbmdlZC4KKyAgICAgKiA8cD4KKyAgICAgKiBAc2VlICNnZXRDb2xsYXRvcgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldENvbGxhdG9yKFJ1bGVCYXNlZENvbGxhdG9yIGNvbGwpIHsKKyAgICAgICAgY29sbGF0b3IgPSBjb2xsOworICAgICAgICBzdHJlbmd0aCA9IGNvbGxhdG9yLmdldFN0cmVuZ3RoKCk7CisgICAgICAgIAorICAgICAgICAvLyBBbHNvIG5lZWQgdG8gcmVjb21wdXRlIHRoZSBwYXR0ZXJuIGFuZCBnZXQgYSBuZXcgdGFyZ2V0IGl0ZXJhdG9yCisgICAgICAgIGl0ZXIgPSBjb2xsYXRvci5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IoZ2V0VGFyZ2V0KCkpOworICAgICAgICBpbml0aWFsaXplKCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgUnVsZUJhc2VkQ29sbGF0b3IgYmVpbmcgdXNlZCBmb3IgdGhpcyBzdHJpbmcgc2VhcmNoLgorICAgICAqLworICAgIHB1YmxpYyBSdWxlQmFzZWRDb2xsYXRvciBnZXRDb2xsYXRvcigpIHsKKyAgICAgICAgcmV0dXJuIGNvbGxhdG9yOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIHBhdHRlcm4gZm9yIHdoaWNoIHRvIHNlYXJjaC4gIAorICAgICAqIFRoaXMgbWV0aG9kIGNhdXNlcyBpbnRlcm5hbCBkYXRhIHN1Y2ggYXMgQm95ZXItTW9vcmUgc2hpZnQgdGFibGVzCisgICAgICogdG8gYmUgcmVjYWxjdWxhdGVkLCBidXQgdGhlIGl0ZXJhdG9yJ3MgcG9zaXRpb24gaXMgdW5jaGFuZ2VkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFBhdHRlcm4oU3RyaW5nIHBhdCkgeworICAgICAgICBwYXR0ZXJuID0gcGF0OworICAgICAgICBpbml0aWFsaXplKCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHBhdHRlcm4gZm9yIHdoaWNoIHRoaXMgb2JqZWN0IGlzIHNlYXJjaGluZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldFBhdHRlcm4oKSB7CisgICAgICAgIHJldHVybiBwYXR0ZXJuOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIHRhcmdldCB0ZXh0IHdoaWNoIHNob3VsZCBiZSBzZWFyY2hlZCBhbmQgcmVzZXRzIHRoZQorICAgICAqIGl0ZXJhdG9yJ3MgcG9zaXRpb24gdG8gcG9pbnQgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgbmV3IHRleHQuCisgICAgICogVGhpcyBtZXRob2QgaXMgdXNlZnVsIGlmIHlvdSB3YW50IHRvIHJlLXVzZSBhbiBpdGVyYXRvciB0bworICAgICAqIHNlYXJjaCBmb3IgdGhlIHNhbWUgcGF0dGVybiB3aXRoaW4gYSBkaWZmZXJlbnQgYm9keSBvZiB0ZXh0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFRhcmdldChDaGFyYWN0ZXJJdGVyYXRvciB0YXJnZXQpIHsKKyAgICAgICAgc3VwZXIuc2V0VGFyZ2V0KHRhcmdldCk7CisgICAgICAgIAorICAgICAgICAvLyBTaW5jZSB3ZSdyZSBjYWNoaW5nIGEgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLCByZWNyZWF0ZSBpdAorICAgICAgICBpdGVyID0gY29sbGF0b3IuZ2V0Q29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yKHRhcmdldCk7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gUHJpdmF0ZXMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFNlYXJjaCBmb3J3YXJkIGZvciBtYXRjaGluZyB0ZXh0LCBzdGFydGluZyBhdCBhIGdpdmVuIGxvY2F0aW9uLgorICAgICAqIENsaWVudHMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgbWV0aG9kIGRpcmVjdGx5OyBpbnN0ZWFkIHRoZXkgc2hvdWxkIGNhbGwKKyAgICAgKiB7QGxpbmsgU2VhcmNoSXRlcmF0b3IjbmV4dH0uCisgICAgICogPHA+CisgICAgICogSWYgYSBtYXRjaCBpcyBmb3VuZCwgdGhpcyBtZXRob2QgcmV0dXJucyB0aGUgaW5kZXggYXQgd2hpY2ggdGhlIG1hdGNoCisgICAgICogc3RhcnRzIGFuZCBjYWxscyB7QGxpbmsgU2VhcmNoSXRlcmF0b3Ijc2V0TWF0Y2hMZW5ndGh9CisgICAgICogd2l0aCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gdGhlIHRhcmdldAorICAgICAqIHRleHQgdGhhdCBtYWtlIHVwIHRoZSBtYXRjaC4gIElmIG5vIG1hdGNoIGlzIGZvdW5kLCB0aGUgbWV0aG9kIHJldHVybnMKKyAgICAgKiA8Y29kZT5ET05FPC9jb2RlPiBhbmQgZG9lcyBub3QgY2FsbCA8dHQ+c2V0TWF0Y2hMZW5ndGg8L3R0Pi4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gc3RhcnQgVGhlIGluZGV4IGluIHRoZSB0YXJnZXQgdGV4dCBhdCB3aGljaCB0aGUgc2VhcmNoIHN0YXJ0cy4KKyAgICAgKgorICAgICAqIEByZXR1cm4gICAgICBUaGUgaW5kZXggYXQgd2hpY2ggdGhlIG1hdGNoZWQgdGV4dCBpbiB0aGUgdGFyZ2V0IHN0YXJ0cywgb3IgRE9ORQorICAgICAqICAgICAgICAgICAgICBpZiBubyBtYXRjaCB3YXMgZm91bmQuCisgICAgICogPHA+CisgICAgICogQHNlZSBTZWFyY2hJdGVyYXRvciNuZXh0CisgICAgICogQHNlZSBTZWFyY2hJdGVyYXRvciNET05FCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVOZXh0KGludCBzdGFydCkKKyAgICB7CisgICAgICAgIENoYXJhY3Rlckl0ZXJhdG9yIHRhcmdldCA9IGdldFRhcmdldCgpOworICAgICAgICAKKyAgICAgICAgaW50IG1hc2sgPSBnZXRNYXNrKHN0cmVuZ3RoKTsKKyAgICAgICAgaW50IGRvbmUgPSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IuTlVMTE9SREVSICYgbWFzazsKKyAgICAgICAgCisgICAgICAgIGlmIChERUJVRykgeworICAgICAgICAgICAgZGVidWcoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1oYW5kbGVOZXh0LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKyAgICAgICAgICAgIGRlYnVnKCIiKTsKKyAgICAgICAgICAgIGRlYnVnKCJzdHJlbmd0aD0iICsgc3RyZW5ndGggKyAiLCBtYXNrPSIgKyBJbnRlZ2VyLnRvU3RyaW5nKG1hc2ssMTYpCisgICAgICAgICAgICAgICAgKyAiLCBkb25lPSIgKyBJbnRlZ2VyLnRvU3RyaW5nKGRvbmUsMTYpKTsKKyAgICAgICAgICAgIGRlYnVnKCJkZWNvbXA9IiArIGNvbGxhdG9yLmdldERlY29tcG9zaXRpb24oKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGRlYnVnKCJ0YXJnZXQuYmVnaW49IiArIGdldFRhcmdldCgpLmdldEJlZ2luSW5kZXgoKSk7CisgICAgICAgICAgICBkZWJ1ZygidGFyZ2V0LmVuZD0iICsgZ2V0VGFyZ2V0KCkuZ2V0RW5kSW5kZXgoKSk7CisgICAgICAgICAgICBkZWJ1Zygic3RhcnQgPSAiICsgc3RhcnQpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQgaW5kZXggPSBzdGFydCArIG1pbkxlbjsKKyAgICAgICAgaW50IG1hdGNoRW5kID0gMDsKKworICAgICAgICB3aGlsZSAoaW5kZXggPD0gdGFyZ2V0LmdldEVuZEluZGV4KCkpCisgICAgICAgIHsKKyAgICAgICAgICAgIGludCBwYXRJbmRleCA9IG5vcm1MZW47CisgICAgICAgICAgICBpbnQgdHZhbCA9IDAsIHB2YWwgPSAwOworICAgICAgICAgICAgYm9vbGVhbiBnZXRQID0gdHJ1ZTsKKworICAgICAgICAgICAgaXRlci5zZXRPZmZzZXQoaW5kZXgpOworICAgICAgICAgICAgbWF0Y2hFbmQgPSBpbmRleDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKERFQlVHKSBkZWJ1ZygiIG91dGVyIGxvb3A6IHBhdEluZGV4PSIgKyBwYXRJbmRleCArICIsIGluZGV4PSIgKyBpbmRleCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHdoaWxlICgocGF0SW5kZXggPiAwIHx8IGdldFAgPT0gZmFsc2UpICYmIGl0ZXIuZ2V0T2Zmc2V0KCkgPiBzdGFydCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgaW5uZXIgbG9vcDogcGF0SW5kZXg9IiArIHBhdEluZGV4ICsgIiBpdGVyPSIgKyBpdGVyLmdldE9mZnNldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgZGVidWcoIiAgIGdldFA9IiArIGdldFApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIHByZXZpb3VzIGNoYXJhY3RlciBpbiBib3RoIHRoZSBwYXR0ZXJuIGFuZCB0aGUgdGFyZ2V0CisgICAgICAgICAgICAgICAgdHZhbCA9IGl0ZXIucHJldmlvdXMoKSAmIG1hc2s7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGdldFApIHB2YWwgPSB2YWx1ZUxpc3RbLS1wYXRJbmRleF07CisgICAgICAgICAgICAgICAgZ2V0UCA9IHRydWU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBkZWJ1ZygiICAgcHZhbD0iICsgSW50ZWdlci50b1N0cmluZyhwdmFsLDE2KSArICIsIHR2YWw9IiArIEludGVnZXIudG9TdHJpbmcodHZhbCwxNikpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICh0dmFsID09IDApIHsgICAgICAgLy8gc2tpcCB0dmFsLCB1c2Ugc2FtZSBwdmFsCisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgZGVidWcoIiAgIHR2YWwgaXMgaWdub3JhYmxlIik7CisgICAgICAgICAgICAgICAgICAgIGdldFAgPSBmYWxzZTsgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHB2YWwgIT0gdHZhbCkgeyAgICAvLyBNaXNtYXRjaCwgc2tpcCBhaGVhZAorICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIGRlYnVnKCIgICBtaXNtYXRjaDogc2tpcHBwaW5nICIgKyBnZXRTaGlmdCh0dmFsLCBwYXRJbmRleCkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaW5kZXggKz0gZ2V0U2hpZnQodHZhbCwgcGF0SW5kZXgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAocGF0SW5kZXggPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGUgdmFsdWVzIG1hdGNoZWQsIGFuZCB3ZSdyZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYXR0ZXJuLAorICAgICAgICAgICAgICAgICAgICAvLyB3aGljaCBtZWFucyB3ZSBtYXRjaGVkIHRoZSB3aG9sZSB0aGluZy4KKyAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBpdGVyLmdldE9mZnNldCgpOworICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaExlbmd0aChtYXRjaEVuZCAtIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBkZWJ1ZygiRm91bmQgbWF0Y2ggYXQgaW5kZXggIisgc3RhcnQgKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChERUJVRykgZGVidWcoIiBlbmQgb2YgaW5uZXIgbG9vcDogcGF0SW5kZXg9IiArIHBhdEluZGV4ICsgIiBpdGVyPSIgKyBpdGVyLmdldE9mZnNldCgpKTsKKyAgICAgICAgICAgIGlmIChERUJVRykgZGVidWcoIiAgIGdldFA9IiArIGdldFApOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoaXRlci5nZXRPZmZzZXQoKSA8PSBzdGFydCkgeworICAgICAgICAgICAgICAgIC8vIFdlIGhpdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSB0ZXh0IGJlaW5nIHNlYXJjaGVkLCB3aGljaCBpcworICAgICAgICAgICAgICAgIC8vIHBvc3NpYmxlIGlmIGl0IGNvbnRhaW5zIGxvdHMgb2YgaWdub3JhYmxlIGNoYXJhY3RlcnMuCisgICAgICAgICAgICAgICAgLy8gQWR2YW5jZSBvbmUgY2hhcmFjdGVyIGFuZCB0cnkgYWdhaW4uCisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBkZWJ1ZygiaGl0IGJlZ2lubmluZyBvZiB0YXJnZXQ7IGFkdmFuY2UgYnkgb25lIik7CisgICAgICAgICAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoREVCVUcpIGRlYnVnKCJGZWxsIG9mZiBlbmQgb2Ygb3V0ZXIgbG9vcDsgcmV0dXJuaW5nIERPTkUiKTsKKyAgICAgICAgcmV0dXJuIERPTkU7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2VhcmNoIGJhY2t3YXJkIGZvciBtYXRjaGluZyB0ZXh0ICxzdGFydGluZyBhdCBhIGdpdmVuIGxvY2F0aW9uLgorICAgICAqIENsaWVudHMgc2hvdWxkIG5vdCBjYWxsIHRoaXMgbWV0aG9kIGRpcmVjdGx5OyBpbnN0ZWFkIHRoZXkgc2hvdWxkIGNhbGwKKyAgICAgKiA8Y29kZT5TZWFyY2hJdGVyYXRvci5wcmV2aW91cygpPC9jb2RlPiwgd2hpY2ggdGhpcyBtZXRob2Qgb3ZlcnJpZGVzLgorICAgICAqIDxwPgorICAgICAqIElmIGEgbWF0Y2ggaXMgZm91bmQsIHRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGluZGV4IGF0IHdoaWNoIHRoZSBtYXRjaAorICAgICAqIHN0YXJ0cyBhbmQgY2FsbHMge0BsaW5rIFNlYXJjaEl0ZXJhdG9yI3NldE1hdGNoTGVuZ3RofQorICAgICAqIHdpdGggdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGluIHRoZSB0YXJnZXQKKyAgICAgKiB0ZXh0IHRoYXQgbWFrZSB1cCB0aGUgbWF0Y2guICBJZiBubyBtYXRjaCBpcyBmb3VuZCwgdGhlIG1ldGhvZCByZXR1cm5zCisgICAgICogPGNvZGU+RE9ORTwvY29kZT4gYW5kIGRvZXMgbm90IGNhbGwgPHR0PnNldE1hdGNoTGVuZ3RoPC90dD4uCisgICAgICogPHA+CisgICAgICogQHBhcmFtIHN0YXJ0IFRoZSBpbmRleCBpbiB0aGUgdGFyZ2V0IHRleHQgYXQgd2hpY2ggdGhlIHNlYXJjaCBzdGFydHMuCisgICAgICoKKyAgICAgKiBAcmV0dXJuICAgICAgVGhlIGluZGV4IGF0IHdoaWNoIHRoZSBtYXRjaGVkIHRleHQgaW4gdGhlIHRhcmdldCBzdGFydHMsIG9yIERPTkUKKyAgICAgKiAgICAgICAgICAgICAgaWYgbm8gbWF0Y2ggd2FzIGZvdW5kLgorICAgICAqIDxwPgorICAgICAqIEBzZWUgU2VhcmNoSXRlcmF0b3IjcHJldmlvdXMKKyAgICAgKiBAc2VlIFNlYXJjaEl0ZXJhdG9yI0RPTkUKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZVByZXYoaW50IHN0YXJ0KQorICAgIHsKKyAgICAgICAgaW50IHBhdExlbiA9IG5vcm1MZW47CisgICAgICAgIGludCBpbmRleCA9IHN0YXJ0IC0gbWluTGVuOworCisgICAgICAgIGludCBtYXNrID0gZ2V0TWFzayhzdHJlbmd0aCk7CisgICAgICAgIGludCBkb25lID0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUiAmIG1hc2s7CisKKyAgICAgICAgaWYgKERFQlVHKSB7CisgICAgICAgICAgICBkZWJ1ZygiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLWhhbmRsZVByZXYtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpOworICAgICAgICAgICAgZGVidWcoIiIpOworICAgICAgICAgICAgZGVidWcoInN0cmVuZ3RoPSIgKyBzdHJlbmd0aCArICIsIG1hc2s9IiArIEludGVnZXIudG9TdHJpbmcobWFzaywxNikKKyAgICAgICAgICAgICAgICArICIsIGRvbmU9IiArIEludGVnZXIudG9TdHJpbmcoZG9uZSwxNikpOworICAgICAgICAgICAgZGVidWcoImRlY29tcD0iICsgY29sbGF0b3IuZ2V0RGVjb21wb3NpdGlvbigpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZGVidWcoInRhcmdldC5iZWdpbj0iICsgZ2V0VGFyZ2V0KCkuZ2V0QmVnaW5JbmRleCgpKTsKKyAgICAgICAgICAgIGRlYnVnKCJ0YXJnZXQuZW5kPSIgKyBnZXRUYXJnZXQoKS5nZXRFbmRJbmRleCgpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgd2hpbGUgKGluZGV4ID49IDApIHsKKyAgICAgICAgICAgIGludCBwYXRJbmRleCA9IDA7CisgICAgICAgICAgICBpbnQgdHZhbCA9IDAsIHB2YWwgPSAwOworICAgICAgICAgICAgYm9vbGVhbiBnZXRQID0gdHJ1ZTsKKworICAgICAgICAgICAgaXRlci5zZXRPZmZzZXQoaW5kZXgpOworCisgICAgICAgICAgICBpZiAoREVCVUcpIGRlYnVnKCIgb3V0ZXIgbG9vcDogcGF0SW5kZXg9IiArIHBhdEluZGV4ICsgIiwgaW5kZXg9IiArIGluZGV4KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgd2hpbGUgKChwYXRJbmRleCA8IHBhdExlbiB8fCAhZ2V0UCkgJiYgaXRlci5nZXRPZmZzZXQoKSA8IHN0YXJ0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChERUJVRykgeworICAgICAgICAgICAgICAgICAgICBkZWJ1ZygiICBpbm5lciBsb29wOiBwYXRJbmRleD0iICsgcGF0SW5kZXggKyAiIGl0ZXI9IiArIGl0ZXIuZ2V0T2Zmc2V0KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0dmFsID0gaXRlci5uZXh0KCkgJiBtYXNrOworICAgICAgICAgICAgICAgIGlmIChnZXRQKSBwdmFsID0gdmFsdWVMaXN0W3BhdEluZGV4KytdOworICAgICAgICAgICAgICAgIGdldFAgPSB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBkZWJ1ZygiICAgcHZhbD0iICsgSW50ZWdlci50b1N0cmluZyhwdmFsLDE2KSArICIsIHR2YWw9IiArIEludGVnZXIudG9TdHJpbmcodHZhbCwxNikpOworCisgICAgICAgICAgICAgICAgaWYgKHR2YWwgPT0gZG9uZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIGRlYnVnKCIgICBlbmQgb2YgdGFyZ2V0OyBubyBtYXRjaCIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gRE9ORTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAodHZhbCA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgZGVidWcoIiAgIHR2YWwgaXMgaWdub3JhYmxlIik7CisgICAgICAgICAgICAgICAgICAgIGdldFAgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAocHZhbCAhPSB0dmFsKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGRpZG4ndCBtYXRjaCB0aGlzIHBhdHRlcm4uICBTa2lwIGFoZWFkCisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgZGVidWcoIiAgIG1pc21hdGNoOiBza2lwcHBpbmcgIiArIGdldEJhY2tTaGlmdCh0dmFsLCBwYXRJbmRleCkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaW50IHNoaWZ0ID0gZ2V0QmFja1NoaWZ0KHR2YWwsIHBhdEluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgaW5kZXggLT0gc2hpZnQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChwYXRJbmRleCA9PSBwYXRMZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGVsZW1lbnRzIG1hdGNoZWQgYW5kIHdlJ3JlIGF0IHRoZSBlbmQgb2YgdGhlIHBhdHRlcm4sCisgICAgICAgICAgICAgICAgICAgIC8vIHdoaWNoIG1lYW5zIHdlIG1hdGNoZWQgdGhlIHdob2xlIHRoaW5nLgorICAgICAgICAgICAgICAgICAgICBzZXRNYXRjaExlbmd0aChpdGVyLmdldE9mZnNldCgpIC0gaW5kZXgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGl0ZXIuZ2V0T2Zmc2V0KCkgPj0gc3RhcnQpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBoaXQgdGhlIGVuZCBvZiB0aGUgdGV4dCBiZWluZyBzZWFyY2hlZCwgd2hpY2ggaXMKKyAgICAgICAgICAgICAgICAvLyBwb3NzaWJsZSBpZiBpdCBjb250YWlucyBsb3RzIG9mIGlnbm9yYWJsZSBjaGFyYWN0ZXJzLgorICAgICAgICAgICAgICAgIC8vIEJhY2sgdXAgb25lIGNoYXJhY3RlciBhbmQgdHJ5IGFnYWluLgorICAgICAgICAgICAgICAgIGlmIChERUJVRykgZGVidWcoImhpdCBlbmQgb2YgdGFyZ2V0OyBiYWNrIGJ5IG9uZSIpOworICAgICAgICAgICAgICAgIGluZGV4LS07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIERPTkU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgYml0bWFzayB0aGF0IHdpbGwgc2VsZWN0IG9ubHkgdGhlIHBvcnRpb25zIG9mIGEgY29sbGF0aW9uIAorICAgICAqIGVsZW1lbnQgdGhhdCBhcmUgc2lnbmlmaWNhbnQgYXQgdGhlIGdpdmVuIHN0cmVuZ3RoIGxldmVsLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBnZXRNYXNrKGludCBzdHJlbmd0aCkgeworICAgICAgICBzd2l0Y2ggKHN0cmVuZ3RoKSB7CisgICAgICAgICAgICBjYXNlIENvbGxhdG9yLlBSSU1BUlk6CisgICAgICAgICAgICAgICAgcmV0dXJuIDB4RkZGRjAwMDA7CisgICAgICAgICAgICBjYXNlIENvbGxhdG9yLlNFQ09OREFSWToKKyAgICAgICAgICAgICAgICByZXR1cm4gMHhGRkZGRkYwMDsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIDB4RkZGRkZGRkY7CisgICAgICAgIH0KKyAgICB9CisgICAgCisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFByaXZhdGUgRGF0YQorICAgIC8vCisgICAgcHJpdmF0ZSBDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IgICAgaXRlcjsKKyAgICBwcml2YXRlIFJ1bGVCYXNlZENvbGxhdG9yICAgICAgICAgICBjb2xsYXRvcjsKKyAgICBwcml2YXRlIGludCAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlbmd0aDsKKyAgICAKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIEV2ZXJ5dGhpbmcgZnJvbSBoZXJlIG9uIGRvd24gaXMgdGhlIGRhdGEgdXNlZCB0byByZXByZXNlbnQgdGhlCisgICAgLy8gQm95ZXItTW9vcmUgc2hpZnQgdGFibGVzIGFuZCB0aGUgY29kZSB0aGF0IGdlbmVyYXRlcyBhbmQgbWFuaXB1bGF0ZXMKKyAgICAvLyB0aGVtLgorICAgIC8vCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BWF9UQUJMRSA9IDI1NjsgICAgICAgIC8vIFNpemUgb2YgdGhlIHNoaWZ0IHRhYmxlcworICAgIAorICAgIHByaXZhdGUgaW50ICAgICB2YWx1ZUxpc3RbXSA9IG51bGw7CisgICAgcHJpdmF0ZSBpbnQgICAgIHNoaWZ0VGFibGVbXSA9IG5ldyBpbnRbTUFYX1RBQkxFXTsKKyAgICBwcml2YXRlIGludCAgICAgYmFja1NoaWZ0VGFibGVbXSA9IG5ldyBpbnRbTUFYX1RBQkxFXTsKKworICAgIHByaXZhdGUgU3RyaW5nICBwYXR0ZXJuOyAgICAgICAgICAgIC8vIFRoZSBwYXR0ZXJuIHN0cmluZworICAgIHByaXZhdGUgaW50ICAgICBub3JtTGVuID0gMDsgICAgICAgIC8vIG51bS4gb2YgY29sbGF0aW9uIGVsZW1lbnRzIGluIHBhdHRlcm4uCisgICAgcHJpdmF0ZSBpbnQgICAgIG1pbkxlbiA9IDA7ICAgICAgICAgLy8gTWluIG9mIGNvbXBvc2VkLCBkZWNvbXBvc2VkIHZlcnNpb25zCisgICAgcHJpdmF0ZSBpbnQgICAgIG1heExlbiA9IDA7ICAgICAgICAgLy8gTWF4CisKKyAgICBwcml2YXRlIHZvaWQgaW5pdGlhbGl6ZSgpIHsKKyAgICAgICAgaWYgKERFQlVHKSAgeworICAgICAgICAgICAgZGVidWcoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1pbml0aWFsaXplLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iKTsKKyAgICAgICAgICAgIGRlYnVnKCJwYXR0ZXJuPSIgKyBwYXR0ZXJuKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIGl0ZXIgPSBjb2xsYXRvci5nZXRDb2xsYXRpb25FbGVtZW50SXRlcmF0b3IocGF0dGVybik7CisKKyAgICAgICAgaW50IG1hc2sgPSBnZXRNYXNrKHN0cmVuZ3RoKTsKKworICAgICAgICAvLyBTZWUgaG93IG1hbnkgbm9uLWlnbm9yYWJsZSBjb2xsYXRpb24ga2V5cyBhcmUgaW4gdGhlIHRleHQKKyAgICAgICAgbm9ybUxlbiA9IDA7CisgICAgICAgIGludCBlbGVtOworICAgICAgICB3aGlsZSAoKGVsZW0gPSBpdGVyLm5leHQoKSkgIT0gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLk5VTExPUkRFUikKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKChlbGVtICYgbWFzaykgIT0gMCkgeworICAgICAgICAgICAgICAgIG5vcm1MZW4rKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFNhdmUgdGhlbSBhbGwKKyAgICAgICAgdmFsdWVMaXN0ID0gbmV3IGludFtub3JtTGVuXTsKKyAgICAgICAgaW50IGV4cGFuZExlbiA9IDA7CisgICAgICAgIGl0ZXIucmVzZXQoKTsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbm9ybUxlbjsgaSsrKQorICAgICAgICB7CisgICAgICAgICAgICBlbGVtID0gaXRlci5uZXh0KCk7CisKKyAgICAgICAgICAgIGlmICgoZWxlbSAmIG1hc2spICE9IDApIHsKKyAgICAgICAgICAgICAgICB2YWx1ZUxpc3RbaV0gPSBlbGVtICYgbWFzazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEtlZXAgdHJhY2sgb2Ygd2hldGhlciB0aGVyZSBhcmUgYW55IGV4cGFuZGluZy1jaGFyYWN0ZXIKKyAgICAgICAgICAgIC8vIHNlcXVlbmNlcyB0aGF0IGNhbiByZXN1bHQgaW4gb25lIG9mIHRoZSBjaGFyYWN0ZXJzIHRoYXQncyBpbgorICAgICAgICAgICAgLy8gdGhlIHBhdHRlcm4uICBJZiB0aGVyZSBhcmUsIHdlIGhhdmUgdG8gcmVkdWNlIHRoZSBzaGlmdAorICAgICAgICAgICAgLy8gZGlzdGFuY2VzIGNhbGN1bGF0ZWQgYmVsb3cgdG8gYWNjb3VudCBmb3IgaXQuCisgICAgICAgICAgICBleHBhbmRMZW4gKz0gaXRlci5nZXRNYXhFeHBhbnNpb24oZWxlbSkgLSAxOworICAgICAgICB9CisKKyAgICAgICAgLy8KKyAgICAgICAgLy8gV2UgbmVlZCB0byByZW1lbWJlciB0aGUgc2l6ZSBvZiB0aGUgY29tcG9zZWQgYW5kIGRlY29tcG9zZWQKKyAgICAgICAgLy8gdmVyc2lvbnMgb2YgdGhlIHN0cmluZy4gIFN0YW5kYXJkIEJveWVyLU1vb3JlIHNoaWZ0IGNhbGN1bGF0aW9ucworICAgICAgICAvLyBjYW4gYmUgd3JvbmcgYnkgYW4gYW1vdW50IHVwIHRvIHRoYXQgZGlmZmVyZW5jZSwgc2luY2UgYSBzbWFsbAorICAgICAgICAvLyBzbWFsbCBudW1iZXIgb2YgY2hhcmFjdGVycyBpbiB0aGUgcGF0dGVybiBjYW4gbWFwIHRvIGEgbGFyZ2VyCisgICAgICAgIC8vIG51bWJlciBpbiB0aGUgdGV4dCBiZWluZyBzZWFyY2hlZCwgb3IgdmljZS12ZXJzYS4KKyAgICAgICAgLy8KKyAgICAgICAgaW50IHVuaUxlbiA9IHBhdHRlcm4ubGVuZ3RoKCk7CisgICAgICAgIG1heExlbiA9IE1hdGgubWF4KG5vcm1MZW4sIHVuaUxlbik7CisgICAgICAgIG1pbkxlbiA9IE1hdGgubWluKG5vcm1MZW4sIHVuaUxlbikgLSBleHBhbmRMZW47CisKKyAgICAgICAgaWYgKERFQlVHKSBkZWJ1Zygibm9ybUxlbj0iICsgbm9ybUxlbiArICIsIGV4cGFuZExlbj0iICsgZXhwYW5kTGVuCisgICAgICAgICAgICAgICAgICAgICAgICArICIsIG1heExlbj0iICsgbWF4TGVuICsgIiwgbWluTGVuPSIgKyBtaW5MZW4pOworICAgICAgICAKKyAgICAgICAgLy8gTm93IGluaXRpYWxpemUgdGhlIHNoaWZ0IHRhYmxlcworICAgICAgICAvLworICAgICAgICAvLyBOT1RFOiBUaGlzIGlzIHRoZSBtb3N0IGNvbnNlcnZhdGl2ZSB3YXkgdG8gYnVpbGQgdGhlbS4gIElmIHdlIGhhZCBhIHdheQorICAgICAgICAvLyBvZiBrbm93aW5nIHRoYXQgdGhlcmUgd2VyZSBubyBleHBhbmRpbmcvY29udHJhY3RpbmcgY2hhcnMgaW4gdGhlIHJ1bGVzLAorICAgICAgICAvLyB3ZSBjb3VsZCBnZXQgcmlkIG9mIHRoZSAiLSAxIiBpbiB0aGUgc2hpZnRUYWJsZSBjYWxjdWxhdGlvbnMuCisgICAgICAgIC8vIEJ1dCBhbGwgb2YgdGhlIGRlZmF1bHQgY29sbGF0b3JzIGhhdmUgYXQgbGVhc3Qgb25lIGV4cGFuc2lvbiBvcgorICAgICAgICAvLyBjb250cmFjdGlvbiwgc28gaXQgcHJvYmFibHkgZG9lc24ndCBtYXR0ZXIgYW55d2F5LgorICAgICAgICAvLworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE1BWF9UQUJMRTsgaSsrKSB7CisgICAgICAgICAgICBzaGlmdFRhYmxlW2ldID0gYmFja1NoaWZ0VGFibGVbaV0gPSBtaW5MZW47CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG5vcm1MZW4tMTsgaSsrKSB7CisgICAgICAgICAgICBzaGlmdFRhYmxlW2hhc2godmFsdWVMaXN0W2ldKV0gPSBNYXRoLm1heChtaW5MZW4gLSBpIC0gMSwgMSk7CisgICAgICAgIH0KKyAgICAgICAgc2hpZnRUYWJsZVtoYXNoKHZhbHVlTGlzdFtub3JtTGVuLTFdKV0gPSAxOworICAgICAgICAKKyAgICAgICAgZm9yIChpbnQgaSA9IG5vcm1MZW4gLSAxOyBpID4gMDsgaS0tKSB7CisgICAgICAgICAgICBiYWNrU2hpZnRUYWJsZVtoYXNoKHZhbHVlTGlzdFtpXSldID0gaTsKKyAgICAgICAgfQorICAgICAgICBiYWNrU2hpZnRUYWJsZVtoYXNoKHZhbHVlTGlzdFswXSldID0gMTsKKworICAgICAgICBpZiAoREVCVUcpIGR1bXBUYWJsZXMoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNZXRob2QgdXNlZCBieSBTdHJpbmdTZWFyY2ggdG8gZGV0ZXJtaW5lIGhvdyBmYXIgdG8gdGhlIHJpZ2h0IHRvCisgICAgICogc2hpZnQgdGhlIHBhdHRlcm4gZHVyaW5nIGEgQm95ZXItTW9vcmUgc2VhcmNoLiAgCisgICAgICoKKyAgICAgKiBAcGFyYW0gY3VyVmFsdWUgIFRoZSBjdXJyZW50IHZhbHVlIGluIHRoZSB0YXJnZXQgdGV4dAorICAgICAqIEBwYXJhbSBjdXJJbmRleCAgVGhlIGluZGV4IGluIHRoZSBwYXR0ZXJuIGF0IHdoaWNoIHdlIGZhaWxlZCB0byBtYXRjaAorICAgICAqICAgICAgICAgICAgICAgICAgY3VyVmFsdWUgaW4gdGhlIHRhcmdldCB0ZXh0LgorICAgICAqLworICAgIHByaXZhdGUgaW50IGdldFNoaWZ0KCBpbnQgY3VyVmFsdWUsIGludCBjdXJJbmRleCApIHsKKyAgICAgICAgaW50IHNoaWZ0QW10ID0gc2hpZnRUYWJsZVtoYXNoKGN1clZhbHVlKV07CisKKyAgICAgICAgaWYgKG1pbkxlbiAhPSBtYXhMZW4pIHsKKyAgICAgICAgICAgIGludCBhZGp1c3QgPSBub3JtTGVuIC0gY3VySW5kZXg7CisgICAgICAgICAgICBpZiAoc2hpZnRBbXQgPiBhZGp1c3QgKyAxKSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBkZWJ1ZygiZ2V0U2hpZnQ6IGFkanVzdGluZyBieSAiICsgYWRqdXN0KTsKKyAgICAgICAgICAgICAgICBzaGlmdEFtdCAtPSBhZGp1c3Q7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNoaWZ0QW10OworICAgIH0KKworICAgIC8qKgorICAgICAqIE1ldGhvZCB1c2VkIGJ5IFN0cmluZ1NlYXJjaCB0byBkZXRlcm1pbmUgaG93IGZhciB0byB0aGUgbGVmdCB0bworICAgICAqIHNoaWZ0IHRoZSBwYXR0ZXJuIGR1cmluZyBhIHJldmVyc2UgQm95ZXItTW9vcmUgc2VhcmNoLiAgCisgICAgICoKKyAgICAgKiBAcGFyYW0gY3VyVmFsdWUgIFRoZSBjdXJyZW50IHZhbHVlIGluIHRoZSB0YXJnZXQgdGV4dAorICAgICAqIEBwYXJhbSBjdXJJbmRleCAgVGhlIGluZGV4IGluIHRoZSBwYXR0ZXJuIGF0IHdoaWNoIHdlIGZhaWxlZCB0byBtYXRjaAorICAgICAqICAgICAgICAgICAgICAgICAgY3VyVmFsdWUgaW4gdGhlIHRhcmdldCB0ZXh0LgorICAgICAqLworICAgIHByaXZhdGUgaW50IGdldEJhY2tTaGlmdCggaW50IGN1clZhbHVlLCBpbnQgY3VySW5kZXggKSB7CisgICAgICAgIGludCBzaGlmdEFtdCA9IGJhY2tTaGlmdFRhYmxlW2hhc2goY3VyVmFsdWUpXTsKKworICAgICAgICBpZiAobWluTGVuICE9IG1heExlbikgeworICAgICAgICAgICAgaW50IGFkanVzdCA9IG5vcm1MZW4gLSAobWluTGVuIC0gY3VySW5kZXgpOworICAgICAgICAgICAgaWYgKHNoaWZ0QW10ID4gYWRqdXN0ICsgMSkgeworICAgICAgICAgICAgICAgIGlmIChERUJVRykgZGVidWcoImdldEJhY2tTaGlmdDogYWRqdXN0aW5nIGJ5ICIgKyBhZGp1c3QpOworICAgICAgICAgICAgICAgIHNoaWZ0QW10IC09IGFkanVzdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2hpZnRBbXQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogSGFzaCBhIGNvbGxhdGlvbiBlbGVtZW50IGZyb20gaXRzIGZ1bGwgc2l6ZSAoMzIgYml0cykgZG93biBpbnRvIGEKKyAgICAgKiB2YWx1ZSB0aGF0IGNhbiBiZSB1c2VkIGFzIGFuIGluZGV4IGludG8gdGhlIHNoaWZ0IHRhYmxlcy4gIFJpZ2h0CisgICAgICogbm93IHdlIGRvIGEgbW9kdWx1cyBieSB0aGUgc2l6ZSBvZiB0aGUgaGFzaCB0YWJsZS4KKyAgICAgKgorICAgICAqIFRPRE86IEF0IHNvbWUgcG9pbnQgSSBzaG91bGQgZXhwZXJpbWVudCB0byBzZWUgd2hldGhlciBhIHNsaWdodGx5CisgICAgICogbW9yZSBjb21wbGljYXRlZCBoYXNoIGZ1bmN0aW9uIGdpdmVzIHVzIGEgYmV0dGVyIGRpc3RyaWJ1dGlvbgorICAgICAqIG9uIG11bHRpbGluZ3VhbCB0ZXh0LiAgSSBkb3VidCBpdCB3aWxsIGhhdmUgbXVjaCBlZmZlY3Qgb24KKyAgICAgKiBwZXJmb3JtYW5jZSwgdGhvdWdoLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBoYXNoKGludCBvcmRlcikgeworICAgICAgICByZXR1cm4gQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yLnByaW1hcnlPcmRlcihvcmRlcikgJSBNQVhfVEFCTEU7CisgICAgfQorCisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBEZWJ1Z2dpbmcgc3VwcG9ydC4uLgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlOworCisgICAgc3RhdGljIHZvaWQgZGVidWcoU3RyaW5nIHN0cikgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oc3RyKTsKKyAgICB9CisKKyAgICB2b2lkIGR1bXBUYWJsZXMoKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYX1RBQkxFOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChzaGlmdFRhYmxlW2ldICE9IG1pbkxlbikgeworICAgICAgICAgICAgICAgIGRlYnVnKCJzaGlmdFsiICsgSW50ZWdlci50b1N0cmluZyhpLDE2KSArICJdID0gIiArIHNoaWZ0VGFibGVbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYX1RBQkxFOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChiYWNrU2hpZnRUYWJsZVtpXSAhPSBtaW5MZW4pIHsKKyAgICAgICAgICAgICAgICBkZWJ1ZygiYmFja1NoaWZ0WyIgKyBJbnRlZ2VyLnRvU3RyaW5nKGksMTYpICsgIl0gPSAiICsgYmFja1NoaWZ0VGFibGVbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvU3ltYm9sVGFibGUuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvU3ltYm9sVGFibGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jMDkzMjY1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9TeW1ib2xUYWJsZS5qYXZhCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvQXR0aWMvU3ltYm9sVGFibGUuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wOC8zMCAyMDo0MDozMCAkIAorICogJFJldmlzaW9uOiAxLjYgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udGV4dDsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VQb3NpdGlvbjsKKworLyoqCisgKiBBbiBpbnRlcmZhY2UgdGhhdCBtYXBzIHN0cmluZ3MgdG8gb2JqZWN0cy4gIFRoaXMgaW50ZXJmYWNlIGRlZmluZXMKKyAqIGJvdGggbG9va3VwIHByb3RvY29sIGFuZCBwYXJzaW5nLiAgVGhpcyBhbGxvd3MgZGlmZmVyZW50IGNvbXBvbmVudHMKKyAqIHRvIHNoYXJlIGEgc3ltYm9sIHRhYmxlIGFuZCB0byBoYW5kbGUgbmFtZSBwYXJzaW5nIHVuaWZvcm1seS4gIEl0CisgKiBpcyBleHBlY3RlZCB0aGF0IGNsaWVudCBwYXJzZSBjb2RlIGxvb2sgZm9yIHRoZSBTWU1CT0xfUkVGCisgKiBjaGFyYWN0ZXIgYW5kLCB3aGVuIHNlZW4sIGF0dGVtcHQgdG8gcGFyc2UgdGhlIGNoYXJhY3RlcnMgYWZ0ZXIgaXQKKyAqIHVzaW5nIHBhcnNlUmVmZXJlbmNlKCkuCisgKgorICogPHA+Q3VycmVudGx5LCBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvciBhbmQgVW5pY29kZVNldCB1c2UgdGhpcworICogaW50ZXJmYWNlIHRvIHNoYXJlIHZhcmlhYmxlIGRlZmluaXRpb25zLgorICovCitwdWJsaWMgaW50ZXJmYWNlIFN5bWJvbFRhYmxlIHsKKworICAgIC8qKgorICAgICAqIFRoZSBjaGFyYWN0ZXIgcHJlY2VkaW5nIGEgc3ltYm9sIHJlZmVyZW5jZSBuYW1lLgorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBjaGFyIFNZTUJPTF9SRUYgPSAnJCc7CisKKyAgICAvKioKKyAgICAgKiBMb29rdXAgdGhlIGNoYXJhY3RlcnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc3RyaW5nIGFuZCByZXR1cm4gaXQuCisgICAgICogUmV0dXJuIDx0dD5udWxsPC90dD4gaWYgbm8gc3VjaCBuYW1lIGV4aXN0cy4gIFRoZSByZXN1bHRhbnQKKyAgICAgKiBhcnJheSBtYXkgaGF2ZSBsZW5ndGggemVyby4KKyAgICAgKi8KKyAgICBjaGFyW10gbG9va3VwKFN0cmluZyBzKTsKKworICAgIC8qKgorICAgICAqIExvb2t1cCB0aGUgVW5pY29kZVNldCBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGNoYXJhY3RlciwgYW5kCisgICAgICogcmV0dXJuIGl0LiAgUmV0dXJuIDx0dD5udWxsPC90dD4gaWYgbm90IGZvdW5kLgorICAgICAqLworICAgIFVuaWNvZGVTZXQgbG9va3VwU2V0KGNoYXIgY2gpOworCisgICAgLyoqCisgICAgICogUGFyc2UgYSBzeW1ib2wgcmVmZXJlbmNlIG5hbWUgZnJvbSB0aGUgZ2l2ZW4gc3RyaW5nLCBzdGFydGluZworICAgICAqIGF0IHRoZSBnaXZlbiBwb3NpdGlvbi4gIElmIG5vIHZhbGlkIHN5bWJvbCByZWZlcmVuY2UgbmFtZSBpcworICAgICAqIGZvdW5kLCByZXR1cm4gbnVsbCBhbmQgbGVhdmUgcG9zIHVuY2hhbmdlZC4KKyAgICAgKiBAcGFyYW0gdGV4dCB0aGUgdGV4dCB0byBwYXJzZSBmb3IgdGhlIG5hbWUKKyAgICAgKiBAcGFyYW0gcG9zIG9uIGVudHJ5LCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlciB0byBwYXJzZS4KKyAgICAgKiBUaGlzIGlzIHRoZSBjaGFyYWN0ZXIgZm9sbG93aW5nIHRoZSBTWU1CT0xfUkVGIGNoYXJhY3Rlci4gIE9uCisgICAgICogZXhpdCwgdGhlIGluZGV4IGFmdGVyIHRoZSBsYXN0IHBhcnNlZCBjaGFyYWN0ZXIuCisgICAgICogQHBhcmFtIGxpbWl0IHRoZSBpbmRleCBhZnRlciB0aGUgbGFzdCBjaGFyYWN0ZXIgdG8gYmUgcGFyc2VkLgorICAgICAqIEByZXR1cm4gdGhlIHBhcnNlZCBuYW1lLgorICAgICAqLworICAgIFN0cmluZyBwYXJzZVJlZmVyZW5jZShTdHJpbmcgdGV4dCwgUGFyc2VQb3NpdGlvbiBwb3MsIGludCBsaW1pdCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L1RyYW5zbGl0ZXJhdGlvblJ1bGUuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvVHJhbnNsaXRlcmF0aW9uUnVsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjk4NTlmOGQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L1RyYW5zbGl0ZXJhdGlvblJ1bGUuamF2YQpAQCAtMCwwICsxLDY3NSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9BdHRpYy9UcmFuc2xpdGVyYXRpb25SdWxlLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMTEvMjkgMTk6MTI6MzIgJCAKKyAqICRSZXZpc2lvbjogMS4yNSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXh0OworCitpbXBvcnQgY29tLmlibS51dGlsLlV0aWxpdHk7CisKKy8qKgorICogQSB0cmFuc2xpdGVyYXRpb24gcnVsZSB1c2VkIGJ5CisgKiA8Y29kZT5SdWxlQmFzZWRUcmFuc2xpdGVyYXRvcjwvY29kZT4uCisgKiA8Y29kZT5UcmFuc2xpdGVyYXRpb25SdWxlPC9jb2RlPiBpcyBhbiBpbW11dGFibGUgb2JqZWN0LgorICoKKyAqIDxwPkEgcnVsZSBjb25zaXN0cyBvZiBhbiBpbnB1dCBwYXR0ZXJuIGFuZCBhbiBvdXRwdXQgc3RyaW5nLiAgV2hlbgorICogdGhlIGlucHV0IHBhdHRlcm4gaXMgbWF0Y2hlZCwgdGhlIG91dHB1dCBzdHJpbmcgaXMgZW1pdHRlZC4gIFRoZQorICogaW5wdXQgcGF0dGVybiBjb25zaXN0cyBvZiB6ZXJvIG9yIG1vcmUgY2hhcmFjdGVycyB3aGljaCBhcmUgbWF0Y2hlZAorICogZXhhY3RseSAodGhlIGtleSkgYW5kIG9wdGlvbmFsIGNvbnRleHQuICBDb250ZXh0IG11c3QgbWF0Y2ggaWYgaXQKKyAqIGlzIHNwZWNpZmllZC4gIENvbnRleHQgbWF5IGJlIHNwZWNpZmllZCBiZWZvcmUgdGhlIGtleSwgYWZ0ZXIgdGhlCisgKiBrZXksIG9yIGJvdGguICBUaGUga2V5LCBwcmVjZWRpbmcgY29udGV4dCwgYW5kIGZvbGxvd2luZyBjb250ZXh0CisgKiBtYXkgY29udGFpbiB2YXJpYWJsZXMuICBWYXJpYWJsZXMgcmVwcmVzZW50IGEgc2V0IG9mIFVuaWNvZGUKKyAqIGNoYXJhY3RlcnMsIHN1Y2ggYXMgdGhlIGxldHRlcnMgPGk+YTwvaT4gdGhyb3VnaCA8aT56PC9pPi4KKyAqIFZhcmlhYmxlcyBhcmUgZGV0ZWN0ZWQgYnkgbG9va2luZyB1cCBlYWNoIGNoYXJhY3RlciBpbiBhIHN1cHBsaWVkCisgKiB2YXJpYWJsZSBsaXN0IHRvIHNlZSBpZiBpdCBoYXMgYmVlbiBzbyBkZWZpbmVkLiAKKyAqCisgKiA8cD5BIHJ1bGUgbWF5IGNvbnRhaW4gc2VnbWVudHMgaW4gaXRzIGlucHV0IHN0cmluZyBhbmQgc2VnbWVudCByZWZlcmVuY2VzIGluCisgKiBpdHMgb3V0cHV0IHN0cmluZy4gIEEgc2VnbWVudCBpcyBhIHN1YnN0cmluZyBvZiB0aGUgaW5wdXQgcGF0dGVybiwgaW5kaWNhdGVkCisgKiBieSBhbiBvZmZzZXQgYW5kIGxpbWl0LiAgVGhlIHNlZ21lbnQgbWF5IHNwYW4gdGhlIHByZWNlZGluZyBvciBmb2xsb3dpbmcKKyAqIGNvbnRleHQuICBBIHNlZ21lbnQgcmVmZXJlbmNlIGlzIGEgc3BlY2lhbCBjaGFyYWN0ZXIgaW4gdGhlIG91dHB1dCBzdHJpbmcKKyAqIHRoYXQgY2F1c2VzIGEgc2VnbWVudCBvZiB0aGUgaW5wdXQgc3RyaW5nIChub3QgdGhlIGlucHV0IHBhdHRlcm4pIHRvIGJlCisgKiBjb3BpZWQgdG8gdGhlIG91dHB1dCBzdHJpbmcuICBUaGUgcmFuZ2Ugb2Ygc3BlY2lhbCBjaGFyYWN0ZXJzIHRoYXQgcmVwcmVzZW50CisgKiBzZWdtZW50IHJlZmVyZW5jZXMgaXMgZGVmaW5lZCBieSBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvci5EYXRhLgorICoKKyAqIDxwPkV4YW1wbGU6IFRoZSBydWxlICIoW2Etel0pIC4gKFswLTldKSA+ICQyIC4gJDEiIHdpbGwgY2hhbmdlIHRoZSBpbnB1dAorICogc3RyaW5nICJhYmMuMTIzIiB0byAiYWIxLmMyMyIuCisgKgorICogPHA+Q29weXJpZ2h0ICZjb3B5OyBJQk0gQ29ycG9yYXRpb24gMTk5OS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogQGF1dGhvciBBbGFuIExpdQorICogQHZlcnNpb24gJFJDU2ZpbGU6IFRyYW5zbGl0ZXJhdGlvblJ1bGUuamF2YSx2ICQgJFJldmlzaW9uOiAxLjI1ICQgJERhdGU6IDIwMDAvMTEvMjkgMTk6MTI6MzIgJAorICovCitjbGFzcyBUcmFuc2xpdGVyYXRpb25SdWxlIHsKKyAgICAvKioKKyAgICAgKiBDb25zdGFudCByZXR1cm5lZCBieSA8Y29kZT5nZXRNYXRjaERlZ3JlZSgpPC9jb2RlPiBpbmRpY2F0aW5nIGEgbWlzbWF0Y2gKKyAgICAgKiBiZXR3ZWVuIHRoZSB0ZXh0IGFuZCB0aGlzIHJ1bGUuICBPbmUgb3IgbW9yZSBjaGFyYWN0ZXJzIG9mIHRoZSBjb250ZXh0IG9yCisgICAgICoga2V5IGRvIG5vdCBtYXRjaCB0aGUgdGV4dC4KKyAgICAgKiBAc2VlICNnZXRNYXRjaERlZ3JlZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1JU01BVENIICAgICAgPSAwOworCisgICAgLyoqCisgICAgICogQ29uc3RhbnQgcmV0dXJuZWQgYnkgPGNvZGU+Z2V0TWF0Y2hEZWdyZWUoKTwvY29kZT4gaW5kaWNhdGluZyBhIHBhcnRpYWwKKyAgICAgKiBtYXRjaCBiZXR3ZWVuIHRoZSB0ZXh0IGFuZCB0aGlzIHJ1bGUuICBBbGwgY2hhcmFjdGVycyBvZiB0aGUgdGV4dCBtYXRjaAorICAgICAqIHRoZSBjb3JyZXNwb25kaW5nIGNvbnRleHQgb3Iga2V5LCBidXQgbW9yZSBjaGFyYWN0ZXJzIGFyZSByZXF1aXJlZCBmb3IgYQorICAgICAqIGNvbXBsZXRlIG1hdGNoLiAgVGhlcmUgYXJlIHNvbWUga2V5IG9yIGNvbnRleHQgY2hhcmFjdGVycyBhdCB0aGUgZW5kIG9mCisgICAgICogdGhlIHBhdHRlcm4gdGhhdCByZW1haW4gdW5tYXRjaGVkIGJlY2F1c2UgdGhlIHRleHQgaXNuJ3QgbG9uZyBlbm91Z2guCisgICAgICogQHNlZSAjZ2V0TWF0Y2hEZWdyZWUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQQVJUSUFMX01BVENIID0gMTsKKworICAgIC8qKgorICAgICAqIENvbnN0YW50IHJldHVybmVkIGJ5IDxjb2RlPmdldE1hdGNoRGVncmVlKCk8L2NvZGU+IGluZGljYXRpbmcgYSBjb21wbGV0ZQorICAgICAqIG1hdGNoIGJldHdlZW4gdGhlIHRleHQgYW5kIHRoaXMgcnVsZS4gIFRoZSB0ZXh0IG1hdGNoZXMgYWxsIGNvbnRleHQgYW5kCisgICAgICoga2V5IGNoYXJhY3RlcnMuCisgICAgICogQHNlZSAjZ2V0TWF0Y2hEZWdyZWUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGVUxMX01BVENIICAgID0gMjsKKworICAgIC8qKgorICAgICAqIFRoZSBzdHJpbmcgdGhhdCBtdXN0IGJlIG1hdGNoZWQsIGNvbnNpc3Rpbmcgb2YgdGhlIGFudGVDb250ZXh0LCBrZXksCisgICAgICogYW5kIHBvc3RDb250ZXh0LCBjb25jYXRlbmF0ZWQgdG9nZXRoZXIsIGluIHRoYXQgb3JkZXIuICBTb21lIGNvbXBvbmVudHMKKyAgICAgKiBtYXkgYmUgZW1wdHkgKHplcm8gbGVuZ3RoKS4KKyAgICAgKiBAc2VlIGFudGVDb250ZXh0TGVuZ3RoCisgICAgICogQHNlZSBrZXlMZW5ndGgKKyAgICAgKi8KKyAgICBwcml2YXRlIFN0cmluZyBwYXR0ZXJuOworCisgICAgLyoqCisgICAgICogVGhlIHN0cmluZyB0aGF0IGlzIGVtaXR0ZWQgaWYgdGhlIGtleSwgYW50ZUNvbnRleHQsIGFuZCBwb3N0Q29udGV4dAorICAgICAqIGFyZSBtYXRjaGVkLgorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nIG91dHB1dDsKKworICAgIC8qKgorICAgICAqIEFycmF5IG9mIHNlZ21lbnRzLiAgVGhlc2UgYXJlIHNlZ21lbnRzIG9mIHRoZSBpbnB1dCBzdHJpbmcgdGhhdCBtYXkgYmUKKyAgICAgKiByZWZlcmVuY2VkIGFuZCBhcHBlYXIgaW4gdGhlIG91dHB1dCBzdHJpbmcuICBFYWNoIHNlZ21lbnQgaXMgc3RvcmVkIGFzIGFuCisgICAgICogb2Zmc2V0LCBsaW1pdCBwYWlyLiAgU2VnbWVudHMgYXJlIHJlZmVyZW5jZWQgYnkgYSAxLWJhc2VkIGluZGV4OworICAgICAqIHJlZmVyZW5jZSBpIHRodXMgaW5jbHVkZXMgY2hhcmFjdGVycyBhdCBvZmZzZXQgc2VnbWVudHNbMippLTJdIHRvCisgICAgICogc2VnbWVudHNbMippLTFdLTEgaW4gdGhlIHBhdHRlcm4gc3RyaW5nLgorICAgICAqCisgICAgICogSW4gdGhlIG91dHB1dCBzdHJpbmcsIGEgc2VnbWVudCByZWZlcmVuY2UgaXMgaW5kaWNhdGVkIGJ5IGEgY2hhcmFjdGVyIGluCisgICAgICogYSBzcGVjaWFsIHJhbmdlLCBhcyBkZWZpbmVkIGJ5IFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLkRhdGEuCisgICAgICoKKyAgICAgKiBNb3N0IHJ1bGVzIGhhdmUgbm8gc2VnbWVudHMsIGluIHdoaWNoIGNhc2Ugc2VnbWVudHMgaXMgbnVsbCwgYW5kIHRoZQorICAgICAqIG91dHB1dCBzdHJpbmcgbmVlZCBub3QgYmUgY2hlY2tlZCBmb3Igc2VnbWVudCByZWZlcmVuY2UgY2hhcmFjdGVycy4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludFtdIHNlZ21lbnRzOworCisgICAgLyoqCisgICAgICogVGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIHRoYXQgbXVzdCBtYXRjaCBiZWZvcmUgdGhlIGtleS4gIElmCisgICAgICogemVybywgdGhlbiB0aGVyZSBpcyBubyBtYXRjaGluZyByZXF1aXJlbWVudCBiZWZvcmUgdGhlIGtleS4KKyAgICAgKiBTdWJzdHJpbmcgWzAsYW50ZUNvbnRleHRMZW5ndGgpIG9mIHBhdHRlcm4gaXMgdGhlIGFudGVDb250ZXh0LgorICAgICAqLworICAgIHByaXZhdGUgaW50IGFudGVDb250ZXh0TGVuZ3RoOworCisgICAgLyoqCisgICAgICogVGhlIGxlbmd0aCBvZiB0aGUga2V5LiAgU3Vic3RyaW5nIFthbnRlQ29udGV4dExlbmd0aCwKKyAgICAgKiBhbnRlQ29udGV4dExlbmd0aCArIGtleUxlbmd0aCkgaXMgdGhlIGtleS4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBrZXlMZW5ndGg7CisKKyAgICAvKioKKyAgICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIGN1cnNvciBhZnRlciBlbWl0dGluZyB0aGUgb3V0cHV0IHN0cmluZywgZnJvbSAwIHRvCisgICAgICogb3V0cHV0Lmxlbmd0aCgpLiAgRm9yIG1vc3QgcnVsZXMgd2l0aCBubyBzcGVjaWFsIGN1cnNvciBzcGVjaWZpY2F0aW9uLAorICAgICAqIHRoZSBjdXJzb3JQb3MgaXMgb3V0cHV0Lmxlbmd0aCgpLgorICAgICAqLworICAgIHByaXZhdGUgaW50IGN1cnNvclBvczsKKworICAgIC8qKgorICAgICAqIFRoZSBjaGFyYWN0ZXIgYXQgaW5kZXggaSwgd2hlcmUgaSA8IGNvbnRleHRTdGFydCB8fCBpID49IGNvbnRleHRMaW1pdCwKKyAgICAgKiBpcyBFVEhFUi4gIFRoaXMgYWxsb3dzIGV4cGxpY2l0IG1hdGNoaW5nIGJ5IHJ1bGVzIGFuZCBVbmljb2RlU2V0cworICAgICAqIG9mIHRleHQgb3V0c2lkZSB0aGUgY29udGV4dC4gIEluIHRyYWRpdGlvbmFsIHRlcm1zLCB0aGlzIGFsbG93cyBhbmNob3JpbmcKKyAgICAgKiBhdCB0aGUgc3RhcnQgYW5kL29yIGVuZC4KKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgY2hhciBFVEhFUiA9ICdcdUZGRkYnOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICJcdTAwQTkgSUJNIENvcnBvcmF0aW9uIDE5OTkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIG5ldyBydWxlIHdpdGggdGhlIGdpdmVuIGlucHV0LCBvdXRwdXQgdGV4dCwgYW5kIG90aGVyCisgICAgICogYXR0cmlidXRlcy4gIEEgY3Vyc29yIHBvc2l0aW9uIG1heSBiZSBzcGVjaWZpZWQgZm9yIHRoZSBvdXRwdXQgdGV4dC4KKyAgICAgKiBAcGFyYW0gaW5wdXQgaW5wdXQgc3RyaW5nLCBpbmNsdWRpbmcga2V5IGFuZCBvcHRpb25hbCBhbnRlIGFuZAorICAgICAqIHBvc3QgY29udGV4dAorICAgICAqIEBwYXJhbSBhbnRlQ29udGV4dFBvcyBvZmZzZXQgaW50byBpbnB1dCB0byBlbmQgb2YgYW50ZSBjb250ZXh0LCBvciAtMSBpZgorICAgICAqIG5vbmUuICBNdXN0IGJlIDw9IGlucHV0Lmxlbmd0aCgpIGlmIG5vdCAtMS4KKyAgICAgKiBAcGFyYW0gcG9zdENvbnRleHRQb3Mgb2Zmc2V0IGludG8gaW5wdXQgdG8gc3RhcnQgb2YgcG9zdCBjb250ZXh0LCBvciAtMQorICAgICAqIGlmIG5vbmUuICBNdXN0IGJlIDw9IGlucHV0Lmxlbmd0aCgpIGlmIG5vdCAtMSwgYW5kIG11c3QgYmUgPj0KKyAgICAgKiBhbnRlQ29udGV4dFBvcy4KKyAgICAgKiBAcGFyYW0gb3V0cHV0IG91dHB1dCBzdHJpbmcKKyAgICAgKiBAcGFyYW0gY3Vyc29yUG9zIG9mZnNldCBpbnRvIG91dHB1dCBhdCB3aGljaCBjdXJzb3IgaXMgbG9jYXRlZCwgb3IgLTEgaWYKKyAgICAgKiBub25lLiAgSWYgbGVzcyB0aGFuIHplcm8sIHRoZW4gdGhlIGN1cnNvciBpcyBwbGFjZWQgYWZ0ZXIgdGhlCisgICAgICogPGNvZGU+b3V0cHV0PC9jb2RlPjsgdGhhdCBpcywgLTEgaXMgZXF1aXZhbGVudCB0bworICAgICAqIDxjb2RlPm91dHB1dC5sZW5ndGgoKTwvY29kZT4uICBJZiBncmVhdGVyIHRoYW4KKyAgICAgKiA8Y29kZT5vdXRwdXQubGVuZ3RoKCk8L2NvZGU+IHRoZW4gYW4gZXhjZXB0aW9uIGlzIHRocm93bi4KKyAgICAgKiBAcGFyYW0gY3Vyc29yT2Zmc2V0IGFuIG9mZnNldCB0byBiZSBhZGRlZCB0byBjdXJzb3JQb3MgdG8gcG9zaXRpb24gdGhlCisgICAgICogY3Vyc29yIGVpdGhlciBpbiB0aGUgYW50ZSBjb250ZXh0LCBpZiA8IDAsIG9yIGluIHRoZSBwb3N0IGNvbnRleHQsIGlmID4KKyAgICAgKiAwLiAgRm9yIGV4YW1wbGUsIHRoZSBydWxlICJhYmN7ZGVmfSA+IHwgQEBAIHh5ejsiIGNoYW5nZXMgImRlZiIgdG8KKyAgICAgKiAieHl6IiBhbmQgbW92ZXMgdGhlIGN1cnNvciB0byBiZWZvcmUgImEiLiAgSXQgd291bGQgaGF2ZSBhIGN1cnNvck9mZnNldAorICAgICAqIG9mIC0zLgorICAgICAqIEBwYXJhbSBzZWdzIGFycmF5IG9mIDJuIGludGVnZXJzLiAgRWFjaCBvZiBuIHBhaXJzIGNvbnNpc3RzIG9mIG9mZnNldCwKKyAgICAgKiBsaW1pdCBmb3IgYSBzZWdtZW50IG9mIHRoZSBpbnB1dCBzdHJpbmcuICBDaGFyYWN0ZXJzIGluIHRoZSBvdXRwdXQgc3RyaW5nCisgICAgICogcmVmZXIgdG8gdGhlc2Ugc2VnbWVudHMgaWYgdGhleSBhcmUgaW4gYSBzcGVjaWFsIHJhbmdlIGRldGVybWluZWQgYnkgdGhlCisgICAgICogYXNzb2NpYXRlZCBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvci5EYXRhIG9iamVjdC4gIE1heSBiZSBudWxsIGlmIHRoZXJlIGFyZQorICAgICAqIG5vIHNlZ21lbnRzLiAgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgdmFsaWRhdGluZyB0aGF0IHNlZ21lbnRzCisgICAgICogYXJlIHdlbGwtZm9ybWVkLgorICAgICAqIEBwYXJhbSBhbmNob3JTdGFydCB0cnVlIGlmIHRoZSB0aGUgcnVsZSBpcyBhbmNob3JlZCBvbiB0aGUgbGVmdCB0bworICAgICAqIHRoZSBjb250ZXh0IHN0YXJ0CisgICAgICogQHBhcmFtIGFuY2hvckVuZCB0cnVlIGlmIHRoZSBydWxlIGlzIGFuY2hvcmVkIG9uIHRoZSByaWdodCB0byB0aGUKKyAgICAgKiBjb250ZXh0IGxpbWl0CisgICAgICovCisgICAgcHVibGljIFRyYW5zbGl0ZXJhdGlvblJ1bGUoU3RyaW5nIGlucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbnRlQ29udGV4dFBvcywgaW50IHBvc3RDb250ZXh0UG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGN1cnNvclBvcywgaW50IGN1cnNvck9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRbXSBzZWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gYW5jaG9yU3RhcnQsIGJvb2xlYW4gYW5jaG9yRW5kKSB7CisgICAgICAgIC8vIERvIHJhbmdlIGNoZWNrcyBvbmx5IHdoZW4gd2FycmFudGVkIHRvIHNhdmUgdGltZQorICAgICAgICBpZiAoYW50ZUNvbnRleHRQb3MgPCAwKSB7CisgICAgICAgICAgICBhbnRlQ29udGV4dExlbmd0aCA9IDA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoYW50ZUNvbnRleHRQb3MgPiBpbnB1dC5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgYW50ZSBjb250ZXh0Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhbnRlQ29udGV4dExlbmd0aCA9IGFudGVDb250ZXh0UG9zOworICAgICAgICB9CisgICAgICAgIGlmIChwb3N0Q29udGV4dFBvcyA8IDApIHsKKyAgICAgICAgICAgIGtleUxlbmd0aCA9IGlucHV0Lmxlbmd0aCgpIC0gYW50ZUNvbnRleHRMZW5ndGg7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAocG9zdENvbnRleHRQb3MgPCBhbnRlQ29udGV4dExlbmd0aCB8fAorICAgICAgICAgICAgICAgIHBvc3RDb250ZXh0UG9zID4gaW5wdXQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIHBvc3QgY29udGV4dCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAga2V5TGVuZ3RoID0gcG9zdENvbnRleHRQb3MgLSBhbnRlQ29udGV4dExlbmd0aDsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3Vyc29yUG9zIDwgMCkgeworICAgICAgICAgICAgY3Vyc29yUG9zID0gb3V0cHV0Lmxlbmd0aCgpOworICAgICAgICB9CisgICAgICAgIGlmIChjdXJzb3JQb3MgPiBvdXRwdXQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgY3Vyc29yIHBvc2l0aW9uIik7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5jdXJzb3JQb3MgPSBjdXJzb3JQb3MgKyBjdXJzb3JPZmZzZXQ7CisgICAgICAgIHBhdHRlcm4gPSBpbnB1dDsKKyAgICAgICAgdGhpcy5vdXRwdXQgPSBvdXRwdXQ7CisgICAgICAgIC8vIFdlIGRvbid0IHZhbGlkYXRlIHRoZSBzZWdtZW50cyBhcnJheS4gIFRoZSBjYWxsZXIgbXVzdAorICAgICAgICAvLyBndWFyYW50ZWUgdGhhdCB0aGUgc2VnbWVudHMgYXJlIHdlbGwtZm9ybWVkLgorICAgICAgICB0aGlzLnNlZ21lbnRzID0gc2VnczsKKworICAgICAgICAvLyBJbXBsZW1lbnQgYW5jaG9ycyBieSBpbnNlcnRpbmcgYW4gRVRIRVIgY2hhcmFjdGVyIG9uIHRoZQorICAgICAgICAvLyBsZWZ0IG9yIHJpZ2h0LiAgSWYgb24gdGhlIGxlZnQsIHRoZW4gdGhlIGluZGljZXMgbXVzdCBiZQorICAgICAgICAvLyBpbmNyZW1lbnRlZC4gIElmIG9uIHRoZSByaWdodCwgbm8gaW5kZXggY2hhbmdlIGlzCisgICAgICAgIC8vIG5lY2Vzc2FyeS4KKyAgICAgICAgaWYgKGFuY2hvclN0YXJ0IHx8IGFuY2hvckVuZCkgeworICAgICAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgICAgIGlmIChhbmNob3JTdGFydCkgeworICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoRVRIRVIpOworICAgICAgICAgICAgICAgICsrYW50ZUNvbnRleHRMZW5ndGg7CisgICAgICAgICAgICAgICAgKytjdXJzb3JQb3M7CisgICAgICAgICAgICAgICAgLy8gQWRqdXN0IHNlZ21lbnQgb2Zmc2V0cworICAgICAgICAgICAgICAgIGlmIChzZWdtZW50cyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxzZWdtZW50cy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICAgICAgKytzZWdtZW50c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJ1Zi5hcHBlbmQoaW5wdXQpOworICAgICAgICAgICAgaWYgKGFuY2hvckVuZCkgeworICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoRVRIRVIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcGF0dGVybiA9IGJ1Zi50b1N0cmluZygpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgbmV3IHJ1bGUgd2l0aCB0aGUgZ2l2ZW4gaW5wdXQsIG91dHB1dCB0ZXh0LCBhbmQgb3RoZXIKKyAgICAgKiBhdHRyaWJ1dGVzLiAgQSBjdXJzb3IgcG9zaXRpb24gbWF5IGJlIHNwZWNpZmllZCBmb3IgdGhlIG91dHB1dCB0ZXh0LgorICAgICAqIEBwYXJhbSBpbnB1dCBpbnB1dCBzdHJpbmcsIGluY2x1ZGluZyBrZXkgYW5kIG9wdGlvbmFsIGFudGUgYW5kCisgICAgICogcG9zdCBjb250ZXh0CisgICAgICogQHBhcmFtIGFudGVDb250ZXh0UG9zIG9mZnNldCBpbnRvIGlucHV0IHRvIGVuZCBvZiBhbnRlIGNvbnRleHQsIG9yIC0xIGlmCisgICAgICogbm9uZS4gIE11c3QgYmUgPD0gaW5wdXQubGVuZ3RoKCkgaWYgbm90IC0xLgorICAgICAqIEBwYXJhbSBwb3N0Q29udGV4dFBvcyBvZmZzZXQgaW50byBpbnB1dCB0byBzdGFydCBvZiBwb3N0IGNvbnRleHQsIG9yIC0xCisgICAgICogaWYgbm9uZS4gIE11c3QgYmUgPD0gaW5wdXQubGVuZ3RoKCkgaWYgbm90IC0xLCBhbmQgbXVzdCBiZSA+PQorICAgICAqIGFudGVDb250ZXh0UG9zLgorICAgICAqIEBwYXJhbSBvdXRwdXQgb3V0cHV0IHN0cmluZworICAgICAqIEBwYXJhbSBjdXJzb3JQb3Mgb2Zmc2V0IGludG8gb3V0cHV0IGF0IHdoaWNoIGN1cnNvciBpcyBsb2NhdGVkLCBvciAtMSBpZgorICAgICAqIG5vbmUuICBJZiBsZXNzIHRoYW4gemVybywgdGhlbiB0aGUgY3Vyc29yIGlzIHBsYWNlZCBhZnRlciB0aGUKKyAgICAgKiA8Y29kZT5vdXRwdXQ8L2NvZGU+OyB0aGF0IGlzLCAtMSBpcyBlcXVpdmFsZW50IHRvCisgICAgICogPGNvZGU+b3V0cHV0Lmxlbmd0aCgpPC9jb2RlPi4gIElmIGdyZWF0ZXIgdGhhbgorICAgICAqIDxjb2RlPm91dHB1dC5sZW5ndGgoKTwvY29kZT4gdGhlbiBhbiBleGNlcHRpb24gaXMgdGhyb3duLgorICAgICAqLworICAgIHB1YmxpYyBUcmFuc2xpdGVyYXRpb25SdWxlKFN0cmluZyBpbnB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYW50ZUNvbnRleHRQb3MsIGludCBwb3N0Q29udGV4dFBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjdXJzb3JQb3MpIHsKKyAgICAgICAgdGhpcyhpbnB1dCwgYW50ZUNvbnRleHRQb3MsIHBvc3RDb250ZXh0UG9zLAorICAgICAgICAgICAgIG91dHB1dCwgY3Vyc29yUG9zLCAwLCBudWxsLCBmYWxzZSwgZmFsc2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgcG9zaXRpb24gb2YgdGhlIGN1cnNvciB3aXRoaW4gdGhlIG91dHB1dCBzdHJpbmcuCisgICAgICogQHJldHVybiBhIHZhbHVlIGZyb20gMCB0byA8Y29kZT5nZXRPdXRwdXQoKS5sZW5ndGgoKTwvY29kZT4sIGluY2x1c2l2ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEN1cnNvclBvcygpIHsKKyAgICAgICAgcmV0dXJuIGN1cnNvclBvczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHByZWNlZGluZyBjb250ZXh0IGxlbmd0aC4gIFRoaXMgbWV0aG9kIGlzIG5lZWRlZCB0bworICAgICAqIHN1cHBvcnQgdGhlIDxjb2RlPlRyYW5zbGl0ZXJhdG9yPC9jb2RlPiBtZXRob2QKKyAgICAgKiA8Y29kZT5nZXRNYXhpbXVtQ29udGV4dExlbmd0aCgpPC9jb2RlPi4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEFudGVDb250ZXh0TGVuZ3RoKCkgeworICAgICAgICByZXR1cm4gYW50ZUNvbnRleHRMZW5ndGg7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW50ZXJuYWwgbWV0aG9kLiAgUmV0dXJucyA4LWJpdCBpbmRleCB2YWx1ZSBmb3IgdGhpcyBydWxlLgorICAgICAqIFRoaXMgaXMgdGhlIGxvdyBieXRlIG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGtleSwKKyAgICAgKiB1bmxlc3MgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUga2V5IGlzIGEgc2V0LiAgSWYgaXQncyBhCisgICAgICogc2V0LCBvciBvdGhlcndpc2UgY2FuIG1hdGNoIG11bHRpcGxlIGtleXMsIHRoZSBpbmRleCB2YWx1ZSBpcyAtMS4KKyAgICAgKi8KKyAgICBmaW5hbCBpbnQgZ2V0SW5kZXhWYWx1ZShSdWxlQmFzZWRUcmFuc2xpdGVyYXRvci5EYXRhIHZhcmlhYmxlcykgeworICAgICAgICBpZiAoYW50ZUNvbnRleHRMZW5ndGggPT0gcGF0dGVybi5sZW5ndGgoKSkgeworICAgICAgICAgICAgLy8gQSBwYXR0ZXJuIHdpdGgganVzdCBhbnRlIGNvbnRleHQge3N1Y2ggYXMgZm9vKT5iYXJ9IGNhbgorICAgICAgICAgICAgLy8gbWF0Y2ggYW55IGtleS4KKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBjaGFyIGMgPSBwYXR0ZXJuLmNoYXJBdChhbnRlQ29udGV4dExlbmd0aCk7CisgICAgICAgIHJldHVybiB2YXJpYWJsZXMubG9va3VwU2V0KGMpID09IG51bGwgPyAoYyAmIDB4RkYpIDogLTE7CisgICAgfQorCisgICAgLyoqCisgICAgICogRG8gYSByZXBsYWNlbWVudCBvZiB0aGUgaW5wdXQgcGF0dGVybiB3aXRoIHRoZSBvdXRwdXQgdGV4dCBpbgorICAgICAqIHRoZSBnaXZlbiBzdHJpbmcsIGF0IHRoZSBnaXZlbiBvZmZzZXQuICBUaGlzIG1ldGhvZCBhc3N1bWVzCisgICAgICogdGhhdCBhIG1hdGNoIGhhcyBhbHJlYWR5IGJlZW4gZm91bmQgaW4gdGhlIGdpdmVuIHRleHQgYXQgdGhlCisgICAgICogZ2l2ZW4gcG9zaXRpb24uCisgICAgICogQHBhcmFtIHRleHQgdGhlIHRleHQgY29udGFpbmluZyB0aGUgc3Vic3RyaW5nIHRvIGJlIHJlcGxhY2VkCisgICAgICogQHBhcmFtIG9mZnNldCB0aGUgb2Zmc2V0IGludG8gdGhlIHRleHQgYXQgd2hpY2ggdGhlIHBhdHRlcm4KKyAgICAgKiBtYXRjaGVzLiAgVGhpcyBpcyB0aGUgb2Zmc2V0IHRvIHRoZSBwb2ludCBhZnRlciB0aGUgYW50ZQorICAgICAqIGNvbnRleHQsIGlmIGFueSwgYW5kIGJlZm9yZSB0aGUgbWF0Y2ggc3RyaW5nIGFuZCBhbnkgcG9zdAorICAgICAqIGNvbnRleHQuCisgICAgICogQHBhcmFtIGRhdGEgdGhlIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLkRhdGEgb2JqZWN0IHNwZWNpZnlpbmcKKyAgICAgKiBjb250ZXh0IGZvciB0aGlzIHRyYW5zbGl0ZXJhdG9yLgorICAgICAqIEByZXR1cm4gdGhlIGNoYW5nZSBpbiB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0CisgICAgICovCisgICAgcHVibGljIGludCByZXBsYWNlKFJlcGxhY2VhYmxlIHRleHQsIGludCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLkRhdGEgZGF0YSkgeworICAgICAgICBpZiAoc2VnbWVudHMgPT0gbnVsbCkgeworICAgICAgICAgICAgdGV4dC5yZXBsYWNlKG9mZnNldCwgb2Zmc2V0ICsga2V5TGVuZ3RoLCBvdXRwdXQpOworICAgICAgICAgICAgcmV0dXJuIG91dHB1dC5sZW5ndGgoKSAtIGtleUxlbmd0aDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIFdoZW4gdGhlcmUgYXJlIHNlZ21lbnRzIHRvIGJlIGNvcGllZCwgdXNlIHRoZSBSZXBsYWNlYWJsZS5jb3B5KCkKKyAgICAgICAgICAgICAqIEFQSSBpbiBvcmRlciB0byByZXRhaW4gb3V0LW9mLWJhbmQgZGF0YS4gIENvcHkgZXZlcnl0aGluZyB0byB0aGUKKyAgICAgICAgICAgICAqIHBvaW50IGFmdGVyIHRoZSBrZXksIHRoZW4gZGVsZXRlIHRoZSBrZXkuICBUaGF0IGlzLCBjb3B5IHRoaW5ncworICAgICAgICAgICAgICogaW50byBvZmZzZXQgKyBrZXlMZW5ndGgsIHRoZW4gcmVwbGFjZSBvZmZzZXQgLi4gb2Zmc2V0ICsKKyAgICAgICAgICAgICAqIGtleUxlbmd0aCB3aXRoIHRoZSBlbXB0eSBzdHJpbmcuCisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogTWluaW1pemUgdGhlIG51bWJlciBvZiBjYWxscyB0byBSZXBsYWNlYWJsZS5yZXBsYWNlKCkgYW5kCisgICAgICAgICAgICAgKiBSZXBsYWNlYWJsZS5jb3B5KCkuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGludCB0ZXh0U3RhcnQgPSBvZmZzZXQgLSBhbnRlQ29udGV4dExlbmd0aDsKKyAgICAgICAgICAgIGludCBkZXN0ID0gb2Zmc2V0ICsga2V5TGVuZ3RoOyAvLyBjb3B5IG5ldyB0ZXh0IHRvIGhlcmUKKyAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8b3V0cHV0Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBjaGFyIGMgPSBvdXRwdXQuY2hhckF0KGkpOworICAgICAgICAgICAgICAgIGludCBiID0gZGF0YS5sb29rdXBTZWdtZW50UmVmZXJlbmNlKGMpOworICAgICAgICAgICAgICAgIGlmIChiIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAvLyBBY2N1bXVsYXRlIHN0cmFpZ2h0IChub24tc2VnbWVudCkgdGV4dC4KKyAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChjKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBJbnNlcnQgYW55IGFjY3VtdWxhdGVkIHN0cmFpZ2h0IHRleHQuCisgICAgICAgICAgICAgICAgICAgIGlmIChidWYubGVuZ3RoKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0LnJlcGxhY2UoZGVzdCwgZGVzdCwgYnVmLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCArPSBidWYubGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBidWYuc2V0TGVuZ3RoKDApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIENvcHkgc2VnbWVudCB3aXRoIG91dC1vZi1iYW5kIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgYiAqPSAyOworICAgICAgICAgICAgICAgICAgICB0ZXh0LmNvcHkodGV4dFN0YXJ0ICsgc2VnbWVudHNbYl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0U3RhcnQgKyBzZWdtZW50c1tiKzFdLCBkZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdCArPSBzZWdtZW50c1tiKzFdIC0gc2VnbWVudHNbYl07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gSW5zZXJ0IGFueSBhY2N1bXVsYXRlZCBzdHJhaWdodCB0ZXh0LgorICAgICAgICAgICAgaWYgKGJ1Zi5sZW5ndGgoKSA+IDApIHsKKyAgICAgICAgICAgICAgICB0ZXh0LnJlcGxhY2UoZGVzdCwgZGVzdCwgYnVmLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGRlc3QgKz0gYnVmLmxlbmd0aCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gRGVsZXRlIHRoZSBrZXkKKyAgICAgICAgICAgIHRleHQucmVwbGFjZShvZmZzZXQsIG9mZnNldCArIGtleUxlbmd0aCwgIiIpOworICAgICAgICAgICAgcmV0dXJuIGRlc3QgLSAob2Zmc2V0ICsga2V5TGVuZ3RoKSAtIGtleUxlbmd0aDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEludGVybmFsIG1ldGhvZC4gIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHJ1bGUgbWF0Y2hlcyB0aGUgZ2l2ZW4KKyAgICAgKiBpbmRleCB2YWx1ZS4gIFRoZSBpbmRleCB2YWx1ZSBpcyBhbiA4LWJpdCBpbnRlZ2VyLCAwLi4yNTUsCisgICAgICogcmVwcmVzZW50aW5nIHRoZSBsb3cgYnl0ZSBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBrZXkuCisgICAgICogSXQgbWF0Y2hlcyB0aGlzIHJ1bGUgaWYgaXQgbWF0Y2hlcyB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZQorICAgICAqIGtleSwgb3IgaWYgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUga2V5IGlzIGEgc2V0LCBhbmQgdGhlIHNldAorICAgICAqIGNvbnRhaW5zIGFueSBjaGFyYWN0ZXIgd2l0aCBhIGxvdyBieXRlIGVxdWFsIHRvIHRoZSBpbmRleAorICAgICAqIHZhbHVlLiAgSWYgdGhlIHJ1bGUgY29udGFpbnMgb25seSBhbnRlIGNvbnRleHQsIGFzIGluIGZvbyk+YmFyLAorICAgICAqIHRoZW4gaXQgd2lsbCBtYXRjaCBhbnkga2V5LgorICAgICAqLworICAgIGZpbmFsIGJvb2xlYW4gbWF0Y2hlc0luZGV4VmFsdWUoaW50IHYsIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLkRhdGEgdmFyaWFibGVzKSB7CisgICAgICAgIGlmIChhbnRlQ29udGV4dExlbmd0aCA9PSBwYXR0ZXJuLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAvLyBBIHBhdHRlcm4gd2l0aCBqdXN0IGFudGUgY29udGV4dCB7c3VjaCBhcyBmb28pPmJhcn0gY2FuCisgICAgICAgICAgICAvLyBtYXRjaCBhbnkga2V5LgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgY2hhciBjID0gcGF0dGVybi5jaGFyQXQoYW50ZUNvbnRleHRMZW5ndGgpOworICAgICAgICBVbmljb2RlU2V0IHNldCA9IHZhcmlhYmxlcy5sb29rdXBTZXQoYyk7CisgICAgICAgIHJldHVybiBzZXQgPT0gbnVsbCA/IChjICYgMHhGRikgPT0gdiA6IHNldC5jb250YWluc0luZGV4VmFsdWUodik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhpcyBydWxlIG1hc2tzIGFub3RoZXIgcnVsZS4gIElmIHIxIG1hc2tzIHIyIHRoZW4KKyAgICAgKiByMSBtYXRjaGVzIGFueSBpbnB1dCBzdHJpbmcgdGhhdCByMiBtYXRjaGVzLiAgSWYgcjEgbWFza3MgcjIgYW5kIHIyIG1hc2tzCisgICAgICogcjEgdGhlbiByMSA9PSByMi4gIEV4YW1wbGVzOiAiYT54IiBtYXNrcyAiYWI+eSIuICAiYT54IiBtYXNrcyAiYVtiXT55Ii4KKyAgICAgKiAiW2NdYT54IiBtYXNrcyAiW2RjXWE+eSIuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gbWFza3MoVHJhbnNsaXRlcmF0aW9uUnVsZSByMikgeworICAgICAgICAvKiBSdWxlIHIxIG1hc2tzIHJ1bGUgcjIgaWYgdGhlIHN0cmluZyBmb3JtZWQgb2YgdGhlCisgICAgICAgICAqIGFudGVjb250ZXh0LCBrZXksIGFuZCBwb3N0Y29udGV4dCBvdmVybGFwcyBpbiB0aGUgZm9sbG93aW5nCisgICAgICAgICAqIHdheToKKyAgICAgICAgICoKKyAgICAgICAgICogcjE6ICAgICAgYWFra2twcHBwCisgICAgICAgICAqIHIyOiAgICAgYWFha2tra2twcHBwCisgICAgICAgICAqICAgICAgICAgICAgXgorICAgICAgICAgKiAKKyAgICAgICAgICogVGhlIHN0cmluZ3MgbXVzdCBiZSBhbGlnbmVkIGF0IHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgdGhlCisgICAgICAgICAqIGtleS4gIFRoZSBsZW5ndGggb2YgcjEgdG8gdGhlIGxlZnQgb2YgdGhlIGFsaWdubWVudCBwb2ludAorICAgICAgICAgKiBtdXN0IGJlIDw9IHRoZSBsZW5ndGggb2YgcjIgdG8gdGhlIGxlZnQ7IGRpdHRvIGZvciB0aGUKKyAgICAgICAgICogcmlnaHQuICBUaGUgY2hhcmFjdGVycyBvZiByMSBtdXN0IGVxdWFsIChvciBiZSBhIHN1cGVyc2V0CisgICAgICAgICAqIG9mKSB0aGUgY29ycmVzcG9uZGluZyBjaGFyYWN0ZXJzIG9mIHIyLiAgVGhlIHN1cGVyc2V0CisgICAgICAgICAqIG9wZXJhdGlvbiBzaG91bGQgYmUgcGVyZm9ybWVkIHRvIGNoZWNrIGZvciBVbmljb2RlU2V0CisgICAgICAgICAqIG1hc2tpbmcuCisgICAgICAgICAqLworCisgICAgICAgIC8qIExJTUlUQVRJT04gb2YgdGhlIGN1cnJlbnQgbWFzayBhbGdvcml0aG06IFNvbWUgcnVsZQorICAgICAgICAgKiBtYXNraW5ncyBhcmUgY3VycmVudGx5IG5vdCBkZXRlY3RlZC4gIEZvciBleGFtcGxlLAorICAgICAgICAgKiAie0x1fV1hPngiIG1hc2tzICJBXWE+eSIuICBUaGlzIGNhbiBiZSBhZGRlZCBsYXRlci4gVE9ETworICAgICAgICAgKi8KKworICAgICAgICBpbnQgbGVmdCA9IGFudGVDb250ZXh0TGVuZ3RoOworICAgICAgICBpbnQgbGVmdDIgPSByMi5hbnRlQ29udGV4dExlbmd0aDsKKyAgICAgICAgaW50IHJpZ2h0ID0gcGF0dGVybi5sZW5ndGgoKSAtIGxlZnQ7CisgICAgICAgIGludCByaWdodDIgPSByMi5wYXR0ZXJuLmxlbmd0aCgpIC0gbGVmdDI7CisgICAgICAgIHJldHVybiBsZWZ0IDw9IGxlZnQyICYmIHJpZ2h0IDw9IHJpZ2h0MiAmJgorICAgICAgICAgICAgcjIucGF0dGVybi5zdWJzdHJpbmcobGVmdDIgLSBsZWZ0KS5zdGFydHNXaXRoKHBhdHRlcm4pOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdC4KKyAgICAgKiBAcmV0dXJuIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdAorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiBnZXRDbGFzcygpLmdldE5hbWUoKSArICd7JworICAgICAgICAgICAgKyBVdGlsaXR5LmVzY2FwZSgoYW50ZUNvbnRleHRMZW5ndGggPiAwID8gKHBhdHRlcm4uc3Vic3RyaW5nKDAsIGFudGVDb250ZXh0TGVuZ3RoKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiB7IikgOiAiIikKKyAgICAgICAgICAgICAgICAgICAgICsgcGF0dGVybi5zdWJzdHJpbmcoYW50ZUNvbnRleHRMZW5ndGgsIGFudGVDb250ZXh0TGVuZ3RoICsga2V5TGVuZ3RoKQorICAgICAgICAgICAgICAgICAgICAgKyAoYW50ZUNvbnRleHRMZW5ndGggKyBrZXlMZW5ndGggPCBwYXR0ZXJuLmxlbmd0aCgpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICgifSAiICsgcGF0dGVybi5zdWJzdHJpbmcoYW50ZUNvbnRleHRMZW5ndGggKyBrZXlMZW5ndGgpKSA6ICIiKQorICAgICAgICAgICAgICAgICAgICAgKyAiID4gIgorICAgICAgICAgICAgICAgICAgICAgKyAoY3Vyc29yUG9zIDwgb3V0cHV0Lmxlbmd0aCgpCisgICAgICAgICAgICAgICAgICAgICAgICA/IChvdXRwdXQuc3Vic3RyaW5nKDAsIGN1cnNvclBvcykgKyAnfCcgKyBvdXRwdXQuc3Vic3RyaW5nKGN1cnNvclBvcykpCisgICAgICAgICAgICAgICAgICAgICAgICA6IG91dHB1dCkpCisgICAgICAgICAgICArICd9JzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIHJ1bGUgbWF0Y2hlcyB0aGUgZ2l2ZW4gdGV4dC4KKyAgICAgKiBAcGFyYW0gdGV4dCB0aGUgdGV4dCwgYm90aCB0cmFuc2xhdGVkIGFuZCB1bnRyYW5zbGF0ZWQKKyAgICAgKiBAcGFyYW0gc3RhcnQgdGhlIGJlZ2lubmluZyBpbmRleCwgaW5jbHVzaXZlOyA8Y29kZT4wIDw9IHN0YXJ0CisgICAgICogPD0gbGltaXQ8L2NvZGU+LgorICAgICAqIEBwYXJhbSBsaW1pdCB0aGUgZW5kaW5nIGluZGV4LCBleGNsdXNpdmU7IDxjb2RlPnN0YXJ0IDw9IGxpbWl0CisgICAgICogPD0gdGV4dC5sZW5ndGgoKTwvY29kZT4uCisgICAgICogQHBhcmFtIGN1cnNvciBwb3NpdGlvbiBhdCB3aGljaCB0byB0cmFuc2xhdGUgbmV4dCwgcmVwcmVzZW50aW5nIG9mZnNldAorICAgICAqIGludG8gdGV4dC4gIFRoaXMgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDxjb2RlPnN0YXJ0PC9jb2RlPiBhbmQKKyAgICAgKiA8Y29kZT5saW1pdDwvY29kZT4uCisgICAgICogQHBhcmFtIGZpbHRlciB0aGUgZmlsdGVyLiAgQW55IGNoYXJhY3RlciBmb3Igd2hpY2gKKyAgICAgKiA8dHQ+ZmlsdGVyLmNvbnRhaW5zKCk8L3R0PiByZXR1cm5zIDx0dD5mYWxzZTwvdHQ+IHdpbGwgbm90IGJlCisgICAgICogYWx0ZXJlZCBieSB0aGlzIHRyYW5zbGl0ZXJhdG9yLiAgSWYgPHR0PmZpbHRlcjwvdHQ+IGlzCisgICAgICogPHR0Pm51bGw8L3R0PiB0aGVuIG5vIGZpbHRlcmluZyBpcyBhcHBsaWVkLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBib29sZWFuIG1hdGNoZXMoUmVwbGFjZWFibGUgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uIHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLkRhdGEgdmFyaWFibGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZUZpbHRlciBmaWx0ZXIpIHsKKyAgICAgICAgLy8gTWF0Y2ggYW50ZUNvbnRleHQsIGtleSwgYW5kIHBvc3RDb250ZXh0CisgICAgICAgIGludCBjdXJzb3IgPSBwb3Muc3RhcnQgLSBhbnRlQ29udGV4dExlbmd0aDsKKyAgICAgICAgLy9bQU5DSE9SXWlmIChjdXJzb3IgPCBwb3MuY29udGV4dFN0YXJ0CisgICAgICAgIC8vW0FOQ0hPUl0gICAgfHwgKGN1cnNvciArIHBhdHRlcm4ubGVuZ3RoKCkpID4gcG9zLmNvbnRleHRMaW1pdCkgeworICAgICAgICAvL1tBTkNIT1JdICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgLy9bQU5DSE9SXX0KKyAgICAgICAgLy8gUXVpY2sgbGVuZ3RoIGNoZWNrOyB0aGlzIGlzIGEgcGVyZm9ybWFuY2Ugd2luIGZvciBsb25nIHJ1bGVzLgorICAgICAgICAvLyBXaWRlbiBieSBvbmUgKG9uIGJvdGggc2lkZXMpIHRvIGFsbG93IGFuY2hvciBtYXRjaGluZy4KKyAgICAgICAgaWYgKGN1cnNvciA8IChwb3MuY29udGV4dFN0YXJ0IC0gMSkKKyAgICAgICAgICAgIHx8IChjdXJzb3IgKyBwYXR0ZXJuLmxlbmd0aCgpKSA+IChwb3MuY29udGV4dExpbWl0ICsgMSkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGludCBpPTA7IGk8cGF0dGVybi5sZW5ndGgoKTsgKytpLCArK2N1cnNvcikgeworICAgICAgICAgICAgLy9bQU5DSE9SXWlmICghY2hhck1hdGNoZXMocGF0dGVybi5jaGFyQXQoaSksIHRleHQuY2hhckF0KGN1cnNvciksCisgICAgICAgICAgICAvL1tBTkNIT1JdICAgICAgICAgICAgICAgICB2YXJpYWJsZXMsIGZpbHRlcikpIHsKKyAgICAgICAgICAgIGlmICghY2hhck1hdGNoZXMocGF0dGVybi5jaGFyQXQoaSksIHRleHQsIGN1cnNvciwgcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMsIGZpbHRlcikpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBkZWdyZWUgb2YgbWF0Y2ggYmV0d2VlbiB0aGlzIHJ1bGUgYW5kIHRoZSBnaXZlbiB0ZXh0LiAgVGhlCisgICAgICogZGVncmVlIG9mIG1hdGNoIG1heSBiZSBtaXNtYXRjaCwgYSBwYXJ0aWFsIG1hdGNoLCBvciBhIGZ1bGwgbWF0Y2guICBBCisgICAgICogbWlzbWF0Y2ggbWVhbnMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciBvZiB0aGUgdGV4dCBkb2VzIG5vdCBtYXRjaCB0aGUKKyAgICAgKiBjb250ZXh0IG9yIGtleS4gIEEgcGFydGlhbCBtYXRjaCBtZWFucyBzb21lIGNvbnRleHQgYW5kIGtleSBjaGFyYWN0ZXJzCisgICAgICogbWF0Y2gsIGJ1dCB0aGUgdGV4dCBpcyBub3QgbG9uZyBlbm91Z2ggdG8gbWF0Y2ggYWxsIG9mIHRoZW0uICBBIGZ1bGwKKyAgICAgKiBtYXRjaCBtZWFucyBhbGwgY29udGV4dCBhbmQga2V5IGNoYXJhY3RlcnMgbWF0Y2guCisgICAgICogQHBhcmFtIHRleHQgdGhlIHRleHQsIGJvdGggdHJhbnNsYXRlZCBhbmQgdW50cmFuc2xhdGVkCisgICAgICogQHBhcmFtIHN0YXJ0IHRoZSBiZWdpbm5pbmcgaW5kZXgsIGluY2x1c2l2ZTsgPGNvZGU+MCA8PSBzdGFydAorICAgICAqIDw9IGxpbWl0PC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gbGltaXQgdGhlIGVuZGluZyBpbmRleCwgZXhjbHVzaXZlOyA8Y29kZT5zdGFydCA8PSBsaW1pdAorICAgICAqIDw9IHRleHQubGVuZ3RoKCk8L2NvZGU+LgorICAgICAqIEBwYXJhbSBjdXJzb3IgcG9zaXRpb24gYXQgd2hpY2ggdG8gdHJhbnNsYXRlIG5leHQsIHJlcHJlc2VudGluZyBvZmZzZXQKKyAgICAgKiBpbnRvIHRleHQuICBUaGlzIHZhbHVlIG11c3QgYmUgYmV0d2VlbiA8Y29kZT5zdGFydDwvY29kZT4gYW5kCisgICAgICogPGNvZGU+bGltaXQ8L2NvZGU+LgorICAgICAqIEBwYXJhbSBmaWx0ZXIgdGhlIGZpbHRlci4gIEFueSBjaGFyYWN0ZXIgZm9yIHdoaWNoCisgICAgICogPHR0PmZpbHRlci5jb250YWlucygpPC90dD4gcmV0dXJucyA8dHQ+ZmFsc2U8L3R0PiB3aWxsIG5vdCBiZQorICAgICAqIGFsdGVyZWQgYnkgdGhpcyB0cmFuc2xpdGVyYXRvci4gIElmIDx0dD5maWx0ZXI8L3R0PiBpcworICAgICAqIDx0dD5udWxsPC90dD4gdGhlbiBubyBmaWx0ZXJpbmcgaXMgYXBwbGllZC4KKyAgICAgKiBAcmV0dXJuIG9uZSBvZiA8Y29kZT5NSVNNQVRDSDwvY29kZT4sIDxjb2RlPlBBUlRJQUxfTUFUQ0g8L2NvZGU+LCBvcgorICAgICAqIDxjb2RlPkZVTExfTUFUQ0g8L2NvZGU+LgorICAgICAqIEBzZWUgI01JU01BVENICisgICAgICogQHNlZSAjUEFSVElBTF9NQVRDSAorICAgICAqIEBzZWUgI0ZVTExfTUFUQ0gKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldE1hdGNoRGVncmVlKFJlcGxhY2VhYmxlIHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbiBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvci5EYXRhIHZhcmlhYmxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVGaWx0ZXIgZmlsdGVyKSB7CisgICAgICAgIGludCBsZW4gPSBnZXRSZWdpb25NYXRjaExlbmd0aCh0ZXh0LCBwb3MsIHZhcmlhYmxlcywgZmlsdGVyKTsKKyAgICAgICAgcmV0dXJuIGxlbiA8IGFudGVDb250ZXh0TGVuZ3RoID8gTUlTTUFUQ0ggOgorICAgICAgICAgICAgKGxlbiA8IHBhdHRlcm4ubGVuZ3RoKCkgPyBQQVJUSUFMX01BVENIIDogRlVMTF9NQVRDSCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBvZiB0aGUgdGV4dCB0aGF0IG1hdGNoIHRoaXMgcnVsZS4gIElmCisgICAgICogdGhlcmUgaXMgYSBtaXNtYXRjaCwgcmV0dXJuIC0xLiAgSWYgdGhlIHRleHQgaXMgbm90IGxvbmcgZW5vdWdoIHRvIG1hdGNoCisgICAgICogYW55IGNoYXJhY3RlcnMsIHJldHVybiAwLgorICAgICAqIEBwYXJhbSB0ZXh0IHRoZSB0ZXh0LCBib3RoIHRyYW5zbGF0ZWQgYW5kIHVudHJhbnNsYXRlZAorICAgICAqIEBwYXJhbSBzdGFydCB0aGUgYmVnaW5uaW5nIGluZGV4LCBpbmNsdXNpdmU7IDxjb2RlPjAgPD0gc3RhcnQKKyAgICAgKiA8PSBsaW1pdDwvY29kZT4uCisgICAgICogQHBhcmFtIGxpbWl0IHRoZSBlbmRpbmcgaW5kZXgsIGV4Y2x1c2l2ZTsgPGNvZGU+c3RhcnQgPD0gbGltaXQKKyAgICAgKiA8PSB0ZXh0Lmxlbmd0aCgpPC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gY3Vyc29yIHBvc2l0aW9uIGF0IHdoaWNoIHRvIHRyYW5zbGF0ZSBuZXh0LCByZXByZXNlbnRpbmcgb2Zmc2V0CisgICAgICogaW50byB0ZXh0LiAgVGhpcyB2YWx1ZSBtdXN0IGJlIGJldHdlZW4gPGNvZGU+c3RhcnQ8L2NvZGU+IGFuZAorICAgICAqIDxjb2RlPmxpbWl0PC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gdmFyaWFibGVzIGEgZGljdGlvbmFyeSBvZiB2YXJpYWJsZXMgbWFwcGluZyA8Y29kZT5DaGFyYWN0ZXI8L2NvZGU+CisgICAgICogdG8gPGNvZGU+VW5pY29kZVNldDwvY29kZT4KKyAgICAgKiBAcGFyYW0gZmlsdGVyIHRoZSBmaWx0ZXIuICBBbnkgY2hhcmFjdGVyIGZvciB3aGljaAorICAgICAqIDx0dD5maWx0ZXIuY29udGFpbnMoKTwvdHQ+IHJldHVybnMgPHR0PmZhbHNlPC90dD4gd2lsbCBub3QgYmUKKyAgICAgKiBhbHRlcmVkIGJ5IHRoaXMgdHJhbnNsaXRlcmF0b3IuICBJZiA8dHQ+ZmlsdGVyPC90dD4gaXMKKyAgICAgKiA8dHQ+bnVsbDwvdHQ+IHRoZW4gbm8gZmlsdGVyaW5nIGlzIGFwcGxpZWQuCisgICAgICogQHJldHVybiAtMSBpZiB0aGVyZSBpcyBhIG1pc21hdGNoLCAwIGlmIHRoZSB0ZXh0IGlzIG5vdCBsb25nIGVub3VnaCB0bworICAgICAqIG1hdGNoIGFueSBjaGFyYWN0ZXJzLCBvdGhlcndpc2UgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIG9mIHRleHQgdGhhdAorICAgICAqIG1hdGNoIHRoaXMgcnVsZS4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGdldFJlZ2lvbk1hdGNoTGVuZ3RoKFJlcGxhY2VhYmxlIHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbiBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvci5EYXRhIHZhcmlhYmxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVGaWx0ZXIgZmlsdGVyKSB7CisgICAgICAgIGludCBjdXJzb3IgPSBwb3Muc3RhcnQgLSBhbnRlQ29udGV4dExlbmd0aDsKKyAgICAgICAgLy9bQU5DSE9SXWlmIChjdXJzb3IgPCBwb3MuY29udGV4dFN0YXJ0KSB7CisgICAgICAgIC8vW0FOQ0hPUl0gICAgcmV0dXJuIC0xOworICAgICAgICAvL1tBTkNIT1JdfQorICAgICAgICAvLyBRdWljayBsZW5ndGggY2hlY2s7IHRoaXMgaXMgYSBwZXJmb3JtYW5jZSB3aW4gZm9yIGxvbmcgcnVsZXMuCisgICAgICAgIC8vIFdpZGVuIGJ5IG9uZSB0byBhbGxvdyBhbmNob3IgbWF0Y2hpbmcuCisgICAgICAgIGlmIChjdXJzb3IgPCAocG9zLmNvbnRleHRTdGFydCAtIDEpKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaW50IGk7CisgICAgICAgIGZvciAoaT0wOyBpPHBhdHRlcm4ubGVuZ3RoKCkgJiYgY3Vyc29yPHBvcy5jb250ZXh0TGltaXQ7ICsraSwgKytjdXJzb3IpIHsKKyAgICAgICAgICAgIC8vW0FOQ0hPUl1pZiAoIWNoYXJNYXRjaGVzKHBhdHRlcm4uY2hhckF0KGkpLCB0ZXh0LmNoYXJBdChjdXJzb3IpLAorICAgICAgICAgICAgLy9bQU5DSE9SXSAgICAgICAgICAgICAgICAgdmFyaWFibGVzLCBmaWx0ZXIpKSB7CisgICAgICAgICAgICBpZiAoIWNoYXJNYXRjaGVzKHBhdHRlcm4uY2hhckF0KGkpLCB0ZXh0LCBjdXJzb3IsIHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGVzLCBmaWx0ZXIpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBrZXkgbWF0Y2hlcyB0aGUgZ2l2ZW4gdGV4dC4gIFRoaXMgbWV0aG9kCisgICAgICogYWNjb3VudHMgZm9yIHRoZSBmYWN0IHRoYXQgdGhlIGtleSBjaGFyYWN0ZXIgbWF5IHJlcHJlc2VudCBhIGNoYXJhY3RlcgorICAgICAqIHNldC4gIE5vdGUgdGhhdCB0aGUga2V5IGFuZCB0ZXh0IGNoYXJhY3RlcnMgbWF5IG5vdCBiZSBpbnRlcmNoYW5nZWQKKyAgICAgKiB3aXRob3V0IGFsdGVyaW5nIHRoZSByZXN1bHRzLgorICAgICAqIEBwYXJhbSBrZXlDaGFyIGEgY2hhcmFjdGVyIGluIHRoZSBtYXRjaCBrZXkKKyAgICAgKiBAcGFyYW0gdGV4dENoYXIgYSBjaGFyYWN0ZXIgaW4gdGhlIHRleHQgYmVpbmcgdHJhbnNsaXRlcmF0ZWQKKyAgICAgKiBAcGFyYW0gdmFyaWFibGVzIGEgZGljdGlvbmFyeSBvZiB2YXJpYWJsZXMgbWFwcGluZyA8Y29kZT5DaGFyYWN0ZXI8L2NvZGU+CisgICAgICogdG8gPGNvZGU+VW5pY29kZVNldDwvY29kZT4KKyAgICAgKiBAcGFyYW0gZmlsdGVyIHRoZSBmaWx0ZXIuICBBbnkgY2hhcmFjdGVyIGZvciB3aGljaAorICAgICAqIDx0dD5maWx0ZXIuY29udGFpbnMoKTwvdHQ+IHJldHVybnMgPHR0PmZhbHNlPC90dD4gd2lsbCBub3QgYmUKKyAgICAgKiBhbHRlcmVkIGJ5IHRoaXMgdHJhbnNsaXRlcmF0b3IuICBJZiA8dHQ+ZmlsdGVyPC90dD4gaXMKKyAgICAgKiA8dHQ+bnVsbDwvdHQ+IHRoZW4gbm8gZmlsdGVyaW5nIGlzIGFwcGxpZWQuCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBib29sZWFuIGNoYXJNYXRjaGVzKGNoYXIga2V5Q2hhciwgUmVwbGFjZWFibGUgdGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGluZGV4LCBUcmFuc2xpdGVyYXRvci5Qb3NpdGlvbiBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLkRhdGEgdmFyaWFibGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmljb2RlRmlsdGVyIGZpbHRlcikgeworICAgICAgICBVbmljb2RlU2V0IHNldCA9IG51bGw7CisgICAgICAgIGNoYXIgdGV4dENoYXIgPSAoaW5kZXggPj0gcG9zLmNvbnRleHRTdGFydCAmJiBpbmRleCA8IHBvcy5jb250ZXh0TGltaXQpCisgICAgICAgICAgICA/IHRleHQuY2hhckF0KGluZGV4KSA6IEVUSEVSOworICAgICAgICByZXR1cm4gKGZpbHRlciA9PSBudWxsIHx8IGZpbHRlci5jb250YWlucyh0ZXh0Q2hhcikpICYmCisgICAgICAgICAgICAoKChzZXQgPSB2YXJpYWJsZXMubG9va3VwU2V0KGtleUNoYXIpKSA9PSBudWxsKSA/CisgICAgICAgICAgICAga2V5Q2hhciA9PSB0ZXh0Q2hhciA6IHNldC5jb250YWlucyh0ZXh0Q2hhcikpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBrZXkgbWF0Y2hlcyB0aGUgZ2l2ZW4gdGV4dC4gIFRoaXMgbWV0aG9kCisgICAgICogYWNjb3VudHMgZm9yIHRoZSBmYWN0IHRoYXQgdGhlIGtleSBjaGFyYWN0ZXIgbWF5IHJlcHJlc2VudCBhIGNoYXJhY3RlcgorICAgICAqIHNldC4gIE5vdGUgdGhhdCB0aGUga2V5IGFuZCB0ZXh0IGNoYXJhY3RlcnMgbWF5IG5vdCBiZSBpbnRlcmNoYW5nZWQKKyAgICAgKiB3aXRob3V0IGFsdGVyaW5nIHRoZSByZXN1bHRzLgorICAgICAqIEBwYXJhbSBrZXlDaGFyIGEgY2hhcmFjdGVyIGluIHRoZSBtYXRjaCBrZXkKKyAgICAgKiBAcGFyYW0gdGV4dENoYXIgYSBjaGFyYWN0ZXIgaW4gdGhlIHRleHQgYmVpbmcgdHJhbnNsaXRlcmF0ZWQKKyAgICAgKiBAcGFyYW0gdmFyaWFibGVzIGEgZGljdGlvbmFyeSBvZiB2YXJpYWJsZXMgbWFwcGluZyA8Y29kZT5DaGFyYWN0ZXI8L2NvZGU+CisgICAgICogdG8gPGNvZGU+VW5pY29kZVNldDwvY29kZT4KKyAgICAgKiBAcGFyYW0gZmlsdGVyIHRoZSBmaWx0ZXIuICBBbnkgY2hhcmFjdGVyIGZvciB3aGljaAorICAgICAqIDx0dD5maWx0ZXIuY29udGFpbnMoKTwvdHQ+IHJldHVybnMgPHR0PmZhbHNlPC90dD4gd2lsbCBub3QgYmUKKyAgICAgKiBhbHRlcmVkIGJ5IHRoaXMgdHJhbnNsaXRlcmF0b3IuICBJZiA8dHQ+ZmlsdGVyPC90dD4gaXMKKyAgICAgKiA8dHQ+bnVsbDwvdHQ+IHRoZW4gbm8gZmlsdGVyaW5nIGlzIGFwcGxpZWQuCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBib29sZWFuIGNoYXJNYXRjaGVzKGNoYXIga2V5Q2hhciwgY2hhciB0ZXh0Q2hhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IuRGF0YSB2YXJpYWJsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVGaWx0ZXIgZmlsdGVyKSB7CisgICAgICAgIFVuaWNvZGVTZXQgc2V0ID0gbnVsbDsKKyAgICAgICAgcmV0dXJuIChmaWx0ZXIgPT0gbnVsbCB8fCBmaWx0ZXIuY29udGFpbnModGV4dENoYXIpKSAmJgorICAgICAgICAgICAgKCgoc2V0ID0gdmFyaWFibGVzLmxvb2t1cFNldChrZXlDaGFyKSkgPT0gbnVsbCkgPworICAgICAgICAgICAgIGtleUNoYXIgPT0gdGV4dENoYXIgOiBzZXQuY29udGFpbnModGV4dENoYXIpKTsKKyAgICB9Cit9CisKKy8qKgorICogJExvZzogVHJhbnNsaXRlcmF0aW9uUnVsZS5qYXZhLHYgJAorICogUmV2aXNpb24gMS4yNSAgMjAwMC8xMS8yOSAxOToxMjozMiAgYWxhbjRqCisgKiBVcGRhdGUgZG9jcworICoKKyAqIFJldmlzaW9uIDEuMjQgIDIwMDAvMDgvMzAgMjA6NDA6MzAgIGFsYW40agorICogSW1wbGVtZW50IGFuY2hvcnMuCisgKgorICogUmV2aXNpb24gMS4yMyAgMjAwMC8wNi8yOSAyMTo1OToyMyAgYWxhbjRqCisgKiBGaXggaGFuZGxpbmcgb2YgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24gZmllbGRzCisgKgorICogUmV2aXNpb24gMS4yMiAgMjAwMC8wNS8xOCAyMTozNzoxOSAgYWxhbgorICogVXBkYXRlIGRvY3MKKyAqCisgKiBSZXZpc2lvbiAxLjIxICAyMDAwLzA0LzI4IDAxOjIyOjAxICBhbGFuCisgKiBVcGRhdGUgc3ludGF4IGRpc3BsYXllZCBieSB0b1N0cmluZworICoKKyAqIFJldmlzaW9uIDEuMjAgIDIwMDAvMDQvMjUgMTc6MTc6MzcgIGFsYW4KKyAqIEFkZCBSZXBsYWNlYWJsZS5jb3B5IHRvIHJldGFpbiBvdXQtb2YtYmFuZCBpbmZvIGR1cmluZyByZW9yZGVyaW5nLgorICoKKyAqIFJldmlzaW9uIDEuMTkgIDIwMDAvMDQvMjUgMDE6NDI6NTggIGFsYW4KKyAqIEFsbG93IGFyYml0cmFyeSBsZW5ndGggdmFyaWFibGUgdmFsdWVzLiBDbGVhbiB1cCBEYXRhIEFQSS4gVXBkYXRlIGphdmFkb2NzLgorICoKKyAqIFJldmlzaW9uIDEuMTggIDIwMDAvMDQvMjIgMDE6MjU6MTAgIGFsYW4KKyAqIEFkZCBzdXBwb3J0IGZvciBjdXJzb3IgcG9zaXRpb25lciAnQCc7IHVwZGF0ZSBqYXZhZG9jCisgKgorICogUmV2aXNpb24gMS4xNyAgMjAwMC8wNC8yMSAyMToxNjo0MCAgYWxhbgorICogTW9kaWZ5IHJ1bGUgc3ludGF4CisgKgorICogUmV2aXNpb24gMS4xNiAgMjAwMC8wNC8xOSAxNjozNDoxOCAgYWxhbgorICogQWRkIHNlZ21lbnQgc3VwcG9ydC4KKyAqCisgKiBSZXZpc2lvbiAxLjE1ICAyMDAwLzA0LzEyIDIwOjE3OjQ1ICBhbGFuCisgKiBEZWxlZ2F0ZSByZXBsYWNlIG9wZXJhdGlvbiB0byBydWxlIG9iamVjdAorICoKKyAqIFJldmlzaW9uIDEuMTQgIDIwMDAvMDMvMTAgMDQ6MDc6MjQgIGpvaG5mCisgKiBDb3B5cmlnaHQgdXBkYXRlCisgKgorICogUmV2aXNpb24gMS4xMyAgMjAwMC8wMi8xMCAwNzozNjoyNSAgam9obmYKKyAqIGZpeGVkIGltcG9ydHMgZm9yIGNvbS5pYm0udXRpbC5VdGlsaXR5CisgKgorICogUmV2aXNpb24gMS4xMiAgMjAwMC8wMi8wMyAxODoxMToxOSAgQWxhbgorICogVXNlIGFycmF5IHJhdGhlciB0aGFuIGhhc2h0YWJsZSBmb3IgY2hhci10by1zZXQgbWFwCisgKgorICogUmV2aXNpb24gMS4xMSAgMjAwMC8wMS8yNyAxODo1OToxOSAgQWxhbgorICogVXNlIFBvc2l0aW9uIHJhdGhlciB0aGFuIGludFtdIGFuZCBtb3ZlIGFsbCBzdWJjbGFzcyBvdmVycmlkZXMgdG8gb25lIG1ldGhvZCAoaGFuZGxlVHJhbnNsaXRlcmF0ZSkKKyAqCisgKiBSZXZpc2lvbiAxLjEwICAyMDAwLzAxLzE4IDIwOjM2OjE3ICBBbGFuCisgKiBNYWtlIFVuaWNvZGVTZXQgaW5oZXJpdCBmcm9tIFVuaWNvZGVGaWx0ZXIKKyAqCisgKiBSZXZpc2lvbiAxLjkgIDIwMDAvMDEvMTggMDI6Mzg6NTUgIEFsYW4KKyAqIEZpeCBmaWx0ZXJpbmcgYnVnLgorICoKKyAqIFJldmlzaW9uIDEuOCAgMjAwMC8wMS8xMyAyMzo1MzoyMyAgQWxhbgorICogRml4IGJ1Z3MgZm91bmQgZHVyaW5nIElDVSBwb3J0CisgKgorICogUmV2aXNpb24gMS43ICAyMDAwLzAxLzExIDA0OjEyOjA2ICBBbGFuCisgKiBDbGVhbnVwLCBlbWJlbGxpc2ggY29tbWVudHMKKyAqCisgKiBSZXZpc2lvbiAxLjYgIDIwMDAvMDEvMTEgMDI6MjU6MDMgIEFsYW4KKyAqIFJld3JpdGUgVW5pY29kZVNldCBhbmQgUkJUIHBhcnNlcnMgZm9yIGJldHRlciBwZXJmb3JtYW5jZSBhbmQgbmV3IHN5bnRheAorICoKKyAqIFJldmlzaW9uIDEuNSAgMjAwMC8wMS8wNCAyMTo0Mzo1NyAgQWxhbgorICogQWRkIHJ1bGUgaW5kZXhpbmcsIGFuZCBtb3ZlIG1hc2tpbmcgY2hlY2sgdG8gVHJhbnNsaXRlcmF0aW9uUnVsZVNldC4KKyAqCisgKiBSZXZpc2lvbiAxLjQgIDE5OTkvMTIvMjIgMDE6NDA6NTQgIEFsYW4KKyAqIENvbnNvbGlkYXRlIHJ1bGUgcGF0dGVybiBhbnRlQ29udGV4dCwga2V5LCBhbmQgcG9zdENvbnRleHQgaW50byBvbmUgc3RyaW5nLgorICoKKyAqIFJldmlzaW9uIDEuMyAgMTk5OS8xMi8yMiAwMTowNTo1NCAgQWxhbgorICogSW1wcm92ZSBtYXNraW5nIGNoZWNraW5nOyB0dXJuIGl0IG9mZiBieSBkZWZhdWx0LCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlCisgKgorICogUmV2aXNpb24gMS4yICAxOTk5LzEyLzIxIDIzOjU4OjQ0ICBBbGFuCisgKiBEZXRlY3QgYT54IG1hc2tpbmcgYT55CisgKi8KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvVHJhbnNsaXRlcmF0aW9uUnVsZVNldC5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9UcmFuc2xpdGVyYXRpb25SdWxlU2V0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTViZDMyMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvVHJhbnNsaXRlcmF0aW9uUnVsZVNldC5qYXZhCkBAIC0wLDAgKzEsMjk4IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L0F0dGljL1RyYW5zbGl0ZXJhdGlvblJ1bGVTZXQuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wNi8yOSAyMTo1OToyMyAkIAorICogJFJldmlzaW9uOiAxLjEwICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRleHQ7CisKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworLyoqCisgKiBBIHNldCBvZiBydWxlcyBmb3IgYSA8Y29kZT5SdWxlQmFzZWRUcmFuc2xpdGVyYXRvcjwvY29kZT4uICBUaGlzIHNldCBlbmNvZGVzCisgKiB0aGUgdHJhbnNsaXRlcmF0aW9uIGluIG9uZSBkaXJlY3Rpb24gZnJvbSBvbmUgc2V0IG9mIGNoYXJhY3RlcnMgb3Igc2hvcnQKKyAqIHN0cmluZ3MgdG8gYW5vdGhlci4gIEEgPGNvZGU+UnVsZUJhc2VkVHJhbnNsaXRlcmF0b3I8L2NvZGU+IGNvbnNpc3RzIG9mIHVwIHRvCisgKiB0d28gc3VjaCBzZXRzLCBvbmUgZm9yIHRoZSBmb3J3YXJkIGRpcmVjdGlvbiwgYW5kIG9uZSBmb3IgdGhlIHJldmVyc2UuCisgKgorICogPHA+QSA8Y29kZT5UcmFuc2xpdGVyYXRpb25SdWxlU2V0PC9jb2RlPiBoYXMgb25lIGltcG9ydGFudCBvcGVyYXRpb24sIHRoYXQgb2YKKyAqIGZpbmRpbmcgYSBtYXRjaGluZyBydWxlIGF0IGEgZ2l2ZW4gcG9pbnQgaW4gdGhlIHRleHQuICBUaGlzIGlzIGFjY29tcGxpc2hlZAorICogYnkgdGhlIDxjb2RlPmZpbmRNYXRjaCgpPC9jb2RlPiBtZXRob2QuCisgKgorICogPHA+Q29weXJpZ2h0ICZjb3B5OyBJQk0gQ29ycG9yYXRpb24gMTk5OS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogQGF1dGhvciBBbGFuIExpdQorICogQHZlcnNpb24gJFJDU2ZpbGU6IFRyYW5zbGl0ZXJhdGlvblJ1bGVTZXQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEwICQgJERhdGU6IDIwMDAvMDYvMjkgMjE6NTk6MjMgJAorICoKKyAqICRMb2c6IFRyYW5zbGl0ZXJhdGlvblJ1bGVTZXQuamF2YSx2ICQKKyAqIFJldmlzaW9uIDEuMTAgIDIwMDAvMDYvMjkgMjE6NTk6MjMgIGFsYW40agorICogRml4IGhhbmRsaW5nIG9mIFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uIGZpZWxkcworICoKKyAqIFJldmlzaW9uIDEuOSAgMjAwMC8wMy8xMCAwNDowNzoyNCAgam9obmYKKyAqIENvcHlyaWdodCB1cGRhdGUKKyAqCisgKiBSZXZpc2lvbiAxLjggIDIwMDAvMDIvMDMgMTg6MTE6MTkgIEFsYW4KKyAqIFVzZSBhcnJheSByYXRoZXIgdGhhbiBoYXNodGFibGUgZm9yIGNoYXItdG8tc2V0IG1hcAorICoKKyAqIFJldmlzaW9uIDEuNyAgMjAwMC8wMS8yNyAxODo1OToxOSAgQWxhbgorICogVXNlIFBvc2l0aW9uIHJhdGhlciB0aGFuIGludFtdIGFuZCBtb3ZlIGFsbCBzdWJjbGFzcyBvdmVycmlkZXMgdG8gb25lIG1ldGhvZCAoaGFuZGxlVHJhbnNsaXRlcmF0ZSkKKyAqCisgKiBSZXZpc2lvbiAxLjYgIDIwMDAvMDEvMTggMjA6MzY6MTcgIEFsYW4KKyAqIE1ha2UgVW5pY29kZVNldCBpbmhlcml0IGZyb20gVW5pY29kZUZpbHRlcgorICoKKyAqIFJldmlzaW9uIDEuNSAgMjAwMC8wMS8wNCAyMTo0Mzo1NyAgQWxhbgorICogQWRkIHJ1bGUgaW5kZXhpbmcsIGFuZCBtb3ZlIG1hc2tpbmcgY2hlY2sgdG8gVHJhbnNsaXRlcmF0aW9uUnVsZVNldC4KKyAqCisgKiBSZXZpc2lvbiAxLjQgIDE5OTkvMTIvMjIgMDE6NDA6NTQgIEFsYW4KKyAqIENvbnNvbGlkYXRlIHJ1bGUgcGF0dGVybiBhbnRlQ29udGV4dCwga2V5LCBhbmQgcG9zdENvbnRleHQgaW50byBvbmUgc3RyaW5nLgorICoKKyAqIFJldmlzaW9uIDEuMyAgMTk5OS8xMi8yMiAwMTowNTo1NCAgQWxhbgorICogSW1wcm92ZSBtYXNraW5nIGNoZWNraW5nOyB0dXJuIGl0IG9mZiBieSBkZWZhdWx0LCBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlCisgKgorICogUmV2aXNpb24gMS4yICAxOTk5LzEyLzIyIDAwOjAxOjM2ICBBbGFuCisgKiBEZXRlY3QgYT54IG1hc2tpbmcgYT55CisgKgorICovCitjbGFzcyBUcmFuc2xpdGVyYXRpb25SdWxlU2V0IHsKKyAgICAvKioKKyAgICAgKiBWZWN0b3Igb2YgcnVsZXMsIGluIHRoZSBvcmRlciBhZGRlZC4gIFRoaXMgaXMgb25seSB1c2VkIHdoaWxlIHRoZSBydWxlCisgICAgICogc2V0IGlzIGdldHRpbmcgYnVpbHQuICBBZnRlciB0aGF0LCBmcmVlemUoKSByZW9yZGVycyBhbmQgaW5kZXhlcyB0aGUKKyAgICAgKiBydWxlcywgYW5kIHRoaXMgVmVjdG9yIGlzIGZyZWVkLgorICAgICAqLworICAgIHByaXZhdGUgVmVjdG9yIHJ1bGVWZWN0b3I7CisKKyAgICAvKioKKyAgICAgKiBMZW5ndGggb2YgdGhlIGxvbmdlc3QgcHJlY2VkaW5nIGNvbnRleHQKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBtYXhDb250ZXh0TGVuZ3RoOworCisgICAgLyoqCisgICAgICogU29ydGVkIGFuZCBpbmRleGVkIHRhYmxlIG9mIHJ1bGVzLiAgVGhpcyBpcyBjcmVhdGVkIGJ5IGZyZWV6ZSgpIGZyb20KKyAgICAgKiB0aGUgcnVsZXMgaW4gcnVsZVZlY3Rvci4KKyAgICAgKi8KKyAgICBwcml2YXRlIFRyYW5zbGl0ZXJhdGlvblJ1bGVbXSBydWxlczsKKworICAgIC8qKgorICAgICAqIEluZGV4IHRhYmxlLiAgRm9yIHRleHQgaGF2aW5nIGEgZmlyc3QgY2hhcmFjdGVyIGMsIGNvbXB1dGUgeCA9IGMmMHhGRi4KKyAgICAgKiBOb3cgdXNlIHJ1bGVzW2luZGV4W3hdLi5pbmRleFt4KzFdLTFdLiAgVGhpcyBpbmRleCB0YWJsZSBpcyBjcmVhdGVkIGJ5CisgICAgICogZnJlZXplKCkuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnRbXSBpbmRleDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAiXHUwMEE5IElCTSBDb3Jwb3JhdGlvbiAxOTk5LiBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBuZXcgZW1wdHkgcnVsZSBzZXQuCisgICAgICovCisgICAgcHVibGljIFRyYW5zbGl0ZXJhdGlvblJ1bGVTZXQoKSB7CisgICAgICAgIHJ1bGVWZWN0b3IgPSBuZXcgVmVjdG9yKCk7CisgICAgICAgIG1heENvbnRleHRMZW5ndGggPSAwOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbWF4aW11bSBjb250ZXh0IGxlbmd0aC4KKyAgICAgKiBAcmV0dXJuIHRoZSBsZW5ndGggb2YgdGhlIGxvbmdlc3QgcHJlY2VkaW5nIGNvbnRleHQuCisgICAgICovCisgICAgcHVibGljIGludCBnZXRNYXhpbXVtQ29udGV4dExlbmd0aCgpIHsKKyAgICAgICAgcmV0dXJuIG1heENvbnRleHRMZW5ndGg7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWRkIGEgcnVsZSB0byB0aGlzIHNldC4gIFJ1bGVzIGFyZSBhZGRlZCBpbiBvcmRlciwgYW5kIG9yZGVyIGlzCisgICAgICogc2lnbmlmaWNhbnQuCisgICAgICogQHBhcmFtIHJ1bGUgdGhlIHJ1bGUgdG8gYWRkCisgICAgICovCisgICAgcHVibGljIHZvaWQgYWRkUnVsZShUcmFuc2xpdGVyYXRpb25SdWxlIHJ1bGUpIHsKKyAgICAgICAgaWYgKHJ1bGVWZWN0b3IgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQ2Fubm90IGFkZCBydWxlcyBhZnRlciBmcmVlemluZyIpOworICAgICAgICB9CisgICAgICAgIHJ1bGVWZWN0b3IuYWRkRWxlbWVudChydWxlKTsKKyAgICAgICAgaW50IGxlbjsKKyAgICAgICAgaWYgKChsZW4gPSBydWxlLmdldEFudGVDb250ZXh0TGVuZ3RoKCkpID4gbWF4Q29udGV4dExlbmd0aCkgeworICAgICAgICAgICAgbWF4Q29udGV4dExlbmd0aCA9IGxlbjsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENsb3NlIHRoaXMgcnVsZSBzZXQgdG8gZnVydGhlciBhZGRpdGlvbnMsIGNoZWNrIGl0IGZvciBtYXNrZWQgcnVsZXMsCisgICAgICogYW5kIGluZGV4IGl0IHRvIG9wdGltaXplIHBlcmZvcm1hbmNlLiAgT25jZSB0aGlzIG1ldGhvZCBpcyBjYWxsZWQsCisgICAgICogYWRkUnVsZSgpIGNhbiBubyBsb25nZXIgYmUgY2FsbGVkLgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHNvbWUgcnVsZXMgYXJlIG1hc2tlZAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGZyZWV6ZShSdWxlQmFzZWRUcmFuc2xpdGVyYXRvci5EYXRhIHZhcmlhYmxlcykgeworICAgICAgICAvKiBDb25zdHJ1Y3QgdGhlIHJ1bGUgYXJyYXkgYW5kIGluZGV4IHRhYmxlLiAgV2UgcmVvcmRlciB0aGUKKyAgICAgICAgICogcnVsZXMgYnkgc29ydGluZyB0aGVtIGludG8gMjU2IGJpbnMuICBFYWNoIGJpbiBjb250YWlucyBhbGwKKyAgICAgICAgICogcnVsZXMgbWF0Y2hpbmcgdGhlIGluZGV4IHZhbHVlIGZvciB0aGF0IGJpbi4gIEEgcnVsZQorICAgICAgICAgKiBtYXRjaGVzIGFuIGluZGV4IHZhbHVlIGlmIHN0cmluZyB3aG9zZSBmaXJzdCBrZXkgY2hhcmFjdGVyCisgICAgICAgICAqIGhhcyBhIGxvdyBieXRlIGVxdWFsIHRvIHRoZSBpbmRleCB2YWx1ZSBjYW4gbWF0Y2ggdGhlIHJ1bGUuCisgICAgICAgICAqCisgICAgICAgICAqIEVhY2ggYmluIGNvbnRhaW5zIHplcm8gb3IgbW9yZSBydWxlcywgaW4gdGhlIHNhbWUgb3JkZXIKKyAgICAgICAgICogdGhleSB3ZXJlIGZvdW5kIG9yaWdpbmFsbHkuICBIb3dldmVyLCB0aGUgdG90YWwgcnVsZXMgaW4KKyAgICAgICAgICogdGhlIGJpbnMgbWF5IGV4Y2VlZCB0aGUgbnVtYmVyIGluIHRoZSBvcmlnaW5hbCB2ZWN0b3IsCisgICAgICAgICAqIHNpbmNlIHJ1bGVzIHRoYXQgaGF2ZSBhIHZhcmlhYmxlIGFzIHRoZWlyIGZpcnN0IGtleQorICAgICAgICAgKiBjaGFyYWN0ZXIgd2lsbCBnZW5lcmFsbHkgZmFsbCBpbnRvIG1vcmUgdGhhbiBvbmUgYmluLgorICAgICAgICAgKgorICAgICAgICAgKiBUaGF0IGlzLCBlYWNoIGJpbiBjb250YWlucyBhbGwgcnVsZXMgdGhhdCBlaXRoZXIgaGF2ZSB0aGF0CisgICAgICAgICAqIGZpcnN0IGluZGV4IHZhbHVlIGFzIHRoZWlyIGZpcnN0IGtleSBjaGFyYWN0ZXIsIG9yIGhhdmUKKyAgICAgICAgICogYSBzZXQgY29udGFpbmluZyB0aGUgaW5kZXggdmFsdWUgYXMgdGhlaXIgZmlyc3QgY2hhcmFjdGVyLgorICAgICAgICAgKi8KKyAgICAgICAgaW50IG4gPSBydWxlVmVjdG9yLnNpemUoKTsKKyAgICAgICAgaW5kZXggPSBuZXcgaW50WzI1N107IC8vIFtzaWNdCisgICAgICAgIFZlY3RvciB2ID0gbmV3IFZlY3RvcigyKm4pOyAvLyBoZXVyaXN0aWM7IGFkanVzdCBhcyBuZWVkZWQKKworICAgICAgICAvKiBQcmVjb21wdXRlIHRoZSBpbmRleCB2YWx1ZXMuICBUaGlzIHNhdmVzIGEgTE9UIG9mIHRpbWUuCisgICAgICAgICAqLworICAgICAgICBpbnRbXSBpbmRleFZhbHVlID0gbmV3IGludFtuXTsKKyAgICAgICAgZm9yIChpbnQgaj0wOyBqPG47ICsraikgeworICAgICAgICAgICAgVHJhbnNsaXRlcmF0aW9uUnVsZSByID0gKFRyYW5zbGl0ZXJhdGlvblJ1bGUpIHJ1bGVWZWN0b3IuZWxlbWVudEF0KGopOworICAgICAgICAgICAgaW5kZXhWYWx1ZVtqXSA9IHIuZ2V0SW5kZXhWYWx1ZSh2YXJpYWJsZXMpOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IHg9MDsgeDwyNTY7ICsreCkgeworICAgICAgICAgICAgaW5kZXhbeF0gPSB2LnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGo9MDsgajxuOyArK2opIHsKKyAgICAgICAgICAgICAgICBpZiAoaW5kZXhWYWx1ZVtqXSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleFZhbHVlW2pdID09IHgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHYuYWRkRWxlbWVudChydWxlVmVjdG9yLmVsZW1lbnRBdChqKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgaW5kZXhWYWx1ZSBpcyA8IDAsIHRoZW4gdGhlIGZpcnN0IGtleSBjaGFyYWN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgICAgLy8gYSBzZXQsIGFuZCB3ZSBtdXN0IHVzZSB0aGUgbW9yZSB0aW1lLWNvbnN1bWluZworICAgICAgICAgICAgICAgICAgICAvLyBtYXRjaGVzSW5kZXhWYWx1ZSBjaGVjay4gIEluIHByYWN0aWNlIHRoaXMgaGFwcGVucworICAgICAgICAgICAgICAgICAgICAvLyByYXJlbHksIHNvIHdlIHNlbGRvbSB0cmVhZCB0aGlzIGNvZGUgcGF0aC4KKyAgICAgICAgICAgICAgICAgICAgVHJhbnNsaXRlcmF0aW9uUnVsZSByID0gKFRyYW5zbGl0ZXJhdGlvblJ1bGUpIHJ1bGVWZWN0b3IuZWxlbWVudEF0KGopOworICAgICAgICAgICAgICAgICAgICBpZiAoci5tYXRjaGVzSW5kZXhWYWx1ZSh4LCB2YXJpYWJsZXMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2LmFkZEVsZW1lbnQocik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaW5kZXhbMjU2XSA9IHYuc2l6ZSgpOworCisgICAgICAgIC8qIEZyZWV6ZSB0aGluZ3MgaW50byBhbiBhcnJheS4KKyAgICAgICAgICovCisgICAgICAgIHJ1bGVzID0gbmV3IFRyYW5zbGl0ZXJhdGlvblJ1bGVbdi5zaXplKCldOworICAgICAgICB2LmNvcHlJbnRvKHJ1bGVzKTsKKyAgICAgICAgcnVsZVZlY3RvciA9IG51bGw7CisKKyAgICAgICAgU3RyaW5nQnVmZmVyIGVycm9ycyA9IG51bGw7CisKKyAgICAgICAgLyogQ2hlY2sgZm9yIG1hc2tpbmcuICBUaGlzIGlzIE1VQ0ggZmFzdGVyIHRoYW4gb3VyIG9sZCBjaGVjaywKKyAgICAgICAgICogd2hpY2ggd2FzIGVhY2ggcnVsZSBhZ2FpbnN0IGVhY2ggZm9sbG93aW5nIHJ1bGUsIHNpbmNlIHdlCisgICAgICAgICAqIG9ubHkgaGF2ZSB0byBjaGVjayBmb3IgbWFza2luZyB3aXRoaW4gZWFjaCBiaW4gbm93LiAgSXQncworICAgICAgICAgKiAyNTYqTyhuMl4yKSBpbnN0ZWFkIG9mIE8objFeMiksIHdoZXJlIG4xIGlzIHRoZSB0b3RhbCBydWxlCisgICAgICAgICAqIGNvdW50LCBhbmQgbjIgaXMgdGhlIHBlci1iaW4gcnVsZSBjb3VudC4gIEJ1dCBuMjw8bjEsIHNvCisgICAgICAgICAqIGl0J3MgYSBiaWcgd2luLgorICAgICAgICAgKi8KKyAgICAgICAgZm9yIChpbnQgeD0wOyB4PDI1NjsgKyt4KSB7CisgICAgICAgICAgICBmb3IgKGludCBqPWluZGV4W3hdOyBqPGluZGV4W3grMV0tMTsgKytqKSB7CisgICAgICAgICAgICAgICAgVHJhbnNsaXRlcmF0aW9uUnVsZSByMSA9IHJ1bGVzW2pdOworICAgICAgICAgICAgICAgIGZvciAoaW50IGs9aisxOyBrPGluZGV4W3grMV07ICsraykgeworICAgICAgICAgICAgICAgICAgICBUcmFuc2xpdGVyYXRpb25SdWxlIHIyID0gcnVsZXNba107CisgICAgICAgICAgICAgICAgICAgIGlmIChyMS5tYXNrcyhyMikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlcnJvcnMgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgiXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoIlJ1bGUgIiArIHIxICsgIiBtYXNrcyAiICsgcjIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGVycm9ycyAhPSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKGVycm9ycy50b1N0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEF0dGVtcHQgdG8gZmluZCBhIG1hdGNoaW5nIHJ1bGUgYXQgdGhlIHNwZWNpZmllZCBwb2ludCBpbiB0aGUgdGV4dC4KKyAgICAgKiBAcGFyYW0gdGV4dCB0aGUgdGV4dCwgYm90aCB0cmFuc2xhdGVkIGFuZCB1bnRyYW5zbGF0ZWQKKyAgICAgKiBAcGFyYW0gc3RhcnQgdGhlIGJlZ2lubmluZyBpbmRleCwgaW5jbHVzaXZlOyA8Y29kZT4wIDw9IHN0YXJ0CisgICAgICogPD0gbGltaXQ8L2NvZGU+LgorICAgICAqIEBwYXJhbSBsaW1pdCB0aGUgZW5kaW5nIGluZGV4LCBleGNsdXNpdmU7IDxjb2RlPnN0YXJ0IDw9IGxpbWl0CisgICAgICogPD0gdGV4dC5sZW5ndGgoKTwvY29kZT4uCisgICAgICogQHBhcmFtIGN1cnNvciBwb3NpdGlvbiBhdCB3aGljaCB0byB0cmFuc2xhdGUgbmV4dCwgcmVwcmVzZW50aW5nIG9mZnNldAorICAgICAqIGludG8gdGV4dC4gIFRoaXMgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDxjb2RlPnN0YXJ0PC9jb2RlPiBhbmQKKyAgICAgKiA8Y29kZT5saW1pdDwvY29kZT4uCisgICAgICogQHBhcmFtIHZhcmlhYmxlcyBhIGRpY3Rpb25hcnkgbWFwcGluZyB2YXJpYWJsZXMgdG8gdGhlIHNldHMgdGhleQorICAgICAqIHJlcHJlc2VudCAobWFwcyA8Y29kZT5DaGFyYWN0ZXI8L2NvZGU+IHRvIDxjb2RlPlVuaWNvZGVTZXQ8L2NvZGU+KQorICAgICAqIEBwYXJhbSBmaWx0ZXIgdGhlIGZpbHRlci4gIEFueSBjaGFyYWN0ZXIgZm9yIHdoaWNoCisgICAgICogPHR0PmZpbHRlci5jb250YWlucygpPC90dD4gcmV0dXJucyA8dHQ+ZmFsc2U8L3R0PiB3aWxsIG5vdCBiZQorICAgICAqIGFsdGVyZWQgYnkgdGhpcyB0cmFuc2xpdGVyYXRvci4gIElmIDx0dD5maWx0ZXI8L3R0PiBpcworICAgICAqIDx0dD5udWxsPC90dD4gdGhlbiBubyBmaWx0ZXJpbmcgaXMgYXBwbGllZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBtYXRjaGluZyBydWxlLCBvciBudWxsIGlmIG5vbmUgZm91bmQuCisgICAgICovCisgICAgcHVibGljIFRyYW5zbGl0ZXJhdGlvblJ1bGUgZmluZE1hdGNoKFJlcGxhY2VhYmxlIHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uIHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IuRGF0YSB2YXJpYWJsZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVuaWNvZGVGaWx0ZXIgZmlsdGVyKSB7CisgICAgICAgIC8qIFdlIG9ubHkgbmVlZCB0byBjaGVjayBvdXIgaW5kZXhlZCBiaW4gb2YgdGhlIHJ1bGUgdGFibGUsCisgICAgICAgICAqIGJhc2VkIG9uIHRoZSBsb3cgYnl0ZSBvZiB0aGUgZmlyc3Qga2V5IGNoYXJhY3Rlci4KKyAgICAgICAgICovCisgICAgICAgIGludCB4ID0gdGV4dC5jaGFyQXQocG9zLnN0YXJ0KSAmIDB4RkY7CisgICAgICAgIGZvciAoaW50IGk9aW5kZXhbeF07IGk8aW5kZXhbeCsxXTsgKytpKSB7CisgICAgICAgICAgICBpZiAocnVsZXNbaV0ubWF0Y2hlcyh0ZXh0LCBwb3MsIHZhcmlhYmxlcywgZmlsdGVyKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBydWxlc1tpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBdHRlbXB0IHRvIGZpbmQgYSBtYXRjaGluZyBydWxlIGF0IHRoZSBzcGVjaWZpZWQgcG9pbnQgaW4gdGhlIHRleHQuCisgICAgICogVW5saWtlIDxjb2RlPmZpbmRNYXRjaCgpPC9jb2RlPiwgdGhpcyBtZXRob2QgZG9lcyBhbiBpbmNyZW1lbnRhbCBtYXRjaC4KKyAgICAgKiBBbiBpbmNyZW1lbnRhbCBtYXRjaCByZXF1aXJlcyB0aGF0IHRoZXJlIGJlIG5vIHBhcnRpYWwgbWF0Y2hlcyB0aGF0IG1pZ2h0CisgICAgICogcHJlLWVtcHQgdGhlIGZ1bGwgbWF0Y2ggdGhhdCBpcyBmb3VuZC4gIElmIHRoZXJlIGFyZSBwYXJ0aWFsIG1hdGNoZXMsCisgICAgICogdGhlbiBudWxsIGlzIHJldHVybmVkLiAgQSBub24tbnVsbCByZXN1bHQgaW5kaWNhdGVzIHRoYXQgYSBmdWxsIG1hdGNoIGhhcworICAgICAqIGJlZW4gZm91bmQsIGFuZCB0aGF0IGl0IGNhbm5vdCBiZSBwcmUtZW1wdGVkIGJ5IGEgcGFydGlhbCBtYXRjaAorICAgICAqIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBhZGRpdGlvbmFsIHRleHQgaXMgYWRkZWQgdG8gdGhlIHRyYW5zbGF0aW9uIGJ1ZmZlci4KKyAgICAgKiBAcGFyYW0gdGV4dCB0aGUgdGV4dCwgYm90aCB0cmFuc2xhdGVkIGFuZCB1bnRyYW5zbGF0ZWQKKyAgICAgKiBAcGFyYW0gc3RhcnQgdGhlIGJlZ2lubmluZyBpbmRleCwgaW5jbHVzaXZlOyA8Y29kZT4wIDw9IHN0YXJ0CisgICAgICogPD0gbGltaXQ8L2NvZGU+LgorICAgICAqIEBwYXJhbSBsaW1pdCB0aGUgZW5kaW5nIGluZGV4LCBleGNsdXNpdmU7IDxjb2RlPnN0YXJ0IDw9IGxpbWl0CisgICAgICogPD0gdGV4dC5sZW5ndGgoKTwvY29kZT4uCisgICAgICogQHBhcmFtIGN1cnNvciBwb3NpdGlvbiBhdCB3aGljaCB0byB0cmFuc2xhdGUgbmV4dCwgcmVwcmVzZW50aW5nIG9mZnNldAorICAgICAqIGludG8gdGV4dC4gIFRoaXMgdmFsdWUgbXVzdCBiZSBiZXR3ZWVuIDxjb2RlPnN0YXJ0PC9jb2RlPiBhbmQKKyAgICAgKiA8Y29kZT5saW1pdDwvY29kZT4uCisgICAgICogQHBhcmFtIHZhcmlhYmxlcyBhIGRpY3Rpb25hcnkgbWFwcGluZyB2YXJpYWJsZXMgdG8gdGhlIHNldHMgdGhleQorICAgICAqIHJlcHJlc2VudCAobWFwcyA8Y29kZT5DaGFyYWN0ZXI8L2NvZGU+IHRvIDxjb2RlPlVuaWNvZGVTZXQ8L2NvZGU+KQorICAgICAqIEBwYXJhbSBwYXJ0aWFsIG91dHB1dCBwYXJhbWV0ZXIuICA8Y29kZT5wYXJ0aWFsWzBdPC9jb2RlPiBpcyBzZXQgdG8KKyAgICAgKiB0cnVlIGlmIGEgcGFydGlhbCBtYXRjaCBpcyByZXR1cm5lZC4KKyAgICAgKiBAcGFyYW0gZmlsdGVyIHRoZSBmaWx0ZXIuICBBbnkgY2hhcmFjdGVyIGZvciB3aGljaAorICAgICAqIDx0dD5maWx0ZXIuY29udGFpbnMoKTwvdHQ+IHJldHVybnMgPHR0PmZhbHNlPC90dD4gd2lsbCBub3QgYmUKKyAgICAgKiBhbHRlcmVkIGJ5IHRoaXMgdHJhbnNsaXRlcmF0b3IuICBJZiA8dHQ+ZmlsdGVyPC90dD4gaXMKKyAgICAgKiA8dHQ+bnVsbDwvdHQ+IHRoZW4gbm8gZmlsdGVyaW5nIGlzIGFwcGxpZWQuCisgICAgICogQHJldHVybiB0aGUgbWF0Y2hpbmcgcnVsZSwgb3IgbnVsbCBpZiBub25lIGZvdW5kLCBvciBpZiB0aGUgdGV4dCBidWZmZXIKKyAgICAgKiBkb2VzIG5vdCBoYXZlIGVub3VnaCB0ZXh0IHlldCB0byB1bmFtYmlndW91c2x5IG1hdGNoIGEgcnVsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgVHJhbnNsaXRlcmF0aW9uUnVsZSBmaW5kSW5jcmVtZW50YWxNYXRjaChSZXBsYWNlYWJsZSB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uIHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvci5EYXRhIHZhcmlhYmxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHBhcnRpYWxbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmljb2RlRmlsdGVyIGZpbHRlcikgeworICAgICAgICAvKiBXZSBvbmx5IG5lZWQgdG8gY2hlY2sgb3VyIGluZGV4ZWQgYmluIG9mIHRoZSBydWxlIHRhYmxlLAorICAgICAgICAgKiBiYXNlZCBvbiB0aGUgbG93IGJ5dGUgb2YgdGhlIGZpcnN0IGtleSBjaGFyYWN0ZXIuCisgICAgICAgICAqLworICAgICAgICBwYXJ0aWFsWzBdID0gZmFsc2U7CisgICAgICAgIGludCB4ID0gdGV4dC5jaGFyQXQocG9zLnN0YXJ0KSAmIDB4RkY7CisgICAgICAgIGZvciAoaW50IGk9aW5kZXhbeF07IGk8aW5kZXhbeCsxXTsgKytpKSB7CisgICAgICAgICAgICBpbnQgbWF0Y2ggPSBydWxlc1tpXS5nZXRNYXRjaERlZ3JlZSh0ZXh0LCBwb3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMsIGZpbHRlcik7CisgICAgICAgICAgICBzd2l0Y2ggKG1hdGNoKSB7CisgICAgICAgICAgICBjYXNlIFRyYW5zbGl0ZXJhdGlvblJ1bGUuRlVMTF9NQVRDSDoKKyAgICAgICAgICAgICAgICByZXR1cm4gcnVsZXNbaV07CisgICAgICAgICAgICBjYXNlIFRyYW5zbGl0ZXJhdGlvblJ1bGUuUEFSVElBTF9NQVRDSDoKKyAgICAgICAgICAgICAgICBwYXJ0aWFsWzBdID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L1RyYW5zbGl0ZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS90ZXh0L1RyYW5zbGl0ZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDZhOGNjYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvVHJhbnNsaXRlcmF0b3IuamF2YQpAQCAtMCwwICsxLDEwNzEgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvQXR0aWMvVHJhbnNsaXRlcmF0b3IuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMS8wMy8zMCAyMjo1MDowOCAkIAorICogJFJldmlzaW9uOiAxLjI3ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRleHQ7CisKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZhLnRleHQuTWVzc2FnZUZvcm1hdDsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VQb3NpdGlvbjsKK2ltcG9ydCBqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb247CitpbXBvcnQgY29tLmlibS50ZXh0LnJlc291cmNlcy5SZXNvdXJjZVJlYWRlcjsKKworLyoqCisgKiA8Y29kZT5UcmFuc2xpdGVyYXRvcjwvY29kZT4gaXMgYW4gYWJzdHJhY3QgY2xhc3MgdGhhdAorICogdHJhbnNsaXRlcmF0ZXMgdGV4dCBmcm9tIG9uZSBmb3JtYXQgdG8gYW5vdGhlci4gIFRoZSBtb3N0IGNvbW1vbgorICoga2luZCBvZiB0cmFuc2xpdGVyYXRvciBpcyBhIHNjcmlwdCwgb3IgYWxwaGFiZXQsIHRyYW5zbGl0ZXJhdG9yLgorICogRm9yIGV4YW1wbGUsIGEgUnVzc2lhbiB0byBMYXRpbiB0cmFuc2xpdGVyYXRvciBjaGFuZ2VzIFJ1c3NpYW4gdGV4dAorICogd3JpdHRlbiBpbiBDeXJpbGxpYyBjaGFyYWN0ZXJzIHRvIHBob25ldGljYWxseSBlcXVpdmFsZW50IExhdGluCisgKiBjaGFyYWN0ZXJzLiAgSXQgZG9lcyBub3QgPGVtPnRyYW5zbGF0ZTwvZW0+IFJ1c3NpYW4gdG8gRW5nbGlzaCEKKyAqIFRyYW5zbGl0ZXJhdGlvbiwgdW5saWtlIHRyYW5zbGF0aW9uLCBvcGVyYXRlcyBvbiBjaGFyYWN0ZXJzLCB3aXRob3V0CisgKiByZWZlcmVuY2UgdG8gdGhlIG1lYW5pbmdzIG9mIHdvcmRzIGFuZCBzZW50ZW5jZXMuCisgKgorICogPHA+QWx0aG91Z2ggc2NyaXB0IGNvbnZlcnNpb24gaXMgaXRzIG1vc3QgY29tbW9uIHVzZSwgYQorICogdHJhbnNsaXRlcmF0b3IgY2FuIGFjdHVhbGx5IHBlcmZvcm0gYSBtb3JlIGdlbmVyYWwgY2xhc3Mgb2YgdGFza3MuCisgKiBJbiBmYWN0LCA8Y29kZT5UcmFuc2xpdGVyYXRvcjwvY29kZT4gZGVmaW5lcyBhIHZlcnkgZ2VuZXJhbCBBUEkKKyAqIHdoaWNoIHNwZWNpZmllcyBvbmx5IHRoYXQgYSBzZWdtZW50IG9mIHRoZSBpbnB1dCB0ZXh0IGlzIHJlcGxhY2VkCisgKiBieSBuZXcgdGV4dC4gIFRoZSBwYXJ0aWN1bGFycyBvZiB0aGlzIGNvbnZlcnNpb24gYXJlIGRldGVybWluZWQKKyAqIGVudGlyZWx5IGJ5IHN1YmNsYXNzZXMgb2YgPGNvZGU+VHJhbnNsaXRlcmF0b3I8L2NvZGU+LgorICoKKyAqIDxwPjxiPlRyYW5zbGl0ZXJhdG9ycyBhcmUgc3RhdGVsZXNzPC9iPgorICoKKyAqIDxwPjxjb2RlPlRyYW5zbGl0ZXJhdG9yPC9jb2RlPiBvYmplY3RzIGFyZSA8ZW0+c3RhdGVsZXNzPC9lbT47IHRoZXkKKyAqIHJldGFpbiBubyBpbmZvcm1hdGlvbiBiZXR3ZWVuIGNhbGxzIHRvCisgKiA8Y29kZT50cmFuc2xpdGVyYXRlKCk8L2NvZGU+LiAgQXMgYSByZXN1bHQsIHRocmVhZHMgbWF5IHNoYXJlCisgKiB0cmFuc2xpdGVyYXRvcnMgd2l0aG91dCBzeW5jaHJvbml6aW5nIHRoZW0uICBUaGlzIG1pZ2h0IHNlZW0gdG8KKyAqIGxpbWl0IHRoZSBjb21wbGV4aXR5IG9mIHRoZSB0cmFuc2xpdGVyYXRpb24gb3BlcmF0aW9uLiAgSW4KKyAqIHByYWN0aWNlLCBzdWJjbGFzc2VzIHBlcmZvcm0gY29tcGxleCB0cmFuc2xpdGVyYXRpb25zIGJ5IGRlbGF5aW5nCisgKiB0aGUgcmVwbGFjZW1lbnQgb2YgdGV4dCB1bnRpbCBpdCBpcyBrbm93biB0aGF0IG5vIG90aGVyCisgKiByZXBsYWNlbWVudHMgYXJlIHBvc3NpYmxlLiAgSW4gb3RoZXIgd29yZHMsIGFsdGhvdWdoIHRoZQorICogPGNvZGU+VHJhbnNsaXRlcmF0b3I8L2NvZGU+IG9iamVjdHMgYXJlIHN0YXRlbGVzcywgdGhlIHNvdXJjZSB0ZXh0CisgKiBpdHNlbGYgZW1ib2RpZXMgYWxsIHRoZSBuZWVkZWQgaW5mb3JtYXRpb24sIGFuZCBkZWxheWVkIG9wZXJhdGlvbgorICogYWxsb3dzIGFyYml0cmFyeSBjb21wbGV4aXR5LgorICoKKyAqIDxwPjxiPkJhdGNoIHRyYW5zbGl0ZXJhdGlvbjwvYj4KKyAqCisgKiA8cD5UaGUgc2ltcGxlc3Qgd2F5IHRvIHBlcmZvcm0gdHJhbnNsaXRlcmF0aW9uIGlzIGFsbCBhdCBvbmNlLCBvbiBhCisgKiBzdHJpbmcgb2YgZXhpc3RpbmcgdGV4dC4gIFRoaXMgaXMgcmVmZXJyZWQgdG8gYXMgPGVtPmJhdGNoPC9lbT4KKyAqIHRyYW5zbGl0ZXJhdGlvbi4gIEZvciBleGFtcGxlLCBnaXZlbiBhIHN0cmluZyA8Y29kZT5pbnB1dDwvY29kZT4KKyAqIGFuZCBhIHRyYW5zbGl0ZXJhdG9yIDxjb2RlPnQ8L2NvZGU+LCB0aGUgY2FsbAorICoKKyAqIDxibG9ja3F1b3RlPjxjb2RlPlN0cmluZyByZXN1bHQgPSB0LnRyYW5zbGl0ZXJhdGUoaW5wdXQpOworICogPC9jb2RlPjwvYmxvY2txdW90ZT4KKyAqCisgKiB3aWxsIHRyYW5zbGl0ZXJhdGUgaXQgYW5kIHJldHVybiB0aGUgcmVzdWx0LiAgT3RoZXIgbWV0aG9kcyBhbGxvdworICogdGhlIGNsaWVudCB0byBzcGVjaWZ5IGEgc3Vic3RyaW5nIHRvIGJlIHRyYW5zbGl0ZXJhdGVkIGFuZCB0byB1c2UKKyAqIHtAbGluayBSZXBsYWNlYWJsZX0gb2JqZWN0cyBpbnN0ZWFkIG9mIHN0cmluZ3MsIGluIG9yZGVyIHRvCisgKiBwcmVzZXJ2ZSBvdXQtb2YtYmFuZCBpbmZvcm1hdGlvbiAoc3VjaCBhcyB0ZXh0IHN0eWxlcykuCisgKgorICogPHA+PGI+S2V5Ym9hcmQgdHJhbnNsaXRlcmF0aW9uPC9iPgorICoKKyAqIDxwPlNvbWV3aGF0IG1vcmUgaW52b2x2ZWQgaXMgPGVtPmtleWJvYXJkPC9lbT4sIG9yIGluY3JlbWVudGFsCisgKiB0cmFuc2xpdGVyYXRpb24uICBUaGlzIGlzIHRoZSB0cmFuc2xpdGVyYXRpb24gb2YgdGV4dCB0aGF0IGlzCisgKiBhcnJpdmluZyBmcm9tIHNvbWUgc291cmNlICh0eXBpY2FsbHkgdGhlIHVzZXIncyBrZXlib2FyZCkgb25lCisgKiBjaGFyYWN0ZXIgYXQgYSB0aW1lLCBvciBpbiBzb21lIG90aGVyIHBpZWNlbWVhbCBmYXNoaW9uLgorICoKKyAqIDxwPkluIGtleWJvYXJkIHRyYW5zbGl0ZXJhdGlvbiwgYSA8Y29kZT5SZXBsYWNlYWJsZTwvY29kZT4gYnVmZmVyCisgKiBzdG9yZXMgdGhlIHRleHQuICBBcyB0ZXh0IGlzIGluc2VydGVkLCBhcyBtdWNoIGFzIHBvc3NpYmxlIGlzCisgKiB0cmFuc2xpdGVyYXRlZCBvbiB0aGUgZmx5LiAgVGhpcyBtZWFucyBhIEdVSSB0aGF0IGRpc3BsYXlzIHRoZQorICogY29udGVudHMgb2YgdGhlIGJ1ZmZlciBtYXkgc2hvdyB0ZXh0IGJlaW5nIG1vZGlmaWVkIGFzIGVhY2ggbmV3CisgKiBjaGFyYWN0ZXIgYXJyaXZlcy4KKyAqCisgKiA8cD5Db25zaWRlciB0aGUgc2ltcGxlIDxjb2RlPlJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yPC9jb2RlPjoKKyAqCisgKiA8YmxvY2txdW90ZT48Y29kZT4KKyAqIHRoJmd0O3t0aGV0YX08YnI+CisgKiB0Jmd0O3t0YXV9CisgKiA8L2NvZGU+PC9ibG9ja3F1b3RlPgorICoKKyAqIFdoZW4gdGhlIHVzZXIgdHlwZXMgJ3QnLCBub3RoaW5nIHdpbGwgaGFwcGVuLCBzaW5jZSB0aGUKKyAqIHRyYW5zbGl0ZXJhdG9yIGlzIHdhaXRpbmcgdG8gc2VlIGlmIHRoZSBuZXh0IGNoYXJhY3RlciBpcyAnaCcuICBUbworICogcmVtZWR5IHRoaXMsIHdlIGludHJvZHVjZSB0aGUgbm90aW9uIG9mIGEgY3Vyc29yLCBtYXJrZWQgYnkgYSAnfCcKKyAqIGluIHRoZSBvdXRwdXQgc3RyaW5nOgorICoKKyAqIDxibG9ja3F1b3RlPjxjb2RlPgorICogdCZndDt8e3RhdX08YnI+CisgKiB7dGF1fWgmZ3Q7e3RoZXRhfQorICogPC9jb2RlPjwvYmxvY2txdW90ZT4KKyAqCisgKiBOb3cgd2hlbiB0aGUgdXNlciB0eXBlcyAndCcsIHRhdSBhcHBlYXJzLCBhbmQgaWYgdGhlIG5leHQgY2hhcmFjdGVyCisgKiBpcyAnaCcsIHRoZSB0YXUgY2hhbmdlcyB0byBhIHRoZXRhLiAgVGhpcyBpcyBhY2NvbXBsaXNoZWQgYnkKKyAqIG1haW50YWluaW5nIGEgY3Vyc29yIHBvc2l0aW9uIChpbmRlcGVuZGVudCBvZiB0aGUgaW5zZXJ0aW9uIHBvaW50LAorICogYW5kIGludmlzaWJsZSBpbiB0aGUgR1VJKSBhY3Jvc3MgY2FsbHMgdG8KKyAqIDxjb2RlPnRyYW5zbGl0ZXJhdGUoKTwvY29kZT4uICBUeXBpY2FsbHksIHRoZSBjdXJzb3Igd2lsbAorICogYmUgY29pbmNpZGVudCB3aXRoIHRoZSBpbnNlcnRpb24gcG9pbnQsIGJ1dCBpbiBhIGNhc2UgbGlrZSB0aGUgb25lCisgKiBhYm92ZSwgaXQgd2lsbCBwcmVjZWRlIHRoZSBpbnNlcnRpb24gcG9pbnQuCisgKgorICogPHA+S2V5Ym9hcmQgdHJhbnNsaXRlcmF0aW9uIG1ldGhvZHMgbWFpbnRhaW4gYSBzZXQgb2YgdGhyZWUgaW5kaWNlcworICogdGhhdCBhcmUgdXBkYXRlZCB3aXRoIGVhY2ggY2FsbCB0bworICogPGNvZGU+dHJhbnNsaXRlcmF0ZSgpPC9jb2RlPiwgaW5jbHVkaW5nIHRoZSBjdXJzb3IsIHN0YXJ0LAorICogYW5kIGxpbWl0LiAgVGhlc2UgaW5kaWNlcyBhcmUgY2hhbmdlZCBieSB0aGUgbWV0aG9kLCBhbmQgdGhleSBhcmUKKyAqIHBhc3NlZCBpbiBhbmQgb3V0IHZpYSBhIFBvc2l0aW9uIG9iamVjdC4gVGhlIDxjb2RlPnN0YXJ0PC9jb2RlPiBpbmRleAorICogbWFya3MgdGhlIGJlZ2lubmluZyBvZiB0aGUgc3Vic3RyaW5nIHRoYXQgdGhlIHRyYW5zbGl0ZXJhdG9yIHdpbGwKKyAqIGxvb2sgYXQuICBJdCBpcyBhZHZhbmNlZCBhcyB0ZXh0IGJlY29tZXMgY29tbWl0dGVkIChidXQgaXQgaXMgbm90CisgKiB0aGUgY29tbWl0dGVkIGluZGV4OyB0aGF0J3MgdGhlIDxjb2RlPmN1cnNvcjwvY29kZT4pLiAgVGhlCisgKiA8Y29kZT5jdXJzb3I8L2NvZGU+IGluZGV4LCBkZXNjcmliZWQgYWJvdmUsIG1hcmtzIHRoZSBwb2ludCBhdAorICogd2hpY2ggdGhlIHRyYW5zbGl0ZXJhdG9yIGxhc3Qgc3RvcHBlZCwgZWl0aGVyIGJlY2F1c2UgaXQgcmVhY2hlZAorICogdGhlIGVuZCwgb3IgYmVjYXVzZSBpdCByZXF1aXJlZCBtb3JlIGNoYXJhY3RlcnMgdG8gZGlzYW1iaWd1YXRlCisgKiBiZXR3ZWVuIHBvc3NpYmxlIGlucHV0cy4gIFRoZSA8Y29kZT5jdXJzb3I8L2NvZGU+IGNhbiBhbHNvIGJlCisgKiBleHBsaWNpdGx5IHNldCBieSBydWxlcyBpbiBhIDxjb2RlPlJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yPC9jb2RlPi4KKyAqIEFueSBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgPGNvZGU+Y3Vyc29yPC9jb2RlPiBpbmRleCBhcmUgZnJvemVuOworICogZnV0dXJlIGtleWJvYXJkIHRyYW5zbGl0ZXJhdGlvbiBjYWxscyB3aXRoaW4gdGhpcyBpbnB1dCBzZXF1ZW5jZQorICogd2lsbCBub3QgY2hhbmdlIHRoZW0uICBOZXcgdGV4dCBpcyBpbnNlcnRlZCBhdCB0aGUKKyAqIDxjb2RlPmxpbWl0PC9jb2RlPiBpbmRleCwgd2hpY2ggbWFya3MgdGhlIGVuZCBvZiB0aGUgc3Vic3RyaW5nIHRoYXQKKyAqIHRoZSB0cmFuc2xpdGVyYXRvciBsb29rcyBhdC4KKyAqCisgKiA8cD5CZWNhdXNlIGtleWJvYXJkIHRyYW5zbGl0ZXJhdGlvbiBhc3N1bWVzIHRoYXQgbW9yZSBjaGFyYWN0ZXJzCisgKiBhcmUgdG8gYXJyaXZlLCBpdCBpcyBjb25zZXJ2YXRpdmUgaW4gaXRzIG9wZXJhdGlvbi4gIEl0IG9ubHkKKyAqIHRyYW5zbGl0ZXJhdGVzIHdoZW4gaXQgY2FuIGRvIHNvIHVuYW1iaWd1b3VzbHkuICBPdGhlcndpc2UgaXQgd2FpdHMKKyAqIGZvciBtb3JlIGNoYXJhY3RlcnMgdG8gYXJyaXZlLiAgV2hlbiB0aGUgY2xpZW50IGNvZGUga25vd3MgdGhhdCBubworICogbW9yZSBjaGFyYWN0ZXJzIGFyZSBmb3J0aGNvbWluZywgcGVyaGFwcyBiZWNhdXNlIHRoZSB1c2VyIGhhcworICogcGVyZm9ybWVkIHNvbWUgaW5wdXQgdGVybWluYXRpb24gb3BlcmF0aW9uLCB0aGVuIGl0IHNob3VsZCBjYWxsCisgKiA8Y29kZT5maW5pc2hUcmFuc2xpdGVyYXRpb24oKTwvY29kZT4gdG8gY29tcGxldGUgYW55CisgKiBwZW5kaW5nIHRyYW5zbGl0ZXJhdGlvbnMuCisgKgorICogPHA+PGI+SW52ZXJzZXM8L2I+CisgKgorICogPHA+UGFpcnMgb2YgdHJhbnNsaXRlcmF0b3JzIG1heSBiZSBpbnZlcnNlcyBvZiBvbmUgYW5vdGhlci4gIEZvcgorICogZXhhbXBsZSwgaWYgdHJhbnNsaXRlcmF0b3IgPGI+QTwvYj4gdHJhbnNsaXRlcmF0ZXMgY2hhcmFjdGVycyBieQorICogaW5jcmVtZW50aW5nIHRoZWlyIFVuaWNvZGUgdmFsdWUgKHNvICJhYmMiIC0+ICJkZWYiKSwgYW5kCisgKiB0cmFuc2xpdGVyYXRvciA8Yj5CPC9iPiBkZWNyZW1lbnRzIGNoYXJhY3RlciB2YWx1ZXMsIHRoZW4gPGI+QTwvYj4KKyAqIGlzIGFuIGludmVyc2Ugb2YgPGI+QjwvYj4gYW5kIHZpY2UgdmVyc2EuICBJZiB3ZSBjb21wb3NlIDxiPkE8L2I+CisgKiB3aXRoIDxiPkI8L2I+IGluIGEgY29tcG91bmQgdHJhbnNsaXRlcmF0b3IsIHRoZSByZXN1bHQgaXMgdGhlCisgKiBpbmRlbnRpdHkgdHJhbnNsaXRlcmF0b3IsIHRoYXQgaXMsIGEgdHJhbnNsaXRlcmF0b3IgdGhhdCBkb2VzIG5vdAorICogY2hhbmdlIGl0cyBpbnB1dCB0ZXh0LgorICoKKyAqIFRoZSA8Y29kZT5UcmFuc2xpdGVyYXRvcjwvY29kZT4gbWV0aG9kIDxjb2RlPmdldEludmVyc2UoKTwvY29kZT4KKyAqIHJldHVybnMgYSB0cmFuc2xpdGVyYXRvcidzIGludmVyc2UsIGlmIG9uZSBleGlzdHMsIG9yCisgKiA8Y29kZT5udWxsPC9jb2RlPiBvdGhlcndpc2UuICBIb3dldmVyLCB0aGUgcmVzdWx0IG9mCisgKiA8Y29kZT5nZXRJbnZlcnNlKCk8L2NvZGU+IHVzdWFsbHkgd2lsbCA8ZW0+bm90PC9lbT4gYmUgYSB0cnVlCisgKiBtYXRoZW1hdGljYWwgaW52ZXJzZS4gIFRoaXMgaXMgYmVjYXVzZSB0cnVlIGludmVyc2UgdHJhbnNsaXRlcmF0b3JzCisgKiBhcmUgZGlmZmljdWx0IHRvIGZvcm11bGF0ZS4gIEZvciBleGFtcGxlLCBjb25zaWRlciB0d28KKyAqIHRyYW5zbGl0ZXJhdG9yczogPGI+QUI8L2I+LCB3aGljaCB0cmFuc2xpdGVyYXRlcyB0aGUgY2hhcmFjdGVyICdBJworICogdG8gJ0InLCBhbmQgPGI+QkE8L2I+LCB3aGljaCB0cmFuc2xpdGVyYXRlcyAnQicgdG8gJ0EnLiAgSXQgbWlnaHQKKyAqIHNlZW0gdGhhdCB0aGVzZSBhcmUgZXhhY3QgaW52ZXJzZXMsIHNpbmNlCisgKgorICogPGJsb2NrcXVvdGU+IkEiIHggPGI+QUI8L2I+IC0+ICJCIjxicj4KKyAqICJCIiB4IDxiPkJBPC9iPiAtPiAiQSI8L2Jsb2NrcXVvdGU+CisgKgorICogd2hlcmUgJ3gnIHJlcHJlc2VudHMgdHJhbnNsaXRlcmF0aW9uLiAgSG93ZXZlciwKKyAqCisgKiA8YmxvY2txdW90ZT4iQUJDRCIgeCA8Yj5BQjwvYj4gLT4gIkJCQ0QiPGJyPgorICogIkJCQ0QiIHggPGI+QkE8L2I+IC0+ICJBQUNEIjwvYmxvY2txdW90ZT4KKyAqCisgKiBzbyA8Yj5BQjwvYj4gY29tcG9zZWQgd2l0aCA8Yj5CQTwvYj4gaXMgbm90IHRoZQorICogaWRlbnRpdHkuIE5vbmV0aGVsZXNzLCA8Yj5CQTwvYj4gbWF5IGJlIHVzZWZ1bGx5IGNvbnNpZGVyZWQgdG8gYmUKKyAqIDxiPkFCPC9iPidzIGludmVyc2UsIGFuZCBpdCBpcyBvbiB0aGlzIGJhc2lzIHRoYXQKKyAqIDxiPkFCPC9iPjxjb2RlPi5nZXRJbnZlcnNlKCk8L2NvZGU+IGNvdWxkIGxlZ2l0aW1hdGVseSByZXR1cm4KKyAqIDxiPkJBPC9iPi4KKyAqCisgKiA8cD48Yj5JRHMgYW5kIGRpc3BsYXkgbmFtZXM8L2I+CisgKgorICogPHA+QSB0cmFuc2xpdGVyYXRvciBpcyBkZXNpZ25hdGVkIGJ5IGEgc2hvcnQgaWRlbnRpZmllciBzdHJpbmcgb3IKKyAqIDxlbT5JRDwvZW0+LiAgSURzIGZvbGxvdyB0aGUgZm9ybWF0IDxlbT5zb3VyY2UtZGVzdGluYXRpb248L2VtPiwKKyAqIHdoZXJlIDxlbT5zb3VyY2U8L2VtPiBkZXNjcmliZXMgdGhlIGVudGl0eSBiZWluZyByZXBsYWNlZCwgYW5kCisgKiA8ZW0+ZGVzdGluYXRpb248L2VtPiBkZXNjcmliZXMgdGhlIGVudGl0eSByZXBsYWNpbmcKKyAqIDxlbT5zb3VyY2U8L2VtPi4gIFRoZSBlbnRpdGllcyBtYXkgYmUgdGhlIG5hbWVzIG9mIHNjcmlwdHMsCisgKiBwYXJ0aWN1bGFyIHNlcXVlbmNlcyBvZiBjaGFyYWN0ZXJzLCBvciB3aGF0ZXZlciBlbHNlIGl0IGlzIHRoYXQgdGhlCisgKiB0cmFuc2xpdGVyYXRvciBjb252ZXJ0cyB0byBvciBmcm9tLiAgRm9yIGV4YW1wbGUsIGEgdHJhbnNsaXRlcmF0b3IKKyAqIGZyb20gUnVzc2lhbiB0byBMYXRpbiBtaWdodCBiZSBuYW1lZCAiUnVzc2lhbi1MYXRpbiIuICBBCisgKiB0cmFuc2xpdGVyYXRvciBmcm9tIGtleWJvYXJkIGVzY2FwZSBzZXF1ZW5jZXMgdG8gTGF0aW4tMSBjaGFyYWN0ZXJzCisgKiBtaWdodCBiZSBuYW1lZCAiS2V5Ym9hcmRFc2NhcGUtTGF0aW4xIi4gIEJ5IGNvbnZlbnRpb24sIHN5c3RlbQorICogZW50aXR5IG5hbWVzIGFyZSBpbiBFbmdsaXNoLCB3aXRoIHRoZSBpbml0aWFsIGxldHRlcnMgb2Ygd29yZHMKKyAqIGNhcGl0YWxpemVkOyB1c2VyIGVudGl0eSBuYW1lcyBtYXkgZm9sbG93IGFueSBmb3JtYXQgc28gbG9uZyBhcworICogdGhleSBkbyBub3QgY29udGFpbiBkYXNoZXMuCisgKgorICogPHA+SW4gYWRkaXRpb24gdG8gcHJvZ3JhbW1hdGljIElEcywgdHJhbnNsaXRlcmF0b3Igb2JqZWN0cyBoYXZlCisgKiBkaXNwbGF5IG5hbWVzIGZvciBwcmVzZW50YXRpb24gaW4gdXNlciBpbnRlcmZhY2VzLCByZXR1cm5lZCBieQorICoge0BsaW5rICNnZXREaXNwbGF5TmFtZX0uCisgKgorICogPHA+PGI+RmFjdG9yeSBtZXRob2RzIGFuZCByZWdpc3RyYXRpb248L2I+CisgKgorICogPHA+SW4gZ2VuZXJhbCwgY2xpZW50IGNvZGUgc2hvdWxkIHVzZSB0aGUgZmFjdG9yeSBtZXRob2QKKyAqIDxjb2RlPmdldEluc3RhbmNlKCk8L2NvZGU+IHRvIG9idGFpbiBhbiBpbnN0YW5jZSBvZiBhCisgKiB0cmFuc2xpdGVyYXRvciBnaXZlbiBpdHMgSUQuICBWYWxpZCBJRHMgbWF5IGJlIGVudW1lcmF0ZWQgdXNpbmcKKyAqIDxjb2RlPmdldEF2YWlsYWJsZUlEcygpPC9jb2RlPi4gIFNpbmNlIHRyYW5zbGl0ZXJhdG9ycyBhcmUKKyAqIHN0YXRlbGVzcywgbXVsdGlwbGUgY2FsbHMgdG8gPGNvZGU+Z2V0SW5zdGFuY2UoKTwvY29kZT4gd2l0aCB0aGUKKyAqIHNhbWUgSUQgd2lsbCByZXR1cm4gdGhlIHNhbWUgb2JqZWN0LgorICoKKyAqIDxwPkluIGFkZGl0aW9uIHRvIHRoZSBzeXN0ZW0gdHJhbnNsaXRlcmF0b3JzIHJlZ2lzdGVyZWQgYXQgc3RhcnR1cCwKKyAqIHVzZXIgdHJhbnNsaXRlcmF0b3JzIG1heSBiZSByZWdpc3RlcmVkIGJ5IGNhbGxpbmcKKyAqIDxjb2RlPnJlZ2lzdGVySW5zdGFuY2UoKTwvY29kZT4gYXQgcnVuIHRpbWUuICBUbyByZWdpc3RlciBhCisgKiB0cmFuc2xpdGVyYXRvciBzdWJjbGFzcyB3aXRob3V0IGluc3RhbnRpYXRpbmcgaXQgKHVudGlsIGl0IGlzCisgKiBuZWVkZWQpLCB1c2VycyBtYXkgY2FsbCA8Y29kZT5yZWdpc3RlckNsYXNzKCk8L2NvZGU+LgorICoKKyAqIDxwPjxiPkNvbXBvc2VkIHRyYW5zbGl0ZXJhdG9yczwvYj4KKyAqCisgKiA8cD5JbiBhZGRpdGlvbiB0byBidWlsdC1pbiBzeXN0ZW0gdHJhbnNsaXRlcmF0b3JzIGxpa2UKKyAqICJMYXRpbi1HcmVlayIsIHRoZXJlIGFyZSBhbHNvIGJ1aWx0LWluIDxlbT5jb21wb3NlZDwvZW0+CisgKiB0cmFuc2xpdGVyYXRvcnMuICBUaGVzZSBhcmUgaW1wbGVtZW50ZWQgYnkgY29tcG9zaW5nIHR3byBvciBtb3JlCisgKiBjb21wb25lbnQgdHJhbnNsaXRlcmF0b3JzLiAgRm9yIGV4YW1wbGUsIGlmIHdlIGhhdmUgc2NyaXB0cyAiQSIsCisgKiAiQiIsICJDIiwgYW5kICJEIiwgYW5kIHdlIHdhbnQgdG8gdHJhbnNsaXRlcmF0ZSBiZXR3ZWVuIGFsbCBwYWlycworICogb2YgdGhlbSwgdGhlbiB3ZSBuZWVkIHRvIHdyaXRlIDEyIHRyYW5zbGl0ZXJhdG9yczogIkEtQiIsICJBLUMiLAorICogIkEtRCIsICJCLUEiLC4uLiwgIkQtQSIsICJELUIiLCAiRC1DIi4gIElmIGl0IGlzIHBvc3NpYmxlIHRvCisgKiBjb252ZXJ0IGFsbCBzY3JpcHRzIHRvIGFuIGludGVybWVkaWF0ZSBzY3JpcHQgIk0iLCB0aGVuIGluc3RlYWQgb2YKKyAqIHdyaXRpbmcgMTIgcnVsZSBzZXRzLCB3ZSBvbmx5IG5lZWQgdG8gd3JpdGUgODogIkF+TSIsICJCfk0iLCAiQ35NIiwKKyAqICJEfk0iLCAiTX5BIiwgIk1+QiIsICJNfkMiLCAiTX5EIi4gIChUaGlzIG1pZ2h0IG5vdCBzZWVtIGxpa2UgYSBiaWcKKyAqIHdpbiwgYnV0IGl0J3MgcmVhbGx5IDI8ZW0+bjwvZW0+IHZzLiA8ZW0+bjwvZW0+PHN1cD4yPC9zdXA+IC0KKyAqIDxlbT5uPC9lbT4sIHNvIGFzIDxlbT5uPC9lbT4gZ2V0cyBsYXJnZXIgdGhlIGdhaW4gYmVjb21lcworICogc2lnbmlmaWNhbnQuICBXaXRoIDkgc2NyaXB0cywgaXQncyAxOCB2cy4gNzIgcnVsZSBzZXRzLCBhIGJpZworICogZGlmZmVyZW5jZS4pICBOb3RlIHRoZSB1c2Ugb2YgIn4iIHJhdGhlciB0aGFuICItIiBmb3IgdGhlIHNjcmlwdAorICogc2VwYXJhdG9yIGhlcmU7IHRoaXMgaW5kaWNhdGVzIHRoYXQgdGhlIGdpdmVuIHRyYW5zbGl0ZXJhdG9yIGlzCisgKiBpbnRlbmRlZCB0byBiZSBjb21wb3NlZCB3aXRoIG90aGVycywgcmF0aGVyIHRoYW4gYmUgdXNlZCBhcyBpcy4KKyAqCisgKiA8cD5Db21wb3NlZCB0cmFuc2xpdGVyYXRvcnMgY2FuIGJlIGluc3RhbnRpYXRlZCBhcyB1c3VhbC4gIEZvcgorICogZXhhbXBsZSwgdGhlIHN5c3RlbSB0cmFuc2xpdGVyYXRvciAiRGV2YW5hZ2FyaS1HdWphcmF0aSIgaXMgYQorICogY29tcG9zZWQgdHJhbnNsaXRlcmF0b3IgYnVpbHQgaW50ZXJuYWxseSBhcworICogIkRldmFuYWdhcml+SW50ZXJJbmRpYztJbnRlckluZGljfkd1amFyYXRpIi4gIFdoZW4gdGhpcworICogdHJhbnNsaXRlcmF0b3IgaXMgaW5zdGFudGlhdGVkLCBpdCBhcHBlYXJzIGV4dGVybmFsbHkgdG8gYmUgYQorICogc3RhbmRhcmQgdHJhbnNsaXRlcmF0b3IgKGUuZy4sIGdldElEKCkgcmV0dXJucworICogIkRldmFuYWdhcmktR3VqYXJhdGkiKS4KKyAqCisgKiA8cD48Yj5TdWJjbGFzc2luZzwvYj4KKyAqCisgKiA8cD5TdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IHRoZSBhYnN0cmFjdCBtZXRob2QKKyAqIDxjb2RlPmhhbmRsZVRyYW5zbGl0ZXJhdGUoKTwvY29kZT4uICA8cD5TdWJjbGFzc2VzIHNob3VsZCBvdmVycmlkZQorICogdGhlIDxjb2RlPnRyYW5zbGl0ZXJhdGUoKTwvY29kZT4gbWV0aG9kIHRha2luZyBhCisgKiA8Y29kZT5SZXBsYWNlYWJsZTwvY29kZT4gYW5kIHRoZSA8Y29kZT50cmFuc2xpdGVyYXRlKCk8L2NvZGU+CisgKiBtZXRob2QgdGFraW5nIGEgPGNvZGU+U3RyaW5nPC9jb2RlPiBhbmQgPGNvZGU+U3RyaW5nQnVmZmVyPC9jb2RlPgorICogaWYgdGhlIHBlcmZvcm1hbmNlIG9mIHRoZXNlIG1ldGhvZHMgY2FuIGJlIGltcHJvdmVkIG92ZXIgdGhlCisgKiBwZXJmb3JtYW5jZSBvYnRhaW5lZCBieSB0aGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbnMgaW4gdGhpcyBjbGFzcy4KKyAqCisgKiA8cD5Db3B5cmlnaHQgJmNvcHk7IElCTSBDb3Jwb3JhdGlvbiAxOTk5LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAdmVyc2lvbiAkUkNTZmlsZTogVHJhbnNsaXRlcmF0b3IuamF2YSx2ICQgJFJldmlzaW9uOiAxLjI3ICQgJERhdGU6IDIwMDEvMDMvMzAgMjI6NTA6MDggJAorICovCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgVHJhbnNsaXRlcmF0b3IgeworICAgIC8qKgorICAgICAqIERpcmVjdGlvbiBjb25zdGFudCBpbmRpY2F0aW5nIHRoZSBmb3J3YXJkIGRpcmVjdGlvbiBpbiBhIHRyYW5zbGl0ZXJhdG9yLAorICAgICAqIGUuZy4sIHRoZSBmb3J3YXJkIHJ1bGVzIG9mIGEgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IuICBBbiAiQS1CIgorICAgICAqIHRyYW5zbGl0ZXJhdG9yIHRyYW5zbGl0ZXJhdGVzIEEgdG8gQiB3aGVuIG9wZXJhdGluZyBpbiB0aGUgZm9yd2FyZAorICAgICAqIGRpcmVjdGlvbiwgYW5kIEIgdG8gQSB3aGVuIG9wZXJhdGluZyBpbiB0aGUgcmV2ZXJzZSBkaXJlY3Rpb24uCisgICAgICogQHNlZSBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvcgorICAgICAqIEBzZWUgQ29tcG91bmRUcmFuc2xpdGVyYXRvcgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPUldBUkQgPSAwOworCisgICAgLyoqCisgICAgICogRGlyZWN0aW9uIGNvbnN0YW50IGluZGljYXRpbmcgdGhlIHJldmVyc2UgZGlyZWN0aW9uIGluIGEgdHJhbnNsaXRlcmF0b3IsCisgICAgICogZS5nLiwgdGhlIHJldmVyc2UgcnVsZXMgb2YgYSBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvci4gIEFuICJBLUIiCisgICAgICogdHJhbnNsaXRlcmF0b3IgdHJhbnNsaXRlcmF0ZXMgQSB0byBCIHdoZW4gb3BlcmF0aW5nIGluIHRoZSBmb3J3YXJkCisgICAgICogZGlyZWN0aW9uLCBhbmQgQiB0byBBIHdoZW4gb3BlcmF0aW5nIGluIHRoZSByZXZlcnNlIGRpcmVjdGlvbi4KKyAgICAgKiBAc2VlIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yCisgICAgICogQHNlZSBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUkVWRVJTRSA9IDE7ICAgIAorCisgICAgLyoqCisgICAgICogUG9zaXRpb24gc3RydWN0dXJlIGZvciBpbmNyZW1lbnRhbCB0cmFuc2xpdGVyYXRpb24uICBUaGlzIGRhdGEKKyAgICAgKiBzdHJ1Y3R1cmUgZGVmaW5lcyB0d28gc3Vic3RyaW5ncyBvZiB0aGUgdGV4dCBiZWluZworICAgICAqIHRyYW5zbGl0ZXJhdGVkLiAgVGhlIGZpcnN0IHJlZ2lvbiwgW2NvbnRleHRTdGFydCwKKyAgICAgKiBjb250ZXh0TGltaXQpLCBkZWZpbmVzIHdoYXQgY2hhcmFjdGVycyB0aGUgdHJhbnNsaXRlcmF0b3Igd2lsbAorICAgICAqIHJlYWQgYXMgY29udGV4dC4gIFRoZSBzZWNvbmQgcmVnaW9uLCBbc3RhcnQsIGxpbWl0KSwgZGVmaW5lcworICAgICAqIHdoYXQgY2hhcmFjdGVycyB3aWxsIGFjdHVhbGx5IGJlIHRyYW5zbGl0ZXJhdGVkLiAgVGhlIHNlY29uZAorICAgICAqIHJlZ2lvbiBzaG91bGQgYmUgYSBzdWJzZXQgb2YgdGhlIGZpcnN0LgorICAgICAqCisgICAgICogPHA+QWZ0ZXIgYSB0cmFuc2xpdGVyYXRpb24gb3BlcmF0aW9uLCBzb21lIG9mIHRoZSBpbmRpY2VzIGluIHRoaXMKKyAgICAgKiBzdHJ1Y3R1cmUgd2lsbCBiZSBtb2RpZmllZC4gIFNlZSB0aGUgZmllbGQgZGVzY3JpcHRpb25zIGZvcgorICAgICAqIGRldGFpbHMuCisgICAgICoKKyAgICAgKiA8cD5jb250ZXh0U3RhcnQgPD0gc3RhcnQgPD0gbGltaXQgPD0gY29udGV4dExpbWl0CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBQb3NpdGlvbiB7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEJlZ2lubmluZyBpbmRleCwgaW5jbHVzaXZlLCBvZiB0aGUgY29udGV4dCB0byBiZSBjb25zaWRlcmVkIGZvcgorICAgICAgICAgKiBhIHRyYW5zbGl0ZXJhdGlvbiBvcGVyYXRpb24uICBUaGUgdHJhbnNsaXRlcmF0b3Igd2lsbCBpZ25vcmUKKyAgICAgICAgICogYW55dGhpbmcgYmVmb3JlIHRoaXMgaW5kZXguICBJTlBVVC9PVVRQVVQgcGFyYW1ldGVyOiBUaGlzIHBhcmFtZXRlcgorICAgICAgICAgKiBpcyB1cGRhdGVkIGJ5IGEgdHJhbnNsaXRlcmF0aW9uIG9wZXJhdGlvbiB0byByZWZsZWN0IHRoZSBtYXhpbXVtCisgICAgICAgICAqIGFtb3VudCBvZiBhbnRlY29udGV4dCBuZWVkZWQgYnkgYSB0cmFuc2xpdGVyYXRvci4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBpbnQgY29udGV4dFN0YXJ0OworCisgICAgICAgIC8qKgorICAgICAgICAgKiBFbmRpbmcgaW5kZXgsIGV4Y2x1c2l2ZSwgb2YgdGhlIGNvbnRleHQgdG8gYmUgY29uc2lkZXJlZCBmb3IgYQorICAgICAgICAgKiB0cmFuc2xpdGVyYXRpb24gb3BlcmF0aW9uLiAgVGhlIHRyYW5zbGl0ZXJhdG9yIHdpbGwgaWdub3JlCisgICAgICAgICAqIGFueXRoaW5nIGF0IG9yIGFmdGVyIHRoaXMgaW5kZXguICBJTlBVVC9PVVRQVVQgcGFyYW1ldGVyOiBUaGlzCisgICAgICAgICAqIHBhcmFtZXRlciBpcyB1cGRhdGVkIHRvIHJlZmxlY3QgY2hhbmdlcyBpbiB0aGUgbGVuZ3RoIG9mIHRoZQorICAgICAgICAgKiB0ZXh0LCBidXQgcG9pbnRzIHRvIHRoZSBzYW1lIGxvZ2ljYWwgcG9zaXRpb24gaW4gdGhlIHRleHQuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgaW50IGNvbnRleHRMaW1pdDsKKworICAgICAgICAvKioKKyAgICAgICAgICogQmVnaW5uaW5nIGluZGV4LCBpbmNsdXNpdmUsIG9mIHRoZSB0ZXh0IHRvIGJlIHRyYW5zbGl0ZXJhdGQuCisgICAgICAgICAqIElOUFVUL09VVFBVVCBwYXJhbWV0ZXI6IFRoaXMgcGFyYW1ldGVyIGlzIGFkdmFuY2VkIHBhc3QKKyAgICAgICAgICogY2hhcmFjdGVycyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIHRyYW5zbGl0ZXJhdGVkIGJ5IGEKKyAgICAgICAgICogdHJhbnNsaXRlcmF0aW9uIG9wZXJhdGlvbi4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBpbnQgc3RhcnQ7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEVuZGluZyBpbmRleCwgZXhjbHVzaXZlLCBvZiB0aGUgdGV4dCB0byBiZSB0cmFuc2xpdGVyYXRkLgorICAgICAgICAgKiBJTlBVVC9PVVRQVVQgcGFyYW1ldGVyOiBUaGlzIHBhcmFtZXRlciBpcyB1cGRhdGVkIHRvIHJlZmxlY3QKKyAgICAgICAgICogY2hhbmdlcyBpbiB0aGUgbGVuZ3RoIG9mIHRoZSB0ZXh0LCBidXQgcG9pbnRzIHRvIHRoZSBzYW1lCisgICAgICAgICAqIGxvZ2ljYWwgcG9zaXRpb24gaW4gdGhlIHRleHQuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgaW50IGxpbWl0OworCisgICAgICAgIHB1YmxpYyBQb3NpdGlvbigpIHsKKyAgICAgICAgICAgIHRoaXMoMCwgMCwgMCwgMCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgUG9zaXRpb24oaW50IGNvbnRleHRTdGFydCwgaW50IGNvbnRleHRMaW1pdCwgaW50IHN0YXJ0KSB7CisgICAgICAgICAgICB0aGlzKGNvbnRleHRTdGFydCwgY29udGV4dExpbWl0LCBzdGFydCwgY29udGV4dExpbWl0KTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBQb3NpdGlvbihpbnQgY29udGV4dFN0YXJ0LCBpbnQgY29udGV4dExpbWl0LAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0LCBpbnQgbGltaXQpIHsKKyAgICAgICAgICAgIHRoaXMuY29udGV4dFN0YXJ0ID0gY29udGV4dFN0YXJ0OworICAgICAgICAgICAgdGhpcy5jb250ZXh0TGltaXQgPSBjb250ZXh0TGltaXQ7CisgICAgICAgICAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7CisgICAgICAgICAgICB0aGlzLmxpbWl0ID0gbGltaXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQcm9ncmFtbWF0aWMgbmFtZSwgZS5nLiwgIkxhdGluLUFyYWJpYyIuCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgSUQ7CisKKyAgICAvKiogCisgICAgICogVGhpcyB0cmFuc2xpdGVyYXRvcidzIGZpbHRlci4gIEFueSBjaGFyYWN0ZXIgZm9yIHdoaWNoCisgICAgICogPHR0PmZpbHRlci5jb250YWlucygpPC90dD4gcmV0dXJucyA8dHQ+ZmFsc2U8L3R0PiB3aWxsIG5vdCBiZQorICAgICAqIGFsdGVyZWQgYnkgdGhpcyB0cmFuc2xpdGVyYXRvci4gIElmIDx0dD5maWx0ZXI8L3R0PiBpcworICAgICAqIDx0dD5udWxsPC90dD4gdGhlbiBubyBmaWx0ZXJpbmcgaXMgYXBwbGllZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIFVuaWNvZGVGaWx0ZXIgZmlsdGVyOworCisgICAgcHJpdmF0ZSBpbnQgbWF4aW11bUNvbnRleHRMZW5ndGggPSAwOworCisgICAgLyoqCisgICAgICogQ2FjaGUgb2Ygc3lzdGVtIHRyYW5zbGl0ZXJhdG9ycy4gIEtleXMgYXJlIDxjb2RlPlN0cmluZzwvY29kZT4KKyAgICAgKiBuYW1lcywgdmFsdWVzIGFyZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKyAgICAgKgorICAgICAqIDx1bD48bGk+PGNvZGU+U3RyaW5nPC9jb2RlPiBvYmplY3RzLiAgVGhlc2UgcmVwcmVzZW50CisgICAgICogUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3JzIHRoYXQgaGF2ZSBub3QgYmVlbiBsb2FkZWQgeWV0LCBvcgorICAgICAqIGFsaWFzZXMuICBUaGUgZmlyc3QgY2hhcmFjdGVyIGRldGVybWluZXMgdGhlIHR5cGU6ICdmJworICAgICAqIGluZGljYXRlcyBhIEZPUldBUkQgUkJULCB3aXRoIHRoZSByZXN0IG9mIHRoZSBzdHJpbmcgZ2l2aW5nIHRoZQorICAgICAqIHJlc291cmNlIG5hbWUgYW5kIGVuY29kaW5nLCBzZXBhcmF0ZWQgYnkgYSBjb2xvbi4gICdyJyBpcworICAgICAqIHNpbWlsYXIsIGJ1dCBpbmRpY2F0ZXMgYSBSRVZFUlNFIFJCVC4gICdhJyBpbmRpY2F0ZXMgYW4gYWxpYXMsCisgICAgICogd2l0aCB0aGUgcmVzdCBvZiB0aGUgc3RyaW5nIGdpdmluZyB0aGUgSUQgdG8gY3JlYXRlLgorICAgICAqCisgICAgICogPGxpPjxjb2RlPkNsYXNzPC9jb2RlPiBvYmplY3RzLiAgU3VjaCBvYmplY3RzIG11c3QgcmVwcmVzZW50CisgICAgICogc3ViY2xhc3NlcyBvZiA8Y29kZT5UcmFuc2xpdGVyYXRvcjwvY29kZT4sIGFuZCBtdXN0IHNhdGlzZnkgdGhlCisgICAgICogY29uc3RyYWludHMgZGVzY3JpYmVkIGluIDxjb2RlPnJlZ2lzdGVyQ2xhc3MoKTwvY29kZT4uCisgICAgICoKKyAgICAgKiA8bGk+PGNvZGU+UnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IuRGF0YTwvY29kZT4gb2JqZWN0cy4gIFRoZXNlCisgICAgICogYXJlIGJ1aWx0IGluLW1lbW9yeSB0cmFuc2xpdGVyYXRvciBkYXRhIGNvcmVzIHRoYXQgYXJlIHdyYXBwZWQKKyAgICAgKiB0aGlubHkgdG8gY3JlYXRlIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yIG9iamVjdHMuICBXaGVuIGFuIFJCVAorICAgICAqIGlzIGNyZWF0ZWQsIGl0cyBEYXRhIGNvcmUgaXMgY2FjaGVkIGFuZCBzaGFyZWQgYW1vbmcgZnV0dXJlCisgICAgICogaW5zdGFuY2VzIG9mIHRoZSBzYW1lIElELgorICAgICAqIDwvdWw+CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgSGFzaHRhYmxlIGNhY2hlOworCisgICAgLyoqCisgICAgICogSWRlbnRpY2FsIHRvICdjYWNoZScgYnV0IGNvbnRhaW5zIGludGVybmFsIHRyYW5zbGl0ZXJhdG9ycy4KKyAgICAgKiBUaGVzZSBhcmUgbm90IGVudW1lcmF0ZWQgYnkgZ2V0QXZhaWxhYmxlSURzKCkuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgSGFzaHRhYmxlIGludGVybmFsQ2FjaGU7CisKKyAgICBwcml2YXRlIHN0YXRpYyBIYXNodGFibGUgZGlzcGxheU5hbWVDYWNoZTsKKworICAgIC8qKgorICAgICAqIFByZWZpeCBmb3IgcmVzb3VyY2UgYnVuZGxlIGtleSBmb3IgdGhlIGRpc3BsYXkgbmFtZSBmb3IgYQorICAgICAqIHRyYW5zbGl0ZXJhdG9yLiAgVGhlIElEIGlzIGFwcGVuZGVkIHRvIHRoaXMgdG8gZm9ybSB0aGUga2V5LgorICAgICAqIFRoZSByZXNvdXJjZSBidW5kbGUgdmFsdWUgc2hvdWxkIGJlIGEgU3RyaW5nLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBSQl9ESVNQTEFZX05BTUVfUFJFRklYID0gIiVUcmFuc2xpdCUlIjsKKworICAgIC8qKgorICAgICAqIFByZWZpeCBmb3IgcmVzb3VyY2UgYnVuZGxlIGtleSBmb3IgdGhlIGRpc3BsYXkgbmFtZSBmb3IgYQorICAgICAqIHRyYW5zbGl0ZXJhdG9yIFNDUklQVC4gIFRoZSBJRCBpcyBhcHBlbmRlZCB0byB0aGlzIHRvIGZvcm0gdGhlIGtleS4KKyAgICAgKiBUaGUgcmVzb3VyY2UgYnVuZGxlIHZhbHVlIHNob3VsZCBiZSBhIFN0cmluZy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkJfU0NSSVBUX0RJU1BMQVlfTkFNRV9QUkVGSVggPSAiJVRyYW5zbGl0JSI7CisKKyAgICAvKioKKyAgICAgKiBSZXNvdXJjZSBidW5kbGUga2V5IGZvciBkaXNwbGF5IG5hbWUgcGF0dGVybi4KKyAgICAgKiBUaGUgcmVzb3VyY2UgYnVuZGxlIHZhbHVlIHNob3VsZCBiZSBhIFN0cmluZyBmb3JtaW5nIGEKKyAgICAgKiBNZXNzYWdlRm9ybWF0IHBhdHRlcm4sIGUuZy46CisgICAgICogInswLGNob2ljZSwwI3wxI3sxfSBUcmFuc2xpdGVyYXRvcnwyI3sxfSB0byB7Mn0gVHJhbnNsaXRlcmF0b3J9Ii4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkJfRElTUExBWV9OQU1FX1BBVFRFUk4gPSAiVHJhbnNsaXRlcmF0b3JOYW1lUGF0dGVybiI7CisKKyAgICAvKioKKyAgICAgKiBSZXNvdXJjZSBidW5kbGUgY29udGFpbmluZyBkaXNwbGF5IG5hbWUga2V5cyBhbmQgdGhlCisgICAgICogUkJfUlVMRV9CQVNFRF9JRFMgYXJyYXkuCisgICAgICoKKyAgICAgKiA8cD5JZiB3ZSBldmVyIGludGVncmF0ZSB0aGlzIHdpdGggdGhlIFN1biBKREssIHRoZSByZXNvdXJjZSBidW5kbGUKKyAgICAgKiByb290IHdpbGwgY2hhbmdlIHRvIGphdmEudGV4dC5yZXNvdXJjZXMuTG9jYWxlRWxlbWVudHMKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkJfTE9DQUxFX0VMRU1FTlRTID0KKyAgICAgICAgImNvbS5pYm0udGV4dC5yZXNvdXJjZXMuTG9jYWxlRWxlbWVudHMiOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICJcdTAwQTkgSUJNIENvcnBvcmF0aW9uIDE5OTkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIC8qKgorICAgICAqIERlZmF1bHQgY29uc3RydWN0b3IuCisgICAgICogQHBhcmFtIElEIHRoZSBzdHJpbmcgaWRlbnRpZmllciBmb3IgdGhpcyB0cmFuc2xpdGVyYXRvcgorICAgICAqIEBwYXJhbSBmaWx0ZXIgdGhlIGZpbHRlci4gIEFueSBjaGFyYWN0ZXIgZm9yIHdoaWNoCisgICAgICogPHR0PmZpbHRlci5jb250YWlucygpPC90dD4gcmV0dXJucyA8dHQ+ZmFsc2U8L3R0PiB3aWxsIG5vdCBiZQorICAgICAqIGFsdGVyZWQgYnkgdGhpcyB0cmFuc2xpdGVyYXRvci4gIElmIDx0dD5maWx0ZXI8L3R0PiBpcworICAgICAqIDx0dD5udWxsPC90dD4gdGhlbiBubyBmaWx0ZXJpbmcgaXMgYXBwbGllZC4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgVHJhbnNsaXRlcmF0b3IoU3RyaW5nIElELCBVbmljb2RlRmlsdGVyIGZpbHRlcikgeworICAgICAgICBpZiAoSUQgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5JRCA9IElEOworICAgICAgICB0aGlzLmZpbHRlciA9IGZpbHRlcjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUcmFuc2xpdGVyYXRlcyBhIHNlZ21lbnQgb2YgYSBzdHJpbmcsIHdpdGggb3B0aW9uYWwgZmlsdGVyaW5nLgorICAgICAqCisgICAgICogQHBhcmFtIHRleHQgdGhlIHN0cmluZyB0byBiZSB0cmFuc2xpdGVyYXRlZAorICAgICAqIEBwYXJhbSBzdGFydCB0aGUgYmVnaW5uaW5nIGluZGV4LCBpbmNsdXNpdmU7IDxjb2RlPjAgPD0gc3RhcnQKKyAgICAgKiA8PSBsaW1pdDwvY29kZT4uCisgICAgICogQHBhcmFtIGxpbWl0IHRoZSBlbmRpbmcgaW5kZXgsIGV4Y2x1c2l2ZTsgPGNvZGU+c3RhcnQgPD0gbGltaXQKKyAgICAgKiA8PSB0ZXh0Lmxlbmd0aCgpPC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gZmlsdGVyIHRoZSBmaWx0ZXIuICBBbnkgY2hhcmFjdGVyIGZvciB3aGljaAorICAgICAqIDx0dD5maWx0ZXIuY29udGFpbnMoKTwvdHQ+IHJldHVybnMgPHR0PmZhbHNlPC90dD4gd2lsbCBub3QgYmUKKyAgICAgKiBhbHRlcmVkIGJ5IHRoaXMgdHJhbnNsaXRlcmF0b3IuICBJZiA8dHQ+ZmlsdGVyPC90dD4gaXMKKyAgICAgKiA8dHQ+bnVsbDwvdHQ+IHRoZW4gbm8gZmlsdGVyaW5nIGlzIGFwcGxpZWQuCisgICAgICogQHJldHVybiBUaGUgbmV3IGxpbWl0IGluZGV4LiAgVGhlIHRleHQgcHJldmlvdXNseSBvY2N1cHlpbmcgPGNvZGU+W3N0YXJ0LAorICAgICAqIGxpbWl0KTwvY29kZT4gaGFzIGJlZW4gdHJhbnNsaXRlcmF0ZWQsIHBvc3NpYmx5IHRvIGEgc3RyaW5nIG9mIGEgZGlmZmVyZW50CisgICAgICogbGVuZ3RoLCBhdCA8Y29kZT5bc3RhcnQsIDwvY29kZT48ZW0+bmV3LWxpbWl0PC9lbT48Y29kZT4pPC9jb2RlPiwgd2hlcmUKKyAgICAgKiA8ZW0+bmV3LWxpbWl0PC9lbT4gaXMgdGhlIHJldHVybiB2YWx1ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgaW50IHRyYW5zbGl0ZXJhdGUoUmVwbGFjZWFibGUgdGV4dCwgaW50IHN0YXJ0LCBpbnQgbGltaXQpIHsKKyAgICAgICAgUG9zaXRpb24gcG9zID0gbmV3IFBvc2l0aW9uKHN0YXJ0LCBsaW1pdCwgc3RhcnQpOworICAgICAgICBoYW5kbGVUcmFuc2xpdGVyYXRlKHRleHQsIHBvcywgZmFsc2UpOworICAgICAgICByZXR1cm4gcG9zLmNvbnRleHRMaW1pdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUcmFuc2xpdGVyYXRlcyBhbiBlbnRpcmUgc3RyaW5nIGluIHBsYWNlLiBDb252ZW5pZW5jZSBtZXRob2QuCisgICAgICogQHBhcmFtIHRleHQgdGhlIHN0cmluZyB0byBiZSB0cmFuc2xpdGVyYXRlZAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHRyYW5zbGl0ZXJhdGUoUmVwbGFjZWFibGUgdGV4dCkgeworICAgICAgICB0cmFuc2xpdGVyYXRlKHRleHQsIDAsIHRleHQubGVuZ3RoKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRyYW5zbGl0ZXJhdGUgYW4gZW50aXJlIHN0cmluZyBhbmQgcmV0dXJucyB0aGUgcmVzdWx0LiBDb252ZW5pZW5jZSBtZXRob2QuCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGV4dCB0aGUgc3RyaW5nIHRvIGJlIHRyYW5zbGl0ZXJhdGVkCisgICAgICogQHJldHVybiBUaGUgdHJhbnNsaXRlcmF0ZWQgdGV4dAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgdHJhbnNsaXRlcmF0ZShTdHJpbmcgdGV4dCkgeworICAgICAgICBSZXBsYWNlYWJsZVN0cmluZyByZXN1bHQgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcodGV4dCk7CisgICAgICAgIHRyYW5zbGl0ZXJhdGUocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRyYW5zbGl0ZXJhdGVzIHRoZSBwb3J0aW9uIG9mIHRoZSB0ZXh0IGJ1ZmZlciB0aGF0IGNhbiBiZQorICAgICAqIHRyYW5zbGl0ZXJhdGVkIHVuYW1iaWd1b3NseSBhZnRlciBuZXcgdGV4dCBoYXMgYmVlbiBpbnNlcnRlZCwKKyAgICAgKiB0eXBpY2FsbHkgYXMgYSByZXN1bHQgb2YgYSBrZXlib2FyZCBldmVudC4gIFRoZSBuZXcgdGV4dCBpbgorICAgICAqIDxjb2RlPmluc2VydGlvbjwvY29kZT4gd2lsbCBiZSBpbnNlcnRlZCBpbnRvIDxjb2RlPnRleHQ8L2NvZGU+CisgICAgICogYXQgPGNvZGU+aW5kZXguY29udGV4dExpbWl0PC9jb2RlPiwgYWR2YW5jaW5nCisgICAgICogPGNvZGU+aW5kZXguY29udGV4dExpbWl0PC9jb2RlPiBieSA8Y29kZT5pbnNlcnRpb24ubGVuZ3RoKCk8L2NvZGU+LgorICAgICAqIFRoZW4gdGhlIHRyYW5zbGl0ZXJhdG9yIHdpbGwgdHJ5IHRvIHRyYW5zbGl0ZXJhdGUgY2hhcmFjdGVycyBvZgorICAgICAqIDxjb2RlPnRleHQ8L2NvZGU+IGJldHdlZW4gPGNvZGU+aW5kZXguc3RhcnQ8L2NvZGU+IGFuZAorICAgICAqIDxjb2RlPmluZGV4LmNvbnRleHRMaW1pdDwvY29kZT4uICBDaGFyYWN0ZXJzIGJlZm9yZQorICAgICAqIDxjb2RlPmluZGV4LnN0YXJ0PC9jb2RlPiB3aWxsIG5vdCBiZSBjaGFuZ2VkLgorICAgICAqCisgICAgICogPHA+VXBvbiByZXR1cm4sIHZhbHVlcyBpbiA8Y29kZT5pbmRleDwvY29kZT4gd2lsbCBiZSB1cGRhdGVkLgorICAgICAqIDxjb2RlPmluZGV4LmNvbnRleHRTdGFydDwvY29kZT4gd2lsbCBiZSBhZHZhbmNlZCB0byB0aGUgZmlyc3QKKyAgICAgKiBjaGFyYWN0ZXIgdGhhdCBmdXR1cmUgY2FsbHMgdG8gdGhpcyBtZXRob2Qgd2lsbCByZWFkLgorICAgICAqIDxjb2RlPmluZGV4LnN0YXJ0PC9jb2RlPiBhbmQgPGNvZGU+aW5kZXguY29udGV4dExpbWl0PC9jb2RlPiB3aWxsCisgICAgICogYmUgYWRqdXN0ZWQgdG8gZGVsaW1pdCB0aGUgcmFuZ2Ugb2YgdGV4dCB0aGF0IGZ1dHVyZSBjYWxscyB0bworICAgICAqIHRoaXMgbWV0aG9kIG1heSBjaGFuZ2UuCisgICAgICoKKyAgICAgKiA8cD5UeXBpY2FsIHVzYWdlIG9mIHRoaXMgbWV0aG9kIGJlZ2lucyB3aXRoIGFuIGluaXRpYWwgY2FsbAorICAgICAqIHdpdGggPGNvZGU+aW5kZXguY29udGV4dFN0YXJ0PC9jb2RlPiBhbmQgPGNvZGU+aW5kZXguY29udGV4dExpbWl0PC9jb2RlPgorICAgICAqIHNldCB0byBpbmRpY2F0ZSB0aGUgcG9ydGlvbiBvZiA8Y29kZT50ZXh0PC9jb2RlPiB0byBiZQorICAgICAqIHRyYW5zbGl0ZXJhdGVkLCBhbmQgPGNvZGU+aW5kZXguc3RhcnQgPT0gaW5kZXguY29udGV4dFN0YXJ0PC9jb2RlPi4KKyAgICAgKiBUaGVyZWFmdGVyLCA8Y29kZT5pbmRleDwvY29kZT4gY2FuIGJlIHVzZWQgd2l0aG91dAorICAgICAqIG1vZGlmaWNhdGlvbiBpbiBmdXR1cmUgY2FsbHMsIHByb3ZpZGVkIHRoYXQgYWxsIGNoYW5nZXMgdG8KKyAgICAgKiA8Y29kZT50ZXh0PC9jb2RlPiBhcmUgbWFkZSB2aWEgdGhpcyBtZXRob2QuCisgICAgICoKKyAgICAgKiA8cD5UaGlzIG1ldGhvZCBhc3N1bWVzIHRoYXQgZnV0dXJlIGNhbGxzIG1heSBiZSBtYWRlIHRoYXQgd2lsbAorICAgICAqIGluc2VydCBuZXcgdGV4dCBpbnRvIHRoZSBidWZmZXIuICBBcyBhIHJlc3VsdCwgaXQgb25seSBwZXJmb3JtcworICAgICAqIHVuYW1iaWd1b3VzIHRyYW5zbGl0ZXJhdGlvbnMuICBBZnRlciB0aGUgbGFzdCBjYWxsIHRvIHRoaXMKKyAgICAgKiBtZXRob2QsIHRoZXJlIG1heSBiZSB1bnRyYW5zbGl0ZXJhdGVkIHRleHQgdGhhdCBpcyB3YWl0aW5nIGZvcgorICAgICAqIG1vcmUgaW5wdXQgdG8gcmVzb2x2ZSBhbiBhbWJpZ3VpdHkuICBJbiBvcmRlciB0byBwZXJmb3JtIHRoZXNlCisgICAgICogcGVuZGluZyB0cmFuc2xpdGVyYXRpb25zLCBjbGllbnRzIHNob3VsZCBjYWxsIHtAbGluaworICAgICAqICNmaW5pc2hUcmFuc2xpdGVyYXRpb259IGFmdGVyIHRoZSBsYXN0IGNhbGwgdG8gdGhpcworICAgICAqIG1ldGhvZCBoYXMgYmVlbiBtYWRlLgorICAgICAqIAorICAgICAqIEBwYXJhbSB0ZXh0IHRoZSBidWZmZXIgaG9sZGluZyB0cmFuc2xpdGVyYXRlZCBhbmQgdW50cmFuc2xpdGVyYXRlZCB0ZXh0CisgICAgICogQHBhcmFtIGluZGV4IHRoZSBzdGFydCBhbmQgbGltaXQgb2YgdGhlIHRleHQsIHRoZSBwb3NpdGlvbgorICAgICAqIG9mIHRoZSBjdXJzb3IsIGFuZCB0aGUgc3RhcnQgYW5kIGxpbWl0IG9mIHRyYW5zbGl0ZXJhdGlvbi4KKyAgICAgKiBAcGFyYW0gaW5zZXJ0aW9uIHRleHQgdG8gYmUgaW5zZXJ0ZWQgYW5kIHBvc3NpYmx5CisgICAgICogdHJhbnNsaXRlcmF0ZWQgaW50byB0aGUgdHJhbnNsYXRpb24gYnVmZmVyIGF0CisgICAgICogPGNvZGU+aW5kZXguY29udGV4dExpbWl0PC9jb2RlPi4gIElmIDxjb2RlPm51bGw8L2NvZGU+IHRoZW4gbm8gdGV4dAorICAgICAqIGlzIGluc2VydGVkLgorICAgICAqIEBzZWUgI2hhbmRsZVRyYW5zbGl0ZXJhdGUKKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiA8Y29kZT5pbmRleDwvY29kZT4KKyAgICAgKiBpcyBpbnZhbGlkCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgdHJhbnNsaXRlcmF0ZShSZXBsYWNlYWJsZSB0ZXh0LCBQb3NpdGlvbiBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBpbnNlcnRpb24pIHsKKyAgICAgICAgaWYgKGluZGV4LmNvbnRleHRTdGFydCA8IDAgfHwKKyAgICAgICAgICAgIGluZGV4LmNvbnRleHRMaW1pdCA+IHRleHQubGVuZ3RoKCkgfHwKKyAgICAgICAgICAgIGluZGV4LnN0YXJ0IDwgaW5kZXguY29udGV4dFN0YXJ0IHx8CisgICAgICAgICAgICBpbmRleC5zdGFydCA+IGluZGV4LmNvbnRleHRMaW1pdCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBpbmRleCIpOworICAgICAgICB9CisKKyAgICAgICAgaW50IG9yaWdpbmFsU3RhcnQgPSBpbmRleC5jb250ZXh0U3RhcnQ7CisgICAgICAgIGlmIChpbnNlcnRpb24gIT0gbnVsbCkgeworICAgICAgICAgICAgdGV4dC5yZXBsYWNlKGluZGV4LmxpbWl0LCBpbmRleC5saW1pdCwgaW5zZXJ0aW9uKTsKKyAgICAgICAgICAgIGluZGV4LmxpbWl0ICs9IGluc2VydGlvbi5sZW5ndGgoKTsKKyAgICAgICAgICAgIGluZGV4LmNvbnRleHRMaW1pdCArPSBpbnNlcnRpb24ubGVuZ3RoKCk7CisgICAgICAgIH0KKworICAgICAgICBoYW5kbGVUcmFuc2xpdGVyYXRlKHRleHQsIGluZGV4LCB0cnVlKTsKKworICAgICAgICBpbmRleC5jb250ZXh0U3RhcnQgPSBNYXRoLm1heChpbmRleC5zdGFydCAtIGdldE1heGltdW1Db250ZXh0TGVuZ3RoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsU3RhcnQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRyYW5zbGl0ZXJhdGVzIHRoZSBwb3J0aW9uIG9mIHRoZSB0ZXh0IGJ1ZmZlciB0aGF0IGNhbiBiZQorICAgICAqIHRyYW5zbGl0ZXJhdGVkIHVuYW1iaWd1b3NseSBhZnRlciBhIG5ldyBjaGFyYWN0ZXIgaGFzIGJlZW4KKyAgICAgKiBpbnNlcnRlZCwgdHlwaWNhbGx5IGFzIGEgcmVzdWx0IG9mIGEga2V5Ym9hcmQgZXZlbnQuICBUaGlzIGlzIGEKKyAgICAgKiBjb252ZW5pZW5jZSBtZXRob2Q7IHNlZSB7QGxpbmsgI3RyYW5zbGl0ZXJhdGUoUmVwbGFjZWFibGUsCisgICAgICogVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24sIFN0cmluZyl9IGZvciBkZXRhaWxzLgorICAgICAqIEBwYXJhbSB0ZXh0IHRoZSBidWZmZXIgaG9sZGluZyB0cmFuc2xpdGVyYXRlZCBhbmQKKyAgICAgKiB1bnRyYW5zbGl0ZXJhdGVkIHRleHQKKyAgICAgKiBAcGFyYW0gaW5kZXggdGhlIHN0YXJ0IGFuZCBsaW1pdCBvZiB0aGUgdGV4dCwgdGhlIHBvc2l0aW9uCisgICAgICogb2YgdGhlIGN1cnNvciwgYW5kIHRoZSBzdGFydCBhbmQgbGltaXQgb2YgdHJhbnNsaXRlcmF0aW9uLgorICAgICAqIEBwYXJhbSBpbnNlcnRpb24gdGV4dCB0byBiZSBpbnNlcnRlZCBhbmQgcG9zc2libHkKKyAgICAgKiB0cmFuc2xpdGVyYXRlZCBpbnRvIHRoZSB0cmFuc2xhdGlvbiBidWZmZXIgYXQKKyAgICAgKiA8Y29kZT5pbmRleC5jb250ZXh0TGltaXQ8L2NvZGU+LgorICAgICAqIEBzZWUgI3RyYW5zbGl0ZXJhdGUoUmVwbGFjZWFibGUsIFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uLCBTdHJpbmcpCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgdHJhbnNsaXRlcmF0ZShSZXBsYWNlYWJsZSB0ZXh0LCBQb3NpdGlvbiBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgaW5zZXJ0aW9uKSB7CisgICAgICAgIHRyYW5zbGl0ZXJhdGUodGV4dCwgaW5kZXgsIFN0cmluZy52YWx1ZU9mKGluc2VydGlvbikpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRyYW5zbGl0ZXJhdGVzIHRoZSBwb3J0aW9uIG9mIHRoZSB0ZXh0IGJ1ZmZlciB0aGF0IGNhbiBiZQorICAgICAqIHRyYW5zbGl0ZXJhdGVkIHVuYW1iaWd1b3NseS4gIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBtZXRob2Q7IHNlZQorICAgICAqIHtAbGluayAjdHJhbnNsaXRlcmF0ZShSZXBsYWNlYWJsZSwgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24sCisgICAgICogU3RyaW5nKX0gZm9yIGRldGFpbHMuCisgICAgICogQHBhcmFtIHRleHQgdGhlIGJ1ZmZlciBob2xkaW5nIHRyYW5zbGl0ZXJhdGVkIGFuZAorICAgICAqIHVudHJhbnNsaXRlcmF0ZWQgdGV4dAorICAgICAqIEBwYXJhbSBpbmRleCB0aGUgc3RhcnQgYW5kIGxpbWl0IG9mIHRoZSB0ZXh0LCB0aGUgcG9zaXRpb24KKyAgICAgKiBvZiB0aGUgY3Vyc29yLCBhbmQgdGhlIHN0YXJ0IGFuZCBsaW1pdCBvZiB0cmFuc2xpdGVyYXRpb24uCisgICAgICogQHNlZSAjdHJhbnNsaXRlcmF0ZShSZXBsYWNlYWJsZSwgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24sIFN0cmluZykKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgdm9pZCB0cmFuc2xpdGVyYXRlKFJlcGxhY2VhYmxlIHRleHQsIFBvc2l0aW9uIGluZGV4KSB7CisgICAgICAgIHRyYW5zbGl0ZXJhdGUodGV4dCwgaW5kZXgsIG51bGwpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbmlzaGVzIGFueSBwZW5kaW5nIHRyYW5zbGl0ZXJhdGlvbnMgdGhhdCB3ZXJlIHdhaXRpbmcgZm9yCisgICAgICogbW9yZSBjaGFyYWN0ZXJzLiAgQ2xpZW50cyBzaG91bGQgY2FsbCB0aGlzIG1ldGhvZCBhcyB0aGUgbGFzdAorICAgICAqIGNhbGwgYWZ0ZXIgYSBzZXF1ZW5jZSBvZiBvbmUgb3IgbW9yZSBjYWxscyB0bworICAgICAqIDxjb2RlPnRyYW5zbGl0ZXJhdGUoKTwvY29kZT4uCisgICAgICogQHBhcmFtIHRleHQgdGhlIGJ1ZmZlciBob2xkaW5nIHRyYW5zbGl0ZXJhdGVkIGFuZAorICAgICAqIHVudHJhbnNsaXRlcmF0ZWQgdGV4dC4KKyAgICAgKiBAcGFyYW0gaW5kZXggdGhlIGFycmF5IG9mIGluZGljZXMgcHJldmlvdXNseSBwYXNzZWQgdG8ge0BsaW5rCisgICAgICogI3RyYW5zbGl0ZXJhdGV9CisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgZmluaXNoVHJhbnNsaXRlcmF0aW9uKFJlcGxhY2VhYmxlIHRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uIGluZGV4KSB7CisgICAgICAgIGhhbmRsZVRyYW5zbGl0ZXJhdGUodGV4dCwgaW5kZXgsIGZhbHNlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBYnN0cmFjdCBtZXRob2QgdGhhdCBjb25jcmV0ZSBzdWJjbGFzc2VzIGRlZmluZSB0byBpbXBsZW1lbnQKKyAgICAgKiBrZXlib2FyZCB0cmFuc2xpdGVyYXRpb24uICBUaGlzIG1ldGhvZCBzaG91bGQgdHJhbnNsaXRlcmF0ZSBhbGwKKyAgICAgKiBjaGFyYWN0ZXJzIGJldHdlZW4gPGNvZGU+aW5kZXguc3RhcnQ8L2NvZGU+IGFuZAorICAgICAqIDxjb2RlPmluZGV4LmNvbnRleHRMaW1pdDwvY29kZT4gdGhhdCBjYW4gYmUgdW5hbWJpZ3VvdXNseQorICAgICAqIHRyYW5zbGl0ZXJhdGVkLCByZWdhcmRsZXNzIG9mIGZ1dHVyZSBpbnNlcnRpb25zIG9mIHRleHQgYXQKKyAgICAgKiA8Y29kZT5pbmRleC5jb250ZXh0TGltaXQ8L2NvZGU+LiAgPGNvZGU+aW5kZXguc3RhcnQ8L2NvZGU+IHNob3VsZAorICAgICAqIGJlIGFkdmFuY2VkIHBhc3QgY29tbWl0dGVkIGNoYXJhY3RlcnMgKHRob3NlIHRoYXQgd2lsbCBub3QKKyAgICAgKiBjaGFuZ2UgaW4gZnV0dXJlIGNhbGxzIHRvIHRoaXMgbWV0aG9kKS4KKyAgICAgKiA8Y29kZT5pbmRleC5jb250ZXh0TGltaXQ8L2NvZGU+IHNob3VsZCBiZSB1cGRhdGVkIHRvIHJlZmxlY3QgdGV4dAorICAgICAqIHJlcGxhY2VtZW50cyB0aGF0IHNob3J0ZW4gb3IgbGVuZ3RoZW4gdGhlIHRleHQgYmV0d2VlbgorICAgICAqIDxjb2RlPmluZGV4LnN0YXJ0PC9jb2RlPiBhbmQgPGNvZGU+aW5kZXguY29udGV4dExpbWl0PC9jb2RlPi4gIFVwb24KKyAgICAgKiByZXR1cm4sIG5laXRoZXIgPGNvZGU+aW5kZXguc3RhcnQ8L2NvZGU+IG5vcgorICAgICAqIDxjb2RlPmluZGV4LmNvbnRleHRMaW1pdDwvY29kZT4gc2hvdWxkIGJlIGxlc3MgdGhhbiB0aGUgaW5pdGlhbCB2YWx1ZQorICAgICAqIG9mIDxjb2RlPmluZGV4LnN0YXJ0PC9jb2RlPi4gIDxjb2RlPmluZGV4LmNvbnRleHRTdGFydDwvY29kZT4KKyAgICAgKiBzaG91bGQgPGVtPm5vdDwvZW0+IGJlIGNoYW5nZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gdGV4dCB0aGUgYnVmZmVyIGhvbGRpbmcgdHJhbnNsaXRlcmF0ZWQgYW5kCisgICAgICogdW50cmFuc2xpdGVyYXRlZCB0ZXh0CisgICAgICogQHBhcmFtIHBvcyB0aGUgc3RhcnQgYW5kIGxpbWl0IG9mIHRoZSB0ZXh0LCB0aGUgcG9zaXRpb24KKyAgICAgKiBvZiB0aGUgY3Vyc29yLCBhbmQgdGhlIHN0YXJ0IGFuZCBsaW1pdCBvZiB0cmFuc2xpdGVyYXRpb24uCisgICAgICogQHBhcmFtIGluY3JlbWVudGFsIGlmIHRydWUsIGFzc3VtZSBtb3JlIHRleHQgbWF5IGJlIGNvbWluZyBhZnRlcgorICAgICAqIHBvcy5jb250ZXh0TGltaXQuICBPdGhlcndpc2UsIGFzc3VtZSB0aGUgdGV4dCBpcyBjb21wbGV0ZS4KKyAgICAgKiBAc2VlICN0cmFuc2xpdGVyYXRlCisgICAgICovCisgICAgcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgaGFuZGxlVHJhbnNsaXRlcmF0ZShSZXBsYWNlYWJsZSB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gcG9zLCBib29sZWFuIGluY3JlbWVudGFsKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgbG9uZ2VzdCBjb250ZXh0IHJlcXVpcmVkIGJ5IHRoaXMgdHJhbnNsaXRlcmF0b3IuCisgICAgICogVGhpcyBpcyA8ZW0+cHJlY2VkaW5nPC9lbT4gY29udGV4dC4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHplcm8sIGJ1dAorICAgICAqIHN1YmNsYXNzZXMgY2FuIGNoYW5nZSB0aGlzIGJ5IGNhbGxpbmcgPGNvZGU+c2V0TWF4aW11bUNvbnRleHRMZW5ndGgoKTwvY29kZT4uCisgICAgICogRm9yIGV4YW1wbGUsIGlmIGEgdHJhbnNsaXRlcmF0b3IgdHJhbnNsYXRlcyAiZGRkIiAod2hlcmUKKyAgICAgKiBkIGlzIGFueSBkaWdpdCkgdG8gIjU1NSIgd2hlbiBwcmVjZWRlZCBieSAiKGRkZCkiLCB0aGVuIHRoZSBwcmVjZWRpbmcKKyAgICAgKiBjb250ZXh0IGxlbmd0aCBpcyA1LCB0aGUgbGVuZ3RoIG9mICIoZGRkKSIuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIFRoZSBtYXhpbXVtIG51bWJlciBvZiBwcmVjZWRpbmcgY29udGV4dCBjaGFyYWN0ZXJzIHRoaXMKKyAgICAgKiB0cmFuc2xpdGVyYXRvciBuZWVkcyB0byBleGFtaW5lCisgICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIGludCBnZXRNYXhpbXVtQ29udGV4dExlbmd0aCgpIHsKKyAgICAgICAgcmV0dXJuIG1heGltdW1Db250ZXh0TGVuZ3RoOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1ldGhvZCBmb3Igc3ViY2xhc3NlcyB0byB1c2UgdG8gc2V0IHRoZSBtYXhpbXVtIGNvbnRleHQgbGVuZ3RoLgorICAgICAqIEBzZWUgI2dldE1heGltdW1Db250ZXh0TGVuZ3RoCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgc2V0TWF4aW11bUNvbnRleHRMZW5ndGgoaW50IGEpIHsKKyAgICAgICAgaWYgKGEgPCAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGNvbnRleHQgbGVuZ3RoICIgKyBhKTsKKyAgICAgICAgfQorICAgICAgICBtYXhpbXVtQ29udGV4dExlbmd0aCA9IGE7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIHByb2dyYW1tYXRpYyBpZGVudGlmaWVyIGZvciB0aGlzIHRyYW5zbGl0ZXJhdG9yLgorICAgICAqIElmIHRoaXMgaWRlbnRpZmllciBpcyBwYXNzZWQgdG8gPGNvZGU+Z2V0SW5zdGFuY2UoKTwvY29kZT4sIGl0CisgICAgICogd2lsbCByZXR1cm4gdGhpcyBvYmplY3QsIGlmIGl0IGhhcyBiZWVuIHJlZ2lzdGVyZWQuCisgICAgICogQHNlZSAjcmVnaXN0ZXJDbGFzcworICAgICAqIEBzZWUgI2dldEF2YWlsYWJsZUlEcworICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0SUQoKSB7CisgICAgICAgIHJldHVybiBJRDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgbmFtZSBmb3IgdGhpcyB0cmFuc2xpdGVyYXRvciB0aGF0IGlzIGFwcHJvcHJpYXRlIGZvcgorICAgICAqIGRpc3BsYXkgdG8gdGhlIHVzZXIgaW4gdGhlIGRlZmF1bHQgbG9jYWxlLiAgU2VlIHtAbGluaworICAgICAqICNnZXREaXNwbGF5TmFtZShTdHJpbmcsTG9jYWxlKX0gZm9yIGRldGFpbHMuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgZ2V0RGlzcGxheU5hbWUoU3RyaW5nIElEKSB7CisgICAgICAgIHJldHVybiBnZXREaXNwbGF5TmFtZShJRCwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIG5hbWUgZm9yIHRoaXMgdHJhbnNsaXRlcmF0b3IgdGhhdCBpcyBhcHByb3ByaWF0ZSBmb3IKKyAgICAgKiBkaXNwbGF5IHRvIHRoZSB1c2VyIGluIHRoZSBnaXZlbiBsb2NhbGUuICBUaGlzIG5hbWUgaXMgdGFrZW4KKyAgICAgKiBmcm9tIHRoZSBsb2NhbGUgcmVzb3VyY2UgZGF0YSBpbiB0aGUgc3RhbmRhcmQgbWFubmVyIG9mIHRoZQorICAgICAqIDxjb2RlPmphdmEudGV4dDwvY29kZT4gcGFja2FnZS4KKyAgICAgKgorICAgICAqIDxwPklmIG5vIGxvY2FsaXplZCBuYW1lcyBleGlzdCBpbiB0aGUgc3lzdGVtIHJlc291cmNlIGJ1bmRsZXMsCisgICAgICogYSBuYW1lIGlzIHN5bnRoZXNpemVkIHVzaW5nIGEgbG9jYWxpemVkCisgICAgICogPGNvZGU+TWVzc2FnZUZvcm1hdDwvY29kZT4gcGF0dGVybiBmcm9tIHRoZSByZXNvdXJjZSBkYXRhLiAgVGhlCisgICAgICogYXJndW1lbnRzIHRvIHRoaXMgcGF0dGVybiBhcmUgYW4gaW50ZWdlciBmb2xsb3dlZCBieSBvbmUgb3IgdHdvCisgICAgICogc3RyaW5ncy4gIFRoZSBpbnRlZ2VyIGlzIHRoZSBudW1iZXIgb2Ygc3RyaW5ncywgZWl0aGVyIDEgb3IgMi4KKyAgICAgKiBUaGUgc3RyaW5ncyBhcmUgZm9ybWVkIGJ5IHNwbGl0dGluZyB0aGUgSUQgZm9yIHRoaXMKKyAgICAgKiB0cmFuc2xpdGVyYXRvciBhdCB0aGUgZmlyc3QgJy0nLiAgSWYgdGhlcmUgaXMgbm8gJy0nLCB0aGVuIHRoZQorICAgICAqIGVudGlyZSBJRCBmb3JtcyB0aGUgb25seSBzdHJpbmcuCisgICAgICogQHBhcmFtIGluTG9jYWxlIHRoZSBMb2NhbGUgaW4gd2hpY2ggdGhlIGRpc3BsYXkgbmFtZSBzaG91bGQgYmUKKyAgICAgKiBsb2NhbGl6ZWQuCisgICAgICogQHNlZSBqYXZhLnRleHQuTWVzc2FnZUZvcm1hdAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldERpc3BsYXlOYW1lKFN0cmluZyBJRCwgTG9jYWxlIGluTG9jYWxlKSB7CisgICAgICAgIFJlc291cmNlQnVuZGxlIGJ1bmRsZSA9IFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZSgKKyAgICAgICAgICAgIFJCX0xPQ0FMRV9FTEVNRU5UUywgaW5Mb2NhbGUpOworCisgICAgICAgIC8vIFVzZSB0aGUgcmVnaXN0ZXJlZCBkaXNwbGF5IG5hbWUsIGlmIGFueQorICAgICAgICBTdHJpbmcgbiA9IChTdHJpbmcpIGRpc3BsYXlOYW1lQ2FjaGUuZ2V0KElEKTsKKyAgICAgICAgaWYgKG4gIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG47CisgICAgICAgIH0KKworICAgICAgICAvLyBVc2UgZGlzcGxheSBuYW1lIGZvciB0aGUgZW50aXJlIHRyYW5zbGl0ZXJhdG9yLCBpZiBpdAorICAgICAgICAvLyBleGlzdHMuCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gYnVuZGxlLmdldFN0cmluZyhSQl9ESVNQTEFZX05BTUVfUFJFRklYICsgSUQpOworICAgICAgICB9IGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkge30KKworICAgICAgICB0cnkgeworICAgICAgICAgICAgLy8gQ29uc3RydWN0IHRoZSBmb3JtYXR0ZXIgZmlyc3Q7IGlmIGdldFN0cmluZygpIGZhaWxzCisgICAgICAgICAgICAvLyB3ZSdsbCBleGl0IHRoZSB0cnkgYmxvY2sKKyAgICAgICAgICAgIE1lc3NhZ2VGb3JtYXQgZm9ybWF0ID0gbmV3IE1lc3NhZ2VGb3JtYXQoCisgICAgICAgICAgICAgICAgICAgIGJ1bmRsZS5nZXRTdHJpbmcoUkJfRElTUExBWV9OQU1FX1BBVFRFUk4pKTsKKyAgICAgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgYXJndW1lbnQgYXJyYXkKKyAgICAgICAgICAgIGludCBpID0gSUQuaW5kZXhPZignLScpOworICAgICAgICAgICAgT2JqZWN0W10gYXJncyA9IChpIDwgMCkKKyAgICAgICAgICAgICAgICA/IG5ldyBPYmplY3RbXSB7IG5ldyBJbnRlZ2VyKDEpLCBJRCB9CisgICAgICAgICAgICAgICAgOiBuZXcgT2JqZWN0W10geyBuZXcgSW50ZWdlcigyKSwgSUQuc3Vic3RyaW5nKDAsIGkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUQuc3Vic3RyaW5nKGkrMSkgfTsKKworICAgICAgICAgICAgLy8gVXNlIGRpc3BsYXkgbmFtZXMgZm9yIHRoZSBzY3JpcHRzLCBpZiB0aGV5IGV4aXN0CisgICAgICAgICAgICBmb3IgKGludCBqPTE7IGo8PSgoaTwwKT8xOjIpOyArK2opIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBhcmdzW2pdID0gYnVuZGxlLmdldFN0cmluZyhSQl9TQ1JJUFRfRElTUExBWV9OQU1FX1BSRUZJWCArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcpIGFyZ3Nbal0pOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBGb3JtYXQgaXQgdXNpbmcgdGhlIHBhdHRlcm4gaW4gdGhlIHJlc291cmNlCisgICAgICAgICAgICByZXR1cm4gZm9ybWF0LmZvcm1hdChhcmdzKTsKKyAgICAgICAgfSBjYXRjaCAoTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIGUyKSB7fQorCisgICAgICAgIC8vIFdlIHNob3VsZCBub3QgcmVhY2ggdGhpcyBwb2ludCB1bmxlc3MgdGhlcmUgaXMgc29tZXRoaW5nCisgICAgICAgIC8vIHdyb25nIHdpdGggdGhlIGJ1aWxkIG9yIHRoZSBSQl9ESVNQTEFZX05BTUVfUEFUVEVSTiBoYXMKKyAgICAgICAgLy8gYmVlbiBkZWxldGVkIGZyb20gdGhlIHJvb3QgUkJfTE9DQUxFX0VMRU1FTlRTIHJlc291cmNlLgorICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGZpbHRlciB1c2VkIGJ5IHRoaXMgdHJhbnNsaXRlcmF0b3IsIG9yIDx0dD5udWxsPC90dD4KKyAgICAgKiBpZiB0aGlzIHRyYW5zbGl0ZXJhdG9yIHVzZXMgbm8gZmlsdGVyLgorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlRmlsdGVyIGdldEZpbHRlcigpIHsKKyAgICAgICAgcmV0dXJuIGZpbHRlcjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDaGFuZ2VzIHRoZSBmaWx0ZXIgdXNlZCBieSB0aGlzIHRyYW5zbGl0ZXJhdG9yLiAgSWYgdGhlIGZpbHRlcgorICAgICAqIGlzIHNldCB0byA8dHQ+bnVsbDwvdHQ+IHRoZW4gbm8gZmlsdGVyaW5nIHdpbGwgb2NjdXIuCisgICAgICoKKyAgICAgKiA8cD5DYWxsZXJzIG11c3QgdGFrZSBjYXJlIGlmIGEgdHJhbnNsaXRlcmF0b3IgaXMgaW4gdXNlIGJ5CisgICAgICogbXVsdGlwbGUgdGhyZWFkcy4gIFRoZSBmaWx0ZXIgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIGJ5IG9uZQorICAgICAqIHRocmVhZCB3aGlsZSBhbm90aGVyIHRocmVhZCBtYXkgYmUgdHJhbnNsaXRlcmF0aW5nLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEZpbHRlcihVbmljb2RlRmlsdGVyIGZpbHRlcikgeworICAgICAgICB0aGlzLmZpbHRlciA9IGZpbHRlcjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgPGNvZGU+VHJhbnNsaXRlcmF0b3I8L2NvZGU+IG9iamVjdCBnaXZlbiBpdHMgSUQuCisgICAgICogVGhlIElEIG11c3QgYmUgZWl0aGVyIGEgc3lzdGVtIHRyYW5zbGl0ZXJhdG9yIElEIG9yIGEgSUQgcmVnaXN0ZXJlZAorICAgICAqIHVzaW5nIDxjb2RlPnJlZ2lzdGVyQ2xhc3MoKTwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcGFyYW0gSUQgYSB2YWxpZCBJRCwgYXMgZW51bWVyYXRlZCBieSA8Y29kZT5nZXRBdmFpbGFibGVJRHMoKTwvY29kZT4KKyAgICAgKiBAcmV0dXJuIEEgPGNvZGU+VHJhbnNsaXRlcmF0b3I8L2NvZGU+IG9iamVjdCB3aXRoIHRoZSBnaXZlbiBJRAorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBnaXZlbiBJRCBpcyBpbnZhbGlkLgorICAgICAqIEBzZWUgI3JlZ2lzdGVyQ2xhc3MKKyAgICAgKiBAc2VlICNnZXRBdmFpbGFibGVJRHMKKyAgICAgKiBAc2VlICNnZXRJRAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVHJhbnNsaXRlcmF0b3IgZ2V0SW5zdGFuY2UoU3RyaW5nIElELCBpbnQgZGlyZWN0aW9uKSB7CisgICAgICAgIGlmIChJRC5pbmRleE9mKCc7JykgPj0gMCkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBDb21wb3VuZFRyYW5zbGl0ZXJhdG9yKElELCBkaXJlY3Rpb24sIG51bGwpOworICAgICAgICB9CisKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgVW5pY29kZUZpbHRlciBmaWx0ZXIgPSBudWxsOworICAgICAgICAgICAgaW50IGkgPSBJRC5pbmRleE9mKCdbJyk7CisgICAgICAgICAgICBpZiAoaSA+PSAwKSB7CisgICAgICAgICAgICAgICAgUGFyc2VQb3NpdGlvbiBwb3MgPSBuZXcgUGFyc2VQb3NpdGlvbihpKTsKKyAgICAgICAgICAgICAgICBmaWx0ZXIgPSBuZXcgVW5pY29kZVNldChJRCwgcG9zLCBudWxsKTsKKyAgICAgICAgICAgICAgICBpZiAocG9zLmdldEluZGV4KCkgIT0gSUQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIHVucGFyc2VkIGp1bmsgYWZ0ZXIgJ10nCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIElEID0gSUQuc3Vic3RyaW5nKDAsIGkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZGlyZWN0aW9uID09IFJFVkVSU0UpIHsKKyAgICAgICAgICAgICAgICBpID0gSUQuaW5kZXhPZignLScpOworICAgICAgICAgICAgICAgIGlmIChpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJObyBpbnZlcnNlIGZvcjogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgSUQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBJRCA9IElELnN1YnN0cmluZyhpKzEpICsgJy0nICsgSUQuc3Vic3RyaW5nKDAsIGkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBUcmFuc2xpdGVyYXRvciB0ID0gaW50ZXJuYWxHZXRJbnN0YW5jZShJRCk7CisgICAgICAgICAgICBpZiAodCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKGZpbHRlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHQuc2V0RmlsdGVyKGZpbHRlcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0OworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlVuc3VwcG9ydGVkIHRyYW5zbGl0ZXJhdG9yOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBJRCk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBUcmFuc2xpdGVyYXRvciBnZXRJbnN0YW5jZShTdHJpbmcgSUQpIHsKKyAgICAgICAgcmV0dXJuIGdldEluc3RhbmNlKElELCBGT1JXQVJEKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoaXMgdHJhbnNsaXRlcmF0b3IncyBpbnZlcnNlLiAgU2VlIHRoZSBjbGFzcworICAgICAqIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuICBUaGlzIGltcGxlbWVudGF0aW9uIHNpbXBseSBpbnZlcnRzCisgICAgICogdGhlIHR3byBlbnRpdGllcyBpbiB0aGUgSUQgYW5kIGF0dGVtcHRzIHRvIHJldHJpZXZlIHRoZQorICAgICAqIHJlc3VsdGluZyB0cmFuc2xpdGVyYXRvci4gIFRoYXQgaXMsIGlmIDxjb2RlPmdldElEKCk8L2NvZGU+CisgICAgICogcmV0dXJucyAiQS1CIiwgdGhlbiB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiB0aGUgcmVzdWx0IG9mCisgICAgICogPGNvZGU+Z2V0SW5zdGFuY2UoIkItQSIpPC9jb2RlPiwgb3IgPGNvZGU+bnVsbDwvY29kZT4gaWYgdGhhdAorICAgICAqIGNhbGwgZmFpbHMuCisgICAgICoKKyAgICAgKiA8cD5UaGlzIG1ldGhvZCBkb2VzIG5vdCB0YWtlIGZpbHRlcmluZyBpbnRvIGFjY291bnQuICBUaGUKKyAgICAgKiByZXR1cm5lZCB0cmFuc2xpdGVyYXRvciB3aWxsIGhhdmUgbm8gZmlsdGVyLgorICAgICAqCisgICAgICogPHA+U3ViY2xhc3NlcyB3aXRoIGtub3dsZWRnZSBvZiB0aGVpciBpbnZlcnNlIG1heSB3aXNoIHRvCisgICAgICogb3ZlcnJpZGUgdGhpcyBtZXRob2QuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIGEgdHJhbnNsaXRlcmF0b3IgdGhhdCBpcyBhbiBpbnZlcnNlLCBub3QgbmVjZXNzYXJpbHkKKyAgICAgKiBleGFjdCwgb2YgdGhpcyB0cmFuc2xpdGVyYXRvciwgb3IgPGNvZGU+bnVsbDwvY29kZT4gaWYgbm8gc3VjaAorICAgICAqIHRyYW5zbGl0ZXJhdG9yIGlzIHJlZ2lzdGVyZWQuCisgICAgICogQHNlZSAjcmVnaXN0ZXJDbGFzcworICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBUcmFuc2xpdGVyYXRvciBnZXRJbnZlcnNlKCkgeworICAgICAgICByZXR1cm4gZ2V0SW5zdGFuY2UoSUQsIFJFVkVSU0UpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgdHJhbnNsaXRlcmF0b3Igb2JqZWN0IGdpdmVuIGl0cyBJRC4gIFVubGlrZSBnZXRJbnN0YW5jZSgpLAorICAgICAqIHRoaXMgbWV0aG9kIHJldHVybnMgbnVsbCBpZiBpdCBjYW5ub3QgbWFrZSB1c2Ugb2YgdGhlIGdpdmVuIElELgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIFRyYW5zbGl0ZXJhdG9yIGludGVybmFsR2V0SW5zdGFuY2UoU3RyaW5nIElEKSB7CisgICAgICAgIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLkRhdGEgZGF0YSA9IG51bGw7CisgICAgICAgIEhhc2h0YWJsZSBzb3VyY2VDYWNoZSA9IGNhY2hlOworICAgICAgICBPYmplY3Qgb2JqID0gY2FjaGUuZ2V0KElEKTsKKyAgICAgICAgaWYgKG9iaiA9PSBudWxsKSB7CisgICAgICAgICAgICBvYmogPSBpbnRlcm5hbENhY2hlLmdldChJRCk7CisgICAgICAgICAgICBzb3VyY2VDYWNoZSA9IGludGVybmFsQ2FjaGU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChvYmogIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLkRhdGEpIHsKKyAgICAgICAgICAgICAgICBkYXRhID0gKFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLkRhdGEpIG9iajsKKyAgICAgICAgICAgICAgICAvLyBGYWxsIHRocm91Z2ggdG8gY29uc3RydWN0IHRyYW5zbGl0ZXJhdG9yIGZyb20gY2FjaGVkIERhdGEgb2JqZWN0LgorICAgICAgICAgICAgfSBlbHNlIGlmIChvYmogaW5zdGFuY2VvZiBDbGFzcykgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAoVHJhbnNsaXRlcmF0b3IpICgoQ2xhc3MpIG9iaikubmV3SW5zdGFuY2UoKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChJbnN0YW50aWF0aW9uRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIGUyKSB7fQorICAgICAgICAgICAgfSBlbHNlIGlmIChvYmogaW5zdGFuY2VvZiBTdHJpbmcpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgc3BlYyA9IChTdHJpbmcpIG9iajsKKyAgICAgICAgICAgICAgICBpZiAoc3BlYy5jaGFyQXQoMCkgPT0gJ2EnKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIGFsaWFzCisgICAgICAgICAgICAgICAgICAgIFRyYW5zbGl0ZXJhdG9yIHQgPSBnZXRJbnN0YW5jZShzcGVjLnN1YnN0cmluZygxKSk7CisgICAgICAgICAgICAgICAgICAgIHQuSUQgPSBJRDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQ7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChjYWNoZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gZmlsZSwgZWl0aGVyIGZvcndhcmQgb3IgcmV2ZXJzZQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRpciA9IChzcGVjLmNoYXJBdCgwKSA9PSAnZicpID8gRk9SV0FSRDpSRVZFUlNFOworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbG9uID0gc3BlYy5pbmRleE9mKCc6JywgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgcmVzb3VyY2VOYW1lID0gc3BlYy5zdWJzdHJpbmcoMSwgY29sb24pOworICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGVuY29kaW5nID0gc3BlYy5zdWJzdHJpbmcoY29sb24rMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVJlYWRlciByID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IG5ldyBSZXNvdXJjZVJlYWRlcihyZXNvdXJjZU5hbWUsIGVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbjsgVVRGOCBpcyBhbHdheXMgc3VwcG9ydGVkCisgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZTIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDYW4ndCBsb2FkIFVURjggZmlsZQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAociAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSA9IFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yLnBhcnNlKHIsIGRpcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlQ2FjaGUucHV0KElELCBkYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGYWxsIHRocm91Z2ggdG8gY29uc3RydWN0IHRyYW5zbGl0ZXJhdG9yIGZyb20gRGF0YSBvYmplY3QuCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJCb2d1cyBjYWNoZSBvYmplY3QiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUnVsZUJhc2VkVHJhbnNsaXRlcmF0b3IoSUQsIGRhdGEsIG51bGwpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisvLyBDdXJyZW50bHkgdW51c2VkLCBidXQgbWF5IGJlIG9mIHVzZSBpbiB0aGUgZnV0dXJlLgorLy8gICAgLyoqCisvLyAgICAgKiBGaW5kIGEgcGF0aCB0aHJvdWdoIHRoZSBjb21wb3NlZCB0cmFuc2xpdGVyYXRvciBncmFwaC4gIFRoaXMKKy8vICAgICAqIHdpbGwgbm90IG5lY2Vzc2FyaWx5IGJlIHRoZSBvbmx5IHBhdGgsIG9yIHRoZSBzaG9ydGVzdCBwYXRoLgorLy8gICAgICogVGhpcyBpcyBhIHNpbXBsZSByZWN1cnNpdmUgYWxnb3JpdGhtLgorLy8gICAgICogCisvLyAgICAgKiA8cD48Y29kZT5jb21wb3NlZEdyYXBoPC9jb2RlPiBpcyB0aGUgbGlua3MgdGFibGUuCisvLyAgICAgKiBjb21wb3NlZEdyYXBoLmdldCh4KSBzaG91bGQgcmV0dXJuIGEgU3RyaW5nW10gYXJyYXksIGVhY2ggb2YKKy8vICAgICAqIHdoaWNoIGlzIGEgbm9kZSB0aGF0IHggaXMgY29ubmVjdGVkIHRvLgorLy8gICAgICogQHBhcmFtIHN0YXJ0IHRoZSBzdGFydGluZyBub2RlCisvLyAgICAgKiBAcGFyYW0gZW5kIHRoZSBlbmRpbmcgbm9kZQorLy8gICAgICogQHBhcmFtIHBhdGggdGhlIHJlc3VsdCB2ZWN0b3I7IHNob3VsZCBiZSBlbXB0eSBvbiBlbnRyeS4gIFVwb24KKy8vICAgICAqIHN1Y2Nlc3MsIGl0IHdpbGwgY29udGFpbiBzdWNjZXNzaXZlIG5vZGVzIG9uIHRoZSBwYXRoIGZyb20KKy8vICAgICAqIHN0YXJ0IHRvIGVuZCwgaW5jbHVkaW5nIHN0YXJ0IGFuZCBlbmQuICBJZiBmYWxzZSBpcyByZXR1cm5lZCwKKy8vICAgICAqIHRoZW4gcGF0aCBpcyB1bmNoYW5nZWQuCisvLyAgICAgKiBAcmV0dXJuIHRydWUgaWYgYSBwYXRoIGZyb20gc3RhcnQgdG8gZW5kIGlzIGZvdW5kCisvLyAgICAgKi8KKy8vICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gZmluZENvbXBvc2VkUGF0aChTdHJpbmcgc3RhcnQsIFN0cmluZyBlbmQsCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVjdG9yIHBhdGgpIHsKKy8vICAgICAgICBwYXRoLmFkZEVsZW1lbnQoc3RhcnQpOworLy8gICAgICAgIC8vIGNvbXBvc2VkR3JhcGggbGlzdHMgYWxsIGxpbmtzIGVtYW5hdGluZyBmcm9tIGEgbm9kZQorLy8gICAgICAgIFN0cmluZ1tdIGxpbmtzID0gKFN0cmluZ1tdKSBjb21wb3NlZEdyYXBoLmdldChzdGFydCk7CisvLyAgICAgICAgaWYgKGxpbmtzICE9IG51bGwpIHsKKy8vICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPGxpbmtzLmxlbmd0aDsgKytpKSB7CisvLyAgICAgICAgICAgICAgICBpZiAobGlua3NbaV0uZXF1YWxzKGVuZCkpIHsKKy8vICAgICAgICAgICAgICAgICAgICBwYXRoLmFkZEVsZW1lbnQoZW5kKTsKKy8vICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKy8vICAgICAgICAgICAgICAgIH0KKy8vICAgICAgICAgICAgfQorLy8gICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8bGlua3MubGVuZ3RoOyArK2kpIHsKKy8vICAgICAgICAgICAgICAgIC8vIEF2b2lkIGN5Y2xlczogaWdub3JlIGxpbmtzIGFscmVhZHkgb24gb3VyIHBhdGgKKy8vICAgICAgICAgICAgICAgIGlmIChwYXRoLmluZGV4T2YobGlua3NbaV0pID49IDApIHsKKy8vICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKy8vICAgICAgICAgICAgICAgIH0KKy8vICAgICAgICAgICAgICAgIGlmIChmaW5kQ29tcG9zZWRQYXRoKGxpbmtzW2ldLCBlbmQsIHBhdGgpKSB7CisvLyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisvLyAgICAgICAgICAgICAgICB9CisvLyAgICAgICAgICAgIH0KKy8vICAgICAgICB9CisvLyAgICAgICAgcGF0aC5yZW1vdmVFbGVtZW50QXQocGF0aC5zaXplKCkgLSAxKTsgICAgCisvLyAgICAgICAgcmV0dXJuIGZhbHNlOworLy8gICAgfQorCisgICAgLyoqCisgICAgICogUmVnaXN0ZXJzIGEgc3ViY2xhc3Mgb2YgPGNvZGU+VHJhbnNsaXRlcmF0b3I8L2NvZGU+IHdpdGggdGhlCisgICAgICogc3lzdGVtLiAgVGhpcyBzdWJjbGFzcyBtdXN0IGhhdmUgYSBwdWJsaWMgY29uc3RydWN0b3IgdGFraW5nIG5vCisgICAgICogYXJndW1lbnRzLiAgV2hlbiB0aGF0IGNvbnN0cnVjdG9yIGlzIGNhbGxlZCwgdGhlIHJlc3VsdGluZworICAgICAqIG9iamVjdCBtdXN0IHJldHVybiB0aGUgPGNvZGU+SUQ8L2NvZGU+IHBhc3NlZCB0byB0aGlzIG1ldGhvZCBpZgorICAgICAqIGl0cyA8Y29kZT5nZXRJRCgpPC9jb2RlPiBtZXRob2QgaXMgY2FsbGVkLgorICAgICAqCisgICAgICogQHBhcmFtIElEIHRoZSByZXN1bHQgb2YgPGNvZGU+Z2V0SUQoKTwvY29kZT4gZm9yIHRoaXMKKyAgICAgKiB0cmFuc2xpdGVyYXRvcgorICAgICAqIEBwYXJhbSB0cmFuc0NsYXNzIGEgc3ViY2xhc3Mgb2YgPGNvZGU+VHJhbnNsaXRlcmF0b3I8L2NvZGU+CisgICAgICogQHNlZSAjdW5yZWdpc3RlcgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCByZWdpc3RlckNsYXNzKFN0cmluZyBJRCwgQ2xhc3MgdHJhbnNDbGFzcywgU3RyaW5nIGRpc3BsYXlOYW1lKSB7CisgICAgICAgIGNhY2hlLnB1dChJRCwgdHJhbnNDbGFzcyk7CisgICAgICAgIGlmIChkaXNwbGF5TmFtZSAhPSBudWxsKSB7CisgICAgICAgICAgICBkaXNwbGF5TmFtZUNhY2hlLnB1dChJRCwgZGlzcGxheU5hbWUpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVW5yZWdpc3RlcnMgYSB0cmFuc2xpdGVyYXRvciBvciBjbGFzcy4gIFRoaXMgbWF5IGJlIGVpdGhlcgorICAgICAqIGEgc3lzdGVtIHRyYW5zbGl0ZXJhdG9yIG9yIGEgdXNlciB0cmFuc2xpdGVyYXRvciBvciBjbGFzcy4KKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gSUQgdGhlIElEIG9mIHRoZSB0cmFuc2xpdGVyYXRvciBvciBjbGFzcworICAgICAqIEByZXR1cm4gdGhlIDxjb2RlPk9iamVjdDwvY29kZT4gdGhhdCB3YXMgcmVnaXN0ZXJlZCB3aXRoCisgICAgICogPGNvZGU+SUQ8L2NvZGU+LCBvciA8Y29kZT5udWxsPC9jb2RlPiBpZiBub25lIHdhcworICAgICAqIEBzZWUgI3JlZ2lzdGVyQ2xhc3MKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIE9iamVjdCB1bnJlZ2lzdGVyKFN0cmluZyBJRCkgeworICAgICAgICBkaXNwbGF5TmFtZUNhY2hlLnJlbW92ZShJRCk7CisgICAgICAgIHJldHVybiBjYWNoZS5yZW1vdmUoSUQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYW4gZW51bWVyYXRpb24gb3ZlciB0aGUgcHJvZ3JhbW1hdGljIG5hbWVzIG9mIHJlZ2lzdGVyZWQKKyAgICAgKiA8Y29kZT5UcmFuc2xpdGVyYXRvcjwvY29kZT4gb2JqZWN0cy4gIFRoaXMgaW5jbHVkZXMgYm90aCBzeXN0ZW0KKyAgICAgKiB0cmFuc2xpdGVyYXRvcnMgYW5kIHVzZXIgdHJhbnNsaXRlcmF0b3JzIHJlZ2lzdGVyZWQgdXNpbmcKKyAgICAgKiA8Y29kZT5yZWdpc3RlckNsYXNzKCk8L2NvZGU+LiAgVGhlIGVudW1lcmF0ZWQgbmFtZXMgbWF5IGJlCisgICAgICogcGFzc2VkIHRvIDxjb2RlPmdldEluc3RhbmNlKCk8L2NvZGU+LgorICAgICAqCisgICAgICogQHJldHVybiBBbiA8Y29kZT5FbnVtZXJhdGlvbjwvY29kZT4gb3ZlciA8Y29kZT5TdHJpbmc8L2NvZGU+IG9iamVjdHMKKyAgICAgKiBAc2VlICNnZXRJbnN0YW5jZQorICAgICAqIEBzZWUgI3JlZ2lzdGVyQ2xhc3MKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEVudW1lcmF0aW9uIGdldEF2YWlsYWJsZUlEcygpIHsKKyAgICAgICAgcmV0dXJuIGNhY2hlLmtleXMoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNZXRob2QgZm9yIHN1YmNsYXNzZXMgdG8gdXNlIHRvIG9idGFpbiBhIGNoYXJhY3RlciBpbiB0aGUgZ2l2ZW4KKyAgICAgKiBzdHJpbmcsIHdpdGggZmlsdGVyaW5nLiAgSWYgdGhlIGNoYXJhY3RlciBhdCB0aGUgZ2l2ZW4gb2Zmc2V0CisgICAgICogaXMgZXhjbHVkZWQgYnkgdGhpcyB0cmFuc2xpdGVyYXRvcidzIGZpbHRlciwgdGhlbiBVK0ZGRkUgaXMgcmV0dXJuZWQuCisgICAgICovCisgICAgcHJvdGVjdGVkIGNoYXIgZmlsdGVyZWRDaGFyQXQoUmVwbGFjZWFibGUgdGV4dCwgaW50IGkpIHsKKyAgICAgICAgY2hhciBjOworICAgICAgICBVbmljb2RlRmlsdGVyIGZpbHRlciA9IGdldEZpbHRlcigpOworICAgICAgICByZXR1cm4gKGZpbHRlciA9PSBudWxsKSA/IHRleHQuY2hhckF0KGkpIDoKKyAgICAgICAgICAgIChmaWx0ZXIuY29udGFpbnMoYyA9IHRleHQuY2hhckF0KGkpKSA/IGMgOiAnXHVGRkZFJyk7CisgICAgfQorCisgICAgc3RhdGljIHsKKyAgICAgICAgLy8gVGhlIGRpc3BsYXkgbmFtZSBjYWNoZSBzdGFydHMgb3V0IGVtcHR5CisgICAgICAgIGRpc3BsYXlOYW1lQ2FjaGUgPSBuZXcgSGFzaHRhYmxlKCk7CisKKyAgICAgICAgLy8gUmVhZCB0aGUgaW5kZXggZmlsZSBhbmQgY29uc3RydWN0IHRoZSBjYWNoZS9pbnRlcm5hbENhY2hlLgorICAgICAgICAvLyBFYWNoIGxpbmUgb2YgdGhlIGluZGV4IGZpbGUgaXMgZWl0aGVyIGJsYW5rLCBhICcjJyBjb21tZW50LAorICAgICAgICAvLyBvciBhIGNvbG9uLWRlbGltaXRlZCBsaW5lLiAgSW4gdGhlIGxhdHRlciBjYXNlIHRoZSBmaXJzdAorICAgICAgICAvLyBmaWVsZCBpcyB0aGUgSUQgYmVpbmcgZGVmaW5lZC4gIFRoZSBzZWNvbmQgZmllbGQgaXMgb25lIG9mCisgICAgICAgIC8vIHRocmVlIHN0cmluZ3M6ICJmaWxlIiwgImludGVybmFsIiwgb3IgImFsaWFzIi4gIFJlbWFpbmluZworICAgICAgICAvLyBmaWVsZHMgdmFyeSBhY2NvcmRpbmcgdGhlIHZhbHVlIGZvIHRoZSBzZWNvbmQgZmllbGQuICBTZWUKKyAgICAgICAgLy8gdGhlIGluZGV4IGZpbGUgaXRzZWxmIGZvciBmdXJ0aGVyIGRvY3VtZW50YXRpb24uCisgICAgICAgIGNhY2hlID0gbmV3IEhhc2h0YWJsZSgpOworICAgICAgICBpbnRlcm5hbENhY2hlID0gbmV3IEhhc2h0YWJsZSgpOworICAgICAgICBSZXNvdXJjZVJlYWRlciByID0gbmV3IFJlc291cmNlUmVhZGVyKCJUcmFuc2xpdGVyYXRvcl9pbmRleC50eHQiKTsKKyAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgU3RyaW5nIGxpbmUgPSBudWxsOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBsaW5lID0gci5yZWFkTGluZSgpOworICAgICAgICAgICAgfSBjYXRjaCAoamF2YS5pby5JT0V4Y2VwdGlvbiBlKSB7fQorICAgICAgICAgICAgaWYgKGxpbmUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gU2tpcCBvdmVyIHdoaXRlc3BhY2UKKyAgICAgICAgICAgIGludCBwb3MgPSAwOworICAgICAgICAgICAgd2hpbGUgKHBvcyA8IGxpbmUubGVuZ3RoKCkgJiYKKyAgICAgICAgICAgICAgICAgICBDaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKGxpbmUuY2hhckF0KHBvcykpKSB7CisgICAgICAgICAgICAgICAgKytwb3M7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBJZ25vcmUgYmxhbmsgbGluZXMgYW5kIGNvbW1lbnRzCisgICAgICAgICAgICBpZiAocG9zID09IGxpbmUubGVuZ3RoKCkgfHwgbGluZS5jaGFyQXQocG9zKSA9PSAnIycpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIFBhcnNlIGNvbG9uLWRlbGltaXRlZCBsaW5lCisgICAgICAgICAgICBpbnQgY29sb24gPSBsaW5lLmluZGV4T2YoJzonLCBwb3MpOworICAgICAgICAgICAgU3RyaW5nIElEID0gbGluZS5zdWJzdHJpbmcocG9zLCBjb2xvbik7CisgICAgICAgICAgICBwb3MgPSBjb2xvbisxOworICAgICAgICAgICAgY29sb24gPSBsaW5lLmluZGV4T2YoJzonLCBwb3MpOworICAgICAgICAgICAgU3RyaW5nIHR5cGUgPSBsaW5lLnN1YnN0cmluZyhwb3MsIGNvbG9uKTsKKyAgICAgICAgICAgIHBvcyA9IGNvbG9uKzE7CisKKyAgICAgICAgICAgIGlmICh0eXBlLmVxdWFscygiZmlsZSIpIHx8IHR5cGUuZXF1YWxzKCJpbnRlcm5hbCIpKSB7CisgICAgICAgICAgICAgICAgLy8gUmVzdCBvZiBsaW5lIGlzIDxyZXNvdXJjZT46PGVuY29kaW5nPjo8ZGlyZWN0aW9uPgorICAgICAgICAgICAgICAgIGNvbG9uID0gbGluZS5pbmRleE9mKCc6JywgcG9zKTsKKyAgICAgICAgICAgICAgICBjb2xvbiA9IGxpbmUuaW5kZXhPZignOicsIGNvbG9uKzEpOyAvLyBza2lwIG92ZXIgMSBjb2xvbgorICAgICAgICAgICAgICAgIFN0cmluZyBmaWxlTmFtZUFuZEVuY29kaW5nID0gbGluZS5zdWJzdHJpbmcocG9zLCBjb2xvbik7CisgICAgICAgICAgICAgICAgcG9zID0gY29sb24rMTsKKyAgICAgICAgICAgICAgICBib29sZWFuIGlzRm9yd2FyZCA9IGxpbmUuc3Vic3RyaW5nKHBvcykuZXF1YWxzKCJGT1JXQVJEIik7CisgICAgICAgICAgICAgICAgSGFzaHRhYmxlIGggPSB0eXBlLmVxdWFscygiaW50ZXJuYWwiKSA/IGludGVybmFsQ2FjaGU6Y2FjaGU7CisgICAgICAgICAgICAgICAgaC5wdXQoSUQsIChpc0ZvcndhcmQgPyAiZiIgOiAiciIpICsgZmlsZU5hbWVBbmRFbmNvZGluZyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGUuZXF1YWxzKCJhbGlhcyIpKSB7CisgICAgICAgICAgICAgICAgLy8gUmVzdCBvZiBsaW5lIGlzIHRoZSA8Z2V0SW5zdGFuY2VBcmc+CisgICAgICAgICAgICAgICAgY2FjaGUucHV0KElELCAiYSIgKyBsaW5lLnN1YnN0cmluZyhwb3MpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gVW5rbm93biB0eXBlCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkNhbid0IHBhcnNlIGxpbmU6ICIgKyBsaW5lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlZ2lzdGVyIG5vbi1ydWxlLWJhc2VkIHRyYW5zbGl0ZXJhdG9ycworICAgICAgICByZWdpc3RlckNsYXNzKEhhbmd1bEphbW9UcmFuc2xpdGVyYXRvci5fSUQsCisgICAgICAgICAgICAgICAgICAgICAgSGFuZ3VsSmFtb1RyYW5zbGl0ZXJhdG9yLmNsYXNzLCBudWxsKTsKKyAgICAgICAgcmVnaXN0ZXJDbGFzcyhKYW1vSGFuZ3VsVHJhbnNsaXRlcmF0b3IuX0lELAorICAgICAgICAgICAgICAgICAgICAgIEphbW9IYW5ndWxUcmFuc2xpdGVyYXRvci5jbGFzcywgbnVsbCk7CisgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHJlZ2lzdGVyQ2xhc3MoSGV4VG9Vbmljb2RlVHJhbnNsaXRlcmF0b3IuX0lELAorICAgICAgICAgICAgICAgICAgICAgIEhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yLmNsYXNzLCBudWxsKTsKKyAgICAgICAgcmVnaXN0ZXJDbGFzcyhVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvci5fSUQsCisgICAgICAgICAgICAgICAgICAgICAgVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IuY2xhc3MsIG51bGwpOworICAgICAgICByZWdpc3RlckNsYXNzKE51bGxUcmFuc2xpdGVyYXRvci5fSUQsCisgICAgICAgICAgICAgICAgICAgICAgTnVsbFRyYW5zbGl0ZXJhdG9yLmNsYXNzLCBudWxsKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L1VDaGFyYWN0ZXIuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvVUNoYXJhY3Rlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjk3NDZlYWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L1VDaGFyYWN0ZXIuamF2YQpAQCAtMCwwICsxLDE1MjkgQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L0F0dGljL1VDaGFyYWN0ZXIuamF2YSx2ICQgCisqICREYXRlOiAyMDAxLzAzLzI2IDIwOjM0OjM2ICQgCisqICRSZXZpc2lvbjogMS42ICQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKKworcGFja2FnZSBjb20uaWJtLnRleHQ7CisKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworCisvKioKKyogQSBzdGF0aWMgY2xhc3MgZGVzaWduZWQgdG8gYmUgYSBnZW5lcmljIGNvZGUgcG9pbnQgaW5mb3JtYXRpb24gc291cmNlIHRoYXQgCisqIGhhbmRsZXMgc3Vycm9nYXRlIHBhaXJzLjxicj4KKyogRGF0YSBmb3IgY29kZSBwb2ludCBpbmZvcm1hdGlvbiBvcmlnaW5hdGVzIGZyb20gVW5pY29kZSAzLjAgZGF0YSBmaWxlcywgCisqIFVuaWNvZGVEYXRhLnR4dCBhbmQgTWlycm9yLnR4dCwgZG93bmxvYWRhYmxlIGZyb20gdGhlIFVuaWNvZGUgQ29uc29ydGl1bSBzaXRlIAorKiBmdHA6Ly9mdHAudW5pY29kZS5vcmcvUHVibGljLzxicj4KKyogSUNVJ3MgZ2VubmFtZXMgYW5kIGdlbnByb3BzIHByb2dyYW1zIGFyZSB1c2VkIHRvIGNvbXBhY3QgdGhlIGluZm9ybWF0aW9uIGZyb20gCisqIHRoZSBhYm92ZSBtZW50aW9uZWQgZmlsZXMgYmVmb3JlIGJlaW5nIHVzZWQgYnkgdGhpcyBwYWNrYWdlLiBUaGUgYmluYXJ5IAorKiByZXN1bHQgZmlsZXMgYXJlIG5hbWVkIHVuYW1lcy5kYXQgYW5kIHVwcm9wcy5kYXQuIDxicj4KKyogQm90aCBhcmUgamFyZWQgd2l0aCB0aGUgcGFja2FnZSBmb3IgcmVsZWFzZSwgaGVuY2UgdG8gdXNlIHRoaXMgY2xhc3MgcGxlYXNlCisqIGFkZCB0aGUgamFyIGZpbGUgbmFtZSA8Y29kZT51Y2hhcmFjdGVyLmphcjwvY29kZT4gdG8geW91ciBjbGFzcyBwYXRoLjxicj4KKyogRS5nLiBJbiBXaW5kb3dzIDxjb2RlPnNldCBDTEFTU1BBVEg9JUNMQVNTUEFUSCU7JEpBUl9GSUxFX1BBVEgvdWNoYXJhY3Rlci5qYXIKKyogPC9jb2RlPjxicj4KKyogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRhdGEgZmlsZSBmb3JtYXQsIHBsZWFzZSByZWZlciB0byAKKyogPGEgaHJlZj1odHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovaWN1NGpodG1sL2NvbS9pYm0vdGV4dC9SZWFkTWUuaHRtbD4KKyogUmVhZCBNZTwvYT4uPGJyPgorKiBFYWNoIGNvZGUgcG9pbnQgdXNlZCBoZXJlIGluIGluIHRlcm1zIG9mIGEgMzIgYml0IGludC4gVGhpcyBpcyBzbyBhcyB0byAKKyogaGFuZGxlIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludHMgd2hpY2ggaGFzIDIxIGJpdCBpbiBzaXplLjxicj4KKyogQVBJcyBwcm92aWRlIHVwLXRvLWRhdGUgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiBvZiBqYXZhLmxhbmcuQ2hhcmFjdGVyLCA8YnI+CisqIGhlbmNlCisqIDx1bD4KKyogICA8bGk+IERlcHJlY2F0ZWQgQVBJcyBhcmUgbm90IGRlZmluZWQgaGVyZQorKiAgIDxsaT4gVUNoYXJhY3RlciBpcyBub3QgZGVzaWduZWQgdG8gYmUgYSBjaGFyIHdyYXBwZXIgYW5kIGRvZXMgbm90IGhhdmUgQVBJcyAKKyogICAgICAgIHRvIHdoaWNoIGludm9sdmVzIG1hbmFnZW1lbnQgb2YgdGhhdCBzaW5nbGUgY2hhci4gZS5nLiBjaGFyIAorKiAgICAgICAgY2hhclZhbHVlKCksIGludCBjb21wYXJlVG8oamF2YS5sYW5nLkNoYXJhY3RlciwgamF2YS5sYW5nLkNoYXJhY3RlcikgCisqICAgICAgICBldGMuCisqCSAgPGxpPiBUbyBoYW5kbGUgc3Vycm9nYXRlcywgaW50IHBhcmFtZXRlcnMgQVBJcyBhcmUgcHJvdmlkZWQKKyogICA8bGk+IEphdmEgc3BlY2lmaWMgY2hhcmFjdGVyIGluZm9ybWF0aW9uIGlzIG5vdCBkZWZpbmVkIGUuZy4gYm9vbGVhbiAKKyogICAgICAgIGlzSmF2YUlkZW50aWZpZXJQYXJ0KGNoYXIgY2gpCisqICAgPGxpPiBIYXMgZXh0cmEgbWV0aG9kcyB0byBmdWxseSB1dGlsaXplIHVwLXRvLWRhdGUgVW5pY29kZSBkYXRhIGluZm9ybWF0aW9uCisqICAgPGxpPiBQcm92aWRlcyBtZXRob2RzIHRvIGdldHMgY29kZSBwb2ludHMgZnJvbSBhIFVURi0xNiBjaGFyIG9yIHN1cnJvZ2F0ZSAKKyogICAgICAgIHBhaXJzCisqIDwvdWw+CisqIDxwPgorKiBEaWZmZXJlbmNlIGJldHdlZW4gVUNoYXJhY3RlciBhbmQgamF2YS5sYW5nLkNoYXJhY3RlcgorKiA8dWw+CisqICAgPGxpPiBVQ2hhcmFjdGVyIHN1cHBvcnRzIFVuaWNvZGUgMy4wIERhdGEgd2hpbGUgamF2YS5sYW5nLkNoYXJhY3RlciAKKyogICAgICAgIHN1cHBvcnRzIG9ubHkgVW5pY29kZSAyLjAuIDxicj4KKyogICAgICAgIE5vdGUgOiBVQ2hhcmFjdGVyIHdpbGwgc3VwcG9ydCBVbmljb2RlIDMuMSB3aGVuIGl0IG9mZmljaWFsbHkgcmVsZWFzZXMKKyogICA8bGk+IFVDaGFyYWN0ZXIgcHJvdmlkZXMgdGhlIHN1cHBvcnQgZm9yIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludHMuPGJyPgorKiAgICAgICAgSGVuY2UgdGhlIGNvZGUgcG9pbnQgdHlwZSB1c2VkIGlzIGFuIGludCAoc3VwcG9ydCBmb3IgMjEgYml0cykgd2hlcmUKKyogICAgICAgIGVsc2UgamF2YS5sYW5nLkNoYXJhY3RlciB1c2VzIGEgY2hhciAoMTYgYml0KQorKiAgIDxsaT4gVGhlIGJlbG93IGNvbnRyb2wgY29kZSBwb2ludHMgaGFkIHRoZWlyIHR5cGUgaXMgb3ZlcndyaXR0ZW4gYnkgSUNVIHRvIAorKiAgICAgICAgdGhlIHR5cGUgc2hvd24KKyogICAgICAgIDx1bD4KKyogICAgICAgICAgPGxpPiBUQUIgMHg5IDogVV9TUEFDRV9TRVBBUkFUT1IKKyogICAgICAgICAgPGxpPiBWVCAweGIgOiBVX1NQQUNFX1NFUEFSQVRPUgorKiAgICAgICAgICA8bGk+IExGIDB4YSA6IFVfUEFSQUdSQVBIX1NFUEFSQVRPUgorKiAgICAgICAgICA8bGk+IEZGIDB4YyA6IFVfTElORV9TRVBBUkFUT1IKKyogICAgICAgICAgPGxpPiBDUiAweGQgOiBVX1BBUkFHUkFQSF9TRVBBUkFUT1IKKyogICAgICAgICAgPGxpPiBGUyAweDFjIDogVV9QQVJBR1JBUEhfU0VQQVJBVE9SCisqICAgICAgICAgIDxsaT4gR1MgMHgxZCA6IFVfUEFSQUdSQVBIX1NFUEFSQVRPUgorKiAgICAgICAgICA8bGk+IFJTIDB4MWUgOiBVX1BBUkFHUkFQSF9TRVBBUkFUT1IKKyogICAgICAgICAgPGxpPiBVUyAweDFmIDogVV9TUEFDRV9TRVBBUkFUT1IKKyogICAgICAgICAgPGxpPiBOTCAweDg1IDogVV9QQVJBR1JBUEhfU0VQQVJBVE9SCisqICAgICAgICA8L3VsPgorKiAgICAgICAgQmVjYXVzZSBvZiB0aGVzZSB0eXBlIG92ZXJ3cml0ZXMsIHNvbWUgbWV0aG9kcyBtaWdodCBiZSBhZmZlY3RlZC4KKyogICA8bGk+IGphdmEubGFuZy5DaGFyYWN0ZXIgbWFwcyBjaGFyYWN0ZXJzICdBJyAtICdaJyBhbmQgJ2EnIC0gJ3onIHRvIHRoZSAKKyogICAgICAgIG51bWVyaWMgdmFsdWVzICcxMCcgLSAnMzUnLiBVQ2hhcmFjdGVyIGRvZXMgbm90IHRyZWF0IHRoZSBhYm92ZSAKKyogICAgICAgIGNvZGUgcG9pbnRzIGFzIGhhdmluZyBudW1lcmljIHZhbHVlcworKiAgIDxsaT4gRnVydGhlciBkZXRhaWwgZGlmZmVyZW5jZXMgY2FuIGJlIGRldGVybWluZWQgZnJvbSB0aGUgcHJvZ3JhbSAKKyogICAgICAgIDxhIGhyZWYgPSAuLi90ZXN0L3RleHQvVUNoYXJhY3RlckNvbXBhcmUuaHRtbD4KKyogICAgICAgIGNvbS5pYm0uaWN1LnRlc3QudGV4dC5VQ2hhcmFjdGVyQ29tcGFyZTwvYT4KKyogPC91bD4KKyogPC9wPiAKKyogRXhhbXBsZXMgb24gdXNpbmcgdGhpcyBjbGFzcyBpcyBsb2NhdGVkIGF0IHRoZSB0ZXN0IHByb2dyYW0gCisqIDxhIGhyZWYgPSAuLi90ZXN0L3RleHQvVUNoYXJhY3RlckNvbXBhcmUuaHRtbD4KKyogICAgICAgIGNvbS5pYm0uaWN1LnRlc3QudGV4dC5VQ2hhcmFjdGVyVGVzdDwvYT4KKyogQGF1dGhvciBTeW4gV2VlIFF1ZWsKKyogQHNpbmNlIG9jdCAwNiAyMDAwCisqIEBzZWUgY29tLmlibS50ZXh0LlVDaGFyYWN0ZXJDYXRlZ29yeQorKiBAc2VlIGNvbS5pYm0udGV4dC5VQ2hhcmFjdGVyRGlyZWN0aW9uCisqIEBzZWUgY29tLmlibS5pY3UudGVzdC50ZXh0LlVDaGFyYWN0ZXJDb21wYXJlCisqIEBzZWUgY29tLmlibS5pY3UudGVzdC50ZXh0LlVDaGFyYWN0ZXJUZXN0CisqLworCitwdWJsaWMgZmluYWwgY2xhc3MgVUNoYXJhY3RlcgoreyAKKyAgLy8gcHVibGljIHZhcmlhYmxlcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICAvKiogCisgICogVGhlIGxvd2VzdCBVbmljb2RlIGNvZGUgcG9pbnQgdmFsdWUuIENvZGUgcG9pbnRzIGFyZSBub24tbmUgTl9WQUxVRQorICAqLworICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNSU5fVkFMVUUgPSAwOworCisgIC8qKgorICAqIFRoZSBoaWdoZXN0IFVuaWNvZGUgY29kZSBwb2ludCB2YWx1ZSAoc2NhbGFyIHZhbHVlKSBhY2NvcmRpbmcgdG8gdGhlIAorICAqIFVuaWNvZGUgU3RhbmRhcmQuPGJyPiAKKyAgKiBUaGlzIGlzIGEgMjEtYml0IHZhbHVlICgyMSBiaXRzLCByb3VuZGVkIHVwKS48YnI+CisgICogVXAtdG8tZGF0ZSBVbmljb2RlIGltcGxlbWVudGF0aW9uIG9mIGphdmEubGFuZy5DaGFyYWN0ZXIuTUlOX1ZBTFVFCisgICovCisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1BWF9WQUxVRSA9IDB4MTBmZmZmOworICAKKyAgLyoqCisgICogVGhlIG1pbmltdW0gdmFsdWUgZm9yIFN1cHBsZW1lbnRhcnkgY29kZSBwb2ludHMKKyAgKi8KKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1VQUExFTUVOVEFSWV9NSU5fVkFMVUUgPSAweDEwMDAwOworICAKKyAgLyoqCisgICogVW5pY29kZSB2YWx1ZSB1c2VkIHdoZW4gdHJhbnNsYXRpbmcgaW50byBVbmljb2RlIGVuY29kaW5nIGZvcm0gYW5kIHRoZXJlIAorICAqIGlzIG5vIGV4aXN0aW5nIGNoYXJhY3Rlci4KKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSRVBMQUNFTUVOVF9DSEFSID0gJ1x1RkZGRCc7CisJCisJLy8gcHJvdGVjdGVkIHZhcmlhYmxlcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCQorCS8qKgorICAqIFNoaWZ0IGFuZCBtYXNrIHZhbHVlIGZvciBzdXJyb2dhdGVzCisgICovCisJcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgTEVBRF9TVVJST0dBVEVfU0hJRlRfID0gMTA7CisJcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgVFJBSUxfU1VSUk9HQVRFX01BU0tfID0gMHgzRkY7CisgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAvLyBwcml2YXRlIHZhcmlhYmxlcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCisgIC8qKgorICAqIERhdGFiYXNlIHN0b3JpbmcgdGhlIHNldHMgb2YgY2hhcmFjdGVyIHByb3BlcnR5CisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIFVDaGFyYWN0ZXJQcm9wZXJ0eURCIFBST1BFUlRZX0RCXzsKKyAgLyoqCisgICogSW5pdGlhbGl6YXRpb24gb2YgdGhlIFVDaGFyYWN0ZXJQcm9wZXJ0eURCIGluc3RhbmNlLiAKKyAgKiBSdW50aW1lRXhjZXB0aW9uIHRocm93biB3aGVuIGRhdGEgaXMgbWlzc2luZyBvciBkYXRhIGhhcyBiZWVuIGNvcnJ1cHRlZC4KKyAgKi8KKyAgc3RhdGljCisgIHsKKyAgICB0cnkKKyAgICB7CisgICAgICBQUk9QRVJUWV9EQl8gPSBuZXcgVUNoYXJhY3RlclByb3BlcnR5REIoKTsKKyAgICB9CisgICAgY2F0Y2ggKEV4Y2VwdGlvbiBlKQorICAgIHsKKyAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGUuZ2V0TWVzc2FnZSgpKTsKKyAgICB9CisgIH0KKworICAvKiogCisgICogT2Zmc2V0IHRvIGFkZCB0byBjb21iaW5lZCBzdXJyb2dhdGUgcGFpciB0byBhdm9pZCBtc2tpbmcuCisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTVVJST0dBVEVfT0ZGU0VUXyA9IAorICAgIFNVUFBMRU1FTlRBUllfTUlOX1ZBTFVFIC0gKDB4RDgwMCA8PCBMRUFEX1NVUlJPR0FURV9TSElGVF8pIC0gMHhEQzAwOworICAKKyAgLyoqCisgICogU3Vycm9nYXRlIGNvZGUgcG9pbnQgdmFsdWVzCisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTVVJST0dBVEVfTUlOX1ZBTFVFXyA9IDB4RDgwMDsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNVUlJPR0FURV9NQVhfVkFMVUVfID0gMHhERkZGOworICAKKyAgLyoqCisgICogVG8gZ2V0IHRoZSBsYXN0IGNoYXJhY3RlciBvdXQgZnJvbSBhIGRhdGEgdHlwZQorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTEFTVF9DSEFSX01BU0tfID0gMHhGRkZGOworICAKKyAgLyoqCisgICogVG8gZ2V0IHRoZSBsYXN0IGJ5dGUgb3V0IGZyb20gYSBkYXRhIHR5cGUKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExBU1RfQllURV9NQVNLXyA9IDB4RkY7CisgIAorICAvKioKKyAgKiBTaGlmdCAxNiBiaXRzCisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTSElGVF8xNl8gPSAxNjsKKyAgCisgIC8qKgorICAqIE1pbmltdW0gdmFsdWUgdGhhdCBpbmRpY2F0ZXMgaWYgYSBjaGFyYWN0ZXIgaXMgbm90LWEtY2hhcmFjdGVyCisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBOT1RfQV9DSEFSX1NVRkZJWF9NSU5fID0gMHhGRkZFOworICAKKyAgLyoqCisgICogRGVjaW1hbCByYWRpeAorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgREVDSU1BTF9SQURJWF8gPSAxMDsKKyAgCisgIC8qKgorICAqIE5vIGJyZWFrIHNwYWNlIGNvZGUgcG9pbnQKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE5PX0JSRUFLX1NQQUNFXyA9IDB4QTA7CisgIAorICAvKioKKyAgKiBOYXJyb3cgbm8gYnJlYWsgc3BhY2UgY29kZSBwb2ludAorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTkFSUk9XX05PX0JSRUFLX1NQQUNFXyA9IDB4MjAyRjsKKyAgCisgIC8qKgorICAqIFplcm8gd2lkdGggbm8gYnJlYWsgc3BhY2UgY29kZSBwb2ludAorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgWkVST19XSURUSF9OT19CUkVBS19TUEFDRV8gPSAweEZFRkY7CisgIAorICAvKioKKyAgKiBJZGVvZ3JhcGhpYyBudW1iZXIgemVybyBjb2RlIHBvaW50CisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBJREVPR1JBUEhJQ19OVU1CRVJfWkVST18gPSAweDMwMDc7CisgICAgICAgIAorICAvKioKKyAgKiBDSksgSWRlb2dyYXBoLCBGaXJzdCBjb2RlIHBvaW50CisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSktfSURFT0dSQVBIX0ZJUlNUXyA9IDB4NGUwMDsKKyAgCisgIC8qKgorICAqIENKSyBJZGVvZ3JhcGgsIFNlY29uZCBjb2RlIHBvaW50CisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSktfSURFT0dSQVBIX1NFQ09ORF8gPSAweDRlOGM7CisgICAgICAgIAorICAvKioKKyAgKiBDSksgSWRlb2dyYXBoLCBUaGlyZCBjb2RlIHBvaW50CisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSktfSURFT0dSQVBIX1RISVJEXyA9IDB4NGUwOTsKKyAgCisgIC8qKgorICAqIENKSyBJZGVvZ3JhcGgsIEZvdXJ0aCBjb2RlIHBvaW50CisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSktfSURFT0dSQVBIX0ZPVVJUSF8gPSAweDU2ZDg7CisgIAorICAvKioKKyAgKiBDSksgSWRlb2dyYXBoLCBGSUZUSCBjb2RlIHBvaW50CisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSktfSURFT0dSQVBIX0ZJRlRIXyA9IDB4NGU5NDsKKyAgCisgIC8qKgorICAqIENKSyBJZGVvZ3JhcGgsIFNpeHRoIGNvZGUgcG9pbnQKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENKS19JREVPR1JBUEhfU0lYVEhfID0gMHg1MTZkOworICAgICAgICAKKyAgLyoqCisgICogQ0pLIElkZW9ncmFwaCwgU2V2ZW50aCBjb2RlIHBvaW50CisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSktfSURFT0dSQVBIX1NFVkVOVEhfID0gMHg0ZTAzOworICAKKyAgLyoqCisgICogQ0pLIElkZW9ncmFwaCwgRWlnaHRoIGNvZGUgcG9pbnQKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENKS19JREVPR1JBUEhfRUlHSFRIXyA9IDB4NTE2YjsKKyAgCisgIC8qKgorICAqIENKSyBJZGVvZ3JhcGgsIE5pbmV0aCBjb2RlIHBvaW50CisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSktfSURFT0dSQVBIX05JTkVUSF8gPSAweDRlNWQ7CisgIAorICAvKioKKyAgKiBBcHBsaWNhdGlvbiBQcm9ncmFtIGNvbW1hbmQgY29kZSBwb2ludAorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQVBQTElDQVRJT05fUFJPR1JBTV9DT01NQU5EXyA9IDB4MDA5RjsKKyAgCisgIC8qKgorICAqIFVuaXQgc2VwZXJhdG9yIGNvZGUgcG9pbnQKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFVOSVRfU0VQRVJBVE9SXyA9IDB4MDAxRjsKKyAgCisgIC8qKgorICAqIERlbGV0ZSBjb2RlIHBvaW50CisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBERUxFVEVfID0gMHgwMDdGOworICAKKyAgLyoqCisgICogVHVya2lzaCBJU08gNjM5IDIgY2hhcmFjdGVyIGNvZGUKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRVUktJU0hfID0gInRyIjsKKyAgCisgIC8qKgorICAqIEF6ZXJiYWlqYW5pIElTTyA2MzkgMiBjaGFyYWN0ZXIgY29kZQorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVpFUkJBSUpBTklfID0gImF6IjsKKyAgCisgIC8qKgorICAqIExpdGh1YW5pYW4gSVNPIDYzOSAyIGNoYXJhY3RlciBjb2RlCisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBMSVRIVUFOSUFOXyA9ICJsdCI7CisgIAorICAvKioKKyAgKiBMYXRpbiBvd2VyY2FzZSBpCisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgTEFUSU5fU01BTExfTEVUVEVSX0lfID0gMHg2OTsKKyAgCisgIC8qKgorICAqIExhdGluIHVwcGVyY2FzZSBJCisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgTEFUSU5fQ0FQSVRBTF9MRVRURVJfSV8gPSAweDQ5OworICAKKyAgLyoqCisgICogTGF0aW4gY2FwaXRhbCBsZXR0ZXIgaSB3aXRoIGRvdCBhYm92ZQorICAqLyAKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBMQVRJTl9DQVBJVEFMX0xFVFRFUl9JX1dJVEhfRE9UX0FCT1ZFXyA9IDB4MTMwOworICAKKyAgLyoqCisgICogTGF0aW4gc21hbGwgbGV0dGVyIGkgd2l0aCBkb3QgYWJvdmUKKyAgKi8gCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgTEFUSU5fU01BTExfTEVUVEVSX0RPVExFU1NfSV8gPSAweDEzMTsKKyAgCisgIC8qKgorICAqIENvbWJpbmluZyBkb3QgYWJvdmUKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBDT01CSU5JTkdfRE9UX0FCT1ZFXyA9IDB4MzA3OworICAKKyAgLyoqCisgICogR3JlZWsgY2FwaXRhbCBsZXR0ZXIgc2lnbWEKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBHUkVFS19DQVBJVEFMX0xFVFRFUl9TSUdNQV8gPSAweDNhMzsKKyAgCisgIC8qKgorICAqIEdyZWVrIHNtYWxsIGxldHRlciBzaWdtYQorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIEdSRUVLX1NNQUxMX0xFVFRFUl9TSUdNQV8gPSAweDNjMzsKKyAgCisgIC8qKgorICAqIEdyZWVrIHNtYWxsIGxldHRlciByaG8KKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhciBHUkVFS19TTUFMTF9MRVRURVJfUkhPXyA9IDB4M2MyOworICAKKyAgLyoqCisgICogSVNPIGNvbnRyb2wgY2hhcmFjdGVyIGZpcnN0IHJhbmdlIHVwcGVyIGxpbWl0IDB4MCAtIDB4MUYKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IElTT19DT05UUk9MX0ZJUlNUX1JBTkdFX01BWF8gPSAweDFGOworICAKKyAgLy8gY29uc3RydWN0b3IgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAKKyAgLyoqCisgICogUHJpdmF0ZSBjb25zdHJ1Y3RvciB0byBwcmV2ZW50IGluc3RhbnRpYXRpb24KKyAgKi8KKyAgcHJpdmF0ZSBVQ2hhcmFjdGVyKCkKKyAgeworICB9CisgIAorICAvLyBwdWJsaWMgbWV0aG9kcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIFJldHJpZXZlcyB0aGUgZGVjaW1hbCBudW1lcmljIHZhbHVlIG9mIGEgZGlnaXQgY29kZSBwb2ludC48YnI+CisgICogQSBjb2RlIHBvaW50IGlzIGEgdmFsaWQgZGlnaXQgaWYgdGhlIGZvbGxvd2luZyBpcyB0cnVlOiAKKyAgKiA8dWw+CisgICogPGxpPiBUaGUgbWV0aG9kIGlzRGlnaXQoY2gpIGlzIHRydWUgYW5kIHRoZSBVbmljb2RlIGRlY2ltYWwgZGlnaXQgdmFsdWUgb2YgCisgICogICAgICBjaCBpcyBsZXNzIHRoYW4gdGhlIHNwZWNpZmllZCByYWRpeC4gCisgICogPC91bD4KKyAgKiBOb3RlIHRoaXMgbWV0aG9kLCB1bmxpa2UgamF2YS5sYW5nLkNoYXJhY3Rlci5kaWdpdCgpIGRvZXMgbm90IHJlZ2FyZCB0aGUgCisgICogYXNjaWkgY2hhcmFjdGVycyAnQScgLSAnWicgYW5kICdhJyAtICd6JyBhcyBkaWdpdHMuIAorICAqIEBwYXJhbSBjaCB0aGUgY29kZSBwb2ludCB3aG9zZSBudW1lcmljIHZhbHVlIGlzIHRvIGJlIGRldGVybWluZWQKKyAgKiBAcGFyYW0gcmFkaXggdGhlIHJhZGl4IHdoaWNoIHRoZSBkaWdpdCBpcyB0byBiZSBjb252ZXJ0ZWQgdG8KKyAgKiBAcmV0dXJuIHRoZSBudW1lcmljIHZhbHVlIG9mIHRoZSBjb2RlIHBvaW50IGNoIGluIHRoZSBhcmd1bWVudCByYWRpeCwKKyAgKiAgICAgICAgIHRoaXMgbWV0aG9kIHJldHVybnMgLTEgaWYgY2ggaXMgbm90IGEgdmFsaWQgZGlnaXQgY29kZSBwb2ludCBvciAKKyAgKiAgICAgICAgIGlmIGl0cyBkaWdpdCB2YWx1ZSBleGNlZWRzIHRoZSByYWRpeC4KKyAgKi8KKyAgcHVibGljIHN0YXRpYyBpbnQgZGlnaXQoaW50IGNoLCBpbnQgcmFkaXgpCisgIHsKKyAgICBpbnQgcHJvcHMgPSBnZXRQcm9wcyhjaCk7CisgICAgaW50IHJlc3VsdCA9IC0xOworICAgIC8vIGlmIHByb3BzID09IDAsIGl0IHdpbGwganVzdCBmYWxsIHRocm91Z2ggYW5kIHJldHVybiAtMQorICAgIGlmICghVUNoYXJhY3RlclByb3BlcnR5REIuaXNFeGNlcHRpb25JbmRpY2F0b3IocHJvcHMpKSB7CisgICAgICAvLyBub3QgY29udGFpbmVkIGluIGV4Y2VwdGlvbiBkYXRhCisgICAgICBpZiAoVUNoYXJhY3RlclByb3BlcnR5REIuZ2V0UHJvcFR5cGUocHJvcHMpID09IAorICAgICAgICAgIFVDaGFyYWN0ZXJDYXRlZ29yeS5ERUNJTUFMX0RJR0lUX05VTUJFUikgeworICAgICAgICByZXN1bHQgPSBVQ2hhcmFjdGVyUHJvcGVydHlEQi5nZXRTaWduZWRWYWx1ZShwcm9wcyk7CisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgLy8gY29udGFpbmVkIGluIGV4Y2VwdGlvbiBkYXRhCisgICAgICBpbnQgaW5kZXggPSBVQ2hhcmFjdGVyUHJvcGVydHlEQi5nZXRFeGNlcHRpb25JbmRleChwcm9wcyk7CisgICAgICBpZiAoUFJPUEVSVFlfREJfLmhhc0V4Y2VwdGlvblZhbHVlKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHlEQi5FWENfRElHSVRfVkFMVUVfKSkgeworICAgICAgICByZXN1bHQgID0gUFJPUEVSVFlfREJfLmdldEV4Y2VwdGlvbihpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eURCLkVYQ19ESUdJVF9WQUxVRV8pICYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExBU1RfQ0hBUl9NQVNLXzsgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgaWYgKCFQUk9QRVJUWV9EQl8uaGFzRXhjZXB0aW9uVmFsdWUoaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eURCLkVYQ19ERU5PTUlOQVRPUl9WQUxVRV8pIAorICAgICAgICAgICAgJiYgUFJPUEVSVFlfREJfLmhhc0V4Y2VwdGlvblZhbHVlKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5REIuRVhDX05VTUVSSUNfVkFMVUVfKSkgeworICAgICAgICAgIHJlc3VsdCAgPSBQUk9QRVJUWV9EQl8uZ2V0RXhjZXB0aW9uKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHlEQi5FWENfTlVNRVJJQ19WQUxVRV8pOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIAorICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICByZXN1bHQgPSBnZXRIYW5EaWdpdChjaCk7CisgICAgfQorICAgIAorICAgIGlmIChyZXN1bHQgPCAwIHx8IHJlc3VsdCA+PSByYWRpeCkgeworICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworICB9CisgIAorICAvKioKKyAgKiBSZXRyaWV2ZXMgdGhlIGRlY2ltYWwgbnVtZXJpYyB2YWx1ZSBvZiBhIGRpZ2l0IGNvZGUgcG9pbnQgaW4gcmFkaXggMTA8YnI+CisgICogTm90ZSB0aGlzIG1ldGhvZCwgdW5saWtlIGphdmEubGFuZy5DaGFyYWN0ZXIuZGlnaXQoKSBkb2VzIG5vdCByZWdhcmQgdGhlIAorICAqIGFzY2lpIGNoYXJhY3RlcnMgJ0EnIC0gJ1onIGFuZCAnYScgLSAneicgYXMgZGlnaXRzLiAKKyAgKiBAcGFyYW0gY2ggdGhlIGNvZGUgcG9pbnQgd2hvc2UgbnVtZXJpYyB2YWx1ZSBpcyB0byBiZSBkZXRlcm1pbmVkCisgICogQHJldHVybiB0aGUgbnVtZXJpYyB2YWx1ZSBvZiB0aGUgY29kZSBwb2ludCBjaCwgdGhpcyBtZXRob2QgcmV0dXJucyAtMSBpZiAKKyAgKiAgICAgICAgIGNoIGlzIG5vdCBhIHZhbGlkIGRpZ2l0IGNvZGUgcG9pbnQKKyAgKi8KKyAgcHVibGljIHN0YXRpYyBpbnQgZGlnaXQoaW50IGNoKQorICB7CisgICAgcmV0dXJuIGRpZ2l0KGNoLCBERUNJTUFMX1JBRElYXyk7CisgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC8qKgorICAqIFJldHVybnMgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSBvZiB0aGUgY29kZSBwb2ludCBhcyBhIG5vbm5lZ2F0aXZlIAorICAqIGludGVnZXIuIDxicj4KKyAgKiBJZiB0aGUgY29kZSBwb2ludCBkb2VzIG5vdCBoYXZlIGEgbnVtZXJpYyB2YWx1ZSwgdGhlbiAtMSBpcyByZXR1cm5lZC4gPGJyPgorICAqIElmIHRoZSBjb2RlIHBvaW50IGhhcyBhIG51bWVyaWMgdmFsdWUgdGhhdCBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYXMgYSAKKyAgKiBub25uZWdhdGl2ZSBpbnRlZ2VyIChmb3IgZXhhbXBsZSwgYSBmcmFjdGlvbmFsIHZhbHVlKSwgdGhlbiAtMiBpcyByZXR1cm5lZC4KKyAgKiA8YnI+CisgICogTm90ZSB0aGlzIG1ldGhvZCwgdW5saWtlIGphdmEubGFuZy5DaGFyYWN0ZXIuZGlnaXQoKSBkb2VzIG5vdCByZWdhcmQgdGhlIAorICAqIGFzY2lpIGNoYXJhY3RlcnMgJ0EnIC0gJ1onIGFuZCAnYScgLSAneicgYXMgbnVtYmVycy4gCisgICogQHBhcmFtIGNoIFVuaWNvZGUgY29kZSBwb2ludAorICAqIEByZXR1cm4gbnVtZXJpYyB2YWx1ZSBvZiB0aGUgY29kZSBwb2ludCBhcyBhIG5vbm5lZ2F0aXZlIGludGVnZXIKKyAgKi8KKyAgcHVibGljIHN0YXRpYyBpbnQgZ2V0TnVtZXJpY1ZhbHVlKGludCBjaCkKKyAgeworICAgIGludCBwcm9wcyA9IGdldFByb3BzKGNoKTsKKyAgICBpbnQgdHlwZSA9IFVDaGFyYWN0ZXJQcm9wZXJ0eURCLmdldFByb3BUeXBlKHByb3BzKTsKKyAgICAKKyAgICAvLyBpZiBwcm9wcyA9PSAwLCBpdCB3aWxsIGp1c3QgZmFsbCB0aHJvdWdoIGFuZCByZXR1cm4gLTEKKyAgICBpZiAodHlwZSAhPSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuREVDSU1BTF9ESUdJVF9OVU1CRVIgJiYKKyAgICAgICAgdHlwZSAhPSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTEVUVEVSX05VTUJFUiAmJgorICAgICAgICB0eXBlICE9IFVDaGFyYWN0ZXJDYXRlZ29yeS5PVEhFUl9OVU1CRVIpIHsKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgICAKKyAgICBpbnQgcmVzdWx0ID0gLTE7CisgICAgaWYgKCFVQ2hhcmFjdGVyUHJvcGVydHlEQi5pc0V4Y2VwdGlvbkluZGljYXRvcihwcm9wcykpIHsKKyAgICAgIC8vIG5vdCBjb250YWluZWQgaW4gZXhjZXB0aW9uIGRhdGEKKyAgICAgIHJlc3VsdCA9IFVDaGFyYWN0ZXJQcm9wZXJ0eURCLmdldFNpZ25lZFZhbHVlKHByb3BzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAvLyBjb250YWluZWQgaW4gZXhjZXB0aW9uIGRhdGEKKyAgICAgIGludCBpbmRleCA9IFVDaGFyYWN0ZXJQcm9wZXJ0eURCLmdldEV4Y2VwdGlvbkluZGV4KHByb3BzKTsKKyAgICAgIGlmIChQUk9QRVJUWV9EQl8uaGFzRXhjZXB0aW9uVmFsdWUoaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eURCLkVYQ19ESUdJVF9WQUxVRV8pKSB7CisgICAgICAgIHJlc3VsdCAgPSBQUk9QRVJUWV9EQl8uZ2V0RXhjZXB0aW9uKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHlEQi5FWENfRElHSVRfVkFMVUVfKTsgCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgaWYgKCFQUk9QRVJUWV9EQl8uaGFzRXhjZXB0aW9uVmFsdWUoaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eURCLkVYQ19ERU5PTUlOQVRPUl9WQUxVRV8pCisgICAgICAgICAgICAmJiBQUk9QRVJUWV9EQl8uaGFzRXhjZXB0aW9uVmFsdWUoaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5REIuRVhDX05VTUVSSUNfVkFMVUVfKSkgeworICAgICAgICAgIHJlc3VsdCAgPSBQUk9QRVJUWV9EQl8uZ2V0RXhjZXB0aW9uKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5REIuRVhDX05VTUVSSUNfVkFMVUVfKTsgCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgCisgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgIHJlc3VsdCA9IGdldEhhbkRpZ2l0KGNoKTsKKyAgICB9CisgICAgCisgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgIHJldHVybiAtMjsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorICAKKyAgLyoqCisgICogUmV0dXJucyBhIHZhbHVlIGluZGljYXRpbmcgYSBjb2RlIHBvaW50J3MgVW5pY29kZSBjYXRlZ29yeS48YnI+CisgICogVXAtdG8tZGF0ZSBVbmljb2RlIGltcGxlbWVudGF0aW9uIG9mIGphdmEubGFuZy5DaGFyYWN0ZXIuZ2V0VHlwZSgpIGV4Y2VwdCAKKyAgKiBmb3IgdGhlIGFib3ZlIG1lbnRpb25lZCBjb2RlIHBvaW50cyB0aGF0IGhhZCB0aGVpciBjYXRlZ29yeSBjaGFuZ2VkLjxicj4KKyAgKiBSZXR1cm4gcmVzdWx0cyBhcmUgY29uc3RhbnRzIGZyb20gdGhlIGludGVyZmFjZSAKKyAgKiA8YSBocmVmPVVDaGFyYWN0ZXJDYXRlZ29yeS5odG1sPlVDaGFyYWN0ZXJDYXRlZ29yeTwvYT4KKyAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB3aG9zZSB0eXBlIGlzIHRvIGJlIGRldGVybWluZWQKKyAgKiBAcmV0dXJuIGNhdGVnb3J5IHdoaWNoIGlzIGEgdmFsdWUgb2YgVUNoYXJhY3RlckNhdGVnb3J5CisgICovCisgIHB1YmxpYyBzdGF0aWMgaW50IGdldFR5cGUoaW50IGNoKQorICB7CisgICAgcmV0dXJuIFVDaGFyYWN0ZXJQcm9wZXJ0eURCLmdldFByb3BUeXBlKGdldFByb3BzKGNoKSk7CisgIH0KKyAgIAorICAvKioKKyAgKiBEZXRlcm1pbmVzIGlmIGEgY29kZSBwb2ludCBoYXMgYSBkZWZpbmVkIG1lYW5pbmcgaW4gdGhlIHVwLXRvLWRhdGUgVW5pY29kZQorICAqIHN0YW5kYXJkLjxicj4KKyAgKiBFLmcuIHN1cHBsZW1lbnRhcnkgY29kZSBwb2ludHMgdGhvdWdoIGFsbG9jYXRlZCBzcGFjZSBhcmUgbm90IGRlZmluZWQgaW4gCisgICogVW5pY29kZSB5ZXQuPGJyPgorICAqIFVwLXRvLWRhdGUgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiBvZiBqYXZhLmxhbmcuQ2hhcmFjdGVyLmlzRGVmaW5lZCgpCisgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgdG8gYmUgZGV0ZXJtaW5lZCBpZiBpdCBpcyBkZWZpbmVkIGluIHRoZSBtb3N0IGN1cnJlbnQgCisgICogICAgICAgIHZlcnNpb24gb2YgVW5pY29kZQorICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIGNvZGUgcG9pbnQgaXMgZGVmaW5lZCBpbiB1bmljb2RlCisgICovCisgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0RlZmluZWQoaW50IGNoKQorICB7CisgICAgcmV0dXJuIGdldFByb3BzKGNoKSAhPSAwOworICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAvKioKKyAgKiBEZXRlcm1pbmVzIGlmIGEgY29kZSBwb2ludCBpcyBhIGRpZ2l0Ljxicj4KKyAgKiBOb3RlIHRoaXMgbWV0aG9kLCB1bmxpa2UgamF2YS5sYW5nLkNoYXJhY3Rlci5pc0RpZ2l0KCkgZG9lcyBub3QgcmVnYXJkIHRoZSAKKyAgKiBhc2NpaSBjaGFyYWN0ZXJzICdBJyAtICdaJyBhbmQgJ2EnIC0gJ3onIGFzIGRpZ2l0cy48YnI+CisgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIGEgZGlnaXQKKyAgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBjb2RlIHBvaW50IGlzIGEgZGlnaXQKKyAgKi8KKyAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzRGlnaXQoaW50IGNoKQorICB7CisgICAgaW50IGNhdCA9IGdldFR5cGUoY2gpOworICAgIC8vIGlmIHByb3BzID09IDAsIGl0IHdpbGwganVzdCBmYWxsIHRocm91Z2ggYW5kIHJldHVybiBmYWxzZQorICAgIHJldHVybiBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkRFQ0lNQUxfRElHSVRfTlVNQkVSIHx8IAorICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5Lk9USEVSX05VTUJFUiB8fAorICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkxFVFRFUl9OVU1CRVI7CisgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC8qKgorICAqIERldGVybWluZXMgaWYgdGhlIHNwZWNpZmllZCBjb2RlIHBvaW50IGlzIGFuIElTTyBjb250cm9sIGNoYXJhY3Rlci48YnI+CisgICogQSBjb2RlIHBvaW50IGlzIGNvbnNpZGVyZWQgdG8gYmUgYW4gSVNPIGNvbnRyb2wgY2hhcmFjdGVyIGlmIGl0IGlzIGluIHRoZSAKKyAgKiByYW5nZSAmIzkydTAwMDAgdGhyb3VnaCAmIzkydTAwMUYgb3IgaW4gdGhlIHJhbmdlICYjOTJ1MDA3RiB0aHJvdWdoIAorICAqICYjOTJ1MDA5Ri48YnI+CisgICogVXAtdG8tZGF0ZSBVbmljb2RlIGltcGxlbWVudGF0aW9uIG9mIGphdmEubGFuZy5DaGFyYWN0ZXIuaXNJU09Db250cm9sKCkKKyAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgYW4gSVNPIGNvbnRyb2wgY2hhcmFjdGVyCisgICogQHJldHVybiB0cnVlIGlmIGNvZGUgcG9pbnQgaXMgYSBJU08gY29udHJvbCBjaGFyYWN0ZXIKKyAgKi8KKyAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzSVNPQ29udHJvbChpbnQgY2gpCisgIHsKKyAgICByZXR1cm4gY2ggPj0gMCAmJiBjaCA8PSBBUFBMSUNBVElPTl9QUk9HUkFNX0NPTU1BTkRfICYmIAorICAgICAgICAgICAoKGNoIDw9IFVOSVRfU0VQRVJBVE9SXykgfHwgKGNoID49IERFTEVURV8pKTsKKyAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLyoqCisgICogRGV0ZXJtaW5lcyBpZiB0aGUgc3BlY2lmaWVkIGNvZGUgcG9pbnQgaXMgYSBsZXR0ZXIuPGJyPgorICAqIFVwLXRvLWRhdGUgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiBvZiBqYXZhLmxhbmcuQ2hhcmFjdGVyLmlzTGV0dGVyKCkKKyAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgYSBsZXR0ZXIKKyAgKiBAcmV0dXJuIHRydWUgaWYgY29kZSBwb2ludCBpcyBhIGxldHRlcgorICAqLworICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNMZXR0ZXIoaW50IGNoKQorICB7CisgICAgaW50IGNhdCA9IGdldFR5cGUoY2gpOworICAgIC8vIGlmIHByb3BzID09IDAsIGl0IHdpbGwganVzdCBmYWxsIHRocm91Z2ggYW5kIHJldHVybiBmYWxzZQorICAgIHJldHVybiBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlVQUEVSQ0FTRV9MRVRURVIgfHwgCisgICAgICAgICAgIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTE9XRVJDQVNFX0xFVFRFUiB8fCAKKyAgICAgICAgICAgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5USVRMRUNBU0VfTEVUVEVSIHx8IAorICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5Lk1PRElGSUVSX0xFVFRFUiB8fAorICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5Lk9USEVSX0xFVFRFUjsKKyAgfQorICAgICAgICAgICAgCisgIC8qKgorICAqIERldGVybWluZXMgaWYgdGhlIHNwZWNpZmllZCBjb2RlIHBvaW50IGlzIGEgbGV0dGVyIG9yIGRpZ2l0Ljxicj4KKyAgKiBOb3RlIHRoaXMgbWV0aG9kLCB1bmxpa2UgamF2YS5sYW5nLkNoYXJhY3RlciBkb2VzIG5vdCByZWdhcmQgdGhlIGFzY2lpIAorICAqIGNoYXJhY3RlcnMgJ0EnIC0gJ1onIGFuZCAnYScgLSAneicgYXMgZGlnaXRzLgorICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IHRvIGRldGVybWluZSBpZiBpdCBpcyBhIGxldHRlciBvciBhIGRpZ2l0CisgICogQHJldHVybiB0cnVlIGlmIGNvZGUgcG9pbnQgaXMgYSBsZXR0ZXIgb3IgYSBkaWdpdAorICAqLworICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNMZXR0ZXJPckRpZ2l0KGludCBjaCkKKyAgeworICAgIHJldHVybiBpc0RpZ2l0KGNoKSB8fCBpc0xldHRlcihjaCk7CisgIH0KKyAgICAKKyAgLyoqCisgICogRGV0ZXJtaW5lcyBpZiB0aGUgc3BlY2lmaWVkIGNvZGUgcG9pbnQgaXMgYSBsb3dlcmNhc2UgY2hhcmFjdGVyLjxicj4KKyAgKiBVbmljb2RlRGF0YSBvbmx5IGNvbnRhaW5zIGNhc2UgbWFwcGluZ3MgZm9yIGNvZGUgcG9pbnRzIHdoZXJlIHRoZXkgYXJlIAorICAqIG9uZS10by1vbmUgbWFwcGluZ3M7IGl0IGFsc28gb21pdHMgaW5mb3JtYXRpb24gYWJvdXQgY29udGV4dC1zZW5zaXRpdmUgCisgICogY2FzZSBtYXBwaW5ncy48YnI+IEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFVuaWNvZGUgY2FzZSBtYXBwaW5nIHBsZWFzZSAKKyAgKiByZWZlciB0byB0aGUgPGEgaHJlZj1odHRwOi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvcmVwb3J0cy90cjIxLz4KKyAgKiBUZWNobmljYWwgcmVwb3J0ICMyMTwvYT4uPGJyPgorICAqIFVwLXRvLWRhdGUgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiBvZiBqYXZhLmxhbmcuQ2hhcmFjdGVyLmlzTG93ZXJDYXNlKCkKKyAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgaW4gbG93ZXJjYXNlCisgICogQHJldHVybiB0cnVlIGlmIGNvZGUgcG9pbnQgaXMgYSBsb3dlcmNhc2UgY2hhcmFjdGVyCisgICovCisgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0xvd2VyQ2FzZShpbnQgY2gpCisgIHsKKyAgICAvLyBpZiBwcm9wcyA9PSAwLCBpdCB3aWxsIGp1c3QgZmFsbCB0aHJvdWdoIGFuZCByZXR1cm4gZmFsc2UKKyAgICByZXR1cm4gZ2V0VHlwZShjaCkgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkxPV0VSQ0FTRV9MRVRURVI7CisgIH0KKyAgIAorICAvKioKKyAgKiBEZXRlcm1pbmVzIGlmIHRoZSBzcGVjaWZpZWQgY29kZSBwb2ludCBpcyBhIHdoaXRlIHNwYWNlIGNoYXJhY3Rlci48YnI+CisgICogQSBjb2RlIHBvaW50IGlzIGNvbnNpZGVyZWQgdG8gYmUgYW4gd2hpdGVzcGFjZSBjaGFyYWN0ZXIgaWYgYW5kIG9ubHkKKyAgKiBpZiBpdCBzYXRpc2ZpZXMgb25lIG9mIHRoZSBmb2xsb3dpbmcgY3JpdGVyaWE6CisgICogPHVsPgorICAqIDxsaT4gSXQgaXMgYSBVbmljb2RlIHNwYWNlIHNlcGFyYXRvciAoY2F0ZWdvcnkgIlpzIiksIGJ1dCBpcyBub3QKKyAgKiAgICAgIGEgbm8tYnJlYWsgc3BhY2UgKCYjOTJ1MDBBMCBvciAmIzkydTIwMkYgb3IgJiM5MnVGRUZGKS4KKyAgKiA8bGk+IEl0IGlzIGEgVW5pY29kZSBsaW5lIHNlcGFyYXRvciAoY2F0ZWdvcnkgIlpsIikuCisgICogPGxpPiBJdCBpcyBhIFVuaWNvZGUgcGFyYWdyYXBoIHNlcGFyYXRvciAoY2F0ZWdvcnkgIlpwIikuCisgICogPC91bD4KKyAgKiBVcC10by1kYXRlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gb2YgamF2YS5sYW5nLkNoYXJhY3Rlci5pc1doaXRlc3BhY2UoKS4KKyAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgYSB3aGl0ZSBzcGFjZQorICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIGNvZGUgcG9pbnQgaXMgYSB3aGl0ZSBzcGFjZSBjaGFyYWN0ZXIKKyAgKi8KKyAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzV2hpdGVzcGFjZShpbnQgY2gpCisgIHsKKyAgICBpbnQgY2F0ID0gZ2V0VHlwZShjaCk7CisgICAgLy8gZXhjbHVkZSBuby1icmVhayBzcGFjZXMKKyAgICAvLyBpZiBwcm9wcyA9PSAwLCBpdCB3aWxsIGp1c3QgZmFsbCB0aHJvdWdoIGFuZCByZXR1cm4gZmFsc2UKKyAgICByZXR1cm4gKGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuU1BBQ0VfU0VQQVJBVE9SIHx8IAorICAgICAgICAgICAgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5MSU5FX1NFUEFSQVRPUiB8fAorICAgICAgICAgICAgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5QQVJBR1JBUEhfU0VQQVJBVE9SKSAmJiAKKyAgICAgICAgICAgIChjaCAhPSBOT19CUkVBS19TUEFDRV8pICYmIChjaCAhPSBOQVJST1dfTk9fQlJFQUtfU1BBQ0VfKSAmJiAKKyAgICAgICAgICAgIChjaCAhPSBaRVJPX1dJRFRIX05PX0JSRUFLX1NQQUNFXyk7CisgIH0KKyAgIAorICAvKioKKyAgKiBEZXRlcm1pbmVzIGlmIHRoZSBzcGVjaWZpZWQgY29kZSBwb2ludCBpcyBhIFVuaWNvZGUgc3BlY2lmaWVkIHNwYWNlIAorICAqIGNoYXJhY3RlciwgaWUgaWYgY29kZSBwb2ludCBpcyBpbiB0aGUgY2F0ZWdvcnkgWnMsIFpsIGFuZCBacC48YnI+CisgICogVXAtdG8tZGF0ZSBVbmljb2RlIGltcGxlbWVudGF0aW9uIG9mIGphdmEubGFuZy5DaGFyYWN0ZXIuaXNTcGFjZUNoYXIoKS4KKyAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgYSBzcGFjZQorICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgc3BlY2lmaWVkIGNvZGUgcG9pbnQgaXMgYSBzcGFjZSBjaGFyYWN0ZXIKKyAgKi8KKyAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzU3BhY2VDaGFyKGludCBjaCkKKyAgeworICAgIGludCBjYXQgPSBnZXRUeXBlKGNoKTsKKyAgICAvLyBpZiBwcm9wcyA9PSAwLCBpdCB3aWxsIGp1c3QgZmFsbCB0aHJvdWdoIGFuZCByZXR1cm4gZmFsc2UKKyAgICByZXR1cm4gY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5TUEFDRV9TRVBBUkFUT1IgfHwgCisgICAgICAgICAgIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTElORV9TRVBBUkFUT1IgfHwKKyAgICAgICAgICAgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5QQVJBR1JBUEhfU0VQQVJBVE9SOworICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAvKioKKyAgKiBEZXRlcm1pbmVzIGlmIHRoZSBzcGVjaWZpZWQgY29kZSBwb2ludCBpcyBhIHRpdGxlY2FzZSBjaGFyYWN0ZXIuPGJyPgorICAqIFVuaWNvZGVEYXRhIG9ubHkgY29udGFpbnMgY2FzZSBtYXBwaW5ncyBmb3IgY29kZSBwb2ludHMgd2hlcmUgdGhleSBhcmUgCisgICogb25lLXRvLW9uZSBtYXBwaW5nczsgaXQgYWxzbyBvbWl0cyBpbmZvcm1hdGlvbiBhYm91dCBjb250ZXh0LXNlbnNpdGl2ZSAKKyAgKiBjYXNlIG1hcHBpbmdzLjxicj4KKyAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBVbmljb2RlIGNhc2UgbWFwcGluZyBwbGVhc2UgcmVmZXIgdG8gdGhlIAorICAqIDxhIGhyZWY9aHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHIyMS8+CisgICogVGVjaG5pY2FsIHJlcG9ydCAjMjE8L2E+Ljxicj4KKyAgKiBVcC10by1kYXRlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gb2YgamF2YS5sYW5nLkNoYXJhY3Rlci5pc1RpdGxlQ2FzZSgpLgorICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IHRvIGRldGVybWluZSBpZiBpdCBpcyBpbiB0aXRsZSBjYXNlCisgICogQHJldHVybiB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgY29kZSBwb2ludCBpcyBhIHRpdGxlY2FzZSBjaGFyYWN0ZXIKKyAgKi8KKyAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzVGl0bGVDYXNlKGludCBjaCkKKyAgeworICAgIGludCBjYXQgPSBnZXRUeXBlKGNoKTsKKyAgICAvLyBpZiBwcm9wcyA9PSAwLCBpdCB3aWxsIGp1c3QgZmFsbCB0aHJvdWdoIGFuZCByZXR1cm4gZmFsc2UKKyAgICByZXR1cm4gY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5USVRMRUNBU0VfTEVUVEVSOworICB9CisgICAKKyAgLyoqCisgICogRGV0ZXJtaW5lcyBpZiB0aGUgc3BlY2lmaWVkIGNvZGUgcG9pbnQgbWF5IGJlIGFueSBwYXJ0IG9mIGEgVW5pY29kZSAKKyAgKiBpZGVudGlmaWVyIG90aGVyIHRoYW4gdGhlIHN0YXJ0aW5nIGNoYXJhY3Rlci48YnI+IAorICAqIEEgY29kZSBwb2ludCBtYXkgYmUgcGFydCBvZiBhIFVuaWNvZGUgaWRlbnRpZmllciBpZiBhbmQgb25seSBpZiBpdCBpcyBvbmUgCisgICogb2YgdGhlIGZvbGxvd2luZzogCisgICogPHVsPgorICAqIDxsaT4gTHUgVXBwZXJjYXNlIGxldHRlcgorICAqIDxsaT4gTGwgTG93ZXJjYXNlIGxldHRlcgorICAqIDxsaT4gTHQgVGl0bGVjYXNlIGxldHRlcgorICAqIDxsaT4gTG0gTW9kaWZpZXIgbGV0dGVyCisgICogPGxpPiBMbyBPdGhlciBsZXR0ZXIKKyAgKiA8bGk+IE5sIExldHRlciBudW1iZXIKKyAgKiA8bGk+IFBjIENvbm5lY3RpbmcgcHVuY3R1YXRpb24gY2hhcmFjdGVyIAorICAqIDxsaT4gTmQgZGVjaW1hbCBudW1iZXIKKyAgKiA8bGk+IE1jIFNwYWNpbmcgY29tYmluaW5nIG1hcmsgCisgICogPGxpPiBNbiBOb24tc3BhY2luZyBtYXJrIAorICAqIDxsaT4gQ2YgZm9ybWF0dGluZyBjb2RlCisgICogPC91bD4KKyAgKiBVcC10by1kYXRlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gb2YgCisgICogamF2YS5sYW5nLkNoYXJhY3Rlci5pc1VuaWNvZGVJZGVudGlmaWVyUGFydCgpLjxicj4KKyAgKiBTZWUgPGEgaHJlZj1odHRwOi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvcmVwb3J0cy90cjgvPlVUUiAjODwvYT4uCisgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgdG8gZGV0ZXJtaW5lIGlmIGlzIGNhbiBiZSBwYXJ0IG9mIGEgVW5pY29kZSBpZGVudGlmaWVyCisgICogQHJldHVybiB0cnVlIGlmIGNvZGUgcG9pbnQgaXMgYW55IGNoYXJhY3RlciBiZWxvbmdpbmcgYSB1bmljb2RlIGlkZW50aWZpZXIKKyAgKiAgICAgICAgIHN1ZmZpeCBhZnRlciB0aGUgZmlyc3QgY2hhcmFjdGVyCisgICovCisgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1VuaWNvZGVJZGVudGlmaWVyUGFydChpbnQgY2gpCisgIHsKKyAgICBpbnQgY2F0ID0gZ2V0VHlwZShjaCk7CisgICAgLy8gaWYgcHJvcHMgPT0gMCwgaXQgd2lsbCBqdXN0IGZhbGwgdGhyb3VnaCBhbmQgcmV0dXJuIGZhbHNlCisgICAgcmV0dXJuIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVVBQRVJDQVNFX0xFVFRFUiB8fCAKKyAgICAgICAgICAgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5MT1dFUkNBU0VfTEVUVEVSIHx8IAorICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlRJVExFQ0FTRV9MRVRURVIgfHwgCisgICAgICAgICAgIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTU9ESUZJRVJfTEVUVEVSIHx8CisgICAgICAgICAgIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuT1RIRVJfTEVUVEVSIHx8IAorICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkxFVFRFUl9OVU1CRVIgfHwKKyAgICAgICAgICAgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5DT05ORUNUT1JfUFVOQ1RVQVRJT04gfHwKKyAgICAgICAgICAgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5ERUNJTUFMX0RJR0lUX05VTUJFUiB8fAorICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkNPTUJJTklOR19TUEFDSU5HX01BUksgfHwgCisgICAgICAgICAgIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTk9OX1NQQUNJTkdfTUFSSyB8fCAKKyAgICAgICAgICAgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5GT1JNQVQ7CisgIH0KKyAgICAgICAgICAgICAgICAgICAKKyAgLyoqCisgICogRGV0ZXJtaW5lcyBpZiB0aGUgc3BlY2lmaWVkIGNvZGUgcG9pbnQgaXMgcGVybWlzc2libGUgYXMgdGhlIGZpcnN0IAorICAqIGNoYXJhY3RlciBpbiBhIFVuaWNvZGUgaWRlbnRpZmllci48YnI+IAorICAqIEEgY29kZSBwb2ludCBtYXkgc3RhcnQgYSBVbmljb2RlIGlkZW50aWZpZXIgaWYgaXQgaXMgb2YgdHlwZSBlaXRoZXIgCisgICogPHVsPiAKKyAgKiA8bGk+IEx1IFVwcGVyY2FzZSBsZXR0ZXIKKyAgKiA8bGk+IExsIExvd2VyY2FzZSBsZXR0ZXIKKyAgKiA8bGk+IEx0IFRpdGxlY2FzZSBsZXR0ZXIKKyAgKiA8bGk+IExtIE1vZGlmaWVyIGxldHRlcgorICAqIDxsaT4gTG8gT3RoZXIgbGV0dGVyCisgICogPGxpPiBObCBMZXR0ZXIgbnVtYmVyCisgICogPC91bD4KKyAgKiBVcC10by1kYXRlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gb2YgCisgICogamF2YS5sYW5nLkNoYXJhY3Rlci5pc1VuaWNvZGVJZGVudGlmaWVyU3RhcnQoKS48YnI+CisgICogU2VlIDxhIGhyZWY9aHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHI4Lz5VVFIgIzg8L2E+LgorICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IHRvIGRldGVybWluZSBpZiBpdCBjYW4gc3RhcnQgYSBVbmljb2RlIGlkZW50aWZpZXIKKyAgKiBAcmV0dXJuIHRydWUgaWYgY29kZSBwb2ludCBpcyB0aGUgZmlyc3QgY2hhcmFjdGVyIGJlbG9uZ2luZyBhIHVuaWNvZGUgCisgICogICAgICAgICAgICAgIGlkZW50aWZpZXIKKyAgKi8KKyAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzVW5pY29kZUlkZW50aWZpZXJTdGFydChpbnQgY2gpCisgIHsKKyAgICBpbnQgY2F0ID0gZ2V0VHlwZShjaCk7CisgICAgLy8gaWYgcHJvcHMgPT0gMCwgaXQgd2lsbCBqdXN0IGZhbGwgdGhyb3VnaCBhbmQgcmV0dXJuIGZhbHNlCisgICAgcmV0dXJuIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVVBQRVJDQVNFX0xFVFRFUiB8fCAKKyAgICAgICAgICAgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5MT1dFUkNBU0VfTEVUVEVSIHx8IAorICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlRJVExFQ0FTRV9MRVRURVIgfHwgCisgICAgICAgICAgIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTU9ESUZJRVJfTEVUVEVSIHx8CisgICAgICAgICAgIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuT1RIRVJfTEVUVEVSIHx8IAorICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkxFVFRFUl9OVU1CRVI7CisgIH0KKworICAvKioKKyAgKiBEZXRlcm1pbmVzIGlmIHRoZSBzcGVjaWZpZWQgY29kZSBwb2ludCBzaG91bGQgYmUgcmVnYXJkZWQgYXMgYW4gaWdub3JhYmxlCisgICogY2hhcmFjdGVyIGluIGEgVW5pY29kZSBpZGVudGlmaWVyLjxicj4KKyAgKiBBIGNoYXJhY3RlciBpcyBpZ25vcmFibGUgaW4gdGhlIFVuaWNvZGUgc3RhbmRhcmQgaWYgaXQgaXMgb2YgdGhlIHR5cGUgQ2YsIAorICAqIEZvcm1hdHRpbmcgY29kZS48YnI+CisgICogVXAtdG8tZGF0ZSBVbmljb2RlIGltcGxlbWVudGF0aW9uIG9mIAorICAqIGphdmEubGFuZy5DaGFyYWN0ZXIuaXNJZGVudGlmaWVySWdub3JhYmxlKCkuPGJyPgorICAqIFNlZSA8YSBocmVmPWh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyOC8+VVRSICM4PC9hPi4KKyAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB0byBiZSBkZXRlcm1pbmVkIGlmIGl0IGNhbiBiZSBpZ25vcmVkIGluIGEgVW5pY29kZSAKKyAgKiAgICAgICAgaWRlbnRpZmllci4KKyAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGNvZGUgcG9pbnQgaXMgaWdub3JhYmxlCisgICovCisgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0lkZW50aWZpZXJJZ25vcmFibGUoaW50IGNoKQorICB7CisgICAgaW50IGNhdCA9IGdldFR5cGUoY2gpOworICAgIC8vIGlmIHByb3BzID09IDAsIGl0IHdpbGwganVzdCBmYWxsIHRocm91Z2ggYW5kIHJldHVybiBmYWxzZQorICAgIHJldHVybiBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkZPUk1BVDsKKyAgfQorICAgICAgICAgICAgICAgICAgCisgIC8qKgorICAqIERldGVybWluZXMgaWYgdGhlIHNwZWNpZmllZCBjb2RlIHBvaW50IGlzIGFuIHVwcGVyY2FzZSBjaGFyYWN0ZXIuPGJyPgorICAqIFVuaWNvZGVEYXRhIG9ubHkgY29udGFpbnMgY2FzZSBtYXBwaW5ncyBmb3IgY29kZSBwb2ludCB3aGVyZSB0aGV5IGFyZSAKKyAgKiBvbmUtdG8tb25lIG1hcHBpbmdzOyBpdCBhbHNvIG9taXRzIGluZm9ybWF0aW9uIGFib3V0IGNvbnRleHQtc2Vuc2l0aXZlIAorICAqIGNhc2UgbWFwcGluZ3MuPGJyPiAKKyAgKiBGb3IgbGFuZ3VhZ2Ugc3BlY2lmaWMgY2FzZSBjb252ZXJzaW9uIGJlaGF2aW9yLCB1c2UgCisgICogdG9VcHBlckNhc2UobG9jYWxlLCBzdHIpLiA8YnI+CisgICogRm9yIGV4YW1wbGUsIHRoZSBjYXNlIGNvbnZlcnNpb24gZm9yIGRvdC1sZXNzIGkgYW5kIGRvdHRlZCBJIGluIFR1cmtpc2gsCisgICogb3IgZm9yIGZpbmFsIHNpZ21hIGluIEdyZWVrLgorICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFVuaWNvZGUgY2FzZSBtYXBwaW5nIHBsZWFzZSByZWZlciB0byB0aGUgCisgICogPGEgaHJlZj1odHRwOi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvcmVwb3J0cy90cjIxLz4KKyAgKiBUZWNobmljYWwgcmVwb3J0ICMyMTwvYT4uPGJyPgorICAqIFVwLXRvLWRhdGUgVW5pY29kZSBpbXBsZW1lbnRhdGlvbiBvZiBqYXZhLmxhbmcuQ2hhcmFjdGVyLmlzVXBwZXJDYXNlKCkuCisgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgdG8gZGV0ZXJtaW5lIGlmIGl0IGlzIGluIHVwcGVyY2FzZQorICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29kZSBwb2ludCBpcyBhbiB1cHBlcmNhc2UgY2hhcmFjdGVyCisgICovCisgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1VwcGVyQ2FzZShpbnQgY2gpCisgIHsKKyAgICBpbnQgY2F0ID0gZ2V0VHlwZShjaCk7CisgICAgLy8gaWYgcHJvcHMgPT0gMCwgaXQgd2lsbCBqdXN0IGZhbGwgdGhyb3VnaCBhbmQgcmV0dXJuIGZhbHNlCisgICAgcmV0dXJuIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVVBQRVJDQVNFX0xFVFRFUjsKKyAgfQorICAgICAgICAgICAgICAgICAgIAorICAvKioKKyAgKiBUaGUgZ2l2ZW4gY29kZSBwb2ludCBpcyBtYXBwZWQgdG8gaXRzIGxvd2VyY2FzZSBlcXVpdmFsZW50OyBpZiB0aGUgY29kZSAKKyAgKiBwb2ludCBoYXMgbm8gbG93ZXJjYXNlIGVxdWl2YWxlbnQsIHRoZSBjb2RlIHBvaW50IGl0c2VsZiBpcyByZXR1cm5lZC48YnI+CisgICogVW5pY29kZURhdGEgb25seSBjb250YWlucyBjYXNlIG1hcHBpbmdzIGZvciBjb2RlIHBvaW50IHdoZXJlIHRoZXkgYXJlIAorICAqIG9uZS10by1vbmUgbWFwcGluZ3M7IGl0IGFsc28gb21pdHMgaW5mb3JtYXRpb24gYWJvdXQgY29udGV4dC1zZW5zaXRpdmUgCisgICogY2FzZSBtYXBwaW5ncy48YnI+IAorICAqIEZvciBsYW5ndWFnZSBzcGVjaWZpYyBjYXNlIGNvbnZlcnNpb24gYmVoYXZpb3IsIHVzZSAKKyAgKiB0b0xvd2VyQ2FzZShsb2NhbGUsIHN0cikuIDxicj4KKyAgKiBGb3IgZXhhbXBsZSwgdGhlIGNhc2UgY29udmVyc2lvbiBmb3IgZG90LWxlc3MgaSBhbmQgZG90dGVkIEkgaW4gVHVya2lzaCwKKyAgKiBvciBmb3IgZmluYWwgc2lnbWEgaW4gR3JlZWsuCisgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgVW5pY29kZSBjYXNlIG1hcHBpbmcgcGxlYXNlIHJlZmVyIHRvIHRoZSAKKyAgKiA8YSBocmVmPWh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyMjEvPgorICAqIFRlY2huaWNhbCByZXBvcnQgIzIxPC9hPi48YnI+CisgICogVXAtdG8tZGF0ZSBVbmljb2RlIGltcGxlbWVudGF0aW9uIG9mIGphdmEubGFuZy5DaGFyYWN0ZXIudG9Mb3dlckNhc2UoKQorICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IHdob3NlIGxvd2VyY2FzZSBlcXVpdmFsZW50IGlzIHRvIGJlIHJldHJpZXZlZAorICAqIEByZXR1cm4gdGhlIGxvd2VyY2FzZSBlcXVpdmFsZW50IGNvZGUgcG9pbnQKKyAgKi8KKyAgcHVibGljIHN0YXRpYyBpbnQgdG9Mb3dlckNhc2UoaW50IGNoKQorICB7CisgICAgaW50IHByb3BzID0gZ2V0UHJvcHMoY2gpOworICAgIC8vIGlmIHByb3BzID09IDAsIGl0IHdpbGwganVzdCBmYWxsIHRocm91Z2ggYW5kIHJldHVybiBpdHNlbGYKKyAgICBpZighVUNoYXJhY3RlclByb3BlcnR5REIuaXNFeGNlcHRpb25JbmRpY2F0b3IocHJvcHMpKSB7CisgICAgICBpbnQgY2F0ID0gVUNoYXJhY3RlclByb3BlcnR5REIuZ2V0UHJvcFR5cGUocHJvcHMpOworICAgICAgaWYgKGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVVBQRVJDQVNFX0xFVFRFUiB8fCAKKyAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlRJVExFQ0FTRV9MRVRURVIpIHsKKyAgICAgICAgcmV0dXJuIGNoICsgVUNoYXJhY3RlclByb3BlcnR5REIuZ2V0U2lnbmVkVmFsdWUocHJvcHMpOworICAgICAgfQorICAgIH0gCisgICAgZWxzZSAKKyAgICB7CisgICAgICBpbnQgaW5kZXggPSBVQ2hhcmFjdGVyUHJvcGVydHlEQi5nZXRFeGNlcHRpb25JbmRleChwcm9wcyk7CisgICAgICBpZiAoUFJPUEVSVFlfREJfLmhhc0V4Y2VwdGlvblZhbHVlKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5REIuRVhDX0xPV0VSQ0FTRV8pKSB7CisgICAgICAgIHJldHVybiBQUk9QRVJUWV9EQl8uZ2V0RXhjZXB0aW9uKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5REIuRVhDX0xPV0VSQ0FTRV8pOyAKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGNoOworICB9CisKKyAgLyoqCisgICogQ29udmVydHMgYXJndW1lbnQgY29kZSBwb2ludCBhbmQgcmV0dXJucyBhIFN0cmluZyBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSAKKyAgKiBjb2RlIHBvaW50J3MgdmFsdWUgaW4gVVRGMTYgZm9ybWF0Ljxicj4KKyAgKiBUaGUgcmVzdWx0IGlzIGEgc3RyaW5nIHdob3NlIGxlbmd0aCBpcyAxIGZvciBub24tc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50cywgCisgICogMiBvdGhlcndpc2UuPGJyPgorICAqIGNvbS5pYm0uaWJtLmljdS5VVEYxNiBjYW4gYmUgdXNlZCB0byBwYXJzZSBTdHJpbmdzIGdlbmVyYXRlZCBieSB0aGlzIAorICAqIGZ1bmN0aW9uLjxicj4KKyAgKiBVcC10by1kYXRlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gb2YgamF2YS5sYW5nLkNoYXJhY3Rlci50b1N0cmluZygpCisgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQKKyAgKiBAcmV0dXJuIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgY29kZSBwb2ludCwgbnVsbCBpZiBjb2RlIHBvaW50IGlzIG5vdAorICAqICAgICAgICAgZGVmaW5lZCBpbiB1bmljb2RlCisgICovCisgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGludCBjaCkKKyAgeworICAgIGlmIChjaCA8IE1JTl9WQUxVRSB8fCBjaCA+IE1BWF9WQUxVRSkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIAorICAgIGlmIChjaCA8IFVDaGFyYWN0ZXIuU1VQUExFTUVOVEFSWV9NSU5fVkFMVUUpIHsKKyAgICAgIHJldHVybiBTdHJpbmcudmFsdWVPZigoY2hhciljaCk7CisgICAgfQorICAgIAorICAgIGNoYXIgcmVzdWx0W10gPSBuZXcgY2hhclsyXTsKKyAgICByZXN1bHRbMF0gPSAoY2hhcilVVEYxNi5nZXRMZWFkU3Vycm9nYXRlKGNoKTsKKyAgICByZXN1bHRbMV0gPSAoY2hhcilVVEYxNi5nZXRUcmFpbFN1cnJvZ2F0ZShjaCk7CisgICAgcmV0dXJuIG5ldyBTdHJpbmcocmVzdWx0KTsKKyAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLyoqCisgICogQ29udmVydHMgdGhlIGNvZGUgcG9pbnQgYXJndW1lbnQgdG8gdGl0bGVjYXNlLjxicj4KKyAgKiBVbmljb2RlRGF0YSBvbmx5IGNvbnRhaW5zIGNhc2UgbWFwcGluZ3MgZm9yIGNvZGUgcG9pbnRzIHdoZXJlIHRoZXkgYXJlIAorICAqIG9uZS10by1vbmUgbWFwcGluZ3M7IGl0IGFsc28gb21pdHMgaW5mb3JtYXRpb24gYWJvdXQgY29udGV4dC1zZW5zaXRpdmUgCisgICogY2FzZSBtYXBwaW5ncy48YnI+IAorICAqIFRoZXJlIGFyZSBvbmx5IGZvdXIgVW5pY29kZSBjaGFyYWN0ZXJzIHRoYXQgYXJlIHRydWx5IHRpdGxlY2FzZSBmb3JtcworICAqIHRoYXQgYXJlIGRpc3RpbmN0IGZyb20gdXBwZXJjYXNlIGZvcm1zLgorICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IFVuaWNvZGUgY2FzZSBtYXBwaW5nIHBsZWFzZSByZWZlcgorICAqIHRvIHRoZSA8YSBocmVmPWh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyMjEvPgorICAqIFRlY2huaWNhbCByZXBvcnQgIzIxPC9hPi48YnI+CisgICogSWYgbm8gdGl0bGVjYXNlIGlzIGF2YWlsYWJsZSwgdGhlIHVwcGVyY2FzZSBpcyByZXR1cm5lZC4gSWYgbm8gdXBwZXJjYXNlIAorICAqIGlzIGF2YWlsYWJsZSwgdGhlIGNvZGUgcG9pbnQgaXRzZWxmIGlzIHJldHVybmVkLjxicj4KKyAgKiBVcC10by1kYXRlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gb2YgamF2YS5sYW5nLkNoYXJhY3Rlci50b1RpdGxlQ2FzZSgpCisgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgIHdob3NlIHRpdGxlIGNhc2UgaXMgdG8gYmUgcmV0cmlldmVkCisgICogQHJldHVybiB0aXRsZWNhc2UgY29kZSBwb2ludAorICAqLworICBwdWJsaWMgc3RhdGljIGludCB0b1RpdGxlQ2FzZShpbnQgY2gpCisgIHsKKyAgICBpbnQgcHJvcHMgPSBnZXRQcm9wcyhjaCk7CisgICAgLy8gaWYgcHJvcHMgPT0gMCwgaXQgd2lsbCBqdXN0IGZhbGwgdGhyb3VnaCBhbmQgcmV0dXJuIGl0c2VsZgorICAgIGlmICghVUNoYXJhY3RlclByb3BlcnR5REIuaXNFeGNlcHRpb25JbmRpY2F0b3IocHJvcHMpKSB7CisgICAgICBpZiAoVUNoYXJhY3RlclByb3BlcnR5REIuZ2V0UHJvcFR5cGUocHJvcHMpID09IAorICAgICAgICAgIFVDaGFyYWN0ZXJDYXRlZ29yeS5MT1dFUkNBU0VfTEVUVEVSKSB7CisgICAgICAgIC8vIGhlcmUsIHRpdGxlY2FzZSBpcyBzYW1lIGFzIHVwcGVyY2FzZQorICAgICAgICByZXR1cm4gY2ggLSBVQ2hhcmFjdGVyUHJvcGVydHlEQi5nZXRTaWduZWRWYWx1ZShwcm9wcyk7CisgICAgICB9CisgICAgfSAKKyAgICBlbHNlIHsKKyAgICAgIGludCBpbmRleCA9IFVDaGFyYWN0ZXJQcm9wZXJ0eURCLmdldEV4Y2VwdGlvbkluZGV4KHByb3BzKTsKKyAgICAgIGlmIChQUk9QRVJUWV9EQl8uaGFzRXhjZXB0aW9uVmFsdWUoaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHlEQi5FWENfVElUTEVDQVNFXykpIHsKKyAgICAgICAgcmV0dXJuIFBST1BFUlRZX0RCXy5nZXRFeGNlcHRpb24oaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eURCLkVYQ19USVRMRUNBU0VfKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICAvLyBoZXJlLCB0aXRsZWNhc2UgaXMgc2FtZSBhcyB1cHBlcmNhc2UKKyAgICAgICAgaWYgKFBST1BFUlRZX0RCXy5oYXNFeGNlcHRpb25WYWx1ZShpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHlEQi5FWENfVVBQRVJDQVNFXykpIHsKKyAgICAgICAgICByZXR1cm4gUFJPUEVSVFlfREJfLmdldEV4Y2VwdGlvbihpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHlEQi5FWENfVVBQRVJDQVNFXyk7IAorICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBjaDsgLy8gbm8gbWFwcGluZyAtIHJldHVybiBjIGl0c2VsZgorICB9CisgICAKKyAgLyoqCisgICogQ29udmVydHMgdGhlIGNoYXJhY3RlciBhcmd1bWVudCB0byB1cHBlcmNhc2UuPGJyPgorICAqIFVuaWNvZGVEYXRhIG9ubHkgY29udGFpbnMgY2FzZSBtYXBwaW5ncyBmb3IgY2hhcmFjdGVycyB3aGVyZSB0aGV5IGFyZSAKKyAgKiBvbmUtdG8tb25lIG1hcHBpbmdzOyBpdCBhbHNvIG9taXRzIGluZm9ybWF0aW9uIGFib3V0IGNvbnRleHQtc2Vuc2l0aXZlIAorICAqIGNhc2UgbWFwcGluZ3MuPGJyPiAKKyAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBVbmljb2RlIGNhc2UgbWFwcGluZyBwbGVhc2UgcmVmZXIKKyAgKiB0byB0aGUgPGEgaHJlZj1odHRwOi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvcmVwb3J0cy90cjIxLz4KKyAgKiBUZWNobmljYWwgcmVwb3J0ICMyMTwvYT4uPGJyPgorICAqIElmIG5vIHVwcGVyY2FzZSBpcyBhdmFpbGFibGUsIHRoZSBjaGFyYWN0ZXIgaXRzZWxmIGlzIHJldHVybmVkLjxicj4KKyAgKiBVcC10by1kYXRlIFVuaWNvZGUgaW1wbGVtZW50YXRpb24gb2YgamF2YS5sYW5nLkNoYXJhY3Rlci50b1VwcGVyQ2FzZSgpCisgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgd2hvc2UgdXBwZXJjYXNlIGlzIHRvIGJlIHJldHJpZXZlZAorICAqIEByZXR1cm4gdXBwZXJjYXNlIGNvZGUgcG9pbnQKKyAgKi8KKyAgcHVibGljIHN0YXRpYyBpbnQgdG9VcHBlckNhc2UoaW50IGNoKQorICB7CisgICAgaW50IHByb3BzID0gZ2V0UHJvcHMoY2gpOworICAgIC8vIGlmIHByb3BzID09IDAsIGl0IHdpbGwganVzdCBmYWxsIHRocm91Z2ggYW5kIHJldHVybiBpdHNlbGYKKyAgICBpZiAoIVVDaGFyYWN0ZXJQcm9wZXJ0eURCLmlzRXhjZXB0aW9uSW5kaWNhdG9yKHByb3BzKSkgeworICAgICAgaWYgKFVDaGFyYWN0ZXJQcm9wZXJ0eURCLmdldFByb3BUeXBlKHByb3BzKSA9PSAKKyAgICAgICAgICBVQ2hhcmFjdGVyQ2F0ZWdvcnkuTE9XRVJDQVNFX0xFVFRFUikgeworICAgICAgICAvLyBoZXJlLCB0aXRsZWNhc2UgaXMgc2FtZSBhcyB1cHBlcmNhc2UgKi8KKyAgICAgICAgcmV0dXJuIGNoIC0gVUNoYXJhY3RlclByb3BlcnR5REIuZ2V0U2lnbmVkVmFsdWUocHJvcHMpOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIAorICAgIHsKKyAgICAgIGludCBpbmRleCA9IFVDaGFyYWN0ZXJQcm9wZXJ0eURCLmdldEV4Y2VwdGlvbkluZGV4KHByb3BzKTsKKyAgICAgIGlmIChQUk9QRVJUWV9EQl8uaGFzRXhjZXB0aW9uVmFsdWUoaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHlEQi5FWENfVVBQRVJDQVNFXykpIHsKKyAgICAgICAgcmV0dXJuIFBST1BFUlRZX0RCXy5nZXRFeGNlcHRpb24oaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHlEQi5FWENfVVBQRVJDQVNFXyk7IAorICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gY2g7IC8vIG5vIG1hcHBpbmcgLSByZXR1cm4gYyBpdHNlbGYKKyAgfQorICAgCisgIC8vIGV4dHJhIG1ldGhvZHMgbm90IGluIGphdmEubGFuZy5DaGFyYWN0ZXIgPT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAKKyAgLyoqCisgICogRGV0ZXJtaW5lcyBpZiB0aGUgY29kZSBwb2ludCBpcyBhIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVyLjxicj4KKyAgKiBBIGNvZGUgcG9pbnQgaXMgYSBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlciBpZiBhbmQgb25seSBpZiBpdCBpcyBncmVhdGVyIHRoYW4KKyAgKiA8YSBocmVmPSNTVVBQTEVNRU5UQVJZX01JTl9WQUxVRT5TVVBQTEVNRU5UQVJZX01JTl9WQUxVRTwvYT4KKyAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB0byBiZSBkZXRlcm1pbmVkIGlmIGl0IGlzIGluIHRoZSBzdXBwbGVtZW50YXJ5IHBsYW5lCisgICogQHJldHVybiB0cnVlIGlmIGNvZGUgcG9pbnQgaXMgYSBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcgorICAqLworICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNTdXBwbGVtZW50YXJ5KGludCBjaCkKKyAgeworICAgIHJldHVybiBjaCA+PSBVQ2hhcmFjdGVyLlNVUFBMRU1FTlRBUllfTUlOX1ZBTFVFICYmIAorICAgICAgICAgICBjaCA8PSBVQ2hhcmFjdGVyLk1BWF9WQUxVRTsKKyAgfQorICAKKyAgLyoqCisgICogRGV0ZXJtaW5lcyBpZiB0aGUgY29kZSBwb2ludCBpcyBpbiB0aGUgQk1QIHBsYW5lLjxicj4KKyAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB0byBiZSBkZXRlcm1pbmVkIGlmIGl0IGlzIG5vdCBhIHN1cHBsZW1lbnRhcnkgCisgICogICAgICAgIGNoYXJhY3RlcgorICAqIEByZXR1cm4gdHJ1ZSBpZiBjb2RlIHBvaW50IGlzIG5vdCBhIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVyCisgICovCisgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0JNUChpbnQgY2gpIAorICB7CisgICAgcmV0dXJuIChjaCA+PSAwICYmIGNoIDwgTEFTVF9DSEFSX01BU0tfKTsKKyAgfQorCisgIC8qKgorICAqIERldGVybWluZXMgd2hldGhlciB0aGUgc3BlY2lmaWVkIGNvZGUgcG9pbnQgaXMgYSBwcmludGFibGUgY2hhcmFjdGVyIAorICAqIGFjY29yZGluZyB0byB0aGUgVW5pY29kZSBzdGFuZGFyZC4KKyAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB0byBiZSBkZXRlcm1pbmVkIGlmIGl0IGlzIHByaW50YWJsZQorICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY29kZSBwb2ludCBpcyBhIHByaW50YWJsZSBjaGFyYWN0ZXIKKyAgKi8KKyAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzUHJpbnRhYmxlKGludCBjaCkKKyAgeworICAgIGlmIChpc0lTT0NvbnRyb2woY2gpKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIGludCBjYXQgPSBnZXRUeXBlKGNoKTsKKyAgICAvLyBpZiBwcm9wcyA9PSAwLCBpdCB3aWxsIGp1c3QgZmFsbCB0aHJvdWdoIGFuZCByZXR1cm4gZmFsc2UKKyAgICByZXR1cm4gKGNhdCAhPSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVU5BU1NJR05FRCAmJiAKKyAgICAgICAgY2F0ICE9IFVDaGFyYWN0ZXJDYXRlZ29yeS5DT05UUk9MICYmIAorICAgICAgICBjYXQgIT0gVUNoYXJhY3RlckNhdGVnb3J5LkZPUk1BVCAmJgorICAgICAgICBjYXQgIT0gVUNoYXJhY3RlckNhdGVnb3J5LlBSSVZBVEVfVVNFICYmCisgICAgICAgIGNhdCAhPSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuU1VSUk9HQVRFICYmCisgICAgICAgIGNhdCAhPSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuR0VORVJBTF9PVEhFUl9UWVBFUyk7CisgIH0KKworICAvKioKKyAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHNwZWNpZmllZCBjb2RlIHBvaW50IGlzIG9mIGJhc2UgZm9ybS48YnI+CisgICogQSBjb2RlIHBvaW50IG9mIGJhc2UgZm9ybSBkb2VzIG5vdCBncmFwaGljYWxseSBjb21iaW5lIHdpdGggcHJlY2VkaW5nIAorICAqIGNoYXJhY3RlcnMsIGFuZCBpcyBuZWl0aGVyIGEgY29udHJvbCBub3IgYSBmb3JtYXQgY2hhcmFjdGVyLgorICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IHRvIGJlIGRldGVybWluZWQgaWYgaXQgaXMgb2YgYmFzZSBmb3JtCisgICogQHJldHVybiB0cnVlIGlmIHRoZSBjb2RlIHBvaW50IGlzIG9mIGJhc2UgZm9ybQorICAqLworICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNCYXNlRm9ybShpbnQgY2gpCisgIHsKKyAgICBpbnQgY2F0ID0gZ2V0VHlwZShjaCk7CisgICAgLy8gaWYgcHJvcHMgPT0gMCwgaXQgd2lsbCBqdXN0IGZhbGwgdGhyb3VnaCBhbmQgcmV0dXJuIGZhbHNlCisgICAgcmV0dXJuIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuREVDSU1BTF9ESUdJVF9OVU1CRVIgfHwgCisgICAgICAgICAgIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuT1RIRVJfTlVNQkVSIHx8IAorICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LkxFVFRFUl9OVU1CRVIgfHwgCisgICAgICAgICAgIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVVBQRVJDQVNFX0xFVFRFUiB8fCAKKyAgICAgICAgICAgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5MT1dFUkNBU0VfTEVUVEVSIHx8IAorICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5LlRJVExFQ0FTRV9MRVRURVIgfHwKKyAgICAgICAgICAgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5NT0RJRklFUl9MRVRURVIgfHwgCisgICAgICAgICAgIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuT1RIRVJfTEVUVEVSIHx8IAorICAgICAgICAgICBjYXQgPT0gVUNoYXJhY3RlckNhdGVnb3J5Lk5PTl9TUEFDSU5HX01BUksgfHwgCisgICAgICAgICAgIGNhdCA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuRU5DTE9TSU5HX01BUksgfHwKKyAgICAgICAgICAgY2F0ID09IFVDaGFyYWN0ZXJDYXRlZ29yeS5DT01CSU5JTkdfU1BBQ0lOR19NQVJLOworICB9CisKKyAgLyoqCisgICogUmV0dXJucyB0aGUgQmlkaXJlY3Rpb24gcHJvcGVydHkgb2YgYSBjb2RlIHBvaW50Ljxicj4KKyAgKiBGb3IgZXhhbXBsZSwgMHgwMDQxIChsZXR0ZXIgQSkgaGFzIHRoZSBMRUZUX1RPX1JJR0hUIGRpcmVjdGlvbmFsIAorICAqIHByb3BlcnR5Ljxicj4KKyAgKiBSZXN1bHQgcmV0dXJuZWQgYmVsb25ncyB0byB0aGUgaW50ZXJmYWNlIAorICAqIDxhIGhyZWY9VUNoYXJhY3RlckRpcmVjdGlvbi5odG1sPlVDaGFyYWN0ZXJEaXJlY3Rpb248L2E+CisgICogQHBhcmFtIGNoIHRoZSBjb2RlIHBvaW50IHRvIGJlIGRldGVybWluZWQgaXRzIGRpcmVjdGlvbgorICAqIEByZXR1cm4gZGlyZWN0aW9uIGNvbnN0YW50IGZyb20gVUNoYXJhY3RlckRpcmVjdGlvbi4gT3RoZXJ3aXNlIGlzIAorICAqICAgICAgICAgY2hhcmFjdGVyIGlzIG5vdCBkZWZpbmVkLCBVQ2hhcmFjdGVyRGlyZWN0aW9uLkJPVU5EQVJZX05FVVRSQUwKKyAgKiAgICAgICAgIHdpbGwgYmUgcmV0dXJuZWQuCisgICovCisgIHB1YmxpYyBzdGF0aWMgaW50IGdldERpcmVjdGlvbihpbnQgY2gpCisgIHsKKyAgICBpbnQgcHJvcHMgPSBnZXRQcm9wcyhjaCk7CisgICAgaWYgKHByb3BzICE9IDApIHsKKyAgICAgIHJldHVybiBVQ2hhcmFjdGVyUHJvcGVydHlEQi5nZXREaXJlY3Rpb24ocHJvcHMpOworICAgIH0KKyAgICByZXR1cm4gVUNoYXJhY3RlckRpcmVjdGlvbi5MRUZUX1RPX1JJR0hUOworICB9CisKKyAgLyoqCisgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjb2RlIHBvaW50IGhhcyB0aGUgIm1pcnJvcmVkIiBwcm9wZXJ0eS48YnI+CisgICogVGhpcyBwcm9wZXJ0eSBpcyBzZXQgZm9yIGNoYXJhY3RlcnMgdGhhdCBhcmUgY29tbW9ubHkgdXNlZCBpbgorICAqIFJpZ2h0LVRvLUxlZnQgY29udGV4dHMgYW5kIG5lZWQgdG8gYmUgZGlzcGxheWVkIHdpdGggYSAibWlycm9yZWQiCisgICogZ2x5cGguCisgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgd2hvc2UgbWlycm9yIGlzIHRvIGJlIGRldGVybWluZWQKKyAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGNvZGUgcG9pbnQgaGFzIHRoZSAibWlycm9yZWQiIHByb3BlcnR5CisgICovCisgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc01pcnJvcmVkKGludCBjaCkKKyAgeworICAgIGludCBwcm9wcyA9IGdldFByb3BzKGNoKTsKKyAgICAvLyBpZiBwcm9wcyA9PSAwLCBpdCB3aWxsIGp1c3QgZmFsbCB0aHJvdWdoIGFuZCByZXR1cm4gZmFsc2UKKyAgICByZXR1cm4gVUNoYXJhY3RlclByb3BlcnR5REIuaXNNaXJyb3JlZChwcm9wcyk7CisgIH0KKworICAvKioKKyAgKiBNYXBzIHRoZSBzcGVjaWZpZWQgY29kZSBwb2ludCB0byBhICJtaXJyb3ItaW1hZ2UiIGNvZGUgcG9pbnQuPGJyPgorICAqIEZvciBjb2RlIHBvaW50cyB3aXRoIHRoZSAibWlycm9yZWQiIHByb3BlcnR5LCBpbXBsZW1lbnRhdGlvbnMgc29tZXRpbWVzIAorICAqIG5lZWQgYSAicG9vciBtYW4ncyIgbWFwcGluZyB0byBhbm90aGVyIGNvZGUgcG9pbnQgc3VjaCB0aGF0IHRoZSBkZWZhdWx0IAorICAqIGdseXBoIG1heSBzZXJ2ZSBhcyB0aGUgbWlycm9yLWltYWdlIG9mIHRoZSBkZWZhdWx0IGdseXBoIG9mIHRoZSBzcGVjaWZpZWQKKyAgKiBjb2RlIHBvaW50Ljxicj4gCisgICogVGhpcyBpcyB1c2VmdWwgZm9yIHRleHQgY29udmVyc2lvbiB0byBhbmQgZnJvbSBjb2RlcGFnZXMgd2l0aCB2aXN1YWwgCisgICogb3JkZXIsIGFuZCBmb3IgZGlzcGxheXMgd2l0aG91dCBnbHlwaCBzZWxlY3Rpb24gY2FwYWJpbGl0aWVzLgorICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IHdob3NlIG1pcnJvciBpcyB0byBiZSByZXRyaWV2ZWQKKyAgKiBAcmV0dXJuIGFub3RoZXIgY29kZSBwb2ludCB0aGF0IG1heSBzZXJ2ZSBhcyBhIG1pcnJvci1pbWFnZSBzdWJzdGl0dXRlLCBvciAKKyAgKiAgICAgICAgIGNoIGl0c2VsZiBpZiB0aGVyZSBpcyBubyBzdWNoIG1hcHBpbmcgb3IgY2ggZG9lcyBub3QgaGF2ZSB0aGUgCisgICogICAgICAgICAibWlycm9yZWQiIHByb3BlcnR5CisgICovCisgIHB1YmxpYyBzdGF0aWMgaW50IGdldE1pcnJvcihpbnQgY2gpCisgIHsKKyAgICBpbnQgcHJvcHMgPSBnZXRQcm9wcyhjaCk7CisgICAgLy8gbWlycm9yZWQgLSB0aGUgdmFsdWUgaXMgYSBtaXJyb3Igb2Zmc2V0CisgICAgLy8gaWYgcHJvcHMgPT0gMCwgaXQgd2lsbCBqdXN0IGZhbGwgdGhyb3VnaCBhbmQgcmV0dXJuIGZhbHNlCisgICAgaWYgKFVDaGFyYWN0ZXJQcm9wZXJ0eURCLmlzTWlycm9yZWQocHJvcHMpKSB7CisgICAgICBpZighVUNoYXJhY3RlclByb3BlcnR5REIuaXNFeGNlcHRpb25JbmRpY2F0b3IocHJvcHMpKSB7CisgICAgICAgIHJldHVybiBjaCArIFVDaGFyYWN0ZXJQcm9wZXJ0eURCLmdldFNpZ25lZFZhbHVlKHByb3BzKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgCisgICAgICB7CisgICAgICAgIGludCBpbmRleCA9IFVDaGFyYWN0ZXJQcm9wZXJ0eURCLmdldEV4Y2VwdGlvbkluZGV4KHByb3BzKTsKKyAgICAgICAgaWYgKFBST1BFUlRZX0RCXy5oYXNFeGNlcHRpb25WYWx1ZShpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5REIuRVhDX01JUlJPUl9NQVBQSU5HXykpIAorICAgICAgICAgIHJldHVybiBQUk9QRVJUWV9EQl8uZ2V0RXhjZXB0aW9uKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHlEQi5FWENfTUlSUk9SX01BUFBJTkdfKTsgICAKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGNoOworICB9CisgIAorICAvKioKKyAgKiBHZXRzIHRoZSBjb21iaW5pbmcgY2xhc3Mgb2YgdGhlIGFyZ3VtZW50IGNvZGVwb2ludAorICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IHdob3NlIGNvbWJpbmluZyBpcyB0byBiZSByZXRyaWV2ZWQKKyAgKiBAcmV0dXJuIHRoZSBjb21iaW5pbmcgY2xhc3Mgb2YgdGhlIGNvZGVwb2ludAorICAqLworICBwdWJsaWMgc3RhdGljIGJ5dGUgZ2V0Q29tYmluaW5nQ2xhc3MoaW50IGNoKQorICB7CisgICAgaW50IHByb3BzID0gZ2V0UHJvcHMoY2gpOworICAgIGlmKCFVQ2hhcmFjdGVyUHJvcGVydHlEQi5pc0V4Y2VwdGlvbkluZGljYXRvcihwcm9wcykpIHsKKyAgICAgIGlmIChVQ2hhcmFjdGVyUHJvcGVydHlEQi5nZXRQcm9wVHlwZShwcm9wcykgPT0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlckNhdGVnb3J5Lk5PTl9TUEFDSU5HX01BUkspIHsKKyAgICAgICAgcmV0dXJuIChieXRlKShQUk9QRVJUWV9EQl8uZ2V0VW5zaWduZWRWYWx1ZShwcm9wcykpOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHJldHVybiAwOworICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIC8vIHRoZSBjb21iaW5pbmcgY2xhc3MgaXMgaW4gYml0cyAyMy4uMTYgb2YgdGhlIGZpcnN0IGV4Y2VwdGlvbiB2YWx1ZQorICAgICAgcmV0dXJuIChieXRlKSgoUFJPUEVSVFlfREJfLmdldEV4Y2VwdGlvbihQUk9QRVJUWV9EQl8uZ2V0RXhjZXB0aW9uSW5kZXgoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMpLCBVQ2hhcmFjdGVyUHJvcGVydHlEQi5FWENfQ09NQklOSU5HX0NMQVNTXykKKyAgICAgICAgICAgICAgICAgICAgPj4gU0hJRlRfMTZfKSAmIExBU1RfQllURV9NQVNLXyk7CisgICAgfQorICB9CisgIAorICAvKioKKyAgKiBBIGNvZGUgcG9pbnQgaXMgaWxsZWdhbCBpZiBhbmQgb25seSBpZgorICAqIDx1bD4KKyAgKiA8bGk+IE91dCBvZiBib3VuZHMsIGxlc3MgdGhhbiAwIG9yIGdyZWF0ZXIgdGhhbiBVQ2hhcmFjdGVyLk1BWF9WQUxVRQorICAqIDxsaT4gQSBzdXJyb2dhdGUgdmFsdWUsIDB4RDgwMCB0byAweERGRkYKKyAgKiA8bGk+IE5vdC1hLWNoYXJhY3RlciwgaGF2aW5nIHRoZSBmb3JtIDB4IHh4RkZGRiBvciAweCB4eEZGRkUKKyAgKiA8L3VsPgorICAqIE5vdGU6IGxlZ2FsIGRvZXMgbm90IG1lYW4gdGhhdCBpdCBpcyBhc3NpZ25lZCBpbiB0aGlzIHZlcnNpb24gb2YgVW5pY29kZS4KKyAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgYSBsZWdhbCBjb2RlIHBvaW50IGJ5IGl0c2VsZgorICAqIEByZXR1cm4gdHJ1ZSBpZiBhbmQgb25seSBpZiBsZWdhbC4gCisgICovCisgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0xlZ2FsKGludCBjaCkgCisgIHsKKyAgICBpZiAoY2ggPCBNSU5fVkFMVUUpIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKGNoIDwgU1VSUk9HQVRFX01JTl9WQUxVRV8pIHsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBpZiAoY2ggPD0gU1VSUk9HQVRFX01BWF9WQUxVRV8pIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgaWYgKChjaCAmIExBU1RfQ0hBUl9NQVNLXykgPj0gTk9UX0FfQ0hBUl9TVUZGSVhfTUlOXykgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gKGNoIDw9IE1BWF9WQUxVRSk7CisgIH0KKyAgCisgIC8qKgorICAqIEEgc3RyaW5nIGlzIGxlZ2FsIGlmZiBhbGwgaXRzIGNvZGUgcG9pbnRzIGFyZSBsZWdhbC4KKyAgKiBBIGNvZGUgcG9pbnQgaXMgaWxsZWdhbCBpZiBhbmQgb25seSBpZgorICAqIDx1bD4KKyAgKiA8bGk+IE91dCBvZiBib3VuZHMsIGxlc3MgdGhhbiAwIG9yIGdyZWF0ZXIgdGhhbiBVQ2hhcmFjdGVyLk1BWF9WQUxVRQorICAqIDxsaT4gQSBzdXJyb2dhdGUgdmFsdWUsIDB4RDgwMCB0byAweERGRkYKKyAgKiA8bGk+IE5vdC1hLWNoYXJhY3RlciwgaGF2aW5nIHRoZSBmb3JtIDB4IHh4RkZGRiBvciAweCB4eEZGRkUKKyAgKiA8L3VsPgorICAqIE5vdGU6IGxlZ2FsIGRvZXMgbm90IG1lYW4gdGhhdCBpdCBpcyBhc3NpZ25lZCBpbiB0aGlzIHZlcnNpb24gb2YgVW5pY29kZS4KKyAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB0byBkZXRlcm1pbmUgaWYgaXQgaXMgYSBsZWdhbCBjb2RlIHBvaW50IGJ5IGl0c2VsZgorICAqIEByZXR1cm4gdHJ1ZSBpZiBhbmQgb25seSBpZiBsZWdhbC4gCisgICovCisgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0xlZ2FsKFN0cmluZyBzdHIpIAorICB7CisgICAgaW50IHNpemUgPSBzdHIubGVuZ3RoKCk7CisgICAgY2hhciBsZWFkLAorICAgICAgICAgdHJhaWw7CisgICAgaW50IGNvZGVwb2ludDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkgKyspCisgICAgeworICAgICAgY29kZXBvaW50ID0gVVRGMTYuY2hhckF0KHN0ciwgaSk7CisgICAgICBpZiAoIWlzTGVnYWwoY29kZXBvaW50KSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICBpZiAoaXNTdXBwbGVtZW50YXJ5KGNvZGVwb2ludCkpIHsKKyAgICAgICAgaSArKzsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7CisgIH0KKworICAvKioKKyAgKiBHZXRzIHRoZSB2ZXJzaW9uIG9mIFVuaWNvZGUgZGF0YSB1c2VkLiAKKyAgKiBAcmV0dXJuIHRoZSB1bmljb2RlIHZlcnNpb24gbnVtYmVyIHVzZWQKKyAgKi8KKyAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0VW5pY29kZVZlcnNpb24oKQorICB7CisgICAgcmV0dXJuIFBST1BFUlRZX0RCXy5tX3VuaWNvZGV2ZXJzaW9uXzsKKyAgfQorICAKKyAgLyoqCisgICogUmV0cmlldmUgdGhlIG1vc3QgY3VycmVudCBVbmljb2RlIG5hbWUgb2YgdGhlIGFyZ3VtZW50IGNvZGUgcG9pbnQuPGJyPgorICAqIE5vdGUgY2FsbGluZyBhbnkgbWV0aG9kcyByZWxhdGVkIHRvIGNvZGUgcG9pbnQgbmFtZXMsIGUuZy4gZ2V0Kk5hbWUqKCkgCisgICogaW5jdXJzIGEgb25lLXRpbWUgaW5pdGlhbGlzYXRpb24gY29zdCB0byBjb25zdHJ1Y3QgdGhlIG5hbWUgdGFibGVzLgorICAqIEBwYXJhbSBjaCB0aGUgY29kZSBwb2ludCBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBuYW1lCisgICogQHJldHVybiBtb3N0IGN1cnJlbnQgVW5pY29kZSBuYW1lCisgICovCisgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldE5hbWUoaW50IGNoKQorICB7CisgICAgcmV0dXJuIFVDaGFyYWN0ZXJOYW1lLmdldE5hbWUoY2gsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3Rlck5hbWVDaG9pY2UuVV9VTklDT0RFX0NIQVJfTkFNRSk7CisgIH0KKyAgCisgIC8qKgorICAqIFJldHJpZXZlIHRoZSBlYXJsaWVyIHZlcnNpb24gMS4wIFVuaWNvZGUgbmFtZSBvZiB0aGUgYXJndW1lbnQgY29kZSBwb2ludC4KKyAgKiA8YnI+CisgICogTm90ZSBjYWxsaW5nIGFueSBtZXRob2RzIHJlbGF0ZWQgdG8gY29kZSBwb2ludCBuYW1lcywgZS5nLiBnZXQqTmFtZSooKSAKKyAgKiBpbmN1cnMgYSBvbmUtdGltZSBpbml0aWFsaXNhdGlvbiBjb3N0IHRvIGNvbnN0cnVjdCB0aGUgbmFtZSB0YWJsZXMuCisgICogQHBhcmFtIGNoIHRoZSBjb2RlIHBvaW50IGZvciB3aGljaCB0byBnZXQgdGhlIG5hbWUKKyAgKiBAcmV0dXJuIHZlcnNpb24gMS4wIFVuaWNvZGUgbmFtZQorICAqLworICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXROYW1lMV8wKGludCBjaCkKKyAgeworICAgIHJldHVybiBVQ2hhcmFjdGVyTmFtZS5nZXROYW1lKGNoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJOYW1lQ2hvaWNlLlVfVU5JQ09ERV8xMF9DSEFSX05BTUUpOworICB9CisgIAorICAvKioKKyAgKiBGaW5kIGEgVW5pY29kZSBjb2RlIHBvaW50IGJ5IGl0cyBtb3N0IGN1cnJlbnQgVW5pY29kZSBuYW1lIGFuZCByZXR1cm4gaXRzIAorICAqIGNvZGUgcG9pbnQgdmFsdWUuPGJyPgorICAqIE5vdGUgY2FsbGluZyBhbnkgbWV0aG9kcyByZWxhdGVkIHRvIGNvZGUgcG9pbnQgbmFtZXMsIGUuZy4gZ2V0Kk5hbWUqKCkgCisgICogaW5jdXJzIGEgb25lLXRpbWUgaW5pdGlhbGlzYXRpb24gY29zdCB0byBjb25zdHJ1Y3QgdGhlIG5hbWUgdGFibGVzLgorICAqIEBwYXJhbSBuYW1lIG1vc3QgY3VycmVudCBVbmljb2RlIGNoYXJhY3RlciBuYW1lIHdob3NlIGNvZGUgcG9pbnQgaXMgdG8gYmUgCisgICogICAgICAgIHJldHVybmVkCisgICogQHJldHVybiBjb2RlIHBvaW50CisgICovCisgIHB1YmxpYyBzdGF0aWMgaW50IGdldENoYXJGcm9tTmFtZShTdHJpbmcgbmFtZSkKKyAgeworICAgIHJldHVybiBVQ2hhcmFjdGVyTmFtZS5nZXRDaGFyRnJvbU5hbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyTmFtZUNob2ljZS5VX1VOSUNPREVfQ0hBUl9OQU1FLCBuYW1lKTsKKyAgfQorICAKKyAgLyoqCisgICogRmluZCBhIFVuaWNvZGUgY2hhcmFjdGVyIGJ5IGl0cyB2ZXJzaW9uIDEuMCBVbmljb2RlIG5hbWUgYW5kIHJldHVybiBpdHMgCisgICogY29kZSBwb2ludCB2YWx1ZS48YnI+CisgICogTm90ZSBjYWxsaW5nIGFueSBtZXRob2RzIHJlbGF0ZWQgdG8gY29kZSBwb2ludCBuYW1lcywgZS5nLiBnZXQqTmFtZSooKSAKKyAgKiBpbmN1cnMgYSBvbmUtdGltZSBpbml0aWFsaXNhdGlvbiBjb3N0IHRvIGNvbnN0cnVjdCB0aGUgbmFtZSB0YWJsZXMuCisgICogQHBhcmFtIG5hbWUgVW5pY29kZSAxLjAgY29kZSBwb2ludCBuYW1lIHdob3NlIGNvZGUgcG9pbnQgaXMgdG8gCisgICogICAgICAgICAgICAgcmV0dXJuZWQKKyAgKiBAcmV0dXJuIGNvZGUgcG9pbnQKKyAgKi8KKyAgcHVibGljIHN0YXRpYyBpbnQgZ2V0Q2hhckZyb21OYW1lMV8wKFN0cmluZyBuYW1lKQorICB7CisgICAgcmV0dXJuIFVDaGFyYWN0ZXJOYW1lLmdldENoYXJGcm9tTmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJOYW1lQ2hvaWNlLlVfVU5JQ09ERV8xMF9DSEFSX05BTUUsIG5hbWUpOworICB9CisgIAorICAvKioKKyAgKiBSZXR1cm5zIGEgY29kZSBwb2ludGNvcnJlc3BvbmRpbmcgdG8gdGhlIHR3byBVVEYxNiBjaGFyYWN0ZXJzLjxicj4KKyAgKiBJZiB0aGUgYXJndW1lbnQgbGVhZCBpcyBub3QgYSBoaWdoIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIgb3IgdHJhaWwgaXMgbm90IGEgCisgICogbG93IHN1cnJvZ2F0ZSBjaGFyYWN0ZXIsIFVDaGFyYWN0ZXIuUkVQTEFDRU1FTlRfQ0hBUiBpcyByZXR1cm5lZC4KKyAgKiBAcGFyYW0gbGVhZCB0aGUgbGVhZCBjaGFyCisgICogQHBhcmFtIHRyYWlsIHRoZSB0cmFpbCBjaGFyCisgICogQHJldHVybiBjb2RlIHBvaW50IG9yIFVDaGFyYWN0ZXIuUkVQTEFDRU1FTlRfQ0hBUiBpZiBzdXJyb2dhdGUgY2hhcmFjdGVycyAKKyAgKiAgICAgICAgIGFyZSBpbnZhbGlkLgorICAqLworICBwdWJsaWMgc3RhdGljIGludCBnZXRDb2RlUG9pbnQoY2hhciBsZWFkLCBjaGFyIHRyYWlsKSAKKyAgeworICAgIGlmIChVVEYxNi5pc0xlYWRTdXJyb2dhdGUobGVhZCkgJiYgVVRGMTYuaXNUcmFpbFN1cnJvZ2F0ZSh0cmFpbCkpIHsKKyAgICAgIHJldHVybiBnZXRSYXdTdXBwbGVtZW50YXJ5KGxlYWQsIHRyYWlsKTsKKyAgICB9CisgICAgcmV0dXJuIFVDaGFyYWN0ZXIuUkVQTEFDRU1FTlRfQ0hBUjsKKyAgfQorICAKKyAgLyoqCisgICogUmV0dXJucyB0aGUgY29kZSBwb2ludCBjb3JyZXNwb25kaW5nIHRvIHRoZSBVVEYxNiBjaGFyYWN0ZXIuPGJyPgorICAqIElmIGFyZ3VtZW50IGNoYXIxNiBpcyBhIHN1cnJvZ2F0ZSBjaGFyYWN0ZXIsIFVDaGFyYWN0ZXIuUkVQTEFDRU1FTlRfQ0hBUiAKKyAgKiBpcyByZXR1cm5lZAorICAqIEBwYXJhbSBjaGFyMTYgdGhlIFVURjE2IGNoYXJhY3RlcgorICAqIEByZXR1cm4gY29kZSBwb2ludCBvciBVQ2hhcmFjdGVyLlJFUExBQ0VNRU5UX0NIQVIgaWYgYXJndW1lbnQgaXMgbm90IGEgCisgICogICAgICAgICBpbnZhbGlkIGNoYXJhY3Rlci4KKyAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB0aHJvd24gd2hlbiBjaGFyMTYgaXMgbm90IGEgdmFsaWQKKyAgKiAgICAgICAgICAgIGNvZGVwb2ludAorICAqLworICBwdWJsaWMgc3RhdGljIGludCBnZXRDb2RlUG9pbnQoY2hhciBjaGFyMTYpIAorICB7CisgICAgaWYgKFVDaGFyYWN0ZXIuaXNMZWdhbChjaGFyMTYpKSB7CisgICAgICByZXR1cm4gY2hhcjE2OworICAgIH0KKyAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIGNvZGVwb2ludCIpOworICB9CisgIAorICAvKioKKyAgKiBHZXRzIHVwcGVyY2FzZSB2ZXJzaW9uIG9mIHRoZSBhcmd1bWVudCBzdHJpbmcuIAorICAqIENhc2luZyBpcyBkZXBlbmRlbnQgb24gdGhlIGRlZmF1bHQgbG9jYWxlIGFuZCBjb250ZXh0LXNlbnNpdGl2ZS4KKyAgKiBAcGFyYW0gc3RyIHNvdXJjZSBzdHJpbmcgdG8gYmUgcGVyZm9ybWVkIG9uCisgICogQHJldHVybiB1cHBlcmNhc2UgdmVyc2lvbiBvZiB0aGUgYXJndW1lbnQgc3RyaW5nCisgICovCisgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHRvVXBwZXJDYXNlKFN0cmluZyBzdHIpCisgIHsKKyAgICByZXR1cm4gdG9VcHBlckNhc2UoTG9jYWxlLmdldERlZmF1bHQoKSwgc3RyKTsKKyAgfQorICAKKyAgLyoqCisgICogR2V0cyBsb3dlcmNhc2UgdmVyc2lvbiBvZiB0aGUgYXJndW1lbnQgc3RyaW5nLiAKKyAgKiBDYXNpbmcgaXMgZGVwZW5kZW50IG9uIHRoZSBkZWZhdWx0IGxvY2FsZSBhbmQgY29udGV4dC1zZW5zaXRpdmUKKyAgKiBAcGFyYW0gc3RyIHNvdXJjZSBzdHJpbmcgdG8gYmUgcGVyZm9ybWVkIG9uCisgICogQHJldHVybiBsb3dlcmNhc2UgdmVyc2lvbiBvZiB0aGUgYXJndW1lbnQgc3RyaW5nCisgICovCisgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHRvTG93ZXJDYXNlKFN0cmluZyBzdHIpCisgIHsKKyAgICByZXR1cm4gdG9Mb3dlckNhc2UoTG9jYWxlLmdldERlZmF1bHQoKSwgc3RyKTsKKyAgfQorICAKKyAgLyoqCisgICogR2V0cyB1cHBlcmNhc2UgdmVyc2lvbiBvZiB0aGUgYXJndW1lbnQgc3RyaW5nLiAKKyAgKiBDYXNpbmcgaXMgZGVwZW5kZW50IG9uIHRoZSBhcmd1bWVudCBsb2NhbGUgYW5kIGNvbnRleHQtc2Vuc2l0aXZlLgorICAqIEBwYXJhbSBsb2NhbGUgd2hpY2ggc3RyaW5nIGlzIHRvIGJlIGNvbnZlcnRlZCBpbgorICAqIEBwYXJhbSBzdHIgc291cmNlIHN0cmluZyB0byBiZSBwZXJmb3JtZWQgb24KKyAgKiBAcmV0dXJuIHVwcGVyY2FzZSB2ZXJzaW9uIG9mIHRoZSBhcmd1bWVudCBzdHJpbmcKKyAgKi8KKyAgcHVibGljIHN0YXRpYyBTdHJpbmcgdG9VcHBlckNhc2UoTG9jYWxlIGxvY2FsZSwgU3RyaW5nIHN0cikKKyAgeworICAgIGludCBzaXplID0gVVRGMTYuY291bnRDb2RlUG9pbnQoc3RyKTsKKyAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcihzaXplIDw8IDEpOyAvLyBpbml0aWFsIGJ1ZmZlcgorICAgIGludCBwcm9wczsKKyAgICBpbnQgZXhjZXB0aW9uOworICAgIGludCBjaDsKKyAgICBpbnQgaW5kZXg7CisgICAgU3RyaW5nIGxhbmcgPSBsb2NhbGUuZ2V0TGFuZ3VhZ2UoKTsKKyAgICBib29sZWFuIHRyX2F6ID0gbGFuZy5lcXVhbHMoVFVSS0lTSF8pIHx8IGxhbmcuZXF1YWxzKEFaRVJCQUlKQU5JXyk7CisgICAgYm9vbGVhbiBsdCA9IGxhbmcuZXF1YWxzKExJVEhVQU5JQU5fKTsKKyAgICAKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkgKyspCisgICAgeworICAgICAgY2ggPSBVVEYxNi5jaGFyQXRDb2RlUG9pbnRPZmZzZXQoc3RyLCBpKTsKKyAgICAgIHByb3BzID0gUFJPUEVSVFlfREJfLmdldFByb3BlcnR5KGNoKTsKKyAgICAgIGlmICghVUNoYXJhY3RlclByb3BlcnR5REIuaXNFeGNlcHRpb25JbmRpY2F0b3IocHJvcHMpKSAKKyAgICAgIHsKKyAgICAgICAgaWYgKFVDaGFyYWN0ZXJQcm9wZXJ0eURCLmdldFByb3BUeXBlKHByb3BzKSA9PSAKKyAgICAgICAgICAgIFVDaGFyYWN0ZXJDYXRlZ29yeS5MT1dFUkNBU0VfTEVUVEVSKSB7CisgICAgICAgICAgY2ggLT0gVUNoYXJhY3RlclByb3BlcnR5REIuZ2V0U2lnbmVkVmFsdWUocHJvcHMpOworICAgICAgICB9CisgICAgICAgIFVURjE2LmFwcGVuZChyZXN1bHQsIGNoKTsKKyAgICAgIH0KKyAgICAgIGVsc2UgCisgICAgICB7CisgICAgICAgIGluZGV4ID0gVUNoYXJhY3RlclByb3BlcnR5REIuZ2V0RXhjZXB0aW9uSW5kZXgocHJvcHMpOworICAgICAgICBpZiAoUFJPUEVSVFlfREJfLmhhc0V4Y2VwdGlvblZhbHVlKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHlEQi5FWENfU1BFQ0lBTF9DQVNJTkdfKSkgeworICAgICAgICAgIGdldFNwZWNpYWxVcHBlckNhc2UoY2gsIGluZGV4LCByZXN1bHQsIHN0ciwgaSwgdHJfYXosIGx0KTsgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgaWYgKFBST1BFUlRZX0RCXy5oYXNFeGNlcHRpb25WYWx1ZShpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5REIuRVhDX1VQUEVSQ0FTRV8pKSB7CisgICAgICAgICAgICBVVEYxNi5hcHBlbmQocmVzdWx0LCBQUk9QRVJUWV9EQl8uZ2V0RXhjZXB0aW9uKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5REIuRVhDX1VQUEVSQ0FTRV8pKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworICB9CisgIAorICAvKioKKyAgKiBHZXRzIGxvd2VyY2FzZSB2ZXJzaW9uIG9mIHRoZSBhcmd1bWVudCBzdHJpbmcuIAorICAqIENhc2luZyBpcyBkZXBlbmRlbnQgb24gdGhlIGFyZ3VtZW50IGxvY2FsZSBhbmQgY29udGV4dC1zZW5zaXRpdmUKKyAgKiBAcGFyYW0gbG9jYWxlIHdoaWNoIHN0cmluZyBpcyB0byBiZSBjb252ZXJ0ZWQgaW4KKyAgKiBAcGFyYW0gc3RyIHNvdXJjZSBzdHJpbmcgdG8gYmUgcGVyZm9ybWVkIG9uCisgICogQHJldHVybiBsb3dlcmNhc2UgdmVyc2lvbiBvZiB0aGUgYXJndW1lbnQgc3RyaW5nCisgICovCisgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHRvTG93ZXJDYXNlKExvY2FsZSBsb2NhbGUsIFN0cmluZyBzdHIpCisgIHsKKyAgICBpbnQgc2l6ZSA9IFVURjE2LmNvdW50Q29kZVBvaW50KHN0cik7CisgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoc2l6ZSA8PCAxKTsgLy8gaW5pdGlhbCBidWZmZXIKKyAgICBpbnQgcHJvcHM7CisgICAgaW50IGV4Y2VwdGlvbjsKKyAgICBpbnQgY2g7CisgICAgaW50IGluZGV4OworICAgIFN0cmluZyBsYW5nID0gbG9jYWxlLmdldExhbmd1YWdlKCk7CisgICAgYm9vbGVhbiB0cl9heiA9IGxhbmcuZXF1YWxzKFRVUktJU0hfKSB8fCBsYW5nLmVxdWFscyhBWkVSQkFJSkFOSV8pOworICAgIGJvb2xlYW4gbHQgPSBsYW5nLmVxdWFscyhMSVRIVUFOSUFOXyk7CisgICAgaW50IHR5cGU7CisgICAgCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKQorICAgIHsKKyAgICAgIGNoID0gVVRGMTYuY2hhckF0Q29kZVBvaW50T2Zmc2V0KHN0ciwgaSk7CisgICAgICBwcm9wcyA9IFBST1BFUlRZX0RCXy5nZXRQcm9wZXJ0eShjaCk7CisgICAgICBpZiAoIVVDaGFyYWN0ZXJQcm9wZXJ0eURCLmlzRXhjZXB0aW9uSW5kaWNhdG9yKHByb3BzKSkgeworICAgICAgICB0eXBlID0gVUNoYXJhY3RlclByb3BlcnR5REIuZ2V0UHJvcFR5cGUocHJvcHMpOworICAgICAgICBpZiAodHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVVBQRVJDQVNFX0xFVFRFUiB8fAorICAgICAgICAgICAgdHlwZSA9PSBVQ2hhcmFjdGVyQ2F0ZWdvcnkuVElUTEVDQVNFX0xFVFRFUikgeworICAgICAgICAgIGNoICs9IFVDaGFyYWN0ZXJQcm9wZXJ0eURCLmdldFNpZ25lZFZhbHVlKHByb3BzKTsKKyAgICAgICAgfQorICAgICAgICBVVEYxNi5hcHBlbmQocmVzdWx0LCBjaCk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgaW5kZXggPSBVQ2hhcmFjdGVyUHJvcGVydHlEQi5nZXRFeGNlcHRpb25JbmRleChwcm9wcyk7CisgICAgICAgIGlmIChQUk9QRVJUWV9EQl8uaGFzRXhjZXB0aW9uVmFsdWUoaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eURCLkVYQ19TUEVDSUFMX0NBU0lOR18pKSB7CisgICAgICAgICAgZ2V0U3BlY2lhbExvd2VyQ2FzZShjaCwgaW5kZXgsIHJlc3VsdCwgc3RyLCBpLCB0cl9heiwgbHQpOyAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBpZiAoUFJPUEVSVFlfREJfLmhhc0V4Y2VwdGlvblZhbHVlKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHlEQi5FWENfTE9XRVJDQVNFXykpIHsKKyAgICAgICAgICAgIFVURjE2LmFwcGVuZChyZXN1bHQsIFBST1BFUlRZX0RCXy5nZXRFeGNlcHRpb24oaW5kZXgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHlEQi5FWENfTE9XRVJDQVNFXykpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgIH0KKyAgCisgIC8vIHByb3RlY3RlZCBtZXRob2RzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIEZvcm1zIGEgc3VwcGxlbWVudGFyeSBjb2RlIHBvaW50IGZyb20gdGhlIGFyZ3VtZW50IGNoYXJhY3Rlcjxicj4KKyAgKiBOb3RlIHRoaXMgaXMgZm9yIGludGVybmFsIHVzZSBoZW5jZSBubyBjaGVja3MgZm9yIHRoZSB2YWxpZGl0eSBvZiB0aGUKKyAgKiBzdXJyb2dhdGUgY2hhcmFjdGVycyBhcmUgZG9uZQorICAqIEBwYXJhbSBsZWFkIGxlYWQgc3Vycm9nYXRlIGNoYXJhY3RlcgorICAqIEBwYXJhbSB0cmFpbCB0cmFpbGluZyBzdXJyb2dhdGUgY2hhcmFjdGVyCisgICogQHJldHVybiBjb2RlIHBvaW50IG9mIHRoZSBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcgorICAqLworICBwcm90ZWN0ZWQgc3RhdGljIGludCBnZXRSYXdTdXBwbGVtZW50YXJ5KGNoYXIgbGVhZCwgY2hhciB0cmFpbCkKKyAgeworICAgIHJldHVybiAobGVhZCA8PCBMRUFEX1NVUlJPR0FURV9TSElGVF8pICsgdHJhaWwgKyBTVVJST0dBVEVfT0ZGU0VUXzsKKyAgfQorICAKKyAgLy8gcHJpdmF0ZSBtZXRob2RzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIEdldHMgdGhlIGNvcnJlY3QgcHJvcGVydHkgaW5mb3JtYXRpb24gZnJvbSBVQ2hhcmFjdGVyUHJvcGVydHlEQgorICAqIEBwYXJhbSBjaCBjaGFyYWN0ZXIgd2hvc2UgaW5mb3JtYXRpb24gaXMgdG8gYmUgcmV0cmlldmVkCisgICogQHJldHVybiBhIDMyIGJpdCBpbmZvcm1hdGlvbiwgcmV0dXJucyAwIGlmIG5vIGRhdGEgaXMgZm91bmQuCisgICovCisgIHByaXZhdGUgc3RhdGljIGludCBnZXRQcm9wcyhpbnQgY2gpCisgIHsKKyAgICBpZiAoY2ggPj0gVUNoYXJhY3Rlci5NSU5fVkFMVUUgJiBjaCA8PSBVQ2hhcmFjdGVyLk1BWF9WQUxVRSkgeworICAgICAgcmV0dXJuIFBST1BFUlRZX0RCXy5nZXRQcm9wZXJ0eShjaCk7CisgICAgfQorICAgIHJldHVybiAwOworICB9CisgIAorICAvKioKKyAgKiBHZXR0aW5nIEhhbiBjaGFyYWN0ZXIgZGlnaXQgdmFsdWVzCisgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgdG8gdGVzdCBpZiBpdCBpcyBhIEhhbiBjaGFyYWN0ZXIKKyAgKiBAcmV0dXJuIEhhbiBkaWdpdCB2YWx1ZSBpZiBjaCBpcyBhIEhhbiBkaWdpdCBjaGFyYWN0ZXIKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgaW50IGdldEhhbkRpZ2l0KGludCBjaCkKKyAgeworICAgIHN3aXRjaChjaCkKKyAgICB7CisgICAgICBjYXNlIElERU9HUkFQSElDX05VTUJFUl9aRVJPXyA6CisgICAgICAgIHJldHVybiAwOyAvLyBIYW4gWmVybworICAgICAgY2FzZSBDSktfSURFT0dSQVBIX0ZJUlNUXyA6CisgICAgICAgIHJldHVybiAxOyAvLyBIYW4gT25lCisgICAgICBjYXNlIENKS19JREVPR1JBUEhfU0VDT05EXyA6CisgICAgICAgIHJldHVybiAyOyAvLyBIYW4gVHdvCisgICAgICBjYXNlIENKS19JREVPR1JBUEhfVEhJUkRfIDoKKyAgICAgICAgcmV0dXJuIDM7IC8vIEhhbiBUaHJlZQorICAgICAgY2FzZSBDSktfSURFT0dSQVBIX0ZPVVJUSF8gOgorICAgICAgICByZXR1cm4gNDsgLy8gSGFuIEZvdXIKKyAgICAgIGNhc2UgQ0pLX0lERU9HUkFQSF9GSUZUSF8gOgorICAgICAgICByZXR1cm4gNTsgLy8gSGFuIEZpdmUKKyAgICAgIGNhc2UgQ0pLX0lERU9HUkFQSF9TSVhUSF8gOgorICAgICAgICByZXR1cm4gNjsgLy8gSGFuIFNpeAorICAgICAgY2FzZSBDSktfSURFT0dSQVBIX1NFVkVOVEhfIDoKKyAgICAgICAgcmV0dXJuIDc7IC8vIEhhbiBTZXZlbgorICAgICAgY2FzZSBDSktfSURFT0dSQVBIX0VJR0hUSF8gOiAKKyAgICAgICAgcmV0dXJuIDg7IC8vIEhhbiBFaWdodAorICAgICAgY2FzZSBDSktfSURFT0dSQVBIX05JTkVUSF8gOgorICAgICAgICByZXR1cm4gOTsgLy8gSGFuIE5pbmUKKyAgICB9CisgICAgcmV0dXJuIC0xOyAvLyBubyB2YWx1ZQorICB9CisgIAorICAvKioKKyAgKiBTcGVjaWFsIGNhc2luZyB1cHBlcmNhc2UgbWFuYWdlbWVudAorICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IHRvIGNvbnZlcnQKKyAgKiBAcGFyYW0gaW5kZXggb2YgZXhjZXB0aW9uIGNvbnRhaW5pbmcgc3BlY2lhbCBjYXNlIGluZm9ybWF0aW9uCisgICogQHBhcmFtIGJ1ZmZlciB0byBhZGQgdXBwZXJjYXNlCisgICogQHBhcmFtIHN0ciBvcmlnaW5hbCBzdHJpbmcKKyAgKiBAcGFyYW0gY2hpbmRleCBpbmRleCBvZiBjaCBpbiBzdHIKKyAgKiBAcGFyYW0gdHJfYXogaWYgdXBwZXJjYXNlIGlzIHRvIGJlIG1hZGUgd2l0aCBUVVJLSVNIIG9yIEFaRVJCQUlKQU5JIAorICAqICAgICAgICBpbiBtaW5kCisgICogQHBhcmFtIGx0IGlmIHVwcGVyY2FzZSBpcyB0byBiZSBtYWRlIHdpdGggTElUSFVBTklBTiBpbiBtaW5kCisgICovCisgIHByaXZhdGUgc3RhdGljIHZvaWQgZ2V0U3BlY2lhbFVwcGVyQ2FzZShpbnQgY2gsIGludCBpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWZmZXIgYnVmZmVyLCBTdHJpbmcgc3RyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjaGluZGV4LCBib29sZWFuIHRyX2F6LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gbHQpCisgIHsKKyAgICBpbnQgZXhjZXB0aW9uID0gUFJPUEVSVFlfREJfLmdldEV4Y2VwdGlvbihpbmRleCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHlEQi5FWENfU1BFQ0lBTF9DQVNJTkdfKTsKKyAgICBpZiAoZXhjZXB0aW9uIDwgMCkgeworICAgICAgLy8gdXNlIGhhcmRjb2RlZCBjb25kaXRpb25zIGFuZCBtYXBwaW5ncworICAgICAgaWYgKGNoID09IExBVElOX1NNQUxMX0xFVFRFUl9JXykgeworICAgICAgICBpZiAodHJfYXopIHsKKyAgICAgICAgICAvLyB0dXJraXNoIGFuZCBhemVyYmFpamFuaSA6IGkgbWFwcyB0byBkb3R0ZWQgSQorICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoTEFUSU5fQ0FQSVRBTF9MRVRURVJfSV9XSVRIX0RPVF9BQk9WRV8pOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIC8vIG90aGVyIGxhbmd1YWdlczogaSBtYXBzIHRvIEkKKyAgICAgICAgICBidWZmZXIuYXBwZW5kKExBVElOX0NBUElUQUxfTEVUVEVSX0lfKTsKKyAgICAgICAgfQorICAgICAgfSAKKyAgICAgIGVsc2UgeworICAgICAgICBpZiAoY2ggPT0gQ09NQklOSU5HX0RPVF9BQk9WRV8gJiYgbHQpIHsKKyAgICAgICAgICAvLyBsaXRodWFuaWFuOiByZW1vdmUgRE9UIEFCT1ZFIGFmdGVyIFUrMDA2OSAiaSIgd2l0aCB1cHBlciAKKyAgICAgICAgICAvLyBvciB0aXRsZWNhc2UKKyAgICAgICAgICBmb3IgKGludCBqID0gY2hpbmRleDsgaiA+IDA7IGogKyspIHsKKyAgICAgICAgICAgIGNoID0gVVRGMTYuY2hhckF0Q29kZVBvaW50T2Zmc2V0KHN0ciwgaik7CisgICAgICAgICAgICBpZiAoZ2V0VHlwZShjaCkgIT0gVUNoYXJhY3RlckNhdGVnb3J5Lk5PTl9TUEFDSU5HX01BUkspIHsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgIC8vIGlmIHRoZSBiYXNlIGxldHRlciBpcyBub3QgYW4gJ2knIChVKzAwNjkpPyBrZWVwIHRoZSBkb3QKKyAgICAgICAgICBpZiAoY2ggIT0gTEFUSU5fU01BTExfTEVUVEVSX0lfKSB7CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKENPTUJJTklOR19ET1RfQUJPVkVfKTsKKyAgICAgICAgICB9CisgICAgICAgIH0gCisgICAgICAgIGVsc2UgeyAKKyAgICAgICAgICAvLyBubyBrbm93biBjb25kaXRpb25hbCBzcGVjaWFsIGNhc2UgbWFwcGluZywgb3V0cHV0IHRoZSBjb2RlIAorICAgICAgICAgIC8vIHBvaW50IGl0c2VsZgorICAgICAgICAgIFVURjE2LmFwcGVuZChidWZmZXIsIGNoKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0gCisgICAgZWxzZSB7CisgICAgICAvLyBnZXQgdGhlIHNwZWNpYWwgY2FzZSBtYXBwaW5nIHN0cmluZyBmcm9tIHRoZSBkYXRhIGZpbGUKKyAgICAgIGluZGV4ID0gZXhjZXB0aW9uICYgTEFTVF9DSEFSX01BU0tfOworICAgICAgUFJPUEVSVFlfREJfLmdldFVwcGVyQ2FzZShpbmRleCwgYnVmZmVyKTsKKyAgICB9CisgIH0KKyAgCisgIC8qKgorICAqIFNwZWNpYWwgY2FzaW5nIGxvd2VyY2FzZSBtYW5hZ2VtZW50CisgICogQHBhcmFtIGNoIGNvZGUgcG9pbnQgdG8gY29udmVydAorICAqIEBwYXJhbSBpbmRleCBvZiBleGNlcHRpb24gY29udGFpbmluZyBzcGVjaWFsIGNhc2UgaW5mb3JtYXRpb24KKyAgKiBAcGFyYW0gYnVmZmVyIHRvIGFkZCBsb3dlcmNhc2UKKyAgKiBAcGFyYW0gc3RyIG9yaWdpbmFsIHN0cmluZworICAqIEBwYXJhbSBjaGluZGV4IGluZGV4IG9mIGNoIGluIHN0cgorICAqIEBwYXJhbSB0cl9heiBpZiB1cHBlcmNhc2UgaXMgdG8gYmUgbWFkZSB3aXRoIFRVUktJU0ggb3IgQVpFUkJBSUpBTkkgCisgICogICAgICAgIGluIG1pbmQKKyAgKiBAcGFyYW0gbHQgaWYgdXBwZXJjYXNlIGlzIHRvIGJlIG1hZGUgd2l0aCBMSVRIVUFOSUFOIGluIG1pbmQKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBnZXRTcGVjaWFsTG93ZXJDYXNlKGludCBjaCwgaW50IGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBidWZmZXIsIFN0cmluZyBzdHIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNoaW5kZXgsIGJvb2xlYW4gdHJfYXosIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBsdCkKKyAgeworICAgIGludCBleGNlcHRpb24gPSBQUk9QRVJUWV9EQl8uZ2V0RXhjZXB0aW9uKGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXJQcm9wZXJ0eURCLkVYQ19TUEVDSUFMX0NBU0lOR18pOworICAgIGlmIChleGNlcHRpb24gPCAwKSB7CisgICAgICAvLyB1c2UgaGFyZGNvZGVkIGNvbmRpdGlvbnMgYW5kIG1hcHBpbmdzCisgICAgICBpZiAoY2ggPT0gTEFUSU5fQ0FQSVRBTF9MRVRURVJfSV8pIHsKKyAgICAgICAgaWYgKHRyX2F6KSB7CisgICAgICAgICAgLy8gdHVya2lzaCBhbmQgYXplcmJhaWphbmkgOiBJIG1hcHMgdG8gZG90bGVzcyBpCisgICAgICAgICAgYnVmZmVyLmFwcGVuZChMQVRJTl9TTUFMTF9MRVRURVJfRE9UTEVTU19JXyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgLy8gb3RoZXIgbGFuZ3VhZ2VzOiBJIG1hcHMgdG8gaQorICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoTEFUSU5fU01BTExfTEVUVEVSX0lfKTsKKyAgICAgICAgfQorICAgICAgfSAKKyAgICAgIGVsc2UgeworICAgICAgICBpZiAoY2ggPT0gR1JFRUtfQ0FQSVRBTF9MRVRURVJfU0lHTUFfKSB7CisgICAgICAgICAgLy8gZ3JlZWsgY2FwaXRhbCBzaWdtYSBtYXBzIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBmb2xsb3dpbmcgCisgICAgICAgICAgLy8gY2hhcmFjdGVyIGlzIGEgbGV0dGVyCisgICAgICAgICAgY2hpbmRleCArKzsKKyAgICAgICAgICBpZiAoY2hpbmRleCAhPSBzdHIubGVuZ3RoKCkgJiYgCisgICAgICAgICAgICAgIGlzTGV0dGVyKFVURjE2LmNoYXJBdENvZGVQb2ludE9mZnNldChzdHIsIGNoaW5kZXgpKSkgeworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChHUkVFS19TTUFMTF9MRVRURVJfU0lHTUFfKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKEdSRUVLX1NNQUxMX0xFVFRFUl9SSE9fKTsKKyAgICAgICAgICB9CisgICAgICAgIH0gCisgICAgICAgIGVsc2UgeworICAgICAgICAgIC8vIG5vIGtub3duIGNvbmRpdGlvbmFsIHNwZWNpYWwgY2FzZSBtYXBwaW5nLCBvdXRwdXQgdGhlIGNvZGUgCisgICAgICAgICAgLy8gcG9pbnQgaXRzZWxmCisgICAgICAgICAgVVRGMTYuYXBwZW5kKGJ1ZmZlciwgY2gpOworICAgICAgICB9CisgICAgICB9CisgICAgfSAKKyAgICBlbHNlIAorICAgIHsKKyAgICAgIC8vIGdldCB0aGUgc3BlY2lhbCBjYXNlIG1hcHBpbmcgc3RyaW5nIGZyb20gdGhlIGRhdGEgZmlsZQorICAgICAgaW5kZXggPSBleGNlcHRpb24gJiBMQVNUX0NIQVJfTUFTS187CisgICAgICBQUk9QRVJUWV9EQl8uZ2V0TG93ZXJDYXNlKGluZGV4LCBidWZmZXIpOworICAgIH0KKyAgfQorfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L1VDaGFyYWN0ZXJDYXRlZ29yeS5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9VQ2hhcmFjdGVyQ2F0ZWdvcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xZWY3MTJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9VQ2hhcmFjdGVyQ2F0ZWdvcnkuamF2YQpAQCAtMCwwICsxLDI0OCBAQAorLyoqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IAorKiAgICAgIC91c3IvY3ZzL2ljdTRqL2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L1VDaGFyYWN0ZXJDYXRlZ29yeS5qYXZhICQgCisqICREYXRlOiAyMDAxLzAzLzIzIDE5OjUxOjM4ICQgCisqICRSZXZpc2lvbjogMS4yICQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS50ZXh0OworCisvKioKKyogRW51bWVyYXRlZCBVbmljb2RlIGNhdGVnb3J5IHR5cGVzIGZyb20gdGhlIFVuaWNvZGVEYXRhLnR4dCBmaWxlLgorKiBVc2VkIGFzIHJldHVybiByZXN1bHRzIGZyb20gPGEgaHJlZj1VQ2hhcmFjdGVyLmh0bWw+VUNoYXJhY3RlcjwvYT4KKyogRXF1aXZhbGVudCB0byBpY3UncyBVQ2hhckNhdGVnb3J5LgorKiBSZWZlciB0byA8YSBocmVmPWh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljL1VOSURBVEEvVW5pY29kZURhdGEuaHRtbD4KKyogVW5pY29kZSBDb25zb3J0aXVtPC9hPiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBVbmljb2RlRGF0YS50eHQuCisqIEBhdXRob3IgU3luIFdlZSBRdWVrCisqIEBzaW5jZSBvY3QwMzAwCisqLworCitwdWJsaWMgY2xhc3MgVUNoYXJhY3RlckNhdGVnb3J5Cit7CisgIC8vIHByaXZhdGUgY29uc3RydWN0b3IgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICAvKioKKyAgKiBQcml2YXRlIGNvbnN0cnVjdG9yIHRvIHByZXZlbnQgaW5pdGlhbGlzYXRpb24KKyAgKi8KKyAgcHJpdmF0ZSBVQ2hhcmFjdGVyQ2F0ZWdvcnkoKQorICB7CisgIH0KKyAgCisgIC8vIHB1YmxpYyB2YXJpYWJsZSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICAvKioKKyAgKiBVbmFzc2lnbmVkIGNoYXJhY3RlciB0eXBlCisgICovCisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFVOQVNTSUdORUQgICAgICAgICAgICAgID0gMDsgCisgIC8qKgorICAqIENoYXJhY3RlciB0eXBlIEx1CisgICovCisgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFVQUEVSQ0FTRV9MRVRURVIgICAgICAgID0gMTsKKyAgLyoqCisgICogQ2hhcmFjdGVyIHR5cGUgTGwKKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMT1dFUkNBU0VfTEVUVEVSICAgICAgICA9IDI7CisJLyoqCisgICogQ2hhcmFjdGVyIHR5cGUgTHQKKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUSVRMRUNBU0VfTEVUVEVSICAgICAgICA9IDM7CisJLyoqCisgICogQ2hhcmFjdGVyIHR5cGUgTG0KKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNT0RJRklFUl9MRVRURVIgICAgICAgICA9IDQ7CisJLyoqCisgICogQ2hhcmFjdGVyIHR5cGUgTG8KKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBPVEhFUl9MRVRURVIgICAgICAgICAgICA9IDU7CisJLyoqCisgICogQ2hhcmFjdGVyIHR5cGUgTHUKKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBOT05fU1BBQ0lOR19NQVJLICAgICAgICA9IDY7CisJLyoqCisgICogQ2hhcmFjdGVyIHR5cGUgTWUKKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFTkNMT1NJTkdfTUFSSyAgICAgICAgICA9IDc7CisJLyoqCisgICogQ2hhcmFjdGVyIHR5cGUgTWMKKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT01CSU5JTkdfU1BBQ0lOR19NQVJLICA9IDg7CisJLyoqCisgICogQ2hhcmFjdGVyIHR5cGUgTmQKKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBERUNJTUFMX0RJR0lUX05VTUJFUiAgICA9IDk7CisJLyoqCisgICogQ2hhcmFjdGVyIHR5cGUgTmwKKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMRVRURVJfTlVNQkVSICAgICAgICAgICA9IDEwOworCQorCS8vIHN0YXJ0IG9mIDExLS0tLS0tLS0tLS0tCisJCisJLyoqCisgICogQ2hhcmFjdGVyIHR5cGUgTm8KKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBPVEhFUl9OVU1CRVIgICAgICAgICAgICA9IDExOworCS8qKgorICAqIENoYXJhY3RlciB0eXBlIFpzCisgICovCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1BBQ0VfU0VQQVJBVE9SICAgICAgICAgPSAxMjsKKwkvKioKKyAgKiBDaGFyYWN0ZXIgdHlwZSBabAorICAqLworCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IExJTkVfU0VQQVJBVE9SICAgICAgICAgID0gMTM7CisJLyoqCisgICogQ2hhcmFjdGVyIHR5cGUgWnAKKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQQVJBR1JBUEhfU0VQQVJBVE9SICAgICA9IDE0OworCS8qKgorICAqIENoYXJhY3RlciB0eXBlIENjCisgICovCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09OVFJPTCAgICAgICAgICAgICAgICAgPSAxNTsKKwkvKioKKyAgKiBDaGFyYWN0ZXIgdHlwZSBDZgorICAqLworCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPUk1BVCAgICAgICAgICAgICAgICAgID0gMTY7CisJLyoqCisgICogQ2hhcmFjdGVyIHR5cGUgQ28KKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQUklWQVRFX1VTRSAgICAgICAgICAgICA9IDE3OworCS8qKgorICAqIENoYXJhY3RlciB0eXBlIENzCisgICovCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1VSUk9HQVRFICAgICAgICAgICAgICAgPSAxODsKKwkvKioKKyAgKiBDaGFyYWN0ZXIgdHlwZSBQZAorICAqLworCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERBU0hfUFVOQ1RVQVRJT04gICAgICAgID0gMTk7CisJLyoqCisgICogQ2hhcmFjdGVyIHR5cGUgUHMKKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFSVF9QVU5DVFVBVElPTiAgICAgICA9IDIwOworCQorCS8vIHN0YXJ0IG9mIDIxIC0tLS0tLS0tLS0tLQorCisJLyoqCisgICogQ2hhcmFjdGVyIHR5cGUgUGUKKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFTkRfUFVOQ1RVQVRJT04gICAgICAgICA9IDIxOworCS8qKgorICAqIENoYXJhY3RlciB0eXBlIFBjCisgICovCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09OTkVDVE9SX1BVTkNUVUFUSU9OICAgPSAyMjsKKwkvKioKKyAgKiBDaGFyYWN0ZXIgdHlwZSBQbworICAqLworCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE9USEVSX1BVTkNUVUFUSU9OICAgICAgID0gMjM7CisJLyoqCisgICogQ2hhcmFjdGVyIHR5cGUgU20KKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNQVRIX1NZTUJPTCAgICAgICAgICAgICA9IDI0OworCS8qKgorICAqIENoYXJhY3RlciB0eXBlIFNjCisgICovCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ1VSUkVOQ1lfU1lNQk9MICAgICAgICAgPSAyNTsKKwkvKioKKyAgKiBDaGFyYWN0ZXIgdHlwZSBTaworICAqLworCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1PRElGSUVSX1NZTUJPTCAgICAgICAgID0gMjY7CisJLyoqCisgICogQ2hhcmFjdGVyIHR5cGUgU28KKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBPVEhFUl9TWU1CT0wgICAgICAgICAgICA9IDI3OworCS8qKgorICAqIENoYXJhY3RlciB0eXBlIFBpCisgICovCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU5JVElBTF9QVU5DVFVBVElPTiAgICAgPSAyODsKKwkvKioKKyAgKiBDaGFyYWN0ZXIgdHlwZSBQZgorICAqLworCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZJTkFMX1BVTkNUVUFUSU9OICAgICAgID0gMjk7CisJLyoqCisgICogQ2hhcmFjdGVyIHR5cGUgQ24KKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHRU5FUkFMX09USEVSX1RZUEVTICAgICA9IDMwOworCQorCS8vIHN0YXJ0IG9mIDMxIC0tLS0tLS0tLS0tLQorCisJLyoqCisgICogQ2hhcmFjdGVyIHR5cGUgY291bnQKKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDSEFSX0NBVEVHT1JZX0NPVU5UICAgICA9IDMxOworCQorCS8qKgorCSogR2V0cyB0aGUgbmFtZSBvZiB0aGUgYXJndW1lbnQgY2F0ZWdvcnkKKwkqIEBwYXJhbSBjYXRlZ29yeSB0byByZXRyaWV2ZSBuYW1lCisJKiBAcmV0dXJuIGNhdGVnb3J5IG5hbWUKKwkqLworCXB1YmxpYyBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGludCBjYXRlZ29yeSkKKwl7CisJICBzd2l0Y2ggKGNhdGVnb3J5KQorCSAgeworCSAgICBjYXNlIFVQUEVSQ0FTRV9MRVRURVIgOgorCSAgICAgIHJldHVybiAiTGV0dGVyLCBVcHBlcmNhc2UiOworCSAgICBjYXNlIExPV0VSQ0FTRV9MRVRURVIgOgorCSAgICAgIHJldHVybiAiTGV0dGVyLCBMb3dlcmNhc2UiOworCSAgICBjYXNlIFRJVExFQ0FTRV9MRVRURVIgOgorCSAgICAgIHJldHVybiAiTGV0dGVyLCBUaXRsZWNhc2UiOworCSAgICBjYXNlIE1PRElGSUVSX0xFVFRFUiA6CisJICAgICAgcmV0dXJuICJMZXR0ZXIsIE1vZGlmaWVyIjsKKwkgICAgY2FzZSBPVEhFUl9MRVRURVIgOgorCSAgICAgIHJldHVybiAiTGV0dGVyLCBPdGhlciI7CisJICAgIGNhc2UgTk9OX1NQQUNJTkdfTUFSSyA6CisJICAgICAgcmV0dXJuICJNYXJrLCBOb24tU3BhY2luZyI7CisJICAgIGNhc2UgRU5DTE9TSU5HX01BUksgOiAKKwkgICAgICByZXR1cm4gIk1hcmssIEVuY2xvc2luZyI7CisJICAgIGNhc2UgQ09NQklOSU5HX1NQQUNJTkdfTUFSSyA6CisJICAgICAgcmV0dXJuICJNYXJrLCBTcGFjaW5nIENvbWJpbmluZyI7CisJICAgIGNhc2UgREVDSU1BTF9ESUdJVF9OVU1CRVIgOgorCSAgICAgIHJldHVybiAiTnVtYmVyLCBEZWNpbWFsIERpZ2l0IjsKKwkgICAgY2FzZSBMRVRURVJfTlVNQkVSIDoKKwkgICAgICByZXR1cm4gIk51bWJlciwgTGV0dGVyIjsKKwkgICAgY2FzZSBPVEhFUl9OVU1CRVIgOgorCSAgICAgIHJldHVybiAiTnVtYmVyLCBPdGhlciI7CisJICAgIGNhc2UgU1BBQ0VfU0VQQVJBVE9SIDoKKwkgICAgICByZXR1cm4gIlNlcGFyYXRvciwgU3BhY2UiOworCSAgICBjYXNlIExJTkVfU0VQQVJBVE9SIDoKKwkgICAgICByZXR1cm4gIlNlcGFyYXRvciwgTGluZSI7CisJICAgIGNhc2UgUEFSQUdSQVBIX1NFUEFSQVRPUiA6CisJICAgICAgcmV0dXJuICJTZXBhcmF0b3IsIFBhcmFncmFwaCI7CisJICAgIGNhc2UgQ09OVFJPTCA6CisJICAgICAgcmV0dXJuICJPdGhlciwgQ29udHJvbCI7CisJICAgIGNhc2UgRk9STUFUIDoKKwkgICAgICByZXR1cm4gIk90aGVyLCBGb3JtYXQiOworCSAgICBjYXNlIFBSSVZBVEVfVVNFIDoKKwkgICAgICByZXR1cm4gIk90aGVyLCBQcml2YXRlIFVzZSI7CisJICAgIGNhc2UgU1VSUk9HQVRFIDoKKwkgICAgICByZXR1cm4gIk90aGVyLCBTdXJyb2dhdGUiOworCSAgICBjYXNlIERBU0hfUFVOQ1RVQVRJT04gOgorCSAgICAgIHJldHVybiAiUHVuY3R1YXRpb24sIERhc2giOworCSAgICBjYXNlIFNUQVJUX1BVTkNUVUFUSU9OIDoKKwkgICAgICByZXR1cm4gIlB1bmN0dWF0aW9uLCBPcGVuIjsKKwkgICAgY2FzZSBFTkRfUFVOQ1RVQVRJT04gOgorCSAgICAgIHJldHVybiAiUHVuY3R1YXRpb24sIENsb3NlIjsKKwkgICAgY2FzZSBDT05ORUNUT1JfUFVOQ1RVQVRJT04gOgorCSAgICAgIHJldHVybiAiUHVuY3R1YXRpb24sIENvbm5lY3RvciI7CisJICAgIGNhc2UgT1RIRVJfUFVOQ1RVQVRJT04gOgorCSAgICAgIHJldHVybiAiUHVuY3R1YXRpb24sIE90aGVyIjsKKwkgICAgY2FzZSBNQVRIX1NZTUJPTCA6CisJICAgICAgcmV0dXJuICJTeW1ib2wsIE1hdGgiOworCSAgICBjYXNlIENVUlJFTkNZX1NZTUJPTCA6CisJICAgICAgcmV0dXJuICJTeW1ib2wsIEN1cnJlbmN5IjsKKwkgICAgY2FzZSBNT0RJRklFUl9TWU1CT0wgOgorCSAgICAgIHJldHVybiAiU3ltYm9sLCBNb2RpZmllciI7CisJICAgIGNhc2UgT1RIRVJfU1lNQk9MIDoKKwkgICAgICByZXR1cm4gIlN5bWJvbCwgT3RoZXIiOworCSAgICBjYXNlIElOSVRJQUxfUFVOQ1RVQVRJT04gOgorCSAgICAgIHJldHVybiAiUHVuY3R1YXRpb24sIEluaXRpYWwgcXVvdGUgIjsKKwkgICAgY2FzZSBGSU5BTF9QVU5DVFVBVElPTiA6CisJICAgICAgcmV0dXJuICJQdW5jdHVhdGlvbiwgRmluYWwgcXVvdGUgIjsKKwkgIH0KKwkgIHJldHVybiAiVW5hc3NpZ25lZCI7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9VQ2hhcmFjdGVyREIuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvVUNoYXJhY3RlckRCLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjAwOGQ0NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvVUNoYXJhY3RlckRCLmphdmEKQEAgLTAsMCArMSw5NCBAQAorLyoqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvQXR0aWMvVUNoYXJhY3RlckRCLmphdmEsdiAkIAorKiAkRGF0ZTogMjAwMS8wMy8yMyAxOTo1MTozOCAkIAorKiAkUmV2aXNpb246IDEuMyAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLnRleHQ7CisKKy8qKgorKiBJbnRlcm5hbCBiYXNlIGNsYXNzIGZvciBhbGwgY2hhcmFjdGVyIGRhdGFiYXNlcy4KKyogRGF0YWJhc2UgY2xhc3NlcyBzdG9yZSBiaW5hcnkgZGF0YSByZWFkIGZyb20gdXByb3BzLmRhdCBhbmQgdW5hbWVzIGZvciB1c2UuIAorKiBJdCBkb2VzIG5vdCBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIHBhcnNlIHRoZSBkYXRhIGludG8gbW9yZSBoaWdoLWxldmVsIAorKiBpbmZvcm1hdGlvbi4gSXQgb25seSByZXR1cm5zIGJ5dGVzIG9mIGluZm9ybWF0aW9uIHdoZW4gcmVxdWlyZWQuIAorKiBEdWUgdG8gdGhlIGZvcm0gbW9zdCBjb21tb25seSB1c2VkIGZvciByZXRyaWV2YWwsIGFycmF5IG9mIGNoYXIgaXMgdXNlZAorKiB0byBzdG9yZSB0aGUgYmluYXJ5IGRhdGEKKyogUmVzcG9uc2liaWxpdHkgZm9yIG1vbGRpbmcgdGhlIGJpbmFyeSBkYXRhIGludG8gbW9yZSBtZWFuaW5nIGZvcm0gbGllcyBvbiAKKyogPGEgaHJlZj1VQ2hhcmFjdGVyUHJvcGVydHlEQi5odG1sPlVDaGFyYWN0ZXJQcm9wZXJ0eURCPC9hPiBhbmQgCisqIDxhIGhyZWY9VUNoYXJhY3Rlck5hbWVEQi5odG1sPlVDaGFyYWN0ZXJOYW1lREI8L2E+LgorKiBEYXRhIHBvcHVsYXRlZCBieSA8YSBocmVmPVVHZW5SZWFkZXIuaHRtbD5VR2VuUmVhZGVyPC9hPgorKiBAYXV0aG9yIFN5biBXZWUgUXVlaworKiBAc2luY2Ugb2N0MzEwMCBIQUxMT1dFRU4hIQorKiBAc2VlIGNvbS5pYm0udGV4dC5VQ2hhcmFjdGVyUHJvcGVydHlEQgorKiBAc2VlIGNvbS5pYm0udGV4dC5VQ2hhcmFjdGVyTmFtZURCCisqLworCitjbGFzcyBVQ2hhcmFjdGVyREIKK3sKKyAgLy8gcHJvdGVjdGVkIHZhcmlhYmxlID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gIAorICAKKyAgLyoqCisgICogVW5pY29kZSBkYXRhIHZlcnNpb24KKyAgKi8KKyAgU3RyaW5nIG1fdW5pY29kZXZlcnNpb25fOworICAKKyAgLy8gY29uc3RydWN0b3IgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICAvKioKKyAgKiBDb25zdHJ1Y3RvciBmb3IgVUNoYXJhY3RlckRCCisgICovCisgIHByb3RlY3RlZCBVQ2hhcmFjdGVyREIoKQorICB7CisgIH0KKyAgCisgIC8vIHB1YmxpYyBtZXRob2QgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICAvKioKKyAgICogdG9TdHJpbmcgbWV0aG9kIGZvciBwcmludGluZworICAgKi8KKyAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCisgIHsKKyAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgIHJlc3VsdC5hcHBlbmQoIlxudW5pY29kZSB2ZXJzaW9uIG51bWJlciAiKTsKKyAgICByZXN1bHQuYXBwZW5kKG1fdW5pY29kZXZlcnNpb25fKTsKKyAgICAKKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgIH0KKyAgCisgIC8vIHByb3RlY3RlZCBtZXRob2QgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICAvKioKKyAgKiBzZXQgdmVyc2lvbiBudW1iZXIgZm9yIHRoaXMgc2V0IG9mIHVuaWNvZGUgY2hhcmFjdGVycworICAqIEBwYXJhbSB2ZXJzaW9uCisgICogQHJldHVybiBmYWxzZSBpZiB2ZXJzaW9uIGlzIG5vdCBhIHZhbGlkIG51bWJlcgorICAqLworICBwcm90ZWN0ZWQgYm9vbGVhbiBzZXRVbmljb2RlVmVyc2lvbihieXRlW10gdmVyc2lvbikKKyAgeworICAgIGludCBzaXplID0gMDsKKyAgICBpZiAodmVyc2lvbiAhPSBudWxsKSB7CisgICAgICBzaXplID0gdmVyc2lvbi5sZW5ndGg7CisgICAgfQorICAgIGJvb2xlYW4gcmVzdWx0ID0gZmFsc2U7CisgICAgU3RyaW5nQnVmZmVyIHMgPSBuZXcgU3RyaW5nQnVmZmVyKHNpemUpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICBzLmFwcGVuZCgoaW50KXZlcnNpb25baV0pOworICAgICAgcy5hcHBlbmQoJy4nKTsKKyAgICAgIGlmICh2ZXJzaW9uW2ldIDwgMCB8fCB2ZXJzaW9uW2ldID4gOSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgICBpZiAodmVyc2lvbltpXSAhPSAwKSB7CisgICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAgICB9CisgICAgfQorICAgIGlmIChyZXN1bHQpIHsKKyAgICAgIG1fdW5pY29kZXZlcnNpb25fID0gcy5zdWJzdHJpbmcoMCwgKHNpemUgPDwgMSkgLSAxKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7CisgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvVUNoYXJhY3RlckRpcmVjdGlvbi5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9VQ2hhcmFjdGVyRGlyZWN0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTFiNmIxYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvVUNoYXJhY3RlckRpcmVjdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTcxIEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogCisqICAgICAvdXNyL2N2cy9pY3U0ai9pY3U0ai9zcmMvY29tL2libS9pY3UvdGV4dC9VQ2hhcmFjdGVyRGlyZWN0aW9uLmphdmEgJCAKKyogJERhdGU6IDIwMDEvMDMvMjMgMTk6NTE6MzggJCAKKyogJFJldmlzaW9uOiAxLjIgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworcGFja2FnZSBjb20uaWJtLnRleHQ7CisKKy8qKgorKiBFbnVtZXJhdGVkIFVuaWNvZGUgY2hhcmFjdGVyIGxpbmd1aXN0aWMgZGlyZWN0aW9uIGNvbnN0YW50cy4KKyogVXNlZCBhcyByZXR1cm4gcmVzdWx0cyBmcm9tIDxhIGhyZWY9VUNoYXJhY3Rlci5odG1sPlVDaGFyYWN0ZXI8L2E+CisqIEBhdXRob3IgU3luIFdlZSBRdWVrCisqIEBzaW5jZSBvY3QwMzAwCisqLworCitwdWJsaWMgZmluYWwgY2xhc3MgVUNoYXJhY3RlckRpcmVjdGlvbgoreworICAvLyBwcml2YXRlIGNvbnN0cnVjdG9yID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICAvKioKKyAgKiBQcml2YXRlIGNvbnN0cnVjdG9yIHRvIHByZXZlbnQgaW5pdGlhbGlzYXRpb24KKyAgKi8KKyAgcHJpdmF0ZSBVQ2hhcmFjdGVyRGlyZWN0aW9uKCkKKyAgeworICB9CisgIAorICAvLyBwdWJsaWMgdmFyaWFibGUgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICAvKioKKyAgKiBEaXJlY3Rpb25hbCB0eXBlIEwKKyAgKi8KKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTEVGVF9UT19SSUdIVCAgICAgICAgICAgICAgPSAwOworICAvKioKKyAgKiBEaXJlY3Rpb25hbCB0eXBlIFIKKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSSUdIVF9UT19MRUZUICAgICAgICAgICAgICA9IDE7CisJLyoqCisgICogRGlyZWN0aW9uYWwgdHlwZSBFTgorICAqLworCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVVUk9QRUFOX05VTUJFUiAgICAgICAgICAgID0gMjsKKwkvKioKKyAgKiBEaXJlY3Rpb25hbCB0eXBlIEVTCisgICovCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRVVST1BFQU5fTlVNQkVSX1NFUEFSQVRPUiAgPSAzOworCS8qKgorICAqIERpcmVjdGlvbmFsIHR5cGUgRVQKKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFVVJPUEVBTl9OVU1CRVJfVEVSTUlOQVRPUiA9IDQ7CisgIC8qKgorICAqIERpcmVjdGlvbmFsIHR5cGUgQU4KKyAgKi8JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBUkFCSUNfTlVNQkVSICAgICAgICAgICAgICA9IDU7CisJLyoqCisgICogRGlyZWN0aW9uYWwgdHlwZSBDUworICAqLworCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENPTU1PTl9OVU1CRVJfU0VQQVJBVE9SICAgID0gNjsKKwkvKioKKyAgKiBEaXJlY3Rpb25hbCB0eXBlIEIKKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCTE9DS19TRVBBUkFUT1IgICAgICAgICAgICA9IDc7CisJLyoqCisgICogRGlyZWN0aW9uYWwgdHlwZSBTCisgICovICAgICAgCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VHTUVOVF9TRVBBUkFUT1IgICAgICAgICAgPSA4OworCS8qKgorICAqIERpcmVjdGlvbmFsIHR5cGUgV1MKKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBXSElURV9TUEFDRV9ORVVUUkFMICAgICAgICA9IDk7CisJCisJLy8gc3RhcnQgb2YgMTEgLS0tLS0tLS0tLS0tLS0tCisJCisJLyoqCisgICogRGlyZWN0aW9uYWwgdHlwZSBPTgorICAqLworCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE9USEVSX05FVVRSQUwgICAgICAgICAgICAgID0gMTA7CisJLyoqCisgICogRGlyZWN0aW9uYWwgdHlwZSBMUkUKKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMRUZUX1RPX1JJR0hUX0VNQkVERElORyAgICA9IDExOworCS8qKgorICAqIERpcmVjdGlvbmFsIHR5cGUgTFJPCisgICovCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTEVGVF9UT19SSUdIVF9PVkVSUklERSAgICAgPSAxMjsgIAorICAvKioKKyAgKiBEaXJlY3Rpb25hbCB0eXBlIEFMCisgICovCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUklHSFRfVE9fTEVGVF9BUkFCSUMgICAgICAgPSAxMzsKKwkvKioKKyAgKiBEaXJlY3Rpb25hbCB0eXBlIFJMRQorICAqLworCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJJR0hUX1RPX0xFRlRfRU1CRURESU5HICAgID0gMTQ7CisJLyoqCisgICogRGlyZWN0aW9uYWwgdHlwZSBSTE8KKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSSUdIVF9UT19MRUZUX09WRVJSSURFICAgICA9IDE1OworCS8qKgorICAqIERpcmVjdGlvbmFsIHR5cGUgUERGCisgICovCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUE9QX0RJUkVDVElPTkFMX0ZPUk1BVCAgICAgPSAxNjsKKwkvKioKKyAgKiBEaXJlY3Rpb25hbCB0eXBlIE5TTQorICAqLworCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERJUl9OT05fU1BBQ0lOR19NQVJLICAgICAgID0gMTc7CisJLyoqCisgICogRGlyZWN0aW9uYWwgdHlwZSBCTgorICAqLworCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJPVU5EQVJZX05FVVRSQUwgICAgICAgICAgID0gMTg7CisJLyoqCisgICogTnVtYmVyIG9mIGRpcmVjdGlvbmFsIHR5cGUKKyAgKi8KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDSEFSX0RJUkVDVElPTl9DT1VOVCAgICAgICA9IDE5OworCQorCS8qKgorCSogR2V0cyB0aGUgbmFtZSBvZiB0aGUgYXJndW1lbnQgZGlyZWN0aW9uCisJKiBAcGFyYW0gZGlyIGRpcmVjdGlvbiB0eXBlIHRvIHJldHJpZXZlIG5hbWUKKwkqIEByZXR1cm4gZGlyZWN0aW9uYWwgbmFtZQorCSovCisJcHVibGljIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoaW50IGRpcikKKwl7CisJICBzd2l0Y2goZGlyKQorCSAgeworCSAgICBjYXNlIExFRlRfVE9fUklHSFQgOgorCSAgICAgIHJldHVybiAiTGVmdC10by1SaWdodCI7CisJICAgIGNhc2UgUklHSFRfVE9fTEVGVCA6CisJICAgICAgcmV0dXJuICJSaWdodC10by1MZWZ0IjsKKwkgICAgY2FzZSBFVVJPUEVBTl9OVU1CRVIgOgorCSAgICAgIHJldHVybiAiRXVyb3BlYW4gTnVtYmVyIjsKKwkgICAgY2FzZSBFVVJPUEVBTl9OVU1CRVJfU0VQQVJBVE9SIDoKKwkgICAgICByZXR1cm4gIkV1cm9wZWFuIE51bWJlciBTZXBhcmF0b3IiOworCSAgICBjYXNlIEVVUk9QRUFOX05VTUJFUl9URVJNSU5BVE9SIDoKKwkgICAgICByZXR1cm4gIkV1cm9wZWFuIE51bWJlciBUZXJtaW5hdG9yIjsKKwkgICAgY2FzZSBBUkFCSUNfTlVNQkVSIDoKKwkgICAgICByZXR1cm4gIkFyYWJpYyBOdW1iZXIiOworCSAgICBjYXNlIENPTU1PTl9OVU1CRVJfU0VQQVJBVE9SIDoKKwkgICAgICByZXR1cm4gIkNvbW1vbiBOdW1iZXIgU2VwYXJhdG9yIjsKKwkgICAgY2FzZSBCTE9DS19TRVBBUkFUT1IgOgorCSAgICAgIHJldHVybiAiUGFyYWdyYXBoIFNlcGFyYXRvciI7CisJICAgIGNhc2UgU0VHTUVOVF9TRVBBUkFUT1IgOgorCSAgICAgIHJldHVybiAiU2VnbWVudCBTZXBhcmF0b3IiOworCSAgICBjYXNlIFdISVRFX1NQQUNFX05FVVRSQUwgOgorCSAgICAgIHJldHVybiAiV2hpdGVzcGFjZSI7CisJICAgIGNhc2UgT1RIRVJfTkVVVFJBTCA6CisJICAgICAgcmV0dXJuICJPdGhlciBOZXV0cmFscyI7CisJICAgIGNhc2UgTEVGVF9UT19SSUdIVF9FTUJFRERJTkcgOgorCSAgICAgIHJldHVybiAiTGVmdC10by1SaWdodCBFbWJlZGRpbmciOworCSAgICBjYXNlIExFRlRfVE9fUklHSFRfT1ZFUlJJREUgOgorCSAgICAgIHJldHVybiAiTGVmdC10by1SaWdodCBPdmVycmlkZSI7CisJICAgIGNhc2UgUklHSFRfVE9fTEVGVF9BUkFCSUMgOgorCSAgICAgIHJldHVybiAiUmlnaHQtdG8tTGVmdCBBcmFiaWMiOworCSAgICBjYXNlIFJJR0hUX1RPX0xFRlRfRU1CRURESU5HIDoKKwkgICAgICByZXR1cm4gIlJpZ2h0LXRvLUxlZnQgRW1iZWRkaW5nIjsKKwkgICAgY2FzZSBSSUdIVF9UT19MRUZUX09WRVJSSURFIDoKKwkgICAgICByZXR1cm4gIlJpZ2h0LXRvLUxlZnQgT3ZlcnJpZGUiOworCSAgICBjYXNlIFBPUF9ESVJFQ1RJT05BTF9GT1JNQVQgOgorCSAgICAgIHJldHVybiAiUG9wIERpcmVjdGlvbmFsIEZvcm1hdCI7CisJICAgIGNhc2UgRElSX05PTl9TUEFDSU5HX01BUksgOgorCSAgICAgIHJldHVybiAiTm9uLVNwYWNpbmcgTWFyayI7CisJICAgIGNhc2UgQk9VTkRBUllfTkVVVFJBTCA6CisJICAgICAgcmV0dXJuICJCb3VuZGFyeSBOZXV0cmFsIjsKKwkgIH0KKwkgIHJldHVybiAiVW5hc3NpZ25lZCI7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9VQ2hhcmFjdGVyTmFtZS5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9VQ2hhcmFjdGVyTmFtZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjFiNGQxNTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L1VDaGFyYWN0ZXJOYW1lLmphdmEKQEAgLTAsMCArMSwxODQgQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAKKyogICAgIC91c3IvY3ZzL2ljdTRqL2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L1VDaGFyYWN0ZXJOYW1lLmphdmEgJCAKKyogJERhdGU6IDIwMDEvMDMvMjMgMTk6NTE6MzggJCAKKyogJFJldmlzaW9uOiAxLjMgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KK3BhY2thZ2UgY29tLmlibS50ZXh0OworCisvKioKKyogSW50ZXJuYWwgY2xhc3MgdG8gbWFuYWdlIGNoYXJhY3RlciBuYW1lcy4KKyogPGEgaHJlZj1VQ2hhcmFjdGVyTmFtZURCLmh0bWw+VUNoYXJhY3Rlck5hbWVEQjwvYT4gcHJvdmlkZXMgdGhlIGRhdGEKKyogcmVxdWlyZWQgYW5kIFVDaGFyYWN0ZXJOYW1lIHBhcnNlcyBpdCBpbnRvIG1lYW5pbmdmdWwgcmVzdWx0cyBiZWZvcmUKKyogcmV0dXJuaW5nIHZhbHVlLgorKiBTaW5jZSBkYXRhIGluIDxhIGhyZWY9VUNoYXJhY3Rlck5hbWVEQi5odG1sPlVDaGFyYWN0ZXJOYW1lREI8L2E+IGlzIHN0b3JlZAorKiBpbiBhbiBhcnJheSBvZiBjaGFyLCBieSBkZWZhdWx0IGluZGV4ZXMgdXNlZCBpbiB0aGlzIGNsYXNzIGlzIHJlZmVyaW5nIHRvIAorKiBhIDIgYnl0ZSBjb3VudCwgdW5sZXNzIG90aGVyd2lzZSBzdGF0ZWQuIENhc2VzIHdoZXJlIHRoZSBpbmRleCBpcyByZWZlcmluZyAKKyogdG8gYSBieXRlIGNvdW50LCB0aGUgaW5kZXggaXMgaGFsdmVkIGFuZCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgaW5kZXggaXMgCisqIGV2ZW4gb3Igb2RkLCB0aGUgTVNCIG9yIExTQiBvZiB0aGUgcmVzdWx0IGNoYXIgYXQgdGhlIGhhbHZlZCBpbmRleCBpcyAKKyogcmV0dXJuZWQuIEZvciBpbmRleGVzIHRvIGFuIGFycmF5IG9mIGludCwgdGhlIGluZGV4IGlzIG11bHRpcGxpZWQgYnkgMiwgCisqIHJlc3VsdCBjaGFyIGF0IHRoZSBtdWx0aXBsaWVkIGluZGV4IGFuZCBpdHMgZm9sbG93aW5nIGNoYXIgaXMgcmV0dXJuZWQgYXMgYW4gCisqIGludC4KKyogPGEgaHJlZj1VQ2hhcmFjdGVyLmh0bWw+VUNoYXJhY3RlcjwvYT4gYWN0cyBhcyBhIHB1YmxpYyBmYWNhZGUgZm9yIHRoaXMgY2xhc3MKKyogTm90ZSA6IDAgLSAweDFGIGFyZSBjb250cm9sIGNoYXJhY3RlcnMgd2l0aG91dCBuYW1lcyBpbiBVbmljb2RlIDMuMAorKiBGb3IgaW5mb3JtYXRpb24gb24gcGFyc2luZyBvZiB0aGUgYmluYXJ5IGRhdGEgaW4gCisqIDxhIGhyZWY9VUNoYXJhY3Rlck5hbWVEQi5odG1sPlVDaGFyYWN0ZXJOYW1lREI8L2E+IGlzIGxvY2F0ZWQgYXQKKyogPGEgaHJlZj1vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9pY3U0amh0bWwvY29tL2libS9pY3UvdGV4dC9yZWFkbWUuaHRtbD4KKyogUmVhZE1lPC9hPgorKiBAYXV0aG9yIFN5biBXZWUgUXVlaworKiBAc2luY2Ugbm92MDcwMAorKi8KKworZmluYWwgY2xhc3MgVUNoYXJhY3Rlck5hbWUKK3sKKyAgLy8gcHJpdmF0ZSB2YXJpYWJsZSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIERhdGFiYXNlIHN0b3JpbmcgdGhlIHNldHMgb2YgY2hhcmFjdGVyIG5hbWUKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgVUNoYXJhY3Rlck5hbWVEQiBOQU1FX0RCXzsKKyAgCisgIC8vIGJsb2NrIHRvIGluaXRpYWxpc2UgbmFtZSBkYXRhYmFzZSBhbmQgdW5pY29kZSAxLjAgZGF0YSBpbmRpY2F0b3IKKyAgc3RhdGljCisgIHsKKyAgICB0cnkKKyAgICB7CisgICAgICBOQU1FX0RCXyA9IG5ldyBVQ2hhcmFjdGVyTmFtZURCKCk7CisgICAgfQorICAgIGNhdGNoIChFeGNlcHRpb24gZSkKKyAgICB7CisgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihlLmdldE1lc3NhZ2UoKSk7CisgICAgfQorICB9CisgIAorICAvLyBwcm90ZWN0ZWQgbWV0aG9kID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIAorICAvKioKKyAgKiBSZXRyaWV2ZSB0aGUgbmFtZSBvZiBhIFVuaWNvZGUgY29kZSBwb2ludC4KKyAgKiBEZXBlbmRpbmcgb24gPGNvZGU+Y2hvaWNlPC9jb2RlPiwgdGhlIGNoYXJhY3RlciBuYW1lIHdyaXR0ZW4gaW50byB0aGUgCisgICogYnVmZmVyIGlzIHRoZSAibW9kZXJuIiBuYW1lIG9yIHRoZSBuYW1lIHRoYXQgd2FzIGRlZmluZWQgaW4gVW5pY29kZSAKKyAgKiB2ZXJzaW9uIDEuMC4KKyAgKiBUaGUgbmFtZSBjb250YWlucyBvbmx5ICJpbnZhcmlhbnQiIGNoYXJhY3RlcnMKKyAgKiBsaWtlIEEtWiwgMC05LCBzcGFjZSwgYW5kICctJy4KKyAgKgorICAqIEBwYXJhbSBjaCB0aGUgY29kZSBwb2ludCBmb3Igd2hpY2ggdG8gZ2V0IHRoZSBuYW1lLgorICAqIEBwYXJhbSBjaG9pY2UgU2VsZWN0b3IgZm9yIHdoaWNoIG5hbWUgdG8gZ2V0LgorICAqIEByZXR1cm4gaWYgY29kZSBwb2ludCBpcyBhYm92ZSAweDFmZmYsIG51bGwgaXMgcmV0dXJuZWQKKyAgKi8KKyAgcHJvdGVjdGVkIHN0YXRpYyBTdHJpbmcgZ2V0TmFtZShpbnQgY2gsIGludCBjaG9pY2UpCisgIHsKKyAgICBpZiAoY2ggPCAwIHx8IGNoID4gMHgxZmZmZiB8fCAKKyAgICAgICAgY2hvaWNlID49IFVDaGFyYWN0ZXJOYW1lQ2hvaWNlLlVfQ0hBUl9OQU1FX0NIT0lDRV9DT1VOVCkgeworICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgICAgCisgICAgU3RyaW5nIHJlc3VsdCA9ICIiOworICAgIAorICAgIC8vIERvIG5vdCB3cml0ZSBhbGdvcml0aG1pYyBVbmljb2RlIDEuMCBuYW1lcyBiZWNhdXNlIFVuaWhhbiBuYW1lcyBhcmUgCisgICAgLy8gdGhlIHNhbWUgYXMgdGhlIG1vZGVybiBvbmVzLCBleHRlbnNpb24gQSB3YXMgb25seSBpbnRyb2R1Y2VkIHdpdGggCisgICAgLy8gVW5pY29kZSAzLjAsIGFuZCB0aGUgSGFuZ3VsIHN5bGxhYmxlIGJsb2NrIHdhcyBtb3ZlZCBhbmQgY2hhbmdlZCBhcm91bmQgCisgICAgLy8gVW5pY29kZSAxLjEuNS4KKyAgICBpZiAoY2hvaWNlID09IFVDaGFyYWN0ZXJOYW1lQ2hvaWNlLlVfVU5JQ09ERV9DSEFSX05BTUUpIHsKKyAgICAgIC8vIHRyeSBnZXR0aW5nIGFsZ29yaXRobWljIG5hbWUgZmlyc3QKKyAgICAgIHJlc3VsdCA9IGdldEFsZ05hbWUoY2gpOworICAgIH0KKyAgICAKKyAgICAvLyBnZXR0aW5nIG5vcm1hbCBjaGFyYWN0ZXIgbmFtZQorICAgIGlmIChyZXN1bHQgPT0gbnVsbCB8fCByZXN1bHQubGVuZ3RoKCkgPT0gMCkgeworICAgICAgcmVzdWx0ID0gTkFNRV9EQl8uZ2V0R3JvdXBOYW1lKGNoLCBjaG9pY2UpOworICAgIH0KKyAgICAgIAorICAgIHJldHVybiByZXN1bHQ7CisgIH0KKyAgCisgIC8qKgorICAqIEZpbmQgYSBjaGFyYWN0ZXIgYnkgaXRzIG5hbWUgYW5kIHJldHVybiBpdHMgY29kZSBwb2ludCB2YWx1ZQorICAqIEBwYXJhbSBjaGFyYWN0ZXIgbmFtZQorICAqIEBwYXJhbSBjaG9pY2Ugc2VsZWN0b3IgdG8gaW5kaWNhdGUgaWYgYXJndW1lbnQgbmFtZSBpcyBhIFVuaWNvZGUgMS4wIAorICAqICAgICAgICBvciB0aGUgbW9zdCBjdXJyZW50IHZlcnNpb24gCisgICogQHJldHVybiBjb2RlIHBvaW50CisgICovCisgIHByb3RlY3RlZCBzdGF0aWMgaW50IGdldENoYXJGcm9tTmFtZShpbnQgY2hvaWNlLCBTdHJpbmcgbmFtZSkKKyAgeworICAgIC8vIGNoZWNrcyBmb3IgaWxsZWdhbCBhcmd1bWVudHMKKyAgICBpZiAoY2hvaWNlID49IFVDaGFyYWN0ZXJOYW1lQ2hvaWNlLlVfQ0hBUl9OQU1FX0NIT0lDRV9DT1VOVCB8fCAKKyAgICAgICAgbmFtZSA9PSBudWxsIHx8IG5hbWUubGVuZ3RoKCkgPT0gMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgCisgICAgLy8gdHJ5IGFsZ29yaXRobWljIG5hbWVzIGZpcnN0LCBpZiBmYWlscyB0aGVuIHRyeSBncm91cCBuYW1lcworICAgIGludCByZXN1bHQgPSBnZXRBbGdvcml0aG1DaGFyKGNob2ljZSwgbmFtZSk7CisgICAgaWYgKHJlc3VsdCA+PSAwKSB7CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICByZXR1cm4gZ2V0R3JvdXBDaGFyKG5hbWUsIGNob2ljZSk7CisgIH0KKyAgCisgIC8vIHByaXZhdGUgbWV0aG9kID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAKKyAgLyoqCisgICogR2V0cyB0aGUgYWxnb3JpdGhtaWMgbmFtZSBmb3IgdGhlIGFyZ3VtZW50IGNoYXJhY3RlcgorICAqIEBwYXJhbSBjaCBjaGFyYWN0ZXIgdG8gZGV0ZXJtaW5lIG5hbWUgZm9yCisgICogQHJldHVybiB0aGUgYWxnb3JpdGhtaWMgbmFtZSBvciBudWxsIGlmIG5vdCBmb3VuZAorICAqLworICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgZ2V0QWxnTmFtZShpbnQgY2gpIAorICB7CisgICAgLy8gaW5kZXggaW4gdGVybXMgaW50ZWdlciBpbmRleAorICAgIFN0cmluZ0J1ZmZlciBzID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgIAorICAgIGludCBpbmRleCA9IE5BTUVfREJfLmdldEFsZ29yaXRobUluZGV4KGNoKTsKKyAgICBpZiAoaW5kZXggPj0gMCkgeworICAgICAgTkFNRV9EQl8uYXBwZW5kQWxnb3JpdGhtTmFtZShpbmRleCwgY2gsIHMpOworICAgICAgcmV0dXJuIHMudG9TdHJpbmcoKTsKKyAgICB9CisgICAgcmV0dXJuIG51bGw7CisgIH0KKyAgCisgIC8qKgorICAqIEdldHMgdGhlIGNoYXJhY3RlciBmb3IgdGhlIGFyZ3VtZW50IGFsZ29yaXRobWljIG5hbWUKKyAgKiBAcGFyYW0gY2hvaWNlIG9mIGVpdGhlciAxLjAgb3IgdGhlIG1vc3QgY3VycmVudCB1bmljb2RlIG5hbWUKKyAgKiBAcmV0dXJuIHRoZSBhbGdvcml0aG1pYyBjaGFyIG9yIC0xIG90aGVyd2lzZS4KKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgaW50IGdldEFsZ29yaXRobUNoYXIoaW50IGNob2ljZSwgU3RyaW5nIG5hbWUpIAorICB7CisgICAgLy8gMS4wIGhhcyBubyBhbGdvcml0aG1pYyBuYW1lcworICAgIGlmIChjaG9pY2UgIT0gVUNoYXJhY3Rlck5hbWVDaG9pY2UuVV9VTklDT0RFX0NIQVJfTkFNRSkgeworICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpbnQgcmVzdWx0OworICAgIGZvciAoaW50IGNvdW50ID0gTkFNRV9EQl8uY291bnRBbGdvcml0aG0oKSAtIDE7IGNvdW50ID49IDA7IGNvdW50IC0tKSB7CisgICAgICByZXN1bHQgPSBOQU1FX0RCXy5nZXRBbGdvcml0aG1DaGFyKGNvdW50LCBuYW1lKTsgCisgICAgICBpZiAocmVzdWx0ID49IDApIHsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIC0xOworICB9CisgIAorICAvKioKKyAgKiBHZXR0aW5nIHRoZSBjaGFyYWN0ZXIgd2l0aCB0aGUgdG9rZW5pemVkIGFyZ3VtZW50IG5hbWUKKyAgKiBAcGFyYW0gbmFtZSBvZiB0aGUgY2hhcmFjdGVyCisgICogQHJldHVybiBjaGFyYWN0ZXIgd2l0aCB0aGUgdG9rZW5pemVkIGFyZ3VtZW50IG5hbWUgb3IgLTEgaWYgY2hhcmFjdGVyIGlzCisgICogICAgICAgICBub3QgZm91bmQKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgaW50IGdldEdyb3VwQ2hhcihTdHJpbmcgbmFtZSwgaW50IGNob2ljZSkgCisgIHsKKyAgICBpbnQgZ3JvdXBjb3VudCA9IE5BTUVfREJfLmNvdW50R3JvdXAoKTsKKyAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICAKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGdyb3VwY291bnQ7IGkgKyspIHsKKyAgICAgIHJlc3VsdCA9IE5BTUVfREJfLmdldEdyb3VwQ2hhcihpLCBuYW1lLCBjaG9pY2UpOworICAgICAgaWYgKHJlc3VsdCAhPSAtMSkgeworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gLTE7CisgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvVUNoYXJhY3Rlck5hbWVDaG9pY2UuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvVUNoYXJhY3Rlck5hbWVDaG9pY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lMjRhYjRkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9VQ2hhcmFjdGVyTmFtZUNob2ljZS5qYXZhCkBAIC0wLDAgKzEsMzQgQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAKKyogICAgIC91c3IvY3ZzL2ljdTRqL2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L1VDaGFyYWN0ZXJOYW1lQ2hvaWNlRW51bS5qYXZhICQgCisqICREYXRlOiAyMDAxLzAzLzIzIDE5OjUxOjM4ICQgCisqICRSZXZpc2lvbjogMS4yICQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS50ZXh0OworCisvKioKKyogSW50ZXJuYWwgY2xhc3MgY29udGFpbmluZyBzZWxlY3RvciBjb25zdGFudHMgZm9yIHRoZSB1bmljb2RlIGNoYXJhY3RlciBuYW1lcy4KKyogQ29uc3RhbnRzIHJlcHJlc2VudGluZyB0aGUgIm1vZGVybiIgbmFtZSBvZiBhIFVuaWNvZGUgY2hhcmFjdGVyIG9yIHRoZSBuYW1lIAorKiB0aGF0IHdhcyBkZWZpbmVkIGluIFVuaWNvZGUgdmVyc2lvbiAxLjAsIGJlZm9yZSB0aGUgVW5pY29kZSBzdGFuZGFyZCAKKyogbWVyZ2VkIHdpdGggSVNPLTEwNjQ2LgorKiBBcmd1bWVudHMgZm9yIDxhIGhyZWY9VUNoYXJhY3Rlck5hbWUuaHRtbD5VQ2hhcmFjdGVyTmFtZTwvYT4KKyogQGF1dGhvciBTeW4gV2VlIFF1ZWsKKyogQHNpbmNlIG9jdDA2MDAKKyovCisKK2ludGVyZmFjZSBVQ2hhcmFjdGVyTmFtZUNob2ljZQoreworICAvLyBwdWJsaWMgdmFyaWFibGVzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAKKyAgc3RhdGljIGZpbmFsIGludCBVX1VOSUNPREVfQ0hBUl9OQU1FID0gMDsKKyAgc3RhdGljIGZpbmFsIGludCBVX1VOSUNPREVfMTBfQ0hBUl9OQU1FID0gMTsKKyAgc3RhdGljIGZpbmFsIGludCBVX0NIQVJfTkFNRV9DSE9JQ0VfQ09VTlQgPSAyOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9VQ2hhcmFjdGVyTmFtZURCLmphdmEgYi9zcmMvY29tL2libS90ZXh0L1VDaGFyYWN0ZXJOYW1lREIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45N2RmZjM1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9VQ2hhcmFjdGVyTmFtZURCLmphdmEKQEAgLTAsMCArMSw4ODEgQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L0F0dGljL1VDaGFyYWN0ZXJOYW1lREIuamF2YSx2ICQgCisqICREYXRlOiAyMDAxLzAzLzIzIDE5OjUxOjM4ICQgCisqICRSZXZpc2lvbjogMS4zICQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS50ZXh0OworCitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkRhdGFJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworLyoqCisqIEludGVybmFsIGNsYXNzIHVzZWQgZm9yIFVuaWNvZGUgY2hhcmFjdGVyIG5hbWUgZGF0YWJhc2UuCisqIERhdGFiYXNlIGNsYXNzZXMgc3RvcmUgYmluYXJ5IGRhdGEgcmVhZCBmcm9tIHVwcm9wcy5kYXQgYW5kIHVuYW1lcyBmb3IgdXNlLiAKKyogSXQgZG9lcyBub3QgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBwYXJzZSB0aGUgZGF0YSBpbnRvIG1vcmUgaGlnaC1sZXZlbCAKKyogaW5mb3JtYXRpb24uIEl0IG9ubHkgcmV0dXJucyBieXRlcyBvZiBpbmZvcm1hdGlvbiB3aGVuIHJlcXVpcmVkLiAKKyogRHVlIHRvIHRoZSBmb3JtIG1vc3QgY29tbW9ubHkgdXNlZCBmb3IgcmV0cmlldmFsLCBhcnJheSBvZiBjaGFyIGlzIHVzZWQKKyogdG8gc3RvcmUgdGhlIGJpbmFyeSBkYXRhCisqIFVDaGFyYWN0ZXJOYW1lREIgYWxzbyBjb250YWlucyBpbmRleGVzIHRvIHNpZ25pZmljYW50IHBvaW50cyBpbiB0aGUgYmluYXJ5CisqIGRhdGEuCisqIFJlc3BvbnNpYmlsaXR5IGZvciBtb2xkaW5nIHRoZSBiaW5hcnkgZGF0YSBpbnRvIG1vcmUgbWVhbmluZyBmb3JtIGxpZXMgb24gCisqIDxhIGhyZWY9VUNoYXJhY3RlclBwdHkuaHRtbD5VQ2hhcmFjdGVyUHB0eTwvYT4gYW5kIAorKiA8YSBocmVmPVVDaGFyYWN0ZXJOYW1lLmh0bWw+VUNoYXJhY3Rlck5hbWU8L2E+LgorKiBEYXRhIHBvcHVsYXRlZCBieSA8YSBocmVmPVVHZW5OYW1lUmVhZGVyLmh0bWw+VUdlbk5hbWVSZWFkZXI8L2E+CisqIEBhdXRob3IgU3luIFdlZSBRdWVrCisqIEBzaW5jZSBvY3QyNzAwCisqIEBzZWUgY29tLmlibS50ZXh0LlVHZW5SZWFkZXIKKyovCisKK2ZpbmFsIGNsYXNzIFVDaGFyYWN0ZXJOYW1lREIgZXh0ZW5kcyBVQ2hhcmFjdGVyREIKK3sKKyAgLy8gcHJpdmF0ZSB2YXJpYWJsZSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIERhdGEgdXNlZCBpbiB1bmFtZXMuZGF0CisgICovCisgIHByaXZhdGUgY2hhciBtX3Rva2VudGFibGVfW107CisgIHByaXZhdGUgYnl0ZSBtX3Rva2Vuc3RyaW5nX1tdOworICBwcml2YXRlIGNoYXIgbV9ncm91cGluZm9fW107CisgIHByaXZhdGUgYnl0ZSBtX2dyb3Vwc3RyaW5nX1tdOworICBwcml2YXRlIEFsZ29yaXRobU5hbWUgbV9hbGdvcml0aG1fW107CisgIAorICAvKioKKyAgKiBOdW1iZXIgb2YgZ3JvdXAgc2V0cworICAqLworICBwcml2YXRlIGludCBtX2dyb3VwY291bnRfID0gMDsKKyAgcHJpdmF0ZSBpbnQgbV9ncm91cHNpemVfID0gMDsKKyAgCisgIC8qKgorICAqIERlZmF1bHQgbmFtZSBvZiB0aGUgbmFtZSBkYXRhZmlsZQorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTkFNRV9GSUxFX05BTUVfID0gInVuYW1lcy5kYXQiOworICAKKyAgLyoqCisgICogRGVmYXVsdCBidWZmZXIgc2l6ZSBvZiBkYXRhZmlsZQorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTkFNRV9CVUZGRVJfU0laRV8gPSAxMDAwMDA7CisgIAorICAvKioKKyAgKiBTaGlmdCBjb3VudCB0byByZXRyaWV2ZSBncm91cCBpbmZvcm1hdGlvbgorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1JPVVBfU0hJRlRfID0gNTsKKyAgCisgIC8qKgorICAqIE51bWJlciBvZiBsaW5lcyBwZXIgZ3JvdXAKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExJTkVTX1BFUl9HUk9VUF8gPSAxIDw8IEdST1VQX1NISUZUXzsKKyAgCisgIC8qKgorICAqIE1hc2sgdG8gcmV0cmlldmUgdGhlIG9mZnNldCBmb3IgYSBwYXJ0aWN1bGFyIGNoYXJhY3RlciB3aXRoaW4gYSBncm91cAorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1JPVVBfTUFTS18gPSBMSU5FU19QRVJfR1JPVVBfIC0gMTsKKyAgCisgIC8qKgorICAqIFBvc2l0aW9uIG9mIG9mZnNldGhpZ2ggaW4gZ3JvdXAgaW5mb3JtYXRpb24gYXJyYXkKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE9GRlNFVF9ISUdIX09GRlNFVF8gPSAxOworICAKKyAgLyoqCisgICogUG9zaXRpb24gb2Ygb2Zmc2V0bG93IGluIGdyb3VwIGluZm9ybWF0aW9uIGFycmF5CisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBPRkZTRVRfTE9XX09GRlNFVF8gPSAyOworICAKKyAgLyoqCisgICogSW5kaWNhdG9yIG9mIGlmIFVuaWNvZGUgMS4wIG5hbWVzIGFyZSBhdmFpbGFibGUKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBVTklDT0RFXzFfOworICAKKyAgLyoqCisgICogRG91YmxlIG5pYmJsZSBpbmRpY2F0b3IsIGFueSBuaWJibGUgPiB0aGlzIG51bWJlciBoYXMgdG8gYmUgY29tYmluZWQKKyAgKiB3aXRoIGl0cyBmb2xsb3dpbmcgbmliYmxlCisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTSU5HTEVfTklCQkxFX01BWF8gPSAxMTsKKyAgCisgIC8vIGNvbnN0cnVjdG9yID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIHByb3RlY3RlZCBjb25zdHJ1Y3RvcgorICAqIEBleGNlcHRpb24gdGhyb3duIHdoZW4gZGF0YSByZWFkaW5nIGZhaWxzIG9yIHdoZW4gZGF0YSBoYXMgYmVlbiBjb3JydXB0ZWQKKyAgKi8KKyAgcHJvdGVjdGVkIFVDaGFyYWN0ZXJOYW1lREIoKSB0aHJvd3MgSU9FeGNlcHRpb24KKyAgeworICAgIFVHZW5OYW1lUmVhZGVyIHJlYWRlciA9IG5ldyBVR2VuTmFtZVJlYWRlcigpOworICAgIElucHV0U3RyZWFtIGkgPSBnZXRDbGFzcygpLmdldFJlc291cmNlQXNTdHJlYW0oTkFNRV9GSUxFX05BTUVfKTsKKyAgICBCdWZmZXJlZElucHV0U3RyZWFtIGIgPSBuZXcgQnVmZmVyZWRJbnB1dFN0cmVhbShpLCBOQU1FX0JVRkZFUl9TSVpFXyk7CisgICAgRGF0YUlucHV0U3RyZWFtIGQgPSBuZXcgRGF0YUlucHV0U3RyZWFtKGIpOworICAgIHJlYWRlci5yZWFkKGQsIHRoaXMpOworICAgIGQuY2xvc2UoKTsKKyAgICBVTklDT0RFXzFfICA9ICgnOycgPj0gbV90b2tlbnRhYmxlXy5sZW5ndGgpIHx8IAorICAgICAgICAgICAgICAgICAgKG1fdG9rZW50YWJsZV9bKGludCknOyddID09IDB4RkZGRik7CisgIH0KKyAgCisgIC8vIHB1YmxpYyBtZXRob2QgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIHRvU3RyaW5nIG1ldGhvZCBmb3IgcHJpbnRpbmcKKyAgKi8KKyAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCisgIHsKKyAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigibmFtZXMgY29udGVudCBcbiIpOworICAgIC8qcmVzdWx0LmFwcGVuZChzdXBlci50b1N0cmluZygpKTsKKyAgICByZXN1bHQuYXBwZW5kKCdcbicpOworICAgIHJlc3VsdC5hcHBlbmQoInRva2VuIHN0cmluZyBvZmZzZXQgIik7CisgICAgcmVzdWx0LmFwcGVuZChtX3Rva2Vuc3RyaW5nb2Zmc2V0Xyk7CisgICAgcmVzdWx0LmFwcGVuZCgiXG4iKTsKKyAgICByZXN1bHQuYXBwZW5kKCJncm91cCBvZmZzZXQgIik7CisgICAgcmVzdWx0LmFwcGVuZChtX2dyb3Vwc29mZnNldF8pOworICAgIHJlc3VsdC5hcHBlbmQoIlxuIik7CisgICAgcmVzdWx0LmFwcGVuZCgiZ3JvdXAgc3RyaW5nIG9mZnNldCAiKTsKKyAgICByZXN1bHQuYXBwZW5kKG1fZ3JvdXBzdHJpbmdvZmZzZXRfKTsKKyAgICByZXN1bHQuYXBwZW5kKCJcbiIpOworICAgIHJlc3VsdC5hcHBlbmQoImFsZyBuYW1lcyBvZmZzZXQgIik7CisgICAgcmVzdWx0LmFwcGVuZChtX2FsZ25hbWVzb2Zmc2V0Xyk7CisgICAgcmVzdWx0LmFwcGVuZCgiXG4iKTsKKyAgICAqLworICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgfQorCisgIC8vIHByb3RlY3RlZCBtZXRob2RzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICAvKioKKyAgKiBTZXRzIHRoZSB0b2tlbiBkYXRhCisgICogQHBhcmFtIHRva2VuIGFycmF5IG9mIHRva2VucworICAqIEBwYXJhbSB0b2tlbnN0cmluZyBhcnJheSBvZiBzdHJpbmcgdmFsdWVzIG9mIHRoZSB0b2tlbnMKKyAgKiBAcmV0dXJuIGZhbHNlIGlmIHRoZXJlIGlzIGEgZGF0YSBlcnJvcgorICAqLworICBwcm90ZWN0ZWQgYm9vbGVhbiBzZXRUb2tlbihjaGFyIHRva2VuW10sIGJ5dGUgdG9rZW5zdHJpbmdbXSkKKyAgeworICAgIGlmICh0b2tlbiAhPSBudWxsICYmIHRva2Vuc3RyaW5nICE9IG51bGwgJiYgdG9rZW4ubGVuZ3RoID4gMCAmJgorICAgICAgICB0b2tlbnN0cmluZy5sZW5ndGggPiAwKSB7CisgICAgICBtX3Rva2VudGFibGVfID0gdG9rZW47CisgICAgICBtX3Rva2Vuc3RyaW5nXyA9IHRva2Vuc3RyaW5nOworICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsgCisgIH0KKyAgIAorICAvKioKKyAgKiBTZXRzIHRoZSBudW1iZXIgb2YgZ3JvdXAgYW5kIHNpemUgb2YgZWFjaCBncm91cCBpbiBudW1iZXIgb2YgY2hhcgorICAqIEBwYXJhbSBjb3VudCBudW1iZXIgb2YgZ3JvdXBzCisgICogQHBhcmFtIHNpemUgc2l6ZSBvZiBncm91cCBpbiBjaGFyCisgICogQHJldHVybiB0cnVlIGlmIGdyb3VwIHNpemUgaXMgc2V0IGNvcnJlY3RseQorICAqLworICBwcm90ZWN0ZWQgYm9vbGVhbiBzZXRHcm91cENvdW50U2l6ZShpbnQgY291bnQsIGludCBzaXplKQorICB7CisgICAgaWYgKGNvdW50IDw9IDAgfHwgc2l6ZSA8PSAwKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIG1fZ3JvdXBjb3VudF8gPSBjb3VudDsKKyAgICBtX2dyb3Vwc2l6ZV8gPSBzaXplOworICAgIHJldHVybiB0cnVlOworICB9CisgIAorICAvKioKKyAgKiBTZXRzIHRoZSBncm91cCBuYW1lIGRhdGEKKyAgKiBAcGFyYW0gZ3JvdXAgaW5kZXggaW5mb3JtYXRpb24gYXJyYXkKKyAgKiBAcGFyYW0gZ3JvdXBzdHJpbmcgbmFtZSBpbmZvcm1hdGlvbiBhcnJheQorICAqIEByZXR1cm4gZmFsc2UgaWYgdGhlcmUgaXMgYSBkYXRhIGVycm9yCisgICovCisgIHByb3RlY3RlZCBib29sZWFuIHNldEdyb3VwKGNoYXIgZ3JvdXBbXSwgYnl0ZSBncm91cHN0cmluZ1tdKQorICB7CisgICAgaWYgKGdyb3VwICE9IG51bGwgJiYgZ3JvdXBzdHJpbmcgIT0gbnVsbCAmJiBncm91cC5sZW5ndGggPiAwICYmCisgICAgICAgIGdyb3Vwc3RyaW5nLmxlbmd0aCA+IDApIHsKKyAgICAgIG1fZ3JvdXBpbmZvXyA9IGdyb3VwOworICAgICAgbV9ncm91cHN0cmluZ18gPSBncm91cHN0cmluZzsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7IAorICB9CisgIAorICAvKioKKyAgKiBCaW5hcnkgc2VhcmNoIGZvciB0aGUgZ3JvdXAgc3RyaW5ncyBzZXQgdGhhdCBjb250YWlucyB0aGUgYXJndW1lbnQgVW5pY29kZSAKKyAgKiBjb2RlIHBvaW50J3MgbW9zdCBzaWduaWZpY2FudCBiaXRzLgorICAqIFRoZSByZXR1cm4gdmFsdWUgaXMgYWx3YXlzIGEgdmFsaWQgZ3JvdXAgc3RyaW5nIHNldCB0aGF0IGNvbnRhaW4gbXNiLgorICAqIElmIGdyb3VwIHN0cmluZyBzZXQgaXMgbm90IGZvdW5kLCAtMSBpcyByZXR1cm5lZAorICAqIEBwYXJhbSBjaCB0aGUgY29kZSBwb2ludCB0byBsb29rIGZvcgorICAqIEByZXR1cm4gZ3JvdXAgc3RyaW5nIHNldCBpbmRleCBpbiBkYXRhdGFibGUgb3RoZXJ3aXNlIC0xIGlzIHJldHVybmVkIGlmIAorICAqICAgICAgICAgZ3JvdXAgc3RyaW5nIHNldCBpcyBub3QgZm91bmQKKyAgKi8KKyAgcHJvdGVjdGVkIGludCBnZXRHcm91cFN0cmluZ0luZGV4KGludCBjaCkKKyAgeworICAgIC8vIGdldHMgdGhlIG1zYgorICAgIGludCBtc2IgPSBjaCA+PiBHUk9VUF9TSElGVF8sCisgICAgICAgIGVuZCA9IG1fZ3JvdXBjb3VudF8sCisgICAgICAgIHN0YXJ0LAorICAgICAgICBnaW5kZXggPSAwOworICAgICAgICAKKyAgICAvLyBiaW5hcnkgc2VhcmNoIGZvciB0aGUgZ3JvdXAgb2YgbmFtZXMgdGhhdCBjb250YWlucyB0aGUgb25lIGZvciBjb2RlCisgICAgZm9yIChzdGFydCA9IDA7IHN0YXJ0IDwgZW5kIC0gMTspIHsKKyAgICAgIGdpbmRleCA9IChzdGFydCArIGVuZCkgPj4gMTsKKyAgICAgIGlmIChtc2IgPCBnZXRHcm91cE1TQihnaW5kZXgpKSB7CisgICAgICAgIGVuZCA9IGdpbmRleDsKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBzdGFydCA9IGdpbmRleDsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvLyByZXR1cm4gdGhpcyBpZiBpdCBpcyBhbiBleGFjdCBtYXRjaAorICAgIGlmIChtc2IgPT0gZ2V0R3JvdXBNU0Ioc3RhcnQpKSB7CisgICAgICBzdGFydCA9IHN0YXJ0ICogbV9ncm91cHNpemVfOworICAgICAgcmV0dXJuIFVDaGFyYWN0ZXJVdGlsLnRvSW50KG1fZ3JvdXBpbmZvX1tzdGFydCArIE9GRlNFVF9ISUdIX09GRlNFVF9dLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2dyb3VwaW5mb19bc3RhcnQgKyBPRkZTRVRfTE9XX09GRlNFVF9dKTsKKyAgICB9CisgICAgcmV0dXJuIC0xOworICB9CisgIAorICAvKioKKyAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhlIGdyb3VwIGluZm9ybWF0aW9uIG9iamVjdAorICAqIEByZXR1cm4gbnVtYmVyIG9mIGdyb3VwIGluZm9ybWF0aW9uIG9iamVjdAorICAqLworICBwcm90ZWN0ZWQgaW50IGNvdW50R3JvdXAoKQorICB7CisgICAgcmV0dXJuIG1fZ3JvdXBjb3VudF87CisgIH0KKyAgCisgIC8qKgorICAqIEdldHMgdGhlIGdyb3VwIG5hbWUgb2YgdGhlIGNoYXJhY3RlcgorICAqIEBwYXJhbSBjaCBjaGFyYWN0ZXIgdG8gZ2V0IHRoZSBncm91cCBuYW1lIAorICAqIEBwYXJhbSBjaG9pY2UgbmFtZSBjaG9pY2Ugc2VsZWN0b3IgdG8gY2hvb3NlIGEgdW5pY29kZSAxLjAgb3IgbmV3ZXIgbmFtZQorICAqLworICBwcm90ZWN0ZWQgU3RyaW5nIGdldEdyb3VwTmFtZShpbnQgY2gsIGludCBjaG9pY2UpIAorICB7CisgICAgaWYgKGNob2ljZSAhPSBVQ2hhcmFjdGVyTmFtZUNob2ljZS5VX1VOSUNPREVfQ0hBUl9OQU1FICYmICFVTklDT0RFXzFfKSB7CisgICAgICAvLyBpZiBub3QgbW9kZXJuIG5hbWUgcmVxdWVzdGVkIGFuZCBzZW1pY29sb24gYnl0ZSB2YWx1ZSBpcyBhIGNoYXJhY3RlciwgCisgICAgICAvLyBub3QgYSB0b2tlbiBudW1iZXIsIG90aGVyd2lzZSBzaW5jZSBvbmx5IG1vZGVybiBuYW1lcyBhcmUgc3RvcmVkIGluIAorICAgICAgLy8gdW5hbWVzLmRhdCBhbmQgdGhlcmUgaXMgbm8gc3VjaCByZXF1ZXN0ZWQgVW5pY29kZSAxLjAgbmFtZSBoZXJlCisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgICAgIAorICAgIC8vIGdldHMgdGhlIG1zYgorICAgIGludCBtc2IgPSBjaCA+PiBHUk9VUF9TSElGVF8sCisgICAgICAgIGVuZCA9IG1fZ3JvdXBjb3VudF8sCisgICAgICAgIHN0YXJ0LAorICAgICAgICBnaW5kZXggPSAwOworICAgIAorICAgIC8vIGJpbmFyeSBzZWFyY2ggZm9yIHRoZSBncm91cCBvZiBuYW1lcyB0aGF0IGNvbnRhaW5zIHRoZSBvbmUgZm9yIGNvZGUKKyAgICBmb3IgKHN0YXJ0ID0gMDsgc3RhcnQgPCBlbmQgLSAxOykgeworICAgICAgZ2luZGV4ID0gKHN0YXJ0ICsgZW5kKSA+PiAxOworICAgICAgaWYgKG1zYiA8IGdldEdyb3VwTVNCKGdpbmRleCkpIHsKKyAgICAgICAgZW5kID0gZ2luZGV4OworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIHN0YXJ0ID0gZ2luZGV4OworICAgICAgfQorICAgIH0KKworICAgIC8vIHJldHVybiB0aGlzIGlmIGl0IGlzIGFuIGV4YWN0IG1hdGNoCisgICAgaWYgKG1zYiA9PSBnZXRHcm91cE1TQihzdGFydCkpIHsKKyAgICAgIGNoYXIgb2Zmc2V0c1tdID0gbmV3IGNoYXJbTElORVNfUEVSX0dST1VQXyArIDFdOworICAgICAgY2hhciBsZW5ndGhzW10gPSBuZXcgY2hhcltMSU5FU19QRVJfR1JPVVBfICsgMV07CisgICAgICAgICAgICAgICAgCisgICAgICBpbnQgaW5kZXggPSBnZXRHcm91cExlbmd0aHMoc3RhcnQsIG9mZnNldHMsIGxlbmd0aHMpOworICAgICAgaW50IG9mZnNldCA9IGNoICYgR1JPVVBfTUFTS187CisgICAgICByZXR1cm4gZ2V0R3JvdXBOYW1lKGluZGV4ICsgb2Zmc2V0c1tvZmZzZXRdLCBsZW5ndGhzW29mZnNldF0sIGNob2ljZSk7CisgICAgfQorICAgIAorICAgIHJldHVybiBudWxsOworICB9CisgIAorICAvKioKKyAgKiBHZXR0aW5nIHRoZSBjaGFyYWN0ZXIgd2l0aCB0aGUgdG9rZW5pemVkIGFyZ3VtZW50IG5hbWUKKyAgKiBAcGFyYW0gaW5kZXggb2YgdGhlIGdyb3VwIHRvIGNoZWNrCisgICogQHBhcmFtIG5hbWUgb2YgdGhlIGNoYXJhY3RlcgorICAqIEBwYXJhbSBjaG9pY2Ugb2YgVW5pY29kZSB2ZXJzaW9uIHVzZWQKKyAgKiBAcmV0dXJuIGNoYXJhY3RlciB3aXRoIHRoZSB0b2tlbml6ZWQgYXJndW1lbnQgbmFtZSBvciAtMSBpZiBjaGFyYWN0ZXIgaXMKKyAgKiAgICAgICAgIG5vdCBmb3VuZAorICAqLworICBwcm90ZWN0ZWQgaW50IGdldEdyb3VwQ2hhcihpbnQgaW5kZXgsIFN0cmluZyBuYW1lLCBpbnQgY2hvaWNlKSAKKyAgeworICAgIGlmIChjaG9pY2UgIT0gVUNoYXJhY3Rlck5hbWVDaG9pY2UuVV9VTklDT0RFX0NIQVJfTkFNRSAmJiAKKyAgICAgICAgIVVOSUNPREVfMV8pIHsKKyAgICAgIC8vIHNlbWljb2xvbiBieXRlIHZhbHVlIGlzIGEgdG9rZW4gbnVtYmVyICwgdGhlcmVmb3JlIG9ubHkgbW9kZXJuIAorICAgICAgLy8gbmFtZXMgYXJlIHN0b3JlZCBpbiB1bmFtZXMuZGF0IGFuZCB0aGVyZSBpcyBubyBzdWNoIHJlcXVlc3RlZCAKKyAgICAgIC8vIFVuaWNvZGUgMS4wIG5hbWUgaGVyZQorICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAgICAgICAgIAorICAgIC8vIHBvcHVsYXRpbmcgdGhlIGRhdGEgc2V0IG9mIGdyb3VwdGFibGUKKyAgICBjaGFyIG9mZnNldHNbXSA9IG5ldyBjaGFyW0xJTkVTX1BFUl9HUk9VUF8gKyAxXTsKKyAgICBjaGFyIGxlbmd0aHNbXSA9IG5ldyBjaGFyW0xJTkVTX1BFUl9HUk9VUF8gKyAxXTsKKyAgICBpbnQgc3RhcnRncHN0cmluZGV4ID0gZ2V0R3JvdXBMZW5ndGhzKGluZGV4LCBvZmZzZXRzLCBsZW5ndGhzKTsKKyAgICAgIAorICAgIC8vIHNoaWZ0IG91dCB0byBmdW5jdGlvbgorICAgIGludCByZXN1bHQgPSBnZXRHcm91cENoYXIoc3RhcnRncHN0cmluZGV4LCBsZW5ndGhzLCBuYW1lLCBjaG9pY2UpOworICAgIGlmIChyZXN1bHQgIT0gLTEpIHsKKyAgICAgIHJldHVybiAoZ2V0R3JvdXBNU0IoaW5kZXgpIDw8IEdST1VQX1NISUZUXykgfCByZXN1bHQ7CisgICAgfQorICAgIHJldHVybiAtMTsKKyAgfQorICAgCisgIC8qKgorICAqIFNldCB0aGUgYWxnb3JpdGhtIG5hbWUgaW5mb3JtYXRpb24gYXJyYXkKKyAgKiBAcGFyYW0gYWxnb3JpdGhtIGluZm9ybWF0aW9uIGFycmF5CisgICogQHJldHVybiB0cnVlIGlmIHRoZSBncm91cCBzdHJpbmcgb2Zmc2V0IGhhcyBiZWVuIHNldCBjb3JyZWN0bHkKKyAgKi8KKyAgcHJvdGVjdGVkIGJvb2xlYW4gc2V0QWxnb3JpdGhtKEFsZ29yaXRobU5hbWUgYWxnW10pCisgIHsKKyAgICBpZiAoYWxnICE9IG51bGwgJiYgYWxnLmxlbmd0aCAhPSAwKSB7CisgICAgICBtX2FsZ29yaXRobV8gPSBhbGc7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIAorICAvKioKKyAgKiBHZXQgdGhlIG51bWJlciBvZiBhbGdvcml0aG0gbmFtZSBncm91cHMKKyAgKiBAcmV0dXJuIG51bWJlciBvZiBhbGdvcml0aG0gbmFtZSBncm91cHMKKyAgKi8KKyAgcHJvdGVjdGVkIGludCBjb3VudEFsZ29yaXRobSgpCisgIHsKKyAgICBpZiAobV9hbGdvcml0aG1fID09IG51bGwpIHsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gbV9hbGdvcml0aG1fLmxlbmd0aDsKKyAgfQorICAKKyAgLyoqCisgICogR2V0cyB0aGUgaW5kZXggb2YgdGhlIEFsZ29yaXRobSBvYmplY3QgdGhlIGFyZ3VtZW50IGNvZGUgcG9pbnQgbGllcworICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IAorICAqIEByZXR1cm4gaW5kZXggb2YgdGhlIEFsZ29yaXRobSBvYmplY3QgdGhlIGFyZ3VtZW50IGNvZGUgcG9pbnQgbGllcywgCisgICogICAgICAgICBvdGhlcndpc2UgLTEgaWYgY29kZSBwb2ludCBpcyBub3QgZm91bmQgaW4gQWxnb3JpdGhtIG9iamVjdHMKKyAgKi8KKyAgcHJvdGVjdGVkIGludCBnZXRBbGdvcml0aG1JbmRleChpbnQgY2gpCisgIHsKKyAgICBmb3IgKGludCBpbmRleCA9IG1fYWxnb3JpdGhtXy5sZW5ndGggLSAxOyBpbmRleCA+PSAwOyBpbmRleCAtLSkgeworICAgICAgaWYgKG1fYWxnb3JpdGhtX1tpbmRleF0uY29udGFpbnMoY2gpKSB7CisgICAgICAgIHJldHVybiBpbmRleDsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIC0xOworICB9CisgIAorICAvKioKKyAgKiBBcHBlbmRzIGFsZ29yaXRobSBuYW1lIG9mIGNvZGUgcG9pbnQgaW50byBTdHJpbmdCdWZmZXIuCisgICogTm90ZSB0aGlzIG1ldGhvZCBkb2VzIG5vdCBjaGVjayBmb3IgdmFsaWRpdHkgb2YgY29kZSBwb2ludCBpbiBBbGdvcml0aG0sCisgICogcmVzdWx0IGlzIHVuZGVmaW5lZCBpZiBjb2RlIHBvaW50IGRvZXMgbm90IGJlbG9uZyBpbiBBbGdvcml0aG0uCisgICogQHBhcmFtIGluZGV4IG9mIEFsZ29yaXRobSBvYmplY3QgaW4gYXJyYXkKKyAgKiBAcGFyYW0gY2ggY29kZSBwb2ludAorICAqIEBwYXJhbSBzdHIgU3RyaW5nQnVmZmVyIHRvIGFwcGVuZCB0bworICAqLworICBwcm90ZWN0ZWQgdm9pZCBhcHBlbmRBbGdvcml0aG1OYW1lKGludCBpbmRleCwgaW50IGNoLCBTdHJpbmdCdWZmZXIgc3RyKQorICB7CisgICAgbV9hbGdvcml0aG1fW2luZGV4XS5hcHBlbmROYW1lKGNoLCBzdHIpOworICB9CisgIAorICAvKioKKyAgKiBHZXQgYWxnb3JpdGhtIGNvZGUgcG9pbnQgZm9yIHRoZSBhcmd1bWVudCBuYW1lIGF0IGluZGV4LiBJZiBuYW1lIGlzIG5vdAorICAqIGZvdW5kIGluIGFsZ29yaXRobSwgLTEgaXMgcmV0dXJuZWQuCisgICogQHBhcmFtIGluZGV4IGFsZ29yaXRobSBpbmRleAorICAqIEBwYXJhbSBuYW1lIGNvZGUgcG9pbnQgbmFtZQorICAqIEBwYXJhbSBjb2RlIHBvaW50IGluIGFsZ29yaXRobSB0aGF0IG1hdGNoZXMgbmFtZSwgLTEgb3RoZXJ3aXNlCisgICovCisgIHByb3RlY3RlZCBpbnQgZ2V0QWxnb3JpdGhtQ2hhcihpbnQgaW5kZXgsIFN0cmluZyBuYW1lKQorICB7CisgICAgcmV0dXJuIG1fYWxnb3JpdGhtX1tpbmRleF0uZ2V0QWxnb3JpdGhtQ2hhcihuYW1lKTsKKyAgfQorICAKKyAgLy8gcHJpdmF0ZSBtZXRob2RzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIEdldHMgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0cyByZXByZXNlbnRhdGlvbiBpbiB0aGUgYXJndW1lbnQgZ3JvdXAKKyAgKiBAcGFyYW0gaW5kZXggdGhlIGluZGV4dGggZ3JvdXAgaW4gZGF0YXRhYmxlCisgICogQHJldHVybiBtb3N0IHNpZ25pZmljYW50IGJpdHMgcmVwcmVzZW50YXRpb24gb2YgZ3JvdXAKKyAgKi8KKyAgcHJpdmF0ZSBjaGFyIGdldEdyb3VwTVNCKGludCBpbmRleCkKKyAgeworICAgIHJldHVybiBtX2dyb3VwaW5mb19baW5kZXggKiBtX2dyb3Vwc2l6ZV9dOworICB9CisgIAorICAvKioKKyAgKiBSZWFkcyBhIGJsb2NrIG9mIGNvbXByZXNzZWQgbGVuZ3RocyBvZiAzMiBzdHJpbmdzIGFuZCBleHBhbmRzIHRoZW0gaW50byAKKyAgKiBvZmZzZXRzIGFuZCBsZW5ndGhzIGZvciBlYWNoIHN0cmluZy4gTGVuZ3RocyBhcmUgc3RvcmVkIHdpdGggYSAKKyAgKiB2YXJpYWJsZS13aWR0aCBlbmNvZGluZyBpbiBjb25zZWN1dGl2ZSBuaWJibGVzOgorICAqIElmIGEgbmliYmxlPDB4YywgdGhlbiBpdCBpcyB0aGUgbGVuZ3RoIGl0c2VsZiAoMCA9IGVtcHR5IHN0cmluZykuCisgICogSWYgYSBuaWJibGU+PTB4YywgdGhlbiBpdCBmb3JtcyBhIGxlbmd0aCB2YWx1ZSB3aXRoIHRoZSBmb2xsb3dpbmcgbmliYmxlLgorICAqIFRoZSBvZmZzZXRzIGFuZCBsZW5ndGhzIGFycmF5cyBtdXN0IGJlIGF0IGxlYXN0IDMzIChvbmUgbW9yZSkgbG9uZyBiZWNhdXNlCisgICogdGhlcmUgaXMgbm8gY2hlY2sgaGVyZSBhdCB0aGUgZW5kIGlmIHRoZSBsYXN0IG5pYmJsZSBpcyBzdGlsbCB1c2VkLgorICAqIEBwYXJhbSBpbmRleCBvZiBncm91cCBzdHJpbmcgb2JqZWN0IGluIGFycmF5CisgICogQHBhcmFtIG9mZnNldHMgYXJyYXkgdG8gc3RvcmUgdGhlIHZhbHVlIG9mIHRoZSBzdHJpbmcgb2Zmc2V0cworICAqIEBwYXJhbSBsZW5ndGhzIGFycmF5IHRvIHN0b3JlIHRoZSB2YWx1ZSBvZiB0aGUgc3RyaW5nIGxlbmd0aAorICAqIEByZXR1cm4gbmV4dCBpbmRleCBvZiB0aGUgZGF0YSBzdHJpbmcgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGxlbmd0aHMgCisgICogICAgICAgICBpbiB0ZXJtcyBvZiBieXRlIGFkZHJlc3MKKyAgKi8KKyAgcHJpdmF0ZSBpbnQgZ2V0R3JvdXBMZW5ndGhzKGludCBpbmRleCwgY2hhciBvZmZzZXRzW10sIGNoYXIgbGVuZ3Roc1tdKSAKKyAgeworICAgIGNoYXIgbGVuZ3RoID0gMHhmZmZmOworICAgIGJ5dGUgYiA9IDAsCisgICAgICAgICBuID0gMDsKKyAgICBpbnQgc2hpZnQ7CisgICAgaW5kZXggPSBpbmRleCAqIG1fZ3JvdXBzaXplXzsgLy8gYnl0ZSBjb3VudCBvZmZzZXRzIG9mIGdyb3VwIHN0cmluZ3MKKyAgICBpbnQgc3RyaW5nb2Zmc2V0ID0gVUNoYXJhY3RlclV0aWwudG9JbnQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncm91cGluZm9fW2luZGV4ICsgT0ZGU0VUX0hJR0hfT0ZGU0VUX10sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JvdXBpbmZvX1tpbmRleCArIE9GRlNFVF9MT1dfT0ZGU0VUX10pOworICAgICAgICAKKyAgICBvZmZzZXRzWzBdID0gMDsKKyAgICAKKyAgICAvLyBhbGwgMzIgbGVuZ3RocyBtdXN0IGJlIHJlYWQgdG8gZ2V0IHRoZSBvZmZzZXQgb2YgdGhlIGZpcnN0IGdyb3VwIHN0cmluZworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTElORVNfUEVSX0dST1VQXzsgc3RyaW5nb2Zmc2V0ICsrKSB7CisgICAgICBiID0gbV9ncm91cHN0cmluZ19bc3RyaW5nb2Zmc2V0XTsKKyAgICAgIHNoaWZ0ID0gNDsKKyAgICAgIAorICAgICAgd2hpbGUgKHNoaWZ0ID49IDApIHsKKyAgICAgICAgLy8gZ2V0dGluZyBuaWJibGUKKyAgICAgICAgbiA9IChieXRlKSgoYiA+PiBzaGlmdCkgJiAweDBGKTsgICAKKyAgICAgICAgaWYgKGxlbmd0aCA9PSAweGZmZmYgJiYgbiA+IFNJTkdMRV9OSUJCTEVfTUFYXykgeworICAgICAgICAgIGxlbmd0aCA9IChjaGFyKSgobiAtIDEyKSA8PCA0KTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBpZiAobGVuZ3RoICE9IDB4ZmZmZikgeworICAgICAgICAgICAgbGVuZ3Roc1tpXSA9IChjaGFyKSgobGVuZ3RoIHwgbikgKyAxMik7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbGVuZ3Roc1tpXSA9IChjaGFyKW47CisgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgaWYgKGkgPCBMSU5FU19QRVJfR1JPVVBfKSB7CisgICAgICAgICAgICBvZmZzZXRzW2kgKyAxXSA9IChjaGFyKShvZmZzZXRzW2ldICsgbGVuZ3Roc1tpXSk7CisgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgbGVuZ3RoID0gMHhmZmZmOworICAgICAgICAgIGkgKys7CisgICAgICAgIH0KKyAgICAgICAgICAgICAgCisgICAgICAgIHNoaWZ0IC09IDQ7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBzdHJpbmdvZmZzZXQ7CisgIH0KKyAgCisgIC8qKgorICAqIEdldHMgdGhlIG5hbWUgb2YgdGhlIGFyZ3VtZW50IGdyb3VwIGluZGV4CisgICogQHBhcmFtIGluZGV4IG9mIHRoZSBncm91cCBuYW1lIHN0cmluZyBpbiBieXRlIGNvdW50CisgICogQHBhcmFtIGxlbmd0aCBvZiB0aGUgZ3JvdXAgbmFtZSBzdHJpbmcKKyAgKiBAcGFyYW0gY2hvaWNlIG9mIFVuaWNvZGUgMS4wIG5hbWUgb3IgdGhlIG1vc3QgY3VycmVudCBuYW1lCisgICogQHJldHVybiBuYW1lIG9mIHRoZSBncm91cCAKKyAgKi8KKyAgcHJpdmF0ZSBTdHJpbmcgZ2V0R3JvdXBOYW1lKGludCBpbmRleCwgaW50IGxlbmd0aCwgaW50IGNob2ljZSkgCisgIHsKKyAgICBpZiAoY2hvaWNlICE9IFVDaGFyYWN0ZXJOYW1lQ2hvaWNlLlVfVU5JQ09ERV9DSEFSX05BTUUpIHsKKyAgICAgIGludCBvbGRpbmRleCA9IGluZGV4OworICAgICAgaW5kZXggKz0gVUNoYXJhY3RlclV0aWwuc2tpcEJ5dGVTdWJTdHJpbmcobV9ncm91cHN0cmluZ18sIGluZGV4LCBsZW5ndGgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ5dGUpJzsnKTsKKyAgICAgIGxlbmd0aCAtPSAoaW5kZXggLSBvbGRpbmRleCk7CisgICAgfQorICAgIAorICAgIFN0cmluZ0J1ZmZlciBzID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgIGJ5dGUgYjsKKyAgICBjaGFyIHRva2VuOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOykgeworICAgICAgYiA9IG1fZ3JvdXBzdHJpbmdfW2luZGV4ICsgaV07CisgICAgICBpICsrOworICAgICAgCisgICAgICBpZiAoYiA+PSBtX3Rva2VudGFibGVfLmxlbmd0aCkgeworICAgICAgICBpZiAoYiA9PSAnOycpIHsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBzLmFwcGVuZChiKTsgLy8gaW1wbGljaXQgbGV0dGVyCisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdG9rZW4gPSBtX3Rva2VudGFibGVfW2IgJiAweDAwZmZdOworICAgICAgICBpZiAodG9rZW4gPT0gMHhGRkZFKSB7CisgICAgICAgICAgLy8gdGhpcyBpcyBhIGxlYWQgYnl0ZSBmb3IgYSBkb3VibGUtYnl0ZSB0b2tlbgorICAgICAgICAgIHRva2VuID0gbV90b2tlbnRhYmxlX1tiIDw8IDggfCAobV9ncm91cHN0cmluZ19baW5kZXggKyBpXSAmIDB4MDBmZildOworICAgICAgICAgIGkgKys7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRva2VuID09IDB4RkZGRikgeworICAgICAgICAgIGlmIChiID09ICc7JykgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICAgIHMuYXBwZW5kKChjaGFyKShiICYgMHgwMGZmKSk7IC8vIGV4cGxpY2l0IGxldHRlcgorICAgICAgICB9CisgICAgICAgIGVsc2UgeyAvLyB3cml0ZSB0b2tlbiB3b3JkCisgICAgICAgICAgVUNoYXJhY3RlclV0aWwuZ2V0TnVsbFRlcm1CeXRlU3ViU3RyaW5nKHMsIG1fdG9rZW5zdHJpbmdfLCB0b2tlbik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAocy5sZW5ndGgoKSA9PSAwKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgcmV0dXJuIHMudG9TdHJpbmcoKTsKKyAgfQorICAKKyAgLyoqCisgICogQ29tcGFyZXMgYW5kIHJldHJpZXZlIGNoYXJhY3RlciBpZiBuYW1lIGlzIGZvdW5kIHdpdGhpbiB0aGUgYXJndW1lbnQgCisgICogZ3JvdXAKKyAgKiBAcGFyYW0gaW5kZXggaW5kZXggd2hlcmUgdGhlIHNldCBvZiBuYW1lcyByZXNpZGUgaW4gdGhlIGdyb3VwIGJsb2NrCisgICogQHBhcmFtIGxlbmd0aCBsaXN0IG9mIGxlbmd0aHMgb2YgdGhlIHN0cmluZ3MKKyAgKiBAcGFyYW0gbmFtZSBjaGFyYWN0ZXIgbmFtZSB0byBzZWFyY2ggZm9yCisgICogQHBhcmFtIGNob2ljZSBvZiBlaXRoZXIgMS4wIG9yIHRoZSBtb3N0IGN1cnJlbnQgdW5pY29kZSBuYW1lCisgICogQHJldHVybiByZWxhdGl2ZSBjaGFyYWN0ZXIgaW4gdGhlIGdyb3VwIHdoaWNoIG1hdGNoZXMgbmFtZSwgb3RoZXJ3aXNlIGlmICAgCisgICogICAgICAgICBub3QgZm91bmQsIC0xIHdpbGwgYmUgcmV0dXJuZWQKKyAgKi8KKyAgcHJpdmF0ZSBpbnQgZ2V0R3JvdXBDaGFyKGludCBpbmRleCwgY2hhciBsZW5ndGhbXSwgU3RyaW5nIG5hbWUsIGludCBjaG9pY2UpCisgIHsgCisgICAgYnl0ZSBiID0gMDsgCisgICAgY2hhciB0b2tlbjsKKyAgICBpbnQgbGVuOworICAgIGludCBuYW1lbGVuID0gbmFtZS5sZW5ndGgoKTsKKyAgICBpbnQgbmluZGV4OworICAgIGludCBjb3VudDsKKyAgICAKKyAgICBmb3IgKGludCByZXN1bHQgPSAwOyByZXN1bHQgPD0gTElORVNfUEVSX0dST1VQXzsgcmVzdWx0ICsrKSB7CisgICAgICBuaW5kZXggPSAwOworICAgICAgbGVuID0gbGVuZ3RoW3Jlc3VsdF07CisgICAgICAKKyAgICAgIGlmIChjaG9pY2UgIT0gVUNoYXJhY3Rlck5hbWVDaG9pY2UuVV9VTklDT0RFX0NIQVJfTkFNRSkgeworICAgICAgICBpbnQgb2xkaW5kZXggPSBpbmRleDsKKyAgICAgICAgaW5kZXggKz0gVUNoYXJhY3RlclV0aWwuc2tpcEJ5dGVTdWJTdHJpbmcobV9ncm91cHN0cmluZ18sIGluZGV4LCBsZW4sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZSknOycpOworICAgICAgICBsZW4gLT0gKGluZGV4IC0gb2xkaW5kZXgpOworICAgICAgfQorICAgICAgICAKKyAgICAgIC8vIG51bWJlciBvZiB0b2tlbnMgaXMgPiB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lCisgICAgICAvLyB3cml0ZSBlYWNoIGxldHRlciBkaXJlY3RseSwgYW5kIHdyaXRlIGEgdG9rZW4gd29yZCBwZXIgdG9rZW4KKyAgICAgIGZvciAoY291bnQgPSAwOyBjb3VudCA8IGxlbiAmJiBuaW5kZXggIT0gLTEgJiYgbmluZGV4IDwgbmFtZWxlbjspIHsKKyAgICAgICAgYiA9IG1fZ3JvdXBzdHJpbmdfW2luZGV4ICsgY291bnRdOworICAgICAgICBjb3VudCArKzsKKyAgICAgICAgICAgCisgICAgICAgIGlmIChiID49IG1fdG9rZW50YWJsZV8ubGVuZ3RoKSB7CisgICAgICAgICAgaWYgKG5hbWUuY2hhckF0KG5pbmRleCArKykgIT0gKGIgJiAweEZGKSkgeworICAgICAgICAgICAgbmluZGV4ID0gLTE7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHRva2VuID0gbV90b2tlbnRhYmxlX1tiICYgMHhGRl07CisgICAgICAgICAgaWYgKHRva2VuID09IDB4RkZGRSkgeworICAgICAgICAgICAgLy8gdGhpcyBpcyBhIGxlYWQgYnl0ZSBmb3IgYSBkb3VibGUtYnl0ZSB0b2tlbgorICAgICAgICAgICAgdG9rZW4gPSBtX3Rva2VudGFibGVfW2IgPDwgOCB8IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtX2dyb3Vwc3RyaW5nX1tpbmRleCArIGNvdW50XSAmIDB4MDBmZildOworICAgICAgICAgICAgY291bnQgKys7CisgICAgICAgICAgfQorICAgICAgICAgIGlmICh0b2tlbiA9PSAweEZGRkYpIHsKKyAgICAgICAgICAgIGlmIChuYW1lLmNoYXJBdChuaW5kZXggKyspICE9IChiICYgMHhGRikpIHsKKyAgICAgICAgICAgICAgbmluZGV4ID0gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gY29tcGFyZSB0b2tlbiB3aXRoIG5hbWUKKyAgICAgICAgICAgIG5pbmRleCA9IFVDaGFyYWN0ZXJVdGlsLmNvbXBhcmVOdWxsVGVybUJ5dGVTdWJTdHJpbmcobmFtZSwgCisgICAgICAgICAgICAgICAgICAgICBtX3Rva2Vuc3RyaW5nXywgbmluZGV4LCB0b2tlbik7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmIChuYW1lbGVuID09IG5pbmRleCAmJiAKKyAgICAgICAgICAoY291bnQgPT0gbGVuIHx8IG1fZ3JvdXBzdHJpbmdfW2luZGV4ICsgY291bnRdID09ICc7JykpIHsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICB9CisgICAgICAgIAorICAgICAgaW5kZXggKz0gbGVuOworICAgIH0KKyAgICByZXR1cm4gLTE7CisgIH0KKyAgCisgIC8vIHByb3RlY3RlZCBpbm5lciBjbGFzcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICAvKioKKyAgKiBBbGdvcml0aG1pYyBuYW1lIGNsYXNzCisgICovCisgIHN0YXRpYyBmaW5hbCBjbGFzcyBBbGdvcml0aG1OYW1lCisgIHsKKyAgICAvLyBwcm90ZWN0ZWQgdmFyaWFibGVzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAKKyAgICAvKioKKyAgICAqIENvbnN0YW50IHR5cGUgdmFsdWUgb2YgdGhlIGRpZmZlcmVudCBBbGdvcml0aG1OYW1lCisgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBUWVBFXzBfID0gMDsKKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBUWVBFXzFfID0gMTsKKyAgICAKKyAgICAvLyBwcml2YXRlIHZhcmlhYmxlcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAKKyAgICAvKioKKyAgICAqIEFsZ29yaXRobWljIGRhdGEgaW5mb3JtYXRpb24KKyAgICAqLworICAgIHByaXZhdGUgaW50IG1fcmFuZ2VzdGFydF87CisgICAgcHJpdmF0ZSBpbnQgbV9yYW5nZWVuZF87CisgICAgcHJpdmF0ZSBieXRlIG1fdHlwZV87CisgICAgcHJpdmF0ZSBieXRlIG1fdmFyaWFudF87CisgICAgcHJpdmF0ZSBjaGFyIG1fZmFjdG9yX1tdOworICAgIHByaXZhdGUgU3RyaW5nIG1fcHJlZml4XzsKKyAgICBwcml2YXRlIGJ5dGUgbV9mYWN0b3JzdHJpbmdfW107CisgICAgCisgICAgLy8gY29uc3RydWN0b3IgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgCisgICAgLyoqCisgICAgKiBDb25zdHJ1Y3RvcgorICAgICovCisgICAgcHJvdGVjdGVkIEFsZ29yaXRobU5hbWUoKQorICAgIHsKKyAgICB9CisgICAgCisgICAgLy8gcHJvdGVjdGVkIG1ldGhvZHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgCisgICAgLyoqCisgICAgKiBTZXRzIHRoZSBpbmZvcm1hdGlvbiBmb3IgYWNjZXNzaW5nIHRoZSBhbGdvcml0aG1pYyBuYW1lcworICAgICogQHBhcmFtIHJhbmdlc3RhcnQgc3RhcnRpbmcgY29kZSBwb2ludCB0aGF0IGxpZXMgd2l0aGluIHRoaXMgbmFtZSBncm91cAorICAgICogQHBhcmFtIHJhbmdlZW5kIGVuZCBjb2RlIHBvaW50IHRoYXQgbGllcyB3aXRoaW4gdGhpcyBuYW1lIGdyb3VwCisgICAgKiBAcGFyYW0gdHlwZSBhbGdvcml0aG0gdHlwZS4gVGhlcmUncyAyIGtpbmRzIG9mIGFsZ29yaXRobWljIHR5cGUuIEZpcnN0IAorICAgICogICAgICAgIHdoaWNoIHVzZXMgY29kZSBwb2ludCBhcyBwYXJ0IG9mIGl0cyBuYW1lIGFuZCB0aGUgb3RoZXIgdXNlcyAKKyAgICAqICAgICAgICB2YXJpYW50IHBvc3RmaXggc3RyaW5ncworICAgICogQHBhcmFtIHZhcmlhbnQgYWxnb3JpdGhtaWMgdmFyaWFudAorICAgICogQHJldHVybiB0cnVlIGlmIHZhbHVlcyBhcmUgdmFsaWQKKyAgICAqLyAKKyAgICBwcm90ZWN0ZWQgYm9vbGVhbiBzZXRJbmZvKGludCByYW5nZXN0YXJ0LCBpbnQgcmFuZ2VlbmQsIGJ5dGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGUgdmFyaWFudCkKKyAgICB7CisgICAgICBpZiAocmFuZ2VzdGFydCA+PSBVQ2hhcmFjdGVyLk1JTl9WQUxVRSAmJiByYW5nZXN0YXJ0IDw9IHJhbmdlZW5kICYmCisgICAgICAgICAgcmFuZ2VlbmQgPD0gVUNoYXJhY3Rlci5NQVhfVkFMVUUgJiYgCisgICAgICAgICAgKHR5cGUgPT0gVFlQRV8wXyB8fCB0eXBlID09IFRZUEVfMV8pKSB7CisgICAgICAgIG1fcmFuZ2VzdGFydF8gPSByYW5nZXN0YXJ0OworICAgICAgICBtX3JhbmdlZW5kXyA9IHJhbmdlZW5kOworICAgICAgICBtX3R5cGVfID0gdHlwZTsKKyAgICAgICAgbV92YXJpYW50XyA9IHZhcmlhbnQ7CisgICAgICAgIHJldHVybiB0cnVlOworICAgICAgfQorICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIFNldHMgdGhlIGZhY3RvciBkYXRhCisgICAgKiBAcGFyYW0gYXJyYXkgb2YgZmFjdG9yCisgICAgKiBAcmV0dXJuIHRydWUgaWYgZmFjdG9ycyBhcmUgdmFsaWQKKyAgICAqLworICAgIHByb3RlY3RlZCBib29sZWFuIHNldEZhY3RvcihjaGFyIGZhY3RvcltdKQorICAgIHsKKyAgICAgIGlmIChmYWN0b3IubGVuZ3RoID09IG1fdmFyaWFudF8pIHsKKyAgICAgICAgbV9mYWN0b3JfID0gZmFjdG9yOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgKiBTZXRzIHRoZSBuYW1lIHByZWZpeAorICAgICogQHBhcmFtIHByZWZpeAorICAgICogQHJldHVybiB0cnVlIGlmIHByZWZpeCBpcyBzZXQKKyAgICAqLworICAgIHByb3RlY3RlZCBib29sZWFuIHNldFByZWZpeChTdHJpbmcgcHJlZml4KQorICAgIHsKKyAgICAgIGlmIChwcmVmaXggIT0gbnVsbCAmJiBwcmVmaXgubGVuZ3RoKCkgPiAwKSB7CisgICAgICAgIG1fcHJlZml4XyA9IHByZWZpeDsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICB9CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICogU2V0cyB0aGUgdmFyaWFudCBmYWN0b3JpemVkIG5hbWUgZGF0YSAKKyAgICAqIEBwYXJhbSBzdHJpbmcgdmFyaWFudCBmYWN0b3JpemVkIG5hbWUgZGF0YQorICAgICogQHJldHVybiB0cnVlIGlmIHZhbHVlcyBhcmUgc2V0CisgICAgKi8KKyAgICBwcm90ZWN0ZWQgYm9vbGVhbiBzZXRGYWN0b3JTdHJpbmcoYnl0ZSBzdHJpbmdbXSkKKyAgICB7CisgICAgICAvLyBmYWN0b3IgYW5kIHZhcmlhbnQgc3RyaW5nIGNhbiBiZSBlbXB0eSBmb3IgdGhpbmdzIGxpa2UgaGFuZ2d1bCBjb2RlCisgICAgICAvLyBwb2ludHMKKyAgICAgIG1fZmFjdG9yc3RyaW5nXyA9IHN0cmluZzsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgCisgICAgLyoqCisgICAgKiBDaGVja3MgaWYgY29kZSBwb2ludCBsaWVzIGluIEFsZ29yaXRobSBvYmplY3QgYXQgaW5kZXgKKyAgICAqIEBwYXJhbSBjaCBjb2RlIHBvaW50IAorICAgICovCisgICAgcHJvdGVjdGVkIGJvb2xlYW4gY29udGFpbnMoaW50IGNoKQorICAgIHsKKyAgICAgIHJldHVybiBtX3Jhbmdlc3RhcnRfIDw9IGNoICYmIGNoIDw9IG1fcmFuZ2VlbmRfOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIEFwcGVuZHMgYWxnb3JpdGhtIG5hbWUgb2YgY29kZSBwb2ludCBpbnRvIFN0cmluZ0J1ZmZlci4KKyAgICAqIE5vdGUgdGhpcyBtZXRob2QgZG9lcyBub3QgY2hlY2sgZm9yIHZhbGlkaXR5IG9mIGNvZGUgcG9pbnQgaW4gQWxnb3JpdGhtLAorICAgICogcmVzdWx0IGlzIHVuZGVmaW5lZCBpZiBjb2RlIHBvaW50IGRvZXMgbm90IGJlbG9uZyBpbiBBbGdvcml0aG0uCisgICAgKiBAcGFyYW0gY2ggY29kZSBwb2ludAorICAgICogQHBhcmFtIHN0ciBTdHJpbmdCdWZmZXIgdG8gYXBwZW5kIHRvCisgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBhcHBlbmROYW1lKGludCBjaCwgU3RyaW5nQnVmZmVyIHN0cikKKyAgICB7CisgICAgICBzdHIuYXBwZW5kKG1fcHJlZml4Xyk7CisgICAgICBzd2l0Y2ggKG1fdHlwZV8pIAorICAgICAgeworICAgICAgICBjYXNlIFRZUEVfMF86IAorICAgICAgICAgIC8vIHByZWZpeCBmb2xsb3dlZCBieSBoZXggZGlnaXRzIGluZGljYXRpbmcgdmFyaWFudHMKKyAgICAgICAgICBzdHIuYXBwZW5kKEludGVnZXIudG9IZXhTdHJpbmcoY2gpKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUWVBFXzFfOiAKKyAgICAgICAgICAvLyBwcmVmaXggZm9sbG93ZWQgYnkgZmFjdG9yaXplZC1lbGVtZW50cworICAgICAgICAgIGludCBvZmZzZXQgPSBjaCAtIG1fcmFuZ2VzdGFydF87CisgICAgICAgICAgaW50IGluZGV4ZXNbXSA9IG5ldyBpbnRbbV92YXJpYW50X107CisgICAgICAgICAgaW50IGZhY3RvcjsKKyAgICAgICAgICAKKyAgICAgICAgICAvLyB3cml0ZSBlbGVtZW50cyBhY2NvcmRpbmcgdG8gdGhlIGZhY3RvcnMKKyAgICAgICAgICAvLyB0aGUgZmFjdG9yaXplZCBlbGVtZW50cyBhcmUgZGV0ZXJtaW5lZCBieSBtb2R1bG8gYXJpdGhtZXRpYworICAgICAgICAgIGZvciAoaW50IGkgPSBtX3ZhcmlhbnRfIC0gMTsgaSA+IDA7IGkgLS0pIAorICAgICAgICAgIHsKKyAgICAgICAgICAgIGZhY3RvciA9IG1fZmFjdG9yX1tpXSAmIDB4MDBGRjsKKyAgICAgICAgICAgIGluZGV4ZXNbaV0gPSBvZmZzZXQgJSBmYWN0b3I7CisgICAgICAgICAgICBvZmZzZXQgLz0gZmFjdG9yOworICAgICAgICAgIH0KKyAgICAgICAgICAKKyAgICAgICAgICAvLyB3ZSBkb24ndCBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgbGFzdCBtb2R1bHVzIGJlY2F1c2UgCisgICAgICAgICAgLy8gc3RhcnQgPD0gY29kZSA8PSBlbmQgZ3VhcmFudGVlcyBoZXJlIHRoYXQgY29kZSA8PSBmYWN0b3JzWzBdCisgICAgICAgICAgaW5kZXhlc1swXSA9IG9mZnNldDsKKworICAgICAgICAgIC8vIGpvaW5pbmcgdXAgdGhlIGZhY3Rvcml6ZWQgc3RyaW5ncyAKKyAgICAgICAgICBTdHJpbmcgc1tdID0gZ2V0RmFjdG9yU3RyaW5nKGluZGV4ZXMpOworICAgICAgICAgIGlmIChzICE9IG51bGwgJiYgcy5sZW5ndGggPiAwKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIGludCBzaXplID0gcy5sZW5ndGg7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkgKyspCisgICAgICAgICAgICAgIHN0ci5hcHBlbmQoc1tpXSk7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIEdldHMgdGhlIGNoYXJhY3RlciBmb3IgdGhlIGFyZ3VtZW50IGFsZ29yaXRobWljIG5hbWUKKyAgICAqIEByZXR1cm4gdGhlIGFsZ29yaXRobWljIGNoYXIgb3IgLTEgb3RoZXJ3aXNlLgorICAgICovCisgICAgcHJvdGVjdGVkIGludCBnZXRBbGdvcml0aG1DaGFyKFN0cmluZyBuYW1lKQorICAgIHsKKyAgICAgIGludCBwcmVmaXhsZW4gPSBtX3ByZWZpeF8ubGVuZ3RoKCk7CisgICAgICBpZiAobmFtZS5sZW5ndGgoKSA8IHByZWZpeGxlbiB8fCAKKyAgICAgICAgICAhbV9wcmVmaXhfLmVxdWFscyhuYW1lLnN1YnN0cmluZygwLCBwcmVmaXhsZW4pKSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgICB9CisgICAgICAgIAorICAgICAgc3dpdGNoIChtX3R5cGVfKSAKKyAgICAgIHsKKyAgICAgICAgY2FzZSBUWVBFXzBfIDogCisgICAgICAgICAgdHJ5CisgICAgICAgICAgeworICAgICAgICAgICAgaW50IHJlc3VsdCA9IEludGVnZXIucGFyc2VJbnQobmFtZS5zdWJzdHJpbmcocHJlZml4bGVuKSwgMTYpOworICAgICAgICAgICAgLy8gZG9lcyBpdCBmaXQgaW50byB0aGUgcmFuZ2U/CisgICAgICAgICAgICBpZiAobV9yYW5nZXN0YXJ0XyA8PSByZXN1bHQgJiYgcmVzdWx0IDw9IG1fcmFuZ2VlbmRfKSB7CisgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSkKKyAgICAgICAgICB7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRZUEVfMV8gOiAKKyAgICAgICAgICAvLyByZXBldGl0YXRpdmUgc3VmZml4IG5hbWUgY29tcGFyaXNvbiBkb25lIGhlcmUKKyAgICAgICAgICAvLyBvZmZzZXQgaXMgdGhlIGNoYXJhY3RlciBjb2RlIC0gc3RhcnQKKyAgICAgICAgICBmb3IgKGludCBjaCA9IG1fcmFuZ2VzdGFydF87IGNoIDw9IG1fcmFuZ2VlbmRfOyBjaCArKykKKyAgICAgICAgICB7CisgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gY2ggLSBtX3Jhbmdlc3RhcnRfOworICAgICAgICAgICAgaW50IGluZGV4ZXNbXSA9IG5ldyBpbnRbbV92YXJpYW50X107CisgICAgICAgICAgICBpbnQgZmFjdG9yOworICAgICAgCisgICAgICAgICAgICAvLyB3cml0ZSBlbGVtZW50cyBhY2NvcmRpbmcgdG8gdGhlIGZhY3RvcnMKKyAgICAgICAgICAgIC8vIHRoZSBmYWN0b3JpemVkIGVsZW1lbnRzIGFyZSBkZXRlcm1pbmVkIGJ5IG1vZHVsbyBhcml0aG1ldGljCisgICAgICAgICAgICBmb3IgKGludCBpID0gbV92YXJpYW50XyAtIDE7IGkgPiAwOyBpIC0tKSAKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgZmFjdG9yID0gbV9mYWN0b3JfW2ldICYgMHgwMEZGOworICAgICAgICAgICAgICBpbmRleGVzW2ldID0gb2Zmc2V0ICUgZmFjdG9yOworICAgICAgICAgICAgICBvZmZzZXQgLz0gZmFjdG9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyB3ZSBkb24ndCBuZWVkIHRvIGNhbGN1bGF0ZSB0aGUgbGFzdCBtb2R1bHVzIGJlY2F1c2UgCisgICAgICAgICAgICAvLyBzdGFydCA8PSBjb2RlIDw9IGVuZCBndWFyYW50ZWVzIGhlcmUgdGhhdCBjb2RlIDw9IGZhY3RvcnNbMF0KKyAgICAgICAgICAgIGluZGV4ZXNbMF0gPSBvZmZzZXQ7CisKKyAgICAgICAgICAgIC8vIGpvaW5pbmcgdXAgdGhlIGZhY3Rvcml6ZWQgc3RyaW5ncyAKKyAgICAgICAgICAgIGlmIChjb21wYXJlRmFjdG9yU3RyaW5nKGluZGV4ZXMsIG5hbWUuc3Vic3RyaW5nKHByZWZpeGxlbikpKSB7CisgICAgICAgICAgICAgIHJldHVybiBjaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICB9CisKKyAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgCisgICAgLy8gcHJpdmF0ZSBtZXRob2RzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIAorICAgIC8qKgorICAgICogR2V0cyB0aGUgaW5kZXh0aCBzdHJpbmcgaW4gZWFjaCBvZiB0aGUgYXJndW1lbnQgZmFjdG9yIGJsb2NrCisgICAgKiBAcGFyYW0gaW5kZXggYXJyYXkgd2l0aCBlYWNoIGluZGV4IGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBmYWN0b3IgYmxvY2sKKyAgICAqIEByZXR1cm4gYXJyYXkgb2YgaW5kZXh0aCBmYWN0b3Igc3RyaW5nIGluIGZhY3RvciBibG9jaworICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmdbXSBnZXRGYWN0b3JTdHJpbmcoaW50IGluZGV4W10pCisgICAgeworICAgICAgaW50IHNpemUgPSBtX2ZhY3Rvcl8ubGVuZ3RoOworICAgICAgaWYgKGluZGV4ID09IG51bGwgfHwgaW5kZXgubGVuZ3RoICE9IHNpemUpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICB9CisgICAgICAgIAorICAgICAgU3RyaW5nIHJlc3VsdFtdID0gbmV3IFN0cmluZ1tzaXplXTsKKyAgICAgIFN0cmluZ0J1ZmZlciBzdHIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICBpbnQgY291bnQgPSAwOworICAgICAgaW50IGZhY3RvcjsKKyAgICAgIHNpemUgLS07CisgICAgICBmb3IgKGludCBpID0gMDsgaSA8PSBzaXplOyBpICsrKSB7CisgICAgICAgIGZhY3RvciA9IG1fZmFjdG9yX1tpXTsKKyAgICAgICAgY291bnQgPSBVQ2hhcmFjdGVyVXRpbC5za2lwTnVsbFRlcm1CeXRlU3ViU3RyaW5nKG1fZmFjdG9yc3RyaW5nXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgaW5kZXhbaV0pOworICAgICAgICBjb3VudCA9IFVDaGFyYWN0ZXJVdGlsLmdldE51bGxUZXJtQnl0ZVN1YlN0cmluZyhzdHIsIG1fZmFjdG9yc3RyaW5nXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50KTsKKyAgICAgICAgaWYgKGkgIT0gc2l6ZSkgeworICAgICAgICAgIGNvdW50ID0gVUNoYXJhY3RlclV0aWwuc2tpcE51bGxUZXJtQnl0ZVN1YlN0cmluZyhtX2ZhY3RvcnN0cmluZ18sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCBmYWN0b3IgLSBpbmRleFtpXSAtIDEpOworICAgICAgICB9CisgICAgICAgIHJlc3VsdFtpXSA9IHN0ci50b1N0cmluZygpOworICAgICAgICBzdHIuZGVsZXRlKDAsIHN0ci5sZW5ndGgoKSk7CisgICAgICB9CisgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAqIENvbXBhcmVzIHRoZSBpbmRleHRoIHN0cmluZyBpbiBlYWNoIG9mIHRoZSBhcmd1bWVudCBmYWN0b3IgYmxvY2sgd2l0aAorICAgICogdGhlIGFyZ3VtZW50IHN0cmluZworICAgICogQHBhcmFtIGluZGV4IGFycmF5IHdpdGggZWFjaCBpbmRleCBjb3JyZXNwb25kaW5nIHRvIGVhY2ggZmFjdG9yIGJsb2NrCisgICAgKiBAcGFyYW0gc3RyIHN0cmluZyB0byBjb21wYXJlIHdpdGgKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiBzdHJpbmcgbWF0Y2hlcworICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIGNvbXBhcmVGYWN0b3JTdHJpbmcoaW50IGluZGV4W10sIFN0cmluZyBzdHIpCisgICAgeworICAgICAgaW50IHNpemUgPSBtX2ZhY3Rvcl8ubGVuZ3RoOworICAgICAgaWYgKGluZGV4ID09IG51bGwgfHwgaW5kZXgubGVuZ3RoICE9IHNpemUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgICBpbnQgY291bnQgPSAwOworICAgICAgaW50IHN0cmNvdW50ID0gMDsKKyAgICAgIGludCBmYWN0b3I7CisgICAgICBzaXplIC0tOworICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gc2l6ZTsgaSArKykKKyAgICAgIHsKKyAgICAgICAgZmFjdG9yID0gbV9mYWN0b3JfW2ldOworICAgICAgICBjb3VudCA9IFVDaGFyYWN0ZXJVdGlsLnNraXBOdWxsVGVybUJ5dGVTdWJTdHJpbmcobV9mYWN0b3JzdHJpbmdfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50LCBpbmRleFtpXSk7CisgICAgICAgIHN0cmNvdW50ID0gVUNoYXJhY3RlclV0aWwuY29tcGFyZU51bGxUZXJtQnl0ZVN1YlN0cmluZyhzdHIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mYWN0b3JzdHJpbmdfLCBzdHJjb3VudCwgY291bnQpOworICAgICAgICBpZiAoc3RyY291bnQgPCAwKSB7CisgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgICAgCisgICAgICAgIGlmIChpICE9IHNpemUpIHsKKyAgICAgICAgICBjb3VudCA9IFVDaGFyYWN0ZXJVdGlsLnNraXBOdWxsVGVybUJ5dGVTdWJTdHJpbmcobV9mYWN0b3JzdHJpbmdfLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCwgZmFjdG9yIC0gaW5kZXhbaV0pOworICAgICAgICB9CisgICAgICB9CisgICAgICBpZiAoc3RyY291bnQgIT0gc3RyLmxlbmd0aCgpKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgfQorfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L1VDaGFyYWN0ZXJQcm9wZXJ0eURCLmphdmEgYi9zcmMvY29tL2libS90ZXh0L1VDaGFyYWN0ZXJQcm9wZXJ0eURCLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzA3ZDNiNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvVUNoYXJhY3RlclByb3BlcnR5REIuamF2YQpAQCAtMCwwICsxLDUwOSBAQAorLyoqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IAorKiAgICAgICAgIC91c3IvY3ZzL2ljdTRqL2ljdTRqL3NyYy9jb20vaWJtL2ljdS90ZXh0L1VDaGFyYWN0ZXJQcm9wZXJ0eURCLmphdmEgJCAKKyogJERhdGU6IDIwMDEvMDMvMjMgMTk6NTE6MzggJCAKKyogJFJldmlzaW9uOiAxLjMgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworcGFja2FnZSBjb20uaWJtLnRleHQ7CisKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRGF0YUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCisvKioKKyogSW50ZXJuYWwgY2xhc3MgdXNlZCBmb3IgVW5pY29kZSBjaGFyYWN0ZXIgcHJvcGVydHkgZGF0YWJhc2UuCisqIERhdGFiYXNlIGNsYXNzZXMgc3RvcmUgYmluYXJ5IGRhdGEgcmVhZCBmcm9tIHVwcm9wcy5kYXQgYW5kIHVuYW1lcyBmb3IgdXNlLiAKKyogSXQgZG9lcyBub3QgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBwYXJzZSB0aGUgZGF0YSBpbnRvIG1vcmUgaGlnaC1sZXZlbCAKKyogaW5mb3JtYXRpb24uIEl0IG9ubHkgcmV0dXJucyBieXRlcyBvZiBpbmZvcm1hdGlvbiB3aGVuIHJlcXVpcmVkLiAKKyogRHVlIHRvIHRoZSBmb3JtIG1vc3QgY29tbW9ubHkgdXNlZCBmb3IgcmV0cmlldmFsLCBhcnJheSBvZiBjaGFyIGlzIHVzZWQKKyogdG8gc3RvcmUgdGhlIGJpbmFyeSBkYXRhCisqIFVDaGFyYWN0ZXJQcm9wZXJ0eURCIGFsc28gY29udGFpbnMgaW5mb3JtYXRpb24gb24gYWNjZXNzaW5nIGluZGV4ZXMgdG8gCisqIHNpZ25pZmljYW50IHBvaW50cyBpbiB0aGUgYmluYXJ5IGRhdGEuCisqIFJlc3BvbnNpYmlsaXR5IGZvciBtb2xkaW5nIHRoZSBiaW5hcnkgZGF0YSBpbnRvIG1vcmUgbWVhbmluZyBmb3JtIGxpZXMgb24gCisqIDxhIGhyZWY9VUNoYXJhY3Rlci5odG1sPlVDaGFyYWN0ZXI8L2E+IGFuZCAKKyogPGEgaHJlZj1VQ2hhcmFjdGVyTmFtZS5odG1sPlVDaGFyYWN0ZXJOYW1lPC9hPi4KKyogRGF0YSBwb3B1bGF0ZWQgYnkgPGEgaHJlZj1VR2VuUHJvcFJlYWRlci5odG1sPlVHZW5Qcm9wUmVhZGVyPC9hPgorKiBAYXV0aG9yIFN5biBXZWUgUXVlaworKiBAc2luY2Ugb2N0MTAwMAorKiBAc2VlIGNvbS5pYm0udGV4dC5VR2VuUmVhZGVyCisqLworCitmaW5hbCBjbGFzcyAgVUNoYXJhY3RlclByb3BlcnR5REIgZXh0ZW5kcyBVQ2hhcmFjdGVyREIKK3sKKyAgLy8gcHJvdGVjdGVkIHZhcmlhYmxlcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIERhdGEgdHlwZSBpbmRpY2F0b3JzCisgICovCisgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IEVYQ19VUFBFUkNBU0VfID0gMDsKKyAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgRVhDX0xPV0VSQ0FTRV8gPSBFWENfVVBQRVJDQVNFXyArIDE7CisgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IEVYQ19USVRMRUNBU0VfID0gRVhDX0xPV0VSQ0FTRV8gKyAxOworICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBFWENfRElHSVRfVkFMVUVfID0gRVhDX1RJVExFQ0FTRV8gKyAxOworICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBFWENfTlVNRVJJQ19WQUxVRV8gPSBFWENfRElHSVRfVkFMVUVfICsgMTsKKyAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgRVhDX0RFTk9NSU5BVE9SX1ZBTFVFXyA9IEVYQ19OVU1FUklDX1ZBTFVFXyArIDE7CisgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IEVYQ19NSVJST1JfTUFQUElOR18gPSBFWENfREVOT01JTkFUT1JfVkFMVUVfICsgMTsKKyAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgRVhDX1NQRUNJQUxfQ0FTSU5HXyA9IEVYQ19NSVJST1JfTUFQUElOR18gKyAxOworICAvLyBFWENfQ09NQklOSU5HX0NMQVNTXyBpcyBub3QgZm91bmQgaW4gSUNVCisgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IEVYQ19DT01CSU5JTkdfQ0xBU1NfID0gRVhDX1NQRUNJQUxfQ0FTSU5HXyArIDE7CisKKworICAvLyBwcml2YXRlIHZhcmlhYmxlcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAKKyAgLyoqCisgICogTnVtYmVyIG9mIGJpdHMgdG8gc2hpZnQgcmlnaHQgdG8gZ2V0IHRoZSBjb3JyZWN0IHNlZ21lbnQgb2YgYml0cyBvdXQgZm9yIAorICAqIGluZGV4IHRvIHRoZSB1bmljb2RlIGRhdGFiYXNlCisgICovCisgIHByaXZhdGUgaW50IG1fc3RhZ2Uxc2hpZnRfOworICBwcml2YXRlIGludCBtX3N0YWdlMnNoaWZ0XzsKKworICAvKioKKyAgKiBNYXNrIGZvciBwZXJmb3JtaW5nIG9uIHRoZSBiaXQgc2VnbWVudCBhZnRlciBzaGlmdGluZyB0byBnZXQgYW4gaW5kZXggb3V0IAorICAqIG9mIGl0CisgICovCisgIHByaXZhdGUgaW50IG1fc3RhZ2UybWFza2FmdGVyc2hpZnRfOworICBwcml2YXRlIGludCBtX3N0YWdlM21hc2thZnRlcnNoaWZ0XzsKKworICAvKioKKyAgKiBUYWJsZSBmb3Igc3RhZ2VzIGRhdGEgYmxvY2sKKyAgKi8KKyAgcHJpdmF0ZSBjaGFyIG1fc3RhZ2VzX1tdOworICAKKyAgLyoqCisgICogQ2hhcmFjdGVyIHByb3BlcnR5IHRhYmxlCisgICovCisgIHByaXZhdGUgaW50IG1fcHJvcGVydHlfW107CisgIAorICAvKioKKyAgKiBDYXNlIHRhYmxlCisgICovCisgIHByaXZhdGUgY2hhciBtX2Nhc2VfW107CisgIAorICAvKioKKyAgKiBFeGNlcHRpb24gcHJvcGVydHkgdGFibGUKKyAgKi8KKyAgcHJpdmF0ZSBpbnQgbV9leGNlcHRpb25fW107CisgIAorICAvKioKKyAgKiBEZWZhdWx0IG5hbWUgb2YgdGhlIGRhdGFmaWxlCisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBEQVRBX0ZJTEVfTkFNRV8gPSAidXByb3BzLmRhdCI7CisgIAorICAvKioKKyAgKiBEZWZhdWx0IGJ1ZmZlciBzaXplIG9mIGRhdGFmaWxlCisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBEQVRBX0JVRkZFUl9TSVpFXyA9IDI1MDAwOworICAKKyAgLyoqCisgICogVGhpcywgZnJvbSB3aGF0IGkgaW5mZXIgaXMgdGhlIG1heCBzaXplIG9mIHRoZSBpbmRpY2F0b3JzIHVzZWQgZm9yIHRoZQorICAqIGV4Y2VwdGlvbiB2YWx1ZXMuCisgICogTnVtYmVyIG9mIGJpdHMgaW4gYW4gOC1iaXQgaW50ZWdlciB2YWx1ZSAKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEVYQ19HUk9VUF8gPSA4OworICAKKyAgLyoqCisgICogTWFzayB0byBnZXQgdGhlIGdyb3VwICAKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEVYQ19HUk9VUF9NQVNLXyA9IDI1NTsKKyAgCisgIC8qKgorICAqIE1hc2sgdG8gZ2V0IHRoZSBkaWdpdCB2YWx1ZSBpbiB0aGUgZXhjZXB0aW9uIHJlc3VsdAorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRVhDX0RJR0lUX01BU0tfID0gMHhGRkZGOworICAKKyAgLyoqCisgICogT2Zmc2V0IHRhYmxlIGZvciBkYXRhIGluIGV4Y2VwdGlvbiBibG9jay48YnI+CisgICogVGFibGUgZm9ybWVkIGJ5IHRoZSBudW1iZXIgb2YgYml0cyB1c2VkIGZvciB0aGUgaW5kZXgsIGUuZy4gMCA9IDAgYml0cywgCisgICogMSA9IDEgYml0cy4KKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBGTEFHU19PRkZTRVRfW10gPSAKKyAgeworICAgIDAsIDEsIDEsIDIsIDEsIDIsIDIsIDMsIDEsIDIsIDIsIDMsIDIsIDMsIDMsIDQsCisgICAgMSwgMiwgMiwgMywgMiwgMywgMywgNCwgMiwgMywgMywgNCwgMywgNCwgNCwgNSwKKyAgICAxLCAyLCAyLCAzLCAyLCAzLCAzLCA0LCAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LAorICAgIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsCisgICAgMSwgMiwgMiwgMywgMiwgMywgMywgNCwgMiwgMywgMywgNCwgMywgNCwgNCwgNSwKKyAgICAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LCAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LAorICAgIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsCisgICAgMywgNCwgNCwgNSwgNCwgNSwgNSwgNiwgNCwgNSwgNSwgNiwgNSwgNiwgNiwgNywKKyAgICAxLCAyLCAyLCAzLCAyLCAzLCAzLCA0LCAyLCAzLCAzLCA0LCAzLCA0LCA0LCA1LAorICAgIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsCisgICAgMiwgMywgMywgNCwgMywgNCwgNCwgNSwgMywgNCwgNCwgNSwgNCwgNSwgNSwgNiwKKyAgICAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LCA0LCA1LCA1LCA2LCA1LCA2LCA2LCA3LAorICAgIDIsIDMsIDMsIDQsIDMsIDQsIDQsIDUsIDMsIDQsIDQsIDUsIDQsIDUsIDUsIDYsCisgICAgMywgNCwgNCwgNSwgNCwgNSwgNSwgNiwgNCwgNSwgNSwgNiwgNSwgNiwgNiwgNywKKyAgICAzLCA0LCA0LCA1LCA0LCA1LCA1LCA2LCA0LCA1LCA1LCA2LCA1LCA2LCA2LCA3LAorICAgIDQsIDUsIDUsIDYsIDUsIDYsIDYsIDcsIDUsIDYsIDYsIDcsIDYsIDcsIDcsIDgKKyAgfTsKKyAgCisgIC8qKgorICAqIE51bWVyaWMgdmFsdWUgc2hpZnQKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFZBTFVFX1NISUZUXyA9IDIwOworICAKKyAgLyoqCisgICogRXhjZXB0aW9uIHRlc3QgbWFzaworICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRVhDRVBUSU9OX01BU0tfID0gMHgyMDsKKyAgCisgIC8qKgorICAqIE1hc2sgdG8gYmUgYXBwbGllZCBhZnRlciBzaGlmdGluZyB0byBvYnRhaW4gYW4gdW5zaWduZWQgbnVtZXJpYyB2YWx1ZQorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgVU5TSUdORURfVkFMVUVfTUFTS19BRlRFUl9TSElGVF8gPSAweDdGRjsKKyAgCisgIC8qKgorICAqIE1pcnJvciB0ZXN0IG1hc2sKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1JUlJPUl9NQVNLXyA9IDB4ODAwOworICAKKyAgLyoqCisgICogU2hpZnQgdG8gZ2V0IGJpZGkgYml0cworICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQklESV9TSElGVF8gPSA2OworICAKKyAgLyoqCisgICogTWFzayB0byBiZSBhcHBsaWVkIGFmdGVyIHNoaWZ0aW5nIHRvIGdldCBiaWRpIGJpdHMKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEJJRElfTUFTS19BRlRFUl9TSElGVF8gPSAweDFGOworICAKKyAgLyoqCisgICogVG8gZ2V0IHRoZSBsYXN0IDUgYml0cyBvdXQgZnJvbSBhIGRhdGEgdHlwZQorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTEFTVF81X0JJVF9NQVNLXyA9IDB4MUY7CisgIAorICAvKioKKyAgKiBTaGlmdCA1IGJpdHMKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNISUZUXzVfID0gNTsKKyAgCisgIC8vIGNvbnN0cnVjdG9yID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAKKyAgLyoqCisgICogQ29uc3RydWN0b3IKKyAgKiBAZXhjZXB0aW9uIHRocm93biB3aGVuIGRhdGEgcmVhZGluZyBmYWlscyBvciBkYXRhIGNvcnJ1cHRlZAorICAqLworICBwcm90ZWN0ZWQgVUNoYXJhY3RlclByb3BlcnR5REIoKSB0aHJvd3MgSU9FeGNlcHRpb24KKyAgeworICAgIFVHZW5Qcm9wUmVhZGVyIHJlYWRlciA9IG5ldyBVR2VuUHJvcFJlYWRlcigpOworICAgIAorICAgIElucHV0U3RyZWFtIGkgPSBnZXRDbGFzcygpLmdldFJlc291cmNlQXNTdHJlYW0oREFUQV9GSUxFX05BTUVfKTsKKyAgICBCdWZmZXJlZElucHV0U3RyZWFtIGIgPSBuZXcgQnVmZmVyZWRJbnB1dFN0cmVhbShpLCBEQVRBX0JVRkZFUl9TSVpFXyk7CisgICAgRGF0YUlucHV0U3RyZWFtIGQgPSBuZXcgRGF0YUlucHV0U3RyZWFtKGIpOworICAgIHJlYWRlci5yZWFkKGQsIHRoaXMpOworICAgIGQuY2xvc2UoKTsgCisgIH0KKyAgCisgIC8vIHB1YmxpYyBtZXRob2RzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAKKyAgLyoqCisgICAqIHRvU3RyaW5nIG1ldGhvZCBmb3IgcHJpbnRpbmcKKyAgICovCisgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKQorICB7CisgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoIlByb3BlcnR5IGJsb2NrXG4iKTsKKyAgICByZXN1bHQuYXBwZW5kKHN1cGVyLnRvU3RyaW5nKCkpOworICAgIHJlc3VsdC5hcHBlbmQoIlxuc2hpZnQgMSA6ICIpOworICAgIHJlc3VsdC5hcHBlbmQobV9zdGFnZTFzaGlmdF8pOworICAgIHJlc3VsdC5hcHBlbmQoIlxuc2hpZnQgMiA6ICIpOworICAgIHJlc3VsdC5hcHBlbmQobV9zdGFnZTJzaGlmdF8pOworICAgIHJlc3VsdC5hcHBlbmQoIlxubWFzayAyIDogIik7CisgICAgcmVzdWx0LmFwcGVuZChtX3N0YWdlMm1hc2thZnRlcnNoaWZ0Xyk7CisgICAgcmVzdWx0LmFwcGVuZCgiXG5tYXNrIDMgOiAiKTsKKyAgICByZXN1bHQuYXBwZW5kKG1fc3RhZ2UzbWFza2FmdGVyc2hpZnRfKTsKKyAgICByZXN1bHQuYXBwZW5kKCJcbnNpemUgb2Ygc3RhZ2UgZGF0YSAiKTsKKyAgICByZXN1bHQuYXBwZW5kKG1fc3RhZ2VzXy5sZW5ndGgpOworICAgIHJlc3VsdC5hcHBlbmQoIlxuc2l6ZSBvZiBwcm9wZXJ0eSBkYXRhICIpOworICAgIHJlc3VsdC5hcHBlbmQobV9wcm9wZXJ0eV8ubGVuZ3RoKTsKKyAgICByZXN1bHQuYXBwZW5kKCJcbnNpemUgb2YgZXhjZXB0aW9uIGRhdGEgIik7CisgICAgcmVzdWx0LmFwcGVuZChtX2V4Y2VwdGlvbl8ubGVuZ3RoKTsKKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgIH0KKyAgCisgIC8vIHByb3RlY3RlZCBtZXRob2RzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAKKyAgLyoqCisgICogU2V0IHN0YWdlIHNoaWZ0IGJpdHMsIG1hc2sgYW5kIHByb3BlcnR5IG9mZnNldAorICAqIEBwYXJhbSBzdGFnZTFzaGlmdCBjb3VudAorICAqIEBwYXJhbSBzdGFnZTJzaGlmdCBjb3VudAorICAqIEBwYXJhbSBzdGFnZTJtYXNrIGNvdW50CisgICogQHBhcmFtIHN0YWdlM21hc2sgY291bnQKKyAgKiBAcGFyYW0gb2Zmc2V0IHByb3BlcnR5IGJsb2NrIG9mZnNldAorICAqIEByZXR1cm4gZmFsc2UgaWYgdGhlcmUgaXMgYSBkYXRhIGVycm9yCisgICovCisgIHByb3RlY3RlZCBib29sZWFuIHNldEluZm8oaW50IHN0YWdlMXNoaWZ0LCBpbnQgc3RhZ2Uyc2hpZnQsIGludCBzdGFnZTJtYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFnZTNtYXNrKQorICB7CisgICAgaWYgKHN0YWdlMXNoaWZ0ID49IDAgJiYgc3RhZ2Uyc2hpZnQgPj0gMCAmJiBzdGFnZTJtYXNrICE9IDAgJiYgCisgICAgICAgIHN0YWdlM21hc2sgIT0gMCkKKyAgICB7CisgICAgICBtX3N0YWdlMXNoaWZ0XyA9IHN0YWdlMXNoaWZ0OyAKKyAgICAgIG1fc3RhZ2Uyc2hpZnRfID0gc3RhZ2Uyc2hpZnQ7CisgICAgICBtX3N0YWdlMm1hc2thZnRlcnNoaWZ0XyA9IHN0YWdlMm1hc2s7CisgICAgICBtX3N0YWdlM21hc2thZnRlcnNoaWZ0XyA9IHN0YWdlM21hc2s7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIAorICAvKioKKyAgKiBTZXQgdGhlIHN0YWdlcyBibG9jayBkYXRhLiBUaGUgZmlyc3QgVUdlblByb3BSZWFkZXIuSU5ERVhfU0laRSBjaGFyIG9mIGRhdGEgCisgICogYmVpbmcgc29tZSBvdGhlciBkYXRhIG5vdCB1c2VkIGZyb20gaGVuY2Ugb253YXJkcy4gTm90ZSB0aGUgdW51c2VkIGRhdGEKKyAgKiByZXNpZGVzIHNpbmNlIGFsbCBpbmRleGVzIGFyZSByZWxhdGl2ZSB0byBpdC4KKyAgKiBAcGFyYW0gc3RhZ2VzIGFycmF5IGNvbnRhaW5pbmcgdGhlIDIgc3RhZ2VzIG9mIGluZGV4IHBvaW50aW5nIHRvIHByb3BlcnR5CisgICogICAgICAgIGRhdGEKKyAgKiBAcmV0dXJuIHRydWUgaWYgc3RhZ2VzIGRhdGEgaXMgc2V0IHN1Y2Nlc3NmdWxseQorICAqLworICBwcm90ZWN0ZWQgYm9vbGVhbiBzZXRTdGFnZShjaGFyIHN0YWdlc1tdKQorICB7CisgICAgaWYgKHN0YWdlcyA9PSBudWxsIHx8IHN0YWdlcy5sZW5ndGggPD0gMCkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBtX3N0YWdlc18gPSBzdGFnZXM7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKyAgCisgIC8qKgorICAqIFNldCB0aGUgcHJvcGVydHkgYmxvY2sgZGF0YS4gCisgICogQHBhcmFtIHByb3BlcnR5IGFycmF5IGNvbnRhaW5pbmcgZGF0YSByZWdhcmRpbmcgdGhlIGNoYXJhY3RlciBwcm9wZXJ0aWVzCisgICogQHJldHVybiB0cnVlIGlmIHN0YWdlcyBkYXRhIGlzIHNldCBzdWNjZXNzZnVsbHkKKyAgKi8KKyAgcHJvdGVjdGVkIGJvb2xlYW4gc2V0UHJvcGVydHkoaW50IHByb3BlcnR5W10pCisgIHsKKyAgICBpZiAocHJvcGVydHkgPT0gbnVsbCB8fCBwcm9wZXJ0eS5sZW5ndGggPD0gMCkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBtX3Byb3BlcnR5XyA9IHByb3BlcnR5OworICAgIHJldHVybiB0cnVlOworICB9CisgIAorICAvKioKKyAgKiBTZXQgdGhlIGNhc2UgYmxvY2sgZGF0YS4gCisgICogQHBhcmFtIGNhc2UgYXJyYXkgY29udGFpbmluZyBkYXRhIHJlZ2FyZGluZyB0aGUgY2FzZSBwcm9wZXJ0aWVzCisgICogQHJldHVybiB0cnVlIGlmIHN0YWdlcyBkYXRhIGlzIHNldCBzdWNjZXNzZnVsbHkKKyAgKi8KKyAgcHJvdGVjdGVkIGJvb2xlYW4gc2V0Q2FzZShjaGFyIGNhc2V0YWJsZVtdKQorICB7CisgICAgaWYgKGNhc2V0YWJsZSA9PSBudWxsIHx8IGNhc2V0YWJsZS5sZW5ndGggPT0gMCkgeworICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBtX2Nhc2VfID0gY2FzZXRhYmxlOworICAgIHJldHVybiB0cnVlOworICB9CisgIAorICAvKioKKyAgKiBTZXQgdGhlIGV4Y2VwdGlvbiBibG9jayBkYXRhLiAKKyAgKiBAcGFyYW0gZXhjZXB0aW9uIGFycmF5IGNvbnRhaW5pbmcgZXh0cmEgY2hhcmFjdGVyIHByb3BlcnRpZXMgbm90IGZvdW5kIGluCisgICogICAgICAgIHByb3BlcnR5IGFycmF5CisgICogQHJldHVybiB0cnVlIGlmIHN0YWdlcyBkYXRhIGlzIHNldCBzdWNjZXNzZnVsbHkKKyAgKi8KKyAgcHJvdGVjdGVkIGJvb2xlYW4gc2V0RXhjZXB0aW9uKGludCBleGNlcHRpb25bXSkKKyAgeworICAgIGlmIChleGNlcHRpb24gPT0gbnVsbCB8fCBleGNlcHRpb24ubGVuZ3RoIDw9IDApIHsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgbV9leGNlcHRpb25fID0gZXhjZXB0aW9uOworICAgIHJldHVybiB0cnVlOworICB9CisgIAorICAvKioKKyAgKiBHZXRzIHRoZSBwcm9wZXJ0eSB2YWx1ZSBhdCB0aGUgaW5kZXgKKyAgKiBAcGFyYW0gY2ggY29kZSBwb2ludCB3aG9zZSBwcm9wZXJ0eSB2YWx1ZSBpcyB0byBiZSByZXRyaWV2ZWQKKyAgKiBAcmV0dXJuIHByb3BlcnR5IHZhbHVlIG9mIGNvZGUgcG9pbnQKKyAgKi8KKyAgcHJvdGVjdGVkIGludCBnZXRQcm9wZXJ0eShpbnQgY2gpCisgIHsKKyAgICAvLyBpbmRleCBvZiB0aGUgZmlyc3QgYWNjZXNzIHRvIHRoZSBkYXRhYmFzZSAKKyAgICBpbnQgaW5kZXgxID0gY2ggPj4gbV9zdGFnZTFzaGlmdF87CisgICAgLy8gaW5kZXggb2YgdGhlIHNlY29uZCBhY2Nlc3MgdG8gdGhlIGRhdGFiYXNlCisgICAgaW50IGluZGV4MiA9IG1fc3RhZ2VzX1tpbmRleDFdICsgCisgICAgICAgICAgICAgICAgICgoY2ggPj4gbV9zdGFnZTJzaGlmdF8pICYgbV9zdGFnZTJtYXNrYWZ0ZXJzaGlmdF8pOworICAgIC8vIGluZGV4IG9mIHRoZSB0aGlyZCBhY2Nlc3MgdG8gdGhlIGRhdGFiYXNlCisgICAgaW50IGluZGV4MyA9IG1fc3RhZ2VzX1tpbmRleDJdICsgKGNoICYgbV9zdGFnZTNtYXNrYWZ0ZXJzaGlmdF8pOworICAgIGludCBwcm9waW5kZXggPSBtX3N0YWdlc19baW5kZXgzXTsKKyAgICByZXR1cm4gbV9wcm9wZXJ0eV9bcHJvcGluZGV4XTsKKyAgfQorICAKKyAgLyoqCisgICogR2V0cyB0aGUgdXBwZXIgY2FzZSB2YWx1ZSBhdCB0aGUgaW5kZXgKKyAgKiBAcGFyYW0gaW5kZXggb2YgdGhlIGNhc2UgdmFsdWUgdG8gYmUgcmV0cmlldmVkCisgICogQHBhcmFtIGJ1ZmZlciBzdHJpbmcgYnVmZmVyIHRvIGFkZCByZXN1bHQgdG8KKyAgKi8KKyAgcHJvdGVjdGVkIHZvaWQgZ2V0VXBwZXJDYXNlKGludCBpbmRleCwgU3RyaW5nQnVmZmVyIGJ1ZmZlcikKKyAgeworICAgIGludCBjb3VudCA9IG1fY2FzZV9baW5kZXhdOworICAgIC8vIGxhc3QgNSBiaXRzIG9mIHRoZSBmaXJzdCBjaGFyIGluIG1fY2FzZV8gZ2l2ZXMgdGhlIHBvc2l0aW9uIG9mIHRoZSAKKyAgICAvLyBhbHRlcm5hdGUgdXBwZXJjYXNlIGNoYXJhY3RlcnMKKyAgICBpbmRleCArPSAoY291bnQgJiBMQVNUXzVfQklUX01BU0tfKSArIDE7CisgICAgY291bnQgPSAoY291bnQgPj4gU0hJRlRfNV8pICYgTEFTVF81X0JJVF9NQVNLXzsKKyAgICAgICAgICAgIAorICAgIGZvciAoaW50IGogPSAwOyBqIDwgY291bnQ7IGogKyspIHsKKyAgICAgIGJ1ZmZlci5hcHBlbmQobV9jYXNlX1tpbmRleCArIGpdKTsKKyAgICB9CisgIH0KKyAgCisgIC8qKgorICAqIEdldHMgdGhlIGxvd2VyIGNhc2UgdmFsdWUgYXQgdGhlIGluZGV4CisgICogQHBhcmFtIGluZGV4IG9mIHRoZSBjYXNlIHZhbHVlIHRvIGJlIHJldHJpZXZlZAorICAqIEBwYXJhbSBidWZmZXIgc3RyaW5nIGJ1ZmZlciB0byBhZGQgcmVzdWx0IHRvCisgICovCisgIHByb3RlY3RlZCB2b2lkIGdldExvd2VyQ2FzZShpbnQgaW5kZXgsIFN0cmluZ0J1ZmZlciBidWZmZXIpCisgIHsKKyAgICBpbnQgY291bnQgPSBtX2Nhc2VfW2luZGV4XSAmIExBU1RfNV9CSVRfTUFTS187CisgICAgLy8gbGFzdCA1IGJpdHMgb2YgdGhlIGZpcnN0IGNoYXIgaW4gbV9jYXNlXyBnaXZlcyB0aGUgc2l6ZSBvZiB0aGUgCisgICAgLy8gbG93ZXJjYXNlIGNoYXJhY3RlcnMKKyAgICBpbmRleCArKzsKKyAgICBmb3IgKGludCBqID0gMDsgaiA8IGNvdW50OyBqICsrKSB7CisgICAgICBidWZmZXIuYXBwZW5kKG1fY2FzZV9baW5kZXggKyBqXSk7CisgICAgfQorICB9CisgIAorICAvKioKKyAgKiBEZXRlcm1pbmVzIGlmIHRoZSBleGNlcHRpb24gdmFsdWUgcGFzc2VkIGluIGhhcyB0aGUga2luZCBvZiBpbmZvcm1hdGlvbgorICAqIHdoaWNoIHRoZSBpbmRpY2F0b3Igd2FudHMsIGUuZyBpZiB0aGUgZXhjZXB0aW9uIHZhbHVlIGNvbnRhaW5zIHRoZSBkaWdpdAorICAqIHZhbHVlIG9mIHRoZSBjaGFyYWN0ZXIKKyAgKiBAcGFyYW0gaW5kZXggZXhjZXB0aW9uIGluZGV4CisgICogQHBhcmFtIGluZGljYXRvciB0eXBlIGluZGljYXRvcgorICAqIEByZXR1cm4gdHJ1ZSBpZiB0eXBlIHZhbHVlIGV4aXN0CisgICovCisgIHByb3RlY3RlZCBib29sZWFuIGhhc0V4Y2VwdGlvblZhbHVlKGludCBpbmRleCwgaW50IGluZGljYXRvcikgCisgIHsKKyAgICByZXR1cm4gKG1fZXhjZXB0aW9uX1tpbmRleF0gJiAoMSA8PCBpbmRpY2F0b3IpKSAhPSAwOworICB9CisgIAorICAvKioKKyAgKiBHZXRzIHRoZSBleGNlcHRpb24gdmFsdWUgYXQgdGhlIGluZGV4LCBhc3N1bWluZyB0aGF0IGRhdGEgdHlwZSBpcyAKKyAgKiBhdmFpbGFibGUuIFJlc3VsdCBpcyB1bmRlZmluZWQgaWYgZGF0YSBpcyBub3QgYXZhaWxhYmxlLiBVc2UgCisgICogaGFzRXhjZXB0aW9uVmFsdWUoKSB0byBkZXRlcm1pbmUgZGF0YSdzIGF2YWlsYWJpbGl0eS4KKyAgKiBAcGFyYW0gaW5kZXggCisgICogQHBhcmFtIGV4Y2VwdGlvbiBkYXRhIHR5cGUKKyAgKiBAcmV0dXJuIGV4Y2VwdGlvbiBkYXRhIHR5cGUgdmFsdWUgYXQgaW5kZXgKKyAgKi8KKyAgcHJvdGVjdGVkIGludCBnZXRFeGNlcHRpb24oaW50IGluZGV4LCBpbnQgZXR5cGUpCisgIHsKKyAgICAvLyBjb250YWluZWQgaW4gZXhjZXB0aW9uIGRhdGEKKyAgICBpbnQgZXZhbHVlID0gbV9leGNlcHRpb25fW2luZGV4XTsKKyAgICAKKyAgICBzd2l0Y2ggKGV0eXBlKQorICAgIHsKKyAgICAgIGNhc2UgRVhDX0NPTUJJTklOR19DTEFTU18gOgorICAgICAgICByZXR1cm4gZXZhbHVlOworICAgICAgZGVmYXVsdCA6CisgICAgICAgIGluZGV4ICsrOworICAgICAgICAvLyBjb250YWluZWQgaW4gdGhlIGV4Y2VwdGlvbiBkaWdpdCBhZGRyZXNzCisgICAgICAgIGluZGV4ID0gYWRkRXhjZXB0aW9uT2Zmc2V0KGV2YWx1ZSwgZXR5cGUsIGluZGV4KTsKKyAgICB9CisgICAgcmV0dXJuIG1fZXhjZXB0aW9uX1tpbmRleF07CisgIH0KKyAgCisgIC8qKgorICAqIFJldHVybnMgYSB2YWx1ZSBpbmRpY2F0aW5nIGEgY2hhcmFjdGVyIGNhdGVnb3J5IGZyb20gdGhlIGFyZ3VtZW50IHByb3BlcnR5CisgICogdmFsdWUKKyAgKiBAcGFyYW0gdW5pY29kZSBjaGFyYWN0ZXIgcHJvcGVydHkKKyAgKiBAcmV0dXJuIGNhdGVnb3J5CisgICovCisgIHByb3RlY3RlZCBzdGF0aWMgaW50IGdldFByb3BUeXBlKGludCBwcm9wKQorICB7CisgICAgLy8gU2luY2UgY2hhcmFjdGVyIGluZm9ybWF0aW9uIGRhdGEgYXJlIHBhY2tlZCB0b2dldGhlci4KKwkgIC8vIFRoaXMgaXMgdGhlIGNhdGVnb3J5IG1hc2sgZm9yIGdldHRpbmcgdGhlIGNhdGVnb3J5IGluZm9ybWF0aW9uCisgICAgaW50IHJlc3VsdCA9IHByb3AgJiBMQVNUXzVfQklUX01BU0tfOworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKyAgCisgIC8qKgorICAqIERldGVybWluZXMgaWYgdGhlIGFyZ3VtZW50IHByb3BzIGluZGljYXRlcyB0aGF0IHRoZSBleGNlcHRpb24gYmxvY2sgaGFzIAorICAqIHRvIGJlIGFjY2Vzc2VkIGZvciBkYXRhCisgICogQHBhcmFtIHByb3BzIHByb3BlcnR5IHZhbHVlCisgICogQHJldHVybiB0cnVlIGlmIHRoaXMgaXMgYW4gZXhjZXB0aW9uIGluZGljYXRvciBmYWxzZSBvdGhlcndpc2UKKyAgKi8KKyAgcHJvdGVjdGVkIHN0YXRpYyBib29sZWFuIGlzRXhjZXB0aW9uSW5kaWNhdG9yKGludCBwcm9wcykKKyAgeworICAgIGlmICgocHJvcHMgJiBFWENFUFRJT05fTUFTS18pICE9IDApIHsKKyAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7CisgIH0KKyAgCisgIC8qKgorICAqIEdldHRpbmcgdGhlIGV4Y2VwdGlvbiBpbmRleCBmb3IgYXJndW1lbnQgcHJvcGVydHkKKyAgKiBAcGFyYW0gcHJvcCBjaGFyYWN0ZXIgcHJvcGVydHkgCisgICovCisgIHByb3RlY3RlZCBzdGF0aWMgaW50IGdldEV4Y2VwdGlvbkluZGV4KGludCBwcm9wKQorICB7CisgICAgcmV0dXJuIChwcm9wID4+IFZBTFVFX1NISUZUXykgJiBVTlNJR05FRF9WQUxVRV9NQVNLX0FGVEVSX1NISUZUXzsKKyAgfQorICAKKyAgLyoqCisgICogR2V0dGluZyB0aGUgc2lnbmVkIG51bWVyaWMgdmFsdWUgb2YgYSBjaGFyYWN0ZXIgZW1iZWRkZWQgaW4gdGhlIHByb3BlcnR5CisgICogYXJndW1lbnQKKyAgKiBAcGFyYW0gcHJvcCB0aGUgY2hhcmFjdGVyCisgICogQHJldHVybiBzaWduZWQgbnVtYmVyaWMgdmFsdWUKKyAgKi8KKyAgcHJvdGVjdGVkIHN0YXRpYyBpbnQgZ2V0U2lnbmVkVmFsdWUoaW50IHByb3ApCisgIHsKKyAgICByZXR1cm4gKHByb3AgPj4gVkFMVUVfU0hJRlRfKTsKKyAgfQorICAKKyAgLyoqCisgICogR2V0dGluZyB0aGUgdW5zaWduZWQgbnVtZXJpYyB2YWx1ZSBvZiBhIGNoYXJhY3RlciBlbWJlZGRlZCBpbiB0aGUgcHJvcGVydHkKKyAgKiBhcmd1bWVudAorICAqIEBwYXJhbSBwcm9wIHRoZSBjaGFyYWN0ZXIKKyAgKiBAcmV0dXJuIHVuc2lnbmVkIG51bWJlcmljIHZhbHVlCisgICovCisgIHByb3RlY3RlZCBzdGF0aWMgaW50IGdldFVuc2lnbmVkVmFsdWUoaW50IHByb3ApCisgIHsKKyAgICByZXR1cm4gKHByb3AgPj4gVkFMVUVfU0hJRlRfKSAmIFVOU0lHTkVEX1ZBTFVFX01BU0tfQUZURVJfU0hJRlRfOworICB9CisgIAorICAvKioKKyAgKiBDaGVja2luZyBpZiBwcm9wZXJ0eSBpbmRpY2F0ZXMgbWlycm9yIGVsZW1lbnQKKyAgKiBAcGFyYW0gcHJvcCBwcm9wZXJ0eSB2YWx1ZQorICAqIEByZXR1cm4gdHJ1ZSBpZiBtaXJyb3IgaW5kaWNhdG9yIGlzIHNldCwgZmFsc2Ugb3RoZXJ3aXNlCisgICovCisgIHByb3RlY3RlZCBzdGF0aWMgYm9vbGVhbiBpc01pcnJvcmVkKGludCBwcm9wKQorICB7CisgICAgcmV0dXJuIChwcm9wICYgTUlSUk9SX01BU0tfKSAhPSAwOworICB9CisgIAorICAvKioKKyAgKiBHZXR0aW5nIHRoZSBkaXJlY3Rpb24gZGF0YSBpbiB0aGUgcHJvcGVydHkgdmFsdWUKKyAgKiBAcGFyYW0gcHJvcCBwcm9wZXJ0eSB2YWx1ZQorICAqIEByZXR1cm4gZGlyZWN0aW9uIHZhbHVlIGluIHByb3BlcnR5CisgICovCisgIHByb3RlY3RlZCBzdGF0aWMgaW50IGdldERpcmVjdGlvbihpbnQgcHJvcCkKKyAgeworICAgIHJldHVybiAocHJvcCA+PiBCSURJX1NISUZUXykgJiBCSURJX01BU0tfQUZURVJfU0hJRlRfOworICB9CisgIAorICAvLyBwcml2YXRlIG1ldGhvZHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIEdldHRpbmcgdGhlIGNvcnJlY3QgYWRkcmVzcyBmb3IgZGF0YSBpbiB0aGUgZXhjZXB0aW9uIHZhbHVlCisgICogQHBhcmFtIGV2YWx1ZSBleGNlcHRpb24gdmFsdWUKKyAgKiBAcGFyYW0gaW5kaWNhdG9yIHR5cGUgb2YgZGF0YSB0byByZXRyaWV2ZQorICAqIEBwYXJhbSBhZGRyZXNzIGN1cnJlbnQgYWRkcmVzcyB0byBtb3ZlIGZyb20KKyAgKiBAcmV0dXJuIHRoZSBjb3JyZWN0IGFkZHJlc3MKKyAgKi8KKyAgcHJpdmF0ZSBpbnQgYWRkRXhjZXB0aW9uT2Zmc2V0KGludCBldmFsdWUsIGludCBpbmRpY2F0b3IsIGludCBhZGRyZXNzKSAKKyAgeyAKKyAgICBpbnQgcmVzdWx0ID0gYWRkcmVzczsKKyAgICBpZiAoaW5kaWNhdG9yID49IEVYQ19HUk9VUF8pIHsKKyAgICAgIHJlc3VsdCArPSAoRkxBR1NfT0ZGU0VUX1tldmFsdWUgJiBFWENfR1JPVVBfTUFTS19dIDw8IDEpOyAKKyAgICB9CisgICAgICAvLyBldmFsdWUgPj49IEVYQ19HUk9VUF87IAorICAgICAgLy8gaW5kaWNhdG9yIC09IEVYQ19HUk9VUF87IAorICAgIGVsc2UgCisgICAgeworICAgICAgaW50IG1hc2sgPSAoMSA8PCBpbmRpY2F0b3IpIC0gMTsKKyAgICAgIHJlc3VsdCArPSBGTEFHU19PRkZTRVRfW2V2YWx1ZSAmIG1hc2tdOyAKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9VQ2hhcmFjdGVyVXRpbC5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9VQ2hhcmFjdGVyVXRpbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjk1N2QyNTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L1VDaGFyYWN0ZXJVdGlsLmphdmEKQEAgLTAsMCArMSwyNzEgQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L0F0dGljL1VDaGFyYWN0ZXJVdGlsLmphdmEsdiAkIAorKiAkRGF0ZTogMjAwMS8wMy8yMyAxOTo1MTozOCAkIAorKiAkUmV2aXNpb246IDEuMyAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLnRleHQ7CisKKy8qKgorKiBJbnRlcm5hbCBjaGFyYWN0ZXIgdXRpbGl0eSBjbGFzcyBmb3Igc2ltcGxlIGRhdGEgdHlwZSBjb252ZXJzaW9uIGFuZCBTdHJpbmcgCisqIHBhcnNpbmcgZnVuY3Rpb25zLiBEb2VzIG5vdCBoYXZlIGFuIGFuYWxvZyBpbiB0aGUgSkRLLgorKiBAYXV0aG9yIFN5biBXZWUgUXVlaworKiBAc2luY2Ugc2VwMjkwMAorKi8KKworZmluYWwgY2xhc3MgVUNoYXJhY3RlclV0aWwKK3sKKyAgLy8gY29uc3RydWN0b3IgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIHByaXZhdGUgY29uc3RydWN0b3IgdG8gYXZvaWQgaW5pdGlhbGlzYXRpb24KKyAgKi8KKyAgcHJpdmF0ZSBVQ2hhcmFjdGVyVXRpbCgpCisgIHsKKyAgfQorICAKKyAgLy8gcHJvdGVjdGVkIG1ldGhvZHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIGpvaW5pbmcgMiBjaGFycyB0byBmb3JtIGFuIGludAorICAqIEBwYXJhbSBtc2MgbW9zdCBzaWduaWZpY2FudCBjaGFyCisgICogQHBhcmFtIGxzYyBsZWFzdCBzaWduaWZpY2FudCBjaGFyCisgICogQHJldHVybiBpbnQgZm9ybQorICAqLworICBwcm90ZWN0ZWQgc3RhdGljIGludCB0b0ludChjaGFyIG1zYywgY2hhciBsc2MpCisgIHsKKyAgICByZXR1cm4gKChtc2MgPDwgMTYpIHwgbHNjKTsKKyAgfQorICAgCisgIC8qKgorICAqIGNvbnZlcnRpbmcgZmlyc3QgMiBieXRlcyBvZiBhIGJ5dGUgYXJyYXkgaW50byBjaGFyCisgICogaWYgYXJyYXkgc2l6ZSBpcyA8IDIgdGhlbiBhbGdvcml0aG1uIHdpbGwgb25seSByZXR1cm4gdmFsdWUgPT0gMSBieXRlCisgICogQHBhcmFtIGJ5dGVzIDIgYnl0ZSBhcmd1bWVudAorICAqIEByZXR1cm4gY2hhciBmb3JtCisgICovCisgIHByb3RlY3RlZCBzdGF0aWMgY2hhciB0b0NoYXIoYnl0ZSBieXRlc1tdKQorICB7CisgICAgaWYgKGJ5dGVzID09IG51bGwgfHwgYnl0ZXMubGVuZ3RoID09IDApIHsKKyAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoYnl0ZXMubGVuZ3RoID09IDEpIHsKKyAgICAgIHJldHVybiB0b0NoYXIoYnl0ZXNbMF0pOworICAgIH0KKyAgICAgIAorICAgIGNoYXIgZmlyc3RieXRlID0gKGNoYXIpKHRvQ2hhcihieXRlc1swXSkgPDwgOCk7CisgICAgY2hhciBzZWNvbmRieXRlID0gdG9DaGFyKGJ5dGVzWzFdKTsKKyAgICAKKyAgICByZXR1cm4gKGNoYXIpKGZpcnN0Ynl0ZSB8IHNlY29uZGJ5dGUpOworICB9CisgICAKKyAgLyoqCisgICogY29udmVydGluZyAyIGJ5dGVzIGludG8gYSBjaGFyCisgICogQHBhcmFtIG1zYiB0aGUgbW9zdCBzaWduaWZpY2FudCBieXRlCisgICogQHBhcmFtIGxzYiB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZQorICAqIEByZXR1cm4gY2hhciBmb3JtCisgICovCisgIHByb3RlY3RlZCBzdGF0aWMgY2hhciB0b0NoYXIoYnl0ZSBtc2IsIGJ5dGUgbHNiKQorICB7CisgICAgY2hhciBmaXJzdGJ5dGUgPSAoY2hhcikodG9DaGFyKG1zYikgPDwgOCk7CisgICAgY2hhciBzZWNvbmRieXRlID0gdG9DaGFyKGxzYik7CisgICAgCisgICAgcmV0dXJuIChjaGFyKShmaXJzdGJ5dGUgfCBzZWNvbmRieXRlKTsKKyAgfQorICAKKyAgLyoqCisgICogY29udmVydGluZyBmaXJzdCA0IGJ5dGVzIG9mIGEgYnl0ZSBhcnJheSBpbnRvIGludAorICAqIGlmIGFycmF5IHNpemUgaXMgPCA0IHRoZW4gYWxnb3JpdGhtbiB3aWxsIG9ubHkgcmV0dXJuIHZhbHVlID09ICMgYnl0ZXMKKyAgKiBAcGFyYW0gYnl0ZXMgNCBieXRlIGFyZ3VtZW50CisgICogQHJldHVybiBpbnQgZm9ybQorICAqLworICBwcm90ZWN0ZWQgc3RhdGljIGludCB0b0ludChieXRlIGJ5dGVzW10pCisgIHsKKyAgICBpZiAoYnl0ZXMgPT0gbnVsbCB8fCBieXRlcy5sZW5ndGggPT0gMCkKKyAgICAgIHJldHVybiAwOworICAgIGludCBzaXplID0gYnl0ZXMubGVuZ3RoOworICAgIGlmIChzaXplID4gNCkKKyAgICAgIHNpemUgPSA0OworICAgIGludCByZXN1bHQgPSAwOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykKKyAgICAgIHJlc3VsdCA9IChyZXN1bHQgPDwgOCkgfCAoMHgwMDAwMDBGRiAmIGJ5dGVzW2ldKTsKKyAgICByZXR1cm4gcmVzdWx0OworICB9CisgICAKKyAgLyoqCisgICogY29udmVydGluZyBhIGJ5dGUgaW50byBjaGFyCisgICogQHBhcmFtIG9uZWJ5dGUgCisgICogQHJldHVybiBjaGFyIGZvcm0KKyAgKi8KKyAgcHJvdGVjdGVkIHN0YXRpYyBjaGFyIHRvQ2hhcihieXRlIG9uZWJ5dGUpCisgIHsKKyAgICBjaGFyIHJlc3VsdCA9IChjaGFyKShvbmVieXRlICYgMHgwMDAwMDBmZik7CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorICAgCisgIC8qKgorICAqIGNvbnZlcnRpbmcgYSBpbnRlZ2VyIHRvIGEgYXJyYXkgb2YgNCBjaGFyYWN0ZXJzIHdoZXJlIGVhY2ggY2hhcmFjdGVyCisgICogY29ycmVzcG9uZHMgdG8gaXRzIHJlc3BlY3RpdmUgYnl0ZSAKKyAgKiBAcGFyYW0gaSBpbnRlZ2VyIHRvIGJlIGNvbnZlcnRlZAorICAqIEByZXR1cm4gYXJyYXkgb2YgNCBjaGFyYWN0ZXJzCisgICovCisgIHByb3RlY3RlZCBzdGF0aWMgY2hhcltdIHRvNENoYXIoaW50IGkpCisgIHsKKyAgICBjaGFyIHJlc3VsdFtdID0gbmV3IGNoYXJbNF07CisgICAgcmVzdWx0WzBdID0gKGNoYXIpKChpID4+IDI0KSAmIDB4RkYpOworICAgIHJlc3VsdFsxXSA9IChjaGFyKSgoaSAmIDB4MDBGRjAwMDApID4+IDE2KTsKKyAgICByZXN1bHRbMl0gPSAoY2hhcikoKGkgJiAweDAwMDBGRjAwKSA+PiA4KTsKKyAgICByZXN1bHRbM10gPSAoY2hhcikoaSAmIDB4RkYpOworICAgIHJldHVybiByZXN1bHQ7CisgIH0KKyAgIAorICAvKioKKyAgKiBSZXRyaWV2ZXMgYSBudWxsIHRlcm1pbmF0ZWQgc3Vic3RyaW5nIGZyb20gYW4gYXJyYXkgb2YgYnl0ZXMuCisgICogU3Vic3RyaW5nIGlzIGEgc2V0IG9mIG5vbi16ZXJvIGJ5dGVzIHN0YXJ0aW5nIGZyb20gYXJndW1lbnQgc3RhcnQgdG8gdGhlIAorICAqIG5leHQgemVybyBieXRlLiBJZiB0aGUgZmlyc3QgYnl0ZSBpcyBhIHplcm8sIHRoZSBuZXh0IGJ5dGUgd2lsbCBiZSB0YWtlbiBhcworICAqIHRoZSBmaXJzdCBieXRlLgorICAqIEBwYXJhbSBzdHIgc3RyaW5nYnVmZmVyIHRvIHN0b3JlIGRhdGEgaW4sIGRhdGEgd2lsbCBiZSBzdG9yZSB3aXRoIGVhY2gKKyAgKiAgICAgICAgICAgIGJ5dGUgYXMgYSBjaGFyCisgICogQHBhcmFtIGFycmF5IGJ5dGUgYXJyYXkKKyAgKiBAcGFyYW0gaW5kZXggdG8gc3RhcnQgc3Vic3RyaW5nIGluIGJ5dGUgY291bnQKKyAgKiBAcmV0dXJuIHRoZSBlbmQgcG9zaXRpb24gb2YgdGhlIHN1YnN0cmluZyB3aXRoaW4gdGhlIGNoYXJhY3RlciBhcnJheQorICAqLworICBwcm90ZWN0ZWQgc3RhdGljIGludCBnZXROdWxsVGVybUJ5dGVTdWJTdHJpbmcoU3RyaW5nQnVmZmVyIHN0ciwgYnl0ZVtdIGFycmF5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCkKKyAgeworICAgIGJ5dGUgYiA9IDE7CisgICAgCisgICAgd2hpbGUgKGIgIT0gMCkKKyAgICB7CisgICAgICBiID0gYXJyYXlbaW5kZXhdOworICAgICAgaWYgKGIgIT0gMCkgeworICAgICAgICBzdHIuYXBwZW5kKChjaGFyKShiICYgMHgwMEZGKSk7CisgICAgICB9CisgICAgICBpbmRleCArKzsKKyAgICB9CisgICAgcmV0dXJuIGluZGV4OworICB9CisgICAKKyAgLyoqCisgICogQ29tcGFyZXMgYSBudWxsIHRlcm1pbmF0ZWQgc3Vic3RyaW5nIGZyb20gYW4gYXJyYXkgb2YgYnl0ZXMuCisgICogU3Vic3RyaW5nIGlzIGEgc2V0IG9mIG5vbi16ZXJvIGJ5dGVzIHN0YXJ0aW5nIGZyb20gYXJndW1lbnQgc3RhcnQgdG8gdGhlIAorICAqIG5leHQgemVybyBieXRlLiBpZiB0aGUgZmlyc3QgYnl0ZSBpcyBhIHplcm8sIHRoZSBuZXh0IGJ5dGUgd2lsbCBiZSB0YWtlbiBhcworICAqIHRoZSBmaXJzdCBieXRlLgorICAqIEBwYXJhbSBzdHIgc3RyaW5nIHRvIGNvbXBhcmUKKyAgKiBAcGFyYW0gYXJyYXkgYnl0ZSBhcnJheQorICAqIEBwYXJhbSBzdHJpbmRleCBpbmRleCB3aXRoaW4gc3RyIHRvIHN0YXJ0IGNvbXBhcmluZworICAqIEBwYXJhbSBhaW5kZXggYXJyYXkgaW5kZXggdG8gc3RhcnQgaW4gYnl0ZSBjb3VudAorICAqIEByZXR1cm4gdGhlIGVuZCBwb3NpdGlvbiBvZiB0aGUgc3Vic3RyaW5nIHdpdGhpbiBzdHIgaWYgbWF0Y2hlcyBvdGhlcndpc2UgCisgICogICAgICAgICBhIC0xCisgICovCisgIHByb3RlY3RlZCBzdGF0aWMgaW50IGNvbXBhcmVOdWxsVGVybUJ5dGVTdWJTdHJpbmcoU3RyaW5nIHN0ciwgYnl0ZVtdIGFycmF5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RyaW5kZXgsIGludCBhaW5kZXgpCisgIHsKKyAgICBieXRlIGIgPSAxOworICAgIGludCBsZW5ndGggPSBzdHIubGVuZ3RoKCk7CisgICAgCisgICAgd2hpbGUgKGIgIT0gMCkKKyAgICB7CisgICAgICBiID0gYXJyYXlbYWluZGV4XTsgIAorICAgICAgYWluZGV4ICsrOworICAgICAgaWYgKGIgPT0gMCkgeworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIC8vIGlmIHdlIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcgYW5kIHlldCB0aGUgYXJyYXkgaGFzIG5vdCAKKyAgICAgIC8vIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGVpciBzdWJzdHJpbmcgeWV0LCBhYm9ydAorICAgICAgaWYgKHN0cmluZGV4ID09IGxlbmd0aCB8fCAoc3RyLmNoYXJBdChzdHJpbmRleCkgIT0gKGNoYXIpKGIgJiAweEZGKSkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgICAgfQorICAgICAgc3RyaW5kZXggKys7CisgICAgfQorICAgIHJldHVybiBzdHJpbmRleDsKKyAgfQorICAgCisgIC8qKgorICAqIFNraXAgbnVsbCB0ZXJtaW5hdGVkIHN1YnN0cmluZ3MgZnJvbSBhbiBhcnJheSBvZiBieXRlcy4KKyAgKiBTdWJzdHJpbmcgaXMgYSBzZXQgb2Ygbm9uLXplcm8gYnl0ZXMgc3RhcnRpbmcgZnJvbSBhcmd1bWVudCBzdGFydCB0byB0aGUgCisgICogbmV4dCB6ZXJvIGJ5dGUuIElmIHRoZSBmaXJzdCBieXRlIGlzIGEgemVybywgdGhlIG5leHQgYnl0ZSB3aWxsIGJlIHRha2VuIGFzCisgICogdGhlIGZpcnN0IGJ5dGUuCisgICogQHBhcmFtIGFycmF5IGJ5dGUgYXJyYXkKKyAgKiBAcGFyYW0gaW5kZXggdG8gc3RhcnQgc3Vic3RyaW5ncyBpbiBieXRlIGNvdW50CisgICogQHBhcmFtIHNraXBjb3VudCBudW1iZXIgb2YgbnVsbCB0ZXJtaW5hdGVkIHN1YnN0cmluZ3MgdG8gc2tpcAorICAqIEByZXR1cm4gdGhlIGVuZCBwb3NpdGlvbiBvZiB0aGUgc3Vic3RyaW5ncyB3aXRoaW4gdGhlIGNoYXJhY3RlciBhcnJheQorICAqLworICBwcm90ZWN0ZWQgc3RhdGljIGludCBza2lwTnVsbFRlcm1CeXRlU3ViU3RyaW5nKGJ5dGVbXSBhcnJheSwgaW50IGluZGV4LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2tpcGNvdW50KQorICB7CisgICAgYnl0ZSBiOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2tpcGNvdW50OyBpICsrKQorICAgIHsKKyAgICAgIGIgPSAxOworICAgICAgd2hpbGUgKGIgIT0gMCkKKyAgICAgIHsKKyAgICAgICAgYiA9IGFycmF5W2luZGV4XTsKKyAgICAgICAgaW5kZXggKys7CisgICAgICB9CisgICAgfQorICAgIHJldHVybiBpbmRleDsKKyAgfQorICAgCisgIC8qKgorICAqIHNraXAgc3Vic3RyaW5ncyBmcm9tIGFuIGFycmF5IG9mIGNoYXJhY3RlcnMsIHdoZXJlIGVhY2ggY2hhcmFjdGVyIGlzIGEgc2V0IAorICAqIG9mIDIgYnl0ZXMuIHN1YnN0cmluZyBpcyBhIHNldCBvZiBub24temVybyBieXRlcyBzdGFydGluZyBmcm9tIGFyZ3VtZW50IAorICAqIHN0YXJ0IHRvIHRoZSBieXRlIG9mIHRoZSBhcmd1bWVudCB2YWx1ZS4gc2tpcHMgdXAgdG8gYSBtYXggbnVtYmVyIG9mIAorICAqIGNoYXJhY3RlcnMKKyAgKiBAcGFyYW0gYXJyYXkgYnl0ZSBhcnJheSB0byBwYXJzZQorICAqIEBwYXJhbSBpbmRleCB0byBzdGFydCBzdWJzdHJpbmdzIGluIGJ5dGUgY291bnQKKyAgKiBAcGFyYW0gbGVuZ3RoIHRoZSBtYXggbnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAKKyAgKiBAcGFyYW0gc2tpcGVuZCB2YWx1ZSBvZiBieXRlIHRvIHNraXAgdG8KKyAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgc2tpcHBlZAorICAqLworICBwcm90ZWN0ZWQgc3RhdGljIGludCBza2lwQnl0ZVN1YlN0cmluZyhieXRlW10gYXJyYXksIGludCBpbmRleCwgaW50IGxlbmd0aCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGUgc2tpcGVuZCkKKyAgeworICAgIGludCByZXN1bHQ7CisgICAgYnl0ZSBiOworICAgIAorICAgIGZvciAocmVzdWx0ID0gMDsgcmVzdWx0IDwgbGVuZ3RoOyByZXN1bHQgKyspCisgICAgeworICAgICAgYiA9IGFycmF5W2luZGV4ICsgcmVzdWx0XTsKKyAgICAgIGlmIChiID09IHNraXBlbmQpCisgICAgICB7CisgICAgICAgIHJlc3VsdCArKzsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7CisgIH0KKyAgIAorICAvKioKKyAgKiBza2lwIHN1YnN0cmluZ3MgZnJvbSBhbiBhcnJheSBvZiBjaGFyYWN0ZXJzLCB3aGVyZSBlYWNoIGNoYXJhY3RlciBpcyBhIHNldCAKKyAgKiBvZiAyIGJ5dGVzLiBzdWJzdHJpbmcgaXMgYSBzZXQgb2Ygbm9uLXplcm8gYnl0ZXMgc3RhcnRpbmcgZnJvbSBhcmd1bWVudCAKKyAgKiBzdGFydCB0byB0aGUgYnl0ZSBvZiB0aGUgYXJndW1lbnQgdmFsdWUuIAorICAqIEBwYXJhbSBhcnJheSBieXRlIGFycmF5IHRvIHBhcnNlCisgICogQHBhcmFtIGluZGV4IHRvIHN0YXJ0IHN1YnN0cmluZ3MgaW4gYnl0ZSBjb3VudAorICAqIEBwYXJhbSBza2lwZW5kIHZhbHVlIG9mIGJ5dGUgdG8gc2tpcCB0bworICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBza2lwcGVkCisgICovCisgIHByb3RlY3RlZCBzdGF0aWMgaW50IHNraXBCeXRlU3ViU3RyaW5nKGJ5dGVbXSBhcnJheSwgaW50IGluZGV4LCBieXRlIHNraXBlbmQpCisgIHsKKyAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICBieXRlIGI7CisgICAgCisgICAgd2hpbGUgKHRydWUpCisgICAgeworICAgICAgYiA9IGFycmF5W2luZGV4ICsgcmVzdWx0XTsKKyAgICAgIHJlc3VsdCArKzsKKyAgICAgIGlmIChiID09IHNraXBlbmQpIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7CisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9VR2VuTmFtZVJlYWRlci5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9VR2VuTmFtZVJlYWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmUxYWNmZTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L1VHZW5OYW1lUmVhZGVyLmphdmEKQEAgLTAsMCArMSwyODcgQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L0F0dGljL1VHZW5OYW1lUmVhZGVyLmphdmEsdiAkIAorKiAkRGF0ZTogMjAwMS8wMy8yMyAxOTo1MTozOCAkIAorKiAkUmV2aXNpb246IDEuMyAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworcGFja2FnZSBjb20uaWJtLnRleHQ7CisKK2ltcG9ydCBqYXZhLmlvLkRhdGFJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCisvKioKKyogSW50ZXJuYWwgcmVhZGVyIGNsYXNzIHJlYWRpbmcgYmluYXJ5IGRhdGEgZnJvbSB1bmFtZXMuZGF0IGNyZWF0ZWQgYnkgSUNVIAorKiBwcm9ncmFtcyBnZW5uYW1lcy4gCisqIEl0IGFycmFuZ2VzIHRoZSBoZWFkZXIgYW5kIGluZGV4IGRhdGEgYXBhcnQgaW50byBtZWFuaW5nZnVsIGRhdGEgYmVmb3JlIAorKiBwb3B1bGF0aW5nIDxhIGhyZWY9VUNoYXJhY3Rlck5hbWVEQi5odG1sPlVDaGFyYWN0ZXJOYW1lREI8L2E+LiBVR2VuTmFtZVJlYWRlcgorKiBkb2VzIG5vdCBoYXZlIG9yIHJlcXVpcmUgdGhlIGFiaWxpdHkgdG8gZGVjaXBoZXIgdGhlIHJlc3Qgb2YgdGhlIGRhdGEgaW4gCisqIHVuYW1lcy5kYXQgYW5kIGhlbmNlIHN0b3JlcyBpdCBhcyBhIGJsb2NrIG9mIGRhdGEgaW4gYW4gYXJyYXkgb2YgY2hhciBpbiAKKyogPGEgaHJlZj1VQ2hhcmFjdGVyTmFtZURCLmh0bWw+VUNoYXJhY3Rlck5hbWVEQjwvYT4uIFRoZSBhYmlsaXR5IHRvIGRlY2lwaGVyCisqIHRoZSBibG9jayBvZiBkYXRhIGxpZXMgaW4gPGEgaHJlZj1VQ2hhcmFjdGVyTmFtZS5odG1sPlVDaGFyYWN0ZXJOYW1lPC9hPi4KKyogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZvcm1hdCBvZiB1bmFtZXMuZGF0IHJlZmVyIHRvCisqIDxhIGhyZWY9b3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovaWN1NGpodG1sL2NvbS9pYm0vaWN1L3RleHQvcmVhZG1lLmh0bWw+CisqIFJlYWRNZTwvYT4uPGJyPgorKiB1bmFtZXMuZGF0IHdoaWNoIGlzIGluIGJpZy1lbmRpYW4gZm9ybWF0IGlzIGphcmVkIHRvZ2V0aGVyIHdpdGggdGhpcyBwYWNrYWdlLgorKiBAYXV0aG9yIFN5biBXZWUgUXVlaworKiBAc2luY2Ugb2N0MTAwMAorKi8KKworZmluYWwgY2xhc3MgVUdlbk5hbWVSZWFkZXIgZXh0ZW5kcyBVR2VuUmVhZGVyCit7CisgIC8vIHByaXZhdGUgdmFyaWFibGVzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIFNpemUgb2YgdGhlIGdyb3VwIGluZm9ybWF0aW9uIGJsb2NrIGluIG51bWJlciBvZiBjaGFyCisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUk9VUF9JTkZPX1NJWkVfID0gMzsKKworICAvKioKKyAgKiBJbmRleCBvZiB0aGUgb2Zmc2V0IGluZm9ybWF0aW9uCisgICovCisgIHByaXZhdGUgaW50IG1fdG9rZW5zdHJpbmdpbmRleF87CisgIHByaXZhdGUgaW50IG1fZ3JvdXBpbmRleF87CisgIHByaXZhdGUgaW50IG1fZ3JvdXBzdHJpbmdpbmRleF87CisgIHByaXZhdGUgaW50IG1fYWxnbmFtZXNpbmRleF87CisgIAorICAvKioKKyAgKiBTaXplIG9mIGFuIGFsZ29yaXRobWljIG5hbWUgaW5mb3JtYXRpb24gZ3JvdXAKKyAgKiBzdGFydCBjb2RlIHBvaW50IHNpemUgKyBlbmQgY29kZSBwb2ludCBzaXplICsgdHlwZSBzaXplICsgdmFyaWFudCBzaXplICsgCisgICogc2l6ZSBvZiBkYXRhIHNpemUKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEFMR19JTkZPX1NJWkVfID0gMTI7CisgIAorICAvKioKKyAgKiBGaWxlIGZvcm1hdCB2ZXJzaW9uIGFuZCBpZCB0aGF0IHRoaXMgY2xhc3MgdW5kZXJzdGFuZHMuCisgICogTm8gZ3VhcmFudGVlcyBhcmUgbWFkZSBpZiBhIG9sZGVyIHZlcnNpb24gaXMgdXNlZAorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIERBVEFfRk9STUFUX1ZFUlNJT05fW10gPSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGJ5dGUpMHgxLCAoYnl0ZSkweDAsIChieXRlKTB4MCwgKGJ5dGUpMHgwfTsKKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYnl0ZSBEQVRBX0ZPUk1BVF9JRF9bXSA9IHsoYnl0ZSkweDc1LCAoYnl0ZSkweDZFLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZSkweDYxLCAoYnl0ZSkweDZEfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLyoqCisgICogQ29ycnVwdGVkIGVycm9yIHN0cmluZworICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09SUlVQVEVEX0RBVEFfRVJST1JfID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRGF0YSBjb3JydXB0ZWQgaW4gY2hhcmFjdGVyIG5hbWUgZGF0YSBmaWxlIjsKKyAgCisgIC8vIGNvbnN0cnVjdG9yID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICAvKioKKyAgKiBDb25zdHJ1Y3RvcgorICAqLworICBwcm90ZWN0ZWQgVUdlbk5hbWVSZWFkZXIoKQorICB7CisgIH0KKyAgCisgIC8vIHByb3RlY3RlZCBtZXRob2RzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICAvKioKKyAgKiBSZWFkIGFuZCBicmVhayB1cCB0aGUgc3RyZWFtIG9mIGRhdGEgcGFzc2VkIGluIGFzIGFyZ3VtZW50cworICAqIGFuZCBmaWxscyB1cCBVQ2hhcmFjdGVyTmFtZURCLgorICAqIElmIHVuc3VjY2Vzc2Z1bCBmYWxzZSB3aWxsIGJlIHJldHVybmVkLgorICAqIEBwYXJhbSBpbnB1dCBkYXRhIGlucHV0IHN0cmVhbQorICAqIEBwYXJhbSBkYXRhIGluc3RhbmNlIG9mIGRhdGFibG9jaworICAqIEBleGNlcHRpb24gdGhyb3duIHdoZW4gdGhlcmUncyBhIGRhdGEgZXJyb3IuCisgICovCisgIHByb3RlY3RlZCB2b2lkIHJlYWQoRGF0YUlucHV0U3RyZWFtIGlucHV0LCBVQ2hhcmFjdGVyTmFtZURCIGRhdGEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24KKyAgeworICAgIGlmICghKHN1cGVyLnJlYWQoaW5wdXQsIGRhdGEpICYmIHJlYWRJbmRleChpbnB1dCkgJiYgCisgICAgICAgICAgcmVhZFRva2VuKGlucHV0LCBkYXRhKSAmJiByZWFkR3JvdXAoaW5wdXQsIGRhdGEpICYmIAorICAgICAgICAgIHJlYWRBbGcoaW5wdXQsIGRhdGEpKSkgeworICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKENPUlJVUFRFRF9EQVRBX0VSUk9SXyk7CisgICAgfQorICB9CisgIAorICAvKioKKyAgKiBDaGVja2luZyB0aGUgZmlsZSBmb3IgdGhlIGNvcnJlY3QgZm9ybWF0CisgICogQHBhcmFtIGRhdGFmb3JtYXRpZAorICAqIEBwYXJhbSBkYXRhZm9ybWF0dmVyc2lvbgorICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZmlsZSBmb3JtYXQgdmVyc2lvbiBpcyBjb3JyZWN0CisgICovCisgIHByb3RlY3RlZCBib29sZWFuIGF1dGhlbnRpY2F0ZShieXRlIGRhdGFmb3JtYXRpZFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZSBkYXRhZm9ybWF0dmVyc2lvbltdKQorICB7CisgICAgaW50IHNpemUgPSBEQVRBX0ZPUk1BVF9JRF8ubGVuZ3RoOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgeworICAgICAgaWYgKERBVEFfRk9STUFUX0lEX1tpXSAhPSBkYXRhZm9ybWF0aWRbaV0pIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgIH0KKyAgICBzaXplID0gREFUQV9GT1JNQVRfVkVSU0lPTl8ubGVuZ3RoOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgeworICAgICAgaWYgKERBVEFfRk9STUFUX1ZFUlNJT05fW2ldICE9IGRhdGFmb3JtYXR2ZXJzaW9uW2ldKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHRydWU7CisgIH0KKyAgCisgIC8qKgorICAqIEdldHMgdGhlIHNpemUgb2YgdGhlIGZpbGUgaWQgdmVyc2lvbgorICAqIEByZXR1cm4gc2l6ZSBvZiBmaWxlIGZvcm1hdCB2ZXJzaW9uIGluIGJ5dGVzCisgICovCisgIHByb3RlY3RlZCBpbnQgZ2V0RmlsZUZvcm1hdElEU2l6ZSgpCisgIHsKKyAgICByZXR1cm4gREFUQV9GT1JNQVRfSURfLmxlbmd0aDsKKyAgfQorICAKKyAgLyoqCisgICogR2V0cyB0aGUgc2l6ZSBvZiB0aGUgZmlsZSBmb3JtYXQgdmVyc2lvbgorICAqIEByZXR1cm4gc2l6ZSBvZiBmaWxlIGZvcm1hdCB2ZXJzaW9uIGluIGJ5dGVzCisgICovCisgIHByb3RlY3RlZCBpbnQgZ2V0RmlsZUZvcm1hdFZlcnNpb25TaXplKCkKKyAgeworICAgIHJldHVybiBEQVRBX0ZPUk1BVF9WRVJTSU9OXy5sZW5ndGg7CisgIH0KKyAgIAorICAvLyBwcml2YXRlIG1ldGhvZHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIFJlYWQgdGhlIGluZGV4ZXMKKyAgKiBAcGFyYW0gaW5wdXQgZGF0YSBzdHJlYW0KKyAgKiBAcmV0dXJuIHRydWUgaWYgc3VjY2Vzc2Z1bGx5IHJlYWQKKyAgKiBAZXhjZXB0aW9uIHRocm93biB3aGVuIGRhdGEgcmVhZGluZyBmYWlscworICAqLworICBwcml2YXRlIGJvb2xlYW4gcmVhZEluZGV4KERhdGFJbnB1dFN0cmVhbSBpbnB1dCkgdGhyb3dzIElPRXhjZXB0aW9uCisgIHsKKyAgICBtX3Rva2Vuc3RyaW5naW5kZXhfID0gaW5wdXQucmVhZEludCgpOworICAgIG1fZ3JvdXBpbmRleF8gPSBpbnB1dC5yZWFkSW50KCk7CisgICAgbV9ncm91cHN0cmluZ2luZGV4XyA9IGlucHV0LnJlYWRJbnQoKTsKKyAgICBtX2FsZ25hbWVzaW5kZXhfID0gaW5wdXQucmVhZEludCgpOworICAgIHJldHVybiB0cnVlOworICB9CisgIAorICAvKioKKyAgKiBSZWFkIHRoZSB0b2tlbnMKKyAgKiBAcGFyYW0gaW5wdXQgZGF0YSBzdHJlYW0KKyAgKiBAcGFyYW0gZGF0YSBpbnN0YW5jZSBvZiBVQ2hhcmFjdGVyTmFtZSB0byBwb3B1bGF0ZQorICAqIEByZXR1cm4gdHJ1ZSBpZiBzdWNjZXNzZnVsbHkgcmVhZAorICAqIEBleGNlcHRpb24gdGhyb3duIHdoZW4gZGF0YSByZWFkaW5nIGZhaWxzCisgICovCisgIHByaXZhdGUgYm9vbGVhbiByZWFkVG9rZW4oRGF0YUlucHV0U3RyZWFtIGlucHV0LCBVQ2hhcmFjdGVyTmFtZURCIGRhdGEpIAorICAgICAgICAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uCisgIHsKKyAgICBjaGFyIGNvdW50ID0gaW5wdXQucmVhZENoYXIoKTsKKyAgICBjaGFyIHRva2VuW10gPSBuZXcgY2hhcltjb3VudF07CisgICAgZm9yIChjaGFyIGkgPSAwOyBpIDwgY291bnQ7IGkgKyspIHsKKyAgICAgIHRva2VuW2ldID0gaW5wdXQucmVhZENoYXIoKTsKKyAgICB9CisgICAgCisgICAgaW50IHNpemUgPSBtX2dyb3VwaW5kZXhfIC0gbV90b2tlbnN0cmluZ2luZGV4XzsKKyAgICBieXRlIHRva2Vuc3RyW10gPSBuZXcgYnl0ZVtzaXplXTsKKyAgICBpbnB1dC5yZWFkRnVsbHkodG9rZW5zdHIpOworICAgIHJldHVybiBkYXRhLnNldFRva2VuKHRva2VuLCB0b2tlbnN0cik7CisgIH0KKyAgCisgIC8qKgorICAqIFJlYWQgdGhlIGdyb3VwcworICAqIEBwYXJhbSBpbnB1dCBkYXRhIHN0cmVhbQorICAqIEBwYXJhbSBkYXRhIGluc3RhbmNlIG9mIFVDaGFyYWN0ZXJOYW1lIHRvIHBvcHVsYXRlCisgICogQHJldHVybiB0cnVlIGlmIHN1Y2Nlc3NmdWxseSByZWFkCisgICogQGV4Y2VwdGlvbiB0aHJvd24gd2hlbiBkYXRhIHJlYWRpbmcgZmFpbHMKKyAgKi8KKyAgcHJpdmF0ZSBib29sZWFuIHJlYWRHcm91cChEYXRhSW5wdXRTdHJlYW0gaW5wdXQsIFVDaGFyYWN0ZXJOYW1lREIgZGF0YSkgCisgICAgICAgICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24KKyAgeworICAgIC8vIHJlYWRpbmcgdGhlIGdyb3VwIGluZm9ybWF0aW9uIHJlY29yZHMKKyAgICBpbnQgY291bnQgPSBpbnB1dC5yZWFkQ2hhcigpOworICAgIGRhdGEuc2V0R3JvdXBDb3VudFNpemUoY291bnQsIEdST1VQX0lORk9fU0laRV8pOworICAgIGNvdW50ICo9IEdST1VQX0lORk9fU0laRV87CisgICAgY2hhciBncm91cFtdID0gbmV3IGNoYXJbY291bnRdOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkgKyspIHsKKyAgICAgIGdyb3VwW2ldID0gaW5wdXQucmVhZENoYXIoKTsKKyAgICB9CisgICAgCisgICAgaW50IHNpemUgPSBtX2FsZ25hbWVzaW5kZXhfIC0gbV9ncm91cHN0cmluZ2luZGV4XzsKKyAgICBieXRlIGdyb3Vwc3RyaW5nW10gPSBuZXcgYnl0ZVtzaXplXTsKKyAgICBpbnB1dC5yZWFkRnVsbHkoZ3JvdXBzdHJpbmcpOworICAgIHJldHVybiBkYXRhLnNldEdyb3VwKGdyb3VwLCBncm91cHN0cmluZyk7CisgIH0KKyAgCisgIC8qKgorICAqIFJlYWQgdGhlIGFsZ29yaXRobWljIG5hbWVzCisgICogQHBhcmFtIGlucHV0IGRhdGEgc3RyZWFtCisgICogQHBhcmFtIGRhdGEgaW5zdGFuY2Ugb2YgVUNoYXJhY3Rlck5hbWUgdG8gcG9wdWxhdGUKKyAgKiBAcmV0dXJuIHRydWUgaWYgc3VjY2Vzc2Z1bGx5IHJlYWQKKyAgKiBAZXhjZXB0aW9uIHRocm93biB3aGVuIGRhdGEgcmVhZGluZyBmYWlscworICAqLworICBwcml2YXRlIGJvb2xlYW4gcmVhZEFsZyhEYXRhSW5wdXRTdHJlYW0gaW5wdXQsIFVDaGFyYWN0ZXJOYW1lREIgZGF0YSkgCisgICAgICAgICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24KKyAgeworICAgIGludCBjb3VudCA9IGlucHV0LnJlYWRJbnQoKTsKKyAgICBVQ2hhcmFjdGVyTmFtZURCLkFsZ29yaXRobU5hbWUgYWxnW10gPSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgVUNoYXJhY3Rlck5hbWVEQi5BbGdvcml0aG1OYW1lW2NvdW50XTsKKyAKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpICsrKQorICAgIHsKKyAgICAgIFVDaGFyYWN0ZXJOYW1lREIuQWxnb3JpdGhtTmFtZSBhbiA9IHJlYWRBbGcoaW5wdXQpOworICAgICAgaWYgKGFuID09IG51bGwpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgICAgYWxnW2ldID0gYW47CisgICAgfQorICAgIGRhdGEuc2V0QWxnb3JpdGhtKGFsZyk7CisgICAgcmV0dXJuIHRydWU7CisgIH0KKyAgCisgIC8qKgorICAqIFJlYWRzIGFuIGluZGl2aWR1YWwgcmVjb3JkIG9mIEFsZ29yaXRobU5hbWVzCisgICogQHBhcmFtIGlucHV0IHN0cmVhbQorICAqIEByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgQWxnb3JpdGhOYW1lcyBpZiByZWFkIGlzIHN1Y2Nlc3NmdWwgb3RoZXJ3aXNlIG51bGwKKyAgKiBAZXhjZXB0aW9uIHRocm93biB3aGVuIGZpbGUgcmVhZCBlcnJvciBvY2N1cnMgb3IgZGF0YSBpcyBjb3JydXB0ZWQKKyAgKi8KKyAgcHJpdmF0ZSBVQ2hhcmFjdGVyTmFtZURCLkFsZ29yaXRobU5hbWUgcmVhZEFsZyhEYXRhSW5wdXRTdHJlYW0gaW5wdXQpIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24KKyAgeworICAgIFVDaGFyYWN0ZXJOYW1lREIuQWxnb3JpdGhtTmFtZSByZXN1bHQgPSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBVQ2hhcmFjdGVyTmFtZURCLkFsZ29yaXRobU5hbWUoKTsKKyAgICBpbnQgcmFuZ2VzdGFydCA9IGlucHV0LnJlYWRJbnQoKTsKKyAgICBpbnQgcmFuZ2VlbmQgPSBpbnB1dC5yZWFkSW50KCk7CisgICAgYnl0ZSB0eXBlID0gaW5wdXQucmVhZEJ5dGUoKTsKKyAgICBieXRlIHZhcmlhbnQgPSBpbnB1dC5yZWFkQnl0ZSgpOworICAgIGlmICghcmVzdWx0LnNldEluZm8ocmFuZ2VzdGFydCwgcmFuZ2VlbmQsIHR5cGUsIHZhcmlhbnQpKSB7CisgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisgICAgICAgICAgICAgICAgICAgICAKKyAgICBpbnQgc2l6ZSA9IGlucHV0LnJlYWRDaGFyKCk7CisgICAgaWYgKHR5cGUgPT0gVUNoYXJhY3Rlck5hbWVEQi5BbGdvcml0aG1OYW1lLlRZUEVfMV8pCisgICAgeworICAgICAgY2hhciBmYWN0b3JbXSA9IG5ldyBjaGFyW3ZhcmlhbnRdOworICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB2YXJpYW50OyBqICsrKSB7CisgICAgICAgIGZhY3RvcltqXSA9IGlucHV0LnJlYWRDaGFyKCk7CisgICAgICB9CisgICAgICAgICAgCisgICAgICByZXN1bHQuc2V0RmFjdG9yKGZhY3Rvcik7CisgICAgICBzaXplIC09ICh2YXJpYW50IDw8IDEpOworICAgIH0KKyAgICAgIAorICAgIFN0cmluZ0J1ZmZlciBwcmVmaXggPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgY2hhciBjID0gKGNoYXIpKGlucHV0LnJlYWRCeXRlKCkgJiAweDAwRkYpOworICAgIHdoaWxlIChjICE9IDApCisgICAgeworICAgICAgcHJlZml4LmFwcGVuZChjKTsKKyAgICAgIGMgPSAoY2hhcikoaW5wdXQucmVhZEJ5dGUoKSAmIDB4MDBGRik7CisgICAgfQorICAgIAorICAgIHJlc3VsdC5zZXRQcmVmaXgocHJlZml4LnRvU3RyaW5nKCkpOworICAgIAorICAgIHNpemUgLT0gKEFMR19JTkZPX1NJWkVfICsgcHJlZml4Lmxlbmd0aCgpICsgMSk7CisgICAgCisgICAgaWYgKHNpemUgPiAwKQorICAgIHsKKyAgICAgIGJ5dGUgc3RyaW5nW10gPSBuZXcgYnl0ZVtzaXplXTsKKyAgICAgIGlucHV0LnJlYWRGdWxseShzdHJpbmcpOworICAgICAgcmVzdWx0LnNldEZhY3RvclN0cmluZyhzdHJpbmcpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworICB9Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvVUdlblByb3BSZWFkZXIuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvVUdlblByb3BSZWFkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41Y2U3MjFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9VR2VuUHJvcFJlYWRlci5qYXZhCkBAIC0wLDAgKzEsMjg3IEBACisvKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9BdHRpYy9VR2VuUHJvcFJlYWRlci5qYXZhLHYgJCAKKyogJERhdGU6IDIwMDEvMDMvMjMgMTk6NTE6MzggJCAKKyogJFJldmlzaW9uOiAxLjUgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KK3BhY2thZ2UgY29tLmlibS50ZXh0OworCitpbXBvcnQgamF2YS5pby5EYXRhSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCisvKioKKyogSW50ZXJuYWwgcmVhZGVyIGNsYXNzIHJlYWRpbmcgYmluYXJ5IGRhdGEgZnJvbSB1cHJvcHMuZGF0IGNyZWF0ZWQgYnkgSUNVIAorKiBwcm9ncmFtcyBnZW5wcm9wcy4gCisqIEl0IGFycmFuZ2VzIHRoZSBoZWFkZXIgYW5kIGluZGV4IGRhdGEgYXBhcnQgaW50byBtZWFuaW5nZnVsIGRhdGEgYmVmb3JlIAorKiBwb3B1bGF0aW5nIDxhIGhyZWY9VUNoYXJhY3RlclByb3BEQi5odG1sPlVDaGFyYWN0ZXJQcm9wREI8L2E+LiBVR2VuUHJvcFJlYWRlcgorKiBkb2VzIG5vdCBoYXZlIG9yIHJlcXVpcmUgdGhlIGFiaWxpdHkgdG8gZGVjaXBoZXIgdGhlIHJlc3Qgb2YgdGhlIGRhdGEgaW4gCisqIHVwcm9wLmRhdCBhbmQgaGVuY2Ugc3RvcmVzIGl0IGFzIGEgYmxvY2sgb2YgZGF0YSBpbiBhbiBhcnJheSBvZiBjaGFyIGluIAorKiA8YSBocmVmPVVDaGFyYWN0ZXJQcm9wREIuaHRtbD5VQ2hhcmFjdGVyUHJvcERCPC9hPi4gVGhlIGFiaWxpdHkgdG8gZGVjaXBoZXIKKyogdGhlIGJsb2NrIG9mIGRhdGEgbGllcyBpbiA8YSBocmVmPVVDaGFyYWN0ZXJQcm9wLmh0bWw+VUNoYXJhY3RlclByb3A8L2E+LgorKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZm9ybWF0IG9mIHVwcm9wcy5kYXQgcmVmZXIgdG8KKyogPGEgaHJlZj1vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0ai9pY3U0amh0bWwvY29tL2libS9pY3UvdGV4dC9yZWFkbWUuaHRtbD4KKyogUmVhZE1lPC9hPi48YnI+CisqIHVwcm9wcy5kYXQgd2hpY2ggaXMgaW4gYmlnLWVuZGlhbiBmb3JtYXQgaXMgamFyZWQgdG9nZXRoZXIgd2l0aCB0aGlzIHBhY2thZ2UuCisqIEBhdXRob3IgU3luIFdlZSBRdWVrCisqIEBzaW5jZSBvY3QwMjAwCisqLworCitmaW5hbCBjbGFzcyBVR2VuUHJvcFJlYWRlciBleHRlbmRzIFVHZW5SZWFkZXIKK3sKKyAgLy8gcHJpdmF0ZSB2YXJpYWJsZXMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAKKyAgLyoqCisgICogSW5kZXggc2l6ZQorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSU5ERVhfU0laRV8gPSA4OworICAKKyAgLyoqCisgICogRWxlbWVudHMgaW4gdGhlIGluZGV4IHdoZXJlIGFkZHJlc3NlcyBhcmUgaW4gbnVtYmVyIG9mIGNoYXJzLgorICAqIFNpemUgaXMgYmFzaWNhbGx5IHRoZSBjb3VudCBhbmQgZG9lcyBub3QgZGVwZW5kIG9uIHRoZSB0eXBlLgorICAqLworICBwcml2YXRlIGNoYXIgbV9zdGFnZTJpbmRleHNpemVfOworICBwcml2YXRlIGNoYXIgbV9zdGFnZTNpbmRleHNpemVfOworICBwcml2YXRlIGludCBtX2V4Y2VwdGlvbl87CisgIHByaXZhdGUgY2hhciBtX3N0YWdlM187CisgIHByaXZhdGUgaW50IG1fcHJvcF87CisgIHByaXZhdGUgaW50IG1fY2FzZV87CisgIHByaXZhdGUgY2hhciBtX2VuZF87CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLyoqCisgICogU2l6ZSBvZiBhY3R1YWwgbnVtYmVyIG9mIGJpdHMgdXNlZCBpbiBzdXJyb2dhdGUgdW5pY29kZSBjaGFyYWN0ZXIKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFVTRURfU1VSUk9HQVRFX0JJVF9TSVpFXyA9IDIxOworICAKKyAgLyoqCisgICogRmlsZSBmb3JtYXQgdmVyc2lvbiB0aGF0IHRoaXMgY2xhc3MgdW5kZXJzdGFuZHMuCisgICogTm8gZ3VhcmFudGVlcyBhcmUgbWFkZSBpZiBhIG9sZGVyIHZlcnNpb24gaXMgdXNlZAorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIERBVEFfRk9STUFUX0lEX1tdID0geyhieXRlKTB4NTUsIChieXRlKTB4NTAsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChieXRlKTB4NzIsIChieXRlKTB4NkZ9OworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIERBVEFfRk9STUFUX1ZFUlNJT05fW10gPSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7KGJ5dGUpMHgxLCAoYnl0ZSkweDMsIChieXRlKTB4MCwgKGJ5dGUpMHgwfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgLyoqCisgICogQ29ycnVwdGVkIGVycm9yIHN0cmluZworICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09SUlVQVEVEX0RBVEFfRVJST1JfID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRhdGEgY29ycnVwdGVkIGluIGNoYXJhY3RlciBwcm9wZXJ0eSBkYXRhIGZpbGUiOworICAgICAKKyAgLy8gY29uc3RydWN0b3IgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICAvKioKKyAgKiBDb25zdHJ1Y3RvcgorICAqLworICBwcm90ZWN0ZWQgVUdlblByb3BSZWFkZXIoKQorICB7CisgIH0KKyAKKyAgLy8gcHJvdGVjdGVkIG1ldGhvZHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIFJlYWQgYW5kIGZpbGxzIHVwIFVDaGFyYWN0ZXJQcHR5REIuCisgICogSWYgdW5zdWNjZXNzZnVsIGZhbHNlIHdpbGwgYmUgcmV0dXJuZWQKKyAgKiBAcGFyYW0gaW5wdXQgZGF0YSBzdHJlYW0KKyAgKiBAcGFyYW0gZGF0YSBkYXRhIGluc3RhbmNlCisgICogQGV4Y2VwdGlvbiB0aHJvd24gd2hlbiBkYXRhIHJlYWRpbmcgZmFpbHMKKyAgKi8KKyAgcHJvdGVjdGVkIHZvaWQgcmVhZChEYXRhSW5wdXRTdHJlYW0gaW5wdXQsIFVDaGFyYWN0ZXJQcm9wZXJ0eURCIGRhdGEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uCisgIHsKKyAgICBpZiAoIShzdXBlci5yZWFkKGlucHV0LCBkYXRhKSAmJgorICAgICAgLy8gcmVhZCB0aGUgaW5kZXhlcworICAgICAgcmVhZEluZGV4KGlucHV0LCBkYXRhKSAmJiAKKyAgICAgIC8vIHJlYWQgdGhlIHN0YWdlcyBibG9jaworICAgICAgcmVhZFN0YWdlKGlucHV0LCBkYXRhKSAmJiAKKyAgICAgIC8vIHJlYWQgdGhlIHByb3BlcnR5IGRhdGEKKyAgICAgIHJlYWRQcm9wZXJ0eShpbnB1dCwgZGF0YSkgJiYKKyAgICAgIC8vIHJlYWQgdGhlIGV4Y2VwdGlvbiBkYXRhCisgICAgICByZWFkRXhjZXB0aW9uKGlucHV0LCBkYXRhKSAmJgorICAgICAgLy8gcmVhZCB0aGUgY2FzZSBkYXRhCisgICAgICByZWFkQ2FzZShpbnB1dCxkYXRhKSkpIHsKKyAgICAgIHRocm93IG5ldyBJT0V4Y2VwdGlvbihDT1JSVVBURURfREFUQV9FUlJPUl8pOyAgIAorICAgIH0KKyAgfQorICAKKyAgLyoqCisgICogQ2hlY2tpbmcgdGhlIGZpbGUgZm9yIHRoZSBjb3JyZWN0IGZvcm1hdAorICAqIEBwYXJhbSBkYXRhZm9ybWF0aWQKKyAgKiBAcGFyYW0gZGF0YWZvcm1hdHZlcnNpb24KKyAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGZpbGUgZm9ybWF0IHZlcnNpb24gaXMgY29ycmVjdAorICAqLworICBwcm90ZWN0ZWQgYm9vbGVhbiBhdXRoZW50aWNhdGUoYnl0ZSBkYXRhZm9ybWF0aWRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGUgZGF0YWZvcm1hdHZlcnNpb25bXSkKKyAgeworICAgIHJldHVybiBBcnJheXMuZXF1YWxzKERBVEFfRk9STUFUX0lEXywgZGF0YWZvcm1hdGlkKSAmJgorICAgICAgICAgICBBcnJheXMuZXF1YWxzKERBVEFfRk9STUFUX1ZFUlNJT05fLCBkYXRhZm9ybWF0dmVyc2lvbik7CisgIH0KKyAgCisgIC8qKgorICAqIEdldHMgdGhlIHNpemUgb2YgdGhlIGZpbGUgZm9ybWF0IHZlcnNpb24KKyAgKiBAcmV0dXJuIHNpemUgb2YgZmlsZSBmb3JtYXQgdmVyc2lvbiBpbiBieXRlcworICAqLworICBwcm90ZWN0ZWQgaW50IGdldEZpbGVGb3JtYXRWZXJzaW9uU2l6ZSgpCisgIHsKKyAgICByZXR1cm4gREFUQV9GT1JNQVRfVkVSU0lPTl8ubGVuZ3RoOworICB9CisgIAorICAvKioKKyAgKiBHZXRzIHRoZSBzaXplIG9mIHRoZSBmaWxlIGZvcm1hdCBpZAorICAqIEByZXR1cm4gc2l6ZSBvZiBmaWxlIGZvcm1hdCBpZCBpbiBieXRlcworICAqLworICBwcm90ZWN0ZWQgaW50IGdldEZpbGVGb3JtYXRJRFNpemUoKQorICB7CisgICAgcmV0dXJuIERBVEFfRk9STUFUX0lEXy5sZW5ndGg7CisgIH0KKyAgCisgIC8vIHByaXZhdGUgbWV0aG9kcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIFJlYWQgdGhlIElOREVYX1NJWkVfIGluZGV4ZXMgYW5kIHVwZGF0ZXMgdGhlIGluc3RhbmNlIG9mIAorICAqIFVDaGFyYWN0ZXJQcm9wZXJ0eURCIHdpdGggdGhlIHByb2Nlc3NlZCBzaGlmdHMgYW5kIG1hc2sKKyAgKiBAcGFyYW0gaW5wdXQgZGF0YSBzdHJlYW0KKyAgKiBAcGFyYW0gZGF0YSBpbnN0YW5jZSBvZiBVQ2hhcmFjdGVyUHJvcGVydHlEQgorICAqIEByZXR1cm4gdHJ1ZSBpZiBzdWNjZXNzZnVsbHkgcmVhZAorICAqIEBleGNlcHRpb24gdGhyb3duIHdoZW4gdGhlcmUncyBhbiBJT0V4Y2VwdGlvbgorICAqLworICBwcml2YXRlIGJvb2xlYW4gcmVhZEluZGV4KERhdGFJbnB1dFN0cmVhbSBpbnB1dCwgVUNoYXJhY3RlclByb3BlcnR5REIgZGF0YSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24KKyAgeworICAgIGludCBjb3VudCA9IElOREVYX1NJWkVfOworICAgIG1fc3RhZ2UyaW5kZXhzaXplXyA9IGlucHV0LnJlYWRDaGFyKCk7CisgICAgY291bnQgLS07CisgICAgbV9zdGFnZTNpbmRleHNpemVfID0gaW5wdXQucmVhZENoYXIoKTsKKyAgICBjb3VudCAtLTsKKyAgICBtX2V4Y2VwdGlvbl8gPSBpbnB1dC5yZWFkQ2hhcigpOworICAgIGNvdW50IC0tOworICAgIG1fc3RhZ2UzXyA9IGlucHV0LnJlYWRDaGFyKCk7CisgICAgY291bnQgLS07CisgICAgbV9wcm9wXyA9IGlucHV0LnJlYWRDaGFyKCk7CisgICAgY291bnQgLS07CisgICAgbV9jYXNlXyA9IGlucHV0LnJlYWRDaGFyKCk7CisgICAgY291bnQgLS07CisgICAgbV9lbmRfID0gaW5wdXQucmVhZENoYXIoKTsKKyAgICBjb3VudCAtLTsKKyAgICBpbnB1dC5za2lwQnl0ZXMoY291bnQgPDwgMSk7CisgICAgICAgIAorICAgIHJldHVybiBkYXRhLnNldEluZm8obV9zdGFnZTNpbmRleHNpemVfICsgbV9zdGFnZTJpbmRleHNpemVfLAorICAgICAgICAgICAgICAgICAgICAgICAgKGludCltX3N0YWdlM2luZGV4c2l6ZV8sCisgICAgICAgICAgICAgICAgICAgICAgICAoMSA8PCBtX3N0YWdlMmluZGV4c2l6ZV8pIC0gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICgxIDw8IG1fc3RhZ2UzaW5kZXhzaXplXykgLSAxKTsKKyAgfQorICAKKyAgLyoqCisgICogUmVhZCB0aGUgc3RhZ2VzIGJsb2NrIGFuZCB1cGRhdGVzIHRoZSBpbnN0YW5jZSBvZiBVQ2hhcmFjdGVyUHJvcGVydHlEQiAKKyAgKiB3aXRoIHRoZSBzdGFnZXMgZGF0YQorICAqIEBwYXJhbSBpbnB1dCBkYXRhIHN0cmVhbQorICAqIEBwYXJhbSBkYXRhIGluc3RhbmNlIG9mIFVDaGFyYWN0ZXJQcm9wZXJ0eURCCisgICogQHJldHVybiB0cnVlIGlmIHN1Y2Nlc3NmdWxseSByZWFkCisgICogQGV4Y2VwdGlvbiB0aHJvd24gd2hlbiBkYXRhIHJlYWRpbmcgZmFpbHMKKyAgKi8KKyAgcHJpdmF0ZSBib29sZWFuIHJlYWRTdGFnZShEYXRhSW5wdXRTdHJlYW0gaW5wdXQsIFVDaGFyYWN0ZXJQcm9wZXJ0eURCIGRhdGEpIAorICAgICAgICAgICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uCisgIHsgIAorICAgIC8vIHNpemUgb2YgdGhlIDMgc3RhZ2VzCisgICAgaW50IHN0YWdlc2l6ZSA9IChtX3Byb3BfIDw8IDEpIC0gSU5ERVhfU0laRV87CisgICAgICAKKyAgICBjaGFyIGFycmF5W10gPSBuZXcgY2hhcltzdGFnZXNpemVdOworICAgIAorICAgIGludCBtYXggPSAwOworICAgIGludCBwcm9wcyA9IG1fcHJvcF8gLSBJTkRFWF9TSVpFXzsKKyAgICAvLyBzZXR0aW5nIHVwIHRoZSBwcm9wZXJ5IGluZGV4IGZvciBzdGFnZSAxIHRvIDMKKyAgICBmb3IgKGludCBjb3VudCA9IDA7IGNvdW50IDwgc3RhZ2VzaXplOyBjb3VudCArKykKKyAgICB7CisgICAgICBhcnJheVtjb3VudF0gPSAoY2hhcikoaW5wdXQucmVhZENoYXIoKSAtIElOREVYX1NJWkVfKTsKKyAgICAgIC8vIHRlc3RpbmcgZW1wdHkgc3BhY2VzCisgICAgICAvLyBpZiAobWF4IDwgYXJyYXlbY291bnRdICYmIGNvdW50IDwgMHg0NDApIHsKKyAgICAgIC8vICBtYXggPSBhcnJheVtjb3VudF07CisgICAgICAvL30KKyAgICAgIAorICAgICAgLy8gc2V0dGluZyB1cCB0aGUgcHJvcGVydHkgaW5kZXggZm9yIHN0YWdlIDMKKyAgICAgIC8vIHVwcm9wcy5kYXQgY29udGFpbiBkYXRhIHRoYXQgaW5jbHVkZXMgdGhlIGFkZHJlc3MgZnJvbSB0aGUgdG9wIG9mIAorICAgICAgLy8gaW5kZXggdG8gcHJvcGVydHkgZGF0YS4gc2luY2UgdGhlIGJsb2NrcyBhcmUgc3BsaXQgdXAsIHNvIG5vdyBpIGhhdmUgCisgICAgICAvLyB0byBzdWJ0cmFjdCB0aGUgZXhjZXNzIGFkZHJlc3MgZnJvbSBpdC4KKyAgICAgIGlmIChjb3VudCA+PSBtX3N0YWdlM18gLSBJTkRFWF9TSVpFXykgeworICAgICAgICBhcnJheVtjb3VudF0gLT0gcHJvcHM7ICAgIAorICAgICAgfQorICAgIH0KKyAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIlxuc3RhZ2UgMyAiICsgKGludCltX3N0YWdlM18pOworICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigic3RhZ2UgIDIgdG9wICIgKyAobWF4IC0gMHg0NDAgLSBJTkRFWF9TSVpFXykpOworICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiY2FsY3VsYXRlZCBzdGFnZSAzICIgKyBtYXgpOworICAgIAorICAgIC8vIHNldHRpbmcgdXAgdGhlIHN0YWdlcyBibG9jayBpbiB0aGUgaW5zdGFuY2Ugb2YgVUNoYXJhY3RlclByb3BlcnR5REIKKyAgICByZXR1cm4gZGF0YS5zZXRTdGFnZShhcnJheSk7CisgIH0KKworICAvKioKKyAgKiBSZWFkIHRoZSBwcm9wZXJ5IGRhdGEgYmxvY2sgYW5kIHVwZGF0ZXMgdGhlIGluc3RhbmNlIG9mIAorICAqIFVDaGFyYWN0ZXJQcm9wZXJ0eURCIHdpdGggdGhlIGRhdGEKKyAgKiBAcGFyYW0gaW5wdXQgZGF0YSBzdHJlYW0KKyAgKiBAcGFyYW0gZGF0YSBpbnN0YW5jZSBvZiBVQ2hhcmFjdGVyUHJvcGVydHlEQgorICAqIEByZXR1cm4gdHJ1ZSBpZiBzdWNjZXNzZnVsbHkgcmVhZAorICAqIEBleGNlcHRpb24gdGhyb3duIHdoZW4gZGF0YSByZWFkaW5nIGZhaWxzCisgICovCisgIHByaXZhdGUgYm9vbGVhbiByZWFkUHJvcGVydHkoRGF0YUlucHV0U3RyZWFtIGlucHV0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVQ2hhcmFjdGVyUHJvcGVydHlEQiBkYXRhKSB0aHJvd3MgSU9FeGNlcHRpb24KKyAgeyAgCisgICAgLy8gZ2V0dGluZyBzaXplIG9mIHRoZSBwcm9wZXJ0eSBibG9jaworICAgIGludCBzaXplID0gbV9leGNlcHRpb25fIC0gbV9wcm9wXzsKKyAgICBpbnQgcHB0eVtdID0gbmV3IGludFtzaXplXTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkgKyspIHsKKyAgICAgIHBwdHlbaV0gPSBpbnB1dC5yZWFkSW50KCk7ICAgICAKKyAgICB9CisgICAgICAgCisgICAgLy8gc2V0dGluZyB1cCB0aGUgcHJvcGVydHkgYmxvY2sgaW4gdGhlIGluc3RhbmNlIG9mIFVDaGFyYWN0ZXJQcm9wZXJ0eURCCisgICAgcmV0dXJuIGRhdGEuc2V0UHJvcGVydHkocHB0eSk7CisgIH0KKyAgCisgIC8qKgorICAqIFJlYWQgdGhlIGNoYXJhY3RlciBjYXNlIGRhdGEgYmxvY2sgYW5kIHVwZGF0ZXMgdGhlIGluc3RhbmNlIG9mIAorICAqIFVDaGFyYWN0ZXJQcm9wZXJ0eURCIHdpdGggdGhlIGRhdGEKKyAgKiBAcGFyYW0gaW5wdXQgZGF0YSBzdHJlYW0KKyAgKiBAcGFyYW0gZGF0YSBpbnN0YW5jZSBvZiBVQ2hhcmFjdGVyUHJvcGVydHlEQgorICAqIEByZXR1cm4gdHJ1ZSBpZiBzdWNjZXNzZnVsbHkgcmVhZAorICAqIEBleGNlcHRpb24gdGhyb3duIHdoZW4gZGF0YSByZWFkaW5nIGZhaWxzCisgICovCisgIHByaXZhdGUgYm9vbGVhbiByZWFkQ2FzZShEYXRhSW5wdXRTdHJlYW0gaW5wdXQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5REIgZGF0YSkgdGhyb3dzIElPRXhjZXB0aW9uCisgIHsgIAorICAgIC8vIGdldHRpbmcgc2l6ZSBvZiB0aGUgY2FzZSBibG9jaworICAgIGludCBzaXplID0gKG1fZW5kXyAtIG1fY2FzZV8pIDw8IDE7CisgICAgY2hhciBjYXNldGFibGVbXSA9IG5ldyBjaGFyW3NpemVdOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgeworICAgICAgY2FzZXRhYmxlW2ldID0gaW5wdXQucmVhZENoYXIoKTsgICAgIAorICAgIH0KKyAgICAgICAgIAorICAgIC8vIHNldHRpbmcgdXAgdGhlIGNhc2UgYmxvY2sgaW4gdGhlIGluc3RhbmNlIG9mIFVDaGFyYWN0ZXJQcm9wZXJ0eURCCisgICAgcmV0dXJuIGRhdGEuc2V0Q2FzZShjYXNldGFibGUpOworICB9CisgIAorICAvKioKKyAgKiBSZWFkIHRoZSBleGNlcHRpb24gZGF0YSBibG9jayBhbmQgdXBkYXRlcyB0aGUgaW5zdGFuY2Ugb2YgCisgICogVUNoYXJhY3RlclByb3BlcnR5REIgd2l0aCB0aGUgZGF0YQorICAqIEBwYXJhbSBpbnB1dCBkYXRhIHN0cmVhbQorICAqIEBwYXJhbSBkYXRhIGluc3RhbmNlIG9mIFVDaGFyYWN0ZXJQcm9wZXJ0eURCCisgICogQHJldHVybiB0cnVlIGlmIHN1Y2Nlc3NmdWxseSByZWFkCisgICogQGV4Y2VwdGlvbiB0aHJvd24gd2hlbiBkYXRhIHJlYWRpbmcgZmFpbHMKKyAgKi8KKyAgcHJpdmF0ZSBib29sZWFuIHJlYWRFeGNlcHRpb24oRGF0YUlucHV0U3RyZWFtIGlucHV0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJhY3RlclByb3BlcnR5REIgZGF0YSkgdGhyb3dzIElPRXhjZXB0aW9uCisgIHsgIAorICAgIGludCBzaXplID0gbV9jYXNlXyAtIG1fZXhjZXB0aW9uXzsKKyAgICBpbnQgZXhjZXB0aW9uW10gPSBuZXcgaW50W3NpemVdOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSArKykgeworICAgICAgZXhjZXB0aW9uW2ldID0gaW5wdXQucmVhZEludCgpOworICAgIH0KKyAgICAgICAKKyAgICAvLyBzZXR0aW5nIHVwIHRoZSBwcm9wZXJ0eSBibG9jayBpbiB0aGUgaW5zdGFuY2Ugb2YgVUNoYXJhY3RlclByb3BlcnR5REIKKyAgICByZXR1cm4gZGF0YS5zZXRFeGNlcHRpb24oZXhjZXB0aW9uKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9VR2VuUmVhZGVyLmphdmEgYi9zcmMvY29tL2libS90ZXh0L1VHZW5SZWFkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xZjhiNTRiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9VR2VuUmVhZGVyLmphdmEKQEAgLTAsMCArMSwxOTUgQEAKKy8qKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L0F0dGljL1VHZW5SZWFkZXIuamF2YSx2ICQgCisqICREYXRlOiAyMDAxLzAzLzIzIDE5OjUxOjM4ICQgCisqICRSZXZpc2lvbjogMS4zICQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCitwYWNrYWdlIGNvbS5pYm0udGV4dDsKKworaW1wb3J0IGphdmEuaW8uRGF0YUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRU9GRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CisKKy8qKgorKiBJbnRlcm5hbCBwYXJlbnQgcmVhZGVyIGNsYXNzIHJlYWRpbmcgYmluYXJ5IGhlYWRlciBkYXRhIGZyb20gdXByb3BzLmRhdCBhbmQgCisqIHVuYW1lcy5kYXQsIGNyZWF0ZWQgYnkgSUNVIHByb2dyYW1zIGdlbnByb3BzIGFuZCBnZW5uYW1lcy4gCisqIEl0IGFycmFuZ2VzIHRoZSBoZWFkZXIgZGF0YSBpbnRvIG1lYW5pbmdmdWwgZGF0YSBiZWZvcmUgCisqIHBvcHVsYXRpbmcgPGEgaHJlZj1VQ2hhcmFjdGVyREIuaHRtbD5VQ2hhcmFjdGVyREI8L2E+LiBJdCBhbHNvIGF1dGhlbnRpY2F0ZXMKKyogdGhhdCB0aGUgZGF0YSBmaWxlcyBiZWZvcmUgcHJvY2VlZGluZyBvbi4KKyogRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGZvcm1hdCBvZiB1cHJvcHMuZGF0IHJlZmVyIHRvCisqIDxhIGhyZWY9b3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovaWN1NGpodG1sL2NvbS9pYm0vaWN1L3RleHQvcmVhZG1lLmh0bWw+CisqIFJlYWRNZTwvYT4uPGJyPgorKiB1cHJvcHMuZGF0YSBhbmQgdW5hbWVzLmRhdCB3aGljaCBhcmUgaW4gYmlnLWVuZGlhbiBmb3JtYXQgYXJlIGphcmVkIHRvZ2V0aGVyIAorKiB3aXRoIHRoaXMgcGFja2FnZS4KKyogQGF1dGhvciBTeW4gV2VlIFF1ZWsKKyogQHNpbmNlIG9jdDEwMDAKKyovCisKK2Fic3RyYWN0IGNsYXNzIFVHZW5SZWFkZXIKK3sKKyAgLy8gcHJpdmF0ZSB2YXJpYWJsZXMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAKKyAgLyoqCisgICogTWFnaWMgbnVtYmVycyB0byBhdXRoZW50aWNhdGUgdGhlIGRhdGEgZmlsZQorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIE1BR0lDMSA9IChieXRlKTB4ZGE7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgTUFHSUMyID0gKGJ5dGUpMHgyNzsKKyAgCisgIC8qKgorICAqIFNpemUgb2YgdGhlIGZpZWxkIGRhdGFzaXplIGFuZCByZXNlcnZlZGNoYXJhY3RlcgorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0tJUF9CWVRFU18gPSA0OworICAKKyAgLyoqCisgICogRmlsZSBmb3JtYXQgYXV0aGVudGljYXRpb24gdmFsdWVzCisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgQklHX0VORElBTl8gPSAxOworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBieXRlIENIQVJfU0VUXyA9IDA7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgQ0hBUl9TSVpFXyA9IDI7CisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJ5dGUgVU5JQ09ERV9WRVJTSU9OX1tdID0geyhieXRlKTB4MywgKGJ5dGUpMHgwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYnl0ZSkweDAsIChieXRlKTB4MH07CisgIAorICAvLyBjb25zdHJ1Y3RvciA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICAvKioKKyAgKiBQcm90ZWN0ZWQgY29uc3RydWN0b3IKKyAgKi8KKyAgcHJvdGVjdGVkIFVHZW5SZWFkZXIoKQorICB7CisgIH0KKyAgCisgIC8vIHByb3RlY3RlZCBtZXRob2RzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIFJlYWQgdGhlIGRhdGEgaGVhZGVyIGFuZCBmaWxscyB0aGUgcmVsZXZhbnQgaW5mb3JtYXRpb24gaW50byBVQ2hhcmFjdGVyREIuCisgICogSWYgdW5zdWNjZXNzZnVsIGZhbHNlIHdpbGwgYmUgcmV0dXJuZWQKKyAgKiBAcGFyYW0gaW5wdXQgZGF0YSBzdHJlYW0KKyAgKiBAcGFyYW0gZGF0YSBkYXRhIGluc3RhbmNlCisgICogQHJldHVybiB0cnVlIGlmIHN1Y2Nlc3NmdWxseSBmaWxsZWQKKyAgKi8KKyAgcHJvdGVjdGVkIGJvb2xlYW4gcmVhZChEYXRhSW5wdXRTdHJlYW0gaW5wdXQsIFVDaGFyYWN0ZXJEQiBkYXRhKQorICB7CisgICAgdHJ5CisgICAgeworICAgICAgY2hhciBoZWFkZXJzaXplID0gaW5wdXQucmVhZENoYXIoKTsKKyAgICAgIGhlYWRlcnNpemUgLT0gMjsKKyAgICAgIC8vcmVhZGluZyB0aGUgaGVhZGVyIGZvcm1hdAorICAgICAgYnl0ZSBtYWdpYzEgPSBpbnB1dC5yZWFkQnl0ZSgpOworICAgICAgaGVhZGVyc2l6ZSAtLTsKKyAgICAgIGJ5dGUgbWFnaWMyID0gaW5wdXQucmVhZEJ5dGUoKTsKKyAgICAgIGhlYWRlcnNpemUgLS07CisgICAgICBpbnB1dC5za2lwQnl0ZXMoU0tJUF9CWVRFU18pOworICAgICAgaGVhZGVyc2l6ZSAtPSBTS0lQX0JZVEVTXzsKKyAgICAgIGlmIChhdXRoZW50aWNhdGUobWFnaWMxLCBtYWdpYzIpKQorICAgICAgeworICAgICAgICBieXRlIGJpZ2VuZGlhbiA9IGlucHV0LnJlYWRCeXRlKCk7CisgICAgICAgIGhlYWRlcnNpemUgLS07CisgICAgICAgIGJ5dGUgY2hhcnNldCA9IGlucHV0LnJlYWRCeXRlKCk7CisgICAgICAgIGhlYWRlcnNpemUgLS07CisgICAgICAgIGJ5dGUgY2hhcnNpemUgPSBpbnB1dC5yZWFkQnl0ZSgpOworICAgICAgICBoZWFkZXJzaXplIC0tOworICAgICAgICBieXRlIHJlc2VydmVkID0gaW5wdXQucmVhZEJ5dGUoKTsKKyAgICAgICAgaGVhZGVyc2l6ZSAtLTsKKyAgICAgICAgCisgICAgICAgIGJ5dGUgZGF0YWZvcm1hdGlkW10gPSBuZXcgYnl0ZVtnZXRGaWxlRm9ybWF0SURTaXplKCldOworICAgICAgICBpbnB1dC5yZWFkRnVsbHkoZGF0YWZvcm1hdGlkKTsKKyAgICAgICAgaGVhZGVyc2l6ZSAtPSBnZXRGaWxlRm9ybWF0SURTaXplKCk7CisgICAgICAgIGJ5dGUgZGF0YWZvcm1hdHZlcnNpb25bXSA9IG5ldyBieXRlW2dldEZpbGVGb3JtYXRWZXJzaW9uU2l6ZSgpXTsKKyAgICAgICAgaW5wdXQucmVhZEZ1bGx5KGRhdGFmb3JtYXR2ZXJzaW9uKTsKKyAgICAgICAgaGVhZGVyc2l6ZSAtPSBnZXRGaWxlRm9ybWF0VmVyc2lvblNpemUoKTsKKyAgICAgICAgYnl0ZSB1bmljb2RldmVyc2lvbltdID0gbmV3IGJ5dGVbVU5JQ09ERV9WRVJTSU9OXy5sZW5ndGhdOworICAgICAgICBpbnB1dC5yZWFkRnVsbHkodW5pY29kZXZlcnNpb24pOworICAgICAgICBoZWFkZXJzaXplIC09IFVOSUNPREVfVkVSU0lPTl8ubGVuZ3RoOworICAgICAgICBpbnB1dC5za2lwQnl0ZXMoaGVhZGVyc2l6ZSk7CisgICAgICAgIAorICAgICAgICBpZiAoYXV0aGVudGljYXRlKGJpZ2VuZGlhbiwgY2hhcnNldCwgY2hhcnNpemUsIHVuaWNvZGV2ZXJzaW9uKSAmJiAKKyAgICAgICAgICAgIGF1dGhlbnRpY2F0ZShkYXRhZm9ybWF0aWQsIGRhdGFmb3JtYXR2ZXJzaW9uKSkgeworICAgICAgICAgIHJldHVybiBzZXRVQ2hhcmFjdGVyREIoZGF0YSwgdW5pY29kZXZlcnNpb24pOworICAgICAgICB9CisgICAgICB9CisgICAgfSAKKyAgICBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIAorICAvKioKKyAgKiBBYnN0cmFjdCBtZXRob2QgZm9yIHZlcmlmeWluZyB0aGUgZmlsZSBmb3JtYXQgdmVyc2lvbgorICAqIEBwYXJhbSBmb3JtYXRpZCBmaWxlIGZvcm1hdCBpZGVudGlmaWNhdGlvbgorICAqIEBwYXJhbSBmb3JtYXR2ZXJzaW9uIGZpbGUgZm9ybWF0IHZlcnNpb24gb2YgaW5wdXQgZmlsZSB0byBiZSB2ZXJpZmllZAorICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgcmlnaHQgZmlsZSBmb3JtYXQgdmVyc2lvbiBpcyB1c2VkCisgICovCisgIHByb3RlY3RlZCBhYnN0cmFjdCBib29sZWFuIGF1dGhlbnRpY2F0ZShieXRlIGZvcm1hdGlkW10sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZSBmb3JtYXR2ZXJzaW9uW10pOworICAKKyAgLyoqCisgICogQWJzdHJhY3QgbWV0aG9kIGZvciBnZXR0aW5nIHRoZSBzaXplIG9mIHRoZSBmaWxlIGZvcm1hdCB2ZXJzaW9uCisgICogQHJldHVybiBzaXplIG9mIGZpbGUgZm9ybWF0IHZlcnNpb24gaW4gYnl0ZXMKKyAgKi8KKyAgcHJvdGVjdGVkIGFic3RyYWN0IGludCBnZXRGaWxlRm9ybWF0VmVyc2lvblNpemUoKTsKKyAgCisgIC8qKgorICAqIEFic3RyYWN0IG1ldGhvZCBmb3IgZ2V0dGluZyB0aGUgc2l6ZSBvZiB0aGUgZmlsZSBmb3JtYXQgaWQKKyAgKiBAcmV0dXJuIHNpemUgb2YgZmlsZSBmb3JtYXQgaWQgaW4gYnl0ZXMKKyAgKi8KKyAgcHJvdGVjdGVkIGFic3RyYWN0IGludCBnZXRGaWxlRm9ybWF0SURTaXplKCk7CisgIAorICAvLyBwcml2YXRlIG1ldGhvZHMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAKKyAgLyoqCisgICogQ2hlY2tpbmcgdGhlIGZpbGUgYWdhaW5zdCB0aGUgbWFnaWMgbnVtYmVycyBmb3IgYXV0aGVudGljaXR5CisgICogQHBhcmFtIG0xIG1hZ2ljIG51bWJlciAxCisgICogQHBhcmFtIG0yIG1hZ2ljIG51bWJlciAyCisgICogQHJldHVybiB0cnVlIGlmIHRoZSBtYWdpYyBudW1iZXJzIGFyZSBjb3JyZWN0CisgICovCisgIHByaXZhdGUgYm9vbGVhbiBhdXRoZW50aWNhdGUoYnl0ZSBtMSwgYnl0ZSBtMikKKyAgeworICAgIGlmIChtMSA9PSBNQUdJQzEgJiYgbTIgPT0gTUFHSUMyKSB7CisgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworICB9CisgIAorICAvKioKKyAgKiBDaGVja2luZyB0aGUgZmlsZSBmb3IgdGhlIGNvcnJlY3QgZm9ybWF0CisgICogQHBhcmFtIGJpZ2VuZGlhbgorICAqIEBwYXJhbSBjaGFyc2V0CisgICogQHBhcmFtIGNoYXJzaXplCisgICogQHBhcmFtIGRhdGFmb3JtYXRpZAorICAqIEBwYXJhbSBkYXRhZm9ybWF0dmVyc2lvbgorICAqIEBwYXJhbSB1bmljb2RldmVyc2lvbgorICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZmlsZSBpcyBpbiBiaWdlbmRpYW4sIGNoYXJzZXQgLCBjaGFyc2l6ZSA9PSAyLCAKKyAgKiAgICAgICAgIGRhdGFmb3JtYXRpZCA4NS44MC4xMTQuMTExLCBkYXRhZm9ybWF0dmVyc2lvbiBkZXBlbmRlbnQgb24gZmlsZSwKKyAgKiAgICAgICAgIGFuZCB1bmljb2RldmVyc2lvbiA+IDMuMC4wLjAKKyAgKi8KKyAgcHJpdmF0ZSBib29sZWFuIGF1dGhlbnRpY2F0ZShieXRlIGJpZ2VuZGlhbiwgYnl0ZSBjaGFyc2V0LCBieXRlIGNoYXJzaXplLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieXRlIHVuaWNvZGV2ZXJzaW9uW10pCisgIHsKKyAgICBpZiAoYmlnZW5kaWFuICE9IEJJR19FTkRJQU5fIHx8IGNoYXJzZXQgIT0gQ0hBUl9TRVRfIHx8IAorICAgICAgICBjaGFyc2l6ZSAhPSBDSEFSX1NJWkVfKSB7CisgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBBcnJheXMuZXF1YWxzKFVOSUNPREVfVkVSU0lPTl8sIHVuaWNvZGV2ZXJzaW9uKTsKKyAgfQorICAKKyAgLyoqCisgICogU2V0cyB0aGUgcmVsZXZhbnQgZGF0YSBpbnRvIFVDaGFyYWN0ZXJEQgorICAqIEBwYXJhbSBkYXRhIFVDaGFyYWN0ZXJEQiBpbnN0YW5jZSB0byBwb3B1bGF0ZQorICAqIEBwYXJhbSB1bmljb2RldmVyc2lvbiB2ZXJzaW9uIG51bWJlciBvZiB0aGUgVW5pY29kZSBkYXRhIGluZm9ybWF0aW9uIHVzZWQKKyAgKiBAcGFyYW0gZm9ybWF0dmVyc2lvbiBpY3UgdmVyc2lvbiBudW1iZXIgb2YgdGhlIHVwcm9wcy5kYXQgYW5kIHVuYW1lcy5kYXQKKyAgKiAgICAgICAgdXNlZAorICAqIEByZXR1cm4gdHJ1ZSBpZiBvcGVyYXRpb24gaXMgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNlCisgICovCisgIHByaXZhdGUgYm9vbGVhbiBzZXRVQ2hhcmFjdGVyREIoVUNoYXJhY3RlckRCIGRhdGEsIGJ5dGVbXSB1bmljb2RldmVyc2lvbikKKyAgeworICAgIGJvb2xlYW4gcmVzdWx0ID0gZGF0YS5zZXRVbmljb2RlVmVyc2lvbih1bmljb2RldmVyc2lvbik7CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorfQorCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L1VURjE2LmphdmEgYi9zcmMvY29tL2libS90ZXh0L1VURjE2LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNWFhZWU2ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvVVRGMTYuamF2YQpAQCAtMCwwICsxLDYzNyBAQAorLyoqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvQXR0aWMvVVRGMTYuamF2YSx2ICQgCisqICREYXRlOiAyMDAxLzAzLzIzIDE5OjUxOjM4ICQgCisqICRSZXZpc2lvbjogMS4zICQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS50ZXh0OworCitpbXBvcnQgY29tLmlibS50ZXh0LlVDaGFyYWN0ZXI7CisKKy8qKgorKiBTdGFuZGFsb25lIHV0aWxpdHkgY2xhc3MgcHJvdmlkaW5nIFVURjE2IGNoYXJhY3RlciBjb252ZXJzaW9ucyBhbmQgaW5kZXhpbmcgCisqIGNvbnZlcnNpb25zLgorKiA8cD5Db2RlIHRoYXQgdXNlcyBzdHJpbmdzIGFsb25lIHJhcmVseSBuZWVkIG1vZGlmaWNhdGlvbi4gCisqIEJ5IGRlc2lnbiwgVVRGLTE2IGRvZXMgbm90IGFsbG93IG92ZXJsYXAsIHNvIHNlYXJjaGluZyBmb3Igc3RyaW5ncyBpcyBhIHNhZmUgCisqIG9wZXJhdGlvbi4gU2ltaWxhcmx5LCBjb25jYXRlbmF0aW9uIGlzIGFsd2F5cyBzYWZlLiBTdWJzdHJpbmdpbmcgaXMgc2FmZSBpZiAKKyogdGhlIHN0YXJ0IGFuZCBlbmQgYXJlIGJvdGggb24gVVRGLTMyIGJvdW5kYXJpZXMuIEluIG5vcm1hbCBjb2RlLCB0aGUgdmFsdWVzIAorKiBmb3Igc3RhcnQgYW5kIGVuZCBhcmUgb24gdGhvc2UgYm91bmRhcmllcywgc2luY2UgdGhleSBhcm9zZSBmcm9tIG9wZXJhdGlvbnMgCisqIGxpa2Ugc2VhcmNoaW5nLiBJZiBub3QsIHRoZSBuZWFyZXN0IFVURi0zMiBib3VuZGFyaWVzIGNhbiBiZSBkZXRlcm1pbmVkIAorKiB1c2luZyA8Y29kZT5ib3VuZHMoKTwvY29kZT4uCisqIDxzdHJvbmc+RXhhbXBsZXM6PC9zdHJvbmc+CisqIDxwPlRoZSBmb2xsb3dpbmcgZXhhbXBsZXMgaWxsdXN0cmF0ZSB1c2Ugb2Ygc29tZSBvZiB0aGVzZSBtZXRob2RzLiAKKyogPHByZT4KKyogLy8gaXRlcmF0aW9uIGZvcndhcmRzOiBPcmlnaW5hbAorKiBmb3IgKGludCBpID0gMDsgaSA8IHMubGVuZ3RoKCk7ICsraSkgeworKqCgoGNoYXIgY2ggPSBzLmNoYXJBdChpKTsKKyqgoKBkb1NvbWV0aGluZ1dpdGgoY2gpOworKiB9CisqCisqIC8vIGl0ZXJhdGlvbiBmb3J3YXJkczogQ2hhbmdlcyBmb3IgVVRGLTMyCisqIGludCBjaDsKKyogZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyBpKz1VVEYxNi5nZXRDaGFyQ291bnQoY2gpKSB7CisqoKCgY2ggPSBVVEYxNi5jaGFyQXQocyxpKTsKKyqgoKBkb1NvbWV0aGluZ1dpdGgoY2gpOworKiB9CisqCisqIC8vIGl0ZXJhdGlvbiBiYWNrd2FyZHM6IE9yaWdpbmFsCisqIGZvciAoaW50IGkgPSBzLmxlbmd0aCgpLTE7IGkgPj0gMDsgLS1pKSB7CisqoKCgY2hhciBjaCA9IHMuY2hhckF0KGkpOworKqCgoGRvU29tZXRoaW5nV2l0aChjaCk7CisqIH0KKyogIAorKiAvLyBpdGVyYXRpb24gYmFja3dhcmRzOiBDaGFuZ2VzIGZvciBVVEYtMzIKKyogaW50IGNoOworKiBmb3IgKGludCBpID0gcy5sZW5ndGgoKS0xOyBpID4gMDsgaS09VVRGMTYuZ2V0Q2hhckNvdW50KGNoKSkgeworKqCgoGNoID0gVVRGMTYuY2hhckF0KHMsaSk7CisqoKCgZG9Tb21ldGhpbmdXaXRoKGNoKTsKKyogfQorKiA8L3ByZT4KKyogPHN0cm9uZz5Ob3Rlczo8L3N0cm9uZz4KKyogPHVsPgorKiAgIDxsaT4KKyogICA8c3Ryb25nPk5hbWluZzo8L3N0cm9uZz4gRm9yIGNsYXJpdHksIEhpZ2ggYW5kIExvdyBzdXJyb2dhdGVzIGFyZSBjYWxsZWQgCisqICAgPGNvZGU+TGVhZDwvY29kZT4gYW5kIDxjb2RlPlRyYWlsPC9jb2RlPiBpbiB0aGUgQVBJLCB3aGljaCBnaXZlcyBhIGJldHRlciAKKyogICBzZW5zZSBvZiB0aGVpciBvcmRlcmluZyBpbiBhIHN0cmluZy4gPGNvZGU+b2Zmc2V0MTY8L2NvZGU+IGFuZCAKKyogICA8Y29kZT5vZmZzZXQzMjwvY29kZT4gYXJlIHVzZWQgdG8gZGlzdGluZ3Vpc2ggb2Zmc2V0cyB0byBVVEYtMTYgCisqICAgYm91bmRhcmllcyB2cyBvZmZzZXRzIHRvIFVURi0zMiBib3VuZGFyaWVzLiA8Y29kZT5pbnQgY2hhcjMyPC9jb2RlPiBpcyAKKyogICB1c2VkIHRvIGNvbnRhaW4gVVRGLTMyIGNoYXJhY3RlcnMsIGFzIG9wcG9zZWQgdG8gPGNvZGU+Y2hhcjE2PC9jb2RlPiwgCisqICAgd2hpY2ggaXMgYSBVVEYtMTYgY29kZSB1bml0LgorKiAgIDwvbGk+CisqICAgPGxpPgorKiAgIDxzdHJvbmc+Um91bmR0cmlwcGluZyBPZmZzZXRzOjwvc3Ryb25nPiBZb3UgY2FuIGFsd2F5cyByb3VuZHRyaXAgZnJvbSBhIAorKiAgIFVURi0zMiBvZmZzZXQgdG8gYSBVVEYtMTYgb2Zmc2V0IGFuZCBiYWNrLiBCZWNhdXNlIG9mIHRoZSBkaWZmZXJlbmNlIGluIAorKiAgIHN0cnVjdHVyZSwgeW91IGNhbiByb3VuZHRyaXAgZnJvbSBhIFVURi0xNiBvZmZzZXQgdG8gYSBVVEYtMzIgb2Zmc2V0IGFuZCAKKyogICBiYWNrIGlmIGFuZCBvbmx5IGlmIDxjb2RlPmJvdW5kcyhzdHJpbmcsIG9mZnNldDE2KSAhPSBUUkFJTDwvY29kZT4uCisqICAgPC9saT4KKyogICA8bGk+CisqICAgPHN0cm9uZz5FeGNlcHRpb25zOjwvc3Ryb25nPiBUaGUgZXJyb3IgY2hlY2tpbmcgd2lsbCB0aHJvdyBhbiBleGNlcHRpb24gCisqICAgaWYgaW5kaWNlcyBhcmUgb3V0IG9mIGJvdW5kcy4gT3RoZXIgdGhhbiB0aGFuIHRoYXQsIGFsbCBtZXRob2RzIHdpbGwgCisqICAgYmVoYXZlIHJlYXNvbmFibHksIGV2ZW4gaWYgdW5tYXRjaGVkIHN1cnJvZ2F0ZXMgb3Igb3V0LW9mLWJvdW5kcyBVVEYtMzIgCisqICAgdmFsdWVzIGFyZSBwcmVzZW50LiA8Y29kZT5VQ2hhcmFjdGVyLmlzTGVnYWwoKTwvY29kZT4gY2FuIGJlIHVzZWQgdG8gY2hlY2sgCisqICAgZm9yIHZhbGlkaXR5IGlmIGRlc2lyZWQuCisqICAgPC9saT4KKyogICA8bGk+CisqICAgPHN0cm9uZz5Vbm1hdGNoZWQgU3Vycm9nYXRlczo8L3N0cm9uZz4gSWYgdGhlIHN0cmluZyBjb250YWlucyB1bm1hdGNoZWQgCisqICAgc3Vycm9nYXRlcywgdGhlbiB0aGVzZSBhcmUgY291bnRlZCBhcyBvbmUgVVRGLTMyIHZhbHVlLiBUaGlzIG1hdGNoZXMgCisqICAgdGhlaXIgaXRlcmF0aW9uIGJlaGF2aW9yLCB3aGljaCBpcyB2aXRhbC4gSXQgYWxzbyBtYXRjaGVzIGNvbW1vbiBkaXNwbGF5IAorKiAgIHByYWN0aWNlIGFzIG1pc3NpbmcgZ2x5cGhzIChzZWUgdGhlIFVuaWNvZGUgU3RhbmRhcmQgU2VjdGlvbiA1LjQsIDUuNSkuCisqICAgPC9saT4KKyogICA8bGk+CisqICAgICA8c3Ryb25nPk9wdGltaXphdGlvbjo8L3N0cm9uZz4gVGhlIG1ldGhvZCBpbXBsZW1lbnRhdGlvbnMgbWF5IG5lZWQgCisqICAgICBvcHRpbWl6YXRpb24gaWYgdGhlIGNvbXBpbGVyIGRvZXNuJ3QgZm9sZCBzdGF0aWMgZmluYWwgbWV0aG9kcy4gU2luY2UgCisqICAgICBzdXJyb2dhdGUgcGFpcnMgd2lsbCBmb3JtIGFuIGV4Y2VlZGluZyBzbWFsbCBwZXJjZW50YWdlIG9mIGFsbCB0aGUgdGV4dCAKKyogICAgIGluIHRoZSB3b3JsZCwgdGhlIHNpbmdsZXRvbiBjYXNlIHNob3VsZCBhbHdheXMgYmUgb3B0aW1pemVkIGZvci4KKyogICA8L2xpPgorKiA8L3VsPgorKiBAYXV0aG9yIE1hcmsgRGF2aXMsIHdpdGggaGVscCBmcm9tIE1hcmt1cyBTY2hlcmVyCisqIEBzaW5jZSBOb3YyNDAwCisqLworCitwdWJsaWMgZmluYWwgY2xhc3MgVVRGMTYKK3sKKyAgLy8gcHVibGljIHZhcmlhYmxlcyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgCisgIC8qKgorICAqIFZhbHVlIHJldHVybmVkIGluIDxjb2RlPjxhIGhyZWY9IiNib3VuZHMoamF2YS5sYW5nLlN0cmluZywgaW50KSI+CisgICogYm91bmRzKCk8L2E+PC9jb2RlPi4KKyAgKiBUaGVzZSB2YWx1ZXMgYXJlIGNob3NlbiBzcGVjaWZpY2FsbHkgc28gdGhhdCBpdCBhY3R1YWxseSByZXByZXNlbnRzIHRoZSAKKyAgKiBwb3NpdGlvbiBvZiB0aGUgY2hhcmFjdGVyIAorICAqIFtvZmZzZXQxNiAtICh2YWx1ZSA+PiAyKSwgb2Zmc2V0MTYgKyAodmFsdWUgJiAzKV0KKyAgKi8KKyAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0lOR0xFX0NIQVJfQk9VTkRBUlkgPSAxLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTEVBRF9TVVJST0dBVEVfQk9VTkRBUlkgPSAyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVFJBSUxfU1VSUk9HQVRFX0JPVU5EQVJZID0gNTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC8vIHByaXZhdGUgdmFyaWFibGVzID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisJCisgIC8qKiAKKwkqIExlYWQgc3Vycm9nYXRlcyB2YWx1ZXMgZnJvbSBMRUFEX1NVUlJPR0FURV9NSU5fVkFMVUVfIHRvIExFQURfU1VSUk9HQVRFX01BWF9WQUxVRV8KKwkqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMRUFEX1NVUlJPR0FURV9NSU5fVkFMVUVfID0gMHhEODAwOworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMRUFEX1NVUlJPR0FURV9NQVhfVkFMVUVfID0gMHhEQkZGOworCQorCS8qKgorCSogU3Vycm9nYXRlIGxlYWQgb2Zmc2V0LCB0byBiZSB1c2VkIHdoZW4gYnJlYWtpbmcgdXAgVVRGMzIgaW50byBzdXJyb2dhdGUKKwkqIHBhaXIKKwkqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMRUFEX1NVUlJPR0FURV9PRkZTRVRfID0gTEVBRF9TVVJST0dBVEVfTUlOX1ZBTFVFXyAtIAorCSAgICAoVUNoYXJhY3Rlci5TVVBQTEVNRU5UQVJZX01JTl9WQUxVRSA+PiBVQ2hhcmFjdGVyLkxFQURfU1VSUk9HQVRFX1NISUZUXyk7CisJCisJLyoqIAorCSogVHJhaWwgc3Vycm9nYXRlcyB2YWx1ZXMgZnJvbSBUUkFJTF9TVVJST0dBVEVfTUlOX1ZBTFVFXyB0byAKKwkqIFRSQUlMX1NVUlJPR0FURV9NQVhfVkFMVUVfCisJKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgVFJBSUxfU1VSUk9HQVRFX01JTl9WQUxVRV8gPSAweERDMDA7IAorCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBUUkFJTF9TVVJST0dBVEVfTUFYX1ZBTFVFXyA9IDB4REZGRjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIC8vIGNvbnN0cnVjdG9yID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgIAorICAvKioKKyAgKiBQcmV2ZW50IGluc3RhbmNlIGZyb20gYmVpbmcgY3JlYXRlZC4KKyAgKi8KKyAgcHJpdmF0ZSBVVEYxNigpIAorICB7CisgIH0KKworICAvLyBwdWJsaWMgbWV0aG9kID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAKKyAgLyoqCisgICogRXh0cmFjdCBhIHNpbmdsZSBVVEYtMzIgdmFsdWUgZnJvbSBhIHN0cmluZy4KKyAgKiBVc2VkIHdoZW4gaXRlcmF0aW5nIGZvcndhcmRzIG9yIGJhY2t3YXJkcyAod2l0aCAKKyAgKiA8Y29kZT5VVEYxNi5nZXRDaGFyQ291bnQoKTwvY29kZT4sIGFzIHdlbGwgYXMgcmFuZG9tIGFjY2Vzcy4gSWYgYSB2YWxpZGl0eSAKKyAgKiBjaGVjayBpcyByZXF1aXJlZCwgdXNlIDxjb2RlPjxhIGhyZWY9Ii4uL1VDaGFyYWN0ZXIuaHRtbCNpc0xlZ2FsKGNoYXIpIj4KKyAgKiBVQ2hhcmFjdGVyLmlzTGVnYWwoKTwvYT48L2NvZGU+IG9uIHRoZSByZXR1cm4gdmFsdWUuCisgICogSWYgdGhlIGNoYXIgcmV0cmlldmVkIGlzIHBhcnQgb2YgYSBzdXJyb2dhdGUgcGFpciwgaXRzIHN1cHBsZW1lbnRhcnkgCisgICogY2hhcmFjdGVyIHdpbGwgYmUgcmV0dXJuZWQuIElmIGEgY29tcGxldGUgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXIgaXMgbm90CisgICogZm91bmQgdGhlIGluY29tcGxldGUgY2hhcmFjdGVyIHdpbGwgYmUgcmV0dXJuZWQKKyAgKiBAcGFyYW0gc291cmNlIGFycmF5IG9mIFVURi0xNiBjaGFycworICAqIEBwYXJhbSBvZmZzZXQxNiBVVEYtMTYgb2Zmc2V0IHRvIHRoZSBzdGFydCBvZiB0aGUgY2hhcmFjdGVyLgorICAqIEByZXR1cm4gVVRGLTMyIHZhbHVlIGZvciB0aGUgVVRGLTMyIHZhbHVlIHRoYXQgY29udGFpbnMgdGhlIGNoYXIgYXQgCisgICogICAgICAgICBvZmZzZXQxNiwgb3RoZXJ3aXNlIC0xIGlmIHRoZXJlJ3MgYW4gZXJyb3IuCisgICogICAgICAgICBUaGUgYm91bmRhcmllcyBvZiB0aGF0IGNvZGVwb2ludCBhcmUgdGhlIHNhbWUgYXMgaW4gCisgICogICAgICAgICA8Y29kZT5ib3VuZHMzMigpPC9jb2RlPi4gCisgICovCisgIHB1YmxpYyBzdGF0aWMgaW50IGNoYXJBdChTdHJpbmcgc291cmNlLCBpbnQgb2Zmc2V0MTYpIAorICB7CisgICAgaWYgKG9mZnNldDE2IDwgMCB8fCBvZmZzZXQxNiA+PSBzb3VyY2UubGVuZ3RoKCkpCisgICAgICByZXR1cm4gLTE7CisgICAgICAKKyAgICBjaGFyIHNpbmdsZSA9IHNvdXJjZS5jaGFyQXQob2Zmc2V0MTYpOworICAgIGlmICghaXNTdXJyb2dhdGUoc2luZ2xlKSkgCisgICAgICByZXR1cm4gc2luZ2xlOworCisgICAgLy8gQ29udmVydCB0aGUgVVRGLTE2IHN1cnJvZ2F0ZSBwYWlyIGlmIG5lY2Vzc2FyeS4KKyAgICAvLyBGb3Igc2ltcGxpY2l0eSBpbiB1c2FnZSwgYW5kIGJlY2F1c2UgdGhlIGZyZXF1ZW5jeSBvZiBwYWlycyBpcyBsb3csCisgICAgLy8gbG9vayBib3RoIGRpcmVjdGlvbnMuCisgICAgICAgICAgICAKKwkgIGlmIChpc0xlYWRTdXJyb2dhdGUoc2luZ2xlKSkgCisJICB7CisJICAgICsrIG9mZnNldDE2OworCSAgICBpZiAoc291cmNlLmxlbmd0aCgpICE9IG9mZnNldDE2KQorCSAgICB7CisJICAgICAgY2hhciB0cmFpbCA9IHNvdXJjZS5jaGFyQXQob2Zmc2V0MTYpOworCSAgICAgIGlmIChpc1RyYWlsU3Vycm9nYXRlKHRyYWlsKSkKKwkgICAgICAgIHJldHVybiBVQ2hhcmFjdGVyLmdldFJhd1N1cHBsZW1lbnRhcnkoc2luZ2xlLCB0cmFpbCk7CisJICAgIH0KKwkgIH0gCisJICBlbHNlIAorCSAgeyAKKwkgICAgLS0gb2Zmc2V0MTY7CisJICAgIGlmIChvZmZzZXQxNiA+PSAwKQorCSAgICB7CisJICAgICAgLy8gc2luZ2xlIGlzIGEgdHJhaWwgc3Vycm9nYXRlIHNvCisJICAgICAgY2hhciBsZWFkID0gc291cmNlLmNoYXJBdChvZmZzZXQxNik7CisJICAgICAgaWYgKGlzTGVhZFN1cnJvZ2F0ZShsZWFkKSkKKwkgICAgICAgIHJldHVybiBVQ2hhcmFjdGVyLmdldFJhd1N1cHBsZW1lbnRhcnkobGVhZCwgc2luZ2xlKTsKKwkgICAgfQorCSAgfSAKKwkgIHJldHVybiBzaW5nbGU7IC8vIHJldHVybiB1bm1hdGNoZWQgc3Vycm9nYXRlCisgIH0KKyAgCisgIC8qKgorICAqIEV4dHJhY3QgYSBzaW5nbGUgVVRGLTMyIHZhbHVlIGZyb20gYSBzdHJpbmcuCisgICogSWYgYSB2YWxpZGl0eSBjaGVjayBpcyByZXF1aXJlZCwgdXNlIAorICAqIDxjb2RlPjxhIGhyZWY9Ii4uL1VDaGFyYWN0ZXIuaHRtbCNpc0xlZ2FsKGNoYXIpIj4KKyAgKiBVQ2hhcmFjdGVyLmlzTGVnYWwoKTwvYT48L2NvZGU+IG9uIHRoZSByZXR1cm4gdmFsdWUuCisgICogSWYgdGJlIGNoYXIgcmV0cmlldmVkIGlzIHBhcnQgb2YgYSBzdXJyb2dhdGUgcGFpciwgaXRzIHN1cHBsZW1lbnRhcnkgCisgICogY2hhcmFjdGVyIHdpbGwgYmUgcmV0dXJuZWQuIElmIGEgY29tcGxldGUgc3VwcGxlbWVudGFyeSBjaGFyYWN0ZXIgaXMgbm90CisgICogZm91bmQgdGhlIGluY29tcGxldGUgY2hhcmFjdGVyIHdpbGwgYmUgcmV0dXJuZWQKKyAgKiBAcmV0dXJuIFVURi0zMiB2YWx1ZSBmb3IgdGhlIFVURi0zMiB2YWx1ZSB0aGF0IGNvbnRhaW5zIHRoZSBjaGFyIGF0IAorICAqICAgICAgICAgb2Zmc2V0MTYuIFRoZSBib3VuZGFyaWVzIG9mIHRoYXQgY29kZXBvaW50IGFyZSB0aGUgc2FtZSBhcyBpbiAKKyAgKiAgICAgICAgIDxjb2RlPmJvdW5kczMyKCk8L2NvZGU+LiAKKyAgKiBAcGFyYW0gc291cmNlIGFycmF5IG9mIFVURi0xNiBjaGFycworICAqIEBwYXJhbSBvZmZzZXQzMiBVVEYtMzIgb2Zmc2V0IHRvIHRoZSBzdGFydCBvZiB0aGUgY2hhcmFjdGVyLgorICAqIEByZXR1cm4gYSBzaW5nbGUgVVRGMzIgdmFsdWUsIG90aGVyd2lzZSAtMSBpZiB0aGVyZSdzIGFuIGVycm9yCisgICovCisgIHB1YmxpYyBzdGF0aWMgaW50IGNoYXJBdENvZGVQb2ludE9mZnNldChTdHJpbmcgc291cmNlLCBpbnQgb2Zmc2V0MzIpIAorICB7CisgICAgaW50IG9mZnNldDE2ID0gZmluZE9mZnNldEZyb21Db2RlUG9pbnQoc291cmNlLCBvZmZzZXQzMik7CisgICAgcmV0dXJuIGNoYXJBdChzb3VyY2UsIG9mZnNldDE2KTsKKyAgfQorICAKKyAgLyoqCisgICogRGV0ZXJtaW5lcyBob3cgbWFueSBjaGFycyB0aGlzIGNoYXIzMiByZXF1aXJlcy4KKyAgKiBJZiBhIHZhbGlkaXR5IGNoZWNrIGlzIHJlcXVpcmVkLCB1c2UgPGNvZGU+CisgICogPGEgaHJlZj0iLi4vVUNoYXJhY3Rlci5odG1sI2lzTGVnYWwoY2hhcikiPmlzTGVnYWwoKTwvYT48L2NvZGU+IG9uIAorICAqIGNoYXIzMiBiZWZvcmUgY2FsbGluZy4KKyAgKiBAcGFyYW0gY2ggdGhlIGlucHV0IGNoYXJhY3Rlci4KKyAgKiBAcmV0dXJuIDIgaWYgaXMgaW4gc3Vycm9nYXRlIHNwYWNlLCBvdGhlcndpc2UgMS4gCisgICovCisgIHB1YmxpYyBzdGF0aWMgaW50IGdldENoYXJDb3VudChpbnQgY2hhcjMyKSAKKyAgeworICAgIGlmIChjaGFyMzIgPCBVQ2hhcmFjdGVyLlNVUFBMRU1FTlRBUllfTUlOX1ZBTFVFKSB7CisgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDI7CisgIH0KKyAgCisgIC8qKgorICAqIFJldHVybnMgdGhlIHR5cGUgb2YgdGhlIGJvdW5kYXJpZXMgYXJvdW5kIHRoZSBjaGFyIGF0IG9mZnNldDE2LgorICAqIFVzZWQgZm9yIHJhbmRvbSBhY2Nlc3MuCisgICogQHBhcmFtIHNvdXJjZSB0ZXh0IHRvIGFuYWx5c2UKKyAgKiBAcGFyYW0gb2Zmc2V0MTYgVVRGLTE2IG9mZnNldAorICAqIEByZXR1cm4gPHVsPgorICAqICAgICAgICAgICA8bGk+IFNJTkdMRV9DSEFSX0JPVU5EQVJZIDogYSBzaW5nbGUgY2hhcjsgdGhlIGJvdW5kcyBhcmUgCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb2Zmc2V0MTYsIG9mZnNldDE2KzFdCisgICogICAgICAgICAgIDxsaT4gTEVBRF9TVVJST0dBVEVfQk9VTkRBUlkgOiBhIHN1cnJvZ2F0ZSBwYWlyIHN0YXJ0aW5nIGF0IAorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0MTY7IAorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGJvdW5kcyBhcmUgCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb2Zmc2V0MTYsIG9mZnNldDE2ICsgMl0KKyAgKiAgICAgICAgICAgPGxpPiBUUkFJTF9TVVJST0dBVEVfQk9VTkRBUlkgOiBhIHN1cnJvZ2F0ZSBwYWlyIHN0YXJ0aW5nIGF0IAorICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldDE2IC0gMTsgdGhlIGJvdW5kcyBhcmUgCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW29mZnNldDE2IC0gMSwgb2Zmc2V0MTYgKyAxXQorICAqICAgICAgICAgPC91bD4KKyAgKiAgICAgICAgIEZvciBiaXQtdHdpZGRsZXJzLCB0aGUgcmV0dXJuIHZhbHVlcyBmb3IgdGhlc2UgYXJlIGNob3NlbiBzbyB0aGF0IAorICAqICAgICAgICAgdGhlIGJvdW5kYXJpZXMgY2FuIGJlIGdvdHRlbiBieToKKyAgKiAgICAgICAgIFtvZmZzZXQxNiAtICh2YWx1ZSA+PiAyKSwgb2Zmc2V0MTYgKyAodmFsdWUgJiAzKV0uCisgICogQGV4Y2VwdGlvbiBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGlmIG9mZnNldDE2IGlzIG91dCBvZiBib3VuZHMuCisgICovCisgIHB1YmxpYyBzdGF0aWMgaW50IGJvdW5kcyhTdHJpbmcgc291cmNlLCBpbnQgb2Zmc2V0MTYpIAorICB7CisgICAgY2hhciBjaCA9IHNvdXJjZS5jaGFyQXQob2Zmc2V0MTYpOworICAgIGlmIChpc1N1cnJvZ2F0ZShjaCkpCisgICAgICBpZiAoaXNMZWFkU3Vycm9nYXRlKGNoKSkgCisgICAgICB7CisgICAgICAgaWYgKCsrIG9mZnNldDE2IDwgc291cmNlLmxlbmd0aCgpICYmIAorICAgICAgICAgICBpc1RyYWlsU3Vycm9nYXRlKHNvdXJjZS5jaGFyQXQob2Zmc2V0MTYpKSkgeworICAgICAgICAgcmV0dXJuIExFQURfU1VSUk9HQVRFX0JPVU5EQVJZOworICAgICAgIH0KKyAgICAgIH0gCisgICAgICBlbHNlIAorICAgICAgICAvLyBpc1RyYWlsU3Vycm9nYXRlKGNoKSwgc28KKyAgICAgICAgaWYgKC0tIG9mZnNldDE2ID49IDAgJiYgaXNMZWFkU3Vycm9nYXRlKHNvdXJjZS5jaGFyQXQob2Zmc2V0MTYpKSkgeworICAgICAgICAgIHJldHVybiBUUkFJTF9TVVJST0dBVEVfQk9VTkRBUlk7CisgICAgICAgIH0KKyAgICAgICAgICAKKyAgICByZXR1cm4gU0lOR0xFX0NIQVJfQk9VTkRBUlk7CisgIH0KKyAgCisgIC8qKgorICAqIFJldHVybnMgdGhlIHR5cGUgb2YgdGhlIGJvdW5kYXJpZXMgYXJvdW5kIHRoZSBjaGFyIGF0IG9mZnNldDMyLgorICAqIFVzZWQgZm9yIHJhbmRvbSBhY2Nlc3MuCisgICogQHBhcmFtIHNvdXJjZSB0ZXh0IHRvIGFuYWx5c2UKKyAgKiBAcGFyYW0gb2Zmc2V0MzIgVVRGLTMyIG9mZnNldAorICAqIEByZXR1cm4gPHVsPgorICAqICAgICAgICAgICA8bGk+IFNJTkdMRV9DSEFSX0JPVU5EQVJZIDogYSBzaW5nbGUgY2hhcjsgdGhlIGJvdW5kcyBhcmUgCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb2Zmc2V0MzIsIG9mZnNldDMyICsgMV0KKyAgKiAgICAgICAgICAgPGxpPiBMRUFEX1NVUlJPR0FURV9CT1VOREFSWSA6IGEgc3Vycm9nYXRlIHBhaXIgc3RhcnRpbmcgYXQgCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQzMjsgCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYm91bmRzIGFyZSAKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtvZmZzZXQzMiwgb2Zmc2V0MzIgKyAyXQorICAqICAgICAgICAgICA8bGk+IFRSQUlMX1NVUlJPR0FURV9CT1VOREFSWSA6IGEgc3Vycm9nYXRlIHBhaXIgc3RhcnRpbmcgYXQgCisgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0MzIgLSAxOyB0aGUgYm91bmRzIGFyZSAKKyAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb2Zmc2V0MzIgLSAxLCBvZmZzZXQzMiArIDFdCisgICogICAgICAgICA8L3VsPgorICAqICAgICAgICAgRm9yIGJpdC10d2lkZGxlcnMsIHRoZSByZXR1cm4gdmFsdWVzIGZvciB0aGVzZSBhcmUgY2hvc2VuIHNvIHRoYXQgCisgICogICAgICAgICB0aGUgYm91bmRhcmllcyBjYW4gYmUgZ290dGVuIGJ5OgorICAqICAgICAgICAgW29mZnNldDMyIC0gKHZhbHVlID4+IDIpLCBvZmZzZXQzMiArICh2YWx1ZSAmIDMpXS4KKyAgKiBAZXhjZXB0aW9uIFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaWYgb2Zmc2V0MzIgaXMgb3V0IG9mIGJvdW5kcy4KKyAgKi8KKyAgcHVibGljIHN0YXRpYyBpbnQgYm91bmRzQXRDb2RlUG9pbnRPZmZzZXQoU3RyaW5nIHNvdXJjZSwgaW50IG9mZnNldDMyKSAKKyAgeworICAgIGludCBvZmZzZXQxNiA9IGZpbmRPZmZzZXRGcm9tQ29kZVBvaW50KHNvdXJjZSwgb2Zmc2V0MzIpOworICAgIHJldHVybiBib3VuZHMoc291cmNlLCBvZmZzZXQxNik7CisgIH0KKworICAvKioKKyAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgdGhlIDxiPmNvZGUgdmFsdWUgaXMgYSBzdXJyb2dhdGUuCisgICogQHBhcmFtIGNoIHRoZSBpbnB1dCBjaGFyYWN0ZXIuCisgICogQHJldHVybiB0cnVlIGlmZiB0aGUgaW5wdXQgY2hhcmFjdGVyIGlzIGEgc3Vycm9nYXRlLgorICAqLworICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNTdXJyb2dhdGUoY2hhciBjaGFyMTYpIAorICB7CisgICAgcmV0dXJuIExFQURfU1VSUk9HQVRFX01JTl9WQUxVRV8gPD0gY2hhcjE2ICYmIAorICAgICAgICAgICBjaGFyMTYgPD0gVFJBSUxfU1VSUk9HQVRFX01BWF9WQUxVRV87CisgIH0KKyAgICAKKyAgLyoqCisgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBjaGFyYWN0ZXIgaXMgYSB0cmFpbCBzdXJyb2dhdGUuCisgICogQHBhcmFtIGNoYXIxNiB0aGUgaW5wdXQgY2hhcmFjdGVyLgorICAqIEByZXR1cm4gdHJ1ZSBpZmYgdGhlIGlucHV0IGNoYXJhY3RlciBpcyBhIHRyYWlsIHN1cnJvZ2F0ZS4KKyAgKi8KKyAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzVHJhaWxTdXJyb2dhdGUoY2hhciBjaGFyMTYpIAorICB7CisgICAgcmV0dXJuIChUUkFJTF9TVVJST0dBVEVfTUlOX1ZBTFVFXyA8PSBjaGFyMTYgJiYgCisgICAgICAgICAgICBjaGFyMTYgPD0gVFJBSUxfU1VSUk9HQVRFX01BWF9WQUxVRV8pOworICB9CisgICAgCisgIC8qKgorICAqIERldGVybWluZXMgd2hldGhlciB0aGUgY2hhcmFjdGVyIGlzIGEgbGVhZCBzdXJyb2dhdGUuCisgICogQHBhcmFtIGNoYXIxNiB0aGUgaW5wdXQgY2hhcmFjdGVyLgorICAqIEByZXR1cm4gdHJ1ZSBpZmYgdGhlIGlucHV0IGNoYXJhY3RlciBpcyBhIGxlYWQgc3Vycm9nYXRlCisgICovCisgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc0xlYWRTdXJyb2dhdGUoY2hhciBjaGFyMTYpIAorICB7CisgICAgcmV0dXJuIExFQURfU1VSUk9HQVRFX01JTl9WQUxVRV8gPD0gY2hhcjE2ICYmIAorICAgICAgICAgICBjaGFyMTYgPD0gTEVBRF9TVVJST0dBVEVfTUFYX1ZBTFVFXzsKKyAgfQorICAgICAgICAKKyAgLyoqCisgICogUmV0dXJucyB0aGUgbGVhZCBzdXJyb2dhdGUuCisgICogSWYgYSB2YWxpZGl0eSBjaGVjayBpcyByZXF1aXJlZCwgdXNlIAorICAqIDxjb2RlPjxhIGhyZWY9Ii4uL1VDaGFyYWN0ZXIuaHRtbCNpc0xlZ2FsKGNoYXIpIj5pc0xlZ2FsKCk8L2E+PC9jb2RlPiBvbiAKKyAgKiBjaGFyMzIgYmVmb3JlIGNhbGxpbmcuCisgICogQHBhcmFtIGNoYXIzMiB0aGUgaW5wdXQgY2hhcmFjdGVyLgorICAqIEByZXR1cm4gbGVhZCBzdXJyb2dhdGUgaWYgdGhlIGdldENoYXJDb3VudChjaCkgaXMgMjsgPGJyPgorICAqICAgICAgICAgYW5kIDAgb3RoZXJ3aXNlIChub3RlOiAwIGlzIG5vdCBhIHZhbGlkIGxlYWQgc3Vycm9nYXRlKS4KKyAgKi8KKyAgcHVibGljIHN0YXRpYyBpbnQgZ2V0TGVhZFN1cnJvZ2F0ZShpbnQgY2hhcjMyKSAKKyAgeworICAgIGlmIChjaGFyMzIgPj0gVUNoYXJhY3Rlci5TVVBQTEVNRU5UQVJZX01JTl9WQUxVRSkgeworICAgICAgcmV0dXJuIExFQURfU1VSUk9HQVRFX09GRlNFVF8gKyAKKyAgICAgICAgICAgICAoY2hhcjMyID4+IFVDaGFyYWN0ZXIuTEVBRF9TVVJST0dBVEVfU0hJRlRfKTsKKyAgICB9CisgICAgICAgIAorICAgIHJldHVybiAwOworICB9CisgICAgCisgIC8qKgorICAqIFJldHVybnMgdGhlIHRyYWlsIHN1cnJvZ2F0ZS4KKyAgKiBJZiBhIHZhbGlkaXR5IGNoZWNrIGlzIHJlcXVpcmVkLCB1c2UgCisgICogPGNvZGU+PGEgaHJlZj0iLi4vVUNoYXJhY3Rlci5odG1sI2lzTGVnYWwoY2hhcikiPmlzTGVnYWwoKTwvYT48L2NvZGU+IG9uIAorICAqIGNoYXIzMiBiZWZvcmUgY2FsbGluZy4KKyAgKiBAcGFyYW0gY2hhcjMyIHRoZSBpbnB1dCBjaGFyYWN0ZXIuCisgICogQHJldHVybiB0aGUgdHJhaWwgc3Vycm9nYXRlIGlmIHRoZSBnZXRDaGFyQ291bnQoY2gpIGlzIDI7IDxicj5vdGhlcndpc2UgdGhlIAorICAqICAgICAgICAgY2hhcmFjdGVyIGl0c2VsZgorICAqLworICBwdWJsaWMgc3RhdGljIGludCBnZXRUcmFpbFN1cnJvZ2F0ZShpbnQgY2hhcjMyKSAKKyAgeworICAgIGlmIChjaGFyMzIgPj0gVUNoYXJhY3Rlci5TVVBQTEVNRU5UQVJZX01JTl9WQUxVRSkgeworICAgICAgcmV0dXJuIFRSQUlMX1NVUlJPR0FURV9NSU5fVkFMVUVfICsgKGNoYXIzMiAmIAorICAgICAgICAgICAgIFVDaGFyYWN0ZXIuVFJBSUxfU1VSUk9HQVRFX01BU0tfKTsgICAgICAgCisgICAgfQorICAgICAgCisgICAgcmV0dXJuIChjaGFyKWNoYXIzMjsKKyAgfQorICAgIAorICAvKioKKyAgKiBDb252ZW5pZW5jZSBtZXRob2QgY29ycmVzcG9uZGluZyB0byBTdHJpbmcudmFsdWVPZihjaGFyKS4gUmV0dXJucyBhIG9uZSAKKyAgKiBvciB0d28gY2hhciBzdHJpbmcgY29udGFpbmluZyB0aGUgVVRGLTMyIHZhbHVlIGluIFVURjE2IGZvcm1hdC4gSWYgdGhlIAorICAqIGlucHV0IHZhbHVlIGNhbid0IGJlIGNvbnZlcnRlZCwgaXQgc3Vic3RpdHV0ZXMgUkVQTEFDRU1FTlRfQ0hBUi4gSWYgYSAKKyAgKiB2YWxpZGl0eSBjaGVjayBpcyByZXF1aXJlZCwgdXNlIAorICAqIDxhIGhyZWY9Ii4uL1VDaGFyYWN0ZXIuaHRtbCNpc0xlZ2FsKGNoYXIpIj5pc0xlZ2FsKCk8L2E+PC9jb2RlPiBvbiAKKyAgKiBjaGFyMzIgYmVmb3JlIGNhbGxpbmcuCisgICogQHBhcmFtIGNoYXIzMiB0aGUgaW5wdXQgY2hhcmFjdGVyLgorICAqIEByZXR1cm4gc3RyaW5nIHZhbHVlIG9mIGNoYXIzMiBpbiBVVEYxNiBmb3JtYXQKKyAgKi8KKyAgcHVibGljIHN0YXRpYyBTdHJpbmcgdmFsdWVPZihpbnQgY2hhcjMyKQorICB7CisgICAgaWYgKGNoYXIzMiA8IFVDaGFyYWN0ZXIuTUlOX1ZBTFVFIHx8IGNoYXIzMiA+IFVDaGFyYWN0ZXIuTUFYX1ZBTFVFKSB7CisgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIGNvZGVwb2ludCIpOworICAgIH0KKyAgICBpZiAoY2hhcjMyIDwgVUNoYXJhY3Rlci5TVVBQTEVNRU5UQVJZX01JTl9WQUxVRSkgeworICAgICAgcmV0dXJuIFN0cmluZy52YWx1ZU9mKChjaGFyKWNoYXIzMik7CisgICAgfQorICAgIGNoYXIgc3RyW10gPSBuZXcgY2hhclsyXTsgICAKKyAgICBzdHJbMF0gPSAoY2hhcikoTEVBRF9TVVJST0dBVEVfT0ZGU0VUXyArIAorICAgICAgICAgICAgICAgICAgICAoY2hhcjMyID4+IFVDaGFyYWN0ZXIuTEVBRF9TVVJST0dBVEVfU0hJRlRfKSk7CisgICAgc3RyWzFdID0gKGNoYXIpKFRSQUlMX1NVUlJPR0FURV9NSU5fVkFMVUVfICsgCisgICAgICAgICAgICAgICAgICAgIChjaGFyMzIgJiBVQ2hhcmFjdGVyLlRSQUlMX1NVUlJPR0FURV9NQVNLXykpOworICAgIHJldHVybiBTdHJpbmcudmFsdWVPZihzdHIpOworICB9CisgIAorICAvKioKKyAgKiBSZXR1cm5zIHRoZSBVVEYtMTYgb2Zmc2V0IHRoYXQgY29ycmVzcG9uZHMgdG8gYSBVVEYtMzIgb2Zmc2V0LiAKKyAgKiBVc2VkIGZvciByYW5kb20gYWNjZXNzLiBTZWUgdGhlIDxhIG5hbWU9Il90b3BfIj5jbGFzcyBkZXNjcmlwdGlvbjwvYT4gZm9yIAorICAqIG5vdGVzIG9uIHJvdW5kdHJpcHBpbmcuCisgICogQHBhcmFtIHNvdXJjZSB0aGUgVVRGLTE2IHN0cmluZworICAqIEBwYXJhbSBvZmZzZXQzMiBVVEYtMzIgb2Zmc2V0CisgICogQHJldHVybiBVVEYtMTYgb2Zmc2V0IAorICAqIEBleGNlcHRpb24gU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBpZiBvZmZzZXQzMiBpcyBvdXQgb2YgYm91bmRzLgorICAqLworICBwdWJsaWMgc3RhdGljIGludCBmaW5kT2Zmc2V0RnJvbUNvZGVQb2ludChTdHJpbmcgc291cmNlLCBpbnQgb2Zmc2V0MzIpIAorICB7CisgICAgY2hhciBjaDsKKyAgICBpbnQgc2l6ZSA9IHNvdXJjZS5sZW5ndGgoKSwKKyAgICAgICAgcmVzdWx0ID0gMCwKKyAgICAgICAgY291bnQgPSBvZmZzZXQzMjsKKyAgICB3aGlsZSAocmVzdWx0IDwgc2l6ZSAmJiBjb3VudCA+IDApCisgICAgeworICAgICAgY2ggPSBzb3VyY2UuY2hhckF0KHJlc3VsdCk7CisgICAgICBpZiAoaXNMZWFkU3Vycm9nYXRlKGNoKSAmJiAoKHJlc3VsdCArIDEpIDwgc2l6ZSkgJiYgCisgICAgICAgICAgaXNUcmFpbFN1cnJvZ2F0ZShzb3VyY2UuY2hhckF0KHJlc3VsdCArIDEpKSkgeworICAgICAgICByZXN1bHQgKys7CisgICAgICB9CisgICAgICAgIAorICAgICAgY291bnQgLS07CisgICAgICByZXN1bHQgKys7CisgICAgfQorICAgIGlmIChyZXN1bHQgPj0gc2l6ZSkgeworICAgICAgdGhyb3cgbmV3IFN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24ob2Zmc2V0MzIpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworICB9CisgIAorICAvKioKKyAgKiBSZXR1cm5zIHRoZSBVVEYtMzIgb2Zmc2V0IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZpcnN0IFVURi0zMiBib3VuZGFyeSBhdCBvciAKKyAgKiBhZnRlciB0aGUgZ2l2ZW4gVVRGLTE2IG9mZnNldC4gVXNlZCBmb3IgcmFuZG9tIGFjY2Vzcy4gU2VlIHRoZSAKKyAgKiA8YSBuYW1lPSJfdG9wXyI+Y2xhc3MgZGVzY3JpcHRpb248L2E+IGZvciBub3RlcyBvbiByb3VuZHRyaXBwaW5nLjxicj4KKyAgKiA8aT5Ob3RlOiBJZiB0aGUgVVRGLTE2IG9mZnNldCBpcyBpbnRvIHRoZSBtaWRkbGUgb2YgYSBzdXJyb2dhdGUgcGFpciwgdGhlbgorICAqIHRoZSBVVEYtMzIgb2Zmc2V0IG9mIHRoZSA8c3Ryb25nPmxlYWQ8L3N0cm9uZz4gb2YgdGhlIHBhaXIgaXMgcmV0dXJuZWQuCisgICogPC9pPgorICAqIDxwPgorICAqIFRvIGZpbmQgdGhlIFVURi0zMiBsZW5ndGggb2YgYSBzdHJpbmcsIHVzZToKKyAgKiAgIDxwcmU+CisgICogICAgIGxlbjMyID0gZ2V0T2Zmc2V0MzIoc291cmNlLCBzb3VyY2UubGVuZ3RoKCkpOworICAqICAgPC9wcmU+CisgICogPC9wPgorICAqIDxwPgorICAqIEBwYXJhbSBzb3VyY2UgdGV4dCB0byBhbmFseXNlCisgICogQHBhcmFtIG9mZnNldDE2IFVURi0xNiBvZmZzZXQgPCBzb3VyY2UgdGV4dCBsZW5ndGguCisgICogQHJldHVybiBVVEYtMzIgb2Zmc2V0CisgICogQGV4Y2VwdGlvbiBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGlmIG9mZnNldDE2IGlzIG91dCBvZiBib3VuZHMuCisgICovCisgIHB1YmxpYyBzdGF0aWMgaW50IGZpbmRDb2RlUG9pbnRPZmZzZXQoU3RyaW5nIHNvdXJjZSwgaW50IG9mZnNldDE2KSAKKyAgeworICAgIGlmIChvZmZzZXQxNiA+PSBzb3VyY2UubGVuZ3RoKCkpIHsKKyAgICAgIHRocm93IG5ldyBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uKG9mZnNldDE2KTsKKyAgICB9CisgICAgIAorICAgIGludCByZXN1bHQgPSAwOworICAgIGNoYXIgY2g7CisgICAgYm9vbGVhbiBoYWRMZWFkU3Vycm9nYXRlID0gZmFsc2U7CisgICAgCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBvZmZzZXQxNjsgKysgaSkgCisgICAgeworICAgICAgY2ggPSBzb3VyY2UuY2hhckF0KGkpOworICAgICAgaWYgKGhhZExlYWRTdXJyb2dhdGUgJiYgaXNUcmFpbFN1cnJvZ2F0ZShjaCkpIHsKKyAgICAgICAgaGFkTGVhZFN1cnJvZ2F0ZSA9IGZhbHNlOyAgICAgICAgICAgLy8gY291bnQgdmFsaWQgdHJhaWwgYXMgemVybworICAgICAgfQorICAgICAgZWxzZQorICAgICAgeworICAgICAgICBoYWRMZWFkU3Vycm9nYXRlID0gaXNMZWFkU3Vycm9nYXRlKGNoKTsKKyAgICAgICAgKysgcmVzdWx0OyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY291bnQgb3RoZXJzIGFzIDEKKyAgICAgIH0KKyAgICB9CisgICAgLy8gZW5kIG9mIHNvdXJjZSBiZWluZyBhIHN1cHBsZW1lbnRhcnkgY2hhcmFjdGVyCisgICAgLy8gc2hpZnQgcmVzdWx0IGJhY2sgdG8gdGhlIHN0YXJ0IG9mIHRoZSBzdXBwbGVtZW50YXJ5IGNoYXJhY3RlcgorICAgIGlmIChoYWRMZWFkU3Vycm9nYXRlICYmIGlzVHJhaWxTdXJyb2dhdGUoc291cmNlLmNoYXJBdChvZmZzZXQxNikpKSB7CisgICAgICByZXN1bHQgLS07CisgICAgfQorICAgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisgIC8qKgorICAqIEFwcGVuZCBhIHNpbmdsZSBVVEYtMzIgdmFsdWUgdG8gdGhlIGVuZCBvZiBhIFN0cmluZ0J1ZmZlci4KKyAgKiBJZiBhIHZhbGlkaXR5IGNoZWNrIGlzIHJlcXVpcmVkLCB1c2UgCisgICogPGEgaHJlZj0iLi4vVUNoYXJhY3Rlci5odG1sI2lzTGVnYWwoY2hhcikiPmlzTGVnYWwoKTwvYT48L2NvZGU+IG9uIAorICAqIGNoYXIzMiBiZWZvcmUgY2FsbGluZy4KKyAgKiBAcGFyYW0gY2hhcjMyIHZhbHVlIHRvIGFwcGVuZC4gSWYgb3V0IG9mIGJvdW5kcywgc3Vic3RpdHV0ZXMgCisgICogICAgICAgICAgICAgICBVVEYzMi5SRVBMQUNFTUVOVF9DSEFSLgorICAqIEByZXR1cm4gdGhlIHVwZGF0ZWQgU3RyaW5nQnVmZmVyCisgICovCisgIHB1YmxpYyBzdGF0aWMgU3RyaW5nQnVmZmVyIGFwcGVuZChTdHJpbmdCdWZmZXIgdGFyZ2V0LCBpbnQgY2hhcjMyKQorICB7CisgICAgLy8gQ2hlY2sgZm9yIGlycmVndWxhciB2YWx1ZXMKKyAgICBpZiAoY2hhcjMyIDwgVUNoYXJhY3Rlci5NSU5fVkFMVUUgfHwgY2hhcjMyID4gVUNoYXJhY3Rlci5NQVhfVkFMVUUpIHsKKyAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgY29kZXBvaW50Iik7CisgICAgfQorICAgICAgICAKKyAgICAvLyBXcml0ZSB0aGUgVVRGLTE2IHZhbHVlcworICAgIGlmIChjaGFyMzIgPj0gVUNoYXJhY3Rlci5TVVBQTEVNRU5UQVJZX01JTl9WQUxVRSkgCisgICAgeworICAgICAgdGFyZ2V0LmFwcGVuZCgoY2hhcikoTEVBRF9TVVJST0dBVEVfT0ZGU0VUXyArIAorICAgICAgICAgICAgICAgICAgICAoY2hhcjMyID4+IFVDaGFyYWN0ZXIuTEVBRF9TVVJST0dBVEVfU0hJRlRfKSkpOworCSAgICB0YXJnZXQuYXBwZW5kKChjaGFyKShUUkFJTF9TVVJST0dBVEVfTUlOX1ZBTFVFXyArIAorICAgICAgICAgICAgICAgICAgICAoY2hhcjMyICYgVUNoYXJhY3Rlci5UUkFJTF9TVVJST0dBVEVfTUFTS18pKSk7CisJICB9IAorCSAgZWxzZSB7CisJICAgIHRhcmdldC5hcHBlbmQoKGNoYXIpY2hhcjMyKTsKKwkgIH0KKwkgIHJldHVybiB0YXJnZXQ7CisJfQorICAgIAorICAvKioKKyAgKiBDb21wYXJlIHN0cmluZ3MgdXNpbmcgVW5pY29kZSBjb2RlIHBvaW50IG9yZGVyLCBpbnN0ZWFkIG9mIFVURi0xNiBjb2RlIAorICAqIHVuaXQgb3JkZXIuCisgICovCisgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2xhc3MgU3RyaW5nQ29tcGFyYXRvciBpbXBsZW1lbnRzIGphdmEudXRpbC5Db21wYXJhdG9yIAorICB7CisgICAgLyoqCisgICAgKiBTdGFuZGFyZCBTdHJpbmcgY29tcGFyZS4gT25seSBvbmUgc21hbGwgc2VjdGlvbiBpcyBkaWZmZXJlbnQsIG1hcmtlZCBpbiAKKyAgICAqIHRoZSBjb2RlLgorICAgICovCisgICAgcHVibGljIGludCBjb21wYXJlKE9iamVjdCBhLCBPYmplY3QgYikgCisgICAgeworCSAgICBpZiAoYSA9PSBiKSB7CisJICAgICAgcmV0dXJuIDA7CisJICAgIH0KKyAgICAgIGlmIChhID09IG51bGwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgICAgfQorICAgICAgaWYgKGIgPT0gbnVsbCkgeworICAgICAgICByZXR1cm4gMTsKKyAgICAgIH0KKyAgICAgICAgICAKKyAgICAgIFN0cmluZyBzYSA9IChTdHJpbmcpIGE7CisgICAgICBTdHJpbmcgc2IgPSAoU3RyaW5nKSBiOworICAgICAgaW50IGxlbmEgPSBzYS5sZW5ndGgoKTsKKyAgICAgIGludCBsZW5iID0gc2IubGVuZ3RoKCk7CisgICAgICBpbnQgbGVuID0gbGVuYTsKKyAgICAgIGlmIChsZW4gPiBsZW5iKSB7CisgICAgICAgIGxlbiA9IGxlbmI7CisgICAgICB9CisgICAgICAgIAorICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47ICsraSkgCisgICAgICB7CisgICAgICAgIGNoYXIgY2EgPSBzYS5jaGFyQXQoaSk7CisgICAgICAgIGNoYXIgY2IgPSBzYi5jaGFyQXQoaSk7CisgICAgICAgIGlmIChjYSA9PSBjYikgeworICAgICAgICAgIGNvbnRpbnVlOyAvLyBza2lwIHJlbWFwIGlmIGVxdWFsCisgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgLy8gc3RhcnQgb2Ygb25seSBkaWZmZXJlbnQgc2VjdGlvbgorICAgICAgICAvLyB3aGF0IHRoaXMgcGFydCBkb2VzIGlzIHRvIHJlYXJyYW5nZSB0aGUgY2hhcmFjdGVycyAweEUwMDAgdG8gMHhGRkZGCisgICAgICAgIC8vIHRvIHRoZSByZWdpb24gc3RhcnRpbmcgZnJvbSAweEQ4MDAKKyAgICAgICAgLy8gYW5kIHNoaWZ0IHRoZSBzdXJyb2dhdGUgY2hhcmFjdGVycyB0byBhYm92ZSB0aGlzIHJlZ2lvbgorICAgICAgICBpZiAoY2EgPj0gTEVBRF9TVVJST0dBVEVfTUlOX1ZBTFVFXykgeworICAgICAgICAgIGNhICs9IChjYSA8PSBUUkFJTF9TVVJST0dBVEVfTUFYX1ZBTFVFXykgPyAweDIwMDAgOiAtMHg4MDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNiID49IExFQURfU1VSUk9HQVRFX01JTl9WQUxVRV8pIHsKKyAgICAgICAgICBjYiArPSAoY2IgPD0gVFJBSUxfU1VSUk9HQVRFX01BWF9WQUxVRV8pID8gMHgyMDAwIDogLTB4ODAwOworICAgICAgICB9CisgICAgICAgIC8vIGVuZCBvZiBvbmx5IGRpZmZlcmVudCBzZWN0aW9uCisgICAgICAgICAgICAgICAgCisgICAgICAgIGlmIChjYSA8IGNiKSB7CisgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgICAgCisgICAgICAgIHJldHVybiAxOyAvLyB3YXNuJ3QgZXF1YWwsIHNvIHJldHVybiAxCisgICAgICB9CisgICAgICAKKyAgICAgIGlmIChsZW5hIDwgbGVuYikgeworICAgICAgICByZXR1cm4gLTE7CisgICAgICB9CisgICAgICAgIAorICAgICAgaWYgKGxlbmEgPiBsZW5iKSB7CisgICAgICAgIHJldHVybiAxOworICAgICAgfQorICAgICAgICAgICAgCisgICAgICByZXR1cm4gMDsKKyAgICB9CisgIH0JCisgIAorICAvKioKKyAgKiBOdW1iZXIgb2YgY29kZXBvaW50cyBpbiBhIFVURjE2IFN0cmluZworICAqIEBwYXJhbSBzIFVURjE2IHN0cmluZworICAqIEByZXR1cm4gbnVtYmVyIG9mIGNvZGVwb2ludCBpbiBzdHJpbmcKKyAgKi8KKyAgcHVibGljIHN0YXRpYyBpbnQgY291bnRDb2RlUG9pbnQoU3RyaW5nIHMpCisgIHsKKyAgICByZXR1cm4gZmluZENvZGVQb2ludE9mZnNldChzLCBzLmxlbmd0aCgpIC0gMSkgKyAxOworICB9CisgIAorICAvKioKKyAgKiBTZXRzIGEgY29kZSBwb2ludCBpbnRvIGEgVVRGMzIgcG9zaXRpb24uCisgICogQHBhcmFtIHN0ciBzdHJpbmdidWZmZXIKKyAgKiBAcGFyYW0gb2Zmc2V0MzIgVVRGMzIgcG9zaXRpb24gdG8gaW5zZXJ0IGludG8KKyAgKiBAcGFyYW0gY2hhcjMyIGNvZGUgcG9pbnQKKyAgKi8KKyAgcHVibGljIHN0YXRpYyB2b2lkIHNldENoYXJBdENvZGVQb2ludE9mZnNldChTdHJpbmdCdWZmZXIgc3RyLCBpbnQgb2Zmc2V0MzIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNoYXIzMikKKyAgeworICAgIGludCBvZmZzZXQxNiA9IGZpbmRPZmZzZXRGcm9tQ29kZVBvaW50KHN0ci50b1N0cmluZygpLCBvZmZzZXQzMik7CisgICAgc2V0Q2hhckF0KHN0ciwgb2Zmc2V0MTYsIGNoYXIzMik7CisgIH0KKyAgCisgIC8qKgorICAqIFNldCBhIGNvZGUgcG9pbnQgaW50byBhIFVURjE2IHBvc2l0aW9uLgorICAqIEBwYXJhbSBzb3VyY2Ugc3RyaW5nYnVmZmVyCisgICogQHBhcmFtIG9mZnNldDE2IFVURjE2IHBvc2l0aW9uIHRvIGluc2VydCBpbnRvCisgICogQHBhcmFtIGNoYXIzMiBjb2RlIHBvaW50CisgICovCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXRDaGFyQXQoU3RyaW5nQnVmZmVyIHNvdXJjZSwgaW50IG9mZnNldDE2LCBpbnQgY2hhcjMyKQorICB7CisgICAgaW50IGNvdW50ID0gMTsKKyAgICAgIAorICAgIGNoYXIgc2luZ2xlID0gc291cmNlLmNoYXJBdChvZmZzZXQxNik7CisgICAgCisgICAgaWYgKGlzU3Vycm9nYXRlKHNpbmdsZSkpIAorICAgIHsKKyAgICAgIC8vIHBhaXJzIG9mIHRoZSBzdXJyb2dhdGUgd2l0aCBvZmZzZXQxNiBhdCB0aGUgbGVhZCBjaGFyIGZvdW5kCisgICAgICBpZiAoaXNMZWFkU3Vycm9nYXRlKHNpbmdsZSkgJiYgKHNvdXJjZS5sZW5ndGgoKSA+IG9mZnNldDE2ICsgMSkgJiYKKyAgICAgICAgICBpc1RyYWlsU3Vycm9nYXRlKHNvdXJjZS5jaGFyQXQob2Zmc2V0MTYgKyAxKSkpIHsKKwkgICAgICBjb3VudCArKzsKKwkgICAgfQorCSAgICBlbHNlIHsKKwkgICAgICAvLyBwYWlycyBvZiB0aGUgc3Vycm9nYXRlIHdpdGggb2Zmc2V0MTYgYXQgdGhlIHRyYWlsIGNoYXIgZm91bmQKKwkgICAgICBpZiAoaXNUcmFpbFN1cnJvZ2F0ZShzaW5nbGUpICYmIChvZmZzZXQxNiA+IDApICYmCisJICAgICAgICAgIGlzTGVhZFN1cnJvZ2F0ZShzb3VyY2UuY2hhckF0KG9mZnNldDE2IC0xKSkpCisJICAgICAgeworCSAgICAgICAgb2Zmc2V0MTYgLS07CisJICAgICAgICBjb3VudCArKzsKKwkgICAgICB9CisJICAgIH0KKwkgIH0KKwkgIHNvdXJjZS5yZXBsYWNlKG9mZnNldDE2LCBvZmZzZXQxNiArIGNvdW50LCB2YWx1ZU9mKGNoYXIzMikpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvVW5pY29kZUNvbXByZXNzb3IuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvVW5pY29kZUNvbXByZXNzb3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jNjg2NDZlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9Vbmljb2RlQ29tcHJlc3Nvci5qYXZhCkBAIC0wLDAgKzEsMTAwOSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9BdHRpYy9Vbmljb2RlQ29tcHJlc3Nvci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDA0OjA3OjI1ICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXh0OworCisvKioKKyogQSBjb21wcmVzc2lvbiBlbmdpbmUgaW1wbGVtZW50aW5nIHRoZSBTdGFuZGFyZCBDb21wcmVzc2lvbiBTY2hlbWUKKyogZm9yIFVuaWNvZGUgKFNDU1UpIGFzIG91dGxpbmVkIGluIDxBCisqIEhSRUY9Imh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyNiI+VW5pY29kZSBUZWNobmljYWwKKyogUmVwb3J0ICM2PC9BPi4KKyoKKyogPFA+VGhlIFNDU1Ugd29ya3MgYnkgdXNpbmcgZHluYW1pY2FsbHkgcG9zaXRpb25lZCA8RU0+d2luZG93czwvRU0+CisqIGNvbnNpc3Rpbmcgb2YgMTI4IGNvbnNlY3V0aXZlIGNoYXJhY3RlcnMgaW4gVW5pY29kZS4gIER1cmluZyBjb21wcmVzc2lvbiwgCisqIGNoYXJhY3RlcnMgd2l0aGluIGEgd2luZG93IGFyZSBlbmNvZGVkIGluIHRoZSBjb21wcmVzc2VkIHN0cmVhbSBhcyB0aGUgYnl0ZXMgCisqIDxUVD4weDdGIC0gMHhGRjwvVFQ+LiBUaGUgU0NTVSBwcm92aWRlcyB0cmFuc3BhcmVuY3kgZm9yIHRoZSBjaGFyYWN0ZXJzIAorKiAoYnl0ZXMpIGJldHdlZW4gPFRUPlUrMDAwMCAtIFUrMDBGRjwvVFQ+LiAgVGhlIFNDU1UgYXBwcm94aW1hdGVzIHRoZSAKKyogc3RvcmFnZSBzaXplIG9mIHRyYWRpdGlvbmFsIGNoYXJhY3RlciBzZXRzLCBmb3IgZXhhbXBsZSAxIGJ5dGUgcGVyCisqIGNoYXJhY3RlciBmb3IgQVNDSUkgb3IgTGF0aW4tMSB0ZXh0LCBhbmQgMiBieXRlcyBwZXIgY2hhcmFjdGVyIGZvciBDSksKKyogaWRlb2dyYXBocy48L1A+CisqCisqIDxQPjxTVFJPTkc+VVNBR0U8L1NUUk9ORz48L1A+CisqCisqIDxQPlRoZSBzdGF0aWMgbWV0aG9kcyBvbiA8VFQ+VW5pY29kZUNvbXByZXNzb3I8L1RUPiBtYXkgYmUgdXNlZCBpbiBhCisqIHN0cmFpZ2h0Zm9yd2FyZCBtYW5uZXIgdG8gY29tcHJlc3Mgc2ltcGxlIHN0cmluZ3M6PC9QPgorKgorKiA8UFJFPgorKiAgU3RyaW5nIHMgPSAuLi4gOyAvLyBnZXQgc3RyaW5nIGZyb20gc29tZXdoZXJlCisqICBieXRlIFtdIGNvbXByZXNzZWQgPSBVbmljb2RlQ29tcHJlc3Nvci5jb21wcmVzcyhzKTsKKyogPC9QUkU+CisqCisqIDxQPlRoZSBzdGF0aWMgbWV0aG9kcyBoYXZlIGEgZmFpcmx5IGxhcmdlIG1lbW9yeSBmb290cHJpbnQuCisqIEZvciBmaW5lci1ncmFpbmVkIGNvbnRyb2wgb3ZlciBtZW1vcnkgdXNhZ2UsIAorKiA8VFQ+VW5pY29kZUNvbXByZXNzb3I8L1RUPiBvZmZlcnMgbW9yZSBwb3dlcmZ1bCBBUElzIGFsbG93aW5nCisqIGl0ZXJhdGl2ZSBjb21wcmVzc2lvbjo8L1A+CisqCisqIDxQUkU+CisqICAvLyBDb21wcmVzcyBhbiBhcnJheSAiY2hhcnMiIG9mIGxlbmd0aCAibGVuIiB1c2luZyBhIGJ1ZmZlciBvZiA1MTIgYnl0ZXMKKyogIC8vIHRvIHRoZSBPdXRwdXRTdHJlYW0gIm91dCIKKyoKKyogIFVuaWNvZGVDb21wcmVzc29yIG15Q29tcHJlc3NvciAgICAgICAgID0gbmV3IFVuaWNvZGVDb21wcmVzc29yKCk7CisqICBmaW5hbCBzdGF0aWMgaW50ICBCVUZTSVpFICAgICAgICAgICAgICA9IDUxMjsKKyogIGJ5dGUgW10gICAgICAgICAgIGJ5dGVCdWZmZXIgICAgICAgICAgID0gbmV3IGJ5dGUgWyBCVUZTSVpFIF07CisqICBpbnQgICAgICAgICAgICAgICBieXRlc1dyaXR0ZW4gICAgICAgICA9IDA7CisqICBpbnQgW10gICAgICAgICAgICB1bmljaGFyc1JlYWQgICAgICAgICA9IG5ldyBpbnQgWzFdOworKiAgaW50ICAgICAgICAgICAgICAgdG90YWxDaGFyc0NvbXByZXNzZWQgPSAwOworKiAgaW50ICAgICAgICAgICAgICAgdG90YWxCeXRlc1dyaXR0ZW4gICAgPSAwOworKgorKiAgZG8geworKiAgICAvLyBkbyB0aGUgY29tcHJlc3Npb24KKyogICAgYnl0ZXNXcml0dGVuID0gbXlDb21wcmVzc29yLmNvbXByZXNzKGNoYXJzLCB0b3RhbENoYXJzQ29tcHJlc3NlZCwgCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4sIHVuaWNoYXJzUmVhZCwKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVCdWZmZXIsIDAsIEJVRlNJWkUpOworKgorKiAgICAvLyBkbyBzb21ldGhpbmcgd2l0aCB0aGUgY3VycmVudCBzZXQgb2YgYnl0ZXMKKyogICAgb3V0LndyaXRlKGJ5dGVCdWZmZXIsIDAsIGJ5dGVzV3JpdHRlbik7CisqCisqICAgIC8vIHVwZGF0ZSB0aGUgbm8uIG9mIGNoYXJhY3RlcnMgY29tcHJlc3NlZAorKiAgICB0b3RhbENoYXJzQ29tcHJlc3NlZCArPSB1bmljaGFyc1JlYWRbMF07CisqCisqICAgIC8vIHVwZGF0ZSB0aGUgbm8uIG9mIGJ5dGVzIHdyaXR0ZW4KKyogICAgdG90YWxCeXRlc1dyaXR0ZW4gKz0gYnl0ZXNXcml0dGVuOworKgorKiAgfSB3aGlsZSh0b3RhbENoYXJzQ29tcHJlc3NlZCA8IGxlbik7CisqCisqICBteUNvbXByZXNzb3IucmVzZXQoKTsgLy8gcmV1c2UgY29tcHJlc3NvcgorKiA8L1BSRT4KKyoKKyogQHNlZSBVbmljb2RlRGVjb21wcmVzc29yCisqCisqIEBhdXRob3IgU3RlcGhlbiBGLiBCb290aAorKiBAdmVyc2lvbiAxLjUgMDUgQXVnIDk5CisqIEB2ZXJzaW9uIDEuNCAyMSBKdWwgOTkKKyogQHZlcnNpb24gMS4zIDEwIE1hciA5OQorKiBAdmVyc2lvbiAxLjIgMDggTWFyIDk5CisqIEB2ZXJzaW9uIDEuMSAxMSBKYW4gOTkgCisqLworCisvKgorKgorKiBDT01QUkVTU0lPTiBTVFJBVEVHWQorKgorKiBTaW5nbGUgQnl0ZSBNb2RlCisqCisqIFRoZXJlIGFyZSB0aHJlZSByZWxldmFudCBjYXNlcy4KKyogSWYgdGhlIGNoYXJhY3RlciBpcyBpbiB0aGUgY3VycmVudCB3aW5kb3cgb3IgaXMgTGF0aW4tMSAoVSswMDAwLAorKiBVKzAwMDksIFUrMDAwQSwgVSswMDBELCBVKzAwMjAgLSBVKzAwN0YpLCB0aGUgY2hhcmFjdGVyIGlzIHBsYWNlZAorKiBkaXJlY3RseSBpbiB0aGUgc3RyZWFtIGFzIGEgc2luZ2xlIGJ5dGUuCisqCisqICAxLiBDdXJyZW50IGNoYXJhY3RlciBpcyBpbiBkZWZpbmVkLCBpbmFjdGl2ZSB3aW5kb3cuCisqICAyLiBDdXJyZW50IGNoYXJhY3RlciBpcyBpbiB1bmRlZmluZWQgd2luZG93LgorKiAgMy4gQ3VycmVudCBjaGFyYWN0ZXIgaXMgdW5jb21wcmVzc2libGUgVW5pY29kZSAoVSszNDAwIC0gVStERkZGKS4KKyogCisqICAxLiBDdXJyZW50IGNoYXJhY3RlciBpcyBpbiBkZWZpbmVkLCBpbmFjdGl2ZSB3aW5kb3cKKyogICAgQS4gTG9vayBhaGVhZCB0d28gY2hhcmFjdGVycworKiAgICBCLiBJZiBib3RoIGZvbGxvd2luZyBjaGFyYWN0ZXJzIGluIHNhbWUgd2luZG93IGFzIGN1cnJlbnQgY2hhcmFjdGVyLCAKKyogICAgICAgc3dpdGNoIHRvIGRlZmluZWQgd2luZG93CisqICAgIEMuIElmIG9ubHkgbmV4dCBjaGFyYWN0ZXIgaXMgaW4gc2FtZSB3aW5kb3cgYXMgY3VycmVudCBjaGFyYWN0ZXIsIAorKiAgICAgICBxdW90ZSBkZWZpbmVkIHdpbmRvdworKiAgICBELiBJZiBuZWl0aGVyIG9mIGZvbGxvd2luZyBjaGFyYWN0ZXJzIGlzIGluIHNhbWUgd2luZG93IGFzIGN1cnJlbnQsIAorKiAgICAgICBxdW90ZSBkZWZpbmVkIHdpbmRvdworKiAgIAorKiAgMi4gQ3VycmVudCBjaGFyYWN0ZXIgaXMgaW4gdW5kZWZpbmVkIHdpbmRvdworKiAgICBBLiBMb29rIGFoZWFkIHR3byBjaGFyYWN0ZXJzCisqICAgIEIuIElmIGJvdGggZm9sbG93aW5nIGNoYXJhY3RlcnMgaW4gc2FtZSB3aW5kb3cgYXMgY3VycmVudCBjaGFyYWN0ZXIsIAorKiAgICAgICBkZWZpbmUgbmV3IHdpbmRvdworKiAgICBDLiBJZiBvbmx5IG5leHQgY2hhcmFjdGVyIGluIHNhbWUgd2luZG93IGFzIGN1cnJlbnQgY2hhcmFjdGVyLCAKKyogICAgICAgc3dpdGNoIHRvIFVuaWNvZGUgbW9kZQorKiAgICAgICBOT1RFOiBUaGlzIGNvc3RzIHVzIG9uZSBleHRyYSBieXRlLiAgSG93ZXZlciwgCisqICAgICAgICBzaW5jZSB3ZSBoYXZlIGEgbGltaXRlZCBudW1iZXIgb2Ygd2luZG93cyB0byB3b3JrIHdpdGgsIGl0IGlzIAorKiAgICAgICAgYXNzdW1lZCB0aGUgY29zdCB3aWxsIHBheSBvZmYgbGF0ZXIgaW4gc2F2aW5ncyBmcm9tIGEgd2luZG93IHdpdGgKKyogICAgICAgIG1vcmUgY2hhcmFjdGVycyBpbiBpdC4KKyogICAgRC4gSWYgbmVpdGhlciBvZiBmb2xsb3dpbmcgY2hhcmFjdGVycyBpbiBzYW1lIHdpbmRvdyBhcyBjdXJyZW50LCAKKyogICAgICAgc3dpdGNoIHRvIFVuaWNvZGUgbW9kZS4gIEFsdGVybmF0aXZlIHRvIGFib3ZlOiBqdXN0IHF1b3RlIAorKiAgICAgICBVbmljb2RlIChzYW1lIGJ5dGUgY29zdCkKKyogICAKKyogIDMuIEN1cnJlbnQgY2hhcmFjdGVyIGlzIHVuY29tcHJlc3NpYmxlIFVuaWNvZGUgKFUrMzQwMCAtIFUrREZGRikKKyogICAgQS4gTG9vayBhaGVhZCBvbmUgY2hhcmFjdGVyCisqICAgIEIuIElmIG5leHQgY2hhcmFjdGVyIGluIG5vbi1jb21wcmVzc2libGUgcmVnaW9uLCBzd2l0Y2ggdG8gCisqICAgICAgIFVuaWNvZGUgbW9kZQorKiAgICBDLiBJZiBuZXh0IGNoYXJhY3RlciBub3QgaW4gbm9uLWNvbXByZXNzaWJsZSByZWdpb24sIHF1b3RlIFVuaWNvZGUKKyogICAKKyoKKyogVGhlIGZvbGxvd2luZyBjaGFydCBpbGx1c3RyYXRlcyB0aGUgYnl0ZXMgcmVxdWlyZWQgZm9yIGVuY29kaW5nIGNoYXJhY3RlcnMKKyogaW4gZWFjaCBwb3NzaWJsZSB3YXkKKyoKKyogCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTSU5HTEUgQllURSBNT0RFCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhcmFjdGVycyBpbiBhIHJvdyB3aXRoIHNhbWUgaW5kZXgKKyogICAgICAgICAgICAgICB0YWcgZW5jb3VudGVyZWQgICAgICAgICAgICAgMSAgICAgICAyICAgICAgIDMgICAgICAgNAorKiAgICAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAgICAgICAgICAgICAgIG5vbmUgKGluIGN1cnJlbnQgd2luZG93KSAgICAxICAgICAgIDIgICAgICAgMyAgICAgICA0CisqCisqICAgICAgICAgICAgICAgcXVvdGUgVW5pY29kZSAgICAgICAgICAgICAgIDMgICAgICAgNiAgICAgICA5ICAgICAgIDEyCisqCisqICAgd2luZG93IG5vdCAgc3dpdGNoIHRvIFVuaWNvZGUgICAgICAgICAgIDMgICAgICAgNSAgICAgICA3ICAgICAgIDkgICAgIGJ5dGUKKyogICBkZWZpbmVkICAgICBkZWZpbmUgd2luZG93ICAgICAgICAgICAgICAgMyAgICAgICA0ICAgICAgIDUgICAgICAgNiAgICAgY29zdAorKiAgICAgIAorKiAgIHdpbmRvdyAgICAgIHN3aXRjaCB0byB3aW5kb3cgICAgICAgICAgICAyICAgICAgIDMgICAgICAgNCAgICAgICA1CisqICAgZGVmaW5lZCAgICAgcXVvdGUgd2luZG93ICAgICAgICAgICAgICAgIDIgICAgICAgNCAgICAgICA2ICAgICAgIDgKKyoKKyogIFVuaWNvZGUgTW9kZQorKgorKiBUaGVyZSBhcmUgdHdvIHJlbGV2YW50IGNhc2VzLgorKiBJZiB0aGUgY2hhcmFjdGVyIGlzIGluIHRoZSBub24tY29tcHJlc3NpYmxlIHJlZ2lvbgorKiAoVSszNDAwIC0gVStERkZGKSwgdGhlIGNoYXJhY3RlciBpcyBzaW1wbHkgd3JpdHRlbiB0byB0aGUKKyogc3RyZWFtIGFzIGEgcGFpciBvZiBieXRlcy4KKyoKKyogMS4gQ3VycmVudCBjaGFyYWN0ZXIgaXMgaW4gZGVmaW5lZCwgaW5hY3RpdmUgd2luZG93LgorKiAyLiBDdXJyZW50IGNoYXJhY3RlciBpcyBpbiB1bmRlZmluZWQgd2luZG93LgorKgorKiAgMS5DdXJyZW50IGNoYXJhY3RlciBpcyBpbiBkZWZpbmVkLCBpbmFjdGl2ZSB3aW5kb3cKKyogICAgQS4gTG9vayBhaGVhZCBvbmUgY2hhcmFjdGVyCisqICAgIEIuIElmIG5leHQgY2hhcmFjdGVyIGhhcyBzYW1lIGluZGV4IGFzIGN1cnJlbnQgY2hhcmFjdGVyLCAKKyogICAgICAgc3dpdGNoIHRvIGRlZmluZWQgd2luZG93IChhbmQgc3dpdGNoIHRvIHNpbmdsZS1ieXRlIG1vZGUpCisqICAgIEMuIElmIG5vdCwganVzdCBwdXQgYnl0ZXMgaW4gc3RyZWFtCisqICAgCisqICAKKyogIDIuIEN1cnJlbnQgY2hhcmFjdGVyIGlzIGluIHVuZGVmaW5lZCB3aW5kb3cKKyogICAgQS4gTG9vayBhaGVhZCB0d28gY2hhcmFjdGVycworKiAgICBCLiBJZiBib3RoIGluIHNhbWUgd2luZG93IGFzIGN1cnJlbnQgY2hhcmFjdGVyLCBkZWZpbmUgd2luZG93IAorKiAgICAgICAoYW5kIHN3aXRjaCB0byBzaW5nbGUtYnl0ZSBtb2RlKQorKiAgICBDLiBJZiBvbmx5IG5leHQgY2hhcmFjdGVyIGluIHNhbWUgd2luZG93LCBqdXN0IHB1dCBieXRlcyBpbiBzdHJlYW0KKyogICAgICAgIE5PVEU6IFRoaXMgY29zdHMgdXMgb25lIGV4dHJhIGJ5dGUuICBIb3dldmVyLCAKKyogICAgICAgIHNpbmNlIHdlIGhhdmUgYSBsaW1pdGVkIG51bWJlciBvZiB3aW5kb3dzIHRvIHdvcmsgd2l0aCwgaXQgaXMgCisqICAgICAgICBhc3N1bWVkIHRoZSBjb3N0IHdpbGwgcGF5IG9mZiBsYXRlciBpbiBzYXZpbmdzIGZyb20gYSB3aW5kb3cgd2l0aCAKKyogICAgICAgIG1vcmUgY2hhcmFjdGVycyBpbiBpdC4KKyogICAgRC4gSWYgbmVpdGhlciBpbiBzYW1lIHdpbmRvdywgcHV0IGJ5dGVzIGluIHN0cmVhbQorKiAgIAorKgorKiBUaGUgZm9sbG93aW5nIGNoYXJ0IGlsbHVzdHJhdGVzIHRoZSBieXRlcyByZXF1aXJlZCBmb3IgZW5jb2RpbmcgY2hhcmFjdGVycworKiBpbiBlYWNoIHBvc3NpYmxlIHdheQorKgorKiAKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVOSUNPREUgTU9ERQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoYXJhY3RlcnMgaW4gYSByb3cgd2l0aCBzYW1lIGluZGV4CisqICAgICAgICAgICAgICAgdGFnIGVuY291bnRlcmVkICAgICAgICAgICAgIDEgICAgICAgMiAgICAgICAzICAgICAgIDQKKyogICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyogICAgICAgICAgICAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgMiAgICAgICA0ICAgICAgIDYgICAgICAgOAorKgorKiAgICAgICAgICAgICAgIHF1b3RlIFVuaWNvZGUgICAgICAgICAgICAgICAzICAgICAgIDYgICAgICAgOSAgICAgICAxMgorKgorKiAgIHdpbmRvdyBub3QgIGRlZmluZSB3aW5kb3cgICAgICAgICAgICAgICAzICAgICAgIDQgICAgICAgNSAgICAgICA2ICAgICBieXRlCisqICAgZGVmaW5lZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvc3QKKyogICB3aW5kb3cgICAgICBzd2l0Y2ggdG8gd2luZG93ICAgICAgICAgICAgMiAgICAgICAzICAgICAgIDQgICAgICAgNQorKiAgIGRlZmluZWQKKyovCitwdWJsaWMgZmluYWwgY2xhc3MgVW5pY29kZUNvbXByZXNzb3IgaW1wbGVtZW50cyBTQ1NVCit7CisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIENsYXNzIHZhcmlhYmxlcworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8qKiBGb3IgcXVpY2sgaWRlbnRpZmljYXRpb24gb2YgYSBieXRlIGFzIGEgc2luZ2xlLWJ5dGUgbW9kZSB0YWcgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIFtdIHNTaW5nbGVUYWdUYWJsZSA9IHsKKyAgICAgICAgLy8gdGFibGUgZ2VuZXJhdGVkIGJ5IENvbXByZXNzaW9uVGFibGVHZW5lcmF0b3IKKyAgICAgICAgZmFsc2UsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIHRydWUsIGZhbHNlLAorCWZhbHNlLCB0cnVlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwKKwl0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLAorCXRydWUsIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UgICAKKyAgICB9OworCisgICAgLyoqIEZvciBxdWljayBpZGVudGlmaWNhdGlvbiBvZiBhIGJ5dGUgYXMgYSB1bmljb2RlIG1vZGUgdGFnICovCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBbXSBzVW5pY29kZVRhZ1RhYmxlID0geworICAgICAgICAvLyB0YWJsZSBnZW5lcmF0ZWQgYnkgQ29tcHJlc3Npb25UYWJsZUdlbmVyYXRvcgorICAgICAgICBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLAorCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIHRydWUsCisJdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwKKwl0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCB0cnVlLCBmYWxzZSwgZmFsc2UsCisJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwKKwlmYWxzZSwgZmFsc2UgCisgICAgfTsKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBJbnN0YW5jZSB2YXJpYWJsZXMKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgCisgICAgLyoqIEFsaWFzIHRvIGN1cnJlbnQgZHluYW1pYyB3aW5kb3cgKi8KKyAgICBwcml2YXRlIGludCAgICAgICBmQ3VycmVudFdpbmRvdyAgID0gMDsKKworICAgIC8qKiBEeW5hbWljIGNvbXByZXNzaW9uIHdpbmRvdyBvZmZzZXRzICovCisgICAgcHJpdmF0ZSBpbnQgW10gICAgZk9mZnNldHMgICAgICAgICA9IG5ldyBpbnQgWyBOVU1XSU5ET1dTIF07CisKKyAgICAvKiogQ3VycmVudCBjb21wcmVzc2lvbiBtb2RlICovCisgICAgcHJpdmF0ZSBpbnQgICAgICAgZk1vZGUgICAgICAgICAgICA9IFNJTkdMRUJZVEVNT0RFOworCisgICAgLyoqIEtlZXBzIGNvdW50IG9mIHRpbWVzIGNoYXJhY3RlciBpbmRpY2VzIGFyZSBlbmNvdW50ZXJlZCAqLworICAgIHByaXZhdGUgaW50IFtdICAgIGZJbmRleENvdW50ICAgICAgPSBuZXcgaW50IFsgTUFYSU5ERVggKyAxIF07CisKKyAgICAvKiogVGhlIHRpbWUgc3RhbXBzIGluZGljYXRlIHdoZW4gYSB3aW5kb3cgd2FzIGxhc3QgZGVmaW5lZCAqLworICAgIHByaXZhdGUgaW50IFtdICAgIGZUaW1lU3RhbXBzICAgICAgPSBuZXcgaW50IFsgTlVNV0lORE9XUyBdOworICAgIAorICAgIC8qKiBUaGUgY3VycmVudCB0aW1lIHN0YW1wICovCisgICAgcHJpdmF0ZSBpbnQgICAgICAgZlRpbWVTdGFtcCAgICAgICA9IDA7CisgICAgCisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBVbmljb2RlQ29tcHJlc3Nvci4KKyAgICAgKiBTZXRzIGFsbCB3aW5kb3dzIHRvIHRoZWlyIGRlZmF1bHQgdmFsdWVzLgorICAgICAqIEBzZWUgI3Jlc2V0CisgICAgICovCisgICAgcHVibGljIFVuaWNvZGVDb21wcmVzc29yKCkKKyAgICB7CisJcmVzZXQoKTsgICAgICAgICAgICAgIC8vIGluaXRpYWxpemUgdG8gZGVmYXVsdHMKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb21wcmVzcyBhIHN0cmluZyBpbnRvIGEgYnl0ZSBhcnJheS4KKyAgICAgKiBAcGFyYW0gYnVmZmVyIFRoZSBzdHJpbmcgdG8gY29tcHJlc3MuCisgICAgICogQHJldHVybiBBIGJ5dGUgYXJyYXkgY29udGFpbmluZyB0aGUgY29tcHJlc3NlZCBjaGFyYWN0ZXJzLgorICAgICAqIEBzZWUgI2NvbXByZXNzKGNoYXIgW10sIGludCwgaW50KQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYnl0ZSBbXSBjb21wcmVzcyhTdHJpbmcgYnVmZmVyKQorICAgIHsKKwlyZXR1cm4gY29tcHJlc3MoYnVmZmVyLnRvQ2hhckFycmF5KCksIDAsIGJ1ZmZlci5sZW5ndGgoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcHJlc3MgYSBVbmljb2RlIGNoYXJhY3RlciBhcnJheSBpbnRvIGEgYnl0ZSBhcnJheS4KKyAgICAgKiBAcGFyYW0gYnVmZmVyIFRoZSBjaGFyYWN0ZXIgYnVmZmVyIHRvIGNvbXByZXNzLgorICAgICAqIEBwYXJhbSBzdGFydCBUaGUgc3RhcnQgb2YgdGhlIGNoYXJhY3RlciBydW4gdG8gY29tcHJlc3MuCisgICAgICogQHBhcmFtIGxpbWl0IFRoZSBsaW1pdCBvZiB0aGUgY2hhcmFjdGVyIHJ1biB0byBjb21wcmVzcy4KKyAgICAgKiBAcmV0dXJuIEEgYnl0ZSBhcnJheSBjb250YWluaW5nIHRoZSBjb21wcmVzc2VkIGNoYXJhY3RlcnMuCisgICAgICogQHNlZSAjY29tcHJlc3MoU3RyaW5nKQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgYnl0ZSBbXSBjb21wcmVzcyhjaGFyIFtdIGJ1ZmZlciwKKwkJCQkgICBpbnQgc3RhcnQsCisJCQkJICAgaW50IGxpbWl0KQorICAgIHsKKwlVbmljb2RlQ29tcHJlc3NvciBjb21wID0gbmV3IFVuaWNvZGVDb21wcmVzc29yKCk7CisKKwkvLyB1c2UgYSBidWZmZXIgdGhhdCB3ZSBrbm93IHdpbGwgbmV2ZXIgb3ZlcmZsb3cKKwkvLyBpbiB0aGUgd29yc3QgY2FzZSwgZWFjaCBjaGFyYWN0ZXIgd2lsbCB0YWtlIDMgYnl0ZXMKKwkvLyB0byBlbmNvZGU6IFVRVSwgaGlieXRlLCBsb2J5dGUuICBJbiB0aGlzIGNhc2UsIHRoZQorCS8vIGNvbXByZXNzZWQgZGF0YSB3aWxsIGxvb2sgbGlrZTogU0NVLCBVUVUsIGhpYnl0ZSwgbG9ieXRlLCAuLi4KKwkvLyBidWZmZXIgbXVzdCBiZSBhdCBsZWFzdCA0IGJ5dGVzIGluIHNpemUKKwlpbnQgbGVuID0gTWF0aC5tYXgoNCwgMyAqIChsaW1pdCAtIHN0YXJ0KSArIDEpOworCWJ5dGUgW10gdGVtcCA9IG5ldyBieXRlIFtsZW5dOworCisJaW50IGJ5dGVDb3VudCA9IGNvbXAuY29tcHJlc3MoYnVmZmVyLCBzdGFydCwgbGltaXQsIG51bGwsIAorCQkJCSAgICAgIHRlbXAsIDAsIGxlbik7CisKKwlieXRlIFtdIHJlc3VsdCA9IG5ldyBieXRlIFtieXRlQ291bnRdOworCVN5c3RlbS5hcnJheWNvcHkodGVtcCwgMCwgcmVzdWx0LCAwLCBieXRlQ291bnQpOworCXJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcHJlc3MgYSBVbmljb2RlIGNoYXJhY3RlciBhcnJheSBpbnRvIGEgYnl0ZSBhcnJheS4KKyAgICAgKgorICAgICAqIFRoaXMgZnVuY3Rpb24gd2lsbCBvbmx5IGNvbnN1bWUgaW5wdXQgdGhhdCBjYW4gYmUgY29tcGxldGVseQorICAgICAqIG91dHB1dC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjaGFyQnVmZmVyIFRoZSBjaGFyYWN0ZXIgYnVmZmVyIHRvIGNvbXByZXNzLgorICAgICAqIEBwYXJhbSBjaGFyQnVmZmVyU3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSBjaGFyYWN0ZXIgcnVuIHRvIGNvbXByZXNzLgorICAgICAqIEBwYXJhbSBjaGFyQnVmZmVyTGltaXQgVGhlIGxpbWl0IG9mIHRoZSBjaGFyYWN0ZXIgcnVuIHRvIGNvbXByZXNzLgorICAgICAqIEBwYXJhbSBjaGFyc1JlYWQgQSBvbmUtZWxlbWVudCBhcnJheS4gIElmIG5vdCBudWxsLCBvbiByZXR1cm4gCisgICAgICogdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHJlYWQgZnJvbSBjaGFyQnVmZmVyLgorICAgICAqIEBwYXJhbSBieXRlQnVmZmVyIEEgYnVmZmVyIHRvIHJlY2VpdmUgdGhlIGNvbXByZXNzZWQgZGF0YS4gIFRoaXMgCisgICAgICogYnVmZmVyIG11c3QgYmUgYXQgbWluaW11bSBmb3VyIGJ5dGVzIGluIHNpemUuCisgICAgICogQHBhcmFtIGJ5dGVCdWZmZXJTdGFydCBUaGUgc3RhcnRpbmcgb2Zmc2V0IHRvIHdoaWNoIHRvIHdyaXRlIAorICAgICAqIGNvbXByZXNzZWQgZGF0YS4KKyAgICAgKiBAcGFyYW0gYnl0ZUJ1ZmZlckxpbWl0IFRoZSBsaW1pdGluZyBvZmZzZXQgZm9yIHdyaXRpbmcgY29tcHJlc3NlZCBkYXRhLgorICAgICAqIEByZXR1cm4gVGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIHRvIGJ5dGVCdWZmZXIuCisgICAgICovCisgICAgcHVibGljIGludCBjb21wcmVzcyhjaGFyIFtdICAgICBjaGFyQnVmZmVyLAorCQkJaW50ICAgICAgICAgY2hhckJ1ZmZlclN0YXJ0LAorCQkJaW50ICAgICAgICAgY2hhckJ1ZmZlckxpbWl0LAorCQkJaW50IFtdICAgICAgY2hhcnNSZWFkLAorCQkJYnl0ZSBbXSAgICAgYnl0ZUJ1ZmZlciwKKwkJCWludCAgICAgICAgIGJ5dGVCdWZmZXJTdGFydCwKKwkJCWludCAgICAgICAgIGJ5dGVCdWZmZXJMaW1pdCkKKyAgICB7CisgICAgICAgIC8vIHRoZSBjdXJyZW50IHBvc2l0aW9uIGluIHRoZSB0YXJnZXQgYnl0ZSBidWZmZXIKKwlpbnQgICAgIGJ5dGVQb3MgICAgICAgPSBieXRlQnVmZmVyU3RhcnQ7CisJCisJLy8gdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHNvdXJjZSB1bmljb2RlIGNoYXJhY3RlciBidWZmZXIKKwlpbnQgICAgIHVjUG9zICAgICAgICAgPSBjaGFyQnVmZmVyU3RhcnQ7CisJCisJLy8gdGhlIGN1cnJlbnQgdW5pY29kZSBjaGFyYWN0ZXIgZnJvbSB0aGUgc291cmNlIGJ1ZmZlcgorCWludCAgICAgY3VyVUMgICAgICAgICA9IElOVkFMSURDSEFSOworCQorCS8vIHRoZSBpbmRleCBmb3IgdGhlIGN1cnJlbnQgY2hhcmFjdGVyCisgICAgICAgIGludCAgICAgY3VySW5kZXggICAgICA9IC0xOworICAgICAgICAKKwkvLyBsb29rIGFoZWFkCisJaW50ICAgICBuZXh0VUMgICAgICAgID0gSU5WQUxJRENIQVI7CisJaW50ICAgICBmb3J3YXJkVUMgICAgID0gSU5WQUxJRENIQVI7CisJCisgICAgICAgIC8vIHRlbXBvcmFyeSBmb3Igd2luZG93IHNlYXJjaGluZworCWludCAgICAgd2hpY2hXaW5kb3cgICA9IDA7CisJCisJLy8gaGlnaCBhbmQgbG93IGJ5dGVzIG9mIHRoZSBjdXJyZW50IHVuaWNvZGUgY2hhcmFjdGVyCisJaW50ICAgICBoaUJ5dGUgICAgICAgID0gMDsKKwlpbnQgICAgIGxvQnl0ZSAgICAgICAgPSAwOworCisKKwkvLyBieXRlQnVmZmVyIG11c3QgYmUgYXQgbGVhc3QgNCBieXRlcyBpbiBzaXplCisJaWYoYnl0ZUJ1ZmZlci5sZW5ndGggPCA0IHx8IChieXRlQnVmZmVyTGltaXQgLSBieXRlQnVmZmVyU3RhcnQpIDwgNCkKKwkgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiYnl0ZUJ1ZmZlci5sZW5ndGggPCA0Iik7CisKKyAgICBtYWluTG9vcDoKKwl3aGlsZSh1Y1BvcyA8IGNoYXJCdWZmZXJMaW1pdCAmJiBieXRlUG9zIDwgYnl0ZUJ1ZmZlckxpbWl0KSB7CisJICAgIHN3aXRjaChmTW9kZSkgeworCQkvLyBtYWluIHNpbmdsZSBieXRlIG1vZGUgY29tcHJlc3Npb24gbG9vcAorCSAgICBjYXNlIFNJTkdMRUJZVEVNT0RFOgorCSAgICBzaW5nbGVCeXRlTW9kZUxvb3A6CisJICAgIHdoaWxlKHVjUG9zIDwgY2hhckJ1ZmZlckxpbWl0ICYmIGJ5dGVQb3MgPCBieXRlQnVmZmVyTGltaXQpIHsKKwkJLy8gZ2V0IGN1cnJlbnQgY2hhcgorCQljdXJVQyA9IGNoYXJCdWZmZXJbdWNQb3MrK107CisKKwkJLy8gZ2V0IG5leHQgY2hhcgorCQlpZih1Y1BvcyA8IGNoYXJCdWZmZXJMaW1pdCkgCisJCSAgICBuZXh0VUMgPSBjaGFyQnVmZmVyW3VjUG9zXTsKKwkJZWxzZQorCQkgICAgbmV4dFVDID0gSU5WQUxJRENIQVI7CisJCQorCQkvLyBjaGFycyBsZXNzIHRoYW4gMHgwMDgwIChleGNsdWRpbmcgdGFncykgZ28gc3RyYWlnaHQKKwkJLy8gaW4gc3RyZWFtCisJCWlmKGN1clVDIDwgMHgwMDgwKSB7CisJCSAgICBsb0J5dGUgPSBjdXJVQyAmIDB4RkY7CisKKwkJICAgIC8vIHdlIG5lZWQgdG8gY2hlY2sgYW5kIG1ha2Ugc3VyZSB3ZSBkb24ndAorCQkgICAgLy8gYWNjaWRlbnRhbGx5IHdyaXRlIGEgc2luZ2xlIGJ5dGUgbW9kZSB0YWcgdG8KKwkJICAgIC8vIHRoZSBzdHJlYW0gdW5sZXNzIGl0J3MgcXVvdGVkCisJCSAgICBpZihzU2luZ2xlVGFnVGFibGVbbG9CeXRlXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgdGhlcmUgaXMgZW5vdWdoIHJvb20gdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdGUgYm90aCBieXRlcyBpZiBub3QsIHJld2luZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc291cmNlIHN0cmVhbSBhbmQgYnJlYWsgb3V0CisJCQlpZiggKGJ5dGVQb3MgKyAxKSA+PSBieXRlQnVmZmVyTGltaXQpIAorCQkJICAgIHsgLS11Y1BvczsgYnJlYWsgbWFpbkxvb3A7IH0KKworCQkJLy8gc2luY2Ugd2Uga25vdyB0aGUgYnl0ZSBpcyBsZXNzIHRoYW4gMHg4MCwgU1FVT1RFMAorCQkJLy8gd2lsbCB1c2Ugc3RhdGljIHdpbmRvdyAwLCBvciBBU0NJSQorCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIFNRVU9URTA7CisJCSAgICB9CisKKwkJICAgIGJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSBsb0J5dGU7CisJCX0KKworCQkvLyBpZiB0aGUgY2hhciBiZWxvbmdzIHRvIGN1cnJlbnQgd2luZG93LCBjb252ZXJ0IGl0CisJCS8vIHRvIGEgYnl0ZSBieSBhZGRpbmcgdGhlIGdlbmVyaWMgY29tcHJlc3Npb24gb2Zmc2V0CisJCS8vIGFuZCBzdWJ0cmFjdGluZyB0aGUgd2luZG93J3Mgb2Zmc2V0CisJCWVsc2UgaWYoaW5EeW5hbWljV2luZG93KGN1clVDLCBmQ3VycmVudFdpbmRvdykgKSB7CisJCSAgICBieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkgCisJCQkoY3VyVUMgLSBmT2Zmc2V0c1sgZkN1cnJlbnRXaW5kb3cgXSAKKwkJCSArIENPTVBSRVNTSU9OT0ZGU0VUKTsKKwkJfQorCQkKKwkJLy8gaWYgY2hhciBpcyBub3QgaW4gY29tcHJlc3NpYmxlIHJhbmdlLCBlaXRoZXIgc3dpdGNoIHRvIG9yCisJCS8vIHF1b3RlIGZyb20gdW5pY29kZQorCQllbHNlIGlmKCAhIGlzQ29tcHJlc3NpYmxlKGN1clVDKSApIHsKKwkJICAgIC8vIG9ubHkgY2hlY2sgbmV4dCBjaGFyYWN0ZXIgaWYgaXQgaXMgdmFsaWQKKwkJICAgIGlmKG5leHRVQyAhPSBJTlZBTElEQ0hBUiAmJiBpc0NvbXByZXNzaWJsZShuZXh0VUMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggcm9vbSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSBhbGwgdGhyZWUgYnl0ZXMgaWYgbm90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXdpbmQgdGhlIHNvdXJjZSBzdHJlYW0gYW5kIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dAorCQkJaWYoIChieXRlUG9zICsgMikgPj0gYnl0ZUJ1ZmZlckxpbWl0KSAKKwkJCSAgICB7IC0tdWNQb3M7IGJyZWFrIG1haW5Mb29wOyB9CisKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSBTUVVPVEVVOworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIChjdXJVQyA+Pj4gOCk7CisJCQlieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkgKGN1clVDICYgMHhGRik7CisJCSAgICB9CisJCSAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCByb29tIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIGFsbCBmb3VyIGJ5dGVzIGlmIG5vdCwgcmV3aW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBzb3VyY2Ugc3RyZWFtIGFuZCBicmVhayBvdXQKKwkJCWlmKChieXRlUG9zICsgMykgPj0gYnl0ZUJ1ZmZlckxpbWl0KSAKKwkJCSAgICB7IC0tdWNQb3M7IGJyZWFrIG1haW5Mb29wOyB9CisKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSBTQ0hBTkdFVTsKKworCQkJaGlCeXRlID0gY3VyVUMgPj4+IDg7CisJCQlsb0J5dGUgPSBjdXJVQyAmIDB4RkY7CisKKwkJCWlmKHNVbmljb2RlVGFnVGFibGVbaGlCeXRlXSkKKwkJCSAgICAvLyBhZGQgcXVvdGUgVW5pY29kZSB0YWcKKwkJCSAgICBieXRlQnVmZmVyW2J5dGVQb3MrK10gICA9IChieXRlKSBVUVVPVEVVOyAgICAKKworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIGhpQnl0ZTsKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSBsb0J5dGU7CisgICAgICAgICAgICAgICAgCisJCQlmTW9kZSA9IFVOSUNPREVNT0RFOworCQkJYnJlYWsgc2luZ2xlQnl0ZU1vZGVMb29wOworCQkgICAgfQorCQl9CisKKwkJLy8gaWYgdGhlIGNoYXIgaXMgaW4gYSBjdXJyZW50bHkgZGVmaW5lZCBkeW5hbWljCisJCS8vIHdpbmRvdywgZmlndXJlIG91dCB3aGljaCBvbmUsIGFuZCBlaXRoZXIgc3dpdGNoIHRvCisJCS8vIGl0IG9yIHF1b3RlIGZyb20gaXQKKwkJZWxzZSBpZigod2hpY2hXaW5kb3cgPSBmaW5kRHluYW1pY1dpbmRvdyhjdXJVQykpIAorCQkJIT0gSU5WQUxJRFdJTkRPVyApIHsKKwkJICAgIC8vIGxvb2sgYWhlYWQKKwkJICAgIGlmKCAodWNQb3MgKyAxKSA8IGNoYXJCdWZmZXJMaW1pdCApCisJCQlmb3J3YXJkVUMgPSBjaGFyQnVmZmVyW3VjUG9zICsgMV07CisJCSAgICBlbHNlCisJCQlmb3J3YXJkVUMgPSBJTlZBTElEQ0hBUjsKKwkJICAgIAorCQkgICAgLy8gYWxsIHRocmVlIGNoYXJzIGluIHNhbWUgd2luZG93LCBzd2l0Y2ggdG8gdGhhdAorCQkgICAgLy8gd2luZG93IGluRHluYW1pY1dpbmRvdyB3aWxsIHJldHVybiBmYWxzZSBmb3IKKwkJICAgIC8vIElOVkFMSURDSEFSCisJCSAgICBpZihpbkR5bmFtaWNXaW5kb3cobmV4dFVDLCB3aGljaFdpbmRvdykgCisJCSAgICAgICAmJiBpbkR5bmFtaWNXaW5kb3coZm9yd2FyZFVDLCB3aGljaFdpbmRvdykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCByb29tIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIGJvdGggYnl0ZXMgaWYgbm90LCByZXdpbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvdXJjZSBzdHJlYW0gYW5kIGJyZWFrIG91dAorCQkJaWYoIChieXRlUG9zICsgMSkgPj0gYnl0ZUJ1ZmZlckxpbWl0KSAKKwkJCSAgICB7IC0tdWNQb3M7IGJyZWFrIG1haW5Mb29wOyB9CisKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKShTQ0hBTkdFMCArIHdoaWNoV2luZG93KTsKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSAKKwkJCSAgICAoY3VyVUMgLSBmT2Zmc2V0c1t3aGljaFdpbmRvd10gCisJCQkgICAgICsgQ09NUFJFU1NJT05PRkZTRVQpOworCQkJZlRpbWVTdGFtcHMgWyB3aGljaFdpbmRvdyBdID0gKytmVGltZVN0YW1wOworCQkJZkN1cnJlbnRXaW5kb3cgPSB3aGljaFdpbmRvdzsKKwkJICAgIH0KKwkJICAgIAorCQkgICAgLy8gZWl0aGVyIG9ubHkgbmV4dCBjaGFyIG9yIG5laXRoZXIgaW4gc2FtZQorCQkgICAgLy8gd2luZG93LCBzbyBxdW90ZQorCQkgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggcm9vbSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSBib3RoIGJ5dGVzIGlmIG5vdCwgcmV3aW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzb3VyY2Ugc3RyZWFtIGFuZCBicmVhayBvdXQKKwkJCWlmKChieXRlUG9zICsgMSkgPj0gYnl0ZUJ1ZmZlckxpbWl0KSAKKwkJCSAgICB7IC0tdWNQb3M7IGJyZWFrIG1haW5Mb29wOyB9CisKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSAoU1FVT1RFMCArIHdoaWNoV2luZG93KTsKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSAKKwkJCSAgICAoY3VyVUMgLSBmT2Zmc2V0c1t3aGljaFdpbmRvd10gCisJCQkgICAgICsgQ09NUFJFU1NJT05PRkZTRVQpOworCQkgICAgfQorCQl9CisKKwkJLy8gaWYgYSBzdGF0aWMgd2luZG93IGlzIGRlZmluZWQsIGFuZCB0aGUgZm9sbG93aW5nCisJCS8vIGNoYXJhY3RlciBpcyBub3QgaW4gdGhhdCBzdGF0aWMgd2luZG93LCBxdW90ZSBmcm9tCisJCS8vIHRoZSBzdGF0aWMgd2luZG93IE5vdGU6IHRvIHF1b3RlIGZyb20gYSBzdGF0aWMKKwkJLy8gd2luZG93LCBkb24ndCBhZGQgMHg4MAorCQllbHNlIGlmKCh3aGljaFdpbmRvdyA9IGZpbmRTdGF0aWNXaW5kb3coY3VyVUMpKSAKKwkJCSE9IElOVkFMSURXSU5ET1cgCisJCQkmJiAhIGluU3RhdGljV2luZG93KG5leHRVQywgd2hpY2hXaW5kb3cpICkgeworCQkgICAgLy8gbWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCByb29tIHRvIHdyaXRlIGJvdGgKKwkJICAgIC8vIGJ5dGVzIGlmIG5vdCwgcmV3aW5kIHRoZSBzb3VyY2Ugc3RyZWFtIGFuZAorCQkgICAgLy8gYnJlYWsgb3V0CisJCSAgICBpZigoYnl0ZVBvcyArIDEpID49IGJ5dGVCdWZmZXJMaW1pdCkgCisJCQl7IC0tdWNQb3M7IGJyZWFrIG1haW5Mb29wOyB9CisKKwkJICAgIGJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSAoU1FVT1RFMCArIHdoaWNoV2luZG93KTsKKwkJICAgIGJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSAKKwkJCShjdXJVQyAtIHNPZmZzZXRzW3doaWNoV2luZG93XSk7CisJCX0KKwkJCisJCS8vIGlmIGEgd2luZG93IGlzIG5vdCBkZWZpbmVkLCBkZWNpZGUgaWYgd2Ugd2FudCB0bworCQkvLyBkZWZpbmUgYSBuZXcgb25lIG9yIHN3aXRjaCB0byB1bmljb2RlIG1vZGUKKwkJZWxzZSB7CisJCSAgICAvLyBkZXRlcm1pbmUgaW5kZXggZm9yIGN1cnJlbnQgY2hhciAoY2hhciBpcyBjb21wcmVzc2libGUpCisJCSAgICBjdXJJbmRleCA9IG1ha2VJbmRleChjdXJVQyk7CisJCSAgICBmSW5kZXhDb3VudFtjdXJJbmRleF0rKzsKKworCQkgICAgLy8gbG9vayBhaGVhZAorCQkgICAgaWYoKHVjUG9zICsgMSkgPCBjaGFyQnVmZmVyTGltaXQpCisJCQlmb3J3YXJkVUMgPSBjaGFyQnVmZmVyW3VjUG9zICsgMV07CisJCSAgICBlbHNlCisJCQlmb3J3YXJkVUMgPSBJTlZBTElEQ0hBUjsKKworCQkgICAgLy8gaWYgd2UgaGF2ZSBlbmNvdW50ZXJlZCB0aGlzIGluZGV4IGF0IGxlYXN0IG9uY2UKKwkJICAgIC8vIGJlZm9yZSwgZGVmaW5lIGEgbmV3IHdpbmRvdworCQkgICAgLy8gT1IKKwkJICAgIC8vIHRocmVlIGNoYXJzIGluIGEgcm93IHdpdGggc2FtZSBpbmRleCwgZGVmaW5lIGEKKwkJICAgIC8vIG5ldyB3aW5kb3cgKG1ha2VJbmRleCB3aWxsIHJldHVybiBSRVNFUlZFRElOREVYCisJCSAgICAvLyBmb3IgSU5WQUxJRENIQVIpCisJCSAgICBpZigoZkluZGV4Q291bnRbY3VySW5kZXhdID4gMSkgfHwKKwkJICAgICAgIChjdXJJbmRleCA9PSBtYWtlSW5kZXgobmV4dFVDKSAKKwkJCSYmIGN1ckluZGV4ID09IG1ha2VJbmRleChmb3J3YXJkVUMpKSkgeworCQkJLy8gbWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCByb29tIHRvIHdyaXRlIGFsbAorCQkJLy8gdGhyZWUgYnl0ZXMgaWYgbm90LCByZXdpbmQgdGhlIHNvdXJjZQorCQkJLy8gc3RyZWFtIGFuZCBicmVhayBvdXQKKwkJCWlmKCAoYnl0ZVBvcyArIDIpID49IGJ5dGVCdWZmZXJMaW1pdCkgCisJCQkgICAgeyAtLXVjUG9zOyBicmVhayBtYWluTG9vcDsgfQorCisJCQkvLyBnZXQgbGVhc3QgcmVjZW50bHkgZGVmaW5lZCB3aW5kb3cKKwkJCXdoaWNoV2luZG93ID0gZ2V0TFJEZWZpbmVkV2luZG93KCk7CisKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKShTREVGSU5FMCArIHdoaWNoV2luZG93KTsKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSBjdXJJbmRleDsKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSAKKwkJCSAgICAoY3VyVUMgLSBzT2Zmc2V0VGFibGVbY3VySW5kZXhdIAorCQkJICAgICArIENPTVBSRVNTSU9OT0ZGU0VUKTsKKworCQkJZk9mZnNldHNbd2hpY2hXaW5kb3ddID0gc09mZnNldFRhYmxlW2N1ckluZGV4XTsKKwkJCWZDdXJyZW50V2luZG93ID0gd2hpY2hXaW5kb3c7CisJCQlmVGltZVN0YW1wcyBbd2hpY2hXaW5kb3ddID0gKytmVGltZVN0YW1wOworCQkgICAgfQorCisJCSAgICAvLyBvbmx5IHR3byBjaGFycyBpbiBhIHJvdyB3aXRoIHNhbWUgaW5kZXgsIHNvCisJCSAgICAvLyBzd2l0Y2ggdG8gdW5pY29kZSBtb2RlIChtYWtlSW5kZXggd2lsbCByZXR1cm4KKwkJICAgIC8vIFJFU0VSVkVESU5ERVggZm9yIElOVkFMSURDSEFSKQorCQkgICAgLy8gT1IKKwkJICAgIC8vIHRocmVlIGNoYXJzIGhhdmUgZGlmZmVyZW50IGluZGljZXMsIHNvIHN3aXRjaAorCQkgICAgLy8gdG8gdW5pY29kZSBtb2RlCisJCSAgICBlbHNlIHsKKwkJCS8vIG1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggcm9vbSB0byB3cml0ZSBhbGwKKwkJCS8vIGZvdXIgYnl0ZXMgaWYgbm90LCByZXdpbmQgdGhlIHNvdXJjZSBzdHJlYW0KKwkJCS8vIGFuZCBicmVhayBvdXQKKwkJCWlmKChieXRlUG9zICsgMykgPj0gYnl0ZUJ1ZmZlckxpbWl0KSAKKwkJCSAgICB7IC0tdWNQb3M7IGJyZWFrIG1haW5Mb29wOyB9CisKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSBTQ0hBTkdFVTsKKworCQkJaGlCeXRlID0gY3VyVUMgPj4+IDg7CisJCQlsb0J5dGUgPSBjdXJVQyAmIDB4RkY7CisKKwkJCWlmKHNVbmljb2RlVGFnVGFibGVbaGlCeXRlXSkKKwkJCSAgICAvLyBhZGQgcXVvdGUgVW5pY29kZSB0YWcKKwkJCSAgICBieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkgVVFVT1RFVTsgCisKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSBoaUJ5dGU7CisJCQlieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkgbG9CeXRlOworCisJCQlmTW9kZSA9IFVOSUNPREVNT0RFOworCQkJYnJlYWsgc2luZ2xlQnl0ZU1vZGVMb29wOworCQkgICAgfQorCQl9CisJICAgIH0KKwkgICAgYnJlYWs7CisKKwkgICAgY2FzZSBVTklDT0RFTU9ERToKKwkJLy8gbWFpbiB1bmljb2RlIG1vZGUgY29tcHJlc3Npb24gbG9vcAorCSAgICB1bmljb2RlTW9kZUxvb3A6CisJICAgIHdoaWxlKHVjUG9zIDwgY2hhckJ1ZmZlckxpbWl0ICYmIGJ5dGVQb3MgPCBieXRlQnVmZmVyTGltaXQpIHsKKwkJLy8gZ2V0IGN1cnJlbnQgY2hhcgorCQljdXJVQyA9IGNoYXJCdWZmZXJbdWNQb3MrK107ICAgIAorCisJCS8vIGdldCBuZXh0IGNoYXIKKwkJaWYoIHVjUG9zIDwgY2hhckJ1ZmZlckxpbWl0ICkKKwkJICAgIG5leHRVQyA9IGNoYXJCdWZmZXJbdWNQb3NdOworCQllbHNlCisJCSAgICBuZXh0VUMgPSBJTlZBTElEQ0hBUjsKKworCQkvLyBpZiB3ZSBoYXZlIHR3byB1bmNvbXByZXNzaWJsZSBjaGFycyBpbiBhIHJvdywKKwkJLy8gcHV0IHRoZSBjdXJyZW50IGNoYXIncyBieXRlcyBpbiB0aGUgc3RyZWFtCisJCWlmKCAhIGlzQ29tcHJlc3NpYmxlKGN1clVDKSAKKwkJICAgIHx8IChuZXh0VUMgIT0gSU5WQUxJRENIQVIgJiYgISBpc0NvbXByZXNzaWJsZShuZXh0VUMpKSkgeworCQkgICAgLy8gbWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCByb29tIHRvIHdyaXRlIGFsbCB0aHJlZSBieXRlcworCQkgICAgLy8gaWYgbm90LCByZXdpbmQgdGhlIHNvdXJjZSBzdHJlYW0gYW5kIGJyZWFrIG91dAorCQkgICAgaWYoIChieXRlUG9zICsgMikgPj0gYnl0ZUJ1ZmZlckxpbWl0KSAKKwkJCXsgLS11Y1BvczsgYnJlYWsgbWFpbkxvb3A7IH0KKworCQkgICAgaGlCeXRlID0gY3VyVUMgPj4+IDg7CisJCSAgICBsb0J5dGUgPSBjdXJVQyAmIDB4RkY7CisKKwkJICAgIGlmKHNVbmljb2RlVGFnVGFibGVbIGhpQnl0ZSBdKQorCQkJLy8gYWRkIHF1b3RlIFVuaWNvZGUgdGFnCisJCQlieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkgVVFVT1RFVTsKKyAgICAgICAgICAgICAgICAKKwkJICAgIGJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSBoaUJ5dGU7CisJCSAgICBieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkgbG9CeXRlOworICAgICAgICB9CisJCQorCQkvLyBieXRlcyBsZXNzIHRoYW4gMHg4MCBjYW4gZ28gc3RyYWlnaHQgaW4gdGhlIHN0cmVhbSwKKwkJLy8gYnV0IGluIHNpbmdsZS1ieXRlIG1vZGUKKwkJZWxzZSBpZihjdXJVQyA8IDB4MDA4MCkgeworCQkgICAgbG9CeXRlID0gY3VyVUMgJiAweEZGOworCisJCSAgICAvLyBpZiB0d28gY2hhcnMgaW4gYSByb3cgYmVsb3cgMHg4MCBhbmQgdGhlCisJCSAgICAvLyBjdXJyZW50IGNoYXIgaXMgbm90IGEgc2luZ2xlLWJ5dGUgbW9kZSB0YWcsCisJCSAgICAvLyBzd2l0Y2ggdG8gc2luZ2xlLWJ5dGUgbW9kZQorCQkgICAgaWYobmV4dFVDICE9IElOVkFMSURDSEFSIAorCQkgICAgICAgJiYgbmV4dFVDIDwgMHgwMDgwICYmICEgc1NpbmdsZVRhZ1RhYmxlWyBsb0J5dGUgXSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCByb29tIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIGJvdGggYnl0ZXMgaWYgbm90LCByZXdpbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvdXJjZSBzdHJlYW0gYW5kIGJyZWFrIG91dAorCQkJaWYoIChieXRlUG9zICsgMSkgPj0gYnl0ZUJ1ZmZlckxpbWl0KSAKKwkJCSAgICB7IC0tdWNQb3M7IGJyZWFrIG1haW5Mb29wOyB9CisKKwkJCS8vIHVzZSB0aGUgbGFzdC1hY3RpdmUgd2luZG93CisJCQl3aGljaFdpbmRvdyA9IGZDdXJyZW50V2luZG93OworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpKFVDSEFOR0UwICsgd2hpY2hXaW5kb3cpOworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIGxvQnl0ZTsKKworCQkJLy9mQ3VycmVudFdpbmRvdyA9IDA7CisJCQlmVGltZVN0YW1wcyBbd2hpY2hXaW5kb3ddID0gKytmVGltZVN0YW1wOworCQkJZk1vZGUgPSBTSU5HTEVCWVRFTU9ERTsKKwkJCWJyZWFrIHVuaWNvZGVNb2RlTG9vcDsKKwkJICAgIH0KKworCQkgICAgLy8gb3RoZXJ3aXNlLCBqdXN0IHdyaXRlIHRoZSBieXRlcyB0byB0aGUgc3RyZWFtCisJCSAgICAvLyAodGhpcyB3aWxsIGNvdmVyIHRoZSBjYXNlIG9mIG9ubHkgMSBjaGFyIGxlc3MgdGhhbiAweDgwCisJCSAgICAvLyBhbmQgc2luZ2xlLWJ5dGUgbW9kZSB0YWdzKQorCQkgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggcm9vbSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSBib3RoIGJ5dGVzIGlmIG5vdCwgcmV3aW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzb3VyY2Ugc3RyZWFtIGFuZCBicmVhayBvdXQKKwkJCWlmKChieXRlUG9zICsgMSkgPj0gYnl0ZUJ1ZmZlckxpbWl0KSAKKwkJCSAgICB7IC0tdWNQb3M7IGJyZWFrIG1haW5Mb29wOyB9CisKKwkJCS8vIHNpbmNlIHRoZSBjaGFyYWN0ZXIgaXMgbGVzcyB0aGFuIDB4ODAsIHRoZQorCQkJLy8gaGlnaCBieXRlIGlzIGFsd2F5cyAweDAwIC0gbm8gbmVlZCBmb3IKKwkJCS8vIChjdXJVQyA+Pj4gOCkKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSAweDAwOworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIGxvQnl0ZTsKKwkJICAgIH0KKwkJfQorCisJCS8vIGZpZ3VyZSBvdXQgaWYgdGhlIGN1cnJlbnQgY2hhciBpcyBpbiBhIGRlZmluZWQgd2luZG93CisJCWVsc2UgaWYoKHdoaWNoV2luZG93ID0gZmluZER5bmFtaWNXaW5kb3coY3VyVUMpKSAKKwkJCSE9IElOVkFMSURXSU5ET1cgKSB7CisJCSAgICAvLyBpZiB0d28gY2hhcnMgaW4gYSByb3cgaW4gdGhlIHNhbWUgd2luZG93LAorCQkgICAgLy8gc3dpdGNoIHRvIHRoYXQgd2luZG93IGFuZCBnbyB0byBzaW5nbGUtYnl0ZSBtb2RlCisJCSAgICAvLyBpbkR5bmFtaWNXaW5kb3cgd2lsbCByZXR1cm4gZmFsc2UgZm9yIElOVkFMSURDSEFSCisJCSAgICBpZihpbkR5bmFtaWNXaW5kb3cobmV4dFVDLCB3aGljaFdpbmRvdykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCByb29tIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIGJvdGggYnl0ZXMgaWYgbm90LCByZXdpbmQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNvdXJjZSBzdHJlYW0gYW5kIGJyZWFrIG91dAorCQkJaWYoKGJ5dGVQb3MgKyAxKSA+PSBieXRlQnVmZmVyTGltaXQpIAorCQkJICAgIHsgLS11Y1BvczsgYnJlYWsgbWFpbkxvb3A7IH0KKworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpKFVDSEFOR0UwICsgd2hpY2hXaW5kb3cpOworCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIAorCQkJICAgIChjdXJVQyAtIGZPZmZzZXRzW3doaWNoV2luZG93XSAKKwkJCSAgICAgKyBDT01QUkVTU0lPTk9GRlNFVCk7CisKKwkJCWZUaW1lU3RhbXBzIFsgd2hpY2hXaW5kb3cgXSA9ICsrZlRpbWVTdGFtcDsKKwkJCWZDdXJyZW50V2luZG93ID0gd2hpY2hXaW5kb3c7CisJCQlmTW9kZSA9IFNJTkdMRUJZVEVNT0RFOworCQkJYnJlYWsgdW5pY29kZU1vZGVMb29wOworCQkgICAgfQorCisJCSAgICAvLyBvdGhlcndpc2UsIGp1c3QgcXVvdGUgdGhlIHVuaWNvZGUgZm9yIHRoZSBjaGFyCisJCSAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCByb29tIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIGFsbCB0aHJlZSBieXRlcyBpZiBub3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJld2luZCB0aGUgc291cmNlIHN0cmVhbSBhbmQgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0CisJCQlpZigoYnl0ZVBvcyArIDIpID49IGJ5dGVCdWZmZXJMaW1pdCkgCisJCQkgICAgeyAtLXVjUG9zOyBicmVhayBtYWluTG9vcDsgfQorCisJCQloaUJ5dGUgPSBjdXJVQyA+Pj4gODsKKwkJCWxvQnl0ZSA9IGN1clVDICYgMHhGRjsKKworCQkJaWYoc1VuaWNvZGVUYWdUYWJsZVsgaGlCeXRlIF0pCisJCQkgICAgLy8gYWRkIHF1b3RlIFVuaWNvZGUgdGFnCisJCQkgICAgYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIFVRVU9URVU7CisKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSBoaUJ5dGU7CisJCQlieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkgbG9CeXRlOworCQkgICAgfQorCQl9CisJCQorCQkvLyBjaGFyIGlzIG5vdCBpbiBhIGRlZmluZWQgd2luZG93CisJCWVsc2UgeworCQkgICAgLy8gZGV0ZXJtaW5lIGluZGV4IGZvciBjdXJyZW50IGNoYXIgKGNoYXIgaXMgY29tcHJlc3NpYmxlKQorCQkgICAgY3VySW5kZXggPSBtYWtlSW5kZXgoY3VyVUMpOworCQkgICAgZkluZGV4Q291bnRbY3VySW5kZXhdKys7CisJCSAgICAKKwkJICAgIC8vIGxvb2sgYWhlYWQKKwkJICAgIGlmKCAodWNQb3MgKyAxKSA8IGNoYXJCdWZmZXJMaW1pdCApCisJCQlmb3J3YXJkVUMgPSBjaGFyQnVmZmVyW3VjUG9zICsgMV07CisJCSAgICBlbHNlCisJCQlmb3J3YXJkVUMgPSBJTlZBTElEQ0hBUjsKKwkJICAgIAorCQkgICAgLy8gaWYgd2UgaGF2ZSBlbmNvdW50ZXJlZCB0aGlzIGluZGV4IGF0IGxlYXN0IG9uY2UKKwkJICAgIC8vIGJlZm9yZSwgZGVmaW5lIGEgbmV3IHdpbmRvdyBmb3IgaXQgdGhhdCBoYXNuJ3QKKwkJICAgIC8vIHByZXZpb3VzbHkgYmVlbiByZWRlZmluZWQKKwkJICAgIC8vIE9SCisJCSAgICAvLyBpZiB0aHJlZSBjaGFycyBpbiBhIHJvdyB3aXRoIHRoZSBzYW1lIGluZGV4LAorCQkgICAgLy8gZGVmaW5lIGEgbmV3IHdpbmRvdyAobWFrZUluZGV4IHdpbGwgcmV0dXJuCisJCSAgICAvLyBSRVNFUlZFRElOREVYIGZvciBJTlZBTElEQ0hBUikKKwkJICAgIGlmKChmSW5kZXhDb3VudFtjdXJJbmRleF0gPiAxKSB8fAorCQkgICAgICAgKGN1ckluZGV4ID09IG1ha2VJbmRleChuZXh0VUMpIAorCQkJJiYgY3VySW5kZXggPT0gbWFrZUluZGV4KGZvcndhcmRVQykpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggcm9vbSB0bworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3cml0ZSBhbGwgdGhyZWUgYnl0ZXMgaWYgbm90LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXdpbmQgdGhlIHNvdXJjZSBzdHJlYW0gYW5kIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG91dAorCQkJaWYoKGJ5dGVQb3MgKyAyKSA+PSBieXRlQnVmZmVyTGltaXQpIAorCQkJICAgIHsgLS11Y1BvczsgYnJlYWsgbWFpbkxvb3A7IH0KKworCQkJLy8gZ2V0IGxlYXN0IHJlY2VudGx5IGRlZmluZWQgd2luZG93CisJCQl3aGljaFdpbmRvdyA9IGdldExSRGVmaW5lZFdpbmRvdygpOworCisJCQlieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkoVURFRklORTAgKyB3aGljaFdpbmRvdyk7CisJCQlieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkgY3VySW5kZXg7CisJCQlieXRlQnVmZmVyW2J5dGVQb3MrK10gPSAoYnl0ZSkgCisJCQkgICAgKGN1clVDIC0gc09mZnNldFRhYmxlW2N1ckluZGV4XSAKKwkJCSAgICAgKyBDT01QUkVTU0lPTk9GRlNFVCk7CisJCQkKKwkJCWZPZmZzZXRzW3doaWNoV2luZG93XSA9IHNPZmZzZXRUYWJsZVtjdXJJbmRleF07CisJCQlmQ3VycmVudFdpbmRvdyA9IHdoaWNoV2luZG93OworCQkJZlRpbWVTdGFtcHMgW3doaWNoV2luZG93XSA9ICsrZlRpbWVTdGFtcDsKKwkJCWZNb2RlID0gU0lOR0xFQllURU1PREU7CisJCQlicmVhayB1bmljb2RlTW9kZUxvb3A7CisJCSAgICB9CisJCSAgICAKKwkJICAgIC8vIG90aGVyd2lzZSBqdXN0IHF1b3RlIHRoZSB1bmljb2RlLCBhbmQgc2F2ZSBvdXIKKwkJICAgIC8vIHdpbmRvd3MgZm9yIGxvbmdlciBydW5zCisJCSAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCByb29tIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdyaXRlIGFsbCB0aHJlZSBieXRlcyBpZiBub3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJld2luZCB0aGUgc291cmNlIHN0cmVhbSBhbmQgYnJlYWsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gb3V0CisJCQlpZigoYnl0ZVBvcyArIDIpID49IGJ5dGVCdWZmZXJMaW1pdCkgCisJCQkgICAgeyAtLXVjUG9zOyBicmVhayBtYWluTG9vcDsgfQorCisJCQloaUJ5dGUgPSBjdXJVQyA+Pj4gODsKKwkJCWxvQnl0ZSA9IGN1clVDICYgMHhGRjsKKworCQkJaWYoc1VuaWNvZGVUYWdUYWJsZVsgaGlCeXRlIF0pCisJCQkgICAgLy8gYWRkIHF1b3RlIFVuaWNvZGUgdGFnCisJCQkgICAgYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIFVRVU9URVU7ICAKKwkJCQorCQkJYnl0ZUJ1ZmZlcltieXRlUG9zKytdID0gKGJ5dGUpIGhpQnl0ZTsKKwkJCWJ5dGVCdWZmZXJbYnl0ZVBvcysrXSA9IChieXRlKSBsb0J5dGU7CisJCSAgICB9CisJCX0KKwkgICAgfQorCSAgICB9ICAvLyBlbmQgc3dpdGNoCisJfQorCQorICAgICAgICAvLyBmaWxsIGluIG91dHB1dCBwYXJhbWV0ZXIKKwlpZihjaGFyc1JlYWQgIT0gbnVsbCkKKwkgICAgY2hhcnNSZWFkIFswXSA9ICh1Y1BvcyAtIGNoYXJCdWZmZXJTdGFydCk7CisgICAgICAgIAorICAgICAgICAvLyByZXR1cm4gIyBvZiBieXRlcyB3cml0dGVuCisgICAgICAgIHJldHVybiAoYnl0ZVBvcyAtIGJ5dGVCdWZmZXJTdGFydCk7CisgICAgfQorCisgICAgLyoqIFJlc2V0IHRoZSBjb21wcmVzc29yIHRvIGl0cyBpbml0aWFsIHN0YXRlLiAqLworICAgIHB1YmxpYyB2b2lkIHJlc2V0KCkKKyAgICB7CisJaW50IGk7CisKKyAgICAgICAgLy8gcmVzZXQgZHluYW1pYyB3aW5kb3dzCisgICAgICAgIGZPZmZzZXRzWzBdID0gMHgwMDgwOyAgICAvLyBMYXRpbi0xCisgICAgICAgIGZPZmZzZXRzWzFdID0gMHgwMEMwOyAgICAvLyBMYXRpbi0xIFN1cHBsZW1lbnQgKyBMYXRpbiBFeHRlbmRlZC1BCisgICAgICAgIGZPZmZzZXRzWzJdID0gMHgwNDAwOyAgICAvLyBDeXJpbGxpYworICAgICAgICBmT2Zmc2V0c1szXSA9IDB4MDYwMDsgICAgLy8gQXJhYmljCisgICAgICAgIGZPZmZzZXRzWzRdID0gMHgwOTAwOyAgICAvLyBEZXZhbmFnYXJpCisgICAgICAgIGZPZmZzZXRzWzVdID0gMHgzMDQwOyAgICAvLyBIaXJhZ2FuYQorICAgICAgICBmT2Zmc2V0c1s2XSA9IDB4MzBBMDsgICAgLy8gS2F0YWthbmEKKyAgICAgICAgZk9mZnNldHNbN10gPSAweEZGMDA7ICAgIC8vIEZ1bGx3aWR0aCBBU0NJSQorCisKKyAgICAgICAgLy8gcmVzZXQgdGltZSBzdGFtcHMKKyAgICAgICAgZm9yKGkgPSAwOyBpIDwgTlVNV0lORE9XUzsgaSsrKSB7CisgICAgICAgICAgICBmVGltZVN0YW1wc1tpXSAgICAgICAgICA9IDA7CisgICAgICAgIH0KKworICAgICAgICAvLyByZXNldCBjb3VudCBvZiBzZWVuIGluZGljZXMKKyAgICAgICAgZm9yKGkgPSAwOyBpIDw9IE1BWElOREVYOyBpKysgKSB7CisgICAgICAgICAgICBmSW5kZXhDb3VudFtpXSA9IDA7CisgICAgICAgIH0KKworICAgICAgICBmVGltZVN0YW1wICAgICAgPSAwOyAgICAgICAgICAgICAgICAvLyBSZXNldCBjdXJyZW50IHRpbWUgc3RhbXAKKyAgICAgICAgZkN1cnJlbnRXaW5kb3cgID0gMDsgICAgICAgICAgICAgICAgLy8gTWFrZSBjdXJyZW50IHdpbmRvdyBMYXRpbi0xCisgICAgICAgIGZNb2RlICAgICAgICAgICA9IFNJTkdMRUJZVEVNT0RFOyAgIC8vIEFsd2F5cyBzdGFydCBpbiBzaW5nbGUtYnl0ZSBtb2RlCisgICAgfQorCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIERldGVybWluZSB0aGUgaW5kZXggZm9yIGEgY2hhcmFjdGVyCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIHRoZSBpbmRleCB2YWx1ZSBmb3IgYSBjaGFyYWN0ZXIuCisgICAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyBmdW5jdGlvbiwgcmVmZXIgdG8gdGFibGUgWC0zCisgICAgICogPEEgSFJFRj0iaHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHI2Ij5VVFI2PC9BPi4KKyAgICAgKiBAcGFyYW0gYyBUaGUgY2hhcmFjdGVyIGluIHF1ZXN0aW9uLgorICAgICAqIEByZXR1cm4gQW4gaW5kZXggZm9yIGMKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgbWFrZUluZGV4KGludCBjKQorICAgIHsKKyAgICAgICAgLy8gY2hlY2sgdGhlIHByZWRlZmluZWQgaW5kaWNlcworICAgICAgICBpZihjID49IDB4MDBDMCAmJiBjIDwgMHgwMTQwKQorICAgICAgICAgICAgcmV0dXJuIExBVElOSU5ERVg7CisgICAgICAgIGVsc2UgaWYoYyA+PSAweDAyNTAgJiYgYyA8IDB4MDJEMCkKKyAgICAgICAgICAgIHJldHVybiBJUEFFWFRFTlNJT05JTkRFWDsKKyAgICAgICAgZWxzZSBpZihjID49IDB4MDM3MCAmJiBjIDwgMHgwM0YwKQorICAgICAgICAgICAgcmV0dXJuIEdSRUVLSU5ERVg7CisgICAgICAgIGVsc2UgaWYoYyA+PSAweDA1MzAgJiYgYyA8IDB4MDU5MCkKKyAgICAgICAgICAgIHJldHVybiBBUk1FTklBTklOREVYOworICAgICAgICBlbHNlIGlmKGMgPj0gMHgzMDQwICYmIGMgPCAweDMwQTApCisgICAgICAgICAgICByZXR1cm4gSElSQUdBTkFJTkRFWDsKKyAgICAgICAgZWxzZSBpZihjID49IDB4MzBBMCAmJiBjIDwgMHgzMTIwKQorICAgICAgICAgICAgcmV0dXJuIEtBVEFLQU5BSU5ERVg7CisgICAgICAgIGVsc2UgaWYoYyA+PSAweEZGNjAgJiYgYyA8IDB4RkY5RikKKyAgICAgICAgICAgIHJldHVybiBIQUxGV0lEVEhLQVRBS0FOQUlOREVYOworCisgICAgICAgIC8vIGNhbGN1bGF0ZSBpbmRleAorICAgICAgICBlbHNlIGlmKGMgPj0gMHgwMDgwICYmIGMgPCAweDM0MDApCisgICAgICAgICAgICByZXR1cm4gKGMgLyAweDgwKSAmIDB4RkY7CisgICAgICAgIGVsc2UgaWYoYyA+PSAweEUwMDAgJiYgYyA8PSAweEZGRkYpCisgICAgICAgICAgICByZXR1cm4gKChjIC0gMHhBQzAwKSAvIDB4ODApICYgMHhGRjsKKyAgICAgICAgICAgIAorICAgICAgICAvLyBzaG91bGQgbmV2ZXIgaGFwcGVuCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIFJFU0VSVkVESU5ERVg7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gQ2hlY2sgaWYgYSBnaXZlbiBjaGFyYWN0ZXIgZml0cyBpbiBhIHdpbmRvdworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8qKgorICAgICogRGV0ZXJtaW5lIGlmIGEgY2hhcmFjdGVyIGlzIGluIGEgZHluYW1pYyB3aW5kb3cuCisgICAgKiBAcGFyYW0gYyBUaGUgY2hhcmFjdGVyIHRvIHRlc3QKKyAgICAqIEBwYXJhbSB3aGljaFdpbmRvdyBUaGUgZHluYW1pYyB3aW5kb3cgdGhlIHRlc3QKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiA8VFQ+YzwvVFQ+IHdpbGwgZml0IGluIDxUVD53aGljaFdpbmRvdzwvVFQ+LCAKKyAgICAqIGZhbHNlIG90aGVyd2lzZS4KKyAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBpbkR5bmFtaWNXaW5kb3coaW50IGMsIAorCQkJCSAgICBpbnQgd2hpY2hXaW5kb3cpCisgICAgeworICAgICAgICByZXR1cm4gKGMgPj0gZk9mZnNldHNbd2hpY2hXaW5kb3ddIAorCQkmJiBjIDwgKGZPZmZzZXRzW3doaWNoV2luZG93XSArIDB4ODApKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmUgaWYgYSBjaGFyYWN0ZXIgaXMgaW4gYSBzdGF0aWMgd2luZG93LgorICAgICogQHBhcmFtIGMgVGhlIGNoYXJhY3RlciB0byB0ZXN0CisgICAgKiBAcGFyYW0gd2hpY2hXaW5kb3cgVGhlIHN0YXRpYyB3aW5kb3cgdGhlIHRlc3QKKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiA8VFQ+YzwvVFQ+IHdpbGwgZml0IGluIDxUVD53aGljaFdpbmRvdzwvVFQ+LCAKKyAgICAqIGZhbHNlIG90aGVyd2lzZS4KKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaW5TdGF0aWNXaW5kb3coaW50IGMsIAorCQkJCQkgIGludCB3aGljaFdpbmRvdykKKyAgICB7CisgICAgICAgIHJldHVybiAoYyA+PSBzT2Zmc2V0c1t3aGljaFdpbmRvd10KKwkJJiYgYyA8IChzT2Zmc2V0c1t3aGljaFdpbmRvd10gKyAweDgwKSk7CisgICAgfQorCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIENoZWNrIGlmIGEgZ2l2ZW4gY2hhcmFjdGVyIGlzIGNvbXByZXNzaWJsZQorICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8qKgorICAgICogRGV0ZXJtaW5lIGlmIGEgY2hhcmFjdGVyIGlzIGNvbXByZXNzaWJsZS4KKyAgICAqIEBwYXJhbSBjIFRoZSBjaGFyYWN0ZXIgdG8gdGVzdC4KKyAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgPFRUPmM8L1RUPiBpcyBjb21wcmVzc2libGUsIGZhbHNlIG90aGVyd2lzZS4KKyAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNDb21wcmVzc2libGUoaW50IGMpCisgICAgeworICAgICAgICByZXR1cm4gKGMgPCAweDM0MDAgfHwgYyA+PSAweEUwMDApOworICAgIH0KKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBDaGVjayBpZiBhIHdpbmRvdyBpcyBkZWZpbmVkIGZvciBhIGdpdmVuIGNoYXJhY3RlcgorICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8qKgorICAgICAqIERldGVybWluZSBpZiBhIGR5bmFtaWMgd2luZG93IGZvciBhIGNlcnRhaW4gY2hhcmFjdGVyIGlzIGRlZmluZWQKKyAgICAgKiBAcGFyYW0gYyBUaGUgY2hhcmFjdGVyIGluIHF1ZXN0aW9uCisgICAgICogQHJldHVybiBUaGUgZHluYW1pYyB3aW5kb3cgY29udGFpbmluZyA8VFQ+YzwvVFQ+LCBvciAKKyAgICAgKiBJTlZBTElEV0lORE9XIGlmIG5vdCBkZWZpbmVkLgorICAgICAqLworICAgIHByaXZhdGUgaW50IGZpbmREeW5hbWljV2luZG93KGludCBjKQorICAgIHsKKwkvLyBzdXBwb3NlZGx5IGZhc3RlciB0byBjb3VudCBkb3duCisgICAgICAgIC8vZm9yKGludCBpID0gMDsgaSA8IE5VTVdJTkRPV1M7IGkrKykgeworCWZvcihpbnQgaSA9IE5VTVdJTkRPV1MgLSAxOyBpID49IDA7IC0taSkgeworCSAgICBpZihpbkR5bmFtaWNXaW5kb3coYywgaSkpIHsKKwkJKytmVGltZVN0YW1wc1tpXTsKKyAgICAgICAgICAgICAgICByZXR1cm4gaTsKKwkgICAgfQorCX0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBJTlZBTElEV0lORE9XOworICAgIH0KKworICAgIC8qKgorICAgICAqIERldGVybWluZSBpZiBhIHN0YXRpYyB3aW5kb3cgZm9yIGEgY2VydGFpbiBjaGFyYWN0ZXIgaXMgZGVmaW5lZAorICAgICAqIEBwYXJhbSBjIFRoZSBjaGFyYWN0ZXIgaW4gcXVlc3Rpb24KKyAgICAgKiBAcmV0dXJuIFRoZSBzdGF0aWMgd2luZG93IGNvbnRhaW5pbmcgPFRUPmM8L1RUPiwgb3IgCisgICAgICogSU5WQUxJRFdJTkRPVyBpZiBub3QgZGVmaW5lZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgZmluZFN0YXRpY1dpbmRvdyhpbnQgYykKKyAgICB7CisJLy8gc3VwcG9zZWRseSBmYXN0ZXIgdG8gY291bnQgZG93bgorICAgICAgICAvL2ZvcihpbnQgaSA9IDA7IGkgPCBOVU1TVEFUSUNXSU5ET1dTOyBpKyspIHsKKwlmb3IoaW50IGkgPSBOVU1TVEFUSUNXSU5ET1dTIC0gMTsgaSA+PSAwOyAtLWkpIHsKKwkgICAgaWYoaW5TdGF0aWNXaW5kb3coYywgaSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaTsKKwkgICAgfQorCX0KKwkKKyAgICAgICAgcmV0dXJuIElOVkFMSURXSU5ET1c7CisgICAgfQorICAgIAorICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBGaW5kIHRoZSBsZWFzdC1yZWNlbnRseSB1c2VkIHdpbmRvdworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8qKiBGaW5kIHRoZSBsZWFzdC1yZWNlbnRseSBkZWZpbmVkIHdpbmRvdyAqLworICAgIHByaXZhdGUgaW50IGdldExSRGVmaW5lZFdpbmRvdygpCisgICAgeworICAgICAgICBpbnQgbGVhc3RSVSAgICAgICAgID0gSW50ZWdlci5NQVhfVkFMVUU7CisgICAgICAgIGludCB3aGljaFdpbmRvdyAgICAgPSBJTlZBTElEV0lORE9XOworCisgICAgICAgIC8vIGZpbmQgbGVhc3QgcmVjZW50bHkgdXNlZCB3aW5kb3cKKyAgICAgICAgLy8gc3VwcG9zZWRseSBmYXN0ZXIgdG8gY291bnQgZG93bgorICAgICAgICAvL2ZvciggaW50IGkgPSAwOyBpIDwgTlVNV0lORE9XUzsgaSsrICkgeworICAgICAgICBmb3IoaW50IGkgPSBOVU1XSU5ET1dTIC0gMTsgaSA+PSAwOyAtLWkgKSB7CisgICAgICAgICAgICBpZiggZlRpbWVTdGFtcHNbaV0gPCBsZWFzdFJVICkgeworICAgICAgICAgICAgICAgIGxlYXN0UlUgICA9IGZUaW1lU3RhbXBzW2ldOworICAgICAgICAgICAgICAgIHdoaWNoV2luZG93ICA9IGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gd2hpY2hXaW5kb3c7CisgICAgfQorICAgIAorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvVW5pY29kZURlY29tcHJlc3Nvci5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9Vbmljb2RlRGVjb21wcmVzc29yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYmMxOWIwMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvVW5pY29kZURlY29tcHJlc3Nvci5qYXZhCkBAIC0wLDAgKzEsNTY1IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L0F0dGljL1VuaWNvZGVEZWNvbXByZXNzb3IuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwNDowNzoyNSAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS50ZXh0OworCisvKioKKyogQSBkZWNvbXByZXNzaW9uIGVuZ2luZSBpbXBsZW1lbnRpbmcgdGhlIFN0YW5kYXJkIENvbXByZXNzaW9uIFNjaGVtZQorKiBmb3IgVW5pY29kZSAoU0NTVSkgYXMgb3V0bGluZWQgaW4gPEEKKyogSFJFRj0iaHR0cDovL3d3dy51bmljb2RlLm9yZy91bmljb2RlL3JlcG9ydHMvdHI2Ij5Vbmljb2RlIFRlY2huaWNhbAorKiBSZXBvcnQgIzY8L0E+LgorKgorKiA8UD48U1RST05HPlVTQUdFPC9TVFJPTkc+PC9QPgorKgorKiA8UD5UaGUgc3RhdGljIG1ldGhvZHMgb24gPFRUPlVuaWNvZGVEZWNvbXByZXNzb3I8L1RUPiBtYXkgYmUgdXNlZCBpbiBhCisqIHN0cmFpZ2h0Zm9yd2FyZCBtYW5uZXIgdG8gZGVjb21wcmVzcyBzaW1wbGUgc3RyaW5nczo8L1A+CisqCisqIDxQUkU+CisqICBieXRlIFtdIGNvbXByZXNzZWQgPSAuLi4gOyAvLyBnZXQgY29tcHJlc3NlZCBieXRlcyBmcm9tIHNvbWV3aGVyZQorKiAgU3RyaW5nIHJlc3VsdCA9IFVuaWNvZGVEZWNvbXByZXNzb3IuZGVjb21wcmVzcyhjb21wcmVzc2VkKTsKKyogPC9QUkU+CisqCisqIDxQPlRoZSBzdGF0aWMgbWV0aG9kcyBoYXZlIGEgZmFpcmx5IGxhcmdlIG1lbW9yeSBmb290cHJpbnQuCisqIEZvciBmaW5lci1ncmFpbmVkIGNvbnRyb2wgb3ZlciBtZW1vcnkgdXNhZ2UsIAorKiA8VFQ+VW5pY29kZURlY29tcHJlc3NvcjwvVFQ+IG9mZmVycyBtb3JlIHBvd2VyZnVsIEFQSXMgYWxsb3dpbmcKKyogaXRlcmF0aXZlIGRlY29tcHJlc3Npb246PC9QPgorKgorKiA8UFJFPgorKiAgLy8gRGVjb21wcmVzcyBhbiBhcnJheSAiYnl0ZXMiIG9mIGxlbmd0aCAibGVuIiB1c2luZyBhIGJ1ZmZlciBvZiA1MTIgY2hhcnMKKyogIC8vIHRvIHRoZSBXcml0ZXIgIm91dCIKKyoKKyogIFVuaWNvZGVEZWNvbXByZXNzb3IgbXlEZWNvbXByZXNzb3IgICAgICAgICA9IG5ldyBVbmljb2RlRGVjb21wcmVzc29yKCk7CisqICBmaW5hbCBzdGF0aWMgaW50ICAgIEJVRlNJWkUgICAgICAgICAgICAgICAgPSA1MTI7CisqICBjaGFyIFtdICAgICAgICAgICAgIGNoYXJCdWZmZXIgICAgICAgICAgICAgPSBuZXcgY2hhciBbIEJVRlNJWkUgXTsKKyogIGludCAgICAgICAgICAgICAgICAgY2hhcnNXcml0dGVuICAgICAgICAgICA9IDA7CisqICBpbnQgW10gICAgICAgICAgICAgIGJ5dGVzUmVhZCAgICAgICAgICAgICAgPSBuZXcgaW50IFsxXTsKKyogIGludCAgICAgICAgICAgICAgICAgdG90YWxCeXRlc0RlY29tcHJlc3NlZCA9IDA7CisqICBpbnQgICAgICAgICAgICAgICAgIHRvdGFsQ2hhcnNXcml0dGVuICAgICAgPSAwOworKgorKiAgZG8geworKiAgICAvLyBkbyB0aGUgZGVjb21wcmVzc2lvbgorKiAgICBjaGFyc1dyaXR0ZW4gPSBteURlY29tcHJlc3Nvci5kZWNvbXByZXNzKGJ5dGVzLCB0b3RhbEJ5dGVzRGVjb21wcmVzc2VkLCAKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4sIGJ5dGVzUmVhZCwKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyQnVmZmVyLCAwLCBCVUZTSVpFKTsKKyoKKyogICAgLy8gZG8gc29tZXRoaW5nIHdpdGggdGhlIGN1cnJlbnQgc2V0IG9mIGNoYXJzCisqICAgIG91dC53cml0ZShjaGFyQnVmZmVyLCAwLCBjaGFyc1dyaXR0ZW4pOworKgorKiAgICAvLyB1cGRhdGUgdGhlIG5vLiBvZiBieXRlcyBkZWNvbXByZXNzZWQKKyogICAgdG90YWxCeXRlc0RlY29tcHJlc3NlZCArPSBieXRlc1JlYWRbMF07CisqCisqICAgIC8vIHVwZGF0ZSB0aGUgbm8uIG9mIGNoYXJzIHdyaXR0ZW4KKyogICAgdG90YWxDaGFyc1dyaXR0ZW4gKz0gY2hhcnNXcml0dGVuOworKgorKiAgfSB3aGlsZSh0b3RhbEJ5dGVzRGVjb21wcmVzc2VkIDwgbGVuKTsKKyoKKyogIG15RGVjb21wcmVzc29yLnJlc2V0KCk7IC8vIHJldXNlIGRlY29tcHJlc3NvcgorKiA8L1BSRT4KKyoKKyogPFA+RGVjb21wcmVzc2lvbiBpcyBwZXJmb3JtZWQgYWNjb3JkaW5nIHRvIHRoZSBzdGFuZGFyZCBzZXQgZm9ydGggaW4gCisqIDxBIEhSRUY9Imh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyNiI+VW5pY29kZSBUZWNobmljYWwgCisqIFJlcG9ydCAjNjwvQT48L1A+CisqCisqIEBzZWUgVW5pY29kZUNvbXByZXNzb3IKKyoKKyogQGF1dGhvciBTdGVwaGVuIEYuIEJvb3RoCisqIEB2ZXJzaW9uIDEuNSAwNSBBdWcgOTkKKyogQHZlcnNpb24gMS40IDIxIEp1bCA5OQorKiBAdmVyc2lvbiAxLjMgMTAgTWFyIDk5CisqIEB2ZXJzaW9uIDEuMiAwOCBNYXIgOTkKKyogQHZlcnNpb24gMS4xIDExIEphbiA5OSAKKyovCitwdWJsaWMgZmluYWwgY2xhc3MgVW5pY29kZURlY29tcHJlc3NvciBpbXBsZW1lbnRzIFNDU1UKK3sKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gSW5zdGFuY2UgdmFyaWFibGVzCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIAorICAgIC8qKiBBbGlhcyB0byBjdXJyZW50IGR5bmFtaWMgd2luZG93ICovCisgICAgcHJpdmF0ZSBpbnQgICAgICAgZkN1cnJlbnRXaW5kb3cgICA9IDA7CisKKyAgICAvKiogRHluYW1pYyBjb21wcmVzc2lvbiB3aW5kb3cgb2Zmc2V0cyAqLworICAgIHByaXZhdGUgaW50IFtdICAgIGZPZmZzZXRzICAgICAgICAgPSBuZXcgaW50IFsgTlVNV0lORE9XUyBdOworCisgICAgLyoqIEN1cnJlbnQgY29tcHJlc3Npb24gbW9kZSAqLworICAgIHByaXZhdGUgaW50ICAgICAgIGZNb2RlICAgICAgICAgICAgPSBTSU5HTEVCWVRFTU9ERTsKKworICAgIC8qKiBTaXplIG9mIG91ciBpbnRlcm5hbCBidWZmZXIgKi8KKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBpbnQgQlVGU0laRSAgID0gMzsKKworICAgIC8qKiBJbnRlcm5hbCBidWZmZXIgZm9yIHNhdmluZyBzdGF0ZSAqLworICAgIHByaXZhdGUgYnl0ZSBbXSAgIGZCdWZmZXIgICAgICAgICAgPSBuZXcgYnl0ZSBbQlVGU0laRV07CisKKyAgICAvKiogTnVtYmVyIG9mIGNoYXJhY3RlcnMgaW4gb3VyIGludGVybmFsIGJ1ZmZlciAqLworICAgIHByaXZhdGUgaW50ICAgICAgIGZCdWZmZXJMZW5ndGggICAgPSAwOworICAgIAorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgVW5pY29kZURlY29tcHJlc3Nvci4KKyAgICAgKiBTZXRzIGFsbCB3aW5kb3dzIHRvIHRoZWlyIGRlZmF1bHQgdmFsdWVzLgorICAgICAqIEBzZWUgI3Jlc2V0CisgICAgICovCisgICAgcHVibGljIFVuaWNvZGVEZWNvbXByZXNzb3IoKQorICAgIHsKKwlyZXNldCgpOyAgICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSB0byBkZWZhdWx0cworICAgIH0KKworICAgIC8qKgorICAgICAqIERlY29tcHJlc3MgYSBieXRlIGFycmF5IGludG8gYSBTdHJpbmcuCisgICAgICogQHBhcmFtIGJ1ZmZlciBUaGUgYnl0ZSBhcnJheSB0byBkZWNvbXByZXNzLgorICAgICAqIEByZXR1cm4gQSBTdHJpbmcgY29udGFpbmluZyB0aGUgZGVjb21wcmVzc2VkIGNoYXJhY3RlcnMuCisgICAgICogQHNlZSAjZGVjb21wcmVzcyhieXRlIFtdLCBpbnQsIGludCkKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBkZWNvbXByZXNzKGJ5dGUgW10gYnVmZmVyKQorICAgIHsKKwljaGFyIFtdIGJ1ZiA9IGRlY29tcHJlc3MoYnVmZmVyLCAwLCBidWZmZXIubGVuZ3RoKTsKKwlyZXR1cm4gbmV3IFN0cmluZyhidWYpOworICAgIH0KKworICAgIC8qKgorICAgICAqIERlY29tcHJlc3MgYSBieXRlIGFycmF5IGludG8gYSBVbmljb2RlIGNoYXJhY3RlciBhcnJheS4KKyAgICAgKiBAcGFyYW0gYnVmZmVyIFRoZSBieXRlIGFycmF5IHRvIGRlY29tcHJlc3MuCisgICAgICogQHBhcmFtIHN0YXJ0IFRoZSBzdGFydCBvZiB0aGUgYnl0ZSBydW4gdG8gZGVjb21wcmVzcy4KKyAgICAgKiBAcGFyYW0gbGltaXQgVGhlIGxpbWl0IG9mIHRoZSBieXRlIHJ1biB0byBkZWNvbXByZXNzLgorICAgICAqIEByZXR1cm4gQSBjaGFyYWN0ZXIgYXJyYXkgY29udGFpbmluZyB0aGUgZGVjb21wcmVzc2VkIGJ5dGVzLgorICAgICAqIEBzZWUgI2RlY29tcHJlc3MoYnl0ZSBbXSkKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGNoYXIgW10gZGVjb21wcmVzcyhieXRlIFtdIGJ1ZmZlciwKKwkJCQkgICAgIGludCBzdGFydCwKKwkJCQkgICAgIGludCBsaW1pdCkKKyAgICB7CisJVW5pY29kZURlY29tcHJlc3NvciBjb21wID0gbmV3IFVuaWNvZGVEZWNvbXByZXNzb3IoKTsKKworCS8vIHVzZSBhIGJ1ZmZlciB3ZSBrbm93IHdpbGwgbmV2ZXIgb3ZlcmZsb3cKKwkvLyBpbiB0aGUgd29yc3QgY2FzZSwgZWFjaCBieXRlIHdpbGwgZGVjb21wcmVzcworCS8vIHRvIGEgc3Vycm9nYXRlIHBhaXIgKGJ1ZmZlciBtdXN0IGJlIGF0IGxlYXN0IDIgY2hhcnMpCisJaW50IGxlbiA9IE1hdGgubWF4KDIsIDIgKiAobGltaXQgLSBzdGFydCkpOworCWNoYXIgW10gdGVtcCA9IG5ldyBjaGFyIFtsZW5dOworCisJaW50IGNoYXJDb3VudCA9IGNvbXAuZGVjb21wcmVzcyhidWZmZXIsIHN0YXJ0LCBsaW1pdCwgbnVsbCwgCisJCQkJCXRlbXAsIDAsIGxlbik7CisKKwljaGFyIFtdIHJlc3VsdCA9IG5ldyBjaGFyIFtjaGFyQ291bnRdOworCVN5c3RlbS5hcnJheWNvcHkodGVtcCwgMCwgcmVzdWx0LCAwLCBjaGFyQ291bnQpOworCXJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIERlY29tcHJlc3MgYSBieXRlIGFycmF5IGludG8gYSBVbmljb2RlIGNoYXJhY3RlciBhcnJheS4KKyAgICAgKgorICAgICAqIFRoaXMgZnVuY3Rpb24gd2lsbCBlaXRoZXIgY29tcGxldGVseSBmaWxsIHRoZSBvdXRwdXQgYnVmZmVyLCAKKyAgICAgKiBvciBjb25zdW1lIHRoZSBlbnRpcmUgaW5wdXQuICAKKyAgICAgKgorICAgICAqIEBwYXJhbSBieXRlQnVmZmVyIFRoZSBieXRlIGJ1ZmZlciB0byBkZWNvbXByZXNzLgorICAgICAqIEBwYXJhbSBieXRlQnVmZmVyU3RhcnQgVGhlIHN0YXJ0IG9mIHRoZSBieXRlIHJ1biB0byBkZWNvbXByZXNzLgorICAgICAqIEBwYXJhbSBieXRlQnVmZmVyTGltaXQgVGhlIGxpbWl0IG9mIHRoZSBieXRlIHJ1biB0byBkZWNvbXByZXNzLgorICAgICAqIEBwYXJhbSBieXRlc1JlYWQgQSBvbmUtZWxlbWVudCBhcnJheS4gIElmIG5vdCBudWxsLCBvbiByZXR1cm4KKyAgICAgKiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgZnJvbSBieXRlQnVmZmVyLgorICAgICAqIEBwYXJhbSBjaGFyQnVmZmVyIEEgYnVmZmVyIHRvIHJlY2VpdmUgdGhlIGRlY29tcHJlc3NlZCBkYXRhLiAKKyAgICAgKiBUaGlzIGJ1ZmZlciBtdXN0IGJlIGF0IG1pbmltdW0gdHdvIGNoYXJhY3RlcnMgaW4gc2l6ZS4KKyAgICAgKiBAcGFyYW0gY2hhckJ1ZmZlclN0YXJ0IFRoZSBzdGFydGluZyBvZmZzZXQgdG8gd2hpY2ggdG8gd3JpdGUgCisgICAgICogZGVjb21wcmVzc2VkIGRhdGEuCisgICAgICogQHBhcmFtIGNoYXJCdWZmZXJMaW1pdCBUaGUgbGltaXRpbmcgb2Zmc2V0IGZvciB3cml0aW5nIAorICAgICAqIGRlY29tcHJlc3NlZCBkYXRhLgorICAgICAqIEByZXR1cm4gVGhlIG51bWJlciBvZiBVbmljb2RlIGNoYXJhY3RlcnMgd3JpdHRlbiB0byBjaGFyQnVmZmVyLgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZGVjb21wcmVzcyhieXRlIFtdICAgIGJ5dGVCdWZmZXIsCisJCQkgIGludCAgICAgICAgYnl0ZUJ1ZmZlclN0YXJ0LAorCQkJICBpbnQgICAgICAgIGJ5dGVCdWZmZXJMaW1pdCwKKwkJCSAgaW50IFtdICAgICBieXRlc1JlYWQsCisJCQkgIGNoYXIgW10gICAgY2hhckJ1ZmZlciwKKwkJCSAgaW50ICAgICAgICBjaGFyQnVmZmVyU3RhcnQsCisJCQkgIGludCAgICAgICAgY2hhckJ1ZmZlckxpbWl0KQorICAgIHsKKwkvLyB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgc291cmNlIGJ5dGUgYnVmZmVyCisJaW50IGJ5dGVQb3MgICAgICA9IGJ5dGVCdWZmZXJTdGFydDsKKwkKKwkvLyB0aGUgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgdGFyZ2V0IGNoYXIgYnVmZmVyCisJaW50IHVjUG9zICAgICAgICA9IGNoYXJCdWZmZXJTdGFydDsKKyAgICAgICAgCisgICAgICAgIC8vIHRoZSBjdXJyZW50IGJ5dGUgZnJvbSB0aGUgc291cmNlIGJ1ZmZlcgorCWludCBhQnl0ZSAgICAgICAgPSAweDAwOworCisKKwkvLyBjaGFyQnVmZmVyIG11c3QgYmUgYXQgbGVhc3QgMiBjaGFycyBpbiBzaXplCisJaWYoY2hhckJ1ZmZlci5sZW5ndGggPCAyIHx8IChjaGFyQnVmZmVyTGltaXQgLSBjaGFyQnVmZmVyU3RhcnQpIDwgMikKKwkgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiY2hhckJ1ZmZlci5sZW5ndGggPCAyIik7CisJCisJLy8gaWYgb3VyIGludGVybmFsIGJ1ZmZlciBpc24ndCBlbXB0eSwgZmx1c2ggaXRzIGNvbnRlbnRzCisJLy8gdG8gdGhlIG91dHB1dCBidWZmZXIgYmVmb3JlIGRvaW5nIGFueSBtb3JlIGRlY29tcHJlc3Npb24KKwlpZihmQnVmZmVyTGVuZ3RoID4gMCkgeworCisJICAgIGludCBuZXdCeXRlcyA9IDA7CisKKwkgICAgLy8gZmlsbCB0aGUgYnVmZmVyIGNvbXBsZXRlbHksIHRvIGd1YXJhbnRlZSBvbmUgZnVsbCBjaGFyYWN0ZXIKKwkgICAgaWYoZkJ1ZmZlckxlbmd0aCAhPSBCVUZTSVpFKSB7CisJCW5ld0J5dGVzID0gZkJ1ZmZlci5sZW5ndGggLSBmQnVmZmVyTGVuZ3RoOworCisJCS8vIHZlcmlmeSB0aGVyZSBhcmUgbmV3Qnl0ZXMgYnl0ZXMgaW4gYnl0ZUJ1ZmZlcgorCQlpZihieXRlQnVmZmVyTGltaXQgLSBieXRlQnVmZmVyU3RhcnQgPCBuZXdCeXRlcykKKwkJICAgIG5ld0J5dGVzID0gYnl0ZUJ1ZmZlckxpbWl0IC0gYnl0ZUJ1ZmZlclN0YXJ0OworCisJCVN5c3RlbS5hcnJheWNvcHkoYnl0ZUJ1ZmZlciwgYnl0ZUJ1ZmZlclN0YXJ0LCAKKwkJCQkgZkJ1ZmZlciwgZkJ1ZmZlckxlbmd0aCwgbmV3Qnl0ZXMpOworCSAgICB9CisKKwkgICAgLy8gcmVzZXQgYnVmZmVyIGxlbmd0aCB0byAwIGJlZm9yZSByZWN1cnNpdmUgY2FsbAorCSAgICBmQnVmZmVyTGVuZ3RoID0gMDsKKworCSAgICAvLyBjYWxsIHNlbGYgcmVjdXJzaXZlbHkgdG8gZGVjb21wcmVzcyB0aGUgYnVmZmVyCisJICAgIGludCBjb3VudCA9IGRlY29tcHJlc3MoZkJ1ZmZlciwgMCwgZkJ1ZmZlci5sZW5ndGgsIG51bGwsCisJCQkJICAgY2hhckJ1ZmZlciwgY2hhckJ1ZmZlclN0YXJ0LCAKKwkJCQkgICBjaGFyQnVmZmVyTGltaXQpOworCisJICAgIC8vIHVwZGF0ZSB0aGUgcG9zaXRpb25zIGludG8gdGhlIGFycmF5cworCSAgICB1Y1BvcyArPSBjb3VudDsKKwkgICAgYnl0ZVBvcyArPSBuZXdCeXRlczsKKwl9CisKKyAgICAgICAgLy8gdGhlIG1haW4gZGVjb21wcmVzc2lvbiBsb29wCisgICAgbWFpbkxvb3A6CisJd2hpbGUoYnl0ZVBvcyA8IGJ5dGVCdWZmZXJMaW1pdCAmJiB1Y1BvcyA8IGNoYXJCdWZmZXJMaW1pdCkgeworCSAgICBzd2l0Y2goZk1vZGUpIHsgIAorCSAgICBjYXNlIFNJTkdMRUJZVEVNT0RFOgorCQkvLyBzaW5nbGUtYnl0ZSBtb2RlIGRlY29tcHJlc3Npb24gbG9vcAorCSAgICBzaW5nbGVCeXRlTW9kZUxvb3A6CisJICAgIHdoaWxlKGJ5dGVQb3MgPCBieXRlQnVmZmVyTGltaXQgJiYgdWNQb3MgPCBjaGFyQnVmZmVyTGltaXQpIHsKKwkJYUJ5dGUgPSBieXRlQnVmZmVyW2J5dGVQb3MrK10gJiAweEZGOworCQlzd2l0Y2goYUJ5dGUpIHsKKwkJICAgIC8vIEFsbCBieXRlcyBmcm9tIDB4ODAgdGhyb3VnaCAweEZGIGFyZSByZW1hcHBlZAorCQkgICAgLy8gdG8gY2hhcnMgb3Igc3Vycm9nYXRlIHBhaXJzIGFjY29yZGluZyB0byB0aGUKKwkJICAgIC8vIGN1cnJlbnRseSBhY3RpdmUgd2luZG93CisJCWNhc2UgMHg4MDogY2FzZSAweDgxOiBjYXNlIDB4ODI6IGNhc2UgMHg4MzogY2FzZSAweDg0OiAKKwkJY2FzZSAweDg1OiBjYXNlIDB4ODY6IGNhc2UgMHg4NzogY2FzZSAweDg4OiBjYXNlIDB4ODk6CisJCWNhc2UgMHg4QTogY2FzZSAweDhCOiBjYXNlIDB4OEM6IGNhc2UgMHg4RDogY2FzZSAweDhFOgorCQljYXNlIDB4OEY6IGNhc2UgMHg5MDogY2FzZSAweDkxOiBjYXNlIDB4OTI6IGNhc2UgMHg5MzoKKwkJY2FzZSAweDk0OiBjYXNlIDB4OTU6IGNhc2UgMHg5NjogY2FzZSAweDk3OiBjYXNlIDB4OTg6CisJCWNhc2UgMHg5OTogY2FzZSAweDlBOiBjYXNlIDB4OUI6IGNhc2UgMHg5QzogY2FzZSAweDlEOgorCQljYXNlIDB4OUU6IGNhc2UgMHg5RjogY2FzZSAweEEwOiBjYXNlIDB4QTE6IGNhc2UgMHhBMjoKKwkJY2FzZSAweEEzOiBjYXNlIDB4QTQ6IGNhc2UgMHhBNTogY2FzZSAweEE2OiBjYXNlIDB4QTc6CisJCWNhc2UgMHhBODogY2FzZSAweEE5OiBjYXNlIDB4QUE6IGNhc2UgMHhBQjogY2FzZSAweEFDOgorCQljYXNlIDB4QUQ6IGNhc2UgMHhBRTogY2FzZSAweEFGOiBjYXNlIDB4QjA6IGNhc2UgMHhCMToKKwkJY2FzZSAweEIyOiBjYXNlIDB4QjM6IGNhc2UgMHhCNDogY2FzZSAweEI1OiBjYXNlIDB4QjY6CisJCWNhc2UgMHhCNzogY2FzZSAweEI4OiBjYXNlIDB4Qjk6IGNhc2UgMHhCQTogY2FzZSAweEJCOgorCQljYXNlIDB4QkM6IGNhc2UgMHhCRDogY2FzZSAweEJFOiBjYXNlIDB4QkY6IGNhc2UgMHhDMDoKKwkJY2FzZSAweEMxOiBjYXNlIDB4QzI6IGNhc2UgMHhDMzogY2FzZSAweEM0OiBjYXNlIDB4QzU6CisJCWNhc2UgMHhDNjogY2FzZSAweEM3OiBjYXNlIDB4Qzg6IGNhc2UgMHhDOTogY2FzZSAweENBOgorCQljYXNlIDB4Q0I6IGNhc2UgMHhDQzogY2FzZSAweENEOiBjYXNlIDB4Q0U6IGNhc2UgMHhDRjoKKwkJY2FzZSAweEQwOiBjYXNlIDB4RDE6IGNhc2UgMHhEMjogY2FzZSAweEQzOiBjYXNlIDB4RDQ6CisJCWNhc2UgMHhENTogY2FzZSAweEQ2OiBjYXNlIDB4RDc6IGNhc2UgMHhEODogY2FzZSAweEQ5OgorCQljYXNlIDB4REE6IGNhc2UgMHhEQjogY2FzZSAweERDOiBjYXNlIDB4REQ6IGNhc2UgMHhERToKKwkJY2FzZSAweERGOiBjYXNlIDB4RTA6IGNhc2UgMHhFMTogY2FzZSAweEUyOiBjYXNlIDB4RTM6CisJCWNhc2UgMHhFNDogY2FzZSAweEU1OiBjYXNlIDB4RTY6IGNhc2UgMHhFNzogY2FzZSAweEU4OgorCQljYXNlIDB4RTk6IGNhc2UgMHhFQTogY2FzZSAweEVCOiBjYXNlIDB4RUM6IGNhc2UgMHhFRDoKKwkJY2FzZSAweEVFOiBjYXNlIDB4RUY6IGNhc2UgMHhGMDogY2FzZSAweEYxOiBjYXNlIDB4RjI6CisJCWNhc2UgMHhGMzogY2FzZSAweEY0OiBjYXNlIDB4RjU6IGNhc2UgMHhGNjogY2FzZSAweEY3OgorCQljYXNlIDB4Rjg6IGNhc2UgMHhGOTogY2FzZSAweEZBOiBjYXNlIDB4RkI6IGNhc2UgMHhGQzoKKwkJY2FzZSAweEZEOiBjYXNlIDB4RkU6IGNhc2UgMHhGRjogCisJCSAgICAvLyBGb3Igb2Zmc2V0cyA8PSAweEZGRkYsIGNvbnZlcnQgdG8gYSBzaW5nbGUgY2hhcgorCQkgICAgLy8gYnkgYWRkaW5nIHRoZSB3aW5kb3cncyBvZmZzZXQgYW5kIHN1YnRyYWN0aW5nCisJCSAgICAvLyB0aGUgZ2VuZXJpYyBjb21wcmVzc2lvbiBvZmZzZXQKKwkJICAgIGlmKGZPZmZzZXRzWyBmQ3VycmVudFdpbmRvdyBdIDw9IDB4RkZGRikgeworCQkJY2hhckJ1ZmZlclt1Y1BvcysrXSA9IChjaGFyKSAKKwkJCSAgICAoYUJ5dGUgKyBmT2Zmc2V0c1sgZkN1cnJlbnRXaW5kb3cgXSAKKwkJCSAgICAgLSBDT01QUkVTU0lPTk9GRlNFVCk7CisJCSAgICB9CisJCSAgICAvLyBGb3Igb2Zmc2V0cyA+IDB4MTAwMDAsIGNvbnZlcnQgdG8gYSBzdXJyb2dhdGUgcGFpciBieSAKKwkJICAgIC8vIG5vcm1CYXNlID0gd2luZG93J3Mgb2Zmc2V0IC0gMHgxMDAwMAorCQkgICAgLy8gaGlnaCBzdXJyLiA9IDB4RDgwMCArIChub3JtQmFzZSA+PiAxMCkKKwkJICAgIC8vIGxvdyAgc3Vyci4gPSAweERDMDAgKyAobm9ybUJhc2UgJiAweDNGRikgKyAoYnl0ZSAmIDB4N0YpCisJCSAgICBlbHNlIHsKKwkJCS8vIG1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggcm9vbSB0byB3cml0ZQorCQkJLy8gYm90aCBjaGFyYWN0ZXJzIAorCQkJLy8gaWYgbm90LCBzYXZlIHN0YXRlIGFuZCBicmVhayBvdXQKKwkJCWlmKCh1Y1BvcyArIDEpID49IGNoYXJCdWZmZXJMaW1pdCkgeworCQkJICAgIC0tYnl0ZVBvczsKKwkJCSAgICBTeXN0ZW0uYXJyYXljb3B5KGJ5dGVCdWZmZXIsIGJ5dGVQb3MsCisJCQkJCSAgICAgZkJ1ZmZlciwgMCwgCisJCQkJCSAgICAgYnl0ZUJ1ZmZlckxpbWl0IC0gYnl0ZVBvcyk7CisJCQkgICAgZkJ1ZmZlckxlbmd0aCA9IGJ5dGVCdWZmZXJMaW1pdCAtIGJ5dGVQb3M7CisJCQkgICAgYnl0ZVBvcyArPSBmQnVmZmVyTGVuZ3RoOworCQkJICAgIGJyZWFrIG1haW5Mb29wOyAKKwkJCX0KKwkJCQorCQkJaW50IG5vcm1hbGl6ZWRCYXNlID0gZk9mZnNldHNbIGZDdXJyZW50V2luZG93IF0gCisJCQkgICAgLSAweDEwMDAwOworCQkJY2hhckJ1ZmZlclt1Y1BvcysrXSA9IChjaGFyKSAKKwkJCSAgICAoMHhEODAwICsgKG5vcm1hbGl6ZWRCYXNlID4+IDEwKSk7CisJCQljaGFyQnVmZmVyW3VjUG9zKytdID0gKGNoYXIpIAorCQkJICAgICgweERDMDAgKyAobm9ybWFsaXplZEJhc2UgJiAweDNGRikrKGFCeXRlICYgMHg3RikpOworCQkgICAgfQorCQkgICAgYnJlYWs7CisKKwkJICAgIC8vIGJ5dGVzIGZyb20gMHgyMCB0aHJvdWdoIDB4N0YgYXJlIHRyZWF0ZWQgYXMgQVNDSUkgYW5kCisJCSAgICAvLyBhcmUgcmVtYXBwZWQgdG8gY2hhcnMgYnkgcGFkZGluZyB0aGUgaGlnaCBieXRlCisJCSAgICAvLyAodGhpcyBpcyB0aGUgc2FtZSBhcyBxdW90aW5nIGZyb20gc3RhdGljIHdpbmRvdyAwKQorCQkgICAgLy8gTlVMICgweDAwKSwgSFQgKDB4MDkpLCBDUiAoMHgwQSksIExGICgweDBEKSAKKwkJICAgIC8vIGFyZSB0cmVhdGVkIGFzIEFTQ0lJIGFzIHdlbGwKKwkJY2FzZSAweDAwOiBjYXNlIDB4MDk6IGNhc2UgMHgwQTogY2FzZSAweDBEOgorCQljYXNlIDB4MjA6IGNhc2UgMHgyMTogY2FzZSAweDIyOiBjYXNlIDB4MjM6IGNhc2UgMHgyNDoKKwkJY2FzZSAweDI1OiBjYXNlIDB4MjY6IGNhc2UgMHgyNzogY2FzZSAweDI4OiBjYXNlIDB4Mjk6CisJCWNhc2UgMHgyQTogY2FzZSAweDJCOiBjYXNlIDB4MkM6IGNhc2UgMHgyRDogY2FzZSAweDJFOgorCQljYXNlIDB4MkY6IGNhc2UgMHgzMDogY2FzZSAweDMxOiBjYXNlIDB4MzI6IGNhc2UgMHgzMzoKKwkJY2FzZSAweDM0OiBjYXNlIDB4MzU6IGNhc2UgMHgzNjogY2FzZSAweDM3OiBjYXNlIDB4Mzg6CisJCWNhc2UgMHgzOTogY2FzZSAweDNBOiBjYXNlIDB4M0I6IGNhc2UgMHgzQzogY2FzZSAweDNEOgorCQljYXNlIDB4M0U6IGNhc2UgMHgzRjogY2FzZSAweDQwOiBjYXNlIDB4NDE6IGNhc2UgMHg0MjoKKwkJY2FzZSAweDQzOiBjYXNlIDB4NDQ6IGNhc2UgMHg0NTogY2FzZSAweDQ2OiBjYXNlIDB4NDc6CisJCWNhc2UgMHg0ODogY2FzZSAweDQ5OiBjYXNlIDB4NEE6IGNhc2UgMHg0QjogY2FzZSAweDRDOgorCQljYXNlIDB4NEQ6IGNhc2UgMHg0RTogY2FzZSAweDRGOiBjYXNlIDB4NTA6IGNhc2UgMHg1MToKKwkJY2FzZSAweDUyOiBjYXNlIDB4NTM6IGNhc2UgMHg1NDogY2FzZSAweDU1OiBjYXNlIDB4NTY6CisJCWNhc2UgMHg1NzogY2FzZSAweDU4OiBjYXNlIDB4NTk6IGNhc2UgMHg1QTogY2FzZSAweDVCOgorCQljYXNlIDB4NUM6IGNhc2UgMHg1RDogY2FzZSAweDVFOiBjYXNlIDB4NUY6IGNhc2UgMHg2MDoKKwkJY2FzZSAweDYxOiBjYXNlIDB4NjI6IGNhc2UgMHg2MzogY2FzZSAweDY0OiBjYXNlIDB4NjU6CisJCWNhc2UgMHg2NjogY2FzZSAweDY3OiBjYXNlIDB4Njg6IGNhc2UgMHg2OTogY2FzZSAweDZBOgorCQljYXNlIDB4NkI6IGNhc2UgMHg2QzogY2FzZSAweDZEOiBjYXNlIDB4NkU6IGNhc2UgMHg2RjoKKwkJY2FzZSAweDcwOiBjYXNlIDB4NzE6IGNhc2UgMHg3MjogY2FzZSAweDczOiBjYXNlIDB4NzQ6CisJCWNhc2UgMHg3NTogY2FzZSAweDc2OiBjYXNlIDB4Nzc6IGNhc2UgMHg3ODogY2FzZSAweDc5OgorCQljYXNlIDB4N0E6IGNhc2UgMHg3QjogY2FzZSAweDdDOiBjYXNlIDB4N0Q6IGNhc2UgMHg3RToKKwkJY2FzZSAweDdGOiAKKwkJICAgIGNoYXJCdWZmZXJbdWNQb3MrK10gPSAoY2hhcikgYUJ5dGU7CisJCSAgICBicmVhazsKKworCQkgICAgLy8gcXVvdGUgdW5pY29kZQorCQljYXNlIFNRVU9URVU6CisJCSAgICAvLyB2ZXJpZnkgd2UgaGF2ZSB0d28gYnl0ZXMgZm9sbG93aW5nIHRhZworCQkgICAgLy8gaWYgbm90LCBzYXZlIHN0YXRlIGFuZCBicmVhayBvdXQKKwkJICAgIGlmKCAoYnl0ZVBvcyArIDEpID49IGJ5dGVCdWZmZXJMaW1pdCApIHsKKwkJCS0tYnl0ZVBvczsKKwkJCVN5c3RlbS5hcnJheWNvcHkoYnl0ZUJ1ZmZlciwgYnl0ZVBvcywKKwkJCQkJIGZCdWZmZXIsIDAsIAorCQkJCQkgYnl0ZUJ1ZmZlckxpbWl0IC0gYnl0ZVBvcyk7CisJCQlmQnVmZmVyTGVuZ3RoID0gYnl0ZUJ1ZmZlckxpbWl0IC0gYnl0ZVBvczsKKwkJCWJ5dGVQb3MgKz0gZkJ1ZmZlckxlbmd0aDsKKwkJCWJyZWFrIG1haW5Mb29wOyAKKwkJICAgIH0KKyAgICAgICAgICAgICAgICAKKwkJICAgIGFCeXRlID0gYnl0ZUJ1ZmZlcltieXRlUG9zKytdOworCQkgICAgY2hhckJ1ZmZlclt1Y1BvcysrXSA9IChjaGFyKQorCQkJKGFCeXRlIDw8IDggfCAoYnl0ZUJ1ZmZlcltieXRlUG9zKytdICYgMHhGRikpOworCQkgICAgYnJlYWs7CisKKwkJICAgIC8vIHN3aXRjaCB0byBVbmljb2RlIG1vZGUKKwkJY2FzZSBTQ0hBTkdFVToKKwkJICAgIGZNb2RlID0gVU5JQ09ERU1PREU7CisJCSAgICBicmVhayBzaW5nbGVCeXRlTW9kZUxvb3A7CisJCSAgICAvL2JyZWFrOworCisJCSAgICAvLyBoYW5kbGUgYWxsIHF1b3RlIHRhZ3MKKwkJY2FzZSBTUVVPVEUwOiBjYXNlIFNRVU9URTE6IGNhc2UgU1FVT1RFMjogY2FzZSBTUVVPVEUzOgorCQljYXNlIFNRVU9URTQ6IGNhc2UgU1FVT1RFNTogY2FzZSBTUVVPVEU2OiBjYXNlIFNRVU9URTc6CisJCSAgICAvLyB2ZXJpZnkgdGhlcmUgaXMgYSBieXRlIGZvbGxvd2luZyB0aGUgdGFnCisJCSAgICAvLyBpZiBub3QsIHNhdmUgc3RhdGUgYW5kIGJyZWFrIG91dAorCQkgICAgaWYoYnl0ZVBvcyA+PSBieXRlQnVmZmVyTGltaXQpIHsKKwkJCS0tYnl0ZVBvczsKKwkJCVN5c3RlbS5hcnJheWNvcHkoYnl0ZUJ1ZmZlciwgYnl0ZVBvcywKKwkJCQkJIGZCdWZmZXIsIDAsIAorCQkJCQkgYnl0ZUJ1ZmZlckxpbWl0IC0gYnl0ZVBvcyk7CisJCQlmQnVmZmVyTGVuZ3RoID0gYnl0ZUJ1ZmZlckxpbWl0IC0gYnl0ZVBvczsKKwkJCWJ5dGVQb3MgKz0gZkJ1ZmZlckxlbmd0aDsKKwkJCWJyZWFrIG1haW5Mb29wOyAKKwkJICAgIH0KKyAgICAgICAgICAgICAgICAKKwkJICAgIC8vIGlmIHRoZSBieXRlIGlzIGluIHRoZSByYW5nZSAweDAwIC0gMHg3RiwgdXNlCisJCSAgICAvLyBzdGF0aWMgd2luZG93IG4gb3RoZXJ3aXNlLCB1c2UgZHluYW1pYyB3aW5kb3cgbgorCQkgICAgaW50IGRCeXRlID0gYnl0ZUJ1ZmZlcltieXRlUG9zKytdICYgMHhGRjsKKwkJICAgIGNoYXJCdWZmZXJbdWNQb3MrK10gPSAoY2hhcikgCisJCQkoZEJ5dGUrIChkQnl0ZSA+PSAweDAwICYmIGRCeXRlIDwgMHg4MCAKKwkJCQkgPyBzT2Zmc2V0c1thQnl0ZSAtIFNRVU9URTBdIAorCQkJCSA6IChmT2Zmc2V0c1thQnl0ZSAtIFNRVU9URTBdIAorCQkJCSAgICAtIENPTVBSRVNTSU9OT0ZGU0VUKSkpOyAKKwkJICAgIGJyZWFrOworCisJCSAgICAvLyBoYW5kbGUgYWxsIGNoYW5nZSB0YWdzCisJCWNhc2UgU0NIQU5HRTA6IGNhc2UgU0NIQU5HRTE6IGNhc2UgU0NIQU5HRTI6IGNhc2UgU0NIQU5HRTM6CisJCWNhc2UgU0NIQU5HRTQ6IGNhc2UgU0NIQU5HRTU6IGNhc2UgU0NIQU5HRTY6IGNhc2UgU0NIQU5HRTc6CisJCSAgICBmQ3VycmVudFdpbmRvdyA9IGFCeXRlIC0gU0NIQU5HRTA7CisJCSAgICBicmVhazsKKworCQkgICAgLy8gaGFuZGxlIGFsbCBkZWZpbmUgdGFncworCQljYXNlIFNERUZJTkUwOiBjYXNlIFNERUZJTkUxOiBjYXNlIFNERUZJTkUyOiBjYXNlIFNERUZJTkUzOgorCQljYXNlIFNERUZJTkU0OiBjYXNlIFNERUZJTkU1OiBjYXNlIFNERUZJTkU2OiBjYXNlIFNERUZJTkU3OgorCQkgICAgLy8gdmVyaWZ5IHRoZXJlIGlzIGEgYnl0ZSBmb2xsb3dpbmcgdGhlIHRhZworCQkgICAgLy8gaWYgbm90LCBzYXZlIHN0YXRlIGFuZCBicmVhayBvdXQKKwkJICAgIGlmKGJ5dGVQb3MgPj0gYnl0ZUJ1ZmZlckxpbWl0KSB7CisJCQktLWJ5dGVQb3M7CisJCQlTeXN0ZW0uYXJyYXljb3B5KGJ5dGVCdWZmZXIsIGJ5dGVQb3MsCisJCQkJCSBmQnVmZmVyLCAwLCAKKwkJCQkJIGJ5dGVCdWZmZXJMaW1pdCAtIGJ5dGVQb3MpOworCQkJZkJ1ZmZlckxlbmd0aCA9IGJ5dGVCdWZmZXJMaW1pdCAtIGJ5dGVQb3M7CisJCQlieXRlUG9zICs9IGZCdWZmZXJMZW5ndGg7CisJCQlicmVhayBtYWluTG9vcDsgCisJCSAgICB9CisKKwkJICAgIGZDdXJyZW50V2luZG93ID0gYUJ5dGUgLSBTREVGSU5FMDsKKwkJICAgIGZPZmZzZXRzW2ZDdXJyZW50V2luZG93XSA9IAorCQkJc09mZnNldFRhYmxlW2J5dGVCdWZmZXJbYnl0ZVBvcysrXSAmIDB4RkZdOworCQkgICAgYnJlYWs7CisKKwkJICAgIC8vIGhhbmRsZSBkZWZpbmUgZXh0ZW5kZWQgdGFnCisJCWNhc2UgU0RFRklORVg6CisJCSAgICAvLyB2ZXJpZnkgd2UgaGF2ZSB0d28gYnl0ZXMgZm9sbG93aW5nIHRhZworCQkgICAgLy8gaWYgbm90LCBzYXZlIHN0YXRlIGFuZCBicmVhayBvdXQKKwkJICAgIGlmKChieXRlUG9zICsgMSkgPj0gYnl0ZUJ1ZmZlckxpbWl0ICkgeworCQkJLS1ieXRlUG9zOworCQkJU3lzdGVtLmFycmF5Y29weShieXRlQnVmZmVyLCBieXRlUG9zLAorCQkJCQkgZkJ1ZmZlciwgMCwgCisJCQkJCSBieXRlQnVmZmVyTGltaXQgLSBieXRlUG9zKTsKKwkJCWZCdWZmZXJMZW5ndGggPSBieXRlQnVmZmVyTGltaXQgLSBieXRlUG9zOworCQkJYnl0ZVBvcyArPSBmQnVmZmVyTGVuZ3RoOworCQkJYnJlYWsgbWFpbkxvb3A7IAorCQkgICAgfQorICAgICAgICAgICAgICAgIAorCQkgICAgYUJ5dGUgPSBieXRlQnVmZmVyW2J5dGVQb3MrK10gJiAweEZGOworCQkgICAgZkN1cnJlbnRXaW5kb3cgPSAoYUJ5dGUgJiAweEUwKSA+PiA1OworCQkgICAgZk9mZnNldHNbZkN1cnJlbnRXaW5kb3ddID0gMHgxMDAwMCArIAorCQkJKDB4ODAgKiAoKChhQnl0ZSAmIDB4MUYpIDw8IDgpIAorCQkJCSB8IChieXRlQnVmZmVyW2J5dGVQb3MrK10gJiAweEZGKSkpOworCQkgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAvLyByZXNlcnZlZCwgc2hvdWxkbid0IGhhcHBlbgorCQljYXNlIFNSRVNFUlZFRDoKKwkJICAgIGJyZWFrOworCisJCX0gLy8gZW5kIHN3aXRjaAorCSAgICB9IC8vIGVuZCB3aGlsZQorCSAgICBicmVhazsKKworCSAgICBjYXNlIFVOSUNPREVNT0RFOgorCQkvLyB1bmljb2RlIG1vZGUgZGVjb21wcmVzc2lvbiBsb29wCisJICAgIHVuaWNvZGVNb2RlTG9vcDoKKwkgICAgd2hpbGUoYnl0ZVBvcyA8IGJ5dGVCdWZmZXJMaW1pdCAmJiB1Y1BvcyA8IGNoYXJCdWZmZXJMaW1pdCkgeworCQlhQnl0ZSA9IGJ5dGVCdWZmZXJbYnl0ZVBvcysrXSAmIDB4RkY7CisJCXN3aXRjaChhQnl0ZSkgeworCQkgICAgLy8gaGFuZGxlIGFsbCBkZWZpbmUgdGFncworCQljYXNlIFVERUZJTkUwOiBjYXNlIFVERUZJTkUxOiBjYXNlIFVERUZJTkUyOiBjYXNlIFVERUZJTkUzOgorCQljYXNlIFVERUZJTkU0OiBjYXNlIFVERUZJTkU1OiBjYXNlIFVERUZJTkU2OiBjYXNlIFVERUZJTkU3OgorCQkgICAgLy8gdmVyaWZ5IHRoZXJlIGlzIGEgYnl0ZSBmb2xsb3dpbmcgdGFnCisJCSAgICAvLyBpZiBub3QsIHNhdmUgc3RhdGUgYW5kIGJyZWFrIG91dAorCQkgICAgaWYoYnl0ZVBvcyA+PSBieXRlQnVmZmVyTGltaXQgKSB7CisJCQktLWJ5dGVQb3M7CisJCQlTeXN0ZW0uYXJyYXljb3B5KGJ5dGVCdWZmZXIsIGJ5dGVQb3MsCisJCQkJCSBmQnVmZmVyLCAwLCAKKwkJCQkJIGJ5dGVCdWZmZXJMaW1pdCAtIGJ5dGVQb3MpOworCQkJZkJ1ZmZlckxlbmd0aCA9IGJ5dGVCdWZmZXJMaW1pdCAtIGJ5dGVQb3M7CisJCQlieXRlUG9zICs9IGZCdWZmZXJMZW5ndGg7CisJCQlicmVhayBtYWluTG9vcDsgCisJCSAgICB9CisgICAgICAgICAgICAgICAgCisJCSAgICBmQ3VycmVudFdpbmRvdyA9IGFCeXRlIC0gVURFRklORTA7CisJCSAgICBmT2Zmc2V0c1tmQ3VycmVudFdpbmRvd10gPSAKKwkJCXNPZmZzZXRUYWJsZVtieXRlQnVmZmVyW2J5dGVQb3MrK10gJiAweEZGXTsKKwkJICAgIGZNb2RlID0gU0lOR0xFQllURU1PREU7CisJCSAgICBicmVhayB1bmljb2RlTW9kZUxvb3A7CisJCSAgICAvL2JyZWFrOworCisJCSAgICAvLyBoYW5kbGUgZGVmaW5lIGV4dGVuZGVkIHRhZworCQljYXNlIFVERUZJTkVYOgorCQkgICAgLy8gdmVyaWZ5IHdlIGhhdmUgdHdvIGJ5dGVzIGZvbGxvd2luZyB0YWcKKwkJICAgIC8vIGlmIG5vdCwgc2F2ZSBzdGF0ZSBhbmQgYnJlYWsgb3V0CisJCSAgICBpZigoYnl0ZVBvcyArIDEpID49IGJ5dGVCdWZmZXJMaW1pdCApIHsKKwkJCS0tYnl0ZVBvczsKKwkJCVN5c3RlbS5hcnJheWNvcHkoYnl0ZUJ1ZmZlciwgYnl0ZVBvcywKKwkJCQkJIGZCdWZmZXIsIDAsIAorCQkJCQkgYnl0ZUJ1ZmZlckxpbWl0IC0gYnl0ZVBvcyk7CisJCQlmQnVmZmVyTGVuZ3RoID0gYnl0ZUJ1ZmZlckxpbWl0IC0gYnl0ZVBvczsKKwkJCWJ5dGVQb3MgKz0gZkJ1ZmZlckxlbmd0aDsKKwkJCWJyZWFrIG1haW5Mb29wOyAKKwkJICAgIH0KKwkJICAgIAorCQkgICAgYUJ5dGUgPSBieXRlQnVmZmVyW2J5dGVQb3MrK10gJiAweEZGOworCQkgICAgZkN1cnJlbnRXaW5kb3cgPSAoYUJ5dGUgJiAweEUwKSA+PiA1OworCQkgICAgZk9mZnNldHNbZkN1cnJlbnRXaW5kb3ddID0gMHgxMDAwMCArIAorCQkJKDB4ODAgKiAoKChhQnl0ZSAmIDB4MUYpIDw8IDgpIAorCQkJCSB8IChieXRlQnVmZmVyW2J5dGVQb3MrK10gJiAweEZGKSkpOworCQkgICAgZk1vZGUgPSBTSU5HTEVCWVRFTU9ERTsKKwkJICAgIGJyZWFrIHVuaWNvZGVNb2RlTG9vcDsKKwkJICAgIC8vYnJlYWs7CisKKwkJICAgIC8vIGhhbmRsZSBhbGwgY2hhbmdlIHRhZ3MKKwkJY2FzZSBVQ0hBTkdFMDogY2FzZSBVQ0hBTkdFMTogY2FzZSBVQ0hBTkdFMjogY2FzZSBVQ0hBTkdFMzoKKwkJY2FzZSBVQ0hBTkdFNDogY2FzZSBVQ0hBTkdFNTogY2FzZSBVQ0hBTkdFNjogY2FzZSBVQ0hBTkdFNzoKKwkJICAgIGZDdXJyZW50V2luZG93ID0gYUJ5dGUgLSBVQ0hBTkdFMDsKKwkJICAgIGZNb2RlID0gU0lOR0xFQllURU1PREU7CisJCSAgICBicmVhayB1bmljb2RlTW9kZUxvb3A7CisJCSAgICAvL2JyZWFrOworCisJCSAgICAvLyBxdW90ZSB1bmljb2RlCisJCWNhc2UgVVFVT1RFVToKKwkJICAgIC8vIHZlcmlmeSB3ZSBoYXZlIHR3byBieXRlcyBmb2xsb3dpbmcgdGFnCisJCSAgICAvLyBpZiBub3QsIHNhdmUgc3RhdGUgYW5kIGJyZWFrIG91dAorCQkgICAgaWYoYnl0ZVBvcyA+PSBieXRlQnVmZmVyTGltaXQgIC0gMSkgeworCQkJLS1ieXRlUG9zOworCQkJU3lzdGVtLmFycmF5Y29weShieXRlQnVmZmVyLCBieXRlUG9zLAorCQkJCQkgZkJ1ZmZlciwgMCwgCisJCQkJCSBieXRlQnVmZmVyTGltaXQgLSBieXRlUG9zKTsKKwkJCWZCdWZmZXJMZW5ndGggPSBieXRlQnVmZmVyTGltaXQgLSBieXRlUG9zOworCQkJYnl0ZVBvcyArPSBmQnVmZmVyTGVuZ3RoOworCQkJYnJlYWsgbWFpbkxvb3A7IAorCQkgICAgfQorICAgICAgICAgICAgICAgIAorCQkgICAgYUJ5dGUgPSBieXRlQnVmZmVyW2J5dGVQb3MrK107CisJCSAgICBjaGFyQnVmZmVyW3VjUG9zKytdID0gKGNoYXIpIAorCQkJKGFCeXRlIDw8IDggfCAoYnl0ZUJ1ZmZlcltieXRlUG9zKytdICYgMHhGRikpOworCQkgICAgYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJICAgIC8vIHZlcmlmeSB0aGVyZSBpcyBhIGJ5dGUgZm9sbG93aW5nIHRhZworCQkgICAgLy8gaWYgbm90LCBzYXZlIHN0YXRlIGFuZCBicmVhayBvdXQKKwkJICAgIGlmKGJ5dGVQb3MgPj0gYnl0ZUJ1ZmZlckxpbWl0ICkgeworCQkJLS1ieXRlUG9zOworCQkJU3lzdGVtLmFycmF5Y29weShieXRlQnVmZmVyLCBieXRlUG9zLAorCQkJCQkgZkJ1ZmZlciwgMCwgCisJCQkJCSBieXRlQnVmZmVyTGltaXQgLSBieXRlUG9zKTsKKwkJCWZCdWZmZXJMZW5ndGggPSBieXRlQnVmZmVyTGltaXQgLSBieXRlUG9zOworCQkJYnl0ZVBvcyArPSBmQnVmZmVyTGVuZ3RoOworCQkJYnJlYWsgbWFpbkxvb3A7IAorCQkgICAgfQorCisJCSAgICBjaGFyQnVmZmVyW3VjUG9zKytdID0gKGNoYXIpIAorCQkJKGFCeXRlIDw8IDggfCAoYnl0ZUJ1ZmZlcltieXRlUG9zKytdICYgMHhGRikpOworCQkgICAgYnJlYWs7CisKKwkJfSAvLyBlbmQgc3dpdGNoCisJICAgIH0gLy8gZW5kIHdoaWxlCisJICAgIGJyZWFrOworCSAgICAKKwkgICAgfSAvLyBlbmQgc3dpdGNoKCBmTW9kZSApCisJfSAvLyBlbmQgd2hpbGUKKworICAgICAgICAvLyBmaWxsIGluIG91dHB1dCBwYXJhbWV0ZXIKKwlpZihieXRlc1JlYWQgIT0gbnVsbCkKKwkgICAgYnl0ZXNSZWFkIFswXSA9IChieXRlUG9zIC0gYnl0ZUJ1ZmZlclN0YXJ0KTsKKworICAgICAgICAvLyByZXR1cm4gIyBvZiBjaGFycyB3cml0dGVuCisJcmV0dXJuICh1Y1BvcyAtIGNoYXJCdWZmZXJTdGFydCk7CisgICAgfQorCisgICAgLyoqIFJlc2V0IHRoZSBkZWNvbXByZXNzb3IgdG8gaXRzIGluaXRpYWwgc3RhdGUuICovCisgICAgcHVibGljIHZvaWQgcmVzZXQoKQorICAgIHsKKyAgICAgICAgLy8gcmVzZXQgZHluYW1pYyB3aW5kb3dzCisgICAgICAgIGZPZmZzZXRzWzBdID0gMHgwMDgwOyAgICAvLyBMYXRpbi0xCisgICAgICAgIGZPZmZzZXRzWzFdID0gMHgwMEMwOyAgICAvLyBMYXRpbi0xIFN1cHBsZW1lbnQgKyBMYXRpbiBFeHRlbmRlZC1BCisgICAgICAgIGZPZmZzZXRzWzJdID0gMHgwNDAwOyAgICAvLyBDeXJpbGxpYworICAgICAgICBmT2Zmc2V0c1szXSA9IDB4MDYwMDsgICAgLy8gQXJhYmljCisgICAgICAgIGZPZmZzZXRzWzRdID0gMHgwOTAwOyAgICAvLyBEZXZhbmFnYXJpCisgICAgICAgIGZPZmZzZXRzWzVdID0gMHgzMDQwOyAgICAvLyBIaXJhZ2FuYQorICAgICAgICBmT2Zmc2V0c1s2XSA9IDB4MzBBMDsgICAgLy8gS2F0YWthbmEKKyAgICAgICAgZk9mZnNldHNbN10gPSAweEZGMDA7ICAgIC8vIEZ1bGx3aWR0aCBBU0NJSQorCisKKyAgICAgICAgZkN1cnJlbnRXaW5kb3cgID0gMDsgICAgICAgICAgICAgICAgLy8gTWFrZSBjdXJyZW50IHdpbmRvdyBMYXRpbi0xCisgICAgICAgIGZNb2RlICAgICAgICAgICA9IFNJTkdMRUJZVEVNT0RFOyAgIC8vIEFsd2F5cyBzdGFydCBpbiBzaW5nbGUtYnl0ZSBtb2RlCisJZkJ1ZmZlckxlbmd0aCAgID0gMDsgICAgICAgICAgICAgICAgLy8gRW1wdHkgYnVmZmVyCisgICAgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvVW5pY29kZUZpbHRlci5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9Vbmljb2RlRmlsdGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDExYWE3MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvVW5pY29kZUZpbHRlci5qYXZhCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvQXR0aWMvVW5pY29kZUZpbHRlci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDA0OjA3OjI1ICQgCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXh0OworCisvKioKKyAqIDxjb2RlPlVuaWNvZGVGaWx0ZXI8L2NvZGU+IGRlZmluZXMgYSBwcm90b2NvbCBmb3Igc2VsZWN0aW5nIGEKKyAqIHN1YnNldCBvZiB0aGUgZnVsbCByYW5nZSAoVSswMDAwIHRvIFUrRkZGRikgb2YgVW5pY29kZSBjaGFyYWN0ZXJzLgorICogQ3VycmVudGx5LCBmaWx0ZXJzIGFyZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggY2xhc3NlcyBsaWtlIHtAbGluaworICogVHJhbnNsaXRlcmF0b3J9IHRvIG9ubHkgcHJvY2VzcyBzZWxlY3RlZCBjaGFyYWN0ZXJzIHRocm91Z2ggYQorICogdHJhbnNmb3JtYXRpb24uCisgKgorICoge0BsaW5rIFVuaWNvZGVGaWx0ZXJMb2dpY30KKyAqLworCitwdWJsaWMgaW50ZXJmYWNlIFVuaWNvZGVGaWx0ZXIgeworCisgICAgLyoqCisgICAgICogUmV0dXJucyA8dHQ+dHJ1ZTwvdHQ+IGZvciBjaGFyYWN0ZXJzIHRoYXQgYXJlIGluIHRoZSBzZWxlY3RlZAorICAgICAqIHN1YnNldC4gIEluIG90aGVyIHdvcmRzLCBpZiBhIGNoYXJhY3RlciBpcyA8Yj50byBiZQorICAgICAqIGZpbHRlcmVkPC9iPiwgdGhlbiA8dHQ+Y29udGFpbnMoKTwvdHQ+IHJldHVybnMKKyAgICAgKiA8Yj48dHQ+ZmFsc2U8L3R0PjwvYj4uCisgICAgICovCisgICAgYm9vbGVhbiBjb250YWlucyhjaGFyIGMpOworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9Vbmljb2RlRmlsdGVyTG9naWMuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvVW5pY29kZUZpbHRlckxvZ2ljLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTgyMmRmMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvVW5pY29kZUZpbHRlckxvZ2ljLmphdmEKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvQXR0aWMvVW5pY29kZUZpbHRlckxvZ2ljLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDMvMTAgMDQ6MDc6MjUgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRleHQ7CisKKy8qKgorICogPGNvZGU+VW5pY29kZUZpbHRlckxvZ2ljPC9jb2RlPiBwcm92aWRlcyBsb2dpY2FsIG9wZXJhdG9ycyBvbgorICoge0BsaW5rIFVuaWNvZGVGaWx0ZXJ9IG9iamVjdHMuICBUaGlzIGNsYXNzIGNhbm5vdCBiZSBpbnN0YW50aWF0ZWQ7CisgKiBpdCBjb25zaXN0cyBvbmx5IG9mIHN0YXRpYyBtZXRob2RzLiAgVGhlIHN0YXRpYyBtZXRob2RzIHJldHVybgorICogZmlsdGVyIG9iamVjdHMgdGhhdCBwZXJmb3JtIGxvZ2ljYWwgaW52ZXJzaW9uICg8dHQ+bm90PC90dD4pLAorICogaW50ZXJzZWN0aW9uICg8dHQ+YW5kPC90dD4pLCBvciB1bmlvbiAoPHR0Pm9yPC90dD4pIG9mIHRoZSBnaXZlbgorICogZmlsdGVyIG9iamVjdHMuCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBVbmljb2RlRmlsdGVyTG9naWMgeworCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIDx0dD5Vbmljb2RlRmlsdGVyPC90dD4gdGhhdCBpbXBsZW1lbnRzIHRoZSBpbnZlcnNlIG9mCisgICAgICogdGhlIGdpdmVuIGZpbHRlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFVuaWNvZGVGaWx0ZXIgbm90KGZpbmFsIFVuaWNvZGVGaWx0ZXIgZikgeworICAgICAgICByZXR1cm4gbmV3IFVuaWNvZGVGaWx0ZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBjb250YWlucyhjaGFyIGMpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gIWYuY29udGFpbnMoYyk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIDx0dD5Vbmljb2RlRmlsdGVyPC90dD4gdGhhdCBpbXBsZW1lbnRzIGEgc2hvcnQKKyAgICAgKiBjaXJjdWl0IEFORCBvZiB0aGUgcmVzdWx0IG9mIHRoZSB0d28gZ2l2ZW4gZmlsdGVycy4gIFRoYXQgaXMsCisgICAgICogaWYgPHR0PmYuY29udGFpbnMoKTwvdHQ+IGlzIDx0dD5mYWxzZTwvdHQ+LCB0aGVuIDx0dD5nLmNvbnRhaW5zKCk8L3R0PgorICAgICAqIGlzIG5vdCBjYWxsZWQsIGFuZCA8dHQ+Y29udGFpbnMoKTwvdHQ+IHJldHVybnMgPHR0PmZhbHNlPC90dD4uCisgICAgICoKKyAgICAgKiA8cD5FaXRoZXIgPHR0PmY8L3R0PiBvciA8dHQ+ZzwvdHQ+IG11c3QgYmUgbm9uLW51bGwuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBVbmljb2RlRmlsdGVyIGFuZChmaW5hbCBVbmljb2RlRmlsdGVyIGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBVbmljb2RlRmlsdGVyIGcpIHsKKyAgICAgICAgaWYgKGYgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGc7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGcgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGY7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldyBVbmljb2RlRmlsdGVyKCkgeworICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gY29udGFpbnMoY2hhciBjKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGYuY29udGFpbnMoYykgJiYgZy5jb250YWlucyhjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgPHR0PlVuaWNvZGVGaWx0ZXI8L3R0PiB0aGF0IGltcGxlbWVudHMgYSBzaG9ydAorICAgICAqIGNpcmN1aXQgQU5EIG9mIHRoZSByZXN1bHQgb2YgdGhlIGdpdmVuIGZpbHRlcnMuICBUaGF0IGlzLCBpZgorICAgICAqIDx0dD5mW2ldLmNvbnRhaW5zKCk8L3R0PiBpcyA8dHQ+ZmFsc2U8L3R0PiwgdGhlbgorICAgICAqIDx0dD5mW2pdLmNvbnRhaW5zKCk8L3R0PiBpcyBub3QgY2FsbGVkLCB3aGVyZSA8dHQ+aiA+IGk8L3R0PiwgYW5kCisgICAgICogPHR0PmNvbnRhaW5zKCk8L3R0PiByZXR1cm5zIDx0dD5mYWxzZTwvdHQ+LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVW5pY29kZUZpbHRlciBhbmQoZmluYWwgVW5pY29kZUZpbHRlcltdIGYpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBVbmljb2RlRmlsdGVyKCkgeworICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gY29udGFpbnMoY2hhciBjKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPGYubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFmW2ldLmNvbnRhaW5zKGMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIDx0dD5Vbmljb2RlRmlsdGVyPC90dD4gdGhhdCBpbXBsZW1lbnRzIGEgc2hvcnQKKyAgICAgKiBjaXJjdWl0IE9SIG9mIHRoZSByZXN1bHQgb2YgdGhlIHR3byBnaXZlbiBmaWx0ZXJzLiAgVGhhdCBpcywgaWYKKyAgICAgKiA8dHQ+Zi5jb250YWlucygpPC90dD4gaXMgPHR0PnRydWU8L3R0PiwgdGhlbiA8dHQ+Zy5jb250YWlucygpPC90dD4gaXMKKyAgICAgKiBub3QgY2FsbGVkLCBhbmQgPHR0PmNvbnRhaW5zKCk8L3R0PiByZXR1cm5zIDx0dD50cnVlPC90dD4uCisgICAgICoKKyAgICAgKiA8cD5FaXRoZXIgPHR0PmY8L3R0PiBvciA8dHQ+ZzwvdHQ+IG11c3QgYmUgbm9uLW51bGwuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBVbmljb2RlRmlsdGVyIG9yKGZpbmFsIFVuaWNvZGVGaWx0ZXIgZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgVW5pY29kZUZpbHRlciBnKSB7CisgICAgICAgIGlmIChmID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBnOworICAgICAgICB9CisgICAgICAgIGlmIChnID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmOworICAgICAgICB9CisgICAgICAgIHJldHVybiBuZXcgVW5pY29kZUZpbHRlcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zKGNoYXIgYykgeworICAgICAgICAgICAgICAgIHJldHVybiBmLmNvbnRhaW5zKGMpIHx8IGcuY29udGFpbnMoYyk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIDx0dD5Vbmljb2RlRmlsdGVyPC90dD4gdGhhdCBpbXBsZW1lbnRzIGEgc2hvcnQKKyAgICAgKiBjaXJjdWl0IE9SIG9mIHRoZSByZXN1bHQgb2YgdGhlIGdpdmVuIGZpbHRlcnMuICBUaGF0IGlzLCBpZgorICAgICAqIDx0dD5mW2ldLmNvbnRhaW5zKCk8L3R0PiBpcyA8dHQ+ZmFsc2U8L3R0PiwgdGhlbgorICAgICAqIDx0dD5mW2pdLmNvbnRhaW5zKCk8L3R0PiBpcyBub3QgY2FsbGVkLCB3aGVyZSA8dHQ+aiA+IGk8L3R0PiwgYW5kCisgICAgICogPHR0PmNvbnRhaW5zKCk8L3R0PiByZXR1cm5zIDx0dD50cnVlPC90dD4uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBVbmljb2RlRmlsdGVyIG9yKGZpbmFsIFVuaWNvZGVGaWx0ZXJbXSBmKSB7CisgICAgICAgIHJldHVybiBuZXcgVW5pY29kZUZpbHRlcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zKGNoYXIgYykgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxmLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChmW2ldLmNvbnRhaW5zKGMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgfQorCisgICAgLy8gVE9ETzogQWRkIG5hbmQoKSAmIG5vcigpIGZvciBjb252ZW5pZW5jZSwgaWYgbmVlZGVkLgorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9Vbmljb2RlU2V0LmphdmEgYi9zcmMvY29tL2libS90ZXh0L1VuaWNvZGVTZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40MWY4Mzg5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9Vbmljb2RlU2V0LmphdmEKQEAgLTAsMCArMSwxNTkzIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L0F0dGljL1VuaWNvZGVTZXQuamF2YSx2ICQKKyAqICREYXRlOiAyMDAwLzA4LzMxIDE3OjExOjQyICQKKyAqICRSZXZpc2lvbjogMS4zMCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXh0OworCitpbXBvcnQgamF2YS50ZXh0Lio7CisKKy8qKgorICogQSBtdXRhYmxlIHNldCBvZiBVbmljb2RlIGNoYXJhY3RlcnMuICBPYmplY3RzIG9mIHRoaXMgY2xhc3MKKyAqIHJlcHJlc2VudCA8ZW0+Y2hhcmFjdGVyIGNsYXNzZXM8L2VtPiB1c2VkIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCisgKiBTdWNoIGNsYXNzZXMgc3BlY2lmeSBhIHN1YnNldCBvZiB0aGUgc2V0IG9mIGFsbCBVbmljb2RlIGNoYXJhY3RlcnMsCisgKiB3aGljaCBpbiB0aGlzIGltcGxlbWVudGF0aW9uIGlzIHRoZSBjaGFyYWN0ZXJzIGZyb20gVSswMDAwIHRvCisgKiBVK0ZGRkYsIGlnbm9yaW5nIHN1cnJvZ2F0ZXMuCisgKgorICogPHA+PGNvZGU+VW5pY29kZVNldDwvY29kZT4gc3VwcG9ydHMgdHdvIEFQSXMuIFRoZSBmaXJzdCBpcyB0aGUKKyAqIDxlbT5vcGVyYW5kPC9lbT4gQVBJIHRoYXQgYWxsb3dzIHRoZSBjYWxsZXIgdG8gbW9kaWZ5IHRoZSB2YWx1ZSBvZgorICogYSA8Y29kZT5Vbmljb2RlU2V0PC9jb2RlPiBvYmplY3QuIEl0IGNvbmZvcm1zIHRvIEphdmEgMidzCisgKiA8Y29kZT5qYXZhLnV0aWwuU2V0PC9jb2RlPiBpbnRlcmZhY2UsIGFsdGhvdWdoCisgKiA8Y29kZT5Vbmljb2RlU2V0PC9jb2RlPiBjYW5ub3QgYWN0dWFsbHkgaW1wbGVtZW50IHRoYXQKKyAqIGludGVyZmFjZS4gQWxsIG1ldGhvZHMgb2YgPGNvZGU+U2V0PC9jb2RlPiBhcmUgc3VwcG9ydGVkLCB3aXRoIHRoZQorICogbW9kaWZpY2F0aW9uIHRoYXQgdGhleSB0YWtlIGEgY2hhcmFjdGVyIHJhbmdlIG9yIHNpbmdsZSBjaGFyYWN0ZXIKKyAqIGluc3RlYWQgb2YgYW4gPGNvZGU+T2JqZWN0PC9jb2RlPiwgYW5kIHRoZXkgdGFrZSBhCisgKiA8Y29kZT5Vbmljb2RlU2V0PC9jb2RlPiBpbnN0ZWFkIG9mIGEgPGNvZGU+Q29sbGVjdGlvbjwvY29kZT4uICBUaGUKKyAqIG9wZXJhbmQgQVBJIG1heSBiZSB0aG91Z2h0IG9mIGluIHRlcm1zIG9mIGJvb2xlYW4gbG9naWM6IGEgYm9vbGVhbgorICogT1IgaXMgaW1wbGVtZW50ZWQgYnkgPGNvZGU+YWRkPC9jb2RlPiwgYSBib29sZWFuIEFORCBpcyBpbXBsZW1lbnRlZAorICogYnkgPGNvZGU+cmV0YWluPC9jb2RlPiwgYSBib29sZWFuIFhPUiBpcyBpbXBsZW1lbnRlZCBieQorICogPGNvZGU+Y29tcGxlbWVudDwvY29kZT4gdGFraW5nIGFuIGFyZ3VtZW50LCBhbmQgYSBib29sZWFuIE5PVCBpcworICogaW1wbGVtZW50ZWQgYnkgPGNvZGU+Y29tcGxlbWVudDwvY29kZT4gd2l0aCBubyBhcmd1bWVudC4gIEluIHRlcm1zCisgKiBvZiB0cmFkaXRpb25hbCBzZXQgdGhlb3J5IGZ1bmN0aW9uIG5hbWVzLCA8Y29kZT5hZGQ8L2NvZGU+IGlzIGEKKyAqIHVuaW9uLCA8Y29kZT5yZXRhaW48L2NvZGU+IGlzIGFuIGludGVyc2VjdGlvbiwgPGNvZGU+cmVtb3ZlPC9jb2RlPgorICogaXMgYW4gYXN5bW1ldHJpYyBkaWZmZXJlbmNlLCBhbmQgPGNvZGU+Y29tcGxlbWVudDwvY29kZT4gd2l0aCBubworICogYXJndW1lbnQgaXMgYSBzZXQgY29tcGxlbWVudCB3aXRoIHJlc3BlY3QgdG8gdGhlIHN1cGVyc2V0IHJhbmdlCisgKiA8Y29kZT5NSU5fVkFMVUUtTUFYX1ZBTFVFPC9jb2RlPgorICoKKyAqIDxwPlRoZSBzZWNvbmQgQVBJIGlzIHRoZQorICogPGNvZGU+YXBwbHlQYXR0ZXJuKCk8L2NvZGU+Lzxjb2RlPnRvUGF0dGVybigpPC9jb2RlPiBBUEkgZnJvbSB0aGUKKyAqIDxjb2RlPmphdmEudGV4dC5Gb3JtYXQ8L2NvZGU+LWRlcml2ZWQgY2xhc3Nlcy4gIFVubGlrZSB0aGUKKyAqIG1ldGhvZHMgdGhhdCBhZGQgY2hhcmFjdGVycywgYWRkIGNhdGVnb3JpZXMsIGFuZCBjb250cm9sIHRoZSBsb2dpYworICogb2YgdGhlIHNldCwgdGhlIG1ldGhvZCA8Y29kZT5hcHBseVBhdHRlcm4oKTwvY29kZT4gc2V0cyBhbGwKKyAqIGF0dHJpYnV0ZXMgb2YgYSA8Y29kZT5Vbmljb2RlU2V0PC9jb2RlPiBhdCBvbmNlLCBiYXNlZCBvbiBhCisgKiBzdHJpbmcgcGF0dGVybi4KKyAqCisgKiA8cD5JbiBhZGRpdGlvbiwgdGhlIHNldCBjb21wbGVtZW50IG9wZXJhdGlvbiBpcyBzdXBwb3J0ZWQgdGhyb3VnaAorICogdGhlIDxjb2RlPmNvbXBsZW1lbnQoKTwvY29kZT4gbWV0aG9kLgorICoKKyAqIDxwPjxiPlBhdHRlcm4gc3ludGF4PC9iPjwvcD4KKyAqCisgKiBQYXR0ZXJucyBhcmUgYWNjZXB0ZWQgYnkgdGhlIGNvbnN0cnVjdG9ycyBhbmQgdGhlCisgKiA8Y29kZT5hcHBseVBhdHRlcm4oKTwvY29kZT4gbWV0aG9kcyBhbmQgcmV0dXJuZWQgYnkgdGhlCisgKiA8Y29kZT50b1BhdHRlcm4oKTwvY29kZT4gbWV0aG9kLiAgVGhlc2UgcGF0dGVybnMgZm9sbG93IGEgc3ludGF4CisgKiBzaW1pbGFyIHRvIHRoYXQgZW1wbG95ZWQgYnkgdmVyc2lvbiA4IHJlZ3VsYXIgZXhwcmVzc2lvbiBjaGFyYWN0ZXIKKyAqIGNsYXNzZXM6CisgKgorICogPGJsb2NrcXVvdGU+CisgKiAgIDx0YWJsZT4KKyAqICAgICA8dHIgYWxpZ249InRvcCI+CisgKiAgICAgICA8dGQgbm93cmFwIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjxjb2RlPnBhdHRlcm4gOj0mbmJzcDsgPC9jb2RlPjwvdGQ+CisgKiAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxjb2RlPignWycgJ14nPyBpdGVtKiAnXScpIHwKKyAqICAgICAgICgnWzonICdeJz8gY2F0ZWdvcnkgJzpdJyk8L2NvZGU+PC90ZD4KKyAqICAgICA8L3RyPgorICogICAgIDx0ciBhbGlnbj0idG9wIj4KKyAqICAgICAgIDx0ZCBub3dyYXAgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PGNvZGU+aXRlbSA6PSZuYnNwOyA8L2NvZGU+PC90ZD4KKyAqICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGNvZGU+Y2hhciB8IChjaGFyICctJyBjaGFyKSB8IHBhdHRlcm4tZXhwcjxicj4KKyAqICAgICAgIDwvY29kZT48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyIGFsaWduPSJ0b3AiPgorICogICAgICAgPHRkIG5vd3JhcCB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48Y29kZT5wYXR0ZXJuLWV4cHIgOj0mbmJzcDsgPC9jb2RlPjwvdGQ+CisgKiAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxjb2RlPnBhdHRlcm4gfCBwYXR0ZXJuLWV4cHIgcGF0dGVybiB8CisgKiAgICAgICBwYXR0ZXJuLWV4cHIgb3AgcGF0dGVybjxicj4KKyAqICAgICAgIDwvY29kZT48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyIGFsaWduPSJ0b3AiPgorICogICAgICAgPHRkIG5vd3JhcCB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48Y29kZT5vcCA6PSZuYnNwOyA8L2NvZGU+PC90ZD4KKyAqICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGNvZGU+JyZhbXA7JyB8ICctJzxicj4KKyAqICAgICAgIDwvY29kZT48L3RkPgorICogICAgIDwvdHI+CisgKiAgICAgPHRyIGFsaWduPSJ0b3AiPgorICogICAgICAgPHRkIG5vd3JhcCB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48Y29kZT5zcGVjaWFsIDo9Jm5ic3A7IDwvY29kZT48L3RkPgorICogICAgICAgPHRkIHZhbGlnbj0idG9wIj48Y29kZT4nWycgfCAnXScgfCAnLSc8YnI+CisgKiAgICAgICA8L2NvZGU+PC90ZD4KKyAqICAgICA8L3RyPgorICogICAgIDx0ciBhbGlnbj0idG9wIj4KKyAqICAgICAgIDx0ZCBub3dyYXAgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PGNvZGU+Y2hhciA6PSZuYnNwOyA8L2NvZGU+PC90ZD4KKyAqICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PGVtPmFueSBjaGFyYWN0ZXIgdGhhdCBpcyBub3Q8L2VtPjxjb2RlPiBzcGVjaWFsPGJyPgorICogICAgICAgfCAoJ1x1MDA1QycgPC9jb2RlPjxlbT5hbnkgY2hhcmFjdGVyPC9lbT48Y29kZT4pPGJyPgorICogICAgICAgfCAoJ1x1MDA1Q3UnIGhleCBoZXggaGV4IGhleCk8YnI+CisgKiAgICAgICA8L2NvZGU+PC90ZD4KKyAqICAgICA8L3RyPgorICogICAgIDx0ciBhbGlnbj0idG9wIj4KKyAqICAgICAgIDx0ZCBub3dyYXAgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PGNvZGU+aGV4IDo9Jm5ic3A7IDwvY29kZT48L3RkPgorICogICAgICAgPHRkIHZhbGlnbj0idG9wIj48ZW0+YW55IGNoYXJhY3RlciBmb3Igd2hpY2gKKyAqICAgICAgIDwvZW0+PGNvZGU+Q2hhcmFjdGVyLmRpZ2l0KGMsIDE2KTwvY29kZT48ZW0+CisgKiAgICAgICByZXR1cm5zIGEgbm9uLW5lZ2F0aXZlIHJlc3VsdDwvZW0+PC90ZD4KKyAqICAgICA8L3RyPgorICogICAgIDx0cj4KKyAqICAgICAgIDx0ZCBub3dyYXAgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PGNvZGU+Y2F0ZWdvcnkgOj0mbmJzcDsgPC9jb2RlPjwvdGQ+CisgKiAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjxjb2RlPidNJyB8ICdOJyB8ICdaJyB8ICdDJyB8ICdMJyB8ICdQJyB8CisgKiAgICAgICAnUycgfCAnTW4nIHwgJ01jJyB8ICdNZScgfCAnTmQnIHwgJ05sJyB8ICdObycgfCAnWnMnIHwgJ1psJyB8CisgKiAgICAgICAnWnAnIHwgJ0NjJyB8ICdDZicgfCAnQ3MnIHwgJ0NvJyB8ICdDbicgfCAnTHUnIHwgJ0xsJyB8ICdMdCcKKyAqICAgICAgIHwgJ0xtJyB8ICdMbycgfCAnUGMnIHwgJ1BkJyB8ICdQcycgfCAnUGUnIHwgJ1BvJyB8ICdTbScgfAorICogICAgICAgJ1NjJyB8ICdTaycgfCAnU28nPC9jb2RlPjwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgPC90YWJsZT4KKyAqICAgPGJyPgorICogICA8dGFibGUgYm9yZGVyPSIxIj4KKyAqICAgICA8dHI+CisgKiAgICAgICA8dGQ+TGVnZW5kOiA8dGFibGU+CisgKiAgICAgICAgIDx0cj4KKyAqICAgICAgICAgICA8dGQgbm93cmFwIHZhbGlnbj0idG9wIj48Y29kZT5hIDo9IGI8L2NvZGU+PC90ZD4KKyAqICAgICAgICAgICA8dGQgd2lkdGg9IjIwIiB2YWxpZ249InRvcCI+Jm5ic3A7IDwvdGQ+CisgKiAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48Y29kZT5hPC9jb2RlPiBtYXkgYmUgcmVwbGFjZWQgYnkgPGNvZGU+YjwvY29kZT4gPC90ZD4KKyAqICAgICAgICAgPC90cj4KKyAqICAgICAgICAgPHRyPgorICogICAgICAgICAgIDx0ZCBub3dyYXAgdmFsaWduPSJ0b3AiPjxjb2RlPmE/PC9jb2RlPjwvdGQ+CisgKiAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPgorICogICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+emVybyBvciBvbmUgaW5zdGFuY2Ugb2YgPGNvZGU+YTwvY29kZT48YnI+CisgKiAgICAgICAgICAgPC90ZD4KKyAqICAgICAgICAgPC90cj4KKyAqICAgICAgICAgPHRyPgorICogICAgICAgICAgIDx0ZCBub3dyYXAgdmFsaWduPSJ0b3AiPjxjb2RlPmEqPC9jb2RlPjwvdGQ+CisgKiAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPgorICogICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+b25lIG9yIG1vcmUgaW5zdGFuY2VzIG9mIDxjb2RlPmE8L2NvZGU+PGJyPgorICogICAgICAgICAgIDwvdGQ+CisgKiAgICAgICAgIDwvdHI+CisgKiAgICAgICAgIDx0cj4KKyAqICAgICAgICAgICA8dGQgbm93cmFwIHZhbGlnbj0idG9wIj48Y29kZT5hIHwgYjwvY29kZT48L3RkPgorICogICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4KKyAqICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmVpdGhlciA8Y29kZT5hPC9jb2RlPiBvciA8Y29kZT5iPC9jb2RlPjxicj4KKyAqICAgICAgICAgICA8L3RkPgorICogICAgICAgICA8L3RyPgorICogICAgICAgICA8dHI+CisgKiAgICAgICAgICAgPHRkIG5vd3JhcCB2YWxpZ249InRvcCI+PGNvZGU+J2EnPC9jb2RlPjwvdGQ+CisgKiAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPgorICogICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIGxpdGVyYWwgc3RyaW5nIGJldHdlZW4gdGhlIHF1b3RlcyA8L3RkPgorICogICAgICAgICA8L3RyPgorICogICAgICAgPC90YWJsZT4KKyAqICAgICAgIDwvdGQ+CisgKiAgICAgPC90cj4KKyAqICAgPC90YWJsZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqCisgKiBBbnkgY2hhcmFjdGVyIG1heSBiZSBwcmVjZWRlZCBieSBhIGJhY2tzbGFzaCBpbiBvcmRlciB0byByZW1vdmUgYW55IHNwZWNpYWwKKyAqIG1lYW5pbmcuICBXaGl0ZSBzcGFjZSBjaGFyYWN0ZXJzLCBhcyBkZWZpbmVkIGJ5IENoYXJhY3Rlci5pc1doaXRlc3BhY2UoKSwgYXJlCisgKiBpZ25vcmVkLCB1bmxlc3MgdGhleSBhcmUgZXNjYXBlZC4KKyAqCisgKiBQYXR0ZXJucyBzcGVjaWZ5IGluZGl2aWR1YWwgY2hhcmFjdGVycywgcmFuZ2VzIG9mIGNoYXJhY3RlcnMsIGFuZAorICogVW5pY29kZSBjaGFyYWN0ZXIgY2F0ZWdvcmllcy4gIFdoZW4gZWxlbWVudHMgYXJlIGNvbmNhdGVuYXRlZCwgdGhleQorICogc3BlY2lmeSB0aGVpciB1bmlvbi4gIFRvIGNvbXBsZW1lbnQgYSBzZXQsIHBsYWNlIGEgJ14nIGltbWVkaWF0ZWx5CisgKiBhZnRlciB0aGUgb3BlbmluZyAnWycgb3IgJ1s6Jy4gIEluIGFueSBvdGhlciBsb2NhdGlvbiwgJ14nIGhhcyBubworICogc3BlY2lhbCBtZWFuaW5nLgorICoKKyAqIDxwPlJhbmdlcyBhcmUgaW5kaWNhdGVkIGJ5IHBsYWNpbmcgdHdvIGEgJy0nIGJldHdlZW4gdHdvCisgKiBjaGFyYWN0ZXJzLCBhcyBpbiAiYS16Ii4gIFRoaXMgc3BlY2lmaWVzIHRoZSByYW5nZSBvZiBhbGwKKyAqIGNoYXJhY3RlcnMgZnJvbSB0aGUgbGVmdCB0byB0aGUgcmlnaHQsIGluIFVuaWNvZGUgb3JkZXIuICBJZiB0aGUKKyAqIGxlZnQgYW5kIHJpZ2h0IGNoYXJhY3RlcnMgYXJlIHRoZSBzYW1lLCB0aGVuIHRoZSByYW5nZSBjb25zaXN0cyBvZgorICoganVzdCB0aGF0IGNoYXJhY3Rlci4gIElmIHRoZSBsZWZ0IGNoYXJhY3RlciBpcyBncmVhdGVyIHRoYW4gdGhlCisgKiByaWdodCBjaGFyYWN0ZXIgaXQgaXMgYSBzeW50YXggZXJyb3IuICBJZiBhICctJyBvY2N1cnMgYXMgdGhlIGZpcnN0CisgKiBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIG9wZW5pbmcgJ1snIG9yICdbXicsIG9yIGlmIGl0IG9jY3VycyBhcyB0aGUKKyAqIGxhc3QgY2hhcmFjdGVyIGJlZm9yZSB0aGUgY2xvc2luZyAnXScsIHRoZW4gaXQgaXMgdGFrZW4gYXMgYQorICogbGl0ZXJhbC4gIFRodXMgIlthXHUwMDVDLWJdIiwgIlstYWJdIiwgYW5kICJbYWItXSIgYWxsIGluZGljYXRlIHRoZSBzYW1lCisgKiBzZXQgb2YgdGhyZWUgY2hhcmFjdGVycywgJ2EnLCAnYicsIGFuZCAnLScuCisgKgorICogPHA+U2V0cyBtYXkgYmUgaW50ZXJzZWN0ZWQgdXNpbmcgdGhlICcmJyBvcGVyYXRvciBvciB0aGUgYXN5bW1ldHJpYworICogc2V0IGRpZmZlcmVuY2UgbWF5IGJlIHRha2VuIHVzaW5nIHRoZSAnLScgb3BlcmF0b3IsIGZvciBleGFtcGxlLAorICogIltbOkw6XSZbXHUwMDVDdTAwMDAtXHUwMDVDdTBGRkZdXSIgaW5kaWNhdGVzIHRoZSBzZXQgb2YgYWxsIFVuaWNvZGUgbGV0dGVycworICogd2l0aCB2YWx1ZXMgbGVzcyB0aGFuIDQwOTYuICBPcGVyYXRvcnMgKCcmJyBhbmQgJ3wnKSBoYXZlIGVxdWFsCisgKiBwcmVjZWRlbmNlIGFuZCBiaW5kIGxlZnQtdG8tcmlnaHQuICBUaHVzCisgKiAiW1s6TDpdLVthLXpdLVtcdTAwNUN1MDEwMC1cdTAwNUN1MDFGRl1dIiBpcyBlcXVpdmFsZW50IHRvCisgKiAiW1tbOkw6XS1bYS16XV0tW1x1MDA1Q3UwMTAwLVx1MDA1Q3UwMUZGXV0iLiAgVGhpcyBvbmx5IHJlYWxseSBtYXR0ZXJzIGZvcgorICogZGlmZmVyZW5jZTsgaW50ZXJzZWN0aW9uIGlzIGNvbW11dGF0aXZlLgorICoKKyAqIDx0YWJsZT4KKyAqIDx0ciB2YWxpZ249dG9wPjx0ZCBub3dyYXA+PGNvZGU+W2FdPC9jb2RlPjx0ZD5UaGUgc2V0IGNvbnRhaW5pbmcgJ2EnCisgKiA8dHIgdmFsaWduPXRvcD48dGQgbm93cmFwPjxjb2RlPlthLXpdPC9jb2RlPjx0ZD5UaGUgc2V0IGNvbnRhaW5pbmcgJ2EnCisgKiB0aHJvdWdoICd6JyBhbmQgYWxsIGxldHRlcnMgaW4gYmV0d2VlbiwgaW4gVW5pY29kZSBvcmRlcgorICogPHRyIHZhbGlnbj10b3A+PHRkIG5vd3JhcD48Y29kZT5bXmEtel08L2NvZGU+PHRkPlRoZSBzZXQgY29udGFpbmluZworICogYWxsIGNoYXJhY3RlcnMgYnV0ICdhJyB0aHJvdWdoICd6JywKKyAqIHRoYXQgaXMsIFUrMDAwMCB0aHJvdWdoICdhJy0xIGFuZCAneicrMSB0aHJvdWdoIFUrRkZGRgorICogPHRyIHZhbGlnbj10b3A+PHRkIG5vd3JhcD48Y29kZT5bWzxlbT5wYXQxPC9lbT5dWzxlbT5wYXQyPC9lbT5dXTwvY29kZT4KKyAqIDx0ZD5UaGUgdW5pb24gb2Ygc2V0cyBzcGVjaWZpZWQgYnkgPGVtPnBhdDE8L2VtPiBhbmQgPGVtPnBhdDI8L2VtPgorICogPHRyIHZhbGlnbj10b3A+PHRkIG5vd3JhcD48Y29kZT5bWzxlbT5wYXQxPC9lbT5dJls8ZW0+cGF0MjwvZW0+XV08L2NvZGU+CisgKiA8dGQ+VGhlIGludGVyc2VjdGlvbiBvZiBzZXRzIHNwZWNpZmllZCBieSA8ZW0+cGF0MTwvZW0+IGFuZCA8ZW0+cGF0MjwvZW0+CisgKiA8dHIgdmFsaWduPXRvcD48dGQgbm93cmFwPjxjb2RlPltbPGVtPnBhdDE8L2VtPl0tWzxlbT5wYXQyPC9lbT5dXTwvY29kZT4KKyAqIDx0ZD5UaGUgYXN5bW1ldHJpYyBkaWZmZXJlbmNlIG9mIHNldHMgc3BlY2lmaWVkIGJ5IDxlbT5wYXQxPC9lbT4gYW5kCisgKiA8ZW0+cGF0MjwvZW0+CisgKiA8dHIgdmFsaWduPXRvcD48dGQgbm93cmFwPjxjb2RlPls6THU6XTwvY29kZT4KKyAqIDx0ZD5UaGUgc2V0IG9mIGNoYXJhY3RlcnMgYmVsb25naW5nIHRvIHRoZSBnaXZlbgorICogVW5pY29kZSBjYXRlZ29yeSwgYXMgZGVmaW5lZCBieSA8Y29kZT5DaGFyYWN0ZXIuZ2V0VHlwZSgpPC9jb2RlPjsgaW4KKyAqIHRoaXMgY2FzZSwgVW5pY29kZSB1cHBlcmNhc2UgbGV0dGVycworICogPHRyIHZhbGlnbj10b3A+PHRkIG5vd3JhcD48Y29kZT5bOkw6XTwvY29kZT4KKyAqIDx0ZD5UaGUgc2V0IG9mIGNoYXJhY3RlcnMgYmVsb25naW5nIHRvIGFsbCBVbmljb2RlIGNhdGVnb3JpZXMKKyAqIHN0YXJ0aW5nIHdpaCAnTCcsIHRoYXQgaXMsIDxjb2RlPltbOkx1Ol1bOkxsOl1bOkx0Ol1bOkxtOl1bOkxvOl1dPC9jb2RlPi4KKyAqIDwvdGFibGU+CisgKgorICogPHA+PGI+Q2hhcmFjdGVyIGNhdGVnb3JpZXMuPC9iPgorICoKKyAqIENoYXJhY3RlciBjYXRlZ29yaWVzIGFyZSBzcGVjaWZpZWQgdXNpbmcgdGhlIFBPU0lYLWxpa2Ugc3ludGF4CisgKiAnWzpMdTpdJy4gIFRoZSBjb21wbGVtZW50IG9mIGEgY2F0ZWdvcnkgaXMgc3BlY2lmaWVkIGJ5IGluc2VydGluZworICogJ14nIGFmdGVyIHRoZSBvcGVuaW5nICdbOicuICBUaGUgZm9sbG93aW5nIGNhdGVnb3J5IG5hbWVzIGFyZQorICogcmVjb2duaXplZC4gIEFjdHVhbCBkZXRlcm1pbmF0aW9uIG9mIGNhdGVnb3J5IGRhdGEgdXNlcworICogPGNvZGU+Q2hhcmFjdGVyLmdldFR5cGUoKTwvY29kZT4sIHNvIGl0IHJlZmxlY3RzIHRoZSB1bmRlcmx5aW5nCisgKiBpbXBsbWVtZW50YXRpb24gdXNlZCBieSA8Y29kZT5DaGFyYWN0ZXI8L2NvZGU+LiAgQXMgb2YgSmF2YSAyIGFuZAorICogSkRLIDEuMS44LCB0aGlzIGlzIFVuaWNvZGUgMi4xLjIuCisgKgorICogPHByZT4KKyAqIE5vcm1hdGl2ZQorICogICAgIE1uID0gTWFyaywgTm9uLVNwYWNpbmcKKyAqICAgICBNYyA9IE1hcmssIFNwYWNpbmcgQ29tYmluaW5nCisgKiAgICAgTWUgPSBNYXJrLCBFbmNsb3NpbmcKKyAqCisgKiAgICAgTmQgPSBOdW1iZXIsIERlY2ltYWwgRGlnaXQKKyAqICAgICBObCA9IE51bWJlciwgTGV0dGVyCisgKiAgICAgTm8gPSBOdW1iZXIsIE90aGVyCisgKgorICogICAgIFpzID0gU2VwYXJhdG9yLCBTcGFjZQorICogICAgIFpsID0gU2VwYXJhdG9yLCBMaW5lCisgKiAgICAgWnAgPSBTZXBhcmF0b3IsIFBhcmFncmFwaAorICoKKyAqICAgICBDYyA9IE90aGVyLCBDb250cm9sCisgKiAgICAgQ2YgPSBPdGhlciwgRm9ybWF0CisgKiAgICAgQ3MgPSBPdGhlciwgU3Vycm9nYXRlCisgKiAgICAgQ28gPSBPdGhlciwgUHJpdmF0ZSBVc2UKKyAqICAgICBDbiA9IE90aGVyLCBOb3QgQXNzaWduZWQKKyAqCisgKiBJbmZvcm1hdGl2ZQorICogICAgIEx1ID0gTGV0dGVyLCBVcHBlcmNhc2UKKyAqICAgICBMbCA9IExldHRlciwgTG93ZXJjYXNlCisgKiAgICAgTHQgPSBMZXR0ZXIsIFRpdGxlY2FzZQorICogICAgIExtID0gTGV0dGVyLCBNb2RpZmllcgorICogICAgIExvID0gTGV0dGVyLCBPdGhlcgorICoKKyAqICAgICBQYyA9IFB1bmN0dWF0aW9uLCBDb25uZWN0b3IKKyAqICAgICBQZCA9IFB1bmN0dWF0aW9uLCBEYXNoCisgKiAgICAgUHMgPSBQdW5jdHVhdGlvbiwgT3BlbgorICogICAgIFBlID0gUHVuY3R1YXRpb24sIENsb3NlCisgKiAgICAqUGkgPSBQdW5jdHVhdGlvbiwgSW5pdGlhbCBxdW90ZQorICogICAgKlBmID0gUHVuY3R1YXRpb24sIEZpbmFsIHF1b3RlCisgKiAgICAgUG8gPSBQdW5jdHVhdGlvbiwgT3RoZXIKKyAqCisgKiAgICAgU20gPSBTeW1ib2wsIE1hdGgKKyAqICAgICBTYyA9IFN5bWJvbCwgQ3VycmVuY3kKKyAqICAgICBTayA9IFN5bWJvbCwgTW9kaWZpZXIKKyAqICAgICBTbyA9IFN5bWJvbCwgT3RoZXIKKyAqIDwvcHJlPgorICogKlVuc3VwcG9ydGVkIGJ5IEphdmEgKGFuZCBoZW5jZSB1bnN1cHBvcnRlZCBieSBVbmljb2RlU2V0KS4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAdmVyc2lvbiAkUkNTZmlsZTogVW5pY29kZVNldC5qYXZhLHYgJCAkUmV2aXNpb246IDEuMzAgJCAkRGF0ZTogMjAwMC8wOC8zMSAxNzoxMTo0MiAkICovCitwdWJsaWMgY2xhc3MgVW5pY29kZVNldCBpbXBsZW1lbnRzIFVuaWNvZGVGaWx0ZXIgeworCisgICAgLyogSW1wbGVtZW50YXRpb24gTm90ZXMuCisgICAgICoKKyAgICAgKiBVbmljb2RlU2V0IGN1cnJlbnRseSByZXByZXNlbnRzIG9ubHkgdGhlIGNoYXJhY3RlcnMgVSswMDAwIHRvCisgICAgICogVStGRkZGLiAgVGhpcyBhbGxvd3MgdGhlIEFQSSB0byBiZSB3cml0dGVuIGluIHRlcm1zIG9mIHRoZSBKYXZhCisgICAgICogY2hhciB0eXBlLCB3aGljaCBpcyBuYXR1cmFsIGZvciBKYXZhIGF0IHRoaXMgdGltZS4gIFNpbmNlIHRoZQorICAgICAqIGNoYXIgZGF0YSB0eXBlIGlzIHJhbmdlLWxpbWl0ZWQsIHdlIGRvbid0IGhhdmUgdG8gZG8gcmFuZ2UKKyAgICAgKiBjaGVja3MuCisgICAgICoKKyAgICAgKiBJbiBvcmRlciB0byBtb2RpZnkgVW5pY29kZVNldCB0byB3b3JrIHdpdGggY29kZSBwb2ludHMgdXAgdG8KKyAgICAgKiBVKzEwRkZGRiwgZG8gdGhlIGZvbGxvd2luZzogKDEpIENoYW5nZSB0aGUgdmFsdWUgb2YgSElHSCB0bworICAgICAqIDB4MTEwMDAwLiAgKDIpIENoYW5nZSBldmVyeSBBUEkgdGhhdCB0YWtlcyBvciByZXR1cm5zIGEgY2hhcgorICAgICAqIGNvZGUgcG9pbnQgdG8gdGFrZSBvciByZXR1cm4gYW4gaW50LiAgKDMpIEZvciB0aG9zZSBBUElzIHRha2luZworICAgICAqIGFuIGludCBjb2RlIHBvaW50LCBhZGQgYSByYW5nZSBjaGVjayB0aGF0IGxvb2tzIGxpa2UgdGhpczoKKyAgICAgKgorICAgICAqIHZvaWQgZm9vKGludCBjaCkgeworICAgICAqICAgaWYgKGNoIDwgTUlOX1ZBTFVFIHx8IGNoID4gTUFYX1ZBTFVFKSB7CisgICAgICogICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgY29kZSBwb2ludCAiICsgY2gpOworICAgICAqICAgfQorICAgICAqICAgLy8gLi4uCisgICAgICogfQorICAgICAqCisgICAgICogKDQpIE1vZGlmeSB0b1BhdHRlcm4oKSB0byBoYW5kbGUgY2hhcmFjdGVycyBwYXN0IDB4RkZGRi4gICg1KQorICAgICAqIE1vZGlmeSBhcHBseVBhdHRlcm4oKSB0byBwYXJzZSBlc2NhcGVzIGZyb20gXFUxMDAwMDAgdG8gXFUxMEZGRkYuCisgICAgICogTm90ZSB1cHBlcmNhc2UgVS4gKDYpIE1vZGlmeSBNSU5fVkFMVUUgYW5kIE1BWF9WQUxVRSB0byBiZSBvZgorICAgICAqIHR5cGUgaW50LgorICAgICAqLworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPVyA9IDB4MDAwMDAwOyAvLyBMT1cgPD0gYWxsIHZhbGlkIHZhbHVlcy4gWkVSTyBmb3IgY29kZXBvaW50cworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBISUdIID0gMHgxMDAwMDsgLy8gSElHSCA+IGFsbCB2YWxpZCB2YWx1ZXMuIDEwMDAwIGZvciBjb2RlIHVuaXRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTEwMDAwIGZvciBjb2RlcG9pbnRzCisKKyAgICAvKioKKyAgICAgKiBNaW5pbXVtIHZhbHVlIHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBhIFVuaWNvZGVTZXQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBjaGFyIE1JTl9WQUxVRSA9IChjaGFyKSBMT1c7CisKKyAgICAvKioKKyAgICAgKiBNYXhpbXVtIHZhbHVlIHRoYXQgY2FuIGJlIHN0b3JlZCBpbiBhIFVuaWNvZGVTZXQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBjaGFyIE1BWF9WQUxVRSA9IChjaGFyKSAoSElHSCAtIDEpOworCisgICAgcHJpdmF0ZSBpbnQgbGVuOyAgICAgIC8vIGxlbmd0aCB1c2VkOyBsaXN0IG1heSBiZSBsb25nZXIgdG8gbWluaW1pemUgcmVhbGxvY3MKKyAgICBwcml2YXRlIGludFtdIGxpc3Q7ICAgLy8gTVVTVCBiZSB0ZXJtaW5hdGVkIHdpdGggSElHSAorICAgIHByaXZhdGUgaW50W10gcmFuZ2VMaXN0OyAvLyBpbnRlcm5hbCBidWZmZXIKKyAgICBwcml2YXRlIGludFtdIGJ1ZmZlcjsgLy8gaW50ZXJuYWwgYnVmZmVyCisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU1RBUlRfRVhUUkEgPSAxNjsgICAgICAgICAvLyBpbml0aWFsIHN0b3JhZ2UuIE11c3QgYmUgPj0gMAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUk9XX0VYVFJBID0gU1RBUlRfRVhUUkE7IC8vIGV4dHJhIGFtb3VudCBmb3IgZ3Jvd3RoLiBNdXN0IGJlID49IDAKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDQVRFR09SWV9OQU1FUyA9CisgICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAxIDEgMSAxIDEgMSAxICAgMSAxIDIgMiAyIDIgMiAyIDIgMiAyCisgICAgICAgIC8vMCAxIDIgMyA0IDUgNiA3IDggOSAwIDEgMiAzIDQgNSA2ICAgOCA5IDAgMSAyIDMgNCA1IDYgNyA4CisgICAgICAgICJDbkx1TGxMdExtTG9Nbk1lTWNOZE5sTm9ac1psWnBDY0NmLS1Db0NzUGRQc1BlUGNQb1NtU2NTa1NvIjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBVTlNVUFBPUlRFRF9DQVRFR09SWSA9IDE3OworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENBVEVHT1JZX0NPVU5UID0gMjk7CisKKyAgICAvKioKKyAgICAgKiBBIGNhY2hlIG1hcHBpbmcgY2hhcmFjdGVyIGNhdGVnb3J5IGludGVnZXJzLCBhcyByZXR1cm5lZCBieQorICAgICAqIENoYXJhY3Rlci5nZXRUeXBlKCksIHRvIGludmVyc2lvbiBsaXN0cy4gIEVudHJpZXMgYXJlIGluaXRpYWxseQorICAgICAqIG51bGwgYW5kIGFyZSBjcmVhdGVkIG9uIGRlbWFuZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBVbmljb2RlU2V0W10gQ0FURUdPUllfQ0FDSEUgPQorICAgICAgICBuZXcgVW5pY29kZVNldFtDQVRFR09SWV9DT1VOVF07CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBQdWJsaWMgQVBJCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGFuIGVtcHR5IHNldC4KKyAgICAgKi8KKyAgICBwdWJsaWMgVW5pY29kZVNldCgpIHsKKyAgICAgICAgbGlzdCA9IG5ldyBpbnRbMSArIFNUQVJUX0VYVFJBXTsKKyAgICAgICAgbGlzdFtsZW4rK10gPSBISUdIOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBjb3B5IG9mIGFuIGV4aXN0aW5nIHNldC4KKyAgICAgKi8KKyAgICBwdWJsaWMgVW5pY29kZVNldChVbmljb2RlU2V0IG90aGVyKSB7CisgICAgICAgIHNldChvdGhlcik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIHNldCBjb250YWluaW5nIHRoZSBnaXZlbiByYW5nZS4gSWYgPGNvZGU+ZW5kID4KKyAgICAgKiBzdGFydDwvY29kZT4gdGhlbiBhbiBlbXB0eSBzZXQgaXMgY3JlYXRlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzdGFydCBmaXJzdCBjaGFyYWN0ZXIsIGluY2x1c2l2ZSwgb2YgcmFuZ2UKKyAgICAgKiBAcGFyYW0gZW5kIGxhc3QgY2hhcmFjdGVyLCBpbmNsdXNpdmUsIG9mIHJhbmdlCisgICAgICovCisgICAgcHVibGljIFVuaWNvZGVTZXQoY2hhciBzdGFydCwgY2hhciBlbmQpIHsKKyAgICAgICAgdGhpcygpOworICAgICAgICBjb21wbGVtZW50KHN0YXJ0LCBlbmQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBzZXQgZnJvbSB0aGUgZ2l2ZW4gcGF0dGVybi4gIFNlZSB0aGUgY2xhc3MgZGVzY3JpcHRpb24KKyAgICAgKiBmb3IgdGhlIHN5bnRheCBvZiB0aGUgcGF0dGVybiBsYW5ndWFnZS4gIFdoaXRlc3BhY2UgaXMgaWdub3JlZC4KKyAgICAgKiBAcGFyYW0gcGF0dGVybiBhIHN0cmluZyBzcGVjaWZ5aW5nIHdoYXQgY2hhcmFjdGVycyBhcmUgaW4gdGhlIHNldAorICAgICAqIEBleGNlcHRpb24gamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgcGF0dGVybiBjb250YWlucworICAgICAqIGEgc3ludGF4IGVycm9yLgorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlU2V0KFN0cmluZyBwYXR0ZXJuKSB7CisgICAgICAgIHRoaXMocGF0dGVybiwgdHJ1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIHNldCBmcm9tIHRoZSBnaXZlbiBwYXR0ZXJuLiAgU2VlIHRoZSBjbGFzcyBkZXNjcmlwdGlvbgorICAgICAqIGZvciB0aGUgc3ludGF4IG9mIHRoZSBwYXR0ZXJuIGxhbmd1YWdlLgorICAgICAqIEBwYXJhbSBwYXR0ZXJuIGEgc3RyaW5nIHNwZWNpZnlpbmcgd2hhdCBjaGFyYWN0ZXJzIGFyZSBpbiB0aGUgc2V0CisgICAgICogQHBhcmFtIGlnbm9yZVdoaXRlc3BhY2UgaWYgdHJ1ZSwgaWdub3JlIGNoYXJhY3RlcnMgZm9yIHdoaWNoCisgICAgICogQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZSgpIHJldHVybnMgdHJ1ZQorICAgICAqIEBleGNlcHRpb24gamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgcGF0dGVybiBjb250YWlucworICAgICAqIGEgc3ludGF4IGVycm9yLgorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlU2V0KFN0cmluZyBwYXR0ZXJuLCBib29sZWFuIGlnbm9yZVdoaXRlc3BhY2UpIHsKKyAgICAgICAgdGhpcygpOworICAgICAgICBhcHBseVBhdHRlcm4ocGF0dGVybiwgaWdub3JlV2hpdGVzcGFjZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIHNldCBmcm9tIHRoZSBnaXZlbiBwYXR0ZXJuLiAgU2VlIHRoZSBjbGFzcyBkZXNjcmlwdGlvbgorICAgICAqIGZvciB0aGUgc3ludGF4IG9mIHRoZSBwYXR0ZXJuIGxhbmd1YWdlLgorICAgICAqIEBwYXJhbSBwYXR0ZXJuIGEgc3RyaW5nIHNwZWNpZnlpbmcgd2hhdCBjaGFyYWN0ZXJzIGFyZSBpbiB0aGUgc2V0CisgICAgICogQHBhcmFtIHBvcyBvbiBpbnB1dCwgdGhlIHBvc2l0aW9uIGluIHBhdHRlcm4gYXQgd2hpY2ggdG8gc3RhcnQgcGFyc2luZy4KKyAgICAgKiBPbiBvdXRwdXQsIHRoZSBwb3NpdGlvbiBhZnRlciB0aGUgbGFzdCBjaGFyYWN0ZXIgcGFyc2VkLgorICAgICAqIEBwYXJhbSBzeW1ib2xzIGEgc3ltYm9sIHRhYmxlIG1hcHBpbmcgdmFyaWFibGVzIHRvIGNoYXJbXSBhcnJheXMKKyAgICAgKiBhbmQgY2hhcnMgdG8gVW5pY29kZVNldHMKKyAgICAgKiBAZXhjZXB0aW9uIGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHBhdHRlcm4KKyAgICAgKiBjb250YWlucyBhIHN5bnRheCBlcnJvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgVW5pY29kZVNldChTdHJpbmcgcGF0dGVybiwgUGFyc2VQb3NpdGlvbiBwb3MsIFN5bWJvbFRhYmxlIHN5bWJvbHMpIHsKKyAgICAgICAgdGhpcygpOworICAgICAgICBhcHBseVBhdHRlcm4ocGF0dGVybiwgcG9zLCBzeW1ib2xzLCB0cnVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgc2V0IGZyb20gdGhlIGdpdmVuIFVuaWNvZGUgY2hhcmFjdGVyIGNhdGVnb3J5LgorICAgICAqIEBwYXJhbSBjYXRlZ29yeSBhbiBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIGNoYXJhY3RlciBjYXRlZ29yeSBhcworICAgICAqIHJldHVybmVkIGJ5IDxjb2RlPkNoYXJhY3Rlci5nZXRUeXBlKCk8L2NvZGU+LgorICAgICAqIEBleGNlcHRpb24gamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgZ2l2ZW4KKyAgICAgKiBjYXRlZ29yeSBpcyBpbnZhbGlkLgorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlU2V0KGludCBjYXRlZ29yeSkgeworICAgICAgICBpZiAoY2F0ZWdvcnkgPCAwIHx8IGNhdGVnb3J5ID49IENBVEVHT1JZX0NPVU5UIHx8CisgICAgICAgICAgICBjYXRlZ29yeSA9PSBVTlNVUFBPUlRFRF9DQVRFR09SWSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBjYXRlZ29yeSIpOworICAgICAgICB9CisgICAgICAgIHNldChnZXRDYXRlZ29yeVNldChjYXRlZ29yeSkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1ha2UgdGhpcyBvYmplY3QgcmVwcmVzZW50IHRoZSByYW5nZSA8Y29kZT5zdGFydCAtIGVuZDwvY29kZT4uCisgICAgICogSWYgPGNvZGU+ZW5kID4gc3RhcnQ8L2NvZGU+IHRoZW4gdGhpcyBvYmplY3QgaXMgc2V0IHRvIGFuCisgICAgICogYW4gZW1wdHkgcmFuZ2UuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc3RhcnQgZmlyc3QgY2hhcmFjdGVyIGluIHRoZSBzZXQsIGluY2x1c2l2ZQorICAgICAqIEBycGFyYW0gZW5kIGxhc3QgY2hhcmFjdGVyIGluIHRoZSBzZXQsIGluY2x1c2l2ZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldChjaGFyIHN0YXJ0LCBjaGFyIGVuZCkgeworICAgICAgICBjbGVhcigpOworICAgICAgICBjb21wbGVtZW50KHN0YXJ0LCBlbmQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1ha2UgdGhpcyBvYmplY3QgcmVwcmVzZW50IHRoZSBzYW1lIHNldCBhcyA8Y29kZT5vdGhlcjwvY29kZT4uCisgICAgICogQHBhcmFtIG90aGVyIGEgPGNvZGU+VW5pY29kZVNldDwvY29kZT4gd2hvc2UgdmFsdWUgd2lsbCBiZQorICAgICAqIGNvcGllZCB0byB0aGlzIG9iamVjdAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldChVbmljb2RlU2V0IG90aGVyKSB7CisgICAgICAgIGxpc3QgPSAoaW50W10pIG90aGVyLmxpc3QuY2xvbmUoKTsKKyAgICAgICAgbGVuID0gb3RoZXIubGVuOworICAgIH0KKworICAgIC8qKgorICAgICAqIE1vZGlmaWVzIHRoaXMgc2V0IHRvIHJlcHJlc2VudCB0aGUgc2V0IHNwZWNpZmllZCBieSB0aGUgZ2l2ZW4gcGF0dGVybi4KKyAgICAgKiBTZWUgdGhlIGNsYXNzIGRlc2NyaXB0aW9uIGZvciB0aGUgc3ludGF4IG9mIHRoZSBwYXR0ZXJuIGxhbmd1YWdlLgorICAgICAqIFdoaXRlc3BhY2UgaXMgaWdub3JlZC4KKyAgICAgKiBAcGFyYW0gcGF0dGVybiBhIHN0cmluZyBzcGVjaWZ5aW5nIHdoYXQgY2hhcmFjdGVycyBhcmUgaW4gdGhlIHNldAorICAgICAqIEBleGNlcHRpb24gamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgcGF0dGVybgorICAgICAqIGNvbnRhaW5zIGEgc3ludGF4IGVycm9yLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIGFwcGx5UGF0dGVybihTdHJpbmcgcGF0dGVybikgeworICAgICAgICBhcHBseVBhdHRlcm4ocGF0dGVybiwgdHJ1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogTW9kaWZpZXMgdGhpcyBzZXQgdG8gcmVwcmVzZW50IHRoZSBzZXQgc3BlY2lmaWVkIGJ5IHRoZSBnaXZlbiBwYXR0ZXJuLAorICAgICAqIG9wdGlvbmFsbHkgaWdub3Jpbmcgd2hpdGVzcGFjZS4KKyAgICAgKiBTZWUgdGhlIGNsYXNzIGRlc2NyaXB0aW9uIGZvciB0aGUgc3ludGF4IG9mIHRoZSBwYXR0ZXJuIGxhbmd1YWdlLgorICAgICAqIEBwYXJhbSBwYXR0ZXJuIGEgc3RyaW5nIHNwZWNpZnlpbmcgd2hhdCBjaGFyYWN0ZXJzIGFyZSBpbiB0aGUgc2V0CisgICAgICogQHBhcmFtIGlnbm9yZVdoaXRlc3BhY2UgaWYgdHJ1ZSB0aGVuIGNoYXJhY3RlcnMgZm9yIHdoaWNoCisgICAgICogQ2hhcmFjdGVyLmlzV2hpdGVzcGFjZSgpIHJldHVybnMgdHJ1ZSBhcmUgaWdub3JlZAorICAgICAqIEBleGNlcHRpb24gamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgcGF0dGVybgorICAgICAqIGNvbnRhaW5zIGEgc3ludGF4IGVycm9yLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFwcGx5UGF0dGVybihTdHJpbmcgcGF0dGVybiwgYm9vbGVhbiBpZ25vcmVXaGl0ZXNwYWNlKSB7CisgICAgICAgIFBhcnNlUG9zaXRpb24gcG9zID0gbmV3IFBhcnNlUG9zaXRpb24oMCk7CisgICAgICAgIGFwcGx5UGF0dGVybihwYXR0ZXJuLCBwb3MsIG51bGwsIGlnbm9yZVdoaXRlc3BhY2UpOworCisgICAgICAgIGludCBpID0gcG9zLmdldEluZGV4KCk7CisgICAgICAgIGludCBuID0gcGF0dGVybi5sZW5ndGgoKTsKKworICAgICAgICAvLyBTa2lwIG92ZXIgdHJhaWxpbmcgd2hpdGVzcGFjZQorICAgICAgICBpZiAoaWdub3JlV2hpdGVzcGFjZSkgeworICAgICAgICAgICAgd2hpbGUgKGkgPCBuICYmIENoYXJhY3Rlci5pc1doaXRlc3BhY2UocGF0dGVybi5jaGFyQXQoaSkpKSB7CisgICAgICAgICAgICAgICAgKytpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGkgIT0gbikgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiUGFyc2Ugb2YgXCIiICsgcGF0dGVybiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcIiBmYWlsZWQgYXQgIiArIGkpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQXBwZW5kIHRoZSA8Y29kZT50b1BhdHRlcm4oKTwvY29kZT4gcmVwcmVzZW50YXRpb24gb2YgYQorICAgICAqIGNoYXJhY3RlciB0byB0aGUgZ2l2ZW4gPGNvZGU+U3RyaW5nQnVmZmVyPC9jb2RlPi4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCB2b2lkIF90b1BhdChTdHJpbmdCdWZmZXIgYnVmLCBjaGFyIGMpIHsKKyAgICAgICAgLy8gT2theSB0byBsZXQgJzonIHBhc3MgdGhyb3VnaAorICAgICAgICBzd2l0Y2ggKGMpIHsKKyAgICAgICAgY2FzZSAnWyc6CisgICAgICAgIGNhc2UgJ10nOgorICAgICAgICBjYXNlICctJzoKKyAgICAgICAgY2FzZSAnXic6CisgICAgICAgIGNhc2UgJyYnOgorICAgICAgICBjYXNlICdcXCc6CisgICAgICAgICAgICBidWYuYXBwZW5kKCdcXCcpOworICAgICAgICB9CisgICAgICAgIGJ1Zi5hcHBlbmQoYyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIHNldC4gIElmIHRoZSByZXN1bHQgb2YKKyAgICAgKiBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gaXMgcGFzc2VkIHRvIGEgVW5pY29kZVNldCBjb25zdHJ1Y3RvciwgaXQKKyAgICAgKiB3aWxsIHByb2R1Y2UgYW5vdGhlciBzZXQgdGhhdCBpcyBlcXVhbCB0byB0aGlzIG9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIHRvUGF0dGVybigpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnWycpOworCisgICAgICAgIGludCBjb3VudCA9IGdldFJhbmdlQ291bnQoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAgICAgICBjaGFyIHN0YXJ0ID0gZ2V0UmFuZ2VTdGFydChpKTsKKyAgICAgICAgICAgIGNoYXIgZW5kID0gZ2V0UmFuZ2VFbmQoaSk7CisgICAgICAgICAgICBfdG9QYXQocmVzdWx0LCBzdGFydCk7CisgICAgICAgICAgICBpZiAoc3RhcnQgIT0gZW5kKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiLSIpOworICAgICAgICAgICAgICAgIF90b1BhdChyZXN1bHQsIGVuZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0LmFwcGVuZCgnXScpLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoaXMgc2V0IChpdHMgY2FyZGluYWxpdHkpLAorICAgICAqIDxlbT5uPC9lbT4sIHdoZXJlIDxjb2RlPjAgPD0gPC9jb2RlPjxlbT5uPC9lbT48Y29kZT4gPD0gNjU1MzY8L2NvZGU+LgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoaXMgc2V0IChpdHMgY2FyZGluYWxpdHkpLgorICAgICAqLworICAgIHB1YmxpYyBpbnQgc2l6ZSgpIHsKKyAgICAgICAgaW50IG4gPSAwOworICAgICAgICBpbnQgY291bnQgPSBnZXRSYW5nZUNvdW50KCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICAgICAgbiArPSBnZXRSYW5nZUVuZChpKSAtIGdldFJhbmdlU3RhcnQoaSkgKyAxOworICAgICAgICB9CisgICAgICAgIHJldHVybiBuOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgPHR0PnRydWU8L3R0PiBpZiB0aGlzIHNldCBjb250YWlucyBubyBlbGVtZW50cy4KKyAgICAgKgorICAgICAqIEByZXR1cm4gPHR0PnRydWU8L3R0PiBpZiB0aGlzIHNldCBjb250YWlucyBubyBlbGVtZW50cy4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0VtcHR5KCkgeworICAgICAgICByZXR1cm4gbGVuID09IDE7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyA8dHQ+dHJ1ZTwvdHQ+IGlmIHRoaXMgc2V0IGNvbnRhaW5zIGV2ZXJ5IGNoYXJhY3RlcgorICAgICAqIGluIHRoZSBzcGVjaWZpZWQgcmFuZ2Ugb2YgY2hhcnMuCisgICAgICogSWYgPGNvZGU+ZW5kID4gc3RhcnQ8L2NvZGU+IHRoZW4gdGhlIHJlc3VsdHMgb2YgdGhpcyBtZXRob2QKKyAgICAgKiBhcmUgdW5kZWZpbmVkLgorICAgICAqCisgICAgICogQHJldHVybiA8dHQ+dHJ1ZTwvdHQ+IGlmIHRoaXMgc2V0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgcmFuZ2UKKyAgICAgKiBvZiBjaGFycy4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjb250YWlucyhjaGFyIHN0YXJ0LCBjaGFyIGVuZCkgeworICAgICAgICBpbnQgaSA9IC0xOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYgKHN0YXJ0IDwgbGlzdFsrK2ldKSBicmVhazsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKChpICYgMSkgIT0gMCAmJiBlbmQgPCBsaXN0W2ldKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIDx0dD50cnVlPC90dD4gaWYgdGhpcyBzZXQgY29udGFpbnMgdGhlIHNwZWNpZmllZCBjaGFyLgorICAgICAqCisgICAgICogQHJldHVybiA8dHQ+dHJ1ZTwvdHQ+IGlmIHRoaXMgc2V0IGNvbnRhaW5zIHRoZSBzcGVjaWZpZWQgY2hhci4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjb250YWlucyhjaGFyIGMpIHsKKy8vfCBOb3QgbmVlZGVkIHVubGVzcyBISUdIID4gMHgxMDAwMAorLy98ICAgICAvLyBjYXRjaCBkZWdlbmVyYXRlIGNhc2VzCisvL3wgICAgIGlmIChjID09IEhJR0gpIHsgICAvLyBjYXRjaCBmaW5hbCwgc28gd2UgZG9uJ3QgZG8gaXQgaW4gbG9vcCEKKy8vfCAgICAgICAgIHJldHVybiAobGVuICYgMSkgPT0gMDsgIC8vIGV2ZW4gbGVuZ3RoIGluY2x1ZGVzIGV2ZXJ5dGhpbmcKKy8vfCAgICAgfQorICAgICAgICAvLyBTZXQgaSB0byB0aGUgaW5kZXggb2YgdGhlIHN0YXJ0IGl0ZW0gZ3JlYXRlciB0aGFuIGNoCisgICAgICAgIC8vIFdlIGtub3cgd2Ugd2lsbCB0ZXJtaW5hdGUgd2l0aG91dCBsZW5ndGggdGVzdCEKKyAgICAgICAgLy8gTEFURVI6IGZvciBsYXJnZSBzZXRzLCBhZGQgYmluYXJ5IHNlYXJjaAorICAgICAgICBpbnQgaSA9IC0xOworICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgaWYgKGMgPCBsaXN0WysraV0pIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybiAoKGkgJiAxKSAhPSAwKTsgLy8gcmV0dXJuIHRydWUgaWYgb2RkCisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyA8dHQ+dHJ1ZTwvdHQ+IGlmIHRoaXMgc2V0IGNvbnRhaW5zIGFueSBjaGFyYWN0ZXIgd2hvc2UgbG93IGJ5dGUKKyAgICAgKiBpcyB0aGUgZ2l2ZW4gdmFsdWUuICBUaGlzIGlzIHVzZWQgYnkgPHR0PlJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yPC90dD4gZm9yCisgICAgICogaW5kZXhpbmcuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gY29udGFpbnNJbmRleFZhbHVlKGludCB2KSB7CisgICAgICAgIC8qIFRoZSBpbmRleCB2YWx1ZSB2LCBpbiB0aGUgcmFuZ2UgWzAsMjU1XSwgaXMgY29udGFpbmVkIGluIHRoaXMgc2V0IGlmCisgICAgICAgICAqIGl0IGlzIGNvbnRhaW5lZCBpbiBhbnkgcmFuZ2Ugb2YgdGhpcyBzZXQuICBSYW5nZXMgZWl0aGVyIGhhdmUgdGhlIGhpZ2gKKyAgICAgICAgICogYnl0ZXMgZXF1YWwsIG9yIHVuZXF1YWwuICBJZiB0aGUgaGlnaCBieXRlcyBhcmUgZXF1YWwsIHRoZW4gd2UgaGF2ZQorICAgICAgICAgKiBhYXh4Li5hYXl5LCB3aGVyZSBhYSBpcyB0aGUgaGlnaCBieXRlLiAgVGhlbiB2IGlzIGNvbnRhaW5lZCBpZiB4eCA8PQorICAgICAgICAgKiB2IDw9IHl5LiAgSWYgdGhlIGhpZ2ggYnl0ZXMgYXJlIHVuZXF1YWwgd2UgaGF2ZSBhYXh4Li5iYnl5LCBiYj5hYS4KKyAgICAgICAgICogVGhlbiB2IGlzIGNvbnRhaW5lZCBpZiB4eCA8PSB2IHx8IHYgPD0geXkuICAoVGhpcyBpcyBpZGVudGljYWwgdG8gdGhlCisgICAgICAgICAqIHRpbWUgem9uZSBtb250aCBjb250YWlubWVudCBsb2dpYy4pCisgICAgICAgICAqLworICAgICAgICBmb3IgKGludCBpPTA7IGk8Z2V0UmFuZ2VDb3VudCgpOyArK2kpIHsKKyAgICAgICAgICAgIGludCBsb3cgPSBnZXRSYW5nZVN0YXJ0KGkpOworICAgICAgICAgICAgaW50IGhpZ2ggPSBnZXRSYW5nZUVuZChpKTsKKyAgICAgICAgICAgIGlmICgobG93ICYgfjB4RkYpID09IChoaWdoICYgfjB4RkYpKSB7CisgICAgICAgICAgICAgICAgaWYgKChsb3cgJiAweEZGKSA8PSB2ICYmIHYgPD0gKGhpZ2ggJiAweEZGKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKChsb3cgJiAweEZGKSA8PSB2IHx8IHYgPD0gKGhpZ2ggJiAweEZGKSkgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBZGRzIHRoZSBzcGVjaWZpZWQgcmFuZ2UgdG8gdGhpcyBzZXQgaWYgaXQgaXMgbm90IGFscmVhZHkKKyAgICAgKiBwcmVzZW50LiAgSWYgdGhpcyBzZXQgYWxyZWFkeSBjb250YWlucyB0aGUgc3BlY2lmaWVkIHJhbmdlLAorICAgICAqIHRoZSBjYWxsIGxlYXZlcyB0aGlzIHNldCB1bmNoYW5nZWQuICBJZiA8Y29kZT5lbmQgPiBzdGFydDwvY29kZT4KKyAgICAgKiB0aGVuIGFuIGVtcHR5IHJhbmdlIGlzIGFkZGVkLCBsZWF2aW5nIHRoZSBzZXQgdW5jaGFuZ2VkLgorICAgICAqCisgICAgICogQHBhcmFtIHN0YXJ0IGZpcnN0IGNoYXJhY3RlciwgaW5jbHVzaXZlLCBvZiByYW5nZSB0byBiZSBhZGRlZAorICAgICAqIHRvIHRoaXMgc2V0LgorICAgICAqIEBwYXJhbSBlbmQgbGFzdCBjaGFyYWN0ZXIsIGluY2x1c2l2ZSwgb2YgcmFuZ2UgdG8gYmUgYWRkZWQKKyAgICAgKiB0byB0aGlzIHNldC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhZGQoY2hhciBzdGFydCwgY2hhciBlbmQpIHsKKyAgICAgICAgaWYgKHN0YXJ0IDw9IGVuZCkgeworICAgICAgICAgICAgYWRkKHJhbmdlKHN0YXJ0LCBlbmQpLCAyLCAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEFkZHMgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgdG8gdGhpcyBzZXQgaWYgaXQgaXMgbm90IGFscmVhZHkKKyAgICAgKiBwcmVzZW50LiAgSWYgdGhpcyBzZXQgYWxyZWFkeSBjb250YWlucyB0aGUgc3BlY2lmaWVkIGNoYXJhY3RlciwKKyAgICAgKiB0aGUgY2FsbCBsZWF2ZXMgdGhpcyBzZXQgdW5jaGFuZ2VkLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIGFkZChjaGFyIGMpIHsKKyAgICAgICAgYWRkKGMsIGMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldGFpbiBvbmx5IHRoZSBlbGVtZW50cyBpbiB0aGlzIHNldCB0aGF0IGFyZSBjb250YWluZWQgaW4gdGhlCisgICAgICogc3BlY2lmaWVkIHJhbmdlLiAgSWYgPGNvZGU+ZW5kID4gc3RhcnQ8L2NvZGU+IHRoZW4gYW4gZW1wdHkgcmFuZ2UgaXMKKyAgICAgKiByZXRhaW5lZCwgbGVhdmluZyB0aGUgc2V0IGVtcHR5LgorICAgICAqCisgICAgICogQHBhcmFtIHN0YXJ0IGZpcnN0IGNoYXJhY3RlciwgaW5jbHVzaXZlLCBvZiByYW5nZSB0byBiZSByZXRhaW5lZAorICAgICAqIHRvIHRoaXMgc2V0LgorICAgICAqIEBwYXJhbSBlbmQgbGFzdCBjaGFyYWN0ZXIsIGluY2x1c2l2ZSwgb2YgcmFuZ2UgdG8gYmUgcmV0YWluZWQKKyAgICAgKiB0byB0aGlzIHNldC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZXRhaW4oY2hhciBzdGFydCwgY2hhciBlbmQpIHsKKyAgICAgICAgaWYgKHN0YXJ0IDw9IGVuZCkgeworICAgICAgICAgICAgcmV0YWluKHJhbmdlKHN0YXJ0LCBlbmQpLCAyLCAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXRhaW4gdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgZnJvbSB0aGlzIHNldCBpZiBpdCBpcyBwcmVzZW50LgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHJldGFpbihjaGFyIGMpIHsKKyAgICAgICAgcmV0YWluKGMsIGMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbW92ZXMgdGhlIHNwZWNpZmllZCByYW5nZSBmcm9tIHRoaXMgc2V0IGlmIGl0IGlzIHByZXNlbnQuCisgICAgICogVGhlIHNldCB3aWxsIG5vdCBjb250YWluIHRoZSBzcGVjaWZpZWQgcmFuZ2Ugb25jZSB0aGUgY2FsbAorICAgICAqIHJldHVybnMuICBJZiA8Y29kZT5lbmQgPiBzdGFydDwvY29kZT4gdGhlbiBhbiBlbXB0eSByYW5nZSBpcworICAgICAqIHJlbW92ZWQsIGxlYXZpbmcgdGhlIHNldCB1bmNoYW5nZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc3RhcnQgZmlyc3QgY2hhcmFjdGVyLCBpbmNsdXNpdmUsIG9mIHJhbmdlIHRvIGJlIHJlbW92ZWQKKyAgICAgKiBmcm9tIHRoaXMgc2V0LgorICAgICAqIEBwYXJhbSBlbmQgbGFzdCBjaGFyYWN0ZXIsIGluY2x1c2l2ZSwgb2YgcmFuZ2UgdG8gYmUgcmVtb3ZlZAorICAgICAqIGZyb20gdGhpcyBzZXQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVtb3ZlKGNoYXIgc3RhcnQsIGNoYXIgZW5kKSB7CisgICAgICAgIGlmIChzdGFydCA8PSBlbmQpIHsKKyAgICAgICAgICAgIHJldGFpbihyYW5nZShzdGFydCwgZW5kKSwgMiwgMik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmVzIHRoZSBzcGVjaWZpZWQgY2hhcmFjdGVyIGZyb20gdGhpcyBzZXQgaWYgaXQgaXMgcHJlc2VudC4KKyAgICAgKiBUaGUgc2V0IHdpbGwgbm90IGNvbnRhaW4gdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgb25jZSB0aGUgY2FsbAorICAgICAqIHJldHVybnMuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgcmVtb3ZlKGNoYXIgYykgeworICAgICAgICByZW1vdmUoYywgYyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcGxlbWVudHMgdGhlIHNwZWNpZmllZCByYW5nZSBpbiB0aGlzIHNldC4gIEFueSBjaGFyYWN0ZXIgaW4KKyAgICAgKiB0aGUgcmFuZ2Ugd2lsbCBiZSByZW1vdmVkIGlmIGl0IGlzIGluIHRoaXMgc2V0LCBvciB3aWxsIGJlCisgICAgICogYWRkZWQgaWYgaXQgaXMgbm90IGluIHRoaXMgc2V0LiAgSWYgPGNvZGU+ZW5kID4gc3RhcnQ8L2NvZGU+CisgICAgICogdGhlbiBhbiBlbXB0eSByYW5nZSBpcyBjb21wbGVtZW50ZWQsIGxlYXZpbmcgdGhlIHNldCB1bmNoYW5nZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc3RhcnQgZmlyc3QgY2hhcmFjdGVyLCBpbmNsdXNpdmUsIG9mIHJhbmdlIHRvIGJlIHJlbW92ZWQKKyAgICAgKiBmcm9tIHRoaXMgc2V0LgorICAgICAqIEBwYXJhbSBlbmQgbGFzdCBjaGFyYWN0ZXIsIGluY2x1c2l2ZSwgb2YgcmFuZ2UgdG8gYmUgcmVtb3ZlZAorICAgICAqIGZyb20gdGhpcyBzZXQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgY29tcGxlbWVudChjaGFyIHN0YXJ0LCBjaGFyIGVuZCkgeworICAgICAgICBpZiAoc3RhcnQgPD0gZW5kKSB7CisgICAgICAgICAgICB4b3IocmFuZ2Uoc3RhcnQsIGVuZCksIDIsIDApOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcGxlbWVudHMgdGhlIHNwZWNpZmllZCBjaGFyYWN0ZXIgaW4gdGhpcyBzZXQuICBUaGUgY2hhcmFjdGVyCisgICAgICogd2lsbCBiZSByZW1vdmVkIGlmIGl0IGlzIGluIHRoaXMgc2V0LCBvciB3aWxsIGJlIGFkZGVkIGlmIGl0IGlzCisgICAgICogbm90IGluIHRoaXMgc2V0LgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIGNvbXBsZW1lbnQoY2hhciBjKSB7CisgICAgICAgIGNvbXBsZW1lbnQoYywgYyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW52ZXJ0cyB0aGlzIHNldC4gIFRoaXMgb3BlcmF0aW9uIG1vZGlmaWVzIHRoaXMgc2V0IHNvIHRoYXQgaXRzCisgICAgICogdmFsdWUgaXMgaXRzIGNvbXBsZW1lbnQuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8KKyAgICAgKiA8Y29kZT5jb21wbGVtZW50KE1JTl9WQUxVRSwgTUFYX1ZBTFVFKTwvY29kZT4uCisgICAgICovCisgICAgcHVibGljIHZvaWQgY29tcGxlbWVudCgpIHsKKyAgICAgICAgaWYgKGxpc3RbMF0gPT0gTE9XKSB7CisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGxpc3QsIDEsIGxpc3QsIDAsIGxlbi0xKTsKKyAgICAgICAgICAgIC0tbGVuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW5zdXJlQ2FwYWNpdHkobGVuKzEpOworICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShsaXN0LCAwLCBsaXN0LCAxLCBsZW4pOworICAgICAgICAgICAgbGlzdFswXSA9IExPVzsKKyAgICAgICAgICAgICsrbGVuOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyA8dHQ+dHJ1ZTwvdHQ+IGlmIHRoZSBzcGVjaWZpZWQgc2V0IGlzIGEgc3Vic2V0CisgICAgICogb2YgdGhpcyBzZXQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYyBzZXQgdG8gYmUgY2hlY2tlZCBmb3IgY29udGFpbm1lbnQgaW4gdGhpcyBzZXQuCisgICAgICogQHJldHVybiA8dHQ+dHJ1ZTwvdHQ+IGlmIHRoaXMgc2V0IGNvbnRhaW5zIGFsbCBvZiB0aGUgZWxlbWVudHMgb2YgdGhlCisgICAgICogCSAgICAgICBzcGVjaWZpZWQgc2V0LgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zQWxsKFVuaWNvZGVTZXQgYykgeworICAgICAgICAvLyBUaGUgc3BlY2lmaWVkIHNldCBpcyBhIHN1YnNldCBpZiBhbGwgb2YgaXRzIHBhaXJzIGFyZSBjb250YWluZWQgaW4KKyAgICAgICAgLy8gdGhpcyBzZXQuICBJdCdzIHBvc3NpYmxlIHRvIGNvZGUgdGhpcyBtb3JlIGVmZmljaWVudGx5IGluIHRlcm1zIG9mCisgICAgICAgIC8vIGRpcmVjdCBtYW5pcHVsYXRpb24gb2YgdGhlIGludmVyc2lvbiBsaXN0cyBpZiB0aGUgbmVlZCBhcmlzZXMuCisgICAgICAgIGludCBuID0gYy5nZXRSYW5nZUNvdW50KCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxuOyArK2kpIHsKKyAgICAgICAgICAgIGlmICghY29udGFpbnMoYy5nZXRSYW5nZVN0YXJ0KGkpLCBjLmdldFJhbmdlRW5kKGkpKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBZGRzIGFsbCBvZiB0aGUgZWxlbWVudHMgaW4gdGhlIHNwZWNpZmllZCBzZXQgdG8gdGhpcyBzZXQgaWYKKyAgICAgKiB0aGV5J3JlIG5vdCBhbHJlYWR5IHByZXNlbnQuICBUaGlzIG9wZXJhdGlvbiBlZmZlY3RpdmVseQorICAgICAqIG1vZGlmaWVzIHRoaXMgc2V0IHNvIHRoYXQgaXRzIHZhbHVlIGlzIHRoZSA8aT51bmlvbjwvaT4gb2YgdGhlIHR3bworICAgICAqIHNldHMuICBUaGUgYmVoYXZpb3Igb2YgdGhpcyBvcGVyYXRpb24gaXMgdW5zcGVjaWZpZWQgaWYgdGhlIHNwZWNpZmllZAorICAgICAqIGNvbGxlY3Rpb24gaXMgbW9kaWZpZWQgd2hpbGUgdGhlIG9wZXJhdGlvbiBpcyBpbiBwcm9ncmVzcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjIHNldCB3aG9zZSBlbGVtZW50cyBhcmUgdG8gYmUgYWRkZWQgdG8gdGhpcyBzZXQuCisgICAgICogQHNlZSAjYWRkKGNoYXIsIGNoYXIpCisgICAgICovCisgICAgcHVibGljIHZvaWQgYWRkQWxsKFVuaWNvZGVTZXQgYykgeworICAgICAgICBhZGQoYy5saXN0LCBjLmxlbiwgMCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0YWlucyBvbmx5IHRoZSBlbGVtZW50cyBpbiB0aGlzIHNldCB0aGF0IGFyZSBjb250YWluZWQgaW4gdGhlCisgICAgICogc3BlY2lmaWVkIHNldC4gIEluIG90aGVyIHdvcmRzLCByZW1vdmVzIGZyb20gdGhpcyBzZXQgYWxsIG9mCisgICAgICogaXRzIGVsZW1lbnRzIHRoYXQgYXJlIG5vdCBjb250YWluZWQgaW4gdGhlIHNwZWNpZmllZCBzZXQuICBUaGlzCisgICAgICogb3BlcmF0aW9uIGVmZmVjdGl2ZWx5IG1vZGlmaWVzIHRoaXMgc2V0IHNvIHRoYXQgaXRzIHZhbHVlIGlzCisgICAgICogdGhlIDxpPmludGVyc2VjdGlvbjwvaT4gb2YgdGhlIHR3byBzZXRzLgorICAgICAqCisgICAgICogQHBhcmFtIGMgc2V0IHRoYXQgZGVmaW5lcyB3aGljaCBlbGVtZW50cyB0aGlzIHNldCB3aWxsIHJldGFpbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZXRhaW5BbGwoVW5pY29kZVNldCBjKSB7CisgICAgICAgIHJldGFpbihjLmxpc3QsIGMubGVuLCAwKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW1vdmVzIGZyb20gdGhpcyBzZXQgYWxsIG9mIGl0cyBlbGVtZW50cyB0aGF0IGFyZSBjb250YWluZWQgaW4gdGhlCisgICAgICogc3BlY2lmaWVkIHNldC4gIFRoaXMgb3BlcmF0aW9uIGVmZmVjdGl2ZWx5IG1vZGlmaWVzIHRoaXMKKyAgICAgKiBzZXQgc28gdGhhdCBpdHMgdmFsdWUgaXMgdGhlIDxpPmFzeW1tZXRyaWMgc2V0IGRpZmZlcmVuY2U8L2k+IG9mCisgICAgICogdGhlIHR3byBzZXRzLgorICAgICAqCisgICAgICogQHBhcmFtIGMgc2V0IHRoYXQgZGVmaW5lcyB3aGljaCBlbGVtZW50cyB3aWxsIGJlIHJlbW92ZWQgZnJvbQorICAgICAqICAgICAgICAgIHRoaXMgc2V0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlbW92ZUFsbChVbmljb2RlU2V0IGMpIHsKKyAgICAgICAgcmV0YWluKGMubGlzdCwgYy5sZW4sIDIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBsZW1lbnRzIGluIHRoaXMgc2V0IGFsbCBlbGVtZW50cyBjb250YWluZWQgaW4gdGhlIHNwZWNpZmllZAorICAgICAqIHNldC4gIEFueSBjaGFyYWN0ZXIgaW4gdGhlIG90aGVyIHNldCB3aWxsIGJlIHJlbW92ZWQgaWYgaXQgaXMKKyAgICAgKiBpbiB0aGlzIHNldCwgb3Igd2lsbCBiZSBhZGRlZCBpZiBpdCBpcyBub3QgaW4gdGhpcyBzZXQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYyBzZXQgdGhhdCBkZWZpbmVzIHdoaWNoIGVsZW1lbnRzIHdpbGwgYmUgY29tcGxlbWVudGVkIGZyb20KKyAgICAgKiAgICAgICAgICB0aGlzIHNldC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjb21wbGVtZW50QWxsKFVuaWNvZGVTZXQgYykgeworICAgICAgICB4b3IoYy5saXN0LCBjLmxlbiwgMCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVtb3ZlcyBhbGwgb2YgdGhlIGVsZW1lbnRzIGZyb20gdGhpcyBzZXQuICBUaGlzIHNldCB3aWxsIGJlCisgICAgICogZW1wdHkgYWZ0ZXIgdGhpcyBjYWxsIHJldHVybnMuCisgICAgICovCisgICAgcHVibGljIHZvaWQgY2xlYXIoKSB7CisgICAgICAgIGxpc3RbMF0gPSBISUdIOworICAgICAgICBsZW4gPSAxOworICAgIH0KKworICAgIC8qKgorICAgICAqIEl0ZXJhdGlvbiBtZXRob2QgdGhhdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgcmFuZ2VzIGNvbnRhaW5lZCBpbgorICAgICAqIHRoaXMgc2V0LgorICAgICAqIEBzZWUgI2dldFJhbmdlU3RhcnQKKyAgICAgKiBAc2VlICNnZXRSYW5nZUVuZAorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0UmFuZ2VDb3VudCgpIHsKKyAgICAgICAgcmV0dXJuIGxlbi8yOworICAgIH0KKworICAgIC8qKgorICAgICAqIEl0ZXJhdGlvbiBtZXRob2QgdGhhdCByZXR1cm5zIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlCisgICAgICogc3BlY2lmaWVkIHJhbmdlIG9mIHRoaXMgc2V0LgorICAgICAqIEBleGNlcHRpb24gQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGlmIGluZGV4IGlzIG91dHNpZGUKKyAgICAgKiB0aGUgcmFuZ2UgPGNvZGU+MC4uZ2V0UmFuZ2VDb3VudCgpLTE8L2NvZGU+CisgICAgICogQHNlZSAjZ2V0UmFuZ2VDb3VudAorICAgICAqIEBzZWUgI2dldFJhbmdlRW5kCisgICAgICovCisgICAgcHVibGljIGNoYXIgZ2V0UmFuZ2VTdGFydChpbnQgaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIChjaGFyKSBsaXN0W2luZGV4KjJdOworICAgIH0KKworICAgIC8qKgorICAgICAqIEl0ZXJhdGlvbiBtZXRob2QgdGhhdCByZXR1cm5zIHRoZSBsYXN0IGNoYXJhY3RlciBpbiB0aGUKKyAgICAgKiBzcGVjaWZpZWQgcmFuZ2Ugb2YgdGhpcyBzZXQuCisgICAgICogQGV4Y2VwdGlvbiBBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24gaWYgaW5kZXggaXMgb3V0c2lkZQorICAgICAqIHRoZSByYW5nZSA8Y29kZT4wLi5nZXRSYW5nZUNvdW50KCktMTwvY29kZT4KKyAgICAgKiBAc2VlICNnZXRSYW5nZVN0YXJ0CisgICAgICogQHNlZSAjZ2V0UmFuZ2VFbmQKKyAgICAgKi8KKyAgICBwdWJsaWMgY2hhciBnZXRSYW5nZUVuZChpbnQgaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIChjaGFyKSAobGlzdFtpbmRleCoyICsgMV0gLSAxKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWFsbG9jYXRlIHRoaXMgb2JqZWN0cyBpbnRlcm5hbCBzdHJ1Y3R1cmVzIHRvIHRha2UgdXAgdGhlIGxlYXN0CisgICAgICogcG9zc2libGUgc3BhY2UsIHdpdGhvdXQgY2hhbmdpbmcgdGhpcyBvYmplY3QncyB2YWx1ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjb21wYWN0KCkgeworICAgICAgICBpZiAobGVuICE9IGxpc3QubGVuZ3RoKSB7CisgICAgICAgICAgICBpbnRbXSB0ZW1wID0gbmV3IGludFtsZW5dOworICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShsaXN0LCAwLCB0ZW1wLCAwLCBsZW4pOworICAgICAgICAgICAgbGlzdCA9IHRlbXA7CisgICAgICAgIH0KKyAgICAgICAgcmFuZ2VMaXN0ID0gbnVsbDsKKyAgICAgICAgYnVmZmVyID0gbnVsbDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb21wYXJlcyB0aGUgc3BlY2lmaWVkIG9iamVjdCB3aXRoIHRoaXMgc2V0IGZvciBlcXVhbGl0eS4gIFJldHVybnMKKyAgICAgKiA8dHQ+dHJ1ZTwvdHQ+IGlmIHRoZSBzcGVjaWZpZWQgb2JqZWN0IGlzIGFsc28gYSBzZXQsIHRoZSB0d28gc2V0cworICAgICAqIGhhdmUgdGhlIHNhbWUgc2l6ZSwgYW5kIGV2ZXJ5IG1lbWJlciBvZiB0aGUgc3BlY2lmaWVkIHNldCBpcworICAgICAqIGNvbnRhaW5lZCBpbiB0aGlzIHNldCAob3IgZXF1aXZhbGVudGx5LCBldmVyeSBtZW1iZXIgb2YgdGhpcyBzZXQgaXMKKyAgICAgKiBjb250YWluZWQgaW4gdGhlIHNwZWNpZmllZCBzZXQpLgorICAgICAqCisgICAgICogQHBhcmFtIG8gT2JqZWN0IHRvIGJlIGNvbXBhcmVkIGZvciBlcXVhbGl0eSB3aXRoIHRoaXMgc2V0LgorICAgICAqIEByZXR1cm4gPHR0PnRydWU8L3R0PiBpZiB0aGUgc3BlY2lmaWVkIE9iamVjdCBpcyBlcXVhbCB0byB0aGlzIHNldC4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG8pIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFVuaWNvZGVTZXQgdGhhdCA9IChVbmljb2RlU2V0KSBvOworICAgICAgICAgICAgaWYgKGxlbiAhPSB0aGF0LmxlbikgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW47ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChsaXN0W2ldICE9IHRoYXQubGlzdFtpXSkgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGhhc2ggY29kZSB2YWx1ZSBmb3IgdGhpcyBzZXQuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBoYXNoIGNvZGUgdmFsdWUgZm9yIHRoaXMgc2V0LgorICAgICAqIEBzZWUgT2JqZWN0I2hhc2hDb2RlKCkKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICBpbnQgcmVzdWx0ID0gbGVuOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbjsgKytpKSB7CisgICAgICAgICAgICByZXN1bHQgKj0gMTAwMDAwMzsKKyAgICAgICAgICAgIHJlc3VsdCArPSBsaXN0W2ldOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgcHJvZ3JhbW1lci1yZWFkYWJsZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBvYmplY3QuCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIGdldENsYXNzKCkuZ2V0TmFtZSgpICsgJ3snICsgdG9QYXR0ZXJuKCkgKyAnfSc7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gSW1wbGVtZW50YXRpb246IFBhdHRlcm4gcGFyc2luZworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUGFyc2VzIHRoZSBnaXZlbiBwYXR0ZXJuLCBzdGFydGluZyBhdCB0aGUgZ2l2ZW4gcG9zaXRpb24uICBUaGUgY2hhcmFjdGVyCisgICAgICogYXQgcGF0dGVybi5jaGFyQXQocG9zLmdldEluZGV4KCkpIG11c3QgYmUgJ1snLCBvciB0aGUgcGFyc2UgZmFpbHMuCisgICAgICogUGFyc2luZyBjb250aW51ZXMgdW50aWwgdGhlIGNvcnJlc3BvbmRpbmcgY2xvc2luZyAnXScuICBJZiBhIHN5bnRheCBlcnJvcgorICAgICAqIGlzIGVuY291bnRlcmVkIGJldHdlZW4gdGhlIG9wZW5pbmcgYW5kIGNsb3NpbmcgYnJhY2UsIHRoZSBwYXJzZSBmYWlscy4KKyAgICAgKiBVcG9uIHJldHVybiBmcm9tIGEgc3VjY2Vzc2Z1bCBwYXJzZSwgdGhlIFBhcnNlUG9zaXRpb24gaXMgdXBkYXRlZCB0bworICAgICAqIHBvaW50IHRvIHRoZSBjaGFyYWN0ZXIgZm9sbG93aW5nIHRoZSBjbG9zaW5nICddJywgYW5kIGFuIGludmVyc2lvbgorICAgICAqIGxpc3QgZm9yIHRoZSBwYXJzZWQgcGF0dGVybiBpcyByZXR1cm5lZC4gIFRoaXMgbWV0aG9kCisgICAgICogY2FsbHMgaXRzZWxmIHJlY3Vyc2l2ZWx5IHRvIHBhcnNlIGVtYmVkZGVkIHN1YnBhdHRlcm5zLgorICAgICAqCisgICAgICogQHBhcmFtIHBhdHRlcm4gdGhlIHN0cmluZyBjb250YWluaW5nIHRoZSBwYXR0ZXJuIHRvIGJlIHBhcnNlZC4gIFRoZQorICAgICAqIHBvcnRpb24gb2YgdGhlIHN0cmluZyBmcm9tIHBvcy5nZXRJbmRleCgpLCB3aGljaCBtdXN0IGJlIGEgJ1snLCB0byB0aGUKKyAgICAgKiBjb3JyZXNwb25kaW5nIGNsb3NpbmcgJ10nLCBpcyBwYXJzZWQuCisgICAgICogQHBhcmFtIHBvcyB1cG9uIGVudHJ5LCB0aGUgcG9zaXRpb24gYXQgd2hpY2ggdG8gYmVpbmcgcGFyc2luZy4gIFRoZQorICAgICAqIGNoYXJhY3RlciBhdCBwYXR0ZXJuLmNoYXJBdChwb3MuZ2V0SW5kZXgoKSkgbXVzdCBiZSBhICdbJy4gIFVwb24gcmV0dXJuCisgICAgICogZnJvbSBhIHN1Y2Nlc3NmdWwgcGFyc2UsIHBvcy5nZXRJbmRleCgpIGlzIGVpdGhlciB0aGUgY2hhcmFjdGVyIGFmdGVyIHRoZQorICAgICAqIGNsb3NpbmcgJ10nIG9mIHRoZSBwYXJzZWQgcGF0dGVybiwgb3IgcGF0dGVybi5sZW5ndGgoKSBpZiB0aGUgY2xvc2luZyAnXScKKyAgICAgKiBpcyB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIHBhdHRlcm4gc3RyaW5nLgorICAgICAqIEByZXR1cm4gYW4gaW52ZXJzaW9uIGxpc3QgZm9yIHRoZSBwYXJzZWQgc3Vic3RyaW5nCisgICAgICogb2YgPGNvZGU+cGF0dGVybjwvY29kZT4KKyAgICAgKiBAZXhjZXB0aW9uIGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIHBhcnNlIGZhaWxzLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBhcHBseVBhdHRlcm4oU3RyaW5nIHBhdHRlcm4sIFBhcnNlUG9zaXRpb24gcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ltYm9sVGFibGUgc3ltYm9scywgYm9vbGVhbiBpZ25vcmVXaGl0ZXNwYWNlKSB7CisKKyAgICAgICAgYm9vbGVhbiBpbnZlcnQgPSBmYWxzZTsKKyAgICAgICAgY2xlYXIoKTsKKworICAgICAgICBpbnQgbGFzdENoYXIgPSAtMTsgLy8gVGhpcyBpcyBlaXRoZXIgYSBjaGFyICgwLi5GRkZGKSBvciAtMQorICAgICAgICBjaGFyIGxhc3RPcCA9IDA7CisKKyAgICAgICAgLyogVGhpcyBsb29wIGl0ZXJhdGVzIG92ZXIgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIHBhdHRlcm4uICBXZSBzdGFydCBhdAorICAgICAgICAgKiB0aGUgcG9zaXRpb24gc3BlY2lmaWVkIGJ5IHBvcy4gIFdlIGV4aXQgdGhlIGxvb3Agd2hlbiBlaXRoZXIgYQorICAgICAgICAgKiBtYXRjaGluZyBjbG9zaW5nICddJyBpcyBzZWVuLCBvciB3ZSByZWFkIGFsbCBjaGFyYWN0ZXJzIG9mIHRoZQorICAgICAgICAgKiBwYXR0ZXJuLiAgSW4gdGhlIGxhdHRlciBjYXNlIGFuIGVycm9yIHdpbGwgYmUgdGhyb3duLgorICAgICAgICAgKi8KKworICAgICAgICAvKiBQYXR0ZXJuIHN5bnRheDoKKyAgICAgICAgICogIHBhdCA6PSAnWycgJ14nPyBlbGVtKiAnXScKKyAgICAgICAgICogIGVsZW0gOj0gYSB8IGEgJy0nIGEgfCBzZXQgfCBzZXQgb3Agc2V0CisgICAgICAgICAqICBzZXQgOj0gcGF0IHwgKGEgc2V0IHZhcmlhYmxlKQorICAgICAgICAgKiAgb3AgOj0gJyYnIHwgJy0nCisgICAgICAgICAqICBhIDo9IChhIGNoYXJhY3RlciwgcG9zc2libHkgZGVmaW5lZCBieSBhIHZhcikKKyAgICAgICAgICovCisKKyAgICAgICAgLy8gbW9kZSAwOiBObyBjaGFycyBwYXJzZWQgeWV0OyBuZXh0IG11c3QgYmUgJ1snCisgICAgICAgIC8vIG1vZGUgMTogJ1snIHNlZW47IGlmIG5leHQgaXMgJ14nIG9yICc6JyB0aGVuIHNwZWNpYWwKKyAgICAgICAgLy8gbW9kZSAyOiAnWycgJ14nPyBzZWVuOyBwYXJzZSBwYXR0ZXJuIGFuZCBjbG9zZSB3aXRoICddJworICAgICAgICAvLyBtb2RlIDM6ICdbOicgc2VlbjsgcGFyc2UgY2F0ZWdvcnkgYW5kIGNsb3NlIHdpdGggJzpdJworICAgICAgICBpbnQgbW9kZSA9IDA7CisgICAgICAgIGludCBvcGVuUG9zID0gMDsgLy8gb2Zmc2V0IHRvIG9wZW5pbmcgJ1snCisgICAgICAgIGludCBzdGFydCA9IHBvcy5nZXRJbmRleCgpOworICAgICAgICBpbnQgaSA9IHN0YXJ0OworICAgICAgICBpbnQgbGltaXQgPSBwYXR0ZXJuLmxlbmd0aCgpOworICAgICAgICAvKiBJbiB0aGUgY2FzZSBvZiBhbiBlbWJlZGRlZCBTeW1ib2xUYWJsZSB2YXJpYWJsZSwgd2UgbG9vayBpdCB1cCBhbmQKKyAgICAgICAgICogdGhlbiB0YWtlIGNoYXJhY3RlcnMgZnJvbSB0aGUgcmVzdWx0YW50IGNoYXJbXSBhcnJheS4gIFRoZXNlIGNoYXJzCisgICAgICAgICAqIGFyZSBzdWJqZWN0ZWQgdG8gYW4gZXh0cmEgbGV2ZWwgb2YgbG9va3VwIGluIHRoZSBTeW1ib2xUYWJsZSBpbiBjYXNlCisgICAgICAgICAqIHRoZXkgYXJlIHN0YW5kLWlucyBmb3IgYSBuZXN0ZWQgVW5pY29kZVNldC4gICovCisgICAgICAgIGNoYXJbXSB2YXJWYWx1ZUJ1ZmZlciA9IG51bGw7CisgICAgICAgIGludCBpdmFyVmFsdWVCdWZmZXIgPSAwOworICAgICAgICBpbnQgYW5jaG9yID0gMDsKKyAgICAgICAgZm9yICg7IGk8bGltaXQ7IGkrPSgodmFyVmFsdWVCdWZmZXI9PW51bGwpPzE6MCkpIHsKKyAgICAgICAgICAgIC8qIElmIHRoZSBuZXh0IGVsZW1lbnQgaXMgYSBzaW5nbGUgY2hhcmFjdGVyLCBjIHdpbGwgYmUgc2V0IHRvIGl0LAorICAgICAgICAgICAgICogYW5kIG5lc3RlZFNldCB3aWxsIGJlIG51bGwuICBJbiB0aGlzIGNhc2UgaXNMaXRlcmFsIGluZGljYXRlcworICAgICAgICAgICAgICogd2hldGhlciB0aGUgY2hhcmFjdGVyIHNob3VsZCBhc3N1bWUgc3BlY2lhbCBtZWFuaW5nIGlmIGl0IGhhcworICAgICAgICAgICAgICogb25lLiAgSWYgdGhlIG5leHQgZWxlbWVudCBpcyBhIG5lc3RlZCBzZXQsIGVpdGhlciB2aWEgYSB2YXJpYWJsZQorICAgICAgICAgICAgICogcmVmZXJlbmNlLCBvciB2aWEgYW4gZW1iZWRkZWQgIlsuLl0iICBvciAiWzouLjpdIiBwYXR0ZXJuLCB0aGVuCisgICAgICAgICAgICAgKiBuZXN0ZWRTZXQgd2lsbCBiZSBzZXQgdG8gdGhlIGktbGlzdCBmb3IgdGhlIG5lc3RlZCBzZXQsIGFuZAorICAgICAgICAgICAgICogYydzIHZhbHVlIHNob3VsZCBiZSBpZ25vcmVkLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBVbmljb2RlU2V0IG5lc3RlZFNldCA9IG51bGw7CisgICAgICAgICAgICBib29sZWFuIGlzTGl0ZXJhbCA9IGZhbHNlOworICAgICAgICAgICAgY2hhciBjOworICAgICAgICAgICAgaWYgKHZhclZhbHVlQnVmZmVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXZhclZhbHVlQnVmZmVyIDwgdmFyVmFsdWVCdWZmZXIubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgICAgIGMgPSB2YXJWYWx1ZUJ1ZmZlcltpdmFyVmFsdWVCdWZmZXIrK107CisgICAgICAgICAgICAgICAgICAgIG5lc3RlZFNldCA9IHN5bWJvbHMubG9va3VwU2V0KGMpOyAvLyBtYXkgYmUgTlVMTAorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZhclZhbHVlQnVmZmVyID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgYyA9IHBhdHRlcm4uY2hhckF0KGkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYyA9IHBhdHRlcm4uY2hhckF0KGkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZ25vcmUgd2hpdGVzcGFjZS4gIFRoaXMgaXMgbm90IFVuaWNvZGUgd2hpdGVzcGFjZSwgYnV0IEphdmEKKyAgICAgICAgICAgIC8vIHdoaXRlc3BhY2UsIGEgc3Vic2V0IG9mIFVuaWNvZGUgd2hpdGVzcGFjZS4KKyAgICAgICAgICAgIGlmIChpZ25vcmVXaGl0ZXNwYWNlICYmIENoYXJhY3Rlci5pc1doaXRlc3BhY2UoYykpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gS2VlcCB0cmFjayBvZiB0aGUgY291bnQgb2YgY2hhcmFjdGVycyBhZnRlciBhbiBhbGxlZ2VkIGFuY2hvcgorICAgICAgICAgICAgaWYgKGFuY2hvciA+IDApIHsKKyAgICAgICAgICAgICAgICArK2FuY2hvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gUGFyc2UgdGhlIG9wZW5pbmcgJ1snIGFuZCBvcHRpb25hbCBmb2xsb3dpbmcgJ14nCisgICAgICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICAgICAgICAgIGNhc2UgMDoKKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnWycpIHsKKyAgICAgICAgICAgICAgICAgICAgbW9kZSA9IDE7IC8vIE5leHQgbG9vayBmb3IgJ14nCisgICAgICAgICAgICAgICAgICAgIG9wZW5Qb3MgPSBpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJNaXNzaW5nIG9wZW5pbmcgJ1snIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSAxOgorICAgICAgICAgICAgICAgIG1vZGUgPSAyOworICAgICAgICAgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICAgICAgICAgIGNhc2UgJ14nOgorICAgICAgICAgICAgICAgICAgICBpbnZlcnQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gQmFjayB0byB0b3AgdG8gZmV0Y2ggbmV4dCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICAgICBjYXNlICc6JzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gb3BlblBvcysxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyAnWzonIGNhbm5vdCBoYXZlIHdoaXRlc3BhY2UgaW4gaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIC0taTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAnWyc7CisgICAgICAgICAgICAgICAgICAgICAgICBtb2RlID0gMzsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZhbGwgdGhyb3VnaCBhbmQgcGFyc2UgY2F0ZWdvcnkgbm9ybWFsbHkKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gRmFsbCB0aHJvdWdoCisgICAgICAgICAgICAgICAgY2FzZSAnLSc6CisgICAgICAgICAgICAgICAgICAgIGlzTGl0ZXJhbCA9IHRydWU7IC8vIFRyZWF0IGxlYWRpbmcgJy0nIGFzIGEgbGl0ZXJhbAorICAgICAgICAgICAgICAgICAgICBicmVhazsgLy8gRmFsbCB0aHJvdWdoCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIGVsc2UgZmFsbCB0aHJvdWdoIGFuZCBwYXJzZSB0aGlzIGNoYXJhY3RlciBub3JtYWxseQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBBZnRlciBvcGVuaW5nIG1hdHRlciBpcyBwYXJzZWQgKCJbIiwgIlteIiwgb3IgIls6IiksIHRoZSBtb2RlCisgICAgICAgICAgICAvLyB3aWxsIGJlIDIgaWYgd2Ugd2FudCBhIGNsb3NpbmcgJ10nLCBvciAzIGlmIHdlIHNob3VsZCBwYXJzZSBhCisgICAgICAgICAgICAvLyBjYXRlZ29yeSBhbmQgY2xvc2Ugd2l0aCAiOl0iLgorCisgICAgICAgICAgICAvLyBPbmx5IHByb2Nlc3MgZXNjYXBlcywgdmFyaWFibGUgcmVmZXJlbmNlcywgYW5kIG5lc3RlZCBzZXRzCisgICAgICAgICAgICAvLyBpZiB3ZSBhcmUgX25vdF8gcmV0cmlldmluZyBjaGFyYWN0ZXJzIGZyb20gdGhlIHZhcmlhYmxlCisgICAgICAgICAgICAvLyBidWZmZXIuICBDaGFyYWN0ZXJzIGluIHRoZSB2YXJpYWJsZSBidWZmZXIgaGF2ZSBhbHJlYWR5CisgICAgICAgICAgICAvLyBiZW5uIHRocm91Z2ggZXNjYXBlIGFuZCB2YXJpYWJsZSByZWZlcmVuY2UgcHJvY2Vzc2luZy4KKyAgICAgICAgICAgIGlmICh2YXJWYWx1ZUJ1ZmZlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgLyogSGFuZGxlIGVzY2FwZXMuICBJZiBhIGNoYXJhY3RlciBpcyBlc2NhcGVkLCB0aGVuIGl0IGFzc3VtZXMgaXRzCisgICAgICAgICAgICAgICAgICogbGl0ZXJhbCB2YWx1ZS4gIFRoaXMgaXMgdHJ1ZSBmb3IgYWxsIGNoYXJhY3RlcnMsIGJvdGggc3BlY2lhbAorICAgICAgICAgICAgICAgICAqIGNoYXJhY3RlcnMgYW5kIGNoYXJhY3RlcnMgd2l0aCBubyBzcGVjaWFsIG1lYW5pbmcuICBXZSBhbHNvCisgICAgICAgICAgICAgICAgICogaW50ZXJwcmV0ICdcXHV4eHh4JyBVbmljb2RlIGVzY2FwZXMgaGVyZSAoYXMgbGl0ZXJhbHMpLgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGlmIChjID09ICdcXCcpIHsKKyAgICAgICAgICAgICAgICAgICAgKytpOworICAgICAgICAgICAgICAgICAgICBpZiAoaSA8IGxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gcGF0dGVybi5jaGFyQXQoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpc0xpdGVyYWwgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ3UnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpKzQpID49IGxpbWl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgXFx1IGVzY2FwZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjID0gJ1x1MDAwMCc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaj0oKytpKSs0OyBpPGo7ICsraSkgeyAvLyBbc2ljXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGlnaXQgPSBDaGFyYWN0ZXIuZGlnaXQocGF0dGVybi5jaGFyQXQoaSksIDE2KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpZ2l0PDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgXFx1IGVzY2FwZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAoY2hhcikgKChjIDw8IDQpIHwgZGlnaXQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWk7IC8vIE1vdmUgaSBiYWNrIHRvIGxhc3QgcGFyc2VkIGNoYXJhY3RlcgorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVHJhaWxpbmcgJ1xcJyIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLyogUGFyc2UgdmFyaWFibGUgcmVmZXJlbmNlcy4gIFRoZXNlIGFyZSB0cmVhdGVkIGFzIGxpdGVyYWxzLiAgSWYgYQorICAgICAgICAgICAgICAgICAqIHZhcmlhYmxlIHJlZmVycyB0byBhIFVuaWNvZGVTZXQsIGl0cyBzdGFuZCBpbiBjaGFyYWN0ZXIgaXMKKyAgICAgICAgICAgICAgICAgKiByZXR1cm5lZCBpbiB0aGUgY2hhcltdIGJ1ZmZlci4KKyAgICAgICAgICAgICAgICAgKiBWYXJpYWJsZSBuYW1lcyBhcmUgb25seSBwYXJzZWQgaWYgdmFyTmFtZVRvQ2hhciBpcyBub3QgbnVsbC4KKyAgICAgICAgICAgICAgICAgKiBTZXQgdmFyaWFibGVzIGFyZSBvbmx5IGxvb2tlZCB1cCBpZiB2YXJDaGFyVG9TZXQgaXMgbm90IG51bGwuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoc3ltYm9scyAhPSBudWxsICYmICFpc0xpdGVyYWwgJiYgYyA9PSBTeW1ib2xUYWJsZS5TWU1CT0xfUkVGKSB7CisgICAgICAgICAgICAgICAgICAgIHBvcy5zZXRJbmRleCgrK2kpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IHN5bWJvbHMucGFyc2VSZWZlcmVuY2UocGF0dGVybiwgcG9zLCBsaW1pdCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChuYW1lICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhclZhbHVlQnVmZmVyID0gc3ltYm9scy5sb29rdXAobmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFyVmFsdWVCdWZmZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlVuZGVmaW5lZCB2YXJpYWJsZTogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGl2YXJWYWx1ZUJ1ZmZlciA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBpID0gcG9zLmdldEluZGV4KCk7IC8vIE1ha2UgaSBwb2ludCBQQVNUIGxhc3QgY2hhciBvZiB2YXIgbmFtZQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gR290IGEgbnVsbDsgdGhpcyBtZWFucyB3ZSBoYXZlIGFuIGlzb2xhdGVkICQuCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUZW50YXRpdmVseSBhc3N1bWUgdGhpcyBpcyBhbiBhbmNob3IuCisgICAgICAgICAgICAgICAgICAgICAgICBhbmNob3IgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgLS1pOyAvLyBCYWNrIHVwIHNvIGxvb3AgaW5jcmVtZW50IHdvcmtzIHByb3Blcmx5CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7IC8vIEJhY2sgdG8gdGhlIHRvcCB0byBnZXQgdmFyVmFsdWVCdWZmZXJbMF0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiBBbiBvcGVuaW5nIGJyYWNrZXQgaW5kaWNhdGVzIHRoZSBmaXJzdCBicmFja2V0IG9mIGEgbmVzdGVkCisgICAgICAgICAgICAgICAgICogc3VicGF0dGVybiwgZWl0aGVyIGEgbm9ybWFsIHBhdHRlcm4gb3IgYSBjYXRlZ29yeSBwYXR0ZXJuLiAgV2UKKyAgICAgICAgICAgICAgICAgKiByZWNvZ25pemUgdGhlc2UgaGVyZSBhbmQgc2V0IG5lc3RlZFNldCBhY2NvcmRpbmdseS4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBlbHNlIGlmICghaXNMaXRlcmFsICYmIGMgPT0gJ1snKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEhhbmRsZSAiWzouLi46XSIsIHJlcHJlc2VudGluZyBhIGNoYXJhY3RlciBjYXRlZ29yeQorICAgICAgICAgICAgICAgICAgICBjaGFyIGQgPSBjaGFyQWZ0ZXIocGF0dGVybiwgaSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChkID09ICc6JykgeworICAgICAgICAgICAgICAgICAgICAgICAgaSArPSAyOworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGogPSBwYXR0ZXJuLmluZGV4T2YoIjpdIiwgaSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaiA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJNaXNzaW5nIFwiOl1cIiIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbmVzdGVkU2V0ID0gbmV3IFVuaWNvZGVTZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZFNldC5hcHBseUNhdGVnb3J5KHBhdHRlcm4uc3Vic3RyaW5nKGksIGopKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBqKzE7IC8vIE1ha2UgaSBwb2ludCB0byAnXScgaW4gIjpdIgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUgPT0gMykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVudGlyZSBwYXR0ZXJuIGlzIGEgY2F0ZWdvcnk7IGxlYXZlIHBhcnNlIGxvb3AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQobmVzdGVkU2V0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlY3Vyc2UgdG8gZ2V0IHRoZSBpLWxpc3QgZm9yIHRoaXMgbmVzdGVkIHNldC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBvcy5zZXRJbmRleChpKTsgLy8gQWRkIDIgdG8gcG9pbnQgQUZURVIgb3AKKyAgICAgICAgICAgICAgICAgICAgICAgIG5lc3RlZFNldCA9IG5ldyBVbmljb2RlU2V0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXN0ZWRTZXQuYXBwbHlQYXR0ZXJuKHBhdHRlcm4sIHBvcywgc3ltYm9scywgaWdub3JlV2hpdGVzcGFjZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpID0gcG9zLmdldEluZGV4KCkgLSAxOyAvLyAtIDEgdG8gcG9pbnQgYXQgJ10nCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIEF0IHRoaXMgcG9pbnQgd2UgaGF2ZSBlaXRoZXIgYSBjaGFyYWN0ZXIgYywgb3IgYSBuZXN0ZWQgc2V0LiAgSWYKKyAgICAgICAgICAgICAqIHdlIGhhdmUgZW5jb3VudGVyZWQgYSBuZXN0ZWQgc2V0LCBlaXRoZXIgZW1iZWRkZWQgaW4gdGhlIHBhdHRlcm4sCisgICAgICAgICAgICAgKiBvciBhcyBhIHZhcmlhYmxlLCB3ZSBoYXZlIGEgbm9uLW51bGwgbmVzdGVkU2V0LCBhbmQgYyBzaG91bGQgYmUKKyAgICAgICAgICAgICAqIGlnbm9yZWQuICBPdGhlcndpc2UgYyBpcyB0aGUgY3VycmVudCBjaGFyYWN0ZXIsIGFuZCBpc0xpdGVyYWwKKyAgICAgICAgICAgICAqIGluZGljYXRlcyB3aGV0aGVyIGl0IGlzIGFuIGVzY2FwZWQgbGl0ZXJhbCAob3IgdmFyaWFibGUpIG9yIGEKKyAgICAgICAgICAgICAqIG5vcm1hbCB1bmVzY2FwZWQgY2hhcmFjdGVyLiAgVW5lc2NhcGVkIGNoYXJhY3RlcnMgJy0nLCAnJicsIGFuZAorICAgICAgICAgICAgICogJ10nIGhhdmUgc3BlY2lhbCBtZWFuaW5ncy4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKG5lc3RlZFNldCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKGxhc3RDaGFyID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3RPcCAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIHJocyBmb3IgIiArIGxhc3RDaGFyICsgbGFzdE9wKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBhZGQoKGNoYXIpIGxhc3RDaGFyLCAoY2hhcikgbGFzdENoYXIpOworICAgICAgICAgICAgICAgICAgICBsYXN0Q2hhciA9IC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGxhc3RPcCkgeworICAgICAgICAgICAgICAgIGNhc2UgJy0nOgorICAgICAgICAgICAgICAgICAgICByZW1vdmVBbGwobmVzdGVkU2V0KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAnJic6CisgICAgICAgICAgICAgICAgICAgIHJldGFpbkFsbChuZXN0ZWRTZXQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgIGFkZEFsbChuZXN0ZWRTZXQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbGFzdE9wID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIWlzTGl0ZXJhbCAmJiBjID09ICddJykgeworICAgICAgICAgICAgICAgIC8vIEZpbmFsIGNsb3NpbmcgZGVsaW1pdGVyLiAgVGhpcyBpcyB0aGUgb25seSB3YXkgd2UgbGVhdmUgdGhpcworICAgICAgICAgICAgICAgIC8vIGxvb3AgaWYgdGhlIHBhdHRlcm4gaXMgd2VsbC1mb3JtZWQuCisgICAgICAgICAgICAgICAgaWYgKGFuY2hvciA+IDIgfHwgYW5jaG9yID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiU3ludGF4IGVycm9yIG5lYXIgJCIgKyBwYXR0ZXJuKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChhbmNob3IgPT0gMikgeworICAgICAgICAgICAgICAgICAgICBhZGQoVHJhbnNsaXRlcmF0aW9uUnVsZS5FVEhFUik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0T3AgPT0gMCAmJiAhaXNMaXRlcmFsICYmIChjID09ICctJyB8fCBjID09ICcmJykpIHsKKyAgICAgICAgICAgICAgICBsYXN0T3AgPSBjOworICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0T3AgPT0gJy0nKSB7CisgICAgICAgICAgICAgICAgaWYgKGxhc3RDaGFyID49IGMpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgYWxsb3cgcmVkdW5kYW50IChhLWEpIG9yIGVtcHR5IChiLWEpIHJhbmdlczsKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlc2UgYXJlIG1vc3QgbGlrZWx5IHR5cG9zLgorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIHJhbmdlICIgKyBsYXN0Q2hhciArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0nICsgYyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFkZCgoY2hhcikgbGFzdENoYXIsIGMpOworICAgICAgICAgICAgICAgIGxhc3RPcCA9IDA7CisgICAgICAgICAgICAgICAgbGFzdENoYXIgPSAtMTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdE9wICE9IDApIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIDxzZXQ+JjxjaGFyPiBvciA8Y2hhcj4mPGNoYXI+CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVW5xdW90ZWQgIiArIGxhc3RPcCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChsYXN0Q2hhciA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgPGNoYXI+PGNoYXI+CisgICAgICAgICAgICAgICAgICAgIGFkZCgoY2hhcikgbGFzdENoYXIsIChjaGFyKSBsYXN0Q2hhcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxhc3RDaGFyID0gYzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChtb2RlID09IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIk1pc3NpbmcgJ1snIGluIFwiIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm4uc3Vic3RyaW5nKHN0YXJ0KSArICciJyk7CisgICAgICAgIH0KKworICAgICAgICAvLyBIYW5kbGUgdW5wcm9jZXNzZWQgc3R1ZmYgcHJlY2VkaW5nIHRoZSBjbG9zaW5nICddJworICAgICAgICBpZiAobGFzdE9wID09ICctJykgeworICAgICAgICAgICAgLy8gVHJhaWxpbmcgJy0nIGlzIHRyZWF0ZWQgYXMgbGl0ZXJhbAorICAgICAgICAgICAgYWRkKGxhc3RPcCwgbGFzdE9wKTsKKyAgICAgICAgfSBlbHNlIGlmIChsYXN0T3AgPT0gJyYnKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJVbnF1b3RlZCB0cmFpbGluZyAiICsgbGFzdE9wKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobGFzdENoYXIgPj0gMCkgeworICAgICAgICAgICAgYWRkKChjaGFyKSBsYXN0Q2hhciwgKGNoYXIpIGxhc3RDaGFyKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBJZiB3ZSBzYXcgYSAnXicgYWZ0ZXIgdGhlIGluaXRpYWwgJ1snIG9mIHRoaXMgcGF0dGVybiwgdGhlbiBwZXJmb3JtCisgICAgICAgICAqIHRoZSBjb21wbGVtZW50LiAgKEludmVyc2lvbiBhZnRlciAnWzonIGlzIGhhbmRsZWQgZWxzZXdoZXJlLikKKyAgICAgICAgICovCisgICAgICAgIGlmIChpbnZlcnQpIHsKKyAgICAgICAgICAgIGNvbXBsZW1lbnQoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBpIGluZGV4ZXMgdGhlIGxhc3QgY2hhcmFjdGVyIHdlIHBhcnNlZCBvciBpcyBwYXR0ZXJuLmxlbmd0aCgpLiAgSW4KKyAgICAgICAgICogdGhlIGxhdHRlciBjYXNlLCB3ZSBoYXZlIHJ1biBvZmYgdGhlIGVuZCB3aXRob3V0IGZpbmRpbmcgYSBjbG9zaW5nCisgICAgICAgICAqICddJy4gIE90aGVyd2lzZSwgd2Uga25vdyBpIDwgcGF0dGVybi5sZW5ndGgoKSwgYW5kIHdlIHNldCB0aGUKKyAgICAgICAgICogUGFyc2VQb3NpdGlvbiB0byB0aGUgbmV4dCBjaGFyYWN0ZXIgdG8gYmUgcGFyc2VkLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKGkgPT0gbGltaXQpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIk1pc3NpbmcgJ10nIGluIFwiIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdHRlcm4uc3Vic3RyaW5nKHN0YXJ0KSArICciJyk7CisgICAgICAgIH0KKyAgICAgICAgcG9zLnNldEluZGV4KGkrMSk7CisKKyAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICAvLyBEZWJ1ZyBwYXJzZXIKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVW5pY29kZVNldCgiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuLnN1YnN0cmluZyhzdGFydCwgaSsxKSArICIpIC0+ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5pYm0udXRpbC5VdGlsaXR5LmVzY2FwZSh0b1N0cmluZygpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBJbXBsZW1lbnRhdGlvbjogR2VuZXJhdGlvbiBvZiBVbmljb2RlIGNhdGVnb3JpZXMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhpcyBvYmplY3QgdG8gdGhlIGdpdmVuIGNhdGVnb3J5LCBnaXZlbiBpdHMgbmFtZS4KKyAgICAgKiBUaGUgY2F0ZWdvcnkgbmFtZSBtdXN0IGJlIGVpdGhlciBhIHR3by1sZXR0ZXIgbmFtZSwgc3VjaCBhcworICAgICAqICJMdSIsIG9yIGEgb25lIGxldHRlciBuYW1lLCBzdWNoIGFzICJMIi4gIE9uZS1sZXR0ZXIgbmFtZXMKKyAgICAgKiBpbmRpY2F0ZSB0aGUgbG9naWNhbCB1bmlvbiBvZiBhbGwgdHdvLWxldHRlciBuYW1lcyB0aGF0IHN0YXJ0CisgICAgICogd2l0aCB0aGF0IGxldHRlci4gIENhc2UgaXMgc2lnbmlmaWNhbnQuICBJZiB0aGUgbmFtZSBzdGFydHMKKyAgICAgKiB3aXRoIHRoZSBjaGFyYWN0ZXIgJ14nIHRoZW4gdGhlIGNvbXBsZW1lbnQgb2YgdGhlIGdpdmVuCisgICAgICogY2hhcmFjdGVyIHNldCBpcyByZXR1cm5lZC4KKyAgICAgKgorICAgICAqIEFsdGhvdWdoIGluZGl2aWR1YWwgY2F0ZWdvcmllcyBzdWNoIGFzICJMdSIgYXJlIGNhY2hlZCwgd2UgZG8KKyAgICAgKiBub3QgY3VycmVudGx5IGNhY2hlIHNpbmdsZS1sZXR0ZXIgY2F0ZWdvcmllcyBzdWNoIGFzICJMIiBvcgorICAgICAqIGNvbXBsZW1lbnRzIHN1Y2ggYXMgIl5MdSIgb3IgIl5MIi4gIEl0IHdvdWxkIGJlIGVhc3kgdG8gY2FjaGUKKyAgICAgKiB0aGVzZSBhcyB3ZWxsIGluIGEgaGFzaHRhYmxlIHNob3VsZCB0aGUgbmVlZCBhcmlzZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgYXBwbHlDYXRlZ29yeShTdHJpbmcgY2F0TmFtZSkgeworICAgICAgICBib29sZWFuIGludmVydCA9IChjYXROYW1lLmxlbmd0aCgpID4gMSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICBjYXROYW1lLmNoYXJBdCgwKSA9PSAnXicpOworICAgICAgICBpZiAoaW52ZXJ0KSB7CisgICAgICAgICAgICBjYXROYW1lID0gY2F0TmFtZS5zdWJzdHJpbmcoMSk7CisgICAgICAgIH0KKworICAgICAgICBib29sZWFuIG1hdGNoID0gZmFsc2U7CisKKyAgICAgICAgLy8gQkUgQ0FSRUZVTCBub3QgdG8gbW9kaWZ5IHRoZSByZXR1cm4gdmFsdWUgZnJvbQorICAgICAgICAvLyBnZXRDYXRlZ29yeVNldChpbnQpLgorCisgICAgICAgIC8vIGlmIHdlIGhhdmUgdHdvIGNoYXJhY3RlcnMsIHNlYXJjaCB0aGUgY2F0ZWdvcnkgbWFwIGZvciB0aGF0CisgICAgICAgIC8vIGNvZGUgYW5kIGVpdGhlciBjb25zdHJ1Y3QgYW5kIHJldHVybiBhIFVuaWNvZGVTZXQgZnJvbSB0aGUKKyAgICAgICAgLy8gZGF0YSBpbiB0aGUgY2F0ZWdvcnkgbWFwIG9yIHRocm93IGFuIGV4Y2VwdGlvbgorICAgICAgICBpZiAoY2F0TmFtZS5sZW5ndGgoKSA9PSAyKSB7CisgICAgICAgICAgICBpbnQgaSA9IENBVEVHT1JZX05BTUVTLmluZGV4T2YoY2F0TmFtZSk7CisgICAgICAgICAgICBpZiAoaT49MCAmJiBpJTI9PTApIHsKKyAgICAgICAgICAgICAgICBpIC89IDI7CisgICAgICAgICAgICAgICAgaWYgKGkgIT0gVU5TVVBQT1JURURfQ0FURUdPUlkpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0KGdldENhdGVnb3J5U2V0KGkpKTsKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChjYXROYW1lLmxlbmd0aCgpID09IDEpIHsKKyAgICAgICAgICAgIC8vIGlmIHdlIGhhdmUgb25lIGNoYXJhY3Rlciwgc2VhcmNoIHRoZSBjYXRlZ29yeSBtYXAgZm9yCisgICAgICAgICAgICAvLyBjb2RlcyBiZWdpbm5pbmcgd2l0aCB0aGF0IGxldHRlciwgYW5kIHVuaW9uIHRvZ2V0aGVyCisgICAgICAgICAgICAvLyBhbGwgb2YgdGhlIG1hdGNoaW5nIHNldHMgdGhhdCB3ZSBmaW5kIChvciB0aHJvdyBhbgorICAgICAgICAgICAgLy8gZXhjZXB0aW9uIGlmIHRoZXJlIGFyZSBubyBtYXRjaGVzKQorICAgICAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxDQVRFR09SWV9DT1VOVDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGkgIT0gVU5TVVBQT1JURURfQ0FURUdPUlkgJiYKKyAgICAgICAgICAgICAgICAgICAgQ0FURUdPUllfTkFNRVMuY2hhckF0KDIqaSkgPT0gY2F0TmFtZS5jaGFyQXQoMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkQWxsKGdldENhdGVnb3J5U2V0KGkpKTsKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghbWF0Y2gpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkJhZCBjYXRlZ29yeSIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGludmVydCkgeworICAgICAgICAgICAgY29tcGxlbWVudCgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhbiBpbnZlcnNpb24gbGlzdCBmb3IgdGhlIGdpdmVuIGNhdGVnb3J5LiAgVGhpcyBsaXN0IGlzCisgICAgICogY2FjaGVkIGFuZCByZXR1cm5lZCBhZ2FpbiBpZiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgYWdhaW4gd2l0aAorICAgICAqIHRoZSBzYW1lIHBhcmFtZXRlci4KKyAgICAgKgorICAgICAqIENhbGxlcnMgTVVTVCBOT1QgTU9ESUZZIHRoZSByZXR1cm5lZCBzZXQuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgVW5pY29kZVNldCBnZXRDYXRlZ29yeVNldChpbnQgY2F0KSB7CisgICAgICAgIGlmIChDQVRFR09SWV9DQUNIRVtjYXRdID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIFdhbGsgdGhyb3VnaCBhbGwgVW5pY29kZSBjaGFyYWN0ZXJzLCBub3RpbmcgdGhlIHN0YXJ0CisgICAgICAgICAgICAvLyBhbmQgZW5kIG9mIGVhY2ggcmFuZ2UgZm9yIHdoaWNoIENoYXJhY3Rlci5nZXRUeXBlKGMpCisgICAgICAgICAgICAvLyByZXR1cm5zIHRoZSBnaXZlbiBjYXRlZ29yeSBpbnRlZ2VyLgorICAgICAgICAgICAgVW5pY29kZVNldCBzZXQgPSBuZXcgVW5pY29kZVNldCgpOworICAgICAgICAgICAgaW50IHN0YXJ0ID0gLTE7CisgICAgICAgICAgICBpbnQgZW5kID0gLTI7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8PTB4RkZGRjsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKENoYXJhY3Rlci5nZXRUeXBlKChjaGFyKWkpID09IGNhdCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoKGVuZCsxKSA9PSBpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlbmQgPSBpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQuYWRkKChjaGFyKSBzdGFydCwgKGNoYXIpIGVuZCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCA9IGVuZCA9IGk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3RhcnQgPj0gMCkgeworICAgICAgICAgICAgICAgIHNldC5hZGQoKGNoYXIpIHN0YXJ0LCAoY2hhcikgZW5kKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIENBVEVHT1JZX0NBQ0hFW2NhdF0gPSBzZXQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIENBVEVHT1JZX0NBQ0hFW2NhdF07CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gSW1wbGVtZW50YXRpb246IFV0aWxpdHkgbWV0aG9kcworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgY2hhcmFjdGVyIGFmdGVyIHRoZSBnaXZlbiBwb3NpdGlvbiwgb3IgJ1x1RkZGRScgaWYKKyAgICAgKiB0aGVyZSBpcyBub25lLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgY2hhckFmdGVyKFN0cmluZyBzdHIsIGludCBpKSB7CisgICAgICAgIHJldHVybiAoKCsraSkgPCBzdHIubGVuZ3RoKCkpID8gc3RyLmNoYXJBdChpKSA6ICdcdUZGRkUnOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBlbnN1cmVDYXBhY2l0eShpbnQgbmV3TGVuKSB7CisgICAgICAgIGlmIChuZXdMZW4gPD0gbGlzdC5sZW5ndGgpIHJldHVybjsKKyAgICAgICAgaW50W10gdGVtcCA9IG5ldyBpbnRbbmV3TGVuICsgR1JPV19FWFRSQV07CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkobGlzdCwgMCwgdGVtcCwgMCwgbGVuKTsKKyAgICAgICAgbGlzdCA9IHRlbXA7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGVuc3VyZUJ1ZmZlckNhcGFjaXR5KGludCBuZXdMZW4pIHsKKyAgICAgICAgaWYgKGJ1ZmZlciAhPSBudWxsICYmIG5ld0xlbiA8PSBidWZmZXIubGVuZ3RoKSByZXR1cm47CisgICAgICAgIGJ1ZmZlciA9IG5ldyBpbnRbbmV3TGVuICsgR1JPV19FWFRSQV07CisgICAgfQorCisgICAgLyoqCisgICAgICogQXNzdW1lcyBzdGFydCA8PSBlbmQuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnRbXSByYW5nZShpbnQgc3RhcnQsIGludCBlbmQpIHsKKyAgICAgICAgaWYgKHJhbmdlTGlzdCA9PSBudWxsKSB7CisgICAgICAgICAgICByYW5nZUxpc3QgPSBuZXcgaW50W10geyBzdGFydCwgZW5kKzEsIEhJR0ggfTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJhbmdlTGlzdFswXSA9IHN0YXJ0OworICAgICAgICAgICAgcmFuZ2VMaXN0WzFdID0gZW5kKzE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJhbmdlTGlzdDsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBJbXBsZW1lbnRhdGlvbjogRnVuZGFtZW50YWwgb3BlcmF0aW9ucworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gcG9sYXJpdHkgPSAwLCAzIGlzIG5vcm1hbDogeCB4b3IgeQorICAgIC8vIHBvbGFyaXR5ID0gMSwgMjogeCB4b3IgfnkgPT0geCA9PT0geQorCisgICAgcHJpdmF0ZSBVbmljb2RlU2V0IHhvcihpbnRbXSBvdGhlciwgaW50IG90aGVyTGVuLCBpbnQgcG9sYXJpdHkpIHsKKyAgICAgICAgZW5zdXJlQnVmZmVyQ2FwYWNpdHkobGVuICsgb3RoZXJMZW4pOworICAgICAgICBpbnQgaSA9IDAsIGogPSAwLCBrID0gMDsKKyAgICAgICAgaW50IGEgPSBsaXN0W2krK107CisgICAgICAgIGludCBiOworICAgICAgICBpZiAocG9sYXJpdHkgPT0gMSB8fCBwb2xhcml0eSA9PSAyKSB7CisgICAgICAgICAgICBiID0gTE9XOworICAgICAgICAgICAgaWYgKG90aGVyW2pdID09IExPVykgeyAvLyBza2lwIGJhc2UgaWYgYWxyZWFkeSBMT1cKKyAgICAgICAgICAgICAgICArK2o7CisgICAgICAgICAgICAgICAgYiA9IG90aGVyW2pdOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYiA9IG90aGVyW2orK107CisgICAgICAgIH0KKyAgICAgICAgLy8gc2ltcGxlc3Qgb2YgYWxsIHRoZSByb3V0aW5lcworICAgICAgICAvLyBzb3J0IHRoZSB2YWx1ZXMsIGRpc2NhcmRpbmcgaWRlbnRpY2FscyEKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIGlmIChhIDwgYikgeworICAgICAgICAgICAgICAgIGJ1ZmZlcltrKytdID0gYTsKKyAgICAgICAgICAgICAgICBhID0gbGlzdFtpKytdOworICAgICAgICAgICAgfSBlbHNlIGlmIChiIDwgYSkgeworICAgICAgICAgICAgICAgIGJ1ZmZlcltrKytdID0gYjsKKyAgICAgICAgICAgICAgICBiID0gb3RoZXJbaisrXTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYSAhPSBISUdIKSB7IC8vIGF0IHRoaXMgcG9pbnQsIGEgPT0gYgorICAgICAgICAgICAgICAgIC8vIGRpc2NhcmQgYm90aCB2YWx1ZXMhCisgICAgICAgICAgICAgICAgYSA9IGxpc3RbaSsrXTsKKyAgICAgICAgICAgICAgICBiID0gb3RoZXJbaisrXTsKKyAgICAgICAgICAgIH0gZWxzZSB7IC8vIERPTkUhCisgICAgICAgICAgICAgICAgYnVmZmVyW2srK10gPSBISUdIOworICAgICAgICAgICAgICAgIGxlbiA9IGs7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gc3dhcCBsaXN0IGFuZCBidWZmZXIKKyAgICAgICAgaW50W10gdGVtcCA9IGxpc3Q7CisgICAgICAgIGxpc3QgPSBidWZmZXI7CisgICAgICAgIGJ1ZmZlciA9IHRlbXA7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIC8vIHBvbGFyaXR5ID0gMCBpcyBub3JtYWw6IHggdW5pb24geQorICAgIC8vIHBvbGFyaXR5ID0gMjogeCB1bmlvbiB+eQorICAgIC8vIHBvbGFyaXR5ID0gMTogfnggdW5pb24geQorICAgIC8vIHBvbGFyaXR5ID0gMzogfnggdW5pb24gfnkKKworICAgIHByaXZhdGUgVW5pY29kZVNldCBhZGQoaW50W10gb3RoZXIsIGludCBvdGhlckxlbiwgaW50IHBvbGFyaXR5KSB7CisgICAgICAgIGVuc3VyZUJ1ZmZlckNhcGFjaXR5KGxlbiArIG90aGVyTGVuKTsKKyAgICAgICAgaW50IGkgPSAwLCBqID0gMCwgayA9IDA7CisgICAgICAgIGludCBhID0gbGlzdFtpKytdOworICAgICAgICBpbnQgYiA9IG90aGVyW2orK107CisgICAgICAgIC8vIGNoYW5nZSBmcm9tIHhvciBpcyB0aGF0IHdlIGhhdmUgdG8gY2hlY2sgb3ZlcmxhcHBpbmcgcGFpcnMKKyAgICAgICAgLy8gcG9sYXJpdHkgYml0IDEgbWVhbnMgYSBpcyBzZWNvbmQsIGJpdCAyIG1lYW5zIGIgaXMuCisgICAgICAgIG1haW46CisgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHBvbGFyaXR5KSB7CisgICAgICAgICAgICAgIGNhc2UgMDogLy8gYm90aCBmaXJzdDsgdGFrZSBsb3dlciBpZiB1bmVxdWFsCisgICAgICAgICAgICAgICAgaWYgKGEgPCBiKSB7IC8vIHRha2UgYQorICAgICAgICAgICAgICAgICAgICAvLyBCYWNrIHVwIG92ZXIgb3ZlcmxhcHBpbmcgcmFuZ2VzIGluIGJ1ZmZlcltdCisgICAgICAgICAgICAgICAgICAgIGlmIChrID4gMCAmJiBhIDw9IGJ1ZmZlcltrLTFdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBQaWNrIGxhdHRlciBlbmQgdmFsdWUgaW4gYnVmZmVyW10gdnMuIGxpc3RbXQorICAgICAgICAgICAgICAgICAgICAgICAgYSA9IG1heChsaXN0W2ldLCBidWZmZXJbLS1rXSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBObyBvdmVybGFwCisgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJbaysrXSA9IGE7CisgICAgICAgICAgICAgICAgICAgICAgICBhID0gbGlzdFtpXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpKys7IC8vIENvbW1vbiBpZi9lbHNlIGNvZGUgZmFjdG9yZWQgb3V0CisgICAgICAgICAgICAgICAgICAgIHBvbGFyaXR5IF49IDE7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChiIDwgYSkgeyAvLyB0YWtlIGIKKyAgICAgICAgICAgICAgICAgICAgaWYgKGsgPiAwICYmIGIgPD0gYnVmZmVyW2stMV0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBtYXgob3RoZXJbal0sIGJ1ZmZlclstLWtdKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltrKytdID0gYjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBvdGhlcltqXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBqKys7CisgICAgICAgICAgICAgICAgICAgIHBvbGFyaXR5IF49IDI7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gYSA9PSBiLCB0YWtlIGEsIGRyb3AgYgorICAgICAgICAgICAgICAgICAgICBpZiAoYSA9PSBISUdIKSBicmVhayBtYWluOworICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHN5bW1ldHJpY2FsOyBpdCBkb2Vzbid0IG1hdHRlciBpZgorICAgICAgICAgICAgICAgICAgICAvLyB3ZSBiYWNrdHJhY2sgd2l0aCBhIG9yIGIuIC0gbGl1CisgICAgICAgICAgICAgICAgICAgIGlmIChrID4gMCAmJiBhIDw9IGJ1ZmZlcltrLTFdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhID0gbWF4KGxpc3RbaV0sIGJ1ZmZlclstLWtdKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vIG92ZXJsYXAKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltrKytdID0gYTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBsaXN0W2ldOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgICAgICAgICAgcG9sYXJpdHkgXj0gMTsKKyAgICAgICAgICAgICAgICAgICAgYiA9IG90aGVyW2orK107IHBvbGFyaXR5IF49IDI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDM6IC8vIGJvdGggc2Vjb25kOyB0YWtlIGhpZ2hlciBpZiB1bmVxdWFsLCBhbmQgZHJvcCBvdGhlcgorICAgICAgICAgICAgICAgIGlmIChiIDw9IGEpIHsgLy8gdGFrZSBhCisgICAgICAgICAgICAgICAgICAgIGlmIChhID09IEhJR0gpIGJyZWFrIG1haW47CisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltrKytdID0gYTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyB0YWtlIGIKKyAgICAgICAgICAgICAgICAgICAgaWYgKGIgPT0gSElHSCkgYnJlYWsgbWFpbjsKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyW2srK10gPSBiOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhID0gbGlzdFtpKytdOyBwb2xhcml0eSBePSAxOyAgIC8vIGZhY3RvcmVkIGNvbW1vbiBjb2RlCisgICAgICAgICAgICAgICAgYiA9IG90aGVyW2orK107IHBvbGFyaXR5IF49IDI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMTogLy8gYSBzZWNvbmQsIGIgZmlyc3Q7IGlmIGIgPCBhLCBvdmVybGFwCisgICAgICAgICAgICAgICAgaWYgKGEgPCBiKSB7IC8vIG5vIG92ZXJsYXAsIHRha2UgYQorICAgICAgICAgICAgICAgICAgICBidWZmZXJbaysrXSA9IGE7IGEgPSBsaXN0W2krK107IHBvbGFyaXR5IF49IDE7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChiIDwgYSkgeyAvLyBPVkVSTEFQLCBkcm9wIGIKKyAgICAgICAgICAgICAgICAgICAgYiA9IG90aGVyW2orK107IHBvbGFyaXR5IF49IDI7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gYSA9PSBiLCBkcm9wIGJvdGghCisgICAgICAgICAgICAgICAgICAgIGlmIChhID09IEhJR0gpIGJyZWFrIG1haW47CisgICAgICAgICAgICAgICAgICAgIGEgPSBsaXN0W2krK107IHBvbGFyaXR5IF49IDE7CisgICAgICAgICAgICAgICAgICAgIGIgPSBvdGhlcltqKytdOyBwb2xhcml0eSBePSAyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAyOiAvLyBhIGZpcnN0LCBiIHNlY29uZDsgaWYgYSA8IGIsIG92ZXJsYXAKKyAgICAgICAgICAgICAgICBpZiAoYiA8IGEpIHsgLy8gbm8gb3ZlcmxhcCwgdGFrZSBiCisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltrKytdID0gYjsgYiA9IG90aGVyW2orK107IHBvbGFyaXR5IF49IDI7CisgICAgICAgICAgICAgICAgfSBlbHNlICBpZiAoYSA8IGIpIHsgLy8gT1ZFUkxBUCwgZHJvcCBhCisgICAgICAgICAgICAgICAgICAgIGEgPSBsaXN0W2krK107IHBvbGFyaXR5IF49IDE7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gYSA9PSBiLCBkcm9wIGJvdGghCisgICAgICAgICAgICAgICAgICAgIGlmIChhID09IEhJR0gpIGJyZWFrIG1haW47CisgICAgICAgICAgICAgICAgICAgIGEgPSBsaXN0W2krK107IHBvbGFyaXR5IF49IDE7CisgICAgICAgICAgICAgICAgICAgIGIgPSBvdGhlcltqKytdOyBwb2xhcml0eSBePSAyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBidWZmZXJbaysrXSA9IEhJR0g7ICAgIC8vIHRlcm1pbmF0ZQorICAgICAgICBsZW4gPSBrOworICAgICAgICAvLyBzd2FwIGxpc3QgYW5kIGJ1ZmZlcgorICAgICAgICBpbnRbXSB0ZW1wID0gbGlzdDsKKyAgICAgICAgbGlzdCA9IGJ1ZmZlcjsKKyAgICAgICAgYnVmZmVyID0gdGVtcDsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgLy8gcG9sYXJpdHkgPSAwIGlzIG5vcm1hbDogeCBpbnRlcnNlY3QgeQorICAgIC8vIHBvbGFyaXR5ID0gMjogeCBpbnRlcnNlY3QgfnkgPT0gc2V0LW1pbnVzCisgICAgLy8gcG9sYXJpdHkgPSAxOiB+eCBpbnRlcnNlY3QgeQorICAgIC8vIHBvbGFyaXR5ID0gMzogfnggaW50ZXJzZWN0IH55CisKKyAgICBwcml2YXRlIFVuaWNvZGVTZXQgcmV0YWluKGludFtdIG90aGVyLCBpbnQgb3RoZXJMZW4sIGludCBwb2xhcml0eSkgeworICAgICAgICBlbnN1cmVCdWZmZXJDYXBhY2l0eShsZW4gKyBvdGhlckxlbik7CisgICAgICAgIGludCBpID0gMCwgaiA9IDAsIGsgPSAwOworICAgICAgICBpbnQgYSA9IGxpc3RbaSsrXTsKKyAgICAgICAgaW50IGIgPSBvdGhlcltqKytdOworICAgICAgICAvLyBjaGFuZ2UgZnJvbSB4b3IgaXMgdGhhdCB3ZSBoYXZlIHRvIGNoZWNrIG92ZXJsYXBwaW5nIHBhaXJzCisgICAgICAgIC8vIHBvbGFyaXR5IGJpdCAxIG1lYW5zIGEgaXMgc2Vjb25kLCBiaXQgMiBtZWFucyBiIGlzLgorICAgICAgICBtYWluOgorICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgc3dpdGNoIChwb2xhcml0eSkgeworICAgICAgICAgICAgICBjYXNlIDA6IC8vIGJvdGggZmlyc3Q7IGRyb3AgdGhlIHNtYWxsZXIKKyAgICAgICAgICAgICAgICBpZiAoYSA8IGIpIHsgLy8gZHJvcCBhCisgICAgICAgICAgICAgICAgICAgIGEgPSBsaXN0W2krK107IHBvbGFyaXR5IF49IDE7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChiIDwgYSkgeyAvLyBkcm9wIGIKKyAgICAgICAgICAgICAgICAgICAgYiA9IG90aGVyW2orK107IHBvbGFyaXR5IF49IDI7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsgLy8gYSA9PSBiLCB0YWtlIG9uZSwgZHJvcCBvdGhlcgorICAgICAgICAgICAgICAgICAgICBpZiAoYSA9PSBISUdIKSBicmVhayBtYWluOworICAgICAgICAgICAgICAgICAgICBidWZmZXJbaysrXSA9IGE7IGEgPSBsaXN0W2krK107IHBvbGFyaXR5IF49IDE7CisgICAgICAgICAgICAgICAgICAgIGIgPSBvdGhlcltqKytdOyBwb2xhcml0eSBePSAyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgY2FzZSAzOiAvLyBib3RoIHNlY29uZDsgdGFrZSBsb3dlciBpZiB1bmVxdWFsCisgICAgICAgICAgICAgICAgaWYgKGEgPCBiKSB7IC8vIHRha2UgYQorICAgICAgICAgICAgICAgICAgICBidWZmZXJbaysrXSA9IGE7IGEgPSBsaXN0W2krK107IHBvbGFyaXR5IF49IDE7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChiIDwgYSkgeyAvLyB0YWtlIGIKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyW2srK10gPSBiOyBiID0gb3RoZXJbaisrXTsgcG9sYXJpdHkgXj0gMjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeyAvLyBhID09IGIsIHRha2Ugb25lLCBkcm9wIG90aGVyCisgICAgICAgICAgICAgICAgICAgIGlmIChhID09IEhJR0gpIGJyZWFrIG1haW47CisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcltrKytdID0gYTsgYSA9IGxpc3RbaSsrXTsgcG9sYXJpdHkgXj0gMTsKKyAgICAgICAgICAgICAgICAgICAgYiA9IG90aGVyW2orK107IHBvbGFyaXR5IF49IDI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICBjYXNlIDE6IC8vIGEgc2Vjb25kLCBiIGZpcnN0OworICAgICAgICAgICAgICAgIGlmIChhIDwgYikgeyAvLyBOTyBPVkVSTEFQLCBkcm9wIGEKKyAgICAgICAgICAgICAgICAgICAgYSA9IGxpc3RbaSsrXTsgcG9sYXJpdHkgXj0gMTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGIgPCBhKSB7IC8vIE9WRVJMQVAsIHRha2UgYgorICAgICAgICAgICAgICAgICAgICBidWZmZXJbaysrXSA9IGI7IGIgPSBvdGhlcltqKytdOyBwb2xhcml0eSBePSAyOworICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIGEgPT0gYiwgZHJvcCBib3RoIQorICAgICAgICAgICAgICAgICAgICBpZiAoYSA9PSBISUdIKSBicmVhayBtYWluOworICAgICAgICAgICAgICAgICAgICBhID0gbGlzdFtpKytdOyBwb2xhcml0eSBePSAxOworICAgICAgICAgICAgICAgICAgICBiID0gb3RoZXJbaisrXTsgcG9sYXJpdHkgXj0gMjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIGNhc2UgMjogLy8gYSBmaXJzdCwgYiBzZWNvbmQ7IGlmIGEgPCBiLCBvdmVybGFwCisgICAgICAgICAgICAgICAgaWYgKGIgPCBhKSB7IC8vIG5vIG92ZXJsYXAsIGRyb3AgYgorICAgICAgICAgICAgICAgICAgICBiID0gb3RoZXJbaisrXTsgcG9sYXJpdHkgXj0gMjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgIGlmIChhIDwgYikgeyAvLyBPVkVSTEFQLCB0YWtlIGEKKyAgICAgICAgICAgICAgICAgICAgYnVmZmVyW2srK10gPSBhOyBhID0gbGlzdFtpKytdOyBwb2xhcml0eSBePSAxOworICAgICAgICAgICAgICAgIH0gZWxzZSB7IC8vIGEgPT0gYiwgZHJvcCBib3RoIQorICAgICAgICAgICAgICAgICAgICBpZiAoYSA9PSBISUdIKSBicmVhayBtYWluOworICAgICAgICAgICAgICAgICAgICBhID0gbGlzdFtpKytdOyBwb2xhcml0eSBePSAxOworICAgICAgICAgICAgICAgICAgICBiID0gb3RoZXJbaisrXTsgcG9sYXJpdHkgXj0gMjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnVmZmVyW2srK10gPSBISUdIOyAgICAvLyB0ZXJtaW5hdGUKKyAgICAgICAgbGVuID0gazsKKyAgICAgICAgLy8gc3dhcCBsaXN0IGFuZCBidWZmZXIKKyAgICAgICAgaW50W10gdGVtcCA9IGxpc3Q7CisgICAgICAgIGxpc3QgPSBidWZmZXI7CisgICAgICAgIGJ1ZmZlciA9IHRlbXA7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBtYXgoaW50IGEsIGludCBiKSB7CisgICAgICAgIHJldHVybiAoYSA+IGIpID8gYSA6IGI7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9Vbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvci5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9Vbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjc3NDAzZmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L1VuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yLmphdmEKQEAgLTAsMCArMSwzMzAgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvQXR0aWMvVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wNi8yOCAyMDo0OTo1NCAkIAorICogJFJldmlzaW9uOiAxLjkgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udGV4dDsKK2ltcG9ydCBqYXZhLnV0aWwuKjsKKworLyoqCisgKiBBIHRyYW5zbGl0ZXJhdG9yIHRoYXQgY29udmVydHMgZnJvbSBVbmljb2RlIGNoYXJhY3RlcnMgdG8gCisgKiBoZXhhZGVjaW1hbCBVbmljb2RlIGVzY2FwZSBzZXF1ZW5jZXMuICBJdCBvdXRwdXRzIGEKKyAqIHByZWZpeCBzcGVjaWZpZWQgaW4gdGhlIGNvbnN0cnVjdG9yIGFuZCBvcHRpb25hbGx5IGNvbnZlcnRzIHRoZSBoZXgKKyAqIGRpZ2l0cyB0byB1cHBlcmNhc2UuCisgKgorICogPHA+VGhlIGZvcm1hdCBvZiB0aGUgb3V0cHV0IGlzIHNldCBieSBhIHBhdHRlcm4uICBUaGlzIHBhdHRlcm4KKyAqIGZvbGxvd3MgdGhlIHNhbWUgc3ludGF4IGFzIDxjb2RlPkhleFRvVW5pY29kZVRyYW5zbGl0ZXJhdG9yPC9jb2RlPiwKKyAqIGV4Y2VwdCBpdCBkb2VzIG5vdCBhbGxvdyBtdWx0aXBsZSBzcGVjaWZpY2F0aW9ucy4gIFRoZSBwYXR0ZXJuIHNldHMKKyAqIHRoZSBwcmVmaXggc3RyaW5nLCBzdWZmaXggc3RyaW5nLCBhbmQgbWluaW11bSBhbmQgbWF4aW11bSBkaWdpdAorICogY291bnQuICBUaGVyZSBhcmUgbm8gc2V0dGVycyBvciBnZXR0ZXJzIGZvciB0aGVzZSBhdHRyaWJ1dGVzOyB0aGV5CisgKiBhcmUgc2V0IG9ubHkgdGhyb3VnaCB0aGUgcGF0dGVybi4KKyAqCisgKiA8cD5UaGUgc2V0VXBwZXJjYXNlKCkgYW5kIGlzVXBwZXJjYXNlKCkgbWV0aG9kcyBjb250cm9sIHdoZXRoZXIgJ2EnCisgKiB0aHJvdWdoICdmJyBvciAnQScgdGhyb3VnaCAnRicgYXJlIG91dHB1dCBhcyBoZXggZGlnaXRzLiAgVGhpcyBpcworICogbm90IGNvbnRyb2xsZWQgdGhyb3VnaCB0aGUgcGF0dGVybjsgb25seSB0aHJvdWdoIHRoZSBtZXRob2RzLiAgVGhlCisgKiBkZWZhdWx0IGlzIHVwcGVyY2FzZS4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAdmVyc2lvbiAkUkNTZmlsZTogVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IuamF2YSx2ICQgJFJldmlzaW9uOiAxLjkgJCAkRGF0ZTogMjAwMC8wNi8yOCAyMDo0OTo1NCAkCisgKi8KK3B1YmxpYyBjbGFzcyBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvciBleHRlbmRzIFRyYW5zbGl0ZXJhdG9yIHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAiXHUwMEE5IElCTSBDb3Jwb3JhdGlvbiAxOTk5LiBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICAvKioKKyAgICAgKiBQYWNrYWdlIGFjY2Vzc2libGUgSUQgZm9yIHRoaXMgdHJhbnNsaXRlcmF0b3IuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBfSUQgPSAiVW5pY29kZS1IZXgiOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhcltdIEhFWF9ESUdJVFMgPSB7CisgICAgICAgICcwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLAorICAgICAgICAnOCcsICc5JywgJ2EnLCAnYicsICdjJywgJ2QnLCAnZScsICdmJywKKyAgICAgICAgJzAnLCAnMScsICcyJywgJzMnLCAnNCcsICc1JywgJzYnLCAnNycsCisgICAgICAgICc4JywgJzknLCAnQScsICdCJywgJ0MnLCAnRCcsICdFJywgJ0YnLAorICAgIH07CisKKyAgICAvLyBDaGFyYWN0ZXIgY29uc3RhbnRzIGZvciBzcGVjaWFsIHBhdHRlcm4gY2hhcnMKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIFpFUk8gICAgICA9ICcwJzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIFBPVU5EICAgICA9ICcjJzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjaGFyIEJBQ0tTTEFTSCA9ICdcXCc7CisKKyAgICAvKioKKyAgICAgKiBUaGUgcGF0dGVybiBzZXQgYnkgYXBwbHlQYXR0ZXJuKCkgYW5kIHJldHVybmVkIGJ5IHRvUGF0dGVybigpLgorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nIHBhdHRlcm47CisKKyAgICAvKioKKyAgICAgKiBUaGUgc3RyaW5nIHByZWNlZGluZyB0aGUgaGV4IGRpZ2l0cywgcGFyc2VkIGZyb20gdGhlIHBhdHRlcm4uCisgICAgICovCisgICAgcHJpdmF0ZSBTdHJpbmcgcHJlZml4OworCisgICAgLyoqCisgICAgICogVGhlIHN0cmluZyBmb2xsb3dpbmcgdGhlIGhleCBkaWdpdHMsIHBhcnNlZCBmcm9tIHRoZSBwYXR0ZXJuLgorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nIHN1ZmZpeDsKKworICAgIC8qKgorICAgICAqIFRoZSBtaW5pbXVtIG51bWJlciBvZiBoZXggZGlnaXRzIHRvIG91dHB1dCwgYmV0d2VlbiAxIGFuZCA0LAorICAgICAqIGluY2x1c2l2ZS4gIFBhcnNlZCBmcm9tIHRoZSBwYXR0ZXJuLgorICAgICAqLworICAgIHByaXZhdGUgaW50IG1pbkRpZ2l0czsKKworICAgIC8qKgorICAgICAqIElmIHRydWUsIG91dHB1dCB1cHBlcmNhc2UgaGV4IGRpZ2l0czsgb3RoZXJ3aXNlIG91dHB1dAorICAgICAqIGxvd2VyY2FzZS4gIFNldCBieSBzZXRVcHBlcmNhc2UoKSBhbmQgcmV0dXJuZWQgYnkgaXNVcHBlcmNhc2UoKS4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gdXBwZXJjYXNlOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIHRyYW5zbGl0ZXJhdG9yLgorICAgICAqIEBwYXJhbSBwYXR0ZXJuIFRoZSBwYXR0ZXJuIGZvciB0aGlzIHRyYW5zbGl0ZXJhdG9yLiAgU2VlCisgICAgICogYXBwbHlQYXR0ZXJuKCkgZm9yIHBhdHRlcm4gc3ludGF4LgorICAgICAqIEBwYXJhbSB1cHBlcmNhc2UgaWYgdHJ1ZSwgdGhlIGZvdXIgaGV4IGRpZ2l0cyB3aWxsIGJlCisgICAgICogY29udmVydGVkIHRvIHVwcGVyY2FzZTsgb3RoZXJ3aXNlIHRoZXkgd2lsbCBiZSBsb3dlcmNhc2UuCisgICAgICogSWdub3JlZCBpZiBkaXJlY3Rpb24gaXMgSEVYX1VOSUNPREUuCisgICAgICogQHBhcmFtIGZpbHRlciB0aGUgZmlsdGVyIGZvciB0aGlzIHRyYW5zbGl0ZXJhdG9yLCBvcgorICAgICAqIG51bGwgaWYgbm9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgVW5pY29kZVRvSGV4VHJhbnNsaXRlcmF0b3IoU3RyaW5nIHBhdHRlcm4sIGJvb2xlYW4gdXBwZXJjYXNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVbmljb2RlRmlsdGVyIGZpbHRlcikgeworICAgICAgICBzdXBlcihfSUQsIGZpbHRlcik7CisgICAgICAgIHRoaXMudXBwZXJjYXNlID0gdXBwZXJjYXNlOworICAgICAgICBhcHBseVBhdHRlcm4ocGF0dGVybik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhbiB1cHBlcmNhc2UgdHJhbnNsaXRlcmF0b3Igd2l0aCBubyBmaWx0ZXIuCisgICAgICogQHBhcmFtIHBhdHRlcm4gVGhlIHBhdHRlcm4gZm9yIHRoaXMgdHJhbnNsaXRlcmF0b3IuICBTZWUKKyAgICAgKiBhcHBseVBhdHRlcm4oKSBmb3IgcGF0dGVybiBzeW50YXguCisgICAgICovCisgICAgcHVibGljIFVuaWNvZGVUb0hleFRyYW5zbGl0ZXJhdG9yKFN0cmluZyBwYXR0ZXJuKSB7CisgICAgICAgIHRoaXMocGF0dGVybiwgdHJ1ZSwgbnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIHRyYW5zbGl0ZXJhdG9yIHdpdGggdGhlIGRlZmF1bHQgcHJlZml4ICImIzA5Mjt1IgorICAgICAqIHRoYXQgb3V0cHV0cyBmb3VyIHVwcGVyY2FzZSBoZXggZGlnaXRzLgorICAgICAqLworICAgIHB1YmxpYyBVbmljb2RlVG9IZXhUcmFuc2xpdGVyYXRvcigpIHsKKyAgICAgICAgc3VwZXIoX0lELCBudWxsKTsKKyAgICAgICAgcGF0dGVybiA9ICJcXFxcdTAwMDAiOworICAgICAgICBwcmVmaXggPSAiXFx1IjsKKyAgICAgICAgc3VmZml4ID0gIiI7CisgICAgICAgIG1pbkRpZ2l0cyA9IDQ7CisgICAgICAgIHVwcGVyY2FzZSA9IHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IHRoZSBwYXR0ZXJuIHJlY29nbml6ZWQgYnkgdGhpcyB0cmFuc2xpdGVyYXRvci4gIFRoZSBwYXR0ZXJuCisgICAgICogbXVzdCBjb250YWluIHplcm8gb3IgbW9yZSBwcmVmaXggY2hhcmFjdGVycywgb25lIG9yIG1vcmUgZGlnaXQKKyAgICAgKiBjaGFyYWN0ZXJzLCBhbmQgemVybyBvciBtb3JlIHN1ZmZpeCBjaGFyYWN0ZXJzLiAgVGhlIGRpZ2l0CisgICAgICogY2hhcmFjdGVycyBpbmRpY2F0ZXMgb3B0aW9uYWwgZGlnaXRzICgnIycpIGZvbGxvd2VkIGJ5IHJlcXVpcmVkCisgICAgICogZGlnaXRzICgnMCcpLiAgVGhlIHRvdGFsIG51bWJlciBvZiBkaWdpdHMgY2Fubm90IGV4Y2VlZCA0LCBhbmQKKyAgICAgKiBtdXN0IGJlIGF0IGxlYXN0IDEgcmVxdWlyZWQgZGlnaXQuICBVc2UgYSBiYWNrc2xhc2ggKCdcXCcpIHRvCisgICAgICogZXNjYXBlIGFueSBvZiB0aGUgc3BlY2lhbCBjaGFyYWN0ZXJzLiAgQW4gZW1wdHkgcGF0dGVybiBpcyBub3QKKyAgICAgKiBhbGxvd2VkLgorICAgICAqCisgICAgICogPHA+RXhhbXBsZTogIlUrMDAwMCIgc3BlY2lmaWVzIGEgcHJlZml4IG9mICJVKyIsIGV4YWN0bHkgZm91cgorICAgICAqIGRpZ2l0cywgYW5kIG5vIHN1ZmZpeC4gICI8IyMjMD4iIGhhcyBhIHByZWZpeCBvZiAiPCIsIGJldHdlZW4KKyAgICAgKiBvbmUgYW5kIGZvdXIgZGlnaXRzLCBhbmQgYSBzdWZmaXggb2YgIj4iLgorICAgICAqCisgICAgICogPHA+PHByZT4KKyAgICAgKiBwYXR0ZXJuIDo9IHByZWZpeC1jaGFyKiBkaWdpdC1zcGVjIHN1ZmZpeC1jaGFyKgorICAgICAqIGRpZ2l0LXNwZWMgOj0gJyMnKiAnMCcrCisgICAgICogcHJlZml4LWNoYXIgOj0gW15zcGVjaWFsLWNoYXJdIHwgJ1xcJyBzcGVjaWFsLWNoYXIKKyAgICAgKiBzdWZmaXgtY2hhciA6PSBbXnNwZWNpYWwtY2hhcl0gfCAnXFwnIHNwZWNpYWwtY2hhcgorICAgICAqIHNwZWNpYWwtY2hhciA6PSAnOycgfCAnMCcgfCAnIycgfCAnXFwnCisgICAgICogPC9wcmU+CisgICAgICoKKyAgICAgKiA8cD5MaW1pdGF0aW9uczogVGhlcmUgaXMgbm8gd2F5IHRvIHNldCB0aGUgdXBwZXJjYXNlIGF0dHJpYnV0ZQorICAgICAqIGluIHRoZSBwYXR0ZXJuLiAgKGFwcGx5UGF0dGVybigpIGRvZXMgbm90IGFsdGVyIHRoZSB1cHBlcmNhc2UKKyAgICAgKiBhdHRyaWJ1dGUuKQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGFwcGx5UGF0dGVybihTdHJpbmcgdGhlUGF0dGVybikgeworICAgICAgICBTdHJpbmdCdWZmZXIgcHJlZml4QnVmID0gbnVsbDsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHN1ZmZpeEJ1ZiA9IG51bGw7CisgICAgICAgIGludCBtaW5EaWdpdHMgPSAwOworICAgICAgICBpbnQgbWF4RGlnaXRzID0gMDsKKworICAgICAgICAvKiBUaGUgbW9kZSBzcGVjaWZpZXMgd2hlcmUgd2UgYXJlIGluIGVhY2ggc3BlYy4KKyAgICAgICAgICogbW9kZSAwID0gaW4gcHJlZml4CisgICAgICAgICAqIG1vZGUgMSA9IGluIG9wdGlvbmFsIGRpZ2l0cyAoIykKKyAgICAgICAgICogbW9kZSAyID0gaW4gcmVxdWlyZWQgZGlnaXRzICgwKQorICAgICAgICAgKiBtb2RlIDMgPSBpbiBzdWZmaXgKKyAgICAgICAgICovCisgICAgICAgIGludCBtb2RlID0gMDsKKworICAgICAgICBmb3IgKGludCBpPTA7IGk8dGhlUGF0dGVybi5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgICAgICBjaGFyIGMgPSB0aGVQYXR0ZXJuLmNoYXJBdChpKTsKKyAgICAgICAgICAgIGJvb2xlYW4gaXNMaXRlcmFsID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoYyA9PSBCQUNLU0xBU0gpIHsKKyAgICAgICAgICAgICAgICBpZiAoKGkrMSk8dGhlUGF0dGVybi5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBpc0xpdGVyYWwgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBjID0gdGhlUGF0dGVybi5jaGFyQXQoKytpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBUcmFpbGluZyAnXFwnCisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRyYWlsaW5nICdcXCciKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghaXNMaXRlcmFsKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChjKSB7CisgICAgICAgICAgICAgICAgY2FzZSBQT1VORDoKKyAgICAgICAgICAgICAgICAgICAgLy8gU2VlaW5nIGEgJyMnIG1vdmVzIHVzIGZyb20gbW9kZSAwIChwcmVmaXgpIHRvIG1vZGUgMQorICAgICAgICAgICAgICAgICAgICAvLyAob3B0aW9uYWwgZGlnaXRzKS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1vZGUgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgKyttb2RlOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1vZGUgIT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gVW5xdW90ZWQgJyMnCisgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJVbnF1b3RlZCAnIyciKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICArK21heERpZ2l0czsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBaRVJPOgorICAgICAgICAgICAgICAgICAgICAvLyBTZWVpbmcgYSAnMCcgbW92ZXMgdXMgdG8gbW9kZSAyIChyZXF1aXJlZCBkaWdpdHMpCisgICAgICAgICAgICAgICAgICAgIGlmIChtb2RlIDwgMikgeworICAgICAgICAgICAgICAgICAgICAgICAgbW9kZSA9IDI7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobW9kZSAhPSAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBVbnF1b3RlZCAnMCcKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlVucXVvdGVkICcwJyIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICsrbWluRGlnaXRzOworICAgICAgICAgICAgICAgICAgICArK21heERpZ2l0czsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgaXNMaXRlcmFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNMaXRlcmFsKSB7CisgICAgICAgICAgICAgICAgaWYgKG1vZGUgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBpZiAocHJlZml4QnVmID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeEJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwcmVmaXhCdWYuYXBwZW5kKGMpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEFueSBsaXRlcmFsIG91dHNpZGUgdGhlIHByZWZpeCBtb3ZlcyB1cyBpbnRvIG1vZGUgMworICAgICAgICAgICAgICAgICAgICAvLyAoc3VmZml4KQorICAgICAgICAgICAgICAgICAgICBtb2RlID0gMzsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN1ZmZpeEJ1ZiA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdWZmaXhCdWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc3VmZml4QnVmLmFwcGVuZChjKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobWluRGlnaXRzIDwgMSB8fCBtYXhEaWdpdHMgPiA0KSB7CisgICAgICAgICAgICAvLyBJbnZhbGlkIG1pbi9tYXggZGlnaXQgY291bnQKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgbWluL21heCBkaWdpdCBjb3VudCIpOworICAgICAgICB9CisKKyAgICAgICAgcGF0dGVybiA9IHRoZVBhdHRlcm47CisgICAgICAgIHByZWZpeCA9IChwcmVmaXhCdWYgPT0gbnVsbCkgPyAiIiA6IHByZWZpeEJ1Zi50b1N0cmluZygpOworICAgICAgICBzdWZmaXggPSAoc3VmZml4QnVmID09IG51bGwpID8gIiIgOiBzdWZmaXhCdWYudG9TdHJpbmcoKTsKKyAgICAgICAgdGhpcy5taW5EaWdpdHMgPSBtaW5EaWdpdHM7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoaXMgdHJhbnNsaXRlcmF0b3IncyBwYXR0ZXJuLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9QYXR0ZXJuKCkgeworICAgICAgICByZXR1cm4gcGF0dGVybjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBzdHJpbmcgdGhhdCBwcmVjZWRlcyB0aGUgZm91ciBoZXggZGlnaXRzLgorICAgICAqIEByZXR1cm4gcHJlZml4IHN0cmluZworICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0UHJlZml4KCkgeworICAgICAgICByZXR1cm4gcHJlZml4OworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHN0cmluZyB0aGF0IHByZWNlZGVzIHRoZSBmb3VyIGhleCBkaWdpdHMuCisgICAgICoKKyAgICAgKiA8cD5DYWxsZXJzIG11c3QgdGFrZSBjYXJlIGlmIGEgdHJhbnNsaXRlcmF0b3IgaXMgaW4gdXNlIGJ5CisgICAgICogbXVsdGlwbGUgdGhyZWFkcy4gIFRoZSBwcmVmaXggc2hvdWxkIG5vdCBiZSBjaGFuZ2VkIGJ5IG9uZQorICAgICAqIHRocmVhZCB3aGlsZSBhbm90aGVyIHRocmVhZCBtYXkgYmUgdHJhbnNsaXRlcmF0aW5nLgorICAgICAqIEBwYXJhbSBwcmVmaXggcHJlZml4IHN0cmluZworICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFByZWZpeChTdHJpbmcgcHJlZml4KSB7CisgICAgICAgIHRoaXMucHJlZml4ID0gcHJlZml4OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHRyYW5zbGl0ZXJhdG9yIG91dHB1dHMgdXBwZXJjYXNlIGhleCBkaWdpdHMuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNVcHBlcmNhc2UoKSB7CisgICAgICAgIHJldHVybiB1cHBlcmNhc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyBpZiB0aGlzIHRyYW5zbGl0ZXJhdG9yIG91dHB1dHMgdXBwZXJjYXNlIGhleCBkaWdpdHMuCisgICAgICoKKyAgICAgKiA8cD5DYWxsZXJzIG11c3QgdGFrZSBjYXJlIGlmIGEgdHJhbnNsaXRlcmF0b3IgaXMgaW4gdXNlIGJ5CisgICAgICogbXVsdGlwbGUgdGhyZWFkcy4gIFRoZSB1cHBlcmNhc2UgbW9kZSBzaG91bGQgbm90IGJlIGNoYW5nZWQgYnkKKyAgICAgKiBvbmUgdGhyZWFkIHdoaWxlIGFub3RoZXIgdGhyZWFkIG1heSBiZSB0cmFuc2xpdGVyYXRpbmcuCisgICAgICogQHBhcmFtIG91dHB1dFVwcGVyY2FzZSBpZiB0cnVlLCB0aGVuIHRoaXMgdHJhbnNsaXRlcmF0b3IKKyAgICAgKiBvdXRwdXRzIHVwcGVyY2FzZSBoZXggZGlnaXRzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFVwcGVyY2FzZShib29sZWFuIG91dHB1dFVwcGVyY2FzZSkgeworICAgICAgICB1cHBlcmNhc2UgPSBvdXRwdXRVcHBlcmNhc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW1wbGVtZW50cyB7QGxpbmsgVHJhbnNsaXRlcmF0b3IjaGFuZGxlVHJhbnNsaXRlcmF0ZX0uCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlVHJhbnNsaXRlcmF0ZShSZXBsYWNlYWJsZSB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb24gb2Zmc2V0cywgYm9vbGVhbiBpbmNyZW1lbnRhbCkgeworICAgICAgICAvKioKKyAgICAgICAgICogUGVyZm9ybXMgdHJhbnNsaXRlcmF0aW9uIGNoYW5naW5nIGFsbCBjaGFyYWN0ZXJzIHRvCisgICAgICAgICAqIFVuaWNvZGUgaGV4YWRlY2ltYWwgZXNjYXBlcy4gIEZvciBleGFtcGxlLCAnQCcgLT4gIlUrMDA0MCIsCisgICAgICAgICAqIGFzc3VtaW5nIHRoZSBwcmVmaXggaXMgIlUrIi4gCisgICAgICAgICAqLworICAgICAgICBpbnQgY3Vyc29yID0gb2Zmc2V0cy5zdGFydDsKKyAgICAgICAgaW50IGxpbWl0ID0gb2Zmc2V0cy5saW1pdDsKKworICAgICAgICBVbmljb2RlRmlsdGVyIGZpbHRlciA9IGdldEZpbHRlcigpOworICAgICAgICBTdHJpbmdCdWZmZXIgaGV4ID0gbmV3IFN0cmluZ0J1ZmZlcihwcmVmaXgpOworICAgICAgICBpbnQgcHJlZml4TGVuID0gcHJlZml4Lmxlbmd0aCgpOworCisgICAgICAgIHdoaWxlIChjdXJzb3IgPCBsaW1pdCkgeworICAgICAgICAgICAgY2hhciBjID0gdGV4dC5jaGFyQXQoY3Vyc29yKTsKKyAgICAgICAgICAgIGlmIChmaWx0ZXIgIT0gbnVsbCAmJiAhZmlsdGVyLmNvbnRhaW5zKGMpKSB7CisgICAgICAgICAgICAgICAgKytjdXJzb3I7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGhleC5zZXRMZW5ndGgocHJlZml4TGVuKTsKKyAgICAgICAgICAgIGJvb2xlYW4gc2hvd1Jlc3QgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MzsgaT49MDsgLS1pKSB7CisgICAgICAgICAgICAgICAgaW50IGQgPSAoYyA+PiAoaSo0KSkgJiAweEY7CisgICAgICAgICAgICAgICAgaWYgKHNob3dSZXN0IHx8IChkICE9IDApIHx8IG1pbkRpZ2l0cyA+IGkpIHsKKyAgICAgICAgICAgICAgICAgICAgaGV4LmFwcGVuZChIRVhfRElHSVRTW3VwcGVyY2FzZSA/IChkfDE2KSA6IGRdKTsKKyAgICAgICAgICAgICAgICAgICAgc2hvd1Jlc3QgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGhleC5hcHBlbmQoc3VmZml4KTsKKworICAgICAgICAgICAgdGV4dC5yZXBsYWNlKGN1cnNvciwgY3Vyc29yKzEsIGhleC50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGludCBsZW4gPSBoZXgubGVuZ3RoKCk7CisgICAgICAgICAgICBjdXJzb3IgKz0gbGVuOyAvLyBBZHZhbmNlIGN1cnNvciBieSAxIGFuZCBhZGp1c3QgZm9yIG5ldyB0ZXh0CisgICAgICAgICAgICAtLWxlbjsKKyAgICAgICAgICAgIGxpbWl0ICs9IGxlbjsKKyAgICAgICAgfQorCisgICAgICAgIG9mZnNldHMuY29udGV4dExpbWl0ICs9IGxpbWl0IC0gb2Zmc2V0cy5saW1pdDsKKyAgICAgICAgb2Zmc2V0cy5saW1pdCA9IGxpbWl0OworICAgICAgICBvZmZzZXRzLnN0YXJ0ID0gY3Vyc29yOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvY29tcG9uZW50cy9BcHBsZXRGcmFtZS5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9jb21wb25lbnRzL0FwcGxldEZyYW1lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTk5N2FjOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvY29tcG9uZW50cy9BcHBsZXRGcmFtZS5qYXZhCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L2NvbXBvbmVudHMvQXR0aWMvQXBwbGV0RnJhbWUuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMS8wMi8wNSAxOToyNDo0NyAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udGV4dC5jb21wb25lbnRzOworaW1wb3J0IGphdmEuYXBwbGV0Lio7CitpbXBvcnQgamF2YS5uZXQuVVJMOworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS5hd3QuKjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC4qOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworLyoqCisgKiA8cD5BIEZyYW1lIHRoYXQgcnVucyBhbiBBcHBsZXQgd2l0aGluIGl0c2VsZiwgbWFraW5nIGl0IHBvc3NpYmxlCisgKiBmb3IgYW4gYXBwbGV0IHRvIHJ1biBhcyBhbiBhcHBsaWNhdGlvbi4gIFVzYWdlOgorICoKKyAqIDxwcmU+CisgKiBwdWJsaWMgY2xhc3MgTXlBcHBsZXQgZXh0ZW5kcyBBcHBsZXQgeworICogICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdzW10pIHsKKyAqICAgICAgICAgTXlBcHBsZXQgYXBwbGV0ID0gbmV3IE15QXBwbGV0KCk7CisgKiAgICAgICAgIG5ldyBBcHBsZXRGcmFtZSgiTXkgQXBwbGV0IFJ1bm5pbmcgQXMgQW4gQXBwIiwgYXBwbGV0LCA2NDAsIDQ4MCk7CisgKiAgICAgfQorICogICAgIC4uLgorICogfQorICogPHByZT4KKyAqCisgKiA8cD5Db3B5cmlnaHQgJmNvcHk7IElCTSBDb3Jwb3JhdGlvbiAxOTk5LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKiBAdmVyc2lvbiAkUkNTZmlsZTogQXBwbGV0RnJhbWUuamF2YSx2ICQgJFJldmlzaW9uOiAxLjMgJCAkRGF0ZTogMjAwMS8wMi8wNSAxOToyNDo0NyAkCisgKi8KK3B1YmxpYyBjbGFzcyBBcHBsZXRGcmFtZSBleHRlbmRzIEZyYW1lIGltcGxlbWVudHMgQXBwbGV0U3R1YiwgQXBwbGV0Q29udGV4dCB7CisKKyAgICBBcHBsZXQgYXBwbGV0OworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICJcdTAwQTkgSUJNIENvcnBvcmF0aW9uIDE5OTkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKyAgICAKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBGcmFtZSBydW5uaW5nIHRoZSBnaXZlbiBBcHBsZXQgd2l0aCB0aGUgZGVmYXVsdCBzaXplCisgICAgICogb2YgNjQwIGJ5IDQ4MC4KKyAgICAgKiBXaGVuIHRoZSBGcmFtZSBpcyBjbG9zZWQsIHRoZSBhcHBsZXQncyBzdG9wKCkgbWV0aG9kIGlzIGNhbGxlZCwKKyAgICAgKiB0aGUgRnJhbWUgaXMgZGlzcG9zZSgpZCBvZiwgYW5kIFN5c3RlbS5leGl0KDApIGlzIGNhbGxlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBuYW1lIHRoZSBGcmFtZSB0aXRsZQorICAgICAqIEBwYXJhbSBhcHBsZXQgdGhlIGFwcGxldCB0byBiZSBydW4KKyAgICAgKi8KKyAgICBwdWJsaWMgQXBwbGV0RnJhbWUoU3RyaW5nIG5hbWUsIEFwcGxldCBhcHBsZXQpIHsKKyAgICAgICAgdGhpcyhuYW1lLCBhcHBsZXQsIDY0MCwgNDgwKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBGcmFtZSBydW5uaW5nIHRoZSBnaXZlbiBBcHBsZXQgd2l0aCB0aGUgZ2l2ZW4gc2l6ZS4KKyAgICAgKiBXaGVuIHRoZSBGcmFtZSBpcyBjbG9zZWQsIHRoZSBhcHBsZXQncyBzdG9wKCkgbWV0aG9kIGlzIGNhbGxlZCwKKyAgICAgKiB0aGUgRnJhbWUgaXMgZGlzcG9zZSgpZCBvZiwgYW5kIFN5c3RlbS5leGl0KDApIGlzIGNhbGxlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBuYW1lIHRoZSBGcmFtZSB0aXRsZQorICAgICAqIEBwYXJhbSBhcHBsZXQgdGhlIGFwcGxldCB0byBiZSBydW4KKyAgICAgKiBAcGFyYW0gd2lkdGggd2lkdGggb2YgdGhlIEZyYW1lCisgICAgICogQHBhcmFtIGhlaWdodCBoZWlnaHQgb2YgdGhlIEZyYW1lCisgICAgICovCisgICAgcHVibGljIEFwcGxldEZyYW1lKFN0cmluZyBuYW1lLCBBcHBsZXQgYXBwbGV0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsKKyAgICAgICAgc3VwZXIobmFtZSk7CisgICAgICAgIHRoaXMuYXBwbGV0ID0gYXBwbGV0OworICAgICAgICBhcHBsZXQuc2V0U3R1Yih0aGlzKTsKKworICAgICAgICByZXNpemUod2lkdGgsIGhlaWdodCk7CisgICAgICAgIGFkZCgiQ2VudGVyIiwgYXBwbGV0KTsKKyAgICAgICAgc2hvdygpOworICAgICAgICBhZGRXaW5kb3dMaXN0ZW5lcihuZXcgV2luZG93QWRhcHRlcigpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHdpbmRvd0Nsb3NpbmcoV2luZG93RXZlbnQgZSkgeworICAgICAgICAgICAgICAgIEFwcGxldEZyYW1lLnRoaXMuYXBwbGV0LnN0b3AoKTsKKyAgICAgICAgICAgICAgICBkaXNwb3NlKCk7CisgICAgICAgICAgICAgICAgU3lzdGVtLmV4aXQoMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0pOworCisgICAgICAgIGFwcGxldC5pbml0KCk7CisgICAgICAgIGFwcGxldC5zdGFydCgpOworICAgIH0KKworICAgIC8vIEFwcGxldFN0dWIgQVBJCisgICAgcHVibGljIHZvaWQgYXBwbGV0UmVzaXplKGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCkgeworICAgICAgICByZXNpemUod2lkdGgsIGhlaWdodCk7CisgICAgfQorCisgICAgcHVibGljIEFwcGxldENvbnRleHQgZ2V0QXBwbGV0Q29udGV4dCgpIHsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgcHVibGljIFVSTCBnZXRDb2RlQmFzZSgpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHVibGljIFVSTCBnZXREb2N1bWVudEJhc2UoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgU3RyaW5nIGdldFBhcmFtZXRlcihTdHJpbmcgbmFtZSkgeworICAgICAgICByZXR1cm4gIlBBUkFNRVRFUiI7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNBY3RpdmUoKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIEFwcGxldENvbnRleHQgQVBJCisgICAgcHVibGljIEFwcGxldCBnZXRBcHBsZXQoU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgcmV0dXJuIGFwcGxldDsKKyAgICB9CisKKyAgICBwdWJsaWMgRW51bWVyYXRpb24gZ2V0QXBwbGV0cygpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHVibGljIEF1ZGlvQ2xpcCBnZXRBdWRpb0NsaXAoVVJMIHVybCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgSW1hZ2UgZ2V0SW1hZ2UoVVJMIHVybCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzaG93RG9jdW1lbnQoVVJMIHVybCkge30KKyAgICBwdWJsaWMgdm9pZCBzaG93RG9jdW1lbnQoVVJMIHVybCwgU3RyaW5nIHRhcmdldCkge30KKworICAgIHB1YmxpYyB2b2lkIHNob3dTdGF0dXMoU3RyaW5nIHN0YXR1cykgeworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oc3RhdHVzKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgc2V0U3RyZWFtKFN0cmluZyBrZXksIElucHV0U3RyZWFtIHN0cmVhbSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICB9CisgICAgCisgICAgcHVibGljIElucHV0U3RyZWFtIGdldFN0cmVhbShTdHJpbmcga2V5KSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgSXRlcmF0b3IgZ2V0U3RyZWFtS2V5cygpIHsKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9jb21wb25lbnRzL0R1bWJUZXh0Q29tcG9uZW50LmphdmEgYi9zcmMvY29tL2libS90ZXh0L2NvbXBvbmVudHMvRHVtYlRleHRDb21wb25lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hMTJmMWRiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9jb21wb25lbnRzL0R1bWJUZXh0Q29tcG9uZW50LmphdmEKQEAgLTAsMCArMSw3MjAgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvY29tcG9uZW50cy9BdHRpYy9EdW1iVGV4dENvbXBvbmVudC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDA0OjA3OjI2ICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXh0LmNvbXBvbmVudHM7CitpbXBvcnQgamF2YS5hd3QuKjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC4qOworaW1wb3J0IGphdmEudGV4dC4qOworaW1wb3J0IGphdmEuYXd0LmRhdGF0cmFuc2Zlci4qOworCisvLyBMSVU6IENoYW5nZWQgZnJvbSBmaW5hbCB0byBub24tZmluYWwKK3B1YmxpYyBjbGFzcyBEdW1iVGV4dENvbXBvbmVudCBleHRlbmRzIENhbnZhcworICBpbXBsZW1lbnRzIEtleUxpc3RlbmVyLCBNb3VzZUxpc3RlbmVyLCBNb3VzZU1vdGlvbkxpc3RlbmVyLCBGb2N1c0xpc3RlbmVyCisgIHsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodCA9CisgICAgICAiQ29weXJpZ2h0IFx1MDBBOSAxOTk4LCBNYXJrIERhdmlzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgc3RhdGljIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKKworICAgIHByaXZhdGUgU3RyaW5nIGNvbnRlbnRzID0gIiI7CisgICAgcHJpdmF0ZSBTZWxlY3Rpb24gc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbigpOworICAgIHByaXZhdGUgYm9vbGVhbiBlZGl0YWJsZSA9IHRydWU7CisKKyAgICBwcml2YXRlIHRyYW5zaWVudCBTZWxlY3Rpb24gdGVtcFNlbGVjdGlvbiA9IG5ldyBTZWxlY3Rpb24oKTsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBib29sZWFuIGZvY3VzOworICAgIHByaXZhdGUgdHJhbnNpZW50IEJyZWFrSXRlcmF0b3IgbGluZUJyZWFrZXIgPSBCcmVha0l0ZXJhdG9yLmdldExpbmVJbnN0YW5jZSgpOworICAgIHByaXZhdGUgdHJhbnNpZW50IEJyZWFrSXRlcmF0b3Igd29yZEJyZWFrZXIgPSBCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZSgpOworICAgIHByaXZhdGUgdHJhbnNpZW50IEJyZWFrSXRlcmF0b3IgY2hhckJyZWFrZXIgPSBCcmVha0l0ZXJhdG9yLmdldENoYXJhY3Rlckluc3RhbmNlKCk7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgaW50IGxpbmVBc2NlbnQ7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgaW50IGxpbmVIZWlnaHQ7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgaW50IGxpbmVMZWFkaW5nOworICAgIHByaXZhdGUgdHJhbnNpZW50IGludCBsYXN0SGVpZ2h0ID0gMTA7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgaW50IGxhc3RXaWR0aCA9IDUwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNQVhfTElORVMgPSAyMDA7IC8vIExJVTogVXNlIHN5bWJvbGljIG5hbWUKKyAgICBwcml2YXRlIHRyYW5zaWVudCBpbnRbXSBsaW5lU3RhcnRzID0gbmV3IGludFtNQVhfTElORVNdOyAvLyBMSVUKKyAgICBwcml2YXRlIHRyYW5zaWVudCBpbnQgbGluZUNvdW50ID0gMTsKKworICAgIHByaXZhdGUgdHJhbnNpZW50IGJvb2xlYW4gdmFsaWQgPSBmYWxzZTsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBGb250TWV0cmljcyBmbTsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBib29sZWFuIHJlZG9MaW5lcyA9IHRydWU7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgYm9vbGVhbiBkb3VibGVDbGljayA9IGZhbHNlOworICAgIHByaXZhdGUgdHJhbnNpZW50IFRleHRMaXN0ZW5lciB0ZXh0TGlzdGVuZXI7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgQWN0aW9uTGlzdGVuZXIgc2VsZWN0aW9uTGlzdGVuZXI7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgSW1hZ2UgY2FjaGVJbWFnZTsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBEaW1lbnNpb24gbXlTaXplOworICAgIHByaXZhdGUgdHJhbnNpZW50IGludCB4SW5zZXQgPSA1OworICAgIHByaXZhdGUgdHJhbnNpZW50IGludCB5SW5zZXQgPSA1OworICAgIHByaXZhdGUgdHJhbnNpZW50IFBvaW50IHN0YXJ0UG9pbnQgPSBuZXcgUG9pbnQoKTsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBQb2ludCBlbmRQb2ludCA9IG5ldyBQb2ludCgpOworICAgIHByaXZhdGUgdHJhbnNpZW50IFBvaW50IGNhcmV0UG9pbnQgPSBuZXcgUG9pbnQoKTsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBzdGF0aWMgU3RyaW5nIGNsaXBCb2FyZDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgQ1IgPSAnXDAxNSc7IC8vIExJVQorCisgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIHB1YmxpYyBEdW1iVGV4dENvbXBvbmVudCgpIHsKKyAgICAgICAgYWRkTW91c2VMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgYWRkTW91c2VNb3Rpb25MaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgYWRkS2V5TGlzdGVuZXIodGhpcyk7CisgICAgICAgIGFkZEZvY3VzTGlzdGVuZXIodGhpcyk7CisgICAgICAgIHNldEN1cnNvcihDdXJzb3IuZ2V0UHJlZGVmaW5lZEN1cnNvcihDdXJzb3IuVEVYVF9DVVJTT1IpKTsKKworICAgIH0KKworLy8gPT09PT09PT09PT09PT09PSBFdmVudHMgPT09PT09PT09PT09PT09PT09PT0KKworICAgIHB1YmxpYyBib29sZWFuIGlzRm9jdXNUcmF2ZXJzYWJsZSgpIHsgcmV0dXJuIHRydWU7IH0KKworCXB1YmxpYyB2b2lkIGFkZEFjdGlvbkxpc3RlbmVyKEFjdGlvbkxpc3RlbmVyIGwpIHsKKyAgICAgICAgc2VsZWN0aW9uTGlzdGVuZXIgPSBBV1RFdmVudE11bHRpY2FzdGVyLmFkZChzZWxlY3Rpb25MaXN0ZW5lciwgbCk7CisJfQorCisJcHVibGljIHZvaWQgcmVtb3ZlQWN0aW9uTGlzdGVuZXIoQWN0aW9uTGlzdGVuZXIgbCkgeworICAgICAgICBzZWxlY3Rpb25MaXN0ZW5lciA9IEFXVEV2ZW50TXVsdGljYXN0ZXIucmVtb3ZlKHNlbGVjdGlvbkxpc3RlbmVyLCBsKTsKKwl9CisKKwlwdWJsaWMgdm9pZCBhZGRUZXh0TGlzdGVuZXIoVGV4dExpc3RlbmVyIGwpIHsKKyAgICAgICAgdGV4dExpc3RlbmVyID0gQVdURXZlbnRNdWx0aWNhc3Rlci5hZGQodGV4dExpc3RlbmVyLCBsKTsKKwl9CisKKwlwdWJsaWMgdm9pZCByZW1vdmVUZXh0TGlzdGVuZXIoVGV4dExpc3RlbmVyIGwpIHsKKyAgICAgICAgdGV4dExpc3RlbmVyID0gQVdURXZlbnRNdWx0aWNhc3Rlci5yZW1vdmUodGV4dExpc3RlbmVyLCBsKTsKKwl9CisKKyAgICBwcml2YXRlIHRyYW5zaWVudCBib29sZWFuIHByZXNzZWQ7CisKKwlwdWJsaWMgdm9pZCBtb3VzZVByZXNzZWQoTW91c2VFdmVudCBlKSB7CisJICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJtb3VzZVByZXNzZWQiKTsKKwkgICAgaWYgKHByZXNzZWQpIHsKKwkgICAgICAgIHNlbGVjdChlLGZhbHNlKTsKKwkgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRvdWJsZUNsaWNrID0gZS5nZXRDbGlja0NvdW50KCkgPiAxOworICAgICAgICAgICAgcmVxdWVzdEZvY3VzKCk7CisgICAgICAgICAgICBzZWxlY3QoZSwgdHJ1ZSk7CisgICAgCSAgICBwcmVzc2VkID0gdHJ1ZTsKKwkgICAgfQorCX0KKworCXB1YmxpYyB2b2lkIG1vdXNlRHJhZ2dlZChNb3VzZUV2ZW50IGUpIHsKKwkgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oIm1vdXNlRHJhZ2dlZCIpOworCSAgICBzZWxlY3QoZSwgZmFsc2UpOworCX0KKworCXB1YmxpYyB2b2lkIG1vdXNlUmVsZWFzZWQoTW91c2VFdmVudCBlKSB7CisJICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJtb3VzZVJlbGVhc2VkIik7CisJICAgIHByZXNzZWQgPSBmYWxzZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBtb3VzZUVudGVyZWQoTW91c2VFdmVudCBlKSB7CisJICAgIC8vaWYgKHByZXNzZWQpIHNlbGVjdChlLCBmYWxzZSk7CisJfQorCisJcHVibGljIHZvaWQgbW91c2VFeGl0ZWQoTW91c2VFdmVudCBlKXsKKwkgICAgLy9pZiAocHJlc3NlZCkgc2VsZWN0KGUsIGZhbHNlKTsKKwl9CisKKwlwdWJsaWMgdm9pZCBtb3VzZUNsaWNrZWQoTW91c2VFdmVudCBlKSB7fQorCXB1YmxpYyB2b2lkIG1vdXNlTW92ZWQoTW91c2VFdmVudCBlKSB7fQorCisKKyAgICBwdWJsaWMgdm9pZCBmb2N1c0dhaW5lZChGb2N1c0V2ZW50IGUpIHsKKwkgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oImZvY3VzR2FpbmVkIik7CisJICAgIGZvY3VzID0gdHJ1ZTsKKwkgICAgdmFsaWQgPSBmYWxzZTsKKwkgICAgcmVwYWludCgxNik7CisJfQorCXB1YmxpYyB2b2lkIGZvY3VzTG9zdChGb2N1c0V2ZW50IGUpIHsKKwkgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oImZvY3VzTG9zdCIpOworCSAgICBmb2N1cyA9IGZhbHNlOworCSAgICB2YWxpZCA9IGZhbHNlOworCSAgICByZXBhaW50KDE2KTsKKwl9CisKKyAgICBwdWJsaWMgdm9pZCBzZWxlY3QoTW91c2VFdmVudCBlLCBib29sZWFuIGZpcnN0KSB7CisJICAgIHBvaW50Mk9mZnNldChlLmdldFBvaW50KCksIHRlbXBTZWxlY3Rpb24pOworICAgICAgICBpZiAoZmlyc3QpIHsKKyAgICAgICAgICAgIGlmICgoZS5nZXRNb2RpZmllcnMoKSAmIElucHV0RXZlbnQuU0hJRlRfTUFTSykgPT0gMCkgeworICAgICAgICAgICAgICAgIHRlbXBTZWxlY3Rpb24uYW5jaG9yID0gdGVtcFNlbGVjdGlvbi5jYXJldDsKKyAgICAgICAgICAgIH0KKwkgICAgfQorCSAgICAvLyBmaXggd29yZHMKKwkgICAgaWYgKGRvdWJsZUNsaWNrKSB7CisJICAgICAgICB0ZW1wU2VsZWN0aW9uLmV4cGFuZCh3b3JkQnJlYWtlcik7CisJICAgIH0KKwkgICAgc2VsZWN0KHRlbXBTZWxlY3Rpb24pOworICAgIH0KKworCXB1YmxpYyB2b2lkIGtleVByZXNzZWQoS2V5RXZlbnQgZSkgeworICAgICAgICBpbnQgY29kZSA9IGUuZ2V0S2V5Q29kZSgpOworICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigia2V5UHJlc3NlZCAiCisgICAgICAgICAgKyBoZXgoKGNoYXIpY29kZSkgKyAiLCAiICsgaGV4KChjaGFyKWUuZ2V0TW9kaWZpZXJzKCkpKTsKKyAgICAgICAgaW50IHN0YXJ0ID0gc2VsZWN0aW9uLmdldFN0YXJ0KCk7CisgICAgICAgIGludCBlbmQgPSBzZWxlY3Rpb24uZ2V0RW5kKCk7CisgICAgICAgIGJvb2xlYW4gc2hpZnQgPSAoZS5nZXRNb2RpZmllcnMoKSAmIEtleUV2ZW50LlNISUZUX01BU0spICE9IDA7CisgICAgICAgIGJvb2xlYW4gY3RybCA9IChlLmdldE1vZGlmaWVycygpICYgS2V5RXZlbnQuQ1RSTF9NQVNLKSAhPSAwOworICAgICAgICBzd2l0Y2ggKGNvZGUpIHsKKyAgICAgICAgY2FzZSBLZXlFdmVudC5WS19ROgorICAgICAgICAgICAgaWYgKCFjdHJsIHx8ICFlZGl0YWJsZSkgYnJlYWs7CisgICAgICAgICAgICBmaXhIZXgoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEtleUV2ZW50LlZLX1Y6CisgICAgICAgICAgICBpZiAoIWN0cmwgfHwgIWVkaXRhYmxlKSBicmVhazsKKyAgICAgICAgICAgIGluc2VydFRleHQoY2xpcEJvYXJkKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEtleUV2ZW50LlZLX0M6CisgICAgICAgICAgICBpZiAoIWN0cmwpIGJyZWFrOworICAgICAgICAgICAgY2xpcEJvYXJkID0gY29udGVudHMuc3Vic3RyaW5nKHNlbGVjdGlvbi5nZXRTdGFydCgpLCBzZWxlY3Rpb24uZ2V0RW5kKCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgS2V5RXZlbnQuVktfWDoKKyAgICAgICAgICAgIGlmICghY3RybCkgYnJlYWs7CisgICAgICAgICAgICBjbGlwQm9hcmQgPSBjb250ZW50cy5zdWJzdHJpbmcoc2VsZWN0aW9uLmdldFN0YXJ0KCksIHNlbGVjdGlvbi5nZXRFbmQoKSk7CisgICAgICAgICAgICBpZiAoZWRpdGFibGUpIGJyZWFrOworICAgICAgICAgICAgaW5zZXJ0VGV4dCgiIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBLZXlFdmVudC5WS19BOgorICAgICAgICAgICAgaWYgKCFjdHJsKSBicmVhazsKKyAgICAgICAgICAgIHNlbGVjdChJbnRlZ2VyLk1BWF9WQUxVRSwgMCwgZmFsc2UpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgS2V5RXZlbnQuVktfUklHSFQ6CisgICAgICAgICAgICB0ZW1wU2VsZWN0aW9uLnNldChzZWxlY3Rpb24pOworICAgICAgICAgICAgdGVtcFNlbGVjdGlvbi5uZXh0Qm91bmQoY3RybCA/IHdvcmRCcmVha2VyIDogY2hhckJyZWFrZXIsICsxLCBzaGlmdCk7CisgICAgICAgICAgICBzZWxlY3QodGVtcFNlbGVjdGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBLZXlFdmVudC5WS19MRUZUOgorICAgICAgICAgICAgdGVtcFNlbGVjdGlvbi5zZXQoc2VsZWN0aW9uKTsKKyAgICAgICAgICAgIHRlbXBTZWxlY3Rpb24ubmV4dEJvdW5kKGN0cmwgPyB3b3JkQnJlYWtlciA6IGNoYXJCcmVha2VyLCAtMSwgc2hpZnQpOworICAgICAgICAgICAgc2VsZWN0KHRlbXBTZWxlY3Rpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgS2V5RXZlbnQuVktfVVA6IC8vIExJVTogQWRkIHN1cHBvcnQgZm9yIHVwIGFycm93CisgICAgICAgICAgICB0ZW1wU2VsZWN0aW9uLnNldChzZWxlY3Rpb24pOworICAgICAgICAgICAgdGVtcFNlbGVjdGlvbi5jYXJldCA9IGxpbmVEZWx0YSh0ZW1wU2VsZWN0aW9uLmNhcmV0LCAtMSk7CisgICAgICAgICAgICBpZiAoIXNoaWZ0KSB7CisgICAgICAgICAgICAgICAgdGVtcFNlbGVjdGlvbi5hbmNob3IgPSB0ZW1wU2VsZWN0aW9uLmNhcmV0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2VsZWN0KHRlbXBTZWxlY3Rpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgS2V5RXZlbnQuVktfRE9XTjogLy8gTElVOiBBZGQgc3VwcG9ydCBmb3IgZG93biBhcnJvdworICAgICAgICAgICAgdGVtcFNlbGVjdGlvbi5zZXQoc2VsZWN0aW9uKTsKKyAgICAgICAgICAgIHRlbXBTZWxlY3Rpb24uY2FyZXQgPSBsaW5lRGVsdGEodGVtcFNlbGVjdGlvbi5jYXJldCwgKzEpOworICAgICAgICAgICAgaWYgKCFzaGlmdCkgeworICAgICAgICAgICAgICAgIHRlbXBTZWxlY3Rpb24uYW5jaG9yID0gdGVtcFNlbGVjdGlvbi5jYXJldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNlbGVjdCh0ZW1wU2VsZWN0aW9uKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEtleUV2ZW50LlZLX0RFTEVURTogLy8gTElVOiBBZGQgZGVsZXRlIGtleSBzdXBwb3J0CisgICAgICAgICAgICBpZiAoIWVkaXRhYmxlKSBicmVhazsKKyAgICAgICAgICAgIGlmIChjb250ZW50cy5sZW5ndGgoKSA9PSAwKSBicmVhazsKKyAgICAgICAgICAgIHN0YXJ0ID0gc2VsZWN0aW9uLmdldFN0YXJ0KCk7CisgICAgICAgICAgICBlbmQgPSBzZWxlY3Rpb24uZ2V0RW5kKCk7CisgICAgICAgICAgICBpZiAoc3RhcnQgPT0gZW5kKSB7CisgICAgICAgICAgICAgICAgKytlbmQ7CisgICAgICAgICAgICAgICAgaWYgKGVuZCA+IGNvbnRlbnRzLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGdldFRvb2xraXQoKS5iZWVwKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXBsYWNlUmFuZ2UoIiIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBMSVU6IEdpdmVuIGFuIG9mZnNldCBpbnRvIGNvbnRlbnRzLCBtb3ZlcyB1cCBvciBkb3duIGJ5IGxpbmVzLAorICAgICAqIGFjY29yZGluZyB0byBsaW5lU3RhcnRzW10uCisgICAgICogQHBhcmFtIG9mZiB0aGUgb2Zmc2V0IGludG8gY29udGVudHMKKyAgICAgKiBAcGFyYW0gZGVsdGEgaG93IG1hbnkgbGluZXMgdG8gbW92ZSB1cCAoPCAwKSBvciBkb3duICg+IDApCisgICAgICogQHJldHVybiB0aGUgbmV3IG9mZnNldCBpbnRvIGNvbnRlbnRzCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbGluZURlbHRhKGludCBvZmYsIGludCBkZWx0YSkgeworICAgICAgICBpbnQgbGluZSA9IGZpbmRMaW5lKG9mZiwgZmFsc2UpOworICAgICAgICBpbnQgcG9zSW5MaW5lID0gb2ZmIC0gbGluZVN0YXJ0c1tsaW5lXTsKKyAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJvZmY9IiArIG9mZiArICIgYXQgIiArIGxpbmUgKyAiOiIgKyBwb3NJbkxpbmUpOworICAgICAgICBsaW5lICs9IGRlbHRhOworICAgICAgICBpZiAobGluZSA8IDApIHsKKyAgICAgICAgICAgIGxpbmUgPSBwb3NJbkxpbmUgPSAwOworICAgICAgICB9IGVsc2UgaWYgKGxpbmUgPj0gbGluZUNvdW50KSB7CisgICAgICAgICAgICByZXR1cm4gY29udGVudHMubGVuZ3RoKCk7CisgICAgICAgIH0KKyAgICAgICAgb2ZmID0gbGluZVN0YXJ0c1tsaW5lXSArIHBvc0luTGluZTsKKyAgICAgICAgaWYgKG9mZiA+PSBsaW5lU3RhcnRzW2xpbmUrMV0pIHsKKyAgICAgICAgICAgIG9mZiA9IGxpbmVTdGFydHNbbGluZSsxXSAtIDE7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG9mZjsKKyAgICB9CisgICAgICAKKwlwdWJsaWMgdm9pZCBrZXlSZWxlYXNlZChLZXlFdmVudCBlKSB7CisgICAgICAgIGludCBjb2RlID0gZS5nZXRLZXlDb2RlKCk7CisgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJrZXlSZWxlYXNlZCAiCisgICAgICAgICAgKyBoZXgoKGNoYXIpY29kZSkgKyAiLCAiICsgaGV4KChjaGFyKWUuZ2V0TW9kaWZpZXJzKCkpKTsKKyAgICB9CisKKwlwdWJsaWMgdm9pZCBrZXlUeXBlZChLZXlFdmVudCBlKSB7CisgICAgICAgIGNoYXIgY2ggPSBlLmdldEtleUNoYXIoKTsKKyAgICAgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oImtleVR5cGVkICIKKyAgICAgICAgICArIGhleCgoY2hhciljaCkgKyAiLCAiICsgaGV4KChjaGFyKWUuZ2V0TW9kaWZpZXJzKCkpKTsKKyAgICAgICAgaWYgKChlLmdldE1vZGlmaWVycygpICYgS2V5RXZlbnQuQ1RSTF9NQVNLKSAhPSAwKSByZXR1cm47CisgICAgICAgIHN3aXRjaCAoY2gpIHsKKyAgICAgICAgY2FzZSBLZXlFdmVudC5DSEFSX1VOREVGSU5FRDoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEtleUV2ZW50LlZLX0JBQ0tfU1BBQ0U6CisgICAgICAgICAgICBpZiAoIWVkaXRhYmxlKSBicmVhazsKKyAgICAgICAgICAgIGlmIChjb250ZW50cy5sZW5ndGgoKSA9PSAwKSBicmVhazsKKyAgICAgICAgICAgIGludCBzdGFydCA9IHNlbGVjdGlvbi5nZXRTdGFydCgpOworICAgICAgICAgICAgaW50IGVuZCA9IHNlbGVjdGlvbi5nZXRFbmQoKTsKKyAgICAgICAgICAgIGlmIChzdGFydCA9PSBlbmQpIHsKKyAgICAgICAgICAgICAgICAtLXN0YXJ0OworICAgICAgICAgICAgICAgIGlmIChzdGFydCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZ2V0VG9vbGtpdCgpLmJlZXAoKTsgLy8gTElVOiBBZGQgYXVkaW8gZmVlZGJhY2sgb2YgTk9QCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXBsYWNlUmFuZ2UoIiIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAoIWVkaXRhYmxlKSBicmVhazsKKyAgICAgICAgICAgIC8vIExJVTogRGlzcGF0Y2ggdG8gc3ViY2xhc3MgQVBJCisgICAgICAgICAgICBoYW5kbGVLZXlUeXBlZChlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gTElVOiBTdWJjbGFzcyBBUEkgZm9yIGhhbmRsaW5nIG9mIGtleSB0eXBpbmcKKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVLZXlUeXBlZChLZXlFdmVudCBlKSB7CisgICAgICAgIGluc2VydFRleHQoU3RyaW5nLnZhbHVlT2YoZS5nZXRLZXlDaGFyKCkpKTsKKyAgICB9CisKKy8vID09PT09PT09PT09PT09PT09PT09PSBDb250cm9sID09PT09PT09PT09PT09PT09PT09PT0KKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBzZXRFZGl0YWJsZShib29sZWFuIGIpIHsKKyAgICAgICAgZWRpdGFibGUgPSBiOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzRWRpdGFibGUoKSB7CisgICAgICAgIHJldHVybiBlZGl0YWJsZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZWxlY3QoU2VsZWN0aW9uIG5ld1NlbGVjdGlvbikgeworICAgICAgICBuZXdTZWxlY3Rpb24ucGluKGNvbnRlbnRzKTsKKyAgICAgICAgaWYgKCFzZWxlY3Rpb24uZXF1YWxzKG5ld1NlbGVjdGlvbikpIHsKKyAgICAgICAgICAgIHNlbGVjdGlvbi5zZXQobmV3U2VsZWN0aW9uKTsKKyAgICAgICAgICAgIGlmIChzZWxlY3Rpb25MaXN0ZW5lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgc2VsZWN0aW9uTGlzdGVuZXIuYWN0aW9uUGVyZm9ybWVkKAorICAgICAgICAgICAgICAgICAgbmV3IEFjdGlvbkV2ZW50KHRoaXMsIEFjdGlvbkV2ZW50LkFDVElPTl9QRVJGT1JNRUQsCisgICAgICAgICAgICAgICAgICAgICJTZWxlY3Rpb24gQ2hhbmdlZCIsIDApKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlcGFpbnQoMTApOworICAgICAgICAgICAgdmFsaWQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNlbGVjdChpbnQgc3RhcnQsIGludCBlbmQpIHsKKyAgICAgICAgc2VsZWN0KHN0YXJ0LCBlbmQsIGZhbHNlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZWxlY3QoaW50IHN0YXJ0LCBpbnQgZW5kLCBib29sZWFuIGNsaWNrQWZ0ZXIpIHsKKyAgICAgICAgdGVtcFNlbGVjdGlvbi5zZXQoc3RhcnQsIGVuZCwgY2xpY2tBZnRlcik7CisgICAgICAgIHNlbGVjdCh0ZW1wU2VsZWN0aW9uKTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldFNlbGVjdGlvblN0YXJ0KCkgeworICAgICAgICByZXR1cm4gc2VsZWN0aW9uLmdldFN0YXJ0KCk7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRTZWxlY3Rpb25FbmQoKSB7CisgICAgICAgIHJldHVybiBzZWxlY3Rpb24uZ2V0RW5kKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0Qm91bmRzKGludCB4LCBpbnQgeSwgaW50IHcsIGludCBoKSB7CisgICAgICAgIHN1cGVyLnNldEJvdW5kcyh4LHksdyxoKTsKKyAgICAgICAgcmVkb0xpbmVzID0gdHJ1ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgRGltZW5zaW9uIGdldFByZWZlcnJlZFNpemUoKSB7CisgICAgICAgIHJldHVybiBuZXcgRGltZW5zaW9uKGxhc3RXaWR0aCxsYXN0SGVpZ2h0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgRGltZW5zaW9uIGdldE1heGltdW1TaXplKCkgeworICAgICAgICByZXR1cm4gbmV3IERpbWVuc2lvbihsYXN0V2lkdGgsbGFzdEhlaWdodCk7CisgICAgfQorCisgICAgcHVibGljIERpbWVuc2lvbiBnZXRNaW5pbXVtU2l6ZSgpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBEaW1lbnNpb24obGFzdEhlaWdodCxsYXN0SGVpZ2h0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRUZXh0KFN0cmluZyB0ZXh0KSB7CisgICAgICAgIHNldFRleHQyKHRleHQpOworICAgICAgICBzZWxlY3QodGVtcFNlbGVjdGlvbi5zZXQoc2VsZWN0aW9uKS5waW4oY29udGVudHMpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRUZXh0MihTdHJpbmcgdGV4dCkgeworICAgICAgICBjb250ZW50cyA9IHRleHQ7CisgICAgICAgIGNoYXJCcmVha2VyLnNldFRleHQodGV4dCk7CisgICAgICAgIHdvcmRCcmVha2VyLnNldFRleHQodGV4dCk7CisgICAgICAgIGxpbmVCcmVha2VyLnNldFRleHQodGV4dCk7CisgICAgICAgIHJlZG9MaW5lcyA9IHRydWU7CisgICAgICAgIGlmICh0ZXh0TGlzdGVuZXIgIT0gbnVsbCkKKyAgICAgICAgICAgIHRleHRMaXN0ZW5lci50ZXh0VmFsdWVDaGFuZ2VkKAorICAgICAgICAgICAgICBuZXcgVGV4dEV2ZW50KHRoaXMsIFRleHRFdmVudC5URVhUX1ZBTFVFX0NIQU5HRUQpKTsKKyAgICAgICAgcmVwYWludCgxNik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgaW5zZXJ0VGV4dChTdHJpbmcgdGV4dCkgeworICAgICAgICByZXBsYWNlUmFuZ2UodGV4dCwgc2VsZWN0aW9uLmdldFN0YXJ0KCksIHNlbGVjdGlvbi5nZXRFbmQoKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcmVwbGFjZVJhbmdlKFN0cmluZyBzLCBpbnQgc3RhcnQsIGludCBlbmQpIHsKKyAgICAgICAgc2V0VGV4dDIoY29udGVudHMuc3Vic3RyaW5nKDAsc3RhcnQpICsgcworICAgICAgICAgICsgY29udGVudHMuc3Vic3RyaW5nKGVuZCkpOworICAgICAgICBzZWxlY3QodGVtcFNlbGVjdGlvbi5zZXQoc2VsZWN0aW9uKS4KKyAgICAgICAgICBmaXhBZnRlclJlcGxhY2Uoc3RhcnQsIGVuZCwgcy5sZW5ndGgoKSkpOworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0VGV4dCgpIHsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRzOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEZvbnQoRm9udCBmb250KSB7CisgICAgICAgIHN1cGVyLnNldEZvbnQoZm9udCk7CisgICAgICAgIHJlZG9MaW5lcyA9IHRydWU7CisgICAgICAgIHJlcGFpbnQoMTYpOworICAgIH0KKworICAgIC8vID09PT09PT09PT09PT09PT09PSBHcmFwaGljcyA9PT09PT09PT09PT09PT09PT09PT09CisKKyAgICBwdWJsaWMgdm9pZCB1cGRhdGUoR3JhcGhpY3MgZykgeworICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigidXBkYXRlIik7CisgICAgICAgIHBhaW50KGcpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHBhaW50KEdyYXBoaWNzIGcpIHsKKyAgICAgICAgbXlTaXplID0gZ2V0U2l6ZSgpOworICAgICAgICBpZiAoY2FjaGVJbWFnZSA9PSBudWxsCisgICAgICAgICAgfHwgY2FjaGVJbWFnZS5nZXRIZWlnaHQodGhpcykgIT0gbXlTaXplLmhlaWdodAorICAgICAgICAgIHx8IGNhY2hlSW1hZ2UuZ2V0V2lkdGgodGhpcykgIT0gbXlTaXplLndpZHRoKSB7CisgICAgICAgICAgICBjYWNoZUltYWdlID0gY3JlYXRlSW1hZ2UobXlTaXplLndpZHRoLCBteVNpemUuaGVpZ2h0KTsKKyAgICAgICAgICAgIHZhbGlkID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCF2YWxpZCB8fCByZWRvTGluZXMpIHsKKyAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJwYWludGluZyIpOworICAgICAgICAgICAgcGFpbnQyKGNhY2hlSW1hZ2UuZ2V0R3JhcGhpY3MoKSk7CisgICAgICAgICAgICB2YWxpZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgLy9nZXRUb29sa2l0KCkuc3luYygpOworICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiY29weWluZyIpOworICAgICAgICBnLmRyYXdJbWFnZShjYWNoZUltYWdlLAorICAgICAgICAgIDAsIDAsIG15U2l6ZS53aWR0aCwgbXlTaXplLmhlaWdodCwKKyAgICAgICAgICAwLCAwLCBteVNpemUud2lkdGgsIG15U2l6ZS5oZWlnaHQsCisgICAgICAgICAgdGhpcyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcGFpbnQyKEdyYXBoaWNzIGcpIHsKKyAgICAgICAgZy5jbGVhclJlY3QoMCwgMCwgbXlTaXplLndpZHRoLCBteVNpemUuaGVpZ2h0KTsKKyAgICAgICAgaWYgKERFQlVHKSBTeXN0ZW0ub3V0LnByaW50bG4oInByaW50Iik7CisgICAgICAgIGlmIChmb2N1cykgZy5zZXRDb2xvcihDb2xvci5ibGFjayk7CisgICAgICAgIGVsc2UgZy5zZXRDb2xvcihDb2xvci5ncmF5KTsKKyAgICAgICAgZy5kcmF3UmVjdCgwLDAsbXlTaXplLndpZHRoLTEsbXlTaXplLmhlaWdodC0xKTsKKyAgICAgICAgZy5zZXRDbGlwKDEsMSwKKyAgICAgICAgICBteVNpemUud2lkdGgtMixteVNpemUuaGVpZ2h0LTIpOworICAgICAgICBnLnNldENvbG9yKENvbG9yLmJsYWNrKTsKKyAgICAgICAgZy5zZXRGb250KGdldEZvbnQoKSk7CisgICAgICAgIGZtID0gZy5nZXRGb250TWV0cmljcygpOworICAgICAgICBsaW5lQXNjZW50ID0gZm0uZ2V0QXNjZW50KCk7CisgICAgICAgIGxpbmVMZWFkaW5nID0gZm0uZ2V0TGVhZGluZygpOworICAgICAgICBsaW5lSGVpZ2h0ID0gbGluZUFzY2VudCArIGZtLmdldERlc2NlbnQoKSArIGxpbmVMZWFkaW5nOworICAgICAgICBpbnQgeSA9IHlJbnNldCArIGxpbmVBc2NlbnQ7CisgICAgICAgIFN0cmluZyBsYXN0U3Vic3RyaW5nID0gIiI7CisgICAgICAgIGlmIChyZWRvTGluZXMpIGZpeExpbmVTdGFydHMobXlTaXplLndpZHRoLXhJbnNldC14SW5zZXQpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxpbmVDb3VudDsgeSArPSBsaW5lSGVpZ2h0LCArK2kpIHsKKyAgICAgICAgICAgIC8vIExJVTogRG9uJ3QgZGlzcGxheSB0ZXJtaW5hdGluZyBeTSBjaGFyYWN0ZXJzCisgICAgICAgICAgICBpbnQgbGltID0gbGluZVN0YXJ0c1tpKzFdOworICAgICAgICAgICAgaWYgKGxpbSA+IDAgJiYgY29udGVudHMubGVuZ3RoKCkgPiAwICYmCisgICAgICAgICAgICAgICAgY29udGVudHMuY2hhckF0KGxpbS0xKSA9PSBDUikgLS1saW07CisgICAgICAgICAgICBsYXN0U3Vic3RyaW5nID0gY29udGVudHMuc3Vic3RyaW5nKGxpbmVTdGFydHNbaV0sbGltKTsKKyAgICAgICAgICAgIGcuZHJhd1N0cmluZyhsYXN0U3Vic3RyaW5nLCB4SW5zZXQsIHkpOworICAgICAgICB9CisgICAgICAgIGRyYXdTZWxlY3Rpb24oZywgbGFzdFN1YnN0cmluZyk7CisgICAgICAgIGxhc3RIZWlnaHQgPSB5ICsgeUluc2V0IC0gbGluZUhlaWdodCArIHlJbnNldDsKKyAgICAgICAgbGFzdFdpZHRoID0gbXlTaXplLndpZHRoLXhJbnNldC14SW5zZXQ7CisgICAgfQorCisgICAgdm9pZCBwYWludFJlY3QoR3JhcGhpY3MgZywgaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgpIHsKKyAgICAgICAgaWYgKGZvY3VzKSB7CisgICAgICAgICAgICBnLmZpbGxSZWN0KHgsIHksIHcsIGgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZy5kcmF3UmVjdCh4LCB5LCB3LTEsIGgtMSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBkcmF3U2VsZWN0aW9uKEdyYXBoaWNzIGcsIFN0cmluZyBsYXN0U3Vic3RyaW5nKSB7CisgICAgICAgIGcuc2V0WE9STW9kZShDb2xvci5ibGFjayk7CisgICAgICAgIGlmIChzZWxlY3Rpb24uaXNDYXJldCgpKSB7CisgICAgICAgICAgICBvZmZzZXQyUG9pbnQoc2VsZWN0aW9uLmNhcmV0LCBzZWxlY3Rpb24uY2xpY2tBZnRlciwgY2FyZXRQb2ludCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoZm9jdXMpIGcuc2V0Q29sb3IoQ29sb3IuYmx1ZSk7CisgICAgICAgICAgICBlbHNlIGcuc2V0Q29sb3IoQ29sb3IueWVsbG93KTsKKyAgICAgICAgICAgIG9mZnNldDJQb2ludChzZWxlY3Rpb24uZ2V0U3RhcnQoKSwgdHJ1ZSwgc3RhcnRQb2ludCk7CisgICAgICAgICAgICBvZmZzZXQyUG9pbnQoc2VsZWN0aW9uLmdldEVuZCgpLCBmYWxzZSwgZW5kUG9pbnQpOworICAgICAgICAgICAgaWYgKHNlbGVjdGlvbi5nZXRTdGFydCgpID09IHNlbGVjdGlvbi5jYXJldCkKKyAgICAgICAgICAgICAgICBjYXJldFBvaW50LnNldExvY2F0aW9uKHN0YXJ0UG9pbnQpOworICAgICAgICAgICAgZWxzZSBjYXJldFBvaW50LnNldExvY2F0aW9uKGVuZFBvaW50KTsKKyAgICAgICAgICAgIGlmIChzdGFydFBvaW50LnkgPT0gZW5kUG9pbnQueSkgeworICAgICAgICAgICAgICAgIHBhaW50UmVjdChnLCBzdGFydFBvaW50LngsIHN0YXJ0UG9pbnQueSwKKyAgICAgICAgICAgICAgICAgIE1hdGgubWF4KDEsZW5kUG9pbnQueC1zdGFydFBvaW50LngpLCBsaW5lSGVpZ2h0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcGFpbnRSZWN0KGcsIHN0YXJ0UG9pbnQueCwgc3RhcnRQb2ludC55LAorICAgICAgICAgICAgICAgICAgKG15U2l6ZS53aWR0aC14SW5zZXQpLXN0YXJ0UG9pbnQueCwgbGluZUhlaWdodCk7CisgICAgICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQueSArIGxpbmVIZWlnaHQgPCBlbmRQb2ludC55KQorICAgICAgICAgICAgICAgICAgcGFpbnRSZWN0KGcsIHhJbnNldCwgc3RhcnRQb2ludC55ICsgbGluZUhlaWdodCwKKyAgICAgICAgICAgICAgICAgIChteVNpemUud2lkdGgteEluc2V0KS14SW5zZXQsIGVuZFBvaW50LnkgLSBzdGFydFBvaW50LnkgLSBsaW5lSGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBwYWludFJlY3QoZywgeEluc2V0LCBlbmRQb2ludC55LCBlbmRQb2ludC54LXhJbnNldCwgbGluZUhlaWdodCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZvY3VzIHx8IHNlbGVjdGlvbi5pc0NhcmV0KCkpIHsKKyAgICAgICAgICAgIGlmIChmb2N1cykgZy5zZXRDb2xvcihDb2xvci5ncmVlbik7CisgICAgICAgICAgICBlbHNlIGcuc2V0Q29sb3IoQ29sb3IucmVkKTsKKyAgICAgICAgICAgIGludCBsaW5lID0gY2FyZXRQb2ludC54IC0gKHNlbGVjdGlvbi5jbGlja0FmdGVyID8gMCA6IDEpOworICAgICAgICAgICAgZy5maWxsUmVjdChsaW5lLCBjYXJldFBvaW50LnksIDEsIGxpbmVIZWlnaHQpOworICAgICAgICAgICAgaW50IHcgPSBsaW5lSGVpZ2h0LzEyICsgMTsKKyAgICAgICAgICAgIGludCBicmFjZXMgPSBsaW5lIC0gKHNlbGVjdGlvbi5jbGlja0FmdGVyID8gLTEgOiB3KTsKKyAgICAgICAgICAgIGcuZmlsbFJlY3QoYnJhY2VzLCBjYXJldFBvaW50LnksIHcsIDEpOworICAgICAgICAgICAgZy5maWxsUmVjdChicmFjZXMsIGNhcmV0UG9pbnQueSArIGxpbmVIZWlnaHQgLSAxLCB3LCAxKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBQb2ludCBvZmZzZXQyUG9pbnQoaW50IG9mZiwgYm9vbGVhbiBzdGFydCwgUG9pbnQgcCkgeworICAgICAgICBpbnQgbGluZSA9IGZpbmRMaW5lKG9mZiwgc3RhcnQpOworICAgICAgICBpbnQgd2lkdGggPSAwOworICAgICAgICB0cnkgeworICAgICAgICAgICAgd2lkdGggPSBmbS5zdHJpbmdXaWR0aCgKKyAgICAgICAgICAgICAgY29udGVudHMuc3Vic3RyaW5nKGxpbmVTdGFydHNbbGluZV0sIG9mZikpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGUpOworICAgICAgICB9CisgICAgICAgIHAueCA9IHdpZHRoICsgeEluc2V0OworICAgICAgICBpZiAocC54ID4gbXlTaXplLndpZHRoIC0geEluc2V0KQorICAgICAgICAgICAgcC54ID0gbXlTaXplLndpZHRoIC0geEluc2V0OworICAgICAgICBwLnkgPSBsaW5lSGVpZ2h0ICogbGluZSArIHlJbnNldDsKKyAgICAgICAgcmV0dXJuIHA7CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgZmluZExpbmUoaW50IG9mZiwgYm9vbGVhbiBzdGFydCkgeworICAgICAgICAvLyBpZiBpdCBpcyBzdGFydCwgdGhlbiBnbyB0byB0aGUgbmV4dCBsaW5lIQorICAgICAgICBpZiAoc3RhcnQpICsrb2ZmOworICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IGxpbmVDb3VudDsgKytpKSB7CisgICAgICAgICAgICAvLyBMSVU6IFRoaXMgd2FzIDw9IDsgY2hhbmdlZCB0byA8IHRvIG1ha2UgY2FyZXQgYWZ0ZXIKKyAgICAgICAgICAgIC8vIGZpbmFsIENSIGluIGxpbmUgYXBwZWFyIGF0IFNUQVJUIG9mIG5leHQgbGluZS4KKyAgICAgICAgICAgIGlmIChvZmYgPCBsaW5lU3RhcnRzW2ldKSByZXR1cm4gaS0xOworICAgICAgICB9CisgICAgICAgIC8vIExJVTogQ2hlY2sgZm9yIHNwZWNpYWwgY2FzZTsgYWZ0ZXIgQ1IgYXQgZW5kIG9mIHRoZSBsYXN0IGxpbmUKKyAgICAgICAgaWYgKG9mZiA9PSBsaW5lU3RhcnRzW2xpbmVDb3VudF0gJiYKKyAgICAgICAgICAgIG9mZiA+IDAgJiYgY29udGVudHMubGVuZ3RoKCkgPiAwICYmIGNvbnRlbnRzLmNoYXJBdChvZmYtMSkgPT0gQ1IpIHsKKyAgICAgICAgICAgIHJldHVybiBsaW5lQ291bnQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxpbmVDb3VudC0xOworICAgIH0KKworICAgIC8vIG9mZnNldHMgb24gYW55IGxpbmUgd2lsbCBnbyBmcm9tIHN0YXJ0LHRydWUgdG8gZW5kLGZhbHNlCisgICAgLy8gZXhjbHVkaW5nIHN0YXJ0LGZhbHNlIGFuZCBlbmQsdHJ1ZQorICAgIHB1YmxpYyBTZWxlY3Rpb24gcG9pbnQyT2Zmc2V0KFBvaW50IHAsIFNlbGVjdGlvbiBvKSB7CisgICAgICAgIGlmIChwLnkgPCB5SW5zZXQpIHsKKyAgICAgICAgICAgIG8uY2FyZXQgPSAwOworICAgICAgICAgICAgby5jbGlja0FmdGVyID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBvOworICAgICAgICB9CisgICAgICAgIGludCBsaW5lID0gKHAueSAtIHlJbnNldCkvbGluZUhlaWdodDsKKyAgICAgICAgaWYgKGxpbmUgPj0gbGluZUNvdW50KSB7CisgICAgICAgICAgICBvLmNhcmV0ID0gY29udGVudHMubGVuZ3RoKCk7CisgICAgICAgICAgICBvLmNsaWNrQWZ0ZXIgPSBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiBvOworICAgICAgICB9CisgICAgICAgIGludCB0YXJnZXQgPSBwLnggLSB4SW5zZXQ7CisgICAgICAgIGlmICh0YXJnZXQgPD0gMCkgeworICAgICAgICAgICAgby5jYXJldCA9IGxpbmVTdGFydHNbbGluZV07CisgICAgICAgICAgICBvLmNsaWNrQWZ0ZXIgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuIG87CisgICAgICAgIH0KKyAgICAgICAgaW50IGxvd0d1ZXNzID0gbGluZVN0YXJ0c1tsaW5lXTsKKyAgICAgICAgaW50IGxvd1dpZHRoID0gMDsKKyAgICAgICAgaW50IGhpZ2hHdWVzcyA9IGxpbmVTdGFydHNbbGluZSsxXTsKKyAgICAgICAgaW50IGhpZ2hXaWR0aCA9IGZtLnN0cmluZ1dpZHRoKGNvbnRlbnRzLnN1YnN0cmluZyhsaW5lU3RhcnRzW2xpbmVdLGhpZ2hHdWVzcykpOworICAgICAgICBpZiAodGFyZ2V0ID49IGhpZ2hXaWR0aCkgeworICAgICAgICAgICAgby5jYXJldCA9IGxpbmVTdGFydHNbbGluZSsxXTsKKyAgICAgICAgICAgIG8uY2xpY2tBZnRlciA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIG87CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKGxvd0d1ZXNzIDwgaGlnaEd1ZXNzIC0gMSkgeworICAgICAgICAgICAgaW50IGd1ZXNzID0gKGxvd0d1ZXNzICsgaGlnaEd1ZXNzKS8yOworICAgICAgICAgICAgaW50IHdpZHRoID0gZm0uc3RyaW5nV2lkdGgoY29udGVudHMuc3Vic3RyaW5nKGxpbmVTdGFydHNbbGluZV0sZ3Vlc3MpKTsKKyAgICAgICAgICAgIGlmICh3aWR0aCA8PSB0YXJnZXQpIHsKKyAgICAgICAgICAgICAgICBsb3dHdWVzcyA9IGd1ZXNzOworICAgICAgICAgICAgICAgIGxvd1dpZHRoID0gd2lkdGg7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IHRhcmdldCkgYnJlYWs7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGhpZ2hHdWVzcyA9IGd1ZXNzOworICAgICAgICAgICAgICAgIGhpZ2hXaWR0aCA9IHdpZHRoOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vIGF0IGVuZCwgZWl0aGVyIGxvd1dpZHRoIDwgdGFyZ2V0IDwgd2lkdGgobG93KzEpLCBvciBsb3dXaWR0aCA9IHRhcmdldAorICAgICAgICBpbnQgaGlnaEJvdW5kID0gY2hhckJyZWFrZXIuZm9sbG93aW5nKGxvd0d1ZXNzKTsKKyAgICAgICAgaW50IGxvd0JvdW5kID0gY2hhckJyZWFrZXIucHJldmlvdXMoKTsKKyAgICAgICAgLy8gd2UgYXJlIG5vdyBhdCBjaGFyYWN0ZXIgYm91bmRhcmllcworICAgICAgICBpZiAobG93Qm91bmQgIT0gbG93R3Vlc3MpCisgICAgICAgICAgICBsb3dXaWR0aCA9IGZtLnN0cmluZ1dpZHRoKGNvbnRlbnRzLnN1YnN0cmluZyhsaW5lU3RhcnRzW2xpbmVdLGxvd0JvdW5kKSk7CisgICAgICAgIGlmIChoaWdoQm91bmQgIT0gaGlnaEd1ZXNzKQorICAgICAgICAgICAgaGlnaFdpZHRoID0gZm0uc3RyaW5nV2lkdGgoY29udGVudHMuc3Vic3RyaW5nKGxpbmVTdGFydHNbbGluZV0saGlnaEJvdW5kKSk7CisgICAgICAgIC8vIHdlIG5vdyBoYXZlIHRoZSByaWdodCB3aWR0aHMKKyAgICAgICAgaWYgKHRhcmdldCAtIGxvd1dpZHRoIDwgaGlnaFdpZHRoIC0gdGFyZ2V0KSB7CisgICAgICAgICAgICBvLmNhcmV0ID0gbG93Qm91bmQ7CisgICAgICAgICAgICBvLmNsaWNrQWZ0ZXIgPSB0cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgby5jYXJldCA9IGhpZ2hCb3VuZDsKKyAgICAgICAgICAgIG8uY2xpY2tBZnRlciA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIC8vIHdlIG5vdyBoYXZlIHRoZSBjbG9zZXN0IQorICAgICAgICByZXR1cm4gbzsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZml4TGluZVN0YXJ0cyhpbnQgd2lkdGgpIHsKKyAgICAgICAgbGluZUNvdW50ID0gMTsKKyAgICAgICAgbGluZVN0YXJ0c1swXSA9IDA7CisgICAgICAgIGlmIChjb250ZW50cy5sZW5ndGgoKSA9PSAwKSB7CisgICAgICAgICAgICBsaW5lU3RhcnRzWzFdID0gMDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpbnQgZW5kID0gMDsKKyAgICAgICAgLy8gTElVOiBBZGQgY2hlY2sgZm9yIE1BWF9MSU5FUworICAgICAgICBmb3IgKGludCBzdGFydCA9IDA7IHN0YXJ0IDwgY29udGVudHMubGVuZ3RoKCkgJiYgbGluZUNvdW50IDwgTUFYX0xJTkVTOworICAgICAgICAgICAgIHN0YXJ0ID0gZW5kKSB7CisgICAgICAgICAgICBlbmQgPSBuZXh0TGluZShmbSwgc3RhcnQsIHdpZHRoKTsKKyAgICAgICAgICAgIGxpbmVTdGFydHNbbGluZUNvdW50KytdID0gZW5kOworICAgICAgICAgICAgaWYgKGVuZCA9PSBzdGFydCkgeyAvLyBMSVU6IEFzc2VydGlvbgorICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJuZXh0TGluZSBicm9rZW4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAtLWxpbmVDb3VudDsKKyAgICAgICAgcmVkb0xpbmVzID0gZmFsc2U7CisgICAgfQorCisgICAgLy8gTElVOiBFbmhhbmNlZCB0byB3cmFwIGxvbmcgbGluZXMuICBCdWcgd2l0aCByZXR1cm4gb2Ygc3RhcnQgZml4ZWQuCisgICAgcHVibGljIGludCBuZXh0TGluZShGb250TWV0cmljcyBmbSwgaW50IHN0YXJ0LCBpbnQgd2lkdGgpIHsKKyAgICAgICAgaW50IGxlbiA9IGNvbnRlbnRzLmxlbmd0aCgpOworICAgICAgICBmb3IgKGludCBpID0gc3RhcnQ7IGkgPCBsZW47ICsraSkgeworICAgICAgICAgICAgLy8gY2hlY2sgZm9yIGxpbmUgc2VwYXJhdG9yCisgICAgICAgICAgICBjaGFyIGNoID0gKGNvbnRlbnRzLmNoYXJBdChpKSk7CisgICAgICAgICAgICBpZiAoY2ggPj0gMHgwMDBBICYmIGNoIDw9IDB4MDAwRCB8fCBjaCA9PSAweDIwMjggfHwgY2ggPT0gMHgyMDI5KSB7CisgICAgICAgICAgICAgICAgbGVuID0gaSArIDE7CisgICAgICAgICAgICAgICAgaWYgKGNoID09IDB4MDAwRCAmJiBpKzEgPCBsZW4gJiYgY29udGVudHMuY2hhckF0KGkrMSkgPT0gMHgwMDBBKSAvLyBjcmxmCisgICAgICAgICAgICAgICAgICAgICsrbGVuOyAvLyBncmFiIGV4dHJhIGNoYXIKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgc3ViamVjdCA9IGNvbnRlbnRzLnN1YnN0cmluZyhzdGFydCxsZW4pOworICAgICAgICBpZiAodmlzaWJsZVdpZHRoKGZtLCBzdWJqZWN0KSA8PSB3aWR0aCkKKyAgICAgICAgICByZXR1cm4gbGVuOworCisgICAgICAgIC8vIExJVTogUmVtYWluZGVyIG9mIHRoaXMgbWV0aG9kIHJld3JpdHRlbiB0byBhY2NvbW9kYXRlIGxpbmVzCisgICAgICAgIC8vIGxvbmdlciB0aGFuIHRoZSBjb21wb25lbnQgd2lkdGggYnkgZmlyc3QgdHJ5aW5nIHRvIGJyZWFrCisgICAgICAgIC8vIGludG8gbGluZXM7IHRoZW4gd29yZHM7IGZpbmFsbHkgY2hhcnMuCisgICAgICAgIGludCBuID0gZmluZEZpdHRpbmdCcmVhayhmbSwgc3ViamVjdCwgd2lkdGgsIGxpbmVCcmVha2VyKTsKKyAgICAgICAgaWYgKG4gPT0gMCkgeworICAgICAgICAgICAgbiA9IGZpbmRGaXR0aW5nQnJlYWsoZm0sIHN1YmplY3QsIHdpZHRoLCB3b3JkQnJlYWtlcik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG4gPT0gMCkgeworICAgICAgICAgICAgbiA9IGZpbmRGaXR0aW5nQnJlYWsoZm0sIHN1YmplY3QsIHdpZHRoLCBjaGFyQnJlYWtlcik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG4gPiAwID8gc3RhcnQgKyBuIDogbGVuOworICAgIH0KKworICAgIC8qKgorICAgICAqIExJVTogRmluZHMgdGhlIGxvbmdlc3Qgc3Vic3RyaW5nIHRoYXQgZml0cyBhIGdpdmVuIHdpZHRoCisgICAgICogY29tcG9zZWQgb2Ygc3VidW5pdHMgcmV0dXJuZWQgYnkgYSBCcmVha0l0ZXJhdG9yLiAgSWYgdGhlIHNtYWxsZXN0CisgICAgICogc3VidW5pdCBpcyB0b28gbG9uZywgcmV0dXJucyAwLgorICAgICAqIEBwYXJhbSBmbSBtZXRyaWNzIHRvIHVzZQorICAgICAqIEBwYXJhbSBsaW5lIHRoZSBzdHJpbmcgdG8gYmUgZml4IGludG8gd2lkdGgKKyAgICAgKiBAcGFyYW0gd2lkdGggbGluZS5zdWJzdHJpbmcoMCwgcmVzdWx0KSBtdXN0IGJlIDw9IHdpZHRoCisgICAgICogQHBhcmFtIGJyZWFrZXIgdGhlIEJyZWFrSXRlcmF0b3IgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZmluZCBzdWJ1bml0cworICAgICAqIEByZXR1cm4gbWF4aW11bSBjaGFyYWN0ZXJzLCBhdCBib3VuZGFyaWVzIHJldHVybmVkIGJ5IGJyZWFrZXIsCisgICAgICogdGhhdCBmaXQgaW50byB3aWR0aCwgb3IgemVybyBvbiBmYWlsdXJlCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZmluZEZpdHRpbmdCcmVhayhGb250TWV0cmljcyBmbSwgU3RyaW5nIGxpbmUsIGludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJyZWFrSXRlcmF0b3IgYnJlYWtlcikgeworICAgICAgICBicmVha2VyLnNldFRleHQobGluZSk7CisgICAgICAgIGludCBsYXN0ID0gYnJlYWtlci5maXJzdCgpOworICAgICAgICBpbnQgZW5kID0gYnJlYWtlci5uZXh0KCk7CisgICAgICAgIHdoaWxlIChlbmQgIT0gQnJlYWtJdGVyYXRvci5ET05FICYmCisgICAgICAgICAgICAgICB2aXNpYmxlV2lkdGgoZm0sIGxpbmUuc3Vic3RyaW5nKDAsIGVuZCkpIDw9IHdpZHRoKSB7CisgICAgICAgICAgICBsYXN0ID0gZW5kOworICAgICAgICAgICAgZW5kID0gYnJlYWtlci5uZXh0KCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxhc3Q7CisgICAgfQorCisgICAgcHVibGljIGludCB2aXNpYmxlV2lkdGgoRm9udE1ldHJpY3MgZm0sIFN0cmluZyBzKSB7CisgICAgICAgIGludCBpOworICAgICAgICBmb3IgKGkgPSBzLmxlbmd0aCgpLTE7IGkgPj0gMDsgLS1pKSB7CisgICAgICAgICAgICBjaGFyIGNoID0gcy5jaGFyQXQoaSk7CisgICAgICAgICAgICBpZiAoIShjaCA9PSAnICcgfHwgY2ggPj0gMHgwMDBBICYmIGNoIDw9IDB4MDAwRCB8fCBjaCA9PSAweDIwMjggfHwgY2ggPT0gMHgyMDI5KSkKKyAgICAgICAgICAgICAgcmV0dXJuIGZtLnN0cmluZ1dpZHRoKHMuc3Vic3RyaW5nKDAsaSsxKSk7OworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworLy8gPT09PT09PT09PT09PT09IFV0aWxpdHkgPT09PT09PT09PT09PT09PT09PT0KKworICAgIHByaXZhdGUgdm9pZCBmaXhIZXgoKSB7CisgICAgICAgIGlmIChzZWxlY3Rpb24uZ2V0RW5kKCkgPT0gMCkgcmV0dXJuOworICAgICAgICBpbnQgc3RvcmUgPSAwOworICAgICAgICBpbnQgcGxhY2VzID0gMTsKKyAgICAgICAgaW50IGNvdW50ID0gMDsKKyAgICAgICAgaW50IG1pbiA9IE1hdGgubWluKDgsc2VsZWN0aW9uLmdldEVuZCgpKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtaW47ICsraSkgeworICAgICAgICAgICAgY2hhciBjaCA9IGNvbnRlbnRzLmNoYXJBdChzZWxlY3Rpb24uZ2V0RW5kKCktMS1pKTsKKyAgICAgICAgICAgIGludCB2YWx1ZSA9IENoYXJhY3Rlci5nZXROdW1lcmljVmFsdWUoY2gpOworICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCB8fCB2YWx1ZSA+IDE1KSBicmVhazsKKyAgICAgICAgICAgIHN0b3JlICs9IHBsYWNlcyAqIHZhbHVlOworICAgICAgICAgICAgKytjb3VudDsKKyAgICAgICAgICAgIHBsYWNlcyAqPSAxNjsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgYWRkID0gIiI7CisgICAgICAgIGludCBib3R0b20gPSBzdG9yZSAmIDB4RkZGRjsKKyAgICAgICAgaWYgKHN0b3JlID49IDB4RDgwMDAwMDAgJiYgc3RvcmUgPCAweERDMDAwMDAwCisgICAgICAgICAgJiYgYm90dG9tID49IDB4REMwMCAmJiBib3R0b20gPCAweEUwMDApIHsgLy8gc3Vycm9nYXRlcworICAgICAgICAgICAgYWRkID0gIiIgKyAoY2hhcikoc3RvcmUgPj4gMTYpICsgKGNoYXIpYm90dG9tOworICAgICAgICB9IGVsc2UgaWYgKHN0b3JlID4gMHhGRkZGICYmIHN0b3JlIDw9IDB4MTBGRkZGKSB7CisgICAgICAgICAgICBzdG9yZSAtPSAweDEwMDAwOworICAgICAgICAgICAgYWRkID0gIiIgKyAoY2hhcikoKChzdG9yZSA+PiAxMCkgJiAweDNGRikgKyAweEQ4MDApCisgICAgICAgICAgICAgICsgKGNoYXIpKChzdG9yZSAmIDB4M0ZGKSArIDB4REMwMCk7CisgICAgICAgICAgICAgIAorICAgICAgICB9IGVsc2UgaWYgKGNvdW50ID49IDQpIHsKKyAgICAgICAgICAgIGNvdW50ID0gNDsKKyAgICAgICAgICAgIGFkZCA9ICIiKyhjaGFyKShzdG9yZSAmIDB4RkZGRik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBjb3VudCA9IDE7CisgICAgICAgICAgICBjaGFyIGNoID0gY29udGVudHMuY2hhckF0KHNlbGVjdGlvbi5nZXRFbmQoKS0xKTsKKyAgICAgICAgICAgIGFkZCA9IGhleChjaCk7CisgICAgICAgICAgICBpZiAoY2ggPj0gMHhEQzAwICYmIGNoIDw9IDB4REZGRiAmJiBzZWxlY3Rpb24uZ2V0RW5kKCkgPiAxKSB7CisgICAgICAgICAgICAgICAgY2ggPSBjb250ZW50cy5jaGFyQXQoc2VsZWN0aW9uLmdldEVuZCgpLTIpOworICAgICAgICAgICAgICAgIGlmIChjaCA+PSAweEQ4MDAgJiYgY2ggPD0gMHhEQkZGKSB7CisgICAgICAgICAgICAgICAgICAgIGNvdW50ID0gMjsKKyAgICAgICAgICAgICAgICAgICAgYWRkID0gaGV4KGNoKSArIGFkZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmVwbGFjZVJhbmdlKGFkZCwgc2VsZWN0aW9uLmdldEVuZCgpLWNvdW50LCBzZWxlY3Rpb24uZ2V0RW5kKCkpOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGhleChjaGFyIGNoKSB7CisgICAgICAgIFN0cmluZyByZXN1bHQgPSBJbnRlZ2VyLnRvU3RyaW5nKGNoLDE2KS50b1VwcGVyQ2FzZSgpOworICAgICAgICByZXN1bHQgPSAiMDAwMCIuc3Vic3RyaW5nKHJlc3VsdC5sZW5ndGgoKSw0KSArIHJlc3VsdDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L2NvbXBvbmVudHMvU2VsZWN0aW9uLmphdmEgYi9zcmMvY29tL2libS90ZXh0L2NvbXBvbmVudHMvU2VsZWN0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMGExNjg0YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvY29tcG9uZW50cy9TZWxlY3Rpb24uamF2YQpAQCAtMCwwICsxLDE2NyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9jb21wb25lbnRzL0F0dGljL1NlbGVjdGlvbi5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDA0OjA3OjI2ICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXh0LmNvbXBvbmVudHM7CitpbXBvcnQgamF2YS50ZXh0Lio7CisKK3B1YmxpYyBmaW5hbCBjbGFzcyBTZWxlY3Rpb24geworCisgICAgcHVibGljIGludCBhbmNob3I7CisgICAgcHVibGljIGludCBjYXJldDsKKyAgICBwdWJsaWMgYm9vbGVhbiBjbGlja0FmdGVyOworCisgICAgcHVibGljIGludCBnZXRTdGFydCgpIHsKKyAgICAgICAgcmV0dXJuIGFuY2hvciA8IGNhcmV0ID8gYW5jaG9yIDogY2FyZXQ7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRFbmQoKSB7CisgICAgICAgIHJldHVybiBhbmNob3IgPiBjYXJldCA/IGFuY2hvciA6IGNhcmV0OworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzQ2FyZXQoKSB7CisgICAgICAgIHJldHVybiBhbmNob3IgPT0gY2FyZXQ7CisgICAgfQorCisgICAgcHVibGljIFNlbGVjdGlvbiBzZXQoU2VsZWN0aW9uIG90aGVyKSB7CisgICAgICAgIGFuY2hvciA9IG90aGVyLmFuY2hvcjsKKyAgICAgICAgY2FyZXQgPSBvdGhlci5jYXJldDsKKyAgICAgICAgY2xpY2tBZnRlciA9IG90aGVyLmNsaWNrQWZ0ZXI7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIHB1YmxpYyBTZWxlY3Rpb24gc2V0KGludCBhbmNob3IsIGludCBjYXJldCwgYm9vbGVhbiBjbGlja0FmdGVyKSB7CisgICAgICAgIHRoaXMuYW5jaG9yID0gYW5jaG9yOworICAgICAgICB0aGlzLmNhcmV0ID0gY2FyZXQ7CisgICAgICAgIHRoaXMuY2xpY2tBZnRlciA9IGNsaWNrQWZ0ZXI7CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb3RoZXIpIHsKKyAgICAgICAgU2VsZWN0aW9uIG90aGVyMiA9IChTZWxlY3Rpb24pb3RoZXI7CisgICAgICAgIHJldHVybiBhbmNob3IgPT0gb3RoZXIyLmFuY2hvcgorICAgICAgICAgICYmIGNhcmV0ID09IG90aGVyMi5jYXJldAorICAgICAgICAgICYmIGNsaWNrQWZ0ZXIgPT0gb3RoZXIyLmNsaWNrQWZ0ZXI7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNMZXNzVGhhbihTZWxlY3Rpb24gb3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIGdldFN0YXJ0KCkgPCBvdGhlci5nZXRFbmQoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgU2VsZWN0aW9uIHBpbihTdHJpbmcgdGV4dCkgeworICAgICAgICBpZiAoYW5jaG9yID4gdGV4dC5sZW5ndGgoKSkgeworICAgICAgICAgICAgYW5jaG9yID0gdGV4dC5sZW5ndGgoKTsKKyAgICAgICAgfSBlbHNlIGlmIChhbmNob3IgPCAwKSB7CisgICAgICAgICAgICBhbmNob3IgPSAwOworICAgICAgICB9CisgICAgICAgIGlmIChjYXJldCA+IHRleHQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGNhcmV0ID0gdGV4dC5sZW5ndGgoKTsKKyAgICAgICAgICAgIGNsaWNrQWZ0ZXIgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKGNhcmV0IDwgMCkgeworICAgICAgICAgICAgY2FyZXQgPSAwOworICAgICAgICAgICAgY2xpY2tBZnRlciA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzOworICAgIH0KKworICAgIHB1YmxpYyBTZWxlY3Rpb24gc3dhcChTZWxlY3Rpb24gYWZ0ZXIpIHsKKyAgICAgICAgaW50IHRlbXAgPSBhbmNob3I7CisgICAgICAgIGFuY2hvciA9IGFmdGVyLmFuY2hvcjsKKyAgICAgICAgYWZ0ZXIuYW5jaG9yID0gdGVtcDsKKyAgICAgICAgdGVtcCA9IGNhcmV0OworICAgICAgICBjYXJldCA9IGFmdGVyLmNhcmV0OworICAgICAgICBhZnRlci5jYXJldCA9IHRlbXA7CisgICAgICAgIGJvb2xlYW4gYiA9IGNsaWNrQWZ0ZXI7CisgICAgICAgIGNsaWNrQWZ0ZXIgPSBhZnRlci5jbGlja0FmdGVyOworICAgICAgICBhZnRlci5jbGlja0FmdGVyID0gYjsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgcHVibGljIFNlbGVjdGlvbiBmaXhBZnRlclJlcGxhY2UoaW50IHN0YXJ0LCBpbnQgZW5kLCBpbnQgbGVuKSB7CisgICAgICAgIGlmIChhbmNob3IgPj0gc3RhcnQpIHsKKyAgICAgICAgICAgIGlmIChhbmNob3IgPCBlbmQpIGFuY2hvciA9IGVuZDsKKyAgICAgICAgICAgIGFuY2hvciA9IHN0YXJ0ICsgbGVuICsgYW5jaG9yIC0gZW5kOworICAgICAgICB9CisgICAgICAgIGlmIChjYXJldCA+PSBzdGFydCkgeworICAgICAgICAgICAgaWYgKGNhcmV0IDwgZW5kKSBjYXJldCA9IGVuZDsKKyAgICAgICAgICAgIGNhcmV0ID0gc3RhcnQgKyBsZW4gKyBjYXJldCAtIGVuZDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhpczsKKyAgICB9CisKKyAgICAgICAgLy8gTWFjICYgV2luZG93cyBjb25zaWRlcmFibHkgZGlmZmVyZW50CisgICAgICAgIC8vIE1hYzogZW5kKysuIElmIHN0YXJ0IT1lbmQsIHN0YXJ0PWVuZAorICAgICAgICAvLyAgU0hJRlQ6IG1vdmUgZW5kIHJpZ2h0CisgICAgICAgIC8vICBDVEw6IG5vIGRpZmZlcmVudAorICAgICAgICAvLyBXaW5kb3dzOgorICAgICAgICAvLyAgVU5TSElGVEVEOiBpZiBzdGFydCE9ZW5kLCBzdGFydCA9IGVuZCwgZWxzZSBzdGFydD1lbmQ9ZW5kKzE7CisgICAgICAgIC8vICAgICAgIGFuY2hvciA9IHRpcCA9IHN0YXJ0CisgICAgICAgIC8vICBTSElGVDogdGlwKysKKyAgICAgICAgLy8gIENUTDogaWYgc3RhcnQhPWVuZCwgc3RhcnQgPSBlbmQgPSBuZXh0Ym91bmQoZW5kLTEpLAorICAgICAgICAvLyAgIGVsc2Ugc3RhcnQ9ZW5kPW5leHRib3VuZChlbmQpCisgICAgICAgIC8vICAgICAgIGFuY2hvciA9IHRpcCA9IHN0YXJ0CisgICAgICAgIC8vICBDVEwvU0hJRlQ6IHRpcCA9IG5leHRib3VuZCh0aXApCisKKyAgICBwdWJsaWMgU2VsZWN0aW9uIG5leHRCb3VuZChCcmVha0l0ZXJhdG9yIGJyZWFrZXIsCisgICAgICBpbnQgZGlyZWN0aW9uLCBib29sZWFuIGV4dGVuZCkgeworICAgICAgICBpZiAoIWV4dGVuZCAmJiBhbmNob3IgIT0gY2FyZXQpIGNhcmV0IC09IGRpcmVjdGlvbjsKKyAgICAgICAgY2FyZXQgPSBuZXh0KGNhcmV0LCBicmVha2VyLCBkaXJlY3Rpb24sIHRydWUpOworICAgICAgICBpZiAoIWV4dGVuZCkgYW5jaG9yID0gY2FyZXQ7CisgICAgICAgIGNsaWNrQWZ0ZXIgPSBmYWxzZTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorCisgICAgLy8gZXhwYW5kIHN0YXJ0IGFuZCBlbmQgdG8gd29yZCBicmVha3MtLWlmIHRoZXkgYXJlIG5vdCBhbHJlYWR5IG9uIG9uZQorICAgIHB1YmxpYyB2b2lkIGV4cGFuZChCcmVha0l0ZXJhdG9yIGJyZWFrZXIpIHsKKyAgICAgICAgaWYgKGFuY2hvciA8PSBjYXJldCkgeworICAgICAgICAgICAgYW5jaG9yID0gbmV4dChhbmNob3IsYnJlYWtlciwtMSxmYWxzZSk7CisgICAgICAgICAgICBjYXJldCA9IG5leHQoY2FyZXQsYnJlYWtlciwxLGZhbHNlKTsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGJyZWFrZXIuZm9sbG93aW5nKGFuY2hvcik7CisgICAgICAgICAgICAgICAgYW5jaG9yID0gYnJlYWtlci5wcmV2aW91cygpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHt9CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGNhcmV0ID0gYnJlYWtlci5mb2xsb3dpbmcoY2FyZXQtMSk7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkge30KKyAgICAgICAgICAgICovCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBhbmNob3IgPSBuZXh0KGFuY2hvcixicmVha2VyLDEsZmFsc2UpOworICAgICAgICAgICAgY2FyZXQgPSBuZXh0KGNhcmV0LGJyZWFrZXIsLTEsZmFsc2UpOworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgYnJlYWtlci5mb2xsb3dpbmcoY2FyZXQpOworICAgICAgICAgICAgICAgIGNhcmV0ID0gYnJlYWtlci5wcmV2aW91cygpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHt9CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGFuY2hvciA9IGJyZWFrZXIuZm9sbG93aW5nKGFuY2hvci0xKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7fQorICAgICAgICAgICAgKi8KKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIGRpZmZlcmVudCA9IGZhbHNlIC0gbW92ZSB0byBuZXh0IGJvdW5kYXJ5LCB1bmxlc3Mgb24gb25lCisgICAgLy8gdHJ1ZSAtIG1vdmUgdG8gbmV4dCBib3VuZGFyeSwgZXZlbiBpZiBvbiBvbmUKKyAgICBwdWJsaWMgc3RhdGljIGludCBuZXh0KGludCBwb3NpdGlvbiwgQnJlYWtJdGVyYXRvciBicmVha2VyLAorICAgICAgaW50IGRpcmVjdGlvbiwgYm9vbGVhbiBkaWZmZXJlbnQpIHsKKyAgICAgICAgaWYgKCFkaWZmZXJlbnQpIHBvc2l0aW9uIC09IGRpcmVjdGlvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmIChkaXJlY3Rpb24gPiAwKSB7CisgICAgICAgICAgICAgICAgcG9zaXRpb24gPSBicmVha2VyLmZvbGxvd2luZyhwb3NpdGlvbik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGJyZWFrZXIuZm9sbG93aW5nKHBvc2l0aW9uLTEpOworICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gYnJlYWtlci5wcmV2aW91cygpOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkge30KKyAgICAgICAgcmV0dXJuIHBvc2l0aW9uOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9jb21wb25lbnRzL1RyYW5zbGl0ZXJhdGluZ1RleHRDb21wb25lbnQuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvY29tcG9uZW50cy9UcmFuc2xpdGVyYXRpbmdUZXh0Q29tcG9uZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uY2U3NDkwZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvY29tcG9uZW50cy9UcmFuc2xpdGVyYXRpbmdUZXh0Q29tcG9uZW50LmphdmEKQEAgLTAsMCArMSwyMDIgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvY29tcG9uZW50cy9BdHRpYy9UcmFuc2xpdGVyYXRpbmdUZXh0Q29tcG9uZW50LmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDYvMjggMjA6MzY6NDUgJCAKKyAqICRSZXZpc2lvbjogMS42ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRleHQuY29tcG9uZW50czsKKworaW1wb3J0IGphdmEuYXd0Lio7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuKjsKK2ltcG9ydCBqYXZhLnRleHQuKjsKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuKjsKK2ltcG9ydCBjb20uaWJtLnRleHQuKjsKKworLyoqCisgKiBBIHN1YmNsYXNzIG9mIHtAbGluayBEdW1iVGV4dENvbXBvbmVudH0gdGhhdCBwYXNzZXMga2V5IGV2ZW50cyB0aHJvdWdoCisgKiBhIHtAbGluayBjb20uaWJtLnRleHQuVHJhbnNsaXRlcmF0b3J9LgorICoKKyAqIDxwPkNvcHlyaWdodCAmY29weTsgSUJNIENvcnBvcmF0aW9uIDE5OTkuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqIEB2ZXJzaW9uICRSQ1NmaWxlOiBUcmFuc2xpdGVyYXRpbmdUZXh0Q29tcG9uZW50LmphdmEsdiAkICRSZXZpc2lvbjogMS42ICQgJERhdGU6IDIwMDAvMDYvMjggMjA6MzY6NDUgJAorICovCitwdWJsaWMgY2xhc3MgVHJhbnNsaXRlcmF0aW5nVGV4dENvbXBvbmVudCBleHRlbmRzIER1bWJUZXh0Q29tcG9uZW50IHsKKworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKKworICAgIHByaXZhdGUgVHJhbnNsaXRlcmF0b3IgdHJhbnNsaXQgPSBudWxsOworCisgICAgLy8gSW5kZXggaW50byBnZXRUZXh0KCkgd2hlcmUgdGhlIHN0YXJ0IG9mIHRyYW5zbGl0ZXJhdGlvbiBpcy4KKyAgICAvLyBBcyB3ZSBjb21taXQgdGV4dCBkdXJpbmcgdHJhbnNsaXRlcmF0aW9uLCB3ZSBhZHZhbmNlCisgICAgLy8gdGhpcy4KKyAgICBwcml2YXRlIGludCBzdGFydCA9IDA7CisKKyAgICAvLyBJbmRleCBpbnRvIGdldFRleHQoKSB3aGVyZSB0aGUgY3Vyc29yIGlzOyBjdXJzb3IgPj0gc3RhcnQKKyAgICBwcml2YXRlIGludCBjdXJzb3IgPSAwOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICJcdTAwQTkgSUJNIENvcnBvcmF0aW9uIDE5OTkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdG9yLgorICAgICAqLworICAgIHB1YmxpYyBUcmFuc2xpdGVyYXRpbmdUZXh0Q29tcG9uZW50KCkgeworICAgICAgICBzdXBlcigpOworICAgICAgICBhZGRBY3Rpb25MaXN0ZW5lcihuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgZSkgeworICAgICAgICAgICAgICAgIC8vIFdlIGdldCBhbiBBY3Rpb25FdmVudCBvbmx5IHdoZW4gdGhlIHNlbGVjdGlvbiBjaGFuZ2VzCisgICAgICAgICAgICAgICAgcmVzZXRUcmFuc2xpdGVyYXRpb25TdGFydCgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiB7QGxpbmsgRHVtYlRleHRDb21wb25lbnR9IEFQSS4gIEZyYW1ld29yayBtZXRob2QgdGhhdCBpcyBjYWxsZWQKKyAgICAgKiB3aGVuIGEgPGNvZGU+S2V5RXZlbnQ8L2NvZGU+IGlzIHJlY2VpdmVkLiAgVGhpcyBpbXBsZW1lbnRhdGlvbgorICAgICAqIHJ1bnMgdGhlIG5ldyBjaGFyYWN0ZXIgdGhyb3VnaCB0aGUgY3VycmVudAorICAgICAqIDxjb2RlPlRyYW5zbGl0ZXJhdG9yPC9jb2RlPiwgaWYgb25lIGlzIHNldCwgYW5kIGluc2VydHMgdGhlCisgICAgICogdHJhbnNsaXRlcmF0ZWQgdGV4dCBpbnRvIHRoZSBidWZmZXIuCisgICAgICovCisJcHJvdGVjdGVkIHZvaWQgaGFuZGxlS2V5VHlwZWQoS2V5RXZlbnQgZSkgeworICAgICAgICBjaGFyIGNoID0gZS5nZXRLZXlDaGFyKCk7CisKKyAgICAgICAgaWYgKHRyYW5zbGl0ID09IG51bGwpIHsKKyAgICAgICAgICAgIHN1cGVyLmhhbmRsZUtleVR5cGVkKGUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgY2FzZSBtb3RpdmF0ZXMgdGhlIHR3byBsaW5lcyB0aGF0IHJlY29tcHV0ZQorICAgICAgICAvLyBzdGFydCBhbmQgY3Vyc29yIGJlbG93LgorCisgICAgICAgIC8vICAgICAgIiAgICAgIiAgIAorICAgICAgICAvLyBhIGIgYyBxIHJ8cyB0IHUgbSBtCisgICAgICAgIC8vIDAgMSAyIDMgNCA1IDYgNyA4IDkKKyAgICAgICAgLy8gICAgICAgMCAxIDIKKworICAgICAgICAvLyBzdGFydCAzLCBjdXJzb3IgNSwgc2VsIDYgLT4geyAwLCAzLCAyIH0KKyAgICAgICAgLy8gOiBuZXcgaW50W10geyAwLCBzZWwgLSBzdGFydCwgY3Vyc29yIC0gc3RhcnQgfTsKKyAgICAgICAgCisgICAgICAgIC8vIHN6Pjk5fDkKKworICAgICAgICAvLyAgICAgICIgICAgIHsgICAiCisgICAgICAgIC8vIGEgYiBjIHEgciA5IDl8OSB0IHUgbSBtCisgICAgICAgIC8vIDAgMSAyIDMgNCA1IDYgNyA4IDkgYSBiCisgICAgICAgIC8vICAgICAgIDAgMSAyIDMgNAorCisgICAgICAgIC8vIHsgMywgNSwgNCB9IC0+IHN0YXJ0IDYsIGN1cnNvciA3LCBzZWwgOAorICAgICAgICAvLyA6IHN0YXJ0ICs9IGluZGV4WzBdOworICAgICAgICAvLyA6IGN1cnNvciA9IHN0YXJ0ICsgaW5kZXhbMl0gLSBpbmRleFswXTsKKyAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAgICAgLy8gTmVlZCB0byBzYXZlIHN0YXJ0IGJlY2F1c2UgY2FsbHMgdG8gcmVwbGFjZVJhbmdlIHdpbGwgdXBkYXRlCisgICAgICAgIC8vIHN0YXJ0IGFuZCBjdXJzb3IuCisgICAgICAgIGludCBzYXZlU3RhcnQgPSBzdGFydDsKKworICAgICAgICBSZXBsYWNlYWJsZVN0cmluZyBidWYgPSBuZXcgUmVwbGFjZWFibGVTdHJpbmcoKTsKKyAgICAgICAgYnVmLnJlcGxhY2UoMCwgMSwgZ2V0VGV4dCgpLnN1YnN0cmluZyhzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRTZWxlY3Rpb25TdGFydCgpKSk7CisKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IuUG9zaXRpb24gaW5kZXggPQorICAgICAgICAgICAgbmV3IFRyYW5zbGl0ZXJhdG9yLlBvc2l0aW9uKDAsIGdldFNlbGVjdGlvblN0YXJ0KCkgLSBzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3IgLSBzdGFydCk7CisKKyAgICAgICAgU3RyaW5nQnVmZmVyIGxvZyA9IG51bGw7CisgICAgICAgIGlmIChERUJVRykgeworICAgICAgICAgICAgbG9nID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICAgICAgbG9nLmFwcGVuZCgic3RhcnQgIiArIHN0YXJ0ICsgIiwgY3Vyc29yICIgKyBjdXJzb3IpOworICAgICAgICAgICAgbG9nLmFwcGVuZCgiLCBzZWwgIiArIGdldFNlbGVjdGlvblN0YXJ0KCkpOworICAgICAgICAgICAgbG9nLmFwcGVuZCgiLCB7IiArIGluZGV4LmNvbnRleHRTdGFydCArICIsICIgKyBpbmRleC5jb250ZXh0TGltaXQgKyAiLCAiICsgaW5kZXguc3RhcnQgKyAifSwgIik7CisgICAgICAgICAgICBsb2cuYXBwZW5kKCciJyArIGJ1Zi50b1N0cmluZygpICsgIlwiICsgJyIgKyBjaCArICInIC0+IFwiIik7CisgICAgICAgIH0KKworICAgICAgICB0cmFuc2xpdC50cmFuc2xpdGVyYXRlKGJ1ZiwgaW5kZXgsIGNoKTsKKyAgICAgICAgcmVwbGFjZVJhbmdlKGJ1Zi50b1N0cmluZygpLCBzdGFydCwgZ2V0U2VsZWN0aW9uRW5kKCkpOworICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHN0YXJ0IGhhcyBiZWVuIGNoYW5nZWQgYnkgdGhlIGNhbGxiYWNrIHRvCisgICAgICAgIC8vIHJlc2V0VHJhbnNsaXRlcmF0b3JTdGFydCgpIHZpYSByZXBsYWNlUmFuZ2UoKSAtLSBzbyB1c2Ugb3VyCisgICAgICAgIC8vIGxvY2FsIGNvcHksIHNhdmVTdGFydC4KKworICAgICAgICAvLyBUaGUgU1RBUlQgaW5kZXggaXMgemVyby1iYXNlZC4gIE9uIGVudHJ5IHRvIHRyYW5zbGl0ZXJhdGUoKSwKKyAgICAgICAgLy8gaXQgd2FzIHplcm8uICBXZSBjYW4gdGhlcmVmb3JlIGp1c3QgYWRkIGl0IHRvIG91ciBvcmlnaW5hbAorICAgICAgICAvLyBnZXRUZXh0KCktYmFzZWQgaW5kZXggdmFsdWUgb2Ygc3RhcnQgKGluIHNhdmVTdGFydCkgdG8gZ2V0CisgICAgICAgIC8vIHRoZSBuZXcgZ2V0VGV4dCgpLWJhc2VkIHN0YXJ0LgorICAgICAgICBzdGFydCA9IHNhdmVTdGFydCArIGluZGV4LmNvbnRleHRTdGFydDsKKworICAgICAgICAvLyBNYWtlIHRoZSBjdXJzb3IgZ2V0VGV4dCgpLWJhc2VkLiAgVGhlIENVUlNPUiBpbmRleCBpcyB6ZXJvLWJhc2VkLgorICAgICAgICBjdXJzb3IgPSBzdGFydCArIGluZGV4LnN0YXJ0IC0gaW5kZXguY29udGV4dFN0YXJ0OworCisgICAgICAgIGlmIChERUJVRykgeworICAgICAgICAgICAgU3RyaW5nIG91dCA9IGJ1Zi50b1N0cmluZygpOworICAgICAgICAgICAgbG9nLmFwcGVuZChvdXQuc3Vic3RyaW5nKDAsIGluZGV4LmNvbnRleHRTdGFydCkpLgorICAgICAgICAgICAgICAgIGFwcGVuZCgneycpLgorICAgICAgICAgICAgICAgIGFwcGVuZChvdXQuc3Vic3RyaW5nKGluZGV4LmNvbnRleHRTdGFydCwgaW5kZXguc3RhcnQpKS4KKyAgICAgICAgICAgICAgICBhcHBlbmQoJ3wnKS4KKyAgICAgICAgICAgICAgICBhcHBlbmQob3V0LnN1YnN0cmluZyhpbmRleC5zdGFydCkpLgorICAgICAgICAgICAgICAgIGFwcGVuZCgnIicpOworICAgICAgICAgICAgbG9nLmFwcGVuZCgiLCB7IiArIGluZGV4LmNvbnRleHRTdGFydCArICIsICIgKyBpbmRleC5jb250ZXh0TGltaXQgKyAiLCAiICsgaW5kZXguc3RhcnQgKyAifSwgIik7CisgICAgICAgICAgICBsb2cuYXBwZW5kKCJzdGFydCAiICsgc3RhcnQgKyAiLCBjdXJzb3IgIiArIGN1cnNvcik7CisgICAgICAgICAgICBsb2cuYXBwZW5kKCIsIHNlbCAiICsgZ2V0U2VsZWN0aW9uU3RhcnQoKSk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oZXNjYXBlKGxvZy50b1N0cmluZygpKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgdGhlIHtAbGluayBjb20uaWJtLnRleHQuVHJhbnNsaXRlcmF0b3J9IGFuZCBkaXJlY3Rpb24gdG8KKyAgICAgKiB1c2UgdG8gcHJvY2VzcyBpbmNvbWluZyA8Y29kZT5LZXlFdmVudDwvY29kZT5zLgorICAgICAqIEBwYXJhbSB0IHRoZSB7QGxpbmsgY29tLmlibS50ZXh0LlRyYW5zbGl0ZXJhdG9yfSB0byB1c2UKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRUcmFuc2xpdGVyYXRvcihUcmFuc2xpdGVyYXRvciB0KSB7CisgICAgICAgIGlmICh0cmFuc2xpdCAhPSB0KSB7IC8vIFtzaWNdIHBvaW50ZXIgY29tcGFyZSBvazsgc2luZ2xldG9ucworICAgICAgICAgICAgcmVzZXRUcmFuc2xpdGVyYXRpb25TdGFydCgpOworICAgICAgICB9CisgICAgICAgIHRyYW5zbGl0ID0gdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXNldCB0aGUgc3RhcnQgcG9pbnQgYXQgd2hpY2ggdHJhbnNsaXRlcmF0aW9uIGJlZ2lucy4gIFRoaXMKKyAgICAgKiBuZWVkcyB0byBiZSBkb25lIHdoZW4gdGhlIHVzZXIgbW92ZXMgdGhlIGN1cnNvciBvciB3aGVuIHRoZQorICAgICAqIGN1cnJlbnQge0BsaW5rIGNvbS5pYm0udGV4dC5UcmFuc2xpdGVyYXRvcn0gaXMgY2hhbmdlZC4gCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHJlc2V0VHJhbnNsaXRlcmF0aW9uU3RhcnQoKSB7CisgICAgICAgIHN0YXJ0ID0gZ2V0U2VsZWN0aW9uU3RhcnQoKTsKKyAgICAgICAgY3Vyc29yID0gc3RhcnQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogRXNjYXBlIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIGFzIFVuaWNvZGUuCisgICAgICogSlVTVCBGT1IgREVCVUdHSU5HIE9VVFBVVC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBlc2NhcGUoU3RyaW5nIHMpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZiA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPHMubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgY2hhciBjID0gcy5jaGFyQXQoaSk7CisgICAgICAgICAgICBpZiAoYyA+PSAnICcgJiYgYyA8PSAweDAwN0YpIHsKKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXFwnKSB7CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoIlxcXFwiKTsgLy8gVGhhdCBpcywgIlxcIgorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoYyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCJcXHUiKTsKKyAgICAgICAgICAgICAgICBpZiAoYyA8IDB4MTAwMCkgeworICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjIDwgMHgxMDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJzAnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjIDwgMHgxMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQoJzAnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBidWYuYXBwZW5kKEludGVnZXIudG9IZXhTdHJpbmcoYykpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBidWYudG9TdHJpbmcoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L2NvbXBvbmVudHMvcGFja2FnZS5odG1sIGIvc3JjL2NvbS9pYm0vdGV4dC9jb21wb25lbnRzL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hZDhjZGYzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9jb21wb25lbnRzL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPCEtLSAgQ29weXJpZ2h0IChDKSAyMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorICBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9jb21wb25lbnRzL0F0dGljL3BhY2thZ2UuaHRtbCx2ICQKKyAgJFJldmlzaW9uOiAxLjEgJAorICAkRGF0ZTogMjAwMC8wMy8xNSAyMTozNTo1MSAkCistLT4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIj4KK0dVSSBjb21wb25lbnRzIGZvciB1c2Ugd2l0aCBUcmFuc2xpdGVyYXRvci4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL3RleHQvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmNmMWVhNjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPCEtLSAgQ29weXJpZ2h0IChDKSAyMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorICBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9BdHRpYy9wYWNrYWdlLmh0bWwsdiAkCisgICRSZXZpc2lvbjogMS4xICQKKyAgJERhdGU6IDIwMDAvMDMvMTUgMjE6MzU6NTEgJAorLS0+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CitDbGFzc2VzIGZvciBSdWxlQmFzZWRCcmVha0l0ZXJhdG9yLCBEaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yCitOb3JtYWxpemVyLCBSdWxlQmFzZWROdW1iZXJGb3JtYXQsIEJpZ051bWJlckZvcm1hdCwKK1VuaWNvZGUgY29tcHJlc3Npb24sIEludGVybmF0aW9uYWwgU2VhcmNoaW5nLCBhbmQgVHJhbnNsaXRlcmF0b3IuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvQnJlYWtJdGVyYXRvclJ1bGVzLmphdmEgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9CcmVha0l0ZXJhdG9yUnVsZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xMDQzNDRmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvQnJlYWtJdGVyYXRvclJ1bGVzLmphdmEKQEAgLTAsMCArMSwzMzggQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL0F0dGljL0JyZWFrSXRlcmF0b3JSdWxlcy5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAxLzAyLzA2IDIyOjM3OjQ1ICQgCisgKiAkUmV2aXNpb246IDEuNSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50ZXh0LnJlc291cmNlczsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8qKgorICogRGVmYXVsdCBicmVhay1pdGVyYXRvciBydWxlcy4gIFRoZXNlIHJ1bGVzIGFyZSBtb3JlIG9yIGxlc3MgZ2VuZXJhbCBmb3IKKyAqIGFsbCBsb2NhbGVzLCBhbHRob3VnaCB0aGVyZSBhcmUgcHJvYmFibHkgYSBmZXcgd2UncmUgbWlzc2luZy4gIFRoZQorICogYmVoYXZpb3IgY3VycmVudGx5IG1pbWljcyB0aGUgYmVoYXZpb3Igb2YgQnJlYWtJdGVyYXRvciBpbiBKREsgMS4yLgorICogVGhlcmUgYXJlIGtub3duIGRlZmljaWVuY2llcyBpbiB0aGlzIGJlaGF2aW9yLCBpbmNsdWRpbmcgdGhlIGZhY3QgdGhhdAorICogdGhlIGxvZ2ljIGZvciBoYW5kbGluZyBDSksgY2hhcmFjdGVycyB3b3JrcyBmb3IgSmFwYW5lc2UgYnV0IG5vdCBmb3IKKyAqIENoaW5lc2UsIGFuZCB0aGF0IHdlIGRvbid0IGN1cnJlbnRseSBoYXZlIGFuIGFwcHJvcHJpYXRlIGxvY2FsZSBmb3IKKyAqIFRoYWkuICBUaGUgcmVzb3VyY2VzIHdpbGwgZXZlbnR1YWxseSBiZSB1cGRhdGVkIHRvIGZpeCB0aGVzZSBwcm9ibGVtcy4KKyAqLworCisgLyogTW9kaWZpZWQgZm9yIEhpbmRpIDMvMS85OS4gKi8KKworcHVibGljIGNsYXNzIEJyZWFrSXRlcmF0b3JSdWxlcyBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBjb250ZW50czsKKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgT2JqZWN0W11bXSBjb250ZW50cyA9IHsKKyAgICAgICAgLy8gQnJlYWtJdGVyYXRvckNsYXNzZXMgbGlzdHMgdGhlIGNsYXNzIG5hbWVzIHRvIGluc3RhbnRpYXRlIGZvciBlYWNoCisgICAgICAgIC8vIGJ1aWx0LWluIHR5cGUgb2YgQnJlYWtJdGVyYXRvcgorICAgICAgICB7ICJCcmVha0l0ZXJhdG9yQ2xhc3NlcyIsCisgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAiUnVsZUJhc2VkQnJlYWtJdGVyYXRvciIsICAgICAvLyBjaGFyYWN0ZXItYnJlYWsgaXRlcmF0b3IgY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIiwgICAgIC8vIHdvcmQtYnJlYWsgaXRlcmF0b3IgY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIiwgICAgIC8vIGxpbmUtYnJlYWsgaXRlcmF0b3IgY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJSdWxlQmFzZWRCcmVha0l0ZXJhdG9yIiB9ICAgIC8vIHNlbnRlbmNlLWJyZWFrIGl0ZXJhdG9yIGNsYXNzCisgICAgICAgIH0sCisKKyAgICAgICAgLy8gcnVsZXMgZGVzY3JpYmluZyBob3cgdG8gYnJlYWsgYmV0d2VlbiBsb2dpY2FsIGNoYXJhY3RlcnMKKyAgICAgICAgeyAiQ2hhcmFjdGVyQnJlYWtSdWxlcyIsCisgICAgICAgICAgICAvLyBpZ25vcmUgbm9uLXNwYWNpbmcgbWFya3MgYW5kIGVuY2xvc2luZyBtYXJrcyAoc2luY2Ugd2UgbmV2ZXIKKyAgICAgICAgICAgIC8vIHB1dCBhIGJyZWFrIGJlZm9yZSBpZ25vcmUgY2hhcmFjdGVycywgdGhpcyBrZWVwcyBjb21iaW5pbmcKKyAgICAgICAgICAgIC8vIGFjY2VudHMgd2l0aCB0aGUgYmFzZSBjaGFyYWN0ZXJzIHRoZXkgbW9kaWZ5KQorICAgICAgICAgICAgLy8gRklYTUU6IHRoZSB2aXJhbWEgdGhpbmcgaXMgcHJvYmFibHkgYSBoYWNrLi4uCisgICAgICAgICAgICAgICIkZGV2YVZpcmFtYT1bXHUwOTRkXTsiCisgICAgICAgICAgICArICIkX2lnbm9yZV89W1tbOk1uOl0tJGRldmFWaXJhbWFdWzpNZTpdXTsiCisKKyAgICAgICAgICAgIC8vIG90aGVyIGNhdGVnb3J5IGRlZmluaXRpb25zCisgICAgICAgICAgICArICIkY2hvc2Vvbmc9W1x1MTEwMC1cdTExNWZdOyIKKyAgICAgICAgICAgICsgIiRqdW5nc2Vvbmc9W1x1MTE2MC1cdTExYTddOyIKKyAgICAgICAgICAgICsgIiRqb25nc2Vvbmc9W1x1MTFhOC1cdTExZmZdOyIKKyAgICAgICAgICAgICsgIiRzdXJyX2hpPVtcdWQ4MDAtXHVkYmZmXTsiCisgICAgICAgICAgICArICIkc3Vycl9sbz1bXHVkYzAwLVx1ZGZmZl07IgorCisgICAgICAgICAgICAvLyBicmVhayBhZnRlciBldmVyeSBjaGFyYWN0ZXIsIGV4Y2VwdCBhcyBmb2xsb3dzOgorICAgICAgICAgICAgKyAiLjsiCisKKyAgICAgICAgICAgIC8vIGtlZXAgQ1JMRiBzZXF1ZW5jZXMgdG9nZXRoZXIKKyAgICAgICAgICAgICsgIlxyXG47IgorCisgICAgICAgICAgICAvLyBrZWVwIHN1cnJvZ2F0ZSBwYWlycyB0b2dldGhlcgorICAgICAgICAgICAgKyAiJHN1cnJfaGkkc3Vycl9sbzsiCisKKyAgICAgICAgICAgIC8vIGtlZXAgSGFuZ3VsIHN5bGxhYmxlcyBzcGVsbGVkIG91dCB1c2luZyBjb25qb2luaW5nIGphbW8gdG9nZXRoZXIKKyAgICAgICAgICAgICsgIiRjaG9zZW9uZyokanVuZ3Nlb25nKiRqb25nc2VvbmcqOyIKKworICAgICAgICAgICAgLy8gcmV2aXNlZCBEZXZhbmFnYXJpIHN1cHBvcnQgLSBmdWxsIHN5bGxhYmxlcworICAgICAgICAgICAgLy8gc2ltcGxpZmllZCBieSBhbGxvd2luZyBzb21lIG5vbnNlbnNlIHN5bGxhYmxlcworICAgICAgICAgICAgLy8gRklYTUU6IG51a3RhLCBub24tc3BhY2luZyBtYXRyYXMsIGFuZCB0aGUgbW9kaWZpZXJzCisgICAgICAgICAgICAvLyBhcmUgYWxsIGlnbm9yYWJsZSwgc28gdGhleSBkb24ndCBuZWVkIHRvIGJlIG1lbnRpb25lZAorICAgICAgICAgICAgLy8gaGVyZS4uLiAoYnV0IHRoZSBydWxlcyByZWFkIGJldHRlciBpZiB0aGV5IGFyZS4uLikKKyAgICAgICAgICAgICsgIiRkZXZhTnVrdGE9W1x1MDkzY107IgorICAgICAgICAgICAgKyAiJGRldmFWb3dlbD1bXHUwOTA1LVx1MDkxNF07IgorICAgICAgICAgICAgKyAiJGRldmFNYXRyYT1bXHUwOTNlLVx1MDk0Y1x1MDk2Mlx1MDk2M107IgorICAgICAgICAgICAgKyAiJGRldmFDb25zb25hbnQ9W1x1MDkxNS1cdTA5MzlcdTA5NTgtXHUwOTVmXTsiCisgICAgICAgICAgICArICIkZGV2YU1vZGlmaWVyPVtcdTA5MDEtXHUwOTAzXHUwOTUxLVx1MDk1NF07IgorICAgICAgICAgICAgKyAiJHp3bmo9W1x1MjAwY107IgorICAgICAgICAgICAgKyAiJHp3aj1bXHUyMDBkXTsiCisgICAKKyAgICAgICAgICAgIC8vIGNvbnNvbmFudCBmb2xsb3dlZCBvcHRpb25hbGx5IGJ5IGEgbnVrdGEKKyAgICAgICAgICAgICsgIiRkZXZhQ049KCRkZXZhQ29uc29uYW50JGRldmFOdWt0YT8pOyIKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gYSB2aXJhbWEgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgendqIG9yIHp3bmoKKyAgICAgICAgICAgICsgIiRkZXZhSm9pbj0oJGRldmFWaXJhbWFbJHp3aiR6d25qXT8pOyIKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gYSBzeWxsYWJsZSB3aXRoIGF0IGxlYXN0IG9uZSBjb25zb25hbnQKKyAgICAgICAgICAgICsgIigkZGV2YUNOJGRldmFKb2luKSokZGV2YUNOKCRkZXZhSm9pbnwkZGV2YU1hdHJhPyRkZXZhTW9kaWZpZXIqKTsiCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIGEgc3lsbGFibGUgd2l0aG91dCBjb25zb25hbnRzCisgICAgICAgICAgICArICIkZGV2YVZvd2VsJGRldmFNb2RpZmllcio7IgorICAgICAgICB9LAorCisgICAgICAgIC8vIGRlZmF1bHQgcnVsZXMgZm9yIGZpbmRpbmcgd29yZCBib3VuZGFyaWVzCisgICAgICAgIHsgIldvcmRCcmVha1J1bGVzIiwKKyAgICAgICAgICAgIC8vIGlnbm9yZSBub24tc3BhY2luZyBtYXJrcywgZW5jbG9zaW5nIG1hcmtzLCBhbmQgZm9ybWF0IGNoYXJhY3RlcnMsCisgICAgICAgICAgICAvLyBhbGwgb2Ygd2hpY2ggc2hvdWxkIG5vdCBpbmZsdWVuY2UgdGhlIGFsZ29yaXRobQorICAgICAgICAgICAgIiRfaWdub3JlXz1bWzpNbjpdWzpNZTpdWzpDZjpdXTsiCisKKyAgICAgICAgICAgIC8vIEhpbmRpIHBocmFzZSBzZXBhcmF0b3IsIGthbmppLCBrYXRha2FuYSwgaGlyYWdhbmEsIENKSyBkaWFjcml0aWNhbHMsCisgICAgICAgICAgICAvLyBvdGhlciBsZXR0ZXJzLCBhbmQgZGlnaXRzCisgICAgICAgICAgICArICIkZGFuZGE9W1x1MDk2NFx1MDk2NV07IgorICAgICAgICAgICAgKyAiJGthbmppPVtcdTMwMDVcdTRlMDAtXHU5ZmE1XHVmOTAwLVx1ZmEyZF07IgorICAgICAgICAgICAgKyAiJGthdGE9W1x1MzA5OS1cdTMwOWNcdTMwYTEtXHUzMGZlXTsiCisgICAgICAgICAgICArICIkaGlyYT1bXHUzMDQxLVx1MzA5ZVx1MzBmY107IgorICAgICAgICAgICAgKyAiJGxldD1bW1s6TDpdWzpNYzpdXS1bJGthbmppJGthdGEkaGlyYV1dOyIKKyAgICAgICAgICAgICsgIiRkZ3Q9WzpOOl07IgorCisgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbiB0aGF0IGNhbiBvY2N1ciBpbiB0aGUgbWlkZGxlIG9mIGEgd29yZDogY3VycmVudGx5CisgICAgICAgICAgICAvLyBkYXNoZXMsIGFwb3N0cm9waGVzLCBxdW90YXRpb24gbWFya3MsIGFuZCBwZXJpb2RzCisgICAgICAgICAgICArICIkbWlkX3dvcmQ9W1s6UGQ6XVx1MDBhZFx1MjAyN1xcXCJcXFwnXFwuXTsiCisKKyAgICAgICAgICAgIC8vIHB1bmN0dWF0aW9uIHRoYXQgY2FuIG9jY3VyIGluIHRoZSBtaWRkbGUgb2YgYSBudW1iZXI6IGN1cnJlbnRseQorICAgICAgICAgICAgLy8gYXBvc3Ryb3BoZXMsIHFvdXRhdGlvbiBtYXJrcywgcGVyaW9kcywgY29tbWFzLCBhbmQgdGhlIEFyYWJpYworICAgICAgICAgICAgLy8gZGVjaW1hbCBwb2ludAorICAgICAgICAgICAgKyAiJG1pZF9udW09W1xcXCJcXFwnXFwsXHUwNjZiXFwuXTsiCisKKyAgICAgICAgICAgIC8vIHB1bmN0dWF0aW9uIHRoYXQgY2FuIG9jY3VyIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBudW1iZXI6IGN1cnJlbnRseQorICAgICAgICAgICAgLy8gdGhlIHBlcmlvZCwgdGhlIG51bWJlciBzaWduLCBhbmQgYWxsIGN1cnJlbmN5IHN5bWJvbHMgZXhjZXB0IHRoZSBjZW50cyBzaWduCisgICAgICAgICAgICArICIkcHJlX251bT1bW1s6U2M6XS1bXHUwMGEyXV1cXCNcXC5dOyIKKworICAgICAgICAgICAgLy8gcHVuY3R1YXRpb24gdGhhdCBjYW4gb2NjdXIgYXQgdGhlIGVuZCBvZiBhIG51bWJlcjogY3VycmVudGx5CisgICAgICAgICAgICAvLyB0aGUgcGVyY2VudCwgcGVyLXRob3VzYW5kLCBwZXItdGVuLXRob3VzYW5kLCBhbmQgQXJhYmljIHBlcmNlbnQKKyAgICAgICAgICAgIC8vIHNpZ25zLCB0aGUgY2VudHMgc2lnbiwgYW5kIHRoZSBhbXBlcnNhbmQKKyAgICAgICAgICAgICsgIiRwb3N0X251bT1bXFwlXFwmXHUwMGEyXHUwNjZhXHUyMDMwXHUyMDMxXTsiCisKKyAgICAgICAgICAgIC8vIGxpbmUgc2VwYXJhdG9yczogY3VycmVudGx5IExGLCBGRiwgUFMsIGFuZCBMUworICAgICAgICAgICAgKyAiJGxzPVtcblx1MDAwY1x1MjAyOFx1MjAyOV07IgorCisgICAgICAgICAgICAvLyB3aGl0ZXNwYWNlOiBhbGwgc3BhY2Ugc2VwYXJhdG9ycyBhbmQgdGhlIHRhYiBjaGFyYWN0ZXIKKyAgICAgICAgICAgICsgIiR3cz1bWzpaczpdXHRdOyIKKworICAgICAgICAgICAgLy8gYSB3b3JkIGlzIGEgc2VxdWVuY2Ugb2YgbGV0dGVycyB0aGF0IG1heSBjb250YWluIGludGVybmFsCisgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbiwgYXMgbG9uZyBhcyBpdCBiZWdpbnMgYW5kIGVuZHMgd2l0aCBhIGxldHRlciBhbmQKKyAgICAgICAgICAgIC8vIG5ldmVyIGNvbnRhaW5zIHR3byBwdW5jdHVhdGlvbiBtYXJrcyBpbiBhIHJvdworICAgICAgICAgICAgKyAiJHdvcmQ9KCRsZXQrKCRtaWRfd29yZCRsZXQrKSokZGFuZGE/KTsiCisKKyAgICAgICAgICAgIC8vIGEgbnVtYmVyIGlzIGEgc2VxdWVuY2Ugb2YgZGlnaXRzIHRoYXQgbWF5IGNvbnRhaW4gaW50ZXJuYWwKKyAgICAgICAgICAgIC8vIHB1bmN0dWF0aW9uLCBhcyBsb25nIGFzIGl0IGJlZ2lucyBhbmQgZW5kcyB3aXRoIGEgZGlnaXQgYW5kCisgICAgICAgICAgICAvLyBuZXZlciBjb250YWlucyB0d28gcHVuY3R1YXRpb24gbWFya3MgaW4gYSByb3cuCisgICAgICAgICAgICArICIkbnVtYmVyPSgkZGd0KygkbWlkX251bSRkZ3QrKSopOyIKKworICAgICAgICAgICAgLy8gYnJlYWsgYWZ0ZXIgZXZlcnkgY2hhcmFjdGVyLCB3aXRoIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9ucworICAgICAgICAgICAgLy8gKHRoaXMgd2lsbCBjYXVzZSBwdW5jdHVhdGlvbiBtYXJrcyB0aGF0IGFyZW4ndCBjb25zaWRlcmVkCisgICAgICAgICAgICAvLyBwYXJ0IG9mIHdvcmRzIG9yIG51bWJlcnMgdG8gYmUgdHJlYXRlZCBhcyB3b3JkcyB1bnRvIHRoZW1zZWx2ZXMpCisgICAgICAgICAgICArICIuOyIKKworICAgICAgICAgICAgLy8ga2VlcCB0b2dldGhlciBhbnkgc2VxdWVuY2Ugb2YgY29udGlndW91cyB3b3JkcyBhbmQgbnVtYmVycworICAgICAgICAgICAgLy8gKGluY2x1ZGluZyBqdXN0IG9uZSBvZiBlaXRoZXIpLCBwbHVzIGFuIG9wdGlvbmFsIHRyYWlsaW5nCisgICAgICAgICAgICAvLyBudW1iZXItc3VmZml4IGNoYXJhY3RlcgorICAgICAgICAgICAgKyAiJHdvcmQ/KCRudW1iZXIkd29yZCkqKCRudW1iZXIkcG9zdF9udW0/KT87IgorCisgICAgICAgICAgICAvLyBrZWVwIHRvZ2V0aGVyIGFuZCBzZXF1ZW5jZSBvZiBjb250aWd1b3VzIHdvcmRzIGFuZCBudW1iZXJzCisgICAgICAgICAgICAvLyB0aGF0IHN0YXJ0cyB3aXRoIGEgbnVtYmVyLXByZWZpeCBjaGFyYWN0ZXIgYW5kIGEgbnVtYmVyLAorICAgICAgICAgICAgLy8gYW5kIG1heSBlbmQgd2l0aCBhIG51bWJlci1zdWZmaXggY2hhcmFjdGVyCisgICAgICAgICAgICArICIkcHJlX251bSgkbnVtYmVyJHdvcmQpKigkbnVtYmVyJHBvc3RfbnVtPyk/OyIKKworICAgICAgICAgICAgLy8ga2VlcCB0b2dldGhlciBydW5zIG9mIHdoaXRlc3BhY2UgKG9wdGlvbmFsbHkgd2l0aCBhIHNpbmdsZSB0cmFpbGluZworICAgICAgICAgICAgLy8gbGluZSBzZXBhcmF0b3Igb3IgQ1JMRiBzZXF1ZW5jZSkKKyAgICAgICAgICAgICsgIiR3cypccj8kbHM/OyIKKworICAgICAgICAgICAgLy8ga2VlcCB0b2dldGhlciBydW5zIG9mIEthdGFrYW5hCisgICAgICAgICAgICArICIka2F0YSo7IgorCisgICAgICAgICAgICAvLyBrZWVwIHRvZ2V0aGVyIHJ1bnMgb2YgSGlyYWdhbmEKKyAgICAgICAgICAgICsgIiRoaXJhKjsiCisKKyAgICAgICAgICAgIC8vIGtlZXAgdG9nZXRoZXIgcnVucyBvZiBLYW5qaQorICAgICAgICAgICAgKyAiJGthbmppKjsiCisgICAgICAgIH0sCisKKyAgICAgICAgLy8gZGVmYXVsdCBydWxlcyBmb3IgZGV0ZXJtaW5pbmcgbGVnYWwgbGluZS1icmVha2luZyBwb3NpdGlvbnMKKyAgICAgICAgeyAiTGluZUJyZWFrUnVsZXMiLAorICAgICAgICAgICAgLy8gaWdub3JlIG5vbi1zcGFjaW5nIG1hcmtzLCBlbmNsb3NpbmcgbWFya3MsIGFuZCBmb3JtYXQgY2hhcmFjdGVycworICAgICAgICAgICAgIiRfaWdub3JlXz1bWzpNbjpdWzpNZTpdWzpDZjpdXTsiCisKKyAgICAgICAgICAgIC8vIEhpbmRpIHBocmFzZSBzZXBhcmF0b3JzCisgICAgICAgICAgICArICIkZGFuZGE9W1x1MDk2NFx1MDk2NV07IgorCisgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzIHRoYXQgYWx3YXlzIGNhdXNlIGEgYnJlYWs6IEVUWCwgdGFiLCBMRiwgRkYsIExTLCBhbmQgUFMKKyAgICAgICAgICAgICsgIiRicmVhaz1bXHUwMDAzXHRcblxmXHUyMDI4XHUyMDI5XTsiCisKKyAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMgdGhhdCBhbHdheXMgcHJldmVudCBhIGJyZWFrOiB0aGUgbm9uLWJyZWFraW5nIHNwYWNlCisgICAgICAgICAgICAvLyBhbmQgc2ltaWxhciBjaGFyYWN0ZXJzCisgICAgICAgICAgICArICIkbmJzcD1bXHUwMGEwXHUyMDA3XHUyMDExXHVmZWZmXTsiCisKKyAgICAgICAgICAgIC8vIHdoaXRlc3BhY2U6IHNwYWNlIHNlcGFyYXRvcnMgYW5kIGNvbnRyb2wgY2hhcmFjdGVycywgZXhjZXB0IGZvcgorICAgICAgICAgICAgLy8gQ1IgYW5kIHRoZSBvdGhlciBjaGFyYWN0ZXJzIG1lbnRpb25lZCBhYm92ZQorICAgICAgICAgICAgKyAiJHNwYWNlPVtbWzpaczpdWzpDYzpdXS1bJG5ic3AkYnJlYWtccl1dOyIKKworICAgICAgICAgICAgLy8gZGFzaGVzOiBkYXNoIHB1bmN0dWF0aW9uIGFuZCB0aGUgZGlzY3JldGlvbmFyeSBoeXBoZW4sIGV4Y2VwdCBmb3IKKyAgICAgICAgICAgIC8vIG5vbi1icmVha2luZyBoeXBoZW5zCisgICAgICAgICAgICArICIkZGFzaD1bW1s6UGQ6XVx1MDBhZF0tWyRuYnNwXV07IgorCisgICAgICAgICAgICAvLyBjaGFyYWN0ZXJzIHRoYXQgc3RpY2sgdG8gYSB3b3JkIGlmIHRoZXkgcHJlY2VkZSBpdDogY3VycmVuY3kgc3ltYm9scworICAgICAgICAgICAgLy8gKGV4Y2VwdCB0aGUgY2VudHMgc2lnbikgYW5kIHN0YXJ0aW5nIHB1bmN0dWF0aW9uCisgICAgICAgICAgICArICIkcHJlX3dvcmQ9W1tbOlNjOl0tW1x1MDBhMl1dWzpQczpdXFxcIlxcXCddOyIKKworICAgICAgICAgICAgLy8gY2hhcmFjdGVycyB0aGF0IHN0aWNrIHRvIGEgd29yZCBpZiB0aGV5IGZvbGxvdyBpdDogZW5kaW5nIHB1bmN0dWF0aW9uLAorICAgICAgICAgICAgLy8gb3RoZXIgcHVuY3R1YXRpb24gdGhhdCB1c3VhbGx5IG9jY3VycyBhdCB0aGUgZW5kIG9mIGEgc2VudGVuY2UsCisgICAgICAgICAgICAvLyBzbWFsbCBLYW5hIGNoYXJhY3RlcnMsIHNvbWUgQ0pLIGRpYWNyaXRpY3MsIGV0Yy4KKyAgICAgICAgICAgICsgIiRwb3N0X3dvcmQ9W1s6UGU6XVxcIVxcXCJcXFwnXFwlXFwuXFwsXFw6XFw7XFw/XHUwMGEyXHUwMGIwXHUwNjZhXHUyMDMwLVx1MjAzNCIKKyAgICAgICAgICAgICAgICAgICAgKyAiXHUyMTAzXHUyMTA1XHUyMTA5XHUzMDAxXHUzMDAyXHUzMDA1XHUzMDQxXHUzMDQzXHUzMDQ1XHUzMDQ3XHUzMDQ5XHUzMDYzIgorICAgICAgICAgICAgICAgICAgICArICJcdTMwODNcdTMwODVcdTMwODdcdTMwOGVcdTMwOTktXHUzMDllXHUzMGExXHUzMGEzXHUzMGE1XHUzMGE3XHUzMGE5IgorICAgICAgICAgICAgICAgICAgICArICJcdTMwYzNcdTMwZTNcdTMwZTVcdTMwZTdcdTMwZWVcdTMwZjVcdTMwZjZcdTMwZmMtXHUzMGZlXHVmZjAxXHVmZjBjIgorICAgICAgICAgICAgICAgICAgICArICJcdWZmMGVcdWZmMWZdOyIKKworICAgICAgICAgICAgLy8gS2Fuamk6IGFjdHVhbGx5IGluY2x1ZGVzIGJvdGggS2FuamkgYW5kIEthbmEsIGV4Y2VwdCBmb3Igc21hbGwgS2FuYSBhbmQKKyAgICAgICAgICAgIC8vIENKSyBkaWFjcml0aWNzCisgICAgICAgICAgICArICIka2Fuamk9W1tcdTRlMDAtXHU5ZmE1XHVmOTAwLVx1ZmEyZFx1MzA0MS1cdTMwOTRcdTMwYTEtXHUzMGZhXS1bJHBvc3Rfd29yZCRfaWdub3JlX11dOyIKKworICAgICAgICAgICAgLy8gZGlnaXRzCisgICAgICAgICAgICArICIkZGlnaXQ9W1s6TmQ6XVs6Tm86XV07IgorCisgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbiB0aGF0IGNhbiBvY2N1ciBpbiB0aGUgbWlkZGxlIG9mIGEgbnVtYmVyOiBwZXJpb2RzIGFuZCBjb21tYXMKKyAgICAgICAgICAgICsgIiRtaWRfbnVtPVtcXC5cXCxdOyIKKworICAgICAgICAgICAgLy8gZXZlcnl0aGluZyBub3QgbWVudGlvbmVkIGFib3ZlLCBwbHVzIHRoZSBxdW90ZSBtYXJrcyAod2hpY2ggYXJlIGJvdGgKKyAgICAgICAgICAgIC8vIDxwcmUtd29yZD4sIDxwb3N0LXdvcmQ+LCBhbmQgPGNoYXI+KQorICAgICAgICAgICAgKyAiJGNoYXI9W14kYnJlYWskc3BhY2UkZGFzaCRrYW5qaSRuYnNwJF9pZ25vcmVfJHByZV93b3JkJHBvc3Rfd29yZCRtaWRfbnVtJGRhbmRhXHJcXFwiXFxcJ107IgorCisgICAgICAgICAgICAvLyBhICJudW1iZXIiIGlzIGEgcnVuIG9mIHByZWZpeCBjaGFyYWN0ZXJzIGFuZCBkYXNoZXMsIGZvbGxvd2VkIGJ5IG9uZSBvcgorICAgICAgICAgICAgLy8gbW9yZSBkaWdpdHMgd2l0aCBpc29sYXRlZCBudW1iZXItcHVuY3R1YXRpb24gY2hhcmFjdGVycyBpbnRlcnNwZXJzZWQKKyAgICAgICAgICAgICsgIiRudW1iZXI9KFskcHJlX3dvcmQkZGFzaF0qJGRpZ2l0KygkbWlkX251bSRkaWdpdCspKik7IgorCisgICAgICAgICAgICAvLyB0aGUgYmFzaWMgY29yZSBvZiBhIHdvcmQgY2FuIGJlIGVpdGhlciBhICJudW1iZXIiIGFzIGRlZmluZWQgYWJvdmUsIGEgc2luZ2xlCisgICAgICAgICAgICAvLyAiS2FuamkiIGNoYXJhY3Rlciwgb3IgYSBydW4gb2YgYW55IG51bWJlciBvZiBub3QtZXhwbGljaXRseS1tZW50aW9uZWQKKyAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMgKHRoaXMgaW5jbHVkZXMgTGF0aW4gbGV0dGVycykKKyAgICAgICAgICAgICsgIiR3b3JkX2NvcmU9KFskcHJlX3dvcmQkY2hhcl0qfCRrYW5qaXwkbnVtYmVyKTsiCisKKyAgICAgICAgICAgIC8vIGEgd29yZCBtYXkgZW5kIHdpdGggYW4gb3B0aW9uYWwgc3VmZml4IHRoYXQgYmUgZWl0aGVyIGEgcnVuIG9mIG9uZSBvcgorICAgICAgICAgICAgLy8gbW9yZSBkYXNoZXMgb3IgYSBydW4gb2Ygd29yZC1zdWZmaXggY2hhcmFjdGVycywgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwKKyAgICAgICAgICAgIC8vIHJ1biBvZiB3aGl0ZXNwYWNlCisgICAgICAgICAgICArICIkd29yZF9zdWZmaXg9KCgkZGFzaCt8JHBvc3Rfd29yZCopJHNwYWNlKik7IgorCisgICAgICAgICAgICAvLyBhIHdvcmQsIHRodXMsIGlzIGFuIG9wdGlvbmFsIHJ1biBvZiB3b3JkLXByZWZpeCBjaGFyYWN0ZXJzLCBmb2xsb3dlZCBieQorICAgICAgICAgICAgLy8gYSB3b3JkIGNvcmUgYW5kIGEgd29yZCBzdWZmaXggKHRoZSBzeW50YXggb2YgPHdvcmQtY29yZT4gYW5kIDx3b3JkLXN1ZmZpeD4KKyAgICAgICAgICAgIC8vIGFjdHVhbGx5IGFsbG93cyBlaXRoZXIgb2YgdGhlbSB0byBtYXRjaCB0aGUgZW1wdHkgc3RyaW5nLCBwdXR0aW5nIGEgYnJlYWsKKyAgICAgICAgICAgIC8vIGJldHdlZW4gdGhpbmdzIGxpa2UgIikoIiBvciAiYWFhKGFhYSIKKyAgICAgICAgICAgICsgIiR3b3JkPSgkcHJlX3dvcmQqJHdvcmRfY29yZSR3b3JkX3N1ZmZpeCk7IgorCisgICAgICAgICAgICAvLyBmaW5hbGx5LCB0aGUgcnVsZSB0aGF0IGRvZXMgdGhlIHdvcms6IEtlZXAgdG9nZXRoZXIgYW55IHJ1biBvZiB3b3JkcyB0aGF0CisgICAgICAgICAgICAvLyBhcmUgam9pbmVkIGJ5IHJ1bnMgb2Ygb25lIG9mIG1vcmUgbm9uLXNwYWNpbmcgbWFyay4gIEFsc28ga2VlcCBhIHRyYWlsaW5nCisgICAgICAgICAgICAvLyBsaW5lLWJyZWFrIGNoYXJhY3RlciBvciBDUkxGIGNvbWJpbmF0aW9uIHdpdGggdGhlIHdvcmQuICAobGluZSBzZXBhcmF0b3JzCisgICAgICAgICAgICAvLyAid2luIiBvdmVyIG5ic3AncykKKyAgICAgICAgICAgICsgIiR3b3JkKCRuYnNwKyR3b3JkKSpccj8kYnJlYWs/OyIKKyAgICAgICAgfSwKKworICAgICAgICAvLyBkZWZhdWx0IHJ1bGVzIGZvciBmaW5kaW5nIHNlbnRlbmNlIGJvdW5kYXJpZXMKKyAgICAgICAgeyAiU2VudGVuY2VCcmVha1J1bGVzIiwKKyAgICAgICAgICAgIC8vIGlnbm9yZSBub24tc3BhY2luZyBtYXJrcywgZW5jbG9zaW5nIG1hcmtzLCBhbmQgZm9ybWF0IGNoYXJhY3RlcnMKKyAgICAgICAgICAgICIkX2lnbm9yZV89W1s6TW46XVs6TWU6XVs6Q2Y6XV07IgorCisgICAgICAgICAgICAvLyBsb3dlcmNhc2UgbGV0dGVycworICAgICAgICAgICAgKyAiJGxjPVs6TGw6XTsiCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIHVwcGVyY2FzZSBMYXRpbiBsZXR0ZXJzCisgICAgICAgICAgICArICIkdWNMYXRpbj1bQS1aXTsiCisKKyAgICAgICAgICAgIC8vIHdoaXRlc3BhY2UgKGxpbmUgc2VwYXJhdG9ycyBhcmUgdHJlYXRlZCBhcyB3aGl0ZXNwYWNlKQorICAgICAgICAgICAgKyAiJHNwYWNlPVtcdFxyXGZcblx1MjAyOFs6WnM6XV07IgorCisgICAgICAgICAgICAvLyBwdW5jdHVhdGlvbiB3aGljaCBtYXkgb2NjdXIgYXQgdGhlIGJlZ2lubmluZyBvZiBhIHNlbnRlbmNlOiAic3RhcnRpbmcKKyAgICAgICAgICAgIC8vIHB1bmN0dWF0aW9uIiBhbmQgcXVvdGF0aW9uIG1hcmtzCisgICAgICAgICAgICArICIkc3RhcnQ9W1s6UHM6XVxcXCJcXFwnXTsiCisKKyAgICAgICAgICAgIC8vIHB1bmN0dWF0aW9uIHdpdGggbWF5IG9jY3VyIGF0IHRoZSBlbmQgb2YgYSBzZW50ZW5jZTogImVuZGluZyBwdW5jdHVhdGlvbiIKKyAgICAgICAgICAgIC8vIGFuZCBxdW90YXRpb24gbWFya3MKKyAgICAgICAgICAgICsgIiRlbmQ9W1s6UGU6XVxcXCJcXFwnXTsiCisKKyAgICAgICAgICAgIC8vIGRpZ2l0cworICAgICAgICAgICAgKyAiJGRpZ2l0PVs6TjpdOyIKKworICAgICAgICAgICAgLy8gY2hhcmFjdGVycyB0aGF0IHVuYW1iaWd1b3VzbHkgc2lnbmFsIHRoZSBlbmQgb2YgYSBzZW50ZW5jZQorICAgICAgICAgICAgKyAiJHRlcm09W1xcIVxcP1x1MzAwMlx1ZmYwMVx1ZmYxZl07IgorCisgICAgICAgICAgICAvLyBwZXJpb2RzLCB3aGljaCBNQVkgc2lnbmFsIHRoZSBlbmQgb2YgYSBzZW50ZW5jZQorICAgICAgICAgICAgKyAiJHBlcmlvZD1bXFwuXHVmZjBlXTsiCisKKyAgICAgICAgICAgIC8vIGNoYXJhY3RlcnMgdGhhdCBtYXkgb2NjdXIgYXQgdGhlIGJlZ2lubmluZyBvZiBhIHNlbnRlbmNlOiBiYXNpY2FsbHkgYW55dGhpbmcKKyAgICAgICAgICAgIC8vIG5vdCBtZW50aW9uZWQgYWJvdmUgKGxvd2VyY2FzZSBsZXR0ZXJzIGFuZCBkaWdpdHMgYXJlIHNwZWNpZmljYWxseSBleGNsdWRlZCkKKyAgICAgICAgICAgICsgIiRzZW50X3N0YXJ0PVteJGxjJHVjTGF0aW4kc3BhY2Ukc3RhcnQkZW5kJGRpZ2l0JHRlcm0kcGVyaW9kXHUyMDI5JF9pZ25vcmVfXTsiCisKKyAgICAgICAgICAgIC8vIEhpbmRpIHBocmFzZSBzZXBhcmF0b3IKKyAgICAgICAgICAgICsgIiRkYW5kYT1bXHUwOTY0XHUwOTY1XTsiCisKKyAgICAgICAgICAgIC8vIGFsd2F5cyBicmVhayBzZW50ZW5jZXMgYWZ0ZXIgcGFyYWdyYXBoIHNlcGFyYXRvcnMKKyAgICAgICAgICAgICsgIi4qP1x1MjAyOT87IgorCisgICAgICAgICAgICAvLyBhbHdheXMgYnJlYWsgYWZ0ZXIgYSBkYW5kYSwgaWYgaXQncyBmb2xsb3dlZCBieSB3aGl0ZXNwYWNlCisgICAgICAgICAgICArICIuKj8kZGFuZGEkc3BhY2UqOyIKKworICAgICAgICAgICAgLy8gaWYgeW91IHNlZSBhIHBlcmlvZCwgc2tpcCBvdmVyIGFkZGl0aW9uYWwgcGVyaW9kcyBhbmQgZW5kaW5nIHB1bmN0dWF0aW9uCisgICAgICAgICAgICAvLyBhbmQgaWYgdGhlIG5leHQgY2hhcmFjdGVyIGlzIGEgcGFyYWdyYXBoIHNlcGFyYXRvciwgYnJlYWsgYWZ0ZXIgdGhlCisgICAgICAgICAgICAvLyBwYXJhZ3JhcGggc2VwYXJhdG9yCisgICAgICAgICAgICArICIuKj8kcGVyaW9kWyRwZXJpb2QkZW5kXSokc3BhY2UqXHUyMDI5OyIKKworICAgICAgICAgICAgLy8gaWYgeW91IHNlZSBhIHBlcmlvZCwgc2tpcCBvdmVyIGFkZGl0aW9uYWwgcGVyaW9kcyBhbmQgZW5kaW5nIHB1bmN0dWF0aW9uLAorICAgICAgICAgICAgLy8gZm9sbG93ZWQgYnkgb3B0aW9uYWwgd2hpdGVzcGFjZSwgZm9sbG93ZWQgYnkgb3B0aW9uYWwgc3RhcnRpbmcgcHVuY3R1YXRpb24sCisgICAgICAgICAgICAvLyBhbmQgaWYgdGhlIG5leHQgY2hhcmFjdGVyIGlzIHNvbWV0aGluZyB0aGF0IGNhbiBzdGFydCBhIHNlbnRlbmNlCisgICAgICAgICAgICAvLyAoYmFzaWNhbGx5LCBhIGNhcGl0YWwgbGV0dGVyKSwgdGhlbiBwdXQgdGhlIHNlbnRlbmNlIGJyZWFrIGJldHdlZW4gdGhlCisgICAgICAgICAgICAvLyB3aGl0ZXNwYWNlIGFuZCB0aGUgb3BlbmluZyBwdW5jdHVhdGlvbgorICAgICAgICAgICAgKyAiLio/JHBlcmlvZFskcGVyaW9kJGVuZF0qJHNwYWNlKi8oJHN0YXJ0KiRzZW50X3N0YXJ0fCRzdGFydCskdWNMYXRpbik7IgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlLCBleGNlcHQgdGhhdCB0aGVyZSdzIGEgc2VudGVuY2UgYnJlYWsgYmVmb3JlIGEgTGF0aW4gY2FwaXRhbAorICAgICAgICAgICAgLy8gbGV0dGVyIG9ubHkgaWYgdGhlcmUncyBhdCBsZWFzdCBvbmUgc3BhY2UgYWZ0ZXIgdGhlIHBlcmlvZAorICAgICAgICAgICAgKyAiLio/JHBlcmlvZFskcGVyaW9kJGVuZF0qJHNwYWNlKy8kdWNMYXRpbjsiCisKKyAgICAgICAgICAgIC8vIGlmIHlvdSBzZWUgYSBzZW50ZW5jZS10ZXJtaW5hdGluZyBjaGFyYWN0ZXIsIHNraXAgb3ZlciBhbnkgYWRkaXRpb25hbAorICAgICAgICAgICAgLy8gdGVybWluYXRvcnMsIHBlcmlvZHMsIG9yIGVuZGluZyBwdW5jdHVhdGlvbiwgZm9sbG93ZWQgYnkgYW55IHdoaXRlc3BhY2UsCisgICAgICAgICAgICAvLyBmb2xsb3dlZCBieSBhIFNJTkdMRSBvcHRpb25hbCBwYXJhZ3JhcGggc2VwYXJhdG9yLCBhbmQgcHV0IHRoZSBicmVhayB0aGVyZQorICAgICAgICAgICAgKyAiLio/JHRlcm1bJHRlcm0kcGVyaW9kJGVuZF0qJHNwYWNlKlx1MjAyOT87IgorCisgICAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIHJ1bGVzIGFyZSBoZXJlIHRvIGFpZCBpbiBiYWNrd2FyZHMgaXRlcmF0aW9uLiAgVGhlIGF1dG9tYXRpY2FsbHkKKyAgICAgICAgICAgIC8vIGdlbmVyYXRlZCBiYWNrd2FyZHMgc3RhdGUgdGFibGUgd2lsbCByZXdpbmQgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUKKyAgICAgICAgICAgIC8vIHBhcmFncmFwaCBhbGwgdGhlIHRpbWUgKG9yIGFsbCB0aGUgd2F5IHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGRvY3VtZW50CisgICAgICAgICAgICAvLyBpZiB0aGUgZG9jdW1lbnQgZG9lc24ndCB1c2UgdGhlIFVuaWNvZGUgUFMgY2hhcmFjdGVyKSBiZWNhdXNlIHRoZSBvbmx5CisgICAgICAgICAgICAvLyB1bmFtYmlndW91cyBjaGFyYWN0ZXIgcGFpcnMgYXJlIHRob3NlIGludm9sdmluZyBwYXJhZ3JhcGggc2VwYXJhdG9ycy4KKyAgICAgICAgICAgIC8vIFRoZXNlIHNwZWNpZnkgYSBmZXcgbW9yZSB1bmFtYmlndW91cyBicmVha2luZyBzaXR1YXRpb25zLgorCisgICAgICAgICAgICAvLyBpZiB5b3Ugc2VlIGEgc2VudGVuY2Utc3RhcnRpbmcgY2hhcmFjdGVyLCBmb2xsb3dlZCBieSBzdGFydGluZyBwdW5jdHVhdGlvbgorICAgICAgICAgICAgLy8gKHJlbWVtYmVyLCB3ZSdyZSBpdGVyYXRpbmcgYmFja3dhcmRzKSwgZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgcnVuIG9mCisgICAgICAgICAgICAvLyB3aGl0ZXNwYWNlLCBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCBydW4gb2YgZW5kaW5nIHB1bmN0dWF0aW9uLCBmb2xsb3dlZAorICAgICAgICAgICAgLy8gYnkgYSBwZXJpb2QsIHRoaXMgaXMgYSBzYWZlIHBsYWNlIHRvIHR1cm4gYXJvdW5kCisgICAgICAgICAgICArICIhWyRzZW50X3N0YXJ0JHVjTGF0aW5dJHN0YXJ0KiRzcGFjZSskZW5kKiRwZXJpb2Q7IgorCisgICAgICAgICAgICAvLyBpZiB5b3Ugc2VlIGEgbGV0dGVyIG9yIGEgZGlnaXQsIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsIHJ1biBvZgorICAgICAgICAgICAgLy8gc3RhcnRpbmcgcHVuY3R1YXRpb24sIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsIHJ1biBvZiB3aGl0ZXNwYWNlLAorICAgICAgICAgICAgLy8gZm9sbG93ZWQgYnkgYW4gb3B0aW9uYWwgcnVuIG9mIGVuZGluZyBwdW5jdHVhdGlvbiwgZm9sbG93ZWQgYnkKKyAgICAgICAgICAgIC8vIGEgc2VudGVuY2UgdGVybWluYXRvciwgdGhpcyBpcyBhIHNhZmUgcGxhY2UgdG8gdHVybiBhcm91bmQKKyAgICAgICAgICAgICsgIiFbJHNlbnRfc3RhcnQkbGMkZGlnaXRdJHN0YXJ0KiRzcGFjZSokZW5kKiR0ZXJtOyIKKyAgICAgICAgfQorICAgIH07Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9CcmVha0l0ZXJhdG9yUnVsZXNfdGguamF2YSBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL0JyZWFrSXRlcmF0b3JSdWxlc190aC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmM1MDM0NzMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9CcmVha0l0ZXJhdG9yUnVsZXNfdGguamF2YQpAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvQXR0aWMvQnJlYWtJdGVyYXRvclJ1bGVzX3RoLmphdmEsdiAkIAorICogJERhdGU6IDIwMDEvMDIvMDYgMjI6Mzc6NDUgJCAKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRleHQucmVzb3VyY2VzOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKK2ltcG9ydCBqYXZhLnV0aWwuTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uOworaW1wb3J0IGphdmEubmV0LlVSTDsKKworcHVibGljIGNsYXNzIEJyZWFrSXRlcmF0b3JSdWxlc190aCBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisKKyAgICAgICAgVVJMIHVybCA9IGdldENsYXNzKCkuZ2V0UmVzb3VyY2UoInRoYWlfZGljdCIpOworCisgICAgICAgIC8vIGlmIGRpY3Rpb25hcnkgd2Fzbid0IGZvdW5kLCB0aGVuIHRoaXMgcmVzb3VyY2UgYnVuZGxlIGRvZXNuJ3QgaGF2ZQorICAgICAgICAvLyBtdWNoIHRvIGNvbnRyaWJ1dGUuLi4KKyAgICAgICAgaWYgKHVybCA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IE9iamVjdFswXVswXTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7CisgICAgICAgICAgICAvLyBuYW1lcyBvZiBjbGFzc2VzIHRvIGluc3RhbnRpYXRlIGZvciB0aGUgZGlmZmVyZW50IGtpbmRzIG9mIGJyZWFrCisgICAgICAgICAgICAvLyBpdGVyYXRvci4gIE5vdGljZSB3ZSdyZSBub3cgdXNpbmcgRGljdGlvbmFyeUJhc2VkQnJlYWtJdGVyYXRvcgorICAgICAgICAgICAgLy8gZm9yIHdvcmQgYW5kIGxpbmUgYnJlYWtpbmcuCisgICAgICAgICAgICB7ICJCcmVha0l0ZXJhdG9yQ2xhc3NlcyIsCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgIlJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IiLCAgICAgICAgICAgLy8gY2hhcmFjdGVyLWJyZWFrIGl0ZXJhdG9yIGNsYXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkRpY3Rpb25hcnlCYXNlZEJyZWFrSXRlcmF0b3IiLCAgICAgLy8gd29yZC1icmVhayBpdGVyYXRvciBjbGFzcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yIiwgICAgIC8vIGxpbmUtYnJlYWsgaXRlcmF0b3IgY2xhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUnVsZUJhc2VkQnJlYWtJdGVyYXRvciIgfSAgICAgICAgICAvLyBzZW50ZW5jZS1icmVhayBpdGVyYXRvciBjbGFzcworICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgeyAiV29yZEJyZWFrUnVsZXMiLAorICAgICAgICAgICAgICAgICIkX2RpY3Rpb25hcnlfPVtcdTBlMDEtXHUwZTJlXHUwZTMwLVx1MGUzYVx1MGU0MC1cdTBlNDRcdTBlNDctXHUwZTRlXTsiIC8vIHRoaXMgcnVsZSBicmVha3MgdGhlIGl0ZXJhdG9yIHdpdGggbWl4ZWQgVGhhaSBhbmQgRW5nbGlzaAorICAgICAgICAgICAgICAgICsgIiRfaWdub3JlXz1bW1s6TW46XVs6TWU6XVs6Q2Y6XV0tJF9kaWN0aW9uYXJ5X107IgorICAgICAgICAgICAgICAgICsgIiRwYWl5YW5ub2k9W1x1MGUyZl07IgorICAgICAgICAgICAgICAgICsgIiRtYWl5YW1vaz1bXHUwZTQ2XTsiCisgICAgICAgICAgICAgICAgKyAiJGRhbmRhPVtcdTA5NjRcdTA5NjVdOyIKKyAgICAgICAgICAgICAgICArICIka2Fuamk9W1x1MzAwNVx1NGUwMC1cdTlmYTVcdWY5MDAtXHVmYTJkXTsiCisgICAgICAgICAgICAgICAgKyAiJGthdGE9W1x1MzBhMS1cdTMwZmFdOyIKKyAgICAgICAgICAgICAgICArICIkaGlyYT1bXHUzMDQxLVx1MzA5NF07IgorICAgICAgICAgICAgICAgICsgIiRjamtfZGlhY3JpdD1bXHUzMDk5LVx1MzA5Y107IgorICAgICAgICAgICAgICAgICsgIiRsZXQ9W1tbOkw6XVs6TWM6XV0tWyRrYW5qaSRrYXRhJGhpcmEkY2prX2RpYWNyaXQkX2RpY3Rpb25hcnlfXV07IgorICAgICAgICAgICAgICAgICsgIiRkZ3Q9WzpOOl07IgorICAgICAgICAgICAgICAgICsgIiRtaWRfd29yZD1bWzpQZDpdXHUwMGFkXHUyMDI3XFxcIlxcXCdcXC5dOyIKKyAgICAgICAgICAgICAgICArICIkbWlkX251bT1bXFxcIlxcXCdcXCxcdTA2NmJcXC5dOyIKKyAgICAgICAgICAgICAgICArICIkcHJlX251bT1bW1s6U2M6XS1bXHUwMGEyXV1cXCNcXC5dOyIKKyAgICAgICAgICAgICAgICArICIkcG9zdF9udW09W1xcJVxcJlx1MDBhMlx1MDY2YVx1MjAzMFx1MjAzMV07IgorICAgICAgICAgICAgICAgICsgIiRscz1bXG5cdTAwMGNcdTIwMjhcdTIwMjldOyIKKyAgICAgICAgICAgICAgICArICIkd3M9W1s6WnM6XVx0XTsiCisgICAgICAgICAgICAgICAgKyAiJHdvcmQ9KCgkbGV0KygkbWlkX3dvcmQkbGV0KykqKSRkYW5kYT8pOyIKKyAgICAgICAgICAgICAgICArICIkbnVtYmVyPSgkZGd0KygkbWlkX251bSRkZ3QrKSopOyIKKyAgICAgICAgICAgICAgICArICIkdGhhaV9ldGM9KCRwYWl5YW5ub2lcdTBlMjUkcGFpeWFubm9pKTsiCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgKyAiLjsiCisgICAgICAgICAgICAgICAgKyAiJHdvcmQ/KCRudW1iZXIkd29yZCkqKCRudW1iZXIkcG9zdF9udW0/KT87IgorICAgICAgICAgICAgICAgICsgIiRwcmVfbnVtKCRudW1iZXIkd29yZCkqKCRudW1iZXIkcG9zdF9udW0/KT87IgorCisgICAgICAgICAgICAgICAgLy8rICIkX2RpY3Rpb25hcnlfKygkcGFpeWFubm9pJG1haXlhbW9rPyk/OyIKKyAgICAgICAgICAgICAgICArICIkX2RpY3Rpb25hcnlfKygkcGFpeWFubm9pPyRtYWl5YW1vayk/OyIKKworICAgICAgICAgICAgICAgICsgIiRfZGljdGlvbmFyeV8rJHBhaXlhbm5vaS8oW15cdTBlMjUkbWFpeWFtb2skX2lnbm9yZV9dIgorICAgICAgICAgICAgICAgICAgICAgICAgKyAifFx1MGUyNVteJHBhaXlhbm5vaSRfaWdub3JlX10pOyIKKworICAgICAgICAgICAgICAgICsgIiR0aGFpX2V0YzsiCisgICAgICAgIAorICAgICAgICAgICAgICAgICsgIiR3cypccj8kbHM/OyIKKyAgICAgICAgICAgICAgICArICJbJGthdGEkY2prX2RpYWNyaXRdKjsiCisgICAgICAgICAgICAgICAgKyAiWyRoaXJhJGNqa19kaWFjcml0XSo7IgorICAgICAgICAgICAgICAgICsgIiRrYW5qaSo7IgorICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgeyAiTGluZUJyZWFrUnVsZXMiLAorICAgICAgICAgICAgICAgICIkX2RpY3Rpb25hcnlfPVtcdTBlMDEtXHUwZTJlXHUwZTMwLVx1MGUzYVx1MGU0MC1cdTBlNDRcdTBlNDctXHUwZTRlXTsiIC8vIHRoaXMgcnVsZSBicmVha3MgdGhlIGl0ZXJhdG9yIHdpdGggbWl4ZWQgVGhhaSBhbmQgRW5nbGlzaAorICAgICAgICAgICAgICAgICsgIiRfaWdub3JlXz1bW1s6TW46XVs6TWU6XVs6Q2Y6XV0tWyRfZGljdGlvbmFyeV9dXTsiCisgICAgICAgICAgICAgICAgKyAiJGRhbmRhPVtcdTA5NjRcdTA5NjVdOyIKKyAgICAgICAgICAgICAgICArICIkYnJlYWs9W1x1MDAwM1x0XG5cZlx1MjAyOFx1MjAyOV07IgorICAgICAgICAgICAgICAgICsgIiRuYnNwPVtcdTAwYTBcdTIwMDdcdTIwMTFcdWZlZmZdOyIKKyAgICAgICAgICAgICAgICArICIkc3BhY2U9W1tbOlpzOl1bOkNjOl1dLVskbmJzcCRicmVha1xyXV07IgorICAgICAgICAgICAgICAgICsgIiRkYXNoPVtbWzpQZDpdXHUwMGFkXS0kbmJzcF07IgorICAgICAgICAgICAgICAgICsgIiRwYWl5YW5ub2k9W1x1MGUyZl07IgorICAgICAgICAgICAgICAgICsgIiRtYWl5YW1vaz1bXHUwZTQ2XTsiCisgICAgICAgICAgICAgICAgKyAiJHRoYWlfZXRjPSgkcGFpeWFubm9pXHUwZTI1JHBhaXlhbm5vaSk7IgorICAgICAgICAgICAgICAgICsgIiRwcmVfd29yZD1bW1s6U2M6XS1bXHUwMGEyXV1bOlBzOl1cXFwiXTsiCisgICAgICAgICAgICAgICAgKyAiJHBvc3Rfd29yZD1bWzpQZTpdXFwhXFwlXFwuXFwsXFw6XFw7XFw/XFxcIlx1MDBhMlx1MDBiMFx1MDY2YVx1MjAzMC1cdTIwMzRcdTIxMDMiCisgICAgICAgICAgICAgICAgICAgICAgICArICJcdTIxMDVcdTIxMDlcdTMwMDFcdTMwMDJcdTMwMDVcdTMwNDFcdTMwNDNcdTMwNDVcdTMwNDdcdTMwNDlcdTMwNjMiCisgICAgICAgICAgICAgICAgICAgICAgICArICJcdTMwODNcdTMwODVcdTMwODdcdTMwOGVcdTMwOTktXHUzMDllXHUzMGExXHUzMGEzXHUzMGE1XHUzMGE3XHUzMGE5IgorICAgICAgICAgICAgICAgICAgICAgICAgKyAiXHUzMGMzXHUzMGUzXHUzMGU1XHUzMGU3XHUzMGVlXHUzMGY1XHUzMGY2XHUzMGZjLVx1MzBmZVx1ZmYwMVx1ZmYwZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIlx1ZmYxZiRtYWl5YW1va107IgorICAgICAgICAgICAgICAgICsgIiRrYW5qaT1bW1x1NGUwMC1cdTlmYTVcdWY5MDAtXHVmYTJkXHUzMDQxLVx1MzA5NFx1MzBhMS1cdTMwZmFdLVskcG9zdF93b3JkJF9pZ25vcmVfXV07IgorICAgICAgICAgICAgICAgICsgIiRkaWdpdD1bWzpOZDpdWzpObzpdXTsiCisgICAgICAgICAgICAgICAgKyAiJG1pZF9udW09W1xcLlxcLF07IgorICAgICAgICAgICAgICAgICsgIiRjaGFyPVteJGJyZWFrJHNwYWNlJGRhc2gka2FuamkkbmJzcCRfaWdub3JlXyRwcmVfd29yZCRwb3N0X3dvcmQiCisgICAgICAgICAgICAgICAgICAgICAgICArICIkbWlkX251bVxyJGRhbmRhJF9kaWN0aW9uYXJ5XyRwYWl5YW5ub2kkbWFpeWFtb2tdOyIKKyAgICAgICAgICAgICAgICArICIkbnVtYmVyPShbJHByZV93b3JkJGRhc2hdKiRkaWdpdCsoJG1pZF9udW0kZGlnaXQrKSopOyIKKyAgICAgICAgICAgICAgICArICIkd29yZF9jb3JlPSgkY2hhcip8JGthbmppfCRudW1iZXJ8JF9kaWN0aW9uYXJ5Xyt8JHRoYWlfZXRjKTsiCisgICAgICAgICAgICAgICAgKyAiJHdvcmRfc3VmZml4PSgoJGRhc2grfCRwb3N0X3dvcmQqKSRzcGFjZSopOyIKKyAgICAgICAgICAgICAgICArICIkd29yZD0oJHByZV93b3JkKiR3b3JkX2NvcmUkd29yZF9zdWZmaXgpOyIKKyAgICAgICAgICAgICAgICArICIkd29yZCgkbmJzcCskd29yZCkqKFxyPyRicmVhaz98JHBhaXlhbm5vaVxyJGJyZWFrfCRwYWl5YW5ub2kkYnJlYWspPzsiCisgICAgICAgICAgICAgICAgKyAiJHdvcmQoJG5ic3ArJHdvcmQpKiRwYWl5YW5ub2kvKFteW1x1MGUyNSRfaWdub3JlX11dfCIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIlx1MGUyNVteJHBhaXlhbm5vaSRfaWdub3JlX10pOyIKKyAgICAgICAgICAgIH0sCisKKyAgICAgICAgICAgIHsgIldvcmRCcmVha0RpY3Rpb25hcnkiLCB1cmwgfSwKKyAgICAgICAgICAgIHsgIkxpbmVCcmVha0RpY3Rpb25hcnkiLCB1cmwgfQorICAgICAgICB9OworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL0xvY2FsZUVsZW1lbnRzLmphdmEgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9Mb2NhbGVFbGVtZW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmM3MDIwMDMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9Mb2NhbGVFbGVtZW50cy5qYXZhCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL0F0dGljL0xvY2FsZUVsZW1lbnRzLmphdmEsdiAkIAorICogJERhdGU6IDIwMDEvMDMvMDEgMjI6NDY6MzMgJCAKKyAqICRSZXZpc2lvbjogMS41ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRleHQucmVzb3VyY2VzOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworcHVibGljIGNsYXNzIExvY2FsZUVsZW1lbnRzIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgTGlzdFJlc291cmNlQnVuZGxlCisgICAgICovCisgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7CisgICAgICAgICAgICB7ICJUcmFuc2xpdGVyYXRvck5hbWVQYXR0ZXJuIiwKKyAgICAgICAgICAgICAgICAvKiBGb3JtYXQgZm9yIHRoZSBkaXNwbGF5IG5hbWUgb2YgYSBUcmFuc2xpdGVyYXRvci4KKyAgICAgICAgICAgICAgICAgKiBUaGlzIGlzIHRoZSBsYW5ndWFnZS1uZXV0cmFsIGZvcm0gb2YgdGhpcyByZXNvdXJjZS4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAiezAsY2hvaWNlLDAjfDEjezF9fDIjezF9LXsyfX0iLCAvLyBEaXNwbGF5IG5hbWUKKyAgICAgICAgICAgIH0sCisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvTG9jYWxlRWxlbWVudHNfZW4uamF2YSBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL0xvY2FsZUVsZW1lbnRzX2VuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDZhMWIxMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL0xvY2FsZUVsZW1lbnRzX2VuLmphdmEKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvQXR0aWMvTG9jYWxlRWxlbWVudHNfZW4uamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwNDowNzoyNyAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8vIFdBUk5JTkcgOiB0aGUgZm9ybWF0IG9mIHRoaXMgZmlsZSBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUhCisKK3BhY2thZ2UgY29tLmlibS50ZXh0LnJlc291cmNlczsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKK3B1YmxpYyBjbGFzcyBMb2NhbGVFbGVtZW50c19lbiBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIExpc3RSZXNvdXJjZUJ1bmRsZQorICAgICAqLworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdW10geworICAgICAgICAgICAgeyAiVHJhbnNsaXRlcmF0b3JOYW1lUGF0dGVybiIsCisgICAgICAgICAgICAgICAgLyogRm9ybWF0IGZvciB0aGUgZGlzcGxheSBuYW1lIG9mIGEgVHJhbnNsaXRlcmF0b3IuCisgICAgICAgICAgICAgICAgICogVGhpcyBpcyB0aGUgRW5nbGlzaCBmb3JtIG9mIHRoaXMgcmVzb3VyY2UuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgInswLGNob2ljZSwwI3wxI3sxfXwyI3sxfSB0byB7Mn19IgorICAgICAgICAgICAgfSwKKworICAgICAgICAgICAgLy8gVHJhbnNsaXRlcmF0b3IgZGlzcGxheSBuYW1lcworICAgICAgICAgICAgeyAiJVRyYW5zbGl0JUhleCIsICJIZXggRXNjYXBlIiB9LAorICAgICAgICAgICAgeyAiJVRyYW5zbGl0JVVuaWNvZGVOYW1lIiwgIlVuaWNvZGUgTmFtZSIgfSwKKyAgICAgICAgICAgIHsgIiVUcmFuc2xpdCVVbmljb2RlQ2hhciIsICJVbmljb2RlIENoYXJhY3RlciIgfSwKKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9OdW1iZXJGb3JtYXRSdWxlcy5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvTnVtYmVyRm9ybWF0UnVsZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xNzFmYjc0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvTnVtYmVyRm9ybWF0UnVsZXMuamF2YQpAQCAtMCwwICsxLDI0MiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvQXR0aWMvTnVtYmVyRm9ybWF0UnVsZXMuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwNDowNzoyNyAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udGV4dC5yZXNvdXJjZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIEJhc2UgcmVzb3VyY2UgZm9yIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBkYXRhLiAgRWFjaCByZXNvdXJjZSBjb250YWlucworICogcnVsZSBzZXRzIGZvciB0aHJlZSB1c2VzOiBzcGVsbGVkLW91dCBudW1lcmljYWwgdmFsdWVzLCBvcmRpbmFsCisgKiBhYmJyZXZpYXRpb25zLCBhbmQgZHVyYXRpb25zIGluIHNlY29uZHMuICBUaGlzIHJlc291cmNlIGNvbnRhaW5zIHRoZQorICogVS5TLiBFbmdsaXNoIGRhdGEuCisgKgorICogQGF1dGhvciBSaWNoYXJkIEdpbGxhbQorICogQHZlcnNpb24gJFZlcnNpb24kICREYXRlOiAyMDAwLzAzLzEwIDA0OjA3OjI3ICQKKyAqLworcHVibGljIGNsYXNzIE51bWJlckZvcm1hdFJ1bGVzIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBQdXRzIGEgY29weXJpZ2h0IGluIHRoZSAuY2xhc3MgZmlsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHROb3RpY2UKKyAgICAgICAgPSAiQ29weXJpZ2h0IFx1MDBhOTE5OTctMTk5OCBJQk0gQ29ycC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gY29udGVudHM7CisgICAgfQorCisgICAgT2JqZWN0W11bXSBjb250ZW50cyA9IHsKKyAgICAgICAgLyoKKyAgICAgICAgICogU3BlbGxvdXQgcnVsZXMgZm9yIFUuUy4gRW5nbGlzaC4gIFRoaXMgcnVsZSBzZXQgaGFzIHR3byB2YXJpYW50czoKKyAgICAgICAgICogJXNpbXBsaWZpZWQgaXMgYSBzZXQgb2YgcnVsZXMgc2hvd2luZyB0aGUgc2ltcGxlIG1ldGhvZCBvZiBzcGVsbGluZworICAgICAgICAgKiBvdXQgbnVtYmVycyBpbiBFbmdsaXNoOiAyODkgaXMgZm9ybWF0dGVkIGFzICJ0d28gaHVuZHJlZCBlaWdodHktbmluZSIuCisgICAgICAgICAqICVkZWZhdWx0IHVzZXMgYSBtb3JlIGNvbXBsaWNhdGVkIGFsZ29yaXRobSB0byBmb3JtYXQKKyAgICAgICAgICogbnVtYmVycyBpbiBhIG1vcmUgbmF0dXJhbCB3YXk6IDI4OSBpcyBmb3JtYXR0ZWQgYXMgInR3byBodW5kcmVkIEFORAorICAgICAgICAgKiBlaWdodHktbmluZSIgYW5kIGNvbW1hcyBhcmUgaW5zZXJ0ZWQgYmV0d2VlbiB0aGUgdGhvdXNhbmRzIGdyb3VwcyBmb3IKKyAgICAgICAgICogdmFsdWVzIGFib3ZlIDEwMCwwMDAuCisgICAgICAgICAqLworICAgICAgICB7ICJTcGVsbG91dFJ1bGVzIiwKKyAgICAgICAgICAgIC8vIFRoaXMgcnVsZSBzZXQgc2hvd3MgdGhlIG5vcm1hbCBzaW1wbGUgZm9ybWF0dGluZyBydWxlcyBmb3IgRW5nbGlzaAorICAgICAgICAgICAgIiVzaW1wbGlmaWVkOlxuIgorICAgICAgICAgICAgICAgICAgIC8vIG5lZ2F0aXZlIG51bWJlciBydWxlLiAgVGhpcyBydWxlIGlzIHVzZWQgdG8gZm9ybWF0IG5lZ2F0aXZlCisgICAgICAgICAgICAgICAgICAgLy8gbnVtYmVycy4gIFRoZSByZXN1bHQgb2YgZm9ybWF0dGluZyB0aGUgbnVtYmVyJ3MgYWJzb2x1dGUKKyAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZSBpcyBwbGFjZWQgd2hlcmUgdGhlID4+IGlzLgorICAgICAgICAgICAgKyAiICAgIC14OiBtaW51cyA+PjtcbiIKKyAgICAgICAgICAgICAgICAgICAvLyBmYWN0aW9uIHJ1bGUuICBUaGlzIHJ1bGUgaXMgdXNlZCBmb3IgZm9ybWF0dGluZyBudW1iZXJzCisgICAgICAgICAgICAgICAgICAgLy8gd2l0aCBmcmFjdGlvbmFsIHBhcnRzLiAgVGhlIHJlc3VsdCBvZiBmb3JtYXR0aW5nIHRoZQorICAgICAgICAgICAgICAgICAgIC8vIG51bWJlcidzIGludGVncmFsIHBhcnQgaXMgc3Vic3RpdHV0ZWQgZm9yIHRoZSA8PCwgYW5kCisgICAgICAgICAgICAgICAgICAgLy8gdGhlIHJlc3VsdCBvZiBmb3JtYXR0aW5nIHRoZSBudW1iZXIncyBmcmFjdGlvbmFsIHBhcnQKKyAgICAgICAgICAgICAgICAgICAvLyAob25lIGRpZ2l0IGF0IGEgdGltZSwgZS5nLiwgMC4xMjMgaXMgInplcm8gcG9pbnQgb25lIHR3bworICAgICAgICAgICAgICAgICAgIC8vIHRocmVlIikgcmVwbGFjZXMgdGhlID4+LgorICAgICAgICAgICAgKyAiICAgIHgueDogPDwgcG9pbnQgPj47XG4iCisgICAgICAgICAgICAgICAgICAgLy8gdGhlIHJ1bGVzIGZvciB0aGUgdmFsdWVzIGZyb20gMCB0byAxOSBhcmUgc2ltcGx5IHRoZQorICAgICAgICAgICAgICAgICAgIC8vIHdvcmRzIGZvciB0aG9zZSBudW1iZXJzCisgICAgICAgICAgICArICIgICAgemVybzsgb25lOyB0d287IHRocmVlOyBmb3VyOyBmaXZlOyBzaXg7IHNldmVuOyBlaWdodDsgbmluZTtcbiIKKyAgICAgICAgICAgICsgIiAgICB0ZW47IGVsZXZlbjsgdHdlbHZlOyB0aGlydGVlbjsgZm91cnRlZW47IGZpZnRlZW47IHNpeHRlZW47XG4iCisgICAgICAgICAgICArICIgICAgICAgIHNldmVudGVlbjsgZWlnaHRlZW47IG5pbmV0ZWVuO1xuIgorICAgICAgICAgICAgICAgICAgIC8vIGJlZ2lubmluZyBhdCAyMCwgd2UgdXNlIHRoZSA+PiB0byBtYXJrIHRoZSBwb3NpdGlvbiB3aGVyZQorICAgICAgICAgICAgICAgICAgIC8vIHRoZSByZXN1bHQgb2YgZm9ybWF0dGluZyB0aGUgbnVtYmVyJ3Mgb25lcyBkaWdpdC4gIFRodXMsCisgICAgICAgICAgICAgICAgICAgLy8gd2Ugb25seSBuZWVkIGEgbmV3IHJ1bGUgYXQgZXZlcnkgbXVsdGlwbGUgb2YgMTAuICBUZXh0IGluCisgICAgICAgICAgICAgICAgICAgLy8gYmFja2V0cyBpcyBvbWl0dGVkIGlmIHRoZSB2YWx1ZSBiZWluZyBmb3JtYXR0ZWQgaXMgYW4KKyAgICAgICAgICAgICAgICAgICAvLyBldmVuIG11bHRpcGxlIG9mIDEwLgorICAgICAgICAgICAgKyAiICAgIDIwOiB0d2VudHlbLT4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAzMDogdGhpcnR5Wy0+Pl07XG4iCisgICAgICAgICAgICArICIgICAgNDA6IGZvcnR5Wy0+Pl07XG4iCisgICAgICAgICAgICArICIgICAgNTA6IGZpZnR5Wy0+Pl07XG4iCisgICAgICAgICAgICArICIgICAgNjA6IHNpeHR5Wy0+Pl07XG4iCisgICAgICAgICAgICArICIgICAgNzA6IHNldmVudHlbLT4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICA4MDogZWlnaHR5Wy0+Pl07XG4iCisgICAgICAgICAgICArICIgICAgOTA6IG5pbmV0eVstPj5dO1xuIgorICAgICAgICAgICAgICAgICAgIC8vIGJlZ2lubmluZyBhdCAxMDAsIHdlIGNhbiB1c2UgPDwgdG8gbWFyayB0aGUgcG9zaXRpb24gd2hlcmUKKyAgICAgICAgICAgICAgICAgICAvLyB0aGUgcmVzdWx0IG9mIGZvcm1hdHRpbmcgdGhlIG11bHRpcGxlIG9mIDEwMCBpcyB0byBiZQorICAgICAgICAgICAgICAgICAgIC8vIGluc2VydGVkLiAgTm90aWNlIGFsc28gdGhhdCB0aGUgbWVhbmluZyBvZiA+PiBoYXMgc2hpZnRlZDoKKyAgICAgICAgICAgICAgICAgICAvLyBoZXJlLCBpdCByZWZlcnMgdG8gYm90aCB0aGUgb25lcyBwbGFjZSBhbmQgdGhlIHRlbnMgcGxhY2UuCisgICAgICAgICAgICAgICAgICAgLy8gVGhlIG1lYW5pbmdzIG9mIHRoZSA8PCBhbmQgPj4gdG9rZW5zIGRlcGVuZCBvbiB0aGUgYmFzZSB2YWx1ZQorICAgICAgICAgICAgICAgICAgIC8vIG9mIHRoZSBydWxlLiAgQSBydWxlJ3MgZGl2aXNvciBpcyAodXN1YWxseSkgdGhlIGhpZ2hlc3QKKyAgICAgICAgICAgICAgICAgICAvLyBwb3dlciBvZiAxMCB0aGF0IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgcnVsZSdzIGJhc2UKKyAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZS4gIFRoZSB2YWx1ZSBiZWluZyBmb3JtYXR0ZWQgaXMgZGl2aWRlZCBieSB0aGUgcnVsZSdzCisgICAgICAgICAgICAgICAgICAgLy8gZGl2aXNvciwgYW5kIHRoZSBpbnRlZ3JhbCBxdW90aWVudCBpcyB1c2VkIHRvIGdldCB0aGUgdGV4dAorICAgICAgICAgICAgICAgICAgIC8vIGZvciA8PCwgd2hpbGUgdGhlIHJlbWFpbmRlciBpcyB1c2VkIHRvIHByb2R1Y2UgdGhlIHRleHQKKyAgICAgICAgICAgICAgICAgICAvLyBmb3IgPj4uICBBZ2FpbiwgdGV4dCBpbiBicmFja2V0cyBpcyBvbWl0dGVkIGlmIHRoZSB2YWx1ZQorICAgICAgICAgICAgICAgICAgIC8vIGJlaW5nIGZvcm1hdHRlZCBpcyBhbiBldmVuIG11bHRpcGxlIG9mIHRoZSBydWxlJ3MgZGl2aXNvcgorICAgICAgICAgICAgICAgICAgIC8vIChpbiB0aGlzIGNhc2UsIGFuIGV2ZW4gbXVsdGlwbGUgb2YgMTAwKQorICAgICAgICAgICAgKyAiICAgIDEwMDogPDwgaHVuZHJlZFsgPj5dO1xuIgorICAgICAgICAgICAgICAgICAgIC8vIFRoZSBydWxlcyBmb3IgdGhlIGhpZ2hlciBudW1iZXJzIHdvcmsgdGhlIHNhbWUgd2F5IGFzIHRoZQorICAgICAgICAgICAgICAgICAgIC8vIHJ1bGUgZm9yIDEwMDogQWdhaW4sIHRoZSA8PCBhbmQgPj4gdG9rZW5zIGRlcGVuZCBvbiB0aGUKKyAgICAgICAgICAgICAgICAgICAvLyBydWxlJ3MgZGl2aXNvciwgd2hpY2ggZm9yIGFsbCB0aGVzZSBydWxlcyBpcyBhbHNvIHRoZSBydWxlJ3MKKyAgICAgICAgICAgICAgICAgICAvLyBiYXNlIHZhbHVlLiAgVG8gZ3JvdXAgYnkgdGhvdXNhbmQsIHdlIHNpbXBseSBkb24ndCBoYXZlIGFueQorICAgICAgICAgICAgICAgICAgIC8vIHJ1bGVzIGJldHdlZW4gMSwwMDAgYW5kIDEsMDAwLDAwMC4KKyAgICAgICAgICAgICsgIiAgICAxMDAwOiA8PCB0aG91c2FuZFsgPj5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDEsMDAwLDAwMDogPDwgbWlsbGlvblsgPj5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDA6IDw8IGJpbGxpb25bID4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMDogPDwgdHJpbGxpb25bID4+XTtcbiIKKyAgICAgICAgICAgICAgICAgICAvLyBvdmVyZmxvdyBydWxlLiAgVGhpcyBydWxlIHNwZWNpZmllcyB0aGF0IHZhbHVlcyBvZiBhCisgICAgICAgICAgICAgICAgICAgLy8gcXVhZHJpbGxpb24gb3IgbW9yZSBhcmUgc2hvd24gaW4gbnVtZXJhbHMgcmF0aGVyIHRoYW4gd29yZHMuCisgICAgICAgICAgICAgICAgICAgLy8gVGhlID09IHRva2VuIG1lYW5zIHRvIGZvcm1hdCAod2l0aCBuZXcgcnVsZXMpIHRoZSB2YWx1ZQorICAgICAgICAgICAgICAgICAgIC8vIGJlaW5nIGZvcm1hdHRlZCBieSB0aGlzIHJ1bGUgYW5kIHBsYWNlIHRoZSByZXN1bHQgd2hlcmUKKyAgICAgICAgICAgICAgICAgICAvLyB0aGUgPT0gaXMuICBUaGUgIywjIzAgaW5zaWRlIHRoZSA9PSBzaWducyBpcyBhCisgICAgICAgICAgICAgICAgICAgLy8gRGVjaW1hbEZvcm1hdCBwYXR0ZXJuLiAgSXQgc3BlY2lmaWVzIHRoYXQgdGhlIHZhbHVlIHNob3VsZAorICAgICAgICAgICAgICAgICAgIC8vIGJlIGZvcm1hdHRlZCB3aXRoIGEgRGVjaW1hbEZvcm1hdCBvYmplY3QsIGFuZCB0aGF0IGl0CisgICAgICAgICAgICAgICAgICAgLy8gc2hvdWxkIGJlIGZvcm1hdHRlZCB3aXRoIG5vIGRlY2ltYWwgcGxhY2VzLCBhdCBsZWFzdCBvbmUKKyAgICAgICAgICAgICAgICAgICAvLyBkaWdpdCwgYW5kIGEgdGhvdXNhbmRzIHNlcGFyYXRvci4KKyAgICAgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMCwwMDA6ID0jLCMjMD07XG4iCisKKyAgICAgICAgICAgIC8vICVkZWZhdWx0IGlzIGEgbW9yZSBlbGFib3JhdGUgZm9ybSBvZiAlc2ltcGxpZmllZDsgIEl0IGlzIGJhc2ljYWxseQorICAgICAgICAgICAgLy8gdGhlIHNhbWUsIGV4Y2VwdCB0aGF0IGl0IGludHJvZHVjZXMgImFuZCIgYmVmb3JlIHRoZSBvbmVzIGRpZ2l0CisgICAgICAgICAgICAvLyB3aGVuIGFwcHJvcHJpYXRlIChiYXNpY2FsbHksIGJldHdlZW4gdGhlIHRlbnMgYW5kIG9uZXMgZGlnaXRzKSBhbmQKKyAgICAgICAgICAgIC8vIHNlcGFyYXRlcyB0aGUgdGhvdXNhbmRzIGdyb3VwcyB3aXRoIGNvbW1hcyBpbiB2YWx1ZXMgb3ZlciAxMDAsMDAwLgorICAgICAgICAgICAgKyAiJWRlZmF1bHQ6XG4iCisgICAgICAgICAgICAgICAgICAgLy8gbmVnYXRpdmUtbnVtYmVyIGFuZCBmcmFjdGlvbiBydWxlcy4gIFRoZXNlIGFyZSB0aGUgc2FtZQorICAgICAgICAgICAgICAgICAgIC8vIGFzIHRob3NlIGZvciAlc2ltcGxpZmllZCwgYnV0IGF2ZSB0byBiZSBzdGF0ZWQgaGVyZSB0b28KKyAgICAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHRoaXMgaXMgYW4gZW50cnkgcG9pbnQKKyAgICAgICAgICAgICsgIiAgICAteDogbWludXMgPj47XG4iCisgICAgICAgICAgICArICIgICAgeC54OiA8PCBwb2ludCA+PjtcbiIKKyAgICAgICAgICAgICAgICAgICAvLyBqdXN0IHVzZSAlc2ltcGxpZmllZCBmb3IgdmFsdWVzIGJlbG93IDEwMAorICAgICAgICAgICAgKyAiICAgID0lc2ltcGxpZmllZD07XG4iCisgICAgICAgICAgICAgICAgICAgLy8gZm9yIHZhbHVlcyBmcm9tIDEwMCB0byA5LDk5OSB1c2UgJSVhbmQgdG8gZGVjaWRlIHdoZXRoZXIgb3IKKyAgICAgICAgICAgICAgICAgICAvLyBub3QgdG8gaW50ZXJwb3NlIHRoZSAiYW5kIgorICAgICAgICAgICAgKyAiICAgIDEwMDogPDwgaHVuZHJlZFsgPiUlYW5kPl07XG4iCisgICAgICAgICAgICArICIgICAgMTAwMDogPDwgdGhvdXNhbmRbID4lJWFuZD5dO1xuIgorICAgICAgICAgICAgICAgICAgIC8vIGZvciB2YWx1ZXMgb2YgMTAwLDAwMCBhbmQgdXAsIHVzZSAlJWNvbW1hcyB0byBpbnRlcnBvc2UgdGhlCisgICAgICAgICAgICAgICAgICAgLy8gY29tbWFzIGluIHRoZSByaWdodCBwbGFjZXMgKGFuZCBhbHNvIHRvIGludGVycG9zZSB0aGUgImFuZCIpCisgICAgICAgICAgICArICIgICAgMTAwLDAwMD4+OiA8PCB0aG91c2FuZFs+JSVjb21tYXM+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxLDAwMCwwMDA6IDw8IG1pbGxpb25bPiUlY29tbWFzPl07XG4iCisgICAgICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMDogPDwgYmlsbGlvbls+JSVjb21tYXM+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMDogPDwgdHJpbGxpb25bPiUlY29tbWFzPl07XG4iCisgICAgICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9O1xuIgorICAgICAgICAgICAgLy8gaWYgdGhlIHZhbHVlIHBhc3NlZCB0byB0aGlzIHJ1bGUgc2V0IGlzIGdyZWF0ZXIgdGhhbiAxMDAsIGRvbid0CisgICAgICAgICAgICAvLyBhZGQgdGhlICJhbmQiOyBpZiBpdCdzIGxlc3MgdGhhbiAxMDAsIGFkZCAiYW5kIiBiZWZvcmUgdGhlIGxhc3QKKyAgICAgICAgICAgIC8vIGRpZ2l0cworICAgICAgICAgICAgKyAiJSVhbmQ6XG4iCisgICAgICAgICAgICArICIgICAgYW5kID0lZGVmYXVsdD07XG4iCisgICAgICAgICAgICArICIgICAgMTAwOiA9JWRlZmF1bHQ9O1xuIgorICAgICAgICAgICAgLy8gdGhpcyBydWxlIHNldCBpcyB1c2VkIHRvIHBsYWNlIHRoZSBjb21tYXMKKyAgICAgICAgICAgICsgIiUlY29tbWFzOlxuIgorICAgICAgICAgICAgICAgICAgIC8vIGZvciB2YWx1ZXMgYmVsb3cgMTAwLCBhZGQgImFuZCIgKHRoZSBhcG9zdHJvcGhlIGF0IHRoZQorICAgICAgICAgICAgICAgICAgIC8vIGJlZ2lubmluZyBpcyBpZ25vcmVkLCBidXQgY2F1c2VzIHRoZSBzcGFjZSB0aGF0IGZvbGxvd3MgaXQKKyAgICAgICAgICAgICAgICAgICAvLyB0byBiZSBzaWduaWZpY2FudDogdGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB0aGUgcnVsZXMKKyAgICAgICAgICAgICAgICAgICAvLyBjYWxsaW5nICUlY29tbWFzIGRvbid0IHB1dCBhIHNwYWNlIGJlZm9yZSBpdCkKKyAgICAgICAgICAgICsgIiAgICAnIGFuZCA9JWRlZmF1bHQ9O1xuIgorICAgICAgICAgICAgICAgICAgIC8vIHB1dCBhIGNvbW1hIGFmdGVyIHRoZSB0aG91c2FuZHMgKG9yIHdoYXRldmVyIHByZWNlZGVkIHRoZQorICAgICAgICAgICAgICAgICAgIC8vIGh1bmRyZWRzKQorICAgICAgICAgICAgKyAiICAgIDEwMDogLCA9JWRlZmF1bHQ9O1xuIgorICAgICAgICAgICAgICAgICAgIC8vIHB1dCBhIGNvbW1hIGFmdGVyIHRoZSBtaWxsaW9ucyAob3Igd2hhdGV2ZXIgcHJlY2VkZXMgdGhlCisgICAgICAgICAgICAgICAgICAgLy8gdGhvdXNhbmRzKQorICAgICAgICAgICAgKyAiICAgIDEwMDA6ICwgPCVkZWZhdWx0PCB0aG91c2FuZCwgPiVkZWZhdWx0PjtcbiIKKyAgICAgICAgICAgICAgICAgICAvLyBhbmQgc28gb24uLi4KKyAgICAgICAgICAgICsgIiAgICAxLDAwMCwwMDA6ICwgPSVkZWZhdWx0PTsiCisgICAgICAgICAgICAvLyAlJWxlbmllbnQtcGFyc2UgaXNuJ3QgcmVhbGx5IGEgc2V0IG9mIG51bWJlciBmb3JtYXR0aW5nIHJ1bGVzOworICAgICAgICAgICAgLy8gaXQncyBhIHNldCBvZiBjb2xsYXRpb24gcnVsZXMuICBMZW5pZW50LXBhcnNlIG1vZGUgdXNlcyBhIENvbGxhdG9yCisgICAgICAgICAgICAvLyBvYmplY3QgdG8gY29tcGFyZSBmcmFnbWVudHMgb2YgdGhlIHRleHQgYmVpbmcgcGFyc2VkIHRvIHRoZSB0ZXh0CisgICAgICAgICAgICAvLyBpbiB0aGUgcnVsZXMsIGFsbG93aW5nIG1vcmUgbGVld2F5IGluIHRoZSBtYXRjaGluZyB0ZXh0LiAgVGhpcyBzZXQKKyAgICAgICAgICAgIC8vIG9mIHJ1bGVzIHRlbGxzIHRoZSBmb3JtYXR0ZXIgdG8gaWdub3JlIGNvbW1hcyB3aGVuIHBhcnNpbmcgKGl0CisgICAgICAgICAgICAvLyBhbHJlYWR5IGlnbm9yZXMgc3BhY2VzLCB3aGljaCBpcyB3aHkgd2UgcmVmZXIgdG8gdGhlIHNwYWNlOyBpdCBhbHNvCisgICAgICAgICAgICAvLyBpZ25vcmVzIGh5cGhlbnMsIG1ha2luZyAidHdlbnR5IG9uZSIgYW5kICJ0d2VudHktb25lIiBwYXJzZQorICAgICAgICAgICAgLy8gaWRlbnRpY2FsbHkpCisgICAgICAgICAgICArICIlJWxlbmllbnQtcGFyc2U6XG4iCisgICAgICAgICAgICArICIgICAgJiAnICcgLCAnLCcgO1xuIiB9LAorCisgICAgICAgIC8qCisgICAgICAgICAqIFRoaXMgcnVsZSBzZXQgYWRkcyBhbiBFbmdsaXNoIG9yZGluYWwgYWJicmV2aWF0aW9uIHRvIHRoZSBlbmQgb2YgYQorICAgICAgICAgKiBudW1iZXIuICBGb3IgZXhhbXBsZSwgMiBpcyBmb3JtYXR0ZWQgYXMgIjJuZCIuICBQYXJzaW5nIGRvZXNuJ3Qgd29yayB3aXRoCisgICAgICAgICAqIHRoaXMgcnVsZSBzZXQuICBUbyBwYXJzZSwgdXNlIERlY2ltYWxGb3JtYXQgb24gdGhlIG51bWVyYWwuCisgICAgICAgICAqLworICAgICAgICB7ICJPcmRpbmFsUnVsZXMiLAorICAgICAgICAgICAgLy8gdGhpcyBydWxlIHNldCBmb3JtYXRzIHRoZSBudW1lcmFsIGFuZCBjYWxscyAlJWFiYnJldiB0bworICAgICAgICAgICAgLy8gc3VwcGx5IHRoZSBhYmJyZXZpYXRpb24KKyAgICAgICAgICAgICIlbWFpbjpcbiIKKyAgICAgICAgICAgICsgIiAgICA9IywjIzA9PSUlYWJicmV2PTtcbiIKKyAgICAgICAgICAgIC8vIHRoaXMgcnVsZSBzZXQgc3VwcGxpZXMgdGhlIGFiYnJldmlhdGlvbgorICAgICAgICAgICAgKyAiJSVhYmJyZXY6XG4iCisgICAgICAgICAgICAgICAgICAgLy8gdGhlIGFiYnJldmlhdGlvbnMuICBFdmVyeXRoaW5nIGZyb20gNCB0byAxOSBlbmRzIGluICJ0aCIKKyAgICAgICAgICAgICsgIiAgICB0aDsgc3Q7IG5kOyByZDsgdGg7XG4iCisgICAgICAgICAgICAgICAgICAgLy8gYXQgMjAsIHdlIGJlZ2luIHJlcGVhdGluZyB0aGUgY3ljbGUgZXZlcnkgMTAgKDEzIGlzICIxM3RoIiwKKyAgICAgICAgICAgICAgICAgICAvLyBidXQgMjMgYW5kIDMzIGFyZSAiMjNyZCIgYW5kICIzM3JkIikgIFdlIGRvIHRoaXMgYnkKKyAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmluZyBhbGwgYnVnIHRoZSBvbmVzIGRpZ2l0IGluIHNlbGVjdGluZyB0aGUgYWJicmV2aWF0aW9uCisgICAgICAgICAgICArICIgICAgMjA6ID4+O1xuIgorICAgICAgICAgICAgICAgICAgIC8vIGF0IDEwMCwgd2UgcmVwZWF0IHRoZSB3aG9sZSBjeWNsZSBieSBjb25zaWRlcmluZyBvbmx5IHRoZQorICAgICAgICAgICAgICAgICAgIC8vIHRlbnMgYW5kIG9uZXMgZGlnaXRzIGluIHBpY2tpbmcgYW4gYWJicmV2aWF0aW9uCisgICAgICAgICAgICArICIgICAgMTAwOiA+PjtcbiIgfSwKKworICAgICAgICAvKgorICAgICAgICAgKiBUaGlzIHJ1bGUgc2V0IGZvcm1hdHMgYSBudW1iZXIgb2Ygc2Vjb25kcyBpbiBzZXhhZ2VzaW1hbCBub3RhdGlvbgorICAgICAgICAgKiAoaS5lLiwgaG91cnMsIG1pbnV0ZXMsIGFuZCBzZWNvbmRzKS4gICV3aXRoLXdvcmRzIGZvcm1hdHMgaXQgd2l0aAorICAgICAgICAgKiB3b3JkcyAoMyw3NDAgaXMgIjEgaG91ciwgMiBtaW51dGVzLCAyMCBzZWNvbmRzIikgYW5kICVpbi1udW1lcmFscworICAgICAgICAgKiBmb3JtYXRzIGl0IGVudGlyZWx5IGluIG51bWVyYWxzICgzLDc0MCBpcyAiMTowMjoyMCIpLgorICAgICAgICAgKi8KKyAgICAgICAgeyAiRHVyYXRpb25SdWxlcyIsCisgICAgICAgICAgICAvLyBtYWluIHJ1bGUgc2V0IGZvciBmb3JtYXR0aW5nIHdpdGggd29yZHMKKyAgICAgICAgICAgICIld2l0aC13b3JkczpcbiIKKyAgICAgICAgICAgICAgICAgICAvLyB0YWtlIGNhcmUgb2Ygc2luZ3VsYXIgYW5kIHBsdXJhbCBmb3JtcyBvZiAic2Vjb25kIgorICAgICAgICAgICAgKyAiICAgIDAgc2Vjb25kczsgMSBzZWNvbmQ7ID0wPSBzZWNvbmRzO1xuIgorICAgICAgICAgICAgICAgICAgIC8vIHVzZSAlJW1pbiB0byBmb3JtYXQgdmFsdWVzIGdyZWF0ZXIgdGhhbiA2MCBzZWNvbmRzCisgICAgICAgICAgICArICIgICAgNjAvNjA6IDwlJW1pbjxbLCA+Pl07XG4iCisgICAgICAgICAgICAgICAgICAgLy8gdXNlICUlaHIgdG8gZm9ybWF0IHZhbHVlcyBncmVhdGVyIHRoYW4gMyw2MDAgc2Vjb25kcworICAgICAgICAgICAgICAgICAgIC8vICh0aGUgIj4+PiIgYmVsb3cgY2F1c2VzIHVzIHRvIHNlZSB0aGUgbnVtYmVyIG9mIG1pbnV0ZXMKKyAgICAgICAgICAgICAgICAgICAvLyB3aGVuIHdoZW4gdGhlcmUgYXJlIHplcm8gbWludXRlcykKKyAgICAgICAgICAgICsgIiAgICAzNjAwLzYwOiA8JSVocjxbLCA+Pj5dO1xuIgorICAgICAgICAgICAgLy8gdGhpcyBydWxlIHNldCB0YWtlcyBjYXJlIG9mIHRoZSBzaW5ndWxhciBhbmQgcGx1cmFsIGZvcm1zCisgICAgICAgICAgICAvLyBvZiAibWludXRlIgorICAgICAgICAgICAgKyAiJSVtaW46XG4iCisgICAgICAgICAgICArICIgICAgMCBtaW51dGVzOyAxIG1pbnV0ZTsgPTA9IG1pbnV0ZXM7XG4iCisgICAgICAgICAgICAvLyB0aGlzIHJ1bGUgc2V0IHRha2VzIGNhcmUgb2YgdGhlIHNpbmd1bGFyIGFuZCBwbHVyYWwgZm9ybXMKKyAgICAgICAgICAgIC8vIG9mICJob3VyIgorICAgICAgICAgICAgKyAiJSVocjpcbiIKKyAgICAgICAgICAgICsgIiAgICAwIGhvdXJzOyAxIGhvdXI7ID0wPSBob3VycztcbiIKKworICAgICAgICAgICAgLy8gbWFpbiBydWxlIHNldCBmb3IgZm9ybWF0dGluZyBpbiBudW1lcmFscworICAgICAgICAgICAgKyAiJWluLW51bWVyYWxzOlxuIgorICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlcyBiZWxvdyA2MCBzZWNvbmRzIGFyZSBzaG93biB3aXRoICJzZWMuIgorICAgICAgICAgICAgKyAiICAgID0wPSBzZWMuO1xuIgorICAgICAgICAgICAgICAgICAgIC8vIGhpZ2hlciB2YWx1ZXMgYXJlIHNob3duIHdpdGggY29sb25zOiAlJW1pbi1zZWMgaXMgdXNlZCBmb3IKKyAgICAgICAgICAgICAgICAgICAvLyB2YWx1ZXMgYmVsb3cgMyw2MDAgc2Vjb25kcy4uLgorICAgICAgICAgICAgKyAiICAgIDYwOiA9JSVtaW4tc2VjPTtcbiIKKyAgICAgICAgICAgICAgICAgICAvLyAuLi5hbmQgJSVoci1taW4tc2VjIGlzIHVzZWQgZm9yIHZhbHVlcyBvZiAzLDYwMCBzZWNvbmRzCisgICAgICAgICAgICAgICAgICAgLy8gYW5kIGFib3ZlCisgICAgICAgICAgICArICIgICAgMzYwMDogPSUlaHItbWluLXNlYz07XG4iCisgICAgICAgICAgICAvLyB0aGlzIHJ1bGUgY2F1c2VzIHZhbHVlcyBvZiBsZXNzIHRoYW4gMTAgbWludXRlcyB0byBzaG93IHdpdGhvdXQKKyAgICAgICAgICAgIC8vIGEgbGVhZGluZyB6ZXJvCisgICAgICAgICAgICArICIlJW1pbi1zZWM6XG4iCisgICAgICAgICAgICArICIgICAgMDogOj0wMD07XG4iCisgICAgICAgICAgICArICIgICAgNjAvNjA6IDwwPD4+O1xuIgorICAgICAgICAgICAgLy8gdGhpcyBydWxlIHNldCBpcyB1c2VkIGZvciB2YWx1ZXMgb2YgMyw2MDAgb3IgbW9yZS4gIE1pbnV0ZXMgYXJlIGFsd2F5cworICAgICAgICAgICAgLy8gc2hvd24sIGFuZCBhbHdheXMgc2hvd24gd2l0aCB0d28gZGlnaXRzCisgICAgICAgICAgICArICIlJWhyLW1pbi1zZWM6XG4iCisgICAgICAgICAgICArICIgICAgMDogOj0wMD07XG4iCisgICAgICAgICAgICArICIgICAgNjAvNjA6IDwwMDw+PjtcbiIKKyAgICAgICAgICAgICsgIiAgICAzNjAwLzYwOiA8IywjIzA8Oj4+PjtcbiIKKyAgICAgICAgICAgIC8vIHRoZSBsZW5pZW50LXBhcnNlIHJ1bGVzIGFsbG93IHNldmVyYWwgZGlmZmVyZW50IGNoYXJhY3RlcnMgdG8gYmUgdXNlZAorICAgICAgICAgICAgLy8gYXMgZGVsaW1pdGVycyBiZXR3ZWVuIGhvdXJzLCBtaW51dGVzLCBhbmQgc2Vjb25kcworICAgICAgICAgICAgKyAiJSVsZW5pZW50LXBhcnNlOlxuIgorICAgICAgICAgICAgKyAiICAgICYgJzonID0gJy4nID0gJyAnID0gJy0nO1xuIiB9CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL051bWJlckZvcm1hdFJ1bGVzX2RlLmphdmEgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9OdW1iZXJGb3JtYXRSdWxlc19kZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjY0MTM2ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9OdW1iZXJGb3JtYXRSdWxlc19kZS5qYXZhCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL0F0dGljL051bWJlckZvcm1hdFJ1bGVzX2RlLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDMvMTAgMDQ6MDc6MjcgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRleHQucmVzb3VyY2VzOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLyoqCisgKiBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZGF0YSBmb3IgR2VybWFuCisgKgorICogQGF1dGhvciBSaWNoYXJkIEdpbGxhbQorICogQHZlcnNpb24gJFZlcnNpb24kICREYXRlOiAyMDAwLzAzLzEwIDA0OjA3OjI3ICQKKyAqLworcHVibGljIGNsYXNzIE51bWJlckZvcm1hdFJ1bGVzX2RlIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBQdXRzIGEgY29weXJpZ2h0IGluIHRoZSAuY2xhc3MgZmlsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHROb3RpY2UKKyAgICAgICAgPSAiQ29weXJpZ2h0IFx1MDBhOTE5OTctMTk5OCBJQk0gQ29ycC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gY29udGVudHM7CisgICAgfQorCisgICAgT2JqZWN0W11bXSBjb250ZW50cyA9IHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIFNwZWxsb3V0IHJ1bGVzIGZvciBHZXJtYW4uICBHZXJtYW4gYWxzbyBhZGRzIHNvbWUgaW50ZXJlc3RpbmcKKyAgICAgICAgICogY2hhcmFjdGVyaXN0aWNzLiAgRm9yIHZhbHVlcyBiZWxvdyAxLDAwMCwwMDAsIG51bWJlcnMgYXJlIGN1c3RvbWFyaWx5CisgICAgICAgICAqIHdyaXR0ZW4gb3V0IGFzIGEgc2luZ2xlIHdvcmQuICBBbmQgdGhlIG9uZXMgZGlnaXQgUFJFQ0VERVMgdGhlIHRlbnMKKyAgICAgICAgICogZGlnaXQgKGUuZy4sIDIzIGlzICJkcmVpdW5kendhbnppZywiIG5vdCAiendhbnppZ3VuZGRyZWkiKS4KKyAgICAgICAgICovCisgICAgICAgIHsgIlNwZWxsb3V0UnVsZXMiLAorICAgICAgICAgICAgLy8gMSBpcyAiZWlucyIgd2hlbiBieSBpdHNlbGYsIGJ1dCB0dXJucyBpbnRvICJlaW4iIGluIG1vc3QKKyAgICAgICAgICAgIC8vIGNvbWJpbmF0aW9ucworICAgICAgICAgICAgIiVhbHQtb25lczpcbiIKKyAgICAgICAgICAgICsgIiAgICBudWxsOyBlaW5zOyA9JSVtYWluPTtcbiIKKyAgICAgICAgICAgICsgIiUlbWFpbjpcbiIKKyAgICAgICAgICAgICAgICAgICAvLyB3b3JkcyBmb3IgbnVtYmVycyBmcm9tIDAgdG8gMTIuICBOb3RpY2UgdGhhdCB0aGUgdmFsdWVzCisgICAgICAgICAgICAgICAgICAgLy8gZnJvbSAxMyB0byAxOSBjYW4gZGVyaXZlZCBhbGdvcml0aG1pY2FsbHksIHVubGlrZSBpbiBtb3N0CisgICAgICAgICAgICAgICAgICAgLy8gb3RoZXIgbGFuZ3VhZ2VzCisgICAgICAgICAgICArICIgICAgbnVsbDsgZWluOyB6d2VpOyBkcmVpOyB2aWVyOyBmXHUwMGZjbmY7IHNlY2hzOyBzaWViZW47IGFjaHQ7IG5ldW47XG4iCisgICAgICAgICAgICArICIgICAgemVobjsgZWxmOyB6d1x1MDBmNmxmOyA+PnplaG47XG4iCisgICAgICAgICAgICAgICAgICAgLy8gcnVsZXMgZm9yIHRoZSBtdWx0aXBsZXMgb2YgMTAuICBOb3RpY2UgdGhhdCB0aGUgb25lcyBkaWdpdAorICAgICAgICAgICAgICAgICAgIC8vIGdvZXMgb24gdGhlIGZyb250CisgICAgICAgICAgICArICIgICAgMjA6IFs+PnVuZF16d2FuemlnO1xuIgorICAgICAgICAgICAgKyAiICAgIDMwOiBbPj51bmRdZHJlaVx1MDBkZmlnO1xuIgorICAgICAgICAgICAgKyAiICAgIDQwOiBbPj51bmRddmllcnppZztcbiIKKyAgICAgICAgICAgICsgIiAgICA1MDogWz4+dW5kXWZcdTAwZmNuZnppZztcbiIKKyAgICAgICAgICAgICsgIiAgICA2MDogWz4+dW5kXXNlY2h6aWc7XG4iCisgICAgICAgICAgICArICIgICAgNzA6IFs+PnVuZF1zaWViemlnO1xuIgorICAgICAgICAgICAgKyAiICAgIDgwOiBbPj51bmRdYWNodHppZztcbiIKKyAgICAgICAgICAgICsgIiAgICA5MDogWz4+dW5kXW5ldW56aWc7XG4iCisgICAgICAgICAgICArICIgICAgMTAwOiBodW5kZXJ0Wz4lYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAyMDA6IDw8aHVuZGVydFs+JWFsdC1vbmVzPl07XG4iCisgICAgICAgICAgICArICIgICAgMTAwMDogdGF1c2VuZFs+JWFsdC1vbmVzPl07XG4iCisgICAgICAgICAgICArICIgICAgMjAwMDogPDx0YXVzZW5kWz4lYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxLDAwMCwwMDA6IGVpbmUgTWlsbGlvblsgPiVhbHQtb25lcz5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDIsMDAwLDAwMDogPDwgTWlsbGlvbmVuWyA+JWFsdC1vbmVzPl07XG4iCisgICAgICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMDogZWluZSBNaWxsaWFyZGVbID4lYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAyLDAwMCwwMDAsMDAwOiA8PCBNaWxsaWFyZGVuWyA+JWFsdC1vbmVzPl07XG4iCisgICAgICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IGVpbmUgQmlsbGlvblsgPiVhbHQtb25lcz5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDIsMDAwLDAwMCwwMDAsMDAwOiA8PCBCaWxsaW9uZW5bID4lYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMCwwMDA6ID0jLCMjMD07IgorICAgICAgICAgICAgKyAiJSVsZW5pZW50LXBhcnNlOlxuIgorICAgICAgICAgICAgKyAiICAgICYgYWUgLCBcdTAwZTQgJiBhZSAsIFx1MDBjNFxuIgorICAgICAgICAgICAgKyAiICAgICYgb2UgLCBcdTAwZjYgJiBvZSAsIFx1MDBkNlxuIgorICAgICAgICAgICAgKyAiICAgICYgdWUgLCBcdTAwZmMgJiB1ZSAsIFx1MDBkY1xuIgorICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgLy8gYWdhaW4sIEknbSBub3QgMTAwJSBzdXJlIG9mIHRoZXNlIHJ1bGVzLiAgSSB0aGluayBib3RoICJodW5kZXJ0IiBhbmQKKyAgICAgICAgLy8gImVpbmh1bmRlcnQiIGFyZSBjb3JyZWN0IG9yIDEwMCwgYnV0IEknbSBub3Qgc3VyZSB3aGljaCBpcyBwcmVmZXJhYmxlCisgICAgICAgIC8vIGluIHNpdHVhdGlvbnMgd2hlcmUgdGhpcyBmcmFtZXdvcmsgaXMgbGlrZWx5IHRvIGJlIHVzZWQuICBBbHNvLCBpcyBpdAorICAgICAgICAvLyByZWFsbHkgdHJ1ZSB0aGF0IG51bWJlcnMgYXJlIHJ1biB0b2dldGhlciBpbnRvIGNvbXBvdW5kIHdvcmRzIGFsbCB0aGUKKyAgICAgICAgLy8gdGltZT8gIEFuZCBhZ2FpbiwgSSdtIG1pc3NpbmcgaW5mb3JtYXRpb24gb24gbmVnYXRpdmUgbnVtYmVycyBhbmQKKyAgICAgICAgLy8gZGVjaW1hbHMuCisgICAgfTsKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvTnVtYmVyRm9ybWF0UnVsZXNfZWwuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL051bWJlckZvcm1hdFJ1bGVzX2VsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjNiZDAyZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL051bWJlckZvcm1hdFJ1bGVzX2VsLmphdmEKQEAgLTAsMCArMSw4MCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvQXR0aWMvTnVtYmVyRm9ybWF0UnVsZXNfZWwuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwNDowNzoyNyAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS50ZXh0LnJlc291cmNlczsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8qKgorICogUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGRhdGEgZm9yIEdyZWVrCisgKgorICogQGF1dGhvciBSaWNoYXJkIEdpbGxhbQorICogQHZlcnNpb24gJFZlcnNpb24kICREYXRlOiAyMDAwLzAzLzEwIDA0OjA3OjI3ICQKKyAqLworcHVibGljIGNsYXNzIE51bWJlckZvcm1hdFJ1bGVzX2VsIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBQdXRzIGEgY29weXJpZ2h0IGluIHRoZSAuY2xhc3MgZmlsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHROb3RpY2UKKyAgICAgICAgPSAiQ29weXJpZ2h0IFx1MDBhOTE5OTctMTk5OCBJQk0gQ29ycC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gY29udGVudHM7CisgICAgfQorCisgICAgT2JqZWN0W11bXSBjb250ZW50cyA9IHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIFNwZWxsb3V0IHJ1bGVzIGZvciBHcmVlay4gIEFnYWluIGluIEdyZWVrIHdlIGhhdmUgdG8gc3VwcGx5IHRoZSB3b3JkcworICAgICAgICAgKiBmb3IgdGhlIG11bHRpcGxlcyBvZiAxMDAgYmVjYXVzZSB0aGV5IGNhbid0IGJlIGRlcml2ZWQgYWxnb3JpdGhtaWNhbGx5LgorICAgICAgICAgKiBBbHNvLCB0aGUgdGVucyBkZ2l0IGNoYW5nZXMgZm9ybSB3aGVuIGZvbGxvd2VkIGJ5IGEgb25lcyBkaWdpdDogYW4KKyAgICAgICAgICogYWNjZW50IG1hcmsgZGlzYXBwZWFycyBmcm9tIHRoZSB0ZW5zIGRpZ2l0IGFuZCBtb3ZlcyB0byB0aGUgb25lcyBkaWdpdC4KKyAgICAgICAgICogVGhlcmVmb3JlLCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBbXSBub3RhdGlvbiwgd2UgYWN0dWFsbHkgaGF2ZSB0byB1c2UKKyAgICAgICAgICogdHdvIHNlcGFyYXRlIHJ1bGVzIGZvciBlYWNoIG11bHRpcGxlIG9mIDEwIHRvIHNob3cgdGhlIHR3byBmb3JtcyBvZgorICAgICAgICAgKiB0aGUgd29yZC4KKyAgICAgICAgICovCisgICAgICAgIHsgIlNwZWxsb3V0UnVsZXMiLAorICAgICAgICAgICAgInplcm8gKGluY29tcGxldGUgZGF0YSk7IFx1MDNhZFx1MDNiZFx1MDNiMTsgXHUwM2I0XHUwM2NkXHUwM2JmOyBcdTAzYjRcdTAzYzFcdTAzYWZcdTAzYjE7ICIKKyAgICAgICAgICAgICsgIlx1MDNjNFx1MDNhZFx1MDNjM1x1MDNjM1x1MDNiNVx1MDNjMVx1MDNiMTsgXHUwM2MwXHUwM2FkXHUwM2JkXHUwM2M0XHUwM2I1OyAiCisgICAgICAgICAgICArICJcdTAzYWRcdTAzYmVcdTAzYjk7IFx1MDNiNVx1MDNjMFx1MDNjNFx1MDNhYzsgXHUwM2JmXHUwM2JhXHUwM2M0XHUwM2NlOyAiCisgICAgICAgICAgICArICJcdTAzYjVcdTAzYmRcdTAzYmRcdTAzYWRcdTAzYjE7XG4iCisgICAgICAgICAgICArICIxMDogXHUwM2I0XHUwM2FkXHUwM2JhXHUwM2IxOyAiCisgICAgICAgICAgICArICJcdTAzYWRcdTAzYmRcdTAzYjRcdTAzYjVcdTAzYmFcdTAzYjE7IFx1MDNiNFx1MDNjZVx1MDNiNFx1MDNiNVx1MDNiYVx1MDNiMTsgIgorICAgICAgICAgICAgKyAiXHUwM2I0XHUwM2I1XHUwM2JhXHUwM2IxPj47XG4iCisgICAgICAgICAgICArICIyMDogXHUwM2I1XHUwM2FmXHUwM2JhXHUwM2JmXHUwM2MzXHUwM2I5OyBcdTAzYjVcdTAzYjlcdTAzYmFcdTAzYmZcdTAzYzNcdTAzYjk+PjtcbiIKKyAgICAgICAgICAgICsgIjMwOiBcdTAzYzRcdTAzYzFcdTAzYjlcdTAzYWNcdTAzYmRcdTAzYzRcdTAzYjE7IFx1MDNjNFx1MDNjMVx1MDNiOVx1MDNiMVx1MDNiZFx1MDNjNFx1MDNiMT4+O1xuIgorICAgICAgICAgICAgKyAiNDA6IFx1MDNjM1x1MDNiMVx1MDNjMVx1MDNhY1x1MDNiZFx1MDNjNFx1MDNiMTsgXHUwM2MzXHUwM2IxXHUwM2MxXHUwM2IxXHUwM2JkXHUwM2M0XHUwM2IxPj47XG4iCisgICAgICAgICAgICArICI1MDogXHUwM2MwXHUwM2I1XHUwM2JkXHUwM2FlXHUwM2JkXHUwM2M0XHUwM2IxOyBcdTAzYzBcdTAzYjVcdTAzYmRcdTAzYjdcdTAzYmRcdTAzYzRcdTAzYjE+PjtcbiIKKyAgICAgICAgICAgICsgIjYwOiBcdTAzYjVcdTAzYmVcdTAzYWVcdTAzYmRcdTAzYzRcdTAzYjE7IFx1MDNiNVx1MDNiZVx1MDNiN1x1MDNiZFx1MDNjNFx1MDNiMT4+O1xuIgorICAgICAgICAgICAgKyAiNzA6IFx1MDNiNVx1MDNiMlx1MDNiNFx1MDNiZlx1MDNiY1x1MDNhZVx1MDNiZFx1MDNjNFx1MDNiMTsgIgorICAgICAgICAgICAgKyAiXHUwM2I1XHUwM2IyXHUwM2I0XHUwM2JmXHUwM2JjXHUwM2I3XHUwM2JkXHUwM2M0XHUwM2IxPj47XG4iCisgICAgICAgICAgICArICI4MDogXHUwM2JmXHUwM2IzXHUwM2I0XHUwM2NjXHUwM2JkXHUwM2M0XHUwM2IxOyBcdTAzYmZcdTAzYjNcdTAzYjRcdTAzYmZcdTAzYmRcdTAzYzRcdTAzYjE+PjtcbiIKKyAgICAgICAgICAgICsgIjkwOiBcdTAzYjVcdTAzYmRcdTAzYmRcdTAzYjVcdTAzYmRcdTAzYWVcdTAzYmRcdTAzYzRcdTAzYjE7ICIKKyAgICAgICAgICAgICsgIlx1MDNiNVx1MDNiZFx1MDNiZFx1MDNiNVx1MDNiZFx1MDNiN1x1MDNiZFx1MDNjNFx1MDNiMT4+O1xuIgorICAgICAgICAgICAgKyAiMTAwOiBcdTAzYjVcdTAzYmFcdTAzYjFcdTAzYzRcdTAzY2NbXHUwM2JkID4+XTtcbiIKKyAgICAgICAgICAgICsgIjIwMDogXHUwM2I0XHUwM2I5XHUwM2IxXHUwM2JhXHUwM2NjXHUwM2MzXHUwM2I5XHUwM2IxWyA+Pl07XG4iCisgICAgICAgICAgICArICIzMDA6IFx1MDNjNFx1MDNjMVx1MDNiOVx1MDNiMVx1MDNiYVx1MDNjY1x1MDNjM1x1MDNiOVx1MDNiMVsgPj5dO1xuIgorICAgICAgICAgICAgKyAiNDAwOiBcdTAzYzRcdTAzYjVcdTAzYzRcdTAzYzFcdTAzYjFcdTAzYmFcdTAzY2NcdTAzYzNcdTAzYjlcdTAzYjFbID4+XTtcbiIKKyAgICAgICAgICAgICsgIjUwMDogXHUwM2MwXHUwM2I1XHUwM2JkXHUwM2M0XHUwM2IxXHUwM2JhXHUwM2NjXHUwM2MzXHUwM2I5XHUwM2IxWyA+Pl07XG4iCisgICAgICAgICAgICArICI2MDA6IFx1MDNiNVx1MDNiZVx1MDNiMVx1MDNiYVx1MDNjY1x1MDNjM1x1MDNiOVx1MDNiMVsgPj5dO1xuIgorICAgICAgICAgICAgKyAiNzAwOiBcdTAzYjVcdTAzYzBcdTAzYzRcdTAzYjFcdTAzYmFcdTAzY2NcdTAzYzNcdTAzYjlcdTAzYjFbID4+XTtcbiIKKyAgICAgICAgICAgICsgIjgwMDogXHUwM2JmXHUwM2JhXHUwM2M0XHUwM2IxXHUwM2JhXHUwM2NjXHUwM2MzXHUwM2I5XHUwM2IxWyA+Pl07XG4iCisgICAgICAgICAgICArICI5MDA6IFx1MDNiNVx1MDNiZFx1MDNiZFx1MDNiOVx1MDNiMVx1MDNiYVx1MDNjY1x1MDNjM1x1MDNiOVx1MDNiMVsgPj5dO1xuIgorICAgICAgICAgICAgKyAiMTAwMDogXHUwM2M3XHUwM2FmXHUwM2JiXHUwM2I5XHUwM2IxWyA+Pl07XG4iCisgICAgICAgICAgICArICIyMDAwOiA8PCBcdTAzYzdcdTAzYWZcdTAzYmJcdTAzYjlcdTAzYjFbID4+XTtcbiIKKyAgICAgICAgICAgICsgIjEsMDAwLDAwMDogPDwgXHUwM2I1XHUwM2JhXHUwM2IxXHUwM2M0XHUwM2JmXHUwM2JjXHUwM2JjXHUwM2I5XHUwM2NjXHUwM2MxXHUwM2I5XHUwM2JmWyA+Pl07XG4iCisgICAgICAgICAgICArICIxLDAwMCwwMDAsMDAwOiA8PCBcdTAzYjRcdTAzYjlcdTAzYzNcdTAzYjVcdTAzYmFcdTAzYjFcdTAzYzRcdTAzYmZcdTAzYmNcdTAzYmNcdTAzYjlcdTAzY2NcdTAzYzFcdTAzYjlcdTAzYmZbID4+XTtcbiIKKyAgICAgICAgICAgICsgIjEsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9IiB9CisgICAgICAgIC8vIENhbiBzb21lb25lIHN1cHBseSBtZSB3aXRoIGluZm9ybWF0aW9uIG9uIG5lZ2F0aXZlcyBhbmQgZGVjaW1hbHM/CisgICAgICAgIC8vIEknbSBhbHNvIG1pc3NpbmcgdGhlIHdvcmQgZm9yIHplcm8uICBDYW4gc29tZW9uZSBjbHVlIG1lIGluPworICAgIH07Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9OdW1iZXJGb3JtYXRSdWxlc19lbi5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvTnVtYmVyRm9ybWF0UnVsZXNfZW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kMGQ3NjZlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvTnVtYmVyRm9ybWF0UnVsZXNfZW4uamF2YQpAQCAtMCwwICsxLDgyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9BdHRpYy9OdW1iZXJGb3JtYXRSdWxlc19lbi5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDA0OjA3OjI3ICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLnRleHQucmVzb3VyY2VzOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLyoqCisgKiBEZWZhdWx0IFJ1bGVCYXNlZE51bWJlckZvcm1hdCBkYXRhIGZvciBFbmdsaXNoLiAgVGhpcyByZXNvdXJjZQorICogaW5oZXJpdHMgZXZlcnl0aGluZyBmcm9tIHRoZSBkZWZhdWx0LgorICoKKyAqIEBhdXRob3IgUmljaGFyZCBHaWxsYW0KKyAqIEB2ZXJzaW9uICRWZXJzaW9uJCAkRGF0ZTogMjAwMC8wMy8xMCAwNDowNzoyNyAkCisgKi8KK3B1YmxpYyBjbGFzcyBOdW1iZXJGb3JtYXRSdWxlc19lbiBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgLyoqCisgICAgICogUHV0cyBhIGNvcHlyaWdodCBpbiB0aGUgLmNsYXNzIGZpbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0Tm90aWNlCisgICAgICAgID0gIkNvcHlyaWdodCBcdTAwYTkxOTk3LTE5OTggSUJNIENvcnAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICBwdWJsaWMgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRzOworICAgIH0KKworICAgIC8vIHRoaXMgaXMgZXhhY3RseSB0aGUgc2FtZSBhcyBTcGVsbG91dFJ1bGVzIGZyb20gdGhlIHJvb3QgcmVzb3VyY2UKKyAgICAvLyBidW5kbGUKKyAgICBPYmplY3RbXVtdIGNvbnRlbnRzID0geworICAgICAgICB7ICJTcGVsbG91dFJ1bGVzIiwKKyAgICAgICAgICAgICIlc2ltcGxpZmllZDpcbiIKKyAgICAgICAgICAgICsgIiAgICAteDogbWludXMgPj47XG4iCisgICAgICAgICAgICArICIgICAgeC54OiA8PCBwb2ludCA+PjtcbiIKKyAgICAgICAgICAgICsgIiAgICB6ZXJvOyBvbmU7IHR3bzsgdGhyZWU7IGZvdXI7IGZpdmU7IHNpeDsgc2V2ZW47IGVpZ2h0OyBuaW5lO1xuIgorICAgICAgICAgICAgKyAiICAgIHRlbjsgZWxldmVuOyB0d2VsdmU7IHRoaXJ0ZWVuOyBmb3VydGVlbjsgZmlmdGVlbjsgc2l4dGVlbjtcbiIKKyAgICAgICAgICAgICsgIiAgICAgICAgc2V2ZW50ZWVuOyBlaWdodGVlbjsgbmluZXRlZW47XG4iCisgICAgICAgICAgICArICIgICAgMjA6IHR3ZW50eVstPj5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDMwOiB0aGlydHlbLT4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICA0MDogZm9ydHlbLT4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICA1MDogZmlmdHlbLT4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICA2MDogc2l4dHlbLT4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICA3MDogc2V2ZW50eVstPj5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDgwOiBlaWdodHlbLT4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICA5MDogbmluZXR5Wy0+Pl07XG4iCisgICAgICAgICAgICArICIgICAgMTAwOiA8PCBodW5kcmVkWyA+Pl07XG4iCisgICAgICAgICAgICArICIgICAgMTAwMDogPDwgdGhvdXNhbmRbID4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxLDAwMCwwMDA6IDw8IG1pbGxpb25bID4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwOiA8PCBiaWxsaW9uWyA+Pl07XG4iCisgICAgICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IDw8IHRyaWxsaW9uWyA+Pl07XG4iCisgICAgICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9O1xuIgorICAgICAgICAgICAgKyAiJWRlZmF1bHQ6XG4iCisgICAgICAgICAgICArICIgICAgLXg6IG1pbnVzID4+O1xuIgorICAgICAgICAgICAgKyAiICAgIHgueDogPDwgcG9pbnQgPj47XG4iCisgICAgICAgICAgICArICIgICAgPSVzaW1wbGlmaWVkPTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxMDA6IDw8IGh1bmRyZWRbID4lJWFuZD5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDEwMDA6IDw8IHRob3VzYW5kWyA+JSVhbmQ+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxMDAsMDAwPj46IDw8IHRob3VzYW5kWz4lJWNvbW1hcz5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDEsMDAwLDAwMDogPDwgbWlsbGlvbls+JSVjb21tYXM+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwOiA8PCBiaWxsaW9uWz4lJWNvbW1hcz5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDAsMDAwOiA8PCB0cmlsbGlvbls+JSVjb21tYXM+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMCwwMDA6ID0jLCMjMD07XG4iCisgICAgICAgICAgICArICIlJWFuZDpcbiIKKyAgICAgICAgICAgICsgIiAgICBhbmQgPSVkZWZhdWx0PTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxMDA6ID0lZGVmYXVsdD07XG4iCisgICAgICAgICAgICArICIlJWNvbW1hczpcbiIKKyAgICAgICAgICAgICsgIiAgICAnIGFuZCA9JWRlZmF1bHQ9O1xuIgorICAgICAgICAgICAgKyAiICAgIDEwMDogLCA9JWRlZmF1bHQ9O1xuIgorICAgICAgICAgICAgKyAiICAgIDEwMDA6ICwgPCVkZWZhdWx0PCB0aG91c2FuZCwgPiVkZWZhdWx0PjtcbiIKKyAgICAgICAgICAgICsgIiAgICAxLDAwMCwwMDA6ICwgPSVkZWZhdWx0PTsiCisgICAgICAgICAgICArICIlJWxlbmllbnQtcGFyc2U6XG4iCisgICAgICAgICAgICArICIgICAgJiAnICcgLCAnLCcgO1xuIiB9CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL051bWJlckZvcm1hdFJ1bGVzX2VuX0dCLmphdmEgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9OdW1iZXJGb3JtYXRSdWxlc19lbl9HQi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjc5ZGRkYTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9OdW1iZXJGb3JtYXRSdWxlc19lbl9HQi5qYXZhCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL0F0dGljL051bWJlckZvcm1hdFJ1bGVzX2VuX0dCLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDMvMTAgMDQ6MDc6MjggJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0udGV4dC5yZXNvdXJjZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBkYXRhIGZvciBVLksuIEVuZ2xpc2guCisgKgorICogQGF1dGhvciBSaWNoYXJkIEdpbGxhbQorICogQHZlcnNpb24gJFZlcnNpb24kICREYXRlOiAyMDAwLzAzLzEwIDA0OjA3OjI4ICQKKyAqLworcHVibGljIGNsYXNzIE51bWJlckZvcm1hdFJ1bGVzX2VuX0dCIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBQdXRzIGEgY29weXJpZ2h0IGluIHRoZSAuY2xhc3MgZmlsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHROb3RpY2UKKyAgICAgICAgPSAiQ29weXJpZ2h0IFx1MDBhOTE5OTctMTk5OCBJQk0gQ29ycC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gY29udGVudHM7CisgICAgfQorCisgICAgT2JqZWN0W11bXSBjb250ZW50cyA9IHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIFNwZWxsb3V0IHJ1bGVzIGZvciBVLksuIEVuZ2xpc2guICBVLksuIEVuZ2xpc2ggaGFzIG9uZSBzaWduaWZpY2FudAorICAgICAgICAgKiBkaWZmZXJlbmNlIGZyb20gVS5TLiBFbmdsaXNoOiB0aGUgbmFtZXMgZm9yIHZhbHVlcyBvZiAxLDAwMCwwMDAsMDAwCisgICAgICAgICAqIGFuZCBoaWdoZXIuICBJbiBBbWVyaWNhbiBFbmdsaXNoLCBlYWNoIHN1Y2Nlc3NpdmUgIi1pbGxpb24iIGlzIDEsMDAwCisgICAgICAgICAqIHRpbWVzIGdyZWF0ZXIgdGhhbiB0aGUgcHJlY2VkaW5nIG9uZTogMSwwMDAsMDAwLDAwMCBpcyAib25lIGJpbGxpb24iCisgICAgICAgICAqIGFuZCAxLDAwMCwwMDAsMDAwLDAwMCBpcyAib25lIHRyaWxsaW9uLiIgIEluIEJyaXRpc2ggRW5nbGlzaCwgZWFjaAorICAgICAgICAgKiBzdWNjZXNzaXZlICItaWxsaW9uIiBpcyBvbmUgbWlsbGlvbiB0aW1lcyBncmVhdGVyIHRoYW4gdGhlIG9uZSBiZWZvcmU6CisgICAgICAgICAqICJvbmUgYmlsbGlvbiIgaXMgMSwwMDAsMDAwLDAwMCwwMDAgKG9yIHdoYXQgQW1lcmljYW5zIHdvdWxkIGNhbGwgYQorICAgICAgICAgKiAidHJpbGxpb24iKSwgYW5kICJvbmUgdHJpbGxpb24iIGlzIDEsMDAwLDAwMCwwMDAsMDAwLDAwMCwwMDAuCisgICAgICAgICAqIDEsMDAwLDAwMCwwMDAgaW4gQnJpdGlzaCBFbmdsaXNoIGlzICJvbmUgdGhvdXNhbmQgbWlsbGlvbi4iICAoVGhpcworICAgICAgICAgKiB2YWx1ZSBpcyBzb21ldGltZXMgY2FsbGVkIGEgIm1pbGxpYXJkLCIgYnV0IHRoaXMgd29yZCBzZWVtcyB0byBoYXZlCisgICAgICAgICAqIGZhbGxlbiBpbnRvIGRpc3VzZS4pCisgICAgICAgICAqLworICAgICAgICB7ICJTcGVsbG91dFJ1bGVzIiwKKyAgICAgICAgICAgICIlc2ltcGxpZmllZDpcbiIKKyAgICAgICAgICAgICsgIiAgICAteDogbWludXMgPj47XG4iCisgICAgICAgICAgICArICIgICAgeC54OiA8PCBwb2ludCA+PjtcbiIKKyAgICAgICAgICAgICsgIiAgICB6ZXJvOyBvbmU7IHR3bzsgdGhyZWU7IGZvdXI7IGZpdmU7IHNpeDsgc2V2ZW47IGVpZ2h0OyBuaW5lO1xuIgorICAgICAgICAgICAgKyAiICAgIHRlbjsgZWxldmVuOyB0d2VsdmU7IHRoaXJ0ZWVuOyBmb3VydGVlbjsgZmlmdGVlbjsgc2l4dGVlbjtcbiIKKyAgICAgICAgICAgICsgIiAgICAgICAgc2V2ZW50ZWVuOyBlaWdodGVlbjsgbmluZXRlZW47XG4iCisgICAgICAgICAgICArICIgICAgMjA6IHR3ZW50eVstPj5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDMwOiB0aGlydHlbLT4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICA0MDogZm9ydHlbLT4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICA1MDogZmlmdHlbLT4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICA2MDogc2l4dHlbLT4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICA3MDogc2V2ZW50eVstPj5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDgwOiBlaWdodHlbLT4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICA5MDogbmluZXR5Wy0+Pl07XG4iCisgICAgICAgICAgICArICIgICAgMTAwOiA8PCBodW5kcmVkWyA+Pl07XG4iCisgICAgICAgICAgICArICIgICAgMTAwMDogPDwgdGhvdXNhbmRbID4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxLDAwMCwwMDA6IDw8IG1pbGxpb25bID4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMDogPDwgYmlsbGlvblsgPj5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDEsMDAwLDAwMCwwMDAsMDAwLDAwMDogPSMsIyMwPTtcbiIKKyAgICAgICAgICAgICsgIiVkZWZhdWx0OlxuIgorICAgICAgICAgICAgKyAiICAgIC14OiBtaW51cyA+PjtcbiIKKyAgICAgICAgICAgICsgIiAgICB4Lng6IDw8IHBvaW50ID4+O1xuIgorICAgICAgICAgICAgKyAiICAgID0lc2ltcGxpZmllZD07XG4iCisgICAgICAgICAgICArICIgICAgMTAwOiA8PCBodW5kcmVkWyA+JSVhbmQ+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxMDAwOiA8PCB0aG91c2FuZFsgPiUlYW5kPl07XG4iCisgICAgICAgICAgICArICIgICAgMTAwLDAwMD4+OiA8PCB0aG91c2FuZFs+JSVjb21tYXM+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxLDAwMCwwMDA6IDw8IG1pbGxpb25bPiUlY29tbWFzPl07XG4iCisgICAgICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IDw8IGJpbGxpb25bPiUlY29tbWFzPl07XG4iCisgICAgICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9O1xuIgorICAgICAgICAgICAgKyAiJSVhbmQ6XG4iCisgICAgICAgICAgICArICIgICAgYW5kID0lZGVmYXVsdD07XG4iCisgICAgICAgICAgICArICIgICAgMTAwOiA9JWRlZmF1bHQ9O1xuIgorICAgICAgICAgICAgKyAiJSVjb21tYXM6XG4iCisgICAgICAgICAgICArICIgICAgJyBhbmQgPSVkZWZhdWx0PTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxMDA6ICwgPSVkZWZhdWx0PTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxMDAwOiAsIDwlZGVmYXVsdDwgdGhvdXNhbmQsID4lZGVmYXVsdD47XG4iCisgICAgICAgICAgICArICIgICAgMSwwMDAsMDAwOiAsID0lZGVmYXVsdD07IgorICAgICAgICAgICAgKyAiJSVsZW5pZW50LXBhcnNlOlxuIgorICAgICAgICAgICAgKyAiICAgICYgJyAnICwgJywnIDtcbiIgfQorICAgICAgICAvLyBDb3VsZCBzb21lb25lIHBsZWFzZSBjb3JyZWN0IG1lIGlmIEknbSB3cm9uZyBhYm91dCAibWlsbGlhcmQiIGZhbGxpbmcKKyAgICAgICAgLy8gaW50byBkaXN1c2UsIG9yIGhhdmUgbWlzc2VkIGFueSBvdGhlciBkZXRhaWxzIG9mIGhvdyBsYXJnZSBudW1iZXJzCisgICAgICAgIC8vIGFyZSByZW5kZXJlZC4gIEFsc28sIGNvdWxkIHNvbWVvbmUgcGxlYXNlIHByb3ZpZGUgbWUgd2l0aCBpbmZvcm1hdGlvbgorICAgICAgICAvLyBvbiB3aGljaCBvdGhlciBFbmdsaXNoLXNwZWFraW5nIGNvdW50cmllcyB1c2Ugd2hpY2ggc3lzdGVtPyAgUmlnaHQgbm93LAorICAgICAgICAvLyBJJ20gYXNzdW1pbmcgdGhhdCB0aGUgVS5TLiBzeXN0ZW0gaXMgdXNlZCBpbiBDYW5hZGEgYW5kIHRoYXQgYWxsIHRoZQorICAgICAgICAvLyBvdGhlciBFbmdsaXNoLXNwZWFraW5nIGNvdW50cmllcyBmb2xsb3cgdGhlIEJyaXRpc2ggc3lzdGVtLiAgQ2FuCisgICAgICAgIC8vIHNvbWVvbmUgb3V0IHRoZXJlIGNvbmZpcm0gdGhpcz8KKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvTnVtYmVyRm9ybWF0UnVsZXNfZXMuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL051bWJlckZvcm1hdFJ1bGVzX2VzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWVjMDJkYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL051bWJlckZvcm1hdFJ1bGVzX2VzLmphdmEKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvQXR0aWMvTnVtYmVyRm9ybWF0UnVsZXNfZXMuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwNDowNzoyOCAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS50ZXh0LnJlc291cmNlczsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8qKgorICogUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGRhdGEgZm9yIFNwYW5pc2guCisgKgorICogQGF1dGhvciBSaWNoYXJkIEdpbGxhbQorICogQHZlcnNpb24gJFZlcnNpb24kICREYXRlOiAyMDAwLzAzLzEwIDA0OjA3OjI4ICQKKyAqLworcHVibGljIGNsYXNzIE51bWJlckZvcm1hdFJ1bGVzX2VzIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBQdXRzIGEgY29weXJpZ2h0IGluIHRoZSAuY2xhc3MgZmlsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHROb3RpY2UKKyAgICAgICAgPSAiQ29weXJpZ2h0IFx1MDBhOTE5OTctMTk5OCBJQk0gQ29ycC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gY29udGVudHM7CisgICAgfQorCisgICAgT2JqZWN0W11bXSBjb250ZW50cyA9IHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIFNwZWxsb3V0IHJ1bGVzIGZvciBTcGFuaXNoLiAgVGhlIFNwYW5pc2ggcnVsZXMgYXJlIHF1aXRlIHNpbWlsYXIgdG8KKyAgICAgICAgICogdGhlIEVuZ2xpc2ggcnVsZXMsIGJ1dCB0aGVyZSBhcmUgc29tZSBpbXBvcnRhbnQgZGlmZmVyZW5jZXM6CisgICAgICAgICAqIEZpcnN0LCB3ZSBoYXZlIHRvIHByb3ZpZGUgc2VwYXJhdGUgcnVsZXMgZm9yIG1vc3Qgb2YgdGhlIHR3ZW50aWVzCisgICAgICAgICAqIGJlY2F1c2UgdGhlIG9uZXMgZGlnaXQgZnJlcXVlbnRseSBwaWNrcyB1cCBhbiBhY2NlbnQgbWFyayB0aGF0IGl0CisgICAgICAgICAqIGRvZXNuJ3QgaGF2ZSB3aGVuIHN0YW5kaW5nIGFsb25lLiAgU2Vjb25kLCBlYWNoIG11bHRpcGxlIG9mIDEwMCBoYXMKKyAgICAgICAgICogdG8gYmUgc3BlY2lmaWVkIHNlcGFyYXRlbHkgYmVjYXVzZSB0aGUgbXVsdGlwbGllciBvbiAxMDAgdmVyeSBvZnRlbgorICAgICAgICAgKiBjaGFuZ2VzIGZvcm0gaW4gdGhlIGNvbnRyYWN0aW9uOiA1MDAgaXMgInF1aW5pZW50b3MsIiBub3QKKyAgICAgICAgICogImNpbmNvY2llbnRvcy4iICBJbiBhZGRpdGlvbiwgdGhlIHdvcmQgZm9yIDEwMCBpcyAiY2llbiIgd2hlbgorICAgICAgICAgKiBzdGFuZGluZyBhbG9uZSwgYnV0IGNoYW5nZXMgdG8gImNpZW50byIgd2hlbiBmb2xsb3dlZCBieSBtb3JlIGRpZ2l0cy4KKyAgICAgICAgICogVGhlcmUgYWxzbyBzb21lIG90aGVyIGRpZmZlcmVuY2VzLgorICAgICAgICAgKi8KKyAgICAgICAgeyAiU3BlbGxvdXRSdWxlcyIsCisgICAgICAgICAgICAvLyBuZWdhdGl2ZS1udW1iZXIgYW5kIGZyYWN0aW9uIHJ1bGVzCisgICAgICAgICAgICAiLXg6IG1lbm9zID4+O1xuIgorICAgICAgICAgICAgKyAieC54OiA8PCBwdW50byA+PjtcbiIKKyAgICAgICAgICAgIC8vIHdvcmRzIGZvciB2YWx1ZXMgZnJvbSAwIHRvIDE5CisgICAgICAgICAgICArICJjZXJvOyB1bm87IGRvczsgdHJlczsgY3VhdHJvOyBjaW5jbzsgc2Vpczsgc2lldGU7IG9jaG87IG51ZXZlO1xuIgorICAgICAgICAgICAgKyAiZGllejsgb25jZTsgZG9jZTsgdHJlY2U7IGNhdG9yY2U7IHF1aW5jZTsgZGllY2lzXHUwMGU5aXM7XG4iCisgICAgICAgICAgICArICIgICAgZGllY2lzaWV0ZTsgZGllY2lvY2hvOyBkaWVjaW51ZXZlO1xuIgorICAgICAgICAgICAgLy8gd29yZHMgZm9yIHZhbHVlcyBmcm9tIDIwIHRvIDI5IChuZWNlc3NhcnkgYmVjYXVzZSB0aGUgb25lcyBkaWdpdAorICAgICAgICAgICAgLy8gb2Z0ZW4gcGlja3MgdXAgYW4gYWNjZW50IG1hcmsgaXQgZG9lc24ndCBoYXZlIHdoZW4gc3RhbmRpbmcgYWxvbmUpCisgICAgICAgICAgICArICJ2ZWludGU7IHZlaW50aXVubzsgdmVpbnRpZFx1MDBmM3M7IHZlaW50aXRyXHUwMGU5czsgdmVpbnRpY3VhdHJvO1xuIgorICAgICAgICAgICAgKyAiICAgIHZlaW50aWNpbmNvOyB2ZWludGlzXHUwMGU5aXM7IHZlaW50aXNpZXRlOyB2ZWludGlvY2hvO1xuIgorICAgICAgICAgICAgKyAiICAgIHZlaW50aW51ZXZlO1xuIgorICAgICAgICAgICAgLy8gd29yZHMgZm9yIG11bHRpcGxlcyBvZiAxMCAobm90aWNlIHRoYXQgdGhlIHRlbnMgZGlnaXQgaXMgc2VwYXJhdGVkCisgICAgICAgICAgICAvLyBmcm9tIHRoZSBvbmVzIGRpZ2l0IGJ5IHRoZSB3b3JkICJ5Ii4pCisgICAgICAgICAgICArICIzMDogdHJlaW50YVsgeSA+Pl07XG4iCisgICAgICAgICAgICArICI0MDogY3VhcmVudGFbIHkgPj5dO1xuIgorICAgICAgICAgICAgKyAiNTA6IGNpbmN1ZW50YVsgeSA+Pl07XG4iCisgICAgICAgICAgICArICI2MDogc2VzZW50YVsgeSA+Pl07XG4iCisgICAgICAgICAgICArICI3MDogc2V0ZW50YVsgeSA+Pl07XG4iCisgICAgICAgICAgICArICI4MDogb2NoZW50YVsgeSA+Pl07XG4iCisgICAgICAgICAgICArICI5MDogbm92ZW50YVsgeSA+Pl07XG4iCisgICAgICAgICAgICAvLyAxMDAgYnkgaXRzZWxmIGlzICJjaWVuLCIgYnV0IDEwMCBmb2xsb3dlZCBieSBzb21ldGhpbmcgaXMgImNpbmV0byIKKyAgICAgICAgICAgICsgIjEwMDogY2llbjtcbiIKKyAgICAgICAgICAgICsgIjEwMTogY2llbnRvID4+O1xuIgorICAgICAgICAgICAgLy8gd29yZHMgZm9yIG11bHRpcGxlcyBvZiAxMDAgKG11c3QgYmUgc3RhdGVkIGJlY2F1c2UgdGhleSdyZQorICAgICAgICAgICAgLy8gcmFyZWx5IHNpbXBsZSBjb25jYXRlbmF0aW9ucykKKyAgICAgICAgICAgICsgIjIwMDogZG9zY2llbnRvc1sgPj5dO1xuIgorICAgICAgICAgICAgKyAiMzAwOiB0cmVzY2llbnRvc1sgPj5dO1xuIgorICAgICAgICAgICAgKyAiNDAwOiBjdWF0cm9jaWVudG9zWyA+Pl07XG4iCisgICAgICAgICAgICArICI1MDA6IHF1aW5pZW50b3NbID4+XTtcbiIKKyAgICAgICAgICAgICsgIjYwMDogc2Vpc2NpZW50b3NbID4+XTtcbiIKKyAgICAgICAgICAgICsgIjcwMDogc2V0ZWNpZW50b3NbID4+XTtcbiIKKyAgICAgICAgICAgICsgIjgwMDogb2Nob2NpZW50b3NbID4+XTtcbiIKKyAgICAgICAgICAgICsgIjkwMDogbm92ZWNpZW50b3NbID4+XTtcbiIKKyAgICAgICAgICAgIC8vIGZvciAxLDAwMCwgdGhlIG11bHRpcGxpZXIgb24gIm1pbCIgaXMgb21pdHRlZDogMiwwMDAgaXMgImRvcyBtaWwsIgorICAgICAgICAgICAgLy8gYnV0IDEsMDAwIGlzIGp1c3QgIm1pbC4iCisgICAgICAgICAgICArICIxMDAwOiBtaWxbID4+XTtcbiIKKyAgICAgICAgICAgICsgIjIwMDA6IDw8IG1pbFsgPj5dO1xuIgorICAgICAgICAgICAgLy8gMSwwMDAsMDAwIGlzICJ1biBtaWxsb24sIiBub3QgInVubyBtaWxsb24iCisgICAgICAgICAgICArICIxLDAwMCwwMDA6IHVuIG1pbGxcdTAwZjNuWyA+Pl07XG4iCisgICAgICAgICAgICArICIyLDAwMCwwMDA6IDw8IG1pbGxcdTAwZjNuWyA+Pl07XG4iCisgICAgICAgICAgICAvLyBvdmVyZmxvdyBydWxlCisgICAgICAgICAgICArICIxLDAwMCwwMDAsMDAwOiA9IywjIzA9IChpbmNvbXBsZXRlIGRhdGEpOyIgfQorICAgICAgICAvLyBUaGUgU3BhbmlzaCBydWxlcyBhcmUgaW5jb21wbGV0ZS4gIEknbSBtaXNzaW5nIGluZm9ybWF0aW9uIG9uIG5lZ2F0aXZlCisgICAgICAgIC8vIG51bWJlcnMgYW5kIG51bWJlcnMgd2l0aCBmcmFjdGlvbmFsIHBhcnRzLiAgSSBhbHNvIGRvbid0IGhhdmUKKyAgICAgICAgLy8gaW5mb3JtYXRpb24gb24gbnVtYmVycyBoaWdoZXIgdGhhbiB0aGUgbWlsbGlvbnMuCisgICAgfTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL051bWJlckZvcm1hdFJ1bGVzX2ZyLmphdmEgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9OdW1iZXJGb3JtYXRSdWxlc19mci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmIwYzU5ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9OdW1iZXJGb3JtYXRSdWxlc19mci5qYXZhCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL0F0dGljL051bWJlckZvcm1hdFJ1bGVzX2ZyLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDMvMTAgMDQ6MDc6MjggJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0udGV4dC5yZXNvdXJjZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIERlZmF1bHQgUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGRhdGEgZm9yIEZyZW5jaAorICoKKyAqIEBhdXRob3IgUmljaGFyZCBHaWxsYW0KKyAqIEB2ZXJzaW9uICRWZXJzaW9uJCAkRGF0ZTogMjAwMC8wMy8xMCAwNDowNzoyOCAkCisgKi8KK3B1YmxpYyBjbGFzcyBOdW1iZXJGb3JtYXRSdWxlc19mciBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgLyoqCisgICAgICogUHV0cyBhIGNvcHlyaWdodCBpbiB0aGUgLmNsYXNzIGZpbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0Tm90aWNlCisgICAgICAgID0gIkNvcHlyaWdodCBcdTAwYTkxOTk3LTE5OTggSUJNIENvcnAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICBwdWJsaWMgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRzOworICAgIH0KKworICAgIE9iamVjdFtdW10gY29udGVudHMgPSB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBTcGVsbG91dCBydWxlcyBmb3IgRnJlbmNoLiAgRnJlbmNoIGFkZHMgc29tZSBpbnRlcmVzdGluZyBxdWlya3Mgb2YgaXRzCisgICAgICAgICAqIG93bjogMSkgVGhlIHdvcmQgImV0IiBpcyBpbnRlcnBvc2VkIGJldHdlZW4gdGhlIHRlbnMgYW5kIG9uZXMgZGlnaXRzLAorICAgICAgICAgKiBidXQgb25seSBpZiB0aGUgb25lcyBkaWdpdCBpZiAxOiAyMCBpcyAidmluZ3QsIiBhbmQgMiBpcyAidmluZ3QtZGV1eCwiCisgICAgICAgICAqIGJ1dCAyMSBpcyAidmluZ3QtZXQtdW4uIiAgMikgIFRoZXJlIGFyZSBubyB3b3JkcyBmb3IgNzAsIDgwLCBvciA5MC4KKyAgICAgICAgICogInF1YXRyZS12aW5ndHMiICgiZm91ciB0d2VudGllcyIpIGlzIHVzZWQgZm9yIDgwLCBhbmQgdmFsdWVzIHByb2NlZWQKKyAgICAgICAgICogYnkgc2NvcmUgZnJvbSA2MCB0byA5OSAoZS5nLiwgNzMgaXMgInNvaXhhbnRlLXRyZWl6ZSIgWyJzaXh0eS10aGlydGVlbiJdKS4KKyAgICAgICAgICogTnVtYmVycyBmcm9tIDEsMTAwIHRvIDEsMTk5IGFyZSByZW5kZXJlZCBhcyBodW5kcmVkcyByYXRoZXIgdGhhbgorICAgICAgICAgKiB0aG91c2FuZHM6IDEsMTAwIGlzICJvbnplIGNlbnRzIiAoImVsZXZlbiBodW5kcmVkIiksIHJhdGhlciB0aGFuCisgICAgICAgICAqICJtaWxsZSBjZW50IiAoIm9uZSB0aG91c2FuZCBvbmUgaHVuZHJlZCIpCisgICAgICAgICAqLworICAgICAgICB7ICJTcGVsbG91dFJ1bGVzIiwKKyAgICAgICAgICAgIC8vIHRoZSBtYWluIHJ1bGUgc2V0CisgICAgICAgICAgICAiJW1haW46XG4iCisgICAgICAgICAgICArICIgICAgLXg6IG1vaW5zID4+O1xuIgorICAgICAgICAgICAgKyAiICAgIHgueDogPDwgdmlyZ3VsZSA+PjtcbiIKKyAgICAgICAgICAgICAgICAgICAvLyB3b3JkcyBmb3IgbnVtYmVycyBmcm9tIDAgdG8gMTAKKyAgICAgICAgICAgICsgIiAgICB6XHUwMGU5cm87IHVuOyBkZXV4OyB0cm9pczsgcXVhdHJlOyBjaW5xOyBzaXg7IHNlcHQ7IGh1aXQ7IG5ldWY7XG4iCisgICAgICAgICAgICArICIgICAgZGl4OyBvbnplOyBkb3V6ZTsgdHJlaXplOyBxdWF0b3J6ZTsgcXVpbnplOyBzZWl6ZTtcbiIKKyAgICAgICAgICAgICsgIiAgICAgICAgZGl4LXNlcHQ7IGRpeC1odWl0OyBkaXgtbmV1ZjtcbiIKKyAgICAgICAgICAgICAgICAgICAvLyBvcmRzIGZvciB0aGUgbXVsdGlwbGVzIG9mIDEwOiAlJWFsdC1vbmVzIGluc2VydHMgImV0IgorICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gbmVlZGVkCisgICAgICAgICAgICArICIgICAgMjA6IHZpbmd0Wy0+JSVhbHQtb25lcz5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDMwOiB0cmVudGVbLT4lJWFsdC1vbmVzPl07XG4iCisgICAgICAgICAgICArICIgICAgNDA6IHF1YXJhbnRlWy0+JSVhbHQtb25lcz5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDUwOiBjaW5xdWFudGVbLT4lJWFsdC1vbmVzPl07XG4iCisgICAgICAgICAgICAgICAgICAgLy8gcnVsZSBmb3IgNjAuICBUaGUgLzIwIGNhdXNlcyB0aGlzIHJ1bGUncyBtdWx0aXBsaWVyIHRvIGJlCisgICAgICAgICAgICAgICAgICAgLy8gMjAgcmF0aGVyIHRoYW4gMTAsIGFsbG93aW5oZyB1cyB0byByZWN1cnNlIGZvciBhbGwgdmFsdWVzCisgICAgICAgICAgICAgICAgICAgLy8gZnJvbSA2MCB0byA3OS4uLgorICAgICAgICAgICAgKyAiICAgIDYwLzIwOiBzb2l4YW50ZVstPiUlYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgICAgICAgICAgICAvLyAuLi5leGNlcHQgZm9yIDcxLCB3aGljaCBtdXN0IGJlIHNwZWNpYWwtY2FzZWQKKyAgICAgICAgICAgICsgIiAgICA3MTogc29peGFudGUgZXQgb256ZTtcbiIKKyAgICAgICAgICAgICAgICAgICAvLyBhdCA3Miwgd2UgaGF2ZSB0byByZXBlYXQgdGhlIHJ1bGUgZm9yIDYwIHRvIGdldCB1cyB0byA3OQorICAgICAgICAgICAgKyAiICAgIDcyLzIwOiBzb2l4YW50ZS0+JSVhbHQtb25lcz47XG4iCisgICAgICAgICAgICAgICAgICAgLy8gYXQgODAsIHdlIHN0YXRlIGEgbmV3IHJ1bGUgd2l0aCB0aGUgcGhyYXNlIGZvciA4MC4gIFNpbmNlCisgICAgICAgICAgICAgICAgICAgLy8gaXQgY2hhbmdlcyBmb3JtIHdoZW4gdGhlcmUncyBhIG9uZXMgZGlnaXQsIHdlIG5lZWQgYSBzZWNvbmQKKyAgICAgICAgICAgICAgICAgICAvLyBydWxlIGF0IDgxLiAgVGhpcyBydWxlIGFsc28gaW5jbHVkZXMgIi8yMCwiIGFsbG93aW5nIGl0IHRvCisgICAgICAgICAgICAgICAgICAgLy8gYmUgdXNlZCBjb3JyZWN0bHkgZm9yIGFsbCB2YWx1ZXMgdXAgdG8gOTkKKyAgICAgICAgICAgICsgIiAgICA4MDogcXVhdHJlLXZpbmd0czsgODEvMjA6IHF1YXRyZS12aW5ndC0+PjtcbiIKKyAgICAgICAgICAgICAgICAgICAvLyAiY2VudCIgYmVjb21lcyBwbHVyYWwgd2hlbiBwcmVjZWRlZCBieSBhIG11bHRpcGxpZXIsIGFuZAorICAgICAgICAgICAgICAgICAgIC8vIHRoZSBtdWx0aXBsaWVyIGlzIG9taXR0ZWQgZnJvbSB0aGUgc2luZ3VsYXIgZm9ybQorICAgICAgICAgICAgKyAiICAgIDEwMDogY2VudFsgPj5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDIwMDogPDwgY2VudHNbID4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxMDAwOiBtaWxsZVsgPj5dO1xuIgorICAgICAgICAgICAgICAgICAgIC8vIHZhbHVlcyBmcm9tIDEsMTAwIHRvIDEsMTk5IGFyZSByZW5kZXJlZCBhcyAib256ZSBjZW50cy4uLiIKKyAgICAgICAgICAgICAgICAgICAvLyBpbnN0ZWFkIG9mICJtaWxsZSBjZW50Li4uIiAgVGhlID4gYWZ0ZXIgIjEwMDAiIGRlY3JlYXNlcworICAgICAgICAgICAgICAgICAgIC8vIHRoZSBydWxlJ3MgZXhwb25lbnQsIGNhdXNpbmcgaXRzIG11bHRpcGxpZXIgdG8gYmUgMTAwIGluc3RlYWQKKyAgICAgICAgICAgICAgICAgICAvLyBvZiAxLDAwMC4gIFRoaXMgcHJldmVudHMgdXMgZnJvbSBnZXR0aW5nICJvbnplIGNlbnRzIGNlbnQKKyAgICAgICAgICAgICAgICAgICAvLyB2aW5ndC1kZXV4IiAoImVsZXZlbiBodW5kcmVkIG9uZSBodW5kcmVkIHR3ZW50eS10d28iKS4KKyAgICAgICAgICAgICsgIiAgICAxMTAwPjogb256ZSBjZW50c1sgPj5dO1xuIgorICAgICAgICAgICAgICAgICAgIC8vIGF0IDEsMjAwLCB3ZSBnbyBiYWNrIHRvIGZvcm1hdGluZyBpbiB0aG91c2FuZHMsIHNvIHdlCisgICAgICAgICAgICAgICAgICAgLy8gcmVwZWF0IHRoZSBydWxlIGZvciAxLDAwMAorICAgICAgICAgICAgKyAiICAgIDEyMDA6IG1pbGxlID4+O1xuIgorICAgICAgICAgICAgICAgICAgIC8vIGF0IDIsMDAwLCB0aGUgbXVsdGlwbGllciBpcyBhZGRlZAorICAgICAgICAgICAgKyAiICAgIDIwMDA6IDw8IG1pbGxlWyA+Pl07XG4iCisgICAgICAgICAgICArICIgICAgMSwwMDAsMDAwOiA8PCBtaWxsaW9uWyA+Pl07XG4iCisgICAgICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMDogPDwgbWlsbGlhcmRlWyA+Pl07XG4iCisgICAgICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IDw8IGJpbGxpb25bID4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMCwwMDA6ID0jLCMjMD07XG4iCisgICAgICAgICAgICAvLyAlJWFsdC1vbmVzIGlzIHVzZWQgdG8gaW5zZXJ0ICJldCIgd2hlbiB0aGUgb25lcyBkaWdpdCBpcyAxCisgICAgICAgICAgICArICIlJWFsdC1vbmVzOlxuIgorICAgICAgICAgICAgKyAiICAgIDsgZXQtdW47ID0lbWFpbj07IiB9CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL051bWJlckZvcm1hdFJ1bGVzX2ZyX0NILmphdmEgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9OdW1iZXJGb3JtYXRSdWxlc19mcl9DSC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjYwN2Q3NzYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9OdW1iZXJGb3JtYXRSdWxlc19mcl9DSC5qYXZhCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL0F0dGljL051bWJlckZvcm1hdFJ1bGVzX2ZyX0NILmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDMvMTAgMDQ6MDc6MjggJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0udGV4dC5yZXNvdXJjZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBkYXRhIGZvciBTd2lzcyBGcmVuY2guCisgKgorICogQGF1dGhvciBSaWNoYXJkIEdpbGxhbQorICogQHZlcnNpb24gJFZlcnNpb24kICREYXRlOiAyMDAwLzAzLzEwIDA0OjA3OjI4ICQKKyAqLworcHVibGljIGNsYXNzIE51bWJlckZvcm1hdFJ1bGVzX2ZyX0NIIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBQdXRzIGEgY29weXJpZ2h0IGluIHRoZSAuY2xhc3MgZmlsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHROb3RpY2UKKyAgICAgICAgPSAiQ29weXJpZ2h0IFx1MDBhOTE5OTctMTk5OCBJQk0gQ29ycC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKyAgICBwdWJsaWMgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRzOworICAgIH0KKworICAgIE9iamVjdFtdW10gY29udGVudHMgPSB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBTcGVsbG91dCBydWxlcyBmb3IgU3dpc3MgRnJlbmNoLiAgU3dpc3MgRnJlbmNoIGRpZmZlcnMgZnJvbSBGcmVuY2ggRnJlbmNoCisgICAgICAgICAqIGluIHRoYXQgaXQgZG9lcyBoYXZlIHdvcmRzIGZvciA3MCwgODAsIGFuZCA5MC4gIFRoaXMgcnVsZSBzZXQgc2hvd3MgdGhlbSwKKyAgICAgICAgICogYW5kIGlzIHNpbXBsZXIgYXMgYSByZXN1bHQuCisgICAgICAgICAqLworICAgICAgICB7ICJTcGVsbG91dFJ1bGVzIiwKKyAgICAgICAgICAgICIlbWFpbjpcbiIKKyAgICAgICAgICAgICsgIiAgICAteDogbW9pbnMgPj47XG4iCisgICAgICAgICAgICArICIgICAgeC54OiA8PCB2aXJndWxlID4+O1xuIgorICAgICAgICAgICAgKyAiICAgIHpcdTAwZTlybzsgdW47IGRldXg7IHRyb2lzOyBxdWF0cmU7IGNpbnE7IHNpeDsgc2VwdDsgaHVpdDsgbmV1ZjtcbiIKKyAgICAgICAgICAgICsgIiAgICBkaXg7IG9uemU7IGRvdXplOyB0cmVpemU7IHF1YXRvcnplOyBxdWluemU7IHNlaXplO1xuIgorICAgICAgICAgICAgKyAiICAgICAgICBkaXgtc2VwdDsgZGl4LWh1aXQ7IGRpeC1uZXVmO1xuIgorICAgICAgICAgICAgKyAiICAgIDIwOiB2aW5ndFstPiUlYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAzMDogdHJlbnRlWy0+JSVhbHQtb25lcz5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDQwOiBxdWFyYW50ZVstPiUlYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICA1MDogY2lucXVhbnRlWy0+JSVhbHQtb25lcz5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDYwOiBzb2l4YW50ZVstPiUlYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgICAgICAgICAgICAvLyBub3RpY2UgbmV3IHdvcmRzIGZvciA3MCwgODAsIGFuZCA5MAorICAgICAgICAgICAgKyAiICAgIDcwOiBzZXB0YW50ZVstPiUlYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICA4MDogb2N0YW50ZVstPiUlYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICA5MDogbm9uYW50ZVstPiUlYWx0LW9uZXM+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxMDA6IGNlbnRbID4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAyMDA6IDw8IGNlbnRzWyA+Pl07XG4iCisgICAgICAgICAgICArICIgICAgMTAwMDogbWlsbGVbID4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxMTAwPjogb256ZSBjZW50c1sgPj5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDEyMDA6IG1pbGxlID4+O1xuIgorICAgICAgICAgICAgKyAiICAgIDIwMDA6IDw8IG1pbGxlWyA+Pl07XG4iCisgICAgICAgICAgICArICIgICAgMSwwMDAsMDAwOiA8PCBtaWxsaW9uWyA+Pl07XG4iCisgICAgICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMDogPDwgbWlsbGlhcmRlWyA+Pl07XG4iCisgICAgICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IDw8IGJpbGxpb25bID4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxLDAwMCwwMDAsMDAwLDAwMCwwMDA6ID0jLCMjMD07XG4iCisgICAgICAgICAgICArICIlJWFsdC1vbmVzOlxuIgorICAgICAgICAgICAgKyAiICAgIDsgZXQtdW47ID0lbWFpbj07IiB9CisgICAgICAgIC8vIGFnYWluLCBJJ20gbWlzc2luZyBpbmZvcm1hdGlvbiBvbiBuZWdhdGl2ZSBudW1iZXJzIGFuZCBkZWNpbWFscyBmb3IKKyAgICAgICAgLy8gdGhlc2UgdG8gcnVsZSBzZXRzLiAgQWxzbywgSSdtIG5vdCAxMDAlIHN1cmUgYWJvdXQgU3dpc3MgRnJlbmNoLiAgSXMKKyAgICAgICAgLy8gdGhpcyBjb3JyZWN0PyAgSXMgIm9uemUgY2VudHMiIGNvbW1vbmx5IHVzZWQgZm9yIDEsMTAwIGluIGJvdGggRnJhbmNlCisgICAgICAgIC8vIGFuZCBTd2l0emVybGFuZD8gIENhbiBzb21lb25lIGZpbGwgbWUgaW4gb24gdGhlIHJ1bGVzIGZvciB0aGUgb3RoZXIKKyAgICAgICAgLy8gRnJlbmNoLXNwZWFraW5nIGNvdW50cmllcz8gIEkndmUgaGVhcmQgY29uZmxpY3Rpbmcgb3BpbmlvbnMgb24gd2hpY2gKKyAgICAgICAgLy8gdmVyc2lvbiBpcyB1c2VkIGluIENhbmFkYSwgYW5kIEkgdW5kZXJzdGFuZCB0aGVyZSdzIGFuIGFsdGVybmF0ZSBzZXQKKyAgICAgICAgLy8gb2Ygd29yZHMgZm9yIDcwLCA4MCwgYW5kIDkwIHRoYXQgaXMgdXNlZCBzb21ld2hlcmUsIGJ1dCBJIGRvbid0IGtub3cKKyAgICAgICAgLy8gd2hhdCB0aG9zZSB3b3JkcyBhcmUgb3Igd2hlcmUgdGhleSdyZSB1c2VkLgorICAgIH07Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9OdW1iZXJGb3JtYXRSdWxlc19pdC5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvTnVtYmVyRm9ybWF0UnVsZXNfaXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kNzRkNWVmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvTnVtYmVyRm9ybWF0UnVsZXNfaXQuamF2YQpAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvQXR0aWMvTnVtYmVyRm9ybWF0UnVsZXNfaXQuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwNDowNzoyOCAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS50ZXh0LnJlc291cmNlczsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8qKgorICogUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGRhdGEgZm9yIEl0YWxpYW4KKyAqCisgKiBAYXV0aG9yIFJpY2hhcmQgR2lsbGFtCisgKiBAdmVyc2lvbiAkVmVyc2lvbiQgJERhdGU6IDIwMDAvMDMvMTAgMDQ6MDc6MjggJAorICovCitwdWJsaWMgY2xhc3MgTnVtYmVyRm9ybWF0UnVsZXNfaXQgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIC8qKgorICAgICAqIFB1dHMgYSBjb3B5cmlnaHQgaW4gdGhlIC5jbGFzcyBmaWxlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodE5vdGljZQorICAgICAgICA9ICJDb3B5cmlnaHQgXHUwMGE5MTk5Ny0xOTk4IElCTSBDb3JwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4iOworCisgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBjb250ZW50czsKKyAgICB9CisKKyAgICBPYmplY3RbXVtdIGNvbnRlbnRzID0geworICAgICAgICAvKioKKyAgICAgICAgICogU3BlbGxvdXQgcnVsZXMgZm9yIEl0YWxpYW4uICBMaWtlIEdlcm1hbiwgbW9zdCBJdGFsaWFuIG51bWJlcnMgYXJlCisgICAgICAgICAqIHdyaXR0ZW4gYXMgc2luZ2xlIHdvcmRzLiAgV2hhdCBtYWtlcyB0aGVzZSBydWxlcyBjb21wbGljYXRlZCBpcyB0aGUgcnVsZQorICAgICAgICAgKiB0aGF0IHNheXMgdGhhdCB3aGVuIGEgd29yZCBlbmRpbmcgaW4gYSB2b3dlbCBhbmQgYSB3b3JkIGJlZ2lubmluZyB3aXRoCisgICAgICAgICAqIGEgdm93ZWwgYXJlIGNvbWJpbmVkIGludG8gYSBjb21wb3VuZCwgdGhlIHZvd2VsIGlzIGRyb3BwZWQgZnJvbSB0aGUKKyAgICAgICAgICogZW5kIG9mIHRoZSBmaXJzdCB3b3JkOiAxODAgaXMgImNlbnRvdHRhbnRhLCIgbm90ICJjZW50b290dGFudGEuIgorICAgICAgICAgKiBUaGUgY29tcGxleGl0eSBvZiB0aGlzIHJ1bGUgc2V0IGlzIHRvIHByb2R1Y2UgdGhpcyBiZWhhdmlvci4KKyAgICAgICAgICovCisgICAgICAgIHsgIlNwZWxsb3V0UnVsZXMiLAorICAgICAgICAgICAgLy8gbWFpbiBydWxlIHNldC4gIEZvbGxvd3MgdGhlIHBhdHRlcm5zIG9mIHRoZSBwcmVjZWRpbmcgcnVsZSBzZXRzLAorICAgICAgICAgICAgLy8gZXhjZXB0IHRoYXQgdGhlIGZpbmFsIHZvd2VsIGlzIG9taXR0ZWQgZnJvbSB3b3JkcyBlbmRpbmcgaW4KKyAgICAgICAgICAgIC8vIHZvd2VscyB3aGVuIHRoZXkgYXJlIGZvbGxvd2VkIGJ5IGFub3RoZXIgd29yZDsgaW5zdGVhZCwgd2UgaGF2ZQorICAgICAgICAgICAgLy8gc2VwYXJhdGUgcnVsZSBzZXRzIHRoYXQgYXJlIGlkZW50aWNhbCB0byB0aGlzIG9uZSwgZXhjZXB0IHRoYXQKKyAgICAgICAgICAgIC8vIGFsbCB0aGUgd29yZHMgdGhhdCBkb24ndCBiZWdpbiB3aXRoIGEgdm93ZWwgaGF2ZSBhIHZvd2VsIHRhY2tlZAorICAgICAgICAgICAgLy8gb250byB0aGVtIGF0IHRoZSBmcm9udC4gIEEgd29yZCBlbmRpbmcgaW4gYSB2b3dlbCBjYWxscyBhCisgICAgICAgICAgICAvLyBzdWJzdGl0dXRpb24gdGhhdCB3aWxsIHN1cHBseSB0aGF0IHZvd2VsLCB1bmxlc3MgdGhhdCB2b3dlbCBpcyB0bworICAgICAgICAgICAgLy8gYmUgZWxpZGVkLgorICAgICAgICAgICAgIiVtYWluOlxuIgorICAgICAgICAgICAgKyAiICAgIC14OiBtZW5vID4+O1xuIgorICAgICAgICAgICAgKyAiICAgIHgueDogPDwgdmlyZ29sYSA+PjtcbiIKKyAgICAgICAgICAgICsgIiAgICB6ZXJvOyB1bm87IGR1ZTsgdHJlOyBxdWF0dHJvOyBjaW5xdWU7IHNlaTsgc2V0dGU7IG90dG87XG4iCisgICAgICAgICAgICArICIgICAgICAgIG5vdmU7XG4iCisgICAgICAgICAgICArICIgICAgZGllY2k7IHVuZGljaTsgZG9kaWNpOyB0cmVkaWNpOyBxdWF0dG9yZGljaTsgcXVpbmRpY2k7IHNlZGljaTtcbiIKKyAgICAgICAgICAgICsgIiAgICAgICAgZGljaWFzZXR0ZTsgZGljaW90dG87IGRpY2lhbm5vdmU7XG4iCisgICAgICAgICAgICArICIgICAgMjA6IHZlbnRpOyB2ZW50PiUld2l0aC1pPjtcbiIKKyAgICAgICAgICAgICsgIiAgICAzMDogdHJlbnRhOyB0cmVudD4lJXdpdGgtaT47XG4iCisgICAgICAgICAgICArICIgICAgNDA6IHF1YXJhbnRhOyBxdWFyYW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgICAgICsgIiAgICA1MDogY2lucXVhbnRhOyBjaW5xdWFudD4lJXdpdGgtYT47XG4iCisgICAgICAgICAgICArICIgICAgNjA6IHNlc3NhbnRhOyBzZXNzYW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgICAgICsgIiAgICA3MDogc2V0dGFudGE7IHNldHRhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICAgICAgKyAiICAgIDgwOiBvdHRhbnRhOyBvdHRhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICAgICAgKyAiICAgIDkwOiBub3ZhbnRhOyBub3ZhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICAgICAgKyAiICAgIDEwMDogY2VudG87IGNlbnRbPiUld2l0aC1vPl07XG4iCisgICAgICAgICAgICArICIgICAgMjAwOiA8PGNlbnRvOyA8PGNlbnRbPiUld2l0aC1vPl07XG4iCisgICAgICAgICAgICArICIgICAgMTAwMDogbWlsbGU7IG1pbGxbPiUld2l0aC1pPl07XG4iCisgICAgICAgICAgICArICIgICAgMjAwMDogPDxtaWxhOyA8PG1pbFs+JSV3aXRoLWE+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxMDAsMDAwPj46IDw8bWlsYVsgPj5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDEsMDAwLDAwMDogPSMsIyMwPSAoaW5jb21wbGV0ZSBkYXRhKTtcbiIKKyAgICAgICAgICAgICsgIiUld2l0aC1hOlxuIgorICAgICAgICAgICAgKyAiICAgIGF6ZXJvOyB1bm87IGFkdWU7IGF0cmU7IGFxdWF0dHJvOyBhY2lucXVlOyBhc2VpOyBhc2V0dGU7IG90dG87XG4iCisgICAgICAgICAgICArICIgICAgICAgIGFub3ZlO1xuIgorICAgICAgICAgICAgKyAiICAgIGFkaWVjaTsgdW5kaWNpOyBhZG9kaWNpOyBhdHJlZGljaTsgYXF1YXR0b3JkaWNpOyBhcXVpbmRpY2k7IGFzZWRpY2k7XG4iCisgICAgICAgICAgICArICIgICAgICAgIGFkaWNpYXNldHRlOyBhZGljaW90dG87IGFkaWNpYW5ub3ZlO1xuIgorICAgICAgICAgICAgKyAiICAgIDIwOiBhdmVudGk7IGF2ZW50PiUld2l0aC1pPjtcbiIKKyAgICAgICAgICAgICsgIiAgICAzMDogYXRyZW50YTsgYXRyZW50PiUld2l0aC1pPjtcbiIKKyAgICAgICAgICAgICsgIiAgICA0MDogYXF1YXJhbnRhOyBhcXVhcmFudD4lJXdpdGgtYT47XG4iCisgICAgICAgICAgICArICIgICAgNTA6IGFjaW5xdWFudGE7IGFjaW5xdWFudD4lJXdpdGgtYT47XG4iCisgICAgICAgICAgICArICIgICAgNjA6IGFzZXNzYW50YTsgYXNlc3NhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICAgICAgKyAiICAgIDcwOiBhc2V0dGFudGE7IGFzZXR0YW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgICAgICsgIiAgICA4MDogb3R0YW50YTsgb3R0YW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgICAgICsgIiAgICA5MDogYW5vdmFudGE7IGFub3ZhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICAgICAgKyAiICAgIDEwMDogYWNlbnRvOyBhY2VudFs+JSV3aXRoLW8+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAyMDA6IDwlJXdpdGgtYTxjZW50bzsgPCUld2l0aC1hPGNlbnRbPiUld2l0aC1vPl07XG4iCisgICAgICAgICAgICArICIgICAgMTAwMDogYW1pbGxlOyBhbWlsbFs+JSV3aXRoLWk+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAyMDAwOiA8JSV3aXRoLWE8bWlsYTsgPCUld2l0aC1hPG1pbFs+JSV3aXRoLWE+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxMDAsMDAwOiA9JW1haW49O1xuIgorICAgICAgICAgICAgKyAiJSV3aXRoLWk6XG4iCisgICAgICAgICAgICArICIgICAgaXplcm87IHVubzsgaWR1ZTsgaXRyZTsgaXF1YXR0cm87IGljaW5xdWU7IGlzZWk7IGlzZXR0ZTsgb3R0bztcbiIKKyAgICAgICAgICAgICsgIiAgICAgICAgaW5vdmU7XG4iCisgICAgICAgICAgICArICIgICAgaWRpZWNpOyB1bmRpY2k7IGlkb2RpY2k7IGl0cmVkaWNpOyBpcXVhdHRvcmRpY2k7IGlxdWluZGljaTsgaXNlZGljaTtcbiIKKyAgICAgICAgICAgICsgIiAgICAgICAgaWRpY2lhc2V0dGU7IGlkaWNpb3R0bzsgaWRpY2lhbm5vdmU7XG4iCisgICAgICAgICAgICArICIgICAgMjA6IGl2ZW50aTsgaXZlbnQ+JSV3aXRoLWk+O1xuIgorICAgICAgICAgICAgKyAiICAgIDMwOiBpdHJlbnRhOyBpdHJlbnQ+JSV3aXRoLWk+O1xuIgorICAgICAgICAgICAgKyAiICAgIDQwOiBpcXVhcmFudGE7IGlxdWFyYW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgICAgICsgIiAgICA1MDogaWNpbnF1YW50YTsgaWNpbnF1YW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgICAgICsgIiAgICA2MDogaXNlc3NhbnRhOyBpc2Vzc2FudD4lJXdpdGgtYT47XG4iCisgICAgICAgICAgICArICIgICAgNzA6IGlzZXR0YW50YTsgaXNldHRhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICAgICAgKyAiICAgIDgwOiBvdHRhbnRhOyBvdHRhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICAgICAgKyAiICAgIDkwOiBpbm92YW50YTsgaW5vdmFudD4lJXdpdGgtYT47XG4iCisgICAgICAgICAgICArICIgICAgMTAwOiBpY2VudG87IGljZW50Wz4lJXdpdGgtbz5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDIwMDogPCUld2l0aC1pPGNlbnRvOyA8JSV3aXRoLWk8Y2VudFs+JSV3aXRoLW8+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxMDAwOiBpbWlsbGU7IGltaWxsWz4lJXdpdGgtaT5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDIwMDA6IDwlJXdpdGgtaTxtaWxhOyA8JSV3aXRoLWk8bWlsWz4lJXdpdGgtYT5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDEwMCwwMDA6ID0lbWFpbj07XG4iCisgICAgICAgICAgICArICIlJXdpdGgtbzpcbiIKKyAgICAgICAgICAgICsgIiAgICBvemVybzsgdW5vOyBvZHVlOyBvdHJlOyBvcXVhdHRybzsgb2NpbnF1ZTsgb3NlaTsgb3NldHRlOyBvdHRvO1xuIgorICAgICAgICAgICAgKyAiICAgICAgICBvbm92ZTtcbiIKKyAgICAgICAgICAgICsgIiAgICBvZGllY2k7IHVuZGljaTsgb2RvZGljaTsgb3RyZWRpY2k7IG9xdWF0dG9yZGljaTsgb3F1aW5kaWNpOyBvc2VkaWNpO1xuIgorICAgICAgICAgICAgKyAiICAgICAgICBvZGljaWFzZXR0ZTsgb2RpY2lvdHRvOyBvZGljaWFubm92ZTtcbiIKKyAgICAgICAgICAgICsgIiAgICAyMDogb3ZlbnRpOyBvdmVudD4lJXdpdGgtaT47XG4iCisgICAgICAgICAgICArICIgICAgMzA6IG90cmVudGE7IG90cmVudD4lJXdpdGgtaT47XG4iCisgICAgICAgICAgICArICIgICAgNDA6IG9xdWFyYW50YTsgb3F1YXJhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICAgICAgKyAiICAgIDUwOiBvY2lucXVhbnRhOyBvY2lucXVhbnQ+JSV3aXRoLWE+O1xuIgorICAgICAgICAgICAgKyAiICAgIDYwOiBvc2Vzc2FudGE7IG9zZXNzYW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgICAgICsgIiAgICA3MDogb3NldHRhbnRhOyBvc2V0dGFudD4lJXdpdGgtYT47XG4iCisgICAgICAgICAgICArICIgICAgODA6IG90dGFudGE7IG90dGFudD4lJXdpdGgtYT47XG4iCisgICAgICAgICAgICArICIgICAgOTA6IG9ub3ZhbnRhOyBvbm92YW50PiUld2l0aC1hPjtcbiIKKyAgICAgICAgICAgICsgIiAgICAxMDA6IG9jZW50bzsgb2NlbnRbPiUld2l0aC1vPl07XG4iCisgICAgICAgICAgICArICIgICAgMjAwOiA8JSV3aXRoLW88Y2VudG87IDwlJXdpdGgtbzxjZW50Wz4lJXdpdGgtbz5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDEwMDA6IG9taWxsZTsgb21pbGxbPiUld2l0aC1pPl07XG4iCisgICAgICAgICAgICArICIgICAgMjAwMDogPCUld2l0aC1vPG1pbGE7IDwlJXdpdGgtbzxtaWxbPiUld2l0aC1hPl07XG4iCisgICAgICAgICAgICArICIgICAgMTAwLDAwMDogPSVtYWluPTtcbiIgfQorICAgICAgICAvLyBDYW4gc29tZW9uZSBjb25maXJtIHRoYXQgSSBkaWQgdGhlIHZvd2VsLWVsaWRpbmcgdGhpbmcgcmlnaHQ/ICBJJ20KKyAgICAgICAgLy8gbm90IDEwMCUgc3VyZSBJJ20gZG9pbmcgaXQgaW4gYWxsIHRoZSByaWdodCBwbGFjZXMsIG9yIGNvbXBsZXRlbHkKKyAgICAgICAgLy8gY29ycmVjdGx5LiAgQWxzbywgSSBkb24ndCBoYXZlIGluZm9ybWF0aW9uIGZvciBuZWdhdGl2ZXMgYW5kIGRlY2ltYWxzLAorICAgICAgICAvLyBhbmQgSSBsYWNrIHdvcmRzIGZyb3IgdmFsdWVzIGZyb20gMSwwMDAsMDAwIG9uIHVwLgorICAgIH07Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9OdW1iZXJGb3JtYXRSdWxlc19pdy5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvTnVtYmVyRm9ybWF0UnVsZXNfaXcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hYzM5MzczCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvTnVtYmVyRm9ybWF0UnVsZXNfaXcuamF2YQpAQCAtMCwwICsxLDY1IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9BdHRpYy9OdW1iZXJGb3JtYXRSdWxlc19pdy5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDA0OjA3OjI4ICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLnRleHQucmVzb3VyY2VzOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLyoqCisgKiBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZGF0YSBmb3IgSGVicmV3CisgKgorICogQGF1dGhvciBSaWNoYXJkIEdpbGxhbQorICogQHZlcnNpb24gJFZlcnNpb24kICREYXRlOiAyMDAwLzAzLzEwIDA0OjA3OjI4ICQKKyAqLworcHVibGljIGNsYXNzIE51bWJlckZvcm1hdFJ1bGVzX2l3IGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBQdXRzIGEgY29weXJpZ2h0IGluIHRoZSAuY2xhc3MgZmlsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHROb3RpY2UKKyAgICAgICAgPSAiQ29weXJpZ2h0IFx1MDBhOTE5OTctMTk5OCBJQk0gQ29ycC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gY29udGVudHM7CisgICAgfQorCisgICAgT2JqZWN0W11bXSBjb250ZW50cyA9IHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIFNwZWxsb3V0IHJ1bGVzIGZvciBIZWJyZXcuICBIZWJyZXcgYWN0dWFsbHkgaGFzIGluZmxlY3RlZCBmb3JtcyBmb3IKKyAgICAgICAgICogbW9zdCBvZiB0aGUgbG93ZXItb3JkZXIgbnVtYmVycy4gIFRoZSBtYXNjdWxpbmUgZm9ybXMgYXJlIHNob3duCisgICAgICAgICAqIGhlcmUuCisgICAgICAgICAqLworICAgICAgICB7ICJTcGVsbG91dFJ1bGVzIiwKKyAgICAgICAgICAgICJ6ZXJvIChpbmNvbXBsZXRlIGRhdGEpOyBcdTA1ZDBcdTA1ZDRcdTA1ZDM7IFx1MDVlOVx1MDVkMlx1MDVkOVx1MDVkOVx1MDVkZDsgXHUwNWU5XHUwNWRjXHUwNWQ1XHUwNWU5XHUwNWQ0O1xuIgorICAgICAgICAgICAgKyAiNDogXHUwNWQwXHUwNWQzXHUwNWQxXHUwNWU2XHUwNWQ0OyBcdTA1ZDdcdTA1ZDJcdTA1ZDVcdTA1ZDlcdTA1ZTlcdTA1ZDQ7IFx1MDVlOVx1MDVlOVx1MDVkNDtcbiIKKyAgICAgICAgICAgICsgIjc6IFx1MDVlOVx1MDVkMVx1MDVlNlx1MDVkNDsgXHUwNWU5XHUwNWRlXHUwNWQ1XHUwNWQyXHUwNWQ0OyBcdTA1ZWFcdTA1ZTlcdTA1ZTZcdTA1ZDQ7XG4iCisgICAgICAgICAgICArICIxMDogXHUwNWU2XHUwNWU5XHUwNWQzXHUwNWQ0WyA+Pl07XG4iCisgICAgICAgICAgICArICIyMDogXHUwNWU2XHUwNWU5XHUwNWQzXHUwNWQ5XHUwNWRkWyA+Pl07XG4iCisgICAgICAgICAgICArICIzMDogXHUwNWU5XHUwNWRjXHUwNWQ1XHUwNWU5XHUwNWQ5XHUwNWRkWyA+Pl07XG4iCisgICAgICAgICAgICArICI0MDogXHUwNWQwXHUwNWQzXHUwNWQxXHUwNWU2XHUwNWQ5XHUwNWRkWyA+Pl07XG4iCisgICAgICAgICAgICArICI1MDogXHUwNWQ3XHUwNWRlXHUwNWQ5XHUwNWU5XHUwNWQ5XHUwNWRkWyA+Pl07XG4iCisgICAgICAgICAgICArICI2MDogXHUwNWU5XHUwNWU5XHUwNWQ5XHUwNWRkWyA+Pl07XG4iCisgICAgICAgICAgICArICI3MDogXHUwNWU5XHUwNWQxXHUwNWU2XHUwNWQ5XHUwNWRkWyA+Pl07XG4iCisgICAgICAgICAgICArICI4MDogXHUwNWU5XHUwNWRlXHUwNWQ1XHUwNWQyXHUwNWQ5XHUwNWRkWyA+Pl07XG4iCisgICAgICAgICAgICArICI5MDogXHUwNWVhXHUwNWU5XHUwNWU2XHUwNWQ5XHUwNWRkWyA+Pl07XG4iCisgICAgICAgICAgICArICIxMDA6IFx1MDVkZVx1MDVkMFx1MDVkNFsgPj5dO1xuIgorICAgICAgICAgICAgKyAiMjAwOiA8PCBcdTA1ZGVcdTA1ZDBcdTA1ZDRbID4+XTtcbiIKKyAgICAgICAgICAgICsgIjEwMDA6IFx1MDVkMFx1MDVkY1x1MDVlM1sgPj5dO1xuIgorICAgICAgICAgICAgKyAiMjAwMDogPDwgXHUwNWQwXHUwNWRjXHUwNWUzWyA+Pl07XG4iCisgICAgICAgICAgICArICIxLDAwMCwwMDA6ID0jLCMjMD0gKGluY29tcGxldGUgZGF0YSk7IiB9CisgICAgICAgIC8vIFRoaXMgZGF0YSBpcyB3b2VmdWxseSBpbmNvbXBsZXRlLiAgQ2FuIHNvbWVvbmUgZmlsbCBtZSBpbiBvbiB0aGUKKyAgICAgICAgLy8gdmFyaW91cyBpbmZsZWN0ZWQgZm9ybXMgb2YgdGhlIG51bWJlcnMsIHdoaWNoIHNlZW0gdG8gYmUgbmVjZXNzYXJ5CisgICAgICAgIC8vIHRvIGRvIEhlYnJldyBjb3JyZWN0bHk/ICBDYW4gc29tb25lIHN1cHBseSBtZSB3aXRoIGRhdGEgZm9yIHZhbHVlcworICAgICAgICAvLyBmcm9tIDEsMDAwLDAwMCBvbiB1cD8gIFdoYXQgYWJvdXQgdGhlIHdvcmQgZm9yIHplcm8/ICBXaGF0IGFib3V0CisgICAgICAgIC8vIGluZm9ybWF0aW9uIG9uIG5lZ2F0aXZlcyBhbmQgZGVjaW1hbHM/CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL051bWJlckZvcm1hdFJ1bGVzX2phLmphdmEgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9OdW1iZXJGb3JtYXRSdWxlc19qYS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNkMTczNjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9OdW1iZXJGb3JtYXRSdWxlc19qYS5qYXZhCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL0F0dGljL051bWJlckZvcm1hdFJ1bGVzX2phLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDMvMTAgMDQ6MDc6MjggJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0udGV4dC5yZXNvdXJjZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBkYXRhIGZvciBKYXBhbmVzZQorICoKKyAqIEBhdXRob3IgUmljaGFyZCBHaWxsYW0KKyAqIEB2ZXJzaW9uICRWZXJzaW9uJCAkRGF0ZTogMjAwMC8wMy8xMCAwNDowNzoyOCAkCisgKi8KK3B1YmxpYyBjbGFzcyBOdW1iZXJGb3JtYXRSdWxlc19qYSBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgLyoqCisgICAgICogUHV0cyBhIGNvcHlyaWdodCBpbiB0aGUgLmNsYXNzIGZpbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0Tm90aWNlCisgICAgICAgID0gIkNvcHlyaWdodCBcdTAwYTkxOTk3LTE5OTggSUJNIENvcnAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICBwdWJsaWMgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRzOworICAgIH0KKworICAgIE9iamVjdFtdW10gY29udGVudHMgPSB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBTcGVsbG91dCBydWxlcyBmb3IgSmFwYW5lc2UuICBJbiBKYXBhbmVzZSwgdGhlcmUgcmVhbGx5IGlzbid0IGFueQorICAgICAgICAgKiBkaXN0aW5jdGlvbiBiZXR3ZWVuIGEgbnVtYmVyIHdyaXR0ZW4gb3V0IGluIGRpZ2l0cyBhbmQgYSBudW1iZXIKKyAgICAgICAgICogd3JpdHRlbiBvdXQgaW4gd29yZHM6IHRoZSBpZGVvZ3JhcGhpYyBjaGFyYWN0ZXJzIGFyZSBib3RoIGRpZ2l0cworICAgICAgICAgKiBhbmQgd29yZHMuICBUaGlzIHJ1bGUgc2V0IHByb3ZpZGVzIHR3byB2YXJpYW50czogICV0cmFkaXRpb25hbAorICAgICAgICAgKiB1c2VzIHRoZSB0cmFkaXRpb25hbCBDSksgbnVtZXJhbHMgKHdoaWNoIGFyZSBhbHNvIHVzZWQgaW4gQ2hpbmEKKyAgICAgICAgICogYW5kIEtvcmVhKS4gICVmaW5hbmNpYWwgdXNlcyBhbHRlcm5hdGUgaWRlb2dyYXBocyBmb3IgbWFueSBudW1iZXJzCisgICAgICAgICAqIHRoYXQgYXJlIGhhcmRlciB0byBhbHRlciB0aGFuIHRoZSB0cmFkaXRpb25hbCBudW1lcmFscyAob25lIGNvdWxkCisgICAgICAgICAqIGZhaXJseSBlYXNpbHkgY2hhbmdlIGEgb25lIHRvCisgICAgICAgICAqIGEgdGhyZWUganVzdCBieSBhZGRpbmcgdHdvIHN0cm9rZXMsIGZvciBleGFtcGxlKS4gIFRoaXMgaXMgYWxzbyBkb25lIGluCisgICAgICAgICAqIHRoZSBvdGhlciBjb3VudHJpZXMgdXNpbmcgQ2hpbmVzZSBpZG9ncmFwaHMsIGJ1dCBkaWZmZXJlbnQgaWRlb2dyYXBocworICAgICAgICAgKiBhcmUgdXNlZCBpbiB0aG9zZSBwbGFjZXMuCisgICAgICAgICAqLworICAgICAgICB7ICJTcGVsbG91dFJ1bGVzIiwKKyAgICAgICAgICAgICIlZmluYW5jaWFsOlxuIgorICAgICAgICAgICAgKyAiICAgIFx1OTZmNjsgXHU1OGYxOyBcdTVmMTA7IFx1NTNjMjsgXHU1NmRiOyBcdTRmMGQ7IFx1NTE2ZDsgXHU0ZTAzOyBcdTUxNmI7IFx1NGU1ZDtcbiIKKyAgICAgICAgICAgICsgIiAgICBcdTYyZmVbPj5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDIwOiA8PFx1NjJmZVs+Pl07XG4iCisgICAgICAgICAgICArICIgICAgMTAwOiA8PFx1NzY3ZVs+Pl07XG4iCisgICAgICAgICAgICArICIgICAgMTAwMDogPDxcdTUzNDNbPj5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDEwLDAwMDogPDxcdTRlMDdbPj5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDEwMCwwMDAsMDAwOiA8PFx1NTEwNFs+Pl07XG4iCisgICAgICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IDw8XHU1MTQ2Wz4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxMCwwMDAsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9O1xuIgorICAgICAgICAgICAgKyAiJXRyYWRpdGlvbmFsOlxuIgorICAgICAgICAgICAgKyAiICAgIFx1OTZmNjsgXHU0ZTAwOyBcdTRlOGM7IFx1NGUwOTsgXHU1NmRiOyBcdTRlOTQ7IFx1NTE2ZDsgXHU0ZTAzOyBcdTUxNmI7IFx1NGU1ZDtcbiIKKyAgICAgICAgICAgICsgIiAgICBcdTUzNDFbPj5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDIwOiA8PFx1NTM0MVs+Pl07XG4iCisgICAgICAgICAgICArICIgICAgMTAwOiA8PFx1NzY3ZVs+Pl07XG4iCisgICAgICAgICAgICArICIgICAgMTAwMDogPDxcdTUzNDNbPj5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDEwLDAwMDogPDxcdTRlMDdbPj5dO1xuIgorICAgICAgICAgICAgKyAiICAgIDEwMCwwMDAsMDAwOiA8PFx1NTEwNFs+Pl07XG4iCisgICAgICAgICAgICArICIgICAgMSwwMDAsMDAwLDAwMCwwMDA6IDw8XHU1MTQ2Wz4+XTtcbiIKKyAgICAgICAgICAgICsgIiAgICAxMCwwMDAsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9OyIgfQorICAgICAgICAvLyBDYW4gc29tZW9uZSBzdXBwbHkgbWUgd2l0aCB0aGUgcmlnaHQgZnJhdWQtcHJvb2YgaWRlb2dyYXBocyBmb3IKKyAgICAgICAgLy8gU2ltcGxpZmllZCBhbmQgVHJhZGl0aW9uYWwgQ2hpbmVzZSwgYW5kIGZvciBLb3JlYW4/ICBDYW4gc29tZW9uZQorICAgICAgICAvLyBzdXBwbHkgbWUgd2l0aCBpbmZvcm1hdGlvbiBvbiBuZWdhdGl2ZXMgYW5kIGRlY2ltYWxzPworICAgIH07Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9OdW1iZXJGb3JtYXRSdWxlc19ubC5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvTnVtYmVyRm9ybWF0UnVsZXNfbmwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kMjdlYzYwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvTnVtYmVyRm9ybWF0UnVsZXNfbmwuamF2YQpAQCAtMCwwICsxLDYwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9BdHRpYy9OdW1iZXJGb3JtYXRSdWxlc19ubC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDA0OjA3OjI5ICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLnRleHQucmVzb3VyY2VzOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLyoqCisgKiBSdWxlQmFzZWROdW1iZXJGb3JtYXQgZGF0YSBmb3IgRHV0Y2gKKyAqCisgKiBAYXV0aG9yIFJpY2hhcmQgR2lsbGFtCisgKiBAdmVyc2lvbiAkVmVyc2lvbiQgJERhdGU6IDIwMDAvMDMvMTAgMDQ6MDc6MjkgJAorICovCitjbGFzcyBOdW1iZXJGb3JtYXRSdWxlc19ubCBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgLyoqCisgICAgICogUHV0cyBhIGNvcHlyaWdodCBpbiB0aGUgLmNsYXNzIGZpbGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgY29weXJpZ2h0Tm90aWNlCisgICAgICAgID0gIkNvcHlyaWdodCBcdTAwYTkxOTk3LTE5OTggSUJNIENvcnAuICBBbGwgcmlnaHRzIHJlc2VydmVkLiI7CisKKyAgICBwdWJsaWMgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRzOworICAgIH0KKworICAgIE9iamVjdFtdW10gY29udGVudHMgPSB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBTcGVsbG91dCBydWxlcyBmb3IgU3dlZGlzaC4KKyAgICAgICAgICovCisgICAgICAgIHsgIlNwZWxsb3V0UnVsZXMiLAorICAgICAgICAgICAgIiAteDogbWluID4+O1xuIgorICAgICAgICAgICAgKyAieC54OiA8PCBrb21tYSA+PjtcbiIKKyAgICAgICAgICAgICsgIih6ZXJvPyk7IGVlbjsgdHdlZTsgZHJpZTsgdmllcjsgdmlqZjsgemVzOyB6ZXZlbjsgYWNodDsgbmVnZW47XG4iCisgICAgICAgICAgICArICJ0aWVuOyBlbGY7IHR3YWFsZjsgZGVydGllbjsgdmVlcnRpZW47IHZpamZ0aWVuOyB6ZXN0aWVuO1xuIgorICAgICAgICAgICAgKyAiemV2ZW50aWVuOyBhY2h0aWVuOyBuZWdlbnRpZW47XG4iCisgICAgICAgICAgICArICIyMDogWz4+IGVuIF10d2ludGlnO1xuIgorICAgICAgICAgICAgKyAiMzA6IFs+PiBlbiBdZGVydGlnO1xuIgorICAgICAgICAgICAgKyAiNDA6IFs+PiBlbiBddmVlcnRpZztcbiIKKyAgICAgICAgICAgICsgIjUwOiBbPj4gZW4gXXZpamZ0aWc7XG4iCisgICAgICAgICAgICArICI2MDogWz4+IGVuIF16ZXN0aWc7XG4iCisgICAgICAgICAgICArICI3MDogWz4+IGVuIF16ZXZlbnRpZztcbiIKKyAgICAgICAgICAgICsgIjgwOiBbPj4gZW4gXXRhY2h0aWc7XG4iCisgICAgICAgICAgICArICI5MDogWz4+IGVuIF1uZWdlbnRpZztcbiIKKyAgICAgICAgICAgICsgIjEwMDogPDwgaG9uZGVyZFsgPj5dO1xuIgorICAgICAgICAgICAgKyAiMTAwMDogPDwgZHVpemVuZFsgPj5dO1xuIgorICAgICAgICAgICAgKyAiMSwwMDAsMDAwOiA8PCBtaWxqb2VuWyA+Pl07XG4iCisgICAgICAgICAgICArICIxLDAwMCwwMDAsMDAwOiA8PCBiaWxqb2VuWyA+Pl07XG4iCisgICAgICAgICAgICArICIxLDAwMCwwMDAsMDAwLDAwMDogPSMsIyMwPSIgfQorICAgICAgICAgICAgLy8gY2FuIHNvbWVvbmUgc3VwcGx5IG1lIHdpdGggaW5mb3JtYXRpb24gb24gbmVnYXRpdmVzIGFuZCBkZWNpbWFscz8KKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvTnVtYmVyRm9ybWF0UnVsZXNfcnUuamF2YSBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL051bWJlckZvcm1hdFJ1bGVzX3J1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2FiMDdjZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL051bWJlckZvcm1hdFJ1bGVzX3J1LmphdmEKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvQXR0aWMvTnVtYmVyRm9ybWF0UnVsZXNfcnUuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwNDowNzoyOSAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS50ZXh0LnJlc291cmNlczsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8qKgorICogUnVsZUJhc2VkTnVtYmVyRm9ybWF0IGRhdGEgZm9yIFJ1c3NpYW4KKyAqCisgKiBAYXV0aG9yIFJpY2hhcmQgR2lsbGFtCisgKiBAdmVyc2lvbiAkVmVyc2lvbiQgJERhdGU6IDIwMDAvMDMvMTAgMDQ6MDc6MjkgJAorICovCitwdWJsaWMgY2xhc3MgTnVtYmVyRm9ybWF0UnVsZXNfcnUgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIC8qKgorICAgICAqIFB1dHMgYSBjb3B5cmlnaHQgaW4gdGhlIC5jbGFzcyBmaWxlCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGNvcHlyaWdodE5vdGljZQorICAgICAgICA9ICJDb3B5cmlnaHQgXHUwMGE5MTk5Ny0xOTk4IElCTSBDb3JwLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4iOworCisgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBjb250ZW50czsKKyAgICB9CisKKyAgICBPYmplY3RbXVtdIGNvbnRlbnRzID0geworICAgICAgICAvKioKKyAgICAgICAgICogU3BlbGxvdXQgcnVsZXMgZm9yIFJ1c3NpYW4uCisgICAgICAgICAqLworICAgICAgICB7ICJTcGVsbG91dFJ1bGVzIiwKKyAgICAgICAgICAgICJcdTA0M2RcdTA0M2VcdTA0M2JcdTA0NGM7IFx1MDQzZVx1MDQzNFx1MDQzOFx1MDQzZDsgXHUwNDM0XHUwNDMyXHUwNDMwOyBcdTA0NDJcdTA0NDBcdTA0Mzg7ICIKKyAgICAgICAgICAgICsgIlx1MDQ0N1x1MDQzNVx1MDQ0Mlx1MDQ0Ylx1MDQ0MFx1MDQzNTsgXHUwNDNmXHUwNDRmXHUwNDQyOyBcdTA0NDhcdTA0MzVcdTA0NDFcdTA0NDI7ICIKKyAgICAgICAgICAgICsgIlx1MDQ0MVx1MDQzNVx1MDQzY1x1MDQ0YzsgXHUwNDMyXHUwNDNlXHUwNDQxXHUwNDM1XHUwNDNjXHUwNDRjOyBcdTA0MzRcdTA0MzVcdTA0MzJcdTA0NGZcdTA0NDI7XG4iCisgICAgICAgICAgICArICIxMDogXHUwNDM0XHUwNDM1XHUwNDQxXHUwNDRmXHUwNDQyOyAiCisgICAgICAgICAgICArICJcdTA0M2VcdTA0MzRcdTA0MzhcdTA0M2RcdTA0M2RcdTA0MzBcdTA0MzRcdTA0NDZcdTA0MzBcdTA0NDJcdTA0NGM7XG4iCisgICAgICAgICAgICArICJcdTA0MzRcdTA0MzJcdTA0MzVcdTA0M2RcdTA0M2RcdTA0MzBcdTA0MzRcdTA0NDZcdTA0MzBcdTA0NDJcdTA0NGM7ICIKKyAgICAgICAgICAgICsgIlx1MDQ0Mlx1MDQ0MFx1MDQzOFx1MDQzZFx1MDQzMFx1MDQzNFx1MDQ0Nlx1MDQzMFx1MDQ0Mlx1MDQ0YzsgIgorICAgICAgICAgICAgKyAiXHUwNDQ3XHUwNDM1XHUwNDQyXHUwNDRiXHUwNDQwXHUwNDNkXHUwNDMwXHUwNDM0XHUwNDQ2XHUwNDMwXHUwNDQyXHUwNDRjO1xuIgorICAgICAgICAgICAgKyAiMTU6IFx1MDQzZlx1MDQ0Zlx1MDQ0Mlx1MDQzZFx1MDQzMFx1MDQzNFx1MDQ0Nlx1MDQzMFx1MDQ0Mlx1MDQ0YzsgIgorICAgICAgICAgICAgKyAiXHUwNDQ4XHUwNDM1XHUwNDQxXHUwNDQyXHUwNDNkXHUwNDMwXHUwNDM0XHUwNDQ2XHUwNDMwXHUwNDQyXHUwNDRjOyAiCisgICAgICAgICAgICArICJcdTA0NDFcdTA0MzVcdTA0M2NcdTA0M2RcdTA0MzBcdTA0MzRcdTA0NDZcdTA0MzBcdTA0NDJcdTA0NGM7ICIKKyAgICAgICAgICAgICsgIlx1MDQzMlx1MDQzZVx1MDQ0MVx1MDQzNVx1MDQzY1x1MDQzZFx1MDQzMFx1MDQzNFx1MDQ0Nlx1MDQzMFx1MDQ0Mlx1MDQ0YzsgIgorICAgICAgICAgICAgKyAiXHUwNDM0XHUwNDM1XHUwNDMyXHUwNDRmXHUwNDQyXHUwNDNkXHUwNDMwXHUwNDM0XHUwNDQ2XHUwNDMwXHUwNDQyXHUwNDRjO1xuIgorICAgICAgICAgICAgKyAiMjA6IFx1MDQzNFx1MDQzMlx1MDQzMFx1MDQzNFx1MDQ0Nlx1MDQzMFx1MDQ0Mlx1MDQ0Y1sgPj5dO1xuIgorICAgICAgICAgICAgKyAiMzA6IFx1MDQ0Mlx1MDQ0MFx1MDQzYlx1MDQzNFx1MDQ0Nlx1MDQzMFx1MDQ0Mlx1MDQ0Y1sgPj5dO1xuIgorICAgICAgICAgICAgKyAiNDA6IFx1MDQ0MVx1MDQzZVx1MDQ0MFx1MDQzZVx1MDQzYVsgPj5dO1xuIgorICAgICAgICAgICAgKyAiNTA6IFx1MDQzZlx1MDQ0Zlx1MDQ0Mlx1MDQ0Y1x1MDQzNFx1MDQzNVx1MDQ0MVx1MDQ0Zlx1MDQ0MlsgPj5dO1xuIgorICAgICAgICAgICAgKyAiNjA6IFx1MDQ0OFx1MDQzNVx1MDQ0MVx1MDQ0Mlx1MDQ0Y1x1MDQzNFx1MDQzNVx1MDQ0MVx1MDQ0Zlx1MDQ0MlsgPj5dO1xuIgorICAgICAgICAgICAgKyAiNzA6IFx1MDQ0MVx1MDQzNVx1MDQzY1x1MDQ0Y1x1MDQzNFx1MDQzNVx1MDQ0MVx1MDQ0Zlx1MDQ0MlsgPj5dO1xuIgorICAgICAgICAgICAgKyAiODA6IFx1MDQzMlx1MDQzZVx1MDQ0MVx1MDQzNVx1MDQzY1x1MDQ0Y1x1MDQzNFx1MDQzNVx1MDQ0MVx1MDQ0Zlx1MDQ0MlsgPj5dO1xuIgorICAgICAgICAgICAgKyAiOTA6IFx1MDQzNFx1MDQzNVx1MDQzMlx1MDQ0Zlx1MDQzZFx1MDQzZVx1MDQ0MVx1MDQ0Mlx1MDQzZVsgPj5dO1xuIgorICAgICAgICAgICAgKyAiMTAwOiBcdTA0NDFcdTA0NDJcdTA0M2VbID4+XTtcbiIKKyAgICAgICAgICAgICsgIjIwMDogPDwgXHUwNDQxXHUwNDQyXHUwNDNlWyA+Pl07XG4iCisgICAgICAgICAgICArICIxMDAwOiBcdTA0NDJcdTA0NGJcdTA0NDFcdTA0NGZcdTA0NDdcdTA0MzBbID4+XTtcbiIKKyAgICAgICAgICAgICsgIjIwMDA6IDw8IFx1MDQ0Mlx1MDQ0Ylx1MDQ0MVx1MDQ0Zlx1MDQ0N1x1MDQzMFsgPj5dO1xuIgorICAgICAgICAgICAgKyAiMSwwMDAsMDAwOiBcdTA0M2NcdTA0MzhcdTA0M2JcdTA0M2JcdTA0MzhcdTA0M2VcdTA0M2RbID4+XTtcbiIKKyAgICAgICAgICAgICsgIjIsMDAwLDAwMDogPDwgXHUwNDNjXHUwNDM4XHUwNDNiXHUwNDNiXHUwNDM4XHUwNDNlXHUwNDNkWyA+Pl07XG4iCisgICAgICAgICAgICArICIxLDAwMCwwMDAsMDAwOiA9IywjIzA9OyIgfQorICAgICAgICAvLyBDYW4gc29tZW9uZSBzdXBwbHkgbWUgd2l0aCBpbmZvcm1hdGlvbiBvbiBuZWdhdGl2ZXMgYW5kIGRlY2ltYWxzPworICAgICAgICAvLyBIb3cgYWJvdXQgd29yZHMgZm9yIGJpbGxpb25zIGFuZCB0cmlsbGlvbnM/CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL051bWJlckZvcm1hdFJ1bGVzX3N2LmphdmEgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9OdW1iZXJGb3JtYXRSdWxlc19zdi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE5NzA4OGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9OdW1iZXJGb3JtYXRSdWxlc19zdi5qYXZhCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL0F0dGljL051bWJlckZvcm1hdFJ1bGVzX3N2LmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDMvMTAgMDQ6MDc6MjkgJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0udGV4dC5yZXNvdXJjZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIFJ1bGVCYXNlZE51bWJlckZvcm1hdCBkYXRhIGZvciBTd2VkaXNoCisgKgorICogQGF1dGhvciBSaWNoYXJkIEdpbGxhbQorICogQHZlcnNpb24gJFZlcnNpb24kICREYXRlOiAyMDAwLzAzLzEwIDA0OjA3OjI5ICQKKyAqLworcHVibGljIGNsYXNzIE51bWJlckZvcm1hdFJ1bGVzX3N2IGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBQdXRzIGEgY29weXJpZ2h0IGluIHRoZSAuY2xhc3MgZmlsZQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjb3B5cmlnaHROb3RpY2UKKyAgICAgICAgPSAiQ29weXJpZ2h0IFx1MDBhOTE5OTctMTk5OCBJQk0gQ29ycC4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuIjsKKyAgICBwdWJsaWMgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRzOworICAgIH0KKworICAgIE9iamVjdFtdW10gY29udGVudHMgPSB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBTcGVsbG91dCBydWxlcyBmb3IgU3dlZGlzaC4KKyAgICAgICAgICovCisgICAgICAgIHsgIlNwZWxsb3V0UnVsZXMiLAorICAgICAgICAgICAgIm5vbGw7IGV0dDsgdHZcdTAwZTU7IHRyZTsgZnlyYTsgZmVtOyBzZXg7IHNqbzsgXHUwMGU1dHRhOyBuaW87XG4iCisgICAgICAgICAgICArICJ0aW87IGVsdmE7IHRvbHY7IHRyZXR0b247IGZqb3J0b247IGZlbXRvbjsgc2V4dG9uOyBzanV0dG9uOyBhcnRvbjsgbml0dG9uO1xuIgorICAgICAgICAgICAgKyAiMjA6IHRqdWdvWz4+XTtcbiIKKyAgICAgICAgICAgICsgIjMwOiB0cmV0dGlvWz4+XTtcbiIKKyAgICAgICAgICAgICsgIjQwOiBmeXJ0aW9bPj5dO1xuIgorICAgICAgICAgICAgKyAiNTA6IGZlbXRpb1s+Pl07XG4iCisgICAgICAgICAgICArICI2MDogc2V4dGlvWz4+XTtcbiIKKyAgICAgICAgICAgICsgIjcwOiBzanV0dGlvWz4+XTtcbiIKKyAgICAgICAgICAgICsgIjgwOiBcdTAwZTV0dGlvWz4+XTtcbiIKKyAgICAgICAgICAgICsgIjkwOiBuaXR0aW9bPj5dO1xuIgorICAgICAgICAgICAgKyAiMTAwOiBodW5kcmFbPj5dO1xuIgorICAgICAgICAgICAgKyAiMjAwOiA8PGh1bmRyYVs+Pl07XG4iCisgICAgICAgICAgICArICIxMDAwOiB0dXNlblsgPj5dO1xuIgorICAgICAgICAgICAgKyAiMjAwMDogPDwgdHVzZW5bID4+XTtcbiIKKyAgICAgICAgICAgICsgIjEsMDAwLDAwMDogZW4gbWlsam9uWyA+Pl07XG4iCisgICAgICAgICAgICArICIyLDAwMCwwMDA6IDw8IG1pbGpvblsgPj5dO1xuIgorICAgICAgICAgICAgKyAiMSwwMDAsMDAwLDAwMDogZW4gbWlsamFyZFsgPj5dO1xuIgorICAgICAgICAgICAgKyAiMiwwMDAsMDAwLDAwMDogPDwgbWlsamFyZFsgPj5dO1xuIgorICAgICAgICAgICAgKyAiMSwwMDAsMDAwLDAwMCwwMDA6IGVuIGJpbGpvblsgPj5dO1xuIgorICAgICAgICAgICAgKyAiMiwwMDAsMDAwLDAwMCwwMDA6IDw8IGJpbGpvblsgPj5dO1xuIgorICAgICAgICAgICAgKyAiMSwwMDAsMDAwLDAwMCwwMDAsMDAwOiA9IywjIzA9IiB9CisgICAgICAgIC8vIGNhbiBzb21lb25lIHN1cHBseSBtZSB3aXRoIGluZm9ybWF0aW9uIG9uIG5lZ2F0aXZlcyBhbmQgZGVjaW1hbHM/CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1Jlc291cmNlUmVhZGVyLmphdmEgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9SZXNvdXJjZVJlYWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmMxYjQ0NWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9SZXNvdXJjZVJlYWRlci5qYXZhCkBAIC0wLDAgKzEsMTA1IEBACitwYWNrYWdlIGNvbS5pYm0udGV4dC5yZXNvdXJjZXM7CitpbXBvcnQgamF2YS5pby4qOworCisvKioKKyAqIEEgcmVhZGVyIGZvciB0ZXh0IHJlc291cmNlIGRhdGEgaW4gdGhlIGN1cnJlbnQgcGFja2FnZS4gIFRoZQorICogcmVzb3VyY2UgZGF0YSBpcyBsb2FkZWQgdGhyb3VnaCB0aGUgY2xhc3MgbG9hZGVyLCBzbyBpdCB3aWxsCisgKiB0eXBpY2FsbHkgYmUgYSBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUgKi5jbGFzcyBmaWxlcywgb3IKKyAqIGEgZmlsZSB3aXRoaW4gYSBKQVIgZmlsZSBpbiB0aGUgY29ycmVzcG9uZGluZyBzdWJkaXJlY3RvcnkuICBUaGUKKyAqIGZpbGUgbXVzdCBiZSBhIHRleHQgZmlsZSBpbiBvbmUgb2YgdGhlIHN1cHBvcnRlZCBlbmNvZGluZ3M7IHdoZW4gdGhlCisgKiByZXNvdXJjZSBpcyBvcGVuZWQgYnkgY29uc3RydWN0aW5nIGEgPGNvZGU+UmVzb3VyY2VSZWFkZXI8L2NvZGU+CisgKiBvYmplY3QgdGhlIGVuY29kaW5nIGlzIHNwZWNpZmllZC4KKyAqCisgKiA8cD5BbHRob3VnaCB0aGlzIGNsYXNzIGhhcyBhIHB1YmxpYyBBUEksIGl0IGlzIGRlc2lnbmVkIGZvcgorICogaW50ZXJuYWwgdXNlIGJ5IGNsYXNzZXMgaW4gdGhlIDxjb2RlPmNvbS5pYm0udGV4dDwvY29kZT4gcGFja2FnZS4KKyAqCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKi8KK3B1YmxpYyBjbGFzcyBSZXNvdXJjZVJlYWRlciB7CisgICAgcHJpdmF0ZSBCdWZmZXJlZFJlYWRlciByZWFkZXI7CisgICAgcHJpdmF0ZSBTdHJpbmcgcmVzb3VyY2VOYW1lOworICAgIHByaXZhdGUgU3RyaW5nIGVuY29kaW5nOyAvLyBudWxsIGZvciBkZWZhdWx0IGVuY29kaW5nCisgICAgcHJpdmF0ZSBib29sZWFuIGlzUmVzZXQ7IC8vIFRSVUUgaWYgd2UgYXJlIGF0IHRoZSBzdGFydCBvZiB0aGUgZmlsZQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgcmVhZGVyIG9iamVjdCBmb3IgdGhlIHRleHQgZmlsZSBvZiB0aGUgZ2l2ZW4gbmFtZQorICAgICAqIGluIHRoaXMgcGFja2FnZSwgdXNpbmcgdGhlIGdpdmVuIGVuY29kaW5nLgorICAgICAqIEBwYXJhbSByZXNvdXJjZU5hbWUgdGhlIG5hbWUgb2YgdGhlIHRleHQgZmlsZSBsb2NhdGVkIGluIHRoaXMKKyAgICAgKiBwYWNrYWdlCisgICAgICogQHBhcmFtIGVuY29kaW5nIHRoZSBlbmNvZGluZyBvZiB0aGUgdGV4dCBmaWxlOyBpZiB1bnN1cHBvcnRlZAorICAgICAqIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24KKyAgICAgKiBAZXhjZXB0aW9uIFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gaWYKKyAgICAgKiA8Y29kZT5lbmNvZGluZzwvY29kZT4gaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgSkRLLgorICAgICAqLworICAgIHB1YmxpYyBSZXNvdXJjZVJlYWRlcihTdHJpbmcgcmVzb3VyY2VOYW1lLCBTdHJpbmcgZW5jb2RpbmcpCisgICAgICAgIHRocm93cyBVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIHsKKworICAgICAgICB0aGlzLnJlc291cmNlTmFtZSA9IHJlc291cmNlTmFtZTsKKyAgICAgICAgdGhpcy5lbmNvZGluZyA9IGVuY29kaW5nOworICAgICAgICBpc1Jlc2V0ID0gZmFsc2U7CisgICAgICAgIF9yZXNldCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIHJlYWRlciBvYmplY3QgZm9yIHRoZSB0ZXh0IGZpbGUgb2YgdGhlIGdpdmVuIG5hbWUKKyAgICAgKiBpbiB0aGlzIHBhY2thZ2UsIHVzaW5nIHRoZSBkZWZhdWx0IGVuY29kaW5nLgorICAgICAqIEBwYXJhbSByZXNvdXJjZU5hbWUgdGhlIG5hbWUgb2YgdGhlIHRleHQgZmlsZSBsb2NhdGVkIGluIHRoaXMKKyAgICAgKiBwYWNrYWdlCisgICAgICovCisgICAgcHVibGljIFJlc291cmNlUmVhZGVyKFN0cmluZyByZXNvdXJjZU5hbWUpIHsKKyAgICAgICAgdGhpcy5yZXNvdXJjZU5hbWUgPSByZXNvdXJjZU5hbWU7CisgICAgICAgIHRoaXMuZW5jb2RpbmcgPSBudWxsOworICAgICAgICBpc1Jlc2V0ID0gZmFsc2U7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBfcmVzZXQoKTsKKyAgICAgICAgfSBjYXRjaCAoVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiBlKSB7fQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJlYWQgYW5kIHJldHVybiB0aGUgbmV4dCBsaW5lIG9mIHRoZSBmaWxlIG9yIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogaWYgdGhlIGVuZCBvZiB0aGUgZmlsZSBoYXMgYmVlbiByZWFjaGVkLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgcmVhZExpbmUoKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBpc1Jlc2V0ID0gZmFsc2U7CisgICAgICAgIHJldHVybiByZWFkZXIucmVhZExpbmUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXNldCB0aGlzIHJlYWRlciBzbyB0aGF0IHRoZSBuZXh0IGNhbGwgdG8KKyAgICAgKiA8Y29kZT5yZWFkTGluZSgpPC9jb2RlPiByZXR1cm5zIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBmaWxlCisgICAgICogYWdhaW4uICBUaGlzIGlzIGEgc29tZXdoYXQgZXhwZW5zaXZlIGNhbGwsIGhvd2V2ZXIsIGNhbGxpbmcKKyAgICAgKiA8Y29kZT5yZXNldCgpPC9jb2RlPiBhZnRlciBjYWxsaW5nIGl0IHRoZSBmaXJzdCB0aW1lIGRvZXMKKyAgICAgKiBub3RoaW5nIGlmIDxjb2RlPnJlYWRMaW5lKCk8L2NvZGU+IGhhcyBub3QgYmVlbiBjYWxsZWQgaW4KKyAgICAgKiBiZXR3ZWVuLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlc2V0KCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgX3Jlc2V0KCk7CisgICAgICAgIH0gY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gZSkge30KKyAgICAgICAgLy8gV2Ugc3dhbGxvdyB0aGlzIGV4Y2VwdGlvbiwgaWYgdGhlcmUgaXMgb25lLiAgSWYgdGhlIGVuY29kaW5nIGlzCisgICAgICAgIC8vIGludmFsaWQsIHRoZSBjb25zdHJ1Y3RvciB3aWxsIGhhdmUgdGhyb3duIHRoaXMgZXhjZXB0aW9uIGFscmVhZHkgYW5kCisgICAgICAgIC8vIHRoZSBjYWxsZXIgc2hvdWxkbid0IHVzZSB0aGUgb2JqZWN0IGFmdGVyd2FyZHMuCisgICAgfQorCisgICAgLyoqCisgICAgICogUmVzZXQgdG8gdGhlIHN0YXJ0IGJ5IHJlY29uc3RydWN0aW5nIHRoZSBzdHJlYW0gYW5kIHJlYWRlcnMuCisgICAgICogV2UgY291bGQgYWxzbyB1c2UgbWFyaygpIGFuZCByZXNldCgpIG9uIHRoZSBzdHJlYW0gb3IgcmVhZGVyLAorICAgICAqIGJ1dCB0aGF0IHdvdWxkIGNhdXNlIHRoZW0gdG8ga2VlcCB0aGUgc3RyZWFtIGRhdGEgYXJvdW5kIGluCisgICAgICogbWVtb3J5LiAgV2UgZG9uJ3Qgd2FudCB0aGF0IGJlY2F1c2Ugc29tZSBvZiB0aGUgcmVzb3VyY2UgZmlsZXMKKyAgICAgKiBhcmUgbGFyZ2UsIGUuZy4sIDQwMGsuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIF9yZXNldCgpIHRocm93cyBVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKGlzUmVzZXQpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBJbnB1dFN0cmVhbSBpcyA9IGdldENsYXNzKCkuZ2V0UmVzb3VyY2VBc1N0cmVhbShyZXNvdXJjZU5hbWUpOworICAgICAgICBpZiAoaXMgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQ2FuJ3Qgb3BlbiAiICsgcmVzb3VyY2VOYW1lKTsKKyAgICAgICAgfQorICAgICAgICBJbnB1dFN0cmVhbVJlYWRlciBpc3IgPQorICAgICAgICAgICAgKGVuY29kaW5nID09IG51bGwpID8gbmV3IElucHV0U3RyZWFtUmVhZGVyKGlzKSA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSW5wdXRTdHJlYW1SZWFkZXIoaXMsIGVuY29kaW5nKTsKKyAgICAgICAgcmVhZGVyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKGlzcik7CisgICAgICAgIGlzUmVzZXQgPSB0cnVlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0JlbmdhbGlfSW50ZXJJbmRpYy51dGY4LnR4dCBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0JlbmdhbGlfSW50ZXJJbmRpYy51dGY4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kODBmN2M4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfQmVuZ2FsaV9JbnRlckluZGljLnV0ZjgudHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0RldmFuYWdhcmlfSW50ZXJJbmRpYy51dGY4LnR4dCBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0RldmFuYWdhcmlfSW50ZXJJbmRpYy51dGY4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iMmY5Mjc2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfRGV2YW5hZ2FyaV9JbnRlckluZGljLnV0ZjgudHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0Z1bGx3aWR0aF9IYWxmd2lkdGgudXRmOC50eHQgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9GdWxsd2lkdGhfSGFsZndpZHRoLnV0ZjgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmRkMTljYTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9GdWxsd2lkdGhfSGFsZndpZHRoLnV0ZjgudHh0CkBAIC0wLDAgKzEsMjY5IEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzDQorIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIERhdGU6IFR1ZSBKYW4gMjMgMTI6NDE6NTcgMjAwMQ0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKyMgRnVsbHdpZHRoLUhhbGZ3aWR0aA0KKw0KKyMgTWVjaGFuaWNhbGx5IGdlbmVyYXRlZCBmcm9tIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlDQorDQorIyBtdWx0aWNoYXJhY3Rlcg0KKw0KK+OCrDw+7722776eOyAjICB0byBLQVRBS0FOQSBMRVRURVIgR0ENCivjgq48Pu+9t+++njsgIyAgdG8gS0FUQUtBTkEgTEVUVEVSIEdJDQor44KwPD7vvbjvvp47ICMgIHRvIEtBVEFLQU5BIExFVFRFUiBHVQ0KK+OCsjw+7725776eOyAjICB0byBLQVRBS0FOQSBMRVRURVIgR0UNCivjgrQ8Pu+9uu++njsgIyAgdG8gS0FUQUtBTkEgTEVUVEVSIEdPDQor44K2PD7vvbvvvp47ICMgIHRvIEtBVEFLQU5BIExFVFRFUiBaQQ0KK+OCuDw+7728776eOyAjICB0byBLQVRBS0FOQSBMRVRURVIgWkkNCivjgro8Pu+9ve++njsgIyAgdG8gS0FUQUtBTkEgTEVUVEVSIFpVDQor44K8PD7vvb7vvp47ICMgIHRvIEtBVEFLQU5BIExFVFRFUiBaRQ0KK+OCvjw+772/776eOyAjICB0byBLQVRBS0FOQSBMRVRURVIgWk8NCivjg4A8Pu++gO++njsgIyAgdG8gS0FUQUtBTkEgTEVUVEVSIERBDQor44OCPD7vvoHvvp47ICMgIHRvIEtBVEFLQU5BIExFVFRFUiBESQ0KK+ODhTw+776C776eOyAjICB0byBLQVRBS0FOQSBMRVRURVIgRFUNCivjg4c8Pu++g+++njsgIyAgdG8gS0FUQUtBTkEgTEVUVEVSIERFDQor44OJPD7vvoTvvp47ICMgIHRvIEtBVEFLQU5BIExFVFRFUiBETw0KK+ODkDw+776K776eOyAjICB0byBLQVRBS0FOQSBMRVRURVIgQkENCivjg5E8Pu++iu++nzsgIyAgdG8gS0FUQUtBTkEgTEVUVEVSIFBBDQor44OTPD7vvovvvp47ICMgIHRvIEtBVEFLQU5BIExFVFRFUiBCSQ0KK+ODlDw+776L776fOyAjICB0byBLQVRBS0FOQSBMRVRURVIgUEkNCivjg5Y8Pu++jO++njsgIyAgdG8gS0FUQUtBTkEgTEVUVEVSIEJVDQor44OXPD7vvozvvp87ICMgIHRvIEtBVEFLQU5BIExFVFRFUiBQVQ0KK+ODmTw+776N776eOyAjICB0byBLQVRBS0FOQSBMRVRURVIgQkUNCivjg5o8Pu++je++nzsgIyAgdG8gS0FUQUtBTkEgTEVUVEVSIFBFDQor44OcPD7vvo7vvp47ICMgIHRvIEtBVEFLQU5BIExFVFRFUiBCTw0KK+ODnTw+776O776fOyAjICB0byBLQVRBS0FOQSBMRVRURVIgUE8NCivjg7Q8Pu+9s+++njsgIyAgdG8gS0FUQUtBTkEgTEVUVEVSIFZVDQor44O3PD7vvpzvvp47ICMgIHRvIEtBVEFLQU5BIExFVFRFUiBWQQ0KK+ODujw+772m776eOyAjICB0byBLQVRBS0FOQSBMRVRURVIgVk8NCisNCisjIHNpbmdsZSBjaGFyYWN0ZXINCisNCivvvIE8PichJzsgIyAgZnJvbSBGVUxMV0lEVEggRVhDTEFNQVRJT04gTUFSSw0KK++8gjw+J1wiJzsgIyAgZnJvbSBGVUxMV0lEVEggUVVPVEFUSU9OIE1BUksNCivvvIM8PicjJzsgIyAgZnJvbSBGVUxMV0lEVEggTlVNQkVSIFNJR04NCivvvIQ8PickJzsgIyAgZnJvbSBGVUxMV0lEVEggRE9MTEFSIFNJR04NCivvvIU8PiclJzsgIyAgZnJvbSBGVUxMV0lEVEggUEVSQ0VOVCBTSUdODQor77yGPD4nJic7ICMgIGZyb20gRlVMTFdJRFRIIEFNUEVSU0FORA0KK++8hzw+Jyc7ICMgIGZyb20gRlVMTFdJRFRIIEFQT1NUUk9QSEUNCivvvIg8PicoJzsgIyAgZnJvbSBGVUxMV0lEVEggTEVGVCBQQVJFTlRIRVNJUw0KK++8iTw+JyknOyAjICBmcm9tIEZVTExXSURUSCBSSUdIVCBQQVJFTlRIRVNJUw0KK++8ijw+JyonOyAjICBmcm9tIEZVTExXSURUSCBBU1RFUklTSw0KK++8izw+JysnOyAjICBmcm9tIEZVTExXSURUSCBQTFVTIFNJR04NCivvvIw8PicsJzsgIyAgZnJvbSBGVUxMV0lEVEggQ09NTUENCivvvI08PictJzsgIyAgZnJvbSBGVUxMV0lEVEggSFlQSEVOLU1JTlVTDQor77yOPD4nLic7ICMgIGZyb20gRlVMTFdJRFRIIEZVTEwgU1RPUA0KK++8jzw+Jy8nOyAjICBmcm9tIEZVTExXSURUSCBTT0xJRFVTDQor77yQPD4nMCc7ICMgIGZyb20gRlVMTFdJRFRIIERJR0lUIFpFUk8NCivvvJE8PicxJzsgIyAgZnJvbSBGVUxMV0lEVEggRElHSVQgT05FDQor77ySPD4nMic7ICMgIGZyb20gRlVMTFdJRFRIIERJR0lUIFRXTw0KK++8kzw+JzMnOyAjICBmcm9tIEZVTExXSURUSCBESUdJVCBUSFJFRQ0KK++8lDw+JzQnOyAjICBmcm9tIEZVTExXSURUSCBESUdJVCBGT1VSDQor77yVPD4nNSc7ICMgIGZyb20gRlVMTFdJRFRIIERJR0lUIEZJVkUNCivvvJY8Pic2JzsgIyAgZnJvbSBGVUxMV0lEVEggRElHSVQgU0lYDQor77yXPD4nNyc7ICMgIGZyb20gRlVMTFdJRFRIIERJR0lUIFNFVkVODQor77yYPD4nOCc7ICMgIGZyb20gRlVMTFdJRFRIIERJR0lUIEVJR0hUDQor77yZPD4nOSc7ICMgIGZyb20gRlVMTFdJRFRIIERJR0lUIE5JTkUNCivvvJo8Pic6JzsgIyAgZnJvbSBGVUxMV0lEVEggQ09MT04NCivvvJs8Pic7JzsgIyAgZnJvbSBGVUxMV0lEVEggU0VNSUNPTE9ODQor77ycPD4nPCc7ICMgIGZyb20gRlVMTFdJRFRIIExFU1MtVEhBTiBTSUdODQor77ydPD4nPSc7ICMgIGZyb20gRlVMTFdJRFRIIEVRVUFMUyBTSUdODQor77yePD4nPic7ICMgIGZyb20gRlVMTFdJRFRIIEdSRUFURVItVEhBTiBTSUdODQor77yfPD4nPyc7ICMgIGZyb20gRlVMTFdJRFRIIFFVRVNUSU9OIE1BUksNCivvvKA8PidAJzsgIyAgZnJvbSBGVUxMV0lEVEggQ09NTUVSQ0lBTCBBVA0KK++8oTw+QTsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQ0KK++8ojw+QjsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgQg0KK++8ozw+QzsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgQw0KK++8pDw+RDsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRA0KK++8pTw+RTsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRQ0KK++8pjw+RjsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRg0KK++8pzw+RzsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRw0KK++8qDw+SDsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgSA0KK++8qTw+STsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgSQ0KK++8qjw+SjsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgSg0KK++8qzw+SzsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgSw0KK++8rDw+TDsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgTA0KK++8rTw+TTsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQ0KK++8rjw+TjsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgTg0KK++8rzw+TzsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgTw0KK++8sDw+UDsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUA0KK++8sTw+UTsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUQ0KK++8sjw+UjsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUg0KK++8szw+UzsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUw0KK++8tDw+VDsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgVA0KK++8tTw+VTsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgVQ0KK++8tjw+VjsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgVg0KK++8tzw+VzsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgVw0KK++8uDw+WDsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgWA0KK++8uTw+WTsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQ0KK++8ujw+WjsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgWg0KK++8uzw+J1snOyAjICBmcm9tIEZVTExXSURUSCBMRUZUIFNRVUFSRSBCUkFDS0VUDQor77y8PD4nXFwnOyAjICBmcm9tIEZVTExXSURUSCBSRVZFUlNFIFNPTElEVVMge2RvdWJsZSBlc2NhcGUgLSBhbGl1fQ0KK++8vTw+J10nOyAjICBmcm9tIEZVTExXSURUSCBSSUdIVCBTUVVBUkUgQlJBQ0tFVA0KK++8vjw+J14nOyAjICBmcm9tIEZVTExXSURUSCBDSVJDVU1GTEVYIEFDQ0VOVA0KK++8vzw+J18nOyAjICBmcm9tIEZVTExXSURUSCBMT1cgTElORQ0KK++9gDw+J2AnOyAjICBmcm9tIEZVTExXSURUSCBHUkFWRSBBQ0NFTlQNCivvvYE8PmE7ICMgIGZyb20gRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBBDQor772CPD5iOyAjICBmcm9tIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgQg0KK++9gzw+YzsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEMNCivvvYQ8PmQ7ICMgIGZyb20gRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBEDQor772FPD5lOyAjICBmcm9tIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgRQ0KK++9hjw+ZjsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEYNCivvvYc8Pmc7ICMgIGZyb20gRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBHDQor772IPD5oOyAjICBmcm9tIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgSA0KK++9iTw+aTsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEkNCivvvYo8Pmo7ICMgIGZyb20gRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBKDQor772LPD5rOyAjICBmcm9tIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgSw0KK++9jDw+bDsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEwNCivvvY08Pm07ICMgIGZyb20gRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBNDQor772OPD5uOyAjICBmcm9tIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgTg0KK++9jzw+bzsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIE8NCivvvZA8PnA7ICMgIGZyb20gRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBQDQor772RPD5xOyAjICBmcm9tIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgUQ0KK++9kjw+cjsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFINCivvvZM8PnM7ICMgIGZyb20gRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBTDQor772UPD50OyAjICBmcm9tIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgVA0KK++9lTw+dTsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFUNCivvvZY8PnY7ICMgIGZyb20gRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBWDQor772XPD53OyAjICBmcm9tIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgVw0KK++9mDw+eDsgIyAgZnJvbSBGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFgNCivvvZk8Pnk7ICMgIGZyb20gRlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBZDQor772aPD56OyAjICBmcm9tIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgWg0KK++9mzw+J3snOyAjICBmcm9tIEZVTExXSURUSCBMRUZUIENVUkxZIEJSQUNLRVQNCivvvZw8Pid8JzsgIyAgZnJvbSBGVUxMV0lEVEggVkVSVElDQUwgTElORQ0KK++9nTw+J30nOyAjICBmcm9tIEZVTExXSURUSCBSSUdIVCBDVVJMWSBCUkFDS0VUDQor772ePD4nfic7ICMgIGZyb20gRlVMTFdJRFRIIFRJTERFDQor44CCPD7vvaE7ICMgIHRvIEhBTEZXSURUSCBJREVPR1JBUEhJQyBGVUxMIFNUT1ANCivjgIw8Pu+9ojsgIyAgdG8gSEFMRldJRFRIIExFRlQgQ09STkVSIEJSQUNLRVQNCivjgI08Pu+9ozsgIyAgdG8gSEFMRldJRFRIIFJJR0hUIENPUk5FUiBCUkFDS0VUDQor44CBPD7vvaQ7ICMgIHRvIEhBTEZXSURUSCBJREVPR1JBUEhJQyBDT01NQQ0KK+ODuzw+772lOyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEgTUlERExFIERPVA0KK+ODsjw+772mOyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFdPDQor44KhPD7vvac7ICMgIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgQQ0KK+OCozw+772oOyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIEkNCivjgqU8Pu+9qTsgIyAgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBVDQor44KnPD7vvao7ICMgIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgRQ0KK+OCqTw+772rOyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIE8NCivjg6M8Pu+9rDsgIyAgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBZQQ0KK+ODpTw+772tOyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlVDQor44OnPD7vva47ICMgIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgWU8NCivjg4M8Pu+9rzsgIyAgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBUVQ0KK+ODvDw+772wOyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEtSElSQUdBTkEgUFJPTE9OR0VEIFNPVU5EIE1BUksNCivjgqI8Pu+9sTsgIyAgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBBDQor44KkPD7vvbI7ICMgIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgSQ0KK+OCpjw+772zOyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFUNCivjgqg8Pu+9tDsgIyAgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBFDQor44KqPD7vvbU7ICMgIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTw0KK+OCqzw+7722OyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtBDQor44KtPD7vvbc7ICMgIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgS0kNCivjgq88Pu+9uDsgIyAgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBLVQ0KK+OCsTw+7725OyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtFDQor44KzPD7vvbo7ICMgIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgS08NCivjgrU8Pu+9uzsgIyAgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTQQ0KK+OCtzw+7728OyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNJDQor44K5PD7vvb07ICMgIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU1UNCivjgrs8Pu+9vjsgIyAgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTRQ0KK+OCvTw+772/OyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNPDQor44K/PD7vvoA7ICMgIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgVEENCivjg4E8Pu++gTsgIyAgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBUSQ0KK+ODhDw+776COyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFRVDQor44OGPD7vvoM7ICMgIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgVEUNCivjg4g8Pu++hDsgIyAgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBUTw0KK+ODijw+776FOyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5BDQor44OLPD7vvoY7ICMgIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTkkNCivjg4w8Pu++hzsgIyAgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBOVQ0KK+ODjTw+776IOyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5FDQor44OOPD7vvok7ICMgIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTk8NCivjg488Pu++ijsgIyAgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBIQQ0KK+ODkjw+776LOyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEhJDQor44OVPD7vvow7ICMgIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgSFUNCivjg5g8Pu++jTsgIyAgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBIRQ0KK+ODmzw+776OOyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEhPDQor44OePD7vvo87ICMgIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTUENCivjg588Pu++kDsgIyAgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBNSQ0KK+ODoDw+776ROyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE1VDQor44OhPD7vvpI7ICMgIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTUUNCivjg6I8Pu++kzsgIyAgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBNTw0KK+ODpDw+776UOyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFlBDQor44OmPD7vvpU7ICMgIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgWVUNCivjg6g8Pu++ljsgIyAgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBZTw0KK+ODqTw+776XOyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJBDQor44OqPD7vvpg7ICMgIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgUkkNCivjg6s8Pu++mTsgIyAgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBSVQ0KK+ODrDw+776aOyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJFDQor44OtPD7vvps7ICMgIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgUk8NCivjg688Pu++nDsgIyAgdG8gSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBXQQ0KK+ODszw+776dOyAjICB0byBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE4NCivjgpk8Pu++njsgIyAgdG8gSEFMRldJRFRIIEtBVEFLQU5BIFZPSUNFRCBTT1VORCBNQVJLDQor44KaPD7vvp87ICMgIHRvIEhBTEZXSURUSCBLQVRBS0FOQSBTRU1JLVZPSUNFRCBTT1VORCBNQVJLDQor4YWgPD7vvqA7ICMgIHRvIEhBTEZXSURUSCBIQU5HVUwgRklMTEVSDQor4YSAPD7vvqE7ICMgIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEtJWUVPSw0KK+GEgTw+776iOyAjICB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FOR0tJWUVPSw0KK+GGqjw+776jOyAjICB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBLSVlFT0stU0lPUw0KK+GEgjw+776kOyAjICB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBOSUVVTg0KK+GGrDw+776lOyAjICB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBOSUVVTi1DSUVVQw0KK+GGrTw+776mOyAjICB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBOSUVVTi1ISUVVSA0KK+GEgzw+776nOyAjICB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBUSUtFVVQNCivhhIQ8Pu++qDsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkdUSUtFVVQNCivhhIU8Pu++qTsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwNCivhhrA8Pu++qjsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwtS0lZRU9LDQor4YaxPD7vvqs7ICMgIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLU1JRVVNDQor4YayPD7vvqw7ICMgIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLVBJRVVQDQor4YazPD7vvq07ICMgIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLVNJT1MNCivhhrQ8Pu++rjsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwtVEhJRVVUSA0KK+GGtTw+776vOyAjICB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTC1QSElFVVBIDQor4YSaPD7vvrA7ICMgIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLUhJRVVIDQor4YSGPD7vvrE7ICMgIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE1JRVVNDQor4YSHPD7vvrI7ICMgIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFBJRVVQDQor4YSIPD7vvrM7ICMgIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HUElFVVANCivhhKE8Pu++tDsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUElFVVAtU0lPUw0KK+GEiTw+7761OyAjICB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTSU9TDQor4YSKPD7vvrY7ICMgIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HU0lPUw0KK+GEizw+7763OyAjICB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBJRVVORw0KK+GEjDw+7764OyAjICB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBDSUVVQw0KK+GEjTw+7765OyAjICB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FOR0NJRVVDDQor4YSOPD7vvro7ICMgIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIENISUVVQ0gNCivhhI88Pu++uzsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgS0hJRVVLSA0KK+GEkDw+7768OyAjICB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBUSElFVVRIDQor4YSRPD7vvr07ICMgIHRvIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFBISUVVUEgNCivhhJI8Pu++vjsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgSElFVUgNCivhhaE8Pu+/gjsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgQQ0KK+GFojw+77+DOyAjICB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBBRQ0KK+GFozw+77+EOyAjICB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBZQQ0KK+GFpDw+77+FOyAjICB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBZQUUNCivhhaU8Pu+/hjsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgRU8NCivhhaY8Pu+/hzsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgRQ0KK+GFpzw+77+KOyAjICB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBZRU8NCivhhag8Pu+/izsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUUNCivhhak8Pu+/jDsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTw0KK+GFqjw+77+NOyAjICB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBXQQ0KK+GFqzw+77+OOyAjICB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBXQUUNCivhhaw8Pu+/jzsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgT0UNCivhha08Pu+/kjsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWU8NCivhha48Pu+/kzsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgVQ0KK+GFrzw+77+UOyAjICB0byBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBXRU8NCivhhbA8Pu+/lTsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgV0UNCivhhbE8Pu+/ljsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgV0kNCivhhbI8Pu+/lzsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWVUNCivhhbM8Pu+/mjsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgRVUNCivhhbQ8Pu+/mzsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUkNCivhhbU8Pu+/nDsgIyAgdG8gSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgSQ0KK++/oDw+J8KiJzsgIyAgZnJvbSBGVUxMV0lEVEggQ0VOVCBTSUdODQor77+hPD4nwqMnOyAjICBmcm9tIEZVTExXSURUSCBQT1VORCBTSUdODQor77+iPD4nwqwnOyAjICBmcm9tIEZVTExXSURUSCBOT1QgU0lHTg0KK++/ozw+JyAnzIQ7ICMgIGZyb20gRlVMTFdJRFRIIE1BQ1JPTg0KK++/pDw+J8KmJzsgIyAgZnJvbSBGVUxMV0lEVEggQlJPS0VOIEJBUg0KK++/pTw+J8KlJzsgIyAgZnJvbSBGVUxMV0lEVEggWUVOIFNJR04NCivvv6Y8PuKCqTsgIyAgZnJvbSBGVUxMV0lEVEggV09OIFNJR04NCivilII8Pu+/qDsgIyAgdG8gSEFMRldJRFRIIEZPUk1TIExJR0hUIFZFUlRJQ0FMDQor4oaQPD7vv6k7ICMgIHRvIEhBTEZXSURUSCBMRUZUV0FSRFMgQVJST1cNCivihpE8Pu+/qjsgIyAgdG8gSEFMRldJRFRIIFVQV0FSRFMgQVJST1cNCivihpI8Pu+/qzsgIyAgdG8gSEFMRldJRFRIIFJJR0hUV0FSRFMgQVJST1cNCivihpM8Pu+/rDsgIyAgdG8gSEFMRldJRFRIIERPV05XQVJEUyBBUlJPVw0KK+KWoDw+77+tOyAjICB0byBIQUxGV0lEVEggQkxBQ0sgU1FVQVJFDQor4peLPD7vv647ICMgIHRvIEhBTEZXSURUSCBXSElURSBDSVJDTEUNCisNCisjIGVvZg0KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0d1amFyYXRpX0ludGVySW5kaWMudXRmOC50eHQgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9HdWphcmF0aV9JbnRlckluZGljLnV0ZjgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA1YzMzZjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9HdWphcmF0aV9JbnRlckluZGljLnV0ZjgudHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0d1cm11a2hpX0ludGVySW5kaWMudXRmOC50eHQgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9HdXJtdWtoaV9JbnRlckluZGljLnV0ZjgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjVmYTgzNjYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9HdXJtdWtoaV9JbnRlckluZGljLnV0ZjgudHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0hhbl9QaW55aW4udXRmOC50eHQgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9IYW5fUGlueWluLnV0ZjgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjIwOWY5ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9IYW5fUGlueWluLnV0ZjgudHh0CkBAIC0wLDAgKzEsMjAzNjUgQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMNCisjIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgR2VuZXJhdGVkOiBGcmkgSmFuIDI2IDE1OjE0OjQ4IDIwMDENCisjIFRvb2w6IC4uXC4uXHRvb2xzXHRyYW5zbGl0XGhhbnBpbnlpbi5wbA0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKyMgSGFuLVBpbnlpbg0KKw0KKyMgTWVjaGFuaWNhbGx5IGRlcml2ZWQgZnJvbSBcZGVza1xVbmloYW4udHh0IChmdHAudW5pY29kZS5vcmcpLCB2ZXJzaW9uOg0KKyMNCisjCU5hbWU6ICAgICAgICAgICAgIFVuaWhhbiBkYXRhYmFzZQ0KKyMJVW5pY29kZSB2ZXJzaW9uOiAgMy4wYjENCisjCVRhYmxlIHZlcnNpb246ICAgIDEuMQ0KKyMJRGF0ZTogICAgICAgICAgICAgMiBKdWx5IDE5OTkNCisjDQorIwlDb3B5cmlnaHQgKGMpIDE5OTYtMTk5OSBVbmljb2RlLCBJbmMuICBBbGwgUmlnaHRzIHJlc2VydmVkLg0KKw0KK+S4gSA+IGTEq25nOyAjNEUwMQ0KK+S4giA+IGvEg287ICM0RTAyDQor5LiDID4gccSrOyAjNEUwMw0KK+S4hCA+IHNow6BuZzsgIzRFMDQNCivkuIUgPiB4acOgOyAjNEUwNQ0KK+S4hyA+IG3DsjsgIzRFMDcNCivkuIggPiB6aMOgbmc7ICM0RTA4DQor5LiJID4gc8SBbjsgIzRFMDkNCivkuIogPiBzaMOgbmc7ICM0RTBBDQor5LiLID4geGnDoDsgIzRFMEINCivkuIwgPiBqxKs7ICM0RTBDDQor5LiNID4gYsO5OyAjNEUwRA0KK+S4jiA+IHnFrTsgIzRFMEUNCivkuI8gPiBtacSDbjsgIzRFMEYNCivkuJAgPiBnw6BpOyAjNEUxMA0KK+S4kSA+IGNoxY91OyAjNEUxMQ0KK+S4kiA+IGNoxY91OyAjNEUxMg0KK+S4kyA+IHpodcSBbjsgIzRFMTMNCivkuJQgPiBxacSVOyAjNEUxNA0KK+S4lSA+IHDEqzsgIzRFMTUNCivkuJYgPiBzaMOsOyAjNEUxNg0KK+S4lyA+IHNow6w7ICM0RTE3DQor5LiYID4gccSrdTsgIzRFMTgNCivkuJkgPiBixK1uZzsgIzRFMTkNCivkuJogPiB5w6g7ICM0RTFBDQor5LibID4gY8Ozbmc7ICM0RTFCDQor5LicID4gZMWNbmc7ICM0RTFDDQor5LidID4gc8SrOyAjNEUxRA0KK+S4niA+IGNow6luZzsgIzRFMUUNCivkuJ8gPiBkxKt1OyAjNEUxRg0KK+S4oCA+IHHEq3U7ICM0RTIwDQor5LihID4gbGnEg25nOyAjNEUyMQ0KK+S4oiA+IGTEq3U7ICM0RTIyDQor5LijID4gecWPdTsgIzRFMjMNCivkuKQgPiBsacSDbmc7ICM0RTI0DQor5LilID4gecOhbjsgIzRFMjUNCivkuKYgPiBiw6xuZzsgIzRFMjYNCivkuKcgPiBzxIFuZzsgIzRFMjcNCivkuKggPiBnxa1uOyAjNEUyOA0KK+S4qSA+IGrEq3U7ICM0RTI5DQor5LiqID4gZ8OoOyAjNEUyQQ0KK+S4qyA+IHnEgTsgIzRFMkINCivkuKwgPiBxacOhbmc7ICM0RTJDDQor5LitID4gemjFjW5nOyAjNEUyRA0KK+S4riA+IGrErTsgIzRFMkUNCivkuK8gPiBqacOoOyAjNEUyRg0KK+S4sCA+IGbEk25nOyAjNEUzMA0KK+S4sSA+IGd1w6BuOyAjNEUzMQ0KK+S4siA+IGNodcOgbjsgIzRFMzINCivkuLMgPiBjaMSDbjsgIzRFMzMNCivkuLQgPiBsw61uOyAjNEUzNA0KK+S4tSA+IHpoxa1vOyAjNEUzNQ0KK+S4tiA+IHpoxa07ICM0RTM2DQor5Li4ID4gd8OhbjsgIzRFMzgNCivkuLkgPiBkxIFuOyAjNEUzOQ0KK+S4uiA+IHfDqGk7ICM0RTNBDQor5Li7ID4gemjFrTsgIzRFM0INCivkuLwgPiBqxK1uZzsgIzRFM0MNCivkuL0gPiBsw6w7ICM0RTNEDQor5Li+ID4gasWtOyAjNEUzRQ0KK+S4vyA+IHBpxJU7ICM0RTNGDQor5LmAID4gZsO6OyAjNEU0MA0KK+S5gSA+IHnDrTsgIzRFNDENCivkuYIgPiB5w6w7ICM0RTQyDQor5LmDID4gbsSDaTsgIzRFNDMNCivkuYUgPiBqxK11OyAjNEU0NQ0KK+S5hiA+IGrErXU7ICM0RTQ2DQor5LmHID4gemjDqTsgIzRFNDcNCivkuYggPiB5xIFvOyAjNEU0OA0KK+S5iSA+IHnDrDsgIzRFNDkNCivkuYsgPiB6aMSrOyAjNEU0Qg0KK+S5jCA+IHfFqzsgIzRFNEMNCivkuY0gPiB6aMOgOyAjNEU0RA0KK+S5jiA+IGjFqzsgIzRFNEUNCivkuY8gPiBmw6E7ICM0RTRGDQor5LmQID4gbMOoOyAjNEU1MA0KK+S5kSA+IHpow7JuZzsgIzRFNTENCivkuZIgPiBwxKtuZzsgIzRFNTINCivkuZMgPiBwYW5nOyAjNEU1Mw0KK+S5lCA+IHFpw6FvOyAjNEU1NA0KK+S5lSA+IGjFrTsgIzRFNTUNCivkuZYgPiBndcSBaTsgIzRFNTYNCivkuZcgPiBjaMOpbmc7ICM0RTU3DQor5LmYID4gY2jDqW5nOyAjNEU1OA0KK+S5mSA+IHnErTsgIzRFNTkNCivkuZogPiB5xK1uOyAjNEU1QQ0KK+S5nCA+IG1pxJM7ICM0RTVDDQor5LmdID4gasStdTsgIzRFNUQNCivkuZ4gPiBxxK07ICM0RTVFDQor5LmfID4gecSVOyAjNEU1Rg0KK+S5oCA+IHjDrTsgIzRFNjANCivkuaEgPiB4acSBbmc7ICM0RTYxDQor5LmiID4gZ8OgaTsgIzRFNjINCivkuaMgPiBkxKt1OyAjNEU2Mw0KK+S5piA+IHNoxas7ICM0RTY2DQor5LmoID4gc2jErTsgIzRFNjgNCivkuakgPiBqxKs7ICM0RTY5DQor5LmqID4gbsSBbmc7ICM0RTZBDQor5LmrID4gamnEgTsgIzRFNkINCivkua0gPiBzaMOtOyAjNEU2RA0KK+S5sCA+IG3Eg2k7ICM0RTcwDQor5LmxID4gbHXDoG47ICM0RTcxDQor5LmzID4gcsWtOyAjNEU3Mw0KK+S5tCA+IHh1w6k7ICM0RTc0DQor5Lm1ID4gecSDbjsgIzRFNzUNCivkubYgPiBmxa07ICM0RTc2DQor5Lm3ID4gc2jEgTsgIzRFNzcNCivkubggPiBuxIM7ICM0RTc4DQor5Lm5ID4gZ8SBbjsgIzRFNzkNCivkub4gPiBnxIFuOyAjNEU3RQ0KK+S5vyA+IGNow6w7ICM0RTdGDQor5LqAID4gZ8WraTsgIzRFODANCivkuoEgPiBnxIFuOyAjNEU4MQ0KK+S6giA+IGx1w6BuOyAjNEU4Mg0KK+S6gyA+IGzDrW47ICM0RTgzDQor5LqEID4gecOsOyAjNEU4NA0KK+S6hSA+IGp1w6k7ICM0RTg1DQor5LqGID4gbGnEg287ICM0RTg2DQor5LqIID4gecO6OyAjNEU4OA0KK+S6iSA+IHpoxJNuZzsgIzRFODkNCivkuoogPiBzaMOsOyAjNEU4QQ0KK+S6iyA+IHNow6w7ICM0RThCDQor5LqMID4gw6hyOyAjNEU4Qw0KK+S6jSA+IGNow7k7ICM0RThEDQor5LqOID4gecO6OyAjNEU4RQ0KK+S6jyA+IHnDujsgIzRFOEYNCivkupAgPiB5w7o7ICM0RTkwDQor5LqRID4gecO6bjsgIzRFOTENCivkupIgPiBow7k7ICM0RTkyDQor5LqTID4gccOtOyAjNEU5Mw0KK+S6lCA+IHfFrTsgIzRFOTQNCivkupUgPiBqxK1uZzsgIzRFOTUNCivkupYgPiBzw6w7ICM0RTk2DQor5LqXID4gc8O5aTsgIzRFOTcNCivkupggPiBnw6huOyAjNEU5OA0KK+S6mSA+IGfDqG47ICM0RTk5DQor5LqaID4gecOgOyAjNEU5QQ0KK+S6myA+IHhpxJM7ICM0RTlCDQor5LqcID4gecOgOyAjNEU5Qw0KK+S6nSA+IHHDrTsgIzRFOUQNCivkup4gPiB5w6A7ICM0RTlFDQor5LqfID4gasOtOyAjNEU5Rg0KK+S6oCA+IHTDs3U7ICM0RUEwDQor5LqhID4gd8Ohbmc7ICM0RUExDQor5LqiID4ga8Ogbmc7ICM0RUEyDQor5LqjID4gdMOgOyAjNEVBMw0KK+S6pCA+IGppxIFvOyAjNEVBNA0KK+S6pSA+IGjDoGk7ICM0RUE1DQor5LqmID4gecOsOyAjNEVBNg0KK+S6pyA+IGNoxINuOyAjNEVBNw0KK+S6qCA+IGjEk25nOyAjNEVBOA0KK+S6qSA+IG3FrTsgIzRFQTkNCivkuqsgPiB4acSDbmc7ICM0RUFCDQor5LqsID4gasSrbmc7ICM0RUFDDQor5LqtID4gdMOtbmc7ICM0RUFEDQor5LquID4gbGnDoG5nOyAjNEVBRQ0KK+S6ryA+IHhpxINuZzsgIzRFQUYNCivkurAgPiBqxKtuZzsgIzRFQjANCivkurEgPiB5w6g7ICM0RUIxDQor5LqyID4gccSrbjsgIzRFQjINCivkurMgPiBiw7M7ICM0RUIzDQor5Lq0ID4gecOydTsgIzRFQjQNCivkurUgPiB4acOoOyAjNEVCNQ0KK+S6tiA+IGTEg247ICM0RUI2DQor5Lq3ID4gbGnDoW47ICM0RUI3DQor5Lq4ID4gZMWtbzsgIzRFQjgNCivkurkgPiB3xJVpOyAjNEVCOQ0KK+S6uiA+IHLDqW47ICM0RUJBDQor5Lq7ID4gcsOpbjsgIzRFQkINCivkurwgPiBqw607ICM0RUJDDQor5Lq+ID4gd8Ohbmc7ICM0RUJFDQor5Lq/ID4gecOsOyAjNEVCRg0KK+S7gCA+IHNow607ICM0RUMwDQor5LuBID4gcsOpbjsgIzRFQzENCivku4IgPiBsw6g7ICM0RUMyDQor5LuDID4gZMSrbmc7ICM0RUMzDQor5LuEID4gesOoOyAjNEVDNA0KK+S7hSA+IGrErW47ICM0RUM1DQor5LuGID4gcMWrOyAjNEVDNg0KK+S7hyA+IGNow7N1OyAjNEVDNw0KK+S7iCA+IGLEgTsgIzRFQzgNCivku4kgPiB6aMSDbmc7ICM0RUM5DQor5LuKID4gasSrbjsgIzRFQ0ENCivku4sgPiBqacOoOyAjNEVDQg0KK+S7jCA+IGLEq25nOyAjNEVDQw0KK+S7jSA+IHLDqW5nOyAjNEVDRA0KK+S7jiA+IGPDs25nOyAjNEVDRQ0KK+S7jyA+IGbDszsgIzRFQ0YNCivku5AgPiBzxINuOyAjNEVEMA0KK+S7kSA+IGzDum47ICM0RUQxDQor5LuTID4gY8SBbmc7ICM0RUQzDQor5LuUID4gesStOyAjNEVENA0KK+S7lSA+IHNow6w7ICM0RUQ1DQor5LuWID4gdMSBOyAjNEVENg0KK+S7lyA+IHpow6BuZzsgIzRFRDcNCivku5ggPiBmw7k7ICM0RUQ4DQor5LuZID4geGnEgW47ICM0RUQ5DQor5LuaID4geGnEgW47ICM0RURBDQor5LubID4gdMWrbzsgIzRFREINCivku5wgPiBow7NuZzsgIzRFREMNCivku50gPiB0w7NuZzsgIzRFREQNCivku54gPiByw6huOyAjNEVERQ0KK+S7nyA+IHFpxIFuOyAjNEVERg0KK+S7oCA+IGfDoW47ICM0RUUwDQor5LuhID4gecOsOyAjNEVFMQ0KK+S7oiA+IGTDrTsgIzRFRTINCivku6MgPiBkw6BpOyAjNEVFMw0KK+S7pCA+IGzDrG5nOyAjNEVFNA0KK+S7pSA+IHnErTsgIzRFRTUNCivku6YgPiBjaMOgbzsgIzRFRTYNCivku6cgPiBjaMOhbmc7ICM0RUU3DQor5LuoID4gc8SBOyAjNEVFOA0KK+S7qiA+IHnDrTsgIzRFRUENCivku6sgPiBtw7k7ICM0RUVCDQor5LusID4gbWVuOyAjNEVFQw0KK+S7rSA+IHLDqG47ICM0RUVEDQor5LuuID4gamnEgzsgIzRFRUUNCivku68gPiBjaMOgbzsgIzRFRUYNCivku7AgPiB5xINuZzsgIzRFRjANCivku7EgPiBxacOhbjsgIzRFRjENCivku7IgPiB6aMOybmc7ICM0RUYyDQor5LuzID4gcMStOyAjNEVGMw0KK+S7tCA+IHfDoG47ICM0RUY0DQor5Lu1ID4gd8WtOyAjNEVGNQ0KK+S7tiA+IGppw6BuOyAjNEVGNg0KK+S7tyA+IGppw6g7ICM0RUY3DQor5Lu4ID4gecSDbzsgIzRFRjgNCivku7kgPiBmxJNuZzsgIzRFRjkNCivku7ogPiBjxIFuZzsgIzRFRkENCivku7sgPiByw6huOyAjNEVGQg0KK+S7vCA+IHfDoW5nOyAjNEVGQw0KK+S7vSA+IGbDqG47ICM0RUZEDQor5Lu+ID4gZMSrOyAjNEVGRQ0KK+S7vyA+IGbEg25nOyAjNEVGRg0KK+S8gCA+IHpoxY1uZzsgIzRGMDANCivkvIEgPiBxxK07ICM0RjAxDQor5LyCID4gcMOoaTsgIzRGMDINCivkvIMgPiB5w7o7ICM0RjAzDQor5LyEID4gZGnDoG87ICM0RjA0DQor5LyFID4gZMO5bjsgIzRGMDUNCivkvIYgPiB3w6huOyAjNEYwNg0KK+S8hyA+IHnDrDsgIzRGMDcNCivkvIggPiB4xK1uOyAjNEYwOA0KK+S8iSA+IGvDoG5nOyAjNEYwOQ0KK+S8iiA+IHnEqzsgIzRGMEENCivkvIsgPiBqw607ICM0RjBCDQor5LyMID4gw6BpOyAjNEYwQw0KK+S8jSA+IHfFrTsgIzRGMEQNCivkvI4gPiBqw6w7ICM0RjBFDQor5LyPID4gZsO6OyAjNEYwRg0KK+S8kCA+IGbDoTsgIzRGMTANCivkvJEgPiB4xKt1OyAjNEYxMQ0KK+S8kiA+IGrDrG47ICM0RjEyDQor5LyTID4gYsSTaTsgIzRGMTMNCivkvJQgPiBkxINuOyAjNEYxNA0KK+S8lSA+IGbFqzsgIzRGMTUNCivkvJYgPiB0xINuZzsgIzRGMTYNCivkvJcgPiB6aMOybmc7ICM0RjE3DQor5LyYID4gecWNdTsgIzRGMTgNCivkvJkgPiBoxa1vOyAjNEYxOQ0KK+S8miA+IGjDuWk7ICM0RjFBDQor5LybID4gecWtOyAjNEYxQg0KK+S8nCA+IGPDuWk7ICM0RjFDDQor5LydID4gY2h1w6FuOyAjNEYxRA0KK+S8niA+IHPEg247ICM0RjFFDQor5LyfID4gd8SVaTsgIzRGMUYNCivkvKAgPiBjaHXDoW47ICM0RjIwDQor5LyhID4gY2jEkzsgIzRGMjENCivkvKIgPiB5w6E7ICM0RjIyDQor5LyjID4geGnDoG47ICM0RjIzDQor5LykID4gc2jEgW5nOyAjNEYyNA0KK+S8pSA+IGNoxIFuZzsgIzRGMjUNCivkvKYgPiBsw7puOyAjNEYyNg0KK+S8pyA+IGPEgW5nOyAjNEYyNw0KK+S8qCA+IHjDuW47ICM0RjI4DQor5LypID4geMOsbjsgIzRGMjkNCivkvKogPiB3xJVpOyAjNEYyQQ0KK+S8qyA+IHpow7k7ICM0RjJCDQor5LytID4geHXDoW47ICM0RjJEDQor5LyuID4gbsO6OyAjNEYyRQ0KK+S8ryA+IGLDszsgIzRGMkYNCivkvLAgPiBnxas7ICM0RjMwDQor5LyxID4gbsStOyAjNEYzMQ0KK+S8siA+IG7ErTsgIzRGMzINCivkvLMgPiB4acOoOyAjNEYzMw0KK+S8tCA+IGLDoG47ICM0RjM0DQor5Ly1ID4geMO5OyAjNEYzNQ0KK+S8tiA+IGzDrW5nOyAjNEYzNg0KK+S8tyA+IHpow7J1OyAjNEYzNw0KK+S8uCA+IHNoxJNuOyAjNEYzOA0KK+S8uSA+IHHFqzsgIzRGMzkNCivkvLogPiBzw6w7ICM0RjNBDQor5Ly7ID4gYsSTbmc7ICM0RjNCDQor5Ly8ID4gc8OsOyAjNEYzQw0KK+S8vSA+IGppxIE7ICM0RjNEDQor5Ly+ID4gcMSrOyAjNEYzRQ0KK+S8vyA+IHnDrDsgIzRGM0YNCivkvYAgPiBzw6w7ICM0RjQwDQor5L2BID4gxINpOyAjNEY0MQ0KK+S9giA+IHpoxJNuZzsgIzRGNDINCivkvYMgPiBkacOgbjsgIzRGNDMNCivkvYQgPiBow6FuOyAjNEY0NA0KK+S9hSA+IG3DoGk7ICM0RjQ1DQor5L2GID4gZMOgbjsgIzRGNDYNCivkvYcgPiB6aMO5OyAjNEY0Nw0KK+S9iCA+IGLDuTsgIzRGNDgNCivkvYkgPiBxxas7ICM0RjQ5DQor5L2KID4gYsStOyAjNEY0QQ0KK+S9iyA+IHNow6BvOyAjNEY0Qg0KK+S9jCA+IGPErTsgIzRGNEMNCivkvY0gPiB3w6hpOyAjNEY0RA0KK+S9jiA+IGTEqzsgIzRGNEUNCivkvY8gPiB6aMO5OyAjNEY0Rg0KK+S9kCA+IHrFrW87ICM0RjUwDQor5L2RID4gecOydTsgIzRGNTENCivkvZIgPiB5xIFuZzsgIzRGNTINCivkvZMgPiB0xK07ICM0RjUzDQor5L2UID4gemjDoG47ICM0RjU0DQor5L2VID4gaMOpOyAjNEY1NQ0KK+S9liA+IGLDrDsgIzRGNTYNCivkvZcgPiB0xatvOyAjNEY1Nw0KK+S9mCA+IHNow6k7ICM0RjU4DQor5L2ZID4gecO6OyAjNEY1OQ0KK+S9miA+IHnDrDsgIzRGNUENCivkvZsgPiBmw7M7ICM0RjVCDQor5L2cID4gesO5bzsgIzRGNUMNCivkvZ0gPiBrw7J1OyAjNEY1RA0KK+S9niA+IG7DrG5nOyAjNEY1RQ0KK+S9nyA+IHTDs25nOyAjNEY1Rg0KK+S9oCA+IG7ErTsgIzRGNjANCivkvaEgPiB4dcSBbjsgIzRGNjENCivkvaIgPiBxw7o7ICM0RjYyDQor5L2jID4gecOybmc7ICM0RjYzDQor5L2kID4gd8SDOyAjNEY2NA0KK+S9pSA+IHFpxIFuOyAjNEY2NQ0KK+S9pyA+IGvEgzsgIzRGNjcNCivkvakgPiBww6hpOyAjNEY2OQ0KK+S9qiA+IGh1w6FpOyAjNEY2QQ0KK+S9qyA+IGjDqDsgIzRGNkINCivkvawgPiBsxINvOyAjNEY2Qw0KK+S9rSA+IHhpw6FuZzsgIzRGNkQNCivkva4gPiBnw6k7ICM0RjZFDQor5L2vID4gecOhbmc7ICM0RjZGDQor5L2wID4gYsSDaTsgIzRGNzANCivkvbEgPiBmxIM7ICM0RjcxDQor5L2yID4gbcOtbmc7ICM0RjcyDQor5L2zID4gamlhOyAjNEY3Mw0KK+S9tCA+IMOocjsgIzRGNzQNCivkvbUgPiBiw6xuZzsgIzRGNzUNCivkvbYgPiBqw607ICM0Rjc2DQor5L23ID4gaMSVbjsgIzRGNzcNCivkvbggPiBow7pvOyAjNEY3OA0KK+S9uSA+IGfFrWk7ICM0Rjc5DQor5L26ID4gcXXDoW47ICM0RjdBDQor5L27ID4gdGnEgW87ICM0RjdCDQor5L28ID4gamnEg287ICM0RjdDDQor5L29ID4gY8OsOyAjNEY3RA0KK+S9viA+IHnDrDsgIzRGN0UNCivkvb8gPiBzaMStOyAjNEY3Rg0KK+S+gCA+IHjDrW5nOyAjNEY4MA0KK+S+gSA+IHNoxJNuOyAjNEY4MQ0KK+S+giA+IHTFq287ICM0RjgyDQor5L6DID4ga8SDbjsgIzRGODMNCivkvoQgPiB6aMOtOyAjNEY4NA0KK+S+hSA+IGfEgWk7ICM0Rjg1DQor5L6GID4gbMOhaTsgIzRGODYNCivkvocgPiB5w607ICM0Rjg3DQor5L6IID4gY2jErTsgIzRGODgNCivkvokgPiBrdcSBOyAjNEY4OQ0KK+S+iiA+IGd1xIFuZzsgIzRGOEENCivkvosgPiBsw6w7ICM0RjhCDQor5L6MID4gecSrbjsgIzRGOEMNCivkvo0gPiBzaMOsOyAjNEY4RA0KK+S+jiA+IG3ErTsgIzRGOEUNCivkvo8gPiB6aMWrOyAjNEY4Rg0KK+S+kCA+IHjDuTsgIzRGOTANCivkvpEgPiB5w7J1OyAjNEY5MQ0KK+S+kiA+IMSBbjsgIzRGOTINCivkvpMgPiBsw7k7ICM0RjkzDQor5L6UID4gbcOzdTsgIzRGOTQNCivkvpUgPiDDqXI7ICM0Rjk1DQor5L6WID4gbMO6bjsgIzRGOTYNCivkvpcgPiB0w7NuZzsgIzRGOTcNCivkvpggPiBjaMOgOyAjNEY5OA0KK+S+mSA+IGNow6w7ICM0Rjk5DQor5L6aID4geMO5bjsgIzRGOUENCivkvpsgPiBnxY1uZzsgIzRGOUINCivkvpwgPiB6aMWNdTsgIzRGOUMNCivkvp0gPiB5xKs7ICM0RjlEDQor5L6eID4gcsWtOyAjNEY5RQ0KK+S+nyA+IGppw6BuOyAjNEY5Rg0KK+S+oCA+IHhpw6E7ICM0RkEwDQor5L6hID4gamnDoDsgIzRGQTENCivkvqIgPiB6w6BpOyAjNEZBMg0KK+S+oyA+IGzHmjsgIzRGQTMNCivkvqUgPiBqacSDbzsgIzRGQTUNCivkvqYgPiB6aMSTbjsgIzRGQTYNCivkvqcgPiBjw6g7ICM0RkE3DQor5L6oID4gcWnDoW87ICM0RkE4DQor5L6pID4ga3XDoGk7ICM0RkE5DQor5L6qID4gY2jDoWk7ICM0RkFBDQor5L6rID4gbsOsbmc7ICM0RkFCDQor5L6sID4gbsOzbmc7ICM0RkFDDQor5L6tID4gasStbjsgIzRGQUQNCivkvq4gPiB3xa07ICM0RkFFDQor5L6vID4gaMOzdTsgIzRGQUYNCivkvrAgPiBqxK1vbmc7ICM0RkIwDQor5L6xID4gY2jElW5nOyAjNEZCMQ0KK+S+siA+IHpow6huOyAjNEZCMg0KK+S+syA+IHrDuW87ICM0RkIzDQor5L60ID4gY2jFj3U7ICM0RkI0DQor5L61ID4gccSrbjsgIzRGQjUNCivkvrYgPiBsx5o7ICM0RkI2DQor5L63ID4gasO6OyAjNEZCNw0KK+S+uCA+IHNow7k7ICM0RkI4DQor5L65ID4gdMStbmc7ICM0RkI5DQor5L66ID4gc2jDqG47ICM0RkJBDQor5L67ID4gdMWrbzsgIzRGQkINCivkvrwgPiBiw7M7ICM0RkJDDQor5L69ID4gbsOhbjsgIzRGQkQNCivkvr4gPiBoxIFvOyAjNEZCRQ0KK+S+vyA+IGJpw6BuOyAjNEZCRg0KK+S/gCA+IHTFrWk7ICM0RkMwDQor5L+BID4gecWtOyAjNEZDMQ0KK+S/giA+IHjDrDsgIzRGQzINCivkv4MgPiBjw7k7ICM0RkMzDQor5L+EID4gw6k7ICM0RkM0DQor5L+FID4gccOtdTsgIzRGQzUNCivkv4YgPiB4w7o7ICM0RkM2DQor5L+HID4ga3XEg25nOyAjNEZDNw0KK+S/iCA+IGvDuTsgIzRGQzgNCivkv4kgPiB3w7k7ICM0RkM5DQor5L+KID4gasO5bjsgIzRGQ0ENCivkv4sgPiB5w6w7ICM0RkNCDQor5L+MID4gZsWtOyAjNEZDQw0KK+S/jSA+IGzDoW5nOyAjNEZDRA0KK+S/jiA+IHrFrTsgIzRGQ0UNCivkv48gPiBxacOgbzsgIzRGQ0YNCivkv5AgPiBsw6w7ICM0RkQwDQor5L+RID4gecWPbmc7ICM0RkQxDQor5L+SID4gaMO5bjsgIzRGRDINCivkv5MgPiBqw6xuZzsgIzRGRDMNCivkv5QgPiB4acOgbjsgIzRGRDQNCivkv5UgPiBzw6BuOyAjNEZENQ0KK+S/liA+IHDEg2k7ICM0RkQ2DQor5L+XID4gc8O6OyAjNEZENw0KK+S/mCA+IGbDujsgIzRGRDgNCivkv5kgPiB4xKs7ICM0RkQ5DQor5L+aID4gbMStOyAjNEZEQQ0KK+S/myA+IGbFrTsgIzRGREINCivkv5wgPiBwxKtuZzsgIzRGREMNCivkv50gPiBixINvOyAjNEZERA0KK+S/niA+IHnDujsgIzRGREUNCivkv58gPiBzw6w7ICM0RkRGDQor5L+gID4geGnDoTsgIzRGRTANCivkv6EgPiB4w6xuOyAjNEZFMQ0KK+S/oiA+IHjEq3U7ICM0RkUyDQor5L+jID4gecWtOyAjNEZFMw0KK+S/pCA+IHTDrDsgIzRGRTQNCivkv6UgPiBjaMSTOyAjNEZFNQ0KK+S/piA+IGNow7N1OyAjNEZFNg0KK+S/qCA+IHnEg247ICM0RkU4DQor5L+pID4gbGnEgzsgIzRGRTkNCivkv6ogPiBsw6w7ICM0RkVBDQor5L+rID4gbMOhaTsgIzRGRUINCivkv60gPiBqacSDbjsgIzRGRUQNCivkv64gPiB4xKt1OyAjNEZFRQ0KK+S/ryA+IGbFrTsgIzRGRUYNCivkv7AgPiBow6g7ICM0RkYwDQor5L+xID4gasO5OyAjNEZGMQ0KK+S/siA+IHhpw6BvOyAjNEZGMg0KK+S/syA+IHDDoWk7ICM0RkYzDQor5L+0ID4gamnDoG47ICM0RkY0DQor5L+1ID4gYmnDoG87ICM0RkY1DQor5L+2ID4gY2jDuTsgIzRGRjYNCivkv7cgPiBmw6hpOyAjNEZGNw0KK+S/uCA+IGbDqG5nOyAjNEZGOA0KK+S/uSA+IHnDoDsgIzRGRjkNCivkv7ogPiDEg247ICM0RkZBDQor5L+7ID4gYsOoaTsgIzRGRkINCivkv7wgPiB5w7k7ICM0RkZDDQor5L+9ID4geMSrbjsgIzRGRkQNCivkv74gPiBixK07ICM0RkZFDQor5L+/ID4gamnDoG47ICM0RkZGDQor5YCAID4gY2jEgW5nOyAjNTAwMA0KK+WAgSA+IGNow607ICM1MDAxDQor5YCCID4gYsOsbmc7ICM1MDAyDQor5YCDID4gesOhbjsgIzUwMDMNCivlgIQgPiB5w6FvOyAjNTAwNA0KK+WAhSA+IGPDuWk7ICM1MDA1DQor5YCGID4gbGnEgzsgIzUwMDYNCivlgIcgPiB3xINuOyAjNTAwNw0KK+WAiCA+IGzDoWk7ICM1MDA4DQor5YCJID4gY8SBbmc7ICM1MDA5DQor5YCKID4gesOybmc7ICM1MDBBDQor5YCLID4gZ8OoOyAjNTAwQg0KK+WAjCA+IGd1xIFuOyAjNTAwQw0KK+WAjSA+IGLDqGk7ICM1MDBEDQor5YCOID4gdGnEgW47ICM1MDBFDQor5YCPID4gc2jFqzsgIzUwMEYNCivlgJAgPiBzaMWrOyAjNTAxMA0KK+WAkSA+IG1lbjsgIzUwMTENCivlgJIgPiBkxINvOyAjNTAxMg0KK+WAkyA+IHTDoW47ICM1MDEzDQor5YCUID4ganXDqTsgIzUwMTQNCivlgJUgPiBjaMO6aTsgIzUwMTUNCivlgJYgPiB4w6xuZzsgIzUwMTYNCivlgJcgPiBww6luZzsgIzUwMTcNCivlgJggPiB0xINuZzsgIzUwMTgNCivlgJkgPiBow7J1OyAjNTAxOQ0KK+WAmiA+IHnErTsgIzUwMUENCivlgJsgPiBxxKs7ICM1MDFCDQor5YCcID4gdMOsOyAjNTAxQw0KK+WAnSA+IGfDoG47ICM1MDFEDQor5YCeID4gasOsbmc7ICM1MDFFDQor5YCfID4gamnDqDsgIzUwMUYNCivlgKAgPiBzxatpOyAjNTAyMA0KK+WAoSA+IGNow6BuZzsgIzUwMjENCivlgKIgPiBqacOpOyAjNTAyMg0KK+WAoyA+IGbEg25nOyAjNTAyMw0KK+WApCA+IHpow607ICM1MDI0DQor5YClID4ga8WNbmc7ICM1MDI1DQor5YCmID4ganXDoG47ICM1MDI2DQor5YCnID4gesWNbmc7ICM1MDI3DQor5YCoID4gasO5OyAjNTAyOA0KK+WAqSA+IHFpw6BuOyAjNTAyOQ0KK+WAqiA+IG7DrTsgIzUwMkENCivlgKsgPiBsw7puOyAjNTAyQg0KK+WArCA+IHpoxatvOyAjNTAyQw0KK+WArSA+IHfEk2k7ICM1MDJEDQor5YCuID4gbMWtbzsgIzUwMkUNCivlgK8gPiBzxY1uZzsgIzUwMkYNCivlgLAgPiBsw6luZzsgIzUwMzANCivlgLEgPiBow7luOyAjNTAzMQ0KK+WAsiA+IGTFjW5nOyAjNTAzMg0KK+WAsyA+IHrDrDsgIzUwMzMNCivlgLQgPiBiw6huOyAjNTAzNA0KK+WAtSA+IHfFrTsgIzUwMzUNCivlgLYgPiBqw7k7ICM1MDM2DQor5YC3ID4gbsOgaTsgIzUwMzcNCivlgLggPiBjxINpOyAjNTAzOA0KK+WAuSA+IGppxINuOyAjNTAzOQ0KK+WAuiA+IHpow6BpOyAjNTAzQQ0KK+WAuyA+IHnEkzsgIzUwM0INCivlgLwgPiB6aMOtOyAjNTAzQw0KK+WAvSA+IHNow6A7ICM1MDNEDQor5YC+ID4gccSrbmc7ICM1MDNFDQor5YGAID4gecSrbmc7ICM1MDQwDQor5YGBID4gY2jEk25nOyAjNTA0MQ0KK+WBgiA+IGppxIFuOyAjNTA0Mg0KK+WBgyA+IHnEg247ICM1MDQzDQor5YGEID4gbnXDoG47ICM1MDQ0DQor5YGFID4gemjDsm5nOyAjNTA0NQ0KK+WBhiA+IGNoxa1uOyAjNTA0Ng0KK+WBhyA+IGppxIM7ICM1MDQ3DQor5YGIID4gamnDqTsgIzUwNDgNCivlgYkgPiB3xJVpOyAjNTA0OQ0KK+WBiiA+IHnFrTsgIzUwNEENCivlgYsgPiBixK1uZzsgIzUwNEINCivlgYwgPiByw7lvOyAjNTA0Qw0KK+WBjSA+IHTDrTsgIzUwNEQNCivlgY4gPiB3xJNpOyAjNTA0RQ0KK+WBjyA+IHBpxIFuOyAjNTA0Rg0KK+WBkCA+IHnDoG47ICM1MDUwDQor5YGRID4gZsSTbmc7ICM1MDUxDQor5YGSID4gdMSDbmc7ICM1MDUyDQor5YGTID4gd8OyOyAjNTA1Mw0KK+WBlCA+IMOoOyAjNTA1NA0KK+WBlSA+IHhpw6k7ICM1MDU1DQor5YGWID4gY2jElTsgIzUwNTYNCivlgZcgPiBzaMSVbmc7ICM1MDU3DQor5YGYID4ga8SDbjsgIzUwNTgNCivlgZkgPiBkw6w7ICM1MDU5DQor5YGaID4gesO5bzsgIzUwNUENCivlgZsgPiBjaMSBOyAjNTA1Qg0KK+WBnCA+IHTDrW5nOyAjNTA1Qw0KK+WBnSA+IGLDqGk7ICM1MDVEDQor5YGeID4gecOoOyAjNTA1RQ0KK+WBnyA+IGh1w6FuZzsgIzUwNUYNCivlgaAgPiB5xINvOyAjNTA2MA0KK+WBoSA+IHpow6BuOyAjNTA2MQ0KK+WBoiA+IGNoxY91OyAjNTA2Mg0KK+WBoyA+IHnEgW47ICM1MDYzDQor5YGkID4gecWPdTsgIzUwNjQNCivlgaUgPiBqacOgbjsgIzUwNjUNCivlgaYgPiB4xas7ICM1MDY2DQor5YGnID4gemjEgTsgIzUwNjcNCivlgaggPiBjxKs7ICM1MDY4DQor5YGpID4gZsO5OyAjNTA2OQ0KK+WBqiA+IGLEqzsgIzUwNkENCivlgasgPiB6aMOsOyAjNTA2Qg0KK+WBrCA+IHrFj25nOyAjNTA2Qw0KK+WBrSA+IG1pxINuOyAjNTA2RA0KK+WBriA+IGrDrTsgIzUwNkUNCivlga8gPiB5xK07ICM1MDZGDQor5YGwID4geGnDqDsgIzUwNzANCivlgbEgPiB4w7puOyAjNTA3MQ0KK+WBsiA+IHPEqzsgIzUwNzINCivlgbMgPiBkdcSBbjsgIzUwNzMNCivlgbQgPiBjw6g7ICM1MDc0DQor5YG1ID4gemjEk247ICM1MDc1DQor5YG2ID4gxY91OyAjNTA3Ng0KK+WBtyA+IHTFjXU7ICM1MDc3DQor5YG4ID4gdMWNdTsgIzUwNzgNCivlgbkgPiBiw6hpOyAjNTA3OQ0KK+WBuiA+IHrDoTsgIzUwN0ENCivlgbsgPiBsx5o7ICM1MDdCDQor5YG8ID4gamnDqTsgIzUwN0MNCivlgb0gPiB3xJVpOyAjNTA3RA0KK+WBviA+IGbDqG47ICM1MDdFDQor5YG/ID4gY2jDoW5nOyAjNTA3Rg0KK+WCgCA+IGfFq2k7ICM1MDgwDQor5YKBID4gc8WPdTsgIzUwODENCivlgoIgPiB6aMOsOyAjNTA4Mg0KK+WCgyA+IHPDuTsgIzUwODMNCivlgoQgPiB4acSBOyAjNTA4NA0KK+WChSA+IGbDuTsgIzUwODUNCivlgoYgPiB5dcOgbjsgIzUwODYNCivlgocgPiByxY9uZzsgIzUwODcNCivlgoggPiBsw6w7ICM1MDg4DQor5YKJID4gcsO5OyAjNTA4OQ0KK+WCiiA+IHnFrW47ICM1MDhBDQor5YKLID4gZ8OydTsgIzUwOEINCivlgowgPiBtw6A7ICM1MDhDDQor5YKNID4gYsOgbmc7ICM1MDhEDQor5YKOID4gZGnEgW47ICM1MDhFDQor5YKPID4gdMOhbmc7ICM1MDhGDQor5YKQID4gaMOgbzsgIzUwOTANCivlgpEgPiBqacOpOyAjNTA5MQ0KK+WCkiA+IHjEqzsgIzUwOTINCivlgpMgPiBzaMOgbjsgIzUwOTMNCivlgpQgPiBxacOgbjsgIzUwOTQNCivlgpUgPiBqdcOpOyAjNTA5NQ0KK+WCliA+IGPEgW5nOyAjNTA5Ng0KK+WClyA+IGNow7k7ICM1MDk3DQor5YKYID4gc8SDbjsgIzUwOTgNCivlgpkgPiBiw6hpOyAjNTA5OQ0KK+WCmiA+IHhpw6BvOyAjNTA5QQ0KK+WCmyA+IHnFj25nOyAjNTA5Qg0KK+WCnCA+IHnDoW87ICM1MDlDDQor5YKdID4gdMOgbjsgIzUwOUQNCivlgp4gPiBzxatvOyAjNTA5RQ0KK+WCnyA+IHnEg25nOyAjNTA5Rg0KK+WCoCA+IGbEgTsgIzUwQTANCivlgqEgPiBiw6xuZzsgIzUwQTENCivlgqIgPiBqacSBOyAjNTBBMg0KK+WCoyA+IGTEg2k7ICM1MEEzDQor5YKkID4gesOgaTsgIzUwQTQNCivlgqUgPiB0xINuZzsgIzUwQTUNCivlgqcgPiBiw6xuOyAjNTBBNw0KK+WCqCA+IGNoxa07ICM1MEE4DQor5YKpID4gbsO6bzsgIzUwQTkNCivlgqogPiBjxIFuOyAjNTBBQQ0KK+WCqyA+IGzElWk7ICM1MEFCDQor5YKsID4gY8WraTsgIzUwQUMNCivlgq0gPiB5xY1uZzsgIzUwQUQNCivlgq4gPiB6xIFvOyAjNTBBRQ0KK+WCryA+IHrFj25nOyAjNTBBRg0KK+WCsCA+IHDDqW5nOyAjNTBCMA0KK+WCsSA+IHPFj25nOyAjNTBCMQ0KK+WCsiA+IMOgbzsgIzUwQjINCivlgrMgPiBjaHXDoW47ICM1MEIzDQor5YK0ID4gecWtOyAjNTBCNA0KK+WCtSA+IHpow6BpOyAjNTBCNQ0KK+WCtiA+IGPDsnU7ICM1MEI2DQor5YK3ID4gc2jEgW5nOyAjNTBCNw0KK+WCuCA+IHFpxINuZzsgIzUwQjgNCivlgrkgPiBqw6xuZzsgIzUwQjkNCivlgrogPiBjaMOsOyAjNTBCQQ0KK+WCuyA+IHNoxIM7ICM1MEJCDQor5YK8ID4gaMOgbjsgIzUwQkMNCivlgr0gPiB6aMSBbmc7ICM1MEJEDQor5YK+ID4gccSrbmc7ICM1MEJFDQor5YK/ID4gecOgbjsgIzUwQkYNCivlg4AgPiBkw6w7ICM1MEMwDQor5YOBID4geMSrOyAjNTBDMQ0KK+WDgiA+IGzHmjsgIzUwQzINCivlg4MgPiBiw6hpOyAjNTBDMw0KK+WDhCA+IHBpw6BvOyAjNTBDNA0KK+WDhSA+IGrErW47ICM1MEM1DQor5YOGID4gbGnDoW47ICM1MEM2DQor5YOHID4gbMO5OyAjNTBDNw0KK+WDiCA+IG3DoG47ICM1MEM4DQor5YOJID4gcWnEgW47ICM1MEM5DQor5YOKID4geGnEgW47ICM1MENBDQor5YOLID4gdMOgbjsgIzUwQ0INCivlg4wgPiB5w61uZzsgIzUwQ0MNCivlg40gPiBkw7JuZzsgIzUwQ0QNCivlg44gPiB6aHXDoG47ICM1MENFDQor5YOPID4geGnDoG5nOyAjNTBDRg0KK+WDkCA+IHNow6BuOyAjNTBEMA0KK+WDkSA+IHFpw6FvOyAjNTBEMQ0KK+WDkiA+IGrErW9uZzsgIzUwRDINCivlg5MgPiB0xa1pOyAjNTBEMw0KK+WDlCA+IHrFrW47ICM1MEQ0DQor5YOVID4gcMO6OyAjNTBENQ0KK+WDliA+IHjEqzsgIzUwRDYNCivlg5cgPiBsw6FvOyAjNTBENw0KK+WDmCA+IGNoxINuZzsgIzUwRDgNCivlg5kgPiBndcSBbmc7ICM1MEQ5DQor5YOaID4gbGnDoW87ICM1MERBDQor5YObID4gccSrOyAjNTBEQg0KK+WDnCA+IGTDqG5nOyAjNTBEQw0KK+WDnSA+IGNow6FuOyAjNTBERA0KK+WDniA+IHfElWk7ICM1MERFDQor5YOfID4gasSrOyAjNTBERg0KK+WDoCA+IGbEgW47ICM1MEUwDQor5YOhID4gaMO5aTsgIzUwRTENCivlg6IgPiBjaHXEg247ICM1MEUyDQor5YOjID4gamnDoG47ICM1MEUzDQor5YOkID4gZMOgbjsgIzUwRTQNCivlg6UgPiBqacSDbzsgIzUwRTUNCivlg6YgPiBqw6x1OyAjNTBFNg0KK+WDpyA+IHPEk25nOyAjNTBFNw0KK+WDqCA+IGbDqG47ICM1MEU4DQor5YOpID4geGnDoG47ICM1MEU5DQor5YOqID4ganXDqTsgIzUwRUENCivlg6sgPiDDqDsgIzUwRUINCivlg6wgPiBqacSBbzsgIzUwRUMNCivlg60gPiBqacOgbjsgIzUwRUQNCivlg64gPiB0w7NuZzsgIzUwRUUNCivlg68gPiBsxK1uOyAjNTBFRg0KK+WDsCA+IGLDszsgIzUwRjANCivlg7EgPiBnw7k7ICM1MEYxDQor5YOzID4gc8O5OyAjNTBGMw0KK+WDtCA+IHhpw6BuOyAjNTBGNA0KK+WDtSA+IGppxIFuZzsgIzUwRjUNCivlg7YgPiBtxK1uOyAjNTBGNg0KK+WDtyA+IHnDqDsgIzUwRjcNCivlg7ggPiBqw6xuOyAjNTBGOA0KK+WDuSA+IGppw6A7ICM1MEY5DQor5YO6ID4gcWnDoG87ICM1MEZBDQor5YO7ID4gcMOsOyAjNTBGQg0KK+WDvCA+IGbEk25nOyAjNTBGQw0KK+WDvSA+IHpow7J1OyAjNTBGRA0KK+WDviA+IMOgaTsgIzUwRkUNCivlg78gPiBzw6BpOyAjNTBGRg0KK+WEgCA+IHnDrTsgIzUxMDANCivlhIEgPiBqw7luOyAjNTEwMQ0KK+WEgiA+IG7Ds25nOyAjNTEwMg0KK+WEgyA+IGNow6FuOyAjNTEwMw0KK+WEhCA+IHnDrDsgIzUxMDQNCivlhIUgPiBkxIFuZzsgIzUxMDUNCivlhIYgPiBqxK1uZzsgIzUxMDYNCivlhIcgPiB4dcSBbjsgIzUxMDcNCivlhIggPiBrdcOgaTsgIzUxMDgNCivlhIkgPiBqacSDbjsgIzUxMDkNCivlhIogPiBjaMO5OyAjNTEwQQ0KK+WEiyA+IGTEgW47ICM1MTBCDQor5YSMID4gamnEg287ICM1MTBDDQor5YSNID4gc2jEgzsgIzUxMEQNCivlhI4gPiB6w6BpOyAjNTEwRQ0KK+WEkCA+IGLDrG47ICM1MTEwDQor5YSRID4gw6BuOyAjNTExMQ0KK+WEkiA+IHLDujsgIzUxMTINCivlhJMgPiB0w6FpOyAjNTExMw0KK+WElCA+IGNow7N1OyAjNTExNA0KK+WElSA+IGNow6FpOyAjNTExNQ0KK+WEliA+IGzDoW47ICM1MTE2DQor5YSXID4gbsStOyAjNTExNw0KK+WEmCA+IGrErW47ICM1MTE4DQor5YSZID4gcWnDoG47ICM1MTE5DQor5YSaID4gbcOpbmc7ICM1MTFBDQor5YSbID4gd8WtOyAjNTExQg0KK+WEnCA+IG7DrW5nOyAjNTExQw0KK+WEnSA+IHHDrW9uZzsgIzUxMUQNCivlhJ4gPiBuxK07ICM1MTFFDQor5YSfID4gY2jDoW5nOyAjNTExRg0KK+WEoCA+IGxpw6g7ICM1MTIwDQor5YShID4gbMSVaTsgIzUxMjENCivlhKIgPiBsx5o7ICM1MTIyDQor5YSjID4ga3XDoG5nOyAjNTEyMw0KK+WEpCA+IGLDoG87ICM1MTI0DQor5YSlID4gZMO6OyAjNTEyNQ0KK+WEpiA+IGJpxIFvOyAjNTEyNg0KK+WEpyA+IHrEg247ICM1MTI3DQor5YSoID4gemjDrTsgIzUxMjgNCivlhKkgPiBzw6w7ICM1MTI5DQor5YSqID4gecWNdTsgIzUxMkENCivlhKsgPiBow6FvOyAjNTEyQg0KK+WErCA+IGNow6huOyAjNTEyQw0KK+WErSA+IGNow6huOyAjNTEyRA0KK+WEriA+IGzDrDsgIzUxMkUNCivlhK8gPiB0w6luZzsgIzUxMkYNCivlhLAgPiB3xJVpOyAjNTEzMA0KK+WEsSA+IGzFj25nOyAjNTEzMQ0KK+WEsiA+IGNoxa07ICM1MTMyDQor5YSzID4gY2jDoG47ICM1MTMzDQor5YS0ID4gcsOhbmc7ICM1MTM0DQor5YS1ID4gc2jFqzsgIzUxMzUNCivlhLYgPiBow7lpOyAjNTEzNg0KK+WEtyA+IGzDrDsgIzUxMzcNCivlhLggPiBsw7pvOyAjNTEzOA0KK+WEuSA+IHrEg247ICM1MTM5DQor5YS6ID4gbsO6bzsgIzUxM0ENCivlhLsgPiB0xINuZzsgIzUxM0INCivlhLwgPiB5xINuOyAjNTEzQw0KK+WEvSA+IGzElWk7ICM1MTNEDQor5YS+ID4gbsOgbmc7ICM1MTNFDQor5YS/ID4gw6lyOyAjNTEzRg0KK+WFgCA+IHfDuTsgIzUxNDANCivlhYEgPiB5xa1uOyAjNTE0MQ0KK+WFgiA+IHrEgW47ICM1MTQyDQor5YWDID4geXXDoW47ICM1MTQzDQor5YWEID4geMSrb25nOyAjNTE0NA0KK+WFhSA+IGNoxY1uZzsgIzUxNDUNCivlhYYgPiB6aMOgbzsgIzUxNDYNCivlhYcgPiB4xKtvbmc7ICM1MTQ3DQor5YWIID4geGnEgW47ICM1MTQ4DQor5YWJID4gZ3XEgW5nOyAjNTE0OQ0KK+WFiiA+IGTDuWk7ICM1MTRBDQor5YWLID4ga8OoOyAjNTE0Qg0KK+WFjCA+IGTDuWk7ICM1MTRDDQor5YWNID4gbWnEg247ICM1MTREDQor5YWOID4gdMO5OyAjNTE0RQ0KK+WFjyA+IGNow6FuZzsgIzUxNEYNCivlhZAgPiDDqXI7ICM1MTUwDQor5YWRID4gZMO5aTsgIzUxNTENCivlhZIgPiDDqXI7ICM1MTUyDQor5YWTID4geMSrbjsgIzUxNTMNCivlhZQgPiB0w7k7ICM1MTU0DQor5YWVID4gc8OsOyAjNTE1NQ0KK+WFliA+IHnEg247ICM1MTU2DQor5YWXID4gecSDbjsgIzUxNTcNCivlhZggPiBzaMStOyAjNTE1OA0KK+WFmSA+IHNow60nICdrw6g7ICM1MTU5DQor5YWaID4gZMSDbmc7ICM1MTVBDQor5YWbID4gcWnEgW47ICM1MTVCDQor5YWcID4gZMWNdTsgIzUxNUMNCivlhZ0gPiBmxJNuOyAjNTE1RA0KK+WFniA+IG3DoW87ICM1MTVFDQor5YWfID4gc2jEk247ICM1MTVGDQor5YWgID4gZMWNdTsgIzUxNjANCivlhaEgPiBixINpJyAna8OoOyAjNTE2MQ0KK+WFoiA+IGrEq25nOyAjNTE2Mg0KK+WFoyA+IGzErTsgIzUxNjMNCivlhaQgPiBodcOhbmc7ICM1MTY0DQor5YWlID4gcsO5OyAjNTE2NQ0KK+WFpiA+IHfDoW5nOyAjNTE2Ng0KK+WFpyA+IG7DqGk7ICM1MTY3DQor5YWoID4gcXXDoW47ICM1MTY4DQor5YWpID4gbGnEg25nOyAjNTE2OQ0KK+WFqiA+IHnDujsgIzUxNkENCivlhasgPiBixIE7ICM1MTZCDQor5YWsID4gZ8WNbmc7ICM1MTZDDQor5YWtID4gbMOsdTsgIzUxNkQNCivlha4gPiB4xKs7ICM1MTZFDQor5YWwID4gbMOhbjsgIzUxNzANCivlhbEgPiBnw7JuZzsgIzUxNzENCivlhbIgPiB0acSBbjsgIzUxNzINCivlhbMgPiBndcSBbjsgIzUxNzMNCivlhbQgPiB4xKtuZzsgIzUxNzQNCivlhbUgPiBixKtuZzsgIzUxNzUNCivlhbYgPiBxw607ICM1MTc2DQor5YW3ID4gasO5OyAjNTE3Nw0KK+WFuCA+IGRpxINuOyAjNTE3OA0KK+WFuSA+IHrEqzsgIzUxNzkNCivlhbsgPiB5xINuZzsgIzUxN0INCivlhbwgPiBqacSBbjsgIzUxN0MNCivlhb0gPiBzaMOydTsgIzUxN0QNCivlhb4gPiBqw6w7ICM1MTdFDQor5YW/ID4gecOsOyAjNTE3Rg0KK+WGgCA+IGrDrDsgIzUxODANCivlhoEgPiBjaMSDbjsgIzUxODENCivlhoIgPiBqxKtvbmc7ICM1MTgyDQor5YaDID4gbWFvOyAjNTE4Mw0KK+WGhCA+IHLEg247ICM1MTg0DQor5YaFID4gbsOoaTsgIzUxODUNCivlhoYgPiB5dWFuOyAjNTE4Ng0KK+WGhyA+IG3Eg287ICM1MTg3DQor5YaIID4gZ8SBbmc7ICM1MTg4DQor5YaJID4gcsSDbjsgIzUxODkNCivlhoogPiBjw6g7ICM1MThBDQor5YaLID4gasSrb25nOyAjNTE4Qg0KK+WGjCA+IGPDqDsgIzUxOEMNCivlho0gPiB6w6BpOyAjNTE4RA0KK+WGjiA+IGd1xIM7ICM1MThFDQor5YaPID4gasStb25nOyAjNTE4Rg0KK+WGkCA+IG3DoG87ICM1MTkwDQor5YaRID4gemjDsnU7ICM1MTkxDQor5YaSID4gbcOydTsgIzUxOTINCivlhpMgPiBnw7J1OyAjNTE5Mw0KK+WGlCA+IHjFrTsgIzUxOTQNCivlhpUgPiBtacSDbjsgIzUxOTUNCivlhpYgPiBtw6w7ICM1MTk2DQor5YaXID4gcsWPbmc7ICM1MTk3DQor5YaYID4gecOtbjsgIzUxOTgNCivlhpkgPiB4acSVOyAjNTE5OQ0KK+WGmiA+IGvEg247ICM1MTlBDQor5YabID4gasWrbjsgIzUxOUINCivlhpwgPiBuw7NuZzsgIzUxOUMNCivlhp0gPiB5w607ICM1MTlEDQor5YaeID4gbcOtOyAjNTE5RQ0KK+WGnyA+IHNow6w7ICM1MTlGDQor5YagID4gZ3XEgW47ICM1MUEwDQor5YahID4gbcOpbmc7ICM1MUExDQor5YaiID4gemjFj25nOyAjNTFBMg0KK+WGoyA+IGrDuTsgIzUxQTMNCivlhqQgPiB5dcSBbjsgIzUxQTQNCivlhqUgPiBtw61uZzsgIzUxQTUNCivlhqYgPiBrw7J1OyAjNTFBNg0KK+WGqCA+IGbDuTsgIzUxQTgNCivlhqkgPiB4acSVOyAjNTFBOQ0KK+WGqiA+IG3DrDsgIzUxQUENCivlhqsgPiBixKtuZzsgIzUxQUINCivlhqwgPiBkxY1uZzsgIzUxQUMNCivlhq0gPiB0w6FpOyAjNTFBRA0KK+WGriA+IGfEgW5nOyAjNTFBRQ0KK+WGryA+IGbDqW5nOyAjNTFBRg0KK+WGsCA+IGLEq25nOyAjNTFCMA0KK+WGsSA+IGjDuTsgIzUxQjENCivlhrIgPiBjaMWNbmc7ICM1MUIyDQor5YazID4ganXDqTsgIzUxQjMNCivlhrQgPiBow7k7ICM1MUI0DQor5Ya1ID4ga3XDoG5nOyAjNTFCNQ0KK+WGtiA+IHnElTsgIzUxQjYNCivlhrcgPiBsxJVuZzsgIzUxQjcNCivlhrggPiBww6BuOyAjNTFCOA0KK+WGuSA+IGbDujsgIzUxQjkNCivlhrogPiBtxK1uOyAjNTFCQQ0KK+WGuyA+IGTDsm5nOyAjNTFCQg0KK+WGvCA+IHhpxINuOyAjNTFCQw0KK+WGvSA+IGxpw6g7ICM1MUJEDQor5Ya+ID4geGnDoTsgIzUxQkUNCivlhr8gPiBqacSBbjsgIzUxQkYNCivlh4AgPiBqw6xuZzsgIzUxQzANCivlh4EgPiBzaMO5OyAjNTFDMQ0KK+WHgiA+IG3ElWk7ICM1MUMyDQor5YeDID4gdMO6OyAjNTFDMw0KK+WHhCA+IHHEqzsgIzUxQzQNCivlh4UgPiBnw7k7ICM1MUM1DQor5YeGID4gemjFrW47ICM1MUM2DQor5YeHID4gc8Oybmc7ICM1MUM3DQor5YeIID4gasOsbmc7ICM1MUM4DQor5YeJID4gbGnDoW5nOyAjNTFDOQ0KK+WHiiA+IHHDrG5nOyAjNTFDQQ0KK+WHiyA+IGRpxIFvOyAjNTFDQg0KK+WHjCA+IGzDrW5nOyAjNTFDQw0KK+WHjSA+IGTDsm5nOyAjNTFDRA0KK+WHjiA+IGfDoG47ICM1MUNFDQor5YePID4gamnEg247ICM1MUNGDQor5YeQID4gecSrbjsgIzUxRDANCivlh5EgPiBjw7J1OyAjNTFEMQ0KK+WHkiA+IHnDrTsgIzUxRDINCivlh5MgPiBsw6w7ICM1MUQzDQor5YeUID4gY8SBbmc7ICM1MUQ0DQor5YeVID4gbcStbmc7ICM1MUQ1DQor5YeWID4gemh1xJVuOyAjNTFENg0KK+WHlyA+IGPDumk7ICM1MUQ3DQor5YeYID4gc8SrOyAjNTFEOA0KK+WHmSA+IGTDum87ICM1MUQ5DQor5YeaID4gasOsbjsgIzUxREENCivlh5sgPiBsxK1uOyAjNTFEQg0KK+WHnCA+IGzErW47ICM1MURDDQor5YedID4gbsOtbmc7ICM1MUREDQor5YeeID4geMSrOyAjNTFERQ0KK+WHnyA+IGTDujsgIzUxREYNCivlh6AgPiBqxKs7ICM1MUUwDQor5YehID4gZsOhbjsgIzUxRTENCivlh6IgPiBmw6FuOyAjNTFFMg0KK+WHoyA+IGbDoW47ICM1MUUzDQor5YekID4gZsOobmc7ICM1MUU0DQor5YelID4gasWrOyAjNTFFNQ0KK+WHpiA+IGNoxa07ICM1MUU2DQor5YeoID4gZsSTbmc7ICM1MUU4DQor5YerID4gZsO6OyAjNTFFQg0KK+WHrCA+IGbEk25nOyAjNTFFQw0KK+WHrSA+IHDDrW5nOyAjNTFFRA0KK+WHriA+IGbEk25nOyAjNTFFRQ0KK+WHryA+IGvEg2k7ICM1MUVGDQor5YewID4gaHXDoW5nOyAjNTFGMA0KK+WHsSA+IGvEg2k7ICM1MUYxDQor5YeyID4gZ8SBbjsgIzUxRjINCivlh7MgPiBkw6huZzsgIzUxRjMNCivlh7QgPiBww61uZzsgIzUxRjQNCivlh7UgPiBxxas7ICM1MUY1DQor5Ye2ID4geMSrb25nOyAjNTFGNg0KK+WHtyA+IGt1w6BpOyAjNTFGNw0KK+WHuCA+IHTFqzsgIzUxRjgNCivlh7kgPiDEgW87ICM1MUY5DQor5Ye6ID4gY2jFqzsgIzUxRkENCivlh7sgPiBqw607ICM1MUZCDQor5Ye8ID4gZMOgbmc7ICM1MUZDDQor5Ye9ID4gaMOhbjsgIzUxRkQNCivlh74gPiBow6FuOyAjNTFGRQ0KK+WHvyA+IHrDoW87ICM1MUZGDQor5YiAID4gZMSBbzsgIzUyMDANCivliIEgPiBkacSBbzsgIzUyMDENCivliIIgPiBkxIFvOyAjNTIwMg0KK+WIgyA+IHLDqG47ICM1MjAzDQor5YiEID4gcsOobjsgIzUyMDQNCivliIUgPiBjaHXEgW5nOyAjNTIwNQ0KK+WIhiA+IGbEk247ICM1MjA2DQor5YiHID4gcWnEkzsgIzUyMDcNCivliIggPiB5w6w7ICM1MjA4DQor5YiJID4gasSrOyAjNTIwOQ0KK+WIiiA+IGvEgW47ICM1MjBBDQor5YiLID4gcWnDoG47ICM1MjBCDQor5YiMID4gY8WtbjsgIzUyMEMNCivliI0gPiBjaMO6OyAjNTIwRA0KK+WIjiA+IHfElW47ICM1MjBFDQor5YiPID4gasSrOyAjNTIwRg0KK+WIkCA+IGTEg247ICM1MjEwDQor5YiRID4geMOtbmc7ICM1MjExDQor5YiSID4gaHXDoTsgIzUyMTINCivliJMgPiB3w6FuOyAjNTIxMw0KK+WIlCA+IGp1w6k7ICM1MjE0DQor5YiVID4gbMOtOyAjNTIxNQ0KK+WIliA+IHl1w6g7ICM1MjE2DQor5YiXID4gbGnDqDsgIzUyMTcNCivliJggPiBsw611OyAjNTIxOA0KK+WImSA+IHrDqTsgIzUyMTkNCivliJogPiBnxIFuZzsgIzUyMUENCivliJsgPiBjaHXDoG5nOyAjNTIxQg0KK+WInCA+IGbDujsgIzUyMUMNCivliJ0gPiBjaMWrOyAjNTIxRA0KK+WIniA+IHHDuTsgIzUyMUUNCivliJ8gPiBqxas7ICM1MjFGDQor5YigID4gc2jEgW47ICM1MjIwDQor5YihID4gbcStbjsgIzUyMjENCivliKIgPiBsw61uZzsgIzUyMjINCivliKMgPiB6aMWNbmc7ICM1MjIzDQor5YikID4gcMOgbjsgIzUyMjQNCivliKUgPiBiacOpOyAjNTIyNQ0KK+WIpiA+IGppw6k7ICM1MjI2DQor5YinID4gamnDqTsgIzUyMjcNCivliKggPiBiw6BvOyAjNTIyOA0KK+WIqSA+IGzDrDsgIzUyMjkNCivliKogPiBzaMSBbjsgIzUyMkENCivliKsgPiBiacOpOyAjNTIyQg0KK+WIrCA+IGNoxINuOyAjNTIyQw0KK+WIrSA+IGrErW5nOyAjNTIyRA0KK+WIriA+IGd1xIE7ICM1MjJFDQor5YivID4gZ8STbjsgIzUyMkYNCivliLAgPiBkw6BvOyAjNTIzMA0KK+WIsSA+IGNodcOgbmc7ICM1MjMxDQor5YiyID4ga8WraTsgIzUyMzINCivliLMgPiBrxas7ICM1MjMzDQor5Yi0ID4gZMO5bzsgIzUyMzQNCivliLUgPiDDqHI7ICM1MjM1DQor5Yi2ID4gemjDrDsgIzUyMzYNCivliLcgPiBzaHXEgTsgIzUyMzcNCivliLggPiBxdcOgbjsgIzUyMzgNCivliLkgPiBjaMOgOyAjNTIzOQ0KK+WIuiA+IGPDrDsgIzUyM0ENCivliLsgPiBrw6g7ICM1MjNCDQor5Yi8ID4gamnDqTsgIzUyM0MNCivliL0gPiBnw7lpOyAjNTIzRA0KK+WIviA+IGPDrDsgIzUyM0UNCivliL8gPiBnw7lpOyAjNTIzRg0KK+WJgCA+IGvEg2k7ICM1MjQwDQor5YmBID4gZMO5bzsgIzUyNDENCivliYIgPiBqw6w7ICM1MjQyDQor5YmDID4gdMOsOyAjNTI0Mw0KK+WJhCA+IGrErW5nOyAjNTI0NA0KK+WJhSA+IGzDs3U7ICM1MjQ1DQor5YmGID4gZ8STbjsgIzUyNDYNCivliYcgPiB6w6k7ICM1MjQ3DQor5YmIID4geXXEgW47ICM1MjQ4DQor5YmJID4gY8O5bzsgIzUyNDkNCivliYogPiB4dcSTOyAjNTI0QQ0KK+WJiyA+IGvDqDsgIzUyNEINCivliYwgPiBsw6A7ICM1MjRDDQor5YmNID4gcWnDoW47ICM1MjREDQor5YmOID4gY2jDoDsgIzUyNEUNCivliY8gPiBjaHXDoG5nOyAjNTI0Rg0KK+WJkCA+IGd1xIM7ICM1MjUwDQor5YmRID4gamnDoG47ICM1MjUxDQor5YmSID4gY8O5bzsgIzUyNTINCivliZMgPiBsw607ICM1MjUzDQor5YmUID4gdMSrOyAjNTI1NA0KK+WJlSA+IGbDqGk7ICM1MjU1DQor5YmWID4gcMWNdTsgIzUyNTYNCivliZcgPiBjaMSDbjsgIzUyNTcNCivliZggPiBxw607ICM1MjU4DQor5YmZID4gY2h1w6BuZzsgIzUyNTkNCivliZogPiB6w6w7ICM1MjVBDQor5YmbID4gZ8SBbmc7ICM1MjVCDQor5YmcID4gd8SBbjsgIzUyNUMNCivliZ0gPiBixY07ICM1MjVEDQor5YmeID4gasSrOyAjNTI1RQ0KK+WJnyA+IGTFq287ICM1MjVGDQor5YmgID4gccOtbmc7ICM1MjYwDQor5YmhID4gecSDbjsgIzUyNjENCivliaIgPiB6aMO6bzsgIzUyNjINCivliaMgPiBqacOgbjsgIzUyNjMNCivliaQgPiBqw6w7ICM1MjY0DQor5YmlID4gYsWNOyAjNTI2NQ0KK+WJpiA+IHnEgW47ICM1MjY2DQor5YmnID4gasO5OyAjNTI2Nw0KK+WJqCA+IGjDuW87ICM1MjY4DQor5YmpID4gc2jDqG5nOyAjNTI2OQ0KK+WJqiA+IGppxINuOyAjNTI2QQ0KK+WJqyA+IGTDum87ICM1MjZCDQor5YmsID4gZHXEgW47ICM1MjZDDQor5YmtID4gd8WrOyAjNTI2RA0KK+WJriA+IGd1xIM7ICM1MjZFDQor5YmvID4gZsO5OyAjNTI2Rg0KK+WJsCA+IHNow6huZzsgIzUyNzANCivlibEgPiBqacOgbjsgIzUyNzENCivlibIgPiBnxJM7ICM1MjcyDQor5YmzID4gemjEgTsgIzUyNzMNCivlibQgPiBrxINpOyAjNTI3NA0KK+WJtSA+IGNodcOgbmc7ICM1Mjc1DQor5Ym2ID4ganXEgW47ICM1Mjc2DQor5Ym3ID4gY2jEg247ICM1Mjc3DQor5Ym4ID4gdHXDoW47ICM1Mjc4DQor5Ym5ID4gbMO5OyAjNTI3OQ0KK+WJuiA+IGzDrTsgIzUyN0ENCivlibsgPiBmw7N1OyAjNTI3Qg0KK+WJvCA+IHNoxIFuOyAjNTI3Qw0KK+WJvSA+IHBpw6BvOyAjNTI3RA0KK+WJviA+IGvFjXU7ICM1MjdFDQor5Ym/ID4gamnEg287ICM1MjdGDQor5YqAID4gZ3XEgTsgIzUyODANCivlioEgPiBxacSBbzsgIzUyODENCivlioIgPiBqdcOpOyAjNTI4Mg0KK+WKgyA+IGh1w6A7ICM1MjgzDQor5YqEID4gemjDoTsgIzUyODQNCivlioUgPiB6aMO5bzsgIzUyODUNCivlioYgPiBsacOhbjsgIzUyODYNCivliocgPiBqw7k7ICM1Mjg3DQor5YqIID4gcMSrOyAjNTI4OA0KK+WKiSA+IGzDrXU7ICM1Mjg5DQor5YqKID4gZ8O5aTsgIzUyOEENCivliosgPiBqacSDbzsgIzUyOEINCivliowgPiBnw7lpOyAjNTI4Qw0KK+WKjSA+IGppw6BuOyAjNTI4RA0KK+WKjiA+IGppw6BuOyAjNTI4RQ0KK+WKjyA+IHTEgW5nOyAjNTI4Rg0KK+WKkCA+IGjFq287ICM1MjkwDQor5YqRID4gasOsOyAjNTI5MQ0KK+WKkiA+IGppw6BuOyAjNTI5Mg0KK+WKkyA+IHnDrDsgIzUyOTMNCivlipQgPiBqacOgbjsgIzUyOTQNCivlipUgPiB6aMOtOyAjNTI5NQ0KK+WKliA+IGNow6FuOyAjNTI5Ng0KK+WKlyA+IGN1w6FuOyAjNTI5Nw0KK+WKmCA+IG3DszsgIzUyOTgNCivlipkgPiBsw607ICM1Mjk5DQor5YqaID4gemjDujsgIzUyOUENCivlipsgPiBsw6w7ICM1MjlCDQor5YqcID4gecSBOyAjNTI5Qw0KK+WKnSA+IHF1w6BuOyAjNTI5RA0KK+WKniA+IGLDoG47ICM1MjlFDQor5YqfID4gZ8WNbmc7ICM1MjlGDQor5YqgID4gamnEgTsgIzUyQTANCivliqEgPiB3w7k7ICM1MkExDQor5YqiID4gbcOgaTsgIzUyQTINCivliqMgPiBsacOoOyAjNTJBMw0KK+WKpCA+IGrDrG47ICM1MkE0DQor5YqlID4ga8STbmc7ICM1MkE1DQor5YqmID4geGnDqTsgIzUyQTYNCivliqcgPiB6aMStOyAjNTJBNw0KK+WKqCA+IGTDsm5nOyAjNTJBOA0KK+WKqSA+IHpow7k7ICM1MkE5DQor5YqqID4gbsWtOyAjNTJBQQ0KK+WKqyA+IGppw6k7ICM1MkFCDQor5YqsID4gccO6OyAjNTJBQw0KK+WKrSA+IHNow6BvOyAjNTJBRA0KK+WKriA+IHnDrDsgIzUyQUUNCivliq8gPiB6aMWrOyAjNTJBRg0KK+WKsCA+IG1pxINvOyAjNTJCMA0KK+WKsSA+IGzDrDsgIzUyQjENCivlirIgPiBqw6xuZzsgIzUyQjINCivlirMgPiBsw6FvOyAjNTJCMw0KK+WKtCA+IGzDoW87ICM1MkI0DQor5Yq1ID4ganXDoG47ICM1MkI1DQor5Yq2ID4ga8WPdTsgIzUyQjYNCivlircgPiB5w6FuZzsgIzUyQjcNCivlirggPiB3xIE7ICM1MkI4DQor5Yq5ID4geGnDoG87ICM1MkI5DQor5Yq6ID4gbcOzdTsgIzUyQkENCivlirsgPiBrdcSBbmc7ICM1MkJCDQor5Yq8ID4gamnDqTsgIzUyQkMNCivlir0gPiBsacOoOyAjNTJCRA0KK+WKviA+IGjDqTsgIzUyQkUNCivlir8gPiBzaMOsOyAjNTJCRg0KK+WLgCA+IGvDqDsgIzUyQzANCivli4EgPiBqw6xuZzsgIzUyQzENCivli4IgPiBow6FvOyAjNTJDMg0KK+WLgyA+IGLDszsgIzUyQzMNCivli4QgPiBtxK1uOyAjNTJDNA0KK+WLhSA+IGNow6w7ICM1MkM1DQor5YuGID4gbMOhbmc7ICM1MkM2DQor5YuHID4gecWPbmc7ICM1MkM3DQor5YuIID4gecWPbmc7ICM1MkM4DQor5YuJID4gbWnEg247ICM1MkM5DQor5YuKID4ga8OoOyAjNTJDQQ0KK+WLiyA+IHjFq247ICM1MkNCDQor5YuMID4ganXDoG47ICM1MkNDDQor5YuNID4gccOtbmc7ICM1MkNEDQor5YuOID4gbMO5OyAjNTJDRQ0KK+WLjyA+IHDFj3U7ICM1MkNGDQor5YuQID4gbcSVbmc7ICM1MkQwDQor5YuRID4gbMOgaTsgIzUyRDENCivli5IgPiBsw6g7ICM1MkQyDQor5YuTID4ga8OgaTsgIzUyRDMNCivli5QgPiBtacSDbjsgIzUyRDQNCivli5UgPiBkw7JuZzsgIzUyRDUNCivli5YgPiB4w7k7ICM1MkQ2DQor5YuXID4geMO5OyAjNTJENw0KK+WLmCA+IGvEgW47ICM1MkQ4DQor5YuZID4gd8O5OyAjNTJEOQ0KK+WLmiA+IHnDrDsgIzUyREENCivli5sgPiB4xatuOyAjNTJEQg0KK+WLnCA+IHfElW5nOyAjNTJEQw0KK+WLnSA+IHNow6huZzsgIzUyREQNCivli54gPiBsw6FvOyAjNTJERQ0KK+WLnyA+IG3DuTsgIzUyREYNCivli6AgPiBsw7k7ICM1MkUwDQor5YuhID4gcGnDoG87ICM1MkUxDQor5YuiID4gc2jDrDsgIzUyRTINCivli6MgPiBqxKs7ICM1MkUzDQor5YukID4gccOtbjsgIzUyRTQNCivli6UgPiBxacSDbmc7ICM1MkU1DQor5YumID4gamnEg287ICM1MkU2DQor5YunID4gcXXDoG47ICM1MkU3DQor5YuoID4gecSDbmc7ICM1MkU4DQor5YupID4gecOsOyAjNTJFOQ0KK+WLqiA+IGp1w6k7ICM1MkVBDQor5YurID4gZsOhbjsgIzUyRUINCivli6wgPiBqdcOgbjsgIzUyRUMNCivli60gPiB0w7NuZzsgIzUyRUQNCivli64gPiBqw7k7ICM1MkVFDQor5YuvID4gZMSBbjsgIzUyRUYNCivli7AgPiB4acOpOyAjNTJGMA0KK+WLsSA+IG3DoGk7ICM1MkYxDQor5YuyID4geMWrbjsgIzUyRjINCivli7MgPiB4xatuOyAjNTJGMw0KK+WLtCA+IGzHnDsgIzUyRjQNCivli7UgPiBsw6w7ICM1MkY1DQor5Yu2ID4gY2jDqDsgIzUyRjYNCivli7cgPiByw6FuZzsgIzUyRjcNCivli7ggPiBxdcOgbjsgIzUyRjgNCivli7kgPiBixIFvOyAjNTJGOQ0KK+WLuiA+IHNow6FvOyAjNTJGQQ0KK+WLuyA+IHnDum47ICM1MkZCDQor5Yu8ID4gasSrdTsgIzUyRkMNCivli70gPiBiw6BvOyAjNTJGRA0KK+WLviA+IGfFjXU7ICM1MkZFDQor5Yu/ID4gd8O5OyAjNTJGRg0KK+WMgCA+IHnDum47ICM1MzAwDQor5YyDID4gZ8OgaTsgIzUzMDMNCivljIQgPiBnw6BpOyAjNTMwNA0KK+WMhSA+IGLEgW87ICM1MzA1DQor5YyGID4gY8WNbmc7ICM1MzA2DQor5YyIID4geMSrb25nOyAjNTMwOA0KK+WMiSA+IHDEk25nOyAjNTMwOQ0KK+WMiiA+IGrDujsgIzUzMEENCivljIsgPiB0w6FvOyAjNTMwQg0KK+WMjCA+IGfDqTsgIzUzMEMNCivljI0gPiBww7o7ICM1MzBEDQor5YyOID4gw6BuOyAjNTMwRQ0KK+WMjyA+IHDDoW87ICM1MzBGDQor5YyQID4gZsO6OyAjNTMxMA0KK+WMkSA+IGfFjW5nOyAjNTMxMQ0KK+WMkiA+IGTDoTsgIzUzMTINCivljJMgPiBqw6x1OyAjNTMxMw0KK+WMlCA+IHHEq29uZzsgIzUzMTQNCivljJUgPiBixK07ICM1MzE1DQor5YyWID4gaHXDoDsgIzUzMTYNCivljJcgPiBixJVpOyAjNTMxNw0KK+WMmCA+IG7Eg287ICM1MzE4DQor5YyZID4gY2jDrTsgIzUzMTkNCivljJogPiBmxIFuZzsgIzUzMUENCivljJsgPiBqw6x1OyAjNTMxQg0KK+WMnCA+IHnDrTsgIzUzMUMNCivljJ0gPiB6xIE7ICM1MzFEDQor5YyeID4gamnDoG5nOyAjNTMxRQ0KK+WMnyA+IGvDoG5nOyAjNTMxRg0KK+WMoCA+IGppw6BuZzsgIzUzMjANCivljKEgPiBrdcSBbmc7ICM1MzIxDQor5YyiID4gaMWrOyAjNTMyMg0KK+WMoyA+IHhpw6E7ICM1MzIzDQor5YykID4gccWrOyAjNTMyNA0KK+WMpSA+IGJpw6BuOyAjNTMyNQ0KK+WMpiA+IGfFrWk7ICM1MzI2DQor5YynID4gcWnDqDsgIzUzMjcNCivljKggPiB6xIFuZzsgIzUzMjgNCivljKkgPiBrdcSBbmc7ICM1MzI5DQor5YyqID4gZsSVaTsgIzUzMkENCivljKsgPiBoxas7ICM1MzJCDQor5YysID4gdMOzdTsgIzUzMkMNCivljK0gPiBnxa1pOyAjNTMyRA0KK+WMriA+IGfDuWk7ICM1MzJFDQor5YyvID4gaMO5aTsgIzUzMkYNCivljLAgPiBkxIFuOyAjNTMzMA0KK+WMsSA+IGfDuWk7ICM1MzMxDQor5YyyID4gbGnDoW47ICM1MzMyDQor5YyzID4gbGnDoW47ICM1MzMzDQor5Yy0ID4gc3XEg247ICM1MzM0DQor5Yy1ID4gZMO6OyAjNTMzNQ0KK+WMtiA+IGrDrHU7ICM1MzM2DQor5Yy3ID4gccO6OyAjNTMzNw0KK+WMuCA+IHjErTsgIzUzMzgNCivljLkgPiBwxK07ICM1MzM5DQor5Yy6ID4gccWrOyAjNTMzQQ0KK+WMuyA+IHnDrDsgIzUzM0INCivljLwgPiBxacOgOyAjNTMzQw0KK+WMvSA+IHnEg247ICM1MzNEDQor5Yy+ID4gYmnEg247ICM1MzNFDQor5Yy/ID4gbsOsOyAjNTMzRg0KK+WNgCA+IHHFqzsgIzUzNDANCivljYEgPiBzaMOtOyAjNTM0MQ0KK+WNgiA+IHjDrG47ICM1MzQyDQor5Y2DID4gcWnEgW47ICM1MzQzDQor5Y2EID4gbmnDoG47ICM1MzQ0DQor5Y2FID4gc8OgOyAjNTM0NQ0KK+WNhiA+IHrDujsgIzUzNDYNCivljYcgPiBzaMSTbmc7ICM1MzQ3DQor5Y2IID4gd8WtOyAjNTM0OA0KK+WNiSA+IGjDuWk7ICM1MzQ5DQor5Y2KID4gYsOgbjsgIzUzNEENCivljYsgPiBzaMOsOyAjNTM0Qg0KK+WNjCA+IHjDrDsgIzUzNEMNCivljY0gPiB3w6BuOyAjNTM0RA0KK+WNjiA+IGh1w6E7ICM1MzRFDQor5Y2PID4geGnDqTsgIzUzNEYNCivljZAgPiB3w6BuOyAjNTM1MA0KK+WNkSA+IGLEk2k7ICM1MzUxDQor5Y2SID4gesO6OyAjNTM1Mg0KK+WNkyA+IHpoxatvOyAjNTM1Mw0KK+WNlCA+IHhpw6k7ICM1MzU0DQor5Y2VID4gZMSBbjsgIzUzNTUNCivljZYgPiBtw6BpOyAjNTM1Ng0KK+WNlyA+IG7DoW47ICM1MzU3DQor5Y2YID4gZMSBbjsgIzUzNTgNCivljZkgPiBqw607ICM1MzU5DQor5Y2aID4gYsOzOyAjNTM1QQ0KK+WNmyA+IHNodcOgaTsgIzUzNUINCivljZwgPiBixa07ICM1MzVDDQor5Y2dID4ga3XDoG5nOyAjNTM1RA0KK+WNniA+IGJpw6BuOyAjNTM1RQ0KK+WNnyA+IGLFrTsgIzUzNUYNCivljaAgPiB6aMSBbjsgIzUzNjANCivljaEgPiBxacSDOyAjNTM2MQ0KK+WNoiA+IGzDujsgIzUzNjINCivljaMgPiB5xY91OyAjNTM2Mw0KK+WNpCA+IGzFrTsgIzUzNjQNCivljaUgPiB4xKs7ICM1MzY1DQor5Y2mID4gZ3XDoDsgIzUzNjYNCivljacgPiB3w7I7ICM1MzY3DQor5Y2oID4geGnDqDsgIzUzNjgNCivljakgPiBqacOpOyAjNTM2OQ0KK+WNqiA+IGppw6k7ICM1MzZBDQor5Y2rID4gd8OoaTsgIzUzNkINCivljawgPiDDoW5nOyAjNTM2Qw0KK+WNrSA+IHHDrW9uZzsgIzUzNkQNCivlja4gPiB6aMSrOyAjNTM2RQ0KK+WNryA+IG3Eg287ICM1MzZGDQor5Y2wID4gecOsbjsgIzUzNzANCivljbEgPiB3xJNpOyAjNTM3MQ0KK+WNsiA+IHNow6BvOyAjNTM3Mg0KK+WNsyA+IGrDrTsgIzUzNzMNCivljbQgPiBxdcOoOyAjNTM3NA0KK+WNtSA+IGx1xINuOyAjNTM3NQ0KK+WNtiA+IHNow6w7ICM1Mzc2DQor5Y23ID4ganXDoG47ICM1Mzc3DQor5Y24ID4geGnDqDsgIzUzNzgNCivljbkgPiB4w7k7ICM1Mzc5DQor5Y26ID4gasStbjsgIzUzN0ENCivljbsgPiBxdcOoOyAjNTM3Qg0KK+WNvCA+IHfDuTsgIzUzN0MNCivljb0gPiBqw607ICM1MzdEDQor5Y2+ID4gw6g7ICM1MzdFDQor5Y2/ID4gccSrbmc7ICM1MzdGDQor5Y6AID4geMSrOyAjNTM4MA0KK+WOgiA+IGjDoG47ICM1MzgyDQor5Y6DID4gemjEgW47ICM1MzgzDQor5Y6EID4gw6g7ICM1Mzg0DQor5Y6FID4gdMSrbmc7ICM1Mzg1DQor5Y6GID4gbMOsOyAjNTM4Ng0KK+WOhyA+IHpow6k7ICM1Mzg3DQor5Y6IID4gaMSDbjsgIzUzODgNCivljokgPiBsw6w7ICM1Mzg5DQor5Y6KID4gecSDOyAjNTM4QQ0KK+WOiyA+IHnEgTsgIzUzOEINCivljowgPiB5w6BuOyAjNTM4Qw0KK+WOjSA+IHNow6g7ICM1MzhEDQor5Y6OID4gemjErTsgIzUzOEUNCivljo8gPiB6aMSDOyAjNTM4Rg0KK+WOkCA+IHDDoW5nOyAjNTM5MA0KK+WOkiA+IGjDqTsgIzUzOTINCivljpMgPiB5w6E7ICM1MzkzDQor5Y6UID4gemjDrDsgIzUzOTQNCivljpUgPiBjw6g7ICM1Mzk1DQor5Y6WID4gcMOhbmc7ICM1Mzk2DQor5Y6XID4gdMOtOyAjNTM5Nw0KK+WOmCA+IGzDrTsgIzUzOTgNCivljpkgPiBzaMOoOyAjNTM5OQ0KK+WOmiA+IGjDsnU7ICM1MzlBDQor5Y6bID4gdMSrbmc7ICM1MzlCDQor5Y6cID4gesWraTsgIzUzOUMNCivljp0gPiBjw7lvOyAjNTM5RA0KK+WOniA+IGbDqGk7ICM1MzlFDQor5Y6fID4geXXDoW47ICM1MzlGDQor5Y6gID4gY8OoOyAjNTNBMA0KK+WOoSA+IHl1w6FuOyAjNTNBMQ0KK+WOoiA+IHhpxIFuZzsgIzUzQTINCivljqMgPiB5xINuOyAjNTNBMw0KK+WOpCA+IGzDrDsgIzUzQTQNCivljqUgPiBqdcOpOyAjNTNBNQ0KK+WOpiA+IHNow6A7ICM1M0E2DQor5Y6nID4gZGnEgW47ICM1M0E3DQor5Y6oID4gY2jDujsgIzUzQTgNCivljqkgPiBqw6x1OyAjNTNBOQ0KK+WOqiA+IHHDrW47ICM1M0FBDQor5Y6rID4gw6FvOyAjNTNBQg0KK+WOrCA+IGfFrWk7ICM1M0FDDQor5Y6tID4gecOgbjsgIzUzQUQNCivljq4gPiBzxKs7ICM1M0FFDQor5Y6vID4gbMOsOyAjNTNBRg0KK+WOsCA+IGNoxINuZzsgIzUzQjANCivljrEgPiBsw6FuOyAjNTNCMQ0KK+WOsiA+IGzDrDsgIzUzQjINCivljrMgPiB5w6FuOyAjNTNCMw0KK+WOtCA+IHnEg247ICM1M0I0DQor5Y61ID4geXXDoW47ICM1M0I1DQor5Y62ID4gc8SrOyAjNTNCNg0KK+WOtyA+IGfFjW5nOyAjNTNCNw0KK+WOuCA+IGzDrW47ICM1M0I4DQor5Y65ID4gccOtdTsgIzUzQjkNCivljrogPiBxw7k7ICM1M0JBDQor5Y67ID4gccO5OyAjNTNCQg0KK+WOvSA+IGzElWk7ICM1M0JEDQor5Y6+ID4gZMWrOyAjNTNCRQ0KK+WOvyA+IHhpw6BuOyAjNTNCRg0KK+WPgCA+IHpodcSBbjsgIzUzQzANCivlj4EgPiBzxIFuOyAjNTNDMQ0KK+WPgiA+IGPEgW47ICM1M0MyDQor5Y+DID4gY8SBbjsgIzUzQzMNCivlj4QgPiBjxIFuOyAjNTNDNA0KK+WPhSA+IGPEgW47ICM1M0M1DQor5Y+GID4gw6BpOyAjNTNDNg0KK+WPhyA+IGTDoGk7ICM1M0M3DQor5Y+IID4gecOydTsgIzUzQzgNCivlj4kgPiBjaGE7ICM1M0M5DQor5Y+KID4gasOtOyAjNTNDQQ0KK+WPiyA+IHnFj3U7ICM1M0NCDQor5Y+MID4gc2h1xIFuZzsgIzUzQ0MNCivlj40gPiBmxINuOyAjNTNDRA0KK+WPjiA+IHNoxY11OyAjNTNDRQ0KK+WPjyA+IGd1w6BpOyAjNTNDRg0KK+WPkCA+IGLDoTsgIzUzRDANCivlj5EgPiBmxIE7ICM1M0QxDQor5Y+SID4gcsO5bzsgIzUzRDINCivlj5MgPiBzaMOsOyAjNTNEMw0KK+WPlCA+IHNoxas7ICM1M0Q0DQor5Y+VID4gemjDum87ICM1M0Q1DQor5Y+WID4gccWrOyAjNTNENg0KK+WPlyA+IHNow7J1OyAjNTNENw0KK+WPmCA+IGJpw6BuOyAjNTNEOA0KK+WPmSA+IHjDuTsgIzUzRDkNCivlj5ogPiBqacSDOyAjNTNEQQ0KK+WPmyA+IHDDoG47ICM1M0RCDQor5Y+cID4gc8WPdTsgIzUzREMNCivlj50gPiBnw6BvOyAjNTNERA0KK+WPniA+IHfDqGk7ICM1M0RFDQor5Y+fID4gc8WPdTsgIzUzREYNCivlj6AgPiBkacOpOyAjNTNFMA0KK+WPoSA+IHLDuWk7ICM1M0UxDQor5Y+iID4gY8Ozbmc7ICM1M0UyDQor5Y+jID4ga8WPdTsgIzUzRTMNCivlj6QgPiBnxa07ICM1M0U0DQor5Y+lID4gasO5OyAjNTNFNQ0KK+WPpiA+IGzDrG5nOyAjNTNFNg0KK+WPpyA+IGd1xIM7ICM1M0U3DQor5Y+oID4gdMSBbzsgIzUzRTgNCivlj6kgPiBrw7J1OyAjNTNFOQ0KK+WPqiA+IHpoxK07ICM1M0VBDQor5Y+rID4gamnDoG87ICM1M0VCDQor5Y+sID4gemjDoG87ICM1M0VDDQor5Y+tID4gYsSBOyAjNTNFRA0KK+WPriA+IGTEq25nOyAjNTNFRQ0KK+WPryA+IGvElTsgIzUzRUYNCivlj7AgPiB0w6FpOyAjNTNGMA0KK+WPsSA+IGNow6w7ICM1M0YxDQor5Y+yID4gc2jErTsgIzUzRjINCivlj7MgPiB5w7J1OyAjNTNGMw0KK+WPtCA+IHHDrXU7ICM1M0Y0DQor5Y+1ID4gcMWPOyAjNTNGNQ0KK+WPtiA+IHhpw6k7ICM1M0Y2DQor5Y+3ID4gaMOgbzsgIzUzRjcNCivlj7ggPiBzxKs7ICM1M0Y4DQor5Y+5ID4gdMOgbjsgIzUzRjkNCivlj7ogPiBjaMStOyAjNTNGQQ0KK+WPuyA+IGzDqDsgIzUzRkINCivlj7wgPiBkacSBbzsgIzUzRkMNCivlj70gPiBqxKs7ICM1M0ZEDQor5Y+/ID4gaMWNbmc7ICM1M0ZGDQor5ZCAID4gbWnEkzsgIzU0MDANCivlkIEgPiB4xas7ICM1NDAxDQor5ZCCID4gbcOhbmc7ICM1NDAyDQor5ZCDID4gY2jEqzsgIzU0MDMNCivlkIQgPiBnw6g7ICM1NDA0DQor5ZCFID4geHXEgW47ICM1NDA1DQor5ZCGID4gecSBbzsgIzU0MDYNCivlkIcgPiB6xK07ICM1NDA3DQor5ZCIID4gaMOpOyAjNTQwOA0KK+WQiSA+IGrDrTsgIzU0MDkNCivlkIogPiBkacOgbzsgIzU0MEENCivlkIsgPiBjw7luOyAjNTQwQg0KK+WQjCA+IHTDs25nOyAjNTQwQw0KK+WQjSA+IG3DrW5nOyAjNTQwRA0KK+WQjiA+IGjDsnU7ICM1NDBFDQor5ZCPID4gbMOsOyAjNTQwRg0KK+WQkCA+IHTFrTsgIzU0MTANCivlkJEgPiB4acOgbmc7ICM1NDExDQor5ZCSID4gemjDoDsgIzU0MTINCivlkJMgPiB4acOgOyAjNTQxMw0KK+WQlCA+IHnElTsgIzU0MTQNCivlkJUgPiBsx5o7ICM1NDE1DQor5ZCWID4gxIE7ICM1NDE2DQor5ZCXID4gbWE7ICM1NDE3DQor5ZCYID4gxY91OyAjNTQxOA0KK+WQmSA+IHh1xJM7ICM1NDE5DQor5ZCaID4gecSrOyAjNTQxQQ0KK+WQmyA+IGrFq247ICM1NDFCDQor5ZCcID4gY2jFj3U7ICM1NDFDDQor5ZCdID4gbMOsbjsgIzU0MUQNCivlkJ4gPiB0xatuOyAjNTQxRQ0KK+WQnyA+IHnDrW47ICM1NDFGDQor5ZCgID4gZsOoaTsgIzU0MjANCivlkKEgPiBixK07ICM1NDIxDQor5ZCiID4gccOsbjsgIzU0MjINCivlkKMgPiBxw6xuOyAjNTQyMw0KK+WQpCA+IGppw6g7ICM1NDI0DQor5ZClID4gYsO5OyAjNTQyNQ0KK+WQpiA+IGbFj3U7ICM1NDI2DQor5ZCnID4gYmE7ICM1NDI3DQor5ZCoID4gZMWrbjsgIzU0MjgNCivlkKkgPiBmxJNuOyAjNTQyOQ0KK+WQqiA+IMOpOyAjNTQyQQ0KK+WQqyA+IGjDoW47ICM1NDJCDQor5ZCsID4gdMSrbmc7ICM1NDJDDQor5ZCtID4gaMOhbmc7ICM1NDJEDQor5ZCuID4gc2jFrW47ICM1NDJFDQor5ZCvID4gccStOyAjNTQyRg0KK+WQsCA+IGjDs25nOyAjNTQzMA0KK+WQsSA+IHpoxKs7ICM1NDMxDQor5ZCyID4gc2jElW47ICM1NDMyDQor5ZCzID4gd8O6OyAjNTQzMw0KK+WQtCA+IHfDujsgIzU0MzQNCivlkLUgPiBjaMSDbzsgIzU0MzUNCivlkLYgPiBuw6g7ICM1NDM2DQor5ZC3ID4geHXDqDsgIzU0MzcNCivlkLggPiB4xKs7ICM1NDM4DQor5ZC5ID4gY2jFq2k7ICM1NDM5DQor5ZC6ID4gZMWNdTsgIzU0M0ENCivlkLsgPiB3xJVuOyAjNTQzQg0KK+WQvCA+IGjFj3U7ICM1NDNDDQor5ZC9ID4gw7N1OyAjNTQzRA0KK+WQviA+IHfDujsgIzU0M0UNCivlkL8gPiBnw6BvOyAjNTQzRg0KK+WRgCA+IHnEgTsgIzU0NDANCivlkYEgPiBqw7luOyAjNTQ0MQ0KK+WRgiA+IGzHmjsgIzU0NDINCivlkYMgPiDDqDsgIzU0NDMNCivlkYQgPiBnw6k7ICM1NDQ0DQor5ZGFID4gbcOpaTsgIzU0NDUNCivlkYYgPiDDoWk7ICM1NDQ2DQor5ZGHID4gccStOyAjNTQ0Nw0KK+WRiCA+IGNow6luZzsgIzU0NDgNCivlkYkgPiB3w7o7ICM1NDQ5DQor5ZGKID4gZ8OgbzsgIzU0NEENCivlkYsgPiBmxas7ICM1NDRCDQor5ZGMID4gamnDoG87ICM1NDRDDQor5ZGNID4gaMWNbmc7ICM1NDREDQor5ZGOID4gY2jErTsgIzU0NEUNCivlkY8gPiBzaMSTbmc7ICM1NDRGDQor5ZGQID4gbsOoOyAjNTQ1MA0KK+WRkSA+IHTFq247ICM1NDUxDQor5ZGSID4gZsWtOyAjNTQ1Mg0KK+WRkyA+IHnDrDsgIzU0NTMNCivlkZQgPiBkxIFpOyAjNTQ1NA0KK+WRlSA+IMWNdTsgIzU0NTUNCivlkZYgPiBsw6w7ICM1NDU2DQor5ZGXID4gYsOgaTsgIzU0NTcNCivlkZggPiB5dcOhbjsgIzU0NTgNCivlkZkgPiBrdcSBaTsgIzU0NTkNCivlkZsgPiBxacSBbmc7ICM1NDVCDQor5ZGcID4gd8WrOyAjNTQ1Qw0KK+WRnSA+IMOoOyAjNTQ1RA0KK+WRniA+IHNoxKs7ICM1NDVFDQor5ZGfID4gcXXEg247ICM1NDVGDQor5ZGgID4gcMSTbjsgIzU0NjANCivlkaEgPiB3xJVuOyAjNTQ2MQ0KK+WRoiA+IG7DrTsgIzU0NjINCivlkaMgPiBtzIE7ICM1NDYzDQor5ZGkID4gbMStbmc7ICM1NDY0DQor5ZGlID4gcsSDbjsgIzU0NjUNCivlkaYgPiB5xY11OyAjNTQ2Ng0KK+WRpyA+IGTErTsgIzU0NjcNCivlkaggPiB6aMWNdTsgIzU0NjgNCivlkakgPiBzaMOsOyAjNTQ2OQ0KK+WRqiA+IHpow7J1OyAjNTQ2QQ0KK+WRqyA+IHRpxJM7ICM1NDZCDQor5ZGsID4geMOsOyAjNTQ2Qw0KK+WRrSA+IHnDrDsgIzU0NkQNCivlka4gPiBxw6w7ICM1NDZFDQor5ZGvID4gcMOtbmc7ICM1NDZGDQor5ZGwID4gesStOyAjNTQ3MA0KK+WRsSA+IGfFqzsgIzU0NzENCivlkbIgPiB6xKs7ICM1NDcyDQor5ZGzID4gd8OoaTsgIzU0NzMNCivlkbQgPiB4xas7ICM1NDc0DQor5ZG1ID4gaMSTOyAjNTQ3NQ0KK+WRtiA+IG7DoW87ICM1NDc2DQor5ZG3ID4geGnEgTsgIzU0NzcNCivlkbggPiBwxJNpOyAjNTQ3OA0KK+WRuSA+IHnDrDsgIzU0NzkNCivlkbogPiB4acSBbzsgIzU0N0ENCivlkbsgPiBzaMSTbjsgIzU0N0INCivlkbwgPiBoxas7ICM1NDdDDQor5ZG9ID4gbcOsbmc7ICM1NDdEDQor5ZG+ID4gZMOhOyAjNTQ3RQ0KK+WRvyA+IHHFqzsgIzU0N0YNCivlkoAgPiBqxa07ICM1NDgwDQor5ZKBID4gZ8OobTsgIzU0ODENCivlkoIgPiB6xIE7ICM1NDgyDQor5ZKDID4gdMWrbzsgIzU0ODMNCivlkoQgPiBkxatvOyAjNTQ4NA0KK+WShSA+IHDDsnU7ICM1NDg1DQor5ZKGID4gcMOhbzsgIzU0ODYNCivlkocgPiBiw6w7ICM1NDg3DQor5ZKIID4gZsO6OyAjNTQ4OA0KK+WSiSA+IHnEgW5nOyAjNTQ4OQ0KK+WSiiA+IGjDqTsgIzU0OEENCivlkosgPiB6aMOgOyAjNTQ4Qg0KK+WSjCA+IGjDqTsgIzU0OEMNCivlko0gPiBoxIFpOyAjNTQ4RA0KK+WSjiA+IGrDrHU7ICM1NDhFDQor5ZKPID4gecWPbmc7ICM1NDhGDQor5ZKQID4gZsO5OyAjNTQ5MA0KK+WSkSA+IHF1w6g7ICM1NDkxDQor5ZKSID4gemjDsnU7ICM1NDkyDQor5ZKTID4gd8SDOyAjNTQ5Mw0KK+WSlCA+IGvEgzsgIzU0OTQNCivlkpUgPiBnxas7ICM1NDk1DQor5ZKWID4ga8SBOyAjNTQ5Ng0KK+WSlyA+IHrFrW87ICM1NDk3DQor5ZKYID4gYsO5OyAjNTQ5OA0KK+WSmSA+IGzDs25nOyAjNTQ5OQ0KK+WSmiA+IGTFjW5nOyAjNTQ5QQ0KK+WSmyA+IG7DrW5nOyAjNTQ5Qg0KK+WSnSA+IHPEqzsgIzU0OUQNCivlkp4gPiB4acOgbjsgIzU0OUUNCivlkp8gPiBow7lvOyAjNTQ5Rg0KK+WSoCA+IHHDrDsgIzU0QTANCivlkqEgPiDDqHI7ICM1NEExDQor5ZKiID4gw6g7ICM1NEEyDQor5ZKjID4gZ3XEgW5nOyAjNTRBMw0KK+WSpCA+IHpow6A7ICM1NEE0DQor5ZKlID4geMOsOyAjNTRBNQ0KK+WSpiA+IHnDrTsgIzU0QTYNCivlkqcgPiBsacSVOyAjNTRBNw0KK+WSqCA+IHrEqzsgIzU0QTgNCivlkqkgPiBtacSTOyAjNTRBOQ0KK+WSqiA+IG3EqzsgIzU0QUENCivlkqsgPiB6aMStOyAjNTRBQg0KK+WSrCA+IHnEg287ICM1NEFDDQor5ZKtID4gasSrOyAjNTRBRA0KK+WSriA+IHpow7J1OyAjNTRBRQ0KK+WSryA+IGfEkzsgIzU0QUYNCivlkrAgPiBzaHXDoGk7ICM1NEIwDQor5ZKxID4gesOhbjsgIzU0QjENCivlkrIgPiB4acOgbzsgIzU0QjINCivlkrMgPiBrw6k7ICM1NEIzDQor5ZK0ID4gaMWraTsgIzU0QjQNCivlkrUgPiBrdcSBOyAjNTRCNQ0KK+WStiA+IGh1w6BpOyAjNTRCNg0KK+WStyA+IHTDoW87ICM1NEI3DQor5ZK4ID4geGnDoW47ICM1NEI4DQor5ZK5ID4gw6g7ICM1NEI5DQor5ZK6ID4geHXEgW47ICM1NEJBDQor5ZK7ID4geMSrdTsgIzU0QkINCivlkrwgPiB3xIFpOyAjNTRCQw0KK+WSvSA+IHnEgW47ICM1NEJEDQor5ZK+ID4gbMSDbzsgIzU0QkUNCivlkr8gPiB5xKs7ICM1NEJGDQor5ZOAID4gxIFpOyAjNTRDMA0KK+WTgSA+IHDErW47ICM1NEMxDQor5ZOCID4gc2jElW47ICM1NEMyDQor5ZODID4gdMOzbmc7ICM1NEMzDQor5ZOEID4gaMWNbmc7ICM1NEM0DQor5ZOFID4geMSrb25nOyAjNTRDNQ0KK+WThiA+IGNoxK07ICM1NEM2DQor5ZOHID4gd8SBOyAjNTRDNw0KK+WTiCA+IGjEgTsgIzU0QzgNCivlk4kgPiB6xIFpOyAjNTRDOQ0KK+WTiiA+IHnDuTsgIzU0Q0ENCivlk4sgPiBkw6w7ICM1NENCDQor5ZOMID4gcMOgaTsgIzU0Q0MNCivlk40gPiB4acSDbmc7ICM1NENEDQor5ZOOID4gxIFpOyAjNTRDRQ0KK+WTjyA+IGjElW47ICM1NENGDQor5ZOQID4ga3XEgW5nOyAjNTREMA0KK+WTkSA+IHnEgzsgIzU0RDENCivlk5IgPiBkxIE7ICM1NEQyDQor5ZOTID4geGnEgW87ICM1NEQzDQor5ZOUID4gYsOsOyAjNTRENA0KK+WTlSA+IHl1xJU7ICM1NEQ1DQor5ZOXID4gaHXEgTsgIzU0RDcNCivlk5kgPiBrdcOgaTsgIzU0RDkNCivlk5ogPiBkxa1vOyAjNTREQQ0KK+WTnCA+IGrDrDsgIzU0REMNCivlk50gPiBuw7NuZzsgIzU0REQNCivlk54gPiBtxY11OyAjNTRERQ0KK+WTnyA+IHlvOyAjNTRERg0KK+WToCA+IGjDoG87ICM1NEUwDQor5ZOhID4geXXDoW47ICM1NEUxDQor5ZOiID4gbMOybmc7ICM1NEUyDQor5ZOjID4gcMWPdTsgIzU0RTMNCivlk6QgPiBtw6FuZzsgIzU0RTQNCivlk6UgPiBnxJM7ICM1NEU1DQor5ZOmID4gw6k7ICM1NEU2DQor5ZOnID4gY2jEqzsgIzU0RTcNCivlk6ggPiBzaMOgbzsgIzU0RTgNCivlk6kgPiBsxKs7ICM1NEU5DQor5ZOqID4gbsSDOyAjNTRFQQ0KK+WTqyA+IHrDujsgIzU0RUINCivlk6wgPiBow6k7ICM1NEVDDQor5ZOtID4ga8WrOyAjNTRFRA0KK+WTriA+IHhpxIFvOyAjNTRFRQ0KK+WTryA+IHhpw6BuOyAjNTRFRg0KK+WTsCA+IGzDoW87ICM1NEYwDQor5ZOxID4gYsWNOyAjNTRGMQ0KK+WTsiA+IHpow6k7ICM1NEYyDQor5ZOzID4gemjEgTsgIzU0RjMNCivlk7QgPiBsacOgbmc7ICM1NEY0DQor5ZO1ID4gYsSBOyAjNTRGNQ0KK+WTtiA+IG1pxJM7ICM1NEY2DQor5ZO3ID4gbMOoOyAjNTRGNw0KK+WTuCA+IHPFq2k7ICM1NEY4DQor5ZO5ID4gZsOzdTsgIzU0RjkNCivlk7ogPiBixa07ICM1NEZBDQor5ZO7ID4gaMOgbjsgIzU0RkINCivlk7wgPiBoxJNuZzsgIzU0RkMNCivlk70gPiBnxJVuZzsgIzU0RkQNCivlk74gPiBzaMWrbzsgIzU0RkUNCivlk78gPiBnxJU7ICM1NEZGDQor5ZSAID4gecWPdTsgIzU1MDANCivllIEgPiB5w6BuOyAjNTUwMQ0KK+WUgiA+IGfFrTsgIzU1MDINCivllIMgPiBnxa07ICM1NTAzDQor5ZSEID4gYsOgaTsgIzU1MDQNCivllIUgPiBoxIFuOyAjNTUwNQ0KK+WUhiA+IHPFq287ICM1NTA2DQor5ZSHID4gY2jDum47ICM1NTA3DQor5ZSIID4gecOsOyAjNTUwOA0KK+WUiSA+IMSBaTsgIzU1MDkNCivllIogPiBqacOhOyAjNTUwQQ0KK+WUiyA+IHTFrTsgIzU1MEINCivllIwgPiB4acOhbjsgIzU1MEMNCivllI0gPiBodcSDbjsgIzU1MEQNCivllI4gPiBsxKs7ICM1NTBFDQor5ZSPID4geMSrOyAjNTUwRg0KK+WUkCA+IHTDoW5nOyAjNTUxMA0KK+WUkSA+IHrDuW87ICM1NTExDQor5ZSSID4gccOtdTsgIzU1MTINCivllJMgPiBjaMSTOyAjNTUxMw0KK+WUlCA+IHfDujsgIzU1MTQNCivllJUgPiB6w6BvOyAjNTUxNQ0KK+WUliA+IHnEgzsgIzU1MTYNCivllJcgPiBkxY11OyAjNTUxNw0KK+WUmCA+IHHErTsgIzU1MTgNCivllJkgPiBkw607ICM1NTE5DQor5ZSaID4gccOsbjsgIzU1MUENCivllJsgPiBtw6A7ICM1NTFCDQor5ZSdID4gaMWPbmc7ICM1NTFEDQor5ZSeID4gZMWPdTsgIzU1MUUNCivllKAgPiBsw6FvOyAjNTUyMA0KK+WUoSA+IGxpxINuZzsgIzU1MjENCivllKIgPiBzxa1vOyAjNTUyMg0KK+WUoyA+IHrDoG87ICM1NTIzDQor5ZSkID4gaHXDoG47ICM1NTI0DQor5ZSmID4gc2jEgTsgIzU1MjYNCivllKcgPiBqxKs7ICM1NTI3DQor5ZSoID4gesWtbzsgIzU1MjgNCivllKkgPiB3xY07ICM1NTI5DQor5ZSqID4gZsSVbmc7ICM1NTJBDQor5ZSrID4gecOtbjsgIzU1MkINCivllKwgPiBoxa07ICM1NTJDDQor5ZStID4gccSrOyAjNTUyRA0KK+WUriA+IHNow7J1OyAjNTUyRQ0KK+WUryA+IHfDqWk7ICM1NTJGDQor5ZSwID4gc2h1xIE7ICM1NTMwDQor5ZSxID4gY2jDoG5nOyAjNTUzMQ0KK+WUsiA+IMOpcjsgIzU1MzINCivllLMgPiBsw6w7ICM1NTMzDQor5ZS0ID4gcWnDoG5nOyAjNTUzNA0KK+WUtSA+IMSDbjsgIzU1MzUNCivllLYgPiBqacOoOyAjNTUzNg0KK+WUtyA+IHnFjTsgIzU1MzcNCivllLggPiBuacOgbjsgIzU1MzgNCivllLkgPiB5xas7ICM1NTM5DQor5ZS6ID4gdGnEg247ICM1NTNBDQor5ZS7ID4gbMSDaTsgIzU1M0INCivllLwgPiBzaMOgOyAjNTUzQw0KK+WUvSA+IHjEqzsgIzU1M0QNCivllL4gPiB0w7lvOyAjNTUzRQ0KK+WUvyA+IGjFqzsgIzU1M0YNCivllYAgPiDDoWk7ICM1NTQwDQor5ZWBID4gemjFjXU7ICM1NTQxDQor5ZWCID4gbsOydTsgIzU1NDINCivllYMgPiBrxJVuOyAjNTU0Mw0KK+WVhCA+IHpow7pvOyAjNTU0NA0KK+WVhSA+IHpow7pvOyAjNTU0NQ0KK+WVhiA+IHNoxIFuZzsgIzU1NDYNCivllYcgPiBkw607ICM1NTQ3DQor5ZWIID4gaMOobmc7ICM1NTQ4DQor5ZWJID4gbMOhbjsgIzU1NDkNCivllYogPiBhOyAjNTU0QQ0KK+WViyA+IHhpxIFvOyAjNTU0Qg0KK+WVjCA+IHhpxIFuZzsgIzU1NEMNCivllY0gPiB0xatuOyAjNTU0RA0KK+WVjiA+IHfFrTsgIzU1NEUNCivllY8gPiB3w6huOyAjNTU0Rg0KK+WVkCA+IGPDuWk7ICM1NTUwDQor5ZWRID4gc2jDoDsgIzU1NTENCivllZIgPiBoxas7ICM1NTUyDQor5ZWTID4gccStOyAjNTU1Mw0KK+WVlCA+IHHErTsgIzU1NTQNCivllZUgPiB0w6FvOyAjNTU1NQ0KK+WVliA+IGTDoG47ICM1NTU2DQor5ZWXID4gZMOgbjsgIzU1NTcNCivllZggPiB5w6g7ICM1NTU4DQor5ZWZID4gesStOyAjNTU1OQ0KK+WVmiA+IGLErTsgIzU1NUENCivllZsgPiBjw7lpOyAjNTU1Qg0KK+WVnCA+IGNow7lvOyAjNTU1Qw0KK+WVnSA+IGjDqTsgIzU1NUQNCivllZ4gPiB5xIM7ICM1NTVFDQor5ZWfID4gccStOyAjNTU1Rg0KK+WVoCA+IHpow6k7ICM1NTYwDQor5ZWhID4gcMSTaTsgIzU1NjENCivllaIgPiBsacSDbmc7ICM1NTYyDQor5ZWjID4geGnDoW47ICM1NTYzDQor5ZWkID4gcMOtOyAjNTU2NA0KK+WVpSA+IHNow6A7ICM1NTY1DQor5ZWmID4gbGE7ICM1NTY2DQor5ZWnID4gesOpOyAjNTU2Nw0KK+WVqCA+IHHEq25nOyAjNTU2OA0KK+WVqSA+IGd1w6A7ICM1NTY5DQor5ZWqID4gcMSBOyAjNTU2QQ0KK+WVqyA+IHpoxJU7ICM1NTZCDQor5ZWsID4gc8OoOyAjNTU2Qw0KK+WVrSA+IHpodcOgbjsgIzU1NkQNCivlla4gPiBuacOoOyAjNTU2RQ0KK+WVryA+IGd1bzsgIzU1NkYNCivllbAgPiBsxatvOyAjNTU3MA0KK+WVsSA+IHnEgW47ICM1NTcxDQor5ZWyID4gZMOsOyAjNTU3Mg0KK+WVsyA+IHF1w6FuOyAjNTU3Mw0KK+WVtCA+IHTEgW47ICM1NTc0DQor5ZW1ID4gYm87ICM1NTc1DQor5ZW2ID4gZMOsbmc7ICM1NTc2DQor5ZW3ID4gbMSBbmc7ICM1NTc3DQor5ZW4ID4geGnDoG87ICM1NTc4DQor5ZW6ID4gdMOhbmc7ICM1NTdBDQor5ZW7ID4gY2jDrDsgIzU1N0INCivllbwgPiB0w607ICM1NTdDDQor5ZW9ID4gw6FuOyAjNTU3RA0KK+WVviA+IGrEq3U7ICM1NTdFDQor5ZW/ID4gZMOgbjsgIzU1N0YNCivlloAgPiBrw6g7ICM1NTgwDQor5ZaBID4gecOzbmc7ICM1NTgxDQor5ZaCID4gd8OoaTsgIzU1ODINCivlloMgPiBuw6FuOyAjNTU4Mw0KK+WWhCA+IHNow6BuOyAjNTU4NA0KK+WWhSA+IHnDuTsgIzU1ODUNCivlloYgPiB6aMOpOyAjNTU4Ng0KK+WWhyA+IGzEgzsgIzU1ODcNCivlloggPiBqacSTOyAjNTU4OA0KK+WWiSA+IGjDs3U7ICM1NTg5DQor5ZaKID4gaMSDbjsgIzU1OEENCivllosgPiBkacOpOyAjNTU4Qg0KK+WWjCA+IHpoxY11OyAjNTU4Qw0KK+WWjSA+IGNow6FpOyAjNTU4RA0KK+WWjiA+IHfEgWk7ICM1NThFDQor5ZaPID4gcsSVOyAjNTU4Rg0KK+WWkCA+IHnDuTsgIzU1OTANCivllpEgPiB5xKtuOyAjNTU5MQ0KK+WWkiA+IHrDoW47ICM1NTkyDQor5ZaTID4gecSBbzsgIzU1OTMNCivllpQgPiB3xY07ICM1NTk0DQor5ZaVID4gbWnEg247ICM1NTk1DQor5ZaWID4gaMO6OyAjNTU5Ng0KK+WWlyA+IHnFrW47ICM1NTk3DQor5ZaYID4gY2h1xINuOyAjNTU5OA0KK+WWmSA+IGjDuWk7ICM1NTk5DQor5ZaaID4gaHXDoG47ICM1NTlBDQor5ZabID4gaHXDoG47ICM1NTlCDQor5ZacID4geMStOyAjNTU5Qw0KK+WWnSA+IGjEkzsgIzU1OUQNCivllp4gPiBqxKs7ICM1NTlFDQor5ZafID4ga8O5aTsgIzU1OUYNCivllqAgPiB6aMWPbmc7ICM1NUEwDQor5ZahID4gd8SVaTsgIzU1QTENCivllqIgPiBzaMOgOyAjNTVBMg0KK+WWoyA+IHjFrTsgIzU1QTMNCivllqQgPiBodcOhbmc7ICM1NUE0DQor5ZalID4gZMO5OyAjNTVBNQ0KK+WWpiA+IG5pw6g7ICM1NUE2DQor5ZanID4gMXh1xIFuOyAjNTVBNw0KK+WWqCA+IGxpw6BuZzsgIzU1QTgNCivllqkgPiB5w7k7ICM1NUE5DQor5ZaqID4gc8SBbmc7ICM1NUFBDQor5ZarID4gY2jEqzsgIzU1QUINCivllqwgPiBxacOhbzsgIzU1QUMNCivllq0gPiB5w6BuOyAjNTVBRA0KK+WWriA+IGTEgW47ICM1NUFFDQor5ZavID4gcMSTbjsgIzU1QUYNCivllrAgPiBjxIFuOyAjNTVCMA0KK+WWsSA+IGzDrTsgIzU1QjENCivllrIgPiB5bzsgIzU1QjINCivllrMgPiB6aMSBOyAjNTVCMw0KK+WWtCA+IHfEk2k7ICM1NUI0DQor5Za1ID4gbWnEgW87ICM1NUI1DQor5Za2ID4gecOtbmc7ICM1NUI2DQor5Za3ID4gcMSTbjsgIzU1QjcNCivllrkgPiBrw7ppOyAjNTVCOQ0KK+WWuiA+IHjDrDsgIzU1QkENCivllrsgPiB5w7k7ICM1NUJCDQor5Za8ID4gamnDqTsgIzU1QkMNCivllr0gPiBsb3U7ICM1NUJEDQor5Za+ID4ga8O5OyAjNTVCRQ0KK+WWvyA+IHPDoG87ICM1NUJGDQor5ZeAID4gaMO5bzsgIzU1QzANCivll4EgPiB0w607ICM1NUMxDQor5ZeCID4gecOhbzsgIzU1QzINCivll4MgPiBow6g7ICM1NUMzDQor5ZeEID4gw6E7ICM1NUM0DQor5ZeFID4geMOsdTsgIzU1QzUNCivll4YgPiBxacSBbmc7ICM1NUM2DQor5ZeHID4gc8OoOyAjNTVDNw0KK+WXiCA+IHnFjW5nOyAjNTVDOA0KK+WXiSA+IHPDuTsgIzU1QzkNCivll4ogPiBoxY9uZzsgIzU1Q0ENCivll4sgPiB4acOpOyAjNTVDQg0KK+WXjCA+IHnDrDsgIzU1Q0MNCivll40gPiBzxatvOyAjNTVDRA0KK+WXjiA+IG1hOyAjNTVDRQ0KK+WXjyA+IGNoxIE7ICM1NUNGDQor5ZeQID4gaMOgaTsgIzU1RDANCivll5EgPiBrw6g7ICM1NUQxDQor5ZeSID4gdMOgOyAjNTVEMg0KK+WXkyA+IHPEg25nOyAjNTVEMw0KK+WXlCA+IHRpw6FuOyAjNTVENA0KK+WXlSA+IHLDuTsgIzU1RDUNCivll5YgPiBzxY11OyAjNTVENg0KK+WXlyA+IHfEgTsgIzU1RDcNCivll5ggPiBqxKs7ICM1NUQ4DQor5ZeZID4gcMSDbmc7ICM1NUQ5DQor5ZeaID4gd8WrOyAjNTVEQQ0KK+WXmyA+IHhpw6FuOyAjNTVEQg0KK+WXnCA+IHNow6w7ICM1NURDDQor5ZedID4gZ8OpOyAjNTVERA0KK+WXniA+IHrEqzsgIzU1REUNCivll58gPiBqacSTOyAjNTVERg0KK+WXoCA+IGzDuW87ICM1NUUwDQor5ZehID4gd8STbmc7ICM1NUUxDQor5ZeiID4gd8OgOyAjNTVFMg0KK+WXoyA+IHPDrDsgIzU1RTMNCivll6QgPiBjaMSrOyAjNTVFNA0KK+WXpSA+IGjDoW87ICM1NUU1DQor5ZemID4gc8WrbzsgIzU1RTYNCivll6cgPiBqacSBJyAnbMO6bjsgIzU1RTcNCivll6ggPiBoxINpOyAjNTVFOA0KK+WXqSA+IHPFrW87ICM1NUU5DQor5ZeqID4gccOtbjsgIzU1RUENCivll6sgPiBuacOoOyAjNTVFQg0KK+WXrCA+IGjEkzsgIzU1RUMNCivll64gPiBzw6BpOyAjNTVFRQ0KK+WXryA+IG7MgGc7ICM1NUVGDQor5ZewID4gZ8OoOyAjNTVGMA0KK+WXsSA+IG7DoTsgIzU1RjENCivll7IgPiBkacSDOyAjNTVGMg0KK+WXsyA+IMOgaTsgIzU1RjMNCivll7UgPiB0xY1uZzsgIzU1RjUNCivll7YgPiBiw6w7ICM1NUY2DQor5Ze3ID4gw6FvOyAjNTVGNw0KK+WXuCA+IMOhbzsgIzU1RjgNCivll7kgPiBsacOhbjsgIzU1RjkNCivll7ogPiBjxatpOyAjNTVGQQ0KK+WXuyA+IHpoxJM7ICM1NUZCDQor5Ze8ID4gbcOyOyAjNTVGQw0KK+WXvSA+IHPDsnU7ICM1NUZEDQor5Ze+ID4gc8WPdTsgIzU1RkUNCivll78gPiB0xINuOyAjNTVGRg0KK+WYgCA+IGTDrTsgIzU2MDANCivlmIEgPiBxxKs7ICM1NjAxDQor5ZiCID4gamnDoG87ICM1NjAyDQor5ZiDID4gY2jFjW5nOyAjNTYwMw0KK+WYhCA+IGppxIFvOyAjNTYwNA0KK+WYhSA+IGvEg2k7ICM1NjA1DQor5ZiGID4gdMOgbjsgIzU2MDYNCivlmIcgPiBzxIFuOyAjNTYwNw0KK+WYiCA+IGPDoW87ICM1NjA4DQor5ZiJID4gamnEgTsgIzU2MDkNCivlmIogPiDDoWk7ICM1NjBBDQor5ZiLID4geGnEgW87ICM1NjBCDQor5ZiMID4gcGnEgW87ICM1NjBDDQor5ZiNID4gbG91OyAjNTYwRA0KK+WYjiA+IGfEgTsgIzU2MEUNCivlmI8gPiBnxa07ICM1NjBGDQor5ZiQID4geGnEgW87ICM1NjEwDQor5ZiRID4gaMWrOyAjNTYxMQ0KK+WYkiA+IGjDuWk7ICM1NjEyDQor5ZiTID4gZ3VvOyAjNTYxMw0KK+WYlCA+IMWNdTsgIzU2MTQNCivlmJUgPiB4acSBbjsgIzU2MTUNCivlmJYgPiB6w6k7ICM1NjE2DQor5ZiXID4gY2jDoW5nOyAjNTYxNw0KK+WYmCA+IHjFqzsgIzU2MTgNCivlmJkgPiBww7M7ICM1NjE5DQor5ZiaID4gZMOpOyAjNTYxQQ0KK+WYmyA+IG1hOyAjNTYxQg0KK+WYnCA+IG3DoDsgIzU2MUMNCivlmJ0gPiBow7o7ICM1NjFEDQor5ZieID4gbGVpOyAjNTYxRQ0KK+WYnyA+IGTFqzsgIzU2MUYNCivlmKAgPiBnxIE7ICM1NjIwDQor5ZihID4gdMSBbmc7ICM1NjIxDQor5ZiiID4gecSVOyAjNTYyMg0KK+WYoyA+IGLEk25nOyAjNTYyMw0KK+WYpCA+IHnEq25nOyAjNTYyNA0KK+WYpiA+IGppw6BvOyAjNTYyNg0KK+WYpyA+IG3EqzsgIzU2MjcNCivlmKggPiB4acOgbzsgIzU2MjgNCivlmKkgPiBodcSBOyAjNTYyOQ0KK+WYqiA+IG3Eg2k7ICM1NjJBDQor5ZirID4gcsOhbjsgIzU2MkINCivlmKwgPiB6xatvOyAjNTYyQw0KK+WYrSA+IHDEk25nOyAjNTYyRA0KK+WYriA+IGzDoW87ICM1NjJFDQor5ZivID4geGnDoG87ICM1NjJGDQor5ZiwID4gasSrOyAjNTYzMA0KK+WYsSA+IHpoxa07ICM1NjMxDQor5ZiyID4gY2jDoW87ICM1NjMyDQor5ZizID4ga8O5aTsgIzU2MzMNCivlmLQgPiB6xa1pOyAjNTYzNA0KK+WYtSA+IHhpxIFvOyAjNTYzNQ0KK+WYtiA+IHPEqzsgIzU2MzYNCivlmLcgPiBow6FvOyAjNTYzNw0KK+WYuCA+IGbFrTsgIzU2MzgNCivlmLkgPiBsacOhbzsgIzU2MzkNCivlmLogPiBxacOhbzsgIzU2M0ENCivlmLsgPiB4xKs7ICM1NjNCDQor5Zi8ID4geMOsdTsgIzU2M0MNCivlmL0gPiB0xIFuOyAjNTYzRA0KK+WYviA+IHTDoW47ICM1NjNFDQor5Zi/ID4gbcOyOyAjNTYzRg0KK+WZgCA+IHjDuW47ICM1NjQwDQor5ZmBID4gxJU7ICM1NjQxDQor5ZmCID4gesWtbjsgIzU2NDINCivlmYMgPiBmxIFuOyAjNTY0Mw0KK+WZhCA+IGNoxKs7ICM1NjQ0DQor5ZmFID4gaMWraTsgIzU2NDUNCivlmYYgPiB6xINuOyAjNTY0Ng0KK+WZhyA+IGNodcOhbmc7ICM1NjQ3DQor5ZmIID4gY8O5OyAjNTY0OA0KK+WZiSA+IGTDoG47ICM1NjQ5DQor5ZmKID4gecO5OyAjNTY0QQ0KK+WZiyA+IHTFq247ICM1NjRCDQor5ZmMID4gY2jEk25nOyAjNTY0Qw0KK+WZjSA+IGppw6BvOyAjNTY0RA0KK+WZjiA+IHnEkzsgIzU2NEUNCivlmY8gPiB4xKs7ICM1NjRGDQor5ZmQID4gccOsOyAjNTY1MA0KK+WZkSA+IGjDoW87ICM1NjUxDQor5ZmSID4gbGnDoW47ICM1NjUyDQor5ZmTID4geMWrOyAjNTY1Mw0KK+WZlCA+IGTEk25nOyAjNTY1NA0KK+WZlSA+IGjFq2k7ICM1NjU1DQor5ZmWID4gecOtbjsgIzU2NTYNCivlmZcgPiBwxas7ICM1NjU3DQor5ZmYID4ganXEkzsgIzU2NTgNCivlmZkgPiBxw61uOyAjNTY1OQ0KK+WZmiA+IHjDum47ICM1NjVBDQor5ZmbID4gbmnDqDsgIzU2NUINCivlmZwgPiBsxas7ICM1NjVDDQor5ZmdID4gc8SrOyAjNTY1RA0KK+WZniA+IHnEg247ICM1NjVFDQor5ZmfID4gecOsbmc7ICM1NjVGDQor5ZmgID4gZMSBOyAjNTY2MA0KK+WZoSA+IGTEgW47ICM1NjYxDQor5ZmiID4gecWtOyAjNTY2Mg0KK+WZoyA+IHpow7J1OyAjNTY2Mw0KK+WZpCA+IGrDrG47ICM1NjY0DQor5ZmlID4gbsOzbmc7ICM1NjY1DQor5ZmmID4geXXElTsgIzU2NjYNCivlmacgPiBow7lpOyAjNTY2Nw0KK+WZqCA+IHHDrDsgIzU2NjgNCivlmakgPiDDqDsgIzU2NjkNCivlmaogPiB6w6BvOyAjNTY2QQ0KK+WZqyA+IHnEqzsgIzU2NkINCivlmawgPiBzaMOsOyAjNTY2Qw0KK+WZrSA+IGppw6BvOyAjNTY2RA0KK+WZriA+IHl1xIFuOyAjNTY2RQ0KK+WZryA+IMOgaTsgIzU2NkYNCivlmbAgPiB5xY1uZzsgIzU2NzANCivlmbEgPiBqdcOpOyAjNTY3MQ0KK+WZsiA+IGt1w6BpOyAjNTY3Mg0KK+WZsyA+IHnFrTsgIzU2NzMNCivlmbQgPiBwxJNuOyAjNTY3NA0KK+WZtSA+IGTDoG87ICM1Njc1DQor5Zm2ID4gZ8OpOyAjNTY3Ng0KK+WZtyA+IHjEq247ICM1Njc3DQor5Zm4ID4gZMWrbjsgIzU2NzgNCivlmbkgPiBkxIFuZzsgIzU2NzkNCivlmbsgPiBzYWk7ICM1NjdCDQor5Zm8ID4gcMSrOyAjNTY3Qw0KK+WZvSA+IHDErTsgIzU2N0QNCivlmb4gPiB5xKtuOyAjNTY3RQ0KK+WZvyA+IHrFrWk7ICM1NjdGDQor5ZqAID4gbsOtbmc7ICM1NjgwDQor5ZqBID4gZMOtOyAjNTY4MQ0KK+WagiA+IGzDoG47ICM1NjgyDQor5ZqDID4gdMSBOyAjNTY4Mw0KK+WahCA+IGjDuW87ICM1Njg0DQor5ZqFID4gcsO6OyAjNTY4NQ0KK+WahiA+IGjEgW87ICM1Njg2DQor5ZqHID4geGnDoDsgIzU2ODcNCivlmoggPiB5w6A7ICM1Njg4DQor5ZqJID4gZMWrbzsgIzU2ODkNCivlmoogPiB4w6w7ICM1NjhBDQor5ZqLID4gY2jDs3U7ICM1NjhCDQor5ZqMID4gasOsOyAjNTY4Qw0KK+WajSA+IGrDrG47ICM1NjhEDQor5ZqOID4gaMOhbzsgIzU2OEUNCivlmo8gPiB0w6w7ICM1NjhGDQor5ZqQID4gY2jDoW5nOyAjNTY5MA0KK+WakyA+IGPEgTsgIzU2OTMNCivlmpQgPiB0w6w7ICM1Njk0DQor5ZqVID4gbMWrOyAjNTY5NQ0KK+WaliA+IGjDuWk7ICM1Njk2DQor5ZqXID4gYsOzOyAjNTY5Nw0KK+WamCA+IHnFjXU7ICM1Njk4DQor5ZqZID4gbmnDqDsgIzU2OTkNCivlmpogPiB5w61uOyAjNTY5QQ0KK+WamyA+IGjDuTsgIzU2OUINCivlmpwgPiBtw7I7ICM1NjlDDQor5ZqdID4gaHXEgW5nOyAjNTY5RA0KK+WaniA+IHpow6k7ICM1NjlFDQor5ZqfID4gbMOtOyAjNTY5Rg0KK+WaoCA+IGzDrXU7ICM1NkEwDQor5ZqiID4gbsOhbmc7ICM1NkEyDQor5ZqjID4geGnEgW87ICM1NkEzDQor5ZqkID4gbcOzOyAjNTZBNA0KK+WapSA+IHnDoG47ICM1NkE1DQor5ZqmID4gbMOsOyAjNTZBNg0KK+WapyA+IGzDujsgIzU2QTcNCivlmqggPiBsw7NuZzsgIzU2QTgNCivlmqkgPiBmw7o7ICM1NkE5DQor5ZqqID4gZMOgbjsgIzU2QUENCivlmqsgPiBjaMOobjsgIzU2QUINCivlmqwgPiBww61uOyAjNTZBQw0KK+WarSA+IHDErTsgIzU2QUQNCivlmq4gPiB4acOgbmc7ICM1NkFFDQor5ZqvID4gaMO5bzsgIzU2QUYNCivlmrAgPiBtw7M7ICM1NkIwDQor5ZqxID4geMOsOyAjNTZCMQ0KK+WasiA+IGTFrW87ICM1NkIyDQor5ZqzID4ga8O5OyAjNTZCMw0KK+WatCA+IHnDoW47ICM1NkI0DQor5Zq1ID4gY2jDoW47ICM1NkI1DQor5Zq2ID4gecSrbmc7ICM1NkI2DQor5Zq3ID4gcsSDbmc7ICM1NkI3DQor5Zq4ID4gZGnEg247ICM1NkI4DQor5Zq5ID4gbMSBOyAjNTZCOQ0KK+WauiA+IHTDoDsgIzU2QkENCivlmrsgPiB4acSBbzsgIzU2QkINCivlmrwgPiBqacOhbzsgIzU2QkMNCivlmr0gPiBjaMO5bzsgIzU2QkQNCivlmr4gPiBodcSBbjsgIzU2QkUNCivlmr8gPiBow7lvOyAjNTZCRg0KK+WbgCA+IHpodcOgbjsgIzU2QzANCivlm4EgPiBuacOoOyAjNTZDMQ0KK+WbgiA+IHhpxIFvOyAjNTZDMg0KK+WbgyA+IGPDoDsgIzU2QzMNCivlm4QgPiBsw607ICM1NkM0DQor5ZuFID4gY2jEg247ICM1NkM1DQor5ZuGID4gY2jDoGk7ICM1NkM2DQor5ZuHID4gbMOsOyAjNTZDNw0KK+WbiCA+IHnDrDsgIzU2QzgNCivlm4kgPiBsxatvOyAjNTZDOQ0KK+WbiiA+IG7DoW5nOyAjNTZDQQ0KK+WbiyA+IHrDoG47ICM1NkNCDQor5ZuMID4gc8WrOyAjNTZDQw0KK+WbjSA+IHjErTsgIzU2Q0QNCivlm48gPiBqacSBbjsgIzU2Q0YNCivlm5AgPiB6w6E7ICM1NkQwDQor5ZuRID4gemjFrTsgIzU2RDENCivlm5IgPiBsw6FuOyAjNTZEMg0KK+WbkyA+IG5pw6g7ICM1NkQzDQor5ZuUID4gbsSBbmc7ICM1NkQ0DQor5ZuXID4gd8OpaTsgIzU2RDcNCivlm5ggPiBow7ppOyAjNTZEOA0KK+WbmSA+IHnEq247ICM1NkQ5DQor5ZuaID4gccOtdTsgIzU2REENCivlm5sgPiBzw6w7ICM1NkRCDQor5ZucID4gbsOtbjsgIzU2REMNCivlm50gPiBqacSDbjsgIzU2REQNCivlm54gPiBow7ppOyAjNTZERQ0KK+WbnyA+IHjDrG47ICM1NkRGDQor5ZugID4gecSrbjsgIzU2RTANCivlm6EgPiBuxIFuOyAjNTZFMQ0KK+WboiA+IHR1w6FuOyAjNTZFMg0KK+WboyA+IHR1w6FuOyAjNTZFMw0KK+WbpCA+IGTDuW47ICM1NkU0DQor5ZulID4ga8Ogbmc7ICM1NkU1DQor5ZumID4geXXEgW47ICM1NkU2DQor5ZunID4gasStb25nOyAjNTZFNw0KK+WbqCA+IHBpxIFuOyAjNTZFOA0KK+WbqSA+IHnDuW47ICM1NkU5DQor5ZuqID4gY8WNbmc7ICM1NkVBDQor5ZurID4gaMO6OyAjNTZFQg0KK+WbrCA+IGjDumk7ICM1NkVDDQor5ZutID4geXXDoW47ICM1NkVEDQor5ZuuID4gecOzdTsgIzU2RUUNCivlm68gPiBnw7pvOyAjNTZFRg0KK+WbsCA+IGvDuW47ICM1NkYwDQor5ZuxID4gY8WNbmc7ICM1NkYxDQor5ZuyID4gd8OpaTsgIzU2RjINCivlm7MgPiB0w7o7ICM1NkYzDQor5Zu0ID4gd8OpaTsgIzU2RjQNCivlm7UgPiBsw7puOyAjNTZGNQ0KK+WbtiA+IGfDum87ICM1NkY2DQor5Zu3ID4gccWrbjsgIzU2RjcNCivlm7ggPiByw6w7ICM1NkY4DQor5Zu5ID4gbMOtbmc7ICM1NkY5DQor5Zu6ID4gZ8O5OyAjNTZGQQ0KK+WbuyA+IGfDum87ICM1NkZCDQor5Zu8ID4gdMSBaTsgIzU2RkMNCivlm70gPiBnw7pvOyAjNTZGRA0KK+WbviA+IHTDujsgIzU2RkUNCivlm78gPiB5w7J1OyAjNTZGRg0KK+WcgCA+IGfDum87ICM1NzAwDQor5ZyBID4gecOtbjsgIzU3MDENCivlnIIgPiBow7luOyAjNTcwMg0KK+WcgyA+IHDFrTsgIzU3MDMNCivlnIQgPiB5xa07ICM1NzA0DQor5ZyFID4gaMOhbjsgIzU3MDUNCivlnIYgPiB5dcOhbjsgIzU3MDYNCivlnIcgPiBsw7puOyAjNTcwNw0KK+WciCA+IHF1xIFuOyAjNTcwOA0KK+WciSA+IHnFrTsgIzU3MDkNCivlnIogPiBxxKtuZzsgIzU3MEENCivlnIsgPiBnw7pvOyAjNTcwQg0KK+WcjCA+IGNodcOhbjsgIzU3MEMNCivlnI0gPiB3w6lpOyAjNTcwRA0KK+WcjiA+IHl1w6FuOyAjNTcwRQ0KK+WcjyA+IHF1xIFuOyAjNTcwRg0KK+WckCA+IGvFqzsgIzU3MTANCivlnJEgPiBmw7k7ICM1NzExDQor5ZySID4geXXDoW47ICM1NzEyDQor5ZyTID4geXXDoW47ICM1NzEzDQor5ZyUID4gw6g7ICM1NzE0DQor5ZyVID4gdMO6JyAnc2jFqycgJ2d1xINuOyAjNTcxNQ0KK+WcliA+IHTDujsgIzU3MTYNCivlnJcgPiB0w7o7ICM1NzE3DQor5ZyYID4gdHXDoW47ICM1NzE4DQor5ZyZID4gbMecZTsgIzU3MTkNCivlnJogPiBow7lpOyAjNTcxQQ0KK+WcmyA+IHnDrDsgIzU3MUINCivlnJwgPiB5dcOhbjsgIzU3MUMNCivlnJ0gPiBsdcOhbjsgIzU3MUQNCivlnJ4gPiBsdcOhbjsgIzU3MUUNCivlnJ8gPiB0xa07ICM1NzFGDQor5ZygID4gecOgOyAjNTcyMA0KK+WcoSA+IHTFrTsgIzU3MjENCivlnKIgPiB0xKtuZzsgIzU3MjINCivlnKMgPiBzaMOobmc7ICM1NzIzDQor5ZykID4gcMWtOyAjNTcyNA0KK+WcpSA+IGzDuTsgIzU3MjUNCivlnKcgPiB5xIE7ICM1NzI3DQor5ZyoID4gesOgaTsgIzU3MjgNCivlnKkgPiB3w6lpOyAjNTcyOQ0KK+WcqiA+IGfEkzsgIzU3MkENCivlnKsgPiB5w7k7ICM1NzJCDQor5ZysID4gd8WrOyAjNTcyQw0KK+WcrSA+IGfFq2k7ICM1NzJEDQor5ZyuID4gcMStOyAjNTcyRQ0KK+WcryA+IHnDrTsgIzU3MkYNCivlnLAgPiBkw6w7ICM1NzMwDQor5ZyxID4gcWnEgW47ICM1NzMxDQor5ZyyID4gcWnEgW47ICM1NzMyDQor5ZyzID4gemjDqG47ICM1NzMzDQor5Zy0ID4gemjDum87ICM1NzM0DQor5Zy1ID4gZMOgbmc7ICM1NzM1DQor5Zy2ID4gcWnDoDsgIzU3MzYNCivlnLkgPiBrdcOgbmc7ICM1NzM5DQor5Zy6ID4gY2jDoW5nOyAjNTczQQ0KK+WcuyA+IHHDrTsgIzU3M0INCivlnLwgPiBuacOoOyAjNTczQw0KK+WcvSA+IG3DsjsgIzU3M0QNCivlnL4gPiBqw607ICM1NzNFDQor5Zy/ID4gamnDoTsgIzU3M0YNCivlnYAgPiB6aMStOyAjNTc0MA0KK+WdgSA+IHpoxK07ICM1NzQxDQor5Z2CID4gYsSDbjsgIzU3NDINCivlnYMgPiB4xatuOyAjNTc0Mw0KK+WdhCA+IHTDs3U7ICM1NzQ0DQor5Z2FID4gccStbjsgIzU3NDUNCivlnYYgPiBmw6luOyAjNTc0Ng0KK+WdhyA+IGrFq247ICM1NzQ3DQor5Z2IID4ga8STbmc7ICM1NzQ4DQor5Z2JID4gdMO6bjsgIzU3NDkNCivlnYogPiBmxIFuZzsgIzU3NEENCivlnYsgPiBmw6huOyAjNTc0Qg0KK+WdjCA+IGLDqG47ICM1NzRDDQor5Z2NID4gdMSBbjsgIzU3NEQNCivlnY4gPiBrxINuOyAjNTc0RQ0KK+WdjyA+IHDEqzsgIzU3NEYNCivlnZAgPiB6w7lvOyAjNTc1MA0KK+WdkSA+IGvEk25nOyAjNTc1MQ0KK+WdkiA+IGLDrDsgIzU3NTINCivlnZMgPiB4w61uZzsgIzU3NTMNCivlnZQgPiBkw6w7ICM1NzU0DQor5Z2VID4gasSrbmc7ICM1NzU1DQor5Z2WID4gasOsOyAjNTc1Ng0KK+WdlyA+IGt1w6BpOyAjNTc1Nw0KK+WdmCA+IGTErTsgIzU3NTgNCivlnZkgPiBqxKtuZzsgIzU3NTkNCivlnZogPiBqacSBbjsgIzU3NUENCivlnZsgPiB0w6FuOyAjNTc1Qg0KK+WdnCA+IGzDrDsgIzU3NUMNCivlnZ0gPiBiw6A7ICM1NzVEDQor5Z2eID4gd8O5OyAjNTc1RQ0KK+WdnyA+IGbDqW47ICM1NzVGDQor5Z2gID4gemjDuWk7ICM1NzYwDQor5Z2hID4gcMWNOyAjNTc2MQ0KK+WdoiA+IHDEg247ICM1NzYyDQor5Z2jID4gdMSBbmc7ICM1NzYzDQor5Z2kID4ga8WrbjsgIzU3NjQNCivlnaUgPiBxxas7ICM1NzY1DQor5Z2mID4gdMSDbjsgIzU3NjYNCivlnacgPiB6aMSrOyAjNTc2Nw0KK+WdqCA+IHTDum87ICM1NzY4DQor5Z2pID4gZ8SBbjsgIzU3NjkNCivlnaogPiBww61uZzsgIzU3NkENCivlnasgPiBkacOgbjsgIzU3NkINCivlnawgPiBndcOgOyAjNTc2Qw0KK+WdrSA+IG7DrTsgIzU3NkQNCivlna4gPiB0w6FpOyAjNTc2RQ0KK+WdryA+IHDEqzsgIzU3NkYNCivlnbAgPiBqxKtvbmc7ICM1NzcwDQor5Z2xID4gecSDbmc7ICM1NzcxDQor5Z2yID4gZsOzOyAjNTc3Mg0KK+WdsyA+IMOgbzsgIzU3NzMNCivlnbQgPiBsw6x1OyAjNTc3NA0KK+WdtSA+IHHEq3U7ICM1Nzc1DQor5Z22ID4gbcO5OyAjNTc3Ng0KK+WdtyA+IGvElTsgIzU3NzcNCivlnbggPiBnw7J1OyAjNTc3OA0KK+WduSA+IHh1w6g7ICM1Nzc5DQor5Z26ID4gYsOhOyAjNTc3QQ0KK+WduyA+IGNow607ICM1NzdCDQor5Z28ID4gY2jDqDsgIzU3N0MNCivlnb0gPiBsw61uZzsgIzU3N0QNCivlnb4gPiB6aMO5OyAjNTc3RQ0KK+WdvyA+IGbDuTsgIzU3N0YNCivlnoAgPiBoxas7ICM1NzgwDQor5Z6BID4gemjDrDsgIzU3ODENCivlnoIgPiBjaMO6aTsgIzU3ODINCivlnoMgPiBsxIE7ICM1NzgzDQor5Z6EID4gbMWPbmc7ICM1Nzg0DQor5Z6FID4gbMWPbmc7ICM1Nzg1DQor5Z6GID4gbMO6OyAjNTc4Ng0KK+WehyA+IMOgbzsgIzU3ODcNCivlnokgPiBww6FvOyAjNTc4OQ0KK+WeiyA+IHjDrW5nOyAjNTc4Qg0KK+WejCA+IGTDsm5nOyAjNTc4Qw0KK+WejSA+IGrDrDsgIzU3OEQNCivlno4gPiBrw6g7ICM1NzhFDQor5Z6PID4gbMO5OyAjNTc4Rg0KK+WekCA+IGPDrTsgIzU3OTANCivlnpEgPiBjaMStOyAjNTc5MQ0KK+WekiA+IGzElWk7ICM1NzkyDQor5Z6TID4gZ8SBaTsgIzU3OTMNCivlnpQgPiB5xKtuOyAjNTc5NA0KK+WelSA+IGjDsnU7ICM1Nzk1DQor5Z6WID4gZMWraTsgIzU3OTYNCivlnpcgPiB6aMOgbzsgIzU3OTcNCivlnpggPiBmw7o7ICM1Nzk4DQor5Z6ZID4gZ3XEgW5nOyAjNTc5OQ0KK+WemiA+IHnDoW87ICM1NzlBDQor5Z6bID4gZMWtbzsgIzU3OUINCivlnpwgPiBkxa1vOyAjNTc5Qw0KK+WenSA+IGfFrWk7ICM1NzlEDQor5Z6eID4gY2jDoTsgIzU3OUUNCivlnp8gPiB5w6FuZzsgIzU3OUYNCivlnqAgPiB5w61uOyAjNTdBMA0KK+WeoSA+IGbDoTsgIzU3QTENCivlnqIgPiBnw7J1OyAjNTdBMg0KK+WeoyA+IHl1w6FuOyAjNTdBMw0KK+WepCA+IGRpw6k7ICM1N0E0DQor5Z6lID4geGnDqTsgIzU3QTUNCivlnqYgPiBrxJVuOyAjNTdBNg0KK+WepyA+IGrEq29uZzsgIzU3QTcNCivlnqggPiBzaMWPdTsgIzU3QTgNCivlnqkgPiDDqDsgIzU3QTkNCivlnqsgPiBkacOgbjsgIzU3QUINCivlnqwgPiBow7NuZzsgIzU3QUMNCivlnq0gPiB3w7k7ICM1N0FEDQor5Z6uID4ga3XEgzsgIzU3QUUNCivlnrEgPiBkw6BuZzsgIzU3QjENCivlnrIgPiBrxINpOyAjNTdCMg0KK+WetCA+IG7Eg287ICM1N0I0DQor5Z61ID4gxINuOyAjNTdCNQ0KK+WetiA+IHjEq25nOyAjNTdCNg0KK+WetyA+IHhpw6BuOyAjNTdCNw0KK+WeuCA+IGh1w6BuOyAjNTdCOA0KK+WeuSA+IGLEgW5nOyAjNTdCOQ0KK+WeuiA+IHDEk2k7ICM1N0JBDQor5Z67ID4gYsOgOyAjNTdCQg0KK+WevCA+IHnDrDsgIzU3QkMNCivlnr0gPiB5w6xuOyAjNTdCRA0KK+WeviA+IGjDoG47ICM1N0JFDQor5Z6/ID4geMO5OyAjNTdCRg0KK+WfgCA+IGNow7ppOyAjNTdDMA0KK+WfgSA+IGPDqW47ICM1N0MxDQor5Z+CID4gZ8SVbmc7ICM1N0MyDQor5Z+DID4gxIFpOyAjNTdDMw0KK+WfhCA+IHDDqW5nOyAjNTdDNA0KK+WfhSA+IGbDoW5nOyAjNTdDNQ0KK+WfhiA+IHF1w6g7ICM1N0M2DQor5Z+HID4gecWPbmc7ICM1N0M3DQor5Z+IID4geMO5bjsgIzU3QzgNCivln4kgPiBqacOhOyAjNTdDOQ0KK+WfiiA+IGTDrDsgIzU3Q0ENCivln4sgPiBtw6FpOyAjNTdDQg0KK+WfjCA+IGzDoG5nOyAjNTdDQw0KK+WfjSA+IHh1w6BuOyAjNTdDRA0KK+WfjiA+IGNow6luZzsgIzU3Q0UNCivln48gPiB5w6FuOyAjNTdDRg0KK+WfkCA+IGrEq247ICM1N0QwDQor5Z+RID4gemjDqTsgIzU3RDENCivln5IgPiBsw6hpOyAjNTdEMg0KK+WfkyA+IGxpw6g7ICM1N0QzDQor5Z+UID4gYsO5OyAjNTdENA0KK+WflSA+IGNow6luZzsgIzU3RDUNCivln5cgPiBiw7k7ICM1N0Q3DQor5Z+YID4gc2jDrTsgIzU3RDgNCivln5kgPiB4xatuOyAjNTdEOQ0KK+WfmiA+IGfFq287ICM1N0RBDQor5Z+bID4gasSrb25nOyAjNTdEQg0KK+WfnCA+IHnElTsgIzU3REMNCivln50gPiBuacOgbjsgIzU3REQNCivln54gPiBkxK07ICM1N0RFDQor5Z+fID4gecO5OyAjNTdERg0KK+WfoCA+IGLDuTsgIzU3RTANCivln6EgPiB5w6A7ICM1N0UxDQor5Z+iID4ganXEg247ICM1N0UyDQor5Z+jID4gc8O5aTsgIzU3RTMNCivln6QgPiBww607ICM1N0U0DQor5Z+lID4gY2jEk25nOyAjNTdFNQ0KK+WfpiA+IHfEg247ICM1N0U2DQor5Z+nID4gasO5OyAjNTdFNw0KK+WfqCA+IGzFrW47ICM1N0U4DQor5Z+pID4gemjEk25nOyAjNTdFOQ0KK+WfqiA+IGvFjW5nOyAjNTdFQQ0KK+WfqyA+IGNoxY9uZzsgIzU3RUINCivln6wgPiBkxY1uZzsgIzU3RUMNCivln60gPiBkw6BpOyAjNTdFRA0KK+WfriA+IHTDoG47ICM1N0VFDQor5Z+vID4gxINuOyAjNTdFRg0KK+WfsCA+IGPDoGk7ICM1N0YwDQor5Z+xID4gc2jDujsgIzU3RjENCivln7IgPiBixJVuZzsgIzU3RjINCivln7MgPiBrxINuOyAjNTdGMw0KK+WftCA+IHpow607ICM1N0Y0DQor5Z+1ID4gZMWtbzsgIzU3RjUNCivln7YgPiB5w6w7ICM1N0Y2DQor5Z+3ID4gemjDrTsgIzU3RjcNCivln7ggPiB5w6w7ICM1N0Y4DQor5Z+5ID4gcMOpaTsgIzU3RjkNCivln7ogPiBqxKs7ICM1N0ZBDQor5Z+7ID4gemjFrW47ICM1N0ZCDQor5Z+8ID4gccOtOyAjNTdGQw0KK+WfvSA+IHPDoG87ICM1N0ZEDQor5Z++ID4gasO5OyAjNTdGRQ0KK+WfvyA+IG7DrTsgIzU3RkYNCivloIAgPiBrxas7ICM1ODAwDQor5aCBID4ga8OoOyAjNTgwMQ0KK+WggiA+IHTDoW5nOyAjNTgwMg0KK+WggyA+IGvFq247ICM1ODAzDQor5aCEID4gbsOsOyAjNTgwNA0KK+WghSA+IGppxIFuOyAjNTgwNQ0KK+WghiA+IGTFq2k7ICM1ODA2DQor5aCHID4gasStbjsgIzU4MDcNCivloIggPiBnxIFuZzsgIzU4MDgNCivloIkgPiB5w7k7ICM1ODA5DQor5aCKID4gw6g7ICM1ODBBDQor5aCLID4gcMOpbmc7ICM1ODBCDQor5aCMID4gZ8O5OyAjNTgwQw0KK+WgjSA+IHTDuTsgIzU4MEQNCivloI4gPiBsw6huZzsgIzU4MEUNCivloJAgPiB5w6E7ICM1ODEwDQor5aCRID4gcWnDoG47ICM1ODExDQor5aCTID4gw6BuOyAjNTgxMw0KK+WglSA+IGTDuW87ICM1ODE1DQor5aCWID4gbsSDbzsgIzU4MTYNCivloJcgPiB0xas7ICM1ODE3DQor5aCYID4gY2jDqW5nOyAjNTgxOA0KK+WgmSA+IHnEq247ICM1ODE5DQor5aCaID4gaMO6bjsgIzU4MUENCivloJsgPiBiw6w7ICM1ODFCDQor5aCcID4gbGnDoG47ICM1ODFDDQor5aCdID4gZ8WrbzsgIzU4MUQNCivloJ4gPiBkacOpOyAjNTgxRQ0KK+WgnyA+IHpodcOgbjsgIzU4MUYNCivloKAgPiBow7J1OyAjNTgyMA0KK+WgoSA+IGLEg287ICM1ODIxDQor5aCiID4gYsSDbzsgIzU4MjINCivloKMgPiB5w7o7ICM1ODIzDQor5aCkID4gZMSrOyAjNTgyNA0KK+WgpSA+IG3DoW87ICM1ODI1DQor5aCmID4gamnEkzsgIzU4MjYNCivloKcgPiBydcOhbjsgIzU4MjcNCivloKggPiDDqDsgIzU4MjgNCivloKkgPiBnw6huZzsgIzU4MjkNCivloKogPiBrxIFuOyAjNTgyQQ0KK+WgqyA+IHrFjW5nOyAjNTgyQg0KK+WgrCA+IHnDujsgIzU4MkMNCivloK0gPiBodcOhbmc7ICM1ODJEDQor5aCuID4gw6g7ICM1ODJFDQor5aCvID4gecOhbzsgIzU4MkYNCivloLAgPiB5w6BuOyAjNTgzMA0KK+WgsSA+IGLDoG87ICM1ODMxDQor5aCyID4gasOtOyAjNTgzMg0KK+WgsyA+IG3DqWk7ICM1ODMzDQor5aC0ID4gY2jDoW5nOyAjNTgzNA0KK+WgtSA+IGTFrTsgIzU4MzUNCivloLYgPiB0w7pvOyAjNTgzNg0KK+WgtyA+IHnDrG47ICM1ODM3DQor5aC4ID4gZsOpbmc7ICM1ODM4DQor5aC5ID4gemjDsm5nOyAjNTgzOQ0KK+WguiA+IGppw6g7ICM1ODNBDQor5aC7ID4gemjEk247ICM1ODNCDQor5aC8ID4gZsSTbmc7ICM1ODNDDQor5aC9ID4gZ8SBbmc7ICM1ODNEDQor5aC+ID4gY2h1xINuOyAjNTgzRQ0KK+WgvyA+IGppxINuOyAjNTgzRg0KK+WhgiA+IHhpw6BuZzsgIzU4NDINCivloYMgPiBodcSBbmc7ICM1ODQzDQor5aGEID4gbMOpbmc7ICM1ODQ0DQor5aGFID4gZHXDoG47ICM1ODQ1DQor5aGHID4geHXEgW47ICM1ODQ3DQor5aGIID4gasOsOyAjNTg0OA0KK+WhiSA+IGrDrTsgIzU4NDkNCivloYogPiBrdcOgaTsgIzU4NEENCivloYsgPiB5w61uZzsgIzU4NEINCivloYwgPiB0xIE7ICM1ODRDDQor5aGNID4gY2jDqW5nOyAjNTg0RA0KK+WhjiA+IHnFj25nOyAjNTg0RQ0KK+WhjyA+IGvEg2k7ICM1ODRGDQor5aGQID4gc8O5OyAjNTg1MA0KK+WhkSA+IHPDuTsgIzU4NTENCivloZIgPiBzaMOtOyAjNTg1Mg0KK+WhkyA+IG3DrDsgIzU4NTMNCivloZQgPiB0xIM7ICM1ODU0DQor5aGVID4gd8SVbmc7ICM1ODU1DQor5aGWID4gY2jDqW5nOyAjNTg1Ng0KK+WhlyA+IHTDujsgIzU4NTcNCivloZggPiB0w6FuZzsgIzU4NTgNCivloZkgPiBxdcOoOyAjNTg1OQ0KK+WhmiA+IHpoxY9uZzsgIzU4NUENCivloZsgPiBsw6w7ICM1ODVCDQor5aGcID4gcMOpbmc7ICM1ODVDDQor5aGdID4gYsOgbmc7ICM1ODVEDQor5aGeID4gc8SBaTsgIzU4NUUNCivloZ8gPiB6w6BuZzsgIzU4NUYNCivloaAgPiBkxatpOyAjNTg2MA0KK+WhoSA+IHRpw6FuOyAjNTg2MQ0KK+WhoiA+IHfDuTsgIzU4NjINCivloaMgPiBjaMSVbmc7ICM1ODYzDQor5aGkID4geMWrbjsgIzU4NjQNCivloaUgPiBnw6k7ICM1ODY1DQor5aGmID4gemjDqG47ICM1ODY2DQor5aGnID4gw6BpOyAjNTg2Nw0KK+WhqCA+IGfFjW5nOyAjNTg2OA0KK+WhqSA+IHnDoW47ICM1ODY5DQor5aGqID4ga8SDbjsgIzU4NkENCivloasgPiB0acOhbjsgIzU4NkINCivloawgPiB5dcOhbjsgIzU4NkMNCivloa0gPiB3xJNuOyAjNTg2RA0KK+WhriA+IHhpw6g7ICM1ODZFDQor5aGvID4gbMOsdTsgIzU4NkYNCivlobEgPiBsxINuZzsgIzU4NzENCivlobIgPiBjaMOhbmc7ICM1ODcyDQor5aGzID4gcMOpbmc7ICM1ODczDQor5aG0ID4gYsOobmc7ICM1ODc0DQor5aG1ID4gY2jDqW47ICM1ODc1DQor5aG2ID4gY8O5OyAjNTg3Ng0KK+WhtyA+IGzFrTsgIzU4NzcNCivlobggPiDFj3U7ICM1ODc4DQor5aG5ID4gcWnDoG47ICM1ODc5DQor5aG6ID4gbcOpaTsgIzU4N0ENCivlobsgPiBtw7I7ICM1ODdCDQor5aG8ID4gemh1xIFuOyAjNTg3Qw0KK+WhvSA+IHNodcSDbmc7ICM1ODdEDQor5aG+ID4gc2jDujsgIzU4N0UNCivlob8gPiBsxY91OyAjNTg3Rg0KK+WigCA+IGNow607ICM1ODgwDQor5aKBID4gbcOgbjsgIzU4ODENCivlooIgPiBiacSBbzsgIzU4ODINCivlooMgPiBqw6xuZzsgIzU4ODMNCivlooQgPiBxxKs7ICM1ODg0DQor5aKFID4gc2jDuTsgIzU4ODUNCivlooYgPiBkw6w7ICM1ODg2DQor5aKHID4gemjEgW5nOyAjNTg4Nw0KK+WiiCA+IGvDoG47ICM1ODg4DQor5aKJID4gecWNbmc7ICM1ODg5DQor5aKKID4gZGnDoG47ICM1ODhBDQor5aKLID4gY2jElW47ICM1ODhCDQor5aKMID4gemjEqzsgIzU4OEMNCivloo0gPiB4w6w7ICM1ODhEDQor5aKOID4gZ8WrbzsgIzU4OEUNCivloo8gPiBxacSDbmc7ICM1ODhGDQor5aKQID4gasOsbjsgIzU4OTANCivlopEgPiBkxKs7ICM1ODkxDQor5aKSID4gc2jEgW5nOyAjNTg5Mg0KK+WikyA+IG3DuTsgIzU4OTMNCivlopQgPiBjxatpOyAjNTg5NA0KK+WilSA+IHnDoG47ICM1ODk1DQor5aKWID4gdMSDOyAjNTg5Ng0KK+WilyA+IHrEk25nOyAjNTg5Nw0KK+WimCA+IHHDrTsgIzU4OTgNCivlopkgPiBxacOhbmc7ICM1ODk5DQor5aKaID4gbGnDoW5nOyAjNTg5QQ0KK+WinCA+IHpow7lpOyAjNTg5Qw0KK+WinSA+IHFpxIFvOyAjNTg5RA0KK+WiniA+IHrEk25nOyAjNTg5RQ0KK+WinyA+IHjFqzsgIzU4OUYNCivloqAgPiBzaMOgbjsgIzU4QTANCivloqEgPiBzaMOgbjsgIzU4QTENCivloqIgPiBiw6E7ICM1OEEyDQor5aKjID4gcMWrOyAjNThBMw0KK+WipCA+IGt1w6BpOyAjNThBNA0KK+WipSA+IGTFj25nOyAjNThBNQ0KK+WipiA+IGbDoW47ICM1OEE2DQor5aKnID4gcXXDqDsgIzU4QTcNCivloqggPiBtw7I7ICM1OEE4DQor5aKpID4gZMWrbjsgIzU4QTkNCivloqogPiBkxatuOyAjNThBQQ0KK+WiqyA+IGTFq247ICM1OEFCDQor5aKsID4gZMOsOyAjNThBQw0KK+WirSA+IHNow6huZzsgIzU4QUQNCivloq4gPiBkw7lvOyAjNThBRQ0KK+WiryA+IGTDuW87ICM1OEFGDQor5aKwID4gdMOhbjsgIzU4QjANCivlorEgPiBkw6huZzsgIzU4QjENCivlorIgPiB3xa07ICM1OEIyDQor5aKzID4gZsOpbjsgIzU4QjMNCivlorQgPiBodcOhbmc7ICM1OEI0DQor5aK1ID4gdMOhbjsgIzU4QjUNCivlorYgPiBkxIE7ICM1OEI2DQor5aK3ID4gecOoOyAjNThCNw0KK+WiuiA+IHnDuTsgIzU4QkENCivlorsgPiBxacOhbmc7ICM1OEJCDQor5aK8ID4gasSrOyAjNThCQw0KK+WivSA+IHFpxIFvOyAjNThCRA0KK+WiviA+IGvElW47ICM1OEJFDQor5aK/ID4gecOsOyAjNThCRg0KK+WjgCA+IHDDrTsgIzU4QzANCivlo4EgPiBiw6w7ICM1OEMxDQor5aOCID4gZGnDoG47ICM1OEMyDQor5aODID4gamnEgW5nOyAjNThDMw0KK+WjhCA+IHnElTsgIzU4QzQNCivlo4UgPiB5xY1uZzsgIzU4QzUNCivlo4YgPiBiw7M7ICM1OEM2DQor5aOHID4gdMOhbjsgIzU4QzcNCivlo4ggPiBsxINuOyAjNThDOA0KK+WjiSA+IGrDuTsgIzU4QzkNCivlo4ogPiBodcOgaTsgIzU4Q0ENCivlo4sgPiBkw6BuZzsgIzU4Q0INCivlo4wgPiByxINuZzsgIzU4Q0MNCivlo40gPiBxacOgbjsgIzU4Q0QNCivlo44gPiB4xatuOyAjNThDRQ0KK+WjjyA+IGzDoG47ICM1OENGDQor5aOQID4geMStOyAjNThEMA0KK+WjkSA+IGjDqDsgIzU4RDENCivlo5IgPiDDoGk7ICM1OEQyDQor5aOTID4gecSBOyAjNThEMw0KK+WjlCA+IGTEg287ICM1OEQ0DQor5aOVID4gaMOhbzsgIzU4RDUNCivlo5YgPiBydcOhbjsgIzU4RDYNCivlo5ggPiBsxJVpOyAjNThEOA0KK+WjmSA+IGt1w6BuZzsgIzU4RDkNCivlo5ogPiBsw7o7ICM1OERBDQor5aObID4gecOhbjsgIzU4REINCivlo5wgPiB0w6FuOyAjNThEQw0KK+WjnSA+IHfDqWk7ICM1OEREDQor5aOeID4gaHXDoGk7ICM1OERFDQor5aOfID4gbMWPbmc7ICM1OERGDQor5aOgID4gbMWPbmc7ICM1OEUwDQor5aOhID4gcsO5aTsgIzU4RTENCivlo6IgPiBsw6w7ICM1OEUyDQor5aOjID4gbMOtbjsgIzU4RTMNCivlo6QgPiByxINuZzsgIzU4RTQNCivlo6YgPiB4xatuOyAjNThFNg0KK+WjpyA+IHnDoW47ICM1OEU3DQor5aOoID4gbMOpaTsgIzU4RTgNCivlo6kgPiBiw6A7ICM1OEU5DQor5aOrID4gc2jDrDsgIzU4RUINCivlo6wgPiByw6luOyAjNThFQw0KK+WjriA+IHpodcOgbmc7ICM1OEVFDQor5aOvID4gemh1w6BuZzsgIzU4RUYNCivlo7AgPiBzaMSTbmc7ICM1OEYwDQor5aOxID4gecSrOyAjNThGMQ0KK+WjsiA+IG3DoGk7ICM1OEYyDQor5aOzID4ga8OpOyAjNThGMw0KK+WjtCA+IHpoxa07ICM1OEY0DQor5aO1ID4gemh1w6BuZzsgIzU4RjUNCivlo7YgPiBow7o7ICM1OEY2DQor5aO3ID4gaMO6OyAjNThGNw0KK+WjuCA+IGvFrW47ICM1OEY4DQor5aO5ID4gecSrOyAjNThGOQ0KK+WjuiA+IGjDujsgIzU4RkENCivlo7sgPiB4w7k7ICM1OEZCDQor5aO8ID4ga8WtbjsgIzU4RkMNCivlo70gPiBzaMOydTsgIzU4RkQNCivlo74gPiBtxINuZzsgIzU4RkUNCivlo78gPiB6xa1uOyAjNThGRg0KK+WkgCA+IHNow7J1OyAjNTkwMA0KK+WkgSA+IHnEqzsgIzU5MDENCivlpIIgPiB6aMStOyAjNTkwMg0KK+WkgyA+IGfFqzsgIzU5MDMNCivlpIQgPiBjaMO5OyAjNTkwNA0KK+WkhSA+IGppw6BuZzsgIzU5MDUNCivlpIYgPiBmxJNuZzsgIzU5MDYNCivlpIcgPiBiw6hpOyAjNTkwNw0KK+WkiSA+IGJpw6BuOyAjNTkwOQ0KK+WkiiA+IHPFq2k7ICM1OTBBDQor5aSLID4gccWrbjsgIzU5MEINCivlpIwgPiBsw61uZzsgIzU5MEMNCivlpI0gPiBmw7k7ICM1OTBEDQor5aSOID4gesO5bzsgIzU5MEUNCivlpI8gPiB4acOgOyAjNTkwRg0KK+WkkCA+IHjDrG9uZzsgIzU5MTANCivlpJIgPiBuw6FvOyAjNTkxMg0KK+WkkyA+IHhpw6A7ICM1OTEzDQor5aSUID4ga8O6aTsgIzU5MTQNCivlpJUgPiB4xKs7ICM1OTE1DQor5aSWID4gd8OgaTsgIzU5MTYNCivlpJcgPiB5dcOgbjsgIzU5MTcNCivlpJggPiBtxINvOyAjNTkxOA0KK+WkmSA+IHPDuTsgIzU5MTkNCivlpJogPiBkxatvOyAjNTkxQQ0KK+WkmyA+IGTFq287ICM1OTFCDQor5aScID4gecOoOyAjNTkxQw0KK+WknSA+IHHDrW5nOyAjNTkxRA0KK+WknyA+IGfDsnU7ICM1OTFGDQor5aSgID4gZ8OydTsgIzU5MjANCivlpKEgPiBxw6w7ICM1OTIxDQor5aSiID4gbcOobmc7ICM1OTIyDQor5aSjID4gbcOobmc7ICM1OTIzDQor5aSkID4gecOtbjsgIzU5MjQNCivlpKUgPiBoxa1vOyAjNTkyNQ0KK+WkpiA+IGNow6huOyAjNTkyNg0KK+WkpyA+IGTDoDsgIzU5MjcNCivlpKggPiB6w6g7ICM1OTI4DQor5aSpID4gdGnEgW47ICM1OTI5DQor5aSqID4gdMOgaTsgIzU5MkENCivlpKsgPiBmxas7ICM1OTJCDQor5aSsID4gZ3XDoGk7ICM1OTJDDQor5aStID4gecSDbzsgIzU5MkQNCivlpK4gPiB5xIFuZzsgIzU5MkUNCivlpK8gPiBoxIFuZzsgIzU5MkYNCivlpLAgPiBnxINvOyAjNTkzMA0KK+WksSA+IHNoxKs7ICM1OTMxDQor5aSyID4gYsSVbjsgIzU5MzINCivlpLMgPiB0w6BpOyAjNTkzMw0KK+WktCA+IHTDs3U7ICM1OTM0DQor5aS1ID4gecSDbjsgIzU5MzUNCivlpLYgPiBixK07ICM1OTM2DQor5aS3ID4gecOtOyAjNTkzNw0KK+WkuCA+IGt1xIE7ICM1OTM4DQor5aS5ID4gamnEgTsgIzU5MzkNCivlpLogPiBkw7pvOyAjNTkzQQ0KK+WkvCA+IGt1xINuZzsgIzU5M0MNCivlpL0gPiB5w7luOyAjNTkzRA0KK+WkviA+IGppxIE7ICM1OTNFDQor5aS/ID4gcMSBOyAjNTkzRg0KK+WlgCA+IMSTbjsgIzU5NDANCivlpYEgPiBsacOhbjsgIzU5NDENCivlpYIgPiBodcOgbjsgIzU5NDINCivlpYMgPiBkw6w7ICM1OTQzDQor5aWEID4gecSDbjsgIzU5NDQNCivlpYUgPiBww6BvOyAjNTk0NQ0KK+WlhiA+IHF1xINuOyAjNTk0Ng0KK+WlhyA+IHHDrTsgIzU5NDcNCivlpYggPiBuw6BpOyAjNTk0OA0KK+WliSA+IGbDqG5nOyAjNTk0OQ0KK+WliiA+IHhpw6k7ICM1OTRBDQor5aWLID4gZsOobjsgIzU5NEINCivlpYwgPiBkacSDbjsgIzU5NEMNCivlpY4gPiBrw7ppOyAjNTk0RQ0KK+WljyA+IHrDsnU7ICM1OTRGDQor5aWQID4gaHXDoG47ICM1OTUwDQor5aWRID4gccOsOyAjNTk1MQ0KK+WlkiA+IGvEgWk7ICM1OTUyDQor5aWTID4gemjDoDsgIzU5NTMNCivlpZQgPiBixJNuOyAjNTk1NA0KK+WllSA+IHnDrDsgIzU5NTUNCivlpZYgPiBqacSDbmc7ICM1OTU2DQor5aWXID4gdMOgbzsgIzU5NTcNCivlpZggPiB6w6BuZzsgIzU5NTgNCivlpZkgPiBixJVuOyAjNTk1OQ0KK+WlmiA+IHjEqzsgIzU5NUENCivlpZsgPiB4acSDbmc7ICM1OTVCDQor5aWcID4gZsSVaTsgIzU5NUMNCivlpZ0gPiBkacSBbzsgIzU5NUQNCivlpZ4gPiB4w7luOyAjNTk1RQ0KK+WlnyA+IGvEk25nOyAjNTk1Rg0KK+WloCA+IGRpw6BuOyAjNTk2MA0KK+WloSA+IMOgbzsgIzU5NjENCivlpaIgPiBzaMSTOyAjNTk2Mg0KK+WloyA+IHfElW5nOyAjNTk2Mw0KK+WlpCA+IHDEg247ICM1OTY0DQor5aWlID4gw6BvOyAjNTk2NQ0KK+WlpiA+IHfDuTsgIzU5NjYNCivlpacgPiDDoG87ICM1OTY3DQor5aWoID4gamnEg25nOyAjNTk2OA0KK+WlqSA+IGxpw6FuOyAjNTk2OQ0KK+WlqiA+IGTDum87ICM1OTZBDQor5aWrID4gecWrbjsgIzU5NkINCivlpawgPiBqacSDbmc7ICM1OTZDDQor5aWtID4gc2jDrDsgIzU5NkQNCivlpa4gPiBmw6huOyAjNTk2RQ0KK+WlryA+IGjDuW87ICM1OTZGDQor5aWwID4gYsOsOyAjNTk3MA0KK+WlsSA+IGxpw6FuOyAjNTk3MQ0KK+WlsiA+IGTFrW87ICM1OTcyDQor5aWzID4gbseaOyAjNTk3Mw0KK+WltCA+IG7DujsgIzU5NzQNCivlpbUgPiBkxKtuZzsgIzU5NzUNCivlpbYgPiBuxINpOyAjNTk3Ng0KK+WltyA+IHFpxIFuOyAjNTk3Nw0KK+WluCA+IGppxIFuOyAjNTk3OA0KK+WluSA+IHTEgTsgIzU5NzkNCivlpbogPiBqxK11OyAjNTk3QQ0KK+WluyA+IG7DoW47ICM1OTdCDQor5aW8ID4gY2jDoDsgIzU5N0MNCivlpb0gPiBoxINvOyAjNTk3RA0KK+WlviA+IHhpxIFuOyAjNTk3RQ0KK+WlvyA+IGbDoG47ICM1OTdGDQor5aaAID4gasStOyAjNTk4MA0KK+WmgSA+IHNow7lvOyAjNTk4MQ0KK+WmgiA+IHLDujsgIzU5ODINCivlpoMgPiBmxJNpOyAjNTk4Mw0KK+WmhCA+IHfDoG5nOyAjNTk4NA0KK+WmhSA+IGjDs25nOyAjNTk4NQ0KK+WmhiA+IHpodcSBbmc7ICM1OTg2DQor5aaHID4gZsO5OyAjNTk4Nw0KK+WmiCA+IG3EgTsgIzU5ODgNCivlpokgPiBkxIFuOyAjNTk4OQ0KK+WmiiA+IHLDqG47ICM1OThBDQor5aaLID4gZsWrOyAjNTk4Qg0KK+WmjCA+IGrDrG5nOyAjNTk4Qw0KK+WmjSA+IHnDoW47ICM1OThEDQor5aaOID4geGnDqDsgIzU5OEUNCivlpo8gPiB3w6huOyAjNTk4Rg0KK+WmkCA+IHpoxY1uZzsgIzU5OTANCivlppEgPiBwxIE7ICM1OTkxDQor5aaSID4gZMO5OyAjNTk5Mg0KK+WmkyA+IGrDrDsgIzU5OTMNCivlppQgPiBrxJNuZzsgIzU5OTQNCivlppUgPiB6aMOybmc7ICM1OTk1DQor5aaWID4gecSBbzsgIzU5OTYNCivlppcgPiBqw6xuOyAjNTk5Nw0KK+WmmCA+IHnDum47ICM1OTk4DQor5aaZID4gbWnDoG87ICM1OTk5DQor5aaaID4gcMSTaTsgIzU5OUENCivlppwgPiB5dcOoOyAjNTk5Qw0KK+WmnSA+IHpodcSBbmc7ICM1OTlEDQor5aaeID4gbsSrdTsgIzU5OUUNCivlpp8gPiB5w6BuOyAjNTk5Rg0KK+WmoCA+IG7DoDsgIzU5QTANCivlpqEgPiB4xKtuOyAjNTlBMQ0KK+WmoiA+IGbDqW47ICM1OUEyDQor5aajID4gYsStOyAjNTlBMw0KK+WmpCA+IHnDujsgIzU5QTQNCivlpqUgPiB0xa1vOyAjNTlBNQ0KK+WmpiA+IGbEk25nOyAjNTlBNg0KK+WmpyA+IHl1w6FuOyAjNTlBNw0KK+WmqCA+IGbDoW5nOyAjNTlBOA0KK+WmqSA+IHfFrTsgIzU5QTkNCivlpqogPiB5w7k7ICM1OUFBDQor5aarID4gZ8WraTsgIzU5QUINCivlpqwgPiBkw7k7ICM1OUFDDQor5aatID4gYsOhOyAjNTlBRA0KK+WmriA+IG7EqzsgIzU5QUUNCivlpq8gPiB6aMOzdTsgIzU5QUYNCivlprAgPiB6aMO6bzsgIzU5QjANCivlprEgPiB6aMSBbzsgIzU5QjENCivlprIgPiBkw6E7ICM1OUIyDQor5aazID4gbsSDaTsgIzU5QjMNCivlprQgPiB5dcSDbjsgIzU5QjQNCivlprUgPiB0xY91OyAjNTlCNQ0KK+WmtiA+IHh1w6FuOyAjNTlCNg0KK+WmtyA+IHpow607ICM1OUI3DQor5aa4ID4gxJM7ICM1OUI4DQor5aa5ID4gbcOoaTsgIzU5QjkNCivlprogPiBtw7I7ICM1OUJBDQor5aa7ID4gccSrOyAjNTlCQg0KK+WmvCA+IGLDrDsgIzU5QkMNCivlpr0gPiBzaMSTbjsgIzU5QkQNCivlpr4gPiBxacOoOyAjNTlCRQ0KK+WmvyA+IMSTOyAjNTlCRg0KK+WngCA+IGjDqTsgIzU5QzANCivlp4EgPiB4xa07ICM1OUMxDQor5aeCID4gZsOhOyAjNTlDMg0KK+WngyA+IHpoxJNuZzsgIzU5QzMNCivlp4QgPiBtw61uOyAjNTlDNA0KK+WnhSA+IGLDoG47ICM1OUM1DQor5aeGID4gbcWtOyAjNTlDNg0KK+WnhyA+IGbFqzsgIzU5QzcNCivlp4ggPiBsw61uZzsgIzU5QzgNCivlp4kgPiB6xK07ICM1OUM5DQor5aeKID4gesStOyAjNTlDQQ0KK+WniyA+IHNoxK07ICM1OUNCDQor5aeMID4gcsSDbjsgIzU5Q0MNCivlp40gPiBzaMSBbjsgIzU5Q0QNCivlp44gPiB5xIFuZzsgIzU5Q0UNCivlp48gPiBtw6FuOyAjNTlDRg0KK+WnkCA+IGppxJU7ICM1OUQwDQor5aeRID4gZ8WrOyAjNTlEMQ0KK+WnkiA+IHPDrDsgIzU5RDINCivlp5MgPiB4w6xuZzsgIzU5RDMNCivlp5QgPiB3xJVpOyAjNTlENA0KK+WnlSA+IHrEqzsgIzU5RDUNCivlp5YgPiBqw7k7ICM1OUQ2DQor5aeXID4gc2jEgW47ICM1OUQ3DQor5aeYID4gcMSrbjsgIzU5RDgNCivlp5kgPiByw6huOyAjNTlEOQ0KK+WnmiA+IHnDoW87ICM1OURBDQor5aebID4gdMWPbmc7ICM1OURCDQor5aecID4gamnEgW5nOyAjNTlEQw0KK+WnnSA+IHNoxas7ICM1OUREDQor5aeeID4gasOtOyAjNTlERQ0KK+WnnyA+IGfEgWk7ICM1OURGDQor5aegID4gc2jDoG5nOyAjNTlFMA0KK+WnoSA+IGvDuW87ICM1OUUxDQor5aeiID4ganXEgW47ICM1OUUyDQor5aejID4gamnEgW87ICM1OUUzDQor5aekID4gZ8OydTsgIzU5RTQNCivlp6UgPiBtxa07ICM1OUU1DQor5aemID4gamnEgW47ICM1OUU2DQor5aenID4gamnEgW47ICM1OUU3DQor5aeoID4gecOtOyAjNTlFOA0KK+WnqSA+IG5pw6BuOyAjNTlFOQ0KK+WnqiA+IHpow607ICM1OUVBDQor5aerID4gasSrOyAjNTlFQg0KK+WnrCA+IGrEqzsgIzU5RUMNCivlp60gPiB4acOgbjsgIzU5RUQNCivlp64gPiBow6luZzsgIzU5RUUNCivlp68gPiBndcSBbmc7ICM1OUVGDQor5aewID4gasWrbjsgIzU5RjANCivlp7EgPiBrdcSBOyAjNTlGMQ0KK+WnsiA+IHnDoG47ICM1OUYyDQor5aezID4gbcStbmc7ICM1OUYzDQor5ae0ID4gbGnDqDsgIzU5RjQNCivlp7UgPiBww6hpOyAjNTlGNQ0KK+WntiA+IHnEg247ICM1OUY2DQor5ae3ID4gecOydTsgIzU5RjcNCivlp7ggPiB5w6FuOyAjNTlGOA0KK+WnuSA+IGNow6A7ICM1OUY5DQor5ae6ID4gc2jEk247ICM1OUZBDQor5ae7ID4gecSrbjsgIzU5RkINCivlp7wgPiBjaMStOyAjNTlGQw0KK+WnvSA+IGfFrWk7ICM1OUZEDQor5ae+ID4gcXXEgW47ICM1OUZFDQor5ae/ID4gesSrOyAjNTlGRg0KK+WogCA+IHPFjW5nOyAjNUEwMA0KK+WogSA+IHfEk2k7ICM1QTAxDQor5aiCID4gaMOzbmc7ICM1QTAyDQor5aiDID4gd8OhOyAjNUEwMw0KK+WohCA+IGzDs3U7ICM1QTA0DQor5aiFID4gecOgOyAjNUEwNQ0KK+WohiA+IHLEg287ICM1QTA2DQor5aiHID4gamnEgW87ICM1QTA3DQor5aiIID4gbHXDoW47ICM1QTA4DQor5aiJID4gcMSrbmc7ICM1QTA5DQor5aiKID4geGnDoG47ICM1QTBBDQor5aiLID4gc2jDoG87ICM1QTBCDQor5aiMID4gbMStOyAjNUEwQw0KK+WojSA+IGNow6luZzsgIzVBMEQNCivlqI4gPiB4acOgbzsgIzVBMEUNCivlqI8gPiBtw6FuZzsgIzVBMEYNCivlqJAgPiBmdTsgIzVBMTANCivlqJEgPiBzxatvOyAjNUExMQ0KK+WokiA+IHfFrTsgIzVBMTINCivlqJMgPiB3xJVpOyAjNUExMw0KK+WolCA+IGvDqDsgIzVBMTQNCivlqJUgPiBsw6BpOyAjNUExNQ0KK+WoliA+IGNow7lvOyAjNUExNg0KK+WolyA+IGTDrG5nOyAjNUExNw0KK+WomCA+IG5pw6FuZzsgIzVBMTgNCivlqJkgPiB4w61uZzsgIzVBMTkNCivlqJogPiBuw6FuOyAjNUExQQ0KK+WomyA+IHnDujsgIzVBMUINCivlqJwgPiBuw7pvOyAjNUExQw0KK+WonSA+IHDEk2k7ICM1QTFEDQor5aieID4gbsSVaTsgIzVBMUUNCivlqJ8gPiBqdcSBbjsgIzVBMUYNCivlqKAgPiBzaMSTbjsgIzVBMjANCivlqKEgPiB6aMOsOyAjNUEyMQ0KK+WooiA+IGjDoW47ICM1QTIyDQor5aijID4gZMOsOyAjNUEyMw0KK+WopCA+IHpodcSBbmc7ICM1QTI0DQor5ailID4gw6k7ICM1QTI1DQor5aimID4gcMOtbjsgIzVBMjYNCivlqKcgPiB0w7lpOyAjNUEyNw0KK+WoqCA+IGjDoG47ICM1QTI4DQor5aipID4gbWnEg247ICM1QTI5DQor5aiqID4gd8O6OyAjNUEyQQ0KK+WoqyA+IHnDoW47ICM1QTJCDQor5aisID4gd8WtOyAjNUEyQw0KK+WorSA+IHjEqzsgIzVBMkQNCivlqK4gPiB5w6FuOyAjNUEyRQ0KK+WoryA+IHnDujsgIzVBMkYNCivlqLAgPiBzw6w7ICM1QTMwDQor5aixID4gecO6OyAjNUEzMQ0KK+WosiA+IHfEgTsgIzVBMzINCivlqLQgPiB4acOhbjsgIzVBMzQNCivlqLUgPiBqxas7ICM1QTM1DQor5ai2ID4gccWtOyAjNUEzNg0KK+WotyA+IHNow7lpOyAjNUEzNw0KK+WouCA+IHHEqzsgIzVBMzgNCivlqLkgPiB4acOhbjsgIzVBMzkNCivlqLogPiB6aMWraTsgIzVBM0ENCivlqLsgPiBkxY1uZzsgIzVBM0INCivlqLwgPiBjaMSBbmc7ICM1QTNDDQor5ai9ID4gbMO5OyAjNUEzRA0KK+WoviA+IMSDaTsgIzVBM0UNCivlqL8gPiDEkzsgIzVBM0YNCivlqYAgPiDEkzsgIzVBNDANCivlqYEgPiBsw7N1OyAjNUE0MQ0KK+WpgiA+IG1pw6FuOyAjNUE0Mg0KK+WpgyA+IGPDs25nOyAjNUE0Mw0KK+WphCA+IHDFj3U7ICM1QTQ0DQor5amFID4gasO6OyAjNUE0NQ0KK+WphiA+IHDDszsgIzVBNDYNCivlqYcgPiBjxINpOyAjNUE0Nw0KK+WpiCA+IGTDrW5nOyAjNUE0OA0KK+WpiSA+IHfEg247ICM1QTQ5DQor5amKID4gYmnEg287ICM1QTRBDQor5amLID4geGnEgW87ICM1QTRCDQor5amMID4gc2jFrTsgIzVBNEMNCivlqY0gPiBxxK07ICM1QTREDQor5amOID4gaMWraTsgIzVBNEUNCivlqY8gPiBmw7k7ICM1QTRGDQor5amQID4gxJM7ICM1QTUwDQor5amRID4gd8WPOyAjNUE1MQ0KK+WpkiA+IHTDoW47ICM1QTUyDQor5amTID4gZsSTaTsgIzVBNTMNCivlqZQgPiB3ZWk7ICM1QTU0DQor5amVID4gamnDqTsgIzVBNTUNCivlqZYgPiB0acSBbjsgIzVBNTYNCivlqZcgPiBuw607ICM1QTU3DQor5amYID4gcXXDoW47ICM1QTU4DQor5amZID4gasOsbmc7ICM1QTU5DQor5amaID4gaMWrbjsgIzVBNUENCivlqZsgPiBqxKtuZzsgIzVBNUINCivlqZwgPiBxacSBbjsgIzVBNUMNCivlqZ0gPiBkacOgbjsgIzVBNUQNCivlqZ4gPiB4w6xuZzsgIzVBNUUNCivlqZ8gPiBow7k7ICM1QTVGDQor5amgID4gd8OgOyAjNUE2MA0KK+WpoSA+IGzDoWk7ICM1QTYxDQor5amiID4gYsOsOyAjNUE2Mg0KK+WpoyA+IHnEq247ICM1QTYzDQor5amkID4gY2jFjXU7ICM1QTY0DQor5amlID4gY2jDuW87ICM1QTY1DQor5ammID4gZsO5OyAjNUE2Ng0KK+WppyA+IGrDrG5nOyAjNUE2Nw0KK+WpqCA+IGzDum47ICM1QTY4DQor5ampID4gecOgbjsgIzVBNjkNCivlqaogPiBsw6FuOyAjNUE2QQ0KK+WpqyA+IGvFq247ICM1QTZCDQor5amsID4gecOtbjsgIzVBNkMNCivlqa0gPiB5w6A7ICM1QTZEDQor5amuID4ganU7ICM1QTZFDQor5amvID4gbMOsOyAjNUE2Rg0KK+WpsCA+IGRpxINuOyAjNUE3MA0KK+WpsSA+IHhpw6FuOyAjNUE3MQ0KK+WpsyA+IGh1w6A7ICM1QTczDQor5am0ID4gecSrbmc7ICM1QTc0DQor5am1ID4gY2jDoW47ICM1QTc1DQor5am2ID4gc2jElW47ICM1QTc2DQor5am3ID4gdMOtbmc7ICM1QTc3DQor5am4ID4gZMOgbmc7ICM1QTc4DQor5am5ID4gecSDbzsgIzVBNzkNCivlqbogPiB3w7k7ICM1QTdBDQor5am7ID4gbsOgbjsgIzVBN0INCivlqbwgPiByw7lvOyAjNUE3Qw0KK+WpvSA+IGppxIM7ICM1QTdEDQor5am+ID4gdMWNdTsgIzVBN0UNCivlqb8gPiB4w7k7ICM1QTdGDQor5aqAID4gecO6OyAjNUE4MA0KK+WqgSA+IHfEk2k7ICM1QTgxDQor5aqCID4gdMOtOyAjNUE4Mg0KK+WqgyA+IHLDs3U7ICM1QTgzDQor5aqEID4gbcSVaTsgIzVBODQNCivlqoUgPiBkxIFuOyAjNUE4NQ0KK+WqhiA+IHJ1xINuOyAjNUE4Ng0KK+WqhyA+IHHEq247ICM1QTg3DQor5aqIID4gaHVpOyAjNUE4OA0KK+WqiSA+IHfFqzsgIzVBODkNCivlqoogPiBxacOhbjsgIzVBOEENCivlqosgPiBjaMWrbjsgIzVBOEINCivlqowgPiBtw6FvOyAjNUE4Qw0KK+WqjSA+IGbDuTsgIzVBOEQNCivlqo4gPiBqacSVOyAjNUE4RQ0KK+WqjyA+IGR1xIFuOyAjNUE4Rg0KK+WqkCA+IHjEqzsgIzVBOTANCivlqpEgPiB6aMOybmc7ICM1QTkxDQor5aqSID4gbcOpaTsgIzVBOTINCivlqpMgPiBodcOhbmc7ICM1QTkzDQor5aqUID4gbWnDoW47ICM1QTk0DQor5aqVID4gxIFuOyAjNUE5NQ0KK+WqliA+IHnEq25nOyAjNUE5Ng0KK+WqlyA+IHh1xIFuOyAjNUE5Nw0KK+WqmCA+IGppZTsgIzVBOTgNCivlqpkgPiB3xJNpOyAjNUE5OQ0KK+WqmiA+IG3DqGk7ICM1QTlBDQor5aqbID4geXXDoG47ICM1QTlCDQor5aqcID4gemjEk247ICM1QTlDDQor5aqdID4gccSrdTsgIzVBOUQNCivlqp4gPiB0w607ICM1QTlFDQor5aqfID4geGnDqDsgIzVBOUYNCivlqqAgPiB0xa1vOyAjNUFBMA0KK+WqoSA+IGxpw6BuOyAjNUFBMQ0KK+WqoiA+IG3DoG87ICM1QUEyDQor5aqjID4gcsSDbjsgIzVBQTMNCivlqqQgPiBzxKs7ICM1QUE0DQor5aqlID4gcGnEgW47ICM1QUE1DQor5aqmID4gd8OoaTsgIzVBQTYNCivlqqcgPiB3xIE7ICM1QUE3DQor5aqoID4gasOsdTsgIzVBQTgNCivlqqkgPiBow7o7ICM1QUE5DQor5aqqID4gxINvOyAjNUFBQQ0KK+WqrSA+IHjFqzsgIzVBQUQNCivlqq4gPiB0xY11OyAjNUFBRQ0KK+WqryA+IGfFq2k7ICM1QUFGDQor5aqwID4gesWNdTsgIzVBQjANCivlqrEgPiB5w6FvOyAjNUFCMQ0KK+WqsiA+IHDDrDsgIzVBQjINCivlqrMgPiB4w607ICM1QUIzDQor5aq0ID4geXXDoW47ICM1QUI0DQor5aq1ID4gecOsbmc7ICM1QUI1DQor5aq2ID4gcsOzbmc7ICM1QUI2DQor5aq3ID4gcsO5OyAjNUFCNw0KK+WquCA+IGNoxKs7ICM1QUI4DQor5aq5ID4gbMOtdTsgIzVBQjkNCivlqrogPiBtxJVpOyAjNUFCQQ0KK+WquyA+IHDDoW47ICM1QUJCDQor5aq8ID4gxINvOyAjNUFCQw0KK+WqvSA+IG3EgTsgIzVBQkQNCivlqr4gPiBnw7J1OyAjNUFCRQ0KK+WqvyA+IGvDuWk7ICM1QUJGDQor5auAID4gccOtbjsgIzVBQzANCivlq4EgPiBqacOgOyAjNUFDMQ0KK+WrgiA+IHPEg287ICM1QUMyDQor5auDID4gemjEk247ICM1QUMzDQor5auEID4geXXDoW47ICM1QUM0DQor5auFID4gY2jEgTsgIzVBQzUNCivlq4YgPiB5w7NuZzsgIzVBQzYNCivlq4cgPiBtw61uZzsgIzVBQzcNCivlq4ggPiB5xKtuZzsgIzVBQzgNCivlq4kgPiBqw607ICM1QUM5DQor5auKID4gc8O5OyAjNUFDQQ0KK+WriyA+IG5pxINvOyAjNUFDQg0KK+WrjCA+IHhpw6FuOyAjNUFDQw0KK+WrjSA+IHTEgW87ICM1QUNEDQor5auOID4gcMOhbmc7ICM1QUNFDQor5auPID4gbMOhbmc7ICM1QUNGDQor5auQID4gbsSDbzsgIzVBRDANCivlq5EgPiBiw6FvOyAjNUFEMQ0KK+WrkiA+IMOgaTsgIzVBRDINCivlq5MgPiBww6w7ICM1QUQzDQor5auUID4gcMOtbjsgIzVBRDQNCivlq5UgPiB5w6w7ICM1QUQ1DQor5auWID4gcGnDoG87ICM1QUQ2DQor5auXID4gecO5OyAjNUFENw0KK+WrmCA+IGzDqWk7ICM1QUQ4DQor5auZID4geHXDoW47ICM1QUQ5DQor5auaID4gbcOgbjsgIzVBREENCivlq5sgPiB5xKs7ICM1QURCDQor5aucID4gemjEgW5nOyAjNUFEQw0KK+WrnSA+IGvEgW5nOyAjNUFERA0KK+WrniA+IHnDs25nOyAjNUFERQ0KK+WrnyA+IG7DrDsgIzVBREYNCivlq6AgPiBsw607ICM1QUUwDQor5auhID4gZMOtOyAjNUFFMQ0KK+WroiA+IGfFq2k7ICM1QUUyDQor5aujID4gecSBbjsgIzVBRTMNCivlq6QgPiBqw6xuOyAjNUFFNA0KK+WrpSA+IHpodcSBbjsgIzVBRTUNCivlq6YgPiBjaMOhbmc7ICM1QUU2DQor5aunID4gY8OoOyAjNUFFNw0KK+WrqCA+IGjEgW47ICM1QUU4DQor5aupID4gbsOobjsgIzVBRTkNCivlq6ogPiBsw6BvOyAjNUFFQQ0KK+WrqyA+IG3DszsgIzVBRUINCivlq6wgPiB6aMSTOyAjNUFFQw0KK+WrrSA+IGjDuTsgIzVBRUQNCivlq64gPiBow7k7ICM1QUVFDQor5auvID4gw6BvOyAjNUFFRg0KK+WrsCA+IG7DqG47ICM1QUYwDQor5auxID4gcWnDoW5nOyAjNUFGMQ0KK+WrsyA+IHBpw6g7ICM1QUYzDQor5au0ID4gZ8WrOyAjNUFGNA0KK+WrtSA+IHfFrTsgIzVBRjUNCivlq7YgPiBqacOhbzsgIzVBRjYNCivlq7cgPiB0xa1vOyAjNUFGNw0KK+WruCA+IHpoxINuOyAjNUFGOA0KK+WruSA+IG3DoW87ICM1QUY5DQor5au6ID4geGnDoW47ICM1QUZBDQor5au7ID4geGnDoW47ICM1QUZCDQor5au8ID4gbcOyOyAjNUFGQw0KK+WrvSA+IGxpw6FvOyAjNUFGRA0KK+WrviA+IGxpw6FuOyAjNUFGRQ0KK+WrvyA+IGh1w6A7ICM1QUZGDQor5ayAID4gZ8WraTsgIzVCMDANCivlrIEgPiBkxJNuZzsgIzVCMDENCivlrIIgPiB6aMSrOyAjNUIwMg0KK+WsgyA+IHjFqzsgIzVCMDMNCivlrIQgPiB5aTsgIzVCMDQNCivlrIUgPiBodcOhOyAjNUIwNQ0KK+WshiA+IHjEqzsgIzVCMDYNCivlrIcgPiBow7lpOyAjNUIwNw0KK+WsiCA+IHLEg287ICM1QjA4DQor5ayJID4geMSrOyAjNUIwOQ0KK+WsiiA+IHnDoG47ICM1QjBBDQor5ayLID4gY2jDoW47ICM1QjBCDQor5ayMID4gamnEgW87ICM1QjBDDQor5ayNID4gbcSVaTsgIzVCMEQNCivlrI4gPiBmw6BuOyAjNUIwRQ0KK+WsjyA+IGbEgW47ICM1QjBGDQor5ayQID4geGnEgW47ICM1QjEwDQor5ayRID4gecOsOyAjNUIxMQ0KK+WskiA+IHfDqGk7ICM1QjEyDQor5ayTID4gamnDoG87ICM1QjEzDQor5ayUID4gZsO5OyAjNUIxNA0KK+WslSA+IHNow6w7ICM1QjE1DQor5ayWID4gYsOsOyAjNUIxNg0KK+WslyA+IHNow6BuOyAjNUIxNw0KK+WsmCA+IHPDuWk7ICM1QjE4DQor5ayZID4gcWnDoW5nOyAjNUIxOQ0KK+WsmiA+IGxpxINuOyAjNUIxQQ0KK+WsmyA+IGh1w6FuOyAjNUIxQg0KK+WsnCA+IHhpbjsgIzVCMUMNCivlrJ0gPiBuacSDbzsgIzVCMUQNCivlrJ4gPiBkxY9uZzsgIzVCMUUNCivlrJ8gPiB5w6w7ICM1QjFGDQor5aygID4gY8OhbjsgIzVCMjANCivlrKEgPiDDoGk7ICM1QjIxDQor5ayiID4gbmnDoW5nOyAjNUIyMg0KK+WsoyA+IG7DqW5nOyAjNUIyMw0KK+WspCA+IG3EgTsgIzVCMjQNCivlrKUgPiB0acSDbzsgIzVCMjUNCivlrKYgPiBjaMOzdTsgIzVCMjYNCivlrKcgPiBqw6xuOyAjNUIyNw0KK+WsqCA+IGPDrTsgIzVCMjgNCivlrKkgPiB5w7o7ICM1QjI5DQor5ayqID4gcMOtbjsgIzVCMkENCivlrKsgPiB5b25nOyAjNUIyQg0KK+WsrCA+IHjFqzsgIzVCMkMNCivlrK0gPiBuxINpOyAjNUIyRA0KK+WsriA+IHnEgW47ICM1QjJFDQor5ayvID4gdMOhaTsgIzVCMkYNCivlrLAgPiB5xKtuZzsgIzVCMzANCivlrLEgPiBjw6FuOyAjNUIzMQ0KK+WssiA+IG5pxINvOyAjNUIzMg0KK+WssyA+IHdvOyAjNUIzMw0KK+WstCA+IHnDrW5nOyAjNUIzNA0KK+WstSA+IG1pw6FuOyAjNUIzNQ0KK+WstyA+IG3EgTsgIzVCMzcNCivlrLggPiBzaMSVbjsgIzVCMzgNCivlrLkgPiB4w6xuZzsgIzVCMzkNCivlrLogPiBuw6w7ICM1QjNBDQor5ay7ID4gZMO6OyAjNUIzQg0KK+WsvCA+IGzErXU7ICM1QjNDDQor5ay9ID4geXXEgW47ICM1QjNEDQor5ay+ID4gbMSDbjsgIzVCM0UNCivlrL8gPiB5w6BuOyAjNUIzRg0KK+WtgCA+IHNodcSBbmc7ICM1QjQwDQor5a2BID4gbMOtbmc7ICM1QjQxDQor5a2CID4gamnEg287ICM1QjQyDQor5a2DID4gbmnDoW5nOyAjNUI0Mw0KK+WthCA+IGzEg247ICM1QjQ0DQor5a2FID4geGnEgW47ICM1QjQ1DQor5a2GID4gecSrbmc7ICM1QjQ2DQor5a2HID4gc2h1xIFuZzsgIzVCNDcNCivlrYggPiBzaHXEgWk7ICM1QjQ4DQor5a2JID4gcXXDoW47ICM1QjQ5DQor5a2KID4gbcStOyAjNUI0QQ0KK+WtiyA+IGzDrTsgIzVCNEINCivlrYwgPiBsdcOhbjsgIzVCNEMNCivlrY0gPiB5w6FuOyAjNUI0RA0KK+WtjiA+IHpoxa07ICM1QjRFDQor5a2PID4gbMSDbjsgIzVCNEYNCivlrZAgPiB6xK07ICM1QjUwDQor5a2RID4gamnDqTsgIzVCNTENCivlrZIgPiBqdcOpOyAjNUI1Mg0KK+WtkyA+IGp1w6k7ICM1QjUzDQor5a2UID4ga8WPbmc7ICM1QjU0DQor5a2VID4gecO5bjsgIzVCNTUNCivlrZYgPiB6xKs7ICM1QjU2DQor5a2XID4gesOsOyAjNUI1Nw0KK+WtmCA+IGPDum47ICM1QjU4DQor5a2ZID4gc8WrbjsgIzVCNTkNCivlrZogPiBmw7o7ICM1QjVBDQor5a2bID4gYsOoaTsgIzVCNUINCivlrZwgPiB6xKs7ICM1QjVDDQor5a2dID4geGnDoG87ICM1QjVEDQor5a2eID4geMOsbjsgIzVCNUUNCivlrZ8gPiBtw6huZzsgIzVCNUYNCivlraAgPiBzw6w7ICM1QjYwDQor5a2hID4gdMSBaTsgIzVCNjENCivlraIgPiBixIFvOyAjNUI2Mg0KK+WtoyA+IGrDrDsgIzVCNjMNCivlraQgPiBnxas7ICM1QjY0DQor5a2lID4gbsO6OyAjNUI2NQ0KK+WtpiA+IHh1w6k7ICM1QjY2DQor5a2oID4gemh1xINuOyAjNUI2OA0KK+WtqSA+IGjDoWk7ICM1QjY5DQor5a2qID4gbHXDoW47ICM1QjZBDQor5a2rID4gc8WrbjsgIzVCNkINCivlrawgPiBodcOgaTsgIzVCNkMNCivlra0gPiBtacSTOyAjNUI2RA0KK+WtriA+IGPDs25nOyAjNUI2RQ0KK+WtryA+IHFpxIFuOyAjNUI2Rg0KK+WtsCA+IHNow7o7ICM1QjcwDQor5a2xID4gY2jDoW47ICM1QjcxDQor5a2yID4gecSBOyAjNUI3Mg0KK+WtsyA+IHrEqzsgIzVCNzMNCivlrbQgPiBuxK07ICM1Qjc0DQor5a21ID4gZsWrOyAjNUI3NQ0KK+WttiA+IHrEqzsgIzVCNzYNCivlrbcgPiBsw607ICM1Qjc3DQor5a24ID4geHXDqTsgIzVCNzgNCivlrbkgPiBiw7I7ICM1Qjc5DQor5a26ID4gcsO6OyAjNUI3QQ0KK+WtuyA+IGzDoWk7ICM1QjdCDQor5a28ID4gbmnDqDsgIzVCN0MNCivlrb0gPiBuacOoOyAjNUI3RA0KK+WtviA+IHnEq25nOyAjNUI3RQ0KK+WtvyA+IGx1w6FuOyAjNUI3Rg0KK+WugCA+IG1pw6FuOyAjNUI4MA0KK+WugSA+IHpow7k7ICM1QjgxDQor5a6CID4gcsWPbmc7ICM1QjgyDQor5a6DID4gdMSBOyAjNUI4Mw0KK+WuhCA+IGfFrWk7ICM1Qjg0DQor5a6FID4gemjDoWk7ICM1Qjg1DQor5a6GID4gccOtb25nOyAjNUI4Ng0KK+WuhyA+IHnFrTsgIzVCODcNCivlroggPiBzaMWPdTsgIzVCODgNCivlrokgPiDEgW47ICM1Qjg5DQor5a6KID4gdMO6OyAjNUI4QQ0KK+WuiyA+IHPDsm5nOyAjNUI4Qg0KK+WujCA+IHfDoW47ICM1QjhDDQor5a6NID4gcsOydTsgIzVCOEQNCivlro4gPiB5xINvOyAjNUI4RQ0KK+WujyA+IGjDs25nOyAjNUI4Rg0KK+WukCA+IHnDrTsgIzVCOTANCivlrpEgPiBqxK1uZzsgIzVCOTENCivlrpIgPiB6aMWrbjsgIzVCOTINCivlrpMgPiBtw6w7ICM1QjkzDQor5a6UID4gemjFrTsgIzVCOTQNCivlrpUgPiBkw6BuZzsgIzVCOTUNCivlrpYgPiBow7NuZzsgIzVCOTYNCivlrpcgPiB6xY1uZzsgIzVCOTcNCivlrpggPiBndcSBbjsgIzVCOTgNCivlrpkgPiB6aMOydTsgIzVCOTkNCivlrpogPiBkw6xuZzsgIzVCOUENCivlrpsgPiB3xINuOyAjNUI5Qg0KK+WunCA+IHnDrTsgIzVCOUMNCivlrp0gPiBixINvOyAjNUI5RA0KK+WuniA+IHNow607ICM1QjlFDQor5a6fID4gc2jDrTsgIzVCOUYNCivlrqAgPiBjaMWPbmc7ICM1QkEwDQor5a6hID4gc2jElW47ICM1QkExDQor5a6iID4ga8OoOyAjNUJBMg0KK+WuoyA+IHh1xIFuOyAjNUJBMw0KK+WupCA+IHNow6w7ICM1QkE0DQor5a6lID4gecOydTsgIzVCQTUNCivlrqYgPiBodcOgbjsgIzVCQTYNCivlrqcgPiB5w607ICM1QkE3DQor5a6oID4gdGnEg287ICM1QkE4DQor5a6pID4gc2jErTsgIzVCQTkNCivlrqogPiB4acOgbjsgIzVCQUENCivlrqsgPiBnxY1uZzsgIzVCQUINCivlrqwgPiBjaMOpbmc7ICM1QkFDDQor5a6tID4gccO6bjsgIzVCQUQNCivlrq4gPiBnxY1uZzsgIzVCQUUNCivlrq8gPiB4acSBbzsgIzVCQUYNCivlrrAgPiB6xINpOyAjNUJCMA0KK+WusSA+IHpow6A7ICM1QkIxDQor5a6yID4gYsSDbzsgIzVCQjINCivlrrMgPiBow6BpOyAjNUJCMw0KK+WutCA+IHnDoG47ICM1QkI0DQor5a61ID4geGnEgW87ICM1QkI1DQor5a62ID4gamnEgTsgIzVCQjYNCivlrrcgPiBzaMSVbjsgIzVCQjcNCivlrrggPiBjaMOpbjsgIzVCQjgNCivlrrkgPiByw7NuZzsgIzVCQjkNCivlrrogPiBodcSDbmc7ICM1QkJBDQor5a67ID4gbcOsOyAjNUJCQg0KK+WuvCA+IGvDsnU7ICM1QkJDDQor5a69ID4ga3XEgW47ICM1QkJEDQor5a6+ID4gYsSrbjsgIzVCQkUNCivlrr8gPiBzw7k7ICM1QkJGDQor5a+AID4gY8OgaTsgIzVCQzANCivlr4EgPiB6xINuOyAjNUJDMQ0KK+WvgiA+IGrDrDsgIzVCQzINCivlr4MgPiB5dcSBbjsgIzVCQzMNCivlr4QgPiBqw6w7ICM1QkM0DQor5a+FID4gecOtbjsgIzVCQzUNCivlr4YgPiBtw6w7ICM1QkM2DQor5a+HID4ga8OydTsgIzVCQzcNCivlr4ggPiBxxKtuZzsgIzVCQzgNCivlr4kgPiBxdcOoOyAjNUJDOQ0KK+WviiA+IHpoxJNuOyAjNUJDQQ0KK+WviyA+IGppxINuOyAjNUJDQg0KK+WvjCA+IGbDuTsgIzVCQ0MNCivlr40gPiBuw61uZzsgIzVCQ0QNCivlr44gPiBiw6xuZzsgIzVCQ0UNCivlr48gPiBodcOhbjsgIzVCQ0YNCivlr5AgPiBtw6hpOyAjNUJEMA0KK+WvkSA+IHHErW47ICM1QkQxDQor5a+SID4gaMOhbjsgIzVCRDINCivlr5MgPiB5w7k7ICM1QkQzDQor5a+UID4gc2jDrTsgIzVCRDQNCivlr5UgPiBuw61uZzsgIzVCRDUNCivlr5YgPiBxw6xuOyAjNUJENg0KK+WvlyA+IG7DrW5nOyAjNUJENw0KK+WvmCA+IHpow6w7ICM1QkQ4DQor5a+ZID4gecWtOyAjNUJEOQ0KK+WvmiA+IGLEg287ICM1QkRBDQor5a+bID4ga3XEgW47ICM1QkRCDQor5a+cID4gbsOtbmc7ICM1QkRDDQor5a+dID4gccStbjsgIzVCREQNCivlr54gPiBtw7I7ICM1QkRFDQor5a+fID4gY2jDoTsgIzVCREYNCivlr6AgPiBqw7k7ICM1QkUwDQor5a+hID4gZ3XEgzsgIzVCRTENCivlr6IgPiBxxK1uOyAjNUJFMg0KK+WvoyA+IGjFqzsgIzVCRTMNCivlr6QgPiB3w7k7ICM1QkU0DQor5a+lID4gbGnDoW87ICM1QkU1DQor5a+mID4gc2jDrTsgIzVCRTYNCivlr6cgPiB6aMO5OyAjNUJFNw0KK+WvqCA+IHpow6BpOyAjNUJFOA0KK+WvqSA+IHNoxJVuOyAjNUJFOQ0KK+WvqiA+IHfElWk7ICM1QkVBDQor5a+rID4geGnElTsgIzVCRUINCivlr6wgPiBrdcSBbjsgIzVCRUMNCivlr60gPiBow7lpOyAjNUJFRA0KK+WvriA+IGxpw6FvOyAjNUJFRQ0KK+WvryA+IGrDuW47ICM1QkVGDQor5a+wID4gaHXDoW47ICM1QkYwDQor5a+xID4gecOsOyAjNUJGMQ0KK+WvsiA+IHnDrTsgIzVCRjINCivlr7MgPiBixINvOyAjNUJGMw0KK+WvtCA+IHHDrG47ICM1QkY0DQor5a+1ID4gY2jFj25nOyAjNUJGNQ0KK+WvtiA+IGLEg287ICM1QkY2DQor5a+3ID4gZsSTbmc7ICM1QkY3DQor5a+4ID4gY8O5bjsgIzVCRjgNCivlr7kgPiBkw7lpOyAjNUJGOQ0KK+WvuiA+IHPDrDsgIzVCRkENCivlr7sgPiB4w7puOyAjNUJGQg0KK+WvvCA+IGTEg287ICM1QkZDDQor5a+9ID4gbMecOyAjNUJGRA0KK+WvviA+IGTDuWk7ICM1QkZFDQor5a+/ID4gc2jDsnU7ICM1QkZGDQor5bCAID4gcMWPOyAjNUMwMA0KK+WwgSA+IGbEk25nOyAjNUMwMQ0KK+WwgiA+IHpodcSBbjsgIzVDMDINCivlsIMgPiBmxas7ICM1QzAzDQor5bCEID4gc2jDqDsgIzVDMDQNCivlsIUgPiBrw6g7ICM1QzA1DQor5bCGID4gamnEgW5nOyAjNUMwNg0KK+WwhyA+IGppxIFuZzsgIzVDMDcNCivlsIggPiB6aHXEgW47ICM1QzA4DQor5bCJID4gd8OoaTsgIzVDMDkNCivlsIogPiB6xatuOyAjNUMwQQ0KK+WwiyA+IHjDum47ICM1QzBCDQor5bCMID4gc2jDuTsgIzVDMEMNCivlsI0gPiBkw7lpOyAjNUMwRA0KK+WwjiA+IGTEg287ICM1QzBFDQor5bCPID4geGnEg287ICM1QzBGDQor5bCQID4gasSrOyAjNUMxMA0KK+WwkSA+IHNoxINvOyAjNUMxMQ0KK+WwkiA+IMSVcjsgIzVDMTINCivlsJMgPiDElXI7ICM1QzEzDQor5bCUID4gxJVyOyAjNUMxNA0KK+WwlSA+IGfEgzsgIzVDMTUNCivlsJYgPiBqacSBbjsgIzVDMTYNCivlsJcgPiBzaMO6OyAjNUMxNw0KK+WwmCA+IGNow6luOyAjNUMxOA0KK+WwmSA+IHNow6BuZzsgIzVDMTkNCivlsJogPiBzaMOgbmc7ICM1QzFBDQor5bCbID4gbW87ICM1QzFCDQor5bCcID4gZ8OhOyAjNUMxQw0KK+WwnSA+IGNow6FuZzsgIzVDMUQNCivlsJ4gPiBsacOgbzsgIzVDMUUNCivlsJ8gPiB4acSDbjsgIzVDMUYNCivlsKAgPiB4acSDbjsgIzVDMjANCivlsKIgPiB3xIFuZzsgIzVDMjINCivlsKMgPiB3xIFuZzsgIzVDMjMNCivlsKQgPiB5w7N1OyAjNUMyNA0KK+WwpSA+IGxpw6BvOyAjNUMyNQ0KK+WwpiA+IGxpw6BvOyAjNUMyNg0KK+WwpyA+IHnDoW87ICM1QzI3DQor5bCoID4gbcOhbmc7ICM1QzI4DQor5bCpID4gd8SBbmc7ICM1QzI5DQor5bCqID4gd8SBbmc7ICM1QzJBDQor5bCrID4gd8SBbmc7ICM1QzJCDQor5bCsID4gZ8OgOyAjNUMyQw0KK+WwrSA+IHnDoW87ICM1QzJEDQor5bCuID4gZMO5bzsgIzVDMkUNCivlsK8gPiBrw7lpOyAjNUMyRg0KK+WwsCA+IHpoxY9uZzsgIzVDMzANCivlsLEgPiBqw6x1OyAjNUMzMQ0KK+WwsiA+IGfEgW47ICM1QzMyDQor5bCzID4gZ8WtOyAjNUMzMw0KK+WwtCA+IGfEgW47ICM1QzM0DQor5bC1ID4gdMO6aTsgIzVDMzUNCivlsLYgPiBnxIFuOyAjNUMzNg0KK+WwtyA+IGfEgW47ICM1QzM3DQor5bC4ID4gc2jEqzsgIzVDMzgNCivlsLkgPiB5xK1uOyAjNUMzOQ0KK+WwuiA+IGNoxK07ICM1QzNBDQor5bC7ID4ga8SBbzsgIzVDM0INCivlsLwgPiBuw607ICM1QzNDDQor5bC9ID4gasStbjsgIzVDM0QNCivlsL4gPiB3xJVpOyAjNUMzRQ0KK+WwvyA+IG5pw6BvOyAjNUMzRg0KK+WxgCA+IGrDujsgIzVDNDANCivlsYEgPiBww6w7ICM1QzQxDQor5bGCID4gY8Opbmc7ICM1QzQyDQor5bGDID4geMOsOyAjNUM0Mw0KK+WxhCA+IGLEqzsgIzVDNDQNCivlsYUgPiBqxas7ICM1QzQ1DQor5bGGID4gamnDqDsgIzVDNDYNCivlsYcgPiB0acOhbjsgIzVDNDcNCivlsYggPiBxxas7ICM1QzQ4DQor5bGJID4gdMOsOyAjNUM0OQ0KK+WxiiA+IGppw6g7ICM1QzRBDQor5bGLID4gd8WrOyAjNUM0Qg0KK+WxjCA+IGRpxINvOyAjNUM0Qw0KK+WxjSA+IHNoxKs7ICM1QzREDQor5bGOID4gc2jErTsgIzVDNEUNCivlsY8gPiBww61uZzsgIzVDNEYNCivlsZAgPiBqxKs7ICM1QzUwDQor5bGRID4geGnDqDsgIzVDNTENCivlsZIgPiBjaMOpbjsgIzVDNTINCivlsZMgPiB4w6w7ICM1QzUzDQor5bGUID4gbsOtOyAjNUM1NA0KK+WxlSA+IHpoxINuOyAjNUM1NQ0KK+WxliA+IHjEqzsgIzVDNTYNCivlsZggPiBtxINuOyAjNUM1OA0KK+WxmSA+IMSTOyAjNUM1OQ0KK+WxmiA+IGzDsnU7ICM1QzVBDQor5bGbID4gcMOtbmc7ICM1QzVCDQor5bGcID4gdMOsOyAjNUM1Qw0KK+WxnSA+IGbDqGk7ICM1QzVEDQor5bGeID4gc2jFrTsgIzVDNUUNCivlsZ8gPiB4acOoOyAjNUM1Rg0KK+WxoCA+IHTDujsgIzVDNjANCivlsaEgPiBsx5o7ICM1QzYxDQor5bGiID4gbMeaOyAjNUM2Mg0KK+WxoyA+IHjErTsgIzVDNjMNCivlsaQgPiBjw6luZzsgIzVDNjQNCivlsaUgPiBsx5o7ICM1QzY1DQor5bGmID4gasO5OyAjNUM2Ng0KK+WxpyA+IHhpw6g7ICM1QzY3DQor5bGoID4gasO5OyAjNUM2OA0KK+WxqSA+IGp1xJM7ICM1QzY5DQor5bGqID4gbGnDoW87ICM1QzZBDQor5bGrID4ganXDqTsgIzVDNkINCivlsawgPiBzaMWtOyAjNUM2Qw0KK+WxrSA+IHjDrDsgIzVDNkQNCivlsa4gPiBjaMOoOyAjNUM2RQ0KK+WxryA+IHTDum47ICM1QzZGDQor5bGwID4gbsOsOyAjNUM3MA0KK+WxsSA+IHNoxIFuOyAjNUM3MQ0KK+WxsyA+IHhpxIFuOyAjNUM3Mw0KK+WxtCA+IGzDrDsgIzVDNzQNCivlsbUgPiB4dcSTOyAjNUM3NQ0KK+WxuCA+IGzDs25nOyAjNUM3OA0KK+WxuSA+IHnDrDsgIzVDNzkNCivlsbogPiBxxK07ICM1QzdBDQor5bG7ID4gcsOobjsgIzVDN0INCivlsbwgPiB3w7k7ICM1QzdDDQor5bG9ID4gaMOgbjsgIzVDN0QNCivlsb4gPiBzaMSTbjsgIzVDN0UNCivlsb8gPiB5xa07ICM1QzdGDQor5bKAID4gY2jFqzsgIzVDODANCivlsoEgPiBzw7lpOyAjNUM4MQ0KK+WygiA+IHHErTsgIzVDODINCivlsoQgPiB5dcOoOyAjNUM4NA0KK+WyhSA+IGLEg247ICM1Qzg1DQor5bKGID4gecSDbzsgIzVDODYNCivlsocgPiDDoW5nOyAjNUM4Nw0KK+WyiCA+IHnDoTsgIzVDODgNCivlsokgPiB3w7k7ICM1Qzg5DQor5bKKID4gamnDqTsgIzVDOEENCivlsosgPiDDqDsgIzVDOEINCivlsowgPiBqw607ICM1QzhDDQor5bKNID4gcWnEgW47ICM1QzhEDQor5bKOID4gZsSTbjsgIzVDOEUNCivlso8gPiB5dcOhbjsgIzVDOEYNCivlspAgPiBxw607ICM1QzkwDQor5bKRID4gY8OpbjsgIzVDOTENCivlspIgPiBxacOhbjsgIzVDOTINCivlspMgPiBxw607ICM1QzkzDQor5bKUID4gY2jDoDsgIzVDOTQNCivlspUgPiBqacOoOyAjNUM5NQ0KK+WyliA+IHHFqzsgIzVDOTYNCivlspcgPiBnxINuZzsgIzVDOTcNCivlspggPiB4acOgbjsgIzVDOTgNCivlspkgPiDDoG87ICM1Qzk5DQor5bKaID4gbMOhbjsgIzVDOUENCivlspsgPiBkxINvOyAjNUM5Qg0KK+WynCA+IGLEgTsgIzVDOUMNCivlsp0gPiB6w7lvOyAjNUM5RA0KK+WyniA+IHrDuW87ICM1QzlFDQor5bKfID4gecSDbmc7ICM1QzlGDQor5bKgID4gasO5OyAjNUNBMA0KK+WyoSA+IGfEgW5nOyAjNUNBMQ0KK+WyoiA+IGvElTsgIzVDQTINCivlsqMgPiBnxY91OyAjNUNBMw0KK+WypCA+IHh1w6g7ICM1Q0E0DQor5bKlID4gYsSTaTsgIzVDQTUNCivlsqYgPiBsw6w7ICM1Q0E2DQor5bKnID4gdGnDoW87ICM1Q0E3DQor5bKoID4gasWrOyAjNUNBOA0KK+WyqSA+IHnDoW47ICM1Q0E5DQor5bKqID4gZsO6OyAjNUNBQQ0KK+WyqyA+IHjDrHU7ICM1Q0FCDQor5bKsID4gamnEgzsgIzVDQUMNCivlsq0gPiBsw61uZzsgIzVDQUQNCivlsq4gPiB0w7pvOyAjNUNBRQ0KK+WyryA+IHDEk2k7ICM1Q0FGDQor5bKwID4gecWPdTsgIzVDQjANCivlsrEgPiBkw6BpOyAjNUNCMQ0KK+WysiA+IGt1w6BuZzsgIzVDQjINCivlsrMgPiB5dcOoOyAjNUNCMw0KK+WytCA+IHHFqzsgIzVDQjQNCivlsrUgPiBow7k7ICM1Q0I1DQor5bK2ID4gcMOyOyAjNUNCNg0KK+WytyA+IG3DrW47ICM1Q0I3DQor5bK4ID4gw6BuOyAjNUNCOA0KK+WyuSA+IHRpw6FvOyAjNUNCOQ0KK+WyuiA+IGzDrW5nOyAjNUNCQQ0KK+WyuyA+IGNow607ICM1Q0JCDQor5bK9ID4gZMWNbmc7ICM1Q0JEDQor5bK/ID4ga8WraTsgIzVDQkYNCivls4AgPiB4w6x1OyAjNUNDMA0KK+WzgSA+IG3Eg287ICM1Q0MxDQor5bOCID4gdMOzbmc7ICM1Q0MyDQor5bODID4geHXDqTsgIzVDQzMNCivls4QgPiB5w6w7ICM1Q0M0DQor5bOGID4gaMSTOyAjNUNDNg0KK+WzhyA+IGvEkzsgIzVDQzcNCivls4ggPiBsw7lvOyAjNUNDOA0KK+WziSA+IMSTOyAjNUNDOQ0KK+WziiA+IGbDuTsgIzVDQ0ENCivls4sgPiB4w7puOyAjNUNDQg0KK+WzjCA+IGRpw6k7ICM1Q0NDDQor5bONID4gbMO5OyAjNUNDRA0KK+WzjiA+IMSBbjsgIzVDQ0UNCivls48gPiDElXI7ICM1Q0NGDQor5bOQID4gZ8SBaTsgIzVDRDANCivls5EgPiBxdcOhbjsgIzVDRDENCivls5IgPiB0w7NuZzsgIzVDRDINCivls5MgPiB5w607ICM1Q0QzDQor5bOUID4gbcWtOyAjNUNENA0KK+WzlSA+IHNow607ICM1Q0Q1DQor5bOWID4gxIFuOyAjNUNENg0KK+WzlyA+IHfDqWk7ICM1Q0Q3DQor5bOYID4gaMWrOyAjNUNEOA0KK+WzmSA+IHpow6w7ICM1Q0Q5DQor5bOaID4gbcOsOyAjNUNEQQ0KK+WzmyA+IGzErTsgIzVDREINCivls5wgPiBqxKs7ICM1Q0RDDQor5bOdID4gdMOzbmc7ICM1Q0REDQor5bOeID4gd8OpaTsgIzVDREUNCivls58gPiB5w7J1OyAjNUNERg0KK+WzoSA+IHhpw6E7ICM1Q0UxDQor5bOiID4gbMStOyAjNUNFMg0KK+WzoyA+IHnDoW87ICM1Q0UzDQor5bOkID4gamnDoG87ICM1Q0U0DQor5bOlID4gemjEk25nOyAjNUNFNQ0KK+WzpiA+IGx1w6FuOyAjNUNFNg0KK+WzpyA+IGppxIFvOyAjNUNFNw0KK+WzqCA+IMOpOyAjNUNFOA0KK+WzqSA+IMOpOyAjNUNFOQ0KK+WzqiA+IHnDuTsgIzVDRUENCivls6sgPiB5w6k7ICM1Q0VCDQor5bOsID4gYsWrOyAjNUNFQw0KK+WzrSA+IHFpw6BvOyAjNUNFRA0KK+WzriA+IHHFq247ICM1Q0VFDQor5bOvID4gZsSTbmc7ICM1Q0VGDQor5bOwID4gZsSTbmc7ICM1Q0YwDQor5bOxID4gbsOhbzsgIzVDRjENCivls7IgPiBsxK07ICM1Q0YyDQor5bOzID4gecOzdTsgIzVDRjMNCivls7QgPiB4acOgbjsgIzVDRjQNCivls7UgPiBow7NuZzsgIzVDRjUNCivls7YgPiBkxINvOyAjNUNGNg0KK+WztyA+IHNoxJNuOyAjNUNGNw0KK+WzuCA+IGNow6luZzsgIzVDRjgNCivls7kgPiB0w7o7ICM1Q0Y5DQor5bO6ID4gZ8SVbmc7ICM1Q0ZBDQor5bO7ID4gasO5bjsgIzVDRkINCivls7wgPiBow6BvOyAjNUNGQw0KK+WzvSA+IHhpw6E7ICM1Q0ZEDQor5bO+ID4gecSrbjsgIzVDRkUNCivls78gPiB5xa07ICM1Q0ZGDQor5bSAID4gbMOgbmc7ICM1RDAwDQor5bSBID4ga8SDbjsgIzVEMDENCivltIIgPiBsw6FvOyAjNUQwMg0KK+W0gyA+IGzDoWk7ICM1RDAzDQor5bSEID4geGnEg247ICM1RDA0DQor5bSFID4gcXXDqDsgIzVEMDUNCivltIYgPiBrxY1uZzsgIzVEMDYNCivltIcgPiBjaMOzbmc7ICM1RDA3DQor5bSIID4gY2jDs25nOyAjNUQwOA0KK+W0iSA+IHTDoDsgIzVEMDkNCivltIogPiBsaW47ICM1RDBBDQor5bSLID4gaHXDoTsgIzVEMEINCivltIwgPiBqxas7ICM1RDBDDQor5bSNID4gbMOhaTsgIzVEMEQNCivltI4gPiBxw607ICM1RDBFDQor5bSPID4gbcOtbjsgIzVEMEYNCivltJAgPiBrxatuOyAjNUQxMA0KK+W0kSA+IGvFq247ICM1RDExDQor5bSSID4gesO6OyAjNUQxMg0KK+W0kyA+IGfDuTsgIzVEMTMNCivltJQgPiBjxatpOyAjNUQxNA0KK+W0lSA+IHnDoTsgIzVEMTUNCivltJYgPiB5w6E7ICM1RDE2DQor5bSXID4gZ8SDbmc7ICM1RDE3DQor5bSYID4gbMO6bjsgIzVEMTgNCivltJkgPiBsw7puOyAjNUQxOQ0KK+W0miA+IGzDqW5nOyAjNUQxQQ0KK+W0myA+IGp1w6k7ICM1RDFCDQor5bScID4gZMWrbzsgIzVEMUMNCivltJ0gPiB6aMSTbmc7ICM1RDFEDQor5bSeID4gZ8WrbzsgIzVEMUUNCivltJ8gPiB5w61uOyAjNUQxRg0KK+W0oCA+IGTFjW5nOyAjNUQyMA0KK+W0oSA+IGjDoW47ICM1RDIxDQor5bSiID4gemjEk25nOyAjNUQyMg0KK+W0oyA+IHfElWk7ICM1RDIzDQor5bSkID4gecOhbzsgIzVEMjQNCivltKUgPiBwxK07ICM1RDI1DQor5bSmID4gecSBbjsgIzVEMjYNCivltKcgPiBzxY1uZzsgIzVEMjcNCivltKggPiBqacOpOyAjNUQyOA0KK+W0qSA+IGLEk25nOyAjNUQyOQ0KK+W0qiA+IHrDujsgIzVEMkENCivltKsgPiBqdcOpOyAjNUQyQg0KK+W0rCA+IGTFjW5nOyAjNUQyQw0KK+W0rSA+IHpoxINuOyAjNUQyRA0KK+W0riA+IGfDuTsgIzVEMkUNCivltK8gPiB5w61uOyAjNUQyRg0KK+W0sSA+IHrDqTsgIzVEMzENCivltLIgPiBodcOhbmc7ICM1RDMyDQor5bSzID4gecO6OyAjNUQzMw0KK+W0tCA+IHfEk2k7ICM1RDM0DQor5bS1ID4gecOhbmc7ICM1RDM1DQor5bS2ID4gZsSTbmc7ICM1RDM2DQor5bS3ID4gccOtdTsgIzVEMzcNCivltLggPiBkw7luOyAjNUQzOA0KK+W0uSA+IHTDrTsgIzVEMzkNCivltLogPiB5xK07ICM1RDNBDQor5bS7ID4gemjDrDsgIzVEM0INCivltLwgPiBzaMOsOyAjNUQzQw0KK+W0vSA+IHrEg2k7ICM1RDNEDQor5bS+ID4gecSDbzsgIzVEM0UNCivltL8gPiDDqDsgIzVEM0YNCivltYAgPiB6aMO5OyAjNUQ0MA0KK+W1gSA+IGvEgW47ICM1RDQxDQor5bWCID4gbMecOyAjNUQ0Mg0KK+W1gyA+IHnEg247ICM1RDQzDQor5bWEID4gbcSVaTsgIzVENDQNCivltYUgPiBnxIFuOyAjNUQ0NQ0KK+W1hiA+IGrEqzsgIzVENDYNCivltYcgPiBqxKs7ICM1RDQ3DQor5bWIID4gaHXEg247ICM1RDQ4DQor5bWJID4gdMOtbmc7ICM1RDQ5DQor5bWKID4gc2jDqG5nOyAjNUQ0QQ0KK+W1iyA+IG3DqWk7ICM1RDRCDQor5bWMID4gcWnDoG47ICM1RDRDDQor5bWNID4gd8O5OyAjNUQ0RA0KK+W1jiA+IHnDujsgIzVENEUNCivltY8gPiB6xY1uZzsgIzVENEYNCivltZAgPiBsw6FuOyAjNUQ1MA0KK+W1kSA+IGp1w6k7ICM1RDUxDQor5bWSID4gecOhbjsgIzVENTINCivltZMgPiB5w6FuOyAjNUQ1Mw0KK+W1lCA+IHfElWk7ICM1RDU0DQor5bWVID4gesWNbmc7ICM1RDU1DQor5bWWID4gY2jDoTsgIzVENTYNCivltZcgPiBzw7lpOyAjNUQ1Nw0KK+W1mCA+IHLDs25nOyAjNUQ1OA0KK+W1miA+IHHEq247ICM1RDVBDQor5bWbID4gecO6OyAjNUQ1Qg0KK+W1nSA+IGzFj3U7ICM1RDVEDQor5bWeID4gdMO6OyAjNUQ1RQ0KK+W1nyA+IGTFq2k7ICM1RDVGDQor5bWgID4geMSrOyAjNUQ2MA0KK+W1oSA+IHfEk25nOyAjNUQ2MQ0KK+W1oiA+IGPEgW5nOyAjNUQ2Mg0KK+W1oyA+IGTEgW5nOyAjNUQ2Mw0KK+W1pCA+IGjDs25nOyAjNUQ2NA0KK+W1pSA+IGppw6k7ICM1RDY1DQor5bWmID4gw6FpOyAjNUQ2Ng0KK+W1pyA+IGzDrXU7ICM1RDY3DQor5bWoID4gd8WtOyAjNUQ2OA0KK+W1qSA+IHPFjW5nOyAjNUQ2OQ0KK+W1qiA+IHFpxIFvOyAjNUQ2QQ0KK+W1qyA+IHrEqzsgIzVENkINCivltawgPiB3w6lpOyAjNUQ2Qw0KK+W1rSA+IGLEk25nOyAjNUQ2RA0KK+W1riA+IGRpxIFuOyAjNUQ2RQ0KK+W1ryA+IGPDum87ICM1RDZGDQor5bWwID4gcWnEg247ICM1RDcwDQor5bWxID4gecWPbmc7ICM1RDcxDQor5bWyID4gbmnDqDsgIzVENzINCivltbMgPiBjw7pvOyAjNUQ3Mw0KK+W1tCA+IGrDrTsgIzVENzQNCivltbcgPiBzxY9uZzsgIzVENzcNCivltbggPiB6xY1uZzsgIzVENzgNCivltbkgPiBqacOgbmc7ICM1RDc5DQor5bW6ID4gbGnDoW87ICM1RDdBDQor5bW7ID4ga2FuZzsgIzVEN0INCivltbwgPiBjaMSDbjsgIzVEN0MNCivltb0gPiBkacOpOyAjNUQ3RA0KK+W1viA+IGPEk247ICM1RDdFDQor5bW/ID4gZMStbmc7ICM1RDdGDQor5baAID4gdMWrOyAjNUQ4MA0KK+W2gSA+IGzFj3U7ICM1RDgxDQor5baCID4gemjDoG5nOyAjNUQ4Mg0KK+W2gyA+IHpoxINuOyAjNUQ4Mw0KK+W2hCA+IHpoxINuOyAjNUQ4NA0KK+W2hSA+IMOhbzsgIzVEODUNCivltoYgPiBjw6FvOyAjNUQ4Ng0KK+W2hyA+IHHFqzsgIzVEODcNCivltoggPiBxacSBbmc7ICM1RDg4DQor5baJID4gesWraTsgIzVEODkNCivltoogPiB6xa1pOyAjNUQ4QQ0KK+W2iyA+IGTEg287ICM1RDhCDQor5baMID4gZMSDbzsgIzVEOEMNCivlto0gPiB4w607ICM1RDhEDQor5baOID4gecO5OyAjNUQ4RQ0KK+W2jyA+IGLDszsgIzVEOEYNCivltpAgPiBsw7NuZzsgIzVEOTANCivltpEgPiB4acSDbmc7ICM1RDkxDQor5baSID4gY8Opbmc7ICM1RDkyDQor5baTID4gYsWNOyAjNUQ5Mw0KK+W2lCA+IHHEq247ICM1RDk0DQor5baVID4gamnEgW87ICM1RDk1DQor5baWID4gecSDbjsgIzVEOTYNCivltpcgPiBsw6FvOyAjNUQ5Nw0KK+W2mCA+IHpow6BuOyAjNUQ5OA0KK+W2mSA+IGzDrW47ICM1RDk5DQor5baaID4gbGnDoW87ICM1RDlBDQor5babID4gbGnDoW87ICM1RDlCDQor5bacID4gasSrbjsgIzVEOUMNCivltp0gPiBkw6huZzsgIzVEOUQNCivltp4gPiBkw7lvOyAjNUQ5RQ0KK+W2nyA+IHrFq247ICM1RDlGDQor5bagID4gamnDoG87ICM1REEwDQor5bahID4gZ8O5aTsgIzVEQTENCivltqIgPiB5w6FvOyAjNURBMg0KK+W2oyA+IHFpw6FvOyAjNURBMw0KK+W2pCA+IHnDoW87ICM1REE0DQor5balID4ganXDqTsgIzVEQTUNCivltqYgPiB6aMSBbjsgIzVEQTYNCivltqcgPiB5w6w7ICM1REE3DQor5baoID4geHXDqTsgIzVEQTgNCivltqkgPiBuw6FvOyAjNURBOQ0KK+W2qiA+IHnDqDsgIzVEQUENCivltqsgPiB5w6g7ICM1REFCDQor5basID4gecOtOyAjNURBQw0KK+W2rSA+IMOoOyAjNURBRA0KK+W2riA+IHhpxINuOyAjNURBRQ0KK+W2ryA+IGrDrTsgIzVEQUYNCivltrAgPiB4acOoOyAjNURCMA0KK+W2sSA+IGvElTsgIzVEQjENCivltrIgPiB4xKs7ICM1REIyDQor5bazID4gZMOsOyAjNURCMw0KK+W2tCA+IMOgbzsgIzVEQjQNCivltrUgPiB6xa1pOyAjNURCNQ0KK+W2tyA+IG7DrDsgIzVEQjcNCivltrggPiByw7NuZzsgIzVEQjgNCivltrkgPiBkxINvOyAjNURCOQ0KK+W2uiA+IGzErW5nOyAjNURCQQ0KK+W2uyA+IHrDoTsgIzVEQkINCivltrwgPiB5xa07ICM1REJDDQor5ba9ID4geXXDqDsgIzVEQkQNCivltr4gPiB5xK1uOyAjNURCRQ0KK+W3gCA+IGppxJM7ICM1REMwDQor5beBID4gbMOsOyAjNURDMQ0KK+W3giA+IHPFrWk7ICM1REMyDQor5beDID4gbMOzbmc7ICM1REMzDQor5beEID4gbMOzbmc7ICM1REM0DQor5beFID4gZGnEgW47ICM1REM1DQor5beGID4gecOtbmc7ICM1REM2DQor5beHID4geMSrOyAjNURDNw0KK+W3iCA+IGrDujsgIzVEQzgNCivlt4kgPiBjaMOhbjsgIzVEQzkNCivlt4ogPiB5xK1uZzsgIzVEQ0ENCivlt4sgPiBrxatpOyAjNURDQg0KK+W3jCA+IHnDoW47ICM1RENDDQor5beNID4gd8STaTsgIzVEQ0QNCivlt44gPiBuw6FvOyAjNURDRQ0KK+W3jyA+IHF1w6FuOyAjNURDRg0KK+W3kCA+IGNoxINvOyAjNUREMA0KK+W3kSA+IGN1w6FuOyAjNUREMQ0KK+W3kiA+IGx1w6FuOyAjNUREMg0KK+W3kyA+IGRpxIFuOyAjNUREMw0KK+W3lCA+IGRpxIFuOyAjNURENA0KK+W3liA+IHnDoW47ICM1REQ2DQor5beXID4gecOhbjsgIzVERDcNCivlt5ggPiB5xINuOyAjNUREOA0KK+W3mSA+IG7DoW87ICM1REQ5DQor5beaID4gecSDbjsgIzVEREENCivlt5sgPiBjaHXEgW47ICM1RERCDQor5becID4gZ8O5aTsgIzVEREMNCivlt50gPiBjaHXEgW47ICM1REREDQor5beeID4gemjFjXU7ICM1RERFDQor5befID4gaHXEgW5nOyAjNURERg0KK+W3oCA+IGrEq25nOyAjNURFMA0KK+W3oSA+IHjDum47ICM1REUxDQor5beiID4gY2jDoW87ICM1REUyDQor5bejID4gY2jDoW87ICM1REUzDQor5bekID4gbGnEkzsgIzVERTQNCivlt6UgPiBnxY1uZzsgIzVERTUNCivlt6YgPiB6xa1vOyAjNURFNg0KK+W3pyA+IHFpxINvOyAjNURFNw0KK+W3qCA+IGrDuTsgIzVERTgNCivlt6kgPiBnxY9uZzsgIzVERTkNCivlt6sgPiB3xas7ICM1REVCDQor5beuID4gY2jEgWk7ICM1REVFDQor5bevID4gccOtdTsgIzVERUYNCivlt7AgPiBxw611OyAjNURGMA0KK+W3sSA+IGrErTsgIzVERjENCivlt7IgPiB5xK07ICM1REYyDQor5bezID4gc8OsOyAjNURGMw0KK+W3tCA+IGLEgTsgIzVERjQNCivlt7UgPiB6aMSrOyAjNURGNQ0KK+W3tiA+IHpoxIFvOyAjNURGNg0KK+W3tyA+IHhpw6BuZzsgIzVERjcNCivlt7ggPiB5w607ICM1REY4DQor5be5ID4gasStbjsgIzVERjkNCivlt7ogPiB4w7luOyAjNURGQQ0KK+W3uyA+IGp1w6BuOyAjNURGQg0KK+W3vSA+IHjDuW47ICM1REZEDQor5be+ID4gasSrbjsgIzVERkUNCivlt78gPiBmw7o7ICM1REZGDQor5biAID4gesSBOyAjNUUwMA0KK+W4gSA+IGLDrDsgIzVFMDENCivluIIgPiBzaMOsOyAjNUUwMg0KK+W4gyA+IGLDuTsgIzVFMDMNCivluIQgPiBkxKtuZzsgIzVFMDQNCivluIUgPiBzaHXDoGk7ICM1RTA1DQor5biGID4gZsSBbjsgIzVFMDYNCivluIcgPiBuacOoOyAjNUUwNw0KK+W4iCA+IHNoxKs7ICM1RTA4DQor5biJID4gZsSTbjsgIzVFMDkNCivluIogPiBww6A7ICM1RTBBDQor5biLID4gemjErTsgIzVFMEINCivluIwgPiB4xKs7ICM1RTBDDQor5biNID4gaMO5OyAjNUUwRA0KK+W4jiA+IGTDoG47ICM1RTBFDQor5biPID4gd8OpaTsgIzVFMEYNCivluJAgPiB6aMOgbmc7ICM1RTEwDQor5biRID4gdMSDbmc7ICM1RTExDQor5biSID4gZMOgaTsgIzVFMTINCivluJMgPiBtw6A7ICM1RTEzDQor5biUID4gcMOoaTsgIzVFMTQNCivluJUgPiBww6A7ICM1RTE1DQor5biWID4gdGnEkzsgIzVFMTYNCivluJcgPiBmw7o7ICM1RTE3DQor5biYID4gbGnDoW47ICM1RTE4DQor5biZID4gemjDrDsgIzVFMTkNCivluJogPiB6aMWPdTsgIzVFMUENCivluJsgPiBiw7M7ICM1RTFCDQor5bicID4gemjDrDsgIzVFMUMNCivluJ0gPiBkw6w7ICM1RTFEDQor5bieID4gbcOyOyAjNUUxRQ0KK+W4nyA+IHnDrDsgIzVFMUYNCivluKAgPiB5w6w7ICM1RTIwDQor5bihID4gcMOtbmc7ICM1RTIxDQor5biiID4gcWnDoDsgIzVFMjINCivluKMgPiBqdcOgbjsgIzVFMjMNCivluKQgPiByw7o7ICM1RTI0DQor5bilID4gc2h1w6BpOyAjNUUyNQ0KK+W4piA+IGTDoGk7ICM1RTI2DQor5binID4gemjDqG5nOyAjNUUyNw0KK+W4qCA+IHNow7lpOyAjNUUyOA0KK+W4qSA+IHFpw6BvOyAjNUUyOQ0KK+W4qiA+IHpoxJNuOyAjNUUyQQ0KK+W4qyA+IHNoxKs7ICM1RTJCDQor5bisID4gccO6bjsgIzVFMkMNCivluK0gPiB4w607ICM1RTJEDQor5biuID4gYsSBbmc7ICM1RTJFDQor5bivID4gZMOgaTsgIzVFMkYNCivluLAgPiBnxatpOyAjNUUzMA0KK+W4sSA+IGNow7N1OyAjNUUzMQ0KK+W4siA+IHDDrW5nOyAjNUUzMg0KK+W4syA+IHpow6BuZzsgIzVFMzMNCivluLQgPiBzaMSBOyAjNUUzNA0KK+W4tSA+IHfEgW47ICM1RTM1DQor5bi2ID4gZMOgaTsgIzVFMzYNCivluLcgPiB3w6lpOyAjNUUzNw0KK+W4uCA+IGNow6FuZzsgIzVFMzgNCivluLkgPiBzaMOgOyAjNUUzOQ0KK+W4uiA+IHHDrTsgIzVFM0ENCivluLsgPiB6w6k7ICM1RTNCDQor5bi8ID4gZ8O6bzsgIzVFM0MNCivluL0gPiBtw6BvOyAjNUUzRA0KK+W4viA+IGTFrTsgIzVFM0UNCivluL8gPiBow7N1OyAjNUUzRg0KK+W5gCA+IHpow6huZzsgIzVFNDANCivluYEgPiB4xas7ICM1RTQxDQor5bmCID4gbcOsOyAjNUU0Mg0KK+W5gyA+IHfDqWk7ICM1RTQzDQor5bmEID4gd8OyOyAjNUU0NA0KK+W5hSA+IGbDujsgIzVFNDUNCivluYYgPiB5w6w7ICM1RTQ2DQor5bmHID4gYsSBbmc7ICM1RTQ3DQor5bmIID4gcMOtbmc7ICM1RTQ4DQor5bmKID4gZ8WNbmc7ICM1RTRBDQor5bmLID4gcMOhbjsgIzVFNEINCivluYwgPiBodcSDbmc7ICM1RTRDDQor5bmNID4gZMSBbzsgIzVFNEQNCivluY4gPiBtw6w7ICM1RTRFDQor5bmPID4gamnEgTsgIzVFNEYNCivluZAgPiB0w6luZzsgIzVFNTANCivluZEgPiBoxatpOyAjNUU1MQ0KK+W5kiA+IHpoxY1uZzsgIzVFNTINCivluZMgPiBzaMSBbjsgIzVFNTMNCivluZQgPiBtw6BuOyAjNUU1NA0KK+W5lSA+IG3DuTsgIzVFNTUNCivluZYgPiBiacSBbzsgIzVFNTYNCivluZcgPiBnw7pvOyAjNUU1Nw0KK+W5mCA+IHrDqTsgIzVFNTgNCivluZkgPiBtw7k7ICM1RTU5DQor5bmaID4gYsSBbmc7ICM1RTVBDQor5bmbID4gemjDoG5nOyAjNUU1Qg0KK+W5nCA+IGrErW9uZzsgIzVFNUMNCivluZ0gPiBjaMSDbjsgIzVFNUQNCivluZ4gPiBmw7o7ICM1RTVFDQor5bmfID4gemjDrDsgIzVFNUYNCivluaAgPiBoxas7ICM1RTYwDQor5bmhID4gZsSBbjsgIzVFNjENCivluaIgPiBjaHXDoW5nOyAjNUU2Mg0KK+W5oyA+IGLDrDsgIzVFNjMNCivluaYgPiBtw6w7ICM1RTY2DQor5bmnID4gcWnEgW87ICM1RTY3DQor5bmoID4gY2jEgW47ICM1RTY4DQor5bmpID4gZsOpbjsgIzVFNjkNCivluaogPiBtw6luZzsgIzVFNkENCivluasgPiBixIFuZzsgIzVFNkINCivluawgPiBjaMOzdTsgIzVFNkMNCivlua0gPiBtacOoOyAjNUU2RA0KK+W5riA+IGNow7o7ICM1RTZFDQor5bmvID4gamnDqTsgIzVFNkYNCivlubAgPiB4acSDbjsgIzVFNzANCivlubEgPiBsw6FuOyAjNUU3MQ0KK+W5siA+IGfEgW47ICM1RTcyDQor5bmzID4gcMOtbmc7ICM1RTczDQor5bm0ID4gbmnDoW47ICM1RTc0DQor5bm1ID4gcWnEgW47ICM1RTc1DQor5bm2ID4gYsOsbmc7ICM1RTc2DQor5bm3ID4gYsOsbmc7ICM1RTc3DQor5bm4ID4geMOsbmc7ICM1RTc4DQor5bm5ID4gZ8OgbjsgIzVFNzkNCivlubogPiB5xIFvOyAjNUU3QQ0KK+W5uyA+IGh1w6BuOyAjNUU3Qg0KK+W5vCA+IHnDsnU7ICM1RTdDDQor5bm9ID4gecWNdTsgIzVFN0QNCivlub4gPiBqxK07ICM1RTdFDQor5bm/ID4gecSDbjsgIzVFN0YNCivluoAgPiBwxK07ICM1RTgwDQor5bqBID4gdMSrbmc7ICM1RTgxDQor5bqCID4gesOoOyAjNUU4Mg0KK+W6gyA+IGd1xINuZzsgIzVFODMNCivluoQgPiB6aHXEgW5nOyAjNUU4NA0KK+W6hSA+IG1vOyAjNUU4NQ0KK+W6hiA+IHHDrG5nOyAjNUU4Ng0KK+W6hyA+IGLDrDsgIzVFODcNCivluoggPiBxw61uOyAjNUU4OA0KK+W6iSA+IGTDuW47ICM1RTg5DQor5bqKID4gY2h1w6FuZzsgIzVFOEENCivluosgPiBnxa1pOyAjNUU4Qg0KK+W6jCA+IHnEgzsgIzVFOEMNCivluo0gPiBiw6BpOyAjNUU4RA0KK+W6jiA+IGppw6g7ICM1RThFDQor5bqPID4geMO5OyAjNUU4Rg0KK+W6kCA+IGzDujsgIzVFOTANCivlupEgPiB3xa07ICM1RTkxDQor5bqTID4ga8O5OyAjNUU5Mw0KK+W6lCA+IHnDrG5nOyAjNUU5NA0KK+W6lSA+IGTErTsgIzVFOTUNCivlupYgPiBww6FvOyAjNUU5Ng0KK+W6lyA+IGRpw6BuOyAjNUU5Nw0KK+W6mCA+IHnEgTsgIzVFOTgNCivlupkgPiBtacOgbzsgIzVFOTkNCivlupogPiBnxJNuZzsgIzVFOUENCivlupsgPiBjxKs7ICM1RTlCDQor5bqcID4gZsWtOyAjNUU5Qw0KK+W6nSA+IHTDs25nOyAjNUU5RA0KK+W6niA+IHDDoW5nOyAjNUU5RQ0KK+W6nyA+IGbDqGk7ICM1RTlGDQor5bqgID4geGnDoW5nOyAjNUVBMA0KK+W6oSA+IHnErTsgIzVFQTENCivluqIgPiB6aMOsOyAjNUVBMg0KK+W6oyA+IHRpxIFvOyAjNUVBMw0KK+W6pCA+IHpow6w7ICM1RUE0DQor5bqlID4geMSrdTsgIzVFQTUNCivluqYgPiBkw7k7ICM1RUE2DQor5bqnID4gesO5bzsgIzVFQTcNCivluqggPiB4acSBbzsgIzVFQTgNCivluqkgPiB0w7o7ICM1RUE5DQor5bqqID4gZ8WtaTsgIzVFQUENCivluqsgPiBrw7k7ICM1RUFCDQor5bqsID4gcMOhbmc7ICM1RUFDDQor5bqtID4gdMOtbmc7ICM1RUFEDQor5bquID4gecWPdTsgIzVFQUUNCivluq8gPiBixas7ICM1RUFGDQor5bqwID4gZMSrbmc7ICM1RUIwDQor5bqxID4gY2jElW5nOyAjNUVCMQ0KK+W6siA+IGzDoWk7ICM1RUIyDQor5bqzID4gYsSTaTsgIzVFQjMNCivlurQgPiBqw607ICM1RUI0DQor5bq1ID4gxIFuOyAjNUVCNQ0KK+W6tiA+IHNow7k7ICM1RUI2DQor5bq3ID4ga8SBbmc7ICM1RUI3DQor5bq4ID4gecWNbmc7ICM1RUI4DQor5bq5ID4gdMWtbzsgIzVFQjkNCivlurogPiBzxY1uZzsgIzVFQkENCivlursgPiBzaMO5OyAjNUVCQg0KK+W6vCA+IHHErW5nOyAjNUVCQw0KK+W6vSA+IHnDuTsgIzVFQkQNCivlur4gPiB5xa07ICM1RUJFDQor5bq/ID4gbWnDoG87ICM1RUJGDQor5buAID4gc8WNdTsgIzVFQzANCivlu4EgPiBjw6g7ICM1RUMxDQor5buCID4geGnEgW5nOyAjNUVDMg0KK+W7gyA+IGbDqGk7ICM1RUMzDQor5buEID4gasOsdTsgIzVFQzQNCivlu4UgPiBow6k7ICM1RUM1DQor5buGID4gaMO5aTsgIzVFQzYNCivlu4cgPiBsw6x1OyAjNUVDNw0KK+W7iCA+IHNow6A7ICM1RUM4DQor5buJID4gbGnDoW47ICM1RUM5DQor5buKID4gbMOhbmc7ICM1RUNBDQor5buLID4gc8WNdTsgIzVFQ0INCivlu4wgPiBqacOgbjsgIzVFQ0MNCivlu40gPiBwxY91OyAjNUVDRA0KK+W7jiA+IHHErW5nOyAjNUVDRQ0KK+W7jyA+IGrDrHU7ICM1RUNGDQor5buQID4gasOsdTsgIzVFRDANCivlu5EgPiBxw61uOyAjNUVEMQ0KK+W7kiA+IMOhbzsgIzVFRDINCivlu5MgPiBrw7lvOyAjNUVEMw0KK+W7lCA+IGzDs3U7ICM1RUQ0DQor5buVID4gecSrbjsgIzVFRDUNCivlu5YgPiBsacOgbzsgIzVFRDYNCivlu5cgPiBkw6BpOyAjNUVENw0KK+W7mCA+IGzDuTsgIzVFRDgNCivlu5kgPiB5w6w7ICM1RUQ5DQor5buaID4gY2jDujsgIzVFREENCivlu5sgPiBjaMOhbjsgIzVFREINCivlu5wgPiB0xas7ICM1RURDDQor5budID4gc8SrOyAjNUVERA0KK+W7niA+IHjEq247ICM1RURFDQor5bufID4gbWnDoG87ICM1RURGDQor5bugID4gY2jEg25nOyAjNUVFMA0KK+W7oSA+IHfFrTsgIzVFRTENCivlu6IgPiBmw6hpOyAjNUVFMg0KK+W7oyA+IGd1xINuZzsgIzVFRTMNCivlu6UgPiBrdcOgaTsgIzVFRTUNCivlu6YgPiBiw6w7ICM1RUU2DQor5bunID4gcWnDoW5nOyAjNUVFNw0KK+W7qCA+IHhpw6g7ICM1RUU4DQor5bupID4gbMStbjsgIzVFRTkNCivlu6ogPiBsxK1uOyAjNUVFQQ0KK+W7qyA+IGxpw6FvOyAjNUVFQg0KK+W7rCA+IGzDujsgIzVFRUMNCivlu64gPiB5w61uZzsgIzVFRUUNCivlu68gPiB4acSBbjsgIzVFRUYNCivlu7AgPiB0xKtuZzsgIzVFRjANCivlu7EgPiB5xY1uZzsgIzVFRjENCivlu7IgPiBsw607ICM1RUYyDQor5buzID4gdMSrbmc7ICM1RUYzDQor5bu0ID4gecStbjsgIzVFRjQNCivlu7UgPiB4w7puOyAjNUVGNQ0KK+W7tiA+IHnDoW47ICM1RUY2DQor5bu3ID4gdMOtbmc7ICM1RUY3DQor5bu4ID4gZMOtOyAjNUVGOA0KK+W7uSA+IHDDsjsgIzVFRjkNCivlu7ogPiBqacOgbjsgIzVFRkENCivlu7sgPiBow7ppOyAjNUVGQg0KK+W7vCA+IG7Eg2k7ICM1RUZDDQor5bu9ID4gaMO6aTsgIzVFRkQNCivlu74gPiBnw7JuZzsgIzVFRkUNCivlu78gPiBuacOgbjsgIzVFRkYNCivlvIAgPiBrxIFpOyAjNUYwMA0KK+W8gSA+IGJpw6BuOyAjNUYwMQ0KK+W8giA+IHnDrDsgIzVGMDINCivlvIMgPiBxw6w7ICM1RjAzDQor5byEID4gbsOybmc7ICM1RjA0DQor5byFID4gZsOpbjsgIzVGMDUNCivlvIYgPiBqxa07ICM1RjA2DQor5byHID4gecSDbjsgIzVGMDcNCivlvIggPiB5w6w7ICM1RjA4DQor5byJID4gesOgbmc7ICM1RjA5DQor5byKID4gYsOsOyAjNUYwQQ0KK+W8iyA+IHnDrDsgIzVGMEINCivlvIwgPiB5xKs7ICM1RjBDDQor5byNID4gw6hyOyAjNUYwRA0KK+W8jiA+IHPEgW47ICM1RjBFDQor5byPID4gc2jDrDsgIzVGMEYNCivlvJAgPiDDqHI7ICM1RjEwDQor5byRID4gc2jDrDsgIzVGMTENCivlvJIgPiBzaMOsOyAjNUYxMg0KK+W8kyA+IGfFjW5nOyAjNUYxMw0KK+W8lCA+IGRpw6BvOyAjNUYxNA0KK+W8lSA+IHnErW47ICM1RjE1DQor5byWID4gaMO5OyAjNUYxNg0KK+W8lyA+IGbDujsgIzVGMTcNCivlvJggPiBow7NuZzsgIzVGMTgNCivlvJkgPiB3xas7ICM1RjE5DQor5byaID4gdMO6aTsgIzVGMUENCivlvJsgPiBjaMOtOyAjNUYxQg0KK+W8nCA+IGppw6BuZzsgIzVGMUMNCivlvJ0gPiBiw6A7ICM1RjFEDQor5byeID4gc2jElW47ICM1RjFFDQor5byfID4gZMOsOyAjNUYxRg0KK+W8oCA+IHpoxIFuZzsgIzVGMjANCivlvKEgPiBqdcOpOyAjNUYyMQ0KK+W8oiA+IHTEgW87ICM1RjIyDQor5byjID4gZsWtOyAjNUYyMw0KK+W8pCA+IGTErTsgIzVGMjQNCivlvKUgPiBtw607ICM1RjI1DQor5bymID4geGnDoW47ICM1RjI2DQor5bynID4gaMO6OyAjNUYyNw0KK+W8qCA+IGNoxIFvOyAjNUYyOA0KK+W8qSA+IG7FrTsgIzVGMjkNCivlvKogPiBqw6xuZzsgIzVGMkENCivlvKsgPiB6aMSVbjsgIzVGMkINCivlvKwgPiB5w607ICM1RjJDDQor5bytID4gbcStOyAjNUYyRA0KK+W8riA+IHF1xIFuOyAjNUYyRQ0KK+W8ryA+IHfEgW47ICM1RjJGDQor5bywID4gc2jEgW87ICM1RjMwDQor5byxID4gcsO5bzsgIzVGMzENCivlvLIgPiB4dcSBbjsgIzVGMzINCivlvLMgPiBqw6xuZzsgIzVGMzMNCivlvLQgPiBkxatuOyAjNUYzNA0KK+W8tSA+IHpoxIFuZzsgIzVGMzUNCivlvLYgPiBqacOgbmc7ICM1RjM2DQor5by3ID4gcWnDoW5nOyAjNUYzNw0KK+W8uCA+IHDDqW5nOyAjNUYzOA0KK+W8uSA+IGTDoG47ICM1RjM5DQor5by6ID4gcWnDoW5nOyAjNUYzQQ0KK+W8uyA+IGLDrDsgIzVGM0INCivlvLwgPiBiw6w7ICM1RjNDDQor5by9ID4gc2jDqDsgIzVGM0QNCivlvL4gPiBkw6BuOyAjNUYzRQ0KK+W8vyA+IGppxINuOyAjNUYzRg0KK+W9gCA+IGfDsnU7ICM1RjQwDQor5b2CID4gZsSBOyAjNUY0Mg0KK+W9gyA+IGLDrDsgIzVGNDMNCivlvYQgPiBrxY11OyAjNUY0NA0KK+W9hiA+IGJpw6g7ICM1RjQ2DQor5b2HID4geGnEgW87ICM1RjQ3DQor5b2IID4gZMOgbjsgIzVGNDgNCivlvYkgPiBrw7lvOyAjNUY0OQ0KK+W9iiA+IHFpw6FuZzsgIzVGNEENCivlvYsgPiBow7NuZzsgIzVGNEINCivlvYwgPiBtw607ICM1RjRDDQor5b2NID4ga8O5bzsgIzVGNEQNCivlvY4gPiB3xIFuOyAjNUY0RQ0KK+W9jyA+IGp1w6k7ICM1RjRGDQor5b2QID4gasOsOyAjNUY1MA0KK+W9kSA+IGrDrDsgIzVGNTENCivlvZIgPiBnxatpOyAjNUY1Mg0KK+W9kyA+IGTEgW5nOyAjNUY1Mw0KK+W9lCA+IGzDuTsgIzVGNTQNCivlvZUgPiBsw7k7ICM1RjU1DQor5b2WID4gdHXDoG47ICM1RjU2DQor5b2XID4gaMO5aTsgIzVGNTcNCivlvZggPiB6aMOsOyAjNUY1OA0KK+W9mSA+IGjDuWk7ICM1RjU5DQor5b2aID4gaMO5aTsgIzVGNUENCivlvZsgPiB5w607ICM1RjVCDQor5b2cID4gecOtOyAjNUY1Qw0KK+W9nSA+IHnDrTsgIzVGNUQNCivlvZ4gPiB5w607ICM1RjVFDQor5b2fID4gaMO5bzsgIzVGNUYNCivlvaAgPiBow7lvOyAjNUY2MA0KK+W9oSA+IHNoxIFuOyAjNUY2MQ0KK+W9oiA+IHjDrW5nOyAjNUY2Mg0KK+W9oyA+IHfDqW47ICM1RjYzDQor5b2kID4gdMOzbmc7ICM1RjY0DQor5b2lID4gecOgbjsgIzVGNjUNCivlvaYgPiB5w6BuOyAjNUY2Ng0KK+W9pyA+IHnDuTsgIzVGNjcNCivlvaggPiBjaMSrOyAjNUY2OA0KK+W9qSA+IGPEg2k7ICM1RjY5DQor5b2qID4gYmnEgW87ICM1RjZBDQor5b2rID4gZGnEgW87ICM1RjZCDQor5b2sID4gYsSrbjsgIzVGNkMNCivlva0gPiBww6luZzsgIzVGNkQNCivlva4gPiB5xY9uZzsgIzVGNkUNCivlva8gPiBwacSBbzsgIzVGNkYNCivlvbAgPiB6aMSBbmc7ICM1RjcwDQor5b2xID4gecStbmc7ICM1RjcxDQor5b2yID4gY2jEqzsgIzVGNzINCivlvbMgPiBjaMOsOyAjNUY3Mw0KK+W9tCA+IHpow7pvOyAjNUY3NA0KK+W9tSA+IHTFrW87ICM1Rjc1DQor5b22ID4gasOtOyAjNUY3Ng0KK+W9tyA+IHDDoW5nOyAjNUY3Nw0KK+W9uCA+IHpoxY1uZzsgIzVGNzgNCivlvbkgPiB5w6w7ICM1Rjc5DQor5b26ID4gd8Ohbmc7ICM1RjdBDQor5b27ID4gY2jDqDsgIzVGN0INCivlvbwgPiBixK07ICM1RjdDDQor5b29ID4gY2jDrTsgIzVGN0QNCivlvb4gPiBsxK1uZzsgIzVGN0UNCivlvb8gPiBmw7o7ICM1RjdGDQor5b6AID4gd8SDbmc7ICM1RjgwDQor5b6BID4gemjEk25nOyAjNUY4MQ0KK+W+giA+IGPDujsgIzVGODINCivlvoMgPiB3xINuZzsgIzVGODMNCivlvoQgPiBqw6xuZzsgIzVGODQNCivlvoUgPiBkw6BpOyAjNUY4NQ0KK+W+hiA+IHjEqzsgIzVGODYNCivlvocgPiB4w7luOyAjNUY4Nw0KK+W+iCA+IGjElW47ICM1Rjg4DQor5b6JID4gecOhbmc7ICM1Rjg5DQor5b6KID4gaHXDoWk7ICM1RjhBDQor5b6LID4gbMecOyAjNUY4Qg0KK+W+jCA+IGjDsnU7ICM1RjhDDQor5b6NID4gd8SBOyAjNUY4RA0KK+W+jiA+IGNoxJVuZzsgIzVGOEUNCivlvo8gPiB6aMOsOyAjNUY4Rg0KK+W+kCA+IHjDujsgIzVGOTANCivlvpEgPiBqw6xuZzsgIzVGOTENCivlvpIgPiB0w7o7ICM1RjkyDQor5b6TID4gY8Ozbmc7ICM1RjkzDQor5b6VID4gbMOhaTsgIzVGOTUNCivlvpYgPiBjw7NuZzsgIzVGOTYNCivlvpcgPiBkw6k7ICM1Rjk3DQor5b6YID4gcMOhaTsgIzVGOTgNCivlvpkgPiB4xK07ICM1Rjk5DQor5b6bID4gccOsOyAjNUY5Qg0KK+W+nCA+IGNow6FuZzsgIzVGOUMNCivlvp0gPiB6aMOsOyAjNUY5RA0KK+W+niA+IGPDs25nOyAjNUY5RQ0KK+W+nyA+IHpoxY11OyAjNUY5Rg0KK+W+oCA+IGzDoWk7ICM1RkEwDQor5b6hID4gecO5OyAjNUZBMQ0KK+W+oiA+IHhpw6g7ICM1RkEyDQor5b6jID4gamnDqDsgIzVGQTMNCivlvqQgPiBqacOgbjsgIzVGQTQNCivlvqUgPiBjaMOtOyAjNUZBNQ0KK+W+piA+IGppxIM7ICM1RkE2DQor5b6nID4gYmnDoG47ICM1RkE3DQor5b6oID4gaHXDoW5nOyAjNUZBOA0KK+W+qSA+IGbDuTsgIzVGQTkNCivlvqogPiB4w7puOyAjNUZBQQ0KK+W+qyA+IHfElWk7ICM1RkFCDQor5b6sID4gcMOhbmc7ICM1RkFDDQor5b6tID4gecOhbzsgIzVGQUQNCivlvq4gPiB3xJNpOyAjNUZBRQ0KK+W+ryA+IHjEqzsgIzVGQUYNCivlvrAgPiB6aMSTbmc7ICM1RkIwDQor5b6xID4gcGnDoG87ICM1RkIxDQor5b6yID4gY2jDrTsgIzVGQjINCivlvrMgPiBkw6k7ICM1RkIzDQor5b60ID4gemjEk25nOyAjNUZCNA0KK+W+tSA+IHpoxJNuZzsgIzVGQjUNCivlvrYgPiBiacOoOyAjNUZCNg0KK+W+tyA+IGTDqTsgIzVGQjcNCivlvrggPiBjaMWNbmc7ICM1RkI4DQor5b65ID4gY2jDqDsgIzVGQjkNCivlvrogPiBqacSDbzsgIzVGQkENCivlvrsgPiB3w6hpOyAjNUZCQg0KK+W+vCA+IGppw6BvOyAjNUZCQw0KK+W+vSA+IGjFq2k7ICM1RkJEDQor5b6+ID4gbcOpaTsgIzVGQkUNCivlvr8gPiBsw7JuZzsgIzVGQkYNCivlv4AgPiB4acSBbmc7ICM1RkMwDQor5b+BID4gYsOgbzsgIzVGQzENCivlv4IgPiBxw7o7ICM1RkMyDQor5b+DID4geMSrbjsgIzVGQzMNCivlv4QgPiBzaMO5JyAneMSrbicgJ3DDoW5nOyAjNUZDNA0KK+W/hSA+IGLDrDsgIzVGQzUNCivlv4YgPiB5w6w7ICM1RkM2DQor5b+HID4gbMOoOyAjNUZDNw0KK+W/iCA+IHLDqW47ICM1RkM4DQor5b+JID4gZMSBbzsgIzVGQzkNCivlv4ogPiBkw6xuZzsgIzVGQ0ENCivlv4sgPiBnxINpOyAjNUZDQg0KK+W/jCA+IGrDrDsgIzVGQ0MNCivlv40gPiByxJVuOyAjNUZDRA0KK+W/jiA+IHLDqW47ICM1RkNFDQor5b+PID4gY2jDoG47ICM1RkNGDQor5b+QID4gdMSDbjsgIzVGRDANCivlv5EgPiB0w6g7ICM1RkQxDQor5b+SID4gdMOoOyAjNUZEMg0KK+W/kyA+IGfEgW47ICM1RkQzDQor5b+UID4gccOsOyAjNUZENA0KK+W/lSA+IHNow6w7ICM1RkQ1DQor5b+WID4gY8WtbjsgIzVGRDYNCivlv5cgPiB6aMOsOyAjNUZENw0KK+W/mCA+IHfDoG5nOyAjNUZEOA0KK+W/mSA+IG3DoW5nOyAjNUZEOQ0KK+W/miA+IHjEqzsgIzVGREENCivlv5sgPiBmw6FuOyAjNUZEQg0KK+W/nCA+IHnEq25nOyAjNUZEQw0KK+W/nSA+IHRpxINuOyAjNUZERA0KK+W/niA+IG3DrW47ICM1RkRFDQor5b+fID4gbcOtbjsgIzVGREYNCivlv6AgPiB6aMWNbmc7ICM1RkUwDQor5b+hID4gY2jFjW5nOyAjNUZFMQ0KK+W/oiA+IHfDuTsgIzVGRTINCivlv6MgPiBqw607ICM1RkUzDQor5b+kID4gd8WtOyAjNUZFNA0KK+W/pSA+IHjDrDsgIzVGRTUNCivlv6YgPiB5w6g7ICM1RkU2DQor5b+nID4gecWNdTsgIzVGRTcNCivlv6ggPiB3w6BuOyAjNUZFOA0KK+W/qSA+IGPFjW5nOyAjNUZFOQ0KK+W/qiA+IHpoxY1uZzsgIzVGRUENCivlv6sgPiBrdcOgaTsgIzVGRUINCivlv6wgPiB5w7k7ICM1RkVDDQor5b+tID4gYmnDoG47ICM1RkVEDQor5b+uID4gemjDrDsgIzVGRUUNCivlv68gPiBxw607ICM1RkVGDQor5b+wID4gY8O5aTsgIzVGRjANCivlv7EgPiBjaMOpbjsgIzVGRjENCivlv7IgPiB0w6BpOyAjNUZGMg0KK+W/syA+IHTDum47ICM1RkYzDQor5b+0ID4gcWnDoW47ICM1RkY0DQor5b+1ID4gbmnDoG47ICM1RkY1DQor5b+2ID4gaMO6bjsgIzVGRjYNCivlv7cgPiB4xKtvbmc7ICM1RkY3DQor5b+4ID4gbsStdTsgIzVGRjgNCivlv7kgPiB3xINuZzsgIzVGRjkNCivlv7ogPiB4acSBbjsgIzVGRkENCivlv7sgPiB4xKtuOyAjNUZGQg0KK+W/vCA+IGvEgW5nOyAjNUZGQw0KK+W/vSA+IGjFqzsgIzVGRkQNCivlv74gPiBrw6BpOyAjNUZGRQ0KK+W/vyA+IGbDqG47ICM1RkZGDQor5oCAID4gaHXDoWk7ICM2MDAwDQor5oCBID4gdMOgaTsgIzYwMDENCivmgIIgPiBzxY9uZzsgIzYwMDINCivmgIMgPiB3xa07ICM2MDAzDQor5oCEID4gw7J1OyAjNjAwNA0KK+aAhSA+IGNow6BuZzsgIzYwMDUNCivmgIYgPiBjaHXDoG5nOyAjNjAwNg0KK+aAhyA+IGrDuTsgIzYwMDcNCivmgIggPiB5w6w7ICM2MDA4DQor5oCJID4gYsSDbzsgIzYwMDkNCivmgIogPiBjaMSBbzsgIzYwMEENCivmgIsgPiBtw61uOyAjNjAwQg0KK+aAjCA+IHDEk2k7ICM2MDBDDQor5oCNID4gesO5bzsgIzYwMEQNCivmgI4gPiB6xJVuOyAjNjAwRQ0KK+aAjyA+IHnDoG5nOyAjNjAwRg0KK+aAkCA+IGvDsnU7ICM2MDEwDQor5oCRID4gYsOgbjsgIzYwMTENCivmgJIgPiBuw7k7ICM2MDEyDQor5oCTID4gbsOhbzsgIzYwMTMNCivmgJQgPiB6aMSTbmc7ICM2MDE0DQor5oCVID4gcMOgOyAjNjAxNQ0KK+aAliA+IGLDuTsgIzYwMTYNCivmgJcgPiB0acSTOyAjNjAxNw0KK+aAmCA+IGfDuTsgIzYwMTgNCivmgJkgPiBow7k7ICM2MDE5DQor5oCaID4gasO5OyAjNjAxQQ0KK+aAmyA+IGTDoTsgIzYwMUINCivmgJwgPiBsacOhbjsgIzYwMUMNCivmgJ0gPiBzxKs7ICM2MDFEDQor5oCeID4gY2jFjXU7ICM2MDFFDQor5oCfID4gZMOsOyAjNjAxRg0KK+aAoCA+IGTDoGk7ICM2MDIwDQor5oChID4gecOtOyAjNjAyMQ0KK+aAoiA+IHTDujsgIzYwMjINCivmgKMgPiB5w7N1OyAjNjAyMw0KK+aApCA+IGbFqzsgIzYwMjQNCivmgKUgPiBqw607ICM2MDI1DQor5oCmID4gcMSTbmc7ICM2MDI2DQor5oCnID4geMOsbmc7ICM2MDI3DQor5oCoID4geXXDoG47ICM2MDI4DQor5oCpID4gbsOtOyAjNjAyOQ0KK+aAqiA+IGd1w6BpOyAjNjAyQQ0KK+aAqyA+IGbDujsgIzYwMkINCivmgKwgPiB4w6w7ICM2MDJDDQor5oCtID4gYsOsOyAjNjAyRA0KK+aAriA+IHnFjXU7ICM2MDJFDQor5oCvID4gcWnDqDsgIzYwMkYNCivmgLAgPiB4dcOgbjsgIzYwMzANCivmgLEgPiBjxY1uZzsgIzYwMzENCivmgLIgPiBixK1uZzsgIzYwMzINCivmgLMgPiBodcSDbmc7ICM2MDMzDQor5oC0ID4geMO5OyAjNjAzNA0KK+aAtSA+IGNow7k7ICM2MDM1DQor5oC2ID4gcMSrOyAjNjAzNg0KK+aAtyA+IHjEqzsgIzYwMzcNCivmgLggPiB4xKs7ICM2MDM4DQor5oC5ID4gdMSBbjsgIzYwMzkNCivmgLsgPiB6xY9uZzsgIzYwM0INCivmgLwgPiBkw7lpOyAjNjAzQw0KK+aAvyA+IHnDrDsgIzYwM0YNCivmgYAgPiBjaMStOyAjNjA0MA0KK+aBgSA+IHLDqG47ICM2MDQxDQor5oGCID4geMO6bjsgIzYwNDINCivmgYMgPiBzaMOsOyAjNjA0Mw0KK+aBhCA+IHjDrDsgIzYwNDQNCivmgYUgPiBsxINvOyAjNjA0NQ0KK+aBhiA+IGjDqW5nOyAjNjA0Ng0KK+aBhyA+IGt1xIFuZzsgIzYwNDcNCivmgYggPiBtw7o7ICM2MDQ4DQor5oGJID4gemjErTsgIzYwNDkNCivmgYogPiB4acOpOyAjNjA0QQ0KK+aBiyA+IGxpw6BuOyAjNjA0Qg0KK+aBjCA+IHRpxIFvOyAjNjA0Qw0KK+aBjSA+IGh1xINuZzsgIzYwNEQNCivmgY4gPiBkacOpOyAjNjA0RQ0KK+aBjyA+IGjEg287ICM2MDRGDQor5oGQID4ga8WPbmc7ICM2MDUwDQor5oGRID4gZ8WtaTsgIzYwNTENCivmgZIgPiBow6luZzsgIzYwNTINCivmgZMgPiB4xKs7ICM2MDUzDQor5oGUID4geGnDoG87ICM2MDU0DQor5oGVID4gc2jDuTsgIzYwNTUNCivmgZYgPiBzxKs7ICM2MDU2DQor5oGXID4ga3XEgzsgIzYwNTcNCivmgZggPiBxxKt1OyAjNjA1OA0KK+aBmSA+IHnDoG5nOyAjNjA1OQ0KK+aBmiA+IGjDuWk7ICM2MDVBDQor5oGbID4gaMO6aTsgIzYwNUINCivmgZwgPiBjaMOsOyAjNjA1Qw0KK+aBnSA+IGppw6E7ICM2MDVEDQor5oGeID4gecOtOyAjNjA1RQ0KK+aBnyA+IHjEq29uZzsgIzYwNUYNCivmgaAgPiBndcOgaTsgIzYwNjANCivmgaEgPiBsw6xuOyAjNjA2MQ0KK+aBoiA+IGjFq2k7ICM2MDYyDQor5oGjID4gesOsOyAjNjA2Mw0KK+aBpCA+IHjDuTsgIzYwNjQNCivmgaUgPiBjaMStOyAjNjA2NQ0KK+aBpiA+IHhpw6BuZzsgIzYwNjYNCivmgacgPiBux5w7ICM2MDY3DQor5oGoID4gaMOobjsgIzYwNjgNCivmgakgPiDEk247ICM2MDY5DQor5oGqID4ga8OoOyAjNjA2QQ0KK+aBqyA+IHTFjW5nOyAjNjA2Qg0KK+aBrCA+IHRpw6FuOyAjNjA2Qw0KK+aBrSA+IGfFjW5nOyAjNjA2RA0KK+aBriA+IHF1w6FuOyAjNjA2RQ0KK+aBryA+IHjEqzsgIzYwNkYNCivmgbAgPiBxacOgOyAjNjA3MA0KK+aBsSA+IHl1w6g7ICM2MDcxDQor5oGyID4gcMSTbmc7ICM2MDcyDQor5oGzID4ga8SVbjsgIzYwNzMNCivmgbQgPiBkw6k7ICM2MDc0DQor5oG1ID4gaMO5aTsgIzYwNzUNCivmgbYgPiDDqDsgIzYwNzYNCivmgbggPiB0w7JuZzsgIzYwNzgNCivmgbkgPiB5w6BuOyAjNjA3OQ0KK+aBuiA+IGvEg2k7ICM2MDdBDQor5oG7ID4gY8OoOyAjNjA3Qg0KK+aBvCA+IG7Eg287ICM2MDdDDQor5oG9ID4gecO5bjsgIzYwN0QNCivmgb4gPiBtw6FuZzsgIzYwN0UNCivmgb8gPiB5xY9uZzsgIzYwN0YNCivmgoAgPiB5xY9uZzsgIzYwODANCivmgoEgPiB5dcSBbjsgIzYwODENCivmgoIgPiBwxKs7ICM2MDgyDQor5oKDID4ga8WtbjsgIzYwODMNCivmgoQgPiBxacSDbzsgIzYwODQNCivmgoUgPiB5dcOoOyAjNjA4NQ0KK+aChiA+IHnDuTsgIzYwODYNCivmgocgPiB5w7k7ICM2MDg3DQor5oKIID4gamnDqDsgIzYwODgNCivmgokgPiB4xKs7ICM2MDg5DQor5oKKID4gemjDqTsgIzYwOEENCivmgosgPiBsw6xuOyAjNjA4Qg0KK+aCjCA+IHTDrDsgIzYwOEMNCivmgo0gPiBow6BuOyAjNjA4RA0KK+aCjiA+IGjDoG87ICM2MDhFDQor5oKPID4gcWnDqDsgIzYwOEYNCivmgpAgPiB0w6w7ICM2MDkwDQor5oKRID4gYsO5OyAjNjA5MQ0KK+aCkiA+IHnDrDsgIzYwOTINCivmgpMgPiBxacOgbjsgIzYwOTMNCivmgpQgPiBoxa1pOyAjNjA5NA0KK+aClSA+IHjEqzsgIzYwOTUNCivmgpYgPiBiw6hpOyAjNjA5Ng0KK+aClyA+IG3DoW47ICM2MDk3DQor5oKYID4gecSrOyAjNjA5OA0KK+aCmSA+IGjEk25nOyAjNjA5OQ0KK+aCmiA+IHPFj25nOyAjNjA5QQ0KK+aCmyA+IHF1xIFuOyAjNjA5Qg0KK+aCnCA+IGNoxJVuZzsgIzYwOUMNCivmgp0gPiBoxatpOyAjNjA5RA0KK+aCniA+IHfDuTsgIzYwOUUNCivmgp8gPiB3w7k7ICM2MDlGDQor5oKgID4gecWNdTsgIzYwQTANCivmgqEgPiBsw607ICM2MEExDQor5oKiID4gbGnDoG5nOyAjNjBBMg0KK+aCoyA+IGh1w6BuOyAjNjBBMw0KK+aCpCA+IGPFjW5nOyAjNjBBNA0KK+aCpSA+IHnDrDsgIzYwQTUNCivmgqYgPiB5dcOoOyAjNjBBNg0KK+aCpyA+IGzDrDsgIzYwQTcNCivmgqggPiBuw61uOyAjNjBBOA0KK+aCqSA+IG7Eg287ICM2MEE5DQor5oKqID4gw6g7ICM2MEFBDQor5oKrID4gcXXDqDsgIzYwQUINCivmgqwgPiB4dcOhbjsgIzYwQUMNCivmgq0gPiBxacSBbjsgIzYwQUQNCivmgq4gPiB3w7k7ICM2MEFFDQor5oKvID4gbcStbjsgIzYwQUYNCivmgrAgPiBjw7NuZzsgIzYwQjANCivmgrEgPiBmxJVpOyAjNjBCMQ0KK+aCsiA+IGLEk2k7ICM2MEIyDQor5oKzID4gZMO6bzsgIzYwQjMNCivmgrQgPiBjw7lpOyAjNjBCNA0KK+aCtSA+IGNow6BuZzsgIzYwQjUNCivmgrYgPiBtw6huOyAjNjBCNg0KK+aCtyA+IGzDrDsgIzYwQjcNCivmgrggPiBqw6w7ICM2MEI4DQor5oK5ID4gZ3XDoG47ICM2MEI5DQor5oK6ID4gZ3XDoG47ICM2MEJBDQor5oK7ID4geMOsbmc7ICM2MEJCDQor5oK8ID4gZMOgbzsgIzYwQkMNCivmgr0gPiBxxKs7ICM2MEJEDQor5oK+ID4ga8WNbmc7ICM2MEJFDQor5oK/ID4gdGnEg247ICM2MEJGDQor5oOAID4gbMO6bjsgIzYwQzANCivmg4EgPiB4xKs7ICM2MEMxDQor5oOCID4ga8SDbjsgIzYwQzINCivmg4MgPiBrxatuOyAjNjBDMw0KK+aDhCA+IG7DrDsgIzYwQzQNCivmg4UgPiBxw61uZzsgIzYwQzUNCivmg4YgPiBjaMOzdTsgIzYwQzYNCivmg4cgPiBkxatuOyAjNjBDNw0KK+aDiCA+IGfFrW87ICM2MEM4DQor5oOJID4gY2jEgW47ICM2MEM5DQor5oOKID4gbGnDoW5nOyAjNjBDQQ0KK+aDiyA+IHfEg247ICM2MENCDQor5oOMID4geXXEgW47ICM2MENDDQor5oONID4gasSrbjsgIzYwQ0QNCivmg44gPiBqw6w7ICM2MENFDQor5oOPID4gbMOtbjsgIzYwQ0YNCivmg5AgPiB5w7k7ICM2MEQwDQor5oORID4gaMO5bzsgIzYwRDENCivmg5IgPiBow6k7ICM2MEQyDQor5oOTID4gcXXDoW47ICM2MEQzDQor5oOUID4gdMOhbjsgIzYwRDQNCivmg5UgPiB0w6w7ICM2MEQ1DQor5oOWID4gdMOsOyAjNjBENg0KK+aDlyA+IG5pxJM7ICM2MEQ3DQor5oOYID4gd8SDbmc7ICM2MEQ4DQor5oOZID4gY2jDuW87ICM2MEQ5DQor5oOaID4gYsWrOyAjNjBEQQ0KK+aDmyA+IGjFq247ICM2MERCDQor5oOcID4geMSrOyAjNjBEQw0KK+aDnSA+IHTEg25nOyAjNjBERA0KK+aDniA+IHjEq247ICM2MERFDQor5oOfID4gd8OpaTsgIzYwREYNCivmg6AgPiBow7lpOyAjNjBFMA0KK+aDoSA+IMOoOyAjNjBFMQ0KK+aDoiA+IHLFrWk7ICM2MEUyDQor5oOjID4gesWPbmc7ICM2MEUzDQor5oOkID4gamnEgW47ICM2MEU0DQor5oOlID4gecWPbmc7ICM2MEU1DQor5oOmID4gZGnDoG47ICM2MEU2DQor5oOnID4gasO5OyAjNjBFNw0KK+aDqCA+IGPEg247ICM2MEU4DQor5oOpID4gY2jDqW5nOyAjNjBFOQ0KK+aDqiA+IGTDqTsgIzYwRUENCivmg6sgPiBiw6hpOyAjNjBFQg0KK+aDrCA+IHFpw6g7ICM2MEVDDQor5oOtID4gY8OhbjsgIzYwRUQNCivmg64gPiBkw6BuOyAjNjBFRQ0KK+aDryA+IGd1w6BuOyAjNjBFRg0KK+aDsCA+IGTDuW87ICM2MEYwDQor5oOxID4gbsSDbzsgIzYwRjENCivmg7IgPiB5w7luOyAjNjBGMg0KK+aDsyA+IHhpxINuZzsgIzYwRjMNCivmg7QgPiB6aMO5aTsgIzYwRjQNCivmg7UgPiBkacOoOyAjNjBGNQ0KK+aDtiA+IGh1w6FuZzsgIzYwRjYNCivmg7cgPiBjaMWtbjsgIzYwRjcNCivmg7ggPiBxw61vbmc7ICM2MEY4DQor5oO5ID4gcsSVOyAjNjBGOQ0KK+aDuiA+IHjEq25nOyAjNjBGQQ0KK+aDuyA+IGPDqDsgIzYwRkINCivmg7wgPiBiacSDbjsgIzYwRkMNCivmg70gPiBoxatuOyAjNjBGRA0KK+aDviA+IHrFjW5nOyAjNjBGRQ0KK+aDvyA+IHTDrTsgIzYwRkYNCivmhIAgPiBxacSDbzsgIzYxMDANCivmhIEgPiBjaMOzdTsgIzYxMDENCivmhIIgPiBiw6hpOyAjNjEwMg0KK+aEgyA+IHh1xIFuOyAjNjEwMw0KK+aEhCA+IHfEk2k7ICM2MTA0DQor5oSFID4gZ8OpOyAjNjEwNQ0KK+aEhiA+IHFpxIFuOyAjNjEwNg0KK+aEhyA+IHfElWk7ICM2MTA3DQor5oSIID4gecO5OyAjNjEwOA0KK+aEiSA+IHnDujsgIzYxMDkNCivmhIogPiBiw6w7ICM2MTBBDQor5oSLID4geHXEgW47ICM2MTBCDQor5oSMID4gaHXDoG47ICM2MTBDDQor5oSNID4gbcStbjsgIzYxMEQNCivmhI4gPiBiw6w7ICM2MTBFDQor5oSPID4gecOsOyAjNjEwRg0KK+aEkCA+IG1pxINuOyAjNjExMA0KK+aEkSA+IHnFj25nOyAjNjExMQ0KK+aEkiA+IGvDoGk7ICM2MTEyDQor5oSTID4gZMOgbmc7ICM2MTEzDQor5oSUID4gecSrbjsgIzYxMTQNCivmhJUgPiDDqDsgIzYxMTUNCivmhJYgPiBjaMOpbjsgIzYxMTYNCivmhJcgPiBtw7J1OyAjNjExNw0KK+aEmCA+IGvDqDsgIzYxMTgNCivmhJkgPiBrw6g7ICM2MTE5DQor5oSaID4gecO6OyAjNjExQQ0KK+aEmyA+IMOgaTsgIzYxMUINCivmhJwgPiBxacOoOyAjNjExQw0KK+aEnSA+IHnEg247ICM2MTFEDQor5oSeID4gbsO5bzsgIzYxMUUNCivmhJ8gPiBnxINuOyAjNjExRg0KK+aEoCA+IHnDuW47ICM2MTIwDQor5oShID4gesWPbmc7ICM2MTIxDQor5oSiID4gc8SBaTsgIzYxMjINCivmhKMgPiBsw6luZzsgIzYxMjMNCivmhKQgPiBmw6huOyAjNjEyNA0KK+aEpiA+IGvDuWk7ICM2MTI2DQor5oSnID4ga8O5aTsgIzYxMjcNCivmhKggPiBxdcOoOyAjNjEyOA0KK+aEqSA+IGfFjW5nOyAjNjEyOQ0KK+aEqiA+IHnDum47ICM2MTJBDQor5oSrID4gc8O5OyAjNjEyQg0KK+aErCA+IHPDuTsgIzYxMkMNCivmhK0gPiBxw607ICM2MTJEDQor5oSuID4gecOhbzsgIzYxMkUNCivmhK8gPiBzxY9uZzsgIzYxMkYNCivmhLAgPiBodcSDbmc7ICM2MTMwDQor5oSxID4gasOtOyAjNjEzMQ0KK+aEsiA+IGfFrTsgIzYxMzINCivmhLMgPiBqw7k7ICM2MTMzDQor5oS0ID4gY2h1w6BuZzsgIzYxMzQNCivmhLUgPiBuw6w7ICM2MTM1DQor5oS2ID4geGnDqTsgIzYxMzYNCivmhLcgPiBrxINpOyAjNjEzNw0KK+aEuCA+IHpoxJVuZzsgIzYxMzgNCivmhLkgPiB5xY9uZzsgIzYxMzkNCivmhLogPiBjxINvOyAjNjEzQQ0KK+aEuyA+IHPDuW47ICM2MTNCDQor5oS8ID4gc2jDqG47ICM2MTNDDQor5oS9ID4gYsOzOyAjNjEzRA0KK+aEviA+IGvDoGk7ICM2MTNFDQor5oS/ID4geXXDoG47ICM2MTNGDQor5oWAID4geGnDqTsgIzYxNDANCivmhYEgPiBow7luOyAjNjE0MQ0KK+aFgiA+IHnFj25nOyAjNjE0Mg0KK+aFgyA+IHnEg25nOyAjNjE0Mw0KK+aFhCA+IGzDrDsgIzYxNDQNCivmhYUgPiBzxIFvOyAjNjE0NQ0KK+aFhiA+IHTEgW87ICM2MTQ2DQor5oWHID4gecSrbjsgIzYxNDcNCivmhYggPiBjw607ICM2MTQ4DQor5oWJID4geMO5OyAjNjE0OQ0KK+aFiiA+IHFpw6BuOyAjNjE0QQ0KK+aFiyA+IHTDoGk7ICM2MTRCDQor5oWMID4gaHXEgW5nOyAjNjE0Qw0KK+aFjSA+IHnDuW47ICM2MTREDQor5oWOID4gc2jDqG47ICM2MTRFDQor5oWPID4gbcStbmc7ICM2MTRGDQor5oWRID4gc2jDqDsgIzYxNTENCivmhZIgPiBjw7NuZzsgIzYxNTINCivmhZMgPiBwacOgbzsgIzYxNTMNCivmhZQgPiBtw7I7ICM2MTU0DQor5oWVID4gbcO5OyAjNjE1NQ0KK+aFliA+IGfDum87ICM2MTU2DQor5oWXID4gY2jDrDsgIzYxNTcNCivmhZggPiBjxINuOyAjNjE1OA0KK+aFmSA+IGPDoW47ICM2MTU5DQor5oWaID4gY8OhbjsgIzYxNUENCivmhZsgPiBjw7ppOyAjNjE1Qg0KK+aFnCA+IG3ErW47ICM2MTVDDQor5oWdID4gdMOoOyAjNjE1RA0KK+aFniA+IHpoxIFuZzsgIzYxNUUNCivmhZ8gPiB0w7JuZzsgIzYxNUYNCivmhaAgPiDDoG87ICM2MTYwDQor5oWhID4gc2h1xINuZzsgIzYxNjENCivmhaIgPiBtw6BuOyAjNjE2Mg0KK+aFoyA+IGd1w6BuOyAjNjE2Mw0KK+aFpCA+IHF1w6g7ICM2MTY0DQor5oWlID4gesOgbzsgIzYxNjUNCivmhaYgPiBqw6x1OyAjNjE2Ng0KK+aFpyA+IGjDuWk7ICM2MTY3DQor5oWoID4ga8SDaTsgIzYxNjgNCivmhakgPiBsacOhbjsgIzYxNjkNCivmhaogPiDDsnU7ICM2MTZBDQor5oWrID4gc8WPbmc7ICM2MTZCDQor5oWsID4gasStbjsgIzYxNkMNCivmha0gPiB5w6xuOyAjNjE2RA0KK+aFriA+IGzHnDsgIzYxNkUNCivmha8gPiBzaMSBbmc7ICM2MTZGDQor5oWwID4gd8OoaTsgIzYxNzANCivmhbEgPiB0dcOhbjsgIzYxNzENCivmhbIgPiBtw6FuOyAjNjE3Mg0KK+aFsyA+IHFpxIFuOyAjNjE3Mw0KK+aFtCA+IHNow6g7ICM2MTc0DQor5oW1ID4gecWNbmc7ICM2MTc1DQor5oW2ID4gccOsbmc7ICM2MTc2DQor5oW3ID4ga8SBbmc7ICM2MTc3DQor5oW4ID4gZMOsOyAjNjE3OA0KK+aFuSA+IHpow607ICM2MTc5DQor5oW6ID4gbMOzdTsgIzYxN0ENCivmhbsgPiBqdcOgbjsgIzYxN0INCivmhbwgPiBxxKs7ICM2MTdDDQor5oW9ID4gccSrOyAjNjE3RA0KK+aFviA+IHnDuTsgIzYxN0UNCivmhb8gPiBww61uZzsgIzYxN0YNCivmhoAgPiBsacOhbzsgIzYxODANCivmhoEgPiBjxY1uZzsgIzYxODENCivmhoIgPiB5xY11OyAjNjE4Mg0KK+aGgyA+IGNoxY1uZzsgIzYxODMNCivmhoQgPiB6aMOsOyAjNjE4NA0KK+aGhSA+IHTDsm5nOyAjNjE4NQ0KK+aGhiA+IGNoxJNuZzsgIzYxODYNCivmhocgPiBxw6w7ICM2MTg3DQor5oaIID4gccWrOyAjNjE4OA0KK+aGiSA+IHDDqW5nOyAjNjE4OQ0KK+aGiiA+IGLDqGk7ICM2MThBDQor5oaLID4gYmnEkzsgIzYxOEINCivmhowgPiBjaMO6bjsgIzYxOEMNCivmho0gPiBqacSBbzsgIzYxOEQNCivmho4gPiB6xJNuZzsgIzYxOEUNCivmho8gPiBjaMOsOyAjNjE4Rg0KK+aGkCA+IGxpw6FuOyAjNjE5MA0KK+aGkSA+IHDDrW5nOyAjNjE5MQ0KK+aGkiA+IGvDuWk7ICM2MTkyDQor5oaTID4gaMO5aTsgIzYxOTMNCivmhpQgPiBxacOhbzsgIzYxOTQNCivmhpUgPiBjaMOpbmc7ICM2MTk1DQor5oaWID4gecOsbjsgIzYxOTYNCivmhpcgPiB5w6xuOyAjNjE5Nw0KK+aGmCA+IHjErTsgIzYxOTgNCivmhpkgPiB4xK07ICM2MTk5DQor5oaaID4gZMOgbjsgIzYxOUENCivmhpsgPiB0w6FuOyAjNjE5Qg0KK+aGnCA+IGTFrW87ICM2MTlDDQor5oadID4gZMO5aTsgIzYxOUQNCivmhp4gPiBkw7lpOyAjNjE5RQ0KK+aGnyA+IHPDuTsgIzYxOUYNCivmhqAgPiBqdcOpOyAjNjFBMA0KK+aGoSA+IGPDqDsgIzYxQTENCivmhqIgPiB4acSBbzsgIzYxQTINCivmhqMgPiBmw6FuOyAjNjFBMw0KK+aGpCA+IGbDqG47ICM2MUE0DQor5oalID4gbMOhbzsgIzYxQTUNCivmhqYgPiBsw6BvOyAjNjFBNg0KK+aGpyA+IGNoxY1uZzsgIzYxQTcNCivmhqggPiBoxIFuOyAjNjFBOA0KK+aGqSA+IHHDrDsgIzYxQTkNCivmhqogPiB4acOhbjsgIzYxQUENCivmhqsgPiBtxK1uOyAjNjFBQg0KK+aGrCA+IGrErW5nOyAjNjFBQw0KK+aGrSA+IGxpxINvOyAjNjFBRA0KK+aGriA+IHfFrTsgIzYxQUUNCivmhq8gPiBjxINuOyAjNjFBRg0KK+aGsCA+IGp1w6k7ICM2MUIwDQor5oaxID4gY8O5OyAjNjFCMQ0KK+aGsiA+IHhpw6BuOyAjNjFCMg0KK+aGsyA+IHTEg247ICM2MUIzDQor5oa0ID4gc2jDqW5nOyAjNjFCNA0KK+aGtSA+IHDEqzsgIzYxQjUNCivmhrYgPiB5w6w7ICM2MUI2DQor5oa3ID4gY2jFrTsgIzYxQjcNCivmhrggPiB4acSBbjsgIzYxQjgNCivmhrkgPiBuw6FvOyAjNjFCOQ0KK+aGuiA+IGTDoG47ICM2MUJBDQor5oa7ID4gdMSDbjsgIzYxQkINCivmhrwgPiBqxK1uZzsgIzYxQkMNCivmhr0gPiBzxY1uZzsgIzYxQkQNCivmhr4gPiBow6BuOyAjNjFCRQ0KK+aGvyA+IGppxIFvOyAjNjFCRg0KK+aHgCA+IHfDoGk7ICM2MUMwDQor5oeBID4gaHXDoW47ICM2MUMxDQor5oeCID4gZMWPbmc7ICM2MUMyDQor5oeDID4gccOtbjsgIzYxQzMNCivmh4QgPiBxw61uOyAjNjFDNA0KK+aHhSA+IHHDujsgIzYxQzUNCivmh4YgPiBjxINvOyAjNjFDNg0KK+aHhyA+IGvElW47ICM2MUM3DQor5oeIID4geGnDqDsgIzYxQzgNCivmh4kgPiB5w6xuZzsgIzYxQzkNCivmh4ogPiDDoG87ICM2MUNBDQor5oeLID4gbcOgbzsgIzYxQ0INCivmh4wgPiB5w6w7ICM2MUNDDQor5oeNID4gbMStbjsgIzYxQ0QNCivmh44gPiBzw6g7ICM2MUNFDQor5oePID4gasO5bjsgIzYxQ0YNCivmh5AgPiBodcOhaTsgIzYxRDANCivmh5EgPiBtw6huOyAjNjFEMQ0KK+aHkiA+IGzEg247ICM2MUQyDQor5oeTID4gw6BpOyAjNjFEMw0KK+aHlCA+IGzErW47ICM2MUQ0DQor5oeVID4gecSBbjsgIzYxRDUNCivmh5YgPiBndcSBOyAjNjFENg0KK+aHlyA+IHhpw6A7ICM2MUQ3DQor5oeYID4gY2jDrDsgIzYxRDgNCivmh5kgPiB5xa07ICM2MUQ5DQor5oeaID4gecOsbjsgIzYxREENCivmh5sgPiBkxIFpOyAjNjFEQg0KK+aHnCA+IG3DqG5nOyAjNjFEQw0KK+aHnSA+IMOgaTsgIzYxREQNCivmh54gPiBtw6luZzsgIzYxREUNCivmh58gPiBkw7lpOyAjNjFERg0KK+aHoCA+IHHDrTsgIzYxRTANCivmh6EgPiBtxY87ICM2MUUxDQor5oeiID4gbMOhbjsgIzYxRTINCivmh6MgPiBtw6huOyAjNjFFMw0KK+aHpCA+IGNow7N1OyAjNjFFNA0KK+aHpSA+IHpow6w7ICM2MUU1DQor5oemID4gbsO5bzsgIzYxRTYNCivmh6cgPiBuw7lvOyAjNjFFNw0KK+aHqCA+IHnEgW47ICM2MUU4DQor5oepID4gecSDbmc7ICM2MUU5DQor5oeqID4gYsOzOyAjNjFFQQ0KK+aHqyA+IHpow607ICM2MUVCDQor5oesID4ga3XDoG5nOyAjNjFFQw0KK+aHrSA+IGt1w6BuZzsgIzYxRUQNCivmh64gPiB5xY91OyAjNjFFRQ0KK+aHryA+IGbFqzsgIzYxRUYNCivmh7AgPiBsw611OyAjNjFGMA0KK+aHsSA+IG1pw6g7ICM2MUYxDQor5oeyID4gY2jDqW5nOyAjNjFGMg0KK+aHtCA+IGNow6BuOyAjNjFGNA0KK+aHtSA+IG3DqW5nOyAjNjFGNQ0KK+aHtiA+IGzEg247ICM2MUY2DQor5oe3ID4gaHXDoWk7ICM2MUY3DQor5oe4ID4geHXDoW47ICM2MUY4DQor5oe5ID4gcsOgbmc7ICM2MUY5DQor5oe6ID4gY2jDoG47ICM2MUZBDQor5oe7ID4gasOsOyAjNjFGQg0KK+aHvCA+IGrDuTsgIzYxRkMNCivmh70gPiBodcSBbjsgIzYxRkQNCivmh74gPiBzaMOoOyAjNjFGRQ0KK+aHvyA+IHnDrDsgIzYxRkYNCivmiIAgPiBsacOgbjsgIzYyMDANCivmiIEgPiBuxINuOyAjNjIwMQ0KK+aIgiA+IG3DrTsgIzYyMDINCivmiIMgPiB0xINuZzsgIzYyMDMNCivmiIQgPiBqdcOpOyAjNjIwNA0KK+aIhSA+IGfDoG5nOyAjNjIwNQ0KK+aIhiA+IGfDoG5nOyAjNjIwNg0KK+aIhyA+IGfDoG5nOyAjNjIwNw0KK+aIiCA+IGfEkzsgIzYyMDgNCivmiIkgPiB5dcOoOyAjNjIwOQ0KK+aIiiA+IHfDuTsgIzYyMEENCivmiIsgPiBqacSBbjsgIzYyMEINCivmiIwgPiB4xas7ICM2MjBDDQor5oiNID4gc2jDuTsgIzYyMEQNCivmiI4gPiByw7NuZzsgIzYyMEUNCivmiI8gPiB4w6w7ICM2MjBGDQor5oiQID4gY2jDqW5nOyAjNjIxMA0KK+aIkSA+IHfFjzsgIzYyMTENCivmiJIgPiBqacOoOyAjNjIxMg0KK+aIkyA+IGfEkzsgIzYyMTMNCivmiJQgPiBqacSBbjsgIzYyMTQNCivmiJUgPiBxacSBbmc7ICM2MjE1DQor5oiWID4gaMO5bzsgIzYyMTYNCivmiJcgPiBxacSBbmc7ICM2MjE3DQor5oiYID4gemjDoG47ICM2MjE4DQor5oiZID4gZMOybmc7ICM2MjE5DQor5oiaID4gccSrOyAjNjIxQQ0KK+aImyA+IGppw6E7ICM2MjFCDQor5oicID4gZGnDqTsgIzYyMUMNCivmiJ0gPiB6w6lpOyAjNjIxRA0KK+aIniA+IGppw6E7ICM2MjFFDQor5oifID4gasStOyAjNjIxRg0KK+aIoCA+IHNow6w7ICM2MjIwDQor5oihID4ga8SBbjsgIzYyMjENCivmiKIgPiBqw607ICM2MjIyDQor5oijID4ga8O6aTsgIzYyMjMNCivmiKQgPiBnw6BpOyAjNjIyNA0KK+aIpSA+IGTElW5nOyAjNjIyNQ0KK+aIpiA+IHpow6BuOyAjNjIyNg0KK+aIpyA+IGNodcSBbmc7ICM2MjI3DQor5oioID4gZ8STOyAjNjIyOA0KK+aIqSA+IGppxINuOyAjNjIyOQ0KK+aIqiA+IGppw6k7ICM2MjJBDQor5oirID4gecO5OyAjNjIyQg0KK+aIrCA+IGppxINuOyAjNjIyQw0KK+aIrSA+IHnEg247ICM2MjJEDQor5oiuID4gbMO5OyAjNjIyRQ0KK+aIryA+IHjDrDsgIzYyMkYNCivmiLAgPiB6aMOgbjsgIzYyMzANCivmiLEgPiB4w6w7ICM2MjMxDQor5oiyID4geMOsOyAjNjIzMg0KK+aIsyA+IGNoxatvOyAjNjIzMw0KK+aItCA+IGTDoGk7ICM2MjM0DQor5oi1ID4gccO6OyAjNjIzNQ0KK+aItiA+IGjDuTsgIzYyMzYNCivmiLcgPiBow7k7ICM2MjM3DQor5oi4ID4gaMO5OyAjNjIzOA0KK+aIuSA+IMOoOyAjNjIzOQ0KK+aIuiA+IHNow6w7ICM2MjNBDQor5oi7ID4gbMOsOyAjNjIzQg0KK+aIvCA+IG3Eg287ICM2MjNDDQor5oi9ID4gaMO5OyAjNjIzRA0KK+aIviA+IGzDrDsgIzYyM0UNCivmiL8gPiBmw6FuZzsgIzYyM0YNCivmiYAgPiBzxa1vOyAjNjI0MA0KK+aJgSA+IGJpxINuOyAjNjI0MQ0KK+aJgiA+IGRpw6BuOyAjNjI0Mg0KK+aJgyA+IGrEq29uZzsgIzYyNDMNCivmiYQgPiBzaMSDbmc7ICM2MjQ0DQor5omFID4gecOtOyAjNjI0NQ0KK+aJhiA+IHnErTsgIzYyNDYNCivmiYcgPiBzaMOgbjsgIzYyNDcNCivmiYggPiBow7k7ICM2MjQ4DQor5omJID4gZsSTaTsgIzYyNDkNCivmiYogPiB5xINuOyAjNjI0QQ0KK+aJiyA+IHNoxY91OyAjNjI0Qg0KK+aJjCA+IHTMhCcgJ3NoxY91JyAncMOhbmc7ICM2MjRDDQor5omNID4gY8OhaTsgIzYyNEQNCivmiY4gPiB6aMSBOyAjNjI0RQ0KK+aJjyA+IHHDrXU7ICM2MjRGDQor5omQID4gbMOoOyAjNjI1MA0KK+aJkSA+IGLFqzsgIzYyNTENCivmiZIgPiBixIE7ICM2MjUyDQor5omTID4gZMSDOyAjNjI1Mw0KK+aJlCA+IHLEk25nOyAjNjI1NA0KK+aJlSA+IGbDujsgIzYyNTUNCivmiZcgPiB6w6BpOyAjNjI1Nw0KK+aJmCA+IHTFq287ICM2MjU4DQor5omZID4gemjDoG5nOyAjNjI1OQ0KK+aJmiA+IGRpxIFvOyAjNjI1QQ0KK+aJmyA+IGvDoW5nOyAjNjI1Qg0KK+aJnCA+IHnFqzsgIzYyNUMNCivmiZ0gPiBrxas7ICM2MjVEDQor5omeID4gaMOgbjsgIzYyNUUNCivmiZ8gPiBzaMSTbjsgIzYyNUYNCivmiaAgPiBjaMSBOyAjNjI2MA0KK+aJoSA+IHnErTsgIzYyNjENCivmiaIgPiBnxa07ICM2MjYyDQor5omjID4ga8OydTsgIzYyNjMNCivmiaQgPiB3w7k7ICM2MjY0DQor5omlID4gdMWrbzsgIzYyNjUNCivmiaYgPiBxacSBbjsgIzYyNjYNCivmiacgPiB6aMOtOyAjNjI2Nw0KK+aJqCA+IHLDqG47ICM2MjY4DQor5ompID4ga8O5bzsgIzYyNjkNCivmiaogPiBtw6luOyAjNjI2QQ0KK+aJqyA+IHPEg287ICM2MjZCDQor5omsID4gecOhbmc7ICM2MjZDDQor5omtID4gbsStdTsgIzYyNkQNCivmia4gPiBiw6BuOyAjNjI2RQ0KK+aJryA+IGNoxJU7ICM2MjZGDQor5omwID4gcsSDbzsgIzYyNzANCivmibEgPiB4xKs7ICM2MjcxDQor5omyID4gcWnDoW47ICM2MjcyDQor5omzID4gYsSBbjsgIzYyNzMNCivmibQgPiBqacOhOyAjNjI3NA0KK+aJtSA+IHnDujsgIzYyNzUNCivmibYgPiBmw7o7ICM2Mjc2DQor5om3ID4gw6BvOyAjNjI3Nw0KK+aJuCA+IHjEqzsgIzYyNzgNCivmibkgPiBwxKs7ICM2Mjc5DQor5om6ID4gemjErTsgIzYyN0ENCivmibsgPiB6w6w7ICM2MjdCDQor5om8ID4gw6g7ICM2MjdDDQor5om9ID4gZMO5bjsgIzYyN0QNCivmib4gPiB6aMSDbzsgIzYyN0UNCivmib8gPiBjaMOpbmc7ICM2MjdGDQor5oqAID4gasOsOyAjNjI4MA0KK+aKgSA+IHnEg247ICM2MjgxDQor5oqCID4ga3XDoW5nOyAjNjI4Mg0KK+aKgyA+IGJpw6BuOyAjNjI4Mw0KK+aKhCA+IGNoxIFvOyAjNjI4NA0KK+aKhSA+IGrFqzsgIzYyODUNCivmioYgPiB3w6huOyAjNjI4Ng0KK+aKhyA+IGjDujsgIzYyODcNCivmioggPiB5dcOoOyAjNjI4OA0KK+aKiSA+IGp1w6k7ICM2Mjg5DQor5oqKID4gYsSDOyAjNjI4QQ0KK+aKiyA+IHHDrG47ICM2MjhCDQor5oqMID4gemjElW47ICM2MjhDDQor5oqNID4gemjElW5nOyAjNjI4RA0KK+aKjiA+IHnFrW47ICM2MjhFDQor5oqPID4gd8OhbjsgIzYyOEYNCivmipAgPiBuw7k7ICM2MjkwDQor5oqRID4gecOsOyAjNjI5MQ0KK+aKkiA+IHNoxas7ICM2MjkyDQor5oqTID4gemh1xIE7ICM2MjkzDQor5oqUID4gcMOzdTsgIzYyOTQNCivmipUgPiB0w7N1OyAjNjI5NQ0KK+aKliA+IGTFj3U7ICM2Mjk2DQor5oqXID4ga8Ogbmc7ICM2Mjk3DQor5oqYID4gemjDqTsgIzYyOTgNCivmipkgPiBww7N1OyAjNjI5OQ0KK+aKmiA+IGbFrTsgIzYyOUENCivmipsgPiBwxIFvOyAjNjI5Qg0KK+aKnCA+IGLDoTsgIzYyOUMNCivmip0gPiDEg287ICM2MjlEDQor5oqeID4gesOpOyAjNjI5RQ0KK+aKnyA+IHR1w6FuOyAjNjI5Rg0KK+aKoCA+IGvFjXU7ICM2MkEwDQor5oqhID4gbMO6bjsgIzYyQTENCivmiqIgPiBxacSDbmc7ICM2MkEyDQor5oqkID4gaMO5OyAjNjJBNA0KK+aKpSA+IGLDoG87ICM2MkE1DQor5oqmID4gYsStbmc7ICM2MkE2DQor5oqnID4gemjErTsgIzYyQTcNCivmiqggPiBwxJNuZzsgIzYyQTgNCivmiqkgPiB0xIFuOyAjNjJBOQ0KK+aKqiA+IHDFqzsgIzYyQUENCivmiqsgPiBwxKs7ICM2MkFCDQor5oqsID4gdMOhaTsgIzYyQUMNCivmiq0gPiB5xINvOyAjNjJBRA0KK+aKriA+IHpoxJVuOyAjNjJBRQ0KK+aKryA+IHpoxIE7ICM2MkFGDQor5oqwID4gecSDbmc7ICM2MkIwDQor5oqxID4gYsOgbzsgIzYyQjENCivmirIgPiBoxJM7ICM2MkIyDQor5oqzID4gbsStOyAjNjJCMw0KK+aKtCA+IHnDrDsgIzYyQjQNCivmirUgPiBkxK07ICM2MkI1DQor5oq2ID4gY2jDrDsgIzYyQjYNCivmircgPiBwxKs7ICM2MkI3DQor5oq4ID4gesSBOyAjNjJCOA0KK+aKuSA+IG3FjzsgIzYyQjkNCivmirogPiBtxY87ICM2MkJBDQor5oq7ID4gc2jDqG47ICM2MkJCDQor5oq8ID4gecSBOyAjNjJCQw0KK+aKvSA+IGNoxY11OyAjNjJCRA0KK+aKviA+IHHFqzsgIzYyQkUNCivmir8gPiBtxK1uOyAjNjJCRg0KK+aLgCA+IGNow7k7ICM2MkMwDQor5ouBID4gamnEgTsgIzYyQzENCivmi4IgPiBmw7o7ICM2MkMyDQor5ouDID4gemjEg247ICM2MkMzDQor5ouEID4gemjFrTsgIzYyQzQNCivmi4UgPiBkw6BuOyAjNjJDNQ0KK+aLhiA+IGNoxIFpOyAjNjJDNg0KK+aLhyA+IG3FrTsgIzYyQzcNCivmi4ggPiBuacOhbjsgIzYyQzgNCivmi4kgPiBsxIE7ICM2MkM5DQor5ouKID4gZsWtOyAjNjJDQQ0KK+aLiyA+IHDEgW87ICM2MkNCDQor5ouMID4gYsOgbjsgIzYyQ0MNCivmi40gPiBwxIFpOyAjNjJDRA0KK+aLjiA+IGzEq25nOyAjNjJDRQ0KK+aLjyA+IG7DoTsgIzYyQ0YNCivmi5AgPiBndcSDaTsgIzYyRDANCivmi5EgPiBxacOhbjsgIzYyRDENCivmi5IgPiBqw7k7ICM2MkQyDQor5ouTID4gdMO5bzsgIzYyRDMNCivmi5QgPiBiw6E7ICM2MkQ0DQor5ouVID4gdMWrbzsgIzYyRDUNCivmi5YgPiB0xatvOyAjNjJENg0KK+aLlyA+IMSDbzsgIzYyRDcNCivmi5ggPiBqxas7ICM2MkQ4DQor5ouZID4gemjDum87ICM2MkQ5DQor5ouaID4gcMOgbjsgIzYyREENCivmi5sgPiB6aMSBbzsgIzYyREINCivmi5wgPiBiw6BpOyAjNjJEQw0KK+aLnSA+IGLDoGk7ICM2MkREDQor5oueID4gZMStOyAjNjJERQ0KK+aLnyA+IG7ErTsgIzYyREYNCivmi6AgPiBqw7k7ICM2MkUwDQor5ouhID4ga8O5bzsgIzYyRTENCivmi6IgPiBsxY9uZzsgIzYyRTINCivmi6MgPiBqacSDbjsgIzYyRTMNCivmi6UgPiB5xY9uZzsgIzYyRTUNCivmi6YgPiBsw6FuOyAjNjJFNg0KK+aLpyA+IG7DrW5nOyAjNjJFNw0KK+aLqCA+IGLFjTsgIzYyRTgNCivmi6kgPiB6w6k7ICM2MkU5DQor5ouqID4gcWnEgW47ICM2MkVBDQor5ourID4gaMOpbjsgIzYyRUINCivmi6wgPiBndcSBOyAjNjJFQw0KK+aLrSA+IHNow6w7ICM2MkVEDQor5ouuID4gamnDqTsgIzYyRUUNCivmi68gPiB6aMSVbmc7ICM2MkVGDQor5ouwID4gbsStbjsgIzYyRjANCivmi7EgPiBnxY9uZzsgIzYyRjENCivmi7IgPiBnxY9uZzsgIzYyRjINCivmi7MgPiBxdcOhbjsgIzYyRjMNCivmi7QgPiBzaHXEgW47ICM2MkY0DQor5ou1ID4gY8O6bjsgIzYyRjUNCivmi7YgPiB6xINuOyAjNjJGNg0KK+aLtyA+IGvEg287ICM2MkY3DQor5ou4ID4gY2jErTsgIzYyRjgNCivmi7kgPiB4acOpOyAjNjJGOQ0KK+aLuiA+IGPDqDsgIzYyRkENCivmi7sgPiBoxatpOyAjNjJGQg0KK+aLvCA+IHDEq247ICM2MkZDDQor5ou9ID4gemh1xIFpOyAjNjJGRA0KK+aLviA+IHNow607ICM2MkZFDQor5ou/ID4gbsOhOyAjNjJGRg0KK+aMgCA+IGLDsjsgIzYzMDANCivmjIEgPiBjaMOtOyAjNjMwMQ0KK+aMgiA+IGd1w6A7ICM2MzAyDQor5oyDID4gemjDrDsgIzYzMDMNCivmjIQgPiBrw7lvOyAjNjMwNA0KK+aMhSA+IGTFrW87ICM2MzA1DQor5oyGID4gZMWtbzsgIzYzMDYNCivmjIcgPiB6aMStOyAjNjMwNw0KK+aMiCA+IHFpw6g7ICM2MzA4DQor5oyJID4gw6BuOyAjNjMwOQ0KK+aMiiA+IG7Dsm5nOyAjNjMwQQ0KK+aMiyA+IHpow6huOyAjNjMwQg0KK+aMjCA+IGfDqTsgIzYzMEMNCivmjI0gPiBqacOgbzsgIzYzMEQNCivmjI4gPiBrxas7ICM2MzBFDQor5oyPID4gZMOybmc7ICM2MzBGDQor5oyQID4gcsO6OyAjNjMxMA0KK+aMkSA+IHRpxIFvOyAjNjMxMQ0KK+aMkiA+IGxpw6g7ICM2MzEyDQor5oyTID4gemjEgTsgIzYzMTMNCivmjJQgPiBsx5o7ICM2MzE0DQor5oyVID4gZGnDqTsgIzYzMTUNCivmjJYgPiB3xIE7ICM2MzE2DQor5oyXID4ganXDqTsgIzYzMTcNCivmjJkgPiBqxa07ICM2MzE5DQor5oyaID4gemjDrDsgIzYzMUENCivmjJsgPiBsdcOhbjsgIzYzMUINCivmjJwgPiB5w6A7ICM2MzFDDQor5oydID4gemh1xIE7ICM2MzFEDQor5oyeID4gdMOgOyAjNjMxRQ0KK+aMnyA+IHhpw6k7ICM2MzFGDQor5oygID4gbsOhbzsgIzYzMjANCivmjKEgPiBkxINuZzsgIzYzMjENCivmjKIgPiBqacSDbzsgIzYzMjINCivmjKMgPiB6aMSTbmc7ICM2MzIzDQor5oykID4gasStOyAjNjMyNA0KK+aMpSA+IGjFq2k7ICM2MzI1DQor5oymID4geMO6bjsgIzYzMjYNCivmjKggPiDEgWk7ICM2MzI4DQor5oypID4gdMWrbzsgIzYzMjkNCivmjKogPiBuw7pvOyAjNjMyQQ0KK+aMqyA+IGPDuW87ICM2MzJCDQor5oysID4gYsOzOyAjNjMyQw0KK+aMrSA+IGfElW5nOyAjNjMyRA0KK+aMriA+IHTErTsgIzYzMkUNCivmjK8gPiB6aMOobjsgIzYzMkYNCivmjLAgPiBjaMOpbmc7ICM2MzMwDQor5oyxID4gc8WrbzsgIzYzMzENCivmjLIgPiBzxatvOyAjNjMzMg0KK+aMsyA+IGvEk25nOyAjNjMzMw0KK+aMtCA+IG3ElWk7ICM2MzM0DQor5oy1ID4gbMOybmc7ICM2MzM1DQor5oy2ID4gasO6OyAjNjMzNg0KK+aMtyA+IHDDqW5nOyAjNjMzNw0KK+aMuCA+IGppxINuOyAjNjMzOA0KK+aMuSA+IHnDrDsgIzYzMzkNCivmjLogPiB0xK1uZzsgIzYzM0ENCivmjLsgPiBzaMSBbjsgIzYzM0INCivmjLwgPiBuw7lvOyAjNjMzQw0KK+aMvSA+IHfEg247ICM2MzNEDQor5oy+ID4geGnDqTsgIzYzM0UNCivmjL8gPiBjaMSBOyAjNjMzRg0KK+aNgCA+IGbEk25nOyAjNjM0MA0KK+aNgSA+IGppxINvOyAjNjM0MQ0KK+aNgiA+IHfFrTsgIzYzNDINCivmjYMgPiBqw7luOyAjNjM0Mw0KK+aNhCA+IGrDrHU7ICM2MzQ0DQor5o2FID4gdMWPbmc7ICM2MzQ1DQor5o2GID4ga8WtbjsgIzYzNDYNCivmjYcgPiBow7lvOyAjNjM0Nw0KK+aNiCA+IHTDujsgIzYzNDgNCivmjYkgPiB6aMWrbzsgIzYzNDkNCivmjYogPiBww7N1OyAjNjM0QQ0KK+aNiyA+IGzDqDsgIzYzNEINCivmjYwgPiBixIE7ICM2MzRDDQor5o2NID4gaMOgbjsgIzYzNEQNCivmjY4gPiBzaMSBbzsgIzYzNEUNCivmjY8gPiBuacSTOyAjNjM0Rg0KK+aNkCA+IGp1xIFuOyAjNjM1MA0KK+aNkSA+IHrDqTsgIzYzNTENCivmjZIgPiBzxY9uZzsgIzYzNTINCivmjZMgPiB5w6k7ICM2MzUzDQor5o2UID4ganXDqTsgIzYzNTQNCivmjZUgPiBixa07ICM2MzU1DQor5o2WID4gaHXDoW47ICM2MzU2DQor5o2XID4gYsO5OyAjNjM1Nw0KK+aNmCA+IHrDuW47ICM2MzU4DQor5o2ZID4gecOsOyAjNjM1OQ0KK+aNmiA+IHpoxIFpOyAjNjM1QQ0KK+aNmyA+IGzHmjsgIzYzNUINCivmjZwgPiBzxY11OyAjNjM1Qw0KK+aNnSA+IHTFq287ICM2MzVEDQor5o2eID4gbMSBbzsgIzYzNUUNCivmjZ8gPiBzxa1uOyAjNjM1Rg0KK+aNoCA+IGLEgW5nOyAjNjM2MA0KK+aNoSA+IGppxINuOyAjNjM2MQ0KK+aNoiA+IGh1w6BuOyAjNjM2Mg0KK+aNoyA+IGTEg287ICM2MzYzDQor5o2lID4gd8OgbjsgIzYzNjUNCivmjaYgPiBxw61uOyAjNjM2Ng0KK+aNpyA+IHDElW5nOyAjNjM2Nw0KK+aNqCA+IHNoxJU7ICM2MzY4DQor5o2pID4gbGnDqDsgIzYzNjkNCivmjaogPiBtw61uOyAjNjM2QQ0KK+aNqyA+IG3DqW47ICM2MzZCDQor5o2sID4gZsWtOyAjNjM2Qw0KK+aNrSA+IGLEg2k7ICM2MzZEDQor5o2uID4gasO5OyAjNjM2RQ0KK+aNryA+IGTEg287ICM2MzZGDQor5o2wID4gd8WPOyAjNjM3MA0KK+aNsSA+IMOhaTsgIzYzNzENCivmjbIgPiBqdcSDbjsgIzYzNzINCivmjbMgPiB5dcOoOyAjNjM3Mw0KK+aNtCA+IHrFj25nOyAjNjM3NA0KK+aNtSA+IGNoxJVuOyAjNjM3NQ0KK+aNtiA+IGNow7ppOyAjNjM3Ng0KK+aNtyA+IGppw6k7ICM2Mzc3DQor5o24ID4gdMWrOyAjNjM3OA0KK+aNuSA+IGLDqG47ICM2Mzc5DQor5o26ID4gbsOgOyAjNjM3QQ0KK+aNuyA+IG5pxINuOyAjNjM3Qg0KK+aNvCA+IG7Dum87ICM2MzdDDQor5o29ID4gesO6OyAjNjM3RA0KK+aNviA+IHfDsjsgIzYzN0UNCivmjb8gPiB4xKs7ICM2MzdGDQor5o6AID4geGnEgW47ICM2MzgwDQor5o6BID4gY2jDqW5nOyAjNjM4MQ0KK+aOgiA+IGRpxIFuOyAjNjM4Mg0KK+aOgyA+IHPEg287ICM2MzgzDQor5o6EID4gbMO6bjsgIzYzODQNCivmjoUgPiBxw6xuZzsgIzYzODUNCivmjoYgPiBnxIFuZzsgIzYzODYNCivmjocgPiBkw7pvOyAjNjM4Nw0KK+aOiCA+IHNow7J1OyAjNjM4OA0KK+aOiSA+IGRpw6BvOyAjNjM4OQ0KK+aOiiA+IHDDs3U7ICM2MzhBDQor5o6LID4gZMStOyAjNjM4Qg0KK+aOjCA+IHpoxINuZzsgIzYzOEMNCivmjo0gPiBnxa1uOyAjNjM4RA0KK+aOjiA+IGrErTsgIzYzOEUNCivmjo8gPiB0xIFvOyAjNjM4Rg0KK+aOkCA+IHFpxIE7ICM2MzkwDQor5o6RID4gccOtOyAjNjM5MQ0KK+aOkiA+IHDDoWk7ICM2MzkyDQor5o6TID4gc2jDujsgIzYzOTMNCivmjpQgPiBxacSBbjsgIzYzOTQNCivmjpUgPiBsw6xuZzsgIzYzOTUNCivmjpYgPiB5w6w7ICM2Mzk2DQor5o6XID4gecOgOyAjNjM5Nw0KK+aOmCA+IGp1w6k7ICM2Mzk4DQor5o6ZID4gemjEk25nOyAjNjM5OQ0KK+aOmiA+IGxpxINuZzsgIzYzOUENCivmjpsgPiBndcOgOyAjNjM5Qg0KK+aOnCA+IHnErTsgIzYzOUMNCivmjp0gPiBow7lvOyAjNjM5RA0KK+aOniA+IHNow6BuOyAjNjM5RQ0KK+aOnyA+IHpoxJVuZzsgIzYzOUYNCivmjqAgPiBsx5xlOyAjNjNBMA0KK+aOoSA+IGPEg2k7ICM2M0ExDQor5o6iID4gdMOgbjsgIzYzQTINCivmjqMgPiBjaMOoOyAjNjNBMw0KK+aOpCA+IGLEq25nOyAjNjNBNA0KK+aOpSA+IGppxJM7ICM2M0E1DQor5o6mID4gdMOsOyAjNjNBNg0KK+aOpyA+IGvDsm5nOyAjNjNBNw0KK+aOqCA+IHTFq2k7ICM2M0E4DQor5o6pID4gecSDbjsgIzYzQTkNCivmjqogPiBjw7lvOyAjNjNBQQ0KK+aOqyA+IHrFjXU7ICM2M0FCDQor5o6sID4gasO6OyAjNjNBQw0KK+aOrSA+IHRpw6BuOyAjNjNBRA0KK+aOriA+IHFpw6FuOyAjNjNBRQ0KK+aOryA+IGvDqG47ICM2M0FGDQor5o6wID4gYsSBaTsgIzYzQjANCivmjrEgPiBzaMWPdTsgIzYzQjENCivmjrIgPiBqacSTOyAjNjNCMg0KK+aOsyA+IGzFrTsgIzYzQjMNCivmjrQgPiBnw7pvOyAjNjNCNA0KK+aOtyA+IHpow607ICM2M0I3DQor5o64ID4gZMSDbjsgIzYzQjgNCivmjrogPiB4acSBbjsgIzYzQkENCivmjrsgPiBzxIFvOyAjNjNCQg0KK+aOvCA+IGd1w6BuOyAjNjNCQw0KK+aOvSA+IHDDqG5nOyAjNjNCRA0KK+aOviA+IHl1w6BuOyAjNjNCRQ0KK+aOvyA+IG7DuW87ICM2M0JGDQor5o+AID4gamnEg247ICM2M0MwDQor5o+BID4gemjEk247ICM2M0MxDQor5o+CID4gasSrdTsgIzYzQzINCivmj4MgPiBqacSBbjsgIzYzQzMNCivmj4QgPiB5w7o7ICM2M0M0DQor5o+FID4gecOhbjsgIzYzQzUNCivmj4YgPiBrw7ppOyAjNjNDNg0KK+aPhyA+IG7Eg247ICM2M0M3DQor5o+IID4gaMWNbmc7ICM2M0M4DQor5o+JID4gcsOzdTsgIzYzQzkNCivmj4ogPiBww6w7ICM2M0NBDQor5o+LID4gd8STaTsgIzYzQ0INCivmj4wgPiBzxIFpOyAjNjNDQw0KK+aPjSA+IHrDsnU7ICM2M0NEDQor5o+OID4geHXEgW47ICM2M0NFDQor5o+PID4gbWnDoW87ICM2M0NGDQor5o+QID4gdMOtOyAjNjNEMA0KK+aPkSA+IG5pxJM7ICM2M0QxDQor5o+SID4gY2jEgTsgIzYzRDINCivmj5MgPiBzaMOsOyAjNjNEMw0KK+aPlCA+IHrFj25nOyAjNjNENA0KK+aPlSA+IHpow6huOyAjNjNENQ0KK+aPliA+IHnEqzsgIzYzRDYNCivmj5cgPiBzaMWtbjsgIzYzRDcNCivmj5ggPiBow6luZzsgIzYzRDgNCivmj5kgPiBiacOgbjsgIzYzRDkNCivmj5ogPiB5w6FuZzsgIzYzREENCivmj5sgPiBodcOgbjsgIzYzREINCivmj5wgPiB5xINuOyAjNjNEQw0KK+aPnSA+IHp1w6BuOyAjNjNERA0KK+aPniA+IMSDbjsgIzYzREUNCivmj58gPiB4xas7ICM2M0RGDQor5o+gID4gecOgOyAjNjNFMA0KK+aPoSA+IHfDsjsgIzYzRTENCivmj6IgPiBrw6g7ICM2M0UyDQor5o+jID4gY2h1xINpOyAjNjNFMw0KK+aPpCA+IGrDrTsgIzYzRTQNCivmj6UgPiB0w6w7ICM2M0U1DQor5o+mID4gbMOhOyAjNjNFNg0KK+aPpyA+IGzDoDsgIzYzRTcNCivmj6ggPiBjaMOpbmc7ICM2M0U4DQor5o+pID4ga8SBaTsgIzYzRTkNCivmj6ogPiBqxKt1OyAjNjNFQQ0KK+aPqyA+IGrEq3U7ICM2M0VCDQor5o+sID4gdMO6OyAjNjNFQw0KK+aPrSA+IGppxJM7ICM2M0VEDQor5o+uID4gaMWraTsgIzYzRUUNCivmj68gPiBnxJNuZzsgIzYzRUYNCivmj7AgPiBjaMOybmc7ICM2M0YwDQor5o+xID4gc2jDuW87ICM2M0YxDQor5o+yID4gc2jDqTsgIzYzRjINCivmj7MgPiB4acOoOyAjNjNGMw0KK+aPtCA+IHl1w6FuOyAjNjNGNA0KK+aPtSA+IHFpw6FuOyAjNjNGNQ0KK+aPtiA+IHnDqTsgIzYzRjYNCivmj7cgPiBjaMSBOyAjNjNGNw0KK+aPuCA+IHpoxIE7ICM2M0Y4DQor5o+5ID4gYsSTaTsgIzYzRjkNCivmj7ogPiB5w6FvOyAjNjNGQQ0KK+aPvSA+IGzEg247ICM2M0ZEDQor5o++ID4gd8OobjsgIzYzRkUNCivmj78gPiBxw6xuOyAjNjNGRg0KK+aQgCA+IGNoxIFuOyAjNjQwMA0KK+aQgSA+IGfEkzsgIzY0MDENCivmkIIgPiBsxY91OyAjNjQwMg0KK+aQgyA+IHrFj25nOyAjNjQwMw0KK+aQhCA+IGfEk25nOyAjNjQwNA0KK+aQhSA+IGppxINvOyAjNjQwNQ0KK+aQhiA+IGfDsnU7ICM2NDA2DQor5pCHID4gccOsbjsgIzY0MDcNCivmkIggPiB5xY9uZzsgIzY0MDgNCivmkIkgPiBxdcOoOyAjNjQwOQ0KK+aQiiA+IGNoxY11OyAjNjQwQQ0KK+aQiyA+IGNoxK07ICM2NDBCDQor5pCMID4gemjEg247ICM2NDBDDQor5pCNID4gc8WtbjsgIzY0MEQNCivmkI4gPiBzxatuOyAjNjQwRQ0KK+aQjyA+IGLDszsgIzY0MEYNCivmkJAgPiBjaMO5OyAjNjQxMA0KK+aQkSA+IHLFj25nOyAjNjQxMQ0KK+aQkiA+IGLDqG5nOyAjNjQxMg0KK+aQkyA+IGPFq287ICM2NDEzDQor5pCUID4gc8SBbzsgIzY0MTQNCivmkJUgPiBrw6g7ICM2NDE1DQor5pCWID4gecOhbzsgIzY0MTYNCivmkJcgPiBkxINvOyAjNjQxNw0KK+aQmCA+IHpoxKs7ICM2NDE4DQor5pCZID4gbsO5OyAjNjQxOQ0KK+aQmiA+IHhpw6k7ICM2NDFBDQor5pCbID4gamnEgW47ICM2NDFCDQor5pCcID4gc8WNdTsgIzY0MUMNCivmkJ0gPiBxxK11OyAjNjQxRA0KK+aQniA+IGfEg287ICM2NDFFDQor5pCfID4geGnEg247ICM2NDFGDQor5pCgID4gc2jDuW87ICM2NDIwDQor5pChID4gc8SDbmc7ICM2NDIxDQor5pCiID4gasOsbjsgIzY0MjINCivmkKMgPiBtacOoOyAjNjQyMw0KK+aQpCA+IMOoOyAjNjQyNA0KK+aQpSA+IGNow7ppOyAjNjQyNQ0KK+aQpiA+IG7DuW87ICM2NDI2DQor5pCnID4gc2jEgW47ICM2NDI3DQor5pCoID4gdMOgOyAjNjQyOA0KK+aQqSA+IGppw6k7ICM2NDI5DQor5pCqID4gdMOhbmc7ICM2NDJBDQor5pCrID4gcMOhbjsgIzY0MkINCivmkKwgPiBixIFuOyAjNjQyQw0KK+aQrSA+IGTEgTsgIzY0MkQNCivmkK4gPiBsw6w7ICM2NDJFDQor5pCvID4gdMSBbzsgIzY0MkYNCivmkLAgPiBow7o7ICM2NDMwDQor5pCxID4gemjDrDsgIzY0MzENCivmkLIgPiB3xIE7ICM2NDMyDQor5pCzID4geGnDoTsgIzY0MzMNCivmkLQgPiBxacSBbjsgIzY0MzQNCivmkLUgPiB3w6huOyAjNjQzNQ0KK+aQtiA+IHFpxINuZzsgIzY0MzYNCivmkLcgPiB0acOhbjsgIzY0MzcNCivmkLggPiB6aMSTbjsgIzY0MzgNCivmkLkgPiDDqDsgIzY0MzkNCivmkLogPiB4xKs7ICM2NDNBDQor5pC7ID4gbsO5bzsgIzY0M0INCivmkLwgPiBxdcOhbjsgIzY0M0MNCivmkL0gPiBjaMOhOyAjNjQzRA0KK+aQviA+IHpow6A7ICM2NDNFDQor5pC/ID4gZ8OpOyAjNjQzRg0KK+aRgCA+IHfFrTsgIzY0NDANCivmkYEgPiDDqG47ICM2NDQxDQor5pGCID4gc2jDqDsgIzY0NDINCivmkYMgPiBrw6FuZzsgIzY0NDMNCivmkYQgPiBzaMOoOyAjNjQ0NA0KK+aRhSA+IHNoxas7ICM2NDQ1DQor5pGGID4gYsSDaTsgIzY0NDYNCivmkYcgPiB5w6FvOyAjNjQ0Nw0KK+aRiCA+IGLDrG47ICM2NDQ4DQor5pGJID4gc8WNdTsgIzY0NDkNCivmkYogPiB0xIFuOyAjNjQ0QQ0KK+aRiyA+IHPDoDsgIzY0NEINCivmkYwgPiBjaMSDbjsgIzY0NEMNCivmkY0gPiBzxatvOyAjNjQ0RA0KK+aRjiA+IGxpw6FvOyAjNjQ0RQ0KK+aRjyA+IGNoxY1uZzsgIzY0NEYNCivmkZAgPiBjaHXEgW5nOyAjNjQ1MA0KK+aRkSA+IGfDum87ICM2NDUxDQor5pGSID4gYsOsbmc7ICM2NDUyDQor5pGTID4gZsOpbmc7ICM2NDUzDQor5pGUID4gc2h1xIFpOyAjNjQ1NA0KK+aRlSA+IGTDrDsgIzY0NTUNCivmkZYgPiBxw6w7ICM2NDU2DQor5pGXID4gc291OyAjNjQ1Nw0KK+aRmCA+IHpoxIFpOyAjNjQ1OA0KK+aRmSA+IGxpxINuOyAjNjQ1OQ0KK+aRmiA+IHTDoW5nOyAjNjQ1QQ0KK+aRmyA+IGNoxKs7ICM2NDVCDQor5pGcID4gZ3XDoG47ICM2NDVDDQor5pGdID4gbMO5OyAjNjQ1RA0KK+aRniA+IGzDum87ICM2NDVFDQor5pGfID4gbMWPdTsgIzY0NUYNCivmkaAgPiB6xY9uZzsgIzY0NjANCivmkaEgPiBnw6BpOyAjNjQ2MQ0KK+aRoiA+IGjDuTsgIzY0NjINCivmkaMgPiB6aMSBOyAjNjQ2Mw0KK+aRpCA+IGNodcSDbmc7ICM2NDY0DQor5pGlID4gdMOgbmc7ICM2NDY1DQor5pGmID4gaHXDoDsgIzY0NjYNCivmkacgPiBjxatpOyAjNjQ2Nw0KK+aRqCA+IG7DoWk7ICM2NDY4DQor5pGpID4gbcOzOyAjNjQ2OQ0KK+aRqiA+IGppxIFuZzsgIzY0NkENCivmkasgPiBnxatpOyAjNjQ2Qg0KK+aRrCA+IHnDrG5nOyAjNjQ2Qw0KK+aRrSA+IHpow607ICM2NDZEDQor5pGuID4gw6FvOyAjNjQ2RQ0KK+aRryA+IHpow6w7ICM2NDZGDQor5pGwID4gbmnDqDsgIzY0NzANCivmkbEgPiBtw6FuOyAjNjQ3MQ0KK+aRsiA+IHNow6BuOyAjNjQ3Mg0KK+aRsyA+IGvFjXU7ICM2NDczDQor5pG0ID4gc2jFqzsgIzY0NzQNCivmkbUgPiBzxa1vOyAjNjQ3NQ0KK+aRtiA+IHR1w6FuOyAjNjQ3Ng0KK+aRtyA+IGppxINvOyAjNjQ3Nw0KK+aRuCA+IG3FjTsgIzY0NzgNCivmkbkgPiBtw7M7ICM2NDc5DQor5pG6ID4gemjDqTsgIzY0N0ENCivmkbsgPiB4acSBbjsgIzY0N0INCivmkbwgPiBrxJNuZzsgIzY0N0MNCivmkb0gPiBwacSDbzsgIzY0N0QNCivmkb4gPiBqacOgbmc7ICM2NDdFDQor5pG/ID4gecSrbjsgIzY0N0YNCivmkoAgPiBnw7J1OyAjNjQ4MA0KK+aSgSA+IHFpxIFuOyAjNjQ4MQ0KK+aSgiA+IGzHnGU7ICM2NDgyDQor5pKDID4gasOtOyAjNjQ4Mw0KK+aShCA+IHnEq25nOyAjNjQ4NA0KK+aShSA+IGp1xJM7ICM2NDg1DQor5pKGID4gcGnEkzsgIzY0ODYNCivmkocgPiBwacSVOyAjNjQ4Nw0KK+aSiCA+IGzEgW87ICM2NDg4DQor5pKJID4gZMWrbjsgIzY0ODkNCivmkoogPiB4acOgbjsgIzY0OEENCivmkosgPiBydcOhbjsgIzY0OEINCivmkowgPiBrw7lpOyAjNjQ4Qw0KK+aSjSA+IHrEg247ICM2NDhEDQor5pKOID4gecOsOyAjNjQ4RQ0KK+aSjyA+IHjDum47ICM2NDhGDQor5pKQID4gY2jEk25nOyAjNjQ5MA0KK+aSkSA+IGNoxJNuZzsgIzY0OTENCivmkpIgPiBzxIM7ICM2NDkyDQor5pKTID4gbsOhbzsgIzY0OTMNCivmkpQgPiBow6huZzsgIzY0OTQNCivmkpUgPiBzxKs7ICM2NDk1DQor5pKWID4gcWnEg247ICM2NDk2DQor5pKXID4gaHXDoW5nOyAjNjQ5Nw0KK+aSmCA+IGTEgTsgIzY0OTgNCivmkpkgPiB6xa1uOyAjNjQ5OQ0KK+aSmiA+IG5pxINuOyAjNjQ5QQ0KK+aSmyA+IGzErW47ICM2NDlCDQor5pKcID4gemjElW5nOyAjNjQ5Qw0KK+aSnSA+IGjFq2k7ICM2NDlEDQor5pKeID4gemh1w6BuZzsgIzY0OUUNCivmkp8gPiBqacSDbzsgIzY0OUYNCivmkqAgPiBqxK07ICM2NEEwDQor5pKhID4gY8SBbzsgIzY0QTENCivmkqIgPiBkxINuOyAjNjRBMg0KK+aSoyA+IGTEg247ICM2NEEzDQor5pKkID4gY2jDqDsgIzY0QTQNCivmkqUgPiBixY07ICM2NEE1DQor5pKmID4gY2jElTsgIzY0QTYNCivmkqcgPiBqdcOpOyAjNjRBNw0KK+aSqCA+IHhpxIFvOyAjNjRBOA0KK+aSqSA+IGxpw6FvOyAjNjRBOQ0KK+aSqiA+IGLDqG47ICM2NEFBDQor5pKrID4gZsWtOyAjNjRBQg0KK+aSrCA+IHFpw6BvOyAjNjRBQw0KK+aSrSA+IGLDsjsgIzY0QUQNCivmkq4gPiBjxatvOyAjNjRBRQ0KK+aSryA+IHpow7pvOyAjNjRBRg0KK+aSsCA+IHpodcOgbjsgIzY0QjANCivmkrEgPiB0xa1vOyAjNjRCMQ0KK+aSsiA+IHDFqzsgIzY0QjINCivmkrMgPiBxw6xuOyAjNjRCMw0KK+aStCA+IGTFq247ICM2NEI0DQor5pK1ID4gbmnEg247ICM2NEI1DQor5pK3ID4geGnDqTsgIzY0QjcNCivmkrggPiBsxa07ICM2NEI4DQor5pK5ID4gamnEg287ICM2NEI5DQor5pK6ID4gY3XEgW47ICM2NEJBDQor5pK7ID4gdMOgOyAjNjRCQg0KK+aSvCA+IGjDoG47ICM2NEJDDQor5pK9ID4gcWnDoG87ICM2NEJEDQor5pK+ID4gemh1xIE7ICM2NEJFDQor5pK/ID4gamnEg247ICM2NEJGDQor5pOAID4gZ8SDbjsgIzY0QzANCivmk4EgPiB5xY9uZzsgIzY0QzENCivmk4IgPiBsw6lpOyAjNjRDMg0KK+aTgyA+IGvFrW87ICM2NEMzDQor5pOEID4gbMWtOyAjNjRDNA0KK+aThSA+IHNow6BuOyAjNjRDNQ0KK+aThiA+IHpow7pvOyAjNjRDNg0KK+aThyA+IHrDqTsgIzY0QzcNCivmk4ggPiBwxas7ICM2NEM4DQor5pOJID4gY2jDuW87ICM2NEM5DQor5pOKID4gasOtOyAjNjRDQQ0KK+aTiyA+IGTEg25nOyAjNjRDQg0KK+aTjCA+IHPFrW87ICM2NENDDQor5pONID4gY8SBbzsgIzY0Q0QNCivmk44gPiBxw61uZzsgIzY0Q0UNCivmk48gPiBqw6xuZzsgIzY0Q0YNCivmk5AgPiBodcOgbjsgIzY0RDANCivmk5EgPiBqacSTOyAjNjREMQ0KK+aTkiA+IHHDrW47ICM2NEQyDQor5pOTID4ga3XEg2k7ICM2NEQzDQor5pOUID4gZMSBbjsgIzY0RDQNCivmk5UgPiB4xKs7ICM2NEQ1DQor5pOWID4gZ8SVOyAjNjRENg0KK+aTlyA+IHDDrDsgIzY0RDcNCivmk5ggPiBiw7I7ICM2NEQ4DQor5pOZID4gw6BvOyAjNjREOQ0KK+aTmiA+IGrDuTsgIzY0REENCivmk5sgPiB5w6g7ICM2NERCDQor5pOeID4gc8WPdTsgIzY0REUNCivmk58gPiBtw607ICM2NERGDQor5pOgID4gasStOyAjNjRFMA0KK+aToSA+IHTDoWk7ICM2NEUxDQor5pOiID4gemjDum87ICM2NEUyDQor5pOjID4gZMSDbzsgIzY0RTMNCivmk6QgPiB4xK1uZzsgIzY0RTQNCivmk6UgPiBsxINuOyAjNjRFNQ0KK+aTpiA+IGPEgTsgIzY0RTYNCivmk6cgPiBqxa07ICM2NEU3DQor5pOoID4gecOpOyAjNjRFOA0KK+aTqSA+IHLFrTsgIzY0RTkNCivmk6ogPiB5w6g7ICM2NEVBDQor5pOrID4gecOoOyAjNjRFQg0KK+aTrCA+IG7ErTsgIzY0RUMNCivmk60gPiBow7k7ICM2NEVEDQor5pOuID4gasOtOyAjNjRFRQ0KK+aTryA+IGLDrG47ICM2NEVGDQor5pOwID4gbsOtbmc7ICM2NEYwDQor5pOxID4gZ8STOyAjNjRGMQ0KK+aTsiA+IHpow607ICM2NEYyDQor5pOzID4gamnDqTsgIzY0RjMNCivmk7QgPiBrw7lvOyAjNjRGNA0KK+aTtSA+IG3DszsgIzY0RjUNCivmk7YgPiBqacOgbjsgIzY0RjYNCivmk7cgPiB4acOpOyAjNjRGNw0KK+aTuCA+IGxpw6g7ICM2NEY4DQor5pO5ID4gdMSBbjsgIzY0RjkNCivmk7ogPiBixINpOyAjNjRGQQ0KK+aTuyA+IHPFj3U7ICM2NEZCDQor5pO8ID4gbMWtOyAjNjRGQw0KK+aTvSA+IGzHnGU7ICM2NEZEDQor5pO+ID4gcsSDbzsgIzY0RkUNCivmk78gPiB6aMOtOyAjNjRGRg0KK+aUgCA+IHDEgW47ICM2NTAwDQor5pSBID4gecSDbmc7ICM2NTAxDQor5pSCID4gbMOoaTsgIzY1MDINCivmlIMgPiBzw6A7ICM2NTAzDQor5pSEID4gc2jFqzsgIzY1MDQNCivmlIUgPiB6xINuOyAjNjUwNQ0KK+aUhiA+IG5pxINuOyAjNjUwNg0KK+aUhyA+IHhpxINuOyAjNjUwNw0KK+aUiCA+IGrDuW47ICM2NTA4DQor5pSJID4gaMO5bzsgIzY1MDkNCivmlIogPiBsw6w7ICM2NTBBDQor5pSLID4gbMOgOyAjNjUwQg0KK+aUjCA+IGjDoG47ICM2NTBDDQor5pSNID4gecOtbmc7ICM2NTBEDQor5pSOID4gbMO6OyAjNjUwRQ0KK+aUjyA+IGzFj25nOyAjNjUwRg0KK+aUkCA+IHFpxIFuOyAjNjUxMA0KK+aUkSA+IHFpxIFuOyAjNjUxMQ0KK+aUkiA+IHrEg247ICM2NTEyDQor5pSTID4gcWnEgW47ICM2NTEzDQor5pSUID4gbMOhbjsgIzY1MTQNCivmlJUgPiBzxIFuOyAjNjUxNQ0KK+aUliA+IHnEq25nOyAjNjUxNg0KK+aUlyA+IG3DqWk7ICM2NTE3DQor5pSYID4gcsOhbmc7ICM2NTE4DQor5pSZID4gY2jEgW47ICM2NTE5DQor5pSbID4gY3XEgW47ICM2NTFCDQor5pScID4geMSrOyAjNjUxQw0KK+aUnSA+IHNow6g7ICM2NTFEDQor5pSeID4gbMWtbzsgIzY1MUUNCivmlJ8gPiBqw7luOyAjNjUxRg0KK+aUoCA+IG3DrTsgIzY1MjANCivmlKEgPiBsw607ICM2NTIxDQor5pSiID4gesSDbjsgIzY1MjINCivmlKMgPiBsx5hhbjsgIzY1MjMNCivmlKQgPiB0xIFuOyAjNjUyNA0KK+aUpSA+IHp1w6BuOyAjNjUyNQ0KK+aUpiA+IGzDrDsgIzY1MjYNCivmlKcgPiBkacSBbjsgIzY1MjcNCivmlKggPiB3xIE7ICM2NTI4DQor5pSpID4gZMSDbmc7ICM2NTI5DQor5pSqID4gamnEg287ICM2NTJBDQor5pSrID4ganXDqTsgIzY1MkINCivmlKwgPiBsxINuOyAjNjUyQw0KK+aUrSA+IGzDrDsgIzY1MkQNCivmlK4gPiBuxINuZzsgIzY1MkUNCivmlK8gPiB6aMSrOyAjNjUyRg0KK+aUsCA+IGfDuWk7ICM2NTMwDQor5pSxID4gZ8WtaTsgIzY1MzENCivmlLIgPiBxxKs7ICM2NTMyDQor5pSzID4geMOtbjsgIzY1MzMNCivmlLQgPiBwxas7ICM2NTM0DQor5pS1ID4gc8WraTsgIzY1MzUNCivmlLYgPiBzaMWNdTsgIzY1MzYNCivmlLcgPiBrw6FvOyAjNjUzNw0KK+aUuCA+IHnFjXU7ICM2NTM4DQor5pS5ID4gZ8SDaTsgIzY1MzkNCivmlLogPiB5xK07ICM2NTNBDQor5pS7ID4gZ8WNbmc7ICM2NTNCDQor5pS8ID4gZ8SBbjsgIzY1M0MNCivmlL0gPiBixIFuOyAjNjUzRA0KK+aUviA+IGbDoG5nOyAjNjUzRQ0KK+aUvyA+IHpow6huZzsgIzY1M0YNCivmlYAgPiBiw7M7ICM2NTQwDQor5pWBID4gZGnEgW47ICM2NTQxDQor5pWCID4ga8OydTsgIzY1NDINCivmlYMgPiBtxK1uOyAjNjU0Mw0KK+aVhCA+IHfDuTsgIzY1NDQNCivmlYUgPiBnw7k7ICM2NTQ1DQor5pWGID4gaMOpOyAjNjU0Ng0KK+aVhyA+IGPDqDsgIzY1NDcNCivmlYggPiB4acOgbzsgIzY1NDgNCivmlYkgPiBtxK07ICM2NTQ5DQor5pWKID4gY2jDuTsgIzY1NEENCivmlYsgPiBnw6k7ICM2NTRCDQor5pWMID4gZMOtOyAjNjU0Qw0KK+aVjSA+IHjDuTsgIzY1NEQNCivmlY4gPiBqacOgbzsgIzY1NEUNCivmlY8gPiBtxK1uOyAjNjU0Rg0KK+aVkCA+IGNow6luOyAjNjU1MA0KK+aVkSA+IGrDrHU7ICM2NTUxDQor5pWSID4gemjDqG47ICM2NTUyDQor5pWTID4gZMO6bzsgIzY1NTMNCivmlZQgPiB5xa07ICM2NTU0DQor5pWVID4gY2jDrDsgIzY1NTUNCivmlZYgPiDDoW87ICM2NTU2DQor5pWXID4gYsOgaTsgIzY1NTcNCivmlZggPiB4w7k7ICM2NTU4DQor5pWZID4gamnDoG87ICM2NTU5DQor5pWaID4gZMO6bzsgIzY1NUENCivmlZsgPiBsacOgbjsgIzY1NUINCivmlZwgPiBuacOoOyAjNjU1Qw0KK+aVnSA+IGLDrDsgIzY1NUQNCivmlZ4gPiBjaMSDbmc7ICM2NTVFDQor5pWfID4gZGnEg247ICM2NTVGDQor5pWgID4gZMO6bzsgIzY1NjANCivmlaEgPiB5w6w7ICM2NTYxDQor5pWiID4gZ8SDbjsgIzY1NjINCivmlaMgPiBzw6BuOyAjNjU2Mw0KK+aVpCA+IGvElTsgIzY1NjQNCivmlaUgPiB5w6BuOyAjNjU2NQ0KK+aVpiA+IGTFq247ICM2NTY2DQor5pWnID4gccStOyAjNjU2Nw0KK+aVqCA+IGTFj3U7ICM2NTY4DQor5pWpID4geGnDoG87ICM2NTY5DQor5pWqID4gZMO6bzsgIzY1NkENCivmlasgPiBqacOgbzsgIzY1NkINCivmlawgPiBqw6xuZzsgIzY1NkMNCivmla0gPiB5w6FuZzsgIzY1NkQNCivmla4gPiB4acOhOyAjNjU2RQ0KK+aVryA+IG3DrW47ICM2NTZGDQor5pWwID4gc2jDuTsgIzY1NzANCivmlbEgPiDDoWk7ICM2NTcxDQor5pWyID4gcWnEgW87ICM2NTcyDQor5pWzID4gw6FpOyAjNjU3Mw0KK+aVtCA+IHpoxJVuZzsgIzY1NzQNCivmlbUgPiBkw607ICM2NTc1DQor5pW2ID4gemjDqG47ICM2NTc2DQor5pW3ID4gZsWrOyAjNjU3Nw0KK+aVuCA+IHNow7k7ICM2NTc4DQor5pW5ID4gbGnDoW87ICM2NTc5DQor5pW6ID4gccWrOyAjNjU3QQ0KK+aVuyA+IHjDrG9uZzsgIzY1N0INCivmlbwgPiB4xK07ICM2NTdDDQor5pW9ID4gamnEg287ICM2NTdEDQor5pW/ID4gamnEg287ICM2NTdGDQor5paAID4gemjDum87ICM2NTgwDQor5paBID4gecOsOyAjNjU4MQ0KK+aWgiA+IGxpw6BuOyAjNjU4Mg0KK+aWgyA+IGLDrDsgIzY1ODMNCivmloQgPiBsw6w7ICM2NTg0DQor5paFID4geGnDoG87ICM2NTg1DQor5paGID4geGnDoG87ICM2NTg2DQor5paHID4gd8OpbjsgIzY1ODcNCivmloggPiB4dcOpOyAjNjU4OA0KK+aWiSA+IHHDrTsgIzY1ODkNCivmloogPiBxw607ICM2NThBDQor5paLID4gemjEgWk7ICM2NThCDQor5paMID4gYsSrbjsgIzY1OEMNCivmlo0gPiBqdcOpOyAjNjU4RA0KK+aWjiA+IHpoxIFpOyAjNjU4RQ0KK+aWkCA+IGbElWk7ICM2NTkwDQor5paRID4gYsSBbjsgIzY1OTENCivmlpIgPiBixIFuOyAjNjU5Mg0KK+aWkyA+IGzDoW47ICM2NTkzDQor5paUID4gecWtOyAjNjU5NA0KK+aWlSA+IGzDoW47ICM2NTk1DQor5paWID4gd8SVaTsgIzY1OTYNCivmlpcgPiBkxY91OyAjNjU5Nw0KK+aWmCA+IHNoxJNuZzsgIzY1OTgNCivmlpkgPiBsacOgbzsgIzY1OTkNCivmlpogPiBqacSDOyAjNjU5QQ0KK+aWmyA+IGjDujsgIzY1OUINCivmlpwgPiB4acOpOyAjNjU5Qw0KK+aWnSA+IGppxIM7ICM2NTlEDQor5paeID4gecWtOyAjNjU5RQ0KK+aWnyA+IHpoxJNuOyAjNjU5Rg0KK+aWoCA+IGppw6BvOyAjNjVBMA0KK+aWoSA+IHfDsjsgIzY1QTENCivmlqIgPiB0xY91OyAjNjVBMg0KK+aWoyA+IGNow7k7ICM2NUEzDQor5pakID4gasSrbjsgIzY1QTQNCivmlqUgPiBjaMOsOyAjNjVBNQ0KK+aWpiA+IHnDrW47ICM2NUE2DQor5panID4gZsWtOyAjNjVBNw0KK+aWqCA+IHFpxIFuZzsgIzY1QTgNCivmlqkgPiB6aMSDbjsgIzY1QTkNCivmlqogPiBxw7o7ICM2NUFBDQor5parID4gemjDum87ICM2NUFCDQor5pasID4gemjEg247ICM2NUFDDQor5patID4gZHXDoG47ICM2NUFEDQor5pauID4gemjDum87ICM2NUFFDQor5pavID4gc8SrOyAjNjVBRg0KK+aWsCA+IHjEq247ICM2NUIwDQor5paxID4gemjDum87ICM2NUIxDQor5payID4gemjDum87ICM2NUIyDQor5pazID4gccOtbjsgIzY1QjMNCivmlrQgPiBsw61uOyAjNjVCNA0KK+aWtSA+IHpow7pvOyAjNjVCNQ0KK+aWtiA+IGNow7k7ICM2NUI2DQor5pa3ID4gZHXDoG47ICM2NUI3DQor5pa4ID4gemjFrTsgIzY1QjgNCivmlrkgPiBmxIFuZzsgIzY1QjkNCivmlrogPiB4acOoOyAjNjVCQQ0KK+aWuyA+IGjDoW5nOyAjNjVCQg0KK+aWvCA+IHnDujsgIzY1QkMNCivmlr0gPiBzaMSrOyAjNjVCRA0KK+aWviA+IHDDqGk7ICM2NUJFDQor5pa/ID4gecOzdTsgIzY1QkYNCivml4EgPiBww6FuZzsgIzY1QzENCivml4IgPiBxw607ICM2NUMyDQor5peDID4gemjEgW47ICM2NUMzDQor5peEID4gbcOhbzsgIzY1QzQNCivml4UgPiBsx5o7ICM2NUM1DQor5peGID4gcMOoaTsgIzY1QzYNCivml4cgPiBwxKs7ICM2NUM3DQor5peIID4gbMOtdTsgIzY1QzgNCivml4kgPiBmxas7ICM2NUM5DQor5peKID4gZsSDbmc7ICM2NUNBDQor5peLID4geHXDoW47ICM2NUNCDQor5peMID4gasSrbmc7ICM2NUNDDQor5peNID4gasSrbmc7ICM2NUNEDQor5peOID4gbsStOyAjNjVDRQ0KK+aXjyA+IHrDujsgIzY1Q0YNCivml5AgPiB6aMOgbzsgIzY1RDANCivml5EgPiB5xK07ICM2NUQxDQor5peSID4gbMOtdTsgIzY1RDINCivml5MgPiBzaMSBbzsgIzY1RDMNCivml5QgPiBqacOgbjsgIzY1RDQNCivml5YgPiB5xK07ICM2NUQ2DQor5peXID4gccOtOyAjNjVENw0KK+aXmCA+IHpow6w7ICM2NUQ4DQor5peZID4gZsSBbjsgIzY1RDkNCivml5ogPiBwacSBbzsgIzY1REENCivml5sgPiBmxIFuOyAjNjVEQg0KK+aXnCA+IHpoxIFuOyAjNjVEQw0KK+aXnSA+IGd1w6BpOyAjNjVERA0KK+aXniA+IHPDuWk7ICM2NURFDQor5pefID4gecO6OyAjNjVERg0KK+aXoCA+IHfDujsgIzY1RTANCivml6EgPiBqw6w7ICM2NUUxDQor5peiID4gasOsOyAjNjVFMg0KK+aXoyA+IGrDrDsgIzY1RTMNCivml6QgPiBow7lvOyAjNjVFNA0KK+aXpSA+IHLDrDsgIzY1RTUNCivml6YgPiBkw6BuOyAjNjVFNg0KK+aXpyA+IGrDrHU7ICM2NUU3DQor5peoID4gemjErTsgIzY1RTgNCivml6kgPiB6xINvOyAjNjVFOQ0KK+aXqiA+IHhpw6k7ICM2NUVBDQor5perID4gdGnEgW87ICM2NUVCDQor5pesID4geMO6bjsgIzY1RUMNCivml60gPiB4w7k7ICM2NUVEDQor5peuID4geMO5OyAjNjVFRQ0KK+aXryA+IHjDuTsgIzY1RUYNCivml7AgPiBnw6BuOyAjNjVGMA0KK+aXsSA+IGjDoG47ICM2NUYxDQor5peyID4gdMOhaTsgIzY1RjINCivml7MgPiBkw6w7ICM2NUYzDQor5pe0ID4geMWrOyAjNjVGNA0KK+aXtSA+IGNoxINuOyAjNjVGNQ0KK+aXtiA+IHNow607ICM2NUY2DQor5pe3ID4ga3XDoG5nOyAjNjVGNw0KK+aXuCA+IHnDoW5nOyAjNjVGOA0KK+aXuSA+IHNow607ICM2NUY5DQor5pe6ID4gd8Ogbmc7ICM2NUZBDQor5pe7ID4gbcOtbjsgIzY1RkINCivml7wgPiBtw61uOyAjNjVGQw0KK+aXvSA+IHTFq247ICM2NUZEDQor5pe+ID4gY2jFq247ICM2NUZFDQor5pe/ID4gd8WtOyAjNjVGRg0KK+aYgCA+IHnDum47ICM2NjAwDQor5piBID4gYsOoaTsgIzY2MDENCivmmIIgPiDDoW5nOyAjNjYwMg0KK+aYgyA+IHrDqDsgIzY2MDMNCivmmIQgPiBixINuOyAjNjYwNA0KK+aYhSA+IGppw6k7ICM2NjA1DQor5piGID4ga8WrbjsgIzY2MDYNCivmmIcgPiBzaMSTbmc7ICM2NjA3DQor5piIID4gaMO5OyAjNjYwOA0KK+aYiSA+IGbEg25nOyAjNjYwOQ0KK+aYiiA+IGjDoG87ICM2NjBBDQor5piLID4gZ8O5aTsgIzY2MEINCivmmIwgPiBjaMSBbmc7ICM2NjBDDQor5piNID4geHXEgW47ICM2NjBEDQor5piOID4gbcOtbmc7ICM2NjBFDQor5piPID4gaMWrbjsgIzY2MEYNCivmmJAgPiBmxJNuOyAjNjYxMA0KK+aYkSA+IHHErW47ICM2NjExDQor5piSID4gaMWrOyAjNjYxMg0KK+aYkyA+IHnDrDsgIzY2MTMNCivmmJQgPiB4w607ICM2NjE0DQor5piVID4geMSrbjsgIzY2MTUNCivmmJYgPiB5w6FuOyAjNjYxNg0KK+aYlyA+IHrDqDsgIzY2MTcNCivmmJggPiBmxINuZzsgIzY2MTgNCivmmJkgPiB0w6FuOyAjNjYxOQ0KK+aYmiA+IHNow6huOyAjNjYxQQ0KK+aYmyA+IGrDuTsgIzY2MUINCivmmJwgPiB5w6FuZzsgIzY2MUMNCivmmJ0gPiB6xINuOyAjNjYxRA0KK+aYniA+IGLErW5nOyAjNjYxRQ0KK+aYnyA+IHjEq25nOyAjNjYxRg0KK+aYoCA+IHnDrG5nOyAjNjYyMA0KK+aYoSA+IHh1w6BuOyAjNjYyMQ0KK+aYoiA+IHDElWk7ICM2NjIyDQor5pijID4gemjElW47ICM2NjIzDQor5pikID4gbMSrbmc7ICM2NjI0DQor5pilID4gY2jFq247ICM2NjI1DQor5pimID4gaMOgbzsgIzY2MjYNCivmmKcgPiBtw6hpOyAjNjYyNw0KK+aYqCA+IHrDum87ICM2NjI4DQor5pipID4gbcOyOyAjNjYyOQ0KK+aYqiA+IGJpw6BuOyAjNjYyQQ0KK+aYqyA+IHjFrTsgIzY2MkINCivmmKwgPiBoxatuOyAjNjYyQw0KK+aYrSA+IHpoxIFvOyAjNjYyRA0KK+aYriA+IHrDsm5nOyAjNjYyRQ0KK+aYryA+IHNow6w7ICM2NjJGDQor5piwID4gc2jDrDsgIzY2MzANCivmmLEgPiB5w7k7ICM2NjMxDQor5piyID4gZsOoaTsgIzY2MzINCivmmLMgPiBkacOpOyAjNjYzMw0KK+aYtCA+IG3Eg287ICM2NjM0DQor5pi1ID4gbsOsOyAjNjYzNQ0KK+aYtiA+IGNoxINuZzsgIzY2MzYNCivmmLcgPiB3xJNuOyAjNjYzNw0KK+aYuCA+IGTFjW5nOyAjNjYzOA0KK+aYuSA+IMSDaTsgIzY2MzkNCivmmLogPiBixK1uZzsgIzY2M0ENCivmmLsgPiDDoW5nOyAjNjYzQg0KK+aYvCA+IHpow7J1OyAjNjYzQw0KK+aYvSA+IGzDs25nOyAjNjYzRA0KK+aYviA+IHhpxINuOyAjNjYzRQ0KK+aYvyA+IGt1w6BuZzsgIzY2M0YNCivmmYAgPiB0acSDbzsgIzY2NDANCivmmYEgPiBjaMOhbzsgIzY2NDENCivmmYIgPiBzaMOtOyAjNjY0Mg0KK+aZgyA+IGh1xINuZzsgIzY2NDMNCivmmYQgPiBodcSDbmc7ICM2NjQ0DQor5pmFID4geHXEgW47ICM2NjQ1DQor5pmGID4ga8O6aTsgIzY2NDYNCivmmYcgPiB4xas7ICM2NjQ3DQor5pmIID4gamnEg287ICM2NjQ4DQor5pmJID4gasOsbjsgIzY2NDkNCivmmYogPiB6aMStOyAjNjY0QQ0KK+aZiyA+IGrDrG47ICM2NjRCDQor5pmMID4gc2jEg25nOyAjNjY0Qw0KK+aZjSA+IHTDs25nOyAjNjY0RA0KK+aZjiA+IGjFj25nOyAjNjY0RQ0KK+aZjyA+IHnDoG47ICM2NjRGDQor5pmQID4gZ8SBaTsgIzY2NTANCivmmZEgPiB4acSDbmc7ICM2NjUxDQor5pmSID4gc2jDoGk7ICM2NjUyDQor5pmTID4geGnEg287ICM2NjUzDQor5pmUID4gecSTOyAjNjY1NA0KK+aZlSA+IHnFq247ICM2NjU1DQor5pmWID4gaMWraTsgIzY2NTYNCivmmZcgPiBow6FuOyAjNjY1Nw0KK+aZmCA+IGjDoG47ICM2NjU4DQor5pmZID4gasO5bjsgIzY2NTkNCivmmZogPiB3xINuOyAjNjY1QQ0KK+aZmyA+IHhpw6BuOyAjNjY1Qg0KK+aZnCA+IGvFq247ICM2NjVDDQor5pmdID4gemjDsnU7ICM2NjVEDQor5pmeID4geMSrOyAjNjY1RQ0KK+aZnyA+IGNow6luZzsgIzY2NUYNCivmmaAgPiBzaMOpbmc7ICM2NjYwDQor5pmhID4gYsWrOyAjNjY2MQ0KK+aZoiA+IHpoxJM7ICM2NjYyDQor5pmjID4gemjEkzsgIzY2NjMNCivmmaQgPiB3w7k7ICM2NjY0DQor5pmlID4gaMOgbjsgIzY2NjUNCivmmaYgPiBow7lpOyAjNjY2Ng0KK+aZpyA+IGjDoG87ICM2NjY3DQor5pmoID4gY2jDqW47ICM2NjY4DQor5pmpID4gd8SDbjsgIzY2NjkNCivmmaogPiB0acSDbjsgIzY2NkENCivmmasgPiB6aMO6bzsgIzY2NkINCivmmawgPiB6w7lpOyAjNjY2Qw0KK+aZrSA+IHpoxY91OyAjNjY2RA0KK+aZriA+IHDFrTsgIzY2NkUNCivmma8gPiBqxK1uZzsgIzY2NkYNCivmmbAgPiB4xKs7ICM2NjcwDQor5pmxID4gc2jEg247ICM2NjcxDQor5pmyID4gecStOyAjNjY3Mg0KK+aZsyA+IHjDrDsgIzY2NzMNCivmmbQgPiBxw61uZzsgIzY2NzQNCivmmbUgPiBxxK07ICM2Njc1DQor5pm2ID4gasSrbmc7ICM2Njc2DQor5pm3ID4gZ8WtaTsgIzY2NzcNCivmmbggPiB6aMSVbjsgIzY2NzgNCivmmbkgPiB5w6w7ICM2Njc5DQor5pm6ID4gemjDrDsgIzY2N0ENCivmmbsgPiDEg247ICM2NjdCDQor5pm8ID4gd8SDbjsgIzY2N0MNCivmmb0gPiBsw61uOyAjNjY3RA0KK+aZviA+IGxpw6BuZzsgIzY2N0UNCivmmb8gPiBjaMSBbmc7ICM2NjdGDQor5pqAID4gd8SDbmc7ICM2NjgwDQor5pqBID4geGnEg287ICM2NjgxDQor5pqCID4gesOgbjsgIzY2ODINCivmmoQgPiB4dcSBbjsgIzY2ODQNCivmmoUgPiB4dcSDbjsgIzY2ODUNCivmmoYgPiB5w607ICM2Njg2DQor5pqHID4geGnDoTsgIzY2ODcNCivmmoggPiB5xatuOyAjNjY4OA0KK+aaiSA+IGjFq2k7ICM2Njg5DQor5pqKID4gZsWtOyAjNjY4QQ0KK+aaiyA+IG3ErW47ICM2NjhCDQor5pqMID4ga8O6aTsgIzY2OEMNCivmmo0gPiBow6g7ICM2NjhEDQor5pqOID4gecOsbmc7ICM2NjhFDQor5pqPID4gZMWtOyAjNjY4Rg0KK+aakCA+IHfElWk7ICM2NjkwDQor5pqRID4gc2jFrTsgIzY2OTENCivmmpIgPiBxw61uZzsgIzY2OTINCivmmpMgPiBtw6BvOyAjNjY5Mw0KK+aalCA+IG7DoW47ICM2Njk0DQor5pqVID4gamnEg247ICM2Njk1DQor5pqWID4gbnXEg247ICM2Njk2DQor5pqXID4gw6BuOyAjNjY5Nw0KK+aamCA+IHnDoW5nOyAjNjY5OA0KK+aamSA+IGNoxatuOyAjNjY5OQ0KK+aamiA+IHnDoW87ICM2NjlBDQor5pqbID4gc8WtbzsgIzY2OUINCivmmpwgPiBqw6xuOyAjNjY5Qw0KK+aanSA+IG3DrW5nOyAjNjY5RA0KK+aaniA+IGppxINvOyAjNjY5RQ0KK+aanyA+IGvEg2k7ICM2NjlGDQor5pqgID4gZ8SDbzsgIzY2QTANCivmmqEgPiB3xJVuZzsgIzY2QTENCivmmqIgPiBjaMOgbmc7ICM2NkEyDQor5pqjID4gccOsOyAjNjZBMw0KK+aapCA+IGjDoG87ICM2NkE0DQor5pqlID4gecOgbjsgIzY2QTUNCivmmqYgPiBsw6w7ICM2NkE2DQor5pqnID4gw6BpOyAjNjZBNw0KK+aaqCA+IGrDrDsgIzY2QTgNCivmmqkgPiBnw7lpOyAjNjZBOQ0KK+aaqiA+IG3ElW47ICM2NkFBDQor5pqrID4gesOgbjsgIzY2QUINCivmmqwgPiB4acOoOyAjNjZBQw0KK+aarSA+IGjDoG87ICM2NkFEDQor5pquID4gbcO5OyAjNjZBRQ0KK+aaryA+IG3DsjsgIzY2QUYNCivmmrAgPiBjxY1uZzsgIzY2QjANCivmmrEgPiBuw6w7ICM2NkIxDQor5pqyID4gemjEgW5nOyAjNjZCMg0KK+aasyA+IGjDuWk7ICM2NkIzDQor5pq0ID4gYsOgbzsgIzY2QjQNCivmmrUgPiBow6BuOyAjNjZCNQ0KK+aatiA+IHh1w6FuOyAjNjZCNg0KK+aatyA+IGNodcOhbjsgIzY2QjcNCivmmrggPiBsacOhbzsgIzY2QjgNCivmmrkgPiB4acSBbjsgIzY2QjkNCivmmrogPiBkw6BuOyAjNjZCQQ0KK+aauyA+IGrErW5nOyAjNjZCQg0KK+aavCA+IHBpxJM7ICM2NkJDDQor5pq9ID4gbMOtbjsgIzY2QkQNCivmmr4gPiB0xatuOyAjNjZCRQ0KK+aavyA+IHjErTsgIzY2QkYNCivmm4AgPiB5w6w7ICM2NkMwDQor5puBID4gasOsOyAjNjZDMQ0KK+abgiA+IGh1w6BuZzsgIzY2QzINCivmm4MgPiB0w6BpOyAjNjZDMw0KK+abhCA+IHnDqDsgIzY2QzQNCivmm4UgPiB5w6g7ICM2NkM1DQor5puGID4gbMOsOyAjNjZDNg0KK+abhyA+IHTDoW47ICM2NkM3DQor5puIID4gdMOzbmc7ICM2NkM4DQor5puJID4geGnEg287ICM2NkM5DQor5puKID4gZsOoaTsgIzY2Q0ENCivmm4sgPiBxxK1uOyAjNjZDQg0KK+abjCA+IHpow6BvOyAjNjZDQw0KK+abjSA+IGjDoG87ICM2NkNEDQor5puOID4gecOsOyAjNjZDRQ0KK+abjyA+IHhpw6BuZzsgIzY2Q0YNCivmm5AgPiB4xKtuZzsgIzY2RDANCivmm5EgPiBzxJNuOyAjNjZEMQ0KK+abkiA+IGppxINvOyAjNjZEMg0KK+abkyA+IGLDoG87ICM2NkQzDQor5puUID4gasOsbmc7ICM2NkQ0DQor5puVID4geWnDoG47ICM2NkQ1DQor5puWID4gw6BpOyAjNjZENg0KK+ablyA+IHnDqDsgIzY2RDcNCivmm5ggPiByw7o7ICM2NkQ4DQor5puZID4gc2jDuTsgIzY2RDkNCivmm5ogPiBtw6luZzsgIzY2REENCivmm5sgPiB4xatuOyAjNjZEQg0KK+abnCA+IHnDoG87ICM2NkRDDQor5pudID4gcMO5OyAjNjZERA0KK+abniA+IGzDrDsgIzY2REUNCivmm58gPiBjaMOpbjsgIzY2REYNCivmm6AgPiBrdcOgbmc7ICM2NkUwDQor5puhID4gZGnDqTsgIzY2RTENCivmm6MgPiB5w6BuOyAjNjZFMw0KK+abpCA+IGjDuW87ICM2NkU0DQor5pulID4gbMO6OyAjNjZFNQ0KK+abpiA+IHjEqzsgIzY2RTYNCivmm6cgPiByw7NuZzsgIzY2RTcNCivmm6ggPiBsw7NuZzsgIzY2RTgNCivmm6kgPiBuxINuZzsgIzY2RTkNCivmm6ogPiBsxa1vOyAjNjZFQQ0KK+abqyA+IGx1w6FuOyAjNjZFQg0KK+abrCA+IHNow6BpOyAjNjZFQw0KK+abrSA+IHTEg25nOyAjNjZFRA0KK+abriA+IHnEg247ICM2NkVFDQor5puvID4gY2jDujsgIzY2RUYNCivmm7AgPiB5dcSTOyAjNjZGMA0KK+absSA+IHl1xJM7ICM2NkYxDQor5puyID4gccWtOyAjNjZGMg0KK+absyA+IHnDrDsgIzY2RjMNCivmm7QgPiBnw6huZzsgIzY2RjQNCivmm7UgPiB5w6g7ICM2NkY1DQor5pu2ID4gaMWrOyAjNjZGNg0KK+abtyA+IGjDqTsgIzY2RjcNCivmm7ggPiBzaMWrOyAjNjZGOA0KK+abuSA+IGPDoW87ICM2NkY5DQor5pu6ID4gY8OhbzsgIzY2RkENCivmm7wgPiBtw6BuOyAjNjZGQw0KK+abvSA+IGPEk25nOyAjNjZGRA0KK+abviA+IGPDqW5nOyAjNjZGRQ0KK+abvyA+IHTDrDsgIzY2RkYNCivmnIAgPiB6w7lpOyAjNjcwMA0KK+acgSA+IGPEg247ICM2NzAxDQor5pyCID4geMO5OyAjNjcwMg0KK+acgyA+IGjDuWk7ICM2NzAzDQor5pyEID4gecOsbjsgIzY3MDQNCivmnIUgPiBxacOoOyAjNjcwNQ0KK+achiA+IGbEk247ICM2NzA2DQor5pyHID4gcMOtOyAjNjcwNw0KK+aciCA+IHl1w6g7ICM2NzA4DQor5pyJID4gecWPdTsgIzY3MDkNCivmnIogPiBydcSDbjsgIzY3MEENCivmnIsgPiBww6luZzsgIzY3MEINCivmnIwgPiBixIFuOyAjNjcwQw0KK+acjSA+IGbDujsgIzY3MEQNCivmnI4gPiBsw61uZzsgIzY3MEUNCivmnI8gPiBmxJVpOyAjNjcwRg0KK+ackCA+IHHDujsgIzY3MTANCivmnJIgPiBux5w7ICM2NzEyDQor5pyTID4gdGnDoG87ICM2NzEzDQor5pyUID4gc2jDuW87ICM2NzE0DQor5pyVID4gemjDqG47ICM2NzE1DQor5pyWID4gbMSDbmc7ICM2NzE2DQor5pyXID4gbMSDbmc7ICM2NzE3DQor5pyYID4ganXEgW47ICM2NzE4DQor5pyZID4gbcOtbmc7ICM2NzE5DQor5pyaID4gaHXEgW5nOyAjNjcxQQ0KK+acmyA+IHfDoG5nOyAjNjcxQg0KK+acnCA+IHTFq247ICM2NzFDDQor5pydID4gemjEgW87ICM2NzFEDQor5pyeID4gasSrOyAjNjcxRQ0KK+acnyA+IHHDrTsgIzY3MUYNCivmnKAgPiB5xKtuZzsgIzY3MjANCivmnKEgPiB6xY1uZzsgIzY3MjENCivmnKIgPiB3w6BuZzsgIzY3MjINCivmnKMgPiB0w7NuZzsgIzY3MjMNCivmnKQgPiBsxINuZzsgIzY3MjQNCivmnKYgPiBtw6luZzsgIzY3MjYNCivmnKcgPiBsw7NuZzsgIzY3MjcNCivmnKggPiBtw7k7ICM2NzI4DQor5pypID4gZMSVbmc7ICM2NzI5DQor5pyqID4gd8OoaTsgIzY3MkENCivmnKsgPiBtw7I7ICM2NzJCDQor5pysID4gYsSVbjsgIzY3MkMNCivmnK0gPiB6aMOhOyAjNjcyRA0KK+acriA+IHpow7o7ICM2NzJFDQor5pyvID4gemjDujsgIzY3MkYNCivmnLEgPiB6aMWrOyAjNjczMQ0KK+acsiA+IHLDqW47ICM2NzMyDQor5pyzID4gYsSBOyAjNjczMw0KK+actCA+IHDDsjsgIzY3MzQNCivmnLUgPiBkxa1vOyAjNjczNQ0KK+actiA+IGTFrW87ICM2NzM2DQor5py3ID4gZMSBbzsgIzY3MzcNCivmnLggPiBsw6w7ICM2NzM4DQor5py5ID4gccOtdTsgIzY3MzkNCivmnLogPiBqxKs7ICM2NzNBDQor5py7ID4gasSrdTsgIzY3M0INCivmnLwgPiBixK07ICM2NzNDDQor5py9ID4geMStdTsgIzY3M0QNCivmnL4gPiB0w61uZzsgIzY3M0UNCivmnL8gPiBjw6w7ICM2NzNGDQor5p2AID4gc2jEgTsgIzY3NDANCivmnYIgPiB6w6E7ICM2NzQyDQor5p2DID4gcXXDoW47ICM2NzQzDQor5p2EID4gcWnEgW47ICM2NzQ0DQor5p2FID4gecO6OyAjNjc0NQ0KK+adhiA+IGfEgW47ICM2NzQ2DQor5p2HID4gd8WrOyAjNjc0Nw0KK+adiCA+IGNoxIE7ICM2NzQ4DQor5p2JID4gc2jEgW47ICM2NzQ5DQor5p2KID4geMO6bjsgIzY3NEENCivmnYsgPiBmxIFuOyAjNjc0Qg0KK+adjCA+IHfDuTsgIzY3NEMNCivmnY0gPiB6xK07ICM2NzREDQor5p2OID4gbMStOyAjNjc0RQ0KK+adjyA+IHjDrG5nOyAjNjc0Rg0KK+adkCA+IGPDoWk7ICM2NzUwDQor5p2RID4gY8WrbjsgIzY3NTENCivmnZIgPiByw6huOyAjNjc1Mg0KK+adkyA+IHNow6FvOyAjNjc1Mw0KK+adlCA+IHTFq287ICM2NzU0DQor5p2VID4gZMOsOyAjNjc1NQ0KK+adliA+IHpow6BuZzsgIzY3NTYNCivmnZcgPiBtw6FuZzsgIzY3NTcNCivmnZggPiBjaMOsOyAjNjc1OA0KK+admSA+IHnDrDsgIzY3NTkNCivmnZogPiBnxa07ICM2NzVBDQor5p2bID4gZ8WNbmc7ICM2NzVCDQor5p2cID4gZMO5OyAjNjc1Qw0KK+adnSA+IHnDrTsgIzY3NUQNCivmnZ4gPiBxxK07ICM2NzVFDQor5p2fID4gc2jDuTsgIzY3NUYNCivmnaAgPiBnxIFuZzsgIzY3NjANCivmnaEgPiB0acOhbzsgIzY3NjENCivmnaUgPiBsw6FpOyAjNjc2NQ0KK+adpyA+IG3DoW5nOyAjNjc2Nw0KK+adqCA+IHnDoW5nOyAjNjc2OA0KK+adqSA+IG3DoDsgIzY3NjkNCivmnaogPiBtacSDbzsgIzY3NkENCivmnasgPiBzw6w7ICM2NzZCDQor5p2sID4geXXDoW47ICM2NzZDDQor5p2tID4gaMOhbmc7ICM2NzZEDQor5p2uID4gZsOoaTsgIzY3NkUNCivmna8gPiBixJNpOyAjNjc2Rg0KK+adsCA+IGppw6k7ICM2NzcwDQor5p2xID4gZMWNbmc7ICM2NzcxDQor5p2yID4gZ8SDbzsgIzY3NzINCivmnbMgPiB5xINvOyAjNjc3Mw0KK+adtCA+IHhpxIFuOyAjNjc3NA0KK+adtSA+IGNoxa07ICM2Nzc1DQor5p22ID4gccWrbjsgIzY3NzYNCivmnbcgPiBww6E7ICM2Nzc3DQor5p24ID4gc2jFqzsgIzY3NzgNCivmnbkgPiBodcOgOyAjNjc3OQ0KK+aduiA+IHjEq247ICM2NzdBDQor5p27ID4gY2jFj3U7ICM2NzdCDQor5p28ID4gemjDuTsgIzY3N0MNCivmnb0gPiBjaMWPdTsgIzY3N0QNCivmnb4gPiBzxY1uZzsgIzY3N0UNCivmnb8gPiBixINuOyAjNjc3Rg0KK+aegCA+IHPFjW5nOyAjNjc4MA0KK+aegSA+IGrDrTsgIzY3ODENCivmnoIgPiB5dcOoOyAjNjc4Mg0KK+aegyA+IGrDrG47ICM2NzgzDQor5p6EID4gZ8WNdTsgIzY3ODQNCivmnoUgPiBqxKs7ICM2Nzg1DQor5p6GID4gbcOhbzsgIzY3ODYNCivmnocgPiBww607ICM2Nzg3DQor5p6IID4gYsOsOyAjNjc4OA0KK+aeiSA+IHfEg25nOyAjNjc4OQ0KK+aeiiA+IMOgbmc7ICM2NzhBDQor5p6LID4gZsSBbmc7ICM2NzhCDQor5p6MID4gZsOpbjsgIzY3OEMNCivmno0gPiB5w6w7ICM2NzhEDQor5p6OID4gZsO6OyAjNjc4RQ0KK+aejyA+IG7DoW47ICM2NzhGDQor5p6QID4geMSrOyAjNjc5MA0KK+aekSA+IGjDuTsgIzY3OTENCivmnpIgPiB5w6E7ICM2NzkyDQor5p6TID4gZMWPdTsgIzY3OTMNCivmnpQgPiB4w7puOyAjNjc5NA0KK+aelSA+IHpoxJVuOyAjNjc5NQ0KK+aeliA+IHnEgW87ICM2Nzk2DQor5p6XID4gbMOtbjsgIzY3OTcNCivmnpggPiByw7lpOyAjNjc5OA0KK+aemSA+IMOpOyAjNjc5OQ0KK+aemiA+IG3DqWk7ICM2NzlBDQor5p6bID4gemjDoG87ICM2NzlCDQor5p6cID4gZ8WtbzsgIzY3OUMNCivmnp0gPiB6aMSrOyAjNjc5RA0KK+aeniA+IGPFjW5nOyAjNjc5RQ0KK+aenyA+IHnDuW47ICM2NzlGDQor5p6hID4gZMWPdTsgIzY3QTENCivmnqIgPiBzaMWrOyAjNjdBMg0KK+aeoyA+IHrEg287ICM2N0EzDQor5p6lID4gbMOsOyAjNjdBNQ0KK+aepyA+IGppw6BuOyAjNjdBNw0KK+aeqCA+IGNow6luZzsgIzY3QTgNCivmnqogPiBxacSBbmc7ICM2N0FBDQor5p6rID4gZsSTbmc7ICM2N0FCDQor5p6sID4gbsOhbjsgIzY3QUMNCivmnq0gPiB4acSBbzsgIzY3QUQNCivmnq4gPiB4acSBbjsgIzY3QUUNCivmnq8gPiBrxas7ICM2N0FGDQor5p6wID4gcMOtbmc7ICM2N0IwDQor5p6xID4gecOtOyAjNjdCMQ0KK+aesiA+IHjErTsgIzY3QjINCivmnrMgPiB6aMSrOyAjNjdCMw0KK+aetCA+IGd1xINpOyAjNjdCNA0KK+aetSA+IHhpxIFvOyAjNjdCNQ0KK+aetiA+IGppw6A7ICM2N0I2DQor5p63ID4gamnEgTsgIzY3QjcNCivmnrggPiBnxY91OyAjNjdCOA0KK+aeuSA+IGbFqzsgIzY3QjkNCivmnrogPiBtw7I7ICM2N0JBDQor5p67ID4gecOsOyAjNjdCQg0KK+aevCA+IHnDqDsgIzY3QkMNCivmnr0gPiB5w6g7ICM2N0JEDQor5p6+ID4gc2jDrDsgIzY3QkUNCivmnr8gPiBuacOoOyAjNjdCRg0KK+afgCA+IGLErTsgIzY3QzANCivmn4EgPiBkw7lvOyAjNjdDMQ0KK+afgiA+IHnDrTsgIzY3QzINCivmn4MgPiBsw61uZzsgIzY3QzMNCivmn4QgPiBixK1uZzsgIzY3QzQNCivmn4UgPiBuxK07ICM2N0M1DQor5p+GID4gbMSBOyAjNjdDNg0KK+afhyA+IGjDqTsgIzY3QzcNCivmn4ggPiBww6FuOyAjNjdDOA0KK+afiSA+IGbDoW47ICM2N0M5DQor5p+KID4gemjFjW5nOyAjNjdDQQ0KK+afiyA+IGTDoGk7ICM2N0NCDQor5p+MID4gY8OtOyAjNjdDQw0KK+afjSA+IHnEgW5nOyAjNjdDRA0KK+afjiA+IGbFqzsgIzY3Q0UNCivmn48gPiBiw7M7ICM2N0NGDQor5p+QID4gbcWPdTsgIzY3RDANCivmn5EgPiBnxIFuOyAjNjdEMQ0KK+afkiA+IHHEqzsgIzY3RDINCivmn5MgPiByxINuOyAjNjdEMw0KK+aflCA+IHLDs3U7ICM2N0Q0DQor5p+VID4gbcOgbzsgIzY3RDUNCivmn5YgPiB6aMSBbzsgIzY3RDYNCivmn5cgPiBzxY1uZzsgIzY3RDcNCivmn5ggPiB6aMOoOyAjNjdEOA0KK+afmSA+IHhpw6E7ICM2N0Q5DQor5p+aID4gecOydTsgIzY3REENCivmn5sgPiBzaMSTbjsgIzY3REINCivmn5wgPiBqxa07ICM2N0RDDQor5p+dID4gdMO5bzsgIzY3REQNCivmn54gPiB6w7lvOyAjNjdERQ0KK+afnyA+IG7DoW47ICM2N0RGDQor5p+gID4gbsOtbmc7ICM2N0UwDQor5p+hID4gecWPbmc7ICM2N0UxDQor5p+iID4gZMStOyAjNjdFMg0KK+afoyA+IHpow607ICM2N0UzDQor5p+kID4gemjEgTsgIzY3RTQNCivmn6UgPiBjaMOhOyAjNjdFNQ0KK+afpiA+IGTDoG47ICM2N0U2DQor5p+nID4gZ8WrOyAjNjdFNw0KK+afqCA+IHB1OyAjNjdFOA0KK+afqSA+IGrDrHU7ICM2N0U5DQor5p+qID4gxIFvOyAjNjdFQQ0KK+afqyA+IGbDujsgIzY3RUINCivmn6wgPiBqacSDbjsgIzY3RUMNCivmn60gPiBixY07ICM2N0VEDQor5p+uID4gZMO5bzsgIzY3RUUNCivmn68gPiBrxJM7ICM2N0VGDQor5p+wID4gbsOgaTsgIzY3RjANCivmn7EgPiB6aMO5OyAjNjdGMQ0KK+afsiA+IGLDrDsgIzY3RjINCivmn7MgPiBsxK11OyAjNjdGMw0KK+aftCA+IGNow6FpOyAjNjdGNA0KK+aftSA+IHpow6A7ICM2N0Y1DQor5p+2ID4gc8OsOyAjNjdGNg0KK+aftyA+IHpow7k7ICM2N0Y3DQor5p+4ID4gcMSTaTsgIzY3RjgNCivmn7kgPiBzaMOsOyAjNjdGOQ0KK+afuiA+IGd1xINpOyAjNjdGQQ0KK+afuyA+IGNow6E7ICM2N0ZCDQor5p+8ID4gecSDbzsgIzY3RkMNCivmn70gPiBqdcOpOyAjNjdGRA0KK+afviA+IGrDrHU7ICM2N0ZFDQor5p+/ID4gc2jDrDsgIzY3RkYNCivmoIAgPiB6aMSrOyAjNjgwMA0KK+aggSA+IGzErXU7ICM2ODAxDQor5qCCID4gbcOpaTsgIzY4MDINCivmoIQgPiByw7NuZzsgIzY4MDQNCivmoIUgPiB6aMOgOyAjNjgwNQ0KK+aghyA+IGJpxIFvOyAjNjgwNw0KK+agiCA+IHpow6BuOyAjNjgwOA0KK+agiSA+IGppw6k7ICM2ODA5DQor5qCKID4gbMOzbmc7ICM2ODBBDQor5qCLID4gZMOybmc7ICM2ODBCDQor5qCMID4gbMO6OyAjNjgwQw0KK+agjiA+IGzDrDsgIzY4MEUNCivmoI8gPiBsw6FuOyAjNjgwRg0KK+agkCA+IHnFj25nOyAjNjgxMA0KK+agkSA+IHNow7k7ICM2ODExDQor5qCSID4geMO6bjsgIzY4MTINCivmoJMgPiBzaHXEgW47ICM2ODEzDQor5qCUID4gccOsOyAjNjgxNA0KK+aglSA+IHpoxJNuOyAjNjgxNQ0KK+agliA+IHHEqzsgIzY4MTYNCivmoJcgPiBsw6w7ICM2ODE3DQor5qCYID4gecStOyAjNjgxOA0KK+agmSA+IHhpw6FuZzsgIzY4MTkNCivmoJogPiB6aMOobjsgIzY4MUENCivmoJsgPiBsw6w7ICM2ODFCDQor5qCcID4gc8O5OyAjNjgxQw0KK+agnSA+IGd1xIE7ICM2ODFEDQor5qCeID4ga8SBbjsgIzY4MUUNCivmoJ8gPiBixKtuZzsgIzY4MUYNCivmoKAgPiByxJVuOyAjNjgyMA0KK+agoSA+IHhpw6BvOyAjNjgyMQ0KK+agoiA+IGLDszsgIzY4MjINCivmoKMgPiByxJVuOyAjNjgyMw0KK+agpCA+IGLDrG5nOyAjNjgyNA0KK+agpSA+IHrEqzsgIzY4MjUNCivmoKYgPiBjaMOzdTsgIzY4MjYNCivmoKcgPiB5w6w7ICM2ODI3DQor5qCoID4gamnDqTsgIzY4MjgNCivmoKkgPiB4xa07ICM2ODI5DQor5qCqID4gemjFqzsgIzY4MkENCivmoKsgPiBqacOgbjsgIzY4MkINCivmoKwgPiB6w7lpOyAjNjgyQw0KK+agrSA+IMOpcjsgIzY4MkQNCivmoK4gPiDElXI7ICM2ODJFDQor5qCvID4gecWPdTsgIzY4MkYNCivmoLAgPiBmw6E7ICM2ODMwDQor5qCxID4gZ8WPbmc7ICM2ODMxDQor5qCyID4ga8SDbzsgIzY4MzINCivmoLMgPiBsxINvOyAjNjgzMw0KK+agtCA+IHpoxIFuOyAjNjgzNA0KK+agtSA+IGzDrDsgIzY4MzUNCivmoLYgPiB5aW47ICM2ODM2DQor5qC3ID4gecOhbmc7ICM2ODM3DQor5qC4ID4gaMOpOyAjNjgzOA0KK+aguSA+IGfEk247ICM2ODM5DQor5qC6ID4gemjErTsgIzY4M0ENCivmoLsgPiBjaMOsOyAjNjgzQg0KK+agvCA+IGfDqTsgIzY4M0MNCivmoL0gPiB6xIFpOyAjNjgzRA0KK+agviA+IGx1w6FuOyAjNjgzRQ0KK+agvyA+IGbDujsgIzY4M0YNCivmoYAgPiBqacOpOyAjNjg0MA0KK+ahgSA+IGjDoW5nOyAjNjg0MQ0KK+ahgiA+IGfDuWk7ICM2ODQyDQor5qGDID4gdMOhbzsgIzY4NDMNCivmoYQgPiBndcOgbmc7ICM2ODQ0DQor5qGFID4gd8OpaTsgIzY4NDUNCivmoYYgPiBrdcOgbmc7ICM2ODQ2DQor5qGHID4gcsO6OyAjNjg0Nw0KK+ahiCA+IMOgbjsgIzY4NDgNCivmoYkgPiDDoG47ICM2ODQ5DQor5qGKID4ganXDoG47ICM2ODRBDQor5qGLID4gecOtOyAjNjg0Qg0KK+ahjCA+IHpoxatvOyAjNjg0Qw0KK+ahjSA+IGvFqzsgIzY4NEQNCivmoY4gPiB6aMOtOyAjNjg0RQ0KK+ahjyA+IHHDrW9uZzsgIzY4NEYNCivmoZAgPiB0w7NuZzsgIzY4NTANCivmoZEgPiBzxIFuZzsgIzY4NTENCivmoZIgPiBzxIFuZzsgIzY4NTINCivmoZMgPiBodcOhbjsgIzY4NTMNCivmoZQgPiBqacOpOyAjNjg1NA0KK+ahlSA+IGrDrHU7ICM2ODU1DQor5qGWID4geHXDqDsgIzY4NTYNCivmoZcgPiBkw7lvOyAjNjg1Nw0KK+ahmCA+IHpow7lpOyAjNjg1OA0KK+ahmSA+IHnDujsgIzY4NTkNCivmoZogPiB6xINuOyAjNjg1QQ0KK+ahnCA+IHnEq25nOyAjNjg1Qw0KK+ahnyA+IHpow6BuOyAjNjg1Rg0KK+ahoCA+IHnDoTsgIzY4NjANCivmoaEgPiBuw6FvOyAjNjg2MQ0KK+ahoiA+IHpoxJNuOyAjNjg2Mg0KK+ahoyA+IGTEg25nOyAjNjg2Mw0KK+ahpCA+IHHEqzsgIzY4NjQNCivmoaUgPiBxacOhbzsgIzY4NjUNCivmoaYgPiBodcOgOyAjNjg2Ng0KK+ahpyA+IGt1w6BpOyAjNjg2Nw0KK+ahqCA+IGppxINuZzsgIzY4NjgNCivmoakgPiB6aHXEgW5nOyAjNjg2OQ0KK+ahqiA+IHjDum47ICM2ODZBDQor5qGrID4gc8WrbzsgIzY4NkINCivmoawgPiBzaMSBOyAjNjg2Qw0KK+ahrSA+IHpoxJNuOyAjNjg2RA0KK+ahriA+IGLEk2k7ICM2ODZFDQor5qGvID4gdMSrbmc7ICM2ODZGDQor5qGwID4gZ3XEgTsgIzY4NzANCivmobEgPiBqw6xuZzsgIzY4NzENCivmobIgPiBiw7M7ICM2ODcyDQor5qGzID4gYsOobjsgIzY4NzMNCivmobQgPiBmw7o7ICM2ODc0DQor5qG1ID4gcsWtaTsgIzY4NzUNCivmobYgPiB0xY9uZzsgIzY4NzYNCivmobcgPiBqdcOpOyAjNjg3Nw0KK+ahuCA+IHjEqzsgIzY4NzgNCivmobkgPiBsw6FuZzsgIzY4NzkNCivmobogPiBsxK11OyAjNjg3QQ0KK+ahuyA+IGbEk25nOyAjNjg3Qg0KK+ahvCA+IHHEqzsgIzY4N0MNCivmob0gPiB3xJVuOyAjNjg3RA0KK+ahviA+IGrFq247ICM2ODdFDQor5qG/ID4gZ8SDbjsgIzY4N0YNCivmooAgPiBjw7k7ICM2ODgwDQor5qKBID4gbGnDoW5nOyAjNjg4MQ0KK+aigiA+IHHDrXU7ICM2ODgyDQor5qKDID4gdMStbmc7ICM2ODgzDQor5qKEID4gecWPdTsgIzY4ODQNCivmooUgPiBtw6lpOyAjNjg4NQ0KK+aihiA+IGLEgW5nOyAjNjg4Ng0KK+aihyA+IGzDsm5nOyAjNjg4Nw0KK+aiiCA+IHDEk25nOyAjNjg4OA0KK+aiiSA+IHpodcSBbmc7ICM2ODg5DQor5qKKID4gZMOsOyAjNjg4QQ0KK+aiiyA+IHh1xIFuOyAjNjg4Qg0KK+aijCA+IHTDujsgIzY4OEMNCivmoo0gPiB6w6BvOyAjNjg4RA0KK+aijiA+IMSBbzsgIzY4OEUNCivmoo8gPiBnw7k7ICM2ODhGDQor5qKQID4gYsOsOyAjNjg5MA0KK+aikSA+IGTDrTsgIzY4OTENCivmopIgPiBow6FuOyAjNjg5Mg0KK+aikyA+IHrErTsgIzY4OTMNCivmopQgPiB6aMSrOyAjNjg5NA0KK+ailSA+IHLDqG47ICM2ODk1DQor5qKWID4gYsOoaTsgIzY4OTYNCivmopcgPiBnxJVuZzsgIzY4OTcNCivmopggPiBqacOgbjsgIzY4OTgNCivmopkgPiBodcOgbjsgIzY4OTkNCivmopogPiB3xINuOyAjNjg5QQ0KK+aimyA+IG7Dum87ICM2ODlCDQor5qKcID4gamnDoTsgIzY4OUMNCivmop0gPiB0acOhbzsgIzY4OUQNCivmop4gPiBqw6w7ICM2ODlFDQor5qKfID4geGnEgW87ICM2ODlGDQor5qKgID4gbMeaOyAjNjhBMA0KK+aioSA+IGh1w6FuOyAjNjhBMQ0KK+aioiA+IHNoxIFvOyAjNjhBMg0KK+aioyA+IGPDqW47ICM2OEEzDQor5qKkID4gZsOpbjsgIzY4QTQNCivmoqUgPiBzxY1uZzsgIzY4QTUNCivmoqYgPiBtw6huZzsgIzY4QTYNCivmoqcgPiB3w7o7ICM2OEE3DQor5qKoID4gbMOtOyAjNjhBOA0KK+aiqSA+IGzDrTsgIzY4QTkNCivmoqogPiBkw7J1OyAjNjhBQQ0KK+aiqyA+IGPEk247ICM2OEFCDQor5qKsID4gecStbmc7ICM2OEFDDQor5qKtID4gc8WrbzsgIzY4QUQNCivmoq4gPiBqw7o7ICM2OEFFDQor5qKvID4gdMSrOyAjNjhBRg0KK+aisCA+IGppw6g7ICM2OEIwDQor5qKxID4ga8WtbjsgIzY4QjENCivmorIgPiB6aMO6bzsgIzY4QjINCivmorMgPiBzaMWrOyAjNjhCMw0KK+aitCA+IGNoxIFuOyAjNjhCNA0KK+aitSA+IGbDoG47ICM2OEI1DQor5qK2ID4gd8SVaTsgIzY4QjYNCivmorcgPiBqw6xuZzsgIzY4QjcNCivmorggPiBsw607ICM2OEI4DQor5qK5ID4gYsSrbmc7ICM2OEI5DQor5qK8ID4gdMOhbzsgIzY4QkMNCivmor0gPiB6aMOsOyAjNjhCRA0KK+aiviA+IGzDoWk7ICM2OEJFDQor5qK/ID4gbGnDoW47ICM2OEJGDQor5qOAID4gamnEg247ICM2OEMwDQor5qOBID4gemjDum87ICM2OEMxDQor5qOCID4gbMOtbmc7ICM2OEMyDQor5qODID4gbMOtOyAjNjhDMw0KK+ajhCA+IHHDrDsgIzY4QzQNCivmo4UgPiBiw6xuZzsgIzY4QzUNCivmo4YgPiB6aMWrbjsgIzY4QzYNCivmo4cgPiBjxY1uZzsgIzY4QzcNCivmo4ggPiBxacOgbjsgIzY4QzgNCivmo4kgPiBtacOhbjsgIzY4QzkNCivmo4ogPiBxw607ICM2OENBDQor5qOLID4gccOtOyAjNjhDQg0KK+ajjCA+IGPEg2k7ICM2OENDDQor5qONID4gZ8O5bjsgIzY4Q0QNCivmo44gPiBjaMOhbjsgIzY4Q0UNCivmo48gPiB0w6g7ICM2OENGDQor5qOQID4gZsSVaTsgIzY4RDANCivmo5EgPiBww6FpOyAjNjhEMQ0KK+ajkiA+IGLDoG5nOyAjNjhEMg0KK+ajkyA+IHDFj3U7ICM2OEQzDQor5qOUID4gaMWrbjsgIzY4RDQNCivmo5UgPiB6xY1uZzsgIzY4RDUNCivmo5YgPiBjaMOpbmc7ICM2OEQ2DQor5qOXID4gesSDbzsgIzY4RDcNCivmo5ggPiBqw607ICM2OEQ4DQor5qOZID4gbMOsOyAjNjhEOQ0KK+ajmiA+IHDDqW5nOyAjNjhEQQ0KK+ajmyA+IHnDuTsgIzY4REINCivmo5wgPiB5w7k7ICM2OERDDQor5qOdID4gZ8O5OyAjNjhERA0KK+ajniA+IGjDum47ICM2OERFDQor5qOfID4gZMOybmc7ICM2OERGDQor5qOgID4gdMOhbmc7ICM2OEUwDQor5qOhID4gZ8SBbmc7ICM2OEUxDQor5qOiID4gd8SDbmc7ICM2OEUyDQor5qOjID4gZMOsOyAjNjhFMw0KK+ajpCA+IHjDrTsgIzY4RTQNCivmo6UgPiBmw6FuOyAjNjhFNQ0KK+ajpiA+IGNoxJNuZzsgIzY4RTYNCivmo6cgPiB6aMOgbjsgIzY4RTcNCivmo6ggPiBxxK07ICM2OEU4DQor5qOpID4geXXEgW47ICM2OEU5DQor5qOqID4gecSDbjsgIzY4RUENCivmo6sgPiB5w7k7ICM2OEVCDQor5qOsID4gcXXEgW47ICM2OEVDDQor5qOtID4gecOsOyAjNjhFRA0KK+ajriA+IHPEk247ICM2OEVFDQor5qOvID4gcsSVbjsgIzY4RUYNCivmo7AgPiBjaMO6aTsgIzY4RjANCivmo7EgPiBsw6luZzsgIzY4RjENCivmo7IgPiBxxKs7ICM2OEYyDQor5qOzID4gemjDum87ICM2OEYzDQor5qO0ID4gZsO6OyAjNjhGNA0KK+ajtSA+IGvEkzsgIzY4RjUNCivmo7YgPiBsw6FpOyAjNjhGNg0KK+ajtyA+IHrFjXU7ICM2OEY3DQor5qO4ID4gesWNdTsgIzY4RjgNCivmo7kgPiB6aMWrbzsgIzY4RjkNCivmo7ogPiBndcSBbjsgIzY4RkENCivmo7sgPiBmw6luOyAjNjhGQg0KK+ajvCA+IGbDqW47ICM2OEZDDQor5qO9ID4gY2jEk247ICM2OEZEDQor5qO+ID4gccOtb25nOyAjNjhGRQ0KK+ajvyA+IG5pw6g7ICM2OEZGDQor5qSAID4gd8SDbjsgIzY5MDANCivmpIEgPiBnxa1vOyAjNjkwMQ0KK+akgiA+IGzDuTsgIzY5MDINCivmpIMgPiBow6FvOyAjNjkwMw0KK+akhCA+IGppxJM7ICM2OTA0DQor5qSFID4gecStOyAjNjkwNQ0KK+akhiA+IGNow7N1OyAjNjkwNg0KK+akhyA+IGrFrTsgIzY5MDcNCivmpIggPiBqw7o7ICM2OTA4DQor5qSJID4gY2jDqW5nOyAjNjkwOQ0KK+akiiA+IHrDum87ICM2OTBBDQor5qSLID4gbGnDoW5nOyAjNjkwQg0KK+akjCA+IHFpxIFuZzsgIzY5MEMNCivmpI0gPiB6aMOtOyAjNjkwRA0KK+akjiA+IHpoxatpOyAjNjkwRQ0KK+akjyA+IHnEgTsgIzY5MEYNCivmpJAgPiBqxas7ICM2OTEwDQor5qSRID4gYsSTaTsgIzY5MTENCivmpJIgPiBqacSBbzsgIzY5MTINCivmpJMgPiB6aMO6bzsgIzY5MTMNCivmpJQgPiB6xKs7ICM2OTE0DQor5qSVID4gYsSrbjsgIzY5MTUNCivmpJYgPiBww6luZzsgIzY5MTYNCivmpJcgPiBkw6xuZzsgIzY5MTcNCivmpJggPiBjaMWtOyAjNjkxOA0KK+aknCA+IGppxINuOyAjNjkxQw0KK+aknSA+IGfFq2k7ICM2OTFEDQor5qSeID4geMOsOyAjNjkxRQ0KK+aknyA+IGTDujsgIzY5MUYNCivmpKAgPiBxacOgbjsgIzY5MjANCivmpKQgPiBsw7pvOyAjNjkyNA0KK+akpSA+IHpoxKs7ICM2OTI1DQor5qSqID4gcMOobmc7ICM2OTJBDQor5qSrID4gemjEg247ICM2OTJCDQor5qStID4gdMWtbzsgIzY5MkQNCivmpK4gPiBzxJNuOyAjNjkyRQ0KK+akryA+IGTDum87ICM2OTJGDQor5qSwID4gecOpOyAjNjkzMA0KK+aksSA+IGbDsnU7ICM2OTMxDQor5qSyID4gd8SVaTsgIzY5MzINCivmpLMgPiB3xJNpOyAjNjkzMw0KK+aktCA+IGR1w6BuOyAjNjkzNA0KK+aktSA+IGppxIM7ICM2OTM1DQor5qS2ID4gesWNbmc7ICM2OTM2DQor5qS3ID4gamnEgW47ICM2OTM3DQor5qS4ID4gecOtOyAjNjkzOA0KK+akuSA+IHNow6huOyAjNjkzOQ0KK+akuiA+IHjDrTsgIzY5M0ENCivmpLsgPiB5w6BuOyAjNjkzQg0KK+akvCA+IHnEg247ICM2OTNDDQor5qS9ID4gY2h1w6FuOyAjNjkzRA0KK+akviA+IHpow6BuOyAjNjkzRQ0KK+akvyA+IGNoxatuOyAjNjkzRg0KK+algCA+IHnFrTsgIzY5NDANCivmpYEgPiBow6k7ICM2OTQxDQor5qWCID4gemjEgTsgIzY5NDINCivmpYMgPiB3w7I7ICM2OTQzDQor5qWEID4gcGnDoW47ICM2OTQ0DQor5qWFID4gYsOsOyAjNjk0NQ0KK+alhiA+IHnEgW87ICM2OTQ2DQor5qWHID4gaMO5bzsgIzY5NDcNCivmpYggPiB4xas7ICM2OTQ4DQor5qWJID4gcsO5bzsgIzY5NDkNCivmpYogPiB5w6FuZzsgIzY5NEENCivmpYsgPiBsw6A7ICM2OTRCDQor5qWMID4gecOhbjsgIzY5NEMNCivmpY0gPiBixJVuOyAjNjk0RA0KK+aljiA+IGjDum47ICM2OTRFDQor5qWPID4ga8O6aTsgIzY5NEYNCivmpZAgPiBqacOoOyAjNjk1MA0KK+alkSA+IGvDumk7ICM2OTUxDQor5qWSID4gc8SrOyAjNjk1Mg0KK+alkyA+IGbEk25nOyAjNjk1Mw0KK+allCA+IHhpw6g7ICM2OTU0DQor5qWVID4gdMWtbzsgIzY5NTUNCivmpZYgPiB6aMOsOyAjNjk1Ng0KK+allyA+IGppw6BuOyAjNjk1Nw0KK+almCA+IG3DuTsgIzY5NTgNCivmpZkgPiBtw6BvOyAjNjk1OQ0KK+almiA+IGNoxa07ICM2OTVBDQor5qWbID4gaMO5OyAjNjk1Qg0KK+alnCA+IGjDujsgIzY5NUMNCivmpZ0gPiBsacOgbjsgIzY5NUQNCivmpZ4gPiBsw6luZzsgIzY5NUUNCivmpZ8gPiB0w61uZzsgIzY5NUYNCivmpaAgPiBuw6FuOyAjNjk2MA0KK+aloSA+IHnDujsgIzY5NjENCivmpaIgPiB5w7N1OyAjNjk2Mg0KK+aloyA+IG3DqWk7ICM2OTYzDQor5qWkID4gc8WPbmc7ICM2OTY0DQor5qWlID4geHXDoG47ICM2OTY1DQor5qWmID4geHXDoG47ICM2OTY2DQor5qWnID4gecSrbmc7ICM2OTY3DQor5qWoID4gemjEk247ICM2OTY4DQor5qWpID4gcGnDoW47ICM2OTY5DQor5qWqID4gecOoOyAjNjk2QQ0KK+alqyA+IGrDrTsgIzY5NkINCivmpawgPiBqacOpOyAjNjk2Qw0KK+alrSA+IHnDqDsgIzY5NkQNCivmpa4gPiBjaMWtOyAjNjk2RQ0KK+alryA+IHNoxa1uOyAjNjk2Rg0KK+alsCA+IHnDujsgIzY5NzANCivmpbEgPiBjw7J1OyAjNjk3MQ0KK+alsiA+IHfEk2k7ICM2OTcyDQor5qWzID4gbcOpaTsgIzY5NzMNCivmpbQgPiBkw6w7ICM2OTc0DQor5qW1ID4gasOtOyAjNjk3NQ0KK+altiA+IGppw6k7ICM2OTc2DQor5qW3ID4ga8SDaTsgIzY5NzcNCivmpbggPiBxxKt1OyAjNjk3OA0KK+aluSA+IHnDrW5nOyAjNjk3OQ0KK+aluiA+IHLDs3U7ICM2OTdBDQor5qW7ID4gaMOpbmc7ICM2OTdCDQor5qW8ID4gbMOzdTsgIzY5N0MNCivmpb0gPiBsw6g7ICM2OTdEDQor5qaAID4gcMStbjsgIzY5ODANCivmpoIgPiBnw6BpOyAjNjk4Mg0KK+amgyA+IHTDoW47ICM2OTgzDQor5qaEID4gbMSDbjsgIzY5ODQNCivmpoUgPiB5w7puOyAjNjk4NQ0KK+amhiA+IHnDujsgIzY5ODYNCivmpocgPiBjaMOobjsgIzY5ODcNCivmpoggPiBsx5g7ICM2OTg4DQor5qaJID4gasWtOyAjNjk4OQ0KK+amjSA+IHhpw6g7ICM2OThEDQor5qaOID4gamnEgzsgIzY5OEUNCivmpo8gPiB5w6w7ICM2OThGDQor5qaQID4gemjEg247ICM2OTkwDQor5qaRID4gZsO5OyAjNjk5MQ0KK+amkiA+IG7DoGk7ICM2OTkyDQor5qaTID4gbcOsOyAjNjk5Mw0KK+amlCA+IGzDoW5nOyAjNjk5NA0KK+amlSA+IHLDs25nOyAjNjk5NQ0KK+amliA+IGfFrTsgIzY5OTYNCivmppcgPiBqacOgbjsgIzY5OTcNCivmppggPiBqxa07ICM2OTk4DQor5qaZID4gdMSDOyAjNjk5OQ0KK+ammiA+IHnEg287ICM2OTlBDQor5qabID4gemjEk247ICM2OTlCDQor5qacID4gYsSDbmc7ICM2OTlDDQor5qadID4gc2jEgTsgIzY5OUQNCivmpp4gPiB5dcOhbjsgIzY5OUUNCivmpp8gPiB6xK07ICM2OTlGDQor5qagID4gbcSrbmc7ICM2OUEwDQor5qahID4gc8O5OyAjNjlBMQ0KK+amoiA+IGppw6A7ICM2OUEyDQor5qajID4gecOhbzsgIzY5QTMNCivmpqQgPiBqacOpOyAjNjlBNA0KK+ampSA+IGh1xINuZzsgIzY5QTUNCivmpqYgPiBnw6BuOyAjNjlBNg0KK+ampyA+IGbElWk7ICM2OUE3DQor5qaoID4gemjDoDsgIzY5QTgNCivmpqkgPiBxacOhbjsgIzY5QTkNCivmpqogPiBtw6A7ICM2OUFBDQor5qarID4gc8WtbjsgIzY5QUINCivmpqwgPiB5dcOhbjsgIzY5QUMNCivmpq0gPiB4acOoOyAjNjlBRA0KK+amriA+IHLDs25nOyAjNjlBRQ0KK+amryA+IHNow607ICM2OUFGDQor5qawID4gemjEqzsgIzY5QjANCivmprEgPiBjxatpOyAjNjlCMQ0KK+amsiA+IHnDum47ICM2OUIyDQor5qazID4gdMOtbmc7ICM2OUIzDQor5qa0ID4gbMOtdTsgIzY5QjQNCivmprUgPiByw7NuZzsgIzY5QjUNCivmprYgPiB0w6FuZzsgIzY5QjYNCivmprcgPiBxdcOoOyAjNjlCNw0KK+amuCA+IHpoxIFpOyAjNjlCOA0KK+amuSA+IHPEqzsgIzY5QjkNCivmprogPiBzaMOobmc7ICM2OUJBDQor5qa7ID4gdMOgOyAjNjlCQg0KK+amvCA+IGvDqDsgIzY5QkMNCivmpr0gPiB4xKs7ICM2OUJEDQor5qa+ID4gZ8O5OyAjNjlCRQ0KK+amvyA+IHHEqzsgIzY5QkYNCivmp4AgPiBrxINvOyAjNjlDMA0KK+angSA+IGfEg287ICM2OUMxDQor5qeCID4gc8WrbjsgIzY5QzINCivmp4MgPiBww6FuOyAjNjlDMw0KK+anhCA+IHTEgW87ICM2OUM0DQor5qeFID4gZ8OpOyAjNjlDNQ0KK+anhiA+IHjDum47ICM2OUM2DQor5qeHID4gZGnEgW47ICM2OUM3DQor5qeIID4gbsOydTsgIzY5QzgNCivmp4kgPiBqw607ICM2OUM5DQor5qeKID4gc2jDuW87ICM2OUNBDQor5qeLID4gZ8OydTsgIzY5Q0INCivmp4wgPiBjaMO6aTsgIzY5Q0MNCivmp40gPiBxacSBbmc7ICM2OUNEDQor5qeOID4gY2jEgTsgIzY5Q0UNCivmp48gPiBxacSDbjsgIzY5Q0YNCivmp5AgPiBodcOhaTsgIzY5RDANCivmp5EgPiBtw6lpOyAjNjlEMQ0KK+ankiA+IHjDuTsgIzY5RDINCivmp5MgPiBnw6BuZzsgIzY5RDMNCivmp5QgPiBnxIFvOyAjNjlENA0KK+anlSA+IHpow7pvOyAjNjlENQ0KK+anliA+IHTDuW87ICM2OUQ2DQor5qeYID4gecOgbmc7ICM2OUQ4DQor5qeZID4gZGnEgW47ICM2OUQ5DQor5qeaID4gamnEgzsgIzY5REENCivmp5sgPiBqacOgbjsgIzY5REINCivmp5wgPiB6w7lpOyAjNjlEQw0KK+annyA+IGLEq247ICM2OURGDQor5qegID4gemjFqzsgIzY5RTANCivmp6IgPiB4w607ICM2OUUyDQor5qejID4gccStOyAjNjlFMw0KK+anpCA+IGxpw6FuOyAjNjlFNA0KK+anpSA+IGjDuWk7ICM2OUU1DQor5qemID4gecOzbmc7ICM2OUU2DQor5qenID4gcWnDoG47ICM2OUU3DQor5qeoID4gZ8WtbzsgIzY5RTgNCivmp6kgPiBnw6BpOyAjNjlFOQ0KK+anqiA+IGfDoGk7ICM2OUVBDQor5qerID4gdHXDoW47ICM2OUVCDQor5qesID4gaHXDoDsgIzY5RUMNCivmp60gPiBjw7k7ICM2OUVEDQor5qeuID4gc8STbjsgIzY5RUUNCivmp68gPiBjxatpOyAjNjlFRg0KK+ansCA+IGLDqG5nOyAjNjlGMA0KK+ansSA+IHnFj3U7ICM2OUYxDQor5qeyID4gaMO6OyAjNjlGMg0KK+ansyA+IGppxINuZzsgIzY5RjMNCivmp7QgPiBow7k7ICM2OUY0DQor5qe1ID4gaHXDoG47ICM2OUY1DQor5qe2ID4ga8O5aTsgIzY5RjYNCivmp7cgPiB5w6w7ICM2OUY3DQor5qe4ID4gbmnDqDsgIzY5RjgNCivmp7kgPiBnxIFvOyAjNjlGOQ0KK+anuiA+IGvEgW5nOyAjNjlGQQ0KK+anuyA+IGfFq2k7ICM2OUZCDQor5qe8ID4gZ8WraTsgIzY5RkMNCivmp70gPiBjw6FvOyAjNjlGRA0KK+anviA+IG3DoW47ICM2OUZFDQor5qe/ID4gasStbjsgIzY5RkYNCivmqIAgPiBkw6w7ICM2QTAwDQor5qiBID4gemh1xIFuZzsgIzZBMDENCivmqIIgPiBsw6g7ICM2QTAyDQor5qiDID4gbMOhbmc7ICM2QTAzDQor5qiEID4gY2jDqW47ICM2QTA0DQor5qiFID4gY8WNbmc7ICM2QTA1DQor5qiGID4gbMOtOyAjNkEwNg0KK+aohyA+IHjEq3U7ICM2QTA3DQor5qiIID4gccOtbmc7ICM2QTA4DQor5qiJID4gc2h1xINuZzsgIzZBMDkNCivmqIogPiBmw6FuOyAjNkEwQQ0KK+aoiyA+IHTFjW5nOyAjNkEwQg0KK+aojCA+IGd1w6BuOyAjNkEwQw0KK+aojSA+IGrEqzsgIzZBMEQNCivmqI4gPiBzxatvOyAjNkEwRQ0KK+aojyA+IGzElWk7ICM2QTBGDQor5qiQID4gbMWtOyAjNkExMA0KK+aokSA+IGxpw6FuZzsgIzZBMTENCivmqJIgPiBtw6w7ICM2QTEyDQor5qiTID4gbMOzdTsgIzZBMTMNCivmqJQgPiBjaMOhbzsgIzZBMTQNCivmqJUgPiBzw7k7ICM2QTE1DQor5qiWID4ga8STOyAjNkExNg0KK+aolyA+IHNoxas7ICM2QTE3DQor5qiYID4gdMOhbmc7ICM2QTE4DQor5qiZID4gYmnEgW87ICM2QTE5DQor5qiaID4gbMO5OyAjNkExQQ0KK+aomyA+IGrEq3U7ICM2QTFCDQor5qicID4gc2jDuTsgIzZBMUMNCivmqJ0gPiB6aMSBOyAjNkExRA0KK+aoniA+IHNoxas7ICM2QTFFDQor5qifID4gemjEgW5nOyAjNkExRg0KK+aooCA+IG3DqW47ICM2QTIwDQor5qihID4gbcOzOyAjNkEyMQ0KK+aooiA+IG5pxINvOyAjNkEyMg0KK+aooyA+IHnDoG5nOyAjNkEyMw0KK+aopCA+IHRpw6FvOyAjNkEyNA0KK+aopSA+IHDDqW5nOyAjNkEyNQ0KK+aopiA+IHpow7k7ICM2QTI2DQor5qinID4gc2jEgTsgIzZBMjcNCivmqKggPiB4xKs7ICM2QTI4DQor5qipID4gcXXDoW47ICM2QTI5DQor5qiqID4gaMOpbmc7ICM2QTJBDQor5qirID4gamnEgW47ICM2QTJCDQor5qisID4gY8WNbmc7ICM2QTJDDQor5qivID4gcWnDoW5nOyAjNkEyRg0KK+aosSA+IHnEq25nOyAjNkEzMQ0KK+aosiA+IMOocjsgIzZBMzINCivmqLMgPiB4w61uOyAjNkEzMw0KK+aotCA+IHpow607ICM2QTM0DQor5qi1ID4gcWnDoW87ICM2QTM1DQor5qi2ID4gesWraTsgIzZBMzYNCivmqLcgPiBjxY1uZzsgIzZBMzcNCivmqLggPiBww7o7ICM2QTM4DQor5qi5ID4gc2jDuTsgIzZBMzkNCivmqLogPiBodcOgOyAjNkEzQQ0KK+aouyA+IGvDuWk7ICM2QTNCDQor5qi8ID4gemjEk247ICM2QTNDDQor5qi9ID4gesWrbjsgIzZBM0QNCivmqL4gPiB5dcOoOyAjNkEzRQ0KK+aovyA+IHpoxINuOyAjNkEzRg0KK+apgCA+IHjEqzsgIzZBNDANCivmqYEgPiB4w7puOyAjNkE0MQ0KK+apgiA+IGRpw6BuOyAjNkE0Mg0KK+apgyA+IGbEgTsgIzZBNDMNCivmqYQgPiBnxINuOyAjNkE0NA0KK+aphSA+IG3DszsgIzZBNDUNCivmqYYgPiB3xa07ICM2QTQ2DQor5qmHID4gcWnEgW87ICM2QTQ3DQor5qmIID4gbsOhbzsgIzZBNDgNCivmqYkgPiBsw6xuOyAjNkE0OQ0KK+apiiA+IGzDrXU7ICM2QTRBDQor5qmLID4gcWnDoW87ICM2QTRCDQor5qmMID4geGnDoG47ICM2QTRDDQor5qmNID4gcsO5bjsgIzZBNEQNCivmqY4gPiBmw6FuOyAjNkE0RQ0KK+apjyA+IHpoxINuOyAjNkE0Rg0KK+apkCA+IHTDuW87ICM2QTUwDQor5qmRID4gbMSDbzsgIzZBNTENCivmqZIgPiB5w7puOyAjNkE1Mg0KK+apkyA+IHNow7luOyAjNkE1Mw0KK+aplCA+IHTDumk7ICM2QTU0DQor5qmVID4gY2jEk25nOyAjNkE1NQ0KK+apliA+IHTDoW5nOyAjNkE1Ng0KK+aplyA+IG3DqW5nOyAjNkE1Nw0KK+apmCA+IGrDujsgIzZBNTgNCivmqZkgPiBjaMOpbmc7ICM2QTU5DQor5qmaID4gc8O5OyAjNkE1QQ0KK+apmyA+IGp1w6k7ICM2QTVCDQor5qmcID4ganXDqTsgIzZBNUMNCivmqZ0gPiB0xIFuOyAjNkE1RA0KK+apniA+IGjDuWk7ICM2QTVFDQor5qmfID4gasSrOyAjNkE1Rg0KK+apoCA+IG7FrW87ICM2QTYwDQor5qmhID4geGnDoG5nOyAjNkE2MQ0KK+apoiA+IHTFrW87ICM2QTYyDQor5qmjID4gbsStbmc7ICM2QTYzDQor5qmkID4gcsWtaTsgIzZBNjQNCivmqaUgPiB6aMWrOyAjNkE2NQ0KK+appiA+IGNodcOhbmc7ICM2QTY2DQor5qmnID4gesSTbmc7ICM2QTY3DQor5qmoID4gZsOpbjsgIzZBNjgNCivmqakgPiBxw61vbmc7ICM2QTY5DQor5qmqID4gcsSDbjsgIzZBNkENCivmqasgPiBow6luZzsgIzZBNkINCivmqawgPiBjw6luOyAjNkE2Qw0KK+aprSA+IGfFqzsgIzZBNkQNCivmqa4gPiBsxK11OyAjNkE2RQ0KK+apryA+IGzDoG87ICM2QTZGDQor5qmwID4gZ8SBbzsgIzZBNzANCivmqbEgPiBjaMO6OyAjNkE3MQ0KK+aptiA+IGrDrTsgIzZBNzYNCivmqbcgPiBkxY11OyAjNkE3Nw0KK+apuSA+IGzFrTsgIzZBNzkNCivmqbwgPiB5dcOhbjsgIzZBN0MNCivmqb0gPiB0w6A7ICM2QTdEDQor5qm+ID4gc2jFqzsgIzZBN0UNCivmqb8gPiBqacSBbmc7ICM2QTdGDQor5qqAID4gdMOhbjsgIzZBODANCivmqoEgPiBsxK1uOyAjNkE4MQ0KK+aqgiA+IG7Ds25nOyAjNkE4Mg0KK+aqgyA+IHnErW47ICM2QTgzDQor5qqEID4geMOtOyAjNkE4NA0KK+aqhSA+IHPDuWk7ICM2QTg1DQor5qqGID4gc2jEgW47ICM2QTg2DQor5qqHID4gesO5aTsgIzZBODcNCivmqoggPiB4dcOhbjsgIzZBODgNCivmqokgPiBjaMSTbmc7ICM2QTg5DQor5qqKID4gZ8OgbjsgIzZBOEENCivmqosgPiBqxas7ICM2QThCDQor5qqMID4gesO5aTsgIzZBOEMNCivmqo0gPiB5w6w7ICM2QThEDQor5qqOID4gccOtbjsgIzZBOEUNCivmqo8gPiBwxa07ICM2QThGDQor5qqQID4gecOhbjsgIzZBOTANCivmqpEgPiBsw6lpOyAjNkE5MQ0KK+aqkiA+IGbEk25nOyAjNkE5Mg0KK+aqkyA+IGjFrWk7ICM2QTkzDQor5qqUID4gZMSDbmc7ICM2QTk0DQor5qqVID4gasOsOyAjNkE5NQ0KK+aqliA+IHPDuWk7ICM2QTk2DQor5qqXID4gYsOyOyAjNkE5Nw0KK+aqmCA+IGLDrDsgIzZBOTgNCivmqpkgPiBkxK1uZzsgIzZBOTkNCivmqpogPiBjaMWtOyAjNkE5QQ0KK+aqmyA+IHpodcSBOyAjNkE5Qg0KK+aqnCA+IGt1w6BpOyAjNkE5Qw0KK+aqnSA+IGrDrTsgIzZBOUQNCivmqp4gPiBqacSVOyAjNkE5RQ0KK+aqnyA+IGppxIM7ICM2QTlGDQor5qqgID4gccOtbmc7ICM2QUEwDQor5qqhID4gemjDqDsgIzZBQTENCivmqqIgPiBqacSDbjsgIzZBQTINCivmqqMgPiBxacOhbmc7ICM2QUEzDQor5qqkID4gZMOgbzsgIzZBQTQNCivmqqUgPiB5xK07ICM2QUE1DQor5qqmID4gYmnEg287ICM2QUE2DQor5qqnID4gc8WNbmc7ICM2QUE3DQor5qqoID4gc2jEkzsgIzZBQTgNCivmqqkgPiBsxK1uOyAjNkFBOQ0KK+aqqyA+IGNow6E7ICM2QUFCDQor5qqsID4gbcOpbmc7ICM2QUFDDQor5qqtID4gecOtbjsgIzZBQUQNCivmqq4gPiB0w6FvOyAjNkFBRQ0KK+aqryA+IHTDoWk7ICM2QUFGDQor5qqwID4gbWnDoW47ICM2QUIwDQor5qqxID4gccOtOyAjNkFCMQ0KK+aqsiA+IHTDs2FuOyAjNkFCMg0KK+aqsyA+IGLEq247ICM2QUIzDQor5qq0ID4gaMO5bzsgIzZBQjQNCivmqrUgPiBqw6w7ICM2QUI1DQor5qq2ID4gcWnEgW47ICM2QUI2DQor5qq3ID4gbcOtOyAjNkFCNw0KK+aquCA+IG7DrW5nOyAjNkFCOA0KK+aquSA+IHnEqzsgIzZBQjkNCivmqrogPiBnxINvOyAjNkFCQQ0KK+aquyA+IGppw6BuOyAjNkFCQg0KK+aqvCA+IHnDrG47ICM2QUJDDQor5qq9ID4gw6lyOyAjNkFCRA0KK+aqviA+IHHErW5nOyAjNkFCRQ0KK+aqvyA+IHnEg247ICM2QUJGDQor5quAID4gccOtOyAjNkFDMA0KK+argSA+IG3DrDsgIzZBQzENCivmq4IgPiB6aMOgbzsgIzZBQzINCivmq4MgPiBnw7lpOyAjNkFDMw0KK+arhCA+IGNoxatuOyAjNkFDNA0KK+arhSA+IGrEqzsgIzZBQzUNCivmq4YgPiBrw7ppOyAjNkFDNg0KK+arhyA+IHDDszsgIzZBQzcNCivmq4ggPiBkw6huZzsgIzZBQzgNCivmq4kgPiBjaMO6OyAjNkFDOQ0KK+ariyA+IG1pw6FuOyAjNkFDQg0KK+arjCA+IHnFjXU7ICM2QUNDDQor5quNID4gemjDrDsgIzZBQ0QNCivmq44gPiBndcOgbmc7ICM2QUNFDQor5quPID4gcWnEgW47ICM2QUNGDQor5quQID4gbMSVaTsgIzZBRDANCivmq5EgPiBsxJVpOyAjNkFEMQ0KK+arkiA+IHPDoDsgIzZBRDINCivmq5MgPiBsxa07ICM2QUQzDQor5quUID4gbMOsOyAjNkFENA0KK+arlSA+IGN1w6FuOyAjNkFENQ0KK+arliA+IGzHmDsgIzZBRDYNCivmq5cgPiBtacOoOyAjNkFENw0KK+armCA+IGjDuWk7ICM2QUQ4DQor5quZID4gxY11OyAjNkFEOQ0KK+armiA+IGzHmDsgIzZBREENCivmq5sgPiBqacOpOyAjNkFEQg0KK+arnCA+IGfEgW87ICM2QURDDQor5qudID4gZMO6OyAjNkFERA0KK+arniA+IHl1w6FuOyAjNkFERQ0KK+arnyA+IGzDrDsgIzZBREYNCivmq6AgPiBmw6hpOyAjNkFFMA0KK+aroSA+IHpow7pvOyAjNkFFMQ0KK+aroiA+IHPFj3U7ICM2QUUyDQor5qujID4gbGnDoW47ICM2QUUzDQor5qulID4gY2jDujsgIzZBRTUNCivmq6cgPiB6aMWrOyAjNkFFNw0KK+arqCA+IGzDujsgIzZBRTgNCivmq6kgPiB5w6FuOyAjNkFFOQ0KK+arqiA+IGzDrDsgIzZBRUENCivmq6sgPiB6aMWrOyAjNkFFQg0KK+arrCA+IGNow6huOyAjNkFFQw0KK+arrSA+IGppw6k7ICM2QUVEDQor5quuID4gw6g7ICM2QUVFDQor5quvID4gc8WrOyAjNkFFRg0KK+arsCA+IGh1w6FpOyAjNkFGMA0KK+arsSA+IG5pw6g7ICM2QUYxDQor5quyID4gecO5OyAjNkFGMg0KK+arsyA+IGzDs25nOyAjNkFGMw0KK+artCA+IGzDoGk7ICM2QUY0DQor5qu2ID4geGnEg247ICM2QUY2DQor5qu4ID4gasWtOyAjNkFGOA0KK+aruSA+IHhpxIFvOyAjNkFGOQ0KK+aruiA+IGzDrW5nOyAjNkFGQQ0KK+aruyA+IHnEq25nOyAjNkFGQg0KK+arvCA+IGppxIFuOyAjNkFGQw0KK+arvSA+IHnErW47ICM2QUZEDQor5qu+ID4gecOzdTsgIzZBRkUNCivmq78gPiB5w61uZzsgIzZBRkYNCivmrIAgPiB4acSBbmc7ICM2QjAwDQor5qyBID4gbsOzbmc7ICM2QjAxDQor5qyCID4gYsOzOyAjNkIwMg0KK+asgyA+IGNow6FuOyAjNkIwMw0KK+ashCA+IGzDoW47ICM2QjA0DQor5qyFID4gasWtOyAjNkIwNQ0KK+ashiA+IHNodcSBbmc7ICM2QjA2DQor5qyHID4gc2jDqDsgIzZCMDcNCivmrIggPiB3w6lpOyAjNkIwOA0KK+asiSA+IGPDsm5nOyAjNkIwOQ0KK+asiiA+IHF1w6FuOyAjNkIwQQ0KK+asiyA+IHHDujsgIzZCMEINCivmrI4gPiB5w7k7ICM2QjBFDQor5qyPID4gbMO6bzsgIzZCMEYNCivmrJAgPiBsxK07ICM2QjEwDQor5qyRID4gesOgbjsgIzZCMTENCivmrJIgPiBsdcOhbjsgIzZCMTINCivmrJMgPiBkxINuZzsgIzZCMTMNCivmrJQgPiBqdcOpOyAjNkIxNA0KK+asliA+IGzEg247ICM2QjE2DQor5qyXID4gbMOhbjsgIzZCMTcNCivmrJggPiB6aMWtOyAjNkIxOA0KK+asmSA+IGzDqWk7ICM2QjE5DQor5qyaID4gbMStOyAjNkIxQQ0KK+asmyA+IGLDoDsgIzZCMUINCivmrJwgPiBuw6FuZzsgIzZCMUMNCivmrJ0gPiB5w7k7ICM2QjFEDQor5qyeID4gbMOtbmc7ICM2QjFFDQor5qygID4gcWnDoG47ICM2QjIwDQor5qyhID4gY8OsOyAjNkIyMQ0KK+asoiA+IGh1xIFuOyAjNkIyMg0KK+asoyA+IHjEq247ICM2QjIzDQor5qykID4gecO6OyAjNkIyNA0KK+aspSA+IHnDuTsgIzZCMjUNCivmrKYgPiBxacSBbjsgIzZCMjYNCivmrKcgPiDFjXU7ICM2QjI3DQor5qyoID4geMWrOyAjNkIyOA0KK+asqSA+IGNoxIFvOyAjNkIyOQ0KK+asqiA+IGNow7k7ICM2QjJBDQor5qyrID4gY2jEqzsgIzZCMkINCivmrKwgPiBrw6BpOyAjNkIyQw0KK+asrSA+IHnDrDsgIzZCMkQNCivmrK4gPiBqdcOpOyAjNkIyRQ0KK+asryA+IHjDrTsgIzZCMkYNCivmrLAgPiB4xas7ICM2QjMwDQor5qyxID4geGnDoDsgIzZCMzENCivmrLIgPiB5w7k7ICM2QjMyDQor5qyzID4ga3XDoGk7ICM2QjMzDQor5qy0ID4gbMOhbmc7ICM2QjM0DQor5qy1ID4ga3XEg247ICM2QjM1DQor5qy2ID4gc2jDuW87ICM2QjM2DQor5qy3ID4geMSrOyAjNkIzNw0KK+asuCA+IMSDaTsgIzZCMzgNCivmrLkgPiB5xKs7ICM2QjM5DQor5qy6ID4gccSrOyAjNkIzQQ0KK+asuyA+IGjFqzsgIzZCM0INCivmrLwgPiBjaMStOyAjNkIzQw0KK+asvSA+IHHEq247ICM2QjNEDQor5qy+ID4ga3XEg247ICM2QjNFDQor5qy/ID4ga8SDbjsgIzZCM0YNCivmrYAgPiBrdcSDbjsgIzZCNDANCivmrYEgPiBrxINuOyAjNkI0MQ0KK+atgiA+IGNodcOhbjsgIzZCNDINCivmrYMgPiBzaMOgOyAjNkI0Mw0KK+athCA+IGd1YTsgIzZCNDQNCivmrYUgPiB5xKtuOyAjNkI0NQ0KK+athiA+IHjEq247ICM2QjQ2DQor5q2HID4geGnEkzsgIzZCNDcNCivmrYggPiB5w7o7ICM2QjQ4DQor5q2JID4gcWnDoG47ICM2QjQ5DQor5q2KID4geGnEgW87ICM2QjRBDQor5q2LID4gecOtOyAjNkI0Qg0KK+atjCA+IGfEkzsgIzZCNEMNCivmrY0gPiB3xas7ICM2QjREDQor5q2OID4gdMOgbjsgIzZCNEUNCivmrY8gPiBqw6xuOyAjNkI0Rg0KK+atkCA+IMWNdTsgIzZCNTANCivmrZEgPiBoxas7ICM2QjUxDQor5q2SID4gdMOsOyAjNkI1Mg0KK+atkyA+IGh1xIFuOyAjNkI1Mw0KK+atlCA+IHjFqzsgIzZCNTQNCivmrZUgPiBww6huOyAjNkI1NQ0KK+atliA+IHjEqzsgIzZCNTYNCivmrZcgPiB4acOgbzsgIzZCNTcNCivmrZggPiB4xas7ICM2QjU4DQor5q2ZID4geMOsOyAjNkI1OQ0KK+atmyA+IGxpw6BuOyAjNkI1Qg0KK+atnCA+IGNow7k7ICM2QjVDDQor5q2dID4gecOsOyAjNkI1RA0KK+atniA+IGvEg247ICM2QjVFDQor5q2fID4gecO6OyAjNkI1Rg0KK+atoCA+IGNow7lvOyAjNkI2MA0KK+atoSA+IGh1xIFuOyAjNkI2MQ0KK+atoiA+IHpoxK07ICM2QjYyDQor5q2jID4gemjDqG5nOyAjNkI2Mw0KK+atpCA+IGPErTsgIzZCNjQNCivmraUgPiBiw7k7ICM2QjY1DQor5q2mID4gd8WtOyAjNkI2Ng0KK+atpyA+IHHDrTsgIzZCNjcNCivmraggPiBiw7k7ICM2QjY4DQor5q2pID4gYsO5OyAjNkI2OQ0KK+atqiA+IHfEgWk7ICM2QjZBDQor5q2rID4gasO5OyAjNkI2Qg0KK+atrCA+IHFpw6FuOyAjNkI2Qw0KK+atrSA+IGNow607ICM2QjZEDQor5q2uID4gc8OoOyAjNkI2RQ0KK+atryA+IGNoxK07ICM2QjZGDQor5q2wID4gc8OoOyAjNkI3MA0KK+atsSA+IHpoxY9uZzsgIzZCNzENCivmrbIgPiBzw7lpOyAjNkI3Mg0KK+atsyA+IHPDuWk7ICM2QjczDQor5q20ID4gbMOsOyAjNkI3NA0KK+attSA+IGPDuW87ICM2Qjc1DQor5q22ID4gecO6OyAjNkI3Ng0KK+attyA+IGzDrDsgIzZCNzcNCivmrbggPiBnxatpOyAjNkI3OA0KK+atuSA+IGTEg2k7ICM2Qjc5DQor5q26ID4gZMSDaTsgIzZCN0ENCivmrbsgPiBzxK07ICM2QjdCDQor5q28ID4gamnEgW47ICM2QjdDDQor5q29ID4gemjDqTsgIzZCN0QNCivmrb4gPiBtw7I7ICM2QjdFDQor5q2/ID4gbcOyOyAjNkI3Rg0KK+augCA+IHnEg287ICM2QjgwDQor5q6BID4gbcOyOyAjNkI4MQ0KK+augiA+IGPDujsgIzZCODINCivmroMgPiB5xIFuZzsgIzZCODMNCivmroQgPiB0acSDbjsgIzZCODQNCivmroUgPiBzaMSTbmc7ICM2Qjg1DQor5q6GID4gZMOgaTsgIzZCODYNCivmrocgPiBzaMSBbmc7ICM2Qjg3DQor5q6IID4geMO5OyAjNkI4OA0KK+auiSA+IHjDuW47ICM2Qjg5DQor5q6KID4gc2jFqzsgIzZCOEENCivmrosgPiBjw6FuOyAjNkI4Qg0KK+aujCA+IGp1w6k7ICM2QjhDDQor5q6NID4gcGnEg287ICM2QjhEDQor5q6OID4gcWnDoDsgIzZCOEUNCivmro8gPiBxw6x1OyAjNkI4Rg0KK+aukCA+IHPDuTsgIzZCOTANCivmrpEgPiBxw61uZzsgIzZCOTENCivmrpIgPiB5xa1uOyAjNkI5Mg0KK+aukyA+IGxpw6BuOyAjNkI5Mw0KK+aulCA+IHnDrDsgIzZCOTQNCivmrpUgPiBmxY91OyAjNkI5NQ0KK+auliA+IHpow607ICM2Qjk2DQor5q6XID4gecOoOyAjNkI5Nw0KK+aumCA+IGPDoW47ICM2Qjk4DQor5q6ZID4gaMWrbjsgIzZCOTkNCivmrpogPiBkxIFuOyAjNkI5QQ0KK+aumyA+IGrDrTsgIzZCOUINCivmrpwgPiB5w6g7ICM2QjlDDQor5q6dID4gemhlbjsgIzZCOUQNCivmrp4gPiB5xa1uOyAjNkI5RQ0KK+aunyA+IHfEk247ICM2QjlGDQor5q6gID4gY2jDsnU7ICM2QkEwDQor5q6hID4gYsOsbjsgIzZCQTENCivmrqIgPiB0w6w7ICM2QkEyDQor5q6jID4gasStbjsgIzZCQTMNCivmrqQgPiBzaMSBbmc7ICM2QkE0DQor5q6lID4gecOtbjsgIzZCQTUNCivmrqYgPiBkacSBbzsgIzZCQTYNCivmrqcgPiBjw7k7ICM2QkE3DQor5q6oID4gaMO5aTsgIzZCQTgNCivmrqkgPiBjdcOgbjsgIzZCQTkNCivmrqogPiB5w6w7ICM2QkFBDQor5q6rID4gZMSBbjsgIzZCQUINCivmrqwgPiBkw7k7ICM2QkFDDQor5q6tID4gamnEgW5nOyAjNkJBRA0KK+auriA+IGxpw6BuOyAjNkJBRQ0KK+auryA+IGLDrG47ICM2QkFGDQor5q6wID4gZMO6OyAjNkJCMA0KK+ausiA+IGppxIFuOyAjNkJCMg0KK+ausyA+IHNoxas7ICM2QkIzDQor5q60ID4gxY11OyAjNkJCNA0KK+autSA+IGR1w6BuOyAjNkJCNQ0KK+autiA+IHpow7k7ICM2QkI2DQor5q63ID4gecSrbjsgIzZCQjcNCivmrrggPiBxw6xuZzsgIzZCQjgNCivmrrkgPiB5w6w7ICM2QkI5DQor5q66ID4gc2jEgTsgIzZCQkENCivmrrsgPiBxdcOoOyAjNkJCQg0KK+auvCA+IGvDqTsgIzZCQkMNCivmrr0gPiB5w6FvOyAjNkJCRA0KK+auviA+IGrDuW47ICM2QkJFDQor5q6/ID4gZGnDoG47ICM2QkJGDQor5q+AID4gaMWtaTsgIzZCQzANCivmr4EgPiBoxa1pOyAjNkJDMQ0KK+avgiA+IGfFrTsgIzZCQzINCivmr4MgPiBxdcOoOyAjNkJDMw0KK+avhCA+IGrEqzsgIzZCQzQNCivmr4UgPiB5w6w7ICM2QkM1DQor5q+GID4gxY11OyAjNkJDNg0KK+avhyA+IGjFrWk7ICM2QkM3DQor5q+IID4gZHXDoG47ICM2QkM4DQor5q+JID4gecSrOyAjNkJDOQ0KK+aviiA+IHhpxIFvOyAjNkJDQQ0KK+aviyA+IHfDujsgIzZCQ0INCivmr4wgPiBndcOgbjsgIzZCQ0MNCivmr40gPiBtxa07ICM2QkNEDQor5q+OID4gbcSVaTsgIzZCQ0UNCivmr48gPiBtxJVpOyAjNkJDRg0KK+avkCA+IMSDaTsgIzZCRDANCivmr5EgPiB6xa1vOyAjNkJEMQ0KK+avkiA+IGTDujsgIzZCRDINCivmr5MgPiB5w7k7ICM2QkQzDQor5q+UID4gYsStOyAjNkJENA0KK+avlSA+IGLDrDsgIzZCRDUNCivmr5YgPiBiw6w7ICM2QkQ2DQor5q+XID4gcMOtOyAjNkJENw0KK+avmCA+IHDDrTsgIzZCRDgNCivmr5kgPiBiw6w7ICM2QkQ5DQor5q+aID4gY2jDoW47ICM2QkRBDQor5q+bID4gbcOhbzsgIzZCREINCivmr54gPiBww7o7ICM2QkRFDQor5q+gID4gamnEgTsgIzZCRTANCivmr6EgPiB6aMSBbjsgIzZCRTENCivmr6IgPiBzxIFpOyAjNkJFMg0KK+avoyA+IG3DuTsgIzZCRTMNCivmr6QgPiB0w7lvOyAjNkJFNA0KK+avpSA+IHjDum47ICM2QkU1DQor5q+mID4gw6hyOyAjNkJFNg0KK+avpyA+IHLDs25nOyAjNkJFNw0KK+avqCA+IHhpxINuOyAjNkJFOA0KK+avqSA+IGrDujsgIzZCRTkNCivmr6ogPiBtw7o7ICM2QkVBDQor5q+rID4gaMOhbzsgIzZCRUINCivmr6wgPiBxw611OyAjNkJFQw0KK+avrSA+IGTDsnU7ICM2QkVEDQor5q+vID4gdMSDbjsgIzZCRUYNCivmr7AgPiBww6lpOyAjNkJGMA0KK+avsSA+IGrDujsgIzZCRjENCivmr7IgPiBkw7pvOyAjNkJGMg0KK+avsyA+IGPDuWk7ICM2QkYzDQor5q+0ID4gYsSrOyAjNkJGNA0KK+avtSA+IHPEgW47ICM2QkY1DQor5q+3ID4gbcOgbzsgIzZCRjcNCivmr7ggPiBzxatpOyAjNkJGOA0KK+avuSA+IHnFqzsgIzZCRjkNCivmr7ogPiB5xas7ICM2QkZBDQor5q+7ID4gdMO5bzsgIzZCRkINCivmr7wgPiBow6k7ICM2QkZDDQor5q+9ID4gamnDoG47ICM2QkZEDQor5q++ID4gdMOgOyAjNkJGRQ0KK+avvyA+IHPEgW47ICM2QkZGDQor5rCAID4gbMeYOyAjNkMwMA0KK+awgSA+IG3DujsgIzZDMDENCivmsIIgPiBsw607ICM2QzAyDQor5rCDID4gdMOzbmc7ICM2QzAzDQor5rCEID4gcsWPbmc7ICM2QzA0DQor5rCFID4gY2jEg25nOyAjNkMwNQ0KK+awhiA+IHDFrTsgIzZDMDYNCivmsIcgPiBsw7pvOyAjNkMwNw0KK+awiCA+IHpoxIFuOyAjNkMwOA0KK+awiSA+IHPDoG87ICM2QzA5DQor5rCKID4gemjEgW47ICM2QzBBDQor5rCLID4gbcOpbmc7ICM2QzBCDQor5rCMID4gbMO6bzsgIzZDMEMNCivmsI0gPiBxw7o7ICM2QzBEDQor5rCOID4gZGnDqTsgIzZDMEUNCivmsI8gPiBzaMOsOyAjNkMwRg0KK+awkCA+IGTErTsgIzZDMTANCivmsJEgPiBtw61uOyAjNkMxMQ0KK+awkiA+IGp1w6k7ICM2QzEyDQor5rCTID4gbcOhbmc7ICM2QzEzDQor5rCUID4gccOsOyAjNkMxNA0KK+awlSA+IHBpxJM7ICM2QzE1DQor5rCWID4gbsSDaTsgIzZDMTYNCivmsJcgPiBxw6w7ICM2QzE3DQor5rCYID4gZMSBbzsgIzZDMTgNCivmsJkgPiB4acSBbjsgIzZDMTkNCivmsJogPiBjaHXEgW47ICM2QzFBDQor5rCbID4gZsSTbjsgIzZDMUINCivmsJwgPiByw6w7ICM2QzFDDQor5rCdID4gbsOoaTsgIzZDMUQNCivmsJ8gPiBmw7o7ICM2QzFGDQor5rCgID4gc2jEk247ICM2QzIwDQor5rChID4gZMWNbmc7ICM2QzIxDQor5rCiID4gccSrbmc7ICM2QzIyDQor5rCjID4gccOsOyAjNkMyMw0KK+awpCA+IHnEq247ICM2QzI0DQor5rClID4geMSrOyAjNkMyNQ0KK+awpiA+IGjDoGk7ICM2QzI2DQor5rCnID4gecSDbmc7ICM2QzI3DQor5rCoID4gxIFuOyAjNkMyOA0KK+awqSA+IHnDoDsgIzZDMjkNCivmsKogPiBrw6g7ICM2QzJBDQor5rCrID4gccSrbmc7ICM2QzJCDQor5rCsID4gecOgOyAjNkMyQw0KK+awrSA+IGTFjW5nOyAjNkMyRA0KK+awriA+IGTDoG47ICM2QzJFDQor5rCvID4gbMecOyAjNkMyRg0KK+awsCA+IHHEq25nOyAjNkMzMA0KK+awsSA+IHnEg25nOyAjNkMzMQ0KK+awsiA+IHnFq247ICM2QzMyDQor5rCzID4gecWrbjsgIzZDMzMNCivmsLQgPiBzaMWtaTsgIzZDMzQNCivmsLUgPiBzxIFuJyAnZGnEg24nICdzaMWtaTsgIzZDMzUNCivmsLYgPiB6aMSVbmc7ICM2QzM2DQor5rC3ID4gYsSrbmc7ICM2QzM3DQor5rC4ID4gecWPbmc7ICM2QzM4DQor5rC5ID4gZMOgbmc7ICM2QzM5DQor5rC7ID4gbMOoOyAjNkMzQg0KK+awvCA+IG7DrDsgIzZDM0MNCivmsL0gPiB0xa1uOyAjNkMzRA0KK+awviA+IGbDoG47ICM2QzNFDQor5rC/ID4gZ8WtaTsgIzZDM0YNCivmsYAgPiB0xKtuZzsgIzZDNDANCivmsYEgPiB6aMSrOyAjNkM0MQ0KK+axgiA+IHHDrXU7ICM2QzQyDQor5rGDID4gYsSrbjsgIzZDNDMNCivmsYQgPiB6w6g7ICM2QzQ0DQor5rGFID4gbWnEg247ICM2QzQ1DQor5rGGID4gY3XEgW47ICM2QzQ2DQor5rGHID4gaMO5aTsgIzZDNDcNCivmsYggPiBkacSBbzsgIzZDNDgNCivmsYkgPiB5w6w7ICM2QzQ5DQor5rGKID4gY2jDoDsgIzZDNEENCivmsYsgPiB6aMO6bzsgIzZDNEINCivmsYwgPiBjaHXDoG47ICM2QzRDDQor5rGNID4gd8OhbjsgIzZDNEQNCivmsY4gPiBmw6BuOyAjNkM0RQ0KK+axjyA+IGTDoGk7ICM2QzRGDQor5rGQID4geMOsOyAjNkM1MA0KK+axkSA+IHTFq287ICM2QzUxDQor5rGSID4gbcOhbmc7ICM2QzUyDQor5rGTID4gccOtdTsgIzZDNTMNCivmsZQgPiBxw6w7ICM2QzU0DQor5rGVID4gc2jDoG47ICM2QzU1DQor5rGWID4gcMOgaTsgIzZDNTYNCivmsZcgPiBow6BuOyAjNkM1Nw0KK+axmCA+IHFpxIFuOyAjNkM1OA0KK+axmSA+IHfFqzsgIzZDNTkNCivmsZogPiB3xas7ICM2QzVBDQor5rGbID4geMO5bjsgIzZDNUINCivmsZwgPiBzw6w7ICM2QzVDDQor5rGdID4gcsWtOyAjNkM1RA0KK+axniA+IGfFj25nOyAjNkM1RQ0KK+axnyA+IGppxIFuZzsgIzZDNUYNCivmsaAgPiBjaMOtOyAjNkM2MA0KK+axoSA+IHfFqzsgIzZDNjENCivmsaQgPiB0xIFuZzsgIzZDNjQNCivmsaUgPiB6aMSrOyAjNkM2NQ0KK+axpiA+IGNow607ICM2QzY2DQor5rGnID4gcWnEgW47ICM2QzY3DQor5rGoID4gbcOsOyAjNkM2OA0KK+axqSA+IHnDuTsgIzZDNjkNCivmsaogPiB3xIFuZzsgIzZDNkENCivmsasgPiBxw6xuZzsgIzZDNkINCivmsawgPiBqxK1uZzsgIzZDNkMNCivmsa0gPiByw7lpOyAjNkM2RA0KK+axriA+IGrFq247ICM2QzZFDQor5rGvID4gaMOzbmc7ICM2QzZGDQor5rGwID4gdMOgaTsgIzZDNzANCivmsbEgPiBxdcSDbjsgIzZDNzENCivmsbIgPiBqw607ICM2QzcyDQor5rGzID4gYmnDoG47ICM2QzczDQor5rG0ID4gYmnDoG47ICM2Qzc0DQor5rG1ID4gZ8OgbjsgIzZDNzUNCivmsbYgPiB3w6huOyAjNkM3Ng0KK+axtyA+IHpoxY1uZzsgIzZDNzcNCivmsbggPiBmxIFuZzsgIzZDNzgNCivmsbkgPiB4xKtvbmc7ICM2Qzc5DQor5rG6ID4ganXDqTsgIzZDN0ENCivmsbsgPiBoxINuZzsgIzZDN0INCivmsbwgPiBuacWNdTsgIzZDN0MNCivmsb0gPiBxw6w7ICM2QzdEDQor5rG+ID4gZsOpbjsgIzZDN0UNCivmsb8gPiB4w7k7ICM2QzdGDQor5rKAID4geMO5OyAjNkM4MA0KK+aygSA+IHHDrG47ICM2QzgxDQor5rKCID4gecOtOyAjNkM4Mg0KK+aygyA+IHfDsjsgIzZDODMNCivmsoQgPiB5w7puOyAjNkM4NA0KK+ayhSA+IHl1w6FuOyAjNkM4NQ0KK+ayhiA+IGjDoW5nOyAjNkM4Ng0KK+ayhyA+IHnEg247ICM2Qzg3DQor5rKIID4gY2jDqW47ICM2Qzg4DQor5rKJID4gY2jDqW47ICM2Qzg5DQor5rKKID4gZMOgbjsgIzZDOEENCivmsosgPiB5w7N1OyAjNkM4Qg0KK+ayjCA+IGTDuW47ICM2QzhDDQor5rKNID4gaMO5OyAjNkM4RA0KK+ayjiA+IGjDuW87ICM2QzhFDQor5rKPID4gcWnEkzsgIzZDOEYNCivmspAgPiBtw7k7ICM2QzkwDQor5rKRID4gcsOzdTsgIzZDOTENCivmspIgPiBtw6lpOyAjNkM5Mg0KK+aykyA+IHTDoDsgIzZDOTMNCivmspQgPiBtacSDbjsgIzZDOTQNCivmspUgPiB3w7k7ICM2Qzk1DQor5rKWID4gY2jFjW5nOyAjNkM5Ng0KK+aylyA+IHRpxIFuOyAjNkM5Nw0KK+aymCA+IGLErTsgIzZDOTgNCivmspkgPiBzaMSBOyAjNkM5OQ0KK+aymiA+IHpoxK07ICM2QzlBDQor5rKbID4gcMOoaTsgIzZDOUINCivmspwgPiBww6BuOyAjNkM5Qw0KK+aynSA+IHpoxa1pOyAjNkM5RA0KK+ayniA+IHrEgTsgIzZDOUUNCivmsp8gPiBnxY11OyAjNkM5Rg0KK+ayoCA+IGzDrXU7ICM2Q0EwDQor5rKhID4gbcOpaTsgIzZDQTENCivmsqIgPiB6w6k7ICM2Q0EyDQor5rKjID4gZsSTbmc7ICM2Q0EzDQor5rKkID4gw7J1OyAjNkNBNA0KK+aypSA+IGzDrDsgIzZDQTUNCivmsqYgPiBsw7puOyAjNkNBNg0KK+aypyA+IGPEgW5nOyAjNkNBNw0KK+ayqCA+IGbDqW5nOyAjNkNBOA0KK+ayqSA+IHfDqWk7ICM2Q0E5DQor5rKqID4gaMO5OyAjNkNBQQ0KK+ayqyA+IG3DsjsgIzZDQUINCivmsqwgPiBtw6hpOyAjNkNBQw0KK+ayrSA+IHNow7k7ICM2Q0FEDQor5rKuID4gasWrOyAjNkNBRQ0KK+ayryA+IHrEg247ICM2Q0FGDQor5rKwID4gdMWrbzsgIzZDQjANCivmsrEgPiB0w7pvOyAjNkNCMQ0KK+aysiA+IHTDum87ICM2Q0IyDQor5rKzID4gaMOpOyAjNkNCMw0KK+aytCA+IGzDrDsgIzZDQjQNCivmsrUgPiBtxK07ICM2Q0I1DQor5rK2ID4gecOtOyAjNkNCNg0KK+aytyA+IGbEgTsgIzZDQjcNCivmsrggPiBmw6hpOyAjNkNCOA0KK+ayuSA+IHnDs3U7ICM2Q0I5DQor5rK6ID4gdGnDoW47ICM2Q0JBDQor5rK7ID4gemjDrDsgIzZDQkINCivmsrwgPiB6aMSDbzsgIzZDQkMNCivmsr0gPiBnxas7ICM2Q0JEDQor5rK+ID4gemjEgW47ICM2Q0JFDQor5rK/ID4gecOhbjsgIzZDQkYNCivms4AgPiBzxKs7ICM2Q0MwDQor5rOBID4ga3XDoG5nOyAjNkNDMQ0KK+azgiA+IGrErW9uZzsgIzZDQzINCivms4MgPiBqw7k7ICM2Q0MzDQor5rOEID4geGnDqDsgIzZDQzQNCivms4UgPiBxw611OyAjNkNDNQ0KK+azhiA+IHnEqzsgIzZDQzYNCivms4cgPiBqacSBOyAjNkNDNw0KK+aziCA+IHpoxY1uZzsgIzZDQzgNCivms4kgPiBxdcOhbjsgIzZDQzkNCivms4ogPiBiw7M7ICM2Q0NBDQor5rOLID4gaMO5aTsgIzZDQ0INCivms4wgPiBtw6w7ICM2Q0NDDQor5rONID4gYsSTbjsgIzZDQ0QNCivms44gPiB6aMO6bzsgIzZDQ0UNCivms48gPiBjaMO5OyAjNkNDRg0KK+azkCA+IGzDqDsgIzZDRDANCivms5EgPiB5xY91OyAjNkNEMQ0KK+azkiA+IGfFqzsgIzZDRDINCivms5MgPiBow7NuZzsgIzZDRDMNCivms5QgPiBnxIFuOyAjNkNENA0KK+azlSA+IGbEgzsgIzZDRDUNCivms5YgPiBtxINvOyAjNkNENg0KK+azlyA+IHPDrDsgIzZDRDcNCivms5ggPiBoxas7ICM2Q0Q4DQor5rOZID4gcMOtbmc7ICM2Q0Q5DQor5rOaID4gY8StOyAjNkNEQQ0KK+azmyA+IGbDoG47ICM2Q0RCDQor5rOcID4gY2jDrTsgIzZDREMNCivms50gPiBzw7k7ICM2Q0REDQor5rOeID4gbsOsbmc7ICM2Q0RFDQor5rOfID4gY2jEk25nOyAjNkNERg0KK+azoCA+IGzDrW5nOyAjNkNFMA0KK+azoSA+IHDDoG87ICM2Q0UxDQor5rOiID4gYsWNOyAjNkNFMg0KK+azoyA+IHHDrDsgIzZDRTMNCivms6QgPiBzw6w7ICM2Q0U0DQor5rOlID4gbsOtOyAjNkNFNQ0KK+azpiA+IGrDujsgIzZDRTYNCivms6cgPiB5dcOoOyAjNkNFNw0KK+azqCA+IHpow7k7ICM2Q0U4DQor5rOpID4gc2jEk25nOyAjNkNFOQ0KK+azqiA+IGzDqGk7ICM2Q0VBDQor5rOrID4geHXDoG47ICM2Q0VCDQor5rOsID4geHXDqDsgIzZDRUMNCivms60gPiBmxas7ICM2Q0VEDQor5rOuID4gcMOgbjsgIzZDRUUNCivms68gPiBtxK1uOyAjNkNFRg0KK+azsCA+IHTDoGk7ICM2Q0YwDQor5rOxID4gecSBbmc7ICM2Q0YxDQor5rOyID4gasStOyAjNkNGMg0KK+azsyA+IHnFj25nOyAjNkNGMw0KK+aztCA+IGd1w6BuOyAjNkNGNA0KK+aztSA+IGLDqG5nOyAjNkNGNQ0KK+aztiA+IHh1w6k7ICM2Q0Y2DQor5rO3ID4gbMOzbmc7ICM2Q0Y3DQor5rO4ID4gbMO6OyAjNkNGOA0KK+azuiA+IGLDszsgIzZDRkENCivms7sgPiB4acOoOyAjNkNGQg0KK+azvCA+IHDFjTsgIzZDRkMNCivms70gPiB6w6k7ICM2Q0ZEDQor5rO+ID4gasSrbmc7ICM2Q0ZFDQor5rO/ID4gecOtbjsgIzZDRkYNCivmtIAgPiB6aMWNdTsgIzZEMDANCivmtIEgPiBqw607ICM2RDAxDQor5rSCID4gecOsOyAjNkQwMg0KK+a0gyA+IGjFq2k7ICM2RDAzDQor5rSEID4gaMO6aTsgIzZEMDQNCivmtIUgPiB6xa1pOyAjNkQwNQ0KK+a0hiA+IGNow6luZzsgIzZEMDYNCivmtIcgPiB5xKtuOyAjNkQwNw0KK+a0iCA+IHfDqWk7ICM2RDA4DQor5rSJID4gaMOydTsgIzZEMDkNCivmtIogPiBqacOgbjsgIzZEMEENCivmtIsgPiB5w6FuZzsgIzZEMEINCivmtIwgPiBsacOoOyAjNkQwQw0KK+a0jSA+IHPDrDsgIzZEMEQNCivmtI4gPiBqw6w7ICM2RDBFDQor5rSPID4gw6lyOyAjNkQwRg0KK+a0kCA+IHjDrW5nOyAjNkQxMA0KK+a0kSA+IGbDujsgIzZEMTENCivmtJIgPiBzxIM7ICM2RDEyDQor5rSTID4gc8WtbzsgIzZEMTMNCivmtJQgPiB6aMStOyAjNkQxNA0KK+a0lSA+IHnEq247ICM2RDE1DQor5rSWID4gd8O6OyAjNkQxNg0KK+a0lyA+IHjErTsgIzZEMTcNCivmtJggPiBrxINvOyAjNkQxOA0KK+a0mSA+IHpoxas7ICM2RDE5DQor5rSaID4gamnDoG5nOyAjNkQxQQ0KK+a0myA+IGzDuW87ICM2RDFCDQor5rSdID4gw6BuOyAjNkQxRA0KK+a0niA+IGTDsm5nOyAjNkQxRQ0KK+a0nyA+IHnDrTsgIzZEMUYNCivmtKAgPiBtw7N1OyAjNkQyMA0KK+a0oSA+IGzElWk7ICM2RDIxDQor5rSiID4gecSrOyAjNkQyMg0KK+a0oyA+IG3ErTsgIzZEMjMNCivmtKQgPiBxdcOhbjsgIzZEMjQNCivmtKUgPiBqxKtuOyAjNkQyNQ0KK+a0piA+IG3DsjsgIzZEMjYNCivmtKcgPiB3xJVpOyAjNkQyNw0KK+a0qCA+IHhpw6FvOyAjNkQyOA0KK+a0qSA+IHhpw6g7ICM2RDI5DQor5rSqID4gaMOzbmc7ICM2RDJBDQor5rSrID4geMO5OyAjNkQyQg0KK+a0rCA+IHNow7lvOyAjNkQyQw0KK+a0rSA+IGt1xIFuZzsgIzZEMkQNCivmtK4gPiB0xIFvOyAjNkQyRQ0KK+a0ryA+IHFpw6g7ICM2RDJGDQor5rSwID4gasO5OyAjNkQzMA0KK+a0sSA+IMSVcjsgIzZEMzENCivmtLIgPiB6aMWNdTsgIzZEMzINCivmtLMgPiByw7k7ICM2RDMzDQor5rS0ID4gcMOtbmc7ICM2RDM0DQor5rS1ID4geMO6bjsgIzZEMzUNCivmtLYgPiB4xKtvbmc7ICM2RDM2DQor5rS3ID4gemjDrDsgIzZEMzcNCivmtLggPiBndcSBbmc7ICM2RDM4DQor5rS5ID4gaHXDoW47ICM2RDM5DQor5rS6ID4gbcOtbmc7ICM2RDNBDQor5rS7ID4gaMO6bzsgIzZEM0INCivmtLwgPiB3xIE7ICM2RDNDDQor5rS9ID4gcWnDoDsgIzZEM0QNCivmtL4gPiBww6BpOyAjNkQzRQ0KK+a0vyA+IHfFqzsgIzZEM0YNCivmtYAgPiBxxa07ICM2RDQwDQor5rWBID4gbMOtdTsgIzZENDENCivmtYIgPiB5w6w7ICM2RDQyDQor5rWDID4gamnDoTsgIzZENDMNCivmtYQgPiBqw6xuZzsgIzZENDQNCivmtYUgPiBxacSDbjsgIzZENDUNCivmtYYgPiBqacSBbmc7ICM2RDQ2DQor5rWHID4gamnEgW87ICM2RDQ3DQor5rWIID4gY2jDqW5nOyAjNkQ0OA0KK+a1iSA+IHNoxKs7ICM2RDQ5DQor5rWKID4gemjDum87ICM2RDRBDQor5rWLID4gY8OoOyAjNkQ0Qg0KK+a1jSA+IGt1w6BpOyAjNkQ0RA0KK+a1jiA+IGrDrDsgIzZENEUNCivmtY8gPiBsw611OyAjNkQ0Rg0KK+a1kCA+IGNoxINuOyAjNkQ1MA0KK+a1kSA+IGjDum47ICM2RDUxDQor5rWSID4gaMWtOyAjNkQ1Mg0KK+a1kyA+IG7Ds25nOyAjNkQ1Mw0KK+a1lCA+IHjDum47ICM2RDU0DQor5rWVID4gasOsbjsgIzZENTUNCivmtZYgPiBsacOoOyAjNkQ1Ng0KK+a1lyA+IHHDrXU7ICM2RDU3DQor5rWYID4gd8SVaTsgIzZENTgNCivmtZkgPiB6aMOoOyAjNkQ1OQ0KK+a1miA+IGrDuW47ICM2RDVBDQor5rWbID4gaMOgbjsgIzZENUINCivmtZwgPiBixIFuZzsgIzZENUMNCivmtZ0gPiBtw6FuZzsgIzZENUQNCivmtZ4gPiB6aMO6bzsgIzZENUUNCivmtZ8gPiB5w7N1OyAjNkQ1Rg0KK+a1oCA+IHjEqzsgIzZENjANCivmtaEgPiBiw7M7ICM2RDYxDQor5rWiID4gZMOydTsgIzZENjINCivmtaMgPiB3xINuOyAjNkQ2Mw0KK+a1pCA+IGjDs25nOyAjNkQ2NA0KK+a1pSA+IHnDrDsgIzZENjUNCivmtaYgPiBwxa07ICM2RDY2DQor5rWnID4gecStbmc7ICM2RDY3DQor5rWoID4gbMSDbjsgIzZENjgNCivmtakgPiBow6BvOyAjNkQ2OQ0KK+a1qiA+IGzDoG5nOyAjNkQ2QQ0KK+a1qyA+IGjEg247ICM2RDZCDQor5rWsID4gbMStOyAjNkQ2Qw0KK+a1rSA+IGfEk25nOyAjNkQ2RA0KK+a1riA+IGbDujsgIzZENkUNCivmta8gPiB3w7o7ICM2RDZGDQor5rWwID4gbGnDoG47ICM2RDcwDQor5rWxID4gY2jDum47ICM2RDcxDQor5rWyID4gZsOpbmc7ICM2RDcyDQor5rWzID4gecOsOyAjNkQ3Mw0KK+a1tCA+IHnDuTsgIzZENzQNCivmtbUgPiB0w7NuZzsgIzZENzUNCivmtbYgPiBsw6FvOyAjNkQ3Ng0KK+a1tyA+IGjEg2k7ICM2RDc3DQor5rW4ID4gasOsbjsgIzZENzgNCivmtbkgPiBqacOhOyAjNkQ3OQ0KK+a1uiA+IGNoxY1uZzsgIzZEN0ENCivmtbsgPiB3xJVuZzsgIzZEN0INCivmtbwgPiBtxJVpOyAjNkQ3Qw0KK+a1vSA+IHPFq2k7ICM2RDdEDQor5rW+ID4gY2jEk25nOyAjNkQ3RQ0KK+a1vyA+IHDDqGk7ICM2RDdGDQor5raAID4geGnDoG47ICM2RDgwDQor5raBID4gc2jDqG47ICM2RDgxDQor5raCID4gdMO6OyAjNkQ4Mg0KK+a2gyA+IGvDuW47ICM2RDgzDQor5raEID4gcMSrbjsgIzZEODQNCivmtoUgPiBuacOoOyAjNkQ4NQ0KK+a2hiA+IGjDoG47ICM2RDg2DQor5raHID4gasSrbmc7ICM2RDg3DQor5raIID4geGnEgW87ICM2RDg4DQor5raJID4gc2jDqDsgIzZEODkNCivmtoogPiBuacOgbjsgIzZEOEENCivmtosgPiB0xas7ICM2RDhCDQor5raMID4gecWPbmc7ICM2RDhDDQor5raNID4geGnDoG87ICM2RDhEDQor5raOID4geGnDoW47ICM2RDhFDQor5raPID4gdMStbmc7ICM2RDhGDQor5raQID4gw6k7ICM2RDkwDQor5raRID4gc8O5OyAjNkQ5MQ0KK+a2kiA+IHTFq247ICM2RDkyDQor5raTID4ganXEgW47ICM2RDkzDQor5raUID4gY8OpbjsgIzZEOTQNCivmtpUgPiB0w6w7ICM2RDk1DQor5raWID4gbMOsOyAjNkQ5Ng0KK+a2lyA+IHNow7lpOyAjNkQ5Nw0KK+a2mCA+IHPDrDsgIzZEOTgNCivmtpkgPiBsw6hpOyAjNkQ5OQ0KK+a2miA+IHNow7lpOyAjNkQ5QQ0KK+a2myA+IHTEgW87ICM2RDlCDQor5racID4gZMO6OyAjNkQ5Qw0KK+a2nSA+IGzDoG87ICM2RDlEDQor5raeID4gbMOhaTsgIzZEOUUNCivmtp8gPiBsacOhbjsgIzZEOUYNCivmtqAgPiB3w6lpOyAjNkRBMA0KK+a2oSA+IHfFjTsgIzZEQTENCivmtqIgPiB5w7puOyAjNkRBMg0KK+a2oyA+IGh1w6BuOyAjNkRBMw0KK+a2pCA+IGTDrTsgIzZEQTQNCivmtqYgPiByw7luOyAjNkRBNg0KK+a2pyA+IGppw6BuOyAjNkRBNw0KK+a2qCA+IHpoxINuZzsgIzZEQTgNCivmtqkgPiBzw6g7ICM2REE5DQor5raqID4gZsO6OyAjNkRBQQ0KK+a2qyA+IGd1w6BuOyAjNkRBQg0KK+a2rCA+IHjDrG5nOyAjNkRBQw0KK+a2rSA+IHNow7J1OyAjNkRBRA0KK+a2riA+IHNodcOgbjsgIzZEQUUNCivmtq8gPiB5w6E7ICM2REFGDQor5rawID4gY2jDuW87ICM2REIwDQor5raxID4gemjDoG5nOyAjNkRCMQ0KK+a2siA+IHnDqDsgIzZEQjINCivmtrMgPiBrxY1uZzsgIzZEQjMNCivmtrQgPiB3w7I7ICM2REI0DQor5ra1ID4gaMOhbjsgIzZEQjUNCivmtrYgPiB0xatvOyAjNkRCNg0KK+a2tyA+IGTFjW5nOyAjNkRCNw0KK+a2uCA+IGjDqTsgIzZEQjgNCivmtrkgPiB3xY07ICM2REI5DQor5ra6ID4gasWrOyAjNkRCQQ0KK+a2uyA+IGfDoG47ICM2REJCDQor5ra8ID4gbGnDoW5nOyAjNkRCQw0KK+a2vSA+IGjFq247ICM2REJEDQor5ra+ID4gdMOgOyAjNkRCRQ0KK+a2vyA+IHpow7pvOyAjNkRCRg0KK+a3gCA+IGRpw6BuOyAjNkRDMA0KK+a3gSA+IHFpw6g7ICM2REMxDQor5reCID4gZMOpOyAjNkRDMg0KK+a3gyA+IGp1w6BuOyAjNkRDMw0KK+a3hCA+IHrEqzsgIzZEQzQNCivmt4UgPiB4xKs7ICM2REM1DQor5reGID4gecOhbzsgIzZEQzYNCivmt4cgPiBxw607ICM2REM3DQor5reIID4gZ8WtOyAjNkRDOA0KK+a3iSA+IGfFrW87ICM2REM5DQor5reKID4gaMOgbjsgIzZEQ0ENCivmt4sgPiBsw61uOyAjNkRDQg0KK+a3jCA+IHTEg25nOyAjNkRDQw0KK+a3jSA+IHpoxY11OyAjNkRDRA0KK+a3jiA+IHDElW5nOyAjNkRDRQ0KK+a3jyA+IGjDoG87ICM2RENGDQor5reQID4gY2jEgW5nOyAjNkREMA0KK+a3kSA+IHNow7o7ICM2REQxDQor5reSID4gccSrOyAjNkREMg0KK+a3kyA+IGbEgW5nOyAjNkREMw0KK+a3lCA+IGNow6w7ICM2REQ0DQor5reVID4gbMO5OyAjNkRENQ0KK+a3liA+IG7DoG87ICM2REQ2DQor5reXID4gasO6OyAjNkRENw0KK+a3mCA+IHTDoW87ICM2REQ4DQor5reZID4gY8Ozbmc7ICM2REQ5DQor5reaID4gbMOoaTsgIzZEREENCivmt5sgPiB6aMOsOyAjNkREQg0KK+a3nCA+IHDDqW5nOyAjNkREQw0KK+a3nSA+IGbDqWk7ICM2REREDQor5reeID4gc8WNbmc7ICM2RERFDQor5refID4gdGnEg247ICM2RERGDQor5regID4gcMOsOyAjNkRFMA0KK+a3oSA+IGTDoG47ICM2REUxDQor5reiID4gecO5OyAjNkRFMg0KK+a3oyA+IG7DrTsgIzZERTMNCivmt6QgPiB5xas7ICM2REU0DQor5relID4gbMO5OyAjNkRFNQ0KK+a3piA+IGfDoG47ICM2REU2DQor5renID4gbcOsOyAjNkRFNw0KK+a3qCA+IGrDrG5nOyAjNkRFOA0KK+a3qSA+IGzDrW5nOyAjNkRFOQ0KK+a3qiA+IGzDum47ICM2REVBDQor5rerID4gecOtbjsgIzZERUINCivmt6wgPiBjw7lpOyAjNkRFQw0KK+a3rSA+IHHDujsgIzZERUQNCivmt64gPiBodcOhaTsgIzZERUUNCivmt68gPiB5w7k7ICM2REVGDQor5rewID4gbmnDoG47ICM2REYwDQor5rexID4gc2jEk247ICM2REYxDQor5reyID4gcGnDoW87ICM2REYyDQor5rezID4gY2jDum47ICM2REYzDQor5re0ID4gd8OgOyAjNkRGNA0KK+a3tSA+IHl1xIFuOyAjNkRGNQ0KK+a3tiA+IGzDoWk7ICM2REY2DQor5re3ID4gaMWtbjsgIzZERjcNCivmt7ggPiBxxKtuZzsgIzZERjgNCivmt7kgPiB5xIFuOyAjNkRGOQ0KK+a3uiA+IHFpxINuOyAjNkRGQQ0KK+a3uyA+IHRpxIFuOyAjNkRGQg0KK+a3vCA+IG1pxINvOyAjNkRGQw0KK+a3vSA+IHpoxK07ICM2REZEDQor5re+ID4gecStbjsgIzZERkUNCivmt78gPiBtw6w7ICM2REZGDQor5riAID4gYsSTbjsgIzZFMDANCivmuIEgPiB5dcSBbjsgIzZFMDENCivmuIIgPiB3w6huOyAjNkUwMg0KK+a4gyA+IHLDqDsgIzZFMDMNCivmuIQgPiBmxJNpOyAjNkUwNA0KK+a4hSA+IHHEq25nOyAjNkUwNQ0KK+a4hiA+IHl1xIFuOyAjNkUwNg0KK+a4hyA+IGvElTsgIzZFMDcNCivmuIggPiBqw6w7ICM2RTA4DQor5riJID4gc2jDqDsgIzZFMDkNCivmuIogPiB5dcSBbjsgIzZFMEENCivmuIwgPiBsw7k7ICM2RTBDDQor5riNID4gesOsOyAjNkUwRA0KK+a4jiA+IGTDujsgIzZFMEUNCivmuJAgPiBqacOgbjsgIzZFMTANCivmuJEgPiBtxK1uOyAjNkUxMQ0KK+a4kiA+IHDDrDsgIzZFMTINCivmuJQgPiB5w7o7ICM2RTE0DQor5riVID4geXXEgW47ICM2RTE1DQor5riWID4gc2jElW47ICM2RTE2DQor5riXID4gc2jDqG47ICM2RTE3DQor5riYID4gcsOzdTsgIzZFMTgNCivmuJkgPiBodcOgbjsgIzZFMTkNCivmuJogPiB6aMWtOyAjNkUxQQ0KK+a4myA+IGppxINuOyAjNkUxQg0KK+a4nCA+IG51xINuOyAjNkUxQw0KK+a4nSA+IHnDujsgIzZFMUQNCivmuJ4gPiBxw611OyAjNkUxRQ0KK+a4nyA+IHTDrW5nOyAjNkUxRg0KK+a4oCA+IHHDujsgIzZFMjANCivmuKEgPiBkw7k7ICM2RTIxDQor5riiID4gZsOpbmc7ICM2RTIyDQor5rijID4gemjEgTsgIzZFMjMNCivmuKQgPiBiw7M7ICM2RTI0DQor5rilID4gd8OyOyAjNkUyNQ0KK+a4piA+IHfFjTsgIzZFMjYNCivmuKcgPiBkw6w7ICM2RTI3DQor5rioID4gd8STaTsgIzZFMjgNCivmuKkgPiB3xJNuOyAjNkUyOQ0KK+a4qiA+IHLDujsgIzZFMkENCivmuKsgPiB4acOoOyAjNkUyQg0KK+a4rCA+IGPDqDsgIzZFMkMNCivmuK0gPiB3w6hpOyAjNkUyRA0KK+a4riA+IGfEkzsgIzZFMkUNCivmuK8gPiBnxINuZzsgIzZFMkYNCivmuLAgPiB5xINuOyAjNkUzMA0KK+a4sSA+IGjDs25nOyAjNkUzMQ0KK+a4siA+IHh1w6BuOyAjNkUzMg0KK+a4syA+IG3ErTsgIzZFMzMNCivmuLQgPiBrxJU7ICM2RTM0DQor5ri1ID4gbcOhbzsgIzZFMzUNCivmuLYgPiB5xKtuZzsgIzZFMzYNCivmuLcgPiB5xINuOyAjNkUzNw0KK+a4uCA+IHnDs3U7ICM2RTM4DQor5ri5ID4gaMWNbmc7ICM2RTM5DQor5ri6ID4gbWnEg287ICM2RTNBDQor5ri7ID4geMStbmc7ICM2RTNCDQor5ri8ID4gbcSVaTsgIzZFM0MNCivmuL0gPiB6xIFpOyAjNkUzRA0KK+a4viA+IGjDum47ICM2RTNFDQor5ri/ID4gbsOgaTsgIzZFM0YNCivmuYAgPiBrw7ppOyAjNkU0MA0KK+a5gSA+IHNow607ICM2RTQxDQor5rmCID4gw6g7ICM2RTQyDQor5rmDID4gcMOgaTsgIzZFNDMNCivmuYQgPiBtw6lpOyAjNkU0NA0KK+a5hSA+IGxpw6BuOyAjNkU0NQ0KK+a5hiA+IHHDrDsgIzZFNDYNCivmuYcgPiBxw6w7ICM2RTQ3DQor5rmIID4gbcOpaTsgIzZFNDgNCivmuYkgPiB0acOhbjsgIzZFNDkNCivmuYogPiBjw7J1OyAjNkU0QQ0KK+a5iyA+IHfDqWk7ICM2RTRCDQor5rmMID4gY8SBbjsgIzZFNEMNCivmuY0gPiB0dcSBbjsgIzZFNEQNCivmuY4gPiBtacSDbjsgIzZFNEUNCivmuY8gPiBow7lpOyAjNkU0Rg0KK+a5kCA+IG3DsjsgIzZFNTANCivmuZEgPiB4xa07ICM2RTUxDQor5rmSID4gasOtOyAjNkU1Mg0KK+a5kyA+IHDDqW47ICM2RTUzDQor5rmUID4gamnEgW47ICM2RTU0DQor5rmVID4gamnEg247ICM2RTU1DQor5rmWID4gaMO6OyAjNkU1Ng0KK+a5lyA+IGbDqG5nOyAjNkU1Nw0KK+a5mCA+IHhpxIFuZzsgIzZFNTgNCivmuZkgPiB5w6w7ICM2RTU5DQor5rmaID4gecOsbjsgIzZFNUENCivmuZsgPiB6aMOgbjsgIzZFNUINCivmuZwgPiBzaMOtOyAjNkU1Qw0KK+a5nSA+IGppxJM7ICM2RTVEDQor5rmeID4gY2jDqW5nOyAjNkU1RQ0KK+a5nyA+IGh1w6FuZzsgIzZFNUYNCivmuaAgPiB0w6BuOyAjNkU2MA0KK+a5oSA+IHnDujsgIzZFNjENCivmuaIgPiBiw6w7ICM2RTYyDQor5rmjID4gbcStbjsgIzZFNjMNCivmuaQgPiBzaMSrOyAjNkU2NA0KK+a5pSA+IHTDujsgIzZFNjUNCivmuaYgPiBzaMSTbmc7ICM2RTY2DQor5rmnID4gecWPbmc7ICM2RTY3DQor5rmoID4gccO5OyAjNkU2OA0KK+a5qSA+IHpow7JuZzsgIzZFNjkNCivmuaogPiBzdcOoaTsgIzZFNkENCivmuasgPiBqxKt1OyAjNkU2Qg0KK+a5rCA+IGppxINvOyAjNkU2Qw0KK+a5rSA+IHFpw7N1OyAjNkU2RA0KK+a5riA+IHnEq247ICM2RTZFDQor5rmvID4gdMSBbmc7ICM2RTZGDQor5rmwID4gbMOzbmc7ICM2RTcwDQor5rmxID4gaMO5bzsgIzZFNzENCivmubIgPiB5dcOhbjsgIzZFNzINCivmubMgPiBuxINuOyAjNkU3Mw0KK+a5tCA+IGLDoG47ICM2RTc0DQor5rm1ID4gecWPdTsgIzZFNzUNCivmubYgPiBxdcOhbjsgIzZFNzYNCivmubcgPiBjaMO6aTsgIzZFNzcNCivmubggPiBsacOgbmc7ICM2RTc4DQor5rm5ID4gY2jDoW47ICM2RTc5DQor5rm6ID4gecOhbjsgIzZFN0ENCivmubsgPiBjaMO6bjsgIzZFN0INCivmubwgPiBuacOoOyAjNkU3Qw0KK+a5vSA+IHrEqzsgIzZFN0QNCivmub4gPiB3xIFuOyAjNkU3RQ0KK+a5vyA+IHNoxKs7ICM2RTdGDQor5rqAID4gbcSDbjsgIzZFODANCivmuoEgPiB5w61uZzsgIzZFODENCivmuoMgPiBrw7lpOyAjNkU4Mw0KK+a6hSA+IGppw6BuOyAjNkU4NQ0KK+a6hiA+IHjDuTsgIzZFODYNCivmuocgPiBsx5o7ICM2RTg3DQor5rqIID4gZ8WraTsgIzZFODgNCivmuokgPiBnw6BpOyAjNkU4OQ0KK+a6jCA+IHDFjTsgIzZFOEMNCivmuo0gPiBqw6xuOyAjNkU4RA0KK+a6jiA+IGfDuWk7ICM2RThFDQor5rqPID4gdMOhbmc7ICM2RThGDQor5rqQID4geXXDoW47ICM2RTkwDQor5rqRID4gc8WtbzsgIzZFOTENCivmupIgPiB5dcOhbjsgIzZFOTINCivmupMgPiBsacOhbjsgIzZFOTMNCivmupQgPiB5xINvOyAjNkU5NA0KK+a6lSA+IG3DqG5nOyAjNkU5NQ0KK+a6liA+IHpoxa1uOyAjNkU5Ng0KK+a6lyA+IHNow6luZzsgIzZFOTcNCivmupggPiBrw6g7ICM2RTk4DQor5rqZID4gdMOgaTsgIzZFOTkNCivmupogPiBkw6E7ICM2RTlBDQor5rqbID4gd8SBOyAjNkU5Qg0KK+a6nCA+IGzEq3U7ICM2RTlDDQor5rqdID4gZ8WNdTsgIzZFOUQNCivmup4gPiBzxIFvOyAjNkU5RQ0KK+a6nyA+IG3DrW5nOyAjNkU5Rg0KK+a6oCA+IHpow6A7ICM2RUEwDQor5rqhID4gc2jDrTsgIzZFQTENCivmuqIgPiB5w6w7ICM2RUEyDQor5rqjID4gbMO6bjsgIzZFQTMNCivmuqQgPiBtxIM7ICM2RUE0DQor5rqlID4gcMWtOyAjNkVBNQ0KK+a6piA+IHfDqWk7ICM2RUE2DQor5rqnID4gbMOsOyAjNkVBNw0KK+a6qCA+IGPDoWk7ICM2RUE4DQor5rqpID4gd8O5OyAjNkVBOQ0KK+a6qiA+IHjEqzsgIzZFQUENCivmuqsgPiB3xJNuOyAjNkVBQg0KK+a6rCA+IHFpxIFuZzsgIzZFQUMNCivmuq0gPiB6w6k7ICM2RUFEDQor5rquID4gc2jEqzsgIzZFQUUNCivmuq8gPiBzw7k7ICM2RUFGDQor5rqwID4gecSrOyAjNkVCMA0KK+a6sSA+IHpoxJNuOyAjNkVCMQ0KK+a6siA+IHPFjXU7ICM2RUIyDQor5rqzID4gecO6bjsgIzZFQjMNCivmurQgPiB4w6x1OyAjNkVCNA0KK+a6tSA+IHnEq247ICM2RUI1DQor5rq2ID4gcsOzbmc7ICM2RUI2DQor5rq3ID4gaMO5bjsgIzZFQjcNCivmurggPiBzw7k7ICM2RUI4DQor5rq5ID4gc8O5OyAjNkVCOQ0KK+a6uiA+IG7DrDsgIzZFQkENCivmursgPiB0w6A7ICM2RUJCDQor5rq8ID4gc2jEqzsgIzZFQkMNCivmur0gPiByw7k7ICM2RUJEDQor5rq+ID4gd8STaTsgIzZFQkUNCivmur8gPiBww6BuOyAjNkVCRg0KK+a7gCA+IGNow7k7ICM2RUMwDQor5ruBID4gY2jDujsgIzZFQzENCivmu4IgPiBwxIFuZzsgIzZFQzINCivmu4MgPiB3xJVuZzsgIzZFQzMNCivmu4QgPiBjxIFuZzsgIzZFQzQNCivmu4UgPiBtacOoOyAjNkVDNQ0KK+a7hiA+IGjDqTsgIzZFQzYNCivmu4cgPiBkacSBbjsgIzZFQzcNCivmu4ggPiBow6BvOyAjNkVDOA0KK+a7iSA+IGh1xINuZzsgIzZFQzkNCivmu4ogPiB4w6w7ICM2RUNBDQor5ruLID4gesSrOyAjNkVDQg0KK+a7jCA+IGTDrTsgIzZFQ0MNCivmu40gPiB6aMStOyAjNkVDRA0KK+a7jiA+IHnDrW5nOyAjNkVDRQ0KK+a7jyA+IGbFrTsgIzZFQ0YNCivmu5AgPiBqacOpOyAjNkVEMA0KK+a7kSA+IGh1w6E7ICM2RUQxDQor5ruSID4gZ8STOyAjNkVEMg0KK+a7kyA+IHrErTsgIzZFRDMNCivmu5QgPiB0xIFvOyAjNkVENA0KK+a7lSA+IHTDqW5nOyAjNkVENQ0KK+a7liA+IHPFq2k7ICM2RUQ2DQor5ruXID4gYsStOyAjNkVENw0KK+a7mCA+IGppw6BvOyAjNkVEOA0KK+a7mSA+IGjDuWk7ICM2RUQ5DQor5ruaID4gZ8WtbjsgIzZFREENCivmu5sgPiB5w61uOyAjNkVEQg0KK+a7nCA+IGfEgW87ICM2RURDDQor5rudID4gbMOzbmc7ICM2RUREDQor5rueID4gemjDrDsgIzZFREUNCivmu58gPiB5w6BuOyAjNkVERg0KK+a7oCA+IHNow6g7ICM2RUUwDQor5ruhID4gbcSDbjsgIzZFRTENCivmu6IgPiB5w6xuZzsgIzZFRTINCivmu6MgPiBjaMO6bjsgIzZFRTMNCivmu6QgPiBsx5w7ICM2RUU0DQor5rulID4gbMOgbjsgIzZFRTUNCivmu6YgPiBsdcOhbjsgIzZFRTYNCivmu6ggPiBixKtuOyAjNkVFOA0KK+a7qSA+IHTEgW47ICM2RUU5DQor5ruqID4gecO5OyAjNkVFQQ0KK+a7qyA+IHPFj3U7ICM2RUVCDQor5rusID4gaMO5OyAjNkVFQw0KK+a7rSA+IGLDrDsgIzZFRUQNCivmu64gPiBiacSBbzsgIzZFRUUNCivmu68gPiB6aMOsOyAjNkVFRg0KK+a7sCA+IGppxINuZzsgIzZFRjANCivmu7EgPiBrw7J1OyAjNkVGMQ0KK+a7siA+IHNow6huOyAjNkVGMg0KK+a7syA+IHNoxIFuZzsgIzZFRjMNCivmu7QgPiBkxKs7ICM2RUY0DQor5ru1ID4gbcOsOyAjNkVGNQ0KK+a7tiA+IMOhbzsgIzZFRjYNCivmu7cgPiBsxa07ICM2RUY3DQor5ru4ID4gaMWtOyAjNkVGOA0KK+a7uSA+IGjFqzsgIzZFRjkNCivmu7ogPiB5w7N1OyAjNkVGQQ0KK+a7uyA+IGNoxINuOyAjNkVGQg0KK+a7vCA+IGbDoG47ICM2RUZDDQor5ru9ID4gecOzbmc7ICM2RUZEDQor5ru+ID4gZ8WtbjsgIzZFRkUNCivmu78gPiBtxINuOyAjNkVGRg0KK+a8gCA+IHHDrG5nOyAjNkYwMA0KK+a8gSA+IHnDujsgIzZGMDENCivmvIIgPiBwacSBbzsgIzZGMDINCivmvIMgPiBqw607ICM2RjAzDQor5ryEID4gecOhOyAjNkYwNA0KK+a8hSA+IGppxINvOyAjNkYwNQ0KK+a8hiA+IHHEqzsgIzZGMDYNCivmvIcgPiB4xK07ICM2RjA3DQor5ryIID4gasOsOyAjNkYwOA0KK+a8iSA+IGzDuTsgIzZGMDkNCivmvIogPiBsx5o7ICM2RjBBDQor5ryLID4gbMOzbmc7ICM2RjBCDQor5ryMID4gasStbjsgIzZGMEMNCivmvI0gPiBnw7pvOyAjNkYwRA0KK+a8jiA+IGPDs25nOyAjNkYwRQ0KK+a8jyA+IGzDsnU7ICM2RjBGDQor5ryQID4gemjDrTsgIzZGMTANCivmvJEgPiBnw6BpOyAjNkYxMQ0KK+a8kiA+IHFpw6FuZzsgIzZGMTINCivmvJMgPiBsw607ICM2RjEzDQor5ryUID4gecSDbjsgIzZGMTQNCivmvJUgPiBjw6FvOyAjNkYxNQ0KK+a8liA+IGppw6BvOyAjNkYxNg0KK+a8lyA+IGPFjW5nOyAjNkYxNw0KK+a8mCA+IHHDum47ICM2RjE4DQor5ryZID4gdHXDoW47ICM2RjE5DQor5ryaID4gw7J1OyAjNkYxQQ0KK+a8myA+IHTDqW5nOyAjNkYxQg0KK+a8nCA+IHnElTsgIzZGMUMNCivmvJ0gPiB4w607ICM2RjFEDQor5ryeID4gbcOsOyAjNkYxRQ0KK+a8nyA+IHTDoW5nOyAjNkYxRg0KK+a8oCA+IG3DsjsgIzZGMjANCivmvKEgPiBzaMSBbmc7ICM2RjIxDQor5ryiID4gaMOgbjsgIzZGMjINCivmvKMgPiBsacOhbjsgIzZGMjMNCivmvKQgPiBsxINuOyAjNkYyNA0KK+a8pSA+IHfEgTsgIzZGMjUNCivmvKYgPiBsw607ICM2RjI2DQor5rynID4gcWnDoW47ICM2RjI3DQor5ryoID4gZsOpbmc7ICM2RjI4DQor5rypID4geHXDoW47ICM2RjI5DQor5ryqID4gecSrOyAjNkYyQQ0KK+a8qyA+IG3DoG47ICM2RjJCDQor5rysID4gesOsOyAjNkYyQw0KK+a8rSA+IG3Eg25nOyAjNkYyRA0KK+a8riA+IGvEgW5nOyAjNkYyRQ0KK+a8ryA+IGzElWk7ICM2RjJGDQor5rywID4gcMSTbmc7ICM2RjMwDQor5ryxID4gc2jDuTsgIzZGMzENCivmvLIgPiB6aMSDbmc7ICM2RjMyDQor5ryzID4gemjEgW5nOyAjNkYzMw0KK+a8tCA+IGNow7NuZzsgIzZGMzQNCivmvLUgPiB4w7k7ICM2RjM1DQor5ry2ID4gaHXDoG47ICM2RjM2DQor5ry3ID4ga8O5bzsgIzZGMzcNCivmvLggPiBqacOgbjsgIzZGMzgNCivmvLkgPiB5xIFuOyAjNkYzOQ0KK+a8uiA+IGNodcSDbmc7ICM2RjNBDQor5ry7ID4gbGnDoW87ICM2RjNCDQor5ry8ID4gY8WtaTsgIzZGM0MNCivmvL0gPiB0w607ICM2RjNEDQor5ry+ID4gecOgbmc7ICM2RjNFDQor5ry/ID4gamnEgW5nOyAjNkYzRg0KK+a9gCA+IGPDs25nOyAjNkY0MA0KK+a9gSA+IHnErW5nOyAjNkY0MQ0KK+a9giA+IGjDs25nOyAjNkY0Mg0KK+a9gyA+IHjDum47ICM2RjQzDQor5r2EID4gc2jDuTsgIzZGNDQNCivmvYUgPiBndcOgbjsgIzZGNDUNCivmvYYgPiB5w61uZzsgIzZGNDYNCivmvYcgPiB4acSBbzsgIzZGNDcNCivmvYogPiB4w7k7ICM2RjRBDQor5r2LID4gbGnDoG47ICM2RjRCDQor5r2MID4gemjDrDsgIzZGNEMNCivmvY0gPiB3w6lpOyAjNkY0RA0KK+a9jiA+IHDDrDsgIzZGNEUNCivmvY8gPiBqdcOpOyAjNkY0Rg0KK+a9kCA+IGppw6BvOyAjNkY1MA0KK+a9kSA+IHDFjTsgIzZGNTENCivmvZIgPiBkw6BuZzsgIzZGNTINCivmvZMgPiBow7lpOyAjNkY1Mw0KK+a9lCA+IGppw6k7ICM2RjU0DQor5r2VID4gd8WtOyAjNkY1NQ0KK+a9liA+IHDDoTsgIzZGNTYNCivmvZcgPiBqw607ICM2RjU3DQor5r2YID4gcMSBbjsgIzZGNTgNCivmvZkgPiBnw7ppOyAjNkY1OQ0KK+a9miA+IHhpxIFvOyAjNkY1QQ0KK+a9myA+IHFpw6FuOyAjNkY1Qg0KK+a9nCA+IHFpw6FuOyAjNkY1Qw0KK+a9nSA+IHjEqzsgIzZGNUQNCivmvZ4gPiBsw7k7ICM2RjVFDQor5r2fID4geMOsOyAjNkY1Rg0KK+a9oCA+IHh1w6BuOyAjNkY2MA0KK+a9oSA+IGTDuW47ICM2RjYxDQor5r2iID4gaHXDoW5nOyAjNkY2Mg0KK+a9oyA+IG3ErW47ICM2RjYzDQor5r2kID4gcsO5bjsgIzZGNjQNCivmvaUgPiBzw7k7ICM2RjY1DQor5r2mID4gbGnDoW87ICM2RjY2DQor5r2nID4gemjEk247ICM2RjY3DQor5r2oID4gemjFjW5nOyAjNkY2OA0KK+a9qSA+IHnDrDsgIzZGNjkNCivmvaogPiBkw607ICM2RjZBDQor5r2rID4gd8SBbjsgIzZGNkINCivmvawgPiBkw6BuOyAjNkY2Qw0KK+a9rSA+IHTDoW47ICM2RjZEDQor5r2uID4gY2jDoW87ICM2RjZFDQor5r2vID4geMO6bjsgIzZGNkYNCivmvbAgPiBrw7lpOyAjNkY3MA0KK+a9sSA+IHlpZTsgIzZGNzENCivmvbIgPiBzaMOgbzsgIzZGNzINCivmvbMgPiB0w7o7ICM2RjczDQor5r20ID4gemjFqzsgIzZGNzQNCivmvbUgPiBzw6BuOyAjNkY3NQ0KK+a9tiA+IGjEk2k7ICM2Rjc2DQor5r23ID4gYsStOyAjNkY3Nw0KK+a9uCA+IHNoxIFuOyAjNkY3OA0KK+a9uSA+IGNow6FuOyAjNkY3OQ0KK+a9uiA+IGNow6FuOyAjNkY3QQ0KK+a9uyA+IHNoxa07ICM2RjdCDQor5r28ID4gdMOzbmc7ICM2RjdDDQor5r29ID4gcMWtOyAjNkY3RA0KK+a9viA+IGzDrW47ICM2RjdFDQor5r2/ID4gd8OpaTsgIzZGN0YNCivmvoAgPiBzw6g7ICM2RjgwDQor5r6BID4gc8OoOyAjNkY4MQ0KK+a+giA+IGNow6luZzsgIzZGODINCivmvoMgPiBqw6xvbmc7ICM2RjgzDQor5r6EID4gY2jDqW5nOyAjNkY4NA0KK+a+hSA+IGh1w6A7ICM2Rjg1DQor5r6GID4gamnEgW87ICM2Rjg2DQor5r6HID4gbMOgbzsgIzZGODcNCivmvoggPiBjaMOoOyAjNkY4OA0KK+a+iSA+IGfEg247ICM2Rjg5DQor5r6KID4gY8WrbjsgIzZGOEENCivmvosgPiBow6huZzsgIzZGOEINCivmvowgPiBzxKs7ICM2RjhDDQor5r6NID4gc2jDuTsgIzZGOEQNCivmvo4gPiBww6luZzsgIzZGOEUNCivmvo8gPiBow6BuOyAjNkY4Rg0KK+a+kCA+IHnDum47ICM2RjkwDQor5r6RID4gbMOsdTsgIzZGOTENCivmvpIgPiBow7JuZzsgIzZGOTINCivmvpMgPiBmw7o7ICM2RjkzDQor5r6UID4gaMOgbzsgIzZGOTQNCivmvpUgPiBow6k7ICM2Rjk1DQor5r6WID4geGnEgW47ICM2Rjk2DQor5r6XID4gamnDoG47ICM2Rjk3DQor5r6YID4gc2jEgW47ICM2Rjk4DQor5r6ZID4geMOsOyAjNkY5OQ0KK+a+nCA+IGzDoW47ICM2RjlDDQor5r6eID4gecO6OyAjNkY5RQ0KK+a+nyA+IGzErW47ICM2RjlGDQor5r6gID4gbcStbjsgIzZGQTANCivmvqEgPiB6xINvOyAjNkZBMQ0KK+a+oiA+IGTEgW5nOyAjNkZBMg0KK+a+oyA+IHfEg247ICM2RkEzDQor5r6kID4gesOpOyAjNkZBNA0KK+a+pSA+IHhpw6g7ICM2RkE1DQor5r6mID4gecO5OyAjNkZBNg0KK+a+pyA+IGzErTsgIzZGQTcNCivmvqggPiBzaMOsOyAjNkZBOA0KK+a+qSA+IHh1w6k7ICM2RkE5DQor5r6qID4gbMOtbmc7ICM2RkFBDQor5r6rID4gbcOgbjsgIzZGQUINCivmvqwgPiB6xKs7ICM2RkFDDQor5r6tID4gecWNbmc7ICM2RkFEDQor5r6uID4ga3XDoGk7ICM2RkFFDQor5r6vID4gY8OgbjsgIzZGQUYNCivmvrAgPiBsacOgbjsgIzZGQjANCivmvrEgPiBkacOgbjsgIzZGQjENCivmvrIgPiB5w6g7ICM2RkIyDQor5r6zID4gw6BvOyAjNkZCMw0KK+a+tCA+IGh1w6FuOyAjNkZCNA0KK+a+tSA+IHpoxJNuOyAjNkZCNQ0KK+a+tiA+IGNow6FuOyAjNkZCNg0KK+a+tyA+IG3DoG47ICM2RkI3DQor5r64ID4gZMSDbjsgIzZGQjgNCivmvrkgPiBkw6BuOyAjNkZCOQ0KK+a+uiA+IHnDrDsgIzZGQkENCivmvrsgPiBzw7lpOyAjNkZCQg0KK+a+vCA+IHDDrDsgIzZGQkMNCivmvr0gPiBqw7k7ICM2RkJEDQor5r6+ID4gdMOgOyAjNkZCRQ0KK+a+vyA+IHHDrW47ICM2RkJGDQor5r+AID4gasSrOyAjNkZDMA0KK+a/gSA+IHpow7pvOyAjNkZDMQ0KK+a/giA+IGxpw6FuOyAjNkZDMg0KK+a/gyA+IG7Ds25nOyAjNkZDMw0KK+a/hCA+IGfFq287ICM2RkM0DQor5r+FID4gasOsbjsgIzZGQzUNCivmv4YgPiBmw6luOyAjNkZDNg0KK+a/hyA+IHPDqDsgIzZGQzcNCivmv4ggPiBqw607ICM2RkM4DQor5r+JID4gc8WraTsgIzZGQzkNCivmv4ogPiBow7lpOyAjNkZDQQ0KK+a/iyA+IGNoxa07ICM2RkNCDQor5r+MID4gdMOgOyAjNkZDQw0KK+a/jSA+IHPFjW5nOyAjNkZDRA0KK+a/jiA+IGTErW5nOyAjNkZDRQ0KK+a/kCA+IHpoxa07ICM2RkQwDQor5r+RID4gbMOgaTsgIzZGRDENCivmv5IgPiBixKtuOyAjNkZEMg0KK+a/kyA+IGxpw6FuOyAjNkZEMw0KK+a/lCA+IG3ErTsgIzZGRDQNCivmv5UgPiBzaMSrOyAjNkZENQ0KK+a/liA+IHNow7k7ICM2RkQ2DQor5r+XID4gbcOsOyAjNkZENw0KK+a/mCA+IG7DrG5nOyAjNkZEOA0KK+a/mSA+IHnDrW5nOyAjNkZEOQ0KK+a/miA+IHnDrW5nOyAjNkZEQQ0KK+a/myA+IG3DqW5nOyAjNkZEQg0KK+a/nCA+IGrDrG47ICM2RkRDDQor5r+dID4gccOtOyAjNkZERA0KK+a/niA+IHDDrDsgIzZGREUNCivmv58gPiBqw6w7ICM2RkRGDQor5r+gID4gaMOhbzsgIzZGRTANCivmv6EgPiByw7o7ICM2RkUxDQor5r+iID4gesWtaTsgIzZGRTINCivmv6MgPiB3w7I7ICM2RkUzDQor5r+kID4gdMSBbzsgIzZGRTQNCivmv6UgPiB5w6xuOyAjNkZFNQ0KK+a/piA+IHnErW47ICM2RkU2DQor5r+nID4gZMO5aTsgIzZGRTcNCivmv6ggPiBjw607ICM2RkU4DQor5r+pID4gaMO5bzsgIzZGRTkNCivmv6ogPiBqw6xuZzsgIzZGRUENCivmv6sgPiBsw6BuOyAjNkZFQg0KK+a/rCA+IGrDuW47ICM2RkVDDQor5r+tID4gw6BpOyAjNkZFRA0KK+a/riA+IHDFqzsgIzZGRUUNCivmv68gPiB6aMO6bzsgIzZGRUYNCivmv7AgPiB3w6lpOyAjNkZGMA0KK+a/sSA+IGLEq247ICM2RkYxDQor5r+yID4gZ8WtOyAjNkZGMg0KK+a/syA+IHFpw6FuOyAjNkZGMw0KK+a/tCA+IHjDrW5nOyAjNkZGNA0KK+a/tiA+IGvDuW87ICM2RkY2DQor5r+3ID4gZsOoaTsgIzZGRjcNCivmv7ogPiBqacOgbjsgIzZGRkENCivmv7sgPiB3xJVpOyAjNkZGQg0KK+a/vCA+IGzDuW87ICM2RkZDDQor5r+9ID4gesOgbjsgIzZGRkQNCivmv74gPiBsx5w7ICM2RkZFDQor5r+/ID4gbMOsOyAjNkZGRg0KK+eAgCA+IHnFjXU7ICM3MDAwDQor54CBID4gecOgbmc7ICM3MDAxDQor54CCID4gbMWtOyAjNzAwMg0KK+eAgyA+IHPDrDsgIzcwMDMNCivngIQgPiBqacOpOyAjNzAwNA0KK+eAhSA+IHnDrG5nOyAjNzAwNQ0KK+eAhiA+IGTDujsgIzcwMDYNCivngIcgPiB3xINuZzsgIzcwMDcNCivngIggPiBoxatpOyAjNzAwOA0KK+eAiSA+IHhpw6g7ICM3MDA5DQor54CKID4gcMOhbjsgIzcwMEENCivngIsgPiBzaMSVbjsgIzcwMEINCivngIwgPiBiacSBbzsgIzcwMEMNCivngI0gPiBjaMOhbjsgIzcwMEQNCivngI4gPiBtw7I7ICM3MDBFDQor54CPID4gbMOtdTsgIzcwMEYNCivngJAgPiBqacSBbjsgIzcwMTANCivngJEgPiBww7k7ICM3MDExDQor54CSID4gc8OoOyAjNzAxMg0KK+eAkyA+IGNow6luZzsgIzcwMTMNCivngJQgPiBnxa07ICM3MDE0DQor54CVID4gYsSrbjsgIzcwMTUNCivngJYgPiBow7lvOyAjNzAxNg0KK+eAlyA+IHhpw6BuOyAjNzAxNw0KK+eAmCA+IGzDujsgIzcwMTgNCivngJkgPiBxxKtuOyAjNzAxOQ0KK+eAmiA+IGjDoG47ICM3MDFBDQor54CbID4gecOtbmc7ICM3MDFCDQor54CcID4gecWNbmc7ICM3MDFDDQor54CdID4gbMOsOyAjNzAxRA0KK+eAniA+IGrDrG5nOyAjNzAxRQ0KK+eAnyA+IHhpxIFvOyAjNzAxRg0KK+eAoCA+IHnDrW5nOyAjNzAyMA0KK+eAoSA+IHPFrWk7ICM3MDIxDQor54CiID4gd8OpaTsgIzcwMjINCivngKMgPiB4acOoOyAjNzAyMw0KK+eApCA+IGh1w6FpOyAjNzAyNA0KK+eApSA+IGjDoG87ICM3MDI1DQor54CmID4gemjFqzsgIzcwMjYNCivngKcgPiBsw7NuZzsgIzcwMjcNCivngKggPiBsw6BpOyAjNzAyOA0KK+eAqSA+IGTDuWk7ICM3MDI5DQor54CqID4gZsOhbjsgIzcwMkENCivngKsgPiBow7o7ICM3MDJCDQor54CsID4gbMOgaTsgIzcwMkMNCivngK8gPiB5w61uZzsgIzcwMkYNCivngLAgPiBtw607ICM3MDMwDQor54CxID4gasOsOyAjNzAzMQ0KK+eAsiA+IGxpw6BuOyAjNzAzMg0KK+eAsyA+IGppw6BuOyAjNzAzMw0KK+eAtCA+IHnErW5nOyAjNzAzNA0KK+eAtSA+IGbDqG47ICM3MDM1DQor54C2ID4gbMOtbjsgIzcwMzYNCivngLcgPiB5w6w7ICM3MDM3DQor54C4ID4gamnEgW47ICM3MDM4DQor54C5ID4geXXDqDsgIzcwMzkNCivngLogPiBjaMOhbjsgIzcwM0ENCivngLsgPiBkw6BpOyAjNzAzQg0KK+eAvCA+IHLDoW5nOyAjNzAzQw0KK+eAvSA+IGppxINuOyAjNzAzRA0KK+eAviA+IGzDoW47ICM3MDNFDQor54C/ID4gZsOhbjsgIzcwM0YNCivngYAgPiBzaHXDoG5nOyAjNzA0MA0KK+eBgSA+IHl1xIFuOyAjNzA0MQ0KK+eBgiA+IHpow7pvOyAjNzA0Mg0KK+eBgyA+IGbEk25nOyAjNzA0Mw0KK+eBhCA+IHNow6g7ICM3MDQ0DQor54GFID4gbMSVaTsgIzcwNDUNCivngYYgPiBsw6FuOyAjNzA0Ng0KK+eBhyA+IGPDs25nOyAjNzA0Nw0KK+eBiCA+IHHDujsgIzcwNDgNCivngYkgPiB5xY1uZzsgIzcwNDkNCivngYogPiBxacOhbjsgIzcwNEENCivngYsgPiBmxIM7ICM3MDRCDQor54GMID4gZ3XDoG47ICM3MDRDDQor54GNID4gcXXDqDsgIzcwNEQNCivngY4gPiB5w6BuOyAjNzA0RQ0KK+eBjyA+IGjDoG87ICM3MDRGDQor54GRID4gc8SDOyAjNzA1MQ0KK+eBkiA+IHrDoG47ICM3MDUyDQor54GTID4gbHXDoW47ICM3MDUzDQor54GUID4gecOgbjsgIzcwNTQNCivngZUgPiBsw607ICM3MDU1DQor54GWID4gbcStOyAjNzA1Ng0KK+eBlyA+IHNow6BuOyAjNzA1Nw0KK+eBmCA+IHTEgW47ICM3MDU4DQor54GZID4gZMSDbmc7ICM3MDU5DQor54GaID4gamnEg287ICM3MDVBDQor54GbID4gY2jEg247ICM3MDVCDQor54GdID4gaMOgbzsgIzcwNUQNCivngZ4gPiBiw6A7ICM3MDVFDQor54GfID4gemjDujsgIzcwNUYNCivngaAgPiBsxINuOyAjNzA2MA0KK+eBoSA+IGzDoW47ICM3MDYxDQor54GiID4gbsSDbmc7ICM3MDYyDQor54GjID4gd8SBbjsgIzcwNjMNCivngaQgPiBsdcOhbjsgIzcwNjQNCivngaUgPiB4w7puOyAjNzA2NQ0KK+eBpiA+IHhpxINuOyAjNzA2Ng0KK+eBpyA+IHnDoG47ICM3MDY3DQor54GoID4gZ8SDbjsgIzcwNjgNCivngakgPiB5w6BuOyAjNzA2OQ0KK+eBqiA+IHnDuTsgIzcwNkENCivngasgPiBoxa1vOyAjNzA2Qg0KK+eBrCA+IHPDrCcgJ2RpxINuJyAnaMWtbzsgIzcwNkMNCivnga0gPiBtacOoOyAjNzA2RA0KK+eBriA+IGd1xIFuZzsgIzcwNkUNCivnga8gPiBkxJNuZzsgIzcwNkYNCivngbAgPiBoxatpOyAjNzA3MA0KK+eBsSA+IHhpxIFvOyAjNzA3MQ0KK+eBsiA+IHhpxIFvOyAjNzA3Mg0KK+eBsyA+IGjFqzE7ICM3MDczDQor54G0ID4gaMOzbmc7ICM3MDc0DQor54G1ID4gbMOtbmc7ICM3MDc1DQor54G2ID4gesOgbzsgIzcwNzYNCivngbcgPiB6aHXDoG47ICM3MDc3DQor54G4ID4gasStdTsgIzcwNzgNCivngbkgPiB6aMOgOyAjNzA3OQ0KK+eBuiA+IHhpw6g7ICM3MDdBDQor54G7ID4gY2jDrDsgIzcwN0INCivngbwgPiB6aMO6bzsgIzcwN0MNCivngb0gPiB6xIFpOyAjNzA3RA0KK+eBviA+IHrEgWk7ICM3MDdFDQor54G/ID4gY8OgbjsgIzcwN0YNCivngoAgPiB5w6FuZzsgIzcwODANCivngoEgPiBxw6w7ICM3MDgxDQor54KCID4gemjFjW5nOyAjNzA4Mg0KK+eCgyA+IGbDqW47ICM3MDgzDQor54KEID4gbsStdTsgIzcwODQNCivngoUgPiBqxK1vbmc7ICM3MDg1DQor54KGID4gd8OpbjsgIzcwODYNCivngocgPiBww7I7ICM3MDg3DQor54KIID4gecOsOyAjNzA4OA0KK+eCiSA+IGzDujsgIzcwODkNCivngoogPiBjaMWraTsgIzcwOEENCivngosgPiBwxKs7ICM3MDhCDQor54KMID4ga8OgaTsgIzcwOEMNCivngo0gPiBww6BuOyAjNzA4RA0KK+eCjiA+IHnDoW47ICM3MDhFDQor54KPID4ga8OgaTsgIzcwOEYNCivngpAgPiBww6BuZzsgIzcwOTANCivngpEgPiBtw7k7ICM3MDkxDQor54KSID4gY2jEg287ICM3MDkyDQor54KTID4gbGnDoG87ICM3MDkzDQor54KUID4gZ8O5aTsgIzcwOTQNCivngpUgPiBrw6BuZzsgIzcwOTUNCivngpYgPiB0xatuOyAjNzA5Ng0KK+eClyA+IGd1xIFuZzsgIzcwOTcNCivngpggPiB4xKtuOyAjNzA5OA0KK+eCmSA+IHpow6w7ICM3MDk5DQor54KaID4gZ3Vhbmc7ICM3MDlBDQor54KbID4gZ3XEgW5nOyAjNzA5Qg0KK+eCnCA+IHfElWk7ICM3MDlDDQor54KdID4gcWnDoG5nOyAjNzA5RA0KK+eCnyA+IGTDoTsgIzcwOUYNCivngqAgPiB4acOhOyAjNzBBMA0KK+eCoSA+IHpoxJNuZzsgIzcwQTENCivngqIgPiB6aMO6OyAjNzBBMg0KK+eCoyA+IGvElTsgIzcwQTMNCivngqQgPiB6aMOgbzsgIzcwQTQNCivngqUgPiBmw7o7ICM3MEE1DQor54KmID4gYsOhOyAjNzBBNg0KK+eCpyA+IGTDuW87ICM3MEE3DQor54KoID4gZMO5bzsgIzcwQTgNCivngqkgPiBsw6xuZzsgIzcwQTkNCivngqogPiB6aMO6bzsgIzcwQUENCivngqsgPiB4dcOgbjsgIzcwQUINCivngqwgPiBqw7k7ICM3MEFDDQor54KtID4gdMOgbjsgIzcwQUQNCivngq4gPiBww6BvOyAjNzBBRQ0KK+eCryA+IGrErW9uZzsgIzcwQUYNCivngrAgPiBww6FvOyAjNzBCMA0KK+eCsSA+IHTDoWk7ICM3MEIxDQor54KyID4gdMOhaTsgIzcwQjINCivngrMgPiBixK1uZzsgIzcwQjMNCivngrQgPiB5xINuZzsgIzcwQjQNCivngrUgPiB0xY1uZzsgIzcwQjUNCivngrYgPiBoxIFuOyAjNzBCNg0KK+eCtyA+IHpow7k7ICM3MEI3DQor54K4ID4gemjDoDsgIzcwQjgNCivngrkgPiBkacSDbjsgIzcwQjkNCivngrogPiB3w6hpOyAjNzBCQQ0KK+eCuyA+IHNow607ICM3MEJCDQor54K8ID4gbGnDoG47ICM3MEJDDQor54K9ID4gY2jDrDsgIzcwQkQNCivngr4gPiBodcSDbmc7ICM3MEJFDQor54OAID4gaMWrOyAjNzBDMA0KK+eDgSA+IHNow7lvOyAjNzBDMQ0KK+eDgiA+IGzDoG47ICM3MEMyDQor54ODID4gasStbmc7ICM3MEMzDQor54OEID4gamnEg287ICM3MEM0DQor54OFID4geMO5OyAjNzBDNQ0KK+eDhiA+IHjDrW5nOyAjNzBDNg0KK+eDhyA+IHF1w6BuOyAjNzBDNw0KK+eDiCA+IGxpw6g7ICM3MEM4DQor54OJID4gaHXDoG47ICM3MEM5DQor54OKID4gecOhbmc7ICM3MENBDQor54OLID4geGnEgW87ICM3MENCDQor54OMID4geMSrdTsgIzcwQ0MNCivng40gPiB4acSDbjsgIzcwQ0QNCivng44gPiB5w61uOyAjNzBDRQ0KK+eDjyA+IHfFqzsgIzcwQ0YNCivng5AgPiB6aMWNdTsgIzcwRDANCivng5EgPiB5w6FvOyAjNzBEMQ0KK+eDkiA+IHNow6w7ICM3MEQyDQor54OTID4gd8STaTsgIzcwRDMNCivng5QgPiB0w7NuZzsgIzcwRDQNCivng5UgPiB4dcOoOyAjNzBENQ0KK+eDliA+IHrEgWk7ICM3MEQ2DQor54OXID4ga8OgaTsgIzcwRDcNCivng5ggPiBoxY1uZzsgIzcwRDgNCivng5kgPiBsw7lvOyAjNzBEOQ0KK+eDmiA+IHhpw6E7ICM3MERBDQor54ObID4gemjDujsgIzcwREINCivng5wgPiB4dcSDbjsgIzcwREMNCivng50gPiB6aMSTbmc7ICM3MEREDQor54OeID4gcMOyOyAjNzBERQ0KK+eDnyA+IHnEgW47ICM3MERGDQor54OgID4gaMWtaTsgIzcwRTANCivng6EgPiBndcSBbmc7ICM3MEUxDQor54OiID4gemjDqDsgIzcwRTINCivng6MgPiBoxatpOyAjNzBFMw0KK+eDpCA+IGvEg287ICM3MEU0DQor54OmID4gZsOhbjsgIzcwRTYNCivng6cgPiBzaMSBbzsgIzcwRTcNCivng6ggPiB5w6g7ICM3MEU4DQor54OpID4gaMO5aTsgIzcwRTkNCivng6sgPiB0w6BuZzsgIzcwRUINCivng6wgPiBqw6xuOyAjNzBFQw0KK+eDrSA+IHLDqDsgIzcwRUQNCivng68gPiB4xKs7ICM3MEVGDQor54OwID4gZsO6OyAjNzBGMA0KK+eDsSA+IGrErW9uZzsgIzcwRjENCivng7IgPiBjaMOoOyAjNzBGMg0KK+eDsyA+IHDFrTsgIzcwRjMNCivng7QgPiBqxK1uZzsgIzcwRjQNCivng7UgPiB6aMO6bzsgIzcwRjUNCivng7YgPiB0xK1uZzsgIzcwRjYNCivng7cgPiB3w6FuOyAjNzBGNw0KK+eDuCA+IGjEg2k7ICM3MEY4DQor54O5ID4gcMSTbmc7ICM3MEY5DQor54O6ID4gbMSDbmc7ICM3MEZBDQor54O7ID4gc2jEgW47ICM3MEZCDQor54O8ID4gaMWrOyAjNzBGQw0KK+eDvSA+IGbEk25nOyAjNzBGRA0KK+eDviA+IGNow6w7ICM3MEZFDQor54O/ID4gcsOzbmc7ICM3MEZGDQor54SAID4gaMO6OyAjNzEwMA0KK+eEgSA+IHhpOyAjNzEwMQ0KK+eEgiA+IHNow7o7ICM3MTAyDQor54SDID4gaMOoOyAjNzEwMw0KK+eEhCA+IHjFq247ICM3MTA0DQor54SFID4ga8O5OyAjNzEwNQ0KK+eEhiA+IGp1w6k7ICM3MTA2DQor54SHID4geGnEgW87ICM3MTA3DQor54SIID4geMSrOyAjNzEwOA0KK+eEiSA+IHnEgW47ICM3MTA5DQor54SKID4gaMOgbjsgIzcxMEENCivnhIsgPiB6aHXDoG5nOyAjNzEwQg0KK+eEjCA+IGrDuW47ICM3MTBDDQor54SNID4gZMOsOyAjNzEwRA0KK+eEjiA+IHhpw6g7ICM3MTBFDQor54SPID4gasOtOyAjNzEwRg0KK+eEkCA+IHfDuTsgIzcxMTANCivnhJMgPiBow6FuOyAjNzExMw0KK+eElCA+IHnDoG47ICM3MTE0DQor54SVID4gaHXDoG47ICM3MTE1DQor54SWID4gbcOobjsgIzcxMTYNCivnhJcgPiBqw7o7ICM3MTE3DQor54SYID4gY2jDs3U7ICM3MTE4DQor54SZID4gYsOoaTsgIzcxMTkNCivnhJogPiBmw6luOyAjNzExQQ0KK+eEmyA+IGzDrG47ICM3MTFCDQor54ScID4ga8WrbjsgIzcxMUMNCivnhJ0gPiBow7luOyAjNzExRA0KK+eEniA+IHTFq247ICM3MTFFDQor54SfID4geMOtOyAjNzExRg0KK+eEoCA+IGPDuWk7ICM3MTIwDQor54ShID4gd8O6OyAjNzEyMQ0KK+eEoiA+IGjFjW5nOyAjNzEyMg0KK+eEoyA+IGrDuTsgIzcxMjMNCivnhKQgPiBmxa07ICM3MTI0DQor54SlID4gd8OyOyAjNzEyNQ0KK+eEpiA+IGppxIFvOyAjNzEyNg0KK+eEpyA+IGPFjW5nOyAjNzEyNw0KK+eEqCA+IGbDqG5nOyAjNzEyOA0KK+eEqSA+IHDEq25nOyAjNzEyOQ0KK+eEqiA+IHHEq29uZzsgIzcxMkENCivnhKsgPiByw7lvOyAjNzEyQg0KK+eErCA+IHjDrTsgIzcxMkMNCivnhK0gPiBxw61vbmc7ICM3MTJEDQor54SuID4geMOsbjsgIzcxMkUNCivnhK8gPiB6aMO6bzsgIzcxMkYNCivnhLAgPiB5w6BuOyAjNzEzMA0KK+eEsSA+IHnDoG47ICM3MTMxDQor54SyID4gecOsOyAjNzEzMg0KK+eEsyA+IGp1w6k7ICM3MTMzDQor54S0ID4gecO5OyAjNzEzNA0KK+eEtSA+IGfDoG5nOyAjNzEzNQ0KK+eEtiA+IHLDoW47ICM3MTM2DQor54S3ID4gcMOtOyAjNzEzNw0KK+eEuCA+IGfFrTsgIzcxMzgNCivnhLogPiBzaMSTbmc7ICM3MTNBDQor54S7ID4gY2jDoG5nOyAjNzEzQg0KK+eEvCA+IHNoxIFvOyAjNzEzQw0KK+eFgSA+IGNow6luOyAjNzE0MQ0KK+eFgiA+IGjDqDsgIzcxNDINCivnhYMgPiBrxa1pOyAjNzE0Mw0KK+eFhCA+IHpoxY1uZzsgIzcxNDQNCivnhYUgPiBkdcOgbjsgIzcxNDUNCivnhYYgPiB4acSBOyAjNzE0Ng0KK+eFhyA+IGjFq2k7ICM3MTQ3DQor54WIID4gZsOobmc7ICM3MTQ4DQor54WJID4gbGnDoG47ICM3MTQ5DQor54WKID4geHXEgW47ICM3MTRBDQor54WLID4geMSrbmc7ICM3MTRCDQor54WMID4gaHXDoW5nOyAjNzE0Qw0KK+eFjSA+IGppxINvOyAjNzE0RA0KK+eFjiA+IGppxIFuOyAjNzE0RQ0KK+eFjyA+IGLDrDsgIzcxNEYNCivnhZAgPiB5xKtuZzsgIzcxNTANCivnhZEgPiB6aMWtOyAjNzE1MQ0KK+eFkiA+IHfElWk7ICM3MTUyDQor54WTID4gdHXEgW47ICM3MTUzDQor54WUID4gdGnDoG47ICM3MTU0DQor54WVID4geMSrOyAjNzE1NQ0KK+eFliA+IG51xINuOyAjNzE1Ng0KK+eFlyA+IG51xINuOyAjNzE1Nw0KK+eFmCA+IGNow6FuOyAjNzE1OA0KK+eFmSA+IHnEgW47ICM3MTU5DQor54WaID4gasStb25nOyAjNzE1QQ0KK+eFmyA+IGrErW9uZzsgIzcxNUINCivnhZwgPiB5w7k7ICM3MTVDDQor54WdID4gbcOoaTsgIzcxNUQNCivnhZ4gPiBzaMOgOyAjNzE1RQ0KK+eFnyA+IHfDqGk7ICM3MTVGDQor54WgID4gecOoOyAjNzE2MA0KK+eFoSA+IHjDrG47ICM3MTYxDQor54WiID4gccOtb25nOyAjNzE2Mg0KK+eFoyA+IHLFj3U7ICM3MTYzDQor54WkID4gbcOpaTsgIzcxNjQNCivnhaUgPiBodcOgbjsgIzcxNjUNCivnhaYgPiB4xa07ICM3MTY2DQor54WnID4gemjDoG87ICM3MTY3DQor54WoID4gd8STaTsgIzcxNjgNCivnhakgPiBmw6FuOyAjNzE2OQ0KK+eFqiA+IHHDrXU7ICM3MTZBDQor54WrID4gc8O5aTsgIzcxNkINCivnhawgPiB5w6FuZzsgIzcxNkMNCivnha0gPiBsacOoOyAjNzE2RA0KK+eFriA+IHpoxa07ICM3MTZFDQor54WvID4gamllOyAjNzE2Rg0KK+eFsCA+IGfDoG87ICM3MTcwDQor54WxID4gZ3XEgTsgIzcxNzENCivnhbIgPiBiw6BvOyAjNzE3Mg0KK+eFsyA+IGjDujsgIzcxNzMNCivnhbQgPiB5xatuOyAjNzE3NA0KK+eFtSA+IHhpxIE7ICM3MTc1DQor54W4ID4gYmnEgW47ICM3MTc4DQor54W5ID4gZ8OydTsgIzcxNzkNCivnhbogPiB0w7lpOyAjNzE3QQ0KK+eFuyA+IHTDoW5nOyAjNzE3Qg0KK+eFvCA+IGNoxINvOyAjNzE3Qw0KK+eFvSA+IHNoxIFuOyAjNzE3RA0KK+eFviA+IG47ICM3MTdFDQor54W/ID4gYsOzOyAjNzE3Rg0KK+eGgCA+IGh1xINuZzsgIzcxODANCivnhoEgPiB4acOpOyAjNzE4MQ0KK+eGgiA+IHjDrDsgIzcxODINCivnhoMgPiB3w7k7ICM3MTgzDQor54aEID4geMOtOyAjNzE4NA0KK+eGhSA+IHnDum47ICM3MTg1DQor54aGID4gaMOpOyAjNzE4Ng0KK+eGhyA+IGjDqDsgIzcxODcNCivnhoggPiB4xKs7ICM3MTg4DQor54aJID4gecO6bjsgIzcxODkNCivnhoogPiB4w61vbmc7ICM3MThBDQor54aLID4gbsOhaTsgIzcxOEINCivnhowgPiBzaMOgbjsgIzcxOEMNCivnho0gPiBxaW9uZzsgIzcxOEQNCivnho4gPiB5w6BvOyAjNzE4RQ0KK+eGjyA+IHjFq247ICM3MThGDQor54aQID4gbcOsOyAjNzE5MA0KK+eGkSA+IGxpw6FuOyAjNzE5MQ0KK+eGkiA+IHnDrW5nOyAjNzE5Mg0KK+eGkyA+IHfDqG47ICM3MTkzDQor54aUID4gcsOzbmc7ICM3MTk0DQor54aXID4gcWnDoG5nOyAjNzE5Nw0KK+eGmCA+IGzEq3U7ICM3MTk4DQor54aZID4geMSrOyAjNzE5OQ0KK+eGmiA+IGLDrDsgIzcxOUENCivnhpsgPiBiacSBbzsgIzcxOUINCivnhpwgPiB6xY9uZzsgIzcxOUMNCivnhp0gPiBsw7k7ICM3MTlEDQor54aeID4gamnEgW47ICM3MTlFDQor54afID4gc2jDs3U7ICM3MTlGDQor54agID4gecOsOyAjNzFBMA0KK+eGoSA+IGzDs3U7ICM3MUExDQor54aiID4gZsSTbmc7ICM3MUEyDQor54ajID4gc8WraTsgIzcxQTMNCivnhqQgPiB5w6w7ICM3MUE0DQor54alID4gdMWNbmc7ICM3MUE1DQor54amID4ganXDqTsgIzcxQTYNCivnhqcgPiB6xY1uZzsgIzcxQTcNCivnhqggPiB5w7luOyAjNzFBOA0KK+eGqSA+IGjDuTsgIzcxQTkNCivnhqogPiB5w607ICM3MUFBDQor54arID4gemjDrDsgIzcxQUINCivnhqwgPiDDoW87ICM3MUFDDQor54atID4gd8OoaTsgIzcxQUQNCivnhq4gPiBsacOhbzsgIzcxQUUNCivnhq8gPiBow6BuOyAjNzFBRg0KK+eGsCA+IMWNdTsgIzcxQjANCivnhrEgPiByw6g7ICM3MUIxDQor54ayID4gasStb25nOyAjNzFCMg0KK+eGsyA+IG3DoG47ICM3MUIzDQor54a1ID4gc2jEgW5nOyAjNzFCNQ0KK+eGtiA+IGN1w6BuOyAjNzFCNg0KK+eGtyA+IHrEk25nOyAjNzFCNw0KK+eGuCA+IGppxIFuOyAjNzFCOA0KK+eGuSA+IHjEqzsgIzcxQjkNCivnhrogPiB4xKs7ICM3MUJBDQor54a7ID4geMSrOyAjNzFCQg0KK+eGvCA+IHnDrDsgIzcxQkMNCivnhr0gPiB4acOgbzsgIzcxQkQNCivnhr4gPiBjaMOsOyAjNzFCRQ0KK+eGvyA+IGh1w6FuZzsgIzcxQkYNCivnh4AgPiBjaMSDbjsgIzcxQzANCivnh4EgPiB5w6g7ICM3MUMxDQor54eCID4gcWnDoW47ICM3MUMyDQor54eDID4gcsOhbjsgIzcxQzMNCivnh4QgPiB5w6BuOyAjNzFDNA0KK+eHhSA+IHhpw6FuOyAjNzFDNQ0KK+eHhiA+IHFpw6FvOyAjNzFDNg0KK+eHhyA+IHrDuW47ICM3MUM3DQor54eIID4gZMSTbmc7ICM3MUM4DQor54eJID4gZMO5bjsgIzcxQzkNCivnh4ogPiBzaMSTbjsgIzcxQ0ENCivnh4sgPiBqacSBbzsgIzcxQ0INCivnh4wgPiBmw6luOyAjNzFDQw0KK+eHjSA+IHPEqzsgIzcxQ0QNCivnh44gPiBsacOgbzsgIzcxQ0UNCivnh48gPiB5w7k7ICM3MUNGDQor54eQID4gbMOtbjsgIzcxRDANCivnh5EgPiB0w7NuZzsgIzcxRDENCivnh5IgPiBzaMSBbzsgIzcxRDINCivnh5MgPiBmxJNuOyAjNzFEMw0KK+eHlCA+IGbDoW47ICM3MUQ0DQor54eVID4gecOgbjsgIzcxRDUNCivnh5YgPiB4w7puOyAjNzFENg0KK+eHlyA+IGzDoG47ICM3MUQ3DQor54eYID4gbcSVaTsgIzcxRDgNCivnh5kgPiB0w6BuZzsgIzcxRDkNCivnh5ogPiB5xKs7ICM3MURBDQor54ebID4gasStbmc7ICM3MURCDQor54ecID4gbcOobjsgIzcxREMNCivnh58gPiB5w61uZzsgIzcxREYNCivnh6AgPiB5w7k7ICM3MUUwDQor54ehID4gecOsOyAjNzFFMQ0KK+eHoiA+IHh1w6k7ICM3MUUyDQor54ejID4gbMOhbjsgIzcxRTMNCivnh6QgPiB0w6BpOyAjNzFFNA0KK+eHpSA+IHrDoG87ICM3MUU1DQor54emID4gY8OgbjsgIzcxRTYNCivnh6cgPiBzw7lpOyAjNzFFNw0KK+eHqCA+IHjEqzsgIzcxRTgNCivnh6kgPiBxdcOoOyAjNzFFOQ0KK+eHqiA+IGPFjW5nOyAjNzFFQQ0KK+eHqyA+IGxpw6FuOyAjNzFFQg0KK+eHrCA+IGjFrWk7ICM3MUVDDQor54etID4gemjDujsgIzcxRUQNCivnh64gPiB4acOoOyAjNzFFRQ0KK+eHryA+IGzDrW5nOyAjNzFFRg0KK+eHsCA+IHfEk2k7ICM3MUYwDQor54exID4gecOsOyAjNzFGMQ0KK+eHsiA+IHhpw6k7ICM3MUYyDQor54ezID4gemjDoG87ICM3MUYzDQor54e0ID4gaMO5aTsgIzcxRjQNCivnh7cgPiBsw6FuOyAjNzFGNw0KK+eHuCA+IHLDujsgIzcxRjgNCivnh7kgPiB4acSDbjsgIzcxRjkNCivnh7ogPiBrxINvOyAjNzFGQQ0KK+eHuyA+IHjFq247ICM3MUZCDQor54e8ID4gasOsbjsgIzcxRkMNCivnh70gPiBjaMOzdTsgIzcxRkQNCivnh74gPiBjaMOzdTsgIzcxRkUNCivnh78gPiB5w6BvOyAjNzFGRg0KK+eIgCA+IGjDqDsgIzcyMDANCivniIEgPiBsw6BuOyAjNzIwMQ0KK+eIgiA+IGJpxIFvOyAjNzIwMg0KK+eIgyA+IHLDs25nOyAjNzIwMw0KK+eIhCA+IGzDrDsgIzcyMDQNCivniIUgPiBtw7I7ICM3MjA1DQor54iGID4gYsOgbzsgIzcyMDYNCivniIcgPiByw7lvOyAjNzIwNw0KK+eIiCA+IGzHmDsgIzcyMDgNCivniIkgPiBsw6A7ICM3MjA5DQor54iKID4gw6FvOyAjNzIwQQ0KK+eIiyA+IHjDuW47ICM3MjBCDQor54iMID4ga3XDoG5nOyAjNzIwQw0KK+eIjSA+IHNow7lvOyAjNzIwRA0KK+eIjyA+IGzDrDsgIzcyMEYNCivniJAgPiBsw7o7ICM3MjEwDQor54iRID4ganXDqTsgIzcyMTENCivniJIgPiBsacOgbzsgIzcyMTINCivniJMgPiB5w6BuOyAjNzIxMw0KK+eIlCA+IHjEqzsgIzcyMTQNCivniJUgPiB4acOoOyAjNzIxNQ0KK+eIliA+IGzDs25nOyAjNzIxNg0KK+eIlyA+IHnDqDsgIzcyMTcNCivniJkgPiByxINuZzsgIzcyMTkNCivniJogPiB5dcOoOyAjNzIxQQ0KK+eImyA+IGzDoG47ICM3MjFCDQor54icID4gY8Ozbmc7ICM3MjFDDQor54idID4ganXDqTsgIzcyMUQNCivniJ4gPiB0w7NuZzsgIzcyMUUNCivniJ8gPiBndcOgbjsgIzcyMUYNCivniKEgPiBjaMOoOyAjNzIyMQ0KK+eIoiA+IG3DrTsgIzcyMjINCivniKMgPiB0xINuZzsgIzcyMjMNCivniKQgPiBsw6BuOyAjNzIyNA0KK+eIpSA+IHpow7o7ICM3MjI1DQor54inID4gbMOtbmc7ICM3MjI3DQor54ioID4gY3XDoG47ICM3MjI4DQor54ipID4gecO5OyAjNzIyOQ0KK+eIqiA+IHpodcSDOyAjNzIyQQ0KK+eIrCA+IHDDoTsgIzcyMkMNCivniK0gPiB6aMSTbmc7ICM3MjJEDQor54iuID4gcMOhbzsgIzcyMkUNCivniK8gPiBjaMSTbmc7ICM3MjJGDQor54iwID4geXXDoW47ICM3MjMwDQor54ixID4gw6BpOyAjNzIzMQ0KK+eIsiA+IHfDqGk7ICM3MjMyDQor54i0ID4ganXDqTsgIzcyMzQNCivniLUgPiBqdcOpOyAjNzIzNQ0KK+eItiA+IGbDuTsgIzcyMzYNCivniLcgPiB5w6k7ICM3MjM3DQor54i4ID4gYsOgOyAjNzIzOA0KK+eIuSA+IGRpxJM7ICM3MjM5DQor54i6ID4gecOpOyAjNzIzQQ0KK+eIuyA+IHnDoW87ICM3MjNCDQor54i8ID4gesWtOyAjNzIzQw0KK+eIvSA+IHNodcSDbmc7ICM3MjNEDQor54i+ID4gxJVyOyAjNzIzRQ0KK+eIvyA+IHFpw6FuZzsgIzcyM0YNCivniYAgPiBjaHXDoW5nOyAjNzI0MA0KK+eJgSA+IGfEkzsgIzcyNDENCivniYIgPiB6xIFuZzsgIzcyNDINCivniYMgPiBkacOpOyAjNzI0Mw0KK+eJhCA+IHFpxIFuZzsgIzcyNDQNCivniYUgPiB5w7NuZzsgIzcyNDUNCivniYYgPiBxacOhbmc7ICM3MjQ2DQor54mHID4gcGnDoG47ICM3MjQ3DQor54mIID4gYsSDbjsgIzcyNDgNCivniYkgPiBww6BuOyAjNzI0OQ0KK+eJiiA+IHNow6FvOyAjNzI0QQ0KK+eJiyA+IGppxIFuOyAjNzI0Qg0KK+eJjCA+IHDDoWk7ICM3MjRDDQor54mNID4gZMO6OyAjNzI0RA0KK+eJjiA+IGNodcSBbmc7ICM3MjRFDQor54mPID4gdMOzdTsgIzcyNEYNCivniZAgPiB6aMOhOyAjNzI1MA0KK+eJkSA+IGJpxIFuOyAjNzI1MQ0KK+eJkiA+IGRpw6k7ICM3MjUyDQor54mTID4gYsSDbmc7ICM3MjUzDQor54mUID4gYsOzOyAjNzI1NA0KK+eJlSA+IGNodcSBbmc7ICM3MjU1DQor54mWID4gecWPdTsgIzcyNTYNCivniZggPiBkw7o7ICM3MjU4DQor54mZID4gecOhOyAjNzI1OQ0KK+eJmiA+IGNow6huZzsgIzcyNUENCivniZsgPiBuw611OyAjNzI1Qg0KK+eJnSA+IHDDrG47ICM3MjVEDQor54meID4gasSrdTsgIzcyNUUNCivniZ8gPiBtw7N1OyAjNzI1Rg0KK+eJoCA+IHTFq287ICM3MjYwDQor54mhID4gbcWtOyAjNzI2MQ0KK+eJoiA+IGzDoW87ICM3MjYyDQor54mjID4gcsOobjsgIzcyNjMNCivniaQgPiBtw6FuZzsgIzcyNjQNCivniaUgPiBmxIFuZzsgIzcyNjUNCivniaYgPiBtw6FvOyAjNzI2Ng0KK+eJpyA+IG3DuTsgIzcyNjcNCivniaggPiBnxIFuZzsgIzcyNjgNCivniakgPiB3w7k7ICM3MjY5DQor54mqID4gecOgbjsgIzcyNkENCivniasgPiBnxJM7ICM3MjZCDQor54msID4gYsOoaTsgIzcyNkMNCivnia0gPiBzw6w7ICM3MjZEDQor54muID4gamnDoG47ICM3MjZFDQor54mvID4gZ8WtOyAjNzI2Rg0KK+eJsCA+IHnDsnU7ICM3MjcwDQor54mxID4gZ8STOyAjNzI3MQ0KK+eJsiA+IHNoxJNuZzsgIzcyNzINCivnibMgPiBtxa07ICM3MjczDQor54m0ID4gZMStOyAjNzI3NA0KK+eJtSA+IHFpxIFuOyAjNzI3NQ0KK+eJtiA+IHF1w6BuOyAjNzI3Ng0KK+eJtyA+IHF1w6FuOyAjNzI3Nw0KK+eJuCA+IHrDrDsgIzcyNzgNCivnibkgPiB0w6g7ICM3Mjc5DQor54m6ID4geMSrOyAjNzI3QQ0KK+eJuyA+IG3DoW5nOyAjNzI3Qg0KK+eJvCA+IGvEk25nOyAjNzI3Qw0KK+eJvSA+IHFpxIFuOyAjNzI3RA0KK+eJviA+IHfDujsgIzcyN0UNCivnib8gPiBnw7k7ICM3MjdGDQor54qAID4geMSrOyAjNzI4MA0KK+eKgSA+IGzDrTsgIzcyODENCivnioIgPiBsw607ICM3MjgyDQor54qDID4gcMWPdTsgIzcyODMNCivnioQgPiBqxKs7ICM3Mjg0DQor54qFID4gZ8SBbmc7ICM3Mjg1DQor54qGID4gemjDrTsgIzcyODYNCivniocgPiBixJNuOyAjNzI4Nw0KK+eKiCA+IHF1w6FuOyAjNzI4OA0KK+eKiSA+IHLDum47ICM3Mjg5DQor54qKID4gZMO6OyAjNzI4QQ0KK+eKiyA+IGrDuTsgIzcyOEINCivniowgPiBqacSBOyAjNzI4Qw0KK+eKjSA+IGppxIFuOyAjNzI4RA0KK+eKjiA+IGbEk25nOyAjNzI4RQ0KK+eKjyA+IHBpxIFuOyAjNzI4Rg0KK+eKkCA+IGvEkzsgIzcyOTANCivnipEgPiBqw7o7ICM3MjkxDQor54qSID4ga8OgbzsgIzcyOTINCivnipMgPiBjaMO6OyAjNzI5Mw0KK+eKlCA+IHjDrDsgIzcyOTQNCivnipUgPiBiw6hpOyAjNzI5NQ0KK+eKliA+IGzDuW87ICM3Mjk2DQor54qXID4gamnDqDsgIzcyOTcNCivnipggPiBtw6E7ICM3Mjk4DQor54qZID4gc8SBbjsgIzcyOTkNCivnipogPiB3w6hpOyAjNzI5QQ0KK+eKmyA+IGzDrTsgIzcyOUINCivnipwgPiBkxatuOyAjNzI5Qw0KK+eKnSA+IHTDs25nOyAjNzI5RA0KK+eKnyA+IGppw6BuZzsgIzcyOUYNCivniqEgPiBsw6w7ICM3MkExDQor54qiID4gZMO6OyAjNzJBMg0KK+eKoyA+IGxpw6g7ICM3MkEzDQor54qkID4gcMOtOyAjNzJBNA0KK+eKpSA+IHBpxINvOyAjNzJBNQ0KK+eKpiA+IGLDoG87ICM3MkE2DQor54qnID4geMSrOyAjNzJBNw0KK+eKqCA+IGNoxY11OyAjNzJBOA0KK+eKqSA+IHfDqGk7ICM3MkE5DQor54qqID4ga8O6aTsgIzcyQUENCivniqsgPiBjaMWNdTsgIzcyQUINCivniqwgPiBxdcSDbjsgIzcyQUMNCivniq0gPiBmxINuJyAncXXEg24nICdww6FuZzsgIzcyQUQNCivniq4gPiBiw6E7ICM3MkFFDQor54qvID4gZsOgbjsgIzcyQUYNCivnirAgPiBxw611OyAjNzJCMA0KK+eKsSA+IGrErTsgIzcyQjENCivnirIgPiBjw6FpOyAjNzJCMg0KK+eKsyA+IGNow7pvOyAjNzJCMw0KK+eKtCA+IMOgbjsgIzcyQjQNCivnirUgPiBqacOpOyAjNzJCNQ0KK+eKtiA+IHpodcOgbmc7ICM3MkI2DQor54q3ID4gZ3XEg25nOyAjNzJCNw0KK+eKuCA+IG3DoDsgIzcyQjgNCivnirkgPiB5w7N1OyAjNzJCOQ0KK+eKuiA+IGvDoG5nOyAjNzJCQQ0KK+eKuyA+IGLDszsgIzcyQkINCivnirwgPiBoxY91OyAjNzJCQw0KK+eKvSA+IHnDoTsgIzcyQkQNCivnir4gPiB5w61uOyAjNzJCRQ0KK+eKvyA+IGh1xIFuOyAjNzJCRg0KK+eLgCA+IHpodcOgbmc7ICM3MkMwDQor54uBID4gecWtbjsgIzcyQzENCivni4IgPiBrdcOhbmc7ICM3MkMyDQor54uDID4gbsStdTsgIzcyQzMNCivni4QgPiBkw607ICM3MkM0DQor54uFID4gccSrbmc7ICM3MkM1DQor54uGID4gemjDsm5nOyAjNzJDNg0KK+eLhyA+IG3DuTsgIzcyQzcNCivni4ggPiBiw6hpOyAjNzJDOA0KK+eLiSA+IHDEqzsgIzcyQzkNCivni4ogPiBqw7o7ICM3MkNBDQor54uLID4gbsOtOyAjNzJDQg0KK+eLjCA+IHNoxJNuZzsgIzcyQ0MNCivni40gPiBww6FvOyAjNzJDRA0KK+eLjiA+IHhpw6E7ICM3MkNFDQor54uPID4gdMO6bzsgIzcyQ0YNCivni5AgPiBow7o7ICM3MkQwDQor54uRID4gbMOtbmc7ICM3MkQxDQor54uSID4gZsOoaTsgIzcyRDINCivni5MgPiBwxKs7ICM3MkQzDQor54uUID4gbsStOyAjNzJENA0KK+eLlSA+IMSDbzsgIzcyRDUNCivni5YgPiB5w7J1OyAjNzJENg0KK+eLlyA+IGfFj3U7ICM3MkQ3DQor54uYID4geXXDqDsgIzcyRDgNCivni5kgPiBqxas7ICM3MkQ5DQor54uaID4gZMOgbjsgIzcyREENCivni5sgPiBww7I7ICM3MkRCDQor54ucID4gZ8WtOyAjNzJEQw0KK+eLnSA+IHhpxINuOyAjNzJERA0KK+eLniA+IG7DrW5nOyAjNzJERQ0KK+eLnyA+IGh1w6FuOyAjNzJERg0KK+eLoCA+IGjElW47ICM3MkUwDQor54uhID4gamnEg287ICM3MkUxDQor54uiID4gaMOpOyAjNzJFMg0KK+eLoyA+IHpow6BvOyAjNzJFMw0KK+eLpCA+IGrDrTsgIzcyRTQNCivni6UgPiB4w7luOyAjNzJFNQ0KK+eLpiA+IHNoxIFuOyAjNzJFNg0KK+eLpyA+IHTDoDsgIzcyRTcNCivni6ggPiByw7NuZzsgIzcyRTgNCivni6kgPiBzaMOydTsgIzcyRTkNCivni6ogPiB0xY1uZzsgIzcyRUENCivni6sgPiBsxINvOyAjNzJFQg0KK+eLrCA+IGTDujsgIzcyRUMNCivni60gPiB4acOhOyAjNzJFRA0KK+eLriA+IHNoxKs7ICM3MkVFDQor54uvID4gaHXDoTsgIzcyRUYNCivni7AgPiB6aMSTbmc7ICM3MkYwDQor54uxID4gecO5OyAjNzJGMQ0KK+eLsiA+IHPFq247ICM3MkYyDQor54uzID4gecO6OyAjNzJGMw0KK+eLtCA+IGLDrDsgIzcyRjQNCivni7UgPiBtw6FuZzsgIzcyRjUNCivni7YgPiB4xK07ICM3MkY2DQor54u3ID4ganXDoG47ICM3MkY3DQor54u4ID4gbMOtOyAjNzJGOA0KK+eLuSA+IHhpw6E7ICM3MkY5DQor54u6ID4gecOtbjsgIzcyRkENCivni7sgPiBzdcSBbjsgIzcyRkINCivni7wgPiBsw6FuZzsgIzcyRkMNCivni70gPiBiw6hpOyAjNzJGRA0KK+eLviA+IHpow6w7ICM3MkZFDQor54u/ID4gecOhbjsgIzcyRkYNCivnjIAgPiBzaMSBOyAjNzMwMA0KK+eMgSA+IGzDrDsgIzczMDENCivnjIIgPiBow6BuOyAjNzMwMg0KK+eMgyA+IHhpxINuOyAjNzMwMw0KK+eMhCA+IGrEq25nOyAjNzMwNA0KK+eMhSA+IHDDoWk7ICM3MzA1DQor54yGID4gZsSTaTsgIzczMDYNCivnjIcgPiB5w6FvOyAjNzMwNw0KK+eMiCA+IGLDoDsgIzczMDgNCivnjIkgPiBxw607ICM3MzA5DQor54yKID4gbsOtOyAjNzMwQQ0KK+eMiyA+IGJpxIFvOyAjNzMwQg0KK+eMjCA+IHnDrG47ICM3MzBDDQor54yNID4gbMOhaTsgIzczMEQNCivnjI4gPiB4w607ICM3MzBFDQor54yPID4gamnEgW47ICM3MzBGDQor54yQID4gcWnEgW5nOyAjNzMxMA0KK+eMkSA+IGvFq247ICM3MzExDQor54ySID4gecSBbjsgIzczMTINCivnjJMgPiBnxa1vOyAjNzMxMw0KK+eMlCA+IHrDsm5nOyAjNzMxNA0KK+eMlSA+IG3DrTsgIzczMTUNCivnjJYgPiBjaMSBbmc7ICM3MzE2DQor54yXID4gecSrOyAjNzMxNw0KK+eMmCA+IHpow6w7ICM3MzE4DQor54yZID4gemjEk25nOyAjNzMxOQ0KK+eMmiA+IHnDoTsgIzczMUENCivnjJsgPiBtxJVuZzsgIzczMUINCivnjJwgPiBjxIFpOyAjNzMxQw0KK+eMnSA+IGPDuTsgIzczMUQNCivnjJ4gPiBzaMOoOyAjNzMxRQ0KK+eMoSA+IGzDum87ICM3MzIxDQor54yiID4gaMO6OyAjNzMyMg0KK+eMoyA+IHrFjW5nOyAjNzMyMw0KK+eMpCA+IGrDrDsgIzczMjQNCivnjKUgPiB3xJVpOyAjNzMyNQ0KK+eMpiA+IGbEk25nOyAjNzMyNg0KK+eMpyA+IHfFjTsgIzczMjcNCivnjKggPiB5dcOhbjsgIzczMjgNCivnjKkgPiB4xKtuZzsgIzczMjkNCivnjKogPiB6aMWrOyAjNzMyQQ0KK+eMqyA+IG3EgW87ICM3MzJCDQor54ysID4gd8OoaTsgIzczMkMNCivnjK0gPiB5dcOhbjsgIzczMkQNCivnjK4gPiB4acOgbjsgIzczMkUNCivnjK8gPiB0dcSBbjsgIzczMkYNCivnjLAgPiB5w6A7ICM3MzMwDQor54yxID4gbsOhbzsgIzczMzENCivnjLIgPiB4acSTOyAjNzMzMg0KK+eMsyA+IGppxIE7ICM3MzMzDQor54y0ID4gaMOzdTsgIzczMzQNCivnjLUgPiBiacSBbjsgIzczMzUNCivnjLYgPiB5w7N1OyAjNzMzNg0KK+eMtyA+IHnDs3U7ICM3MzM3DQor54y4ID4gbcOpaTsgIzczMzgNCivnjLkgPiB6aMSBOyAjNzMzOQ0KK+eMuiA+IHnDoW87ICM3MzNBDQor54y7ID4gc8WrbjsgIzczM0INCivnjLwgPiBiw7M7ICM3MzNDDQor54y9ID4gbcOtbmc7ICM3MzNEDQor54y+ID4gaHXDoTsgIzczM0UNCivnjL8gPiB5dcOhbjsgIzczM0YNCivnjYAgPiBzxY11OyAjNzM0MA0KK+eNgSA+IG3DoDsgIzczNDENCivnjYIgPiB5dcOhbjsgIzczNDINCivnjYMgPiBkxIFpOyAjNzM0Mw0KK+eNhCA+IHnDuTsgIzczNDQNCivnjYUgPiBzaMSrOyAjNzM0NQ0KK+eNhiA+IGjDoW87ICM3MzQ2DQor542IID4gecOsOyAjNzM0OA0KK+eNiSA+IHpoxJNuOyAjNzM0OQ0KK+eNiiA+IGNodcOgbmc7ICM3MzRBDQor542LID4gaMOhbzsgIzczNEINCivnjYwgPiBtw6BuOyAjNzM0Qw0KK+eNjSA+IGrDrG5nOyAjNzM0RA0KK+eNjiA+IGppxINuZzsgIzczNEUNCivnjY8gPiBtw7o7ICM3MzRGDQor542QID4gemjEgW5nOyAjNzM1MA0KK+eNkSA+IGNow6FuOyAjNzM1MQ0KK+eNkiA+IMOhbzsgIzczNTINCivnjZMgPiDDoW87ICM3MzUzDQor542UID4gaMOhbzsgIzczNTQNCivnjZUgPiBjxatpOyAjNzM1NQ0KK+eNliA+IGbDqW47ICM3MzU2DQor542XID4ganXDqTsgIzczNTcNCivnjZggPiBiw6w7ICM3MzU4DQor542ZID4gYsOsOyAjNzM1OQ0KK+eNmiA+IGh1w6FuZzsgIzczNUENCivnjZsgPiBww7o7ICM3MzVCDQor542cID4gbMOtbjsgIzczNUMNCivnjZ0gPiB5w7k7ICM3MzVEDQor542eID4gdMOzbmc7ICM3MzVFDQor542fID4gecOgbzsgIzczNUYNCivnjaAgPiBsacOhbzsgIzczNjANCivnjaEgPiBzaMO5bzsgIzczNjENCivnjaIgPiB4acSBbzsgIzczNjINCivnjaUgPiB4w607ICM3MzY1DQor542mID4gZ8OpOyAjNzM2Ng0KK+eNpyA+IGp1w6BuOyAjNzM2Nw0KK+eNqCA+IGTDujsgIzczNjgNCivnjakgPiBow7lpOyAjNzM2OQ0KK+eNqiA+IGt1w6BpOyAjNzM2QQ0KK+eNqyA+IHhpxINuOyAjNzM2Qg0KK+eNrCA+IHhpw6g7ICM3MzZDDQor542tID4gdMOgOyAjNzM2RA0KK+eNriA+IHhpxINuOyAjNzM2RQ0KK+eNryA+IHjFq247ICM3MzZGDQor542wID4gbsOtbmc7ICM3MzcwDQor542xID4gcMOtbjsgIzczNzENCivnjbIgPiBow7lvOyAjNzM3Mg0KK+eNsyA+IG7DsnU7ICM3MzczDQor5420ID4gbcOpbmc7ICM3Mzc0DQor5421ID4gbGnDqDsgIzczNzUNCivnjbYgPiBuw6FvOyAjNzM3Ng0KK+eNtyA+IGd1xINuZzsgIzczNzcNCivnjbggPiBzaMOydTsgIzczNzgNCivnjbkgPiBsw7o7ICM3Mzc5DQor5426ID4gdMOgOyAjNzM3QQ0KK+eNuyA+IHhpw6BuOyAjNzM3Qg0KK+eNvCA+IG3DrTsgIzczN0MNCivnjb0gPiByw6FuZzsgIzczN0QNCivnjb4gPiBodcSBbjsgIzczN0UNCivnjb8gPiBuw6FvOyAjNzM3Rg0KK+eOgCA+IGzDum87ICM3MzgwDQor546BID4geGnEg247ICM3MzgxDQor546CID4gccOtOyAjNzM4Mg0KK+eOgyA+IGp1w6k7ICM3MzgzDQor546EID4geHXDoW47ICM3Mzg0DQor546FID4gbWnDoG87ICM3Mzg1DQor546GID4gesSrOyAjNzM4Ng0KK+eOhyA+IGzHnDsgIzczODcNCivnjoggPiBsw7o7ICM3Mzg4DQor546JID4gecO5OyAjNzM4OQ0KK+eOiiA+IHPDuTsgIzczOEENCivnjosgPiB3w6FuZzsgIzczOEINCivnjowgPiBxw611OyAjNzM4Qw0KK+eOjSA+IGfEgzsgIzczOEQNCivnjo4gPiBkxKtuZzsgIzczOEUNCivnjo8gPiBsw6g7ICM3MzhGDQor546QID4gYsSBOyAjNzM5MA0KK+eOkSA+IGrEqzsgIzczOTENCivnjpIgPiBow7NuZzsgIzczOTINCivnjpMgPiBkw6w7ICM3MzkzDQor546UID4gcXXDoG47ICM3Mzk0DQor546VID4gZ8SBbjsgIzczOTUNCivnjpYgPiBqxK11OyAjNzM5Ng0KK+eOlyA+IHnDujsgIzczOTcNCivnjpggPiBqxK07ICM3Mzk4DQor546ZID4gecO6OyAjNzM5OQ0KK+eOmiA+IHnDoW5nOyAjNzM5QQ0KK+eOmyA+IG3EgzsgIzczOUINCivnjpwgPiBnxY1uZzsgIzczOUMNCivnjp0gPiB3xa07ICM3MzlEDQor546eID4gZsWrOyAjNzM5RQ0KK+eOnyA+IHfDqW47ICM3MzlGDQor546gID4gamnDqDsgIzczQTANCivnjqEgPiB5w6A7ICM3M0ExDQor546iID4gZsOpbjsgIzczQTINCivnjqMgPiBiacOgbjsgIzczQTMNCivnjqQgPiBixJVuZzsgIzczQTQNCivnjqUgPiB5dcOoOyAjNzNBNQ0KK+eOpiA+IGp1w6k7ICM3M0E2DQor546nID4gecWtbjsgIzczQTcNCivnjqggPiBqdcOpOyAjNzNBOA0KK+eOqSA+IHfDoW47ICM3M0E5DQor546qID4gamnEgW47ICM3M0FBDQor546rID4gbcOpaTsgIzczQUINCivnjqwgPiBkxINuOyAjNzNBQw0KK+eOrSA+IHDDrTsgIzczQUQNCivnjq4gPiB3xJVpOyAjNzNBRQ0KK+eOryA+IGh1w6FuOyAjNzNBRg0KK+eOsCA+IHhpw6BuOyAjNzNCMA0KK+eOsSA+IHFpxIFuZzsgIzczQjENCivnjrIgPiBsw61uZzsgIzczQjINCivnjrMgPiBkw6BpOyAjNzNCMw0KK+eOtCA+IHnDrDsgIzczQjQNCivnjrUgPiDDoW47ICM3M0I1DQor5462ID4gcMOtbmc7ICM3M0I2DQor5463ID4gZGnDoG47ICM3M0I3DQor5464ID4gZsO6OyAjNzNCOA0KK+eOuSA+IHh1w6FuOyAjNzNCOQ0KK+eOuiA+IHjErTsgIzczQkENCivnjrsgPiBixY07ICM3M0JCDQor5468ID4gY8StOyAjNzNCQw0KK+eOvSA+IGfFj3U7ICM3M0JEDQor546+ID4gamnEgzsgIzczQkUNCivnjr8gPiBzaMOhbzsgIzczQkYNCivnj4AgPiBww7I7ICM3M0MwDQor54+BID4gY8OtOyAjNzNDMQ0KK+ePgiA+IGvEkzsgIzczQzINCivnj4MgPiByxINuOyAjNzNDMw0KK+ePhCA+IHNoxJNuZzsgIzczQzQNCivnj4UgPiBzaMSTbjsgIzczQzUNCivnj4YgPiB5w607ICM3M0M2DQor54+HID4gesWtOyAjNzNDNw0KK+ePiCA+IGppxIE7ICM3M0M4DQor54+JID4gbcOtbjsgIzczQzkNCivnj4ogPiBzaMSBbjsgIzczQ0ENCivnj4sgPiBsxK11OyAjNzNDQg0KK+ePjCA+IGLDrDsgIzczQ0MNCivnj40gPiB6aMSTbjsgIzczQ0QNCivnj44gPiB6aMSTbjsgIzczQ0UNCivnj48gPiBqdcOpOyAjNzNDRg0KK+ePkCA+IGbDoDsgIzczRDANCivnj5EgPiBsw7NuZzsgIzczRDENCivnj5IgPiBqxKtuOyAjNzNEMg0KK+ePkyA+IGppw6BvOyAjNzNEMw0KK+ePlCA+IGppw6BuOyAjNzNENA0KK+ePlSA+IGzDrDsgIzczRDUNCivnj5YgPiBndcSBbmc7ICM3M0Q2DQor54+XID4geGnEgW47ICM3M0Q3DQor54+YID4gemjFjXU7ICM3M0Q4DQor54+ZID4gZ8WPbmc7ICM3M0Q5DQor54+aID4gecSBbjsgIzczREENCivnj5sgPiB4w6x1OyAjNzNEQg0KK+ePnCA+IHnDoW5nOyAjNzNEQw0KK+ePnSA+IHjFrTsgIzczREQNCivnj54gPiBsw7lvOyAjNzNERQ0KK+ePnyA+IHPDuTsgIzczREYNCivnj6AgPiB6aMWrOyAjNzNFMA0KK+ePoSA+IHHDrW47ICM3M0UxDQor54+iID4ga8OobjsgIzczRTINCivnj6MgPiB4w7puOyAjNzNFMw0KK+ePpCA+IGLEg287ICM3M0U0DQor54+lID4gxJVyOyAjNzNFNQ0KK+ePpiA+IHhpw6BuZzsgIzczRTYNCivnj6cgPiB5w6FvOyAjNzNFNw0KK+ePqCA+IHhpw6E7ICM3M0U4DQor54+pID4gaMOpbmc7ICM3M0U5DQor54+qID4gZ8WraTsgIzczRUENCivnj6sgPiBjaMWNbmc7ICM3M0VCDQor54+sID4geMO5OyAjNzNFQw0KK+ePrSA+IGLEgW47ICM3M0VEDQor54+uID4gcMOoaTsgIzczRUUNCivnj7AgPiBkxIFuZzsgIzczRjANCivnj7IgPiBow7puOyAjNzNGMg0KK+ePsyA+IHfDqW47ICM3M0YzDQor54+0ID4gw6k7ICM3M0Y0DQor54+1ID4gY2jDqW5nOyAjNzNGNQ0KK+ePtiA+IHTDrTsgIzczRjYNCivnj7cgPiB3xa07ICM3M0Y3DQor54+4ID4gd8O6OyAjNzNGOA0KK+ePuSA+IGNow6luZzsgIzczRjkNCivnj7ogPiBqw7luOyAjNzNGQQ0KK+ePuyA+IG3DqWk7ICM3M0ZCDQor54+8ID4gYsOoaTsgIzczRkMNCivnj70gPiB0xK1uZzsgIzczRkQNCivnj74gPiB4acOgbjsgIzczRkUNCivnj78gPiBjaMO5bzsgIzczRkYNCivnkIAgPiBow6FuOyAjNzQwMA0KK+eQgSA+IHh1YW47ICM3NDAxDQor55CCID4gecOhbjsgIzc0MDINCivnkIMgPiBxw611OyAjNzQwMw0KK+eQhCA+IHF1xINuOyAjNzQwNA0KK+eQhSA+IGzDoW5nOyAjNzQwNQ0KK+eQhiA+IGzErTsgIzc0MDYNCivnkIcgPiB4w6x1OyAjNzQwNw0KK+eQiCA+IGbDujsgIzc0MDgNCivnkIkgPiBsw611OyAjNzQwOQ0KK+eQiiA+IHnDqTsgIzc0MEENCivnkIsgPiB4xKs7ICM3NDBCDQor55CMID4gbMOtbmc7ICM3NDBDDQor55CNID4gbMOsOyAjNzQwRA0KK+eQjiA+IGrDrG47ICM3NDBFDQor55CPID4gbGnDoW47ICM3NDBGDQor55CQID4gc8WtbzsgIzc0MTANCivnkJMgPiB3w6FuOyAjNzQxMw0KK+eQlCA+IGRpw6BuOyAjNzQxNA0KK+eQlSA+IHDDrW47ICM3NDE1DQor55CWID4gemjEg247ICM3NDE2DQor55CXID4gY8O5aTsgIzc0MTcNCivnkJggPiBtw61uOyAjNzQxOA0KK+eQmSA+IHnDuTsgIzc0MTkNCivnkJogPiBqxas7ICM3NDFBDQor55CbID4gY2jEk247ICM3NDFCDQor55CcID4gbMOhaTsgIzc0MUMNCivnkJ0gPiB3w6luOyAjNzQxRA0KK+eQniA+IHNow6huZzsgIzc0MUUNCivnkJ8gPiB3w6lpOyAjNzQxRg0KK+eQoCA+IGRpxINuOyAjNzQyMA0KK+eQoSA+IGNow7k7ICM3NDIxDQor55CiID4gemjDum87ICM3NDIyDQor55CjID4gcMSVaTsgIzc0MjMNCivnkKQgPiBjaMSTbmc7ICM3NDI0DQor55ClID4gaMWtOyAjNzQyNQ0KK+eQpiA+IHHDrTsgIzc0MjYNCivnkKcgPiDDqDsgIzc0MjcNCivnkKggPiBrxatuOyAjNzQyOA0KK+eQqSA+IGNoxIFuZzsgIzc0MjkNCivnkKogPiBxw607ICM3NDJBDQor55CrID4gYsSVbmc7ICM3NDJCDQor55CsID4gd8SDbjsgIzc0MkMNCivnkK0gPiBsw7k7ICM3NDJEDQor55CuID4gY8Ozbmc7ICM3NDJFDQor55CvID4gZ3XEg247ICM3NDJGDQor55CwID4gecSDbjsgIzc0MzANCivnkLEgPiBkacSBbzsgIzc0MzENCivnkLIgPiBiw6hpOyAjNzQzMg0KK+eQsyA+IGzDrW47ICM3NDMzDQor55C0ID4gccOtbjsgIzc0MzQNCivnkLUgPiBww607ICM3NDM1DQor55C2ID4gcMOhOyAjNzQzNg0KK+eQtyA+IHF1w6g7ICM3NDM3DQor55C4ID4gemjDum87ICM3NDM4DQor55C5ID4gccOtbjsgIzc0MzkNCivnkLogPiBmw6A7ICM3NDNBDQor55C8ID4gccOtb25nOyAjNzQzQw0KK+eQvSA+IGTFrTsgIzc0M0QNCivnkL4gPiBqacOoOyAjNzQzRQ0KK+eQvyA+IGjDum47ICM3NDNGDQor55GAID4gecWtOyAjNzQ0MA0KK+eRgSA+IG3DoG87ICM3NDQxDQor55GCID4gbcOpaTsgIzc0NDINCivnkYMgPiBjaHVuOyAjNzQ0Mw0KK+eRhCA+IHh1xIFuOyAjNzQ0NA0KK+eRhSA+IHTDrTsgIzc0NDUNCivnkYYgPiB4xKtuZzsgIzc0NDYNCivnkYcgPiBkw6BpOyAjNzQ0Nw0KK+eRiCA+IHLDs3U7ICM3NDQ4DQor55GJID4gbcOtbjsgIzc0NDkNCivnkYogPiB6aMSTbjsgIzc0NEENCivnkYsgPiB3xJVpOyAjNzQ0Qg0KK+eRjCA+IHJ1xINuOyAjNzQ0Qw0KK+eRjSA+IGh1w6BuOyAjNzQ0RA0KK+eRjiA+IGppxJM7ICM3NDRFDQor55GPID4gY2h1xIFuOyAjNzQ0Rg0KK+eRkCA+IGppxINuOyAjNzQ1MA0KK+eRkSA+IHpodcOgbjsgIzc0NTENCivnkZIgPiB5w6FuZzsgIzc0NTINCivnkZMgPiBsacOgbjsgIzc0NTMNCivnkZQgPiBxdcOhbjsgIzc0NTQNCivnkZUgPiB4acOhOyAjNzQ1NQ0KK+eRliA+IGR1w6BuOyAjNzQ1Ng0KK+eRlyA+IHl1w6BuOyAjNzQ1Nw0KK+eRmCA+IHnDqTsgIzc0NTgNCivnkZkgPiBuxINvOyAjNzQ1OQ0KK+eRmiA+IGjDujsgIzc0NUENCivnkZsgPiB5xKtuZzsgIzc0NUINCivnkZwgPiB5w7o7ICM3NDVDDQor55GdID4gaHXDoW5nOyAjNzQ1RA0KK+eRniA+IHLDuWk7ICM3NDVFDQor55GfID4gc8OoOyAjNzQ1Rg0KK+eRoCA+IGzDrXU7ICM3NDYwDQor55GhID4gc2hpOyAjNzQ2MQ0KK+eRoiA+IHLDs25nOyAjNzQ2Mg0KK+eRoyA+IHPFrW87ICM3NDYzDQor55GkID4gecOhbzsgIzc0NjQNCivnkaUgPiB3xJNuOyAjNzQ2NQ0KK+eRpiA+IHfFqzsgIzc0NjYNCivnkacgPiBqxKtuOyAjNzQ2Nw0KK+eRqCA+IGrDrG47ICM3NDY4DQor55GpID4gecOtbmc7ICM3NDY5DQor55GqID4gbcSDOyAjNzQ2QQ0KK+eRqyA+IHTEgW87ICM3NDZCDQor55GsID4gbMOtdTsgIzc0NkMNCivnka0gPiB0w6FuZzsgIzc0NkQNCivnka4gPiBsw6w7ICM3NDZFDQor55GvID4gbMOhbmc7ICM3NDZGDQor55GwID4gZ8WraTsgIzc0NzANCivnkbEgPiB6aMOobjsgIzc0NzENCivnkbIgPiBxacSBbmc7ICM3NDcyDQor55GzID4gY8WtbzsgIzc0NzMNCivnkbQgPiBqdcOpOyAjNzQ3NA0KK+eRtSA+IHpoxINvOyAjNzQ3NQ0KK+eRtiA+IHnDoW87ICM3NDc2DQor55G3ID4gw6BpOyAjNzQ3Nw0KK+eRuCA+IGLEq247ICM3NDc4DQor55G5ID4gdMO6OyAjNzQ3OQ0KK+eRuiA+IGNow6FuZzsgIzc0N0ENCivnkbsgPiBrxatuOyAjNzQ3Qg0KK+eRvCA+IHpodcSBbjsgIzc0N0MNCivnkb0gPiBjxY1uZzsgIzc0N0QNCivnkb4gPiBqxK1uOyAjNzQ3RQ0KK+eRvyA+IHnEqzsgIzc0N0YNCivnkoAgPiBjxa1pOyAjNzQ4MA0KK+eSgSA+IGPFjW5nOyAjNzQ4MQ0KK+eSgiA+IHHDrTsgIzc0ODINCivnkoMgPiBsw607ICM3NDgzDQor55KEID4gecStbmc7ICM3NDg0DQor55KFID4gc8WtbzsgIzc0ODUNCivnkoYgPiBxw611OyAjNzQ4Ng0KK+eShyA+IHh1w6FuOyAjNzQ4Nw0KK+eSiCA+IMOhbzsgIzc0ODgNCivnkokgPiBsacOhbjsgIzc0ODkNCivnkoogPiBtw6FuOyAjNzQ4QQ0KK+eSiyA+IHpoxIFuZzsgIzc0OEINCivnkowgPiB5w61uOyAjNzQ4Qw0KK+eSjiA+IHnEq25nOyAjNzQ4RQ0KK+eSjyA+IHpow6w7ICM3NDhGDQor55KQID4gbMO5OyAjNzQ5MA0KK+eSkSA+IHfDujsgIzc0OTENCivnkpIgPiBkxJNuZzsgIzc0OTINCivnkpMgPiB4acOydTsgIzc0OTMNCivnkpQgPiB6xJNuZzsgIzc0OTQNCivnkpUgPiB4w7puOyAjNzQ5NQ0KK+eSliA+IHHDujsgIzc0OTYNCivnkpcgPiBkw6BuZzsgIzc0OTcNCivnkpggPiBsw61uOyAjNzQ5OA0KK+eSmSA+IGxpw6FvOyAjNzQ5OQ0KK+eSmiA+IHHDrW9uZzsgIzc0OUENCivnkpsgPiBzw7k7ICM3NDlCDQor55KcID4gaHXDoW5nOyAjNzQ5Qw0KK+eSnSA+IGfFq2k7ICM3NDlEDQor55KeID4gcMO6OyAjNzQ5RQ0KK+eSnyA+IGrErW5nOyAjNzQ5Rg0KK+eSoCA+IGbDoW47ICM3NEEwDQor55KhID4gasOsbjsgIzc0QTENCivnkqIgPiBsw611OyAjNzRBMg0KK+eSoyA+IGrEqzsgIzc0QTMNCivnkqUgPiBqxK1uZzsgIzc0QTUNCivnkqYgPiDDoGk7ICM3NEE2DQor55KnID4gYsOsOyAjNzRBNw0KK+eSqCA+IGPDoG47ICM3NEE4DQor55KpID4gccO6OyAjNzRBOQ0KK+eSqiA+IHrEg287ICM3NEFBDQor55KrID4gZMSBbmc7ICM3NEFCDQor55KsID4gamnEg287ICM3NEFDDQor55KtID4gZ8O5bjsgIzc0QUQNCivnkq4gPiB0xINuOyAjNzRBRQ0KK+eSryA+IGjDuWk7ICM3NEFGDQor55KwID4gaHXDoW47ICM3NEIwDQor55KxID4gc8OoOyAjNzRCMQ0KK+eSsiA+IHPDuWk7ICM3NEIyDQor55KzID4gdGnDoW47ICM3NEIzDQor55K1ID4gecO6OyAjNzRCNQ0KK+eStiA+IGrDrG47ICM3NEI2DQor55K3ID4gbMO6OyAjNzRCNw0KK+eSuCA+IGLEq247ICM3NEI4DQor55K5ID4gc2jDsnU7ICM3NEI5DQor55K6ID4gd8OobjsgIzc0QkENCivnkrsgPiB6xa1pOyAjNzRCQg0KK+eSvCA+IGzDoW47ICM3NEJDDQor55K9ID4geMStOyAjNzRCRA0KK+eSviA+IGrDrDsgIzc0QkUNCivnkr8gPiB4dcOhbjsgIzc0QkYNCivnk4AgPiBydcSDbjsgIzc0QzANCivnk4EgPiBow7lvOyAjNzRDMQ0KK+eTgiA+IGfDoGk7ICM3NEMyDQor55ODID4gbMOpaTsgIzc0QzMNCivnk4QgPiBkw7o7ICM3NEM0DQor55OFID4gbMOsOyAjNzRDNQ0KK+eThiA+IHpow607ICM3NEM2DQor55OHID4gcsOzdTsgIzc0QzcNCivnk4ggPiBsw607ICM3NEM4DQor55OJID4gesOgbjsgIzc0QzkNCivnk4ogPiBxw61vbmc7ICM3NENBDQor55OLID4gemjDqTsgIzc0Q0INCivnk4wgPiBnxatpOyAjNzRDQw0KK+eTjSA+IHPDuWk7ICM3NENEDQor55OOID4gbMOgOyAjNzRDRQ0KK+eTjyA+IGzDs25nOyAjNzRDRg0KK+eTkCA+IGzDujsgIzc0RDANCivnk5EgPiBsw6w7ICM3NEQxDQor55OSID4gesOgbjsgIzc0RDINCivnk5MgPiBsw6BuOyAjNzREMw0KK+eTlCA+IHnEq25nOyAjNzRENA0KK+eTlSA+IG3DrTsgIzc0RDUNCivnk5YgPiB4acSBbmc7ICM3NEQ2DQor55OXID4geMSrOyAjNzRENw0KK+eTmCA+IGd1w6BuOyAjNzREOA0KK+eTmSA+IGTDoG87ICM3NEQ5DQor55OaID4gesOgbjsgIzc0REENCivnk5sgPiBodcOhbjsgIzc0REINCivnk5wgPiBndcSBOyAjNzREQw0KK+eTnSA+IGLDszsgIzc0REQNCivnk54gPiBkacOpOyAjNzRERQ0KK+eTnyA+IGLDoW87ICM3NERGDQor55OgID4gaMO5OyAjNzRFMA0KK+eToSA+IHpow607ICM3NEUxDQor55OiID4gcGnDoW87ICM3NEUyDQor55OjID4gYsOgbjsgIzc0RTMNCivnk6QgPiByw6FuZzsgIzc0RTQNCivnk6UgPiBsw6w7ICM3NEU1DQor55OmID4gd8SDOyAjNzRFNg0KK+eTqCA+IGppxIFuZzsgIzc0RTgNCivnk6kgPiBxacOhbicgJ3fEgzsgIzc0RTkNCivnk6ogPiBmxINuOyAjNzRFQQ0KK+eTqyA+IHDDqW47ICM3NEVCDQor55OsID4gZsSDbmc7ICM3NEVDDQor55OtID4gZMSDbjsgIzc0RUQNCivnk64gPiB3w6huZzsgIzc0RUUNCivnk68gPiDFjXU7ICM3NEVGDQor55OzID4gaMO6OyAjNzRGMw0KK+eTtCA+IGzDrW5nOyAjNzRGNA0KK+eTtSA+IHnDrTsgIzc0RjUNCivnk7YgPiBww61uZzsgIzc0RjYNCivnk7cgPiBjw607ICM3NEY3DQor55O5ID4ganXDoG47ICM3NEY5DQor55O6ID4gY2jDoW5nOyAjNzRGQQ0KK+eTuyA+IGNoxKs7ICM3NEZCDQor55O9ID4gZMOgbmc7ICM3NEZEDQor55O+ID4gbcSVbmc7ICM3NEZFDQor55O/ID4gcMWPdTsgIzc0RkYNCivnlIAgPiB6aMO5aTsgIzc1MDANCivnlIEgPiBww61uZzsgIzc1MDENCivnlIIgPiBiacSBbjsgIzc1MDINCivnlIMgPiB6aMOydTsgIzc1MDMNCivnlIQgPiB6aMSTbjsgIzc1MDQNCivnlIYgPiBjw607ICM3NTA2DQor55SHID4gecSrbmc7ICM3NTA3DQor55SIID4gccOsOyAjNzUwOA0KK+eUiSA+IHhpw6FuOyAjNzUwOQ0KK+eUiiA+IGzFj3U7ICM3NTBBDQor55SLID4gZMOsOyAjNzUwQg0KK+eUjCA+IMWNdTsgIzc1MEMNCivnlI0gPiBtw6luZzsgIzc1MEQNCivnlI4gPiB6aHXEgW47ICM3NTBFDQor55SPID4gcMOobmc7ICM3NTBGDQor55SQID4gbMOtbjsgIzc1MTANCivnlJEgPiB6w6huZzsgIzc1MTENCivnlJIgPiB3xa07ICM3NTEyDQor55STID4gcMOsOyAjNzUxMw0KK+eUlCA+IGTEgW47ICM3NTE0DQor55SVID4gd8Oobmc7ICM3NTE1DQor55SWID4gecSrbmc7ICM3NTE2DQor55SXID4gecSDbjsgIzc1MTcNCivnlJggPiBnxIFuOyAjNzUxOA0KK+eUmSA+IGTDoGk7ICM3NTE5DQor55SaID4gc2jDqW47ICM3NTFBDQor55SbID4gdGnDoW47ICM3NTFCDQor55ScID4gdGnDoW47ICM3NTFDDQor55SdID4gaMSBbjsgIzc1MUQNCivnlJ4gPiBjaMOhbmc7ICM3NTFFDQor55SfID4gc2jEk25nOyAjNzUxRg0KK+eUoCA+IHHDrW5nOyAjNzUyMA0KK+eUoSA+IHNoxJNuZzsgIzc1MjENCivnlKIgPiBjaMSDbjsgIzc1MjINCivnlKMgPiBjaMSDbjsgIzc1MjMNCivnlKQgPiByw7ppOyAjNzUyNA0KK+eUpSA+IHNoxJNuZzsgIzc1MjUNCivnlKYgPiBzxas7ICM3NTI2DQor55SnID4gc8STbjsgIzc1MjcNCivnlKggPiB5w7JuZzsgIzc1MjgNCivnlKkgPiBzaHXEg2k7ICM3NTI5DQor55SqID4gbMO5OyAjNzUyQQ0KK+eUqyA+IGbFrTsgIzc1MkINCivnlKwgPiB5xY9uZzsgIzc1MkMNCivnlK0gPiBiw6luZzsgIzc1MkQNCivnlK4gPiBmw6huZzsgIzc1MkUNCivnlK8gPiBuw61uZzsgIzc1MkYNCivnlLAgPiB0acOhbjsgIzc1MzANCivnlLEgPiB5w7N1OyAjNzUzMQ0KK+eUsiA+IGppxIM7ICM3NTMyDQor55SzID4gc2jEk247ICM3NTMzDQor55S0ID4gemjDoTsgIzc1MzQNCivnlLUgPiBkacOgbjsgIzc1MzUNCivnlLYgPiBmw7o7ICM3NTM2DQor55S3ID4gbsOhbjsgIzc1MzcNCivnlLggPiBkacOgbjsgIzc1MzgNCivnlLkgPiBww61uZzsgIzc1MzkNCivnlLogPiB0xK1uZzsgIzc1M0ENCivnlLsgPiBodcOgOyAjNzUzQg0KK+eUvCA+IHTErW5nOyAjNzUzQw0KK+eUvSA+IHF1xINuOyAjNzUzRA0KK+eUviA+IHrEqzsgIzc1M0UNCivnlL8gPiBtw6luZzsgIzc1M0YNCivnlYAgPiBiw6w7ICM3NTQwDQor55WBID4gccOtOyAjNzU0MQ0KK+eVgiA+IGzDrHU7ICM3NTQyDQor55WDID4geMO6bjsgIzc1NDMNCivnlYQgPiBsw611OyAjNzU0NA0KK+eVhSA+IGNow6BuZzsgIzc1NDUNCivnlYYgPiBtxa07ICM3NTQ2DQor55WHID4gecO6bjsgIzc1NDcNCivnlYggPiBmw6BuOyAjNzU0OA0KK+eViSA+IGbDujsgIzc1NDkNCivnlYogPiBnxJNuZzsgIzc1NEENCivnlYsgPiB0acOhbjsgIzc1NEINCivnlYwgPiBqacOoOyAjNzU0Qw0KK+eVjSA+IGppw6g7ICM3NTREDQor55WOID4gcXXEg247ICM3NTRFDQor55WPID4gd8OoaTsgIzc1NEYNCivnlZAgPiBmw7o7ICM3NTUwDQor55WRID4gdGnDoW47ICM3NTUxDQor55WSID4gbcWtOyAjNzU1Mg0KK+eVlCA+IHDDoG47ICM3NTU0DQor55WVID4gamnEgW5nOyAjNzU1NQ0KK+eVliA+IHfEgTsgIzc1NTYNCivnlZcgPiBkw6E7ICM3NTU3DQor55WYID4gbsOhbjsgIzc1NTgNCivnlZkgPiBsw611OyAjNzU1OQ0KK+eVmiA+IGLElW47ICM3NTVBDQor55WbID4gemjElW47ICM3NTVCDQor55WcID4gY2jDuTsgIzc1NUMNCivnlZ0gPiBtxa07ICM3NTVEDQor55WeID4gbcWtOyAjNzU1RQ0KK+eVnyA+IGPDqDsgIzc1NUYNCivnlaEgPiBnxIFpOyAjNzU2MQ0KK+eVoiA+IGLDrDsgIzc1NjINCivnlaMgPiBkw6E7ICM3NTYzDQor55WkID4gemjDrDsgIzc1NjQNCivnlaUgPiBsx5xlOyAjNzU2NQ0KK+eVpiA+IHHDrTsgIzc1NjYNCivnlacgPiBsx5xlOyAjNzU2Nw0KK+eVqCA+IHDEgW47ICM3NTY4DQor55WqID4gZsSBbjsgIzc1NkENCivnlasgPiBodcOgOyAjNzU2Qg0KK+eVrCA+IHnDujsgIzc1NkMNCivnla0gPiB5w7o7ICM3NTZEDQor55WuID4gbcWtOyAjNzU2RQ0KK+eVryA+IGrDuW47ICM3NTZGDQor55WwID4gecOsOyAjNzU3MA0KK+eVsSA+IGzDrXU7ICM3NTcxDQor55WyID4gecO6OyAjNzU3Mg0KK+eVsyA+IGRpw6k7ICM3NTczDQor55W0ID4gY2jDs3U7ICM3NTc0DQor55W1ID4gaHXDoDsgIzc1NzUNCivnlbYgPiBkxIFuZzsgIzc1NzYNCivnlbcgPiBjaMO5bzsgIzc1NzcNCivnlbggPiBqxKs7ICM3NTc4DQor55W5ID4gd8SDbjsgIzc1NzkNCivnlbogPiBqacSBbmc7ICM3NTdBDQor55W7ID4gc2jDqW5nOyAjNzU3Qg0KK+eVvCA+IGNow6BuZzsgIzc1N0MNCivnlb0gPiB0dcSDbjsgIzc1N0QNCivnlb4gPiBsw6lpOyAjNzU3RQ0KK+eVvyA+IGrEqzsgIzc1N0YNCivnloAgPiBjaMSBOyAjNzU4MA0KK+eWgSA+IGzDrXU7ICM3NTgxDQor55aDID4gdHXEg247ICM3NTgzDQor55aEID4gbMOtbjsgIzc1ODQNCivnloUgPiBqacSBbmc7ICM3NTg1DQor55aGID4gamnEgW5nOyAjNzU4Ng0KK+eWhyA+IGNow7N1OyAjNzU4Nw0KK+eWiCA+IGLDsjsgIzc1ODgNCivnlokgPiBkacOpOyAjNzU4OQ0KK+eWiiA+IGRpw6k7ICM3NThBDQor55aLID4gcMStOyAjNzU4Qg0KK+eWjCA+IG5pw6g7ICM3NThDDQor55aNID4gZMOgbjsgIzc1OEQNCivnlo4gPiBzaMWrOyAjNzU4RQ0KK+eWjyA+IHNoxas7ICM3NThGDQor55aQID4gemjDrDsgIzc1OTANCivnlpEgPiB5w607ICM3NTkxDQor55aSID4gY2h1w6FuZzsgIzc1OTINCivnlpMgPiBuxINpOyAjNzU5Mw0KK+eWlCA+IGTEq25nOyAjNzU5NA0KK+eWlSA+IGLErTsgIzc1OTUNCivnlpYgPiBqacOpOyAjNzU5Ng0KK+eWlyA+IGxpw6FvOyAjNzU5Nw0KK+eWmCA+IGfFjW5nOyAjNzU5OA0KK+eWmSA+IGfEkzsgIzc1OTkNCivnlpogPiBqw6x1OyAjNzU5QQ0KK+eWmyA+IHpoxY91OyAjNzU5Qg0KK+eWnCA+IHhpw6A7ICM3NTlDDQor55adID4gc2jDoG47ICM3NTlEDQor55aeID4geMWrOyAjNzU5RQ0KK+eWnyA+IG7HnGU7ICM3NTlGDQor55agID4gbMOsOyAjNzVBMA0KK+eWoSA+IHnDoW5nOyAjNzVBMQ0KK+eWoiA+IGNow6huOyAjNzVBMg0KK+eWoyA+IHnDs3U7ICM3NUEzDQor55akID4gYsSBOyAjNzVBNA0KK+eWpSA+IGppw6g7ICM3NUE1DQor55amID4ganXDqTsgIzc1QTYNCivnlqcgPiB6aMSrOyAjNzVBNw0KK+eWqCA+IHhpxIE7ICM3NUE4DQor55apID4gY8O5aTsgIzc1QTkNCivnlqogPiBiw6w7ICM3NUFBDQor55arID4gecOsOyAjNzVBQg0KK+eWrCA+IGzDrDsgIzc1QUMNCivnlq0gPiB6w7JuZzsgIzc1QUQNCivnlq4gPiBjaHXEgW5nOyAjNzVBRQ0KK+eWryA+IGbEk25nOyAjNzVBRg0KK+eWsCA+IHpow7k7ICM3NUIwDQor55axID4gcMOgbzsgIzc1QjENCivnlrIgPiBww607ICM3NUIyDQor55azID4gZ8SBbjsgIzc1QjMNCivnlrQgPiBrxJM7ICM3NUI0DQor55a1ID4gY8SrOyAjNzVCNQ0KK+eWtiA+IHhpw6g7ICM3NUI2DQor55a3ID4gccOtOyAjNzVCNw0KK+eWuCA+IGTEg247ICM3NUI4DQor55a5ID4gemjElW47ICM3NUI5DQor55a6ID4gZsOhOyAjNzVCQQ0KK+eWuyA+IHpoxK07ICM3NUJCDQor55a8ID4gdMOpbmc7ICM3NUJDDQor55a9ID4gasWrOyAjNzVCRA0KK+eWviA+IGrDrTsgIzc1QkUNCivnlr8gPiBmw6hpOyAjNzVCRg0KK+eXgCA+IHHDujsgIzc1QzANCivnl4EgPiBkacOgbjsgIzc1QzENCivnl4IgPiBqacSBOyAjNzVDMg0KK+eXgyA+IHhpw6FuOyAjNzVDMw0KK+eXhCA+IGNow6E7ICM3NUM0DQor55eFID4gYsOsbmc7ICM3NUM1DQor55eGID4gbsOsOyAjNzVDNg0KK+eXhyA+IHpow6huZzsgIzc1QzcNCivnl4ggPiB5xY1uZzsgIzc1QzgNCivnl4kgPiBqw6xuZzsgIzc1QzkNCivnl4ogPiBxdcOhbjsgIzc1Q0ENCivnl4sgPiBjaMOzbmc7ICM3NUNCDQor55eMID4gdMWNbmc7ICM3NUNDDQor55eNID4gecOtOyAjNzVDRA0KK+eXjiA+IGvEgWk7ICM3NUNFDQor55ePID4gd8SVaTsgIzc1Q0YNCivnl5AgPiBow7ppOyAjNzVEMA0KK+eXkSA+IGTFrW87ICM3NUQxDQor55eSID4gecSDbmc7ICM3NUQyDQor55eTID4gY2jDrDsgIzc1RDMNCivnl5QgPiB6aMOsOyAjNzVENA0KK+eXlSA+IGjDqW47ICM3NUQ1DQor55eWID4gecSDOyAjNzVENg0KK+eXlyA+IG3DqGk7ICM3NUQ3DQor55eYID4gZMOydTsgIzc1RDgNCivnl5kgPiBqw6xuZzsgIzc1RDkNCivnl5ogPiB4acSBbzsgIzc1REENCivnl5sgPiB0w7JuZzsgIzc1REINCivnl5wgPiB0xas7ICM3NURDDQor55edID4gbcOhbmc7ICM3NUREDQor55eeID4gcMStOyAjNzVERQ0KK+eXnyA+IHhpxIFvOyAjNzVERg0KK+eXoCA+IHN1xIFuOyAjNzVFMA0KK+eXoSA+IHDFqzsgIzc1RTENCivnl6IgPiBsw6w7ICM3NUUyDQor55ejID4gemjDrDsgIzc1RTMNCivnl6QgPiBjw7pvOyAjNzVFNA0KK+eXpSA+IGTDum87ICM3NUU1DQor55emID4gd8O5OyAjNzVFNg0KK+eXpyA+IHNoxIE7ICM3NUU3DQor55eoID4gbMOhbzsgIzc1RTgNCivnl6kgPiBzaMOydTsgIzc1RTkNCivnl6ogPiBodcOgbjsgIzc1RUENCivnl6sgPiB4acOhbjsgIzc1RUINCivnl6wgPiB5w6w7ICM3NUVDDQor55etID4gcMOpbmc7ICM3NUVEDQor55euID4gemjDoG5nOyAjNzVFRQ0KK+eXryA+IGd1xINuOyAjNzVFRg0KK+eXsCA+IHTDoW47ICM3NUYwDQor55exID4gZsOoaTsgIzc1RjENCivnl7IgPiBtw6E7ICM3NUYyDQor55ezID4gbMOtbjsgIzc1RjMNCivnl7QgPiBjaMSrOyAjNzVGNA0KK+eXtSA+IGrDrDsgIzc1RjUNCivnl7YgPiBkacSDbjsgIzc1RjYNCivnl7cgPiDEgW47ICM3NUY3DQor55e4ID4gY2jDrDsgIzc1RjgNCivnl7kgPiBiw6w7ICM3NUY5DQor55e6ID4gYsSTaTsgIzc1RkENCivnl7sgPiBtw61uOyAjNzVGQg0KK+eXvCA+IGfFqzsgIzc1RkMNCivnl70gPiBkxatpOyAjNzVGRA0KK+eXviA+IMSTOyAjNzVGRQ0KK+eXvyA+IHfElWk7ICM3NUZGDQor55iAID4gecWrOyAjNzYwMA0KK+eYgSA+IGPDuWk7ICM3NjAxDQor55iCID4gecSDOyAjNzYwMg0KK+eYgyA+IHpoxa07ICM3NjAzDQor55iEID4gY8O5OyAjNzYwNA0KK+eYhSA+IGTDoG47ICM3NjA1DQor55iGID4gc2jDqG47ICM3NjA2DQor55iHID4gemjFrW5nOyAjNzYwNw0KK+eYiCA+IGrDrDsgIzc2MDgNCivnmIkgPiB5w7k7ICM3NjA5DQor55iKID4gaMOzdTsgIzc2MEENCivnmIsgPiBmxJNuZzsgIzc2MEINCivnmIwgPiBsw6A7ICM3NjBDDQor55iNID4gecOhbmc7ICM3NjBEDQor55iOID4gc2jDqG47ICM3NjBFDQor55iPID4gdMO6OyAjNzYwRg0KK+eYkCA+IHnFrTsgIzc2MTANCivnmJEgPiBndcSBOyAjNzYxMQ0KK+eYkiA+IHfDqW47ICM3NjEyDQor55iTID4gaHXDoG47ICM3NjEzDQor55iUID4ga8O5OyAjNzYxNA0KK+eYlSA+IGppxIM7ICM3NjE1DQor55iWID4gecSrbjsgIzc2MTYNCivnmJcgPiB5w6w7ICM3NjE3DQor55iYID4gbMeYOyAjNzYxOA0KK+eYmSA+IHPEgW87ICM3NjE5DQor55iaID4ganXDqTsgIzc2MUENCivnmJsgPiBjaMOsOyAjNzYxQg0KK+eYnCA+IHjDrTsgIzc2MUMNCivnmJ0gPiBndcSBbjsgIzc2MUQNCivnmJ4gPiB5w6w7ICM3NjFFDQor55ifID4gd8STbjsgIzc2MUYNCivnmKAgPiBqw607ICM3NjIwDQor55ihID4gY2h1xIFuZzsgIzc2MjENCivnmKIgPiBixIFuOyAjNzYyMg0KK+eYoyA+IGzElWk7ICM3NjIzDQor55ikID4gbMOtdTsgIzc2MjQNCivnmKUgPiBjaMOgaTsgIzc2MjUNCivnmKYgPiBzaMOydTsgIzc2MjYNCivnmKcgPiBux5xlOyAjNzYyNw0KK+eYqCA+IGRpxIFuOyAjNzYyOA0KK+eYqSA+IGTEgTsgIzc2MjkNCivnmKogPiBwacSTOyAjNzYyQQ0KK+eYqyA+IHTEgW47ICM3NjJCDQor55isID4gemjDoG5nOyAjNzYyQw0KK+eYrSA+IGJpxIFvOyAjNzYyRA0KK+eYriA+IHNoZW47ICM3NjJFDQor55ivID4gY8O5OyAjNzYyRg0KK+eYsCA+IGzFrW87ICM3NjMwDQor55ixID4gecOsOyAjNzYzMQ0KK+eYsiA+IHrDsm5nOyAjNzYzMg0KK+eYsyA+IGNoxY11OyAjNzYzMw0KK+eYtCA+IHpow6BuZzsgIzc2MzQNCivnmLUgPiB6aMOgaTsgIzc2MzUNCivnmLYgPiBzw7J1OyAjNzYzNg0KK+eYtyA+IHPFrW87ICM3NjM3DQor55i4ID4gcXXDqTsgIzc2MzgNCivnmLkgPiBkacOgbzsgIzc2MzkNCivnmLogPiBsw7J1OyAjNzYzQQ0KK+eYuyA+IGzHmDsgIzc2M0INCivnmLwgPiBtw7I7ICM3NjNDDQor55i9ID4gasOsbjsgIzc2M0QNCivnmL4gPiB5xK1uOyAjNzYzRQ0KK+eYvyA+IHnErW5nOyAjNzYzRg0KK+eZgCA+IGh1w6FuZzsgIzc2NDANCivnmYEgPiBmw7o7ICM3NjQxDQor55mCID4gbGnDoW87ICM3NjQyDQor55mDID4gbMOzbmc7ICM3NjQzDQor55mEID4gcWnDoW87ICM3NjQ0DQor55mFID4gbMOtdTsgIzc2NDUNCivnmYYgPiBsw6FvOyAjNzY0Ng0KK+eZhyA+IHhpw6FuOyAjNzY0Nw0KK+eZiCA+IGbDqGk7ICM3NjQ4DQor55mJID4gZMOgbjsgIzc2NDkNCivnmYogPiB5w6xuOyAjNzY0QQ0KK+eZiyA+IGjDqDsgIzc2NEINCivnmYwgPiB5w6FuOyAjNzY0Qw0KK+eZjSA+IGLEgW47ICM3NjREDQor55mOID4geGnDoW47ICM3NjRFDQor55mPID4gZ3XEgW47ICM3NjRGDQor55mQID4gZ3XDoGk7ICM3NjUwDQor55mRID4gbsOzbmc7ICM3NjUxDQor55mSID4gecO5OyAjNzY1Mg0KK+eZkyA+IHfDqWk7ICM3NjUzDQor55mUID4gecOsOyAjNzY1NA0KK+eZlSA+IHnFjW5nOyAjNzY1NQ0KK+eZliA+IHDErTsgIzc2NTYNCivnmZcgPiBsxJVpOyAjNzY1Nw0KK+eZmCA+IGzDrDsgIzc2NTgNCivnmZkgPiBzaMWtOyAjNzY1OQ0KK+eZmiA+IGTDoG47ICM3NjVBDQor55mbID4gbMStbjsgIzc2NUINCivnmZwgPiBkacOgbjsgIzc2NUMNCivnmZ0gPiBsxK1uOyAjNzY1RA0KK+eZniA+IGzDoGk7ICM3NjVFDQor55mfID4gcGnEkzsgIzc2NUYNCivnmaAgPiBqw6w7ICM3NjYwDQor55mhID4gY2jEqzsgIzc2NjENCivnmaIgPiB5xINuZzsgIzc2NjINCivnmaMgPiB4acSDbjsgIzc2NjMNCivnmaQgPiBqacOpOyAjNzY2NA0KK+eZpSA+IHpoxJNuZzsgIzc2NjUNCivnmacgPiBsw6w7ICM3NjY3DQor55moID4gaMO5bzsgIzc2NjgNCivnmakgPiBsw6BpOyAjNzY2OQ0KK+eZqyA+IGRpxIFuOyAjNzY2Qg0KK+eZrCA+IHhpxINuOyAjNzY2Qw0KK+eZrSA+IHnErW5nOyAjNzY2RA0KK+eZriA+IHnErW47ICM3NjZFDQor55mvID4gccO6OyAjNzY2Rg0KK+eZsCA+IHnFjW5nOyAjNzY3MA0KK+eZsSA+IHTEgW47ICM3NjcxDQor55myID4gZGnEgW47ICM3NjcyDQor55mzID4gbMWtbzsgIzc2NzMNCivnmbQgPiBsx5hhbjsgIzc2NzQNCivnmbUgPiBsdcOhbjsgIzc2NzUNCivnmbYgPiBixY07ICM3Njc2DQor55m4ID4gZ8WtaTsgIzc2NzgNCivnmbkgPiBwxY07ICM3Njc5DQor55m6ID4gZsSBOyAjNzY3QQ0KK+eZuyA+IGTEk25nOyAjNzY3Qg0KK+eZvCA+IGbEgTsgIzc2N0MNCivnmb0gPiBiw6FpOyAjNzY3RA0KK+eZviA+IGLEg2k7ICM3NjdFDQor55m/ID4gcWnDqTsgIzc2N0YNCivnmoAgPiBixKs7ICM3NjgwDQor55qBID4gesOgbzsgIzc2ODENCivnmoIgPiB6w6BvOyAjNzY4Mg0KK+eagyA+IG3DoG87ICM3NjgzDQor55qEID4gZGU7ICM3Njg0DQor55qFID4gcMSBOyAjNzY4NQ0KK+eahiA+IGppxJM7ICM3Njg2DQor55qHID4gaHXDoW5nOyAjNzY4Nw0KK+eaiCA+IGfFq2k7ICM3Njg4DQor55qJID4gY8StOyAjNzY4OQ0KK+eaiiA+IGzDrW5nOyAjNzY4QQ0KK+eaiyA+IGfEgW87ICM3NjhCDQor55qMID4gbcOyOyAjNzY4Qw0KK+eajSA+IGrDrTsgIzc2OEQNCivnmo4gPiBqacSDbzsgIzc2OEUNCivnmo8gPiBwxJVuZzsgIzc2OEYNCivnmpAgPiBnxIFvOyAjNzY5MA0KK+eakSA+IMOhaTsgIzc2OTENCivnmpIgPiDDqTsgIzc2OTINCivnmpMgPiBow6BvOyAjNzY5Mw0KK+ealCA+IGjDoG47ICM3Njk0DQor55qVID4gYsSrOyAjNzY5NQ0KK+ealiA+IHfEg247ICM3Njk2DQor55qXID4gY2jDs3U7ICM3Njk3DQor55qYID4gcWnDoG47ICM3Njk4DQor55qZID4geMSrOyAjNzY5OQ0KK+eamiA+IMOhaTsgIzc2OUENCivnmpsgPiBqxK1vbmc7ICM3NjlCDQor55qcID4gaMOgbzsgIzc2OUMNCivnmp0gPiBodcSDbmc7ICM3NjlEDQor55qeID4gaMOgbzsgIzc2OUUNCivnmp8gPiB6w6k7ICM3NjlGDQor55qgID4gY8WtaTsgIzc2QTANCivnmqEgPiBow6BvOyAjNzZBMQ0KK+eaoiA+IHhpxINvOyAjNzZBMg0KK+eaoyA+IHnDqDsgIzc2QTMNCivnmqQgPiBww7M7ICM3NkE0DQor55qlID4gaMOgbzsgIzc2QTUNCivnmqYgPiBqacSDbzsgIzc2QTYNCivnmqcgPiDDoGk7ICM3NkE3DQor55qoID4geMSrbmc7ICM3NkE4DQor55qpID4gaHXDoG5nOyAjNzZBOQ0KK+eaqiA+IGzDrDsgIzc2QUENCivnmqsgPiBwacSDbzsgIzc2QUINCivnmqwgPiBow6g7ICM3NkFDDQor55qtID4gamnDoG87ICM3NkFEDQor55quID4gcMOtOyAjNzZBRQ0KK+earyA+IGfEg247ICM3NkFGDQor55qwID4gcMOgbzsgIzc2QjANCivnmrEgPiB6aMOydTsgIzc2QjENCivnmrIgPiBqxatuOyAjNzZCMg0KK+easyA+IHHDrXU7ICM3NkIzDQor55q0ID4gY8WrbjsgIzc2QjQNCivnmrUgPiBxdcOoOyAjNzZCNQ0KK+eatiA+IHpoxIE7ICM3NkI2DQor55q3ID4gZ8WtOyAjNzZCNw0KK+eauCA+IGrFq247ICM3NkI4DQor55q5ID4gasWrbjsgIzc2QjkNCivnmrogPiB6aMOydTsgIzc2QkENCivnmrsgPiB6aMSBOyAjNzZCQg0KK+eavCA+IGfFrTsgIzc2QkMNCivnmr0gPiB6aMSDbjsgIzc2QkQNCivnmr4gPiBkw7o7ICM3NkJFDQor55q/ID4gbcStbjsgIzc2QkYNCivnm4AgPiBxxK07ICM3NkMwDQor55uBID4gecOtbmc7ICM3NkMxDQor55uCID4gecO6OyAjNzZDMg0KK+ebgyA+IGLEk2k7ICM3NkMzDQor55uEID4gemjEgW87ICM3NkM0DQor55uFID4gemjFjW5nOyAjNzZDNQ0KK+ebhiA+IHDDqW47ICM3NkM2DQor55uHID4gaMOpOyAjNzZDNw0KK+ebiCA+IHnDrW5nOyAjNzZDOA0KK+ebiSA+IGjDqTsgIzc2QzkNCivnm4ogPiB5w6w7ICM3NkNBDQor55uLID4gYsWNOyAjNzZDQg0KK+ebjCA+IHfEg247ICM3NkNDDQor55uNID4gaMOpOyAjNzZDRA0KK+ebjiA+IMOgbmc7ICM3NkNFDQor55uPID4gemjEg247ICM3NkNGDQor55uQID4gecOhbjsgIzc2RDANCivnm5EgPiBqacSBbjsgIzc2RDENCivnm5IgPiBow6k7ICM3NkQyDQor55uTID4gecWrOyAjNzZEMw0KK+eblCA+IGvFq2k7ICM3NkQ0DQor55uVID4gZsOgbjsgIzc2RDUNCivnm5YgPiBnw6BpOyAjNzZENg0KK+eblyA+IGTDoG87ICM3NkQ3DQor55uYID4gcMOhbjsgIzc2RDgNCivnm5kgPiBmxa07ICM3NkQ5DQor55uaID4gccOtdTsgIzc2REENCivnm5sgPiBzaMOobmc7ICM3NkRCDQor55ucID4gZMOgbzsgIzc2REMNCivnm50gPiBsw7k7ICM3NkREDQor55ueID4gemjEg247ICM3NkRFDQor55ufID4gbcOpbmc7ICM3NkRGDQor55ugID4gbMStOyAjNzZFMA0KK+eboSA+IGrDrG47ICM3NkUxDQor55uiID4geMO5OyAjNzZFMg0KK+eboyA+IGppxIFuOyAjNzZFMw0KK+ebpCA+IHDDoW47ICM3NkU0DQor55ulID4gZ3XDoG47ICM3NkU1DQor55umID4gxIFuOyAjNzZFNg0KK+ebpyA+IGzDujsgIzc2RTcNCivnm6ggPiBzaMWtOyAjNzZFOA0KK+ebqSA+IHpoxY11OyAjNzZFOQ0KK+ebqiA+IGTDoG5nOyAjNzZFQQ0KK+ebqyA+IMSBbjsgIzc2RUINCivnm6wgPiBnxa07ICM3NkVDDQor55utID4gbMOsOyAjNzZFRA0KK+ebriA+IG3DuTsgIzc2RUUNCivnm68gPiBjaMOpbmc7ICM3NkVGDQor55uwID4gZ8SDbjsgIzc2RjANCivnm7EgPiB4xas7ICM3NkYxDQor55uyID4gbcOhbmc7ICM3NkYyDQor55uzID4gbcOhbmc7ICM3NkYzDQor55u0ID4gemjDrTsgIzc2RjQNCivnm7UgPiBxw6w7ICM3NkY1DQor55u2ID4gcnXEg247ICM3NkY2DQor55u3ID4gdGnDoW47ICM3NkY3DQor55u4ID4geGnEgW5nOyAjNzZGOA0KK+ebuSA+IGTDuW47ICM3NkY5DQor55u6ID4geMSrbjsgIzc2RkENCivnm7sgPiB4w6w7ICM3NkZCDQor55u8ID4gcMOgbjsgIzc2RkMNCivnm70gPiBmxJNuZzsgIzc2RkQNCivnm74gPiBkw7luOyAjNzZGRQ0KK+ebvyA+IG3DrW47ICM3NkZGDQor55yAID4gbcOtbmc7ICM3NzAwDQor55yBID4gc2jElW5nOyAjNzcwMQ0KK+ecgiA+IHNow6w7ICM3NzAyDQor55yDID4gecO6bjsgIzc3MDMNCivnnIQgPiBtacSDbjsgIzc3MDQNCivnnIUgPiBwxIFuOyAjNzcwNQ0KK+echiA+IGbEg25nOyAjNzcwNg0KK+echyA+IG1pxINvOyAjNzcwNw0KK+eciCA+IGTEgW47ICM3NzA4DQor55yJID4gbcOpaTsgIzc3MDkNCivnnIogPiBtw6BvOyAjNzcwQQ0KK+eciyA+IGvDoG47ICM3NzBCDQor55yMID4geGnDoG47ICM3NzBDDQor55yNID4gxY11OyAjNzcwRA0KK+ecjiA+IHNow6w7ICM3NzBFDQor55yPID4gecSBbmc7ICM3NzBGDQor55yQID4gemjEk25nOyAjNzcxMA0KK+eckSA+IHnEg287ICM3NzExDQor55ySID4gc2jDqG47ICM3NzEyDQor55yTID4gaMO5bzsgIzc3MTMNCivnnJQgPiBkw6A7ICM3NzE0DQor55yVID4gemjElW47ICM3NzE1DQor55yWID4ga3XDoG5nOyAjNzcxNg0KK+eclyA+IGrFqzsgIzc3MTcNCivnnJggPiBzaMOobjsgIzc3MTgNCivnnJkgPiBjaMOsOyAjNzcxOQ0KK+ecmiA+IHNoxJVuZzsgIzc3MUENCivnnJsgPiBtw6hpOyAjNzcxQg0KK+ecnCA+IG3DsjsgIzc3MUMNCivnnJ0gPiB6aMO5OyAjNzcxRA0KK+ecniA+IHpoxJNuOyAjNzcxRQ0KK+ecnyA+IHpoxJNuOyAjNzcxRg0KK+ecoCA+IG1pw6FuOyAjNzcyMA0KK+ecoSA+IGTEqzsgIzc3MjENCivnnKIgPiB5dcSBbjsgIzc3MjINCivnnKMgPiBkacOpOyAjNzcyMw0KK+ecpCA+IHnDrTsgIzc3MjQNCivnnKUgPiB6w6w7ICM3NzI1DQor55ymID4gesOsOyAjNzcyNg0KK+ecpyA+IGNoxINvOyAjNzcyNw0KK+ecqCA+IHpoxIM7ICM3NzI4DQor55ypID4geHXDoG47ICM3NzI5DQor55yqID4gYsStbmc7ICM3NzJBDQor55yrID4gbcStOyAjNzcyQg0KK+ecrCA+IGzDs25nOyAjNzcyQw0KK+ecrSA+IHPFq2k7ICM3NzJEDQor55yuID4gZMOybmc7ICM3NzJFDQor55yvID4gbcStOyAjNzcyRg0KK+ecsCA+IGRpw6k7ICM3NzMwDQor55yxID4gecOtOyAjNzczMQ0KK+ecsiA+IMOocjsgIzc3MzINCivnnLMgPiBtxK1uZzsgIzc3MzMNCivnnLQgPiB4dcOgbjsgIzc3MzQNCivnnLUgPiBjaMSrOyAjNzczNQ0KK+ectiA+IGt1w6BuZzsgIzc3MzYNCivnnLcgPiBqdcOgbjsgIzc3MzcNCivnnLggPiBtw7N1OyAjNzczOA0KK+ecuSA+IHpow6huOyAjNzczOQ0KK+ecuiA+IHRpw6BvOyAjNzczQQ0KK+ecuyA+IHnDoW5nOyAjNzczQg0KK+ecvCA+IHnEg247ICM3NzNDDQor55y9ID4gbcOyOyAjNzczRA0KK+ecviA+IHpow7JuZzsgIzc3M0UNCivnnL8gPiBtw6BpOyAjNzczRg0KK+edgCA+IHpow6FvOyAjNzc0MA0KK+edgSA+IHpoxJNuZzsgIzc3NDENCivnnYIgPiBtw6lpOyAjNzc0Mg0KK+edgyA+IGrDuW47ICM3NzQzDQor552EID4gc2jDoG87ICM3NzQ0DQor552FID4gaMOgbjsgIzc3NDUNCivnnYYgPiBodcSDbjsgIzc3NDYNCivnnYcgPiBkw6w7ICM3NzQ3DQor552IID4gY2jElW5nOyAjNzc0OA0KK+ediSA+IGPFq287ICM3NzQ5DQor552KID4ganXDoG47ICM3NzRBDQor552LID4gw6k7ICM3NzRCDQor552MID4gd8SDbjsgIzc3NEMNCivnnY0gPiB4acOgbjsgIzc3NEQNCivnnY4gPiB4xKs7ICM3NzRFDQor552PID4ga8O5bjsgIzc3NEYNCivnnZAgPiBsw6BpOyAjNzc1MA0KK+edkSA+IGppxINuOyAjNzc1MQ0KK+edkiA+IHNoxINuOyAjNzc1Mg0KK+edkyA+IHRpxINuOyAjNzc1Mw0KK+edlCA+IGjFrW47ICM3NzU0DQor552VID4gd8SDbjsgIzc3NTUNCivnnZYgPiBsw61uZzsgIzc3NTYNCivnnZcgPiBzaMOsOyAjNzc1Nw0KK+edmCA+IHHDrW9uZzsgIzc3NTgNCivnnZkgPiBsacOoOyAjNzc1OQ0KK+edmiA+IHnDoWk7ICM3NzVBDQor552bID4gasSrbmc7ICM3NzVCDQor552cID4gemjEk25nOyAjNzc1Qw0KK+ednSA+IGzDrTsgIzc3NUQNCivnnZ4gPiBsw6BpOyAjNzc1RQ0KK+ednyA+IHPDuWk7ICM3NzVGDQor552gID4ganXDoG47ICM3NzYwDQor552hID4gc2jDuWk7ICM3NzYxDQor552iID4gc8WraTsgIzc3NjINCivnnaMgPiBkxas7ICM3NzYzDQor552kID4gYsOsOyAjNzc2NA0KK+edpSA+IGLDrDsgIzc3NjUNCivnnaYgPiBtw7k7ICM3NzY2DQor552nID4gaMWrbjsgIzc3NjcNCivnnaggPiBuw6w7ICM3NzY4DQor552pID4gbMO5OyAjNzc2OQ0KK+edqiA+IHnDrDsgIzc3NkENCivnnasgPiBqacOpOyAjNzc2Qg0KK+edrCA+IGPEg2k7ICM3NzZDDQor552tID4gemjFj3U7ICM3NzZEDQor552uID4gecO6OyAjNzc2RQ0KK+edryA+IGjFq247ICM3NzZGDQor552wID4gbcOgOyAjNzc3MA0KK+edsSA+IHhpw6A7ICM3NzcxDQor552yID4geMStbmc7ICM3NzcyDQor552zID4geMSrOyAjNzc3Mw0KK+edtCA+IGfDuW47ICM3Nzc0DQor5521ID4gY2FpOyAjNzc3NQ0KK+edtiA+IGNoxa1uOyAjNzc3Ng0KK+edtyA+IGppxIFuOyAjNzc3Nw0KK+eduCA+IG3DqGk7ICM3Nzc4DQor5525ID4gZMWtOyAjNzc3OQ0KK+eduiA+IGjDs3U7ICM3NzdBDQor5527ID4geHXEgW47ICM3NzdCDQor5528ID4gdMOsOyAjNzc3Qw0KK+edvSA+IGvDumk7ICM3NzdEDQor552+ID4gZ8SBbzsgIzc3N0UNCivnnb8gPiByw7lpOyAjNzc3Rg0KK+eegCA+IG3DsnU7ICM3NzgwDQor556BID4geMO5OyAjNzc4MQ0KK+eegiA+IGbEgTsgIzc3ODINCivnnoMgPiB3xJNuOyAjNzc4Mw0KK+eehCA+IG1pw6FvOyAjNzc4NA0KK+eehSA+IGNoxY91OyAjNzc4NQ0KK+eehiA+IGvDuWk7ICM3Nzg2DQor556HID4gbcSrOyAjNzc4Nw0KK+eeiCA+IHfElW5nOyAjNzc4OA0KK+eeiSA+IGvDsnU7ICM3Nzg5DQor556KID4gZMOgbmc7ICM3NzhBDQor556LID4gY2jEk247ICM3NzhCDQor556MID4ga8STOyAjNzc4Qw0KK+eejSA+IHPFj3U7ICM3NzhEDQor556OID4geGnEgTsgIzc3OEUNCivnno8gPiBxw61vbmc7ICM3NzhGDQor556QID4gbcOgbzsgIzc3OTANCivnnpEgPiBtw61uZzsgIzc3OTENCivnnpIgPiBtw6FuOyAjNzc5Mg0KK+eekyA+IHNow7lpOyAjNzc5Mw0KK+eelCA+IHrDqTsgIzc3OTQNCivnnpUgPiB6aMOgbmc7ICM3Nzk1DQor556WID4gecOsOyAjNzc5Ng0KK+eelyA+IGRpxIFvOyAjNzc5Nw0KK+eemCA+IMWNdTsgIzc3OTgNCivnnpkgPiBtw7I7ICM3Nzk5DQor556aID4gc2jDuW47ICM3NzlBDQor556bID4gY8WNbmc7ICM3NzlCDQor556cID4gbMWNdTsgIzc3OUMNCivnnp0gPiBjaMSrOyAjNzc5RA0KK+eeniA+IG3DoW47ICM3NzlFDQor556fID4gcGnEg287ICM3NzlGDQor556gID4gY2jEk25nOyAjNzdBMA0KK+eeoSA+IGrDrDsgIzc3QTENCivnnqIgPiBtw6luZzsgIzc3QTINCivnnqQgPiByw7puOyAjNzdBNA0KK+eepSA+IHBpxJM7ICM3N0E1DQor556mID4geMSrOyAjNzdBNg0KK+eepyA+IHFpw6FvOyAjNzdBNw0KK+eeqCA+IHDDujsgIzc3QTgNCivnnqkgPiB6aMWtOyAjNzdBOQ0KK+eeqiA+IGTDqG5nOyAjNzdBQQ0KK+eeqyA+IHNoxJVuOyAjNzdBQg0KK+eerCA+IHNow7luOyAjNzdBQw0KK+eerSA+IGxpxINvOyAjNzdBRA0KK+eeriA+IGNow6g7ICM3N0FFDQor556vID4geGnDoW47ICM3N0FGDQor556wID4ga8OgbjsgIzc3QjANCivnnrEgPiB5w6g7ICM3N0IxDQor556yID4geMO5OyAjNzdCMg0KK+eesyA+IHTDs25nOyAjNzdCMw0KK+eetCA+IG3Ds3U7ICM3N0I0DQor5561ID4gbMOtbjsgIzc3QjUNCivnnrYgPiBrw7lpOyAjNzdCNg0KK+eetyA+IHhpw6FuOyAjNzdCNw0KK+eeuCA+IHnDqDsgIzc3QjgNCivnnrkgPiDDoGk7ICM3N0I5DQor5566ID4gaMO5aTsgIzc3QkENCivnnrsgPiB6aMSBbjsgIzc3QkINCivnnrwgPiBqacSDbjsgIzc3QkMNCivnnr0gPiBnxa07ICM3N0JEDQor556+ID4gemjDoG87ICM3N0JFDQor556/ID4gccWrOyAjNzdCRg0KK+efgCA+IHfDqWk7ICM3N0MwDQor55+BID4gY2jFj3U7ICM3N0MxDQor55+CID4gc8OgbzsgIzc3QzINCivnn4MgPiBuxK1uZzsgIzc3QzMNCivnn4QgPiB4xatuOyAjNzdDNA0KK+efhSA+IHnDoG87ICM3N0M1DQor55+GID4gaMO5bzsgIzc3QzYNCivnn4cgPiBtw6luZzsgIzc3QzcNCivnn4ggPiBtacOhbjsgIzc3QzgNCivnn4kgPiBixKtuOyAjNzdDOQ0KK+efiiA+IG1pw6FuOyAjNzdDQQ0KK+efiyA+IGzDrDsgIzc3Q0INCivnn4wgPiBrdcOgbmc7ICM3N0NDDQor55+NID4ganXDqTsgIzc3Q0QNCivnn44gPiB4dcSBbjsgIzc3Q0UNCivnn48gPiBtacOhbjsgIzc3Q0YNCivnn5AgPiBow7lvOyAjNzdEMA0KK+efkSA+IGzDujsgIzc3RDENCivnn5IgPiBtw6luZzsgIzc3RDINCivnn5MgPiBsw7NuZzsgIzc3RDMNCivnn5QgPiBndcOgbjsgIzc3RDQNCivnn5UgPiBtxINuOyAjNzdENQ0KK+efliA+IHjErTsgIzc3RDYNCivnn5cgPiBjaMO5OyAjNzdENw0KK+efmCA+IHTEg25nOyAjNzdEOA0KK+efmSA+IGvDoG47ICM3N0Q5DQor55+aID4gemjFrTsgIzc3REENCivnn5sgPiBtw6FvOyAjNzdEQg0KK+efnCA+IGrEq247ICM3N0RDDQor55+dID4gbMOtbjsgIzc3REQNCivnn54gPiB5w7k7ICM3N0RFDQor55+fID4gc2jDuW87ICM3N0RGDQor55+gID4gY8OoOyAjNzdFMA0KK+efoSA+IGp1w6k7ICM3N0UxDQor55+iID4gc2jErTsgIzc3RTINCivnn6MgPiB5xK07ICM3N0UzDQor55+kID4gc2jElW47ICM3N0U0DQor55+lID4gemjEqzsgIzc3RTUNCivnn6YgPiBow7N1OyAjNzdFNg0KK+efpyA+IHNoxJVuOyAjNzdFNw0KK+efqCA+IHnErW5nOyAjNzdFOA0KK+efqSA+IGrFrTsgIzc3RTkNCivnn6ogPiB6aMWNdTsgIzc3RUENCivnn6sgPiBqacSDbzsgIzc3RUINCivnn6wgPiBjw7pvOyAjNzdFQw0KK+efrSA+IGR1xINuOyAjNzdFRA0KK+efriA+IMSDaTsgIzc3RUUNCivnn68gPiBqacSDbzsgIzc3RUYNCivnn7AgPiB6xJNuZzsgIzc3RjANCivnn7EgPiBow7lvOyAjNzdGMQ0KK+efsiA+IGLEg2k7ICM3N0YyDQor55+zID4gc2jDrTsgIzc3RjMNCivnn7QgPiBkw6xuZzsgIzc3RjQNCivnn7UgPiBxw6w7ICM3N0Y1DQor55+2ID4gasSrOyAjNzdGNg0KK+eftyA+IHrErTsgIzc3RjcNCivnn7ggPiBnxIFuOyAjNzdGOA0KK+efuSA+IHfDuTsgIzc3RjkNCivnn7ogPiB0xatvOyAjNzdGQQ0KK+efuyA+IGvDuTsgIzc3RkINCivnn7wgPiBxacSBbmc7ICM3N0ZDDQor55+9ID4geMOsOyAjNzdGRA0KK+efviA+IGbDoW47ICM3N0ZFDQor55+/ID4ga3XDoG5nOyAjNzdGRg0KK+eggCA+IGTDoG5nOyAjNzgwMA0KK+eggSA+IG3EgzsgIzc4MDENCivnoIIgPiBzaMSBOyAjNzgwMg0KK+eggyA+IGTEgW47ICM3ODAzDQor56CEID4ganXDqTsgIzc4MDQNCivnoIUgPiBsw6w7ICM3ODA1DQor56CGID4gZsWrOyAjNzgwNg0KK+eghyA+IG3DrW47ICM3ODA3DQor56CIID4gbsWtbzsgIzc4MDgNCivnoIkgPiBow7lvOyAjNzgwOQ0KK+egiiA+IGvDoG5nOyAjNzgwQQ0KK+egiyA+IHpoxK07ICM3ODBCDQor56CMID4gccOsOyAjNzgwQw0KK+egjSA+IGvEg247ICM3ODBEDQor56COID4gamnDqDsgIzc4MEUNCivnoI8gPiBmxJNuOyAjNzgwRg0KK+egkCA+IMOoOyAjNzgxMA0KK+egkSA+IHnDoDsgIzc4MTENCivnoJIgPiBwxKs7ICM3ODEyDQor56CTID4gemjDqTsgIzc4MTMNCivnoJQgPiB5w6FuOyAjNzgxNA0KK+eglSA+IHPDuWk7ICM3ODE1DQor56CWID4gemh1xIFuOyAjNzgxNg0KK+eglyA+IGNoxJM7ICM3ODE3DQor56CYID4gZMO5bjsgIzc4MTgNCivnoJkgPiBwxIFuOyAjNzgxOQ0KK+egmiA+IHnDoG47ICM3ODFBDQor56CcID4gZsSTbmc7ICM3ODFDDQor56CdID4gZsOhOyAjNzgxRA0KK+egniA+IG3DsjsgIzc4MUUNCivnoJ8gPiB6aMOgOyAjNzgxRg0KK+egoCA+IHHFqzsgIzc4MjANCivnoKEgPiB5w7k7ICM3ODIxDQor56CiID4gbMWtbzsgIzc4MjINCivnoKMgPiB0w7pvOyAjNzgyMw0KK+egpCA+IHTDum87ICM3ODI0DQor56ClID4gZMStOyAjNzgyNQ0KK+egpiA+IHpow6BpOyAjNzgyNg0KK+egpyA+IHpoxJNuOyAjNzgyNw0KK+egqCA+IMOgaTsgIzc4MjgNCivnoKkgPiBmw6hpOyAjNzgyOQ0KK+egqiA+IG3FrTsgIzc4MkENCivnoKsgPiB6aMWtOyAjNzgyQg0KK+egrCA+IGzDrDsgIzc4MkMNCivnoK0gPiBiacSBbjsgIzc4MkQNCivnoK4gPiBuxa07ICM3ODJFDQor56CvID4gcMSrbmc7ICM3ODJGDQor56CwID4gcMSTbmc7ICM3ODMwDQor56CxID4gbMOtbmc7ICM3ODMxDQor56CyID4gcMOgbzsgIzc4MzINCivnoLMgPiBsw6g7ICM3ODMzDQor56C0ID4gcMOyOyAjNzgzNA0KK+egtSA+IGLFjTsgIzc4MzUNCivnoLYgPiBww7I7ICM3ODM2DQor56C3ID4gc2jEk247ICM3ODM3DQor56C4ID4gesOhOyAjNzgzOA0KK+eguSA+IG7FrW87ICM3ODM5DQor56C6ID4gbMOsOyAjNzgzQQ0KK+eguyA+IGzDs25nOyAjNzgzQg0KK+egvCA+IHTDs25nOyAjNzgzQw0KK+egviA+IGzDrDsgIzc4M0UNCivnoYAgPiBjaMWtOyAjNzg0MA0KK+ehgSA+IGvEk25nOyAjNzg0MQ0KK+ehgiA+IHF1w6FuOyAjNzg0Mg0KK+ehgyA+IHpoxas7ICM3ODQzDQor56GEID4ga3XEgW5nOyAjNzg0NA0KK+ehhSA+IGjDuW87ICM3ODQ1DQor56GGID4gw6g7ICM3ODQ2DQor56GHID4gbsOhbzsgIzc4NDcNCivnoYggPiBqacOhOyAjNzg0OA0KK+ehiSA+IGzDuTsgIzc4NDkNCivnoYogPiB3xJVpOyAjNzg0QQ0KK+ehiyA+IMOgaTsgIzc4NEINCivnoYwgPiBsw7lvOyAjNzg0Qw0KK+ehjSA+IGvDqG47ICM3ODREDQor56GOID4geMOtbmc7ICM3ODRFDQor56GPID4gecOhbjsgIzc4NEYNCivnoZAgPiB0w7NuZzsgIzc4NTANCivnoZEgPiBwxJNuZzsgIzc4NTENCivnoZIgPiB4xKs7ICM3ODUyDQor56GUID4gaMOzbmc7ICM3ODU0DQor56GVID4gc2jDuW87ICM3ODU1DQor56GWID4geGnDoTsgIzc4NTYNCivnoZcgPiBxacSBbzsgIzc4NTcNCivnoZkgPiB3w6hpOyAjNzg1OQ0KK+ehmiA+IHFpw6FvOyAjNzg1QQ0KK+ehnCA+IGvEk25nOyAjNzg1Qw0KK+ehnSA+IHhpxIFvOyAjNzg1RA0KK+ehniA+IHF1w6g7ICM3ODVFDQor56GfID4gY2jDoG47ICM3ODVGDQor56GgID4gbMSDbmc7ICM3ODYwDQor56GhID4gaMOzbmc7ICM3ODYxDQor56GiID4gecO6OyAjNzg2Mg0KK+ehoyA+IHhpxIFvOyAjNzg2Mw0KK+ehpCA+IHhpw6E7ICM3ODY0DQor56GlID4gbcSDbmc7ICM3ODY1DQor56GmID4gbMOybmc7ICM3ODY2DQor56GnID4gxK1vbmc7ICM3ODY3DQor56GoID4gY2jEkzsgIzc4NjgNCivnoakgPiBjaMOoOyAjNzg2OQ0KK+ehqiA+IMOpOyAjNzg2QQ0KK+ehqyA+IGzDrXU7ICM3ODZCDQor56GsID4gecOsbmc7ICM3ODZDDQor56GtID4gbcOhbmc7ICM3ODZEDQor56GuID4gcXXDqDsgIzc4NkUNCivnoa8gPiB5w6BuOyAjNzg2Rg0KK+ehsCA+IHNoxIE7ICM3ODcwDQor56GxID4ga8WtbjsgIzc4NzENCivnobIgPiB5w7k7ICM3ODcyDQor56G1ID4gbMWtOyAjNzg3NQ0KK+ehtiA+IGNoxJVuOyAjNzg3Ng0KK+ehtyA+IGppxINuOyAjNzg3Nw0KK+ehuCA+IG51w6g7ICM3ODc4DQor56G5ID4gc8WNbmc7ICM3ODc5DQor56G6ID4gemjDum87ICM3ODdBDQor56G7ID4ga8STbmc7ICM3ODdCDQor56G8ID4gcMOpbmc7ICM3ODdDDQor56G9ID4gecSDbjsgIzc4N0QNCivnob4gPiB6aMO5aTsgIzc4N0UNCivnob8gPiBrxY1uZzsgIzc4N0YNCivnooAgPiBjw6luZzsgIzc4ODANCivnooEgPiBxw607ICM3ODgxDQor56KCID4gesOybmc7ICM3ODgyDQor56KDID4gccOsbmc7ICM3ODgzDQor56KEID4gbMOtbjsgIzc4ODQNCivnooUgPiBqxatuOyAjNzg4NQ0KK+eihiA+IGLFjTsgIzc4ODYNCivnoocgPiBkw6xuZzsgIzc4ODcNCivnooggPiBtw61uOyAjNzg4OA0KK+eiiSA+IGRpxIFvOyAjNzg4OQ0KK+eiiiA+IGppxIFuOyAjNzg4QQ0KK+eiiyA+IGjDqDsgIzc4OEINCivnoowgPiBsw7k7ICM3ODhDDQor56KNID4gw6BpOyAjNzg4RA0KK+eijiA+IHPDuWk7ICM3ODhFDQor56KPID4gcXXDqDsgIzc4OEYNCivnopAgPiBsw61uZzsgIzc4OTANCivnopEgPiBixJNpOyAjNzg5MQ0KK+eikiA+IHnDrW47ICM3ODkyDQor56KTID4gZMO5aTsgIzc4OTMNCivnopQgPiB3xa07ICM3ODk0DQor56KVID4gccOtOyAjNzg5NQ0KK+eiliA+IGzDuW47ICM3ODk2DQor56KXID4gd8SDbjsgIzc4OTcNCivnopggPiBkacSDbjsgIzc4OTgNCivnopkgPiBnxIFuZzsgIzc4OTkNCivnopogPiBww6lpOyAjNzg5QQ0KK+eimyA+IHHDrDsgIzc4OUINCivnopwgPiBjaMSVbjsgIzc4OUMNCivnop0gPiBydcSDbjsgIzc4OUQNCivnop4gPiB5w6FuOyAjNzg5RQ0KK+einyA+IGRpw6k7ICM3ODlGDQor56KgID4gZMOsbmc7ICM3OEEwDQor56KhID4gZMO6OyAjNzhBMQ0KK+eioiA+IHTDum87ICM3OEEyDQor56KjID4gamnDqTsgIzc4QTMNCivnoqQgPiB5xKtuZzsgIzc4QTQNCivnoqUgPiBiacSDbjsgIzc4QTUNCivnoqYgPiBrw6g7ICM3OEE2DQor56KnID4gYsOsOyAjNzhBNw0KK+eiqCA+IHfEk2k7ICM3OEE4DQor56KpID4gc2jDuW87ICM3OEE5DQor56KqID4gemjEk247ICM3OEFBDQor56KrID4gZHXDoG47ICM3OEFCDQor56KsID4geGnDoTsgIzc4QUMNCivnoq0gPiBkw6BuZzsgIzc4QUQNCivnoq4gPiB0w607ICM3OEFFDQor56KvID4gbsSDbzsgIzc4QUYNCivnorAgPiBww6huZzsgIzc4QjANCivnorEgPiBqacSDbjsgIzc4QjENCivnorIgPiBkw6w7ICM3OEIyDQor56KzID4gdMOgbjsgIzc4QjMNCivnorQgPiBjaMOhOyAjNzhCNA0KK+eitiA+IHHDrDsgIzc4QjYNCivnorggPiBmxJNuZzsgIzc4QjgNCivnorkgPiB4dcOgbjsgIzc4QjkNCivnorogPiBxdcOoOyAjNzhCQQ0KK+eiuyA+IHF1w6g7ICM3OEJCDQor56K8ID4gbcSDOyAjNzhCQw0KK+eivSA+IGfFjW5nOyAjNzhCRA0KK+eiviA+IG5pw6BuOyAjNzhCRQ0KK+eivyA+IHPDuTsgIzc4QkYNCivno4AgPiDDqTsgIzc4QzANCivno4EgPiBjw607ICM3OEMxDQor56OCID4gbMOsdTsgIzc4QzINCivno4MgPiBzxKs7ICM3OEMzDQor56OEID4gdMOhbmc7ICM3OEM0DQor56OFID4gYsOgbmc7ICM3OEM1DQor56OGID4gaHXDoTsgIzc4QzYNCivno4cgPiBwxKs7ICM3OEM3DQor56OIID4gd8SVaTsgIzc4QzgNCivno4kgPiBzxINuZzsgIzc4QzkNCivno4ogPiBsxJVpOyAjNzhDQQ0KK+ejiyA+IGPFq287ICM3OENCDQor56OMID4gemjEk247ICM3OENDDQor56ONID4geGnDoTsgIzc4Q0QNCivno44gPiBxxKs7ICM3OENFDQor56OPID4gbGnDoW47ICM3OENGDQor56OQID4gcMOhbjsgIzc4RDANCivno5EgPiB3w6hpOyAjNzhEMQ0KK+ejkiA+IHnFrW47ICM3OEQyDQor56OTID4gZMWraTsgIzc4RDMNCivno5QgPiB6aMOpOyAjNzhENA0KK+ejlSA+IGvEkzsgIzc4RDUNCivno5YgPiBsxIE7ICM3OEQ2DQor56OYID4gccOsbmc7ICM3OEQ4DQor56OZID4gZ8WtbjsgIzc4RDkNCivno5ogPiB6aHXEgW47ICM3OERBDQor56ObID4gY2jDoW47ICM3OERCDQor56OcID4gccOsOyAjNzhEQw0KK+ejnSA+IMOhbzsgIzc4REQNCivno54gPiBwxJNuZzsgIzc4REUNCivno58gPiBsw7k7ICM3OERGDQor56OgID4gbMWtOyAjNzhFMA0KK+ejoSA+IGvDoG47ICM3OEUxDQor56OiID4gcWnEg25nOyAjNzhFMg0KK+ejoyA+IGNoxJVuOyAjNzhFMw0KK+ejpCA+IHnErW47ICM3OEU0DQor56OlID4gbMSVaTsgIzc4RTUNCivno6YgPiBiacSBbzsgIzc4RTYNCivno6cgPiBxw6w7ICM3OEU3DQor56OoID4gbcOzOyAjNzhFOA0KK+ejqSA+IHHEqzsgIzc4RTkNCivno6ogPiBjxatpOyAjNzhFQQ0KK+ejqyA+IHrFjW5nOyAjNzhFQg0KK+ejrCA+IHHDrG5nOyAjNzhFQw0KK+ejrSA+IGNow7lvOyAjNzhFRA0KK+ejryA+IGrEqzsgIzc4RUYNCivno7AgPiBzaMOgbjsgIzc4RjANCivno7EgPiBsw6FvOyAjNzhGMQ0KK+ejsiA+IHHDujsgIzc4RjINCivno7MgPiB6xJNuZzsgIzc4RjMNCivno7QgPiBkw6huZzsgIzc4RjQNCivno7UgPiBqacOgbjsgIzc4RjUNCivno7YgPiB4w6w7ICM3OEY2DQor56O3ID4gbMOsbjsgIzc4RjcNCivno7ggPiBkw6xuZzsgIzc4RjgNCivno7kgPiBkacOgbjsgIzc4RjkNCivno7ogPiBodcOhbmc7ICM3OEZBDQor56O7ID4gcMOhbjsgIzc4RkINCivno7wgPiB6w6E7ICM3OEZDDQor56O9ID4gcWnEgW87ICM3OEZEDQor56O+ID4gZMSrOyAjNzhGRQ0KK+ejvyA+IGzDrDsgIzc4RkYNCivnpIEgPiBqacSBbzsgIzc5MDENCivnpIMgPiB6aMSDbmc7ICM3OTAzDQor56SEID4gcWnDoW87ICM3OTA0DQor56SFID4gZMWrbjsgIzc5MDUNCivnpIYgPiB4acSDbjsgIzc5MDYNCivnpIcgPiB5w7k7ICM3OTA3DQor56SIID4gemjDuWk7ICM3OTA4DQor56SJID4gaMOpOyAjNzkwOQ0KK+ekiiA+IGjDuW87ICM3OTBBDQor56SLID4gemjDoWk7ICM3OTBCDQor56SMID4gbMOoaTsgIzc5MEMNCivnpI0gPiBrxJU7ICM3OTBEDQor56SOID4gY2jFrTsgIzc5MEUNCivnpI8gPiBqw607ICM3OTBGDQor56SQID4gcXXDqDsgIzc5MTANCivnpJEgPiBkw6BuZzsgIzc5MTENCivnpJIgPiB5xK07ICM3OTEyDQor56STID4gamnEgW5nOyAjNzkxMw0KK+eklCA+IHDDrDsgIzc5MTQNCivnpJUgPiBwxKs7ICM3OTE1DQor56SWID4gecO5OyAjNzkxNg0KK+eklyA+IHDEq247ICM3OTE3DQor56SYID4gccOsOyAjNzkxOA0KK+ekmSA+IMOgaTsgIzc5MTkNCivnpJogPiBrw6BpOyAjNzkxQQ0KK+ekmyA+IGppxIFuOyAjNzkxQg0KK+eknCA+IHnDuTsgIzc5MUMNCivnpJ0gPiBydcSDbjsgIzc5MUQNCivnpJ4gPiBtw6luZzsgIzc5MUUNCivnpJ8gPiBww6BvOyAjNzkxRg0KK+ekoCA+IGPDrTsgIzc5MjANCivnpKMgPiBtacOoOyAjNzkyMw0KK+ekpCA+IGPEgzsgIzc5MjQNCivnpKUgPiB4acOhbjsgIzc5MjUNCivnpKYgPiBrdcOgbmc7ICM3OTI2DQor56SnID4gbMOoaTsgIzc5MjcNCivnpKggPiBsxJVpOyAjNzkyOA0KK+ekqSA+IHpow6w7ICM3OTI5DQor56SqID4gbMOsOyAjNzkyQQ0KK+ekqyA+IGzDrDsgIzc5MkINCivnpKwgPiBmw6FuOyAjNzkyQw0KK+ekrSA+IHF1w6g7ICM3OTJEDQor56SuID4gcMOgbzsgIzc5MkUNCivnpK8gPiB5xKtuZzsgIzc5MkYNCivnpLAgPiBsw6w7ICM3OTMwDQor56SxID4gbMOzbmc7ICM3OTMxDQor56SyID4gbMOzbmc7ICM3OTMyDQor56SzID4gbcOyOyAjNzkzMw0KK+ektCA+IGLDszsgIzc5MzQNCivnpLUgPiBzaHXEgW5nOyAjNzkzNQ0KK+ektiA+IGd1w6BuOyAjNzkzNg0KK+ektyA+IGzDoW47ICM3OTM3DQor56S4ID4gesSDbjsgIzc5MzgNCivnpLkgPiB5w6FuOyAjNzkzOQ0KK+ekuiA+IHNow6w7ICM3OTNBDQor56S7ID4gc2jDrCcgJ3rDrCcgJ3DDoW5nOyAjNzkzQg0KK+ekvCA+IGzErTsgIzc5M0MNCivnpL0gPiByw6luZzsgIzc5M0QNCivnpL4gPiBzaMOoOyAjNzkzRQ0KK+ekvyA+IHl1w6g7ICM3OTNGDQor56WAID4gc8OsOyAjNzk0MA0KK+elgSA+IHHDrTsgIzc5NDENCivnpYIgPiB0xIE7ICM3OTQyDQor56WDID4gbcOgOyAjNzk0Mw0KK+elhCA+IHhpw6g7ICM3OTQ0DQor56WFID4geGnEgW47ICM3OTQ1DQor56WGID4geGnEgW47ICM3OTQ2DQor56WHID4gemjEqzsgIzc5NDcNCivnpYggPiBxw607ICM3OTQ4DQor56WJID4gemjErTsgIzc5NDkNCivnpYogPiBixJNuZzsgIzc5NEENCivnpYsgPiBkw7lpOyAjNzk0Qg0KK+eljCA+IHpow7JuZzsgIzc5NEMNCivnpY4gPiB5xKs7ICM3OTRFDQor56WPID4gc2jDrTsgIzc5NEYNCivnpZAgPiB5w7J1OyAjNzk1MA0KK+elkSA+IHpow6w7ICM3OTUxDQor56WSID4gdGnDoW87ICM3OTUyDQor56WTID4gZsO6OyAjNzk1Mw0KK+ellCA+IGbDuTsgIzc5NTQNCivnpZUgPiBtw6w7ICM3OTU1DQor56WWID4gesWtOyAjNzk1Ng0KK+ellyA+IHpoxKs7ICM3OTU3DQor56WYID4gc3XDoG47ICM3OTU4DQor56WZID4gbcOoaTsgIzc5NTkNCivnpZogPiB6w7lvOyAjNzk1QQ0KK+elmyA+IHHFqzsgIzc5NUINCivnpZwgPiBow7k7ICM3OTVDDQor56WdID4gemjDuTsgIzc5NUQNCivnpZ4gPiBzaMOpbjsgIzc5NUUNCivnpZ8gPiBzw7lpOyAjNzk1Rg0KK+eloCA+IGPDrTsgIzc5NjANCivnpaEgPiBjaMOhaTsgIzc5NjENCivnpaIgPiBtw607ICM3OTYyDQor56WjID4gbMeaOyAjNzk2Mw0KK+elpCA+IHnFrTsgIzc5NjQNCivnpaUgPiB4acOhbmc7ICM3OTY1DQor56WmID4gd8O6OyAjNzk2Ng0KK+elpyA+IHRpxIFvOyAjNzk2Nw0KK+elqCA+IHBpw6BvOyAjNzk2OA0KK+elqSA+IHpoxas7ICM3OTY5DQor56WqID4gZ8WtaTsgIzc5NkENCivnpasgPiB4acOhOyAjNzk2Qg0KK+elrCA+IHpoxKs7ICM3OTZDDQor56WtID4gasOsOyAjNzk2RA0KK+elriA+IGfDoG87ICM3OTZFDQor56WvID4gemjEk247ICM3OTZGDQor56WwID4gZ8OgbzsgIzc5NzANCivnpbEgPiBzaMO5aTsgIzc5NzENCivnpbIgPiBqxKtuOyAjNzk3Mg0KK+elsyA+IGNoxJVuOyAjNzk3Mw0KK+eltCA+IGfEgWk7ICM3OTc0DQor56W1ID4ga8WtbjsgIzc5NzUNCivnpbYgPiBkw6w7ICM3OTc2DQor56W3ID4gZMSDbzsgIzc5NzcNCivnpbggPiBow7lvOyAjNzk3OA0KK+eluSA+IHTDoW87ICM3OTc5DQor56W6ID4gccOtOyAjNzk3QQ0KK+eluyA+IGfDuTsgIzc5N0INCivnpbwgPiBndcOgbjsgIzc5N0MNCivnpb0gPiB6w7lpOyAjNzk3RA0KK+elviA+IGzDrW5nOyAjNzk3RQ0KK+elvyA+IGzDuTsgIzc5N0YNCivnpoAgPiBixK1uZzsgIzc5ODANCivnpoEgPiBqw6xuOyAjNzk4MQ0KK+emgiA+IGTEg287ICM3OTgyDQor56aDID4gemjDrTsgIzc5ODMNCivnpoQgPiBsw7k7ICM3OTg0DQor56aFID4gc2jDoG47ICM3OTg1DQor56aGID4gYsSTaTsgIzc5ODYNCivnpocgPiB6aMSVOyAjNzk4Nw0KK+emiCA+IGjFq2k7ICM3OTg4DQor56aJID4gecWPdTsgIzc5ODkNCivnpoogPiB4w6w7ICM3OThBDQor56aLID4gecSrbjsgIzc5OEINCivnpowgPiB6xKs7ICM3OThDDQor56aNID4gaMO5bzsgIzc5OEQNCivnpo4gPiB6aMSTbjsgIzc5OEUNCivnpo8gPiBmw7o7ICM3OThGDQor56aQID4geXXDoG47ICM3OTkwDQor56aRID4gd8O6OyAjNzk5MQ0KK+emkiA+IHhpxINuOyAjNzk5Mg0KK+emkyA+IHnDoW5nOyAjNzk5Mw0KK+emlCA+IHTDrTsgIzc5OTQNCivnppUgPiB5xKs7ICM3OTk1DQor56aWID4gbcOpaTsgIzc5OTYNCivnppcgPiBzxKs7ICM3OTk3DQor56aYID4gZMOsOyAjNzk5OA0KK+emmiA+IHpow7pvOyAjNzk5QQ0KK+emmyA+IHpoxJNuOyAjNzk5Qg0KK+emnCA+IHnFj25nOyAjNzk5Qw0KK+emnSA+IGrDrTsgIzc5OUQNCivnpp4gPiBnw6BvOyAjNzk5RQ0KK+emnyA+IHTDoW5nOyAjNzk5Rg0KK+emoCA+IHPEqzsgIzc5QTANCivnpqEgPiBtw6A7ICM3OUExDQor56aiID4gdMSBOyAjNzlBMg0KK+empCA+IHh1xIFuOyAjNzlBNA0KK+empSA+IHHDrTsgIzc5QTUNCivnpqYgPiB5w7k7ICM3OUE2DQor56anID4geMSrOyAjNzlBNw0KK+emqCA+IGrEqzsgIzc5QTgNCivnpqkgPiBzw6w7ICM3OUE5DQor56aqID4gY2jDoW47ICM3OUFBDQor56arID4gdMSDbjsgIzc5QUINCivnpqwgPiBrdcOgaTsgIzc5QUMNCivnpq0gPiBzw7lpOyAjNzlBRA0KK+emriA+IGzErTsgIzc5QUUNCivnpq8gPiBuw7NuZzsgIzc5QUYNCivnprAgPiBuxK07ICM3OUIwDQor56axID4gZMSDbzsgIzc5QjENCivnprIgPiBsw6w7ICM3OUIyDQor56azID4gcsOhbmc7ICM3OUIzDQor56a0ID4geXXDqDsgIzc5QjQNCivnprUgPiB0w607ICM3OUI1DQor56a2ID4gesSDbjsgIzc5QjYNCivnprcgPiBsw6hpOyAjNzlCNw0KK+emuCA+IHLDs3U7ICM3OUI4DQor56a5ID4gecWtOyAjNzlCOQ0KK+emuiA+IHnDujsgIzc5QkENCivnprsgPiBjaMSrOyAjNzlCQg0KK+emvCA+IHhpw6g7ICM3OUJDDQor56a9ID4gccOtbjsgIzc5QkQNCivnpr4gPiBow6k7ICM3OUJFDQor56a/ID4gdMWrOyAjNzlCRg0KK+engCA+IHjDrHU7ICM3OUMwDQor56eBID4gc8SrOyAjNzlDMQ0KK+engiA+IHLDqW47ICM3OUMyDQor56eDID4gdMWrOyAjNzlDMw0KK+enhCA+IHrErTsgIzc5QzQNCivnp4UgPiBjaMOhOyAjNzlDNQ0KK+enhiA+IGfEg247ICM3OUM2DQor56eHID4gecOsOyAjNzlDNw0KK+eniCA+IHhpxIFuOyAjNzlDOA0KK+eniSA+IGLErW5nOyAjNzlDOQ0KK+eniiA+IG5pw6FuOyAjNzlDQQ0KK+eniyA+IHHEq3U7ICM3OUNCDQor56eMID4gccSrdTsgIzc5Q0MNCivnp40gPiBjaMOzbmc7ICM3OUNEDQor56eOID4gZsOpbjsgIzc5Q0UNCivnp48gPiBow6BvOyAjNzlDRg0KK+enkCA+IHnDum47ICM3OUQwDQor56eRID4ga8STOyAjNzlEMQ0KK+enkiA+IG1pxINvOyAjNzlEMg0KK+enkyA+IHpoxKs7ICM3OUQzDQor56eUID4gZ8STbmc7ICM3OUQ0DQor56eVID4gYsStOyAjNzlENQ0KK+enliA+IHpoxKs7ICM3OUQ2DQor56eXID4gecO5OyAjNzlENw0KK+enmCA+IG3DrDsgIzc5RDgNCivnp5kgPiBrw7k7ICM3OUQ5DQor56eaID4gYsOgbjsgIzc5REENCivnp5sgPiBwxKs7ICM3OURCDQor56ecID4gbsOtOyAjNzlEQw0KK+ennSA+IGzDrDsgIzc5REQNCivnp54gPiB5w7N1OyAjNzlERQ0KK+ennyA+IHrFqzsgIzc5REYNCivnp6AgPiBwxKs7ICM3OUUwDQor56ehID4gYsOhOyAjNzlFMQ0KK+enoiA+IGzDrW5nOyAjNzlFMg0KK+enoyA+IG3DsjsgIzc5RTMNCivnp6QgPiBjaMOobmc7ICM3OUU0DQor56elID4gbmnDoW47ICM3OUU1DQor56emID4gccOtbjsgIzc5RTYNCivnp6cgPiB5xIFuZzsgIzc5RTcNCivnp6ggPiB6w7pvOyAjNzlFOA0KK+enqSA+IHpow6w7ICM3OUU5DQor56eqID4gemjEqzsgIzc5RUENCivnp6sgPiBzaMO6OyAjNzlFQg0KK+enrCA+IGrDuTsgIzc5RUMNCivnp60gPiB6xK07ICM3OUVEDQor56euID4gaMO6bzsgIzc5RUUNCivnp68gPiBqxKs7ICM3OUVGDQor56ewID4gY2jEk25nOyAjNzlGMA0KK+ensSA+IHTDs25nOyAjNzlGMQ0KK+ensiA+IHpow6w7ICM3OUYyDQor56ezID4gaMO6bzsgIzc5RjMNCivnp7QgPiBow6k7ICM3OUY0DQor56e1ID4gecSrbjsgIzc5RjUNCivnp7YgPiB6xKs7ICM3OUY2DQor56e3ID4gemjDrTsgIzc5RjcNCivnp7ggPiBqacSTOyAjNzlGOA0KK+enuSA+IHLElW47ICM3OUY5DQor56e6ID4gZMO5OyAjNzlGQQ0KK+enuyA+IHnDrTsgIzc5RkINCivnp7wgPiB6aMWrOyAjNzlGQw0KK+envSA+IGjDuWk7ICM3OUZEDQor56e+ID4gbsOzbmc7ICM3OUZFDQor56e/ID4gZsWtOyAjNzlGRg0KK+eogCA+IHjEqzsgIzdBMDANCivnqIEgPiBrxINvOyAjN0EwMQ0KK+eogiA+IGzDoW5nOyAjN0EwMg0KK+eogyA+IGbFqzsgIzdBMDMNCivnqIQgPiB6w6g7ICM3QTA0DQor56iFID4gc2jDuWk7ICM3QTA1DQor56iGID4gbMeaOyAjN0EwNg0KK+eohyA+IGvFrW47ICM3QTA3DQor56iIID4gZ8SDbjsgIzdBMDgNCivnqIkgPiBnxJNuZzsgIzdBMDkNCivnqIogPiB0w607ICM3QTBBDQor56iLID4gY2jDqW5nOyAjN0EwQg0KK+eojCA+IHTDujsgIzdBMEMNCivnqI0gPiBzaMSBbzsgIzdBMEQNCivnqI4gPiBzaMO5aTsgIzdBMEUNCivnqI8gPiB5w6A7ICM3QTBGDQor56iQID4gbMWtbjsgIzdBMTANCivnqJEgPiBsw7k7ICM3QTExDQor56iSID4gZ8O5OyAjN0ExMg0KK+eokyA+IHrDum87ICM3QTEzDQor56iUID4gcsSVbjsgIzdBMTQNCivnqJUgPiB6aMO5bjsgIzdBMTUNCivnqJYgPiBiw6BuZzsgIzdBMTYNCivnqJcgPiBiw6BpOyAjN0ExNw0KK+eomCA+IGrEqzsgIzdBMTgNCivnqJkgPiB6aMOtOyAjN0ExOQ0KK+eomiA+IHpow6w7ICM3QTFBDQor56ibID4ga8WtbjsgIzdBMUINCivnqJwgPiBsw6luZzsgIzdBMUMNCivnqJ0gPiBww6luZzsgIzdBMUQNCivnqJ4gPiBrxJM7ICM3QTFFDQor56ifID4gYsStbmc7ICM3QTFGDQor56igID4gY2jDs3U7ICM3QTIwDQor56ihID4gesO6OyAjN0EyMQ0KK+eooiA+IHnDuTsgIzdBMjINCivnqKMgPiBzxas7ICM3QTIzDQor56ikID4gbMecZTsgIzdBMjQNCivnqKYgPiB5xKs7ICM3QTI2DQor56inID4geMOsOyAjN0EyNw0KK+eoqCA+IGJpxIFuOyAjN0EyOA0KK+eoqSA+IGrDrDsgIzdBMjkNCivnqKogPiBmw7k7ICM3QTJBDQor56irID4gYsSrOyAjN0EyQg0KK+eorCA+IG7DuW87ICM3QTJDDQor56itID4gamnEkzsgIzdBMkQNCivnqK4gPiB6aMWPbmc7ICM3QTJFDQor56ivID4gesWNbmc7ICM3QTJGDQor56iwID4geMWrOyAjN0EzMA0KK+eosSA+IGNoxJNuZzsgIzdBMzENCivnqLIgPiBkw6BvOyAjN0EzMg0KK+eosyA+IHfElW47ICM3QTMzDQor56i0ID4gbGnDoW47ICM3QTM0DQor56i1ID4gesSrOyAjN0EzNQ0KK+eotiA+IHnDuTsgIzdBMzYNCivnqLcgPiBqw6w7ICM3QTM3DQor56i4ID4geMO5OyAjN0EzOA0KK+eouSA+IHpoxJVuOyAjN0EzOQ0KK+eouiA+IHpow6w7ICM3QTNBDQor56i7ID4gZMOgbzsgIzdBM0INCivnqLwgPiBqacOgOyAjN0EzQw0KK+eovSA+IGrEqzsgIzdBM0QNCivnqL4gPiBnxINvOyAjN0EzRQ0KK+eovyA+IGfEg287ICM3QTNGDQor56mAID4gZ8WtOyAjN0E0MA0KK+epgSA+IHLDs25nOyAjN0E0MQ0KK+epgiA+IHPDuWk7ICM3QTQyDQor56mEID4gasOsOyAjN0E0NA0KK+ephSA+IGvEgW5nOyAjN0E0NQ0KK+ephiA+IG3DuTsgIzdBNDYNCivnqYcgPiBzaMSBbjsgIzdBNDcNCivnqYggPiBtw6luOyAjN0E0OA0KK+epiSA+IHpow6w7ICM3QTQ5DQor56mKID4gasOsOyAjN0E0QQ0KK+epiyA+IGzDuTsgIzdBNEINCivnqYwgPiBzxas7ICM3QTRDDQor56mNID4gasSrOyAjN0E0RA0KK+epjiA+IHnErW5nOyAjN0E0RQ0KK+epjyA+IHfElW47ICM3QTRGDQor56mQID4gccSrdTsgIzdBNTANCivnqZEgPiBzw6g7ICM3QTUxDQor56mTID4gecOsOyAjN0E1Mw0KK+eplCA+IGh1w6FuZzsgIzdBNTQNCivnqZUgPiBxacOoOyAjN0E1NQ0KK+epliA+IGrErTsgIzdBNTYNCivnqZcgPiBzw7lpOyAjN0E1Nw0KK+epmCA+IHhpxIFvOyAjN0E1OA0KK+epmSA+IHDDujsgIzdBNTkNCivnqZogPiBqacSBbzsgIzdBNUENCivnqZsgPiB6aMWrbzsgIzdBNUINCivnqZwgPiB0w7NuZzsgIzdBNUMNCivnqZ4gPiBsx5o7ICM3QTVFDQor56mfID4gc8O5aTsgIzdBNUYNCivnqaAgPiBuw7NuZzsgIzdBNjANCivnqaEgPiBzw6g7ICM3QTYxDQor56miID4gaMO5aTsgIzdBNjINCivnqaMgPiByw6FuZzsgIzdBNjMNCivnqaQgPiBuw7lvOyAjN0E2NA0KK+eppSA+IHnDuTsgIzdBNjUNCivnqaYgPiBiaW47ICM3QTY2DQor56mnID4gasOsOyAjN0E2Nw0KK+epqCA+IHTDumk7ICM3QTY4DQor56mpID4gd8SVbjsgIzdBNjkNCivnqaogPiBjaMSTbmc7ICM3QTZBDQor56mrID4gaMO5bzsgIzdBNkINCivnqawgPiBnxY9uZzsgIzdBNkMNCivnqa0gPiBsx5o7ICM3QTZEDQor56muID4gYmnEgW87ICM3QTZFDQor56mwID4gcsOhbmc7ICM3QTcwDQor56mxID4gemjFq287ICM3QTcxDQor56myID4gbMOtOyAjN0E3Mg0KK+epsyA+IHrDoG47ICM3QTczDQor56m0ID4geHXDqDsgIzdBNzQNCivnqbUgPiB3xIE7ICM3QTc1DQor56m2ID4gasOsdTsgIzdBNzYNCivnqbcgPiBxw61vbmc7ICM3QTc3DQor56m4ID4geMOsOyAjN0E3OA0KK+epuSA+IHHEq29uZzsgIzdBNzkNCivnqbogPiBrxY1uZzsgIzdBN0ENCivnqbsgPiB5xas7ICM3QTdCDQor56m8ID4gc8STbjsgIzdBN0MNCivnqb0gPiBqxK1uZzsgIzdBN0QNCivnqb4gPiB5w6BvOyAjN0E3RQ0KK+epvyA+IGNodcSBbjsgIzdBN0YNCivnqoAgPiB6aMWrbjsgIzdBODANCivnqoEgPiB0w7o7ICM3QTgxDQor56qCID4gbMOhbzsgIzdBODINCivnqoMgPiBxacOoOyAjN0E4Mw0KK+eqhCA+IHpoxINpOyAjN0E4NA0KK+eqhSA+IHnEg287ICM3QTg1DQor56qGID4gYmnEg247ICM3QTg2DQor56qHID4gYsOhbzsgIzdBODcNCivnqoggPiB5xINvOyAjN0E4OA0KK+eqiSA+IGLErW5nOyAjN0E4OQ0KK+eqiiA+IHfEgTsgIzdBOEENCivnqosgPiB6aMO6OyAjN0E4Qg0KK+eqjCA+IGppw6BvOyAjN0E4Qw0KK+eqjSA+IHFpw6BvOyAjN0E4RA0KK+eqjiA+IGRpw6BvOyAjN0E4RQ0KK+eqjyA+IHfFqzsgIzdBOEYNCivnqpAgPiBnxatpOyAjN0E5MA0KK+eqkSA+IHnDoW87ICM3QTkxDQor56qSID4gemjDrDsgIzdBOTINCivnqpMgPiBjaHXEgW5nOyAjN0E5Mw0KK+eqlCA+IHnEg287ICM3QTk0DQor56qVID4gdGnEg287ICM3QTk1DQor56qWID4gamnDoG87ICM3QTk2DQor56qXID4gY2h1xIFuZzsgIzdBOTcNCivnqpggPiBqxK1vbmc7ICM3QTk4DQor56qZID4geGnEgW87ICM3QTk5DQor56qaID4gY2jDqW5nOyAjN0E5QQ0KK+eqmyA+IGvDsnU7ICM3QTlCDQor56qcID4gY3XDoG47ICM3QTlDDQor56qdID4gd8WNOyAjN0E5RA0KK+eqniA+IGTDoG47ICM3QTlFDQor56qfID4ga8WrOyAjN0E5Rg0KK+eqoCA+IGvEkzsgIzdBQTANCivnqqEgPiB6aMO5aTsgIzdBQTENCivnqqIgPiB4w7k7ICM3QUEyDQor56qjID4gc8O5OyAjN0FBMw0KK+eqpCA+IGd1YW47ICM3QUE0DQor56qlID4ga8WraTsgIzdBQTUNCivnqqYgPiBkw7J1OyAjN0FBNg0KK+eqqCA+IHnDrG47ICM3QUE4DQor56qpID4gd8WNOyAjN0FBOQ0KK+eqqiA+IHfEgTsgIzdBQUENCivnqqsgPiB5w6A7ICM3QUFCDQor56qsID4gecO6OyAjN0FBQw0KK+eqrSA+IGrDuTsgIzdBQUQNCivnqq4gPiBxw61vbmc7ICM3QUFFDQor56qvID4gecOhbzsgIzdBQUYNCivnqrAgPiB5w6FvOyAjN0FCMA0KK+eqsSA+IHRpw6BvOyAjN0FCMQ0KK+eqsiA+IGNow6FvOyAjN0FCMg0KK+eqsyA+IHnFrTsgIzdBQjMNCivnqrQgPiB0acOhbjsgIzdBQjQNCivnqrUgPiBkacOgbzsgIzdBQjUNCivnqrYgPiBqw7k7ICM3QUI2DQor56q3ID4gbGnDoW87ICM3QUI3DQor56q4ID4geMSrOyAjN0FCOA0KK+equSA+IHfDuTsgIzdBQjkNCivnqrogPiBrxatpOyAjN0FCQQ0KK+equyA+IGNodcSBbmc7ICM3QUJCDQor56q8ID4gemjEgW87ICM3QUJDDQor56q+ID4ga3XEg247ICM3QUJFDQor56q/ID4gbMOzbmc7ICM3QUJGDQor56uAID4gY2jEk25nOyAjN0FDMA0KK+ergSA+IGPDuWk7ICM3QUMxDQor56uCID4gcGnDoW87ICM3QUMyDQor56uDID4gesOgbzsgIzdBQzMNCivnq4QgPiBjdcOgbjsgIzdBQzQNCivnq4UgPiBxacOgbzsgIzdBQzUNCivnq4YgPiBxw61vbmc7ICM3QUM2DQor56uHID4gZMOydTsgIzdBQzcNCivnq4ggPiB6w6BvOyAjN0FDOA0KK+eriSA+IGzFj25nOyAjN0FDOQ0KK+eriiA+IHFpw6g7ICM3QUNBDQor56uLID4gbMOsOyAjN0FDQg0KK+erjCA+IGNow7k7ICM3QUNDDQor56uNID4gc2jDrScgJ2fFjW5nJyAnc2jEk25nOyAjN0FDRA0KK+erjiA+IGbDsnU7ICM3QUNFDQor56uPID4gcWnEgW4nICdnxY1uZycgJ3NoxJNuZzsgIzdBQ0YNCivnq5AgPiBjaMO5OyAjN0FEMA0KK+erkSA+IGjDs25nOyAjN0FEMQ0KK+erkiA+IHHDrTsgIzdBRDINCivnq5MgPiBxacSBbicgJ2bEk24nICd6aMSrJyAnecSrJyAnZ8WNbmcnICdzaMSTbmc7ICM3QUQzDQor56uUID4gZ8WNbmcnICdzaMSTbmc7ICM3QUQ0DQor56uVID4gc2jDrScgJ2bEk24nICd6aMSrJyAnecSrJyAnZ8WNbmcnICdzaMSTbmc7ICM3QUQ1DQor56uWID4gc2jDuTsgIzdBRDYNCivnq5cgPiBtacOgbzsgIzdBRDcNCivnq5ggPiBqxa07ICM3QUQ4DQor56uZID4gemjDoG47ICM3QUQ5DQor56uaID4gemjDuTsgIzdBREENCivnq5sgPiBsw61uZzsgIzdBREINCivnq5wgPiBsw7NuZzsgIzdBREMNCivnq50gPiBiw6xuZzsgIzdBREQNCivnq54gPiBqw6xuZzsgIzdBREUNCivnq58gPiBqw6xuZzsgIzdBREYNCivnq6AgPiB6aMSBbmc7ICM3QUUwDQor56uhID4gecSrJyAnZ8WNbmcnICdzaMSTbmcnICdkZScgJ3nEqycgJ2LEg2knICdiw6hpOyAjN0FFMQ0KK+eroiA+IHPDrDsgIzdBRTINCivnq6MgPiBqw7luOyAjN0FFMw0KK+erpCA+IGjDs25nOyAjN0FFNA0KK+erpSA+IHTDs25nOyAjN0FFNQ0KK+erpiA+IHPFj25nOyAjN0FFNg0KK+erpyA+IGrDrG5nOyAjN0FFNw0KK+erqCA+IGRpw6BvOyAjN0FFOA0KK+erqSA+IHnDrDsgIzdBRTkNCivnq6ogPiBzaMO5OyAjN0FFQQ0KK+erqyA+IGrDrG5nOyAjN0FFQg0KK+errCA+IHHFrTsgIzdBRUMNCivnq60gPiBqacOpOyAjN0FFRA0KK+erriA+IHDDrW5nOyAjN0FFRQ0KK+erryA+IGR1xIFuOyAjN0FFRg0KK+ersCA+IHNow6FvOyAjN0FGMA0KK+ersSA+IHpodcSDbjsgIzdBRjENCivnq7IgPiBjw6luZzsgIzdBRjINCivnq7MgPiBkxJNuZzsgIzdBRjMNCivnq7QgPiBjxatpOyAjN0FGNA0KK+ertSA+IGh1xIFpOyAjN0FGNQ0KK+ertiA+IGrDrG5nOyAjN0FGNg0KK+ertyA+IGvDoG47ICM3QUY3DQor56u4ID4gasOsbmc7ICM3QUY4DQor56u5ID4gemjDujsgIzdBRjkNCivnq7ogPiB6aMO6OyAjN0FGQQ0KK+eruyA+IGzDqDsgIzdBRkINCivnq7wgPiBww6luZzsgIzdBRkMNCivnq70gPiB5w7o7ICM3QUZEDQor56u+ID4gY2jDrTsgIzdBRkUNCivnq78gPiBnxIFuOyAjN0FGRg0KK+esgCA+IG3DoW5nOyAjN0IwMA0KK+esgSA+IHpow7o7ICM3QjAxDQor56yDID4gZMWtOyAjN0IwMw0KK+eshCA+IGrEqzsgIzdCMDQNCivnrIUgPiB4acOhbzsgIzdCMDUNCivnrIYgPiBixIE7ICM3QjA2DQor56yHID4gc3XDoG47ICM3QjA3DQor56yIID4gasOtOyAjN0IwOA0KK+esiSA+IHpoxJVuOyAjN0IwOQ0KK+esiiA+IHpow6BvOyAjN0IwQQ0KK+esiyA+IHPFrW47ICM3QjBCDQor56yMID4gecOhOyAjN0IwQw0KK+esjSA+IHpow7lpOyAjN0IwRA0KK+esjiA+IHl1w6FuOyAjN0IwRQ0KK+esjyA+IGjDuTsgIzdCMEYNCivnrJAgPiBnxIFuZzsgIzdCMTANCivnrJEgPiB4acOgbzsgIzdCMTENCivnrJIgPiBjw6luOyAjN0IxMg0KK+eskyA+IHDDrTsgIzdCMTMNCivnrJQgPiBixK07ICM3QjE0DQor56yVID4gamnEg247ICM3QjE1DQor56yWID4gecStOyAjN0IxNg0KK+eslyA+IGTFjW5nOyAjN0IxNw0KK+esmCA+IHNoxIFuOyAjN0IxOA0KK+esmSA+IHNoxJNuZzsgIzdCMTkNCivnrJogPiB4acOhOyAjN0IxQQ0KK+esmyA+IGTDrTsgIzdCMUINCivnrJwgPiB6aMO6OyAjN0IxQw0KK+esnSA+IG7DoDsgIzdCMUQNCivnrJ4gPiBjaMSrOyAjN0IxRQ0KK+esnyA+IGfFqzsgIzdCMUYNCivnrKAgPiBsw6w7ICM3QjIwDQor56yhID4gcWnDqDsgIzdCMjENCivnrKIgPiBtxK1uOyAjN0IyMg0KK+esoyA+IGLEgW87ICM3QjIzDQor56ykID4gdGnDoW87ICM3QjI0DQor56ylID4gc8OsOyAjN0IyNQ0KK+espiA+IGbDujsgIzdCMjYNCivnrKcgPiBjw6g7ICM3QjI3DQor56yoID4gYsOobjsgIzdCMjgNCivnrKkgPiBww6hpOyAjN0IyOQ0KK+esqiA+IGTDoTsgIzdCMkENCivnrKsgPiB6xK07ICM3QjJCDQor56ysID4gZMOsOyAjN0IyQw0KK+esrSA+IGzDrW5nOyAjN0IyRA0KK+esriA+IHrDqTsgIzdCMkUNCivnrK8gPiBuw7o7ICM3QjJGDQor56ywID4gZsO6OyAjN0IzMA0KK+essSA+IGfFj3U7ICM3QjMxDQor56yyID4gZsSBbjsgIzdCMzINCivnrLMgPiBqacSBOyAjN0IzMw0KK+estCA+IGfElTsgIzdCMzQNCivnrLUgPiBmw6BuOyAjN0IzNQ0KK+estiA+IHNoxK07ICM3QjM2DQor56y3ID4gbcSDbzsgIzdCMzcNCivnrLggPiBwxY87ICM3QjM4DQor56y6ID4gamnEgW47ICM3QjNBDQor56y7ID4gccOtb25nOyAjN0IzQg0KK+esvCA+IGzDs25nOyAjN0IzQw0KK+esviA+IGJpxIFuOyAjN0IzRQ0KK+esvyA+IGzDuW87ICM3QjNGDQor562AID4gZ8O5aTsgIzdCNDANCivnrYEgPiBxxa07ICM3QjQxDQor562CID4gY2jDrTsgIzdCNDINCivnrYMgPiB5xKtuOyAjN0I0Mw0KK+ethCA+IHnDoG87ICM3QjQ0DQor562FID4geGnEg247ICM3QjQ1DQor562GID4gYsStOyAjN0I0Ng0KK+ethyA+IHHDrW9uZzsgIzdCNDcNCivnrYggPiBndcSBOyAjN0I0OA0KK+etiSA+IGTElW5nOyAjN0I0OQ0KK+etiiA+IGppxINvOyAjN0I0QQ0KK+etiyA+IGrEq247ICM3QjRCDQor562MID4gcXXDoW47ICM3QjRDDQor562NID4gc8WtbjsgIzdCNEQNCivnrY4gPiByw7o7ICM3QjRFDQor562PID4gZsOhOyAjN0I0Rg0KK+etkCA+IGt1xIFuZzsgIzdCNTANCivnrZEgPiB6aMO6OyAjN0I1MQ0KK+etkiA+IHTFj25nOyAjN0I1Mg0KK+etkyA+IGrEqzsgIzdCNTMNCivnrZQgPiBkw6E7ICM3QjU0DQor562VID4geMOtbmc7ICM3QjU1DQor562WID4gY8OoOyAjN0I1Ng0KK+etlyA+IHpow7JuZzsgIzdCNTcNCivnrZggPiBrw7J1OyAjN0I1OA0KK+etmSA+IGzDoWk7ICM3QjU5DQor562aID4gYsOsOyAjN0I1QQ0KK+etmyA+IHNoxIFpOyAjN0I1Qg0KK+etnCA+IGTEgW5nOyAjN0I1Qw0KK+etnSA+IHpoxJNuZzsgIzdCNUQNCivnrZ4gPiBjw6g7ICM3QjVFDQor562fID4gZsWrOyAjN0I1Rg0KK+etoCA+IHnDum47ICM3QjYwDQor562hID4gdMO6OyAjN0I2MQ0KK+etoiA+IHDDoTsgIzdCNjINCivnraMgPiBsw6w7ICM3QjYzDQor562kID4gbMOhbmc7ICM3QjY0DQor562lID4gasWtOyAjN0I2NQ0KK+etpiA+IGd1xINuOyAjN0I2Ng0KK+etpyA+IGppxINuOyAjN0I2Nw0KK+etqCA+IGjDoW47ICM3QjY4DQor562pID4gdMOzbmc7ICM3QjY5DQor562qID4geGnDoTsgIzdCNkENCivnrasgPiB6aMOsOyAjN0I2Qg0KK+etrCA+IGNow6luZzsgIzdCNkMNCivnra0gPiBzdcOgbjsgIzdCNkQNCivnra4gPiBzaMOsOyAjN0I2RQ0KK+etryA+IHpow7k7ICM3QjZGDQor562wID4gesO6bzsgIzdCNzANCivnrbEgPiB4acSDbzsgIzdCNzENCivnrbIgPiBzaMSBbzsgIzdCNzINCivnrbMgPiB0w61uZzsgIzdCNzMNCivnrbQgPiBjw6g7ICM3Qjc0DQor5621ID4gecOhbjsgIzdCNzUNCivnrbYgPiBnxINvOyAjN0I3Ng0KK+ettyA+IGt1w6BpOyAjN0I3Nw0KK+etuCA+IGfEgW47ICM3Qjc4DQor5625ID4gY2jDs3U7ICM3Qjc5DQor5627ID4gZ8Ogbmc7ICM3QjdCDQor5628ID4gecO6bjsgIzdCN0MNCivnrb4gPiBxacSBbjsgIzdCN0UNCivnrb8gPiB4acSDbzsgIzdCN0YNCivnroAgPiBqacSDbjsgIzdCODANCivnroEgPiBww7o7ICM3QjgxDQor566CID4gbMOhaTsgIzdCODINCivnroMgPiB6xY11OyAjN0I4Mw0KK+euhCA+IGLDrDsgIzdCODQNCivnroUgPiBiw6w7ICM3Qjg1DQor566GID4gYsOsOyAjN0I4Ng0KK+euhyA+IGfDqDsgIzdCODcNCivnroggPiBjaMOtOyAjN0I4OA0KK+euiSA+IGd1xINpOyAjN0I4OQ0KK+euiiA+IHnFqzsgIzdCOEENCivnrosgPiBqacSBbjsgIzdCOEINCivnrowgPiB6aMOgbzsgIzdCOEMNCivnro0gPiBnxas7ICM3QjhEDQor566OID4gY2jDrTsgIzdCOEUNCivnro8gPiB6aMSTbmc7ICM3QjhGDQor566QID4gasSrbmc7ICM3QjkwDQor566RID4gc2jDoDsgIzdCOTENCivnrpIgPiB6aMWPdTsgIzdCOTINCivnrpMgPiBsw7k7ICM3QjkzDQor566UID4gYsOzOyAjN0I5NA0KK+eulSA+IGrEqzsgIzdCOTUNCivnrpYgPiBsw61uOyAjN0I5Ng0KK+eulyA+IHN1w6BuOyAjN0I5Nw0KK+eumCA+IGrDuW47ICM3Qjk4DQor566ZID4gZsO6OyAjN0I5OQ0KK+eumiA+IHpow6E7ICM3QjlBDQor566bID4gZ8WrOyAjN0I5Qg0KK+eunCA+IGvFjW5nOyAjN0I5Qw0KK+eunSA+IHFpw6FuOyAjN0I5RA0KK+euniA+IHF1xIFuOyAjN0I5RQ0KK+eunyA+IGrDuW47ICM3QjlGDQor566gID4gY2jDumk7ICM3QkEwDQor566hID4gZ3XEg247ICM3QkExDQor566iID4geXXEgW47ICM3QkEyDQor566jID4gY8OoOyAjN0JBMw0KK+eupCA+IGrDujsgIzdCQTQNCivnrqUgPiBixY87ICM3QkE1DQor566mID4gesOpOyAjN0JBNg0KK+eupyA+IHFpw6g7ICM3QkE3DQor566oID4gdMO5bzsgIzdCQTgNCivnrqkgPiBsw7pvOyAjN0JBOQ0KK+euqiA+IGTEgW47ICM3QkFBDQor566rID4geGnEgW87ICM3QkFCDQor566sID4gcsO5bzsgIzdCQUMNCivnrq0gPiBqacOgbjsgIzdCQUQNCivnrq4gPiB4dWFuOyAjN0JBRQ0KK+euryA+IGJpxIFuOyAjN0JBRg0KK+eusCA+IHPFrW47ICM3QkIwDQor566xID4geGnEgW5nOyAjN0JCMQ0KK+eusiA+IHhpxINuOyAjN0JCMg0KK+eusyA+IHDDrW5nOyAjN0JCMw0KK+eutCA+IHpoxJNuOyAjN0JCNA0KK+eutSA+IHNoxJVuZzsgIzdCQjUNCivnrrYgPiBow7o7ICM3QkI2DQor5663ID4gc2jEqzsgIzdCQjcNCivnrrggPiB6aMO5OyAjN0JCOA0KK+euuSA+IHl1xJM7ICM3QkI5DQor5666ID4gY2jFrW47ICM3QkJBDQor5667ID4gbMecOyAjN0JCQg0KK+euvCA+IHfFqzsgIzdCQkMNCivnrr0gPiBkxY9uZzsgIzdCQkQNCivnrr4gPiB4acSBbzsgIzdCQkUNCivnrr8gPiBqw607ICM3QkJGDQor56+AID4gamnDqTsgIzdCQzANCivnr4EgPiBodcOhbmc7ICM3QkMxDQor56+CID4geMSrbmc7ICM3QkMyDQor56+DID4gbcOpaTsgIzdCQzMNCivnr4QgPiBmw6BuOyAjN0JDNA0KK+evhSA+IGNow7ppOyAjN0JDNQ0KK+evhiA+IHpodcOgbjsgIzdCQzYNCivnr4cgPiBwacSBbjsgIzdCQzcNCivnr4ggPiBmxJNuZzsgIzdCQzgNCivnr4kgPiB6aMO6OyAjN0JDOQ0KK+eviiA+IGjDs25nOyAjN0JDQQ0KK+eviyA+IHFpw6g7ICM3QkNCDQor56+MID4gaMOzdTsgIzdCQ0MNCivnr40gPiBxxKt1OyAjN0JDRA0KK+evjiA+IG1pxINvOyAjN0JDRQ0KK+evjyA+IHFpw6BuOyAjN0JDRg0KK+evkSA+IGvDuWk7ICM3QkQxDQor56+TID4gbMWPdTsgIzdCRDMNCivnr5QgPiB5w7puOyAjN0JENA0KK+evlSA+IGjDqTsgIzdCRDUNCivnr5YgPiB0w6FuZzsgIzdCRDYNCivnr5cgPiB5dcOoOyAjN0JENw0KK+evmCA+IGNoxY11OyAjN0JEOA0KK+evmSA+IGfEgW87ICM3QkQ5DQor56+aID4gZsSVaTsgIzdCREENCivnr5sgPiByw7lvOyAjN0JEQg0KK+evnCA+IHpoxJNuZzsgIzdCREMNCivnr50gPiBnxY11OyAjN0JERA0KK+evniA+IG5pw6g7ICM3QkRFDQor56+fID4gcWnDoG47ICM3QkRGDQor56+gID4geGnEg287ICM3QkUwDQor56+hID4gY3XDoG47ICM3QkUxDQor56+iID4gZ8WNbmc7ICM3QkUyDQor56+jID4gcMOhbmc7ICM3QkUzDQor56+kID4gZMWtOyAjN0JFNA0KK+evpSA+IGzDrDsgIzdCRTUNCivnr6YgPiBiw6w7ICM3QkU2DQor56+nID4gemjDum87ICM3QkU3DQor56+oID4gY2jDujsgIzdCRTgNCivnr6kgPiBzaMSBaTsgIzdCRTkNCivnr6ogPiBjaMOtOyAjN0JFQQ0KK+evqyA+IHpow7o7ICM3QkVCDQor56+sID4gcWnEgW5nOyAjN0JFQw0KK+evrSA+IGzDs25nOyAjN0JFRA0KK+evriA+IGzDoW47ICM3QkVFDQor56+vID4gamnEgW47ICM3QkVGDQor56+wID4gYsO5OyAjN0JGMA0KK+evsSA+IGzDrTsgIzdCRjENCivnr7IgPiBow7lpOyAjN0JGMg0KK+evsyA+IGLDrDsgIzdCRjMNCivnr7QgPiBkw607ICM3QkY0DQor56+1ID4gY8WNbmc7ICM3QkY1DQor56+2ID4gecSBbjsgIzdCRjYNCivnr7cgPiBww6luZzsgIzdCRjcNCivnr7ggPiBzxJNuOyAjN0JGOA0KK+evuSA+IHpodcOgbjsgIzdCRjkNCivnr7ogPiBww6FpOyAjN0JGQQ0KK+evuyA+IHBpw6BvOyAjN0JGQg0KK+evvCA+IGTFjXU7ICM3QkZDDQor56+9ID4gecWtOyAjN0JGRA0KK+evviA+IG1pw6g7ICM3QkZFDQor56+/ID4gemh1xIFuOyAjN0JGRg0KK+ewgCA+IHrDqTsgIzdDMDANCivnsIEgPiB4xK07ICM3QzAxDQor57CCID4gZ8O6bzsgIzdDMDINCivnsIMgPiB5w607ICM3QzAzDQor57CEID4gaMO5OyAjN0MwNA0KK+ewhSA+IGNoxINuOyAjN0MwNQ0KK+ewhiA+IGvDsnU7ICM3QzA2DQor57CHID4gY8O5OyAjN0MwNw0KK+ewiCA+IHDDrW5nOyAjN0MwOA0KK+ewiSA+IGNow7J1OyAjN0MwOQ0KK+ewiiA+IGrEqzsgIzdDMEENCivnsIsgPiBnxa1pOyAjN0MwQg0KK+ewjCA+IHPDuTsgIzdDMEMNCivnsI0gPiBsxY91OyAjN0MwRA0KK+ewjiA+IHpow6A7ICM3QzBFDQor57CPID4gbMO5OyAjN0MwRg0KK+ewkCA+IG5pxINuOyAjN0MxMA0KK+ewkSA+IHPFq287ICM3QzExDQor57CSID4gY3XDoG47ICM3QzEyDQor57CUID4gc8WrbzsgIzdDMTQNCivnsJUgPiBsw6g7ICM3QzE1DQor57CWID4gZHXDoG47ICM3QzE2DQor57CYID4geGnEgW87ICM3QzE4DQor57CZID4gYsOzOyAjN0MxOQ0KK+ewmiA+IG3DrDsgIzdDMUENCivnsJsgPiBzxKs7ICM3QzFCDQor57CcID4gZMOgbmc7ICM3QzFDDQor57CdID4gbGnDoW87ICM3QzFEDQor57CeID4gZMSBbjsgIzdDMUUNCivnsJ8gPiBkacOgbjsgIzdDMUYNCivnsKAgPiBmxa07ICM3QzIwDQor57ChID4gamnEg247ICM3QzIxDQor57CiID4gbcStbjsgIzdDMjINCivnsKMgPiBrw7lpOyAjN0MyMw0KK+ewpCA+IGTDoGk7ICM3QzI0DQor57ClID4gcWnDoW87ICM3QzI1DQor57CmID4gZMSTbmc7ICM3QzI2DQor57CnID4gaHXDoW5nOyAjN0MyNw0KK+ewqCA+IHPFrW47ICM3QzI4DQor57CpID4gbMOhbzsgIzdDMjkNCivnsKogPiB6xIFuOyAjN0MyQQ0KK+ewqyA+IHhpxIFvOyAjN0MyQg0KK+ewrCA+IGTDuTsgIzdDMkMNCivnsK0gPiBzaMOsOyAjN0MyRA0KK+ewriA+IHrEgW47ICM3QzJFDQor57CwID4gcMOhaTsgIzdDMzANCivnsLIgPiBww6FpOyAjN0MzMg0KK+ewsyA+IGfDoG47ICM3QzMzDQor57C0ID4gasO5OyAjN0MzNA0KK+ewtSA+IGTDuTsgIzdDMzUNCivnsLYgPiBsw7k7ICM3QzM2DQor57C3ID4gecOhbjsgIzdDMzcNCivnsLggPiBiw7I7ICM3QzM4DQor57C5ID4gZMSBbmc7ICM3QzM5DQor57C6ID4gc8OgaTsgIzdDM0ENCivnsLsgPiBrxJM7ICM3QzNCDQor57C8ID4gbMOzbmc7ICM3QzNDDQor57C9ID4gcWnEgW47ICM3QzNEDQor57C+ID4gbGnDoW47ICM3QzNFDQor57C/ID4gYsOzOyAjN0MzRg0KK+exgCA+IHpow7J1OyAjN0M0MA0KK+exgSA+IGzDoGk7ICM3QzQxDQor57GDID4gbMOhbjsgIzdDNDMNCivnsYQgPiBrw7lpOyAjN0M0NA0KK+exhSA+IHnDujsgIzdDNDUNCivnsYYgPiB5dcOoOyAjN0M0Ng0KK+exhyA+IGjDoW87ICM3QzQ3DQor57GIID4gemjEk247ICM3QzQ4DQor57GJID4gdMOhaTsgIzdDNDkNCivnsYogPiB0w6w7ICM3QzRBDQor57GLID4gbcOtOyAjN0M0Qg0KK+exjCA+IGNow7N1OyAjN0M0Qw0KK+exjSA+IGrDrTsgIzdDNEQNCivnsZAgPiB0w6luZzsgIzdDNTANCivnsZEgPiB6aHXDoG47ICM3QzUxDQor57GSID4gemjDsnU7ICM3QzUyDQor57GTID4gZsSBbjsgIzdDNTMNCivnsZQgPiBzxY91OyAjN0M1NA0KK+exlSA+IHpow7J1OyAjN0M1NQ0KK+exlyA+IHpow7pvOyAjN0M1Nw0KK+exmCA+IHTDqW5nOyAjN0M1OA0KK+exmSA+IGzDuTsgIzdDNTkNCivnsZogPiBsw7o7ICM3QzVBDQor57GbID4gamnEgW47ICM3QzVCDQor57GcID4gdMO5bzsgIzdDNUMNCivnsZ0gPiB5w61uZzsgIzdDNUQNCivnsZ4gPiB5w7k7ICM3QzVFDQor57GfID4gbMOgaTsgIzdDNUYNCivnsaAgPiBsw7NuZzsgIzdDNjANCivnsaIgPiBsacOhbjsgIzdDNjINCivnsaMgPiBsw6FuOyAjN0M2Mw0KK+expCA+IHFpxIFuOyAjN0M2NA0KK+expSA+IHl1w6g7ICM3QzY1DQor57GmID4gemjFjW5nOyAjN0M2Ng0KK+expyA+IHHDujsgIzdDNjcNCivnsaggPiBsacOhbjsgIzdDNjgNCivnsakgPiBiacSBbjsgIzdDNjkNCivnsaogPiBkdcOgbjsgIzdDNkENCivnsasgPiB6dcSDbjsgIzdDNkINCivnsawgPiBsw607ICM3QzZDDQor57GtID4gc8SrOyAjN0M2RA0KK+exriA+IGzDum87ICM3QzZFDQor57GvID4gecOtbmc7ICM3QzZGDQor57GwID4geXXDqDsgIzdDNzANCivnsbEgPiB6aMO6bzsgIzdDNzENCivnsbIgPiB4xas7ICM3QzcyDQor57GzID4gbcStOyAjN0M3Mw0KK+extCA+IGTDrTsgIzdDNzQNCivnsbUgPiBmw6FuOyAjN0M3NQ0KK+extiA+IHNoxJNuOyAjN0M3Ng0KK+extyA+IHpow6k7ICM3Qzc3DQor57G4ID4gc2jEk247ICM3Qzc4DQor57G5ID4gbseaOyAjN0M3OQ0KK+exuiA+IHhpw6k7ICM3QzdBDQor57G7ID4gbMOoaTsgIzdDN0INCivnsbwgPiB4acSBbjsgIzdDN0MNCivnsb0gPiB6xK07ICM3QzdEDQor57G+ID4gbsOtOyAjN0M3RQ0KK+exvyA+IGPDuW47ICM3QzdGDQor57KBID4gcWnEgW47ICM3QzgxDQor57KDID4gYsStOyAjN0M4Mw0KK+eyhCA+IGLEg247ICM3Qzg0DQor57KFID4gd8O5OyAjN0M4NQ0KK+eyhiA+IHNoxIE7ICM3Qzg2DQor57KHID4ga8SBbmc7ICM3Qzg3DQor57KIID4gcsWPdTsgIzdDODgNCivnsokgPiBmxJVuOyAjN0M4OQ0KK+eyiiA+IGLDrDsgIzdDOEENCivnsosgPiBjw7lpOyAjN0M4Qg0KK+eyjSA+IGzDrTsgIzdDOEQNCivnso4gPiBjaMStOyAjN0M4RQ0KK+eykSA+IGLEgTsgIzdDOTENCivnspIgPiBsw6w7ICM3QzkyDQor57KTID4gZ8SBbjsgIzdDOTMNCivnspQgPiBqw7k7ICM3Qzk0DQor57KVID4gcMOyOyAjN0M5NQ0KK+eyliA+IG3DsjsgIzdDOTYNCivnspcgPiBjxas7ICM3Qzk3DQor57KYID4gbmnDoW47ICM3Qzk4DQor57KZID4gemjDsnU7ICM3Qzk5DQor57KaID4gbMOtOyAjN0M5QQ0KK+eymyA+IHPDuTsgIzdDOUINCivnspwgPiB0acOgbzsgIzdDOUMNCivnsp0gPiBsw6w7ICM3QzlEDQor57KeID4gccSrOyAjN0M5RQ0KK+eynyA+IHPDuTsgIzdDOUYNCivnsqAgPiBow7NuZzsgIzdDQTANCivnsqEgPiB0w7NuZzsgIzdDQTENCivnsqIgPiB6xKs7ICM3Q0EyDQor57KjID4gY8OoOyAjN0NBMw0KK+eypCA+IHl1w6g7ICM3Q0E0DQor57KlID4gemjFjXU7ICM3Q0E1DQor57KmID4gbMOsbjsgIzdDQTYNCivnsqcgPiB6aHXEgW5nOyAjN0NBNw0KK+eyqCA+IGLEg2k7ICM3Q0E4DQor57KqID4gZsOobjsgIzdDQUENCivnsq4gPiBsacOhbmc7ICM3Q0FFDQor57KvID4geGnDoG47ICM3Q0FGDQor57KwID4gZsO6OyAjN0NCMA0KK+eysSA+IGxpw6FuZzsgIzdDQjENCivnsrIgPiBjw6BuOyAjN0NCMg0KK+eysyA+IGfEk25nOyAjN0NCMw0KK+eytCA+IGzErTsgIzdDQjQNCivnsrUgPiB5dcOoOyAjN0NCNQ0KK+eytiA+IGzDuTsgIzdDQjYNCivnsrcgPiBqw7o7ICM3Q0I3DQor57K4ID4gccOtOyAjN0NCOA0KK+eyuSA+IGPDuWk7ICM3Q0I5DQor57K6ID4gYsOgaTsgIzdDQkENCivnsrsgPiB6aMSBbmc7ICM3Q0JCDQor57K8ID4gbMOtbjsgIzdDQkMNCivnsr0gPiB6w7JuZzsgIzdDQkQNCivnsr4gPiBqxKtuZzsgIzdDQkUNCivnsr8gPiBnxa1vOyAjN0NCRg0KK+ezgSA+IHPEgW47ICM3Q0MxDQor57OCID4gc8SDbjsgIzdDQzINCivns4MgPiB0w6FuZzsgIzdDQzMNCivns4QgPiBiacSBbjsgIzdDQzQNCivns4UgPiByxY91OyAjN0NDNQ0KK+ezhiA+IG1pw6BuOyAjN0NDNg0KK+ezhyA+IGjDs3U7ICM3Q0M3DQor57OIID4geMWtOyAjN0NDOA0KK+eziSA+IHrDsm5nOyAjN0NDOQ0KK+eziiA+IGjDujsgIzdDQ0ENCivns4sgPiBqacOgbjsgIzdDQ0INCivns4wgPiB6w6FuOyAjN0NDQw0KK+ezjSA+IGPDrTsgIzdDQ0QNCivns44gPiBsw607ICM3Q0NFDQor57OPID4geGnDqDsgIzdDQ0YNCivns5AgPiBmxas7ICM3Q0QwDQor57ORID4gbsOsOyAjN0NEMQ0KK+ezkiA+IGLDqGk7ICM3Q0QyDQor57OTID4gZ8WtOyAjN0NEMw0KK+ezlCA+IHjErXU7ICM3Q0Q0DQor57OVID4gZ8SBbzsgIzdDRDUNCivns5YgPiB0w6FuZzsgIzdDRDYNCivns5cgPiBxxK11OyAjN0NENw0KK+ezmSA+IGPEgW87ICM3Q0Q5DQor57OaID4gemh1xIFuZzsgIzdDREENCivns5sgPiB0w6FuZzsgIzdDREINCivns5wgPiBtw607ICM3Q0RDDQor57OdID4gc8SBbjsgIzdDREQNCivns54gPiBmw6huOyAjN0NERQ0KK+eznyA+IHrEgW87ICM3Q0RGDQor57OgID4ga8SBbmc7ICM3Q0UwDQor57OhID4gamnDoG5nOyAjN0NFMQ0KK+ezoiA+IG3DszsgIzdDRTINCivns6MgPiBzxINuOyAjN0NFMw0KK+ezpCA+IHPEg247ICM3Q0U0DQor57OlID4gbsO5bzsgIzdDRTUNCivns6YgPiB4xKs7ICM3Q0U2DQor57OnID4gbGnDoW5nOyAjN0NFNw0KK+ezqCA+IGppw6BuZzsgIzdDRTgNCivns6kgPiBrdcOgaTsgIzdDRTkNCivns6ogPiBiw7M7ICM3Q0VBDQor57OrID4gaHXDoW47ICM3Q0VCDQor57OtID4gesOybmc7ICM3Q0VEDQor57OuID4geGnDoG47ICM3Q0VFDQor57OvID4gbsO5bzsgIzdDRUYNCivns7AgPiB0dcOhbjsgIzdDRjANCivns7EgPiBuacOoOyAjN0NGMQ0KK+ezsiA+IGzDrDsgIzdDRjINCivns7MgPiB6w7lvOyAjN0NGMw0KK+eztCA+IGTDrTsgIzdDRjQNCivns7UgPiBuacOoOyAjN0NGNQ0KK+eztiA+IHRpw6BvOyAjN0NGNg0KK+eztyA+IGzDoW47ICM3Q0Y3DQor57O4ID4gbcOsOyAjN0NGOA0KK+ezuSA+IGppxINvJyAnc8SrJyAncMOhbmc7ICM3Q0Y5DQor57O6ID4gasSrdTsgIzdDRkENCivns7sgPiB4w6w7ICM3Q0ZCDQor57O8ID4gZ8WNbmc7ICM3Q0ZDDQor57O9ID4gemjElW5nOyAjN0NGRA0KK+ezviA+IGrEq3U7ICM3Q0ZFDQor57O/ID4gecOydTsgIzdDRkYNCivntIAgPiBqw6w7ICM3RDAwDQor57SBID4gY2jDoDsgIzdEMDENCivntIIgPiB6aMOydTsgIzdEMDINCivntIMgPiB4w7puOyAjN0QwMw0KK+e0hCA+IHl1xJM7ICM3RDA0DQor57SFID4gaMOzbmc7ICM3RDA1DQor57SGID4gecWrOyAjN0QwNg0KK+e0hyA+IGjDqTsgIzdEMDcNCivntIggPiB3w6FuOyAjN0QwOA0KK+e0iSA+IHLDqG47ICM3RDA5DQor57SKID4gd8OobjsgIzdEMEENCivntIsgPiB3w6luOyAjN0QwQg0KK+e0jCA+IHHDrXU7ICM3RDBDDQor57SNID4gbsOgOyAjN0QwRA0KK+e0jiA+IHrEqzsgIzdEMEUNCivntI8gPiB0xY91OyAjN0QwRg0KK+e0kCA+IG7ErXU7ICM3RDEwDQor57SRID4gZsOzdTsgIzdEMTENCivntJIgPiBqacOoOyAjN0QxMg0KK+e0kyA+IHNoxas7ICM3RDEzDQor57SUID4gY2jDum47ICM3RDE0DQor57SVID4gcMOtOyAjN0QxNQ0KK+e0liA+IHnErW47ICM3RDE2DQor57SXID4gc2jEgTsgIzdEMTcNCivntJggPiBow7NuZzsgIzdEMTgNCivntJkgPiB6aMStOyAjN0QxOQ0KK+e0miA+IGrDrTsgIzdEMUENCivntJsgPiBmxJNuOyAjN0QxQg0KK+e0nCA+IHnDum47ICM3RDFDDQor57SdID4gcsOpbjsgIzdEMUQNCivntJ4gPiBkxINuOyAjN0QxRQ0KK+e0nyA+IGrEq247ICM3RDFGDQor57SgID4gc8O5OyAjN0QyMA0KK+e0oSA+IGbEg25nOyAjN0QyMQ0KK+e0oiA+IHPFrW87ICM3RDIyDQor57SjID4gY8O5aTsgIzdEMjMNCivntKQgPiBqxK11OyAjN0QyNA0KK+e0pSA+IHpow6E7ICM3RDI1DQor57SnID4gasStbjsgIzdEMjcNCivntKggPiBmw7k7ICM3RDI4DQor57SpID4gemjDrDsgIzdEMjkNCivntKogPiBjxK07ICM3RDJBDQor57SrID4gesStOyAjN0QyQg0KK+e0rCA+IGNow7N1OyAjN0QyQw0KK+e0rSA+IGjDs25nOyAjN0QyRA0KK+e0riA+IHpow6E7ICM3RDJFDQor57SvID4gbMOoaTsgIzdEMkYNCivntLAgPiB4w6w7ICM3RDMwDQor57SxID4gZsO6OyAjN0QzMQ0KK+e0siA+IHhpw6g7ICM3RDMyDQor57SzID4gc2jEk247ICM3RDMzDQor57S0ID4gYsOoaTsgIzdEMzQNCivntLUgPiB6aMO5OyAjN0QzNQ0KK+e0tiA+IHHFrTsgIzdEMzYNCivntLcgPiBsw61uZzsgIzdEMzcNCivntLggPiB6aMO5OyAjN0QzOA0KK+e0uSA+IHNow6BvOyAjN0QzOQ0KK+e0uiA+IGfDoG47ICM3RDNBDQor57S7ID4gecSBbmc7ICM3RDNCDQor57S8ID4gZsO6OyAjN0QzQw0KK+e0vSA+IHTDum87ICM3RDNEDQor57S+ID4gemjElW47ICM3RDNFDQor57S/ID4gZMOgaTsgIzdEM0YNCivntYAgPiB6aMO6bzsgIzdENDANCivntYEgPiBzaMSrOyAjN0Q0MQ0KK+e1giA+IHpoxY1uZzsgIzdENDINCivntYMgPiB4acOhbjsgIzdENDMNCivntYQgPiB6xa07ICM3RDQ0DQor57WFID4gasStb25nOyAjN0Q0NQ0KK+e1hiA+IGLDoG47ICM3RDQ2DQor57WHID4gasO5OyAjN0Q0Nw0KK+e1iCA+IG3DsjsgIzdENDgNCivntYkgPiBzaMO5OyAjN0Q0OQ0KK+e1iiA+IHrDuWk7ICM3RDRBDQor57WMID4gasSrbmc7ICM3RDRDDQor57WNID4gcsOpbjsgIzdENEQNCivntY4gPiBow6huZzsgIzdENEUNCivntY8gPiB4acOoOyAjN0Q0Rg0KK+e1kCA+IGppw6k7ICM3RDUwDQor57WRID4gemjFqzsgIzdENTENCivntZIgPiBjaMOzdTsgIzdENTINCivntZMgPiBndcOgOyAjN0Q1Mw0KK+e1lCA+IGLEg2k7ICM3RDU0DQor57WVID4ganXDqTsgIzdENTUNCivntZYgPiBrdcOgbmc7ICM3RDU2DQor57WXID4gaMO6OyAjN0Q1Nw0KK+e1mCA+IGPDrDsgIzdENTgNCivntZkgPiBnxJNuZzsgIzdENTkNCivntZogPiBnxJNuZzsgIzdENUENCivntZsgPiB0xIFvOyAjN0Q1Qg0KK+e1nCA+IHhpw6k7ICM3RDVDDQor57WdID4ga8O5OyAjN0Q1RA0KK+e1niA+IGppxINvOyAjN0Q1RQ0KK+e1nyA+IHF1xIFuOyAjN0Q1Rg0KK+e1oCA+IGfEg2k7ICM3RDYwDQor57WhID4gbMO5bzsgIzdENjENCivntaIgPiB4dcOgbjsgIzdENjINCivntaMgPiBixKtuZzsgIzdENjMNCivntaQgPiB4acOgbjsgIzdENjQNCivntaUgPiBmw7o7ICM3RDY1DQor57WmID4gZ8SVaTsgIzdENjYNCivntacgPiB0w7NuZzsgIzdENjcNCivntaggPiByw7NuZzsgIzdENjgNCivntakgPiB0acOgbzsgIzdENjkNCivntaogPiB5xKtuOyAjN0Q2QQ0KK+e1qyA+IGzElWk7ICM3RDZCDQor57WsID4geGnDqDsgIzdENkMNCivnta0gPiBxdcOgbjsgIzdENkQNCivnta4gPiB4w7k7ICM3RDZFDQor57WvID4gbMecbjsgIzdENkYNCivntbAgPiBkacOpOyAjN0Q3MA0KK+e1sSA+IHTFj25nOyAjN0Q3MQ0KK+e1siA+IHPEqzsgIzdENzINCivntbMgPiBqacOgbmc7ICM3RDczDQor57W0ID4geGnDoW5nOyAjN0Q3NA0KK+e1tSA+IGjDuWk7ICM3RDc1DQor57W2ID4ganXDqTsgIzdENzYNCivntbcgPiB6aMOtOyAjN0Q3Nw0KK+e1uCA+IGppxINuOyAjN0Q3OA0KK+e1uSA+IGp1w6BuOyAjN0Q3OQ0KK+e1uiA+IGNoxKs7ICM3RDdBDQor57W7ID4gbWnEg247ICM3RDdCDQor57W8ID4gemjElW47ICM3RDdDDQor57W9ID4gbMeaOyAjN0Q3RA0KK+e1viA+IGNow6luZzsgIzdEN0UNCivntb8gPiBxw611OyAjN0Q3Rg0KK+e2gCA+IHNoxas7ICM3RDgwDQor57aBID4gYsSDbmc7ICM3RDgxDQor57aCID4gdMWPbmc7ICM3RDgyDQor57aDID4geGnEgW87ICM3RDgzDQor57aEID4gd8OgbjsgIzdEODQNCivntoUgPiBxxKtuOyAjN0Q4NQ0KK+e2hiA+IGfElW5nOyAjN0Q4Ng0KK+e2hyA+IHjErXU7ICM3RDg3DQor57aIID4gdMOtOyAjN0Q4OA0KK+e2iSA+IHjDrHU7ICM3RDg5DQor57aKID4geGnDqTsgIzdEOEENCivntosgPiBow7NuZzsgIzdEOEINCivntowgPiB4w6w7ICM3RDhDDQor57aNID4gZsO6OyAjN0Q4RA0KK+e2jiA+IHTEq25nOyAjN0Q4RQ0KK+e2jyA+IHPFq2k7ICM3RDhGDQor57aQID4gZMO5aTsgIzdEOTANCivntpEgPiBrxa1uOyAjN0Q5MQ0KK+e2kiA+IGbFqzsgIzdEOTINCivntpMgPiBqxKtuZzsgIzdEOTMNCivntpQgPiBow7k7ICM3RDk0DQor57aVID4gemjEqzsgIzdEOTUNCivntpYgPiB5w6FuOyAjN0Q5Ng0KK+e2lyA+IGrErW9uZzsgIzdEOTcNCivntpggPiBmw6luZzsgIzdEOTgNCivntpkgPiBqw6w7ICM3RDk5DQor57acID4gesOybmc7ICM3RDlDDQor57adID4gbMOtbjsgIzdEOUQNCivntp4gPiBkxa1vOyAjN0Q5RQ0KK+e2nyA+IGzDrDsgIzdEOUYNCivntqAgPiBsx5w7ICM3REEwDQor57ahID4gbGnDoW5nOyAjN0RBMQ0KK+e2oiA+IGNow7N1OyAjN0RBMg0KK+e2oyA+IHF1xINuOyAjN0RBMw0KK+e2pCA+IHNow6BvOyAjN0RBNA0KK+e2pSA+IHHDrDsgIzdEQTUNCivntqYgPiBxw607ICM3REE2DQor57anID4gemjFrW47ICM3REE3DQor57aoID4gccOtOyAjN0RBOA0KK+e2qSA+IHfEg247ICM3REE5DQor57aqID4gcWnDoG47ICM3REFBDQor57arID4geGnDoG47ICM3REFCDQor57asID4gc2jDsnU7ICM3REFDDQor57atID4gd8OpaTsgIzdEQUQNCivntq4gPiBxxK07ICM3REFFDQor57avID4gdMOhbzsgIzdEQUYNCivntrAgPiB3xINuOyAjN0RCMA0KK+e2sSA+IGfEgW5nOyAjN0RCMQ0KK+e2siA+IHfEg25nOyAjN0RCMg0KK+e2syA+IGLEk25nOyAjN0RCMw0KK+e2tCA+IHpow7lpOyAjN0RCNA0KK+e2tSA+IGPEg2k7ICM3REI1DQor57a2ID4gZ8WtbzsgIzdEQjYNCivntrcgPiBjw7lpOyAjN0RCNw0KK+e2uCA+IGzDum47ICM3REI4DQor57a5ID4gbMStdTsgIzdEQjkNCivntrogPiBxxK07ICM3REJBDQor57a7ID4gemjDoG47ICM3REJCDQor57a8ID4gYsSTaTsgIzdEQkMNCivntr0gPiBjaMO5bzsgIzdEQkQNCivntr4gPiBsw61uZzsgIzdEQkUNCivntr8gPiBtacOhbjsgIzdEQkYNCivnt4AgPiBxxKs7ICM3REMwDQor57eBID4gcWnDqDsgIzdEQzENCivnt4IgPiB0xIFuOyAjN0RDMg0KK+e3gyA+IHrFjW5nOyAjN0RDMw0KK+e3hCA+IGfFrW47ICM3REM0DQor57eFID4gesWNdTsgIzdEQzUNCivnt4YgPiB5w6w7ICM3REM2DQor57eHID4gesSrOyAjN0RDNw0KK+e3iCA+IHjDrG5nOyAjN0RDOA0KK+e3iSA+IGxpxINuZzsgIzdEQzkNCivnt4ogPiBqxK1uOyAjN0RDQQ0KK+e3iyA+IGbEk2k7ICM3RENCDQor57eMID4gcsO6aTsgIzdEQ0MNCivnt40gPiBtw61uOyAjN0RDRA0KK+e3jiA+IHnDuTsgIzdEQ0UNCivnt48gPiB6xY9uZzsgIzdEQ0YNCivnt5AgPiBmw6FuOyAjN0REMA0KK+e3kSA+IGzHnDsgIzdERDENCivnt5IgPiB4w7k7ICM3REQyDQor57eTID4geWluZ2w7ICM3REQzDQor57eUID4gemjDoG5nOyAjN0RENA0KK+e3liA+IHjDuTsgIzdERDYNCivnt5cgPiB4acSBbmc7ICM3REQ3DQor57eYID4gamnEgW47ICM3REQ4DQor57eZID4ga8OoOyAjN0REOQ0KK+e3miA+IHhpw6BuOyAjN0REQQ0KK+e3myA+IHJ1xINuOyAjN0REQg0KK+e3nCA+IG1pw6FuOyAjN0REQw0KK+e3nSA+IHHDrDsgIzdEREQNCivnt54gPiBkdcOgbjsgIzdEREUNCivnt58gPiB6aMOybmc7ICM3RERGDQor57egID4gZMOsOyAjN0RFMA0KK+e3oSA+IG3DrW47ICM3REUxDQor57eiID4gbWnDoW87ICM3REUyDQor57ejID4geXXDoW47ICM3REUzDQor57ekID4geGnDqDsgIzdERTQNCivnt6UgPiBixINvOyAjN0RFNQ0KK+e3piA+IHPEqzsgIzdERTYNCivnt6cgPiBxxKt1OyAjN0RFNw0KK+e3qCA+IGJpxIFuOyAjN0RFOA0KK+e3qSA+IGh1xINuOyAjN0RFOQ0KK+e3qiA+IGfEk25nOyAjN0RFQQ0KK+e3qyA+IGPFjW5nOyAjN0RFQg0KK+e3rCA+IG1pxINuOyAjN0RFQw0KK+e3rSA+IHfDqGk7ICM3REVEDQor57euID4gZsO5OyAjN0RFRQ0KK+e3ryA+IHfElWk7ICM3REVGDQor57ewID4gecO6OyAjN0RGMA0KK+e3sSA+IGfFjXU7ICM3REYxDQor57eyID4gbWnEg287ICM3REYyDQor57ezID4geGnDqTsgIzdERjMNCivnt7QgPiBsacOgbjsgIzdERjQNCivnt7UgPiB6xY1uZzsgIzdERjUNCivnt7YgPiBiacOgbjsgIzdERjYNCivnt7cgPiB5w7luOyAjN0RGNw0KK+e3uCA+IHnEq247ICM3REY4DQor57e5ID4gdMOtOyAjN0RGOQ0KK+e3uiA+IGd1xIE7ICM3REZBDQor57e7ID4gemjDrDsgIzdERkINCivnt7wgPiB5xatuOyAjN0RGQw0KK+e3vSA+IGNoxJNuZzsgIzdERkQNCivnt74gPiBjaMOhbjsgIzdERkUNCivnt78gPiBkw6BpOyAjN0RGRg0KK+e4gCA+IHhpw6E7ICM3RTAwDQor57iBID4geXXDoW47ICM3RTAxDQor57iCID4gesWPbmc7ICM3RTAyDQor57iDID4geMWrOyAjN0UwMw0KK+e4hiA+IGfEk25nOyAjN0UwNg0KK+e4iCA+IHnDrW5nOyAjN0UwOA0KK+e4iSA+IGrDrG47ICM3RTA5DQor57iKID4gecOsOyAjN0UwQQ0KK+e4iyA+IHpow7lpOyAjN0UwQg0KK+e4jCA+IG7DrDsgIzdFMEMNCivnuI0gPiBixIFuZzsgIzdFMEQNCivnuI4gPiBnxa07ICM3RTBFDQor57iPID4gcMOhbjsgIzdFMEYNCivnuJAgPiB6aMOydTsgIzdFMTANCivnuJEgPiBqacSBbjsgIzdFMTENCivnuJIgPiBjxa1vOyAjN0UxMg0KK+e4kyA+IHF1xINuOyAjN0UxMw0KK+e4lCA+IHNodcSDbmc7ICM3RTE0DQor57iVID4gecWrbjsgIzdFMTUNCivnuJYgPiB4acOhOyAjN0UxNg0KK+e4lyA+IHNodcSBaTsgIzdFMTcNCivnuJggPiB4xKs7ICM3RTE4DQor57iZID4gcsOzbmc7ICM3RTE5DQor57iaID4gdMSBbzsgIzdFMUENCivnuJsgPiBmw7o7ICM3RTFCDQor57icID4gecO6bjsgIzdFMUMNCivnuJ0gPiB6aMSTbjsgIzdFMUQNCivnuJ4gPiBnxINvOyAjN0UxRQ0KK+e4nyA+IHLDuTsgIzdFMUYNCivnuKAgPiBow7o7ICM3RTIwDQor57ihID4gesSDaTsgIzdFMjENCivnuKIgPiB0w6luZzsgIzdFMjINCivnuKMgPiB4acOgbjsgIzdFMjMNCivnuKQgPiBzw7k7ICM3RTI0DQor57ilID4gemjElW47ICM3RTI1DQor57imID4gesOybmc7ICM3RTI2DQor57inID4gdMSBbzsgIzdFMjcNCivnuKkgPiBjw6BpOyAjN0UyOQ0KK+e4qiA+IGLDrDsgIzdFMkENCivnuKsgPiBmw6luZzsgIzdFMkINCivnuKwgPiBjw7k7ICM3RTJDDQor57itID4gbMOtOyAjN0UyRA0KK+e4riA+IHPFq287ICM3RTJFDQor57ivID4gecStbjsgIzdFMkYNCivnuLAgPiB4xK07ICM3RTMwDQor57ixID4gesOybmc7ICM3RTMxDQor57iyID4gbMOpaTsgIzdFMzINCivnuLMgPiB6aHXDoG47ICM3RTMzDQor57i0ID4gcWnEgW47ICM3RTM0DQor57i1ID4gbcOgbjsgIzdFMzUNCivnuLYgPiB6aMOtOyAjN0UzNg0KK+e4tyA+IGzHmjsgIzdFMzcNCivnuLggPiBtw7I7ICM3RTM4DQor57i5ID4gcGnEg287ICM3RTM5DQor57i6ID4gbGnDoW47ICM3RTNBDQor57i7ID4gbcOtOyAjN0UzQg0KK+e4vCA+IHh1w6BuOyAjN0UzQw0KK+e4vSA+IHrFj25nOyAjN0UzRA0KK+e4viA+IGrEqzsgIzdFM0UNCivnuL8gPiBzaMSBbjsgIzdFM0YNCivnuYAgPiBzw7lpOyAjN0U0MA0KK+e5gSA+IGbDoW47ICM3RTQxDQor57mCID4gc2h1w6BpOyAjN0U0Mg0KK+e5gyA+IGLEk25nOyAjN0U0Mw0KK+e5hCA+IHnEqzsgIzdFNDQNCivnuYUgPiBzxIFvOyAjN0U0NQ0KK+e5hiA+IG3Ds3U7ICM3RTQ2DQor57mHID4gemjDsnU7ICM3RTQ3DQor57mIID4gcWnEg25nOyAjN0U0OA0KK+e5iSA+IGjDum47ICM3RTQ5DQor57mLID4geMOsOyAjN0U0Qg0KK+e5jSA+IHjDrHU7ICM3RTREDQor57mOID4gcsOhbjsgIzdFNEUNCivnuY8gPiB4dcOgbjsgIzdFNEYNCivnuZAgPiBow7lpOyAjN0U1MA0KK+e5kSA+IHFpxIFvOyAjN0U1MQ0KK+e5kiA+IHrEk25nOyAjN0U1Mg0KK+e5kyA+IHrFrW87ICM3RTUzDQor57mUID4gemjEqzsgIzdFNTQNCivnuZUgPiBzaMOgbjsgIzdFNTUNCivnuZYgPiBzxINuOyAjN0U1Ng0KK+e5lyA+IGzDrW47ICM3RTU3DQor57mYID4gecO5OyAjN0U1OA0KK+e5mSA+IGbEgW47ICM3RTU5DQor57maID4gbGnDoW87ICM3RTVBDQor57mbID4gY2jDuW87ICM3RTVCDQor57mcID4gesWrbjsgIzdFNUMNCivnuZ0gPiBqacOgbjsgIzdFNUQNCivnuZ4gPiByw6BvOyAjN0U1RQ0KK+e5nyA+IGNoxINuOyAjN0U1Rg0KK+e5oCA+IHLFrWk7ICM3RTYwDQor57mhID4geMOsdTsgIzdFNjENCivnuaIgPiBow7lpOyAjN0U2Mg0KK+e5oyA+IGh1w6A7ICM3RTYzDQor57mkID4genXEg247ICM3RTY0DQor57mlID4geMSrOyAjN0U2NQ0KK+e5piA+IHFpxINuZzsgIzdFNjYNCivnuaggPiBkw6E7ICM3RTY4DQor57mpID4gc2jDqW5nOyAjN0U2OQ0KK+e5qiA+IGjDuWk7ICM3RTZBDQor57mrID4geMOsOyAjN0U2Qg0KK+e5rCA+IHPDqDsgIzdFNkMNCivnua0gPiBqacSDbjsgIzdFNkQNCivnua4gPiBqacSBbmc7ICM3RTZFDQor57mvID4gaHXDoW47ICM3RTZGDQor57mwID4gesSDbzsgIzdFNzANCivnubEgPiBjxY1uZzsgIzdFNzENCivnubIgPiBqacOoOyAjN0U3Mg0KK+e5syA+IGppxINvOyAjN0U3Mw0KK+e5tCA+IGLDsjsgIzdFNzQNCivnubUgPiBjaMOhbjsgIzdFNzUNCivnubYgPiB5w6w7ICM3RTc2DQor57m3ID4gbsOhbzsgIzdFNzcNCivnubggPiBzw7lpOyAjN0U3OA0KK+e5uSA+IHnDrDsgIzdFNzkNCivnubogPiBzaMSDaTsgIzdFN0ENCivnubsgPiB4xas7ICM3RTdCDQor57m8ID4gasOsOyAjN0U3Qw0KK+e5vSA+IGLEq247ICM3RTdEDQor57m+ID4gcWnEg247ICM3RTdFDQor57m/ID4gbMOhbjsgIzdFN0YNCivnuoAgPiBww7o7ICM3RTgwDQor57qBID4geMWrbjsgIzdFODENCivnuoIgPiB6dcSDbjsgIzdFODINCivnuoMgPiBxw607ICM3RTgzDQor57qEID4gcMOpbmc7ICM3RTg0DQor57qFID4gbMOsOyAjN0U4NQ0KK+e6hiA+IG3DsjsgIzdFODYNCivnuocgPiBsw6hpOyAjN0U4Nw0KK+e6iCA+IHhpw6k7ICM3RTg4DQor57qJID4genXEg247ICM3RTg5DQor57qKID4ga3XDoG5nOyAjN0U4QQ0KK+e6iyA+IHnFjXU7ICM3RThCDQor57qMID4geMO5OyAjN0U4Qw0KK+e6jSA+IGzDqWk7ICM3RThEDQor57qOID4geGnEgW47ICM3RThFDQor57qPID4gY2jDoW47ICM3RThGDQor57qRID4gbMO6OyAjN0U5MQ0KK+e6kiA+IGNow6FuOyAjN0U5Mg0KK+e6kyA+IHnEq25nOyAjN0U5Mw0KK+e6lCA+IGPDoWk7ICM3RTk0DQor57qVID4geGnEgW5nOyAjN0U5NQ0KK+e6liA+IHhpxIFuOyAjN0U5Ng0KK+e6lyA+IHrFq2k7ICM3RTk3DQor57qYID4genXEg247ICM3RTk4DQor57qZID4gbMO5bzsgIzdFOTkNCivnupogPiB4xK07ICM3RTlBDQor57qbID4gZMOgbzsgIzdFOUINCivnupwgPiBsw6BuOyAjN0U5Qw0KK+e6nSA+IGzDqWk7ICM3RTlEDQor57qeID4gbGnDoG47ICM3RTlFDQor57qfID4gc8SrOyAjN0U5Rg0KK+e6oCA+IGrEq3U7ICM3RUEwDQor57qhID4gecWrOyAjN0VBMQ0KK+e6oiA+IGjDs25nOyAjN0VBMg0KK+e6oyA+IHpow7J1OyAjN0VBMw0KK+e6pCA+IHhpxIFuOyAjN0VBNA0KK+e6pSA+IGjDqTsgIzdFQTUNCivnuqYgPiB5dcSTOyAjN0VBNg0KK+e6pyA+IGrDrTsgIzdFQTcNCivnuqggPiB3w6FuOyAjN0VBOA0KK+e6qSA+IGt1w6BuZzsgIzdFQTkNCivnuqogPiBqw6w7ICM3RUFBDQor57qrID4gcsOobjsgIzdFQUINCivnuqwgPiB3xJVpOyAjN0VBQw0KK+e6rSA+IHnDum47ICM3RUFEDQor57quID4gaMOzbmc7ICM3RUFFDQor57qvID4gY2jDum47ICM3RUFGDQor57qwID4gcMOtOyAjN0VCMA0KK+e6sSA+IHNoxIE7ICM3RUIxDQor57qyID4gZ8SBbmc7ICM3RUIyDQor57qzID4gbsOgOyAjN0VCMw0KK+e6tCA+IHLDqW47ICM3RUI0DQor57q1ID4gesOybmc7ICM3RUI1DQor57q2ID4gbMO6bjsgIzdFQjYNCivnurcgPiBmxJNuOyAjN0VCNw0KK+e6uCA+IHpoxK07ICM3RUI4DQor57q5ID4gd8OpbjsgIzdFQjkNCivnurogPiBmxINuZzsgIzdFQkENCivnursgPiB6aMO5OyAjN0VCQg0KK+e6vCA+IHnErW47ICM3RUJDDQor57q9ID4gbsStdTsgIzdFQkQNCivnur4gPiBzaMWrOyAjN0VCRQ0KK+e6vyA+IHhpw6BuOyAjN0VCRg0KK+e7gCA+IGfDoG47ICM3RUMwDQor57uBID4geGnDqDsgIzdFQzENCivnu4IgPiBmw7o7ICM3RUMyDQor57uDID4gbGnDoG47ICM3RUMzDQor57uEID4gesWtOyAjN0VDNA0KK+e7hSA+IHNoxJNuOyAjN0VDNQ0KK+e7hiA+IHjDrDsgIzdFQzYNCivnu4cgPiB6aMSrOyAjN0VDNw0KK+e7iCA+IHpoxY1uZzsgIzdFQzgNCivnu4kgPiB6aMOydTsgIzdFQzkNCivnu4ogPiBiw6BuOyAjN0VDQQ0KK+e7iyA+IGbDujsgIzdFQ0INCivnu4wgPiB6aMO6bzsgIzdFQ0MNCivnu40gPiBzaMOgbzsgIzdFQ0QNCivnu44gPiB5w6w7ICM3RUNFDQor57uPID4gasSrbmc7ICM3RUNGDQor57uQID4gZMOgaTsgIzdFRDANCivnu5EgPiBixINuZzsgIzdFRDENCivnu5IgPiByw7NuZzsgIzdFRDINCivnu5MgPiBqacOpOyAjN0VEMw0KK+e7lCA+IGvDuTsgIzdFRDQNCivnu5UgPiByw6BvOyAjN0VENQ0KK+e7liA+IGRpw6k7ICM3RUQ2DQor57uXID4gaMOobmc7ICM3RUQ3DQor57uYID4gaMO5aTsgIzdFRDgNCivnu5kgPiBnxJVpOyAjN0VEOQ0KK+e7miA+IHh1w6BuOyAjN0VEQQ0KK+e7myA+IGppw6BuZzsgIzdFREINCivnu5wgPiBsw7lvOyAjN0VEQw0KK+e7nSA+IGp1w6k7ICM3RUREDQor57ueID4gamnEg287ICM3RURFDQor57ufID4gdMWPbmc7ICM3RURGDQor57ugID4gZ8SVbmc7ICM3RUUwDQor57uhID4geGnEgW87ICM3RUUxDQor57uiID4ganXDoG47ICM3RUUyDQor57ujID4geMOsdTsgIzdFRTMNCivnu6QgPiB4w6w7ICM3RUU0DQor57ulID4gc8WraTsgIzdFRTUNCivnu6YgPiB0xIFvOyAjN0VFNg0KK+e7pyA+IGrDrDsgIzdFRTcNCivnu6ggPiB0w607ICM3RUU4DQor57upID4gasSrOyAjN0VFOQ0KK+e7qiA+IHjDuTsgIzdFRUENCivnu6sgPiBsw61uZzsgIzdFRUINCivnu60gPiB4w7k7ICM3RUVEDQor57uuID4gccStOyAjN0VFRQ0KK+e7ryA+IGbEk2k7ICM3RUVGDQor57uwID4gY2jDuW87ICM3RUYwDQor57uxID4gemjEg25nOyAjN0VGMQ0KK+e7siA+IGfFrW47ICM3RUYyDQor57uzID4gc2jDqW5nOyAjN0VGMw0KK+e7tCA+IHfDqWk7ICM3RUY0DQor57u1ID4gbWnDoW47ICM3RUY1DQor57u2ID4gc2jDsnU7ICM3RUY2DQor57u3ID4gYsSTbmc7ICM3RUY3DQor57u4ID4gY2jDs3U7ICM3RUY4DQor57u5ID4gdMOhbzsgIzdFRjkNCivnu7ogPiBsxK11OyAjN0VGQQ0KK+e7uyA+IHF1xINuOyAjN0VGQg0KK+e7vCA+IHrDsm5nOyAjN0VGQw0KK+e7vSA+IHpow6BuOyAjN0VGRA0KK+e7viA+IHfEg247ICM3RUZFDQor57u/ID4gbMecOyAjN0VGRg0KK+e8gCA+IHpow7lpOyAjN0YwMA0KK+e8gSA+IHrEqzsgIzdGMDENCivnvIIgPiBrw6g7ICM3RjAyDQor57yDID4geGnEgW5nOyAjN0YwMw0KK+e8hCA+IGppxIFuOyAjN0YwNA0KK+e8hSA+IG1pxINuOyAjN0YwNQ0KK+e8hiA+IGzDoG47ICM3RjA2DQor57yHID4gdMOtOyAjN0YwNw0KK+e8iCA+IG1pxINvOyAjN0YwOA0KK+e8iSA+IHHDrDsgIzdGMDkNCivnvIogPiB5xatuOyAjN0YwQQ0KK+e8iyA+IGjDuWk7ICM3RjBCDQor57yMID4gc8SrOyAjN0YwQw0KK+e8jSA+IGTFrW87ICM3RjBEDQor57yOID4gZHXDoG47ICM3RjBFDQor57yPID4gYmnDoG47ICM3RjBGDQor57yQID4geGnDoG47ICM3RjEwDQor57yRID4gZ8WNdTsgIzdGMTENCivnvJIgPiB6aMO5aTsgIzdGMTINCivnvJMgPiBodcSDbjsgIzdGMTMNCivnvJQgPiBkw6w7ICM3RjE0DQor57yVID4gbMeaOyAjN0YxNQ0KK+e8liA+IGJpxIFuOyAjN0YxNg0KK+e8lyA+IG3DrW47ICM3RjE3DQor57yYID4geXXDoW47ICM3RjE4DQor57yZID4gasOsbjsgIzdGMTkNCivnvJogPiBmw7o7ICM3RjFBDQor57ybID4gcsO5OyAjN0YxQg0KK+e8nCA+IHpoxJNuOyAjN0YxQw0KK+e8nSA+IGbDqW5nOyAjN0YxRA0KK+e8niA+IHNodcSBaTsgIzdGMUUNCivnvJ8gPiBnxINvOyAjN0YxRg0KK+e8oCA+IGNow6FuOyAjN0YyMA0KK+e8oSA+IGzDrTsgIzdGMjENCivnvKIgPiB5w6w7ICM3RjIyDQor57yjID4gamnEgW47ICM3RjIzDQor57ykID4gYsSrbjsgIzdGMjQNCivnvKUgPiBwacSDbzsgIzdGMjUNCivnvKYgPiBtw6BuOyAjN0YyNg0KK+e8pyA+IGzDqWk7ICM3RjI3DQor57yoID4gecSrbmc7ICM3RjI4DQor57ypID4gc8WrbzsgIzdGMjkNCivnvKogPiBtw7N1OyAjN0YyQQ0KK+e8qyA+IHPEgW87ICM3RjJCDQor57ysID4geGnDqTsgIzdGMkMNCivnvK0gPiBsacOhbzsgIzdGMkQNCivnvK4gPiBzaMOgbjsgIzdGMkUNCivnvK8gPiB6xJNuZzsgIzdGMkYNCivnvLAgPiBqacSBbmc7ICM3RjMwDQor57yxID4gcWnEg247ICM3RjMxDQor57yyID4gesSDbzsgIzdGMzINCivnvLMgPiBodcOhbjsgIzdGMzMNCivnvLQgPiBqacSDbzsgIzdGMzQNCivnvLUgPiB6dcSDbjsgIzdGMzUNCivnvLYgPiBmxY91OyAjN0YzNg0KK+e8tyA+IHhpw6g7ICM3RjM3DQor57y4ID4gZ8SBbmc7ICM3RjM4DQor57y5ID4gZsWPdTsgIzdGMzkNCivnvLogPiBxdcSTOyAjN0YzQQ0KK+e8uyA+IGbFj3U7ICM3RjNCDQor57y9ID4gYsWNOyAjN0YzRA0KK+e8viA+IHDDrW5nOyAjN0YzRQ0KK+e8vyA+IGjDsnU7ICM3RjNGDQor572BID4gZ8SBbmc7ICM3RjQxDQor572CID4gecSrbmc7ICM3RjQyDQor572DID4gecSrbmc7ICM3RjQzDQor572EID4gccOsbmc7ICM3RjQ0DQor572FID4geGnDoDsgIzdGNDUNCivnvYYgPiBndcOgbjsgIzdGNDYNCivnvYcgPiB6xatuOyAjN0Y0Nw0KK+e9iCA+IHTDoW47ICM3RjQ4DQor572KID4gccOsOyAjN0Y0QQ0KK+e9iyA+IHfDqG5nOyAjN0Y0Qg0KK+e9jCA+IHnEq25nOyAjN0Y0Qw0KK+e9jSA+IGzDqWk7ICM3RjREDQor572OID4gdMOhbjsgIzdGNEUNCivnvY8gPiBsw7o7ICM3RjRGDQor572QID4gZ3XDoG47ICM3RjUwDQor572RID4gd8SDbmc7ICM3RjUxDQor572SID4gd8SDbmc7ICM3RjUyDQor572TID4gZ8SBbmc7ICM3RjUzDQor572UID4gd8SDbmc7ICM3RjU0DQor572VID4gaMSDbjsgIzdGNTUNCivnvZcgPiBsxatvOyAjN0Y1Nw0KK+e9mCA+IGbDujsgIzdGNTgNCivnvZkgPiBtw607ICM3RjU5DQor572aID4gZsOhOyAjN0Y1QQ0KK+e9myA+IGfFqzsgIzdGNUINCivnvZwgPiB6aMWtOyAjN0Y1Qw0KK+e9nSA+IGrFqzsgIzdGNUQNCivnvZ4gPiBtw6FvOyAjN0Y1RQ0KK+e9nyA+IGfFrTsgIzdGNUYNCivnvaAgPiBtw61uOyAjN0Y2MA0KK+e9oSA+IGfEgW5nOyAjN0Y2MQ0KK+e9oiA+IGLDoDsgIzdGNjINCivnvaMgPiBndcOgOyAjN0Y2Mw0KK+e9pCA+IHTDrTsgIzdGNjQNCivnvaUgPiBqdcOgbjsgIzdGNjUNCivnvaYgPiBmxas7ICM3RjY2DQor572nID4gbMOtbjsgIzdGNjcNCivnvaggPiB5xINuOyAjN0Y2OA0KK+e9qSA+IHpow6BvOyAjN0Y2OQ0KK+e9qiA+IHrDuWk7ICM3RjZBDQor572rID4gZ3XDoDsgIzdGNkINCivnvawgPiB6aMO6bzsgIzdGNkMNCivnva0gPiB5w7k7ICM3RjZEDQor572uID4gemjDrDsgIzdGNkUNCivnva8gPiDEg247ICM3RjZGDQor572wID4gZsOhOyAjN0Y3MA0KK+e9sSA+IG7Eg247ICM3RjcxDQor572yID4gc2jFrTsgIzdGNzINCivnvbMgPiBzxKs7ICM3RjczDQor5720ID4gcMOtOyAjN0Y3NA0KK+e9tSA+IG3DoDsgIzdGNzUNCivnvbYgPiBsxK11OyAjN0Y3Ng0KK+e9tyA+IGLDoDsgIzdGNzcNCivnvbggPiBmw6E7ICM3Rjc4DQor5725ID4gbMOtOyAjN0Y3OQ0KK+e9uiA+IGNoxIFvOyAjN0Y3QQ0KK+e9uyA+IHfDqGk7ICM3RjdCDQor5728ID4gYsOsOyAjN0Y3Qw0KK+e9vSA+IGrDrDsgIzdGN0QNCivnvb4gPiB6xJNuZzsgIzdGN0UNCivnvb8gPiB0w7NuZzsgIzdGN0YNCivnvoAgPiBsxK11OyAjN0Y4MA0KK+e+gSA+IGrEqzsgIzdGODENCivnvoIgPiBqdcOgbjsgIzdGODINCivnvoMgPiBtw6w7ICM3RjgzDQor576EID4gemjDoG87ICM3Rjg0DQor576FID4gbMO6bzsgIzdGODUNCivnvoYgPiBww607ICM3Rjg2DQor576HID4gasSrOyAjN0Y4Nw0KK+e+iCA+IGrEqzsgIzdGODgNCivnvokgPiBsdcOhbjsgIzdGODkNCivnvoogPiB5w6FuZzsgIzdGOEENCivnvosgPiBtacSTOyAjN0Y4Qg0KK+e+jCA+IHFpxIFuZzsgIzdGOEMNCivnvo0gPiB0w6A7ICM3RjhEDQor576OID4gbcSVaTsgIzdGOEUNCivnvo8gPiB5w6FuZzsgIzdGOEYNCivnvpAgPiB5xY91OyAjN0Y5MA0KK+e+kSA+IHnFj3U7ICM3RjkxDQor576SID4gZsOpbjsgIzdGOTINCivnvpMgPiBixIE7ICM3RjkzDQor576UID4gZ8SBbzsgIzdGOTQNCivnvpUgPiB5w6BuZzsgIzdGOTUNCivnvpYgPiBnxa07ICM3Rjk2DQor576XID4gcWnEgW5nOyAjN0Y5Nw0KK+e+mCA+IHrEgW5nOyAjN0Y5OA0KK+e+mSA+IGfEgW87ICM3Rjk5DQor576aID4gbMOtbmc7ICM3RjlBDQor576bID4gecOsOyAjN0Y5Qg0KK+e+nCA+IHpow7k7ICM3RjlDDQor576dID4gZMSrOyAjN0Y5RA0KK+e+niA+IHjEq3U7ICM3RjlFDQor576fID4gcWnEgW47ICM3RjlGDQor576gID4gecOtOyAjN0ZBMA0KK+e+oSA+IHhpw6BuOyAjN0ZBMQ0KK+e+oiA+IHLDs25nOyAjN0ZBMg0KK+e+oyA+IHHDum47ICM3RkEzDQor576kID4gccO6bjsgIzdGQTQNCivnvqUgPiBxacSBbjsgIzdGQTUNCivnvqYgPiBodcOhbjsgIzdGQTYNCivnvqcgPiB6xatpOyAjN0ZBNw0KK+e+qCA+IHhpw6BuOyAjN0ZBOA0KK+e+qSA+IHnDrDsgIzdGQTkNCivnvqsgPiBxacSBbmc7ICM3RkFCDQor576sID4geGnDoW47ICM3RkFDDQor576tID4gecO6OyAjN0ZBRA0KK+e+riA+IGfEk25nOyAjN0ZBRQ0KK+e+ryA+IGppw6k7ICM3RkFGDQor576wID4gdMSBbmc7ICM3RkIwDQor576xID4geXXDoW47ICM3RkIxDQor576yID4geMSrOyAjN0ZCMg0KK+e+syA+IGbDoW47ICM3RkIzDQor5760ID4gc2jEgW47ICM3RkI0DQor5761ID4gZsSVbjsgIzdGQjUNCivnvrYgPiBzaMSBbjsgIzdGQjYNCivnvrcgPiBsacSDbjsgIzdGQjcNCivnvrggPiBsw6lpOyAjN0ZCOA0KK+e+uSA+IGfEk25nOyAjN0ZCOQ0KK+e+uiA+IG7Ds3U7ICM3RkJBDQor5767ID4gcWnDoG5nOyAjN0ZCQg0KK+e+vCA+IGNow6BuOyAjN0ZCQw0KK+e+vSA+IHnFrTsgIzdGQkQNCivnvr4gPiBnw7JuZzsgIzdGQkUNCivnvr8gPiB5w6w7ICM3RkJGDQor57+AID4gY2jDs25nOyAjN0ZDMA0KK+e/gSA+IHfEk25nOyAjN0ZDMQ0KK+e/giA+IGbEk247ICM3RkMyDQor57+DID4gaMOzbmc7ICM3RkMzDQor57+EID4gY2jDrDsgIzdGQzQNCivnv4UgPiBjaMOsOyAjN0ZDNQ0KK+e/hiA+IGPDuWk7ICM3RkM2DQor57+HID4gZsO6OyAjN0ZDNw0KK+e/iCA+IHhpw6E7ICM3RkM4DQor57+JID4gcMSVbjsgIzdGQzkNCivnv4ogPiB5w6w7ICM3RkNBDQor57+LID4gbMSBOyAjN0ZDQg0KK+e/jCA+IHnDrDsgIzdGQ0MNCivnv40gPiBwxKs7ICM3RkNEDQor57+OID4gbMOtbmc7ICM3RkNFDQor57+PID4gbMOsdTsgIzdGQ0YNCivnv5AgPiB6aMOsOyAjN0ZEMA0KK+e/kSA+IHHDujsgIzdGRDENCivnv5IgPiB4w607ICM3RkQyDQor57+TID4geGnDqTsgIzdGRDMNCivnv5QgPiB4acOhbmc7ICM3RkQ0DQor57+VID4geMOsOyAjN0ZENQ0KK+e/liA+IHjDrDsgIzdGRDYNCivnv5cgPiBxw607ICM3RkQ3DQor57+YID4gcWnDoW87ICM3RkQ4DQor57+ZID4gaMO5aTsgIzdGRDkNCivnv5ogPiBoxatpOyAjN0ZEQQ0KK+e/myA+IHhpxIFvOyAjN0ZEQg0KK+e/nCA+IHPDqDsgIzdGREMNCivnv50gPiBow7NuZzsgIzdGREQNCivnv54gPiBqacSBbmc7ICM3RkRFDQor57+fID4gZMOtOyAjN0ZERg0KK+e/oCA+IGPDuWk7ICM3RkUwDQor57+hID4gZsSVaTsgIzdGRTENCivnv6IgPiB0xIFvOyAjN0ZFMg0KK+e/oyA+IHNow6A7ICM3RkUzDQor57+kID4gY2jDrDsgIzdGRTQNCivnv6UgPiB6aMO5OyAjN0ZFNQ0KK+e/piA+IGppxINuOyAjN0ZFNg0KK+e/pyA+IHh1xIFuOyAjN0ZFNw0KK+e/qCA+IHNow6w7ICM3RkU4DQor57+pID4gcGnEgW47ICM3RkU5DQor57+qID4gesWNbmc7ICM3RkVBDQor57+rID4gd8OgbjsgIzdGRUINCivnv6wgPiBoxatpOyAjN0ZFQw0KK+e/rSA+IGjDs3U7ICM3RkVEDQor57+uID4gaMOpOyAjN0ZFRQ0KK+e/ryA+IGjDqDsgIzdGRUYNCivnv7AgPiBow6BuOyAjN0ZGMA0KK+e/sSA+IMOhbzsgIzdGRjENCivnv7IgPiBwacSBbzsgIzdGRjINCivnv7MgPiB5w6w7ICM3RkYzDQor57+0ID4gbGnDoW47ICM3RkY0DQor57+1ID4gccO6OyAjN0ZGNQ0KK+e/tyA+IGzDrW47ICM3RkY3DQor57+4ID4gcMSVbjsgIzdGRjgNCivnv7kgPiBxacOhbzsgIzdGRjkNCivnv7ogPiDDoW87ICM3RkZBDQor57+7ID4gZsSBbjsgIzdGRkINCivnv7wgPiB5w6w7ICM3RkZDDQor57+9ID4gaMO5aTsgIzdGRkQNCivnv74gPiB4dcSBbjsgIzdGRkUNCivnv78gPiBkw6BvOyAjN0ZGRg0KK+iAgCA+IHnDoG87ICM4MDAwDQor6ICBID4gbMSDbzsgIzgwMDENCivogIMgPiBrxINvOyAjODAwMw0KK+iAhCA+IG3DoG87ICM4MDA0DQor6ICFID4gemjElTsgIzgwMDUNCivogIYgPiBxw607ICM4MDA2DQor6ICHID4gZ8WPdTsgIzgwMDcNCivogIggPiBnxY91OyAjODAwOA0KK+iAiSA+IGfFj3U7ICM4MDA5DQor6ICKID4gZGnDqDsgIzgwMEENCivogIsgPiBkacOoOyAjODAwQg0KK+iAjCA+IMOpcjsgIzgwMEMNCivogI0gPiBzaHXEgzsgIzgwMEQNCivogI4gPiBydcSDbjsgIzgwMEUNCivogI8gPiDDqXI7ICM4MDBGDQor6ICQID4gbsOgaTsgIzgwMTANCivogJEgPiB6aHXEgW47ICM4MDExDQor6ICSID4gbMSVaTsgIzgwMTINCivogJMgPiB0xKtuZzsgIzgwMTMNCivogJQgPiB6xK07ICM4MDE0DQor6ICVID4gZ8STbmc7ICM4MDE1DQor6ICWID4gY2jDoG87ICM4MDE2DQor6ICXID4gaMOgbzsgIzgwMTcNCivogJggPiB5w7puOyAjODAxOA0KK+iAmSA+IHDDoTsgIzgwMTkNCivogJogPiBwxKs7ICM4MDFBDQor6ICbID4gY2jDrTsgIzgwMUINCivogJwgPiBzw6w7ICM4MDFDDQor6ICdID4gY2jDujsgIzgwMUQNCivogJ4gPiBqacSBOyAjODAxRQ0KK+iAnyA+IGrDuTsgIzgwMUYNCivogKAgPiBow6k7ICM4MDIwDQor6IChID4gY2jDujsgIzgwMjENCivogKIgPiBsw6BvOyAjODAyMg0KK+iAoyA+IGzFrW47ICM4MDIzDQor6ICkID4gasOtOyAjODAyNA0KK+iApSA+IHTEg25nOyAjODAyNQ0KK+iApiA+IMWPdTsgIzgwMjYNCivogKcgPiBsw7N1OyAjODAyNw0KK+iAqCA+IG7DsnU7ICM4MDI4DQor6ICpID4gZ8WNdTsgIzgwMjkNCivogKogPiBwxINuZzsgIzgwMkENCivogKsgPiB6w6k7ICM4MDJCDQor6ICsID4gbMOzdTsgIzgwMkMNCivogK0gPiBqxKs7ICM4MDJEDQor6ICuID4gbMOgbzsgIzgwMkUNCivogK8gPiBow7lvOyAjODAyRg0KK+iAsCA+IHnFjXU7ICM4MDMwDQor6ICxID4gbcOyOyAjODAzMQ0KK+iAsiA+IGh1w6FpOyAjODAzMg0KK+iAsyA+IMSVcjsgIzgwMzMNCivogLQgPiB6aMOpOyAjODAzNA0KK+iAtSA+IHTEq25nOyAjODAzNQ0KK+iAtiA+IHnDqTsgIzgwMzYNCivogLcgPiBkxIE7ICM4MDM3DQor6IC4ID4gc8WPbmc7ICM4MDM4DQor6IC5ID4gccOtbjsgIzgwMzkNCivogLogPiB5w7puOyAjODAzQQ0KK+iAuyA+IGNoxK07ICM4MDNCDQor6IC8ID4gZMSBbjsgIzgwM0MNCivogL0gPiBkxIFuOyAjODAzRA0KK+iAviA+IGjDs25nOyAjODAzRQ0KK+iAvyA+IGfElW5nOyAjODAzRg0KK+iBgCA+IHpow607ICM4MDQwDQor6IGCID4gbmnDqDsgIzgwNDINCivogYMgPiBkxIFuOyAjODA0Mw0KK+iBhCA+IHpoxJVuOyAjODA0NA0KK+iBhSA+IGNow6g7ICM4MDQ1DQor6IGGID4gbMOtbmc7ICM4MDQ2DQor6IGHID4gemjEk25nOyAjODA0Nw0KK+iBiCA+IHnFj3U7ICM4MDQ4DQor6IGJID4gd8SBOyAjODA0OQ0KK+iBiiA+IGxpw6FvOyAjODA0QQ0KK+iBiyA+IGzDs25nOyAjODA0Qg0KK+iBjCA+IHpow607ICM4MDRDDQor6IGNID4gbsOtbmc7ICM4MDREDQor6IGOID4gdGnEgW87ICM4MDRFDQor6IGPID4gw6lyOyAjODA0Rg0KK+iBkCA+IHnDoDsgIzgwNTANCivogZEgPiBkacOpOyAjODA1MQ0KK+iBkiA+IGd1xIE7ICM4MDUyDQor6IGUID4gbGnDoW47ICM4MDU0DQor6IGVID4gaMOgbzsgIzgwNTUNCivogZYgPiBzaMOobmc7ICM4MDU2DQor6IGXID4gbGnDqDsgIzgwNTcNCivogZggPiBww6xuOyAjODA1OA0KK+iBmSA+IGrEq25nOyAjODA1OQ0KK+iBmiA+IGrDuTsgIzgwNUENCivogZsgPiBiw6w7ICM4MDVCDQor6IGcID4gZMStOyAjODA1Qw0KK+iBnSA+IGfDum87ICM4MDVEDQor6IGeID4gd8OpbjsgIzgwNUUNCivogZ8gPiB4w7k7ICM4MDVGDQor6IGgID4gcMOtbmc7ICM4MDYwDQor6IGhID4gY8WNbmc7ICM4MDYxDQor6IGkID4gdMOtbmc7ICM4MDY0DQor6IGlID4gecWtOyAjODA2NQ0KK+iBpiA+IGPFjW5nOyAjODA2Ng0KK+iBpyA+IGvDumk7ICM4MDY3DQor6IGpID4ga8O5aTsgIzgwNjkNCivogaogPiBjxY1uZzsgIzgwNkENCivogasgPiBsacOhbjsgIzgwNkINCivogawgPiB3xJVuZzsgIzgwNkMNCivoga0gPiBrw7lpOyAjODA2RA0KK+iBriA+IGxpw6FuOyAjODA2RQ0KK+iBryA+IGxpw6FuOyAjODA2Rg0KK+iBsCA+IGPFjW5nOyAjODA3MA0KK+iBsSA+IMOhbzsgIzgwNzENCivogbIgPiBzaMSTbmc7ICM4MDcyDQor6IGzID4gc8WPbmc7ICM4MDczDQor6IG0ID4gdMSrbmc7ICM4MDc0DQor6IG1ID4ga8O5aTsgIzgwNzUNCivogbYgPiBuacOoOyAjODA3Ng0KK+iBtyA+IHpow607ICM4MDc3DQor6IG4ID4gZMSBbjsgIzgwNzgNCivogbkgPiBuw61uZzsgIzgwNzkNCivogbogPiBxaWU7ICM4MDdBDQor6IG7ID4gasSrOyAjODA3Qg0KK+iBvCA+IHTEq25nOyAjODA3Qw0KK+iBvSA+IHTEq25nOyAjODA3RA0KK+iBviA+IGzDs25nOyAjODA3RQ0KK+iBvyA+IHnDuTsgIzgwN0YNCivogoAgPiB5w7k7ICM4MDgwDQor6IKBID4gemjDoG87ICM4MDgxDQor6IKCID4gc8OsOyAjODA4Mg0KK+iCgyA+IHPDuTsgIzgwODMNCivogoQgPiB5w6w7ICM4MDg0DQor6IKFID4gc8O5OyAjODA4NQ0KK+iChiA+IHPDrDsgIzgwODYNCivogocgPiB6aMOgbzsgIzgwODcNCivogoggPiB6aMOgbzsgIzgwODgNCivogokgPiByw7J1OyAjODA4OQ0KK+iCiiA+IHnDrDsgIzgwOEENCivogosgPiBsw6g7ICM4MDhCDQor6IKMID4gasSrOyAjODA4Qw0KK+iCjSA+IHHDrXU7ICM4MDhEDQor6IKOID4ga8SVbjsgIzgwOEUNCivogo8gPiBjw6BvOyAjODA4Rg0KK+iCkCA+IGfEkzsgIzgwOTANCivogpEgPiBkw6w7ICM4MDkxDQor6IKSID4gaHXDoW47ICM4MDkyDQor6IKTID4gaHXEgW5nOyAjODA5Mw0KK+iClCA+IHnErTsgIzgwOTQNCivogpUgPiByw6huOyAjODA5NQ0KK+iCliA+IHhpw6BvOyAjODA5Ng0KK+iClyA+IHLFrTsgIzgwOTcNCivogpggPiB6aMWPdTsgIzgwOTgNCivogpkgPiB5dcSBbjsgIzgwOTkNCivogpogPiBkw7k7ICM4MDlBDQor6IKbID4gZ8SBbmc7ICM4MDlCDQor6IKcID4gcsOzbmc7ICM4MDlDDQor6IKdID4gZ8SBbjsgIzgwOUQNCivogp4gPiBjaMSBOyAjODA5RQ0KK+iCnyA+IHfDsjsgIzgwOUYNCivogqAgPiBjaMOhbmc7ICM4MEEwDQor6IKhID4gZ8WtOyAjODBBMQ0KK+iCoiA+IHpoxKs7ICM4MEEyDQor6IKjID4gaMOhbjsgIzgwQTMNCivogqQgPiBmxas7ICM4MEE0DQor6IKlID4gZsOpaTsgIzgwQTUNCivogqYgPiBmw6luOyAjODBBNg0KK+iCpyA+IHDEk2k7ICM4MEE3DQor6IKoID4gcMOgbmc7ICM4MEE4DQor6IKpID4gamnEgW47ICM4MEE5DQor6IKqID4gZsOhbmc7ICM4MEFBDQor6IKrID4gemjFq247ICM4MEFCDQor6IKsID4gecOzdTsgIzgwQUMNCivogq0gPiBuw6A7ICM4MEFEDQor6IKuID4gaMOhbmc7ICM4MEFFDQor6IKvID4ga8SVbjsgIzgwQUYNCivogrAgPiByw6FuOyAjODBCMA0KK+iCsSA+IGfFjW5nOyAjODBCMQ0KK+iCsiA+IHnDuTsgIzgwQjINCivogrMgPiB3xJVuOyAjODBCMw0KK+iCtCA+IHnDoW87ICM4MEI0DQor6IK1ID4gasOsbjsgIzgwQjUNCivogrYgPiBww607ICM4MEI2DQor6IK3ID4gcWnEgW47ICM4MEI3DQor6IK4ID4geMOsOyAjODBCOA0KK+iCuSA+IHjEqzsgIzgwQjkNCivogrogPiBmw6hpOyAjODBCQQ0KK+iCuyA+IGvElW47ICM4MEJCDQor6IK8ID4gasStbmc7ICM4MEJDDQor6IK9ID4gdMOgaTsgIzgwQkQNCivogr4gPiBzaMOobjsgIzgwQkUNCivogr8gPiB6aMWPbmc7ICM4MEJGDQor6IOAID4gemjDoG5nOyAjODBDMA0KK+iDgSA+IHhpw6k7ICM4MEMxDQor6IOCID4gc2jEk247ICM4MEMyDQor6IODID4gd8OoaTsgIzgwQzMNCivog4QgPiB6aMOydTsgIzgwQzQNCivog4UgPiBkacOpOyAjODBDNQ0KK+iDhiA+IGTEg247ICM4MEM2DQor6IOHID4gZsOoaTsgIzgwQzcNCivog4ggPiBiw6E7ICM4MEM4DQor6IOJID4gYsOzOyAjODBDOQ0KK+iDiiA+IHHDujsgIzgwQ0ENCivog4sgPiB0acOhbjsgIzgwQ0INCivog4wgPiBiw6hpOyAjODBDQw0KK+iDjSA+IGd1xIE7ICM4MENEDQor6IOOID4gdMSBaTsgIzgwQ0UNCivog48gPiB6xK07ICM4MENGDQor6IOQID4ga8WrOyAjODBEMA0KK+iDkSA+IHpoxKs7ICM4MEQxDQor6IOSID4gbsOsOyAjODBEMg0KK+iDkyA+IHDDrW5nOyAjODBEMw0KK+iDlCA+IHrDrDsgIzgwRDQNCivog5UgPiBmw7k7ICM4MEQ1DQor6IOWID4gcMOgbmc7ICM4MEQ2DQor6IOXID4gemjEk247ICM4MEQ3DQor6IOYID4geGnDoW47ICM4MEQ4DQor6IOZID4gesO5bzsgIzgwRDkNCivog5ogPiBwxJNpOyAjODBEQQ0KK+iDmyA+IGppxIM7ICM4MERCDQor6IOcID4gc2jDqG5nOyAjODBEQw0KK+iDnSA+IHpoxKs7ICM4MEREDQor6IOeID4gYsSBbzsgIzgwREUNCivog58gPiBtxa07ICM4MERGDQor6IOgID4gccWrOyAjODBFMA0KK+iDoSA+IGjDujsgIzgwRTENCivog6IgPiBrxJM7ICM4MEUyDQor6IOjID4gecStOyAjODBFMw0KK+iDpCA+IHnDrG47ICM4MEU0DQor6IOlID4geMWrOyAjODBFNQ0KK+iDpiA+IHnEgW5nOyAjODBFNg0KK+iDpyA+IGzDs25nOyAjODBFNw0KK+iDqCA+IGTDsm5nOyAjODBFOA0KK+iDqSA+IGvEgzsgIzgwRTkNCivog6ogPiBsw7o7ICM4MEVBDQor6IOrID4gasOsbmc7ICM4MEVCDQor6IOsID4gbsWtOyAjODBFQw0KK+iDrSA+IHnEgW47ICM4MEVEDQor6IOuID4gcMOhbmc7ICM4MEVFDQor6IOvID4ga3XDoDsgIzgwRUYNCivog7AgPiB5w607ICM4MEYwDQor6IOxID4gZ3XEgW5nOyAjODBGMQ0KK+iDsiA+IGfEgWk7ICM4MEYyDQor6IOzID4gZ8STOyAjODBGMw0KK+iDtCA+IGTDsm5nOyAjODBGNA0KK+iDtSA+IHpow6w7ICM4MEY1DQor6IO2ID4geGnDoW87ICM4MEY2DQor6IO3ID4geMSrb25nOyAjODBGNw0KK+iDuCA+IHjEq29uZzsgIzgwRjgNCivog7kgPiDDqXI7ICM4MEY5DQor6IO6ID4gw6g7ICM4MEZBDQor6IO7ID4geMOtbmc7ICM4MEZCDQor6IO8ID4gcGnDoW47ICM4MEZDDQor6IO9ID4gbsOpbmc7ICM4MEZEDQor6IO+ID4gesOsOyAjODBGRQ0KK+iDvyA+IGd1aTsgIzgwRkYNCivohIAgPiBjaMOpbmc7ICM4MTAwDQor6ISBID4gdGnDoG87ICM4MTAxDQor6ISCID4gemjEqzsgIzgxMDINCivohIMgPiBjw7lpOyAjODEwMw0KK+iEhCA+IG3DqWk7ICM4MTA0DQor6ISFID4geGnDqTsgIzgxMDUNCivohIYgPiBjw7lpOyAjODEwNg0KK+iEhyA+IHhpw6k7ICM4MTA3DQor6ISIID4gbcOyOyAjODEwOA0KK+iEiSA+IG3DoGk7ICM4MTA5DQor6ISKID4gasOtOyAjODEwQQ0KK+iEjSA+IGt1w6BpOyAjODEwRA0KK+iEjiA+IHPDoDsgIzgxMEUNCivohI8gPiB6xIFuZzsgIzgxMEYNCivohJAgPiBxw607ICM4MTEwDQor6ISRID4gbsSDbzsgIzgxMTENCivohJIgPiBtxK07ICM4MTEyDQor6ISTID4gbsOzbmc7ICM4MTEzDQor6ISUID4gbHXDoW47ICM4MTE0DQor6ISVID4gd8SDbjsgIzgxMTUNCivohJYgPiBiw7M7ICM4MTE2DQor6ISXID4gd8SVbjsgIzgxMTcNCivohJggPiBndcSDbjsgIzgxMTgNCivohJkgPiBxw611OyAjODExOQ0KK+iEmiA+IGppxINvOyAjODExQQ0KK+iEmyA+IGrDrG5nOyAjODExQg0KK+iEnCA+IHLDs3U7ICM4MTFDDQor6ISdID4gaMSTbmc7ICM4MTFEDQor6ISeID4gY8WtbzsgIzgxMUUNCivohJ8gPiBsacOoOyAjODExRg0KK+iEoCA+IHNoxIFuOyAjODEyMA0KK+iEoSA+IHTErW5nOyAjODEyMQ0KK+iEoiA+IG3DqWk7ICM4MTIyDQor6ISjID4gY2jDum47ICM4MTIzDQor6ISkID4gc2jDqG47ICM4MTI0DQor6ISlID4geGnDqTsgIzgxMjUNCivohKYgPiBkZTsgIzgxMjYNCivohKcgPiB6xatpOyAjODEyNw0KK+iEqCA+IGPDuTsgIzgxMjgNCivohKkgPiB4xKt1OyAjODEyOQ0KK+iEqiA+IHjDrG47ICM4MTJBDQor6ISrID4gdMWrbzsgIzgxMkINCivohKwgPiBwxIFvOyAjODEyQw0KK+iErSA+IGNow6luZzsgIzgxMkQNCivohK4gPiBuxJVpOyAjODEyRQ0KK+iEryA+IGbFrTsgIzgxMkYNCivohLAgPiBkw7J1OyAjODEzMA0KK+iEsSA+IHTFq287ICM4MTMxDQor6ISyID4gbmnDoG87ICM4MTMyDQor6IS0ID4gcMStOyAjODEzNA0KK+iEtSA+IGfFrTsgIzgxMzUNCivohLYgPiBndcSBOyAjODEzNg0KK+iEtyA+IGzDrDsgIzgxMzcNCivohLggPiBsacSDbjsgIzgxMzgNCivohLkgPiB6aMOgbmc7ICM4MTM5DQor6IS6ID4gY8O5aTsgIzgxM0ENCivohLsgPiBqacOpOyAjODEzQg0KK+iEvCA+IGxpxINuZzsgIzgxM0MNCivohL0gPiB6aMWNdTsgIzgxM0QNCivohL4gPiBww607ICM4MTNFDQor6IS/ID4gYmnEgW87ICM4MTNGDQor6IWAID4gbMO6bjsgIzgxNDANCivohYEgPiBwacOhbjsgIzgxNDENCivohYIgPiBnw7lvOyAjODE0Mg0KK+iFgyA+IGvDuWk7ICM4MTQzDQor6IWEID4gY2jDumk7ICM4MTQ0DQor6IWFID4gZMOgbjsgIzgxNDUNCivohYYgPiB0acSDbjsgIzgxNDYNCivohYcgPiBuxJVpOyAjODE0Nw0KK+iFiCA+IGrEq25nOyAjODE0OA0KK+iFiSA+IGppxJM7ICM4MTQ5DQor6IWKID4gbMOgOyAjODE0QQ0KK+iFiyA+IHnDrDsgIzgxNEINCivohYwgPiDEgW47ICM4MTRDDQor6IWNID4gcsSVbjsgIzgxNEQNCivohY4gPiBzaMOobjsgIzgxNEUNCivohY8gPiBjaMO5bzsgIzgxNEYNCivohZAgPiBmxa07ICM4MTUwDQor6IWRID4gZsWtOyAjODE1MQ0KK+iFkiA+IGrFqzsgIzgxNTINCivohZMgPiBmw6lpOyAjODE1Mw0KK+iFlCA+IHFpxIFuZzsgIzgxNTQNCivohZUgPiB3w6BuOyAjODE1NQ0KK+iFliA+IGTDsm5nOyAjODE1Ng0KK+iFlyA+IHDDrTsgIzgxNTcNCivohZggPiBnw7pvOyAjODE1OA0KK+iFmSA+IHrFjW5nOyAjODE1OQ0KK+iFmiA+IGTDrG5nOyAjODE1QQ0KK+iFmyA+IHfFqzsgIzgxNUINCivohZwgPiBtw6lpOyAjODE1Qw0KK+iFnSA+IHJ1xINuOyAjODE1RA0KK+iFniA+IHpodcOgbjsgIzgxNUUNCivohZ8gPiB6aMOsOyAjODE1Rg0KK+iFoCA+IGPDsnU7ICM4MTYwDQor6IWhID4gZ3XEgTsgIzgxNjENCivohaIgPiDFj3U7ICM4MTYyDQor6IWjID4gZMOsOyAjODE2Mw0KK+iFpCA+IMSBbjsgIzgxNjQNCivohaUgPiB4xKtuZzsgIzgxNjUNCivohaYgPiBuxINvOyAjODE2Ng0KK+iFpyA+IHnDujsgIzgxNjcNCivohaggPiBjaHXEg247ICM4MTY4DQor6IWpID4gbsSDbjsgIzgxNjkNCivohaogPiB5w7luOyAjODE2QQ0KK+iFqyA+IHpoxY9uZzsgIzgxNkINCivohawgPiByw7N1OyAjODE2Qw0KK+iFrSA+IMOoOyAjODE2RA0KK+iFriA+IHPEgWk7ICM4MTZFDQor6IWvID4gdMO6OyAjODE2Rg0KK+iFsCA+IHnEgW87ICM4MTcwDQor6IWxID4gamnDoG47ICM4MTcxDQor6IWyID4gd8SVaTsgIzgxNzINCivohbMgPiBqacSDbzsgIzgxNzMNCivohbQgPiB5w7o7ICM4MTc0DQor6IW1ID4gamnEgTsgIzgxNzUNCivohbYgPiBkdcOgbjsgIzgxNzYNCivohbcgPiBiw6w7ICM4MTc3DQor6IW4ID4gY2jDoW5nOyAjODE3OA0KK+iFuSA+IGbDuTsgIzgxNzkNCivohbogPiB4acOgbjsgIzgxN0ENCivohbsgPiBuw6w7ICM4MTdCDQor6IW8ID4gbWnEg247ICM4MTdDDQor6IW9ID4gd8OgOyAjODE3RA0KK+iFviA+IHTDqW5nOyAjODE3RQ0KK+iFvyA+IHTFrWk7ICM4MTdGDQor6IaAID4gYsSDbmc7ICM4MTgwDQor6IaBID4gcWnEgW47ICM4MTgxDQor6IaCID4gbMeaOyAjODE4Mg0KK+iGgyA+IHfDoDsgIzgxODMNCivohoQgPiBzw7J1OyAjODE4NA0KK+iGhSA+IHTDoW5nOyAjODE4NQ0KK+iGhiA+IHPDuTsgIzgxODYNCivohocgPiB6aMO5aTsgIzgxODcNCivohoggPiBnw6k7ICM4MTg4DQor6IaJID4gecOsOyAjODE4OQ0KK+iGiiA+IGLDszsgIzgxOEENCivohosgPiBsacOhbzsgIzgxOEINCivohowgPiBqw607ICM4MThDDQor6IaNID4gcMOtOyAjODE4RA0KK+iGjiA+IHhpw6k7ICM4MThFDQor6IaPID4gZ8SBbzsgIzgxOEYNCivohpAgPiBsx5o7ICM4MTkwDQor6IaRID4gYsOsbjsgIzgxOTENCivohpIgPiBvdTsgIzgxOTINCivohpMgPiBjaMOhbmc7ICM4MTkzDQor6IaUID4gbMO5OyAjODE5NA0KK+iGlSA+IGfDum87ICM4MTk1DQor6IaWID4gcMSBbmc7ICM4MTk2DQor6IaXID4gY2h1w6FpOyAjODE5Nw0KK+iGmCA+IHBpxINvOyAjODE5OA0KK+iGmSA+IGppxINuZzsgIzgxOTkNCivohpogPiBmxas7ICM4MTlBDQor6IabID4gdMOhbmc7ICM4MTlCDQor6IacID4gbcOyOyAjODE5Qw0KK+iGnSA+IHjEqzsgIzgxOUQNCivohp4gPiB6aHXEgW47ICM4MTlFDQor6IafID4gbMecOyAjODE5Rg0KK+iGoCA+IGppxIFvOyAjODFBMA0KK+iGoSA+IHnDrG5nOyAjODFBMQ0KK+iGoiA+IGzHmDsgIzgxQTINCivohqMgPiB6aMOsOyAjODFBMw0KK+iGpSA+IGNoxatuOyAjODFBNQ0KK+iGpiA+IGxpxINuOyAjODFBNg0KK+iGpyA+IHTDs25nOyAjODFBNw0KK+iGqCA+IHDDqW5nOyAjODFBOA0KK+iGqSA+IG7DrDsgIzgxQTkNCivohqogPiB6aMOgOyAjODFBQQ0KK+iGqyA+IGxpw6FvOyAjODFBQg0KK+iGrCA+IGPDuWk7ICM4MUFDDQor6IatID4gZ8WraTsgIzgxQUQNCivohq4gPiB4acSBbzsgIzgxQUUNCivohq8gPiB0xJNuZzsgIzgxQUYNCivohrAgPiBmw6FuOyAjODFCMA0KK+iGsSA+IHpow607ICM4MUIxDQor6IayID4gamnEgW87ICM4MUIyDQor6IazID4gc2jDoG47ICM4MUIzDQor6Ia0ID4gd8O6OyAjODFCNA0KK+iGtSA+IGPDuWk7ICM4MUI1DQor6Ia2ID4gcsO5bjsgIzgxQjYNCivohrcgPiB4acSBbmc7ICM4MUI3DQor6Ia4ID4gc8WtaTsgIzgxQjgNCivohrkgPiBmw6huOyAjODFCOQ0KK+iGuiA+IHnEq25nOyAjODFCQQ0KK+iGuyA+IHTEg247ICM4MUJCDQor6Ia8ID4gemh1xIE7ICM4MUJDDQor6Ia9ID4gZMSDbjsgIzgxQkQNCivohr4gPiBrdcOgaTsgIzgxQkUNCivohr8gPiBuw7NuZzsgIzgxQkYNCivoh4AgPiB0w7puOyAjODFDMA0KK+iHgSA+IGxpw6FuOyAjODFDMQ0KK+iHgiA+IGLDrDsgIzgxQzINCivoh4MgPiB5xY9uZzsgIzgxQzMNCivoh4QgPiBqdcOpOyAjODFDNA0KK+iHhSA+IGNow7k7ICM4MUM1DQor6IeGID4gecOsOyAjODFDNg0KK+iHhyA+IGp1xINuOyAjODFDNw0KK+iHiCA+IGzDoDsgIzgxQzgNCivoh4kgPiBsacSDbjsgIzgxQzkNCivoh4ogPiBzxIFvOyAjODFDQQ0KK+iHiyA+IHTDum47ICM4MUNCDQor6IeMID4gZ8WtOyAjODFDQw0KK+iHjSA+IHHDrTsgIzgxQ0QNCivoh44gPiBjw7lpOyAjODFDRQ0KK+iHjyA+IGLDrG47ICM4MUNGDQor6IeQID4geMWrbjsgIzgxRDANCivoh5EgPiByw7o7ICM4MUQxDQor6IeSID4gaMO5bzsgIzgxRDINCivoh5MgPiB6w6BuZzsgIzgxRDMNCivoh5QgPiB4acOgbjsgIzgxRDQNCivoh5UgPiBiacSBbzsgIzgxRDUNCivoh5YgPiB4w6xuZzsgIzgxRDYNCivoh5cgPiBrdcSBbjsgIzgxRDcNCivoh5ggPiBsw6A7ICM4MUQ4DQor6IeZID4gecSBbjsgIzgxRDkNCivoh5ogPiBsw7o7ICM4MURBDQor6IebID4gaMO5bzsgIzgxREINCivoh5wgPiB6xIFuZzsgIzgxREMNCivoh50gPiBsxa1vOyAjODFERA0KK+iHniA+IHHDujsgIzgxREUNCivoh58gPiB6w6BuZzsgIzgxREYNCivoh6AgPiBsdcOhbjsgIzgxRTANCivoh6EgPiBuw607ICM4MUUxDQor6IeiID4gesSBbmc7ICM4MUUyDQor6IejID4gY2jDqW47ICM4MUUzDQor6IekID4gcWnEgW47ICM4MUU0DQor6IelID4gd8OyOyAjODFFNQ0KK+iHpiA+IGd1w6BuZzsgIzgxRTYNCivoh6cgPiB6w6FuZzsgIzgxRTcNCivoh6ggPiBsw61uOyAjODFFOA0KK+iHqSA+IGd1w6BuZzsgIzgxRTkNCivoh6ogPiB6w6w7ICM4MUVBDQor6IerID4gamnEg287ICM4MUVCDQor6IesID4gbmnDqDsgIzgxRUMNCivoh60gPiBjaMOydTsgIzgxRUQNCivoh64gPiBqw6w7ICM4MUVFDQor6IevID4gZ8SBbzsgIzgxRUYNCivoh7AgPiBjaMOydTsgIzgxRjANCivoh7EgPiBtacOhbjsgIzgxRjENCivoh7IgPiBuacOoOyAjODFGMg0KK+iHsyA+IHpow6w7ICM4MUYzDQor6Ie0ID4gemjDrDsgIzgxRjQNCivoh7UgPiBnw6k7ICM4MUY1DQor6Ie2ID4gamnDoG47ICM4MUY2DQor6Ie3ID4gZGnDqTsgIzgxRjcNCivoh7ggPiB6aMOsOyAjODFGOA0KK+iHuSA+IHjEq3U7ICM4MUY5DQor6Ie6ID4gdMOhaTsgIzgxRkENCivoh7sgPiB6aMSTbjsgIzgxRkINCivoh7wgPiBqw6x1OyAjODFGQw0KK+iHvSA+IHhpw6BuOyAjODFGRA0KK+iHviA+IHnDujsgIzgxRkUNCivoh78gPiBjaMSBOyAjODFGRg0KK+iIgCA+IHnEg287ICM4MjAwDQor6IiBID4gecO6OyAjODIwMQ0KK+iIgiA+IGNoxY1uZzsgIzgyMDINCivoiIMgPiB4w6w7ICM4MjAzDQor6IiEID4geMOsOyAjODIwNA0KK+iIhSA+IGrDrHU7ICM4MjA1DQor6IiGID4gecO6OyAjODIwNg0KK+iIhyA+IHnFrTsgIzgyMDcNCivoiIggPiB4xKtuZzsgIzgyMDgNCivoiIkgPiBqxa07ICM4MjA5DQor6IiKID4gasOsdTsgIzgyMEENCivoiIsgPiB4w6xuOyAjODIwQg0KK+iIjCA+IHNow6k7ICM4MjBDDQor6IiNID4gc2jDqDsgIzgyMEQNCivoiI8gPiBqxK11OyAjODIwRg0KK+iIkCA+IHNow6w7ICM4MjEwDQor6IiRID4gdMSBbjsgIzgyMTENCivoiJIgPiBzaMWrOyAjODIxMg0KK+iIkyA+IHNow6w7ICM4MjEzDQor6IiUID4gdGnEg247ICM4MjE0DQor6IiVID4gZMOgbjsgIzgyMTUNCivoiJYgPiBww7k7ICM4MjE2DQor6IiXID4gcMO5OyAjODIxNw0KK+iImCA+IGd1xINuOyAjODIxOA0KK+iImSA+IGh1w6A7ICM4MjE5DQor6IiaID4gdMSBbjsgIzgyMUENCivoiJsgPiBjaHXEg247ICM4MjFCDQor6IicID4gc2jDuW47ICM4MjFDDQor6IidID4geGnDoTsgIzgyMUQNCivoiJ4gPiB3xa07ICM4MjFFDQor6IifID4gemjFjXU7ICM4MjFGDQor6IigID4gZMSBbzsgIzgyMjANCivoiKEgPiBnxIFuZzsgIzgyMjENCivoiKIgPiBzaMSBbjsgIzgyMjINCivoiKMgPiB5xK07ICM4MjIzDQor6IilID4gcMSBOyAjODIyNQ0KK+iIpiA+IHTDoGk7ICM4MjI2DQor6IinID4gZsOhbjsgIzgyMjcNCivoiKggPiBixINuOyAjODIyOA0KK+iIqSA+IGNodcOhbjsgIzgyMjkNCivoiKogPiBow6FuZzsgIzgyMkENCivoiKsgPiBmxINuZzsgIzgyMkINCivoiKwgPiBixIFuOyAjODIyQw0KK+iIrSA+IHF1w6g7ICM4MjJEDQor6IivID4gemjFjW5nOyAjODIyRg0KK+iIsCA+IGppw6BuOyAjODIzMA0KK+iIsSA+IGPEgW5nOyAjODIzMQ0KK+iIsiA+IGzDrW5nOyAjODIzMg0KK+iIsyA+IHpow7o7ICM4MjMzDQor6Ii0ID4gesOpOyAjODIzNA0KK+iItSA+IGTDuW87ICM4MjM1DQor6Ii2ID4gYsOzOyAjODIzNg0KK+iItyA+IHhpw6FuOyAjODIzNw0KK+iIuCA+IGfElTsgIzgyMzgNCivoiLkgPiBjaHXDoW47ICM4MjM5DQor6Ii6ID4gamnDoTsgIzgyM0ENCivoiLsgPiBsxa07ICM4MjNCDQor6Ii8ID4gaMOzbmc7ICM4MjNDDQor6Ii9ID4gcMOhbmc7ICM4MjNEDQor6Ii+ID4geMSrOyAjODIzRQ0KK+iJgCA+IGbDujsgIzgyNDANCivoiYEgPiB6w6BvOyAjODI0MQ0KK+iJgiA+IGbDqW5nOyAjODI0Mg0KK+iJgyA+IGzDrTsgIzgyNDMNCivoiYQgPiBzaMSBbzsgIzgyNDQNCivoiYUgPiB5w7o7ICM4MjQ1DQor6ImGID4gbMOhbmc7ICM4MjQ2DQor6ImHID4gdMStbmc7ICM4MjQ3DQor6ImJID4gd8SVaTsgIzgyNDkNCivoiYogPiBiw7M7ICM4MjRBDQor6ImLID4gbcSVbmc7ICM4MjRCDQor6ImMID4gbmnDoG47ICM4MjRDDQor6ImNID4gasWrOyAjODI0RA0KK+iJjiA+IGh1w6FuZzsgIzgyNEUNCivoiY8gPiBzaMWPdTsgIzgyNEYNCivoiZAgPiB6xY1uZzsgIzgyNTANCivoiZEgPiBiacOgbjsgIzgyNTENCivoiZIgPiBtw6BvOyAjODI1Mg0KK+iJkyA+IGRpw6k7ICM4MjUzDQor6ImVID4gYsOgbmc7ICM4MjU1DQor6ImWID4gY2jEgTsgIzgyNTYNCivoiZcgPiB5w6w7ICM4MjU3DQor6ImYID4gc8SBbzsgIzgyNTgNCivoiZkgPiBjxIFuZzsgIzgyNTkNCivoiZogPiBjw6FvOyAjODI1QQ0KK+iJmyA+IGzDs3U7ICM4MjVCDQor6ImcID4gZMOgaTsgIzgyNUMNCivoiZ4gPiB5w6BvOyAjODI1RQ0KK+iJnyA+IHTDs25nOyAjODI1Rg0KK+iJoSA+IGTEgW5nOyAjODI2MQ0KK+iJoiA+IHTDoW47ICM4MjYyDQor6ImjID4gbMWtOyAjODI2Mw0KK+iJpCA+IHnErTsgIzgyNjQNCivoiaUgPiBqacOoOyAjODI2NQ0KK+iJpiA+IGppw6BuOyAjODI2Ng0KK+iJpyA+IGjDuW87ICM4MjY3DQor6ImoID4gbcOpbmc7ICM4MjY4DQor6ImpID4gccOtOyAjODI2OQ0KK+iJqiA+IGzFrTsgIzgyNkENCivoiasgPiBsw7o7ICM4MjZCDQor6ImsID4gY2jDoW47ICM4MjZDDQor6ImtID4gc2h1xIFuZzsgIzgyNkQNCivoia4gPiBnw6huOyAjODI2RQ0KK+iJryA+IGxpw6FuZzsgIzgyNkYNCivoibAgPiBqacSBbjsgIzgyNzANCivoibEgPiBqacSBbjsgIzgyNzENCivoibIgPiBzw6g7ICM4MjcyDQor6ImzID4gecOgbjsgIzgyNzMNCivoibQgPiBmw7o7ICM4Mjc0DQor6Im1ID4gcMOtbmc7ICM4Mjc1DQor6Im2ID4gecOgbjsgIzgyNzYNCivoibcgPiB5w6BuOyAjODI3Nw0KK+iJuCA+IGPEg287ICM4Mjc4DQor6Im5ID4gY8SDbycgJ3rDrCcgJ3TDs3U7ICM4Mjc5DQor6Im6ID4gecOsOyAjODI3QQ0KK+iJuyA+IGzDqDsgIzgyN0INCivoibwgPiB0xKtuZzsgIzgyN0MNCivoib0gPiBxw611OyAjODI3RA0KK+iJviA+IMOgaTsgIzgyN0UNCivoib8gPiBuxINpOyAjODI3Rg0KK+iKgCA+IHRpw6FvOyAjODI4MA0KK+iKgSA+IGppxIFvOyAjODI4MQ0KK+iKgiA+IGppw6k7ICM4MjgyDQor6IqDID4gcMOpbmc7ICM4MjgzDQor6IqEID4gd8OhbjsgIzgyODQNCivoioUgPiB5w6w7ICM4Mjg1DQor6IqGID4gY2jEgWk7ICM4Mjg2DQor6IqHID4gbWnDoW47ICM4Mjg3DQor6IqIID4gbWnEkzsgIzgyODgNCivoiokgPiBnxIFuOyAjODI4OQ0KK+iKiiA+IHFpxIFuOyAjODI4QQ0KK+iKiyA+IHnDuTsgIzgyOEINCivoiowgPiB5w7k7ICM4MjhDDQor6IqNID4gc2jDuW87ICM4MjhEDQor6IqOID4gccSrb25nOyAjODI4RQ0KK+iKjyA+IHTFrTsgIzgyOEYNCivoipAgPiB4acOgOyAjODI5MA0KK+iKkSA+IHHErTsgIzgyOTENCivoipIgPiBtw6FuZzsgIzgyOTINCivoipMgPiB6xK07ICM4MjkzDQor6IqUID4gaMWtaTsgIzgyOTQNCivoipUgPiBzxatpOyAjODI5NQ0KK+iKliA+IHpow6w7ICM4Mjk2DQor6IqXID4geGnEgW5nOyAjODI5Nw0KK+iKmCA+IGLEqzsgIzgyOTgNCivoipkgPiBmw7o7ICM4Mjk5DQor6IqaID4gdMO6bjsgIzgyOUENCivoipsgPiB3xJVpOyAjODI5Qg0KK+iKnCA+IHfDujsgIzgyOUMNCivoip0gPiB6aMSrOyAjODI5RA0KK+iKniA+IHHErTsgIzgyOUUNCivoip8gPiBzaMSBbjsgIzgyOUYNCivoiqAgPiB3w6luOyAjODJBMA0KK+iKoSA+IHFpw6BuOyAjODJBMQ0KK+iKoiA+IHLDqW47ICM4MkEyDQor6IqjID4gZsWPdTsgIzgyQTMNCivoiqQgPiBrxY11OyAjODJBNA0KK+iKpSA+IGppw6g7ICM4MkE1DQor6IqmID4gbMO6OyAjODJBNg0KK+iKpyA+IHjDuTsgIzgyQTcNCivoiqggPiBqw607ICM4MkE4DQor6IqpID4gccOtbjsgIzgyQTkNCivoiqogPiBxw607ICM4MkFBDQor6IqrID4geXXDoW47ICM4MkFCDQor6IqsID4gZsSTbjsgIzgyQUMNCivoiq0gPiBixIE7ICM4MkFEDQor6IquID4gcsO5aTsgIzgyQUUNCivoiq8gPiB4xKtuOyAjODJBRg0KK+iKsCA+IGrDrDsgIzgyQjANCivoirEgPiBodcSBOyAjODJCMQ0KK+iKsiA+IGh1xIE7ICM4MkIyDQor6IqzID4gZsSBbmc7ICM4MkIzDQor6Iq0ID4gd8O5OyAjODJCNA0KK+iKtSA+IGp1w6k7ICM4MkI1DQor6Iq2ID4gZ8WNdTsgIzgyQjYNCivoircgPiB6aMStOyAjODJCNw0KK+iKuCA+IHnDum47ICM4MkI4DQor6Iq5ID4gccOtbjsgIzgyQjkNCivoirogPiDEg287ICM4MkJBDQor6Iq7ID4gY2jDujsgIzgyQkINCivoirwgPiBtw6BvOyAjODJCQw0KK+iKvSA+IHnDoTsgIzgyQkQNCivoir4gPiBmw6hpOyAjODJCRQ0KK+iKvyA+IHLDqG5nOyAjODJCRg0KK+iLgCA+IGjDoW5nOyAjODJDMA0KK+iLgSA+IGPFjW5nOyAjODJDMQ0KK+iLgiA+IHnDrW47ICM4MkMyDQor6IuDID4gecWPdTsgIzgyQzMNCivoi4QgPiBiacOgbjsgIzgyQzQNCivoi4UgPiB5w6w7ICM4MkM1DQor6IuHID4gd8SVaTsgIzgyQzcNCivoi4ggPiBsw6w7ICM4MkM4DQor6IuJID4gcMStOyAjODJDOQ0KK+iLiiA+IMOoOyAjODJDQQ0KK+iLiyA+IHhpw6BuOyAjODJDQg0KK+iLjCA+IGNow6FuZzsgIzgyQ0MNCivoi40gPiBjxIFuZzsgIzgyQ0QNCivoi44gPiBtw6luZzsgIzgyQ0UNCivoi48gPiBzxas7ICM4MkNGDQor6IuQID4gecOtOyAjODJEMA0KK+iLkSA+IHl1w6BuOyAjODJEMQ0KK+iLkiA+IHLEg247ICM4MkQyDQor6IuTID4gbMOtbmc7ICM4MkQzDQor6IuUID4gdMOhaTsgIzgyRDQNCivoi5UgPiB0acOhbzsgIzgyRDUNCivoi5YgPiBkxK07ICM4MkQ2DQor6IuXID4gbWnDoW87ICM4MkQ3DQor6IuYID4gccStb25nOyAjODJEOA0KK+iLmSA+IGzDrDsgIzgyRDkNCivoi5ogPiB5w7JuZzsgIzgyREENCivoi5sgPiBrxJM7ICM4MkRCDQor6IucID4gbcO5OyAjODJEQw0KK+iLnSA+IHDDqGk7ICM4MkREDQor6IueID4gYsSBbzsgIzgyREUNCivoi58gPiBnxY91OyAjODJERg0KK+iLoCA+IG3DrW47ICM4MkUwDQor6IuhID4gecStOyAjODJFMQ0KK+iLoiA+IHnErTsgIzgyRTINCivoi6MgPiBqw7k7ICM4MkUzDQor6IukID4gcMStOyAjODJFNA0KK+iLpSA+IHLDuW87ICM4MkU1DQor6IumID4ga8WtOyAjODJFNg0KK+iLpyA+IHpow7k7ICM4MkU3DQor6IuoID4gbsStOyAjODJFOA0KK+iLqSA+IGLDszsgIzgyRTkNCivoi6ogPiBixK1uZzsgIzgyRUENCivoi6sgPiBzaMSBbjsgIzgyRUINCivoi6wgPiBxw611OyAjODJFQw0KK+iLrSA+IHnEg287ICM4MkVEDQor6IuuID4geGnEgW47ICM4MkVFDQor6IuvID4gYsSVbjsgIzgyRUYNCivoi7AgPiBow7NuZzsgIzgyRjANCivoi7EgPiB5xKtuZzsgIzgyRjENCivoi7IgPiB6aMSDOyAjODJGMg0KK+iLsyA+IGTFjW5nOyAjODJGMw0KK+iLtCA+IGrFqzsgIzgyRjQNCivoi7UgPiBkacOpOyAjODJGNQ0KK+iLtiA+IG5pw6k7ICM4MkY2DQor6Iu3ID4gZ8SBbjsgIzgyRjcNCivoi7ggPiBoxas7ICM4MkY4DQor6Iu5ID4gcMOtbmc7ICM4MkY5DQor6Iu6ID4gbcOpaTsgIzgyRkENCivoi7sgPiBmw7o7ICM4MkZCDQor6Iu8ID4gc2jEk25nOyAjODJGQw0KK+iLvSA+IGfFqzsgIzgyRkQNCivoi74gPiBiw6w7ICM4MkZFDQor6Iu/ID4gd8OoaTsgIzgyRkYNCivojIAgPiBmw7o7ICM4MzAwDQor6IyBID4gemjDum87ICM4MzAxDQor6IyCID4gbcOgbzsgIzgzMDINCivojIMgPiBmw6BuOyAjODMwMw0KK+iMhCA+IHFpw6k7ICM4MzA0DQor6IyFID4gbcOhbzsgIzgzMDUNCivojIYgPiBtxINvOyAjODMwNg0KK+iMhyA+IGLDoTsgIzgzMDcNCivojIggPiB6xK07ICM4MzA4DQor6IyJID4gbcOyOyAjODMwOQ0KK+iMiiA+IHrEqzsgIzgzMEENCivojIsgPiBkxK07ICM4MzBCDQor6IyMID4gY2jDrTsgIzgzMEMNCivojI0gPiBqw6w7ICM4MzBEDQor6IyOID4gasSrbmc7ICM4MzBFDQor6IyPID4gbMOzbmc7ICM4MzBGDQor6IyRID4gbmnEg287ICM4MzExDQor6IyTID4geHXDqTsgIzgzMTMNCivojJQgPiB5w61uZzsgIzgzMTQNCivojJUgPiBxw61vbmc7ICM4MzE1DQor6IyWID4gZ8OpOyAjODMxNg0KK+iMlyA+IG3ErW5nOyAjODMxNw0KK+iMmCA+IGzDrDsgIzgzMTgNCivojJkgPiByw7NuZzsgIzgzMTkNCivojJogPiB5w6xuOyAjODMxQQ0KK+iMmyA+IGfDqG47ICM4MzFCDQor6IycID4gcWnDoG47ICM4MzFDDQor6IydID4gY2jEg2k7ICM4MzFEDQor6IyeID4gY2jDqW47ICM4MzFFDQor6IyfID4gecO5OyAjODMxRg0KK+iMoCA+IHjEq3U7ICM4MzIwDQor6IyhID4gesOsOyAjODMyMQ0KK+iMoiA+IGxpw6g7ICM4MzIyDQor6IyjID4gd8O6OyAjODMyMw0KK+iMpCA+IGrDrDsgIzgzMjQNCivojKUgPiBrxatpOyAjODMyNQ0KK+iMpiA+IGPDqDsgIzgzMjYNCivojKcgPiBjaMOzbmc7ICM4MzI3DQor6IyoID4gY8OtOyAjODMyOA0KK+iMqSA+IGfFj3U7ICM4MzI5DQor6IyqID4gZ3XEgW5nOyAjODMyQQ0KK+iMqyA+IG3DoW5nOyAjODMyQg0KK+iMrCA+IGNow607ICM4MzJDDQor6IytID4gamnEgW87ICM4MzJEDQor6IyuID4gamnEgW87ICM4MzJFDQor6IyvID4gZsO6OyAjODMyRg0KK+iMsCA+IHnDujsgIzgzMzANCivojLEgPiB6aMWrOyAjODMzMQ0KK+iMsiA+IHrEqzsgIzgzMzINCivojLMgPiBqacSBbmc7ICM4MzMzDQor6Iy0ID4gaMO6aTsgIzgzMzQNCivojLUgPiB5xKtuOyAjODMzNQ0KK+iMtiA+IGNow6E7ICM4MzM2DQor6Iy3ID4gZsOhOyAjODMzNw0KK+iMuCA+IHLDs25nOyAjODMzOA0KK+iMuSA+IHLDujsgIzgzMzkNCivojLogPiBjaMWNbmc7ICM4MzNBDQor6Iy7ID4gbcSDbmc7ICM4MzNCDQor6Iy8ID4gdMOzbmc7ICM4MzNDDQor6Iy9ID4gemjDsm5nOyAjODMzRA0KK+iMvyA+IHpow7o7ICM4MzNGDQor6I2AID4geMO6bjsgIzgzNDANCivojYEgPiBodcOhbjsgIzgzNDENCivojYIgPiBrdcSBOyAjODM0Mg0KK+iNgyA+IHF1w6FuOyAjODM0Mw0KK+iNhCA+IGfEgWk7ICM4MzQ0DQor6I2FID4gZMSBOyAjODM0NQ0KK+iNhiA+IGrEq25nOyAjODM0Ng0KK+iNhyA+IHjDrG5nOyAjODM0Nw0KK+iNiCA+IHF1w6BuOyAjODM0OA0KK+iNiSA+IGPEg287ICM4MzQ5DQor6I2KID4gasSrbmc7ICM4MzRBDQor6I2LID4gw6lyOyAjODM0Qg0KK+iNjCA+IMOgbjsgIzgzNEMNCivojY0gPiBzaMWNdTsgIzgzNEQNCivojY4gPiBjaMOtOyAjODM0RQ0KK+iNjyA+IHLElW47ICM4MzRGDQor6I2QID4gamnDoG47ICM4MzUwDQor6I2RID4gdMOtOyAjODM1MQ0KK+iNkiA+IGh1xIFuZzsgIzgzNTINCivojZMgPiBww61uZzsgIzgzNTMNCivojZQgPiBsw6w7ICM4MzU0DQor6I2VID4gasSrbjsgIzgzNTUNCivojZYgPiBsxINvOyAjODM1Ng0KK+iNlyA+IHNow7k7ICM4MzU3DQor6I2YID4gemh1xIFuZzsgIzgzNTgNCivojZkgPiBkw6E7ICM4MzU5DQor6I2aID4gamnDoTsgIzgzNUENCivojZsgPiByw6FvOyAjODM1Qg0KK+iNnCA+IGLDrDsgIzgzNUMNCivojZ0gPiB6w6k7ICM4MzVEDQor6I2eID4gcWnDoW87ICM4MzVFDQor6I2fID4gaMO5aTsgIzgzNUYNCivojaAgPiBxw607ICM4MzYwDQor6I2hID4gZMOgbmc7ICM4MzYxDQor6I2jID4gcsOzbmc7ICM4MzYzDQor6I2kID4gaMWrbjsgIzgzNjQNCivojaUgPiB5w61uZzsgIzgzNjUNCivojaYgPiBsw7lvOyAjODM2Ng0KK+iNpyA+IHnDrW5nOyAjODM2Nw0KK+iNqCA+IHjDum47ICM4MzY4DQor6I2pID4gasOsbjsgIzgzNjkNCivojaogPiBzxatuOyAjODM2QQ0KK+iNqyA+IHnDrG47ICM4MzZCDQor6I2sID4gbcSDaTsgIzgzNkMNCivoja0gPiBow7NuZzsgIzgzNkQNCivoja4gPiB6aMOydTsgIzgzNkUNCivoja8gPiB5w6BvOyAjODM2Rg0KK+iNsCA+IGTDuTsgIzgzNzANCivojbEgPiB3xJVpOyAjODM3MQ0KK+iNsiA+IGNow7k7ICM4MzcyDQor6I2zID4gZMOydTsgIzgzNzMNCivojbQgPiBmxas7ICM4Mzc0DQor6I21ID4gcsSVbjsgIzgzNzUNCivojbYgPiB5w61uOyAjODM3Ng0KK+iNtyA+IGjDqTsgIzgzNzcNCivojbggPiBiw607ICM4Mzc4DQor6I25ID4gYsO5OyAjODM3OQ0KK+iNuiA+IHnDum47ICM4MzdBDQor6I27ID4gZMOtOyAjODM3Qg0KK+iNvCA+IHTDujsgIzgzN0MNCivojb0gPiBzxatpOyAjODM3RA0KK+iNviA+IHPFq2k7ICM4MzdFDQor6I2/ID4gY2jDqW5nOyAjODM3Rg0KK+iOgCA+IGNow6luOyAjODM4MA0KK+iOgSA+IHfDujsgIzgzODENCivojoIgPiBiacOpOyAjODM4Mg0KK+iOgyA+IHjEqzsgIzgzODMNCivojoQgPiBnxJVuZzsgIzgzODQNCivojoUgPiBsw6w7ICM4Mzg1DQor6I6GID4gZsWtOyAjODM4Ng0KK+iOhyA+IHpow7k7ICM4Mzg3DQor6I6IID4gbcOyOyAjODM4OA0KK+iOiSA+IGzDrDsgIzgzODkNCivojoogPiB6aHXEgW5nOyAjODM4QQ0KK+iOiyA+IGrDrTsgIzgzOEINCivojowgPiBkw7pvOyAjODM4Qw0KK+iOjSA+IHHDrXU7ICM4MzhEDQor6I6OID4gc2jEgTsgIzgzOEUNCivojo8gPiBzxatvOyAjODM4Rg0KK+iOkCA+IGNow6luOyAjODM5MA0KK+iOkSA+IGbEk25nOyAjODM5MQ0KK+iOkiA+IGrFrTsgIzgzOTINCivojpMgPiBtw6lpOyAjODM5Mw0KK+iOlCA+IG3DqW5nOyAjODM5NA0KK+iOlSA+IHjDrG5nOyAjODM5NQ0KK+iOliA+IGrEq25nOyAjODM5Ng0KK+iOlyA+IGNoxJM7ICM4Mzk3DQor6I6YID4geMSrbjsgIzgzOTgNCivojpkgPiBqxatuOyAjODM5OQ0KK+iOmiA+IHnDoW47ICM4MzlBDQor6I6bID4gdMOtbmc7ICM4MzlCDQor6I6cID4gZGnDoG87ICM4MzlDDQor6I6dID4gY8O5bzsgIzgzOUQNCivojp4gPiB3xINuOyAjODM5RQ0KK+iOnyA+IGjDoG47ICM4MzlGDQor6I6gID4gecWPdTsgIzgzQTANCivojqEgPiBjw7lvOyAjODNBMQ0KK+iOoiA+IGppw6E7ICM4M0EyDQor6I6jID4gd8Ohbmc7ICM4M0EzDQor6I6kID4gecOzdTsgIzgzQTQNCivojqUgPiBuxK11OyAjODNBNQ0KK+iOpiA+IHNoxIFvOyAjODNBNg0KK+iOpyA+IHhpw6BuOyAjODNBNw0KK+iOqCA+IGzDoW5nOyAjODNBOA0KK+iOqSA+IGbDujsgIzgzQTkNCivojqogPiDDqTsgIzgzQUENCivojqsgPiBtw7I7ICM4M0FCDQor6I6sID4gd8OobjsgIzgzQUMNCivojq0gPiBqacOpOyAjODNBRA0KK+iOriA+IG7DoW47ICM4M0FFDQor6I6vID4gbcO5OyAjODNBRg0KK+iOsCA+IGvEg247ICM4M0IwDQor6I6xID4gbMOhaTsgIzgzQjENCivojrIgPiBsacOhbjsgIzgzQjINCivojrMgPiBzaMOtOyAjODNCMw0KK+iOtCA+IHfFjTsgIzgzQjQNCivojrYgPiBsacSDbjsgIzgzQjYNCivojrcgPiBow7lvOyAjODNCNw0KK+iOuCA+IHnDs3U7ICM4M0I4DQor6I65ID4gecOtbmc7ICM4M0I5DQor6I66ID4gecSrbmc7ICM4M0JBDQor6I68ID4gY2jDum47ICM4M0JDDQor6I69ID4gbcSDbmc7ICM4M0JEDQor6I6+ID4gbcSDbmc7ICM4M0JFDQor6I6/ID4gY8OsOyAjODNCRg0KK+iPgCA+IHfEg247ICM4M0MwDQor6I+BID4gasSrbmc7ICM4M0MxDQor6I+CID4gZMSrOyAjODNDMg0KK+iPgyA+IHHDujsgIzgzQzMNCivoj4QgPiBkxY1uZzsgIzgzQzQNCivoj4UgPiBqacSBbjsgIzgzQzUNCivoj4YgPiB6xY11OyAjODNDNg0KK+iPhyA+IGfFqzsgIzgzQzcNCivoj4ggPiBsxIE7ICM4M0M4DQor6I+JID4gbMO5OyAjODNDOQ0KK+iPiiA+IGrDujsgIzgzQ0ENCivoj4sgPiB3w6hpOyAjODNDQg0KK+iPjCA+IGrDuW47ICM4M0NDDQor6I+NID4gbmnDqDsgIzgzQ0QNCivoj44gPiBrxatuOyAjODNDRQ0KK+iPjyA+IGjDqTsgIzgzQ0YNCivoj5AgPiBww7o7ICM4M0QwDQor6I+RID4gesSrOyAjODNEMQ0KK+iPkiA+IGfEg287ICM4M0QyDQor6I+TID4gZ8WtbzsgIzgzRDMNCivoj5QgPiBmw7o7ICM4M0Q0DQor6I+VID4gbMO6bjsgIzgzRDUNCivoj5YgPiBjaMSBbmc7ICM4M0Q2DQor6I+XID4gY2jDs3U7ICM4M0Q3DQor6I+YID4gc8WNbmc7ICM4M0Q4DQor6I+ZID4gY2jDumk7ICM4M0Q5DQor6I+aID4gemjDoG47ICM4M0RBDQor6I+bID4gbcOpbjsgIzgzREINCivoj5wgPiBjw6BpOyAjODNEQw0KK+iPnSA+IGLDoTsgIzgzREQNCivoj54gPiBsw607ICM4M0RFDQor6I+fID4gdMO5OyAjODNERg0KK+iPoCA+IGLFjTsgIzgzRTANCivoj6EgPiBow6BuOyAjODNFMQ0KK+iPoiA+IGLDoG87ICM4M0UyDQor6I+jID4gccOsbjsgIzgzRTMNCivoj6QgPiBqdcSDbjsgIzgzRTQNCivoj6UgPiB4xKs7ICM4M0U1DQor6I+mID4gccOtbjsgIzgzRTYNCivoj6cgPiBkxK07ICM4M0U3DQor6I+oID4gamnEkzsgIzgzRTgNCivoj6kgPiBww7o7ICM4M0U5DQor6I+qID4gZMOgbmc7ICM4M0VBDQor6I+rID4gasStbjsgIzgzRUINCivoj6wgPiB6aMSDbzsgIzgzRUMNCivoj60gPiB0w6FpOyAjODNFRA0KK+iPriA+IGfEk25nOyAjODNFRQ0KK+iPryA+IGh1w6E7ICM4M0VGDQor6I+wID4gZ8WrOyAjODNGMA0KK+iPsSA+IGzDrW5nOyAjODNGMQ0KK+iPsiA+IGbEk2k7ICM4M0YyDQor6I+zID4gasSrbjsgIzgzRjMNCivoj7QgPiDEgW47ICM4M0Y0DQor6I+1ID4gd8SDbmc7ICM4M0Y1DQor6I+2ID4gYsSVbmc7ICM4M0Y2DQor6I+3ID4gemjFj3U7ICM4M0Y3DQor6I+4ID4gecSBbjsgIzgzRjgNCivoj7kgPiBqxas7ICM4M0Y5DQor6I+6ID4gamnEgW47ICM4M0ZBDQor6I+7ID4gbMStbjsgIzgzRkINCivoj7wgPiB0xINuOyAjODNGQw0KK+iPvSA+IHNow7o7ICM4M0ZEDQor6I++ID4gdGnDoW47ICM4M0ZFDQor6I+/ID4gZMOgbzsgIzgzRkYNCivokIAgPiBoxa07ICM4NDAwDQor6JCBID4gccOtOyAjODQwMQ0KK+iQgiA+IGjDqTsgIzg0MDINCivokIMgPiBjw7lpOyAjODQwMw0KK+iQhCA+IHTDoW87ICM4NDA0DQor6JCFID4gY2jFq247ICM4NDA1DQor6JCGID4gYsSTaTsgIzg0MDYNCivokIcgPiBjaMOhbmc7ICM4NDA3DQor6JCIID4gaHXDoW47ICM4NDA4DQor6JCJID4gZsOpaTsgIzg0MDkNCivokIogPiBsw6FpOyAjODQwQQ0KK+iQiyA+IHHEqzsgIzg0MEINCivokIwgPiBtw6luZzsgIzg0MEMNCivokI0gPiBww61uZzsgIzg0MEQNCivokI4gPiB3xJNpOyAjODQwRQ0KK+iQjyA+IGTDoG47ICM4NDBGDQor6JCQID4gc2jDoDsgIzg0MTANCivokJEgPiBodcOhbjsgIzg0MTENCivokJIgPiB5xINuOyAjODQxMg0KK+iQkyA+IHnDrTsgIzg0MTMNCivokJQgPiB0acOhbzsgIzg0MTQNCivokJUgPiBxw607ICM4NDE1DQor6JCWID4gd8SDbjsgIzg0MTYNCivokJcgPiBjw6g7ICM4NDE3DQor6JCYID4gbsOgaTsgIzg0MTgNCivokJogPiB0w7lvOyAjODQxQQ0KK+iQmyA+IGrEq3U7ICM4NDFCDQor6JCcID4gdGnEkzsgIzg0MUMNCivokJ0gPiBsw7pvOyAjODQxRA0KK+iQoCA+IG3DqW5nOyAjODQyMA0KK+iQpCA+IHnDrW5nOyAjODQyNA0KK+iQpSA+IHnDrW5nOyAjODQyNQ0KK+iQpiA+IHnDrW5nOyAjODQyNg0KK+iQpyA+IHhpxIFvOyAjODQyNw0KK+iQqCA+IHPDoDsgIzg0MjgNCivokKkgPiBxxKt1OyAjODQyOQ0KK+iQqiA+IGvEkzsgIzg0MkENCivokKsgPiB4acOgbmc7ICM4NDJCDQor6JCsID4gd8OgbjsgIzg0MkMNCivokK0gPiB5xa07ICM4NDJEDQor6JCuID4gecO5OyAjODQyRQ0KK+iQryA+IGbDuTsgIzg0MkYNCivokLAgPiBsacOgbjsgIzg0MzANCivokLEgPiB4dcSBbjsgIzg0MzENCivokLIgPiB5dcOhbjsgIzg0MzINCivokLMgPiBuw6FuOyAjODQzMw0KK+iQtCA+IHrDqTsgIzg0MzQNCivokLUgPiB3xY07ICM4NDM1DQor6JC2ID4gY2jFrW47ICM4NDM2DQor6JC3ID4geGnEgW87ICM4NDM3DQor6JC4ID4gecO6OyAjODQzOA0KK+iQuSA+IHBpxIFuOyAjODQzOQ0KK+iQuiA+IG3DoG87ICM4NDNBDQor6JC7ID4gxIFuOyAjODQzQg0KK+iQvCA+IMOoOyAjODQzQw0KK+iQvSA+IGzDuW87ICM4NDNEDQor6JC+ID4gecOtbmc7ICM4NDNFDQor6JC/ID4gaMO6bzsgIzg0M0YNCivokYAgPiBndcSBOyAjODQ0MA0KK+iRgSA+IGppxIFuZzsgIzg0NDENCivokYIgPiBtacSDbjsgIzg0NDINCivokYMgPiB6w7pvOyAjODQ0Mw0KK+iRhCA+IHrDuW87ICM4NDQ0DQor6JGFID4gasWrOyAjODQ0NQ0KK+iRhiA+IGLEg287ICM4NDQ2DQor6JGHID4gcsOzdTsgIzg0NDcNCivokYggPiB4xK07ICM4NDQ4DQor6JGJID4geGnDqTsgIzg0NDkNCivokYogPiDEgW47ICM4NDRBDQor6JGLID4gccO6OyAjODQ0Qg0KK+iRjCA+IGppxIFuOyAjODQ0Qw0KK+iRjSA+IGbDujsgIzg0NEQNCivokY4gPiBsx5w7ICM4NDRFDQor6JGPID4gasSrbmc7ICM4NDRGDQor6JGQID4gcMOpbjsgIzg0NTANCivokZEgPiBmxJNuZzsgIzg0NTENCivokZIgPiBow7NuZzsgIzg0NTINCivokZMgPiBow7NuZzsgIzg0NTMNCivokZQgPiBow7N1OyAjODQ1NA0KK+iRlSA+IHnDoW47ICM4NDU1DQor6JGWID4gdMO6OyAjODQ1Ng0KK+iRlyA+IHpow7k7ICM4NDU3DQor6JGYID4gesSrOyAjODQ1OA0KK+iRmSA+IHhpxIFuZzsgIzg0NTkNCivokZogPiBzaMOobjsgIzg0NUENCivokZsgPiBnxJU7ICM4NDVCDQor6JGcID4gamnDqTsgIzg0NUMNCivokZ0gPiBqw6xuZzsgIzg0NUQNCivokZ4gPiBtxK07ICM4NDVFDQor6JGfID4gaHXDoW5nOyAjODQ1Rg0KK+iRoCA+IHNoxJNuOyAjODQ2MA0KK+iRoSA+IHDDujsgIzg0NjENCivokaIgPiBnw6BpOyAjODQ2Mg0KK+iRoyA+IGTFj25nOyAjODQ2Mw0KK+iRpCA+IHpow7J1OyAjODQ2NA0KK+iRpSA+IHFpw6FuOyAjODQ2NQ0KK+iRpiA+IHfElWk7ICM4NDY2DQor6JGnID4gYsOzOyAjODQ2Nw0KK+iRqCA+IHfEk2k7ICM4NDY4DQor6JGpID4gcMSBOyAjODQ2OQ0KK+iRqiA+IGrDrDsgIzg0NkENCivokasgPiBow7o7ICM4NDZCDQor6JGsID4gesOgbmc7ICM4NDZDDQor6JGtID4gamnEgTsgIzg0NkQNCivoka4gPiBkdcOgbjsgIzg0NkUNCivoka8gPiB5w6BvOyAjODQ2Rg0KK+iRsCA+IGrDuW47ICM4NDcwDQor6JGxID4gY8WNbmc7ICM4NDcxDQor6JGyID4gcXXDoW47ICM4NDcyDQor6JGzID4gd8STaTsgIzg0NzMNCivokbQgPiB4acOhbjsgIzg0NzQNCivokbUgPiBrw7ppOyAjODQ3NQ0KK+iRtiA+IHTDrW5nOyAjODQ3Ng0KK+iRtyA+IGjFq247ICM4NDc3DQor6JG4ID4geMStOyAjODQ3OA0KK+iRuSA+IHNoxKs7ICM4NDc5DQor6JG6ID4gccOsOyAjODQ3QQ0KK+iRuyA+IGzDoW47ICM4NDdCDQor6JG8ID4gesWNbmc7ICM4NDdDDQor6JG9ID4gecSBbzsgIzg0N0QNCivokb4gPiB5dcSBbjsgIzg0N0UNCivokb8gPiBtw6lpOyAjODQ3Rg0KK+iSgCA+IHnFq247ICM4NDgwDQor6JKBID4gc2jDuTsgIzg0ODENCivokoIgPiBkw6w7ICM4NDgyDQor6JKDID4gemh1w6BuOyAjODQ4Mw0KK+iShCA+IGd1xIFuOyAjODQ4NA0KK+iShiA+IHh1xJM7ICM4NDg2DQor6JKHID4gY2jEg247ICM4NDg3DQor6JKIID4ga8SDaTsgIzg0ODgNCivokokgPiBrw7lpOyAjODQ4OQ0KK+iSiyA+IGppxINuZzsgIzg0OEINCivokowgPiBsw7N1OyAjODQ4Qw0KK+iSjSA+IHfDqWk7ICM4NDhEDQor6JKOID4gcMOgaTsgIzg0OEUNCivokpAgPiBzxY11OyAjODQ5MA0KK+iSkSA+IHnEq247ICM4NDkxDQor6JKSID4gc2jEqzsgIzg0OTINCivokpMgPiBjaMO6bjsgIzg0OTMNCivokpQgPiBzaMOtOyAjODQ5NA0KK+iSlSA+IHnFq247ICM4NDk1DQor6JKWID4gemjEk247ICM4NDk2DQor6JKXID4gbMOgbmc7ICM4NDk3DQor6JKYID4gbsO6OyAjODQ5OA0KK+iSmSA+IG3DqW5nOyAjODQ5OQ0KK+iSmiA+IGjDqTsgIzg0OUENCivokpsgPiBxdcSTOyAjODQ5Qg0KK+iSnCA+IHN1w6BuOyAjODQ5Qw0KK+iSnSA+IHl1w6FuOyAjODQ5RA0KK+iSniA+IGzDrDsgIzg0OUUNCivokp8gPiBqxa07ICM4NDlGDQor6JKgID4geMOtOyAjODRBMA0KK+iSoSA+IHDDoW5nOyAjODRBMQ0KK+iSoiA+IGNow7o7ICM4NEEyDQor6JKjID4geMO6OyAjODRBMw0KK+iSpCA+IHTDujsgIzg0QTQNCivokqUgPiBsw611OyAjODRBNQ0KK+iSpiA+IHfDsjsgIzg0QTYNCivokqcgPiB6aMSTbjsgIzg0QTcNCivokqggPiBxacOgbjsgIzg0QTgNCivokqkgPiB6xas7ICM4NEE5DQor6JKqID4gcMOyOyAjODRBQQ0KK+iSqyA+IGPFq287ICM4NEFCDQor6JKsID4geXXEgW47ICM4NEFDDQor6JKtID4gY2jDujsgIzg0QUQNCivokq4gPiB5w7k7ICM4NEFFDQor6JKvID4ga3XEg2k7ICM4NEFGDQor6JKwID4gcMOhbjsgIzg0QjANCivokrEgPiBww7o7ICM4NEIxDQor6JKyID4gcMO6OyAjODRCMg0KK+iSsyA+IG7DoDsgIzg0QjMNCivokrQgPiBzaMO5bzsgIzg0QjQNCivokrUgPiB4xKs7ICM4NEI1DQor6JK2ID4gZsOpbjsgIzg0QjYNCivokrcgPiB5w7puOyAjODRCNw0KK+iSuCA+IHpoxJNuZzsgIzg0QjgNCivokrkgPiBqacSBbjsgIzg0QjkNCivokrogPiBqw607ICM4NEJBDQor6JK7ID4gcsO5bzsgIzg0QkINCivokrwgPiBjxIFuZzsgIzg0QkMNCivokr0gPiDEk247ICM4NEJEDQor6JK+ID4gbcOtOyAjODRCRQ0KK+iSvyA+IGjEgW87ICM4NEJGDQor6JOAID4gc8WrbjsgIzg0QzANCivok4EgPiB6aMSTbjsgIzg0QzENCivok4IgPiBtw61uZzsgIzg0QzINCivok4MgPiBzb3U7ICM4NEMzDQor6JOEID4geMO5OyAjODRDNA0KK+iThSA+IGzDrXU7ICM4NEM1DQor6JOGID4geMOtOyAjODRDNg0KK+iThyA+IGfFrTsgIzg0QzcNCivok4ggPiBsw6FuZzsgIzg0QzgNCivok4kgPiByw7NuZzsgIzg0QzkNCivok4ogPiB3xJVuZzsgIzg0Q0ENCivok4sgPiBnw6BpOyAjODRDQg0KK+iTjCA+IGPDuW87ICM4NENDDQor6JONID4gc2jEqzsgIzg0Q0QNCivok44gPiB0w6FuZzsgIzg0Q0UNCivok48gPiBsxa1vOyAjODRDRg0KK+iTkCA+IHLDuTsgIzg0RDANCivok5EgPiBzxatvOyAjODREMQ0KK+iTkiA+IHhpxIFuOyAjODREMg0KK+iTkyA+IGLDqGk7ICM4NEQzDQor6JOUID4gecSDbzsgIzg0RDQNCivok5UgPiBnw7lpOyAjODRENQ0KK+iTliA+IGLEqzsgIzg0RDYNCivok5cgPiB6xY9uZzsgIzg0RDcNCivok5ggPiBnxa1uOyAjODREOA0KK+iTmiA+IHjEq3U7ICM4NERBDQor6JObID4gY8OoOyAjODREQg0KK+iTnSA+IGzDoW47ICM4NEREDQor6JOfID4gasOsOyAjODRERg0KK+iToCA+IGzDrTsgIzg0RTANCivok6EgPiBjxIFuOyAjODRFMQ0KK+iToiA+IGzDoW5nOyAjODRFMg0KK+iToyA+IHnDuTsgIzg0RTMNCivok6UgPiB5w6xuZzsgIzg0RTUNCivok6YgPiBtw7I7ICM4NEU2DQor6JOnID4gZGnDoG87ICM4NEU3DQor6JOoID4gdGnEgW87ICM4NEU4DQor6JOpID4gbcOgbzsgIzg0RTkNCivok6ogPiB0xY1uZzsgIzg0RUENCivok6sgPiB6aMO6OyAjODRFQg0KK+iTrCA+IHDDqW5nOyAjODRFQw0KK+iTrSA+IMSBbjsgIzg0RUQNCivok64gPiBsacOhbjsgIzg0RUUNCivok68gPiBjxY1uZzsgIzg0RUYNCivok7AgPiB4xK07ICM4NEYwDQor6JOxID4gcMOtbmc7ICM4NEYxDQor6JOyID4gccSrdTsgIzg0RjINCivok7MgPiBqw6xuOyAjODRGMw0KK+iTtCA+IGNow7puOyAjODRGNA0KK+iTtSA+IGppw6k7ICM4NEY1DQor6JO2ID4gd8SVaTsgIzg0RjYNCivok7cgPiB0xatpOyAjODRGNw0KK+iTuCA+IGPDoW87ICM4NEY4DQor6JO5ID4gecWtOyAjODRGOQ0KK+iTuiA+IHnDrDsgIzg0RkENCivok7sgPiBqw607ICM4NEZCDQor6JO8ID4gbGnEg287ICM4NEZDDQor6JO9ID4gYsOsOyAjODRGRA0KK+iTviA+IGzFrTsgIzg0RkUNCivok78gPiBzw7k7ICM4NEZGDQor6JSAID4gYsO5OyAjODUwMA0KK+iUgSA+IHpoxIFuZzsgIzg1MDENCivolIIgPiBsw7pvOyAjODUwMg0KK+iUgyA+IGppw6BuZzsgIzg1MDMNCivolIQgPiBtw6BuOyAjODUwNA0KK+iUhSA+IHnDoW47ICM4NTA1DQor6JSGID4gbMOtbmc7ICM4NTA2DQor6JSHID4gasOsOyAjODUwNw0KK+iUiCA+IHBpxINvOyAjODUwOA0KK+iUiSA+IGfFrW47ICM4NTA5DQor6JSKID4gaMSDbjsgIzg1MEENCivolIsgPiBkw607ICM4NTBCDQor6JSMID4gc8O5OyAjODUwQw0KK+iUjSA+IGzDuTsgIzg1MEQNCivolI4gPiBzaMOoOyAjODUwRQ0KK+iUjyA+IHNoxIFuZzsgIzg1MEYNCivolJAgPiBkw607ICM4NTEwDQor6JSRID4gbWnDqDsgIzg1MTENCivolJIgPiB4xatuOyAjODUxMg0KK+iUkyA+IG3DoG47ICM4NTEzDQor6JSUID4gYsOzOyAjODUxNA0KK+iUlSA+IGTDrDsgIzg1MTUNCivolJYgPiBjw7pvOyAjODUxNg0KK+iUlyA+IHpow6g7ICM4NTE3DQor6JSYID4gc8STbjsgIzg1MTgNCivolJkgPiB4dcOgbjsgIzg1MTkNCivolJogPiB3w6hpOyAjODUxQQ0KK+iUmyA+IGjDujsgIzg1MUINCivolJwgPiDDoW87ICM4NTFDDQor6JSdID4gbcStOyAjODUxRA0KK+iUniA+IGzDs3U7ICM4NTFFDQor6JSfID4gY8O5OyAjODUxRg0KK+iUoCA+IHpoxY1uZzsgIzg1MjANCivolKEgPiBjw6BpOyAjODUyMQ0KK+iUoiA+IHDDszsgIzg1MjINCivolKMgPiBqacSDbmc7ICM4NTIzDQor6JSkID4gbcOsOyAjODUyNA0KK+iUpSA+IGPFjW5nOyAjODUyNQ0KK+iUpiA+IG5pxINvOyAjODUyNg0KK+iUpyA+IGjDuWk7ICM4NTI3DQor6JSoID4gasO5bjsgIzg1MjgNCivolKkgPiB5w61uOyAjODUyOQ0KK+iUqiA+IGppw6BuOyAjODUyQQ0KK+iUqyA+IHnEgW47ICM4NTJCDQor6JSsID4gc2jFqzsgIzg1MkMNCivolK0gPiB5w6xuOyAjODUyRA0KK+iUriA+IGvDuWk7ICM4NTJFDQor6JSvID4gY2jDqW47ICM4NTJGDQor6JSwID4gaMO5OyAjODUzMA0KK+iUsSA+IHNoxIE7ICM4NTMxDQor6JSyID4ga8OydTsgIzg1MzINCivolLMgPiBxacOgbjsgIzg1MzMNCivolLQgPiBtw6E7ICM4NTM0DQor6JS1ID4gesSBbmc7ICM4NTM1DQor6JS3ID4gcWnDoW5nOyAjODUzNw0KK+iUuCA+IGTFjXU7ICM4NTM4DQor6JS5ID4gbGnDoG47ICM4NTM5DQor6JS6ID4gbMOsbjsgIzg1M0ENCivolLsgPiBrw7J1OyAjODUzQg0KK+iUvCA+IMSDaTsgIzg1M0MNCivolL0gPiBiw6w7ICM4NTNEDQor6JS+ID4gbMOtOyAjODUzRQ0KK+iUvyA+IHfDqWk7ICM4NTNGDQor6JWAID4gasOtOyAjODU0MA0KK+iVgSA+IHjDum47ICM4NTQxDQor6JWCID4gc2jDqG5nOyAjODU0Mg0KK+iVgyA+IGbDoW47ICM4NTQzDQor6JWEID4gbcOpbmc7ICM4NTQ0DQor6JWFID4gxY91OyAjODU0NQ0KK+iVhiA+IGNoxINuOyAjODU0Ng0KK+iVhyA+IGRpxINuOyAjODU0Nw0KK+iViCA+IHjDuW47ICM4NTQ4DQor6JWJID4gamnEgW87ICM4NTQ5DQor6JWKID4gcsWtaTsgIzg1NEENCivolYsgPiByxa1pOyAjODU0Qg0KK+iVjCA+IGzElWk7ICM4NTRDDQor6JWNID4gecO6OyAjODU0RA0KK+iVjiA+IHFpw6FvOyAjODU0RQ0KK+iVjyA+IGNow7o7ICM4NTRGDQor6JWQID4gaHXDoTsgIzg1NTANCivolZEgPiBqacSBbjsgIzg1NTENCivolZIgPiBtxINpOyAjODU1Mg0KK+iVkyA+IHnDum47ICM4NTUzDQor6JWUID4gYsSBbzsgIzg1NTQNCivolZUgPiB5w7N1OyAjODU1NQ0KK+iVliA+IHHDujsgIzg1NTYNCivolZcgPiBsw7k7ICM4NTU3DQor6JWYID4gcsOhbzsgIzg1NTgNCivolZkgPiBow7lpOyAjODU1OQ0KK+iVmiA+IMOoOyAjODU1QQ0KK+iVmyA+IHTDqW5nOyAjODU1Qg0KK+iVnCA+IGbElWk7ICM4NTVDDQor6JWdID4ganXDqTsgIzg1NUQNCivolZ4gPiB6w7lpOyAjODU1RQ0KK+iVnyA+IGbDoDsgIzg1NUYNCivolaAgPiByw7o7ICM4NTYwDQor6JWhID4gZsOpbjsgIzg1NjENCivolaIgPiBrw7lpOyAjODU2Mg0KK+iVoyA+IHNow7luOyAjODU2Mw0KK+iVpCA+IHLDumk7ICM4NTY0DQor6JWlID4gecSDOyAjODU2NQ0KK+iVpiA+IHjFqzsgIzg1NjYNCivolacgPiBmw7k7ICM4NTY3DQor6JWoID4ganXDqTsgIzg1NjgNCivolakgPiBkw6BuZzsgIzg1NjkNCivolaogPiB3w7o7ICM4NTZBDQor6JWrID4gdMOzbmc7ICM4NTZCDQor6JWsID4gc8SrOyAjODU2Qw0KK+iVrSA+IHhpxIFvOyAjODU2RA0KK+iVriA+IHjDrDsgIzg1NkUNCivola8gPiBsw7NuZzsgIzg1NkYNCivolbAgPiB5w7luOyAjODU3MA0KK+iVsiA+IHHDrTsgIzg1NzINCivolbMgPiBqacSBbjsgIzg1NzMNCivolbQgPiB5w7luOyAjODU3NA0KK+iVtSA+IHPFq247ICM4NTc1DQor6JW2ID4gbMOtbmc7ICM4NTc2DQor6JW3ID4gecO5OyAjODU3Nw0KK+iVuCA+IHhpw6E7ICM4NTc4DQor6JW5ID4gecWNbmc7ICM4NTc5DQor6JW6ID4gasOtOyAjODU3QQ0KK+iVuyA+IGjDsm5nOyAjODU3Qg0KK+iVvCA+IHPDrDsgIzg1N0MNCivolb0gPiBuw7NuZzsgIzg1N0QNCivolb4gPiBsxJVpOyAjODU3RQ0KK+iVvyA+IHh1xIFuOyAjODU3Rg0KK+iWgCA+IHnDuW47ICM4NTgwDQor6JaBID4gecO5OyAjODU4MQ0KK+iWgiA+IHjDrTsgIzg1ODINCivoloMgPiBow6BvOyAjODU4Mw0KK+iWhCA+IGLDszsgIzg1ODQNCivoloUgPiBoxIFvOyAjODU4NQ0KK+iWhiA+IMOgaTsgIzg1ODYNCivolocgPiB3w6lpOyAjODU4Nw0KK+iWiCA+IGjDuWk7ICM4NTg4DQor6JaJID4gd8OoaTsgIzg1ODkNCivoloogPiBqw6w7ICM4NThBDQor6JaLID4gY8SrOyAjODU4Qg0KK+iWjCA+IHhpxIFuZzsgIzg1OEMNCivolo0gPiBsdcOgbjsgIzg1OEQNCivolo4gPiBtacOoOyAjODU4RQ0KK+iWjyA+IHnDrDsgIzg1OEYNCivolpAgPiBsw6luZzsgIzg1OTANCivolpEgPiBqacSBbmc7ICM4NTkxDQor6JaSID4gY8OgbjsgIzg1OTINCivolpMgPiBzaMSTbjsgIzg1OTMNCivolpQgPiBxacOhbmc7ICM4NTk0DQor6JaVID4gbGnDoW47ICM4NTk1DQor6JaWID4ga8STOyAjODU5Ng0KK+iWlyA+IHl1w6FuOyAjODU5Nw0KK+iWmCA+IGTDoTsgIzg1OTgNCivolpkgPiB0w6w7ICM4NTk5DQor6JaaID4gdMOhbmc7ICM4NTlBDQor6JabID4geGnEkzsgIzg1OUINCivolpwgPiBiw6w7ICM4NTlDDQor6JadID4gemjDoW47ICM4NTlEDQor6JaeID4gc8WrbjsgIzg1OUUNCivolp8gPiBsacSDbjsgIzg1OUYNCivolqAgPiBmw6FuOyAjODVBMA0KK+iWoSA+IGTErW5nOyAjODVBMQ0KK+iWoiA+IGppxJM7ICM4NUEyDQor6JajID4gZ8WtOyAjODVBMw0KK+iWpCA+IHhpw6g7ICM4NUE0DQor6JalID4gc2jFrTsgIzg1QTUNCivolqYgPiBqacOgbjsgIzg1QTYNCivolqcgPiBrxINvOyAjODVBNw0KK+iWqCA+IGjFjW5nOyAjODVBOA0KK+iWqSA+IHPDoDsgIzg1QTkNCivolqogPiB4xKtuOyAjODVBQQ0KK+iWqyA+IHjFq247ICM4NUFCDQor6JasID4gecOgbzsgIzg1QUMNCivolq4gPiBzxY91OyAjODVBRQ0KK+iWryA+IHNoxa07ICM4NUFGDQor6JawID4geMWrbjsgIzg1QjANCivolrEgPiBkw7lpOyAjODVCMQ0KK+iWsiA+IHDDrW47ICM4NUIyDQor6JazID4gd8SVaTsgIzg1QjMNCivolrQgPiBuw6luZzsgIzg1QjQNCivolrUgPiBjaMOzdTsgIzg1QjUNCivolrYgPiBtw6FpOyAjODVCNg0KK+iWtyA+IHLDujsgIzg1QjcNCivolrggPiBwacSBbzsgIzg1QjgNCivolrkgPiB0w6FpOyAjODVCOQ0KK+iWuiA+IHHDrTsgIzg1QkENCivolrsgPiB6xINvOyAjODVCQg0KK+iWvCA+IGNow6luOyAjODVCQw0KK+iWvSA+IHpoxJNuOyAjODVCRA0KK+iWviA+IMSVcjsgIzg1QkUNCivolr8gPiBuxK07ICM4NUJGDQor6JeAID4gecOtbmc7ICM4NUMwDQor6JeBID4gZ8SDbzsgIzg1QzENCivol4IgPiBjw7JuZzsgIzg1QzINCivol4MgPiB4acSBbzsgIzg1QzMNCivol4QgPiBxw607ICM4NUM0DQor6JeFID4gZsOhOyAjODVDNQ0KK+iXhiA+IGppxINuOyAjODVDNg0KK+iXhyA+IHjDuTsgIzg1QzcNCivol4ggPiBrxatpOyAjODVDOA0KK+iXiSA+IGppw6g7ICM4NUM5DQor6JeKID4gYmnEg247ICM4NUNBDQor6JeLID4gZGnDoG87ICM4NUNCDQor6JeMID4gbcOsOyAjODVDQw0KK+iXjSA+IGzDoW47ICM4NUNEDQor6JeOID4gasOsbjsgIzg1Q0UNCivol48gPiBjw6FuZzsgIzg1Q0YNCivol5AgPiBtacSDbzsgIzg1RDANCivol5EgPiBxw61vbmc7ICM4NUQxDQor6JeSID4gcWnDqDsgIzg1RDINCivol5MgPiB4acSDbjsgIzg1RDMNCivol5UgPiDFj3U7ICM4NUQ1DQor6JeWID4geGnDoW47ICM4NUQ2DQor6JeXID4gc8O5OyAjODVENw0KK+iXmCA+IGzHmDsgIzg1RDgNCivol5kgPiB5w6w7ICM4NUQ5DQor6JeaID4geMO5OyAjODVEQQ0KK+iXmyA+IHhpxJU7ICM4NURCDQor6JecID4gbMOtOyAjODVEQw0KK+iXnSA+IHnDrDsgIzg1REQNCivol54gPiBsxIM7ICM4NURFDQor6JefID4gbMSVaTsgIzg1REYNCivol6AgPiB4acOgbzsgIzg1RTANCivol6EgPiBkw607ICM4NUUxDQor6JeiID4gemjErTsgIzg1RTINCivol6MgPiBixJNpOyAjODVFMw0KK+iXpCA+IHTDqW5nOyAjODVFNA0KK+iXpSA+IHnDoG87ICM4NUU1DQor6JemID4gbcOyOyAjODVFNg0KK+iXpyA+IGh1xINuOyAjODVFNw0KK+iXqCA+IHBpxINvOyAjODVFOA0KK+iXqSA+IGbDoW47ICM4NUU5DQor6JeqID4gc8WPdTsgIzg1RUENCivol6sgPiB0w6FuOyAjODVFQg0KK+iXrCA+IHTFq2k7ICM4NUVDDQor6JetID4gccOtb25nOyAjODVFRA0KK+iXriA+IHFpw6FvOyAjODVFRQ0KK+iXryA+IHfDqGk7ICM4NUVGDQor6JewID4gbMOtdTsgIzg1RjANCivol7EgPiBow7lpOyAjODVGMQ0KK+iXsyA+IGfEg287ICM4NUYzDQor6Je0ID4gecO5bjsgIzg1RjQNCivol7YgPiBsw6w7ICM4NUY2DQor6Je3ID4gc2jFrTsgIzg1RjcNCivol7ggPiBjaMO6OyAjODVGOA0KK+iXuSA+IMSDaTsgIzg1RjkNCivol7ogPiBsw6xuOyAjODVGQQ0KK+iXuyA+IHrEg287ICM4NUZCDQor6Je8ID4geHXEgW47ICM4NUZDDQor6Je9ID4gY2jDqG47ICM4NUZEDQor6Je+ID4gbMOgaTsgIzg1RkUNCivol78gPiBow7lvOyAjODVGRg0KK+iYgCA+IHTDuW87ICM4NjAwDQor6JiBID4gd8O5OyAjODYwMQ0KK+iYgiA+IHLFrWk7ICM4NjAyDQor6JiDID4gcsWtaTsgIzg2MDMNCivomIQgPiBxw607ICM4NjA0DQor6JiFID4gaMOpbmc7ICM4NjA1DQor6JiGID4gbMO6OyAjODYwNg0KK+iYhyA+IHPFqzsgIzg2MDcNCivomIggPiB0w7ppOyAjODYwOA0KK+iYiSA+IG3DoW5nOyAjODYwOQ0KK+iYiiA+IHnDuW47ICM4NjBBDQor6JiLID4gcMOtbjsgIzg2MEINCivomIwgPiB5xa07ICM4NjBDDQor6JiNID4geMWrbjsgIzg2MEQNCivomI4gPiBqw6w7ICM4NjBFDQor6JiPID4gasSrb25nOyAjODYwRg0KK+iYkCA+IHhpxIFuOyAjODYxMA0KK+iYkSA+IG3DszsgIzg2MTENCivomJMgPiBzxas7ICM4NjEzDQor6JiUID4gasSrb25nOyAjODYxNA0KK+iYliA+IG5pw6g7ICM4NjE2DQor6JiXID4gYsOyOyAjODYxNw0KK+iYmCA+IHLDoW5nOyAjODYxOA0KK+iYmSA+IHnDrDsgIzg2MTkNCivomJogPiB4acSDbjsgIzg2MUENCivomJsgPiB5w7o7ICM4NjFCDQor6JicID4gasO6OyAjODYxQw0KK+iYnSA+IGxpw6BuOyAjODYxRA0KK+iYniA+IGxpw6BuOyAjODYxRQ0KK+iYnyA+IHnErW47ICM4NjFGDQor6JigID4gcWnDoW5nOyAjODYyMA0KK+iYoSA+IHnEq25nOyAjODYyMQ0KK+iYoiA+IGzDs25nOyAjODYyMg0KK+iYoyA+IHTDsm5nOyAjODYyMw0KK+iYpCA+IHfElWk7ICM4NjI0DQor6JilID4geXXDqDsgIzg2MjUNCivomKYgPiBsw61uZzsgIzg2MjYNCivomKcgPiBxw7o7ICM4NjI3DQor6JioID4gecOhbzsgIzg2MjgNCivomKkgPiBmw6FuOyAjODYyOQ0KK+iYqiA+IG3DrTsgIzg2MkENCivomKsgPiBsw6FuOyAjODYyQg0KK+iYrCA+IGvFq2k7ICM4NjJDDQor6JitID4gbMOhbjsgIzg2MkQNCivomK4gPiBqw6w7ICM4NjJFDQor6JivID4gZMOgbmc7ICM4NjJGDQor6JixID4gbMOoaTsgIzg2MzENCivomLIgPiBsw6lpOyAjODYzMg0KK+iYsyA+IGh1xIM7ICM4NjMzDQor6Ji0ID4gZsSTbmc7ICM4NjM0DQor6Ji1ID4gemjDrTsgIzg2MzUNCivomLYgPiB3w6hpOyAjODYzNg0KK+iYtyA+IGvDumk7ICM4NjM3DQor6Ji4ID4gemjDoG47ICM4NjM4DQor6Ji5ID4gaHXDoGk7ICM4NjM5DQor6Ji6ID4gbMOtOyAjODYzQQ0KK+iYuyA+IGrDrDsgIzg2M0INCivomLwgPiBtw607ICM4NjNDDQor6Ji9ID4gbMSVaTsgIzg2M0QNCivomL4gPiBodcOgaTsgIzg2M0UNCivomL8gPiBsw7pvOyAjODYzRg0KK+iZgCA+IGrEqzsgIzg2NDANCivomYEgPiBrw7ppOyAjODY0MQ0KK+iZgiA+IGzDuTsgIzg2NDINCivomYMgPiBqacSBbjsgIzg2NDMNCivomYYgPiBsw6lpOyAjODY0Ng0KK+iZhyA+IHF1xINuOyAjODY0Nw0KK+iZiCA+IHhpxIFvOyAjODY0OA0KK+iZiSA+IHnDrDsgIzg2NDkNCivomYogPiBsdcOhbjsgIzg2NEENCivomYsgPiBtw6luOyAjODY0Qg0KK+iZjCA+IGJpxJM7ICM4NjRDDQor6JmNID4gaMWrOyAjODY0RA0KK+iZjiA+IGjFrTsgIzg2NEUNCivomY8gPiBsxa07ICM4NjRGDQor6JmQID4gbsecZTsgIzg2NTANCivomZEgPiBsx5w7ICM4NjUxDQor6JmSID4gc8SrOyAjODY1Mg0KK+iZkyA+IHhpxIFvOyAjODY1Mw0KK+iZlCA+IHFpw6FuOyAjODY1NA0KK+iZlSA+IGNow7k7ICM4NjU1DQor6JmWID4gaMWrOyAjODY1Ng0KK+iZlyA+IHjFqzsgIzg2NTcNCivomZggPiBjw7pvOyAjODY1OA0KK+iZmSA+IGbDujsgIzg2NTkNCivomZogPiB4xas7ICM4NjVBDQor6JmbID4geMWrOyAjODY1Qg0KK+iZnCA+IGzFrTsgIzg2NUMNCivomZ0gPiBoxa07ICM4NjVEDQor6JmeID4gecO6OyAjODY1RQ0KK+iZnyA+IGjDoG87ICM4NjVGDQor6JmgID4gamnEg287ICM4NjYwDQor6JmhID4gasO5OyAjODY2MQ0KK+iZoiA+IGfDum87ICM4NjYyDQor6JmjID4gYsOgbzsgIzg2NjMNCivomaQgPiB5w6FuOyAjODY2NA0KK+iZpSA+IHpow6BuOyAjODY2NQ0KK+iZpiA+IHpow6BuOyAjODY2Ng0KK+iZpyA+IGvFq2k7ICM4NjY3DQor6JmoID4gYsSBbjsgIzg2NjgNCivomakgPiB4w6w7ICM4NjY5DQor6JmqID4gc2jDujsgIzg2NkENCivomasgPiBjaMOzbmc7ICM4NjZCDQor6JmsID4gccOtdTsgIzg2NkMNCivoma0gPiBkacSBbzsgIzg2NkQNCivoma4gPiBqxKs7ICM4NjZFDQor6JmvID4gccOtdTsgIzg2NkYNCivombAgPiBjaMOpbmc7ICM4NjcwDQor6JmxID4gc2jEqzsgIzg2NzENCivombMgPiBkw6w7ICM4NjczDQor6Jm0ID4gemjDqTsgIzg2NzQNCivombUgPiBzaMOpOyAjODY3NQ0KK+iZtiA+IHnFqzsgIzg2NzYNCivombcgPiBnxIFuOyAjODY3Nw0KK+iZuCA+IHrErTsgIzg2NzgNCivombkgPiBow7NuZzsgIzg2NzkNCivombogPiBoxa1pOyAjODY3QQ0KK+iZuyA+IG3DqW5nOyAjODY3Qg0KK+iZvCA+IGfDqDsgIzg2N0MNCivomb0gPiBzxatpOyAjODY3RA0KK+iZviA+IHhpxIE7ICM4NjdFDQor6Jm/ID4gY2jDoGk7ICM4NjdGDQor6JqAID4gc2jDrTsgIzg2ODANCivomoEgPiB5xK07ICM4NjgxDQor6JqCID4gbcSDOyAjODY4Mg0KK+iagyA+IHhpw6BuZzsgIzg2ODMNCivomoQgPiBmxIFuZzsgIzg2ODQNCivomoUgPiDDqDsgIzg2ODUNCivomoYgPiBwxIE7ICM4Njg2DQor6JqHID4gY2jErTsgIzg2ODcNCivomoggPiBxacSBbjsgIzg2ODgNCivomokgPiB3w6luOyAjODY4OQ0KK+iaiiA+IHfDqW47ICM4NjhBDQor6JqLID4gcsO5aTsgIzg2OEINCivomowgPiBiw6BuZzsgIzg2OEMNCivomo0gPiBixK07ICM4NjhEDQor6JqOID4geXXDqDsgIzg2OEUNCivomo8gPiB5dcOoOyAjODY4Rg0KK+iakCA+IGrFq247ICM4NjkwDQor6JqRID4gccOtOyAjODY5MQ0KK+iakiA+IHLDoW47ICM4NjkyDQor6JqTID4gecStbjsgIzg2OTMNCivompQgPiBxw607ICM4Njk0DQor6JqVID4gdGnEg247ICM4Njk1DQor6JqWID4geXXDoW47ICM4Njk2DQor6JqXID4ganXDqTsgIzg2OTcNCivompggPiBow7ppOyAjODY5OA0KK+iamSA+IHHDrW47ICM4Njk5DQor6JqaID4gccOtOyAjODY5QQ0KK+iamyA+IHpow7JuZzsgIzg2OUINCivompwgPiB5w6E7ICM4NjlDDQor6JqdID4gY8OsOyAjODY5RA0KK+ianiA+IG3DuTsgIzg2OUUNCivomp8gPiB3w6FuZzsgIzg2OUYNCivomqAgPiBmw6luOyAjODZBMA0KK+iaoSA+IGbDqW47ICM4NkExDQor6JqiID4gaMOhbmc7ICM4NkEyDQor6JqjID4gZ8WNbmc7ICM4NkEzDQor6JqkID4gesSDbzsgIzg2QTQNCivomqUgPiBmxa07ICM4NkE1DQor6JqmID4gcsOhbjsgIzg2QTYNCivomqcgPiBqacOoOyAjODZBNw0KK+iaqCA+IGbDujsgIzg2QTgNCivomqkgPiBjaMSrOyAjODZBOQ0KK+iaqiA+IGTFj3U7ICM4NkFBDQor6JqrID4gcGnDoW87ICM4NkFCDQor6JqsID4geGnDoG47ICM4NkFDDQor6JqtID4gbsOtOyAjODZBRA0KK+iariA+IHTDqDsgIzg2QUUNCivomq8gPiBxxKt1OyAjODZBRg0KK+iasCA+IHnDs3U7ICM4NkIwDQor6JqxID4gemjDoDsgIzg2QjENCivomrIgPiBww61uZzsgIzg2QjINCivomrMgPiBjaMOtOyAjODZCMw0KK+iatCA+IHnFj3U7ICM4NkI0DQor6Jq1ID4gaMOpOyAjODZCNQ0KK+iatiA+IGjEgW47ICM4NkI2DQor6Jq3ID4gasO5OyAjODZCNw0KK+iauCA+IGzDrDsgIzg2QjgNCivomrkgPiBmw7k7ICM4NkI5DQor6Jq6ID4gcsOhbjsgIzg2QkENCivomrsgPiB6aMOhOyAjODZCQg0KK+iavCA+IGfFj3U7ICM4NkJDDQor6Jq9ID4gcMOtOyAjODZCRA0KK+iaviA+IGLFjzsgIzg2QkUNCivomr8gPiB4acOhbjsgIzg2QkYNCivom4AgPiB6aMO5OyAjODZDMA0KK+ibgSA+IGRpxIFvOyAjODZDMQ0KK+ibgiA+IGJpxJU7ICM4NkMyDQor6JuDID4gYsStbmc7ICM4NkMzDQor6JuEID4gZ8WrOyAjODZDNA0KK+ibhSA+IHLDoW47ICM4NkM1DQor6JuGID4gccWrOyAjODZDNg0KK+ibhyA+IHNow6k7ICM4NkM3DQor6JuIID4gdGnDqDsgIzg2QzgNCivom4kgPiBsw61uZzsgIzg2QzkNCivom4ogPiBnxa07ICM4NkNBDQor6JuLID4gZMOgbjsgIzg2Q0INCivom4wgPiBnxa07ICM4NkNDDQor6JuNID4gecOtbmc7ICM4NkNEDQor6JuOID4gbMOsOyAjODZDRQ0KK+ibjyA+IGNoxJNuZzsgIzg2Q0YNCivom5AgPiBxxas7ICM4NkQwDQor6JuRID4gbcOzdTsgIzg2RDENCivom5IgPiBnw6k7ICM4NkQyDQor6JuTID4gY8OsOyAjODZEMw0KK+iblCA+IGjDumk7ICM4NkQ0DQor6JuVID4gaMO6aTsgIzg2RDUNCivom5YgPiBtw6FuZzsgIzg2RDYNCivom5cgPiBmw7k7ICM4NkQ3DQor6JuYID4gecOhbmc7ICM4NkQ4DQor6JuZID4gd8SBOyAjODZEOQ0KK+ibmiA+IGxpw6g7ICM4NkRBDQor6JubID4gemjFqzsgIzg2REINCivom5wgPiB5xKs7ICM4NkRDDQor6JudID4geGnDoW47ICM4NkREDQor6JueID4ga8O5bzsgIzg2REUNCivom58gPiBqacSBbzsgIzg2REYNCivom6AgPiBsw6w7ICM4NkUwDQor6JuhID4gecOsOyAjODZFMQ0KK+iboiA+IHDDrW5nOyAjODZFMg0KK+iboyA+IGrEqzsgIzg2RTMNCivom6QgPiBow6E7ICM4NkU0DQor6JulID4gc2jDqTsgIzg2RTUNCivom6YgPiB5w607ICM4NkU2DQor6JunID4gd8SDbmc7ICM4NkU3DQor6JuoID4gbcOyOyAjODZFOA0KK+ibqSA+IHHDrW9uZzsgIzg2RTkNCivom6ogPiBxacOoOyAjODZFQQ0KK+ibqyA+IGfFrWk7ICM4NkVCDQor6JusID4gZ8WPbmc7ICM4NkVDDQor6JutID4gemjDrDsgIzg2RUQNCivom64gPiBtw6FuOyAjODZFRQ0KK+ibsCA+IHpow607ICM4NkYwDQor6JuxID4gamnDoTsgIzg2RjENCivom7IgPiByw6FvOyAjODZGMg0KK+ibsyA+IHPEqzsgIzg2RjMNCivom7QgPiBxw607ICM4NkY0DQor6Ju1ID4geMSrbmc7ICM4NkY1DQor6Ju2ID4gbGnDqDsgIzg2RjYNCivom7cgPiBxw611OyAjODZGNw0KK+ibuCA+IHNoxIFvOyAjODZGOA0KK+ibuSA+IHnFj25nOyAjODZGOQ0KK+ibuiA+IGppw6E7ICM4NkZBDQor6Ju7ID4gc2jDuWk7ICM4NkZCDQor6Ju8ID4gY2jEkzsgIzg2RkMNCivom70gPiBiw6BpOyAjODZGRA0KK+ibviA+IMOpOyAjODZGRQ0KK+ibvyA+IGjDoG47ICM4NkZGDQor6JyAID4gc2jFrTsgIzg3MDANCivonIEgPiB4dcOhbjsgIzg3MDENCivonIIgPiBmxJNuZzsgIzg3MDINCivonIMgPiBzaMOobjsgIzg3MDMNCivonIQgPiB6aMOobjsgIzg3MDQNCivonIUgPiBmxa07ICM4NzA1DQor6JyGID4geGnDoG47ICM4NzA2DQor6JyHID4gemjDqTsgIzg3MDcNCivonIggPiB3w7o7ICM4NzA4DQor6JyJID4gZsO6OyAjODcwOQ0KK+iciiA+IGzDrTsgIzg3MEENCivonIsgPiBsw6FuZzsgIzg3MEINCivonIwgPiBiw6w7ICM4NzBDDQor6JyNID4gY2jDujsgIzg3MEQNCivonI4gPiB5dcSBbjsgIzg3MEUNCivonI8gPiB5xY91OyAjODcwRg0KK+ickCA+IGppw6k7ICM4NzEwDQor6JyRID4gZMOgbjsgIzg3MTENCivonJIgPiB5w6FuOyAjODcxMg0KK+ickyA+IHTDrW5nOyAjODcxMw0KK+iclCA+IGRpw6BuOyAjODcxNA0KK+iclSA+IHNow7lpOyAjODcxNQ0KK+icliA+IGjDumk7ICM4NzE2DQor6JyXID4gZ3XEgTsgIzg3MTcNCivonJggPiB6aMSrOyAjODcxOA0KK+icmSA+IHPFjW5nOyAjODcxOQ0KK+icmiA+IGbEk2k7ICM4NzFBDQor6JybID4gasWrOyAjODcxQg0KK+icnCA+IG3DrDsgIzg3MUMNCivonJ0gPiBxw607ICM4NzFEDQor6JyeID4gccOtOyAjODcxRQ0KK+icnyA+IHnDuTsgIzg3MUYNCivonKAgPiBqxa1uOyAjODcyMA0KK+icoSA+IHpow6A7ICM4NzIxDQor6JyiID4gbcSVbmc7ICM4NzIyDQor6JyjID4gcWnEgW5nOyAjODcyMw0KK+icpCA+IHPEqzsgIzg3MjQNCivonKUgPiB4xKs7ICM4NzI1DQor6JymID4gbMO6bjsgIzg3MjYNCivonKcgPiBsw6w7ICM4NzI3DQor6JyoID4gZGnDqTsgIzg3MjgNCivonKkgPiB0acOhbzsgIzg3MjkNCivonKogPiB0xIFvOyAjODcyQQ0KK+icqyA+IGvFq247ICM4NzJCDQor6JysID4gZ8SBbjsgIzg3MkMNCivonK0gPiBow6BuOyAjODcyRA0KK+icriA+IHnDuTsgIzg3MkUNCivonK8gPiBiw6BuZzsgIzg3MkYNCivonLAgPiBmw6lpOyAjODczMA0KK+icsSA+IHDDrTsgIzg3MzENCivonLIgPiB3xJVpOyAjODczMg0KK+icsyA+IGTFq247ICM4NzMzDQor6Jy0ID4gecOsOyAjODczNA0KK+ictSA+IHl1xIFuOyAjODczNQ0KK+ictiA+IHPDuTsgIzg3MzYNCivonLcgPiBxdcOhbjsgIzg3MzcNCivonLggPiBxacSDbjsgIzg3MzgNCivonLkgPiByw7lpOyAjODczOQ0KK+icuiA+IG7DrTsgIzg3M0ENCivonLsgPiBxxKtuZzsgIzg3M0INCivonLwgPiB3w6hpOyAjODczQw0KK+icvSA+IGxpxINuZzsgIzg3M0QNCivonL4gPiBnxa1vOyAjODczRQ0KK+icvyA+IHfEgW47ICM4NzNGDQor6J2AID4gZMWNbmc7ICM4NzQwDQor6J2BID4gw6g7ICM4NzQxDQor6J2CID4gYsSDbjsgIzg3NDINCivonYMgPiBkw6w7ICM4NzQzDQor6J2EID4gd8SDbmc7ICM4NzQ0DQor6J2FID4gY8OhbjsgIzg3NDUNCivonYYgPiB5xINuZzsgIzg3NDYNCivonYcgPiB5w61uZzsgIzg3NDcNCivonYggPiBnxatvOyAjODc0OA0KK+idiSA+IGNow6FuOyAjODc0OQ0KK+idiyA+IGzDoDsgIzg3NEINCivonYwgPiBrxJM7ICM4NzRDDQor6J2NID4gasOtOyAjODc0RA0KK+idjiA+IGjDqTsgIzg3NEUNCivonY8gPiB0w61uZzsgIzg3NEYNCivonZAgPiBtw6BpOyAjODc1MA0KK+idkSA+IHjFqzsgIzg3NTENCivonZIgPiBtacOhbjsgIzg3NTINCivonZMgPiB5w7o7ICM4NzUzDQor6J2UID4gamnEkzsgIzg3NTQNCivonZUgPiBzaMOtOyAjODc1NQ0KK+idliA+IHh1xIFuOyAjODc1Ng0KK+idlyA+IGh1w6FuZzsgIzg3NTcNCivonZggPiB5xINuOyAjODc1OA0KK+idmSA+IGJpxIFuOyAjODc1OQ0KK+idmiA+IHLDs3U7ICM4NzVBDQor6J2bID4gd8STaTsgIzg3NUINCivonZwgPiBmw7k7ICM4NzVDDQor6J2dID4geXXDoW47ICM4NzVEDQor6J2eID4gbcOoaTsgIzg3NUUNCivonZ8gPiB3w6hpOyAjODc1Rg0KK+idoCA+IGbDujsgIzg3NjANCivonaEgPiBydcSDbjsgIzg3NjENCivonaIgPiB4acOpOyAjODc2Mg0KK+idoyA+IHnDs3U7ICM4NzYzDQor6J2kID4gccOtdTsgIzg3NjQNCivonaUgPiBtw6FvOyAjODc2NQ0KK+idpiA+IHhpxIE7ICM4NzY2DQor6J2nID4gecSrbmc7ICM4NzY3DQor6J2oID4gc2jEqzsgIzg3NjgNCivonakgPiBjaMOzbmc7ICM4NzY5DQor6J2qID4gdMSBbmc7ICM4NzZBDQor6J2rID4gemjFqzsgIzg3NkINCivonawgPiB6xY1uZzsgIzg3NkMNCivona0gPiB0w607ICM4NzZEDQor6J2uID4gZsO5OyAjODc2RQ0KK+idryA+IHl1w6FuOyAjODc2Rg0KK+idsCA+IGjFrWk7ICM4NzcwDQor6J2xID4gbcOpbmc7ICM4NzcxDQor6J2yID4gbMOgOyAjODc3Mg0KK+idsyA+IGTDujsgIzg3NzMNCivonbQgPiBow7o7ICM4Nzc0DQor6J21ID4gccSrdTsgIzg3NzUNCivonbYgPiBkacOpOyAjODc3Ng0KK+idtyA+IGzDrDsgIzg3NzcNCivonbggPiBndcSBOyAjODc3OA0KK+iduSA+IHnFq247ICM4Nzc5DQor6J26ID4gasWtOyAjODc3QQ0KK+iduyA+IG7Eg247ICM4NzdCDQor6J28ID4gbMOzdTsgIzg3N0MNCivonb0gPiBxxa1uOyAjODc3RA0KK+idviA+IHLDs25nOyAjODc3RQ0KK+idvyA+IHnDrW5nOyAjODc3Rg0KK+iegCA+IGppxIFuZzsgIzg3ODANCivonoIgPiBsw6FuZzsgIzg3ODINCivonoMgPiBww6FuZzsgIzg3ODMNCivonoQgPiBzxKs7ICM4Nzg0DQor6J6FID4geMSrOyAjODc4NQ0KK+iehiA+IGPDrDsgIzg3ODYNCivonocgPiB4xKs7ICM4Nzg3DQor6J6IID4geXXDoW47ICM4Nzg4DQor6J6JID4gd8STbmc7ICM4Nzg5DQor6J6KID4gbGnDoW47ICM4NzhBDQor6J6LID4gc8WNdTsgIzg3OEINCivonowgPiBixIFuOyAjODc4Qw0KK+iejSA+IHLDs25nOyAjODc4RA0KK+iejiA+IHLDs25nOyAjODc4RQ0KK+iejyA+IGrDrTsgIzg3OEYNCivonpAgPiB3xas7ICM4NzkwDQor6J6RID4gccOsdTsgIzg3OTENCivonpIgPiBow6BuOyAjODc5Mg0KK+iekyA+IHHDrW47ICM4NzkzDQor6J6UID4gecOtOyAjODc5NA0KK+ielSA+IGLEqzsgIzg3OTUNCivonpYgPiBodcOhOyAjODc5Ng0KK+ielyA+IHTDoW5nOyAjODc5Nw0KK+iemCA+IHnErTsgIzg3OTgNCivonpkgPiBkw7k7ICM4Nzk5DQor6J6aID4gbsOgaTsgIzg3OUENCivonpsgPiBow6k7ICM4NzlCDQor6J6cID4gaMO6OyAjODc5Qw0KK+ienSA+IGjDuWk7ICM4NzlEDQor6J6eID4gbcSDOyAjODc5RQ0KK+ienyA+IG3DrW5nOyAjODc5Rg0KK+ieoCA+IHnDrDsgIzg3QTANCivonqEgPiB3w6luOyAjODdBMQ0KK+ieoiA+IHnDrW5nOyAjODdBMg0KK+ieoyA+IHTDqW5nOyAjODdBMw0KK+iepCA+IHnFrTsgIzg3QTQNCivonqUgPiBjxIFuZzsgIzg3QTUNCivonqggPiBtxINuOyAjODdBOA0KK+ieqiA+IHNoxIFuZzsgIzg3QUENCivonqsgPiB6aMSTOyAjODdBQg0KK+ierCA+IGPDoW87ICM4N0FDDQor6J6tID4gY2jEqzsgIzg3QUQNCivonq4gPiBkw6w7ICM4N0FFDQor6J6vID4gw6FvOyAjODdBRg0KK+iesCA+IGzDuTsgIzg3QjANCivonrEgPiB3w6hpOyAjODdCMQ0KK+iesiA+IHpow6w7ICM4N0IyDQor6J6zID4gdMOhbmc7ICM4N0IzDQor6J60ID4gY2jDqW47ICM4N0I0DQor6J61ID4gcGnEgW87ICM4N0I1DQor6J62ID4gccO6OyAjODdCNg0KK+ietyA+IHDDrTsgIzg3QjcNCivonrggPiB5w7o7ICM4N0I4DQor6J65ID4gamnDoG47ICM4N0I5DQor6J66ID4gbMO6bzsgIzg3QkENCivonrsgPiBsw7N1OyAjODdCQg0KK+ievCA+IHHErW47ICM4N0JDDQor6J69ID4gemjFjW5nOyAjODdCRA0KK+ieviA+IHnErW47ICM4N0JFDQor6J6/ID4gamnEgW5nOyAjODdCRg0KK+ifgCA+IHNodcOgaTsgIzg3QzANCivon4EgPiB3w6luOyAjODdDMQ0KK+ifgiA+IGppxIFvOyAjODdDMg0KK+ifgyA+IHfDoG47ICM4N0MzDQor6J+EID4gemjDrTsgIzg3QzQNCivon4UgPiB6aMOoOyAjODdDNQ0KK+ifhiA+IG3DoTsgIzg3QzYNCivon4cgPiBtw6E7ICM4N0M3DQor6J+IID4gZ8WrbzsgIzg3QzgNCivon4kgPiBsw611OyAjODdDOQ0KK+ifiiA+IG3DoW87ICM4N0NBDQor6J+LID4geMSrOyAjODdDQg0KK+ifjCA+IGPFjW5nOyAjODdDQw0KK+ifjSA+IGzDrTsgIzg3Q0QNCivon44gPiBtxINuOyAjODdDRQ0KK+ifjyA+IHhpxIFvOyAjODdDRg0KK+ifkSA+IHpoxIFuZzsgIzg3RDENCivon5IgPiBtxINuZzsgIzg3RDINCivon5MgPiB4acOgbmc7ICM4N0QzDQor6J+UID4gbcOyOyAjODdENA0KK+iflSA+IHrFq2k7ICM4N0Q1DQor6J+WID4gc8SrOyAjODdENg0KK+iflyA+IHHEq3U7ICM4N0Q3DQor6J+YID4gdMOoOyAjODdEOA0KK+ifmSA+IHpow607ICM4N0Q5DQor6J+aID4gcMOpbmc7ICM4N0RBDQor6J+bID4gcMOpbmc7ICM4N0RCDQor6J+cID4gamnEg287ICM4N0RDDQor6J+dID4gccO6OyAjODdERA0KK+ifniA+IGJpw6k7ICM4N0RFDQor6J+fID4gbGnDoW87ICM4N0RGDQor6J+gID4gcMOhbjsgIzg3RTANCivon6EgPiBnxa1pOyAjODdFMQ0KK+ifoiA+IHjErTsgIzg3RTINCivon6MgPiBqxK07ICM4N0UzDQor6J+kID4gemh1xIFuOyAjODdFNA0KK+ifpSA+IGh1w6FuZzsgIzg3RTUNCivon6YgPiBmw6hpOyAjODdFNg0KK+ifpyA+IGzDoW87ICM4N0U3DQor6J+oID4ganXDqTsgIzg3RTgNCivon6kgPiBqdcOpOyAjODdFOQ0KK+ifqiA+IGjDuWk7ICM4N0VBDQor6J+rID4gecOtbjsgIzg3RUINCivon6wgPiBjaMOhbjsgIzg3RUMNCivon60gPiBqacSBbzsgIzg3RUQNCivon64gPiBzaMOgbjsgIzg3RUUNCivon68gPiByw6FvOyAjODdFRg0KK+ifsCA+IHhpxIFvOyAjODdGMA0KK+ifsSA+IG3Ds3U7ICM4N0YxDQor6J+yID4gY2jDs25nOyAjODdGMg0KK+ifsyA+IHjDum47ICM4N0YzDQor6J+0ID4gc8SrOyAjODdGNA0KK+iftiA+IGNoxJNuZzsgIzg3RjYNCivon7cgPiBkxIFuZzsgIzg3RjcNCivon7ggPiBsxK07ICM4N0Y4DQor6J+5ID4geGnDqDsgIzg3RjkNCivon7ogPiBzaMOgbjsgIzg3RkENCivon7sgPiB5xK07ICM4N0ZCDQor6J+8ID4gasStbmc7ICM4N0ZDDQor6J+9ID4gZMOhOyAjODdGRA0KK+ifviA+IGNow6FuOyAjODdGRQ0KK+ifvyA+IHHDrDsgIzg3RkYNCivooIAgPiBjxKs7ICM4ODAwDQor6KCBID4geGnDoG5nOyAjODgwMQ0KK+iggiA+IHNow6g7ICM4ODAyDQor6KCDID4gbMWtbzsgIzg4MDMNCivooIQgPiBxw61uOyAjODgwNA0KK+ighSA+IHnDrW5nOyAjODgwNQ0KK+ighiA+IGNow6BpOyAjODgwNg0KK+ighyA+IGzDrDsgIzg4MDcNCivooIggPiB6w6k7ICM4ODA4DQor6KCJID4geHXEgW47ICM4ODA5DQor6KCKID4gbGnDoW47ICM4ODBBDQor6KCLID4gemjDujsgIzg4MEINCivooIwgPiB6w6k7ICM4ODBDDQor6KCNID4geGnEkzsgIzg4MEQNCivooI4gPiBtxINuZzsgIzg4MEUNCivooI8gPiB4acOoOyAjODgwRg0KK+igkCA+IHHDrTsgIzg4MTANCivooJEgPiByw7NuZzsgIzg4MTENCivooJIgPiBqacSDbjsgIzg4MTINCivooJMgPiBtxJVuZzsgIzg4MTMNCivooJQgPiBow6FvOyAjODgxNA0KK+iglSA+IHJ1xINuOyAjODgxNQ0KK+igliA+IGjDuW87ICM4ODE2DQor6KCXID4gemjDum87ICM4ODE3DQor6KCYID4gamnDqTsgIzg4MTgNCivooJkgPiBixKtuOyAjODgxOQ0KK+igmiA+IGjDqDsgIzg4MUENCivooJsgPiBtacOoOyAjODgxQg0KK+ignCA+IGbDoW47ICM4ODFDDQor6KCdID4gbMOpaTsgIzg4MUQNCivooJ4gPiBqacOpOyAjODgxRQ0KK+ignyA+IGzDoDsgIzg4MUYNCivooKAgPiBtw6w7ICM4ODIwDQor6KChID4gbMStOyAjODgyMQ0KK+igoiA+IGNoxa1uOyAjODgyMg0KK+igoyA+IGzDrDsgIzg4MjMNCivooKQgPiBxxKt1OyAjODgyNA0KK+igpSA+IG5pw6g7ICM4ODI1DQor6KCmID4gbMO6OyAjODgyNg0KK+igpyA+IGTDuTsgIzg4MjcNCivooKggPiB4acSBbzsgIzg4MjgNCivooKkgPiB6aMWrOyAjODgyOQ0KK+igqiA+IGzDs25nOyAjODgyQQ0KK+igqyA+IGzDrDsgIzg4MkINCivooKwgPiBsw7NuZzsgIzg4MkMNCivooK0gPiBmxJNuZzsgIzg4MkQNCivooK4gPiB5xJM7ICM4ODJFDQor6KCvID4gYsOobmc7ICM4ODJGDQor6KCwID4gc2jDoG5nOyAjODgzMA0KK+igsSA+IGfFrTsgIzg4MzENCivooLIgPiBqdcSBbjsgIzg4MzINCivooLMgPiB5xKtuZzsgIzg4MzMNCivooLUgPiB4xKs7ICM4ODM1DQor6KC2ID4gY8OhbjsgIzg4MzYNCivooLcgPiBxw7o7ICM4ODM3DQor6KC4ID4gcXXDoW47ICM4ODM4DQor6KC5ID4gZMO5OyAjODgzOQ0KK+iguiA+IGPDoW47ICM4ODNBDQor6KC7ID4gbcOhbjsgIzg4M0INCivooLwgPiBqdcOpOyAjODgzQw0KK+igvSA+IGppw6k7ICM4ODNEDQor6KC+ID4gemjDujsgIzg4M0UNCivooL8gPiB6aMOhOyAjODgzRg0KK+ihgCA+IHhpxJU7ICM4ODQwDQor6KGBID4gaHXEgW5nOyAjODg0MQ0KK+ihgiA+IG7DrHU7ICM4ODQyDQor6KGDID4gcMSTaTsgIzg4NDMNCivooYQgPiBux5w7ICM4ODQ0DQor6KGFID4geMOsbjsgIzg4NDUNCivooYYgPiB6aMOybmc7ICM4ODQ2DQor6KGHID4gbcOyOyAjODg0Nw0KK+ihiCA+IMOocjsgIzg4NDgNCivooYkgPiBrw6g7ICM4ODQ5DQor6KGKID4gbWnDqDsgIzg4NEENCivooYsgPiB4w6w7ICM4ODRCDQor6KGMID4geMOtbmc7ICM4ODRDDQor6KGNID4gecSDbjsgIzg4NEQNCivooY4gPiBrw6BuOyAjODg0RQ0KK+ihjyA+IHl1w6BuOyAjODg0Rg0KK+ihkSA+IGzDrW5nOyAjODg1MQ0KK+ihkiA+IHh1w6BuOyAjODg1Mg0KK+ihkyA+IHNow7k7ICM4ODUzDQor6KGUID4geGnDoW47ICM4ODU0DQor6KGVID4gdMOybmc7ICM4ODU1DQor6KGWID4gbMOybmc7ICM4ODU2DQor6KGXID4gamnEkzsgIzg4NTcNCivooZggPiB4acOhbjsgIzg4NTgNCivooZkgPiB5w6E7ICM4ODU5DQor6KGaID4gaMO6OyAjODg1QQ0KK+ihmyA+IHfDqGk7ICM4ODVCDQor6KGcID4gZMOgbzsgIzg4NUMNCivooZ0gPiBjaMWNbmc7ICM4ODVEDQor6KGeID4gd8OoaTsgIzg4NUUNCivooZ8gPiBkw6BvOyAjODg1Rg0KK+ihoCA+IHpoxatuOyAjODg2MA0KK+ihoSA+IGjDqW5nOyAjODg2MQ0KK+ihoiA+IHHDujsgIzg4NjINCivooaMgPiB5xKs7ICM4ODYzDQor6KGkID4gecSrJyAnesOsJyAncMOhbmc7ICM4ODY0DQor6KGlID4gYsWtOyAjODg2NQ0KK+ihpiA+IGfEg247ICM4ODY2DQor6KGnID4gecO6OyAjODg2Nw0KK+ihqCA+IGJpxINvOyAjODg2OA0KK+ihqSA+IGNow6A7ICM4ODY5DQor6KGqID4gecStOyAjODg2QQ0KK+ihqyA+IHNoxIFuOyAjODg2Qg0KK+ihrCA+IGNow6huOyAjODg2Qw0KK+ihrSA+IGbFqzsgIzg4NkQNCivooa4gPiBnxa1uOyAjODg2RQ0KK+ihryA+IGbEk247ICM4ODZGDQor6KGwID4gc2h1xIFpOyAjODg3MA0KK+ihsSA+IGppw6k7ICM4ODcxDQor6KGyID4gbsOgOyAjODg3Mg0KK+ihsyA+IHpoxY1uZzsgIzg4NzMNCivoobQgPiBkxINuOyAjODg3NA0KK+ihtSA+IHLDrDsgIzg4NzUNCivoobYgPiB6aMOybmc7ICM4ODc2DQor6KG3ID4gemjFjW5nOyAjODg3Nw0KK+ihuCA+IHhpw6g7ICM4ODc4DQor6KG5ID4gccOtOyAjODg3OQ0KK+ihuiA+IHhpw6k7ICM4ODdBDQor6KG7ID4gcsOhbjsgIzg4N0INCivoobwgPiB6aMSrOyAjODg3Qw0KK+ihvSA+IHLDqG47ICM4ODdEDQor6KG+ID4gccSrbjsgIzg4N0UNCivoob8gPiBqxKtuOyAjODg3Rg0KK+iigCA+IGrFq247ICM4ODgwDQor6KKBID4geXXDoW47ICM4ODgxDQor6KKCID4gbcOoaTsgIzg4ODINCivoooMgPiBjaMOgaTsgIzg4ODMNCivoooQgPiDEg287ICM4ODg0DQor6KKFID4gbmnEg287ICM4ODg1DQor6KKGID4gaMWraTsgIzg4ODYNCivooocgPiByw6FuOyAjODg4Nw0KK+iiiCA+IGppxIE7ICM4ODg4DQor6KKJID4gdMO6bzsgIzg4ODkNCivoooogPiBsxK1uZzsgIzg4OEENCivooosgPiBkw6BpOyAjODg4Qg0KK+iijCA+IGLDoG87ICM4ODhDDQor6KKNID4gcMOhbzsgIzg4OEQNCivooo4gPiB5w6BvOyAjODg4RQ0KK+iijyA+IHrDuW87ICM4ODhGDQor6KKQID4gYsOsOyAjODg5MA0KK+iikSA+IHNow6BvOyAjODg5MQ0KK+iikiA+IHTEg247ICM4ODkyDQor6KKTID4gasWtOyAjODg5Mw0KK+iilCA+IGjDqDsgIzg4OTQNCivoopUgPiBzaMO5OyAjODg5NQ0KK+iiliA+IHjDrHU7ICM4ODk2DQor6KKXID4gemjElW47ICM4ODk3DQor6KKYID4gecOtOyAjODg5OA0KK+iimSA+IHDDoDsgIzg4OTkNCivoopogPiBixY07ICM4ODlBDQor6KKbID4gZMSrOyAjODg5Qg0KK+iinCA+IHfDoDsgIzg4OUMNCivoop0gPiBmw7k7ICM4ODlEDQor6KKeID4gZ8WtbjsgIzg4OUUNCivoop8gPiB6aMOsOyAjODg5Rg0KK+iioCA+IHpow6w7ICM4OEEwDQor6KKhID4gcsOhbjsgIzg4QTENCivooqIgPiBww6BuOyAjODhBMg0KK+iioyA+IHnDrDsgIzg4QTMNCivooqQgPiBtw6BvOyAjODhBNA0KK+iipSA+IHR1bzsgIzg4QTUNCivooqYgPiBuw6A7ICM4OEE2DQor6KKnID4ga8WNdTsgIzg4QTcNCivooqggPiB4acOgbjsgIzg4QTgNCivooqkgPiBjaMSBbjsgIzg4QTkNCivooqogPiBxxas7ICM4OEFBDQor6KKrID4gYsOoaTsgIzg4QUINCivooqwgPiBnxa1uOyAjODhBQw0KK+iirSA+IHjDrTsgIzg4QUQNCivooq8gPiBiw7M7ICM4OEFGDQor6KKxID4gZsO6OyAjODhCMQ0KK+iisiA+IHnDrTsgIzg4QjINCivoorMgPiBjaMStOyAjODhCMw0KK+iitCA+IGvDuTsgIzg4QjQNCivoorUgPiByw6huOyAjODhCNQ0KK+iitiA+IGppw6BuZzsgIzg4QjYNCivoorcgPiBqacOhOyAjODhCNw0KK+iiuCA+IGPDum47ICM4OEI4DQor6KK5ID4gbcOyOyAjODhCOQ0KK+iiuiA+IGppw6k7ICM4OEJBDQor6KK7ID4gw6lyOyAjODhCQg0KK+iivCA+IGzDuW87ICM4OEJDDQor6KK9ID4gcsO6OyAjODhCRA0KK+iiviA+IHpoxas7ICM4OEJFDQor6KK/ID4gZ8WraTsgIzg4QkYNCivoo4AgPiB5xKtuOyAjODhDMA0KK+ijgSA+IGPDoWk7ICM4OEMxDQor6KOCID4gbGnDqDsgIzg4QzINCivoo4UgPiB6aHXEgW5nOyAjODhDNQ0KK+ijhiA+IGTEgW5nOyAjODhDNg0KK+ijiCA+IGvFq247ICM4OEM4DQor6KOJID4ga8OobjsgIzg4QzkNCivoo4ogPiBuacSDbzsgIzg4Q0ENCivoo4sgPiBzaMO5OyAjODhDQg0KK+ijjCA+IGppw6E7ICM4OENDDQor6KONID4ga8WtbjsgIzg4Q0QNCivoo44gPiBjaMOpbmc7ICM4OENFDQor6KOPID4gbMStOyAjODhDRg0KK+ijkCA+IGp1xIFuOyAjODhEMA0KK+ijkSA+IHNoxJNuOyAjODhEMQ0KK+ijkiA+IHDDs3U7ICM4OEQyDQor6KOTID4gZ8OpOyAjODhEMw0KK+ijlCA+IHnDrDsgIzg4RDQNCivoo5UgPiB5w7k7ICM4OEQ1DQor6KOWID4gemjElW47ICM4OEQ2DQor6KOXID4gbMOtdTsgIzg4RDcNCivoo5ggPiBxw611OyAjODhEOA0KK+ijmSA+IHHDum47ICM4OEQ5DQor6KOaID4gasOsOyAjODhEQQ0KK+ijmyA+IHnDrDsgIzg4REINCivoo5wgPiBixa07ICM4OERDDQor6KOdID4gemh1xIFuZzsgIzg4REQNCivoo54gPiBzaMO5aTsgIzg4REUNCivoo58gPiBzaMSBOyAjODhERg0KK+ijoCA+IHHDum47ICM4OEUwDQor6KOhID4gbMStOyAjODhFMQ0KK+ijoiA+IGxpw6FuOyAjODhFMg0KK+ijoyA+IGxpw6BuOyAjODhFMw0KK+ijpCA+IGvDuTsgIzg4RTQNCivoo6UgPiBqacSDbjsgIzg4RTUNCivoo6YgPiBmw7N1OyAjODhFNg0KK+ijpyA+IGNoxIFuOyAjODhFNw0KK+ijqCA+IGLDrDsgIzg4RTgNCivoo6kgPiBnxatuOyAjODhFOQ0KK+ijqiA+IHTDoW87ICM4OEVBDQor6KOrID4geXXDoG47ICM4OEVCDQor6KOsID4gbMOtbmc7ICM4OEVDDQor6KOtID4gY2jErTsgIzg4RUQNCivoo64gPiBjaMSBbmc7ICM4OEVFDQor6KOvID4gY2jDs3U7ICM4OEVGDQor6KOwID4gZMO6bzsgIzg4RjANCivoo7EgPiBiacSDbzsgIzg4RjENCivoo7IgPiBsacSDbmc7ICM4OEYyDQor6KOzID4gY2jDoW5nOyAjODhGMw0KK+ijtCA+IHDDqWk7ICM4OEY0DQor6KO1ID4gcMOpaTsgIzg4RjUNCivoo7YgPiBmxJNpOyAjODhGNg0KK+ijtyA+IHl1xIFuOyAjODhGNw0KK+ijuCA+IGzFrW87ICM4OEY4DQor6KO5ID4gZ8WtbzsgIzg4RjkNCivoo7ogPiB5xINuOyAjODhGQQ0KK+ijuyA+IGTFrTsgIzg4RkINCivoo7wgPiB4w607ICM4OEZDDQor6KO9ID4gemjDrDsgIzg4RkQNCivoo74gPiBqxas7ICM4OEZFDQor6KO/ID4gccStOyAjODhGRg0KK+ikgCA+IGrDrDsgIzg5MDANCivopIEgPiB6aMOtOyAjODkwMQ0KK+ikgiA+IGd1w6A7ICM4OTAyDQor6KSDID4ga8OobjsgIzg5MDMNCivopIUgPiB0w6w7ICM4OTA1DQor6KSGID4gdMOtOyAjODkwNg0KK+ikhyA+IGbDuTsgIzg5MDcNCivopIggPiBjaMOzbmc7ICM4OTA4DQor6KSJID4geGnEkzsgIzg5MDkNCivopIogPiBiacSDbjsgIzg5MEENCivopIsgPiBkacOpOyAjODkwQg0KK+ikjCA+IGvFq247ICM4OTBDDQor6KSNID4gZHXEgW47ICM4OTBEDQor6KSOID4geMOsdTsgIzg5MEUNCivopI8gPiB4w6x1OyAjODkwRg0KK+ikkCA+IGjDqTsgIzg5MTANCivopJEgPiB5dcOgbjsgIzg5MTENCivopJIgPiBixIFvOyAjODkxMg0KK+ikkyA+IGLEg287ICM4OTEzDQor6KSUID4gZsO5OyAjODkxNA0KK+iklSA+IHnDujsgIzg5MTUNCivopJYgPiB0dcOgbjsgIzg5MTYNCivopJcgPiB5xINuOyAjODkxNw0KK+ikmCA+IGjFq2k7ICM4OTE4DQor6KSZID4gYsOoaTsgIzg5MTkNCivopJogPiBjaMWtOyAjODkxQQ0KK+ikmyA+IGzHmjsgIzg5MUINCivopJ4gPiB5xa1uOyAjODkxRQ0KK+iknyA+IGTDoTsgIzg5MUYNCivopKAgPiBnxY11OyAjODkyMA0KK+ikoSA+IGTEgTsgIzg5MjENCivopKIgPiBodcOhaTsgIzg5MjINCivopKMgPiByw7NuZzsgIzg5MjMNCivopKQgPiB5dcOgbjsgIzg5MjQNCivopKUgPiByw7k7ICM4OTI1DQor6KSmID4gbsOgaTsgIzg5MjYNCivopKcgPiBqxK1vbmc7ICM4OTI3DQor6KSoID4gc8WtbzsgIzg5MjgNCivopKkgPiBixIFuOyAjODkyOQ0KK+ikqiA+IHTDuW47ICM4OTJBDQor6KSrID4gY2jErTsgIzg5MkINCivopKwgPiBzxINuZzsgIzg5MkMNCivopK0gPiBuacSDbzsgIzg5MkQNCivopK4gPiB5xKtuZzsgIzg5MkUNCivopK8gPiBqacOoOyAjODkyRg0KK+iksCA+IHFpxIFuOyAjODkzMA0KK+iksSA+IGh1w6FpOyAjODkzMQ0KK+iksiA+IGvDuTsgIzg5MzINCivopLMgPiBsacOhbjsgIzg5MzMNCivopLQgPiBixINvOyAjODkzNA0KK+iktSA+IGzDrTsgIzg5MzUNCivopLYgPiB6aMOpOyAjODkzNg0KK+iktyA+IHNoxKs7ICM4OTM3DQor6KS4ID4gbMeaOyAjODkzOA0KK+ikuSA+IHnDrDsgIzg5MzkNCivopLogPiBkacOpOyAjODkzQQ0KK+ikuyA+IHhpw6g7ICM4OTNCDQor6KS8ID4geGnEgW47ICM4OTNDDQor6KS9ID4gd8OoaTsgIzg5M0QNCivopL4gPiBiacSDbzsgIzg5M0UNCivopL8gPiBjw6FvOyAjODkzRg0KK+ilgCA+IGrEqzsgIzg5NDANCivopYEgPiBqacSDbmc7ICM4OTQxDQor6KWCID4gc8STbjsgIzg5NDINCivopYMgPiBixIFvOyAjODk0Mw0KK+ilhCA+IHhpxIFuZzsgIzg5NDQNCivopYYgPiBww7o7ICM4OTQ2DQor6KWHID4gamnEg247ICM4OTQ3DQor6KWIID4gemh1w6BuOyAjODk0OA0KK+iliSA+IGppw6BuOyAjODk0OQ0KK+iliiA+IHrDuWk7ICM4OTRBDQor6KWLID4gasOtOyAjODk0Qg0KK+iljCA+IGTEgW47ICM4OTRDDQor6KWNID4gesOhOyAjODk0RA0KK+iljiA+IGbDoW47ICM4OTRFDQor6KWPID4gYsOzOyAjODk0Rg0KK+ilkCA+IHhpw6BuZzsgIzg5NTANCivopZEgPiB4w61uOyAjODk1MQ0KK+ilkiA+IGJpw6k7ICM4OTUyDQor6KWTID4gcsOhbzsgIzg5NTMNCivopZQgPiBtxINuOyAjODk1NA0KK+illSA+IGzDoW47ICM4OTU1DQor6KWWID4gxINvOyAjODk1Ng0KK+illyA+IGTDum87ICM4OTU3DQor6KWYID4gZ8O5aTsgIzg5NTgNCivopZkgPiBjw6BvOyAjODk1OQ0KK+ilmiA+IHPDuWk7ICM4OTVBDQor6KWbID4gbsOzbmc7ICM4OTVCDQor6KWcID4gY2jEgW47ICM4OTVDDQor6KWdID4gbGnDoG47ICM4OTVEDQor6KWeID4gYsOsOyAjODk1RQ0KK+ilnyA+IGrEq247ICM4OTVGDQor6KWgID4gZMSBbmc7ICM4OTYwDQor6KWhID4gc2jDujsgIzg5NjENCivopaIgPiB0xINuOyAjODk2Mg0KK+iloyA+IGLDrDsgIzg5NjMNCivopaQgPiBsw6FuOyAjODk2NA0KK+ilpSA+IHDDujsgIzg5NjUNCivopaYgPiByw7o7ICM4OTY2DQor6KWnID4gemjErTsgIzg5NjcNCivopakgPiBzaMWtOyAjODk2OQ0KK+ilqiA+IHfDoDsgIzg5NkENCivopasgPiBzaMOsOyAjODk2Qg0KK+ilrCA+IGLEg2k7ICM4OTZDDQor6KWtID4geGnDqTsgIzg5NkQNCivopa4gPiBiw7M7ICM4OTZFDQor6KWvID4gY2jDqG47ICM4OTZGDQor6KWwID4gbMOgaTsgIzg5NzANCivopbEgPiBsw7NuZzsgIzg5NzENCivopbIgPiB4w607ICM4OTcyDQor6KWzID4geGnEgW47ICM4OTczDQor6KW0ID4gbMOhbjsgIzg5NzQNCivopbUgPiB6aMOpOyAjODk3NQ0KK+iltiA+IGTDoGk7ICM4OTc2DQor6KW4ID4gesOgbjsgIzg5NzgNCivopbkgPiBzaMSrOyAjODk3OQ0KK+iluiA+IGppxINuOyAjODk3QQ0KK+iluyA+IHDDoG47ICM4OTdCDQor6KW8ID4gecOsOyAjODk3Qw0KK+ilviA+IHnDoDsgIzg5N0UNCivopb8gPiB4xKs7ICM4OTdGDQor6KaAID4geMSrOyAjODk4MA0KK+imgSA+IHnDoG87ICM4OTgxDQor6KaCID4gZsSVbmc7ICM4OTgyDQor6KaDID4gdMOhbjsgIzg5ODMNCivopoUgPiBiacOgbzsgIzg5ODUNCivopoYgPiBmw7k7ICM4OTg2DQor6KaHID4gYsOgOyAjODk4Nw0KK+imiCA+IGjDqTsgIzg5ODgNCivopokgPiBqxKs7ICM4OTg5DQor6KaKID4gasSrOyAjODk4QQ0KK+imiyA+IGppw6BuOyAjODk4Qg0KK+imjCA+IGd1xIFuOyAjODk4Qw0KK+imjSA+IGJpw6BuOyAjODk4RA0KK+imjiA+IHnDoG47ICM4OThFDQor6KaPID4gZ8WraTsgIzg5OEYNCivoppAgPiBqdcOpOyAjODk5MA0KK+imkSA+IHBpxINuOyAjODk5MQ0KK+imkiA+IG3DoW87ICM4OTkyDQor6KaTID4gbcOsOyAjODk5Mw0KK+imlCA+IG3DrDsgIzg5OTQNCivoppUgPiBtacOoOyAjODk5NQ0KK+imliA+IHNow6w7ICM4OTk2DQor6KaXID4gc8SrOyAjODk5Nw0KK+immCA+IHpoxIFuOyAjODk5OA0KK+immSA+IGzDum87ICM4OTk5DQor6KaaID4ganXDqTsgIzg5OUENCivoppsgPiBtw6w7ICM4OTlCDQor6KacID4gdGnDoG87ICM4OTlDDQor6KadID4gbGnDoW47ICM4OTlEDQor6KaeID4gecOgbzsgIzg5OUUNCivopp8gPiB6aMOsOyAjODk5Rg0KK+imoCA+IGrFq247ICM4OUEwDQor6KahID4geMOtOyAjODlBMQ0KK+imoiA+IHNoxINuOyAjODlBMg0KK+imoyA+IHfEk2k7ICM4OUEzDQor6KakID4geMOsOyAjODlBNA0KK+impSA+IHRpxINuOyAjODlBNQ0KK+impiA+IHnDujsgIzg5QTYNCivopqcgPiBsxINuOyAjODlBNw0KK+imqCA+IMOoOyAjODlBOA0KK+imqSA+IGTFrTsgIzg5QTkNCivopqogPiBxxKtuOyAjODlBQQ0KK+imqyA+IHDEg25nOyAjODlBQg0KK+imrCA+IGrDrDsgIzg5QUMNCivopq0gPiBtw61uZzsgIzg5QUQNCivopq4gPiB5w61uZzsgIzg5QUUNCivopq8gPiBnw7J1OyAjODlBRg0KK+imsCA+IHHDuTsgIzg5QjANCivoprEgPiB6aMOgbjsgIzg5QjENCivoprIgPiBqxK1uOyAjODlCMg0KK+imsyA+IGd1xIFuOyAjODlCMw0KK+imtCA+IGTEk25nOyAjODlCNA0KK+imtSA+IGppw6BuOyAjODlCNQ0KK+imtiA+IGzDum87ICM4OUI2DQor6Ka3ID4gccO5OyAjODlCNw0KK+imuCA+IGppw6BuOyAjODlCOA0KK+imuSA+IHfDqWk7ICM4OUI5DQor6Ka6ID4ganXDqTsgIzg5QkENCivoprsgPiBxw7k7ICM4OUJCDQor6Ka8ID4gbMO6bzsgIzg5QkMNCivopr0gPiBsxINuOyAjODlCRA0KK+imviA+IHNoxJVuOyAjODlCRQ0KK+imvyA+IGTDrTsgIzg5QkYNCivop4AgPiBndcSBbjsgIzg5QzANCivop4EgPiBqacOgbjsgIzg5QzENCivop4IgPiBndcSBbjsgIzg5QzINCivop4MgPiB5w6BuOyAjODlDMw0KK+inhCA+IGfFq2k7ICM4OUM0DQor6KeFID4gbcOsOyAjODlDNQ0KK+inhiA+IHNow6w7ICM4OUM2DQor6KeHID4gemjEgW47ICM4OUM3DQor6KeIID4gbMSDbjsgIzg5QzgNCivop4kgPiBqdcOpOyAjODlDOQ0KK+iniiA+IGrDrDsgIzg5Q0ENCivop4sgPiB4w607ICM4OUNCDQor6KeMID4gZMOtOyAjODlDQw0KK+injSA+IHRpxINuOyAjODlDRA0KK+injiA+IHnDujsgIzg5Q0UNCivop48gPiBnw7J1OyAjODlDRg0KK+inkCA+IGrErW47ICM4OUQwDQor6KeRID4gccO5OyAjODlEMQ0KK+inkiA+IGppxINvOyAjODlEMg0KK+inkyA+IGrEq3U7ICM4OUQzDQor6KeUID4gasSrbjsgIzg5RDQNCivop5UgPiBjxas7ICM4OUQ1DQor6KeWID4ganXDqTsgIzg5RDYNCivop5cgPiB6aMOsOyAjODlENw0KK+inmCA+IGNow6BvOyAjODlEOA0KK+inmSA+IGrDrTsgIzg5RDkNCivop5ogPiBnxas7ICM4OURBDQor6KebID4gZMOgbjsgIzg5REINCivop5wgPiB6xa1pOyAjODlEQw0KK+innSA+IGTErTsgIzg5REQNCivop54gPiBzaMSBbmc7ICM4OURFDQor6KefID4gaHXDoDsgIzg5REYNCivop6AgPiBxdcOhbjsgIzg5RTANCivop6EgPiBnw6k7ICM4OUUxDQor6KeiID4gY2jDrDsgIzg5RTINCivop6MgPiBqacSVOyAjODlFMw0KK+inpCA+IGfFrWk7ICM4OUU0DQor6KelID4gZ8WNbmc7ICM4OUU1DQor6KemID4gaMOzbmc7ICM4OUU2DQor6KenID4gamnElTsgIzg5RTcNCivop6ggPiBow7luOyAjODlFOA0KK+inqSA+IHHDrXU7ICM4OUU5DQor6KeqID4geMSrbmc7ICM4OUVBDQor6KerID4gc8O5OyAjODlFQg0KK+inrCA+IG7DrTsgIzg5RUMNCivop60gPiBqxKs7ICM4OUVEDQor6KeuID4gbMO5OyAjODlFRQ0KK+inryA+IHpow6w7ICM4OUVGDQor6KewID4gemjEgTsgIzg5RjANCivop7EgPiBiw6w7ICM4OUYxDQor6KeyID4geMSrbmc7ICM4OUYyDQor6KezID4gaMO6OyAjODlGMw0KK+intCA+IHNoxIFuZzsgIzg5RjQNCivop7UgPiBnxY1uZzsgIzg5RjUNCivop7YgPiB6aMOsOyAjODlGNg0KK+intyA+IHh1w6k7ICM4OUY3DQor6Ke4ID4gY2jDuTsgIzg5RjgNCivop7kgPiB4xKs7ICM4OUY5DQor6Ke6ID4gecOtOyAjODlGQQ0KK+inuyA+IGzDuTsgIzg5RkINCivop7wgPiBqdcOpOyAjODlGQw0KK+invSA+IHjEqzsgIzg5RkQNCivop74gPiB5w6BuOyAjODlGRQ0KK+invyA+IHjEqzsgIzg5RkYNCivoqIAgPiB5w6FuOyAjOEEwMA0KK+iogSA+IHnDoW4nICd6w6wnICdww6FuZzsgIzhBMDENCivoqIIgPiBkw6xuZzsgIzhBMDINCivoqIMgPiBmw7k7ICM4QTAzDQor6KiEID4gccOtdTsgIzhBMDQNCivoqIUgPiBxw611OyAjOEEwNQ0KK+iohiA+IGppw6BvOyAjOEEwNg0KK+iohyA+IGjFjW5nOyAjOEEwNw0KK+ioiCA+IGrDrDsgIzhBMDgNCivoqIkgPiBmw6BuOyAjOEEwOQ0KK+ioiiA+IHjDuW47ICM4QTBBDQor6KiLID4gZGnDoG87ICM4QTBCDQor6KiMID4gaMOzbmc7ICM4QTBDDQor6KiNID4gY2jDoDsgIzhBMEQNCivoqI4gPiB0xINvOyAjOEEwRQ0KK+iojyA+IHjFqzsgIzhBMEYNCivoqJAgPiBqacOpOyAjOEExMA0KK+iokSA+IHnDrTsgIzhBMTENCivoqJIgPiByw6huOyAjOEExMg0KK+iokyA+IHjDuW47ICM4QTEzDQor6KiUID4gecOtbjsgIzhBMTQNCivoqJUgPiBzaMOgbjsgIzhBMTUNCivoqJYgPiBxw6w7ICM4QTE2DQor6KiXID4gdMWrbzsgIzhBMTcNCivoqJggPiBqw6w7ICM4QTE4DQor6KiZID4geMO5bjsgIzhBMTkNCivoqJogPiB5w61uOyAjOEExQQ0KK+iomyA+IMOpOyAjOEExQg0KK+ionCA+IGbEk247ICM4QTFDDQor6KidID4gecOgOyAjOEExRA0KK+ioniA+IHnEgW87ICM4QTFFDQor6KifID4gc8Oybmc7ICM4QTFGDQor6KigID4gc2jElW47ICM4QTIwDQor6KihID4gecOtbjsgIzhBMjENCivoqKIgPiB4xKtuOyAjOEEyMg0KK+iooyA+IGp1w6k7ICM4QTIzDQor6KikID4geGnDoW87ICM4QTI0DQor6KilID4gbsOoOyAjOEEyNQ0KK+iopiA+IGNow6luOyAjOEEyNg0KK+iopyA+IHnDs3U7ICM4QTI3DQor6KioID4gemjErTsgIzhBMjgNCivoqKkgPiB4xKtvbmc7ICM4QTI5DQor6KiqID4gZsSDbmc7ICM4QTJBDQor6KirID4geMOsbjsgIzhBMkINCivoqKwgPiBjaMSBbzsgIzhBMkMNCivoqK0gPiBzaMOoOyAjOEEyRA0KK+ioriA+IHhpxIFuOyAjOEEyRQ0KK+ioryA+IHNoxIM7ICM4QTJGDQor6KiwID4gdMO6bjsgIzhBMzANCivoqLEgPiB4xa07ICM4QTMxDQor6KiyID4gecOsOyAjOEEzMg0KK+iosyA+IHnDrDsgIzhBMzMNCivoqLQgPiBzw7k7ICM4QTM0DQor6Ki1ID4gY2jEqzsgIzhBMzUNCivoqLYgPiBoxJM7ICM4QTM2DQor6Ki3ID4gc2jEk247ICM4QTM3DQor6Ki4ID4gaMOpOyAjOEEzOA0KK+iouSA+IHjDuTsgIzhBMzkNCivoqLogPiB6aMSVbjsgIzhBM0ENCivoqLsgPiB6aMO5OyAjOEEzQg0KK+iovCA+IHpow6huZzsgIzhBM0MNCivoqL0gPiBnw7J1OyAjOEEzRA0KK+ioviA+IHrErTsgIzhBM0UNCivoqL8gPiB6xK07ICM4QTNGDQor6KmAID4gemjEgW47ICM4QTQwDQor6KmBID4gZ8WtOyAjOEE0MQ0KK+ipgiA+IGbDuTsgIzhBNDINCivoqYMgPiBxdcSDbjsgIzhBNDMNCivoqYQgPiBkacOpOyAjOEE0NA0KK+iphSA+IGzDrW5nOyAjOEE0NQ0KK+iphiA+IGTErTsgIzhBNDYNCivoqYcgPiB5w6BuZzsgIzhBNDcNCivoqYggPiBsw6w7ICM4QTQ4DQor6KmJID4gbsOhbzsgIzhBNDkNCivoqYogPiBww6BuOyAjOEE0QQ0KK+ipiyA+IHpow7J1OyAjOEE0Qg0KK+ipjCA+IGfDoG47ICM4QTRDDQor6KmNID4gecOsOyAjOEE0RA0KK+ipjiA+IGrDuTsgIzhBNEUNCivoqY8gPiDDoG87ICM4QTRGDQor6KmQID4gemjDoDsgIzhBNTANCivoqZEgPiB0w7pvOyAjOEE1MQ0KK+ipkiA+IHnDrTsgIzhBNTINCivoqZMgPiBxxa07ICM4QTUzDQor6KmUID4gemjDoG87ICM4QTU0DQor6KmVID4gcMOtbmc7ICM4QTU1DQor6KmWID4gYsOsOyAjOEE1Ng0KK+iplyA+IHjDrG9uZzsgIzhBNTcNCivoqZggPiBxw7k7ICM4QTU4DQor6KmZID4gYsOhOyAjOEE1OQ0KK+ipmiA+IGTDoTsgIzhBNUENCivoqZsgPiB6xa07ICM4QTVCDQor6KmcID4gdMSBbzsgIzhBNUMNCivoqZ0gPiB6aMWtOyAjOEE1RA0KK+ipniA+IGPDrTsgIzhBNUUNCivoqZ8gPiB6aMOpOyAjOEE1Rg0KK+ipoCA+IHnFj25nOyAjOEE2MA0KK+ipoSA+IHjFrTsgIzhBNjENCivoqaIgPiB4w7puOyAjOEE2Mg0KK+ipoyA+IHnDrDsgIzhBNjMNCivoqaQgPiBodcSDbmc7ICM4QTY0DQor6KmlID4gaMOpOyAjOEE2NQ0KK+ippiA+IHNow6w7ICM4QTY2DQor6KmnID4gY2jDoTsgIzhBNjcNCivoqaggPiBqacSBbzsgIzhBNjgNCivoqakgPiBzaMSrOyAjOEE2OQ0KK+ipqiA+IGjElW47ICM4QTZBDQor6KmrID4gY2jDoDsgIzhBNkINCivoqawgPiBnw7J1OyAjOEE2Qw0KK+iprSA+IGfFrWk7ICM4QTZEDQor6KmuID4gcXXDoW47ICM4QTZFDQor6KmvID4gaMO5aTsgIzhBNkYNCivoqbAgPiBqacOpOyAjOEE3MA0KK+ipsSA+IGh1w6A7ICM4QTcxDQor6KmyID4gZ8SBaTsgIzhBNzINCivoqbMgPiB4acOhbmc7ICM4QTczDQor6Km0ID4gd8STaTsgIzhBNzQNCivoqbUgPiBzaMSTbjsgIzhBNzUNCivoqbYgPiBjaMOzdTsgIzhBNzYNCivoqbcgPiB0w7NuZzsgIzhBNzcNCivoqbggPiBtw607ICM4QTc4DQor6Km5ID4gemjEgW47ICM4QTc5DQor6Km6ID4gbcOsbmc7ICM4QTdBDQor6Km7ID4gw6g7ICM4QTdCDQor6Km8ID4gaMWraTsgIzhBN0MNCivoqb0gPiB5w6FuOyAjOEE3RA0KK+ipviA+IHjEq29uZzsgIzhBN0UNCivoqb8gPiBndcOgOyAjOEE3Rg0KK+iqgCA+IMOocjsgIzhBODANCivoqoEgPiBixJVuZzsgIzhBODENCivoqoIgPiB0acSDbzsgIzhBODINCivoqoMgPiBjaMStOyAjOEE4Mw0KK+iqhCA+IGzElWk7ICM4QTg0DQor6KqFID4gemjFqzsgIzhBODUNCivoqoYgPiBrdcSBbmc7ICM4QTg2DQor6KqHID4ga3XEgTsgIzhBODcNCivoqoggPiB3w7o7ICM4QTg4DQor6KqJID4gecO5OyAjOEE4OQ0KK+iqiiA+IHTDqW5nOyAjOEE4QQ0KK+iqiyA+IGrDrDsgIzhBOEINCivoqowgPiB6aMOsOyAjOEE4Qw0KK+iqjSA+IHLDqG47ICM4QThEDQor6KqOID4gc8O5OyAjOEE4RQ0KK+iqjyA+IGzEg25nOyAjOEE4Rg0KK+iqkCA+IMOpOyAjOEE5MA0KK+iqkSA+IGt1w6FuZzsgIzhBOTENCivoqpIgPiDDqDsgIzhBOTINCivoqpMgPiBzaMOsOyAjOEE5Mw0KK+iqlCA+IHTErW5nOyAjOEE5NA0KK+iqlSA+IGTDoG47ICM4QTk1DQor6KqWID4gYsOzOyAjOEE5Ng0KK+iqlyA+IGNow6FuOyAjOEE5Nw0KK+iqmCA+IHnDsnU7ICM4QTk4DQor6KqZID4gaMOpbmc7ICM4QTk5DQor6KqaID4gcWnDoG87ICM4QTlBDQor6KqbID4gccSrbjsgIzhBOUINCivoqpwgPiBzaHXDoDsgIzhBOUMNCivoqp0gPiDEgW47ICM4QTlEDQor6KqeID4gecWtOyAjOEE5RQ0KK+iqnyA+IHhpw6BvOyAjOEE5Rg0KK+iqoCA+IGNow6luZzsgIzhBQTANCivoqqEgPiBqacOoOyAjOEFBMQ0KK+iqoiA+IHhpw6BuOyAjOEFBMg0KK+iqoyA+IHfDujsgIzhBQTMNCivoqqQgPiB3w7k7ICM4QUE0DQor6KqlID4gZ8OgbzsgIzhBQTUNCivoqqYgPiBzw7JuZzsgIzhBQTYNCivoqqcgPiBwxa07ICM4QUE3DQor6KqoID4gaMO5aTsgIzhBQTgNCivoqqkgPiBqw6xuZzsgIzhBQTkNCivoqqogPiBzaMWrbzsgIzhBQUENCivoqqsgPiB6aMOobjsgIzhBQUINCivoqqwgPiBzaMWrbzsgIzhBQUMNCivoqq0gPiBkw7o7ICM4QUFEDQor6KqvID4gY2jDoG5nOyAjOEFBRg0KK+iqsCA+IHNow7ppOyAjOEFCMA0KK+iqsSA+IGppw6k7ICM4QUIxDQor6KqyID4ga8OoOyAjOEFCMg0KK+iqsyA+IHHFqzsgIzhBQjMNCivoqrQgPiBjw7NuZzsgIzhBQjQNCivoqrUgPiB4acOhbzsgIzhBQjUNCivoqrYgPiBzw7lpOyAjOEFCNg0KK+iqtyA+IHfEg25nOyAjOEFCNw0KK+iquCA+IHh1w6FuOyAjOEFCOA0KK+iquSA+IGbElWk7ICM4QUI5DQor6Kq6ID4gY2jEqzsgIzhBQkENCivoqrsgPiB0w6A7ICM4QUJCDQor6Kq8ID4gecOtOyAjOEFCQw0KK+iqvSA+IG7DoTsgIzhBQkQNCivoqr4gPiB5w61uOyAjOEFCRQ0KK+iqvyA+IGRpw6BvOyAjOEFCRg0KK+irgCA+IHDErTsgIzhBQzANCivoq4EgPiBjaMO5bzsgIzhBQzENCivoq4IgPiBjaMSDbjsgIzhBQzINCivoq4MgPiBjaMSTbjsgIzhBQzMNCivoq4QgPiB6aMWrbjsgIzhBQzQNCivoq4UgPiBqxKs7ICM4QUM1DQor6KuGID4gccSrOyAjOEFDNg0KK+irhyA+IHTDoW47ICM4QUM3DQor6KuIID4gemjDuWk7ICM4QUM4DQor6KuJID4gd8SVaTsgIzhBQzkNCivoq4ogPiBqw7o7ICM4QUNBDQor6KuLID4gccStbmc7ICM4QUNCDQor6KuMID4gamnDoG47ICM4QUNDDQor6KuNID4gemjEk25nOyAjOEFDRA0KK+irjiA+IHrDqTsgIzhBQ0UNCivoq48gPiB6xY11OyAjOEFDRg0KK+irkCA+IHFpxIFuOyAjOEFEMA0KK+irkSA+IHpow7pvOyAjOEFEMQ0KK+irkiA+IGxpw6BuZzsgIzhBRDINCivoq5MgPiBqacOgbjsgIzhBRDMNCivoq5QgPiB6aMO5OyAjOEFENA0KK+irlSA+IGjDoW87ICM4QUQ1DQor6KuWID4gbMO5bjsgIzhBRDYNCivoq5cgPiBzaMSVbjsgIzhBRDcNCivoq5ggPiBiacSDbzsgIzhBRDgNCivoq5kgPiBodcOgaTsgIzhBRDkNCivoq5ogPiBwacOhbjsgIzhBREENCivoq5sgPiB5w7o7ICM4QURCDQor6KucID4gZGnDqTsgIzhBREMNCivoq50gPiB4xa07ICM4QUREDQor6KueID4gcGnDoW47ICM4QURFDQor6KufID4gc2jDrDsgIzhBREYNCivoq6AgPiB4dcSBbjsgIzhBRTANCivoq6EgPiBzaMOsOyAjOEFFMQ0KK+iroiA+IGjDuW47ICM4QUUyDQor6KujID4gaHXDoDsgIzhBRTMNCivoq6QgPiDDqDsgIzhBRTQNCivoq6UgPiB6aMOybmc7ICM4QUU1DQor6KumID4gZMOsOyAjOEFFNg0KK+irpyA+IHhpw6k7ICM4QUU3DQor6KuoID4gZsO6OyAjOEFFOA0KK+irqSA+IHDFrTsgIzhBRTkNCivoq6ogPiB0w61uZzsgIzhBRUENCivoq6sgPiBqacOgbjsgIzhBRUINCivoq6wgPiBxxK07ICM4QUVDDQor6KutID4gecO5OyAjOEFFRA0KK+irriA+IHrEqzsgIzhBRUUNCivoq68gPiBjaHXDoW47ICM4QUVGDQor6KuwID4geMStOyAjOEFGMA0KK+irsSA+IGjDuWk7ICM4QUYxDQor6KuyID4gecSrbjsgIzhBRjINCivoq7MgPiDEgW47ICM4QUYzDQor6Ku0ID4geGnDoW47ICM4QUY0DQor6Ku1ID4gbsOhbjsgIzhBRjUNCivoq7YgPiBjaMOpbjsgIzhBRjYNCivoq7cgPiBmxJNuZzsgIzhBRjcNCivoq7ggPiB6aMWrOyAjOEFGOA0KK+iruSA+IHnDoW5nOyAjOEFGOQ0KK+iruiA+IHnDoG47ICM4QUZBDQor6Ku7ID4gaMSTbmc7ICM4QUZCDQor6Ku8ID4geHXEgW47ICM4QUZDDQor6Ku9ID4gZ8OpOyAjOEFGRA0KK+irviA+IG7DuW87ICM4QUZFDQor6Ku/ID4gccOsOyAjOEFGRg0KK+isgCA+IG3Ds3U7ICM4QjAwDQor6KyBID4gecOoOyAjOEIwMQ0KK+isgiA+IHfDqGk7ICM4QjAyDQor6KyEID4gdMOpbmc7ICM4QjA0DQor6KyFID4gesWNdTsgIzhCMDUNCivorIYgPiBzaMOgbjsgIzhCMDYNCivorIcgPiBqacSDbjsgIzhCMDcNCivorIggPiBiw7M7ICM4QjA4DQor6KyJID4ga8O5MTsgIzhCMDkNCivorIogPiBodcSDbmc7ICM4QjBBDQor6KyLID4gaMO5bzsgIzhCMEINCivorIwgPiBnxJM7ICM4QjBDDQor6KyNID4gecOtbmc7ICM4QjBEDQor6KyOID4gbcOtOyAjOEIwRQ0KK+isjyA+IHhpxINvOyAjOEIwRg0KK+iskCA+IG3DrDsgIzhCMTANCivorJEgPiB4w6w7ICM4QjExDQor6KySID4gcWnEgW5nOyAjOEIxMg0KK+iskyA+IGNoxJNuOyAjOEIxMw0KK+islCA+IG7HnGU7ICM4QjE0DQor6KyVID4gdMOtOyAjOEIxNQ0KK+isliA+IHPDuTsgIzhCMTYNCivorJcgPiBiw6BuZzsgIzhCMTcNCivorJggPiBjaMOtOyAjOEIxOA0KK+ismSA+IHFpxIFuOyAjOEIxOQ0KK+ismiA+IHNow6w7ICM4QjFBDQor6KybID4gamnEg25nOyAjOEIxQg0KK+isnCA+IHl1w6BuOyAjOEIxQw0KK+isnSA+IHhpw6g7ICM4QjFEDQor6KyeID4geHXDqDsgIzhCMUUNCivorJ8gPiB0xIFvOyAjOEIxRg0KK+isoCA+IHnDoW87ICM4QjIwDQor6KyhID4gecOhbzsgIzhCMjENCivorKMgPiB5w7o7ICM4QjIzDQor6KykID4gYmnEgW87ICM4QjI0DQor6KylID4gY8Oybmc7ICM4QjI1DQor6KymID4gccOsbmc7ICM4QjI2DQor6KynID4gbMOtOyAjOEIyNw0KK+isqCA+IG3DszsgIzhCMjgNCivorKkgPiBtw7I7ICM4QjI5DQor6KyqID4gc2jEgW5nOyAjOEIyQQ0KK+isqyA+IHpow6k7ICM4QjJCDQor6KysID4gbcOsdTsgIzhCMkMNCivorK0gPiBqacSDbjsgIzhCMkQNCivorK4gPiB6w6k7ICM4QjJFDQor6KyvID4gamnEkzsgIzhCMkYNCivorLAgPiBsacOhbjsgIzhCMzANCivorLEgPiBsw7N1OyAjOEIzMQ0KK+issiA+IGPEgW47ICM4QjMyDQor6KyzID4gxY11OyAjOEIzMw0KK+istCA+IGd1w6BuOyAjOEIzNA0KK+istSA+IHjDrTsgIzhCMzUNCivorLYgPiB6aMO6bzsgIzhCMzYNCivorLcgPiDDoW87ICM4QjM3DQor6Ky4ID4gw6FvOyAjOEIzOA0KK+isuSA+IGrErW47ICM4QjM5DQor6Ky6ID4gemjDqTsgIzhCM0ENCivorLsgPiB5w607ICM4QjNCDQor6Ky8ID4gaMO5OyAjOEIzQw0KK+isvSA+IGppw6BuZzsgIzhCM0QNCivorL4gPiBtw6FuOyAjOEIzRQ0KK+isvyA+IGNow6FvOyAjOEIzRg0KK+itgCA+IGjDoG47ICM4QjQwDQor6K2BID4gaHXDoTsgIzhCNDENCivorYIgPiBjaMSDbjsgIzhCNDINCivorYMgPiB4xas7ICM4QjQzDQor6K2EID4gesSTbmc7ICM4QjQ0DQor6K2FID4gc8OoOyAjOEI0NQ0KK+ithiA+IHjEqzsgIzhCNDYNCivorYcgPiBzaMSTOyAjOEI0Nw0KK+itiCA+IGTDuWk7ICM4QjQ4DQor6K2JID4gemjDqG5nOyAjOEI0OQ0KK+itiiA+IG7DoW87ICM4QjRBDQor6K2LID4gbMOhbjsgIzhCNEINCivorYwgPiDDqTsgIzhCNEMNCivorY0gPiB5w6xuZzsgIzhCNEQNCivorY4gPiBqdcOpOyAjOEI0RQ0KK+itjyA+IGrEqzsgIzhCNEYNCivorZAgPiB6xa1uOyAjOEI1MA0KK+itkSA+IGppxINvOyAjOEI1MQ0KK+itkiA+IGLDsjsgIzhCNTINCivorZMgPiBow7lpOyAjOEI1Mw0KK+itlCA+IHpodcOgbjsgIzhCNTQNCivorZUgPiBtw7o7ICM4QjU1DQor6K2WID4gesOobjsgIzhCNTYNCivorZcgPiB6aMOhOyAjOEI1Nw0KK+itmCA+IHNow6w7ICM4QjU4DQor6K2ZID4gcWnDoW87ICM4QjU5DQor6K2aID4gdMOhbjsgIzhCNUENCivorZsgPiB6w6huOyAjOEI1Qg0KK+itnCA+IHDFrTsgIzhCNUMNCivorZ0gPiBzaMOpbmc7ICM4QjVEDQor6K2eID4geHXEgW47ICM4QjVFDQor6K2fID4gesOgbzsgIzhCNUYNCivoraAgPiB0xIFuOyAjOEI2MA0KK+itoSA+IGTEg25nOyAjOEI2MQ0KK+itoiA+IHPDuWk7ICM4QjYyDQor6K2jID4gcWnEgW47ICM4QjYzDQor6K2kID4gasSrOyAjOEI2NA0KK+itpSA+IGppw6BvOyAjOEI2NQ0KK+itpiA+IGrErW5nOyAjOEI2Ng0KK+itpyA+IGxpw6FuOyAjOEI2Nw0KK+itqCA+IG7Ds3U7ICM4QjY4DQor6K2pID4gecSrOyAjOEI2OQ0KK+itqiA+IMOgaTsgIzhCNkENCivorasgPiB6aMSBbjsgIzhCNkINCivorawgPiBww6w7ICM4QjZDDQor6K2tID4gaMWtaTsgIzhCNkQNCivora4gPiBodcOgOyAjOEI2RQ0KK+itryA+IHnDrDsgIzhCNkYNCivorbAgPiB5w6w7ICM4QjcwDQor6K2xID4gc2jDoG47ICM4QjcxDQor6K2yID4gcsOgbmc7ICM4QjcyDQor6K2zID4gbsOydTsgIzhCNzMNCivorbQgPiBxacSDbjsgIzhCNzQNCivorbUgPiB6aMO5aTsgIzhCNzUNCivorbYgPiB0w6A7ICM4Qjc2DQor6K23ID4gaMO5OyAjOEI3Nw0KK+ituCA+IHpoxY11OyAjOEI3OA0KK+ituSA+IGjDoW87ICM4Qjc5DQor6K26ID4gecOoOyAjOEI3QQ0KK+ituyA+IHnEq25nOyAjOEI3Qg0KK+itvCA+IGppw6BuOyAjOEI3Qw0KK+itvSA+IHnDuTsgIzhCN0QNCivorb4gPiBqacSDbjsgIzhCN0UNCivorb8gPiBow7lpOyAjOEI3Rg0KK+iugCA+IGTDujsgIzhCODANCivoroEgPiB6aMOpOyAjOEI4MQ0KK+iugiA+IHh1w6BuOyAjOEI4Mg0KK+iugyA+IHrDoG47ICM4QjgzDQor6K6EID4gbMSVaTsgIzhCODQNCivoroUgPiBzaMSVbjsgIzhCODUNCivoroYgPiB3w6hpOyAjOEI4Ng0KK+iuhyA+IGNoxINuOyAjOEI4Nw0KK+iuiCA+IGzDrDsgIzhCODgNCivorokgPiB5w607ICM4Qjg5DQor6K6KID4gYmnDoG47ICM4QjhBDQor6K6LID4gemjDqTsgIzhCOEINCivorowgPiB5w6BuOyAjOEI4Qw0KK+iujSA+IMOoOyAjOEI4RA0KK+iujiA+IGNow7N1OyAjOEI4RQ0KK+iujyA+IHfDqGk7ICM4QjhGDQor6K6QID4gY2jDs3U7ICM4QjkwDQor6K6RID4gecOgbzsgIzhCOTENCivorpIgPiBjaMOhbjsgIzhCOTINCivorpMgPiByw6BuZzsgIzhCOTMNCivorpQgPiB5xK1uOyAjOEI5NA0KK+iulSA+IGzDoW47ICM4Qjk1DQor6K6WID4gY2jDqG47ICM4Qjk2DQor6K6XID4gaMO5bzsgIzhCOTcNCivorpggPiB6aMOpOyAjOEI5OA0KK+iumSA+IGh1xIFuOyAjOEI5OQ0KK+iumiA+IHrDoG47ICM4QjlBDQor6K6bID4gecOsOyAjOEI5Qg0KK+iunCA+IGTEg25nOyAjOEI5Qw0KK+iunSA+IHpoxIFuOyAjOEI5RA0KK+iuniA+IHnDoG47ICM4QjlFDQor6K6fID4gZMO6OyAjOEI5Rg0KK+iuoCA+IHnDoW47ICM4QkEwDQor6K6hID4gasOsOyAjOEJBMQ0KK+iuoiA+IGTDrG5nOyAjOEJBMg0KK+iuoyA+IGbDuTsgIzhCQTMNCivorqQgPiByw6huOyAjOEJBNA0KK+iupSA+IGrEqzsgIzhCQTUNCivorqYgPiBqacOpOyAjOEJBNg0KK+iupyA+IGjDs25nOyAjOEJBNw0KK+iuqCA+IHTEg287ICM4QkE4DQor6K6pID4gcsOgbmc7ICM4QkE5DQor6K6qID4gc2jDoG47ICM4QkFBDQor6K6rID4gccOsOyAjOEJBQg0KK+iurCA+IHTFq287ICM4QkFDDQor6K6tID4geMO5bjsgIzhCQUQNCivorq4gPiB5w6w7ICM4QkFFDQor6K6vID4geMO5bjsgIzhCQUYNCivorrAgPiBqw6w7ICM4QkIwDQor6K6xID4gcsOobjsgIzhCQjENCivorrIgPiBqacSDbmc7ICM4QkIyDQor6K6zID4gaMO5aTsgIzhCQjMNCivorrQgPiDFjXU7ICM4QkI0DQor6K61ID4gasO5OyAjOEJCNQ0KK+iutiA+IHnDoDsgIzhCQjYNCivorrcgPiBuw6g7ICM4QkI3DQor6K64ID4geMWtOyAjOEJCOA0KK+iuuSA+IMOpOyAjOEJCOQ0KK+iuuiA+IGzDuW47ICM4QkJBDQor6K67ID4geMSrb25nOyAjOEJCQg0KK+iuvCA+IHPDsm5nOyAjOEJCQw0KK+iuvSA+IGbEk25nOyAjOEJCRA0KK+iuviA+IHNow6g7ICM4QkJFDQor6K6/ID4gZsSDbmc7ICM4QkJGDQor6K+AID4ganXDqTsgIzhCQzANCivor4EgPiB6aMOobmc7ICM4QkMxDQor6K+CID4gZ8WtOyAjOEJDMg0KK+ivgyA+IGjEkzsgIzhCQzMNCivor4QgPiBww61uZzsgIzhCQzQNCivor4UgPiB6xa07ICM4QkM1DQor6K+GID4gc2jDrDsgIzhCQzYNCivor4cgPiB4w6xvbmc7ICM4QkM3DQor6K+IID4gemjDoDsgIzhCQzgNCivor4kgPiBzw7k7ICM4QkM5DQor6K+KID4gemjElW47ICM4QkNBDQor6K+LID4gZMStOyAjOEJDQg0KK+ivjCA+IHrFjXU7ICM4QkNDDQor6K+NID4gY8OtOyAjOEJDRA0KK+ivjiA+IHHDuTsgIzhCQ0UNCivor48gPiB6aMOgbzsgIzhCQ0YNCivor5AgPiBiw6w7ICM4QkQwDQor6K+RID4gecOsOyAjOEJEMQ0KK+ivkiA+IHnDrTsgIzhCRDINCivor5MgPiBrdcSBbmc7ICM4QkQzDQor6K+UID4gbMSVaTsgIzhCRDQNCivor5UgPiBzaMOsOyAjOEJENQ0KK+ivliA+IGd1w6A7ICM4QkQ2DQor6K+XID4gc2jEqzsgIzhCRDcNCivor5ggPiBqacOpOyAjOEJEOA0KK+ivmSA+IGjFq2k7ICM4QkQ5DQor6K+aID4gY2jDqW5nOyAjOEJEQQ0KK+ivmyA+IHpoxas7ICM4QkRCDQor6K+cID4gc2jEk247ICM4QkRDDQor6K+dID4gaHXDoDsgIzhCREQNCivor54gPiBkw6BuOyAjOEJERQ0KK+ivnyA+IGfDsnU7ICM4QkRGDQor6K+gID4gcXXDoW47ICM4QkUwDQor6K+hID4gZ8WtaTsgIzhCRTENCivor6IgPiB4w7puOyAjOEJFMg0KK+ivoyA+IHnDrDsgIzhCRTMNCivor6QgPiB6aMSTbmc7ICM4QkU0DQor6K+lID4gZ8SBaTsgIzhCRTUNCivor6YgPiB4acOhbmc7ICM4QkU2DQor6K+nID4gY2jDoDsgIzhCRTcNCivor6ggPiBow7luOyAjOEJFOA0KK+ivqSA+IHjFrTsgIzhCRTkNCivor6ogPiB6aMWNdTsgIzhCRUENCivor6sgPiBqacOoOyAjOEJFQg0KK+ivrCA+IHfDujsgIzhCRUMNCivor60gPiB5xa07ICM4QkVEDQor6K+uID4gcWnDoG87ICM4QkVFDQor6K+vID4gd8O5OyAjOEJFRg0KK+ivsCA+IGfDoG87ICM4QkYwDQor6K+xID4gecOydTsgIzhCRjENCivor7IgPiBow7lpOyAjOEJGMg0KK+ivsyA+IGt1w6FuZzsgIzhCRjMNCivor7QgPiBzaMWrbzsgIzhCRjQNCivor7UgPiBzw7JuZzsgIzhCRjUNCivor7YgPiDEgWk7ICM4QkY2DQor6K+3ID4gccStbmc7ICM4QkY3DQor6K+4ID4gemjFqzsgIzhCRjgNCivor7kgPiB6xY11OyAjOEJGOQ0KK+ivuiA+IG7DuW87ICM4QkZBDQor6K+7ID4gZMO6OyAjOEJGQg0KK+ivvCA+IHpow7pvOyAjOEJGQw0KK+ivvSA+IGbElWk7ICM4QkZEDQor6K++ID4ga8OoOyAjOEJGRQ0KK+ivvyA+IHfElWk7ICM4QkZGDQor6LCAID4gecO6OyAjOEMwMA0KK+iwgSA+IHNow7ppOyAjOEMwMQ0KK+iwgiA+IHNoxJVuOyAjOEMwMg0KK+iwgyA+IGRpw6BvOyAjOEMwMw0KK+iwhCA+IGNoxINuOyAjOEMwNA0KK+iwhSA+IGxpw6BuZzsgIzhDMDUNCivosIYgPiB6aMWrbjsgIzhDMDYNCivosIcgPiBzw7lpOyAjOEMwNw0KK+iwiCA+IHTDoW47ICM4QzA4DQor6LCJID4gc2jElW47ICM4QzA5DQor6LCKID4gecOtOyAjOEMwQQ0KK+iwiyA+IG3Ds3U7ICM4QzBCDQor6LCMID4gY2jDqW47ICM4QzBDDQor6LCNID4gZGnDqTsgIzhDMEQNCivosI4gPiBodcSDbmc7ICM4QzBFDQor6LCPID4gamnDoG47ICM4QzBGDQor6LCQID4geGnDqTsgIzhDMTANCivosJEgPiBux5xlOyAjOEMxMQ0KK+iwkiA+IHnDqDsgIzhDMTINCivosJMgPiB3w6hpOyAjOEMxMw0KK+iwlCA+IMOoOyAjOEMxNA0KK+iwlSA+IHnDuTsgIzhDMTUNCivosJYgPiB4dcSBbjsgIzhDMTYNCivosJcgPiBjaMOhbjsgIzhDMTcNCivosJggPiB6xKs7ICM4QzE4DQor6LCZID4gxIFuOyAjOEMxOQ0KK+iwmiA+IHnDoG47ICM4QzFBDQor6LCbID4gZMOsOyAjOEMxQg0KK+iwnCA+IG3DrTsgIzhDMUMNCivosJ0gPiBwacOhbjsgIzhDMUQNCivosJ4gPiB4xa07ICM4QzFFDQor6LCfID4gbcOzOyAjOEMxRg0KK+iwoCA+IGTEg25nOyAjOEMyMA0KK+iwoSA+IHPDuTsgIzhDMjENCivosKIgPiB4acOoOyAjOEMyMg0KK+iwoyA+IHnDoW87ICM4QzIzDQor6LCkID4gYsOgbmc7ICM4QzI0DQor6LClID4gc2jDrDsgIzhDMjUNCivosKYgPiBxacSBbjsgIzhDMjYNCivosKcgPiBtw6w7ICM4QzI3DQor6LCoID4gasStbjsgIzhDMjgNCivosKkgPiBtw6FuOyAjOEMyOQ0KK+iwqiA+IHpow6k7ICM4QzJBDQor6LCrID4gamnEg247ICM4QzJCDQor6LCsID4gbcOsdTsgIzhDMkMNCivosK0gPiB0w6FuOyAjOEMyRA0KK+iwriA+IHrDqG47ICM4QzJFDQor6LCvID4gcWnDoW87ICM4QzJGDQor6LCwID4gbMOhbjsgIzhDMzANCivosLEgPiBwxa07ICM4QzMxDQor6LCyID4ganXDqTsgIzhDMzINCivosLMgPiB5w6BuOyAjOEMzMw0KK+iwtCA+IHFpxINuOyAjOEMzNA0KK+iwtSA+IHpoxIFuOyAjOEMzNQ0KK+iwtiA+IGNow6huOyAjOEMzNg0KK+iwtyA+IGfFrTsgIzhDMzcNCivosLggPiBxacSBbjsgIzhDMzgNCivosLkgPiBow7NuZzsgIzhDMzkNCivosLogPiB4acSBOyAjOEMzQQ0KK+iwuyA+IGp1w6k7ICM4QzNCDQor6LC8ID4gaMOzbmc7ICM4QzNDDQor6LC9ID4gaMSBbjsgIzhDM0QNCivosL4gPiBoxY1uZzsgIzhDM0UNCivosL8gPiB4xKs7ICM4QzNGDQor6LGAID4geMSrOyAjOEM0MA0KK+ixgSA+IGjDuW87ICM4QzQxDQor6LGCID4gbGnDoW87ICM4QzQyDQor6LGDID4gaMSDbjsgIzhDNDMNCivosYQgPiBkw7o7ICM4QzQ0DQor6LGFID4gbMOzbmc7ICM4QzQ1DQor6LGGID4gZMOydTsgIzhDNDYNCivosYcgPiBqacSBbmc7ICM4QzQ3DQor6LGIID4gccStOyAjOEM0OA0KK+ixiSA+IHNow6w7ICM4QzQ5DQor6LGKID4gbMStOyAjOEM0QQ0KK+ixiyA+IGTEk25nOyAjOEM0Qg0KK+ixjCA+IHfEgW47ICM4QzRDDQor6LGNID4gYsSrOyAjOEM0RA0KK+ixjiA+IHNow7k7ICM4QzRFDQor6LGPID4geGnDoG47ICM4QzRGDQor6LGQID4gZsSTbmc7ICM4QzUwDQor6LGRID4gemjDrDsgIzhDNTENCivosZIgPiB6aMOsOyAjOEM1Mg0KK+ixkyA+IHnDoG47ICM4QzUzDQor6LGUID4gecOgbjsgIzhDNTQNCivosZUgPiBzaMStOyAjOEM1NQ0KK+ixliA+IGNow7k7ICM4QzU2DQor6LGXID4gaMWraTsgIzhDNTcNCivosZggPiB0w7puOyAjOEM1OA0KK+ixmSA+IHnDrDsgIzhDNTkNCivosZogPiB0w7puOyAjOEM1QQ0KK+ixmyA+IHnDrDsgIzhDNUINCivosZwgPiBqacSBbjsgIzhDNUMNCivosZ0gPiBixIE7ICM4QzVEDQor6LGeID4gaMOydTsgIzhDNUUNCivosZ8gPiDDqDsgIzhDNUYNCivosaAgPiBjw7o7ICM4QzYwDQor6LGhID4geGnDoG5nOyAjOEM2MQ0KK+ixoiA+IGh1w6BuOyAjOEM2Mg0KK+ixoyA+IGppxIFuOyAjOEM2Mw0KK+ixpCA+IGvElW47ICM4QzY0DQor6LGlID4gZ8SBaTsgIzhDNjUNCivosaYgPiBxw7o7ICM4QzY2DQor6LGnID4gZsWrOyAjOEM2Nw0KK+ixqCA+IHjEqzsgIzhDNjgNCivosakgPiBixKtuOyAjOEM2OQ0KK+ixqiA+IGjDoW87ICM4QzZBDQor6LGrID4gecO5OyAjOEM2Qg0KK+ixrCA+IHpoxas7ICM4QzZDDQor6LGtID4gamnEgTsgIzhDNkQNCivosa8gPiB4xKs7ICM4QzZGDQor6LGwID4gYsOzOyAjOEM3MA0KK+ixsSA+IHfEk247ICM4QzcxDQor6LGyID4gaHXDoW47ICM4QzcyDQor6LGzID4gYsSrbjsgIzhDNzMNCivosbQgPiBkw607ICM4Qzc0DQor6LG1ID4gesWNbmc7ICM4Qzc1DQor6LG2ID4gZsOpbjsgIzhDNzYNCivosbcgPiB5w6w7ICM4Qzc3DQor6LG4ID4gemjDrDsgIzhDNzgNCivosbkgPiBiw6BvOyAjOEM3OQ0KK+ixuiA+IGNow6FpOyAjOEM3QQ0KK+ixuyA+IGjDoG47ICM4QzdCDQor6LG8ID4gcMOtOyAjOEM3Qw0KK+ixvSA+IG7DoDsgIzhDN0QNCivosb4gPiBwxKs7ICM4QzdFDQor6LG/ID4gZ8WPdTsgIzhDN0YNCivosoAgPiBuw6A7ICM4QzgwDQor6LKBID4gecOydTsgIzhDODENCivosoIgPiBkacSBbzsgIzhDODINCivosoMgPiBtw7I7ICM4QzgzDQor6LKEID4gc8OsOyAjOEM4NA0KK+iyhSA+IHjEq3U7ICM4Qzg1DQor6LKGID4gaHXDoW47ICM4Qzg2DQor6LKHID4ga8WrbjsgIzhDODcNCivosoggPiBow6k7ICM4Qzg4DQor6LKJID4gaMOpOyAjOEM4OQ0KK+iyiiA+IG3DsjsgIzhDOEENCivososgPiBow6BuOyAjOEM4Qg0KK+iyjCA+IG3DoG87ICM4QzhDDQor6LKNID4gbMOtOyAjOEM4RA0KK+iyjiA+IG7DrTsgIzhDOEUNCivoso8gPiBixK07ICM4QzhGDQor6LKQID4gecWtOyAjOEM5MA0KK+iykSA+IGppxIE7ICM4QzkxDQor6LKSID4gdHXEgW47ICM4QzkyDQor6LKTID4gbcSBbzsgIzhDOTMNCivospQgPiBww607ICM4Qzk0DQor6LKVID4geMSrOyAjOEM5NQ0KK+iyliA+IMOoOyAjOEM5Ng0KK+iylyA+IGrDuTsgIzhDOTcNCivospggPiBtw7I7ICM4Qzk4DQor6LKZID4gY2jFqzsgIzhDOTkNCivospogPiB0w6FuOyAjOEM5QQ0KK+iymyA+IGh1xIFuOyAjOEM5Qg0KK+iynCA+IGp1w6k7ICM4QzlDDQor6LKdID4gYsOoaTsgIzhDOUQNCivosp4gPiB6aMSTbjsgIzhDOUUNCivosp8gPiB5dcOhbjsgIzhDOUYNCivosqAgPiBmw7k7ICM4Q0EwDQor6LKhID4gY8OhaTsgIzhDQTENCivosqIgPiBnw7JuZzsgIzhDQTINCivosqMgPiB0w6g7ICM4Q0EzDQor6LKkID4gecOtOyAjOENBNA0KK+iypSA+IGjDoW5nOyAjOENBNQ0KK+iypiA+IHfDoG47ICM4Q0E2DQor6LKnID4gcMOtbjsgIzhDQTcNCivosqggPiBow7lvOyAjOENBOA0KK+iyqSA+IGbDoG47ICM4Q0E5DQor6LKqID4gdMSBbjsgIzhDQUENCivosqsgPiBndcOgbjsgIzhDQUINCivosqwgPiB6w6k7ICM4Q0FDDQor6LKtID4gemjDrTsgIzhDQUQNCivosq4gPiDDqHI7ICM4Q0FFDQor6LKvID4gemjFrTsgIzhDQUYNCivosrAgPiBzaMOsOyAjOENCMA0KK+iysSA+IGLDrDsgIzhDQjENCivosrIgPiB6xKs7ICM4Q0IyDQor6LKzID4gw6hyOyAjOENCMw0KK+iytCA+IGfDuWk7ICM4Q0I0DQor6LK1ID4gcGnEg247ICM4Q0I1DQor6LK2ID4gYmnEg247ICM4Q0I2DQor6LK3ID4gbcSDaTsgIzhDQjcNCivosrggPiBkw6BpOyAjOENCOA0KK+iyuSA+IHNow6huZzsgIzhDQjkNCivosrogPiBrdcOgbmc7ICM4Q0JBDQor6LK7ID4gZsOoaTsgIzhDQkINCivosrwgPiB0acSTOyAjOENCQw0KK+iyvSA+IHnDrTsgIzhDQkQNCivosr4gPiBjaMOtOyAjOENCRQ0KK+iyvyA+IG3DoG87ICM4Q0JGDQor6LOAID4gaMOoOyAjOENDMA0KK+izgSA+IGLDrDsgIzhDQzENCivos4IgPiBsw7k7ICM4Q0MyDQor6LODID4gcsOobjsgIzhDQzMNCivos4QgPiBow7lpOyAjOENDNA0KK+izhSA+IGfEgWk7ICM4Q0M1DQor6LOGID4gcGnDoW47ICM4Q0M2DQor6LOHID4gesSrOyAjOENDNw0KK+iziCA+IGppxIM7ICM4Q0M4DQor6LOJID4geMO5OyAjOENDOQ0KK+iziiA+IHrDqWk7ICM4Q0NBDQor6LOLID4gamnEg287ICM4Q0NCDQor6LOMID4gZ8OgaTsgIzhDQ0MNCivos40gPiB6xIFuZzsgIzhDQ0QNCivos44gPiBqacOgbjsgIzhDQ0UNCivos48gPiB5w6xuZzsgIzhDQ0YNCivos5AgPiB4w7luOyAjOENEMA0KK+izkSA+IHpow6huOyAjOENEMQ0KK+izkiA+IHNoxJM7ICM4Q0QyDQor6LOTID4gYsSrbjsgIzhDRDMNCivos5QgPiBixKtuOyAjOENENA0KK+izlSA+IHHDrXU7ICM4Q0Q1DQor6LOWID4gc2jEkzsgIzhDRDYNCivos5cgPiBjaHXDoG47ICM4Q0Q3DQor6LOYID4gesSBbmc7ICM4Q0Q4DQor6LOZID4gemjFjXU7ICM4Q0Q5DQor6LOaID4gbMOgaTsgIzhDREENCivos5sgPiB6w6BuOyAjOENEQg0KK+iznCA+IHPDrDsgIzhDREMNCivos50gPiBjaMSTbjsgIzhDREQNCivos54gPiBzaMSDbmc7ICM4Q0RFDQor6LOfID4gdGnEg247ICM4Q0RGDQor6LOgID4gcMOpaTsgIzhDRTANCivos6EgPiBnxJNuZzsgIzhDRTENCivos6IgPiB4acOhbjsgIzhDRTINCivos6MgPiBtw6BpOyAjOENFMw0KK+izpCA+IGppw6BuOyAjOENFNA0KK+izpSA+IHPDuWk7ICM4Q0U1DQor6LOmID4gZsO5OyAjOENFNg0KK+izpyA+IHTDoG47ICM4Q0U3DQor6LOoID4gY8Ozbmc7ICM4Q0U4DQor6LOpID4gY8Ozbmc7ICM4Q0U5DQor6LOqID4gemjDrTsgIzhDRUENCivos6sgPiBqxKs7ICM4Q0VCDQor6LOsID4gemjDoG5nOyAjOENFQw0KK+izrSA+IGTFrTsgIzhDRUQNCivos64gPiBqw6xuOyAjOENFRQ0KK+izryA+IHjEq29uZzsgIzhDRUYNCivos7AgPiBzaMWtbjsgIzhDRjANCivos7EgPiB5xa1uOyAjOENGMQ0KK+izsiA+IGLEg287ICM4Q0YyDQor6LOzID4gesSBaTsgIzhDRjMNCivos7QgPiBsw6BpOyAjOENGNA0KK+iztSA+IGbDqG5nOyAjOENGNQ0KK+iztiA+IGPDoG5nOyAjOENGNg0KK+iztyA+IGrEqzsgIzhDRjcNCivos7ggPiBzaMOobmc7ICM4Q0Y4DQor6LO5ID4gw6BpOyAjOENGOQ0KK+izuiA+IHpodcOgbjsgIzhDRkENCivos7sgPiBmw7k7ICM4Q0ZCDQor6LO8ID4gZ8OydTsgIzhDRkMNCivos70gPiBzw6BpOyAjOENGRA0KK+izviA+IHrDqTsgIzhDRkUNCivos78gPiBsacOhbzsgIzhDRkYNCivotIAgPiB3w6hpOyAjOEQwMA0KK+i0gSA+IGLDoGk7ICM4RDAxDQor6LSCID4gY2jElW47ICM4RDAyDQor6LSDID4gemh1w6BuOyAjOEQwMw0KK+i0hCA+IHpow6w7ICM4RDA0DQor6LSFID4gemjDuWk7ICM4RDA1DQor6LSGID4gYmnEgW87ICM4RDA2DQor6LSHID4gecWrbjsgIzhEMDcNCivotIggPiB6w6huZzsgIzhEMDgNCivotIkgPiB0xINuOyAjOEQwOQ0KK+i0iiA+IHrDoG47ICM4RDBBDQor6LSLID4gecOgbjsgIzhEMEINCivotI0gPiBzaMOgbjsgIzhEMEQNCivotI4gPiB3w6BuOyAjOEQwRQ0KK+i0jyA+IHnDrW5nOyAjOEQwRg0KK+i0kCA+IGrDrG47ICM4RDEwDQor6LSRID4gZ8SDbjsgIzhEMTENCivotJIgPiB4acOhbjsgIzhEMTINCivotJMgPiB6xIFuZzsgIzhEMTMNCivotJQgPiBiw6w7ICM4RDE0DQor6LSVID4gZMO6OyAjOEQxNQ0KK+i0liA+IHNow7o7ICM4RDE2DQor6LSXID4gecOgbjsgIzhEMTcNCivotJkgPiB4dcOgbjsgIzhEMTkNCivotJogPiBsw7JuZzsgIzhEMUENCivotJsgPiBnw6BuOyAjOEQxQg0KK+i0nCA+IHrEgW5nOyAjOEQxQw0KK+i0nSA+IGLDqGk7ICM4RDFEDQor6LSeID4gemjEk247ICM4RDFFDQor6LSfID4gZsO5OyAjOEQxRg0KK+i0oCA+IHl1w6FuOyAjOEQyMA0KK+i0oSA+IGfDsm5nOyAjOEQyMQ0KK+i0oiA+IGPDoWk7ICM4RDIyDQor6LSjID4gesOpOyAjOEQyMw0KK+i0pCA+IHhpw6FuOyAjOEQyNA0KK+i0pSA+IGLDoGk7ICM4RDI1DQor6LSmID4gemjDoG5nOyAjOEQyNg0KK+i0pyA+IGjDuW87ICM4RDI3DQor6LSoID4gemjDrTsgIzhEMjgNCivotKkgPiBmw6BuOyAjOEQyOQ0KK+i0qiA+IHTEgW47ICM4RDJBDQor6LSrID4gcMOtbjsgIzhEMkINCivotKwgPiBiacSDbjsgIzhEMkMNCivotK0gPiBnw7J1OyAjOEQyRA0KK+i0riA+IHpoxa07ICM4RDJFDQor6LSvID4gZ3XDoG47ICM4RDJGDQor6LSwID4gw6hyOyAjOEQzMA0KK+i0sSA+IGppw6BuOyAjOEQzMQ0KK+i0siA+IGLDrDsgIzhEMzINCivotLMgPiBzaMOsOyAjOEQzMw0KK+i0tCA+IHRpxJM7ICM4RDM0DQor6LS1ID4gZ8O5aTsgIzhEMzUNCivotLYgPiBrdcOgbmc7ICM4RDM2DQor6LS3ID4gZMOgaTsgIzhEMzcNCivotLggPiBtw6BvOyAjOEQzOA0KK+i0uSA+IGbDqGk7ICM4RDM5DQor6LS6ID4gaMOoOyAjOEQzQQ0KK+i0uyA+IHnDrTsgIzhEM0INCivotLwgPiB6w6lpOyAjOEQzQw0KK+i0vSA+IHpow6w7ICM4RDNEDQor6LS+ID4gamnEgzsgIzhEM0UNCivotL8gPiBow7lpOyAjOEQzRg0KK+i1gCA+IHrEqzsgIzhENDANCivotYEgPiByw6huOyAjOEQ0MQ0KK+i1giA+IGzDuTsgIzhENDINCivotYMgPiB6xIFuZzsgIzhENDMNCivotYQgPiB6xKs7ICM4RDQ0DQor6LWFID4gZ8SBaTsgIzhENDUNCivotYYgPiBqw6xuOyAjOEQ0Ng0KK+i1hyA+IHHDrXU7ICM4RDQ3DQor6LWIID4gemjDqG47ICM4RDQ4DQor6LWJID4gbMOgaTsgIzhENDkNCivotYogPiBzaMSTOyAjOEQ0QQ0KK+i1iyA+IGbDuTsgIzhENEINCivotYwgPiBkxa07ICM4RDRDDQor6LWNID4gasSrOyAjOEQ0RA0KK+i1jiA+IHNow7o7ICM4RDRFDQor6LWPID4gc2jEg25nOyAjOEQ0Rg0KK+i1kCA+IHPDrDsgIzhENTANCivotZEgPiBiw6w7ICM4RDUxDQor6LWSID4gemjFjXU7ICM4RDUyDQor6LWTID4gZ8STbmc7ICM4RDUzDQor6LWUID4gcMOpaTsgIzhENTQNCivotZUgPiB0w6BuOyAjOEQ1NQ0KK+i1liA+IGzDoGk7ICM4RDU2DQor6LWXID4gZsOobmc7ICM4RDU3DQor6LWYID4gemjDuWk7ICM4RDU4DQor6LWZID4gZsO5OyAjOEQ1OQ0KK+i1miA+IHpodcOgbjsgIzhENUENCivotZsgPiBzw6BpOyAjOEQ1Qg0KK+i1nCA+IHrDqTsgIzhENUMNCivotZ0gPiB5w6BuOyAjOEQ1RA0KK+i1niA+IHrDoG47ICM4RDVFDQor6LWfID4gecWrbjsgIzhENUYNCivotaAgPiB6w6huZzsgIzhENjANCivotaEgPiBzaMOgbjsgIzhENjENCivotaIgPiB5w61uZzsgIzhENjINCivotaMgPiBnw6BuOyAjOEQ2Mw0KK+i1pCA+IGNow6w7ICM4RDY0DQor6LWlID4geMOsOyAjOEQ2NQ0KK+i1piA+IHNow6g7ICM4RDY2DQor6LWnID4gbsSDbjsgIzhENjcNCivotaggPiB4w61vbmc7ICM4RDY4DQor6LWpID4geMOsOyAjOEQ2OQ0KK+i1qiA+IGNoxJNuZzsgIzhENkENCivotasgPiBow6g7ICM4RDZCDQor6LWsID4gY2jEk25nOyAjOEQ2Qw0KK+i1rSA+IHpoxJU7ICM4RDZEDQor6LWuID4geGnDoTsgIzhENkUNCivota8gPiB0w6FuZzsgIzhENkYNCivotbAgPiB6xY91OyAjOEQ3MA0KK+i1sSA+IHrFj3U7ICM4RDcxDQor6LWyID4gbMOsOyAjOEQ3Mg0KK+i1syA+IGrErXU7ICM4RDczDQor6LW0ID4gZsO5OyAjOEQ3NA0KK+i1tSA+IHpow6BvOyAjOEQ3NQ0KK+i1tiA+IGfEg247ICM4RDc2DQor6LW3ID4gccStOyAjOEQ3Nw0KK+i1uCA+IHNow6BuOyAjOEQ3OA0KK+i1uSA+IHHDrW9uZzsgIzhENzkNCivotbogPiBxw61uOyAjOEQ3QQ0KK+i1uyA+IHhpxINuOyAjOEQ3Qg0KK+i1vCA+IGPEqzsgIzhEN0MNCivotb0gPiBqdcOpOyAjOEQ3RA0KK+i1viA+IHHErW47ICM4RDdFDQor6LW/ID4gY2jDrTsgIzhEN0YNCivotoAgPiBjxKs7ICM4RDgwDQor6LaBID4gY2jDqG47ICM4RDgxDQor6LaCID4gY2jDqG47ICM4RDgyDQor6LaDID4gZGnDqTsgIzhEODMNCivotoQgPiBqxas7ICM4RDg0DQor6LaFID4gY2jEgW87ICM4RDg1DQor6LaGID4gZMSrOyAjOEQ4Ng0KK+i2hyA+IHPDqDsgIzhEODcNCivotoggPiB6aMSBbjsgIzhEODgNCivotokgPiB6aMO6OyAjOEQ4OQ0KK+i2iiA+IHl1w6g7ICM4RDhBDQor6LaLID4gccWrOyAjOEQ4Qg0KK+i2jCA+IGppw6k7ICM4RDhDDQor6LaNID4gY2jDrTsgIzhEOEQNCivoto4gPiBjaMO6OyAjOEQ4RQ0KK+i2jyA+IGd1xIE7ICM4RDhGDQor6LaQID4geHXDqDsgIzhEOTANCivotpEgPiBjxKs7ICM4RDkxDQor6LaSID4gdGnDoW87ICM4RDkyDQor6LaTID4gZMWtbzsgIzhEOTMNCivotpQgPiBsacOoOyAjOEQ5NA0KK+i2lSA+IGfEg247ICM4RDk1DQor6LaWID4gc8WrbzsgIzhEOTYNCivotpcgPiBjw7k7ICM4RDk3DQor6LaYID4geMOtOyAjOEQ5OA0KK+i2mSA+IHpow6BvOyAjOEQ5OQ0KK+i2miA+IHPDuTsgIzhEOUENCivotpsgPiB5xK1uOyAjOEQ5Qg0KK+i2nCA+IGrDujsgIzhEOUMNCivotp0gPiBqacOgbjsgIzhEOUQNCivotp4gPiBxdcOoOyAjOEQ5RQ0KK+i2nyA+IHTDoG5nOyAjOEQ5Rg0KK+i2oCA+IGNow7lvOyAjOERBMA0KK+i2oSA+IGPFrWk7ICM4REExDQor6LaiID4gbMO5OyAjOERBMg0KK+i2oyA+IHHDuTsgIzhEQTMNCivotqQgPiBkw6BuZzsgIzhEQTQNCivotqUgPiBxxKt1OyAjOERBNQ0KK+i2piA+IHrEqzsgIzhEQTYNCivotqcgPiB0w607ICM4REE3DQor6LaoID4gccWrOyAjOERBOA0KK+i2qSA+IGNow6w7ICM4REE5DQor6LaqID4gaHXDoW5nOyAjOERBQQ0KK+i2qyA+IHFpw6FvOyAjOERBQg0KK+i2rCA+IHFpw6FvOyAjOERBQw0KK+i2rSA+IHnDoG87ICM4REFEDQor6LauID4gesOgbzsgIzhEQUUNCivotq8gPiB0w6w7ICM4REFGDQor6LaxID4gesSDbjsgIzhEQjENCivotrIgPiB6xINuOyAjOERCMg0KK+i2syA+IHrDujsgIzhEQjMNCivotrQgPiBwxIE7ICM4REI0DQor6La1ID4gYsOgbzsgIzhEQjUNCivotrYgPiBrw7k7ICM4REI2DQor6La3ID4ga8STOyAjOERCNw0KK+i2uCA+IGTFrW47ICM4REI4DQor6La5ID4ganXDqTsgIzhEQjkNCivotrogPiBmxas7ICM4REJBDQor6La7ID4gY2jElW47ICM4REJCDQor6La8ID4gamnEg247ICM4REJDDQor6La9ID4gZsOgbmc7ICM4REJEDQor6La+ID4gemjErTsgIzhEQkUNCivotr8gPiBzw6A7ICM4REJGDQor6LeAID4geXXDqDsgIzhEQzANCivot4EgPiBww6E7ICM4REMxDQor6LeCID4gccOtOyAjOERDMg0KK+i3gyA+IHl1w6g7ICM4REMzDQor6LeEID4gcWnEgW5nOyAjOERDNA0KK+i3hSA+IHTDuW87ICM4REM1DQor6LeGID4gdMOhaTsgIzhEQzYNCivot4cgPiB5w6w7ICM4REM3DQor6LeIID4gbmnEg247ICM4REM4DQor6LeJID4gbMOtbmc7ICM4REM5DQor6LeKID4gbcOoaTsgIzhEQ0ENCivot4sgPiBiw6E7ICM4RENCDQor6LeMID4gZGnEkzsgIzhEQ0MNCivot40gPiBrxas7ICM4RENEDQor6LeOID4gdMO6bzsgIzhEQ0UNCivot48gPiBqacSBOyAjOERDRg0KK+i3kCA+IGPErTsgIzhERDANCivot5EgPiBwxINvOyAjOEREMQ0KK+i3kiA+IHFpxIM7ICM4REQyDQor6LeTID4gemjDuTsgIzhERDMNCivot5QgPiBqxas7ICM4REQ0DQor6LeVID4gZGnDqTsgIzhERDUNCivot5YgPiB6aMSrOyAjOERENg0KK+i3lyA+IGbFqzsgIzhERDcNCivot5ggPiBww6FuOyAjOEREOA0KK+i3mSA+IGrFrTsgIzhERDkNCivot5ogPiBzaMSBbjsgIzhEREENCivot5sgPiBixY87ICM4RERCDQor6LecID4gbsOtOyAjOEREQw0KK+i3nSA+IGrDuTsgIzhEREQNCivot54gPiBsw6w7ICM4RERFDQor6LefID4gZ8STbjsgIzhEREYNCivot6AgPiB5w607ICM4REUwDQor6LehID4gasSrOyAjOERFMQ0KK+i3oiA+IGTDoGk7ICM4REUyDQor6LejID4geGnEg247ICM4REUzDQor6LekID4gamnEgW87ICM4REU0DQor6LelID4gZMO5bzsgIzhERTUNCivot6YgPiB6aMWrOyAjOERFNg0KK+i3pyA+IHpodcSBbjsgIzhERTcNCivot6ggPiBrdcOgOyAjOERFOA0KK+i3qSA+IHpodcSDaTsgIzhERTkNCivot6ogPiBnw7lpOyAjOERFQQ0KK+i3qyA+IHHDrW9uZzsgIzhERUINCivot6wgPiBrxa1pOyAjOERFQw0KK+i3rSA+IHhpw6FuZzsgIzhERUQNCivot64gPiBjaMOsOyAjOERFRQ0KK+i3ryA+IGzDuTsgIzhERUYNCivot7AgPiBiw6huZzsgIzhERjANCivot7EgPiB6aMOsOyAjOERGMQ0KK+i3siA+IGppw6E7ICM4REYyDQor6LezID4gdGnDoG87ICM4REYzDQor6Le0ID4gY8SDaTsgIzhERjQNCivot7UgPiBqacOgbjsgIzhERjUNCivot7YgPiB0w6A7ICM4REY2DQor6Le3ID4gcWnEgW87ICM4REY3DQor6Le4ID4gYsOsOyAjOERGOA0KK+i3uSA+IHhpxIFuOyAjOERGOQ0KK+i3uiA+IGTDuW87ICM4REZBDQor6Le7ID4gasSrOyAjOERGQg0KK+i3vCA+IGrDujsgIzhERkMNCivot70gPiBqw6w7ICM4REZEDQor6Le+ID4gc2jDujsgIzhERkUNCivot78gPiB0w7o7ICM4REZGDQor6LiAID4gY2jDuTsgIzhFMDANCivouIEgPiBqw6xuZzsgIzhFMDENCivouIIgPiBuacOoOyAjOEUwMg0KK+i4gyA+IHhpxIFvOyAjOEUwMw0KK+i4hCA+IGLDszsgIzhFMDQNCivouIUgPiBjaMOsOyAjOEUwNQ0KK+i4hiA+IHHFq247ICM4RTA2DQor6LiHID4gbcWPdTsgIzhFMDcNCivouIggPiBzaMWrOyAjOEUwOA0KK+i4iSA+IGzDoW5nOyAjOEUwOQ0KK+i4iiA+IHnFj25nOyAjOEUwQQ0KK+i4iyA+IGppxINvOyAjOEUwQg0KK+i4jCA+IGNow7N1OyAjOEUwQw0KK+i4jSA+IHFpxIFvOyAjOEUwRA0KK+i4jyA+IHTDoDsgIzhFMEYNCivouJAgPiBqacOgbjsgIzhFMTANCivouJEgPiBxw607ICM4RTExDQor6LiSID4gd8WNOyAjOEUxMg0KK+i4kyA+IHfElWk7ICM4RTEzDQor6LiUID4gemjDum87ICM4RTE0DQor6LiVID4gamnDqTsgIzhFMTUNCivouJYgPiBqw607ICM4RTE2DQor6LiXID4gbmnEkzsgIzhFMTcNCivouJggPiBqw7o7ICM4RTE4DQor6LiZID4gasWrOyAjOEUxOQ0KK+i4miA+IGzDum47ICM4RTFBDQor6LibID4gbMO5OyAjOEUxQg0KK+i4nCA+IGzDqG5nOyAjOEUxQw0KK+i4nSA+IGh1w6FpOyAjOEUxRA0KK+i4niA+IGrDuTsgIzhFMUUNCivouJ8gPiBjaMOtOyAjOEUxRg0KK+i4oCA+IHfEg247ICM4RTIwDQor6LihID4gcXXDoW47ICM4RTIxDQor6LiiID4gdMSrOyAjOEUyMg0KK+i4oyA+IGLDszsgIzhFMjMNCivouKQgPiB6w7o7ICM4RTI0DQor6LilID4gcWnDqDsgIzhFMjUNCivouKYgPiBqxK07ICM4RTI2DQor6LinID4gY8O5OyAjOEUyNw0KK+i4qCA+IHrFjW5nOyAjOEUyOA0KK+i4qSA+IGPEg2k7ICM4RTI5DQor6LiqID4gesWNbmc7ICM4RTJBDQor6LirID4gcMOobmc7ICM4RTJCDQor6LisID4gemjDrDsgIzhFMkMNCivouK0gPiB6aMSTbmc7ICM4RTJEDQor6LiuID4gZGnEg247ICM4RTJFDQor6LivID4gemjDrTsgIzhFMkYNCivouLAgPiB5w7o7ICM4RTMwDQor6LixID4gZMO5bzsgIzhFMzENCivouLIgPiBkw7luOyAjOEUzMg0KK+i4syA+IGNoxa1uOyAjOEUzMw0KK+i4tCA+IHnFj25nOyAjOEUzNA0KK+i4tSA+IHpoxY9uZzsgIzhFMzUNCivouLYgPiBkw6w7ICM4RTM2DQor6Li3ID4gemjElTsgIzhFMzcNCivouLggPiBjaMSVbjsgIzhFMzgNCivouLkgPiBjaHXDoGk7ICM4RTM5DQor6Li6ID4gamnDoG47ICM4RTNBDQor6Li7ID4gZ3XEgTsgIzhFM0INCivouLwgPiB0w6FuZzsgIzhFM0MNCivouL0gPiBqxa07ICM4RTNEDQor6Li+ID4gZsO6OyAjOEUzRQ0KK+i4vyA+IHrDujsgIzhFM0YNCivouYAgPiBkacOpOyAjOEU0MA0KK+i5gSA+IHBpw6FuOyAjOEU0MQ0KK+i5giA+IHLDs3U7ICM4RTQyDQor6LmDID4gbsO5bzsgIzhFNDMNCivouYQgPiB0w607ICM4RTQ0DQor6LmFID4gY2jEgzsgIzhFNDUNCivouYYgPiB0xa1pOyAjOEU0Ng0KK+i5hyA+IGppxINuOyAjOEU0Nw0KK+i5iCA+IGTDoG87ICM4RTQ4DQor6LmJID4gY8WrbzsgIzhFNDkNCivouYogPiB4xKs7ICM4RTRBDQor6LmLID4gdMOgOyAjOEU0Qg0KK+i5jCA+IHFpxIFuZzsgIzhFNEMNCivouY0gPiB6aMSDbjsgIzhFNEQNCivouY4gPiBkacSBbjsgIzhFNEUNCivouY8gPiB0w607ICM4RTRGDQor6LmQID4gasOtOyAjOEU1MA0KK+i5kSA+IG5pw6g7ICM4RTUxDQor6LmSID4gbcOhbjsgIzhFNTINCivouZMgPiBsxKt1OyAjOEU1Mw0KK+i5lCA+IHpow6BuOyAjOEU1NA0KK+i5lSA+IGLDrDsgIzhFNTUNCivouZYgPiBjaMWNbmc7ICM4RTU2DQor6LmXID4gbMO5OyAjOEU1Nw0KK+i5mCA+IGxpw6FvOyAjOEU1OA0KK+i5mSA+IGPDuTsgIzhFNTkNCivouZogPiB0xIFuZzsgIzhFNUENCivouZsgPiBkw6BpOyAjOEU1Qg0KK+i5nCA+IHPFq287ICM4RTVDDQor6LmdID4geMStOyAjOEU1RA0KK+i5niA+IGvFrWk7ICM4RTVFDQor6LmfID4gasSrOyAjOEU1Rg0KK+i5oCA+IHpow607ICM4RTYwDQor6LmhID4gcWnEgW5nOyAjOEU2MQ0KK+i5oiA+IGTDrTsgIzhFNjINCivouaMgPiBtw6FuOyAjOEU2Mw0KK+i5pCA+IHrFjW5nOyAjOEU2NA0KK+i5pSA+IGxpw6FuOyAjOEU2NQ0KK+i5piA+IGLDqG5nOyAjOEU2Ng0KK+i5pyA+IHrEgW87ICM4RTY3DQor6LmoID4gbmnEg247ICM4RTY4DQor6LmpID4gYmnDqTsgIzhFNjkNCivouaogPiB0w7ppOyAjOEU2QQ0KK+i5qyA+IGrDujsgIzhFNkINCivouawgPiBkw6huZzsgIzhFNkMNCivoua0gPiBjw6huZzsgIzhFNkQNCivoua4gPiB4acSBbjsgIzhFNkUNCivoua8gPiBmw6FuOyAjOEU2Rg0KK+i5sCA+IGNow7o7ICM4RTcwDQor6LmxID4gemjFjW5nOyAjOEU3MQ0KK+i5siA+IGTFq247ICM4RTcyDQor6LmzID4gYsWNOyAjOEU3Mw0KK+i5tCA+IGPDuTsgIzhFNzQNCivoubUgPiB6w7o7ICM4RTc1DQor6Lm2ID4ganXDqTsgIzhFNzYNCivoubcgPiBqdcOpOyAjOEU3Nw0KK+i5uCA+IGzDrG47ICM4RTc4DQor6Lm5ID4gdMOgOyAjOEU3OQ0KK+i5uiA+IHFpxIFvOyAjOEU3QQ0KK+i5uyA+IHFpxIFvOyAjOEU3Qg0KK+i5vCA+IHDDujsgIzhFN0MNCivoub0gPiBsacSBbzsgIzhFN0QNCivoub4gPiBkxatuOyAjOEU3RQ0KK+i5vyA+IGN1xIFuOyAjOEU3Rg0KK+i6gCA+IGt1w6BuZzsgIzhFODANCivouoEgPiB6w6BvOyAjOEU4MQ0KK+i6giA+IHTDoDsgIzhFODINCivouoMgPiBiw6w7ICM4RTgzDQor6LqEID4gYsOsOyAjOEU4NA0KK+i6hSA+IHpow7o7ICM4RTg1DQor6LqGID4gasO5OyAjOEU4Ng0KK+i6hyA+IGNow7o7ICM4RTg3DQor6LqIID4gcWnDoG87ICM4RTg4DQor6LqJID4gZMWtbjsgIzhFODkNCivouoogPiBjaMOzdTsgIzhFOEENCivouosgPiBqxKs7ICM4RThCDQor6LqMID4gd8WtOyAjOEU4Qw0KK+i6jSA+IHl1w6g7ICM4RThEDQor6LqOID4gbmnEg247ICM4RThFDQor6LqPID4gbMOsbjsgIzhFOEYNCivoupAgPiBsacOoOyAjOEU5MA0KK+i6kSA+IHpow607ICM4RTkxDQor6LqSID4gbMOsOyAjOEU5Mg0KK+i6kyA+IHpow6w7ICM4RTkzDQor6LqUID4gY2jDoW47ICM4RTk0DQor6LqVID4gY2jDujsgIzhFOTUNCivoupYgPiBkdcOgbjsgIzhFOTYNCivoupcgPiB3w6hpOyAjOEU5Nw0KK+i6mCA+IGzDs25nOyAjOEU5OA0KK+i6mSA+IGzDrG47ICM4RTk5DQor6LqaID4geGnEgW47ICM4RTlBDQor6LqbID4gd8OoaTsgIzhFOUINCivoupwgPiB6dcSBbjsgIzhFOUMNCivoup0gPiBsw6FuOyAjOEU5RA0KK+i6niA+IHhpw6g7ICM4RTlFDQor6LqfID4gcsOhbmc7ICM4RTlGDQor6LqgID4geGnElTsgIzhFQTANCivouqEgPiBuacOoOyAjOEVBMQ0KK+i6oiA+IHTDoDsgIzhFQTINCivouqMgPiBxw7o7ICM4RUEzDQor6LqkID4gamnDqDsgIzhFQTQNCivouqUgPiBjdcSBbjsgIzhFQTUNCivouqYgPiB6dcSBbjsgIzhFQTYNCivouqcgPiB4xK07ICM4RUE3DQor6LqoID4ga8O6aTsgIzhFQTgNCivouqkgPiBqdcOpOyAjOEVBOQ0KK+i6qiA+IGzDrG47ICM4RUFBDQor6LqrID4gc2jEk247ICM4RUFCDQor6LqsID4gZ8WNbmc7ICM4RUFDDQor6LqtID4gZMSBbjsgIzhFQUQNCivouq8gPiBxxas7ICM4RUFGDQor6LqwID4gdMStOyAjOEVCMA0KK+i6sSA+IGTFrW87ICM4RUIxDQor6LqyID4gZMWtbzsgIzhFQjINCivourMgPiBnxY1uZzsgIzhFQjMNCivourQgPiBsw6FuZzsgIzhFQjQNCivourYgPiBsxa1vOyAjOEVCNg0KK+i6tyA+IMSDaTsgIzhFQjcNCivourggPiBqxKs7ICM4RUI4DQor6Lq5ID4gasO6OyAjOEVCOQ0KK+i6uiA+IHTEg25nOyAjOEVCQQ0KK+i6vSA+IHnEg247ICM4RUJEDQor6Lq/ID4ga8SBbmc7ICM4RUJGDQor6LuAID4gccWrOyAjOEVDMA0KK+i7gSA+IGzDs3U7ICM4RUMxDQor6LuCID4gbMOgbzsgIzhFQzINCivou4MgPiB0xa1vOyAjOEVDMw0KK+i7hCA+IHpow607ICM4RUM0DQor6LuGID4gdMStOyAjOEVDNg0KK+i7hyA+IGTDoG87ICM4RUM3DQor6LuJID4gecO5OyAjOEVDOQ0KK+i7iiA+IGNoxJM7ICM4RUNBDQor6LuLID4gecOgOyAjOEVDQg0KK+i7jCA+IGfFrWk7ICM4RUNDDQor6LuNID4gasWrbjsgIzhFQ0QNCivou44gPiB3w6hpOyAjOEVDRQ0KK+i7jyA+IHl1w6g7ICM4RUNGDQor6LuQID4geMOsbjsgIzhFRDANCivou5EgPiBkw6w7ICM4RUQxDQor6LuSID4geHXEgW47ICM4RUQyDQor6LuTID4gZsOgbjsgIzhFRDMNCivou5QgPiByw6huOyAjOEVENA0KK+i7lSA+IHNoxIFuOyAjOEVENQ0KK+i7liA+IHFpw6FuZzsgIzhFRDYNCivou5cgPiBzaMWrOyAjOEVENw0KK+i7mCA+IHTDum47ICM4RUQ4DQor6LuZID4gY2jDqW47ICM4RUQ5DQor6LuaID4gZMOgaTsgIzhFREENCivou5sgPiDDqDsgIzhFREINCivou5wgPiBuw6A7ICM4RURDDQor6LudID4gccOtOyAjOEVERA0KK+i7niA+IG3DoW87ICM4RURFDQor6LufID4gcnXEg247ICM4RURGDQor6LugID4gcsOobjsgIzhFRTANCivou6EgPiBmxINuOyAjOEVFMQ0KK+i7oiA+IHpodcSDbjsgIzhFRTINCivou6MgPiBoxY1uZzsgIzhFRTMNCivou6QgPiBoxas7ICM4RUU0DQor6LulID4gccO6OyAjOEVFNQ0KK+i7piA+IGh1w6BuZzsgIzhFRTYNCivou6cgPiBkxK07ICM4RUU3DQor6LuoID4gbMOtbmc7ICM4RUU4DQor6LupID4gZMOgaTsgIzhFRTkNCivou6ogPiDEgW87ICM4RUVBDQor6LurID4gemjElW47ICM4RUVCDQor6LusID4gZsOgbjsgIzhFRUMNCivou60gPiBrdcSBbmc7ICM4RUVEDQor6LuuID4gxINuZzsgIzhFRUUNCivou68gPiBwxJNuZzsgIzhFRUYNCivou7AgPiBiw6hpOyAjOEVGMA0KK+i7sSA+IGfFqzsgIzhFRjENCivou7IgPiBrxas7ICM4RUYyDQor6LuzID4gcMOhbzsgIzhFRjMNCivou7QgPiB6aMO5OyAjOEVGNA0KK+i7tSA+IHLFj25nOyAjOEVGNQ0KK+i7tiA+IMOoOyAjOEVGNg0KK+i7tyA+IGLDoTsgIzhFRjcNCivou7ggPiB6aMOzdTsgIzhFRjgNCivou7kgPiB6aMStOyAjOEVGOQ0KK+i7uiA+IHnDoW87ICM4RUZBDQor6Lu7ID4ga8STOyAjOEVGQg0KK+i7vCA+IHnDrDsgIzhFRkMNCivou70gPiBxxKtuZzsgIzhFRkQNCivou74gPiBzaMOsOyAjOEVGRQ0KK+i7vyA+IHDDrW5nOyAjOEVGRg0KK+i8gCA+IMOpcjsgIzhGMDANCivovIEgPiBxw61vbmc7ICM4RjAxDQor6LyCID4gasO6OyAjOEYwMg0KK+i8gyA+IGppw6BvOyAjOEYwMw0KK+i8hCA+IGd1xIFuZzsgIzhGMDQNCivovIUgPiBsw7k7ICM4RjA1DQor6LyGID4ga8SDaTsgIzhGMDYNCivovIcgPiBxdcOhbjsgIzhGMDcNCivovIggPiB6aMWNdTsgIzhGMDgNCivovIkgPiB6w6BpOyAjOEYwOQ0KK+i8iiA+IHpow6w7ICM4RjBBDQor6LyLID4gc2jEkzsgIzhGMEINCivovIwgPiBsacOgbmc7ICM4RjBDDQor6LyNID4gecO5OyAjOEYwRA0KK+i8jiA+IHNoxIFvOyAjOEYwRQ0KK+i8jyA+IHnDs3U7ICM4RjBGDQor6LyQID4gaHXEg247ICM4RjEwDQor6LyRID4gecWtbjsgIzhGMTENCivovJIgPiB6aMOpOyAjOEYxMg0KK+i8kyA+IHfEg247ICM4RjEzDQor6LyUID4gZsWtOyAjOEYxNA0KK+i8lSA+IHHEq25nOyAjOEYxNQ0KK+i8liA+IHpoxY11OyAjOEYxNg0KK+i8lyA+IG7DrTsgIzhGMTcNCivovJggPiBsw61uZzsgIzhGMTgNCivovJkgPiB6aMOpOyAjOEYxOQ0KK+i8miA+IHpow6BuOyAjOEYxQQ0KK+i8myA+IGxpw6BuZzsgIzhGMUINCivovJwgPiB6xKs7ICM4RjFDDQor6LydID4gaMWraTsgIzhGMUQNCivovJ4gPiB3xINuZzsgIzhGMUUNCivovJ8gPiBjaMO5bzsgIzhGMUYNCivovKAgPiBnxa1vOyAjOEYyMA0KK+i8oSA+IGvEg247ICM4RjIxDQor6LyiID4gecStOyAjOEYyMg0KK+i8oyA+IHDDqW5nOyAjOEYyMw0KK+i8pCA+IHFpw6BuOyAjOEYyNA0KK+i8pSA+IGfFrW47ICM4RjI1DQor6LymID4gbmnEg247ICM4RjI2DQor6LynID4gcGnDoW47ICM4RjI3DQor6LyoID4gZ3XEg247ICM4RjI4DQor6LypID4gYsOoaTsgIzhGMjkNCivovKogPiBsw7puOyAjOEYyQQ0KK+i8qyA+IHDDoWk7ICM4RjJCDQor6LysID4gbGnDoW5nOyAjOEYyQw0KK+i8rSA+IHJ1xINuOyAjOEYyRA0KK+i8riA+IHLDs3U7ICM4RjJFDQor6LyvID4gasOtOyAjOEYyRg0KK+i8sCA+IHnDoW5nOyAjOEYzMA0KK+i8sSA+IHhpw6FuOyAjOEYzMQ0KK+i8siA+IGNodcOhbjsgIzhGMzINCivovLMgPiBjw7J1OyAjOEYzMw0KK+i8tCA+IHHFq247ICM4RjM0DQor6Ly1ID4gZ8OpOyAjOEYzNQ0KK+i8tiA+IHnDs3U7ICM4RjM2DQor6Ly3ID4gaMWNbmc7ICM4RjM3DQor6Ly4ID4gc2jFqzsgIzhGMzgNCivovLkgPiBmw7k7ICM4RjM5DQor6Ly6ID4gesSrOyAjOEYzQQ0KK+i8uyA+IGbDujsgIzhGM0INCivovLwgPiB3xJNuOyAjOEYzQw0KK+i8vSA+IGLDqG47ICM4RjNEDQor6Ly+ID4gemjEg247ICM4RjNFDQor6Ly/ID4gecO6OyAjOEYzRg0KK+i9gCA+IHfEk247ICM4RjQwDQor6L2BID4gdMSBbzsgIzhGNDENCivovYIgPiBnxa07ICM4RjQyDQor6L2DID4gemjEk247ICM4RjQzDQor6L2EID4geGnDoTsgIzhGNDQNCivovYUgPiB5dcOhbjsgIzhGNDUNCivovYYgPiBsw7k7ICM4RjQ2DQor6L2HID4gasSrdTsgIzhGNDcNCivovYggPiBjaMOhbzsgIzhGNDgNCivovYkgPiB6aHXEg247ICM4RjQ5DQor6L2KID4gd8OoaTsgIzhGNEENCivovYsgPiBow7puOyAjOEY0Qg0KK+i9jSA+IGNow6g7ICM4RjREDQor6L2OID4gamnDoG87ICM4RjRFDQor6L2PID4gemjDoG47ICM4RjRGDQor6L2QID4gcMO6OyAjOEY1MA0KK+i9kSA+IGzEg287ICM4RjUxDQor6L2SID4gZsOpbjsgIzhGNTINCivovZMgPiBmxIFuOyAjOEY1Mw0KK+i9lCA+IGzDrW47ICM4RjU0DQor6L2VID4gZ8OpOyAjOEY1NQ0KK+i9liA+IHPDqDsgIzhGNTYNCivovZcgPiBrxINuOyAjOEY1Nw0KK+i9mCA+IGh1w6BuOyAjOEY1OA0KK+i9mSA+IHnErTsgIzhGNTkNCivovZogPiBqw607ICM4RjVBDQor6L2bID4gZMO5aTsgIzhGNUINCivovZwgPiDDqXI7ICM4RjVDDQor6L2dID4gecO6OyAjOEY1RA0KK+i9niA+IHhpw6BuOyAjOEY1RQ0KK+i9nyA+IGjFjW5nOyAjOEY1Rg0KK+i9oCA+IGzElWk7ICM4RjYwDQor6L2hID4gcMOoaTsgIzhGNjENCivovaIgPiBsw6w7ICM4RjYyDQor6L2jID4gbMOsOyAjOEY2Mw0KK+i9pCA+IGzDujsgIzhGNjQNCivovaUgPiBsw6xuOyAjOEY2NQ0KK+i9piA+IGNoxJM7ICM4RjY2DQor6L2nID4gecOgOyAjOEY2Nw0KK+i9qCA+IGfFrWk7ICM4RjY4DQor6L2pID4geHXEgW47ICM4RjY5DQor6L2qID4gZMOsOyAjOEY2QQ0KK+i9qyA+IHLDqG47ICM4RjZCDQor6L2sID4gemh1xINuOyAjOEY2Qw0KK+i9rSA+IMOoOyAjOEY2RA0KK+i9riA+IGzDum47ICM4RjZFDQor6L2vID4gcnXEg247ICM4RjZGDQor6L2wID4gaMWNbmc7ICM4RjcwDQor6L2xID4ga8WrOyAjOEY3MQ0KK+i9siA+IGvEkzsgIzhGNzINCivovbMgPiBsw7o7ICM4RjczDQor6L20ID4gemjDs3U7ICM4Rjc0DQor6L21ID4gemjErTsgIzhGNzUNCivovbYgPiB5w6w7ICM4Rjc2DQor6L23ID4gaMWrOyAjOEY3Nw0KK+i9uCA+IHpoxJVuOyAjOEY3OA0KK+i9uSA+IGzDrDsgIzhGNzkNCivovbogPiB5w6FvOyAjOEY3QQ0KK+i9uyA+IHHEq25nOyAjOEY3Qg0KK+i9vCA+IHNow6w7ICM4RjdDDQor6L29ID4gesOgaTsgIzhGN0QNCivovb4gPiB6aMOsOyAjOEY3RQ0KK+i9vyA+IGppw6BvOyAjOEY3Rg0KK+i+gCA+IHpoxY11OyAjOEY4MA0KK+i+gSA+IHF1w6FuOyAjOEY4MQ0KK+i+giA+IGzDuTsgIzhGODINCivovoMgPiBqacOgbzsgIzhGODMNCivovoQgPiB6aMOpOyAjOEY4NA0KK+i+hSA+IGbFrTsgIzhGODUNCivovoYgPiBsacOgbmc7ICM4Rjg2DQor6L6HID4gbmnEg247ICM4Rjg3DQor6L6IID4gYsOoaTsgIzhGODgNCivovokgPiBoxatpOyAjOEY4OQ0KK+i+iiA+IGfFrW47ICM4RjhBDQor6L6LID4gd8SDbmc7ICM4RjhCDQor6L6MID4gbGnDoW5nOyAjOEY4Qw0KK+i+jSA+IGNow7lvOyAjOEY4RA0KK+i+jiA+IHrEqzsgIzhGOEUNCivovo8gPiBjw7J1OyAjOEY4Rg0KK+i+kCA+IGbDujsgIzhGOTANCivovpEgPiBqw607ICM4RjkxDQor6L6SID4gd8STbjsgIzhGOTINCivovpMgPiBzaMWrOyAjOEY5Mw0KK+i+lCA+IHDDqGk7ICM4Rjk0DQor6L6VID4geXXDoW47ICM4Rjk1DQor6L6WID4geGnDoTsgIzhGOTYNCivovpcgPiB6aMSDbjsgIzhGOTcNCivovpggPiBsw7k7ICM4Rjk4DQor6L6ZID4gY2jDqDsgIzhGOTkNCivovpogPiBsw61uOyAjOEY5QQ0KK+i+myA+IHjEq247ICM4RjlCDQor6L6cID4gZ8WrOyAjOEY5Qw0KK+i+nSA+IGPDrTsgIzhGOUQNCivovp4gPiBjw607ICM4RjlFDQor6L6fID4gcMOsOyAjOEY5Rg0KK+i+oCA+IHrDuWk7ICM4RkEwDQor6L6hID4gYmnDoG47ICM4RkExDQor6L6iID4gbMOgOyAjOEZBMg0KK+i+oyA+IGzDoDsgIzhGQTMNCivovqQgPiBjw607ICM4RkE0DQor6L6lID4geHXEkzsgIzhGQTUNCivovqYgPiBiw6BuOyAjOEZBNg0KK+i+pyA+IGJpw6BuOyAjOEZBNw0KK+i+qCA+IGJpw6BuOyAjOEZBOA0KK+i+qSA+IGJpw6BuOyAjOEZBOQ0KK+i+qyA+IGJpw6BuOyAjOEZBQg0KK+i+rCA+IGLEgW47ICM4RkFDDQor6L6tID4gY8OtOyAjOEZBRA0KK+i+riA+IGJpw6BuOyAjOEZBRQ0KK+i+ryA+IGJpw6BuOyAjOEZBRg0KK+i+sCA+IGNow6luOyAjOEZCMA0KK+i+sSA+IHLDuTsgIzhGQjENCivovrIgPiBuw7NuZzsgIzhGQjINCivovrMgPiBuw7NuZzsgIzhGQjMNCivovrQgPiB6aMSVbjsgIzhGQjQNCivovrUgPiBjaMO5bzsgIzhGQjUNCivovrYgPiBjaMO5bzsgIzhGQjYNCivovrggPiByw6luZzsgIzhGQjgNCivovrkgPiBiacSBbjsgIzhGQjkNCivovrogPiBiacSBbjsgIzhGQkENCivovr0gPiBsacOhbzsgIzhGQkQNCivovr4gPiBkw6E7ICM4RkJFDQor6L6/ID4gY2jEgW47ICM4RkJGDQor6L+AID4gZ8SBbjsgIzhGQzANCivov4EgPiBxacSBbjsgIzhGQzENCivov4IgPiB5xas7ICM4RkMyDQor6L+DID4gecWrOyAjOEZDMw0KK+i/hCA+IHHDrDsgIzhGQzQNCivov4UgPiB4w7luOyAjOEZDNQ0KK+i/hiA+IHnErTsgIzhGQzYNCivov4cgPiBnw7lvOyAjOEZDNw0KK+i/iCA+IG3DoGk7ICM4RkM4DQor6L+JID4gccOtOyAjOEZDOQ0KK+i/iiA+IHrEgTsgIzhGQ0ENCivov4sgPiB3w6BuZzsgIzhGQ0INCivov4wgPiBqaWE7ICM4RkNDDQor6L+NID4gemjFq247ICM4RkNEDQor6L+OID4gecOtbmc7ICM4RkNFDQor6L+PID4gdMOsOyAjOEZDRg0KK+i/kCA+IHnDuW47ICM4RkQwDQor6L+RID4gasOsbjsgIzhGRDENCivov5IgPiBow6FuZzsgIzhGRDINCivov5MgPiB5w6A7ICM4RkQzDQor6L+UID4gZsSDbjsgIzhGRDQNCivov5UgPiB3w7k7ICM4RkQ1DQor6L+WID4gZMOhOyAjOEZENg0KK+i/lyA+IMOpOyAjOEZENw0KK+i/mCA+IGh1w6FuOyAjOEZEOA0KK+i/mSA+IHpow6g7ICM4RkQ5DQor6L+bID4gasOsbjsgIzhGREINCivov5wgPiB5dcSDbjsgIzhGREMNCivov50gPiB3w6lpOyAjOEZERA0KK+i/niA+IGxpw6FuOyAjOEZERQ0KK+i/nyA+IGNow607ICM4RkRGDQor6L+gID4gY2jDqDsgIzhGRTANCivov6EgPiBuw6w7ICM4RkUxDQor6L+iID4gdGnDoW87ICM4RkUyDQor6L+jID4gemjDrDsgIzhGRTMNCivov6QgPiB5xK07ICM4RkU0DQor6L+lID4gasStb25nOyAjOEZFNQ0KK+i/piA+IGppxIE7ICM4RkU2DQor6L+nID4gY2jDqW47ICM4RkU3DQor6L+oID4gZMOgaTsgIzhGRTgNCivov6kgPiDElXI7ICM4RkU5DQor6L+qID4gZMOtOyAjOEZFQQ0KK+i/qyA+IHDDsjsgIzhGRUINCivov6wgPiB3xINuZzsgIzhGRUMNCivov60gPiBkacOpOyAjOEZFRA0KK+i/riA+IHrDqTsgIzhGRUUNCivov68gPiB0w6FvOyAjOEZFRg0KK+i/sCA+IHNow7k7ICM4RkYwDQor6L+xID4gdMO6bzsgIzhGRjENCivov7MgPiBqw6xuZzsgIzhGRjMNCivov7QgPiBow7ppOyAjOEZGNA0KK+i/tSA+IHTDs25nOyAjOEZGNQ0KK+i/tiA+IHnDsnU7ICM4RkY2DQor6L+3ID4gbcOtOyAjOEZGNw0KK+i/uCA+IGLDqG5nOyAjOEZGOA0KK+i/uSA+IGrEqzsgIzhGRjkNCivov7ogPiBuxINpOyAjOEZGQQ0KK+i/uyA+IHnDrTsgIzhGRkINCivov7wgPiBqacOpOyAjOEZGQw0KK+i/vSA+IHpoxatpOyAjOEZGRA0KK+i/viA+IGxpw6g7ICM4RkZFDQor6L+/ID4geMO5bjsgIzhGRkYNCivpgIAgPiB0w7lpOyAjOTAwMA0KK+mAgSA+IHPDsm5nOyAjOTAwMQ0KK+mAgiA+IGd1xIE7ICM5MDAyDQor6YCDID4gdMOhbzsgIzkwMDMNCivpgIQgPiBww6FuZzsgIzkwMDQNCivpgIUgPiBow7J1OyAjOTAwNQ0KK+mAhiA+IG7DrDsgIzkwMDYNCivpgIcgPiBkw7luOyAjOTAwNw0KK+mAiCA+IGrErW9uZzsgIzkwMDgNCivpgIkgPiB4dcSDbjsgIzkwMDkNCivpgIogPiB4w7luOyAjOTAwQQ0KK+mAiyA+IGLFqzsgIzkwMEINCivpgIwgPiB5w7N1OyAjOTAwQw0KK+mAjSA+IHhpxIFvOyAjOTAwRA0KK+mAjiA+IHHDrXU7ICM5MDBFDQor6YCPID4gdMOydTsgIzkwMEYNCivpgJAgPiB6aMO6OyAjOTAxMA0KK+mAkSA+IHHDrXU7ICM5MDExDQor6YCSID4gZMOsOyAjOTAxMg0KK+mAkyA+IGTDrDsgIzkwMTMNCivpgJQgPiB0w7o7ICM5MDE0DQor6YCVID4gasOsbmc7ICM5MDE1DQor6YCWID4gdMOsOyAjOTAxNg0KK+mAlyA+IGTDsnU7ICM5MDE3DQor6YCYID4gecStOyAjOTAxOA0KK+mAmSA+IHpow6g7ICM5MDE5DQor6YCaID4gdMWNbmc7ICM5MDFBDQor6YCbID4gZ3XDoG5nOyAjOTAxQg0KK+mAnCA+IHfDuTsgIzkwMUMNCivpgJ0gPiBzaMOsOyAjOTAxRA0KK+mAniA+IGNoxJVuZzsgIzkwMUUNCivpgJ8gPiBzw7k7ICM5MDFGDQor6YCgID4gesOgbzsgIzkwMjANCivpgKEgPiBxxatuOyAjOTAyMQ0KK+mAoiA+IGbDqW5nOyAjOTAyMg0KK+mAoyA+IGxpw6FuOyAjOTAyMw0KK+mApCA+IHPDuW87ICM5MDI0DQor6YClID4gaMO6aTsgIzkwMjUNCivpgKYgPiBsxK07ICM5MDI2DQor6YCoID4gbMOhaTsgIzkwMjgNCivpgKkgPiBiw6huOyAjOTAyOQ0KK+mAqiA+IGPDuW87ICM5MDJBDQor6YCrID4ganXDqTsgIzkwMkINCivpgKwgPiBiw6huZzsgIzkwMkMNCivpgK0gPiBodcOgbjsgIzkwMkQNCivpgK4gPiBkw6BpOyAjOTAyRQ0KK+mAryA+IGzDuTsgIzkwMkYNCivpgLAgPiB5w7N1OyAjOTAzMA0KK+mAsSA+IHpoxY11OyAjOTAzMQ0KK+mAsiA+IGrDrG47ICM5MDMyDQor6YCzID4gecO5OyAjOTAzMw0KK+mAtCA+IGNow7lvOyAjOTAzNA0KK+mAtSA+IGvDumk7ICM5MDM1DQor6YC2ID4gd8STaTsgIzkwMzYNCivpgLcgPiB0w6w7ICM5MDM3DQor6YC4ID4gecOsOyAjOTAzOA0KK+mAuSA+IGTDoTsgIzkwMzkNCivpgLogPiB5dcSDbjsgIzkwM0ENCivpgLsgPiBsw7pvOyAjOTAzQg0KK+mAvCA+IGLEqzsgIzkwM0MNCivpgL0gPiBuw7lvOyAjOTAzRA0KK+mAviA+IHnDujsgIzkwM0UNCivpgL8gPiBkw6BuZzsgIzkwM0YNCivpgYAgPiBzw7ppOyAjOTA0MA0KK+mBgSA+IGTDuW47ICM5MDQxDQor6YGCID4gc8O5aTsgIzkwNDINCivpgYMgPiB5xINuOyAjOTA0Mw0KK+mBhCA+IGNodcOhbjsgIzkwNDQNCivpgYUgPiBjaMOtOyAjOTA0NQ0KK+mBhiA+IHTDrTsgIzkwNDYNCivpgYcgPiB5w7k7ICM5MDQ3DQor6YGIID4gc2jDrTsgIzkwNDgNCivpgYkgPiB6aMSTbjsgIzkwNDkNCivpgYogPiB5w7N1OyAjOTA0QQ0KK+mBiyA+IHnDuW47ICM5MDRCDQor6YGMID4gw6g7ICM5MDRDDQor6YGNID4gYmnDoG47ICM5MDREDQor6YGOID4gZ8O5bzsgIzkwNEUNCivpgY8gPiDDqDsgIzkwNEYNCivpgZAgPiB4acOhOyAjOTA1MA0KK+mBkSA+IGh1w6FuZzsgIzkwNTENCivpgZIgPiBxw611OyAjOTA1Mg0KK+mBkyA+IGTDoG87ICM5MDUzDQor6YGUID4gZMOhOyAjOTA1NA0KK+mBlSA+IHfDqWk7ICM5MDU1DQor6YGXID4gecOtOyAjOTA1Nw0KK+mBmCA+IGfDsnU7ICM5MDU4DQor6YGZID4gecOhbzsgIzkwNTkNCivpgZogPiBjaMO5OyAjOTA1QQ0KK+mBmyA+IGzDrXU7ICM5MDVCDQor6YGcID4geMO5bjsgIzkwNUMNCivpgZ0gPiB0w6A7ICM5MDVEDQor6YGeID4gZMOsOyAjOTA1RQ0KK+mBnyA+IGNow607ICM5MDVGDQor6YGgID4geXXEg247ICM5MDYwDQor6YGhID4gc8O5OyAjOTA2MQ0KK+mBoiA+IHTDoDsgIzkwNjINCivpgaMgPiBxacSDbjsgIzkwNjMNCivpgaUgPiB5w6FvOyAjOTA2NQ0KK+mBpiA+IGd1w6BuOyAjOTA2Ng0KK+mBpyA+IHpoxIFuZzsgIzkwNjcNCivpgaggPiDDoW87ICM5MDY4DQor6YGpID4gc2jDrDsgIzkwNjkNCivpgaogPiBjw6g7ICM5MDZBDQor6YGrID4gY2jDrDsgIzkwNkINCivpgawgPiBzw7k7ICM5MDZDDQor6YGtID4gesSBbzsgIzkwNkQNCivpga4gPiB6aMSTOyAjOTA2RQ0KK+mBryA+IGTDuW47ICM5MDZGDQor6YGwID4gZMOsOyAjOTA3MA0KK+mBsSA+IGzDs3U7ICM5MDcxDQor6YGyID4gY2jDrTsgIzkwNzINCivpgbMgPiBjxatvOyAjOTA3Mw0KK+mBtCA+IGzDrW47ICM5MDc0DQor6YG1ID4gesWrbjsgIzkwNzUNCivpgbYgPiByw6BvOyAjOTA3Ng0KK+mBtyA+IHFpxIFuOyAjOTA3Nw0KK+mBuCA+IHh1xINuOyAjOTA3OA0KK+mBuSA+IHnDuTsgIzkwNzkNCivpgbogPiB5w607ICM5MDdBDQor6YG7ID4gd8O5OyAjOTA3Qg0KK+mBvCA+IGxpw6FvOyAjOTA3Qw0KK+mBvSA+IGrDuTsgIzkwN0QNCivpgb4gPiBzaMOsOyAjOTA3RQ0KK+mBvyA+IGLDrDsgIzkwN0YNCivpgoAgPiB5xIFvOyAjOTA4MA0KK+mCgSA+IG3DoGk7ICM5MDgxDQor6YKCID4geGnDqDsgIzkwODINCivpgoMgPiBzw7lpOyAjOTA4Mw0KK+mChCA+IGh1w6FuOyAjOTA4NA0KK+mChSA+IHpoxIFuOyAjOTA4NQ0KK+mChiA+IHTDqW5nOyAjOTA4Ng0KK+mChyA+IMSVcjsgIzkwODcNCivpgoggPiBtacSDbzsgIzkwODgNCivpgokgPiBiacSBbjsgIzkwODkNCivpgoogPiBiacSBbjsgIzkwOEENCivpgosgPiBsw6E7ICM5MDhCDQor6YKMID4gbMOtOyAjOTA4Qw0KK+mCjSA+IHl1w6FuOyAjOTA4RA0KK+mCjiA+IHnDoW87ICM5MDhFDQor6YKPID4gbMO6bzsgIzkwOEYNCivpgpAgPiBsxK07ICM5MDkwDQor6YKRID4gecOsOyAjOTA5MQ0KK+mCkiA+IHTDrW5nOyAjOTA5Mg0KK+mCkyA+IGTDqG5nOyAjOTA5Mw0KK+mClCA+IHHErTsgIzkwOTQNCivpgpUgPiB5xY1uZzsgIzkwOTUNCivpgpYgPiBzaMSBbjsgIzkwOTYNCivpgpcgPiBow6FuOyAjOTA5Nw0KK+mCmCA+IHnDujsgIzkwOTgNCivpgpkgPiBtw6FuZzsgIzkwOTkNCivpgpogPiByw7o7ICM5MDlBDQor6YKbID4gccOtb25nOyAjOTA5Qg0KK+mCnSA+IGt1w6BuZzsgIzkwOUQNCivpgp4gPiBmxas7ICM5MDlFDQor6YKfID4ga8Ogbmc7ICM5MDlGDQor6YKgID4gYsSrbjsgIzkwQTANCivpgqEgPiBmxIFuZzsgIzkwQTENCivpgqIgPiB4w61uZzsgIzkwQTINCivpgqMgPiBuw6A7ICM5MEEzDQor6YKkID4geGluOyAjOTBBNA0KK+mCpSA+IHNoxJVuOyAjOTBBNQ0KK+mCpiA+IGLEgW5nOyAjOTBBNg0KK+mCpyA+IHl1w6FuOyAjOTBBNw0KK+mCqCA+IGPFq247ICM5MEE4DQor6YKpID4gaMWtbzsgIzkwQTkNCivpgqogPiB4acOpOyAjOTBBQQ0KK+mCqyA+IGLEgW5nOyAjOTBBQg0KK+mCrCA+IHfFqzsgIzkwQUMNCivpgq0gPiBqw7k7ICM5MEFEDQor6YKuID4gecOzdTsgIzkwQUUNCivpgq8gPiBow6FuOyAjOTBBRg0KK+mCsCA+IHTDoWk7ICM5MEIwDQor6YKxID4gccSrdTsgIzkwQjENCivpgrIgPiBiw6w7ICM5MEIyDQor6YKzID4gcMOpaTsgIzkwQjMNCivpgrQgPiBixK1uZzsgIzkwQjQNCivpgrUgPiBzaMOgbzsgIzkwQjUNCivpgrYgPiBiw6hpOyAjOTBCNg0KK+mCtyA+IHfEgzsgIzkwQjcNCivpgrggPiBkxK07ICM5MEI4DQor6YK5ID4gesWNdTsgIzkwQjkNCivpgrogPiB5w6g7ICM5MEJBDQor6YK7ID4gbMOtbjsgIzkwQkINCivpgrwgPiBrdcSBbmc7ICM5MEJDDQor6YK9ID4gZ8WraTsgIzkwQkQNCivpgr4gPiB6aMWrOyAjOTBCRQ0KK+mCvyA+IHNoxKs7ICM5MEJGDQor6YOAID4ga8WrOyAjOTBDMA0KK+mDgSA+IHnDuTsgIzkwQzENCivpg4IgPiBnxIFpOyAjOTBDMg0KK+mDgyA+IGfDqTsgIzkwQzMNCivpg4QgPiB4w6w7ICM5MEM0DQor6YOFID4gemjDrDsgIzkwQzUNCivpg4YgPiBqw607ICM5MEM2DQor6YOHID4geMO6bjsgIzkwQzcNCivpg4ggPiBow7J1OyAjOTBDOA0KK+mDiSA+IHjDrW5nOyAjOTBDOQ0KK+mDiiA+IGppxIFvOyAjOTBDQQ0KK+mDiyA+IHjDrTsgIzkwQ0INCivpg4wgPiBnxatpOyAjOTBDQw0KK+mDjSA+IG7Dum87ICM5MENEDQor6YOOID4gbMOhbmc7ICM5MENFDQor6YOPID4gamnDoTsgIzkwQ0YNCivpg5AgPiBrdcOgaTsgIzkwRDANCivpg5EgPiB6aMOobmc7ICM5MEQxDQor6YOTID4gecO5bjsgIzkwRDMNCivpg5QgPiB5w6FuOyAjOTBENA0KK+mDlSA+IGNow6luZzsgIzkwRDUNCivpg5YgPiBkxY11OyAjOTBENg0KK+mDlyA+IGNoxKs7ICM5MEQ3DQor6YOYID4gbMeaOyAjOTBEOA0KK+mDmSA+IGbFrTsgIzkwRDkNCivpg5ogPiB3w7o7ICM5MERBDQor6YObID4gZsO6OyAjOTBEQg0KK+mDnCA+IGfDoG87ICM5MERDDQor6YOdID4gaMSDbzsgIzkwREQNCivpg54gPiBsw6FuZzsgIzkwREUNCivpg58gPiBqacOhOyAjOTBERg0KK+mDoCA+IGfElW5nOyAjOTBFMA0KK+mDoSA+IGrDuW47ICM5MEUxDQor6YOiID4gecStbmc7ICM5MEUyDQor6YOjID4gYsOzOyAjOTBFMw0KK+mDpCA+IHjDrDsgIzkwRTQNCivpg6UgPiBiw6hpOyAjOTBFNQ0KK+mDpiA+IGzDrDsgIzkwRTYNCivpg6cgPiB5w7puOyAjOTBFNw0KK+mDqCA+IGLDuTsgIzkwRTgNCivpg6kgPiB4acOhbzsgIzkwRTkNCivpg6ogPiBxxKs7ICM5MEVBDQor6YOrID4gcMOtOyAjOTBFQg0KK+mDrCA+IHHEq25nOyAjOTBFQw0KK+mDrSA+IGfFq287ICM5MEVEDQor6YOuID4gemhvdTsgIzkwRUUNCivpg68gPiB0w6FuOyAjOTBFRg0KK+mDsCA+IHrFjXU7ICM5MEYwDQor6YOxID4gcMOtbmc7ICM5MEYxDQor6YOyID4gbMOhaTsgIzkwRjINCivpg7MgPiBuw607ICM5MEYzDQor6YO0ID4gY2jEk247ICM5MEY0DQor6YO1ID4gecOzdTsgIzkwRjUNCivpg7YgPiBiw7k7ICM5MEY2DQor6YO3ID4geGnEgW5nOyAjOTBGNw0KK+mDuCA+IGTEgW47ICM5MEY4DQor6YO5ID4gasO6OyAjOTBGOQ0KK+mDuiA+IHnFjW5nOyAjOTBGQQ0KK+mDuyA+IHFpxIFvOyAjOTBGQg0KK+mDvCA+IHnEqzsgIzkwRkMNCivpg70gPiBkxas7ICM5MEZEDQor6YO+ID4gecSDbjsgIzkwRkUNCivpg78gPiBtw6lpOyAjOTBGRg0KK+mEgCA+IHLDuW87ICM5MTAwDQor6YSBID4gYsOoaTsgIzkxMDENCivphIIgPiDDqDsgIzkxMDINCivphIMgPiB5w7o7ICM5MTAzDQor6YSEID4ganXDoG47ICM5MTA0DQor6YSFID4gecWtOyAjOTEwNQ0KK+mEhiA+IHnDuW47ICM5MTA2DQor6YSHID4gaMOydTsgIzkxMDcNCivphIggPiBrw7ppOyAjOTEwOA0KK+mEiSA+IHhpxIFuZzsgIzkxMDkNCivphIogPiB4acSBbmc7ICM5MTBBDQor6YSLID4gc8WNdTsgIzkxMEINCivphIwgPiB0w6FuZzsgIzkxMEMNCivphI0gPiBtw61uZzsgIzkxMEQNCivphI4gPiB4w6w7ICM5MTBFDQor6YSPID4gcsO5OyAjOTEwRg0KK+mEkCA+IGNow7k7ICM5MTEwDQor6YSRID4gesSrOyAjOTExMQ0KK+mEkiA+IHrFjXU7ICM5MTEyDQor6YSTID4gasO6OyAjOTExMw0KK+mElCA+IHfFqzsgIzkxMTQNCivphJUgPiB4acSBbmc7ICM5MTE1DQor6YSWID4gecO6bjsgIzkxMTYNCivphJcgPiBow6BvOyAjOTExNw0KK+mEmCA+IHnFjW5nOyAjOTExOA0KK+mEmSA+IGLErTsgIzkxMTkNCivphJogPiBtw7I7ICM5MTFBDQor6YSbID4gY2jDoW87ICM5MTFCDQor6YScID4gZsWrOyAjOTExQw0KK+mEnSA+IGxpxINvOyAjOTExRA0KK+mEniA+IHnDrW47ICM5MTFFDQor6YSfID4gemh1xIFuOyAjOTExRg0KK+mEoCA+IGjDuTsgIzkxMjANCivphKEgPiBxacSBbzsgIzkxMjENCivphKIgPiB5xIFuOyAjOTEyMg0KK+mEoyA+IHpoxIFuZzsgIzkxMjMNCivphKQgPiBmw6BuOyAjOTEyNA0KK+mEpSA+IHFpxIFvOyAjOTEyNQ0KK+mEpiA+IHjFrTsgIzkxMjYNCivphKcgPiBkw6huZzsgIzkxMjcNCivphKggPiBiw6w7ICM5MTI4DQor6YSpID4geMOtbjsgIzkxMjkNCivphKogPiBiw6w7ICM5MTJBDQor6YSrID4gY8Opbmc7ICM5MTJCDQor6YSsID4gd8OpaTsgIzkxMkMNCivphK0gPiB6aMOobmc7ICM5MTJEDQor6YSuID4gbcOgbzsgIzkxMkUNCivphK8gPiBzaMOgbjsgIzkxMkYNCivphLAgPiBsw61uOyAjOTEzMA0KK+mEsSA+IHDDszsgIzkxMzENCivphLIgPiBkxIFuOyAjOTEzMg0KK+mEsyA+IG3DqW5nOyAjOTEzMw0KK+mEtCA+IHnDqDsgIzkxMzQNCivphLUgPiBjxIFvOyAjOTEzNQ0KK+mEtiA+IGt1w6BpOyAjOTEzNg0KK+mEtyA+IGbEk25nOyAjOTEzNw0KK+mEuCA+IG3DqW5nOyAjOTEzOA0KK+mEuSA+IHrFjXU7ICM5MTM5DQor6YS6ID4ga3XDoG5nOyAjOTEzQQ0KK+mEuyA+IGxpw6FuOyAjOTEzQg0KK+mEvCA+IHrDoG47ICM5MTNDDQor6YS9ID4gY2jDoW47ICM5MTNEDQor6YS+ID4gecWNdTsgIzkxM0UNCivphL8gPiBxw607ICM5MTNGDQor6YWAID4gecSBbjsgIzkxNDANCivphYEgPiBjaMOhbjsgIzkxNDENCivphYIgPiB6w6BuOyAjOTE0Mg0KK+mFgyA+IGzDrW5nOyAjOTE0Mw0KK+mFhCA+IGh1xIFuOyAjOTE0NA0KK+mFhSA+IHjEqzsgIzkxNDUNCivphYYgPiBmxJNuZzsgIzkxNDYNCivphYcgPiB6w6BuOyAjOTE0Nw0KK+mFiCA+IGzDrDsgIzkxNDgNCivphYkgPiB5xY91OyAjOTE0OQ0KK+mFiiA+IGTErW5nOyAjOTE0QQ0KK+mFiyA+IHHDrXU7ICM5MTRCDQor6YWMID4gemjDum87ICM5MTRDDQor6YWNID4gcMOoaTsgIzkxNEQNCivphY4gPiB6aMOydTsgIzkxNEUNCivphY8gPiB5w607ICM5MTRGDQor6YWQID4gaMSDbmc7ICM5MTUwDQor6YWRID4gecWtOyAjOTE1MQ0KK+mFkiA+IGrErXU7ICM5MTUyDQor6YWTID4gecSDbjsgIzkxNTMNCivphZQgPiB6w7lpOyAjOTE1NA0KK+mFlSA+IG3DoW87ICM5MTU1DQor6YWWID4gZMSBbjsgIzkxNTYNCivphZcgPiB4w7k7ICM5MTU3DQor6YWYID4gdMOzdTsgIzkxNTgNCivphZkgPiB6aMSTbjsgIzkxNTkNCivphZogPiBmxJNuOyAjOTE1QQ0KK+mFnSA+IHnDuW47ICM5MTVEDQor6YWeID4gdMOgaTsgIzkxNUUNCivphZ8gPiB0acSBbjsgIzkxNUYNCivphaAgPiBxacSDOyAjOTE2MA0KK+mFoSA+IHTDum87ICM5MTYxDQor6YWiID4gesO5bzsgIzkxNjINCivphaMgPiBoxIFuOyAjOTE2Mw0KK+mFpCA+IGfFqzsgIzkxNjQNCivphaUgPiBzxas7ICM5MTY1DQor6YWmID4gcMOyOyAjOTE2Ng0KK+mFpyA+IGNow7N1OyAjOTE2Nw0KK+mFqCA+IHrDoGk7ICM5MTY4DQor6YWpID4gbcOtbmc7ICM5MTY5DQor6YWqID4gbMO5bzsgIzkxNkENCivphasgPiBjaMO5bzsgIzkxNkINCivphawgPiBjaMOzdTsgIzkxNkMNCivpha0gPiB5w7J1OyAjOTE2RA0KK+mFriA+IHTDs25nOyAjOTE2RQ0KK+mFryA+IHpoxK07ICM5MTZGDQor6YWwID4geGnEgW47ICM5MTcwDQor6YWxID4gamnDoG5nOyAjOTE3MQ0KK+mFsiA+IGNow6luZzsgIzkxNzINCivphbMgPiB5w6xuOyAjOTE3Mw0KK+mFtCA+IHTDujsgIzkxNzQNCivphbUgPiB4acOgbzsgIzkxNzUNCivphbYgPiBtw6lpOyAjOTE3Ng0KK+mFtyA+IGvDuTsgIzkxNzcNCivphbggPiBzdcSBbjsgIzkxNzgNCivphbkgPiBsw6hpOyAjOTE3OQ0KK+mFuiA+IHDDujsgIzkxN0ENCivphbsgPiB6w7lpOyAjOTE3Qg0KK+mFvCA+IGjEg2k7ICM5MTdDDQor6YW9ID4gecOgbjsgIzkxN0QNCivphb4gPiB4xK07ICM5MTdFDQor6YW/ID4gbmnDoG5nOyAjOTE3Rg0KK+mGgCA+IHfDqWk7ICM5MTgwDQor6YaBID4gbMO5OyAjOTE4MQ0KK+mGgiA+IGzEg247ICM5MTgyDQor6YaDID4gecSBbjsgIzkxODMNCivphoQgPiB0w6FvOyAjOTE4NA0KK+mGhSA+IHDEk2k7ICM5MTg1DQor6YaGID4gemjEg247ICM5MTg2DQor6YaHID4gY2jDum47ICM5MTg3DQor6YaIID4gdMOhbjsgIzkxODgNCivphokgPiB6w7lpOyAjOTE4OQ0KK+mGiiA+IGNow7lvOyAjOTE4QQ0KK+mGiyA+IGPDuTsgIzkxOEINCivphowgPiBrxatuOyAjOTE4Qw0KK+mGjSA+IHTDrTsgIzkxOEQNCivpho4gPiBtacOhbjsgIzkxOEUNCivpho8gPiBkxas7ICM5MThGDQor6YaQID4gaMO6OyAjOTE5MA0KK+mGkSA+IHjFrTsgIzkxOTENCivphpIgPiB4xK1uZzsgIzkxOTINCivphpMgPiB0xINuOyAjOTE5Mw0KK+mGlCA+IGrEq3U7ICM5MTk0DQor6YaVID4gY2jDum47ICM5MTk1DQor6YaWID4gecO5bjsgIzkxOTYNCivphpcgPiBww7I7ICM5MTk3DQor6YaYID4ga8OoOyAjOTE5OA0KK+mGmSA+IHPFjXU7ICM5MTk5DQor6YaaID4gbcOtOyAjOTE5QQ0KK+mGmyA+IHF1w6FuOyAjOTE5Qg0KK+mGnCA+IGNoxY91OyAjOTE5Qw0KK+mGnSA+IGPDum87ICM5MTlEDQor6YaeID4gecO5bjsgIzkxOUUNCivphp8gPiB5w7JuZzsgIzkxOUYNCivphqAgPiDDoG5nOyAjOTFBMA0KK+mGoSA+IHpow6A7ICM5MUExDQor6YaiID4gaMSDaTsgIzkxQTINCivphqMgPiB0w6FuZzsgIzkxQTMNCivphqQgPiBqacOgbmc7ICM5MUE0DQor6YalID4gcGnEg287ICM5MUE1DQor6YamID4gc2jEg247ICM5MUE2DQor6YanID4gecO5OyAjOTFBNw0KK+mGqCA+IGzDrTsgIzkxQTgNCivphqkgPiB6w6FvOyAjOTFBOQ0KK+mGqiA+IGzDoW87ICM5MUFBDQor6YarID4gecSrOyAjOTFBQg0KK+mGrCA+IGppw6BuZzsgIzkxQUMNCivphq0gPiBwxas7ICM5MUFEDQor6YauID4gamnDoG87ICM5MUFFDQor6YavID4geMSrOyAjOTFBRg0KK+mGsCA+IHTDoW47ICM5MUIwDQor6YaxID4gcMOyOyAjOTFCMQ0KK+mGsiA+IG7Ds25nOyAjOTFCMg0KK+mGsyA+IHnDrDsgIzkxQjMNCivphrQgPiBsxK07ICM5MUI0DQor6Ya1ID4gasO5OyAjOTFCNQ0KK+mGtiA+IGppw6BvOyAjOTFCNg0KK+mGtyA+IHnDrDsgIzkxQjcNCivphrggPiBuacOgbmc7ICM5MUI4DQor6Ya5ID4gcsO6OyAjOTFCOQ0KK+mGuiA+IHjFq247ICM5MUJBDQor6Ya7ID4gY2jDs3U7ICM5MUJCDQor6Ya8ID4gecOgbjsgIzkxQkMNCivphr0gPiBsw61uZzsgIzkxQkQNCivphr4gPiBtw607ICM5MUJFDQor6Ya/ID4gbcOtOyAjOTFCRg0KK+mHgCA+IG5pw6BuZzsgIzkxQzANCivph4EgPiB4w6xuOyAjOTFDMQ0KK+mHgiA+IGppw6BvOyAjOTFDMg0KK+mHgyA+IHjErTsgIzkxQzMNCivph4QgPiBtw607ICM5MUM0DQor6YeFID4gecOgbjsgIzkxQzUNCivph4YgPiBiacOgbjsgIzkxQzYNCivph4cgPiBjxINpOyAjOTFDNw0KK+mHiCA+IHNow6w7ICM5MUM4DQor6YeJID4gecOydTsgIzkxQzkNCivph4ogPiBzaMOsOyAjOTFDQQ0KK+mHiyA+IHNow6w7ICM5MUNCDQor6YeMID4gbMStOyAjOTFDQw0KK+mHjSA+IHpow7JuZzsgIzkxQ0QNCivph44gPiB5xJU7ICM5MUNFDQor6YePID4gbGnDoG5nOyAjOTFDRg0KK+mHkCA+IGzDrTsgIzkxRDANCivph5EgPiBqxKtuOyAjOTFEMQ0KK+mHkiA+IGrEq24nICd6w6wnICdww6FuZzsgIzkxRDINCivph5MgPiBxw611OyAjOTFEMw0KK+mHlCA+IHnErTsgIzkxRDQNCivph5UgPiBkacSDbzsgIzkxRDUNCivph5YgPiBkxIFvOyAjOTFENg0KK+mHlyA+IHpoxIFvOyAjOTFENw0KK+mHmCA+IGTEq25nOyAjOTFEOA0KK+mHmSA+IHDDsjsgIzkxRDkNCivph5ogPiBxw611OyAjOTFEQQ0KK+mHmyA+IGjDqTsgIzkxREINCivph5wgPiBmxa07ICM5MURDDQor6YedID4gemjEk247ICM5MUREDQor6YeeID4gemjDrTsgIzkxREUNCivph58gPiBixIE7ICM5MURGDQor6YegID4gbHXDoG47ICM5MUUwDQor6YehID4gZsWtOyAjOTFFMQ0KK+mHoiA+IG7DoWk7ICM5MUUyDQor6YejID4gZGnDoG87ICM5MUUzDQor6YekID4gc2jDoG47ICM5MUU0DQor6YelID4gcWnEg287ICM5MUU1DQor6YemID4ga8OydTsgIzkxRTYNCivph6cgPiBjaHXDoG47ICM5MUU3DQor6YeoID4gesStOyAjOTFFOA0KK+mHqSA+IGbDoW47ICM5MUU5DQor6YeqID4gecO6OyAjOTFFQQ0KK+mHqyA+IGh1w6E7ICM5MUVCDQor6YesID4gaMOgbjsgIzkxRUMNCivph60gPiBnxY1uZzsgIzkxRUQNCivph64gPiBxw607ICM5MUVFDQor6YevID4gbcOhbmc7ICM5MUVGDQor6YewID4gcsOsOyAjOTFGMA0KK+mHsSA+IGTDrDsgIzkxRjENCivph7IgPiBzw6w7ICM5MUYyDQor6YezID4geMOsOyAjOTFGMw0KK+mHtCA+IHnDrDsgIzkxRjQNCivph7UgPiBjaMSBaTsgIzkxRjUNCivph7YgPiBzaMSrOyAjOTFGNg0KK+mHtyA+IHTFrTsgIzkxRjcNCivph7ggPiB4w6w7ICM5MUY4DQor6Ye5ID4gbseaOyAjOTFGOQ0KK+mHuiA+IHFpxIFuOyAjOTFGQQ0KK+mHvCA+IGppw6BuOyAjOTFGQw0KK+mHvSA+IHDEqzsgIzkxRkQNCivph74gPiB5w6k7ICM5MUZFDQor6Ye/ID4gecOtbjsgIzkxRkYNCivpiIAgPiBixIM7ICM5MjAwDQor6YiBID4gZsSBbmc7ICM5MjAxDQor6YiCID4gY2jDqW47ICM5MjAyDQor6YiDID4geMOtbmc7ICM5MjAzDQor6YiEID4gdMWPdTsgIzkyMDQNCivpiIUgPiB5dcOoOyAjOTIwNQ0KK+mIhiA+IHnDoW47ICM5MjA2DQor6YiHID4gZsWrOyAjOTIwNw0KK+mIiCA+IHDEqzsgIzkyMDgNCivpiIkgPiBuw6A7ICM5MjA5DQor6YiKID4geMSrbjsgIzkyMEENCivpiIsgPiDDqTsgIzkyMEINCivpiIwgPiBqdcOpOyAjOTIwQw0KK+mIjSA+IGTDuW47ICM5MjBEDQor6YiOID4gZ8WNdTsgIzkyMEUNCivpiI8gPiB5xK1uOyAjOTIwRg0KK+mIkCA+IHFpw6FuOyAjOTIxMA0KK+mIkSA+IGLEg247ICM5MjExDQor6YiSID4gasOtOyAjOTIxMg0KK+mIkyA+IHLDqW47ICM5MjEzDQor6YiUID4gY2jEgW87ICM5MjE0DQor6YiVID4gbsStdTsgIzkyMTUNCivpiJYgPiBmxJNuOyAjOTIxNg0KK+mIlyA+IHnFrW47ICM5MjE3DQor6YiYID4gasStOyAjOTIxOA0KK+mImSA+IHHDrW47ICM5MjE5DQor6YiaID4gcMOtOyAjOTIxQQ0KK+mImyA+IGfFq287ICM5MjFCDQor6YicID4gaMOzbmc7ICM5MjFDDQor6YidID4gecOtbjsgIzkyMUQNCivpiJ4gPiBqxatuOyAjOTIxRQ0KK+mInyA+IHNoxKs7ICM5MjFGDQor6YigID4gecOsOyAjOTIyMA0KK+mIoSA+IHpoxY1uZzsgIzkyMjENCivpiKIgPiBuacSTOyAjOTIyMg0KK+mIoyA+IGfDoGk7ICM5MjIzDQor6YikID4gcsOsOyAjOTIyNA0KK+mIpSA+IGjDum87ICM5MjI1DQor6YimID4gdMOgaTsgIzkyMjYNCivpiKcgPiBrw6BuZzsgIzkyMjcNCivpiKwgPiBkw7pvOyAjOTIyQw0KK+mIrSA+IHrEqzsgIzkyMkQNCivpiK4gPiBuxK07ICM5MjJFDQor6YivID4gdMO6OyAjOTIyRg0KK+mIsCA+IHNow6w7ICM5MjMwDQor6YixID4gbcOtbjsgIzkyMzENCivpiLIgPiBnxas7ICM5MjMyDQor6YizID4gxJM7ICM5MjMzDQor6Yi0ID4gbMOtbmc7ICM5MjM0DQor6Yi1ID4gYsOsbmc7ICM5MjM1DQor6Yi2ID4gecOtOyAjOTIzNg0KK+mItyA+IGfFqzsgIzkyMzcNCivpiLggPiBiw6E7ICM5MjM4DQor6Yi5ID4gcMSrOyAjOTIzOQ0KK+mIuiA+IHnDuTsgIzkyM0ENCivpiLsgPiBzw6w7ICM5MjNCDQor6Yi8ID4gesO6bzsgIzkyM0MNCivpiL0gPiBiw7k7ICM5MjNEDQor6Yi+ID4gecOzdTsgIzkyM0UNCivpiL8gPiBkacOgbjsgIzkyM0YNCivpiYAgPiBqacSDOyAjOTI0MA0KK+mJgSA+IHpoxJNuOyAjOTI0MQ0KK+mJgiA+IHNoxK07ICM5MjQyDQor6YmDID4gc2jDrDsgIzkyNDMNCivpiYQgPiB0acSVOyAjOTI0NA0KK+mJhSA+IGrDuTsgIzkyNDUNCivpiYYgPiB6aMSBbjsgIzkyNDYNCivpiYcgPiBzaMSrOyAjOTI0Nw0KK+mJiCA+IHNow6k7ICM5MjQ4DQor6YmJID4geHXDoG47ICM5MjQ5DQor6YmKID4gemjEgW87ICM5MjRBDQor6YmLID4gYsOgbzsgIzkyNEINCivpiYwgPiBow6k7ICM5MjRDDQor6YmNID4gYsOsOyAjOTI0RA0KK+mJjiA+IHNoxJNuZzsgIzkyNEUNCivpiY8gPiBjaMO6OyAjOTI0Rg0KK+mJkCA+IHNow607ICM5MjUwDQor6YmRID4gYsOzOyAjOTI1MQ0KK+mJkiA+IHpow7k7ICM5MjUyDQor6YmTID4gY2jDrDsgIzkyNTMNCivpiZQgPiB6xIE7ICM5MjU0DQor6YmVID4gcMWNOyAjOTI1NQ0KK+mJliA+IHTDs25nOyAjOTI1Ng0KK+mJlyA+IHFpw6FuOyAjOTI1Nw0KK+mJmCA+IGbDujsgIzkyNTgNCivpiZkgPiB6aMSDaTsgIzkyNTkNCivpiZogPiBsxK11OyAjOTI1QQ0KK+mJmyA+IHFpxIFuOyAjOTI1Qg0KK+mJnCA+IGbDujsgIzkyNUMNCivpiZ0gPiBsw6w7ICM5MjVEDQor6YmeID4geXXDqDsgIzkyNUUNCivpiZ8gPiBwxKs7ICM5MjVGDQor6YmgID4gecSBbmc7ICM5MjYwDQor6YmhID4gYsOgbjsgIzkyNjENCivpiaIgPiBixY07ICM5MjYyDQor6YmjID4gamnDqTsgIzkyNjMNCivpiaQgPiBnxY11OyAjOTI2NA0KK+mJpSA+IHNow7k7ICM5MjY1DQor6YmmID4gemjEk25nOyAjOTI2Ng0KK+mJpyA+IG3FrTsgIzkyNjcNCivpiaggPiBuxK07ICM5MjY4DQor6YmpID4gbmnEkzsgIzkyNjkNCivpiaogPiBkw6w7ICM5MjZBDQor6YmrID4gamnEgTsgIzkyNkINCivpiawgPiBtw7k7ICM5MjZDDQor6YmtID4gZMOgbjsgIzkyNkQNCivpia4gPiBzaMSTbjsgIzkyNkUNCivpia8gPiB5xK07ICM5MjZGDQor6YmwID4gc8SrOyAjOTI3MA0KK+mJsSA+IGt1w6BuZzsgIzkyNzENCivpibIgPiBrxIM7ICM5MjcyDQor6YmzID4gYsSVaTsgIzkyNzMNCivpibQgPiBqacOgbjsgIzkyNzQNCivpibUgPiB0w7NuZzsgIzkyNzUNCivpibYgPiB4w61uZzsgIzkyNzYNCivpibcgPiBow7NuZzsgIzkyNzcNCivpibggPiBqacSDbzsgIzkyNzgNCivpibkgPiBjaMStOyAjOTI3OQ0KK+mJuiA+IMOocjsgIzkyN0ENCivpibsgPiBnw6g7ICM5MjdCDQor6Ym8ID4gYsStbmc7ICM5MjdDDQor6Ym9ID4gc2jDrDsgIzkyN0QNCivpib4gPiBtw7N1OyAjOTI3RQ0KK+mJvyA+IGppw6E7ICM5MjdGDQor6YqAID4gecOtbjsgIzkyODANCivpioEgPiBqxatuOyAjOTI4MQ0KK+mKgiA+IHpoxY11OyAjOTI4Mg0KK+mKgyA+IGNow7JuZzsgIzkyODMNCivpioQgPiBzaMOgbmc7ICM5Mjg0DQor6YqFID4gdMOzbmc7ICM5Mjg1DQor6YqGID4gbcOyOyAjOTI4Ng0KK+mKhyA+IGzDqGk7ICM5Mjg3DQor6YqIID4gasSrOyAjOTI4OA0KK+mKiSA+IHnDuTsgIzkyODkNCivpioogPiB4w7k7ICM5MjhBDQor6YqLID4gcsOpbjsgIzkyOEINCivpiowgPiB6w7luOyAjOTI4Qw0KK+mKjSA+IHpow6w7ICM5MjhEDQor6YqOID4gccSrb25nOyAjOTI4RQ0KK+mKjyA+IHNow6BuOyAjOTI4Rg0KK+mKkCA+IGNow6w7ICM5MjkwDQor6YqRID4geGnEg247ICM5MjkxDQor6YqSID4geMOtbmc7ICM5MjkyDQor6YqTID4gcXXDoW47ICM5MjkzDQor6YqUID4gcMSrOyAjOTI5NA0KK+mKlSA+IHRpxJU7ICM5Mjk1DQor6YqWID4gemjFqzsgIzkyOTYNCivpipcgPiBow7N1OyAjOTI5Nw0KK+mKmCA+IG3DrW5nOyAjOTI5OA0KK+mKmSA+IGt1xIM7ICM5Mjk5DQor6YqaID4gecOhbzsgIzkyOUENCivpipsgPiB4acSBbjsgIzkyOUINCivpipwgPiB4acOhbjsgIzkyOUMNCivpip0gPiB4xKt1OyAjOTI5RA0KK+mKniA+IGrFq247ICM5MjlFDQor6YqfID4gY2jEgTsgIzkyOUYNCivpiqAgPiBsxINvOyAjOTJBMA0KK+mKoSA+IGrDrTsgIzkyQTENCivpiqIgPiBwxK07ICM5MkEyDQor6YqjID4gcsWtOyAjOTJBMw0KK+mKpCA+IG3ErTsgIzkyQTQNCivpiqUgPiB5xK07ICM5MkE1DQor6YqmID4gecSrbjsgIzkyQTYNCivpiqcgPiBndcSBbmc7ICM5MkE3DQor6YqoID4gxIFuOyAjOTJBOA0KK+mKqSA+IGRpxY11OyAjOTJBOQ0KK+mKqiA+IHnFj3U7ICM5MkFBDQor6YqrID4gc8OoOyAjOTJBQg0KK+mKrCA+IGvDoG87ICM5MkFDDQor6YqtID4gcWnDoW47ICM5MkFEDQor6YquID4gbHXDoW47ICM5MkFFDQor6YqwID4gxIFpOyAjOTJCMA0KK+mKsSA+IGRpw6BvOyAjOTJCMQ0KK+mKsiA+IGjDoG47ICM5MkIyDQor6YqzID4gcsO5aTsgIzkyQjMNCivpirQgPiBzaMOsOyAjOTJCNA0KK+mKtSA+IGvEk25nOyAjOTJCNQ0KK+mKtiA+IHHDrXU7ICM5MkI2DQor6Yq3ID4geGnEgW87ICM5MkI3DQor6Yq4ID4gemjDqTsgIzkyQjgNCivpirkgPiB4w6x1OyAjOTJCOQ0KK+mKuiA+IHrDoG5nOyAjOTJCQQ0KK+mKuyA+IHTDrDsgIzkyQkINCivpirwgPiBjw7lvOyAjOTJCQw0KK+mKvSA+IGd1xIE7ICM5MkJEDQor6Yq+ID4gZ8WPbmc7ICM5MkJFDQor6Yq/ID4gemjFjW5nOyAjOTJCRg0KK+mLgCA+IGTDsnU7ICM5MkMwDQor6YuBID4gbMeaOyAjOTJDMQ0KK+mLgiA+IG3DqWk7ICM5MkMyDQor6YuDID4gbMOhbmc7ICM5MkMzDQor6YuEID4gd8SDbjsgIzkyQzQNCivpi4UgPiB4xKtuOyAjOTJDNQ0KK+mLhiA+IHnDum47ICM5MkM2DQor6YuHID4gYsOoaTsgIzkyQzcNCivpi4ggPiB3w7k7ICM5MkM4DQor6YuJID4gc8O5OyAjOTJDOQ0KK+mLiiA+IHnDuTsgIzkyQ0ENCivpi4sgPiBjaMOhbjsgIzkyQ0INCivpi4wgPiB0xK1uZzsgIzkyQ0MNCivpi40gPiBiw7M7ICM5MkNEDQor6YuOID4gaMOgbjsgIzkyQ0UNCivpi48gPiBqacOhOyAjOTJDRg0KK+mLkCA+IGjDs25nOyAjOTJEMA0KK+mLkSA+IGN1xIFuOyAjOTJEMQ0KK+mLkiA+IGbEk25nOyAjOTJEMg0KK+mLkyA+IGNoxIFuOyAjOTJEMw0KK+mLlCA+IHfEg247ICM5MkQ0DQor6YuVID4gemjDrDsgIzkyRDUNCivpi5YgPiBzxKs7ICM5MkQ2DQor6YuXID4geHXEgW47ICM5MkQ3DQor6YuYID4gd8O6OyAjOTJEOA0KK+mLmSA+IHfDujsgIzkyRDkNCivpi5ogPiB0acOhbzsgIzkyREENCivpi5sgPiBnxY9uZzsgIzkyREINCivpi5wgPiB6aMO6bzsgIzkyREMNCivpi50gPiBsx5xlOyAjOTJERA0KK+mLniA+IHjDrW5nOyAjOTJERQ0KK+mLnyA+IHFpxIFuOyAjOTJERg0KK+mLoCA+IHNow6huOyAjOTJFMA0KK+mLoSA+IGjDoW47ICM5MkUxDQor6YuiID4gbMecZTsgIzkyRTINCivpi6MgPiB4acOpOyAjOTJFMw0KK+mLpCA+IGNow7o7ICM5MkU0DQor6YulID4gemjDqG5nOyAjOTJFNQ0KK+mLpiA+IGrDujsgIzkyRTYNCivpi6cgPiB4acOgbjsgIzkyRTcNCivpi6ggPiB0acSVOyAjOTJFOA0KK+mLqSA+IG3DoW5nOyAjOTJFOQ0KK+mLqiA+IHDFqzsgIzkyRUENCivpi6sgPiBsw607ICM5MkVCDQor6YusID4gcMOgbjsgIzkyRUMNCivpi60gPiByw7lpOyAjOTJFRA0KK+mLriA+IGNow6luZzsgIzkyRUUNCivpi68gPiBnw6BvOyAjOTJFRg0KK+mLsCA+IGzErTsgIzkyRjANCivpi7EgPiB0w6g7ICM5MkYxDQor6YuzID4gemjDuTsgIzkyRjMNCivpi7UgPiB0xas7ICM5MkY1DQor6Yu2ID4gbMStdTsgIzkyRjYNCivpi7cgPiB6w7lpOyAjOTJGNw0KK+mLuCA+IGrDuTsgIzkyRjgNCivpi7kgPiBjaMSDbmc7ICM5MkY5DQor6Yu6ID4geXXEgW47ICM5MkZBDQor6Yu7ID4gamnDoG47ICM5MkZCDQor6Yu8ID4gZ8SBbmc7ICM5MkZDDQor6Yu9ID4gZGnDoG87ICM5MkZEDQor6Yu+ID4gdMOhbzsgIzkyRkUNCivpi78gPiBjaMOhbmc7ICM5MkZGDQor6YyAID4gbMO6bjsgIzkzMDANCivpjIEgPiBrdcSDOyAjOTMwMQ0KK+mMgiA+IGzDrW5nOyAjOTMwMg0KK+mMgyA+IGLEk2k7ICM5MzAzDQor6YyEID4gbMO5OyAjOTMwNA0KK+mMhSA+IGzDrTsgIzkzMDUNCivpjIYgPiBxacSBbmc7ICM5MzA2DQor6YyHID4gcMOzdTsgIzkzMDcNCivpjIggPiBqdcOgbjsgIzkzMDgNCivpjIkgPiBtw61uOyAjOTMwOQ0KK+mMiiA+IHrDuWk7ICM5MzBBDQor6YyLID4gcMOpbmc7ICM5MzBCDQor6YyMID4gw6BuOyAjOTMwQw0KK+mMjSA+IHDDrTsgIzkzMEQNCivpjI4gPiB4acOgbjsgIzkzMEUNCivpjI8gPiB5w6A7ICM5MzBGDQor6YyQID4gemjFq2k7ICM5MzEwDQor6YyRID4gbMOoaTsgIzkzMTENCivpjJIgPiDEgTsgIzkzMTINCivpjJMgPiBrxY1uZzsgIzkzMTMNCivpjJQgPiB0w6A7ICM5MzE0DQor6YyVID4ga8WrbjsgIzkzMTUNCivpjJYgPiBkxa07ICM5MzE2DQor6YyXID4gd8OoaTsgIzkzMTcNCivpjJggPiBjaMO6aTsgIzkzMTgNCivpjJkgPiB6xKs7ICM5MzE5DQor6YyaID4gemjEk25nOyAjOTMxQQ0KK+mMmyA+IGLEk247ICM5MzFCDQor6YycID4gbmnEkzsgIzkzMUMNCivpjJ0gPiBjw7NuZzsgIzkzMUQNCivpjJ4gPiBxw7puOyAjOTMxRQ0KK+mMnyA+IHTDoW47ICM5MzFGDQor6YygID4gZMOsbmc7ICM5MzIwDQor6YyhID4gccOtOyAjOTMyMQ0KK+mMoiA+IHFpw6FuOyAjOTMyMg0KK+mMoyA+IHpow7pvOyAjOTMyMw0KK+mMpCA+IHHDrTsgIzkzMjQNCivpjKUgPiB5w7k7ICM5MzI1DQor6YymID4gasStbjsgIzkzMjYNCivpjKcgPiBndcSDbjsgIzkzMjcNCivpjKggPiBtw6FvOyAjOTMyOA0KK+mMqSA+IGNoxIFuZzsgIzkzMjkNCivpjKogPiB0acSDbjsgIzkzMkENCivpjKsgPiB4w607ICM5MzJCDQor6YysID4gbGnDoG47ICM5MzJDDQor6YytID4gdMOhbzsgIzkzMkQNCivpjK4gPiBnw7k7ICM5MzJFDQor6YyvID4gY8O5bzsgIzkzMkYNCivpjLAgPiBzaMO5OyAjOTMzMA0KK+mMsSA+IHpoxJNuOyAjOTMzMQ0KK+mMsiA+IGzDuTsgIzkzMzINCivpjLMgPiBtxJVuZzsgIzkzMzMNCivpjLQgPiBsw7k7ICM5MzM0DQor6Yy1ID4gaHXEgTsgIzkzMzUNCivpjLYgPiBiacSDbzsgIzkzMzYNCivpjLcgPiBnw6E7ICM5MzM3DQor6Yy4ID4gbMOhaTsgIzkzMzgNCivpjLkgPiBrxJVuOyAjOTMzOQ0KK+mMvCA+IG7DoGk7ICM5MzNDDQor6Yy9ID4gd8SDbjsgIzkzM0QNCivpjL4gPiB6w6BuOyAjOTMzRQ0KK+mNgCA+IGTDqTsgIzkzNDANCivpjYEgPiB4acSBbjsgIzkzNDENCivpjYMgPiBoxatvOyAjOTM0Mw0KK+mNhCA+IGxpw6BuZzsgIzkzNDQNCivpjYYgPiBtw6luOyAjOTM0Ng0KK+mNhyA+IGvEg2k7ICM5MzQ3DQor6Y2IID4gecSrbmc7ICM5MzQ4DQor6Y2JID4gZMSrOyAjOTM0OQ0KK+mNiiA+IGxpw6BuOyAjOTM0QQ0KK+mNiyA+IGfFq287ICM5MzRCDQor6Y2MID4geGnEg247ICM5MzRDDQor6Y2NID4gZMO5OyAjOTM0RA0KK+mNjiA+IHTDujsgIzkzNEUNCivpjY8gPiB3w6lpOyAjOTM0Rg0KK+mNkCA+IGPFjW5nOyAjOTM1MA0KK+mNkSA+IGbDuTsgIzkzNTENCivpjZIgPiByw7N1OyAjOTM1Mg0KK+mNkyA+IGrDrTsgIzkzNTMNCivpjZQgPiDDqDsgIzkzNTQNCivpjZUgPiByw7N1OyAjOTM1NQ0KK+mNliA+IGNoxJVuOyAjOTM1Ng0KK+mNlyA+IHTDrTsgIzkzNTcNCivpjZggPiB6aMOhOyAjOTM1OA0KK+mNmSA+IGjDsm5nOyAjOTM1OQ0KK+mNmiA+IHnDoW5nOyAjOTM1QQ0KK+mNmyA+IGR1w6BuOyAjOTM1Qg0KK+mNnCA+IHhpxIE7ICM5MzVDDQor6Y2dID4gecO6OyAjOTM1RA0KK+mNniA+IGvEk25nOyAjOTM1RQ0KK+mNnyA+IHjEq25nOyAjOTM1Rg0KK+mNoCA+IGh1w6FuZzsgIzkzNjANCivpjaEgPiB3xJVpOyAjOTM2MQ0KK+mNoiA+IGbDuTsgIzkzNjINCivpjaMgPiB6aMSBbzsgIzkzNjMNCivpjaQgPiBjaMOhOyAjOTM2NA0KK+mNpSA+IHFpw6g7ICM5MzY1DQor6Y2mID4gc2jDqTsgIzkzNjYNCivpjacgPiBoxY1uZzsgIzkzNjcNCivpjaggPiBrw7ppOyAjOTM2OA0KK+mNqSA+IHRpxINuOyAjOTM2OQ0KK+mNqiA+IG3Ds3U7ICM5MzZBDQor6Y2rID4gcWnEgW87ICM5MzZCDQor6Y2sID4gcWnEgW87ICM5MzZDDQor6Y2tID4gaMOzdTsgIzkzNkQNCivpja4gPiB0xY11OyAjOTM2RQ0KK+mNryA+IGPFjW5nOyAjOTM2Rg0KK+mNsCA+IGh1w6FuOyAjOTM3MA0KK+mNsSA+IHnDqDsgIzkzNzENCivpjbIgPiBtw61uOyAjOTM3Mg0KK+mNsyA+IGppw6BuOyAjOTM3Mw0KK+mNtCA+IGR1xIFuOyAjOTM3NA0KK+mNtSA+IGppw6BuOyAjOTM3NQ0KK+mNtiA+IHPFjW5nOyAjOTM3Ng0KK+mNtyA+IGvFq2k7ICM5Mzc3DQor6Y24ID4gaMO6OyAjOTM3OA0KK+mNuSA+IHh1xIFuOyAjOTM3OQ0KK+mNuiA+IGTFrW87ICM5MzdBDQor6Y27ID4gamnDqTsgIzkzN0INCivpjbwgPiB6aMSTbjsgIzkzN0MNCivpjb0gPiBiacSBbjsgIzkzN0QNCivpjb4gPiB6aMWNbmc7ICM5MzdFDQor6Y2/ID4gesSrOyAjOTM3Rg0KK+mOgCA+IHjEq3U7ICM5MzgwDQor6Y6BID4gecOpOyAjOTM4MQ0KK+mOgiA+IG3ElWk7ICM5MzgyDQor6Y6DID4gcMOgaTsgIzkzODMNCivpjoQgPiDEgWk7ICM5Mzg0DQor6Y6FID4gamnDqDsgIzkzODUNCivpjocgPiBtw6lpOyAjOTM4Nw0KK+mOiCA+IGNoxatvOyAjOTM4OA0KK+mOiSA+IHTDoDsgIzkzODkNCivpjoogPiBiw6BuZzsgIzkzOEENCivpjosgPiB4acOhOyAjOTM4Qg0KK+mOjCA+IGxpw6FuOyAjOTM4Qw0KK+mOjSA+IHPFrW87ICM5MzhEDQor6Y6OID4geMOsOyAjOTM4RQ0KK+mOjyA+IGzDrXU7ICM5MzhGDQor6Y6QID4gesO6OyAjOTM5MA0KK+mOkSA+IHnDqDsgIzkzOTENCivpjpIgPiBuw7J1OyAjOTM5Mg0KK+mOkyA+IHfEk25nOyAjOTM5Mw0KK+mOlCA+IHLDs25nOyAjOTM5NA0KK+mOlSA+IHTDoW5nOyAjOTM5NQ0KK+mOliA+IHPFrW87ICM5Mzk2DQor6Y6XID4gcWnEgW5nOyAjOTM5Nw0KK+mOmCA+IGfDqTsgIzkzOTgNCivpjpkgPiBzaMO5bzsgIzkzOTkNCivpjpogPiBjaMO6aTsgIzkzOUENCivpjpsgPiBiw7M7ICM5MzlCDQor6Y6cID4gcMOhbjsgIzkzOUMNCivpjp0gPiBzw6A7ICM5MzlEDQor6Y6eID4gYsOsOyAjOTM5RQ0KK+mOnyA+IHPEg25nOyAjOTM5Rg0KK+mOoCA+IGfEgW5nOyAjOTNBMA0KK+mOoSA+IHrEqzsgIzkzQTENCivpjqIgPiB3w7k7ICM5M0EyDQor6Y6jID4gecOsbmc7ICM5M0EzDQor6Y6kID4gaHXEg25nOyAjOTNBNA0KK+mOpSA+IHRpw6FvOyAjOTNBNQ0KK+mOpiA+IGzDrXU7ICM5M0E2DQor6Y6nID4ga8SDaTsgIzkzQTcNCivpjqggPiBzxa1uOyAjOTNBOA0KK+mOqSA+IHNoxIE7ICM5M0E5DQor6Y6qID4gc8WNdTsgIzkzQUENCivpjqsgPiB3w6BuOyAjOTNBQg0KK+mOrCA+IGjDoG87ICM5M0FDDQor6Y6tID4gemjDqG47ICM5M0FEDQor6Y6uID4gemjDqG47ICM5M0FFDQor6Y6vID4gbMWtbzsgIzkzQUYNCivpjrAgPiB5w6w7ICM5M0IwDQor6Y6xID4geXXDoW47ICM5M0IxDQor6Y6yID4gdMSDbmc7ICM5M0IyDQor6Y6zID4gbmnDqDsgIzkzQjMNCivpjrQgPiB4w607ICM5M0I0DQor6Y61ID4gamnEgTsgIzkzQjUNCivpjrYgPiBnxJM7ICM5M0I2DQor6Y63ID4gbcSDOyAjOTNCNw0KK+mOuCA+IGp1xIFuOyAjOTNCOA0KK+mOuyA+IHPFrW87ICM5M0JCDQor6Y6/ID4gbsOhOyAjOTNCRg0KK+mPgCA+IGzFrTsgIzkzQzANCivpj4EgPiBzxa1vOyAjOTNDMQ0KK+mPgiA+IMWNdTsgIzkzQzINCivpj4MgPiB6w7o7ICM5M0MzDQor6Y+EID4gdHXDoW47ICM5M0M0DQor6Y+FID4geMSrdTsgIzkzQzUNCivpj4YgPiBndcOgbjsgIzkzQzYNCivpj4cgPiB4dcOgbjsgIzkzQzcNCivpj4ggPiBsacOgbjsgIzkzQzgNCivpj4kgPiBzaMOydTsgIzkzQzkNCivpj4ogPiDDoW87ICM5M0NBDQor6Y+LID4gbcSDbjsgIzkzQ0INCivpj4wgPiBtw7I7ICM5M0NDDQor6Y+NID4gbMO6bzsgIzkzQ0QNCivpj44gPiBiw6w7ICM5M0NFDQor6Y+PID4gd8OoaTsgIzkzQ0YNCivpj5AgPiBsw611OyAjOTNEMA0KK+mPkSA+IGTDrTsgIzkzRDENCivpj5IgPiBxacSBbzsgIzkzRDINCivpj5MgPiBjxY1uZzsgIzkzRDMNCivpj5QgPiB5w607ICM5M0Q0DQor6Y+VID4gbMO5OyAjOTNENQ0KK+mPliA+IMOhbzsgIzkzRDYNCivpj5cgPiBrxJNuZzsgIzkzRDcNCivpj5ggPiBxacSBbmc7ICM5M0Q4DQor6Y+ZID4gY8WraTsgIzkzRDkNCivpj5ogPiBxw6w7ICM5M0RBDQor6Y+bID4gY2jDoW5nOyAjOTNEQg0KK+mPnCA+IHTEgW5nOyAjOTNEQw0KK+mPnSA+IG3DoG47ICM5M0REDQor6Y+eID4gecWNbmc7ICM5M0RFDQor6Y+fID4gY2jEg247ICM5M0RGDQor6Y+gID4gZsSTbmc7ICM5M0UwDQor6Y+hID4gasOsbmc7ICM5M0UxDQor6Y+iID4gYmnEgW87ICM5M0UyDQor6Y+jID4gc2jDuTsgIzkzRTMNCivpj6QgPiBsw7J1OyAjOTNFNA0KK+mPpSA+IHjDrHU7ICM5M0U1DQor6Y+mID4gY8WNbmc7ICM5M0U2DQor6Y+nID4gbMOzbmc7ICM5M0U3DQor6Y+oID4gesOgbjsgIzkzRTgNCivpj6kgPiBqacOgbjsgIzkzRTkNCivpj6ogPiBjw6FvOyAjOTNFQQ0KK+mPqyA+IGzDrTsgIzkzRUINCivpj6wgPiB4acOgOyAjOTNFQw0KK+mPrSA+IHjEqzsgIzkzRUQNCivpj64gPiBrxIFuZzsgIzkzRUUNCivpj7AgPiBiw6huZzsgIzkzRjANCivpj7MgPiB6aMSTbmc7ICM5M0YzDQor6Y+0ID4gbMO5OyAjOTNGNA0KK+mPtSA+IGh1w6E7ICM5M0Y1DQor6Y+2ID4gasOtOyAjOTNGNg0KK+mPtyA+IHDDujsgIzkzRjcNCivpj7ggPiBow7lpOyAjOTNGOA0KK+mPuSA+IHFpxIFuZzsgIzkzRjkNCivpj7ogPiBwxY07ICM5M0ZBDQor6Y+7ID4gbMOtbjsgIzkzRkINCivpj7wgPiBzxa1vOyAjOTNGQw0KK+mPvSA+IHjDrHU7ICM5M0ZEDQor6Y++ID4gc8SDbjsgIzkzRkUNCivpj78gPiBjaMSTbmc7ICM5M0ZGDQor6ZCAID4ga8O5aTsgIzk0MDANCivpkIEgPiBzxKs7ICM5NDAxDQor6ZCCID4gbMOsdTsgIzk0MDINCivpkIMgPiBuw6FvOyAjOTQwMw0KK+mQhCA+IGjDqW5nOyAjOTQwNA0KK+mQhSA+IHBpxJU7ICM5NDA1DQor6ZCGID4gc8O5aTsgIzk0MDYNCivpkIcgPiBmw6FuOyAjOTQwNw0KK+mQiCA+IHFpw6FvOyAjOTQwOA0KK+mQiSA+IHF1xIFuOyAjOTQwOQ0KK+mQiiA+IHnDoW5nOyAjOTQwQQ0KK+mQiyA+IHTDoG5nOyAjOTQwQg0KK+mQjCA+IHhpw6BuZzsgIzk0MEMNCivpkI0gPiBqdcOpOyAjOTQwRA0KK+mQjiA+IGppxIFvOyAjOTQwRQ0KK+mQjyA+IHrFq247ICM5NDBGDQor6ZCQID4gbGnDoW87ICM5NDEwDQor6ZCRID4gamnDqTsgIzk0MTENCivpkJIgPiBsw6FvOyAjOTQxMg0KK+mQkyA+IGTDuWk7ICM5NDEzDQor6ZCUID4gdMOhbjsgIzk0MTQNCivpkJUgPiB6xIFuOyAjOTQxNQ0KK+mQliA+IGrEqzsgIzk0MTYNCivpkJcgPiBqacSDbjsgIzk0MTcNCivpkJggPiB6aMWNbmc7ICM5NDE4DQor6ZCZID4gZMSTbmc7ICM5NDE5DQor6ZCaID4gecOgOyAjOTQxQQ0KK+mQmyA+IHnDrG5nOyAjOTQxQg0KK+mQnCA+IGTDuWk7ICM5NDFDDQor6ZCdID4ganXDqTsgIzk0MUQNCivpkJ4gPiBuw7J1OyAjOTQxRQ0KK+mQnyA+IHTDrDsgIzk0MUYNCivpkKAgPiBwxa07ICM5NDIwDQor6ZChID4gdGnElTsgIzk0MjENCivpkKQgPiBkxK1uZzsgIzk0MjQNCivpkKUgPiBzaMOgbjsgIzk0MjUNCivpkKYgPiBrxIFpOyAjOTQyNg0KK+mQpyA+IGppxINuOyAjOTQyNw0KK+mQqCA+IGbDqGk7ICM5NDI4DQor6ZCpID4gc8O5aTsgIzk0MjkNCivpkKogPiBsxa07ICM5NDJBDQor6ZCrID4ganXEgW47ICM5NDJCDQor6ZCsID4gaMO5aTsgIzk0MkMNCivpkK0gPiB5w7k7ICM5NDJEDQor6ZCuID4gbGnDoW47ICM5NDJFDQor6ZCvID4gemjDum87ICM5NDJGDQor6ZCwID4gcWnEgW87ICM5NDMwDQor6ZCxID4gcWnEgW47ICM5NDMxDQor6ZCyID4gemjDum87ICM5NDMyDQor6ZCzID4gbMOpaTsgIzk0MzMNCivpkLQgPiBiw6w7ICM5NDM0DQor6ZC1ID4gdGnElTsgIzk0MzUNCivpkLYgPiBodcOhbjsgIzk0MzYNCivpkLcgPiB5w6g7ICM5NDM3DQor6ZC4ID4gZMO6bzsgIzk0MzgNCivpkLkgPiBnxa1vOyAjOTQzOQ0KK+mQuiA+IGTEgW5nOyAjOTQzQQ0KK+mQuyA+IGrDuTsgIzk0M0INCivpkLwgPiBmw6luOyAjOTQzQw0KK+mQvSA+IGTDoTsgIzk0M0QNCivpkL4gPiBiw6hpOyAjOTQzRQ0KK+mQvyA+IHnDrDsgIzk0M0YNCivpkYAgPiDDoGk7ICM5NDQwDQor6ZGBID4gesWNbmc7ICM5NDQxDQor6ZGCID4geMO5bjsgIzk0NDINCivpkYMgPiBkacOgbzsgIzk0NDMNCivpkYQgPiB6aMO5OyAjOTQ0NA0KK+mRhSA+IGjDqW5nOyAjOTQ0NQ0KK+mRhiA+IHpow7lpOyAjOTQ0Ng0KK+mRhyA+IGrEqzsgIzk0NDcNCivpkYggPiBuacSTOyAjOTQ0OA0KK+mRiSA+IHTDoDsgIzk0NDkNCivpkYogPiBow7lvOyAjOTQ0QQ0KK+mRiyA+IHHDrG5nOyAjOTQ0Qg0KK+mRjCA+IGLEq247ICM5NDRDDQor6ZGNID4gecSrbmc7ICM5NDREDQor6ZGOID4ga8O5aTsgIzk0NEUNCivpkY8gPiBuw61uZzsgIzk0NEYNCivpkZAgPiB4xas7ICM5NDUwDQor6ZGRID4gamnDoG47ICM5NDUxDQor6ZGSID4gamnDoG47ICM5NDUyDQor6ZGUID4gY2jEgzsgIzk0NTQNCivpkZUgPiB6aMOsOyAjOTQ1NQ0KK+mRliA+IG1pw6g7ICM5NDU2DQor6ZGXID4gbMOtOyAjOTQ1Nw0KK+mRmCA+IGzDqWk7ICM5NDU4DQor6ZGZID4gasSrOyAjOTQ1OQ0KK+mRmiA+IHp1w6BuOyAjOTQ1QQ0KK+mRmyA+IGt1w6BuZzsgIzk0NUINCivpkZwgPiBzaMOgbmc7ICM5NDVDDQor6ZGdID4gcMOpbmc7ICM5NDVEDQor6ZGeID4gbMOgOyAjOTQ1RQ0KK+mRnyA+IGTDujsgIzk0NUYNCivpkaAgPiBzaMO5bzsgIzk0NjANCivpkaEgPiBjaMO5bzsgIzk0NjENCivpkaIgPiBsx5w7ICM5NDYyDQor6ZGjID4gYmnEgW87ICM5NDYzDQor6ZGkID4gYsOgbzsgIzk0NjQNCivpkaUgPiBsxa07ICM5NDY1DQor6ZGoID4gbMOzbmc7ICM5NDY4DQor6ZGpID4gw6g7ICM5NDY5DQor6ZGqID4gbMO6OyAjOTQ2QQ0KK+mRqyA+IHjEq247ICM5NDZCDQor6ZGsID4gamnDoG47ICM5NDZDDQor6ZGtID4gbMOgbjsgIzk0NkQNCivpka4gPiBiw7M7ICM5NDZFDQor6ZGvID4gamnEgW47ICM5NDZGDQor6ZGwID4gecOgbzsgIzk0NzANCivpkbEgPiBjaMOhbjsgIzk0NzENCivpkbIgPiB4acSBbmc7ICM5NDcyDQor6ZGzID4gamnDoG47ICM5NDczDQor6ZG0ID4geMSrOyAjOTQ3NA0KK+mRtSA+IGd1w6BuOyAjOTQ3NQ0KK+mRtiA+IGPDoW5nOyAjOTQ3Ng0KK+mRtyA+IG5pw6g7ICM5NDc3DQor6ZG4ID4gbMSVaTsgIzk0NzgNCivpkbkgPiBjdcOgbjsgIzk0NzkNCivpkbogPiBxw7o7ICM5NDdBDQor6ZG7ID4gcMOgbjsgIzk0N0INCivpkbwgPiBsw7pvOyAjOTQ3Qw0KK+mRvSA+IHp1w6BuOyAjOTQ3RA0KK+mRviA+IGx1w6FuOyAjOTQ3RQ0KK+mRvyA+IHrDoW87ICM5NDdGDQor6ZKAID4gbmnDqDsgIzk0ODANCivpkoEgPiBqdcOpOyAjOTQ4MQ0KK+mSgiA+IHTEg25nOyAjOTQ4Mg0KK+mSgyA+IHNoxa07ICM5NDgzDQor6ZKEID4gbMOhbjsgIzk0ODQNCivpkoUgPiBqxKtuOyAjOTQ4NQ0KK+mShiA+IHHDrXU7ICM5NDg2DQor6ZKHID4gecStOyAjOTQ4Nw0KK+mSiCA+IHpoxJNuOyAjOTQ4OA0KK+mSiSA+IGTEq25nOyAjOTQ4OQ0KK+mSiiA+IHpoxIFvOyAjOTQ4QQ0KK+mSiyA+IHDDsjsgIzk0OEINCivpkowgPiBkacSDbzsgIzk0OEMNCivpko0gPiB0xa07ICM5NDhEDQor6ZKOID4gcWnEgW47ICM5NDhFDQor6ZKPID4gY2h1w6BuOyAjOTQ4Rg0KK+mSkCA+IHNow6BuOyAjOTQ5MA0KK+mSkSA+IGrDrTsgIzk0OTENCivpkpIgPiBmw6FuOyAjOTQ5Mg0KK+mSkyA+IGRpw6BvOyAjOTQ5Mw0KK+mSlCA+IG3DqW47ICM5NDk0DQor6ZKVID4gbseaOyAjOTQ5NQ0KK+mSliA+IHjDrTsgIzk0OTYNCivpkpcgPiBjaMSBaTsgIzk0OTcNCivpkpggPiB4w61uZzsgIzk0OTgNCivpkpkgPiBnw6BpOyAjOTQ5OQ0KK+mSmiA+IGLDuTsgIzk0OUENCivpkpsgPiB0w6BpOyAjOTQ5Qg0KK+mSnCA+IGrDuTsgIzk0OUMNCivpkp0gPiBkw7luOyAjOTQ5RA0KK+mSniA+IGNoxIFvOyAjOTQ5RQ0KK+mSnyA+IHpoxY1uZzsgIzk0OUYNCivpkqAgPiBuw6A7ICM5NEEwDQor6ZKhID4gYsOoaTsgIzk0QTENCivpkqIgPiBnxIFuZzsgIzk0QTINCivpkqMgPiBixINuOyAjOTRBMw0KK+mSpCA+IHFpw6FuOyAjOTRBNA0KK+mSpSA+IHnDoG87ICM5NEE1DQor6ZKmID4gccSrbjsgIzk0QTYNCivpkqcgPiBqxatuOyAjOTRBNw0KK+mSqCA+IHfDuTsgIzk0QTgNCivpkqkgPiBnxY11OyAjOTRBOQ0KK+mSqiA+IGvDoG5nOyAjOTRBQQ0KK+mSqyA+IGbEgW5nOyAjOTRBQg0KK+mSrCA+IGjDum87ICM5NEFDDQor6ZKtID4gdMWPdTsgIzk0QUQNCivpkq4gPiBuxK11OyAjOTRBRQ0KK+mSryA+IGLEgzsgIzk0QUYNCivpkrAgPiB5w7k7ICM5NEIwDQor6ZKxID4gcWnDoW47ICM5NEIxDQor6ZKyID4gemjEk25nOyAjOTRCMg0KK+mSsyA+IHFpw6FuOyAjOTRCMw0KK+mStCA+IGfFqzsgIzk0QjQNCivpkrUgPiBixY07ICM5NEI1DQor6ZK2ID4gxJM7ICM5NEI2DQor6ZK3ID4gcMWNOyAjOTRCNw0KK+mSuCA+IGLDuTsgIzk0QjgNCivpkrkgPiBiw6E7ICM5NEI5DQor6ZK6ID4geXXDqDsgIzk0QkENCivpkrsgPiB6dcOgbjsgIzk0QkINCivpkrwgPiBtw7k7ICM5NEJDDQor6ZK9ID4gZMOgbjsgIzk0QkQNCivpkr4gPiBqacSDOyAjOTRCRQ0KK+mSvyA+IGRpw6BuOyAjOTRCRg0KK+mTgCA+IHnDs3U7ICM5NEMwDQor6ZOBID4gdGnElTsgIzk0QzENCivpk4IgPiBiw7M7ICM5NEMyDQor6ZODID4gbMOtbmc7ICM5NEMzDQor6ZOEID4gc2jDuW87ICM5NEM0DQor6ZOFID4gcWnEgW47ICM5NEM1DQor6ZOGID4gbMStdTsgIzk0QzYNCivpk4cgPiBiw6BvOyAjOTRDNw0KK+mTiCA+IHNow6w7ICM5NEM4DQor6ZOJID4geHXDoG47ICM5NEM5DQor6ZOKID4gc2jDqTsgIzk0Q0ENCivpk4sgPiBiw6w7ICM5NENCDQor6ZOMID4gbsStOyAjOTRDQw0KK+mTjSA+IHDEqzsgIzk0Q0QNCivpk44gPiBkw7pvOyAjOTRDRQ0KK+mTjyA+IHjDrW5nOyAjOTRDRg0KK+mTkCA+IGvDoG87ICM5NEQwDQor6ZORID4gbMSDbzsgIzk0RDENCivpk5IgPiDDqHI7ICM5NEQyDQor6ZOTID4gbcOhbmc7ICM5NEQzDQor6ZOUID4gecOgOyAjOTRENA0KK+mTlSA+IHnFj3U7ICM5NEQ1DQor6ZOWID4gY2jDqW5nOyAjOTRENg0KK+mTlyA+IGppw6E7ICM5NEQ3DQor6ZOYID4gecOpOyAjOTREOA0KK+mTmSA+IG7DoW87ICM5NEQ5DQor6ZOaID4gemjDrDsgIzk0REENCivpk5sgPiBkxIFuZzsgIzk0REINCivpk5wgPiB0w7NuZzsgIzk0REMNCivpk50gPiBsx5o7ICM5NEREDQor6ZOeID4gZGnDoG87ICM5NERFDQor6ZOfID4gecSrbjsgIzk0REYNCivpk6AgPiBrxINpOyAjOTRFMA0KK+mToSA+IHpow6E7ICM5NEUxDQor6ZOiID4gemjFqzsgIzk0RTINCivpk6MgPiB4acSDbjsgIzk0RTMNCivpk6QgPiB0xK1uZzsgIzk0RTQNCivpk6UgPiBkxKt1OyAjOTRFNQ0KK+mTpiA+IHhpxIFuOyAjOTRFNg0KK+mTpyA+IGh1w6E7ICM5NEU3DQor6ZOoID4gcXXDoW47ICM5NEU4DQor6ZOpID4gc2jEgTsgIzk0RTkNCivpk6ogPiBqacOhOyAjOTRFQQ0KK+mTqyA+IHnDoW87ICM5NEVCDQor6ZOsID4gZ8OoOyAjOTRFQw0KK+mTrSA+IG3DrW5nOyAjOTRFRA0KK+mTriA+IHpoxJNuZzsgIzk0RUUNCivpk68gPiBzw6g7ICM5NEVGDQor6ZOwID4gamnEg287ICM5NEYwDQor6ZOxID4gecStOyAjOTRGMQ0KK+mTsiA+IGNoxINuOyAjOTRGMg0KK+mTsyA+IGNow7JuZzsgIzk0RjMNCivpk7QgPiB0w6BuZzsgIzk0RjQNCivpk7UgPiDEgW47ICM5NEY1DQor6ZO2ID4gecOtbjsgIzk0RjYNCivpk7cgPiByxa07ICM5NEY3DQor6ZO4ID4gemjDuTsgIzk0RjgNCivpk7kgPiBsw6FvOyAjOTRGOQ0KK+mTuiA+IHDFqzsgIzk0RkENCivpk7sgPiB3w7o7ICM5NEZCDQor6ZO8ID4gbMOhaTsgIzk0RkMNCivpk70gPiB0w6g7ICM5NEZEDQor6ZO+ID4gbGnDoG47ICM5NEZFDQor6ZO/ID4ga8STbmc7ICM5NEZGDQor6ZSAID4geGnEgW87ICM5NTAwDQor6ZSBID4gc8WtbzsgIzk1MDENCivplIIgPiBsxK07ICM5NTAyDQor6ZSDID4gemjDqG5nOyAjOTUwMw0KK+mUhCA+IGNow7o7ICM5NTA0DQor6ZSFID4gZ8WrbzsgIzk1MDUNCivplIYgPiBnw6BvOyAjOTUwNg0KK+mUhyA+IHRpxJU7ICM5NTA3DQor6ZSIID4geMOsdTsgIzk1MDgNCivplIkgPiBjw7lvOyAjOTUwOQ0KK+mUiiA+IGzHnGU7ICM5NTBBDQor6ZSLID4gZsSTbmc7ICM5NTBCDQor6ZSMID4geMSrbjsgIzk1MEMNCivplI0gPiBsxK11OyAjOTUwRA0KK+mUjiA+IGvEgWk7ICM5NTBFDQor6ZSPID4gamnEg247ICM5NTBGDQor6ZSQID4gcsO5aTsgIzk1MTANCivplJEgPiB0w6w7ICM5NTExDQor6ZSSID4gbMOhbmc7ICM5NTEyDQor6ZSTID4gcWnEgW47ICM5NTEzDQor6ZSUID4gasO6OyAjOTUxNA0KK+mUlSA+IMSBOyAjOTUxNQ0KK+mUliA+IHFpxIFuZzsgIzk1MTYNCivplJcgPiBkxa1vOyAjOTUxNw0KK+mUmCA+IHRpxINuOyAjOTUxOA0KK+mUmSA+IGPDuW87ICM5NTE5DQor6ZSaID4gbcOhbzsgIzk1MUENCivplJsgPiBixJNuOyAjOTUxQg0KK+mUnCA+IHHDrTsgIzk1MUMNCivplJ0gPiBkw6k7ICM5NTFEDQor6ZSeID4ga3XEgzsgIzk1MUUNCivplJ8gPiBrxatuOyAjOTUxRg0KK+mUoCA+IGNoxIFuZzsgIzk1MjANCivplKEgPiB4w607ICM5NTIxDQor6ZSiID4gZ8O5OyAjOTUyMg0KK+mUoyA+IGzDum87ICM5NTIzDQor6ZSkID4gY2jDumk7ICM5NTI0DQor6ZSlID4gemjFq2k7ICM5NTI1DQor6ZSmID4gasStbjsgIzk1MjYNCivplKcgPiB6aMOsOyAjOTUyNw0KK+mUqCA+IHhpxIFuOyAjOTUyOA0KK+mUqSA+IGp1w6BuOyAjOTUyOQ0KK+mUqiA+IGjFq287ICM5NTJBDQor6ZSrID4gcMOzdTsgIzk1MkINCivplKwgPiB0w6FuOyAjOTUyQw0KK+mUrSA+IGTDrG5nOyAjOTUyRA0KK+mUriA+IGppw6BuOyAjOTUyRQ0KK+mUryA+IGrDuTsgIzk1MkYNCivplLAgPiBtxJVuZzsgIzk1MzANCivplLEgPiB6xKs7ICM5NTMxDQor6ZSyID4gcWnDqDsgIzk1MzINCivplLMgPiB5xKtuZzsgIzk1MzMNCivplLQgPiBrxINpOyAjOTUzNA0KK+mUtSA+IHFpxIFuZzsgIzk1MzUNCivplLYgPiBzxY1uZzsgIzk1MzYNCivplLcgPiDDqDsgIzk1MzcNCivplLggPiBjaMOhOyAjOTUzOA0KK+mUuSA+IHFpxIFvOyAjOTUzOQ0KK+mUuiA+IHpoxY1uZzsgIzk1M0ENCivplLsgPiBkdcOgbjsgIzk1M0INCivplLwgPiBzxY11OyAjOTUzQw0KK+mUvSA+IGh1w6FuZzsgIzk1M0QNCivplL4gPiBodcOhbjsgIzk1M0UNCivplL8gPiDEgWk7ICM5NTNGDQor6ZWAID4gZMO5OyAjOTU0MA0KK+mVgSA+IG3ElWk7ICM5NTQxDQor6ZWCID4gbMOydTsgIzk1NDINCivplYMgPiB6xKs7ICM5NTQzDQor6ZWEID4gZsOoaTsgIzk1NDQNCivplYUgPiBtw6lpOyAjOTU0NQ0KK+mVhiA+IG3DsjsgIzk1NDYNCivplYcgPiB6aMOobjsgIzk1NDcNCivplYggPiBiw7M7ICM5NTQ4DQor6ZWJID4gZ8OpOyAjOTU0OQ0KK+mViiA+IG5pw6g7ICM5NTRBDQor6ZWLID4gdMSDbmc7ICM5NTRCDQor6ZWMID4ganXEgW47ICM5NTRDDQor6ZWNID4gbmnDqDsgIzk1NEQNCivplY4gPiBuw6E7ICM5NTRFDQor6ZWPID4gbMOtdTsgIzk1NEYNCivplZAgPiBow6BvOyAjOTU1MA0KK+mVkSA+IGLDoG5nOyAjOTU1MQ0KK+mVkiA+IHnDrDsgIzk1NTINCivplZMgPiBqacSBOyAjOTU1Mw0KK+mVlCA+IGLEq247ICM5NTU0DQor6ZWVID4gcsOzbmc7ICM5NTU1DQor6ZWWID4gYmnEgW87ICM5NTU2DQor6ZWXID4gdMSBbmc7ICM5NTU3DQor6ZWYID4gbcOgbjsgIzk1NTgNCivplZkgPiBsw7pvOyAjOTU1OQ0KK+mVmiA+IGLDqG5nOyAjOTU1QQ0KK+mVmyA+IHnFjW5nOyAjOTU1Qg0KK+mVnCA+IGrDrG5nOyAjOTU1Qw0KK+mVnSA+IGTDrTsgIzk1NUQNCivplZ4gPiB6w7o7ICM5NTVFDQor6ZWfID4geHXDoG47ICM5NTVGDQor6ZWgID4gbMOtdTsgIzk1NjANCivplaEgPiB0w6FuOyAjOTU2MQ0KK+mVoiA+IGp1w6k7ICM5NTYyDQor6ZWjID4gbGnDoW87ICM5NTYzDQor6ZWkID4gcMO6OyAjOTU2NA0KK+mVpSA+IGzFrTsgIzk1NjUNCivplaYgPiBkw7lpOyAjOTU2Ng0KK+mVpyA+IGzDoG47ICM5NTY3DQor6ZWoID4gcMWtOyAjOTU2OA0KK+mVqSA+IGN1w6BuOyAjOTU2OQ0KK+mVqiA+IHFpxIFuZzsgIzk1NkENCivplasgPiBkxJNuZzsgIzk1NkINCivplawgPiBow7lvOyAjOTU2Qw0KK+mVrSA+IGzDqWk7ICM5NTZEDQor6ZWuID4gaHXDoW47ICM5NTZFDQor6ZWvID4gemjDum87ICM5NTZGDQor6ZWwID4gbGnDoW47ICM5NTcwDQor6ZWxID4gecOsOyAjOTU3MQ0KK+mVsiA+IGNoxIM7ICM5NTcyDQor6ZWzID4gYmnEgW87ICM5NTczDQor6ZW0ID4gbMOgOyAjOTU3NA0KK+mVtSA+IGNow6FuOyAjOTU3NQ0KK+mVtiA+IHhpxIFuZzsgIzk1NzYNCivplbcgPiBjaMOhbmc7ICM5NTc3DQor6ZW4ID4gY2jDoW5nOyAjOTU3OA0KK+mVuSA+IGrErXU7ICM5NTc5DQor6ZW6ID4gxINvOyAjOTU3QQ0KK+mVuyA+IGRpw6k7ICM5NTdCDQor6ZW8ID4gccWrOyAjOTU3Qw0KK+mVvSA+IGxpxINvOyAjOTU3RA0KK+mVviA+IG3DrTsgIzk1N0UNCivplb8gPiBjaMOhbmc7ICM5NTdGDQor6ZaAID4gbcOpbjsgIzk1ODANCivploEgPiBtw6A7ICM5NTgxDQor6ZaCID4gc2h1xIFuOyAjOTU4Mg0KK+mWgyA+IHNoxINuOyAjOTU4Mw0KK+mWhCA+IGjDuW87ICM5NTg0DQor6ZaFID4gbcOpbjsgIzk1ODUNCivploYgPiB5w6BuOyAjOTU4Ng0KK+mWhyA+IGLDrDsgIzk1ODcNCivploggPiBow6BuOyAjOTU4OA0KK+mWiSA+IGLDrDsgIzk1ODkNCivplosgPiBrxIFpOyAjOTU4Qg0KK+mWjCA+IGvDoG5nOyAjOTU4Qw0KK+mWjSA+IGLEk25nOyAjOTU4RA0KK+mWjiA+IGjDs25nOyAjOTU4RQ0KK+mWjyA+IHLDuW47ICM5NThGDQor6ZaQID4gc8OgbjsgIzk1OTANCivplpEgPiB4acOhbjsgIzk1OTENCivplpIgPiB4acOhbjsgIzk1OTINCivplpMgPiBqacSBbjsgIzk1OTMNCivplpQgPiBtxK1uOyAjOTU5NA0KK+mWlSA+IHhpxIE7ICM5NTk1DQor6ZaXID4gZMOydTsgIzk1OTcNCivplpggPiB6aMOhOyAjOTU5OA0KK+mWmSA+IG7DoG87ICM5NTk5DQor6ZaaID4gamlhbjsgIzk1OUENCivplpsgPiBwxJNuZzsgIzk1OUINCivplpwgPiB4acSDOyAjOTU5Qw0KK+mWnSA+IGzDrW5nOyAjOTU5RA0KK+mWniA+IGJpw6BuOyAjOTU5RQ0KK+mWnyA+IGLDrDsgIzk1OUYNCivplqAgPiByw7luOyAjOTVBMA0KK+mWoSA+IGjDqTsgIzk1QTENCivplqIgPiBndcSBbjsgIzk1QTINCivplqMgPiBnw6k7ICM5NUEzDQor6ZakID4gZ8OpOyAjOTVBNA0KK+mWpSA+IGbDoTsgIzk1QTUNCivplqYgPiBjaMO5OyAjOTVBNg0KK+mWpyA+IGjDsm5nOyAjOTVBNw0KK+mWqCA+IGfFq2k7ICM5NUE4DQor6ZapID4gbcStbjsgIzk1QTkNCivplqsgPiBrxa1uOyAjOTVBQg0KK+mWrCA+IGzEg25nOyAjOTVBQw0KK+mWrSA+IGzHmDsgIzk1QUQNCivplq4gPiB0w61uZzsgIzk1QUUNCivplq8gPiBzaMOgOyAjOTVBRg0KK+mWsCA+IGrDujsgIzk1QjANCivplrEgPiB5dcOoOyAjOTVCMQ0KK+mWsiA+IHl1w6g7ICM5NUIyDQor6ZazID4gY2jEg247ICM5NUIzDQor6Za0ID4gccO5OyAjOTVCNA0KK+mWtSA+IGzDrG47ICM5NUI1DQor6Za2ID4gY2jEgW5nOyAjOTVCNg0KK+mWtyA+IHNow6BpOyAjOTVCNw0KK+mWuCA+IGvFrW47ICM5NUI4DQor6Za5ID4gecSBbjsgIzk1QjkNCivplrogPiBtw61uOyAjOTVCQQ0KK+mWuyA+IHnDoW47ICM5NUJCDQor6Za8ID4gw6g7ICM5NUJDDQor6Za9ID4gaMWrbjsgIzk1QkQNCivplr4gPiB5w7k7ICM5NUJFDQor6Za/ID4gd8OpbjsgIzk1QkYNCivpl4AgPiB4acOgbmc7ICM5NUMwDQor6ZeBID4gYmFvOyAjOTVDMQ0KK+mXgiA+IHhpw6BuZzsgIzk1QzINCivpl4MgPiBxw7k7ICM5NUMzDQor6ZeEID4gecSDbzsgIzk1QzQNCivpl4UgPiB3w6luOyAjOTVDNQ0KK+mXhiA+IGLEg247ICM5NUM2DQor6ZeHID4gw6BuOyAjOTVDNw0KK+mXiCA+IHfDqWk7ICM5NUM4DQor6ZeJID4gecSrbjsgIzk1QzkNCivpl4ogPiBrw7lvOyAjOTVDQQ0KK+mXiyA+IHF1w6g7ICM5NUNCDQor6ZeMID4gbMOhbjsgIzk1Q0MNCivpl40gPiBkxas7ICM5NUNEDQor6ZeQID4gdGnDoW47ICM5NUQwDQor6ZeRID4gbmnDqDsgIzk1RDENCivpl5IgPiB0w6A7ICM5NUQyDQor6ZeTID4ga8SDaTsgIzk1RDMNCivpl5QgPiBow6k7ICM5NUQ0DQor6ZeVID4gcXXDqDsgIzk1RDUNCivpl5YgPiBjaHXEg25nOyAjOTVENg0KK+mXlyA+IGd1xIFuOyAjOTVENw0KK+mXmCA+IGTDsnU7ICM5NUQ4DQor6ZeZID4gccStOyAjOTVEOQ0KK+mXmiA+IGvFq2k7ICM5NURBDQor6ZebID4gdMOhbmc7ICM5NURCDQor6ZecID4gZ3XEgW47ICM5NURDDQor6ZedID4gcGnDoW87ICM5NUREDQor6ZeeID4ga8OgbjsgIzk1REUNCivpl58gPiB4w6w7ICM5NURGDQor6ZegID4gaMO5aTsgIzk1RTANCivpl6EgPiBjaMSDbjsgIzk1RTENCivpl6IgPiBww6w7ICM5NUUyDQor6ZejID4gZMOgbmc7ICM5NUUzDQor6ZekID4gaHXDoW47ICM5NUU0DQor6ZelID4gdMOgOyAjOTVFNQ0KK+mXpiA+IHfDqW47ICM5NUU2DQor6ZeoID4gbcOpbjsgIzk1RTgNCivpl6kgPiBzaHXEgW47ICM5NUU5DQor6ZeqID4gc2jEg247ICM5NUVBDQor6ZerID4gecOgbjsgIzk1RUINCivpl6wgPiBow6BuOyAjOTVFQw0KK+mXrSA+IGLDrDsgIzk1RUQNCivpl64gPiB3w6huOyAjOTVFRQ0KK+mXryA+IGNodcSDbmc7ICM5NUVGDQor6ZewID4gcsO5bjsgIzk1RjANCivpl7EgPiB3w6lpOyAjOTVGMQ0KK+mXsiA+IHhpw6FuOyAjOTVGMg0KK+mXsyA+IGjDs25nOyAjOTVGMw0KK+mXtCA+IGppxIFuOyAjOTVGNA0KK+mXtSA+IG3ErW47ICM5NUY1DQor6Ze2ID4ga8Ogbmc7ICM5NUY2DQor6Ze3ID4gbcOobjsgIzk1RjcNCivpl7ggPiB6aMOhOyAjOTVGOA0KK+mXuSA+IG7DoG87ICM5NUY5DQor6Ze6ID4gZ8WraTsgIzk1RkENCivpl7sgPiB3w6luOyAjOTVGQg0KK+mXvCA+IHTDoDsgIzk1RkMNCivpl70gPiBtxK1uOyAjOTVGRA0KK+mXviA+IGzHmDsgIzk1RkUNCivpl78gPiBrxINpOyAjOTVGRg0KK+mYgCA+IGbDoTsgIzk2MDANCivpmIEgPiBnw6k7ICM5NjAxDQor6ZiCID4gaMOpOyAjOTYwMg0KK+mYgyA+IGvFrW47ICM5NjAzDQor6ZiEID4gasSrdTsgIzk2MDQNCivpmIUgPiB5dcOoOyAjOTYwNQ0KK+mYhiA+IGzEg25nOyAjOTYwNg0KK+mYhyA+IGTFqzsgIzk2MDcNCivpmIggPiB5w7k7ICM5NjA4DQor6ZiJID4gecSBbjsgIzk2MDkNCivpmIogPiBjaMSBbmc7ICM5NjBBDQor6ZiLID4geMOsOyAjOTYwQg0KK+mYjCA+IHfDqW47ICM5NjBDDQor6ZiNID4gaMWrbjsgIzk2MEQNCivpmI4gPiB5w6FuOyAjOTYwRQ0KK+mYjyA+IMOoOyAjOTYwRg0KK+mYkCA+IGNoxINuOyAjOTYxMA0KK+mYkSA+IGzDoW47ICM5NjExDQor6ZiSID4gccO5OyAjOTYxMg0KK+mYkyA+IGjDuWk7ICM5NjEzDQor6ZiUID4ga8O5bzsgIzk2MTQNCivpmJUgPiBxdcOoOyAjOTYxNQ0KK+mYliA+IGfDqTsgIzk2MTYNCivpmJcgPiB0acOhbjsgIzk2MTcNCivpmJggPiB0w6A7ICM5NjE4DQor6ZiZID4gcXXDqDsgIzk2MTkNCivpmJogPiBrw6BuOyAjOTYxQQ0KK+mYmyA+IGh1w6FuOyAjOTYxQg0KK+mYnCA+IGbDuTsgIzk2MUMNCivpmJ0gPiBmw7k7ICM5NjFEDQor6ZieID4gbMOoOyAjOTYxRQ0KK+mYnyA+IGTDuWk7ICM5NjFGDQor6ZigID4geMOsbjsgIzk2MjANCivpmKEgPiBxacSBbjsgIzk2MjENCivpmKIgPiB3w7k7ICM5NjIyDQor6ZijID4gecOsOyAjOTYyMw0KK+mYpCA+IHTDum87ICM5NjI0DQor6ZilID4gecSrbjsgIzk2MjUNCivpmKYgPiB5w6FuZzsgIzk2MjYNCivpmKcgPiBkxY91OyAjOTYyNw0KK+mYqCA+IMOoOyAjOTYyOA0KK+mYqSA+IHNoxJNuZzsgIzk2MjkNCivpmKogPiBixINuOyAjOTYyQQ0KK+mYqyA+IHDDqWk7ICM5NjJCDQor6ZisID4ga8STbmc7ICM5NjJDDQor6ZitID4gecWtbjsgIzk2MkQNCivpmK4gPiBydcSDbjsgIzk2MkUNCivpmK8gPiB6aMStOyAjOTYyRg0KK+mYsCA+IHDDrTsgIzk2MzANCivpmLEgPiBqxK1uZzsgIzk2MzENCivpmLIgPiBmw6FuZzsgIzk2MzINCivpmLMgPiB5w6FuZzsgIzk2MzMNCivpmLQgPiB5xKtuOyAjOTYzNA0KK+mYtSA+IHpow6huOyAjOTYzNQ0KK+mYtiA+IGppxJM7ICM5NjM2DQor6Zi3ID4gY2jEk25nOyAjOTYzNw0KK+mYuCA+IMOoOyAjOTYzOA0KK+mYuSA+IHHFqzsgIzk2MzkNCivpmLogPiBkxK07ICM5NjNBDQor6Zi7ID4gesWtOyAjOTYzQg0KK+mYvCA+IHrDuW87ICM5NjNDDQor6Zi9ID4gZGnDoG47ICM5NjNEDQor6Zi+ID4gbMStbmc7ICM5NjNFDQor6Zi/ID4gxIE7ICM5NjNGDQor6ZmAID4gdMO6bzsgIzk2NDANCivpmYEgPiB0w7pvOyAjOTY0MQ0KK+mZgiA+IHDFjTsgIzk2NDINCivpmYMgPiBixK1uZzsgIzk2NDMNCivpmYQgPiBmw7k7ICM5NjQ0DQor6ZmFID4gasOsOyAjOTY0NQ0KK+mZhiA+IGzDuTsgIzk2NDYNCivpmYcgPiBsxY9uZzsgIzk2NDcNCivpmYggPiBjaMOpbjsgIzk2NDgNCivpmYkgPiB4w61uZzsgIzk2NDkNCivpmYogPiBkw7lvOyAjOTY0QQ0KK+mZiyA+IGzDsnU7ICM5NjRCDQor6ZmMID4gbcOyOyAjOTY0Qw0KK+mZjSA+IGppw6BuZzsgIzk2NEQNCivpmY4gPiBzaMWrOyAjOTY0RQ0KK+mZjyA+IGTDuW87ICM5NjRGDQor6ZmQID4geGnDoG47ICM5NjUwDQor6ZmRID4gw6lyOyAjOTY1MQ0KK+mZkiA+IGfFrWk7ICM5NjUyDQor6ZmTID4gecWrOyAjOTY1Mw0KK+mZlCA+IGfEgWk7ICM5NjU0DQor6ZmVID4gc2jEg247ICM5NjU1DQor6ZmWID4geMO5bjsgIzk2NTYNCivpmZcgPiBxacOgbzsgIzk2NTcNCivpmZggPiB4w61uZzsgIzk2NTgNCivpmZkgPiBjaMO6bjsgIzk2NTkNCivpmZogPiBmw7k7ICM5NjVBDQor6ZmbID4gYsOsOyAjOTY1Qg0KK+mZnCA+IHhpw6E7ICM5NjVDDQor6ZmdID4gc2jEg247ICM5NjVEDQor6ZmeID4gc2jEk25nOyAjOTY1RQ0KK+mZnyA+IHpow6w7ICM5NjVGDQor6ZmgID4gcMWrOyAjOTY2MA0KK+mZoSA+IGTFj3U7ICM5NjYxDQor6ZmiID4geXXDoG47ICM5NjYyDQor6ZmjID4gemjDqG47ICM5NjYzDQor6ZmkID4gY2jDujsgIzk2NjQNCivpmaUgPiB4acOgbjsgIzk2NjUNCivpmacgPiBuacOoOyAjOTY2Nw0KK+mZqCA+IHnFrW47ICM5NjY4DQor6ZmpID4geGnEg247ICM5NjY5DQor6ZmqID4gcMOpaTsgIzk2NkENCivpmasgPiBww6lpOyAjOTY2Qg0KK+mZrCA+IHrFjXU7ICM5NjZDDQor6ZmtID4gecSrOyAjOTY2RA0KK+mZriA+IGTFrWk7ICM5NjZFDQor6ZmvID4gbMO6bjsgIzk2NkYNCivpmbAgPiB5xKtuOyAjOTY3MA0KK+mZsSA+IGrFqzsgIzk2NzENCivpmbIgPiBjaMO6aTsgIzk2NzINCivpmbMgPiBjaMOpbjsgIzk2NzMNCivpmbQgPiBww607ICM5Njc0DQor6Zm1ID4gbMOtbmc7ICM5Njc1DQor6Zm2ID4gdMOhbzsgIzk2NzYNCivpmbcgPiB4acOgbjsgIzk2NzcNCivpmbggPiBsw7k7ICM5Njc4DQor6Zm5ID4gc2hlbmc7ICM5Njc5DQor6Zm6ID4geGnEg247ICM5NjdBDQor6Zm7ID4gecSrbjsgIzk2N0INCivpmbwgPiB6aMWtOyAjOTY3Qw0KK+mZvSA+IHnDoW5nOyAjOTY3RA0KK+mZviA+IHLDqW5nOyAjOTY3RQ0KK+mZvyA+IHNoxINuOyAjOTY3Rg0KK+magCA+IGNow7NuZzsgIzk2ODANCivpmoEgPiB5w6BuOyAjOTY4MQ0KK+magiA+IHnEq247ICM5NjgyDQor6ZqDID4gecO6OyAjOTY4Mw0KK+mahCA+IHTDrTsgIzk2ODQNCivpmoUgPiB5w7o7ICM5Njg1DQor6ZqGID4gbMOzbmc7ICM5Njg2DQor6ZqHID4gd8STaTsgIzk2ODcNCivpmoggPiB3xJNpOyAjOTY4OA0KK+maiSA+IG5pw6g7ICM5Njg5DQor6ZqKID4gZMO5aTsgIzk2OEENCivpmosgPiBzw7ppOyAjOTY4Qg0KK+majCA+IMSDbjsgIzk2OEMNCivpmo0gPiBodcOhbmc7ICM5NjhEDQor6ZqOID4gamnEkzsgIzk2OEUNCivpmo8gPiBzw7ppOyAjOTY4Rg0KK+makCA+IHnErW47ICM5NjkwDQor6ZqRID4gZ8SBaTsgIzk2OTENCivpmpIgPiB5xINuOyAjOTY5Mg0KK+makyA+IGjFq2k7ICM5NjkzDQor6ZqUID4gZ8OpOyAjOTY5NA0KK+malSA+IHnFrW47ICM5Njk1DQor6ZqWID4gd8O5OyAjOTY5Ng0KK+malyA+IHfElWk7ICM5Njk3DQor6ZqYID4gw6BpOyAjOTY5OA0KK+mamSA+IHjDrDsgIzk2OTkNCivpmpogPiB0w6FuZzsgIzk2OUENCivpmpsgPiBqw6w7ICM5NjlCDQor6ZqcID4gemjDoG5nOyAjOTY5Qw0KK+manSA+IGTEg287ICM5NjlEDQor6ZqeID4gw6FvOyAjOTY5RQ0KK+manyA+IHjDrDsgIzk2OUYNCivpmqAgPiB5xK1uOyAjOTZBMA0KK+maoiA+IHLDoG87ICM5NkEyDQor6ZqjID4gbMOtbjsgIzk2QTMNCivpmqQgPiB0w7ppOyAjOTZBNA0KK+mapSA+IGTDqG5nOyAjOTZBNQ0KK+mapiA+IHDErTsgIzk2QTYNCivpmqcgPiBzw7lpOyAjOTZBNw0KK+maqCA+IHPDumk7ICM5NkE4DQor6ZqpID4gecO5OyAjOTZBOQ0KK+maqiA+IHhpxINuOyAjOTZBQQ0KK+maqyA+IGbEk247ICM5NkFCDQor6ZqsID4gbsStOyAjOTZBQw0KK+marSA+IMOpcjsgIzk2QUQNCivpmq4gPiBqxKs7ICM5NkFFDQor6ZqvID4gZMSDbzsgIzk2QUYNCivpmrAgPiB4w607ICM5NkIwDQor6ZqxID4gecStbjsgIzk2QjENCivpmrIgPiDDqTsgIzk2QjINCivpmrMgPiBoxatpOyAjOTZCMw0KK+matCA+IGzFj25nOyAjOTZCNA0KK+matSA+IHjEqzsgIzk2QjUNCivpmrYgPiBsw6w7ICM5NkI2DQor6Zq3ID4gbMOsOyAjOTZCNw0KK+mauCA+IGzDrDsgIzk2QjgNCivpmrkgPiB6aMWraTsgIzk2QjkNCivpmrogPiBow6g7ICM5NkJBDQor6Zq7ID4gemjEqzsgIzk2QkINCivpmrwgPiB6aMWtbjsgIzk2QkMNCivpmr0gPiBqw7luOyAjOTZCRA0KK+maviA+IG7DoW47ICM5NkJFDQor6Zq/ID4gecOsOyAjOTZCRg0KK+mbgCA+IHF1w6g7ICM5NkMwDQor6ZuBID4gecOgbjsgIzk2QzENCivpm4IgPiBxacOhbjsgIzk2QzINCivpm4MgPiB5xIM7ICM5NkMzDQor6ZuEID4geMOtb25nOyAjOTZDNA0KK+mbhSA+IHnEgzsgIzk2QzUNCivpm4YgPiBqw607ICM5NkM2DQor6ZuHID4gZ8O5OyAjOTZDNw0KK+mbiCA+IGh1w6FuOyAjOTZDOA0KK+mbiSA+IHpow6w7ICM5NkM5DQor6ZuKID4gZ8OydTsgIzk2Q0ENCivpm4sgPiBqw7luOyAjOTZDQg0KK+mbjCA+IGPDrTsgIzk2Q0MNCivpm40gPiB5xY1uZzsgIzk2Q0QNCivpm44gPiBqxas7ICM5NkNFDQor6ZuPID4gY2jDujsgIzk2Q0YNCivpm5AgPiBoxas7ICM5NkQwDQor6ZuRID4gesOhOyAjOTZEMQ0KK+mbkiA+IGzDuW87ICM5NkQyDQor6ZuTID4gecO6OyAjOTZEMw0KK+mblCA+IGNow7N1OyAjOTZENA0KK+mblSA+IGRpxIFvOyAjOTZENQ0KK+mbliA+IHPFq2k7ICM5NkQ2DQor6ZuXID4gaMOgbjsgIzk2RDcNCivpm5ggPiBow7lvOyAjOTZEOA0KK+mbmSA+IHNodcSBbmc7ICM5NkQ5DQor6ZuaID4gZ3XDoG47ICM5NkRBDQor6ZubID4gY2jDujsgIzk2REINCivpm5wgPiB6w6E7ICM5NkRDDQor6ZudID4gecWNbmc7ICM5NkREDQor6ZueID4gasSrOyAjOTZERQ0KK+mbnyA+IHjEqzsgIzk2REYNCivpm6AgPiBjaMOzdTsgIzk2RTANCivpm6EgPiBsw6x1OyAjOTZFMQ0KK+mboiA+IGzDrTsgIzk2RTINCivpm6MgPiBuw6FuOyAjOTZFMw0KK+mbpCA+IHh1w6k7ICM5NkU0DQor6ZulID4gesOhOyAjOTZFNQ0KK+mbpiA+IGrDrTsgIzk2RTYNCivpm6cgPiBqw607ICM5NkU3DQor6ZuoID4gecWtOyAjOTZFOA0KK+mbqSA+IHnDujsgIzk2RTkNCivpm6ogPiB4dcSVOyAjOTZFQQ0KK+mbqyA+IG7EgzsgIzk2RUINCivpm6wgPiBmxY91OyAjOTZFQw0KK+mbrSA+IHPDqDsgIzk2RUQNCivpm64gPiBtw7k7ICM5NkVFDQor6ZuvID4gd8OpbjsgIzk2RUYNCivpm7AgPiBmxJNuOyAjOTZGMA0KK+mbsSA+IHDDoW5nOyAjOTZGMQ0KK+mbsiA+IHnDum47ICM5NkYyDQor6ZuzID4gbMOsOyAjOTZGMw0KK+mbtCA+IGzDrDsgIzk2RjQNCivpm7UgPiDEg25nOyAjOTZGNQ0KK+mbtiA+IGzDrW5nOyAjOTZGNg0KK+mbtyA+IGzDqWk7ICM5NkY3DQor6Zu4ID4gw6FuOyAjOTZGOA0KK+mbuSA+IGLDoW87ICM5NkY5DQor6Zu6ID4gbcOpbmc7ICM5NkZBDQor6Zu7ID4gZGnDoG47ICM5NkZCDQor6Zu8ID4gZMOgbmc7ICM5NkZDDQor6Zu9ID4geMOtbmc7ICM5NkZEDQor6Zu+ID4gd8O5OyAjOTZGRQ0KK+mbvyA+IHpow6BvOyAjOTZGRg0KK+mcgCA+IHjFqzsgIzk3MDANCivpnIEgPiBqw6w7ICM5NzAxDQor6ZyCID4gbcO5OyAjOTcwMg0KK+mcgyA+IGNow6luOyAjOTcwMw0KK+mchCA+IHhpxIFvOyAjOTcwNA0KK+mchSA+IHpow6E7ICM5NzA1DQor6ZyGID4gdMOtbmc7ICM5NzA2DQor6ZyHID4gemjDqG47ICM5NzA3DQor6ZyIID4gcMOoaTsgIzk3MDgNCivpnIkgPiBtw6lpOyAjOTcwOQ0KK+mciiA+IGzDrW5nOyAjOTcwQQ0KK+mciyA+IHHEqzsgIzk3MEINCivpnIwgPiBjaMWNdTsgIzk3MEMNCivpnI0gPiBow7lvOyAjOTcwRA0KK+mcjiA+IHNow6A7ICM5NzBFDQor6ZyPID4gZsSTaTsgIzk3MEYNCivpnJAgPiB3xJNuZzsgIzk3MTANCivpnJEgPiB6aMSBbjsgIzk3MTENCivpnJIgPiB5xKtuOyAjOTcxMg0KK+mckyA+IG7DrTsgIzk3MTMNCivpnJQgPiBjaMOydTsgIzk3MTQNCivpnJUgPiB0w7puOyAjOTcxNQ0KK+mcliA+IGzDrW47ICM5NzE2DQor6ZyYID4gZMOybmc7ICM5NzE4DQor6ZyZID4gecSrbmc7ICM5NzE5DQor6ZyaID4gd8O5OyAjOTcxQQ0KK+mcmyA+IGzDrW5nOyAjOTcxQg0KK+mcnCA+IHNodcSBbmc7ICM5NzFDDQor6ZydID4gbMOtbmc7ICM5NzFEDQor6ZyeID4geGnDoTsgIzk3MUUNCivpnJ8gPiBow7NuZzsgIzk3MUYNCivpnKAgPiB5xKtuOyAjOTcyMA0KK+mcoSA+IG3DsjsgIzk3MjENCivpnKIgPiBtw6BpOyAjOTcyMg0KK+mcoyA+IHnFrW47ICM5NzIzDQor6ZykID4gbMOsdTsgIzk3MjQNCivpnKUgPiBtw6huZzsgIzk3MjUNCivpnKYgPiBixKtuOyAjOTcyNg0KK+mcpyA+IHfDuTsgIzk3MjcNCivpnKggPiB3w6hpOyAjOTcyOA0KK+mcqSA+IGjDuW87ICM5NzI5DQor6ZyqID4gecOtbjsgIzk3MkENCivpnKsgPiB4w607ICM5NzJCDQor6ZysID4gecOsOyAjOTcyQw0KK+mcrSA+IMSDaTsgIzk3MkQNCivpnK4gPiBkw6BuOyAjOTcyRQ0KK+mcryA+IGTDqG5nOyAjOTcyRg0KK+mcsCA+IHhpw6BuOyAjOTczMA0KK+mcsSA+IHnDuTsgIzk3MzENCivpnLIgPiBsw7k7ICM5NzMyDQor6ZyzID4gbMOzbmc7ICM5NzMzDQor6Zy0ID4gZMOgaTsgIzk3MzQNCivpnLUgPiBqw607ICM5NzM1DQor6Zy2ID4gcMOhbmc7ICM5NzM2DQor6Zy3ID4gecOhbmc7ICM5NzM3DQor6Zy4ID4gYsOgOyAjOTczOA0KK+mcuSA+IHDEqzsgIzk3MzkNCivpnLogPiB3w6lpOyAjOTczQQ0KK+mcvCA+IHjErTsgIzk3M0MNCivpnL0gPiBqw6w7ICM5NzNEDQor6Zy+ID4gbcOhaTsgIzk3M0UNCivpnL8gPiBtw6huZzsgIzk3M0YNCivpnYAgPiBtw6luZzsgIzk3NDANCivpnYEgPiBsw6lpOyAjOTc0MQ0KK+mdgiA+IGzDrDsgIzk3NDINCivpnYMgPiBow7lvOyAjOTc0Mw0KK+mdhCA+IMSDaTsgIzk3NDQNCivpnYUgPiBmw6hpOyAjOTc0NQ0KK+mdhiA+IGTDoGk7ICM5NzQ2DQor6Z2HID4gbMOzbmc7ICM5NzQ3DQor6Z2IID4gbMOtbmc7ICM5NzQ4DQor6Z2JID4gw6BpOyAjOTc0OQ0KK+mdiiA+IGbEk25nOyAjOTc0QQ0KK+mdiyA+IGzDrDsgIzk3NEINCivpnYwgPiBixINvOyAjOTc0Qw0KK+mdjiA+IGjDqDsgIzk3NEUNCivpnY8gPiBow6g7ICM5NzRGDQor6Z2QID4gYsOsbmc7ICM5NzUwDQor6Z2RID4gccSrbmc7ICM5NzUxDQor6Z2SID4gccSrbmc7ICM5NzUyDQor6Z2TID4gasOsbmc7ICM5NzUzDQor6Z2UID4gdGnEgW47ICM5NzU0DQor6Z2VID4gemjEk247ICM5NzU1DQor6Z2WID4gasOsbmc7ICM5NzU2DQor6Z2XID4gY2jDqG5nOyAjOTc1Nw0KK+mdmCA+IHHDrG5nOyAjOTc1OA0KK+mdmSA+IGrDrG5nOyAjOTc1OQ0KK+mdmiA+IGrDrG5nOyAjOTc1QQ0KK+mdmyA+IGRpw6BuOyAjOTc1Qg0KK+mdnCA+IGrDrG5nOyAjOTc1Qw0KK+mdnSA+IHRpxIFuOyAjOTc1RA0KK+mdniA+IGbEk2k7ICM5NzVFDQor6Z2fID4gZsSTaTsgIzk3NUYNCivpnaAgPiBrw6BvOyAjOTc2MA0KK+mdoSA+IG3ErTsgIzk3NjENCivpnaIgPiBtacOgbjsgIzk3NjINCivpnaMgPiBtacOgbjsgIzk3NjMNCivpnaQgPiBww6BvOyAjOTc2NA0KK+mdpSA+IHnDqDsgIzk3NjUNCivpnaYgPiB0acSDbjsgIzk3NjYNCivpnacgPiBow7lpOyAjOTc2Nw0KK+mdqCA+IHnDqDsgIzk3NjgNCivpnakgPiBnw6k7ICM5NzY5DQor6Z2qID4gZMSrbmc7ICM5NzZBDQor6Z2rID4gY2jEgTsgIzk3NkINCivpnawgPiBqacSBbjsgIzk3NkMNCivpna0gPiByw6huOyAjOTc2RA0KK+mdriA+IGTDrTsgIzk3NkUNCivpna8gPiBkw7k7ICM5NzZGDQor6Z2wID4gd8O5OyAjOTc3MA0KK+mdsSA+IHLDqG47ICM5NzcxDQor6Z2yID4gccOtbjsgIzk3NzINCivpnbMgPiBqw6xuOyAjOTc3Mw0KK+mdtCA+IHh1xJM7ICM5Nzc0DQor6Z21ID4gbsStdTsgIzk3NzUNCivpnbYgPiBixIM7ICM5Nzc2DQor6Z23ID4gecStbjsgIzk3NzcNCivpnbggPiBzxIM7ICM5Nzc4DQor6Z25ID4gbsOgOyAjOTc3OQ0KK+mduiA+IG3DsjsgIzk3N0ENCivpnbsgPiB6xa07ICM5NzdCDQor6Z28ID4gZMOhOyAjOTc3Qw0KK+mdvSA+IGLDoG47ICM5NzdEDQor6Z2+ID4gecOsOyAjOTc3RQ0KK+mdvyA+IHnDoG87ICM5NzdGDQor6Z6AID4gdMOhbzsgIzk3ODANCivpnoEgPiB0w7pvOyAjOTc4MQ0KK+megiA+IGppw6E7ICM5NzgyDQor6Z6DID4gaMOzbmc7ICM5NzgzDQor6Z6EID4gcMOhbzsgIzk3ODQNCivpnoUgPiB5xINuZzsgIzk3ODUNCivpnocgPiB5xKtuOyAjOTc4Nw0KK+meiCA+IGppw6E7ICM5Nzg4DQor6Z6JID4gdMOhbzsgIzk3ODkNCivpnoogPiBqw607ICM5NzhBDQor6Z6LID4geGnDqTsgIzk3OEINCivpnowgPiDEgW47ICM5NzhDDQor6Z6NID4gxIFuOyAjOTc4RA0KK+mejiA+IGjDqW47ICM5NzhFDQor6Z6PID4gZ8WPbmc7ICM5NzhGDQor6Z6RID4gZMOhOyAjOTc5MQ0KK+mekiA+IHFpxIFvOyAjOTc5Mg0KK+mekyA+IHTEq25nOyAjOTc5Mw0KK+melCA+IHfEg247ICM5Nzk0DQor6Z6VID4gecOsbmc7ICM5Nzk1DQor6Z6WID4gc8WraTsgIzk3OTYNCivpnpcgPiB0acOhbzsgIzk3OTcNCivpnpggPiBxacOgbzsgIzk3OTgNCivpnpkgPiB4dcOgbjsgIzk3OTkNCivpnpogPiBrw7JuZzsgIzk3OUENCivpnpsgPiBixJVuZzsgIzk3OUINCivpnpwgPiB0w6A7ICM5NzlDDQor6Z6dID4gemjEg25nOyAjOTc5RA0KK+meniA+IGLErW5nOyAjOTc5RQ0KK+menyA+IGvDuW87ICM5NzlGDQor6Z6gID4gasO6OyAjOTdBMA0KK+meoSA+IGxhOyAjOTdBMQ0KK+meoiA+IHhpw6g7ICM5N0EyDQor6Z6jID4gcsOzdTsgIzk3QTMNCivpnqQgPiBixIFuZzsgIzk3QTQNCivpnqUgPiB5w6w7ICM5N0E1DQor6Z6mID4gccSrdTsgIzk3QTYNCivpnqcgPiBxxKt1OyAjOTdBNw0KK+meqCA+IGjDqTsgIzk3QTgNCivpnqkgPiB4acOgbzsgIzk3QTkNCivpnqogPiBtw7k7ICM5N0FBDQor6Z6rID4gasO6OyAjOTdBQg0KK+merCA+IGppxIFuOyAjOTdBQw0KK+merSA+IGJpxIFuOyAjOTdBRA0KK+meriA+IGTEqzsgIzk3QUUNCivpnq8gPiBqacSBbjsgIzk3QUYNCivpnrEgPiB0xIFvOyAjOTdCMQ0KK+mesiA+IGfFjXU7ICM5N0IyDQor6Z6zID4gdMOgOyAjOTdCMw0KK+metCA+IGLDqGk7ICM5N0I0DQor6Z61ID4geGnDqTsgIzk3QjUNCivpnrYgPiBww6FuOyAjOTdCNg0KK+metyA+IGfDqTsgIzk3QjcNCivpnrggPiBiw6w7ICM5N0I4DQor6Z65ID4ga8O5bzsgIzk3QjkNCivpnrogPiB0YW5nOyAjOTdCQQ0KK+meuyA+IGzDs3U7ICM5N0JCDQor6Z68ID4gZ8O5aTsgIzk3QkMNCivpnr0gPiBxacOhbzsgIzk3QkQNCivpnr4gPiB4dcSTOyAjOTdCRQ0KK+mevyA+IGrEqzsgIzk3QkYNCivpn4AgPiBqacSBbjsgIzk3QzANCivpn4EgPiBqacSBbmc7ICM5N0MxDQor6Z+CID4gY2jDoG47ICM5N0MyDQor6Z+DID4gZMOhOyAjOTdDMw0KK+mfhCA+IGjDuW87ICM5N0M0DQor6Z+FID4geGnEg247ICM5N0M1DQor6Z+GID4gcWnEgW47ICM5N0M2DQor6Z+HID4gZMO6OyAjOTdDNw0KK+mfiCA+IHfDoDsgIzk3QzgNCivpn4kgPiBqacSBbjsgIzk3QzkNCivpn4ogPiBsw6FuOyAjOTdDQQ0KK+mfiyA+IHfDqWk7ICM5N0NCDQor6Z+MID4gcsOobjsgIzk3Q0MNCivpn40gPiBmw7o7ICM5N0NEDQor6Z+OID4gbcOoaTsgIzk3Q0UNCivpn48gPiBqdcOgbjsgIzk3Q0YNCivpn5AgPiBnw6k7ICM5N0QwDQor6Z+RID4gd8SVaTsgIzk3RDENCivpn5IgPiBxacOgbzsgIzk3RDINCivpn5MgPiBow6FuOyAjOTdEMw0KK+mflCA+IGNow6BuZzsgIzk3RDQNCivpn5YgPiByw7N1OyAjOTdENg0KK+mflyA+IHjDuW47ICM5N0Q3DQor6Z+YID4gc2jDqDsgIzk3RDgNCivpn5kgPiB3xJVpOyAjOTdEOQ0KK+mfmiA+IGfDqTsgIzk3REENCivpn5sgPiBiw6hpOyAjOTdEQg0KK+mfnCA+IHTEgW87ICM5N0RDDQor6Z+dID4gZ8WNdTsgIzk3REQNCivpn54gPiB5w7luOyAjOTdERQ0KK+mfoCA+IGLDrDsgIzk3RTANCivpn6EgPiB3xJVpOyAjOTdFMQ0KK+mfoiA+IGjDuWk7ICM5N0UyDQor6Z+jID4gZMO6OyAjOTdFMw0KK+mfpCA+IHfDoDsgIzk3RTQNCivpn6UgPiBkw7o7ICM5N0U1DQor6Z+mID4gd8OpaTsgIzk3RTYNCivpn6cgPiByw6huOyAjOTdFNw0KK+mfqCA+IGbDujsgIzk3RTgNCivpn6kgPiBow6FuOyAjOTdFOQ0KK+mfqiA+IHfElWk7ICM5N0VBDQor6Z+rID4gecO5bjsgIzk3RUINCivpn6wgPiB0xIFvOyAjOTdFQw0KK+mfrSA+IGrErXU7ICM5N0VEDQor6Z+uID4gasStdTsgIzk3RUUNCivpn68gPiB4acSBbjsgIzk3RUYNCivpn7AgPiB4acOoOyAjOTdGMA0KK+mfsSA+IHhpxIFuOyAjOTdGMQ0KK+mfsiA+IGrEqzsgIzk3RjINCivpn7MgPiB5xKtuOyAjOTdGMw0KK+mftCA+IHrDoTsgIzk3RjQNCivpn7UgPiB5w7luOyAjOTdGNQ0KK+mftiA+IHNow6FvOyAjOTdGNg0KK+mftyA+IGzDqDsgIzk3RjcNCivpn7ggPiBww6luZzsgIzk3RjgNCivpn7kgPiBow6luZzsgIzk3RjkNCivpn7ogPiB5xKtuZzsgIzk3RkENCivpn7sgPiB5w7luOyAjOTdGQg0KK+mfvCA+IHDDqW5nOyAjOTdGQw0KK+mfvSA+IHnEq247ICM5N0ZEDQor6Z++ID4gecSrbjsgIzk3RkUNCivpn78gPiB4acSDbmc7ICM5N0ZGDQor6aCAID4gaMO5OyAjOTgwMA0KK+mggSA+IHnDqDsgIzk4MDENCivpoIIgPiBkxK1uZzsgIzk4MDINCivpoIMgPiBxxK1uZzsgIzk4MDMNCivpoIQgPiBww6BuOyAjOTgwNA0KK+mghSA+IHhpw6BuZzsgIzk4MDUNCivpoIYgPiBzaMO5bjsgIzk4MDYNCivpoIcgPiBoxIFuOyAjOTgwNw0KK+mgiCA+IHjFqzsgIzk4MDgNCivpoIkgPiB5w607ICM5ODA5DQor6aCKID4geMO5OyAjOTgwQQ0KK+mgiyA+IGfDuTsgIzk4MEINCivpoIwgPiBzw7JuZzsgIzk4MEMNCivpoI0gPiBrxa1pOyAjOTgwRA0KK+mgjiA+IHHDrTsgIzk4MEUNCivpoI8gPiBow6FuZzsgIzk4MEYNCivpoJAgPiB5w7k7ICM5ODEwDQor6aCRID4gd8OhbjsgIzk4MTENCivpoJIgPiBixIFuOyAjOTgxMg0KK+mgkyA+IGTDuW47ICM5ODEzDQor6aCUID4gZMOtOyAjOTgxNA0KK+mglSA+IGTEgW47ICM5ODE1DQor6aCWID4gcMOgbjsgIzk4MTYNCivpoJcgPiBwxY87ICM5ODE3DQor6aCYID4gbMStbmc7ICM5ODE4DQor6aCZID4gY8OoOyAjOTgxOQ0KK+mgmiA+IGrErW5nOyAjOTgxQQ0KK+mgmyA+IGzElWk7ICM5ODFCDQor6aCcID4gaMOpOyAjOTgxQw0KK+mgnSA+IHFpxIFvOyAjOTgxRA0KK+mgniA+IMOoOyAjOTgxRQ0KK+mgnyA+IMOpOyAjOTgxRg0KK+mgoCA+IHfElWk7ICM5ODIwDQor6aChID4gamnDqTsgIzk4MjENCivpoKIgPiBndcSBOyAjOTgyMg0KK+mgoyA+IHNoxJVuOyAjOTgyMw0KK+mgpCA+IHnDrTsgIzk4MjQNCivpoKUgPiBzaMSVbjsgIzk4MjUNCivpoKYgPiBow6FpOyAjOTgyNg0KK+mgpyA+IGTFq2k7ICM5ODI3DQor6aCoID4gcGnEgW47ICM5ODI4DQor6aCpID4gcMSrbmc7ICM5ODI5DQor6aCqID4gbMOoaTsgIzk4MkENCivpoKsgPiBmxa07ICM5ODJCDQor6aCsID4gamnDoTsgIzk4MkMNCivpoK0gPiB0w7N1OyAjOTgyRA0KK+mgriA+IGjDuWk7ICM5ODJFDQor6aCvID4ga8O6aTsgIzk4MkYNCivpoLAgPiBqacOhOyAjOTgzMA0KK+mgsSA+IGzDqDsgIzk4MzENCivpoLIgPiB0aWFuOyAjOTgzMg0KK+mgsyA+IGNoxJNuZzsgIzk4MzMNCivpoLQgPiB5xK1uZzsgIzk4MzQNCivpoLUgPiBqxatuOyAjOTgzNQ0KK+mgtiA+IGjDujsgIzk4MzYNCivpoLcgPiBow6BuOyAjOTgzNw0KK+mguCA+IGrErW5nOyAjOTgzOA0KK+mguSA+IHTDumk7ICM5ODM5DQor6aC6ID4gdMO6aTsgIzk4M0ENCivpoLsgPiBww61uOyAjOTgzQg0KK+mgvCA+IGzDoGk7ICM5ODNDDQor6aC9ID4gdMO6aTsgIzk4M0QNCivpoL4gPiB6xKs7ICM5ODNFDQor6aC/ID4gesSrOyAjOTgzRg0KK+mhgCA+IGNow7ppOyAjOTg0MA0KK+mhgSA+IGTDrG5nOyAjOTg0MQ0KK+mhgiA+IGzDoGk7ICM5ODQyDQor6aGDID4gecOhbjsgIzk4NDMNCivpoYQgPiBow6BuOyAjOTg0NA0KK+mhhSA+IGppxIFuOyAjOTg0NQ0KK+mhhiA+IGvEkzsgIzk4NDYNCivpoYcgPiBjw7lpOyAjOTg0Nw0KK+mhiCA+IGrErW9uZzsgIzk4NDgNCivpoYkgPiBxxKtuOyAjOTg0OQ0KK+mhiiA+IHnDrTsgIzk4NEENCivpoYsgPiBzxIFpOyAjOTg0Qg0KK+mhjCA+IHTDrTsgIzk4NEMNCivpoY0gPiDDqTsgIzk4NEQNCivpoY4gPiDDqDsgIzk4NEUNCivpoY8gPiB5w6FuOyAjOTg0Rg0KK+mhkCA+IGjDum47ICM5ODUwDQor6aGRID4ga8SDbjsgIzk4NTENCivpoZIgPiB5w7NuZzsgIzk4NTINCivpoZMgPiB6aHXEgW47ICM5ODUzDQor6aGUID4gecOhbjsgIzk4NTQNCivpoZUgPiB4acSDbjsgIzk4NTUNCivpoZYgPiB4w6xuOyAjOTg1Ng0KK+mhlyA+IHnErTsgIzk4NTcNCivpoZggPiB5dcOgbjsgIzk4NTgNCivpoZkgPiBzxINuZzsgIzk4NTkNCivpoZogPiBkacSBbjsgIzk4NUENCivpoZsgPiBkacSBbjsgIzk4NUINCivpoZwgPiBqacSDbmc7ICM5ODVDDQor6aGdID4ga8WrOyAjOTg1RA0KK+mhniA+IGzDqGk7ICM5ODVFDQor6aGfID4gbGnDoW87ICM5ODVGDQor6aGgID4gcGnDoG87ICM5ODYwDQor6aGhID4gecOsOyAjOTg2MQ0KK+mhoiA+IG3DoW47ICM5ODYyDQor6aGjID4gccSrOyAjOTg2Mw0KK+mhpCA+IHLDoG87ICM5ODY0DQor6aGlID4gaMOgbzsgIzk4NjUNCivpoaYgPiBxacOhbzsgIzk4NjYNCivpoacgPiBnw7k7ICM5ODY3DQor6aGoID4geMO5bjsgIzk4NjgNCivpoakgPiBxacSBbjsgIzk4NjkNCivpoaogPiBoxatpOyAjOTg2QQ0KK+mhqyA+IHpow6BuOyAjOTg2Qg0KK+mhrCA+IHLDujsgIzk4NkMNCivpoa0gPiBoxY1uZzsgIzk4NkQNCivpoa4gPiBixKtuOyAjOTg2RQ0KK+mhryA+IHhpxINuOyAjOTg2Rg0KK+mhsCA+IHDDrW47ICM5ODcwDQor6aGxID4gbMO6OyAjOTg3MQ0KK+mhsiA+IGzEg247ICM5ODcyDQor6aGzID4gbmnDqDsgIzk4NzMNCivpobQgPiBxdcOhbjsgIzk4NzQNCivpobUgPiB5w6g7ICM5ODc1DQor6aG2ID4gZMStbmc7ICM5ODc2DQor6aG3ID4gccStbmc7ICM5ODc3DQor6aG4ID4gaMSBbjsgIzk4NzgNCivpobkgPiB4acOgbmc7ICM5ODc5DQor6aG6ID4gc2jDuW47ICM5ODdBDQor6aG7ID4geMWrOyAjOTg3Qg0KK+mhvCA+IHjDuTsgIzk4N0MNCivpob0gPiB3w6FuOyAjOTg3RA0KK+mhviA+IGfDuTsgIzk4N0UNCivpob8gPiBkw7luOyAjOTg3Rg0KK+migCA+IHHDrTsgIzk4ODANCivpooEgPiBixIFuOyAjOTg4MQ0KK+migiA+IHPDsm5nOyAjOTg4Mg0KK+migyA+IGjDoW5nOyAjOTg4Mw0KK+mihCA+IHnDuTsgIzk4ODQNCivpooUgPiBsw7o7ICM5ODg1DQor6aKGID4gbMStbmc7ICM5ODg2DQor6aKHID4gcMWPOyAjOTg4Nw0KK+miiCA+IGrErW5nOyAjOTg4OA0KK+miiSA+IGppw6k7ICM5ODg5DQor6aKKID4gamnDoTsgIzk4OEENCivpoosgPiB0aWFuOyAjOTg4Qg0KK+mijCA+IGjDoG47ICM5ODhDDQor6aKNID4gecStbmc7ICM5ODhEDQor6aKOID4gasStb25nOyAjOTg4RQ0KK+mijyA+IGjDoWk7ICM5ODhGDQor6aKQID4gecOtOyAjOTg5MA0KK+mikSA+IHDDrW47ICM5ODkxDQor6aKSID4gaMO5aTsgIzk4OTINCivpopMgPiB0w7ppOyAjOTg5Mw0KK+milCA+IGjDoG47ICM5ODk0DQor6aKVID4gecStbmc7ICM5ODk1DQor6aKWID4gecStbmc7ICM5ODk2DQor6aKXID4ga8STOyAjOTg5Nw0KK+mimCA+IHTDrTsgIzk4OTgNCivpopkgPiB5w7NuZzsgIzk4OTkNCivpopogPiDDqDsgIzk4OUENCivpopsgPiB6aHXEgW47ICM5ODlCDQor6aKcID4gecOhbjsgIzk4OUMNCivpop0gPiDDqTsgIzk4OUQNCivpop4gPiBuacOoOyAjOTg5RQ0KK+minyA+IG3DoW47ICM5ODlGDQor6aKgID4gZGnEgW47ICM5OEEwDQor6aKhID4gc8SDbmc7ICM5OEExDQor6aKiID4gaMOgbzsgIzk4QTINCivpoqMgPiBsw6hpOyAjOThBMw0KK+mipCA+IHpow6BuOyAjOThBNA0KK+mipSA+IHLDujsgIzk4QTUNCivpoqYgPiBww61uOyAjOThBNg0KK+mipyA+IHF1w6FuOyAjOThBNw0KK+miqCA+IGbEk25nOyAjOThBOA0KK+miqSA+IGJpxIFvOyAjOThBOQ0KK+miqyA+IGbDujsgIzk4QUINCivpoqwgPiB4acSBOyAjOThBQw0KK+mirSA+IHpoxINuOyAjOThBRA0KK+miriA+IGJpxIFvOyAjOThBRQ0KK+miryA+IHPDoDsgIzk4QUYNCivporAgPiBiw6E7ICM5OEIwDQor6aKxID4gdMOhaTsgIzk4QjENCivporIgPiBsacOoOyAjOThCMg0KK+misyA+IGd1xIE7ICM5OEIzDQor6aK0ID4geHXDoG47ICM5OEI0DQor6aK1ID4gc2jDoG87ICM5OEI1DQor6aK2ID4gasO5OyAjOThCNg0KK+mityA+IGLEqzsgIzk4QjcNCivporggPiBzxKs7ICM5OEI4DQor6aK5ID4gd8SVaTsgIzk4QjkNCivporogPiB5w6FuZzsgIzk4QkENCivporsgPiB5w6FvOyAjOThCQg0KK+mivCA+IHPFjXU7ICM5OEJDDQor6aK9ID4ga8SDaTsgIzk4QkQNCivpor4gPiBzxIFvOyAjOThCRQ0KK+mivyA+IGbDoW47ICM5OEJGDQor6aOAID4gbMOtdTsgIzk4QzANCivpo4EgPiB4w607ICM5OEMxDQor6aOCID4gbGnDoW87ICM5OEMyDQor6aODID4gcGnEgW87ICM5OEMzDQor6aOEID4gcGnEgW87ICM5OEM0DQor6aOFID4gbMOtdTsgIzk4QzUNCivpo4YgPiBiacSBbzsgIzk4QzYNCivpo4cgPiBiacSBbzsgIzk4QzcNCivpo4ggPiBiacSDbzsgIzk4QzgNCivpo4kgPiBsacOhbzsgIzk4QzkNCivpo4sgPiBzw6g7ICM5OENCDQor6aOMID4gZsSTbmc7ICM5OENDDQor6aONID4gYmnEgW87ICM5OENEDQor6aOOID4gZsSTbmc7ICM5OENFDQor6aOPID4gecOhbmc7ICM5OENGDQor6aOQID4gemjEg247ICM5OEQwDQor6aORID4gYmnEgW87ICM5OEQxDQor6aOSID4gc8OgOyAjOThEMg0KK+mjkyA+IGrDuTsgIzk4RDMNCivpo5QgPiBzxKs7ICM5OEQ0DQor6aOVID4gc8WNdTsgIzk4RDUNCivpo5YgPiB5w6FvOyAjOThENg0KK+mjlyA+IGzDrXU7ICM5OEQ3DQor6aOYID4gcGnEgW87ICM5OEQ4DQor6aOZID4gYmnEgW87ICM5OEQ5DQor6aOaID4gYmnEgW87ICM5OERBDQor6aObID4gZsSTaTsgIzk4REINCivpo5wgPiBmxIFuOyAjOThEQw0KK+mjnSA+IGbEk2k7ICM5OEREDQor6aOeID4gZsSTaTsgIzk4REUNCivpo58gPiBzaMOtOyAjOThERg0KK+mjoCA+IHNow607ICM5OEUwDQor6aOhID4gY8SBbjsgIzk4RTENCivpo6IgPiBqxKs7ICM5OEUyDQor6aOjID4gZMOsbmc7ICM5OEUzDQor6aOkID4gc8OsOyAjOThFNA0KK+mjpSA+IHTFq287ICM5OEU1DQor6aOmID4gemjEgW47ICM5OEU2DQor6aOnID4gc8WrbjsgIzk4RTcNCivpo6ggPiB4acSDbmc7ICM5OEU4DQor6aOpID4gdMO6bjsgIzk4RTkNCivpo6ogPiByw6huOyAjOThFQQ0KK+mjqyA+IHnDuTsgIzk4RUINCivpo6wgPiBqdcOgbjsgIzk4RUMNCivpo60gPiBjaMOsOyAjOThFRA0KK+mjriA+IHnErW47ICM5OEVFDQor6aOvID4gZsOgbjsgIzk4RUYNCivpo7AgPiBmw6BuOyAjOThGMA0KK+mjsSA+IHPFq247ICM5OEYxDQor6aOyID4gecStbjsgIzk4RjINCivpo7MgPiB6aMO5OyAjOThGMw0KK+mjtCA+IHnDrTsgIzk4RjQNCivpo7UgPiB6aMSDaTsgIzk4RjUNCivpo7YgPiBiw6w7ICM5OEY2DQor6aO3ID4gamnElTsgIzk4RjcNCivpo7ggPiB0xIFvOyAjOThGOA0KK+mjuSA+IGzErXU7ICM5OEY5DQor6aO6ID4gY8OtOyAjOThGQQ0KK+mjuyA+IHRpw6g7ICM5OEZCDQor6aO8ID4gc8OsOyAjOThGQw0KK+mjvSA+IGLEg287ICM5OEZEDQor6aO+ID4gc2jDrDsgIzk4RkUNCivpo78gPiBkw7lvOyAjOThGRg0KK+mkgCA+IGjDoGk7ICM5OTAwDQor6aSBID4gcsOobjsgIzk5MDENCivppIIgPiB0acSDbjsgIzk5MDINCivppIMgPiBqacSDbzsgIzk5MDMNCivppIQgPiBqacOhOyAjOTkwNA0KK+mkhSA+IGLErW5nOyAjOTkwNQ0KK+mkhiA+IHnDoW87ICM5OTA2DQor6aSHID4gdMOzbmc7ICM5OTA3DQor6aSIID4gY8OtOyAjOTkwOA0KK+mkiSA+IHhpxINuZzsgIzk5MDkNCivppIogPiB5xINuZzsgIzk5MEENCivppIsgPiB5xINuZzsgIzk5MEINCivppIwgPiDElXI7ICM5OTBDDQor6aSNID4gecOgbjsgIzk5MEQNCivppI4gPiBsZTsgIzk5MEUNCivppI8gPiB5xKs7ICM5OTBGDQor6aSQID4gY8SBbjsgIzk5MTANCivppJEgPiBiw7M7ICM5OTExDQor6aSSID4gbsSVaTsgIzk5MTINCivppJMgPiDDqDsgIzk5MTMNCivppJQgPiBixas7ICM5OTE0DQor6aSVID4gasO5bjsgIzk5MTUNCivppJYgPiBkw7J1OyAjOTkxNg0KK+mklyA+IHPDuTsgIzk5MTcNCivppJggPiB5w7o7ICM5OTE4DQor6aSZID4gc2jDrDsgIzk5MTkNCivppJogPiB5w6FvOyAjOTkxQQ0KK+mkmyA+IGjDum47ICM5OTFCDQor6aScID4gZ8WtbzsgIzk5MUMNCivppJ0gPiBzaMOsOyAjOTkxRA0KK+mkniA+IGppw6BuOyAjOTkxRQ0KK+mknyA+IHpow7lpOyAjOTkxRg0KK+mkoCA+IGLErW5nOyAjOTkyMA0KK+mkoSA+IHhpw6BuOyAjOTkyMQ0KK+mkoiA+IGLDuTsgIzk5MjINCivppKMgPiB5w6g7ICM5OTIzDQor6aSkID4gdMOhbjsgIzk5MjQNCivppKUgPiBmxJVpOyAjOTkyNQ0KK+mkpiA+IHpoxIFuZzsgIzk5MjYNCivppKcgPiB3w6hpOyAjOTkyNw0KK+mkqCA+IGd1xINuOyAjOTkyOA0KK+mkqSA+IMOoOyAjOTkyOQ0KK+mkqiA+IG51xINuOyAjOTkyQQ0KK+mkqyA+IGjDum47ICM5OTJCDQor6aSsID4gaMO6OyAjOTkyQw0KK+mkrSA+IGh1w6FuZzsgIzk5MkQNCivppK4gPiB0acOoOyAjOTkyRQ0KK+mkryA+IGjDuWk7ICM5OTJGDQor6aSwID4gamnEgW47ICM5OTMwDQor6aSxID4gaMOzdTsgIzk5MzENCivppLIgPiBow6k7ICM5OTMyDQor6aSzID4geMOtbmc7ICM5OTMzDQor6aS0ID4gZsSTbjsgIzk5MzQNCivppLUgPiB3w6hpOyAjOTkzNQ0KK+mktiA+IGfFrTsgIzk5MzYNCivppLcgPiBjaMSBOyAjOTkzNw0KK+mkuCA+IHPDsm5nOyAjOTkzOA0KK+mkuSA+IHTDoW5nOyAjOTkzOQ0KK+mkuiA+IGLDszsgIzk5M0ENCivppLsgPiBnxIFvOyAjOTkzQg0KK+mkvCA+IHjDrDsgIzk5M0MNCivppL0gPiBrw7lpOyAjOTkzRA0KK+mkviA+IGzDrHU7ICM5OTNFDQor6aS/ID4gc8WNdTsgIzk5M0YNCivppYAgPiB0w6FvOyAjOTk0MA0KK+mlgSA+IHnDqDsgIzk5NDENCivppYIgPiB5w7puOyAjOTk0Mg0KK+mlgyA+IG3DszsgIzk5NDMNCivppYQgPiB0w6FuZzsgIzk5NDQNCivppYUgPiBtw6FuOyAjOTk0NQ0KK+mlhiA+IGLDrDsgIzk5NDYNCivppYcgPiB5w7k7ICM5OTQ3DQor6aWIID4geMSrdTsgIzk5NDgNCivppYkgPiBqxK1uOyAjOTk0OQ0KK+mliiA+IHPEg247ICM5OTRBDQor6aWLID4ga8O5aTsgIzk5NEINCivppYwgPiB6aHXDoG47ICM5OTRDDQor6aWNID4gc2jDoG47ICM5OTREDQor6aWOID4gY2jDrDsgIzk5NEUNCivppY8gPiBkw6BuOyAjOTk0Rg0KK+mlkCA+IHnDrDsgIzk5NTANCivppZEgPiBqxKs7ICM5OTUxDQor6aWSID4gcsOhbzsgIzk5NTINCivppZMgPiBjaMSTbmc7ICM5OTUzDQor6aWUID4gecWNbmc7ICM5OTU0DQor6aWVID4gdMSBbzsgIzk5NTUNCivppZYgPiBow7lpOyAjOTk1Ng0KK+mllyA+IHhpxINuZzsgIzk5NTcNCivppZggPiB6aMSBbjsgIzk5NTgNCivppZkgPiBmxJNuOyAjOTk1OQ0KK+mlmiA+IGjDoGk7ICM5OTVBDQor6aWbID4gbcOpbmc7ICM5OTVCDQor6aWcID4gecOgbjsgIzk5NUMNCivppZ0gPiBtw7M7ICM5OTVEDQor6aWeID4gY2jDoW47ICM5OTVFDQor6aWfID4geGnEg25nOyAjOTk1Rg0KK+mloCA+IGzDum87ICM5OTYwDQor6aWhID4genXDoG47ICM5OTYxDQor6aWiID4gbsSDbmc7ICM5OTYyDQor6aWjID4gc2jDrTsgIzk5NjMNCivppaQgPiBkw6xuZzsgIzk5NjQNCivppaUgPiBqxKs7ICM5OTY1DQor6aWmID4gdMWrbzsgIzk5NjYNCivppacgPiB4w61uZzsgIzk5NjcNCivppaggPiB0w7puOyAjOTk2OA0KK+mlqSA+IHjDrDsgIzk5NjkNCivppaogPiByw6huOyAjOTk2QQ0KK+mlqyA+IHnDuTsgIzk5NkINCivppawgPiBjaMOsOyAjOTk2Qw0KK+mlrSA+IGbDoG47ICM5OTZEDQor6aWuID4gecStbjsgIzk5NkUNCivppa8gPiBqacOgbjsgIzk5NkYNCivppbAgPiBzaMOsOyAjOTk3MA0KK+mlsSA+IGLEg287ICM5OTcxDQor6aWyID4gc8OsOyAjOTk3Mg0KK+mlsyA+IGTDuW87ICM5OTczDQor6aW0ID4gecOtOyAjOTk3NA0KK+mltSA+IMSVcjsgIzk5NzUNCivppbYgPiByw6FvOyAjOTk3Ng0KK+mltyA+IHhpxINuZzsgIzk5NzcNCivppbggPiBqacOhOyAjOTk3OA0KK+mluSA+IGxlOyAjOTk3OQ0KK+mluiA+IGppxINvOyAjOTk3QQ0KK+mluyA+IHnEqzsgIzk5N0INCivppbwgPiBixK1uZzsgIzk5N0MNCivppb0gPiBiw7M7ICM5OTdEDQor6aW+ID4gZMOydTsgIzk5N0UNCivppb8gPiDDqDsgIzk5N0YNCivppoAgPiB5w7o7ICM5OTgwDQor6aaBID4gbsSVaTsgIzk5ODENCivppoIgPiBqw7luOyAjOTk4Mg0KK+mmgyA+IGfFrW87ICM5OTgzDQor6aaEID4gaMO6bjsgIzk5ODQNCivppoUgPiB4acOgbjsgIzk5ODUNCivppoYgPiBndcSDbjsgIzk5ODYNCivppocgPiBjaMSBOyAjOTk4Nw0KK+mmiCA+IGvDuWk7ICM5OTg4DQor6aaJID4gZ8WtOyAjOTk4OQ0KK+mmiiA+IHPFjXU7ICM5OThBDQor6aaLID4gY2jDoW47ICM5OThCDQor6aaMID4gecOoOyAjOTk4Qw0KK+mmjSA+IG3DszsgIzk5OEQNCivppo4gPiBiw7M7ICM5OThFDQor6aaPID4gbMOsdTsgIzk5OEYNCivpppAgPiB4xKt1OyAjOTk5MA0KK+mmkSA+IGrErW47ICM5OTkxDQor6aaSID4gbcOhbjsgIzk5OTINCivpppMgPiBzxINuOyAjOTk5Mw0KK+mmlCA+IHpodcOgbjsgIzk5OTQNCivpppUgPiBuxINuZzsgIzk5OTUNCivpppYgPiBzaMWPdTsgIzk5OTYNCivpppcgPiBrw7ppOyAjOTk5Nw0KK+mmmCA+IGfDum87ICM5OTk4DQor6aaZID4geGnEgW5nOyAjOTk5OQ0KK+mmmiA+IGbDqW47ICM5OTlBDQor6aabID4gYsOhOyAjOTk5Qg0KK+mmnCA+IG7ErTsgIzk5OUMNCivppp0gPiBiw6w7ICM5OTlEDQor6aaeID4gYsOzOyAjOTk5RQ0KK+mmnyA+IHTDujsgIzk5OUYNCivppqAgPiBoxIFuOyAjOTlBMA0KK+mmoSA+IGbEk2k7ICM5OUExDQor6aaiID4gamnEgW47ICM5OUEyDQor6aajID4gxIFuOyAjOTlBMw0KK+mmpCA+IMSDaTsgIzk5QTQNCivppqUgPiBmw7k7ICM5OUE1DQor6aamID4geGnEgW47ICM5OUE2DQor6aanID4gd8STbjsgIzk5QTcNCivppqggPiB4xKtuOyAjOTlBOA0KK+mmqSA+IGbDqW47ICM5OUE5DQor6aaqID4gYsSrbjsgIzk5QUENCivppqsgPiB4xKtuZzsgIzk5QUINCivppqwgPiBtxIM7ICM5OUFDDQor6aatID4gecO5OyAjOTlBRA0KK+mmriA+IGbDqW5nOyAjOTlBRQ0KK+mmryA+IGjDoG47ICM5OUFGDQor6aawID4gZMOsOyAjOTlCMA0KK+mmsSA+IHTDum87ICM5OUIxDQor6aayID4gdMWrbzsgIzk5QjINCivpprMgPiBjaMOtOyAjOTlCMw0KK+mmtCA+IHjDum47ICM5OUI0DQor6aa1ID4gemjDuTsgIzk5QjUNCivpprYgPiB6aMSrOyAjOTlCNg0KK+mmtyA+IHDDqGk7ICM5OUI3DQor6aa4ID4geMOsbjsgIzk5QjgNCivpprkgPiByw6w7ICM5OUI5DQor6aa6ID4gc8OgOyAjOTlCQQ0KK+mmuyA+IHnErW47ICM5OUJCDQor6aa8ID4gd8OpbjsgIzk5QkMNCivppr0gPiB6aMOtOyAjOTlCRA0KK+mmviA+IGTDoG47ICM5OUJFDQor6aa/ID4gbMeYOyAjOTlCRg0KK+mngCA+IHnDs3U7ICM5OUMwDQor6aeBID4gYsOzOyAjOTlDMQ0KK+mngiA+IGLEg287ICM5OUMyDQor6aeDID4ga3XDoGk7ICM5OUMzDQor6aeEID4gdMO6bzsgIzk5QzQNCivpp4UgPiB5w6w7ICM5OUM1DQor6aeGID4gccWrOyAjOTlDNg0KK+mniCA+IHHFqzsgIzk5QzgNCivpp4kgPiBqxKtvbmc7ICM5OUM5DQor6aeKID4gYsWPOyAjOTlDQQ0KK+mniyA+IHpoxIFvOyAjOTlDQg0KK+mnjCA+IHl1xIFuOyAjOTlDQw0KK+mnjSA+IHDEk25nOyAjOTlDRA0KK+mnjiA+IHpow7J1OyAjOTlDRQ0KK+mnjyA+IGrDuTsgIzk5Q0YNCivpp5AgPiB6aMO5OyAjOTlEMA0KK+mnkSA+IG7DujsgIzk5RDENCivpp5IgPiBqxas7ICM5OUQyDQor6aeTID4gcMOtOyAjOTlEMw0KK+mnlCA+IHrEg25nOyAjOTlENA0KK+mnlSA+IGppw6A7ICM5OUQ1DQor6aeWID4gbMOtbmc7ICM5OUQ2DQor6aeXID4gemjEk247ICM5OUQ3DQor6aeYID4gdMOhaTsgIzk5RDgNCivpp5kgPiBmw7k7ICM5OUQ5DQor6aeaID4gecSDbmc7ICM5OURBDQor6aebID4gc2jErTsgIzk5REINCivpp5wgPiBiw6w7ICM5OURDDQor6aedID4gdMO6bzsgIzk5REQNCivpp54gPiB0w7pvOyAjOTlERQ0KK+mnnyA+IHPDrDsgIzk5REYNCivpp6AgPiBsw611OyAjOTlFMA0KK+mnoSA+IG3DoDsgIzk5RTENCivpp6IgPiBwacOhbjsgIzk5RTINCivpp6MgPiB0w6FvOyAjOTlFMw0KK+mnpCA+IHpow6w7ICM5OUU0DQor6aelID4gcsOzbmc7ICM5OUU1DQor6aemID4gdMOpbmc7ICM5OUU2DQor6aenID4gZMOybmc7ICM5OUU3DQor6aeoID4geMO6bjsgIzk5RTgNCivpp6kgPiBxdcOhbjsgIzk5RTkNCivpp6ogPiBzaMSTbjsgIzk5RUENCivpp6sgPiBqxKtvbmc7ICM5OUVCDQor6aesID4gxJVyOyAjOTlFQw0KK+mnrSA+IGjDoGk7ICM5OUVEDQor6aeuID4gYsOzOyAjOTlFRQ0KK+mnryA+IHpodTsgIzk5RUYNCivpp7AgPiB5xKtuOyAjOTlGMA0KK+mnsSA+IGzDuW87ICM5OUYxDQor6aezID4gZMOgbjsgIzk5RjMNCivpp7QgPiB4acOoOyAjOTlGNA0KK+mntSA+IGzDrXU7ICM5OUY1DQor6ae2ID4gasO6OyAjOTlGNg0KK+mntyA+IHPFj25nOyAjOTlGNw0KK+mnuCA+IHHEq247ICM5OUY4DQor6ae5ID4gbcOhbmc7ICM5OUY5DQor6ae6ID4gbGnDoW5nOyAjOTlGQQ0KK+mnuyA+IGjDoG47ICM5OUZCDQor6ae8ID4gdMO6OyAjOTlGQw0KK+mnvSA+IHh1w6BuOyAjOTlGRA0KK+mnviA+IHTDuWk7ICM5OUZFDQor6ae/ID4gasO5bjsgIzk5RkYNCivpqIAgPiDDqTsgIzlBMDANCivpqIEgPiBjaMSVbmc7ICM5QTAxDQor6aiCID4geMSrbjsgIzlBMDINCivpqIMgPiDDoWk7ICM5QTAzDQor6aiEID4gbMO5OyAjOUEwNA0KK+mohSA+IHpoxatpOyAjOUEwNQ0KK+mohiA+IHpoxY11OyAjOUEwNg0KK+mohyA+IHNoxJU7ICM5QTA3DQor6aiIID4gcGnDoW47ICM5QTA4DQor6aiJID4ga8WrbjsgIzlBMDkNCivpqIogPiB0w6FvOyAjOUEwQQ0KK+moiyA+IGzDoWk7ICM5QTBCDQor6aiMID4gesWNbmc7ICM5QTBDDQor6aiNID4ga8OoOyAjOUEwRA0KK+mojiA+IHHDrTsgIzlBMEUNCivpqI8gPiBxw607ICM5QTBGDQor6aiQID4gecOgbjsgIzlBMTANCivpqJEgPiBmxJNpOyAjOUExMQ0KK+mokiA+IHPEgW87ICM5QTEyDQor6aiTID4gecSDbjsgIzlBMTMNCivpqJQgPiBqacOpOyAjOUExNA0KK+molSA+IHnEg287ICM5QTE1DQor6aiWID4gd8O5OyAjOUExNg0KK+molyA+IHBpw6BuOyAjOUExNw0KK+momCA+IGPFjW5nOyAjOUExOA0KK+momSA+IHBpw6BuOyAjOUExOQ0KK+momiA+IHFpw6FuOyAjOUExQQ0KK+momyA+IGbEk2k7ICM5QTFCDQor6aicID4gaHXDoW5nOyAjOUExQw0KK+monSA+IGppxIFuOyAjOUExRA0KK+moniA+IGjDuW87ICM5QTFFDQor6aifID4gecO5OyAjOUExRg0KK+mooCA+IHTDrTsgIzlBMjANCivpqKEgPiBxdcOhbjsgIzlBMjENCivpqKIgPiB4acOhOyAjOUEyMg0KK+mooyA+IHrFjW5nOyAjOUEyMw0KK+mopCA+IGvDumk7ICM5QTI0DQor6ailID4gcsOzdTsgIzlBMjUNCivpqKYgPiBzxKs7ICM5QTI2DQor6ainID4gZ3XEgTsgIzlBMjcNCivpqKggPiB0w7pvOyAjOUEyOA0KK+moqSA+IGvDuWk7ICM5QTI5DQor6aiqID4gc8WNdTsgIzlBMkENCivpqKsgPiBxacSBbjsgIzlBMkINCivpqKwgPiBjaMOpbmc7ICM5QTJDDQor6aitID4gemjDrDsgIzlBMkQNCivpqK4gPiBsw611OyAjOUEyRQ0KK+moryA+IHDDoW5nOyAjOUEyRg0KK+mosCA+IHTDqW5nOyAjOUEzMA0KK+mosSA+IHjEqzsgIzlBMzENCivpqLIgPiBjxINvOyAjOUEzMg0KK+mosyA+IGTDujsgIzlBMzMNCivpqLQgPiB5w6BuOyAjOUEzNA0KK+motSA+IHl1w6FuOyAjOUEzNQ0KK+motiA+IHrFjXU7ICM5QTM2DQor6ai3ID4gc8SBbzsgIzlBMzcNCivpqLggPiBzaMOgbjsgIzlBMzgNCivpqLkgPiBsw607ICM5QTM5DQor6ai6ID4gemjDrDsgIzlBM0ENCivpqLsgPiBzaHXEg25nOyAjOUEzQg0KK+movCA+IGzDuTsgIzlBM0MNCivpqL0gPiB4w607ICM5QTNEDQor6ai+ID4gbMO6bzsgIzlBM0UNCivpqL8gPiB6aMSBbmc7ICM5QTNGDQor6amAID4gbcOyOyAjOUE0MA0KK+mpgSA+IMOhbzsgIzlBNDENCivpqYIgPiBjxIFuOyAjOUE0Mg0KK+mpgyA+IHBpw6BvOyAjOUE0Mw0KK+mphCA+IGPFjW5nOyAjOUE0NA0KK+mphSA+IHHFqzsgIzlBNDUNCivpqYYgPiBiw6w7ICM5QTQ2DQor6amHID4gemjDrDsgIzlBNDcNCivpqYggPiB5w7k7ICM5QTQ4DQor6amJID4geMWrOyAjOUE0OQ0KK+mpiiA+IGh1w6E7ICM5QTRBDQor6amLID4gYsWNOyAjOUE0Qg0KK+mpjCA+IHPDuTsgIzlBNEMNCivpqY0gPiB4acSBbzsgIzlBNEQNCivpqY4gPiBsw61uOyAjOUE0RQ0KK+mpjyA+IGNoxINuOyAjOUE0Rg0KK+mpkCA+IGTFq247ICM5QTUwDQor6amRID4gbMOtdTsgIzlBNTENCivpqZIgPiB0w7pvOyAjOUE1Mg0KK+mpkyA+IHrEk25nOyAjOUE1Mw0KK+mplCA+IHTDoW47ICM5QTU0DQor6amVID4gamnEgW87ICM5QTU1DQor6amWID4gdGnElTsgIzlBNTYNCivpqZcgPiB5w6BuOyAjOUE1Nw0KK+mpmCA+IGzDum87ICM5QTU4DQor6amZID4gemjEgW47ICM5QTU5DQor6amaID4gasSrbmc7ICM5QTVBDQor6ambID4gecOsOyAjOUE1Qg0KK+mpnCA+IHnDqDsgIzlBNUMNCivpqZ0gPiB0xatvOyAjOUE1RA0KK+mpniA+IGLEq247ICM5QTVFDQor6amfID4gesOydTsgIzlBNUYNCivpqaAgPiB5w6BuOyAjOUE2MA0KK+mpoSA+IHDDqW5nOyAjOUE2MQ0KK+mpoiA+IGzHmDsgIzlBNjINCivpqaMgPiB0w6luZzsgIzlBNjMNCivpqaQgPiB4acSBbmc7ICM5QTY0DQor6amlID4gasOsOyAjOUE2NQ0KK+mppiA+IHNodcSBbmc7ICM5QTY2DQor6amnID4gasO6OyAjOUE2Nw0KK+mpqCA+IHjEqzsgIzlBNjgNCivpqakgPiBodcSBbjsgIzlBNjkNCivpqaogPiBsw607ICM5QTZBDQor6amrID4gYmnEgW87ICM5QTZCDQor6amsID4gbcSDOyAjOUE2Qw0KK+mprSA+IHnDuTsgIzlBNkQNCivpqa4gPiB0w7pvOyAjOUE2RQ0KK+mpryA+IHjDum47ICM5QTZGDQor6amwID4gY2jDrTsgIzlBNzANCivpqbEgPiBxxas7ICM5QTcxDQor6amyID4gcsOsOyAjOUE3Mg0KK+mpsyA+IGLDszsgIzlBNzMNCivpqbQgPiBsx5g7ICM5QTc0DQor6am1ID4gesSDbmc7ICM5QTc1DQor6am2ID4gc2jErTsgIzlBNzYNCivpqbcgPiBzw6w7ICM5QTc3DQor6am4ID4gZsO5OyAjOUE3OA0KK+mpuSA+IGrFqzsgIzlBNzkNCivpqbogPiB6xY11OyAjOUE3QQ0KK+mpuyA+IHpow7k7ICM5QTdCDQor6am8ID4gdMO6bzsgIzlBN0MNCivpqb0gPiBuw7o7ICM5QTdEDQor6am+ID4gamnDoDsgIzlBN0UNCivpqb8gPiB5w6w7ICM5QTdGDQor6aqAID4gdMOhaTsgIzlBODANCivpqoEgPiB4acSBbzsgIzlBODENCivpqoIgPiBtw6A7ICM5QTgyDQor6aqDID4gecSrbjsgIzlBODMNCivpqoQgPiBqacSBbzsgIzlBODQNCivpqoUgPiBodcOhOyAjOUE4NQ0KK+mqhiA+IGzDuW87ICM5QTg2DQor6aqHID4gaMOgaTsgIzlBODcNCivpqoggPiBwacOhbjsgIzlBODgNCivpqokgPiBiacSBbzsgIzlBODkNCivpqoogPiBsw607ICM5QThBDQor6aqLID4gY2jElW5nOyAjOUE4Qg0KK+mqjCA+IHnDoG47ICM5QThDDQor6aqNID4geMSrbjsgIzlBOEQNCivpqo4gPiBxxKtuOyAjOUE4RQ0KK+mqjyA+IGrDuW47ICM5QThGDQor6aqQID4gccOtOyAjOUE5MA0KK+mqkSA+IHHDrTsgIzlBOTENCivpqpIgPiBrw6g7ICM5QTkyDQor6aqTID4gemjFq2k7ICM5QTkzDQor6aqUID4gesWNbmc7ICM5QTk0DQor6aqVID4gc8O5OyAjOUE5NQ0KK+mqliA+IGPEgW47ICM5QTk2DQor6aqXID4gcGnDoG47ICM5QTk3DQor6aqYID4gemjDrDsgIzlBOTgNCivpqpkgPiBrw7ppOyAjOUE5OQ0KK+mqmiA+IHPEgW87ICM5QTlBDQor6aqbID4gd8O5OyAjOUE5Qg0KK+mqnCA+IMOhbzsgIzlBOUMNCivpqp0gPiBsw611OyAjOUE5RA0KK+mqniA+IHFpxIFuOyAjOUE5RQ0KK+mqnyA+IHNow6BuOyAjOUE5Rg0KK+mqoCA+IHBpw6BvOyAjOUFBMA0KK+mqoSA+IGzDum87ICM5QUExDQor6aqiID4gY8WNbmc7ICM5QUEyDQor6aqjID4gY2jEg247ICM5QUEzDQor6aqkID4gesOydTsgIzlBQTQNCivpqqUgPiBqw6w7ICM5QUE1DQor6aqmID4gc2h1xIFuZzsgIzlBQTYNCivpqqcgPiB4acSBbmc7ICM5QUE3DQor6aqoID4gZ8WtOyAjOUFBOA0KK+mqqSA+IHfElWk7ICM5QUE5DQor6aqqID4gd8SVaTsgIzlBQUENCivpqqsgPiB3xJVpOyAjOUFBQg0KK+mqrCA+IHnDujsgIzlBQUMNCivpqq0gPiBnw6BuOyAjOUFBRA0KK+mqriA+IHnDrDsgIzlBQUUNCivpqq8gPiDEgW5nOyAjOUFBRg0KK+mqsCA+IHTDs3U7ICM5QUIwDQor6aqxID4geGnDqDsgIzlBQjENCivpqrIgPiBixIFvOyAjOUFCMg0KK+mqsyA+IGLDrDsgIzlBQjMNCivpqrQgPiBjaMSrOyAjOUFCNA0KK+mqtSA+IHTErTsgIzlBQjUNCivpqrYgPiBkxK07ICM5QUI2DQor6aq3ID4ga8WrOyAjOUFCNw0KK+mquCA+IGjDoWk7ICM5QUI4DQor6aq5ID4gcWnEgW87ICM5QUI5DQor6aq6ID4gZ8OydTsgIzlBQkENCivpqrsgPiBrdcOgOyAjOUFCQg0KK+mqvCA+IGfDqTsgIzlBQkMNCivpqr0gPiB0xa1pOyAjOUFCRA0KK+mqviA+IGfElW5nOyAjOUFCRQ0KK+mqvyA+IHBpw6FuOyAjOUFCRg0KK+mrgCA+IGLDrDsgIzlBQzANCivpq4EgPiBrxJM7ICM5QUMxDQor6auCID4ga8OgOyAjOUFDMg0KK+mrgyA+IHnDujsgIzlBQzMNCivpq4QgPiBzxa1pOyAjOUFDNA0KK+mrhSA+IGzDs3U7ICM5QUM1DQor6auGID4gYsOzOyAjOUFDNg0KK+mrhyA+IHhpxIFvOyAjOUFDNw0KK+mriCA+IHDDoW5nOyAjOUFDOA0KK+mriSA+IGLFjTsgIzlBQzkNCivpq4ogPiBjxKs7ICM5QUNBDQor6auLID4ga3XEgW47ICM5QUNCDQor6auMID4gYsOsbjsgIzlBQ0MNCivpq40gPiBtw7M7ICM5QUNEDQor6auOID4gbGnDoW87ICM5QUNFDQor6auPID4gbMOzdTsgIzlBQ0YNCivpq5AgPiBuw6FvOyAjOUFEMA0KK+mrkSA+IGTDujsgIzlBRDENCivpq5IgPiB6xIFuZzsgIzlBRDINCivpq5MgPiBzxa1pOyAjOUFEMw0KK+mrlCA+IHTErTsgIzlBRDQNCivpq5UgPiBiw6xuOyAjOUFENQ0KK+mrliA+IGt1xIFuOyAjOUFENg0KK+mrlyA+IGzDujsgIzlBRDcNCivpq5ggPiBnxIFvOyAjOUFEOA0KK+mrmSA+IGfEgW87ICM5QUQ5DQor6auaID4gcWnDoG87ICM5QURBDQor6aubID4ga8SBbzsgIzlBREINCivpq5wgPiBxacSBbzsgIzlBREMNCivpq50gPiBsw6BvOyAjOUFERA0KK+mrniA+IHrDoG87ICM5QURFDQor6aufID4gYmnEgW87ICM5QURGDQor6augID4ga8WrbjsgIzlBRTANCivpq6EgPiBrxatuOyAjOUFFMQ0KK+mroiA+IHTDrDsgIzlBRTINCivpq6MgPiBmxINuZzsgIzlBRTMNCivpq6QgPiB4xKt1OyAjOUFFNA0KK+mrpSA+IHLDoW47ICM5QUU1DQor6aumID4gbcOhbzsgIzlBRTYNCivpq6cgPiBkw6BuOyAjOUFFNw0KK+mrqCA+IGvFq247ICM5QUU4DQor6aupID4gYsOsbjsgIzlBRTkNCivpq6ogPiBmw6A7ICM5QUVBDQor6aurID4gdGnDoW87ICM5QUVCDQor6ausID4gcGVuZzsgIzlBRUMNCivpq60gPiB6xKs7ICM5QUVEDQor6auuID4gZsSDOyAjOUFFRQ0KK+mrryA+IHLDoW47ICM5QUVGDQor6auwID4gdMOsOyAjOUFGMA0KK+mrsSA+IHDDoG87ICM5QUYxDQor6auyID4gcMSrOyAjOUFGMg0KK+mrsyA+IG3DoW87ICM5QUYzDQor6au0ID4gZsO6OyAjOUFGNA0KK+mrtSA+IMOpcjsgIzlBRjUNCivpq7YgPiByw7NuZzsgIzlBRjYNCivpq7cgPiBxxas7ICM5QUY3DQor6au4ID4gZ29uZzsgIzlBRjgNCivpq7kgPiB4xKt1OyAjOUFGOQ0KK+mruiA+IGd1w6A7ICM5QUZBDQor6au7ID4gasOsOyAjOUFGQg0KK+mrvCA+IHDDqW5nOyAjOUFGQw0KK+mrvSA+IHpodcSBOyAjOUFGRA0KK+mrviA+IHNoxIFvOyAjOUFGRQ0KK+mrvyA+IHNoxIE7ICM5QUZGDQor6ayAID4gdMOsOyAjOUIwMA0KK+msgSA+IGzDrDsgIzlCMDENCivprIIgPiBiw6xuOyAjOUIwMg0KK+msgyA+IHrFjW5nOyAjOUIwMw0KK+mshCA+IHTDrDsgIzlCMDQNCivprIUgPiBww6luZzsgIzlCMDUNCivprIYgPiBzxY1uZzsgIzlCMDYNCivprIcgPiB6aMSTbmc7ICM5QjA3DQor6ayIID4gcXXDoW47ICM5QjA4DQor6ayJID4gesWNbmc7ICM5QjA5DQor6ayKID4gc2jDuW47ICM5QjBBDQor6ayLID4gamnEgW47ICM5QjBCDQor6ayMID4gZMWtbzsgIzlCMEMNCivprI0gPiBow7o7ICM5QjBEDQor6ayOID4gbMOgOyAjOUIwRQ0KK+msjyA+IGrEq3U7ICM5QjBGDQor6ayQID4gccOtOyAjOUIxMA0KK+mskSA+IGxpw6FuOyAjOUIxMQ0KK+mskiA+IHpoxJVuOyAjOUIxMg0KK+mskyA+IGLDrG47ICM5QjEzDQor6ayUID4gcMOpbmc7ICM5QjE0DQor6ayVID4gbcOyOyAjOUIxNQ0KK+msliA+IHPEgW47ICM5QjE2DQor6ayXID4gbcOgbjsgIzlCMTcNCivprJggPiBtw6FuOyAjOUIxOA0KK+msmSA+IHPEk25nOyAjOUIxOQ0KK+msmiA+IHjFqzsgIzlCMUENCivprJsgPiBsacOoOyAjOUIxQg0KK+msnCA+IHFpxIFuOyAjOUIxQw0KK+msnSA+IHFpxIFuOyAjOUIxRA0KK+msniA+IG7Ds25nOyAjOUIxRQ0KK+msnyA+IGh1w6FuOyAjOUIxRg0KK+msoCA+IGt1w6BpOyAjOUIyMA0KK+msoSA+IG7DrW5nOyAjOUIyMQ0KK+msoiA+IGLDrG47ICM5QjIyDQor6ayjID4gbGnDqDsgIzlCMjMNCivprKQgPiByw6FuZzsgIzlCMjQNCivprKUgPiBkw7J1OyAjOUIyNQ0KK+mspiA+IGTDsnU7ICM5QjI2DQor6aynID4gbsOgbzsgIzlCMjcNCivprKggPiBoxY1uZzsgIzlCMjgNCivprKkgPiB4w6w7ICM5QjI5DQor6ayqID4gZMOydTsgIzlCMkENCivprKsgPiBoxINuOyAjOUIyQg0KK+msrCA+IGTDsnU7ICM5QjJDDQor6aytID4gZMOydTsgIzlCMkQNCivprK4gPiBqxKt1OyAjOUIyRQ0KK+msryA+IGNow6BuZzsgIzlCMkYNCivprLAgPiB5w7k7ICM5QjMwDQor6ayxID4gecO5OyAjOUIzMQ0KK+mssiA+IGzDrDsgIzlCMzINCivprLMgPiBqdcOgbjsgIzlCMzMNCivprLQgPiBmxa07ICM5QjM0DQor6ay1ID4gcWnDoW47ICM5QjM1DQor6ay2ID4gZ8WraTsgIzlCMzYNCivprLcgPiB6xY1uZzsgIzlCMzcNCivprLggPiBsw6x1OyAjOUIzOA0KK+msuSA+IGfFq2k7ICM5QjM5DQor6ay6ID4gc2jEgW5nOyAjOUIzQQ0KK+msuyA+IHnDuTsgIzlCM0INCivprLwgPiBnxa1pOyAjOUIzQw0KK+msvSA+IG3DqGk7ICM5QjNEDQor6ay+ID4gasOsOyAjOUIzRQ0KK+msvyA+IHHDrTsgIzlCM0YNCivprYAgPiBqacOoOyAjOUI0MA0KK+mtgSA+IGvDumk7ICM5QjQxDQor6a2CID4gaMO6bjsgIzlCNDINCivprYMgPiBiw6E7ICM5QjQzDQor6a2EID4gcMOyOyAjOUI0NA0KK+mthSA+IG3DqGk7ICM5QjQ1DQor6a2GID4geMO5OyAjOUI0Ng0KK+mthyA+IHnEg247ICM5QjQ3DQor6a2IID4geGnEgW87ICM5QjQ4DQor6a2JID4gbGnEg25nOyAjOUI0OQ0KK+mtiiA+IHnDuTsgIzlCNEENCivprYsgPiB0w7ppOyAjOUI0Qg0KK+mtjCA+IHHEqzsgIzlCNEMNCivprY0gPiB3xINuZzsgIzlCNEQNCivprY4gPiBsacSDbmc7ICM5QjRFDQor6a2PID4gd8OoaTsgIzlCNEYNCivprZAgPiBqacSBbjsgIzlCNTANCivprZEgPiBjaMSrOyAjOUI1MQ0KK+mtkiA+IHBpxIFvOyAjOUI1Mg0KK+mtkyA+IGLDrDsgIzlCNTMNCivprZQgPiBtw7M7ICM5QjU0DQor6a2VID4gasStOyAjOUI1NQ0KK+mtliA+IHjFqzsgIzlCNTYNCivprZcgPiBjaMWPdTsgIzlCNTcNCivprZggPiB5xINuOyAjOUI1OA0KK+mtmSA+IHpoxINuOyAjOUI1OQ0KK+mtmiA+IHnDujsgIzlCNUENCivprZsgPiBkxIFvOyAjOUI1Qg0KK+mtnCA+IHLDqW47ICM5QjVDDQor6a2dID4gasOsOyAjOUI1RA0KK+mtnyA+IGfFjW5nOyAjOUI1Rg0KK+mtoCA+IHTDum87ICM5QjYwDQor6a2hID4gZGnDoG87ICM5QjYxDQor6a2iID4gasStOyAjOUI2Mg0KK+mtoyA+IHjDuTsgIzlCNjMNCivpraQgPiDDqTsgIzlCNjQNCivpraUgPiDDqDsgIzlCNjUNCivpraYgPiBzaMSBOyAjOUI2Ng0KK+mtpyA+IGjDoW5nOyAjOUI2Nw0KK+mtqCA+IHTDum47ICM5QjY4DQor6a2pID4gbcOyOyAjOUI2OQ0KK+mtqiA+IGppw6g7ICM5QjZBDQor6a2rID4gc2jElW47ICM5QjZCDQor6a2sID4gZsSDbjsgIzlCNkMNCivpra0gPiB5dcOhbjsgIzlCNkQNCivpra4gPiBiw607ICM5QjZFDQor6a2vID4gbMWtOyAjOUI2Rg0KK+mtsCA+IHfDqW47ICM5QjcwDQor6a2xID4gaMO6OyAjOUI3MQ0KK+mtsiA+IGzDujsgIzlCNzINCivprbMgPiB6w6E7ICM5QjczDQor6a20ID4gZsOhbmc7ICM5Qjc0DQor6a21ID4gZsOpbjsgIzlCNzUNCivprbYgPiBuw6A7ICM5Qjc2DQor6a23ID4gecOzdTsgIzlCNzcNCivprbogPiBow6k7ICM5QjdBDQor6a27ID4geGnDoTsgIzlCN0INCivprbwgPiBxxas7ICM5QjdDDQor6a29ID4gaMSBbjsgIzlCN0QNCivprb4gPiBww607ICM5QjdFDQor6a2/ID4gbMOtbmc7ICM5QjdGDQor6a6AID4gdMO6bzsgIzlCODANCivproEgPiBixY07ICM5QjgxDQor6a6CID4gccOtdTsgIzlCODINCivproMgPiBww61uZzsgIzlCODMNCivproQgPiBmw7o7ICM5Qjg0DQor6a6FID4gYsOsOyAjOUI4NQ0KK+muhiA+IGrDrDsgIzlCODYNCivprocgPiB3w6hpOyAjOUI4Nw0KK+muiCA+IGrFqzsgIzlCODgNCivprokgPiBkacSBbzsgIzlCODkNCivproogPiBiw7M7ICM5QjhBDQor6a6LID4gecOzdTsgIzlCOEINCivprowgPiBnxa1uOyAjOUI4Qw0KK+mujSA+IHDEqzsgIzlCOEQNCivpro4gPiBuacOhbjsgIzlCOEUNCivpro8gPiB4xKtuZzsgIzlCOEYNCivprpAgPiB0w6FpOyAjOUI5MA0KK+mukSA+IGLDoG87ICM5QjkxDQor6a6SID4gZsO5OyAjOUI5Mg0KK+mukyA+IHpoxIM7ICM5QjkzDQor6a6UID4gasO5OyAjOUI5NA0KK+mulSA+IGfFqzsgIzlCOTUNCivprpkgPiB0w6A7ICM5Qjk5DQor6a6aID4gamnDqTsgIzlCOUENCivprpsgPiBzaMO5OyAjOUI5Qg0KK+munCA+IGjDsnU7ICM5QjlDDQor6a6dID4geGnEg25nOyAjOUI5RA0KK+muniA+IMOpcjsgIzlCOUUNCivprp8gPiDDoG47ICM5QjlGDQor6a6gID4gd8OpaTsgIzlCQTANCivprqEgPiB0acSBbzsgIzlCQTENCivprqIgPiB6aMWrOyAjOUJBMg0KK+muoyA+IHnDrG47ICM5QkEzDQor6a6kID4gbGnDqDsgIzlCQTQNCivprqUgPiBsw7lvOyAjOUJBNQ0KK+mupiA+IHTDs25nOyAjOUJBNg0KK+mupyA+IHnDrTsgIzlCQTcNCivprqggPiBxw607ICM5QkE4DQor6a6pID4gYsOsbmc7ICM5QkE5DQor6a6qID4gd8SVaTsgIzlCQUENCivprqsgPiBqacSDbzsgIzlCQUINCivprqwgPiBiw7k7ICM5QkFDDQor6a6tID4gZ8WraTsgIzlCQUQNCivprq4gPiB4acSBbjsgIzlCQUUNCivprq8gPiBnw6k7ICM5QkFGDQor6a6wID4gaMO6aTsgIzlCQjANCivprrMgPiBrxINvOyAjOUJCMw0KK+mutSA+IGTDum87ICM5QkI1DQor6a62ID4gasWrbjsgIzlCQjYNCivprrcgPiB0w607ICM5QkI3DQor6a64ID4gbcSDbjsgIzlCQjgNCivprrkgPiB4acSBbzsgIzlCQjkNCivprrogPiB6xIM7ICM5QkJBDQor6a67ID4gc2jEgTsgIzlCQkINCivprrwgPiBxxKtuOyAjOUJCQw0KK+muvSA+IHnDujsgIzlCQkQNCivprr4gPiBuxJVpOyAjOUJCRQ0KK+muvyA+IHpow6k7ICM5QkJGDQor6a+AID4gZ8WtbjsgIzlCQzANCivpr4EgPiBnxJVuZzsgIzlCQzENCivpr4IgPiBzdTsgIzlCQzINCivpr4MgPiB3w7o7ICM5QkMzDQor6a+EID4gccOtdTsgIzlCQzQNCivpr4UgPiB0w61uZzsgIzlCQzUNCivpr4YgPiBmxa07ICM5QkM2DQor6a+HID4gd8SDbjsgIzlCQzcNCivpr4ggPiB5w7N1OyAjOUJDOA0KK+mviSA+IGzErTsgIzlCQzkNCivpr4ogPiBzaMSBOyAjOUJDQQ0KK+mviyA+IHNoxIE7ICM5QkNCDQor6a+MID4gZ8OgbzsgIzlCQ0MNCivpr40gPiBtw6luZzsgIzlCQ0QNCivpr5IgPiB5xY9uZzsgIzlCRDINCivpr5MgPiBuw607ICM5QkQzDQor6a+UID4gesSrOyAjOUJENA0KK+mvlSA+IHHDrTsgIzlCRDUNCivpr5YgPiBxxKtuZzsgIzlCRDYNCivpr5cgPiB4acSDbmc7ICM5QkQ3DQor6a+YID4gbsSVaTsgIzlCRDgNCivpr5kgPiBjaMO6bjsgIzlCRDkNCivpr5ogPiBqw6w7ICM5QkRBDQor6a+bID4gZGnEgW87ICM5QkRCDQor6a+cID4gcWnDqDsgIzlCREMNCivpr50gPiBnw7k7ICM5QkREDQor6a+eID4gemjFj3U7ICM5QkRFDQor6a+fID4gZMWNbmc7ICM5QkRGDQor6a+gID4gbMOhaTsgIzlCRTANCivpr6EgPiBmxJNpOyAjOUJFMQ0KK+mvoiA+IG7DrTsgIzlCRTINCivpr6MgPiB5w6w7ICM5QkUzDQor6a+kID4ga8WrbjsgIzlCRTQNCivpr6UgPiBsw7k7ICM5QkU1DQor6a+mID4gasOsdTsgIzlCRTYNCivpr6cgPiBjaMSBbmc7ICM5QkU3DQor6a+oID4gasSrbmc7ICM5QkU4DQor6a+pID4gbMO6bjsgIzlCRTkNCivpr6ogPiBsw61uZzsgIzlCRUENCivpr6sgPiB6xY11OyAjOUJFQg0KK+mvrCA+IGzDrTsgIzlCRUMNCivpr60gPiBtxJVuZzsgIzlCRUQNCivpr64gPiB6xY1uZzsgIzlCRUUNCivpr68gPiB6aMOsOyAjOUJFRg0KK+mvsCA+IG5pw6FuOyAjOUJGMA0KK+mvtCA+IHNoxKs7ICM5QkY0DQor6a+1ID4gc2jEk247ICM5QkY1DQor6a+2ID4gaMWtbjsgIzlCRjYNCivpr7cgPiBzaMOsOyAjOUJGNw0KK+mvuCA+IGjDs3U7ICM5QkY4DQor6a+5ID4geMSrbmc7ICM5QkY5DQor6a+6ID4gemjFqzsgIzlCRkENCivpr7sgPiBsw6A7ICM5QkZCDQor6a+8ID4gesWNbmc7ICM5QkZDDQor6a+9ID4gasOsOyAjOUJGRA0KK+mvviA+IGJpxIFuOyAjOUJGRQ0KK+mvvyA+IGJpxIFuOyAjOUJGRg0KK+mwgCA+IGh1w6BuOyAjOUMwMA0KK+mwgSA+IHF1w6FuOyAjOUMwMQ0KK+mwgiA+IHrDqTsgIzlDMDINCivpsIMgPiB3xJNpOyAjOUMwMw0KK+mwhCA+IHfEk2k7ICM5QzA0DQor6bCFID4gecO6OyAjOUMwNQ0KK+mwhiA+IHHFq247ICM5QzA2DQor6bCHID4gcsOzdTsgIzlDMDcNCivpsIggPiBkacOpOyAjOUMwOA0KK+mwiSA+IGh1w6FuZzsgIzlDMDkNCivpsIogPiBsacOgbjsgIzlDMEENCivpsIsgPiB5xINuOyAjOUMwQg0KK+mwjCA+IHHDrXU7ICM5QzBDDQor6bCNID4gccSrdTsgIzlDMEQNCivpsI4gPiBqacOgbjsgIzlDMEUNCivpsI8gPiBiw6w7ICM5QzBGDQor6bCQID4gw6g7ICM5QzEwDQor6bCRID4gecOhbmc7ICM5QzExDQor6bCSID4gZsO5OyAjOUMxMg0KK+mwkyA+IHPEgWk7ICM5QzEzDQor6bCUID4gamnEg247ICM5QzE0DQor6bCVID4geGnDoTsgIzlDMTUNCivpsJYgPiB0xa1vOyAjOUMxNg0KK+mwlyA+IGjDujsgIzlDMTcNCivpsJkgPiByw7lvOyAjOUMxOQ0KK+mwmyA+IHfEk247ICM5QzFCDQor6bCcID4gamnEgW47ICM5QzFDDQor6bCdID4gaMOgbzsgIzlDMUQNCivpsJ4gPiB3xas7ICM5QzFFDQor6bCfID4gZsOhbmc7ICM5QzFGDQor6bCgID4gc8SBbzsgIzlDMjANCivpsKEgPiBsw611OyAjOUMyMQ0KK+mwoiA+IG3EgzsgIzlDMjINCivpsKMgPiBzaMOtOyAjOUMyMw0KK+mwpCA+IHNoxKs7ICM5QzI0DQor6bClID4gecOtbjsgIzlDMjUNCivpsKYgPiB6zIQ7ICM5QzI2DQor6bCnID4gdMOpbmc7ICM5QzI3DQor6bCoID4gdMOgOyAjOUMyOA0KK+mwqSA+IHnDoW87ICM5QzI5DQor6bCqID4gZ8OpOyAjOUMyQQ0KK+mwqyA+IHLDs25nOyAjOUMyQg0KK+mwrCA+IHFpw6FuOyAjOUMyQw0KK+mwrSA+IHHDrTsgIzlDMkQNCivpsK4gPiB3xJNuOyAjOUMyRQ0KK+mwryA+IHLDuW87ICM5QzJGDQor6bCxID4gbGnDoW47ICM5QzMxDQor6bCyID4gw6FvOyAjOUMzMg0KK+mwsyA+IGzDqDsgIzlDMzMNCivpsLQgPiBoxatpOyAjOUMzNA0KK+mwtSA+IG3ErW47ICM5QzM1DQor6bC2ID4gasOsOyAjOUMzNg0KK+mwtyA+IHRpw6FvOyAjOUMzNw0KK+mwuCA+IHHFqzsgIzlDMzgNCivpsLkgPiBqacSBbjsgIzlDMzkNCivpsLogPiBzxIFvOyAjOUMzQQ0KK+mwuyA+IG3DoW47ICM5QzNCDQor6bC8ID4geMOtOyAjOUMzQw0KK+mwvSA+IHHDrXU7ICM5QzNEDQor6bC+ID4gYmnDoG87ICM5QzNFDQor6bC/ID4gasSrOyAjOUMzRg0KK+mxgCA+IGrDrDsgIzlDNDANCivpsYEgPiB6aMO6OyAjOUM0MQ0KK+mxgiA+IGppxIFuZzsgIzlDNDINCivpsYMgPiBxxKt1OyAjOUM0Mw0KK+mxhCA+IHpodcSBbjsgIzlDNDQNCivpsYUgPiB5w7NuZzsgIzlDNDUNCivpsYYgPiB6aMSBbmc7ICM5QzQ2DQor6bGHID4ga8SBbmc7ICM5QzQ3DQor6bGIID4geHXElTsgIzlDNDgNCivpsYkgPiBiacSTOyAjOUM0OQ0KK+mxiiA+IGp1w6k7ICM5QzRBDQor6bGLID4gccWrOyAjOUM0Qg0KK+mxjCA+IHhpw6BuZzsgIzlDNEMNCivpsY0gPiBixY07ICM5QzREDQor6bGOID4gamnEgW87ICM5QzRFDQor6bGPID4geMO6bjsgIzlDNEYNCivpsZAgPiBzw7k7ICM5QzUwDQor6bGRID4gaHXDoW5nOyAjOUM1MQ0KK+mxkiA+IHrDuW47ICM5QzUyDQor6bGTID4gc2jDoG47ICM5QzUzDQor6bGUID4gc2jDoG47ICM5QzU0DQor6bGVID4gZsSBbjsgIzlDNTUNCivpsZYgPiBqdcOpOyAjOUM1Ng0KK+mxlyA+IGzDrW47ICM5QzU3DQor6bGYID4geMO6bjsgIzlDNTgNCivpsZkgPiBtacOhbzsgIzlDNTkNCivpsZogPiB4xK07ICM5QzVBDQor6bGdID4gZsOobjsgIzlDNUQNCivpsZ4gPiBndcSBbjsgIzlDNUUNCivpsZ8gPiBow7J1OyAjOUM1Rg0KK+mxoCA+IGt1w6BpOyAjOUM2MA0KK+mxoSA+IHrDqWk7ICM5QzYxDQor6bGiID4gc8SBbzsgIzlDNjINCivpsaMgPiB6aMSBbjsgIzlDNjMNCivpsaQgPiBnxINuOyAjOUM2NA0KK+mxpSA+IGfDuWk7ICM5QzY1DQor6bGmID4gc2jDqW5nOyAjOUM2Ng0KK+mxpyA+IGzErTsgIzlDNjcNCivpsaggPiBjaMOhbmc7ICM5QzY4DQor6bGsID4gcsO6OyAjOUM2Qw0KK+mxrSA+IGrDrDsgIzlDNkQNCivpsa4gPiB4w7k7ICM5QzZFDQor6bGvID4gaMO5bzsgIzlDNkYNCivpsbEgPiBsw6w7ICM5QzcxDQor6bGyID4gbGnDqDsgIzlDNzINCivpsbMgPiBsw6w7ICM5QzczDQor6bG0ID4gbWnDqDsgIzlDNzQNCivpsbUgPiB6aMSTbjsgIzlDNzUNCivpsbYgPiB4acSDbmc7ICM5Qzc2DQor6bG3ID4gw6g7ICM5Qzc3DQor6bG4ID4gbMO6OyAjOUM3OA0KK+mxuSA+IGd1w6BuOyAjOUM3OQ0KK+mxuiA+IGzDrTsgIzlDN0ENCivpsbsgPiB4acSBbjsgIzlDN0INCivpsbwgPiB5w7o7ICM5QzdDDQor6bG9ID4gZMSBbzsgIzlDN0QNCivpsb4gPiBqxK07ICM5QzdFDQor6bG/ID4gecOzdTsgIzlDN0YNCivpsoAgPiB0w7puOyAjOUM4MA0KK+mygSA+IGzFrTsgIzlDODENCivpsoIgPiBmw6FuZzsgIzlDODINCivpsoMgPiBixIE7ICM5QzgzDQor6bKEID4gaMOpOyAjOUM4NA0KK+myhSA+IGLFjTsgIzlDODUNCivpsoYgPiBww61uZzsgIzlDODYNCivpsocgPiBuacOhbjsgIzlDODcNCivpsoggPiBsw7o7ICM5Qzg4DQor6bKJID4gecOzdTsgIzlDODkNCivpsoogPiB6aMSDOyAjOUM4QQ0KK+myiyA+IGbDuTsgIzlDOEINCivpsowgPiBiw7M7ICM5QzhDDQor6bKNID4gYsOgbzsgIzlDOEQNCivpso4gPiBow7J1OyAjOUM4RQ0KK+myjyA+IHDEqzsgIzlDOEYNCivpspAgPiB0w6FpOyAjOUM5MA0KK+mykSA+IGfFq2k7ICM5QzkxDQor6bKSID4gamnDqTsgIzlDOTINCivpspMgPiBrxINvOyAjOUM5Mw0KK+mylCA+IHfElWk7ICM5Qzk0DQor6bKVID4gw6lyOyAjOUM5NQ0KK+myliA+IHTDs25nOyAjOUM5Ng0KK+mylyA+IHrDqTsgIzlDOTcNCivpspggPiBow7J1OyAjOUM5OA0KK+mymSA+IGt1w6BpOyAjOUM5OQ0KK+mymiA+IGrDrDsgIzlDOUENCivpspsgPiBqacSDbzsgIzlDOUINCivpspwgPiB4acSBbjsgIzlDOUMNCivpsp0gPiB6xIM7ICM5QzlEDQor6bKeID4geGnEg25nOyAjOUM5RQ0KK+mynyA+IHjDum47ICM5QzlGDQor6bKgID4gZ8SVbmc7ICM5Q0EwDQor6bKhID4gbMOtOyAjOUNBMQ0KK+myoiA+IGxpw6FuOyAjOUNBMg0KK+myoyA+IGppxIFuOyAjOUNBMw0KK+mypCA+IGzErTsgIzlDQTQNCivpsqUgPiBzaMOtOyAjOUNBNQ0KK+mypiA+IHRpw6FvOyAjOUNBNg0KK+mypyA+IGfFrW47ICM5Q0E3DQor6bKoID4gc2jEgTsgIzlDQTgNCivpsqkgPiB3xINuOyAjOUNBOQ0KK+myqiA+IGrFq247ICM5Q0FBDQor6bKrID4gasOsOyAjOUNBQg0KK+myrCA+IHnFj25nOyAjOUNBQw0KK+myrSA+IHHEq25nOyAjOUNBRA0KK+myriA+IGzDrW5nOyAjOUNBRQ0KK+myryA+IHHDrTsgIzlDQUYNCivpsrAgPiB6xY11OyAjOUNCMA0KK+mysSA+IGbEk2k7ICM5Q0IxDQor6bKyID4ga8WrbjsgIzlDQjINCivpsrMgPiBjaMSBbmc7ICM5Q0IzDQor6bK0ID4gZ8O5OyAjOUNCNA0KK+mytSA+IG7DrTsgIzlDQjUNCivpsrYgPiBuacOhbjsgIzlDQjYNCivpsrcgPiBkacSBbzsgIzlDQjcNCivpsrggPiBqxKtuZzsgIzlDQjgNCivpsrkgPiBzaMSTbjsgIzlDQjkNCivpsrogPiBzaMSrOyAjOUNCQQ0KK+myuyA+IHrEqzsgIzlDQkINCivpsrwgPiBmw6huOyAjOUNCQw0KK+myvSA+IGRpw6k7ICM5Q0JEDQor6bK+ID4gYsOsOyAjOUNCRQ0KK+myvyA+IGNow6FuZzsgIzlDQkYNCivps4AgPiBzaMOsOyAjOUNDMA0KK+mzgSA+IHfEk247ICM5Q0MxDQor6bOCID4gd8STaTsgIzlDQzINCivps4MgPiBzxIFpOyAjOUNDMw0KK+mzhCA+IMOoOyAjOUNDNA0KK+mzhSA+IHHEq3U7ICM5Q0M1DQor6bOGID4gZsO5OyAjOUNDNg0KK+mzhyA+IGh1w6FuZzsgIzlDQzcNCivps4ggPiBxdcOhbjsgIzlDQzgNCivps4kgPiBqacSBbmc7ICM5Q0M5DQor6bOKID4gYmnEgW47ICM5Q0NBDQor6bOLID4gc8SBbzsgIzlDQ0INCivps4wgPiDDoW87ICM5Q0NDDQor6bONID4gccOtOyAjOUNDRA0KK+mzjiA+IHTDoDsgIzlDQ0UNCivps48gPiB5w61uOyAjOUNDRg0KK+mzkCA+IHnDoW87ICM5Q0QwDQor6bORID4gZsOhbmc7ICM5Q0QxDQor6bOSID4gamnEgW47ICM5Q0QyDQor6bOTID4gbMOoOyAjOUNEMw0KK+mzlCA+IGJpw6BvOyAjOUNENA0KK+mzlSA+IHh1xJU7ICM5Q0Q1DQor6bOWID4gYmnEkzsgIzlDRDYNCivps5cgPiBtw6FuOyAjOUNENw0KK+mzmCA+IG3ErW47ICM5Q0Q4DQor6bOZID4gecOzbmc7ICM5Q0Q5DQor6bOaID4gd8OoaTsgIzlDREENCivps5sgPiB4w607ICM5Q0RCDQor6bOcID4ganXDqTsgIzlDREMNCivps50gPiBzaMOgbjsgIzlDREQNCivps54gPiBsw61uOyAjOUNERQ0KK+mznyA+IHrDuW47ICM5Q0RGDQor6bOgID4gaMO5bzsgIzlDRTANCivps6EgPiBnxINuOyAjOUNFMQ0KK+mzoiA+IGzErTsgIzlDRTINCivps6MgPiB6aMSBbjsgIzlDRTMNCivps6QgPiBndcSDbjsgIzlDRTQNCivps6UgPiBuacSDbzsgIzlDRTUNCivps6YgPiB5xK07ICM5Q0U2DQor6bOnID4gZsO6OyAjOUNFNw0KK+mzqCA+IGzDrDsgIzlDRTgNCivps6kgPiBqxKt1OyAjOUNFOQ0KK+mzqiA+IGLFrTsgIzlDRUENCivps6sgPiB5w6BuOyAjOUNFQg0KK+mzrCA+IGbDujsgIzlDRUMNCivps60gPiBkacSBbzsgIzlDRUQNCivps64gPiBqxKs7ICM5Q0VFDQor6bOvID4gZsOobmc7ICM5Q0VGDQor6bOxID4gZ8SBbjsgIzlDRjENCivps7IgPiBzaMSrOyAjOUNGMg0KK+mzsyA+IGbDqG5nOyAjOUNGMw0KK+mztCA+IG3DrW5nOyAjOUNGNA0KK+mztSA+IGLEg287ICM5Q0Y1DQor6bO2ID4geXXEgW47ICM5Q0Y2DQor6bO3ID4gemjEqzsgIzlDRjcNCivps7ggPiBow7k7ICM5Q0Y4DQor6bO5ID4gccOtbjsgIzlDRjkNCivps7ogPiBmxas7ICM5Q0ZBDQor6bO7ID4gZsSTbjsgIzlDRkINCivps7wgPiB3w6luOyAjOUNGQw0KK+mzvSA+IGppxIFuOyAjOUNGRA0KK+mzviA+IHNoxKs7ICM5Q0ZFDQor6bO/ID4gecO5OyAjOUNGRg0KK+m0gCA+IGbFj3U7ICM5RDAwDQor6bSBID4geWnEgW87ICM5RDAxDQor6bSCID4ganXDqDsgIzlEMDINCivptIMgPiBqdcOpOyAjOUQwMw0KK+m0hCA+IHDEqzsgIzlEMDQNCivptIUgPiBodcSBbjsgIzlEMDUNCivptIYgPiB6aMOobjsgIzlEMDYNCivptIcgPiBixINvOyAjOUQwNw0KK+m0iCA+IHnDoG47ICM5RDA4DQor6bSJID4gecSBOyAjOUQwOQ0KK+m0iiA+IHpow6huZzsgIzlEMEENCivptIsgPiBmxIFuZzsgIzlEMEINCivptIwgPiBmw6huZzsgIzlEMEMNCivptI0gPiB3w6luOyAjOUQwRA0KK+m0jiA+IMWNdTsgIzlEMEUNCivptI8gPiB0w6g7ICM5RDBGDQor6bSQID4gamnEgTsgIzlEMTANCivptJEgPiBuw7o7ICM5RDExDQor6bSSID4gbMOtbmc7ICM5RDEyDQor6bSTID4gbWnDqDsgIzlEMTMNCivptJQgPiBmw7o7ICM5RDE0DQor6bSVID4gdMO6bzsgIzlEMTUNCivptJYgPiB3w6luOyAjOUQxNg0KK+m0lyA+IGzDrDsgIzlEMTcNCivptJggPiBiacOgbjsgIzlEMTgNCivptJkgPiB6aMOsOyAjOUQxOQ0KK+m0miA+IGfEkzsgIzlEMUENCivptJsgPiB5dcSBbjsgIzlEMUINCivptJwgPiB6xKs7ICM5RDFDDQor6bSdID4gccO6OyAjOUQxRA0KK+m0niA+IHhpxIFvOyAjOUQxRQ0KK+m0nyA+IHpoxKs7ICM5RDFGDQor6bSgID4gZMOgbjsgIzlEMjANCivptKEgPiBqxas7ICM5RDIxDQor6bSiID4gecOydTsgIzlEMjINCivptKMgPiBnxas7ICM5RDIzDQor6bSkID4gemjFjW5nOyAjOUQyNA0KK+m0pSA+IHnDuTsgIzlEMjUNCivptKYgPiB5xIFuZzsgIzlEMjYNCivptKcgPiByw7JuZzsgIzlEMjcNCivptKggPiB5xIE7ICM5RDI4DQor6bSpID4gdGnElTsgIzlEMjkNCivptKogPiB5w7k7ICM5RDJBDQor6bSsID4gecSrbmc7ICM5RDJDDQor6bStID4gemjFq2k7ICM5RDJEDQor6bSuID4gd8WrOyAjOUQyRQ0KK+m0ryA+IMOpcjsgIzlEMkYNCivptLAgPiBndcSBOyAjOUQzMA0KK+m0sSA+IMOgaTsgIzlEMzENCivptLIgPiB6aMSrOyAjOUQzMg0KK+m0syA+IHnDoG47ICM5RDMzDQor6bS0ID4gaMOpbmc7ICM5RDM0DQor6bS1ID4gamnEgW87ICM5RDM1DQor6bS2ID4gasOtOyAjOUQzNg0KK+m0tyA+IGxpw6g7ICM5RDM3DQor6bS4ID4gemjFqzsgIzlEMzgNCivptLkgPiByw6luOyAjOUQzOQ0KK+m0uiA+IHnDrTsgIzlEM0ENCivptLsgPiBow7NuZzsgIzlEM0INCivptLwgPiBsw7lvOyAjOUQzQw0KK+m0vSA+IHLDujsgIzlEM0QNCivptL4gPiBtw7N1OyAjOUQzRQ0KK+m0vyA+IGfEkzsgIzlEM0YNCivptYAgPiByw6huOyAjOUQ0MA0KK+m1gSA+IGppxIFvOyAjOUQ0MQ0KK+m1giA+IHjEq3U7ICM5RDQyDQor6bWDID4gemjFjXU7ICM5RDQzDQor6bWEID4gemjEqzsgIzlENDQNCivptYUgPiBsw7lvOyAjOUQ0NQ0KK+m1iSA+IGx1w6FuOyAjOUQ0OQ0KK+m1iiA+IGppw6E7ICM5RDRBDQor6bWLID4gasOsOyAjOUQ0Qg0KK+m1jCA+IHnDujsgIzlENEMNCivptY0gPiBodcSBbjsgIzlENEQNCivptY4gPiB0xa1vOyAjOUQ0RQ0KK+m1jyA+IGLFqzsgIzlENEYNCivptZAgPiB3w7o7ICM5RDUwDQor6bWRID4ganXEgW47ICM5RDUxDQor6bWSID4gecO5OyAjOUQ1Mg0KK+m1kyA+IGLDszsgIzlENTMNCivptZQgPiB4w7luOyAjOUQ1NA0KK+m1lSA+IHjDuW47ICM5RDU1DQor6bWWID4gYsOsOyAjOUQ1Ng0KK+m1lyA+IHjEqzsgIzlENTcNCivptZggPiBqw7luOyAjOUQ1OA0KK+m1mSA+IGrDujsgIzlENTkNCivptZogPiB0w7o7ICM5RDVBDQor6bWbID4gasSrbmc7ICM5RDVCDQor6bWcID4gdMOtOyAjOUQ1Qw0KK+m1nSA+IMOpOyAjOUQ1RA0KK+m1niA+IMOpOyAjOUQ1RQ0KK+m1nyA+IGt1w6FuZzsgIzlENUYNCivptaAgPiBow7o7ICM5RDYwDQor6bWhID4gd8WtOyAjOUQ2MQ0KK+m1oiA+IHNoxJNuOyAjOUQ2Mg0KK+m1oyA+IGzDoGk7ICM5RDYzDQor6bWmID4gbMO5OyAjOUQ2Ng0KK+m1pyA+IHDDrW5nOyAjOUQ2Nw0KK+m1qCA+IHNoxas7ICM5RDY4DQor6bWpID4gZsO6OyAjOUQ2OQ0KK+m1qiA+IMSBbjsgIzlENkENCivptasgPiB6aMOgbzsgIzlENkINCivptawgPiBww6luZzsgIzlENkMNCivpta0gPiBxw61uOyAjOUQ2RA0KK+m1riA+IHFpxIFuOyAjOUQ2RQ0KK+m1ryA+IGLEk2k7ICM5RDZGDQor6bWwID4gZGnEgW87ICM5RDcwDQor6bWxID4gbMO5OyAjOUQ3MQ0KK+m1siA+IHF1w6g7ICM5RDcyDQor6bWzID4gamnEgW47ICM5RDczDQor6bW0ID4gasO6OyAjOUQ3NA0KK+m1tSA+IHTDuTsgIzlENzUNCivptbYgPiB5xIE7ICM5RDc2DQor6bW3ID4geXXEgW47ICM5RDc3DQor6bW4ID4gccOtOyAjOUQ3OA0KK+m1uSA+IGzDrTsgIzlENzkNCivptbogPiB5w6g7ICM5RDdBDQor6bW7ID4gemjFq2k7ICM5RDdCDQor6bW8ID4ga8WNbmc7ICM5RDdDDQor6bW9ID4gemjDuWk7ICM5RDdEDQor6bW+ID4ga8WrbjsgIzlEN0UNCivptb8gPiBzaMSTbmc7ICM5RDdGDQor6baAID4gccOtOyAjOUQ4MA0KK+m2gSA+IGrEq25nOyAjOUQ4MQ0KK+m2giA+IHnDrDsgIzlEODINCivptoMgPiB5w6w7ICM5RDgzDQor6baEID4gasSrbmc7ICM5RDg0DQor6baFID4gesSrOyAjOUQ4NQ0KK+m2hiA+IGzDoWk7ICM5RDg2DQor6baHID4gZMWNbmc7ICM5RDg3DQor6baIID4gccSrOyAjOUQ4OA0KK+m2iSA+IGNow7puOyAjOUQ4OQ0KK+m2iiA+IGfEk25nOyAjOUQ4QQ0KK+m2iyA+IGrFqzsgIzlEOEINCivptowgPiBxxas7ICM5RDhDDQor6baPID4gasSrOyAjOUQ4Rg0KK+m2kCA+IHNow7k7ICM5RDkwDQor6baSID4gY2jDrDsgIzlEOTINCivptpMgPiBtacOhbzsgIzlEOTMNCivptpQgPiByw7N1OyAjOUQ5NA0KK+m2lSA+IMSBbjsgIzlEOTUNCivptpYgPiBxxKt1OyAjOUQ5Ng0KK+m2lyA+IHTDrTsgIzlEOTcNCivptpggPiBow7o7ICM5RDk4DQor6baZID4gdMOtOyAjOUQ5OQ0KK+m2miA+IMOoOyAjOUQ5QQ0KK+m2myA+IGppxJM7ICM5RDlCDQor6bacID4gbcOhbzsgIzlEOUMNCivptp0gPiBmw7o7ICM5RDlEDQor6baeID4gY2jFq247ICM5RDlFDQor6bafID4gdMO6OyAjOUQ5Rg0KK+m2oCA+IHnEg247ICM5REEwDQor6bahID4gaMOpOyAjOURBMQ0KK+m2oiA+IHl1w6FuOyAjOURBMg0KK+m2oyA+IHBpxIFuOyAjOURBMw0KK+m2pCA+IHnDuW47ICM5REE0DQor6balID4gbcOpaTsgIzlEQTUNCivptqYgPiBow7o7ICM5REE2DQor6banID4gecSrbmc7ICM5REE3DQor6baoID4gZMO5bjsgIzlEQTgNCivptqkgPiBtw7k7ICM5REE5DQor6baqID4gasO6OyAjOURBQQ0KK+m2rCA+IGPEgW5nOyAjOURBQw0KK+m2rSA+IGbEg25nOyAjOURBRA0KK+m2riA+IGfDuTsgIzlEQUUNCivptq8gPiB5xKtuZzsgIzlEQUYNCivptrAgPiB5dcOhbjsgIzlEQjANCivptrEgPiB4dcSBbjsgIzlEQjENCivptrIgPiB3xJNuZzsgIzlEQjINCivptrMgPiBzaMSrOyAjOURCMw0KK+m2tCA+IGjDqDsgIzlEQjQNCivptrUgPiBjaMO6OyAjOURCNQ0KK+m2tiA+IHTDoW5nOyAjOURCNg0KK+m2tyA+IHhpw6A7ICM5REI3DQor6ba4ID4gcsO5bzsgIzlEQjgNCivptrkgPiBsw611OyAjOURCOQ0KK+m2uiA+IGrDrTsgIzlEQkENCivptrsgPiBnw7o7ICM5REJCDQor6ba8ID4gamnEgW47ICM5REJDDQor6ba9ID4gemjFrW47ICM5REJEDQor6ba+ID4gaMOgbjsgIzlEQkUNCivptr8gPiB6xKs7ICM5REJGDQor6beAID4gesSrOyAjOURDMA0KK+m3gSA+IG7DrDsgIzlEQzENCivpt4IgPiB5w6BvOyAjOURDMg0KK+m3gyA+IHnDoG47ICM5REMzDQor6beEID4gasSrOyAjOURDNA0KK+m3hSA+IGzDrDsgIzlEQzUNCivpt4YgPiB0acOhbjsgIzlEQzYNCivpt4cgPiBrw7J1OyAjOURDNw0KK+m3iCA+IHTEqzsgIzlEQzgNCivpt4kgPiB0xKs7ICM5REM5DQor6beKID4gbsOsOyAjOURDQQ0KK+m3iyA+IHTDujsgIzlEQ0INCivpt4wgPiBtxIM7ICM5RENDDQor6beNID4gamnEgW87ICM5RENEDQor6beOID4gZ8SBbzsgIzlEQ0UNCivpt48gPiB0acOhbjsgIzlEQ0YNCivpt5AgPiBjaMOpbjsgIzlERDANCivpt5EgPiBsw6w7ICM5REQxDQor6beSID4gemh1xIFuOyAjOUREMg0KK+m3kyA+IHpow6g7ICM5REQzDQor6beUID4gw6FvOyAjOURENA0KK+m3lSA+IHnEg287ICM5REQ1DQor6beWID4gecSrOyAjOURENg0KK+m3lyA+IMWNdTsgIzlERDcNCivpt5ggPiBjaMOsOyAjOUREOA0KK+m3mSA+IHpow6w7ICM5REQ5DQor6beaID4gbGnDoW87ICM5RERBDQor6bebID4gcsOzbmc7ICM5RERCDQor6becID4gbMOzdTsgIzlEREMNCivpt50gPiBiw6w7ICM5REREDQor6beeID4gc2h1xIFuZzsgIzlEREUNCivpt58gPiB6aMO6bzsgIzlEREYNCivpt6AgPiB5w7o7ICM5REUwDQor6behID4gd8O6OyAjOURFMQ0KK+m3oiA+IGp1w6k7ICM5REUyDQor6bejID4gecOtbjsgIzlERTMNCivpt6QgPiBxdcOhbjsgIzlERTQNCivpt6UgPiBzxKs7ICM5REU1DQor6bemID4gamnEgW87ICM5REU2DQor6benID4gecOsOyAjOURFNw0KK+m3qCA+IGh1xIE7ICM5REU4DQor6bepID4gYsOsOyAjOURFOQ0KK+m3qiA+IHnEq25nOyAjOURFQQ0KK+m3qyA+IHPDuTsgIzlERUINCivpt6wgPiBodcOhbmc7ICM5REVDDQor6betID4gZsOhbjsgIzlERUQNCivpt64gPiBqacSBbzsgIzlERUUNCivpt68gPiBsacOhbzsgIzlERUYNCivpt7AgPiB5w6BuOyAjOURGMA0KK+m3sSA+IGvEgW87ICM5REYxDQor6beyID4gasOsdTsgIzlERjINCivpt7MgPiB4acOhbjsgIzlERjMNCivpt7QgPiB4acOhbjsgIzlERjQNCivpt7UgPiB0w7o7ICM5REY1DQor6be2ID4gbcSDaTsgIzlERjYNCivpt7cgPiB6xatuOyAjOURGNw0KK+m3uCA+IHnDuTsgIzlERjgNCivpt7kgPiB5xKtuZzsgIzlERjkNCivpt7ogPiBsw7k7ICM5REZBDQor6be7ID4gdHXDoW47ICM5REZCDQor6be8ID4geGnDoW47ICM5REZDDQor6be9ID4geHXDqTsgIzlERkQNCivpt74gPiB5w6w7ICM5REZFDQor6be/ID4gcMOsOyAjOURGRg0KK+m4gCA+IHNow7o7ICM5RTAwDQor6biBID4gbMO6bzsgIzlFMDENCivpuIIgPiBxxKs7ICM5RTAyDQor6biDID4gecOtOyAjOUUwMw0KK+m4hCA+IGrDrTsgIzlFMDQNCivpuIUgPiB6aMOpOyAjOUUwNQ0KK+m4hiA+IHnDujsgIzlFMDYNCivpuIcgPiB6aMSBbjsgIzlFMDcNCivpuIggPiB5w6g7ICM5RTA4DQor6biJID4gecOhbmc7ICM5RTA5DQor6biKID4gcMOsOyAjOUUwQQ0KK+m4iyA+IG7DrW5nOyAjOUUwQg0KK+m4jCA+IGjDuW87ICM5RTBDDQor6biNID4gbcOtOyAjOUUwRA0KK+m4jiA+IHnEq25nOyAjOUUwRQ0KK+m4jyA+IG3DqW5nOyAjOUUwRg0KK+m4kCA+IGTDrTsgIzlFMTANCivpuJEgPiB5dcOoOyAjOUUxMQ0KK+m4kiA+IHnDujsgIzlFMTINCivpuJMgPiBsxJVpOyAjOUUxMw0KK+m4lCA+IGLDoG87ICM5RTE0DQor6biVID4gbMO6OyAjOUUxNQ0KK+m4liA+IGjDqDsgIzlFMTYNCivpuJcgPiBsw7NuZzsgIzlFMTcNCivpuJggPiBzaHXEgW5nOyAjOUUxOA0KK+m4mSA+IHl1w6g7ICM5RTE5DQor6biaID4gecSrbmc7ICM5RTFBDQor6bibID4gZ3XDoG47ICM5RTFCDQor6bicID4gccO6OyAjOUUxQw0KK+m4nSA+IGzDrTsgIzlFMUQNCivpuJ4gPiBsdcOhbjsgIzlFMUUNCivpuJ8gPiBuacSDbzsgIzlFMUYNCivpuKAgPiBqxKt1OyAjOUUyMA0KK+m4oSA+IGrEqzsgIzlFMjENCivpuKIgPiB5dcSBbjsgIzlFMjINCivpuKMgPiBtw61uZzsgIzlFMjMNCivpuKQgPiBzaMSrOyAjOUUyNA0KK+m4pSA+IMWNdTsgIzlFMjUNCivpuKYgPiB5xIE7ICM5RTI2DQor6binID4gY8SBbmc7ICM5RTI3DQor6bioID4gYsSDbzsgIzlFMjgNCivpuKkgPiB6aMOobjsgIzlFMjkNCivpuKogPiBnxas7ICM5RTJBDQor6birID4gZMWNbmc7ICM5RTJCDQor6bisID4gbMO6OyAjOUUyQw0KK+m4rSA+IHnEgTsgIzlFMkQNCivpuK4gPiB4acSBbzsgIzlFMkUNCivpuK8gPiB5xIFuZzsgIzlFMkYNCivpuLAgPiBsw61uZzsgIzlFMzANCivpuLEgPiB6aMSrOyAjOUUzMQ0KK+m4siA+IHHDujsgIzlFMzINCivpuLMgPiB5dcSBbjsgIzlFMzMNCivpuLQgPiB4dcOpOyAjOUUzNA0KK+m4tSA+IHTDum87ICM5RTM1DQor6bi2ID4gc8SrOyAjOUUzNg0KK+m4tyA+IHpow6w7ICM5RTM3DQor6bi4ID4gw6lyOyAjOUUzOA0KK+m4uSA+IGd1xIE7ICM5RTM5DQor6bi6ID4geMSrdTsgIzlFM0ENCivpuLsgPiBow6luZzsgIzlFM0INCivpuLwgPiB6aMWNdTsgIzlFM0MNCivpuL0gPiBnxJM7ICM5RTNEDQor6bi+ID4gbHXDoW47ICM5RTNFDQor6bi/ID4gaMOzbmc7ICM5RTNGDQor6bmAID4gd8O6OyAjOUU0MA0KK+m5gSA+IGLDszsgIzlFNDENCivpuYIgPiBsw607ICM5RTQyDQor6bmDID4ganXEgW47ICM5RTQzDQor6bmEID4gaMO6OyAjOUU0NA0KK+m5hSA+IMOpOyAjOUU0NQ0KK+m5hiA+IHnDuTsgIzlFNDYNCivpuYcgPiB4acOhbjsgIzlFNDcNCivpuYggPiB0w607ICM5RTQ4DQor6bmJID4gd8WtOyAjOUU0OQ0KK+m5iiA+IHF1w6g7ICM5RTRBDQor6bmLID4gbWnDoW87ICM5RTRCDQor6bmMID4gxIFuOyAjOUU0Qw0KK+m5jSA+IGvFq247ICM5RTREDQor6bmOID4gYsSTaTsgIzlFNEUNCivpuY8gPiBww6luZzsgIzlFNEYNCivpuZAgPiBxacSBbjsgIzlFNTANCivpuZEgPiBjaMO6bjsgIzlFNTENCivpuZIgPiBnxJNuZzsgIzlFNTINCivpuZMgPiB5dcSBbjsgIzlFNTMNCivpuZQgPiBzw7k7ICM5RTU0DQor6bmVID4gaMO6OyAjOUU1NQ0KK+m5liA+IGjDqTsgIzlFNTYNCivpuZcgPiDDqDsgIzlFNTcNCivpuZggPiBnw7o7ICM5RTU4DQor6bmZID4gccSrdTsgIzlFNTkNCivpuZogPiB6xKs7ICM5RTVBDQor6bmbID4gbcOpaTsgIzlFNUINCivpuZwgPiBtw7k7ICM5RTVDDQor6bmdID4gbsOsOyAjOUU1RA0KK+m5niA+IHnDoG87ICM5RTVFDQor6bmfID4gd8STbmc7ICM5RTVGDQor6bmgID4gbMOtdTsgIzlFNjANCivpuaEgPiBqw607ICM5RTYxDQor6bmiID4gbsOsOyAjOUU2Mg0KK+m5oyA+IGppxIFuOyAjOUU2Mw0KK+m5pCA+IGjDqDsgIzlFNjQNCivpuaUgPiB5xKs7ICM5RTY1DQor6bmmID4gecSrbmc7ICM5RTY2DQor6bmnID4gemjDqDsgIzlFNjcNCivpuaggPiBsacOhbzsgIzlFNjgNCivpuakgPiBsacOhbzsgIzlFNjkNCivpuaogPiBqacSBbzsgIzlFNkENCivpuasgPiBqw6x1OyAjOUU2Qg0KK+m5rCA+IHnDuTsgIzlFNkMNCivpua0gPiBsw7k7ICM5RTZEDQor6bmuID4geHXDoW47ICM5RTZFDQor6bmvID4gemjEgW47ICM5RTZGDQor6bmwID4gecSrbmc7ICM5RTcwDQor6bmxID4gaMO5bzsgIzlFNzENCivpubIgPiBtw6luZzsgIzlFNzINCivpubMgPiBndcOgbjsgIzlFNzMNCivpubQgPiBzaHXEgW5nOyAjOUU3NA0KK+m5tSA+IGzFrTsgIzlFNzUNCivpubYgPiBqxKtuOyAjOUU3Ng0KK+m5tyA+IGzDrW5nOyAjOUU3Nw0KK+m5uCA+IGppxINuOyAjOUU3OA0KK+m5uSA+IHhpw6FuOyAjOUU3OQ0KK+m5uiA+IGPDum87ICM5RTdBDQor6bm7ID4gamnEg247ICM5RTdCDQor6bm8ID4gamnEg247ICM5RTdDDQor6bm9ID4gecOhbjsgIzlFN0QNCivpub4gPiBjw7pvOyAjOUU3RQ0KK+m5vyA+IGzDuTsgIzlFN0YNCivpuoAgPiB5xY11OyAjOUU4MA0KK+m6gSA+IGPFqzsgIzlFODENCivpuoIgPiBqxK07ICM5RTgyDQor6bqDID4gYmnEgW87ICM5RTgzDQor6bqEID4gY8WrOyAjOUU4NA0KK+m6hSA+IGJpxIFvOyAjOUU4NQ0KK+m6hiA+IHpow7k7ICM5RTg2DQor6bqHID4gasWrbjsgIzlFODcNCivpuoggPiB6aMWtOyAjOUU4OA0KK+m6iSA+IGppxIFuOyAjOUU4OQ0KK+m6iiA+IG3DrTsgIzlFOEENCivpuosgPiBtw607ICM5RThCDQor6bqMID4gd8O6OyAjOUU4Qw0KK+m6jSA+IGzDrXU7ICM5RThEDQor6bqOID4gY2jDqW47ICM5RThFDQor6bqPID4gasWrbjsgIzlFOEYNCivpupAgPiBsw61uOyAjOUU5MA0KK+m6kSA+IG7DrTsgIzlFOTENCivpupIgPiBxw607ICM5RTkyDQor6bqTID4gbMO5OyAjOUU5Mw0KK+m6lCA+IGrDrHU7ICM5RTk0DQor6bqVID4gasWrbjsgIzlFOTUNCivpupYgPiBqxKtuZzsgIzlFOTYNCivpupcgPiBsw6w7ICM5RTk3DQor6bqYID4geGnEgW5nOyAjOUU5OA0KK+m6mSA+IHnDoW47ICM5RTk5DQor6bqaID4gamnEgTsgIzlFOUENCivpupsgPiBtw607ICM5RTlCDQor6bqcID4gbMOsOyAjOUU5Qw0KK+m6nSA+IHNow6g7ICM5RTlEDQor6bqeID4gemjEgW5nOyAjOUU5RQ0KK+m6nyA+IGzDrW47ICM5RTlGDQor6bqgID4gasSrbmc7ICM5RUEwDQor6bqhID4gasSrOyAjOUVBMQ0KK+m6oiA+IGzDrW5nOyAjOUVBMg0KK+m6oyA+IHnDoW47ICM5RUEzDQor6bqkID4gY8WrOyAjOUVBNA0KK+m6pSA+IG3DoGk7ICM5RUE1DQor6bqmID4gbcOgaTsgIzlFQTYNCivpuqcgPiBnxJM7ICM5RUE3DQor6bqoID4gY2jEg287ICM5RUE4DQor6bqpID4gZsWrOyAjOUVBOQ0KK+m6qiA+IG1pxINuOyAjOUVBQQ0KK+m6qyA+IG1pxINuOyAjOUVBQg0KK+m6rCA+IGbFqzsgIzlFQUMNCivpuq0gPiBww6BvOyAjOUVBRA0KK+m6riA+IHHDuTsgIzlFQUUNCivpuq8gPiBxw7o7ICM5RUFGDQor6bqwID4gbcOzdTsgIzlFQjANCivpurEgPiBmxas7ICM5RUIxDQor6bqyID4geGnDoG47ICM5RUIyDQor6bqzID4gbMOhaTsgIzlFQjMNCivpurQgPiBxw7o7ICM5RUI0DQor6bq1ID4gbWnDoG47ICM5RUI1DQor6bq3ID4gZsSTbmc7ICM5RUI3DQor6bq4ID4gZsWrOyAjOUVCOA0KK+m6uSA+IHHDujsgIzlFQjkNCivpurogPiBtacOgbjsgIzlFQkENCivpursgPiBtw6E7ICM5RUJCDQor6bq8ID4gbW87ICM5RUJDDQor6bq9ID4gbW87ICM5RUJEDQor6bq+ID4gaMWraTsgIzlFQkUNCivpu4AgPiB6xY11OyAjOUVDMA0KK+m7gSA+IG7Ek247ICM5RUMxDQor6buCID4gZsOpbjsgIzlFQzINCivpu4MgPiBodcOhbmc7ICM5RUMzDQor6buEID4gaHXDoW5nOyAjOUVDNA0KK+m7hSA+IGrEq247ICM5RUM1DQor6buGID4gZ3XEgW5nOyAjOUVDNg0KK+m7hyA+IHRpxIFuOyAjOUVDNw0KK+m7iCA+IHTFj3U7ICM5RUM4DQor6buJID4gaMOpbmc7ICM5RUM5DQor6buKID4geMSrOyAjOUVDQQ0KK+m7iyA+IGt1xINuZzsgIzlFQ0INCivpu4wgPiBow6luZzsgIzlFQ0MNCivpu40gPiBzaMWtOyAjOUVDRA0KK+m7jiA+IGzDrTsgIzlFQ0UNCivpu48gPiBuacOhbjsgIzlFQ0YNCivpu5AgPiBjaMSrOyAjOUVEMA0KK+m7kSA+IGjEk2k7ICM5RUQxDQor6buSID4gaMSTaTsgIzlFRDINCivpu5MgPiB5w6w7ICM5RUQzDQor6buUID4gcWnDoW47ICM5RUQ0DQor6buVID4gZMSBbjsgIzlFRDUNCivpu5YgPiB4w6w7ICM5RUQ2DQor6buXID4gdHXEg247ICM5RUQ3DQor6buYID4gbcOyOyAjOUVEOA0KK+m7mSA+IG3DsjsgIzlFRDkNCivpu5ogPiBxacOhbjsgIzlFREENCivpu5sgPiBkw6BpOyAjOUVEQg0KK+m7nCA+IGNow7k7ICM5RURDDQor6budID4gecWPdTsgIzlFREQNCivpu54gPiBkacSDbjsgIzlFREUNCivpu58gPiB5xKs7ICM5RURGDQor6bugID4geGnDoTsgIzlFRTANCivpu6EgPiB5xINuOyAjOUVFMQ0KK+m7oiA+IHHFqzsgIzlFRTINCivpu6MgPiBtxJVpOyAjOUVFMw0KK+m7pCA+IHnEg247ICM5RUU0DQor6bulID4gasSrbmc7ICM5RUU1DQor6bumID4gecO5OyAjOUVFNg0KK+m7pyA+IGzDrTsgIzlFRTcNCivpu6ggPiBkxINuZzsgIzlFRTgNCivpu6kgPiBkw7o7ICM5RUU5DQor6buqID4gY8SDbjsgIzlFRUENCivpu6sgPiB5xKtuOyAjOUVFQg0KK+m7rCA+IMOgbjsgIzlFRUMNCivpu60gPiB5xIFuOyAjOUVFRA0KK+m7riA+IHTEg247ICM5RUVFDQor6buvID4gw6BuOyAjOUVFRg0KK+m7sCA+IHpoxJVuOyAjOUVGMA0KK+m7sSA+IGTDoGk7ICM5RUYxDQor6buyID4gY8SDbjsgIzlFRjINCivpu7MgPiB5xKs7ICM5RUYzDQor6bu0ID4gbcOpaTsgIzlFRjQNCivpu7UgPiBkxINuOyAjOUVGNQ0KK+m7tiA+IHnEg247ICM5RUY2DQor6bu3ID4gZMO6OyAjOUVGNw0KK+m7uCA+IGzDujsgIzlFRjgNCivpu7kgPiB6aMStOyAjOUVGOQ0KK+m7uiA+IGbElW47ICM5RUZBDQor6bu7ID4gZsO5OyAjOUVGQg0KK+m7vCA+IGbFrTsgIzlFRkMNCivpu70gPiBtxK1uOyAjOUVGRA0KK+m7viA+IG3ErW47ICM5RUZFDQor6bu/ID4geXXDoW47ICM5RUZGDQor6byAID4gY8O5OyAjOUYwMA0KK+m8gSA+IHHDuTsgIzlGMDENCivpvIIgPiBjaMOhbzsgIzlGMDINCivpvIMgPiB3xIE7ICM5RjAzDQor6byEID4gemjFqzsgIzlGMDQNCivpvIUgPiB6aMSrOyAjOUYwNQ0KK+m8hiA+IG3DoW5nOyAjOUYwNg0KK+m8hyA+IMOhbzsgIzlGMDcNCivpvIggPiBiacSTOyAjOUYwOA0KK+m8iSA+IHTDum87ICM5RjA5DQor6byKID4gYsOsOyAjOUYwQQ0KK+m8iyA+IHl1w6FuOyAjOUYwQg0KK+m8jCA+IGNow6FvOyAjOUYwQw0KK+m8jSA+IHTDum87ICM5RjBEDQor6byOID4gZMStbmc7ICM5RjBFDQor6byPID4gbcOsOyAjOUYwRg0KK+m8kCA+IG7DoGk7ICM5RjEwDQor6byRID4gZMStbmc7ICM5RjExDQor6bySID4gesSrOyAjOUYxMg0KK+m8kyA+IGfFrTsgIzlGMTMNCivpvJQgPiBnxa07ICM5RjE0DQor6byVID4gZMWNbmc7ICM5RjE1DQor6byWID4gZsOpbjsgIzlGMTYNCivpvJcgPiB0w6FvOyAjOUYxNw0KK+m8mCA+IHl1xIFuOyAjOUYxOA0KK+m8mSA+IHDDrTsgIzlGMTkNCivpvJogPiBjaMSBbmc7ICM5RjFBDQor6bybID4gZ8SBbzsgIzlGMUINCivpvJwgPiBxw6w7ICM5RjFDDQor6bydID4geXXEgW47ICM5RjFEDQor6byeID4gdMSBbmc7ICM5RjFFDQor6byfID4gdMSTbmc7ICM5RjFGDQor6bygID4gc2jFrTsgIzlGMjANCivpvKEgPiBzaMWtOyAjOUYyMQ0KK+m8oiA+IGbDqW47ICM5RjIyDQor6byjID4gZsOoaTsgIzlGMjMNCivpvKQgPiB3w6luOyAjOUYyNA0KK+m8pSA+IGLDoTsgIzlGMjUNCivpvKYgPiBkacSBbzsgIzlGMjYNCivpvKcgPiB0w7pvOyAjOUYyNw0KK+m8qCA+IHTDs25nOyAjOUYyOA0KK+m8qSA+IHHDujsgIzlGMjkNCivpvKogPiBzaMSTbmc7ICM5RjJBDQor6byrID4gc2jDrTsgIzlGMkINCivpvKwgPiB5w7J1OyAjOUYyQw0KK+m8rSA+IHNow607ICM5RjJEDQor6byuID4gdMOtbmc7ICM5RjJFDQor6byvID4gd8O6OyAjOUYyRg0KK+m8sCA+IG5pw6BuOyAjOUYzMA0KK+m8sSA+IGrEq25nOyAjOUYzMQ0KK+m8siA+IGjDum47ICM5RjMyDQor6byzID4gasO6OyAjOUYzMw0KK+m8tCA+IHnEg247ICM5RjM0DQor6by1ID4gdMO6OyAjOUYzNQ0KK+m8tiA+IHTDrTsgIzlGMzYNCivpvLcgPiB4xKs7ICM5RjM3DQor6by4ID4geGnEg247ICM5RjM4DQor6by5ID4gecSDbjsgIzlGMzkNCivpvLogPiBsw6lpOyAjOUYzQQ0KK+m8uyA+IGLDrTsgIzlGM0INCivpvLwgPiB5xINvOyAjOUYzQw0KK+m8vSA+IHHDrXU7ICM5RjNEDQor6by+ID4gaMSBbjsgIzlGM0UNCivpvL8gPiB3xas7ICM5RjNGDQor6b2AID4gd8O5OyAjOUY0MA0KK+m9gSA+IGjDs3U7ICM5RjQxDQor6b2CID4geMOsOyAjOUY0Mg0KK+m9gyA+IGfDqTsgIzlGNDMNCivpvYQgPiB6aMSBOyAjOUY0NA0KK+m9hSA+IHjDrHU7ICM5RjQ1DQor6b2GID4gd8Oobmc7ICM5RjQ2DQor6b2HID4gemjEgTsgIzlGNDcNCivpvYggPiBuw7NuZzsgIzlGNDgNCivpvYkgPiBuw6BuZzsgIzlGNDkNCivpvYogPiBxw607ICM5RjRBDQor6b2LID4gemjEgWk7ICM5RjRCDQor6b2MID4gasOsOyAjOUY0Qw0KK+m9jSA+IHrEqzsgIzlGNEQNCivpvY4gPiBqxKs7ICM5RjRFDQor6b2PID4gasSrOyAjOUY0Rg0KK+m9kCA+IHHDrTsgIzlGNTANCivpvZEgPiBqxKs7ICM5RjUxDQor6b2SID4gY2jErTsgIzlGNTINCivpvZMgPiBjaMOobjsgIzlGNTMNCivpvZQgPiBjaMOobjsgIzlGNTQNCivpvZUgPiBow6k7ICM5RjU1DQor6b2WID4gecOhOyAjOUY1Ng0KK+m9lyA+IGvElW47ICM5RjU3DQor6b2YID4geGnDqDsgIzlGNTgNCivpvZkgPiBww6FvOyAjOUY1OQ0KK+m9miA+IGPDuW87ICM5RjVBDQor6b2bID4gc2jDrDsgIzlGNUINCivpvZwgPiB6xKs7ICM5RjVDDQor6b2dID4gY2jEqzsgIzlGNUQNCivpvZ4gPiBuacOgbjsgIzlGNUUNCivpvZ8gPiBqxa07ICM5RjVGDQor6b2gID4gdGnDoW87ICM5RjYwDQor6b2hID4gbMOtbmc7ICM5RjYxDQor6b2iID4gbMOtbmc7ICM5RjYyDQor6b2jID4gY2jFqzsgIzlGNjMNCivpvaQgPiBxdcOhbjsgIzlGNjQNCivpvaUgPiB4acOoOyAjOUY2NQ0KK+m9piA+IGvElW47ICM5RjY2DQor6b2nID4gbmnDqDsgIzlGNjcNCivpvaggPiBqw6x1OyAjOUY2OA0KK+m9qSA+IHnEg287ICM5RjY5DQor6b2qID4gY2jDuW87ICM5RjZBDQor6b2rID4ga8WtbjsgIzlGNkINCivpvawgPiB5xa07ICM5RjZDDQor6b2tID4gY2jFrTsgIzlGNkQNCivpva4gPiB5xK07ICM5RjZFDQor6b2vID4gbsOtOyAjOUY2Rg0KK+m9sCA+IGPDuW87ICM5RjcwDQor6b2xID4gesWNdTsgIzlGNzENCivpvbIgPiBxxa07ICM5RjcyDQor6b2zID4gbsSVbjsgIzlGNzMNCivpvbQgPiB4acSDbjsgIzlGNzQNCivpvbUgPiDDs3U7ICM5Rjc1DQor6b22ID4gw6g7ICM5Rjc2DQor6b23ID4gd8OyOyAjOUY3Nw0KK+m9uCA+IHnDrDsgIzlGNzgNCivpvbkgPiBjaMWrbzsgIzlGNzkNCivpvbogPiB6xY11OyAjOUY3QQ0KK+m9uyA+IGRpxIFuOyAjOUY3Qg0KK+m9vCA+IGNoxa07ICM5RjdDDQor6b29ID4gasOsbjsgIzlGN0QNCivpvb4gPiB5w6A7ICM5RjdFDQor6b2/ID4gY2jErTsgIzlGN0YNCivpvoAgPiBjaMOobjsgIzlGODANCivpvoEgPiBow6k7ICM5RjgxDQor6b6CID4ga8SVbjsgIzlGODINCivpvoMgPiBqxa07ICM5RjgzDQor6b6EID4gbMOtbmc7ICM5Rjg0DQor6b6FID4gcMOhbzsgIzlGODUNCivpvoYgPiB0acOhbzsgIzlGODYNCivpvocgPiB6xKs7ICM5Rjg3DQor6b6IID4ga8SVbjsgIzlGODgNCivpvokgPiB5xa07ICM5Rjg5DQor6b6KID4gY2jDuW87ICM5RjhBDQor6b6LID4gccWtOyAjOUY4Qg0KK+m+jCA+IHfDsjsgIzlGOEMNCivpvo0gPiBsw7NuZzsgIzlGOEQNCivpvo4gPiBww6FuZzsgIzlGOEUNCivpvo8gPiBnxY1uZzsgIzlGOEYNCivpvpAgPiBww6FuZzsgIzlGOTANCivpvpEgPiB5xINuOyAjOUY5MQ0KK+m+kiA+IGzDs25nOyAjOUY5Mg0KK+m+kyA+IGzDs25nOyAjOUY5Mw0KK+m+lCA+IGfFjW5nOyAjOUY5NA0KK+m+lSA+IGvEgW47ICM5Rjk1DQor6b6WID4gdMOgOyAjOUY5Ng0KK+m+lyA+IGzDrW5nOyAjOUY5Nw0KK+m+mCA+IHTDoDsgIzlGOTgNCivpvpkgPiBsw7NuZzsgIzlGOTkNCivpvpogPiBnxY1uZzsgIzlGOUENCivpvpsgPiBrxIFuOyAjOUY5Qg0KK+m+nCA+IGfFq2k7ICM5RjlDDQor6b6dID4gccSrdTsgIzlGOUQNCivpvp4gPiBiacSTOyAjOUY5RQ0KK+m+nyA+IGfFq2k7ICM5RjlGDQor6b6gID4geXXDqDsgIzlGQTANCivpvqEgPiBjaMO5aTsgIzlGQTENCivpvqIgPiBow6k7ICM5RkEyDQor6b6jID4ganXDqTsgIzlGQTMNCivpvqQgPiB4acOpOyAjOUZBNA0KK+m+pSA+IHnDuTsgIzlGQTUNCivvpI4gPiBsw6A7ICNGOTBFDQor76iMID4gd8O5OyAjRkEwQw0KK++ojSA+IGjDuW87ICNGQTBEDQor76iQID4gemjFj25nOyAjRkExMA0KK++okiA+IHHDrW5nOyAjRkExMg0KK++olSA+IHjEqzsgI0ZBMTUNCivvqJYgPiB6aMWrOyAjRkExNg0KK++olyA+IHnDrDsgI0ZBMTcNCivvqJggPiBsxK07ICNGQTE4DQor76iZID4gc2jDqW47ICNGQTE5DQor76iaID4geGnDoW5nOyAjRkExQQ0KK++omyA+IGbDujsgI0ZBMUINCivvqJwgPiBqw6xuZzsgI0ZBMUMNCivvqJ0gPiBqxKtuZzsgI0ZBMUQNCivvqJ4gPiB5xa07ICNGQTFFDQor76iiID4gemjFqzsgI0ZBMjINCivvqKUgPiB5w6w7ICNGQTI1DQor76imID4gZMWrOyAjRkEyNg0KK++oqiA+IGbDoG47ICNGQTJBDQor76irID4gc8OsOyAjRkEyQg0KK++orCA+IGd1xINuOyAjRkEyQw0KK++orSA+IGjDqDsgI0ZBMkQNCisNCisjIGVvZg0KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0hpcmFnYW5hX0thdGFrYW5hLnV0ZjgudHh0IGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfSGlyYWdhbmFfS2F0YWthbmEudXRmOC50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGY5MDRkNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0hpcmFnYW5hX0thdGFrYW5hLnV0ZjgudHh0CkBAIC0wLDAgKzEsMjAwIEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzDQorIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIERhdGU6IFR1ZSBKYW4gMjMgMjAwMQ0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKyMgSGlyYWdhbmEtS2F0YW5hDQorDQorIyBUaGlzIGlzIGxhcmdlbHkgYSBvbmUtdG8tb25lIG1hcHBpbmcsIGJ1dCBpdCBoYXMgYQ0KKyMgZmV3IGtpbmtzOg0KKw0KKyMgMS4gVGhlIEthdGFrYW5hIHZhL3ZpL3ZlL3ZvICgzMEY3LTMwRkEpIGhhdmUgbm8NCisjIEhpcmFnYW5hIGVxdWl2YWxlbnRzLiAgV2UgdXNlIEhpcmFnYW5hIHdhL3dpL3dlL3dvDQorIyAoMzA4Ri0zMDkyKSB3aXRoIGEgdm9pY2luZyBtYXJrICgzMDk5KSwgd2hpY2ggaXMNCisjIHNlbWFudGljYWxseSBlcXVpdmFsZW50LiAgSG93ZXZlciwgdGhpcyBpcyBhIG5vbi0NCisjIHJvdW5kdHJpcHBpbmcgdHJhbnNmb3JtYXRpb24uDQorDQorIyAyLiBUaGUgS2F0YWthbmEgc21hbGwga2Eva2UgKDMwRjUsMzBGNikgaGF2ZSBubw0KKyMgSGlyYWdhbmEgZXF1aWF2bGVudHMuICBXZSBjb252ZXJ0IHRoZW0gdG8gbm9ybWFsDQorIyBIaXJhZ2FuYSBrYS9rZSAoMzA0QiwzMDUxKS4gIFRoaXMgaXMgYSBvbmUtd2F5DQorIyBpbmZvcm1hdGlvbi1sb3NpbmcgdHJhbnNmb3JtYXRpb24gYW5kIHByZWNsdWRlcw0KKyMgcm91bmQtdHJpcHBpbmcgb2YgMzBGNSBhbmQgMzBGNi4NCisNCisjIDMuIFRoZSBjb21iaW5pbmcgbWFya3MgMzA5OS0zMDlDIGFyZSBpbiB0aGUgSGlyYWdhbmENCisjIGJsb2NrLCBidXQgdGhleSBhcHBseSB0byBLYXRha2FuYSBhcyB3ZWxsLCBzbyB3ZQ0KKyMgbGVhdmUgdGhlbSB1bnRvdWNoZWQuDQorDQorIyA0LiBUaGUgS2F0YWthbmEgcHJvbG9uZ2VkIHNvdW5kIG1hcmsgMzBGQyBkb3VibGVzIHRoZQ0KKyMgcHJlY2VkaW5nIHZvd2VsLiAgVGhpcyBpcyBhIG9uZS13YXkgaW5mb3JtYXRpb24tDQorIyBsb3NpbmcgdHJhbnNmb3JtYXRpb24gZnJvbSBLYXRha2FuYSB0byBIaXJhZ2FuYS4NCisNCisjIDUuIFRoZSBLYXRha2FuYSBtaWRkbGUgZG90IHNlcGFyYXRlcyB3b3JkcyBpbiBmb3JlaWduDQorIyBleHByZXNzaW9uczsgd2UgbGVhdmUgdGhpcyB1bm1vZGlmaWVkLg0KKw0KKyMgVGhlIGFib3ZlIHBvaW50cyBwcmVjbHVkZSBzdWNjZXNzZnVsIHJvdW5kLXRyaXANCisjIHRyYW5zZm9ybWF0aW9ucyBvZiBhcmJpdHJhcnkgaW5wdXQgdGV4dC4gIEhvd2V2ZXIsDQorIyB0aGV5IHByb3ZpZGUgbmF0dXJhbGlzdGljIHJlc3VsdHMgdGhhdCBzaG91bGQgY29uZm9ybQ0KKyMgdG8gdXNlciBleHBlY3RhdGlvbnMuDQorDQorDQorIyBDb21iaW5pbmcgZXF1aXZhbGVudHMgdmEvdmkvdmUvdm8NCivjgo/jgpkgPD4g44O3Ow0KK+OCkOOCmSA8PiDjg7g7DQor44KR44KZIDw+IOODuTsNCivjgpLjgpkgPD4g44O6Ow0KKw0KKyMgT25lLXRvLW9uZSBtYXBwaW5ncywgbWFpbiBibG9jaw0KKyMgMzA0MTozMDk0IDw+IDMwQTE6MzBGNA0KKyMgMzA5RCxFIDw+IDMwRkQsRQ0KK+OBgSA8PiDjgqE7DQor44GCIDw+IOOCojsNCivjgYMgPD4g44KjOw0KK+OBhCA8PiDjgqQ7DQor44GFIDw+IOOCpTsNCivjgYYgPD4g44KmOw0KK+OBhyA8PiDjgqc7DQor44GIIDw+IOOCqDsNCivjgYkgPD4g44KpOw0KK+OBiiA8PiDjgqo7DQor44GLIDw+IOOCqzsNCivjgYwgPD4g44KsOw0KK+OBjSA8PiDjgq07DQor44GOIDw+IOOCrjsNCivjgY8gPD4g44KvOw0KK+OBkCA8PiDjgrA7DQor44GRIDw+IOOCsTsNCivjgZIgPD4g44KyOw0KK+OBkyA8PiDjgrM7DQor44GUIDw+IOOCtDsNCivjgZUgPD4g44K1Ow0KK+OBliA8PiDjgrY7DQor44GXIDw+IOOCtzsNCivjgZggPD4g44K4Ow0KK+OBmSA8PiDjgrk7DQor44GaIDw+IOOCujsNCivjgZsgPD4g44K7Ow0KK+OBnCA8PiDjgrw7DQor44GdIDw+IOOCvTsNCivjgZ4gPD4g44K+Ow0KK+OBnyA8PiDjgr87DQor44GgIDw+IOODgDsNCivjgaEgPD4g44OBOw0KK+OBoiA8PiDjg4I7DQor44GjIDw+IOODgzsNCivjgaQgPD4g44OEOw0KK+OBpSA8PiDjg4U7DQor44GmIDw+IOODhjsNCivjgacgPD4g44OHOw0KK+OBqCA8PiDjg4g7DQor44GpIDw+IOODiTsNCivjgaogPD4g44OKOw0KK+OBqyA8PiDjg4s7DQor44GsIDw+IOODjDsNCivjga0gPD4g44ONOw0KK+OBriA8PiDjg447DQor44GvIDw+IOODjzsNCivjgbAgPD4g44OQOw0KK+OBsSA8PiDjg5E7DQor44GyIDw+IOODkjsNCivjgbMgPD4g44OTOw0KK+OBtCA8PiDjg5Q7DQor44G1IDw+IOODlTsNCivjgbYgPD4g44OWOw0KK+OBtyA8PiDjg5c7DQor44G4IDw+IOODmDsNCivjgbkgPD4g44OZOw0KK+OBuiA8PiDjg5o7DQor44G7IDw+IOODmzsNCivjgbwgPD4g44OcOw0KK+OBvSA8PiDjg507DQor44G+IDw+IOODnjsNCivjgb8gPD4g44OfOw0KK+OCgCA8PiDjg6A7DQor44KBIDw+IOODoTsNCivjgoIgPD4g44OiOw0KK+OCgyA8PiDjg6M7DQor44KEIDw+IOODpDsNCivjgoUgPD4g44OlOw0KK+OChiA8PiDjg6Y7DQor44KHIDw+IOODpzsNCivjgoggPD4g44OoOw0KK+OCiSA8PiDjg6k7DQor44KKIDw+IOODqjsNCivjgosgPD4g44OrOw0KK+OCjCA8PiDjg6w7DQor44KNIDw+IOODrTsNCivjgo4gPD4g44OuOw0KK+OCjyA8PiDjg687DQor44KQIDw+IOODsDsNCivjgpEgPD4g44OxOw0KK+OCkiA8PiDjg7I7DQor44KTIDw+IOODszsNCivjgpQgPD4g44O0Ow0KK+OCnSA8PiDjg707DQor44KeIDw+IOODvjsNCisNCisjIE9uZS13YXkgS2F0YWthbmEtSGlyYWdhbmEgeGZvcm0gb2Ygc21hbGwgSyBrYS9rZSB0bw0KKyMgbm9ybWFsIEgga2Eva2UuDQor44GLIDwg44O1Ow0KK+OBkSA8IOODtjsNCisNCisjIEthdGFrYW5hIGZvbGxvd2VkIGJ5IGEgcHJvbG9uZ2VkIHNvdW5kIG1hcmsgMzBGQyBoYXMNCisjIGl0cyBmaW5hbCB2b3dlbCBkb3VibGVkLiAgVGhpcyBpcyBhIEthdGFrYW5hLUhpcmFnYW5hDQorIyBvbmUtd2F5IGluZm9ybWF0aW9uLWxvc2luZyB0cmFuc2Zvcm1hdGlvbi4gIFdlDQorIyBpbmNsdWRlIHRoZSBzbWFsbCBLYXRha2FuYSAoZS5nLiwgc21hbGwgQSAzMDQxKSBhbmQNCisjIGRvIG5vdCBkaXN0aW5ndWlzaCB0aGVtIGZyb20gdGhlaXIgbGFyZ2UNCisjIGNvdW50ZXJwYXJ0cy4gIEl0IGRvZXNuJ3QgbWFrZSBzZW5zZSB0byBkb3VibGUgYQ0KKyMgc21hbGwgY291bnRlcnBhcnQgdm93ZWwgYXMgYSBzbWFsbCBIaXJhZ2FuYSB2b3dlbCwgc28NCisjIHdlIGRvbid0IGRvIHNvLiAgSW4gbmF0dXJhbCB0ZXh0IHRoaXMgc2hvdWxkIG5ldmVyDQorIyBvY2N1ciBhbnl3YXkuICBJZiBhIDMwRkMgaXMgc2VlbiB3aXRob3V0IGEgcHJlY2VkaW5nDQorIyB2b3dlbCBzb3VuZCAoZS5nLiwgYWZ0ZXIgbiAzMEYzKSB3ZSBkbyBub3QgY2hhbmdlIGl0Lg0KKw0KKyMjIyAkbG9uZyA9IOODvDsNCisNCisjIFRoZSBmb2xsb3dpbmcgY2F0ZWdvcmllcyBhcmUgSGlyYWdhbmEsIG5vdCBLYXRha2FuYQ0KKyMgYXMgbWlnaHQgYmUgZXhwZWN0ZWQsIHNpbmNlIGJ5IHRoZSB0aW1lIHdlIGdldCB0byB0aGUNCisjIDMwRkMsIHRoZSBwcmVjZWRpbmcgY2hhcmFjdGVyIHdpbGwgaGF2ZSBhbHJlYWR5IGJlZW4NCisjIHRyYW5zZm9ybWVkIHRvIEhpcmFnYW5hLg0KKw0KKyMge1RoZSBmb2xsb3dpbmcgbWVjaGFuaWNhbGx5IGdlbmVyYXRlZCBmcm9tIHRoZQ0KKyMgVW5pY29kZSAzLjAgZGF0YTp9DQorDQorJHhhID0gWyBcDQor44GBIOOBgiDjgYsg44GMIOOBlSDjgZYgXA0KK+OBnyDjgaAg44GqIOOBryDjgbAg44GxIFwNCivjgb4g44KDIOOChCDjgokg44KOIOOCjyBcDQorXTsNCisNCiskeGkgPSBbIFwNCivjgYMg44GEIOOBjSDjgY4g44GXIOOBmCBcDQor44GhIOOBoiDjgasg44GyIOOBsyDjgbQgXA0KK+OBvyDjgoog44KQIFwNCitdOw0KKw0KKyR4dSA9IFsgXA0KK+OBhSDjgYYg44GPIOOBkCDjgZkg44GaIFwNCivjgaMg44GkIOOBpSDjgawg44G1IOOBtiBcDQor44G3IOOCgCDjgoUg44KGIOOCiyDjgpQgXA0KK107DQorDQorJHhlID0gWyBcDQor44GHIOOBiCDjgZEg44GSIOOBmyDjgZwgXA0KK+OBpiDjgacg44GtIOOBuCDjgbkg44G6IFwNCivjgoEg44KMIOOCkSBcDQorXTsNCisNCiskeG8gPSBbIFwNCivjgYkg44GKIOOBkyDjgZQg44GdIOOBniBcDQor44GoIOOBqSDjga4g44G7IOOBvCDjgb0gXA0KK+OCgiDjgocg44KIIOOCjSDjgpIgXA0KK107DQorDQor44GCIDwgJHhhIHvjg7x9Ow0KK+OBhCA8ICR4aSB744O8fTsNCivjgYYgPCAkeHUge+ODvH07DQor44GIIDwgJHhlIHvjg7x9Ow0KK+OBiiA8ICR4byB744O8fTsNCisNCisjIGVvZg0KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfQmVuZ2FsaS51dGY4LnR4dCBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfQmVuZ2FsaS51dGY4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jM2NiNTM2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19CZW5nYWxpLnV0ZjgudHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfRGV2YW5hZ2FyaS51dGY4LnR4dCBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfRGV2YW5hZ2FyaS51dGY4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42YjlhYzA4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19EZXZhbmFnYXJpLnV0ZjgudHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfR3VqYXJhdGkudXRmOC50eHQgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX0d1amFyYXRpLnV0ZjgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQxZGJjZWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX0d1amFyYXRpLnV0ZjgudHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfR3VybXVraGkudXRmOC50eHQgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX0d1cm11a2hpLnV0ZjgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmNjNjBlYTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX0d1cm11a2hpLnV0ZjgudHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfS2FubmFkYS51dGY4LnR4dCBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfS2FubmFkYS51dGY4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iMWFkNTkxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19LYW5uYWRhLnV0ZjgudHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfTWFsYXlhbGFtLnV0ZjgudHh0IGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19NYWxheWFsYW0udXRmOC50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTA5MzFkOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfTWFsYXlhbGFtLnV0ZjgudHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfT3JpeWEudXRmOC50eHQgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX09yaXlhLnV0ZjgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmNkZjdjMmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX09yaXlhLnV0ZjgudHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfVGFtaWwudXRmOC50eHQgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX1RhbWlsLnV0ZjgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU0MjdhYzIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX1RhbWlsLnV0ZjgudHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfVGVsdWd1LnV0ZjgudHh0IGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19UZWx1Z3UudXRmOC50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZmMyYjZkMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0ludGVySW5kaWNfVGVsdWd1LnV0ZjgudHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0thbmppX0VuZ2xpc2gudXRmOC50eHQgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9LYW5qaV9FbmdsaXNoLnV0ZjgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjlmMDUyODIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9LYW5qaV9FbmdsaXNoLnV0ZjgudHh0CkBAIC0wLDAgKzEsNjM2NiBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcw0KKyMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBEYXRlOiBUdWUgSmFuIDIzIDEyOjQyOjAyIDIwMDENCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCisjIEthbmppLUVuZ2xpc2gNCisNCivkuIE+J1ttYWxlIGFkdWx0XSc7DQor5LiDPidbc2V2ZW5dJzsNCivkuIc+J1t0ZW4gdGhvdXNhbmRdJzsNCivkuIg+J1t1bml0IG9mIGxlbmd0aCBlcXVhbCAzLjMgbWV0ZXJzXSc7DQor5LiJPidbdGhyZWVdJzsNCivkuIo+J1t0b3BdJzsNCivkuIs+J1t1bmRlcl0nOw0KK+S4jT4nW25vXSc7DQor5LiOPidbYW5kXSc7DQor5LiQPidbYmVnZ2FyXSc7DQor5LiRPidbY2xvd25dJzsNCivkuJQ+J1ttb3Jlb3Zlcl0nOw0KK+S4lT4nW2dyZWF0XSc7DQor5LiWPidbZ2VuZXJhdGlvbl0nOw0KK+S4lz4nW3RoaXJ0eV0nOw0KK+S4mD4nW2hpbGxdJzsNCivkuJk+J1t0aGlyZCBvZiBoZWF2ZW5seSBzdGVtc10nOw0KK+S4nj4nW2Fzc2lzdF0nOw0KK+S4oT4nW3R3b10nOw0KK+S4pj4nW2VxdWFsIHRvXSc7DQor5LiqPidbbnVtZXJhcnkgYWRqdW5jdF0nOw0KK+S4rT4nW2NlbnRyYWxdJzsNCivkuLE+J1tjaGlsZCcncyBoYWlyc3R5bGUgYm91bmQgaW4gdHdvIHR1ZnRzXSc7DQor5LiyPidbc3RyaW5nXSc7DQor5Li2PidbZG90XSc7DQor5Li4Pidbc21hbGwgcm91bmQgb2JqZWN0XSc7DQor5Li5PidbY2lubmFiYXIgKG5hdGl2ZSBIZ1MpXSc7DQor5Li7PidbbWFzdGVyXSc7DQor5Li8PidbYm93bCBvZiBmb29kXSc7DQor5Li/PidbbGluZV0nOw0KK+S5gj4nW2dvdmVybl0nOw0KK+S5gz4nW3RoZW5dJzsNCivkuYU+J1tsb25nIHRpbWUgKGFnbyldJzsNCivkuYs+J1snJ3MgKG1hcmtzIHByZWNlZGluZyBwaHJhc2UgYXMgbW9kaWZpZXIgb2YgZm9sbG93aW5nIHBocmFzZSldJzsNCivkuY0+J1tzdWRkZW5seV0nOw0KK+S5jj4nW2ludGVycm9nYXRpdmUgb3IgZXhjbGFtYXRvcnkgZmluYWwgcGFydGljbGVdJzsNCivkuY8+J1tsYWNrXSc7DQor5LmVPidbdGlnZXJdJzsNCivkuZY+J1tyZWJlbF0nOw0KK+S5lz4nW3JpZGVdJzsNCivkuZg+J1tyaWRlXSc7DQor5LmZPidbc2Vjb25kIGhlYXZlbicncyBzdGVtXSc7DQor5LmdPidbbmluZV0nOw0KK+S5nj4nW2JlZ10nOw0KK+S5nz4nW2Fsc29dJzsNCivkuaI+J1tsaWRdJzsNCivkubE+J1tjb25mdXNpb25dJzsNCivkubM+J1ticmVhc3RdJzsNCivkub4+J1tkcnldJzsNCivkuoA+J1t0dXJ0bGUgb3IgdG9ydG9pc2VdJzsNCivkuoI+J1tjb25mdXNpb25dJzsNCivkuoU+J1tob29rXSc7DQor5LqGPidbdG8gZmluaXNoXSc7DQor5LqIPidbSV0nOw0KK+S6iT4nW2Rpc3B1dGVdJzsNCivkuoo+J1thZmZhaXJdJzsNCivkuos+J1thZmZhaXJdJzsNCivkuow+J1t0d29dJzsNCivkuo4+J1tpbl0nOw0KK+S6kT4nW3NheV0nOw0KK+S6kj4nW211dHVhbGx5XSc7DQor5LqUPidbZml2ZV0nOw0KK+S6lT4nW3dlbGxdJzsNCivkupg+J1tleHRlbmQgYWNyb3NzXSc7DQor5LqZPidbZXh0ZW5kIGFjcm9zc10nOw0KK+S6mz4nW2xpdHRsZV0nOw0KK+S6nD4nW2FzaWFdJzsNCivkup4+J1thc2lhXSc7DQor5LqfPidbdXJnZW50bHldJzsNCivkuqA+J1toZWFkXSc7DQor5LqhPidbZGVhdGhdJzsNCivkuqI+J1toaWdoXSc7DQor5LqkPidbbWl4XSc7DQor5LqlPidbbGFzdCBvZiAxMiBlYXJ0aCBicmFuY2hlc10nOw0KK+S6pj4nW2Fsc29dJzsNCivkuqg+J1tzbW9vdGhseV0nOw0KK+S6qz4nW2Vuam95XSc7DQor5LqsPidbY2FwaXRhbCBjaXR5XSc7DQor5LqtPidbcGF2aWxpb25dJzsNCivkuq4+J1ticmlnaHRdJzsNCivkurA+J1tjYXBpdGFsIGNpdHldJzsNCivkurM+J1tuYW1lIG9mIGRpc3RyaWN0IGluIEFuaHVpXSc7DQor5Lq2Pidbc2luY2VyZV0nOw0KK+S6uj4nW21hbl0nOw0KK+S7gD4nW2ZpbGUgb2YgdGVuIHNvbGRpZXJzXSc7DQor5LuBPidbaHVtYW5lbmVzc10nOw0KK+S7gj4nW3N1cnBsdXMgb3IgZXhjZXNzXSc7DQor5LuEPidbc2xhbnRpbmddJzsNCivku4Y+J1tmYWxsIGZvcndhcmRdJzsNCivku4c+J1tlbmVteV0nOw0KK+S7ij4nW25vd10nOw0KK+S7iz4nW2ZvcmVydW5uZXJdJzsNCivku40+J1t5ZXRdJzsNCivku44+J1tmcm9tXSc7DQor5LuPPidbYnVkZGhhXSc7DQor5LuUPidbc21hbGwgdGhpbmddJzsNCivku5U+J1tvZmZpY2lhbF0nOw0KK+S7lj4nW290aGVyXSc7DQor5LuXPidbcmVseSB1cG9uXSc7DQor5LuYPidbZ2l2ZV0nOw0KK+S7mT4nW1Rhb2lzdCBzdXBlci1iZWluZ10nOw0KK+S7nT4nW3RvZ2V0aGVyXSc7DQor5LuePidbYW5jaWVudCB1bml0IG9mIG1lYXN1cmUgKDggZmVldCldJzsNCivku58+J1tvbmUgdGhvdXNhbmRdJzsNCivku6M+J1tyZXBsYWNlXSc7DQor5LukPidbY29tbWFuZF0nOw0KK+S7pT4nW2J5IG1lYW5zIG9mXSc7DQor5LutPidbYW5jaWVudCB1bml0IG9mIG1lYXN1cmUgKDggZmVldCldJzsNCivku64+J1tmYWxzZWhvb2RdJzsNCivku7A+J1tyYWlzZSB0aGUgaGVhZCB0byBsb29rXSc7DQor5LuyPidbbWlkZGxlIGJyb3RoZXJdJzsNCivku7Y+J1tudW1lcmFyeSBhZGp1bmN0IGZvciBhcnRpY2xlXSc7DQor5Lu3PidbcHJpY2VdJzsNCivku7s+J1t0cnVzdCB0b10nOw0KK+S8gT4nW3BsYW4gYSBwcm9qZWN0XSc7DQor5LyJPidbY29tcGFyZV0nOw0KK+S8ij4nW3RoaXJkIHBlcnNvbiBwcm9ub3VuXSc7DQor5LyNPidbZml2ZV0nOw0KK+S8jj4nW3RhbGVudF0nOw0KK+S8jz4nW2Nyb3VjaF0nOw0KK+S8kD4nW2N1dCBkb3duXSc7DQor5LyRPidbcmVzdF0nOw0KK+S8mj4nW2Fzc2VtYmxlXSc7DQor5LycPidbZGVwdXR5XSc7DQor5LydPidbc3VtbW9uXSc7DQor5LyvPidbb2xkZXIgYnJvdGhlcl0nOw0KK+S8sD4nW21lcmNoYW50XSc7DQor5Ly0PidbY29tcGFuaW9uXSc7DQor5Ly2PidbbG9uZWx5XSc7DQor5Ly4PidbZXh0ZW5kXSc7DQor5Ly6Pidbc2VydmVdJzsNCivkvLw+J1tyZXNlbWJsZV0nOw0KK+S8vT4nW3RyYW5zY3JpcHRpb24gb2Ygc2Fuc2tyaXQgZ2hhIGluIGJ1ZGRoaXN0IHRleHRzICgnw6ttw6LDpicgXCJzYW1naGFcIildJzsNCivkvYM+J1t0ZW5hbnQgZmFybWVyXSc7DQor5L2GPidbb25seV0nOw0KK+S9hz4nW3dhaXRdJzsNCivkvY0+J1t0aHJvbmVdJzsNCivkvY4+J1tsb3ddJzsNCivkvY8+J1tyZXNpZGVdJzsNCivkvZA+J1thc3Npc3RdJzsNCivkvZE+J1toZWxwXSc7DQor5L2TPidbYm9keV0nOw0KK+S9lT4nW3doYXRdJzsNCivkvZc+J1tvdGhlcl0nOw0KK+S9mT4nW0ldJzsNCivkvZo+J1tpbmR1bGdlIGluIHBsZWFzdXJlc10nOw0KK+S9mz4nW2J1ZGRoYSAoY29udHJhY3Rpb24gb2YgTUMgJ2JoacOqdGRoYScpXSc7DQor5L2cPidbbWFrZV0nOw0KK+S9nT4nW3JpY2tldHNdJzsNCivkvZ4+J1tmbGF0dGVyeV0nOw0KK+S9qT4nW2JlbHQgb3JuYW1lbnRdJzsNCivkva8+J1twcmV0ZW5kXSc7DQor5L2wPidbaHVuZHJlZF0nOw0KK+S9sz4nW2dvb2RdJzsNCivkvbU+J1tjb21iaW5lXSc7DQor5L22Pidbc3Ryb25nXSc7DQor5L27PidbZnJpdm9sb3VzXSc7DQor5L28PidbYmVhdXRpZnVsXSc7DQor5L2/PidbY2F1c2VdJzsNCivkvoM+J1t1cHJpZ2h0IGFuZCBzdHJvbmddJzsNCivkvoY+J1tjb21lXSc7DQor5L6IPidbbHV4dXJpb3VzXSc7DQor5L6LPidbcHJlY2VkZW50XSc7DQor5L6NPidbc2VydmVdJzsNCivkvo8+J1tzbWFsbF0nOw0KK+S+kT4nW2hlbHBdJzsNCivkvpY+J1tsb2dpY2FsIHJlYXNvbnNdJzsNCivkvpg+J1tkaXNhcHBvaW50ZWRdJzsNCivkvps+J1tzdXBwbHldJzsNCivkvp0+J1tyZWx5IG9uXSc7DQor5L6gPidbY2hpdmFscm91cyBwZXJzb25dJzsNCivkvqE+J1twcmljZV0nOw0KK+S+qz4nW2ZsYXR0ZXJ5XSc7DQor5L6tPidbY29tcGxldGVdJzsNCivkvq4+J1tpbnN1bHRdJzsNCivkvq8+J1ttYXJxdWlzXSc7DQor5L61PidbaW52YWRlXSc7DQor5L62PidbY29tcGFuaW9uXSc7DQor5L6/PidbY29udmVuaWVuY2VdJzsNCivkv4I+J1tiaW5kXSc7DQor5L+DPidbdXJnZV0nOw0KK+S/hD4nW3N1ZGRlbihseSldJzsNCivkv4o+J1t0YWxlbnRlZF0nOw0KK+S/jj4nW2Nob3BwaW5nIGJvYXJkIG9yIGJsb2NrXSc7DQor5L+QPidbc21vb3RoXSc7DQor5L+RPidbd29vZGVuIGZpZ3VyZSBidXJpZWQgd2l0aCBkZWFkXSc7DQor5L+UPidbbGlrZV0nOw0KK+S/lz4nW3NvY2lhbCBjdXN0b21zXSc7DQor5L+YPidbcHJpc29uZXIgb2Ygd2FyXSc7DQor5L+aPidbcnVzdGljXSc7DQor5L+bPidbbWFrZSBlZmZvcnRdJzsNCivkv50+J1twcm90ZWN0XSc7DQor5L+fPidbd2FpdCBmb3JdJzsNCivkv6E+J1t0cnVzdF0nOw0KK+S/oz4nW2JpZ10nOw0KKyMi5L+jPidbYmlnXSciLA0KK+S/pT4nW3JpY2tzaGF3XSc7DQor5L+uPidbc3R1ZHldJzsNCivkv68+J1tib3cgZG93bl0nOw0KK+S/sz4nW2FjdG9yXSc7DQor5L+1PidbZGl2aWRlXSc7DQor5L+2Pidbc3RhcnRdJzsNCivkv7g+J1t3YWdlc10nOw0KK+S/uj4nW3BlcnNvbmFsIHByb25vdW5dJzsNCivkv74+J1tzbyB0aGF0XSc7DQor5YCFPidbZGVwdXR5XSc7DQor5YCGPidbY2xldmVyXSc7DQor5YCJPidbZ3JhbmFyeV0nOw0KK+WAiz4nW251bWVyYXJ5IGFkanVuY3RdJzsNCivlgI0+J1t0aW1lc10nOw0KK+WAjz4nW2hhc3RpbHldJzsNCivlgJE+J1thZGp1bmN0IHByb25vdW4gaW5kaWNhdGUgcGx1cmFsXSc7DQor5YCSPidbZmFsbCBvdmVyXSc7DQor5YCUPidbc3R1YmJvcm5dJzsNCivlgJY+J1tsdWNreV0nOw0KK+WAmT4nW3dhaXRdJzsNCivlgJo+J1tyZWx5IG9uXSc7DQor5YCfPidbYm9ycm93XSc7DQor5YChPidbZ3VpZGVdJzsNCivlgKM+J1tpbWl0YXRlXSc7DQor5YCkPidbcHJpY2VdJzsNCivlgKU+J1tib29yaXNoXSc7DQor5YCmPidbYmUgdGlyZWQgb2ZdJzsNCivlgKg+J1thcnJvZ2FudF0nOw0KK+WAqT4nW2JlYXV0aWZ1bF0nOw0KK+WAqj4nW2ZlZWJsZV0nOw0KK+WAqz4nW25vcm1hbCBodW1hbiByZWxhdGlvbnNoaXBzXSc7DQor5YCsPidbbm90aWNlYWJsZV0nOw0KK+WArT4nW2R3YXJmXSc7DQor5YC2PidbYWxsXSc7DQor5YC5PidbdGVtcGVyYXRlXSc7DQor5YGDPidbY2Vhc2VdJzsNCivlgYc+J1tmYWxzZWhvb2RdJzsNCivlgYg+J1ticmF2ZV0nOw0KK+WBiT4nW2dyZWF0XSc7DQor5YGPPidbaW5jbGluZWQgb25lIHNpZGVdJzsNCivlgZA+J1tmYWxzZV0nOw0KK+WBlT4nW3RvZ2V0aGVyXSc7DQor5YGWPidbcmlwIHVwXSc7DQor5YGaPidbd29ya10nOw0KK+WBnD4nW3N0b3BdJzsNCivlgaU+J1tzdHJvbmddJzsNCivlgaw+J1t1cmdlbnRdJzsNCivlgbI+J1t0YWxlbnRlZF0nOw0KK+WBtD4nW3NpZGVdJzsNCivlgbU+J1tzcHldJzsNCivlgbY+J1thY2NpZGVudGFsbHldJzsNCivlgbg+J1t0byBzdGVhbF0nOw0KK+WBvT4nW2ZhbHNlXSc7DQor5YKAPidbZ3JlYXRdJzsNCivlgoU+J1t0dXRvcl0nOw0KK+WCjT4nW2J5IHNpZGUgb2ZdJzsNCivlgpE+J1toZXJvXSc7DQor5YKYPidbdW1icmVsbGFdJzsNCivlgpk+J1twcmVwYXJlXSc7DQor5YKaPidbaW1pdGF0ZV0nOw0KK+WCrD4nW3ByZXNzXSc7DQor5YKtPidbaGlyZV0nOw0KK+WCsj4nW3Byb3VkXSc7DQor5YKzPidbc3VtbW9uXSc7DQor5YK0PidbaHVtcGJhY2tdJzsNCivlgrU+J1tkZWJ0XSc7DQor5YK3Pidbd291bmRdJzsNCivlgr4+J1t1cHNldF0nOw0KK+WDgj4nW2h1bXBiYWNrXSc7DQor5YOFPidbb25seV0nOw0KK+WDiT4nW2FsbF0nOw0KK+WDij4nW1Rhb2lzdCBzdXBlci1iZWluZ10nOw0KK+WDjT4nW2xhYm9yXSc7DQor5YOPPidbcGljdHVyZV0nOw0KK+WDkT4nW3Nvam91cm5dJzsNCivlg5U+J1tzbGF2ZV0nOw0KK+WDlj4nW2pveV0nOw0KK+WDmj4nW2NvbXBhbmlvbl0nOw0KK+WDnj4nW2ZhbHNlXSc7DQor5YOjPidbYXNzdW1lXSc7DQor5YOlPidbYmUgbHVja3ldJzsNCivlg6c+J1tidWRkaGlzdCBwcmllc3RdJzsNCivlg60+J1thc3N1bWVdJzsNCivlg64+J1twYWdlXSc7DQor5YO1Pidbc3RpZmYgYW5kIG1vdGlvbmxlc3NdJzsNCivlg7k+J1twcmljZV0nOw0KK+WDuz4nW291dC1vZi10aGUtd2F5XSc7DQor5YSAPidbY2VyZW1vbnldJzsNCivlhIE+J1tvdXRzdGFuZGluZ10nOw0KK+WEgj4nW0ldJzsNCivlhIQ+J1todW5kcmVkIG1pbGxpb25dJzsNCivlhIk+J1t0ZW1wZXJhdGVdJzsNCivlhJI+J1tjb25mdWNpYW4gc2Nob2xhcl0nOw0KK+WElD4nW2NvbXBhbmlvbl0nOw0KK+WElT4nW2EgY29tcGFueV0nOw0KKyMi5YSVPidbYSBjb21wYW55XSciLA0KK+WEmD4nW3V0bW9zdF0nOw0KKyMi5YSYPidbdXRtb3N0XSciLA0KK+WEnz4nW3JlcGF5XSc7DQor5YShPidbcHVwcGV0XSc7DQor5YSqPidbc3VwZXJpb3JdJzsNCivlhLI+J1tzYXZlIG1vbmV5XSc7DQor5YS3Pidbc3BvdXNlXSc7DQor5YS6PidbcmljaF0nOw0KK+WEuz4nW2lmXSc7DQor5YS8PidbZ3JhdmVdJzsNCivlhL8+J1tzb25dJzsNCivlhYA+J1t0byBjdXQgb2ZmIHRoZSBmZWV0XSc7DQor5YWBPidbdG8gZ3JhbnRdJzsNCivlhYM+J1tmaXJzdF0nOw0KK+WFhD4nW2VsZGVyIGJyb3RoZXJdJzsNCivlhYU+J1tmaWxsXSc7DQor5YWGPidbb21lbl0nOw0KK+WFhz4nW2F0cm9jaW91c10nOw0KK+WFiD4nW2ZpcnN0XSc7DQor5YWJPidbbGlnaHRdJzsNCivlhYs+J1tncmFtXSc7DQor5YWMPidbY2FzaF0nOw0KK+WFjT4nW3NwYXJlXSc7DQor5YWOPidbcmFiYml0XSc7DQor5YWQPidbc29uXSc7DQor5YWSPidbc29uXSc7DQor5YWUPidbcmFiYml0XSc7DQor5YWaPidbcG9saXRpY2FsIHBhcnR5XSc7DQor5YWcPidbcG91Y2hdJzsNCivlhaI+J1tmZWFyZnVsXSc7DQor5YWlPidbZW50ZXJdJzsNCivlhag+J1ttYWludGFpbl0nOw0KK+WFqT4nW3R3b10nOw0KK+WFqj4nW3N1cm5hbWVdJzsNCivlhas+J1tlaWdodF0nOw0KK+WFrD4nW2ZhaXJdJzsNCivlha0+J1tudW1iZXIgc2l4XSc7DQor5YWuPidbZXhjbGFtYXRvcnkgcGFydGljbGVdJzsNCivlhbE+J1t0b2dldGhlciB3aXRoXSc7DQor5YW1Pidbc29sZGllcl0nOw0KK+WFtj4nW2hpc10nOw0KK+WFtz4nW3Rvb2xdJzsNCivlhbg+J1tsYXddJzsNCivlhbw+J1t1bml0ZV0nOw0KK+WGgD4nW2hvcGUgZm9yXSc7DQor5YaCPidbd2lkZV0nOw0KK+WGhT4nW2luc2lkZV0nOw0KK+WGhj4nW3llbl0nOw0KK+WGiT4nW3RlbmRlcl0nOw0KK+WGij4nW2Jvb2tdJzsNCivlhow+J1tib29rXSc7DQor5YaNPidbYWdhaW5dJzsNCivlho8+J1tbbm90IGZvdW5kIGluIGRpY3Rpb25hcnldXSc7DQor5YaQPidbcmlza10nOw0KK+WGkT4nW2hlbG1ldF0nOw0KK+WGkj4nW3Jpc2tdJzsNCivlhpM+J1thIHNlY2x1ZGVkIHBsYWNlXSc7DQor5YaVPidbY3Jvd25dJzsNCivlhpY+J1tjb3Zlcl0nOw0KK+WGlz4nW2V4Y2Vzc2l2ZV0nOw0KK+WGmT4nW3dyaXRlXSc7DQor5YagPidbY2FwXSc7DQor5YaiPidbYnVyaWFsIG1vdW5kXSc7DQor5YakPidbZ3JpZXZhbmNlXSc7DQor5YalPidbZGFya10nOw0KK+WGpj4nW2JhbmRpdHNdJzsNCivlhqg+J1thYnVuZGFudF0nOw0KK+WGqT4nW3dyaXRlXSc7DQor5YaqPidbY292ZXItY2xvdGhdJzsNCivlhqs+J1tpY2VdJzsNCivlhqw+J1t3aW50ZXJdJzsNCivlhrA+J1tpY2VdJzsNCivlhrE+J1tmcmVlemluZ10nOw0KK+WGsj4nW3NvYXJdJzsNCivlhrM+J1tkZWNpZGVdJzsNCivlhrQ+J1tmcmVlemluZ10nOw0KK+WGtT4nW2NvbmRpdGlvbl0nOw0KK+WGtj4nW3NtZWx0XSc7DQor5Ya3PidbY29sZF0nOw0KK+WGvT4nW2NvbGQgYW5kIHJhd10nOw0KK+WHhD4nW2JpdHRlciBjb2xkXSc7DQor5YeFPidbZHJpZWQgdXBdJzsNCivlh4Y+J1thcHByb3ZlXSc7DQor5YeJPidbY29vbF0nOw0KK+WHiz4nW2JlIHdpdGhlcmVkXSc7DQor5YeMPidbcHVyZV0nOw0KK+WHjT4nW2ZyZWV6ZV0nOw0KK+WHlj4nW3J1bGVdJzsNCivlh5s+J1t0byBzaGl2ZXIgd2l0aCBjb2xkIG9yIGZlYXJdJzsNCivlh5w+J1tzaGl2ZXIgd2l0aCBjb2xkIG9yIGZlYXJdJzsNCivlh50+J1tjb2FndWxhdGVdJzsNCivlh6A+J1tzbWFsbCB0YWJsZV0nOw0KK+WHoT4nW2FsbF0nOw0KK+WHpj4nW3BsYWNlXSc7DQor5YenPidba2l0ZV0nOw0KK+WHqT4nW3dpbnRyeSB3aW5kXSc7DQor5YeqPidbY2FsbV0nOw0KK+WHrT4nW2xlYW4gb25dJzsNCivlh7A+J1tmZW1hbGUgcGhvZW5peF0nOw0KK+WHsT4nW3RyaXVtcGhhbnRdJzsNCivlh7U+J1tyZWNlcHRhY2xlXSc7DQor5Ye2PidbY3VscHJpdF0nOw0KK+WHuD4nW3Byb3RydWRlXSc7DQor5Ye5PidbY29uY2F2ZV0nOw0KK+WHuj4nW2dvIG91dF0nOw0KK+WHvT4nW2NvcnJlc3BvbmRlbmNlXSc7DQor5Ye+PidbY29ycmVzcG9uZGVuY2VdJzsNCivliIA+J1trbmlmZV0nOw0KK+WIgz4nW2VkZ2VkIHRvb2xdJzsNCivliIQ+J1tlZGdlZCB0b29sXSc7DQor5YiGPidbZGl2aWRlXSc7DQor5YiHPidbY3V0XSc7DQor5YiIPidbY3V0IG9mZl0nOw0KK+WIij4nW3B1YmxpY2F0aW9uXSc7DQor5YiLPidbcHVibGljYXRpb25dJzsNCivliI4+J1tiZWhlYWRdJzsNCivliJE+J1twdW5pc2htZW50XSc7DQor5YiUPidbc2Nvb3Agb3V0XSc7DQor5YiXPidbbGluZV0nOw0KK+WInT4nW2JlZ2lubmluZ10nOw0KK+WIpD4nW2p1ZGdlXSc7DQor5YilPidbc2VwYXJhdGVdJzsNCivliKc+J1tkaXNhc3Rlcl0nOw0KK+WIqT4nW2dhaW5zXSc7DQor5YiqPidbdG8gY3V0XSc7DQor5YiuPidbc2hhdmVdJzsNCivliLA+J1tnbyB0b10nOw0KK+WIsz4nW2N1dCBvdXRdJzsNCivliLY+J1tzeXN0ZW1dJzsNCivliLc+J1ticnVzaF0nOw0KK+WIuD4nW2NlcnRpZmljYXRlXSc7DQor5Yi5PidbdGVtcGxlXSc7DQor5Yi6Pidbc3RhYl0nOw0KK+WIuz4nW2NhcnZlXSc7DQor5YmDPidbc2hhdmVdJzsNCivliYQ+J1tjdXQgdGhyb2F0XSc7DQor5YmHPidbcnVsZV0nOw0KK+WJij4nW3NjcmFwZSBvZmZdJzsNCivliYs+J1tzdWJkdWVdJzsNCivliYw+J1tzbGFzaF0nOw0KK+WJjT4nW2luIGZyb250XSc7DQor5YmPPidbZXN0YWJsaXNoXSc7DQor5YmUPidbcGljayBvdXRdJzsNCivliZY+J1tzcGxpdCBpbiB0d29dJzsNCivliZs+J1toYXJkXSc7DQor5YmePidbY2FydmluZyBvciBlbmdyYXZpbmcga25pZmVdJzsNCivliaM+J1tzd29yZF0nOw0KK+WJpD4nW21lZGljaW5hbCBwcmVwYXJhdGlvbl0nOw0KK+WJpT4nW3BlZWxdJzsNCivliak+J1tsZWZ0b3ZlcnNdJzsNCivliao+J1tzY2lzc29yc10nOw0KK+WJrz4nW2Fzc2lzdF0nOw0KK+WJsD4nW2xlZnRvdmVyc10nOw0KK+WJsT4nW3N3b3JkXSc7DQor5YmyPidbY3V0XSc7DQor5YmzPidbYnJpZWYgbm90ZV0nOw0KK+WJtD4nW3NoYXJwZW5dJzsNCivlibU+J1tlc3RhYmxpc2hdJzsNCivlib0+J1tyb2JdJzsNCivlib8+J1tkZXN0cm95XSc7DQor5YqDPidbZGl2aWRlXSc7DQor5YqHPidbdGhlYXRyaWNhbCBwbGF5c10nOw0KK+WKiD4nW2N1dCBhcGFydF0nOw0KK+WKiT4nW3N1cm5hbWVdJzsNCivlio0+J1tzd29yZF0nOw0KK+WKkT4nW21lZGljaW5hbCBwcmVwYXJhdGlvbl0nOw0KK+WKkj4nW3N3b3JkXSc7DQor5YqUPidbc3dvcmRdJzsNCivlips+J1twb3dlcl0nOw0KK+WKnz4nW2FjaGlldmVtZW50XSc7DQor5YqgPidbYWRkIHRvXSc7DQor5YqjPidbYmFkXSc7DQor5YqpPidbaGVscF0nOw0KK+WKqj4nW2V4ZXJ0XSc7DQor5YqrPidbdGFrZSBieSBmb3JjZV0nOw0KK+WKrD4nW2JlIGRpbGlnZW50XSc7DQor5YqtPidbZW5jb3VyYWdlXSc7DQor5YqxPidbc3RyaXZlXSc7DQor5Yq0PidbbGFib3JdJzsNCivlirU+J1tjZXJ0aWZpY2F0ZV0nOw0KK+WKuT4nW2VmZmljYWNpb3VzXSc7DQor5Yq8PidbYmUgZGlzY3JlZXRdJzsNCivlir4+J1tleGFtaW5lIGludG9dJzsNCivli4E+J1tzdHJvbmddJzsNCivli4M+J1tzdWRkZW5seV0nOw0KK+WLhT4nW2ltcGVyaWFsIGRlZ3JlZV0nOw0KK+WLhz4nW2JyYXZlXSc7DQor5YuJPidbZW5kZWF2b3JdJzsNCivli40+J1tzdHJvbmddJzsNCivli5I+J1tzdHJhbmdsZV0nOw0KK+WLlT4nW21vdmVdJzsNCivli5c+J1tlbmpvaW5dJzsNCivli5g+J1tpbnZlc3RpZ2F0ZV0nOw0KK+WLmT4nW2FmZmFpcnNdJzsNCivli50+J1t2aWN0b3J5XSc7DQor5YuePidbbGFib3JdJzsNCivli58+J1tsZXZ5XSc7DQor5YugPidbam9pbiBmb3JjZXNdJzsNCivli6I+J1twb3dlcl0nOw0KK+WLoz4nW2FjaGlldmVtZW50c10nOw0KK+WLpD4nW2luZHVzdHJpb3VzXSc7DQor5YumPidbZGVzdHJveV0nOw0KK+WLpz4nW3JlY29tbWVuZF0nOw0KK+WLsj4nW21lcml0b3Jpb3VzIGRlZWRdJzsNCivli7M+J1ttZXJpdG9yaW91cyBkZWVkXSc7DQor5Yu1Pidbc3RyaXZlXSc7DQor5Yu4PidbcmVjb21tZW5kXSc7DQor5Yu5Pidbd3JhcF0nOw0KK+WLuj4nW3Nwb29uXSc7DQor5Yu+PidbaG9va10nOw0KK+WLvz4nW211c3Qgbm90XSc7DQor5YyBPidbSmFwYW5lc2UgdW5pdCBvZiB3ZWlnaHQgKDEvMTAwMCBvZiBhIGthbildJzsNCivljII+J1tmcmFncmFuY2VdJzsNCivljIU+J1t3cmFwXSc7DQor5YyGPidbaGFzdGlseV0nOw0KK+WMiD4nW2JyZWFzdF0nOw0KK+WMjT4nW2NyYXdsXSc7DQor5YyPPidbZ291cmRdJzsNCivljJA+J1tmYWxsIHByb3N0cmF0ZV0nOw0KK+WMlT4nW3Nwb29uXSc7DQor5YyWPidbY2hhbmdlXSc7DQor5YyXPidbbm9ydGhdJzsNCivljJk+J1tzcG9vbl0nOw0KK+WMmj4nW2JveF0nOw0KK+WMnT4nW2Z1bGwgY2lyY2xlXSc7DQor5YygPidbY3JhZnRzbWFuXSc7DQor5YyhPidbY29ycmVjdF0nOw0KK+WMoz4nW3NtYWxsIGJveF0nOw0KK+WMqj4nW2JhbmRpdHNdJzsNCivljK8+J1tjb25jb3Vyc2VdJzsNCivljLE+J1t0byBsYWNrXSc7DQor5YyzPidbbGFkaWVzIHRvaWxldCBjYXNlIHdpdGggbWlycm9yXSc7DQor5Yy4PidbYm94XSc7DQor5Yy5PidbYm9sdCBvZiBjbG90aF0nOw0KK+WMuj4nW2FyZWFdJzsNCivljLs+J1tjdXJlXSc7DQor5Yy/PidbaGlkZV0nOw0KK+WNgD4nW2FyZWFdJzsNCivljYE+J1t0ZW5dJzsNCivljYM+J1t0aG91c2FuZF0nOw0KK+WNhT4nW3RoaXJ0eV0nOw0KK+WNhj4nW3NvbGRpZXJdJzsNCivljYc+J1thcmlzZV0nOw0KK+WNiD4nW25vb25dJzsNCivljYk+J1tnZW5lcmFsIHRlcm0gZm9yIHBsYW50c10nOw0KK+WNij4nW2hhbGZdJzsNCivljY0+J1tzd2FzdGlrYSAtIGZvdXJ0aCBvZiBhdXNwaWNpb3VzXSc7DQor5Y2RPidbaHVtYmxlXSc7DQor5Y2SPidbc29sZGllcl0nOw0KK+WNkz4nW3Byb2ZvdW5kXSc7DQor5Y2UPidbYmUgdW5pdGVkXSc7DQor5Y2XPidbc291dGhdJzsNCisjIuWNlz4nW3NvdXRoXSciLA0KK+WNmj4nW2dhbWJsZV0nOw0KK+WNnD4nW2ZvcnR1bmUgdGVsbGluZ10nOw0KK+WNnj4nW2JlIGltcGF0aWVudF0nOw0KK+WNoD4nW2RpdmluZV0nOw0KK+WNpj4nW2ZvcnR1bmUgdGVsbGluZ10nOw0KK+WNqT4nW3NlYWxdJzsNCivlja4+J1ttZWFzdXJpbmcgY3VwXSc7DQor5Y2vPidbNHRoIG9mIEVhcnRoIEJyYW5jaGVzXSc7DQor5Y2wPidbcHJpbnRdJzsNCivljbE+J1tkYW5nZXJvdXNdJzsNCivljbM+J1twcm9tcHRseV0nOw0KK+WNtD4nW3N0aWxsXSc7DQor5Y21PidbZWdnXSc7DQor5Y23Pidbc2Nyb2xsXSc7DQor5Y24PidbbGF5IGRvd25dJzsNCivljbs+J1tzdGlsbF0nOw0KK+WNvz4nW25vYmxlXSc7DQor5Y6CPidbZmFjdG9yeV0nOw0KK+WOhD4nW2FkdmVyc2l0eV0nOw0KK+WOlj4nW2J1bGt5XSc7DQor5Y6YPidbdGhvdXNhbmR0aCBwYXJ0IG9mIHRhZWxdJzsNCivljpo+J1t0aGlja10nOw0KK+WOnz4nW3NvdXJjZV0nOw0KK+WOoD4nW21pbmdsZSB3aXRoXSc7DQor5Y6lPidbcGVyc29uYWwgcHJvbm91biAtIGhlXSc7DQor5Y6mPidbYmlnIGJ1aWxkaW5nXSc7DQor5Y6oPidba2l0Y2hlbl0nOw0KK+WOqT4nW3N0YWJsZV0nOw0KK+WOrT4nW2Rpc2xpa2VdJzsNCivljq4+J1tzZXJ2YW50XSc7DQor5Y6wPidbZmFjdG9yeV0nOw0KK+WOsz4nW3N0cmljdF0nOw0KK+WOtj4nW3ByaXZhdGVdJzsNCivljrs+J1tnbyBhd2F5XSc7DQor5Y+CPidbdGFrZSBwYXJ0IGluXSc7DQor5Y+DPidbdGFrZSBwYXJ0IGluXSc7DQor5Y+IPidbYW5kXSc7DQor5Y+JPidbY3JvdGNoXSc7DQor5Y+KPidbZXh0ZW5kXSc7DQor5Y+LPidbZnJpZW5kXSc7DQor5Y+MPidbc2V0IG9mIHR3b10nOw0KK+WPjT4nW3JldmVyc2VdJzsNCivlj44+J1tnYXRoZXIgdG9nZXRoZXJdJzsNCivlj5Q+J1tmYXRoZXInJ3MgeW91bmdlciBicm90aGVyXSc7DQor5Y+WPidbdGFrZV0nOw0KK+WPlz4nW3JlY2VpdmVdJzsNCivlj5k+J1tleHByZXNzXSc7DQor5Y+bPidbcmViZWxdJzsNCivlj58+J1tvbGQgbWFuXSc7DQor5Y+hPidbYXN0dXRlXSc7DQor5Y+iPidbYnVzaF0nOw0KK+WPoz4nW21vdXRoXSc7DQor5Y+kPidbb2xkXSc7DQor5Y+lPidbc2VudGVuY2VdJzsNCivlj6g+J1t0YWxrYXRpdmVdJzsNCivlj6k+J1trbm9ja10nOw0KK+WPqj4nW29ubHldJzsNCivlj6s+J1tjcnldJzsNCivlj6w+J1tpbXBlcmlhbCBkZWNyZWVdJzsNCivlj60+J1t0cnVtcGV0XSc7DQor5Y+uPidbZXhob3J0IG9yIGVuam9pbiByZXBlYXRlZGx5XSc7DQor5Y+vPidbbWF5XSc7DQor5Y+wPidbcGxhdGZvcm1dJzsNCivlj7E+J1tzY29sZF0nOw0KK+WPsj4nW2hpc3RvcnldJzsNCivlj7M+J1tyaWdodF0nOw0KK+WPtj4nW3RvIGhhcm1vbml6ZV0nOw0KK+WPtz4nW21hcmtdJzsNCivlj7g+J1t0YWtlIGNoYXJnZSBvZl0nOw0KKyMi5Y+5Pidbc2lnaF0nIiwNCivlkIE+J1tpbnRlcmplY3Rpb24gXCJBbGFzIVwiXSc7DQor5ZCDPidbZWF0XSc7DQor5ZCEPidbZWFjaF0nOw0KK+WQiD4nW2NvbWJpbmVdJzsNCivlkIk+J1tsdWNreV0nOw0KK+WQij4nW2NvbmRvbGVdJzsNCivlkIs+J1tpbmNoXSc7DQor5ZCMPidbc2FtZV0nOw0KK+WQjT4nW25hbWVdJzsNCivlkI4+J1txdWVlbl0nOw0KK+WQjz4nW2dvdmVybm1lbnQgb2ZmaWNpYWxdJzsNCivlkJA+J1t2b21pdF0nOw0KK+WQkT4nW3Rvd2FyZF0nOw0KK+WQmz4nW3NvdmVyZWlnbl0nOw0KK+WQnT4nW3N0aW5neV0nOw0KK+WQnz4nW3NpbmddJzsNCivlkKA+J1tiYXJrXSc7DQor5ZCmPidbbm90XSc7DQor5ZCpPidbb3JkZXJdJzsNCivlkKs+J1tob2xkIGluIG1vdXRoXSc7DQor5ZCsPidbaGVhcl0nOw0KK+WQrT4nW3Rocm9hdF0nOw0KK+WQrj4nW3N1Y2sgd2l0aCBtb3V0aF0nOw0KK+WQtj4nW3JhaXNlIHZvaWNlXSc7DQor5ZC4PidbaW5oYWxlXSc7DQor5ZC5PidbYmxvd10nOw0KK+WQuz4nW2tpc3NdJzsNCivlkLw+J1tyb2FyXSc7DQor5ZC9PidbXCJPTVwiXSc7DQor5ZC+PidbaV0nOw0KK+WRgD4nW3BhcnRpY2xlIHVzZWQgZXhwcmVzcyBzdXJwcmlzZV0nOw0KK+WRgj4nW3N1cm5hbWVdJzsNCivlkYY+J1tkdWxsXSc7DQor5ZGIPidbc3VibWl0XSc7DQor5ZGJPidbb25lIG9mIHdhcnJpbmcgc3RhdGVzXSc7DQor5ZGKPidbdGVsbF0nOw0KK+WRjj4nW2Zvb3RdJzsNCivlkZE+J1tzd2FsbG93XSc7DQorIyLlkZw+J1tzb3VuZCBvZiBjcnlpbmddJyIsDQor5ZGoPidbemhvdSBkeW5hc3R5XSc7DQor5ZGqPidbY3Vyc2VdJzsNCisjIuWRsD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+WRsT4nW3dhaWxdJzsNCivlkbM+J1t0YXN0ZV0nOw0KK+WRtT4nW3Njb2xkXSc7DQor5ZG2PidbdGFsa2F0aXZlXSc7DQor5ZG3Pidbc3Vja10nOw0KK+WRuz4nW2dyb2FuXSc7DQor5ZG8PidbYnJlYXRoZSBzaWdoXSc7DQor5ZG9PidbbGlmZV0nOw0KK+WSgD4nW3N1Y2tdJzsNCivlkoQ+J1tub2lzZSBvZiByYWdlXSc7DQor5ZKGPidbcm9hcl0nOw0KK+WSiz4nW3doeT8gaG93PyB3aGF0P10nOw0KK+WSjD4nW2hhcm1vbnldJzsNCivlko4+J1tmYXVsdF0nOw0KK+WSjz4nW3Npbmcgc29uZyBvciBwb2VtXSc7DQor5ZKQPidbaW5zdHJ1Y3RdJzsNCivlkpI+J1tjdXJzZV0nOw0KK+WSoj4nW3NvdW5kXSc7DQor5ZKkPidbc2NvbGRdJzsNCivlkqU+J1tzb3VuZCBvZiBjYXRdJzsNCivlkqg+J1tpbnF1aXJlXSc7DQor5ZKrPidbZm9vdCBtZWFzdXJlIG9mIFpob3UgZHluYXN0eV0nOw0KK+WSrD4nW2JpdGVdJzsNCivlkq8+J1tmaW5hbCBwYXJ0aWNsZV0nOw0KK+WSsj4nW3NtaWxlXSc7DQor5ZKzPidbY291Z2hdJzsNCivlkrg+J1t0b2dldGhlcl0nOw0KK+WSvD4nW2NoYXRdJzsNCivlkr0+J1t0aHJvYXRdJzsNCivlkr4+J1thIG5vaXNlXSc7DQor5ZOAPidbc2FkXSc7DQor5ZOBPidbYXJ0aWNsZV0nOw0KK+WTgj4nW3NtaWxlXSc7DQor5ZOEPidbY29heF0nOw0KK+WThz4nW3ZvbWl0XSc7DQor5ZOIPidbc291bmQgb2YgbGF1Z2h0ZXJdJzsNCivlk4k+J1tmaW5hbCBleGNsYW1hdG9yeSBwYXJ0aWNsZV0nOw0KKyMi5ZOXPidbcnVzaGluZyBzb3VuZF0nIiwNCivlk6E+J1ttZW1iZXJdJzsNCivlk6I+J1tzeWxsYWJsZV0nOw0KK+WTpT4nW2VsZGVyIGJyb3RoZXJdJzsNCivlk6Y+J1tvaD8gcmVhbGx5PyBpcyB0aGF0IHNvP10nOw0KK+WTqD4nW3doaXN0bGVdJzsNCivlk6k+J1ttaWxlXSc7DQor5ZOtPidbd2VlcF0nOw0KK+WTrj4nW2NvdWdoXSc7DQor5ZOyPidbd2lzZV0nOw0KK+WTuj4nW2NoZXcgZm9vZF0nOw0KK+WTvT4nW2Nob2tlXSc7DQor5ZSEPidbZmluYWwgcGFydGljbGUgb2YgYXNzZXJ0aW9uIHBhdGhha2FdJzsNCivllIY+J1ttYWtlIG1pc2NoaWVmXSc7DQor5ZSHPidbbGlwc10nOw0KK+WUjz4nW3dlZXAgb3Igc29iXSc7DQor5ZSQPidbdGFuZyBkeW5hc3R5XSc7DQor5ZSUPidbaG9sZCBpbiBtb3V0aF0nOw0KK+WUlj4nW2R1bWJdJzsNCivllK4+J1tzZWxsXSc7DQor5ZSvPidbb25seV0nOw0KK+WUsT4nW3NpbmddJzsNCivllLM+J1tjcnkgb2YgYmlyZF0nOw0KK+WUuD4nW3JlY2l0ZV0nOw0KK+WUuT4nW3RvIHNtaWxlIGF0XSc7DQor5ZS+Pidbc3BpdF0nOw0KK+WVgD4nW2duYXddJzsNCivllYQ+J1t0byBwZWNrXSc7DQorIyLllYQ+J1t0byBwZWNrXSciLA0KK+WVhj4nW2NvbW1lcmNlXSc7DQor5ZWMPidbYW5pbWFsIGRpc2Vhc2VdJzsNCivllY8+J1thc2sgKGFib3V0KV0nOw0KK+WVkz4nW29wZW5dJzsNCivllZY+J1tlYXRdJzsNCivllZc+J1tlYXRdJzsNCivllZw+J1tzaXBdJzsNCisjIuWVnD4nW3NpcF0nIiwNCivllaM+J1tob2xkIGluIG1vdXRoXSc7DQor5ZW7Pidbb25seV0nOw0KK+WVvD4nW3dlZXBdJzsNCivllb4+J1t3YWlsaW5nIG9mIGNoaWxkXSc7DQor5ZaAPidbdm9taXRdJzsNCivlloM+J1trZWVwIHRhbGtpbmddJzsNCivlloQ+J1tnb29kXSc7DQor5ZaHPidbaG9ybl0nOw0KK+WWiT4nW3Rocm9hdF0nOw0KK+WWij4nW3Nob3V0XSc7DQor5ZaLPidbbmFnXSc7DQor5ZaYPidbcGFudF0nOw0KK+WWmT4nW2JlYWtdJzsNCivllpo+J1tjYWxsXSc7DQor5ZacPidbbGlrZV0nOw0KK+WWnT4nW2RyaW5rXSc7DQor5ZaePidbY2hpcnBpbmcgb2YgaW5zZWN0c10nOw0KK+WWnz4nW2hlYXZlIHNpZ2hdJzsNCivllqc+J1tsaXZlbHldJzsNCivllqg+J1t3YWlsXSc7DQor5ZapPidbbWV0YXBob3JdJzsNCivllqo+J1ttb3VybmluZ10nOw0KK+WWqz4nW2VhdF0nOw0KK+WWrD4nW3RhbGxdJzsNCivllq4+J1tzaW5nbGVdJzsNCivllrA+J1t0byBlYXRdJzsNCivllrY+J1tlbmNhbXBtZW50XSc7DQor5ZeEPidbaG9hcnNlIG9mIHZvaWNlXSc7DQor5ZeFPidbc21lbGxdJzsNCivll4c+J1ttaXNlcmx5XSc7DQor5ZeUPidbYmUgYW5ncnkgYXRdJzsNCivll5o+J1tzb3VuZCBvZiBjcnlpbmddJzsNCivll5w+J1tiZSBmb25kIG9mXSc7DQor5ZefPidbc2lnaF0nOw0KK+WXoz4nW3RvIGNvbm5lY3RdJzsNCivll6Q+J1tsYXVnaCBhdF0nOw0KK+WXtz4nW2xvdWQgY2xhbW9yXSc7DQor5Ze5PidbY2hhdHRlcl0nOw0KK+WXvT4nW2NvdWdoXSc7DQor5Ze+PidbdG8gc2V0IGEgZG9nIG9uXSc7DQor5ZiGPidbc2lnaF0nOw0KK+WYiT4nW2V4Y2VsbGVudF0nOw0KK+WYlD4nW3ZvbWl0XSc7DQor5ZiWPidbaW50ZXJqZWN0aW9uIG9mIGFwcHJvdmFsIG9yIGFkbWldJzsNCivlmJc+J1t0YXN0ZV0nOw0KK+WYmD4nW2V4aGFsZV0nOw0KK+WYmz4nW2ZpbmFsIGV4Y2xhbWF0b3J5IHBhcnRpY2xlXSc7DQor5ZipPidbcnVzaGluZyBzb3VuZF0nOw0KK+WYrz4nW3JvYXJdJzsNCivlmLE+J1tvcmRlcl0nOw0KK+WYsj4nW3JpZGljdWxlXSc7DQor5Zi0PidbbW91dGhdJzsNCivlmLY+J1tuZWlnaGluZyBvZiBhIGhvcnNlXSc7DQor5Zi4PidbdW5jbGVhcl0nOw0KK+WZgj4nW21lZXRdJzsNCivlmYw+J1tzY29sZF0nOw0KK+WZjj4nW2Nob2tlXSc7DQor5ZmQPidbcmVjZXB0YWNsZV0nOw0KK+WZmz4nW2JpdGVdJzsNCivlmaQ+J1tjbG9zZV0nOw0KK+WZqD4nW3JlY2VwdGFjbGVdJzsNCivlmao+J1tiZSBub2lzeV0nOw0KK+WZqz4nW2JlbGNoXSc7DQor5ZmsPidbYml0ZV0nOw0KK+WZtD4nW3NwdXJ0XSc7DQor5Zm4PidbbWV0cmljIHRvbl0nOw0KK+WZuj4nW3N0b3J5XSc7DQor5ZqAPidbZW5qb2luXSc7DQor5ZqGPidbZ2l2ZSBmb3J0aCBzb3VuZF0nOw0KK+Wahz4nW3NjYXJlXSc7DQor5ZqKPidbdG8gcGFudF0nOw0KK+Wajz4nW3NuZWV6ZV0nOw0KK+WalD4nW3NuZWV6ZV0nOw0KKyMi5ZqcPidbYmUgc2lsZW50XSciLA0KK+Waoj4nW2JhZ10nOw0KK+WapT4nW3N3YWxsb3ddJzsNCivlmq4+J1tndWlkZV0nOw0KK+WatD4nW3N0cmljdF0nOw0KK+Watj4nW3NlZWsgZnJpZW5kc10nOw0KK+WavD4nW3ByYXR0bGVdJzsNCivlm4A+J1tzaW5nXSc7DQor5ZuBPidbbW92ZSBsaXAgd2hlbiBzcGVha2luZ10nOw0KK+Wbgj4nW2JlIG5vaXN5XSc7DQorIyLlm4I+J1tiZSBub2lzeV0nIiwNCivlm4g+J1t0YWxrIGluIG9uZScncyBzbGVlcF0nOw0KKyMi5ZuNPidbZG91YmxlIGhhcHBpbmVzc10nIiwNCivlm5E+J1tvcmRlcl0nOw0KK+Wbkz4nW2duYXddJzsNCivlm5c+J1tlcmVjdF0nOw0KK+WbmD4nW3JldHVybl0nOw0KK+Wbmj4nW3ByaXNvbmVyXSc7DQor5ZubPidbZm91cl0nOw0KK+Wbnj4nW3JldHVybl0nOw0KK+WboD4nW2NhdXNlXSc7DQor5ZujPidbc3BoZXJlXSc7DQor5ZuuPidbaW52ZWlnbGVdJzsNCivlm7A+J1tzdXJyb3VuZF0nOw0KK+Wbsj4nW3N1cnJvdW5kXSc7DQor5ZuzPidbZGlhZ3JhbV0nOw0KK+WbuT4nW3ByaXNvbl0nOw0KK+Wbuj4nW2JlY29tZSBzb2xpZF0nOw0KK+WbvT4nW25hdGlvbl0nOw0KK+Wbvz4nW3BlbiB1cF0nOw0KK+WcgD4nW25hdGlvbl0nOw0KK+Wcgz4nW2dhcmRlbl0nOw0KK+WchD4nW3ByaXNvbl0nOw0KK+WciD4nW3RvIGNpcmNsZV0nOw0KK+WciT4nW3N0YWJsZV0nOw0KK+Wciz4nW25hdGlvbl0nOw0KK+WcjT4nW3N1cnJvdW5kXSc7DQor5ZyPPidbdG8gY2lyY2xlXSc7DQor5ZySPidbZ2FyZGVuXSc7DQor5ZyTPidbY2lyY2xlXSc7DQor5ZyWPidbZGlhZ3JhbV0nOw0KK+WcmD4nW3NwaGVyZV0nOw0KK+WcnD4nW2NpcmNsZV0nOw0KK+Wcnz4nW3NvaWxdJzsNCivlnKY+J1soa29rdWppKSB3YXRlciBnYXRlXSc7DQorIyLlnKY+J1soa29rdWppKSB3YXRlciBnYXRlXSciLA0KK+WcqD4nW2JlIGF0XSc7DQor5ZytPidbamFkZSBwb2ludGVkIGF0IHRvcF0nOw0KK+WcsD4nW2VhcnRoXSc7DQorIyLlnLM+J1tmdXJyb3cgaW4gZmllbGRdJyIsDQorIyLlnLM+J1tmdXJyb3cgaW4gZmllbGRdJyIsDQor5Zy7PidbYm9yZGVyXSc7DQor5Z2APidbc2l0ZV0nOw0KK+Wdgj4nW2hpbGxzaWRlXSc7DQor5Z2HPidbZXF1YWxdJzsNCivlnYo+J1tuZWlnaGJvcmhvb2RdJzsNCivlnY4+J1twaXRdJzsNCivlnY8+J1tyb3R0ZW5dJzsNCivlnZA+J1tzaXRdJzsNCivlnZE+J1twaXRdJzsNCivlnaE+J1tzbG9wZV0nOw0KK+WdpD4nW2VhcnRoXSc7DQor5Z2mPidbZmxhdF0nOw0KK+WdqT4nW2VhcnRoZW53YXJlXSc7DQor5Z2qPidbbGV2ZWwgZ3JvdW5kXSc7DQor5Z2/PidbbW91bmRdJzsNCivlnoI+J1tsZXQgZG93bl0nOw0KKyMi5Z6GPidbYmxhY2sgY2xvZHMgb2YgZWFydGhdJyIsDQorIyLlnok+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivlnos+J1twYXR0ZXJuXSc7DQor5Z6TPidbYm9yZGVyXSc7DQor5Z6gPidbYm91bmRhcnldJzsNCivlnqI+J1tkaXJ0XSc7DQor5Z6jPidbbG93IHdhbGxdJzsNCivlnqQ+J1thbnQtaGlsbF0nOw0KKyMi5Z6pPidbaG9seV0nIiwNCisjIuWerj4nW2JlIGRlZmVhdGVkXSciLA0KKyMi5Z6yPidbaGlnaCBhbmQgZHJ5IHBsYWNlXSciLA0KK+WfgD4nW2xldCBkb3duXSc7DQor5Z+DPidbZmluZSBkdXN0XSc7DQor5Z+GPidbc3RvbnldJzsNCivln4s+J1tidXJ5XSc7DQor5Z+OPidbY2FzdGxlXSc7DQor5Z+SPidbZW5jbG9zdXJlXSc7DQor5Z+TPidbZW5jbG9zdXJlXSc7DQor5Z+UPidbcGxhaW5dJzsNCisjIuWflD4nW3BsYWluXSciLA0KK+WfnD4nW29wZW4gY291bnRyeV0nOw0KK+Wfnz4nW2Rpc3RyaWN0XSc7DQor5Z+gPidbcG9ydCBjaXR5XSc7DQorIyLln6M+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivln7Q+J1tzb2lsIHdpdGggbGFyZ2UgY2xheSBjb250ZW50XSc7DQor5Z+3PidbaG9sZCBpbiBoYW5kXSc7DQor5Z+5PidbYmFuayB1cCB3aXRoIGRpcnRdJzsNCivln7o+J1tmb3VuZGF0aW9uXSc7DQor5Z+8PidbaGVhZGxhbmRdJzsNCivloIA+J1tjYXZlXSc7DQor5aCCPidbaGFsbF0nOw0KK+WghT4nW2hhcmRdJzsNCivloIY+J1toZWFwXSc7DQor5aCKPidbd2hpdGUgZWFydGhdJzsNCivloIs+J1tidXJ5XSc7DQor5aCVPidbZmFsbF0nOw0KK+WgmT4nW2J1cnldJzsNCivloJ0+J1tjcnVjaWJsZV0nOw0KK+WgoT4nW2ZvcnRdJzsNCivloKQ+J1tkaWtlXSc7DQor5aCqPidbYWRlcXVhdGVseSBjYXBhYmxlIG9mXSc7DQor5aCvPidbYSBsZWdlbmRhcnkgYW5jaWVudCBlbXBlcm9yLXNhZ2VdJzsNCivloLA+J1tkYW1dJzsNCivloLE+J1tyZXBvcnRdJzsNCivloLQ+J1tvcGVuIHNwYWNlXSc7DQor5aC1Pidbd2FsbF0nOw0KK+Wguj4nW3BlcnNvbicncyBuYW1lXSc7DQor5aC9PidbbW91bmRdJzsNCivloYA+J1t3YWxsXSc7DQor5aGBPidbcmFtcGFydF0nOw0KK+Whij4nW3BpZWNlXSc7DQor5aGLPidbZ3JhdmVdJzsNCivloZE+J1ttb2RlbCBpbiBjbGF5XSc7DQor5aGSPidbcm9vc3RdJzsNCivloZQ+J1t0b3dlcl0nOw0KK+Whlz4nW3NtZWFyXSc7DQor5aGYPidbcG9uZF0nOw0KK+WhmT4nW3RydWx5XSc7DQor5aGaPidbY2VtZXRlcnldJzsNCivloZ4+J1tzdG9wIHVwXSc7DQor5aGiPidbZW50cmVuY2htZW50XSc7DQor5aGpPidbc2FsdF0nOw0KK+Whqz4nW2ZpbGwgaW5dJzsNCisjIuWhrT4nW1tub3QgZm91bmQgaW4gYW55IGRpY3Rpb25hcnldXSciLA0KK+Whsj4nW29wZW4gc3BhY2VdJzsNCivlobU+J1tkdXN0XSc7DQor5aG5PidbbW9hdF0nOw0KK+Whvj4nW3ZpbGxhZ2Ugc2Nob29sXSc7DQor5aKDPidbYm91bmRlcnldJzsNCivlooU+J1t2aWxsYV0nOw0KK+Wikz4nW2dyYXZlXSc7DQor5aKXPidbaW5jcmVhc2VdJzsNCivlopw+J1tmYWxsIGRvd25dJzsNCivlop8+J1toaWdoIG1vdW5kXSc7DQor5aKoPidbaW5rXSc7DQor5aKrPidbY3VwXSc7DQor5aKuPidbZmFsbF0nOw0KK+Wisz4nW2dyYXZlXSc7DQorIyLlorM+J1tncmF2ZV0nIiwNCisjIuWisz4nW2dyYXZlXSciLA0KK+Wiuj4nWzQgd2FsbHNdJzsNCivlors+J1t3YWxsXSc7DQor5aK+PidbY3VsdGl2YXRlXSc7DQor5aOBPidbcGFydGl0aW9uIHdhbGxdJzsNCivlo4U+J1t0byBvYnN0cnVjdF0nOw0KK+Wjhz4nW2FsdGFyXSc7DQor5aOKPidbYmFkXSc7DQor5aOMPidbc29pbF0nOw0KK+WjkT4nW2JlZCBvZiB0b3JyZW50XSc7DQor5aOTPidbcHJlc3NdJzsNCivlo5U+J1t0cmVuY2hdJzsNCisjIuWjlj4nW29wZW4gc3BhY2UgYWxvbmcgd2F0ZXJdJyIsDQor5aOYPidbcmFtcGFydF0nOw0KK+WjmT4nW3RvbWJdJzsNCivlo5w+J1tlYXJ0aGVuIGphciBvciBqdWddJzsNCivlo54+J1tiYWRdJzsNCivlo58+J1tncmF2ZV0nOw0KK+WjpD4nW3NvaWxdJzsNCisjIuWjpT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+Wjqz4nW3NjaG9sYXJdJzsNCivlo6w+J1tuaW50aCBvZiB0ZW4gY2VsZXN0aWFsIHN0ZW1zXSc7DQor5aOuPidbYmlnXSc7DQor5aOvPidbYmlnXSc7DQor5aOwPidbc291bmRdJzsNCivlo7E+J1tudW1iZXIgb25lXSc7DQor5aOyPidbc2VsbF0nOw0KK+Wjtz4nW2phcl0nOw0KK+WjuT4nW251bWJlciBvbmVdJzsNCivlo7o+J1tqYXJdJzsNCivlo7s+J1tzb24taW4tbGF3XSc7DQor5aO8PidbcGFsYWNlIGNvcnJpZG9yIG9yIHBhc3NhZ2V3YXldJzsNCivlo70+J1tvbGQgYWdlXSc7DQor5aSCPidbZ29dJzsNCivlpIk+J1tjaGFuZ2VdJzsNCivlpIo+J1tSYWRpY2FsIE5vLiAzNV0nOw0KK+Wkjz4nW3N1bW1lcl0nOw0KK+WkkD4nW2xvbmddJzsNCivlpJU+J1tldmVuaW5nXSc7DQor5aSWPidbb3V0XSc7DQor5aSYPidbNHRoIG9mIEVhcnRoIEJyYW5jaGVzXSc7DQor5aSZPidbZWFybHkgaW4gbW9ybmluZ10nOw0KK+Wkmj4nW211Y2hdJzsNCivlpJs+J1ttdWNoXSc7DQor5aScPidbbmlnaHRdJzsNCivlpKI+J1tkcmVhbV0nOw0KK+WkpT4nW2NvbXBhbmlvbl0nOw0KK+Wkpz4nW2JpZ10nOw0KK+WkqT4nW3NreV0nOw0KK+Wkqj4nW3ZlcnldJzsNCivlpKs+J1ttYW5dJzsNCivlpKw+J1twYXJ0ZWRdJzsNCivlpK0+J1t5b3VuZ10nOw0KK+Wkrj4nW2NlbnRlcl0nOw0KK+WksT4nW2xvc2VdJzsNCivlpLI+J1thZHZhbmNlIHF1aWNrbHldJzsNCivlpLc+J1thbmNpZW50IGJhcmJhcmlhbiB0cmliZXNdJzsNCivlpLg+J1tleHRyYXZhZ2FudF0nOw0KK+Wkvj4nW2JlIHdlZGdlZCBvciBpbnNlcnRlZCBiZXR3ZWVuXSc7DQor5aWEPidbZXJlIGxvbmddJzsNCivlpYc+J1tzdHJhbmdlXSc7DQor5aWIPidbYnV0XSc7DQor5aWJPidbb2ZmZXJdJzsNCivlpY4+J1tzdHJpZGUgb2YgbWFuXSc7DQor5aWPPidbbWVtb3JpYWxpemUgZW1wZXJvcl0nOw0KK+WlkD4nW2JlIG51bWVyb3VzXSc7DQor5aWRPidbZGVlZF0nOw0KK+WllD4nW3J1biBmYXN0XSc7DQor5aWVPidbaW4gc2VxdWVuY2VdJzsNCivlpZc+J1tjYXNlXSc7DQor5aWYPidbbGFyZ2VdJzsNCivlpZo+J1t3aGVyZT8gd2hhdD8gaG93PyB3aHk/XSc7DQor5aWgPidbcGF5IHJlc3BlY3RdJzsNCivlpaI+J1tleHRyYXZhZ2FudF0nOw0KK+WlpT4nW215c3RlcmlvdXNdJzsNCivlpac+J1tteXN0ZXJpb3VzXSc7DQor5aWoPidbcHJpemVdJzsNCivlpak+J1tsYWR5JydzIHZhbml0eSBjYXNlXSc7DQor5aWqPidbdGFrZSBieSBmb3JjZV0nOw0KK+WlrD4nW3ByaXplXSc7DQor5aWuPidbc3RyaXZlXSc7DQor5aWzPidbd29tYW5dJzsNCivlpbQ+J1tzbGF2ZV0nOw0KK+WluD4nW2NyYWZ0eV0nOw0KK+WlvT4nW2dvb2RdJzsNCivlpoE+J1thY3QgYXMgZ28tYmV0d2Vlbl0nOw0KK+Wmgj4nW2lmXSc7DQor5aaDPidbd2lmZV0nOw0KK+WmhD4nW2Fic3VyZF0nOw0KK+Wmij4nW2NvbmNlaXZlXSc7DQor5aaNPidbYmVhdXRpZnVsXSc7DQor5aaTPidbcHJvc3RpdHV0ZV0nOw0KK+Wmlj4nW3N0cmFuZ2VdJzsNCivlppk+J1tteXN0ZXJpb3VzXSc7DQorIyLlppk+J1tteXN0ZXJpb3VzXSciLA0KK+WmnT4nW2Fkb3JuIG9uZXNlbGZdJzsNCivlpqM+J1tvbmUnJ3MgZGVjZWFzZWQgbW90aGVyXSc7DQor5aalPidbc2F0aXNmYWN0b3J5XSc7DQor5aaoPidbaW50ZXJmZXJlIHdpdGhdJzsNCivlpqw+J1tqZWFsb3VzXSc7DQor5aayPidbY29uY3ViaW5lIG9mIGxhc3QgcnVsZXIgb2Ygc2hhbmddJzsNCivlprk+J1t5b3VuZ2VyIHNpc3Rlcl0nOw0KK+Wmuz4nW3dpZmVdJzsNCivlpr4+J1tjb25jdWJpbmVdJzsNCivlp4Y+J1tjaGlsZCcncyBnb3Zlcm5lc3NdJzsNCivlp4k+J1tlbGRlciBzaXN0ZXJdJzsNCivlp4s+J1tiZWdpbl0nOw0KK+WnkD4nW2VsZGVyIHNpc3Rlcl0nOw0KK+WnkT4nW2ZhdGhlcicncyBzaXN0ZXJdJzsNCivlp5M+J1tvbmUnJ3MgZmFtaWx5IG5hbWVdJzsNCivlp5Q+J1thcHBvaW50XSc7DQor5aeZPidbY29uY2VpdmVdJzsNCivlp5o+J1toYW5kc29tZV0nOw0KK+WnnD4nW3N1cm5hbWVdJzsNCivlp6U+J1ttYXRlcm5hbCBncmFuZG1vdGhlcl0nOw0KK+Wnpj4nW2FkdWx0ZXJ5XSc7DQor5aeoPidbbW90aGVyL3dpZmUnJ3Mgc2lzdGVyXSc7DQor5aeqPidbbmllY2VdJzsNCivlp6s+J1tiZWF1dHldJzsNCisjIuWnsT4nW2JlYXV0aWZ1bF0nIiwNCivlp7s+J1tyZWxhdGl2ZXMgYnkgbWFycmlhZ2VdJzsNCivlp78+J1tvbmUnJ3MgbWFubmVyXSc7DQor5aiBPidbcG9tcF0nOw0KK+Wogz4nW2JhYnldJzsNCivlqIk+J1tiZWF1dGlmdWxdJzsNCivlqJE+J1tkYW5jZV0nOw0KK+WomD4nW21vdGhlcl0nOw0KKyMi5aiaPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor5aicPidbZWxlZ2FudF0nOw0KK+Wonz4nW2JlYXV0aWZ1bF0nOw0KK+WooD4nW3ByZWduYW50XSc7DQor5ailPidbYmUgYmVhdXRpZnVsXSc7DQor5aipPidbZ2l2ZSBiaXJ0aCBjaGlsZF0nOw0KK+Worz4nW3BsZWFzdXJlXSc7DQor5ai1Pidbc3Rhcl0nOw0KK+Wotj4nW21hcnJ5XSc7DQor5ai8PidbcHJvc3RpdHV0ZV0nOw0KK+WpgD4nW2JlIGJlYXV0aWZ1bF0nOw0KK+WpgT4nW3N1cm5hbWVdJzsNCivlqYY+J1tvbGQgd29tYW5dJzsNCivlqYk+J1thbWlhYmxlXSc7DQor5amaPidbZ2V0IG1hcnJpZWRdJzsNCivlqaI+J1tzZXJ2YW50IGdpcmxdJzsNCivlqaY+J1ttYXJyaWVkIHdvbWVuXSc7DQor5amqPidbY292ZXRdJzsNCivlqaw+J1tvYnNjZW5lXSc7DQor5am/Pidbc29uLWluLWxhd10nOw0KK+Wqkj4nW2dvLWJldHdlZW5dJzsNCivlqpo+J1tjaGFybWluZ10nOw0KK+Wqmz4nW2JlYXV0eV0nOw0KK+WqvD4nW29sZCB3b21hbl0nOw0KK+WqvT4nW21vdGhlcl0nOw0KK+Wqvj4nW21hcnJ5XSc7DQor5auBPidbbWFycnldJzsNCivlq4I+J1tzaXN0ZXItaW4tbGF3XSc7DQor5auJPidbamVhbG91c3ldJzsNCivlq4s+J1tzbGVuZGVyIGFuZCBkZWxpY2F0ZV0nOw0KK+WrjD4nW2hhdGVdJzsNCivlq5A+J1tmcm9saWNdJzsNCivlq5Y+J1twYXRyb25pemUgcHJvc3RpdHV0ZXNdJzsNCivlq5c+J1tvbGQgd29tYW5dJzsNCivlq6E+J1tsZWdhbCB3aWZlXSc7DQor5aujPidbY2hhcm1pbmddJzsNCivlq6Y+J1tuYW1lIG9mIGEgbW9vbiBnb2RkZXNzXSc7DQor5aupPidbc29mdF0nOw0KK+Wruj4nW3JlZmluZWRdJzsNCivlq7s+J1tlbGVnYW50XSc7DQor5ayJPidbZW5qb3ldJzsNCivlrIs+J1tiZWF1dGlmdWxdJzsNCivlrIw+J1tzZWR1Y3RpdmUgYW5kIGxvdmVhYmxlXSc7DQor5ayWPidbZmF2b3JpdGVdJzsNCivlrKI+J1t0cm91YmxlZF0nOw0KK+Wsqj4nW2NvdXJ0IGxhZHldJzsNCivlrKw+J1ttaXN0cmVzc10nOw0KK+WssD4nW2JhYnldJzsNCivlrLI+J1tmcm9saWNdJzsNCisjIuWstD4nW3RvIHdpbl0nIiwNCivlrL4+J1tsYXp5XSc7DQor5a2APidbd2lkb3ddJzsNCivlrYM+J1t0cm91YmxlZF0nOw0KK+WthT4nW3NsZW5kZXJdJzsNCivlrZA+J1tvZmZzcHJpbmddJzsNCivlrZE+J1tyZW1haW5pbmddJzsNCivlrZQ+J1tvcGVuaW5nXSc7DQor5a2VPidbYmUgcHJlZ25hbnRdJzsNCivlrZc+J1tsZXR0ZXJdJzsNCivlrZg+J1tleGlzdF0nOw0KK+Wtmj4nW2Jyb29kIG92ZXIgZWdnc10nOw0KK+Wtmz4nW2NvbWV0XSc7DQor5a2cPidbYmUgYXMgZGlsaWdlbnQgYXMgcG9zc2libGVdJzsNCivlrZ0+J1tmaWxpYWwgcGlldHldJzsNCivlrZ8+J1tmaXJzdCBpbiBzZXJpZXNdJzsNCivlraM+J1txdWFydGVyIG9mIHllYXJdJzsNCivlraQ+J1tvcnBoYW5dJzsNCivlraU+J1tvbmUnJ3MgY2hpbGRyZW5dJzsNCivlraY+J1tsZWFybmluZ10nOw0KK+WtqT4nW2JhYnldJzsNCivlras+J1tncmFuZGNoaWxkXSc7DQor5a2wPidbd2hvPyB3aGljaD8gd2hhdD8gd2hpY2ggb25lP10nOw0KK+WtsT4nW3dlYWtdJzsNCivlrbM+J1ticmVlZCBpbiBsYXJnZSBudW1iZXJzXSc7DQor5a21Pidbc2l0IG9uIGVnZ3NdJzsNCivlrbg+J1tsZWFybmluZ10nOw0KK+Wtuj4nW2NoaWxkXSc7DQor5a6APidbcm9vZl0nOw0KK+Wugz4nW2l0XSc7DQor5a6FPidbcmVzaWRlbmNlXSc7DQor5a6HPidbaG91c2VdJzsNCivlrog+J1tkZWZlbmRdJzsNCivlrok+J1twZWFjZWZ1bF0nOw0KK+Wuiz4nW1NvbmcgZHluYXN0eV0nOw0KK+WujD4nW2NvbXBsZXRlXSc7DQor5a6NPidbZmxlc2hdJzsNCivlro8+J1t3aWRlXSc7DQor5a6VPidbc3RvbmUgcXVhcnJ5XSc7DQor5a6XPidbbGluZWFnZV0nOw0KK+WumD4nW29mZmljaWFsXSc7DQor5a6ZPidbdGltZSBhcyBjb25jZXB0XSc7DQor5a6aPidbZGVjaWRlXSc7DQor5a6bPidbc2VlbV0nOw0KK+WunD4nW3N1aXRhYmxlXSc7DQor5a6dPidbdHJlYXN1cmVdJzsNCivlrp8+J1tyZWFsXSc7DQor5a6iPidbZ3Vlc3RdJzsNCivlrqM+J1tkZWNsYXJlXSc7DQor5a6kPidbcm9vbV0nOw0KK+WupT4nW2ZvcmdpdmVdJzsNCivlrqY+J1tvZmZpY2lhbGRvbV0nOw0KK+Wurj4nW3BhbGFjZV0nOw0KK+WusD4nW3RvIHNsYXVnaHRlcl0nOw0KK+Wusz4nW2luanVyZV0nOw0KK+WutD4nW2VudGVydGFpbl0nOw0KK+WutT4nW25pZ2h0XSc7DQor5a62PidbaG91c2VdJzsNCivlrrg+J1tpbXBlcmlhbF0nOw0KK+WuuT4nW2xvb2tzXSc7DQor5a6/Pidbc3RvcF0nOw0KK+Wvgj4nW3N0aWxsXSc7DQor5a+DPidbZ3JpZXZhbmNlXSc7DQor5a+EPidbc2VuZF0nOw0KK+WvhT4nW3Jlc3BlY3RdJzsNCivlr4Y+J1tkZW5zZV0nOw0KK+Wvhz4nW2JhbmRpdHNdJzsNCisjIuWviT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+WvjD4nW2FidW5kYW50XSc7DQor5a+QPidbc2xlZXBdJzsNCivlr5I+J1tjb2xkXSc7DQor5a+TPidbcmVzaWRlbmNlXSc7DQor5a+UPidbcmVhbF0nOw0KK+Wvmz4nW2Jyb2FkXSc7DQor5a+dPidbc2xlZXBdJzsNCivlr54+J1tzaWxlbnRdJzsNCivlr58+J1tleGFtaW5lXSc7DQor5a+hPidbd2lkb3dlZF0nOw0KK+Wvoj4nW3NsZWVwXSc7DQor5a+kPidbZmV3XSc7DQor5a+lPidbZmV3XSc7DQor5a+mPidbcmVhbF0nOw0KK+Wvpz4nW3JlcG9zZV0nOw0KK+WvqD4nW3N0b2NrYWRlXSc7DQor5a+pPidbZXhhbWluZV0nOw0KK+Wvqz4nW3dyaXRlXSc7DQor5a+uPidbc2hhbnR5XSc7DQor5a+wPidbZ3JlYXQgZG9tYWluXSc7DQor5a+zPidbdHJlYXN1cmVdJzsNCivlr7U+J1tmYXZvcml0ZV0nOw0KK+Wvtj4nW3RyZWFzdXJlXSc7DQor5a+4PidbaW5jaF0nOw0KK+Wvuj4nW2NvdXJ0XSc7DQor5a++PidbY29ycmVjdF0nOw0KK+Wvvz4nW29sZCBhZ2VdJzsNCivlsIE+J1tsZXR0ZXJdJzsNCivlsII+J1ttb25vcG9saXplXSc7DQor5bCEPidbc2hvb3RdJzsNCivlsIU+J1tzdWJkdWVdJzsNCivlsIY+J1t3aWxsXSc7DQor5bCHPidbd2lsbF0nOw0KK+WwiD4nW21vbm9wb2xpemVdJzsNCivlsIk+J1tvZmZpY2VyXSc7DQor5bCKPidbcmVzcGVjdF0nOw0KK+Wwiz4nW3NlZWtdJzsNCivlsI0+J1tjb3JyZWN0XSc7DQor5bCOPidbZGlyZWN0XSc7DQor5bCPPidbc21hbGxdJzsNCivlsJE+J1tmZXddJzsNCivlsJM+J1t5b3VdJzsNCivlsJY+J1tzaGFycF0nOw0KK+Wwmj4nW3N0aWxsXSc7DQor5bCgPidbdmVyeSBmZXddJzsNCivlsKI+J1t3ZWFrXSc7DQor5bCkPidbZXNwZWNpYWxseV0nOw0KK+WwqD4nW3NoYWdneSBoYWlyZWQgZG9nXSc7DQor5bCtPidbYSBsZWdlbmRhcnkgYW5jaWVudCBlbXBlcm9yLXNhZ2VdJzsNCivlsLE+J1tqdXN0XSc7DQor5bC4PidbY29ycHNlXSc7DQor5bC5PidbZ292ZXJuXSc7DQor5bC6PidbY2hpbmVzZSBtZWFzdXJlIGFwcHJveC4gXCJmb290XCJdJzsNCivlsLs+J1tlbmQgb2Ygc3BpbmVdJzsNCivlsLw+J1tidWRkaGlzdCBudW5dJzsNCivlsL0+J1tleGhhdXN0XSc7DQor5bC+PidbdGFpbF0nOw0KK+Wwvz4nW3VyaW5lXSc7DQor5bGAPidbYnVyZWF1XSc7DQor5bGBPidbYnJlYWsgd2luZF0nOw0KK+WxhT4nW2xpdmVdJzsNCivlsYY+J1tudW1lcmFyeSBhZGp1bmN0IGZvciB0aW1lXSc7DQor5bGIPidbYmVuZF0nOw0KK+Wxij4nW251bWVyYXJ5IGFkanVuY3QgZm9yIHRpbWVdJzsNCivlsYs+J1tob3VzZV0nOw0KK+WxjT4nW2NvcnBzZV0nOw0KK+Wxjj4nW2V4Y3JlbWVudF0nOw0KK+Wxjz4nW2ZvbGRpbmcgc2NyZWVuXSc7DQor5bGQPidbd29vZGVuIHNob2VzXSc7DQor5bGRPidbYml0c10nOw0KK+Wxkz4nW2dpZ2FudGljIHN0cmVuZ3RoXSc7DQor5bGVPidbb3Blbl0nOw0KK+Wxnj4nW2NsYXNzXSc7DQor5bGgPidbYnV0Y2hlcl0nOw0KK+WxoT4nW2ZyZXF1ZW50bHldJzsNCivlsaQ+J1tzdG9yZXldJzsNCivlsaU+J1tmb290d2Vhcl0nOw0KK+WxrD4nW2NsYXNzXSc7DQor5bGuPidbc3Byb3V0XSc7DQor5bGvPidbdmlsbGFnZV0nOw0KK+WxsT4nW21vdW50YWluXSc7DQor5bG2PidbbG9mdHldJzsNCivlsbk+J1t0byByaXNlIGhpZ2hdJzsNCivlsow+J1twZXJpbG91c10nOw0KK+WykD4nW2hpZ2hdJzsNCivlspE+J1tzdGVlcF0nOw0KK+WylD4nW2RpdmVyZ2VdJzsNCivlsqE+J1tyaWRnZSBvciBjcmVzdCBvZiBoaWxsXSc7DQor5bKoPidbdW5ldmVuXSc7DQor5bKpPidbY2xpZmZdJzsNCivlsqs+J1ttb3VudGFpbiBwZWFrXSc7DQor5bKsPidbY2FwZV0nOw0KK+WysT4nW2RhaXNoYW4gb25lIG9mIGZpdmUgc2FjcmVkIG1vdW50XSc7DQor5bKzPidbbW91bnRhaW4gcGVha10nOw0KKyMi5bK2PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor5bK3PidbbWluIG1vdW50YWluXSc7DQor5bK4PidbYmFua10nOw0KKyMi5bK6PidbbW91bnRhaW4gcmlkZ2VdJyIsDQorIyLlsro+J1ttb3VudGFpbiByaWRnZV0nIiwNCivlsr4+J1ttb3VudGFpbiBwYXNzIChrb3JlYW4pXSc7DQorIyLls4Q+J1tyYW5nZSBvZiBwZWFrc10nIiwNCivls4c+J1tjYXZlXSc7DQor5bOZPidbc3RhbmQgZXJlY3RdJzsNCivls6A+J1ttb3VudGFpbiBwYXNzXSc7DQor5bOhPidbZ29yZ2VdJzsNCivls6g+J1tsb2Z0eV0nOw0KK+WzqT4nW2xvZnR5XSc7DQor5bOqPidbdmFsbGV5XSc7DQor5bOtPidbc3RlZXBdJzsNCivls68+J1twZWFrXSc7DQor5bOwPidbcGVha10nOw0KK+Wztj4nW2lzbGFuZF0nOw0KKyMi5bO6PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor5bO7PidbaGlnaF0nOw0KK+WzvT4nW2dvcmdlXSc7DQor5bSHPidbZXN0ZWVtXSc7DQor5bSLPidbZmxvd2VyeV0nOw0KK+W0jj4nW3JvdWdoXSc7DQor5bSRPidbS3VubHVuIG1vdW50YWlucyBpbiBKaWFuZyBTdSBwcm92aW5jZS5dJzsNCivltJQ+J1toaWdoXSc7DQor5bSVPidbY2xpZmZdJzsNCivltJY+J1tjbGlmZl0nOw0KK+W0lz4nW3Bvc3RdJzsNCivltJg+J1trdW5sdW4gbW91bnRhaW5zIGluIGppYW5nc3VdJzsNCivltJk+J1trdW5sdW4gbW91bnRhaW5zIGluIGppYW5nc3VdJzsNCivltJo+J1toaWxseV0nOw0KK+W0mz4nW3Rvd2VyaW5nXSc7DQor5bSfPidbY2xpZmZzXSc7DQor5bSiPidbaGlnaF0nOw0KK+W0qT4nW3J1cHR1cmVdJzsNCivltYs+J1tvbWVpIG1vdW50YWluIGluIHNpY2h1YW5dJzsNCivltYw+J1tpbmxheV0nOw0KK+W1jj4nW21vdW50YWluIHJlY2Vzc10nOw0KK+W1kD4nW21vdW50YWluIG1pc3RdJzsNCivltZI+J1tjbGlmZl0nOw0KK+W1nD4nW3JvdWdoXSc7DQor5bWpPidbaGlnaF0nOw0KK+W1rD4nW2hpZ2hdJzsNCivlta8+J1toaWdoXSc7DQor5bWzPidbaGlnaF0nOw0KK+W1tj4nW2xvdyBwYXJ0IG9mIGEgbW91bnRhaW5dJzsNCivltoI+J1tjbGlmZl0nOw0KK+W2hD4nW2hpZ2hdJzsNCivltoc+J1tzdGVlcF0nOw0KK+W2iz4nW2lzbGFuZF0nOw0KK+W2jD4nW2lzbGFuZF0nOw0KKyMi5baQPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor5badPidbcGF0aCBsZWFkaW5nIHVwIGEgbW91bnRhaW5dJzsNCivltqI+J1toaWdoIG9yIHRhbGxdJzsNCisjIuW2rD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+W2rj4nW2hpZ2hdJzsNCivltrc+J1tyYW5nZSBvZiBtb3VudGFpbnMgaW4gaHVuYW4gcHJvdl0nOw0KK+W2uj4nW21vdW50YWluIHJpZGdlXSc7DQor5ba8PidbaXNsYW5kXSc7DQor5ba9PidbbW91bnRhaW4gcGVha10nOw0KK+W3iT4nW3N0ZWVwXSc7DQor5beMPidbY2xpZmZdJzsNCivlt40+J1toaWdoXSc7DQor5beSPidbbW91bnRhaW4gcmFuZ2VdJzsNCivlt5M+J1tzdW1taXQgb2YgbW91bnRhaW5dJzsNCivlt5Y+J1tjbGlmZl0nOw0KK+W3mz4nW3JpdmVyXSc7DQor5bedPidbc3RyZWFtXSc7DQor5beePidbYWRtaW5pc3RyYXRpdmUgZGl2aXNpb25dJzsNCivlt6E+J1twYXRyb2xdJzsNCivlt6M+J1tuZXN0XSc7DQor5belPidbbGFib3JdJzsNCivlt6Y+J1tsZWZ0XSc7DQor5benPidbc2tpbGxmdWxdJzsNCivlt6g+J1tsYXJnZV0nOw0KK+W3qz4nW3dpemFyZF0nOw0KK+W3rj4nW2RpZmZlcl0nOw0KK+W3sT4nW3NlbGZdJzsNCivlt7I+J1thbHJlYWR5XSc7DQor5bezPidbc2l4dGggb2YgdHdlbHZlIGJyYW5jaGVzXSc7DQor5be0PidbZ3JlYXRseSBkZXNpcmVdJzsNCivlt7U+J1ttZWFzdXJpbmcgY3VwXSc7DQor5be3PidbYWxsZXldJzsNCivlt7s+J1tzY3JvbGxdJzsNCivlt70+J1s1dGggb2YgdGhlIDggdHJpZ3JhbXNdJzsNCivlt74+J1trZXJjaGllZl0nOw0KK+W4gj4nW21hcmtldF0nOw0KK+W4gz4nW2NvdHRvbiBjbG90aF0nOw0KK+W4hj4nW3NhaWxdJzsNCivluIs+J1twYXBlcl0nOw0KK+W4jD4nW3JhcmVdJzsNCivluJE+J1thIHRyZWFzdXJ5XSc7DQor5biWPidbaW52aXRhdGlvbiBjYXJkXSc7DQor5biZPidbYm9vayBjb3Zlcl0nOw0KK+W4mj4nW2Jyb29tXSc7DQor5bibPidbc2lsa3NdJzsNCivluJ0+J1tzdXByZW1lIHJ1bGVyXSc7DQor5bilPidbY29tbWFuZGVyXSc7DQor5birPidbdGVhY2hlcl0nOw0KK+W4rT4nW3NlYXRdJzsNCivluK8+J1tiZWx0XSc7DQor5biwPidbcmV0dXJuXSc7DQor5bizPidbdGVudF0nOw0KK+W4tj4nW2JlbHRdJzsNCivluLc+J1t0ZW50XSc7DQor5bi4PidbY29tbW9uXSc7DQor5bi9PidbaGF0XSc7DQor5bmAPidbcGljdHVyZV0nOw0KK+W5gz4nW2N1cnRhaW4gdGhhdCBmb3JtcyB3YWxsXSc7DQor5bmEPidbdGVudF0nOw0KK+W5hT4nW3BpZWNlXSc7DQor5bmHPidbaGVscF0nOw0KK+W5jD4nW2N1cnRhaW5dJzsNCivluY4+J1tjb3Zlci1jbG90aF0nOw0KK+W5lD4nW2N1cnRhaW5dJzsNCivluZU+J1tjdXJ0YWluXSc7DQor5bmXPidbd29tZW4nJ3MgaGVhZGdlYXJdJzsNCivluZ8+J1tmbGFnXSc7DQor5bmhPidbcGVubmFudF0nOw0KK+W5oj4nW2NhcnJpYWdlIGN1cnRhaW5dJzsNCivluaM+J1tjdXJyZW5jeV0nOw0KK+W5pD4nW2V2aWxdJzsNCivlubI+J1tvcHBvc2VdJzsNCivlubM+J1tmbGF0XSc7DQor5bm0PidbeWVhcl0nOw0KK+W5tT4nW2V2ZW4gbGV2ZWwuIHRvIHJhaXNlIGluIGJvdGggaGFuZHNdJzsNCivlubY+J1tjb21iaW5lXSc7DQor5bm4PidbbHVjayhpbHkpXSc7DQor5bm5PidbdHJ1bmsgb2YgdHJlZSBvciBvZiBodW1hbiBib2R5XSc7DQor5bm6Pidbb25lXSc7DQor5bm7PidbaWxsdXNpb25dJzsNCivlubw+J1tpbmZhbnRdJzsNCivlub0+J1txdWlldF0nOw0KK+W5vj4nW2hvdyBtYW55PyBob3cgbXVjaD8gKGEpZmV3XSc7DQor5bm/Pidbd2lkZV0nOw0KK+W6gT4nW2hhbGxdJzsNCivluoM+J1ticm9hZF0nOw0KK+W6hD4nW3ZpbGxhZ2VdJzsNCivluoc+J1tjb3Zlcl0nOw0KK+W6ij4nW2JlZF0nOw0KK+W6jz4nW3Nlcmllc10nOw0KK+W6lT4nW2JvdHRvbV0nOw0KK+W6lj4nW2tpdGNoZW5dJzsNCivlupc+J1tzaG9wXSc7DQor5bqaPidbc2V2ZW50aCBvZiB0ZW4gY3ljbGljYWwgc3RlbXNdJzsNCivlupw+J1twcmVmZWN0dXJlXSc7DQor5bqgPidbdmlsbGFnZSBzY2hvb2xdJzsNCivluqY+J1tkZWdyZWVdJzsNCivluqc+J1tzZWF0XSc7DQor5bqrPidbYXJtb3J5XSc7DQor5bqtPidbY291cnR5YXJkXSc7DQor5bq1PidbYnVkZGhpc3QgbW9uYXN0ZXJ5IG9yIG51bm5lcnldJzsNCivlurY+J1tudW1lcm91c10nOw0KK+W6tz4nW3BlYWNlZnVsXSc7DQor5bq4PidbdXN1YWxdJzsNCivlu4E+J1t0b2lsZXRdJzsNCivlu4I+J1tzaWRlLXJvb21dJzsNCivlu4M+J1thYnJvZ2F0ZV0nOw0KK+W7iD4nW2JpZyBidWlsZGluZ10nOw0KK+W7iT4nW3VwcmlnaHRdJzsNCivlu4o+J1tjb3JyaWRvcl0nOw0KK+W7jz4nW3N0YWJsZV0nOw0KK+W7kD4nW3N0YWJsZV0nOw0KK+W7kz4nW2Jyb2FkXSc7DQor5buWPidbc3VybmFtZV0nOw0KK+W7mj4nW2tpdGNoZW5dJzsNCivlu5s+J1tzdG9yZV0nOw0KK+W7nT4nW3NlcnZhbnRdJzsNCivlu58+J1t0ZW1wbGVdJzsNCivlu6A+J1tmYWN0b3J5XSc7DQor5buhPidbY29ycmlkb3JdJzsNCivlu6I+J1thYnJvZ2F0ZV0nOw0KK+W7oz4nW2Jyb2FkXSc7DQor5buoPidbZ292ZXJubWVudCBvZmZpY2VdJzsNCivlu6k+J1tncmFuYXJ5XSc7DQor5busPidbaHV0XSc7DQor5buwPidbaGFsbF0nOw0KK+W7sT4nW2hhcm1vbmlvdXNdJzsNCivlu7M+J1toYWxsXSc7DQor5bu0PidbZ29dJzsNCivlu7Y+J1tkZWxheV0nOw0KK+W7tz4nW2NvdXJ0XSc7DQor5bu4PidbZW5saWdodGVuXSc7DQor5bu6PidbYnVpbGRdJzsNCivlu7s+J1tjaXJjbGUgYXJvdW5kXSc7DQor5bu8PidbdGhlbl0nOw0KK+W7vj4nW3R3byBoYW5kc10nOw0KK+W7vz4nW3R3ZW50eV0nOw0KK+W8gT4nW2NvbmljYWwgY2FwIHdvcm4gdW5kZXIgemhvdSBkeW5hXSc7DQor5byDPidbcmVqZWN0XSc7DQor5byEPidbZG9dJzsNCivlvIk+J1tsYXJnZV0nOw0KK+W8ij4nW2V2aWxdJzsNCivlvIs+J1tjYXRjaF0nOw0KK+W8jD4nW251bWJlciBvbmVdJzsNCivlvI0+J1tudW1iZXIgdHdvXSc7DQor5byPPidbc3R5bGVdJzsNCivlvJA+J1tudW1iZXIgdHdvXSc7DQor5byRPidbdG8ga2lsbCBvbmUnJ3Mgc3VwZXJpb3JdJzsNCivlvJM+J1tib3ddJzsNCivlvJQ+J1tjb25kb2xlXSc7DQor5byVPidbcHVsbF0nOw0KK+W8lj4nW3Bob25ldGljIGZvciBcInRlXCIgKEphcGFuZXNlKV0nOw0KK+W8lz4nW25vdF0nOw0KK+W8mD4nW2VubGFyZ2VdJzsNCivlvJs+J1tsb29zZW5dJzsNCivlvJ8+J1t5b3VuZyBicm90aGVyXSc7DQor5bylPidbZXh0ZW5zaXZlXSc7DQor5bymPidbc3RyaW5nXSc7DQor5bynPidbd29vZGVuIGJvd10nOw0KK+W8qT4nW2Nyb3NzLWJvd10nOw0KK+W8rT4nW3N0b3BdJzsNCivlvK8+J1tiZW5kXSc7DQor5byxPidbd2Vha10nOw0KK+W8tT4nW3N0cmV0Y2hdJzsNCivlvLc+J1tzdHJvbmddJzsNCivlvLg+J1tib3cgc3RyZXRjaGVkIGZ1bGxdJzsNCivlvLw+J1thaWRdJzsNCisjIuW8vD4nW2FpZF0nIiwNCisjIuW9gT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+W9iD4nW3BlbGxldF0nOw0KK+W9ij4nW3N0dWJib3JuXSc7DQor5b2MPidbZXh0ZW5zaXZlXSc7DQor5b2OPidbYmVuZF0nOw0KK+W9kT4nW3Nub3V0XSc7DQor5b2TPidbYmVhcl0nOw0KK+W9lj4nW2EgaG9nXSc7DQor5b2XPidbYnJvb21zdGlja10nOw0KK+W9mT4nW2NvbGxlY3RdJzsNCivlvZw+J1t5aV0nOw0KK+W9nT4nW3lpXSc7DQor5b2hPidbaGFpcl0nOw0KK+W9oj4nW2Zvcm1dJzsNCivlvaY+J1tlbGVnYW50XSc7DQor5b2pPidbaHVlXSc7DQor5b2qPidbdGlnZXJdJzsNCivlvas+J1tjYXJ2ZV0nOw0KK+W9rD4nW2N1bHRpdmF0ZWRdJzsNCivlva0+J1tuYW1lIG9mIGFuY2llbnQgY291bnRyeV0nOw0KK+W9sD4nW2NsZWFyXSc7DQor5b2xPidbc2hhZG93XSc7DQor5b2zPidbc3RlcCB3aXRoIGxlZnQgZm9vdF0nOw0KK+W9tz4nW2xpa2VdJzsNCivlvbk+J1tzZXJ2aWNlXSc7DQor5b28PidbdGhhdF0nOw0KK+W9vz4nW3Jlc2VtYmxpbmddJzsNCivlvoA+J1tnb10nOw0KK+W+gT4nW2ludmFkZV0nOw0KK+W+gj4nW2dvXSc7DQor5b6DPidbZ29dJzsNCivlvoQ+J1tuYXJyb3cgcGF0aF0nOw0KK+W+hT4nW3RyZWF0XSc7DQor5b6HPidbY29tcGx5IHdpdGhdJzsNCivlvog+J1t2ZXJ5XSc7DQor5b6KPidbbGluZ2VyXSc7DQor5b6LPidbc3RhdHV0ZV0nOw0KK+W+jD4nW2JlaGluZF0nOw0KK+W+kD4nW3Nsb3dseV0nOw0KK+W+kT4nW25hcnJvdyBwYXRoXSc7DQor5b6SPidbZGlzY2lwbGVdJzsNCivlvpM+J1tmcm9tXSc7DQor5b6XPidbb2J0YWluXSc7DQor5b6YPidbd2FsayBiYWNrIGFuZCBmb3J0aF0nOw0KK+W+mT4nW21vdmUgb25lJydzIGFib2RlXSc7DQor5b6ePidbZnJvbV0nOw0KK+W+oD4nW2luZHVjZV0nOw0KK+W+oT4nW2RyaXZlXSc7DQor5b6oPidbZG91YnRmdWxdJzsNCivlvqk+J1tyZXR1cm5dJzsNCivlvqo+J1tvYmV5XSc7DQor5b6tPidbY29uc2NyaXB0IGxhYm9yXSc7DQor5b6uPidbc21hbGxdJzsNCivlvrM+J1t2aXJ0dWVdJzsNCivlvrQ+J1tzdW1tb25dJzsNCivlvrk+J1twZW5ldHJhdGVdJzsNCivlvrw+J1tmcm9udGllcl0nOw0KK+W+vT4nW2EgYmFkZ2VdJzsNCivlv4M+J1toZWFydF0nOw0KK+W/hT4nW3N1cmVseV0nOw0KK+W/jD4nW2plYWxvdXNdJzsNCivlv40+J1tlbmR1cmVdJzsNCivlv5Y+J1tndWVzc10nOw0KK+W/lz4nW3B1cnBvc2VdJzsNCivlv5g+J1tmb3JnZXRdJzsNCivlv5k+J1tidXN5XSc7DQor5b+cPidbc2hvdWxkXSc7DQor5b+dPidbZGlzZ3JhY2VdJzsNCivlv6A+J1tsb3lhbHR5XSc7DQor5b+kPidbaW5zdWJvcmRpbmF0ZV0nOw0KK+W/qz4nW3JhcGlkXSc7DQor5b+wPidbc3VmZmVyXSc7DQor5b+xPidbdHJ1dGhdJzsNCivlv7U+J1t0aGluayBvZl0nOw0KK+W/uD4nW2JsdXNoXSc7DQor5b+7PidbZGVsaWdodGZ1bF0nOw0KK+W/vT4nW3N1ZGRlbmx5XSc7DQor5b+/PidbZ2V0IGFuZ3J5XSc7DQor5oCOPidbd2hhdD8gd2h5PyBob3c/XSc7DQor5oCPPidbZGlzY29udGVudGVkXSc7DQorIyLmgJA+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivmgJI+J1thbmdlcl0nOw0KK+aAlT4nW2ZlYXJdJzsNCivmgJY+J1t0ZXJyb3JdJzsNCivmgJk+J1tyZWx5IG9uXSc7DQor5oCbPidbZ3JpZXZlZF0nOw0KK+aAnD4nW3BpdHldJzsNCivmgJ0+J1t0aGlua10nOw0KK+aAoD4nW2lkbGVdJzsNCivmgKE+J1toYXJtb255XSc7DQor5oClPidbcXVpY2tdJzsNCivmgKY+J1tlYWdlcl0nOw0KK+aApz4nW25hdHVyZV0nOw0KK+aAqD4nW2hhdHJlZF0nOw0KK+aAqT4nW3NoeV0nOw0KK+aAqj4nW3N0cmFuZ2VdJzsNCivmgKs+J1tzb3JyeV0nOw0KK+aArz4nW2xhY2tpbmcgaW4gY291cmFnZV0nOw0KK+aAsT4nW2hhc3RpbHldJzsNCivmgLo+J1t0byBlbmR1cmVdJzsNCivmgYE+J1t0aGF0XSc7DQor5oGCPidbY2FyZWZ1bF0nOw0KK+aBgz4nW3JlbHkgb25dJzsNCivmgYY+J1tjb25zdGFudF0nOw0KK+aBij4nW2JlIHVuaXRlZF0nOw0KK+aBiz4nW2xvdmVdJzsNCivmgY0+J1tzZWVtaW5nbHldJzsNCivmgZA+J1tmZWFyXSc7DQor5oGSPidbY29uc3RhbnRdJzsNCivmgZU+J1tmb3JnaXZlXSc7DQor5oGZPidbaWxsbmVzc10nOw0KK+aBmj4nW2FuZ2VyXSc7DQor5oGfPidbc2NhcmVkXSc7DQor5oGgPidbc3RyYW5nZV0nOw0KK+aBoj4nW3Jlc3RvcmVdJzsNCivmgaM+J1tpbmR1bGdlIG9uZXNlbGZdJzsNCivmgaQ+J1tzaG93IHBpdHldJzsNCivmgaU+J1tzaGFtZV0nOw0KK+aBqD4nW2hhdHJlZF0nOw0KK+aBqT4nW2tpbmRuZXNzXSc7DQor5oGqPidbcmVzcGVjdGZ1bF0nOw0KK+aBqz4nW2luIHBhaW5dJzsNCivmgaw+J1txdWlldF0nOw0KK+aBrT4nW3Jlc3BlY3RmdWxdJzsNCivmga8+J1tyZXN0XSc7DQor5oGwPidbanVzdF0nOw0KK+aBtT4nW2Zhdm9yXSc7DQorIyLmgbY+J1tldmlsXSciLA0KK+aCgT4nW2lycml0YWJsZV0nOw0KK+aCgz4nW3NpbmNlcmVdJzsNCivmgoQ+J1tzaWxlbnRdJzsNCivmgok+J1trbm93XSc7DQor5oKLPidbc3Rpbmd5XSc7DQor5oKMPidbYnJvdGhlcmx5XSc7DQor5oKNPidbY291cmFnZW91c10nOw0KK+aCkj4nW3NvcnJvd2Z1bF0nOw0KK+aClD4nW3JlcGVudF0nOw0KK+aClj4nW2JlIGNvbnRyYWRpY3RvcnkgdG9dJzsNCisjIuaClj4nW2JlIGNvbnRyYWRpY3RvcnkgdG9dJyIsDQor5oKaPidbYmUgYWZyYWlkXSc7DQor5oKbPidbcmVwZW50XSc7DQor5oKfPidbYXBwcmVoZW5kXSc7DQor5oKgPidbbG9uZ10nOw0KK+aCoz4nW3N1ZmZlcl0nOw0KK+aCpj4nW3BsZWFzZWRdJzsNCivmgqc+J1tzbW9vdGhdJzsNCivmgqk+J1thbmdlcmVkXSc7DQor5oKqPidbZXZpbF0nOw0KK+aCsj4nW3NvcnJvd10nOw0KK+aCsz4nW2V0aGljc10nOw0KK+aCtD4nW3N1ZmZlcl0nOw0KK+aCtT4nW2Rpc2FwcG9pbnRlZF0nOw0KK+aCtj4nW2dsb29teV0nOw0KK+aCuD4nW2ZlYXJmdWxdJzsNCivmgrw+J1tncmlldmVdJzsNCivmgr0+J1tzb3Jyb3dmdWxdJzsNCivmg4U+J1tmZWVsaW5nXSc7DQor5oOGPidbZGlzdHJlc3NlZF0nOw0KK+aDhz4nW2JlIGtpbmRdJzsNCivmg5E+J1tjb25mdXNlXSc7DQor5oOTPidbY2FyZWZ1bF0nOw0KK+aDmD4nW2Rpc2NvbmNlcnRlZF0nOw0KK+aDmj4nW2Fic2VudC1taW5kZWRdJzsNCivmg5w+J1twaXR5XSc7DQor5oOfPidbYnV0XSc7DQor5oOgPidbZmF2b3JdJzsNCivmg6E+J1tldmlsXSc7DQor5oOjPidbb3ZlcmFsbCBbcXVlc3Rpb25hYmxlIHZhcmlhbnRdXSc7DQor5oOnPidbZmVhcl0nOw0KK+aDqD4nW3NhZF0nOw0KK+aDsD4nW2luZG9sZW50XSc7DQor5oOxPidbYW5nZXJlZF0nOw0KK+aDsz4nW3RoaW5rXSc7DQor5oO0PidbYWZyYWlkXSc7DQor5oO2PidbZmVhcmZ1bF0nOw0KK+aDtz4nW3dyaWdnbGVdJzsNCivmg7k+J1tpcnJpdGF0ZV0nOw0KK+aDuj4nW2ludGVsbGlnZW50XSc7DQor5oO7PidbZmVlbCBhbmd1aXNoXSc7DQor5oSAPidbY2hhbmdlIG9uZScncyBjb3VudGVuYW5jZV0nOw0KK+aEgT4nW2FueGlldHldJzsNCivmhIM+J1tyZWxheF0nOw0KK+aEhj4nW2ZhdWx0XSc7DQor5oSIPidbbW9yZSBhbmQgbW9yZV0nOw0KK+aEiT4nW3BsZWFzYW50XSc7DQor5oSNPidbcGl0eV0nOw0KK+aEjj4nW29ic3RpbmF0ZV0nOw0KK+aEjz4nW3Rob3VnaHRdJzsNCivmhJU+J1tzdGFydGxlZF0nOw0KK+aEmj4nW3N0dXBpZF0nOw0KK+aEmz4nW2xvdmVdJzsNCivmhJ8+J1tmZWVsXSc7DQor5oShPidbYWJzZW50LW1pbmRlZF0nOw0KK+aEpz4nW2FzaGFtZWRdJzsNCivmhKg+J1tzaW5jZXJpdHldJzsNCivmhKw+J1thY2N1c2VdJzsNCivmhLQ+J1tzYWRdJzsNCivmhLw+J1thY3Qgd2l0aCBjYXJlXSc7DQor5oS9PidbZ2FtYmxlXSc7DQor5oS+PidbYW5nZXJdJzsNCivmhL8+J1tzaW5jZXJlXSc7DQor5oWCPidbdXJnZV0nOw0KK+aFhD4nW3NoaXZlcl0nOw0KK+aFhz4nW2NhcmVmdWxdJzsNCivmhYg+J1traW5kXSc7DQor5oWKPidbdG8gcmVzZW50XSc7DQor5oWLPidbbWFubmVyXSc7DQor5oWMPidbbmVydm91c10nOw0KK+aFjT4nW2FuZ3J5XSc7DQor5oWOPidbYWN0IHdpdGggY2FyZV0nOw0KKyMi5oWTPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor5oWVPidbbG9uZyBmb3JdJzsNCivmhZg+J1tzYWRdJzsNCivmhZk+J1thc2hhbWVkXSc7DQor5oWaPidbYXNoYW1lZF0nOw0KK+aFnT4nW2RvIGV2aWwgaW4gc2VjcmV0XSc7DQor5oWfPidbc2FkbmVzc10nOw0KK+aFoj4nW3Nsb3cobHkpXSc7DQor5oWjPidbaGFiaXRdJzsNCivmhaU+J1tzaW5jZXJlXSc7DQor5oWnPidbYnJpZ2h0XSc7DQor5oWoPidbc2lnaF0nOw0KK+aFqz4nW3RvIGFsYXJtXSc7DQor5oWuPidbYmUgY29uY2VybmVkXSc7DQorIyLmha8+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivmhbA+J1tjb21mb3J0XSc7DQor5oWxPidbc2FkXSc7DQor5oWzPidbbWlzZXJseV0nOw0KK+aFtD4nW2ZlYXJdJzsNCivmhbU+J1tpbmRvbGVudF0nOw0KK+aFtj4nW2NvbmdyYXR1bGF0ZV0nOw0KK+aFtz4nW2FyZGVudF0nOw0KK+aFvj4nW2x1c3RdJzsNCivmhoI+J1tzYWRdJzsNCivmhoc+J1tyZXN0XSc7DQor5oaKPidbdGlyZWRdJzsNCivmho4+J1toYXRlXSc7DQor5oaQPidbcGl0eV0nOw0KK+aGkT4nW2xlYW4gb25dJzsNCivmhpQ+J1tiZSB3b3JuLW91dF0nOw0KK+aGlj4nW2NhdXRpb3VzXSc7DQor5oaZPidbbGlrZV0nOw0KK+aGmj4nW2RyZWFkXSc7DQor5oakPidbcmVzZW50XSc7DQor5oanPidbaXJyZXNvbHV0ZV0nOw0KK+aGqT4nW3Jlc3RdJzsNCivmhqs+J1twaXR5XSc7DQor5oasPidbcm91c2VdJzsNCivmhq4+J1tyZWdyZXRmdWxdJzsNCivmhrI+J1tjb25zdGl0dXRpb25dJzsNCivmhrY+J1tyZW1lbWJlcl0nOw0KK+aGuj4nW3BlYWNlXSc7DQor5oa+PidbcmVncmV0XSc7DQor5oeDPidbY291cnRlb3VzXSc7DQor5oeGPidbYW54aW91c10nOw0KK+aHhz4nW3NpbmNlcmVdJzsNCivmh4g+J1tpZGxlXSc7DQor5oeJPidbc2hvdWxkXSc7DQor5oeKPidbdmV4ZWRdJzsNCivmh4s+J1tzcGxlbmRpZF0nOw0KK+aHjD4nW2Vuam95XSc7DQor5oeNPidbYmUgYWZyYWlkIG9mXSc7DQor5oeQPidbYm9zb21dJzsNCivmh6M+J1tiZSBzaWNrIGF0IGhlYXJ0XSc7DQor5oemPidbd2Vha10nOw0KK+aHsj4nW3B1bmlzaF0nOw0KK+aHtD4nW3JlZ3JldF0nOw0KK+aHtj4nW2xhenldJzsNCivmh7c+J1tib3NvbV0nOw0KK+aHuD4nW2hhbmddJzsNCivmh7o+J1tyZWdyZXRdJzsNCivmh7w+J1tmZWFyXSc7DQor5oe9PidbaGFwcHldJzsNCivmh74+J1thZnJhaWRdJzsNCivmh78+J1t2aXJ0dW91c10nOw0KK+aIgD4nW2xvdmVdJzsNCivmiIg+J1toYWxiZXJkXSc7DQor5oiJPidbYSBiYXR0bGUtYXhlXSc7DQor5oiKPidbZmlmdGggb2YgdGVuIGNlbGVzdGlhbCBzdGVtc10nOw0KK+aIjD4nW2VsZXZlbnRoIG9mIHRlcnJlc3RyaWFsIGJyYW5jaGVzXSc7DQor5oiNPidbZGVmZW5kIGJvcmRlcnNdJzsNCivmiI4+J1thcm1zXSc7DQor5oiQPidbY29tcGxldGVkXSc7DQor5oiRPidbb3VyXSc7DQor5oiSPidbd2Fybl0nOw0KK+aIlD4nW3NtYWxsXSc7DQor5oiWPidbb3JdJzsNCivmiJo+J1tyZWxhdGl2ZV0nOw0KK+aImz4nW2xhbmNlXSc7DQor5oidPidbcGlyYXRlXSc7DQor5oiePidbbGFuY2VdJzsNCivmiJ8+J1toYWxiZXJkIHdpdGggY3Jlc2NlbnQgYmxhZGVdJzsNCivmiKE+J1tzdWJqdWdhdGVdJzsNCivmiKY+J1t3YXJdJzsNCivmiKo+J1tjdXQgb2ZmXSc7DQor5oiuPidba2lsbF0nOw0KK+aIrz4nW3RoZWF0cmljYWwgcGxheV0nOw0KK+aIsD4nW3dhcl0nOw0KK+aIsj4nW3RoZWF0cmljYWwgcGxheV0nOw0KK+aIsz4nW3ByaWNrXSc7DQor5oi0Pidbd2VhciBvbiB0b3BdJzsNCivmiLg+J1tkb29yXSc7DQor5oi7PidbcGVydmVyc2VdJzsNCivmiL8+J1tob3VzZV0nOw0KK+aJgD4nW3BsYWNlXSc7DQor5omBPidbZmxhdF0nOw0KK+aJhz4nW2Zhbl0nOw0KK+aJiD4nW2VzY29ydF0nOw0KK+aJiT4nW2Rvb3IgcGFuZWxdJzsNCivmiYs+J1toYW5kXSc7DQor5omNPidbdGFsZW50XSc7DQor5omOPidbcHVsbCB1cF0nOw0KK+aJkz4nW3N0cmlrZV0nOw0KK+aJlT4nW3NoYWtlIG9mZl0nOw0KK+aJmD4nW2hvbGQgdXAgd2l0aCBwYWxtXSc7DQor5ombPidbY2Fycnkgb24gc2hvdWxkZXJzXSc7DQor5omePidbd2FyZCBvZmZdJzsNCivmiaA+J1twaWNrIHVwIHdpdGggZm9yayBvciBwaW5jZXJzXSc7DQor5omjPidba25vY2tdJzsNCivmiag+J1twaWNrIHVwIHdpdGggZm9yayBvciBwaW5jZXJzXSc7DQor5omuPidbZHJlc3MgdXBdJzsNCivmibE+J1tjb2xsZWN0XSc7DQor5om2Pidbc3VwcG9ydF0nOw0KK+aJuT4nW2NvbW1lbnRdJzsNCivmibw+J1tncmFzcF0nOw0KK+aJvj4nW3NlYXJjaF0nOw0KK+aJvz4nW2luaGVyaXRdJzsNCivmioA+J1tza2lsbF0nOw0KKyMi5oqCPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor5oqDPidbdG8gY2xhcCBoYW5kc10nOw0KK+aKhD4nW2NvcHldJzsNCivmiok+J1tjaG9vc2VdJzsNCivmioo+J1tob2xkXSc7DQor5oqRPidbcHJlc3MgZG93bl0nOw0KK+aKkj4nW2V4cHJlc3NdJzsNCivmipM+J1tzY3JhdGNoXSc7DQor5oqUPidbdGFrZSBvciBob2xkIHVwIGluIGJvdGggaGFuZHNdJzsNCivmipU+J1t0aHJvd10nOw0KK+aKlj4nW3RyZW1ibGVdJzsNCivmipc+J1tyZXNpc3RdJzsNCivmipg+J1ticmVhayBvZmZdJzsNCivmips+J1t0aHJvdyAoYXdheSldJzsNCivmipw+J1t1cHJvb3RdJzsNCivmip4+J1tzZWxlY3RdJzsNCivmiqs+J1t3ZWFyXSc7DQor5oqsPidbbGlmdF0nOw0KK+aKsT4nW2VtYnJhY2VdJzsNCivmirU+J1tyZXNpc3RdJzsNCivmirk+J1tzbWVhcl0nOw0KK+aKuz4nW3B1bGxdJzsNCivmirw+J1ttb3J0Z2FnZV0nOw0KK+aKvT4nW2RyYXcgb3V0XSc7DQor5ouCPidbc2hha2Ugb2ZmXSc7DQor5ouFPidbY2FycnldJzsNCivmi4Y+J1ticmVhayB1cF0nOw0KK+aLhz4nW3RodW1iXSc7DQor5ouIPidbcGljayB1cCB3aXRoIGZpbmdlcnNdJzsNCivmi4k+J1twdWxsXSc7DQor5ouKPidbc2xhcF0nOw0KK+aLjD4nW21peF0nOw0KK+aLjT4nW2NsYXBdJzsNCivmi48+J1t0YWtlXSc7DQor5ouQPidba2lkbmFwXSc7DQor5ouRPidbdG8gY2xhbXBdJzsNCivmi5I+J1t3YXJkIG9mZiB3aXRoIGhhbmRdJzsNCivmi5M+J1tleHBhbmRdJzsNCivmi5Q+J1t1cHJvb3RdJzsNCivmi5c+J1tvYnN0aW5hdGVdJzsNCivmi5g+J1tyZXN0cmFpbl0nOw0KK+aLmT4nW3N0dXBpZF0nOw0KK+aLmz4nW2JlY2tvbl0nOw0KK+aLnD4nW2RvIG9iZWlzYW5jZV0nOw0KK+aLnT4nW2RvIG9iZWlzYW5jZV0nOw0KK+aLoD4nW29jY3VweV0nOw0KK+aLoT4nW2V4cGFuZF0nOw0KK+aLrD4nW2luY2x1ZGVdJzsNCivmi60+J1t3aXBlIGF3YXkgc3RhaW5zIHdpdGggY2xvdGhdJzsNCivmi64+J1tsYWJvcmluZyBoYXJkXSc7DQor5ouvPidbaGVscF0nOw0KK+aLsT4nW2ZvbGQgaGFuZHMgb24gYnJlYXN0XSc7DQor5ouzPidbZmlzdF0nOw0KKyMi5ou0PidbYmluZCB3aXRoIHJvcGVdJyIsDQor5ou2PidbcHJlc3NdJzsNCivmi7c+J1t0b3J0dXJlIGFuZCBpbnRlcnJvZ2F0ZV0nOw0KK+aLvj4nW3BpY2sgdXBdJzsNCivmi78+J1t0YWtlXSc7DQor5oyBPidbc3VzdGFpbl0nOw0KK+aMgj4nW2hhbmddJzsNCivmjIc+J1tmaW5nZXJdJzsNCivmjIg+J1thc3Npc3RdJzsNCivmjIk+J1twdXQgaGFuZCBvbl0nOw0KK+aMjD4nW2ZpZ2h0XSc7DQor5oyRPidbbG9hZCBjYXJyaWVkIG9uIHNob3VsZGVyc10nOw0KK+aMmT4nW3JhaXNlXSc7DQor5oyfPidbY2xhc3AgdW5kZXIgYXJtXSc7DQorIyLmjKU+J1tkaXJlY3RdJyIsDQor5oyoPidbbmVhcl0nOw0KK+aMqz4nW3B1c2ggZG93bl0nOw0KK+aMrz4nW3JhaXNlXSc7DQor5oy6Pidbc3RhbmQgdXByaWdodF0nOw0KK+aMvT4nW3B1bGxdJzsNCivmjL4+J1tjbGFzcCB1bmRlciBhcm1dJzsNCivmjL8+J1tpbnNlcnRdJzsNCivmjYk+J1tncmFzcF0nOw0KK+aNjD4nW2JyZWFrIG9wZW5dJzsNCivmjY0+J1t3YXJkIG9mZl0nOw0KK+aNjz4nW3BpY2sgd2l0aCBmaW5nZXJzXSc7DQor5o2QPidbY29udHJpYnV0ZV0nOw0KK+aNlT4nW2FycmVzdF0nOw0KK+aNlz4nW21ha2UgcHJvZ3Jlc3NdJzsNCivmjZw+J1tzZWFyY2hdJzsNCivmjac+J1tob2xkIHVwIGluIHR3byBoYW5kc10nOw0KK+aNqD4nW2Rpc2NhcmRdJzsNCivmjak+J1t0d2lzdCB3aXRoIGhhbmRzXSc7DQor5o2rPidbc3Rva2VdJzsNCivmja4+J1tvY2N1cHldJzsNCivmjbI+J1tjdXJsXSc7DQor5o22Pidbc3RyaWtlIHdpdGggc3RpY2tdJzsNCivmjbc+J1t3aW5dJzsNCivmjbo+J1twcmVzcyBkb3duIGhlYXZpbHkgd2l0aCBmcmluZ2Vyc10nOw0KK+aNuz4nW3R3aXN0IHdpdGggZmluZ2Vyc10nOw0KK+aOgD4nW2xpZnRdJzsNCivmjoM+J1tzd2VlcF0nOw0KK+aOiD4nW2dpdmUgdG9dJzsNCivmjok+J1t0dXJuXSc7DQor5o6MPidbcGFsbSBvZiBoYW5kXSc7DQor5o6OPidbZHJhZyBhc2lkZV0nOw0KK+aOjz4nW3Rha2Ugb3V0XSc7DQor5o6SPidbcm93XSc7DQor5o6WPidbc3RpY2sgaW5dJzsNCivmjpg+J1tkaWddJzsNCivmjps+J1toYW5nXSc7DQorIyLmjp8+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivmjqA+J1tyb2JdJzsNCivmjqE+J1tnYXRoZXJdJzsNCivmjqI+J1tmaW5kXSc7DQor5o6jPidbZHJhZ10nOw0KK+aOpT4nW3JlY2VpdmVdJzsNCivmjqc+J1thY2N1c2VdJzsNCivmjqg+J1twdXNoXSc7DQor5o6pPidbY292ZXJdJzsNCivmjqo+J1twbGFjZV0nOw0KK+aOqz4nW2JlIG9uIG5pZ2h0IHdhdGNoXSc7DQor5o6sPidbZ3Jhc3Agd2l0aCBib3RoIGhhbmRzXSc7DQorIyLmjrE+J1twaWNrcG9ja2V0XSciLA0KK+aOtD4nW2JveCBvbmUnJ3MgZWFyc10nOw0KKyMi5o60PidbYm94IG9uZScncyBlYXJzXSciLA0KK+aOuz4nW3NjcmF0Y2ggbGlnaHRseV0nOw0KK+aOvj4nW2EgZ2VuZXJhbCBkZXNpZ25hdGlvbiBvZiBvZmZpY2lhbHNdJzsNCivmj4A+J1tjaG9vc2VdJzsNCivmj4M+J1tzaGVhcl0nOw0KK+aPhD4nW2xpZnRdJzsNCivmj4Y+J1twcmltZSBtaW5pc3Rlcl0nOw0KK+aPiT4nW3J1Yl0nOw0KK+aPjz4nW2NvcHldJzsNCivmj5A+J1tob2xkIGluIGhhbmRdJzsNCivmj5I+J1tpbnNlcnRdJzsNCivmj5Y+J1tzYWx1dGVdJzsNCivmj5o+J1tzY2F0dGVyXSc7DQor5o+bPidbY2hhbmdlXSc7DQor5o+hPidbZ3Jhc3BdJzsNCivmj6M+J1twdXQgdGhpbmdzIHVuZGVyIGNsb3RoZXNdJzsNCivmj6k+J1tydWIgYW5kIHdpcGVdJzsNCivmj64+J1tkaXJlY3RdJzsNCivmj7Q+J1thaWRdJzsNCivmj7Y+J1ttYWtlIGZ1biBvZl0nOw0KK+aPuj4nW3dhZ10nOw0KK+aQhj4nW3B1bGxdJzsNCivmkI0+J1tkaW1pbmlzaF0nOw0KK+aQjz4nW3NlaXplXSc7DQor5pCTPidbdHJhbXBsZV0nOw0KK+aQlj4nW3dhZ10nOw0KK+aQlz4nW2h1bGxdJzsNCivmkJw+J1tzZWFyY2hdJzsNCivmkKY+J1tncmFzcF0nOw0KK+aQqD4nW3J1Yl0nOw0KK+aQrD4nW3RyYW5zZmVyXSc7DQor5pCtPidbam9pbiB0b2dldGhlcl0nOw0KK+aQtD4nW2V4dHJhY3RdJzsNCivmkLY+J1twbHVuZGVyXSc7DQor5pC6PidbbGVhZCBieSBoYW5kXSc7DQor5pC+PidbcHJlc3NdJzsNCivmkYI+J1t0YWtlIGluXSc7DQor5pGOPidbdG8gc3RyYW5nbGVdJzsNCivmkZg+J1twbHVja10nOw0KK+aRpz4nW2Rlc3Ryb3ldJzsNCivmkak+J1tydWJdJzsNCivmka8+J1tzaW5jZXJlXSc7DQor5pG2Pidbcm9sbCBhcm91bmQgd2l0aCBoYW5kXSc7DQor5pG4PidbZ2VudGx5IHRvdWNoIHdpdGggaGFuZF0nOw0KK+aRuj4nW2ZvbGRdJzsNCivmkoM+J1tzdHJpa2VdJzsNCivmkog+J1tzY29vcCBvdXQgb2Ygd2F0ZXJdJzsNCivmkpI+J1tyZWxlYXNlXSc7DQor5pKTPidbc2NyYXRjaF0nOw0KK+aSlT4nW3JpcF0nOw0KK+aSmj4nW3R3aXJsIGluIGZpbmdlcnNdJzsNCivmkp4+J1trbm9jayBhZ2FpbnN0XSc7DQor5pKkPidbb21pdF0nOw0KK+aSpT4nW21vdmVdJzsNCivmkqk+J1tsaWZ0IHVwXSc7DQor5pKrPidbcGF0XSc7DQor5pKtPidbc293XSc7DQor5pKuPidbbGl0dGxlIGJpdF0nOw0KK+aSsD4nW2NvbXBvc2VdJzsNCivmkrI+J1twb3VuZF0nOw0KK+aSuT4nW2Rpc3R1cmJdJzsNCivmkrs+J1tmbG9nXSc7DQor5pK8PidbbW92ZV0nOw0KK+aTgT4nW2VtYnJhY2VdJzsNCivmk4I+J1tydWJdJzsNCivmk4U+J1ttb25vcG9saXplXSc7DQor5pOHPidbc2VsZWN0XSc7DQor5pONPidbY29uZHVjdF0nOw0KK+aTkj4nW2NhdGNoXSc7DQor5pOUPidbY2FycnldJzsNCivmk5g+J1t0aHVtYl0nOw0KK+aTmj4nW29jY3VweV0nOw0KK+aToD4nW2Nyb3dkXSc7DQor5pOhPidbY2FycnldJzsNCivmk6I+J1twdWxsIHVwXSc7DQor5pOjPidbaHVsbF0nOw0KK+aTpj4nW3dpcGVdJzsNCivmk6c+J1tyYWlzZV0nOw0KK+aTrD4nW2RyYWZ0XSc7DQor5pOvPidbZXhjbHVkZV0nOw0KK+aTsT4nW3BsYWNlXSc7DQor5pOyPidbdGhyb3ddJzsNCivmk7Q+J1tleHBhbmRdJzsNCisjIuaTtj4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+aTuj4nW3B1dF0nOw0KK+aTvT4nW3RpY2tsZV0nOw0KK+aTvj4nW2Rpc3R1cmJdJzsNCivmlIA+J1tjbGltYl0nOw0KK+aUhT4nW3NhdmVdJzsNCivmlJg+J1tzZWl6ZV0nOw0KK+aUnD4nW2xlYWQgYnkgaGFuZF0nOw0KK+aUnT4nW3Rha2UgaW5dJzsNCivmlKM+J1t0YW5nbGVkXSc7DQor5pSkPidbc3ByZWFkIG91dF0nOw0KK+aUqj4nW2Rpc3R1cmJdJzsNCivmlKs+J1tzbmF0Y2ggYXdheV0nOw0KK+aUrD4nW2dyYXNwXSc7DQor5pSvPidbZGlzcGVyc2VdJzsNCivmlLQ+J1tyYXBdJzsNCivmlLU+J1tyYXBdJzsNCivmlLY+J1tnYXRoZXIgdG9nZXRoZXJdJzsNCivmlLc+J1tleGFtaW5lXSc7DQor5pS4PidbZGlzdGFudF0nOw0KK+aUuT4nW2NoYW5nZV0nOw0KK+aUuz4nW2F0dGFja10nOw0KK+aUvj4nW3B1dF0nOw0KK+aUvz4nW2dvdmVybm1lbnRdJzsNCivmlYU+J1thbmNpZW50XSc7DQor5pWIPidbcmVzdWx0XSc7DQor5pWNPidbZXhwcmVzc10nOw0KK+aVjz4nW2Zhc3RdJzsNCivmlZE+J1tzYXZlXSc7DQor5pWVPidbYW4gaW1wZXJpYWwgb3JkZXIgb3IgZGVjcmVlXSc7DQor5pWWPidbcmFtYmxlXSc7DQor5pWXPidbYmUgZGVmZWF0ZWRdJzsNCivmlZg+J1tleHByZXNzXSc7DQor5pWZPidbdGVhY2hdJzsNCivmlZ0+J1ticmVha10nOw0KK+aVnj4nW3Jvb215XSc7DQor5pWiPidbZGFyZV0nOw0KK+aVoz4nW3NjYXR0ZXJdJzsNCivmlaY+J1tlc3RlZW1dJzsNCivmlaw+J1tyZXNwZWN0XSc7DQor5pWwPidbbnVtYmVyXSc7DQor5pWyPidbc3RyaWtlXSc7DQor5pW0Pidbb3JkZXJseV0nOw0KK+aVtT4nW2VuZW15XSc7DQor5pW3Pidbc3ByZWFkXSc7DQor5pW4PidbbnVtYmVyXSc7DQor5paCPidbZHJhdyBiYWNrXSc7DQor5paDPidba2lsbF0nOw0KK+aWhz4nW2xpdGVyYXR1cmVdJzsNCivmlog+J1tsZWFybmluZ10nOw0KK+aWiT4nW2V2ZW5dJzsNCivmlow+J1tyZWZpbmVkXSc7DQor5paOPidbdmVnZXRhcmlhbiBkaWV0XSc7DQor5paQPidbZ3JhY2VmdWxdJzsNCivmlpE+J1ttb3R0bGVkXSc7DQor5paXPidbY2hpbmVzZSBwZWNrXSc7DQor5paZPidbY29uc2lkZXJdJzsNCivmlps+J1tkcnkgbWVhc3VyZSAxMCBvciA1IHRpbWVzIG9mIGRvdV0nOw0KK+aWnD4nW3NsYW50aW5nXSc7DQor5pafPidbcG91ciB3aW5lIG9yIHRlYSBpbnRvIGN1cF0nOw0KK+aWoT4nW3Jldm9sdmVdJzsNCivmlqQ+J1tjYXR0eV0nOw0KK+aWpT4nW3Njb2xkXSc7DQor5panPidbYXhlXSc7DQor5parPidbY3V0XSc7DQor5pasPidbY3V0XSc7DQor5patPidbc2V2ZXJdJzsNCivmlq8+J1t0aGlzXSc7DQor5pawPidbbmV3XSc7DQor5pa3Pidbc2V2ZXJdJzsNCivmlrk+J1tzcXVhcmVdJzsNCivmlrw+J1tpbl0nOw0KK+aWvT4nW2dyYW50XSc7DQor5peBPidbc2lkZV0nOw0KK+aXgz4nW3NpbGsgYmFubmVyIHdpdGggYmVudCBwb2xlXSc7DQor5peEPidbYSBraW5kIG9mIGFuY2llbnQgZmxhZ10nOw0KK+aXhT4nW3RyaXBdJzsNCivml4Y+J1tmbGFnIG9ybmFtZW50XSc7DQor5peLPidbcmV2b2x2ZV0nOw0KK+aXjD4nW2Jhbm5lciBvciBmbGFnIGFkb3JuZWQgd2l0aCBmZWF0XSc7DQor5pePPidbZmFtaWx5IGNsYW5dJzsNCivml5I+J1tmcmluZ2VzIG9mIHBlYXJscyBvbiBjcm93bnNdJzsNCivml5c+J1tiYW5uZXJdJzsNCivml5k+J1thIHBlbm5hbnRdJzsNCivml5s+J1thIHBlbm5hbnRdJzsNCivml6A+J1tuZWdhdGl2ZV0nOw0KK+aXoT4nW2Nob2tlIG9uIHNvbWV0aGluZyBlYXRlbl0nOw0KK+aXoj4nW2FscmVhZHldJzsNCivml6U+J1tzdW5dJzsNCivml6Y+J1tkYXduXSc7DQor5penPidbb2xkXSc7DQor5peoPidbcHVycG9zZV0nOw0KK+aXqT4nW2Vhcmx5XSc7DQor5pesPidbdGVuLWRheSBwZXJpb2RdJzsNCivml60+J1tyaXNpbmcgc3VuXSc7DQor5pexPidbZHJvdWdodF0nOw0KK+aXuj4nW3Byb3NwZXJdJzsNCivml7s+J1toZWF2ZW5dJzsNCivmmII+J1tyaXNlXSc7DQor5piDPidbYWZ0ZXJub29uXSc7DQor5piGPidbZWxkZXIgYnJvdGhlcl0nOw0KK+aYhz4nW3Jpc2VdJzsNCivmmIo+J1tzdW1tZXIgdGltZV0nOw0KK+aYjD4nW2xpZ2h0IG9mIHN1bl0nOw0KK+aYjj4nW2JyaWdodF0nOw0KK+aYjz4nW2R1c2tdJzsNCivmmJM+J1tjaGFuZ2VdJzsNCivmmJQ+J1tmb3JtZXJseV0nOw0KK+aYnD4nW3RvIG9wZW4gb3V0XSc7DQor5pifPidbc3Rhcl0nOw0KK+aYoD4nW3Byb2plY3RdJzsNCivmmKU+J1tzcHJpbmddJzsNCivmmKc+J1tvYnNjdXJlXSc7DQor5pioPidbeWVzdGVyZGF5XSc7DQor5pitPidbYnJpZ2h0XSc7DQor5pivPidbaW5kZWVkXSc7DQor5pi0Pidbb25lIG9mIHRoZSAyOCBjb25zdGVsbGF0aW9uc10nOw0KK+aYtT4nW2ludGltYXRlXSc7DQor5pi2PidbYSBsb25nIGRheS4gYnJpZ2h0LiBleHRlbmRlZC4gY2xlYXJdJzsNCivmmLw+J1tkYXl0aW1lXSc7DQor5pi/PidbZXh0ZW5zaXZlXSc7DQor5pmBPidbbW9ybmluZ10nOw0KK+aZgj4nW3RpbWVdJzsNCivmmYM+J1ticmlnaHRdJzsNCivmmYQ+J1ticmlnaHRdJzsNCivmmYk+J1thZHZhbmNlXSc7DQor5pmLPidbYWR2YW5jZV0nOw0KK+aZjz4nW3BlYWNlZnVsXSc7DQor5pmSPidbZHJ5IGluIHN1bl0nOw0KK+aZnT4nW2RheXRpbWVdJzsNCivmmZ4+J1tkcnldJzsNCivmmZ8+J1tjbGVhcl0nOw0KK+aZoj4nW2xpZ2h0IG9mIHN0YXJzXSc7DQor5pmkPidbaGF2ZSBpbnRlcnZpZXcgd2l0aF0nOw0KK+aZpj4nW2RhcmtdJzsNCivmmac+J1tkYXlicmVha10nOw0KK+aZqD4nW2Vhcmx5IG1vcm5pbmddJzsNCivmmak+J1tuaWdodF0nOw0KK+aZrj4nW3VuaXZlcnNhbF0nOw0KK+aZrz4nW3NjZW5lcnldJzsNCivmmbA+J1tjbGVhcl0nOw0KK+aZtD4nW2NsZWFyIHdlYXRoZXJdJzsNCivmmbY+J1tjcnlzdGFsXSc7DQor5pm6Pidbd2lzZG9tXSc7DQor5pqBPidbZGF3bl0nOw0KKyMi5pqCPidbdGVtcG9yYXJ5XSciLA0KK+aahD4nW3dhcm1dJzsNCivmmoc+J1tsZWlzdXJlXSc7DQor5pqIPidbaGFsbyBpbiBza3ldJzsNCivmmok+J1tzdW5zaGluZV0nOw0KK+aajj4nW3N1biBiZWdpbm5pbmcgZGVjbGluZV0nOw0KK+aakT4nW2hvdF0nOw0KK+aalj4nW3dhcm1dJzsNCivmmpc+J1tkYXJrXSc7DQor5pqYPidbcmlzaW5nIHN1bl0nOw0KK+aanT4nW2RhcmtdJzsNCivmmqI+J1tzbW9vdGhseV0nOw0KK+aapj4nW2NhbGVuZGFyXSc7DQor5pqrPidbdGVtcG9yYXJ5XSc7DQor5pquPidbZXZlbmluZ10nOw0KK+aatD4nW3Zpb2xlbnRdJzsNCivmmrg+J1ticmlnaHRdJzsNCivmmrk+J1tyaXNlXSc7DQor5pq8PidbdGFrZSBmbGVldGluZyBnbGFuY2UgYXRdJzsNCivmmr4+J1ttb3JuaW5nIHN1bl0nOw0KK+abgT4nW2FuZF0nOw0KK+abhD4nW2JyaWdodF0nOw0KK+abhz4nW2JlY29tZSBjbG91ZHldJzsNCivmm4k+J1tkYXduXSc7DQor5puWPidbb2JzY3VyZV0nOw0KK+abmT4nW2JyaWdodF0nOw0KK+abmj4nW3R3aWxpZ2h0IGp1c3QgYmVmb3JlIHN1biByaXNlc10nOw0KK+abnD4nW2dsb3Jpb3VzXSc7DQor5pudPidbc3VuXSc7DQor5pugPidbZXh0ZW5zaXZlXSc7DQor5pumPidbc3VubGlnaHRdJzsNCivmm6k+J1tpbiBhbmNpZW50IHRpbWVzXSc7DQor5puwPidbc2F5XSc7DQor5puyPidbY3Jvb2tlZF0nOw0KK+absz4nW3RyYWlsXSc7DQor5pu0PidbbW9yZV0nOw0KK+abtT4nW3RyYWlsXSc7DQor5pu3Pidbd2h5PyB3aGF0PyB3aGVyZT9dJzsNCivmm7g+J1tib29rXSc7DQor5pu5PidbbWluaXN0cnkgb2ZmaWNpYWxzXSc7DQor5pu8PidbbG9uZ10nOw0KK+abvT4nW2FscmVhZHldJzsNCivmm74+J1thbHJlYWR5XSc7DQor5pu/PidbY2hhbmdlXSc7DQor5pyAPidbbW9zdF0nOw0KK+acgz4nW2Fzc2VtYmxlXSc7DQor5pyIPidbbW9vbl0nOw0KK+aciT4nW2hhdmVdJzsNCivmnIs+J1tmcmllbmRdJzsNCivmnI0+J1tjbG90aGVzXSc7DQor5pyPPidbbGlnaHQgb2YgY3Jlc2NlbnQgbW9vbl0nOw0KK+aclD4nW2ZpcnN0IGRheSBvZiBsdW5hciBtb250aF0nOw0KK+aclT4nW3Byb25vdW4gXCJpXCJdJzsNCivmnJY+J1tjbGVhcl0nOw0KK+aclz4nW2NsZWFyXSc7DQor5pybPidbbG9vayBhdCBvciBmb3J3YXJkXSc7DQor5pydPidbZHluYXN0eV0nOw0KK+acnj4nW2Z1bGwgeWVhcl0nOw0KK+acnz4nW3BlcmlvZCBvZiB0aW1lXSc7DQor5pymPidbY29uZGl0aW9uIG9yIGFwcGVhcmFuY2Ugb2YgbW9vbl0nOw0KK+acpz4nW2NvbmRpdGlvbiBvciBhcHBlYXJhbmNlIG9mIG1vb25dJzsNCivmnKg+J1t0cmVlXSc7DQor5pyqPidbbm90IHlldF0nOw0KK+acqz4nW2ZpbmFsXSc7DQor5pysPidbcm9vdF0nOw0KK+acrT4nW2xldHRlcl0nOw0KK+acrj4nW3NraWxsXSc7DQor5pyxPidbY2lubmFiYXJdJzsNCivmnLQ+J1tzaW1wbGVdJzsNCivmnLY+J1tjbHVzdGVyIG9mIGZsb3dlcnNdJzsNCisjIuactj4nW2NsdXN0ZXIgb2YgZmxvd2Vyc10nIiwNCisjIuactj4nW2NsdXN0ZXIgb2YgZmxvd2Vyc10nIiwNCivmnLo+J1tkZXNrXSc7DQor5py9PidbZGVjYXllZF0nOw0KK+acvz4nW3N0YWJdJzsNCisjIuadgD4nW2tpbGxdJyIsDQor5p2GPidbcG9sZV0nOw0KK+adiT4nW3ZhcmlvdXMgc3BlY2llcyBvZiBwaW5lIGFuZCBmaXJdJzsNCivmnY4+J1twbHVtXSc7DQor5p2PPidbYXByaWNvdF0nOw0KK+adkD4nW21hdGVyaWFsXSc7DQor5p2RPidbdmlsbGFnZV0nOw0KK+adkz4nW2hhbmRsZSBvZiBjdXBdJzsNCivmnZY+J1tjYW5lXSc7DQor5p2ZPidbYSB0aW55IHdvb2RlbiBwb3N0XSc7DQor5p2cPidbc3RvcF0nOw0KK+adnj4nW3dpbGxvd10nOw0KK+adnz4nW2JpbmRdJzsNCivmnaA+J1tsZXZlcl0nOw0KK+adoT4nW2NsYXVzZV0nOw0KK+adoj4nW3dvb2R3b3JrZXJdJzsNCisjIuadoj4nW3dvb2R3b3JrZXJdJyIsDQor5p2kPidbdHlwZSBvZiBvYWtdJzsNCivmnaU+J1tjb21lXSc7DQor5p2qPidbdGlwIG9mIHR3aWddJzsNCivmna0+J1tjcm9zcyBzdHJlYW1dJzsNCivmna8+J1tjdXBdJzsNCivmnbA+J1toZXJvXSc7DQor5p2xPidbZWFzdF0nOw0KK+adsj4nW2JyaWdodCBzdW5dJzsNCivmnbM+J1tvYnNjdXJlXSc7DQor5p21PidbcGVzdGxlXSc7DQor5p23PidbbG9xdWF0XSc7DQor5p28Pidbc2h1dHRsZSBvZiBsb29tXSc7DQor5p2+PidbcGluZSB0cmVlXSc7DQor5p2/PidbcGxhbmtdJzsNCisjIuaehT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+aehz4nW2xvcXVhdF0nOw0KK+aeiT4nW3VzZWxlc3NdJzsNCivmnos+J1tzYW5kYWx3b29kXSc7DQor5p6MPidbdmFyaWV0eSBvZiBlbG0gd2l0aCBzbWFsbCBzZWVkc10nOw0KK+aekD4nW3NwbGl0IHdvb2RdJzsNCivmnpU+J1twaWxsb3ddJzsNCivmnpc+J1tmb3Jlc3RdJzsNCivmnpo+J1tzdGFsayBvZiBzaHJ1Yl0nOw0KK+aenD4nW2ZydWl0XSc7DQor5p6dPidbYnJhbmNoZXNdJzsNCisjIuaenz4nW3dvb2Qgc3RyZWFrc10nIiwNCisjIuaenz4nW3dvb2Qgc3RyZWFrc10nIiwNCivmnqI+J1tkb29yIGhpbmdlXSc7DQorIyLmnqY+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivmnqk+J1twaW5lIHRyZWVdJzsNCivmnq8+J1tkcmllZCBvdXRdJzsNCivmnrM+J1t0cmlmb2xpYXRlIG9yYW5nZV0nOw0KK+aetD4nW2NhbmVdJzsNCivmnrY+J1tyYWNrXSc7DQor5p63PidbY2FuZ3VlIHNjYWZmb2xkXSc7DQor5p64Pidba2luZCBvZiBhc3BlbiBmb3VuZCBpbiBzaWNodWFuXSc7DQor5p65PidbZHJ1bXN0aWNrXSc7DQor5p+BPidbbGFyZ2UgdGllLWJlYW1zXSc7DQor5p+EPidbaGFuZGxlXSc7DQorIyLmn4Y+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCisjIuafiD4nW2NvbnRhaW5lcl0nIiwNCivmn44+J1tjYWx5eCBvZiBmbG93ZXJdJzsNCivmn48+J1tjeXByZXNzXSc7DQor5p+QPidbY2VydGFpbiB0aGluZyBvciBwZXJzb25dJzsNCivmn5E+J1t0YW5nZXJpbmVdJzsNCivmn5M+J1tkeWVdJzsNCivmn5Q+J1tzb2Z0XSc7DQor5p+YPidbYSB0aG9ybnkgdHJlZV0nOw0KK+afmj4nW3B1bWVsb10nOw0KK+afnT4nW3dhdGNobWFuJydzIHJhdHRsZV0nOw0KK+afnj4nW29ha10nOw0KK+afoj4nW3Jvb3RdJzsNCivmn6Q+J1toYXd0aG9ybl0nOw0KKyMi5p+nPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor5p+pPidbY29mZmluIHdoaWNoIGNvbnRhaW5zIGNvcnBzZV0nOw0KK+afrD4nW2xldHRlcl0nOw0KK+afrj4nW2ZsYXQgcGllY2VzIG9mIHdvb2RdJzsNCivmn68+J1theGUtaGFuZGxlXSc7DQor5p+xPidbcGlsbGFyXSc7DQor5p+zPidbd2lsbG93IHRyZWVdJzsNCivmn7Q+J1tmaXJld29vZF0nOw0KK+aftT4nW2ZlbmNlXSc7DQor5p+7PidbaW52ZXN0aWdhdGVdJzsNCivmn74+J1tzdHJhaWdodCBncmFpbl0nOw0KK+afvz4nW3BlcnNpbW1vbl0nOw0KK+aggj4nW2Ega2luZCBvZiBldmVyZ3JlZW4gdHJlZV0nOw0KK+aggz4nW3R5cGUgb2Ygb2FrXSc7DQor5qCEPidbZ2xvcnldJzsNCivmoJM+J1t3b29kZW4gcGVnXSc7DQor5qCWPidbcGVyY2hdJzsNCivmoJc+J1tjaGVzdG51dCB0cmVlXSc7DQor5qCePidbcHVibGljYXRpb25dJzsNCivmoKE+J1tzY2hvb2xdJzsNCivmoKI+J1tjeXByZXNzXSc7DQor5qCpPidbc3BlY2llcyBvZiBvYWtdJzsNCivmoKo+J1tudW1lcmFyeSBhZGp1bmN0IGZvciB0cmVlc10nOw0KK+agqz4nW2ZlbmNlXSc7DQor5qCyPidbbWFuZ3JvdmVdJzsNCivmoLQ+J1tzYW5kYWx3b29kXSc7DQor5qC4Pidbc2VlZF0nOw0KK+aguT4nW3Jvb3RdJzsNCivmoLw+J1twYXR0ZXJuXSc7DQor5qC9PidbY3VsdGl2YXRlXSc7DQor5qGAPidbY2hpY2tlbiByb29zdF0nOw0KK+ahgT4nW2Nyb3NzLWJlYW1zIG9mIHJvb2ZdJzsNCivmoYI+J1tjYXNzaWEgb3IgY2lubmFtb25dJzsNCivmoYM+J1twZWFjaF0nOw0KK+ahhj4nW2ZyYW1lXSc7DQor5qGIPidbdGFibGVdJzsNCisjIuahjT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+ahjj4nW2ZldHRlcnNdJzsNCivmoZA+J1tuYW1lIGFwcGxpZWQgdmFyaW91cyB0cmVlc10nOw0KK+ahkT4nW211bGJlcnJ5IHRyZWVdJzsNCivmoZM+J1t2YXJpZXR5IG9mIHRyZWVdJzsNCivmoZQ+J1tjaGluZXNlIGJlbGxmbG93ZXJdJzsNCisjIuahmT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+ahnD4nW2NoZXJyeV0nOw0KK+ahnT4nWy4uLi4uLi4uLi4uLi4uLi5dJzsNCisjIuahnT4nWy4uLi4uLi4uLi4uLi4uLi5dJyIsDQor5qGjPidbc2hlbGZdJzsNCivmoac+J1tjaGluZXNlIGN5cHJlc3NdJzsNCivmobQ+J1tyYWZ0XSc7DQor5qG2PidbcGFpbF0nOw0KK+ahtz4nW3JhZnRlcl0nOw0KKyMi5qG+PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor5qG/PidbcG9sZV0nOw0KK+aigT4nW2JyaWRnZV0nOw0KK+aigz4nW2EgY2x1Yl0nOw0KK+aihT4nW3BsdW1zXSc7DQor5qKNPidbdHJlZSBuYW1lXSc7DQor5qKPPidbaGFuZGN1ZmZzXSc7DQor5qKTPidbY2F0YWxwYSBvdmF0YV0nOw0KK+ailD4nW2dhcmRlbmlhXSc7DQor5qKXPidbc3RlbSBvZiBmbG93ZXJdJzsNCisjIuaimD4nW2JhbWJvbyB0dWJlXSciLA0KK+ainT4nW2NsYXVzZV0nOw0KK+ainz4nW293bCB0aHVzXSc7DQor5qKgPidbc21hbGwgYmVhbSBzdXBwb3J0aW5nIHJhZnRlcnMgYXRdJzsNCivmoqI+J1twb2ludGVkIHRpcCBvZiBzb21ldGhpbmcgbG9uZyBsaWtlIGEgYnJhbmNoXSc7DQor5qKmPidbZHJlYW1dJzsNCivmoqc+J1tzdGVyY3VsaWEgcGxhdGFuaWZvbGlhXSc7DQor5qKoPidbcGVhcl0nOw0KK+airT4nW3dlYXZlcicncyBzaHV0dGxlXSc7DQor5qKvPidbbGFkZGVyXSc7DQor5qKwPidbd2VhcG9uc10nOw0KK+aisT4nW2Rvb3JzaWxsXSc7DQor5qKzPidbY29tYl0nOw0KK+aitT4nW2J1ZGRoaXN0XSc7DQor5qK2Pidbb2FyXSc7DQor5qK5PidbdGhlIGFyZWNhLW51dF0nOw0KKyMi5qK5PidbdGhlIGFyZWNhLW51dF0nIiwNCivmorw+J1tibG9jayBvZiB3b29kXSc7DQor5qOEPidbcmVqZWN0XSc7DQorIyLmo4Y+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivmo4k+J1tjb3R0b25dJzsNCivmo4o+J1tjaGVzc10nOw0KK+ajiz4nW2NoZXNzXSc7DQor5qONPidbc3RpY2tdJzsNCivmo5I+J1tzdGlja10nOw0KKyMi5qOUPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor5qOVPidbaGVtcCBwYWxtXSc7DQor5qOXPidbZGF0ZSB0cmVlXSc7DQor5qOYPidbanVqdWJlIHRyZWVdJzsNCivmo5o+J1t0ZW50XSc7DQor5qOfPidbbWFpbiBiZWFtcyBzdXBwb3J0aW5nIGhvdXNlXSc7DQor5qOgPidbY3JhYiBhcHBsZSB0cmVlXSc7DQorIyLmo6E+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivmo6M+J1trZXJyaWEgamFwb25pY2EgcGxhbnRdJzsNCivmo6c+J1t3YXJlaG91c2VdJzsNCivmo64+J1tmb3Jlc3RdJzsNCivmo68+J1tqdWp1YmUgdHJlZV0nOw0KK+ajsj4nW3BlcmNoXSc7DQor5qO5Pidbb2FyXSc7DQor5qO6PidbY29mZmluXSc7DQor5qSAPidbYm93bF0nOw0KK+akgT4nW291dGVyLWNvZmZpbl0nOw0KK+akhD4nW3RvIGdyYWZ0XSc7DQor5qSFPidbY2hhaXJdJzsNCivmpIg+J1tjZWRhcl0nOw0KK+akiz4nW2ZydWl0XSc7DQor5qSMPidbaW5zdHJ1bWVudF0nOw0KK+akjT4nW3BsYW50XSc7DQor5qSOPidbaGFtbWVyXSc7DQor5qSPPidbdGhlIGZvcmtpbmcgYnJhbmNoIG9mIGEgdHJlZV0nOw0KK+akkj4nW3BlcHBlcl0nOw0KKyMi5qSTPidbc3RyaWtlXSciLA0KKyMi5qSaPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor5qSbPidbdHlwZSBvZiBiaXJjaF0nOw0KK+aknD4nW2NoZWNrXSc7DQorIyLmpKE+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCisjIuakoj4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KKyMi5qSjPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQorIyLmpKU+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCisjIuakpj4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KKyMi5qSoPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor5qSqPidbbWFjaGlsdXMgbmFubXVdJzsNCivmpLA+J1twYWxtIHRyZWVdJzsNCivmpLQ+J1twb3BsYXJdJzsNCivmpLY+J1twYWxtIHRyZWVdJzsNCivmpLk+J1thIGNob3BwaW5nIGJvYXJkXSc7DQor5qS9PidbYmVhbXNdJzsNCivmpL8+J1tmYXRoZXJdJzsNCivmpYo+J1t3aWxsb3ddJzsNCivmpZM+J1ttYXBsZSB0cmVlXSc7DQor5qWUPidbd2VkZ2VdJzsNCivmpZU+J1tvdmFsLXNoYXBlZF0nOw0KK+almT4nW25hbWUgb2YgcGxhbnRdJzsNCivmpZo+J1tuYW1lIG9mIGZldWRhbCBzdGF0ZV0nOw0KKyMi5qWcPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor5qWdPidbbWVsaWEgamFwb25pY2FdJzsNCivmpZ4+J1t1c2VkIGZvciBjZXlsb24gaW4gYnVkZGhpc3QgdGV4dF0nOw0KK+aloD4nW25hbWUgb2YgdHJlZV0nOw0KK+aloT4nW2VsbSB0cmVlXSc7DQor5qWiPidbdGluZGVyXSc7DQor5qWqPidbc21hbGwgZGlzaF0nOw0KK+alqz4nW29hcl0nOw0KK+alrT4nW3Byb2Zlc3Npb25dJzsNCivmpa4+J1ttdWxiZXJyeV0nOw0KK+alrz4nW3NoaWVsZF0nOw0KK+alsz4nW3BsdW1zXSc7DQorIyLmpbQ+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivmpbU+J1tleHRyZW1lXSc7DQor5qW3PidbbW9kZWwgc3R5bGUgb2YgY2hpbmVzZSB3cml0aW5nXSc7DQor5qW4PidbbWFsbG90dXMgamFwb25pY3VzXSc7DQor5qW5PidbY29sdW1uXSc7DQor5qW8PidbYnVpbGRpbmcgb2YgdHdvIG9yIG1vcmUgc3Rvcmllc10nOw0KK+alvT4nW2hhcHB5XSc7DQorIyLmpb0+J1toYXBweV0nIiwNCisjIuamgD4nW1tub3QgZm91bmQgaW4gZGljdGlvbmFyeV1dJyIsDQor5qaCPidbZ2VuZXJhbGx5XSc7DQorIyLmpok+J1t0eXBlIG9mIGVsbV0nIiwNCivmpo4+J1tzbWFsbCBldmVyZ3JlZW4gc2hydWJdJzsNCisjIuamkT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+amlD4nW2JldGVsLW51dCB0cmVlXSc7DQor5qaVPidbYmFueWFuIHRyZWVdJzsNCivmpps+J1toYXplbG51dF0nOw0KK+amnD4nW3BsYWNhcmRdJzsNCisjIuamoD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+ampz4nW3R5cGUgb2YgeWV3XSc7DQor5qauPidbZ2xvcnldJzsNCivmprE+J1tyYWZ0ZXJdJzsNCivmprI+J1twaWxsYXJdJzsNCivmprQ+J1twb21lZ3JhbmF0ZV0nOw0KK+amuz4nW2NvdF0nOw0KK+amvj4nW3BpZWNlcyBvZiB3b29kXSc7DQor5qa/PidbYWxkZXJdJzsNCivmp4E+J1t3aXRoZXJdJzsNCivmp4M+J1t0cmF5XSc7DQor5qeHPidbdGlwIG9mIGEgdHJlZV0nOw0KK+anij4nW3NwZWFyXSc7DQor5qeLPidbZnJhbWVdJzsNCivmp4w+J1toYW1tZXJdJzsNCivmp40+J1tzcGVhcl0nOw0KK+anjj4nW3JhZnRdJzsNCivmp5A+J1tsb2N1c3QgdHJlZV0nOw0KK+ankz4nW2xldmVyXSc7DQor5qeYPidbc2hhcGVdJzsNCisjIuanmD4nW3NoYXBlXSciLA0KKyMi5qebPidbdGhyZXNob2xkXSciLA0KKyMi5qebPidbdGhyZXNob2xkXSciLA0KK+anpz4nW3dvb2RlbiB0YWJsZXRdJzsNCivmp6g+J1tvdXRlci1jb2ZmaW5dJzsNCisjIuanqz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+anrT4nW21hcGxlXSc7DQor5qeyPidbdHlwZSBvZiBvYWtdJzsNCivmp7k+J1tzcGFyXSc7DQor5qe7PidbemVsa292YSB0cmVlXSc7DQor5qe9PidbdHJvdWdoXSc7DQor5qe/PidbaGliaXNjdXNdJzsNCivmqII+J1toYXBweV0nOw0KK+aohT4nW2ZpciB0cmVlXSc7DQor5qiKPidbYSByYWlsaW5nXSc7DQor5qiLPidbdHJlZSBuYW1lXSc7DQorIyLmqIw+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCisjIuaokj4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+aokz4nW2J1aWxkaW5nIG9mIHR3byBvciBtb3JlIHN0b3JpZXNdJzsNCisjIuaokz4nW2J1aWxkaW5nIG9mIHR3byBvciBtb3JlIHN0b3JpZXNdJyIsDQor5qiXPidba2luZCBvZiB0cmVlIHdpdGggdXNlbGVzcyB0aW1iZXJdJzsNCivmqJk+J1ttYXJrXSc7DQor5qibPidbYmVuZGluZyBicmFuY2hlc10nOw0KK+aonj4nW2Rvb3IgaGluZ2VdJzsNCivmqJ8+J1tjYW1waG9yIHRyZWVdJzsNCivmqKE+J1ttb2RlbF0nOw0KKyMi5qiiPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor5qijPidbc2hhcGVdJzsNCivmqKk+J1twb3dlcl0nOw0KK+aoqj4nW2Fjcm9zc10nOw0KKyMi5qiqPidbYWNyb3NzXSciLA0KKyMi5qiqPidbYWNyb3NzXSciLA0KK+aotT4nW3dvb2RjdXR0ZXJdJzsNCivmqLY+J1tjXSc7DQor5qi4Pidbc2ltcGxlXSc7DQor5qi5PidbdHJlZV0nOw0KK+aouj4nW3R5cGUgb2YgYmlyY2hdJzsNCivmqL0+J1tnb2JsZXRdJzsNCivmqYQ+J1tvbGl2ZV0nOw0KK+aphz4nW2Egc2xlZGdlIGZvciB0cmFuc3BvcnRhdGlvbl0nOw0KK+apiD4nW2JlbnQgb3IgdHdpc3RlZCBwaWVjZSBvZiB3b29kXSc7DQor5qmLPidbYnJpZGdlXSc7DQor5qmYPidbb3JhbmdlXSc7DQor5qmZPidbb3JhbmdlXSc7DQor5qmfPidbbWFjaGluZV0nOw0KK+apoT4nW2NoZXN0bnV0IG9ha10nOw0KK+apoj4nW292YWwtc2hhcGVkXSc7DQor5qmmPidbdHJlZV0nOw0KKyMi5qmxPidbY2FiaW5ldF0nIiwNCisjIuaptT4nW3dvb2QgcGxhY2VkIHVuZGVyIHJvb2YgdGlsZXNdJyIsDQorIyLmqb8+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivmqoA+J1tzYW5kYWx3b29kXSc7DQor5qqEPidbY2FsbCBhcm1zXSc7DQor5qqNPidbaWxleF0nOw0KK+aqjj4nW3NtYWxsIHJlZCBhcHBsZV0nOw0KK+aqkD4nW2VhdmVzIG9mIGhvdXNlXSc7DQor5qqXPidbdHJlZV0nOw0KK+aqnD4nW2NoaW5lc2UgY3lwcmVzc10nOw0KK+aqoD4nW3N0YW5kIGZvciBsYW1wXSc7DQor5qqiPidbY2hlY2tdJzsNCivmqqM+J1ttYXN0XSc7DQor5qqqPidbY2hlc3RudXQtbGVhdmVkIG9ha10nOw0KK+aqrD4nW3R5cGUgb2YgbG9jdXN0IG9yYWNhY2lhXSc7DQor5qquPidbYmxvY2sgb2Ygd29vZF0nOw0KK+aqsz4nW2JldGVsbnV0XSc7DQor5qq4PidbbGVtb25dJzsNCivmqrs+J1t0aHJlc2hvbGRdJzsNCisjIuargT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+argj4nW29hcl0nOw0KK+argz4nW2N1cGJvYXJkXSc7DQorIyLmq5E+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivmq5M+J1tvYXJdJzsNCivmq5o+J1twYWxtXSc7DQor5qubPidbY29tYiBvdXRdJzsNCivmq54+J1tjaXRydXNdJzsNCivmq58+J1tjaGVzdG51dC1sZWF2ZWQgb2FrXSc7DQor5quoPidbc3VwcG9ydGluZyBibG9ja10nOw0KK+arqj4nW3R5cGUgb2Ygb2FrXSc7DQor5qu6PidbY2FydmVkIG9yIHBhdHRlcm5lZCB3aW5kb3cgc2lsbHNdJzsNCivmq7s+J1tjaGVycnldJzsNCivmrIQ+J1tyYWlsaW5nXSc7DQor5qyFPidbemVsa292YV0nOw0KK+asij4nW3Bvd2VyXSc7DQor5qySPidbbmFtZSBvZiB0cmVlXSc7DQor5qyWPidbb2xpdmVdJzsNCivmrJ0+J1tsdXh1cmlhbnRdJzsNCisjIuasnj4nW3RoZSBsYXR0aWNlIG9mIGEgd2luZG93IGEgc2lsbF0nIiwNCivmrKA+J1tvd2VdJzsNCivmrKE+J1tvcmRlcl0nOw0KK+asoz4nW2hhcHB5XSc7DQor5qynPidbdHJhbnNsaXQuOiBldXJvcGVdJzsNCivmrLI+J1tkZXNpcmVdJzsNCivmrLc+J1tzb2JdJzsNCivmrLg+J1tzaWdoc10nOw0KK+asuT4nW2ZpZXJjZSBkb2ddJzsNCivmrLo+J1tjaGVhdF0nOw0KK+asvT4nW3Jlc3BlY3RdJzsNCivmrL4+J1tpdGVtXSc7DQor5q2DPidbc21lYXIgb25lJydzIG1vdXRoIHdpdGggYmxvb2Qgb2YgYSB2aWN0aW0gd2hlbiB0YWtpbmcgYW4gb2F0aF0nOw0KK+athz4nW3Jlc3RdJzsNCivmrYk+J1tkZWZpY2llbnRdJzsNCivmrYw+J1tzb25nXSc7DQor5q2OPidbc2lnaF0nOw0KK+atkD4nW3RyYW5zbGl0LjogZXVyb3BlXSc7DQor5q2TPidbaGFwcHldJzsNCivmrZQ+J1tibG93IHRocm91Z2ggbm9zZV0nOw0KK+atmT4nW3RvIHN1Y2tdJzsNCivmrZs+J1tkcmF3IGJhY2tdJzsNCivmrZ8+J1tmaW5hbCBwYXJ0aWNsZSB1c2VkIGV4cHJlc3MgcXVlc10nOw0KK+atoT4nW2hhcHB5XSc7DQor5q2iPidbc3RvcF0nOw0KK+atoz4nW3JpZ2h0XSc7DQor5q2kPidbdGhpc10nOw0KK+atpj4nW21pbGl0YXJ5XSc7DQor5q2pPidbc3RlcF0nOw0KK+atqj4nW3NsYW50XSc7DQor5q2vPidbdGVldGhdJzsNCivmrbM+J1t5ZWFyXSc7DQor5q20PidbdGFrZSBwbGFjZV0nOw0KK+atuD4nW3JldHVybl0nOw0KK+atuT4nW2JhZF0nOw0KK+atuz4nW2RpZV0nOw0KK+atvz4nW2RpZV0nOw0KK+augD4nW2RpZSB5b3VuZ10nOw0KK+augz4nW21pc2ZvcnR1bmVdJzsNCivmroQ+J1t0byBlbmRdJzsNCivmroY+J1tkYW5nZXJvdXNdJzsNCivmrok+J1tkaWUgZm9yIGNhdXNlXSc7DQor5q6KPidbZGlmZmVyZW50XSc7DQor5q6LPidbaW5qdXJlXSc7DQor5q6NPidbdG8gc3RhcnZlIHRvIGRlYXRoXSc7DQor5q6VPidbW25vdCBmb3VuZCBpbiBkaWN0aW9uYXJ5XV0nOw0KK+aulj4nW2JyZWVkXSc7DQor5q6YPidbaW5qdXJlXSc7DQor5q6ePidbZGllXSc7DQor5q6kPidbZGllIHlvdW5nXSc7DQor5q6qPidbZGllXSc7DQor5q6rPidbdXRtb3N0XSc7DQor5q6vPidbZW5jb2ZmaW5dJzsNCivmrrE+J1thbm5paGlsYXRlXSc7DQor5q6yPidbYW5uaWhpbGF0ZV0nOw0KK+ausz4nW25hbWUgb2Ygb2xkIHdlYXBvbl0nOw0KK+autD4nW2JlYXRdJzsNCivmrrU+J1tzZWN0aW9uXSc7DQor5q63PidbbWFueV0nOw0KK+auuj4nW2tpbGxdJzsNCivmrrs+J1tjYXNpbmddJzsNCivmrrw+J1tjYXNpbmddJzsNCivmrr8+J1toYWxsXSc7DQor5q+APidbZGVzdHJveV0nOw0KK+avhT4nW3Jlc29sdXRlXSc7DQor5q+GPidbYmVhdF0nOw0KK+aviz4nW2RvIG5vdF0nOw0KK+avjT4nW21vdGhlcl0nOw0KK+avjj4nW2V2ZXJ5XSc7DQor5q+SPidbcG9pc29uXSc7DQor5q+TPidbZ2l2ZSBiaXJ0aCB0b10nOw0KK+avlD4nW2NvbXBhcmVdJzsNCivmr5g+J1toZWxwXSc7DQor5q+bPidbaGFpcl0nOw0KKyMi5q+fPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor5q+rPidbZmluZSBoYWlyXSc7DQor5q+sPidbYmFsbF0nOw0KK+avrz4nW3J1Z10nOw0KK+avsz4nW2ZpbmUgaGFpciBvciBmdXIgb24gYW5pbWFsc10nOw0KK+awiD4nW2ZlbHRdJzsNCivmsI8+J1tjbGFuXSc7DQor5rCRPidbcGVvcGxlXSc7DQor5rCTPidbcGVvcGxlXSc7DQor5rCUPidbc3RlYW1dJzsNCivmsJc+J1thaXJdJzsNCivmsJs+J1tnYXNdJzsNCivmsKM+J1thaXJdJzsNCivmsKQ+J1toYW5naW5nIGZvZ10nOw0KK+awtD4nW3dhdGVyXSc7DQor5rC3PidbaWNlXSc7DQor5rC4PidbbG9uZ10nOw0KK+awvj4nW292ZXJmbG93XSc7DQor5rGAPidbc2FuZGJhcl0nOw0KK+axgT4nW2p1aWNlXSc7DQor5rGCPidbc2Vla10nOw0KK+axjj4nW2Zsb2F0XSc7DQor5rGQPidbbmlnaHQgdGlkZXNdJzsNCivmsZU+J1tiYXNrZXQgZm9yIGNhdGNoaW5nIGZpc2hdJzsNCivmsZc+J1twZXJzcGlyYXRpb25dJzsNCivmsZo+J1tmaWx0aHldJzsNCivmsZ0+J1t5b3VdJzsNCivmsZ4+J1tlbGVtZW50IG1lcmN1cnldJzsNCivmsZ8+J1tsYXJnZSByaXZlcl0nOw0KK+axoD4nW3Bvb2xdJzsNCisjIuaxoj4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+axqD4nW01pKGx1bykgcml2ZXIgaW4gaHVuYW4gcHJvdmluY2Ugd2hlcmUgUXUgWXVhbiBkcm93bmVkIGhpbXNlbGZdJzsNCivmsao+J1t2YXN0XSc7DQor5rGwPidbZXhjZXNzaXZlXSc7DQor5rGyPidbZHJhdyB3YXRlciBmcm9tIHdlbGxdJzsNCisjIuaxsj4nW2RyYXcgd2F0ZXIgZnJvbSB3ZWxsXSciLA0KK+axuj4nW2RlY2lkZV0nOw0KK+axvT4nW3N0ZWFtXSc7DQor5rG+Pidbcml2ZXIgaW4gc2hhbnhpIHByb3ZpbmNlXSc7DQor5rKBPidbc29hayBpbnRvXSc7DQor5rKCPidbcml2ZXIgaW4gc291dGhlYXN0IHNoYW5kb25nIGZsb3ddJzsNCivmsoM+J1t3YXRlcl0nOw0KK+ayiD4nW3NpbmtdJzsNCivmsow+J1tjaGFvdGljXSc7DQor5rKNPidbZnJlZXppbmddJzsNCivmspA+J1tiYXRoZV0nOw0KK+aykj4nW25vdF0nOw0KK+aykz4nW2Nvbm5lY3RlZF0nOw0KK+aylj4nW3BvdXJdJzsNCivmspk+J1tzYW5kXSc7DQor5rKaPidbaXNsZXQgaW4gc3RyZWFtXSc7DQor5rKbPidbYWJ1bmRhbnRdJzsNCivmsqE+J1tub3RdJzsNCivmsqI+J1ttYXJzaF0nOw0KK+ayqz4nW2Zyb3RoXSc7DQor5rKuPidbc3RvcF0nOw0KK+aysT4nW3JpdmVyc10nOw0KK+aysz4nW3JpdmVyXSc7DQor5rK4PidbYm9pbF0nOw0KK+ayuT4nW29pbF0nOw0KK+ayuj4nW3R1cmJ1bGVudF0nOw0KK+ayuz4nW2dvdmVybl0nOw0KK+ayvD4nW2xha2VdJzsNCivmsr0+J1tidXkgYW5kIHNlbGxdJzsNCivmsr4+J1ttb2lzdGVuXSc7DQor5rK/PidbZm9sbG93IGNvdXJzZV0nOw0KK+azgT4nW2NvbmRpdGlvbl0nOw0KK+azhD4nW2xlYWtdJzsNCivms4U+J1tzd2ltXSc7DQor5rOJPidbc3ByaW5nXSc7DQor5rOKPidbYW5jaG9yIHZlc3NlbF0nOw0KK+azjD4nW3RvIHNlZXAgb3V0XSc7DQor5rOTPidbY2xlYXJdJzsNCivms5U+J1tsYXddJzsNCivms5c+J1ttdWNvdXNdJzsNCivms5k+J1tyb2FyXSc7DQor5rObPidbZHJpZnRdJzsNCivms50+J1tnbyB1cHN0cmVhbV0nOw0KK+azoT4nW2J1YmJsZXNdJzsNCivms6I+J1t3YXZlc10nOw0KK+azoz4nW2NyeV0nOw0KK+azpT4nW211ZF0nOw0KK+azqD4nW2NvbmNlbnRyYXRlXSc7DQor5rOqPidbdGVhcnNdJzsNCivms68+J1tkZXN0cm95XSc7DQor5rOwPidbZ3JlYXRdJzsNCivms7E+J1tncmVhdF0nOw0KK+azsz4nW2RpdmVdJzsNCivmtIs+J1tvY2Vhbl0nOw0KK+a0jD4nW2NsZWFyXSc7DQor5rSSPidbc3ByaW5rbGVdJzsNCivmtJc+J1t3YXNoXSc7DQor5rSZPidbbmFtZSBvZiBhIHJpdmVyIGluIHNoYW5kb25nXSc7DQor5rSbPidbcml2ZXIgaW4gc2hhYW54aSBwcm92aW5jZV0nOw0KK+a0nj4nW2NhdmVdJzsNCivmtJ8+J1tzbml2ZWxdJzsNCivmtKU+J1tmZXJyeV0nOw0KK+a0qT4nW2xlYWtdJzsNCivmtKo+J1t2YXN0XSc7DQor5rSrPidbdG8gZGl0Y2hdJzsNCivmtLI+J1tjb250aW5lbnRdJzsNCivmtLM+J1tkYW1wXSc7DQor5rS1PidbdHJ1ZV0nOw0KK+a0tj4nW3RoZSBydXNoIG9mIHdhdGVyXSc7DQor5rS4Pidbc3BhcmtsZV0nOw0KK+a0uz4nW2xpdmVdJzsNCivmtL0+J1tzcHJlYWRdJzsNCivmtL4+J1tzY2hvb2wgb2YgdGhvdWdodF0nOw0KK+a1gT4nW2Zsb3ddJzsNCivmtYQ+J1twdXJlXSc7DQor5rWFPidbc2hhbGxvd10nOw0KK+a1mT4nW3poZWppYW5nIHByb3ZpbmNlXSc7DQor5rWaPidbZHJlZGdlXSc7DQor5rWcPidbY3JlZWtdJzsNCivmtaM+J1t0byB3YXNoXSc7DQor5rWkPidbYmVhdGluZyBvZiBvY2Vhbl0nOw0KK+a1pj4nW2Jhbmsgb2Ygcml2ZXJdJzsNCivmtak+J1tncmVhdF0nOw0KK+a1qj4nW3dhdmVdJzsNCivmtaw+J1tuYXV0aWNhbCBtaWxlXSc7DQor5rWuPidbZmxvYXRdJzsNCivmtbQ+J1tiYXRoZV0nOw0KK+a1tz4nW3NlYV0nOw0KK+a1uD4nW3NvYWtdJzsNCivmtbk+J1tzYXR1cmF0ZV0nOw0KK+a2hT4nW2JsYWNrZW5dJzsNCivmtog+J1t2YW5pc2hdJzsNCivmtow+J1tzdXJnZSB1cF0nOw0KK+a2jj4nW3NhbGl2YV0nOw0KK+a2kz4nW2Jyb29rXSc7DQor5raVPidbdGVhcl0nOw0KK+a2mT4nW3RlYXJzXSc7DQor5rabPidbbGFyZ2Ugd2F2ZXNdJzsNCivmtpw+J1tkaXRjaF0nOw0KK+a2rz4nW3Nob3JlXSc7DQor5rayPidbc2FwXSc7DQor5ra1Pidbc29ha10nOw0KK+a2uD4nW2RyaWVkIHVwXSc7DQor5ra8PidbY29vbF0nOw0KK+a3gD4nW3NoYWxsb3cgd2F0ZXJdJzsNCivmt4U+J1t3YXRlciB1c2VkIHdhc2ggcmljZV0nOw0KK+a3hj4nW2NvbmZ1c2VkXSc7DQor5reHPidbcml2ZXIgaW4gaGVuYW4gcHJvdmluY2VdJzsNCivmt4s+J1tkcmlwXSc7DQor5reMPidbdHJpY2tsZV0nOw0KK+a3kT4nW2dvb2RdJzsNCivmt5I+J1tiaXR0ZXIgY29sZF0nOw0KKyMi5reVPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor5reYPidbd2FzaCBpbiBzaWV2ZV0nOw0KK+a3mT4nW2d1cmdsaW5nIHNvdW5kIG9mIHdhdGVyXSc7DQor5reePidbbmFtZSBvZiBhIHJpdmVyIGluIEppYW5nc3VdJzsNCivmt6E+J1t3ZWFrXSc7DQor5rekPidbbXVkXSc7DQor5remPidbcml2ZXIgaW4gamlhbmd4aSBwcm92aW5jZTogd2F0ZXJdJzsNCivmt6g+J1twdXJlXSc7DQor5reqPidbYmUgbG9zdF0nOw0KK+a3qz4nW29ic2NlbmVdJzsNCivmt6w+J1t0ZW1wZXJdJzsNCivmt64+J1tyaXZlciBpbiBhbmh1aSBwcm92aW5jZV0nOw0KK+a3sT4nW2RlZXBdJzsNCivmt7M+J1tjeWFub2dlbl0nOw0KK+a3tT4nW2d1bGZdJzsNCivmt7c+J1ttaXhdJzsNCivmt7k+J1tkcm93bl0nOw0KK+a3uj4nW3NoYWxsb3ddJzsNCivmt7s+J1thcHBlbmRdJzsNCivmuIU+J1tjbGVhcl0nOw0KK+a4hz4nW3RoaXJzdHldJzsNCivmuIg+J1toZWxwXSc7DQor5riJPidbZm9yZCBzdHJlYW1dJzsNCivmuIo+J1tzdXJnZSB1cF0nOw0KK+a4iz4nW2FzdHJpbmdlbnRdJzsNCivmuJM+J1ttb3VudGFpbiBzdHJlYW1dJzsNCivmuJU+J1tzdXJnZSB1cF0nOw0KK+a4mT4nW3NjYXR0ZXJdJzsNCivmuJo+J1tzbWFsbCBzYW5kIGJhbmtdJzsNCivmuJs+J1tkZWNyZWFzZV0nOw0KK+a4nT4nW2NoYW5nZV0nOw0KK+a4nz4nWyhvZiB3YXRlcikgbm90IGZsb3dpbmddJzsNCivmuKA+J1tkaXRjaF0nOw0KK+a4oT4nW2Nyb3NzXSc7DQor5rijPidbcmVmdXNlXSc7DQor5rikPidbc3dlbGxpbmddJzsNCivmuKU+J1ttb2lzdGVuXSc7DQor5rimPidbc3dpcmxdJzsNCivmuKk+J1tsdWtld2FybV0nOw0KK+a4qz4nW2JlYXRpbmcgb2Ygb2NlYW5dJzsNCivmuKw+J1ttZWFzdXJlXSc7DQor5ritPidbbmFtZSBvZiBhIHJpdmVyIGluIHNoYWFueGldJzsNCivmuK4+J1tyaXZlciBpbiBzaGFuZG9uZyBwcm92aW5jZV0nOw0KK+a4rz4nW3BvcnRdJzsNCivmuLg+J1tzd2ltXSc7DQor5ri6PidbZW5kbGVzc2x5IGxvbmddJzsNCivmuL4+J1ttdWRkeV0nOw0KK+a5gz4nW3NvdW5kIG9mIHdhdmVzXSc7DQor5rmKPidbcGllY2UgdG9nZXRoZXJdJzsNCivmuY0+J1tyYXBpZCB3YXRlciBjdXJyZW50XSc7DQor5rmOPidbZmx1c2hlZCB3aXRoIGRyaW5rXSc7DQor5rmWPidbbGFrZV0nOw0KK+a5mD4nW2h1bmFuIHByb3ZpbmNlXSc7DQor5rmbPidbZGVlcF0nOw0KK+a5nz4nW3JpdmVyIGluIHFpbmdoYWkgcHJvdmluY2VdJzsNCivmuac+J1t3ZWxsIHVwXSc7DQor5rmrPidbYSBzbWFsbCBwb25kXSc7DQor5rmuPidbYnVyeV0nOw0KK+a5rz4nW2hvdCB3YXRlcl0nOw0KK+a5sj4nW2Zsb3ddJzsNCisjIua5sz4nW1tub3QgZm91bmQgaW4gZGljdGlvbmFyeV1dJyIsDQor5rm+PidbYmF5XSc7DQor5rm/Pidbd2V0XSc7DQorIyLmub8+J1t3ZXRdJyIsDQorIyLmub8+J1t3ZXRdJyIsDQor5rqMPidbcG91cl0nOw0KK+a6jz4nW3Bvb2xdJzsNCivmupA+J1tzcHJpbmddJzsNCivmupY+J1tydWxlXSc7DQor5rqYPidbYWJydXB0bHldJzsNCivmupw+J1tzbGlkZV0nOw0KK+a6nT4nW2RpdGNoXSc7DQor5rqfPidbZHJpenpsaW5nIHJhaW5dJzsNCivmuqI+J1tvdmVyZmxvd10nOw0KK+a6pT4nW2JpZ10nOw0KK+a6qj4nW21vdW50YWluIHN0cmVhbV0nOw0KK+a6rz4nW2dvIHVwc3RyZWFtXSc7DQor5rqyPidbdXJpbmF0ZV0nOw0KK+a6tj4nW21lbHRdJzsNCivmurc+J1twcml2eV0nOw0KK+a6uj4nW2Ryb3duXSc7DQor5rq9PidbbW9pc3RdJzsNCivmu4I+J1t0b3JyZW50aWFsXSc7DQor5ruEPidbYmx1ZV0nOw0KK+a7hT4nW2V4dGluZ3Vpc2hdJzsNCivmu4k+J1tkZWVwXSc7DQor5ruLPidbZ3Jvd10nOw0KK+a7jD4nW3dhc2hdJzsNCivmu5E+J1tzbGlwXSc7DQor5ruTPidbc2VkaW1lbnRdJzsNCivmu5Q+J1tvdmVyZmxvd10nOw0KK+a7lT4nWzxhcmNoPiBjb3VudHkgaW4gc2hhbmRvbmcgcHJvdmluY2VdJzsNCivmu50+J1tyYWluaW5nXSc7DQor5ruePidbYmxvY2sgdXBdJzsNCivmu6w+J1tzaGFuZ2hhaV0nOw0KK+a7rz4nW2Jsb2NrIHVwXSc7DQor5ruyPidbc29hayB0aHJvdWdoXSc7DQor5ru0PidbZHJpcF0nOw0KK+a7tz4nW3RoaWNrIGdyYXZ5XSc7DQor5ru4Pidbcml2ZXJiYW5rXSc7DQor5ru+PidbdHVybl0nOw0KK+a7vz4nW2ZpbGxdJzsNCivmvIE+J1t0byBmaXNoXSc7DQor5ryCPidbZmxvYXRdJzsNCivmvIY+J1t2YXJuaXNoXSc7DQor5ryJPidbZmlsdGVyXSc7DQor5ryPPidbbGVha10nOw0KK+a8kT4nW3dhdGVyXSc7DQor5ryTPidbcml2ZXIgaW4gZ3Vhbmd4aSBwcm92aW5jZV0nOw0KK+a8lD4nW3BlcmZvcm1dJzsNCivmvJU+J1t0cmFuc3BvcnQgYnkgd2F0ZXJdJzsNCivmvKA+J1tkZXNlcnRdJzsNCivmvKI+J1tjaGluZXNlIHBlb3BsZV0nOw0KK+a8oz4nW2Zsb3dpbmcgd2F0ZXJdJzsNCivmvKs+J1tvdmVyZmxvdyBvZiB3YXRlcl0nOw0KK+a8rD4nW3NvYWtdJzsNCivmvLE+J1tnYXJnbGVdJzsNCivmvLI+J1tyaXNlIGluIHByaWNlXSc7DQor5ry4PidbZ3JhZHVhbGx5XSc7DQor5ry+Pidbb3ZlcmZsb3ddJzsNCivmvL8+J1thbnkgdGhpY2sgZmx1aWRdJzsNCivmvYE+J1tyaXZlciBpbiBhbmh1aV0nOw0KK+a9hT4nW3BvdXJdJzsNCivmvZQ+J1tjbGVhbl0nOw0KK+a9mD4nW3N1cm5hbWVdJzsNCivmvZs+J1toaWRlXSc7DQor5r2cPidbaGlkZV0nOw0KK+a9nz4nW2xhbmQgaW51bmRhdGVkIHdpdGggc2FsdCBmcm9tIHRpXSc7DQor5r2kPidbc29mdF0nOw0KK+a9pj4nW3RvIGZsb29kXSc7DQor5r2tPidbZGVlcCBwb29sXSc7DQor5r2uPidbdGlkZV0nOw0KK+a9rz4nW3N0ZWVwIGJhbmsgYnkgc3RyZWFtXSc7DQor5r2wPidbZmxvb2Rpbmcgcml2ZXJdJzsNCivmvbQ+J1twb25kXSc7DQor5r24Pidbd2VlcF0nOw0KK+a9uj4nW3NvdW5kIG9mIGZsb3dpbmcgd2F0ZXJdJzsNCivmvbw+J1toaWdoXSc7DQor5r6APidbYXN0cmluZ2VudF0nOw0KK+a+gT4nW2FzdHJpbmdlbnRdJzsNCivmvoI+J1tjbGVhciBhbmQgc3RpbGwgd2F0ZXJdJzsNCivmvoQ+J1twdXJpZnkgd2F0ZXIgYnkgYWxsb3dpbmcgc2VkaW1lbl0nOw0KK+a+hj4nW3NwcmF5XSc7DQor5r6OPidbc3BsYXR0ZXJdJzsNCivmvpE+J1tzbGlkZV0nOw0KK+a+lz4nW2Jyb29rXSc7DQor5r6hPidbd2FzaF0nOw0KK+a+oz4nW2NsZWFuc2VdJzsNCivmvqQ+J1ttYXJzaF0nOw0KKyMi5r6qPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor5r6xPidbc2VkaW1lbnRdJzsNCivmvrM+J1tpbmxldF0nOw0KK+a+uT4nW2NhbG1dJzsNCivmv4A+J1thcm91c2VdJzsNCivmv4E+J1ttdWRkeV0nOw0KK+a/gj4nW3dhdGVyZmFsbF0nOw0KK+a/gz4nW3RoaWNrXSc7DQor5r+GPidbcml2ZXIgYmFua10nOw0KK+a/lD4nW21hbnldJzsNCivmv5U+J1t3ZXRdJzsNCivmv5g+J1ttdWRdJzsNCivmv5s+J1tkcml6emxpbmddJzsNCivmv58+J1toZWxwXSc7DQor5r+gPidbbW9hdF0nOw0KK+a/oT4nW2ltbWVyc2VdJzsNCivmv6Q+J1tsYXJnZSB3YXZlc10nOw0KK+a/qz4nW2Zsb29kXSc7DQor5r+sPidbZHJlZGdlXSc7DQor5r+uPidbY291bnR5IGluIEhlbmFuIHByb3ZpbmNlXSc7DQor5r+vPidbd2FzaCBvdXRdJzsNCivmv7E+J1tiZWFjaF0nOw0KK+a/sz4nW2hpZGVdJzsNCivmv7Y+J1ticm9hZF0nOw0KK+a/uj4nW3Nwcmlua2xlXSc7DQor5r++Pidbc3RyYWluIG91dF0nOw0KK+eAgT4nW3dhdmVzXSc7DQor54CJPidbZHJhaW4gb2ZmXSc7DQor54CLPidbanVpY2VdJzsNCivngI8+J1tjbGVhcl0nOw0KK+eAkT4nW3dhdGVyZmFsbF0nOw0KK+eAlT4nW2FwcHJvYWNoXSc7DQor54CYPidbcml2ZXIgaW4gamlhbmd4aSBwcm92aW5jZV0nOw0KK+eAmj4nW3Zhc3RdJzsNCivngJs+J1tzZWFdJzsNCivngJ0+J1t0cmlja2xlXSc7DQor54CePidbcG9vbCBpbiBhIHJpdmVyXSc7DQor54CfPidbc291bmQgb2YgYmVhdGluZyB3aW5kIGFuZCByYWluXSc7DQor54CmPidbcG9uZF0nOw0KK+eApz4nW3JhaW5pbmddJzsNCivngKw+J1tzd2lmdCBjdXJyZW50XSc7DQor54CwPidbb3ZlcmZsb3ddJzsNCivngLI+J1t3YXZlc10nOw0KK+eAvj4nW292ZXJmbG93aW5nXSc7DQor54GMPidbcG91cl0nOw0KK+eBkT4nW3Nwcmlua2xlXSc7DQor54GYPidbYmFua10nOw0KK+eBoz4nW2JheV0nOw0KK+eBqz4nW2ZpcmVdJzsNCivnga8+J1tsYW50ZXJuXSc7DQor54GwPidbYXNoZXNdJzsNCivngbg+J1tjYXV0ZXJpemUgd2l0aCBtb3hhXSc7DQor54G8PidbYnVybl0nOw0KK+eBvT4nW2NhbGFtaXR5XSc7DQor54KJPidbZmlyZXBsYWNlXSc7DQor54KKPidbY29va10nOw0KK+eCjj4nW2ZsYW1lXSc7DQor54KSPidbZnJ5XSc7DQor54KZPidbcm9hc3RdJzsNCivngqw+J1t0b3JjaF0nOw0KK+eCrT4nW2NoYXJjb2FsXSc7DQor54KuPidbbGFyZ2UgZ3VuXSc7DQor54KvPidbYnJpZ2h0XSc7DQor54KzPidbYnJpZ2h0XSc7DQor54K4PidbZnJ5IGluIG9pbF0nOw0KK+eCuT4nW2RvdF0nOw0KK+eCuj4nW2RvXSc7DQor54OIPidbZmllcnldJzsNCivng4s+J1tib2FzdF0nOw0KK+eDjz4nW2Nyb3ddJzsNCivng5k+J1ticmFuZF0nOw0KK+eDnT4nW3Jpc2VdJzsNCivng58+J1tzbW9rZV0nOw0KK+eDsT4nW2JyaWdodF0nOw0KK+eDuT4nW2JvaWxdJzsNCivng70+J1tzaWduYWwgZmlyZV0nOw0KK+eEiT4nW3RoZXJldXBvbl0nOw0KK+eElD4nW2ZsYW1lXSc7DQor54SZPidbZHJ5IG92ZXIgc2xvdyBmaXJlXSc7DQor54SaPidbYnVybl0nOw0KK+eEnD4nW2ZpcmVdJzsNCivnhKE+J1tuZWdhdGl2ZV0nOw0KK+eEpj4nW2J1cm5lZF0nOw0KK+eEtj4nW3llc10nOw0KK+eEvD4nW2J1cm5dJzsNCivnhYk+J1tzbWVsdF0nOw0KK+eFjD4nW2JyaWdodF0nOw0KK+eFjj4nW2ZyeSBpbiBmYXQgb3Igb2lsXSc7DQor54WVPidbYnJpZ2h0XSc7DQor54WWPidbd2FybV0nOw0KK+eFmT4nW3Ntb2tlXSc7DQor54WiPidbYWxvbmVdJzsNCivnhaQ+J1tjb2FsXSc7DQor54WlPidbc2hpbmluZ10nOw0KK+eFpj4nW2tpbmRdJzsNCivnhac+J1tzaGluZV0nOw0KK+eFqT4nW2JvdGhlcl0nOw0KK+eFrD4nW3JvYXN0XSc7DQor54WuPidbY29va10nOw0KK+eFvT4nW3N0aXIgdXBdJzsNCivnhoQ+J1twdXQgb3V0XSc7DQor54aIPidbYnJpZ2h0XSc7DQor54aKPidbYmVhcl0nOw0KK+eGjz4nW3Ntb2tlXSc7DQor54aUPidbbWVsdF0nOw0KKyMi54aVPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor54aZPidbYnJpZ2h0XSc7DQor54afPidbd2VsbCBjb29rZWRdJzsNCivnhqg+J1tpcm9uXSc7DQor54asPidbY29vayBkb3duXSc7DQor54axPidbaG90XSc7DQor54a5PidbZGltIGxpZ2h0XSc7DQor54a+PidbYnVybmluZyBob3RdJzsNCivnh4M+J1tidXJuXSc7DQor54eIPidbbGFudGVybl0nOw0KK+eHiT4nW2hlYXQgd2l0aCBmaXJlXSc7DQor54eOPidbYnVybl0nOw0KK+eHkD4nW3Bob3NwaG9ydXNdJzsNCivnh5I+J1tidXJuXSc7DQor54eUPidbdG8gcm9hc3RdJzsNCivnh5U+J1tzd2FsbG93IChiaXJkKV0nOw0KKyMi54eXPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor54efPidbZW5jYW1wbWVudF0nOw0KK+eHoD4nW3dhcm1dJzsNCivnh6U+J1tkcnldJzsNCivnh6Y+J1t2aXZpZF0nOw0KK+eHpz4nW2ZsaW50c3RvbmVdJzsNCivnh6w+J1tidXJuIGRvd25dJzsNCivnh60+J1tjYW5kbGVdJzsNCivnh64+J1toYXJtb25pemVdJzsNCisjIueHtT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+eHuT4nW2ZpcmVdJzsNCivnh7s+J1tzbW9rZV0nOw0KK+eHvD4nW2NpbmRlcnNdJzsNCivnh78+J1tzaGluZV0nOw0KK+eIhj4nW2NyYWNrbGVdJzsNCivniI0+J1tzaGluZV0nOw0KK+eIkD4nW2ZpcmVwbGFjZV0nOw0KK+eImz4nW3JvdHRlbl0nOw0KK+eIqD4nW292ZW5dJzsNCivniKo+J1tjbGF3XSc7DQor54isPidbY3Jhd2xdJzsNCivniK0+J1tkaXNwdXRlXSc7DQor54iwPidbbGVhZCBvbiB0b10nOw0KK+eIsj4nW2RvXSc7DQor54i1PidbZmV1ZGFsIHRpdGxlIG9yIHJhbmtdJzsNCivniLY+J1tmYXRoZXJdJzsNCivniLo+J1tmYXRoZXJdJzsNCivniLs+J1tkaWFncmFtcyBmb3IgZGl2aW5hdGlvbl0nOw0KK+eIvD4nW2Nob3BwaW5nIGJvYXJkIG9yIGJsb2NrXSc7DQor54i9PidbaGFwcHldJzsNCivniL4+J1t5b3VdJzsNCivniL8+J1toYWxmIG9mIHRyZWUgdHJ1bmtdJzsNCivniYA+J1tiZWRdJzsNCivniYY+J1t3YWxsXSc7DQor54mHPidbc2xpY2VdJzsNCivniYg+J1twcmludGluZyBibG9ja3NdJzsNCivniYs+J1ttZW1vcmFuZHVtXSc7DQor54mMPidbc2lnbmJvYXJkXSc7DQor54mSPidbZG9jdW1lbnRzXSc7DQor54mYPidbd3JpdGluZyB0YWJsZXRdJzsNCivniZk+J1t0b290aF0nOw0KK+eJmz4nW2Nvd10nOw0KK+eJnT4nW2ZlbWFsZSBvZiBzcGVjaWVzXSc7DQor54mfPidbbWFrZV0nOw0KK+eJoT4nW21hbGUgb2YgYW5pbWFsc10nOw0KK+eJoj4nW3ByaXNvbl0nOw0KK+eJpz4nW3RlbmQgY2F0dGxlXSc7DQor54mpPidbdGhpbmddJzsNCivnibI+J1tzYWNyaWZpY2lhbCBhbmltYWxdJzsNCivnibQ+J1tnb3JlXSc7DQor54m5Pidbc3BlY2lhbF0nOw0KK+eJvT4nW2RyYWddJzsNCivnib4+J1t0byBvcHBvc2VdJzsNCivnioA+J1tyaGlub2Nlcm9zXSc7DQor54qBPidbcGxvd10nOw0KK+eKgj4nW3Bsb3ddJzsNCivnioc+J1tydW4gZmFzdF0nOw0KK+eKkj4nW2VudGVydGFpbiB2aWN0b3Jpb3VzIHNvbGRpZXJzXSc7DQor54qWPidbYnJpbmRsZWQgb3hdJzsNCivniqA+J1tzYWNyaWZpY2VdJzsNCivniqI+J1tjYWxmXSc7DQor54qnPidbc2FjcmlmaWNlXSc7DQor54qsPidbZG9nXSc7DQor54qvPidbY29tbWl0IGNyaW1lXSc7DQor54qyPidbd29sZl0nOw0KK+eKtj4nW2Zvcm1dJzsNCivnirk+J1tsaWtlXSc7DQor54uCPidbaW5zYW5lXSc7DQor54uDPidbdG8gY292ZXRdJzsNCivni4Q+J1t0cmliZSBmcm9tIG5vcnRoZXJuIGNoaW5hXSc7DQor54uGPidbcGVraW5lc2UgZG9nXSc7DQor54uOPidbYmUgZmFtaWxpYXIgd2l0aF0nOw0KK+eLkD4nW3NwZWNpZXMgb2YgZm94XSc7DQor54uSPidbYmFib29uXSc7DQor54uXPidbZG9nXSc7DQor54uZPidbYXBlXSc7DQorIyLni5s+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivni6A+J1t2aWNpb3VzXSc7DQor54uhPidbY3VubmluZ10nOw0KK+eLoj4nW2FuaW1hbCBuYW1lXSc7DQor54upPidbd2ludGVyIGh1bnRpbmddJzsNCivni6w+J1thbG9uZV0nOw0KK+eLrT4nW25hcnJvd10nOw0KK+eLtz4nW3Jhc2hdJzsNCivni7g+J1tmb3hdJzsNCivni7k+J1tuYXJyb3ddJzsNCivni7w+J1t3b2xmXSc7DQor54u9PidbbGVnZW5kYXJ5IGFuaW1hbCB3aXRoIHNob3J0IGZvcmVdJzsNCivnjIo+J1tsaW9uXSc7DQor54yWPidbbWFkXSc7DQor54yXPidbZXhjbGFtYXRpb24gb2YgYWRtaXJhdGlvbl0nOw0KK+eMmz4nW3Zpb2xlbnRdJzsNCivnjJw+J1tndWVzc10nOw0KK+eMnT4nW2FicnVwdGx5XSc7DQor54yfPidbaHVudF0nOw0KK+eMpT4nW3Z1bGdhcl0nOw0KK+eMqT4nW3NwZWNpZXMgb2Ygb3Jhbmd1dGFuXSc7DQor54yqPidbcGlnXSc7DQor54yrPidbY2F0XSc7DQor54yuPidbb2ZmZXJdJzsNCisjIueMrz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+eMtD4nW21vbmtleV0nOw0KK+eMtj4nW2xpa2VdJzsNCivnjLc+J1twbGFuXSc7DQor54y+PidbY3JhZnR5XSc7DQor54y/PidbYXBlXSc7DQor542EPidbcHJpc29uXSc7DQor542FPidbbGlvbl0nOw0KK+eNjj4nW3ByaXplXSc7DQor542PPidbdGhlIHBhbnRoZXJdJzsNCivnjZc+J1t1bnJ1bHldJzsNCivnjaM+J1tiZWFzdF0nOw0KK+eNqD4nW2Fsb25lXSc7DQor542qPidbc2x5XSc7DQor542wPidbZmVyb2Npb3VzIGFwcGVhcmFuY2VdJzsNCivnjbI+J1tvYnRhaW5dJzsNCivnjbU+J1todW50XSc7DQor5424PidbYmVhc3RdJzsNCivnjbo+J1tvdHRlcl0nOw0KK+eNuz4nW29mZmVyXSc7DQor546EPidbZGVlcF0nOw0KK+eOhz4nW3RvIGxlYWRdJzsNCivnjok+J1tqYWRlXSc7DQor546LPidba2luZ10nOw0KK+eOlj4nW2JsYWNrLWNvbG9yZWQgamFkZV0nOw0KK+eOqT4nW3BsYXkgd2l0aF0nOw0KK+eOsj4nW3RpbmtsaW5nIG9mIGphZGVdJzsNCivnjrM+J1t0b3J0b2lzZSBzaGVsbF0nOw0KK+eOuz4nW2dsYXNzXSc7DQor54+APidbYW1iZXJdJzsNCivnj4I+J1tpbmZlcmlvciBraW5kIG9mIGphZGVdJzsNCivnj4g+J1tvcm5hbWVudCBhdHRhY2hlZCB3b21hbicncyBoYWlycGldJzsNCivnj4o+J1tjb3JhbF0nOw0KK+ePjT4nW3ByZWNpb3VzXSc7DQor54+OPidbcHJlY2lvdXNdJzsNCivnj54+J1traW5kIG9mIG5lY2tsYWNlXSc7DQor54+gPidbcHJlY2lvdXMgc3RvbmVdJzsNCivnj6U+J1tlYXIgb3JuYW1lbnRdJzsNCivnj6o+J1tqYWRlIHRhYmxlIGNvbmZlcnJlZCB1cG9uIGZldWRhbF0nOw0KK+ePrT4nW2NsYXNzXSc7DQor54+uPidbamFkZSBvcm5hbWVudF0nOw0KK+ePsT4nW25lY2tsYWNlIG1hZGUgb2YgcHJlY2lvdXMgc3RvbmVzXSc7DQorIyLnj7g+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivnj74+J1thcHBlYXJdJzsNCivnkIM+J1tiYWxsXSc7DQor55CFPidbdmFyaWV0eSBvZiB3aGl0ZSBjYXJuZWxpYW5dJzsNCivnkIY+J1tyZWFzb25dJzsNCivnkIk+J1tzcGFya2xpbmcgc3RvbmVdJzsNCivnkKI+J1twb2xpc2ggamFkZV0nOw0KK+eQpT4nW2pld2VsIGluIHNoYXBlIG9mIHRpZ2VyXSc7DQor55CyPidbbmVja2xhY2VdJzsNCivnkLM+J1tiZWF1dGlmdWwgamFkZV0nOw0KK+eQtD4nW2NoaW5lc2UgbHV0ZSBvciBndWl0YXJdJzsNCivnkLU+J1tndWl0YXItbGlrZSBpbnN0cnVtZW50XSc7DQor55C2PidbZ3VpdGFyLWxpa2UgaW5zdHJ1bWVudF0nOw0KK+eQuj4nW2VuYW1lbF0nOw0KK+eQvz4nW2JyaWdodF0nOw0KK+eRgT4nW2ZpbmUgcGllY2Ugb2YgamFkZV0nOw0KK+eRlT4nW2ZsYXcgaW4gZ2VtXSc7DQor55GZPidbYWdhdGVdJzsNCivnkZo+J1tjb3JhbF0nOw0KK+eRmz4nW2x1c3RlciBvZiBnZW1dJzsNCivnkZw+J1tmbGF3bGVzcyBnZW0gb3IgamV3ZWxdJzsNCivnkZ4+J1tmZWxpY2l0b3VzIG9tZW5dJzsNCivnkZ8+J1tsYXJnZSBzdHJpbmdlZCBtdXNpY2FsIGluc3RydW1lbnRdJzsNCivnkaA+J1twcmVjaW91cyBzdG9uZV0nOw0KK+eRoz4nW2ZyYWdtZW50c10nOw0KK+eRpD4nW3ByZWNpb3VzIGphZGVdJzsNCivnkak+J1tsdXN0cmUgb2YgZ2Vtc10nOw0KK+eRqj4nW2FnYXRlXSc7DQor55GvPidba2luZCBvZiB3aGl0ZSBjb3JuZWxpYW5dJzsNCivnkbA+J1tleHRyYW9yZGluYXJ5XSc7DQor55GzPidbbHVzdGVyIG9mIGdlbV0nOw0KK+eRtj4nW3ByZWNpb3VzIGphZGVdJzsNCivnkb4+J1ticmlsbGlhbmNlIG9mIGdlbXNdJzsNCivnkoM+J1tnbGFzc10nOw0KK+eSiz4nW2phZGUgcGxheXRoaW5nXSc7DQor55KePidbdW5wb2xpc2hlZCBnZW1dJzsNCivnkqI+J1twcmVjaW91cyBzdG9uZV0nOw0KK+eSpz4nW3BpZWNlIG9mIGphZGUgd2l0aCBob2xlIGluIGl0XSc7DQor55KwPidbamFkZSByaW5nIG9yIGJyYWNlbGV0XSc7DQor55K9PidbaW1wZXJpYWwgc2lnbmV0XSc7DQor55OKPidbamFkZV0nOw0KK+eTjz4nW2dlbSBjdXQgbGlrZSBkcmFnb25dJzsNCivnk5Q+J1tuZWNrbGFjZSBtYWRlIG9mIHByZWNpb3VzIHN0b25lc10nOw0KK+eTnD4nW21lbG9uXSc7DQor55OgPidbYm90dGxlIGdvdXJkXSc7DQor55OiPidbbGFkbGUgbWFkZSBmcm9tIGRyaWVkIGdvdXJkXSc7DQor55OjPidbcGV0YWxdJzsNCivnk6Y+J1t0aWxlXSc7DQor55OnPidbZGVjYWdyYW1dJzsNCivnk6k+J1traWxvd2F0dF0nOw0KK+eTrj4nW2VhcnRoZW4gamFyXSc7DQor55OwPidbW25vdCBmb3VuZCBpbiBkaWN0aW9uYXJ5XV0nOw0KK+eTsT4nW21pbGxpZ3JhbV0nOw0KKyMi55OyPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor55O2PidbanVnXSc7DQor55O3PidbY3JvY2tlcnldJzsNCivnk7g+J1toZWN0b2dyYW1dJzsNCivnlIM+J1ticmljayB3YWxsIG9mIGEgd2VsbF0nOw0KK+eUhD4nW2V4YW1pbmVdJzsNCivnlIU+J1tjZW50aWdyYW1dJzsNCivnlIw+J1tib3dsXSc7DQor55SNPidbcmFmdGVycyBzdXBwb3J0aW5nIHJvb2YgdGlsZXNdJzsNCivnlI4+J1ticmlja10nOw0KK+eUkT4nW2JvaWxlciBmb3Igc3RlYW1pbmcgcmljZV0nOw0KK+eUkz4nW2dsYXplZCB0aWxlc10nOw0KK+eUlT4nW2VhcnRoZW4gamFyXSc7DQor55SYPidbc3dlZXRuZXNzXSc7DQor55SaPidbZ3JlYXQgZXh0ZW50XSc7DQor55ScPidbc3dlZXRdJzsNCivnlJ4+J1t0YXN0ZV0nOw0KK+eUnz4nW2xpZmVdJzsNCivnlKM+J1tnaXZlIGJpcnRoXSc7DQor55SlPidbc2lzdGVyJydzIGNoaWxkXSc7DQor55SmPidbYmUgcmVib3JuXSc7DQor55SoPidbdXNlXSc7DQor55SrPidbYmVnaW5dJzsNCivnlKw+J1twYXRoXSc7DQor55SwPidbZmllbGRdJzsNCivnlLE+J1tjYXVzZV0nOw0KK+eUsj4nW2FybW9yXSc7DQor55SzPidbdG8gc3RhdGUgdG8gYSBzdXBlcmlvcl0nOw0KK+eUtz4nW21hbGVdJzsNCivnlLg+J1tzdWJ1cmJzIG9mIGNhcGl0YWxdJzsNCivnlLo+J1tyYWlzZWQgcGF0aCBiZXR3ZWVuIGZpZWxkc10nOw0KK+eUuz4nW3BhaW50aW5nXSc7DQor55S8PidbcmFpc2VkIHBhdGggYmV0d2VlbiBmaWVsZHNdJzsNCivnlYQ+J1tzdG9wXSc7DQor55WGPidbY2hpbmVzZSBsYW5kIG1lYXN1cmVdJzsNCisjIueViT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+eVij4nW3Bsb3ddJzsNCivnlYs+J1t0aWxsIGxhbmRdJzsNCivnlYw+J1tib3VuZGFyeV0nOw0KKyMi55WNPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor55WPPidbZmVhcl0nOw0KK+eVkT4nW2RyeSAoYXMgb3Bwb3NlZCB0byByaWNlKSBmaWVsZF0nOw0KK+eVlD4nW2JvdW5kYXJ5IHBhdGggZGl2aWRpbmcgZmllbGRzXSc7DQor55WZPidbc3RvcF0nOw0KK+eVmj4nW3N0cmF3IGJhc2tldF0nOw0KK+eVmz4nW2JvcmRlcl0nOw0KK+eVnD4nW2xpdmVzdG9ja10nOw0KK+eVnT4nW2NoaW5lc2UgbGFuZCBtZWFzdXJlXSc7DQor55WgPidbZ2FyZGVuXSc7DQor55WiPidbZW5kXSc7DQor55WkPidbcGxhY2UgZm9yIHdvcnNoaXBwaW5nIHRoZSBoYXZlbl0nOw0KK+eVpT4nW2FwcHJveGltYXRlbHldJzsNCivnlaY+J1tzZWN0aW9ucyBpbiB2ZWdldGFibGUgZmFybV0nOw0KK+eVpz4nW2FwcHJveGltYXRlbHldJzsNCisjIueVqT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+eVqj4nW3Rha2UgdHVybnNdJzsNCivnlas+J1tkZWxpbmVhdGVdJzsNCisjIueVrT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+eVsD4nW2RpZmZlcmVudF0nOw0KK+eVsz4nW3JlcGVhdF0nOw0KK+eVtD4nW2Zhcm1sYW5kXSc7DQor55W2PidbYmVhcl0nOw0KK+eVtz4nW3JhaXNlZCBwYXRoIGJldHdlZW4gZmllbGRzXSc7DQor55W4Pidbb2RkXSc7DQor55W/PidbaW1wZXJpYWwgZG9tYWluXSc7DQor55aCPidbcmVwZWF0XSc7DQor55aGPidbYm91bmRhcnldJzsNCivnloc+J1tmYXJtbGFuZF0nOw0KK+eWiT4nW3JlcGVhdF0nOw0KK+eWij4nW3JlcGVhdF0nOw0KK+eWiz4nW3JvbGxdJzsNCivnlo4+J1tuZWdsZWN0XSc7DQor55aPPidbbmVnbGVjdF0nOw0KK+eWkT4nW2RvdWJ0XSc7DQor55aUPidbY2FyYnVuY2xlXSc7DQor55aaPidbY2hyb25pYyBkaXNlYXNlXSc7DQor55adPidbaGVybmlhXSc7DQor55ajPidbd2FydF0nOw0KK+eWpT4nW3NjYWJpZXNdJzsNCivnlqs+J1tlcGlkZW1pY10nOw0KK+eWsT4nW2FjbmVdJzsNCivnlrI+J1tmZWVsIHRpcmVkXSc7DQor55azPidbY2hpbGRob29kIGRpc2Vhc2VzXSc7DQor55a1PidbZmxhd10nOw0KK+eWuD4nW2phdW5kaWNlXSc7DQor55a5PidbbWVhc2xlc10nOw0KK+eWvD4nW2FjaGVzXSc7DQor55a9PidbdWxjZXJdJzsNCivnlr4+J1tpbGxuZXNzXSc7DQor55eCPidbc2NhYl0nOw0KK+eXgz4nW2luZGlnZXN0aW9uXSc7DQor55eFPidbaWxsbmVzc10nOw0KK+eXhz4nW2Rpc2Vhc2VdJzsNCivnl4o+J1tiZSBoZWFsZWRdJzsNCivnl40+J1t3b3VuZF0nOw0KK+eXkj4nW2l0Y2hdJzsNCivnl5Q+J1toZW1vcnJob2lkc10nOw0KK+eXlT4nW3NjYXJdJzsNCivnl5g+J1tzbWFsbHBveF0nOw0KK+eXmT4nW2NvbnZ1bHNpb25zXSc7DQor55ebPidbcGFpbl0nOw0KK+eXnj4nW2R5c3BlcHNpYV0nOw0KK+eXoj4nW2R5c2VudHJ5XSc7DQor55ejPidbc3BvdHNdJzsNCivnl6k+J1t0aGluXSc7DQor55ewPidbcGhsZWdtXSc7DQor55eyPidbcG9jay1tYXJrZWRdJzsNCivnl7M+J1twb2NrLW1hcmtlZF0nOw0KK+eXtD4nW2Zvb2xpc2hdJzsNCivnl7o+J1twYXJhbHlzaXNdJzsNCivnl7w+J1tjaHJvbmljIGRpc2Vhc2VdJzsNCivnl74+J1tjaHJvbmljIGlsbG5lc3NdJzsNCivnl78+J1twYXJhbHlzaXNdJzsNCivnmIE+J1tmZWVsIHRpcmVkXSc7DQor55iJPidbZ2V0IHdlbGxdJzsNCivnmIs+J1tjcmF6eV0nOw0KK+eYjT4nW3VsY2Vyc10nOw0KK+eYnz4nW2VwaWRlbWljXSc7DQor55igPidbdGhpbl0nOw0KK+eYoT4nW3R1bW9yXSc7DQor55iiPidbc2Nhcl0nOw0KK+eYpD4nW3R1bW9yXSc7DQor55inPidbaW50ZXJtaXR0ZW50IGZldmVyXSc7DQor55iwPidbc2Nyb2Z1bGFdJzsNCivnmLQ+J1ttYWxhcmlhIHBlc3RpbGVudGlhbCB2YXBvcnNdJzsNCivnmLs+J1tmaXN0dWxhXSc7DQor55mCPidbYmUgaGVhbGVkXSc7DQor55mGPidbY29uc3VtcHRpb25dJzsNCivnmYc+J1tlcGlsZXBzeV0nOw0KK+eZiD4nW2Ficm9nYXRlXSc7DQor55mMPidbY2FuY2VyXSc7DQor55mSPidbZ2V0IHdlbGxdJzsNCivnmZY+J1tjcmF2aW5nXSc7DQor55mYPidbc29yZV0nOw0KK+eZnD4nW2VyeXRoZW1hXSc7DQor55mhPidbc2lsbHldJzsNCivnmaI+J1tpdGNoXSc7DQor55mnPidbc2Nyb2Z1bG91cyBsdW1wcyBvciBzd2VsbGluZ3NdJzsNCivnmag+J1txdWlja2x5XSc7DQor55mpPidbbGVwcm9zeV0nOw0KK+eZqj4nW3NwYXNtc10nOw0KK+eZrD4nW3Jpbmd3b3Jtc10nOw0KK+eZsD4nW2NhcmJ1bmNsZV0nOw0KK+eZsj4nW2NyYXp5XSc7DQor55m2PidbbGVnc10nOw0KK+eZuD4nW2xhc3Qgb2YgdGVuIGNlbGVzdGlhbCBzdGVtc10nOw0KK+eZuj4nW2lzc3VlXSc7DQor55m7PidbcmlzZV0nOw0KK+eZvD4nW2lzc3VlXSc7DQor55m9Pidbd2hpdGVdJzsNCivnmb4+J1tvbmUgaHVuZHJlZF0nOw0KK+eagD4nW2tlcm5lbF0nOw0KK+eagz4nW2NvdW50ZW5hbmNlXSc7DQor55qEPidbcG9zc2Vzc2l2ZV0nOw0KK+eahj4nW2FsbF0nOw0KK+eahz4nW3JveWFsXSc7DQor55qIPidbZm9sbG93XSc7DQor55qLPidbdGhlIGhpZ2ggbGFuZCBhbG9uZyBhIHJpdmVyXSc7DQor55qOPidbd2hpdGVdJzsNCivnmpA+J1t0aGUgaGlnaCBsYW5kIGFsb25nIGEgcml2ZXJdJzsNCivnmpM+J1ticmlnaHRdJzsNCivnmpY+J1thbmh1aSBwcm92aW5jZV0nOw0KK+eamT4nW3doaXRlXSc7DQor55qaPidbYnJpbGxpYW50IHdoaXRlXSc7DQor55quPidbc2tpbl0nOw0KK+easD4nW3BpbXBsZXNdJzsNCivnmrQ+J1tjaGFwcGVkXSc7DQor55q3PidbZHJ1bV0nOw0KK+eauD4nW2NyYWNrXSc7DQor55q5PidbY3JhY2tdJzsNCivnmro+J1t3cmlua2xlc10nOw0KK+eavz4nW3NoYWxsb3cgY29udGFpbmVyXSc7DQor55uCPidbYmFzaW5dJzsNCivnm4M+J1tnbGFzc10nOw0KK+ebhj4nW2Jhc2luXSc7DQor55uIPidbZmlsbF0nOw0KK+ebij4nW3Byb2ZpdF0nOw0KK+ebjT4nW3doYXQ/IHdoeSBub3Q/IGNvcnJlc3BvbmRdJzsNCivnm5I+J1tzbWFsbCBib3ggb3IgY2FzZV0nOw0KK+eblj4nW2NvdmVyXSc7DQor55uXPidbcm9iXSc7DQor55ubPidbYWJ1bmRhbnRdJzsNCivnm5w+J1tyb2JdJzsNCivnm54+J1tzbWFsbCBjdXAgb3IgY29udGFpbmVyXSc7DQor55ufPidbc3dlYXJdJzsNCivnm6E+J1tleGhhdXN0XSc7DQor55ujPidbc3VwZXJ2aXNlXSc7DQor55ukPidbdHJheV0nOw0KK+ebpT4nW3dhc2hdJzsNCivnm6c+J1tjb3R0YWdlXSc7DQor55uqPidbdG8gdG9zcyBhYm91dF0nOw0KK+ebrj4nW2V5ZV0nOw0KK+ebsj4nW2JsaW5kXSc7DQor55u0Pidbc3RyYWlnaHRdJzsNCivnm7g+J1ttdXR1YWxdJzsNCivnm7s+J1tnbGFyZV0nOw0KK+ebvj4nW3NoaWVsZF0nOw0KK+ecgT4nW3Byb3ZpbmNlXSc7DQor55yEPidbdG8gbG9vayBhc2thbmNlXSc7DQor55yHPidbYmxpbmQgaW4gb25lIGV5ZV0nOw0KK+eciD4nW2dsb2F0XSc7DQor55yJPidbZXllYnJvd3NdJzsNCivnnIs+J1tsb29rXSc7DQor55yMPidbY291bnR5XSc7DQor55ybPidbZGltXSc7DQorIyLnnJ4+J1tyZWFsXSciLA0KK+ecnz4nW3JlYWxdJzsNCivnnKA+J1tjbG9zZSBleWVzXSc7DQorIyLnnKQ+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivnnKU+J1tleWUgc29ja2V0c10nOw0KK+ecpj4nW2Nvcm5lciBvZiB0aGUgZXllc10nOw0KK+ecqT4nW2NvbmZ1c2VdJzsNCivnnLc+J1t0YWtlIGludGVyZXN0IGluXSc7DQor55y4PidbcHVwaWwgb2YgZXllXSc7DQor55y6PidbbG9vayBhdF0nOw0KK+ecvD4nW2V5ZV0nOw0KK+edgD4nW21ha2UgbW92ZV0nOw0KK+edhz4nW2xvb2sgYXRdJzsNCivnnZo+J1tjb3JuZXIgb2YgZXllXSc7DQor552bPidbZXllYmFsbF0nOw0KK+edoT4nW3NsZWVwXSc7DQor552jPidbc3VwZXJ2aXNlXSc7DQor552lPidbbG9vayBhc2thbmNlIGF0XSc7DQor552mPidbZnJpZW5kbHldJzsNCivnnag+J1tsb29rIGFza2FuY2UgYXRdJzsNCivnnas+J1tleWVsYXNoZXNdJzsNCivnnbk+J1tsb29rIGF0XSc7DQor552+PidbdGVzdGljbGVdJzsNCivnnb8+J1tzaHJld2RdJzsNCivnnos+J1tnbGFyZSB3aXRoIGFuZ2VyXSc7DQor556OPidbYmxpbmRdJzsNCivnnpE+J1tjbG9zZSBleWVzXSc7DQor556ePidbZGVjZWl2ZV0nOw0KK+eeoD4nW2xvb2sgYXRdJzsNCivnnqU+J1t0YWtlIGZsZWV0aW5nIGdsYW5jZSBhdF0nOw0KK+eerD4nW3dpbmtdJzsNCivnnq0+J1ticmlnaHRdJzsNCivnnrA+J1t3YXRjaF0nOw0KK+eesz4nW3B1cGlsIG9mIGV5ZV0nOw0KK+eetj4nW2RpbV0nOw0KKyMi5562PidbZGltXSciLA0KK+eeuz4nW2xvb2tdJzsNCivnnrw+J1tleWVsaWRdJzsNCivnnr0+J1tibGluZF0nOw0KK+eevz4nW3N1cm5hbWVdJzsNCivnn4c+J1tzdHVwaWRdJzsNCivnn40+J1tsb29rIGFib3V0IGluIGZpcmdodCBvciBhbGFybV0nOw0KK+eflz4nW3N0cmFpZ2h0XSc7DQor55+aPidbd2F0Y2ggY2FyZWZ1bGx5XSc7DQor55+bPidbc3BlYXJdJzsNCivnn5w+J1twaXR5XSc7DQor55+iPidbYXJyb3ddJzsNCivnn6M+J1twYXJ0aWNsZSBvZiBjb21wbGV0ZWQgYWN0aW9uXSc7DQor55+lPidba25vd10nOw0KK+efpz4nW211Y2ggbW9yZV0nOw0KK+efqT4nW2NhcnBlbnRlcicncyBzcXVhcmVdJzsNCivnn60+J1tzaG9ydF0nOw0KK+efrj4nW3Nob3J0XSc7DQor55+vPidbY29ycmVjdF0nOw0KK+efsz4nW3N0b25lXSc7DQor55+8Pidbc3RvbmUgYnJpZGdlXSc7DQor56CCPidbc2FuZF0nOw0KK+egjD4nW3N0b25lIHN0ZXBzXSc7DQor56CSPidbYXJzZW5pY10nOw0KK+eglD4nW2dyaW5kXSc7DQor56CVPidbYnJlYWtdJzsNCivnoKA+J1tyb2NreV0nOw0KK+egpT4nW3doZXRzdG9uZV0nOw0KK+egpj4nW3N0b2NrYWRlXSc7DQor56CnPidbYW52aWxdJzsNCivnoLI+J1tndW5dJzsNCivnoLQ+J1ticmVha10nOw0KK+eguj4nW3doZXRzdG9uZV0nOw0KK+egvz4nW21pbmVdJzsNCivnoYU+J1tzaWxpY29uXSc7DQor56GdPidbc2FsdHBldGVyXSc7DQor56GrPidbc3VsZnVyXSc7DQor56GsPidbaGFyZF0nOw0KK+ehrz4nW2lua3N0b25lXSc7DQorIyLnobI+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCisjIuehtD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+ehvD4nW2JvcmF4XSc7DQor56KBPidbY2hlc3NdJzsNCivnooY+J1thcnJvdy10aXBdJzsNCivnooc+J1thbmNob3JdJzsNCivnoow+J1tyb3VnaF0nOw0KK+eijT4nW29ic3RydWN0XSc7DQor56KOPidbYnJlYWtdJzsNCivnopE+J1tzdG9uZSB0YWJsZXRdJzsNCivnopM+J1twZXN0bGVdJzsNCisjIueilT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+eilz4nW2Jvd2xdJzsNCivnopo+J1tzdWJ1cmJdJzsNCivnoqM+J1tzdG9uZSB0YWJsZXRdJzsNCivnoqc+J1tqYWRlXSc7DQor56KpPidbZ3JlYXRdJzsNCivnoqo+J1tzdG9uZSBzbGFiIHVzZWQgZm9yIHdhc2hpbmcgY2xvdF0nOw0KK+eirz4nW2FnYXRlXSc7DQorIyLnorU+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivnoro+J1tzdXJlXSc7DQor56K8PidbbnVtYmVyXSc7DQor56K+Pidbcm9sbGVyXSc7DQor56OBPidbbWFnbmV0aWNdJzsNCivno4U+J1twb3VuZF0nOw0KKyMi56OGPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor56OKPidbcGlsZSBvZiByb2NrcyBvciBzdG9uZXNdJzsNCivno4s+J1twb2xpc2hdJzsNCivno5A+J1tsYXJnZSByb2NrXSc7DQor56ORPidbc3RvbmUgbWlsbF0nOw0KK+ejlD4nW2Rvd253YXJkIHN0cm9rZSBzbGFudGluZyByaWdoXSc7DQor56OaPidbdGlsZV0nOw0KK+ejpz4nW3NhbmQgYW5kIGdyYXZlbF0nOw0KK+ejqD4nW2dyaW5kXSc7DQor56OsPidbbXVzaWNhbCBpbnN0cnVtZW50XSc7DQor56OvPidbamV0dHldJzsNCivno7Q+J1tzdGVwcyBvbiBsZWRnZV0nOw0KK+ejvT4nW2JhcnJlbiBsYW5kXSc7DQor56SBPidbcmVlZl0nOw0KKyMi56SHPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor56SOPidbZm91bmRhdGlvbiBzdG9uZV0nOw0KKyMi56SOPidbZm91bmRhdGlvbiBzdG9uZV0nIiwNCisjIuekkj4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+ekmT4nW29ic3RydWN0XSc7DQor56SmPidbbWluZV0nOw0KK+ekqj4nW3doZXRzdG9uZV0nOw0KK+ekqz4nW2dyYXZlbF0nOw0KK+ekrD4nW2FsdW1dJzsNCivnpLo+J1tzaG93XSc7DQor56S8Pidbc29jaWFsIGN1c3RvbV0nOw0KK+ekvj4nW2dvZCBvZiB0aGUgc29pbCBhbmQgYWx0YXJzIHRvIGhpbV0nOw0KK+elgD4nW3RvIHNhY3JpZmljZV0nOw0KK+elgT4nW3ByYXldJzsNCivnpYc+J1tvbmx5XSc7DQor56WIPidbcHJheV0nOw0KK+eliT4nW2hhcHBpbmVzc10nOw0KK+elkD4nW2RpdmluZSBpbnRlcnZlbnRpb25dJzsNCivnpZM+J1tleG9yY2lzZV0nOw0KK+ellT4nW215c3RlcmlvdXNdJzsNCivnpZY+J1thbmNlc3Rvcl0nOw0KK+ellz4nW3Jlc3BlY3RdJzsNCivnpZo+J1t0aHJvbmVdJzsNCivnpZ0+J1twcmF5IGZvciBoYXBwaW5lc3Mgb3IgYmxlc3NpbmdzXSc7DQor56WePidbc3Bpcml0XSc7DQor56WfPidbZXZpbCBzcGlyaXRdJzsNCivnpaA+J1thbmNlc3RyYWwgdGVtcGxlXSc7DQor56WiPidbb25lJydzIGRlY2Vhc2VkIGZhdGhlcl0nOw0KK+elpT4nW2dvb2QgbHVja10nOw0KK+elqD4nW3NsaXAgb2YgcGFwZXIgb3IgYmFtYm9vXSc7DQor56WtPidbc2FjcmlmaWNlIHRvXSc7DQor56W3PidbcHJheV0nOw0KK+eluj4nW2dvb2QgbHVja10nOw0KK+elvz4nW2JsZXNzaW5nXSc7DQor56aAPidbcmVwb3J0IHRvXSc7DQor56aBPidbcmVzdHJpY3RdJzsNCivnpoQ+J1tibGVzc2luZ10nOw0KK+emhT4nW21lZGl0YXRpb25dJzsNCivnpoo+J1tzZW1pLWFubnVhbCBjZXJlbW9ueSBvZiBwdXJpZmljYV0nOw0KK+emjT4nW21pc2ZvcnR1bmVdJzsNCivnpo4+J1tsdWNreV0nOw0KK+emjz4nW2hhcHBpbmVzc10nOw0KK+emnT4nW1tub3QgZm91bmQgaW4gZGljdGlvbmFyeV1dJzsNCivnpqY+J1tkZWZlbmRdJzsNCivnpqc+J1toYXBwaW5lc3NdJzsNCivnpqo+J1ttZWRpdGF0aW9uXSc7DQor56auPidbc29jaWFsIGN1c3RvbV0nOw0KK+emsD4nW29uZScncyBkZWNlYXNlZCBmYXRoZXJdJzsNCivnprM+J1twcmF5IG9yIHNhY3JpZmljZV0nOw0KK+emuT4nW2xlZ2VuZGFyeSBoc2lhIGR5bmFzdHkgZm91bmRlcl0nOw0KK+emuj4nW2Rpc3RyaWN0XSc7DQor56a9PidbYmlyZHNdJzsNCivnpr4+J1tncmFpbiBzdGlsbCBvbiBzdGFsa10nOw0KK+emvz4nW2JhbGRdJzsNCivnp4A+J1tlYXIgb2YgZ3JhaW5dJzsNCivnp4E+J1twcml2YXRlXSc7DQor56eJPidbZ3Jhc3BdJzsNCivnp4s+J1thdXR1bW5dJzsNCivnp5E+J1tzZWN0aW9uXSc7DQor56eSPidbYmVhcmQgb2YgZ3JhaW4gb3IgY29ybl0nOw0KK+enlT4nW2VtcHR5IGdyYWluIG9yIHJpY2UgaHVza10nOw0KK+enmD4nW3NlY3JldF0nOw0KK+ennz4nW3JlbnRdJzsNCisjIuenoT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+enoz4nW2ZvZGRlcl0nOw0KK+enpD4nW2JhbGFuY2VdJzsNCivnp6Y+J1tmZXVkYWwgc3RhdGUgb2YgcWluXSc7DQor56enPidbcmljZSBzZWVkbGluZ3NdJzsNCivnp6k+J1tvcmRlcl0nOw0KK+enrD4nW2JsYWNrIG1pbGxldF0nOw0KK+ensD4nW2NhbGxdJzsNCivnp7s+J1tjaGFuZ2UgcGxhY2VdJzsNCivnqIA+J1tyYXJlXSc7DQor56iIPidbc3RhbGsgb2YgZ3JhaW5dJzsNCivnqIs+J1tqb3VybmV5XSc7DQor56iNPidbbGl0dGxlXSc7DQor56iOPidbdGF4ZXNdJzsNCivnqJQ+J1tyaXBlIGdyYWluXSc7DQor56iXPidbZGFybmVsc10nOw0KKyMi56iYPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor56iZPidbZ3JhaW4gcmVhZHkgZm9yIGdyaW5kaW5nXSc7DQor56iaPidbeW91bmddJzsNCivnqJw+J1tjb3JuZXJdJzsNCivnqJ8+J1tyZXBvcnQgdG9dJzsNCivnqKA+J1tkZW5zZV0nOw0KK+eorj4nW3NlZWRdJzsNCivnqLE+J1tjYWxsXSc7DQor56iyPidbcmljZSBncm93aW5nIGluIGZpZWxkXSc7DQor56i3PidbZ29kIG9mIGNlcmVhbHNdJzsNCivnqLs+J1tyaWNlIGdyb3dpbmcgaW4gZmllbGRdJzsNCivnqLw+J1tzb3cgZ3JhaW5dJzsNCivnqL0+J1tleGFtaW5lXSc7DQor56i+PidbZHJhZnRdJzsNCivnqL8+J1tkcmFmdF0nOw0KK+epgD4nW2Nvcm5dJzsNCivnqYI+J1tlYXIgb2YgZ3JhaW5dJzsNCisjIuepgz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+ephj4nW21hamVzdGljXSc7DQor56mJPidbeW91bmcgZ3JhaW5dJzsNCivnqY0+J1thY2N1bXVsYXRlXSc7DQor56mOPidbcmljZSB0YXNzZWxdJzsNCisjIuepjj4nW3JpY2UgdGFzc2VsXSciLA0KK+epkD4nW2ZhbGxdJzsNCivnqZc+J1tlYXIgb2YgZ3JhaW5dJzsNCivnqaE+J1tmYXJtXSc7DQor56miPidbZGlydHldJzsNCivnqaM+J1tzdGFsa3Mgb2YgZ3JhaW5dJzsNCivnqak+J1tzdGFibGVdJzsNCivnqas+J1toYXJ2ZXN0XSc7DQor56mwPidbc3RhbGtzIG9mIGdyYWluXSc7DQor56m0PidbY2F2ZV0nOw0KK+eptj4nW2V4YW1pbmVdJzsNCivnqbk+J1toaWdoIGFuZCB2YXN0XSc7DQor56m6PidbZW1wdHldJzsNCivnqb0+J1tob2xlXSc7DQor56m/PidbcGVuZXRyYXRlXSc7DQor56qBPidbc3VkZGVubHldJzsNCivnqoM+J1tzZWNyZXRseV0nOw0KK+eqhD4nW25hcnJvd10nOw0KK+eqiD4nW29ic2N1cmVdJzsNCivnqpI+J1tzdG9wIHVwXSc7DQor56qTPidbd2luZG93XSc7DQor56qVPidbc2xlbmRlcl0nOw0KK+eqlj4nW3BpdF0nOw0KK+eqlz4nW3dpbmRvd10nOw0KK+eqmD4nW2VtYnJhc3Nhc3NlZF0nOw0KK+eqnz4nW2hvbGVdJzsNCivnqqk+J1tuZXN0XSc7DQor56qqPidbaG9sbG93XSc7DQor56quPidbcG9vcl0nOw0KK+eqrz4nW2tpbG5dJzsNCivnqrA+J1traWxuXSc7DQor56q2PidbcG9vcl0nOw0KK+equj4nW3BlZXBdJzsNCivnqr8+J1ttaW5lIHNoYWZ0XSc7DQor56uDPidbZnVybmFjZV0nOw0KK+erhD4nW3J1biBhd2F5XSc7DQor56uFPidbaG9sZV0nOw0KK+erhz4nW3N1cm5hbWVdJzsNCivnq4g+J1tmdXJuYWNlXSc7DQor56uKPidbc2VjcmV0bHldJzsNCivnq4s+J1tzdGFuZF0nOw0KK+erjT4nW2RlY2FsaXRlcl0nOw0KK+erjz4nW2tpbG9saXRlcl0nOw0KK+erkj4nW3N0cmFuZ2VdJzsNCivnq5M+J1ttaWxsaWxpdGVyXSc7DQor56uVPidbZGVjaWxpdGVyXSc7DQor56uZPidbc3RhbmQgdXBdJzsNCivnq5o+J1tzdGFuZCBhbmQgd2FpdCBmb3IgbG9uZyB0aW1lXSc7DQor56ucPidbZHJhZ29uXSc7DQor56udPidbY29tYmluZV0nOw0KK+ernz4nW2ZpbmFsbHldJzsNCivnq6A+J1tjb21wb3NpdGlvbl0nOw0KK+eroT4nW2hlY3RvbGl0ZXJdJzsNCivnq6I+J1t3YWl0IGZvcl0nOw0KK+eroz4nW3Rlcm1pbmF0ZV0nOw0KK+erpT4nW2NoaWxkXSc7DQor56umPidbcmV2ZXJlXSc7DQor56uqPidbcGVycGVuZGljdWxhcl0nOw0KK+errT4nW3B1dCBmb3J0aCBncmVhdCBlZmZvcnRdJzsNCivnq68+J1tlbmRdJzsNCivnq7A+J1tjZW50aWxpdGVyXSc7DQor56u2PidbY29udGVuZF0nOw0KK+eruD4nW2NvbnRlbmRdJzsNCivnq7k+J1tiYW1ib29dJzsNCivnq7o+J1tpbmRpYV0nOw0KK+ervz4nW2JhbWJvbyBwb2xlXSc7DQorIyLnrII+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivnrIQ+J1toYWlycGluXSc7DQor56yGPidbYmFtYm9vIGZlbmNlXSc7DQor56yIPidbYmFtYm9vIGJveCB1c2VkIGNhcnJ5IGJvb2tzXSc7DQor56yKPidbbGFkbGVdJzsNCivnrIs+J1tiYW1ib28gc2hvb3RzXSc7DQor56yPPidbdGFibGV0IGhlbGQgYnkgc29tZW9uZSBoYXZpbmcgYXVdJzsNCivnrJE+J1tzbWlsZV0nOw0KKyMi56yYPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor56yZPidbc21hbGwgZ291cmQtc2hhcGVkIG11c2ljYWwgaW5zdHJ1bWVudF0nOw0KK+esmz4nW2JhbWJvbyBmbHV0ZV0nOw0KK+esnj4nW2JhbWJvbyByb2QgdXNlZCBmb3IgYmVhdGluZ3NdJzsNCivnrKA+J1tiYW1ib28gaGF0XSc7DQor56ylPidbYSBoYW1wZXJdJzsNCivnrKY+J1tpLmQuIHRhZ10nOw0KK+esqD4nW2Zvb2xpc2hdJzsNCivnrKw+J1tzZXF1ZW5jZV0nOw0KK+essz4nW2EgcmVlZCBsZWFmIHdoaXN0bGVdJzsNCivnrLU+J1thIGJhbWJvbyBmb3JtXSc7DQorIyLnrLY+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivnrLk+J1tzbWFsbCBiYW1ib29dJzsNCivnrYU+J1tiYW1ib28gYnJ1c2hdJzsNCivnrYY+J1t3cml0aW5nIGJydXNoXSc7DQor562IPidbYXJyb3cgZW5kXSc7DQor562JPidbcmFua10nOw0KK+etiz4nW211c2NsZXNdJzsNCivnrYw+J1tiYW1ib28gZmlzaCB0cmFwXSc7DQor562NPidbYmFtYm9vIHNob290XSc7DQor562PPidbcmFmdF0nOw0KK+etkD4nW2JhbWJvbyBiYXNrZXQgb3IgY2hlc3RdJzsNCivnrZE+J1thbmNpZW50IGx1dGVdJzsNCivnrZI+J1t0aGljayBwaWVjZSBvZiBiYW1ib29dJzsNCivnrZQ+J1thbnN3ZXJdJzsNCivnrZY+J1tzY2hlbWVdJzsNCivnrZ0+J1tzdHJpbmdlZCBtdXNpY2FsIGluc3RydW1lbnRdJzsNCivnraU+J1tyb3VuZC1zaGFwZWQgYmFtYm9vIGJhc2tldCBmb3JdJzsNCivnrac+J1tiYW1ib28gd2F0ZXIgcGlwZV0nOw0KK+etrD4nW3JlZWQgb2YgYSBsb29tXSc7DQor562uPidbZGl2aW5hdGlvbiB3aXRoIHN0YWxrcyBvZiBwbGFudHNdJzsNCivnrbA+J1tjYWJsZV0nOw0KK+etsT4nW2R3YXJmIGJhbWJvb10nOw0KK+ettD4nW3R5cGUgb2YgZ3Jhc3MgdXNlZCBpbiBkaXZpbmF0aW9uXSc7DQor5621PidbYmFtYm9vIG1hdF0nOw0KK+etuj4nW2JhbWJvbyBiYXNrZXQgb3IgY2hlc3RdJzsNCivnroY+J1tmaW5lLXRvb3RoZWQgY29tYl0nOw0KK+euhz4nW251bWVyYXJ5IGFkanVuY3RdJzsNCivnros+J1tub3RlXSc7DQor566NPidbaG9vcF0nOw0KK+eujz4nW3N0cmluZ2VkIG11c2ljYWwgaW5zdHJ1bWVudF0nOw0KK+eukj4nW2Jyb29tXSc7DQor566UPidbcmVlZCBzY3JlZW5dJzsNCivnrpU+J1tzaWV2ZV0nOw0KK+eulz4nW2NvdW50XSc7DQor566YPidbZmluZSBiYW1ib29dJzsNCivnrpk+J1txdWl2ZXJdJzsNCivnrpo+J1ticmllZiBub3RlXSc7DQor566cPidbYW5jaWVudCBzdHJpbmcgbXVzaWMgaW5zdHJ1bWVudF0nOw0KK+eunT4nW3R3ZWV6ZXJzXSc7DQorIyLnrp8+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivnrqE+J1twaXBlXSc7DQor566qPidbc21hbGwgYmFtYm9vIGJhc2tldCBmb3IgaG9sZGluZ10nOw0KK+eurT4nW2Fycm93XSc7DQor566xPidbY2FzZV0nOw0KK+eutD4nW25lZWRsZV0nOw0KK+euuD4nW2Nob3BzdGlja3NdJzsNCivnr4A+J1trbm90XSc7DQor56+BPidbYmFtYm9vIGdyb3ZlXSc7DQor56+EPidbcGF0dGVybl0nOw0KK+evhj4nW3NlYWwgc2NyaXB0XSc7DQor56+HPidbY2hhcHRlcl0nOw0KK+eviT4nW2J1aWxkXSc7DQor56+LPidbcmF0dG9uIGJveF0nOw0KK+evjD4nW2FuY2llbnQgbXVzaWMgaW5zdHJ1bWVudF0nOw0KK+evjz4nW2lubGF5XSc7DQor56+dPidbYmFtYm9vIGJhc2tldF0nOw0KK+evoD4nW2R3YXJmIGJhbWJvb10nOw0KK+evpD4nW2RlZXBdJzsNCivnr6U+J1tidWxnbGVdJzsNCivnr6Y+J1tmaW5lLXRvb3RoZWQgY29tYl0nOw0KK+evqT4nW3NpZXZlXSc7DQor56+tPidbY2FnZV0nOw0KK+evsz4nW3dpY2tlcl0nOw0KKyMi56+2PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor56+3PidbYXduaW5nXSc7DQor57CAPidbYmVkIG1hdF0nOw0KK+ewhz4nW3N3YXJtXSc7DQor57CNPidbYmFtYm9vIGJhc2tldF0nOw0KK+ewkT4nW2EgY29pciByYWluY29hdF0nOw0KK+ewkj4nW3VzdXJwXSc7DQorIyLnsJM+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivnsJQ+J1thIGNvaXIgcmFpbmNvYXRdJzsNCisjIuewlz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+ewnz4nW2JhbWJvbyBtYXRdJzsNCivnsKE+J1tzaW1wbGVdJzsNCivnsKM+J1tiYW1ib28gYmFza2V0IGZvciBjYXJyeWluZyBlYXJ0aF0nOw0KK+ewpz4nW3JlZWQgb2Ygd29vZHdpbmQgaW5zdHJ1bWVudF0nOw0KK+ewqj4nW2hhaXJwaW5dJzsNCivnsKs+J1ttdXNpY2FsIGluc3RydW1lbnQgbGlrZSBwYW4tcGlwZXNdJzsNCivnsLc+J1tlYXZlcyBvZiBob3VzZV0nOw0KK+ewuD4nW3dpbm5vd2VyXSc7DQor57C9Pidbc2lnbl0nOw0KK+ewvj4nW2EgYmxpbmRdJzsNCivnsL8+J1tyZWdpc3Rlcl0nOw0KK+exgD4nW3JlY2l0ZV0nOw0KK+exgz4nW2Jhc2tldF0nOw0KK+exjD4nW2NoaXBdJzsNCivnsY0+J1tyZWNvcmRdJzsNCivnsY8+J1tmbGFnXSc7DQor57GQPidbY2xpbWJpbmcgcGxhbnRzXSc7DQor57GUPidbYmFtYm9vIGJhc2tldF0nOw0KK+exlj4nW3RhbGx5XSc7DQor57GYPidbY2xpbWJpbmcgcGxhbnRzXSc7DQor57GfPidbYmFtYm9vIGZsdXRlXSc7DQor57GgPidbY2FnZV0nOw0KK+expD4nW3RhbGx5XSc7DQor57GlPidba2V5XSc7DQor57GsPidbYmFtYm9vIG9yIHdvb2RlbiBmZW5jZV0nOw0KK+exsz4nW2h1bGxlZCBvciBodXNrZWQgdW5jb29rZWQgcmljZV0nOw0KK+extT4nW2RtXSc7DQor57G+PidbdW5odWxsZWQgcmljZV0nOw0KK+eygT4nW2ttXSc7DQor57KCPidbc3VybmFtZV0nOw0KK+eygz4nW2VtcHR5IGh1c2tzIG9mIGdyYWluXSc7DQor57KJPidbcG93ZGVyXSc7DQor57KLPidbcHVyZV0nOw0KK+eyjT4nW21tXSc7DQorIyLnspA+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivnspI+J1tncmFpbl0nOw0KK+eylT4nW2xlZXNdJzsNCivnspc+J1tyb3VnaF0nOw0KK+eymD4nW3Zpc2NvdXNdJzsNCivnsps+J1twYXkgcmVzcGVjdHNdJzsNCivnsp8+J1t1bmh1c2tlZCBtaWxsZXRdJzsNCisjIueyoT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+eyoj4nW2dyYWluIG9mZmVyZWQgaW4gcml0dWFsIHNhY3JpZmljXSc7DQor57KkPidbR3Vhbmdkb25nIGFuZCBHdWFuZ3hpIHByb3ZpbmNlc10nOw0KK+eypT4nW3JpY2UgZ3J1ZWxdJzsNCivnsqc+J1t0b2lsZXRdJzsNCivnsqg+J1tobV0nOw0KKyMi57KrPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQorIyLnsq0+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivnsq4+J1tmb29kXSc7DQor57KxPidbYmV0dGVyIHZhcmlldGllcyBvZiBtaWxsZXRdJzsNCivnsrI+J1twb2xpc2hdJzsNCivnsrM+J1tub24tZ2x1dGlub3VzIHJpY2VdJzsNCivnsrk+J1twdXJlXSc7DQor57K9PidbZHVtcGxpbmcgbWFkZSBvZiBnbHV0aW5vdXMgcmljZV0nOw0KK+eyvj4nW2Vzc2VuY2VdJzsNCisjIuezgD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KKyMi57OCPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor57OFPidbYmxlbmRdJzsNCivns4o+J1twYXN0ZV0nOw0KK+ezjj4nW21tXSc7DQor57OSPidbZm9vZCBmb3IgYSBqb3VybmV5XSc7DQor57OWPidbc3VnYXJdJzsNCisjIuezmD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+eznD4nW3JpY2UgZ3J1ZWxdJzsNCivns54+J1ttYW51cmVdJzsNCivns58+J1tzZWRpbWVudF0nOw0KK+ezoD4nW2NoYWZmXSc7DQor57OiPidbcmljZSBzbmFja3NdJzsNCivns6c+J1tmb29kXSc7DQor57OvPidbZ2x1dGlub3VzIHJpY2VdJzsNCivns7I+J1t1bnBvbGlzaGVkIHJpY2VdJzsNCivns7Q+J1twdXJjaGFzZSBncmFpbnNdJzsNCivns7Y+J1tzZWxsIGdyYWluc10nOw0KK+ezuD4nW3NpbGtdJzsNCivns7o+J1t0byBjb2xsYWJvcmF0ZV0nOw0KK+ezuz4nW3N5c3RlbV0nOw0KK+ezvj4nW2ludmVzdGlnYXRlXSc7DQor57SAPidbcmVjb3JkXSc7DQor57SCPidbbmFtZSBvZiBhbiBlbXBlcm9yXSc7DQor57SEPidbdHJlYXR5XSc7DQor57SFPidbcmVkXSc7DQor57SGPidbYmVuZF0nOw0KK+e0ij4nW2NvbmZ1c2VkXSc7DQor57SLPidbbGluZV0nOw0KK+e0jT4nW2FkbWl0XSc7DQor57SQPidba25vdF0nOw0KK+e0lD4nW3B1cmVdJzsNCivntJU+J1tzcG9pbGVkIHNpbGtdJzsNCivntJc+J1tnYXV6ZV0nOw0KK+e0mD4nW3N0cmluZ10nOw0KK+e0mT4nW3BhcGVyXSc7DQor57SaPidbbGV2ZWxdJzsNCivntJs+J1tpbiBkaXNvcmRlcl0nOw0KK+e0nD4nW2NvbmZ1c2VkXSc7DQor57SgPidbd2hpdGUgKHNpbGspXSc7DQor57ShPidbc3Bpbl0nOw0KK+e0oj4nW2xhcmdlIHJvcGVdJzsNCivntKs+J1twdXJwbGVdJzsNCivntKw+J1traW5kIG9mIHRoaW4gc2lsa10nOw0KK+e0rj4nW3RpZV0nOw0KK+e0rz4nW3RpcmVkXSc7DQor57SwPidbZmluZV0nOw0KK+e0sj4nW2JyaWRsZV0nOw0KK+e0sz4nW2dpcmRsZV0nOw0KK+e0tT4nW3JhbWllXSc7DQor57S5PidbY29udGludWVdJzsNCivntLo+J1tkYXJrIGJsdWUgY29sb3JdJzsNCivntL8+J1tjaGVhdF0nOw0KK+e1gj4nW2VuZF0nOw0KK+e1gz4nW3N0cmluZyBvbiBtdXNpY2FsIGluc3RydW1lbnRdJzsNCivntYQ+J1tjbGFzc10nOw0KK+e1hT4nW3VubGluZWQgZ2FybWVudF0nOw0KK+e1hj4nW2xvb3BdJzsNCisjIue1iz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+e1jD4nW2NsYXNzaWMgd29ya3NdJzsNCivntY4+J1tiYXN0ZV0nOw0KK+e1jz4nW3JvcGVdJzsNCivntZA+J1trbm90XSc7DQor57WWPidbZmluZSBzaWxrc10nOw0KK+e1mz4nW3NpbGsgYnJhaWRdJzsNCivntZ4+J1t0d2lzdF0nOw0KK+e1oT4nW2VubWVzaF0nOw0KK+e1oj4nW3ZhcmllZ2F0ZWRdJzsNCivntaM+J1t0byBiYXN0ZSBmb3Igc2V3aW5nXSc7DQor57WmPidbZ2l2ZV0nOw0KK+e1qD4nW3NpbGtdJzsNCivnta4+J1t3YXN0ZSBjb3R0b25dJzsNCivntbE+J1tnb3Zlcm5dJzsNCivntbI+J1tzaWxrXSc7DQor57WzPidbZGVlcCByZWRdJzsNCivntbU+J1tkcmF3XSc7DQor57W2PidbY3V0XSc7DQor57W5Pidba2luZCBvZiB0aGljayBzdGlmZiBzaWxrXSc7DQorIyLntb0+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivntok+J1tlbWJyb2lkZXJdJzsNCivnto8+J1tzb290aGVdJzsNCivntpM+J1tjbGFzc2ljIHdvcmtzXSc7DQor57aZPidbY29udGludWVdJzsNCivntpo+J1tjb250aW51ZV0nOw0KKyMi57abPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor57acPidbYXJyYW5nZSB0aHJlYWRzIGZvciB3ZWF2aW5nXSc7DQorIyLntp8+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivntqI+J1tzaWxrIGNsb3RoXSc7DQor57ajPidbYWZmZWN0aW9uYXRlXSc7DQor57arPidbbGluZV0nOw0KK+e2rD4nW3NpbGsgcmliYm9uIGF0dGFjaGVkIGFzIGEgc2VhbF0nOw0KK+e2rT4nW21haW50YWluXSc7DQor57auPidbZW1icm9pZGVyZWQgYmFubmVyXSc7DQor57avPidbYnJhaWRdJzsNCivntrA+J1t0byBzdHJpbmcgdG9nZXRoZXJdJzsNCivntrE+J1toZWF2eSByb3BlXSc7DQor57ayPidbbmV0XSc7DQor57a0PidbcGF0Y2ggdG9nZXRoZXJdJzsNCivntrU+J1t2YXJpY29sb3JlZCBzaWxrXSc7DQor57a4PidbZ3JlZW4gc2lsayB0aHJlYWQgb3IgdGFzc2VsXSc7DQor57a6PidbZmluZSB0aGluIHNpbGtdJzsNCivntrs+J1tyaXBwZWQgc2VhbV0nOw0KK+e2vT4nW2dyYWNlZnVsXSc7DQor57a+PidbdGhpbiBzaWxrXSc7DQor57a/PidbY290dG9uIHdhZF0nOw0KK+e3hz4nW2JsYWNrIHNpbGtdJzsNCivnt4o+J1t0ZW5zZV0nOw0KK+e3iz4nW3NjYXJsZXRdJzsNCivnt48+J1tjb2xsZWN0XSc7DQor57eRPidbZ3JlZW5dJzsNCivnt5I+J1tlbmQgb2YgdGhyZWFkXSc7DQorIyLnt5U+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivnt5g+J1tzZWFsXSc7DQor57eaPidbdGhyZWFkXSc7DQor57ecPidbY290dG9uIHdhZF0nOw0KK+e3nT4nW3RvIHNldyBpbiBjbG9zZSBzdGl0Y2hlc10nOw0KK+e3nj4nW3NhdGluXSc7DQor57egPidbdGllXSc7DQor57ehPidbZmlzaGluZy1saW5lXSc7DQor57ekPidbY29yZF0nOw0KK+e3qD4nW2tuaXRdJzsNCivnt6k+J1tzbG93XSc7DQor57esPidbZGlzdGFudF0nOw0KK+e3rz4nW3dvb2ZdJzsNCivnt7I+J1tpbmRpc3RpbmN0XSc7DQor57e0PidbcHJhY3RpY2VdJzsNCivnt7s+J1tkZWxpY2F0ZV0nOw0KK+e4gT4nW2hlbV0nOw0KK+e4hD4nW3JvcGVdJzsNCisjIue4hD4nW3JvcGVdJyIsDQor57iJPidbcmVkIHNpbGtdJzsNCivnuIo+J1toYW5nXSc7DQor57iLPidbY2xpbWQgZG93biByb3BlXSc7DQorIyLnuJE+J1tmaW5lIHNpbGtdJyIsDQor57ibPidbdG8gdGllXSc7DQor57iePidbd2hpdGUgcmF3IHNpbGtdJzsNCivnuJ8+J1tkZWNvcmF0aXZlXSc7DQor57ihPidbbWF0dGVyXSc7DQor57iiPidbYmluZF0nOw0KK+e4oz4nW2NvdW50eV0nOw0KK+e4pj4nW2luZHVsZ2UgaW5dJzsNCivnuKs+J1tzZXddJzsNCivnuK4+J1tjb250cmFjdF0nOw0KK+e4sT4nW2luZHVsZ2UgaW5dJzsNCivnuLI+J1tjaGFpbiBvciByb3BlIHVzZWQgYmluZCBjcmltaW5hbF0nOw0KK+e4tT4nW3BsYWluIHNpbGtdJzsNCivnuLc+J1t0aHJlYWRdJzsNCivnuLk+J1tsaWdodCBibHVlIHNpbGtdJzsNCisjIue4uj4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+e4uz4nW2hhbHRlciBmb3Igb3hdJzsNCivnuL0+J1tjb2xsZWN0XSc7DQor57i+Pidbc3Bpbl0nOw0KK+e5gT4nW2NvbXBsaWNhdGVkXSc7DQor57mDPidbYmluZF0nOw0KK+e5hj4nW3dpbmQgYXJvdW5kXSc7DQor57mKPidbZmluZV0nOw0KK+e5iz4nW2F0dGFjaF0nOw0KK+e5jT4nW2VtYnJvaWRlcl0nOw0KK+e5lD4nW3dlYXZlXSc7DQor57mVPidbcmVwYWlyXSc7DQor57mWPidbdW1icmVsbGFdJzsNCivnuZk+J1tpbnRlcnByZXRdJzsNCivnuZo+J1t3aW5kIHJvdW5kXSc7DQorIyLnuZ0+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivnuZ4+J1tlbnR3aW5lXSc7DQor57mmPidbc3RyaW5nIG9mIGNvcHBlciBjb2luc10nOw0KKyMi57mnPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor57mpPidbcm9wZV0nOw0KK+e5qj4nW2RyYXddJzsNCivnua0+J1tjb2Nvb25dJzsNCivnubA+J1t0byByZWVsIHNpbGsgZnJvbSBjb2Nvb25zXSc7DQor57m5PidbdW5yYXZlbCBvciB1bnJlZWwgc2lsa10nOw0KK+e5uz4nW2ZpbmUgc2lsayBndWF6ZV0nOw0KK+e5vD4nW2NvbnRpbnVlXSc7DQor57m9PidbZmxvdXJpc2hpbmddJzsNCisjIue5vz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+e6gj4nW2VkaXRdJzsNCisjIue6gz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+e6iD4nW3BhdHRlcm5lZCBzaWxrXSc7DQorIyLnuok+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivnuow+J1tjb250aW51ZV0nOw0KK+e6jj4nW2ZpbmVdJzsNCivnuo8+J1t3cmFwXSc7DQorIyLnupA+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivnupI+J1t3cmFwXSc7DQor57qTPidbY2hpbiBzdHJhcF0nOw0KK+e6lD4nW3RhbGVudF0nOw0KK+e6lj4nW2ZpbmVdJzsNCivnups+J1thIGJhbm5lcl0nOw0KK+e6nD4nW2hhd3Nlcl0nOw0KK+e8tj4nW2VhcnRoZW4gY3JvY2sgb3IgamFyXSc7DQor57y4PidbZWFydGhlbiBqdWddJzsNCivnvLo+J1tiZSBzaG9ydCBvZl0nOw0KK+e9hT4nW2NyYWNrXSc7DQor572MPidbbG9uZyBuZWNrZWQgamFyIG9yIGJvdHRsZV0nOw0KK+e9jT4nW2xhcmdlIGVhcnRoZW53YXJlIHdpbmUgamFyXSc7DQor572OPidbYW4gZWFydGhlbndhcmUgamFyXSc7DQor572QPidbamFyXSc7DQor572RPidbbmV0XSc7DQor572UPidbbmV0XSc7DQor572VPidbcmFyZV0nOw0KK+e9mD4nW3NjcmVlbiB1c2VkIGluIGFuY2llbnQgdGltZXNdJzsNCivnvZ8+J1tuZXRdJzsNCivnvaA+J1thbmltYWwgdHJhcF0nOw0KKyMi572nPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor572oPidbbWVkaWNhbCBjb21wcmVzc10nOw0KK+e9qT4nW2Jhc2tldCBmb3IgY2F0Y2hpbmcgZmlzaF0nOw0KK+e9qj4nW2NyaW1lXSc7DQor572rPidbaGluZGVyXSc7DQor572uPidbcGxhY2VdJzsNCivnvbA+J1twZW5hbHR5XSc7DQor572yPidbcHVibGljIG9mZmljZV0nOw0KK+e9tT4nW2FjY3VzZV0nOw0KK+e9tz4nW2NlYXNlXSc7DQor5724PidbcGVuYWx0eV0nOw0KK+e9uT4nW3NvcnJvd10nOw0KKyMi576CPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor576DPidbY292ZXItY2xvdGhdJzsNCivnvoU+J1tuZXQgZm9yIGNhdGNoaW5nIGJpcmRzXSc7DQor576GPidbYnJvd24gYmVhcl0nOw0KK+e+hz4nW2lubl0nOw0KK+e+iD4nW2hhbHRlcl0nOw0KK+e+ij4nW3NoZWVwXSc7DQor576MPidbcWlhbmcgbmF0aW9uYWxpdHldJzsNCivnvo4+J1tiZWF1dGlmdWxdJzsNCivnvpQ+J1tsYW1iXSc7DQor576aPidbc3BlY2llcyBvZiBhbnRlbG9wZV0nOw0KK+e+nT4nW3JhbV0nOw0KK+e+nj4nW2Rpc2dyYWNlXSc7DQor576jPidbZ3JvdXBdJzsNCivnvqQ+J1tncm91cF0nOw0KK+e+qD4nW2VudnldJzsNCivnvqk+J1tyaWdodCBjb25kdWN0XSc7DQor576uPidbc291cF0nOw0KK+e+rz4nW3dldGhlcl0nOw0KK+e+sj4nW2FuY2llbnQgZW1wZXJvcl0nOw0KK+e+tj4nW3Jhbmsgb2Rvcl0nOw0KK+e+uD4nW3dlYWtdJzsNCivnvrk+J1tzb3VwXSc7DQor5769PidbZmVhdGhlcl0nOw0KK+e/gT4nW29sZCBtYW5dJzsNCivnv4U+J1t3aW5nc10nOw0KK+e/hj4nW2NvbG9yIGdyZWVuXSc7DQor57+KPidbZmx5aW5nXSc7DQor57+MPidbYnJpZ2h0XSc7DQor57+SPidbcHJhY3RpY2VdJzsNCivnv5Q+J1tzb2FyXSc7DQor57+VPidbYWdyZWVdJzsNCivnv6A+J1tjb2xvciBncmVlbl0nOw0KK+e/oT4nW2tpbmdmaXNoZXJdJzsNCivnv6Y+J1tzY2lzc29yc10nOw0KK+e/qT4nW2ZseV0nOw0KK+e/qz4nW2NhcmVsZXNzXSc7DQor57+wPidbd3JpdGluZyBicnVzaF0nOw0KK+e/sz4nW3NoYWRlXSc7DQor57+5PidbdHVybiB1cF0nOw0KK+e/uz4nW2ZsaXAgb3Zlcl0nOw0KK+e/vD4nW3dpbmdzXSc7DQor6ICAPidbc2hpbmVdJzsNCivogIE+J1tvbGRdJzsNCivogIM+J1tleGFtaW5lXSc7DQor6ICEPidbZWxkZXJseSBwZXJzb25dJzsNCivogIU+J1t0aGF0IHdoaWNoXSc7DQor6ICGPidbbWFuIG9mIHNpeHR5XSc7DQor6ICLPidbYWdlZF0nOw0KK+iAjD4nW2FuZF0nOw0KK+iAkD4nW2VuZHVyZV0nOw0KK+iAkj4nW2hhbmRsZSBvZiBwbG93XSc7DQor6ICVPidbcGxvd10nOw0KK+iAlz4nW2NvbnN1bWVdJzsNCivogJg+J1t3ZWVkXSc7DQor6ICZPidbcmFrZV0nOw0KK+iAnD4nW3NwYWRlLXNoYXBlZCB0b29sXSc7DQor6IChPidbaG9lXSc7DQor6ICoPidbaG9lXSc7DQor6ICzPidbZWFyXSc7DQor6IC2PidbdXNlZCBpbiB0cmFuc2xpdGVyYXRpb25dJzsNCivogLs+J1tzaGFtZV0nOw0KK+iAvT4nW2luZHVsZ2UgaW5dJzsNCivogL8+J1ticmlnaHRdJzsNCivogYY+J1tsaXN0ZW5dJzsNCivogYo+J1tzb21ld2hhdF0nOw0KK+iBkj4nW2NsYW1vcl0nOw0KK+iBlj4nW2hvbHldJzsNCivogZg+J1tlbmdhZ2VdJzsNCivogZo+J1thc3NlbWJsZV0nOw0KK+iBnj4nW2hlYXJdJzsNCivogZ8+J1tzb24taW4tbGF3XSc7DQor6IGhPidbaW50ZWxsaWdlbnRdJzsNCisjIuiBoj4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+iBqD4nW2Nvbm5lY3RdJzsNCivoga8+J1tjb25uZWN0XSc7DQor6IGwPidbaW50ZWxsaWdlbnRdJzsNCivogbI+J1tzb3VuZF0nOw0KK+iBsz4nW3VyZ2Ugb25dJzsNCivogbQ+J1toZWFyXSc7DQor6IG2Pidbd2hpc3Blcl0nOw0KK+iBtz4nW2R1dHldJzsNCivogbk+J1tlYXJ3YXhdJzsNCivogb0+J1toZWFyXSc7DQor6IG+PidbZGVhZl0nOw0KK+iBvz4nW3dyaXRpbmcgYnJ1c2hdJzsNCivogoQ+J1tsZWFybl0nOw0KK+iChT4nW3BheSByZXNwZWN0c10nOw0KK+iChj4nW2luZHVsZ2VdJzsNCivogoc+J1tiZWdpbl0nOw0KK+iCiT4nW2ZsZXNoXSc7DQor6IKLPidbcmlic10nOw0KK+iCjD4nW211c2NsZSB0aXNzdWVdJzsNCivogpM+J1tyZWdpb24gYmV0d2VlbiBoZWFydCBhbmQgZGlhcGhyYWdtXSc7DQor6IKWPidbbG9vayBsaWtlXSc7DQor6IKYPidbZWxib3ddJzsNCivogpo+J1tiZWxseV0nOw0KK+iCmz4nW2FudXNdJzsNCivogp0+J1tsaXZlcl0nOw0KK+iCoT4nW3RoaWdoc10nOw0KK+iCoj4nW2h1bWFuIGxpbWJzXSc7DQor6IKlPidbZmF0XSc7DQor6IKpPidbc2hvdWxkZXJzXSc7DQor6IKqPidbYW5pbWFsIGZhdF0nOw0KK+iCrD4nW3dhcnRdJzsNCivogq0+J1tmYXRdJzsNCivogq8+J1t3aWxsaW5nXSc7DQor6IKxPidbZm9yZWFybV0nOw0KK+iCsj4nW3Byb2R1Y2VdJzsNCivogrQ+J1tjb29rZWQgb3IgcHJlcGFyZWQgbWVhdF0nOw0KK+iCuj4nW2x1bmdzXSc7DQor6IODPidbc3RvbWFjaF0nOw0KK+iDhD4nW2hlbG1ldF0nOw0KK+iDhj4nW2dhbGwgYmxhZGRlcl0nOw0KK+iDjD4nW2JhY2tdJzsNCivog44+J1t1bmJvcm4gY2hpbGRdJzsNCivog5Y+J1tmYXRdJzsNCivog5k+J1tmb29kIG9mZmVyZWQgaW4gc2FjcmlmaWNpYWwgc2Vydl0nOw0KK+iDmj4nW2VtYnJ5b10nOw0KK+iDmz4nW3RoZSBzaG91bGRlcl0nOw0KK+iDnT4nW2NhbGxvdXNdJzsNCivog54+J1t3b21iXSc7DQor6IOhPidbcmVja2xlc3NseV0nOw0KK+iDpD4nW2hlaXJdJzsNCivog6U+J1thbGxdJzsNCivog68+J1twZWx2aXNdJzsNCivog7E+J1tibGFkZGVyXSc7DQor6IO0PidbdGhlIGxhcmdlIGludGVzdGluZV0nOw0KK+iDuD4nW2JyZWFzdF0nOw0KK+iDvD4nW2NhbGx1c10nOw0KK+iDvT4nW2JlIGFibGVdJzsNCivohII+J1tmYXRdJzsNCivohIU+J1tyaWJzXSc7DQor6ISGPidbY3Jpc3BdJzsNCivohIc+J1tyaWJzXSc7DQor6ISIPidbYmxvb2QgdmVzc2Vsc10nOw0KK+iEiT4nW2Jsb29kIHZlc3NlbHNdJzsNCivohIo+J1tzcGluZV0nOw0KK+iEmj4nW2xlZ10nOw0KK+iEmz4nW3NoaW5ib25lXSc7DQor6ISjPidbbGlwc10nOw0KK+iEqT4nW2RyaWVkIG1lYXQgKHVzZWQgYXMgdGVhY2hlcnMgcGF5bWVudCBpbiBhbmNpZW50IHRpbWVzKV0nOw0KK+iErz4nW2RyaWVkIG1lYXRdJzsNCivohLE+J1t0YWtlIG9mZl0nOw0KK+iEsz4nW2JyYWluXSc7DQor6IS5Pidbc3dlbGxdJzsNCivohL4+J1tzcGxlZW5dJzsNCivohYY+J1twcm9zcGVyb3VzXSc7DQor6IWLPidbYXJtcGl0XSc7DQor6IWOPidba2lkbmV5c10nOw0KK+iFkD4nW3JvdF0nOw0KK+iFkT4nW2Jvd2Vsc10nOw0KK+iFkz4nW2NhbGZdJzsNCivohZQ+J1tjaGVzdCBjYXZpdHldJzsNCivohZU+J1t3cmlzdF0nOw0KK+iFnz4nW3ZhZ2luYV0nOw0KK+iFpT4nW3JhdyBtZWF0XSc7DQor6IWmPidbYnJhaW5dJzsNCivohas+J1tzd2VsbF0nOw0KK+iFrj4nW2xvd2VyIHBhcnQgb2YgZmFjZV0nOw0KK+iFsD4nW3dhaXN0XSc7DQor6IWxPidbdGVuZG9uc10nOw0KK+iFtD4nW2ZhdF0nOw0KK+iFuD4nW2ludGVzdGluZXNdJzsNCivohbk+J1tzdG9tYWNoXSc7DQor6IW6PidbZ2xhbmRdJzsNCivohb8+J1tsZWdzXSc7DQor6IaAPidbdXBwZXIgYXJtXSc7DQor6IaCPidbYmFja2JvbmVdJzsNCivohoM+J1tmYXRdJzsNCivohog+J1tkaWFwaHJhZ21dJzsNCivohoo+J1tzaG91bGRlcnNdJzsNCivoho8+J1tncmVhc2VdJzsNCivohpM+J1tpbnRlc3RpbmVzXSc7DQor6IaVPidbaG9sbG93XSc7DQor6IaaPidbc2tpbl0nOw0KK+iGnD4nW21lbWJyYW5lXSc7DQor6IadPidba25lZV0nOw0KK+iGoD4nW2dsdWVdJzsNCivohqM+J1t2YWdpbmFdJzsNCisjIuiGpD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+iGqD4nW3N3ZWxsXSc7DQor6IapPidbZ3JlYXN5XSc7DQor6IawPidbY29vayBtZWF0IGZvciBzYWNyaWZpY2Ugb3Igb2ZmZXJdJzsNCivohrM+J1ttZWFsc10nOw0KK+iGtT4nW3BhbmNyZWFzXSc7DQorIyLohrg+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivohro+J1ticmVhc3RdJzsNCivohr0+J1tnYWxsIGJsYWRkZXJdJzsNCivohr4+J1ttaW5jZWQgbWVhdCBvciBmaXNoXSc7DQor6Ia/PidbcHVzXSc7DQor6IeAPidbYnV0dG9ja3NdJzsNCivoh4I+J1thcm1dJzsNCivoh4Y+J1tjaGVzdF0nOw0KK+iHiD4nW3llYXIgZW5kIHNhY3JpZmljZV0nOw0KK+iHiT4nW2ZhY2VdJzsNCivoh40+J1thYmRvbWluYWwgYXJlYSBvZiBjcmFiXSc7DQor6IeRPidbc29mdF0nOw0KK+iHkz4nW2ludGVybmFsIG9yZ2Fuc10nOw0KK+iHmD4nW3llYXIgZW5kIHNhY3JpZmljZV0nOw0KK+iHmT4nW3JvdWdlXSc7DQor6IeaPidbYXJyYW5nZSBpbiBvcmRlcl0nOw0KK+iHnz4nW2ludGVybmFsIG9yZ2Fuc10nOw0KK+iHoD4nW3NtYWxsIGx1bXAgb2YgbWVhdF0nOw0KK+iHoz4nW21pbmlzdGVyXSc7DQor6IelPidbbGllIGRvd25dJzsNCivoh6c+J1tnb29kXSc7DQor6IeoPidbZHJhdyBuZWFyXSc7DQor6IeqPidbc2VsZl0nOw0KK+iHrT4nW3NtZWxsXSc7DQor6IezPidbcmVhY2hdJzsNCivoh7Q+J1tzZW5kXSc7DQor6Ie6PidbdG93ZXJdJzsNCivoh7s+J1tyZWFjaF0nOw0KK+iHvD4nW21vcnRhcl0nOw0KK+iHvj4nW21vbWVudF0nOw0KK+iIgT4nW2NhcnJ5IG9uIG9uZScncyBzaG91bGRlcl0nOw0KK+iIgj4nW2dyaW5kIGluIG1vcnRhcl0nOw0KK+iIhT4nW21vdGhlcicncyBicm90aGVyXSc7DQor6IiHPidbYW5kXSc7DQor6IiIPidbdGhyaXZlXSc7DQor6IiJPidbcmFpc2VdJzsNCivoiIo+J1tvbGRdJzsNCivoiIw+J1t0b25ndWVdJzsNCivoiI0+J1tob3VzZV0nOw0KK+iIjj4nW2hvdXNlXSc7DQor6IiQPidbbGljayB3aXRoIHRvbmd1ZV0nOw0KK+iIkj4nW29wZW4gdXBdJzsNCivoiJY+J1tzdG9yZV0nOw0KK+iIlz4nW3N0b3JlXSc7DQor6IiYPidbYSBtYW5zaW9uXSc7DQor6IibPidbb3Bwb3NlXSc7DQor6IicPidbbGVnZW5kYXJ5IHJ1bGVyXSc7DQor6IiePidbZGFuY2VdJzsNCivoiJ8+J1tib2F0XSc7DQor6IipPidbYm9hdF0nOw0KK+iIqj4nW3NhaWxdJzsNCivoiKs+J1tmYW5jeSBib2F0XSc7DQor6IisPidbc29ydF0nOw0KK+iIrj4nW2JvdyBvciBwcm93IG9mIGJvYXRdJzsNCivoiLM+J1tzdGVybiBvZiBzaGlwXSc7DQor6Ii1PidbcnVkZGVyXSc7DQor6Ii2PidbbGFyZ2VdJzsNCivoiLc+J1tzaWRlcyBvZiBib2F0XSc7DQor6Ii4PidbbGFyZ2UgYm9hdF0nOw0KK+iIuT4nW3NoaXBdJzsNCivoiYA+J1tbbm90IGZvdW5kIGluIGRpY3Rpb25hcnldXSc7DQor6ImHPidbc21hbGwgYm9hdF0nOw0KK+iJmD4nW2NvdW50ZXIgZm9yIHNoaXBzXSc7DQor6ImZPidbaG9sZCBvZiBzaGlwXSc7DQor6ImaPidbc2hpcF0nOw0KKyMi6ImdPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6ImfPidbYW5jaWVudCB3YXJzaGlwXSc7DQor6ImiPidbYSBtYXN0XSc7DQor6ImkPidbdG8gbW9vciBhIGJvYXQgdG8gdGhlIGJhbmtdJzsNCivoiaY+J1t3YXJzaGlwXSc7DQor6ImoPidbbG9uZyBhbmQgbmFycm93IHdhci1ib2F0XSc7DQor6ImqPidbb2FyXSc7DQor6ImrPidbYm93IG9yIHByb3cgb2YgYm9hdF0nOw0KK+iJrj4nW3NldmVudGggb2YgZWlnaHQgZGlhZ3JhbXNdJzsNCivoia8+J1tnb29kXSc7DQor6ImxPidbZGlmZmljdWx0XSc7DQor6ImyPidbY29sb3JdJzsNCivoibY+J1tiZWF1dGlmdWxdJzsNCivoibc+J1tiZWF1dGlmdWxdJzsNCivoibg+J1tncmFzc10nOw0KK+iJvj4nW2FydGVtaXNpYV0nOw0KK+iKiz4nW3Rhcm9dJzsNCivoio0+J1twZW9ueV0nOw0KK+iKkj4nW21pc2NhbnRodXMgc2luZW5zaXNdJzsNCivoipk+J1toaWJpc2N1c10nOw0KK+iKnT4nW3B1cnBsaXNoIG11c2hyb29tIHRob3VnaHQgcHJvbW90XSc7DQor6IqfPidbbW93XSc7DQor6IqlPidbbXVzdGFyZCBwbGFudF0nOw0KK+iKpj4nW3J1c2hlc10nOw0KK+iKqz4nW2RhcGhuZSBnZW5rd2FdJzsNCivoiqw+J1tmcmFncmFuY2VdJzsNCivoiq0+J1twbGFudGFpbiBvciBiYW5hbmEgcGFsbV0nOw0KK+iKrz4nW3BpdGggZnJvbSBydXNoIChqdW5jdXMgZWZmdXN1cyldJzsNCivoirE+J1tmbG93ZXJdJzsNCivoirM+J1tmcmFncmFudF0nOw0KK+iKuD4nW3J1ZV0nOw0KK+iKuT4nW2NlbGVyeV0nOw0KK+iKuz4nW21vd10nOw0KK+iKvT4nW2J1ZF0nOw0KK+iLhT4nW2N1dCBvZmZdJzsNCivoi5E+J1twYXN0dXJlXSc7DQor6IuSPidbbHVzaF0nOw0KK+iLkz4nW2Z1bmd1c10nOw0KK+iLlD4nW21vc3NdJzsNCivoi5c+J1tzcHJvdXRzXSc7DQor6IuZPidbcGlnc3R5XSc7DQor6IubPidbc21hbGxdJzsNCivoi5w+J1tjbG92ZXJdJzsNCivoi54+J1t2YXJpZXR5IG9mIHJ1c2hdJzsNCivoi58+J1tjYXJlbGVzc10nOw0KK+iLoT4nW2JhcmxleV0nOw0KK+iLoz4nW2tpbmQgb2YgbGV0dHVjZV0nOw0KK+iLpT4nW2lmXSc7DQor6IumPidbYml0dGVyXSc7DQor6IunPidbY2hpbmEgZ3Jhc3NdJzsNCivoi6s+J1tydXNoIG9yIHN0cmF3IG1hdHRpbmddJzsNCivoi7E+J1twZXRhbF0nOw0KKyMi6IuzPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6Iu0Pidbc2Fja2Nsb3RoXSc7DQor6Iu5PidbYXJ0ZW1pc2lhXSc7DQor6Iu6PidbYmVycmllc10nOw0KK+iLuz4nW2tpbmQgb2YgaGVyYl0nOw0KK+iMgj4nW3RoaWNrXSc7DQor6IyDPidbc3VybmFtZV0nOw0KK+iMhD4nW2VnZ3BsYW50XSc7DQor6IyFPidbcmVlZHNdJzsNCivojIY+J1tzcGVjaWVzIG9mIGdyYXNzXSc7DQor6IyJPidbd2hpdGUgamFzbWluZV0nOw0KK+iMjj4nW3N0ZW1dJzsNCivojJY+J1thbGxpdW0gdmljdG9yaWFsaXNdJzsNCivojJc+J1t0ZWFdJzsNCisjIuiMlz4nW3RlYV0nIiwNCivojJw+J1ttYWRkZXJdJzsNCisjIuiMoz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+iMqD4nW2NhbHRyb3BdJzsNCivojKs+J1t2YXN0XSc7DQor6IyvPidbY2hpbmEgcm9vdF0nOw0KK+iMsT4nW2RvZ3dvb2RdJzsNCivojLI+J1tub3ddJzsNCivojLQ+J1tmZW5uZWxdJzsNCivojLU+J1tjdXNoaW9uXSc7DQor6Iy2PidbdGVhXSc7DQor6Iy4Pidbc29mdF0nOw0KK+iMuT4nW3Jvb3RzXSc7DQor6I2APidbc3VybmFtZV0nOw0KK+iNhT4nW2Fuc3dlcjogc21hbGwgYmVhbl0nOw0KK+iNiT4nW2dyYXNzXSc7DQor6I2KPidbdGhvcm5zXSc7DQor6I2PPidbYmVhbnNdJzsNCivojZA+J1tyZXBlYXRdJzsNCivojZI+J1t3YXN0ZWxhbmRdJzsNCivojZg+J1t2aWxsYWdlXSc7DQor6I2zPidbYmVhbnNdJzsNCisjIuiNtT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+iNtz4nW2xvdHVzXSc7DQor6I27PidbcmVlZF0nOw0KK+iNvD4nW2JpdHRlciB2ZWdldGFibGVdJzsNCivojoU+J1thdHRlbmRdJzsNCisjIuiOhz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+iOiT4nW3doaXRlIGphc21pbmVdJzsNCivojoo+J1t2aWxsYWdlXSc7DQor6I6OPidba2luZCBvZiBzZWRnZSBncmFzc10nOw0KK+iOkz4nW21vc3NdJzsNCivojpY+J1tzdGVtXSc7DQor6I6aPidbYmFtYm9vIG1hdF0nOw0KK+iOnj4nW3NtaWxpbmddJzsNCisjIuiOnz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+iOoD4nW3dlZWRzXSc7DQor6I6iPidbcG9kcyBvZiBsZWd1bWlub3VzIHBsYW50c10nOw0KK+iOqD4nW2hlcmJdJzsNCivojqo+J1thcnRlbWlzaWFdJzsNCivojqs+J1tkbyBub3RdJzsNCivojrE+J1tnb29zZWZvb3RdJzsNCivojrU+J1tkb2RkZXJdJzsNCivojr0+J1t0aGlja2V0XSc7DQor6I+BPidbZmxvd2VyIG9mIGxlZWsgZmFtaWx5XSc7DQor6I+FPidbY29hcnNlIGdyYXNzXSc7DQor6I+KPidbY2hyeXNhbnRoZW11bV0nOw0KK+iPjD4nW211c2hyb29tXSc7DQor6I+OPidbYmVhdXRpZnVsIGphZGVdJzsNCivoj5M+J1tmcnVpdHNdJzsNCivoj5Y+J1tpcmlzXSc7DQor6I+YPidbY2VsZXJ5XSc7DQor6I+cPidbdmVnZXRhYmxlc10nOw0KK+iPnz4nW2RvZGRlcl0nOw0KK+iPoD4nW3NwaW5hY2ggYW5kIHNpbWlsYXIgZ3JlZW5zXSc7DQor6I+pPidbaGVyYl0nOw0KK+iPqz4nW2NlbGVyeV0nOw0KK+iPrz4nW2Zsb3dlcnldJzsNCivoj7A+J1t3aWxkIHJpY2VdJzsNCivoj7E+J1t3YXRlci1jaGVzdG51dF0nOw0KK+iPsj4nW2ZyYWdyYW50XSc7DQor6I+0Pidbc21hbGwgYnVkZGhpc3QgbW9uYXN0ZXJ5XSc7DQorIyLoj7c+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivoj7s+J1thcnRlbWlzaWFdJzsNCivoj70+J1tiZWFucyBhbmQgcGVhc10nOw0KK+iQgz4nW2RlbnNlXSc7DQor6JCEPidbZ3JhcGVzXSc7DQor6JCHPidbYXZlcnJob3JhIGNhcmFtYm9sYV0nOw0KK+iQiz4nW2x1eHVyaWFudCBmb2xpYWdlXSc7DQor6JCMPidbYnVkXSc7DQor6JCNPidbZHVja3dlZWRdJzsNCivokI4+J1t3aXRoZXJdJzsNCisjIuiQkz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+iQoD4nW2J1ZF0nOw0KKyMi6JCiPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6JCpPidbc2NhbmRlbnQgaG9wXSc7DQorIyLokKo+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivokKw+J1t0ZW4gdGhvdXNhbmRdJzsNCivokLE+J1tkYXktbGlseV0nOw0KK+iQtT4nW2xldHR1Y2VdJzsNCivokLg+J1tkb2d3b29kXSc7DQor6JC8PidbY2FseXggb2YgZmxvd2VyXSc7DQor6JC9PidbZmFsbF0nOw0KK+iRhj4nW3Jlc2VydmVdJzsNCivokYk+J1tsZWFmXSc7DQorIyLokY4+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivokZc+J1ttYW5pZmVzdF0nOw0KK+iRmz4nW2VkaWJsZSBiZWFuXSc7DQor6JGhPidbZ3JhcGVzXSc7DQor6JGiPidbY292ZXJdJzsNCivokaM+J1tkaXJlY3RdJzsNCivokaY+J1tyZWVkXSc7DQor6JGpPidbZmxvd2Vyc10nOw0KK+iRqz4nW2JvdHRsZS1nb3VyZF0nOw0KK+iRrD4nW2J1cnldJzsNCivoka0+J1tidWxydXNoXSc7DQorIyLoka0+J1tidWxydXNoXSciLA0KK+iRrz4nW2xlYWYgb2YgYW5nZWxpY2EgcGxhbnRdJzsNCivokbE+J1tzY2FsbGlvbnNdJzsNCivokbU+J1tzdW5mbG93ZXJdJzsNCivokbc+J1ttZWF0IGRpZXRdJzsNCivokbk+J1traW5kIG9mIGNocnlzYW50aGVtdW1dJzsNCivokbo+J1t0aGF0Y2hdJzsNCivokoI+J1twZWR1bmNsZSBvciBzdGVtIG9mIHBsYW50c10nOw0KKyMi6JKEPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6JKLPidbc3VybmFtZV0nOw0KK+iSkD4nW2NvbGxlY3RdJzsNCivokpQ+J1t0cmFuc3BsYW50XSc7DQor6JKZPidbY292ZXJdJzsNCivokpw+J1tnYXJsaWNdJzsNCivokp8+J1tiZXRlbCBwZXBwZXJdJzsNCivokqE+J1tidXJkb2NrXSc7DQor6JKtPidbdG8gY3V0Z3Jhc3NdJzsNCivokrI+J1t0eXBlIG9mIHJ1c2hdJzsNCivokrg+J1tzdGVhbV0nOw0KK+iSuT4nW3JlZWRdJzsNCivokrs+J1tydXNoZXNdJzsNCivokrw+J1tibHVlXSc7DQor6JK/PidbbXVnd29ydF0nOw0KK+iTgT4nW2FidW5kYW50XSc7DQor6JOEPidbc3RvcmVdJzsNCivok4Y+J1tzdHJhdyBtYXRdJzsNCivok4k+J1toaWJpc2N1c10nOw0KK+iTij4nW2x1eHVyaWFudCB2ZWdldGF0aW9uXSc7DQor6JOLPidbY292ZXJdJzsNCivok40+J1ttaWxmb2lsXSc7DQor6JOQPidbc3RyYXcgYmVkIG1hdF0nOw0KK+iTkT4nW3JhaW4gY29hdCBtYWRlIG9mIHN0cmF3XSc7DQor6JOWPidbY2FzdG9yLW9pbCBwbGFudF0nOw0KKyMi6JOZPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6JOaPidbb3hhbGljICh1c2VkIGluIGNvbXBvdW5kcyldJzsNCivok6w+J1t0eXBlIG9mIHJhc3BiZXJyeV0nOw0KK+iTrj4nW2xvdHVzXSc7DQor6JO0PidbZWRpYmxlIHdhdGVyIHBsYW50XSc7DQor6JO8Pidbc21hcnR3ZWVkXSc7DQor6JO/PidbY2xvdmVyXSc7DQor6JSAPidbc2NyZWVuXSc7DQor6JSGPidbd2F0ZXItY2hlc3RudXRdJzsNCivolJE+J1tkaXNkYWluXSc7DQor6JSTPidbY3JlZXBpbmcgcGxhbnRzXSc7DQor6JSUPidbcmFkaXNoXSc7DQor6JSVPidbcGVkdW5jbGUgb3Igc3RlbSBvZiBwbGFudHNdJzsNCivolJc+J1tzdWdhciBjYW5lXSc7DQor6JSYPidbZ2luc2VuXSc7DQor6JSaPidbbHV4dXJpYW50XSc7DQor6JSfPidbZnJhbWUgb24gd2hpY2ggc2lsa3dvcm1zIHNwaW5dJzsNCivolKE+J1tzdXJuYW1lXSc7DQor6JSmPidbcGFyYXNpdGljIHBsYW50c10nOw0KK+iUrD4nW3ZlZ2V0YWJsZXNdJzsNCivolK0+J1tzaGFkZV0nOw0KK+iUtT4nW2hpZGVdJzsNCivolL0+J1tjb3Zlcl0nOw0KKyMi6JWAPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6JWBPidbbmV0dGxlXSc7DQor6JWDPidbZm9yZWlnbiB0aGluZ3NdJzsNCivolYg+J1ttdXNocm9vbXNdJzsNCivolYk+J1tiYW5hbmFdJzsNCivolYo+J1t1bm9wZW5lZCBmbG93ZXJzXSc7DQor6JWLPidbdW5vcGVuZWQgZmxvd2Vyc10nOw0KK+iVjj4nW2J1Y2t3aGVhdF0nOw0KK+iVlT4nW2NhcnlvcHRlcmlzIGRpdmFyaWNhdGFdJzsNCisjIuiVlz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+iVmD4nW2Z1ZWxdJzsNCivolZo+J1tjYWx5eCBvZiBmbG93ZXJdJzsNCivolaM+J1toaWJpc2N1c10nOw0KK+iVqD4nW3B0ZXJpcyBhcXVpbGluYV0nOw0KK+iVqT4nW3BvbmRdJzsNCivolao+J1tsdXh1cmlvdXMgZ3Jvd3RoIG9mIHdlZWRzXSc7DQor6JWtPidbY29tbW9uIGFydGVtaXNpYV0nOw0KK+iVtz4nW3lhbV0nOw0KK+iVvj4nW2J1ZHNdJzsNCivoloA+J1t0aGUgaGlwcHVyaXMgb3IgbWFyZScncyB0YWlsIHBsYW50XSc7DQor6JaEPidbdGhpbl0nOw0KK+iWhz4nW29zbXVuZGEgcmVnYWxpc10nOw0KK+iWiD4nW2x1eHVyaWFudF0nOw0KK+iWij4nW2NpcmNpdW1dJzsNCivolpA+J1tzcGluYWNoXSc7DQor6JaRPidbZ2luZ2VyXSc7DQor6JaUPidbcm9zZV0nOw0KK+iWlz4nW2dhcmRlbl0nOw0KK+iWmT4nW3dlZWRdJzsNCivolps+J1traW5kIG9mIG1hcnNoIGdyYXNzXSc7DQor6JacPidbZXZlcmdyZWVuIHNocnVic10nOw0KK+iWpD4nW2FsbGl1bSBiYWtlcmldJzsNCivolqY+J1tvZmZlcl0nOw0KK+iWqD4nW2RlYXRoIG9mIHByaW5jZV0nOw0KK+iWqT4nW3RyYW5zbGl0ZXJhdGlvbiBvZiBcInNhdFwiIG9mIGJvZGRoaXNhdHR2YSBldGMuXSc7DQor6JaqPidbZnVlbF0nOw0KK+iWqz4nW2EgbWVkaWNpbmFsIGhlcmJdJzsNCivolqw+J1tkcnVnc10nOw0KK+iWrj4nW21hcnNoXSc7DQor6JavPidbeWFtXSc7DQor6Ja5PidbY3lwZXJ1cyByb3R1bmR1c10nOw0KK+iWuj4nW3dhdGVyLWNoZXN0bnV0c10nOw0KK+iXgT4nW3N0cmF3XSc7DQor6JeJPidbbWF0XSc7DQor6JeNPidbYmx1ZV0nOw0KK+iXjz4nW2hpZGVdJzsNCivol5A+J1tkaXNyZWdhcmRdJzsNCivol5U+J1tsb3R1cyByb290XSc7DQor6JecPidbY2hlbm9wb2RpdW0gYWxidW1dJzsNCivol50+J1thcnRdJzsNCivol6Q+J1tyYXR0YW5dJzsNCivol6U+J1tkcnVnc10nOw0KK+iXqT4nW2ZlbmNlXSc7DQor6JeqPidbbWFyc2hdJzsNCivol7c+J1t5YW1dJzsNCivol7k+J1tsdXNoXSc7DQor6Je6PidbcnVzaCB1c2VkIGluIG1ha2luZyBtYXRzXSc7DQor6Je7Pidbc3BsZW5kaWRdJzsNCivol74+J1tzaGFkZV0nOw0KK+iYgj4nW3N0YW1lbiBvciBwaXN0aWxdJzsNCivomIY+J1tydXNoZXNdJzsNCivomIc+J1t0aHltZV0nOw0KK+iYij4nW2NvbGxlY3RdJzsNCivomIs+J1thcHBsZV0nOw0KK+iYkz4nW3RoeW1lXSc7DQor6JiWPidbc3R1bXBdJzsNCivomJc+J1tzdHVtcF0nOw0KK+iYmj4nW21vc3NdJzsNCivomKI+J1t0YWxsIGdyYXNzXSc7DQor6JitPidbb3JjaGlkXSc7DQor6JivPidbdG8gdG9zcyBhYm91dF0nOw0KKyMi6JivPidbdG8gdG9zcyBhYm91dF0nIiwNCivomL8+J1t0eXBlIG9mIGNyZWVwaW5nIHBsYW50XSc7DQor6JmNPidbdGlnZXJdJzsNCivomY4+J1t0aWdlcl0nOw0KK+iZkD4nW2NydWVsXSc7DQor6JmUPidbYWN0IHdpdGggcmV2ZXJlbmNlXSc7DQor6JmVPidbcGxhY2VdJzsNCivomZo+J1tmYWxzZV0nOw0KK+iZnD4nW2NhcHR1cmVdJzsNCivomZ4+J1tjb25jZXJuZWQgYWJvdXRdJzsNCivomZ8+J1ttYXJrXSc7DQor6JmnPidbbG9zZV0nOw0KK+iZqz4nW2luc2VjdHNdJzsNCivombE+J1tsb3VzZV0nOw0KK+iZuT4nW3JhaW5ib3ddJzsNCivombs+J1tob3JzZWZseV0nOw0KK+iaij4nW21vc3F1aXRvXSc7DQor6JqLPidbZ25hdF0nOw0KK+iajD4nW295c3RlcnNdJzsNCivompM+J1tlYXJ0aHdvcm1dJzsNCivompU+J1tzaWxrd29ybXNdJzsNCivomqM+J1tjZW50aXBlZGVdJzsNCivomqQ+J1tmbGVhXSc7DQor6JqpPidbd29ybV0nOw0KK+iaqj4nW3RhZHBvbGVdJzsNCivomqs+J1thYmFsb25lXSc7DQor6JqvPidbZWFydGh3b3JtXSc7DQor6JqwPidbbWlsbGlwZWRlXSc7DQor6Jq2Pidba2luZCBvZiBjbGFtXSc7DQor6JuEPidbbW9sZSBjcmlja2V0XSc7DQor6JuGPidbbWFnZ290c10nOw0KK+ibhz4nW3NuYWtlXSc7DQor6JuJPidbZHJhZ29uZmx5XSc7DQor6JuLPidbZWdnc10nOw0KK+ibjT4nW2dsb3ctd29ybV0nOw0KK+ibjj4nW295c3Rlcl0nOw0KK+iblD4nW3RhcGV3b3JtXSc7DQor6JuZPidbZnJvZ10nOw0KK+ibmz4nW3NwaWRlcl0nOw0KK+ibnj4nW3NuYWlsXSc7DQor6JufPidbc2NhbHkgZHJhZ29uIHdpdGggZm91ciBsZWdzXSc7DQor6JukPidbY2xhbV0nOw0KK+ibqT4nW2NyaWNrZXRdJzsNCisjIuibqT4nW2NyaWNrZXRdJyIsDQor6JutPidbbGVlY2hdJzsNCivom64+J1tiYXJiYXJpYW5zXSc7DQor6JuvPidbc2hyaW1wXSc7DQor6Ju4PidbbG9uZyBsZWdnZWQgc3BpZGVyXSc7DQor6Ju5PidbY2hyeXNhbGlzXSc7DQor6Ju7PidbbW9sdF0nOw0KK+ibvj4nW21vdGhdJzsNCivonIA+J1tuYW1lIG9mIGFuIGFuY2llbnQgc3RhdGVdJzsNCivonII+J1tiZWVdJzsNCivonIM+J1ttYXJpbmUgbW9uc3RlciB3aGljaCBjYW4gY2hhbmdlIGl0cyBzaGFwZV0nOw0KK+ichj4nW2EgdmFyaWV0eSBvZiBiaXZhbHZlc10nOw0KK+iciD4nW2NlbnRpcGVkZV0nOw0KK+iciT4nW21heWZseV0nOw0KK+icij4nW2NsYW1dJzsNCivonI0+J1t0b2FkXSc7DQor6JyRPidbZWdnXSc7DQor6JySPidbbWlsbGlwZWRlXSc7DQor6JyYPidbc3BpZGVyXSc7DQor6JyaPidbY29ja3JvYWNoXSc7DQor6JycPidbaG9uZXldJzsNCivonKU+J1tsaXphcmRdJzsNCivonKk+J1tjaWNhZGFdJzsNCivonLQ+J1tsaXphcmRdJzsNCivonLc+J1tjcmVlcCBsaWtlIHdvcm1dJzsNCivonLs+J1tkcmFnb25mbHldJzsNCivonL8+J1tjcmVlcF0nOw0KK+idiT4nW2NpY2FkYV0nOw0KK+idiz4nW3dheF0nOw0KK+idjD4nW3RhZHBvbGVdJzsNCivonY4+J1tzY29ycGlvbl0nOw0KK+idkz4nW3NuYWlsXSc7DQor6J2VPidbbmliYmxlIGF3YXldJzsNCivonZc+J1traW5kIG9mIGxvY3VzdF0nOw0KK+idmT4nW2JhdF0nOw0KK+idnz4nW2hlZGdlaG9nXSc7DQor6J2gPidba2luZCBvZiBiYXRdJzsNCivonaM+J1ttYXlmbHldJzsNCivonaY+J1tzaHJpbXBdJzsNCivonag+J1tsb3VzZV0nOw0KKyMi6J2oPidbbG91c2VdJyIsDQor6J2uPidbdmVub21vdXMgc25ha2VdJzsNCivonbQ+J1tidXR0ZXJmbHldJzsNCivonbY+J1tidXR0ZXJmbHldJzsNCivonbg+J1tzbmFpbF0nOw0KK+idvz4nW2ZsaWVzXSc7DQor6J6CPidbbWFudGlzXSc7DQor6J6NPidbbWVsdF0nOw0KK+ienz4nW2tpbmQgb2YgY2F0ZXJwaWxsYXJdJzsNCivonqI+J1tnbG93LXdvcm1dJzsNCivonqs+J1twb2lzb25dJzsNCivonq8+J1tuaXBwZXJzXSc7DQor6J6zPidbbWFudGlzXSc7DQor6J66Pidbc3BpcmFsIHNoZWxsXSc7DQor6J67PidbZ3J5bGxvdGFscGEgYWZyaWNhbmFdJzsNCivonr0+J1trYXR5ZGlkXSc7DQor6J+APidbY3JpY2tldF0nOw0KK+ifhD4nW3RvIGhpYmVybmF0ZV0nOw0KK+ifhj4nW2Zyb2ddJzsNCivon4c+J1tmcm9nXSc7DQor6J+LPidbY3JpY2tldF0nOw0KKyMi6J+LPidbY3JpY2tldF0nIiwNCivon5I+J1tweXRob25dJzsNCivon6A+J1tjb2lsXSc7DQor6J+vPidbd29ybXNdJzsNCivon7I+J1t3b3Jtc10nOw0KK+iftj4nW3Jhem9yIGNsYW1dJzsNCivon7c+J1ttYW50aXNdJzsNCivon7k+J1tjcmFiXSc7DQor6J+7PidbYW50c10nOw0KK+ifvj4nW3RvYWRdJzsNCivooIU+J1tmbGllc10nOw0KK+igjT4nW3Njb3JwaW9uXSc7DQor6KCOPidbcHl0aG9uXSc7DQor6KCPPidbY3JhYl0nOw0KK+igkT4nW2xpemFyZF0nOw0KK+iglT4nW2V1bWVuZXMgcG9saWZvbWlzXSc7DQor6KCWPidbbWVhc3VyaW5nIHdvcm1dJzsNCivooKE+J1t3b29kLWJvcmluZyBpbnNlY3RdJzsNCivooKI+J1t3cmlnZ2xlXSc7DQor6KCjPidbb3lzdGVyXSc7DQor6KCnPidbbW90aF0nOw0KK+igsT4nW3Bvc2lvbl0nOw0KK+igtj4nW3NpbGt3b3Jtc10nOw0KK+iguT4nW21vdGhdJzsNCivooLs+J1tiYXJiYXJpYW5zXSc7DQor6KGAPidbYmxvb2RdJzsNCivooYI+J1t0byBiZSBkZWZlYXRlZF0nOw0KK+ihhD4nW2VwaXN0YXhpc10nOw0KK+ihhj4nW211bHRpdHVkZV0nOw0KK+ihjD4nW2dvXSc7DQor6KGNPidbb3ZlcmZsb3ddJzsNCivooZI+J1ticmFnXSc7DQor6KGTPidbYXJ0XSc7DQor6KGXPidbc3RyZWV0XSc7DQor6KGZPidbcHVibGljIG9mZmljZV0nOw0KK+ihmz4nW2d1YXJkXSc7DQor6KGdPidbcnVzaCBhZ2FpbnN0XSc7DQor6KGePidbZ3VhcmRdJzsNCivooaE+J1ttZWFzdXJlXSc7DQor6KGiPidbaGlnaHdheV0nOw0KK+ihoz4nW2Nsb3RoZXNdJzsNCivooag+J1tzaG93XSc7DQor6KGrPidbc2hpcnRdJzsNCivoobA+J1tkZWNsaW5lXSc7DQor6KGyPidbbWVuZF0nOw0KK+ihtT4nW2NoZW1pc2VdJzsNCivoobc+J1toZWFydF0nOw0KK+ihvT4nW2xhcGVsXSc7DQor6KG+PidbY292ZXJsZXRdJzsNCivoob8+J1tjb2xsYXIgb3IgbGFwZWwgb2YgZ2FybWVudF0nOw0KK+iigT4nW3JvYmVdJzsNCivoooI+J1tzbGVldmVzXSc7DQor6KKIPidbYnVkZGhpc3QgY2Fzc29ja10nOw0KK+iiiz4nW3BvY2tldF0nOw0KK+iijT4nW2xvbmcgZ293bl0nOw0KK+iikj4nW3N0cmlwXSc7DQor6KKWPidbc2xlZXZlXSc7DQor6KKXPidbdW5saW5lZCBnYXJtZW50c10nOw0KKyMi6KKZPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6KKePidbY2VyZW1vbmlhbCBkcmVzcyB3b3JuIGJ5IGVtcGVyb3JdJzsNCivooqI+J1tyb2JlXSc7DQor6KKkPidbbG9uZ2l0dWRlXSc7DQor6KKrPidbcGFzc2l2ZSBpbmRpY2F0b3IgXCJieVwiXSc7DQorIyLooq4+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCisjIuiisD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+iisT4nW3BpZWNlIG9mIGNsb3RoIHVzZWQgd3JhcCBidW5kbGVzXSc7DQor6KK0PidbcGFudHNdJzsNCivoorU+J1tsYXBlbF0nOw0KK+iitz4nW2xpbmVkIGdhcm1lbnRdJzsNCivoor8+J1tnb3duXSc7DQor6KOBPidbY3V0IG91dF0nOw0KK+ijgj4nW3NwbGl0XSc7DQorIyLoo4I+J1tzcGxpdF0nIiwNCisjIuijgj4nW3NwbGl0XSciLA0KK+ijhT4nW2RyZXNzXSc7DQor6KOPPidbaW5zaWRlXSc7DQor6KOUPidbcHJvZ2VueV0nOw0KK+ijlT4nW2FidW5kYW50XSc7DQor6KOYPidbZnVyIGdhcm1lbnRzXSc7DQor6KOZPidbc2tpcnRdJzsNCivoo5w+J1ttZW5kXSc7DQor6KOdPidbZHJlc3NdJzsNCivoo58+J1thIGNhc3NvY2sgb3Igcm9iZSBvZiBhIG1vbmtdJzsNCivoo6E+J1tpbnNpZGVdJzsNCivoo6g+J1thaWRdJzsNCivoo7I+J1t3YWlzdGNvYXRdJzsNCivoo7M+J1tjbG90aGVzXSc7DQor6KO0Pidbc3VybmFtZV0nOw0KK+ijuD4nW2JhcmVdJzsNCivoo7k+J1t3cmFwXSc7DQor6KO8PidbdG8gdGFrZSBvZmYgb25lJydzIHRvcF0nOw0KK+ijvT4nW21ha2VdJzsNCivoo74+J1tsYXBlbF0nOw0KK+ikgj4nW2phY2tldF0nOw0KKyMi6KSDPidbYSBzZWFtIGluIGEgZ2FybWVudF0nIiwNCivopIc+J1tyZXBlYXRdJzsNCivopIo+J1tjcmFtcGVkXSc7DQor6KSMPidbdHJvdXNlcnNdJzsNCivopJA+J1tjb2Fyc2Ugd29vbGVuIGNsb3RoXSc7DQor6KSSPidbcHJhaXNlXSc7DQor6KSTPidbc3dhZGRsaW5nIGNsb3RoXSc7DQor6KSdPidbdW5saW5lZCBnYXJtZW50XSc7DQorIyLopJ4+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivopKU+J1ttYXR0cmVzc10nOw0KK+ikqj4nW3N0cmlwXSc7DQor6KSrPidbc3RyaXBdJzsNCivopLY+J1twbGVhdF0nOw0KK+ikuD4nW2xhcGVsXSc7DQor6KS7PidbZGlydHldJzsNCivopYE+J1tzd2FkZGxpbmcgY2xvdGhlc10nOw0KK+ilgz4nW2NvbW1lbmRdJzsNCivopYQ+J1thaWRdJzsNCivopYw+J1t1bmxpbmVkIGdhcm1lbnRdJzsNCivopY0+J1ttaXhlZF0nOw0KK+illj4nW291dGVyIGdhcm1lbnRzXSc7DQor6KWePidbZm9sZF0nOw0KK+ilnz4nW2xhcGVsXSc7DQor6KWgPidbY3JvdGNoIG9yIHNlYXQgb2YgcGFudHNdJzsNCivopaQ+J1tyYWdnZWRdJzsNCivopaY+J1tzaG9ydCBjb2F0XSc7DQor6KWqPidbc29ja3NdJzsNCivopa0+J1t0dWNrIHVwIGhlbSBvZiBnYXJtZW50IGFuZCB3cmFwXSc7DQor6KWvPidbdW5kZXJ3ZWFyXSc7DQor6KWyPidbcmFpZF0nOw0KK+iltD4nW2Egb25lIHBpZWNlIGdhcm1lbnRdJzsNCisjIuiltj4nW2lnbm9yYW50XSciLA0KK+ilvj4nW2NvdmVyXSc7DQor6KW/Pidbd2VzdChlcm4pXSc7DQor6KaBPidbbmVjZXNzYXJ5XSc7DQor6KaDPidbcmVhY2ggdG9dJzsNCivopoY+J1tjb3Zlcl0nOw0KK+imhz4nW3J1bGUgYnkgbWlnaHQgcmF0aGVyIHRoYW4gcmlnaHRdJzsNCivopog+J1tpbnZlc3RpZ2F0ZV0nOw0KK+imij4nW2hhbHRlcl0nOw0KK+imiz4nW3NlZV0nOw0KK+imjz4nW3J1bGVzXSc7DQor6KaTPidbc2Vla10nOw0KK+imlj4nW2xvb2sgYXRdJzsNCivoppc+J1twZWVrXSc7DQor6KaYPidbcGVla10nOw0KK+immj4nW3dha2UgdXAgZnJvbSBzbGVlcF0nOw0KK+imoT4nW3dpemFyZF0nOw0KK+impj4nW2Rlc2lyZSBzdHJvbmdseV0nOw0KK+impz4nW2xvb2sgYXRdJzsNCivopqk+J1tzZWVdJzsNCivopqo+J1tyZWxhdGl2ZXNdJzsNCivopqw+J1tjb3ZldF0nOw0KK+imrz4nW21lZXQgb3Igc2VlIHVuZXhwZWN0ZWRseV0nOw0KK+imsj4nW2hhdmUgaW1wZXJpYWwgYXVkaWVuY2VdJzsNCivoprM+J1tzZWVdJzsNCivopro+J1t3YWtlIHVwIGZyb20gc2xlZXBdJzsNCivopr0+J1tsb29rIGF0XSc7DQor6Ka/Pidbc2VlXSc7DQor6KeAPidbc2VlXSc7DQor6KeSPidbaG9ybl0nOw0KK+inmj4nW2p1Z10nOw0KK+innD4nW2JlYWtdJzsNCivop50+J1tnb3JlXSc7DQor6KejPidbbG9vc2VuXSc7DQor6KemPidbYnV0dF0nOw0KK+inpz4nW2xvb3Nlbl0nOw0KK+intD4nW3dpbmUgdmVzc2VsXSc7DQor6Ke4PidbdG91Y2hdJzsNCivoqIA+J1t3b3Jkc10nOw0KK+iogj4nW2RyYXcgdXAgYWdyZWVtZW50XSc7DQor6KiDPidbb2JpdHVhcnldJzsNCivoqIg+J1twbGFuXSc7DQor6KiKPidbaW5xdWlyZV0nOw0KK+iojD4nW2NvbmZ1c2lvbl0nOw0KK+iojj4nW2FzayBmb3JdJzsNCivoqJA+J1tleHBvc2Ugb3RoZXInJ3Mgc2VjcmV0c10nOw0KK+iokz4nW3RlYWNoXSc7DQor6KiWPidbZmluaXNoXSc7DQor6KiXPidbZW50cnVzdF0nOw0KK+iomD4nW3JlY29yZF0nOw0KK+iomz4nW3N3aW5kbGVdJzsNCivoqJ0+J1tleHByZXNzIHN1cnByaXNlXSc7DQor6KifPidbYWNjdXNlXSc7DQor6KijPidbdGFrZSBsZWF2ZSBvZl0nOw0KK+iopT4nW3Nsb3cgb2Ygc3BlZWNoXSc7DQor6KiqPidbdmlzaXRdJzsNCivoqK0+J1tidWlsZF0nOw0KK+iosT4nW2FsbG93XSc7DQor6KizPidbdHJhbnNsYXRlXSc7DQor6Ki0PidbYWNjdXNlXSc7DQor6Ki2Pidbc2NvbGQgbG91ZGx5XSc7DQor6Ki6PidbZXhhbWluZSBwYXRpZW50XSc7DQor6Ki7PidbZXhwbGFpbl0nOw0KK+iovD4nW3Byb3ZlXSc7DQor6KmBPidbZXhlZ2VzaXNdJzsNCivoqYY+J1tzbGFuZGVyXSc7DQor6KmIPidbc2NvbGRdJzsNCivoqZA+J1tjaGVhdF0nOw0KK+ipkT4nW2NoZWF0XSc7DQor6KmSPidbYmVxdWVhdGhdJzsNCivoqZQ+J1tkZWNyZWVdJzsNCivoqZU+J1thcHByYWlzZV0nOw0KK+ipmz4nW2N1cnNlXSc7DQor6KmePidbd29yZHNdJzsNCivoqaA+J1tzaW5nXSc7DQor6KmiPidbaW5xdWlyZSBpbnRvXSc7DQor6KmjPidbcmVhY2hdJzsNCivoqaY+J1t0ZXN0XSc7DQor6KmpPidbcG9ldHJ5XSc7DQor6KmrPidbYmUgc3VycHJpc2VkXSc7DQor6KmsPidbYWJ1c2VdJzsNCivoqa0+J1tkZWNlaXZlXSc7DQor6KmuPidbZXhwbGFpbl0nOw0KK+ipsD4nW3F1ZXN0aW9uXSc7DQor6KmxPidbc3BlZWNoXSc7DQor6KmyPidbc2hvdWxkXSc7DQor6KmzPidbZGV0YWlsZWRdJzsNCivoqbw+J1t0ZWFzZV0nOw0KK+iqgj4nW3RlbXB0XSc7DQor6KqEPidbZXVsb2dpemVdJzsNCivoqoU+J1tleGVjdXRlXSc7DQor6KqHPidbZXhhZ2dlcmF0ZV0nOw0KK+iqiT4nW2ZhbWVdJzsNCivoqow+J1t3cml0ZSBkb3duXSc7DQor6KqNPidbcmVjb2duaXplXSc7DQor6KqRPidbZGVjZWl2ZV0nOw0KK+iqkz4nW3N3ZWFyXSc7DQor6KqVPidbYmVhciBjaGlsZHJlbl0nOw0KK+iqmD4nW3BlcnN1YWRlXSc7DQor6KqaPidbY3JpdGljaXplXSc7DQor6KqePidbbGFuZ3VhZ2VdJzsNCivoqqA+J1tzaW5jZXJlXSc7DQor6KqhPidbd2Fybl0nOw0KK+iqoz4nW21ha2UgZmFsc2UgYWNjdXNhdGlvbl0nOw0KK+iqpD4nW2Vycl0nOw0KK+iqpT4nW2luZm9ybV0nOw0KK+iqpj4nW3JlY2l0ZV0nOw0KK+iqqD4nW3RlYWNoXSc7DQor6KqsPidbc3BlYWtdJzsNCivoqq0+J1tyZWFkXSc7DQor6KqwPidbd2hvPyB3aG9tPyB3aG9zZT8gYW55b25lP10nOw0KK+iqsj4nW2xlc3Nvbl0nOw0KK+iquT4nW3NsYW5kZXJdJzsNCivoqrw+J1tmcmllbmRzaGlwXSc7DQor6Kq/PidbdHJhbnNmZXJdJzsNCivoq4I+J1tmbGF0dGVyXSc7DQor6KuEPidbcGF0aWVudF0nOw0KK+irhz4nW3RhbGtdJzsNCivoq4s+J1thc2tdJzsNCivoq4w+J1tyZW1vbnN0cmF0ZV0nOw0KK+irjT4nW3RvIGV4cG9zdHVsYXRlXSc7DQor6KuPPidbY29uc3VsdF0nOw0KK+irkj4nW2V4Y3VzZV0nOw0KK+irlj4nW2RlYmF0ZV0nOw0KK+irmj4nWyhrb2t1amkpIGNvbW1hbmRdJzsNCivoq5s+J1tmbGF0dGVyXSc7DQor6KucPidbaW50ZWxsaWdlbmNlIHJlcG9ydF0nOw0KK+irnj4nW2JyYWddJzsNCivoq6A+J1tub2lzeV0nOw0KK+iroT4nW3Bvc3RodW1vdXMgbmFtZV0nOw0KK+iroj4nW2pva2VzXSc7DQor6KukPidbaG9uZXN0IHNwZWVjaF0nOw0KK+irpj4nW2NhcmVmdWxdJzsNCivoq6c+J1toYXJtb25pemVdJzsNCivoq6s+J1tyZW1vbnN0cmF0ZV0nOw0KK+irrT4nW3Byb2NsYWltXSc7DQor6KuuPidbY29uc3VsdF0nOw0KK+irsT4nW2NvbmNlYWxdJzsNCivoq7M+J1t2ZXJzZWQgaW5dJzsNCivoq7c+J1tyZWNpdGVdJzsNCivoq7g+J1tzZXZlcmFsXSc7DQor6Ku6PidbcHJvdmVyYl0nOw0KK+irvj4nW3Byb21pc2VdJzsNCivorIA+J1twbGFuXSc7DQor6KyBPidbdmlzaXRdJzsNCivorII+J1tzYXldJzsNCivorIQ+J1tjb3B5XSc7DQor6KyHPidbc3R1dHRlcl0nOw0KK+isjD4nW3NsYW5kZXJdJzsNCivorI4+J1tyaWRkbGVdJzsNCivorJA+J1tjYWxtXSc7DQor6KyUPidbamVlcl0nOw0KK+islj4nW3Jpc2UgdXBdJzsNCivorJc+J1tzbGFuZGVyXSc7DQor6KyZPidbaHVtYmxlXSc7DQor6KyaPidbdG8gY29uZmVyIHBvc3RodW1vdXMgdGl0bGVzXSc7DQor6KybPidbZXhwbGFpbl0nOw0KK+isnT4nW3RoYW5rXSc7DQor6KygPidbc2luZ10nOw0KK+isoT4nW3NpbmddJzsNCivorKY+J1t0IHNwZWFrIHNvZnRseV0nOw0KK+isqD4nW3NjaGVtZV0nOw0KK+isqz4nW2NoYXJnZV0nOw0KK+isrD4nW2Vycm9yXSc7DQor6KyzPidbc2luZ10nOw0KK+isuT4nW3BydWRlbnRdJzsNCivorL4+J1tkZWNlaXZlXSc7DQor6K2BPidbbm9pc2VdJzsNCivorYk+J1twcm9vZl0nOw0KK+itjD4nW2ZhbHNlXSc7DQor6K2OPidbY3VubmluZ10nOw0KK+itjz4nW3JpZGljdWxlXSc7DQor6K2WPidbdG8gc2xhbmRlcl0nOw0KK+itmD4nW3JlY29nbml6ZV0nOw0KK+itmj4nW3N1cm5hbWVdJzsNCivorZs+J1t0byBzbGFuZGVyXSc7DQor6K2cPidbcmVnaXN0ZXJdJzsNCivorZ8+J1tjbGFtb3JdJzsNCivoraY+J1tndWFyZF0nOw0KK+itqz4nW3RhbGthdGl2ZV0nOw0KK+itrD4nW21ldGFwaG9yXSc7DQor6K2vPidbdHJhbnNsYXRlXSc7DQor6K2wPidbY29uc3VsdF0nOw0KKyMi6K2xPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6K2yPidbYWxsb3ddJzsNCivorbQ+J1tyZXByaW1hbmRdJzsNCivorbc+J1twcm90ZWN0XSc7DQor6K29PidbZmFtZV0nOw0KK+iugD4nW3JlYWRdJzsNCivoroM+J1twcmFpc2VdJzsNCivoroo+J1tjaGFuZ2VdJzsNCivorow+J1tmZWFzdF0nOw0KK+iujj4nW2VuZW15XSc7DQor6K6QPidbZW5lbXldJzsNCivorpI+J1tzbGFuZGVyXSc7DQor6K6TPidbYWxsb3ddJzsNCivorpY+J1twcm9waGVjeV0nOw0KK+iumT4nW2NoZWVyXSc7DQor6K6aPidbcHJhaXNlXSc7DQor6LC3PidbdmFsbGV5XSc7DQor6LC6PidbdGhlIG1vdXRoIG9mIGEgdmFsbGV5XSc7DQor6LC/PidbdmFsbGV5XSc7DQor6LGBPidbb3BlbiB1cF0nOw0KK+ixhj4nW2JlYW5zXSc7DQor6LGIPidbaG93PyB3aGF0P10nOw0KK+ixij4nW2FidW5kYW50XSc7DQor6LGMPidbcGVhc10nOw0KK+ixjj4nW3ZlcnRpY2FsXSc7DQor6LGQPidbYWJ1bmRhbnRdJzsNCivosZU+J1twaWdzXSc7DQor6LGaPidbc21hbGwgcGlnXSc7DQor6LGhPidbZWxlcGhhbnRdJzsNCivosaI+J1tkb21lc3RpYyBhbmltYWxzXSc7DQor6LGqPidbYnJhdmVdJzsNCivosas+J1tyZWxheGVkXSc7DQor6LGsPidbcGlnXSc7DQor6LG4PidbcmFkaWNhbCAxNTNdJzsNCivosbk+J1tsZW9wYXJkXSc7DQor6LG6Pidbd29sZl0nOw0KK+ixvD4nW2ZveF0nOw0KK+iygj4nW21hcnRlbl0nOw0KK+iyhT4nW2JyYXZlXSc7DQor6LKJPidbYmFkZ2VyXSc7DQor6LKKPidbbGVvcGFyZF0nOw0KK+iyjD4nW2NvdW50ZW5hbmNlXSc7DQor6LKNPidbYSBmb3gtbGlrZSBhbmltYWxdJzsNCivoso4+J1tsaW9uXSc7DQor6LKUPidbZm94XSc7DQor6LKYPidbdGhlIHBhbnRoZXJdJzsNCivosp0+J1tzZWEgc2hlbGxdJzsNCivosp4+J1t2aXJ0dW91c10nOw0KK+iyoD4nW2xvYWRdJzsNCivosqE+J1t3ZWFsdGhdJzsNCivosqI+J1tvZmZlciB0cmlidXRlXSc7DQor6LKnPidbcG9vcl0nOw0KK+iyqD4nW2dvb2RzXSc7DQor6LKpPidbcGVkZGxlcl0nOw0KK+iyqj4nW2dyZWVkeV0nOw0KK+iyqz4nW3N0cmluZyBvZiAxMDAwIGNvaW5zXSc7DQor6LKsPidbb25lJydzIHJlc3BvbnNpYmlsaXR5XSc7DQor6LKtPidbbWF0dGVyXSc7DQor6LKuPidbbnVtYmVyIHR3b10nOw0KK+iyrz4nW3N0b3JlXSc7DQor6LKwPidbYm9ycm93XSc7DQor6LKyPidbcHJvcGVydHldJzsNCivosrM+J1tudW1iZXIgdHdvXSc7DQor6LK0PidbZXhwZW5zaXZlXSc7DQor6LK2PidbZGVjcmVhc2VdJzsNCivosrc+J1tidXldJzsNCivosrg+J1tsZW5kXSc7DQor6LK7PidbZXhwZW5zZXNdJzsNCivosrw+J1twYXN0ZSB0b10nOw0KK+iyvT4nW2dpdmUgdG9dJzsNCivosr8+J1t0cmFkZV0nOw0KK+izgD4nW2NvbmdyYXR1bGF0ZV0nOw0KK+izgT4nW2ZvcmdlIGFoZWFkXSc7DQor6LOCPidbYnJpYmVdJzsNCivos4M+J1tyZW50XSc7DQor6LOEPidbYnJpYmVdJzsNCivos4c+J1twcm9wZXJ0eV0nOw0KK+iziD4nW3N1cm5hbWVdJzsNCivos4o+J1t0aGllZl0nOw0KK+izjT4nW2Jvb3R5XSc7DQor6LOOPidbbWVhbl0nOw0KK+izkT4nW3JlbGlldmVdJzsNCivos5M+J1tndWVzdF0nOw0KK+izmj4nW2dpdmVdJzsNCivos5s+J1toZWxwXSc7DQor6LOcPidbZ2l2ZV0nOw0KK+iznj4nW3Jld2FyZF0nOw0KK+izoD4nW2luZGVtbmlmeV0nOw0KK+izoj4nW3ZpcnR1b3VzXSc7DQor6LOjPidbc2VsbF0nOw0KK+izpD4nW21lYW5dJzsNCivos6Y+J1t0YXhdJzsNCivos6o+J1ttYXR0ZXJdJzsNCivos60+J1tiZXRdJzsNCivos7o+J1ttYWtlIG1vbmV5XSc7DQor6LO7PidbZ2lmdCBvZiBtb25leSBoZWxwIHBheSBmdW5lcmFsXSc7DQor6LO8PidbYnV5XSc7DQor6LO9PidbY29tcGV0ZV0nOw0KK+i0hD4nW2dpZnQgc3VwZXJpb3JdJzsNCivotIU+J1t1bm5lY2Vzc2FyeV0nOw0KK+i0hz4nW2FmZmFibGVdJzsNCivotIg+J1tnaXZlIHByZXNlbnRdJzsNCivotIo+J1toZWxwXSc7DQor6LSLPidbZmFsc2VdJzsNCivotI0+J1tzdXBwb3J0XSc7DQor6LSPPidbd2luXSc7DQor6LSQPidbZmFyZXdlbGwgcHJlc2VudF0nOw0KK+i0kz4nW2Jvb3R5XSc7DQor6LSUPidbc3Ryb25nXSc7DQor6LSWPidbYnV5XSc7DQor6LWkPidbcmVkXSc7DQor6LWmPidbZm9yZ2l2ZV0nOw0KK+i1pz4nW2JsdXNoXSc7DQor6LWrPidbYnJpZ2h0XSc7DQor6LWtPidbcmVkZGlzaCBicm93bl0nOw0KK+i1sD4nW3dhbGtdJzsNCivotbE+J1t3YWxrXSc7DQor6LWzPidbZ3JhbmRdJzsNCivotbQ+J1tnbyB0b10nOw0KK+i1tz4nW3Jpc2VdJzsNCivotoE+J1t0YWtlIGFkdmFudGFnZSBvZl0nOw0KK+i2hT4nW2p1bXAgb3Zlcl0nOw0KK+i2ij4nW2V4Y2VlZF0nOw0KK+i2mT4nW3N1cm5hbWVdJzsNCivotqM+J1t3aGF0IGF0dHJhY3RzIG9uZScncyBhdHRlbnRpb25dJzsNCivotqg+J1toYXN0ZW5dJzsNCivotrM+J1tmb290XSc7DQor6La6Pidbc2l0IGNyb3NzLWxlZ2dlZF0nOw0KK+i2vj4nW3RvZV0nOw0KK+i3gj4nW2NyZWVwaW5nXSc7DQor6LeLPidbZ28gYnkgZm9vdF0nOw0KK+i3jD4nW3N0dW1ibGVdJzsNCivot48+J1tzaXQgY3Jvc3MtbGVnZ2VkXSc7DQor6LeWPidbc29sZSAob2YgdGhlIGZvb3QpXSc7DQor6LeaPidbc3RhZ2dlcl0nOw0KK+i3mz4nW2xhbWVdJzsNCivot50+J1tkaXN0YW5jZV0nOw0KK+i3nz4nW2hlZWxdJzsNCivot6E+J1tzZWFyY2hdJzsNCivot6M+J1tiYXJlIGZvb3RlZF0nOw0KK+i3qD4nW3N0cmFkZGxlXSc7DQor6LeqPidba25lZWxdJzsNCivot6s+J1tzb3VuZCBvZiBmb290c3RlcHNdJzsNCivot68+J1tyb2FkXSc7DQor6LezPidbanVtcF0nOw0KK+i3tT4nW3RyYW1wbGVdJzsNCivot7w+J1tiZW50XSc7DQorIyLot78+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivouIg+J1tuZWdsZWN0XSc7DQor6LiJPidbaG9wXSc7DQor6LiKPidbbGVhcF0nOw0KK+i4jz4nW3N0ZXAgb25dJzsNCivouJA+J1t0cmFtcGxlXSc7DQor6LidPidbYW5rbGVdJzsNCivouJ4+J1tjcm91Y2hdJzsNCivouJ8+J1toZXNpdGF0ZV0nOw0KK+i4qj4nW2Zvb3RwcmludHNdJzsNCivouLA+J1tleGNlZWRdJzsNCivouLQ+J1tsZWFwXSc7DQor6Li1PidbaGVlbF0nOw0KK+i5gj4nW3RyYW1wbGUgdW5kZXIgZm9vdF0nOw0KK+i5hD4nW2hvb2ZdJzsNCivouYc+J1tsYW1lXSc7DQor6LmIPidbc3RhbXAgZmVldF0nOw0KK+i5iT4nW2Vycm9yXSc7DQor6LmKPidbZm9vdHBhdGhdJzsNCivouYw+J1t3YWxrIHJhcGlkbHldJzsNCivouZA+J1t0YWtlIHNob3J0IHN0ZXBzXSc7DQor6LmVPidbY2xlYXIgd2F5XSc7DQor6LmZPidbdXJnZW50XSc7DQor6LmfPidbdHJhY2VdJzsNCivouaA+J1tzdGVwIG9uXSc7DQor6LmjPidbdG8ganVtcCBvdmVyXSc7DQor6LmkPidbZm9vdHByaW50c10nOw0KK+i5sj4nW3NxdWF0XSc7DQor6Lm0Pidba2lja10nOw0KK+i5tj4nW3N0dW1ibGVdJzsNCivoubw+J1t3ZWJiZWQgZmVldCBvZiB3YXRlcmZvd2xdJzsNCivouoE+J1t0ZW5zZV0nOw0KK+i6hD4nW2NyaXBwbGVdJzsNCivouoU+J1t3YWxrIGNhcmVmdWxseV0nOw0KK+i6hz4nW2hlc2l0YXRlXSc7DQor6LqKPidbaGVzaXRhdGVdJzsNCivouos+J1thc2NlbmRdJzsNCivouo0+J1tza2lwXSc7DQor6LqRPidbd2F2ZXJdJzsNCivoupM+J1tzdHVtYmxlXSc7DQor6LqUPidbZm9sbG93IGluXSc7DQor6LqZPidbdHJhbXBsZSBkb3duXSc7DQor6LqhPidbdHJlYWRdJzsNCivouqo+J1t0cmFtcGxlIGRvd25dJzsNCivouqs+J1tib2R5XSc7DQor6LqsPidbYm9keV0nOw0KK+i6rz4nW2JvZHldJzsNCivourA+J1tib2R5XSc7DQor6LqxPidbaGlkZV0nOw0KKyMi6Lq6PidbbGllIGRvd25dJyIsDQorIyLou4Q+J1t0byBnb3Zlcm5dJyIsDQor6LuGPidbYm9keV0nOw0KKyMi6LuGPidbYm9keV0nIiwNCivou4o+J1tjYXJ0XSc7DQor6LuLPidbY3J1c2ggYnkgd2VpZ2h0XSc7DQor6LuMPidbdHJhY2tdJzsNCivou40+J1thcm15XSc7DQor6LuSPidbY2FycmlhZ2VdJzsNCivou5s+J1t5b2tlXSc7DQor6LufPidbc29mdF0nOw0KK+i7oj4nW3NoaWZ0XSc7DQor6LujPidbcnVtYmxlXSc7DQor6LurPidbY3Jvc3MgYm9hcmQgYXQgcmVhciBvZiBjYXJyaWFnZV0nOw0KK+i7uD4nW2F4bGVdJzsNCivou7s+J1theGxlXSc7DQor6Lu8PidbcnVzaCBmb3J0aF0nOw0KK+i7vT4nW2xpZ2h0XSc7DQor6Lu+PidbaG9yaXpvbnRhbCB3b29kZW4gYmFyIGluIGZyb250IG9mIGEgc2VkYW4gY2hhaXJdJzsNCivovIM+J1tjb21wYXJlXSc7DQor6LyFPidbY2hhcmlvdF0nOw0KK+i8iT4nW2xvYWRdJzsNCivovIo+J1tsb3cgcmVhciBwb3J0aW9uIG9mIGNhcnRdJzsNCivovIw+J1tudW1lcmFyeSBhZGp1bmN0IGZvciB2ZWhpY2xlc10nOw0KK+i8kj4nW3NpZGVzIG9mIGNoYXJpb3Qgd2hlcmUgd2VhcG9uc10nOw0KK+i8kz4nW21vdXJuXSc7DQor6LyUPidbY2hlZWsgYm9uZV0nOw0KK+i8lT4nW2xpZ2h0XSc7DQor6LyZPidbc2lkZXMgb2YgY2hhcmlvdCB3ZXJlIHdlYXBvbnNdJzsNCivovJs+J1tudW1lcmFyeSBhZGp1bmN0IGZvciB2ZWhpY2xlc10nOw0KK+i8nD4nW3N1cHBseSBjYXJ0XSc7DQor6LydPidbYnJpZ2h0bmVzc10nOw0KK+i8nz4nW3N0b3BdJzsNCivovKY+J1toYW5kLWNhcnRdJzsNCivovKk+J1tnZW5lcmF0aW9uXSc7DQor6LyqPidbd2hlZWxdJzsNCivovK8+J1tnYXRoZXIgdXBdJzsNCivovLM+J1todWJzIG9mIHdoZWVsXSc7DQor6Ly4PidbdHJhbnNwb3J0XSc7DQor6Ly5PidbdHdvIHBpZWNlcyBvZiB3b29kIHVuZGVybmVhdGggY2FdJzsNCivovLs+J1tzcG9rZXMgb2Ygd2hlZWxdJzsNCivovL4+J1t0dXJuIG92ZXJdJzsNCivovL8+J1tjYXJ0XSc7DQor6L2CPidbaHViIG9mIHdoZWVsXSc7DQor6L2EPidbbGluY2hwaW4gb2Ygd2hlZWxdJzsNCivovYU+J1theGxlXSc7DQor6L2GPidbd2luZGxhc3NdJzsNCivovYk+J1tzaGlmdF0nOw0KK+i9jD4nW3NsZWRdJzsNCivovY0+J1t3YWdvbiBydXRzXSc7DQor6L2OPidbc2VkYW4tY2hhaXJdJzsNCivovZc+J1tmYWlsXSc7DQor6L2cPidbaGVhcnNlXSc7DQor6L2fPidbcnVtYmxlXSc7DQor6L2hPidbYnJpZGxlIG9mIGhvcnNlXSc7DQor6L2iPidbcnVuIG92ZXIgc29tZXRoaW5nIHdpdGggdmVoaWNsZV0nOw0KKyMi6L2jPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6L2kPidbcHVsbGV5XSc7DQor6L6bPidbYml0dGVyXSc7DQor6L6cPidbY3JpbWVdJzsNCivovp4+J1t3b3Jkc10nOw0KK+i+nz4nW2xhd10nOw0KK+i+oz4nW3BlcHBlcnldJzsNCivovqc+J1ttYW5hZ2VdJzsNCivovqg+J1tkaXN0aW5ndWlzaF0nOw0KK+i+rT4nW3dvcmRzXSc7DQor6L6uPidbYnJhaWRdJzsNCivovq8+J1tkaXNwdXRlXSc7DQor6L6wPidbZWFybHkgbW9ybmluZ10nOw0KK+i+sT4nW2h1bWlsaWF0ZV0nOw0KK+i+sj4nW2FncmljdWx0dXJlXSc7DQor6L63Pidbc21vb3RoXSc7DQor6L66PidbZWRnZV0nOw0KK+i+uz4nW2Nyb3Nzcm9hZHNdJzsNCivovrw+J1tjcm93ZCBpbnRvXSc7DQor6L6/PidbZm9sbG93XSc7DQor6L+CPidbZG9jdHJpbmFpcmVdJzsNCivov4Q+J1tleHRlbmRdJzsNCivov4U+J1txdWlja10nOw0KK+i/jj4nW3JlY2VpdmVdJzsNCivov5E+J1tuZWFyXSc7DQor6L+UPidbcmV0dXJuXSc7DQor6L+aPidbdmVyeV0nOw0KK+i/oj4nW2Zhcl0nOw0KK+i/pT4nW2Rpc3RhbnRdJzsNCivov6Y+J1tjaGFyYWN0ZXIgZm9yIHRyYW5zbGl0ZXJhdGlvbl0nOw0KK+i/qT4nW2JlIG5lYXJdJzsNCivov6o+J1tlbmxpZ2h0ZW5dJzsNCivov6s+J1tjb2VyY2VdJzsNCivov60+J1tyZXBlYXRlZGx5XSc7DQor6L+vPidbZXNjYXBlXSc7DQor6L+wPidbbmFycmF0ZV0nOw0KK+i/tD4nW3Jldm9sdmVdJzsNCivov7c+J1tiZXdpdGNoXSc7DQor6L+4PidbZ3VzaCBvdXRdJzsNCivov7k+J1t0cmFjZXNdJzsNCivov7o+J1t0aGVuXSc7DQor6L+9PidbcHVyc3VlXSc7DQor6YCAPidbc3RlcCBiYWNrXSc7DQor6YCBPidbc2VlIG9mZl0nOw0KK+mAgz4nW2VzY2FwZV0nOw0KK+mAhT4nW21lZXQgdW5leHBlY3RlZGx5XSc7DQor6YCGPidbZGlzb2JleV0nOw0KK+mAiz4nW2ZsZWVdJzsNCivpgI0+J1tyYW1ibGVdJzsNCivpgI4+J1tzdHJvbmddJzsNCivpgI8+J1twZW5ldHJhdGVdJzsNCivpgJA+J1tjaGFzZV0nOw0KK+mAkT4nW2NvbGxlY3RdJzsNCivpgJM+J1toYW5kIG92ZXJdJzsNCivpgJQ+J1t3YXldJzsNCivpgJU+J1twYXNzIGJ5XSc7DQor6YCWPidbZmFyXSc7DQor6YCXPidbdGVtcHRdJzsNCivpgJk+J1t0aGlzXSc7DQor6YCaPidbcGFzcyB0aHJvdWdoXSc7DQor6YCdPidbcGFzcyBhd2F5XSc7DQor6YCePidbaW5kdWxnZSBvbmVzZWxmXSc7DQor6YCfPidbcXVpY2tdJzsNCivpgKA+J1tjb25zdHJ1Y3RdJzsNCivpgKE+J1tyZXRyZWF0XSc7DQor6YCiPidbY29tZSB1cG9uXSc7DQor6YCjPidbam9pbl0nOw0KKyMi6YCmPidbbWVhbmRlcmluZ10nIiwNCivpgK4+J1tzZWl6ZV0nOw0KK+mAsT4nW3dlZWtdJzsNCivpgLI+J1thZHZhbmNlXSc7DQor6YC1PidbdGhvcm91Z2hmYXJlXSc7DQor6YC2Pidbd2luZGluZ10nOw0KK+mAuD4nW2ZsZWVdJzsNCivpgLk+J1thcnJpdmUgYXRdJzsNCivpgLw+J1tjb21wZWxdJzsNCivpgL4+J1tnbyBvdmVyXSc7DQor6YGBPidbaGlkZV0nOw0KK+mBgj4nW2NvbXBseSB3aXRoXSc7DQor6YGFPidbbGF0ZV0nOw0KK+mBhz4nW21lZXRdJzsNCivpgYk+J1tzcHldJzsNCivpgYo+J1t3YW5kZXJdJzsNCivpgYs+J1tsdWNrXSc7DQor6YGNPidbZXZlcnl3aGVyZV0nOw0KK+mBjj4nW3Bhc3NdJzsNCivpgY8+J1tzdG9wXSc7DQor6YGQPidbYWZhcl0nOw0KK+mBkT4nW2xlaXN1cmVdJzsNCivpgZI+J1tzdHJvbmddJzsNCivpgZM+J1twYXRoXSc7DQor6YGUPidbYXJyaXZlIGF0XSc7DQor6YGVPidbZGlzb2JleV0nOw0KKyMi6YGVPidbZGlzb2JleV0nIiwNCivpgZg+J1t0byBtZWV0XSc7DQor6YGZPidbZmFyIGF3YXldJzsNCivpgZw+J1todW1ibGVdJzsNCivpgZ4+J1toYW5kIG92ZXJdJzsNCivpgaA+J1tkaXN0YW50XSc7DQor6YGhPidbZ28gdXBzdHJlYW1dJzsNCivpgaM+J1tzZW5kXSc7DQor6YGlPidbZmFyIGF3YXldJzsNCivpgag+J1tyYW1ibGVdJzsNCivpgak+J1ttYXRjaF0nOw0KK+mBrT4nW2NvbWUgYWNyb3NzXSc7DQor6YGuPidbY292ZXJdJzsNCivpga8+J1tkZWNlaXZlXSc7DQor6YGyPidbbGF0ZV0nOw0KK+mBtT4nW29iZXldJzsNCivpgbY+J1tlbnR3aW5lXSc7DQor6YG3PidbbW92ZV0nOw0KK+mBuD4nW2Nob29zZV0nOw0KK+mBuj4nW2xvc2VdJzsNCivpgbw+J1tkaXN0YW50XSc7DQor6YG9Pidbc3VkZGVubHldJzsNCivpgb8+J1thdm9pZF0nOw0KK+mCgD4nW2ludml0ZV0nOw0KK+mCgT4nW3Rha2UgYSBiaWcgc3RyaWRlXSc7DQor6YKCPidbdW5leHBlY3RlZCBtZWV0aW5nXSc7DQor6YKDPidbcHJvZm91bmRdJzsNCivpgoQ+J1tzdGlsbF0nOw0KK+mChz4nW2JlIG5lYXJdJzsNCivpgok+J1tlZGdlXSc7DQor6YKKPidbZWRnZV0nOw0KK+mCjz4nW3BhdHJvbF0nOw0KK+mCkT4nW2FyZWFdJzsNCivpgqM+J1t0aGF0XSc7DQor6YKmPidbbmF0aW9uXSc7DQor6YKoPidbdmlsbGFnZV0nOw0KK+mCqj4nW3dyb25nXSc7DQor6YKvPidbY2l0eSBpbiBoZWJlaSBwcm92aW5jZV0nOw0KK+mCsT4nW3N1cm5hbWVdJzsNCivpgrU+J1tzdXJuYW1lXSc7DQor6YK4Pidbb2ZmaWNpYWwgcmVzaWRlbmNlXSc7DQor6YOBPidbc3dlZXQgc21lbGxpbmddJzsNCivpg4o+J1tzdWJ1cmJzXSc7DQor6YOOPidbZ2VudGxlbWFuXSc7DQor6YObPidbb3V0ZXIgd2FsbHMgb2YgY2l0eV0nOw0KK+mDoT4nW2FkbWluaXN0cmF0aXZlIGRpdmlzaW9uXSc7DQor6YOiPidbc3RhdGUgaW4gdG9kYXknJ3MgaHViZWkgcHJvdmluY2VdJzsNCivpg6Q+J1tjcmFja10nOw0KK+mDqD4nW3BhcnRdJzsNCivpg60+J1tvdXRlciBwYXJ0IChvZiBhIGNpdHkpXSc7DQor6YO1PidbcG9zdGFsXSc7DQor6YO3PidbY291bnRyeV0nOw0KK+mDvT4nW21ldHJvcG9saXNdJzsNCivphII+J1todWJlaSBwcm92aW5jZV0nOw0KK+mEkj4nW25hbWUgb2YgYW4gYW5jaWVudCBzdGF0ZV0nOw0KK+mEmT4nW21lYW5dJzsNCivphK0+J1tzdGF0ZSBpbiB0b2RheScncyBoZW5hbl0nOw0KK+mEsD4nW25laWdoYm9yXSc7DQor6YSyPidbY291bnR5IGluIGhlYmVpIHByb2luY2V2XSc7DQor6YWJPidbdGVudGggaW4gc2VyaWVzIG9mIHR3ZWx2ZSBjeWNsaWNdJzsNCivphYo+J1tkcnVua10nOw0KK+mFiz4nW2NoaWVmIG9mIHRyaWJlXSc7DQor6YWMPidbc2VydmUgd2luZV0nOw0KK+mFjT4nW21hdGNoXSc7DQor6YWOPidbZG91YmxlLWZlcm1lbnRlZCB3aW5lXSc7DQor6YWSPidbd2luZV0nOw0KK+mFlD4nW2ludG94aWNhdGVkXSc7DQor6YWWPidbd2luZSB3aXRoIGJpcmQgcG9pc29uIGFkZGVkXSc7DQorIyLphZg+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivphaI+J1t0b2FzdCBvbmUnJ3MgaG9zdCB3aXRoIHdpbmVdJzsNCivphaM+J1tlbmpveSBpbnRveGljYW50c10nOw0KK+mFpT4nW2J1dHRlcl0nOw0KK+mFqT4nW2RydW5rXSc7DQor6YWqPidbY3JlYW1dJzsNCivphaw+J1t0b2FzdF0nOw0KK+mFsj4nW2hhbmdvdmVyXSc7DQorIyLphbI+J1toYW5nb3Zlcl0nIiwNCivphbU+J1t5ZWFzdF0nOw0KK+mFtz4nW3N0cm9uZ10nOw0KK+mFuD4nW3RhcnRdJzsNCisjIumGgT4nW2Ega2luZCBvZiBncmVlbi1jb2xvcmVkIHdpbmVdJyIsDQor6YaHPidbcmljaF0nOw0KK+mGiT4nW2ludG94aWNhdGVkXSc7DQor6YaLPidbdmluZWdhcl0nOw0KK+mGjT4nW2Vzc2VudGlhbCBvaWwgb2YgYnV0dGVyXSc7DQor6YaQPidbcHVyZXN0IGNyZWFtXSc7DQor6YaSPidbd2FrZSB1cF0nOw0KK+mGlz4nW3RvIGJyZXcgZm9yIHRoZSBzZWNvbmQgdGltZV0nOw0KK+mGnD4nW3VnbHkgbG9va2luZ10nOw0KK+mGoj4nW21pbmNlZCBwaWNrbGVkIG1lYXRdJzsNCivphqQ+J1thbnkgamFtLWxpa2Ugb3IgcGFzdGUtbGlrZSBmb29kXSc7DQor6YaqPidbdW5jbGVhciB3aW5lXSc7DQor6YarPidbY3VyZV0nOw0KK+mGrz4nW3ZpbmVnYXJdJzsNCivphrQ+J1tzd2VldCB3aW5lXSc7DQor6Ya1PidbY29udHJpYnV0ZSBmb3IgZHJpbmtzXSc7DQor6Ya4PidbYnJld10nOw0KK+mGuj4nW2dldCBkcnVua10nOw0KK+mHgD4nW2JyZXddJzsNCivph4E+J1tzbWVhciB3aXRoIGJsb29kIGluIHNhY3JpZmljZV0nOw0KK+mHhj4nW2Rpc3Rpbmd1aXNoXSc7DQor6YeHPidbY29sbGVjdF0nOw0KK+mHiD4nW2ludGVycHJldGVdJzsNCivph4k+J1tnbGF6ZV0nOw0KK+mHiz4nW2ludGVycHJldGVdJzsNCivph4w+J1t1bml0IG9mIGRpc3RhbmNlXSc7DQor6YeNPidbaGVhdnldJzsNCivph44+J1tvcGVuIGNvdW50cnldJzsNCivph48+J1ttZWFzdXJlXSc7DQor6YeQPidbbWFuYWdlXSc7DQor6YeRPidbZ29sZF0nOw0KK+mHlj4nW2tuaWZlXSc7DQor6YeYPidbbmFpbF0nOw0KKyMi6YebPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6YecPidbY2F1bGRyb25dJzsNCivph50+J1tuZWVkbGVdJzsNCisjIumHnz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+mHoT4nW2NhdWxkcm9uXSc7DQor6YejPidbZmlzaF0nOw0KK+mHpj4nW2J1dHRvbl0nOw0KK+mHpz4nW2JyYWNlbGV0XSc7DQor6Ye1Pidbb3JuYW1lbnRhbCBoYWlycGluXSc7DQorIyLph7Y+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivph7w+J1tzd29yZF0nOw0KKyMi6Ye/PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6YiNPidbYmx1bnRdJzsNCivpiI4+J1tob29rXSc7DQor6YiRPidbcGxhdGVdJzsNCivpiJQ+J1twYXBlciBtb25leV0nOw0KK+mIlT4nW2J1dHRvbl0nOw0KK+mInj4nW3VuaXQgb2YgbWVhc3VyZSBlcXVpdmFsZW50IHRoaXJ0XSc7DQor6YipPidbZmlyZXBsYWNlXSc7DQor6YisPidbYmVsbF0nOw0KK+mItD4nW2JlbGxdJzsNCivpiLc+J1tjb2JhbHRdJzsNCivpiL8+J1toYWlycGluXSc7DQor6YmEPidbaXJvbl0nOw0KK+mJhT4nW3N0ZWVsXSc7DQor6YmIPidbdGhhbGxpdW1dJzsNCivpiYk+J1tkZXZpY2UgZm9yIGNhcnJ5aW5nIGEgdHJpcG9kXSc7DQor6YmLPidbY2FycGVudGVyJydzIHBsYW5lXSc7DQorIyLpiZA+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivpiZc+J1twaW5jZXJzXSc7DQor6YmaPidbcml2ZXRdJzsNCivpiZs+J1tsZWFkIHBsdW1idW1dJzsNCivpiZ4+J1ticm9hZC1heGVdJzsNCivpiaI+J1tlYXJ0aGVud2FyZSBiYXNpbl0nOw0KK+mJpD4nW2hvb2tdJzsNCivpiaY+J1traW5kIG9mIGdvbmcgdXNlZCBpbiBhbmNpZW50IHRpbV0nOw0KK+mJsT4nW21pbmVdJzsNCivpib4+J1tzcGVhcl0nOw0KK+mKgD4nW3NpbHZlcl0nOw0KK+mKgz4nW2FuY2llbnQgd2VhcG9uXSc7DQor6YqFPidbY29wcGVyXSc7DQor6YqRPidbbWlsbF0nOw0KK+mKkz4nW3dlaWdoXSc7DQor6YqVPidbaXJvbl0nOw0KK+mKlj4nW3VuaXQgb2Ygd2VpZ2h0XSc7DQor6YqYPidbaW5zY3JpYmVdJzsNCivpipo+J1tsYXJnZSBob2VdJzsNCivpips+J1tzaGFycF0nOw0KK+mKnD4nW2JpdF0nOw0KK+mKrT4nW21vbmV5XSc7DQor6Yq3PidbbWVsdF0nOw0KK+mKuT4nW3J1c3RdJzsNCivpi48+J1t0b25nc10nOw0KK+mLkj4nW3BvaW50IG9mIHNwZWFyXSc7DQor6YukPidbaG9lXSc7DQor6YupPidbcG9pbnQgb2Ygc3dvcmRdJzsNCivpi6o+J1tzcHJlYWQgb3V0XSc7DQor6YutPidbc2hhcnBdJzsNCivpi7I+J1tyaXZldF0nOw0KK+mLsz4nW21lbHRdJzsNCivpi7g+J1thIHNhd10nOw0KKyMi6Yu6PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6Yu8Pidbc3RlZWxdJzsNCivpjIY+J1t0aGUgY29sb3Igb2YgYSBtaW5lcmFsXSc7DQor6YyPPidbc29mdCBzdGVlbF0nOw0KK+mMkD4nW2dpbWxldF0nOw0KK+mMmD4nW2JhbGFuY2Ugd2VpZ2h0IG9uIHNjYWxlXSc7DQor6YyZPidbOCBvel0nOw0KK+mMmj4nW2NsYW5naW5nIHNvdW5kXSc7DQor6YygPidbc3BpbmRsZV0nOw0KK+mMoj4nW21vbmV5XSc7DQorIyLpjKM+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivpjKY+J1ticm9jYWRlXSc7DQor6YyoPidbYW5jaG9yXSc7DQor6YyrPidbdGluXSc7DQor6YysPidbc21lbHQgbWV0YWxzXSc7DQor6YyuPidbcnVuIG1ldGFsIGludG8gY3JhY2tzXSc7DQor6YyvPidbZXJyb3JdJzsNCivpjLI+J1tjb3B5XSc7DQorIyLpjLU+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCisjIumMuj4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KKyMi6Yy7PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQorIyLpjYQ+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivpjYs+J1tjb29raW5nLXBvdF0nOw0KK+mNjT4nW3BsYXRlXSc7DQor6Y2UPidbaGlnaF0nOw0KKyMi6Y2WPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6Y2bPidbZm9yZ2UgbWV0YWxdJzsNCisjIumNnD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+mNoD4nW3dlYXBvbl0nOw0KK+mNrD4nW3Nob3ZlbF0nOw0KK+mNrj4nW2JyYXNzXSc7DQor6Y21PidbZG9vciBib2x0XSc7DQor6Y28PidbbmVlZGxlXSc7DQor6Y2+PidbY3VwXSc7DQor6Y6MPidbc2lja2xlXSc7DQor6Y6UPidbZnVzZV0nOw0KK+mOlj4nW2xvY2tdJzsNCivpjpc+J1tyaWZsZV0nOw0KK+mOmj4nW2hhbW1lcl0nOw0KK+mOpz4nW2FybW9yXSc7DQor6Y6sPidbc3RvdmVdJzsNCivpjq0+J1t0b3duXSc7DQor6Y6uPidbdG93bl0nOw0KK+mOsD4nW21lYXN1cmUgb2Ygd2VpZ2h0IGZvciBnb2xkXSc7DQorIyLpjrk+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivpj4M+J1thcnJvd2hlYWRdJzsNCivpj4g+J1tjaGFpbl0nOw0KK+mPkD4nW3B1cmUgZ29sZF0nOw0KK+mPkT4nW2R5c3Byb3NpdW0gdGhlIGJhcmIgb2YgYW4gYXJyb3ddJzsNCivpj5Y+J1tmaWdodCBlbmRdJzsNCivpj5c+J1tzdHJpa2VdJzsNCivpj5g+J1t0aW5rbGVdJzsNCivpj50+J1t0cm93ZWxdJzsNCivpj6E+J1ttaXJyb3JdJzsNCivpj6Q+J1tjYXJ2ZV0nOw0KK+mPpT4nW3J1c3RdJzsNCivpj6g+J1tlbmdyYXZpbmcgdG9vbF0nOw0KK+mQgz4nW2N5bWJhbHNdJzsNCivpkIc+J1t2YW5hZGl1bV0nOw0KK+mQkD4nW2ZldHRlcnNdJzsNCivpkJM+J1tmZXJydWxlXSc7DQor6ZCUPidbZGFnZ2VyXSc7DQor6ZCYPidbY2xvY2tdJzsNCivpkJk+J1tsYW1wXSc7DQor6ZCaPidbc29mdCBzdGVlbF0nOw0KK+mQoT4nW2lyb25dJzsNCivpkKs+J1tlbmdyYXZpbmcgdG9vbF0nOw0KK+mQtT4nW2lyb25dJzsNCivpkLY+J1ttZXRhbCByaW5nXSc7DQor6ZC4PidbYmVsbF0nOw0KK+mQuj4nW2ZyeWluZyBwYW5dJzsNCisjIumRgT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+mRhD4nW21lbHRdJzsNCivpkZE+J1ttaXJyb3JdJzsNCivpkZI+J1ttaXJyb3JdJzsNCivpkZM+J1tzcGVhcl0nOw0KK+mRmj4nW2RyaWxsXSc7DQor6ZGbPidbbWluZV0nOw0KK+mRnj4nW3NvbGRlcl0nOw0KK+mRoD4nW21lbHRdJzsNCivpkaI+J1tmaWxlXSc7DQor6ZGqPidbZmlyZXBsYWNlXSc7DQor6ZGwPidba2V5XSc7DQor6ZG1PidbamFyXSc7DQor6ZG3PidbdHdlZXplcnNdJzsNCivpkbw+J1tnb25nXSc7DQor6ZG9PidbZHJpbGxdJzsNCivpkb4+J1tiZWxscyBodW5nIG9uIGhvcnNlXSc7DQor6ZG/PidbY2hpc2VsXSc7DQor6ZKBPidbYSBtYXR0b2NrXSc7DQor6ZW3PidbbG9uZ10nOw0KK+mWgD4nW2dhdGVdJzsNCivploI+J1tib2x0XSc7DQor6ZaDPidbZmxhc2hdJzsNCivploc+J1tzaHV0XSc7DQor6ZaJPidbc2h1dF0nOw0KKyMi6ZaJPidbc2h1dF0nIiwNCivplos+J1tvcGVuXSc7DQor6ZaPPidbaW50ZXJjYWxhcnldJzsNCivplpE+J1tmZW5jZV0nOw0KK+mWkz4nW2ludGVydmFsXSc7DQor6ZaUPidbbW91cm5dJzsNCisjIumWlD4nW21vdXJuXSciLA0KK+mWmD4nW3NsdWljZV0nOw0KK+mWmT4nW3F1YXJyZWxdJzsNCivplqA+J1tpbnRlcmNhbGFyeV0nOw0KK+mWoj4nW2Zyb250aWVyIHBhc3NdJzsNCivplqM+J1tjaGFtYmVyXSc7DQor6ZakPidbc21hbGwgc2lkZSBkb29yXSc7DQor6ZalPidbcG93ZXJmdWwgYW5kIGluZmx1ZW50aWFsIGdyb3VwXSc7DQor6ZanPidbYm9pc3Rlcm91c10nOw0KK+mWqD4nW3NtYWxsIGVudHJhbmNlXSc7DQor6ZatPidbdmlsbGFnZSBvZiB0d2VudHktZml2ZSBmYW1pbGllc10nOw0KK+mWsj4nW2V4YW1pbmVdJzsNCivplrk+J1tjYXN0cmF0ZV0nOw0KK+mWuz4nW3ZpbGxhZ2UgZ2F0ZV0nOw0KK+mWvD4nW2Jsb2NrXSc7DQor6Za+PidbdGhyZXNob2xkXSc7DQor6ZeDPidbYWxvbmVdJzsNCivpl4c+J1tjbG9zZV0nOw0KK+mXij4nW2Jyb2FkXSc7DQor6ZeMPidbZG9vciBzY3JlZW5dJzsNCivpl40+J1t0b3dlciBvdmVyIGNpdHkgZ2F0ZV0nOw0KK+mXlD4nW2Nsb3NlXSc7DQor6ZeVPidbd2F0Y2ggdG93ZXJdJzsNCivpl5Y+J1tydXNoIGluXSc7DQor6ZeYPidbc3RydWdnbGVdJzsNCivpl5w+J1tmcm9udGllciBwYXNzXSc7DQor6ZehPidbZXhwbGFpbl0nOw0KK+mXoj4nW29wZW5dJzsNCivpl6U+J1tkb29yXSc7DQor6ZicPidbbW91bmRdJzsNCivpmKE+J1tmb290cGF0aHMgYmV0d2VlbiBmaWVsZHNdJzsNCivpmKg+J1tpbiBkaXN0cmVzc10nOw0KK+mYqj4nW2hpbGxzaWRlIGZhcm1sYW5kXSc7DQor6ZiuPidbYW5jaWVudCBtdXNpY2FsIGluc3RydW1lbnQ6IHN1cm5hbWVdJzsNCivpmK8+J1tmb3VuZGF0aW9uXSc7DQor6ZiyPidbZGVmZW5kXSc7DQor6Zi7PidbaW1wZWRlXSc7DQor6Zi/PidbcHJlZml4IHRvIG5hbWVdJzsNCivpmYA+J1tzdGVlcCBiYW5rXSc7DQor6ZmCPidbZGFtXSc7DQor6ZmEPidbYWRoZXJlIHRvXSc7DQor6ZmLPidbbmFycm93XSc7DQor6ZmMPidbZm9vdCBwYXRoIGJldHdlZW4gcmljZSBmaWVsZHNdJzsNCivpmY0+J1tkZXNjZW5kXSc7DQorIyLpmY0+J1tkZXNjZW5kXSciLA0KK+mZkD4nW2JvdW5kYXJ5XSc7DQor6ZmbPidbc3RlcHMgbGVhZGluZyB0aHJvbmVdJzsNCivpmZw+J1tuYXJyb3ddJzsNCivpmZ0+J1ttb3VudGFpbiBwYXNzXSc7DQor6ZmePidbcHJvbW90ZV0nOw0KK+mZnz4nW2NsaW1iXSc7DQor6ZmiPidbY291cnR5YXJkXSc7DQor6ZmjPidbY29sdW1uXSc7DQor6ZmkPidbZWxpbWluYXRlXSc7DQor6ZmlPidbc3VibWVyZ2VdJzsNCisjIumZpT4nW3N1Ym1lcmdlXSciLA0KK+mZqj4nW2FjY29tcGFueV0nOw0KK+mZrD4nW2Nvcm5lcl0nOw0KK+mZsD4nW1wiZmVtYWxlXCIgcHJpbmNpcGxlXSc7DQor6ZmyPidbZnJvbnRpZXJdJzsNCivpmbM+J1tleGhpYml0XSc7DQor6Zm1PidbaGlsbF0nOw0KK+mZtj4nW3BvdHRlcnldJzsNCivpmbc+J1tzdWJtZXJnZV0nOw0KK+mZuD4nW2xhbmRdJzsNCivpmbo+J1tuYXJyb3cgcGFzc10nOw0KK+mZvT4nW1wibWFsZVwiIHByaW5jaXBsZV0nOw0KK+mahT4nW2Nvcm5lcl0nOw0KK+mahj4nW3Byb3NwZXJvdXNdJzsNCivpmog+J1tjb3ZlXSc7DQor6ZqKPidbdGVhbV0nOw0KK+maiz4nW1N1aSBkeW5hc3R5XSc7DQor6ZqNPidbZHJ5IGRpdGNoXSc7DQor6ZqOPidbc3RhaXJzXSc7DQor6ZqPPidbZm9sbG93XSc7DQor6ZqUPidbc2VwYXJhdGVdJzsNCivpmpU+J1tmYWxsXSc7DQor6ZqXPidbaGlnaF0nOw0KK+mamD4nW25hcnJvd10nOw0KK+mamT4nW2NyYWNrXSc7DQor6ZqbPidbYm9yZGVyXSc7DQor6ZqcPidbc2VwYXJhdGVdJzsNCisjIumanD4nW3NlcGFyYXRlXSciLA0KK+maoz4nW25laWdoYm9yXSc7DQor6ZqnPidbdHVubmVsXSc7DQor6ZqoPidbZm9sbG93XSc7DQor6ZqqPidbbmFycm93IHBhc3NdJzsNCivpmrA+J1tsb3ddJzsNCivpmrE+J1toaWRlXSc7DQor6ZqyPidbc3RhbGxpb25dJzsNCivpmrQ+J1ttb3VudGFpbiBsb2NhdGVkIGJldHdlZW4gc2hhYW54aV0nOw0KK+matj4nW3N1YnNlcnZpZW50XSc7DQor6Zq3PidbYmUgc3Vic2VydmllbnQgdG9dJzsNCivpmrg+J1tiZSBzdWJzZXJ2aWVudCB0b10nOw0KK+mauT4nW2JpcmRdJzsNCivpmrs+J1tzaW5nbGVdJzsNCivpmrw+J1thcXVpbGluZSAobm9zZSldJzsNCivpm4A+J1tzcGFycm93XSc7DQor6ZuBPidbd2lsZCBnb29zZV0nOw0KK+mbhD4nW21hbGUgb2Ygc3BlY2llc10nOw0KK+mbhT4nW2VsZWdhbnRdJzsNCivpm4Y+J1thc3NlbWJsZV0nOw0KK+mbhz4nW2VtcGxveV0nOw0KK+mbiT4nW3BoZWFzYW50XSc7DQor6ZuLPidbc3VwZXJpb3JdJzsNCivpm4w+J1tmZW1hbGVdJzsNCivpm40+J1toYXJtb255XSc7DQor6ZuOPidbb3NwcmV5XSc7DQor6ZuRPidbbWl4ZWRdJzsNCivpm5U+J1tlbmdyYXZlXSc7DQor6ZuWPidbYWx0aG91Z2hdJzsNCivpm5k+J1tzZXQgb2YgdHdvXSc7DQor6ZubPidbY2hpY2tdJzsNCivpm5w+J1ttaXhlZF0nOw0KK+mboj4nW2xlYXZlXSc7DQor6ZujPidbZGlmZmljdWx0XSc7DQor6ZuoPidbcmFpbl0nOw0KK+mbqj4nW3Nub3ddJzsNCisjIumbqz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+mbsD4nW2F0bW9zcGhlcmVdJzsNCivpm7I+J1tjbG91ZHNdJzsNCivpm7Y+J1t6ZXJvXSc7DQor6Zu3PidbdGh1bmRlcl0nOw0KK+mbuT4nW2hhaWxdJzsNCivpm7s+J1tlbGVjdHJpY2l0eV0nOw0KK+mcgD4nW25lZWRdJzsNCivpnIQ+J1tza3ldJzsNCivpnIY+J1thIHN1ZGRlbiBwZWFsIG9mIHRodW5kZXJdJzsNCivpnIc+J1tzaGFrZV0nOw0KK+mciD4nW3RvcnJlbnRpYWwgcmFpbnNdJzsNCivpnIo+J1tzcGlyaXRdJzsNCivpnI0+J1txdWlja2x5XSc7DQor6ZyOPidbbGlnaHQgcmFpbl0nOw0KK+mcjz4nW2ZhbGxpbmcgb2Ygc25vdyBhbmQgcmFpbl0nOw0KK+mckT4nW2JlIG1vaXN0ZW5lZF0nOw0KK+mckz4nW3JhaW5ib3ddJzsNCivpnJY+J1tsb25nIHNwZWxsIG9mIHJhaW5dJzsNCivpnJk+J1tzbGVldF0nOw0KK+mcnD4nW2Zyb3N0XSc7DQor6ZyePidbcm9zeSBjbG91ZHNdJzsNCivpnKQ+J1tkcmlwXSc7DQor6ZynPidbZm9nXSc7DQor6ZyqPidbbG9uZyBhbmQgaGVhdnkgcmFpbl0nOw0KK+mcsD4nW2hhaWxdJzsNCivpnLI+J1tkZXddJzsNCivpnLg+J1tydWxlIGJ5IG1pZ2h0IHJhdGhlciB0aGFuIHJpZ2h0XSc7DQor6Zy5PidbdGh1bmRlcl0nOw0KK+mcvT4nW2NsZWFyIHVwIGFmdGVyIHJhaW4gY2Vhc2UgYmUgYW5nXSc7DQor6Zy+PidbbWlzdHldJzsNCivpnYI+J1t0aHVuZGVyY2xhcF0nOw0KK+mdhD4nW2Nsb3VkeSBza3ldJzsNCivpnYY+J1tjbG91ZHkgc2t5XSc7DQor6Z2IPidbc3Bpcml0XSc7DQor6Z2JPidbY2xvdWR5IHNreV0nOw0KK+mdkj4nW2JsdWVdJzsNCivpnZY+J1twYWNpZnldJzsNCivpnZk+J1txdWlldF0nOw0KK+mdnD4nW3F1aWV0XSc7DQor6Z2ePidbbm90XSc7DQor6Z2gPidbbGVhbiBvbl0nOw0KK+mdoT4nW2RpdmlkZV0nOw0KK+mdoj4nW2ZhY2VdJzsNCisjIumdpD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+mdpj4nW3RpbWlkXSc7DQor6Z2oPidbZGltcGxlc10nOw0KK+mdqT4nW2xlYXRoZXJdJzsNCivpnas+J1tzdHJvbmcgYW5kIHBsaWFibGVdJzsNCivpna0+J1tzdHJvbmcgYW5kIHBsaWFibGVdJzsNCivpnbE+J1tzdHJvbmcgYW5kIHBsaWFibGVdJzsNCivpnbQ+J1tib290c10nOw0KKyMi6Z25PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6Z26Pidbc3RvY2tpbmddJzsNCivpnbw+J1t0YXJ0YXJzXSc7DQorIyLpnoE+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivpnoQ+J1t0byB3b3JrIGhpZGVzXSc7DQor6Z6FPidbbGVhdGhlciBzdHJhcCBvdmVyIGhvcnNlJydzIG5lY2tdJzsNCisjIumehT4nW2xlYXRoZXIgc3RyYXAgb3ZlciBob3JzZScncyBuZWNrXSciLA0KK+meiz4nW3Nob2VzXSc7DQor6Z6NPidbc2FkZGxlXSc7DQor6Z6PPidbYmluZF0nOw0KKyMi6Z6PPidbYmluZF0nIiwNCivpnpg+J1tzY2FiYmFyZF0nOw0KKyMi6Z6cPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6Z6gPidbYm93XSc7DQor6Z6jPidbdGFuXSc7DQor6Z6mPidbbGVhdGhlciBzdGFwXSc7DQor6Z6oPidbdHJpYmVdJzsNCivpnqs+J1tpbnRlcnJvZ2F0ZV0nOw0KK+merT4nW3doaXBdJzsNCisjIumesz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+metD4nW3NhZGRsZSB1cCBob3JzZV0nOw0KK+mfgz4nW3RhdGFyc10nOw0KK+mfhj4nW3N3aW5nXSc7DQor6Z+IPidbc29ja3NdJzsNCivpn4s+J1t0YW5uZWQgbGVhdGhlcl0nOw0KK+mfkz4nW2ZlbmNlXSc7DQor6Z+cPidbc2hlYXRoXSc7DQor6Z+tPidbc2NhbGxpb25dJzsNCivpn64+J1tzY2FsbGlvbl0nOw0KK+mfsj4nW2JyZWFrIG9yIHNtYXNoIGludG8gcGllY2VzXSc7DQor6Z+zPidbc291bmRdJzsNCivpn7U+J1tyaHltZV0nOw0KK+mftj4nW211c2ljIG9mIGVtcGVyb3IgU2h1bl0nOw0KK+mfuz4nW3JoeW1lXSc7DQor6Z+/PidbbWFrZSBzb3VuZF0nOw0KK+mggT4nW3BhZ2VdJzsNCivpoII+J1t0b3BdJzsNCivpoIM+J1ttb21lbnRdJzsNCivpoIU+J1tuZWNrXSc7DQor6aCGPidbb2JleV0nOw0KK+mgiD4nW211c3RdJzsNCivpoIw+J1tsYXVkXSc7DQor6aCPPidbZmx5IGRvd24gb3IgZG93bndhcmRdJzsNCivpoJA+J1twcmVwYXJlXSc7DQor6aCRPidbb2JzdGluYXRlXSc7DQor6aCSPidbY29uZmVyXSc7DQor6aCTPidbcGF1c2VdJzsNCivpoJc+J1tsZWFuIG9uZSBzaWRlXSc7DQor6aCYPidbbmVja10nOw0KK+mgmj4nW25lY2tdJzsNCivpoKE+J1tmbHkgdXB3YXJkXSc7DQor6aCkPidbY2hlZWtzXSc7DQor6aCsPidbY2hlZWtzXSc7DQor6aCtPidbaGVhZF0nOw0KK+mgtD4nW3JpY2UgdGFzc2VsXSc7DQor6aC3PidbY2hpbl0nOw0KK+mguD4nW25lY2tdJzsNCivpoLs+J1tmcmVxdWVudGx5XSc7DQor6aC8PidbcmVseV0nOw0KK+mgvT4nW3J1aW5lZF0nOw0KK+mhhj4nW2dyYWluXSc7DQor6aGLPidbbG93ZXIgcGFydCBvZiBmYWNlXSc7DQor6aGMPidbZm9yZWhlYWRdJzsNCivpoY0+J1tmb3JlaGVhZF0nOw0KK+mhjj4nW2phd10nOw0KK+mhjz4nW2ZhY2VdJzsNCivpoZQ+J1tmYWNlXSc7DQor6aGVPidbbWFuaWZlc3RdJzsNCivpoZg+J1tkZXNpcmVdJzsNCivpoZs+J1t0b3BdJzsNCivpoZ4+J1tjbGFzc10nOw0KK+mhpz4nW2xvb2sgYmFja10nOw0KK+mhqz4nW3NoaXZlcl0nOw0KK+mhrz4nW21hbmlmZXN0XSc7DQor6aGwPidbZnJvd25dJzsNCivpobE+J1tza3VsbF0nOw0KK+mhsz4nW3RoZSB0ZW1wb3JhbCBib25lXSc7DQor6aG0PidbY2hlZWsgYm9uZXNdJzsNCivpoqg+J1t3aW5kXSc7DQorIyLpoqg+J1t3aW5kXSciLA0KK+mirz4nW3NvdW5kIG9mIHdpbmRdJzsNCivporE+J1t0YWlwaG9vbl0nOw0KK+mitj4nW2N5Y2xvbmVdJzsNCivpo4M+J1t3aGlybHdpbmRdJzsNCivpo4Q+J1t3aGlybHdpbmRdJzsNCivpo4Y+J1t3aGlybHdpbmRdJzsNCivpo5s+J1tmbHldJzsNCivpo5w+J1tmbGlwIG92ZXJdJzsNCivpo58+J1tlYXRdJzsNCivpo6I+J1todW5nZXJdJzsNCivpo6k+J1tzdHVmZmVkIGR1bXBsaW5nc10nOw0KK+mjqz4nW3N1cmZlaXRlZF0nOw0KK+mjrT4nW29yZGVyXSc7DQor6aOuPidbZHJpbmtdJzsNCivpo68+J1tjb29rZWQgcmljZV0nOw0KK+mjsj4nW2RyaW5rXSc7DQor6aO0Pidbc3dlZXQtbWVhdHNdJzsNCivpo7w+J1tyYWlzZSBhbmltYWxzXSc7DQor6aO9PidbZWF0IGhlYXJ0aWx5XSc7DQor6aO+PidbZGVjb3JhdGVdJzsNCivppIM+J1tzdHVmZmVkIGR1bXBsaW5nc10nOw0KK+mkhT4nW3JpY2UtY2FrZXNdJzsNCivppIk+J1tyYXRpb25zIGFuZCBwYXkgZm9yIHNvbGRpZXJzXSc7DQor6aSKPidbcmFpc2VdJzsNCivppIw+J1tiYWl0XSc7DQor6aSQPidbZWF0XSc7DQor6aSSPidbaHVuZ3J5XSc7DQor6aSTPidbYmUgaHVuZ3J5XSc7DQor6aSUPidbZWF0XSc7DQor6aSYPidbc3VycGx1c10nOw0KKyMi6aSdPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6aSePidbZmFyZXdlbGwgcGFydHldJzsNCivppKA+J1tyaWNlLWNha2VzXSc7DQor6aShPidbcGFzdHJ5IGZpbGxpbmddJzsNCivppKQ+J1tpbmNpdGVdJzsNCivppKg+J1twdWJsaWMgYnVpbGRpbmddJzsNCivppKw+J1twb3JyaWRnZV0nOw0KK+mkrj4nW2EgbGVnZW5kYXJ5IGFuaW1hbF0nOw0KK+mkvT4nW21ha2UgcHJlc2VudCBvZiBmb29kXSc7DQor6aS+PidbZGlzdGlsbF0nOw0KKyMi6aWBPidbY2FycnkgbWVhbCB0byB3b3JrZXJzIGluIGZpZWxkXSciLA0KK+mlhT4nW3N0ZWFtZWQgYnJlYWRdJzsNCivppYk+J1t0aW1lIG9mIGZhbWluZSBvciBjcm9wIGZhaWx1cmVdJzsNCivppYs+J1tvZmZlciBmb29kIHN1cGVyaW9yXSc7DQor6aWMPidbZmVlZF0nOw0KK+mlkD4nW3Nwb2lsZWRdJzsNCivppZE+J1tzdGFydmVdJzsNCivppZI+J1tib3VudGlmdWxdJzsNCivppZU+J1tnbHV0dG9ub3VzXSc7DQor6aWXPidbaG9zdCBiYW5xdWV0XSc7DQor6aaWPidbaGVhZF0nOw0KK+mmlz4nW2NoZWVrYm9uZV0nOw0KK+mmmD4nW2N1dCBvZmYgbGVmdCBlYXJdJzsNCivpppk+J1tmcmFncmFudF0nOw0KK+mmpT4nW2ZyYWdyYW5jZV0nOw0KK+mmqD4nW2ZyYWdyYW50XSc7DQor6aasPidbaG9yc2VdJzsNCivppq0+J1tkcml2ZV0nOw0KK+mmrj4nW3N1cm5hbWVdJzsNCivpprM+J1tnbyBxdWlja2x5IG9yIHN3aWZ0bHldJzsNCivpprQ+J1t0YW1lXSc7DQorIyLpprw+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivpp4E+J1t2YXJpY29sb3JlZF0nOw0KKyMi6aeDPidbZ2FsbG9wXSciLA0KK+mnhT4nW3JlbGF5IHN0YXRpb25dJzsNCivpp4Y+J1tzcHVyIGhvcnNlIG9uXSc7DQor6aeIPidbc3B1ciBob3JzZSBvbl0nOw0KK+mnkD4nW3RvIGJlIHN0YXRpb25lZCBhdF0nOw0KK+mnkT4nW3RpcmVkXSc7DQor6aeSPidbY29sdF0nOw0KK+mnlT4nW2RyaXZlXSc7DQor6aeYPidbdGlyZWRdJzsNCivpp5s+J1tzYWlsXSc7DQor6aedPidbY2FtZWxdJzsNCivpp58+J1t0ZWFtIG9mIGZvdXIgaG9yc2VzXSc7DQor6aeiPidbdGVhbSBvZiBob3JzZXNdJzsNCivpp60+J1t0ZXJyaWZ5XSc7DQor6aeuPidbYSBraW5kIG9mIGZpZXJjZSBhbmltYWxdJzsNCivpp7E+J1t3aGl0ZSBob3JzZSB3LiBibGFjayBtYW5lXSc7DQorIyLpp7E+J1t3aGl0ZSBob3JzZSB3LiBibGFjayBtYW5lXSciLA0KK+mnuD4nW2dhbGxvcGluZ10nOw0KKyMi6ae7PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6ae/PidbZXhjZWxsZW50IGhvcnNlXSc7DQor6aiBPidbZ2FsbG9wIGhvcnNlXSc7DQor6aiFPidbcGllYmFsZCBob3JzZV0nOw0KK+mojj4nW3JpZGUgaG9yc2ViYWNrXSc7DQor6aiPPidbcGllYmFsZCBob3JzZV0nOw0KK+mokj4nW2hhcmFzc10nOw0KK+mokz4nW3Rlc3RdJzsNCivpqJk+J1tzd2luZGxlXSc7DQor6aioPidbZGFwcGxlZF0nOw0KK+moqz4nW3JhaXNlXSc7DQor6aiwPidbZmx5XSc7DQor6ai3PidbaGFyYXNzXSc7DQor6ai+PidbbXVsZV0nOw0KK+mpgD4nW3N1ZGRlbmx5XSc7DQor6amCPidbdHdvIG91dHNpZGUgb25lcyBpbiB0aHJlZSBob3JzZV0nOw0KK+mpgz4nW2NoYXJnZXJdJzsNCivpqYU+J1tzcHVyIGhvcnNlIG9uXSc7DQor6amNPidbZXhjZWxsZW50IGhvcnNlXSc7DQor6amVPidbc3Bpcml0ZWQgaG9yc2VdJzsNCivpqZc+J1t0ZXN0XSc7DQor6amaPidbZnJpZ2h0ZW5dJzsNCivpqZs+J1tyZWxheSBzdGF0aW9uXSc7DQor6amfPidbcHJvY2VkdXJlXSc7DQor6amiPidbZG9ua2V5XSc7DQor6amkPidbZ2FsbG9wIGFib3V0IHdpdGggaGVhZCB1cGxpZnRlZF0nOw0KK+mppT4nW3Rob3JvdWdoYnJlZCBob3JzZV0nOw0KK+mpqT4nW2hhcHB5XSc7DQor6amqPidbcHVyZSBibGFjayBob3JzZV0nOw0KK+mpqz4nW2hvcnNlc10nOw0KK+mqqD4nW2JvbmVdJzsNCivpqq0+J1tzaGluIGJvbmVdJzsNCivpqrA+J1tkaWVdJzsNCivpqrg+J1tza2VsdG9uXSc7DQor6aq8PidbYm9uZV0nOw0KK+mrgD4nW2J1dHRvY2tzXSc7DQor6auEPidbYm9uZSBtYXJyb3ddJzsNCivpq48+J1tza3VsbF0nOw0KK+mrkT4nW3NrdWxsXSc7DQor6auTPidbYm9uZSBtYXJyb3ddJzsNCivpq5Q+J1tib2R5XSc7DQor6auYPidbaGlnaF0nOw0KK+mrnj4nW2hpZ2hdJzsNCivpq58+J1toYWlyXSc7DQor6auiPidbd2lnXSc7DQor6aujPidbc2ltaWxhciB0b10nOw0KK+mrpj4nW2Zsb3dpbmcgaGFpciBvZiB5b3VuZyBjaGlsZF0nOw0KK+mrqj4nW2hhaXJdJzsNCivpq6s+J1tjaGlsZHJlbicncyBoYWlyIHN0eWxlXSc7DQor6autPidbbXVzdGFjaGVdJzsNCivpq64+J1toYWlyXSc7DQor6auvPidbYmVhcmRdJzsNCisjIumrsT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+mrtD4nW2Rpc2hldmVsZWQgaGFpcl0nOw0KKyMi6au3PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6au7PidbaGFpciByb2xsZWQgdXAgaW4gYSBidW5dJzsNCivprIY+J1tsYXhdJzsNCivprJg+J1tiZWF1dGlmdWwgaGFpcl0nOw0KK+msmj4nW2JlYXJkXSc7DQor6ayfPidbZHJlc3MgaGFpciBpbiBjb2lsZWQga25vdF0nOw0KK+msoj4nW2hhaXIgb24gdGVtcGxlc10nOw0KK+msoz4nW2hvcnNlJydzIG1hbmVdJzsNCivprKU+J1tzdHJ1Z2dsZV0nOw0KK+mspz4nW3F1YXJyZWxdJzsNCivprKg+J1tib2lzdGVyb3VzXSc7DQor6aypPidbZmV1ZF0nOw0KK+msqj4nW3N0cnVnZ2xlXSc7DQor6ayuPidbbG90cyAodG8gYmUgZHJhd24pXSc7DQor6ayvPidbc2FjcmlmaWNpYWwgd2luZV0nOw0KK+mssT4nW2x1eHVyaWFudF0nOw0KK+mssj4nW3R5cGUgb2YgY2FsZHJvbl0nOw0KK+msuz4nW3NlbGxdJzsNCivprLw+J1tnaG9zdF0nOw0KK+mtgT4nW2NoaWVmXSc7DQor6a2CPidbc291bF0nOw0KK+mtgz4nW2Ryb3VnaHQgZGVtb25dJzsNCivprYQ+J1t2aWdvcl0nOw0KK+mthT4nW2tpbmQgb2YgZm9yZXN0IGRlbW9uXSc7DQor6a2NPidbZGVtb25zXSc7DQor6a2OPidbYSBraW5kIG9mIG1vbnN0ZXJdJzsNCivprY8+J1traW5nZG9tIG9mIHdlaV0nOw0KK+mtkT4nW2EgbW9udGFpbiBkZW1vbiByZXNlbWJsaW5nIHRpZ2VyXSc7DQor6a2UPidbZGVtb25dJzsNCivprZg+J1tuaWdodG1hcmVdJzsNCivprZo+J1tmaXNoXSc7DQor6a2vPidbZm9vbGlzaF0nOw0KK+mttD4nW2JyZWFtXSc7DQorIyLproE+J1t0aGUgYm9uaXRvXSciLA0KK+mujj4nW3NoZWF0ZmlzaF0nOw0KK+mukT4nW2FiYWxvbmVdJzsNCivprpI+J1tjYXJwXSc7DQor6a6TPidbbWluY2VkIGFuZCBzYWx0ZWQgZmlzaF0nOw0KKyMi6a6TPidbbWluY2VkIGFuZCBzYWx0ZWQgZmlzaF0nIiwNCisjIumukz4nW21pbmNlZCBhbmQgc2FsdGVkIGZpc2hdJyIsDQor6a6fPidbYW5nbGVyZmlzaF0nOw0KK+muoD4nW2Ega2luZCBvZiBzaGFkIHdpdGggYSBoZWFkIGxpa2UgYSBzdHVyZ2Vvbl0nOw0KKyMi6a6oPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6a6qPidba2luZCBvZiBzdHVyZ2Vvbl0nOw0KK+muqz4nW3NoYXJrXSc7DQor6a6tPidbc2FsbW9uXSc7DQor6a6uPidbZnJlc2hdJzsNCisjIumutD4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KKyMi6a65PidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6a+APidbZ2lhbnQgZmlzaF0nOw0KK+mvhj4nW3RoZSBza2F0ZSBvciByYXldJzsNCivpr4k+J1tjYXJwXSc7DQor6a+KPidbc2hhcmtdJzsNCivpr48+J1thIGRpYWxlY3QuLi4uLi4uLiBuYW1lIG9mIGZpc2hdJzsNCisjIumvkT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KKyMi6a+SPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6a+UPidbbXVsbGV0XSc7DQor6a+WPidbbWFja2VyZWxdJzsNCivpr5s+J1twYWdyb3NvbXVzIG1ham9yXSc7DQor6a+hPidbaGVycmluZ10nOw0KK+mvoj4nW2NyeXB0b2JyYW5jaHVzIGphcG9uaWN1c10nOw0KKyMi6a+jPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6a+kPidbc3Bhd25dJzsNCivpr6g+J1t3aGFsZV0nOw0KK+mvsD4nW3NoZWF0XSc7DQorIyLpr7E+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCisjIumvsT4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KKyMi6a+xPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQorIyLpsIQ+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCisjIumwhj4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+mwiD4nW2ZsYXRmaXNoXSc7DQor6bCJPidbc3R1cmdlb25dJzsNCisjIumwij4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+mwjD4nW2xvYWNoXSc7DQor6bCNPidbbG9hY2hdJzsNCivpsJA+J1thbGxpZ2F0b3JdJzsNCivpsJI+J1thYmFsb25lXSc7DQor6bCTPidbZmlzaCBnaWxsc10nOw0KKyMi6bCUPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6bCVPidbc2hyaW1wXSc7DQor6bCbPidbc2FyZGluZV0nOw0KKyMi6bChPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQorIyLpsKQ+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivpsKU+J1todWdlIGZpc2hdJzsNCivpsK0+J1tmaW5dJzsNCivpsK4+J1tzYXJkaW5lXSc7DQorIyLpsK8+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCisjIumwrz4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+mwsj4nW2h1Z2Ugc2VhIHR1cnRsZV0nOw0KK+mwuT4nW3NraXBqYWNrXSc7DQorIyLpsLo+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivpsLs+J1tlZWxdJzsNCivpsL4+J1tzd2ltbWluZyBibGFkZGVyIG9mIGZpc2hdJzsNCisjIumxhj4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+mxhz4nW2FuZ2xlcmZpc2hdJzsNCivpsYg+J1tjb2RmaXNoXSc7DQor6bGSPidbYmFyYmVsXSc7DQor6bGXPidbZmlzaCBzY2FsZXNdJzsNCisjIumxmD4nW3N0dXJnZW9uXSciLA0KK+mxoD4nW21pbmNlZCBmaXNoXSc7DQor6bGnPidbc25ha2VoZWFkXSc7DQorIyLpsbY+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivpsbg+J1tzZWEgcGVyY2hdJzsNCivps6U+J1tiaXJkXSc7DQor6bOnPidbd2lsZCBkdWNrXSc7DQor6bOpPidbcGlnZW9uXSc7DQor6bOrPidbd2lsZCBnb29zZV0nOw0KK+mzrD4nW3dpbGQgZHVja10nOw0KKyMi6bOwPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6bOzPidbbWFsZSBwaG9lbml4XSc7DQor6bO0PidbY3J5IG9mIGJpcmQgb3IgYW5pbWFsXSc7DQor6bO2Pidba2l0ZV0nOw0KK+m0gz4nW3NocmlrZV0nOw0KK+m0hj4nW2JpcmQgcmVzZW1ibGluZyBzZWNyZXRhcnkgZmFsY29uXSc7DQor6bSHPidbYnVzdGFyZF0nOw0KK+m0iD4nW3dpbGQgZ29vc2VdJzsNCivptIk+J1tjcm93XSc7DQor6bSOPidbc2VhZ3VsbF0nOw0KK+m0kj4nW3NwZWNpZXMgb2YgbGFya10nOw0KK+m0lT4nW29zdHJpY2hdJzsNCivptJs+J1ttYWxlIG1hbmRhcmluIGR1Y2tdJzsNCivptJ8+J1traXRlXSc7DQor6bSjPidbc3BlY2llcyBvZiB0YWl3YW4gcGlnZW9uXSc7DQor6bSmPidbZmVtYWxlIG1hbmRhcmluIGR1Y2tdJzsNCivptKg+J1tkdWNrXSc7DQor6bSqPidbc3dvb3BdJzsNCivptKs+J1thIHNuaXBlXSc7DQor6bSsPidbb3Jpb2xlXSc7DQor6bS7Pidbc3BlY2llcyBvZiB3aWxkIHN3YW5dJzsNCisjIum0vj4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+m0vz4nW3BpZ2Vvbl0nOw0KKyMi6bWBPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6bWEPidba2l0ZV0nOw0KKyMi6bWEPidba2l0ZV0nIiwNCisjIum1hD4nW2tpdGVdJyIsDQorIyLptZA+J1suLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLl0nIiwNCivptZE+J1tjdWNrb29dJzsNCivptZk+J1thIHNocmlrZV0nOw0KK+m1nD4nW3BlbGljYW5dJzsNCivptZ0+J1tnb29zZV0nOw0KK+m1nj4nW2dvb3NlXSc7DQor6bWgPidbdGFyZ2V0XSc7DQor6bWhPidbc3BlY2llcyBvZiBwYXJyb3RdJzsNCisjIum1oT4nW3NwZWNpZXMgb2YgcGFycm90XSciLA0KK+m1rD4nW2ZhYnVsb3VzIGJpcmQgb2YgZW5vcm1vdXMgc2l6ZV0nOw0KK+m1rz4nW2JpcmRdJzsNCivptbI+J1ttYWdwaWVdJzsNCisjIum1uj4nWy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uXSciLA0KK+m2hz4nW3RocnVzaF0nOw0KK+m2iT4nW3F1YWlsXSc7DQor6baPPidbY2hpY2tlbl0nOw0KK+m2mj4nW29zcHJleV0nOw0KKyMi6bakPidbLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi5dJyIsDQor6bapPidbZHVja10nOw0KK+m2qz4nW3RocnVzaF0nOw0KK+m2rz4nW29yaW9sZV0nOw0KKyMi6baxPidbc29hcl0nIiwNCivptrQ+J1tjcmFuZV0nOw0KK+m2uD4nW1tub3QgZm91bmQgaW4gYW55IGRpY3Rpb25hcnldXSc7DQor6ba6Pidbd2FndGFpbF0nOw0KK+m2uz4nW2Ega2luZCBvZiBwaWdlb25dJzsNCivpt4E+J1tmaXNoaGF3ayBib3cgb3IgcHJvd10nOw0KK+m3gj4nW3NwYXJyb3cgaGF3a10nOw0KK+m3hD4nW2NoaWNrZW5dJzsNCivpt4Y+J1tiaXJkIG5hbWVdJzsNCivpt48+J1tiaXJkIG5hbWVdJzsNCivpt5M+J1twYXJ0cmlkZ2VdJzsNCivpt5k+J1toYXdrXSc7DQor6bemPidbd3Jlbl0nOw0KKyMi6berPidbdHVycXVvaXNlIGtpbmdmaXNoZXJdJyIsDQor6bevPidbd3Jlbl0nOw0KK+m3sj4nW2NvbmRvcl0nOw0KK+m3uD4nW3NuaXBlXSc7DQor6be5PidbZWFnbGVdJzsNCivpt7o+J1toZXJvbl0nOw0KK+m3vT4nW29yaWVudGFsIGJ1bGxmaW5jaF0nOw0KK+m4mj4nW3NwZWNpZXMgb2YgcGFycm90XSc7DQor6bibPidbY3JhbmVdJzsNCivpuJ4+J1tmYWJ1bG91cyBiaXJkXSc7DQor6bm1Pidbc2FsaW5lIHNvaWxdJzsNCivpubg+J1thbGthbGluZV0nOw0KK+m5uT4nW3NhbHR5XSc7DQor6bm9Pidbc2FsdF0nOw0KK+m5vz4nW2RlZXJdJzsNCivpuoE+J1tyb3VnaF0nOw0KK+m6iD4nW3NwZWNpZXMgb2YgZGVlcl0nOw0KK+m6iz4nW2Vsa10nOw0KK+m6jD4nW3N0YWddJzsNCivpupE+J1tmYXduXSc7DQor6bqSPidbbGVnZW5kYXJ5IGF1c3BpY2lvdXMgYW5pbWFsXSc7DQor6bqTPidbZm9vdCBvZiBoaWxsXSc7DQor6bqVPidbbXVudGphYyBkZWVyXSc7DQor6bqXPidbYmVhdXRpZnVsXSc7DQor6bqdPidbbXVzayBkZWVyXSc7DQor6bqfPidbZmVtYWxlIG9mIGNoaW5lc2UgdW5pY29ybl0nOw0KK+m6pT4nW3doZWF0XSc7DQor6bqmPidbd2hlYXRdJzsNCivpuqk+J1ticmFuXSc7DQor6bqqPidbZmxvdXJdJzsNCisjIum6qz4nW2Zsb3VyXSciLA0KK+m6uD4nW2JyYW5dJzsNCivpurk+J1t5ZWFzdF0nOw0KK+m6uj4nW2Zsb3VyXSc7DQor6bq7PidbaGVtcF0nOw0KK+m6vD4nW2ludGVycm9nYXRpdmUgZmluYWwgcGFydGljbGVdJzsNCivpur4+J1twZW5uYW50XSc7DQor6bq/PidbSV0nOw0KK+m7hD4nW3llbGxvd10nOw0KK+m7jD4nW3NjaG9vbF0nOw0KK+m7jT4nW2dsdXRpbm91cyBtaWxsZXRdJzsNCivpu44+J1tzdXJuYW1lXSc7DQor6buPPidbc3RpY2sgdG9dJzsNCivpu5A+J1tzdGlja10nOw0KK+m7kj4nW2JsYWNrXSc7DQor6buUPidbYmxhY2tdJzsNCivpu5g+J1tzaWxlbnRdJzsNCivpu5k+J1tzaWxlbnRdJzsNCivpu5s+J1tibGFja2VuIGV5ZWJyb3dzXSc7DQor6bucPidbZGlzbWlzc10nOw0KK+m7nT4nW2JsYWNrXSc7DQor6buePidbZG90XSc7DQor6bugPidbc2x5XSc7DQor6bulPidbdGF0dG9vaW5nIGZhY2VdJzsNCivpu6g+J1twb2xpdGljYWwgcGFydHldJzsNCivpu68+J1tkYXJrXSc7DQor6bu0PidbbW9sZF0nOw0KK+m7tj4nW21vbGVdJzsNCivpu7c+J1tkaXNob25vcl0nOw0KK+m7uT4nW2VtYnJvaWRlcnldJzsNCivpu7s+J1tzcGVjaWFsIHBhdHRlcm4gb2YgZW1icm9pZGVyeV0nOw0KK+m7vD4nW2VtYnJvaWRlcmVkIG9mZmljaWFsIG9yIHNhY3JpZmljXSc7DQor6bu9PidbdG8gc3RyaXZlXSc7DQor6byHPidbaHVnZSBzZWEgdHVydGxlXSc7DQor6byIPidbZnJlc2ggd2F0ZXIgdHVydGxlXSc7DQor6byOPidbbGFyZ2VdJzsNCivpvJM+J1tkcnVtXSc7DQor6byVPidbcmF0dGxlIG9mIGRydW1zXSc7DQor6bygPidbcmF0XSc7DQor6byhPidbcmF0XSc7DQor6bysPidbd2Vhc2VsXSc7DQor6by7Pidbbm9zZV0nOw0KK+m8vj4nW3Nub3JlIGxvdWRseV0nOw0KK+m9ij4nW2V2ZW5dJzsNCivpvYs+J1t2ZWdldGFyaWFuIGRpZXRdJzsNCivpvY4+J1t0YWtlIGluIGJvdGggaGFuZHMgYW5kIG9mZmVyIHRvXSc7DQor6b2PPidbYnJlYWsgb3Igc21hc2ggaW50byBwaWVjZXNdJzsNCivpvZI+J1t0ZWV0aF0nOw0KK+m9lD4nW2xvc2UgYmFieSB0ZWV0aCBhbmQgZ2V0IGFkdWx0IHRlXSc7DQor6b2fPidbaXJyZWd1bGFyIHRlZXRoXSc7DQor6b2gPidbbG9zZSBiYWJ5IHRlZXRoIGFuZCBnZXQgYWR1bHQgdGVldGhdJzsNCivpvaE+J1thZ2VdJzsNCivpvaI+J1thZ2VdJzsNCivpvaM+J1thY3RdJzsNCivpvaY+J1tndW1zXSc7DQor6b2nPidbYml0ZV0nOw0KK+m9qj4nW25hcnJvd10nOw0KK+m9rD4nW3VuZXZlbiB0ZWV0aF0nOw0KK+m9sj4nW3Rvb3RoIGRlY2F5XSc7DQor6b22PidbcGFsYXRlXSc7DQor6b23PidbbmFycm93XSc7DQor6b6NPidbZHJhZ29uXSc7DQor6b6VPidbbmljaGVdJzsNCivpvpw+J1t0dXJ0bGUgb3IgdG9ydG9pc2VdJzsNCivpvp0+J1thdXR1bW5dJzsNCivpvqA+J1tmbHV0ZV0nOw0KKw0KKyMgZW9mDQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfS2FuamlfT25Sb21hamkudXRmOC50eHQgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9LYW5qaV9PblJvbWFqaS51dGY4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41ZWZmMjZjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfS2FuamlfT25Sb21hamkudXRmOC50eHQKQEAgLTAsMCArMSw2MjE2IEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzDQorIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIERhdGU6IFR1ZSBKYW4gMjMgMTI6NDI6MDMgMjAwMQ0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKyMgS2FuamktT25Sb21hamkNCisNCivkuIE+VGVpOw0KK+S4gz5TaGljaGk7DQor5LiHPk1hbjsNCivkuIg+Sm91Ow0KK+S4iT5TYW47DQor5LiKPkpvdTsNCivkuIs+S2E7DQor5LiNPkZ1Ow0KK+S4jj5ZbzsNCivkuJA+S2FpOw0KK+S4kT5DaHV1Ow0KK+S4lD5TaGE7DQor5LiVPkhpOw0KK+S4lj5TZTsNCivkuJc+U2VpOw0KK+S4mD5LeXV1Ow0KK+S4mT5IZWk7DQor5LiePlNob3U7DQor5LihPlJ5b3U7DQor5LimPkhlaTsNCivkuKo+S2E7DQor5LitPkNodXU7DQor5LixPkthbjsNCivkuLI+U2VuOw0KK+S4tj5DaHU7DQor5Li4PkdhbjsNCivkuLk+VGFuOw0KK+S4uz5TaHU7DQor5Li8PlNlaTsNCivkuL8+SGV0c3U7DQor5LmCPkdhaTsNCivkuYM+RGFpOw0KK+S5hT5LeXV1Ow0KK+S5iz5TaGk7DQor5LmNPlNha3U7DQor5LmOPktvOw0KK+S5jz5Cb3U7DQor5LmVPktvOw0KK+S5lj5LYWk7DQor5LmXPkpvdTsNCivkuZg+Sm91Ow0KK+S5mT5PdHN1Ow0KK+S5nT5LeXV1Ow0KK+S5nj5Lb3RzdTsNCivkuZ8+WWE7DQor5LmiPkdhaTsNCivkubE+UmFuOw0KK+S5sz5OeXV1Ow0KK+S5vj5LYW47DQor5LqAPktpOw0KK+S6gj5SYW47DQor5LqFPktldHN1Ow0KK+S6hj5SeW91Ow0KK+S6iD5ZbzsNCivkuok+U291Ow0KK+S6ij5KaTsNCivkuos+Smk7DQor5LqMPk5pOw0KK+S6jj5VOw0KK+S6kT5VbjsNCivkupI+R287DQor5LqUPkdvOw0KK+S6lT5TZWk7DQor5LqYPlNlbjsNCivkupk+S291Ow0KK+S6mz5TYTsNCivkupw+QTsNCivkup4+QTsNCivkup8+S3lva3U7DQor5LqgPlRvdTsNCivkuqE+Qm91Ow0KK+S6oj5Lb3U7DQor5LqkPktvdTsNCivkuqU+R2FpOw0KK+S6pj5Fa2k7DQor5LqoPkt5b3U7DQor5LqrPkt5b3U7DQor5LqsPkt5b3U7DQor5LqtPlRlaTsNCivkuq4+UnlvdTsNCivkurA+S2VpOw0KK+S6sz5IYWt1Ow0KK+S6tj5UYW47DQor5Lq6PkppbjsNCivku4A+U2h1dTsNCivku4E+SmluOw0KK+S7gj5Sb2t1Ow0KK+S7hD5Tb2t1Ow0KK+S7hj5GdTsNCivku4c+S3l1dTsNCivku4o+S29uOw0KK+S7iz5LYWk7DQor5LuNPkpvdTsNCivku44+SnV1Ow0KK+S7jz5CdXRzdTsNCivku5Q+U2hpOw0KK+S7lT5TaGk7DQor5LuWPlRhOw0KK+S7lz5Kb3U7DQor5LuYPkZ1Ow0KK+S7mT5TZW47DQor5LudPkRvdTsNCivku54+SmluOw0KK+S7nz5TZW47DQor5LujPkRhaTsNCivku6Q+UmVpOw0KK+S7pT5JOw0KK+S7rT5KaW47DQor5LuuPkthOw0KK+S7sD5HeW91Ow0KK+S7sj5DaHV1Ow0KK+S7tj5LZW47DQor5Lu3PkthaTsNCivku7s+TmluOw0KK+S8gT5LaTsNCivkvIk+S291Ow0KK+S8ij5JOw0KK+S8jT5HbzsNCivkvI4+S2k7DQor5LyPPkZ1a3U7DQor5LyQPkJhdHN1Ow0KK+S8kT5LeXV1Ow0KK+S8mj5LYWk7DQor5LycPlNhaTsNCivkvJ0+RGVuOw0KK+S8rz5IYWt1Ow0KK+S8sD5LbzsNCivkvLQ+SGFuOw0KK+S8tj5SZWk7DQor5Ly4PlNoaW47DQor5Ly6PlNoaTsNCivkvLw+Smk7DQor5Ly9Pkt5YTsNCivkvYM+VGVuOw0KK+S9hj5UYW47DQor5L2HPkNobzsNCivkvY0+STsNCivkvY4+VGVpOw0KK+S9jz5KdXU7DQor5L2QPlNhOw0KK+S9kT5ZdXU7DQor5L2TPlRlaTsNCivkvZU+S2E7DQor5L2XPlRhOw0KK+S9mT5ZbzsNCivkvZo+SXRzdTsNCivkvZs+QnV0c3U7DQor5L2cPlNha3U7DQor5L2dPktvdTsNCivkvZ4+TmVpOw0KK+S9qT5IYWk7DQor5L2vPllvdTsNCivkvbA+SGFrdTsNCivkvbM+S2E7DQor5L21PkhlaTsNCivkvbY+S2l0c3U7DQor5L27PkNob3U7DQor5L28PktvdTsNCivkvb8+U2hpOw0KK+S+gz5LYW47DQor5L6GPlJhaTsNCivkvog+U2hpOw0KK+S+iz5SZWk7DQor5L6NPkppOw0KK+S+jz5TaHU7DQor5L6RPll1dTsNCivkvpY+Um9uOw0KK+S+mD5UYTsNCivkvps+S3lvdTsNCivkvp0+STsNCivkvqA+S3lvdTsNCivkvqE+S2E7DQor5L6rPk5laTsNCivkvq0+SmluOw0KK+S+rj5CdTsNCivkvq8+S291Ow0KK+S+tT5TaGluOw0KK+S+tj5SeW87DQor5L6/PkJlbjsNCivkv4I+S2VpOw0KK+S/gz5Tb2t1Ow0KK+S/hD5HYTsNCivkv4o+U2h1bjsNCivkv44+U2hvOw0KK+S/kD5SaTsNCivkv5E+WW91Ow0KK+S/lD5LZW47DQor5L+XPlpva3U7DQor5L+YPkZ1Ow0KK+S/mj5SaTsNCivkv5s+QmVuOw0KK+S/nT5IbzsNCivkv58+U2hpOw0KK+S/oT5TaGluOw0KK+S/rj5TaHV1Ow0KK+S/rz5GdTsNCivkv7M+SGFpOw0KK+S/tT5IeW91Ow0KK+S/tj5TaHVrdTsNCivkv7g+SG91Ow0KK+S/uj5FbjsNCivkv74+SGk7DQor5YCFPlNhaTsNCivlgIY+UnlvdTsNCivlgIk+U291Ow0KK+WAiz5LbzsNCivlgI0+QmFpOw0KK+WAjz5TaHVrdTsNCivlgJE+TW9uOw0KK+WAkj5Ub3U7DQor5YCUPkt1dHN1Ow0KK+WAlj5Lb3U7DQor5YCZPktvdTsNCivlgJo+STsNCivlgJ8+U2hha3U7DQor5YChPlNob3U7DQor5YCjPkhvdTsNCivlgKQ+Q2hpOw0KK+WApT5Lb3U7DQor5YCmPktlbjsNCivlgKg+S3lvOw0KK+WAqT5TZW47DQor5YCqPkdlaTsNCivlgKs+UmluOw0KK+WArD5UYWt1Ow0KK+WArT5JOw0KK+WAtj5LdTsNCivlgLk+S2VuOw0KK+WBgz5FbjsNCivlgYc+S2E7DQor5YGIPktldHN1Ow0KK+WBiT5JOw0KK+WBjz5IZW47DQor5YGQPkdhbjsNCivlgZU+S2FpOw0KK+WBlj5TaGE7DQor5YGaPlNha3U7DQor5YGcPlRlaTsNCivlgaU+S2VuOw0KK+WBrD5Tb3U7DQor5YGyPlNoaTsNCivlgbQ+U29rdTsNCivlgbU+VGVpOw0KK+WBtj5HdXU7DQor5YG4PkNodXU7DQor5YG9PkdpOw0KK+WCgD5LYWk7DQor5YKFPkZ1Ow0KK+WCjT5Cb3U7DQor5YKRPktldHN1Ow0KK+WCmD5TYW47DQor5YKZPkJpOw0KK+WCmj5Lb3U7DQor5YKsPlNhaTsNCivlgq0+WW91Ow0KK+WCsj5Hb3U7DQor5YKzPkRlbjsNCivlgrQ+VTsNCivlgrU+U2FpOw0KK+WCtz5TaG91Ow0KK+WCvj5LZWk7DQor5YOCPlJvdTsNCivlg4U+S2luOw0KK+WDiT5TZW47DQor5YOKPlNlbjsNCivlg40+RG91Ow0KK+WDjz5ab3U7DQor5YORPkt5b3U7DQor5YOVPkJva3U7DQor5YOWPktpOw0KK+WDmj5SeW91Ow0KK+WDnj5HaTsNCivlg6M+U2VuOw0KK+WDpT5LeW91Ow0KK+WDpz5Tb3U7DQor5YOtPlNlbjsNCivlg64+RG91Ow0KK+WDtT5LeW91Ow0KK+WDuT5LYTsNCivlg7s+SGVraTsNCivlhIA+R2k7DQor5YSBPlNodW47DQor5YSCPkRvdTsNCivlhIQ+T2t1Ow0KK+WEiT5LZW47DQor5YSSPkp1Ow0KK+WElD5DaHV1Ow0KK+WElT5TZWk7DQor5YSWPlJhbjsNCivlhJg+SmluOw0KK+WEmj5Cb3U7DQor5YSfPlNob3U7DQor5YShPlJhaTsNCivlhKo+WXV1Ow0KK+WEsj5DaG87DQor5YS3PlJlaTsNCivlhLo+RGE7DQor5YS7PlRvdTsNCivlhLw+R2VuOw0KK+WEvz5KaW47DQor5YWAPktvdHN1Ow0KK+WFgT5JbjsNCivlhYM+R2VuOw0KK+WFhD5LZWk7DQor5YWFPkp1dTsNCivlhYY+Q2hvdTsNCivlhYc+S3lvdTsNCivlhYg+U2VuOw0KK+WFiT5Lb3U7DQor5YWLPktva3U7DQor5YWMPkRhOw0KK+WFjT5NZW47DQor5YWOPlRvOw0KK+WFkD5KaTsNCivlhZI+Smk7DQor5YWUPlRvOw0KK+WFmj5Ub3U7DQor5YWcPlRvdTsNCivlhaI+S3lvdTsNCivlhaU+Tnl1dTsNCivlhag+WmVuOw0KK+WFqT5SeW91Ow0KK+WFqj5ZdTsNCivlhas+SGFjaGk7DQor5YWsPktvdTsNCivlha0+Um9rdTsNCivlha4+S2VpOw0KK+WFsT5LeW91Ow0KK+WFtT5IZWk7DQor5YW2PktpOw0KK+WFtz5HdTsNCivlhbg+VGVuOw0KK+WFvD5LZW47DQor5YaAPktpOw0KK+WGgj5LZWk7DQor5YaFPkRhaTsNCivlhoY+RW47DQor5YaJPk5lbjsNCivlhoo+U2F0c3U7DQor5YaMPlNhdHN1Ow0KK+WGjT5TYWk7DQor5YaPPktlaTsNCivlhpA+Qm91Ow0KK+WGkT5DaHV1Ow0KK+WGkj5Cb3U7DQor5YaTPktvdTsNCivlhpU+QmVuOw0KK+WGlj5CZWtpOw0KK+WGlz5Kb3U7DQor5YaZPlNoYTsNCivlhqA+S2FuOw0KK+WGoj5DaG91Ow0KK+WGpD5FbjsNCivlhqU+TWVpOw0KK+WGpj5Lb3U7DQor5YaoPkZ1Ow0KK+WGqT5TaGE7DQor5YaqPkJla2k7DQor5YarPkh5b3U7DQor5YasPlRvdTsNCivlhrA+SHlvdTsNCivlhrE+R287DQor5YayPkNodXU7DQor5YazPktldHN1Ow0KK+WGtD5HbzsNCivlhrU+S3lvdTsNCivlhrY+WWE7DQor5Ya3PlJlaTsNCivlhr0+UmV0c3U7DQor5YeEPlNlaTsNCivlh4U+S287DQor5YeGPkp1bjsNCivlh4k+UnlvdTsNCivlh4s+Q2hvdTsNCivlh4w+UnlvdTsNCivlh40+VG91Ow0KK+WHlj5KdW47DQor5YebPlJpbjsNCivlh5w+UmluOw0KK+WHnT5HeW91Ow0KK+WHoD5LaTsNCivlh6E+Qm9uOw0KK+WHpj5TaG87DQor5YetPkh5b3U7DQor5YewPktvdTsNCivlh7E+R2FpOw0KK+WHtT5LYW47DQor5Ye2Pkt5b3U7DQor5Ye4PlRvdHN1Ow0KK+WHuT5PdTsNCivlh7o+U2h1dHN1Ow0KK+WHvT5LYW47DQor5Ye+PkthbjsNCivliIA+VG91Ow0KK+WIgz5KaW47DQor5YiEPkppbjsNCivliIY+QnVuOw0KK+WIhz5TZXRzdTsNCivliIg+R2FpOw0KK+WIij5LYW47DQor5YiLPlNlbjsNCivliI4+RnVuOw0KK+WIkT5LZWk7DQor5YiUPktldHN1Ow0KK+WIlz5SZXRzdTsNCivliJ0+U2hvOw0KK+WIpD5IYW47DQor5YilPkJldHN1Ow0KK+WIpz5Hb3U7DQor5YipPlJpOw0KK+WIqj5TYW47DQor5YiuPkthdHN1Ow0KK+WIsD5Ub3U7DQor5YizPktvOw0KK+WItj5TZWk7DQor5Yi3PlNhdHN1Ow0KK+WIuD5LZW47DQor5Yi5PlNhdHN1Ow0KK+WIuj5TaGk7DQor5Yi7Pktva3U7DQor5YmDPlRlaTsNCivliYQ+S2VpOw0KK+WJhz5Tb2t1Ow0KK+WJij5TYWt1Ow0KK+WJiz5Lb2t1Ow0KK+WJjD5SYXRzdTsNCivliY0+WmVuOw0KK+WJjz5Tb3U7DQor5YmUPlRla2k7DQor5YmWPkJvdTsNCivliZs+R291Ow0KK+WJnj5LaTsNCivliaM+S2VuOw0KK+WJpD5aYWk7DQor5YmlPkhha3U7DQor5YmpPkpvdTsNCivliao+U2VuOw0KK+WJrz5GdWt1Ow0KK+WJsD5Kb3U7DQor5YmxPktlbjsNCivlibI+S2F0c3U7DQor5YmzPlRvdTsNCivlibQ+R2FpOw0KK+WJtT5Tb3U7DQor5Ym9Pkh5b3U7DQor5Ym/PlNob3U7DQor5YqDPktha3U7DQor5YqHPkdla2k7DQor5YqIPkhla2k7DQor5YqJPlJ1Ow0KK+WKjT5LZW47DQor5YqRPlphaTsNCivlipI+S2VuOw0KK+WKlD5LZW47DQor5YqbPlJ5b2t1Ow0KK+WKnz5Lb3U7DQor5YqgPkthOw0KK+WKoz5SZXRzdTsNCivliqk+Sm87DQor5YqqPkRvOw0KK+WKqz5Hb3U7DQor5YqsPkt1Ow0KK+WKrT5TaG91Ow0KK+WKsT5SZWk7DQor5Yq0PlJvdTsNCivlirU+S2VuOw0KK+WKuT5Lb3U7DQor5Yq8PkthdHN1Ow0KK+WKvj5HYWk7DQor5YuBPktlaTsNCivli4M+Qm90c3U7DQor5YuFPkNob2t1Ow0KK+WLhz5ZdXU7DQor5YuJPkJlbjsNCivli40+S2VpOw0KK+WLkj5Sb2t1Ow0KK+WLlT5Eb3U7DQor5YuXPkJvdTsNCivli5g+S2FuOw0KK+WLmT5NdTsNCivli50+U2hvdTsNCivli54+Um91Ow0KK+WLnz5CbzsNCivli6A+UmlrdTsNCivli6I+U2VpOw0KK+WLoz5TZWtpOw0KK+WLpD5LaW47DQor5YumPlNvdTsNCivli6c+S2FuOw0KK+WLsj5LdW47DQor5YuzPkt1bjsNCivli7U+UmVpOw0KK+WLuD5LYW47DQor5Yu5PkhvdTsNCivli7o+U2hha3U7DQor5Yu+PktvdTsNCivli78+QnV0c3U7DQor5YyFPkhvdTsNCivljIY+U291Ow0KK+WMiD5LeW91Ow0KK+WMjT5IbzsNCivljI8+SG91Ow0KK+WMkD5Ib2t1Ow0KK+WMlT5IaTsNCivljJY+S2E7DQor5YyXPkhva3U7DQor5YyZPlNoaTsNCivljJo+SG91Ow0KK+WMnT5Tb3U7DQor5YygPlNob3U7DQor5YyhPkt5b3U7DQor5YyjPktvdTsNCivljKo+SGk7DQor5YyvPldhaTsNCivljLE+S2k7DQor5YyzPlJlbjsNCivljLg+S2VpOw0KK+WMuT5IaXRzdTsNCivljLo+S3U7DQor5Yy7Pkk7DQor5Yy/PlRva3U7DQor5Y2APkt1Ow0KK+WNgT5KdXU7DQor5Y2DPlNlbjsNCivljYU+U291Ow0KK+WNhj5Tb3RzdTsNCivljYc+U2hvdTsNCivljYg+R287DQor5Y2JPktpOw0KK+WNij5IYW47DQor5Y2NPkJhbjsNCivljZE+SGk7DQor5Y2SPlNvdHN1Ow0KK+WNkz5UYWt1Ow0KK+WNlD5LeW91Ow0KK+WNlz5OYW47DQor5Y2YPlRhbjsNCivljZo+SGFrdTsNCivljZw+Qm9rdTsNCivljZ4+SGVuOw0KK+WNoD5TZW47DQor5Y2mPkthOw0KK+WNqT5TZXRzdTsNCivlja4+U2hpOw0KK+WNrz5Cb3U7DQor5Y2wPkluOw0KK+WNsT5LaTsNCivljbM+U29rdTsNCivljbQ+S3lha3U7DQor5Y21PlJhbjsNCivljbc+S2FuOw0KK+WNuD5TaGE7DQor5Y27Pkt5YWt1Ow0KK+WNvz5LeW91Ow0KK+WOgj5LYW47DQor5Y6EPllha3U7DQor5Y6WPkJvdTsNCivljpg+UmluOw0KK+WOmj5Lb3U7DQor5Y6fPkdlbjsNCivljqA+U2hpOw0KK+WOpT5LZXRzdTsNCivljqY+S2E7DQor5Y6oPlp1Ow0KK+WOqT5LeXV1Ow0KK+WOrT5FbjsNCivljq4+U2hpOw0KK+WOsD5TaG91Ow0KK+WOsz5HZW47DQor5Y62PlNoaTsNCivljrs+S3lvOw0KK+WPgj5TYW47DQor5Y+DPlNhbjsNCivlj4g+WXV1Ow0KK+WPiT5TaGE7DQor5Y+KPkt5dXU7DQor5Y+LPll1dTsNCivlj4w+U291Ow0KK+WPjT5IYW47DQor5Y+OPlNodXU7DQor5Y+UPlNodWt1Ow0KK+WPlj5TaHU7DQor5Y+XPkp1Ow0KK+WPmT5KbzsNCivlj5s+SGFuOw0KK+WPnz5Tb3U7DQor5Y+hPkVpOw0KK+WPoj5Tb3U7DQor5Y+jPktvdTsNCivlj6Q+S287DQor5Y+lPkt1Ow0KK+WPqD5Ub3U7DQor5Y+pPktvdTsNCivlj6o+U2hpOw0KK+WPqz5LeW91Ow0KK+WPrD5TaG91Ow0KK+WPrT5IYXRzdTsNCivlj64+VGVpOw0KK+WPrz5LYTsNCivlj7A+RGFpOw0KK+WPsT5TaGl0c3U7DQor5Y+yPlNoaTsNCivlj7M+VTsNCivlj7Y+S3lvdTsNCivlj7c+R291Ow0KK+WPuD5TaGk7DQor5ZCBPkt1Ow0KK+WQgz5LaXRzdTsNCivlkIQ+S2FrdTsNCivlkIg+R291Ow0KK+WQiT5LaWNoaTsNCivlkIo+Q2hvdTsNCivlkIs+U3VuOw0KK+WQjD5Eb3U7DQor5ZCNPk1laTsNCivlkI4+S291Ow0KK+WQjz5SaTsNCivlkJA+VG87DQor5ZCRPktvdTsNCivlkJs+S3VuOw0KK+WQnT5SaW47DQor5ZCfPkdpbjsNCivlkKA+SGFpOw0KK+WQpj5IaTsNCivlkKk+RnVuOw0KK+WQqz5HYW47DQor5ZCsPktpbjsNCivlkK0+S291Ow0KK+WQrj5TZW47DQor5ZC2PlRvdHN1Ow0KK+WQuD5LeXV1Ow0KK+WQuT5TdWk7DQor5ZC7PkZ1bjsNCivlkLw+S291Ow0KK+WQvT5JbjsNCivlkL4+R287DQor5ZGAPkdhOw0KK+WRgj5SeW87DQor5ZGGPkJvdTsNCivlkYg+VGVpOw0KK+WRiT5HbzsNCivlkYo+S29rdTsNCivlkY4+U2VraTsNCivlkZE+RG9uOw0KK+WRnz5HZW47DQor5ZGoPlNodXU7DQor5ZGqPkp1Ow0KK+WRsD5TaGk7DQor5ZGxPktvOw0KK+WRsz5NaTsNCivlkbU+S2E7DQor5ZG2PkRvOw0KK+WRtz5Lb3U7DQor5ZG7PlNoaW47DQor5ZG8PktvOw0KK+WRvT5NZWk7DQor5ZKAPlNvOw0KK+WShD5Ub3RzdTsNCivlkoY+SG91Ow0KK+WSiz5TYWt1Ow0KK+WSjD5XYTsNCivlko4+S3l1dTsNCivlko8+RWk7DQor5ZKQPkhvOw0KK+WSkj5TaHU7DQor5ZKiPkdha3U7DQor5ZKkPlRhOw0KK+WSpT5LaTsNCivlkqg+U2hpOw0KK+WSqz5TaGk7DQor5ZKsPktvdTsNCivlkq8+S2FrdTsNCivlkrI+U2hvdTsNCivlkrM+R2FpOw0KK+WSuD5LYW47DQor5ZK8PkthOw0KK+WSvT5JbjsNCivlkr4+Um91Ow0KK+WTgD5BaTsNCivlk4E+SGluOw0KK+WTgj5TaGluOw0KK+WThD5Lb3U7DQor5ZOHPkFpOw0KK+WTiD5Hb3U7DQor5ZOJPlNhaTsNCivlk6E+SW47DQor5ZOiPlJvdTsNCivlk6U+S2E7DQor5ZOmPkdhOw0KK+WTqD5TaG91Ow0KK+WTqT5SaTsNCivlk60+S29rdTsNCivlk64+S291Ow0KK+WTsj5UZXRzdTsNCivlk7o+SG87DQor5ZO9PktvdTsNCivllIQ+QmFpOw0KK+WUhj5TYTsNCivllIc+U2hpbjsNCivllI8+S2k7DQor5ZSQPlRvdTsNCivllJQ+R287DQor5ZSWPkE7DQor5ZSuPlNodXU7DQor5ZSvPll1aTsNCivllLE+U2hvdTsNCivllLM+UmVpOw0KK+WUuD5UZW47DQor5ZS5PllvOw0KK+WUvj5EYTsNCivllYA+R2FpOw0KK+WVhD5UYWt1Ow0KK+WVhT5UYWt1Ow0KK+WVhj5TaG91Ow0KK+WVjD5Lb3U7DQor5ZWPPk1vbjsNCivllZM+S2VpOw0KK+WVlj5UYW47DQor5ZWXPlRhbjsNCivllZw+U2V0c3U7DQor5ZWdPkthOw0KK+WVoz5LYW47DQor5ZW7PlNoaTsNCivllbw+VGVpOw0KK+WVvj5TaHV1Ow0KK+WWgD5LYWt1Ow0KK+WWgz5OYW47DQor5ZaEPlplbjsNCivlloc+UmF0c3U7DQor5ZaJPktvdTsNCivlloo+S2FuOw0KK+WWiz5DaG91Ow0KK+WWmD5aZW47DQor5ZaZPkthaTsNCivllpo+S2FuOw0KK+WWnD5LaTsNCivllp0+S2F0c3U7DQor5ZaePlNva3U7DQor5ZafPktpOw0KK+WWpz5LZW47DQor5ZaoPlJ5b3U7DQor5ZapPll1Ow0KK+WWqj5Tb3U7DQor5ZarPktpdHN1Ow0KK+WWrD5LeW91Ow0KK+WWrj5UYW47DQor5Za2PkVpOw0KK+WXhD5TYTsNCivll4U+S3l1dTsNCivll4c+U2hva3U7DQor5ZeUPlNoaW47DQor5ZeaPk87DQor5ZecPlNoaTsNCivll58+U2E7DQor5ZejPlNoaTsNCivll6Q+U2hpOw0KK+WXtz5Hb3U7DQor5Ze5PlJlbjsNCivll70+U29rdTsNCivll74+U291Ow0KK+WYhj5UYW47DQor5ZiJPkthOw0KK+WYlD5PdTsNCivlmJY+U2FrdTsNCivlmJc+U2hvdTsNCivlmJg+S3lvOw0KK+WYmz5NYTsNCivlmKk+S2E7DQor5ZivPlNob3U7DQor5ZixPlNob2t1Ow0KK+WYsj5Ub3U7DQor5Zi0PlNoaTsNCivlmLY+U2VpOw0KK+WYuD5CdTsNCivlmYI+U29uOw0KK+WZjD5Tb3U7DQor5ZmOPkl0c3U7DQor5ZmQPktpOw0KK+WZmz5Hb3U7DQor5ZmkPktpbjsNCivlmag+S2k7DQor5ZmqPlNvdTsNCivlmas+STsNCivlmaw+WmVpOw0KK+WZtD5GdW47DQor5Zm4PlRvbjsNCivlmoA+RGVpOw0KK+Wahj5Lb3U7DQor5ZqHPktha3U7DQor5ZqKPkhpOw0KK+Wajz5UZWk7DQor5ZqUPlRlaTsNCivlmqA+Unl1dTsNCivlmqI+Tm91Ow0KK+WapT5FbjsNCivlmq4+S291Ow0KK+WatD5HZW47DQor5Zq2Pk91Ow0KK+WavD5TaGFrdTsNCivlm4A+VGVuOw0KK+WbgT5TaG91Ow0KK+Wbgj5Hb3U7DQor5ZuDPlNvdTsNCivlm4g+R2VpOw0KK+Wbjj5TbzsNCivlm5E+U2hva3U7DQor5ZuTPktldHN1Ow0KK+Wblz5JOw0KK+WbmD5LYWk7DQor5ZuaPlNodXU7DQor5ZubPlNoaTsNCivlm54+S2FpOw0KK+WboD5JbjsNCivlm6M+RGFuOw0KK+Wbrj5LYTsNCivlm7A+S29uOw0KK+Wbsj5JOw0KK+Wbsz5UbzsNCivlm7k+UmVpOw0KK+Wbuj5LbzsNCivlm70+S29rdTsNCivlm78+WXV1Ow0KK+WcgD5Lb2t1Ow0KK+Wcgz5IbzsNCivlnIQ+R3lvOw0KK+WciD5LZW47DQor5ZyJPkd5bzsNCivlnIs+S29rdTsNCivlnI0+STsNCivlnI8+S2VuOw0KK+Wckj5FbjsNCivlnJM+RW47DQor5ZyWPlRvOw0KK+WcmD5EYW47DQor5ZycPkthbjsNCivlnJ8+RG87DQor5ZynPkF0c3U7DQor5ZyoPlphaTsNCivlnK0+S2VpOw0KK+WcsD5DaGk7DQor5Zy7PktpOw0KK+WdgD5TaGk7DQor5Z2CPkhhbjsNCivlnYc+S2luOw0KK+Wdij5Cb3U7DQor5Z2OPkthbjsNCivlnY8+SGFpOw0KK+WdkD5aYTsNCivlnZE+S291Ow0KK+WdoT5IYTsNCivlnaQ+S29uOw0KK+Wdpj5UYW47DQor5Z2pPkthbjsNCivlnao+SGVpOw0KK+Wdvz5GdTsNCivlnoI+U3VpOw0KK+WeiD5UYWk7DQor5Z6JPkhvdTsNCivlnos+S2VpOw0KK+Wekz5HYWk7DQor5Z6gPkdpbjsNCivlnqI+S291Ow0KK+Weoz5FbjsNCivlnqQ+VGV0c3U7DQor5Z+APlN1aTsNCivln4M+QWk7DQor5Z+GPktha3U7DQor5Z+LPk1haTsNCivln44+Sm91Ow0KK+Wfkj5SYWNoaTsNCivln5M+UmFjaGk7DQor5Z+UPkhvOw0KK+WfnD5TaG87DQor5Z+fPklraTsNCivln6A+RnU7DQor5Z+jPlNhaTsNCivln7Q+U2hva3U7DQor5Z+3PlNoaXRzdTsNCivln7k+QmFpOw0KK+Wfuj5LaTsNCivln7w+S2k7DQor5aCAPkt1dHN1Ow0KK+Wggj5Eb3U7DQor5aCFPktlbjsNCivloIY+VGFpOw0KK+Wgij5BOw0KK+Wgiz5Ib3U7DQor5aCVPkRhOw0KK+WgmT5JbjsNCivloJ0+S2E7DQor5aChPkhvdTsNCivloKQ+VGVpOw0KK+Wgqj5LYW47DQor5aCvPkd5b3U7DQor5aCwPkVuOw0KK+WgsT5Ib3U7DQor5aC0PkpvdTsNCivloLU+VG87DQor5aC6PkthaTsNCivloL0+S291Ow0KK+WhgT5SdWk7DQor5aGKPkthaTsNCivloYs+RWk7DQor5aGRPlNvOw0KK+Whkj5TaGk7DQor5aGUPlRvdTsNCivloZc+VG87DQor5aGYPlRvdTsNCivloZk+S2FrdTsNCivloZo+Q2hvdTsNCivloZ4+U29rdTsNCivloaI+TzsNCivloak+RW47DQor5aGrPlRlbjsNCivlobI+Sm91Ow0KK+WhtT5KaW47DQor5aG5PlphbjsNCivlob4+SnVrdTsNCivlooM+S3lvdTsNCivlooU+U2hvOw0KK+Wikz5CbzsNCivlopc+Wm91Ow0KK+WinD5Uc3VpOw0KK+Winz5LeW87DQor5aKoPkJva3U7DQor5aKrPlNodW47DQor5aKuPkRhOw0KK+Wisz5GdW47DQor5aK4PlNobzsNCivloro+T3U7DQor5aK7PlNob3U7DQor5aK+PktvbjsNCivlo4E+SGVraTsNCivlo4U+WW91Ow0KK+Wjhz5EYW47DQor5aOKPkthaTsNCivlo4w+Sm91Ow0KK+WjkT5HYWt1Ow0KK+Wjkz5BdHN1Ow0KK+WjlT5Hb3U7DQor5aOYPlJ1aTsNCivlo5k+S291Ow0KK+WjnD5UYW47DQor5aOePkthaTsNCivlo58+UnlvdTsNCivlo6Q+Sm91Ow0KK+WjpT5UZW47DQor5aOrPlNoaTsNCivlo6w+SmluOw0KK+Wjrj5Tb3U7DQor5aOvPlNvdTsNCivlo7A+U2VpOw0KK+WjsT5JY2hpOw0KK+Wjsj5CYWk7DQor5aO3PktvOw0KK+WjuT5JY2hpOw0KK+Wjuj5LbzsNCivlo7s+U2VpOw0KK+WjvD5Lb247DQor5aO9Pkp1Ow0KK+Wkgj5DaGk7DQor5aSJPkhlbjsNCivlpIo+U3VpOw0KK+Wkjz5LYTsNCivlpJA+S2VpOw0KK+WklT5TZWtpOw0KK+Wklj5HYWk7DQor5aSYPkJvdTsNCivlpJk+U2h1a3U7DQor5aSaPlRhOw0KK+Wkmz5UYTsNCivlpJw+WWE7DQor5aSiPk11Ow0KK+WkpT5LYTsNCivlpKc+VGFpOw0KK+WkqT5UZW47DQor5aSqPlRhOw0KK+Wkqz5GdTsNCivlpKw+S2V0c3U7DQor5aStPllvdTsNCivlpK4+T3U7DQor5aSxPlNoaXRzdTsNCivlpLI+VG91Ow0KK+Wktz5JOw0KK+WkuD5LbzsNCivlpL4+S291Ow0KK+WlhD5FbjsNCivlpYc+S2k7DQor5aWIPk5hOw0KK+WliT5Ib3U7DQor5aWOPktlaTsNCivlpY8+U291Ow0KK+WlkD5LYW47DQor5aWRPlNldHN1Ow0KK+WllD5Ib247DQor5aWVPkVraTsNCivlpZc+VG91Ow0KK+WlmD5Kb3U7DQor5aWaPktlaTsNCivlpaA+VGVuOw0KK+Wloj5TaGE7DQor5aWlPk91Ow0KK+Wlpz5PdTsNCivlpag+U2hvdTsNCivlpak+UmVuOw0KK+Wlqj5EYXRzdTsNCivlpaw+U2hvdTsNCivlpa4+RnVuOw0KK+Wlsz5KbzsNCivlpbQ+RG87DQor5aW4PkthbjsNCivlpb0+S291Ow0KK+WmgT5TaGFrdTsNCivlpoI+Sm87DQor5aaDPkhpOw0KK+WmhD5Cb3U7DQor5aaKPk5pbjsNCivlpo0+S2VuOw0KK+Wmkz5LaTsNCivlppY+WW91Ow0KK+WmmT5NeW91Ow0KK+Wmmz5TaGk7DQor5aadPlNvdTsNCivlpqM+SGk7DQor5aalPkRhOw0KK+WmqD5Cb3U7DQor5aasPlRvOw0KK+Wmsj5EYXRzdTsNCivlprk+TWFpOw0KK+Wmuz5TYWk7DQor5aa+PlNob3U7DQor5aeGPkJvOw0KK+WniT5TaGk7DQor5aeLPlNoaTsNCivlp5A+U287DQor5aeRPktvOw0KK+Wnkz5TZWk7DQor5aeUPkk7DQor5aeZPk5pbjsNCivlp5o+WW91Ow0KK+WnnD5LeW91Ow0KK+WnpT5CbzsNCivlp6Y+S2FuOw0KK+WnqD5JOw0KK+Wnqj5UZXRzdTsNCivlp6s+S2k7DQor5ae2Pk91Ow0KK+Wnuz5JbjsNCivlp78+U2hpOw0KK+WogT5JOw0KK+Wogz5BOw0KK+WoiT5IZWk7DQor5aiRPlNoYTsNCivlqJg+Sm91Ow0KK+Womj5OYW47DQor5aicPkRhOw0KK+Wonz5LZW47DQor5aigPlNoaW47DQor5ailPkdhOw0KK+WoqT5CZW47DQor5aivPkdvOw0KK+WotT5TaHU7DQor5ai2PlNodTsNCivlqLw+U2hvdTsNCivlqYA+QTsNCivlqYE+Um91Ow0KK+Wphj5CYTsNCivlqYk+RW47DQor5amaPktvbjsNCivlqaI+SGk7DQor5ammPkZ1Ow0KK+Wpqj5SYW47DQor5amsPkluOw0KK+Wpvz5TZWk7DQor5aqSPkJhaTsNCivlqpo+Qmk7DQor5aqbPkVuOw0KK+WqvD5PdTsNCivlqr0+Qm87DQor5aq+PktvdTsNCivlq4E+S2E7DQor5auCPlNvdTsNCivlq4k+U2hpdHN1Ow0KK+Wriz5Kb3U7DQor5auMPktlbjsNCivlq5A+Sm91Ow0KK+Wrlj5IeW91Ow0KK+Wrlz5PdTsNCivlq6E+Q2hha3U7DQor5aujPkVuOw0KK+Wrpj5Lb3U7DQor5aupPkRvbjsNCivlq7o+S2FuOw0KK+Wruz5LYW47DQor5ayJPktpOw0KK+Wsiz5TZW47DQor5ayMPkt5b3U7DQor5ayWPkhlaTsNCivlrKI+Sm91Ow0KK+Wsqj5IaW47DQor5aysPlNodTsNCivlrLA+RWk7DQor5ayyPkpvdTsNCivlrL4+UmFuOw0KK+WtgD5Tb3U7DQor5a2DPkpvdTsNCivlrYU+U2VuOw0KK+WtkD5TaGk7DQor5a2RPkdldHN1Ow0KK+WtlD5Lb3U7DQor5a2VPllvdTsNCivlrZc+Smk7DQor5a2YPlNvbjsNCivlrZo+RnU7DQor5a2bPkJvdHN1Ow0KK+WtnD5TaGk7DQor5a2dPktvdTsNCivlrZ8+TW91Ow0KK+Wtoz5LaTsNCivlraQ+S287DQor5a2lPkRvOw0KK+Wtpj5HYWt1Ow0KK+WtqT5LYWk7DQor5a2rPlNvbjsNCivlrbA+SnVrdTsNCivlrbE+U2VuOw0KK+Wtsz5TaGk7DQor5a21PkZ1Ow0KK+WtuD5HYWt1Ow0KK+Wtuj5KdTsNCivlroA+QmVuOw0KK+Wugz5UYTsNCivlroU+VGFrdTsNCivlroc+VTsNCivlrog+U2h1Ow0KK+WuiT5BbjsNCivlros+U291Ow0KK+WujD5LYW47DQor5a6NPk5pa3U7DQor5a6PPktvdTsNCivlrpU+VG91Ow0KK+Wulz5TaHV1Ow0KK+WumD5LYW47DQor5a6ZPkNodXU7DQor5a6aPlRlaTsNCivlrps+RW47DQor5a6cPkdpOw0KK+WunT5Ib3U7DQor5a6fPkppdHN1Ow0KK+Wuoj5LeWFrdTsNCivlrqM+U2VuOw0KK+WupD5TaGl0c3U7DQor5a6lPll1dTsNCivlrqY+S2FuOw0KK+Wurj5LeXV1Ow0KK+WusD5TYWk7DQor5a6zPkdhaTsNCivlrrQ+RW47DQor5a61PlNob3U7DQor5a62PkthOw0KK+WuuD5TaGluOw0KK+WuuT5Zb3U7DQor5a6/PlNodWt1Ow0KK+Wvgj5KYWt1Ow0KK+Wvgz5FbjsNCivlr4Q+S2k7DQor5a+FPkluOw0KK+Wvhj5NaXRzdTsNCivlr4c+S291Ow0KK+WviT5LYWt1Ow0KK+WvjD5GdTsNCivlr5A+Qmk7DQor5a+SPkthbjsNCivlr5M+R3V1Ow0KK+WvlD5TaG9rdTsNCivlr5s+S2FuOw0KK+WvnT5TaGluOw0KK+Wvnj5CYWt1Ow0KK+Wvnz5TYXRzdTsNCivlr6E+S2E7DQor5a+iPlNoaW47DQor5a+kPkdvOw0KK+WvpT5SeW91Ow0KK+Wvpj5KaXRzdTsNCivlr6c+TmVpOw0KK+WvqD5TYWk7DQor5a+pPlNoaW47DQor5a+rPlNoYTsNCivlr64+UnlvdTsNCivlr7A+S2FuOw0KK+Wvsz5Ib3U7DQor5a+1PkNob3U7DQor5a+2PkhvdTsNCivlr7g+U3VuOw0KK+Wvuj5KaTsNCivlr74+VGFpOw0KK+Wvvz5KdTsNCivlsIE+RnV1Ow0KK+Wwgj5TZW47DQor5bCEPlNoYTsNCivlsIU+S29rdTsNCivlsIY+U2hvdTsNCivlsIc+U2hvdTsNCivlsIg+U2VuOw0KK+WwiT5JOw0KK+Wwij5Tb247DQor5bCLPkppbjsNCivlsI0+VGFpOw0KK+Wwjj5Eb3U7DQor5bCPPlNob3U7DQor5bCRPlNob3U7DQor5bCTPkppOw0KK+Wwlj5TZW47DQor5bCaPlNob3U7DQor5bCgPlNlbjsNCivlsKI+T3U7DQor5bCkPll1dTsNCivlsKg+Qm91Ow0KK+WwrT5HeW91Ow0KK+WwsT5TaHV1Ow0KK+WwuD5TaGk7DQor5bC5PkluOw0KK+Wwuj5TaGFrdTsNCivlsLs+S291Ow0KK+WwvD5OaTsNCivlsL0+SmluOw0KK+Wwvj5CaTsNCivlsL8+TnlvdTsNCivlsYA+S3lva3U7DQor5bGBPkhpOw0KK+WxhT5LeW87DQor5bGGPkthaTsNCivlsYg+S3V0c3U7DQor5bGKPkthaTsNCivlsYs+T2t1Ow0KK+WxjT5TaGk7DQor5bGOPlNoaTsNCivlsY8+SGVpOw0KK+WxkD5HZWtpOw0KK+WxkT5TZXRzdTsNCivlsZM+S2k7DQor5bGVPlRlbjsNCivlsZ4+Wm9rdTsNCivlsaA+VG87DQor5bGhPlJ1Ow0KK+WxpD5Tb3U7DQor5bGlPlJpOw0KK+WxrD5ab2t1Ow0KK+Wxrj5TYTsNCivlsa8+VG9uOw0KK+WxsT5TYW47DQor5bG5PktpdHN1Ow0KK+WyjD5LeXV1Ow0KK+WykD5LaTsNCivlspE+U2hpbjsNCivlspQ+U2E7DQor5bKhPktvdTsNCivlsqg+U287DQor5bKpPkdhbjsNCivlsqs+U2h1dTsNCivlsqw+S291Ow0KK+WysT5UYWk7DQor5bKzPkdha3U7DQor5bK2Pkhha3U7DQor5bK3PkJpbjsNCivlsrg+R2FuOw0KK+Wyuz5KaTsNCivlsr4+U2VuOw0KK+Wzhz5Lb3U7DQor5bOZPkppOw0KK+WzoT5LeW91Ow0KK+WzqD5HYTsNCivls6k+R2E7DQor5bOqPllva3U7DQor5bOtPlNob3U7DQor5bOvPkhvdTsNCivls7A+SG91Ow0KK+Wztj5Ub3U7DQor5bO6PktvdTsNCivls7s+U2h1bjsNCivls70+S3lvdTsNCivltIc+U3V1Ow0KK+W0iz5LYTsNCivltI4+S2k7DQor5bSRPktvbjsNCivltJQ+U2FpOw0KK+W0lT5HYWk7DQor5bSWPkdhaTsNCivltJc+S291Ow0KK+W0mD5Sb247DQor5bSZPlJvbjsNCivltJo+UnlvdTsNCivltJs+S3V0c3U7DQor5bSfPkdpbjsNCivltKI+U291Ow0KK+W0qT5Ib3U7DQor5bWLPkJpOw0KK+W1jD5LYW47DQor5bWOPkd1dTsNCivltZA+UmFuOw0KK+W1kj5HYW47DQor5bWcPktpOw0KK+W1qT5TdXU7DQor5bWsPkthaTsNCivlta8+U2E7DQor5bWzPlNhOw0KK+W2gj5TaG91Ow0KK+W2hD5TYW47DQor5baHPkt1Ow0KK+W2iz5Ub3U7DQor5baMPlRvdTsNCivltpA+Unl1dTsNCivltp0+VG91Ow0KK+W2oj5HeW91Ow0KK+W2rD5HaTsNCivltq4+S2VuOw0KK+W2tz5HaTsNCivltro+UmVpOw0KK+W2vD5TaG87DQor5ba9Pkdha3U7DQor5beJPlNhbjsNCivlt4w+R2FuOw0KK+W3jT5HaTsNCivlt5I+UmFuOw0KK+W3kz5UZW47DQor5beWPkdhbjsNCivlt5s+U2VuOw0KK+W3nT5TZW47DQor5beePlNodXU7DQor5behPkp1bjsNCivlt6M+U291Ow0KK+W3pT5Lb3U7DQor5bemPlNhOw0KK+W3pz5Lb3U7DQor5beoPkt5bzsNCivlt6s+RnU7DQor5beuPlNoaTsNCivlt7E+S2k7DQor5beyPkk7DQor5bezPlNoaTsNCivlt7Q+SGE7DQor5be1PlNoaTsNCivlt7c+S291Ow0KK+W3uz5LYW47DQor5be9PlNvbjsNCivlt74+S2luOw0KK+W4gj5TaGk7DQor5biDPkZ1Ow0KK+W4hj5IYW47DQor5biLPlNoaTsNCivluIw+S2k7DQor5biRPkRvOw0KK+W4lj5Kb3U7DQor5biZPkNoaXRzdTsNCivluJo+U291Ow0KK+W4mz5IYWt1Ow0KK+W4nT5UZWk7DQor5bilPlNvdHN1Ow0KK+W4qz5TaGk7DQor5bitPlNla2k7DQor5bivPlRhaTsNCivluLA+S2k7DQor5bizPkNob3U7DQor5bi2PlRhaTsNCivluLc+STsNCivluLg+Sm91Ow0KK+W4vT5Cb3U7DQor5bmAPlRlaTsNCivluYM+STsNCivluYQ+QWt1Ow0KK+W5hT5GdWt1Ow0KK+W5hz5Ib3U7DQor5bmMPktvdTsNCivluY4+QmVraTsNCivluZQ+QmFuOw0KK+W5lT5NYWt1Ow0KK+W5lz5LYWt1Ow0KK+W5nz5TaGk7DQor5bmhPkhhbjsNCivluaI+VG91Ow0KK+W5oz5IZWk7DQor5bmkPkhlaTsNCivlubI+S2FuOw0KK+W5sz5IZWk7DQor5bm0Pk5lbjsNCivlubU+S2VuOw0KK+W5tj5IZWk7DQor5bm4PktvdTsNCivlubk+S2FuOw0KK+W5uj5Zb3U7DQor5bm7PkdlbjsNCivlubw+WW91Ow0KK+W5vT5ZdXU7DQor5bm+PktpOw0KK+W5vz5HZW47DQor5bqBPkNob3U7DQor5bqDPktvdTsNCivluoQ+U291Ow0KK+W6hz5IaTsNCivluoo+U2hvdTsNCivluo8+Sm87DQor5bqVPlRlaTsNCivlupY+SG91Ow0KK+W6lz5UZW47DQor5bqaPktvdTsNCivlupw+RnU7DQor5bqgPlNob3U7DQor5bqmPlRha3U7DQor5bqnPlphOw0KK+W6qz5LbzsNCivluq0+VGVpOw0KK+W6tT5BbjsNCivlurY+U2hvOw0KK+W6tz5Lb3U7DQor5bq4PllvdTsNCivlu4E+U2hpOw0KK+W7gj5TaG91Ow0KK+W7gz5IYWk7DQor5buIPkthOw0KK+W7iT5SZW47DQor5buKPlJvdTsNCivlu5A+S3l1dTsNCivlu5M+S2FrdTsNCivlu5Y+UnlvdTsNCivlu5o+WnU7DQor5bubPlRlbjsNCivlu50+U2hpOw0KK+W7nz5CeW91Ow0KK+W7oD5TaG91Ow0KK+W7oT5CdTsNCivlu6I+SGFpOw0KK+W7oz5Lb3U7DQor5buoPkthaTsNCivlu6k+UmluOw0KK+W7rD5SeW87DQor5buwPkNob3U7DQor5buxPllvdTsNCivlu7M+Q2hvdTsNCivlu7Q+SW47DQor5bu2PkVuOw0KK+W7tz5UZWk7DQor5bu4PlRla2k7DQor5bu6PktlbjsNCivlu7s+S2FpOw0KK+W7vD5EYWk7DQor5bu+Pkt5b3U7DQor5bu/Pkp1dTsNCivlvIE+QmVuOw0KK+W8gz5LaTsNCivlvIQ+Um91Ow0KK+W8iT5Kb3U7DQor5byKPkhlaTsNCivlvIs+WW9rdTsNCivlvIw+SXRzdTsNCivlvI0+Tmk7DQor5byPPlNoaWtpOw0KK+W8kD5OaTsNCivlvJE+U2hpOw0KK+W8kz5LeXV1Ow0KK+W8lD5DaG91Ow0KK+W8lT5JbjsNCivlvJc+RnV0c3U7DQor5byYPktvdTsNCivlvJs+U2hpOw0KK+W8nz5UZWk7DQor5bylPk1pOw0KK+W8pj5HZW47DQor5bynPktvOw0KK+W8qT5EbzsNCivlvK0+Qmk7DQor5byvPldhbjsNCivlvLE+SmFrdTsNCivlvLU+Q2hvdTsNCivlvLc+S3lvdTsNCivlvLg+SG91Ow0KK+W8vD5IaXRzdTsNCivlvL4+RGFuOw0KK+W9gT5TZWk7DQor5b2IPkRhbjsNCivlvYo+S3lvdTsNCivlvYw+Qmk7DQor5b2OPldhbjsNCivlvZE+S2VpOw0KK+W9kz5Ub3U7DQor5b2WPlRhbjsNCivlvZc+U3VpOw0KK+W9mT5JOw0KK+W9nD5JOw0KK+W9nT5JOw0KK+W9oT5TYW47DQor5b2iPktlaTsNCivlvaY+R2VuOw0KK+W9qT5TYWk7DQor5b2qPkh5b3U7DQor5b2rPkNob3U7DQor5b2sPkhpbjsNCivlva0+SG91Ow0KK+W9sD5TaG91Ow0KK+W9sT5FaTsNCivlvbM+VGVraTsNCivlvbc+SG91Ow0KK+W9uT5ZYWt1Ow0KK+W9vD5IaTsNCivlvb8+RnV0c3U7DQor5b6APk91Ow0KK+W+gT5TZWk7DQor5b6CPlNvOw0KK+W+gz5PdTsNCivlvoQ+S2VpOw0KK+W+hT5UYWk7DQor5b6HPlNodW47DQor5b6IPktvbjsNCivlvoo+S2FpOw0KK+W+iz5SaXRzdTsNCivlvow+R287DQor5b6QPkpvOw0KK+W+kT5LZWk7DQor5b6SPlRvOw0KK+W+kz5KdXU7DQor5b6XPlRva3U7DQor5b6YPkhhaTsNCivlvpk+U2hpOw0KK+W+nj5KdXU7DQor5b6gPlJhaTsNCivlvqE+R3lvOw0KK+W+qD5Lb3U7DQor5b6pPkZ1a3U7DQor5b6qPkp1bjsNCivlvq0+WW91Ow0KK+W+rj5CaTsNCivlvrM+VG9rdTsNCivlvrQ+Q2hvdTsNCivlvrk+VGV0c3U7DQor5b68Pkt5b3U7DQor5b69PktpOw0KK+W/gz5TaGluOw0KK+W/hT5IaXRzdTsNCivlv4w+S2k7DQor5b+NPk5pbjsNCivlv5Y+U29uOw0KK+W/lz5TaGk7DQor5b+YPkJvdTsNCivlv5k+Qm91Ow0KK+W/nD5PdTsNCivlv50+VGVuOw0KK+W/oD5DaHV1Ow0KK+W/pD5HbzsNCivlv6s+S2FpOw0KK+W/sD5TdWk7DQor5b+xPlNoaW47DQor5b+1Pk5lbjsNCivlv7g+SmlrdTsNCivlv7s+S2luOw0KK+W/vT5Lb3RzdTsNCivlv78+RnVuOw0KK+aAjj5TaGluOw0KK+aAjz5Zb3U7DQor5oCQPktvdTsNCivmgJI+RG87DQor5oCVPkhhOw0KK+aAlj5GdTsNCivmgJk+S287DQor5oCbPkRhdHN1Ow0KK+aAnD5SZWk7DQor5oCdPlNoaTsNCivmgKA+VGFpOw0KK+aAoT5JOw0KK+aApT5LeXV1Ow0KK+aApj5Ib3U7DQor5oCnPlNlaTsNCivmgKg+RW47DQor5oCpPkppOw0KK+aAqj5LYWk7DQor5oCrPkZ1dHN1Ow0KK+aArz5LeW91Ow0KK+aAsT5Tb3U7DQor5oGBPkluOw0KK+aBgj5KdW47DQor5oGDPkppOw0KK+aBhj5Lb3U7DQor5oGKPkt5b3U7DQor5oGLPlJlbjsNCivmgY0+S291Ow0KK+aBkD5LeW91Ow0KK+aBkj5Lb3U7DQor5oGVPkpvOw0KK+aBmT5Zb3U7DQor5oGaPkk7DQor5oGfPkt5b3U7DQor5oGgPkthaTsNCivmgaI+S2FpOw0KK+aBoz5TaGk7DQor5oGkPkp1dHN1Ow0KK+aBpT5DaGk7DQor5oGoPktvbjsNCivmgak+T247DQor5oGqPktha3U7DQor5oGrPkRvdTsNCivmgaw+VGVuOw0KK+aBrT5LeW91Ow0KK+aBrz5Tb2t1Ow0KK+aBsD5Lb3U7DQor5oG1PktlaTsNCivmgbc+S3l1dTsNCivmgoE+RW47DQor5oKDPktvbjsNCivmgoQ+U2hvdTsNCivmgok+U2hpdHN1Ow0KK+aCiz5SaW47DQor5oKMPlRlaTsNCivmgo0+S2FuOw0KK+aCkj5ZdXU7DQor5oKUPkthaTsNCivmgpY+SGFpOw0KK+aClz5CYW47DQor5oKaPlNob3U7DQor5oKbPlNlbjsNCivmgp8+R287DQor5oKgPll1dTsNCivmgqM+S2FuOw0KK+aCpj5FdHN1Ow0KK+aCpz5SaTsNCivmgqk+Tm91Ow0KK+aCqj5Ba3U7DQor5oKyPkhpOw0KK+aCsz5Ub2t1Ow0KK+aCtD5TdWk7DQor5oK1PkNob3U7DQor5oK2Pk1vbjsNCivmgrg+S2k7DQor5oK8PlRvdTsNCivmgr0+U2VpOw0KK+aDhT5Kb3U7DQor5oOGPkNodXU7DQor5oOHPlRvbjsNCivmg5E+V2FrdTsNCivmg5M+S2VuOw0KK+aDmD5Cb3U7DQor5oOaPktvdHN1Ow0KK+aDnD5TZWtpOw0KK+aDnz5JOw0KK+aDoD5LZWk7DQor5oOhPk87DQor5oOjPlNvdTsNCivmg6c+S3U7DQor5oOoPlNhbjsNCivmg7A+RGE7DQor5oOxPk5vdTsNCivmg7M+U291Ow0KK+aDtD5adWk7DQor5oO2PktvdTsNCivmg7c+U2h1bjsNCivmg7k+SmE7DQor5oO6PlNlaTsNCivmg7s+U29rdTsNCivmhIA+U2hvdTsNCivmhIE+U2h1dTsNCivmhIM+S2VuOw0KK+aEhj5LZW47DQor5oSIPll1Ow0KK+aEiT5ZdTsNCivmhI0+QmluOw0KK+aEjj5IeW9rdTsNCivmhI8+STsNCivmhJU+R2FrdTsNCivmhJo+R3U7DQor5oSbPkFpOw0KK+aEnz5LYW47DQor5oShPlNvdTsNCivmhKc+S2k7DQor5oSoPktha3U7DQor5oSsPlNvOw0KK+aEtD5Tb3U7DQor5oS8PlNoaW47DQor5oS9Pkhha3U7DQor5oS+PktpOw0KK+aEvz5HZW47DQor5oWCPllvdTsNCivmhYQ+Uml0c3U7DQor5oWHPkluOw0KK+aFiD5KaTsNCivmhYo+S2VuOw0KK+aFiz5UYWk7DQor5oWMPktvdTsNCivmhY0+VW47DQor5oWOPlNoaW47DQor5oWTPkh5b3U7DQor5oWVPkJvOw0KK+aFmD5TYW47DQor5oWZPlphbjsNCivmhZo+WmFuOw0KK+aFnT5Ub2t1Ow0KK+aFnz5Eb3U7DQor5oWiPk1hbjsNCivmhaM+S2FuOw0KK+aFpT5ab3U7DQor5oWnPktlaTsNCivmhag+R2FpOw0KK+aFqz5TaG91Ow0KK+aFrj5SeW87DQor5oWvPlNob3U7DQor5oWwPkk7DQor5oWxPlRhbjsNCivmhbM+S2FuOw0KK+aFtD5TaG91Ow0KK+aFtT5Zb3U7DQor5oW2PktlaTsNCivmhbc+S291Ow0KK+aFvj5Zb2t1Ow0KK+aGgj5ZdXU7DQor5oaHPktlaTsNCivmhoo+SGFpOw0KK+aGjj5ab3U7DQor5oaQPlJlbjsNCivmhpE+SHlvdTsNCivmhpQ+U2hvdTsNCivmhpY+R2luOw0KK+aGmT5LaTsNCivmhpo+VGFuOw0KK+aGpD5GdW47DQor5oanPkRvdTsNCivmhqk+S2VpOw0KK+aGqz5CaW47DQor5oasPktlaTsNCivmhq4+QnU7DQor5oayPktlbjsNCivmhrY+T2t1Ow0KK+aGuj5UYW47DQor5oa+PkthbjsNCivmh4M+S2luOw0KK+aHhj5Tb3U7DQor5oeHPktvbjsNCivmh4g+S2FpOw0KK+aHiT5Zb3U7DQor5oeKPk91Ow0KK+aHiz5Cb3U7DQor5oeMPkVraTsNCivmh40+UmluOw0KK+aHkD5LYWk7DQor5oejPk1vbjsNCivmh6Y+RGE7DQor5oeyPkNob3U7DQor5oe0PlphbjsNCivmh7Y+UmFuOw0KK+aHtz5LYWk7DQor5oe4PktlbjsNCivmh7o+WmFuOw0KK+aHvD5LdTsNCivmh70+S2FuOw0KK+aHvj5TaG91Ow0KK+aHvz5JOw0KK+aIgD5SZW47DQor5oiIPkthOw0KK+aIiT5FdHN1Ow0KK+aIij5CbzsNCivmiIw+SnV0c3U7DQor5oiNPkp1Ow0KK+aIjj5KdXU7DQor5oiQPlNlaTsNCivmiJE+R2E7DQor5oiSPkthaTsNCivmiJQ+U2FuOw0KK+aIlj5XYWt1Ow0KK+aImj5TZWtpOw0KK+aImz5LYXRzdTsNCivmiJ0+Wm9rdTsNCivmiJ4+S2F0c3U7DQor5oifPkdla2k7DQor5oihPkthbjsNCivmiKY+U2VuOw0KK+aIqj5TZXRzdTsNCivmiK4+UmlrdTsNCivmiK8+R2k7DQor5oiwPlNlbjsNCivmiLI+R2k7DQor5oizPlRha3U7DQor5oi0PlRhaTsNCivmiLg+S287DQor5oi7PlJlaTsNCivmiL8+Qm91Ow0KK+aJgD5TaG87DQor5omBPkhlbjsNCivmiYc+U2VuOw0KK+aJiD5LbzsNCivmiYk+SGk7DQor5omLPlNodTsNCivmiY0+U2FpOw0KK+aJjj5TYXRzdTsNCivmiZM+RGE7DQor5omVPkZ1dHN1Ow0KK+aJmD5UYWt1Ow0KK+aJmz5Lb3U7DQor5omePkthbjsNCivmiaA+U2E7DQor5omjPktvdTsNCivmia4+RnVuOw0KK+aJsT5Tb3U7DQor5om2PkZ1Ow0KK+aJuT5IaTsNCivmibw+QWt1Ow0KK+aJvj5LYTsNCivmib8+U2hvdTsNCivmioA+R2k7DQor5oqCPkt5b3U7DQor5oqDPkJlbjsNCivmioQ+U2hvdTsNCivmiok+S2V0c3U7DQor5oqKPkhhOw0KK+aKkT5Zb2t1Ow0KK+aKkj5KbzsNCivmipM+U291Ow0KK+aKlD5Ib3U7DQor5oqVPlRvdTsNCivmipY+VG91Ow0KK+aKlz5Lb3U7DQor5oqYPlNldHN1Ow0KK+aKmz5Ib3U7DQor5oqcPkJhdHN1Ow0KK+aKnj5UYWt1Ow0KK+aKqz5IaTsNCivmiqw+VGFpOw0KK+aKsT5Ib3U7DQor5oq1PlRlaTsNCivmirk+TWF0c3U7DQor5oq7PlNoaW47DQor5oq8Pk91Ow0KK+aKvT5DaHV1Ow0KK+aLgj5GdXRzdTsNCivmi4U+VGFuOw0KK+aLhj5UYWt1Ow0KK+aLhz5CbzsNCivmi4g+RGVuOw0KK+aLiT5SYXRzdTsNCivmi4o+RnU7DQor5ouMPkhhbjsNCivmi40+SGFrdTsNCivmi48+RGE7DQor5ouQPkthaTsNCivmi5E+S2FuOw0KK+aLkj5LeW87DQor5ouTPlRha3U7DQor5ouUPkJhdHN1Ow0KK+aLlz5PdTsNCivmi5g+S291Ow0KK+aLmT5TZXRzdTsNCivmi5s+U2hvdTsNCivmi5w+SGFpOw0KK+aLnT5IYWk7DQor5ougPkt5bzsNCivmi6E+S2FrdTsNCivmi6w+S2F0c3U7DQor5outPlNoaWtpOw0KK+aLrj5LaXRzdTsNCivmi68+Sm91Ow0KK+aLsT5LeW91Ow0KK+aLsz5LZW47DQor5ou1PlNvbjsNCivmi7Y+U2F0c3U7DQor5ou3PkdvdTsNCivmi74+U2h1dTsNCivmi78+RGE7DQor5oyBPkppOw0KK+aMgj5LZWk7DQor5oyHPlNoaTsNCivmjIg+S2V0c3U7DQor5oyJPkFuOw0KK+aMjD5LYWt1Ow0KK+aMkT5DaG91Ow0KK+aMmT5LeW87DQor5oyfPkt5b3U7DQor5oynPkt1Ow0KK+aMqD5BaTsNCivmjKs+WmE7DQor5oyvPlNoaW47DQor5oy6PlRlaTsNCivmjL0+QmFuOw0KK+aMvj5LeW91Ow0KK+aMvz5Tb3U7DQor5o2JPlNva3U7DQor5o2MPkhhdHN1Ow0KK+aNjT5LYW47DQor5o2PPkRldHN1Ow0KK+aNkD5FbjsNCivmjZU+SG87DQor5o2XPkhvOw0KK+aNnD5Tb3U7DQor5o2nPkhvdTsNCivmjag+U2hhOw0KK+aNqT5SZXRzdTsNCivmjas+TW9uOw0KK+aNrj5LeW87DQor5o2yPktlbjsNCivmjbY+U3VpOw0KK+aNtz5TaG91Ow0KK+aNuj5OYXRzdTsNCivmjbs+TmVuOw0KK+aOgD5LaW47DQor5o6DPlNvdTsNCivmjog+SnU7DQor5o6JPlRvdTsNCivmjow+U2hvdTsNCivmjo4+S2k7DQor5o6PPlRvdTsNCivmjpI+SGFpOw0KK+aOlj5Fa2k7DQor5o6YPkt1dHN1Ow0KK+aOmz5LYTsNCivmjp8+VG91Ow0KK+aOoD5SeWFrdTsNCivmjqE+U2FpOw0KK+aOoj5UYW47DQor5o6jPlNlaTsNCivmjqU+U2V0c3U7DQor5o6nPktvdTsNCivmjqg+U3VpOw0KK+aOqT5FbjsNCivmjqo+U287DQor5o6rPlNvdTsNCivmjqw+S2lrdTsNCivmjrI+S2VpOw0KK+aOtD5LYWt1Ow0KK+aOuz5Tb3U7DQor5o6+PkVuOw0KK+aPgD5LYW47DQor5o+DPlNlbjsNCivmj4Q+WXU7DQor5o+GPktpOw0KK+aPiT5KdXU7DQor5o+PPkJ5b3U7DQor5o+QPlRlaTsNCivmj5I+U291Ow0KK+aPlj5ZdXU7DQor5o+aPllvdTsNCivmj5s+S2FuOw0KK+aPoT5Ba3U7DQor5o+jPlNoaTsNCivmj6k+S2FpOw0KK+aPrj5LaTsNCivmj7Q+RW47DQor5o+2PllhOw0KK+aPuj5Zb3U7DQor5pCGPktvdTsNCivmkI0+U29uOw0KK+aQjz5IYWt1Ow0KK+aQkz5TYTsNCivmkJY+WW91Ow0KK+aQlz5Ub3U7DQor5pCcPlNvdTsNCivmkKY+SmFrdTsNCivmkKg+VG91Ow0KK+aQrD5IYW47DQor5pCtPlRvdTsNCivmkLQ+S2VuOw0KK+aQtj5TaG91Ow0KK+aQuj5LZWk7DQor5pC+PlNha3U7DQor5pGCPlNldHN1Ow0KK+aRjj5LeXV1Ow0KK+aRmD5UZWtpOw0KK+aRpz5TYWk7DQor5pGpPk1hOw0KK+aRrz5TaGk7DQor5pG2PlRhbjsNCivmkbg+TW87DQor5pG6PlNob3U7DQor5pKDPkdla2k7DQor5pKIPlJvdTsNCivmkpI+U2FuOw0KK+aSkz5Eb3U7DQor5pKVPlNlaTsNCivmkpo+TmVuOw0KK+aSnj5TaHU7DQor5pKkPlRldHN1Ow0KK+aSpT5IYXRzdTsNCivmkqk+UnlvdTsNCivmkqs+QnU7DQor5pKtPkhhOw0KK+aSrj5TYXRzdTsNCivmkrA+U2FuOw0KK+aSsj5Cb2t1Ow0KK+aSuT5LYWt1Ow0KK+aSuz5UYWNoaTsNCivmkrw+S2FuOw0KK+aTgT5Zb3U7DQor5pOCPlJhaTsNCivmk4U+U2VuOw0KK+aThz5UYWt1Ow0KK+aTjT5Tb3U7DQor5pOSPktpbjsNCivmk5Q+VGFuOw0KK+aTmD5IYWt1Ow0KK+aTmj5LeW87DQor5pOgPlNlaTsNCivmk6E+VGFpOw0KK+aToj5UZWtpOw0KK+aToz5Ub3U7DQor5pOmPlNhdHN1Ow0KK+aTpz5LeW87DQor5pOsPkdpOw0KK+aTrz5IaW47DQor5pOxPktha3U7DQor5pOyPlRla2k7DQor5pO0Pktha3U7DQor5pO2PlNlbjsNCivmk7o+SGFpOw0KK+aTvT5SeWFrdTsNCivmk74+Sm91Ow0KK+aUgD5IYW47DQor5pSFPlNhbjsNCivmlJg+Sm91Ow0KK+aUnD5LZWk7DQor5pSdPlNldHN1Ow0KK+aUoz5SZW47DQor5pSkPlRhbjsNCivmlKo+S2FrdTsNCivmlKs+S2FrdTsNCivmlKw+UmFuOw0KK+aUrz5TaGk7DQor5pS0Pkhva3U7DQor5pS1PkJva3U7DQor5pS2PlNodXU7DQor5pS3PktvdTsNCivmlLg+WXV1Ow0KK+aUuT5LYWk7DQor5pS7PktvdTsNCivmlL4+SG91Ow0KK+aUvz5TZWk7DQor5pWFPktvOw0KK+aViD5Lb3U7DQor5pWNPkpvOw0KK+aVjz5CaW47DQor5pWRPkt5dXU7DQor5pWVPkNob2t1Ow0KK+aVlj5Hb3U7DQor5pWXPkhhaTsNCivmlZg+Sm87DQor5pWZPkt5b3U7DQor5pWdPkhlaTsNCivmlZ4+U2hvdTsNCivmlaI+S2FuOw0KK+aVoz5TYW47DQor5pWmPlRvbjsNCivmlaw+S2VpOw0KK+aVsD5TdXU7DQor5pWyPktvdTsNCivmlbQ+U2VpOw0KK+aVtT5UZWtpOw0KK+aVtz5GdTsNCivmlbg+U3V1Ow0KK+aWgj5SZW47DQor5paDPkhlaTsNCivmloc+QnVuOw0KK+aWiD5HYWt1Ow0KK+aWiT5TZWk7DQor5paMPkhpbjsNCivmlo4+U2FpOw0KK+aWkD5IaTsNCivmlpE+SGFuOw0KK+aWlz5UbzsNCivmlpk+UnlvdTsNCivmlps+S29rdTsNCivmlpw+U2hhOw0KK+aWnz5TaGluOw0KK+aWoT5BdHN1Ow0KK+aWpD5LaW47DQor5palPlNla2k7DQor5panPkZ1Ow0KK+aWqz5TaGFrdTsNCivmlqw+WmFuOw0KK+aWrT5EYW47DQor5pavPlNoaTsNCivmlrA+U2hpbjsNCivmlrc+RGFuOw0KK+aWuT5Ib3U7DQor5pa8Pk87DQor5pa9PlNoaTsNCivml4E+SG91Ow0KK+aXgz5TZW47DQor5peEPkJvdTsNCivml4U+UnlvOw0KK+aXhj5IYWk7DQor5peLPlNlbjsNCivml4w+U2VpOw0KK+aXjz5ab2t1Ow0KK+aXkj5SeXV1Ow0KK+aXlz5LaTsNCivml5k+SGFuOw0KK+aXmz5IYW47DQor5pegPkJ1Ow0KK+aXoT5LaTsNCivml6I+S2k7DQor5pelPk5pY2hpOw0KK+aXpj5UYW47DQor5penPkt5dXU7DQor5peoPlNoaTsNCivml6k+U291Ow0KK+aXrD5KdW47DQor5petPkt5b2t1Ow0KK+aXsT5LYW47DQor5pe6Pk91Ow0KK+aXuz5CaW47DQor5piCPktvdTsNCivmmIM+U29rdTsNCivmmIY+S29uOw0KK+aYhz5TaG91Ow0KK+aYij5Lb3U7DQor5piMPlNob3U7DQor5piOPk1laTsNCivmmI8+S29uOw0KK+aYkz5Fa2k7DQor5piUPlNla2k7DQor5picPllvdTsNCivmmJ8+U2VpOw0KK+aYoD5FaTsNCivmmKU+U2h1bjsNCivmmKc+TWFpOw0KK+aYqD5TYWt1Ow0KK+aYrT5TaG91Ow0KK+aYrz5aZTsNCivmmLQ+Qm91Ow0KK+aYtT5KaXRzdTsNCivmmLY+Q2hvdTsNCivmmLw+Q2h1dTsNCivmmL8+S291Ow0KK+aZgT5DaG91Ow0KK+aZgj5KaTsNCivmmYM+S291Ow0KK+aZhD5Lb3U7DQor5pmJPlNoaW47DQor5pmLPlNoaW47DQor5pmPPkFuOw0KK+aZkj5TYWk7DQor5pmdPkNodXU7DQor5pmePktpOw0KK+aZnz5TZWk7DQor5pmiPlNldHN1Ow0KK+aZpD5HbzsNCivmmaY+S2FpOw0KK+aZpz5Lb3U7DQor5pmoPlNoaW47DQor5pmpPkJhbjsNCivmma4+RnU7DQor5pmvPktlaTsNCivmmbA+U2VraTsNCivmmbQ+U2VpOw0KK+aZtj5TaG91Ow0KK+aZuj5DaGk7DQor5pqBPkd5b3U7DQor5pqDPkhpOw0KK+aahD5LZW47DQor5pqHPkthOw0KK+aaiD5VbjsNCivmmok+S2k7DQor5pqOPkVpOw0KK+aakT5TaG87DQor5pqWPkRhbjsNCivmmpc+QW47DQor5pqYPllvdTsNCivmmp0+TWVpOw0KK+aaoj5DaG91Ow0KK+aapj5SZWtpOw0KK+aaqz5aYW47DQor5pquPkJvOw0KK+aatD5Cb3U7DQor5pq4PlJ5b3U7DQor5pq5PlNlbjsNCivmmrw+SGV0c3U7DQor5pq+PlRvbjsNCivmm4E+S2k7DQor5puEPllvdTsNCivmm4c+RG9uOw0KK+abiT5HeW91Ow0KK+ablj5BaTsNCivmm5k+U2hvOw0KK+abmj5Cb3U7DQor5pucPllvdTsNCivmm50+QmFrdTsNCivmm6A+S291Ow0KK+abpj5HaTsNCivmm6k+RG91Ow0KK+absD5FdHN1Ow0KK+absj5LeW9rdTsNCivmm7M+RWk7DQor5pu0PktvdTsNCivmm7U+RWk7DQor5pu3PkthdHN1Ow0KK+abuD5TaG87DQor5pu5PlNvdTsNCivmm7w+QmFuOw0KK+abvT5abzsNCivmm74+U287DQor5pu/PlRhaTsNCivmnIA+U2FpOw0KK+acgz5LYWk7DQor5pyIPkdldHN1Ow0KK+aciT5ZdXU7DQor5pyLPkhvdTsNCivmnI0+RnVrdTsNCivmnI8+SGk7DQor5pyUPlNha3U7DQor5pyVPkNoaW47DQor5pyWPlJvdTsNCivmnJc+Um91Ow0KK+acmz5Cb3U7DQor5pydPkNob3U7DQor5pyePktpOw0KK+acnz5LaTsNCivmnKY+Qm91Ow0KK+acpz5Sb3U7DQor5pyoPkJva3U7DQor5pyqPk1pOw0KK+acqz5NYXRzdTsNCivmnKw+SG9uOw0KK+acrT5TYXRzdTsNCivmnK4+SnV0c3U7DQor5pyxPlNodTsNCivmnLQ+Qm9rdTsNCivmnLY+RGE7DQor5py3PlRvdTsNCivmnLg+Unlva3U7DQor5py6PktpOw0KK+acvT5LeXV1Ow0KK+acvz5TaGk7DQor5p2GPkthbjsNCivmnYk+U2FuOw0KK+adjj5SaTsNCivmnY8+S3lvdTsNCivmnZA+WmFpOw0KK+adkT5Tb247DQor5p2TPkh5b3U7DQor5p2WPkpvdTsNCivmnZk+WW9rdTsNCivmnZw+RG87DQor5p2ePktvOw0KK+adnz5Tb2t1Ow0KK+adoD5Lb3U7DQor5p2hPkpvdTsNCivmnaU+UmFpOw0KK+adqj5CeW91Ow0KK+adrT5Lb3U7DQor5p2vPkhhaTsNCivmnbA+S2V0c3U7DQor5p2xPlRvdTsNCivmnbI+S291Ow0KK+adsz5Zb3U7DQor5p21PlNobzsNCivmnbc+SGE7DQor5p28PkNobzsNCivmnb4+U2hvdTsNCivmnb8+SGFuOw0KK+aehT5LZWk7DQor5p6HPkhpOw0KK+aeiT5PdTsNCivmnos+SG91Ow0KK+aejD5GdW47DQor5p6QPlNla2k7DQor5p6VPkNoaW47DQor5p6XPlJpbjsNCivmnpo+TWFpOw0KK+aenD5LYTsNCivmnp0+U2hpOw0KK+aeoj5TdXU7DQor5p6mPlJvOw0KK+aeqT5TaG91Ow0KK+aerz5LbzsNCivmnrM+S2k7DQor5p60PkthaTsNCivmnrY+S2E7DQor5p63PkthOw0KK+aeuD5LdTsNCivmnrk+SG91Ow0KK+afgT5UYTsNCivmn4Q+SGVpOw0KK+afhj5Sb3U7DQor5p+KPlNodXU7DQor5p+OPkZ1Ow0KK+afjz5IYWt1Ow0KK+afkD5Cb3U7DQor5p+RPkthbjsNCivmn5M+U2VuOw0KK+aflD5OeXV1Ow0KK+afmD5TaGE7DQor5p+aPll1dTsNCivmn50+VGFrdTsNCivmn54+U2FrdTsNCivmn6I+VGVpOw0KK+afpD5TYTsNCivmn6c+S287DQor5p+pPkt5dXU7DQor5p+sPkthbjsNCivmn64+VG90c3U7DQor5p+vPkthOw0KK+afsT5DaHV1Ow0KK+afsz5SeXV1Ow0KK+aftD5TYWk7DQor5p+1PlNha3U7DQor5p+7PlNhOw0KK+afvj5LeXV1Ow0KK+afvz5TaGk7DQor5qCEPkVpOw0KK+agkz5TZW47DQor5qCWPlNlaTsNCivmoJc+Uml0c3U7DQor5qCePkthbjsNCivmoKE+S291Ow0KK+agoj5IYWt1Ow0KK+agqT5LdTsNCivmoKo+Q2h1Ow0KK+agqz5Tb247DQor5qCyPkdvdTsNCivmoLQ+U2VuOw0KK+aguD5LYWt1Ow0KK+aguT5Lb247DQor5qC8PktvdTsNCivmoL0+U2FpOw0KK+ahgD5LZXRzdTsNCivmoYE+S291Ow0KK+ahgj5LZWk7DQor5qGDPlRvdTsNCivmoYY+S3lvdTsNCivmoYg+QW47DQor5qGNPktvOw0KK+ahjj5TaGl0c3U7DQor5qGQPkRvdTsNCivmoZE+U291Ow0KK+ahkz5LYW47DQor5qGUPktpdHN1Ow0KK+ahmT5VOw0KK+ahnD5PdTsNCivmoZ8+U2FuOw0KK+ahoz5Ub3U7DQor5qGnPkthaTsNCivmobQ+RnU7DQor5qG2PlRvdTsNCivmobc+S2FrdTsNCivmob4+S3VuOw0KK+ahvz5LYW47DQor5qKBPlJ5b3U7DQor5qKDPlRlaTsNCivmooU+QmFpOw0KK+aijT5Tb3U7DQor5qKPPktva3U7DQor5qKTPlNoaTsNCivmopQ+U2hpOw0KK+ailz5Lb3U7DQor5qKbPkRhOw0KK+ainT5Kb3U7DQor5qKfPkt5b3U7DQor5qKgPlJ5bzsNCivmoqI+U2hvdTsNCivmoqY+TXU7DQor5qKnPkdvOw0KK+aiqD5SaTsNCivmoq0+U2E7DQor5qKvPlRlaTsNCivmorA+S2FpOw0KK+aisT5Lb247DQor5qKzPlNvOw0KK+aitT5GdXU7DQor5qK2PkJpOw0KK+aiuT5CaW47DQor5qK8PlRvdTsNCivmo4Q+S2k7DQor5qOGPlJpbjsNCivmo4k+TWVuOw0KK+ajij5LaTsNCivmo4s+S2k7DQor5qONPktvbjsNCivmo5I+Qm91Ow0KK+ajlD5Lb247DQor5qOVPlNodTsNCivmo5c+U291Ow0KK+ajmD5LeW9rdTsNCivmo5o+SG91Ow0KK+ajnz5Ub3U7DQor5qOgPlRvdTsNCivmo6E+S291Ow0KK+ajoz5UZWk7DQor5qOnPlNhbjsNCivmo64+U2hpbjsNCivmo68+SmluOw0KK+ajsj5TZWk7DQor5qO5PlRvdTsNCivmo7o+S2FuOw0KK+akgD5XYW47DQor5qSBPktha3U7DQor5qSEPlNldHN1Ow0KK+akhT5JOw0KK+akiD5LaWt1Ow0KK+akiz5SeW91Ow0KK+akjD5Lb3U7DQor5qSNPlNob2t1Ow0KK+akjj5Uc3VpOw0KK+akjz5BOw0KK+akkj5TaG91Ow0KK+aknD5LZW47DQor5qSiPkthaTsNCivmpKY+S2VuOw0KK+aksD5ZYTsNCivmpLQ+VGFuOw0KK+aktj5TaHU7DQor5qS5PkNoaW47DQor5qS9PlRlbjsNCivmpL8+Q2hpbjsNCivmpYo+WW91Ow0KK+alkz5GdXU7DQor5qWUPlNldHN1Ow0KK+allT5EYTsNCivmpZk+Qm91Ow0KK+almj5TbzsNCivmpZw+S287DQor5qWdPlJlbjsNCivmpZ4+Um91Ow0KK+aloD5OYW47DQor5qWhPll1Ow0KK+aloj5TaHV1Ow0KK+alqj5Zb3U7DQor5qWrPlNodXU7DQor5qWtPkd5b3U7DQor5qWuPkNobzsNCivmpa8+SnVuOw0KK+alsz5CYWk7DQor5qW0PlRlaTsNCivmpbU+R29rdTsNCivmpbc+S2FpOw0KK+aluD5TaHV1Ow0KK+aluT5FaTsNCivmpbw+Um91Ow0KK+alvT5HYWt1Ow0KK+amgj5HYWk7DQor5qaOPkthOw0KK+amkT5GdTsNCivmppQ+Um91Ow0KK+amlT5Zb3U7DQor5qabPlNoaW47DQor5qacPkJvdTsNCivmpqA+QmVpOw0KK+ampz5IaTsNCivmpq4+RWk7DQor5qaxPlN1aTsNCivmprI+T3RzdTsNCivmprQ+Unl1dTsNCivmprs+VG91Ow0KK+amvj5Lb3RzdTsNCivmpr8+S2k7DQor5qeBPktvdTsNCivmp4M+SGFuOw0KK+anhz5UZW47DQor5qeKPlNha3U7DQor5qeLPktvdTsNCivmp4w+VHN1aTsNCivmp40+U291Ow0KK+anjj5TYTsNCivmp5A+S2FpOw0KK+ankz5Lb3U7DQor5qeYPllvdTsNCivmp5k+VGVuOw0KK+annT5Ub3U7DQor5qeePlJvdTsNCivmp6c+U2FuOw0KK+anqD5LYWt1Ow0KK+anqz5UYW47DQor5qetPlNodWt1Ow0KK+ansj5Lb2t1Ow0KK+anuT5Lb3U7DQor5qe7PktpOw0KK+anvT5Tb3U7DQor5qe/PktpbjsNCivmqII+R2FrdTsNCivmqIU+U2hvdTsNCivmqIo+SGFuOw0KK+aoiz5Ub3U7DQor5qiMPkthbjsNCivmqJI+TWl0c3U7DQor5qiTPlJvdTsNCivmqJQ+U291Ow0KK+aolz5DaG87DQor5qiZPkh5b3U7DQor5qibPkt5dXU7DQor5qiePlN1dTsNCivmqJ8+U2hvdTsNCivmqKE+TW87DQor5qiiPkJva3U7DQor5qijPllvdTsNCivmqKk+S2VuOw0KK+aoqj5PdTsNCivmqLU+U2hvdTsNCivmqLY+U2FpOw0KK+aouD5Cb2t1Ow0KK+aouT5KdTsNCivmqLo+S2E7DQor5qi9PlNvbjsNCivmqYQ+S2FuOw0KK+aphz5aZWk7DQor5qmIPkRvdTsNCivmqYs+S3lvdTsNCivmqZg+S2l0c3U7DQor5qmZPlRvdTsNCivmqZ8+S2k7DQor5qmhPlNob3U7DQor5qmiPkRhOw0KK+appj5Ub3U7DQor5qm4PlNob3U7DQor5qm/Pkt5b3U7DQor5qqAPlRhbjsNCivmqoQ+R2VraTsNCivmqo0+WW9rdTsNCivmqo4+R287DQor5qqQPkVuOw0KK+aqlz5IYWt1Ow0KK+aqnD5LYWk7DQor5qqgPktlaTsNCivmqqI+S2VuOw0KK+aqoz5TaG91Ow0KK+aqqj5SZWtpOw0KK+aqrD5Cb3U7DQor5qquPlRvdTsNCivmqrM+QmluOw0KK+aquD5OZWk7DQor5qq7PkthbjsNCivmq4E+TWl0c3U7DQor5quCPlRvdTsNCivmq4M+S2k7DQor5quRPlJhaTsNCivmq5M+Um87DQor5quaPlJ5bzsNCivmq5s+U2hpdHN1Ow0KK+arnj5FbjsNCivmq58+UmVraTsNCivmq6g+Um87DQor5quqPlJla2k7DQor5qu6PlJlaTsNCivmq7s+T3U7DQor5qyEPlJhbjsNCivmrIU+S3lvOw0KK+asij5LZW47DQor5qySPlJhbjsNCivmrJY+UmFuOw0KK+asnT5VdHN1Ow0KK+asoD5LZXRzdTsNCivmrKE+Smk7DQor5qyjPkdvbjsNCivmrKc+T3U7DQor5qyyPllva3U7DQor5qy3PktpOw0KK+asuD5BaTsNCivmrLk+STsNCivmrLo+R2k7DQor5qy9PktpbjsNCivmrL4+S2FuOw0KK+atgz5Tb3U7DQor5q2HPktldHN1Ow0KK+atiT5LZW47DQor5q2MPkthOw0KK+atjj5UYW47DQor5q2QPk91Ow0KK+atkz5LYW47DQor5q2UPkt5bzsNCivmrZk+S3l1dTsNCivmrZs+S2FuOw0KK+atnz5ZbzsNCivmraE+S2FuOw0KK+atoj5TaGk7DQor5q2jPlNlaTsNCivmraQ+U2hpOw0KK+atpj5CdTsNCivmrak+SG87DQor5q2qPldhaTsNCivmra8+U2hpOw0KK+atsz5TZWk7DQor5q20PlJla2k7DQor5q24PktpOw0KK+atuT5HYXRzdTsNCivmrbs+U2hpOw0KK+atvz5Cb3RzdTsNCivmroA+WW91Ow0KK+augz5Zb3U7DQor5q6EPlRlbjsNCivmroY+VGFpOw0KK+auiT5KdW47DQor5q6KPlNodTsNCivmros+WmFuOw0KK+aujT5IeW91Ow0KK+aulT5GdXU7DQor5q6WPlNob2t1Ow0KK+aumD5aYW47DQor5q6ePkluOw0KK+aupD5TaG91Ow0KK+auqj5FaTsNCivmrqs+VGFuOw0KK+aurz5IaW47DQor5q6xPlNlbjsNCivmrrI+U2VuOw0KK+ausz5TaHU7DQor5q60Pk91Ow0KK+autT5EYW47DQor5q63PkluOw0KK+auuj5TYXRzdTsNCivmrrs+S2FrdTsNCivmrrw+S2FrdTsNCivmrr8+VGVuOw0KK+avgD5LaTsNCivmr4U+S2k7DQor5q+GPk91Ow0KK+aviz5CdTsNCivmr40+Qm87DQor5q+OPk1haTsNCivmr5I+RG9rdTsNCivmr5M+SWt1Ow0KK+avlD5IaTsNCivmr5g+SGk7DQor5q+bPk1vdTsNCivmr6s+S291Ow0KK+avrD5LeXV1Ow0KK+avrz5UYW47DQor5q+zPlplaTsNCivmsIg+U2VuOw0KK+awjz5TaGk7DQor5rCRPk1pbjsNCivmsJM+Qm91Ow0KK+awlD5LaTsNCivmsJc+S2k7DQor5rCbPkZ1bjsNCivmsKM+S2k7DQor5rCkPkluOw0KK+awtD5TdWk7DQor5rC3Pkh5b3U7DQor5rC4PkVpOw0KK+awvj5IYW47DQor5rGAPlRlaTsNCivmsYE+SnV1Ow0KK+axgj5LeXV1Ow0KK+axjj5IYW47DQor5rGQPlNla2k7DQor5rGVPlNhbjsNCivmsZc+S2FuOw0KK+axmj5POw0KK+axnT5KbzsNCivmsZ4+S291Ow0KK+axnz5Lb3U7DQor5rGgPkNoaTsNCivmsag+QmVraTsNCivmsao+T3U7DQor5rGwPlRhOw0KK+axsj5LeXV1Ow0KK+axsz5IZW47DQor5rG6PktldHN1Ow0KK+axvT5LaTsNCivmsb4+RnVuOw0KK+aygT5TaGluOw0KK+aygj5LaTsNCivmsoM+WW9rdTsNCivmsog+Q2hpbjsNCivmsow+VG9uOw0KK+ayjT5HbzsNCivmspA+Qm9rdTsNCivmspI+Qm90c3U7DQor5rKTPlRvdTsNCivmspY+Q2h1dTsNCivmspk+U2E7DQor5rKaPlNoaTsNCivmsps+SGFpOw0KK+ayoT5Cb3RzdTsNCivmsqI+VGFrdTsNCivmsqs+TWF0c3U7DQor5rKuPlNobzsNCivmsrE+VGE7DQor5rKzPkthOw0KK+ayuD5GdXRzdTsNCivmsrk+WXU7DQor5rK6PlRlbjsNCivmsrs+Smk7DQor5rK8PlNob3U7DQor5rK9PktvOw0KK+ayvj5UZW47DQor5rK/PkVuOw0KK+azgT5LeW91Ow0KK+azhD5FaTsNCivms4U+U2h1dTsNCivms4k+U2VuOw0KK+azij5IYWt1Ow0KK+azjD5IaXRzdTsNCivms5M+T3U7DQor5rOVPkhvdTsNCivms5c+U2hpOw0KK+azmT5Ib3U7DQor5rObPkhhbjsNCivms50+U287DQor5rOhPkhvdTsNCivms6I+SGE7DQor5rOjPkt5dXU7DQor5rOlPkRlaTsNCivms6g+Q2h1dTsNCivms6o+UnVpOw0KK+azrz5CaW47DQor5rOwPlRhaTsNCivms7E+T3U7DQor5rOzPkVpOw0KK+a0iz5Zb3U7DQor5rSMPlJldHN1Ow0KK+a0kj5TZWk7DQor5rSXPlNlbjsNCivmtJk+U2h1Ow0KK+a0mz5SYWt1Ow0KK+a0nj5Eb3U7DQor5rSfPkk7DQor5rSlPlNoaW47DQor5rSpPkVpOw0KK+a0qj5Lb3U7DQor5rSrPkt5b2t1Ow0KK+a0sj5TaHV1Ow0KK+a0sz5KbzsNCivmtLU+U2h1bjsNCivmtLY+S3lvdTsNCivmtLg+S291Ow0KK+a0uz5LYXRzdTsNCivmtL0+S291Ow0KK+a0vj5IYTsNCivmtYE+Unl1dTsNCivmtYQ+Sm91Ow0KK+a1hT5TZW47DQor5rWZPlNldHN1Ow0KK+a1mj5TaHVuOw0KK+a1nD5IaW47DQor5rWjPkthbjsNCivmtaQ+S291Ow0KK+a1pj5IbzsNCivmtak+S291Ow0KK+a1qj5Sb3U7DQor5rWsPlJpOw0KK+a1rj5GdTsNCivmtbQ+WW9rdTsNCivmtbc+S2FpOw0KK+a1uD5TaGluOw0KK+a1uT5TaG91Ow0KK+a2hT5OZXRzdTsNCivmtog+U2hvdTsNCivmtow+WXV1Ow0KK+a2jj5TZW47DQor5raTPktlbjsNCivmtpU+VGVpOw0KK+a2mT5SdWk7DQor5rabPlRvdTsNCivmtpw+VG9rdTsNCivmtq8+R2FpOw0KK+a2sj5Fa2k7DQor5ra1PkthbjsNCivmtrg+S287DQor5ra8PlJ5b3U7DQor5reAPlRlbjsNCivmt4U+U2VraTsNCivmt4Y+S291Ow0KK+a3hz5LaTsNCivmt4s+UmluOw0KK+a3jD5TaG91Ow0KK+a3kT5TaHVrdTsNCivmt5I+U2VpOw0KK+a3lT5SaWt1Ow0KK+a3mD5Ub3U7DQor5reZPlNvdTsNCivmt54+U2hvdTsNCivmt6E+VGFuOw0KK+a3pD5ZbzsNCivmt6Y+S2FuOw0KK+a3qD5Kb3U7DQor5reqPlJpbjsNCivmt6s+SW47DQor5resPlNhaTsNCivmt64+V2FpOw0KK+a3sT5TaGluOw0KK+a3sz5TaHVuOw0KK+a3tT5FbjsNCivmt7c+S29uOw0KK+a3uT5FbjsNCivmt7o+U2VuOw0KK+a3uz5UZW47DQor5riFPlNlaTsNCivmuIc+S2F0c3U7DQor5riIPlNhaTsNCivmuIk+U2hvdTsNCivmuIo+RW47DQor5riLPkp1dTsNCivmuJM+S2VpOw0KK+a4lT5FbjsNCivmuJk+S2FuOw0KK+a4mj5TaG87DQor5ribPkdlbjsNCivmuJ0+WXU7DQor5rifPlRlaTsNCivmuKA+S3lvOw0KK+a4oT5UbzsNCivmuKM+U2E7DQor5rikPkJvdHN1Ow0KK+a4pT5Ba3U7DQor5rimPkthOw0KK+a4qT5PbjsNCivmuKs+U2V0c3U7DQor5risPlNva3U7DQor5ritPkk7DQor5riuPkthOw0KK+a4rz5Lb3U7DQor5ri4Pll1dTsNCivmuLo+QnlvdTsNCivmuL4+S29uOw0KK+a5gz5IYWk7DQor5rmKPlNvdTsNCivmuY0+VGFuOw0KK+a5jj5CZW47DQor5rmWPktvOw0KK+a5mD5TaG91Ow0KK+a5mz5UYW47DQor5rmfPktvdTsNCivmuac+WXV1Ow0KK+a5qz5TaG91Ow0KK+a5rj5JbjsNCivmua8+VG91Ow0KK+a5sj5LYW47DQor5rm2PlNlbjsNCivmub4+V2FuOw0KK+a5vz5TaGl0c3U7DQor5rqAPk1hbjsNCivmuoI+UmF0c3U7DQor5rqMPkhhdHN1Ow0KK+a6jz5Ub3U7DQor5rqQPkdlbjsNCivmupY+SnVuOw0KK+a6mD5Lb3U7DQor5rqcPlJ5dXU7DQor5rqdPktvdTsNCivmup8+TWVpOw0KK+a6oj5JdHN1Ow0KK+a6pT5IbzsNCivmuqo+S2VpOw0KK+a6rz5TbzsNCivmurI+U291Ow0KK+a6tj5Zb3U7DQor5rq3PktvbjsNCivmuro+RGVraTsNCivmur0+Sm9rdTsNCivmu4I+Qm91Ow0KK+a7hD5Tb3U7DQor5ruFPk1ldHN1Ow0KK+a7iT5Lb3U7DQor5ruLPkppOw0KK+a7jD5EZWtpOw0KK+a7kT5LYXRzdTsNCivmu5M+U2FpOw0KK+a7lD5Ub3U7DQor5ruVPlRvdTsNCivmu50+U291Ow0KK+a7nj5UYWk7DQor5rusPktvOw0KK+a7rz5UYWk7DQor5ruyPlNoaW47DQor5ru0PlRla2k7DQor5ru3PlJvOw0KK+a7uD5LbzsNCivmu74+S29uOw0KK+a7vz5NYW47DQor5ryBPlJ5b3U7DQor5ryCPkh5b3U7DQor5ryGPlNoaXRzdTsNCivmvIk+Um9rdTsNCivmvI8+Um91Ow0KK+a8kT5HYWk7DQor5ryTPlJpOw0KK+a8lD5FbjsNCivmvJU+U291Ow0KK+a8oD5CYWt1Ow0KK+a8oj5LYW47DQor5ryjPlJhbjsNCivmvKs+TWFuOw0KK+a8rD5TaGk7DQor5ryxPlNvdTsNCivmvLI+Q2hvdTsNCivmvLg+WmVuOw0KK+a8vj5Zb3U7DQor5ry/PlNob3U7DQor5r2BPkVpOw0KK+a9hT5LYW47DQor5r2UPktldHN1Ow0KK+a9mD5IYW47DQor5r2bPlNlbjsNCivmvZw+U2VuOw0KK+a9nz5TZWtpOw0KK+a9pD5KdW47DQor5r2mPlJvdTsNCivmva0+VGFuOw0KK+a9rj5DaG91Ow0KK+a9rz5KaW47DQor5r2wPkthaTsNCivmvbQ+Q2hvOw0KK+a9uD5TYW47DQor5r26PlNhbjsNCivmvbw+RG91Ow0KK+a+gD5KdXU7DQor5r6BPkp1dTsNCivmvoI+Q2hvdTsNCivmvoQ+Q2hvdTsNCivmvoY+R3lvdTsNCivmvo4+SG91Ow0KK+a+kT5SeXV1Ow0KK+a+lz5LYW47DQor5r6hPlNvdTsNCivmvqM+S2FuOw0KK+a+pD5UYWt1Ow0KK+a+qj5SZWk7DQor5r6xPlRlbjsNCivmvrM+SWt1Ow0KK+a+uT5UYW47DQor5r+APkdla2k7DQor5r+BPkRha3U7DQor5r+CPlJlbjsNCivmv4M+Tm91Ow0KK+a/hj5GdW47DQor5r+UPkRlaTsNCivmv5U+U2hpdHN1Ow0KK+a/mD5OZWk7DQor5r+fPlNhaTsNCivmv6A+R291Ow0KK+a/oT5KdTsNCivmv6Q+VG91Ow0KK+a/qz5SYW47DQor5r+sPlNodW47DQor5r+uPkhva3U7DQor5r+vPlRha3U7DQor5r+xPkhpbjsNCivmv7M+U2VuOw0KK+a/tj5LYXRzdTsNCivmv7o+U2VuOw0KK+a/vj5SeW87DQor54CBPllvdTsNCivngIk+U2hhOw0KK+eAiz5TaGluOw0KK+eAjz5SeXV1Ow0KK+eAkT5CYWt1Ow0KK+eAlT5IaW47DQor54CYPlJvOw0KK+eAmj5LYW47DQor54CbPkVpOw0KK+eAnT5SZWtpOw0KK+eAnj5Kb3U7DQor54CfPlNob3U7DQor54CmPkNobzsNCivngKc+U291Ow0KK+eArD5SYWk7DQor54CwPkJpOw0KK+eAsj5SZW47DQor54C+PlJhbjsNCivngYw+S2FuOw0KK+eBkT5TYWk7DQor54GYPkRhbjsNCivngaM+V2FuOw0KK+eBqz5LYTsNCivnga8+VG91Ow0KK+eBsD5LYWk7DQor54G4Pkt5dXU7DQor54G8PlNoYWt1Ow0KK+eBvT5TYWk7DQor54KJPlJvOw0KK+eCij5TdWk7DQor54KOPkVuOw0KK+eCkj5Tb3U7DQor54KZPlNoYTsNCivngqw+S287DQor54KtPlRhbjsNCivngq4+SG91Ow0KK+eCrz5LZWk7DQor54KzPkhlaTsNCivngrg+U2FrdTsNCivngrk+VGVuOw0KK+eCuj5JOw0KK+eDiD5SZXRzdTsNCivng4s+S291Ow0KK+eDjz5VOw0KK+eDmT5SYWt1Ow0KK+eDnT5Kb3U7DQor54OfPkVuOw0KK+eDsT5LZWk7DQor54O5PkhvdTsNCivng70+SG91Ow0KK+eEiT5FbjsNCivnhJQ+RW47DQor54SZPkhvdTsNCivnhJo+RnVuOw0KK+eEnD5Lb247DQor54ShPk11Ow0KK+eEpj5TaG91Ow0KK+eEtj5aZW47DQor54S8PlNob3U7DQor54WJPlJlbjsNCivnhYw+S291Ow0KK+eFjj5TZW47DQor54WVPktpOw0KK+eFlj5EYW47DQor54WZPkVuOw0KK+eFoj5LZWk7DQor54WkPkJhaTsNCivnhaU+S2FuOw0KK+eFpj5LdTsNCivnhac+U2hvdTsNCivnhak+SGFuOw0KK+eFrD5Zb3U7DQor54WuPlNoYTsNCivnhb0+U2VuOw0KK+eGhD5Tb2t1Ow0KK+eGiD5LaTsNCivnhoo+WXV1Ow0KK+eGjz5LdW47DQor54aUPllvdTsNCivnhpU+S291Ow0KK+eGmT5LaTsNCivnhp8+SnVrdTsNCivnhqg+STsNCivnhqw+R291Ow0KK+eGsT5OZXRzdTsNCivnhrk+S2k7DQor54a+PlNoaTsNCivnh4M+TmVuOw0KK+eHiD5Ub3U7DQor54eJPlRvbjsNCivnh44+UnlvdTsNCivnh5A+UmluOw0KK+eHkj5TaG91Ow0KK+eHlD5IYW47DQor54eVPkVuOw0KK+eHlz5SYW47DQor54efPkVpOw0KK+eHoD5Ja3U7DQor54elPlNvdTsNCivnh6Y+U2FuOw0KK+eHpz5TdWk7DQor54esPktpOw0KK+eHrT5TaG9rdTsNCivnh64+U2hvdTsNCivnh7U+VGF0c3U7DQor54e5PlNlbjsNCivnh7s+S3VuOw0KK+eHvD5KaW47DQor54e/PllvdTsNCivniIY+QmFrdTsNCivniI0+U2hha3U7DQor54iQPlJvOw0KK+eImz5SYW47DQor54ioPlNhbjsNCivniKo+U291Ow0KK+eIrD5IYTsNCivniK0+U291Ow0KK+eIsD5FbjsNCivniLI+STsNCivniLU+U2hha3U7DQor54i2PkZ1Ow0KK+eIuj5ZYTsNCivniLs+S291Ow0KK+eIvD5TaG87DQor54i9PlNvdTsNCivniL4+Smk7DQor54i/PlNob3U7DQor54mAPlNvdTsNCivniYY+U2hvdTsNCivniYc+SGVuOw0KK+eJiD5IYW47DQor54mLPlNlbjsNCivniYw+SGFpOw0KK+eJkj5DaG91Ow0KK+eJmD5Ub2t1Ow0KK+eJmT5HYTsNCivniZs+R3l1dTsNCivniZ0+SGluOw0KK+eJnz5Cb3U7DQor54mhPkJvOw0KK+eJoj5Sb3U7DQor54mnPkJva3U7DQor54mpPk1vdHN1Ow0KK+eJsj5TZWk7DQor54m0PlRlaTsNCivnibk+VG9rdTsNCivnib0+S2VuOw0KK+eJvj5HbzsNCivnioA+U2VpOw0KK+eKgT5SaTsNCivnioI+Umk7DQor54qHPkhvbjsNCivnipI+S291Ow0KK+eKlj5SYWt1Ow0KK+eKoD5HaTsNCivniqI+VG9rdTsNCivniqc+R2k7DQor54qsPktlbjsNCivniq8+SGFuOw0KK+eKsj5TYWk7DQor54q2PkpvdTsNCivnirk+WXV1Ow0KK+eLgj5LeW91Ow0KK+eLgz5KdXU7DQor54uEPlRla2k7DQor54uGPkNodXU7DQor54uOPktvdTsNCivni5A+S287DQor54uSPkhpOw0KK+eLlz5Lb3U7DQor54uZPlNobzsNCivni5s+SGFrdTsNCivni6A+R2FuOw0KK+eLoT5Lb3U7DQor54uiPktha3U7DQor54upPlNodTsNCivni6w+RG9rdTsNCivni60+S3lvdTsNCivni7c+S2VuOw0KK+eLuD5SaTsNCivni7k+S3lvdTsNCivni7w+Um91Ow0KK+eLvT5IYWk7DQor54yKPkdlaTsNCivnjJY+U2hvdTsNCivnjJc+STsNCivnjJs+TW91Ow0KK+eMnD5TYWk7DQor54ydPlNvdHN1Ow0KK+eMnz5SeW91Ow0KK+eMpT5XYWk7DQor54ypPlNlaTsNCivnjKo+Q2hvOw0KK+eMqz5CeW91Ow0KK+eMrj5LZW47DQor54yvPlRhbjsNCivnjLQ+S291Ow0KK+eMtj5ZdXU7DQor54y3Pll1dTsNCivnjL4+S2F0c3U7DQor54y/PkVuOw0KK+eNhD5Hb2t1Ow0KK+eNhT5TaGk7DQor542OPlNob3U7DQor542PPkJha3U7DQor542XPktldHN1Ow0KK+eNoz5KdXU7DQor542oPkRva3U7DQor542qPkthaTsNCivnjbA+RG91Ow0KK+eNsj5LYWt1Ow0KK+eNtT5SeW91Ow0KK+eNuD5KdXU7DQor5426PkRhdHN1Ow0KK+eNuz5LZW47DQor546EPkdlbjsNCivnjoc+Uml0c3U7DQor546JPkd5b2t1Ow0KK+eOiz5PdTsNCivnjpY+S3l1dTsNCivnjqk+R2FuOw0KK+eOsj5SZWk7DQor546zPlRhaTsNCivnjrs+SGE7DQor54+APkhha3U7DQor54+CPkthOw0KK+ePiD5LYTsNCivnj4o+U2FuOw0KK+ePjT5DaGluOw0KK+ePjj5DaGluOw0KK+ePnj5SYWt1Ow0KK+ePoD5TaHU7DQor54+lPkppOw0KK+ePqj5LZWk7DQor54+tPkhhbjsNCivnj64+SGFpOw0KK+ePsT5FaTsNCivnj7g+R287DQor54++PkdlbjsNCivnkIM+S3l1dTsNCivnkIU+Um91Ow0KK+eQhj5SaTsNCivnkIk+Unl1dTsNCivnkKI+VGFrdTsNCivnkKU+S287DQor55CyPkhhaTsNCivnkLM+UmluOw0KK+eQtD5LaW47DQor55C1PkJpOw0KK+eQtj5IYTsNCivnkLo+SG91Ow0KK+eQvz5Lb247DQor55GBPkJvdTsNCivnkZU+S2E7DQor55GZPkRvdTsNCivnkZo+S287DQor55GbPkVpOw0KK+eRnD5ZdTsNCivnkZ4+WnVpOw0KK+eRnz5TaGl0c3U7DQor55GgPlJ5dXU7DQor55GjPlNhOw0KK+eRpD5Zb3U7DQor55GpPkVpOw0KK+eRqj5CYTsNCivnka8+Um91Ow0KK+eRsD5LYWk7DQor55GzPlNhOw0KK+eRtj5Zb3U7DQor55G+PktpbjsNCivnkoM+Umk7DQor55KLPlNob3U7DQor55KePkhha3U7DQor55KiPlJ5dXU7DQor55KnPkhla2k7DQor55KwPkthbjsNCivnkr0+Smk7DQor55OKPktlaTsNCivnk48+Um91Ow0KK+eTlD5FaTsNCivnk5w+S2E7DQor55OgPktvOw0KK+eToj5IeW91Ow0KK+eToz5CZW47DQor55OmPkdhOw0KK+eTrj5PdTsNCivnk7Y+SGVpOw0KK+eTtz5TaGk7DQor55SDPlNodXU7DQor55SEPktlbjsNCivnlIw+T3U7DQor55SNPkJvdTsNCivnlI4+U2VuOw0KK+eUkT5Tb3U7DQor55STPkhla2k7DQor55SVPk91Ow0KK+eUmD5LYW47DQor55SaPlNoaW47DQor55ScPlRlbjsNCivnlJ4+U2hvdTsNCivnlJ8+U2VpOw0KK+eUoz5TYW47DQor55SlPlNlaTsNCivnlKY+U287DQor55SoPllvdTsNCivnlKs+SG87DQor55SsPllvdTsNCivnlLA+RGVuOw0KK+eUsT5ZdXU7DQor55SyPktvdTsNCivnlLM+U2hpbjsNCivnlLc+RGFuOw0KK+eUuD5UZW47DQor55S6PkNob3U7DQor55S7PkdhOw0KK+eUvD5DaG91Ow0KK+eVhD5SeXV1Ow0KK+eVhj5IbzsNCivnlYk+RnU7DQor55WKPktvdTsNCivnlYs+VGVuOw0KK+eVjD5LYWk7DQor55WNPkthaTsNCivnlY8+STsNCivnlZQ+SGFuOw0KK+eVmT5SeXV1Ow0KK+eVmj5Ib247DQor55WbPlNoaW47DQor55WcPkNoaWt1Ow0KK+eVnT5IbzsNCivnlaI+SGl0c3U7DQor55WkPlNoaTsNCivnlaU+Unlha3U7DQor55WmPktlaTsNCivnlac+Unlha3U7DQor55WqPkJhbjsNCivnlas+S2FrdTsNCivnla0+WW87DQor55WwPkk7DQor55WzPkpvdTsNCivnlbQ+Q2h1dTsNCivnlbY+VG91Ow0KK+eVtz5UZXRzdTsNCivnlbg+S2k7DQor55W/PktpOw0KK+eWgj5Kb3U7DQor55aGPkt5b3U7DQor55aHPkNodXU7DQor55aJPkpvdTsNCivnloo+Sm91Ow0KK+eWiz5TbzsNCivnlo4+U287DQor55aPPlNvOw0KK+eWkT5HaTsNCivnlpQ+Q2hvdTsNCivnlpo+S3l1dTsNCivnlp0+U2FuOw0KK+eWoz5ZdXU7DQor55alPkthaTsNCivnlqs+RWtpOw0KK+eWsT5Ib3U7DQor55ayPkhpOw0KK+eWsz5LYW47DQor55a1PlNoaTsNCivnlrg+VGFuOw0KK+eWuT5TaGluOw0KK+eWvD5Ub3U7DQor55a9PlNobzsNCivnlr4+U2hpdHN1Ow0KK+eXgj5LYTsNCivnl4M+S2VuOw0KK+eXhT5CeW91Ow0KK+eXhz5TaG91Ow0KK+eXij5TZW47DQor55eNPkk7DQor55eSPllvdTsNCivnl5Q+Smk7DQor55eVPktvbjsNCivnl5g+VG91Ow0KK+eXmT5LZWk7DQor55ebPlRzOw0KK+eXnj5IaTsNCivnl6I+Umk7DQor55ejPlNoaTsNCivnl6k+U291Ow0KK+eXsD5UYW47DQor55eyPk1hOw0KK+eXsz5SaW47DQor55e0PkNoaTsNCivnl7o+SGk7DQor55e8PktvOw0KK+eXvj5BOw0KK+eXvz5JOw0KK+eYgT5TdWk7DQor55iJPll1Ow0KK+eYiz5GdXU7DQor55iNPllvdTsNCivnmJ8+T247DQor55igPlNla2k7DQor55ihPlNvdTsNCivnmKI+SGFuOw0KK+eYpD5SeXV1Ow0KK+eYpz5HeWFrdTsNCivnmLA+UnVpOw0KK+eYtD5TaG91Ow0KK+eYuz5Sb3U7DQor55mCPlJ5b3U7DQor55mGPlJvdTsNCivnmYc+S2FuOw0KK+eZiD5IYWk7DQor55mMPkdhbjsNCivnmZI+WXU7DQor55mWPkhla2k7DQor55mYPlJlaTsNCivnmZw+RGVuOw0KK+eZoT5DaGk7DQor55miPllvdTsNCivnmac+UmVraTsNCivnmag+S2FrdTsNCivnmak+UmFpOw0KK+eZqj5TaGFrdTsNCivnmaw+U2VuOw0KK+eZsD5Zb3U7DQor55myPlRlbjsNCivnmbY+SGF0c3U7DQor55m4PktpOw0KK+eZuj5Ib3RzdTsNCivnmbs+VG91Ow0KK+eZvD5Ib3RzdTsNCivnmb0+SGFrdTsNCivnmb4+SHlha3U7DQor55qAPkh5dXU7DQor55qDPkJvdTsNCivnmoQ+VGVraTsNCivnmoY+S2FpOw0KK+eahz5Lb3U7DQor55qIPktpOw0KK+eaiz5Lb3U7DQor55qOPktvdTsNCivnmpA+S291Ow0KK+eakz5Lb3U7DQor55qWPkthbjsNCivnmpk+U2VraTsNCivnmpo+R2FpOw0KK+earj5IaTsNCivnmrA+SG91Ow0KK+eatD5TaHVuOw0KK+eatz5LbzsNCivnmrg+S3VuOw0KK+eauT5LdW47DQor55q6PlN1dTsNCivnmr8+QmFpOw0KK+ebgj5VOw0KK+ebgz5IYWk7DQor55uGPkJvbjsNCivnm4g+RWk7DQor55uKPkVraTsNCivnm40+S291Ow0KK+ebkj5Lb3U7DQor55uWPkdhaTsNCivnm5c+VG91Ow0KK+ebmz5TZWk7DQor55ucPlRvdTsNCivnm54+U2FuOw0KK+ebnz5NZWk7DQor55uhPkppbjsNCivnm6M+S2FuOw0KK+ebpD5CYW47DQor55ulPkthbjsNCivnm6c+Um87DQor55uqPlRvdTsNCivnm64+TW9rdTsNCivnm7I+TW91Ow0KK+ebtD5DaG9rdTsNCivnm7g+U2hvdTsNCivnm7s+S2VpOw0KK+ebvj5KdW47DQor55yBPlNlaTsNCivnnIQ+QmVuOw0KK+echz5CeW91Ow0KK+eciD5UYW47DQor55yJPkJpOw0KK+eciz5LYW47DQor55yMPktlbjsNCivnnJs+TWFpOw0KK+ecnj5TaGluOw0KK+ecnz5TaGluOw0KK+ecoD5NaW47DQor55ykPlRlaTsNCivnnKU+U2VpOw0KK+ecpj5TZWk7DQor55ypPkdlbjsNCivnnLc+S2VuOw0KK+ecuD5Cb3U7DQor55y6PkNob3U7DQor55y8PkdhbjsNCivnnYA+Q2hha3U7DQor552HPlRlaTsNCivnnZo+R2FpOw0KK+edmz5TZWk7DQor552hPlN1aTsNCivnnaM+VG9rdTsNCivnnaU+SGVpOw0KK+edpj5Cb2t1Ow0KK+edqD5HZWk7DQor552rPlNob3U7DQor5525PlRvOw0KK+edvj5Lb3U7DQor552/PkVpOw0KK+eeiz5TaGluOw0KK+eejj5LYXRzdTsNCivnnpE+TWVpOw0KK+eenj5CYW47DQor556gPkRvdTsNCivnnqU+QmV0c3U7DQor556sPlNodW47DQor556tPlJ5b3U7DQor556wPkthbjsNCivnnrM+RG91Ow0KK+eetj5LaTsNCivnnrk+QWk7DQor5567PlNlbjsNCivnnrw+S2VuOw0KK+eevT5LbzsNCivnnr8+S3U7DQor55+HPk1vdTsNCivnn40+S2FrdTsNCivnn5c+Q2hpa3U7DQor55+aPlNob2t1Ow0KK+efmz5NdTsNCivnn5w+S2luOw0KK+efoj5TaGk7DQor55+jPkk7DQor55+lPkNoaTsNCivnn6c+U2hpbjsNCivnn6k+S3U7DQor55+tPlRhbjsNCivnn64+V2FpOw0KK+efrz5LeW91Ow0KK+efsz5TaGFrdTsNCivnn7w+S291Ow0KK+eggj5TYTsNCivnoIw+U2VpOw0KK+egkj5IaTsNCivnoJQ+S2VuOw0KK+eglT5TYWk7DQor56CgPlNobzsNCivnoKU+U2hpOw0KK+egpj5TYWk7DQor56CnPkNoaW47DQor56CyPkhvdTsNCivnoLQ+SGE7DQor56C6PlJlaTsNCivnoL8+S291Ow0KK+ehhT5LZWk7DQor56GdPlNob3U7DQor56GrPlJ5dXU7DQor56GsPktvdTsNCivnoa8+S2VuOw0KK+ehvD5Ib3U7DQor56KBPkdvOw0KK+eihj5IYTsNCivnooc+VGVpOw0KK+eijD5Sb2t1Ow0KK+eijT5HYWk7DQor56KOPlNhaTsNCivnopE+SGk7DQor56KTPlRhaTsNCivnopU+S2k7DQor56KXPldhbjsNCivnopo+SGFpOw0KK+eioz5LZXRzdTsNCivnoqc+SGVraTsNCivnoqk+U2VraTsNCivnoqo+Q2hpbjsNCivnoq8+RG91Ow0KK+eitT5TZWtpOw0KK+eiuj5LYWt1Ow0KK+eivD5CYTsNCivnor4+VGVuOw0KK+ejgT5KaTsNCivno4U+SG91Ow0KK+ejhj5LYXRzdTsNCivno4o+UmFpOw0KK+ejiz5TYTsNCivno5A+SGFuOw0KK+ejkT5HYWk7DQor56OUPlRha3U7DQor56OaPlNlbjsNCivno6c+U2VraTsNCivno6g+TWE7DQor56OsPktlaTsNCivno68+S2k7DQor56O0PlRvdTsNCivno70+S291Ow0KK+ekgT5TaG91Ow0KK+ekhz5Ja3U7DQor56SOPlNvOw0KK+ekkT5Ub3U7DQor56SSPkdpOw0KK+ekmT5HYWk7DQor56SmPktvdTsNCivnpKo+UmVpOw0KK+ekqz5SZWtpOw0KK+ekrD5CYW47DQor56S6PlNoaTsNCivnpLw+UmVpOw0KK+ekvj5TaGE7DQor56WAPlNoaTsNCivnpYE+S2k7DQor56WHPktpOw0KK+eliD5LaTsNCivnpYk+U2hpOw0KK+elkD5ZdXU7DQor56WTPkZ1dHN1Ow0KK+ellT5IaTsNCivnpZY+U287DQor56WXPlNoaTsNCivnpZo+U287DQor56WdPlNodWt1Ow0KK+elnj5TaGluOw0KK+elnz5TdWk7DQor56WgPlNoaTsNCivnpaI+RGVpOw0KK+elpT5TaG91Ow0KK+elqD5IeW91Ow0KK+elrT5TYWk7DQor56W3PlRvdTsNCivnpbo+S2k7DQor56W/PlJva3U7DQor56aAPlJpbjsNCivnpoE+S2luOw0KK+emhD5Sb2t1Ow0KK+emhT5aZW47DQor56aKPktlaTsNCivnpo0+S2E7DQor56aOPlRlaTsNCivnpo8+RnVrdTsNCivnpp0+U2hva3U7DQor56amPkd5bzsNCivnpqc+S2k7DQor56aqPlplbjsNCivnpq4+UmVpOw0KK+emsD5EZWk7DQor56azPkpvdTsNCivnprk+VTsNCivnpro+R3V1Ow0KK+emvT5LaW47DQor56a+PkthOw0KK+emvz5Ub2t1Ow0KK+engD5TaHV1Ow0KK+engT5TaGk7DQor56eJPkhlaTsNCivnp4s+U2h1dTsNCivnp5E+S2E7DQor56eSPkJ5b3U7DQor56eVPkhpOw0KK+enmD5IaTsNCivnp58+U287DQor56ehPkhhdHN1Ow0KK+enoz5NYXRzdTsNCivnp6Q+U2hvdTsNCivnp6Y+U2hpbjsNCivnp6c+T3U7DQor56epPkNoaXRzdTsNCivnp6w+S3lvOw0KK+ensD5TaG91Ow0KK+enuz5JOw0KK+eogD5LaTsNCivnqIg+S2FuOw0KK+eoiz5UZWk7DQor56iNPlNvdTsNCivnqI4+WmVpOw0KK+eolD5KaW47DQor56iXPkhhaTsNCivnqJg+S2k7DQor56iZPkNob2t1Ow0KK+eomj5DaGk7DQor56icPlJ5b3U7DQor56ifPlJpbjsNCivnqKA+Q2h1dTsNCivnqK4+U2h1Ow0KK+eosT5TaG91Ow0KK+eosj5Ub3U7DQor56i3PlNob2t1Ow0KK+eouz5Ub3U7DQor56i8PkthOw0KK+eovT5LZWk7DQor56i+PktvdTsNCivnqL8+S291Ow0KK+epgD5Lb2t1Ow0KK+epgj5TdWk7DQor56mDPllvdTsNCivnqYY+Qm9rdTsNCivnqYk+Q2hpOw0KK+epjT5TZWtpOw0KK+epjj5FaTsNCivnqY8+T247DQor56mQPlNodXU7DQor56mXPlN1aTsNCivnqaE+U2hva3U7DQor56miPkFpOw0KK+epoz5Kb3U7DQor56mpPk9uOw0KK+epqz5LYWt1Ow0KK+epsD5Kb3U7DQor56m0PktldHN1Ow0KK+eptj5LeXV1Ow0KK+epuT5LeXV1Ow0KK+epuj5LdXU7DQor56m9PlNlaTsNCivnqb8+U2VuOw0KK+eqgT5Ub3RzdTsNCivnqoM+U2V0c3U7DQor56qEPlNha3U7DQor56qIPllvdTsNCivnqpI+Q2hpdHN1Ow0KK+eqkz5Tb3U7DQor56qVPkNob3U7DQor56qWPktvdTsNCivnqpc+U291Ow0KK+eqmD5LaW47DQor56qfPkt1dHN1Ow0KK+eqqT5LYTsNCivnqqo+V2E7DQor56quPkt5dXU7DQor56qvPllvdTsNCivnqrA+WW91Ow0KK+eqtj5LdTsNCivnqro+S2k7DQor56q/PlJ5dXU7DQor56uDPlNvdTsNCivnq4Q+WmFuOw0KK+erhT5LeW91Ow0KK+erhz5Ub3U7DQor56uIPlNvdTsNCivnq4o+U2V0c3U7DQor56uLPlJpdHN1Ow0KK+erkj5LaTsNCivnq5k+VGFuOw0KK+ermj5DaG87DQor56ucPlJ5dXU7DQor56udPkhlaTsNCivnq58+S2VpOw0KK+eroD5TaG91Ow0KK+eroj5TaGk7DQor56ujPlNodW47DQor56ulPkRvdTsNCivnq6Y+U2hvdTsNCivnq6o+SnU7DQor56utPktldHN1Ow0KK+errz5UYW47DQor56u2Pkt5b3U7DQor56u4PktlaTsNCivnq7k+Q2hpa3U7DQor56u6PlRva3U7DQor56u/PkthbjsNCivnrIQ+S2VpOw0KK+eshj5IYTsNCivnrIg+S3l1dTsNCivnrIo+U291Ow0KK+esiz5KdW47DQor56yPPktvdHN1Ow0KK+eskT5TaG91Ow0KK+esmD5TZW47DQor56yZPlNvdTsNCivnrJs+VGVraTsNCivnrJ4+Q2hpOw0KK+esoD5SeXV1Ow0KK+espT5TaGk7DQor56ymPkZ1Ow0KK+esqD5Ib247DQor56ysPkRhaTsNCivnrLM+S2E7DQor56y1PkhhbjsNCivnrLY+U2hpOw0KK+ethT5TZW47DQor562GPkhpdHN1Ow0KK+etiD5LYXRzdTsNCivnrYk+VG91Ow0KK+etiz5LaW47DQor562MPlNlbjsNCivnrY0+SnVuOw0KK+etjz5CYXRzdTsNCivnrZA+S3lvdTsNCivnrZE+Q2hpa3U7DQor562SPlRvdTsNCivnrZQ+VG91Ow0KK+etlj5TYWt1Ow0KK+etnT5Tb3U7DQor562lPkt5bzsNCivnrac+S2VuOw0KK+etrD5TZWk7DQor562uPlNlaTsNCivnrbA+U2FrdTsNCivnrbE+U2hvdTsNCivnrbQ+S3lvdTsNCivnrbU+RW47DQor5626Pkt5b3U7DQor566GPkhlaTsNCivnroc+S2E7DQor566LPlNlbjsNCivnro0+S287DQor566PPlNvdTsNCivnrpI+U291Ow0KK+eulD5IYWt1Ow0KK+eulT5LaTsNCivnrpc+U2FuOw0KK+eumD5LaW47DQor566ZPkZ1a3U7DQor566aPlNhdHN1Ow0KK+eunD5Lb3U7DQor566dPkthbjsNCivnrp8+S2luOw0KK+euoT5LYW47DQor566qPlRhbjsNCivnrq0+U2VuOw0KK+eusT5TaG91Ow0KK+eutD5TaGluOw0KK+euuD5DaG87DQor56+APlNldHN1Ow0KK+evgT5Lb3U7DQor56+EPkhhbjsNCivnr4Y+VGVuOw0KK+evhz5IZW47DQor56+JPkNoaWt1Ow0KK+eviz5LeW91Ow0KK+evjD5Lb3U7DQor56+PPkthbjsNCivnr50+S291Ow0KK+evoD5TaG91Ow0KK+evpD5Ub2t1Ow0KK+evpT5SaXRzdTsNCivnr6Y+SGVpOw0KK+evqT5TaGk7DQor56+tPlJvdTsNCivnr7M+SGl0c3U7DQor56+2PkVuOw0KK+evtz5Ib3U7DQor57CAPlNha3U7DQor57CHPlNvdTsNCivnsI0+Um91Ow0KK+ewkT5TYTsNCivnsJI+U2FuOw0KK+ewkz5TZW47DQor57CUPlNhOw0KK+ewnz5UZW47DQor57ChPkthbjsNCivnsKM+S2k7DQor57CnPktvdTsNCivnsKo+U2hpbjsNCivnsKs+U2hvdTsNCivnsLc+RW47DQor57C4PkhhOw0KK+ewvT5TZW47DQor57C+PlJlbjsNCivnsL8+Qm87DQor57GAPkNodXU7DQor57GDPlJhbjsNCivnsYw+Q2h1dTsNCivnsY0+U2VraTsNCivnsZA+VG91Ow0KK+exlD5TdTsNCivnsZY+U2VuOw0KK+exmD5Ub3U7DQor57GfPlJhaTsNCivnsaA+Um91Ow0KK+expD5TZW47DQor57GlPllha3U7DQor57GsPlJpOw0KK+exsz5CZWk7DQor57KDPkhpOw0KK+eyiT5GdW47DQor57KLPlN1aTsNCivnspA+Um87DQor57KSPlJ5dXU7DQor57KVPkhha3U7DQor57KXPlNvOw0KK+eymD5OZW47DQor57KbPlNodWt1Ow0KK+eynz5ab2t1Ow0KK+eyoT5Ub3U7DQor57KiPlNoaTsNCivnsqQ+RXRzdTsNCivnsqU+U2h1a3U7DQor57KnPlNob3U7DQor57KrPkppOw0KK+eyrj5SeW91Ow0KK+eysT5SeW91Ow0KK+eysj5TYW47DQor57KzPktvdTsNCivnsrk+U3VpOw0KK+eyvT5Tb3U7DQor57K+PlNlaTsNCivns4I+U2FuOw0KK+ezhT5KdXU7DQor57OKPktvOw0KK+ezkj5IaTsNCivns5Y+VG91Ow0KK+eznD5CaTsNCivns54+RnVuOw0KK+eznz5Tb3U7DQor57OgPktvdTsNCivns6I+Qm87DQor57OnPlJ5b3U7DQor57OvPkRhOw0KK+ezsj5SZWk7DQor57O0PlRla2k7DQor57O2PkNob3U7DQor57O4PlNoaTsNCivns7o+S3l1dTsNCivns7s+S2VpOw0KK+ezvj5LeXV1Ow0KK+e0gD5LaTsNCivntII+Q2h1dTsNCivntIQ+WWFrdTsNCivntIU+S3U7DQor57SGPlU7DQor57SKPkJpbjsNCivntIs+TW9uOw0KK+e0jT5Ub3U7DQor57SQPkNodXU7DQor57SUPlNodW47DQor57SVPkhpOw0KK+e0lz5TYTsNCivntJg+S291Ow0KK+e0mT5TaGk7DQor57SaPkt5dXU7DQor57SbPkZ1bjsNCivntJw+VW47DQor57SgPlNvOw0KK+e0oT5Cb3U7DQor57SiPlNha3U7DQor57SrPlNoaTsNCivntKw+Q2h1dTsNCivntK4+U2F0c3U7DQor57SvPlJ1aTsNCivntLA+U2VpOw0KK+e0sj5TZXRzdTsNCivntLM+U2hpbjsNCivntLU+Q2hvOw0KK+e0uT5TaG91Ow0KK+e0uj5Lb247DQor57S/PlRhaTsNCivntYI+U2h1dTsNCivntYM+R2VuOw0KK+e1hD5TbzsNCivntYU+S2VpOw0KK+e1hj5CYW47DQor57WLPktvdTsNCivntYw+S2VpOw0KK+e1jj5Lb3U7DQor57WPPlNldHN1Ow0KK+e1kD5LZXRzdTsNCivntZY+S291Ow0KK+e1mz5Kb3U7DQor57WePktvdTsNCivntaE+UmFrdTsNCivntaI+S2VuOw0KK+e1oz5Ib3U7DQor57WmPkt5dXU7DQor57WoPkp1dTsNCivnta4+Sm87DQor57WxPlRvdTsNCivntbI+U2hpOw0KK+e1sz5Lb3U7DQor57W1PkthaTsNCivntbY+WmV0c3U7DQor57W5PktlbjsNCivntb0+UnlvOw0KK+e2iT5Ub3U7DQor57aPPlN1aTsNCivntpM+S2VpOw0KK+e2mT5LZWk7DQor57aaPlpva3U7DQor57acPlNvdTsNCivntp8+UmVpOw0KK+e2oj5DaHV1Ow0KK+e2oz5LZW47DQor57arPlNlbjsNCivntqw+SnU7DQor57atPkk7DQor57auPktlaTsNCivntq8+VG91Ow0KK+e2sD5XYW47DQor57axPktvdTsNCivntrI+TW91Ow0KK+e2tD5UZWk7DQor57a1PlNhaTsNCivntrg+UmluOw0KK+e2uj5LaTsNCivntrs+VGFuOw0KK+e2vT5TaGFrdTsNCivntr4+UnlvdTsNCivntr8+TWVuOw0KK+e3hz5TaGk7DQor57eKPktpbjsNCivnt4s+SGk7DQor57ePPlNvdTsNCivnt5E+Unlva3U7DQor57eSPlNobzsNCivnt5g+S2FuOw0KK+e3mj5TZW47DQor57ecPkJlbjsNCivnt50+U2h1dTsNCivnt54+VGFuOw0KK+e3oD5UZWk7DQor57ehPkJpbjsNCivnt6Q+U2V0c3U7DQor57eoPkhlbjsNCivnt6k+S2FuOw0KK+e3rD5NZW47DQor57evPkk7DQor57eyPkJ5b3U7DQor57e0PlJlbjsNCivnt7s+Q2hpOw0KK+e4gT5FbjsNCivnuIQ+Sm91Ow0KK+e4iT5TaGluOw0KK+e4ij5FaTsNCivnuIs+VHN1aTsNCivnuJI+U2hpOw0KK+e4mz5CYWt1Ow0KK+e4nj5Lb3U7DQor57ifPkpva3U7DQor57ihPlNhaTsNCivnuKI+VG91Ow0KK+e4oz5LZW47DQor57imPkp1dTsNCivnuKs+SG91Ow0KK+e4rj5TaHVrdTsNCivnuLE+SnV1Ow0KK+e4sj5SdWk7DQor57i1PkJhbjsNCivnuLc+UnU7DQor57i5Pkh5b3U7DQor57i6PlJlbjsNCivnuLs+Qmk7DQor57i9PlNvdTsNCivnuL4+U2VraTsNCivnuYE+SGFuOw0KK+e5gz5Ib3U7DQor57mGPkt5dXU7DQor57mKPlNlbjsNCivnuYs+S2VpOw0KK+e5jT5TaHV1Ow0KK+e5lD5TaG9rdTsNCivnuZU+WmVuOw0KK+e5lj5TYW47DQor57mZPkhhbjsNCivnuZo+UnlvdTsNCivnuZ0+S2FuOw0KK+e5nj5Kb3U7DQor57mmPkt5b3U7DQor57mnPlVuOw0KK+e5qT5Kb3U7DQor57mqPkthaTsNCivnua0+S2VuOw0KK+e5sD5Tb3U7DQor57m5PkVraTsNCivnubs+SnU7DQor57m8PktlaTsNCivnub0+SGluOw0KK+e5vz5SYW47DQor57qCPlNhbjsNCivnuog+S2V0c3U7DQor57qJPlNhbjsNCivnuow+Wm9rdTsNCivnuo4+U2VuOw0KK+e6jz5UZW47DQor57qSPlRlbjsNCivnupM+RWk7DQor57qUPlNhbjsNCivnupY+U2VuOw0KK+e6mz5Ub3U7DQor57qcPlJhbjsNCivnvLY+S2FuOw0KK+e8uD5Lb3U7DQor57y6PktldHN1Ow0KK+e9hT5LYTsNCivnvYw+T3U7DQor572NPlJhaTsNCivnvY4+VGFuOw0KK+e9kD5LYW47DQor572RPkJvdTsNCivnvZQ+Qm91Ow0KK+e9lT5LYW47DQor572YPkZ1Ow0KK+e9nz5LbzsNCivnvaA+QmluOw0KK+e9pz5TaGluOw0KK+e9qD5BbjsNCivnvak+VG91Ow0KK+e9qj5aYWk7DQor572rPktlaTsNCivnva4+Q2hpOw0KK+e9sD5CYXRzdTsNCivnvbI+U2hvOw0KK+e9tT5CYTsNCivnvbc+SGk7DQor5724PkJhdHN1Ow0KK+e9uT5SaTsNCivnvoI+S2VuOw0KK+e+gz5CZWtpOw0KK+e+hT5SYTsNCivnvoY+SGk7DQor576HPktpOw0KK+e+iD5LaTsNCivnvoo+WW91Ow0KK+e+jD5LeW91Ow0KK+e+jj5CaTsNCivnvpQ+S291Ow0KK+e+mj5SZWk7DQor576dPlRlaTsNCivnvp4+U2h1dTsNCivnvqM+R3VuOw0KK+e+pD5HdW47DQor576oPlNlbjsNCivnvqk+R2k7DQor576uPktvdTsNCivnvq8+S2F0c3U7DQor576yPkdpOw0KK+e+tj5TZW47DQor5764PlJ1aTsNCivnvrk+S291Ow0KK+e+vT5VOw0KK+e/gT5PdTsNCivnv4U+U2hpOw0KK+e/hj5TdWk7DQor57+KPllva3U7DQor57+MPllva3U7DQor57+SPlNodXU7DQor57+UPlNob3U7DQor57+VPkt5dXU7DQor57+gPlN1aTsNCivnv6E+SGk7DQor57+mPlNlbjsNCivnv6k+SGVuOw0KK+e/qz5HYW47DQor57+wPkthbjsNCivnv7M+RWk7DQor57+5Pkd5b3U7DQor57+7PkhvbjsNCivnv7w+WW9rdTsNCivogIA+WW91Ow0KK+iAgT5Sb3U7DQor6ICDPktvdTsNCivogIQ+TW91Ow0KK+iAhT5TaGE7DQor6ICGPktpOw0KK+iAiz5UZXRzdTsNCivogIw+Smk7DQor6ICQPlRhaTsNCivogJI+UmFpOw0KK+iAlT5Lb3U7DQor6ICXPk1vdTsNCivogJg+VW47DQor6ICZPkhhOw0KK+iAnD5TaGk7DQor6IChPkpvOw0KK+iAqD5Eb3U7DQor6ICzPkppOw0KK+iAtj5ZYTsNCivogLs+Q2hpOw0KK+iAvT5UYW47DQor6IC/PktvdTsNCivogYY+UmVpOw0KK+iBij5SeW91Ow0KK+iBkj5LYXRzdTsNCivogZY+U2VpOw0KK+iBmD5IZWk7DQor6IGaPlNodXU7DQor6IGePkJ1bjsNCivogZ8+U2VpOw0KK+iBoT5Tb3U7DQor6IGoPlJlbjsNCivoga8+UmVuOw0KK+iBsD5Tb3U7DQor6IGyPlNlaTsNCivogbM+U2hvdTsNCivogbQ+Q2hvdTsNCivogbY+Sm91Ow0KK+iBtz5TaG9rdTsNCivogbk+RGVpOw0KK+iBvT5DaG91Ow0KK+iBvj5Sb3U7DQor6IG/Pkl0c3U7DQor6IKEPkk7DQor6IKFPlNodWt1Ow0KK+iChj5TaGk7DQor6IKHPkNob3U7DQor6IKJPk5pa3U7DQor6IKLPlJva3U7DQor6IKMPktpOw0KK+iCkz5Lb3U7DQor6IKWPlNob3U7DQor6IKYPkNodXU7DQor6IKaPlRvOw0KK+iCmz5Lb3U7DQor6IKdPkthbjsNCivogqE+S287DQor6IKiPlNoaTsNCivogqU+SGk7DQor6IKpPktlbjsNCivogqo+Qm91Ow0KK+iCrD5ZdXU7DQor6IKtPkRvdHN1Ow0KK+iCrz5Lb3U7DQor6IKxPktvdTsNCivogrI+SWt1Ow0KK+iCtD5Lb3U7DQor6IK6PkhhaTsNCivog4M+STsNCivog4Q+Q2h1dTsNCivog4Y+VGFuOw0KK+iDjD5IYWk7DQor6IOOPlRhaTsNCivog5Y+SGFuOw0KK+iDmT5TbzsNCivog5o+SGFpOw0KK+iDmz5Lb3U7DQor6IOdPkNoaTsNCivog54+SG91Ow0KK+iDoT5LbzsNCivog6Q+SW47DQor6IOlPlNobzsNCivog68+S287DQor6IOxPktvdTsNCivog7Q+RG91Ow0KK+iDuD5LeW91Ow0KK+iDvD5IZW47DQor6IO9Pk5vdTsNCivohII+U2hpOw0KK+iEhT5LeW91Ow0KK+iEhj5aZWk7DQor6ISHPkt5b3U7DQor6ISIPk15YWt1Ow0KK+iEiT5NeWFrdTsNCivohIo+U2VraTsNCivohJo+S3lha3U7DQor6ISbPktlaTsNCivohKM+U2hpbjsNCivohKk+U2h1dTsNCivohK8+SG87DQor6ISxPkRhdHN1Ow0KK+iEsz5Ob3U7DQor6IS5PkNob3U7DQor6IS+PkhpOw0KK+iFhj5UZW47DQor6IWLPkVraTsNCivohY4+SmluOw0KK+iFkD5GdTsNCivohZE+RnU7DQor6IWTPkhpOw0KK+iFlD5Lb3U7DQor6IWVPldhbjsNCivohZ8+Q2hpdHN1Ow0KK+iFpT5TZWk7DQor6IWmPk5vdTsNCivohas+U2hvdTsNCivoha4+U2FpOw0KK+iFsD5Zb3U7DQor6IWxPktlbjsNCivohbQ+WXU7DQor6IW4PkNob3U7DQor6IW5PkZ1a3U7DQor6IW6PlNlbjsNCivohb8+VGFpOw0KK+iGgD5Ib3U7DQor6IaCPlJ5bzsNCivohoM+T3RzdTsNCivohog+S2FrdTsNCivohoo+SGFrdTsNCivoho8+S291Ow0KK+iGkz5DaG91Ow0KK+iGlT5LYWt1Ow0KK+iGmj5GdTsNCivohpw+TWFrdTsNCivohp0+U2hpdHN1Ow0KK+iGoD5Lb3U7DQor6IajPkNoaXRzdTsNCivohqg+Qm91Ow0KK+iGqT5KaTsNCivohrA+SGFuOw0KK+iGsz5TZW47DQor6Ia1PlN1aTsNCivohrg+WnVpOw0KK+iGuj5Zb3U7DQor6Ia9PlRhbjsNCivohr4+S2FpOw0KK+iGvz5Eb3U7DQor6IeAPkRlbjsNCivoh4I+SGk7DQor6IeGPk9rdTsNCivoh4g+Um91Ow0KK+iHiT5SZW47DQor6IeNPlNlaTsNCivoh5E+RGF1Ow0KK+iHkz5ab3U7DQor6IeYPlJvdTsNCivoh5k+RW47DQor6IeaPlJ5bzsNCivoh58+Wm91Ow0KK+iHoD5SZW47DQor6IejPlNoaW47DQor6IelPkdhOw0KK+iHpz5ab3U7DQor6IeoPlJpbjsNCivoh6o+U2hpOw0KK+iHrT5TaHV1Ow0KK+iHsz5TaGk7DQor6Ie0PkNoaTsNCivoh7o+VGFpOw0KK+iHuz5TaGluOw0KK+iHvD5LeXV1Ow0KK+iHvj5ZdTsNCivoiIE+WW87DQor6IiCPlNob3U7DQor6IiFPkt5dXU7DQor6IiHPllvOw0KK+iIiD5LeW91Ow0KK+iIiT5LeW87DQor6IiKPkt5dXU7DQor6IiMPlpldHN1Ow0KK+iIjT5TaGE7DQor6IiOPlNoYTsNCivoiJA+U2hpOw0KK+iIkj5KbzsNCivoiJY+SG87DQor6IiXPkhvOw0KK+iImD5LYW47DQor6IibPlNlbjsNCivoiJw+U2h1bjsNCivoiJ4+QnU7DQor6IifPlNodXU7DQor6IipPlNlbjsNCivoiKo+S291Ow0KK+iIqz5Ib3U7DQor6IisPkhhbjsNCivoiK4+Um87DQor6IizPkNoaWt1Ow0KK+iItT5UYTsNCivoiLY+SGFrdTsNCivoiLc+S2VuOw0KK+iIuD5LYTsNCivoiLk+U2VuOw0KK+iJgD5GdTsNCivoiYc+VGVpOw0KK+iJmD5Tb3U7DQor6ImZPlNvdTsNCivoiZo+U291Ow0KK+iJnz5Eb3U7DQor6ImiPlNob3U7DQor6ImkPkdpOw0KK+iJpj5LYW47DQor6ImoPk1vdTsNCivoiao+Um87DQor6ImrPlJvOw0KK+iJrj5Lb247DQor6ImvPlJ5b3U7DQor6ImxPkthbjsNCivoibI+U2hva3U7DQor6Im2PkVuOw0KK+iJtz5FbjsNCivoibg+U291Ow0KK+iJvj5HYWk7DQor6IqLPlU7DQor6IqNPlNoYWt1Ow0KK+iKkj5Cb3U7DQor6IqZPkZ1Ow0KK+iKnT5TaGk7DQor6IqfPlNhbjsNCivoiqU+S2FpOw0KK+iKpj5SbzsNCivoiqs+R2VuOw0KK+iKrD5GdW47DQor6IqtPkJhOw0KK+iKrz5TaGluOw0KK+iKsT5LYTsNCivoirM+SG91Ow0KK+iKuD5HZWk7DQor6Iq5PktpbjsNCivoirs+U3V1Ow0KK+iKvT5HYTsNCivoi4U+R2FpOw0KK+iLkT5FbjsNCivoi5I+WmVuOw0KK+iLkz5SZWk7DQor6IuUPlRhaTsNCivoi5c+QnlvdTsNCivoi5k+Unl1dTsNCivoi5s+S2E7DQor6IucPkJva3U7DQor6IuePkhvdTsNCivoi58+S291Ow0KK+iLoT5JOw0KK+iLoz5LeW87DQor6IulPkpha3U7DQor6IumPkt1Ow0KK+iLpz5DaG87DQor6IurPlNlbjsNCivoi7E+RWk7DQor6IuzPlRvdTsNCivoi7Q+U287DQor6Iu5PkhlaTsNCivoi7o+TWFpOw0KK+iLuz5GdTsNCivojII+TW87DQor6IyDPkhhbjsNCivojIQ+S2E7DQor6IyFPkJvdTsNCivojIY+Qm91Ow0KK+iMiT5NYXRzdTsNCivojI4+S2VpOw0KK+iMlj5LYWt1Ow0KK+iMlz5NZWk7DQor6IyYPlJpOw0KK+iMnD5TZW47DQor6IyjPkdvOw0KK+iMqD5TaGk7DQor6IyrPkJvdTsNCivojK8+RnVrdTsNCivojLE+U2h1Ow0KK+iMsj5KaTsNCivojLQ+S2FpOw0KK+iMtT5JbjsNCivojLY+Q2hhOw0KK+iMuD5Kb3U7DQor6Iy5PkpvOw0KK+iNgD5KdW47DQor6I2FPlRvdTsNCivojYk+U291Ow0KK+iNij5LZWk7DQor6I2PPkppbjsNCivojZA+U2VuOw0KK+iNkj5Lb3U7DQor6I2YPlNvdTsNCivojbM+VG91Ow0KK+iNtT5KaW47DQor6I23PkthOw0KK+iNuz5UZWtpOw0KK+iNvD5UbzsNCivojoU+Umk7DQor6I6HPkNobzsNCivojok+Q2hpOw0KK+iOij5Tb3U7DQor6I6OPlNhOw0KK+iOkz5NYWk7DQor6I6WPktlaTsNCivojpo+RW47DQor6I6ePkthbjsNCivojp8+S2FuOw0KK+iOoD5ZdXU7DQor6I6iPkt5b3U7DQor6I6oPlJvdTsNCivojqo+R2E7DQor6I6rPkJvOw0KK+iOsT5SYWk7DQor6I61PlRvOw0KK+iOvT5Cb3U7DQor6I+BPlNlaTsNCivoj4U+S2FuOw0KK+iPij5LaWt1Ow0KK+iPjD5LaW47DQor6I+OPktvbjsNCivoj5M+S2E7DQor6I+WPlNob3U7DQor6I+YPlN1dTsNCivoj5w+U2FpOw0KK+iPnz5UbzsNCivoj6A+SGE7DQor6I+pPkhhaTsNCivoj6s+S2luOw0KK+iPrz5LYTsNCivoj7A+S287DQor6I+xPlJ5b3U7DQor6I+yPkhpOw0KK+iPtD5BbjsNCivoj7c+U291Ow0KK+iPuz5SaW47DQor6I+9PlNodWt1Ow0KK+iQgz5TdWk7DQor6JCEPlRvdTsNCivokIc+Q2hvdTsNCivokIs+U2VpOw0KK+iQjD5Ib3U7DQor6JCNPkhlaTsNCivokI4+STsNCivokJM+R2k7DQor6JCgPkhvdTsNCivokKk+U2h1dTsNCivokKo+S3V3YTsNCivokKw+TWFuOw0KK+iQsT5LZW47DQor6JC1PldhOw0KK+iQuD5ZdTsNCivokLw+R2FrdTsNCivokL0+UmFrdTsNCivokYY+SG87DQor6JGJPllvdTsNCivokY4+Uml0c3U7DQor6JGXPkNobzsNCivokZs+S2F0c3U7DQor6JGhPkhvOw0KK+iRoj5HYWk7DQor6JGjPlRvdTsNCivokaY+STsNCivokak+SGE7DQor6JGrPktvOw0KK+iRrD5Tb3U7DQor6JGtPkthOw0KK+iRrj5UYW47DQor6JGvPllha3U7DQor6JGxPlNvdTsNCivokbU+S2k7DQor6JG3Pkd1bjsNCivokbk+U2hpOw0KK+iRuj5TaHV1Ow0KK+iSgj5UZWk7DQor6JKEPkthbjsNCivokos+U2hvdTsNCivokpA+U2h1dTsNCivokpQ+U2hpOw0KK+iSmT5Cb3U7DQor6JKcPlNhbjsNCivokp8+S29uOw0KK+iSoT5Ib3U7DQor6JKtPlN1dTsNCivokrI+SG87DQor6JK4PkpvdTsNCivokrk+S2VuOw0KK+iSuz5KYWt1Ow0KK+iSvD5Tb3U7DQor6JK/PktvdTsNCivok4E+U2hpbjsNCivok4Q+Q2hpa3U7DQor6JOGPlNla2k7DQor6JOJPllvdTsNCivok4o+T3U7DQor6JOLPkdhaTsNCivok40+U2hpOw0KK+iTkD5Kb2t1Ow0KK+iTkT5TYTsNCivok5Y+SGk7DQor6JOaPkNob3U7DQor6JOsPkhvdTsNCivok64+UmVuOw0KK+iTtD5TaHVuOw0KK+iTvD5SeW91Ow0KK+iTvz5TaHVrdTsNCivolIA+SG91Ow0KK+iUhj5SeW91Ow0KK+iUkT5CZXRzdTsNCivolJM+QmFuOw0KK+iUlD5GdWt1Ow0KK+iUlT5UZWk7DQor6JSXPlNobzsNCivolJg+U2hpbjsNCivolJo+VXRzdTsNCivolJ8+Wm9rdTsNCivolKE+U2FpOw0KK+iUpj5DaG91Ow0KK+iUrD5TbzsNCivolK0+SW47DQor6JS1PlpvdTsNCivolL0+SGVpOw0KK+iVgD5LeW9rdTsNCivolYE+SmluOw0KK+iVgz5CYW47DQor6JWIPlNoaW47DQor6JWJPlNob3U7DQor6JWKPlp1aTsNCivolYs+WnVpOw0KK+iVjj5LeW91Ow0KK+iVlT5ZdXU7DQor6JWXPlJvOw0KK+iVmD5Kb3U7DQor6JWaPkdha3U7DQor6JWjPlNodW47DQor6JWoPktldHN1Ow0KK+iVqT5Ub3U7DQor6JWqPkJ1Ow0KK+iVrT5TaG91Ow0KK+iVtz5ZbzsNCivolb4+UmFpOw0KK+iWgD5VbjsNCivoloQ+SGFrdTsNCivoloc+Qmk7DQor6JaIPkthaTsNCivoloo+S2VpOw0KK+iWkD5Sb3U7DQor6JaRPkt5b3U7DQor6JaUPlNob2t1Ow0KK+iWlz5FbjsNCivolpk+VGVpOw0KK+iWmz5TZXRzdTsNCivolpw+SGVraTsNCivolqQ+S2FpOw0KK+iWpj5TZW47DQor6JaoPktvdTsNCivolqk+U2F0c3U7DQor6JaqPlNoaW47DQor6JarPkt1bjsNCivolqw+WWFrdTsNCivolq4+U291Ow0KK+iWrz5TaG87DQor6Ja5PlRhaTsNCivolro+U2VpOw0KK+iXgT5Lb3U7DQor6JeJPlNoYTsNCivol40+UmFuOw0KK+iXjz5ab3U7DQor6JeQPkJha3U7DQor6JeVPkd1dTsNCivol5w+UmVpOw0KK+iXnT5HZWk7DQor6JekPlRvdTsNCivol6U+WWFrdTsNCivol6k+SGFuOw0KK+iXqj5Tb3U7DQor6Je3PlNobzsNCivol7k+QWk7DQor6Je6PlJpbjsNCivol7s+U291Ow0KK+iXvj5SYWk7DQor6JiCPlp1aTsNCivomIY+Um87DQor6JiHPlNvOw0KK+iYij5VbjsNCivomIs+SGluOw0KK+iYkz5TbzsNCivomJY+R2V0c3U7DQor6JiXPkhha3U7DQor6JiaPlNlbjsNCivomKI+Um91Ow0KK+iYrT5SYW47DQor6JivPlRvdTsNCivomL8+UmE7DQor6JmNPktvOw0KK+iZjj5LbzsNCivomZA+R3lha3U7DQor6JmUPktlbjsNCivomZU+U2hvOw0KK+iZmj5LeW87DQor6JmcPlJ5bzsNCivomZ4+R3U7DQor6JmfPkdvdTsNCivomac+S2k7DQor6JmrPkNodXU7DQor6JmxPlNoaXRzdTsNCivombk+S291Ow0KK+iZuz5Cb3U7DQor6JqKPkJ1bjsNCivomos+WmVpOw0KK+iajD5Ib3U7DQor6JqTPkluOw0KK+ialT5TYW47DQor6JqjPktvdTsNCivomqQ+U291Ow0KK+iaqT5TaGk7DQor6JqqPlRvdTsNCivomqs+SG91Ow0KK+iarz5LeXV1Ow0KK+iasD5ZdXU7DQor6Jq2PkthbjsNCivom4Q+S287DQor6JuGPlNobzsNCivom4c+SmE7DQor6JuJPlJlaTsNCivom4s+VGFuOw0KK+ibjT5LZWk7DQor6JuOPlJlaTsNCivom5Q+S2FpOw0KK+ibmT5BOw0KK+ibmz5TaHU7DQor6JuePkthdHN1Ow0KK+ibnz5Lb3U7DQor6JukPktvdTsNCivom6k+S3lvdTsNCivom6w+S3lvdTsNCivom60+U2hpdHN1Ow0KK+ibrj5CYW47DQor6Ju4PlNvdTsNCivom7k+WW91Ow0KK+ibuz5aZWk7DQor6Ju+PkdhOw0KK+icgD5TaG9rdTsNCivonII+SG91Ow0KK+icgz5TaGluOw0KK+ichj5LZW47DQor6JyIPkdvOw0KK+iciT5GdTsNCivonIo+Umk7DQor6JyNPlNobzsNCivonJE+VGFuOw0KK+ickj5FbjsNCivonJg+Q2hpOw0KK+icmj5IaTsNCivonJw+TWl0c3U7DQor6JylPlNla2k7DQor6JypPkNob3U7DQor6Jy0PkVraTsNCivonLc+S2VuOw0KK+icuz5TZWk7DQor6Jy/PkVuOw0KK+idiT5TZW47DQor6J2LPlJvdTsNCivonYw+S2E7DQor6J2OPkthdHN1Ow0KK+idkz5ZdTsNCivonZU+U2hva3U7DQor6J2XPktvdTsNCivonZk+SGVuOw0KK+idnz5JOw0KK+idoD5GdWt1Ow0KK+idoz5ZdXU7DQor6J2mPkthOw0KK+idqD5TaGl0c3U7DQor6J2qPlRvdTsNCivona4+RnVrdTsNCivonbQ+S287DQor6J22PkNob3U7DQor6J24PkthOw0KK+idvz5Zb3U7DQor6J6CPlJvdTsNCivono0+WXV1Ow0KK+ienz5NZWk7DQor6J6iPktlaTsNCivonqs+U2VraTsNCivonq8+R291Ow0KK+iesz5Ub3U7DQor6J66PlJhOw0KK+ieuz5Sb3U7DQor6J69PlNodXU7DQor6J+APlNodXRzdTsNCivon4Q+Q2hpdHN1Ow0KK+ifhj5CYTsNCivon4c+QmE7DQor6J+LPlNoaXRzdTsNCivon5A+VG91Ow0KK+ifkj5Cb3U7DQor6J+gPkhhbjsNCivon68+R3lvdTsNCivon7I+S2k7DQor6J+2PlRlaTsNCivon7c+VG91Ow0KK+ifuT5LYWk7DQor6J+7PkdpOw0KK+ifvj5TZW47DQor6KCFPllvdTsNCivooI0+S2F0c3U7DQor6KCOPkJvdTsNCivooI8+S2FpOw0KK+igkT5FaTsNCivooJU+RGE7DQor6KCWPktha3U7DQor6KChPlJlaTsNCivooKI+U2h1bjsNCivooKM+UmVpOw0KK+igpz5UbzsNCivooLE+S287DQor6KC2PlNhbjsNCivooLk+VG87DQor6KC7PkJhbjsNCivooYA+S2V0c3U7DQor6KGCPkppa3U7DQor6KGEPkppa3U7DQor6KGGPlNodXU7DQor6KGMPktvdTsNCivooY0+RW47DQor6KGSPktlbjsNCivooZM+SnV0c3U7DQor6KGXPkdhaTsNCivooZk+R3lvOw0KK+ihmz5FaTsNCivooZ0+U2hvdTsNCivooZ4+RWk7DQor6KGhPktvdTsNCivooaI+S3U7DQor6KGjPkk7DQor6KGoPkh5b3U7DQor6KGrPlNhbjsNCivoobA+U2E7DQor6KGyPkRvdTsNCivoobU+Sml0c3U7DQor6KG3PkNodXU7DQor6KG9PkppbjsNCivoob4+S2luOw0KK+ihvz5LaW47DQor6KKBPkVuOw0KK+iigj5CZWk7DQor6KKIPkthOw0KK+iiiz5UYWk7DQor6KKNPkhvdTsNCivoopI+VGFuOw0KK+iilj5TaHV1Ow0KK+iilz5TaGluOw0KK+iimT5IYTsNCivoop4+S29uOw0KK+iioj5IYW47DQor6KKkPkJvdTsNCivooqs+SGk7DQor6KKuPk5lOw0KK+iisT5GdWt1Ow0KK+iitD5LbzsNCivoorU+SmluOw0KK+iitz5Lb3U7DQor6KK/PktlaTsNCivoo4E+U2FpOw0KK+ijgj5SZXRzdTsNCivoo4U+U291Ow0KK+ijjz5SaTsNCivoo5Q+RWk7DQor6KOVPll1dTsNCivoo5g+S3l1dTsNCivoo5k+S3VuOw0KK+ijnD5IbzsNCivoo50+U291Ow0KK+ijnz5TYTsNCivoo6E+Umk7DQor6KOoPkhpOw0KK+ijsj5SeW91Ow0KK+ijsz5TaG91Ow0KK+ijtD5IYWk7DQor6KO4PlJhOw0KK+ijuT5LYTsNCivoo7w+U2VraTsNCivoo70+U2VpOw0KK+ijvj5LeW87DQor6KSCPkthaTsNCivopIc+RnVrdTsNCivopIo+SGVuOw0KK+ikjD5Lb247DQor6KSQPkthdHN1Ow0KK+ikkj5Ib3U7DQor6KSTPkhvOw0KK+iknT5UYW47DQor6KSePk9uOw0KK+ikpT5Kb2t1Ow0KK+ikqj5UYWk7DQor6KSrPkNoaTsNCivopLY+Q2hvdTsNCivopLg+Um91Ow0KK+ikuz5TZXRzdTsNCivopYE+S3lvdTsNCivopYM+SG91Ow0KK+ilhD5Kb3U7DQor6KWMPlRhbjsNCivopY0+WmF0c3U7DQor6KWWPk91Ow0KK+ilnj5IZWtpOw0KK+ilnz5LaW47DQor6KWgPlRvdTsNCivopaQ+UmFuOw0KK+ilpj5KdTsNCivopao+QmV0c3U7DQor6KWtPktldHN1Ow0KK+ilrz5TaGluOw0KK+ilsj5TaHV1Ow0KK+iltD5SYW47DQor6KW+PkFrYTsNCivopb8+U2VpOw0KK+imgT5Zb3U7DQor6KaDPlRhbjsNCivopoY+RnVrdTsNCivopoc+SGE7DQor6KaIPktha3U7DQor6KaKPktpOw0KK+imiz5LZW47DQor6KaPPktpOw0KK+imkz5CZWtpOw0KK+imlj5TaGk7DQor6KaXPlNoaTsNCivoppg+VGVuOw0KK+immj5LYWt1Ow0KK+imoT5HZWtpOw0KK+impj5ZdTsNCivopqc+UmFuOw0KK+imqT5UbzsNCivopqo+U2hpbjsNCivopqw+S2k7DQor6KavPktvdTsNCivoprI+S2luOw0KK+imsz5LYW47DQor6Ka6Pktha3U7DQor6Ka9PlJhbjsNCivopr8+VGVraTsNCivop4A+S2FuOw0KK+inkj5LYWt1Ow0KK+inmj5LbzsNCivop5w+U2hpOw0KK+innT5UZWk7DQor6KejPkthaTsNCivop6Y+U2hva3U7DQor6KenPkthaTsNCivop7Q+U2hvdTsNCivop7g+U2hva3U7DQor6KiAPkdlbjsNCivoqII+VGVpOw0KK+iogz5GdTsNCivoqIg+S2VpOw0KK+ioij5KaW47DQor6KiMPktvdTsNCivoqI4+VG91Ow0KK+iokD5LZXRzdTsNCivoqJM+S3VuOw0KK+iolj5LaXRzdTsNCivoqJc+VGFrdTsNCivoqJg+S2k7DQor6KibPkthOw0KK+ionT5HYTsNCivoqJ8+U2hvdTsNCivoqKM+S2V0c3U7DQor6KilPlRvdHN1Ow0KK+ioqj5Ib3U7DQor6KitPlNldHN1Ow0KK+iosT5LeW87DQor6KizPllha3U7DQor6Ki0PlNvOw0KK+iotj5LYTsNCivoqLo+U2hpbjsNCivoqLs+Q2h1dTsNCivoqLw+U2hvdTsNCivoqYE+S287DQor6KmGPlRlaTsNCivoqYg+Umk7DQor6KmQPlNhOw0KK+ipkT5UYTsNCivoqZI+VGFpOw0KK+iplD5TaG91Ow0KK+iplT5IeW91Ow0KK+ipmz5TbzsNCivoqZ4+U2hpOw0KK+ipoD5FaTsNCivoqaI+SnVuOw0KK+ipoz5LZWk7DQor6KmmPlNoaTsNCivoqak+U2hpOw0KK+ipqz5UYTsNCivoqaw+S291Ow0KK+iprT5LaTsNCivoqa4+U2VuOw0KK+ipsD5LaXRzdTsNCivoqbE+V2E7DQor6KmyPkdhaTsNCivoqbM+U2hvdTsNCivoqbw+S2FpOw0KK+iqgj5DaG91Ow0KK+iqhD5SdWk7DQor6KqFPkNodXU7DQor6KqHPktvOw0KK+iqiT5ZbzsNCivoqow+U2hpOw0KK+iqjT5OaW47DQor6KqRPkt5b3U7DQor6KqTPlNlaTsNCivoqpU+VGFuOw0KK+iqmD5ZdXU7DQor6KqaPlNob3U7DQor6KqePkdvOw0KK+iqoD5TZWk7DQor6KqhPkthaTsNCivoqqM+RnU7DQor6KqkPkdvOw0KK+iqpT5Lb3U7DQor6KqmPlNob3U7DQor6KqoPkthaTsNCivoqqw+U2V0c3U7DQor6KqtPlRva3U7DQor6KqwPlN1aTsNCivoqrI+S2E7DQor6Kq5PkhpOw0KK+iqvD5HaTsNCivoqr8+Q2hvdTsNCivoq4I+VGVuOw0KK+irhD5KdW47DQor6KuHPkRhbjsNCivoq4s+U2VpOw0KK+irjD5LYW47DQor6KuNPlNvdTsNCivoq48+U2h1Ow0KK+irkj5SeW91Ow0KK+irlj5Sb247DQor6KuaPkpvdTsNCivoq5s+WXU7DQor6KucPkNob3U7DQor6KuePkhlbjsNCivoq6A+S2VuOw0KK+iroT5TaGk7DQor6KuiPktvbjsNCivoq6Q+R2FrdTsNCivoq6Y+VGVpOw0KK+irpz5LYWk7DQor6KurPkthbjsNCivoq60+WXU7DQor6KuuPlNoaTsNCivoq7E+S2k7DQor6KuzPkFuOw0KK+irtz5GdXU7DQor6Ku4PlNobzsNCivoq7o+R2VuOw0KK+irvj5EYWt1Ow0KK+isgD5Cb3U7DQor6KyBPkV0c3U7DQor6KyCPkk7DQor6KyEPlRvdTsNCivorIc+S2VuOw0KK+isjD5LYTsNCivorI4+TWVpOw0KK+iskD5IaXRzdTsNCivorJQ+R3lha3U7DQor6KyWPlNob2t1Ow0KK+islz5Cb3U7DQor6KyZPktlbjsNCivorJo+U2hpOw0KK+ismz5Lb3U7DQor6KydPlNoYTsNCivorKA+WW91Ow0KK+isoT5Zb3U7DQor6KymPktlaTsNCivorKg+Qm87DQor6KyrPlRha3U7DQor6KysPkJ5b3U7DQor6KyzPk91Ow0KK+isuT5LaW47DQor6Ky+PkJhbjsNCivorYE+S2E7DQor6K2JPlNob3U7DQor6K2MPkthOw0KK+itjj5LaXRzdTsNCivorY8+S2k7DQor6K2WPlNoaW47DQor6K2YPlNoaWtpOw0KK+itmj5UYW47DQor6K2bPlNoaW47DQor6K2cPkZ1Ow0KK+itnz5Tb3U7DQor6K2mPktlaTsNCivoras+U2VuOw0KK+itrD5IaTsNCivora8+WWFrdTsNCivorbA+R2k7DQor6K2xPlplbjsNCivorbI+Sm91Ow0KK+ittD5LZW47DQor6K23PkdvOw0KK+itvT5ZbzsNCivoroA+VG9rdTsNCivoroM+U2FuOw0KK+iuij5IZW47DQor6K6MPkVuOw0KK+iujj5TaHV1Ow0KK+iukD5TaHV1Ow0KK+iukj5TYW47DQor6K6TPkpvdTsNCivorpY+U2hpbjsNCivorpk+S2FuOw0KK+iumj5TYW47DQor6LC3Pktva3U7DQor6LC6PkthOw0KK+iwvz5LZWk7DQor6LGBPkthdHN1Ow0KK+ixhj5Ub3U7DQor6LGIPktpOw0KK+ixij5Ib3U7DQor6LGMPkVuOw0KK+ixjj5KdTsNCivosZA+SG91Ow0KK+ixlT5TaGk7DQor6LGaPlRvbjsNCivosaE+U2hvdTsNCivosaI+S2VuOw0KK+ixqj5Hb3U7DQor6LGrPllvOw0KK+ixrD5DaG87DQor6LG4PkNoaTsNCivosbk+SG91Ow0KK+ixuj5TYWk7DQor6LG8PkhpOw0KK+iygj5DaG91Ow0KK+iyhT5LeXV1Ow0KK+iyiT5LYWt1Ow0KK+iyij5IYWt1Ow0KK+iyjD5Cb3U7DQor6LKNPlJpOw0KK+iyjj5HZWk7DQor6LKUPkhpOw0KK+iymD5CYWt1Ow0KK+iynT5CYWk7DQor6LKePlRlaTsNCivosqA+RnU7DQor6LKhPlphaTsNCivosqI+S291Ow0KK+iypz5IaW47DQor6LKoPkthOw0KK+iyqT5IYW47DQor6LKqPkRvbjsNCivosqs+S2FuOw0KK+iyrD5TZWtpOw0KK+iyrT5TaGl0c3U7DQor6LKuPk5pOw0KK+iyrz5DaG87DQor6LKwPlNlaTsNCivosrI+U2hpOw0KK+iysz5OaTsNCivosrQ+S2k7DQor6LK2PkhlbjsNCivosrc+QmFpOw0KK+iyuD5UYWk7DQor6LK7PkhpOw0KK+iyvD5UZW47DQor6LK9Pkk7DQor6LK/PkJvdTsNCivos4A+R2E7DQor6LOBPkhpOw0KK+izgj5SbzsNCivos4M+Q2hpbjsNCivos4Q+V2FpOw0KK+izhz5TaGk7DQor6LOIPktvOw0KK+izij5ab2t1Ow0KK+izjT5Tb3U7DQor6LOOPlNlbjsNCivos5E+U2hpbjsNCivos5M+SGluOw0KK+izmj5SYWk7DQor6LObPlNhbjsNCivos5w+U2hpOw0KK+iznj5TaG91Ow0KK+izoD5CYWk7DQor6LOiPktlbjsNCivos6M+QmFpOw0KK+izpD5TZW47DQor6LOmPkZ1Ow0KK+izqj5TaGl0c3U7DQor6LOtPlRvOw0KK+izuj5UYW47DQor6LO7PkZ1Ow0KK+izvD5Lb3U7DQor6LO9PlNhaTsNCivotIQ+U2hpOw0KK+i0hT5aZWk7DQor6LSHPkluOw0KK+i0iD5ab3U7DQor6LSKPlNhbjsNCivotIs+R2FuOw0KK+i0jT5TZW47DQor6LSPPkVpOw0KK+i0kD5TaGluOw0KK+i0kz5ab3U7DQor6LSUPkhpOw0KK+i0lj5TaG9rdTsNCivotaQ+U2VraTsNCivotaY+U2hhOw0KK+i1pz5UYW47DQor6LWrPktha3U7DQor6LWtPlNoYTsNCivotbA+U291Ow0KK+i1sT5Tb3U7DQor6LWzPkt5dXU7DQor6LW0PkZ1Ow0KK+i1tz5LaTsNCivotoE+Q2hpbjsNCivotoU+Q2hvdTsNCivotoo+RXRzdTsNCivotpk+Q2hvdTsNCivotqM+U2h1Ow0KK+i2qD5TdXU7DQor6LazPlNva3U7DQor6La6PkZ1Ow0KK+i2vj5TaGk7DQor6LeCPktpOw0KK+i3iz5CYXRzdTsNCivot4w+VGV0c3U7DQor6LePPkthOw0KK+i3lj5TZWtpOw0KK+i3mj5TYW47DQor6LebPkhhOw0KK+i3nT5LeW87DQor6LefPktvbjsNCivot6E+U2VraTsNCivot6M+U2VuOw0KK+i3qD5LbzsNCivot6o+S2k7DQor6LerPkt5b3U7DQor6LevPlJvOw0KK+i3sz5DaG91Ow0KK+i3tT5TZW47DQor6Le8Pkt5b2t1Ow0KK+i3vz5UbzsNCivouIg+U2hvOw0KK+i4iT5SeW91Ow0KK+i4ij5Zb3U7DQor6LiPPlRvdTsNCivouJA+U2VuOw0KK+i4nT5LYTsNCivouJ4+S3lvOw0KK+i4nz5DaGk7DQor6LiqPlNob3U7DQor6LiwPll1Ow0KK+i4tD5Zb3U7DQor6Li1PlNob3U7DQor6LmCPkp1dTsNCivouYQ+VGVpOw0KK+i5hz5LZW47DQor6LmIPlRvdTsNCivouYk+U2E7DQor6LmKPktlaTsNCivouYw+U2hvdTsNCivouZA+U2VraTsNCivouZU+SGl0c3U7DQor6LmZPlNodWt1Ow0KK+i5nz5TZWtpOw0KK+i5oD5TZWtpOw0KK+i5oz5NYW47DQor6LmkPlNob3U7DQor6LmyPlNvbjsNCivoubQ+U2h1dTsNCivoubY+S2V0c3U7DQor6Lm8PkJva3U7DQor6LqBPlNvdTsNCivouoQ+SGVraTsNCivouoU+Q2hva3U7DQor6LqHPkNobzsNCivouoo+Q2h1dTsNCivouos+U2VpOw0KK+i6jT5ZYWt1Ow0KK+i6kT5UZWtpOw0KK+i6kz5DaGk7DQor6LqUPlRlbjsNCivoupk+UmluOw0KK+i6oT5Kb3U7DQor6LqqPlJpbjsNCivouqs+U2hpbjsNCivouqw+S3l1dTsNCivouq8+S3U7DQor6LqwPlRlaTsNCivourE+VGE7DQor6LuGPlRlaTsNCivou4o+U2hhOw0KK+i7iz5BdHN1Ow0KK+i7jD5LaTsNCivou40+R3VuOw0KK+i7kj5LZW47DQor6LubPkFrdTsNCivou58+TmFuOw0KK+i7oj5UZW47DQor6LujPkdvdTsNCivou6s+U2hpbjsNCivou7g+SmlrdTsNCivou7s+S2E7DQor6Lu8Pkl0c3U7DQor6Lu9PktlaTsNCivou74+U2hva3U7DQor6LyDPktha3U7DQor6LyFPlJvOw0KK+i8iT5TYWk7DQor6LyKPkNoaTsNCivovIw+UnlvdTsNCivovJI+Q2hvdTsNCivovJM+QmFuOw0KK+i8lD5GdTsNCivovJU+S2VpOw0KK+i8mT5DaG91Ow0KK+i8mz5SeW91Ow0KK+i8nD5TaGk7DQor6LydPktpOw0KK+i8nz5UZXRzdTsNCivovKY+UmVuOw0KK+i8qT5IYWk7DQor6LyqPlJpbjsNCivovK8+U2h1dTsNCivovLM+U291Ow0KK+i8uD5ZdTsNCivovLk+RnVrdTsNCivovLs+RnVrdTsNCivovL4+VGVuOw0KK+i8vz5ZbzsNCivovYI+S29rdTsNCivovYQ+S2F0c3U7DQor6L2FPkVuOw0KK+i9hj5Sb2t1Ow0KK+i9iT5UZW47DQor6L2NPlRldHN1Ow0KK+i9jj5LeW91Ow0KK+i9lz5LYW47DQor6L2cPkppOw0KK+i9nz5Hb3U7DQor6L2hPkhpOw0KK+i9oj5SZWtpOw0KK+i9oz5SZWtpOw0KK+i9pD5SbzsNCivovps+U2hpbjsNCivovpw+S287DQor6L6ePkppOw0KK+i+nz5IZWtpOw0KK+i+oz5SYXRzdTsNCivovqc+QmVuOw0KK+i+qD5CZW47DQor6L6tPkppOw0KK+i+rj5IZW47DQor6L6vPkJlbjsNCivovrA+U2hpbjsNCivovrE+Sm9rdTsNCivovrI+Tm91Ow0KK+i+uj5IZW47DQor6L6/PlRlbjsNCivov4I+VTsNCivov4Q+S2l0c3U7DQor6L+FPkppbjsNCivov44+R2VpOw0KK+i/kT5LaW47DQor6L+UPkhlbjsNCivov6I+Q2hvdTsNCivov6U+S2VpOw0KK+i/pj5LYTsNCivov6k+Smk7DQor6L+qPlRla2k7DQor6L+rPkhha3U7DQor6L+tPlRldHN1Ow0KK+i/rz5Ub3U7DQor6L+wPkp1dHN1Ow0KK+i/tD5LYWk7DQor6L+3Pk1laTsNCivov7g+SG91Ow0KK+i/uT5TZWtpOw0KK+i/uj5EYWk7DQor6L+9PlRzdWk7DQor6YCAPlRhaTsNCivpgIE+U291Ow0KK+mAgz5Ub3U7DQor6YCFPktvdTsNCivpgIY+R3lha3U7DQor6YCLPkhvOw0KK+mAjT5TaG91Ow0KK+mAjj5TaHV1Ow0KK+mAjz5Ub3U7DQor6YCQPkNoaWt1Ow0KK+mAkT5LeXV1Ow0KK+mAkz5UZWk7DQor6YCUPlRvOw0KK+mAlT5LZWk7DQor6YCWPlRla2k7DQor6YCXPlRvdTsNCivpgJk+R2VuOw0KK+mAmj5UczsNCivpgJ0+U2VpOw0KK+mAnj5UZWk7DQor6YCfPlNva3U7DQor6YCgPlpvdTsNCivpgKE+U2h1bjsNCivpgKI+SG91Ow0KK+mAoz5SZW47DQor6YCuPlRhaTsNCivpgLE+U2h1dTsNCivpgLI+U2hpbjsNCivpgLU+S2k7DQor6YC2Pkk7DQor6YC4Pkl0c3U7DQor6YC5PlRhdHN1Ow0KK+mAvD5IaXRzdTsNCivpgL4+WXU7DQor6YGBPlRvbjsNCivpgYI+U3VpOw0KK+mBhT5DaGk7DQor6YGHPkd1dTsNCivpgYk+VGVpOw0KK+mBij5ZdXU7DQor6YGLPlVuOw0KK+mBjT5IZW47DQor6YGOPkthOw0KK+mBjz5BdHN1Ow0KK+mBkD5LYTsNCivpgZE+S291Ow0KK+mBkj5TaHV1Ow0KK+mBkz5Eb3U7DQor6YGUPlRhdHN1Ow0KK+mBlT5JOw0KK+mBmD5Lb3U7DQor6YGZPllvdTsNCivpgZw+U29uOw0KK+mBnj5UZWk7DQor6YGgPkVuOw0KK+mBoT5TbzsNCivpgaM+S2VuOw0KK+mBpT5Zb3U7DQor6YGoPkdvdTsNCivpgak+VGVraTsNCivpga0+U291Ow0KK+mBrj5TaGE7DQor6YGvPlRvbjsNCivpgbI+Q2hpOw0KK+mBtT5KdW47DQor6YG2PkpvdTsNCivpgbc+U2VuOw0KK+mBuD5TZW47DQor6YG6Pkk7DQor6YG8PlJ5b3U7DQor6YG9Pkt5bzsNCivpgb8+SGk7DQor6YKAPllvdTsNCivpgoE+QmFpOw0KK+mCgj5LYWk7DQor6YKDPlN1aTsNCivpgoQ+S2FuOw0KK+mChz5KaTsNCivpgok+SGVuOw0KK+mCij5IZW47DQor6YKPPlJhOw0KK+mCkT5ZdXU7DQor6YKjPkRhOw0KK+mCpj5Ib3U7DQor6YKoPlNvbjsNCivpgqo+WWE7DQor6YKvPkthbjsNCivpgrE+S3l1dTsNCivpgrU+U2hvdTsNCivpgrg+VGVpOw0KK+mDgT5Ja3U7DQor6YOKPktvdTsNCivpg44+Um91Ow0KK+mDmz5GdTsNCivpg6E+R3VuOw0KK+mDoj5FaTsNCivpg6Q+R2VraTsNCivpg6g+QnU7DQor6YOtPktha3U7DQor6YO1Pll1dTsNCivpg7c+S3lvdTsNCivpg70+VG87DQor6YSCPkdha3U7DQor6YSSPlN1dTsNCivphJk+SGk7DQor6YStPlRlaTsNCivphLA+UmluOw0KK+mEsj5UYW47DQor6YWJPll1dTsNCivphYo+VGVpOw0KK+mFiz5TaHV1Ow0KK+mFjD5TaGFrdTsNCivphY0+SGFpOw0KK+mFjj5DaHV1Ow0KK+mFkj5TaHU7DQor6YWUPlN1aTsNCivphZY+VGFuOw0KK+mFmD5Ub3U7DQor6YWiPlNha3U7DQor6YWjPkthbjsNCivphaU+U287DQor6YWpPk1laTsNCivphao+UmFrdTsNCivphaw+U2h1dTsNCivphbI+VGVpOw0KK+mFsz5JbjsNCivphbU+S291Ow0KK+mFtz5Lb2t1Ow0KK+mFuD5TYW47DQor6YaCPlJpbjsNCivphoc+U2h1bjsNCivphok+U3VpOw0KK+mGiz5TYWt1Ow0KK+mGjT5UZWk7DQor6YaQPktvOw0KK+mGkj5TZWk7DQor6YaXPkhhdHN1Ow0KK+mGnD5TaHV1Ow0KK+mGoj5LYWk7DQor6YakPlNob3U7DQor6YaqPlJvdTsNCivphqs+STsNCivphq8+S2VpOw0KK+mGtD5SZWk7DQor6Ya1Pkt5bzsNCivphrg+Sm91Ow0KK+mGuj5LdW47DQor6YeAPkpvdTsNCivph4E+S2luOw0KK+mHhj5IYW47DQor6YeHPlNhaTsNCivph4g+U2hha3U7DQor6YeJPll1dTsNCivph4s+U2hha3U7DQor6YeMPlJpOw0KK+mHjT5DaG91Ow0KK+mHjj5ZYTsNCivph48+UnlvdTsNCivph5A+Umk7DQor6YeRPktpbjsNCivph5Y+VG91Ow0KK+mHmD5UZWk7DQor6YebPktva3U7DQor6YecPkZ1Ow0KK+mHnT5TaGluOw0KK+mHnz5IYXRzdTsNCivph6E+RnU7DQor6YejPkNob3U7DQor6YemPktvdTsNCivph6c+U2VuOw0KK+mHtT5TYTsNCivph7Y+U2hpOw0KK+mHvD5LZW47DQor6Ye/PktpbjsNCivpiI0+RG9uOw0KK+mIjj5Lb3U7DQor6YiRPkhhbjsNCivpiJQ+U2hvdTsNCivpiJU+Q2h1dTsNCivpiJ4+S2luOw0KK+mIqT5SbzsNCivpiKw+VGFrdTsNCivpiLQ+UmVpOw0KK+mItz5LbzsNCivpiL8+VGVuOw0KK+mJhD5UZXRzdTsNCivpiYU+S3lvOw0KK+mJiD5TaGE7DQor6YmJPktlbjsNCivpiYs+SG91Ow0KK+mJkD5TZWtpOw0KK+mJlz5LYW47DQor6YmaPlJ5dXU7DQor6YmbPkVuOw0KK+mJnj5FdHN1Ow0KK+mJoj5IYWNoaTsNCivpiaQ+S291Ow0KK+mJpj5TZWk7DQor6YmxPktvdTsNCivpib4+Qm91Ow0KK+mKgD5HaW47DQor6YqDPkp1dTsNCivpioU+RG91Ow0KK+mKkT5TZW47DQor6YqTPlNlbjsNCivpipU+VGV0c3U7DQor6YqWPlNodTsNCivpipg+TWVpOw0KK+mKmj5Zb3U7DQor6YqbPlNlbjsNCivpipw+S2FuOw0KK+mKrT5TZW47DQor6Yq3PlNob3U7DQor6Yq5PlNodXU7DQor6YuPPkt5b3U7DQor6YuSPkhvdTsNCivpi6Q+Sm87DQor6YupPkJvdTsNCivpi6o+SG87DQor6YutPkVpOw0KK+mLsz5DaHV1Ow0KK+mLuD5LeW87DQor6Yu6PkVuOw0KK+mLvD5Lb3U7DQor6YyGPlNlaTsNCivpjI8+QTsNCivpjJA+U3VpOw0KK+mMmD5Uc3VpOw0KK+mMmT5TaGk7DQor6YyaPlNvdTsNCivpjKA+Sm91Ow0KK+mMoj5TZW47DQor6YyjPlRlaTsNCivpjKY+S2luOw0KK+mMqD5CeW91Ow0KK+mMqz5TZWtpOw0KK+mMrD5SZW47DQor6YyuPktvOw0KK+mMrz5TYWt1Ow0KK+mMsj5Sb2t1Ow0KK+mMuz5CdTsNCivpjYQ+S2VpOw0KK+mNiz5LYTsNCivpjY0+VG87DQor6Y2UPkdha3U7DQor6Y2WPkNoaW47DQor6Y2bPlRhbjsNCivpjZw+S2E7DQor6Y2gPktvdTsNCivpjaw+U2h1dTsNCivpja4+Q2h1dTsNCivpjbU+S2VuOw0KK+mNvD5TaGluOw0KK+mNvj5TaG91Ow0KK+mOjD5SZW47DQor6Y6UPllvdTsNCivpjpY+U2E7DQor6Y6XPlNvdTsNCivpjpo+VHN1aTsNCivpjqc+R2FpOw0KK+mOrD5Lb3U7DQor6Y6tPkNoaW47DQor6Y6uPkNoaW47DQor6Y6wPkl0c3U7DQor6Y+DPlpva3U7DQor6Y+IPlJlbjsNCivpj5A+Unl1dTsNCivpj5E+VGVraTsNCivpj5Y+T3U7DQor6Y+XPktvdTsNCivpj5g+U2hvdTsNCivpj50+TWFuOw0KK+mPoT5LeW91Ow0KK+mPpD5Sb3U7DQor6Y+lPlNodXU7DQor6Y+oPlNhbjsNCivpkIM+RG91Ow0KK+mQhz5IYW47DQor6ZCQPlJ5b3U7DQor6ZCTPlRhaTsNCivpkJQ+U2hpbjsNCivpkJg+U2hvdTsNCivpkJk+VG91Ow0KK+mQmj5BOw0KK+mQoT5UZXRzdTsNCivpkKs+U2VuOw0KK+mQtT5UZXRzdTsNCivpkLY+S2FuOw0KK+mQuD5UYWt1Ow0KK+mQuj5Ub3U7DQor6ZGBPkJhbjsNCivpkYQ+Q2h1dTsNCivpkZE+S2FuOw0KK+mRkj5LYW47DQor6ZGaPlNhbjsNCivpkZs+S291Ow0KK+mRnj5Sb3U7DQor6ZGgPlNoYWt1Ow0KK+mRoj5SeW87DQor6ZGqPlJvOw0KK+mRsD5ZYWt1Ow0KK+mRtT5LYW47DQor6ZG3PkpvdTsNCivpkbw+UmE7DQor6ZG9PlNhbjsNCivpkb4+UmFuOw0KK+mRvz5TYWt1Ow0KK+mSgT5LYWt1Ow0KK+mVtz5DaG91Ow0KK+mWgD5Nb247DQor6ZaCPlNhbjsNCivploM+U2VuOw0KK+mWhz5IZWk7DQor6ZaJPkhlaTsNCivplos+S2FpOw0KK+mWjz5KdW47DQor6ZaRPkthbjsNCivplpM+S2FuOw0KK+mWlD5CaW47DQor6ZaYPktvdTsNCivplpk+VG91Ow0KK+mWoj5LYW47DQor6ZajPktha3U7DQor6ZakPktvdTsNCivplqU+QmF0c3U7DQor6ZanPktvdTsNCivplqg+S2VpOw0KK+mWrT5SbzsNCivplrI+RXRzdTsNCivplrk+RW47DQor6Za7PkVuOw0KK+mWvD5BOw0KK+mWvj5Zb2t1Ow0KK+mXgz5HZWtpOw0KK+mXhz5BbjsNCivpl4o+S2F0c3U7DQor6ZeMPlJhbjsNCivpl40+VG87DQor6ZeUPktvdTsNCivpl5U+S2V0c3U7DQor6ZeWPkNoaW47DQor6ZeYPlRvdTsNCivpl5w+S2FuOw0KK+mXoT5TZW47DQor6ZeiPkhla2k7DQor6ZelPlRhdHN1Ow0KK+mYnD5GdTsNCivpmKE+U2VuOw0KK+mYqD5Ba3U7DQor6ZiqPkhhbjsNCivpmK4+R2VuOw0KK+mYrz5TaGk7DQor6ZiyPkJvdTsNCivpmLs+U287DQor6Zi/PkE7DQor6ZmAPkRhOw0KK+mZgj5IYTsNCivpmYQ+RnU7DQor6ZmLPlJvdTsNCivpmYw+SGFrdTsNCivpmY0+S291Ow0KK+mZjz5UYTsNCivpmZA+R2VuOw0KK+mZmz5IZWk7DQor6ZmcPktvdTsNCivpmZ0+U2VuOw0KK+mZnj5TaG91Ow0KK+mZnz5DaG9rdTsNCivpmaI+SW47DQor6ZmjPkppbjsNCivpmaQ+Sm87DQor6ZmlPkthbjsNCivpmaY+VG91Ow0KK+mZqj5CYWk7DQor6ZmsPlN1dTsNCivpmbA+SW47DQor6ZmyPlN1aTsNCivpmbM+Q2hpbjsNCivpmbU+UnlvdTsNCivpmbY+VG91Ow0KK+mZtz5LYW47DQor6Zm4PlJpa3U7DQor6Zm6PktlbjsNCivpmb0+WW91Ow0KK+mahT5HdXU7DQor6ZqGPlJ5dXU7DQor6ZqIPldhaTsNCivpmoo+VGFpOw0KK+maiz5UYTsNCivpmo0+S291Ow0KK+majj5LYWk7DQor6ZqPPlp1aTsNCivpmpQ+S2FrdTsNCivpmpU+SW47DQor6ZqXPkthaTsNCivpmpg+QWk7DQor6ZqZPkdla2k7DQor6ZqbPlNhaTsNCivpmpw+U2hvdTsNCivpmqA+SW47DQor6ZqjPlJpbjsNCivpmqc+U3VpOw0KK+maqD5adWk7DQor6ZqqPktlbjsNCivpmrA+U2hpdHN1Ow0KK+masT5JbjsNCivpmrI+U2hpdHN1Ow0KK+matD5Sb3U7DQor6Zq2PlRhaTsNCivpmrc+UmVpOw0KK+mauD5SZWk7DQor6Zq5PlN1aTsNCivpmrs+U2VraTsNCivpmrw+SnVuOw0KK+mbgD5KYWt1Ow0KK+mbgT5HYW47DQor6ZuEPll1dTsNCivpm4U+R2E7DQor6ZuGPlNodXU7DQor6ZuHPktvOw0KK+mbiT5DaGk7DQor6ZuLPlNlbjsNCivpm4w+U2hpOw0KK+mbjT5Zb3U7DQor6ZuOPlNobzsNCivpm5E+WmF0c3U7DQor6ZuVPkNob3U7DQor6ZuWPlN1aTsNCivpm5k+U291Ow0KK+mbmz5TdXU7DQor6ZucPlphdHN1Ow0KK+mboj5SaTsNCivpm6M+TmFuOw0KK+mbqD5VOw0KK+mbqj5TZXRzdTsNCivpm6s+RGE7DQor6ZuwPkZ1bjsNCivpm7I+VW47DQor6Zu2PlJlaTsNCivpm7c+UmFpOw0KK+mbuT5IYWt1Ow0KK+mbuz5EZW47DQor6ZyAPkp1Ow0KK+mchD5TaG91Ow0KK+mchj5UZWk7DQor6ZyHPlNoaW47DQor6ZyIPkhhaTsNCivpnIo+UmVpOw0KK+mcjT5LYWt1Ow0KK+mcjj5Tb3U7DQor6ZyPPkhpOw0KK+mckT5UZW47DQor6ZyTPkdlaTsNCivpnJY+UmluOw0KK+mcmT5FaTsNCivpnJw+U291Ow0KK+mcnj5LYTsNCivpnKQ+Unl1dTsNCivpnKc+TXU7DQor6ZyqPkluOw0KK+mcsD5TYW47DQor6ZyyPlJvOw0KK+mcuD5IYWt1Ow0KK+mcuT5IZWtpOw0KK+mcvT5TZWk7DQor6Zy+PkJhaTsNCivpnYI+UmVraTsNCivpnYQ+QWk7DQor6Z2GPlRhaTsNCivpnYg+UmVpOw0KK+mdiT5BaTsNCivpnZI+U2VpOw0KK+mdlj5TZWk7DQor6Z2ZPlNlaTsNCivpnZw+U2VpOw0KK+mdnj5IaTsNCivpnaA+S291Ow0KK+mdoT5IaTsNCivpnaI+TWVuOw0KK+mdpD5Ib3U7DQor6Z2mPlRlbjsNCivpnag+WW91Ow0KK+mdqT5LYWt1Ow0KK+mdqz5TYWk7DQor6Z2tPkppbjsNCivpnbE+SmluOw0KK+mdtD5LYTsNCivpnbk+S2V0c3U7DQor6Z26Pk1hdHN1Ow0KK+mdvD5UYW47DQor6Z6BPkhpOw0KK+mehD5Ib3U7DQor6Z6FPk91Ow0KK+meiz5BaTsNCivpno0+QW47DQor6Z6PPkt5b3U7DQor6Z6YPlNvdTsNCivpnpw+VG91Ow0KK+meoD5LaWt1Ow0KK+meoz5KdXU7DQor6Z6mPlNodXU7DQor6Z6oPkthdHN1Ow0KK+meqz5LaWt1Ow0KK+merT5IZW47DQor6Z6zPlRvdTsNCivpnrQ+RnVrdTsNCivpn4M+RGF0c3U7DQor6Z+GPlNlbjsNCivpn4g+QmV0c3U7DQor6Z+LPkk7DQor6Z+TPkthbjsNCivpn5w+VG91Ow0KK+mfrT5LeXV1Ow0KK+mfrj5LeW91Ow0KK+mfsj5TZWk7DQor6Z+zPk9uOw0KK+mftT5JbjsNCivpn7Y+U2hvdTsNCivpn7s+SW47DQor6Z+/Pkt5b3U7DQor6aCBPktldHN1Ow0KK+mggj5DaG91Ow0KK+mggz5LZWk7DQor6aCFPktvdTsNCivpoIY+SnVuOw0KK+mgiD5TaHU7DQor6aCMPlNob3U7DQor6aCPPktvdTsNCivpoJA+WW87DQor6aCRPkdhbjsNCivpoJI+SGFuOw0KK+mgkz5Ub247DQor6aCXPkhhOw0KK+mgmD5SeW91Ow0KK+mgmj5LZWk7DQor6aChPktpdHN1Ow0KK+mgpD5JOw0KK+mgrD5LeW91Ow0KK+mgrT5Ub3U7DQor6aC0PkVpOw0KK+mgtz5LYW47DQor6aC4PktlaTsNCivpoLs+SGluOw0KK+mgvD5SYWk7DQor6aC9PlRhaTsNCivpoYY+S2E7DQor6aGLPlNhaTsNCivpoYw+RGFpOw0KK+mhjT5HYWt1Ow0KK+mhjj5HYWt1Ow0KK+mhjz5HYW47DQor6aGUPkdhbjsNCivpoZU+S2VuOw0KK+mhmD5HYW47DQor6aGbPlRlbjsNCivpoZ4+UnVpOw0KK+mhpz5LbzsNCivpoas+U2VuOw0KK+mhrz5LZW47DQor6aGwPkhpbjsNCivpobE+Um87DQor6aGzPlNob3U7DQor6aG0PkthbjsNCivpoqg+RnV1Ow0KK+mirz5TYXRzdTsNCivporE+VGFpOw0KK+mitj5LdTsNCivpo4M+SHlvdTsNCivpo4Q+SHlvdTsNCivpo4Y+SHlvdTsNCivpo5s+SGk7DQor6aOcPkhvbjsNCivpo58+U2hva3U7DQor6aOiPktpOw0KK+mjqT5Ub247DQor6aOrPllvOw0KK+mjrT5DaG9rdTsNCivpo64+SW47DQor6aOvPkhhbjsNCivpo7I+SW47DQor6aO0Pkk7DQor6aO8PlNoaTsNCivpo70+SG91Ow0KK+mjvj5TaG9rdTsNCivppIM+S291Ow0KK+mkhT5IZWk7DQor6aSJPlNob3U7DQor6aSKPllvdTsNCivppIw+Smk7DQor6aSQPlNhbjsNCivppJI+RGFpOw0KK+mkkz5HYTsNCivppJQ+SG87DQor6aSYPllvOw0KK+mknT5TaG9rdTsNCivppJ4+U2VuOw0KK+mkoD5IZWk7DQor6aShPkthbjsNCivppKQ+VGFuOw0KK+mkqD5LYW47DQor6aSsPktvOw0KK+mkrj5UZXRzdTsNCivppL0+S2k7DQor6aS+PlJ5dXU7DQor6aWCPlVuOw0KK+mlhT5NYW47DQor6aWJPktpbjsNCivppYs+S2k7DQor6aWMPlNlbjsNCivppZA+STsNCivppZE+S2k7DQor6aWSPkpvdTsNCivppZU+VG91Ow0KK+mllz5LeW91Ow0KK+mmlj5TaHU7DQor6aaXPktpOw0KK+mmmD5LYWt1Ow0KK+mmmT5Lb3U7DQor6aalPkZ1a3U7DQor6aaoPktlaTsNCivppqw+QmE7DQor6aatPkd5bzsNCivppq4+SHlvdTsNCivpprM+Q2hpOw0KK+mmtD5TaHVuOw0KK+mmvD5CdW47DQor6aeBPkJha3U7DQor6aeEPlRhOw0KK+mnhT5Fa2k7DQor6aeGPkt1Ow0KK+mniD5LdTsNCivpp5A+Q2h1dTsNCivpp5E+RG87DQor6aeSPkt1Ow0KK+mnlT5HYTsNCivpp5g+VGFpOw0KK+mnmz5TaGk7DQor6aedPlRhOw0KK+mnnz5TaGk7DQor6aeiPkhlbjsNCivpp60+S2FpOw0KK+mnrj5IYWt1Ow0KK+mnsT5SYWt1Ow0KK+mnuD5TaGluOw0KK+mnuz5LYW47DQor6ae/PlNodW47DQor6aiBPlRlaTsNCivpqIU+U3VpOw0KK+mojj5LaTsNCivpqI8+S2k7DQor6aiSPlNvdTsNCivpqJM+S2VuOw0KK+momT5IZW47DQor6aioPlRhbjsNCivpqKs+S2VuOw0KK+mosD5Ub3U7DQor6ai3PlNvdTsNCivpqL4+UmE7DQor6amAPkJha3U7DQor6amCPlNhbjsNCivpqYM+SHlvdTsNCivpqYU+S3U7DQor6amNPkd5b3U7DQor6amVPkt5b3U7DQor6amXPktlbjsNCivpqZo+S3lvdTsNCivpqZs+RWtpOw0KK+mpnz5TaHV1Ow0KK+mpoj5SeW87DQor6amkPkpvdTsNCivpqaU+S2k7DQor6ampPkthbjsNCivpqao+Umk7DQor6amrPkh5dXU7DQor6aqoPktvdHN1Ow0KK+mqrT5LYW47DQor6aqwPlRvdTsNCivpqrg+S2FpOw0KK+mqvD5LYWt1Ow0KK+mrgD5IaTsNCivpq4Q+WnVpOw0KK+mrjz5Sb3U7DQor6auRPlRva3U7DQor6auTPlp1aTsNCivpq5Q+VGVpOw0KK+mrmD5Lb3U7DQor6auePlNvdTsNCivpq58+SHlvdTsNCivpq6I+VGVpOw0KK+mroz5Ib3U7DQor6aumPkJvdTsNCivpq6o+SGF0c3U7DQor6aurPkNob3U7DQor6autPlNoaTsNCivpq64+SGF0c3U7DQor6auvPlplbjsNCivpq7E+SG91Ow0KK+mrtD5GdXRzdTsNCivpq7c+S3lva3U7DQor6au7PktlaTsNCivprIY+U2hvdTsNCivprJg+QmFuOw0KK+msmj5TaHU7DQor6ayfPkthbjsNCivprKI+SGluOw0KK+msoz5SeW91Ow0KK+mspT5Ub3U7DQor6aynPlRvdTsNCivprKg+S291Ow0KK+msqT5HZWtpOw0KK+msqj5Ub3U7DQor6ayuPkt5dXU7DQor6ayvPkNob3U7DQor6ayxPlV0c3U7DQor6ayyPlJla2k7DQor6ay7PlNodWt1Ow0KK+msvD5LaTsNCivprYE+S2FpOw0KK+mtgj5Lb247DQor6a2DPkJhdHN1Ow0KK+mthD5IYWt1Ow0KK+mthT5NaTsNCivprY0+Qm91Ow0KK+mtjj5SeW91Ow0KK+mtjz5HaTsNCivprZE+Q2hpOw0KK+mtlD5NYTsNCivprZg+RW47DQor6a2aPkd5bzsNCivpra8+Um87DQor6a20PkhvdTsNCivproM+SHlvdTsNCivpro4+TmVuOw0KK+mukT5Ib3U7DQor6a6SPkZ1Ow0KK+mukz5TYTsNCivprp8+QW47DQor6a6gPkdhaTsNCivprqg+U2hpOw0KK+muqj5JOw0KK+muqz5Lb3U7DQor6a6tPktlaTsNCivprq4+U2VuOw0KK+muuT5Tb3U7DQor6a+APktvbjsNCivpr4Y+SG87DQor6a+JPlJpOw0KK+mvij5TYTsNCivpr5Q+U2hpOw0KK+mvlj5TZWk7DQor6a+bPkNob3U7DQor6a+hPkhpOw0KK+mvoj5HZWk7DQor6a+jPkVraTsNCivpr6Q+S29uOw0KK+mvqD5HZWk7DQor6a+wPk5lbjsNCivpr7U+U291Ow0KK+mwhD5JOw0KK+mwhj5TaHVuOw0KK+mwiD5DaG91Ow0KK+mwiT5Lb3U7DQor6bCKPlJlbjsNCivpsIw+U2h1dTsNCivpsI0+U2h1dTsNCivpsJA+R2FrdTsNCivpsJI+RnVrdTsNCivpsJM+U2FpOw0KK+mwlD5LYW47DQor6bCVPkthOw0KK+mwmz5PbjsNCivpsKE+Unl1dTsNCivpsKQ+U2hpOw0KK+mwpT5LYW47DQor6bCtPktpOw0KK+mwrj5PbjsNCivpsLI+R291Ow0KK+mwuT5LZW47DQor6bC6PlNvdTsNCivpsLs+QmFuOw0KK+mwvj5IeW91Ow0KK+mxhj5TaG91Ow0KK+mxhz5Lb3U7DQor6bGIPlNldHN1Ow0KK+mxkj5Tb247DQor6bGXPlJpbjsNCivpsaA+S2FpOw0KK+mxpz5SZWk7DQor6bG2PlNob3U7DQor6bG4PlJvOw0KK+mzpT5DaG91Ow0KK+mzpz5GdTsNCivps6k+S3l1dTsNCivps6s+R2FuOw0KK+mzrD5GdTsNCivps7M+SG91Ow0KK+mztD5NZWk7DQor6bO2PkVuOw0KK+m0gz5LZXRzdTsNCivptIY+Q2hpbjsNCivptIc+SG91Ow0KK+m0iD5HYW47DQor6bSJPkE7DQor6bSOPk91Ow0KK+m0kj5SZWk7DQor6bSVPlRhOw0KK+m0mz5FbjsNCivptJ8+U2hpOw0KK+m0oz5LbzsNCivptKY+WW91Ow0KK+m0qD5PdTsNCivptKo+SXRzdTsNCivptKw+T3U7DQor6bS7PktvdTsNCivptL4+Qm91Ow0KK+m0vz5Lb3U7DQor6bWBPktvdTsNCivptYQ+U2hpOw0KK+m1kD5CdTsNCivptZE+S2VuOw0KK+m1mT5HZWtpOw0KK+m1nD5UZWk7DQor6bWdPkdhOw0KK+m1nj5HYTsNCivptaA+S29rdTsNCivptaE+QnU7DQor6bWsPkhvdTsNCivpta8+SGk7DQor6bWyPkpha3U7DQor6bW6PllhOw0KK+m2hz5Ub3U7DQor6baJPlNodW47DQor6baPPktlaTsNCivptpo+R2FrdTsNCivptqQ+S29uOw0KK+m2qT5Cb2t1Ow0KK+m2rz5PdTsNCivptrI+T3U7DQor6ba0Pktha3U7DQor6ba4Pkpha3U7DQor6ba6PlNla2k7DQor6ba7PktvdHN1Ow0KK+m3gT5HZWtpOw0KK+m3gj5Zb3U7DQor6beEPktlaTsNCivpt4Y+VGVuOw0KK+m3jz5UZW47DQor6beTPlNoYTsNCivpt5k+U2hpOw0KK+m3pj5TaG91Ow0KK+m3rT5CYW47DQor6bevPlJ5b3U7DQor6beyPlNodXU7DQor6be4Pkl0c3U7DQor6be5PllvdTsNCivpt7o+Um87DQor6be9Pktha3U7DQor6biaPk91Ow0KK+m4mz5LYW47DQor6biePlJhbjsNCivpubU+Um87DQor6bm4PktlbjsNCivpubk+S2FuOw0KK+m5vT5FbjsNCivpub8+Um9rdTsNCivpuoE+U287DQor6bqIPlNodTsNCivpuos+Qmk7DQor6bqMPkd1Ow0KK+m6kT5HZWk7DQor6bqSPktpOw0KK+m6kz5Sb2t1Ow0KK+m6lT5LaW47DQor6bqXPlJlaTsNCivpup0+U2hhOw0KK+m6nz5SaW47DQor6bqlPkJha3U7DQor6bqmPkJha3U7DQor6bqpPkZ1Ow0KK+m6qj5NZW47DQor6bqtPkhvdTsNCivpurg+RnU7DQor6bq5Pktpa3U7DQor6bq6Pk1lbjsNCivpurs+TWE7DQor6bq8Pk1hOw0KK+m6vj5LaTsNCivpur8+Um87DQor6buEPktvdTsNCivpu4w+S291Ow0KK+m7jT5TaG87DQor6buOPlJlaTsNCivpu48+TmVuOw0KK+m7kD5DaGk7DQor6buSPktva3U7DQor6buUPktlbjsNCivpu5g+TW9rdTsNCivpu5k+TW9rdTsNCivpu5s+VGFpOw0KK+m7nD5DaHV0c3U7DQor6budPll1dTsNCivpu54+VGVuOw0KK+m7oD5LYXRzdTsNCivpu6U+R2VpOw0KK+m7qD5Ub3U7DQor6buvPkFuOw0KK+m7tD5CYWk7DQor6bu2PkVuOw0KK+m7tz5Ub2t1Ow0KK+m7uT5DaGk7DQor6bu7PkZ1dHN1Ow0KK+m7vD5IbzsNCivpu70+Qm91Ow0KK+m8hz5Hb3U7DQor6byIPkJldHN1Ow0KK+m8jj5UZWk7DQor6byTPktvOw0KK+m8lT5Ub3U7DQor6bygPlNvOw0KK+m8oT5TaG87DQor6bysPll1dTsNCivpvLs+Qmk7DQor6by+PkthbjsNCivpvYo+U2VpOw0KK+m9iz5TYWk7DQor6b2OPlNlaTsNCivpvY8+U2VpOw0KK+m9kj5TaGk7DQor6b2UPlNoaW47DQor6b2fPlNvOw0KK+m9oD5DaG91Ow0KK+m9oT5SZWk7DQor6b2iPlJlaTsNCivpvaM+U2h1dHN1Ow0KK+m9pj5HaW47DQor6b2nPktldHN1Ow0KK+m9qj5Tb2t1Ow0KK+m9rD5HeW87DQor6b2yPkt1Ow0KK+m9tj5HYWt1Ow0KK+m9tz5Ba3U7DQor6b6NPlJ5dXU7DQor6b6VPkdhbjsNCivpvpw+S2k7DQor6b6dPlNodXU7DQor6b6gPllha3U7DQorDQorIyBlb2YNCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9LYW5uYWRhX0ludGVySW5kaWMudXRmOC50eHQgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9LYW5uYWRhX0ludGVySW5kaWMudXRmOC50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDdmZDc3OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0thbm5hZGFfSW50ZXJJbmRpYy51dGY4LnR4dApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9LZXlib2FyZEVzY2FwZV9MYXRpbjEudXRmOC50eHQgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9LZXlib2FyZEVzY2FwZV9MYXRpbjEudXRmOC50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGFiMDMxZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0tleWJvYXJkRXNjYXBlX0xhdGluMS51dGY4LnR4dApAQCAtMCwwICsxLDEyNSBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcw0KKyMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBEYXRlOiBUdWUgSmFuIDIzIDEyOjQyOjA1IDIwMDENCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCisjIEtleWJvYXJkRXNjYXBlLUxhdGluMQ0KKw0KKyMjIyAkZXNjPScnOw0KKyMjIyAkZ3JhdmU9J2AnOw0KKyMjIyAkYWN1dGU9Jyc7DQorIyMjICRoYXQ9J14nOw0KKyMjIyAkdGlsZGU9J34nOw0KKyMjIyAkdW1sYXV0PSc6JzsNCisjIyMgJHJpbmc9Jy4nOw0KKyMjIyAkY2VkaWxsYT0nLCc7DQorIyMjICRzbGFzaD0nLyc7DQorIyMjICRzdXBlcj0nXic7DQorDQorIyBNYWtlIGtleWJvYXJkIGVudHJ5IG9mIHtlc2N9IHBvc3NpYmxlDQorIyBhbmQgb2YgYmFja3NsYXNoDQorJ1xcJycnPicnOw0KKydcXFxcJz4nXFwnOw0KKw0KKyMgTG9uZyBrZXlzDQorY3VyJyc+wqQ7DQorc2VjJyc+wqc7DQorbm90Jyc+wqw7DQorbXVsJyc+w5c7DQorZGl2Jyc+w7c7DQorDQorXFwgJyc+wqA7ICMgbm9uLWJyZWFraW5nIHNwYWNlDQorJyEnJyc+wqE7ICMgaW52ZXJ0ZWQgZXhjbGFtYXRpb24NCitjJy8nJyc+wqI7ICMgY2VudCBzaWduDQorbGInJz7CozsgIyBwb3VuZCBzaWduDQorJ3wnJyc+wqY7ICMgYnJva2VuIHZlcnRpY2FsIGJhcg0KKyc6JycnPsKoOyAjIHVtbGF1dA0KKydeJyBhJyc+wqo7ICMgZmVtaW5pbmUgb3JkaW5hbA0KKyc8PCcnJz7CqzsNCityJyc+wq47DQorJy0tJycnPsKvOw0KKyctJycnPsKtOw0KKycrLScnJz7CsTsNCisnXicgMicnPsKyOw0KKydeJyAzJyc+wrM7DQorJycnJz7CtDsNCittJyc+wrU7DQorcGFyYScnPsK2Ow0KK2RvdCcnPsK3Ow0KKycsJycnPsK4Ow0KKydeJyAxJyc+wrk7DQorJ14nIG8nJz7CujsgIyBtYXNjdWxpbmUgb3JkaW5hbA0KKyc+PicnJz7CuzsNCisnMS80JycnPsK8Ow0KKycxLzInJyc+wr07DQorJzMvNCcnJz7CvjsNCisnPycnJz7CvzsNCitBJ2AnJyc+w4A7DQorQScnJyc+w4E7DQorQSdeJycnPsOCOw0KK0EnficnJz7DgzsNCitBJzonJyc+w4Q7DQorQScuJycnPsOFOw0KK0FFJyc+w4Y7DQorQycsJycnPsOHOw0KK0UnYCcnJz7DiDsNCitFJycnJz7DiTsNCitFJ14nJyc+w4o7DQorRSc6JycnPsOLOw0KK0knYCcnJz7DjDsNCitJJycnJz7DjTsNCitJJ14nJyc+w447DQorSSc6JycnPsOPOw0KKydELScnJz7DkDsNCitOJ34nJyc+w5E7DQorTydgJycnPsOSOw0KK08nJycnPsOTOw0KK08nXicnJz7DlDsNCitPJ34nJyc+w5U7DQorTyc6JycnPsOWOw0KK08nLycnJz7DmDsNCitVJ2AnJyc+w5k7DQorVScnJyc+w5o7DQorVSdeJycnPsObOw0KK1UnOicnJz7DnDsNCitZJycnJz7DnTsNCitUSCcnPsOeOw0KK3NzJyc+w587DQorYSdgJycnPsOgOw0KK2EnJycnPsOhOw0KK2EnXicnJz7DojsNCithJ34nJyc+w6M7DQorYSc6JycnPsOkOw0KK2EnLicnJz7DpTsNCithZScnPsOmOw0KK2MnLCcnJz7DpzsNCitjJyc+wqk7ICMgY29weXJpZ2h0IC0gYWZ0ZXIgY3tjZWRpbGxhfQ0KK2UnYCcnJz7DqDsNCitlJycnJz7DqTsNCitlJ14nJyc+w6o7DQorZSc6JycnPsOrOw0KK2knYCcnJz7DrDsNCitpJycnJz7DrTsNCitpJ14nJyc+w647DQoraSc6JycnPsOvOw0KKydkLScnJz7DsDsNCituJ34nJyc+w7E7DQorbydgJycnPsOyOw0KK28nJycnPsOzOw0KK28nXicnJz7DtDsNCitvJ34nJyc+w7U7DQorbyc6JycnPsO2Ow0KK28nLycnJz7DuDsNCitvJyc+wrA7DQordSdgJycnPsO5Ow0KK3UnJycnPsO6Ow0KK3UnXicnJz7DuzsNCit1JzonJyc+w7w7DQoreScnJyc+w707DQoreScnPsKlOyAjIHllbiBzaWduDQordGgnJz7DvjsNCisjbWFza2VkOiArICJzcycnPsO/OyINCisNCisjIGVvZg0KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0xhdGluX0FyYWJpYy51dGY4LnR4dCBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0xhdGluX0FyYWJpYy51dGY4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lZGJjNzJjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfTGF0aW5fQXJhYmljLnV0ZjgudHh0CkBAIC0wLDAgKzEsMTg5IEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzDQorIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIERhdGU6IFR1ZSBKYW4gMjMgMjAwMQ0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKyMgVG8gRG86IGZpbmlzaCBhZGRpbmcgc2hhZGRhLCBhZGQgc29rb29uDQorIyBbSXMgdGhpcyBkb25lPyAgQ2FuIHNvbWVvbmUgZmluaXNoIHRoaXM/XQ0KKw0KKyMjIyAkYWxlZm1hZGRhPdiiOw0KKyMjIyAkYWxlZnVoYW16YT3YozsNCisjIyMgJHdhdXVoYW16YT3YpDsNCisjIyMgJGFsZWZoYW16YT3YpTsNCisjIyMgJHllaHVoYW16YT3YpjsNCisjIyMgJGFsZWY92Kc7DQorIyMjICRiZWg92Kg7DQorIyMjICR0ZWhtYXJidXRhPdipOw0KKyMjIyAkdGVoPdiqOw0KKyMjIyAkdGhlaD3YqzsNCisjIyMgJGdlZW092Kw7DQorIyMjICRoYWg92K07DQorIyMjICRraGE92K47DQorIyMjICRkYWw92K87DQorIyMjICRkaGFsPdiwOw0KKyMjIyAkcmVoPdixOw0KKyMjIyAkemFpbj3YsjsNCisjIyMgJHNlZW492LM7DQorIyMjICRzaGVlbj3YtDsNCisjIyMgJHNhZD3YtTsNCisjIyMgJGRhZD3YtjsNCisjIyMgJHRhaD3YtzsNCisjIyMgJHphaD3YuDsNCisjIyMgJGVpbj3YuTsNCisjIyMgJGdoZWluPdi6Ow0KKyMjIyAkZmVoPdmBOw0KKyMjIyAkcWFhZj3ZgjsNCisjIyMgJGthZj3ZgzsNCisjIyMgJGxhbT3ZhDsNCisjIyMgJG1lZW092YU7DQorIyMjICRub29uPdmGOw0KKyMjIyAkaGVoPdmHOw0KKyMjIyAkd2F1PdmIOw0KKyMjIyAkeWVobWFxc3VyYT3ZiTsNCisjIyMgJHllaD3ZijsNCisjIyMgJHBlaD3apDsNCisNCisjIyMgJGhhbXphPdihOw0KKyMjIyAkZmF0aGF0ZWluPdmLOw0KKyMjIyAkZGFtbWF0ZWluPdmMOw0KKyMjIyAka2FzcmF0ZWluPdmNOw0KKyMjIyAkZmF0aGE92Y47DQorIyMjICRkYW1tYT3ZjzsNCisjIyMgJGthc3JhPdmQOw0KKyMjIyAkc2hhZGRhPdmROw0KKyMjIyAkc29rb29uPdmSOw0KKw0KKyMgRG91YmxlcyAtIGxpdQ0KK3QnJyA8IHvYqn0gW9iq2KvYqdi3XTsNCitoJycgPCB72Yd9IFvZh9itXTsNCitzJycgPCB72LN9INi0Ow0KKw0KKyMgQSBmZXcgcGF0aG9sb2dpY2FsIHNwZWNpYWwgY2FzZXMgdG8gbWFrZSByb3VuZA0KKyMgdHJpcCB3b3JrLiAtIGxpdQ0KK2QnfidkICAgPD4g2K8g2K87DQorZGgnfidkaCA8PiDYsCDYsDsNCitkZCd+J2RkIDw+INi2INi2Ow0KKw0KKyMgU2hhZGRhOiAgTWFwIHgg2ZEgdG8geCB4LCB3aGVyZSB4IGlzIGRoLCBkZCwgb3INCisjIGQgKHRoYXQgaXMsINiwLCDYtiwgb3Ig2K8pLiAgSWYgeCBpcyBkLCBkJ2QgaXMNCisjIG91dHB1dC4gIE5ldCBlZmZlY3QgaXMgdG8gbWFwIHMudGguIGxpa2Ug2LYg2ZENCisjIHRvIGRkJ2RkLiAtIGxpdQ0KK9iwIHtkaH0gPD4gZGgge9mRfTsNCivYtiAge2RkfSA8PiBkZCB72ZF9Ow0KK9ivIHsnJ2R9IFteZGhdIDw+IGQge9mRfTsgIyBBdm9pZCBkJ2RkIG9yIGQnZGgNCisNCisjIFtUaGlzIHNob3VsZCBiZSByZW1vdmVkLCBidXQgaXQncyBnb29kIGZvciBkZW1vc10NCitBcmFiaWM+IFwNCivYqtiq2YXYqti5JyAnIFwNCivYp9mE2YTYutipJyAnIFwNCivYp9mE2LnYsdio2KjZitipJyAnIFwNCivYqNio2YbYuNmFJyAnIFwNCivZg9iq2KfYqNio2YrYqScgJyBcDQor2KzZhdmK2YTYqTsNCisNCisjIE1haW4gcnVsZXMgICAgICAgICAgICAgIA0KKycnYWk8YXvYojsNCithaTw+2KI7DQorJydhZTxhe9ijOw0KK2FlPD7YozsNCisnJ2FvPGF72KU7DQorYW88PtilOw0KKycnYWE8YXvYpzsNCithYTw+2Kc7DQorJydhbjxhe9mLOw0KK2FuPD7ZizsNCisnJ2E8YXvZjjsNCithPD7ZjjsNCitiPD7YqDsNCisnJ2RoPGR72LA7DQorZGg8PtiwOw0KKycnZGQ8ZHvYtjsNCitkZDw+2LY7DQorJydkPGR72K87DQorZDw+2K87DQorJydlPGF72Lk7DQorJydlPHd72Lk7DQorJydlPHl72Lk7DQorZTw+2Lk7DQorZjw+2YE7DQorZ2g8Pti6Ow0KKycnaGg8ZHvYrTsNCisnJ2hoPHR72K07DQorJydoaDxre9itOw0KKycnaGg8c3vYrTsNCitoaDw+2K07DQorJydoPGR72Yc7DQorJydoPHR72Yc7DQorJydoPGt72Yc7DQorJydoPHN72Yc7DQoraDw+2Yc7DQorJydpaTxpe9mNOw0KK2lpPD7ZjTsNCisnJ2k8aXvZkDsNCitpPD7ZkDsNCitqPD7YrDsNCitraDw+2K47DQorazw+2YM7DQorbDw+2YQ7DQorJydtPHl72YU7DQorJydtPHR72YU7DQorbTw+2YU7DQorbjw+2YY7DQorJydvPGF72KE7DQorbzw+2KE7DQorcDw+2qQ7DQorcTw+2YI7DQorcjw+2LE7DQorc2g8Pti0Ow0KKycnc3M8c3vYtTsNCitzczw+2LU7DQorJydzPHN72LM7DQorczw+2LM7DQordGg8PtirOw0KK3RtPD7YqTsNCisnJ3R0PHR72Lc7DQordHQ8Pti3Ow0KKycndDx0e9iqOw0KK3Q8PtiqOw0KKycndXU8dXvZjDsNCit1dTw+2Yw7DQorJyd1PHV72Y87DQordTw+2Y87DQord2U8PtikOw0KK3c8PtmIOw0KK3llPD7YpjsNCit5bTw+2Yk7DQorJyd5PHl72Yo7DQoreTw+2Yo7DQorJyd6ejx6e9i4Ow0KK3p6PD7YuDsNCisnJ3o8envYsjsNCit6PD7YsjsNCisNCisjIE9uZS13YXkgTGF0aW4tQXJhYmljIGNvbXBhdGFiaWxpdHkgcnVsZXMNCitjPtmDOw0KK2c+2Kw7DQoreD7Zg9mR2LM7DQordj7YqDsNCisNCisjIERpZ2l0cw0KKzA8PtmgOyAjIEFyYWJpYyBkaWdpdCAwDQorMTw+2aE7ICMgQXJhYmljIGRpZ2l0IDENCisyPD7ZojsgIyBBcmFiaWMgZGlnaXQgMg0KKzM8PtmjOyAjIEFyYWJpYyBkaWdpdCAzDQorNDw+2aQ7ICMgQXJhYmljIGRpZ2l0IDQNCis1PD7ZpTsgIyBBcmFiaWMgZGlnaXQgNQ0KKzY8PtmmOyAjIEFyYWJpYyBkaWdpdCA2DQorNzw+2ac7ICMgQXJhYmljIGRpZ2l0IDcNCis4PD7ZqDsgIyBBcmFiaWMgZGlnaXQgOA0KKzk8PtmpOyAjIEFyYWJpYyBkaWdpdCA5DQorJyUnPD7ZqjsgIyBBcmFiaWMgJQ0KKycuJzw+2as7ICMgQXJhYmljIGRlY2ltYWwgc2VwYXJhdG9yDQorJywnPD7ZrDsgIyBBcmFiaWMgdGhvdXNhbmRzIHNlcGFyYXRvcg0KKycqJzw+2a07ICMgQXJhYmljIGZpdmUtcG9pbnRlZCBzdGFyDQorDQorJyc+Ow0KKw0KKyMgZW9mDQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfTGF0aW5fQ3lyaWxsaWMudXRmOC50eHQgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9MYXRpbl9DeXJpbGxpYy51dGY4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44ODk5ZDk1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfTGF0aW5fQ3lyaWxsaWMudXRmOC50eHQKQEAgLTAsMCArMSwzMDUgQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMNCisjIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgRGF0ZTogVHVlIEphbiAyMyAxMjo0MjowNSAyMDAxDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorIyBMYXRpbi1DeXJpbGxpYw0KKw0KKw0KKyMgVGhlc2UgcnVsZXMgcHJvdmlkZSBnZW5lcmFsIExhdGluLUN5cmlsbGljDQorIyB0cmFuc2xpdGVyYXRpb24uIFRoZSBzdGFuZGFyZCBSdXNzaWFuIHRyYW5zbGl0ZXJhdGlvbnMNCisjIGFyZSBnZW5lcmFsbHkgdXNlZCBmb3IgdGhlIGxldHRlcnMgZnJvbSBSdXNzaWFuLA0KKyMgd2l0aCBhZGRpdGlvbmFsIEN5cmlsbGljIGNoYXJhY3RlcnMgZ2l2ZW4gY29uc2lzdGVudA0KKyMgbWFwcGluZ3MuDQorDQorIyMjICRTX2hhY2VrPcWgOw0KKyMjIyAkc19oYWNlaz3FoTsNCisNCisjIyMgJFlPPdCBOw0KKyMjIyAkSj3QiDsNCisjIyMgJEE90JA7DQorIyMjICRCPdCROw0KKyMjIyAkVj3QkjsNCisjIyMgJEc90JM7DQorIyMjICREPdCUOw0KKyMjIyAkWUU90JU7DQorIyMjICRaSD3QljsNCisjIyMgJFo90Jc7DQorIyMjICRZST3QmDsNCisjIyMgJFk90Jk7DQorIyMjICRLPdCaOw0KKyMjIyAkTD3QmzsNCisjIyMgJE090Jw7DQorIyMjICROPdCdOw0KKyMjIyAkTz3QnjsNCisjIyMgJFA90J87DQorIyMjICRSPdCgOw0KKyMjIyAkUz3QoTsNCisjIyMgJFQ90KI7DQorIyMjICRVPdCjOw0KKyMjIyAkRj3QpDsNCisjIyMgJEtIPdClOw0KKyMjIyAkVFM90KY7DQorIyMjICRDSD3QpzsNCisjIyMgJFNIPdCoOw0KKyMjIyAkU0hDSD3QqTsNCisjIyMgJEhBUkQ90Ko7DQorIyMjICRJPdCrOw0KKyMjIyAkU09GVD3QrDsNCisjIyMgJEU90K07DQorIyMjICRZVT3QrjsNCisjIyMgJFlBPdCvOw0KKw0KKyMgTG93ZXJjYXNlDQorDQorIyMjICRhPdCwOw0KKyMjIyAkYj3QsTsNCisjIyMgJHY90LI7DQorIyMjICRnPdCzOw0KKyMjIyAkZD3QtDsNCisjIyMgJHllPdC1Ow0KKyMjIyAkemg90LY7DQorIyMjICR6PdC3Ow0KKyMjIyAkeWk90Lg7DQorIyMjICR5PdC5Ow0KKyMjIyAkaz3QujsNCisjIyMgJGw90Ls7DQorIyMjICRtPdC8Ow0KKyMjIyAkbj3QvTsNCisjIyMgJG890L47DQorIyMjICRwPdC/Ow0KKyMjIyAkcj3RgDsNCisjIyMgJHM90YE7DQorIyMjICR0PdGCOw0KKyMjIyAkdT3RgzsNCisjIyMgJGY90YQ7DQorIyMjICRraD3RhTsNCisjIyMgJHRzPdGGOw0KKyMjIyAkY2g90Yc7DQorIyMjICRzaD3RiDsNCisjIyMgJHNoY2g90Yk7DQorIyMjICRoYXJkPdGKOw0KKyMjIyAkaT3RizsNCisjIyMgJHNvZnQ90Yw7DQorIyMjICRlPdGNOw0KKyMjIyAkeXU90Y47DQorIyMjICR5YT3RjzsNCisNCisjIyMgJHlvPdGROw0KKyMjIyAkaj3RmDsNCisNCisjIHZhcmlhYmxlcw0KKyMgc29tZSBhcmUgZHVwbGljYXRlZCBzbyBsb3dlcmNhc2luZyB3b3Jrcw0KKw0KKyRjc29mdD1bZWl5RUlZXTsNCiskQ1NPRlQ9W2VpeUVJWV07DQorDQorJEJFQ09NRVNfSD1b0KrRil07DQorJGJlY29tZXNfaD1b0KrRil07DQorDQorJEJFQ09NRVNfUz1b0KHRgV07DQorJGJlY29tZXNfcz1b0KHRgV07DQorDQorJEJFQ09NRVNfQz1b0KfRh107DQorJGJlY29tZXNfYz1b0KfRh107DQorDQorJEJFQ09NRVNfVk9XRUw9W9CQ0K3Qq9Ce0KPQsNGN0YvQvtGDXTsNCiskYmVjb21lc192b3dlbD1b0JDQrdCr0J7Qo9Cw0Y3Ri9C+0YNdOw0KKw0KKyRsZXR0ZXI9W1s6THU6XVs6TGw6XV07DQorJGxvd2VyPVtbOkxsOl1dOw0KKw0KKyMgTW9kaWZpZWQgdG8gY29tYmluZSBkaXNwbGF5IHRyYW5zbGl0ZXJhdG9yIGFuZCB0eXBpbmcgdHJhbnNsaXRlcmF0b3IuDQorIyBUaGUgZGlzcGxheSBtYXBwaW5nIHVzZXMgYWNjZW50cyBmb3IgdGhlICJzb2Z0IiB2b3dlbHMuDQorIyBJdCBkb2VzIG5vdCwgYWx0aG91Z2ggaXQgY291bGQsIHVzZSBjaGFyYWN0ZXJzIGxpa2UgxaEgaW5zdGVhZCBvZiBkaWdyYXBocw0KKyMgbGlrZSBzaC4NCisNCisjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgU3BlY2lhbCB0aXRsZWNhc2UgZm9ybXMsIG5vdCBkdXBsaWNhdGVkDQorIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisNCitTaCcnY2g8PtCo0Yc7ICMgTElVIERpc3Rpbmd1aXNoINCo0YcgZnJvbSDQqQ0KKw0KK0NoICAgPD4ge9CnfSAgJGxvd2VyOw0KK0toICAgPD4ge9ClfSAgJGxvd2VyOw0KK1NoY2ggPD4ge9CpfSRsb3dlcjsNCitTaCAgIDw+IHvQqH0gICRsb3dlcjsNCitUcyAgIDw+IHvQpn0gICRsb3dlcjsNCitaaCAgIDw+IHvQln0gICRsb3dlcjsNCitZaT7QmDsNCitZZT7QlTsNCitZbz7QgTsNCitZdT7QrjsNCitZYT7QrzsNCisNCisjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgUnVsZXMgdG8gRHVwbGljYXRlDQorIyBUbyBnZXQgdGhlIGxvd2VyY2FzZSB2ZXJzaW9ucywgY29weSB0aGVzZSBhbmQgbG93ZXJjYXNlDQorIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisNCisjIHZhcmlhbnQgc3BlbGxpbmdzIGluIEVuZ2xpc2gNCisNCitTSFRDSD7QqTsNCitUQ0g+0Kc7DQorVEg+0Jc7DQorUT7QmjsNCitXSD7QkjsNCitXPtCSOw0KK1g+0JrQoTsgIysgIlg80JrQoTsiDQorDQorIyBTZXBhcmF0ZSBsZXR0ZXJzIHRoYXQgd291bGQgb3RoZXJ3aXNlIGpvaW4NCisNCitTSCcnPNCofSRCRUNPTUVTX0M7DQorVCcnPNCifSRCRUNPTUVTX1M7DQorVCcnPNCifVvQp9Cp0YldOyAjIExJVSBhZGQgc3BlY2lhbCBjYXNlcw0KKw0KK0snJzzQmn0kQkVDT01FU19IOw0KK1MnJzzQoX0kQkVDT01FU19IOw0KK1QnJzzQon0kQkVDT01FU19IOw0KK1onJzzQl30kQkVDT01FU19IOw0KKw0KK1knJzzQmX0kQkVDT01FU19WT1dFTDsNCisNCisjIE1haW4gbGV0dGVycw0KKw0KK0E8PtCQOw0KK0I8PtCROw0KK0NIPD7QpzsNCitEPD7QlDsNCitFPD7QrTsNCitGPD7QpDsNCitHPD7QkzsNCivDjDw+0Jg7DQorSTw+0Ks7DQorS0g8PtClOw0KK0s8PtCaOw0KK0w8PtCbOw0KK008PtCcOw0KK048PtCdOw0KK088PtCeOw0KK1A8PtCfOw0KK1I8PtCgOw0KK1NIQ0g8PtCpOw0KK1NIPtCoOyAjKyAiU0g80Kg7Ig0KK8WgPD7QqDsNCitTPD7QoTsNCitUUzw+0KY7DQorVDw+0KI7DQorVTw+0KM7DQorVjw+0JI7DQorI8OMw4DDiMOSw5kNCitZRT7QlTsgIysgIllFPNCVOyINCivDiDw+0JU7DQorWU8+0IE7ICMrICJZTzzQgTsiDQorw5I8PtCBOw0KK1lVPtCuOyAjKyAiWVU80K47Ig0KK8OZPD7QrjsNCitZQT7QrzsgIysgIllBPNCvOyINCivDgDw+0K87DQorWTw+0Jk7DQorWkg8PtCWOw0KK1o8PtCXOw0KKw0KK0g8PtCqOw0KK8W4PD7QrDsNCisNCisjIE5vbi1ydXNzaWFuDQorDQorSjw+0Ig7DQorDQorIyB2YXJpYW50IHNwZWxsaW5ncyBpbiBFbmdsaXNoDQorDQorQ30kY3NvZnQ+0KE7DQorQz7QmjsNCisNCisjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgRHVwbGljYXRlZCBSdWxlcw0KKyMgQ29weSBhbmQgbG93ZXJjYXNlIHRoZSBhYm92ZSBydWxlcw0KKyMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorDQorIyB2YXJpYW50IHNwZWxsaW5ncyBpbiBlbmdsaXNoDQorDQorc2h0Y2g+0Yk7DQordGNoPtGHOw0KK3RoPtC3Ow0KK3E+0Lo7DQord2g+0LI7DQordz7QsjsNCit4PtC60YE7ICMrICJ4PNC60YE7Ig0KKw0KKyMgc2VwYXJhdGUgbGV0dGVycyB0aGF0IHdvdWxkIG90aGVyd2lzZSBqb2luDQorDQorc2gnJzzRiH0kYmVjb21lc19jOw0KK3QnJzzRgn0kYmVjb21lc19zOw0KK3QnJzzRgn1b0YfRiV07ICMgTElVIGFkZCBzcGVjaWFsIGNhc2VzDQorDQoraycnPNC6fSRiZWNvbWVzX2g7DQorcycnPNGBfSRiZWNvbWVzX2g7DQordCcnPNGCfSRiZWNvbWVzX2g7DQoreicnPNC3fSRiZWNvbWVzX2g7DQorDQoreScnPNC5fSRiZWNvbWVzX3Zvd2VsOw0KKw0KKyMgbWFpbiBsZXR0ZXJzDQorDQorYTw+0LA7DQorYjw+0LE7DQorY2g8PtGHOw0KK2Q8PtC0Ow0KK2U8PtGNOw0KK2Y8PtGEOw0KK2c8PtCzOw0KK8OsPD7QuDsNCitpPD7RizsNCitraDw+0YU7DQorazw+0Lo7DQorbDw+0Ls7DQorbTw+0Lw7DQorbjw+0L07DQorbzw+0L47DQorcDw+0L87DQorcjw+0YA7DQorc2hjaDw+0Yk7DQorc2g+0Yg7ICMrICJzaDzRiDsiDQorxaE8PtGIOw0KK3M8PtGBOw0KK3RzPD7RhjsNCit0PD7RgjsNCit1PD7RgzsNCit2PD7QsjsNCisjw6zDoMOow7LDuQ0KK3llPtC1OyAjKyAieWU80LU7Ig0KK8OoPD7QtTsNCit5bz7RkTsgIysgInlvPNGROyINCivDsjw+0ZE7DQoreXU+0Y47ICMrICJ5dTzRjjsiDQorw7k8PtGOOw0KK3lhPtGPOyAjKyAieWE80Y87Ig0KK8OgPD7RjzsNCit5PD7QuTsNCit6aDw+0LY7DQorejw+0Lc7DQorDQoraDw+0Yo7DQorw788PtGMOw0KKw0KKyMgbm9uLXJ1c3NpYW4NCisNCitqPD7RmDsNCisNCisjIHZhcmlhbnQgc3BlbGxpbmdzIGluIGVuZ2xpc2gNCisNCitjfSRjc29mdD7RgTsNCitjPtC6Ow0KKw0KKw0KKyMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorIyBFbmQgb2YgRHVwbGljYXRlZCBSdWxlcw0KKyMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorDQorI2dlbmVyYWxseSB0aGUgbGFzdCBydWxlDQorJyc+Ow0KKw0KKyMgZW9mDQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfTGF0aW5fRGV2YW5hZ2FyaS51dGY4LnR4dCBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0xhdGluX0RldmFuYWdhcmkudXRmOC50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNzUxMjRkMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0xhdGluX0RldmFuYWdhcmkudXRmOC50eHQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfTGF0aW5fR3JlZWsudXRmOC50eHQgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9MYXRpbl9HcmVlay51dGY4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zMWE2YTAxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfTGF0aW5fR3JlZWsudXRmOC50eHQKQEAgLTAsMCArMSwzNzUgQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMNCisjIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgRGF0ZTogVHVlIEphbiAyMyAxMjoxODo0NSAyMDAxDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorIyBMYXRpbi1HcmVlaw0KKw0KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMgTW9kZXJuIEdyZWVrIFRyYW5zbGl0ZXJhdGlvbiBSdWxlcw0KKyMNCisjIFRoaXMgdHJhbnNsaXRlcmF0ZXMgbW9kZXJuIEdyZWVrIGNoYXJhY3RlcnMsIGJ1dCB1c2luZyBydWxlcw0KKyMgdGhhdCBhcmUgdHJhZGl0aW9uYWwgZm9yIEFuY2llbnQgR3JlZWssIGFuZA0KKyMgdGh1cyBtb3JlIHJlc2VtYmxlIEdyZWVrIHdvcmRzIHRoYXQgaGF2ZSBiZWNvbWUgcGFydA0KKyMgb2YgRW5nbGlzaC4gSXQgZGlmZmVycyBmcm9tIHRoZSBvZmZpY2lhbCBHcmVlaw0KKyMgdHJhbnNsaXRlcmF0aW9uLCB3aGljaCBpcyBtb3JlIHBob25ldGljIChzaW5jZQ0KKyMgbW9zdCBtb2Rlcm4gR3JlZWsgdm93ZWxzLCBmb3IgZXhhbXBsZSwgaGF2ZQ0KKyMgZGVnZW5lcmF0ZWQgc2ltcGx5IHRvIHNvdW5kIGxpa2UgImVlIikuDQorIw0KKyMgVGhlcmUgYXJlIG9ubHkgYSBmZXcgdHJpY2t5IHBhcnRzLg0KKyMgMS4gZXRhIGFuZCBvbWVnYSBkb24ndCBtYXAgZGlyZWN0bHkgdG8gTGF0aW4gdm93ZWxzLA0KKyMgICAgc28gd2UgdXNlIGEgbWFjcm9uIG9uIGUgYW5kIG8sIGFuZCBzb21lDQorIyAgICBvdGhlciBjb21iaW5hdGlvbnMgaWYgdGhleSBhcmUgYWNjZW50ZWQuDQorIyAyLiBUaGUgYWNjZW50ZWQsIGRpYWVyZXNpcyBpIGFuZCB5IGFyZSBzdWJzdGl0dXRlZCB0b28uDQorIyAzLiBTb21lIGxldHRlcnMgdXNlIGRpZ3JhcGhzLCBsaWtlICJwaCIuIFdoaWxlIHR5cGljYWwsDQorIyAgICB0aGV5IG5lZWQgc29tZSBzcGVjaWFsIGhhbmRsaW5nLg0KKyMgNC4gQSBnYW1tYSBiZWZvcmUgYSBnYW1tYSBvciBhIGZldyBvdGhlciBsZXR0ZXJzIGlzDQorIyAgICB0cmFuc2xpdGVyYXRlZCBhcyBhbiAibiIsIGFzIGluICJBbmdsbyINCisjIDUuIEFuIHlwc2lsb24gYWZ0ZXIgYSB2b3dlbCBpcyBhICJ1IiwgYXMgaW4NCisjICAgICJNb3VzZWlvIi4gT3RoZXJ3aXNlIGl0IGlzIGEgInkiIGFzIGluICJQaHlzaWtvbiINCisjIDYuIFRoZSBjb25zdHJ1Y3Rpb24gb2YgdGhlIHJ1bGVzIGlzIG1hZGUgc2ltcGxlciBieSBtYWtpbmcgc3VyZQ0KKyMgICAgdGhhdCBtb3N0IHJ1bGVzIGZvciBsb3dlcmNhc2UgbGV0dGVycyBleGFjdGx5IGNvcnJlc3BvbmQgdG8gdGhlDQorIyAgICBydWxlcyBmb3IgdXBwZXJjYXNlIGxldHRlcnMsICpleGNlcHQqIGZvciB0aGUgY2FzZSBvZiB0aGUgbGV0dGVycw0KKyMgICAgaW4gdGhlIHJ1bGUgaXRzZWxmLiBUaGF0IHdheSwgYWZ0ZXIgbW9kaWZ5aW5nIHRoZSB1cHBlcmNhc2UgcnVsZXMsDQorIyAgICB5b3UgY2FuIGp1c3QgY29weSwgcGFzdGUsIGFuZCAic2V0IHRvIGxvd2VyY2FzZSIgdG8gZ2V0DQorIyAgICB0aGUgcnVsZXMgZm9yIGxvd2VyY2FzZSBsZXR0ZXJzIQ0KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKw0KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMgVmFyaWFibGVzLCB1c2VkIHRvIG1ha2UgdGhlIHJ1bGVzIG1vcmUgY29tcHJlaGVuc2libGUNCisjIGFuZCBmb3IgY29uZGl0aW9uYWxzLg0KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKw0KKyMjIyAkcXVvdGU9J1wiJzsNCisNCisjIExhdGluIExldHRlcnMNCisNCisjIyMgJEVfTUFDUk9OPcSSOw0KKyMjIyAkZV9tYWNyb249xJM7DQorIyMjICRPX01BQ1JPTj3FjDsNCisjIyMgJG9fbWFjcm9uPcWNOw0KKyMjIyAkWV9VTUxBVVQ9xbg7DQorIyMjICR5X3VtbGF1dD3DvzsNCisNCisjISAvLyB3aXRoIHJlYWwgYWNjZW50cy4NCisjISArICIkRV9NQUNST05fQUNVVEU9xJLMgTsiDQorIyEgKyAiJGVfbWFjcm9uX2FjdXRlPcSTzIE7Ig0KKyMhICsgIiRPX01BQ1JPTl9BQ1VURT3FjMyBOyINCisjISArICIkb19tYWNyb25fYWN1dGU9xY3MgTsiDQorIyEgKyAiJHlfdW1sYXV0X2FjdXRlPcO/zIE7Ig0KKyMhICsgIiR1MDBlZl9hY3V0ZT3Dr8yBOyINCisjISArICIkdTAwZmNfYWN1dGU9w7zMgTsiDQorIyEgLy8NCisNCisjIHNpbmdsZSBsZXR0ZXIgZXF1aXZhbGVudHMNCisNCisjIyMgJEVfTUFDUk9OX0FDVVRFPcOKOw0KKyMjIyAkZV9tYWNyb25fYWN1dGU9w6o7DQorIyMjICRPX01BQ1JPTl9BQ1VURT3DlDsNCisjIyMgJG9fbWFjcm9uX2FjdXRlPcO0Ow0KKyMjIyAkeV91bWxhdXRfYWN1dGU9xbc7DQorIyMjICR1MDBlZl9hY3V0ZT3DrjsNCisjIyMgJHUwMGZjX2FjdXRlPcO7Ow0KKw0KKyMgR3JlZWsgTGV0dGVycw0KKw0KKyMjIyAkQUxQSEE9zpE7DQorIyMjICRCRVRBPc6SOw0KKyMjIyAkR0FNTUE9zpM7DQorIyMjICRERUxUQT3OlDsNCisjIyMgJEVQU0lMT049zpU7DQorIyMjICRaRVRBPc6WOw0KKyMjIyAkRVRBPc6XOw0KKyMjIyAkVEhFVEE9zpg7DQorIyMjICRJT1RBPc6ZOw0KKyMjIyAkS0FQUEE9zpo7DQorIyMjICRMQU1CREE9zps7DQorIyMjICRNVT3OnDsNCisjIyMgJE5VPc6dOw0KKyMjIyAkWEk9zp47DQorIyMjICRPTUlDUk9OPc6fOw0KKyMjIyAkUEk9zqA7DQorIyMjICRSSE89zqE7DQorIyMjICRTSUdNQT3OozsNCisjIyMgJFRBVT3OpDsNCisjIyMgJFlQU0lMT049zqU7DQorIyMjICRQSEk9zqY7DQorIyMjICRDSEk9zqc7DQorIyMjICRQU0k9zqg7DQorIyMjICRPTUVHQT3OqTsNCisNCisjIyMgJEFMUEhBMj3OhjsNCisjIyMgJEVQU0lMT04yPc6IOw0KKyMjIyAkRVRBMj3OiTsNCisjIyMgJElPVEEyPc6KOw0KKyMjIyAkT01JQ1JPTjI9zow7DQorIyMjICRZUFNJTE9OMj3OjjsNCisjIyMgJE9NRUdBMj3OjzsNCisjIyMgJElPVEFfRElBRVJFU0lTPc6qOw0KKyMjIyAkWVBTSUxPTl9ESUFFUkVTSVM9zqs7DQorDQorIyMjICRhbHBoYT3OsTsNCisjIyMgJGJldGE9zrI7DQorIyMjICRnYW1tYT3OszsNCisjIyMgJGRlbHRhPc60Ow0KKyMjIyAkZXBzaWxvbj3OtTsNCisjIyMgJHpldGE9zrY7DQorIyMjICRldGE9zrc7DQorIyMjICR0aGV0YT3OuDsNCisjIyMgJGlvdGE9zrk7DQorIyMjICRrYXBwYT3OujsNCisjIyMgJGxhbWJkYT3OuzsNCisjIyMgJG11Pc68Ow0KKyMjIyAkbnU9zr07DQorIyMjICR4aT3OvjsNCisjIyMgJG9taWNyb249zr87DQorIyMjICRwaT3PgDsNCisjIyMgJHJobz3PgTsNCisjIyMgJHNpZ21hPc+DOw0KKyMjIyAkdGF1Pc+EOw0KKyMjIyAkeXBzaWxvbj3PhTsNCisjIyMgJHBoaT3PhjsNCisjIyMgJGNoaT3PhzsNCisjIyMgJHBzaT3PiDsNCisjIyMgJG9tZWdhPc+JOw0KKw0KKyNmb3Jtcw0KKw0KKyMjIyAkYWxwaGEyPc6sOw0KKyMjIyAkZXBzaWxvbjI9zq07DQorIyMjICRldGEyPc6uOw0KKyMjIyAkaW90YTI9zq87DQorIyMjICRvbWljcm9uMj3PjDsNCisjIyMgJHlwc2lsb24yPc+NOw0KKyMjIyAkb21lZ2EyPc+OOw0KKyMjIyAkaW90YV9kaWFlcmVzaXM9z4o7DQorIyMjICR5cHNpbG9uX2RpYWVyZXNpcz3PizsNCisjIyMgJGlvdGFfZGlhZXJlc2lzMj3OkDsNCisjIyMgJHlwc2lsb25fZGlhZXJlc2lzMj3OsDsNCisjIyMgJHNpZ21hMj3PgjsNCisNCisjIFZhcmlhYmxlcyBmb3IgY29uZGl0aW9uYWwgbWFwcGluZ3MNCisNCisjIFVzZSBsb3dlcmNhc2UgZm9yIGFsbCB2YXJpYWJsZSBuYW1lcywgdG8gYWxsb3cgY3V0L3Bhc3RlIGJlbG93Lg0KKw0KKyRsZXR0ZXI9W35bOkx1Ol1bOkxsOl1dOw0KKyRsb3dlcj1bWzpMbDpdXTsNCiskc29mdGVuZXI9W2VpeUVJWV07DQorJHZvd2VsPVthZWlvdUFFSU9VIFwNCisgzpHOlc6XzpnOn86lzqkgXA0KKyDOhs6IzonOis6Mzo7OjyBcDQorIM6qzqsgXA0KKyDOsc61zrfOuc6/z4XPiSBcDQorIM6szq3Ors6vz4zPjc+OIFwNCisgz4rPiyBcDQorIM6QzrAgXA0KKyBdOw0KKyRuX2dhbW1hPVtHS1hDZ2t4Y107DQorJGdhbW1hX249W86TzprOp86ezrPOus+Hzr5dOw0KKyRwcD1bUHBdOw0KKw0KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMgUnVsZXMNCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisjIFRoZSBmb2xsb3dpbmcgYXJlIHNwZWNpYWwgdGl0bGVjYXNlcywgYW5kIHNob3VsZA0KKyMgbm90IGJlIGNvcGllZCB3aGVuIGR1cGxpY2F0aW5nIHRoZSBsb3dlcmNhc2UNCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisNCitUaCA8PiDOmH0kbG93ZXI7DQorUGggPD4gzqZ9JGxvd2VyOw0KK0NoIDw+IM6nfSRsb3dlcjsNCisjbWFza2VkOiArICJQczzOpn0kbG93ZXI7Ig0KKw0KKyMgQmVjYXVzZSB0aGVyZSBpcyBubyB1cHBlcmNhc2UgZm9ybXMgZm9yIGZpbmFsIHNpZ21hLA0KKyMgd2UgaGFkIHRvIG1vdmUgYWxsIHRoZSBzaWdtYSBydWxlcyB1cCBoZXJlLg0KKw0KKyMgUmVtZW1iZXIgdG8gaW5zZXJ0ICcgdG8gcHJlc2VydmUgcm91bmQgdHJpcCwgZm9yIGRvdWJsZSBsZXR0ZXJzDQorIyBkb24ndCBuZWVkIHRvIGRvIHRoaXMgZm9yIHRoZSBkaWdyYXBocyB3aXRoIGgsDQorIyBzaW5jZSBpdCBpcyBub3QgY3JlYXRlZCB3aGVuIG1hcHBpbmcgYmFjayBmcm9tIGdyZWVrDQorDQorIyB1c2Ugc3BlY2lhbCBmb3JtIGZvciBzDQorDQorJydTIDw+ICRwcHvOozsgIyBoYW5kbGUgUFMNCitTIDw+IM6jOw0KKw0KKyMgVGhlIGZvbGxvd2luZyBhcmUgYSBiaXQgdHJpY2t5LiAncycgdGFrZXMgdHdvIGZvcm1zIGluIGdyZWVrDQorIyBmaW5hbCBvciBub24gZmluYWwuDQorIyBXZSB1c2UgfnMgdG8gcmVwcmVzZW50IHRoZSBhYm5vcm1hbCBmb3JtOiBmaW5hbCBiZWZvcmUgbGV0dGVyDQorIyBvciBub24tZmluYWwgYmVmb3JlIG5vbi1sZXR0ZXIuDQorIyBXZSB1c2UgJ3MgdG8gc2VwYXJhdGUgcCBhbmQgcyAob3RoZXJ3aXNlIHBzIGlzIG9uZSBsZXR0ZXIpDQorIyBzbywgd2UgYnJlYWsgb3V0IHRoZSBmb2xsb3dpbmcgZm9ybXM6DQorDQorJydzIDwgJHBwe8+DfSRsZXR0ZXI7DQorcyA8ICAgICAgICAgIM+DfSRsZXR0ZXI7DQorJ34ncyA8ICAgICAgICAgz4M7DQorDQorJ34ncyA8ICAgICAgICAgz4J9JGxldHRlcjsNCisnJ3MgPCAkcHB7z4I7DQorcyA8ICAgICAgICAgIM+COw0KKw0KKyd+J3MgfSRsZXR0ZXI+z4I7DQorJ34ncyAgICAgICAgICAgICA+IM+DOw0KKycncyB9JGxldHRlcj7PgzsNCisnJ3MgICAgICAgICAgICA+IM+COw0KK3MgfSRsZXR0ZXI+z4M7DQorcyAgICAgICAgICAgICAgPiDPgjsNCisNCisjIGJlY2F1c2UgdGhlcmUgYXJlIG5vIHVwcGVyY2FzZSBmb3JtcywgaGFkIHRvIG1vdmUgdGhlc2UgdXAgdG9vLg0KKw0KK2knXCInJ2AnPs6QOw0KK3knXCInJ2AnPs6wOw0KKw0KK8OuPD7OkDsNCivDuzw+JHZvd2Vse86wOw0KK8W3PD7OsDsNCisNCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisjIFVwcGVyY2FzZSBGb3Jtcy4NCisjIFRvIG1ha2UgbG93ZXJjYXNlIGZvcm1zLCBqdXN0IGNvcHkgYW5kIGxvd2VyY2FzZSBiZWxvdw0KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKw0KKyMgVHlwaW5nIHZhcmlhbnRzLCBpbiBjYXNlIHRoZSBrZXlib2FyZCBkb2Vzbid0IGhhdmUgYWNjZW50cw0KKw0KKydBYCc+zoY7DQorJ0VgJz7OiDsNCisnRUVgJz7OiTsNCitFRT7OlzsNCisnSWAnPs6KOw0KKydPYCc+zow7DQorJ09PYCc+zo87DQorT08+zqk7DQorSSdcIic+zqo7DQorWSdcIic+zqs7DQorDQorIyBCYXNpYyBMZXR0ZXJzDQorDQorQTw+zpE7DQorw4E8Ps6GOw0KK0I8Ps6SOw0KK04gfSRuX2dhbW1hPD7Ok30kZ2FtbWFfbjsNCitHPD7OkzsNCitEPD7OlDsNCisnJ0UgPD4gW0VlXXvOlTsgIyBoYW5kbGUgRUUNCitFPD7OlTsNCivDiTw+zog7DQorWjw+zpY7DQorw4o8Ps6JOw0KK8SSPD7OlzsNCitUSDw+zpg7DQorSTw+zpk7DQorw408Ps6KOw0KK8OPPD7OqjsNCitLPD7OmjsNCitMPD7OmzsNCitNPD7OnDsNCitOJycgPD4gzp19JGdhbW1hX247DQorTjw+zp07DQorWDw+zp47DQorJydPIDw+IFtPb117IM6fOyAjIGhhbmRsZSBPTw0KK088Ps6fOw0KK8OTPD7OjDsNCitQSDw+zqY7ICMgbmVlZHMgb3JkZXJpbmcgYmVmb3JlIFANCitQUzw+zqg7ICMgbmVlZHMgb3JkZXJpbmcgYmVmb3JlIFANCitQPD7OoDsNCitSPD7OoTsNCitUPD7OpDsNCitVIDw+ICR2b3dlbHvOpTsNCivDmiA8PiAkdm93ZWx7zo47DQorw5wgPD4gJHZvd2Vse86rOw0KK1k8Ps6lOw0KK8OdPD7OjjsNCivFuDw+zqs7DQorQ0g8Ps6nOw0KK8OUPD7OjzsNCivFjDw+zqk7DQorDQorIyBFeHRyYSBFbmdsaXNoIExldHRlcnMuIE1hcHBlZCBmb3IgY29tcGxldGVuZXNzDQorDQorQ30kc29mdGVuZXI+fFM7DQorQz58SzsNCitGPnxQSDsNCitIPnxDSDsNCitKPnxJOw0KK1E+fEs7DQorVj58VTsNCitXPnxVOw0KKw0KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyMgTG93ZXJjYXNlIEZvcm1zLiBKdXN0IGNvcHkgYWJvdmUgYW5kIGxvd2VyY2FzZQ0KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKw0KKyMgdHlwaW5nIHZhcmlhbnRzLCBpbiBjYXNlIHRoZSBrZXlib2FyZCBkb2Vzbid0IGhhdmUgYWNjZW50cw0KKw0KKydhYCc+zqw7DQorJ2VgJz7OrTsNCisnZWVgJz7OrjsNCitlZT7OtzsNCisnaWAnPs6vOw0KKydvYCc+z4w7DQorJ29vYCc+z447DQorb28+z4k7DQoraSdcIic+z4o7DQoreSdcIic+z4s7DQorDQorIyBiYXNpYyBsZXR0ZXJzDQorDQorYTw+zrE7DQorw6E8Ps6sOw0KK2I8Ps6yOw0KK24gfSRuX2dhbW1hPD7Os30kZ2FtbWFfbjsNCitnPD7OszsNCitkPD7OtDsNCisnJ2UgPD4gW0VlXXvOtTsgIyBoYW5kbGUgRUUNCitlPD7OtTsNCivDqTw+zq07DQorejw+zrY7DQorw6o8Ps6uOw0KK8STPD7OtzsNCit0aDw+zrg7DQoraTw+zrk7DQorw608Ps6vOw0KK8OvPD7PijsNCitrPD7OujsNCitsPD7OuzsNCittPD7OvDsNCituJycgPD4gzr19JGdhbW1hX247DQorbjw+zr07DQoreDw+zr47DQorJydvIDw+IFtPb117IM6/OyAjIGhhbmRsZSBPTw0KK288Ps6/Ow0KK8OzPD7PjDsNCitwaDw+z4Y7ICMgbmVlZHMgb3JkZXJpbmcgYmVmb3JlIHANCitwczw+z4g7ICMgbmVlZHMgb3JkZXJpbmcgYmVmb3JlIHANCitwPD7PgDsNCityPD7PgTsNCit0PD7PhDsNCit1IDw+ICR2b3dlbHvPhTsNCivDuiA8PiAkdm93ZWx7z407DQorw7wgPD4gJHZvd2Vse8+LOw0KK3k8Ps+FOw0KK8O9PD7PjTsNCivDvzw+z4s7DQorY2g8Ps+HOw0KK8O0PD7PjjsNCivFjTw+z4k7DQorDQorIyBleHRyYSBlbmdsaXNoIGxldHRlcnMuIG1hcHBlZCBmb3IgY29tcGxldGVuZXNzDQorDQorY30kc29mdGVuZXI+fHM7DQorYz58azsNCitmPnxwaDsNCitoPnxjaDsNCitqPnxpOw0KK3E+fGs7DQordj58dTsNCit3Pnx1Ow0KKw0KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQorIyBOb3JtYWwgZmluYWwgcnVsZTogcmVtb3ZlICcNCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKw0KKyMrICInJz47Ig0KKw0KKyMgZW9mDQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfTGF0aW5fSGVicmV3LnV0ZjgudHh0IGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfTGF0aW5fSGVicmV3LnV0ZjgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjVmYzdjODkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9MYXRpbl9IZWJyZXcudXRmOC50eHQKQEAgLTAsMCArMSwyMTYgQEAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMNCisjIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLg0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgRGF0ZTogVHVlIEphbiAyMyAxMjo0MjowNiAyMDAxDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorIyBMYXRpbi1IZWJyZXcNCisNCisNCisjIFZhcmlhYmxlIG5hbWVzLCBkZXJpdmVkIGZyb20gdGhlIFVuaWNvZGUgbmFtZXMuDQorIyMjICRQT0lOVF9TSEVWQT3WsDsNCisjIyMgJFBPSU5UX0hBVEFGX1NFR09MPdaxOw0KKyMjIyAkUE9JTlRfSEFUQUZfUEFUQUg91rI7DQorIyMjICRQT0lOVF9IQVRBRl9RQU1BVFM91rM7DQorIyMjICRQT0lOVF9ISVJJUT3WtDsNCisjIyMgJFBPSU5UX1RTRVJFPda1Ow0KKyMjIyAkUE9JTlRfU0VHT0w91rY7DQorIyMjICRQT0lOVF9QQVRBSD3WtzsNCisjIyMgJFBPSU5UX1FBTUFUUz3WuDsNCisjIyMgJFBPSU5UX0hPTEFNPda5Ow0KKyMjIyAkUE9JTlRfUVVCVVRTPda7Ow0KKyMjIyAkUE9JTlRfREFHRVNIX09SX01BUElRPda8Ow0KKyMjIyAkUE9JTlRfTUVURUc91r07DQorIyMjICRQVU5DVFVBVElPTl9NQVFBRj3WvjsNCisjIyMgJFBPSU5UX1JBRkU91r87DQorIyMjICRQVU5DVFVBVElPTl9QQVNFUT3XgDsNCisjIyMgJFBPSU5UX1NISU5fRE9UPdeBOw0KKyMjIyAkUE9JTlRfU0lOX0RPVD3XgjsNCisjIyMgJFBVTkNUVUFUSU9OX1NPRl9QQVNVUT3XgzsNCisjIyMgJEFMRUY915A7DQorIyMjICRCRVQ915E7DQorIyMjICRHSU1FTD3XkjsNCisjIyMgJERBTEVUPdeTOw0KKyMjIyAkSEU915Q7DQorIyMjICRWQVY915U7DQorIyMjICRaQVlJTj3XljsNCisjIyMgJEhFVD3XlzsNCisjIyMgJFRFVD3XmDsNCisjIyMgJFlPRD3XmTsNCisjIyMgJEZJTkFMX0tBRj3XmjsNCisjIyMgJEtBRj3XmzsNCisjIyMgJExBTUVEPdecOw0KKyMjIyAkRklOQUxfTUVNPdedOw0KKyMjIyAkTUVNPdeeOw0KKyMjIyAkRklOQUxfTlVOPdefOw0KKyMjIyAkTlVOPdegOw0KKyMjIyAkU0FNRUtIPdehOw0KKyMjIyAkQVlJTj3XojsNCisjIyMgJEZJTkFMX1BFPdejOw0KKyMjIyAkUEU916Q7DQorIyMjICRGSU5BTF9UU0FEST3XpTsNCisjIyMgJFRTQURJPdemOw0KKyMjIyAkUU9GPdenOw0KKyMjIyAkUkVTSD3XqDsNCisjIyMgJFNISU4916k7DQorIyMjICRUQVY916o7DQorIyMjICRZSURESVNIX0RPVUJMRV9WQVY917A7DQorIyMjICRZSURESVNIX1ZBVl9ZT0Q917E7DQorIyMjICRZSURESVNIX0RPVUJMRV9ZT0Q917I7DQorIyMjICRQVU5DVFVBVElPTl9HRVJFU0g917M7DQorIyMjICRQVU5DVFVBVElPTl9HRVJTSEFZSU0917Q7DQorDQorJGxldHRlcj1bYS16QS1aXTsNCiskc29mdHZvd2VsPVtlaXlFSVldOw0KKyR2b3dlbGxpa2U9W9eQ16LXmdeVXTsNCiskaGVicmV3PVvWkC3Xv107ICMgdGhlIHdob2xlIGJsb2NrIC1saXUNCisNCisjIFtXaHkgaXMgdGhpcyBhIHNwZWNpYWwgY2FzZT8gLWxpdV0NCitrJydoIDw+INebINeUIDsNCisNCisjIE1hcmsgbm9uLWZpbmFsIGZvcm1zIGluIGZpbmFsIHBvc2l0aW9uIGFzIHh+IC1saXUNCitrICAgIDwgINebICAgfSAkaGVicmV3IDsNCittICAgIDwgINeeICAgfSAkaGVicmV3IDsNCituICAgIDwgINegICAgfSAkaGVicmV3IDsNCitwICAgIDwgINekICAgIH0gJGhlYnJldyA7DQordHMgICA8ICDXpiB9ICRoZWJyZXcgOw0KK2snficgPD4g15sgICA7DQorbSd+JyA8PiDXniAgIDsNCituJ34nIDw+INegICAgOw0KK3AnficgPD4g16QgICAgOw0KK3RzJ34nPD4g16YgOw0KKw0KKyMgTWFyayBmaW5hbCBmb3JtcyBpbiBub24tZmluYWwgcG9zaXRpb24gYXMgeF4gLWxpdQ0KK2snXicgPD4g15ogICB9ICRoZWJyZXcgOw0KK20nXicgPD4g150gICB9ICRoZWJyZXcgOw0KK24nXicgPD4g158gICB9ICRoZWJyZXcgOw0KK3AnXicgPD4g16MgICAgfSAkaGVicmV3IDsNCit0cydeJzw+INelIH0gJGhlYnJldyA7DQorayAgICA8ICDXmjsNCittICAgIDwgINedOw0KK24gICAgPCAg1587DQorcCAgICA8ICDXozsNCit0cyAgIDwgINelOw0KKw0KKyMgTWFpbiBydWxlcw0KK2E8PteQOw0KK0E+15A7DQorDQorYjw+15E7DQorQj7XkTsNCisNCitjfSRzb2Z0dm93ZWw+16E7DQorQ30kc29mdHZvd2VsPtehOw0KK2N9JGxldHRlcj7XmzsNCitDfSRsZXR0ZXI+15s7DQorYz7XmjsNCitDPteaOw0KKw0KK2Q8PteTOw0KK0Q+15M7DQorDQorZTw+16I7DQorRT7XojsNCisNCitmfSRsZXR0ZXI+16Q7DQorZj7XozsNCitGfSRsZXR0ZXI+16Q7DQorRj7XozsNCisNCitnPD7XkjsNCitHPteSOw0KKw0KK2g8PteUOw0KK0g+15Q7DQorDQoraT7XmTsNCitJPteZOw0KKw0KK2o+15PXqTsNCitKPteT16k7DQorDQora2g8PteXOw0KK2tIPteXOw0KK0toPteXOw0KK0tIPteXOw0KK2t9JGxldHRlcj7XmzsNCitLfSRsZXR0ZXI+15s7DQoraz7XmjsNCitLPteaOw0KKw0KK2w8PtecOw0KK0w+15w7DQorDQorbX0kbGV0dGVyPteeOw0KK20+1507DQorTX0kbGV0dGVyPteeOw0KK00+1507DQorDQorbn0kbGV0dGVyPtegOw0KK24+1587DQorTn0kbGV0dGVyPtegOw0KK04+1587DQorDQorbz7XlTsNCitPPteVOw0KKw0KK3B9JGxldHRlcj7XpDsNCitwPtejOw0KK1B9JGxldHRlcj7XpDsNCitQPtejOw0KKw0KK3E8PtenOw0KK1E+16c7DQorDQorcjw+16g7DQorUj7XqDsNCisNCitzaDw+16k7DQorc0g+16k7DQorU2g+16k7DQorU0g+16k7DQorcycnPNehfdeUOw0KK3M8PtehOw0KK1M+16E7DQorDQordGg8PteqOw0KK3RIPteqOw0KK1RoPteqOw0KK1RIPteqOw0KK3RTfSRsZXR0ZXI+16Y7DQordHN9JGxldHRlcj7XpjsNCitUc30kbGV0dGVyPtemOw0KK1RTfSRsZXR0ZXI+16Y7DQordFM+16U7DQordHM+16U7DQorVHM+16U7DQorVFM+16U7DQordCcnPNeYfVvXlCDXoSDXqV07DQordDw+15g7DQorVD7XmDsNCisNCit2PNeVfSR2b3dlbGxpa2U7DQordTw+15U7DQorVT7XlTsNCisNCit2PteVOw0KK1Y+15U7DQorDQordz7XlTsNCitXPteVOw0KKw0KK3g+15vXoTsNCitYPteb16E7DQorDQoreTw+15k7DQorWT7XmTsNCisNCit6PD7XljsNCitaPteWOw0KKw0KKyMgRGVsZXRlIHN0cmF5IGFwb3N0cm9waGVzDQorJyc+Ow0KKzwnJzsNCisNCisjIGVvZg0KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0xhdGluX0phbW8udXRmOC50eHQgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9MYXRpbl9KYW1vLnV0ZjgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmJiY2JiOGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9MYXRpbl9KYW1vLnV0ZjgudHh0CkBAIC0wLDAgKzEsNTExIEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzDQorIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCisjIExhdGluLUphbW8NCisNCisjIFRyYW5zbGl0ZXJhdGlvbiBmcm9tIExhdGluIGNoYXJhY3RlcnMgdG8gS29yZWFuIHNjcmlwdCBpcyBkb25lIGluDQorIyB0d28gc3RlcHM6IExhdGluIHRvIEphbW8sIHRoZW4gSmFtbyB0byBIYW5ndWwuICBUaGUgSmFtby1IYW5ndWwNCisjIHRyYW5zbGl0ZXJhdGlvbiBpcyBkb25lIGFsZ29yaXRobWljYWxseSBmb2xsb3dpbmcgVW5pY29kZSAzLjANCisjIHNlY3Rpb24gMy4xMS4gIFRoaXMgZmlsZSBpbXBsZW1lbnRzIHRoZSBMYXRpbiB0byBKYW1vDQorIyB0cmFuc2xpdGVyYXRpb24gdXNpbmcgcnVsZXMuDQorDQorIyBKYW1vIG9jY3VweSB0aGUgYmxvY2sgMTEwMC0xMUZGLiAgV2l0aGluIHRoaXMgYmxvY2sgdGhlcmUgYXJlIHRocmVlDQorIyBncm91cHMgb2YgY2hhcmFjdGVyczogaW5pdGlhbCBjb25zb25hbnRzIG9yIGNob3Nlb25nIChJKSwgbWVkaWFsDQorIyB2b3dlbHMgb3IganVuZ3Nlb25nIChNKSwgYW5kIHRyYWlsaW5nIGNvbnNvbmFudHMgb3Igam9uZ3Nlb25nIChGKS4NCisjIFN0YW5kYXJkIEtvcmVhbiBzeWxsYWJsZXMgYXJlIG9mIHRoZSBmb3JtIEkrTStGKi4NCisNCisjIFNlY3Rpb24gMy4xMSBkZXNjcmliZXMgdGhlIHVzZSBvZiAnZmlsbGVyJyBqYW1vIHRvIGNvbnZlcnQNCisjIG5vbnN0YW5kYXJkIHN5bGxhYmxlcyB0byBzdGFuZGFyZCBmb3JtOiB0aGUgY2hvc2VvbmcgZmlsbGVyIDExNUYgYW5kDQorIyB0aGUganVuc2VvbmcgZmlsbGVyIDExNjAuICBJbiB0aGlzIHRyYW5zbGl0ZXJhdG9yLCB3ZSB3aWxsIG5vdCB1c2UNCisjIDExNUYgb3IgMTE2MC4NCisNCisjIFdlIHdpbGwsIGhvd2V2ZXIsIGluc2VydCB0d28gJ251bGwnIGphbW8gdG8gbWFrZSBmb3JlaWduIHdvcmRzDQorIyBjb25mb3JtIHRvIEtvcmVhbiBzeWxsYWJsZSBzdHJ1Y3R1cmUuICBUaGVzZSBhcmUgdGhlIG51bGwgaW5pdGlhbA0KKyMgY29uc29uYW50IDExMEIgKElFVU5HKSBhbmQgdGhlIG51bGwgdm93ZWwgMTE3MyAoRVUpLiAgSW4gTGF0aW4gdGV4dCwNCisjIHdlIHdpbGwgdXNlIHRoZSBoeXBoZW4gaW4gb3JkZXIgdG8gZGlzYW1iaWd1YXRlIHN0cmluZ3MsDQorIyBlLmcuICJrYW4tZ2dhbiIgKGluaXRpYWwgR0cpIHZzLiAia2FuZ2dhbiIgKGZpbmFsIE5HICsgaW5pdGlhbCBHKS4NCisNCisjIFdlIHdpbGwgbm90IHVzZSBhbGwgb2YgdGhlIGNoYXJhY3RlcnMgaW4gdGhlIGphbW8gYmxvY2suICBXZSB3aWxsDQorIyBvbmx5IHVzZSB0aGUgMTkgaW5pdGlhbHMsIDIxIG1lZGlhbHMsIGFuZCAyNyBmaW5hbHMgcG9zc2Vzc2luZyBhDQorIyBqYW1vIHNob3J0IG5hbWUgYXMgZGVmaW5lZCBpbiBzZWN0aW9uIDQuNCBvZiB0aGUgVW5pY29kZSBib29rLg0KKw0KKyMgUnVsZXMgb2YgdGh1bWIuICBUaGVzZSBndWlkZWxpbmVzIHByb3ZpZGUgdGhlIGJhc2ljIGZyYW1ld29yaw0KKyMgZm9yIHRoZSBydWxlcy4gIFRoZXkgYXJlIHBocmFzZWQgaW4gdGVybXMgb2YgTGF0aW4tSmFtbyB0cmFuc2xpdGVyYXRpb24uDQorIyBUaGUgSmFtby1MYXRpbiBydWxlcyBkZXJpdmUgZnJvbSB0aGVzZSwgc2luY2UgdGhlIEphbW8tTGF0aW4gcnVsZXMgYXJlDQorIyBqdXN0IGNvbnRleHQtZnJlZSB0cmFuc2xpdGVyYXRpb24gb2YgamFtbyB0byBjb3JyZXNwb25kaW5nIHNob3J0IG5hbWVzLA0KKyMgd2l0aCB0aGUgYWRkaXRpb24gb2YgaHlwaGVucyB0byBtYWludGFpbiByb3VuZC10cmlwIGludGVncml0eQ0KKyMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIExhdGluLUphbW8gcnVsZXMuDQorDQorIyBBIHNlcXVlbmNlIG9mIHZvd2VsczoNCisjIC0gVGFrZSB0aGUgbG9uZ2VzdCBzZXF1ZW5jZSB5b3UgY2FuLiBJZiB0aGVyZSBhcmUgdG9vIG1hbnksIG9yIHlvdSBkb24ndA0KKyMgICBoYXZlIGEgc3RhcnRpbmcgY29uc29uYW50LCBpbnRyb2R1Y2UgYSAxMTBCIG5lY2Vzc2FyeS4NCisNCisjIEEgc2VxdWVuY2Ugb2YgY29uc29uYW50cy4NCisjIC0gRmlyc3Qgam9pbiB0aGUgZG91YmxlIGNvbnNvbmFudHM6IEcgKyBHIC0+IEdHDQorIyAtIEluIHRoZSByZW1haW5pbmcgbGlzdCwNCisjIC0tIElmIHRoZXJlIGlzIG5vIHByZWNlZGluZyB2b3dlbCwgdGFrZSB0aGUgZmlyc3QgY29uc29uYW50LCBhbmQgaW5zZXJ0IEVVDQorIyAgICBhZnRlciBpdC4gQ29udGludWUgd2l0aCB0aGUgcmVzdCBvZiB0aGUgY29uc29uYW50cy4NCisjIC0tIElmIHRoZXJlIGlzIG9uZSBjb25zb25hbnQsIGF0dGFjaCB0byB0aGUgZm9sbG93aW5nIHZvd2VsDQorIyAtLSBJZiB0aGVyZSBhcmUgdHdvIGNvbnNvbmFudHMgYW5kIGEgZm9sbG93aW5nIHZvd2VsLCBhdHRhY2ggb25lIHRvIHRoZQ0KKyMgICAgcHJlY2VlZGluZyB2b3dlbCwgYW5kIG9uZSB0byB0aGUgZm9sbG93aW5nIHZvd2VsLg0KKyMgLS0gSWYgdGhlcmUgYXJlIG1vcmUgdGhhbiB0d28gY29uc29uYW50cywgam9pbiB0aGUgZmlyc3QgdHdvIHRvZ2V0aGVyIGlmIHlvdQ0KKyMgICAgY2FuOiBMICsgRyA9PiBMRw0KKyMgLS0gSWYgeW91IHN0aWxsIGVuZCB1cCB3aXRoIG1vcmUgdGhhbiAyIGNvbnNvbmFudHMsIGluc2VydCBFVSBhZnRlciB0aGUNCisjICAgIGZpcnN0IG9uZSwgYW5kIGNvbnRpbnVlIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGNvbnNvbmFudHMuDQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIFZhcmlhYmxlcw0KKw0KKyMgU29tZSBsYXRpbiBjb25zb25hbnRzIG9yIGNvbnNvbmFudCBwYWlycyBvbmx5IG9jY3VyIGFzIGluaXRpYWxzLCBhbmQNCisjIHNvbWUgb25seSBhcyBmaW5hbHMsIGJ1dCBzb21lIG9jY3VyIGFzIGJvdGguICBUaGlzIG1ha2VzIHNvbWUgamFtbw0KKyMgY29uc29uYW50cyBhbWJpZ3VvdXMgd2hlbiB0cmFuc2xpdGVyYXRlZCBpbnRvIGxhdGluLg0KKyMgICBJbml0aWFsIG9ubHk6IElFVU5HIEJCIEREIEpKIFINCisjICAgRmluYWwgb25seTogQlMgR1MgTCBMQiBMRyBMSCBMTSBMUCBMUyBMVCBORyBOSCBOSg0KKyMgICBJbml0aWFsIGFuZCBGaW5hbDogQiBDIEQgRyBHRyBIIEogSyBNIE4gUCBTIFNTIFQNCisNCisgICRHaSA9IFx1MTEwMDsNCisgICRHR2kgPSBcdTExMDE7DQorICAkTmkgPSBcdTExMDI7DQorICAkRGkgPSBcdTExMDM7DQorICAkREQgPSBcdTExMDQ7DQorICAkUiA9IFx1MTEwNTsNCisgICRNaSA9IFx1MTEwNjsNCisgICRCaSA9IFx1MTEwNzsNCisgICRCQiA9IFx1MTEwODsNCisgICRTaSA9IFx1MTEwOTsNCisgICRTU2kgPSBcdTExMEE7DQorICAkSUVVTkcgPSBcdTExMEI7ICMgbnVsbCBpbml0aWFsLCBpbnNlcnRlZCBkdXJpbmcgTGF0aW4tSmFtbw0KKyAgJEppID0gXHUxMTBDOw0KKyAgJEpKID0gXHUxMTBEOw0KKyAgJENpID0gXHUxMTBFOw0KKyAgJEtpID0gXHUxMTBGOw0KKyAgJFRpID0gXHUxMTEwOw0KKyAgJFBpID0gXHUxMTExOw0KKyAgJEhpID0gXHUxMTEyOw0KKw0KKyAgJEEgPSBcdTExNjE7DQorICAkQUUgPSBcdTExNjI7DQorICAkWUEgPSBcdTExNjM7DQorICAkWUFFID0gXHUxMTY0Ow0KKyAgJEVPID0gXHUxMTY1Ow0KKyAgJEUgPSBcdTExNjY7DQorICAkWUVPID0gXHUxMTY3Ow0KKyAgJFlFID0gXHUxMTY4Ow0KKyAgJE8gPSBcdTExNjk7DQorICAkV0EgPSBcdTExNkE7DQorICAkV0FFID0gXHUxMTZCOw0KKyAgJE9FID0gXHUxMTZDOw0KKyAgJFlPID0gXHUxMTZEOw0KKyAgJFUgPSBcdTExNkU7DQorICAkV0VPID0gXHUxMTZGOw0KKyAgJFdFID0gXHUxMTcwOw0KKyAgJFdJID0gXHUxMTcxOw0KKyAgJFlVID0gXHUxMTcyOw0KKyAgJEVVID0gXHUxMTczOyAjIG51bGwgbWVkaWFsLCBpbnNlcnRlZCBkdXJpbmcgTGF0aW4tSmFtbw0KKyAgJFlJID0gXHUxMTc0Ow0KKyAgJEkgPSBcdTExNzU7DQorDQorICAkR2YgPSBcdTExQTg7DQorICAkR0dmID0gXHUxMUE5Ow0KKyAgJEdTID0gXHUxMUFBOw0KKyAgJE5mID0gXHUxMUFCOw0KKyAgJE5KID0gXHUxMUFDOw0KKyAgJE5IID0gXHUxMUFEOw0KKyAgJERmID0gXHUxMUFFOw0KKyAgJEwgPSBcdTExQUY7DQorICAkTEcgPSBcdTExQjA7DQorICAkTE0gPSBcdTExQjE7DQorICAkTEIgPSBcdTExQjI7DQorICAkTFMgPSBcdTExQjM7DQorICAkTFQgPSBcdTExQjQ7DQorICAkTFAgPSBcdTExQjU7DQorICAkTEggPSBcdTExQjY7DQorICAkTWYgPSBcdTExQjc7DQorICAkQmYgPSBcdTExQjg7DQorICAkQlMgPSBcdTExQjk7DQorICAkU2YgPSBcdTExQkE7DQorICAkU1NmID0gXHUxMUJCOw0KKyAgJE5HID0gXHUxMUJDOw0KKyAgJEpmID0gXHUxMUJEOw0KKyAgJENmID0gXHUxMUJFOw0KKyAgJEtmID0gXHUxMUJGOw0KKyAgJFRmID0gXHUxMUMwOw0KKyAgJFBmID0gXHUxMUMxOw0KKyAgJEhmID0gXHUxMUMyOw0KKyAgDQorICAkamFtb0luaXRpYWwgPSBbXHUxMTAwLVx1MTExMl07DQorDQorICAkamFtb01lZGlhbCA9IFtcdTExNjEtXHUxMTc1XTsNCisNCisgICRsYXRpbkluaXRpYWwgPSBbYmNkZ2hqa21ucHJzdF07DQorDQorICAjIEFueSBjaGFyYWN0ZXIgaW4gdGhlIGxhdGluIHRyYW5zbGl0ZXJhdGlvbiBvZiBhIG1lZGlhbA0KKyAgJGxhdGluTWVkaWFsID0gW2FlaW91d3ldOw0KKw0KKyAgIyBUaGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIGxhdGluIHRyYW5zbGl0ZXJhdGlvbiBvZiBhIG1lZGlhbA0KKyAgJGxhdGluTWVkaWFsRW5kID0gW2FlaW91XTsNCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgSmFtby1MYXRpbg0KKw0KKyMgSmFtbyB0byBsYXRpbiBpcyByZWxhdGl2ZWx5IHNpbXBsZSwgc2luY2UgaXQgaXMgdGhlIGxhdGluIHRoYXQgaXMNCisjIGFtYmlndW91cy4gIE1vc3QgcnVsZXMgYXJlIHN0cmFpZ2h0Zm9yd2FyZCwgYW5kIHdlIGVuY29kZSB0aGVtIGJlbG93DQorIyBhcyBzaW1wbGUgYWRkLW9uIGJhY2sgcnVsZSwgZS5nLjoNCisNCisjICAgJGphbW9NZWRpYWwge2JzfSA+ICRCUzsNCisNCisjIGJlY29tZXMNCisNCisjICAgJGphbW9NZWRpYWwge2JzfSA8PiAkQlM7DQorDQorIyBGdXJ0aGVybW9yZSwgd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgb3JkZXJpbmcgZm9yIEphbW8tTGF0aW4gYmVjYXVzZQ0KKyMgd2UgYXJlIGdvaW5nIGZyb20gc2luZ2xlIGNoYXJhY3RlcnMsIHNvIHdlIGNhbiB2ZXJ5IGVhc2lseSBwaWdneWJhY2sNCisjIG9uIHRoZSBMYXRpbi1KYW1vLg0KKw0KKyMgVGhlIG1haW4gaXNzdWUgd2l0aCBKYW1vLUxhdGluIGlzIHdoZW4gdG8gaW5zZXJ0IGh5cGhlbnMuDQorIyBIeXBoZW5zIGFyZSBpbnNlcnRlZCB0byBvYnRhaW4gY29ycmVjdCByb3VuZCB0cmlwIGJlaGF2aW9yLiAgRm9yDQorIyBleGFtcGxlLCB0aGUgc2VxdWVuY2UgS2kgQSBHZiBHaSBFLCBpZiB0cmFuc2xpdGVyYXRlZCB0byAia2FnZ2UiLA0KKyMgd291bGQgdGhlbiByb3VuZCB0cmlwIHRvIEtpIEEgR0dpIEUuICBUbyBwcmV2ZW50IHRoaXMsIHdlIGluc2VydCBhDQorIyBoeXBoZW46ICJrYWctZ2UiLiAgSU1QT1JUQU5UOiBUaGUgbmVlZCBmb3IgaHlwaGVucyBkZXBlbmRzDQorIyB2ZXJ5IHNwZWNpZmljYWxseSBvbiB0aGUgYmVoYXZpb3Igb2YgdGhlIExhdGluLUphbW8gcnVsZXMuICBBIGNoYW5nZQ0KKyMgaW4gdGhlIExhdGluLUphbW8gYmVoYXZpb3IgY2FuIGNvbXBsZXRlbHkgY2hhbmdlIHRoZSB3YXkgdGhlDQorIyBoeXBoZW4gaW5zZXJ0aW9uIG11c3QgYmUgZG9uZS4NCisNCisjIEZpcnN0IHRyeSB0byBwcmVzZXJ2ZSBhY3R1YWwgaHlwaGVucyBpbiB0aGUgamFtbyB0ZXh0IGJ5IGRvdWJsaW5nDQorIyB0aGVtLiAgVGhpcyBmaXhlcyBwcm9ibGVtcyBsaWtlOg0KKyMgKERpKShBKShKaSkoVSkoTkcpLShJRVVORykoWUVPKShOZikoR2kpKFlFTykoTCkgPT4gZGFqdW5nLXllb25neWVvbA0KKyMgPT4gKERpKShBKShKaSkoVSkoTkcpKElFVU5HKShZRU8pKE5mKShHaSkoWUVPKShMKS4gIFRoaXMgaXMgb3B0aW9uYWwNCisjIC0tIGlmIHdlIGRvbid0IGNhcmUgYWJvdXQgbG9zaW5nIGh5cGhlbnMgaW4gdGhlIGphbW8sIHdlIGNhbiBkZWxldGUNCisjIHRoaXMgcnVsZS4NCisNCisgICctLScgPD4gJy0nOw0KKw0KKyMgVHJpcGxlIGNvbnNvbmFudHMuICBGb3IgdGhyZWUgY29uc29uYW50cyAiYXh4eCIgd2UgaW5zZXJ0IGENCisjIGh5cGhlbiBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgc2Vjb25kICJ4IiBpZiBYWGYsIFhmLCBhbmQgWGkgYWxsDQorIyBleGlzdCwgYW5kIHdlIGhhdmUgQSBYZiBYWGkuICBUaGlzIHByZXZlbnRzIHRoZSByZXZlcnNlDQorIyB0cmFuc2xpdGVyYXRpb24gdG8gQSBYWGYgWGkuDQorDQorICAnLScgPCAkbGF0aW5NZWRpYWxFbmQgZyB7fSAkR0dpOw0KKyAgJy0nIDwgJGxhdGluTWVkaWFsRW5kIHMge30gJFNTaTsNCisNCisjIEZvciB2b3dlbHMgdGhlIHJ1bGUgaXMgc2ltaWxhci4gIElmIHRoZXJlIGlzIGEgdm93ZWwgImFlIiBzdWNoIHRoYXQNCisjICJhIiBieSBpdHNlbGYgYW5kICJlIiBieSBpdHNlbGYgYXJlIHZvd2VscywgdGhlbiB3ZSB3YW50IHRvIG1hcCBBIEUNCisjIHRvICJhLWUiIHNvIGFzIG5vdCB0byByb3VuZCB0cmlwIHRvIEFFLiAgSG93ZXZlciwgaW4gdGhlIHRleHQgS2kgRU8NCisjIElFVU5HIEUgd2UgZG9uJ3QgbmVlZCB0byBtYXAgdG8gImtlby1lIi4gICJrZW9lIiBzdWZmaWNlcy4gIEZvcg0KKyMgdm93ZWxzIG9mIHRoZSBmb3JtICJhZWkiLCBib3RoICJhZSIgKyAiaSIgYW5kICJhIiArICJlaSIgbXVzdCBiZQ0KKyMgdGVzdGVkLiAgTk9URTogVGhlc2UgcnVsZXMgdXNlZCB0byBoYXZlIGEgbGVmdCBjb250ZXh0IG9mDQorIyAkbGF0aW5Jbml0aWFsIGluc3RlYWQgb2YgW14kbGF0aW5NZWRpYWxdLiAgVGhlIHByb2JsZW0gd2l0aCB0aGlzIGlzDQorIyBzZXF1ZW5jZXMgd2hlcmUgYW4gaW5pdGlhbCBJRVVORyBpcyB0cmFuc2xpdGVyYXRlZCBhd2F5Og0KKyMgICAoSUVVTkcpKEEpKElFVU5HKShFTykgPT4gYWVvID0+IChJRVVORykoQUUpKElFVU5HKShPKQ0KKw0KKyAgJy0nIDwgW14kbGF0aW5NZWRpYWxdIFt5IHddIGUge30gWyRPICRPRV07DQorICAnLScgPCBbXiRsYXRpbk1lZGlhbF0gZSB7fSBbJE8gJE9FICRVXTsNCisgICctJyA8IFteJGxhdGluTWVkaWFsXSBbbyBhXSB7fSBbJEUgJEVPICRFVV07DQorICAnLScgPCBbXiRsYXRpbk1lZGlhbF0gW3cgeV0gYSB7fSBbJEUgJEVPICRFVV07DQorDQorIyBTaW1pbGFyIHRvIHRoZSBhYm92ZSwgYnV0IHdpdGggYW4gaW50ZXJ2ZW5pbmcgJElFVU5HLg0KKw0KKyAgJy0nIDwgW14kbGF0aW5NZWRpYWxdIFt5IHddIGUge30gJElFVU5HIFskTyAkT0VdOw0KKyAgJy0nIDwgW14kbGF0aW5NZWRpYWxdIGUge30gJElFVU5HIFskTyAkT0UgJFVdOw0KKyAgJy0nIDwgW14kbGF0aW5NZWRpYWxdIFtvIGFdIHt9ICRJRVVORyBbJEUgJEVPICRFVV07DQorICAnLScgPCBbXiRsYXRpbk1lZGlhbF0gW3cgeV0gYSB7fSAkSUVVTkcgWyRFICRFTyAkRVVdOw0KKw0KKyMgU2luZ2xlIGZpbmFscyBmb2xsb3dlZCBieSBJRVVORy4gIFRoZSBqYW1vIHNlcXVlbmNlIEEgWGYgSUVVTkcgRSwNCisjIHdoZXJlIFhpIGFsc28gZXhpc3RzLCBtdXN0IGJlIHRyYW5zbGl0ZXJhdGVkIGFzICJheC1lIiB0byBwcmV2ZW50DQorIyB0aGUgcm91bmQgdHJpcCBjb252ZXJzaW9uIHRvIEEgWGkgRS4NCisNCisgICctJyA8ICRsYXRpbk1lZGlhbEVuZCBiIHt9ICRJRVVORyAkamFtb01lZGlhbDsNCisgICctJyA8ICRsYXRpbk1lZGlhbEVuZCBjIHt9ICRJRVVORyAkamFtb01lZGlhbDsNCisgICctJyA8ICRsYXRpbk1lZGlhbEVuZCBkIHt9ICRJRVVORyAkamFtb01lZGlhbDsNCisgICctJyA8ICRsYXRpbk1lZGlhbEVuZCBnIHt9ICRJRVVORyAkamFtb01lZGlhbDsNCisgICctJyA8ICRsYXRpbk1lZGlhbEVuZCBoIHt9ICRJRVVORyAkamFtb01lZGlhbDsNCisgICctJyA8ICRsYXRpbk1lZGlhbEVuZCBqIHt9ICRJRVVORyAkamFtb01lZGlhbDsNCisgICctJyA8ICRsYXRpbk1lZGlhbEVuZCBrIHt9ICRJRVVORyAkamFtb01lZGlhbDsNCisgICctJyA8ICRsYXRpbk1lZGlhbEVuZCBtIHt9ICRJRVVORyAkamFtb01lZGlhbDsNCisgICctJyA8ICRsYXRpbk1lZGlhbEVuZCBuIHt9ICRJRVVORyAkamFtb01lZGlhbDsNCisgICctJyA8ICRsYXRpbk1lZGlhbEVuZCBwIHt9ICRJRVVORyAkamFtb01lZGlhbDsNCisgICctJyA8ICRsYXRpbk1lZGlhbEVuZCBzIHt9ICRJRVVORyAkamFtb01lZGlhbDsNCisgICctJyA8ICRsYXRpbk1lZGlhbEVuZCB0IHt9ICRJRVVORyAkamFtb01lZGlhbDsNCisNCisjIERvdWJsZSBmaW5hbHMgZm9sbG93ZWQgYnkgSUVVTkcuICBTaW1pbGFyIHRvIHRoZSBzaW5nbGUgZmluYWxzDQorIyBmb2xsb3dlZCBieSBJRVVORy4gIEFueSBsYXRpbiBjb25zb25hbnQgcGFpciBYIFksIGJldHdlZW4gbWVkaWFscywNCisjIHRoYXQgd2Ugd291bGQgc3BsaXQgYnkgTGF0aW4tSmFtbywgd2UgbXVzdCBoYW5kbGUgd2hlbiBpdCBvY2N1cnMgYXMNCisjIHBhcnQgb2YgQSBYWWYgSUVVTkcgRSwgdG8gcHJldmVudCByb3VuZCB0cmlwIGNvbnZlcnNpb24gdG8gQSBYZiBZaQ0KKyMgRS4NCisNCisgICctJyA8ICRsYXRpbk1lZGlhbEVuZCBiIHMge30gJElFVU5HICRqYW1vTWVkaWFsOw0KKyAgJy0nIDwgJGxhdGluTWVkaWFsRW5kIGcgZyB7fSAkSUVVTkcgJGphbW9NZWRpYWw7DQorICAnLScgPCAkbGF0aW5NZWRpYWxFbmQgZyBzIHt9ICRJRVVORyAkamFtb01lZGlhbDsNCisgICctJyA8ICRsYXRpbk1lZGlhbEVuZCBsIGIge30gJElFVU5HICRqYW1vTWVkaWFsOw0KKyAgJy0nIDwgJGxhdGluTWVkaWFsRW5kIGwgZyB7fSAkSUVVTkcgJGphbW9NZWRpYWw7DQorICAnLScgPCAkbGF0aW5NZWRpYWxFbmQgbCBoIHt9ICRJRVVORyAkamFtb01lZGlhbDsNCisgICctJyA8ICRsYXRpbk1lZGlhbEVuZCBsIG0ge30gJElFVU5HICRqYW1vTWVkaWFsOw0KKyAgJy0nIDwgJGxhdGluTWVkaWFsRW5kIGwgcCB7fSAkSUVVTkcgJGphbW9NZWRpYWw7DQorICAnLScgPCAkbGF0aW5NZWRpYWxFbmQgbCBzIHt9ICRJRVVORyAkamFtb01lZGlhbDsNCisgICctJyA8ICRsYXRpbk1lZGlhbEVuZCBsIHQge30gJElFVU5HICRqYW1vTWVkaWFsOw0KKyAgJy0nIDwgJGxhdGluTWVkaWFsRW5kIG4gZyB7fSAkSUVVTkcgJGphbW9NZWRpYWw7DQorICAnLScgPCAkbGF0aW5NZWRpYWxFbmQgbiBoIHt9ICRJRVVORyAkamFtb01lZGlhbDsNCisgICctJyA8ICRsYXRpbk1lZGlhbEVuZCBuIGoge30gJElFVU5HICRqYW1vTWVkaWFsOw0KKyAgJy0nIDwgJGxhdGluTWVkaWFsRW5kIHMgcyB7fSAkSUVVTkcgJGphbW9NZWRpYWw7DQorDQorIyBTcGxpdCBkb3VibGVzLiAgVGV4dCBvZiB0aGUgZm9ybSBBIFhpIFhmIEUsIHdoZXJlIFhYaSBhbHNvIG9jY3VycywNCisjIHdlIHRyYW5zbGl0ZXJhdGUgYXMgImF4LXhlIiB0byBwcmV2ZW50IHJvdW5kIHRyaXAgdHJhbnNsaXRlcmF0aW9uIGFzDQorIyBBIFhYaSBFLg0KKw0KKyAgJy0nIDwgJGxhdGluTWVkaWFsRW5kIGIge30gJEJpICRqYW1vTWVkaWFsOw0KKyAgJy0nIDwgJGxhdGluTWVkaWFsRW5kIGQge30gJERpICRqYW1vTWVkaWFsOw0KKyAgJy0nIDwgJGxhdGluTWVkaWFsRW5kIGoge30gJEppICRqYW1vTWVkaWFsOw0KKyAgJy0nIDwgJGxhdGluTWVkaWFsRW5kIGcge30gJEdpICRqYW1vTWVkaWFsOw0KKyAgJy0nIDwgJGxhdGluTWVkaWFsRW5kIHMge30gJFNpICRqYW1vTWVkaWFsOw0KKw0KKyMgWFlZLiAgVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgWFlZIHJ1bGUgaW4gTGF0aW4tSmFtby4gIEJ5IGRlZmF1bHQNCisjIExhdGluLUphbW8gbWFwcyAieHl5IiB0byBYZiBZWWksIHRvIGtlZXAgWVkgdG9nZXRoZXIuICBBcyBhIHJlc3VsdCwNCisjICJ4eXkiIGZvcm1zIHRoYXQgY29ycmVzcG9uZCB0byBYWWYgWWkgbXVzdCBiZSB0cmFuc2xpdGVyYXRlZCBhcw0KKyMgInh5LXkiLg0KKw0KKyAgJy0nIDwgJGxhdGluTWVkaWFsRW5kIGIgcyB7fSBbJFNpICRTU2ldOw0KKyAgJy0nIDwgJGxhdGluTWVkaWFsRW5kIGcgcyB7fSBbJFNpICRTU2ldOw0KKyAgJy0nIDwgJGxhdGluTWVkaWFsRW5kIGwgYiB7fSBbJEJpICRCQl07DQorICAnLScgPCAkbGF0aW5NZWRpYWxFbmQgbCBnIHt9IFskR2kgJEdHaV07DQorICAnLScgPCAkbGF0aW5NZWRpYWxFbmQgbCBzIHt9IFskU2kgJFNTaV07DQorICAnLScgPCAkbGF0aW5NZWRpYWxFbmQgbiBnIHt9IFskR2kgJEdHaV07DQorICAnLScgPCAkbGF0aW5NZWRpYWxFbmQgbiBqIHt9IFskSmkgJEpKXTsNCisNCisjIERlbGV0aW9uIG9mIElFVU5HIGlzIGhhbmRsZWQgYmVsb3cuDQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIExhdGluLUphbW8NCisNCisjIFtCYXNpYywgY29udGV4dC1mcmVlIEphbW8tTGF0aW4gcnVsZXMgYXJlIGVtYmVkZGVkIGhlcmUgdG9vLiAgU2VlDQorIyBhYm92ZS5dDQorDQorIyBTcGxpdCBkaWdyYXBoczogVGV4dCBvZiB0aGUgZm9ybSAnYXh5ZScsIHdoZXJlICd4eScgaXMgYSBmaW5hbA0KKyMgZGlncmFwaCwgJ3gnIGlzIGEgZmluYWwgKGJ5IGl0c2VsZiksICd5JyBpcyBhbiBpbml0aWFsLCBhbmQgJ2EnIGFuZA0KKyMgJ2UnIGFyZSBtZWRpYWxzLCB3ZSB3YW50IHRvIHRyYW5zbGl0ZXJhdGUgdGhpcyBhcyBBIFhmIFlpIEUgcmF0aGVyDQorIyB0aGFuIEEgWFlmIElFVU5HIEUuICBXZSBkbyBOT1QgaW5jbHVkZSB0ZXh0IG9mIHRoZSBmb3JtICJheHhlIiwNCisjIHNpbmNlIHRoYXQgaXMgaGFuZGxlZCBkaWZmZXJlbnRseSBiZWxvdy4gIFRoZXNlIHJ1bGVzIGFyZSBnZW5lcmF0ZWQNCisjIHByb2dyYW1tYXRpY2FsbHkgZnJvbSB0aGUgamFtbyBkYXRhLg0KKw0KKyAgJGphbW9NZWRpYWwge2Igc30gJGxhdGluTWVkaWFsID4gJEJmICRTaTsNCisgICRqYW1vTWVkaWFsIHtnIHN9ICRsYXRpbk1lZGlhbCA+ICRHZiAkU2k7DQorICAkamFtb01lZGlhbCB7bCBifSAkbGF0aW5NZWRpYWwgPiAkTCAkQmk7DQorICAkamFtb01lZGlhbCB7bCBnfSAkbGF0aW5NZWRpYWwgPiAkTCAkR2k7DQorICAkamFtb01lZGlhbCB7bCBofSAkbGF0aW5NZWRpYWwgPiAkTCAkSGk7DQorICAkamFtb01lZGlhbCB7bCBtfSAkbGF0aW5NZWRpYWwgPiAkTCAkTWk7DQorICAkamFtb01lZGlhbCB7bCBwfSAkbGF0aW5NZWRpYWwgPiAkTCAkUGk7DQorICAkamFtb01lZGlhbCB7bCBzfSAkbGF0aW5NZWRpYWwgPiAkTCAkU2k7DQorICAkamFtb01lZGlhbCB7bCB0fSAkbGF0aW5NZWRpYWwgPiAkTCAkVGk7DQorICAkamFtb01lZGlhbCB7biBnfSAkbGF0aW5NZWRpYWwgPiAkTmYgJEdpOw0KKyAgJGphbW9NZWRpYWwge24gaH0gJGxhdGluTWVkaWFsID4gJE5mICRIaTsNCisgICRqYW1vTWVkaWFsIHtuIGp9ICRsYXRpbk1lZGlhbCA+ICROZiAkSmk7DQorDQorIyBTaW5nbGUgY29uc29uYW50cyBhcmUgaW5pdGlhbHM6IFRleHQgb2YgdGhlIGZvcm0gJ2F4ZScsIHdoZXJlICd4Jw0KKyMgY2FuIGJlIGFuIGluaXRpYWwgb3IgYSBmaW5hbCwgYW5kICdhJyBhbmQgJ2UnIGFyZSBtZWRpYWxzLCB3ZSB3YW50DQorIyB0byB0cmFuc2xpdGVyYXRlIGFzIEEgWGkgRSByYXRoZXIgdGhhbiBBIFhmIElFVU5HIEUuDQorDQorICAkamFtb01lZGlhbCB7Yn0gJGxhdGluTWVkaWFsID4gJEJpOw0KKyAgJGphbW9NZWRpYWwge2N9ICRsYXRpbk1lZGlhbCA+ICRDaTsNCisgICRqYW1vTWVkaWFsIHtkfSAkbGF0aW5NZWRpYWwgPiAkRGk7DQorICAkamFtb01lZGlhbCB7Z30gJGxhdGluTWVkaWFsID4gJEdpOw0KKyAgJGphbW9NZWRpYWwge2h9ICRsYXRpbk1lZGlhbCA+ICRIaTsNCisgICRqYW1vTWVkaWFsIHtqfSAkbGF0aW5NZWRpYWwgPiAkSmk7DQorICAkamFtb01lZGlhbCB7a30gJGxhdGluTWVkaWFsID4gJEtpOw0KKyAgJGphbW9NZWRpYWwge219ICRsYXRpbk1lZGlhbCA+ICRNaTsNCisgICRqYW1vTWVkaWFsIHtufSAkbGF0aW5NZWRpYWwgPiAkTmk7DQorICAkamFtb01lZGlhbCB7cH0gJGxhdGluTWVkaWFsID4gJFBpOw0KKyAgJGphbW9NZWRpYWwge3N9ICRsYXRpbk1lZGlhbCA+ICRTaTsNCisgICRqYW1vTWVkaWFsIHt0fSAkbGF0aW5NZWRpYWwgPiAkVGk7DQorDQorIyBEb3VibGVkIGluaXRpYWxzLiAgVGhlIHNlcXVlbmNlICJheHhlIiwgd2hlcmUgWFggZXhpc3RzIGFzIGFuIGluaXRpYWwNCisjIChYWGkpLCBhbmQgYWxzbyBYaSBhbmQgWGYgZXhpc3QgKHRydWUgb2YgYWxsIGRpZ3JhcGhzIFhYKSwgd2Ugd2FudA0KKyMgdG8gdHJhbnNsaXRlcmF0ZSBhcyBBIFhYaSBFLCByYXRoZXIgdGhhbiBzcGxpdCB0byBBIFhmIFhpIEUuDQorDQorICAkamFtb01lZGlhbCB7YiBifSAkbGF0aW5NZWRpYWwgPiAkQkI7DQorICAkamFtb01lZGlhbCB7ZCBkfSAkbGF0aW5NZWRpYWwgPiAkREQ7DQorICAkamFtb01lZGlhbCB7aiBqfSAkbGF0aW5NZWRpYWwgPiAkSko7DQorICAkamFtb01lZGlhbCB7ZyBnfSAkbGF0aW5NZWRpYWwgPiAkR0dpOw0KKyAgJGphbW9NZWRpYWwge3Mgc30gJGxhdGluTWVkaWFsID4gJFNTaTsNCisNCisjIFhZWS4gIEJlY2F1c2UgZG91YmxlZCBjb25zb25hbnRzIGJpbmQgbW9yZSBzdHJvbmdseSB0aGFuIFhZDQorIyBjb25zb25hbnRzLCB3ZSBtdXN0IGhhbmRsZSB0aGUgc2VxdWVuY2UgImF4eXkiIHNwZWNpYWxseS4gIEhlcmUgWFlmDQorIyBhbmQgWVlpIG11c3QgZXhpc3QuICBJbiB0aGVzZSBjYXNlcywgd2UgbWFwIHRvIFhmIFlZaSByYXRoZXIgdGhhbg0KKyMgWFlmLg0KKw0KKyAgJGphbW9NZWRpYWwge2J9IHMgcyA+ICRCZjsNCisgICRqYW1vTWVkaWFsIHtnfSBzIHMgPiAkR2Y7DQorICAkamFtb01lZGlhbCB7bH0gYiBiID4gJEw7DQorICAkamFtb01lZGlhbCB7bH0gZyBnID4gJEw7DQorICAkamFtb01lZGlhbCB7bH0gcyBzID4gJEw7DQorICAkamFtb01lZGlhbCB7bn0gZyBnID4gJE5mOw0KKyAgJGphbW9NZWRpYWwge259IGogaiA+ICROZjsNCisNCisjIEZpbmFsczogQXR0YWNoIGNvbnNvbmFudCB3aXRoIHByZWNlZGluZyBtZWRpYWwgdG8gcHJlY2VkaW5nIG1lZGlhbC4NCisjIERvIHRoaXMgQkVGT1JFIG1hcHBpbmcgY29uc29uYW50cyB0byBpbml0aWFscy4gIExvbmdlciBrZXlzIG11c3QNCisjIHByZWNlZGUgc2hvcnRlciBrZXlzIHRoYXQgdGhleSBzdGFydCB3aXRoLCBlLmcuLCB0aGUgcnVsZSBmb3IgJ2JzJw0KKyMgbXVzdCBwcmVjZWRlICdiJy4NCisNCisjIFtCQVNJQyBKYW1vLUxhdGluIEZJTkFMUyBoYW5kbGVkIGhlcmUuICBPcmRlciBpcnJlbGV2YW50IHdpdGhpbiB0aGlzDQorIyBibG9jayBmb3IgSmFtby1MYXRpbi5dDQorDQorICAkamFtb01lZGlhbCB7YnN9IDw+ICRCUzsNCisgICRqYW1vTWVkaWFsIHtifSA8PiAkQmY7DQorICAkamFtb01lZGlhbCB7Y30gPD4gJENmOw0KKyAgJGphbW9NZWRpYWwge2R9IDw+ICREZjsNCisgICRqYW1vTWVkaWFsIHtnZ30gPD4gJEdHZjsNCisgICRqYW1vTWVkaWFsIHtnc30gPD4gJEdTOw0KKyAgJGphbW9NZWRpYWwge2d9IDw+ICRHZjsNCisgICRqYW1vTWVkaWFsIHtofSA8PiAkSGY7DQorICAkamFtb01lZGlhbCB7an0gPD4gJEpmOw0KKyAgJGphbW9NZWRpYWwge2t9IDw+ICRLZjsNCisgICRqYW1vTWVkaWFsIHtsYn0gPD4gJExCOyAgJGphbW9NZWRpYWwge2xnfSA8PiAkTEc7DQorICAkamFtb01lZGlhbCB7bGh9IDw+ICRMSDsNCisgICRqYW1vTWVkaWFsIHtsbX0gPD4gJExNOw0KKyAgJGphbW9NZWRpYWwge2xwfSA8PiAkTFA7DQorICAkamFtb01lZGlhbCB7bHN9IDw+ICRMUzsNCisgICRqYW1vTWVkaWFsIHtsdH0gPD4gJExUOw0KKyAgJGphbW9NZWRpYWwge2x9IDw+ICRMOw0KKyAgJGphbW9NZWRpYWwge219IDw+ICRNZjsNCisgICRqYW1vTWVkaWFsIHtuZ30gPD4gJE5HOw0KKyAgJGphbW9NZWRpYWwge25ofSA8PiAkTkg7DQorICAkamFtb01lZGlhbCB7bmp9IDw+ICROSjsNCisgICRqYW1vTWVkaWFsIHtufSA8PiAkTmY7DQorICAkamFtb01lZGlhbCB7cH0gPD4gJFBmOw0KKyAgJGphbW9NZWRpYWwge3NzfSA8PiAkU1NmOw0KKyAgJGphbW9NZWRpYWwge3N9IDw+ICRTZjsNCisgICRqYW1vTWVkaWFsIHt0fSA8PiAkVGY7DQorDQorIyBJbml0aWFsczogQXR0YWNoIHNpbmdsZSBjb25zb25hbnQgdG8gZm9sbG93aW5nIG1lZGlhbC4gIERvIHRoaXMNCisjIEFGVEVSIG1hcHBpbmcgZmluYWxzLiAgTG9uZ2VyIGtleXMgbXVzdCBwcmVjZWRlIHNob3J0ZXIga2V5cyB0aGF0DQorIyB0aGV5IHN0YXJ0IHdpdGgsIGUuZy4sIHRoZSBydWxlIGZvciAnZ2cnIG11c3QgcHJlY2VkZSAnZycuDQorDQorIyBbQkFTSUMgSmFtby1MYXRpbiBJTklUSUFMUyBoYW5kbGVkIGhlcmUuICBPcmRlciBpcnJlbGV2YW50IHdpdGhpbg0KKyMgdGhpcyBibG9jayBmb3IgSmFtby1MYXRpbi5dDQorDQorICB7Z2d9ICRsYXRpbk1lZGlhbCA8PiAkR0dpOw0KKyAge2d9ICRsYXRpbk1lZGlhbCA8PiAkR2k7DQorICB7bn0gJGxhdGluTWVkaWFsIDw+ICROaTsNCisgIHtkZH0gJGxhdGluTWVkaWFsIDw+ICRERDsNCisgIHtkfSAkbGF0aW5NZWRpYWwgPD4gJERpOw0KKyAge3J9ICRsYXRpbk1lZGlhbCA8PiAkUjsNCisgIHttfSAkbGF0aW5NZWRpYWwgPD4gJE1pOw0KKyAge2JifSAkbGF0aW5NZWRpYWwgPD4gJEJCOw0KKyAge2J9ICRsYXRpbk1lZGlhbCA8PiAkQmk7DQorICB7c3N9ICRsYXRpbk1lZGlhbCA8PiAkU1NpOw0KKyAge3N9ICRsYXRpbk1lZGlhbCA8PiAkU2k7DQorICB7amp9ICRsYXRpbk1lZGlhbCA8PiAkSko7DQorICB7an0gJGxhdGluTWVkaWFsIDw+ICRKaTsNCisgIHtjfSAkbGF0aW5NZWRpYWwgPD4gJENpOw0KKyAge2t9ICRsYXRpbk1lZGlhbCA8PiAkS2k7DQorICB7dH0gJGxhdGluTWVkaWFsIDw+ICRUaTsNCisgIHtwfSAkbGF0aW5NZWRpYWwgPD4gJFBpOw0KKyAge2h9ICRsYXRpbk1lZGlhbCA8PiAkSGk7DQorDQorIyAncicgaW4gZmluYWwgcG9zaXRpb24uICBCZWNhdXNlIG9mIHRoZSBlcXVpdmFsZW5jeSBvZiB0aGUgJ2wnIGFuZA0KKyMgJ3InIGphbW8gKHRoZSBnbHlwaHMgYXJlIHRoZSBzYW1lKSwgd2UgdHJ5IHRvIHByb3ZpZGUgdGhlIHNhbWUNCisjIGVxdWl2YWxlbmN5IGluIExhdGluLUphbW8uICBUaGUgJ2wnIHRvICdyJyBjb252ZXJzaW9uIGlzIGhhbmRsZWQNCisjIGJlbG93LiAgSWYgd2Ugc2VlIGFuICdyJyBpbiBhbiBhcHBhcmVudCBmaW5hbCBwb3NpdGlvbiwgdHJlYXQgaXQNCisjIGxpa2UgJ2wnLiAgRm9yIGV4YW1wbGUsICJrYXJrYSIgPT4gS2kgQSBSIEVVIEtpIEEgd2l0aG91dCB0aGlzIHJ1bGUuDQorIyBJbnN0ZWFkLCB3ZSB3YW50IEtpIEEgTCBLaSBBLg0KKw0KKyAgJGphbW9NZWRpYWwge3J9ICRsYXRpbkluaXRpYWwgPiB8IGw7DQorDQorIyBJbml0aWFsICsgRmluYWw6IElmIHdlIG1hdGNoIHRoZSBuZXh0IHJ1bGUsIHdlIGhhdmUgaW5pdGlhbCB0aGVuDQorIyBmaW5hbCBjb25zb25hbnQgd2l0aCBubyBpbnRlcnZlbmluZyBtZWRpYWwuICBXZSBpbnNlcnQgdGhlIG51bGwNCisjIHZvd2VsIEJFRk9SRSBpdCB0byBjcmVhdGUgYSB3ZWxsLWZvcm1lZCBzeWxsYWJsZS4gIChJbiB0aGUgbmV4dCBydWxlDQorIyB3ZSBpbnNlcnQgYSBudWxsIHZvd2VsIEFGVEVSIGFuIGFub21hbG91cyBpbml0aWFsLikNCisNCisgICRqYW1vSW5pdGlhbCB7fSBbYmNkZ2hqa2xtbnBzdF0gPiAkRVU7DQorDQorIyBJbml0aWFsICsgWDogVGhpcyBibG9jayBtYXRjaGVzIGFuIGluaXRpYWwgY29uc29uYW50IG5vdCBmb2xsb3dlZCBieQ0KKyMgYSBtZWRpYWwuICBXZSBpbnNlcnQgdGhlIG51bGwgdm93ZWwgYWZ0ZXIgaXQuICBXZSBoYW5kbGUgZG91YmxlDQorIyBpbml0aWFscyBleHBsaWNpdGx5IGhlcmU7IGZvciBzaW5nbGUgaW5pdGlhbCBjb25zb25hbnRzIHdlIGluc2VydCBFVQ0KKyMgKGFzIExhdGluKSBhZnRlciB0aGVtIGFuZCBsZXQgc3RhbmRhcmQgcnVsZXMgZG8gdGhlIHJlc3QuDQorDQorIyBCUkVBS1MgUk9VTkQgVFJJUCBJTlRFR1JJVFkNCisNCisgIGdnID4gJEdHaSAkRVU7DQorICBkZCA+ICRERCAkRVU7DQorICBiYiA+ICRCQiAkRVU7DQorICBzcyA+ICRTU2kgJEVVOw0KKyAgamogPiAkSkogJEVVOw0KKw0KKyAgKFtiY2RnaGprbW5wcnN0XSkgPiB8ICQxIGV1Ow0KKw0KKyMgWCArIEZpbmFsOiBGaW5hbGx5IHdlIGhhdmUgdG8gZGVhbCB3aXRoIGEgY29uc29uYW50IHRoYXQgY2FuIG9ubHkgYmUNCisjIGludGVycHJldGVkIGFzIGEgZmluYWwgKG5vdCBhbiBpbml0aWFsKSBhbmQgd2hpY2ggaXMgcHJlY2VkZWQNCisjIG5laXRoZXIgYnkgYW4gaW5pdGlhbCBub3IgYSBtZWRpYWwuICBJdCBpcyB0aGUgc3RhcnQgb2YgdGhlDQorIyBzeWxsYWJsZSwgYnV0IGNhbm5vdCBiZS4gIE1vc3Qgb2YgdGhlc2Ugd2lsbCBhbHJlYWR5IGJlIGhhbmRsZWQgYnkNCisjIHRoZSBhYm92ZSBydWxlcy4gICdicycgc3BsaXRzIGludG8gQmkgRVUgU2YuICBTaW1pbGFyIGZvciAnZ3MnICduZycNCisjICduaCcgJ25qJy4gIFRoZSBvbmx5IHByb2JsZW0gaXMgJ2wnIGFuZCBkaWdyYXBocyBzdGFydGluZyB3aXRoICdsJy4NCisjIEZvciB0aGlzIGlzb2xhdGVkIGNhc2UsIHdlIGNvdWxkIGFkZCBhIG51bGwgaW5pdGlhbCBhbmQgbWVkaWFsLA0KKyMgd2hpY2ggd291bGQgZ2l2ZSAibGEiID0+IElFVU5HIEVVIEwgSUVVTkcgQSwgZm9yIGV4YW1wbGUuICBBIG1vcmUNCisjIGVjb25vbWljYWwgc29sdXRpb24gaXMgdG8gdHJhbnNsaXRlcmF0ZSBpc29sYXRlZCAibCIgKHRoYXQgaXMsDQorIyBpbml0aWFsICJsIikgdG8gInIiLiAgKE90aGVyIHNpbWlsYXIgY29udmVyc2lvbnMgb2YgY29uc29uYW50cyB0aGF0DQorIyBvY2N1ciBuZWl0aGVyIGFzIGluaXRpYWxzIG5vciBhcyBmaW5hbHMgYXJlIGhhbmRsZWQgYmVsb3cuKQ0KKw0KKyAgbCA+IHwgcjsNCisNCisjIE1lZGlhbHMuICBJZiBhIG1lZGlhbCBpcyBwcmVjZWRlZCBieSBhbiBpbml0aWFsLCB0aGVuIHdlIHByb2NlZWQNCisjIG5vcm1hbGx5LiAgQXMgdXN1YWwsIGxvbmdlciBrZXlzIG11c3QgcHJlY2VkZSBzaG9ydGVyIG9uZXMuDQorDQorIyBbQkFTSUMgSmFtby1MYXRpbiBNRURJQUxTIGhhbmRsZWQgaGVyZS4gIE9yZGVyIGlycmVsZXZhbnQgd2l0aGluDQorIyB0aGlzIGJsb2NrIGZvciBKYW1vLUxhdGluLl0NCisNCisgICRqYW1vSW5pdGlhbCB7YWV9IDw+ICRBRTsNCisgICRqYW1vSW5pdGlhbCB7YX0gPD4gJEE7DQorICAkamFtb0luaXRpYWwge2VvfSA8PiAkRU87DQorICAkamFtb0luaXRpYWwge2V1fSA8PiAkRVU7DQorICAkamFtb0luaXRpYWwge2V9IDw+ICRFOw0KKyAgJGphbW9Jbml0aWFsIHtpfSA8PiAkSTsNCisgICRqYW1vSW5pdGlhbCB7b2V9IDw+ICRPRTsNCisgICRqYW1vSW5pdGlhbCB7b30gPD4gJE87DQorICAkamFtb0luaXRpYWwge3V9IDw+ICRVOw0KKyAgJGphbW9Jbml0aWFsIHt3YWV9IDw+ICRXQUU7DQorICAkamFtb0luaXRpYWwge3dhfSA8PiAkV0E7DQorICAkamFtb0luaXRpYWwge3dlb30gPD4gJFdFTzsNCisgICRqYW1vSW5pdGlhbCB7d2V9IDw+ICRXRTsNCisgICRqYW1vSW5pdGlhbCB7d2l9IDw+ICRXSTsNCisgICRqYW1vSW5pdGlhbCB7eWFlfSA8PiAkWUFFOw0KKyAgJGphbW9Jbml0aWFsIHt5YX0gPD4gJFlBOw0KKyAgJGphbW9Jbml0aWFsIHt5ZW99IDw+ICRZRU87DQorICAkamFtb0luaXRpYWwge3llfSA8PiAkWUU7DQorICAkamFtb0luaXRpYWwge3lpfSA8PiAkWUk7DQorICAkamFtb0luaXRpYWwge3lvfSA8PiAkWU87DQorICAkamFtb0luaXRpYWwge3l1fSA8PiAkWVU7DQorDQorIyBXZSBtYXkgc2VlIGFuIGFub21hbG91cyBpc29sYXRlZCAndycgb3IgJ3knLiAgSW4gdGhhdCBjYXNlLCB3ZQ0KKyMgaW50ZXJwcmV0IGl0IGFzICd3aScgYW5kICd5dScsIHJlc3BlY3RpdmVseS4NCisNCisjIEJSRUFLUyBST1VORCBUUklQIElOVEVHUklUWQ0KKw0KKyAgJGphbW9Jbml0aWFsIHt3fSA+IHwgd2k7DQorICAkamFtb0luaXRpYWwge3l9ID4gfCB5dTsNCisNCisjIE90aGVyd2lzZSwgaW5zZXJ0IGEgbnVsbCBjb25zb25hbnQgSUVVTkcgYmVmb3JlIHRoZSBtZWRpYWwgKHdoaWNoIGlzDQorIyBzdGlsbCBhbiB1bnRyYW5zbGl0ZXJhdGVkIGxhdGluIHZvd2VsKS4NCisNCisgICgkbGF0aW5NZWRpYWwpID4gJElFVU5HIHwgJDE7DQorDQorIyBDb252ZXJ0IG5vbi1qYW1vIGxhdGluIGNvbnNvbmFudHMgdG8gZXF1aXZhbGVudHMuICBUaGVzZSBvY2N1ciBhcw0KKyMgbmVpdGhlciBpbml0aWFscyBub3IgZmluYWxzIGluIGphbW8uICAnbCcgb2NjdXJzIGFzIGEgZmluYWwsIGJ1dCBub3QNCisjIGFuIGluaXRpYWw7IGl0IGlzIGhhbmRsZWQgYWJvdmUuICBUaGUgZm9sbG93aW5nIGxldHRlcnMgKGxlZnQgaGFuZA0KKyMgc2lkZSkgd2lsbCBuZXZlciBiZSBvdXRwdXQgYnkgSmFtby1MYXRpbi4NCisNCisgIGYgPiB8IHA7DQorICBxID4gfCBrOw0KKyAgdiA+IHwgYjsNCisgIHggPiB8IGtzOw0KKyAgeiA+IHwgczsNCisNCisjIERlbGV0ZSBoeXBoZW5zIChMYXRpbi1KYW1vKS4NCisNCisgICctJyA+IDsNCisNCisjIERlbGV0ZSBudWxsIGNvbnNvbmFudHMgKEphbW8tTGF0aW4pLiAgRG8gTk9UIGRlbGV0ZSBudWxsIEVVIHZvd2VscywNCisjIHNpbmNlIHRoZXNlIG1heSBhbHNvIG9jY3VyIGluIHRleHQuDQorDQorICA8ICRJRVVORzsNCisNCisjIGVvZg0KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0xhdGluX0thbmEudXRmOC50eHQgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9MYXRpbl9LYW5hLnV0ZjgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjMzZjI0NWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9MYXRpbl9LYW5hLnV0ZjgudHh0CkBAIC0wLDAgKzEsOTY5IEBACisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIENvcHlyaWdodCAoYykgMTk5OS0yMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzDQorIyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4NCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIERhdGU6IFR1ZSBKYW4gMjMgMTI6MTg6NDYgMjAwMQ0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KKyMgTGF0aW4tS2FuYQ0KKw0KKw0KKyMgSmFwYW5lc2UgaGlyYWdhbmEgYW5kIGthdGFrYW5hIHRvIGFuZCBmcm9tIGxhdGluDQorIyAocm9tYWppKS4gIExvd2VyIGNhc2UgbGF0aW4gY29ycmVzcG9uZHMgdG8gaGlyYWdhbmE7DQorIyB1cHBlciBjYXNlIGxhdGluIHRvIGthdGFrYW5hLiAgVGhlIGhhbmRsaW5nIG9mDQorIyBIaXJhZ2FuYSBhbmQgS2F0YWthbmEgaXMgbGFyZ2VseSB0aGUgc2FtZS4gIFRoZSBidWxrDQorIyBvZiB0aGUgdHJhbnNsaXRlcmF0b3IgY29uc2lzdHMgb2YgdHdvIGlkZW50aWNhbCBzZXRzDQorIyBvZiBydWxlcywgZGlmZmVyaW5nIG9ubHkgaW4gY2FzZS4NCisNCisjIEJlY2F1c2Ugb2YgbWlub3IgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgdHdvIGJsb2Nrcw0KKyMgKGUuZy4sIHRoZSBleGlzdGVuY2Ugb2Ygc21hbGwga2F0YWthbmEga2EgYW5kIGtlLCBidXQNCisjIG5vIGNvcnJlc3BvbmRpbmcgaGlyYWdhbmEpLCBzb21lIHJ1bGVzIGV4aXN0IGZvciBvbmx5DQorIyBvbmUgc2NyaXB0Lg0KKw0KKyMgVXNlcyBtb2RpZmllZCBIZXBidXJuLiBTbWFsbCBjaGFuZ2VzIHRvIG1ha2UNCisjIHVuYW1iaWd1b3VzLg0KKw0KKyN8IEt1bnJlaS1zaGlraTogSGVwYnVybi9NSGVwYnVybg0KKyN8IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyN8IHNpOiAgICAgc2hpDQorI3wgc2kgfnlhOiBzaGENCisjfCBzaSB+eXU6IHNodQ0KKyN8IHNpIH55bzogc2hvDQorI3wgemk6ICAgICBqaQ0KKyN8IHppIH55YTogamENCisjfCB6aSB+eXU6IGp1DQorI3wgemkgfnlvOiBqbw0KKyN8IHRpOiAgICAgY2hpDQorI3wgdGkgfnlhOiBjaGENCisjfCB0aSB+eXU6IGNodQ0KKyN8IHRpIH55dTogY2hvDQorI3wgdHU6ICAgICB0c3UNCisjfCBkaTogICAgIGppL2RqaQ0KKyN8IGR1OiAgICAgenUvZHp1DQorI3wgaHU6ICAgICBmdQ0KKw0KKyN8IEZvciBmb3JlaWduIHdvcmRzOg0KKyN8IC0tLS0tLS0tLS0tLS0tLS0tDQorI3wgc2UgfmkgICBzaQ0KKyN8IHNpIH5lICAgc2hlDQorI3wNCisjfCB6ZSB+aSAgIHppDQorI3wgemkgfmUgICBqZQ0KKyN8DQorI3wgdGUgfmkgICB0aQ0KKyN8IHRpIH5lICAgY2hlDQorI3wgdGUgfnUgICB0dQ0KKyN8DQorI3wgZGUgfmkgICBkaQ0KKyN8IGRlIH51ICAgZHUNCisjfCBkZSB+aSAgIGRpDQorI3wNCisjfCBoZSB+dTogIGh1DQorI3wgaHUgfmEgICBmYQ0KKyN8IGh1IH5pICAgZmkNCisjfCBodSB+ZSAgIGhlDQorI3wgaHUgfm8gICBobw0KKw0KKyMgTW9zdCBzbWFsbCBmb3JtcyBhcmUgZ2VuZXJhdGVkLCBidXQgaWYgbmVjZXNzYXJ5DQorIyBleHBsaWNpdCBzbWFsbCBmb3JtcyBhcmUgZ2l2ZW4gd2l0aCB+YSwgfnlhLCBldGMuDQorDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKyMgVmFyaWFibGVzDQorDQorJHZvd2VsPVthZWlvdV07DQorIyMjICRRVU9URT0nJzsNCisNCisjIEhpcmFnYW5hIGJsb2NrDQorDQorIyMjICRhMj3jgYE7DQorIyMjICRhPeOBgjsNCisjIyMgJGkyPeOBgzsNCisjIyMgJGk944GEOw0KKyMjIyAkdTI944GFOw0KKyMjIyAkdT3jgYY7DQorIyMjICRlMj3jgYc7DQorIyMjICRlPeOBiDsNCisjIyMgJG8yPeOBiTsNCisjIyMgJG8944GKOw0KKw0KKyMjIyAka2E944GLOw0KKyMjIyAkZ2E944GMOw0KKyMjIyAka2k944GNOw0KKyMjIyAkZ2k944GOOw0KKyMjIyAka3U944GPOw0KKyMjIyAkZ3U944GQOw0KKyMjIyAka2U944GROw0KKyMjIyAkZ2U944GSOw0KKyMjIyAka28944GTOw0KKyMjIyAkZ28944GUOw0KKw0KKyMjIyAkc2E944GVOw0KKyMjIyAkemE944GWOw0KKyMjIyAkc2k944GXOw0KKyMjIyAkemk944GYOw0KKyMjIyAkc3U944GZOw0KKyMjIyAkenU944GaOw0KKyMjIyAkc2U944GbOw0KKyMjIyAkemU944GcOw0KKyMjIyAkc28944GdOw0KKyMjIyAkem8944GeOw0KKw0KKyMjIyAkdGE944GfOw0KKyMjIyAkZGE944GgOw0KKyMjIyAkdGk944GhOw0KKyMjIyAkZGk944GiOw0KKyMjIyAkdHUyPeOBozsNCisjIyMgJHR1PeOBpDsNCisjIyMgJGR1PeOBpTsNCisjIyMgJHRlPeOBpjsNCisjIyMgJGRlPeOBpzsNCisjIyMgJHRvPeOBqDsNCisjIyMgJGRvPeOBqTsNCisNCisjIyMgJG5hPeOBqjsNCisjIyMgJG5pPeOBqzsNCisjIyMgJG51PeOBrDsNCisjIyMgJG5lPeOBrTsNCisjIyMgJG5vPeOBrjsNCisNCisjIyMgJGhhPeOBrzsNCisjIyMgJGJhPeOBsDsNCisjIyMgJHBhPeOBsTsNCisjIyMgJGhpPeOBsjsNCisjIyMgJGJpPeOBszsNCisjIyMgJHBpPeOBtDsNCisjIyMgJGh1PeOBtTsNCisjIyMgJGJ1PeOBtjsNCisjIyMgJHB1PeOBtzsNCisjIyMgJGhlPeOBuDsNCisjIyMgJGJlPeOBuTsNCisjIyMgJHBlPeOBujsNCisjIyMgJGhvPeOBuzsNCisjIyMgJGJvPeOBvDsNCisjIyMgJHBvPeOBvTsNCisNCisjIyMgJG1hPeOBvjsNCisjIyMgJG1pPeOBvzsNCisjIyMgJG11PeOCgDsNCisjIyMgJG1lPeOCgTsNCisjIyMgJG1vPeOCgjsNCisNCisjIyMgJHlhMj3jgoM7DQorIyMjICR5YT3jgoQ7DQorIyMjICR5dTI944KFOw0KKyMjIyAkeXU944KGOw0KKyMjIyAkeW8yPeOChzsNCisjIyMgJHlvPeOCiDsNCisNCisjIyMgJHJhPeOCiTsNCisjIyMgJHJpPeOCijsNCisjIyMgJHJ1PeOCizsNCisjIyMgJHJlPeOCjDsNCisjIyMgJHJvPeOCjTsNCisNCisjIyMgJHdhMj3jgo47DQorIyMjICR3YT3jgo87DQorIyMjICR3aT3jgpA7DQorIyMjICR3ZT3jgpE7DQorIyMjICR3bz3jgpI7DQorDQorIyMjICRuPeOCkzsNCisjIyMgJHZ1PeOClDsNCisNCisjIEFsdGVybmF0ZXMsIGp1c3QgdG8gbWFrZSB0aGUgcnVsZXMgZWFzaWVyDQorIyMjICR5aTI944GDOw0KKyMjIyAkeWk944GEOw0KKyMjIyAkeWUyPeOBhzsNCisjIyMgJHllPeOBiDsNCisjIyMgJHd1PSR1Ow0KKyMgRW5kIGFsdGVybmF0ZXMNCisNCisjIEthdGFrYW5hIGJsb2NrDQorDQorIyMjICRBMj3jgqE7DQorIyMjICRBPeOCojsNCisjIyMgJEkyPeOCozsNCisjIyMgJEk944KkOw0KKyMjIyAkVTI944KlOw0KKyMjIyAkVT3jgqY7DQorIyMjICRFMj3jgqc7DQorIyMjICRFPeOCqDsNCisjIyMgJE8yPeOCqTsNCisjIyMgJE8944KqOw0KKw0KKyMjIyAkS0E944KrOw0KKyMjIyAkR0E944KsOw0KKyMjIyAkS0k944KtOw0KKyMjIyAkR0k944KuOw0KKyMjIyAkS1U944KvOw0KKyMjIyAkR1U944KwOw0KKyMjIyAkS0U944KxOw0KKyMjIyAkR0U944KyOw0KKyMjIyAkS08944KzOw0KKyMjIyAkR08944K0Ow0KKw0KKyMjIyAkS0EyPeODtTsgIyBTbWFsbCBLYXRha2FuYSBLQTsgbm8gSGlyYWdhbmEgZXF1aXYuDQorIyMjICRLRTI944O2OyAjIFNtYWxsIEthdGFrYW5hIEtFOyBubyBIaXJhZ2FuYSBlcXVpdi4NCisNCisjIyMgJFNBPeOCtTsNCisjIyMgJFpBPeOCtjsNCisjIyMgJFNJPeOCtzsNCisjIyMgJFpJPeOCuDsNCisjIyMgJFNVPeOCuTsNCisjIyMgJFpVPeOCujsNCisjIyMgJFNFPeOCuzsNCisjIyMgJFpFPeOCvDsNCisjIyMgJFNPPeOCvTsNCisjIyMgJFpPPeOCvjsNCisNCisjIyMgJFRBPeOCvzsNCisjIyMgJERBPeODgDsNCisjIyMgJFRJPeODgTsNCisjIyMgJERJPeODgjsNCisjIyMgJFRVMj3jg4M7DQorIyMjICRUVT3jg4Q7DQorIyMjICREVT3jg4U7DQorIyMjICRURT3jg4Y7DQorIyMjICRERT3jg4c7DQorIyMjICRUTz3jg4g7DQorIyMjICRETz3jg4k7DQorDQorIyMjICROQT3jg4o7DQorIyMjICROST3jg4s7DQorIyMjICROVT3jg4w7DQorIyMjICRORT3jg407DQorIyMjICROTz3jg447DQorDQorIyMjICRIQT3jg487DQorIyMjICRCQT3jg5A7DQorIyMjICRQQT3jg5E7DQorIyMjICRIST3jg5I7DQorIyMjICRCST3jg5M7DQorIyMjICRQST3jg5Q7DQorIyMjICRIVT3jg5U7DQorIyMjICRCVT3jg5Y7DQorIyMjICRQVT3jg5c7DQorIyMjICRIRT3jg5g7DQorIyMjICRCRT3jg5k7DQorIyMjICRQRT3jg5o7DQorIyMjICRITz3jg5s7DQorIyMjICRCTz3jg5w7DQorIyMjICRQTz3jg507DQorDQorIyMjICRNQT3jg547DQorIyMjICRNST3jg587DQorIyMjICRNVT3jg6A7DQorIyMjICRNRT3jg6E7DQorIyMjICRNTz3jg6I7DQorDQorIyMjICRZQTI944OjOw0KKyMjIyAkWUE944OkOw0KKyMjIyAkWVUyPeODpTsNCisjIyMgJFlVPeODpjsNCisjIyMgJFlPMj3jg6c7DQorIyMjICRZTz3jg6g7DQorIyMjICRXQTI944OuOw0KKw0KKyMgQWx0ZXJuYXRlcywganVzdCB0byBtYWtlIHRoZSBydWxlcyBlYXNpZXINCisjIyMgJFlJMj3jgqM7DQorIyMjICRZST3jgqQ7DQorIyMjICRZRTI944KnOw0KKyMjIyAkWUU944KoOw0KKyMjIyAkV1U9JFU7DQorIyBFbmQgYWx0ZXJuYXRlcw0KKw0KKyMjIyAkUkE944OpOw0KKyMjIyAkUkk944OqOw0KKyMjIyAkUlU944OrOw0KKyMjIyAkUkU944OsOw0KKyMjIyAkUk8944OtOw0KKw0KKyMjIyAkVkE944O3Ow0KKyMjIyAkVkk944O4Ow0KKyMjIyAkVlU944O0Ow0KKyMjIyAkVkU944O5Ow0KKyMjIyAkVk8944O6Ow0KKw0KKyMjIyAkV0E944OvOw0KKyMjIyAkV0k944OwOw0KKyMjIyAkV0U944OxOw0KKyMjIyAkV08944OyOw0KKw0KKyMjIyAkTj3jg7M7DQorIyMjICRMT05HPeODvDsNCisNCisjIFZhcmlhYmxlcyB1c2VkIGZvciBkb3VibGVkLWNvbnNvbmFudHMgd2l0aCB0c3UNCisNCiskS19TVEFSVD1b44Kr44Kt44Kv44Kx44Kz44GL44GN44GP44GR44GTXTsNCiskR19TVEFSVD1b44Ks44Ku44Kw44Ky44K044GM44GO44GQ44GS44GUXTsNCisNCiskU19TVEFSVD1b44K144K344K544K744K944GV44GX44GZ44Gb44GdXTsNCiskWl9TVEFSVD1b44K244K644K844K+44GW44Ga44Gc44GeXTsNCiskSl9TVEFSVD1b44K444GYXTsNCisNCiskVF9TVEFSVD1b44K/44OB44OE44OG44OI44Gf44Gh44Gk44Gm44GoXTsNCiskRF9TVEFSVD1b44OA44OC44OF44OH44OJ44Gg44Gi44Gl44Gn44GpXTsNCisNCiskTl9TVEFSVD1b44OK44OL44OM44ON44OO44Gq44Gr44Gs44Gt44GuXTsNCisNCiskSF9TVEFSVD1b44OP44OS44OY44Ob44Gv44Gy44G444G7XTsNCiskRl9TVEFSVD1b44OV44G1XTsNCiskQl9TVEFSVD1b44OQ44OT44OW44OZ44Oc44Gw44Gz44G244G544G8XTsNCiskUF9TVEFSVD1b44OR44OU44OX44Oa44Od44Gx44G044G344G644G9XTsNCisNCiskTV9TVEFSVD1b44Oe44Of44Og44Oh44Oi44G+44G/44KA44KB44KCXTsNCisNCiskWV9TVEFSVD1b44Ok44Om44Oo44KE44KG44KIXTsNCisNCiskUl9TVEFSVD1b44Op44Oq44Or44Os44Ot44KJ44KK44KL44KM44KNXTsNCisNCiskV19TVEFSVD1b44Ov44Ow44Ox44Oy44KP44KQ44KR44KSXTsNCisNCiskVl9TVEFSVD1b44O344O444O044O544O644KUXTsNCisNCisjIElmIOODsyBpcyBmb2xsb3dlZCBieSAkTl9RVU9URVIsIHRoZW4gaXQgbmVlZHMgYW4NCisjIGFwb3N0cm9waGUgYWZ0ZXIgaXRzIHJvbWFqaSBmb3JtIHRvIGRpc2FtYmlndWF0ZSBpdC4NCisjIEUuZy4sIOODsyDjgqIgIT0g44OKLCBzbyByZXByZXNlbnQgYXMgIm4nYSIsIG5vdCAibmEiLg0KKw0KKyROX1FVT1RFUiA9IFvjgqIg44KkIOOCpiDjgqgg44KqIOODiiDjg4sg44OMIOODjSDjg44gXA0KKyAgICAgICAgICAgICDjg6Qg44OmIOODqCDjg7NdOw0KKw0KKyRuX3F1b3RlciA9IFvjgYIg44GEIOOBhiDjgYgg44GKIOOBqiDjgasg44GsIOOBrSDjga4gXA0KKyAgICAgICAgICAgICDjgoQg44KGIOOCiCDjgpNdOw0KKw0KKyMgTG93ZXJjYXNlIGNvcGllcyBmb3IgY29udmVuaWVuY2UgaW4gbWFraW5nIGhpcmFnYW5hDQorIyBydWxlIHNldCBjb3B5DQorDQorIyMjICRsb25nID0gJExPTkc7DQorIyMjICRxdW90ZSA9ICRRVU9URTsNCisjIyMgJGtfc3RhcnQ9JEtfU1RBUlQ7DQorIyMjICRnX3N0YXJ0PSRHX1NUQVJUOw0KKyMjIyAkc19zdGFydD0kU19TVEFSVDsNCisjIyMgJHpfc3RhcnQ9JFpfU1RBUlQ7DQorIyMjICRqX3N0YXJ0PSRKX1NUQVJUOw0KKyMjIyAkdF9zdGFydD0kVF9TVEFSVDsNCisjIyMgJGRfc3RhcnQ9JERfU1RBUlQ7DQorIyMjICRuX3N0YXJ0PSROX1NUQVJUOw0KKyMjIyAkaF9zdGFydD0kSF9TVEFSVDsNCisjIyMgJGZfc3RhcnQ9JEZfU1RBUlQ7DQorIyMjICRiX3N0YXJ0PSRCX1NUQVJUOw0KKyMjIyAkcF9zdGFydD0kUF9TVEFSVDsNCisjIyMgJG1fc3RhcnQ9JE1fU1RBUlQ7DQorIyMjICR5X3N0YXJ0PSRZX1NUQVJUOw0KKyMjIyAkcl9zdGFydD0kUl9TVEFSVDsNCisjIyMgJHdfc3RhcnQ9JFdfU1RBUlQ7DQorIyMjICR2X3N0YXJ0PSRWX1NUQVJUOw0KKw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIEthdGFrYW5hIHJ1bGVzDQorDQorIyBUaGUgcnVsZXMgaW1tZWRpYXRlbHkgZm9sbG93aW5nIGFyZSBub3Qgc2hhcmVkLiAgVGhhdA0KKyMgaXMsIHRoZXkgZXhpc3Qgb25seSBmb3Iga2F0YWthbmEsIG5vdCBmb3IgaGlyYWdhbmEuDQorDQorVkE8PuODtzsNCitWSTw+44O4Ow0KK1ZFPD7jg7k7DQorVk88PuODujsNCisnfktBJzw+44O1Ow0KKyd+S0UnPD7jg7Y7DQorDQorIyB+fn4gQkVHSU4gc2hhcmVkIHJ1bGVzIH5+fg0KKw0KKyMgVGhlIHNoYXJlZCBydWxlcyBhcmUgY29waWVkIGZyb20ga2F0YWthbmEgdG8gaGlyYWdhbmENCisjIGFuZCB0aGVuIG1lY2hhbmljYWxseSBsb3dlcmNhc2VkLg0KKw0KK0E8PuOCojsNCisNCitCQTw+44OQOw0KK0JZQTzjg5Pjg6M7DQorQllJPOODk+OCozsNCitCWVU844OT44OlOw0KK0JZRTzjg5Pjgqc7DQorQllPPOODk+ODpzsNCitCSTw+44OTOw0KK0JVPD7jg5Y7DQorQkU8PuODmTsNCitCTzw+44OcOw0KK0JZPuODk3wnflknOw0KKw0KK0NIQTzjg4Hjg6M7DQorQ0hJJ35JJzzjg4HjgqM7ICMgTGl1DQorQ0hVPOODgeODpTsNCitDSEU844OB44KnOw0KK0NITzzjg4Hjg6c7DQorQ0hJPD7jg4E7DQorQ0g+44OBfCd+WSc7DQorDQorQ31JPnxTOw0KK0N9RT58UzsNCisNCitEQTw+44OAOw0KK0RJPD7jg4fjgqM7DQorRFU8PuODh+OCpTsNCitERTw+44OHOw0KK0RPPD7jg4k7DQorRFpVPD7jg4U7DQorREpBPOODguODozsNCitESkknfkknPOODguOCozsgIyBMaXUNCitESlU844OC44OlOw0KK0RKRTzjg4Ljgqc7DQorREpPPOODguODpzsNCitESkk8PuODgjsNCitESj7jg4J8J35ZJzsNCisNCitFPD7jgqg7DQorDQorRkE844OV44KhOw0KK0ZJPOODleOCozsNCitGRTzjg5Xjgqc7DQorRk8844OV44KpOw0KK0ZVPD7jg5U7DQorDQorR0E8PuOCrDsNCitHWUE844Ku44OjOw0KK0dZSTzjgq7jgqM7DQorR1lVPOOCruODpTsNCitHWUU844Ku44KnOw0KK0dZTzzjgq7jg6c7DQorR0k8PuOCrjsNCitHVTw+44KwOw0KK0dFPD7jgrI7DQorR088PuOCtDsNCitHWT7jgq58J35ZJzsNCisNCitIQTw+44OPOw0KK0hJPD7jg5I7DQorSFU8PuODmOOCpTsNCitIRTw+44OYOw0KK0hPPD7jg5s7DQorDQorSTw+44KkOw0KKw0KK0pBPOOCuOODozsNCitKSSd+SSc844K444KjOyAjIExpdQ0KK0pVPOOCuOODpTsNCitKRTzjgrjjgqc7DQorSk8844K444OnOw0KK0pJPD7jgrg7DQorDQorS0E8PuOCqzsNCitLWUE844Kt44OjOw0KK0tZSTzjgq3jgqM7DQorS1lVPOOCreODpTsNCitLWUU844Kt44KnOw0KK0tZTzzjgq3jg6c7DQorS0k8PuOCrTsNCitLVTw+44KvOw0KK0tFPD7jgrE7DQorS088PuOCszsNCitLWT7jgq18J35ZJzsNCisNCitNQTw+44OeOw0KK01ZQTzjg5/jg6M7DQorTVlJPOODn+OCozsNCitNWVU844Of44OlOw0KK01ZRTzjg5/jgqc7DQorTVlPPOODn+ODpzsNCitNSTw+44OfOw0KK01VPD7jg6A7DQorTUU8PuODoTsNCitNTzw+44OiOw0KK01ZPuODn3wnflknOw0KKw0KK019UD7jg7M7DQorTX1CPuODszsNCitNfUY+44OzOw0KK019Vj7jg7M7DQorDQorTkE8PuODijsNCitOWUE844OL44OjOw0KK05ZSTzjg4vjgqM7DQorTllVPOODi+ODpTsNCitOWUU844OL44KnOw0KK05ZTzzjg4vjg6c7DQorTkk8PuODizsNCitOVTw+44OMOw0KK05FPD7jg407DQorTk88PuODjjsNCitOWT7jg4t8J35ZJzsNCisNCitPPD7jgqo7DQorDQorUEE8PuODkTsNCitQWUE844OU44OjOw0KK1BZSTzjg5TjgqM7DQorUFlVPOODlOODpTsNCitQWUU844OU44KnOw0KK1BZTzzjg5Tjg6c7DQorUEk8PuODlDsNCitQVTw+44OXOw0KK1BFPD7jg5o7DQorUE88PuODnTsNCitQWT7jg5R8J35ZJzsNCisNCitSQTw+44OpOw0KK1JZQTzjg6rjg6M7DQorUllJPOODquOCozsNCitSWVU844Oq44OlOw0KK1JZRTzjg6rjgqc7DQorUllPPOODquODpzsNCitSSTw+44OqOw0KK1JVPD7jg6s7DQorUkU8PuODrDsNCitSTzw+44OtOw0KK1JZPuODqnwnflknOw0KKw0KK1NBPD7jgrU7DQorU0k8PuOCu+OCozsNCitTVTw+44K5Ow0KK1NFPD7jgrs7DQorU088PuOCvTsNCisNCitTSEE844K344OjOw0KK1NISSd+SSc844K344KjOyAjIExpdQ0KK1NIVTzjgrfjg6U7DQorU0hFPOOCt+OCpzsNCitTSE8844K344OnOw0KK1NISTw+44K3Ow0KK1NIPuOCt3wnflknOw0KKw0KK1RBPD7jgr87DQorVEk8PuODhuOCozsNCitUVTw+44OG44KlOw0KK1RFPD7jg4Y7DQorVE88PuODiDsNCisNCisjIERvdWJsZSBjb25zb25hbnRzDQorDQorQn1CPD7jg4N9JEJfU1RBUlQ7DQorQ31LPuODgzsNCitDfUM+44ODOw0KK0N9UT7jg4M7DQorRH1EPD7jg4N9JERfU1RBUlQ7DQorRn1GPD7jg4N9JEZfU1RBUlQ7DQorR31HPD7jg4N9JEdfU1RBUlQ7DQorSH1IPD7jg4N9JEhfU1RBUlQ7DQorSn1KPD7jg4N9JEpfU1RBUlQ7DQorS31LPD7jg4N9JEtfU1RBUlQ7DQorTH1MPuODgzsNCitNfU08PuODg30kTV9TVEFSVDsNCitOfU48PuODg30kTl9TVEFSVDsNCitQfVA8PuODg30kUF9TVEFSVDsNCitRfVE+44ODOw0KK1J9Ujw+44ODfSRSX1NUQVJUOw0KK1N9U0g+44ODOw0KK1N9Uzw+44ODfSRTX1NUQVJUOw0KK1R9Q0g+44ODOw0KK1R9VDw+44ODfSRUX1NUQVJUOw0KK1Z9Vjw+44ODfSRWX1NUQVJUOw0KK1d9Vzw+44ODfSRXX1NUQVJUOw0KK1h9WD7jg4M7DQorWX1ZPD7jg4N9JFlfU1RBUlQ7DQorWn1aPD7jg4N9JFpfU1RBUlQ7DQorDQorVFNVPD7jg4Q7DQorDQorVTw+44KmOw0KKw0KKydWfkEnPOODtOOCoTsgIyBMaXUNCisnVn5JJzzjg7TjgqM7ICMgTGl1DQorJ1Z+RSc844O044KnOyAjIExpdQ0KKydWfk8nPOODtOOCqTsgIyBMaXUNCitWVTw+44O0Ow0KKw0KK1dBPD7jg687DQorV0k8PuODsDsNCitXVT7jgqY7DQorV0U8PuODsTsNCitXTzw+44OyOw0KKw0KK1lBPD7jg6Q7DQorWUk+44KkOw0KK1lVPD7jg6Y7DQorWUU+44KoOw0KK1lPPD7jg6g7DQorDQorWkE8PuOCtjsNCitaSTw+44K844KjOw0KK1pVPD7jgro7DQorWkU8PuOCvDsNCitaTzw+44K+Ow0KKw0KKyMgUHJvbG9uZ2VkIHZvd2VsIG1hcmsuIFRoaXMgaW5kaWNhdGVzIGEgZG91Ymxpbmcgb2YNCisjIHRoZSBwcmVjZWRpbmcgdm93ZWwgc291bmQgaW4gYm90aCBrYXRha2FuYSBhbmQNCisjIGhpcmFnYW5hLg0KKw0KK0E8QXvjg7w7ICMgTGl1DQorRTxFe+ODvDsgIyBMaXUNCitJPEl744O8OyAjIExpdQ0KK088T3vjg7w7ICMgTGl1DQorVTxVe+ODvDsgIyBMaXUNCisNCisjIFNtYWxsIGZvcm1zDQorDQorJ35BJzw+44KhOw0KKyd+SSc8PuOCozsNCisnflUnPD7jgqU7DQorJ35FJzw+44KnOw0KKyd+Tyc8PuOCqTsNCisnflRTVSc8PuODgzsNCisnfldBJzw+44OuOw0KKyd+WUEnPD7jg6M7DQorJ35ZSSc+44KjOw0KKyd+WVUnPD7jg6U7DQorJ35ZRSc+44KnOw0KKyd+WU8nPD7jg6c7DQorDQorIyBPbmUtd2F5IGxhdGluLT5rYW5hIHJ1bGVzLiAgVGhlc2UgZG8gbm90IG9jY3VyIGluDQorIyB3ZWxsLWZvcm1lZCByb21hamkgcmVwcmVzZW50aW5nIGFjdHVhbCBKYXBhbmVzZSB0ZXh0Lg0KKyMgVGhlaXIgcHVycG9zZSBpcyB0byBtYWtlIGFsbCByb21hamkgbWFwIHRvIGthbmEgb2YNCisjIHNvbWUgc29ydC4NCisNCisjIFRoZSBmb2xsb3dpbmcgYXJlIG5vdCByZWFsbHkgbmVjZXNzYXJ5LCBidXQgcHJvZHVjZQ0KKyMgc2xpZ2h0bHkgbW9yZSBuYXR1cmFsIHJlc3VsdHMuDQorDQorQ1k+44K744KjOw0KK0RZPuODh+OCozsNCitIWT7jg5I7DQorU1k+44K744KjOw0KK1RZPuODhuOCozsNCitaWT7jgrzjgqM7DQorDQorIyBTaW1wbGUgc3Vic3RpdHV0aW9ucyB1c2luZyBiYWNrdXANCisNCitDPnxLOw0KK0Y+44OVfCd+JzsNCitKPuOCuHwnflknOw0KK0w+fFI7DQorUT58SzsNCitWPuODtHwnfic7DQorVz7jgqZ8J34nOw0KK1g+fEtTOw0KKw0KKyMgSXNvbGF0ZWQgY29uc29uYW50cyBsaXN0ZWQgaGVyZSBzbyBhcyBub3QgdG8gbWFzaw0KKyMgbG9uZ2VyIHJ1bGVzIGFib3ZlLg0KKw0KK0I+44OWOw0KK0Q+44OHOw0KK0c+44KwOw0KK0g+44OYOw0KK0s+44KvOw0KK00+44OzOw0KK04nJzzjg7N9JE5fUVVPVEVSOw0KK048PuODszsNCitQPuODlzsNCitSPuODqzsNCitTPuOCuTsNCitUPuODhjsNCitZPuOCpDsNCitaPuOCujsNCisNCisjIH5+fiBFTkQgc2hhcmVkIHJ1bGVzIH5+fg0KKw0KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisjIEhpcmFnYW5hIHJ1bGVzDQorDQorIyBDdXJyZW50bHksIHRoZXJlIGFyZSBubyBoaXJhZ2FuYSBydWxlcyBvdGhlciB0aGFuIHRoZQ0KKyMgc2hhcmVkIHJ1bGVzLg0KKw0KKyMgfn5+IEJFR0lOIHNoYXJlZCBydWxlcyB+fn4NCisNCisjIFRoZSBzaGFyZWQgcnVsZXMgYXJlIGNvcGllZCBmcm9tIGthdGFrYW5hIHRvIGhpcmFnYW5hDQorIyBhbmQgdGhlbiBtZWNoYW5pY2FsbHkgbG93ZXJjYXNlZC4NCisNCithPD7jgYI7DQorDQorYmE8PuOBsDsNCitieWE844Gz44KDOw0KK2J5aTzjgbPjgYM7DQorYnl1POOBs+OChTsNCitieWU844Gz44GHOw0KK2J5bzzjgbPjgoc7DQorYmk8PuOBszsNCitidTw+44G2Ow0KK2JlPD7jgbk7DQorYm88PuOBvDsNCitieT7jgbN8J355JzsNCisNCitjaGE844Gh44KDOw0KK2NoaSd+aSc844Gh44GDOyAjIGxpdQ0KK2NodTzjgaHjgoU7DQorY2hlPOOBoeOBhzsNCitjaG8844Gh44KHOw0KK2NoaTw+44GhOw0KK2NoPuOBoXwnfnknOw0KKw0KK2N9aT58czsNCitjfWU+fHM7DQorDQorZGE8PuOBoDsNCitkaTw+44Gn44GDOw0KK2R1PD7jgafjgYU7DQorZGU8PuOBpzsNCitkbzw+44GpOw0KK2R6dTw+44GlOw0KK2RqYTzjgaLjgoM7DQorZGppJ35pJzzjgaLjgYM7ICMgbGl1DQorZGp1POOBouOChTsNCitkamU844Gi44GHOw0KK2RqbzzjgaLjgoc7DQorZGppPD7jgaI7DQorZGo+44GifCd+eSc7DQorDQorZTw+44GIOw0KKw0KK2ZhPOOBteOBgTsNCitmaTzjgbXjgYM7DQorZmU844G144GHOw0KK2ZvPOOBteOBiTsNCitmdTw+44G1Ow0KKw0KK2dhPD7jgYw7DQorZ3lhPOOBjuOCgzsNCitneWk844GO44GDOw0KK2d5dTzjgY7jgoU7DQorZ3llPOOBjuOBhzsNCitneW8844GO44KHOw0KK2dpPD7jgY47DQorZ3U8PuOBkDsNCitnZTw+44GSOw0KK2dvPD7jgZQ7DQorZ3k+44GOfCd+eSc7DQorDQoraGE8PuOBrzsNCitoaTw+44GyOw0KK2h1PD7jgbjjgYU7DQoraGU8PuOBuDsNCitobzw+44G7Ow0KKw0KK2k8PuOBhDsNCisNCitqYTzjgZjjgoM7DQoramknfmknPOOBmOOBgzsgIyBsaXUNCitqdTzjgZjjgoU7DQoramU844GY44GHOw0KK2pvPOOBmOOChzsNCitqaTw+44GYOw0KKw0KK2thPD7jgYs7DQora3lhPOOBjeOCgzsNCitreWk844GN44GDOw0KK2t5dTzjgY3jgoU7DQora3llPOOBjeOBhzsNCitreW8844GN44KHOw0KK2tpPD7jgY07DQora3U8PuOBjzsNCitrZTw+44GROw0KK2tvPD7jgZM7DQora3k+44GNfCd+eSc7DQorDQorbWE8PuOBvjsNCitteWE844G/44KDOw0KK215aTzjgb/jgYM7DQorbXl1POOBv+OChTsNCitteWU844G/44GHOw0KK215bzzjgb/jgoc7DQorbWk8PuOBvzsNCittdTw+44KAOw0KK21lPD7jgoE7DQorbW88PuOCgjsNCitteT7jgb98J355JzsNCisNCittfXA+44KTOw0KK219Yj7jgpM7DQorbX1mPuOCkzsNCittfXY+44KTOw0KKw0KK25hPD7jgao7DQorbnlhPOOBq+OCgzsNCitueWk844Gr44GDOw0KK255dTzjgavjgoU7DQorbnllPOOBq+OBhzsNCitueW8844Gr44KHOw0KK25pPD7jgas7DQorbnU8PuOBrDsNCituZTw+44GtOw0KK25vPD7jga47DQorbnk+44GrfCd+eSc7DQorDQorbzw+44GKOw0KKw0KK3BhPD7jgbE7DQorcHlhPOOBtOOCgzsNCitweWk844G044GDOw0KK3B5dTzjgbTjgoU7DQorcHllPOOBtOOBhzsNCitweW8844G044KHOw0KK3BpPD7jgbQ7DQorcHU8PuOBtzsNCitwZTw+44G6Ow0KK3BvPD7jgb07DQorcHk+44G0fCd+eSc7DQorDQorcmE8PuOCiTsNCityeWE844KK44KDOw0KK3J5aTzjgorjgYM7DQorcnl1POOCiuOChTsNCityeWU844KK44GHOw0KK3J5bzzjgorjgoc7DQorcmk8PuOCijsNCitydTw+44KLOw0KK3JlPD7jgow7DQorcm88PuOCjTsNCityeT7jgop8J355JzsNCisNCitzYTw+44GVOw0KK3NpPD7jgZvjgYM7DQorc3U8PuOBmTsNCitzZTw+44GbOw0KK3NvPD7jgZ07DQorDQorc2hhPOOBl+OCgzsNCitzaGknfmknPOOBl+OBgzsgIyBsaXUNCitzaHU844GX44KFOw0KK3NoZTzjgZfjgYc7DQorc2hvPOOBl+OChzsNCitzaGk8PuOBlzsNCitzaD7jgZd8J355JzsNCisNCit0YTw+44GfOw0KK3RpPD7jgabjgYM7DQordHU8PuOBpuOBhTsNCit0ZTw+44GmOw0KK3RvPD7jgag7DQorDQorIyBkb3VibGUgY29uc29uYW50cw0KKw0KK2J9Yjw+44GjfSRCX1NUQVJUOw0KK2N9az7jgaM7DQorY31jPuOBozsNCitjfXE+44GjOw0KK2R9ZDw+44GjfSREX1NUQVJUOw0KK2Z9Zjw+44GjfSRGX1NUQVJUOw0KK2d9Zzw+44GjfSRHX1NUQVJUOw0KK2h9aDw+44GjfSRIX1NUQVJUOw0KK2p9ajw+44GjfSRKX1NUQVJUOw0KK2t9azw+44GjfSRLX1NUQVJUOw0KK2x9bD7jgaM7DQorbX1tPD7jgaN9JE1fU1RBUlQ7DQorbn1uPD7jgaN9JE5fU1RBUlQ7DQorcH1wPD7jgaN9JFBfU1RBUlQ7DQorcX1xPuOBozsNCityfXI8PuOBo30kUl9TVEFSVDsNCitzfXNoPuOBozsNCitzfXM8PuOBo30kU19TVEFSVDsNCit0fWNoPuOBozsNCit0fXQ8PuOBo30kVF9TVEFSVDsNCit2fXY8PuOBo30kVl9TVEFSVDsNCit3fXc8PuOBo30kV19TVEFSVDsNCit4fXg+44GjOw0KK3l9eTw+44GjfSRZX1NUQVJUOw0KK3p9ejw+44GjfSRaX1NUQVJUOw0KKw0KK3RzdTw+44GkOw0KKw0KK3U8PuOBhjsNCisNCisndn5hJzzjgpTjgYE7ICMgbGl1DQorJ3Z+aSc844KU44GDOyAjIGxpdQ0KKyd2fmUnPOOClOOBhzsgIyBsaXUNCisndn5vJzzjgpTjgYk7ICMgbGl1DQordnU8PuOClDsNCisNCit3YTw+44KPOw0KK3dpPD7jgpA7DQord3U+44GGOw0KK3dlPD7jgpE7DQord288PuOCkjsNCisNCit5YTw+44KEOw0KK3lpPuOBhDsNCit5dTw+44KGOw0KK3llPuOBiDsNCit5bzw+44KIOw0KKw0KK3phPD7jgZY7DQoremk8PuOBnOOBgzsNCit6dTw+44GaOw0KK3plPD7jgZw7DQorem88PuOBnjsNCisNCisjIHByb2xvbmdlZCB2b3dlbCBtYXJrLiB0aGlzIGluZGljYXRlcyBhIGRvdWJsaW5nIG9mDQorIyB0aGUgcHJlY2VkaW5nIHZvd2VsIHNvdW5kIGluIGJvdGgga2F0YWthbmEgYW5kDQorIyBoaXJhZ2FuYS4NCisNCithPGF744O8OyAjIGxpdQ0KK2U8ZXvjg7w7ICMgbGl1DQoraTxpe+ODvDsgIyBsaXUNCitvPG9744O8OyAjIGxpdQ0KK3U8dXvjg7w7ICMgbGl1DQorDQorIyBzbWFsbCBmb3Jtcw0KKw0KKyd+YSc8PuOBgTsNCisnfmknPD7jgYM7DQorJ351Jzw+44GFOw0KKyd+ZSc8PuOBhzsNCisnfm8nPD7jgYk7DQorJ350c3UnPD7jgaM7DQorJ353YSc8PuOCjjsNCisnfnlhJzw+44KDOw0KKyd+eWknPuOBgzsNCisnfnl1Jzw+44KFOw0KKyd+eWUnPuOBhzsNCisnfnlvJzw+44KHOw0KKw0KKyMgb25lLXdheSBsYXRpbi0+a2FuYSBydWxlcy4gIHRoZXNlIGRvIG5vdCBvY2N1ciBpbg0KKyMgd2VsbC1mb3JtZWQgcm9tYWppIHJlcHJlc2VudGluZyBhY3R1YWwgamFwYW5lc2UgdGV4dC4NCisjIHRoZWlyIHB1cnBvc2UgaXMgdG8gbWFrZSBhbGwgcm9tYWppIG1hcCB0byBrYW5hIG9mDQorIyBzb21lIHNvcnQuDQorDQorIyB0aGUgZm9sbG93aW5nIGFyZSBub3QgcmVhbGx5IG5lY2Vzc2FyeSwgYnV0IHByb2R1Y2UNCisjIHNsaWdodGx5IG1vcmUgbmF0dXJhbCByZXN1bHRzLg0KKw0KK2N5PuOBm+OBgzsNCitkeT7jgafjgYM7DQoraHk+44GyOw0KK3N5PuOBm+OBgzsNCit0eT7jgabjgYM7DQorenk+44Gc44GDOw0KKw0KKyMgc2ltcGxlIHN1YnN0aXR1dGlvbnMgdXNpbmcgYmFja3VwDQorDQorYz58azsNCitmPuOBtXwnfic7DQoraj7jgZh8J355JzsNCitsPnxyOw0KK3E+fGs7DQordj7jgpR8J34nOw0KK3c+44GGfCd+JzsNCit4PnxrczsNCisNCisjIGlzb2xhdGVkIGNvbnNvbmFudHMgbGlzdGVkIGhlcmUgc28gYXMgbm90IHRvIG1hc2sNCisjIGxvbmdlciBydWxlcyBhYm92ZS4NCisNCitiPuOBtjsNCitkPuOBpzsNCitnPuOBkDsNCitoPuOBuDsNCitrPuOBjzsNCittPuOCkzsNCituJyc844KTfSRuX3F1b3RlcjsNCituPD7jgpM7DQorcD7jgbc7DQorcj7jgos7DQorcz7jgZk7DQordD7jgaY7DQoreT7jgYQ7DQorej7jgZo7DQorDQorIyB+fn4gRU5EIHNoYXJlZCBydWxlcyB+fn4NCisNCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBGaW5hbCBjbGVhbnVwDQorDQorJ34nPjsgIyBkZWxldGUgc3RyYXkgdGlsZGVzDQorJyc+OyAjIGRlbGV0ZSBzdHJheSBxdW90ZXMNCisnLSc+44O8Ow0KKw0KKyMgZW9mDQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfTWFsYXlhbGFtX0ludGVySW5kaWMudXRmOC50eHQgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9NYWxheWFsYW1fSW50ZXJJbmRpYy51dGY4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wZGEwYjM2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfTWFsYXlhbGFtX0ludGVySW5kaWMudXRmOC50eHQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfT3JpeWFfSW50ZXJJbmRpYy51dGY4LnR4dCBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX09yaXlhX0ludGVySW5kaWMudXRmOC50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmQzYzRmNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX09yaXlhX0ludGVySW5kaWMudXRmOC50eHQKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfU3RyYWlnaHRRdW90ZXNfQ3VybHlRdW90ZXMudXRmOC50eHQgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9TdHJhaWdodFF1b3Rlc19DdXJseVF1b3Rlcy51dGY4LnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kZjRlZjkxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfU3RyYWlnaHRRdW90ZXNfQ3VybHlRdW90ZXMudXRmOC50eHQKQEAgLTAsMCArMSw3NyBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcw0KKyMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBEYXRlOiBUdWUgSmFuIDIzIDEyOjQyOjA3IDIwMDENCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCisjIFN0cmFpZ2h0UXVvdGVzLUN1cmx5UXVvdGVzDQorDQorIyBSZXdyaXR0ZW4gdXNpbmcgY2hhcmFjdGVyIGNvZGVzIFtMSVVdDQorJHdoaXRlPVtbOlpzOl1bOlpsOl1bOlpwOl1dOw0KKyRibGFjaz1bXiR3aGl0ZV07DQorJG9wZW49WzpQczpdOw0KKyMjIyAkZHF1b3RlPSdcIic7DQorDQorIyMjICRsQW5nPeOAiDsNCisjIyMgJGxkQW5nPeOAijsNCisjIyMgJGxCcms9J1snOw0KKyMjIyAkbEJyYz0neyc7DQorDQorIyMjICRscXVvdGU94oCYOw0KKyMjIyAkcnF1b3RlPeKAmTsNCisjIyMgJGxkcXVvdGU94oCcOw0KKyMjIyAkcmRxdW90ZT3igJ07DQorDQorIyMjICRsZGd1aWxsPcKrOw0KKyMjIyAkcmRndWlsbD3CuzsNCisjIyMgJGxndWlsbD3igLk7DQorIyMjICRyZ3VpbGw94oC6Ow0KKw0KKyMjIyAkbWRhc2g94oCUOw0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisjIENvbnZlcnNpb25zIGZyb20gaW5wdXQNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorDQorIyBqb2luIHNpbmdsZSBxdW90ZXMNCivigJgnJz7igJw7DQor4oCY4oCYPuKAnDsNCivigJknJz7igJ07DQor4oCZ4oCZPuKAnTsNCisNCisjc21hcnQgc2luZ2xlIHF1b3Rlcw0KKyR3aGl0ZXsnJz7igJg7DQorJG9wZW57Jyc+4oCYOw0KKyRibGFja3snJz7igJk7DQorJyc+4oCYOw0KKw0KKyNzbWFydCBkb3VibGVzDQorJHdoaXRleydcIic+4oCcOw0KKyRvcGVueydcIic+4oCcOw0KKyRibGFja3snXCInPuKAnTsNCisnXCInPuKAnDsNCisNCisjIGpvaW4gc2luZ2xlIGd1aWxsZW1ldHMNCivigLrigLo+wrs7DQorJz4+Jz7CuzsNCivigLnigLk+wqs7DQorJzw8Jz7CqzsNCisNCisjIHByZXZlbnQgZG91YmxlIHNwYWNlcw0KK1xcIHtcXCA+Ow0KKw0KKyMgam9pbiBoeXBoZW5zIGludG8gZGFzaCAjIyMgQklESVJFQ1RJT05BTCAjIyMNCisnLS0nPD7igJQ7DQorDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgQ29udmVyc2lvbnMgYmFjayB0byBpbnB1dA0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisNCisjc21hcnQgcXVvdGVzDQorJyc84oCYOw0KKycnPOKAmTsNCisnXCInPOKAnDsNCisnXCInPOKAnTsNCisNCisjIGVvZg0KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX1RhbWlsX0ludGVySW5kaWMudXRmOC50eHQgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9UYW1pbF9JbnRlckluZGljLnV0ZjgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmM5MDJiMjEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9UYW1pbF9JbnRlckluZGljLnV0ZjgudHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX1RlbHVndV9JbnRlckluZGljLnV0ZjgudHh0IGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfVGVsdWd1X0ludGVySW5kaWMudXRmOC50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDE0MTgzZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX1RlbHVndV9JbnRlckluZGljLnV0ZjgudHh0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX1VuaWNvZGVOYW1lX1VuaWNvZGVDaGFyLnV0ZjgudHh0IGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvVHJhbnNsaXRlcmF0b3JfVW5pY29kZU5hbWVfVW5pY29kZUNoYXIudXRmOC50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYmE1YWNlMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX1VuaWNvZGVOYW1lX1VuaWNvZGVDaGFyLnV0ZjgudHh0CkBAIC0wLDAgKzEsMTUyMiBAQAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBDb3B5cmlnaHQgKGMpIDE5OTktMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcw0KKyMgQ29ycG9yYXRpb24gYW5kIG90aGVycy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuDQorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorIyBEYXRlOiBUdWUgSmFuIDIzIDEyOjQyOjA4IDIwMDENCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCisjIFVuaWNvZGVOYW1lLVVuaWNvZGVDaGFyDQorDQorJ2FjY291bnQgb2YlJz7ihIANCisnYWRkcmVzc2VkIHRvIHRoZSBzdWJqZWN0JSc+4oSBDQorJ2FkaSBzaGFrdGklJz7imKwNCisnYWlycGxhbmUlJz7inIgNCisnYWxsIGVxdWFsIHRvJSc+4omMDQorJ2FsbW9zdCBlcXVhbCBvciBlcXVhbCB0byUnPuKJig0KKydhbG1vc3QgZXF1YWwgdG8lJz7iiYgNCisnYW5nbGUlJz7iiKANCisnYW5nc3Ryb20gdW5pdCUnPuKEqw0KKydhbmtoJSc+4pilDQorJ2FudGljbG9ja3dpc2UgY29udG91ciBpbnRlZ3JhbCUnPuKIsw0KKydhbnRpY2xvY2t3aXNlIG9wZW4gY2lyY2xlIGFycm93JSc+4oa6DQorJ2FudGljbG9ja3dpc2UgdG9wIHNlbWljaXJjbGUgYXJyb3clJz7ihrYNCisnYXBsIGNvbXBvc2Ugb3BlcmF0b3IlJz7ijIANCisnYXBsIG91dCUnPuKMgQ0KKydhcHBsZSBsb2dvJSc+76O/DQorJ2FwcHJvYWNoZXMgdGhlIGxpbWl0JSc+4omQDQorJ2FwcHJveGltYXRlbHkgYnV0IG5vdCBhY3R1YWxseSBlcXVhbCB0byUnPuKJhg0KKydhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIG9yIHRoZSBpbWFnZSBvZiUnPuKJkg0KKydhcHByb3hpbWF0ZWx5IGVxdWFsIHRvJSc+4omFDQorJ2FxdWFyaXVzJSc+4pmSDQorJ2FyYyUnPuKMkg0KKydhcmllcyUnPuKZiA0KKydhc2NlbmRpbmcgbm9kZSUnPuKYig0KKydhc3NlcnRpb24lJz7iiqYNCisnYXN0ZXJpc2sgb3BlcmF0b3IlJz7iiJcNCisnYXN0ZXJpc20lJz7igYINCisnYXN5bXB0b3RpY2FsbHkgZXF1YWwgdG8lJz7iiYMNCisnYmFjay10aWx0ZWQgc2hhZG93ZWQgd2hpdGUgcmlnaHQgYXJyb3clJz7inqsNCisnYmFsbG9vbi1zcG9rZWQgYXN0ZXJpc2slJz7inYkNCisnYmFsbG90IGJveCB3aXRoIGNoZWNrJSc+4piRDQorJ2JhbGxvdCBib3ggd2l0aCB4JSc+4piSDQorJ2JhbGxvdCBib3glJz7imJANCisnYmFsbG90IHglJz7inJgNCisnYmFycmVkIGVpZ2h0aCBub3RlcyUnPuKZqw0KKydiYXJyZWQgc2l4dGVlbnRoIG5vdGVzJSc+4pmsDQorJ2JlY2F1c2UlJz7iiLUNCisnYmVuemVuZSByaW5nJSc+4oysDQorJ2JldHdlZW4lJz7iiawNCisnYmlvaGF6YXJkJSc+4pijDQorJ2JsYWNrIGNlbnRlciB3aGl0ZSBzdGFyJSc+4pysDQorJ2JsYWNrIGNoZXNzIGJpc2hvcCUnPuKZnQ0KKydibGFjayBjaGVzcyBraW5nJSc+4pmaDQorJ2JsYWNrIGNoZXNzIGtuaWdodCUnPuKZng0KKydibGFjayBjaGVzcyBwYXduJSc+4pmfDQorJ2JsYWNrIGNoZXNzIHF1ZWVuJSc+4pmbDQorJ2JsYWNrIGNoZXNzIHJvb2slJz7imZwNCisnYmxhY2sgY2lyY2xlJSc+4pePDQorJ2JsYWNrIGNsdWIgc3VpdCUnPuKZow0KKydibGFjayBkaWFtb25kIG1pbnVzIHdoaXRlIHglJz7inZYNCisnYmxhY2sgZGlhbW9uZCBzdWl0JSc+4pmmDQorJ2JsYWNrIGRpYW1vbmQlJz7il4YNCisnYmxhY2sgZG93biBwb2ludGluZyBzbWFsbCB0cmlhbmdsZSUnPuKWvg0KKydibGFjayBkb3duIHBvaW50aW5nIHRyaWFuZ2xlJSc+4pa8DQorJ2JsYWNrIGZsb3JldHRlJSc+4py/DQorJ2JsYWNrIGZvdXIgcG9pbnRlZCBzdGFyJSc+4pymDQorJ2JsYWNrIGhlYXJ0IHN1aXQlJz7imaUNCisnYmxhY2sgbGVmdCBwb2ludGluZyBpbmRleCUnPuKYmg0KKydibGFjayBsZWZ0IHBvaW50aW5nIHBvaW50ZXIlJz7il4QNCisnYmxhY2sgbGVmdCBwb2ludGluZyBzbWFsbCB0cmlhbmdsZSUnPuKXgg0KKydibGFjayBsZWZ0IHBvaW50aW5nIHRyaWFuZ2xlJSc+4peADQorJ2JsYWNrIGxvd2VyIGxlZnQgdHJpYW5nbGUlJz7il6MNCisnYmxhY2sgbG93ZXIgcmlnaHQgdHJpYW5nbGUlJz7il6INCisnYmxhY2sgbmliJSc+4pySDQorJ2JsYWNrIHBhcmFsbGVsb2dyYW0lJz7ilrANCisnYmxhY2sgcmVjdGFuZ2xlJSc+4pasDQorJ2JsYWNrIHJpZ2h0IGFycm93JSc+4p6hDQorJ2JsYWNrIHJpZ2h0IGFycm93aGVhZCUnPuKepA0KKydibGFjayByaWdodCBwb2ludGluZyBpbmRleCUnPuKYmw0KKydibGFjayByaWdodCBwb2ludGluZyBwb2ludGVyJSc+4pa6DQorJ2JsYWNrIHJpZ2h0IHBvaW50aW5nIHNtYWxsIHRyaWFuZ2xlJSc+4pa4DQorJ2JsYWNrIHJpZ2h0IHBvaW50aW5nIHRyaWFuZ2xlJSc+4pa2DQorJ2JsYWNrIHNjaXNzb3JzJSc+4pyCDQorJ2JsYWNrIHNtYWxsIHNxdWFyZSUnPuKWqg0KKydibGFjayBzbWlsaW5nIGZhY2UlJz7imLsNCisnYmxhY2sgc3BhZGUgc3VpdCUnPuKZoA0KKydibGFjayBzcXVhcmUlJz7ilqANCisnYmxhY2sgc3RhciUnPuKYhQ0KKydibGFjayBzdW4gd2l0aCByYXlzJSc+4piADQorJ2JsYWNrIHRlbGVwaG9uZSUnPuKYjg0KKydibGFjayB1cCBwb2ludGluZyBzbWFsbCB0cmlhbmdsZSUnPuKWtA0KKydibGFjayB1cCBwb2ludGluZyB0cmlhbmdsZSUnPuKWsg0KKydibGFjayB1cHBlciBsZWZ0IHRyaWFuZ2xlJSc+4pekDQorJ2JsYWNrIHVwcGVyIHJpZ2h0IHRyaWFuZ2xlJSc+4pelDQorJ2JsYWNrIHZlcnRpY2FsIHJlY3RhbmdsZSUnPuKWrg0KKydibGFjay1mZWF0aGVyZWQgbG93ZXIgcmlnaHQgYXJyb3clJz7inrQNCisnYmxhY2stZmVhdGhlcmVkIHJpZ2h0IGFycm93JSc+4p61DQorJ2JsYWNrLWZlYXRoZXJlZCB1cHBlciByaWdodCBhcnJvdyUnPuKetg0KKydibGFjay1sZXR0ZXIgYyUnPuKErQ0KKydibGFjay1sZXR0ZXIgaCUnPuKEjA0KKydibGFjay1sZXR0ZXIgaSUnPuKEkQ0KKydibGFjay1sZXR0ZXIgciUnPuKEnA0KKydibGFjay1sZXR0ZXIgeiUnPuKEqA0KKydibGFuayUnPuKQog0KKydib3R0b20gaGFsZiBpbnRlZ3JhbCUnPuKMoQ0KKydib3R0b20gbGVmdCBjb3JuZXIlJz7ijJ4NCisnYm90dG9tIGxlZnQgY3JvcCUnPuKMjQ0KKydib3R0b20gcmlnaHQgY29ybmVyJSc+4oyfDQorJ2JvdHRvbSByaWdodCBjcm9wJSc+4oyMDQorJ2Jvd3RpZSUnPuKLiA0KKydicmElJz7ijKkNCisnYnJva2VuIHZlcnRpY2FsIGJhciUnPsKmDQorJ2J1bGxldCBvcGVyYXRvciUnPuKImQ0KKydidWxsZXQlJz7igKINCisnYnVsbHNleWUlJz7il44NCisnYyBsIHN5bWJvbCUnPuKEhA0KKydjYWRhIHVuYSUnPuKEhg0KKydjYWR1Y2V1cyUnPuKYpA0KKydjYW5jZXIlJz7imYsNCisnY2Fwcmljb3JuJSc+4pmRDQorJ2NhcmUgb2YlJz7ihIUNCisnY2FyZXQgaW5zZXJ0aW9uIHBvaW50JSc+4oGBDQorJ2NhcmV0JSc+4oC4DQorJ2NhdXRpb24gc2lnbiUnPuKYoQ0KKydjZW50IHNpZ24lJz7Cog0KKydjaGFyYWN0ZXIgdGllJSc+4oGADQorJ2NoZWNrIG1hcmslJz7inJMNCisnY2hpIHJobyUnPuKYpw0KKydjaXJjbGUgd2l0aCBhbGwgYnV0IHVwcGVyIGxlZnQgcXVhZHJhbnQgYmxhY2slJz7il5UNCisnY2lyY2xlIHdpdGggbGVmdCBoYWxmIGJsYWNrJSc+4peQDQorJ2NpcmNsZSB3aXRoIGxvd2VyIGhhbGYgYmxhY2slJz7il5INCisnY2lyY2xlIHdpdGggcmlnaHQgaGFsZiBibGFjayUnPuKXkQ0KKydjaXJjbGUgd2l0aCB1cHBlciBoYWxmIGJsYWNrJSc+4peTDQorJ2NpcmNsZSB3aXRoIHVwcGVyIHJpZ2h0IHF1YWRyYW50IGJsYWNrJSc+4peUDQorJ2NpcmNsZSB3aXRoIHZlcnRpY2FsIGZpbGwlJz7il40NCisnY2lyY2xlZCBhc3RlcmlzayBvcGVyYXRvciUnPuKKmw0KKydjaXJjbGVkIGRhc2glJz7iip0NCisnY2lyY2xlZCBkaWdpdCBlaWdodCUnPuKRpw0KKydjaXJjbGVkIGRpZ2l0IGZpdmUlJz7ikaQNCisnY2lyY2xlZCBkaWdpdCBmb3VyJSc+4pGjDQorJ2NpcmNsZWQgZGlnaXQgbmluZSUnPuKRqA0KKydjaXJjbGVkIGRpZ2l0IG9uZSUnPuKRoA0KKydjaXJjbGVkIGRpZ2l0IHNldmVuJSc+4pGmDQorJ2NpcmNsZWQgZGlnaXQgc2l4JSc+4pGlDQorJ2NpcmNsZWQgZGlnaXQgdGhyZWUlJz7ikaINCisnY2lyY2xlZCBkaWdpdCB0d28lJz7ikaENCisnY2lyY2xlZCBkaWdpdCB6ZXJvJSc+4pOqDQorJ2NpcmNsZWQgZGl2aXNpb24gc2xhc2glJz7iipgNCisnY2lyY2xlZCBkb3Qgb3BlcmF0b3IlJz7iipkNCisnY2lyY2xlZCBlcXVhbHMlJz7iipwNCisnY2lyY2xlZCBoZWF2eSB3aGl0ZSByaWdodCBhcnJvdyUnPuKesg0KKydjaXJjbGVkIGxhdGluIGNhcGl0YWwgbGV0dGVyIGElJz7ikrYNCisnY2lyY2xlZCBsYXRpbiBjYXBpdGFsIGxldHRlciBiJSc+4pK3DQorJ2NpcmNsZWQgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgYyUnPuKSuA0KKydjaXJjbGVkIGxhdGluIGNhcGl0YWwgbGV0dGVyIGQlJz7ikrkNCisnY2lyY2xlZCBsYXRpbiBjYXBpdGFsIGxldHRlciBlJSc+4pK6DQorJ2NpcmNsZWQgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgZiUnPuKSuw0KKydjaXJjbGVkIGxhdGluIGNhcGl0YWwgbGV0dGVyIGclJz7ikrwNCisnY2lyY2xlZCBsYXRpbiBjYXBpdGFsIGxldHRlciBoJSc+4pK9DQorJ2NpcmNsZWQgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgaSUnPuKSvg0KKydjaXJjbGVkIGxhdGluIGNhcGl0YWwgbGV0dGVyIGolJz7ikr8NCisnY2lyY2xlZCBsYXRpbiBjYXBpdGFsIGxldHRlciBrJSc+4pOADQorJ2NpcmNsZWQgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgbCUnPuKTgQ0KKydjaXJjbGVkIGxhdGluIGNhcGl0YWwgbGV0dGVyIG0lJz7ik4INCisnY2lyY2xlZCBsYXRpbiBjYXBpdGFsIGxldHRlciBuJSc+4pODDQorJ2NpcmNsZWQgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgbyUnPuKThA0KKydjaXJjbGVkIGxhdGluIGNhcGl0YWwgbGV0dGVyIHAlJz7ik4UNCisnY2lyY2xlZCBsYXRpbiBjYXBpdGFsIGxldHRlciBxJSc+4pOGDQorJ2NpcmNsZWQgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgciUnPuKThw0KKydjaXJjbGVkIGxhdGluIGNhcGl0YWwgbGV0dGVyIHMlJz7ik4gNCisnY2lyY2xlZCBsYXRpbiBjYXBpdGFsIGxldHRlciB0JSc+4pOJDQorJ2NpcmNsZWQgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgdSUnPuKTig0KKydjaXJjbGVkIGxhdGluIGNhcGl0YWwgbGV0dGVyIHYlJz7ik4sNCisnY2lyY2xlZCBsYXRpbiBjYXBpdGFsIGxldHRlciB3JSc+4pOMDQorJ2NpcmNsZWQgbGF0aW4gY2FwaXRhbCBsZXR0ZXIgeCUnPuKTjQ0KKydjaXJjbGVkIGxhdGluIGNhcGl0YWwgbGV0dGVyIHklJz7ik44NCisnY2lyY2xlZCBsYXRpbiBjYXBpdGFsIGxldHRlciB6JSc+4pOPDQorJ2NpcmNsZWQgbGF0aW4gc21hbGwgbGV0dGVyIGElJz7ik5ANCisnY2lyY2xlZCBsYXRpbiBzbWFsbCBsZXR0ZXIgYiUnPuKTkQ0KKydjaXJjbGVkIGxhdGluIHNtYWxsIGxldHRlciBjJSc+4pOSDQorJ2NpcmNsZWQgbGF0aW4gc21hbGwgbGV0dGVyIGQlJz7ik5MNCisnY2lyY2xlZCBsYXRpbiBzbWFsbCBsZXR0ZXIgZSUnPuKTlA0KKydjaXJjbGVkIGxhdGluIHNtYWxsIGxldHRlciBmJSc+4pOVDQorJ2NpcmNsZWQgbGF0aW4gc21hbGwgbGV0dGVyIGclJz7ik5YNCisnY2lyY2xlZCBsYXRpbiBzbWFsbCBsZXR0ZXIgaCUnPuKTlw0KKydjaXJjbGVkIGxhdGluIHNtYWxsIGxldHRlciBpJSc+4pOYDQorJ2NpcmNsZWQgbGF0aW4gc21hbGwgbGV0dGVyIGolJz7ik5kNCisnY2lyY2xlZCBsYXRpbiBzbWFsbCBsZXR0ZXIgayUnPuKTmg0KKydjaXJjbGVkIGxhdGluIHNtYWxsIGxldHRlciBsJSc+4pObDQorJ2NpcmNsZWQgbGF0aW4gc21hbGwgbGV0dGVyIG0lJz7ik5wNCisnY2lyY2xlZCBsYXRpbiBzbWFsbCBsZXR0ZXIgbiUnPuKTnQ0KKydjaXJjbGVkIGxhdGluIHNtYWxsIGxldHRlciBvJSc+4pOeDQorJ2NpcmNsZWQgbGF0aW4gc21hbGwgbGV0dGVyIHAlJz7ik58NCisnY2lyY2xlZCBsYXRpbiBzbWFsbCBsZXR0ZXIgcSUnPuKToA0KKydjaXJjbGVkIGxhdGluIHNtYWxsIGxldHRlciByJSc+4pOhDQorJ2NpcmNsZWQgbGF0aW4gc21hbGwgbGV0dGVyIHMlJz7ik6INCisnY2lyY2xlZCBsYXRpbiBzbWFsbCBsZXR0ZXIgdCUnPuKTow0KKydjaXJjbGVkIGxhdGluIHNtYWxsIGxldHRlciB1JSc+4pOkDQorJ2NpcmNsZWQgbGF0aW4gc21hbGwgbGV0dGVyIHYlJz7ik6UNCisnY2lyY2xlZCBsYXRpbiBzbWFsbCBsZXR0ZXIgdyUnPuKTpg0KKydjaXJjbGVkIGxhdGluIHNtYWxsIGxldHRlciB4JSc+4pOnDQorJ2NpcmNsZWQgbGF0aW4gc21hbGwgbGV0dGVyIHklJz7ik6gNCisnY2lyY2xlZCBsYXRpbiBzbWFsbCBsZXR0ZXIgeiUnPuKTqQ0KKydjaXJjbGVkIG1pbnVzJSc+4oqWDQorJ2NpcmNsZWQgbnVtYmVyIGVpZ2h0ZWVuJSc+4pGxDQorJ2NpcmNsZWQgbnVtYmVyIGVsZXZlbiUnPuKRqg0KKydjaXJjbGVkIG51bWJlciBmaWZ0ZWVuJSc+4pGuDQorJ2NpcmNsZWQgbnVtYmVyIGZvdXJ0ZWVuJSc+4pGtDQorJ2NpcmNsZWQgbnVtYmVyIG5pbmV0ZWVuJSc+4pGyDQorJ2NpcmNsZWQgbnVtYmVyIHNldmVudGVlbiUnPuKRsA0KKydjaXJjbGVkIG51bWJlciBzaXh0ZWVuJSc+4pGvDQorJ2NpcmNsZWQgbnVtYmVyIHRlbiUnPuKRqQ0KKydjaXJjbGVkIG51bWJlciB0aGlydGVlbiUnPuKRrA0KKydjaXJjbGVkIG51bWJlciB0d2VsdmUlJz7ikasNCisnY2lyY2xlZCBudW1iZXIgdHdlbnR5JSc+4pGzDQorJ2NpcmNsZWQgb3BlbiBjZW50ZXIgZWlnaHQgcG9pbnRlZCBzdGFyJSc+4p2CDQorJ2NpcmNsZWQgcGx1cyUnPuKKlQ0KKydjaXJjbGVkIHBvc3RhbCBtYXJrJSc+44C2DQorJ2NpcmNsZWQgcmluZyBvcGVyYXRvciUnPuKKmg0KKydjaXJjbGVkIHNhbnMgc2VyaWYgZGlnaXQgZWlnaHQlJz7inocNCisnY2lyY2xlZCBzYW5zIHNlcmlmIGRpZ2l0IGZpdmUlJz7inoQNCisnY2lyY2xlZCBzYW5zIHNlcmlmIGRpZ2l0IGZvdXIlJz7inoMNCisnY2lyY2xlZCBzYW5zIHNlcmlmIGRpZ2l0IG5pbmUlJz7inogNCisnY2lyY2xlZCBzYW5zIHNlcmlmIGRpZ2l0IG9uZSUnPuKegA0KKydjaXJjbGVkIHNhbnMgc2VyaWYgZGlnaXQgc2V2ZW4lJz7inoYNCisnY2lyY2xlZCBzYW5zIHNlcmlmIGRpZ2l0IHNpeCUnPuKehQ0KKydjaXJjbGVkIHNhbnMgc2VyaWYgZGlnaXQgdGhyZWUlJz7inoINCisnY2lyY2xlZCBzYW5zIHNlcmlmIGRpZ2l0IHR3byUnPuKegQ0KKydjaXJjbGVkIHNhbnMgc2VyaWYgbnVtYmVyIHRlbiUnPuKeiQ0KKydjaXJjbGVkIHRpbWVzJSc+4oqXDQorJ2NpcmNsZWQgd2hpdGUgc3RhciUnPuKcqg0KKydjbGVhciBrZXklJz7ijKcNCisnY2xvY2t3aXNlIGNvbnRvdXIgaW50ZWdyYWwlJz7iiLINCisnY2xvY2t3aXNlIGludGVncmFsJSc+4oixDQorJ2Nsb2Nrd2lzZSBvcGVuIGNpcmNsZSBhcnJvdyUnPuKGuw0KKydjbG9ja3dpc2UgdG9wIHNlbWljaXJjbGUgYXJyb3clJz7ihrcNCisnY2xvc2luZyBhbmdsZSBicmFja2V0JSc+44CJDQorJ2Nsb3NpbmcgYmxhY2sgbGVudGljdWxhciBicmFja2V0JSc+44CRDQorJ2Nsb3NpbmcgY29ybmVyIGJyYWNrZXQlJz7jgI0NCisnY2xvc2luZyBkb3VibGUgYW5nbGUgYnJhY2tldCUnPuOAiw0KKydjbG9zaW5nIHRvcnRvaXNlIHNoZWxsIGJyYWNrZXQlJz7jgJUNCisnY2xvc2luZyB3aGl0ZSBjb3JuZXIgYnJhY2tldCUnPuOAjw0KKydjbG9zaW5nIHdoaXRlIGxlbnRpY3VsYXIgYnJhY2tldCUnPuOAlw0KKydjbG9zaW5nIHdoaXRlIHNxdWFyZSBicmFja2V0JSc+44CbDQorJ2Nsb3Npbmcgd2hpdGUgdG9ydG9pc2Ugc2hlbGwgYnJhY2tldCUnPuOAmQ0KKydjbG91ZCUnPuKYgQ0KKydjb2xvbiBlcXVhbCUnPuKJlA0KKydjb2xvbiBzaWduJSc+4oKhDQorJ2NvbWV0JSc+4piEDQorJ2NvbW1hbmQga2V5JSc+4oyYDQorJ2NvbXBsZW1lbnQlJz7iiIENCisnY29uanVuY3Rpb24lJz7imIwNCisnY29udGFpbnMgYXMgbWVtYmVyJSc+4oiLDQorJ2NvbnRhaW5zIGFzIG5vcm1hbCBzdWJncm91cCBvciBlcXVhbCB0byUnPuKKtQ0KKydjb250YWlucyBhcyBub3JtYWwgc3ViZ3JvdXAlJz7iirMNCisnY29udG91ciBpbnRlZ3JhbCUnPuKIrg0KKydjb3B5cmlnaHQgc2lnbiUnPsKpDQorJ2NvcnJlc3BvbmRzIHRvJSc+4omYDQorJ2Nyb3NzIG9mIGplcnVzYWxlbSUnPuKYqQ0KKydjcm9zcyBvZiBsb3JyYWluZSUnPuKYqA0KKydjcnV6ZWlybyBzaWduJSc+4oKiDQorJ2N1YmUgcm9vdCUnPuKImw0KKydjdXJseSBsb2dpY2FsIGFuZCUnPuKLjw0KKydjdXJseSBsb2dpY2FsIG9yJSc+4ouODQorJ2N1cnJlbmN5IHNpZ24lJz7CpA0KKydjdXJ2ZWQgc3RlbSBwYXJhZ3JhcGggc2lnbiBvcm5hbWVudCUnPuKdoQ0KKydkYWdnZXIlJz7igKANCisnZGFyayBzaGFkZSUnPuKWkw0KKydkYXNoZWQgdHJpYW5nbGUtaGVhZGVkIHJpZ2h0IGFycm93JSc+4p6fDQorJ2RlZ3JlZSBzaWduJSc+wrANCisnZGVncmVlcyBjZW50aWdyYWRlJSc+4oSDDQorJ2RlZ3JlZXMgZmFocmVuaGVpdCUnPuKEiQ0KKydkZWdyZWVzIGtlbHZpbiUnPuKEqg0KKydkZWxldGUgdG8gdGhlIGxlZnQga2V5JSc+4oyrDQorJ2RlbGV0ZSB0byB0aGUgcmlnaHQga2V5JSc+4oymDQorJ2RlbHRhIGVxdWFsIHRvJSc+4omcDQorJ2Rlc2NlbmRpbmcgbm9kZSUnPuKYiw0KKydkaWFtb25kIG9wZXJhdG9yJSc+4ouEDQorJ2RpZmZlcmVuY2UgYmV0d2VlbiUnPuKJjw0KKydkaWdpdCBlaWdodCBwZXJpb2QlJz7iko8NCisnZGlnaXQgZml2ZSBwZXJpb2QlJz7ikowNCisnZGlnaXQgZm91ciBwZXJpb2QlJz7ikosNCisnZGlnaXQgbmluZSBwZXJpb2QlJz7ikpANCisnZGlnaXQgb25lIHBlcmlvZCUnPuKSiA0KKydkaWdpdCBzZXZlbiBwZXJpb2QlJz7iko4NCisnZGlnaXQgc2l4IHBlcmlvZCUnPuKSjQ0KKydkaWdpdCB0aHJlZSBwZXJpb2QlJz7ikooNCisnZGlnaXQgdHdvIHBlcmlvZCUnPuKSiQ0KKydkaXR0byBtYXJrJSc+44CDDQorJ2RpdmlkZXMlJz7iiKMNCisnZGl2aXNpb24gc2lnbiUnPsO3DQorJ2RpdmlzaW9uIHNsYXNoJSc+4oiVDQorJ2RpdmlzaW9uIHRpbWVzJSc+4ouHDQorJ2RvZXMgbm90IGNvbnRhaW4gYXMgbWVtYmVyJSc+4oiMDQorJ2RvZXMgbm90IGNvbnRhaW4gYXMgbm9ybWFsIHN1Ymdyb3VwIG9yIGVxdWFsJSc+4outDQorJ2RvZXMgbm90IGNvbnRhaW4gYXMgbm9ybWFsIHN1Ymdyb3VwJSc+4ourDQorJ2RvZXMgbm90IGRpdmlkZSUnPuKIpA0KKydkb2VzIG5vdCBmb3JjZSUnPuKKrg0KKydkb2VzIG5vdCBwcmVjZWRlIG9yIGVxdWFsJSc+4ougDQorJ2RvZXMgbm90IHByZWNlZGUlJz7iioANCisnZG9lcyBub3QgcHJvdmUlJz7iiqwNCisnZG9lcyBub3Qgc3VjY2VlZCBvciBlcXVhbCUnPuKLoQ0KKydkb2VzIG5vdCBzdWNjZWVkJSc+4oqBDQorJ2RvdCBtaW51cyUnPuKIuA0KKydkb3Qgb3BlcmF0b3IlJz7ii4UNCisnZG90IHBsdXMlJz7iiJQNCisnZG90dGVkIGNpcmNsZSUnPuKXjA0KKydkb3VibGUgY29tbWEgcXVvdGF0aW9uIG1hcmslJz7igJ0NCisnZG91YmxlIGRhZ2dlciUnPuKAoQ0KKydkb3VibGUgZXhjbGFtYXRpb24gbWFyayUnPuKAvA0KKydkb3VibGUgaHlwaGVuJSc+4oC/DQorJ2RvdWJsZSBpbnRlZ3JhbCUnPuKIrA0KKydkb3VibGUgaW50ZXJzZWN0aW9uJSc+4ouSDQorJ2RvdWJsZSBwcmltZSBxdW90YXRpb24gbWFyayUnPuOAng0KKydkb3VibGUgcHJpbWUlJz7igLMNCisnZG91YmxlIHJldmVyc2VkIGNvbW1hIHF1b3RhdGlvbiBtYXJrJSc+4oCfDQorJ2RvdWJsZSBzdWJzZXQlJz7ii5ANCisnZG91YmxlIHN1cGVyc2V0JSc+4ouRDQorJ2RvdWJsZSB0dXJuZWQgY29tbWEgcXVvdGF0aW9uIG1hcmslJz7igJwNCisnZG91YmxlIHVuaW9uJSc+4ouTDQorJ2RvdWJsZSB2ZXJ0aWNhbCBiYXIgZG91YmxlIHJpZ2h0IHR1cm5zdGlsZSUnPuKKqw0KKydkb3VibGUgdmVydGljYWwgYmFyJSc+4oCWDQorJ2RvdWJsZS1zdHJ1Y2sgYyUnPuKEgg0KKydkb3VibGUtc3RydWNrIGglJz7ihI0NCisnZG91YmxlLXN0cnVjayBuJSc+4oSVDQorJ2RvdWJsZS1zdHJ1Y2sgcCUnPuKEmQ0KKydkb3VibGUtc3RydWNrIHElJz7ihJoNCisnZG91YmxlLXN0cnVjayByJSc+4oSdDQorJ2RvdWJsZS1zdHJ1Y2sgeiUnPuKEpA0KKydkb3duIGFycm93IGZyb20gYmFyJSc+4oanDQorJ2Rvd24gYXJyb3cgd2l0aCBjb3JuZXIgbGVmdCUnPuKGtQ0KKydkb3duIGFycm93IHdpdGggZG91YmxlIHN0cm9rZSUnPuKHnw0KKydkb3duIGFycm93IHdpdGggdGlwIGxlZnQlJz7ihrINCisnZG93biBhcnJvdyB3aXRoIHRpcCByaWdodCUnPuKGsw0KKydkb3duIGFycm93JSc+4oaTDQorJ2Rvd24gYXJyb3doZWFkJSc+4oyEDQorJ2Rvd24gZGFzaGVkIGFycm93JSc+4oejDQorJ2Rvd24gZG91YmxlIGFycm93JSc+4oeTDQorJ2Rvd24gaGFycG9vbiB3aXRoIGJhcmIgbGVmdCUnPuKHgw0KKydkb3duIGhhcnBvb24gd2l0aCBiYXJiIHJpZ2h0JSc+4oeCDQorJ2Rvd24gcGFpcmVkIGFycm93cyUnPuKHig0KKydkb3duIHJpZ2h0IGRpYWdvbmFsIGVsbGlwc2lzJSc+4ouxDQorJ2Rvd24gdGFjayUnPuKKpA0KKydkb3duIHR3byBoZWFkZWQgYXJyb3clJz7ihqENCisnZG93biB6aWd6YWcgYXJyb3clJz7ihq8NCisnZHJhZnRpbmcgcG9pbnQgcmlnaHQgYXJyb3clJz7inpsNCisnZWFydGglJz7imYENCisnZWlnaHQgcGV0YWxsZWQgb3V0bGluZWQgYmxhY2sgZmxvcmV0dGUlJz7inYENCisnZWlnaHQgcG9pbnRlZCBibGFjayBzdGFyJSc+4py0DQorJ2VpZ2h0IHBvaW50ZWQgcGlud2hlZWwgc3RhciUnPuKctQ0KKydlaWdodCBwb2ludGVkIHJlY3RpbGluZWFyIGJsYWNrIHN0YXIlJz7inLcNCisnZWlnaHQgc3Bva2VkIGFzdGVyaXNrJSc+4pyzDQorJ2VpZ2h0IHRlYXJkcm9wLXNwb2tlZCBwcm9wZWxsZXIgYXN0ZXJpc2slJz7inYoNCisnZWlnaHRoIG5vdGUlJz7imaoNCisnZWxlbWVudCBvZiUnPuKIiA0KKydzbWFsbCBlbGVtZW50IG9mJSc+4oiKDQorJ2VsZW1lbnQgcHJlY2VkZXMgdW5kZXIgcmVsYXRpb24lJz7iirANCisnZWxlbWVudCBzdWNjZWVkcyB1bmRlciByZWxhdGlvbiUnPuKKsQ0KKydlbSBkYXNoJSc+4oCUDQorJ2VtIHF1YWQlJz7igIENCisnZW0gc3BhY2UlJz7igIMNCisnZW1wdHkgc2V0JSc+4oiFDQorJ2VuIGRhc2glJz7igJMNCisnZW4gcXVhZCUnPuKAgA0KKydlbiBzcGFjZSUnPuKAgg0KKydlbmNsb3NpbmcgY2lyY2xlIHNsYXNoJSc+4oOgDQorJ2VuY2xvc2luZyBjaXJjbGUlJz7ig50NCisnZW5jbG9zaW5nIGRpYW1vbmQlJz7ig58NCisnZW5jbG9zaW5nIHNxdWFyZSUnPuKDng0KKydlbmQgb2YgcHJvb2YlJz7iiI4NCisnZW50ZXIga2V5JSc+4oykDQorJ2VudmVsb3BlJSc+4pyJDQorJ2VxdWFsIGFuZCBwYXJhbGxlbCB0byUnPuKLlQ0KKydlcXVhbCBjb2xvbiUnPuKJlQ0KKydlcXVhbCB0byBieSBkZWZpbml0aW9uJSc+4omdDQorJ2VxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiUnPuKLnQ0KKydlcXVhbCB0byBvciBsZXNzIHRoYW4lJz7ii5wNCisnZXF1YWwgdG8gb3IgcHJlY2VkZXMlJz7ii54NCisnZXF1YWwgdG8gb3Igc3VjY2VlZHMlJz7ii58NCisnZXF1aWFuZ3VsYXIgdG8lJz7iiZoNCisnZXF1aXZhbGVudCB0byUnPuKJjQ0KKydlc3RpbWF0ZXMlJz7iiZkNCisnZXVsZXJzJSc+4oSHDQorJ2V1cm8tY3VycmVuY3kgc2lnbiUnPuKCoA0KKydldXJvcGVhbiBzdGFuZGFyZCBwYWNrYWdpbmclJz7ihK4NCisnZXhjZXNzJSc+4oi5DQorJ2ZlbWFsZSBzaWduJSc+4pmADQorJ2ZlbWluaW5lIG9yZGluYWwgaW5kaWNhdG9yJSc+wqoNCisnZmlndXJlIGRhc2glJz7igJINCisnZmlndXJlIHNwYWNlJSc+4oCHDQorJ2ZpcnN0IHF1YXJ0ZXIgbW9vbiUnPuKYvQ0KKydmaXJzdCB0cmFuc2Zpbml0ZSBjYXJkaW5hbCUnPuKEtQ0KKydmaXNoZXllJSc+4peJDQorJ2ZsYXQlJz7ima0NCisnZmxvcmFsIGhlYXJ0JSc+4p2mDQorJ2ZvciBhbGwlJz7iiIANCisnZm9yY2VzJSc+4oqpDQorJ2Zvcm1zIGRvdWJsZSBkb3duIGFuZCBob3Jpem9udGFsJSc+4pWmDQorJ2Zvcm1zIGRvdWJsZSBkb3duIGFuZCBsZWZ0JSc+4pWXDQorJ2Zvcm1zIGRvdWJsZSBkb3duIGFuZCByaWdodCUnPuKVlA0KKydmb3JtcyBkb3VibGUgaG9yaXpvbnRhbCUnPuKVkA0KKydmb3JtcyBkb3VibGUgdXAgYW5kIGhvcml6b250YWwlJz7ilakNCisnZm9ybXMgZG91YmxlIHVwIGFuZCBsZWZ0JSc+4pWdDQorJ2Zvcm1zIGRvdWJsZSB1cCBhbmQgcmlnaHQlJz7ilZoNCisnZm9ybXMgZG91YmxlIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsJSc+4pWsDQorJ2Zvcm1zIGRvdWJsZSB2ZXJ0aWNhbCBhbmQgbGVmdCUnPuKVow0KKydmb3JtcyBkb3VibGUgdmVydGljYWwgYW5kIHJpZ2h0JSc+4pWgDQorJ2Zvcm1zIGRvdWJsZSB2ZXJ0aWNhbCUnPuKVkQ0KKydmb3JtcyBkb3duIGRvdWJsZSBhbmQgaG9yaXpvbnRhbCBzaW5nbGUlJz7ilaUNCisnZm9ybXMgZG93biBkb3VibGUgYW5kIGxlZnQgc2luZ2xlJSc+4pWWDQorJ2Zvcm1zIGRvd24gZG91YmxlIGFuZCByaWdodCBzaW5nbGUlJz7ilZMNCisnZm9ybXMgZG93biBoZWF2eSBhbmQgaG9yaXpvbnRhbCBsaWdodCUnPuKUsA0KKydmb3JtcyBkb3duIGhlYXZ5IGFuZCBsZWZ0IGxpZ2h0JSc+4pSSDQorJ2Zvcm1zIGRvd24gaGVhdnkgYW5kIGxlZnQgdXAgbGlnaHQlJz7ilKcNCisnZm9ybXMgZG93biBoZWF2eSBhbmQgcmlnaHQgbGlnaHQlJz7ilI4NCisnZm9ybXMgZG93biBoZWF2eSBhbmQgcmlnaHQgdXAgbGlnaHQlJz7ilJ8NCisnZm9ybXMgZG93biBoZWF2eSBhbmQgdXAgaG9yaXpvbnRhbCBsaWdodCUnPuKVgQ0KKydmb3JtcyBkb3duIGxpZ2h0IGFuZCBob3Jpem9udGFsIGhlYXZ5JSc+4pSvDQorJ2Zvcm1zIGRvd24gbGlnaHQgYW5kIGxlZnQgaGVhdnklJz7ilJENCisnZm9ybXMgZG93biBsaWdodCBhbmQgbGVmdCB1cCBoZWF2eSUnPuKUqQ0KKydmb3JtcyBkb3duIGxpZ2h0IGFuZCByaWdodCBoZWF2eSUnPuKUjQ0KKydmb3JtcyBkb3duIGxpZ2h0IGFuZCByaWdodCB1cCBoZWF2eSUnPuKUoQ0KKydmb3JtcyBkb3duIGxpZ2h0IGFuZCB1cCBob3Jpem9udGFsIGhlYXZ5JSc+4pWHDQorJ2Zvcm1zIGRvd24gc2luZ2xlIGFuZCBob3Jpem9udGFsIGRvdWJsZSUnPuKVpA0KKydmb3JtcyBkb3duIHNpbmdsZSBhbmQgbGVmdCBkb3VibGUlJz7ilZUNCisnZm9ybXMgZG93biBzaW5nbGUgYW5kIHJpZ2h0IGRvdWJsZSUnPuKVkg0KKydmb3JtcyBoZWF2eSBkb3VibGUgZGFzaCBob3Jpem9udGFsJSc+4pWNDQorJ2Zvcm1zIGhlYXZ5IGRvdWJsZSBkYXNoIHZlcnRpY2FsJSc+4pWPDQorJ2Zvcm1zIGhlYXZ5IGRvd24gYW5kIGhvcml6b250YWwlJz7ilLMNCisnZm9ybXMgaGVhdnkgZG93biBhbmQgbGVmdCUnPuKUkw0KKydmb3JtcyBoZWF2eSBkb3duIGFuZCByaWdodCUnPuKUjw0KKydmb3JtcyBoZWF2eSBkb3duJSc+4pW7DQorJ2Zvcm1zIGhlYXZ5IGhvcml6b250YWwlJz7ilIENCisnZm9ybXMgaGVhdnkgbGVmdCBhbmQgbGlnaHQgcmlnaHQlJz7ilb4NCisnZm9ybXMgaGVhdnkgbGVmdCUnPuKVuA0KKydmb3JtcyBoZWF2eSBxdWFkcnVwbGUgZGFzaCBob3Jpem9udGFsJSc+4pSJDQorJ2Zvcm1zIGhlYXZ5IHF1YWRydXBsZSBkYXNoIHZlcnRpY2FsJSc+4pSLDQorJ2Zvcm1zIGhlYXZ5IHJpZ2h0JSc+4pW6DQorJ2Zvcm1zIGhlYXZ5IHRyaXBsZSBkYXNoIGhvcml6b250YWwlJz7ilIUNCisnZm9ybXMgaGVhdnkgdHJpcGxlIGRhc2ggdmVydGljYWwlJz7ilIcNCisnZm9ybXMgaGVhdnkgdXAgYW5kIGhvcml6b250YWwlJz7ilLsNCisnZm9ybXMgaGVhdnkgdXAgYW5kIGxlZnQlJz7ilJsNCisnZm9ybXMgaGVhdnkgdXAgYW5kIGxpZ2h0IGRvd24lJz7ilb8NCisnZm9ybXMgaGVhdnkgdXAgYW5kIHJpZ2h0JSc+4pSXDQorJ2Zvcm1zIGhlYXZ5IHVwJSc+4pW5DQorJ2Zvcm1zIGhlYXZ5IHZlcnRpY2FsIGFuZCBob3Jpem9udGFsJSc+4pWLDQorJ2Zvcm1zIGhlYXZ5IHZlcnRpY2FsIGFuZCBsZWZ0JSc+4pSrDQorJ2Zvcm1zIGhlYXZ5IHZlcnRpY2FsIGFuZCByaWdodCUnPuKUow0KKydmb3JtcyBoZWF2eSB2ZXJ0aWNhbCUnPuKUgw0KKydmb3JtcyBsZWZ0IGRvd24gaGVhdnkgYW5kIHJpZ2h0IHVwIGxpZ2h0JSc+4pWFDQorJ2Zvcm1zIGxlZnQgaGVhdnkgYW5kIHJpZ2h0IGRvd24gbGlnaHQlJz7ilK0NCisnZm9ybXMgbGVmdCBoZWF2eSBhbmQgcmlnaHQgdXAgbGlnaHQlJz7ilLUNCisnZm9ybXMgbGVmdCBoZWF2eSBhbmQgcmlnaHQgdmVydGljYWwgbGlnaHQlJz7ilL0NCisnZm9ybXMgbGVmdCBsaWdoYW5kIHJpZ2h0IGRvd24gaGVhdnklJz7ilLINCisnZm9ybXMgbGVmdCBsaWdodCBhbmQgcmlnaHQgZG93biBoZWF2eSUnPuKUsg0KKydmb3JtcyBsZWZ0IGxpZ2h0IGFuZCByaWdodCB1cCBoZWF2eSUnPuKUug0KKydmb3JtcyBsZWZ0IGxpZ2h0IGFuZCByaWdodCB2ZXJ0aWNhbCBoZWF2eSUnPuKVig0KKydmb3JtcyBsZWZ0IHVwIGhlYXZ5IGFuZCByaWdodCBkb3duIGxpZ2h0JSc+4pWDDQorJ2Zvcm1zIGxpZ2h0IGFyYyBkb3duIGFuZCBsZWZ0JSc+4pWuDQorJ2Zvcm1zIGxpZ2h0IGFyYyBkb3duIGFuZCByaWdodCUnPuKVrQ0KKydmb3JtcyBsaWdodCBhcmMgdXAgYW5kIGxlZnQlJz7ila8NCisnZm9ybXMgbGlnaHQgYXJjIHVwIGFuZCByaWdodCUnPuKVsA0KKydmb3JtcyBsaWdodCBkaWFnb25hbCBjcm9zcyUnPuKVsw0KKydmb3JtcyBsaWdodCBkaWFnb25hbCB1cHBlciBsZWZ0IHRvIGxvd2VyIHJpZ2h0JSc+4pWyDQorJ2Zvcm1zIGxpZ2h0IGRpYWdvbmFsIHVwcGVyIHJpZ2h0IHRvIGxvd2VyIGxlZnQlJz7ilbENCisnZm9ybXMgbGlnaHQgZG91YmxlIGRhc2ggaG9yaXpvbnRhbCUnPuKVjA0KKydmb3JtcyBsaWdodCBkb3VibGUgZGFzaCB2ZXJ0aWNhbCUnPuKVjg0KKydmb3JtcyBsaWdodCBkb3duIGFuZCBob3Jpem9udGFsJSc+4pSsDQorJ2Zvcm1zIGxpZ2h0IGRvd24gYW5kIGxlZnQlJz7ilJANCisnZm9ybXMgbGlnaHQgZG93biBhbmQgcmlnaHQlJz7ilIwNCisnZm9ybXMgbGlnaHQgZG93biUnPuKVtw0KKydmb3JtcyBsaWdodCBob3Jpem9udGFsJSc+4pSADQorJ2Zvcm1zIGxpZ2h0IGxlZnQgYW5kIGhlYXZ5IHJpZ2h0JSc+4pW8DQorJ2Zvcm1zIGxpZ2h0IGxlZnQlJz7ilbQNCisnZm9ybXMgbGlnaHQgcXVhZHJ1cGxlIGRhc2ggaG9yaXpvbnRhbCUnPuKUiA0KKydmb3JtcyBsaWdodCBxdWFkcnVwbGUgZGFzaCB2ZXJ0aWNhbCUnPuKUig0KKydmb3JtcyBsaWdodCByaWdodCUnPuKVtg0KKydmb3JtcyBsaWdodCB0cmlwbGUgZGFzaCBob3Jpem9udGFsJSc+4pSEDQorJ2Zvcm1zIGxpZ2h0IHRyaXBsZSBkYXNoIHZlcnRpY2FsJSc+4pSGDQorJ2Zvcm1zIGxpZ2h0IHVwIGFuZCBoZWF2eSBkb3duJSc+4pW9DQorJ2Zvcm1zIGxpZ2h0IHVwIGFuZCBob3Jpem9udGFsJSc+4pS0DQorJ2Zvcm1zIGxpZ2h0IHVwIGFuZCBsZWZ0JSc+4pSYDQorJ2Zvcm1zIGxpZ2h0IHVwIGFuZCByaWdodCUnPuKUlA0KKydmb3JtcyBsaWdodCB1cCUnPuKVtQ0KKydmb3JtcyBsaWdodCB2ZXJ0aWNhbCBhbmQgaG9yaXpvbnRhbCUnPuKUvA0KKydmb3JtcyBsaWdodCB2ZXJ0aWNhbCBhbmQgbGVmdCUnPuKUpA0KKydmb3JtcyBsaWdodCB2ZXJ0aWNhbCBhbmQgcmlnaHQlJz7ilJwNCisnZm9ybXMgbGlnaHQgdmVydGljYWwlJz7ilIINCisnZm9ybXMgcmlnaHQgZG93biBoZWF2eSBhbmQgbGVmdCB1cCBsaWdodCUnPuKVhg0KKydmb3JtcyByaWdodCBoZWF2eSBhbmQgbGVmdCBkb3duIGxpZ2h0JSc+4pSuDQorJ2Zvcm1zIHJpZ2h0IGhlYXZ5IGFuZCBsZWZ0IHVwIGxpZ2h0JSc+4pS2DQorJ2Zvcm1zIHJpZ2h0IGhlYXZ5IGFuZCBsZWZ0IHZlcnRpY2FsIGxpZ2h0JSc+4pS+DQorJ2Zvcm1zIHJpZ2h0IGxpZ2h0IGFuZCBsZWZ0IGRvd24gaGVhdnklJz7ilLENCisnZm9ybXMgcmlnaHQgbGlnaHQgYW5kIGxlZnQgdXAgaGVhdnklJz7ilLkNCisnZm9ybXMgcmlnaHQgbGlnaHQgYW5kIGxlZnQgdmVydGljYWwgaGVhdnklJz7ilYkNCisnZm9ybXMgcmlnaHQgdXAgaGVhdnkgYW5kIGxlZnQgZG93biBsaWdodCUnPuKVhA0KKydmb3JtcyB1cCBkb3VibGUgYW5kIGhvcml6b250YWwgc2luZ2xlJSc+4pWoDQorJ2Zvcm1zIHVwIGRvdWJsZSBhbmQgbGVmdCBzaW5nbGUlJz7ilZwNCisnZm9ybXMgdXAgZG91YmxlIGFuZCByaWdodCBzaW5nbGUlJz7ilZkNCisnZm9ybXMgdXAgaGVhdnkgYW5kIGRvd24gaG9yaXpvbnRhbCBsaWdodCUnPuKVgA0KKydmb3JtcyB1cCBoZWF2eSBhbmQgaG9yaXpvbnRhbCBsaWdodCUnPuKUuA0KKydmb3JtcyB1cCBoZWF2eSBhbmQgbGVmdCBkb3duIGxpZ2h0JSc+4pSmDQorJ2Zvcm1zIHVwIGhlYXZ5IGFuZCBsZWZ0IGxpZ2h0JSc+4pSaDQorJ2Zvcm1zIHVwIGhlYXZ5IGFuZCByaWdodCBkb3duIGxpZ2h0JSc+4pSeDQorJ2Zvcm1zIHVwIGhlYXZ5IGFuZCByaWdodCBsaWdodCUnPuKUlg0KKydmb3JtcyB1cCBsaWdodCBhbmQgZG93biBob3Jpem9udGFsIGhlYXZ5JSc+4pWIDQorJ2Zvcm1zIHVwIGxpZ2h0IGFuZCBob3Jpem9udGFsIGhlYXZ5JSc+4pS3DQorJ2Zvcm1zIHVwIGxpZ2h0IGFuZCBsZWZ0IGRvd24gaGVhdnklJz7ilKoNCisnZm9ybXMgdXAgbGlnaHQgYW5kIGxlZnQgaGVhdnklJz7ilJkNCisnZm9ybXMgdXAgbGlnaHQgYW5kIHJpZ2h0IGRvd24gaGVhdnklJz7ilKINCisnZm9ybXMgdXAgbGlnaHQgYW5kIHJpZ2h0IGhlYXZ5JSc+4pSVDQorJ2Zvcm1zIHVwIHNpbmdsZSBhbmQgaG9yaXpvbnRhbCBkb3VibGUlJz7ilacNCisnZm9ybXMgdXAgc2luZ2xlIGFuZCBsZWZ0IGRvdWJsZSUnPuKVmw0KKydmb3JtcyB1cCBzaW5nbGUgYW5kIHJpZ2h0IGRvdWJsZSUnPuKVmA0KKydmb3JtcyB2ZXJ0aWNhbCBkb3VibGUgYW5kIGhvcml6b250YWwgc2luZ2xlJSc+4pWrDQorJ2Zvcm1zIHZlcnRpY2FsIGRvdWJsZSBhbmQgbGVmdCBzaW5nbGUlJz7ilaINCisnZm9ybXMgdmVydGljYWwgZG91YmxlIGFuZCByaWdodCBzaW5nbGUlJz7ilZ8NCisnZm9ybXMgdmVydGljYWwgaGVhdnkgYW5kIGhvcml6b250YWwgbGlnaHQlJz7ilYINCisnZm9ybXMgdmVydGljYWwgaGVhdnkgYW5kIGxlZnQgbGlnaHQlJz7ilKgNCisnZm9ybXMgdmVydGljYWwgaGVhdnkgYW5kIHJpZ2h0IGxpZ2h0JSc+4pSgDQorJ2Zvcm1zIHZlcnRpY2FsIGxpZ2h0IGFuZCBob3Jpem9udGFsIGhlYXZ5JSc+4pS/DQorJ2Zvcm1zIHZlcnRpY2FsIGxpZ2h0IGFuZCBsZWZ0IGhlYXZ5JSc+4pSlDQorJ2Zvcm1zIHZlcnRpY2FsIGxpZ2h0IGFuZCByaWdodCBoZWF2eSUnPuKUnQ0KKydmb3JtcyB2ZXJ0aWNhbCBzaW5nbGUgYW5kIGhvcml6b250YWwgZG91YmxlJSc+4pWqDQorJ2Zvcm1zIHZlcnRpY2FsIHNpbmdsZSBhbmQgbGVmdCBkb3VibGUlJz7ilaENCisnZm9ybXMgdmVydGljYWwgc2luZ2xlIGFuZCByaWdodCBkb3VibGUlJz7ilZ4NCisnZm91ciBiYWxsb29uLXNwb2tlZCBhc3RlcmlzayUnPuKcow0KKydmb3VyIGNsdWItc3Bva2VkIGFzdGVyaXNrJSc+4pylDQorJ2ZvdXIgdGVhcmRyb3Atc3Bva2VkIGFzdGVyaXNrJSc+4pyiDQorJ2ZvdXItcGVyLWVtIHNwYWNlJSc+4oCFDQorJ2ZvdXJ0aCByb290JSc+4oicDQorJ2ZvdXJ0aCB0cmFuc2Zpbml0ZSBjYXJkaW5hbCUnPuKEuA0KKydmcmFjdGlvbiBmaXZlIGVpZ2h0aHMlJz7ihZ0NCisnZnJhY3Rpb24gZml2ZSBzaXh0aHMlJz7ihZoNCisnZnJhY3Rpb24gZm91ciBmaWZ0aHMlJz7ihZgNCisnZnJhY3Rpb24gbnVtZXJhdG9yIG9uZSUnPuKFnw0KKydmcmFjdGlvbiBvbmUgZWlnaHRoJSc+4oWbDQorJ2ZyYWN0aW9uIG9uZSBmaWZ0aCUnPuKFlQ0KKydmcmFjdGlvbiBvbmUgaGFsZiUnPsK9DQorJ2ZyYWN0aW9uIG9uZSBxdWFydGVyJSc+wrwNCisnZnJhY3Rpb24gb25lIHNpeHRoJSc+4oWZDQorJ2ZyYWN0aW9uIG9uZSB0aGlyZCUnPuKFkw0KKydmcmFjdGlvbiBzZXZlbiBlaWdodGhzJSc+4oWeDQorJ2ZyYWN0aW9uIHNsYXNoJSc+4oGEDQorJ2ZyYWN0aW9uIHRocmVlIGVpZ2h0aHMlJz7ihZwNCisnZnJhY3Rpb24gdGhyZWUgZmlmdGhzJSc+4oWXDQorJ2ZyYWN0aW9uIHRocmVlIHF1YXJ0ZXJzJSc+wr4NCisnZnJhY3Rpb24gdHdvIGZpZnRocyUnPuKFlg0KKydmcmFjdGlvbiB0d28gdGhpcmRzJSc+4oWUDQorJ2ZyZW5jaCBmcmFuYyBzaWduJSc+4oKjDQorJ2Zyb250LXRpbHRlZCBzaGFkb3dlZCB3aGl0ZSByaWdodCBhcnJvdyUnPuKerA0KKydmcm93biUnPuKMog0KKydmdWxsIGJsb2NrJSc+4paIDQorJ2dlbWluaSUnPuKZig0KKydnZW9tZXRyaWMgcHJvcG9ydGlvbiUnPuKIug0KKydnZW9tZXRyaWNhbGx5IGVxdWFsIHRvJSc+4omRDQorJ2dlb21ldHJpY2FsbHkgZXF1aXZhbGVudCB0byUnPuKJjg0KKydnZXRhIG1hcmslJz7jgJMNCisnZ3JhcGhpYyBmb3IgYWNrbm93bGVkZ2UlJz7ikIYNCisnZ3JhcGhpYyBmb3IgYmFja3NwYWNlJSc+4pCIDQorJ2dyYXBoaWMgZm9yIGJlbGwlJz7ikIcNCisnZ3JhcGhpYyBmb3IgY2FuY2VsJSc+4pCYDQorJ2dyYXBoaWMgZm9yIGNhcnJpYWdlIHJldHVybiUnPuKQjQ0KKydncmFwaGljIGZvciBkYXRhIGxpbmsgZXNjYXBlJSc+4pCQDQorJ2dyYXBoaWMgZm9yIGRlbGV0ZSUnPuKQoQ0KKydncmFwaGljIGZvciBkZXZpY2UgY29udHJvbCBmb3VyJSc+4pCUDQorJ2dyYXBoaWMgZm9yIGRldmljZSBjb250cm9sIG9uZSUnPuKQkQ0KKydncmFwaGljIGZvciBkZXZpY2UgY29udHJvbCB0aHJlZSUnPuKQkw0KKydncmFwaGljIGZvciBkZXZpY2UgY29udHJvbCB0d28lJz7ikJINCisnZ3JhcGhpYyBmb3IgZW5kIG9mIG1lZGl1bSUnPuKQmQ0KKydncmFwaGljIGZvciBlbmQgb2YgdGV4dCUnPuKQgw0KKydncmFwaGljIGZvciBlbmQgb2YgdHJhbnNtaXNzaW9uIGJsb2NrJSc+4pCXDQorJ2dyYXBoaWMgZm9yIGVuZCBvZiB0cmFuc21pc3Npb24lJz7ikIQNCisnZ3JhcGhpYyBmb3IgZW5xdWlyeSUnPuKQhQ0KKydncmFwaGljIGZvciBlc2NhcGUlJz7ikJsNCisnZ3JhcGhpYyBmb3IgZmlsZSBzZXBhcmF0b3IlJz7ikJwNCisnZ3JhcGhpYyBmb3IgZm9ybSBmZWVkJSc+4pCMDQorJ2dyYXBoaWMgZm9yIGdyb3VwIHNlcGFyYXRvciUnPuKQnQ0KKydncmFwaGljIGZvciBob3Jpem9udGFsIHRhYnVsYXRpb24lJz7ikIkNCisnZ3JhcGhpYyBmb3IgbGluZSBmZWVkJSc+4pCKDQorJ2dyYXBoaWMgZm9yIG5lZ2F0aXZlIGFja25vd2xlZGdlJSc+4pCVDQorJ2dyYXBoaWMgZm9yIG5ld2xpbmUlJz7ikKQNCisnZ3JhcGhpYyBmb3IgbnVsbCUnPuKQgA0KKydncmFwaGljIGZvciByZWNvcmQgc2VwYXJhdG9yJSc+4pCeDQorJ2dyYXBoaWMgZm9yIHNoaWZ0IGluJSc+4pCPDQorJ2dyYXBoaWMgZm9yIHNoaWZ0IG91dCUnPuKQjg0KKydncmFwaGljIGZvciBzcGFjZSUnPuKQoA0KKydncmFwaGljIGZvciBzdGFydCBvZiBoZWFkaW5nJSc+4pCBDQorJ2dyYXBoaWMgZm9yIHN0YXJ0IG9mIHRleHQlJz7ikIINCisnZ3JhcGhpYyBmb3Igc3Vic3RpdHV0ZSUnPuKQmg0KKydncmFwaGljIGZvciBzeW5jaHJvbm91cyBpZGxlJSc+4pCWDQorJ2dyYXBoaWMgZm9yIHVuaXQgc2VwYXJhdG9yJSc+4pCfDQorJ2dyYXBoaWMgZm9yIHZlcnRpY2FsIHRhYnVsYXRpb24lJz7ikIsNCisnZ3JlYXRlciB0aGFuIGJ1dCBub3QgZXF1YWwgdG8lJz7iiakNCisnZ3JlYXRlciB0aGFuIGJ1dCBub3QgZXF1aXZhbGVudCB0byUnPuKLpw0KKydncmVhdGVyIHRoYW4gZXF1YWwgdG8gb3IgbGVzcyB0aGFuJSc+4oubDQorJ2dyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byUnPuKJpQ0KKydncmVhdGVyIHRoYW4gb3IgZXF1aXZhbGVudCB0byUnPuKJsw0KKydncmVhdGVyIHRoYW4gb3IgbGVzcyB0aGFuJSc+4om3DQorJ2dyZWF0ZXIgdGhhbiBvdmVyIGVxdWFsIHRvJSc+4omnDQorJ2dyZWF0ZXIgdGhhbiB3aXRoIGRvdCUnPuKLlw0KKydoYWlyIHNwYWNlJSc+4oCKDQorJ2hhbW1lciBhbmQgc2lja2xlJSc+4pitDQorJ2hhbmd1bCBkb3VibGUgZG90IHRvbmUgbWFyayUnPuOArw0KKydoYW5ndWwgc2luZ2xlIGRvdCB0b25lIG1hcmslJz7jgK4NCisnaGFuZ3pob3UgbnVtZXJhbCBlaWdodCUnPuOAqA0KKydoYW5nemhvdSBudW1lcmFsIGZpdmUlJz7jgKUNCisnaGFuZ3pob3UgbnVtZXJhbCBmb3VyJSc+44CkDQorJ2hhbmd6aG91IG51bWVyYWwgbmluZSUnPuOAqQ0KKydoYW5nemhvdSBudW1lcmFsIG9uZSUnPuOAoQ0KKydoYW5nemhvdSBudW1lcmFsIHNldmVuJSc+44CnDQorJ2hhbmd6aG91IG51bWVyYWwgc2l4JSc+44CmDQorJ2hhbmd6aG91IG51bWVyYWwgdGhyZWUlJz7jgKMNCisnaGFuZ3pob3UgbnVtZXJhbCB0d28lJz7jgKINCisnaGVhdnkgYXN0ZXJpc2slJz7inLENCisnaGVhdnkgYmxhY2sgY3VydmVkIGRvd24gYW5kIHJpZ2h0IGFycm93JSc+4p6lDQorJ2hlYXZ5IGJsYWNrIGN1cnZlZCB1cCBhbmQgcmlnaHQgYXJyb3clJz7inqYNCisnaGVhdnkgYmxhY2sgaGVhcnQlJz7inaQNCisnaGVhdnkgYmxhY2stZmVhdGhlcmVkIGxvd2VyIHJpZ2h0IGFycm93JSc+4p63DQorJ2hlYXZ5IGJsYWNrLWZlYXRoZXJlZCByaWdodCBhcnJvdyUnPuKeuA0KKydoZWF2eSBibGFjay1mZWF0aGVyZWQgdXBwZXIgcmlnaHQgYXJyb3clJz7inrkNCisnaGVhdnkgY2hlY2sgbWFyayUnPuKclA0KKydoZWF2eSBjaGV2cm9uIHNub3dmbGFrZSUnPuKdhg0KKydoZWF2eSBjb25jYXZlLXBvaW50ZWQgYmxhY2sgcmlnaHQgYXJyb3clJz7inqgNCisnaGVhdnkgZGFzaGVkIHRyaWFuZ2xlLWhlYWRlZCByaWdodCBhcnJvdyUnPuKeoA0KKydoZWF2eSBkb3VibGUgY29tbWEgcXVvdGF0aW9uIG1hcmsgb3JuYW1lbnQlJz7inZ4NCisnaGVhdnkgZG91YmxlIHR1cm5lZCBjb21tYSBxdW90YXRpb24gbWFyayBvcm5hbWVudCUnPuKdnQ0KKydoZWF2eSBlaWdodCBwb2ludGVkIHJlY3RpbGluZWFyIGJsYWNrIHN0YXIlJz7inLgNCisnaGVhdnkgZWlnaHQgdGVhcmRyb3Atc3Bva2VkIHByb3BlbGxlciBhc3RlcmlzayUnPuKdiw0KKydoZWF2eSBleGNsYW1hdGlvbiBtYXJrIG9ybmFtZW50JSc+4p2iDQorJ2hlYXZ5IGZvdXIgYmFsbG9vbi1zcG9rZWQgYXN0ZXJpc2slJz7inKQNCisnaGVhdnkgZ3JlZWsgY3Jvc3MlJz7inJoNCisnaGVhdnkgaGVhcnQgZXhjbGFtYXRpb24gbWFyayBvcm5hbWVudCUnPuKdow0KKydoZWF2eSBsb3dlciByaWdodCBhcnJvdyUnPuKemA0KKydoZWF2eSBsb3dlciByaWdodC1zaGFkb3dlZCB3aGl0ZSByaWdodCBhcnJvdyUnPuKerQ0KKydoZWF2eSBtdWx0aXBsaWNhdGlvbiB4JSc+4pyWDQorJ2hlYXZ5IG9wZW4gY2VudGVyIGNyb3NzJSc+4pycDQorJ2hlYXZ5IG91dGxpbmVkIGJsYWNrIHN0YXIlJz7inK4NCisnaGVhdnkgcmlnaHQgYXJyb3clJz7inpkNCisnaGVhdnkgcm91bmQtdGlwcGVkIHJpZ2h0IGFycm93JSc+4p6cDQorJ2hlYXZ5IHNpbmdsZSBjb21tYSBxdW90YXRpb24gbWFyayBvcm5hbWVudCUnPuKdnA0KKydoZWF2eSBzaW5nbGUgdHVybmVkIGNvbW1hIHF1b3RhdGlvbiBtYXJrIG9ybmFtZW50JSc+4p2bDQorJ2hlYXZ5IHNwYXJrbGUlJz7inYgNCisnaGVhdnkgdGVhcmRyb3Atc2hhbmtlZCByaWdodCBhcnJvdyUnPuKeuw0KKydoZWF2eSB0ZWFyZHJvcC1zcG9rZWQgYXN0ZXJpc2slJz7inL0NCisnaGVhdnkgdGVhcmRyb3Atc3Bva2VkIHBpbndoZWVsIGFzdGVyaXNrJSc+4p2DDQorJ2hlYXZ5IHRyaWFuZ2xlLWhlYWRlZCByaWdodCBhcnJvdyUnPuKeng0KKydoZWF2eSB1cHBlciByaWdodCBhcnJvdyUnPuKemg0KKydoZWF2eSB1cHBlciByaWdodC1zaGFkb3dlZCB3aGl0ZSByaWdodCBhcnJvdyUnPuKerg0KKydoZWF2eSB2ZXJ0aWNhbCBiYXIlJz7inZoNCisnaGVhdnkgd2VkZ2UtdGFpbGVkIHJpZ2h0IGFycm93JSc+4p69DQorJ2hlYXZ5IHdpZGUtaGVhZGVkIHJpZ2h0IGFycm93JSc+4p6UDQorJ2hlcm1pdGlhbiBjb25qdWdhdGUgbWF0cml4JSc+4oq5DQorJ2hvbW90aGV0aWMlJz7iiLsNCisnaG9yaXpvbnRhbCBlbGxpcHNpcyUnPuKApg0KKydob3Qgc3ByaW5ncyUnPuKZqA0KKydob3VyZ2xhc3MlJz7ijJsNCisnaG91c2UlJz7ijIINCisnaHlwaGVuIGJ1bGxldCUnPuKBgw0KKydoeXBoZW4lJz7igJANCisnaHlwaGVuYXRpb24gcG9pbnQlJz7igKcNCisnaWRlbnRpY2FsIHRvJSc+4omhDQorJ2lkZW9ncmFwaGljIGNsb3NpbmcgbWFyayUnPuOAhg0KKydpZGVvZ3JhcGhpYyBjb21tYSUnPuOAgQ0KKydpZGVvZ3JhcGhpYyBkZXBhcnRpbmcgdG9uZSBtYXJrJSc+44CsDQorJ2lkZW9ncmFwaGljIGRpdHRvIG1hcmslJz7jgIQNCisnaWRlb2dyYXBoaWMgZW50ZXJpbmcgdG9uZSBtYXJrJSc+44CtDQorJ2lkZW9ncmFwaGljIGhhbGYgZmlsbCBzcGFjZSUnPuOAvw0KKydpZGVvZ3JhcGhpYyBpdGVyYXRpb24gbWFyayUnPuOAhQ0KKydpZGVvZ3JhcGhpYyBsZXZlbCB0b25lIG1hcmslJz7jgKoNCisnaWRlb2dyYXBoaWMgbnVtYmVyIHplcm8lJz7jgIcNCisnaWRlb2dyYXBoaWMgcGVyaW9kJSc+44CCDQorJ2lkZW9ncmFwaGljIHJpc2luZyB0b25lIG1hcmslJz7jgKsNCisnaWRlb2dyYXBoaWMgc3BhY2UlJz7jgIANCisnaW1hZ2Ugb2Ygb3IgYXBwcm94aW1hdGVseSBlcXVhbCB0byUnPuKJkw0KKydpbWFnZSBvZiUnPuKKtw0KKydpbmNyZW1lbnQlJz7iiIYNCisnaW5maW5pdHklJz7iiJ4NCisnaW50ZWdyYWwlJz7iiKsNCisnaW50ZXJjYWxhdGUlJz7iiroNCisnaW50ZXJyb2JhbmclJz7igL0NCisnaW50ZXJzZWN0aW9uJSc+4oipDQorJ2ludmVyc2UgYnVsbGV0JSc+4peYDQorJ2ludmVyc2UgY2lyY2xlZCBkaWdpdCBlaWdodCUnPuKdvQ0KKydpbnZlcnNlIGNpcmNsZWQgZGlnaXQgZml2ZSUnPuKdug0KKydpbnZlcnNlIGNpcmNsZWQgZGlnaXQgZm91ciUnPuKduQ0KKydpbnZlcnNlIGNpcmNsZWQgZGlnaXQgbmluZSUnPuKdvg0KKydpbnZlcnNlIGNpcmNsZWQgZGlnaXQgb25lJSc+4p22DQorJ2ludmVyc2UgY2lyY2xlZCBkaWdpdCBzZXZlbiUnPuKdvA0KKydpbnZlcnNlIGNpcmNsZWQgZGlnaXQgc2l4JSc+4p27DQorJ2ludmVyc2UgY2lyY2xlZCBkaWdpdCB0aHJlZSUnPuKduA0KKydpbnZlcnNlIGNpcmNsZWQgZGlnaXQgdHdvJSc+4p23DQorJ2ludmVyc2UgY2lyY2xlZCBudW1iZXIgdGVuJSc+4p2/DQorJ2ludmVyc2UgY2lyY2xlZCBzYW5zIHNlcmlmIGRpZ2l0IGVpZ2h0JSc+4p6RDQorJ2ludmVyc2UgY2lyY2xlZCBzYW5zIHNlcmlmIGRpZ2l0IGZpdmUlJz7ino4NCisnaW52ZXJzZSBjaXJjbGVkIHNhbnMgc2VyaWYgZGlnaXQgZm91ciUnPuKejQ0KKydpbnZlcnNlIGNpcmNsZWQgc2FucyBzZXJpZiBkaWdpdCBuaW5lJSc+4p6SDQorJ2ludmVyc2UgY2lyY2xlZCBzYW5zIHNlcmlmIGRpZ2l0IG9uZSUnPuKeig0KKydpbnZlcnNlIGNpcmNsZWQgc2FucyBzZXJpZiBkaWdpdCBzZXZlbiUnPuKekA0KKydpbnZlcnNlIGNpcmNsZWQgc2FucyBzZXJpZiBkaWdpdCBzaXglJz7ino8NCisnaW52ZXJzZSBjaXJjbGVkIHNhbnMgc2VyaWYgZGlnaXQgdGhyZWUlJz7inowNCisnaW52ZXJzZSBjaXJjbGVkIHNhbnMgc2VyaWYgZGlnaXQgdHdvJSc+4p6LDQorJ2ludmVyc2UgY2lyY2xlZCBzYW5zIHNlcmlmIG51bWJlciB0ZW4lJz7inpMNCisnaW52ZXJzZSB3aGl0ZSBjaXJjbGUlJz7il5kNCisnaW52ZXJ0ZWQgZXhjbGFtYXRpb24gbWFyayUnPsKhDQorJ2ludmVydGVkIGxhenkgcyUnPuKIvg0KKydpbnZlcnRlZCBxdWVzdGlvbiBtYXJrJSc+wr8NCisnanVwaXRlciUnPuKZgw0KKydrZXQlJz7ijKoNCisna2V5Ym9hcmQlJz7ijKgNCisnbCBiIGJhciBzeW1ib2wlJz7ihJQNCisnbGFzdCBxdWFydGVyIG1vb24lJz7imL4NCisnbGF0aW4gY3Jvc3MlJz7inJ0NCisnbGVmdCBhcnJvdyBmcm9tIGJhciUnPuKGpA0KKydsZWZ0IGFycm93IG92ZXIgcmlnaHQgYXJyb3clJz7ih4YNCisnbGVmdCBhcnJvdyB0byBiYXIgb3ZlciByaWdodCBhcnJvdyB0byBiYXIlJz7ihrkNCisnbGVmdCBhcnJvdyB0byBiYXIlJz7ih6QNCisnbGVmdCBhcnJvdyB3aXRoIGhvb2slJz7ihqkNCisnbGVmdCBhcnJvdyB3aXRoIGxvb3AlJz7ihqsNCisnbGVmdCBhcnJvdyB3aXRoIHN0cm9rZSUnPuKGmg0KKydsZWZ0IGFycm93IHdpdGggdGFpbCUnPuKGog0KKydsZWZ0IGFycm93JSc+4oaQDQorJ2xlZnQgY2VpbGluZyUnPuKMiA0KKydsZWZ0IGRhc2hlZCBhcnJvdyUnPuKHoA0KKydsZWZ0IGRvdWJsZSBhcnJvdyB3aXRoIHN0cm9rZSUnPuKHjQ0KKydsZWZ0IGRvdWJsZSBhcnJvdyUnPuKHkA0KKydsZWZ0IGZpdmUgZWlnaHRocyBibG9jayUnPuKWiw0KKydsZWZ0IGZsb29yJSc+4oyKDQorJ2xlZnQgaGFsZiBibGFjayBjaXJjbGUlJz7il5YNCisnbGVmdCBoYWxmIGJsb2NrJSc+4paMDQorJ2xlZnQgaGFycG9vbiBvdmVyIHJpZ2h0IGhhcnBvb24lJz7ih4sNCisnbGVmdCBoYXJwb29uIHdpdGggYmFyYiBkb3duJSc+4oa9DQorJ2xlZnQgaGFycG9vbiB3aXRoIGJhcmIgdXAlJz7ihrwNCisnbGVmdCBub3JtYWwgZmFjdG9yIHNlbWlkaXJlY3QgcHJvZHVjdCUnPuKLiQ0KKydsZWZ0IG9uZSBlaWdodGggYmxvY2slJz7ilo8NCisnbGVmdCBvbmUgcXVhcnRlciBibG9jayUnPuKWjg0KKydsZWZ0IHBhaXJlZCBhcnJvd3MlJz7ih4cNCisnbGVmdCBwb2ludGluZyBndWlsbGVtZXQlJz7Cqw0KKydsZWZ0IHBvaW50aW5nIHNpbmdsZSBndWlsbGVtZXQlJz7igLkNCisnbGVmdCByaWdodCBhcnJvdyB3aXRoIHN0cm9rZSUnPuKGrg0KKydsZWZ0IHJpZ2h0IGFycm93JSc+4oaUDQorJ2xlZnQgcmlnaHQgZG91YmxlIGFycm93IHdpdGggc3Ryb2tlJSc+4oeODQorJ2xlZnQgcmlnaHQgZG91YmxlIGFycm93JSc+4oeUDQorJ2xlZnQgcmlnaHQgd2F2ZSBhcnJvdyUnPuKGrQ0KKydsZWZ0IHNlbWlkaXJlY3QgcHJvZHVjdCUnPuKLiw0KKydsZWZ0IHNldmVuIGVpZ2h0aHMgYmxvY2slJz7ilokNCisnbGVmdCBzcXVpZ2dsZSBhcnJvdyUnPuKHnA0KKydsZWZ0IHRhY2slJz7iiqMNCisnbGVmdCB0aHJlZSBlaWdodGhzIGJsb2NrJSc+4paNDQorJ2xlZnQgdGhyZWUgcXVhcnRlciBibG9jayUnPuKWig0KKydsZWZ0IHRyaXBsZSBhcnJvdyUnPuKHmg0KKydsZWZ0IHR3byBoZWFkZWQgYXJyb3clJz7ihp4NCisnbGVmdCB3YXZlIGFycm93JSc+4oacDQorJ2xlZnQtc2hhZGVkIHdoaXRlIHJpZ2h0IGFycm93JSc+4p6qDQorJ2xlZnQtdG8tcmlnaHQgZW1iZWRkaW5nJSc+4oCqDQorJ2xlZnQtdG8tcmlnaHQgbWFyayUnPuKAjg0KKydsZWZ0LXRvLXJpZ2h0IG92ZXJyaWRlJSc+4oCtDQorJ2xlbyUnPuKZjA0KKydsZXNzIHRoYW4gYnV0IG5vdCBlcXVhbCB0byUnPuKJqA0KKydsZXNzIHRoYW4gYnV0IG5vdCBlcXVpdmFsZW50IHRvJSc+4oumDQorJ2xlc3MgdGhhbiBlcXVhbCB0byBvciBncmVhdGVyIHRoYW4lJz7ii5oNCisnbGVzcyB0aGFuIG9yIGVxdWFsIHRvJSc+4omkDQorJ2xlc3MgdGhhbiBvciBlcXVpdmFsZW50IHRvJSc+4omyDQorJ2xlc3MgdGhhbiBvciBncmVhdGVyIHRoYW4lJz7iibYNCisnbGVzcyB0aGFuIG92ZXIgZXF1YWwgdG8lJz7iiaYNCisnbGVzcyB0aGFuIHdpdGggZG90JSc+4ouWDQorJ2xpYnJhJSc+4pmODQorJ2xpZ2h0IHNoYWRlJSc+4paRDQorJ2xpZ2h0IHZlcnRpY2FsIGJhciUnPuKdmA0KKydsaWdodG5pbmclJz7imIcNCisnbGluZSBzZXBhcmF0b3IlJz7igKgNCisnbGlyYSBzaWduJSc+4oKkDQorJ2xvZ2ljYWwgYW5kJSc+4oinDQorJ2xvZ2ljYWwgb3IlJz7iiKgNCisnbG93IGRvdWJsZSBjb21tYSBxdW90YXRpb24gbWFyayUnPuKAng0KKydsb3cgZG91YmxlIHByaW1lIHF1b3RhdGlvbiBtYXJrJSc+44CfDQorJ2xvdyBzaW5nbGUgY29tbWEgcXVvdGF0aW9uIG1hcmslJz7igJoNCisnbG93ZXIgYmxhZGUgc2Npc3NvcnMlJz7inIMNCisnbG93ZXIgZml2ZSBlaWdodGhzIGJsb2NrJSc+4paFDQorJ2xvd2VyIGhhbGYgYmxvY2slJz7iloQNCisnbG93ZXIgaGFsZiBjaXJjbGUlJz7il6ENCisnbG93ZXIgaGFsZiBpbnZlcnNlIHdoaXRlIGNpcmNsZSUnPuKXmw0KKydsb3dlciBsZWZ0IGFycm93JSc+4oaZDQorJ2xvd2VyIGxlZnQgZG91YmxlIGFycm93JSc+4oeZDQorJ2xvd2VyIGxlZnQgcXVhZHJhbnQgY2lyY3VsYXIgYXJjJSc+4pefDQorJ2xvd2VyIG9uZSBlaWdodGggYmxvY2slJz7iloENCisnbG93ZXIgb25lIHF1YXJ0ZXIgYmxvY2slJz7iloINCisnbG93ZXIgcmlnaHQgYXJyb3clJz7ihpgNCisnbG93ZXIgcmlnaHQgZG91YmxlIGFycm93JSc+4oeYDQorJ2xvd2VyIHJpZ2h0IGRyb3Atc2hhZG93ZWQgd2hpdGUgc3F1YXJlJSc+4p2PDQorJ2xvd2VyIHJpZ2h0IHBlbmNpbCUnPuKcjg0KKydsb3dlciByaWdodCBxdWFkcmFudCBjaXJjdWxhciBhcmMlJz7il54NCisnbG93ZXIgcmlnaHQgc2hhZG93ZWQgd2hpdGUgc3F1YXJlJSc+4p2RDQorJ2xvd2VyIHNldmVuIGVpZ2h0aHMgYmxvY2slJz7ilocNCisnbG93ZXIgdGhyZWUgZWlnaHRocyBibG9jayUnPuKWgw0KKydsb3dlciB0aHJlZSBxdWFydGVyIGJsb2NrJSc+4paGDQorJ2xvemVuZ2UlJz7il4oNCisnbWFsZSBzaWduJSc+4pmCDQorJ21hbHRlc2UgY3Jvc3MlJz7inKANCisnbWFzY3VsaW5lIG9yZGluYWwgaW5kaWNhdG9yJSc+wroNCisnbWVhc3VyZWQgYW5nbGUlJz7iiKENCisnbWVhc3VyZWQgYnklJz7iiZ4NCisnbWVkaXVtIHNoYWRlJSc+4paSDQorJ21lZGl1bSB2ZXJ0aWNhbCBiYXIlJz7inZkNCisnbWVyY3VyeSUnPuKYvw0KKydtaG8lJz7ihKcNCisnbWljcm8gc2lnbiUnPsK1DQorJ21pZGRsZSBkb3QlJz7Ctw0KKydtaWRsaW5lIGhvcml6b250YWwgZWxsaXBzaXMlJz7ii68NCisnbWlsbCBzaWduJSc+4oKlDQorJ21pbnVzIHNpZ24lJz7iiJINCisnbWludXMgdGlsZGUlJz7iiYINCisnbWludXMtb3ItcGx1cyBzaWduJSc+4oiTDQorJ21vZGVscyUnPuKKpw0KKydtb2RpZmllciBsZXR0ZXIgYWN1dGUlJz7Lig0KKydtb2RpZmllciBsZXR0ZXIgYXBvc3Ryb3BoZSUnPsq8DQorJ21vZGlmaWVyIGxldHRlciBjZW50ZXJlZCBsZWZ0IGhhbGYgcmluZyUnPsuTDQorJ21vZGlmaWVyIGxldHRlciBjZW50ZXJlZCByaWdodCBoYWxmIHJpbmclJz7Lkg0KKydtb2RpZmllciBsZXR0ZXIgY2lyY3VtZmxleCUnPsuGDQorJ21vZGlmaWVyIGxldHRlciBkb3VibGUgcHJpbWUlJz7Kug0KKydtb2RpZmllciBsZXR0ZXIgZG93biBhcnJvd2hlYWQlJz7LhQ0KKydtb2RpZmllciBsZXR0ZXIgZG93biB0YWNrJSc+y5UNCisnbW9kaWZpZXIgbGV0dGVyIGV4dHJhLWhpZ2ggdG9uZSBiYXIlJz7LpQ0KKydtb2RpZmllciBsZXR0ZXIgZXh0cmEtbG93IHRvbmUgYmFyJSc+y6kNCisnbW9kaWZpZXIgbGV0dGVyIGdsb3R0YWwgc3RvcCUnPsuADQorJ21vZGlmaWVyIGxldHRlciBncmF2ZSUnPsuLDQorJ21vZGlmaWVyIGxldHRlciBoYWNlayUnPsuHDQorJ21vZGlmaWVyIGxldHRlciBoYWxmIHRyaWFuZ3VsYXIgY29sb24lJz7LkQ0KKydtb2RpZmllciBsZXR0ZXIgaGlnaCB0b25lIGJhciUnPsumDQorJ21vZGlmaWVyIGxldHRlciBsZWZ0IGFycm93aGVhZCUnPsuCDQorJ21vZGlmaWVyIGxldHRlciBsZWZ0IGhhbGYgcmluZyUnPsq/DQorJ21vZGlmaWVyIGxldHRlciBsb3cgYWN1dGUlJz7Ljw0KKydtb2RpZmllciBsZXR0ZXIgbG93IGdyYXZlJSc+y44NCisnbW9kaWZpZXIgbGV0dGVyIGxvdyBtYWNyb24lJz7LjQ0KKydtb2RpZmllciBsZXR0ZXIgbG93IHRvbmUgYmFyJSc+y6gNCisnbW9kaWZpZXIgbGV0dGVyIGxvdyB2ZXJ0aWNhbCBsaW5lJSc+y4wNCisnbW9kaWZpZXIgbGV0dGVyIG1hY3JvbiUnPsuJDQorJ21vZGlmaWVyIGxldHRlciBtaWQgdG9uZSBiYXIlJz7Lpw0KKydtb2RpZmllciBsZXR0ZXIgbWludXMgc2lnbiUnPsuXDQorJ21vZGlmaWVyIGxldHRlciBwbHVzIHNpZ24lJz7Llg0KKydtb2RpZmllciBsZXR0ZXIgcHJpbWUlJz7KuQ0KKydtb2RpZmllciBsZXR0ZXIgcmV2ZXJzZWQgY29tbWElJz7KvQ0KKydtb2RpZmllciBsZXR0ZXIgcmV2ZXJzZWQgZ2xvdHRhbCBzdG9wJSc+y4ENCisnbW9kaWZpZXIgbGV0dGVyIHJob3RpYyBob29rJSc+y54NCisnbW9kaWZpZXIgbGV0dGVyIHJpZ2h0IGFycm93aGVhZCUnPsuDDQorJ21vZGlmaWVyIGxldHRlciByaWdodCBoYWxmIHJpbmclJz7Kvg0KKydtb2RpZmllciBsZXR0ZXIgc21hbGwgY2FwaXRhbCBpbnZlcnRlZCByJSc+yrYNCisnbW9kaWZpZXIgbGV0dGVyIHNtYWxsIGdhbW1hJSc+y6ANCisnbW9kaWZpZXIgbGV0dGVyIHNtYWxsIGggaG9vayUnPsqxDQorJ21vZGlmaWVyIGxldHRlciBzbWFsbCBoJSc+yrANCisnbW9kaWZpZXIgbGV0dGVyIHNtYWxsIGolJz7Ksg0KKydtb2RpZmllciBsZXR0ZXIgc21hbGwgbCUnPsuhDQorJ21vZGlmaWVyIGxldHRlciBzbWFsbCByJSc+yrMNCisnbW9kaWZpZXIgbGV0dGVyIHNtYWxsIHJldmVyc2VkIGdsb3R0YWwgc3RvcCUnPsukDQorJ21vZGlmaWVyIGxldHRlciBzbWFsbCBzJSc+y6INCisnbW9kaWZpZXIgbGV0dGVyIHNtYWxsIHR1cm5lZCByIGhvb2slJz7KtQ0KKydtb2RpZmllciBsZXR0ZXIgc21hbGwgdHVybmVkIHIlJz7KtA0KKydtb2RpZmllciBsZXR0ZXIgc21hbGwgdyUnPsq3DQorJ21vZGlmaWVyIGxldHRlciBzbWFsbCB4JSc+y6MNCisnbW9kaWZpZXIgbGV0dGVyIHNtYWxsIHklJz7KuA0KKydtb2RpZmllciBsZXR0ZXIgdHJpYW5ndWxhciBjb2xvbiUnPsuQDQorJ21vZGlmaWVyIGxldHRlciB0dXJuZWQgY29tbWElJz7Kuw0KKydtb2RpZmllciBsZXR0ZXIgdXAgYXJyb3doZWFkJSc+y4QNCisnbW9kaWZpZXIgbGV0dGVyIHVwIHRhY2slJz7LlA0KKydtb2RpZmllciBsZXR0ZXIgdmVydGljYWwgbGluZSUnPsuIDQorJ211Y2ggZ3JlYXRlciB0aGFuJSc+4omrDQorJ211Y2ggbGVzcyB0aGFuJSc+4omqDQorJ211bHRpbWFwJSc+4oq4DQorJ211bHRpcGxpY2F0aW9uIHNpZ24lJz7Dlw0KKydtdWx0aXBsaWNhdGlvbiB4JSc+4pyVDQorJ211bHRpc2V0IG11bHRpcGxpY2F0aW9uJSc+4oqNDQorJ211bHRpc2V0IHVuaW9uJSc+4oqODQorJ211bHRpc2V0JSc+4oqMDQorJ24tYXJ5IGNvcHJvZHVjdCUnPuKIkA0KKyduLWFyeSBpbnRlcnNlY3Rpb24lJz7ii4INCisnbi1hcnkgbG9naWNhbCBhbmQlJz7ii4ANCisnbi1hcnkgbG9naWNhbCBvciUnPuKLgQ0KKyduLWFyeSBwcm9kdWN0JSc+4oiPDQorJ24tYXJ5IHN1bW1hdGlvbiUnPuKIkQ0KKyduLWFyeSB1bmlvbiUnPuKLgw0KKyduYWJsYSUnPuKIhw0KKyduYWlyYSBzaWduJSc+4oKmDQorJ25hbmQlJz7iirwNCisnbmF0dXJhbCUnPuKZrg0KKyduZWdhdGVkIGRvdWJsZSB2ZXJ0aWNhbCBiYXIgZG91YmxlIHJpZ2h0IHR1cm5zdGlsZSUnPuKKrw0KKyduZWl0aGVyIGEgc3Vic2V0IG9mIG5vciBlcXVhbCB0byUnPuKKiA0KKyduZWl0aGVyIGEgc3VwZXJzZXQgb2Ygbm9yIGVxdWFsIHRvJSc+4oqJDQorJ25laXRoZXIgYXBwcm94aW1hdGVseSBub3IgYWN0dWFsbHkgZXF1YWwgdG8lJz7iiYcNCisnbmVpdGhlciBncmVhdGVyIHRoYW4gbm9yIGVxdWFsIHRvJSc+4omxDQorJ25laXRoZXIgZ3JlYXRlciB0aGFuIG5vciBlcXVpdmFsZW50IHRvJSc+4om1DQorJ25laXRoZXIgZ3JlYXRlciB0aGFuIG5vciBsZXNzIHRoYW4lJz7iibkNCisnbmVpdGhlciBsZXNzIHRoYW4gbm9yIGVxdWFsIHRvJSc+4omwDQorJ25laXRoZXIgbGVzcyB0aGFuIG5vciBlcXVpdmFsZW50IHRvJSc+4om0DQorJ25laXRoZXIgbGVzcyB0aGFuIG5vciBncmVhdGVyIHRoYW4lJz7iibgNCisnbmVwdHVuZSUnPuKZhg0KKyduZXcgc2hlcWVsIHNpZ24lJz7igqoNCisnbm9uLWJyZWFraW5nIGh5cGhlbiUnPuKAkQ0KKydub24tYnJlYWtpbmcgc3BhY2UlJz7CoA0KKydub24tc3BhY2luZyBhY3V0ZSBiZWxvdyUnPsyXDQorJ25vbi1zcGFjaW5nIGFjdXRlIHRvbmUgbWFyayUnPs2IDQorJ25vbi1zcGFjaW5nIGFjdXRlJSc+zIENCisnbm9uLXNwYWNpbmcgYW50aWNsb2Nrd2lzZSBhcnJvdyBhYm92ZSUnPuKDlA0KKydub24tc3BhY2luZyBhbnRpY2xvY2t3aXNlIHJpbmcgb3ZlcmxheSUnPuKDmg0KKydub24tc3BhY2luZyBicmV2ZSBiZWxvdyUnPsyuDQorJ25vbi1zcGFjaW5nIGJyZXZlJSc+zIYNCisnbm9uLXNwYWNpbmcgYnJpZGdlIGJlbG93JSc+zKoNCisnbm9uLXNwYWNpbmcgY2FuZHJhYmluZHUlJz7MkA0KKydub24tc3BhY2luZyBjZWRpbGxhJSc+zKcNCisnbm9uLXNwYWNpbmcgY2VudGVybGluZSBvdmVyc2NvcmUlJz7NgQ0KKydub24tc3BhY2luZyBjZW50ZXJsaW5lIHVuZGVyc2NvcmUlJz7NhQ0KKydub24tc3BhY2luZyBjaXJjdW1mbGV4IGJlbG93JSc+zK0NCisnbm9uLXNwYWNpbmcgY2lyY3VtZmxleCUnPsyCDQorJ25vbi1zcGFjaW5nIGNsb2Nrd2lzZSBhcnJvdyBhYm92ZSUnPuKDlQ0KKydub24tc3BhY2luZyBjbG9ja3dpc2UgcmluZyBvdmVybGF5JSc+4oOZDQorJ25vbi1zcGFjaW5nIGNvbW1hIGFib3ZlIHJpZ2h0JSc+zJUNCisnbm9uLXNwYWNpbmcgY29tbWEgYWJvdmUlJz7Mkw0KKydub24tc3BhY2luZyBjb21tYSBiZWxvdyUnPsymDQorJ25vbi1zcGFjaW5nIGRhc2hlZCBvdmVyc2NvcmUlJz7NgA0KKydub24tc3BhY2luZyBkYXNoZWQgdW5kZXJzY29yZSUnPs2EDQorJ25vbi1zcGFjaW5nIGRpYWVyZXNpcyUnPsyIDQorJ25vbi1zcGFjaW5nIGRvdCBhYm92ZSUnPsyHDQorJ25vbi1zcGFjaW5nIGRvdCBiZWxvdyUnPsyjDQorJ25vbi1zcGFjaW5nIGRvdWJsZSBhY3V0ZSUnPsyLDQorJ25vbi1zcGFjaW5nIGRvdWJsZSBkb3QgYmVsb3clJz7MpA0KKydub24tc3BhY2luZyBkb3VibGUgZ3JhdmUlJz7Mjw0KKydub24tc3BhY2luZyBkb3VibGUgb3ZlcnNjb3JlJSc+zL8NCisnbm9uLXNwYWNpbmcgZG91YmxlIHVuZGVyc2NvcmUlJz7Msw0KKydub24tc3BhY2luZyBkb3VibGUgdmVydGljYWwgbGluZSBhYm92ZSUnPsyODQorJ25vbi1zcGFjaW5nIGRvdWJsZSB3YXZ5IG92ZXJzY29yZSUnPs2DDQorJ25vbi1zcGFjaW5nIGRvd24gdGFjayBiZWxvdyUnPsyeDQorJ25vbi1zcGFjaW5nIGZvdXIgZG90cyBhYm92ZSUnPuKDnA0KKydub24tc3BhY2luZyBncmF2ZSBiZWxvdyUnPsyWDQorJ25vbi1zcGFjaW5nIGdyYXZlIHRvbmUgbWFyayUnPs2HDQorJ25vbi1zcGFjaW5nIGdyYXZlJSc+zIANCisnbm9uLXNwYWNpbmcgaGFjZWsgYmVsb3clJz7MrA0KKydub24tc3BhY2luZyBoYWNlayUnPsyMDQorJ25vbi1zcGFjaW5nIGhvb2sgYWJvdmUlJz7MiQ0KKydub24tc3BhY2luZyBob3JuJSc+zJsNCisnbm9uLXNwYWNpbmcgaW52ZXJ0ZWQgYnJldmUgYmVsb3clJz7Mrw0KKydub24tc3BhY2luZyBpbnZlcnRlZCBicmV2ZSUnPsyRDQorJ25vbi1zcGFjaW5nIGludmVydGVkIGJyaWRnZSBiZWxvdyUnPsy6DQorJ25vbi1zcGFjaW5nIGludmVydGVkIGRvdWJsZSBhcmNoIGJlbG93JSc+zKsNCisnbm9uLXNwYWNpbmcgbGVmdCBhbmdsZSBhYm92ZSUnPsyaDQorJ25vbi1zcGFjaW5nIGxlZnQgYXJyb3cgYWJvdmUlJz7ig5YNCisnbm9uLXNwYWNpbmcgbGVmdCBoYWxmIHJpbmcgYmVsb3clJz7MnA0KKydub24tc3BhY2luZyBsZWZ0IGhhcnBvb24gYWJvdmUlJz7ig5ANCisnbm9uLXNwYWNpbmcgbGVmdCByaWdodCBhcnJvdyBhYm92ZSUnPuKDoQ0KKydub24tc3BhY2luZyBsZWZ0IHRhY2sgYmVsb3clJz7MmA0KKydub24tc3BhY2luZyBsb25nIGJhciBvdmVybGF5JSc+zLYNCisnbm9uLXNwYWNpbmcgbG9uZyBzbGFzaCBvdmVybGF5JSc+zLgNCisnbm9uLXNwYWNpbmcgbG9uZyB2ZXJ0aWNhbCBiYXIgb3ZlcmxheSUnPuKDkg0KKydub24tc3BhY2luZyBtYWNyb24gYmVsb3clJz7MsQ0KKydub24tc3BhY2luZyBtYWNyb24lJz7MhA0KKydub24tc3BhY2luZyBtaW51cyBzaWduIGJlbG93JSc+zKANCisnbm9uLXNwYWNpbmcgb2dvbmVrJSc+zKgNCisnbm9uLXNwYWNpbmcgb3ZlcnNjb3JlJSc+zIUNCisnbm9uLXNwYWNpbmcgcGFsYXRhbGl6ZWQgaG9vayBiZWxvdyUnPsyhDQorJ25vbi1zcGFjaW5nIHBsdXMgc2lnbiBiZWxvdyUnPsyfDQorJ25vbi1zcGFjaW5nIHJldHJvZmxleCBob29rIGJlbG93JSc+zKINCisnbm9uLXNwYWNpbmcgcmV2ZXJzZWQgY29tbWEgYWJvdmUlJz7MlA0KKydub24tc3BhY2luZyByaWdodCBhcnJvdyBhYm92ZSUnPuKDlw0KKydub24tc3BhY2luZyByaWdodCBoYWxmIHJpbmcgYmVsb3clJz7MuQ0KKydub24tc3BhY2luZyByaWdodCBoYXJwb29uIGFib3ZlJSc+4oORDQorJ25vbi1zcGFjaW5nIHJpZ2h0IHRhY2sgYmVsb3clJz7MmQ0KKydub24tc3BhY2luZyByaW5nIGFib3ZlJSc+zIoNCisnbm9uLXNwYWNpbmcgcmluZyBiZWxvdyUnPsylDQorJ25vbi1zcGFjaW5nIHJpbmcgb3ZlcmxheSUnPuKDmA0KKydub24tc3BhY2luZyBzZWFndWxsIGJlbG93JSc+zLwNCisnbm9uLXNwYWNpbmcgc2hvcnQgYmFyIG92ZXJsYXklJz7MtQ0KKydub24tc3BhY2luZyBzaG9ydCBzbGFzaCBvdmVybGF5JSc+zLcNCisnbm9uLXNwYWNpbmcgc2hvcnQgdmVydGljYWwgYmFyIG92ZXJsYXklJz7ig5MNCisnbm9uLXNwYWNpbmcgc3F1YXJlIGJlbG93JSc+zLsNCisnbm9uLXNwYWNpbmcgdGhyZWUgZG90cyBhYm92ZSUnPuKDmw0KKydub24tc3BhY2luZyB0aWxkZSBiZWxvdyUnPsywDQorJ25vbi1zcGFjaW5nIHRpbGRlIG92ZXJsYXklJz7MtA0KKydub24tc3BhY2luZyB0aWxkZSUnPsyDDQorJ25vbi1zcGFjaW5nIHR1cm5lZCBjb21tYSBhYm92ZSUnPsySDQorJ25vbi1zcGFjaW5nIHVuZGVyc2NvcmUlJz7Msg0KKydub24tc3BhY2luZyB1cCB0YWNrIGJlbG93JSc+zJ0NCisnbm9uLXNwYWNpbmcgdmVydGljYWwgbGluZSBhYm92ZSUnPsyNDQorJ25vbi1zcGFjaW5nIHZlcnRpY2FsIGxpbmUgYmVsb3clJz7MqQ0KKydub24tc3BhY2luZyB2ZXJ0aWNhbCB0aWxkZSUnPsy+DQorJ25vbi1zcGFjaW5nIHdhdnkgb3ZlcnNjb3JlJSc+zYINCisnbm9uLXNwYWNpbmcgd2F2eSB1bmRlcnNjb3JlJSc+zYYNCisnbm9uLXNwYWNpbmcgeCBhYm92ZSUnPsy9DQorJ25vciUnPuKKvQ0KKydub3JtYWwgc3ViZ3JvdXAgb2Ygb3IgZXF1YWwgdG8lJz7iirQNCisnbm9ybWFsIHN1Ymdyb3VwIG9mJSc+4oqyDQorJ25vdCBhIHN1YnNldCBvZiUnPuKKhA0KKydub3QgYSBzdXBlcnNldCBvZiUnPuKKhQ0KKydub3QgYWxtb3N0IGVxdWFsIHRvJSc+4omJDQorJ25vdCBhbiBlbGVtZW50IG9mJSc+4oiJDQorJ25vdCBhc3ltcHRvdGljYWxseSBlcXVhbCB0byUnPuKJhA0KKydub3QgZXF1YWwgdG8lJz7iiaANCisnbm90IGVxdWl2YWxlbnQgdG8lJz7iia0NCisnbm90IGdyZWF0ZXIgdGhhbiUnPuKJrw0KKydub3QgaWRlbnRpY2FsIHRvJSc+4omiDQorJ25vdCBsZXNzIHRoYW4lJz7iia4NCisnbm90IG5vcm1hbCBzdWJncm91cCBvZiBvciBlcXVhbCB0byUnPuKLrA0KKydub3Qgbm9ybWFsIHN1Ymdyb3VwIG9mJSc+4ouqDQorJ25vdCBwYXJhbGxlbCB0byUnPuKIpg0KKydub3Qgc2lnbiUnPsKsDQorJ25vdCBzcXVhcmUgaW1hZ2Ugb2Ygb3IgZXF1YWwgdG8lJz7ii6INCisnbm90IHNxdWFyZSBvcmlnaW5hbCBvZiBvciBlcXVhbCB0byUnPuKLow0KKydub3QgdGlsZGUlJz7iiYENCisnbm90IHRydWUlJz7iiq0NCisnbm90Y2hlZCBsb3dlciByaWdodC1zaGFkb3dlZCB3aGl0ZSByaWdodCBhcnJvdyUnPuKerw0KKydub3RjaGVkIHVwcGVyIHJpZ2h0LXNoYWRvd2VkIHdoaXRlIHJpZ2h0IGFycm93JSc+4p6xDQorJ251bWJlciBlaWdodGVlbiBwZXJpb2QlJz7ikpkNCisnbnVtYmVyIGVsZXZlbiBwZXJpb2QlJz7ikpINCisnbnVtYmVyIGZpZnRlZW4gcGVyaW9kJSc+4pKWDQorJ251bWJlciBmb3VydGVlbiBwZXJpb2QlJz7ikpUNCisnbnVtYmVyIG5pbmV0ZWVuIHBlcmlvZCUnPuKSmg0KKydudW1iZXIgc2V2ZW50ZWVuIHBlcmlvZCUnPuKSmA0KKydudW1iZXIgc2l4dGVlbiBwZXJpb2QlJz7ikpcNCisnbnVtYmVyIHRlbiBwZXJpb2QlJz7ikpENCisnbnVtYmVyIHRoaXJ0ZWVuIHBlcmlvZCUnPuKSlA0KKydudW1iZXIgdHdlbHZlIHBlcmlvZCUnPuKSkw0KKydudW1iZXIgdHdlbnR5IHBlcmlvZCUnPuKSmw0KKydudW1lcm8lJz7ihJYNCisnb2NyIGFtb3VudCBvZiBjaGVjayUnPuKRhw0KKydvY3IgYmVsdCBidWNrbGUlJz7ikYQNCisnb2NyIGJvdyB0aWUlJz7ikYUNCisnb2NyIGJyYW5jaCBiYW5rIGlkZW50aWZpY2F0aW9uJSc+4pGGDQorJ29jciBjaGFpciUnPuKRgQ0KKydvY3IgY3VzdG9tZXIgYWNjb3VudCBudW1iZXIlJz7ikYkNCisnb2NyIGRhc2glJz7ikYgNCisnb2NyIGRvdWJsZSBiYWNrc2xhc2glJz7ikYoNCisnb2NyIGZvcmslJz7ikYINCisnb2NyIGhvb2slJz7ikYANCisnb2NyIGludmVydGVkIGZvcmslJz7ikYMNCisnb2htJSc+4oSmDQorJ29uZSBkb3QgbGVhZGVyJSc+4oCkDQorJ29wZW4gYm94JSc+4pCjDQorJ29wZW4gY2VudGVyIGFzdGVyaXNrJSc+4pyyDQorJ29wZW4gY2VudGVyIGJsYWNrIHN0YXIlJz7inKsNCisnb3BlbiBjZW50ZXIgY3Jvc3MlJz7inJsNCisnb3BlbiBjZW50ZXIgdGVhcmRyb3Atc3Bva2VkIGFzdGVyaXNrJSc+4py8DQorJ29wZW4tb3V0bGluZWQgcmlnaHQgYXJyb3clJz7inr4NCisnb3BlbmluZyBhbmdsZSBicmFja2V0JSc+44CIDQorJ29wZW5pbmcgYmxhY2sgbGVudGljdWxhciBicmFja2V0JSc+44CQDQorJ29wZW5pbmcgY29ybmVyIGJyYWNrZXQlJz7jgIwNCisnb3BlbmluZyBkb3VibGUgYW5nbGUgYnJhY2tldCUnPuOAig0KKydvcGVuaW5nIHRvcnRvaXNlIHNoZWxsIGJyYWNrZXQlJz7jgJQNCisnb3BlbmluZyB3aGl0ZSBjb3JuZXIgYnJhY2tldCUnPuOAjg0KKydvcGVuaW5nIHdoaXRlIGxlbnRpY3VsYXIgYnJhY2tldCUnPuOAlg0KKydvcGVuaW5nIHdoaXRlIHNxdWFyZSBicmFja2V0JSc+44CaDQorJ29wZW5pbmcgd2hpdGUgdG9ydG9pc2Ugc2hlbGwgYnJhY2tldCUnPuOAmA0KKydvcHBvc2l0aW9uJSc+4piNDQorJ29wdGlvbiBrZXklJz7ijKUNCisnb3JpZ2luYWwgb2YlJz7iirYNCisnb3J0aG9kb3ggY3Jvc3MlJz7imKYNCisnb3VuY2UlJz7ihKUNCisnb3V0bGluZWQgYmxhY2sgc3RhciUnPuKcrQ0KKydvdXRsaW5lZCBncmVlayBjcm9zcyUnPuKcmQ0KKydvdXRsaW5lZCBsYXRpbiBjcm9zcyUnPuKcnw0KKydwYXJhZ3JhcGggc2VwYXJhdG9yJSc+4oCpDQorJ3BhcmFncmFwaCBzaWduJSc+wrYNCisncGFyYWxsZWwgdG8lJz7iiKUNCisncGFyZW50aGVzaXplZCBkaWdpdCBlaWdodCUnPuKRuw0KKydwYXJlbnRoZXNpemVkIGRpZ2l0IGZpdmUlJz7ikbgNCisncGFyZW50aGVzaXplZCBkaWdpdCBmb3VyJSc+4pG3DQorJ3BhcmVudGhlc2l6ZWQgZGlnaXQgbmluZSUnPuKRvA0KKydwYXJlbnRoZXNpemVkIGRpZ2l0IG9uZSUnPuKRtA0KKydwYXJlbnRoZXNpemVkIGRpZ2l0IHNldmVuJSc+4pG6DQorJ3BhcmVudGhlc2l6ZWQgZGlnaXQgc2l4JSc+4pG5DQorJ3BhcmVudGhlc2l6ZWQgZGlnaXQgdGhyZWUlJz7ikbYNCisncGFyZW50aGVzaXplZCBkaWdpdCB0d28lJz7ikbUNCisncGFyZW50aGVzaXplZCBsYXRpbiBzbWFsbCBsZXR0ZXIgYSUnPuKSnA0KKydwYXJlbnRoZXNpemVkIGxhdGluIHNtYWxsIGxldHRlciBiJSc+4pKdDQorJ3BhcmVudGhlc2l6ZWQgbGF0aW4gc21hbGwgbGV0dGVyIGMlJz7ikp4NCisncGFyZW50aGVzaXplZCBsYXRpbiBzbWFsbCBsZXR0ZXIgZCUnPuKSnw0KKydwYXJlbnRoZXNpemVkIGxhdGluIHNtYWxsIGxldHRlciBlJSc+4pKgDQorJ3BhcmVudGhlc2l6ZWQgbGF0aW4gc21hbGwgbGV0dGVyIGYlJz7ikqENCisncGFyZW50aGVzaXplZCBsYXRpbiBzbWFsbCBsZXR0ZXIgZyUnPuKSog0KKydwYXJlbnRoZXNpemVkIGxhdGluIHNtYWxsIGxldHRlciBoJSc+4pKjDQorJ3BhcmVudGhlc2l6ZWQgbGF0aW4gc21hbGwgbGV0dGVyIGklJz7ikqQNCisncGFyZW50aGVzaXplZCBsYXRpbiBzbWFsbCBsZXR0ZXIgaiUnPuKSpQ0KKydwYXJlbnRoZXNpemVkIGxhdGluIHNtYWxsIGxldHRlciBrJSc+4pKmDQorJ3BhcmVudGhlc2l6ZWQgbGF0aW4gc21hbGwgbGV0dGVyIGwlJz7ikqcNCisncGFyZW50aGVzaXplZCBsYXRpbiBzbWFsbCBsZXR0ZXIgbSUnPuKSqA0KKydwYXJlbnRoZXNpemVkIGxhdGluIHNtYWxsIGxldHRlciBuJSc+4pKpDQorJ3BhcmVudGhlc2l6ZWQgbGF0aW4gc21hbGwgbGV0dGVyIG8lJz7ikqoNCisncGFyZW50aGVzaXplZCBsYXRpbiBzbWFsbCBsZXR0ZXIgcCUnPuKSqw0KKydwYXJlbnRoZXNpemVkIGxhdGluIHNtYWxsIGxldHRlciBxJSc+4pKsDQorJ3BhcmVudGhlc2l6ZWQgbGF0aW4gc21hbGwgbGV0dGVyIHIlJz7ikq0NCisncGFyZW50aGVzaXplZCBsYXRpbiBzbWFsbCBsZXR0ZXIgcyUnPuKSrg0KKydwYXJlbnRoZXNpemVkIGxhdGluIHNtYWxsIGxldHRlciB0JSc+4pKvDQorJ3BhcmVudGhlc2l6ZWQgbGF0aW4gc21hbGwgbGV0dGVyIHUlJz7ikrANCisncGFyZW50aGVzaXplZCBsYXRpbiBzbWFsbCBsZXR0ZXIgdiUnPuKSsQ0KKydwYXJlbnRoZXNpemVkIGxhdGluIHNtYWxsIGxldHRlciB3JSc+4pKyDQorJ3BhcmVudGhlc2l6ZWQgbGF0aW4gc21hbGwgbGV0dGVyIHglJz7ikrMNCisncGFyZW50aGVzaXplZCBsYXRpbiBzbWFsbCBsZXR0ZXIgeSUnPuKStA0KKydwYXJlbnRoZXNpemVkIGxhdGluIHNtYWxsIGxldHRlciB6JSc+4pK1DQorJ3BhcmVudGhlc2l6ZWQgbnVtYmVyIGVpZ2h0ZWVuJSc+4pKFDQorJ3BhcmVudGhlc2l6ZWQgbnVtYmVyIGVsZXZlbiUnPuKRvg0KKydwYXJlbnRoZXNpemVkIG51bWJlciBmaWZ0ZWVuJSc+4pKCDQorJ3BhcmVudGhlc2l6ZWQgbnVtYmVyIGZvdXJ0ZWVuJSc+4pKBDQorJ3BhcmVudGhlc2l6ZWQgbnVtYmVyIG5pbmV0ZWVuJSc+4pKGDQorJ3BhcmVudGhlc2l6ZWQgbnVtYmVyIHNldmVudGVlbiUnPuKShA0KKydwYXJlbnRoZXNpemVkIG51bWJlciBzaXh0ZWVuJSc+4pKDDQorJ3BhcmVudGhlc2l6ZWQgbnVtYmVyIHRlbiUnPuKRvQ0KKydwYXJlbnRoZXNpemVkIG51bWJlciB0aGlydGVlbiUnPuKSgA0KKydwYXJlbnRoZXNpemVkIG51bWJlciB0d2VsdmUlJz7ikb8NCisncGFyZW50aGVzaXplZCBudW1iZXIgdHdlbnR5JSc+4pKHDQorJ3BhcnRpYWwgZGlmZmVyZW50aWFsJSc+4oiCDQorJ3BlYWNlIHN5bWJvbCUnPuKYrg0KKydwZW5jaWwlJz7inI8NCisncGVyIG1pbGxlIHNpZ24lJz7igLANCisncGVyIHRlbiB0aG91c2FuZCBzaWduJSc+4oCxDQorJ3BlcnNwZWN0aXZlJSc+4oyGDQorJ3Blc2V0YSBzaWduJSc+4oKnDQorJ3BpbndoZWVsIHN0YXIlJz7inK8NCisncGlzY2VzJSc+4pmTDQorJ3BpdGNoZm9yayUnPuKLlA0KKydwbGFuY2sgY29uc3RhbnQgb3ZlciAyIHBpJSc+4oSPDQorJ3BsYW5jayBjb25zdGFudCUnPuKEjg0KKydwbHVzLW9yLW1pbnVzIHNpZ24lJz7CsQ0KKydwbHV0byUnPuKZhw0KKydwb3AgZGlyZWN0aW9uYWwgZW1iZWRkaW5nJSc+4oCsDQorJ3Bvc2l0aW9uIGluZGljYXRvciUnPuKMlg0KKydwb3N0YWwgbWFyayBmYWNlJSc+44CgDQorJ3Bvc3RhbCBtYXJrJSc+44CSDQorJ3BvdW5kIHNpZ24lJz7Cow0KKydwcmVjZWRlcyBidXQgbm90IGVxdWl2YWxlbnQgdG8lJz7ii6gNCisncHJlY2VkZXMgb3IgZXF1YWwgdG8lJz7iibwNCisncHJlY2VkZXMgb3IgZXF1aXZhbGVudCB0byUnPuKJvg0KKydwcmVjZWRlcyUnPuKJug0KKydwcmVzY3JpcHRpb24gdGFrZSUnPuKEng0KKydwcmltZSUnPuKAsg0KKydwcm9qZWN0aXZlJSc+4oyFDQorJ3Byb3BvcnRpb24lJz7iiLcNCisncHJvcG9ydGlvbmFsIHRvJSc+4oidDQorJ3B1bmN0dWF0aW9uIHNwYWNlJSc+4oCIDQorJ3F1YXJ0ZXIgbm90ZSUnPuKZqQ0KKydxdWVzdGlvbmVkIGVxdWFsIHRvJSc+4omfDQorJ3F1b3RhdGlvbiBkYXNoJSc+4oCVDQorJ3JhZGlvYWN0aXZlJSc+4piiDQorJ3JhdGlvJSc+4oi2DQorJ3JlZmVyZW5jZSBtYXJrJSc+4oC7DQorJ3JlZ2lzdGVyZWQgdHJhZGUgbWFyayBzaWduJSc+wq4NCisncmVzcG9uc2UlJz7ihJ8NCisncmV2ZXJzZWQgZG91YmxlIHByaW1lIHF1b3RhdGlvbiBtYXJrJSc+44CdDQorJ3JldmVyc2VkIGRvdWJsZSBwcmltZSUnPuKAtg0KKydyZXZlcnNlZCBub3Qgc2lnbiUnPuKMkA0KKydyZXZlcnNlZCBwcmltZSUnPuKAtQ0KKydyZXZlcnNlZCB0aWxkZSBlcXVhbHMlJz7ii40NCisncmV2ZXJzZWQgdGlsZGUlJz7iiL0NCisncmV2ZXJzZWQgdHJpcGxlIHByaW1lJSc+4oC3DQorJ3JpZ2h0IGFuZ2xlIHdpdGggYXJjJSc+4oq+DQorJ3JpZ2h0IGFuZ2xlJSc+4oifDQorJ3JpZ2h0IGFycm93IGZyb20gYmFyJSc+4oamDQorJ3JpZ2h0IGFycm93IG92ZXIgbGVmdCBhcnJvdyUnPuKHhA0KKydyaWdodCBhcnJvdyB0byBiYXIlJz7ih6UNCisncmlnaHQgYXJyb3cgd2l0aCBjb3JuZXIgZG93biUnPuKGtA0KKydyaWdodCBhcnJvdyB3aXRoIGhvb2slJz7ihqoNCisncmlnaHQgYXJyb3cgd2l0aCBsb29wJSc+4oasDQorJ3JpZ2h0IGFycm93IHdpdGggc3Ryb2tlJSc+4oabDQorJ3JpZ2h0IGFycm93IHdpdGggdGFpbCUnPuKGow0KKydyaWdodCBhcnJvdyUnPuKGkg0KKydyaWdodCBjZWlsaW5nJSc+4oyJDQorJ3JpZ2h0IGRhc2hlZCBhcnJvdyUnPuKHog0KKydyaWdodCBkb3VibGUgYXJyb3cgd2l0aCBzdHJva2UlJz7ih48NCisncmlnaHQgZG91YmxlIGFycm93JSc+4oeSDQorJ3JpZ2h0IGZsb29yJSc+4oyLDQorJ3JpZ2h0IGhhbGYgYmxhY2sgY2lyY2xlJSc+4peXDQorJ3JpZ2h0IGhhbGYgYmxvY2slJz7ilpANCisncmlnaHQgaGFycG9vbiBvdmVyIGxlZnQgaGFycG9vbiUnPuKHjA0KKydyaWdodCBoYXJwb29uIHdpdGggYmFyYiBkb3duJSc+4oeBDQorJ3JpZ2h0IGhhcnBvb24gd2l0aCBiYXJiIHVwJSc+4oeADQorJ3JpZ2h0IG5vcm1hbCBmYWN0b3Igc2VtaWRpcmVjdCBwcm9kdWN0JSc+4ouKDQorJ3JpZ2h0IG9uZSBlaWdodGggYmxvY2slJz7ilpUNCisncmlnaHQgcGFpcmVkIGFycm93cyUnPuKHiQ0KKydyaWdodCBwb2ludGluZyBndWlsbGVtZXQlJz7Cuw0KKydyaWdodCBwb2ludGluZyBzaW5nbGUgZ3VpbGxlbWV0JSc+4oC6DQorJ3JpZ2h0IHNlbWlkaXJlY3QgcHJvZHVjdCUnPuKLjA0KKydyaWdodCBzcXVpZ2dsZSBhcnJvdyUnPuKHnQ0KKydyaWdodCB0YWNrJSc+4oqiDQorJ3JpZ2h0IHRyaWFuZ2xlJSc+4oq/DQorJ3JpZ2h0IHRyaXBsZSBhcnJvdyUnPuKHmw0KKydyaWdodCB0d28gaGVhZGVkIGFycm93JSc+4oagDQorJ3JpZ2h0IHdhdmUgYXJyb3clJz7ihp0NCisncmlnaHQtc2hhZGVkIHdoaXRlIHJpZ2h0IGFycm93JSc+4p6pDQorJ3JpZ2h0LXRvLWxlZnQgZW1iZWRkaW5nJSc+4oCrDQorJ3JpZ2h0LXRvLWxlZnQgbWFyayUnPuKAjw0KKydyaWdodC10by1sZWZ0IG92ZXJyaWRlJSc+4oCuDQorJ3JpbmcgZXF1YWwgdG8lJz7iiZcNCisncmluZyBpbiBlcXVhbCB0byUnPuKJlg0KKydyaW5nIG9wZXJhdG9yJSc+4oiYDQorJ3JvbWFuIG51bWVyYWwgZWlnaHQlJz7ihacNCisncm9tYW4gbnVtZXJhbCBlbGV2ZW4lJz7ihaoNCisncm9tYW4gbnVtZXJhbCBmaWZ0eSUnPuKFrA0KKydyb21hbiBudW1lcmFsIGZpdmUgaHVuZHJlZCUnPuKFrg0KKydyb21hbiBudW1lcmFsIGZpdmUgdGhvdXNhbmQlJz7ihoENCisncm9tYW4gbnVtZXJhbCBmaXZlJSc+4oWkDQorJ3JvbWFuIG51bWVyYWwgZm91ciUnPuKFow0KKydyb21hbiBudW1lcmFsIG5pbmUlJz7ihagNCisncm9tYW4gbnVtZXJhbCBvbmUgaHVuZHJlZCUnPuKFrQ0KKydyb21hbiBudW1lcmFsIG9uZSB0aG91c2FuZCBjIGQlJz7ihoANCisncm9tYW4gbnVtZXJhbCBvbmUgdGhvdXNhbmQlJz7iha8NCisncm9tYW4gbnVtZXJhbCBvbmUlJz7ihaANCisncm9tYW4gbnVtZXJhbCBzZXZlbiUnPuKFpg0KKydyb21hbiBudW1lcmFsIHNpeCUnPuKFpQ0KKydyb21hbiBudW1lcmFsIHRlbiB0aG91c2FuZCUnPuKGgg0KKydyb21hbiBudW1lcmFsIHRlbiUnPuKFqQ0KKydyb21hbiBudW1lcmFsIHRocmVlJSc+4oWiDQorJ3JvbWFuIG51bWVyYWwgdHdlbHZlJSc+4oWrDQorJ3JvbWFuIG51bWVyYWwgdHdvJSc+4oWhDQorJ3JvdGF0ZWQgZmxvcmFsIGhlYXJ0IGJ1bGxldCUnPuKdpw0KKydyb3RhdGVkIGhlYXZ5IGJsYWNrIGhlYXJ0IGJ1bGxldCUnPuKdpQ0KKydydXBlZSBzaWduJSc+4oKoDQorJ3NhZ2l0dGFyaXVzJSc+4pmQDQorJ3NhbHRpcmUlJz7imJMNCisnc2F0dXJuJSc+4pmEDQorJ3Njb3JwaXVzJSc+4pmPDQorJ3NjcmlwdCBiJSc+4oSsDQorJ3NjcmlwdCBlJSc+4oSwDQorJ3NjcmlwdCBmJSc+4oSxDQorJ3NjcmlwdCBoJSc+4oSLDQorJ3NjcmlwdCBpJSc+4oSQDQorJ3NjcmlwdCBsJSc+4oSSDQorJ3NjcmlwdCBtJSc+4oSzDQorJ3NjcmlwdCBwJSc+4oSYDQorJ3NjcmlwdCByJSc+4oSbDQorJ3NjcmlwdCBzbWFsbCBlJSc+4oSvDQorJ3NjcmlwdCBzbWFsbCBnJSc+4oSKDQorJ3NjcmlwdCBzbWFsbCBsJSc+4oSTDQorJ3NjcmlwdCBzbWFsbCBvJSc+4oS0DQorJ3NjcnVwbGUlJz7ihIgNCisnc2Vjb25kIHRyYW5zZmluaXRlIGNhcmRpbmFsJSc+4oS2DQorJ3NlY3Rpb24gc2lnbiUnPsKnDQorJ3NlY3RvciUnPuKMlA0KKydzZWdtZW50JSc+4oyTDQorJ3NlcnZpY2UgbWFyayUnPuKEoA0KKydzZXQgbWludXMlJz7iiJYNCisnc2hhZG93ZWQgd2hpdGUgY2lyY2xlJSc+4p2NDQorJ3NoYWRvd2VkIHdoaXRlIGxhdGluIGNyb3NzJSc+4pyeDQorJ3NoYWRvd2VkIHdoaXRlIHN0YXIlJz7inLANCisnc2hhcnAlJz7ima8NCisnc2luZSB3YXZlJSc+4oi/DQorJ3NpbmdsZSBjb21tYSBxdW90YXRpb24gbWFyayUnPuKAmQ0KKydzaW5nbGUgcmV2ZXJzZWQgY29tbWEgcXVvdGF0aW9uIG1hcmslJz7igJsNCisnc2luZ2xlIHR1cm5lZCBjb21tYSBxdW90YXRpb24gbWFyayUnPuKAmA0KKydzaXggcGV0YWxsZWQgYmxhY2sgYW5kIHdoaXRlIGZsb3JldHRlJSc+4py+DQorJ3NpeCBwb2ludGVkIGJsYWNrIHN0YXIlJz7inLYNCisnc2l4LXBlci1lbSBzcGFjZSUnPuKAhg0KKydzaXh0ZWVuIHBvaW50ZWQgYXN0ZXJpc2slJz7inLoNCisnc2t1bGwgYW5kIGNyb3NzYm9uZXMlJz7imKANCisnc21hbGwgY29udGFpbnMgYXMgbWVtYmVyJSc+4oiNDQorJ3NtYWxsIHJvbWFuIG51bWVyYWwgZWlnaHQlJz7ihbcNCisnc21hbGwgcm9tYW4gbnVtZXJhbCBlbGV2ZW4lJz7ihboNCisnc21hbGwgcm9tYW4gbnVtZXJhbCBmaWZ0eSUnPuKFvA0KKydzbWFsbCByb21hbiBudW1lcmFsIGZpdmUgaHVuZHJlZCUnPuKFvg0KKydzbWFsbCByb21hbiBudW1lcmFsIGZpdmUlJz7ihbQNCisnc21hbGwgcm9tYW4gbnVtZXJhbCBmb3VyJSc+4oWzDQorJ3NtYWxsIHJvbWFuIG51bWVyYWwgbmluZSUnPuKFuA0KKydzbWFsbCByb21hbiBudW1lcmFsIG9uZSBodW5kcmVkJSc+4oW9DQorJ3NtYWxsIHJvbWFuIG51bWVyYWwgb25lIHRob3VzYW5kJSc+4oW/DQorJ3NtYWxsIHJvbWFuIG51bWVyYWwgb25lJSc+4oWwDQorJ3NtYWxsIHJvbWFuIG51bWVyYWwgc2V2ZW4lJz7ihbYNCisnc21hbGwgcm9tYW4gbnVtZXJhbCBzaXglJz7ihbUNCisnc21hbGwgcm9tYW4gbnVtZXJhbCB0ZW4lJz7ihbkNCisnc21hbGwgcm9tYW4gbnVtZXJhbCB0aHJlZSUnPuKFsg0KKydzbWFsbCByb21hbiBudW1lcmFsIHR3ZWx2ZSUnPuKFuw0KKydzbWFsbCByb21hbiBudW1lcmFsIHR3byUnPuKFsQ0KKydzbWlsZSUnPuKMow0KKydzbm93Zmxha2UlJz7inYQNCisnc25vd21hbiUnPuKYgw0KKydzb2Z0IGh5cGhlbiUnPsKtDQorJ3NvdW5kIHJlY29yZGluZyBjb3B5cmlnaHQlJz7ihJcNCisnc3BhY2luZyBhY3V0ZSUnPsK0DQorJ3NwYWNpbmcgYnJldmUlJz7LmA0KKydzcGFjaW5nIGNlZGlsbGElJz7CuA0KKydzcGFjaW5nIGRpYWVyZXNpcyUnPsKoDQorJ3NwYWNpbmcgZG90IGFib3ZlJSc+y5kNCisnc3BhY2luZyBkb3VibGUgYWN1dGUlJz7LnQ0KKydzcGFjaW5nIGRvdWJsZSB1bmRlcnNjb3JlJSc+4oCXDQorJ3NwYWNpbmcgbWFjcm9uJSc+wq8NCisnc3BhY2luZyBvZ29uZWslJz7Lmw0KKydzcGFjaW5nIG92ZXJzY29yZSUnPuKAvg0KKydzcGFjaW5nIHJpbmcgYWJvdmUlJz7Lmg0KKydzcGFjaW5nIHRpbGRlJSc+y5wNCisnc3BhcmtsZSUnPuKdhw0KKydzcGhlcmljYWwgYW5nbGUlJz7iiKINCisnc3F1YXJlIGNhcCUnPuKKkw0KKydzcXVhcmUgY3VwJSc+4oqUDQorJ3NxdWFyZSBpbWFnZSBvZiBvciBlcXVhbCB0byUnPuKKkQ0KKydzcXVhcmUgaW1hZ2Ugb2Ygb3Igbm90IGVxdWFsIHRvJSc+4oukDQorJ3NxdWFyZSBpbWFnZSBvZiUnPuKKjw0KKydzcXVhcmUgbG96ZW5nZSUnPuKMkQ0KKydzcXVhcmUgb3JpZ2luYWwgb2Ygb3IgZXF1YWwgdG8lJz7iipINCisnc3F1YXJlIG9yaWdpbmFsIG9mIG9yIG5vdCBlcXVhbCB0byUnPuKLpQ0KKydzcXVhcmUgb3JpZ2luYWwgb2YlJz7iipANCisnc3F1YXJlIHJvb3QlJz7iiJoNCisnc3F1YXJlIHdpdGggZGlhZ29uYWwgY3Jvc3NoYXRjaCBmaWxsJSc+4papDQorJ3NxdWFyZSB3aXRoIGhvcml6b250YWwgZmlsbCUnPuKWpA0KKydzcXVhcmUgd2l0aCBsZWZ0IGhhbGYgYmxhY2slJz7il6cNCisnc3F1YXJlIHdpdGggbG93ZXIgcmlnaHQgZGlhZ29uYWwgaGFsZiBibGFjayUnPuKXqg0KKydzcXVhcmUgd2l0aCBvcnRob2dvbmFsIGNyb3NzaGF0Y2ggZmlsbCUnPuKWpg0KKydzcXVhcmUgd2l0aCByaWdodCBoYWxmIGJsYWNrJSc+4peoDQorJ3NxdWFyZSB3aXRoIHVwcGVyIGxlZnQgZGlhZ29uYWwgaGFsZiBibGFjayUnPuKXqQ0KKydzcXVhcmUgd2l0aCB1cHBlciBsZWZ0IHRvIGxvd2VyIHJpZ2h0IGZpbGwlJz7ilqcNCisnc3F1YXJlIHdpdGggdXBwZXIgcmlnaHQgdG8gbG93ZXIgbGVmdCBmaWxsJSc+4paoDQorJ3NxdWFyZSB3aXRoIHZlcnRpY2FsIGZpbGwlJz7ilqUNCisnc3F1YXJlZCBkb3Qgb3BlcmF0b3IlJz7iiqENCisnc3F1YXJlZCBtaW51cyUnPuKKnw0KKydzcXVhcmVkIHBsdXMlJz7iip4NCisnc3F1YXJlZCB0aW1lcyUnPuKKoA0KKydzcXVhdCBibGFjayByaWdodCBhcnJvdyUnPuKepw0KKydzdGFyIGFuZCBjcmVzY2VudCUnPuKYqg0KKydzdGFyIGVxdWFscyUnPuKJmw0KKydzdGFyIG9mIGRhdmlkJSc+4pyhDQorJ3N0YXIgb3BlcmF0b3IlJz7ii4YNCisnc3RvcCBkaXJlY3Rpb25hbCBvdmVycmlkZSUnPuKArw0KKydzdHJpY3RseSBlcXVpdmFsZW50IHRvJSc+4omjDQorJ3N1YnNjcmlwdCBjbG9zaW5nIHBhcmVudGhlc2lzJSc+4oKODQorJ3N1YnNjcmlwdCBkaWdpdCBlaWdodCUnPuKCiA0KKydzdWJzY3JpcHQgZGlnaXQgZml2ZSUnPuKChQ0KKydzdWJzY3JpcHQgZGlnaXQgZm91ciUnPuKChA0KKydzdWJzY3JpcHQgZGlnaXQgbmluZSUnPuKCiQ0KKydzdWJzY3JpcHQgZGlnaXQgb25lJSc+4oKBDQorJ3N1YnNjcmlwdCBkaWdpdCBzZXZlbiUnPuKChw0KKydzdWJzY3JpcHQgZGlnaXQgc2l4JSc+4oKGDQorJ3N1YnNjcmlwdCBkaWdpdCB0aHJlZSUnPuKCgw0KKydzdWJzY3JpcHQgZGlnaXQgdHdvJSc+4oKCDQorJ3N1YnNjcmlwdCBkaWdpdCB6ZXJvJSc+4oKADQorJ3N1YnNjcmlwdCBlcXVhbHMgc2lnbiUnPuKCjA0KKydzdWJzY3JpcHQgaHlwaGVuLW1pbnVzJSc+4oKLDQorJ3N1YnNjcmlwdCBvcGVuaW5nIHBhcmVudGhlc2lzJSc+4oKNDQorJ3N1YnNjcmlwdCBwbHVzIHNpZ24lJz7igooNCisnc3Vic2V0IG9mIG9yIGVxdWFsIHRvJSc+4oqGDQorJ3N1YnNldCBvZiBvciBub3QgZXF1YWwgdG8lJz7iiooNCisnc3Vic2V0IG9mJSc+4oqCDQorJ3N1Y2NlZWRzIGJ1dCBub3QgZXF1aXZhbGVudCB0byUnPuKLqQ0KKydzdWNjZWVkcyBvciBlcXVhbCB0byUnPuKJvQ0KKydzdWNjZWVkcyBvciBlcXVpdmFsZW50IHRvJSc+4om/DQorJ3N1Y2NlZWRzJSc+4om7DQorJ3N1cGVyc2NyaXB0IGNsb3NpbmcgcGFyZW50aGVzaXMlJz7igb4NCisnc3VwZXJzY3JpcHQgZGlnaXQgZWlnaHQlJz7igbgNCisnc3VwZXJzY3JpcHQgZGlnaXQgZml2ZSUnPuKBtQ0KKydzdXBlcnNjcmlwdCBkaWdpdCBmb3VyJSc+4oG0DQorJ3N1cGVyc2NyaXB0IGRpZ2l0IG5pbmUlJz7igbkNCisnc3VwZXJzY3JpcHQgZGlnaXQgb25lJSc+wrkNCisnc3VwZXJzY3JpcHQgZGlnaXQgc2V2ZW4lJz7igbcNCisnc3VwZXJzY3JpcHQgZGlnaXQgc2l4JSc+4oG2DQorJ3N1cGVyc2NyaXB0IGRpZ2l0IHRocmVlJSc+wrMNCisnc3VwZXJzY3JpcHQgZGlnaXQgdHdvJSc+wrINCisnc3VwZXJzY3JpcHQgZGlnaXQgemVybyUnPuKBsA0KKydzdXBlcnNjcmlwdCBlcXVhbHMgc2lnbiUnPuKBvA0KKydzdXBlcnNjcmlwdCBoeXBoZW4tbWludXMlJz7igbsNCisnc3VwZXJzY3JpcHQgbGF0aW4gc21hbGwgbGV0dGVyIG4lJz7igb8NCisnc3VwZXJzY3JpcHQgb3BlbmluZyBwYXJlbnRoZXNpcyUnPuKBvQ0KKydzdXBlcnNjcmlwdCBwbHVzIHNpZ24lJz7igboNCisnc3VwZXJzZXQgb2Ygb3IgZXF1YWwgdG8lJz7iiocNCisnc3VwZXJzZXQgb2Ygb3Igbm90IGVxdWFsIHRvJSc+4oqLDQorJ3N1cGVyc2V0IG9mJSc+4oqDDQorJ3N1cmZhY2UgaW50ZWdyYWwlJz7iiK8NCisnc3ltYm9sIG9mIGlyYW4lJz7imKsNCisndCBlIGwgc3ltYm9sJSc+4oShDQorJ3RhcGUgZHJpdmUlJz7inIcNCisndGF1cnVzJSc+4pmJDQorJ3RlYXJkcm9wLWJhcmJlZCByaWdodCBhcnJvdyUnPuKeug0KKyd0ZWFyZHJvcC1zcG9rZWQgYXN0ZXJpc2slJz7inLsNCisndGVsZXBob25lIGxvY2F0aW9uIHNpZ24lJz7inIYNCisndGVsZXBob25lIHJlY29yZGVyJSc+4oyVDQorJ3RoZXJlIGRvZXMgbm90IGV4aXN0JSc+4oiEDQorJ3RoZXJlIGV4aXN0cyUnPuKIgw0KKyd0aGVyZWZvcmUlJz7iiLQNCisndGhpbiBzcGFjZSUnPuKAiQ0KKyd0aGlyZCB0cmFuc2Zpbml0ZSBjYXJkaW5hbCUnPuKEtw0KKyd0aHJlZS1kIGJvdHRvbS1saWdodGVkIHJpZ2h0IGFycm93aGVhZCUnPuKeow0KKyd0aHJlZS1kIHRvcC1saWdodGVkIHJpZ2h0IGFycm93aGVhZCUnPuKeog0KKyd0aHJlZS1wZXItZW0gc3BhY2UlJz7igIQNCisndGh1bmRlcnN0b3JtJSc+4piIDQorJ3RpZ2h0IHRyaWZvbGlhdGUgc25vd2ZsYWtlJSc+4p2FDQorJ3RpbGRlIG9wZXJhdG9yJSc+4oi8DQorJ3RvcCBoYWxmIGludGVncmFsJSc+4oygDQorJ3RvcCBsZWZ0IGNvcm5lciUnPuKMnA0KKyd0b3AgbGVmdCBjcm9wJSc+4oyPDQorJ3RvcCByaWdodCBjb3JuZXIlJz7ijJ0NCisndG9wIHJpZ2h0IGNyb3AlJz7ijI4NCisndHJhZGVtYXJrJSc+4oSiDQorJ3RyaWFuZ2xlLWhlYWRlZCByaWdodCBhcnJvdyUnPuKenQ0KKyd0cmlhbmd1bGFyIGJ1bGxldCUnPuKAow0KKyd0cmlncmFtIGZvciBlYXJ0aCUnPuKYtw0KKyd0cmlncmFtIGZvciBmaXJlJSc+4piyDQorJ3RyaWdyYW0gZm9yIGhlYXZlbiUnPuKYsA0KKyd0cmlncmFtIGZvciBsYWtlJSc+4pixDQorJ3RyaWdyYW0gZm9yIG1vdW50YWluJSc+4pi2DQorJ3RyaWdyYW0gZm9yIHRodW5kZXIlJz7imLMNCisndHJpZ3JhbSBmb3Igd2F0ZXIlJz7imLUNCisndHJpZ3JhbSBmb3Igd2luZCUnPuKYtA0KKyd0cmlwbGUgaW50ZWdyYWwlJz7iiK0NCisndHJpcGxlIHByaW1lJSc+4oC0DQorJ3RyaXBsZSB0aWxkZSUnPuKJiw0KKyd0cmlwbGUgdmVydGljYWwgYmFyIHJpZ2h0IHR1cm5zdGlsZSUnPuKKqg0KKyd0cnVlJSc+4oqoDQorJ3R1cm5lZCBmJSc+4oSyDQorJ3R1cm5lZCBncmVlayBzbWFsbCBsZXR0ZXIgaW90YSUnPuKEqQ0KKyd0dXJuZWQgbm90IHNpZ24lJz7ijJkNCisndHdlbHZlIHBvaW50ZWQgYmxhY2sgc3RhciUnPuKcuQ0KKyd0d28gZG90IGxlYWRlciUnPuKApQ0KKyd1bWJyZWxsYSUnPuKYgg0KKyd1bmlvbiUnPuKIqg0KKyd1cCBhcnJvdyBmcm9tIGJhciUnPuKGpQ0KKyd1cCBhcnJvdyBsZWZ0IG9mIGRvd24gYXJyb3clJz7ih4UNCisndXAgYXJyb3cgd2l0aCBkb3VibGUgc3Ryb2tlJSc+4oeeDQorJ3VwIGFycm93IHdpdGggdGlwIGxlZnQlJz7ihrANCisndXAgYXJyb3cgd2l0aCB0aXAgcmlnaHQlJz7ihrENCisndXAgYXJyb3clJz7ihpENCisndXAgYXJyb3doZWFkJSc+4oyDDQorJ3VwIGRhc2hlZCBhcnJvdyUnPuKHoQ0KKyd1cCBkb3VibGUgYXJyb3clJz7ih5ENCisndXAgZG93biBhcnJvdyB3aXRoIGJhc2UlJz7ihqgNCisndXAgZG93biBhcnJvdyUnPuKGlQ0KKyd1cCBkb3duIGRvdWJsZSBhcnJvdyUnPuKHlQ0KKyd1cCBoYXJwb29uIHdpdGggYmFyYiBsZWZ0JSc+4oa/DQorJ3VwIGhhcnBvb24gd2l0aCBiYXJiIHJpZ2h0JSc+4oa+DQorJ3VwIHBhaXJlZCBhcnJvd3MlJz7ih4gNCisndXAgcG9pbnRpbmcgdHJpYW5nbGUgd2l0aCBsZWZ0IGhhbGYgYmxhY2slJz7il60NCisndXAgcG9pbnRpbmcgdHJpYW5nbGUgd2l0aCByaWdodCBoYWxmIGJsYWNrJSc+4peuDQorJ3VwIHJpZ2h0IGRpYWdvbmFsIGVsbGlwc2lzJSc+4ouwDQorJ3VwIHRhY2slJz7iiqUNCisndXAgdHdvIGhlYWRlZCBhcnJvdyUnPuKGnw0KKyd1cHBlciBibGFkZSBzY2lzc29ycyUnPuKcgQ0KKyd1cHBlciBoYWxmIGJsb2NrJSc+4paADQorJ3VwcGVyIGhhbGYgY2lyY2xlJSc+4pegDQorJ3VwcGVyIGhhbGYgaW52ZXJzZSB3aGl0ZSBjaXJjbGUlJz7il5oNCisndXBwZXIgbGVmdCBhcnJvdyB0byBsb25nIGJhciUnPuKGuA0KKyd1cHBlciBsZWZ0IGFycm93JSc+4oaWDQorJ3VwcGVyIGxlZnQgZG91YmxlIGFycm93JSc+4oeWDQorJ3VwcGVyIGxlZnQgcXVhZHJhbnQgY2lyY3VsYXIgYXJjJSc+4pecDQorJ3VwcGVyIG9uZSBlaWdodGggYmxvY2slJz7ilpQNCisndXBwZXIgcmlnaHQgYXJyb3clJz7ihpcNCisndXBwZXIgcmlnaHQgZG91YmxlIGFycm93JSc+4oeXDQorJ3VwcGVyIHJpZ2h0IGRyb3Atc2hhZG93ZWQgd2hpdGUgc3F1YXJlJSc+4p2QDQorJ3VwcGVyIHJpZ2h0IHBlbmNpbCUnPuKckA0KKyd1cHBlciByaWdodCBxdWFkcmFudCBjaXJjdWxhciBhcmMlJz7il50NCisndXBwZXIgcmlnaHQgc2hhZG93ZWQgd2hpdGUgc3F1YXJlJSc+4p2SDQorJ3VyYW51cyUnPuKZhQ0KKyd2ZXJzaWNsZSUnPuKEow0KKyd2ZXJ0aWNhbCBlbGxpcHNpcyUnPuKLrg0KKyd2ZXJ0aWNhbCBrYW5hIHJlcGVhdCBtYXJrIGxvd2VyIGhhbGYlJz7jgLUNCisndmVydGljYWwga2FuYSByZXBlYXQgbWFyayB1cHBlciBoYWxmJSc+44CzDQorJ3ZlcnRpY2FsIGthbmEgcmVwZWF0IG1hcmslJz7jgLENCisndmVydGljYWwga2FuYSByZXBlYXQgd2l0aCB2b2ljZWQgc291bmQgbWFyayB1cHBlciBoYWxmJSc+44C0DQorJ3ZlcnRpY2FsIGthbmEgcmVwZWF0IHdpdGggdm9pY2VkIHNvdW5kIG1hcmslJz7jgLINCisndmVyeSBtdWNoIGdyZWF0ZXIgdGhhbiUnPuKLmQ0KKyd2ZXJ5IG11Y2ggbGVzcyB0aGFuJSc+4ouYDQorJ3ZpY3RvcnkgaGFuZCUnPuKcjA0KKyd2aWV3ZGF0YSBzcXVhcmUlJz7ijJcNCisndmlyZ28lJz7imY0NCisndm9sdW1lIGludGVncmFsJSc+4oiwDQorJ3dhdGNoJSc+4oyaDQorJ3dhdmUgZGFzaCUnPuOAnA0KKyd3YXZ5IGRhc2glJz7jgLANCisnd2F2eSBsaW5lJSc+4oyHDQorJ3dlZGdlLXRhaWxlZCByaWdodCBhcnJvdyUnPuKevA0KKyd3aGVlbCBvZiBkaGFybWElJz7imLgNCisnd2hpdGUgYnVsbGV0JSc+4pemDQorJ3doaXRlIGNoZXNzIGJpc2hvcCUnPuKZlw0KKyd3aGl0ZSBjaGVzcyBraW5nJSc+4pmUDQorJ3doaXRlIGNoZXNzIGtuaWdodCUnPuKZmA0KKyd3aGl0ZSBjaGVzcyBwYXduJSc+4pmZDQorJ3doaXRlIGNoZXNzIHF1ZWVuJSc+4pmVDQorJ3doaXRlIGNoZXNzIHJvb2slJz7imZYNCisnd2hpdGUgY2lyY2xlJSc+4peLDQorJ3doaXRlIGNsdWIgc3VpdCUnPuKZpw0KKyd3aGl0ZSBkaWFtb25kIGNvbnRhaW5pbmcgYmxhY2sgc21hbGwgZGlhbW9uZCUnPuKXiA0KKyd3aGl0ZSBkaWFtb25kIHN1aXQlJz7imaINCisnd2hpdGUgZGlhbW9uZCUnPuKXhw0KKyd3aGl0ZSBkb3duIGFycm93JSc+4oepDQorJ3doaXRlIGRvd24gcG9pbnRpbmcgaW5kZXglJz7imJ8NCisnd2hpdGUgZG93biBwb2ludGluZyBzbWFsbCB0cmlhbmdsZSUnPuKWvw0KKyd3aGl0ZSBkb3duIHBvaW50aW5nIHRyaWFuZ2xlJSc+4pa9DQorJ3doaXRlIGZsb3JldHRlJSc+4p2ADQorJ3doaXRlIGZvdXIgcG9pbnRlZCBzdGFyJSc+4pynDQorJ3doaXRlIGZyb3duaW5nIGZhY2UlJz7imLkNCisnd2hpdGUgaGVhcnQgc3VpdCUnPuKZoQ0KKyd3aGl0ZSBsZWZ0IGFycm93JSc+4oemDQorJ3doaXRlIGxlZnQgcG9pbnRpbmcgaW5kZXglJz7imJwNCisnd2hpdGUgbGVmdCBwb2ludGluZyBwb2ludGVyJSc+4peFDQorJ3doaXRlIGxlZnQgcG9pbnRpbmcgc21hbGwgdHJpYW5nbGUlJz7il4MNCisnd2hpdGUgbGVmdCBwb2ludGluZyB0cmlhbmdsZSUnPuKXgQ0KKyd3aGl0ZSBuaWIlJz7inJENCisnd2hpdGUgcGFyYWxsZWxvZ3JhbSUnPuKWsQ0KKyd3aGl0ZSByZWN0YW5nbGUlJz7ilq0NCisnd2hpdGUgcmlnaHQgYXJyb3clJz7ih6gNCisnd2hpdGUgcmlnaHQgcG9pbnRpbmcgaW5kZXglJz7imJ4NCisnd2hpdGUgcmlnaHQgcG9pbnRpbmcgcG9pbnRlciUnPuKWuw0KKyd3aGl0ZSByaWdodCBwb2ludGluZyBzbWFsbCB0cmlhbmdsZSUnPuKWuQ0KKyd3aGl0ZSByaWdodCBwb2ludGluZyB0cmlhbmdsZSUnPuKWtw0KKyd3aGl0ZSBzY2lzc29ycyUnPuKchA0KKyd3aGl0ZSBzbWFsbCBzcXVhcmUlJz7ilqsNCisnd2hpdGUgc21pbGluZyBmYWNlJSc+4pi6DQorJ3doaXRlIHNwYWRlIHN1aXQlJz7imaQNCisnd2hpdGUgc3F1YXJlIGNvbnRhaW5pbmcgYmxhY2sgc21hbGwgc3F1YXJlJSc+4pajDQorJ3doaXRlIHNxdWFyZSB3aXRoIHJvdW5kZWQgY29ybmVycyUnPuKWog0KKyd3aGl0ZSBzcXVhcmUgd2l0aCB2ZXJ0aWNhbCBiaXNlY3RpbmcgbGluZSUnPuKXqw0KKyd3aGl0ZSBzcXVhcmUlJz7ilqENCisnd2hpdGUgc3RhciUnPuKYhg0KKyd3aGl0ZSBzdW4gd2l0aCByYXlzJSc+4pi8DQorJ3doaXRlIHRlbGVwaG9uZSUnPuKYjw0KKyd3aGl0ZSB1cCBhcnJvdyBmcm9tIGJhciUnPuKHqg0KKyd3aGl0ZSB1cCBhcnJvdyUnPuKHpw0KKyd3aGl0ZSB1cCBwb2ludGluZyBpbmRleCUnPuKYnQ0KKyd3aGl0ZSB1cCBwb2ludGluZyBzbWFsbCB0cmlhbmdsZSUnPuKWtQ0KKyd3aGl0ZSB1cCBwb2ludGluZyB0cmlhbmdsZSB3aXRoIGRvdCUnPuKXrA0KKyd3aGl0ZSB1cCBwb2ludGluZyB0cmlhbmdsZSUnPuKWsw0KKyd3aGl0ZSB2ZXJ0aWNhbCByZWN0YW5nbGUlJz7ilq8NCisnd2hpdGUtZmVhdGhlcmVkIHJpZ2h0IGFycm93JSc+4p6zDQorJ3dvbiBzaWduJSc+4oKpDQorJ3dyZWF0aCBwcm9kdWN0JSc+4omADQorJ3dyaXRpbmcgaGFuZCUnPuKcjQ0KKyd4IG1hcmszJSc+4pyXDQorJ3hvciUnPuKKuw0KKyd5ZW4gc2lnbiUnPsKlDQorJ3lpbiB5YW5nJSc+4pivDQorJ3plcm8gd2lkdGggam9pbmVyJSc+4oCNDQorJ3plcm8gd2lkdGggbm9uLWpvaW5lciUnPuKAjA0KKyd6ZXJvIHdpZHRoIHNwYWNlJSc+4oCLDQorDQorIyBlb2YNCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9pbmRleC50eHQgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9UcmFuc2xpdGVyYXRvcl9pbmRleC50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMGU0MGExZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX2luZGV4LnR4dApAQCAtMCwwICsxLDE4MCBAQAorIyBDb3B5cmlnaHQgKGMpIDIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisjIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyMgCisjIFRSQU5TTElURVJBVE9SIElOREVYIEZJTEUuICBUaGlzIGZpbGUgbGlzdHMgdGhlIG5vbi1hbGdvcml0aG1pYworIyBzeXN0ZW0gdHJhbnNsaXRlcmF0b3JzLiAgSXQgYWxsb3dzIGFyYml0cmFyeSBtYXBwaW5ncyBiZXR3ZWVuCisjIHRyYW5zbGl0ZXJhdG9yIElEcyBhbmQgZmlsZSBuYW1lcywgYW5kIGFsc28gYWxsb3dzIHRoZSBzeXN0ZW0gdG8KKyMgZGVmaW5lIGFsaWFzZXMgZm9yIHRyYW5zbGl0ZXJhdG9ycywgc28gdGhhdCAiTGF0aW4tSGFuZ3VsIiwgZm9yCisjIGV4YW1wbGUsIGNhbiBiZSBpbXBsZW1lbnRlZCB0cmFuc3BhcmVudGx5IGFzIHRoZSBjb21wb3VuZAorIyAiTGF0aW4tSmFtbztKYW1vLUhhbmd1bCIuICBJbnRlcm5hbCBJRHMgbWF5IGFsc28gYmUgZGVmaW5lZDsgdGhlc2UKKyMgYXJlIGludmlzaWJsZSB0byB0aGUgdXNlciwgYnV0IGNhbiBiZSBjb21wb3NlZCB0b2dldGhlciBieSB0aGUKKyMgc3lzdGVtIHRvIGNyZWF0ZSB2aXNpYmxlIHRyYW5zbGl0ZXJhdG9ycy4KKyMgCisjIEJsYW5rIGxpbmVzIGFuZCBsaW5lcyBiZWdpbm5pbmcgd2l0aCAnIycgYXJlIGlnbm9yZWQuCisjIAorIyBMaW5lcyBpbiB0aGlzIGZpbGUgaGF2ZSBvbmUgb2YgdGhlIGZvbGxvd2luZyBmb3JtcyAodGV4dCBub3QKKyMgZW5jbG9zZWQgYnkgPD4gaXMgbGl0ZXJhbCk6CisjIAorIyAgIDxpZD46ZmlsZTo8cmVzb3VyY2U+OjxlbmNvZGluZz46PGRpcmVjdGlvbj4KKyMgICA8aWQ+OmludGVybmFsOjxyZXNvdXJjZT46PGVuY29kaW5nPjo8ZGlyZWN0aW9uPgorIyAgIDxpZD46YWxpYXM6PGdldEluc3RhbmNlQXJnPgorIyAgCisjIDxpZD4gaXMgdGhlIElEIG9mIHRoZSBzeXN0ZW0gdHJhbnNsaXRlcmF0b3IgYmVpbmcgZGVmaW5lZC4gIFRoZXNlCisjIGFyZSBwdWJsaWMgSURzIGVudW1lcmF0ZWQgYnkgVHJhbnNsaXRlcmF0b3IuZ2V0QXZhaWxhYmxlSURzKCksCisjIHVubGVzcyB0aGUgc2Vjb25kIGZpZWxkIGlzICJpbnRlcm5hbCIuCisjIAorIyA8cmVzb3VyY2U+IGlzIGEgUmVzb3VyY2VSZWFkZXIgcmVzb3VyY2UgbmFtZS4gIEN1cnJlbnRseSB0aGVzZSByZWZlcgorIyB0byBmaWxlIG5hbWVzIHVuZGVyIGNvbS9pYm0vdGV4dC9yZXNvdXJjZXMuICBUaGlzIHN0cmluZyBpcyBwYXNzZWQKKyMgZGlyZWN0bHkgdG8gUmVzb3VyY2VSZWFkZXIsIHRvZ2V0aGVyIHdpdGggPGVuY29kaW5nPi4KKyMgCisjIDxlbmNvZGluZz4gaXMgdGhlIGNoYXJhY3RlciBlbmNvZGluZyB0byB1c2Ugd2hlbiByZWFkaW5nIDxyZXNvdXJjZT47CisjIHBhc3NlZCBkaXJlY3RseSB0byBSZXNvdXJjZVJlYWRlci4gIEUuZy4sICJVVEY4Ii4KKyMgCisjIDxkaXJlY3Rpb24+IGlzIGVpdGhlciAiRk9SV0FSRCIgb3IgIlJFVkVSU0UiLgorIyAKKyMgPGdldEluc3RhbmNlQXJnPiBpcyBhIHN0cmluZyB0byBiZSBwYXNzZWQgZGlyZWN0bHkgdG8KKyMgVHJhbnNsaXRlcmF0b3IuZ2V0SW5zdGFuY2UoKS4gIFRoZSByZXR1cm5lZCBUcmFuc2xpdGVyYXRvciBvYmplY3QKKyMgdGhlbiBoYXMgaXRzIElEIGNoYW5nZWQgdG8gPGlkPiBhbmQgaXMgcmV0dXJuZWQuCisKKworIyBCaWRpcmVjdGlvbmFsIHJ1bGUgZmlsZXMKKworRnVsbHdpZHRoLUhhbGZ3aWR0aDpmaWxlOlRyYW5zbGl0ZXJhdG9yX0Z1bGx3aWR0aF9IYWxmd2lkdGgudXRmOC50eHQ6VVRGODpGT1JXQVJECitIYWxmd2lkdGgtRnVsbHdpZHRoOmZpbGU6VHJhbnNsaXRlcmF0b3JfRnVsbHdpZHRoX0hhbGZ3aWR0aC51dGY4LnR4dDpVVEY4OlJFVkVSU0UKKworTGF0aW4tQXJhYmljOmZpbGU6VHJhbnNsaXRlcmF0b3JfTGF0aW5fQXJhYmljLnV0ZjgudHh0OlVURjg6Rk9SV0FSRAorQXJhYmljLUxhdGluOmZpbGU6VHJhbnNsaXRlcmF0b3JfTGF0aW5fQXJhYmljLnV0ZjgudHh0OlVURjg6UkVWRVJTRQorCitMYXRpbi1DeXJpbGxpYzpmaWxlOlRyYW5zbGl0ZXJhdG9yX0xhdGluX0N5cmlsbGljLnV0ZjgudHh0OlVURjg6Rk9SV0FSRAorQ3lyaWxsaWMtTGF0aW46ZmlsZTpUcmFuc2xpdGVyYXRvcl9MYXRpbl9DeXJpbGxpYy51dGY4LnR4dDpVVEY4OlJFVkVSU0UKKworTGF0aW4tRGV2YW5hZ2FyaTpmaWxlOlRyYW5zbGl0ZXJhdG9yX0xhdGluX0RldmFuYWdhcmkudXRmOC50eHQ6VVRGODpGT1JXQVJECitEZXZhbmFnYXJpLUxhdGluOmZpbGU6VHJhbnNsaXRlcmF0b3JfTGF0aW5fRGV2YW5hZ2FyaS51dGY4LnR4dDpVVEY4OlJFVkVSU0UKKworTGF0aW4tR3JlZWs6ZmlsZTpUcmFuc2xpdGVyYXRvcl9MYXRpbl9HcmVlay51dGY4LnR4dDpVVEY4OkZPUldBUkQKK0dyZWVrLUxhdGluOmZpbGU6VHJhbnNsaXRlcmF0b3JfTGF0aW5fR3JlZWsudXRmOC50eHQ6VVRGODpSRVZFUlNFCisKK0xhdGluLUhlYnJldzpmaWxlOlRyYW5zbGl0ZXJhdG9yX0xhdGluX0hlYnJldy51dGY4LnR4dDpVVEY4OkZPUldBUkQKK0hlYnJldy1MYXRpbjpmaWxlOlRyYW5zbGl0ZXJhdG9yX0xhdGluX0hlYnJldy51dGY4LnR4dDpVVEY4OlJFVkVSU0UKKworTGF0aW4tSmFtbzpmaWxlOlRyYW5zbGl0ZXJhdG9yX0xhdGluX0phbW8udXRmOC50eHQ6VVRGODpGT1JXQVJECitKYW1vLUxhdGluOmZpbGU6VHJhbnNsaXRlcmF0b3JfTGF0aW5fSmFtby51dGY4LnR4dDpVVEY4OlJFVkVSU0UKKworTGF0aW4tS2FuYTpmaWxlOlRyYW5zbGl0ZXJhdG9yX0xhdGluX0thbmEudXRmOC50eHQ6VVRGODpGT1JXQVJECitLYW5hLUxhdGluOmZpbGU6VHJhbnNsaXRlcmF0b3JfTGF0aW5fS2FuYS51dGY4LnR4dDpVVEY4OlJFVkVSU0UKKworSGlyYWdhbmEtS2F0YWthbmE6ZmlsZTpUcmFuc2xpdGVyYXRvcl9IaXJhZ2FuYV9LYXRha2FuYS51dGY4LnR4dDpVVEY4OkZPUldBUkQKK0thdGFrYW5hLUhpcmFnYW5hOmZpbGU6VHJhbnNsaXRlcmF0b3JfSGlyYWdhbmFfS2F0YWthbmEudXRmOC50eHQ6VVRGODpSRVZFUlNFCisKK1N0cmFpZ2h0UXVvdGVzLUN1cmx5UXVvdGVzOmZpbGU6VHJhbnNsaXRlcmF0b3JfU3RyYWlnaHRRdW90ZXNfQ3VybHlRdW90ZXMudXRmOC50eHQ6VVRGODpGT1JXQVJECitDdXJseVF1b3Rlcy1TdHJhaWdodFF1b3RlczpmaWxlOlRyYW5zbGl0ZXJhdG9yX1N0cmFpZ2h0UXVvdGVzX0N1cmx5UXVvdGVzLnV0ZjgudHh0OlVURjg6UkVWRVJTRQorCisjIE9uZSB3YXkgcnVsZXMgKGZvcndhcmQgb25seSkKKworSGFuLVBpbnlpbjpmaWxlOlRyYW5zbGl0ZXJhdG9yX0hhbl9QaW55aW4udXRmOC50eHQ6VVRGODpGT1JXQVJECitLYW5qaS1FbmdsaXNoOmZpbGU6VHJhbnNsaXRlcmF0b3JfS2FuamlfRW5nbGlzaC51dGY4LnR4dDpVVEY4OkZPUldBUkQKK0thbmppLU9uUm9tYWppOmZpbGU6VHJhbnNsaXRlcmF0b3JfS2FuamlfT25Sb21hamkudXRmOC50eHQ6VVRGODpGT1JXQVJECitLZXlib2FyZEVzY2FwZS1MYXRpbjE6ZmlsZTpUcmFuc2xpdGVyYXRvcl9LZXlib2FyZEVzY2FwZV9MYXRpbjEudXRmOC50eHQ6VVRGODpGT1JXQVJECitVbmljb2RlTmFtZS1Vbmljb2RlQ2hhcjpmaWxlOlRyYW5zbGl0ZXJhdG9yX1VuaWNvZGVOYW1lX1VuaWNvZGVDaGFyLnV0ZjgudHh0OlVURjg6Rk9SV0FSRAorCisjIENvbXBvdW5kIHJ1bGVzCisKK0xhdGluLUhhbmd1bDphbGlhczpMYXRpbi1KYW1vO0phbW8tSGFuZ3VsCitIYW5ndWwtTGF0aW46YWxpYXM6SGFuZ3VsLUphbW87SmFtby1MYXRpbgorCisjIEludGVyLUluZGljIGNvbXBvc2VkIHJ1bGVzCisKK0RldmFuYWdhcmktSW50ZXJJbmRpYzppbnRlcm5hbDpUcmFuc2xpdGVyYXRvcl9EZXZhbmFnYXJpX0ludGVySW5kaWMudXRmOC50eHQ6VVRGODpGT1JXQVJECitCZW5nYWxpLUludGVySW5kaWM6aW50ZXJuYWw6VHJhbnNsaXRlcmF0b3JfQmVuZ2FsaV9JbnRlckluZGljLnV0ZjgudHh0OlVURjg6Rk9SV0FSRAorR3VybXVraGktSW50ZXJJbmRpYzppbnRlcm5hbDpUcmFuc2xpdGVyYXRvcl9HdXJtdWtoaV9JbnRlckluZGljLnV0ZjgudHh0OlVURjg6Rk9SV0FSRAorR3VqYXJhdGktSW50ZXJJbmRpYzppbnRlcm5hbDpUcmFuc2xpdGVyYXRvcl9HdWphcmF0aV9JbnRlckluZGljLnV0ZjgudHh0OlVURjg6Rk9SV0FSRAorT3JpeWEtSW50ZXJJbmRpYzppbnRlcm5hbDpUcmFuc2xpdGVyYXRvcl9Pcml5YV9JbnRlckluZGljLnV0ZjgudHh0OlVURjg6Rk9SV0FSRAorVGFtaWwtSW50ZXJJbmRpYzppbnRlcm5hbDpUcmFuc2xpdGVyYXRvcl9UYW1pbF9JbnRlckluZGljLnV0ZjgudHh0OlVURjg6Rk9SV0FSRAorVGVsdWd1LUludGVySW5kaWM6aW50ZXJuYWw6VHJhbnNsaXRlcmF0b3JfVGVsdWd1X0ludGVySW5kaWMudXRmOC50eHQ6VVRGODpGT1JXQVJECitLYW5uYWRhLUludGVySW5kaWM6aW50ZXJuYWw6VHJhbnNsaXRlcmF0b3JfS2FubmFkYV9JbnRlckluZGljLnV0ZjgudHh0OlVURjg6Rk9SV0FSRAorTWFsYXlhbGFtLUludGVySW5kaWM6aW50ZXJuYWw6VHJhbnNsaXRlcmF0b3JfTWFsYXlhbGFtX0ludGVySW5kaWMudXRmOC50eHQ6VVRGODpGT1JXQVJECisKK0ludGVySW5kaWMtRGV2YW5hZ2FyaTppbnRlcm5hbDpUcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX0RldmFuYWdhcmkudXRmOC50eHQ6VVRGODpGT1JXQVJECitJbnRlckluZGljLUJlbmdhbGk6aW50ZXJuYWw6VHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19CZW5nYWxpLnV0ZjgudHh0OlVURjg6Rk9SV0FSRAorSW50ZXJJbmRpYy1HdXJtdWtoaTppbnRlcm5hbDpUcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX0d1cm11a2hpLnV0ZjgudHh0OlVURjg6Rk9SV0FSRAorSW50ZXJJbmRpYy1HdWphcmF0aTppbnRlcm5hbDpUcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX0d1amFyYXRpLnV0ZjgudHh0OlVURjg6Rk9SV0FSRAorSW50ZXJJbmRpYy1Pcml5YTppbnRlcm5hbDpUcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX09yaXlhLnV0ZjgudHh0OlVURjg6Rk9SV0FSRAorSW50ZXJJbmRpYy1UYW1pbDppbnRlcm5hbDpUcmFuc2xpdGVyYXRvcl9JbnRlckluZGljX1RhbWlsLnV0ZjgudHh0OlVURjg6Rk9SV0FSRAorSW50ZXJJbmRpYy1UZWx1Z3U6aW50ZXJuYWw6VHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19UZWx1Z3UudXRmOC50eHQ6VVRGODpGT1JXQVJECitJbnRlckluZGljLUthbm5hZGE6aW50ZXJuYWw6VHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19LYW5uYWRhLnV0ZjgudHh0OlVURjg6Rk9SV0FSRAorSW50ZXJJbmRpYy1NYWxheWFsYW06aW50ZXJuYWw6VHJhbnNsaXRlcmF0b3JfSW50ZXJJbmRpY19NYWxheWFsYW0udXRmOC50eHQ6VVRGODpGT1JXQVJECisKK0RldmFuYWdhcmktQmVuZ2FsaTphbGlhczpEZXZhbmFnYXJpLUludGVySW5kaWM7SW50ZXJJbmRpYy1CZW5nYWxpCitEZXZhbmFnYXJpLUd1cm11a2hpOmFsaWFzOkRldmFuYWdhcmktSW50ZXJJbmRpYztJbnRlckluZGljLUd1cm11a2hpCitEZXZhbmFnYXJpLUd1amFyYXRpOmFsaWFzOkRldmFuYWdhcmktSW50ZXJJbmRpYztJbnRlckluZGljLUd1amFyYXRpCitEZXZhbmFnYXJpLU9yaXlhOmFsaWFzOkRldmFuYWdhcmktSW50ZXJJbmRpYztJbnRlckluZGljLU9yaXlhCitEZXZhbmFnYXJpLVRhbWlsOmFsaWFzOkRldmFuYWdhcmktSW50ZXJJbmRpYztJbnRlckluZGljLVRhbWlsCitEZXZhbmFnYXJpLVRlbHVndTphbGlhczpEZXZhbmFnYXJpLUludGVySW5kaWM7SW50ZXJJbmRpYy1UZWx1Z3UKK0RldmFuYWdhcmktS2FubmFkYTphbGlhczpEZXZhbmFnYXJpLUludGVySW5kaWM7SW50ZXJJbmRpYy1LYW5uYWRhCitEZXZhbmFnYXJpLU1hbGF5YWxhbTphbGlhczpEZXZhbmFnYXJpLUludGVySW5kaWM7SW50ZXJJbmRpYy1NYWxheWFsYW0KK0JlbmdhbGktRGV2YW5hZ2FyaTphbGlhczpCZW5nYWxpLUludGVySW5kaWM7SW50ZXJJbmRpYy1EZXZhbmFnYXJpCitCZW5nYWxpLUd1cm11a2hpOmFsaWFzOkJlbmdhbGktSW50ZXJJbmRpYztJbnRlckluZGljLUd1cm11a2hpCitCZW5nYWxpLUd1amFyYXRpOmFsaWFzOkJlbmdhbGktSW50ZXJJbmRpYztJbnRlckluZGljLUd1amFyYXRpCitCZW5nYWxpLU9yaXlhOmFsaWFzOkJlbmdhbGktSW50ZXJJbmRpYztJbnRlckluZGljLU9yaXlhCitCZW5nYWxpLVRhbWlsOmFsaWFzOkJlbmdhbGktSW50ZXJJbmRpYztJbnRlckluZGljLVRhbWlsCitCZW5nYWxpLVRlbHVndTphbGlhczpCZW5nYWxpLUludGVySW5kaWM7SW50ZXJJbmRpYy1UZWx1Z3UKK0JlbmdhbGktS2FubmFkYTphbGlhczpCZW5nYWxpLUludGVySW5kaWM7SW50ZXJJbmRpYy1LYW5uYWRhCitCZW5nYWxpLU1hbGF5YWxhbTphbGlhczpCZW5nYWxpLUludGVySW5kaWM7SW50ZXJJbmRpYy1NYWxheWFsYW0KK0d1cm11a2hpLURldmFuYWdhcmk6YWxpYXM6R3VybXVraGktSW50ZXJJbmRpYztJbnRlckluZGljLURldmFuYWdhcmkKK0d1cm11a2hpLUJlbmdhbGk6YWxpYXM6R3VybXVraGktSW50ZXJJbmRpYztJbnRlckluZGljLUJlbmdhbGkKK0d1cm11a2hpLUd1amFyYXRpOmFsaWFzOkd1cm11a2hpLUludGVySW5kaWM7SW50ZXJJbmRpYy1HdWphcmF0aQorR3VybXVraGktT3JpeWE6YWxpYXM6R3VybXVraGktSW50ZXJJbmRpYztJbnRlckluZGljLU9yaXlhCitHdXJtdWtoaS1UYW1pbDphbGlhczpHdXJtdWtoaS1JbnRlckluZGljO0ludGVySW5kaWMtVGFtaWwKK0d1cm11a2hpLVRlbHVndTphbGlhczpHdXJtdWtoaS1JbnRlckluZGljO0ludGVySW5kaWMtVGVsdWd1CitHdXJtdWtoaS1LYW5uYWRhOmFsaWFzOkd1cm11a2hpLUludGVySW5kaWM7SW50ZXJJbmRpYy1LYW5uYWRhCitHdXJtdWtoaS1NYWxheWFsYW06YWxpYXM6R3VybXVraGktSW50ZXJJbmRpYztJbnRlckluZGljLU1hbGF5YWxhbQorR3VqYXJhdGktRGV2YW5hZ2FyaTphbGlhczpHdWphcmF0aS1JbnRlckluZGljO0ludGVySW5kaWMtRGV2YW5hZ2FyaQorR3VqYXJhdGktQmVuZ2FsaTphbGlhczpHdWphcmF0aS1JbnRlckluZGljO0ludGVySW5kaWMtQmVuZ2FsaQorR3VqYXJhdGktR3VybXVraGk6YWxpYXM6R3VqYXJhdGktSW50ZXJJbmRpYztJbnRlckluZGljLUd1cm11a2hpCitHdWphcmF0aS1Pcml5YTphbGlhczpHdWphcmF0aS1JbnRlckluZGljO0ludGVySW5kaWMtT3JpeWEKK0d1amFyYXRpLVRhbWlsOmFsaWFzOkd1amFyYXRpLUludGVySW5kaWM7SW50ZXJJbmRpYy1UYW1pbAorR3VqYXJhdGktVGVsdWd1OmFsaWFzOkd1amFyYXRpLUludGVySW5kaWM7SW50ZXJJbmRpYy1UZWx1Z3UKK0d1amFyYXRpLUthbm5hZGE6YWxpYXM6R3VqYXJhdGktSW50ZXJJbmRpYztJbnRlckluZGljLUthbm5hZGEKK0d1amFyYXRpLU1hbGF5YWxhbTphbGlhczpHdWphcmF0aS1JbnRlckluZGljO0ludGVySW5kaWMtTWFsYXlhbGFtCitPcml5YS1EZXZhbmFnYXJpOmFsaWFzOk9yaXlhLUludGVySW5kaWM7SW50ZXJJbmRpYy1EZXZhbmFnYXJpCitPcml5YS1CZW5nYWxpOmFsaWFzOk9yaXlhLUludGVySW5kaWM7SW50ZXJJbmRpYy1CZW5nYWxpCitPcml5YS1HdXJtdWtoaTphbGlhczpPcml5YS1JbnRlckluZGljO0ludGVySW5kaWMtR3VybXVraGkKK09yaXlhLUd1amFyYXRpOmFsaWFzOk9yaXlhLUludGVySW5kaWM7SW50ZXJJbmRpYy1HdWphcmF0aQorT3JpeWEtVGFtaWw6YWxpYXM6T3JpeWEtSW50ZXJJbmRpYztJbnRlckluZGljLVRhbWlsCitPcml5YS1UZWx1Z3U6YWxpYXM6T3JpeWEtSW50ZXJJbmRpYztJbnRlckluZGljLVRlbHVndQorT3JpeWEtS2FubmFkYTphbGlhczpPcml5YS1JbnRlckluZGljO0ludGVySW5kaWMtS2FubmFkYQorT3JpeWEtTWFsYXlhbGFtOmFsaWFzOk9yaXlhLUludGVySW5kaWM7SW50ZXJJbmRpYy1NYWxheWFsYW0KK1RhbWlsLURldmFuYWdhcmk6YWxpYXM6VGFtaWwtSW50ZXJJbmRpYztJbnRlckluZGljLURldmFuYWdhcmkKK1RhbWlsLUJlbmdhbGk6YWxpYXM6VGFtaWwtSW50ZXJJbmRpYztJbnRlckluZGljLUJlbmdhbGkKK1RhbWlsLUd1cm11a2hpOmFsaWFzOlRhbWlsLUludGVySW5kaWM7SW50ZXJJbmRpYy1HdXJtdWtoaQorVGFtaWwtR3VqYXJhdGk6YWxpYXM6VGFtaWwtSW50ZXJJbmRpYztJbnRlckluZGljLUd1amFyYXRpCitUYW1pbC1Pcml5YTphbGlhczpUYW1pbC1JbnRlckluZGljO0ludGVySW5kaWMtT3JpeWEKK1RhbWlsLVRlbHVndTphbGlhczpUYW1pbC1JbnRlckluZGljO0ludGVySW5kaWMtVGVsdWd1CitUYW1pbC1LYW5uYWRhOmFsaWFzOlRhbWlsLUludGVySW5kaWM7SW50ZXJJbmRpYy1LYW5uYWRhCitUYW1pbC1NYWxheWFsYW06YWxpYXM6VGFtaWwtSW50ZXJJbmRpYztJbnRlckluZGljLU1hbGF5YWxhbQorVGVsdWd1LURldmFuYWdhcmk6YWxpYXM6VGVsdWd1LUludGVySW5kaWM7SW50ZXJJbmRpYy1EZXZhbmFnYXJpCitUZWx1Z3UtQmVuZ2FsaTphbGlhczpUZWx1Z3UtSW50ZXJJbmRpYztJbnRlckluZGljLUJlbmdhbGkKK1RlbHVndS1HdXJtdWtoaTphbGlhczpUZWx1Z3UtSW50ZXJJbmRpYztJbnRlckluZGljLUd1cm11a2hpCitUZWx1Z3UtR3VqYXJhdGk6YWxpYXM6VGVsdWd1LUludGVySW5kaWM7SW50ZXJJbmRpYy1HdWphcmF0aQorVGVsdWd1LU9yaXlhOmFsaWFzOlRlbHVndS1JbnRlckluZGljO0ludGVySW5kaWMtT3JpeWEKK1RlbHVndS1UYW1pbDphbGlhczpUZWx1Z3UtSW50ZXJJbmRpYztJbnRlckluZGljLVRhbWlsCitUZWx1Z3UtS2FubmFkYTphbGlhczpUZWx1Z3UtSW50ZXJJbmRpYztJbnRlckluZGljLUthbm5hZGEKK1RlbHVndS1NYWxheWFsYW06YWxpYXM6VGVsdWd1LUludGVySW5kaWM7SW50ZXJJbmRpYy1NYWxheWFsYW0KK0thbm5hZGEtRGV2YW5hZ2FyaTphbGlhczpLYW5uYWRhLUludGVySW5kaWM7SW50ZXJJbmRpYy1EZXZhbmFnYXJpCitLYW5uYWRhLUJlbmdhbGk6YWxpYXM6S2FubmFkYS1JbnRlckluZGljO0ludGVySW5kaWMtQmVuZ2FsaQorS2FubmFkYS1HdXJtdWtoaTphbGlhczpLYW5uYWRhLUludGVySW5kaWM7SW50ZXJJbmRpYy1HdXJtdWtoaQorS2FubmFkYS1HdWphcmF0aTphbGlhczpLYW5uYWRhLUludGVySW5kaWM7SW50ZXJJbmRpYy1HdWphcmF0aQorS2FubmFkYS1Pcml5YTphbGlhczpLYW5uYWRhLUludGVySW5kaWM7SW50ZXJJbmRpYy1Pcml5YQorS2FubmFkYS1UYW1pbDphbGlhczpLYW5uYWRhLUludGVySW5kaWM7SW50ZXJJbmRpYy1UYW1pbAorS2FubmFkYS1UZWx1Z3U6YWxpYXM6S2FubmFkYS1JbnRlckluZGljO0ludGVySW5kaWMtVGVsdWd1CitLYW5uYWRhLU1hbGF5YWxhbTphbGlhczpLYW5uYWRhLUludGVySW5kaWM7SW50ZXJJbmRpYy1NYWxheWFsYW0KK01hbGF5YWxhbS1EZXZhbmFnYXJpOmFsaWFzOk1hbGF5YWxhbS1JbnRlckluZGljO0ludGVySW5kaWMtRGV2YW5hZ2FyaQorTWFsYXlhbGFtLUJlbmdhbGk6YWxpYXM6TWFsYXlhbGFtLUludGVySW5kaWM7SW50ZXJJbmRpYy1CZW5nYWxpCitNYWxheWFsYW0tR3VybXVraGk6YWxpYXM6TWFsYXlhbGFtLUludGVySW5kaWM7SW50ZXJJbmRpYy1HdXJtdWtoaQorTWFsYXlhbGFtLUd1amFyYXRpOmFsaWFzOk1hbGF5YWxhbS1JbnRlckluZGljO0ludGVySW5kaWMtR3VqYXJhdGkKK01hbGF5YWxhbS1Pcml5YTphbGlhczpNYWxheWFsYW0tSW50ZXJJbmRpYztJbnRlckluZGljLU9yaXlhCitNYWxheWFsYW0tVGFtaWw6YWxpYXM6TWFsYXlhbGFtLUludGVySW5kaWM7SW50ZXJJbmRpYy1UYW1pbAorTWFsYXlhbGFtLVRlbHVndTphbGlhczpNYWxheWFsYW0tSW50ZXJJbmRpYztJbnRlckluZGljLVRlbHVndQorTWFsYXlhbGFtLUthbm5hZGE6YWxpYXM6TWFsYXlhbGFtLUludGVySW5kaWM7SW50ZXJJbmRpYy1LYW5uYWRhCisKKyMgZW9mCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9wYWNrYWdlLmh0bWwgYi9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjgyM2U1MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL3BhY2thZ2UuaHRtbApAQCAtMCwwICsxLDE1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPCEtLSAgQ29weXJpZ2h0IChDKSAyMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorICBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKKyAgJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvQXR0aWMvcGFja2FnZS5odG1sLHYgJAorICAkUmV2aXNpb246IDEuMSAkCisgICREYXRlOiAyMDAwLzAzLzE1IDIxOjM1OjUyICQKKy0tPgorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0id2hpdGUiPgorUmVzb3VyY2UgZGF0YSB1c2VkIGJ5IGNsYXNzZXMgaW4gY29tLmlibS50ZXh0LgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL3RoYWlfZGljdCBiL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL3RoYWlfZGljdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45ZjhmNzdmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvdGhhaV9kaWN0CkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHQvdW5hbWVzLmRhdCBiL3NyYy9jb20vaWJtL3RleHQvdW5hbWVzLmRhdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44NGYzMGMyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dC91bmFtZXMuZGF0CkBAIC0wLDAgKzEsMyBAQAordmVyc2lvbiBodHRwczovL2dpdC1sZnMuZ2l0aHViLmNvbS9zcGVjL3YxCitvaWQgc2hhMjU2OmJlNDZiNTI2ZTFmMmJhOGYxNTRiN2YzOTNkZDVmNzE3YjY1MDYyMDM5N2ViZjZjNmYxYmEzMzJmZjE2MTc2MzQKK3NpemUgMTAwNDI4CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0L3Vwcm9wcy5kYXQgYi9zcmMvY29tL2libS90ZXh0L3Vwcm9wcy5kYXQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjdjZWE4YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHQvdXByb3BzLmRhdApAQCAtMCwwICsxLDMgQEAKK3ZlcnNpb24gaHR0cHM6Ly9naXQtbGZzLmdpdGh1Yi5jb20vc3BlYy92MQorb2lkIHNoYTI1Njo4MzA2NGU4MmMxYzcxYmY2YWYyM2Q2MjNmZTc5ZjI3MzdjMTRhMWJlOGFhNjVlYjk3N2E5MTMzZTRhOGY4MGIzCitzaXplIDI2NDIwCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0bGF5b3V0L0ZvbnRVdGlscy5qYXZhIGIvc3JjL2NvbS9pYm0vdGV4dGxheW91dC9Gb250VXRpbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45ZDA5NTI4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dGxheW91dC9Gb250VXRpbHMuamF2YQpAQCAtMCwwICsxLDI5IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBGb250VXRpbHMuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzozMDo0NCAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworLy8gUmVxdWlyZXMgSmF2YTIKK3BhY2thZ2UgY29tLmlibS50ZXh0bGF5b3V0OworCitpbXBvcnQgamF2YS5hd3QuRm9udDsKKworcHVibGljIGZpbmFsIGNsYXNzIEZvbnRVdGlscyB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgICAgICAgICAgICAgIAorICAgIHB1YmxpYyBzdGF0aWMgRm9udCBnZXRGb250KGphdmEudXRpbC5NYXAgYXR0cmlidXRlcykgeworCisgICAgICAgIHJldHVybiBGb250LmdldEZvbnQoYXR0cmlidXRlcyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHRsYXlvdXQvR3JhcGhpY3MyRENvbnZlcnNpb24uamF2YSBiL3NyYy9jb20vaWJtL3RleHRsYXlvdXQvR3JhcGhpY3MyRENvbnZlcnNpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hYjRlOTI3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dGxheW91dC9HcmFwaGljczJEQ29udmVyc2lvbi5qYXZhCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IEdyYXBoaWNzMkRDb252ZXJzaW9uLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6MzA6NDQgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8vIFJlcXVpcmVzIEphdmEyCitwYWNrYWdlIGNvbS5pYm0udGV4dGxheW91dDsKKworaW1wb3J0IGphdmEuYXd0LkdyYXBoaWNzOworaW1wb3J0IGphdmEuYXd0LkdyYXBoaWNzMkQ7CitpbXBvcnQgamF2YS5hd3QuUGFpbnQ7CisKKy8qKgorICogVGhpcyBjbGFzcyBhbGxvd3MgSkRLIDEuMSBjb2RlIHRvIHVzZSBhICJmYWtlIiBHcmFwaGljczJECisgKiBmb3Igc291cmNlLWNvZGUgY29tcGF0aWJpbGl0eSB3aXRoIEphdmEyIGNvZGUuICBPbiBKYXZhMiBpdCdzCisgKiBhIHRyaXZpYWwgY2xhc3MuICBUaGUgSkRLIDEuMSB2ZXJzaW9uIG9mIHRoaXMgY2xhc3MgZG9lcyBpbnRlcmVzdGluZworICogd29yay4KKyAqLyAKK3B1YmxpYyBmaW5hbCBjbGFzcyBHcmFwaGljczJEQ29udmVyc2lvbiB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgICAgICAgICAgICAgIAorICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhpY3MyRCBnZXRHcmFwaGljczJEKEdyYXBoaWNzIGcpIHsKKyAgICAgICAgcmV0dXJuIChHcmFwaGljczJEKSBnOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgR3JhcGhpY3MgZ2V0R3JhcGhpY3MoR3JhcGhpY3MyRCBnKSB7CisgICAgICAgIHJldHVybiBnOworICAgIH0KKworICAgIC8qKgorICAgICAqIFdpbGwgcmV0dXJuIGFuIGluc3RhbmNlIG9mIFBhaW50LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgT2JqZWN0IGdldENvbG9yU3RhdGUoR3JhcGhpY3MyRCBnKSB7CisKKyAgICAgICAgcmV0dXJuIGcuZ2V0UGFpbnQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTdGF0ZSBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIFBhaW50LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCByZXN0b3JlQ29sb3JTdGF0ZShHcmFwaGljczJEIGcsIE9iamVjdCBzdGF0ZSkgeworCisgICAgICAgIGcuc2V0UGFpbnQoKFBhaW50KSBzdGF0ZSk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHRsYXlvdXQvYXR0cmlidXRlcy9BdHRyaWJ1dGVLZXkuamF2YSBiL3NyYy9jb20vaWJtL3RleHRsYXlvdXQvYXR0cmlidXRlcy9BdHRyaWJ1dGVLZXkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42ZjQ0ZGI0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dGxheW91dC9hdHRyaWJ1dGVzL0F0dHJpYnV0ZUtleS5qYXZhCkBAIC0wLDAgKzEsMTY1IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBBdHRyaWJ1dGVLZXkuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzozMzowNyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworcGFja2FnZSBjb20uaWJtLnRleHRsYXlvdXQuYXR0cmlidXRlczsKKworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworCisvKioKKyAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSBjYW5ub25pY2FsIG1hcHBpbmcgYmV0d2VlbiBmaWVsZHMgaW4gVGV4dEF0dHJpYnV0ZQorICogYW5kIGluc3RhbmNlcyBvZiBpdHNlbGYuICBJdCBpcyB1c2VkIGJ5IEF0dHJpYnV0ZU1hcCB0byBzZXJpYWxpemUKKyAqIGFuZCBkZXNlcmlhbGl6ZSBUZXh0QXR0cmlidXRlIHRvIHByZXNlcnZlIHVuaXF1ZW5lc3Mgb2YgVGV4dEF0dHJpYnV0ZQorICogaW5zdGFuY2VzIChpZSBzbyB0aGF0IFRleHRBdHRyaWJ1dGUgaW5zdGFuY2VzIHJlbWFpbiBzaW5nbGV0b25zKSwKKyAqIGFuZCB0byBwcm92aWRlIGNvbXBhdGFiaWxpdHkgYmV0d2VlbiAxLjEgYW5kIDEuMiB2ZXJzaW9ucyBvZgorICogVGV4dEF0dHJpYnV0ZS4KKyAqIDxwPgorICogRXhhbXBsZSB1c2UgLSBpbnN0ZWFkIG9mIGRvaW5nIHRoaXM6CisgKiA8YmxvY2txdW90ZT48cHJlPgorICogICAgIG91dC53cml0ZU9iamVjdChhbkF0dHJpYnV0ZSk7CisgKiA8L3ByZT48L2Jsb2NrcXVvdGU+CisgKiBkbyB0aGlzOgorICogPGJsb2NrcXVvdGU+PHByZT4KKyAqICAgICBvdXQud3JpdGVPYmplY3QoQXR0cmlidXRlS2V5Lm1hcEF0dHJpYnV0ZVRvS2V5KGFuQXR0cmlidXRlKSk7CisgKiA8L3ByZT48L2Jsb2NrcXVvdGU+CisgKiBTaW1pbGFybHksIGluc3RlYWQgb2YgdGhpczoKKyAqIDxibG9ja3F1b3RlPjxwcmU+CisgKiAgICAgYW5BdHRyaWJ1dGUgPSBpbi5yZWFkT2JqZWN0KCk7CisgKiA8L3ByZT48L2Jsb2NrcXVvdGU+CisgKiBkbyB0aGlzOgorICogPGJsb2NrcXVvdGU+PHByZT4KKyAqICAgICBhbkF0dHJpYnV0ZSA9IEF0dHJpYnV0ZUtleS5tYXBLZXlUb0F0dHJpYnV0ZShpbi5yZWFkT2JqZWN0KCkpOworICogPC9wcmU+PC9ibG9ja3F1b3RlPgorICogPHA+CisgKiBJZiBhbkF0dHJpYnV0ZSBpcyBub3QgYSBrbm93biBUZXh0QXR0cmlidXRlLCB0aGVuIDxjb2RlPm1hcEF0dHJpYnV0ZVRvS2V5PC9jb2RlPgorICogd2lsbCBqdXN0IHJldHVybiBpdHMgYXJndW1lbnQuICBTaW1pbGFybHksIDxjb2RlPm1hcEtleVRvQXR0cmlidXRlPC9jb2RlPiB3aWxsCisgKiByZXR1cm4gaXRzIGFyZ3VtZW50IGlmIHRoZSBhcmd1bWVudCBpcyBub3QgYSBrbm93biBBdHRyaWJ1dGVLZXkuCisgKi8KKworLypwdWJsaWMqLyBmaW5hbCBjbGFzcyBBdHRyaWJ1dGVLZXkgaW1wbGVtZW50cyBTZXJpYWxpemFibGUgeworCisvKgorICAgIEluIHRoaXMgaW1wbGVtZW50YXRpb24sIHR3byBwYXJhbGxlbCBWZWN0b3JzIGFyZQorICAgIG1haW50YWluZWQuICBUZXh0QXR0cmlidXRlKGkpIG1hcHMgdG8gQXR0cmlidXRlS2V5KGkpLgorICAgIEZvciBjb21wYXRhYmlsaXR5IHdpdGggZXhpc3RpbmcgZGF0YSwgdGhpcyBtYXBwaW5nIG11c3QKKyAgICBiZSBtYWludGFpbmVkIGluIHRoZSBmdXR1cmUhICBTbywgd2hlbiBuZXcgYXR0cmlidXRlcworICAgIGFyZSBhZGRlZCwgYWRkIHRoZW0gdG8gdGhlIGVuZCBvZiB0aGUgbGlzdC4KKyovCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAzNzcyMzcxMjUzMjc3MTA3Mjk0TDsKKworICAgIHByaXZhdGUgc3RhdGljIE9iamVjdFtdIGZnVGV4dEF0dHJpYnV0ZXM7CisgICAgcHJpdmF0ZSBzdGF0aWMgT2JqZWN0W10gZmdBdHRyaWJ1dGVLZXlzOworCisgICAgc3RhdGljIHsKKyAgICAgICAgZmdUZXh0QXR0cmlidXRlcyA9IG5ldyBPYmplY3RbXSB7CisgICAgICAgICAgICBUZXh0QXR0cmlidXRlLkZPTlQsCisgICAgICAgICAgICBUZXh0QXR0cmlidXRlLkZBTUlMWSwKKyAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuV0VJR0hULAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5QT1NUVVJFLAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5TSVpFLAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5TVVBFUlNDUklQVCwKKyAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuRk9SRUdST1VORCwKKyAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuQkFDS0dST1VORCwKKyAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuVU5ERVJMSU5FLAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5TVFJJS0VUSFJPVUdILAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5DSEFSX1JFUExBQ0VNRU5ULAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5FWFRSQV9MSU5FX1NQQUNJTkcsCisgICAgICAgICAgICBUZXh0QXR0cmlidXRlLkZJUlNUX0xJTkVfSU5ERU5ULAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5NSU5fTElORV9TUEFDSU5HLAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5MSU5FX0ZMVVNILAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5MRUFESU5HX01BUkdJTiwKKyAgICAgICAgICAgIFRleHRBdHRyaWJ1dGUuVFJBSUxJTkdfTUFSR0lOLAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5UQUJfUlVMRVIsCisgICAgICAgICAgICBUZXh0QXR0cmlidXRlLlJVTl9ESVJFQ1RJT04sCisgICAgICAgICAgICBUZXh0QXR0cmlidXRlLkJJRElfRU1CRURESU5HLAorICAgICAgICAgICAgVGV4dEF0dHJpYnV0ZS5KVVNUSUZJQ0FUSU9OLAorICAgICAgICB9OworCisgICAgICAgIGZpbmFsIGludCBhdHRyQ291bnQgPSBmZ1RleHRBdHRyaWJ1dGVzLmxlbmd0aDsKKyAgICAgICAgZmdBdHRyaWJ1dGVLZXlzID0gbmV3IE9iamVjdFthdHRyQ291bnRdOworCisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGF0dHJDb3VudDsgaSArPSAxKSB7CisgICAgICAgICAgICBmZ0F0dHJpYnV0ZUtleXNbaV0gPSBuZXcgQXR0cmlidXRlS2V5KGkpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBUZXh0QXR0cmlidXRlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGtleS4KKyAgICAgKiBJZiBrZXkgaXMgYW4gaW5zdGFuY2Ugb2YgQXR0cmlidXRlS2V5IGl0IHdpbGwgYmUgbWFwcGVkIHRvCisgICAgICogYSBUZXh0QXR0cmlidXRlLiAgT3RoZXJ3aXNlLCB0aGUga2V5IGlzIHJldHVybmVkLgorICAgICAqIEBwYXJhbSBrZXkgdGhlIGtleSB0byBtYXAgdG8gYSBUZXh0QXR0cmlidXRlIGZpZWxkCisgICAgICogQHJldHVybiB0aGUgVGV4dEF0dHJpYnV0ZSBmb3IgPGNvZGU+a2V5PC9jb2RlPiBpZiA8Y29kZT5rZXk8L2NvZGU+CisgICAgICogICAgaXMgYW4gQXR0cmlidXRlS2V5OyBvdGhlcndpc2UgPGNvZGU+a2V5PC9jb2RlPiBpcyByZXR1cm5lZAorICAgICAqLworICAgIC8qcHVibGljKi8gc3RhdGljIE9iamVjdCBtYXBLZXlUb0F0dHJpYnV0ZShPYmplY3Qga2V5KSB7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIEF0dHJpYnV0ZUtleSBhS2V5ID0gKEF0dHJpYnV0ZUtleSkga2V5OworICAgICAgICAgICAgaWYgKGFLZXkuZklkIDwgZmdUZXh0QXR0cmlidXRlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmdUZXh0QXR0cmlidXRlc1thS2V5LmZJZF07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4ga2V5OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhdGNoKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICByZXR1cm4ga2V5OworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogSWYgYXR0cmlidXRlIGlzIGEga25vd24gVGV4dEF0dHJpYnV0ZSwgcmV0dXJuIGFuIEF0dHJpYnV0ZUtleQorICAgICAqIGZvciBpdC4gIE90aGVyd2lzZSB0aGUgb2JqZWN0IGlzIHJldHVybmVkLgorICAgICAqIEBwYXJhbSBhdHRyaWJ1dGUgdGhlIGF0dHJpYnV0ZSB0byBtYXAgdG8gYW4gQXR0cmlidXRlS2V5CisgICAgICogQHJldHVybiBhbiBBdHRyaWJ1dGVLZXkgZm9yIDxjb2RlPmF0dHJpYnV0ZTwvY29kZT4KKyAgICAgKiAgICAgaWYgPGNvZGU+YXR0cmlidXRlPC9jb2RlPiBpcyBhIGtub3duIGF0dHJpYnV0ZTsgb3RoZXJ3aXNlCisgICAgICogICAgIDxjb2RlPmF0dHJpYnV0ZTwvY29kZT4gaXMgcmV0dXJuZWQKKyAgICAgKi8KKyAgICAvKnB1YmxpYyovIHN0YXRpYyBPYmplY3QgbWFwQXR0cmlidXRlVG9LZXkoT2JqZWN0IGF0dHJpYnV0ZSkgeworCisgICAgICAgIGZpbmFsIGludCBhdHRyQ291bnQgPSBmZ1RleHRBdHRyaWJ1dGVzLmxlbmd0aDsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGluZGV4ID0gMDsgaW5kZXggPCBhdHRyQ291bnQ7IGluZGV4ICs9IDEpIHsKKyAgICAgICAgICAgIGlmIChmZ1RleHRBdHRyaWJ1dGVzW2luZGV4XS5lcXVhbHMoYXR0cmlidXRlKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBmZ0F0dHJpYnV0ZUtleXNbaW5kZXhdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gYXR0cmlidXRlOworICAgIH0KKworCisgICAgcHJpdmF0ZSBpbnQgZklkOworCisgICAgcHJpdmF0ZSBBdHRyaWJ1dGVLZXkoaW50IGlkKSB7CisKKyAgICAgICAgZklkID0gaWQ7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCByaHMpIHsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuICgoQXR0cmlidXRlS2V5KXJocykuZklkID09IGZJZDsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChDbGFzc0Nhc3RFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKworICAgICAgICByZXR1cm4gZklkOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0bGF5b3V0L2F0dHJpYnV0ZXMvQXR0cmlidXRlTWFwLmphdmEgYi9zcmMvY29tL2libS90ZXh0bGF5b3V0L2F0dHJpYnV0ZXMvQXR0cmlidXRlTWFwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzgyMzkyOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHRsYXlvdXQvYXR0cmlidXRlcy9BdHRyaWJ1dGVNYXAuamF2YQpAQCAtMCwwICsxLDUyOSBAQAorLyoKKyAqIEAoIykkUkNTZmlsZTogQXR0cmlidXRlTWFwLmphdmEsdiAkICRSZXZpc2lvbjogMS4xICQgJERhdGU6IDIwMDAvMDQvMjAgMTc6MzM6MzEgJAorICoKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogVGhlIHByb2dyYW0gaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGFueSB3YXJyYW50eSBleHByZXNzIG9yCisgKiBpbXBsaWVkLCBpbmNsdWRpbmcgdGhlIHdhcnJhbnR5IG9mIG5vbi1pbmZyaW5nZW1lbnQgYW5kIHRoZSBpbXBsaWVkCisgKiB3YXJyYW50aWVzIG9mIG1lcmNoYW50aWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuCisgKiBJQk0gd2lsbCBub3QgYmUgbGlhYmxlIGZvciBhbnkgZGFtYWdlcyBzdWZmZXJlZCBieSB5b3UgYXMgYSByZXN1bHQKKyAqIG9mIHVzaW5nIHRoZSBQcm9ncmFtLiBJbiBubyBldmVudCB3aWxsIElCTSBiZSBsaWFibGUgZm9yIGFueQorICogc3BlY2lhbCwgaW5kaXJlY3Qgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9yIGxvc3QgcHJvZml0cyBldmVuIGlmCisgKiBJQk0gaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2YgdGhlaXIgb2NjdXJyZW5jZS4gSUJNCisgKiB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSB0aGlyZCBwYXJ0eSBjbGFpbXMgYWdhaW5zdCB5b3UuCisgKi8KKy8vIFJlcXVpcmVzIEphdmEyCitwYWNrYWdlIGNvbS5pYm0udGV4dGxheW91dC5hdHRyaWJ1dGVzOworCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuU2V0OworCitpbXBvcnQgamF2YS5pby5FeHRlcm5hbGl6YWJsZTsKK2ltcG9ydCBqYXZhLmlvLk9iamVjdElucHV0OworaW1wb3J0IGphdmEuaW8uT2JqZWN0T3V0cHV0OworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKKworLyoqCisgKiBBdHRyaWJ1dGVNYXAgaXMgYW4gaW1tdXRhYmxlIE1hcC4gIEFkZGl0aW9uYWxseSwgdGhlcmUgYXJlCisgKiBzZXZlcmFsIG1ldGhvZHMgZm9yIGNvbW1vbiBvcGVyYXRpb25zICh1bmlvbiwKKyAqIHJlbW92ZSwgaW50ZXJzZWN0KTsgIHRoZXNlIG1ldGhvZHMgcmV0dXJuIG5ldyBBdHRyaWJ1dGVNYXAKKyAqIGluc3RhbmNlcy4KKyAqIDxwPgorICogQWx0aG91Z2ggYW55IG5vbi1udWxsIE9iamVjdCBjYW4gYmUgYSBrZXkgb3IgdmFsdWUgaW4gYW4KKyAqIEF0dHJpYnV0ZU1hcCwgdHlwaWNhbGx5IHRoZSBrZXlzIGFyZSBmaWVsZHMgb2YgVGV4dEF0dHJpYnV0ZS4KKyAqIEBzZWUgVGV4dEF0dHJpYnV0ZQorICovCitwdWJsaWMgZmluYWwgY2xhc3MgQXR0cmlidXRlTWFwIGltcGxlbWVudHMgamF2YS51dGlsLk1hcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXMuTWFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHRlcm5hbGl6YWJsZSB7CisKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIENPUFlSSUdIVCA9CisgICAgICAgICAgICAgICAgIihDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTgtMTk5OSAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDVVJSRU5UX1ZFUlNJT04gPSAxOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gOTUxMDgwMzsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBlcnJTdHJpbmcgPSAiU3R5bGVTZXRzIGFyZSBpbW11dGFibGUuIjsKKworICAgIC8vIFRoaXMgaXMgcGFzc2VkIHRvIHRoZSBIYXNodGFibGUgY29uc3RydWN0b3IgYXMgdGhlCisgICAgLy8gbG9hZCBmYWN0b3IgYXJndW1lbnQuICBJdCBpcyBjaG9zZW4gdG8gYXZvaWQgcmVzaXppbmcKKyAgICAvLyB0aGUgSGFzaHRhYmxlIHdoZW5ldmVyIHBvc3NpYmxlLiAgSSB0aGluayB0aGF0IDEKKyAgICAvLyBkb2VzIHRoaXMuCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPQURfRkFDVE9SID0gMTsKKworICAgIHByaXZhdGUgSGFzaHRhYmxlIHN0eWxlVGFibGU7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgQXR0cmlidXRlU2V0IGNhY2hlZEtleVNldCA9IG51bGw7CisgICAgcHJpdmF0ZSB0cmFuc2llbnQgQ29sbGVjdGlvbiBjYWNoZWRWYWx1ZUNvbGxlY3Rpb24gPSBudWxsOworICAgIHByaXZhdGUgdHJhbnNpZW50IFNldCBjYWNoZWRFbnRyeVNldCA9IG51bGw7CisKKyAgICAvKioKKyAgICAgKiBBbiBlbXB0eSBBdHRyaWJ1dGVNYXAuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBBdHRyaWJ1dGVNYXAgRU1QVFlfQVRUUklCVVRFX01BUCA9IG5ldyBBdHRyaWJ1dGVNYXAoKTsKKworLy8gPT09PT09PT09PT09PT0KKy8vIENvbnN0cnVjdG9ycworLy8gPT09PT09PT09PT09PT0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhIG5ldywgZW1wdHkgQXR0cmlidXRlTWFwLiAgRU1QVFlfU1RZTEVfU0VUIGNhbiBiZSB1c2VkCisgICAgICogaW4gcGxhY2Ugb2YgYW4gQXR0cmlidXRlTWFwIHByb2R1Y2VkIGJ5IHRoaXMgY29uc3RydWN0b3IuCisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCgpIHsKKworICAgICAgICBzdHlsZVRhYmxlID0gbmV3IEhhc2h0YWJsZSgxLCBMT0FEX0ZBQ1RPUik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGFuIEF0dHJpYnV0ZU1hcCB3aXRoIHRoZSBzYW1lIGtleS12YWx1ZQorICAgICAqIGVudHJpZXMgYXMgdGhlIGdpdmVuIE1hcC4KKyAgICAgKiBAcGFyYW0gbWFwIGEgTWFwIHdob3NlIGtleS12YWx1ZSBlbnRyaWVzIHdpbGwKKyAgICAgKiAgICAgIGJlY29tZSB0aGUgZW50cmllcyBmb3IgdGhpcyBBdHRyaWJ1dGVNYXAuIDxjb2RlPm1hcDwvY29kZT4KKyAgICAgKiAgICAgIGlzIG5vdCBtb2RpZmllZCwgYW5kIG11c3Qgbm90IGNvbnRhaW4gbnVsbCBrZXlzIG9yIHZhbHVlcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgQXR0cmlidXRlTWFwKGphdmEudXRpbC5NYXAgbWFwKSB7CisKKyAgICAgICAgc3R5bGVUYWJsZSA9IG5ldyBIYXNodGFibGUobWFwLnNpemUoKSwgTE9BRF9GQUNUT1IpOworICAgICAgICBzdHlsZVRhYmxlLnB1dEFsbChtYXApOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSBhbiBBdHRyaWJ1dGVNYXAgd2l0aCB0aGUgc2FtZSBrZXktdmFsdWUKKyAgICAgKiBlbnRyaWVzIGFzIHRoZSBnaXZlbiBIYXNodGFibGUuCisgICAgICogQHBhcmFtIHRhYmxlIGEgSGFzaHRhYmxlIHdob3NlIGtleS12YWx1ZSBlbnRyaWVzIHdpbGwKKyAgICAgKiAgICAgIGJlY29tZSB0aGUgZW50cmllcyBmb3IgdGhpcyBBdHRyaWJ1dGVNYXAuIDxjb2RlPnRhYmxlPC9jb2RlPgorICAgICAqICAgICAgaXMgbm90IG1vZGlmaWVkLgorICAgICAqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVNYXAoSGFzaHRhYmxlIGhhc2h0YWJsZSkgeworCisgICAgICAgIHRoaXMoKGphdmEudXRpbC5NYXApIGhhc2h0YWJsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGFuIEF0dHJpYnV0ZU1hcCB3aXRoIGEgc2luZ2xlIGVudHJ5IG9mCisgICAgICogPGNvZGU+e2F0dHJpYnV0ZSwgdmFsdWV9PC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gYXR0cmlidXRlIHRoZSBrZXkgaW4gdGhpcyBBdHRyaWJ1dGVNYXAncyBzaW5nbGUgZW50cnkKKyAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIGluIHRoaXMgQXR0cmlidXRlTWFwJ3Mgc2luZ2xlIGVudHJ5CisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcChPYmplY3Qga2V5LCBPYmplY3QgdmFsdWUpIHsKKworICAgICAgICBzdHlsZVRhYmxlID0gbmV3IEhhc2h0YWJsZSgxLCBMT0FEX0ZBQ1RPUik7CisKKyAgICAgICAgLy8gaGFzaHRhYmxlIGNoZWNrcyB2YWx1ZSBmb3IgbnVsbAorICAgICAgICBzdHlsZVRhYmxlLnB1dChrZXksIHZhbHVlKTsKKyAgICB9CisKKyAgICAvLyBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuCisgICAgcHJpdmF0ZSBBdHRyaWJ1dGVNYXAoSGFzaHRhYmxlIHRhYmxlLCBib29sZWFuIGNsb25lKSB7CisKKyAgICAgICAgaWYgKGNsb25lKSB7CisgICAgICAgICAgICBzdHlsZVRhYmxlID0gKEhhc2h0YWJsZSkgdGFibGUuY2xvbmUoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuc3R5bGVUYWJsZSA9IHRhYmxlOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgd3JpdGVFeHRlcm5hbChPYmplY3RPdXRwdXQgb3V0KSB0aHJvd3MgSU9FeGNlcHRpb24geworCisgICAgICAgIG91dC53cml0ZUludChDVVJSRU5UX1ZFUlNJT04pOworICAgICAgICBvdXQud3JpdGVJbnQoc3R5bGVUYWJsZS5zaXplKCkpOworICAgICAgICBFbnVtZXJhdGlvbiBlID0gc3R5bGVUYWJsZS5rZXlzKCk7CisgICAgICAgIHdoaWxlIChlLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICBPYmplY3Qga2V5ID0gZS5uZXh0RWxlbWVudCgpOworICAgICAgICAgICAgb3V0LndyaXRlT2JqZWN0KEF0dHJpYnV0ZUtleS5tYXBBdHRyaWJ1dGVUb0tleShrZXkpKTsKKyAgICAgICAgICAgIG91dC53cml0ZU9iamVjdChzdHlsZVRhYmxlLmdldChrZXkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJlYWRFeHRlcm5hbChPYmplY3RJbnB1dCBpbikgdGhyb3dzIElPRXhjZXB0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKKworICAgICAgICBpZiAoaW4ucmVhZEludCgpICE9IENVUlJFTlRfVkVSU0lPTikgeworICAgICAgICAgICAgdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJJbnZhbGlkIHZlcnNpb24gb2YgU3R5bGVCdWZmZXIiKTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBjb3VudCA9IGluLnJlYWRJbnQoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpIDwgY291bnQ7IGkgKz0gMSkgeworICAgICAgICAgICAgT2JqZWN0IGtleSA9IEF0dHJpYnV0ZUtleS5tYXBLZXlUb0F0dHJpYnV0ZShpbi5yZWFkT2JqZWN0KCkpOworICAgICAgICAgICAgT2JqZWN0IHZhbHVlID0gaW4ucmVhZE9iamVjdCgpOworICAgICAgICAgICAgc3R5bGVUYWJsZS5wdXQoa2V5LCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKy8vID09PT09PT09PT09PT09CisvLyBNYXAgaW50ZXJmYWNlCisvLyA9PT09PT09PT09PT09PQorCisvLyBxdWVyaWVzCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgQXR0cmlidXRlTWFwLgorICAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBBdHRyaWJ1dGVNYXAKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHNpemUoKSB7CisKKyAgICAgICAgcmV0dXJuIHN0eWxlVGFibGUuc2l6ZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgQXR0cmlidXRlTWFwCisgICAgICogaXMgMC4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBBdHRyaWJ1dGVNYXAKKyAgICAgKiBpcyAwCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNFbXB0eSgpIHsKKworICAgICAgICByZXR1cm4gc3R5bGVUYWJsZS5pc0VtcHR5KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIGtleSBpcyBpbiB0aGlzIEF0dHJpYnV0ZU1hcC4KKyAgICAgKiBAcGFyYW0ga2V5IHRoZSBrZXkgdG8gdGVzdAorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiA8Y29kZT5rZXk8L2NvZGU+IGlzIGluIHRoaXMgQXR0cmlidXRlTWFwCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gY29udGFpbnNLZXkoT2JqZWN0IGtleSkgeworCisgICAgICAgIHJldHVybiBzdHlsZVRhYmxlLmNvbnRhaW5zS2V5KGtleSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGluIHRoaXMgQXR0cmlidXRlTWFwLgorICAgICAqIEBwYXJhbSBrZXkgdGhlIHZhbHVlIHRvIHRlc3QKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgPGNvZGU+dmFsdWU8L2NvZGU+IGlzIGluIHRoaXMgQXR0cmlidXRlTWFwCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gY29udGFpbnNWYWx1ZShPYmplY3QgdmFsdWUpIHsKKworICAgICAgICByZXR1cm4gc3R5bGVUYWJsZS5jb250YWluc1ZhbHVlKHZhbHVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4ga2V5LiAgSWYgdGhlCisgICAgICoga2V5IGlzIG5vdCBpbiB0aGlzIEF0dHJpYnV0ZU1hcCBudWxsIGlzIHJldHVybmVkLgorICAgICAqIEBwYXJhbSBrZXkgdGhlIGtleSB0byBsb29rIHVwCisgICAgICogQHJldHVybiB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIDxjb2RlPmtleTwvY29kZT4sIG9yCisgICAgICogICAgIG51bGwgaWYgPGNvZGU+a2V5PC9jb2RlPiBpcyBub3QgaW4gdGhpcyBBdHRyaWJ1dGVNYXAKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGdldChPYmplY3Qga2V5KSB7CisKKyAgICAgICAgcmV0dXJuIHN0eWxlVGFibGUuZ2V0KGtleSk7CisgICAgfQorCisvLyBtb2RpZmllcnMgLSBhbGwgdGhyb3cgZXhjZXB0aW9ucworCisgICAgLyoqCisgICAgICogVGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLgorICAgICAqIEBzZWUgI2FkZEF0dHJpYnV0ZQorICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IHB1dChPYmplY3Qga2V5LCBPYmplY3QgdmFsdWUpIHsKKworICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oZXJyU3RyaW5nKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24uCisgICAgICogQHNlZSAjcmVtb3ZlQXR0cmlidXRlcworICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IHJlbW92ZShPYmplY3Qga2V5KSB7CisKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKGVyclN0cmluZyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLgorICAgICAqIEBzZWUgI2FkZEF0dHJpYnV0ZXMKKyAgICAgKiBAdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIHZvaWQgcHV0QWxsKGphdmEudXRpbC5NYXAgdCkgeworCisgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbihlcnJTdHJpbmcpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbi4KKyAgICAgKiBAc2VlICNFTVBUWV9BVFRSSUJVVEVfTUFQCisgICAgICogQHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGNsZWFyKCkgeworCisgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbihlcnJTdHJpbmcpOworICAgIH0KKworLy8gdmlld3MKKworICAgIC8qKgorICAgICAqIFJldHVybiBhbiBBdHRyaWJ1dGVTZXQgY29udGFpbmluZyBldmVyeSBrZXkgaW4gdGhpcyBBdHRyaWJ1dGVNYXAuCisgICAgICogQHJldHVybiBhbiBBdHRyaWJ1dGVTZXQgY29udGFpbmluZyBldmVyeSBrZXkgaW4gdGhpcyBBdHRyaWJ1dGVNYXAKKyAgICAgKi8KKyAgICBwdWJsaWMgU2V0IGtleVNldCgpIHsKKworICAgICAgICByZXR1cm4gZ2V0S2V5U2V0KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGFuIEF0dHJpYnV0ZVNldCBjb250YWluaW5nIGV2ZXJ5IGtleSBpbiB0aGlzIEF0dHJpYnV0ZU1hcC4KKyAgICAgKiBAcmV0dXJuIGFuIEF0dHJpYnV0ZVNldCBjb250YWluaW5nIGV2ZXJ5IGtleSBpbiB0aGlzIEF0dHJpYnV0ZU1hcAorICAgICAqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVTZXQgZ2V0S2V5U2V0KCkgeworCisgICAgICAgIEF0dHJpYnV0ZVNldCByZXN1bHQgPSBjYWNoZWRLZXlTZXQ7CisKKyAgICAgICAgaWYgKHJlc3VsdCA9PSBudWxsKSB7CisgICAgICAgICAgICByZXN1bHQgPSBBdHRyaWJ1dGVTZXQuY3JlYXRlS2V5U2V0KHN0eWxlVGFibGUpOworICAgICAgICAgICAgY2FjaGVkS2V5U2V0ID0gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBDb2xsZWN0aW9uIGNvbnRhaW5pbmcgZXZlcnkgdmFsdWUgaW4gdGhpcyBBdHRyaWJ1dGVNYXAuCisgICAgICogQHJldHVybiBhIENvbGxlY3Rpb24gY29udGFpbmluZyBldmVyeSB2YWx1ZSBpbiB0aGlzIEF0dHJpYnV0ZU1hcAorICAgICAqLworICAgIHB1YmxpYyBDb2xsZWN0aW9uIHZhbHVlcygpIHsKKworICAgICAgICBDb2xsZWN0aW9uIHJlc3VsdCA9IGNhY2hlZFZhbHVlQ29sbGVjdGlvbjsKKworICAgICAgICBpZiAocmVzdWx0ID09IG51bGwpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IENvbGxlY3Rpb25zLnVubW9kaWZpYWJsZUNvbGxlY3Rpb24oc3R5bGVUYWJsZS52YWx1ZXMoKSk7CisgICAgICAgICAgICBjYWNoZWRWYWx1ZUNvbGxlY3Rpb24gPSByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIFNldCBjb250YWluaW5nIGFsbCBlbnRyaWVzIGluIHRoaXMgQXR0cmlidXRlTWFwLgorICAgICAqLworICAgIHB1YmxpYyBTZXQgZW50cnlTZXQoKSB7CisKKyAgICAgICAgU2V0IHJlc3VsdCA9IGNhY2hlZEVudHJ5U2V0OworCisgICAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkgeworICAgICAgICAgICAgcmVzdWx0ID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlU2V0KHN0eWxlVGFibGUuZW50cnlTZXQoKSk7CisgICAgICAgICAgICBjYWNoZWRFbnRyeVNldCA9IHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCByaHMpIHsKKworICAgICAgICBpZiAocmhzID09IHRoaXMpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJocyA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBBdHRyaWJ1dGVNYXAgcmhzU3R5bGVTZXQgPSBudWxsOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByaHNTdHlsZVNldCA9IChBdHRyaWJ1dGVNYXApIHJoczsKKyAgICAgICAgfQorICAgICAgICBjYXRjaChDbGFzc0Nhc3RFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHN0eWxlVGFibGUuZXF1YWxzKHJoc1N0eWxlU2V0LnN0eWxlVGFibGUpOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisKKyAgICAgICAgcmV0dXJuIHN0eWxlVGFibGUuaGFzaENvZGUoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworCisgICAgICAgIHJldHVybiBzdHlsZVRhYmxlLnRvU3RyaW5nKCk7CisgICAgfQorCisvLyA9PT09PT09PT09PT09PQorLy8gT3BlcmF0aW9ucworLy8gPT09PT09PT09PT09PT0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIEF0dHJpYnV0ZU1hcCB3aGljaCBjb250YWlucyBlbnRyaWVzIGluIHRoaXMgQXR0cmlidXRlTWFwLAorICAgICAqIGFsb25nIHdpdGggYW4gZW50cnkgZm9yIDxhdHRyaWJ1dGUsIHZhbHVlPi4gIElmIGF0dHJpYnV0ZQorICAgICAqIGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGlzIEF0dHJpYnV0ZU1hcCBpdHMgdmFsdWUgYmVjb21lcyB2YWx1ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgQXR0cmlidXRlTWFwIGFkZEF0dHJpYnV0ZShPYmplY3Qga2V5LCBPYmplY3QgdmFsdWUpIHsKKworICAgICAgICAvLyB0cnkgdG8gb3B0aW1pemUgZm9yIGNhc2Ugd2hlcmUgPGtleSwgdmFsdWU+IGlzIGFscmVhZHkgdGhlcmU/CisgICAgICAgIEhhc2h0YWJsZSBuZXdUYWJsZSA9IG5ldyBIYXNodGFibGUoc3R5bGVUYWJsZS5zaXplKCkgKyAxLCBMT0FEX0ZBQ1RPUik7CisgICAgICAgIG5ld1RhYmxlLnB1dEFsbChzdHlsZVRhYmxlKTsKKyAgICAgICAgbmV3VGFibGUucHV0KGtleSwgdmFsdWUpOworICAgICAgICByZXR1cm4gbmV3IEF0dHJpYnV0ZU1hcChuZXdUYWJsZSwgZmFsc2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIEF0dHJpYnV0ZU1hcCB3aGljaCBjb250YWlucyBlbnRyaWVzIGluIHRoaXMgQXR0cmlidXRlTWFwCisgICAgICogYW5kIGluIHJocy4gIElmIGFuIGF0dHJpYnV0ZSBhcHBlYXJzIGluIGJvdGggU3R5bGVTZXRzIHRoZQorICAgICAqIHZhbHVlIGZyb20gcmhzIGlzIHVzZWQuCisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBhZGRBdHRyaWJ1dGVzKEF0dHJpYnV0ZU1hcCByaHMpIHsKKworICAgICAgICBpbnQgdGhpc1NpemUgPSBzaXplKCk7CisKKyAgICAgICAgaWYgKHRoaXNTaXplID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiByaHM7CisgICAgICAgIH0KKworICAgICAgICBpbnQgb3RoZXJTaXplID0gcmhzLnNpemUoKTsKKworICAgICAgICBpZiAob3RoZXJTaXplID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAgICAgSGFzaHRhYmxlIG5ld1RhYmxlID0gbmV3IEhhc2h0YWJsZSh0aGlzU2l6ZSArIG90aGVyU2l6ZSwgTE9BRF9GQUNUT1IpOworCisgICAgICAgIG5ld1RhYmxlLnB1dEFsbChzdHlsZVRhYmxlKTsKKyAgICAgICAgbmV3VGFibGUucHV0QWxsKHJocyk7CisKKyAgICAgICAgcmV0dXJuIG5ldyBBdHRyaWJ1dGVNYXAobmV3VGFibGUsIGZhbHNlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBBdHRyaWJ1dGVNYXAgd2hpY2ggY29udGFpbnMgZW50cmllcyBpbiB0aGlzIEF0dHJpYnV0ZU1hcAorICAgICAqIGFuZCBpbiByaHMuICBJZiBhbiBhdHRyaWJ1dGUgYXBwZWFycyBpbiBib3RoIFN0eWxlU2V0cyB0aGUKKyAgICAgKiB2YWx1ZSBmcm9tIHJocyBpcyB1c2VkLgorICAgICAqIFRoZSBNYXAncyBrZXlzIGFuZCB2YWx1ZXMgbXVzdCBiZSBub24tbnVsbC4KKyAgICAgKi8KKyAgICBwdWJsaWMgQXR0cmlidXRlTWFwIGFkZEF0dHJpYnV0ZXMoamF2YS51dGlsLk1hcCByaHMpIHsKKworICAgICAgICBpZiAocmhzIGluc3RhbmNlb2YgQXR0cmlidXRlTWFwKSB7CisgICAgICAgICAgICByZXR1cm4gYWRkQXR0cmlidXRlcygoQXR0cmlidXRlTWFwKXJocyk7CisgICAgICAgIH0KKworICAgICAgICBIYXNodGFibGUgbmV3VGFibGUgPSBuZXcgSGFzaHRhYmxlKHNpemUoKSArIHJocy5zaXplKCksIExPQURfRkFDVE9SKTsKKworICAgICAgICBuZXdUYWJsZS5wdXRBbGwoc3R5bGVUYWJsZSk7CisgICAgICAgIG5ld1RhYmxlLnB1dEFsbChyaHMpOworCisgICAgICAgIHJldHVybiBuZXcgQXR0cmlidXRlTWFwKG5ld1RhYmxlLCBmYWxzZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgQXR0cmlidXRlTWFwIHdpdGggdGhlIGVudHJpZXMgaW4gdGhpcyBBdHRyaWJ1dGVNYXAsIGJ1dAorICAgICAqIHdpdGhvdXQgYXR0cmlidXRlIGFzIGEga2V5LgorICAgICAqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVNYXAgcmVtb3ZlQXR0cmlidXRlKE9iamVjdCBhdHRyaWJ1dGUpIHsKKworICAgICAgICBpZiAoIWNvbnRhaW5zS2V5KGF0dHJpYnV0ZSkpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisKKyAgICAgICAgSGFzaHRhYmxlIG5ld1RhYmxlID0gbmV3IEhhc2h0YWJsZShzdHlsZVRhYmxlLnNpemUoKSwgTE9BRF9GQUNUT1IpOworICAgICAgICBuZXdUYWJsZS5wdXRBbGwoc3R5bGVUYWJsZSk7CisgICAgICAgIG5ld1RhYmxlLnJlbW92ZShhdHRyaWJ1dGUpOworCisgICAgICAgIHJldHVybiBuZXcgQXR0cmlidXRlTWFwKG5ld1RhYmxlLCBmYWxzZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgQXR0cmlidXRlTWFwIHdpdGggdGhlIGVudHJpZXMgb2YgdGhpcyBBdHRyaWJ1dGVNYXAgd2hvc2UKKyAgICAgKiBhdHRyaWJ1dGVzIGFyZSA8Yj5ub3Q8L2I+IGluIHRoZSBTZXQuCisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCByZW1vdmVBdHRyaWJ1dGVzKEF0dHJpYnV0ZVNldCBhdHRyaWJ1dGVzKSB7CisKKyAgICAgICAgU2V0IHNldCA9IGF0dHJpYnV0ZXM7CisgICAgICAgIHJldHVybiByZW1vdmVBdHRyaWJ1dGVzKHNldCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgQXR0cmlidXRlTWFwIHdpdGggdGhlIGVudHJpZXMgb2YgdGhpcyBBdHRyaWJ1dGVNYXAgd2hvc2UKKyAgICAgKiBhdHRyaWJ1dGVzIGFyZSA8Yj5ub3Q8L2I+IGluIHRoZSBTZXQuCisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCByZW1vdmVBdHRyaWJ1dGVzKFNldCBhdHRyaWJ1dGVzKSB7CisKKyAgICAgICAgLy8gQ3JlYXRlIG5ld1RhYmxlIG9uIGRlbWFuZDsgIGlmIG51bGwgYXQKKyAgICAgICAgLy8gZW5kIG9mIGl0ZXJhdGlvbiB0aGVuIHJldHVybiB0aGlzIHNldC4KKyAgICAgICAgLy8gU2hvdWxkIHdlIGludGVyc2VjdCBzdHlsZVRhYmxlLmtleVNldCB3aXRoCisgICAgICAgIC8vIGF0dHJpYnV0ZXMgaW5zdGVhZD8KKworICAgICAgICBIYXNodGFibGUgbmV3VGFibGUgPSBudWxsOworICAgICAgICBJdGVyYXRvciBhdHRySXRlciA9IGF0dHJpYnV0ZXMuaXRlcmF0b3IoKTsKKyAgICAgICAgd2hpbGUgKGF0dHJJdGVyLmhhc05leHQoKSkgeworICAgICAgICAgICAgT2JqZWN0IGN1cnJlbnQgPSBhdHRySXRlci5uZXh0KCk7CisgICAgICAgICAgICBpZiAoY3VycmVudCAhPSBudWxsICYmIHN0eWxlVGFibGUuY29udGFpbnNLZXkoY3VycmVudCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobmV3VGFibGUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBuZXdUYWJsZSA9IG5ldyBIYXNodGFibGUoc3R5bGVUYWJsZS5zaXplKCksIExPQURfRkFDVE9SKTsKKyAgICAgICAgICAgICAgICAgICAgbmV3VGFibGUucHV0QWxsKHN0eWxlVGFibGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuZXdUYWJsZS5yZW1vdmUoY3VycmVudCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobmV3VGFibGUgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBBdHRyaWJ1dGVNYXAobmV3VGFibGUsIGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgQXR0cmlidXRlTWFwIHdpdGggdGhlIGtleXMgb2YgdGhpcyBBdHRyaWJ1dGVNYXAgd2hpY2gKKyAgICAgKiBhcmUgYWxzbyBpbiB0aGUgU2V0LiAgVGhlIHNldCBtdXN0IG5vdCBjb250YWluIG51bGwuCisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBpbnRlcnNlY3RXaXRoKEF0dHJpYnV0ZVNldCBhdHRyaWJ1dGVzKSB7CisKKyAgICAgICAgU2V0IHNldCA9IGF0dHJpYnV0ZXM7CisgICAgICAgIHJldHVybiBpbnRlcnNlY3RXaXRoKHNldCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgQXR0cmlidXRlTWFwIHdpdGggdGhlIGtleXMgb2YgdGhpcyBBdHRyaWJ1dGVNYXAgd2hpY2gKKyAgICAgKiBhcmUgYWxzbyBpbiB0aGUgU2V0LiAgVGhlIHNldCBtdXN0IG5vdCBjb250YWluIG51bGwuCisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZU1hcCBpbnRlcnNlY3RXaXRoKFNldCBhdHRyaWJ1dGVzKSB7CisKKyAgICAgICAgLy8gRm9yIG5vdywgZm9yZ2V0IGFib3V0IG9wdGltaXppbmcgZm9yIHRoZSBjYXNlIHdoZW4KKyAgICAgICAgLy8gdGhlIHJldHVybiB2YWx1ZSBpcyBlcXVpdmFsZW50IHRvIHRoaXMgc2V0LgorCisgICAgICAgIGludCBhdHRyU2l6ZSA9IGF0dHJpYnV0ZXMuc2l6ZSgpOworICAgICAgICBpbnQgc3R5bGVUYWJsZVNpemUgPSBzdHlsZVRhYmxlLnNpemUoKTsKKyAgICAgICAgaW50IHNpemUgPSBNYXRoLm1pbihhdHRyU2l6ZSwgc3R5bGVUYWJsZVNpemUpOworICAgICAgICBIYXNodGFibGUgbmV3VGFibGUgPSBuZXcgSGFzaHRhYmxlKHNpemUsIExPQURfRkFDVE9SKTsKKworICAgICAgICBpZiAoYXR0clNpemUgPCBzdHlsZVRhYmxlU2l6ZSkgeworICAgICAgICAgICAgSXRlcmF0b3IgYXR0ckl0ZXIgPSBhdHRyaWJ1dGVzLml0ZXJhdG9yKCk7CisgICAgICAgICAgICB3aGlsZSAoYXR0ckl0ZXIuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgT2JqZWN0IGN1cnJlbnQgPSBhdHRySXRlci5uZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBPYmplY3QgdmFsdWUgPSBzdHlsZVRhYmxlLmdldChjdXJyZW50KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld1RhYmxlLnB1dChjdXJyZW50LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBJdGVyYXRvciBhdHRySXRlciA9IGtleVNldCgpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICB3aGlsZSAoYXR0ckl0ZXIuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgT2JqZWN0IGN1cnJlbnQgPSBhdHRySXRlci5uZXh0KCk7CisgICAgICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZXMuY29udGFpbnMoY3VycmVudCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3VGFibGUucHV0KGN1cnJlbnQsIHN0eWxlVGFibGUuZ2V0KGN1cnJlbnQpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IEF0dHJpYnV0ZU1hcChuZXdUYWJsZSwgZmFsc2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFB1dCBhbGwgZW50cmllcyBpbiB0aGlzIEF0dHJpYnV0ZU1hcCBpbnRvIHRoZSBnaXZlbiBNYXAuCisgICAgICogQHBhcmFtIHJocyB0aGUgTWFwIGludG8gd2hpY2ggZW50cmllcyBhcmUgcGxhY2VkCisgICAgICovCisgICAgcHVibGljIHZvaWQgcHV0QWxsSW50byhqYXZhLnV0aWwuTWFwIHJocykgeworCisgICAgICAgIHJocy5wdXRBbGwodGhpcyk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3RleHRsYXlvdXQvYXR0cmlidXRlcy9BdHRyaWJ1dGVTZXQuamF2YSBiL3NyYy9jb20vaWJtL3RleHRsYXlvdXQvYXR0cmlidXRlcy9BdHRyaWJ1dGVTZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iYzM4NDI1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdGV4dGxheW91dC9hdHRyaWJ1dGVzL0F0dHJpYnV0ZVNldC5qYXZhCkBAIC0wLDAgKzEsMzQ1IEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBBdHRyaWJ1dGVTZXQuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzozMzozMSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworLy8gUmVxdWlyZXMgSmF2YTIKK3BhY2thZ2UgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworaW1wb3J0IGphdmEudXRpbC5FbnVtZXJhdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLlNldDsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKKworLyoqCisgKiBBbiBBdHRyaWJ1dGVTZXQgaXMgYW4gaW1tdXRhYmxlIGNvbGxlY3Rpb24gb2YgdW5pcXVlIE9iamVjdHMuCisgKiBJdCBoYXMgc2V2ZXJhbCBvcGVyYXRpb25zCisgKiB3aGljaCByZXR1cm4gbmV3IEF0dHJpYnV0ZVNldCBpbnN0YW5jZXMuCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBBdHRyaWJ1dGVTZXQgaW1wbGVtZW50cyBTZXQgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKworICAgIC8qKgorICAgICAqIEFuIEF0dHJpYnV0ZVNldCB3aXRoIG5vIG1lbWJlcnMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBBdHRyaWJ1dGVTZXQgRU1QVFlfU0VUID0gbmV3IEF0dHJpYnV0ZVNldCgpOworCisgICAgcHJpdmF0ZSBIYXNodGFibGUgZWxlbWVudHM7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgZXJyU3RyaW5nID0gIkF0dHJpYnV0ZVNldCBpcyBpbW11dGFibGUuIjsKKworICAgIHByaXZhdGUgQXR0cmlidXRlU2V0KEhhc2h0YWJsZSBlbGVtZW50cykgeworCisgICAgICAgIHRoaXMuZWxlbWVudHMgPSBlbGVtZW50czsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQYWNrYWdlIG9ubHkuICBGb3IgQXR0cmlidXRlTWFwIHVzZS4KKyAgICAgKi8KKyAgICBzdGF0aWMgQXR0cmlidXRlU2V0IGNyZWF0ZUtleVNldChIYXNodGFibGUgaGFzaHRhYmxlKSB7CisKKyAgICAgICAgSGFzaHRhYmxlIG5ld0VsZW1lbnRzID0gbmV3IEhhc2h0YWJsZSgpOworCisgICAgICAgIEVudW1lcmF0aW9uIGUgPSBoYXNodGFibGUua2V5cygpOworICAgICAgICB3aGlsZSAoZS5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgT2JqZWN0IG5leHQgPSBlLm5leHRFbGVtZW50KCk7CisgICAgICAgICAgICBuZXdFbGVtZW50cy5wdXQobmV4dCwgbmV4dCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IEF0dHJpYnV0ZVNldChuZXdFbGVtZW50cyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgbmV3LCBlbXB0eSBBdHRyaWJ1dGVTZXQuICBUaGUgc2V0IGlzIHNlbWFudGljYWxseQorICAgICAqIGVxdWl2YWxlbnQgdG8gRU1QVFlfU0VULgorICAgICAqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVTZXQoKSB7CisKKyAgICAgICAgZWxlbWVudHMgPSBuZXcgSGFzaHRhYmxlKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgbmV3IEF0dHJpYnV0ZVNldCB3aXRoIHRoZSBzaW5nbGUgZWxlbWVudCBlbGVtLgorICAgICAqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVTZXQoT2JqZWN0IGVsZW0pIHsKKworICAgICAgICBlbGVtZW50cyA9IG5ldyBIYXNodGFibGUoMSwgMSk7CisgICAgICAgIGVsZW1lbnRzLnB1dChlbGVtLCBlbGVtKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBuZXcgQXR0cmlidXRlU2V0IGNvbnRhaW5pbmcgdGhlIGl0ZW1zIGluIHRoZSBhcnJheSBlbGVtcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgQXR0cmlidXRlU2V0KE9iamVjdFtdIGVsZW1zKSB7CisKKyAgICAgICAgZWxlbWVudHMgPSBuZXcgSGFzaHRhYmxlKGVsZW1zLmxlbmd0aCwgMSk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaSA8IGVsZW1zLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBPYmplY3QgbmV4dCA9IGVsZW1zW2ldOworICAgICAgICAgICAgZWxlbWVudHMucHV0KG5leHQsIG5leHQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGlzIHNldCBpcyAwLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoaXMgc2V0IGlzIDAKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0VtcHR5KCkgeworCisgICAgICAgIHJldHVybiBlbGVtZW50cy5pc0VtcHR5KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdGhpcyBzZXQuCisgICAgICogQHJldHVybiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoaXMgc2V0CisgICAgICovCisgICAgcHVibGljIGludCBzaXplKCkgeworCisgICAgICAgIHJldHVybiBlbGVtZW50cy5zaXplKCk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCByaHMpIHsKKworICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIGVxdWFscygoQXR0cmlidXRlU2V0KSByaHMpOworICAgICAgICB9CisgICAgICAgIGNhdGNoKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoQXR0cmlidXRlU2V0IHJocykgeworCisgICAgICAgIGlmIChyaHMgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGVsZW1lbnRzLmVxdWFscyhyaHMuZWxlbWVudHMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoaXMgc2V0IGNvbnRhaW5zIHRoZSBnaXZlbiBPYmplY3QKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBzZXQgY29udGFpbnMgPGNvZGU+bzwvY29kZT4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjb250YWlucyhPYmplY3QgbykgeworCisgICAgICAgIE9iamVjdCB2YWx1ZSA9IGVsZW1lbnRzLmdldChvKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlICE9IG51bGw7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhpcyBzZXQgY29udGFpbnMgYWxsIGVsZW1lbnRzIGluIHRoZSBnaXZlbgorICAgICAqIENvbGxlY3Rpb24KKyAgICAgKiBAcGFyYW0gY29sbCB0aGUgY29sbGVjdGlvbiB0byBjb21wYXJlIHdpdGgKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBzZXQgY29udGFpbnMgYWxsIGVsZW1lbnRzIGluIHRoZSBnaXZlbgorICAgICAqIENvbGxlY3Rpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjb250YWluc0FsbChDb2xsZWN0aW9uIGNvbGwpIHsKKworICAgICAgICByZXR1cm4gZWxlbWVudHMua2V5U2V0KCkuY29udGFpbnNBbGwoY29sbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGFuIEVudW1lcmF0aW9uIG9mIHRoZSBlbGVtZW50cyBpbiB0aGlzIHNldC4KKyAgICAgKiBAcmV0dXJuIGFuIEVudW1lcmF0aW9uIG9mIHRoZSBlbGVtZW50cyBpbiB0aGlzIHNldAorICAgICAqLworICAgIHB1YmxpYyBFbnVtZXJhdGlvbiBlbGVtZW50cygpIHsKKworICAgICAgICByZXR1cm4gZWxlbWVudHMua2V5cygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhbiBJdGVyYXRvciB3aXRoIHRoZSBlbGVtZW50cyBpbiB0aGlzIHNldC4KKyAgICAgKiBAcmV0dXJuIGFuIEl0ZXJhdG9yIHdpdGggdGhlIGVsZW1lbnRzIGluIHRoaXMgc2V0LgorICAgICAqIFRoZSBJdGVyYXRvciBjYW5ub3QgYmUgdXNlZCB0byBtb2RpZnkgdGhpcyBBdHRyaWJ1dGVTZXQuCisgICAgICovCisgICAgcHVibGljIEl0ZXJhdG9yIGl0ZXJhdG9yKCkgeworCisgICAgICAgIHJldHVybiBuZXcgRW51bWVyYXRpb25JdGVyYXRvcihlbGVtZW50cy5rZXlzKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbGwgaW4gdGhlIGdpdmVuIGFycmF5IHdpdGggdGhlIGVsZW1lbnRzIGluIHRoaXMgc2V0LgorICAgICAqIEBwYXJhbSBzdG9yYWdlIGFuIGFycmF5IHRvIGZpbGwgd2l0aCB0aGlzIHNldCdzIGVsZW1lbnRzLgorICAgICAqIFRoZSBhcnJheSBjYW5ub3QgYmUgbnVsbC4KKyAgICAgKiBAcmV0dXJuIHRoZSA8dHQ+c3RvcmFnZTwvdHQ+IGFycmF5LgorICAgICAqLworICAgIHB1YmxpYyBPYmplY3RbXSB0b0FycmF5KE9iamVjdFtdIHN0b3JhZ2UpIHsKKworICAgICAgICBFbnVtZXJhdGlvbiBrZXlzID0gZWxlbWVudHMua2V5cygpOworICAgICAgICBpbnQgbj0wOworICAgICAgICB3aGlsZSAoa2V5cy5oYXNNb3JlRWxlbWVudHMoKSkgeworICAgICAgICAgICAgc3RvcmFnZVtuKytdID0ga2V5cy5uZXh0RWxlbWVudCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzdG9yYWdlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhbiBhcnJheSB3aXRoIHRoZSBlbGVtZW50cyBpbiB0aGlzIHNldC4KKyAgICAgKiBAcmV0dXJuIGFuIGFycmF5IHdpdGggdGhlIGVsZW1lbnRzIGluIHRoaXMgc2V0CisgICAgICovCisgICAgcHVibGljIE9iamVjdFtdIHRvQXJyYXkoKSB7CisKKyAgICAgICAgcmV0dXJuIHRvQXJyYXkobmV3IE9iamVjdFtzaXplKCldKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLgorICAgICAqIEBzZWUgI2FkZEVsZW1lbnQKKyAgICAgKiBAdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gYWRkKE9iamVjdCBvKXsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKGVyclN0cmluZyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLgorICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiByZW1vdmUoT2JqZWN0IG8pIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKGVyclN0cmluZyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLgorICAgICAqIEBzZWUgI3VuaW9uV2l0aAorICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBhZGRBbGwoQ29sbGVjdGlvbiBjb2xsKSB7CisgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbihlcnJTdHJpbmcpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbi4KKyAgICAgKiBAc2VlICNzdWJ0cmFjdAorICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiByZW1vdmVBbGwoQ29sbGVjdGlvbiBjb2xsKSB7CisgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbihlcnJTdHJpbmcpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbi4KKyAgICAgKiBAc2VlICNpbnRlcnNlY3RXaXRoCisgICAgICogQHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIHJldGFpbkFsbChDb2xsZWN0aW9uIGNvbGwpIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKGVyclN0cmluZyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLgorICAgICAqIEBzZWUgI0VNUFRZX1NFVAorICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhcigpIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKGVyclN0cmluZyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGFuIEF0dHJpYnV0ZVNldCBjb250YWluaW5nIHRoZSBlbGVtZW50cyBvZiB0aGlzIHNldAorICAgICAqIGFuZCB0aGUgZ2l2ZW4gZWxlbWVudAorICAgICAqIEBwYXJhbSBlbGVtZW50IHRoZSBlbGVtZW50IHRvIGFkZAorICAgICAqIEByZXR1cm4gYW4gQXR0cmlidXRlU2V0IGxpa2UgdGhpcyBvbmUsIHdpdGggPGNvZGU+ZWxlbWVudDwvY29kZT4KKyAgICAgKiBhZGRlZAorICAgICAqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVTZXQgYWRkRWxlbWVudChPYmplY3QgZWxlbWVudCkgeworCisgICAgICAgIEhhc2h0YWJsZSBuZXdFbGVtZW50cyA9IChIYXNodGFibGUpIGVsZW1lbnRzLmNsb25lKCk7CisgICAgICAgIG5ld0VsZW1lbnRzLnB1dChlbGVtZW50LCBlbGVtZW50KTsKKyAgICAgICAgcmV0dXJuIG5ldyBBdHRyaWJ1dGVTZXQobmV3RWxlbWVudHMpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhbiBBdHRyaWJ1dGVTZXQgd2hpY2ggaXMgdGhlIHVuaW9uIG9mCisgICAgICogdGhpcyBzZXQgd2l0aCB0aGUgZ2l2ZW4gc2V0LgorICAgICAqIEBwYXJhbSBzIHRoZSBzZXQgdG8gdW5pb24gd2l0aAorICAgICAqIEByZXR1cm4gYW4gQXR0cmlidXRlU2V0IG9mIHRoZSBlbGVtZW50cyBpbiB0aGlzIHNldCBvcgorICAgICAqIGluIDxjb2RlPnM8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZVNldCB1bmlvbldpdGgoQXR0cmlidXRlU2V0IHMpIHsKKworICAgICAgICBIYXNodGFibGUgbmV3RWxlbWVudHMgPSAoSGFzaHRhYmxlKSBlbGVtZW50cy5jbG9uZSgpOworCisgICAgICAgIEl0ZXJhdG9yIGl0ZXIgPSBzLml0ZXJhdG9yKCk7CisgICAgICAgIHdoaWxlIChpdGVyLmhhc05leHQoKSkgeworICAgICAgICAgICAgT2JqZWN0IG5leHQgPSBpdGVyLm5leHQoKTsKKyAgICAgICAgICAgIG5ld0VsZW1lbnRzLnB1dChuZXh0LCBuZXh0KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXcgQXR0cmlidXRlU2V0KG5ld0VsZW1lbnRzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYW4gQXR0cmlidXRlU2V0IHdoaWNoIGlzIHRoZSBpbnRlcnNlY3Rpb24gb2YKKyAgICAgKiB0aGlzIHNldCB3aXRoIHRoZSBnaXZlbiBzZXQuCisgICAgICogQHBhcmFtIHMgdGhlIHNldCB0byBpbnRlcnNlY3Qgd2l0aAorICAgICAqIEByZXR1cm4gYW4gQXR0cmlidXRlU2V0IG9mIHRoZSBlbGVtZW50cyBpbiB0aGlzIHNldCB3aGljaAorICAgICAqIGFyZSBpbiA8Y29kZT5zPC9jb2RlPgorICAgICAqLworICAgIHB1YmxpYyBBdHRyaWJ1dGVTZXQgaW50ZXJzZWN0V2l0aChBdHRyaWJ1dGVTZXQgcykgeworCisgICAgICAgIEhhc2h0YWJsZSBuZXdFbGVtZW50cyA9IG5ldyBIYXNodGFibGUoKTsKKworICAgICAgICBJdGVyYXRvciBpdGVyID0gcy5pdGVyYXRvcigpOworICAgICAgICB3aGlsZSAoaXRlci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIE9iamVjdCBuZXh0ID0gaXRlci5uZXh0KCk7CisgICAgICAgICAgICBpZiAoZWxlbWVudHMuZ2V0KG5leHQpICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBuZXdFbGVtZW50cy5wdXQobmV4dCwgbmV4dCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IEF0dHJpYnV0ZVNldChuZXdFbGVtZW50cyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGFuIEF0dHJpYnV0ZVNldCB3aXRoIHRoZSBlbGVtZW50cyBpbiB0aGlzIHNldCB3aGljaAorICAgICAqIGFyZSBub3QgaW4gdGhlIGdpdmVuIHNldC4KKyAgICAgKiBAcGFyYW0gcyB0aGUgc2V0IG9mIGVsZW1lbnRzIHRvIGV4Y2x1ZGUKKyAgICAgKiBAcmV0dXJuIGFuIEF0dHJpYnV0ZVNldCBvZiB0aGUgZWxlbWVudHMgaW4gdGhpcyBzZXQgd2hpY2gKKyAgICAgKiBhcmUgbm90IGluIDxjb2RlPnM8L2NvZGU+CisgICAgICovCisgICAgcHVibGljIEF0dHJpYnV0ZVNldCBzdWJ0cmFjdChBdHRyaWJ1dGVTZXQgcykgeworCisgICAgICAgIEhhc2h0YWJsZSBuZXdFbGVtZW50cyA9IChIYXNodGFibGUpIGVsZW1lbnRzLmNsb25lKCk7CisKKyAgICAgICAgSXRlcmF0b3IgaXRlciA9IHMuaXRlcmF0b3IoKTsKKyAgICAgICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBuZXdFbGVtZW50cy5yZW1vdmUoaXRlci5uZXh0KCkpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBBdHRyaWJ1dGVTZXQobmV3RWxlbWVudHMpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIEVudW1lcmF0aW9uSXRlcmF0b3IgaW1wbGVtZW50cyBJdGVyYXRvciB7CisKKyAgICAgICAgcHJpdmF0ZSBFbnVtZXJhdGlvbiBlOworCisgICAgICAgIEVudW1lcmF0aW9uSXRlcmF0b3IoRW51bWVyYXRpb24gZSkgeworICAgICAgICAgICAgdGhpcy5lID0gZTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sZWFuIGhhc05leHQoKSB7CisgICAgICAgICAgICByZXR1cm4gZS5oYXNNb3JlRWxlbWVudHMoKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBPYmplY3QgbmV4dCgpIHsKKyAgICAgICAgICAgIHJldHVybiBlLm5leHRFbGVtZW50KCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCByZW1vdmUoKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oZXJyU3RyaW5nKTsKKyAgICAgICAgfQorICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90ZXh0bGF5b3V0L2F0dHJpYnV0ZXMvTWFwLmphdmEgYi9zcmMvY29tL2libS90ZXh0bGF5b3V0L2F0dHJpYnV0ZXMvTWFwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGE1YjM4ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHRsYXlvdXQvYXR0cmlidXRlcy9NYXAuamF2YQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQCgjKSRSQ1NmaWxlOiBNYXAuamF2YSx2ICQgJFJldmlzaW9uOiAxLjEgJCAkRGF0ZTogMjAwMC8wNC8yMCAxNzozMzowNyAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworLy8gUmVxdWlyZXMgSmF2YTIKK3BhY2thZ2UgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXM7CisKKy8qKgorICogQSBNYXAgaXMgYSBjb2xsZWN0aW9uIG9mIGtleS12YWx1ZSBwYWlycyAob3IgZW50cmllcyksIHdoZXJlIGVhY2gKKyAqIGtleSBpbiB0aGUgTWFwIGlzIHVuaXF1ZS4gIFRoaXMgaW50ZXJmYWNlIGlzIGEgc3Vic2V0IG9mIHRoZQorICogSkRLIDEuMiBNYXAgaW50ZXJmYWNlLiAgSXQgaXMgdXNlZCBieSBKREsgMS4xLWNvbXBhdGlibGUgY29kZS4KKyAqLworcHVibGljIGludGVyZmFjZSBNYXAgeworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBDT1BZUklHSFQgPQorICAgICAgICAgICAgICAgICIoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk4LTE5OTkgLSBBbGwgUmlnaHRzIFJlc2VydmVkIjsKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoaXMgTWFwLgorICAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoaXMgTWFwCisgICAgICovCisgICAgcHVibGljIGludCBzaXplKCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIE1hcCBoYXMgbm8gZW50cmllcy4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhpcyBNYXAgaGFzIG5vIGVudHJpZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0VtcHR5KCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBnaXZlbiBrZXkuCisgICAgICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIGtleS4gIElmIHRoZSBrZXkgZG9lcyBub3QgaGF2ZQorICAgICAqIGEgdmFsdWUgaW4gdGhpcyBNYXAsIG51bGwgaXMgcmV0dXJuZWQuCisgICAgICovCisgICAgcHVibGljIE9iamVjdCBnZXQoT2JqZWN0IGtleSk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIE1hcCBjb250YWlucyB0aGUgZ2l2ZW4ga2V5LgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIE1hcCBjb250YWlucyB0aGUgZ2l2ZW4ga2V5CisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gY29udGFpbnNLZXkoT2JqZWN0IGtleSk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdGV4dGxheW91dC9hdHRyaWJ1dGVzL1RleHRBdHRyaWJ1dGUuamF2YSBiL3NyYy9jb20vaWJtL3RleHRsYXlvdXQvYXR0cmlidXRlcy9UZXh0QXR0cmlidXRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzZjYTZkNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3RleHRsYXlvdXQvYXR0cmlidXRlcy9UZXh0QXR0cmlidXRlLmphdmEKQEAgLTAsMCArMSwyNDggQEAKKy8qCisgKiBAKCMpJFJDU2ZpbGU6IFRleHRBdHRyaWJ1dGUuamF2YSx2ICQgJFJldmlzaW9uOiAxLjIgJCAkRGF0ZTogMjAwMC8wNC8yNSAwMDoxODo1MSAkCisgKgorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5OC0xOTk5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBUaGUgcHJvZ3JhbSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgYW55IHdhcnJhbnR5IGV4cHJlc3Mgb3IKKyAqIGltcGxpZWQsIGluY2x1ZGluZyB0aGUgd2FycmFudHkgb2Ygbm9uLWluZnJpbmdlbWVudCBhbmQgdGhlIGltcGxpZWQKKyAqIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRpYmlsaXR5IGFuZCBmaXRuZXNzIGZvciBhIHBhcnRpY3VsYXIgcHVycG9zZS4KKyAqIElCTSB3aWxsIG5vdCBiZSBsaWFibGUgZm9yIGFueSBkYW1hZ2VzIHN1ZmZlcmVkIGJ5IHlvdSBhcyBhIHJlc3VsdAorICogb2YgdXNpbmcgdGhlIFByb2dyYW0uIEluIG5vIGV2ZW50IHdpbGwgSUJNIGJlIGxpYWJsZSBmb3IgYW55CisgKiBzcGVjaWFsLCBpbmRpcmVjdCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb3IgbG9zdCBwcm9maXRzIGV2ZW4gaWYKKyAqIElCTSBoYXMgYmVlbiBhZHZpc2VkIG9mIHRoZSBwb3NzaWJpbGl0eSBvZiB0aGVpciBvY2N1cnJlbmNlLiBJQk0KKyAqIHdpbGwgbm90IGJlIGxpYWJsZSBmb3IgYW55IHRoaXJkIHBhcnR5IGNsYWltcyBhZ2FpbnN0IHlvdS4KKyAqLworLy8gUmVxdWlyZXMgSmF2YTIKK3BhY2thZ2UgY29tLmlibS50ZXh0bGF5b3V0LmF0dHJpYnV0ZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaHRhYmxlOworaW1wb3J0IGphdmEudGV4dC5BdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IuQXR0cmlidXRlOworaW1wb3J0IGphdmEuaW8uSW52YWxpZE9iamVjdEV4Y2VwdGlvbjsKKworLyoqCisgKiBUaGlzIGNsYXNzIGNvbnRhaW5zIGEgbnVtYmVyIG9mIGtleXMgKG9yIGF0dHJpYnV0ZXMpIGZvciBzcGVjaWZ5aW5nIHRleHQgc3R5bGVzCisgKiBpbiBhIE1hcC4gIEEgdGV4dCBzdHlsZSBpcyBhIGNvbGxlY3Rpb24gb2Yga2V5LXZhbHVlIHBhaXJzLCB3aGVyZQorICogdGhlIGtleSByZXByZXNlbnRzIGEgY2VydGFpbiBjaGFyYWN0ZXJpc3RpYyAoc3VjaCBhcyBzaXplKSBhbmQKKyAqIHRoZSB2YWx1ZSB0ZWxscyBob3cgdGhhdCBjaGFyYWN0ZXJpc3RpYyBpcyByZWFsaXplZCAoaWUgd2hhdCB0aGUKKyAqIHNpemUgaXMpLgorICogPHA+CisgKiBBbGwgb2YgdGhlIGF0dHJpYnV0ZXMgaW4gVGV4dEF0dHJpYnV0ZSBzcGVjaWZ5IGEgY2xhc3MgZm9yIHRoZWlyIHZhbHVlLgorICogTWFwIGRvZXMgbm90IGVuZm9yY2UgdGhlc2UgY2xhc3Mgc3BlY2lmaWNhdGlvbnM7ICBob3dldmVyLCB0ZXh0IHJlbmRlcmluZyBjb2RlCisgKiB3aWxsIHRlbmQgdG8gZmFpbCB3aXRoIGEgQ2xhc3NDYXN0RXhjZXB0aW9uIGlmIGEga2V5J3MgdmFsdWUKKyAqIGhhcyBhbiB1bmV4cGVjdGVkIGNsYXNzLgorICogPHA+CisgKiBTb21lIGF0dHJpYnV0ZXMgYXJlIG1lYW5pbmdmdWwgZm9yIGVudGlyZSBwYXJhZ3JhcGhzLCBub3QgaW5kaXZpZHVhbAorICogY2hhcmFjdGVycy4gIFRoZXNlIGF0dHJpYnV0ZXMgYXJlIGRvY3VtZW50ZWQgYXMgYXBwbHlpbmcgdG8gcGFyYWdyYXBocy4KKyAqIEFsbCBvdGhlciBhdHRyaWJ1dGVzIGFwcGx5IHRvIGNoYXJhY3RlcnMuCisgKiA8cD4KKyAqIE1hbnkgb2YgdGhlIGZpZWxkIG5hbWVzIGFuZCB2YWx1ZXMgaW4gdGhpcyBjbGFzcworICogYXJlIHRha2VuIGZyb20gdGhlIEpESyAxLjIKKyAqIDxjb2RlPmphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSBjbGFzczwvY29kZT4uCisgKiBAc2VlIE1hcAorICovCitwdWJsaWMgY2xhc3MgVGV4dEF0dHJpYnV0ZSBleHRlbmRzIEF0dHJpYnV0ZSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBIYXNodGFibGUgaW5zdGFuY2VNYXAgPSBuZXcgSGFzaHRhYmxlKDkpOworCisgICAgcHJvdGVjdGVkIFRleHRBdHRyaWJ1dGUoU3RyaW5nIG5hbWUpIHsKKyAgICAgICAgc3VwZXIobmFtZSk7CisgICAgICAgIGlmICh0aGlzLmdldENsYXNzKCkgPT0gVGV4dEF0dHJpYnV0ZS5jbGFzcykgeworICAgICAgICAgICAgaW5zdGFuY2VNYXAucHV0KG5hbWUsIHRoaXMpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJvdGVjdGVkIE9iamVjdCByZWFkUmVzb2x2ZSgpIHRocm93cyBJbnZhbGlkT2JqZWN0RXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKHRoaXMuZ2V0Q2xhc3MoKSAhPSBUZXh0QXR0cmlidXRlLmNsYXNzKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9iamVjdEV4Y2VwdGlvbigic3ViY2xhc3MgZGlkbid0IGNvcnJlY3RseSBpbXBsZW1lbnQgcmVhZFJlc29sdmUiKTsKKyAgICAgICAgfQorCisgICAgICAgIFRleHRBdHRyaWJ1dGUgaW5zdGFuY2UgPSAoVGV4dEF0dHJpYnV0ZSkgaW5zdGFuY2VNYXAuZ2V0KGdldE5hbWUoKSk7CisgICAgICAgIGlmIChpbnN0YW5jZSAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZE9iamVjdEV4Y2VwdGlvbigidW5rbm93biBhdHRyaWJ1dGUgbmFtZSIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBPYmplY3QgRk9OVCA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5GT05UOworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBPYmplY3QgRkFNSUxZID0gamF2YS5hd3QuZm9udC5UZXh0QXR0cmlidXRlLkZBTUlMWTsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IFdFSUdIVCA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5XRUlHSFQ7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBGbG9hdCBXRUlHSFRfQk9MRCA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5XRUlHSFRfQk9MRDsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IFBPU1RVUkUgPSBqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUuUE9TVFVSRTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEZsb2F0IFBPU1RVUkVfT0JMSVFVRSA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5QT1NUVVJFX09CTElRVUU7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE9iamVjdCBTSVpFID0gamF2YS5hd3QuZm9udC5UZXh0QXR0cmlidXRlLlNJWkU7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE9iamVjdCBTVVBFUlNDUklQVCA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5TVVBFUlNDUklQVDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEludGVnZXIgU1VQRVJTQ1JJUFRfU1VQRVIgPSBqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUuU1VQRVJTQ1JJUFRfU1VQRVI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBJbnRlZ2VyIFNVUEVSU0NSSVBUX1NVQiA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5TVVBFUlNDUklQVF9TVUI7CisKKyAgICAvKioKKyAgICAgKiBBdHRyaWJ1dGUga2V5IGZvciB0aGUgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBjb2xvciBhZG9ybm1lbnQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBPYmplY3QgRk9SRUdST1VORCA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5GT1JFR1JPVU5EOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IEJBQ0tHUk9VTkQgPSBqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUuQkFDS0dST1VORDsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IFVOREVSTElORSA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5VTkRFUkxJTkU7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBJbnRlZ2VyIFVOREVSTElORV9PTiA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5VTkRFUkxJTkVfT047CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE9iamVjdCBTVFJJS0VUSFJPVUdIID0gamF2YS5hd3QuZm9udC5UZXh0QXR0cmlidXRlLlNUUklLRVRIUk9VR0g7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBCb29sZWFuIFNUUklLRVRIUk9VR0hfT04gPSBqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUuU1RSSUtFVEhST1VHSF9PTjsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IE9GRlNFVCA9IG5ldyBUZXh0QXR0cmlidXRlKCJvZmZzZXQiKTsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IENIQVJfUkVQTEFDRU1FTlQgPSBqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUuQ0hBUl9SRVBMQUNFTUVOVDsKKy8vIFBhcmFncmFwaCBTdHlsZXMKKworLy8gdmFsdWVzIGFyZSBGbG9hdHM6CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBPYmplY3QgRVhUUkFfTElORV9TUEFDSU5HID0gbmV3IFRleHRBdHRyaWJ1dGUoImV4dHJhX2xpbmVfc3BhY2luZyIpOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IEVYVFJBX0ZJUlNUX0xJTkVfU1BBQ0lORyA9IG5ldyBUZXh0QXR0cmlidXRlKCJleHRyYV9maXJzdF9saW5lX3NwYWNpbmciKTsKKworICAgIC8qKgorICAgICAqIEFtb3VudCBiZXlvbmQgbGVhZGluZyBtYXJnaW4gdG8gaW5kZW50IHRoZSBmaXJzdCBsaW5lIG9mIGEgcGFyYWdyYXBoLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IEZJUlNUX0xJTkVfSU5ERU5UID0gbmV3IFRleHRBdHRyaWJ1dGUoImZpcnN0X2xpbmVfaW5kZW50Iik7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE9iamVjdCBNSU5fTElORV9TUEFDSU5HID0gbmV3IFRleHRBdHRyaWJ1dGUoIm1pbl9saW5lX3NwYWNpbmciKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE9iamVjdCBNSU5fRklSU1RfTElORV9TUEFDSU5HID0gbmV3IFRleHRBdHRyaWJ1dGUoIm1pbl9maXJzdF9saW5lX3NwYWNpbmciKTsKKworICAgIC8qKgorICAgICAqIEZsdXNoIGxpbmVzIGxlZnQsIHJpZ2h0LCBvciBjZW50ZXIuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBPYmplY3QgTElORV9GTFVTSCA9IG5ldyBUZXh0QXR0cmlidXRlKCJsaW5lX2ZsdXNoIik7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEludGVnZXIgRkxVU0hfTEVBRElORyA9IG5ldyBJbnRlZ2VyKDApOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgSW50ZWdlciBGTFVTSF9DRU5URVIgPSBuZXcgSW50ZWdlcigxKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEludGVnZXIgRkxVU0hfVFJBSUxJTkcgPSBuZXcgSW50ZWdlcigyKTsKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBvZiA8Y29kZT5MSU5FX0ZMVVNIPC9jb2RlPiBmb3IgZnVsbCBqdXN0aWZpY2F0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgSW50ZWdlciBGVUxMWV9KVVNUSUZJRUQgPSBuZXcgSW50ZWdlcigzKTsKKworICAgIC8qKgorICAgICAqIExlYWRpbmcgYW5kIHRyYWlsaW5nIG1hcmdpbiBpbiBwYXJhZ3JhcGguCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBPYmplY3QgTEVBRElOR19NQVJHSU4gPSBuZXcgVGV4dEF0dHJpYnV0ZSgibGVhZGluZ19tYXJnaW4iKTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIE9iamVjdCBUUkFJTElOR19NQVJHSU4gPSBuZXcgVGV4dEF0dHJpYnV0ZSgidHJhaWxpbmdfbWFyZ2luIik7CisKKyAgICAvKioKKyAgICAgKiBUYWIgcnVsZXIuICBWYWx1ZXMgYXJlIE1UYWJSdWxlciBpbnN0YW5jZXMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBPYmplY3QgVEFCX1JVTEVSID0gbmV3IFRleHRBdHRyaWJ1dGUoInRhYl9ydWxlciIpOworICAgIAorICAgIC8qKgorICAgICAqIEF0dHJpYnV0ZSBrZXkgZm9yIHRoZSBydW4gZGlyZWN0aW9uIG9mIHRoZSBsaW5lLgorICAgICAqCisgICAgICogPFA+PFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFNQQUNJTkc9IjAiIENFTExQQURESU5HPSIxIj4KKyAgICAgKiA8VFI+CisgICAgICogPFRIIFZBTElHTj0iVE9QIiBBTElHTj0iUklHSFQiPjxQIEFMSUdOPVJJR0hUPktleTwvVEg+CisgICAgICogPFREIFZBTElHTj0iVE9QIj5SVU5fRElSRUNUSU9OPC9URD48L1RSPgorICAgICAqIDxUUj4KKyAgICAgKiA8VEggVkFMSUdOPSJUT1AiIEFMSUdOPSJSSUdIVCI+PFAgQUxJR049UklHSFQ+VmFsdWU8L1RIPgorICAgICAqIDxURCBWQUxJR049IlRPUCI+Qm9vbGVhbjwvVEQ+PC9UUj4KKyAgICAgKiA8VFI+CisgICAgICogPFRIIFZBTElHTj0iVE9QIiBBTElHTj0iUklHSFQiPjxQIEFMSUdOPVJJR0hUPkNvbnN0YW50czwvVEg+CisgICAgICogPFREIFZBTElHTj0iVE9QIj5SVU5fRElSRUNUSU9OX0xUUiA9IHRydWUsIFJVTl9ESVJFQ1RJT05fUlRMID0gZmFsc2UKKyAgICAgKiA8L1REPjwvVFI+CisgICAgICogPFRSPgorICAgICAqIDxUSCBWQUxJR049IlRPUCIgQUxJR049IlJJR0hUIj48UCBBTElHTj1SSUdIVD5EZWZhdWx0PC9USD4KKyAgICAgKiA8VEQgVkFMSUdOPSJUT1AiPlVzZSB0aGUgZGVmYXVsdCBVbmljb2RlIGJhc2UgZGlyZWN0aW9uIGZyb20gdGhlIEJJREkgCisgICAgICogYWxnb3JpdGhtLjwvVEQ+PC9UUj4KKyAgICAgKiA8VFI+CisgICAgICogPFRIIFZBTElHTj0iVE9QIiBBTElHTj0iUklHSFQiPjxQIEFMSUdOPVJJR0hUPkRlc2NyaXB0aW9uPC9USD4KKyAgICAgKiA8VEQgVkFMSUdOPSJUT1AiPjxQPlNwZWNpZmllcyB3aGljaCBiYXNlIHJ1biBkaXJlY3Rpb24gdG8gdXNlIHdoZW4gCisgICAgICogcG9zaXRpb25pbmcgbWl4ZWQgZGlyZWN0aW9uYWwgcnVucyB3aXRoaW4gYSBwYXJhZ3JhcGguIElmIHRoaXMgdmFsdWUgaXMKKyAgICAgKiBSVU5fRElSRUNUSU9OX0RFRkFVTFQsIDxjb2RlPlRleHRMYXlvdXQ8L2NvZGU+IHVzZXMgdGhlIGRlZmF1bHQgVW5pY29kZQorICAgICAqIGJhc2UgZGlyZWN0aW9uIGZyb20gdGhlIEJJREkgYWxnb3JpdGhtLjwvUD4KKyAgICAgKiA8UD48ST5UaGlzIGF0dHJpYnV0ZSBzaG91bGQgaGF2ZSB0aGUgc2FtZSB2YWx1ZSBvdmVyIHRoZSB3aG9sZSAKKyAgICAgKiBwYXJhZ3JhcGguPC9JPjwvVEQ+PC9UUj4KKyAgICAgKiA8L1RBQkxFPgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IFJVTl9ESVJFQ1RJT04gPSBqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUuUlVOX0RJUkVDVElPTjsKKworICAgIC8qKgorICAgICAqIExlZnQtdG8tcmlnaHQgcnVuIGRpcmVjdGlvbi4KKyAgICAgKiBAc2VlICNSVU5fRElSRUNUSU9OCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBCb29sZWFuIFJVTl9ESVJFQ1RJT05fTFRSID0gamF2YS5hd3QuZm9udC5UZXh0QXR0cmlidXRlLlJVTl9ESVJFQ1RJT05fTFRSOworCisgICAgLyoqCisgICAgICogUmlnaHQtdG8tbGVmdCBydW4gZGlyZWN0aW9uLgorICAgICAqIEBzZWUgI1JVTl9ESVJFQ1RJT04KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEJvb2xlYW4gUlVOX0RJUkVDVElPTl9SVEwgPSBqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUuUlVOX0RJUkVDVElPTl9SVEw7CisKKyAgICAvKioKKyAgICAgKiBBdHRyaWJ1dGUga2V5IGZvciB0aGUgZW1iZWRkaW5nIGxldmVsIGZvciBuZXN0ZWQgYmlkaXJlY3Rpb25hbCBydW5zLgorICAgICAqCisgICAgICogPFA+PFRBQkxFIEJPUkRFUj0iMCIgQ0VMTFNQQUNJTkc9IjAiIENFTExQQURESU5HPSIxIj4KKyAgICAgKiA8VFI+CisgICAgICogPFRIIFZBTElHTj0iVE9QIiBBTElHTj0iUklHSFQiPjxQIEFMSUdOPVJJR0hUPktleTwvVEg+CisgICAgICogPFREIFZBTElHTj0iVE9QIj5CSURJX0VNQkVERElORzwvVEQ+PC9UUj4KKyAgICAgKiA8VFI+CisgICAgICogPFRIIFZBTElHTj0iVE9QIiBBTElHTj0iUklHSFQiPjxQIEFMSUdOPVJJR0hUPlZhbHVlPC9USD4KKyAgICAgKiA8VEQgVkFMSUdOPSJUT1AiPkludGVnZXI8L1REPjwvVFI+CisgICAgICogPFRSPgorICAgICAqIDxUSCBWQUxJR049IlRPUCIgQUxJR049IlJJR0hUIj48UCBBTElHTj1SSUdIVD5MaW1pdHM8L1RIPgorICAgICAqIDxURCBWQUxJR049IlRPUCI+UG9zaXRpdmUgdmFsdWVzIDEgdGhyb3VnaCAxNSBhcmUgPEk+ZW1iZWRkaW5nPC9JPgorICAgICAqIGxldmVscywgbmVnYXRpdmUgdmFsdWVzPEJSPiB0aHJvdWdoIC0xNSBhcmUgPEk+b3ZlcnJpZGU8L0k+IGxldmVscworICAgICAqIDwvVEQ+PC9UUj4KKyAgICAgKiA8VFI+CisgICAgICogPFRIIFZBTElHTj0iVE9QIiBBTElHTj0iUklHSFQiPjxQIEFMSUdOPVJJR0hUPkRlZmF1bHQ8L1RIPgorICAgICAqIDxURCBWQUxJR049IlRPUCI+VXNlIHN0YW5kYXJkIEJJREkgdG8gY29tcHV0ZSBsZXZlbHMgZnJvbSBmb3JtYXR0aW5nCisgICAgICogY2hhcmFjdGVycyBpbiB0aGUgdGV4dC48L1REPjwvVFI+CisgICAgICogPFRSPgorICAgICAqIDxUSCBWQUxJR049IlRPUCIgQUxJR049IlJJR0hUIj48UCBBTElHTj1SSUdIVD5EZXNjcmlwdGlvbjwvVEg+CisgICAgICogPFREIFZBTElHTj0iVE9QIj5TcGVjaWZpZXMgdGhlIGJpZGkgZW1iZWRkaW5nIGxldmVsIG9mIHRoZSBjaGFyYWN0ZXIuCisgICAgICogV2hlbiB0aGlzIGF0dHJpYnV0ZSBpcyBwcmVzZW50IGFueXdoZXJlIGluIGEgcGFyYWdyYXBoLCB0aGVuIHRoZSAKKyAgICAgKiBVbmljb2RlIGNoYXJhY3RlcnMgUkxPLCBMUk8sIFJMRSwgTFJFLCBQREYgYXJlIGRpc3JlZ2FyZGVkIGluIHRoZSBCSURJIAorICAgICAqIGFuYWx5c2lzIG9mIHRoYXQgcGFyYWdyYXBoLiAKKyAgICAgKiBTZWUgdGhlIFVuaWNvZGUgU3RhbmRhcmQgdi4gMi4wLCBzZWN0aW9uIDMtMTEuCisgICAgICogPC9URD48L1RSPgorICAgICAqIDwvVEFCTEU+CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBPYmplY3QgQklESV9FTUJFRERJTkcgPSBqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUuQklESV9FTUJFRERJTkc7CisKKyAgICAvKioKKyAgICAgKiBBdHRyaWJ1dGUga2V5IGZvciB0aGUganVzdGlmaWNhdGlvbiBvZiBhIHBhcmFncmFwaC4KKyAgICAgKgorICAgICAqIDxQPjxUQUJMRSBCT1JERVI9IjAiIENFTExTUEFDSU5HPSIwIiBDRUxMUEFERElORz0iMSI+CisgICAgICogPFRSPgorICAgICAqIDxUSCBWQUxJR049IlRPUCIgQUxJR049IlJJR0hUIj48UCBBTElHTj1SSUdIVD5LZXk8L1RIPgorICAgICAqIDxURCBWQUxJR049IlRPUCI+SlVTVElGSUNBVElPTjwvVEQ+PC9UUj4KKyAgICAgKiA8VFI+CisgICAgICogPFRIIFZBTElHTj0iVE9QIiBBTElHTj0iUklHSFQiPjxQIEFMSUdOPVJJR0hUPlZhbHVlPC9USD4KKyAgICAgKiA8VEQgVkFMSUdOPSJUT1AiPkZsb2F0PC9URD48L1RSPgorICAgICAqIDxUUj4KKyAgICAgKiA8VEggVkFMSUdOPSJUT1AiIEFMSUdOPSJSSUdIVCI+PFAgQUxJR049UklHSFQ+TGltaXRzPC9USD4KKyAgICAgKiA8VEQgVkFMSUdOPSJUT1AiPjAuMCB0aHJvdWdoMS4wPC9URD48L1RSPgorICAgICAqIDxUUj4KKyAgICAgKiA8VEggVkFMSUdOPSJUT1AiIEFMSUdOPSJSSUdIVCI+PFAgQUxJR049UklHSFQ+RGVmYXVsdDwvVEg+CisgICAgICogPFREIFZBTElHTj0iVE9QIj4xLjA8L1REPjwvVFI+CisgICAgICogPFRSPgorICAgICAqIDxUSCBWQUxJR049IlRPUCIgQUxJR049IlJJR0hUIj48UCBBTElHTj1SSUdIVD5EZXNjcmlwdGlvbjwvVEg+CisgICAgICogPFREIFZBTElHTj0iVE9QIj48UD5TcGVjaWZpZXMgd2hpY2ggZnJhY3Rpb24gb2YgdGhlIGV4dHJhIHNwYWNlIHRvIHVzZSAKKyAgICAgKiB3aGVuIGp1c3RpZmljYXRpb24gaXMgcmVxdWVzdGVkLiBGb3IgZXhhbXBsZSwgaWYgdGhlIGxpbmUgaXMgNTAgcG9pbnRzCisgICAgICogd2lkZSBhbmQgdGhlIG1hcmdpbnMgYXJlIDcwIHBvaW50cyBhcGFydCwgYSB2YWx1ZSBvZiAwLjUgbWVhbnMgdGhhdCB0aGUKKyAgICAgKiBsaW5lIGlzIHBhZGRlZCB0byByZWFjaCBhIHdpZHRoIG9mIDYwIHBvaW50cy48L1A+CisgICAgICogPFA+PEk+VGhpcyBhdHRyaWJ1dGUgc2hvdWxkIGhhdmUgdGhlIHNhbWUgdmFsdWUgb3ZlciB0aGUgd2hvbGUKKyAgICAgKiBwYXJhZ3JhcGguPC9JPjwvVEQ+PC9UUj4KKyAgICAgKiA8L1RBQkxFPgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgT2JqZWN0IEpVU1RJRklDQVRJT04gPSBqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUuSlVTVElGSUNBVElPTjsKKworICAgIC8qKgorICAgICAqIEp1c3RpZnkgdGhlIGxpbmUgdG8gdGhlIGZ1bGwgcmVxdWVzdGVkIHdpZHRoLgorICAgICAqIEBzZWUgI0pVU1RJRklDQVRJT04KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEZsb2F0IEpVU1RJRklDQVRJT05fRlVMTCA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5KVVNUSUZJQ0FUSU9OX0ZVTEw7CisKKyAgICAvKioKKyAgICAgKiBEbyBub3QgYWxsb3cgdGhlIGxpbmUgdG8gYmUganVzdGlmaWVkLgorICAgICAqIEBzZWUgI0pVU1RJRklDQVRJT04KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEZsb2F0IEpVU1RJRklDQVRJT05fTk9ORSA9IGphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZS5KVVNUSUZJQ0FUSU9OX05PTkU7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90b29scy9jb21wcmVzc2lvbi9Db21wcmVzc2lvblRhYmxlR2VuZXJhdG9yLmphdmEgYi9zcmMvY29tL2libS90b29scy9jb21wcmVzc2lvbi9Db21wcmVzc2lvblRhYmxlR2VuZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWQ2ZDhkOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rvb2xzL2NvbXByZXNzaW9uL0NvbXByZXNzaW9uVGFibGVHZW5lcmF0b3IuamF2YQpAQCAtMCwwICsxLDIzMCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdG9vbHMvY29tcHJlc3Npb24vQXR0aWMvQ29tcHJlc3Npb25UYWJsZUdlbmVyYXRvci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDA0OjE3OjU2ICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50b29scy5jb21wcmVzc2lvbjsKKworaW1wb3J0IGNvbS5pYm0udGV4dC4qOworCisvKioKKyAqIFV0aWxpdHkgY2xhc3MgdG8gZ2VuZXJhdGUgdGhlIHRhYmxlcyB1c2VkIGJ5IHRoZSBTQ1NVIGludGVyZmFjZSBhbmQKKyAqIHRoZSBVbmljb2RlQ29tcHJlc3NvciBjbGFzcy4KKyAqCisgKiBAYXV0aG9yIFN0ZXBoZW4gRi4gQm9vdGgKKyAqIEB2ZXJzaW9uIDEuMCAwOCBNYXIgOTkKKyAqLworY2xhc3MgQ29tcHJlc3Npb25UYWJsZUdlbmVyYXRvcgoreworICAgIC8vIGR1cGxpY2F0ZSBvZiBjb25zdGFudHMgaW4gU0NTVQorCisgICAgZmluYWwgc3RhdGljIGludCBMQVRJTklOREVYICAgICAgICAgICAgICAgICAgPSAweEY5OworICAgIGZpbmFsIHN0YXRpYyBpbnQgSVBBRVhURU5TSU9OSU5ERVggICAgICAgICAgID0gMHhGQTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IEdSRUVLSU5ERVggICAgICAgICAgICAgICAgICA9IDB4RkI7CisgICAgZmluYWwgc3RhdGljIGludCBBUk1FTklBTklOREVYICAgICAgICAgICAgICAgPSAweEZDOworICAgIGZpbmFsIHN0YXRpYyBpbnQgSElSQUdBTkFJTkRFWCAgICAgICAgICAgICAgID0gMHhGRDsKKyAgICBmaW5hbCBzdGF0aWMgaW50IEtBVEFLQU5BSU5ERVggICAgICAgICAgICAgICA9IDB4RkU7CisgICAgZmluYWwgc3RhdGljIGludCBIQUxGV0lEVEhLQVRBS0FOQUlOREVYICAgICAgPSAweEZGOworCisgICAgZmluYWwgc3RhdGljIGludCBTREVGSU5FWCAgICAgICAgICAgICAgICAgICAgPSAweDBCOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU1JFU0VSVkVEICAgICAgICAgICAgICAgICAgID0gMHgwQzsgIC8vIHJlc2VydmVkIHZhbHVlCisgICAgZmluYWwgc3RhdGljIGludCBTUVVPVEVVICAgICAgICAgICAgICAgICAgICAgPSAweDBFOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0NIQU5HRVUgICAgICAgICAgICAgICAgICAgID0gMHgwRjsKKworICAgIGZpbmFsIHN0YXRpYyBpbnQgU1FVT1RFMCAgICAgICAgICAgICAgICAgICAgID0gMHgwMTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNRVU9URTEgICAgICAgICAgICAgICAgICAgICA9IDB4MDI7CisgICAgZmluYWwgc3RhdGljIGludCBTUVVPVEUyICAgICAgICAgICAgICAgICAgICAgPSAweDAzOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU1FVT1RFMyAgICAgICAgICAgICAgICAgICAgID0gMHgwNDsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNRVU9URTQgICAgICAgICAgICAgICAgICAgICA9IDB4MDU7CisgICAgZmluYWwgc3RhdGljIGludCBTUVVPVEU1ICAgICAgICAgICAgICAgICAgICAgPSAweDA2OworICAgIGZpbmFsIHN0YXRpYyBpbnQgU1FVT1RFNiAgICAgICAgICAgICAgICAgICAgID0gMHgwNzsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNRVU9URTcgICAgICAgICAgICAgICAgICAgICA9IDB4MDg7CisKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNDSEFOR0UwICAgICAgICAgICAgICAgICAgICA9IDB4MTA7CisgICAgZmluYWwgc3RhdGljIGludCBTQ0hBTkdFMSAgICAgICAgICAgICAgICAgICAgPSAweDExOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0NIQU5HRTIgICAgICAgICAgICAgICAgICAgID0gMHgxMjsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNDSEFOR0UzICAgICAgICAgICAgICAgICAgICA9IDB4MTM7CisgICAgZmluYWwgc3RhdGljIGludCBTQ0hBTkdFNCAgICAgICAgICAgICAgICAgICAgPSAweDE0OworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0NIQU5HRTUgICAgICAgICAgICAgICAgICAgID0gMHgxNTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNDSEFOR0U2ICAgICAgICAgICAgICAgICAgICA9IDB4MTY7CisgICAgZmluYWwgc3RhdGljIGludCBTQ0hBTkdFNyAgICAgICAgICAgICAgICAgICAgPSAweDE3OworCisgICAgZmluYWwgc3RhdGljIGludCBTREVGSU5FMCAgICAgICAgICAgICAgICAgICAgPSAweDE4OworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORTEgICAgICAgICAgICAgICAgICAgID0gMHgxOTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNERUZJTkUyICAgICAgICAgICAgICAgICAgICA9IDB4MUE7CisgICAgZmluYWwgc3RhdGljIGludCBTREVGSU5FMyAgICAgICAgICAgICAgICAgICAgPSAweDFCOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORTQgICAgICAgICAgICAgICAgICAgID0gMHgxQzsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFNERUZJTkU1ICAgICAgICAgICAgICAgICAgICA9IDB4MUQ7CisgICAgZmluYWwgc3RhdGljIGludCBTREVGSU5FNiAgICAgICAgICAgICAgICAgICAgPSAweDFFOworICAgIGZpbmFsIHN0YXRpYyBpbnQgU0RFRklORTcgICAgICAgICAgICAgICAgICAgID0gMHgxRjsKKworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBVbmljb2RlIG1vZGUgdGFncworICAgIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBmaW5hbCBzdGF0aWMgaW50IFVDSEFOR0UwICAgICAgICAgICAgICAgICAgICA9IDB4RTA7CisgICAgZmluYWwgc3RhdGljIGludCBVQ0hBTkdFMSAgICAgICAgICAgICAgICAgICAgPSAweEUxOworICAgIGZpbmFsIHN0YXRpYyBpbnQgVUNIQU5HRTIgICAgICAgICAgICAgICAgICAgID0gMHhFMjsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVDSEFOR0UzICAgICAgICAgICAgICAgICAgICA9IDB4RTM7CisgICAgZmluYWwgc3RhdGljIGludCBVQ0hBTkdFNCAgICAgICAgICAgICAgICAgICAgPSAweEU0OworICAgIGZpbmFsIHN0YXRpYyBpbnQgVUNIQU5HRTUgICAgICAgICAgICAgICAgICAgID0gMHhFNTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVDSEFOR0U2ICAgICAgICAgICAgICAgICAgICA9IDB4RTY7CisgICAgZmluYWwgc3RhdGljIGludCBVQ0hBTkdFNyAgICAgICAgICAgICAgICAgICAgPSAweEU3OworCisgICAgZmluYWwgc3RhdGljIGludCBVREVGSU5FMCAgICAgICAgICAgICAgICAgICAgPSAweEU4OworICAgIGZpbmFsIHN0YXRpYyBpbnQgVURFRklORTEgICAgICAgICAgICAgICAgICAgID0gMHhFOTsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVERUZJTkUyICAgICAgICAgICAgICAgICAgICA9IDB4RUE7CisgICAgZmluYWwgc3RhdGljIGludCBVREVGSU5FMyAgICAgICAgICAgICAgICAgICAgPSAweEVCOworICAgIGZpbmFsIHN0YXRpYyBpbnQgVURFRklORTQgICAgICAgICAgICAgICAgICAgID0gMHhFQzsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVERUZJTkU1ICAgICAgICAgICAgICAgICAgICA9IDB4RUQ7CisgICAgZmluYWwgc3RhdGljIGludCBVREVGSU5FNiAgICAgICAgICAgICAgICAgICAgPSAweEVFOworICAgIGZpbmFsIHN0YXRpYyBpbnQgVURFRklORTcgICAgICAgICAgICAgICAgICAgID0gMHhFRjsKKworICAgIGZpbmFsIHN0YXRpYyBpbnQgVVFVT1RFVSAgICAgICAgICAgICAgICAgICAgID0gMHhGMDsKKyAgICBmaW5hbCBzdGF0aWMgaW50IFVERUZJTkVYICAgICAgICAgICAgICAgICAgICA9IDB4RjE7CisgICAgZmluYWwgc3RhdGljIGludCBVUkVTRVJWRUQgICAgICAgICAgICAgICAgICAgPSAweEYyOyAgLy8gcmVzZXJ2ZWQgdmFsdWUKKworICAgIGZpbmFsIHN0YXRpYyBpbnQgQkxPQ0tTSVpFID0gMHhGRjsKKyAgICAKKyAgICAvKioKKyAgICAgKiBHZW5lcmF0ZSB0aGUgdGFibGUgdXNlZCBhcyBzT2Zmc2V0VGFibGUgaW4gU0NTVS4KKyAgICAgKiBUaGlzIHRhYmxlIGNvbnRhaW5zIHByZWZvcm1lZCBpbmRpY2VzIHNvIHdlIGNhbiBkbyBhcnJheSBsb29rdXBzIAorICAgICAqIGluc3RlYWQgb2YgY2FsY3VsYXRpb25zIGZvciBzcGVlZCBkdXJpbmcgZGVjb21wcmVzc2lvbi4KKyAgICAgKi8KKyAgICBzdGF0aWMgdm9pZCBwcmludE9mZnNldFRhYmxlKCkKKyAgICB7CisgICAgICAgIGludCAgICAgaSAgICAgICAgICAgPSAwOworCWludCBbXQlvZmZzZXRUYWJsZSA9IG5ldyBpbnQgWyBCTE9DS1NJWkUgKyAxIF07CisKKyAgICAgICAgLy8gMHgwMCBpcyByZXNlcnZlZAorCisgICAgICAgIC8vIGhhbGYgYmxvY2tzIGZyb20gVSswMDgwIHRvIFUrMzM4MAorICAgICAgICBmb3IoIGkgPSAweDAxOyBpIDwgMHg2ODsgaSsrICkKKyAgICAgICAgICAgIG9mZnNldFRhYmxlW2ldID0gaSAqIDB4ODA7CisJCisgICAgICAgIC8vIGhhbGYgYmxvY2tzIGZyb20gVStFMDAwIHRvIFUrRkY4MAorICAgICAgICBmb3IoIGkgPSAweDY4OyBpIDwgMHhBODsgaSsrICkKKyAgICAgICAgICAgIG9mZnNldFRhYmxlW2ldID0gKGkgKiAweDgwKSArIDB4QUMwMDsKKwkKKyAgICAgICAgLy8gMHhBOC4uMHhGOCBpcyByZXNlcnZlZAorIAorICAgICAgICBvZmZzZXRUYWJsZVsgTEFUSU5JTkRFWCBdID0gMHgwMEMwOworICAgICAgICBvZmZzZXRUYWJsZVsgSVBBRVhURU5TSU9OSU5ERVggXSA9IDB4MDI1MDsKKyAgICAgICAgb2Zmc2V0VGFibGVbIEdSRUVLSU5ERVggXSA9IDB4MDM3MDsKKyAgICAgICAgb2Zmc2V0VGFibGVbIEFSTUVOSUFOSU5ERVggXSA9IDB4MDUzMDsKKyAgICAgICAgb2Zmc2V0VGFibGVbIEhJUkFHQU5BSU5ERVggXSA9IDB4MzA0MDsKKyAgICAgICAgb2Zmc2V0VGFibGVbIEtBVEFLQU5BSU5ERVggXSA9IDB4MzBBMDsKKyAgICAgICAgb2Zmc2V0VGFibGVbIEhBTEZXSURUSEtBVEFLQU5BSU5ERVggXSA9IDB4RkY2MDsKKworICAgICAgICAvLyBkdW1wIHRoZSBnZW5lcmF0ZWQgdGFibGUKKwlTeXN0ZW0ub3V0LnByaW50bG4oInN0YXRpYyBpbnQgW10gc09mZnNldFRhYmxlID0geyIpOworICAgICAgICBmb3IoaSA9IDA7IGkgPCBvZmZzZXRUYWJsZS5sZW5ndGggLSAxOyBpKyspCisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG9mZnNldFRhYmxlW2ldKQorCQkJICAgICArICIsICIpOworICAgICAgICBmb3IoaSA9IG9mZnNldFRhYmxlLmxlbmd0aCAtIDE7IGkgPCBvZmZzZXRUYWJsZS5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIjB4IiArIEludGVnZXIudG9IZXhTdHJpbmcob2Zmc2V0VGFibGVbaV0pKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigifTsiKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2VuZXJhdGUgdGhlIHRhYmxlIHVzZWQgYXMgc1NpbmdsZVRhZ1RhYmxlIGluIFVuaWNvZGVDb21wcmVzc29yLgorICAgICAqIFRoaXMgdGFibGUgY29udGFpbnMgYm9vbGVhbiB2YWx1ZXMgaW5kaWNhdGluZyBpZiBhIGJ5dGUgaXMgYQorICAgICAqIHNpbmdsZS1ieXRlIG1vZGUgdGFnLgorICAgICAqLworICAgIHN0YXRpYyB2b2lkIHByaW50U2luZ2xlVGFnVGFibGUoKQorICAgIHsKKyAgICAgICAgaW50ICAgICAgICBpICAgICAgICAgICAgICA9IDA7CisJYm9vbGVhbiBbXSBzaW5nbGVUYWdUYWJsZSA9IG5ldyBib29sZWFuICBbIEJMT0NLU0laRSArIDEgXTsKKworICAgICAgICBmb3IoIGkgPSAweDAwOyBpIDw9IEJMT0NLU0laRTsgaSsrICkgeworICAgICAgICAgICAgc3dpdGNoKCBpICkgeworCQkKKwkgICAgY2FzZSBTUVVPVEVVOiAgY2FzZSBTQ0hBTkdFVTogCisJICAgIGNhc2UgU0RFRklORVg6IGNhc2UgU1JFU0VSVkVEOgorCSAgICBjYXNlIFNRVU9URTA6ICBjYXNlIFNRVU9URTE6ICAKKwkgICAgY2FzZSBTUVVPVEUyOiAgY2FzZSBTUVVPVEUzOgorCSAgICBjYXNlIFNRVU9URTQ6ICBjYXNlIFNRVU9URTU6ICAKKwkgICAgY2FzZSBTUVVPVEU2OiAgY2FzZSBTUVVPVEU3OgorCSAgICBjYXNlIFNDSEFOR0UwOiBjYXNlIFNDSEFOR0UxOiAKKwkgICAgY2FzZSBTQ0hBTkdFMjogY2FzZSBTQ0hBTkdFMzoKKwkgICAgY2FzZSBTQ0hBTkdFNDogY2FzZSBTQ0hBTkdFNTogCisJICAgIGNhc2UgU0NIQU5HRTY6IGNhc2UgU0NIQU5HRTc6CisJICAgIGNhc2UgU0RFRklORTA6IGNhc2UgU0RFRklORTE6IAorCSAgICBjYXNlIFNERUZJTkUyOiBjYXNlIFNERUZJTkUzOgorCSAgICBjYXNlIFNERUZJTkU0OiBjYXNlIFNERUZJTkU1OiAKKwkgICAgY2FzZSBTREVGSU5FNjogY2FzZSBTREVGSU5FNzoKKwkJc2luZ2xlVGFnVGFibGVbaV0gPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworCQkKKwkgICAgZGVmYXVsdDoKKwkJc2luZ2xlVGFnVGFibGVbaV0gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCQorICAgICAgICAvLyBkdW1wIHRoZSBnZW5lcmF0ZWQgdGFibGUKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJwcml2YXRlIHN0YXRpYyBib29sZWFuIFtdIHNTaW5nbGVUYWdUYWJsZSA9IHsiKTsKKyAgICAgICAgZm9yKGkgPSAwOyBpIDwgc2luZ2xlVGFnVGFibGUubGVuZ3RoIC0gMTsgaSsrKQorICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludChzaW5nbGVUYWdUYWJsZVtpXSArICIsICIpOworICAgICAgICBmb3IoaSA9IHNpbmdsZVRhZ1RhYmxlLmxlbmd0aCAtIDE7IGkgPCBzaW5nbGVUYWdUYWJsZS5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoc2luZ2xlVGFnVGFibGVbaV0pOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJ9OyIpOworICAgIH0KKyAgICAKKyAgICAKKyAgICAvKioKKyAgICAgKiBHZW5lcmF0ZSB0aGUgdGFibGUgdXNlZCBhcyBzVW5pY29kZVRhZ1RhYmxlIGluIAorICAgICAqIFRoaXMgdGFibGUgY29udGFpbnMgYm9vbGVhbiB2YWx1ZXMgaW5kaWNhdGluZyBpZiBhIGJ5dGUgaXMgYQorICAgICAqIHVuaWNvZGUgbW9kZSB0YWcuCisgICAgICovCisgICAgc3RhdGljIHZvaWQgcHJpbnRVbmljb2RlVGFnVGFibGUoKQorICAgIHsKKyAgICAgICAgaW50ICAgICAgICBpICAgICAgICAgICAgICAgPSAwOworCWJvb2xlYW4gW10gdW5pY29kZVRhZ1RhYmxlID0gbmV3IGJvb2xlYW4gIFsgQkxPQ0tTSVpFICsgMSBdOworCisgICAgICAgIGZvciggaSA9IDB4MDA7IGkgPD0gQkxPQ0tTSVpFOyBpKysgKSB7CisgICAgICAgICAgICBzd2l0Y2goIGkgKSB7CisJICAgIGNhc2UgVVFVT1RFVTogIGNhc2UgVURFRklORVg6IAorCSAgICBjYXNlIFVSRVNFUlZFRDoKKwkgICAgY2FzZSBVQ0hBTkdFMDogY2FzZSBVQ0hBTkdFMTogCisJICAgIGNhc2UgVUNIQU5HRTI6IGNhc2UgVUNIQU5HRTM6CisJICAgIGNhc2UgVUNIQU5HRTQ6IGNhc2UgVUNIQU5HRTU6IAorCSAgICBjYXNlIFVDSEFOR0U2OiBjYXNlIFVDSEFOR0U3OgorCSAgICBjYXNlIFVERUZJTkUwOiBjYXNlIFVERUZJTkUxOiAKKwkgICAgY2FzZSBVREVGSU5FMjogY2FzZSBVREVGSU5FMzoKKwkgICAgY2FzZSBVREVGSU5FNDogY2FzZSBVREVGSU5FNTogCisJICAgIGNhc2UgVURFRklORTY6IGNhc2UgVURFRklORTc6CisJCXVuaWNvZGVUYWdUYWJsZVtpXSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisJCQorCSAgICBkZWZhdWx0OgorCQl1bmljb2RlVGFnVGFibGVbaV0gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCQorICAgICAgICAvLyBkdW1wIHRoZSBnZW5lcmF0ZWQgdGFibGUKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJwcml2YXRlIHN0YXRpYyBib29sZWFuIFtdIHNVbmljb2RlVGFnVGFibGUgPSB7Iik7CisgICAgICAgIGZvcihpID0gMDsgaSA8IHVuaWNvZGVUYWdUYWJsZS5sZW5ndGggLSAxOyBpKyspCisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KHVuaWNvZGVUYWdUYWJsZVtpXSArICIsICIpOworICAgICAgICBmb3IoaSA9IHVuaWNvZGVUYWdUYWJsZS5sZW5ndGggLSAxOyBpIDwgdW5pY29kZVRhZ1RhYmxlLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCh1bmljb2RlVGFnVGFibGVbaV0pOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJ9OyIpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmd2KQorICAgIHsKKyAgICAgICAgcHJpbnRPZmZzZXRUYWJsZSgpOworICAgICAgICBwcmludFNpbmdsZVRhZ1RhYmxlKCk7CisgICAgICAgIHByaW50VW5pY29kZVRhZ1RhYmxlKCk7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rvb2xzL2NvbXByZXNzaW9uL3BhY2thZ2UuaHRtbCBiL3NyYy9jb20vaWJtL3Rvb2xzL2NvbXByZXNzaW9uL3BhY2thZ2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45N2M3ZTJiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdG9vbHMvY29tcHJlc3Npb24vcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8IS0tICBDb3B5cmlnaHQgKEMpIDIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisgIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90b29scy9jb21wcmVzc2lvbi9BdHRpYy9wYWNrYWdlLmh0bWwsdiAkCisgICRSZXZpc2lvbjogMS4xICQKKyAgJERhdGU6IDIwMDAvMDMvMTUgMjE6MzU6NTIgJAorLS0+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSI+CitUb29sIHVzZWQgdG8gcmVidWlsZCB0YWJsZXMgdXNlZCBieSB0aGUgVW5pY29kZSBjb21wcmVzc2lvbiBjbGFzc2VzLgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rvb2xzL25vcm1hbGl6ZXIvQ1BQV3JpdGVyLmphdmEgYi9zcmMvY29tL2libS90b29scy9ub3JtYWxpemVyL0NQUFdyaXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjNiZjk1MWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90b29scy9ub3JtYWxpemVyL0NQUFdyaXRlci5qYXZhCkBAIC0wLDAgKzEsMjE0IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90b29scy9ub3JtYWxpemVyL0F0dGljL0NQUFdyaXRlci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA5LzIxIDIyOjM3OjU1ICQgCisgKiAkUmV2aXNpb246IDEuNiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50b29scy5ub3JtYWxpemVyOworCitpbXBvcnQgY29tLmlibS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS51dGlsLio7CitpbXBvcnQgY29tLmlibS51dGlsLkNvbXBhY3RCeXRlQXJyYXk7CitpbXBvcnQgY29tLmlibS51dGlsLkNvbXBhY3RDaGFyQXJyYXk7CitpbXBvcnQgY29tLmlibS51dGlsLlV0aWxpdHk7CitpbXBvcnQgamF2YS5pby4qOworCisvKioKKyAqIENQUFdyaXRlciBrbm93cyBob3cgdG8gd3JpdGUgZGF0YSBzdHJ1Y3R1cmVzIG91dCB0byBDKysgc291cmNlIGFuZCBoZWFkZXIgZmlsZXMKKyAqLworY2xhc3MgQ1BQV3JpdGVyIGV4dGVuZHMgU291cmNlV3JpdGVyIHsKKyAgICBQcmludFdyaXRlciBzb3VyY2U7CisgICAgUHJpbnRXcml0ZXIgaGVhZGVyOworCisgICAgU3RyaW5nIGNsYXNzTmFtZTsKKworICAgIHB1YmxpYyBDUFBXcml0ZXIoU3RyaW5nIGZpbGVOYW1lLCBTdHJpbmcgY05hbWUpIHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24geworICAgICAgICBjbGFzc05hbWUgPSBjTmFtZTsKKyAgICAgICAgaW50IGkgPSBmaWxlTmFtZS5sYXN0SW5kZXhPZignLycpOworICAgICAgICBTdHJpbmcgbmFtZSA9IChpID49IDApID8gZmlsZU5hbWUuc3Vic3RyaW5nKGkrMSkgOiBmaWxlTmFtZTsKKworICAgICAgICAvLyBGaW5kIHRoZSBjbGFzcyBuYW1lCisgICAgICAgIGhlYWRlciA9IG5ldyBQcmludFdyaXRlcihuZXcgRmlsZU91dHB1dFN0cmVhbShmaWxlTmFtZSArICIuaCIpKTsKKyAgICAgICAgd3JpdGVIZWFkZXIoaGVhZGVyKTsKKyAgICAgICAgaGVhZGVyLnByaW50bG4oIiNpbmNsdWRlIFwidW5pY29kZS91dHlwZXMuaFwiIik7CisgICAgICAgIGhlYWRlci5wcmludGxuKCIjaW5jbHVkZSBcInVjbXA4LmhcIiIpOworICAgICAgICBoZWFkZXIucHJpbnRsbigiI2luY2x1ZGUgXCJ1Y21wMTYuaFwiIik7CisgICAgICAgIGhlYWRlci5wcmludGxuKCIiKTsKKyAgICAgICAgaGVhZGVyLnByaW50bG4oInN0cnVjdCAiICsgY2xhc3NOYW1lICsgIiB7Iik7ICAgLy8gInN0cnVjdCIgbWFrZXMgZXZlcnl0aGluZyBwdWJsaWMKKworICAgICAgICBzb3VyY2UgPSBuZXcgUHJpbnRXcml0ZXIobmV3IEZpbGVPdXRwdXRTdHJlYW0oZmlsZU5hbWUgKyAiLmNwcCIpKTsKKyAgICAgICAgd3JpdGVIZWFkZXIoc291cmNlKTsKKyAgICAgICAgc291cmNlLnByaW50bG4oIiNpbmNsdWRlIFwiIiArIG5hbWUgKyAiLmhcIiAiKTsKKyAgICAgICAgc291cmNlLnByaW50bG4oIiIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGNsb3NlKCkgeworICAgICAgICBoZWFkZXIucHJpbnRsbigifTsiKTsKKyAgICAgICAgaGVhZGVyLmNsb3NlKCk7CisgICAgICAgIHNvdXJjZS5jbG9zZSgpOworICAgICAgICBoZWFkZXIgPSBudWxsOworICAgICAgICBzb3VyY2UgPSBudWxsOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHdyaXRlKFN0cmluZyBuYW1lLCBzaG9ydCB2YWx1ZSkgeworICAgICAgICBoZWFkZXIucHJpbnRsbigiICAgIGVudW0geyAiICsgbmFtZSArICIgPSAiICsgdmFsdWUgKyAiIH07Iik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgd3JpdGUoU3RyaW5nIG5hbWUsIGludCB2YWx1ZSkgeworICAgICAgICBoZWFkZXIucHJpbnRsbigiICAgIGVudW0geyAiICsgbmFtZSArICIgPSAiICsgdmFsdWUgKyAiIH07Iik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgd3JpdGVIZXgoU3RyaW5nIG5hbWUsIGNoYXIgdmFsdWUpIHsKKyAgICAgICAgaGVhZGVyLnByaW50bG4oIiAgICBlbnVtIHsgIiArIG5hbWUgKyAiID0gMHgiICsgVXRpbGl0eS5oZXgodmFsdWUpICsgIiB9OyIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHdyaXRlSGV4KFN0cmluZyBuYW1lLCBpbnQgdmFsdWUpIHsKKyAgICAgICAgaGVhZGVyLnByaW50bG4oIiAgICBlbnVtIHsgIiArIG5hbWUgKyAiID0gMHgiICsgSW50ZWdlci50b1N0cmluZyh2YWx1ZSwxNikgKyAiIH07Iik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgd3JpdGUoU3RyaW5nIG5hbWUsIENvbXBhY3RDaGFyQXJyYXkgYXJyYXkpIHsKKyAgICAgICAgYXJyYXkuY29tcGFjdChmYWxzZSk7CisKKyAgICAgICAgU3RyaW5nIGluZGV4TmFtZSA9IG5hbWUgKyAiX2luZGV4IjsKKyAgICAgICAgU3RyaW5nIHZhbHVlTmFtZSA9IG5hbWUgKyAiX3ZhbHVlcyI7CisKKyAgICAgICAgd3JpdGUoaW5kZXhOYW1lLCBhcnJheS5nZXRJbmRleEFycmF5KCkpOworICAgICAgICB3cml0ZSh2YWx1ZU5hbWUsIGFycmF5LmdldFZhbHVlQXJyYXkoKSk7CisKKyAgICAgICAgaGVhZGVyLnByaW50bG4oIiIpOworICAgICAgICBoZWFkZXIucHJpbnRsbigiICAgIHN0YXRpYyBDb21wYWN0U2hvcnRBcnJheSBfIiArIG5hbWUgKyAiOyIpOworICAgICAgICBoZWFkZXIucHJpbnRsbigiIik7CisgICAgICAgIGhlYWRlci5wcmludGxuKCIgICAgc3RhdGljIGNvbnN0IENvbXBhY3RTaG9ydEFycmF5KiAiICsgbmFtZSArICI7Iik7CisKKyAgICAgICAgc291cmNlLnByaW50bG4oIiIpOworICAgICAgICBzb3VyY2UucHJpbnRsbigiQ29tcGFjdFNob3J0QXJyYXkgIiArCisgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZSArICI6Ol8iICsgbmFtZSArICI7Iik7CisgICAgICAgIHNvdXJjZS5wcmludGxuKCIiKTsKKyAgICAgICAgc291cmNlLnByaW50bG4oImNvbnN0IENvbXBhY3RTaG9ydEFycmF5KiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lICsgIjo6IiArIG5hbWUgKyAiID0gIik7CisgICAgICAgIHNvdXJjZS5wcmludGxuKCIgICAgdWNtcDE2X2luaXRBbGlhc1dpdGhCbG9ja1NoaWZ0KCYiICsgY2xhc3NOYW1lICsgIjo6XyIgKyBuYW1lICsgIiwiKTsKKyAgICAgICAgc291cmNlLnByaW50bG4oIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVpbnQxNl90KikiICsgaW5kZXhOYW1lICsgIiwiKTsKKyAgICAgICAgc291cmNlLnByaW50bG4oIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludDE2X3QqKSIgKyB2YWx1ZU5hbWUgKyAiLCIpOworICAgICAgICBzb3VyY2UucHJpbnRsbigiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgYXJyYXkuZ2V0VmFsdWVBcnJheSgpLmxlbmd0aCArICIsICIgKworICAgICAgICAgICAgICAgICAgICAgICAiMHgwMDAwLCAiICsgLy8gZGVmYXVsdCB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICBDb21wYWN0Q2hhckFycmF5LkJMT0NLU0hJRlQgKyAiKTsiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB3cml0ZShTdHJpbmcgbmFtZSwgQ29tcGFjdEJ5dGVBcnJheSBhcnJheSkgeworICAgICAgICBhcnJheS5jb21wYWN0KGZhbHNlKTsKKworICAgICAgICBTdHJpbmcgaW5kZXhOYW1lID0gbmFtZSArICJfaW5kZXgiOworICAgICAgICBTdHJpbmcgdmFsdWVOYW1lID0gbmFtZSArICJfdmFsdWVzIjsKKworICAgICAgICB3cml0ZShpbmRleE5hbWUsIGFycmF5LmdldEluZGV4QXJyYXkoKSk7CisgICAgICAgIHdyaXRlKHZhbHVlTmFtZSwgYXJyYXkuZ2V0VmFsdWVBcnJheSgpKTsKKworICAgICAgICBoZWFkZXIucHJpbnRsbigiIik7CisgICAgICAgIGhlYWRlci5wcmludGxuKCIgICAgc3RhdGljIENvbXBhY3RCeXRlQXJyYXkgXyIgKyBuYW1lICsgIjsiKTsKKyAgICAgICAgaGVhZGVyLnByaW50bG4oIiIpOworICAgICAgICBoZWFkZXIucHJpbnRsbigiICAgIHN0YXRpYyBjb25zdCBDb21wYWN0Qnl0ZUFycmF5KiAiICsgbmFtZSArICI7Iik7CisKKyAgICAgICAgc291cmNlLnByaW50bG4oIiIpOworICAgICAgICBzb3VyY2UucHJpbnRsbigiQ29tcGFjdEJ5dGVBcnJheSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lICsgIjo6XyIgKyBuYW1lICsgIjsiKTsKKyAgICAgICAgc291cmNlLnByaW50bG4oIiIpOworICAgICAgICBzb3VyY2UucHJpbnRsbigiY29uc3QgQ29tcGFjdEJ5dGVBcnJheSogIiArCisgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZSArICI6OiIgKyBuYW1lICsgIiA9ICIpOworICAgICAgICBzb3VyY2UucHJpbnRsbigiICAgIHVjbXA4X2luaXRBbGlhcygmIiArIGNsYXNzTmFtZSArICI6Ol8iICsgbmFtZSArICIsIik7CisgICAgICAgIHNvdXJjZS5wcmludGxuKCIgICAgICAgICAgICAgICAgICAgICh1aW50MTZfdCopIiArIGluZGV4TmFtZSArICIsIik7CisgICAgICAgIHNvdXJjZS5wcmludGxuKCIgICAgICAgICAgICAgICAgICAgIChpbnQ4X3QqKSIgKyB2YWx1ZU5hbWUgKyAiLCIpOworICAgICAgICBzb3VyY2UucHJpbnRsbigiICAgICAgICAgICAgICAgICAgICAiICsgYXJyYXkuZ2V0VmFsdWVBcnJheSgpLmxlbmd0aCArICIpOyIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHdyaXRlKFN0cmluZyBuYW1lLCBTdHJpbmdCdWZmZXIgc3RyKSB7CisgICAgICAgIHdyaXRlKG5hbWUsIHN0ci50b1N0cmluZygpLnRvQ2hhckFycmF5KCkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHdyaXRlKFN0cmluZyBuYW1lLCBjaGFyW10gYXJyYXkpIHsKKyAgICAgICAgaGVhZGVyLnByaW50bG4oIiIpOworICAgICAgICBoZWFkZXIucHJpbnRsbigiICAgIHN0YXRpYyBjb25zdCB1aW50MTZfdCAiICsgbmFtZSArICJbXTsiKTsKKworICAgICAgICBzb3VyY2UucHJpbnRsbigiIik7CisgICAgICAgIHNvdXJjZS5wcmludGxuKCJjb25zdCB1aW50MTZfdCAiICsgY2xhc3NOYW1lICsgIjo6IiArIG5hbWUgKyAiW10gPSB7Iik7CisKKyAgICAgICAgc291cmNlLnByaW50KCIgICAgIik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChpID4gMCAmJiBpICUgOCA9PSAwKSB7CisgICAgICAgICAgICAgICAgc291cmNlLnByaW50KFV0aWxpdHkuTElORV9TRVBBUkFUT1IgKyAiICAgICIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc291cmNlLnByaW50KCIweCIgKyBVdGlsaXR5LmhleChhcnJheVtpXSkgKyAiLCAiKTsKKyAgICAgICAgfQorICAgICAgICBzb3VyY2UucHJpbnRsbigifTsiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB3cml0ZShTdHJpbmcgbmFtZSwgc2hvcnRbXSBhcnJheSkgeworICAgICAgICBoZWFkZXIucHJpbnRsbigiIik7CisgICAgICAgIGhlYWRlci5wcmludGxuKCIgICAgc3RhdGljIGNvbnN0IHVpbnQxNl90ICIgKyBuYW1lICsgIltdOyIpOworCisgICAgICAgIHNvdXJjZS5wcmludGxuKCIiKTsKKyAgICAgICAgc291cmNlLnByaW50bG4oImNvbnN0IHVpbnQxNl90ICIgKyBjbGFzc05hbWUgKyAiOjoiICsgbmFtZSArICJbXSA9IHsiKTsKKworICAgICAgICBzb3VyY2UucHJpbnQoIiAgICAiKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKGkgPiAwICYmIGkgJSA4ID09IDApIHsKKyAgICAgICAgICAgICAgICBzb3VyY2UucHJpbnQoVXRpbGl0eS5MSU5FX1NFUEFSQVRPUiArICIgICAgIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzb3VyY2UucHJpbnQoIjB4IiArIFV0aWxpdHkuaGV4KChjaGFyKWFycmF5W2ldKSArICIsICIpOworICAgICAgICB9CisgICAgICAgIHNvdXJjZS5wcmludGxuKCJ9OyIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHdyaXRlKFN0cmluZyBuYW1lLCBpbnRbXSBhcnJheSkgeworICAgICAgICBoZWFkZXIucHJpbnRsbigiIik7CisgICAgICAgIGhlYWRlci5wcmludGxuKCIgICAgc3RhdGljIGNvbnN0IGludDMyX3QgIiArIG5hbWUgKyAiW107Iik7CisKKyAgICAgICAgc291cmNlLnByaW50bG4oIiIpOworICAgICAgICBzb3VyY2UucHJpbnRsbigiY29uc3QgaW50MzJfdCAiICsgY2xhc3NOYW1lICsgIjo6IiArIG5hbWUgKyAiW10gPSB7Iik7CisKKyAgICAgICAgc291cmNlLnByaW50KCIgICAgIik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChpID4gMCAmJiBpICUgOCA9PSAwKSB7CisgICAgICAgICAgICAgICAgc291cmNlLnByaW50KFV0aWxpdHkuTElORV9TRVBBUkFUT1IgKyAiICAgICIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc291cmNlLnByaW50KCIweCIgKyBJbnRlZ2VyLnRvU3RyaW5nKGFycmF5W2ldLDE2KSArICIsICIpOworICAgICAgICB9CisgICAgICAgIHNvdXJjZS5wcmludGxuKCJ9OyIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHdyaXRlKFN0cmluZyBuYW1lLCBieXRlW10gYXJyYXkpIHsKKyAgICAgICAgaGVhZGVyLnByaW50bG4oIiIpOworICAgICAgICBoZWFkZXIucHJpbnRsbigiICAgIHN0YXRpYyBjb25zdCB1aW50OF90ICIgKyBuYW1lICsgIltdOyIpOworCisgICAgICAgIHNvdXJjZS5wcmludGxuKCIiKTsKKyAgICAgICAgc291cmNlLnByaW50bG4oImNvbnN0IHVpbnQ4X3QgIiArIGNsYXNzTmFtZSArICI6OiIgKyBuYW1lICsgIltdID0geyIpOworCisgICAgICAgIHNvdXJjZS5wcmludCgiICAgICIpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoaSA+IDAgJiYgaSAlIDggPT0gMCkgeworICAgICAgICAgICAgICAgIHNvdXJjZS5wcmludChVdGlsaXR5LkxJTkVfU0VQQVJBVE9SICsgIiAgICAiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNvdXJjZS5wcmludCgiMHgiICsgaGV4MihhcnJheVtpXSkgKyAiLCAiKTsKKyAgICAgICAgfQorICAgICAgICBzb3VyY2UucHJpbnRsbigifTsiKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmdCdWZmZXIgX19idWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAvLyBUaGlzIG1ldGhvZCBub3QgbXVsdGl0aHJlYWQgc2FmZSEKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgaGV4MihpbnQgeCkgeworICAgICAgICBfX2J1Zi5zZXRMZW5ndGgoMCk7CisgICAgICAgIF9fYnVmLmFwcGVuZChoZXgxKHg+PjQpKS5hcHBlbmQoaGV4MSh4KSk7CisgICAgICAgIHJldHVybiBfX2J1Zi50b1N0cmluZygpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgaGV4MShpbnQgeCkgeworICAgICAgICByZXR1cm4gIjAxMjM0NTY3ODlBQkNERUYiLmNoYXJBdCh4ICYgMHhGKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90b29scy9ub3JtYWxpemVyL0ZDREJ1aWxkZXIuamF2YSBiL3NyYy9jb20vaWJtL3Rvb2xzL25vcm1hbGl6ZXIvRkNEQnVpbGRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjFlNzNmNDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90b29scy9ub3JtYWxpemVyL0ZDREJ1aWxkZXIuamF2YQpAQCAtMCwwICsxLDEzNyBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90b29scy9ub3JtYWxpemVyL0F0dGljL0ZDREJ1aWxkZXIuamF2YSx2ICQgCisqICREYXRlOiAyMDAxLzAzLzI4IDAwOjAxOjEzICQgCisqICRSZXZpc2lvbjogMS40ICQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworcGFja2FnZSBjb20uaWJtLnRvb2xzLm5vcm1hbGl6ZXI7CisKK2ltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkV3JpdGVyOworaW1wb3J0IGphdmEuaW8uRmlsZVdyaXRlcjsKK2ltcG9ydCBqYXZhLmlvLldyaXRlcjsKK2ltcG9ydCBjb20uaWJtLnV0aWwuQ2hhclRyaWU7CitpbXBvcnQgY29tLmlibS50ZXh0LlVDaGFyYWN0ZXI7CitpbXBvcnQgY29tLmlibS50ZXh0LlVURjE2OworaW1wb3J0IGNvbS5pYm0udGV4dC5Ob3JtYWxpemVyOworCisvKioKKyogQ2xhc3MgdG8gZ2VuZXJhdGUgbW9kaWZpZWQgY2hlY2tGQ0QgZGF0YSBmb3IgY29sbGF0aW9uLgorKiBEYXRhIGdlbmVyYXRlZCBpcyB1c2VkIG9ubHkgaW4gaW50ZXJuYWwgSUNVIGNvbGxhdGlvbi4KKyogRkNEIGlzIHRoZSBzZXQgb2Ygc3RyaW5ncyBzdWNoIHRoYXQgZm9yIGVhY2ggc3RyaW5nIGlmIHlvdSBzaW1wbHkgZGVjb21wb3NlZAorKiBhbnkgY29tcG9zaXRlcyAoaW5jbHVkaW5nIHNpbmdsZXRvbiBjb21wb3NpdGVzKSB3aXRob3V0IGNhbm9uaWNhbCByZW9yZGVyaW5nLgorKiBGQ0QgaXMgbm90IGEgbm9ybWFsaXphdGlvbiBmb3JtLCBzaW5jZSB0aGVyZSdzIG5vIHVuaXF1ZW5lc3MuCisqLworcHVibGljIGNsYXNzIEZDREJ1aWxkZXIKK3sKKyAgLy8gcHVibGljIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAKKyAgLyoqCisgICogY29uc3RydWN0b3Igd2l0aCBkZWZhdWx0IG91dHB1dCBmaWxlIHBhdGgKKyAgKi8KKyAgcHVibGljIEZDREJ1aWxkZXIoKQorICB7CisgIH0KKyAgCisgIC8qKgorICAqIEJ1aWxkaW5nIG1ldGhvZC4KKyAgKiBFYWNoIHVuaWNvZGUgY2hhcmFjdGVyIHdpbGwgYmUgdXNlZCB0byBnZW5lcmF0ZSBkYXRhLCBvdXRwdXQgdG8gdGhlIGRlZmF1bHQKKyAgKiBmaWxlIHBhdGggIAorICAqLworICBwdWJsaWMgdm9pZCBidWlsZCgpCisgIHsKKyAgICBidWlsZChERUZBVUxUX09VVFBVVF9QQVRIXyk7CisgIH0KKyAgCisgIC8qKgorICAqIEJ1aWxkaW5nIG1ldGhvZC4KKyAgKiBFYWNoIHVuaWNvZGUgY2hhcmFjdGVyIHdpbGwgYmUgdXNlZCB0byBnZW5lcmF0ZSBkYXRhLgorICAqIEBwYXJhbSBvdXRwdXQgZmlsZSBwYXRoCisgICovCisgIHB1YmxpYyB2b2lkIGJ1aWxkKFN0cmluZyBvdXRwdXQpCisgIHsKKyAgICBjaGFyIHJlc3VsdFtdID0gbmV3IGNoYXJbVUNoYXJhY3Rlci5NQVhfVkFMVUUgKyAxXTsKKyAgICAKKyAgICBTdHJpbmcgY3N0ciwKKyAgICAgICAgICAgbmZkOworICAgIGZvciAoaW50IGNoID0gVUNoYXJhY3Rlci5NSU5fVkFMVUU7IGNoIDw9IFVDaGFyYWN0ZXIuTUFYX1ZBTFVFOyBjaCArKykgeworICAgICAgcmVzdWx0W2NoXSA9IGdldEZDRChjaCk7CisgICAgfQorICAgIAorICAgIENoYXJUcmllIHRyaWUgPSBuZXcgQ2hhclRyaWUocmVzdWx0KTsKKyAgICAgIAorICAgIC8vIHRlc3RpbmcsIGNoZWNraW5nIHRyaWUgdmFsdWVzCisgICAgZm9yIChpbnQgY2ggPSBVQ2hhcmFjdGVyLk1JTl9WQUxVRTsgY2ggPD0gVUNoYXJhY3Rlci5NQVhfVkFMVUU7IGNoICsrKSB7CisgICAgICBpZiAodHJpZS5nZXRWYWx1ZShjaCkgIT0gZ2V0RkNEKGNoKSkKKyAgICAgIHsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJlcnJvciBhdCAweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGNoKSArICIgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRGQ0QoY2gpKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAgCisgICAgdHJ5CisgICAgeworICAgICAgRmlsZVdyaXRlciBmID0gbmV3IEZpbGVXcml0ZXIob3V0cHV0KTsKKyAgICAgIEJ1ZmZlcmVkV3JpdGVyIHcgPSBuZXcgQnVmZmVyZWRXcml0ZXIoZik7CisgICAgICBTdHJpbmcgcyA9IHRyaWUudG9TdHJpbmcoKTsKKyAgICAgIHcud3JpdGUocyk7CisgICAgICB3LmNsb3NlKCk7CisgICAgfQorICAgIGNhdGNoKEV4Y2VwdGlvbiBlKQorICAgIHsKKyAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgfQorICB9CisgIAorICAvKioKKyAgKiBNYWluIG1ldGhvZAorICAqLworICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnW10pCisgIHsKKyAgICBGQ0RCdWlsZGVyIGZjZGIgPSBuZXcgRkNEQnVpbGRlcigpOworICAgIGZjZGIuYnVpbGQoKTsKKyAgfQorICAKKyAgLy8gcHJpdmF0ZSBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIAorICAvKioKKyAgKiBSZXRyaWV2ZWQgdGhlIEZDRGNoZWNrIHZhbHVlIG9mIHRoZSBhcmd1bWVudCBjb2RlcG9pbnQuCisgICogZihjaCkgPSBjb21iaW5pbmcgY2xhc3Mgb2YgCisgICogKGZpcnN0IGNvZGVwb2ludCBpbiAoTkZEIG9mIGNoKSkgfCAobGFzdCBjb2RlIHBvaW50IGluIChORkQgb2YgY2gpKQorICAqIEBwYXJhbSBjaCBjaGFyYWN0ZXIgdG8gZ2V0IEZDRCBmcm9tCisgICovCisgIHByaXZhdGUgY2hhciBnZXRGQ0QoaW50IGNoKQorICB7CisgICAgU3RyaW5nIGNzdHIgPSBVQ2hhcmFjdGVyLnRvU3RyaW5nKGNoKSwKKyAgICAgICAgICAgbmZkID0gTm9ybWFsaXplci5kZWNvbXBvc2UoY3N0ciwgZmFsc2UsIDApOworICAgIGludCBsYXN0aW5kZXggPSBVVEYxNi5jb3VudENvZGVQb2ludChuZmQpIC0gMTsKKyAgICBpbnQgZmlyc3RjaCA9IFVURjE2LmNoYXJBdENvZGVQb2ludE9mZnNldChuZmQsIDApOworICAgIGludCBsYXN0Y2ggPSBVVEYxNi5jaGFyQXRDb2RlUG9pbnRPZmZzZXQobmZkLCBsYXN0aW5kZXgpOworICAgIHJldHVybiAoY2hhcikoKFVDaGFyYWN0ZXIuZ2V0Q29tYmluaW5nQ2xhc3MoZmlyc3RjaCkgPDwgTEVBRF9DQ19TSElGVF8pIHwKKyAgICAgICAgICAgICAgICAgIChVQ2hhcmFjdGVyLmdldENvbWJpbmluZ0NsYXNzKGxhc3RjaCkgJiBMQVNUX0JZVEVfTUFTS18pKTsKKyAgfQorCisgIC8vIHByaXZhdGUgZGF0YSBtZW1iZXJzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAKKyAgLyoqCisgICogT3V0cHV0IGZpbGUgcGF0aAorICAqLworICBwcml2YXRlIGZpbmFsIFN0cmluZyBERUZBVUxUX09VVFBVVF9QQVRIXyA9ICJmY2RjaGVjay50eHQiOworICAKKyAgLyoqCisgICogTGVhZCBjb21iaW5pbmcgY2xhc3Mgc2hpZnQKKyAgKi8KKyAgcHJpdmF0ZSBmaW5hbCBpbnQgTEVBRF9DQ19TSElGVF8gPSA4OworICAKKyAgLyoqCisgICogTGFzdCBieXRlIG1hc2sKKyAgKi8KKyAgcHJpdmF0ZSBmaW5hbCBpbnQgTEFTVF9CWVRFX01BU0tfID0gMHhGRjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90b29scy9ub3JtYWxpemVyL0phdmFXcml0ZXIuamF2YSBiL3NyYy9jb20vaWJtL3Rvb2xzL25vcm1hbGl6ZXIvSmF2YVdyaXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ3OWUxYzQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90b29scy9ub3JtYWxpemVyL0phdmFXcml0ZXIuamF2YQpAQCAtMCwwICsxLDEwOSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdG9vbHMvbm9ybWFsaXplci9BdHRpYy9KYXZhV3JpdGVyLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDcvMTIgMTY6NDE6MjYgJCAKKyAqICRSZXZpc2lvbjogMS40ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRvb2xzLm5vcm1hbGl6ZXI7CisKKy8vaW1wb3J0IGNvbS5pYm0udGV4dC4qOworaW1wb3J0IGNvbS5pYm0udXRpbC5VdGlsaXR5OworaW1wb3J0IGNvbS5pYm0udXRpbC5Db21wYWN0Q2hhckFycmF5OworaW1wb3J0IGNvbS5pYm0udXRpbC5Db21wYWN0Qnl0ZUFycmF5OworaW1wb3J0IGphdmEuaW8uKjsKKworLyoqCisgKiBKYXZhV3JpdGVyIGtub3dzIGhvdyB0byB3cml0ZSBkYXRhIHN0cnVjdHVyZXMgb3V0IHRvIGEgSmF2YSBzb3VyY2UgZmlsZQorICovCitjbGFzcyBKYXZhV3JpdGVyIGV4dGVuZHMgU291cmNlV3JpdGVyIHsKKyAgICBQcmludFdyaXRlciBvdXQ7CisKKyAgICBwdWJsaWMgSmF2YVdyaXRlcihTdHJpbmcgbmFtZSkgdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiB7CisgICAgICAgIC8vIEZpbmQgdGhlIGNsYXNzIG5hbWUKKyAgICAgICAgaW50IGNJbmRleCA9IG5hbWUubGFzdEluZGV4T2YoJy8nKTsKKyAgICAgICAgU3RyaW5nIGNOYW1lID0gKGNJbmRleCA+PSAwKSA/IG5hbWUuc3Vic3RyaW5nKGNJbmRleCsxKSA6IG5hbWU7CisKKyAgICAgICAgb3V0ID0gbmV3IFByaW50V3JpdGVyKG5ldyBGaWxlT3V0cHV0U3RyZWFtKG5hbWUgKyAiLmphdmEiKSk7CisKKyAgICAgICAgd3JpdGVIZWFkZXIob3V0KTsKKyAgICAgICAgb3V0LnByaW50bG4oImNsYXNzICIgKyBjTmFtZSArICIgeyIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGNsb3NlKCkgeworICAgICAgICBvdXQucHJpbnRsbigifSIpOworICAgICAgICBvdXQuY2xvc2UoKTsKKyAgICAgICAgb3V0ID0gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB3cml0ZShTdHJpbmcgbmFtZSwgc2hvcnQgdmFsdWUpIHsKKyAgICAgICAgb3V0LnByaW50bG4oIiAgICBzdGF0aWMgZmluYWwgc2hvcnQgIiArIG5hbWUgKyAiID0gIiArIHZhbHVlICsgIjsiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB3cml0ZShTdHJpbmcgbmFtZSwgaW50IHZhbHVlKSB7CisgICAgICAgIG91dC5wcmludGxuKCIgICAgc3RhdGljIGZpbmFsIGludCAiICsgbmFtZSArICIgPSAiICsgdmFsdWUgKyAiOyIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHdyaXRlSGV4KFN0cmluZyBuYW1lLCBjaGFyIHZhbHVlKSB7CisgICAgICAgIG91dC5wcmludGxuKCIgICAgc3RhdGljIGZpbmFsIGNoYXIgIiArIG5hbWUgKyAiID0gMHgiICsgSW50ZWdlci50b1N0cmluZygoaW50KXZhbHVlLDE2KSArICI7Iik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgd3JpdGVIZXgoU3RyaW5nIG5hbWUsIGludCB2YWx1ZSkgeworICAgICAgICBvdXQucHJpbnRsbigiICAgIHN0YXRpYyBmaW5hbCBpbnQgIiArIG5hbWUgKyAiID0gMHgiICsgSW50ZWdlci50b1N0cmluZyh2YWx1ZSwxNikgKyAiOyIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHdyaXRlKFN0cmluZyBuYW1lLCBDb21wYWN0Q2hhckFycmF5IGFycmF5KSB7CisgICAgICAgIGFycmF5LmNvbXBhY3QoZmFsc2UpOworICAgICAgICBvdXQucHJpbnRsbigiIik7CisgICAgICAgIG91dC5wcmludGxuKCIgICAgc3RhdGljIGZpbmFsIENvbXBhY3RDaGFyQXJyYXkgIiArIG5hbWUgKyAiID0gbmV3IENvbXBhY3RDaGFyQXJyYXkoIik7CisgICAgICAgIG91dC5wcmludGxuKFV0aWxpdHkuZm9ybWF0Rm9yU291cmNlKFV0aWxpdHkuYXJyYXlUb1JMRVN0cmluZyhhcnJheS5nZXRJbmRleEFycmF5KCkpKSk7CisgICAgICAgIG91dC5wcmludGxuKCIgICAgICAgICwiICk7CisgICAgICAgIG91dC5wcmludGxuKFV0aWxpdHkuZm9ybWF0Rm9yU291cmNlKFV0aWxpdHkuYXJyYXlUb1JMRVN0cmluZyhhcnJheS5nZXRWYWx1ZUFycmF5KCkpKSk7CisgICAgICAgIG91dC5wcmludGxuKCIgICAgICAgICk7IiApOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHdyaXRlKFN0cmluZyBuYW1lLCBDb21wYWN0Qnl0ZUFycmF5IGFycmF5KSB7CisgICAgICAgIGFycmF5LmNvbXBhY3QoZmFsc2UpOworICAgICAgICBvdXQucHJpbnRsbigiIik7CisgICAgICAgIG91dC5wcmludGxuKCIgICAgc3RhdGljIGZpbmFsIENvbXBhY3RCeXRlQXJyYXkgIiArIG5hbWUgKyAiID0gbmV3IENvbXBhY3RCeXRlQXJyYXkoIik7CisgICAgICAgIG91dC5wcmludGxuKFV0aWxpdHkuZm9ybWF0Rm9yU291cmNlKFV0aWxpdHkuYXJyYXlUb1JMRVN0cmluZyhhcnJheS5nZXRJbmRleEFycmF5KCkpKSk7CisgICAgICAgIG91dC5wcmludGxuKCIgICAgICAgICwiICk7CisgICAgICAgIG91dC5wcmludGxuKFV0aWxpdHkuZm9ybWF0Rm9yU291cmNlKFV0aWxpdHkuYXJyYXlUb1JMRVN0cmluZyhhcnJheS5nZXRWYWx1ZUFycmF5KCkpKSk7CisgICAgICAgIG91dC5wcmludGxuKCIgICAgICAgICk7IiApOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHdyaXRlKFN0cmluZyBuYW1lLCBTdHJpbmdCdWZmZXIgc3RyKSB7CisgICAgICAgIG91dC5wcmludGxuKCIiKTsKKyAgICAgICAgb3V0LnByaW50bG4oIiAgICBzdGF0aWMgZmluYWwgU3RyaW5nICIgKyBuYW1lICsgIiA9ICIpOworICAgICAgICBvdXQucHJpbnRsbihVdGlsaXR5LmZvcm1hdEZvclNvdXJjZShzdHIudG9TdHJpbmcoKSkpOworICAgICAgICBvdXQucHJpbnRsbigiICAgIDsiKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB3cml0ZShTdHJpbmcgbmFtZSwgY2hhcltdIGFycmF5KSB7CisgICAgICAgIG91dC5wcmludGxuKCIiKTsKKyAgICAgICAgb3V0LnByaW50bG4oIiAgICBzdGF0aWMgZmluYWwgY2hhcltdICIgKyBuYW1lICsgIiA9IFV0aWxpdHkuUkxFU3RyaW5nVG9DaGFyQXJyYXkoIik7CisgICAgICAgIG91dC5wcmludGxuKFV0aWxpdHkuZm9ybWF0Rm9yU291cmNlKFV0aWxpdHkuYXJyYXlUb1JMRVN0cmluZyhhcnJheSkpKTsKKyAgICAgICAgb3V0LnByaW50bG4oIiAgICApOyIpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHdyaXRlKFN0cmluZyBuYW1lLCBpbnRbXSBhcnJheSkgeworICAgICAgICBvdXQucHJpbnRsbigiIik7CisgICAgICAgIG91dC5wcmludGxuKCIgICAgc3RhdGljIGZpbmFsIGludFtdICIgKyBuYW1lICsgIiA9IFV0aWxpdHkuUkxFU3RyaW5nVG9JbnRBcnJheSgiKTsKKyAgICAgICAgb3V0LnByaW50bG4oVXRpbGl0eS5mb3JtYXRGb3JTb3VyY2UoVXRpbGl0eS5hcnJheVRvUkxFU3RyaW5nKGFycmF5KSkpOworICAgICAgICBvdXQucHJpbnRsbigiICAgICk7Iik7CisgICAgfQorCisgICAgdm9pZCB3cml0ZUhlYWRlcihQcmludFdyaXRlciBvdXQpIHsKKyAgICAgICAgc3VwZXIud3JpdGVIZWFkZXIob3V0KTsKKyAgICAgICAgb3V0LnByaW50bG4oIiIpOworICAgICAgICBvdXQucHJpbnRsbigicGFja2FnZSBjb20uaWJtLnRleHQ7Iik7CisgICAgICAgIG91dC5wcmludGxuKCJpbXBvcnQgY29tLmlibS51dGlsLio7Iik7CisgICAgICAgIG91dC5wcmludGxuKCIiKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rvb2xzL25vcm1hbGl6ZXIvTXV0YWJsZUNoYXIuamF2YSBiL3NyYy9jb20vaWJtL3Rvb2xzL25vcm1hbGl6ZXIvTXV0YWJsZUNoYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42MDBlMTk2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdG9vbHMvbm9ybWFsaXplci9NdXRhYmxlQ2hhci5qYXZhCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3Rvb2xzL25vcm1hbGl6ZXIvQXR0aWMvTXV0YWJsZUNoYXIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwNDoxNzo1NiAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisvLyBNdXRhYmxlQ2hhci5qYXZhCisKK3BhY2thZ2UgY29tLmlibS50b29scy5ub3JtYWxpemVyOworCitpbXBvcnQgY29tLmlibS50ZXh0Lio7CitpbXBvcnQgamF2YS5sYW5nLkNvbXBhcmFibGU7CitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CisKK2NsYXNzIE11dGFibGVDaGFyIGltcGxlbWVudHMgQ2xvbmVhYmxlLCBDb21wYXJhYmxlLCBTZXJpYWxpemFibGUgeworCisgICAgcHVibGljIGNoYXIgdmFsdWU7CisKKyAgICBwdWJsaWMgTXV0YWJsZUNoYXIoY2hhciBuZXdWYWx1ZSkgeworICAgICAgICB2YWx1ZSA9IG5ld1ZhbHVlOworICAgIH0KKyAgICBwdWJsaWMgTXV0YWJsZUNoYXIgc2V0KGNoYXIgbmV3VmFsdWUpIHsKKyAgICAgICAgdmFsdWUgPSBuZXdWYWx1ZTsKKyAgICAgICAgcmV0dXJuIHRoaXM7CisgICAgfQorICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlID09ICgoTXV0YWJsZUNoYXIpb3RoZXIpLnZhbHVlOworICAgIH0KKyAgICBwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiBTdHJpbmcudmFsdWVPZih2YWx1ZSk7CisgICAgfQorICAgIHB1YmxpYyBpbnQgY29tcGFyZVRvKE9iamVjdCBiKSB7CisgICAgICAgIGNoYXIgY2ggPSAoKE11dGFibGVDaGFyKWIpLnZhbHVlOworICAgICAgICByZXR1cm4gdmFsdWUgPT0gY2ggPyAwIDogdmFsdWUgPCBjaCA/IC0xIDogMTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rvb2xzL25vcm1hbGl6ZXIvTm9ybWFsaXplckJ1aWxkZXIuamF2YSBiL3NyYy9jb20vaWJtL3Rvb2xzL25vcm1hbGl6ZXIvTm9ybWFsaXplckJ1aWxkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44NDAwZDFlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdG9vbHMvbm9ybWFsaXplci9Ob3JtYWxpemVyQnVpbGRlci5qYXZhCkBAIC0wLDAgKzEsMTE1MiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdG9vbHMvbm9ybWFsaXplci9BdHRpYy9Ob3JtYWxpemVyQnVpbGRlci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAxLzAzLzE1IDIzOjM2OjAyICQgCisgKiAkUmV2aXNpb246IDEuMTIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS50b29scy5ub3JtYWxpemVyOworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmEudXRpbC4qOworaW1wb3J0IGNvbS5pYm0udGV4dC4qOworaW1wb3J0IGNvbS5pYm0udXRpbC5Db21wYWN0Qnl0ZUFycmF5OworaW1wb3J0IGNvbS5pYm0udXRpbC5Db21wYWN0Q2hhckFycmF5OworaW1wb3J0IGNvbS5pYm0udXRpbC5VdGlsaXR5OworaW1wb3J0IGNvbS5pYm0uaWN1LmludGVybmFsLlVJbmZvOworCitwdWJsaWMgZmluYWwgY2xhc3MgTm9ybWFsaXplckJ1aWxkZXIKK3sKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICB0cnkgeworICAgICAgICAgICAgTm9ybWFsaXplckJ1aWxkZXIgZm9vID0gbmV3IE5vcm1hbGl6ZXJCdWlsZGVyKGFyZ3MpOworICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgZSkgeworICAgICAgICAgICAgU3lzdGVtLmVyci5wcmludGxuKGUuZ2V0TG9jYWxpemVkTWVzc2FnZSgpKTsKKyAgICAgICAgICAgIGUucHJpbnRTdGFja1RyYWNlKCk7CisgICAgICAgICAgICBTeXN0ZW0uaW4ucmVhZCgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBVSW5mbyB1aW5mbzsKKworICAgIC8qKgorICAgICAqIE1hcCBjaGFyLT5TdHJpbmcuICBFYWNoIGVudHJ5IG1hcHMgYSBjaGFyYWN0ZXIgd2l0aCBhCisgICAgICogZGVjb21wb3NpdGlvbiAoZWl0aGVyIGNhbm9uaWNhbCBvciBjb21wYXRpYmlsaXR5KSB0byB0aGF0CisgICAgICogZGVjb21wb3NpdGlvbi4gIFRoZSBkZWNvbXBvc2l0aW9uIGlzIGluIGNhbm9uaWNhbCBvcmRlci4KKyAgICAgKi8KKyAgICBwcml2YXRlIERlY29tcE1hcCBkZWNvbXBzID0gbmV3IERlY29tcE1hcCgpOworCisgICAgLyoqCisgICAgICogTWFwIG9mIGNoYXJhY3RlcnMgd2hvc2UgZnVsbCBjYW5vbmljYWwgZGVjb21wb3NpdGlvbiBpcworICAgICAqIERJRkZFUkVOVCBmcm9tIHRoZWlyIGZ1bGwgY29tcGF0aWJpbGl0eSBkZWNvbXBvc2l0aW9uLgorICAgICAqLworICAgIHByaXZhdGUgRGVjb21wTWFwIGV4cGxvZGVDb21wYXQgPSBuZXcgRGVjb21wTWFwKCk7CisKKyAgICAvKioKKyAgICAgKiBNYXAgb2YgY2hhcmFjdGVycyB3aXRoIGEgZGVjb21wb3NpdGlvbiB0aGF0IGFyZSBuZWl0aGVyCisgICAgICogaW4gZXhwbG9kZUNvbXBhdCBub3IgaW4gcGVybXV0ZWRDb21wb3NpdGlvbnMuCisgICAgICovCisgICAgcHJpdmF0ZSBEZWNvbXBNYXAgZXhwbG9kZU9ubHkgICA9IG5ldyBEZWNvbXBNYXAoKTsKKworICAgIC8qKgorICAgICAqIE1hcCBvZiBTdHJpbmctPmNoYXIgb2YgcGVybXV0YXRpb25zIHRoYXQgY29tcG9zZSB0byBhCisgICAgICogY2hhcmFjdGVyLiAgVGhpcyBkb2VzIG5vdCBpbmNsdWRlIHNpbmdsZXRvbnMgb3Igb3RoZXIKKyAgICAgKiBjb21wb3NpdGlvbiBleGNsdXNpb25zLiAgSXQgaXMgYW4gaW52ZXJzZSBsaXN0LCB3aXRoIHZhbGlkCisgICAgICogcGVybXV0YXRpb25zLCBmb3IgY2Fub25pY2FsIGRlY29tcG9zaXRpb24uCisgICAgICovCisgICAgcHJpdmF0ZSBDb21wTWFwIHBlcm11dGVkQ29tcG9zaXRpb25zID0gbmV3IENvbXBNYXAoKTsKKyAgICBwcml2YXRlIENvbXBNYXAgYmluYXJ5Q29tcG9zaXRpb25zID0gbmV3IENvbXBNYXAoKTsKKworICAgIC8qKgorICAgICAqIEEgc2V0IG9mIGNoYXJhY3RlcnMgdGhhdCBmb3JtIHRoZSBiYXNlIG9mIGEgY29tYmluaW5nCisgICAgICogc2VxdWVuY2UuCisgICAgICovCisgICAgcHJpdmF0ZSBDaGFyU2V0IGJhc2VzID0gbmV3IENoYXJTZXQoKTsKKworICAgIC8qKgorICAgICAqIEEgc2V0IG9mIGNoYXJhY3RlcnMgdGhhdCBmb3JtIHRoZSBjb21iaW5pbmcgY2hhcmFjdGVyIG9mCisgICAgICogYSBjb21iaW5pbmcgc2VxdWVuY2UuCisgICAgICovCisgICAgcHJpdmF0ZSBDaGFyU2V0IGNvbWJpbmluZyA9IG5ldyBDaGFyU2V0KCk7CisKKyAgICBwcml2YXRlIE1hcCBwYWlyRXhwbG9zaW9ucyA9IG5ldyBIYXNoTWFwKCk7CisKKyAgICBwcml2YXRlIGJvb2xlYW4gZlZlcmJvc2UgPSBmYWxzZTsKKyAgICBwcml2YXRlIGJvb2xlYW4gZldyaXRlRGF0YSA9IGZhbHNlOworICAgIHByaXZhdGUgYm9vbGVhbiBmU2hvd1NpemVzID0gZmFsc2U7CisgICAgcHJpdmF0ZSBib29sZWFuIGZQcm9tcHQgPSBmYWxzZTsKKyAgICBwcml2YXRlIGJvb2xlYW4gZkphdmEgPSB0cnVlOworICAgIHByaXZhdGUgYm9vbGVhbiBmQ1BQID0gZmFsc2U7CisgICAgcHJpdmF0ZSBTdHJpbmcgZk91dERpciA9IG51bGw7IC8vIG91dHB1dCBkaXJlY3RvcnkgZm9yIGVpdGhlciBKYXZhIG9yIEMrKworCisgICAgLyoqCisgICAgICogVGhlIGhpZ2hlc3QgVW5pY29kZSBjaGFyYWN0ZXIgdGhhdCBoYXMgYSBjYW5vbmljYWwKKyAgICAgKiBkZWNvbXBvc2l0aW9uLiAgKGkuZS4gbGFyZ2VzdCBjaGFyIHRoYXQgY2FuIHJlc3VsdCBmcm9tIGEKKyAgICAgKiBwcmltYXJ5IGNhbm9uaWNhbCBjb21wb3NpdGlvbi4pICBUaGlzIGlzIHRoZSBsYXJnZXN0IGNoYXIgaW4KKyAgICAgKiBwZXJtdXRlZENvbXBvc2l0aW9ucy4KKyAgICAgKi8KKyAgICBjaGFyIGxhcmdlc3RDaGFyID0gMDsKKworICAgIHB1YmxpYyBOb3JtYWxpemVyQnVpbGRlcihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICB7CisgICAgICAgIC8vIFBhcnNlIG15IGNvbW1hbmQgbGluZQorICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKyspCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmIChhcmdzW2ldLmVxdWFscygiLWRhdGEiKSkgeworICAgICAgICAgICAgICAgIHVpbmZvID0gbmV3IFVJbmZvKGFyZ3NbKytpXSwgYXJnc1srK2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGFyZ3NbaV0uZXF1YWxzKCItd3JpdGUiKSkgeworICAgICAgICAgICAgICAgIGZXcml0ZURhdGEgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYXJnc1tpXS5lcXVhbHMoIi12ZXJib3NlIikgfHwgYXJnc1tpXS4gZXF1YWxzKCItdiIpKSB7CisgICAgICAgICAgICAgICAgZlZlcmJvc2UgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYXJnc1tpXS5lcXVhbHMoIi1zaXplIikpIHsKKyAgICAgICAgICAgICAgICBmU2hvd1NpemVzID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGFyZ3NbaV0uZXF1YWxzKCItcHJvbXB0IikpIHsKKyAgICAgICAgICAgICAgICBmUHJvbXB0ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGFyZ3NbaV0uZXF1YWxzKCItamF2YSIpKSB7CisgICAgICAgICAgICAgICAgZkphdmEgPSB0cnVlOworICAgICAgICAgICAgICAgIGZDUFAgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGFyZ3NbaV0uZXF1YWxzKCItY3BwIikpIHsKKyAgICAgICAgICAgICAgICBmQ1BQID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBmSmF2YSA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYXJnc1tpXS5lcXVhbHMoIi1vdXRkaXIiKSkgeworICAgICAgICAgICAgICAgIGZPdXREaXIgPSBhcmdzWysraV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHVpbmZvID09IG51bGwpIHsKKyAgICAgICAgICAgIHVpbmZvID0gbmV3IFVJbmZvKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZPdXREaXIgPT0gbnVsbCkgeworICAgICAgICAgICAgZk91dERpciA9IGZKYXZhID8gInNyYy9jb20vaWJtL3RleHQvIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogIi4vIjsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWZPdXREaXIuZW5kc1dpdGgoIi8iKSkgeyBmT3V0RGlyICs9ICcvJzsgfQorCisgICAgICAgIGJvb2xlYW4gY2Fub25pY2FsT25seSA9IHRydWU7CisKKyAgICAgICAgLy8gQnVpbGQgZGVjb21wcywgYSBjaGFyLT5TdHJpbmcgbWFwcGluZyBvZiBjaGFyYWN0ZXJzIHRvIHRoZWlyCisgICAgICAgIC8vIGRlY29tcG9zaXRpb25zLCBlaXRoZXIgY2Fub25pY2FsIG9yIGNvbXBhdGliaWxpdHkuCisgICAgICAgIGNyZWF0ZURlY29tcG9zaXRpb25zKCk7CisKKyAgICAgICAgb3V0digiXG5HZW5lcmF0aW5nIHBlcm11dGVkIGNvbXBvc2l0aW9ucy4uLiIpOworCisgICAgICAgIC8vIEZvcm0gdGhlIGxpc3Qgb2YgYWxsIHRoZSBwZXJtdXRlZCBzZXF1ZW5jZXMgdGhhdCBhcmUKKyAgICAgICAgLy8gY2Fub25pY2FsbHkgZXF1aXZhbGVudCB0byB0aGUgY2Fub25pY2FsIGRlY29tcG9zaXRpb25zLiAgQXMKKyAgICAgICAgLy8gYSBieS1wcm9kdWN0LCBmaW5kIG91dCB3aGljaCBhcmUgbm90IGNvbWJpbmluZyBjaGFyYWN0ZXIKKyAgICAgICAgLy8gc2VxdWVuY2VzLgorCisgICAgICAgIGZvciAoY2hhciBjaCA9IDA7IGNoIDwgMHhGRkZGOyBjaCsrKSB7CisgICAgICAgICAgICBTdHJpbmcgZGVjb21wID0gZGVjb21wcy5nZXQoY2gpOworCisgICAgICAgICAgICBpZiAoZGVjb21wICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBib29sZWFuIGRvbmUgPSBmYWxzZTsKKworICAgICAgICAgICAgICAgIGlmICghdWluZm8uZ2V0RnVsbERlY29tcG9zaXRpb24oY2gsdHJ1ZSkuZXF1YWxzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbmZvLmdldEZ1bGxEZWNvbXBvc2l0aW9uKGNoLGZhbHNlKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBleHBsb2RlQ29tcGF0LnB1dChjaCwgdWluZm8uZ2V0RnVsbERlY29tcG9zaXRpb24oY2gsIGZhbHNlKSk7CisgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBJdCdzIGFsd2F5cyBhIGNvbWJpbmluZyBiYXNlIHNlcXVlbmNlLCBzbyByZW1vdmVkIGxhc3QgY2hlY2sgLSBsaXUKKyAgICAgICAgICAgICAgICBpZiAodWluZm8uaGFzQ2Fub25pY2FsRGVjb21wb3NpdGlvbihjaCkgJiYgZGVjb21wLmxlbmd0aCgpID4gMQorICAgICAgICAgICAgICAgICAgICAmJiAhdWluZm8uaXNFeGNsdWRlZENvbXBvc2l0aW9uKGNoKSAvKiYmIHVpbmZvLmlzQ0JTKGRlY29tcCkqLykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGlmIChkZWNvbXAubGVuZ3RoKCkgPD0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgcGVybXV0ZWRDb21wb3NpdGlvbnMucHV0KGRlY29tcCwgY2gpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogQ3JlYXRlIGEgY29tcHJlaGVuc2l2ZSBsaXN0IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBwZXJtdXRhdGlvbnMuICBBc3N1bWUgdGhlIGZpcnN0IGNoYXIgaXMgYQorICAgICAgICAgICAgICAgICAgICAgICAgICogYmFzZSBjaGFyLCBzbyBkb24ndCBwZXJtdXRlIGl0IGludG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBtaWRkbGUgb2YgdGhlIHN0cmluZyAtLSBqdXN0IGNvbmNhdGVuYXRlIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgKiBvbnRvIHRoZSBmcm9udC4gIEhvd2V2ZXIsIHRoZXJlIG1heSBiZQorICAgICAgICAgICAgICAgICAgICAgICAgICogZW1iZWRkZWQgYmFzZSBjaGFyYWN0ZXJzLCBzbyB3ZSBkbyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBmdXJ0aGVyIGNoZWNrIGZvciBjYW5vbmljYWwgZGVjb21wb3NpdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICogZXF1aXZhbGVuY2UgYmVsb3cuICovCisgICAgICAgICAgICAgICAgICAgICAgICBMaXN0IGFsdGVybmF0aXZlcyA9IGNvbmNhdChkZWNvbXAuY2hhckF0KDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bWJsZShkZWNvbXAuc3Vic3RyaW5nKDEsIGRlY29tcC5sZW5ndGgoKSkpKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhbHRlcm5hdGl2ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHZhcmlhbnQgPSAoU3RyaW5nKWFsdGVybmF0aXZlcy5nZXQoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG5vcm1hbGl6ZWQgPSB1aW5mby5maXhDYW5vbmljYWwodmFyaWFudCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobm9ybWFsaXplZC5lcXVhbHMoZGVjb21wKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtdXRlZENvbXBvc2l0aW9ucy5wdXQodmFyaWFudCwgY2gpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBsYXJnZXN0Q2hhciA9IGNoOworICAgICAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCFkb25lKSB7CisgICAgICAgICAgICAgICAgICAgIGV4cGxvZGVPbmx5LnB1dChjaCwgZGVjb21wKTsgICAgLy8gRGlzcGFyYWdlZAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIG91dHYoIlxuTGFyZ2VzdCBjb21wb3NlZCBjaGFyOiAiICsgVXRpbGl0eS5oZXgobGFyZ2VzdENoYXIpKTsKKworICAgICAgICAvLyBGb3JtIHRoZSBiaW5hcnkgY29tcG9zaXRpb25zCisgICAgICAgIG91dHYoIlxuR2VuZXJhdGluZyBwYWlyd2lzZSBjb21wb3NpdGlvbnMuLi4iKTsKKworICAgICAgICBJdGVyYXRvciBsaXN0ID0gcGVybXV0ZWRDb21wb3NpdGlvbnMua2V5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgd2hpbGUgKGxpc3QuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBTdHJpbmcgZGVjb21wID0gKFN0cmluZylsaXN0Lm5leHQoKTsKKyAgICAgICAgICAgIGNoYXIgY2ggPSBwZXJtdXRlZENvbXBvc2l0aW9ucy5nZXQoZGVjb21wKTsKKworICAgICAgICAgICAgaWYgKGRlY29tcC5sZW5ndGgoKSA+IDIpIHsKKyAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBjb21wb3NpdGlvbiBvZiBtb3JlIHRoYW4gdHdvIGNoYXJhY3RlcnMsCisgICAgICAgICAgICAgICAgLy8gc2VlIGlmIGl0cyBpbml0aWFsIHBvcnRpb24gaXMgYWxzbyBhIGNvbXBvc2l0aW9uLiAgSWYgc28sIHRoYXQgbGV0cworICAgICAgICAgICAgICAgIC8vIHVzIGJ1aWxkIHVwIHRoaXMgY29tcG9zZWQgY2hhcmFjdGVyIGl0ZXJhdGl2ZWx5LgorICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IGRlY29tcC5sZW5ndGgoKS0xOyBpID4gMTsgLS1pKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBwYXJ0aWFsID0gZGVjb21wLnN1YnN0cmluZygwLGkpOworICAgICAgICAgICAgICAgICAgICBjaGFyIHBhcnRpYWxNYXAgPSBwZXJtdXRlZENvbXBvc2l0aW9ucy5nZXQocGFydGlhbCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwYXJ0aWFsTWFwICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlY29tcCA9IHBhcnRpYWxNYXAgKyBkZWNvbXAuc3Vic3RyaW5nKGkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGVjb21wLmxlbmd0aCgpIDw9IDIpIHsKKyAgICAgICAgICAgICAgICBiaW5hcnlDb21wb3NpdGlvbnMucHV0KGRlY29tcCwgY2gpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAgICAgIC8vIFRoZSBjb21wb3NpdGlvbiB0YWtlcyBtb3JlIHRoYW4gdHdvIGNoYXJhY3RlcnMsIGFuZCB0aGVyZSdzCisgICAgICAgICAgICAgICAgLy8gbm8gd2F5IHRvIGJ1aWxkIGl0IHVwIGZyb20gc21hbGxlciBvbmVzLgorICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAgICAgaWYgKGRlY29tcC5lcXVhbHModWluZm8uZml4Q2Fub25pY2FsKGRlY29tcCkpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGRlY29tcCBpcyBpbiBjYW5vbmljYWwgb3JkZXIsIHdlJ3JlIGluIHRyb3VibGUsCisgICAgICAgICAgICAgICAgICAgIC8vIHNpbmNlIHRoYXQgbWVhbnMgdGhlcmUncyBubyB3YXkgdG8gZ2VuZXJhdGUgdGhpcyBjb21wb3NlZAorICAgICAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXIgZnJvbSBpdHMgY2Fub25pY2FsbHkgZGVjb21wb3NlZCBlcXVpdmFsZW50LgorICAgICAgICAgICAgICAgICAgICBlcnIoIk5vIHBhaXJ3aXNlIGNvbXBvc2Ugb2YgIiArIFV0aWxpdHkuaGV4KGRlY29tcCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgPiAiICsgVXRpbGl0eS5oZXgoY2gpICsgIiAiICsgdWluZm8uZ2V0TmFtZShjaCx0cnVlKSApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGRlY29tcCBpcyAqbm90KiBpbiBjYW5vbmljYWwgb3JkZXIsIGl0J3Mgbm90IGFzCisgICAgICAgICAgICAgICAgICAgIC8vIGJhZCwgc2luY2UgY29tcG9zaXRpb24gd2lsbCBzdGlsbCB3b3JrIGFzIGxvbmcgYXMKKyAgICAgICAgICAgICAgICAgICAgd2FybigiTm8gcGFpcndpc2UgY29tcG9zZSBvZiBub24tY2Fub24gIiArIFV0aWxpdHkuaGV4KGRlY29tcCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgPiAiICsgVXRpbGl0eS5oZXgoY2gpICsgIiAiICsgdWluZm8uZ2V0TmFtZShjaCx0cnVlKSApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYmFzZXMuYWRkKGRlY29tcC5jaGFyQXQoMCkpOworCisgICAgICAgICAgICAvLyBhZGQgdG8gbGlzdCBvZiBhbGwgY29tYmluaW5nIGNoYXJhY3RlcnMgaW4gY29tcG9zaXRlcworICAgICAgICAgICAgZm9yIChpbnQgcSA9IDE7IHEgPCBkZWNvbXAubGVuZ3RoKCk7ICsrcSkgeworICAgICAgICAgICAgICAgIGNvbWJpbmluZy5hZGQoZGVjb21wLmNoYXJBdChxKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworCisgICAgICAgIC8vIEdlbmVyYXRlIHRoZSBwYWlyd2lzZSBleHBsb3Npb25zLCB3aGVyZSBhIGNvbXBvc2VkIGNoYXIgKyBjb21iaW5pbmcgY2hhcgorICAgICAgICAvLyB0cmFuc2Zvcm1zIGludG8gYSBkaWZmZXJlbnQgcGFpciBvZiBjaGFyYWN0ZXJzLCB1c3VhbGx5IGJlY2F1c2UgdGhlCisgICAgICAgIC8vIGNhbm9uaWNhbCBjb21iaW5pbmcgY2xhc3NlcyBhcmUgcmV2ZXJzZWQuCisKKyAgICAgICAgb3V0digiXG5HZW5lcmF0aW5nIGV4cGxvZGluZyBwYWlycy4uLi4iKTsKKworICAgICAgICBMaXN0IGJpbmFyeVZhbHVlcyA9IG5ldyBBcnJheUxpc3QoYmluYXJ5Q29tcG9zaXRpb25zLnZhbHVlcygpKTsKKyAgICAgICAgQ29sbGVjdGlvbnMuc29ydChiaW5hcnlWYWx1ZXMpOworCisgICAgICAgIGZvciAoY2hhciBhZGRPbiA9IDA7IGFkZE9uIDwgMHhGRkZGOyBhZGRPbisrKSB7CisgICAgICAgICAgICBpZiAoY29tYmluaW5nLmNvbnRhaW5zKGFkZE9uKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBsaXN0ID0gYmluYXJ5VmFsdWVzLml0ZXJhdG9yKCk7CisKKyAgICAgICAgICAgICAgICB3aGlsZSAobGlzdC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgTXV0YWJsZUNoYXIgdW5pY2hhciA9IChNdXRhYmxlQ2hhcilsaXN0Lm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGNoU3RyID0gU3RyaW5nLnZhbHVlT2YodW5pY2hhci52YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBzb3VyY2UgPSBjaFN0ciArIGFkZE9uOworCisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBjb21wID0gYmluYXJ5Q29tcG9zaXRpb24oc291cmNlKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoY29tcC5sZW5ndGgoKSA9PSAxKSBjb250aW51ZTsgLy8gZG9uJ3QgY2FyZSBpZiBjb21iaW5lcworICAgICAgICAgICAgICAgICAgICBpZiAoY29tcC5jaGFyQXQoMCkgPT0gYWRkT24gfHwgY29tcC5jaGFyQXQoMSkgPT0gYWRkT24pIGNvbnRpbnVlOyAvLyByZWFycmFuZ2VzCisKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFzb3VyY2UuZXF1YWxzKGNvbXApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGVjb21wID0gZnVsbERlY29tcG9zaXRpb24oc291cmNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhaXJFeHBsb3Npb25zLnB1dChzb3VyY2UsY29tcCk7CisgICAgICAgICAgICAgICAgICAgICAgICBiYXNlcy5hZGQodW5pY2hhcik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBidWlsZERlY29tcERhdGEoKTsKKyAgICAgICAgYnVpbGRDb21wb3NlRGF0YSgpOworICAgICAgICBvdXR2KCJTdWNjZXNzISIpOworCisgICAgICAgIGlmIChmUHJvbXB0KSB7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlxuSGl0IGFueSBrZXkgdG8gY29udGludWUuLi4iKTsKKyAgICAgICAgICAgIFN5c3RlbS5pbi5yZWFkKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGZ1bGxEZWNvbXBvc2l0aW9uKFN0cmluZyBzKSB7CisgICAgICAgIHJldHVybiBmdWxsRGVjb21wb3NpdGlvbihzLCBuZXcgU3RyaW5nQnVmZmVyKCkpLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZ0J1ZmZlciBmdWxsRGVjb21wb3NpdGlvbihjaGFyIGNoLCBTdHJpbmdCdWZmZXIgb3V0cHV0KSB7CisgICAgICAgIFN0cmluZyB2YWx1ZSA9IGRlY29tcHMuZ2V0KGNoKTsKKyAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHsKKyAgICAgICAgICAgIGJ1YmJsZUFwcGVuZChvdXRwdXQsIGNoKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGJ1YmJsZUFwcGVuZChvdXRwdXQsIHZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gb3V0cHV0OworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmdCdWZmZXIgZnVsbERlY29tcG9zaXRpb24oU3RyaW5nIHMsIFN0cmluZ0J1ZmZlciBvdXRwdXQpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGZ1bGxEZWNvbXBvc2l0aW9uKHMuY2hhckF0KGkpLG91dHB1dCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG91dHB1dDsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGJpbmFyeUNvbXBvc2l0aW9uKFN0cmluZyBzcikgeworICAgICAgICAvLyBzZXQgdXAgZGVjb21wb3NlZCBzdHJpbmcsIGluaXQgdmFyaWFibGVzCisgICAgICAgIFN0cmluZ0J1ZmZlciBvdXRwdXQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIFN0cmluZ0J1ZmZlciBkZWNvbXAgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAgICAgaWYgKHNyLmxlbmd0aCgpID09IDApIHJldHVybiBvdXRwdXQudG9TdHJpbmcoKTsKKworICAgICAgICAvLyBGaXJzdCBnZW5lcmF0ZSB0aGUgZnVsbCBkZWNvbXBvc2l0aW9uIG9mIHRoZSBpbnB1dCBzdHJpbmcKKyAgICAgICAgZnVsbERlY29tcG9zaXRpb24oc3IsIGRlY29tcCk7CisgICAgICAgIGludCBiYXNlUG9zaXRpb24gPSAwOworICAgICAgICBjaGFyIGJhc2UgPSBkZWNvbXAuY2hhckF0KDApOworICAgICAgICBvdXRwdXQuYXBwZW5kKGJhc2UpOworCisgICAgICAgIC8vIGhhbmRsZSBkZWdlbmVyYXRlIGNhc2UtLW5vIGJhc2UgY2hhcmFjdGVyIGF0IHN0YXJ0CisgICAgICAgIGlmICh1aW5mby5nZXRDYW5vbmljYWxDbGFzcyhiYXNlKSAhPSAwKSB7CisgICAgICAgICAgICAvLyBsYXRlcgorICAgICAgICB9CisKKyAgICAgICAgLy8gbG9vcCB0aHJvdWdoLCBjb21wb3NpbmcgaXRlbXMgd2l0aCBiYXNlCisgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgZGVjb21wLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGNoYXIgY2ggPSBkZWNvbXAuY2hhckF0KGkpOworICAgICAgICAgICAgc2hvcnQgY2FuID0gdWluZm8uZ2V0Q2Fub25pY2FsQ2xhc3MoY2gpOworCisgICAgICAgICAgICBjaGFyIHZhbHVlID0gYmluYXJ5Q29tcG9zaXRpb25zLmdldChTdHJpbmcudmFsdWVPZihiYXNlKSArIGNoKTsKKworICAgICAgICAgICAgaWYgKHZhbHVlICE9IDAgJiYgbm9PYnN0cnVjdGlvbnMob3V0cHV0LCBiYXNlUG9zaXRpb24sIGNhbikpIHsKKyAgICAgICAgICAgICAgICBiYXNlID0gdmFsdWU7CisgICAgICAgICAgICAgICAgb3V0cHV0LnNldENoYXJBdChiYXNlUG9zaXRpb24sIGJhc2UpOworICAgICAgICAgICAgfSBlbHNlIGlmIChjYW4gPT0gMCkgeworICAgICAgICAgICAgICAgIGJhc2VQb3NpdGlvbiA9IG91dHB1dC5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBiYXNlID0gY2g7CisgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZChjaCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGJ1YmJsZUFwcGVuZChvdXRwdXQsIGNoLCBjYW4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBvdXRwdXQudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBub09ic3RydWN0aW9ucyhTdHJpbmdCdWZmZXIgYnVmZmVyLCBpbnQgcG9zLCBzaG9ydCBjYW4pIHsKKyAgICAgICAgZm9yIChpbnQgaiA9IGJ1ZmZlci5sZW5ndGgoKS0xOyBqID4gcG9zOyAtLWopIHsKKyAgICAgICAgICAgIGlmIChjYW4gPT0gdWluZm8uZ2V0Q2Fub25pY2FsQ2xhc3MoYnVmZmVyLmNoYXJBdChqKSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYnViYmxlQXBwZW5kKFN0cmluZ0J1ZmZlciBidWZmZXIsIGNoYXIgY2gsIHNob3J0IGNhbikgeworICAgICAgICBmb3IgKGludCBqID0gYnVmZmVyLmxlbmd0aCgpLTE7IGogPj0gMDsgLS1qKSB7CisgICAgICAgICAgICBpZiAoY2FuID49IHVpbmZvLmdldENhbm9uaWNhbENsYXNzKGJ1ZmZlci5jaGFyQXQoaikpKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyLmluc2VydChqICsgMSwgY2gpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBidWZmZXIuaW5zZXJ0KDAsIGNoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBidWJibGVBcHBlbmQoU3RyaW5nQnVmZmVyIGJ1ZmZlciwgY2hhciBjaCkgeworICAgICAgICBidWJibGVBcHBlbmQoYnVmZmVyLCBjaCwgdWluZm8uZ2V0Q2Fub25pY2FsQ2xhc3MoY2gpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBidWJibGVBcHBlbmQoU3RyaW5nQnVmZmVyIGJ1ZmZlciwgU3RyaW5nIHMpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGJ1YmJsZUFwcGVuZChidWZmZXIsIHMuY2hhckF0KGkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFN0cmluZyBnZXREZWNvbXBvc2l0aW9uKGNoYXIgY2gpIHsKKyAgICAgICAgcmV0dXJuIGRlY29tcHMuZ2V0KGNoKTsKKyAgICB9CisKKworICAgIC8qKgorICAgICAqIEdlbmVyYXRlIGEgTWFwIG9mIGFsbCBkZWNvbXBvc2l0aW9ucyBpbiBVbmljb2RlLiAgVGhlIGtleXMgaW4KKyAgICAgKiB0aGUgbWFwIGFyZSBNdXRhYmxlQ2hhciBvYmplY3RzLCBvbmUgZm9yIGVhY2ggY2hhcmFjdGVyIHRoYXQKKyAgICAgKiBoYXMgYSBkZWNvbXBvc2l0aW9uLiAgVGhlIHZhbHVlcyBhcmUgU3RyaW5nIG9iamVjdHMgY29udGFpbmluZworICAgICAqIHRoZSBmdWxsIGRlY29tcG9zaXRpb24gZm9yIHRoZSBjaGFyYWN0ZXIsIGluIGNhbm9uaWNhbCBvcmRlci4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgY3JlYXRlRGVjb21wb3NpdGlvbnMoKQorICAgIHsKKyAgICAgICAgb3V0digiXG5HZW5lcmF0aW5nIEZ1bGwgZGVjb21wb3NpdGlvbnMuLi4iKTsKKyAgICAgICAgU3RyaW5nQnVmZmVyIHRlbXAgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKyAgICAgICAgc2hvcnQgY29tcGF0Q291bnQ9MCwgY2Fub25Db3VudD0wOworCisgICAgICAgIGZvciAoY2hhciBjaCA9IDA7IGNoIDwgMHhGRkZGOyArK2NoKSB7CisgICAgICAgICAgICBpZiAoY2ggPj0gJ1x1NEUwMCcgJiYgY2ggPD0gJ1x1RDdBMycpIGNvbnRpbnVlOyAvLyBza2lwIGlkZW9zCisKKyAgICAgICAgICAgIHNob3J0IGNhdGVnb3J5ID0gdWluZm8uZ2V0Q2F0ZWdvcnkoY2gpOworCisgICAgICAgICAgICBpZiAoY2F0ZWdvcnkgPT0gdWluZm8uVU5BU1NJR05FRCkgY29udGludWU7IC8vc2tpcCByZXNlcnZlZAorICAgICAgICAgICAgaWYgKGNhdGVnb3J5ID09IHVpbmZvLkNPTlRST0wpIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGNhdGVnb3J5ID09IHVpbmZvLkZPUk1BVCkgY29udGludWU7CisgICAgICAgICAgICBpZiAoY2F0ZWdvcnkgPT0gdWluZm8uUFJJVkFURV9VU0UpIGNvbnRpbnVlOworICAgICAgICAgICAgaWYgKGNhdGVnb3J5ID09IHVpbmZvLlNVUlJPR0FURSkgY29udGludWU7CisKKyAgICAgICAgICAgIGJvb2xlYW4gY2Fub24gPSB1aW5mby5oYXNDYW5vbmljYWxEZWNvbXBvc2l0aW9uKGNoKTsKKyAgICAgICAgICAgIGJvb2xlYW4gY29tcGF0ID0gdWluZm8uaGFzQ29tcGF0aWJpbGl0eURlY29tcG9zaXRpb24oY2gpOworCisgICAgICAgICAgICBpZiAoY2Fub24pIGNhbm9uQ291bnQrKzsKKyAgICAgICAgICAgIGlmIChjb21wYXQpIGNvbXBhdENvdW50Kys7CisKKyAgICAgICAgICAgIGlmIChjYW5vbiB8fCBjb21wYXQpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgZGVjb21wID0gdWluZm8uZ2V0RnVsbERlY29tcG9zaXRpb24oY2gsIGNhbm9uKTsKKyAgICAgICAgICAgICAgICB0ZW1wLnNldExlbmd0aCgwKTsKKyAgICAgICAgICAgICAgICB0ZW1wLmFwcGVuZChkZWNvbXApOworICAgICAgICAgICAgICAgIHVpbmZvLmZpeENhbm9uaWNhbCh0ZW1wKTsgLy8gcHV0IGludG8gY2Fub25pY2FsIG9yZGVyCisKKyAgICAgICAgICAgICAgICBkZWNvbXBzLnB1dChjaCwgdGVtcC50b1N0cmluZygpICk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBNb2RpZnkgYSBsaXN0IGluIHBsYWNlIGJ5IHByZXBlbmRpbmcgdGhlIGdpdmVuIGNoYXJhY3RlciB0byBhbGwKKyAgICAgKiBvZiBpdHMgZWxlbWVudHMsIHdoaWNoIGFyZSBhc3N1bWVkIHRvIGJlIHN0cmluZ3MuCisgICAgICovCisgICAgc3RhdGljIExpc3QgY29uY2F0KGNoYXIgY2gsIExpc3QgYSkgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGEuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIGEuc2V0KGksIGNoICsgKFN0cmluZylhLmdldChpKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGE7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgbGlzdCBvZiBTdHJpbmdzIGZvciBhbGwgcG9zc2libGUgcGVybXV0YXRpb25zIG9mIHRoZQorICAgICAqIGNoYXJhY3RlcnMgaW4gdGhlIGlucHV0IHN0cmluZy4KKyAgICAgKi8KKyAgICBzdGF0aWMgTGlzdCBqdW1ibGUgKFN0cmluZyBzb3VyY2UpCisgICAgeworICAgICAgICBBcnJheUxpc3QgcmVzdWx0ID0gbmV3IEFycmF5TGlzdCgpOworICAgICAgICBpZiAoc291cmNlLmxlbmd0aCgpID09IDEpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hZGQoc291cmNlKTsKKyAgICAgICAgfSBlbHNlIGZvciAoaW50IGkgPSAwOyBpIDwgc291cmNlLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIHJlc3VsdC5hZGRBbGwoIGNvbmNhdCggc291cmNlLmNoYXJBdChpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVtYmxlKHNvdXJjZS5zdWJzdHJpbmcoMCxpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzb3VyY2Uuc3Vic3RyaW5nKGkrMSxzb3VyY2UubGVuZ3RoKCkpKSkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgc3RhdGljIGZpbmFsIGludCBTVFJfSU5ERVhfU0hJRlQgPSAyOworICAgIHN0YXRpYyBmaW5hbCBpbnQgU1RSX0xFTkdUSF9NQVNLID0gMHgwMDAzOworCisgICAgc3RhdGljIGZpbmFsIGludCBERUNPTVBfUkVDVVJTRSA9IDB4MDAwMDgwMDA7CisgICAgc3RhdGljIGZpbmFsIGludCBERUNPTVBfTUFTSyAgPSAweDAwMDA3RkZGOworCisgICAgLyoqCisgICAgICogR2VuZXJhdGUgYSBuZXcgIkRlY29tcERhdGEuamF2YSIgdGhhdCBjb250YWlucyB0aGUgQ29tcGFjdEFycmF5IGRlZmluaXRpb25zCisgICAgICogdXNlZCBpbiB0aGUge0BsaW5rIE5vcm1hbGl6ZXIuREVDT01QT1NFfSBvcGVyYXRpb24uCisgICAgICovCisgICAgdm9pZCBidWlsZERlY29tcERhdGEoKSB0aHJvd3MgSU9FeGNlcHRpb24geworCisgICAgICAgIG91dHYoIlxuR2VuZXJhdGluZyBEZWNvbXBEYXRhLmphdmEuLi4uIik7CisgICAgICAgIC8vCisgICAgICAgIC8vIEZvciBlYWNoIFVuaWNvZGUgY2hhcmFjdGVyIHRoYXQgaGFzIGEgZGVjb21wb3NpdGlvbiwgd2UgcHV0IGl0cworICAgICAgICAvLyBmdWxseS1kZWNvbXBvc2VkIGZvcm0gYXQgdGhlIGVuZCBvZiB0aGUgImNvbnRlbnRzIiBzdHJpbmcsIGZvbGxvd2VkCisgICAgICAgIC8vIGJ5IGEgbnVsbCwgYW5kIHdlIHB1dCBpdHMgaW5kZXggaW4gImNvbnRlbnRzIiBpbnRvIHRoZSBDb21wYWN0QXJyYXkuCisgICAgICAgIC8vIElmIGl0IGRvZXMgbm90IGhhdmUgYSBkZWNvbXBvc2l0aW9uLCB3ZSBzdG9yZSBhIGJvZ3VzIGluZGV4LgorICAgICAgICAvLworICAgICAgICAvLyBXZSBkbyB0aGlzIGZpcnN0IGZvciBhbGwgb2YgdGhlIGNvbXBhdGliaWxpdHkgZGVjb21wb3NpdGlvbnMsIHNhdmUKKyAgICAgICAgLy8gdGhlIGluZGV4IGluIE1BWF9DT01QQVQsIGFuZCB0aGVuIGRvIGl0IGFnYWluIGZvciB0aGUgY2Fub25pY2FsCisgICAgICAgIC8vIGRlY29tcG9zaXRpb25zLiAgV2hlbiB0aGUgYXJyYXkgaXMgdXNlZCBsYXRlciwgYW55IGNoYXJhY3RlciB3aG9zZQorICAgICAgICAvLyBkZWNvbXAgaGFzIGFuIGluZGV4IGdyZWF0ZXIgdGhhbiBNQVhfQ09NUEFUIGlzIGEgY2Fub25pY2FsIGRlY29tcC4KKyAgICAgICAgLy8KKyAgICAgICAgaW50IGNhbm9uSW5kZXggPSAwOworICAgICAgICBpbnQgY29tcGF0SW5kZXggPSAwOworCisgICAgICAgIC8vIE1hcCBmcm9tIFVuaWNvZGUgY2hhcmFjdGVyIHRvIHJlcGxhY2VtZW50IHN0cmluZyBpbmRleAorICAgICAgICBDb21wYWN0Q2hhckFycmF5IG9mZnNldHMgPSBuZXcgQ29tcGFjdENoYXJBcnJheSgoY2hhcikwKTsKKworICAgICAgICAvLyBXZSBhbHNvIG5lZWQgYSBwbGFjZSB0byBzdG9yZSB0aGUgcmVwbGFjZW1lbnQgc3RyaW5ncy4gIEFkZCBhIGNoYXIgYXQKKyAgICAgICAgLy8gdGhlIGZyb250IHNvIHRoYXQgIjAiIHdvbid0IGJlIHRoZSBpbmRleCBvZiBhbnkgb2YgdGhlIHJlcGxhY2VtZW50IHN0cmluZ3MuCisgICAgICAgIFN0cmluZ0J1ZmZlciByZXBsYWNlID0gbmV3IFN0cmluZ0J1ZmZlcigpLmFwcGVuZCgiXHVmZmZmIik7CisKKyAgICAgICAgZm9yIChjaGFyIGNoID0gMDsgY2ggPCAweEZGRkY7IGNoKyspIHsKKyAgICAgICAgICAgIGlmICh1aW5mby5oYXNDb21wYXRpYmlsaXR5RGVjb21wb3NpdGlvbihjaCkpIHsKKyAgICAgICAgICAgICAgICBjb21wYXRJbmRleCA9IHB1dExlbmd0aChyZXBsYWNlLCBkZWNvbXBzLmdldChjaCksIDApOworICAgICAgICAgICAgICAgIG9mZnNldHMuc2V0RWxlbWVudEF0KGNoLCAoY2hhciljb21wYXRJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBBZGQgdGhlIGNhbm9uaWNhbCBkZWNvbXBzLiAgVGhlaXIgaW5kaWNlcyBtdXN0IGJlID4gY29tcGF0SW5kZXguCisgICAgICAgIGZvciAoY2hhciBjaCA9IDA7IGNoIDwgMHhGRkZGOyBjaCsrKSB7CisgICAgICAgICAgICBpZiAodWluZm8uaGFzQ2Fub25pY2FsRGVjb21wb3NpdGlvbihjaCkpIHsKKworICAgICAgICAgICAgICAgIGlmIChjaCA9PSAweDBmNzcpIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0digiMEY3NzogZGVjb21wcy5nZXQoKSA9ICIgKyBVdGlsaXR5LmhleChkZWNvbXBzLmdldChjaCkpKTsKKyAgICAgICAgICAgICAgICAgICAgb3V0digiMEY3NzogZnVsbERlY29tcCA9ICIgKyBVdGlsaXR5LmhleCh1aW5mby5nZXRGdWxsRGVjb21wb3NpdGlvbihjaCxmYWxzZSkpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBjYW5vbkluZGV4ID0gcHV0TGVuZ3RoKHJlcGxhY2UsIGRlY29tcHMuZ2V0KGNoKSwgY29tcGF0SW5kZXgpOworCisgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBjaGFyYWN0ZXIncyBmdWxsIGNvbXBhdGliaWxpdHkgZGVjb21wb3NpdGlvbiBpcyBkaWZmZXJlbnQgZnJvbQorICAgICAgICAgICAgICAgIC8vIGl0cyBjYW5vbmljYWwgZGVjb21wLCB0aGF0IG1lYW5zIG9uZSBvZiB0aGUgY2hhcmFjdGVycyBpbiBpdHMKKyAgICAgICAgICAgICAgICAvLyBjYW5vbmljYWwgZGVjb21wIGl0c2VsZiBoYXMgYSBjb21wYXRpYmlsaXR5IGRlY29tcC4gIFRvIGRlYWwgd2l0aCB0aGlzLAorICAgICAgICAgICAgICAgIC8vIHdlIHNldCBhIGJpdCBmbGFnIHRlbGxpbmcgdGhlIGRlY29tcG9zZXIgdG8gcmVjdXJzZSBvbiB0aGlzIGNoYXJhY3Rlci4KKworICAgICAgICAgICAgICAgIGlmICghdWluZm8uZ2V0RnVsbERlY29tcG9zaXRpb24oY2gsdHJ1ZSkuZXF1YWxzKHVpbmZvLmdldEZ1bGxEZWNvbXBvc2l0aW9uKGNoLGZhbHNlKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0cy5zZXRFbGVtZW50QXQoY2gsIChjaGFyKShjYW5vbkluZGV4IHwgREVDT01QX1JFQ1VSU0UpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBvZmZzZXRzLnNldEVsZW1lbnRBdChjaCwgKGNoYXIpY2Fub25JbmRleCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8KKyAgICAgICAgLy8gTm93IGdlbmVyYXRlIGFub3RoZXIgQ29tcGFjdEFycmF5IGNvbnRhaW5pbmcgdGhlIGNvbWJpbmluZyBjbGFzcyBvZiBldmVyeQorICAgICAgICAvLyBjaGFyYWN0ZXIgaW4gVW5pY29kZQorICAgICAgICAvLworICAgICAgICBmaW5hbCBieXRlIEJBU0UgPSAwOworICAgICAgICBDb21wYWN0Qnl0ZUFycmF5IGNhbm9uQ2xhc3NlcyA9IG5ldyBDb21wYWN0Qnl0ZUFycmF5KEJBU0UpOworCisgICAgICAgIGZvciAoY2hhciBjaCA9IDA7IGNoIDwgMHhGRkZGOyBjaCsrKSB7CisgICAgICAgICAgICBzaG9ydCBjYW5vbkNsYXNzID0gdWluZm8uZ2V0Q2Fub25pY2FsQ2xhc3MoY2gpOworICAgICAgICAgICAgaWYgKGNhbm9uQ2xhc3MgIT0gMCkgeworICAgICAgICAgICAgICAgIGNhbm9uQ2xhc3Nlcy5zZXRFbGVtZW50QXQoY2gsIChieXRlKWNhbm9uQ2xhc3MpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gRmluYWxseSwgd3JpdGUgdGhlIGRhdGEgb3V0IHRvIGEgY29tcGlsYWJsZSBKYXZhIHNvdXJjZSBmaWxlCisKKyAgICAgICAgaWYgKGZKYXZhKSB7CisgICAgICAgICAgICBTdHJpbmcgZiA9IGZPdXREaXIgKyAiRGVjb21wRGF0YSI7CisgICAgICAgICAgICBvdXQoIldyaXRpbmcgIiArIGYpOworICAgICAgICAgICAgd3JpdGVEZWNvbXBEYXRhKG5ldyBKYXZhV3JpdGVyKGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgY2Fub25JbmRleCwgY29tcGF0SW5kZXgsIEJBU0UsIG9mZnNldHMsIHJlcGxhY2UsIGNhbm9uQ2xhc3Nlcyk7CisgICAgICAgICAgICAKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmQ1BQKSB7CisgICAgICAgICAgICBTdHJpbmcgZiA9IGZPdXREaXIgKyAiZGNtcGRhdGEiOworICAgICAgICAgICAgb3V0KCJXcml0aW5nICIgKyBmICsgIi4oY3BwfGgpIik7CisgICAgICAgICAgICB3cml0ZURlY29tcERhdGEobmV3IENQUFdyaXRlcihmLCAiRGVjb21wRGF0YSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgY2Fub25JbmRleCwgY29tcGF0SW5kZXgsIEJBU0UsIG9mZnNldHMsIHJlcGxhY2UsIGNhbm9uQ2xhc3Nlcyk7CisgICAgICAgIH0KKworICAgICAgICBvdXR2KCJEZWNvbXAgZGF0YTogTUFYX0NBTk9OSUNBTCA9ICIgKyBjYW5vbkluZGV4ICsgIiwgTUFYX0RFQ09NUCA9ICIgKyBjb21wYXRJbmRleCk7CisKKyAgICAgICAgaWYgKGZTaG93U2l6ZXMpIHsKKyAgICAgICAgICAgIGludCBvZmZzZXRTaXplID0gb2Zmc2V0cy5nZXRJbmRleEFycmF5KCkubGVuZ3RoICogMiArIG9mZnNldHMuZ2V0VmFsdWVBcnJheSgpLmxlbmd0aCAqIDI7CisgICAgICAgICAgICBpbnQgY2Fub25TaXplID0gY2Fub25DbGFzc2VzLmdldEluZGV4QXJyYXkoKS5sZW5ndGggKiAyICsgY2Fub25DbGFzc2VzLmdldFZhbHVlQXJyYXkoKS5sZW5ndGg7CisgICAgICAgICAgICBpbnQgcmVwbGFjZUxlbmd0aCA9IHJlcGxhY2UubGVuZ3RoKCk7CisKKyAgICAgICAgICAgIG91dHYoIlRvdGFsIHJ1bnRpbWUgc2l6ZSBvZiBkZWNvbXAgZGF0YSBpcyAiCisgICAgICAgICAgICAgICAgKyAob2Zmc2V0U2l6ZSArIGNhbm9uU2l6ZSArIHJlcGxhY2VMZW5ndGgpKTsKKworICAgICAgICAgICAgb3V0digiICBvZmZzZXRzOiAgICAgICIgKyBvZmZzZXRTaXplKTsKKyAgICAgICAgICAgIG91dHYoIiAgY2Fub25DbGFzc2VzOiAiICsgY2Fub25TaXplKTsKKyAgICAgICAgICAgIG91dHYoIiAgcmVwbGFjZTogICAgICAiICsgcmVwbGFjZUxlbmd0aCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHdyaXRlRGVjb21wRGF0YShTb3VyY2VXcml0ZXIgb3V0LCBpbnQgbWF4Q2Fub24sIGludCBtYXhDb21wYXQsIHNob3J0IEJBU0UsCisgICAgICAgICAgICAgICAgICAgICAgICBDb21wYWN0Q2hhckFycmF5IG9mZnNldHMsIFN0cmluZ0J1ZmZlciBjb250ZW50cywKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbXBhY3RCeXRlQXJyYXkgY2Fub25DbGFzc2VzKQorICAgIHsKKyAgICAgICAgb3V0LndyaXRlKCJNQVhfQ0FOT05JQ0FMIiwgIG1heENhbm9uICAgICAgICApOworICAgICAgICBvdXQud3JpdGUoIk1BWF9DT01QQVQiLCAgICAgbWF4Q29tcGF0ICAgICAgICk7CisgICAgICAgIG91dC53cml0ZSgiREVDT01QX01BU0siLCAgICBERUNPTVBfTUFTSyAgICAgKTsKKyAgICAgICAgb3V0LndyaXRlKCJERUNPTVBfUkVDVVJTRSIsIERFQ09NUF9SRUNVUlNFICApOworICAgICAgICBvdXQud3JpdGUoIkJBU0UiLCAgICAgICAgICAgQkFTRSAgICAgICAgICAgICk7CisgICAgICAgIG91dC53cml0ZSgib2Zmc2V0cyIsICAgICAgICBvZmZzZXRzICAgICAgICAgKTsKKyAgICAgICAgb3V0LndyaXRlKCJjb250ZW50cyIsICAgICAgIGNvbnRlbnRzICAgICAgICApOworICAgICAgICBvdXQud3JpdGUoImNhbm9uQ2xhc3MiLCAgICAgY2Fub25DbGFzc2VzICAgICk7CisgICAgICAgIG91dC5jbG9zZSgpOworICAgIH0KKworCisgICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBNZXRob2RzIGZvciBnZW5lcmF0aW5nIGFuZCB3cml0aW5nIHRoZSBjb21wb3NpdGlvbiBkYXRhCisgICAgLy8KKyAgICBmaW5hbCBpbnQgVFlQRV9NQVNLICAgPSAweDAwMDc7CisgICAgZmluYWwgaW50IElOREVYX01BU0sgID0gMHhGRkY4OworICAgIGZpbmFsIGludCBJTkRFWF9TSElGVCA9IDM7CisKKyAgICAvLyBNQVhfQkFTRVMgaXMgdXNlZCB0byBtYXAgYSAyLWRpbWluc2lvbmFsIChiYXNlLGNvbWJpbmluZykgaW5kZXggcGFpciBvbnRvIGEKKyAgICAvLyBvbmUtZGltZW5zaW9uYWwgQ29tcGFjdEFycmF5LiAgV2UgY291bGQganVzdCB1c2UgYmFzZUNvdW50LCBidXQgbWFraW5nIGl0IGEgcG93ZXIKKyAgICAvLyBvZiB0d28gYWxsb3dzIHNsaWdodGx5IGJldHRlciBjb21wYWN0aW9uLgorCisgICAgZmluYWwgaW50IE1BWF9CQVNFUyAgID0gMTAyNDsgICAvLyBQcm9kdWN0IG11c3QgYmUgPD0gNjRLCisgICAgZmluYWwgaW50IE1BWF9DT01CSU5FID0gNjU1MzYvTUFYX0JBU0VTOworCisgICAgZmluYWwgY2hhciAgICAgICAgICAgICAgICAvLyBmb3IgY2hhcmFjdGVyIHR5cGVzCisgICAgICAgIElHTk9SRSA9IDAsCisgICAgICAgIEJBU0UgPSAxLAorICAgICAgICBFWFBMT0RJTkdfQkFTRSA9IDIsCisgICAgICAgIENPTUJJTklORyA9IDMsCisgICAgICAgIElOSVRJQUxfSkFNTyA9IDQsCisgICAgICAgIE1FRElBTF9KQU1PID0gNSwKKyAgICAgICAgRklOQUxfSkFNTyA9IDYsCisgICAgICAgIEhBTkdVTCA9IDc7CisKKyAgICAvLyBUaGVzZSB2YXJpYWJsZXMgYWN0dWFsbHkgaG9sZCB0aGUgY29tcG9zaXRpb24gZGF0YS4KKyAgICBzaG9ydCBiYXNlQ291bnQgPSAxOyAgICAgICAgLy8gTGVhdmUgMCBhcyBhbiBpbnZhbGlkIGluZGV4CisgICAgc2hvcnQgY29tYmluZUNvdW50ID0gMTsgICAgIC8vIExlYXZlIDAgYXMgYW4gaW52YWxpZCBpbmRleAorICAgIHNob3J0IG5jY0NvdW50ID0gMDsKKyAgICBpbnQgICBtYXhDb21wYXQgPSAwOworICAgIGludCAgIG1heENhbm9uID0gMDsKKworICAgIC8vIFRoaXMgYXJyYXkgY29udGFpbnMgdHlwZXMgKGZyb20gdGhlIHNldCBhYm92ZSkgYW5kIGluZGljZXMgaW50byB0aGUgInJlcGxhY2UiCisgICAgLy8gYW5kICJhY3Rpb25zIiBhcnJheXMKKyAgICBDb21wYWN0Q2hhckFycmF5IGxvb2t1cCA9IG5ldyBDb21wYWN0Q2hhckFycmF5KElHTk9SRSk7CisKKyAgICAvLyBXZSBhbHNvIG5lZWQgYSBwbGFjZSB0byBzdG9yZSB0aGUgc3RyaW5ncyB0aGF0IHJlc3VsdCBmcm9tIHJlcGxhY2VtZW50cywKKyAgICAvLyBleHBsb3Npb25zLCBhbmQgY29tYmluYXRpb25zLiAgQWRkIGEgY2hhciBhdCB0aGUgZnJvbnQgc28gdGhhdCAiMCIgd29uJ3QKKyAgICAvLyBiZSB0aGUgaW5kZXggb2YgYW55IG9mIHRoZSByZXBsYWNlbWVudCBzdHJpbmdzLgorICAgIFN0cmluZ0J1ZmZlciByZXBsYWNlID0gbmV3IFN0cmluZ0J1ZmZlcigpLmFwcGVuZCgiICIpOworCisgICAgLy8gV2UgbmVlZCB0byByZXByZXNlbnQgZWFjaCBjYW5vbmljYWwgY2hhcmFjdGVyIGNsYXNzIGFzIGEgc2luZ2xlIGJpdAorICAgIC8vIHNvIHRoYXQgd2UgY2FuIE9SIHRvZ2V0aGVyIGEgbWFzayBvZiBhbGwgY29tYmluaW5nIGNoYXIgY2xhc3NlcyBzZWVuCisgICAgLy8gQnVpbGQgYW4gYXJyYXkgdGhhdCBtYXBzIGZyb20gY29tYmluaW5nIGNsYXNzIHRvIGEgY29tcGFjdGVkIGludGVnZXIKKyAgICAvLyBmcm9tIDAuLm4tMSwgd2hlcmUgbiBpcyB0aGUgbnVtYmVyIG9mIGRpc3RpbmN0IGNvbWJpbmluZyBjbGFzc2VzLgorICAgIC8vIEUuZy4sIGluIDMuMCwgdGhlcmUgYXJlIDUzIGRpc3RpbmN0IGNvbWJpbmluZyBjbGFzc2VzLgorICAgIGludFtdIGNsYXNzTWFwID0gbmV3IGludFsyNTZdOworICAgIGludFtdIHR5cGVCaXQ7CisKKyAgICAvLyBCdWlsZCBhIHR3by1kaW1lbnNpb25hbCBhcnJheSBvZiB0aGUgYWN0aW9uIHRvIHRha2UgZm9yIGVhY2ggYmFzZS9jb21iaW5pbmcgcGFpcgorICAgIENvbXBhY3RDaGFyQXJyYXkgYWN0aW9ucyA9IG5ldyBDb21wYWN0Q2hhckFycmF5KChjaGFyKTApOworCisgICAgY2hhcltdIGFjdGlvbkluZGV4OworCisgICAgLyoqCisgICAgICogR2VuZXJhdGUgYSBuZXcgIkNvbXBvc2VEYXRhLmphdmEiIHRoYXQgY29udGFpbnMgdGhlIENvbXBhY3RBcnJheSBkZWZpbml0aW9ucworICAgICAqIHVzZWQgaW4gdGhlIHtAbGluayBOb3JtYWxpemVyLkNPTVBPU0V9IG9wZXJhdGlvbi4KKyAgICAgKi8KKyAgICB2b2lkIGJ1aWxkQ29tcG9zZURhdGEoKSB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICB7CisgICAgICAgb3V0digiXG5HZW5lcmF0aW5nIENvbXBvc2VEYXRhLmphdmEuLi4uIik7CisKKyAgICAgICAgQml0U2V0IHVzZWRJbmRpY2VzID0gbmV3IEJpdFNldCgpOworICAgICAgICBDaGFyU2V0IGV4cGxvZGluZ0Jhc2VzID0gbmV3IENoYXJTZXQoKTsKKyAgICAgICAgTm9uQ29tcG9zaW5nQ29tYmluaW5nTWFwIG5jY01hcCA9IG5ldyBOb25Db21wb3NpbmdDb21iaW5pbmdNYXAoKTsKKworICAgICAgICAvLyBGaW5kIGFsbCBjaGFyYWN0ZXJzIHRoYXQgYXJlIGJvdGggYmFzZXMgKmFuZCogaGF2ZSBjb21wYXRpYmlsaXR5CisgICAgICAgIC8vIGRlY29tcG9zaXRpb25zLiAgVGhlc2UgYXJlIHdlaXJkCisgICAgICAgIGZvciAoY2hhciBjaCA9IDA7IGNoIDwgMHhGRkZGOyBjaCsrKSB7CisgICAgICAgICAgICBpZiAoYmFzZXMuY29udGFpbnMoY2gpICYmIHVpbmZvLmhhc0NvbXBhdGliaWxpdHlEZWNvbXBvc2l0aW9uKGNoKSkgeworICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAgICAgLy8gQWRkIHRoaXMgY2hhcmFjdGVyJ3MgZXhwbG9zaW9uIHRvIHRoZSByZXBsYWNlbWVudCBzdHJpbmcgbGlzdC4KKyAgICAgICAgICAgICAgICAvLyBXZSdyZSBnb2luZyB0byBtYWtlIHN1cmUgdGhhdCBpdHMgImJhc2UgaW5kZXgiLCBpLmUuIHRoZQorICAgICAgICAgICAgICAgIC8vIGluZGV4IGZvciBpdCBpbiB0aGUgYWN0aW9ucyBhcnJheSwgaXMgdGhlIHNhbWUgYXMgdGhlCisgICAgICAgICAgICAgICAgLy8gZXhwbG9zaW9uJ3MgaW5kZXggaW4gdGhlIHJlcGxhY2Ugc3RyaW5nLiAgVGhpcyBsZXRzCisgICAgICAgICAgICAgICAgLy8gdXMgdXNlIHRoZSBzYW1lIGluZGV4IGZvciB0aGUgY2hhcmFjdGVyJ3MgdHdvIGJlaGF2aW9ycworICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAgICAgaW50IGluZGV4ID0gcHV0KHJlcGxhY2UsIGV4cGxvZGVDb21wYXQuZ2V0KGNoKSwgMCk7CisKKyAgICAgICAgICAgICAgICBvdXR2KFV0aWxpdHkuaGV4KGNoKSArICIgaXMgYmFzZSBhbmQgaGFzIGNvbXBhdCBleHBsb3Npb24gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgVXRpbGl0eS5oZXgoZXhwbG9kZUNvbXBhdC5nZXQoY2gpKSApOworCisgICAgICAgICAgICAgICAgYWRkQ2hhcihsb29rdXAsIGNoLCBFWFBMT0RJTkdfQkFTRSwgaW5kZXgpOworICAgICAgICAgICAgICAgIHVzZWRJbmRpY2VzLnNldChpbmRleCk7CisgICAgICAgICAgICAgICAgZXhwbG9kaW5nQmFzZXMuYWRkKGNoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIEZpcnN0IGFkZCB0aGUgYmFzZSBjaGFyYWN0ZXJzIHRvIHRoZSBhcnJheS4KKyAgICAgICAgLy8gQXQgdGhlIHNhbWUgdGltZSwgY29tcHV0ZSB0aGVpciBpbmRpY2VzLgorICAgICAgICAvLyBMZWF2ZSBhbiBlbXB0eSBiYXNlIGluZGV4IG9mIDAgYXMgYSBwbGFjZWhvbGRlciBmb3IgbnVsbCBvcGVyYXRpb25zLgorICAgICAgICAvLworCisgICAgICAgIGZvciAoY2hhciBjaCA9IDA7IGNoIDwgMHhGRkZGOyBjaCsrKQorICAgICAgICB7CisKKyAgICAgICAgICAgIGlmIChleHBsb2RpbmdCYXNlcy5jb250YWlucyhjaCkpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2hvcnQgY2NsYXNzID0gdWluZm8uZ2V0Q2Fub25pY2FsQ2xhc3MoY2gpOworCisgICAgICAgICAgICBpZiAoYmFzZXMuY29udGFpbnMoY2gpKSB7CisgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgd2UgZG9uJ3QgdXNlIGEgYmFzZSBpbmRleCB0aGF0IHdhcyBhbHJlYWR5IHVzZWQKKyAgICAgICAgICAgICAgICAvLyBmb3IgYW4gZXhwbG9kaW5nIGJhc2UgY2hhcmFjdGVyLgorICAgICAgICAgICAgICAgIHdoaWxlICh1c2VkSW5kaWNlcy5nZXQoYmFzZUNvdW50KSkgeworICAgICAgICAgICAgICAgICAgICBiYXNlQ291bnQrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gTm93IGFkZCB0aGUgY2hhcmFjdGVyIHRvIGxvb2t1cCBhcyBhIGJhc2UKKyAgICAgICAgICAgICAgICBhZGRDaGFyKGxvb2t1cCwgY2gsIEJBU0UsIGJhc2VDb3VudCsrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb21iaW5pbmcuY29udGFpbnMoY2gpKSB7CisgICAgICAgICAgICAgICAgY2xhc3NNYXBbY2NsYXNzXSA9IDE7ICAgICAgIC8vIE1hcmsgdGhpcyBjb21iaW5pbmcgY2xhc3MgYXMgYmVpbmcgdXNlZAorICAgICAgICAgICAgICAgIGFkZENoYXIobG9va3VwLCBjaCwgQ09NQklOSU5HLCBjb21iaW5lQ291bnQrKyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjaCA+PSAnXHUxMTAwJyAmJiBjaCA8ICdcdTExNjAnKSB7CisgICAgICAgICAgICAgICAgYWRkQ2hhcihsb29rdXAsIGNoLCBJTklUSUFMX0pBTU8sIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNoID49ICdcdTExNjEnICYmIGNoIDwgJ1x1MTFhNicpIHsKKyAgICAgICAgICAgICAgICBhZGRDaGFyKGxvb2t1cCwgY2gsIE1FRElBTF9KQU1PLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjaCA+PSAnXHUxMWE3JyAmJiBjaCA8ICdcdTExZmEnKSB7CisgICAgICAgICAgICAgICAgYWRkQ2hhcihsb29rdXAsIGNoLCBGSU5BTF9KQU1PLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjaCA+PSAweGFjMDAgJiYgY2ggPD0gMHhkN2E0KSB7CisgICAgICAgICAgICAgICAgYWRkQ2hhcihsb29rdXAsIGNoLCBIQU5HVUwsIDApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBBZGQgZXhwbG9zaW9ucyBmb3IgYWxsIGNvbXBhdGliaWxpdHkgZGVjb21wb3NpdGlvbnMsCisgICAgICAgICAgICAvLyBpbmNsdWRpbmcgdGhlIEphbW8gLS0+IENvbmpvaW5pbmcgSmFtbyBkZWNvbXBzLgorICAgICAgICAgICAgLy8gSWYgdGhlIGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uIGlzIGV4YWN0bHkgb25lIGNoYXJhY3RlcgorICAgICAgICAgICAgLy8gb25lICg0IGhleCBkaWdpdHMpIHRoZW4gd2UgZGVhbCB3aXRoIGl0IHNlcGFyYXRlbHkgYmVsb3cuCisgICAgICAgICAgICBpZiAoZXhwbG9kZUNvbXBhdC5jb250YWlucyhjaCkgJiYKKyAgICAgICAgICAgICAgICB1aW5mby5nZXREZWNvbXBvc2l0aW9uKGNoKS5sZW5ndGgoKSAhPSA0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIG1heENvbXBhdCA9IHB1dChyZXBsYWNlLCBleHBsb2RlQ29tcGF0LmdldChjaCksIDApOworICAgICAgICAgICAgICAgIGFkZEV4cGxvc2lvbihsb29rdXAsIGNoLCBtYXhDb21wYXQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gTm93IGFkZCB0aGUgZXhwbG9zaW9ucyByZXN1bHRpbmcgZnJvbSBjYW5vbmljYWwgZGVjb21wb3NpdGlvbnMKKyAgICAgICAgLy8gVGhlc2Ugd2lsbCBhbGwgaGF2ZSBpbmRpY2VzIGdyZWF0ZXIgdGhhbiAibWF4Q29tcGF0IiBzbyB3ZSBjYW4gZGlzdGluZ3Vpc2ggdGhlbS4KKyAgICAgICAgLy8KKyAgICAgICAgZm9yIChjaGFyIGNoID0gMDsgY2ggPCAweEZGRkY7IGNoKyspIHsKKyAgICAgICAgICAgIHNob3J0IGNjbGFzcyA9IHVpbmZvLmdldENhbm9uaWNhbENsYXNzKGNoKTsKKyAgICAgICAgICAgIFN0cmluZyBleHBsb3Npb24gPSBudWxsOworCisgICAgICAgICAgICBpZiAoZXhwbG9kZU9ubHkuY29udGFpbnMoY2gpICYmIHVpbmZvLmhhc0Nhbm9uaWNhbERlY29tcG9zaXRpb24oY2gpKSB7CisgICAgICAgICAgICAgICAgbWF4Q2Fub24gPSBwdXQocmVwbGFjZSwgZXhwbG9kZU9ubHkuZ2V0KGNoKSwgbWF4Q29tcGF0KTsKKyAgICAgICAgICAgICAgICBhZGRFeHBsb3Npb24obG9va3VwLCBjaCwgbWF4Q2Fub24pOworICAgICAgICAgICAgfQorCisvLyAgICAgICAgICBlbHNlIGlmICghY29tYmluaW5nLmNvbnRhaW5zKGNoKSAmJiBjY2xhc3MgIT0gMCAmJiBjbGFzc01hcFtjY2xhc3NdICE9IDApIHsKKy8vICAgICAgICAgICAgICAvLworLy8gICAgICAgICAgICAgIC8vIElmIGEgY29tYmluaW5nIGNoYXJhY3RlciBkaWRuJ3QgaGFwcGVuIHRvIGVuZCB1cCBpbiBvbmUgb2YKKy8vICAgICAgICAgICAgICAvLyB0aGUgcGFpcndpc2UgY29tYmluYXRpb25zIG9yIGV4cGxvc2lvbnMgd2UgdXNlIGJ1dCBzdGlsbCBoYXMKKy8vICAgICAgICAgICAgICAvLyBhIGNvbWJpbmluZyBjbGFzcyB0aGF0IGlzIHRoZSBzYW1lIGFzIGEgY2hhcmFjdGVyIHdlICpkbyogdXNlLAorLy8gICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gc2F2ZSBpdHMgY2xhc3Mgc28gdGhhdCB3ZSBkb24ndCBjb21iaW5lIHRoaW5ncyAicGFzdCIgaXQuCisvLyAgICAgICAgICAgICAgLy8KKy8vICAgICAgICAgICAgICAvLyBIb3dldmVyLCBpZiB0aGUgY2hhcmFjdGVyIGhhcyBhbiBleHBsb3Npb24gd2UgKmRvbid0KiBuZWVkIGl0LCBiZWNhdXNlCisvLyAgICAgICAgICAgICAgLy8gd2UnbGwgbmV2ZXIgc2VlIGl0LCBvbmx5IHRoZSByZXN1bHRzIG9mIGl0cyBleHBsb3Npb24uCisvLyAgICAgICAgICAgICAgLy8KKy8vICAgICAgICAgICAgICBhZGRDaGFyKGxvb2t1cCwgY2gsIENPTUJJTklORywgMCk7CisvLyAgICAgICAgICAgICAgbmNjQ291bnQrKzsKKy8vICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSSdtIHJld3JpdGluZyB0aGlzIGxvZ2ljLiAgSGF2aW5nIGFuIGluZGV4IG9mIHplcm8gbWVhbnMgdGhhdAorICAgICAgICAgICAgLy8gdGhlIHR5cGVCaXRbaW5kZXhdIGdldHMgb3ZlcndyaXR0ZW4gd2l0aCBtdWx0aXBsZSBkaWZmZXJlbnQKKyAgICAgICAgICAgIC8vIHZhbHVlcy4gIFNvIHdlIG11c3QgdXNlIHJlYWwgaW5kZXggdmFsdWVzIHRoYXQgYXJlIHVuaXF1ZQorICAgICAgICAgICAgLy8gcGVyIGNvbWJpbmluZyBjbGFzcy4gIEFsc28sIGl0IGRvZXNuJ3QgbWF0dGVyIGlmIHRoZSBjbGFzcworICAgICAgICAgICAgLy8gaGFzIGJlZW4gc2VlbiBvciBub3Q7IHdlIHN0aWxsIG5lZWQgdG8gcmVjb3JkIHRoZSBjaGFyYWN0ZXIKKyAgICAgICAgICAgIC8vIGluIG9yZGVyIHRvIGhhdmUgaXRzIHR5cGUgYW5kIGNsYXNzIGR1cmluZyBjb21wb3NpdGlvbi4KKyAgICAgICAgICAgIGVsc2UgaWYgKCFjb21iaW5pbmcuY29udGFpbnMoY2gpICYmIGNjbGFzcyAhPSAwKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgYSBjb21iaW5pbmcgY2hhcmFjdGVyIGRpZG4ndCBoYXBwZW4gdG8gZW5kIHVwIGluIG9uZSBvZgorICAgICAgICAgICAgICAgIC8vIHRoZSBwYWlyd2lzZSBjb21iaW5hdGlvbnMgb3IgZXhwbG9zaW9ucyB3ZSB1c2UgYnV0IHN0aWxsIGhhcworICAgICAgICAgICAgICAgIC8vIGEgY29tYmluaW5nIGNsYXNzIHRoYXQgaXMgdGhlIHNhbWUgYXMgYSBjaGFyYWN0ZXIgd2UgKmRvKiB1c2UsCisgICAgICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBzYXZlIGl0cyBjbGFzcy4KKworICAgICAgICAgICAgICAgIC8vIEFzIG91ciBpbmRleCwgdXNlIGNvbWJpbmVDb3VudCBhbmQgdXAuICBSZXVzZSB2YWx1ZXMgYnkKKyAgICAgICAgICAgICAgICAvLyBtYXBwaW5nIHRoZW0gdGhyb3VnaCBuY2NNYXAsIHdoaWNoIGtlZXBzIHRyYWNrIG9mIHByZXZpb3VzbHkKKyAgICAgICAgICAgICAgICAvLyB1c2VkIHZhbHVlcyBhbmQgYWxsb2NhdGVzIG5ldyBvbmVzIG9ubHkgYXMgbmVlZGVkLCBzdGFydGluZworICAgICAgICAgICAgICAgIC8vIHdpdGggemVyby4gLSBMaXUKKyAgICAgICAgICAgICAgICBjbGFzc01hcFtjY2xhc3NdID0gMTsgICAgICAgLy8gTWFyayB0aGlzIGNvbWJpbmluZyBjbGFzcyBhcyBiZWluZyB1c2VkCisgICAgICAgICAgICAgICAgYWRkQ2hhcihsb29rdXAsIGNoLCBDT01CSU5JTkcsIGNvbWJpbmVDb3VudCArIG5jY01hcC5nZXRJbmRleEZvcihjY2xhc3MpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIG5jY0NvdW50ID0gKHNob3J0KSBuY2NNYXAuZ2V0SW5kZXhDb3VudCgpOyAvLyBMaXUKKworICAgICAgICAvLyBSZW1hcCBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBhIGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uIHRvIGEgc2luZ2xldG9uLAorICAgICAgICAvLyBhbmQgYWxzbyBkaWZmZXJlbnQgY29tcGF0aWJpbGl0eSBhbmQgY2Fub25pY2FsIGZ1bGwgZGVjb21wb3NpdGlvbnMKKyAgICAgICAgLy8gKHRoYXQgaXMsIGFsc28gYXJlIG1lbWJlcnMgb2YgZXhwbG9kZUNvbXBhdCkuICBUaGVzZSBjaGFyYWN0ZXJzIGNhbid0CisgICAgICAgIC8vIGJlIGV4cGxvZGVkIHRvIHRoZWlyIGZ1bGwgZGVjb21wb3NpdGlvbiBzaW5jZSB0aGF0IGJyZWFrcyBjYW5vbmljYWwKKyAgICAgICAgLy8gY29tcG9zaXRpb24gKG5vcm1hbGl6YXRpb24gZm9ybSBDKS4gIEluc3RlYWQsIHdlIHBsYWNlIHRoZWlyCisgICAgICAgIC8vIHNpbmdsZXRvbiBkZWNvbXBvc2l0aW9uIGluIHRoZSB0YWJsZSwgYXQgdGhlIGVuZC4gIFRoaXMgd29ya3MgYmVjYXVzZQorICAgICAgICAvLyB0aGUgc2luZ2xldG9uIHdpbGwgZ2V0IHJlY3Vyc2l2ZWx5IGV4cGxvZGVkIGJ5IE5vcm1hbGl6ZXIuICBBcyBvZgorICAgICAgICAvLyBVbmljb2RlIDMuMCwgdGhpcyBmaXggYXBwbGllcyB0byBVKzFGRkUsIDFGRkQsIDIwMDAsIGFuZCAyMDAxLiAtIExpdQorICAgICAgICBpbnQgc2luZ2xldG9uID0gcmVwbGFjZS5sZW5ndGgoKTsKKyAgICAgICAgZm9yIChjaGFyIGNoID0gMDsgY2ggPCAweEZGRkY7IGNoKyspIHsKKyAgICAgICAgICAgIGlmICghZXhwbG9kaW5nQmFzZXMuY29udGFpbnMoY2gpICYmCisgICAgICAgICAgICAgICAgZXhwbG9kZUNvbXBhdC5jb250YWlucyhjaCkgJiYKKyAgICAgICAgICAgICAgICB1aW5mby5nZXREZWNvbXBvc2l0aW9uKGNoKS5sZW5ndGgoKSA9PSA0KSB7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIFRoZXJlIG1pZ2h0IGJlIGEgY2xlYW5lciB3YXkgdG8gZG8gdGhpcywgcGVyaGFwcyBieSBmb2xkaW5nCisgICAgICAgICAgICAgICAgLy8gdGhpcyBsb2dpYyBpbnRvIHRoZSBjb2RlIGFib3ZlIChwZXJoYXBzIGNhbGxpbmcKKyAgICAgICAgICAgICAgICAvLyBhZGRFeHBsb3Npb24oKSBpbnN0ZWFkIG9mIGFkZENoYXIoKSksIGJ1dCBJIGNvdWxkbid0IGZpbmQgaXQuCisgICAgICAgICAgICAgICAgY2hhciByZW1hcCA9IChjaGFyKQorICAgICAgICAgICAgICAgICAgICBJbnRlZ2VyLnBhcnNlSW50KHVpbmZvLmdldERlY29tcG9zaXRpb24oY2gpLCAxNik7CisKKyAgICAgICAgICAgICAgICBpbnQgaW5kZXggPSBwdXQocmVwbGFjZSwgU3RyaW5nLnZhbHVlT2YocmVtYXApLCBzaW5nbGV0b24pOworICAgICAgICAgICAgICAgIGFkZENoYXIobG9va3VwLCBjaCwgRVhQTE9ESU5HX0JBU0UsIGluZGV4KTsKKworICAgICAgICAgICAgICAgIG91dHYoIkNhbm9uaWNhbCBzaW5nbGV0b24gIiArIFV0aWxpdHkuaGV4KGNoKSArCisgICAgICAgICAgICAgICAgICAgICAiIHJlbWFwcyB0byAiICsgVXRpbGl0eS5oZXgocmVtYXApICsgIiBpbmRleD0iICsgaW5kZXgpOyAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIE5vdyBydW4gdGhyb3VnaCB0aGUgY29tYmluaW5nIGNsYXNzZXMgYWdhaW4gYW5kIGFzc2lnbiBiaXQgbnVtYmVycworICAgICAgICAvLyBpbiB0aGUgc2FtZSBhc2NlbmRpbmcgb3JkZXIgYXMgdGhlIGNhbm9uaWNhbCBjbGFzc2VzCisgICAgICAgIGludCBtYXNrU2hpZnQgPSAwOworICAgICAgICBpbnQgYml0ID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAyNTY7IGkrKykgeworICAgICAgICAgICAgaWYgKGNsYXNzTWFwW2ldICE9IDApIHsKKyAgICAgICAgICAgICAgICBjbGFzc01hcFtpXSA9ICsrYml0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChiaXQgPj0gNjQpIHsKKyAgICAgICAgICAgIGVycihTdHJpbmcudmFsdWVPZihiaXQrMSkgKyAiIGNvbWJpbmluZyBjbGFzc2VzOyBtYXggaXMgNjQiKTsKKyAgICAgICAgfQorICAgICAgICBvdXR2KCIjIG9mIGNvbWJpbmluZyBjbGFzc2VzIGlzICIgKyAoYml0KzEpKTsKKworICAgICAgICBvdXR2KCJiYXNlQ291bnQ9IiArIGJhc2VDb3VudCArICIsIGNvbWJpbmVDb3VudD0iICsgY29tYmluZUNvdW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCBuY2NDb3VudD0iICsgbmNjQ291bnQpOworCisgICAgICAgIGlmIChiYXNlQ291bnQgPiBNQVhfQkFTRVMpIHsKKyAgICAgICAgICAgIGVycihJbnRlZ2VyLnRvU3RyaW5nKGJhc2VDb3VudCkgKyAiIGJhc2VzLCBsaW1pdCBpcyAiICsgTUFYX0JBU0VTKTsKKyAgICAgICAgICAgIGVycihJbnRlZ2VyLnRvU3RyaW5nKGNvbWJpbmVDb3VudCkgKyAiIGNvbWJpbmluZyBjaGFycywgbGltaXQgaXMgIiArIE1BWF9DT01CSU5FKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE5vdyBidWlsZCB0aGUgImFjdGlvbnMiIGFycmF5IHRoYXQgdGVsbHMgd2hhdCB0byBkbyB3aGVuIGVhY2ggYmFzZSAvCisgICAgICAgIC8vIGNvbWJpbmluZyBwYWlyIGlzIHNlZW4uCisgICAgICAgIC8vCisgICAgICAgIC8vIEZpcnN0IGRvIGNoYXJhY3RlciBwYWlycyB0aGF0IGNvbWJpbmUgaW50byBhIHNpbmdsZSBjaGFyYWN0ZXIuLi4KKyAgICAgICAgLy8KKyAgICAgICAgSXRlcmF0b3IgaXRlciA9IGJpbmFyeUNvbXBvc2l0aW9ucy5rZXlTZXQoKS5pdGVyYXRvcigpOworICAgICAgICB3aGlsZSAoaXRlci5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgIFN0cmluZyBzb3VyY2UgPSAoU3RyaW5nKWl0ZXIubmV4dCgpOworICAgICAgICAgICAgY2hhciBjaCA9IGJpbmFyeUNvbXBvc2l0aW9ucy5nZXQoc291cmNlKTsKKworICAgICAgICAgICAgaW50IGJhc2VJbmRleCA9IGxvb2t1cC5lbGVtZW50QXQoc291cmNlLmNoYXJBdCgwKSkgPj4+IElOREVYX1NISUZUOworICAgICAgICAgICAgaW50IGNvbWJpbmluZ0luZGV4ID0gbG9va3VwLmVsZW1lbnRBdChzb3VyY2UuY2hhckF0KDEpKSA+Pj4gSU5ERVhfU0hJRlQ7CisKKyAgICAgICAgICAgIGFjdGlvbnMuc2V0RWxlbWVudEF0KChjaGFyKShiYXNlSW5kZXggKyBNQVhfQkFTRVMqY29tYmluaW5nSW5kZXgpLCBjaCk7CisgICAgICAgIH0KKworCisgICAgICAgIC8vCisgICAgICAgIC8vIFBhaXIgZXhwbG9zaW9uczogYmFzZS9jb21iaW5pbmcgcGFpcnMgdGhhdCBleHBsb2RlIGludG8gc29tZXRoaW5nIGVsc2UKKyAgICAgICAgLy8gV2UncmUgc3F1ZWV6aW5nIHRoZSBpbmRpY2VzIGZvciB0aGVzZSBpbiBiZXR3ZWVuIE1BWF9DT01QT1NFRCBhbmQgMHhGRkZGLAorICAgICAgICAvLyB3aGljaCBtZWFucyB0aGV5IGNhbid0IGJlIGluZGV4ZXMgaW50byB0aGUgInJlcGxhY2UiIHN0cmluZzsgdGhvc2UgYXJlIHRvbyBiaWcuCisgICAgICAgIC8vIEluc3RlYWQgdGhleSdyZSBpbmRleGVzIGludG8gdGhlICJhY3Rpb25JbmRleCIgYXJyYXksIHdoaWNoIGluIHR1cm4gY29udGFpbnMKKyAgICAgICAgLy8gaW5kaWNlcyBpbiAicmVwbGFjZSIKKyAgICAgICAgLy8KKyAgICAgICAgYWN0aW9uSW5kZXggPSBuZXcgY2hhclsgcGFpckV4cGxvc2lvbnMuc2l6ZSgpIF07CisgICAgICAgIHNob3J0IGluZGV4ID0gMDsKKworICAgICAgICBpdGVyID0gcGFpckV4cGxvc2lvbnMua2V5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgd2hpbGUgKGl0ZXIuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICBTdHJpbmcgc291cmNlID0gKFN0cmluZylpdGVyLm5leHQoKTsKKyAgICAgICAgICAgIGNoYXIgYmFzZSA9IHNvdXJjZS5jaGFyQXQoMCk7CisgICAgICAgICAgICBjaGFyIGNvbWJpbmluZyA9IHNvdXJjZS5jaGFyQXQoMSk7CisKKyAgICAgICAgICAgIGludCBzdHJJbmRleCA9IHB1dChyZXBsYWNlLCAoU3RyaW5nKXBhaXJFeHBsb3Npb25zLmdldChzb3VyY2UpLCAwKTsKKyAgICAgICAgICAgIGFjdGlvbkluZGV4W2luZGV4XSA9IChjaGFyKXN0ckluZGV4OworCisgICAgICAgICAgICBpbnQgYmFzZUluZGV4ID0gbG9va3VwLmVsZW1lbnRBdChiYXNlKSA+Pj4gSU5ERVhfU0hJRlQ7CisgICAgICAgICAgICBpbnQgY29tYmluaW5nSW5kZXggPSBsb29rdXAuZWxlbWVudEF0KGNvbWJpbmluZykgPj4+IElOREVYX1NISUZUOworCisgICAgICAgICAgICBhY3Rpb25zLnNldEVsZW1lbnRBdCgoY2hhcikoYmFzZUluZGV4ICsgTUFYX0JBU0VTKmNvbWJpbmluZ0luZGV4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKShpbmRleCArIGxhcmdlc3RDaGFyKSk7CisgICAgICAgICAgICBpbmRleCsrOworICAgICAgICB9CisKKyAgICAgICAgLy8gRmlsbCBpbiB0aGUgYXJyYXkgdGhhdCBtYXBzIGZyb20gY29tYmluaW5nIGNsYXNzIHZhbHVlCisgICAgICAgIC8vIHRvIGEgYml0IG51bWJlIHJlcHJlc2VudGluZyB0aGUgY2Fub25pY2FsIGNvbWJpbmluZyBjbGFzcy4KKyAgICAgICAgLy8gVGhhdCBpcywgbWFwIGZyb20gMC4uMjQwIChpbiAzLjApIHRvIDAuLjUyLgorICAgICAgICB0eXBlQml0ID0gbmV3IGludFtjb21iaW5lQ291bnQgKyBuY2NDb3VudF07CisKKyAgICAgICAgZm9yIChjaGFyIGNoID0gMDsgY2ggPCAweEZGRkY7IGNoKyspIHsKKyAgICAgICAgICAgIGludCB2YWx1ZSA9IGxvb2t1cC5lbGVtZW50QXQoY2gpOworICAgICAgICAgICAgaW50IHR5cGUgPSB2YWx1ZSAmIFRZUEVfTUFTSzsKKworICAgICAgICAgICAgaWYgKHR5cGUgPT0gQ09NQklOSU5HKSB7CisgICAgICAgICAgICAgICAgaW50IGluZCA9IHZhbHVlID4+PiBJTkRFWF9TSElGVDsKKyAgICAgICAgICAgICAgICBpbnQgY2NsYXNzID0gdWluZm8uZ2V0Q2Fub25pY2FsQ2xhc3MoY2gpOworICAgICAgICAgICAgICAgIGlmICh0eXBlQml0W2luZF0gIT0gMCAmJiB0eXBlQml0W2luZF0gIT0gY2xhc3NNYXBbY2NsYXNzXSkgeworICAgICAgICAgICAgICAgICAgICBlcnIoIk92ZXJ3cml0aW5nIHR5cGVCaXRbIiArIGluZCArICJdLCB3YXMgIiArCisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlQml0W2luZF0gKyAiLCBjaGFuZ2luZyB0byAiICsgY2xhc3NNYXBbY2NsYXNzXSArICIgZm9yIGNsYXNzICIgKyBjY2xhc3MpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0eXBlQml0W2luZF0gPSBjbGFzc01hcFtjY2xhc3NdOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGZKYXZhKSB7CisgICAgICAgICAgICBTdHJpbmcgZiA9IGZPdXREaXIgKyAiQ29tcG9zZURhdGEiOworICAgICAgICAgICAgb3V0KCJXcml0aW5nICIgKyBmKTsKKyAgICAgICAgICAgIHdyaXRlQ29tcG9zZURhdGEobmV3IEphdmFXcml0ZXIoZikpOworICAgICAgICB9CisgICAgICAgIGlmIChmQ1BQKSB7CisgICAgICAgICAgICBTdHJpbmcgZiA9IGZPdXREaXIgKyAiY29tcGRhdGEiOworICAgICAgICAgICAgb3V0KCJXcml0aW5nICIgKyBmICsgIi4oY3BwfGgpIik7CisgICAgICAgICAgICB3cml0ZUNvbXBvc2VEYXRhKG5ldyBDUFBXcml0ZXIoZiwgIkNvbXBvc2VEYXRhIikpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZTaG93U2l6ZXMpIHsKKyAgICAgICAgICAgIGludCBsb29rdXBTaXplID0gbG9va3VwLmdldEluZGV4QXJyYXkoKS5sZW5ndGggKiAyICsgbG9va3VwLmdldFZhbHVlQXJyYXkoKS5sZW5ndGggKiAyOworICAgICAgICAgICAgaW50IGFjdGlvblNpemUgPSBhY3Rpb25zLmdldEluZGV4QXJyYXkoKS5sZW5ndGggKiAyICsgYWN0aW9ucy5nZXRWYWx1ZUFycmF5KCkubGVuZ3RoICogMjsKKyAgICAgICAgICAgIGludCBhY3RJbmRleFNpemUgPSBhY3Rpb25JbmRleC5sZW5ndGggKiAyOworICAgICAgICAgICAgaW50IHJlcGxhY2VTaXplID0gcmVwbGFjZS5sZW5ndGgoKTsKKyAgICAgICAgICAgIGludCB0eXBlQml0U2l6ZSA9IHR5cGVCaXQubGVuZ3RoICogMjsKKworICAgICAgICAgICAgb3V0digiVG90YWwgcnVudGltZSBzaXplIG9mIGNvbXBvc2UgZGF0YSBpcyAiCisgICAgICAgICAgICAgICAgKyAobG9va3VwU2l6ZSArIGFjdGlvblNpemUgKyBhY3RJbmRleFNpemUgKyByZXBsYWNlU2l6ZSArIHR5cGVCaXRTaXplKSk7CisKKyAgICAgICAgICAgIG91dHYoIiAgbG9va3VwOiAgICAgICAiICsgbG9va3VwU2l6ZSk7CisgICAgICAgICAgICBvdXR2KCIgIGFjdGlvbnM6ICAgICAgIiArIGFjdGlvblNpemUpOworICAgICAgICAgICAgb3V0digiICBhY3Rpb25JbmRleDogICIgKyBhY3RJbmRleFNpemUpOworICAgICAgICAgICAgb3V0digiICB0eXBlQml0OiAgICAgICIgKyB0eXBlQml0U2l6ZSk7CisgICAgICAgICAgICBvdXR2KCIgIHJlcGxhY2U6ICAgICAgIiArIHJlcGxhY2VTaXplKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgd3JpdGVDb21wb3NlRGF0YShTb3VyY2VXcml0ZXIgb3V0KSB7CisgICAgICAgIG91dC53cml0ZSgiQkFTRV9DT1VOVCIsICAgICAgICAgYmFzZUNvdW50KTsKKyAgICAgICAgb3V0LndyaXRlKCJDT01CSU5JTkdfQ09VTlQiLCAgICBjb21iaW5lQ291bnQpOworICAgICAgICBvdXQud3JpdGUoIk1BWF9DT01QQVQiLCAgICAgICAgIG1heENvbXBhdCk7CisgICAgICAgIG91dC53cml0ZSgiTUFYX0NBTk9OSUNBTCIsICAgICAgbWF4Q2Fub24pOworCisgICAgICAgIG91dC53cml0ZUhleCgiTUFYX0NPTVBPU0VEIiwgICAgbGFyZ2VzdENoYXIpOworCisgICAgICAgIGludCBtYXhJbmRleCA9IHJlcGxhY2UubGVuZ3RoKCk7CisgICAgICAgIG91dC53cml0ZSgiTUFYX0lOREVYIiwgICAgICAgICAgbWF4SW5kZXggICAgKTsKKyAgICAgICAgb3V0LndyaXRlKCJJTklUSUFMX0pBTU9fSU5ERVgiLCBtYXhJbmRleCArIDEpOworICAgICAgICBvdXQud3JpdGUoIk1FRElBTF9KQU1PX0lOREVYIiwgIG1heEluZGV4ICsgMik7CisKKyAgICAgICAgb3V0LndyaXRlKCJNQVhfQkFTRVMiLCAgICAgICAgICBNQVhfQkFTRVMgICk7CisgICAgICAgIG91dC53cml0ZSgiTUFYX0NPTUJJTkUiLCAgICAgICAgTUFYX0NPTUJJTkUpOworCisgICAgICAgIG91dC53cml0ZUhleCgiVFlQRV9NQVNLIiwgICAgICAgVFlQRV9NQVNLKTsKKyAgICAgICAgb3V0LndyaXRlKCJJTkRFWF9TSElGVCIsICAgICAgICBJTkRFWF9TSElGVCk7CisKKyAgICAgICAgLy8gVGhlIGNoYXJhY3RlciB0eXBlcworICAgICAgICBvdXQud3JpdGUoIklHTk9SRSIsICAgICAgICAgICAgIChpbnQpSUdOT1JFKTsKKyAgICAgICAgb3V0LndyaXRlKCJCQVNFIiwgICAgICAgICAgICAgICAoaW50KUJBU0UpOworICAgICAgICBvdXQud3JpdGUoIk5PTl9DT01QT1NJTkdfQ09NQklOSU5HIiwgKGludClFWFBMT0RJTkdfQkFTRSk7CisgICAgICAgIG91dC53cml0ZSgiQ09NQklOSU5HIiwgICAgICAgICAgKGludClDT01CSU5JTkcpOworICAgICAgICBvdXQud3JpdGUoIklOSVRJQUxfSkFNTyIsICAgICAgIChpbnQpSU5JVElBTF9KQU1PKTsKKyAgICAgICAgb3V0LndyaXRlKCJNRURJQUxfSkFNTyIsICAgICAgICAoaW50KU1FRElBTF9KQU1PKTsKKyAgICAgICAgb3V0LndyaXRlKCJGSU5BTF9KQU1PIiwgICAgICAgICAoaW50KUZJTkFMX0pBTU8pOworICAgICAgICBvdXQud3JpdGUoIkhBTkdVTCIsICAgICAgICAgICAgIChpbnQpSEFOR1VMKTsKKworICAgICAgICBvdXQud3JpdGUoImxvb2t1cCIsICAgICAgICAgbG9va3VwICAgICAgICApOworICAgICAgICBvdXQud3JpdGUoImFjdGlvbnMiLCAgICAgICAgYWN0aW9ucyAgICAgICApOworICAgICAgICBvdXQud3JpdGUoImFjdGlvbkluZGV4IiwgICAgYWN0aW9uSW5kZXggICApOworICAgICAgICBvdXQud3JpdGUoInJlcGxhY2UiLCAgICAgICAgcmVwbGFjZSAgICAgICApOworICAgICAgICBvdXQud3JpdGUoInR5cGVCaXQiLCAgICAgICAgdHlwZUJpdCk7CisKKyAgICAgICAgb3V0LmNsb3NlKCk7CisgICAgfQorCisgICAgdm9pZCBhZGRDaGFyKENvbXBhY3RDaGFyQXJyYXkgbG9va3VwLCBjaGFyIGNoLCBpbnQgdHlwZSwgaW50IGluZGV4KQorICAgIHsKKyAgICAgICAgLy8gRmlyc3QgbWFrZSBzdXJlIGl0J3Mgbm90IGFscmVhZHkgcHJlc2VudAorICAgICAgICBpZiAobG9va3VwLmVsZW1lbnRBdChjaCkgIT0gSUdOT1JFKQorICAgICAgICB7CisgICAgICAgICAgICBjaGFyIG9sZFZhbHVlID0gbG9va3VwLmVsZW1lbnRBdChjaCk7CisgICAgICAgICAgICBlcnIodHlwZU5hbWUodHlwZSkgKyAiIGNoYXIgaXMgYWxzbyAiCisgICAgICAgICAgICAgICAgICArIHR5cGVOYW1lKG9sZFZhbHVlICYgVFlQRV9NQVNLKSArICI6ICIKKyAgICAgICAgICAgICAgICAgICsgVXRpbGl0eS5oZXgoY2gpICsgIiAgIiArIHVpbmZvLmdldE5hbWUoY2gsdHJ1ZSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKChpbmRleCA8PCBJTkRFWF9TSElGVCkgPiA2NTUzNikgeworICAgICAgICAgICAgZXJyKCJub3QgZW5vdWdoIGJpdHM6IGluZGV4ICIgKyBpbmRleCArICIgPDwgSU5ERVhfU0hJRlQgPSAiICsgKGluZGV4IDw8IElOREVYX1NISUZUKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb29rdXAuc2V0RWxlbWVudEF0KGNoLCAoY2hhcikodHlwZSB8IChpbmRleCA8PCBJTkRFWF9TSElGVCkpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgYWRkRXhwbG9zaW9uKENvbXBhY3RDaGFyQXJyYXkgbG9va3VwLCBjaGFyIGNoLCBpbnQgaW5kZXgpCisgICAgeworICAgICAgICAvLyBGaXJzdCBtYWtlIHN1cmUgaXQgZG9lc24ndCBhbHJlYWR5IGhhdmUgYW4gaW5kZXgKKyAgICAgICAgY2hhciBvbGRWYWx1ZSA9IGxvb2t1cC5lbGVtZW50QXQoY2gpOworICAgICAgICBpbnQgb2xkSW5kZXggPSBvbGRWYWx1ZSA+Pj4gSU5ERVhfU0hJRlQ7CisKKyAgICAgICAgaWYgKG9sZFZhbHVlICE9IElHTk9SRSkgeworICAgICAgICAgICAgZXJyKCJFeHBsb2RpbmcgY2hhciBpcyBhbHJlYWR5ICIgKyB0eXBlTmFtZShvbGRWYWx1ZSAmIFRZUEVfTUFTSykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIChpbmRleCAiICsgb2xkSW5kZXggKyAiKTogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFV0aWxpdHkuaGV4KGNoKSArICIgICIgKyB1aW5mby5nZXROYW1lKGNoLHRydWUpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChvbGRJbmRleCAhPSAwKSB7CisgICAgICAgICAgICBlcnIoIkV4cGxvZGluZyBjaGFyIGlzIGFscmVhZHkgIiArIHR5cGVOYW1lKG9sZFZhbHVlICYgVFlQRV9NQVNLKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgKGluZGV4ICIgKyBvbGRJbmRleCArICIpOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgVXRpbGl0eS5oZXgoY2gpICsgIiAgIiArIHVpbmZvLmdldE5hbWUoY2gsdHJ1ZSkpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKChpbmRleCA8PCBJTkRFWF9TSElGVCkgPiA2NTUzNikgeworICAgICAgICAgICAgZXJyKCJub3QgZW5vdWdoIGJpdHM6IGluZGV4ICIgKyBpbmRleCArICIgPDwgSU5ERVhfU0hJRlQgPSAiICsgKGluZGV4IDw8IElOREVYX1NISUZUKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsb29rdXAuc2V0RWxlbWVudEF0KGNoLCAoY2hhcikoKG9sZFZhbHVlICYgfklOREVYX01BU0spIHwgKGluZGV4IDw8IElOREVYX1NISUZUKSkpOworICAgICAgICB9CisgICAgfQorCisgICAgU3RyaW5nIHR5cGVOYW1lKGludCB0eXBlKSB7CisgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICAgICAgY2FzZSBJR05PUkU6ICAgICAgICAgICAgcmV0dXJuICJJZ25vcmVkIjsKKyAgICAgICAgICAgIGNhc2UgQkFTRTogICAgICAgICAgICAgIHJldHVybiAiQmFzZSI7CisgICAgICAgICAgICBjYXNlIEVYUExPRElOR19CQVNFOiAgICByZXR1cm4gIkV4cGxvZGluZyBCYXNlIjsKKyAgICAgICAgICAgIGNhc2UgQ09NQklOSU5HOiAgICAgICAgIHJldHVybiAiQ29tYmluaW5nIjsKKyAgICAgICAgICAgIGNhc2UgSU5JVElBTF9KQU1POiAgICAgIHJldHVybiAiSW5pdGlhbCBKYW1vIjsKKyAgICAgICAgICAgIGNhc2UgTUVESUFMX0pBTU86ICAgICAgIHJldHVybiAiTWVkaWFsIEphbW8iOworICAgICAgICAgICAgY2FzZSBGSU5BTF9KQU1POiAgICAgICAgcmV0dXJuICJGaW5hbCBKYW1vIjsKKyAgICAgICAgICAgIGNhc2UgSEFOR1VMOiAgICAgICAgICAgIHJldHVybiAiSGFuZ3VsIjsKKyAgICAgICAgICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgIHJldHVybiAiVW5rbm93biI7CisgICAgICAgIH0KKyAgICB9CisKKworICAgIHN0YXRpYyBmaW5hbCBpbnQgcHV0KFN0cmluZ0J1ZmZlciBidWYsIFN0cmluZyBzdHIsIGludCBtaW5JbmRleCkKKyAgICB7CisgICAgICAgIHN0ciA9IHN0ciArICdcdTAwMDAnOyAgIC8vIEFkZCB0cmFpbGluZyBudWxsCisKKyAgICAgICAgaW50IGluZGV4ID0gYnVmLnRvU3RyaW5nKCkuaW5kZXhPZihzdHIpOworICAgICAgICBpZiAoaW5kZXggPD0gbWluSW5kZXgpIHsKKyAgICAgICAgICAgIGluZGV4ID0gYnVmLmxlbmd0aCgpOworICAgICAgICAgICAgYnVmLmFwcGVuZChzdHIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpbmRleDsKKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgaW50IHB1dExlbmd0aChTdHJpbmdCdWZmZXIgYnVmLCBTdHJpbmcgc3RyLCBpbnQgbWluSW5kZXgpIHsKKyAgICAgICAgaW50IGxlbmd0aCA9IHN0ci5sZW5ndGgoKTsKKworICAgICAgICBpZiAobGVuZ3RoID49ICgxIDw8IFNUUl9JTkRFWF9TSElGVCkpIHsKKyAgICAgICAgICAgIC8vIFRoZXJlJ3Mgbm8gcm9vbSB0byBzdG9yZSB0aGUgbGVuZ3RoIGluIHRoZSBpbmRleCwgc28KKyAgICAgICAgICAgIC8vIGFkZCBhIG51bGwgdGVybWluYXRvciBhbmQgdXNlIGEgMCBsZW5ndGggdG8gZmxhZyB0aGlzCisgICAgICAgICAgICBzdHIgPSBzdHIgKyAnXHUwMDAwJzsKKyAgICAgICAgICAgIGxlbmd0aCA9IDA7CisgICAgICAgIH0KKworICAgICAgICBpbnQgaW5kZXggPSBidWYudG9TdHJpbmcoKS5pbmRleE9mKHN0cik7CisgICAgICAgIGlmIChpbmRleCA8PSBtaW5JbmRleCkgeworICAgICAgICAgICAgaW5kZXggPSBidWYubGVuZ3RoKCk7CisgICAgICAgICAgICBidWYuYXBwZW5kKHN0cik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIChpbmRleCA8PCBTVFJfSU5ERVhfU0hJRlQpIHwgbGVuZ3RoOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBPdXRwdXQgJiBmb3JtYXR0aW5nCisKKyAgICB2b2lkIG91dChTdHJpbmcgc3RyKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzdHIpOworICAgIH0KKyAgICB2b2lkIG91dHYoU3RyaW5nIHN0cikgeworICAgICAgICBpZiAoZlZlcmJvc2UpIFN5c3RlbS5vdXQucHJpbnRsbihzdHIpOworICAgIH0KKyAgICB2b2lkIHdhcm4oU3RyaW5nIHN0cikgeworICAgICAgICBTeXN0ZW0uZXJyLnByaW50bG4oIldhcm5pbmc6ICIgKyBzdHIpOworICAgIH0KKyAgICB2b2lkIGVycihTdHJpbmcgc3RyKSB7CisgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiRVJST1I6ICAgIiArIHN0cik7CisgICAgfQorfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBVdGlsaXR5IGNsYXNzZXMKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgRGVjb21wTWFwIGV4dGVuZHMgSGFzaE1hcCB7CisgICAgcHVibGljIERlY29tcE1hcCgpIHsKKyAgICB9CisKKyAgICB2b2lkIHB1dChjaGFyIGNoLCBTdHJpbmcgdmFsdWUpIHsKKyAgICAgICAgcHV0KG5ldyBNdXRhYmxlQ2hhcihjaCksIHZhbHVlKTsKKyAgICB9CisKKyAgICBTdHJpbmcgZ2V0KGNoYXIgY2gpIHsKKyAgICAgICAgT2JqZWN0IG9iaiA9IGdldChwcm9iZS5zZXQoY2gpKTsKKyAgICAgICAgcmV0dXJuIChvYmogIT0gbnVsbCkgPyAoU3RyaW5nKW9iaiA6IG51bGw7CisgICAgfQorCisgICAgYm9vbGVhbiBjb250YWlucyhjaGFyIGNoKSB7CisgICAgICAgIHJldHVybiBjb250YWluc0tleShwcm9iZS5zZXQoY2gpKTsKKyAgICB9CisKKyAgICBNdXRhYmxlQ2hhciBwcm9iZSA9IG5ldyBNdXRhYmxlQ2hhcignICcpOworfQorCitjbGFzcyBDb21wTWFwIGV4dGVuZHMgSGFzaE1hcCB7CisgICAgcHVibGljIENvbXBNYXAoKSB7CisgICAgfQorCisgICAgdm9pZCBwdXQoU3RyaW5nIGtleSwgY2hhciB2YWx1ZSkgeworICAgICAgICBwdXQoa2V5LCBuZXcgTXV0YWJsZUNoYXIodmFsdWUpKTsKKyAgICB9CisKKyAgICBjaGFyIGdldChTdHJpbmcga2V5KSB7CisgICAgICAgIE9iamVjdCBvYmogPSBnZXQoKE9iamVjdClrZXkpOworICAgICAgICByZXR1cm4gKG9iaiAhPSBudWxsKSA/ICgoTXV0YWJsZUNoYXIpb2JqKS52YWx1ZSA6IDA7CisgICAgfQorfQorCitjbGFzcyBDaGFyU2V0IGV4dGVuZHMgSGFzaFNldCB7CisgICAgcHVibGljIENoYXJTZXQoKSB7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWRkKGNoYXIgY2gpIHsKKyAgICAgICAgYWRkKG5ldyBNdXRhYmxlQ2hhcihjaCkpOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGNvbnRhaW5zKGNoYXIgY2gpIHsKKyAgICAgICAgcmV0dXJuIGNvbnRhaW5zKHByb2JlLnNldChjaCkpOworICAgIH0KKyAgICBNdXRhYmxlQ2hhciBwcm9iZSA9IG5ldyBNdXRhYmxlQ2hhcignICcpOworfQorCisvKioKKyAqIEFuIGludC0+aW50IG1hcC4gIEVhY2ggdGltZSBhIG5vbi1leGlzdGVudCBrZXkgaXMgbG9va2VkIHVwLAorICogY3JlYXRlIGEgbmV3IG1hcHBpbmcgdG8gdGhlIG5leHQgYXZhaWxhYmxlIGludGVnZXIgdmFsdWUuCisgKi8KK2NsYXNzIE5vbkNvbXBvc2luZ0NvbWJpbmluZ01hcCB7CisgICAgaW50IGluZGV4OworICAgIEhhc2h0YWJsZSBoYXNoOworCisgICAgcHVibGljIE5vbkNvbXBvc2luZ0NvbWJpbmluZ01hcCgpIHsKKyAgICAgICAgaW5kZXggPSAwOworICAgICAgICBoYXNoID0gbmV3IEhhc2h0YWJsZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgZXhpc3RpbmcgbWFwcGluZyBvZiBjbGFzcy4gIElmIG5vIHN1Y2ggbWFwcGluZworICAgICAqIGV4aXN0cywgY3JlYXRlIG9uZSBhbmQgcmV0dXJuIGl0LiAgTmV3IG1hcHBpbmdzIG1hcCB0bworICAgICAqIHplcm8sIHRoZW4gb25lLCBldGMuCisgICAgICovCisgICAgcHVibGljIGludCBnZXRJbmRleEZvcihpbnQgY2NsYXNzKSB7CisgICAgICAgIEludGVnZXIgY2wgPSBuZXcgSW50ZWdlcihjY2xhc3MpOworICAgICAgICBJbnRlZ2VyIGluZCA9IChJbnRlZ2VyKSBoYXNoLmdldChjbCk7CisgICAgICAgIGlmIChpbmQgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGluZC5pbnRWYWx1ZSgpOworICAgICAgICB9CisgICAgICAgIGhhc2gucHV0KGNsLCBuZXcgSW50ZWdlcihpbmRleCkpOworICAgICAgICByZXR1cm4gaW5kZXgrKzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG51bWJlciBvZiBtYXBwaW5ncyBtYWRlIHNvIGZhci4gIFRoYXQgaXMsIGdldEluZGV4Rm9yKCkKKyAgICAgKiBoYXMgcmV0dXJuZWQgaW50ZWdlcnMgMC4uZ2V0SW5kZXhDb3VudCgpLTEuCisgICAgICovCisgICAgcHVibGljIGludCBnZXRJbmRleENvdW50KCkgeworICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdG9vbHMvbm9ybWFsaXplci9RdWlja0NoZWNrQnVpbGRlci5qYXZhIGIvc3JjL2NvbS9pYm0vdG9vbHMvbm9ybWFsaXplci9RdWlja0NoZWNrQnVpbGRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmE4MGE2MjYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90b29scy9ub3JtYWxpemVyL1F1aWNrQ2hlY2tCdWlsZGVyLmphdmEKQEAgLTAsMCArMSw0ODYgQEAKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgKgorKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdG9vbHMvbm9ybWFsaXplci9BdHRpYy9RdWlja0NoZWNrQnVpbGRlci5qYXZhLHYgJCAKKyogJERhdGU6IDIwMDEvMDUvMTggMjA6NDU6MTAgJCAKKyogJFJldmlzaW9uOiAxLjQgJAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitwYWNrYWdlIGNvbS5pYm0udG9vbHMubm9ybWFsaXplcjsKKworaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRXcml0ZXI7CitpbXBvcnQgamF2YS5pby5GaWxlV3JpdGVyOworaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7CitpbXBvcnQgamF2YS5pby5GaWxlUmVhZGVyOworaW1wb3J0IGphdmEuaW8uV3JpdGVyOworaW1wb3J0IGphdmEuaW8uUmVhZGVyOworaW1wb3J0IGphdmEuaW8uRU9GRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5TdHJpbmdUb2tlbml6ZXI7CisKK2ltcG9ydCBjb20uaWJtLnV0aWwuQnl0ZVRyaWU7CitpbXBvcnQgY29tLmlibS50ZXh0LlVDaGFyYWN0ZXI7CitpbXBvcnQgY29tLmlibS50ZXh0LlVURjE2OworCisvKioKKyogQ2xhc3MgdG8gZ2VuZXJhdGUgbW9kaWZpZWQgcXVpY2tjaGVjayBkYXRhIGZvciBjb2xsYXRpb24uCisqIERhdGEgZ2VuZXJhdGVkIGlzIGEgdHJpZSBvZiBub3JtYWxpemF0aW9uIGZvcm0gY29ycmVzcG9uZGluZyB0byB0aGUgaW5kZXggCisqIGNvZGUgcG9pbnQuCisqIEhlbmNlIGNvZGVwb2ludCAweEFCQ0Qgd2lsbCBoYXZlIG5vcm1hbGl6YXRpb24gZm9ybSAKKyogPGNvZGU+CisqICAgIHF1aWNrY2hlY2tbY29kZXBvaW50XSA9IAorKiAgICAgICAgICAgICAgU1RBR0VfM19bU1RBR0VfMl9bU1RBR0VfMV9bY29kZXBvaW50ID4+IFNUQUdFXzFfU0hJRlRfXSArIAorKiAgICAgICAgICAgICAgKChjb2RlcG9pbnQgPj4gU1RBR0VfMl9TSElGVF8pICYgU1RBR0VfMl9NQVNLX0FGVEVSX1NISUZUXyldICsKKyogICAgICAgICAgICAgIChjb2RlcG9pbnQgJiBTVEFHRV8zX01BU0tfKV07CisqIDwvY29kZT4KKyogdmFsdWUgaXMgYSBieXRlIGNvbnRhaW5pbmcgMiBzZXRzIG9mIDQgYml0cyBpbmZvcm1hdGlvbi48YnI+CisqIGJpdHMgMSAyIDMgNCAgICAgICAgICAgICAgICAgICAgICAgIDU2Nzg8YnI+CisqICAgICAgTkZLQyBORkMgTkZLRCBORkQgTUFZQkVTICAgICAgIE5GS0MgTkZDIE5GS0QgTkZEIFlFUzxicj4KKyogaWUgaWYgcXVpY2tbMHhBQkNEXSA9IDEwMDAwMDAxLCB0aGlzIG1lYW5zIHRoYXQgMHhBQkNEIGlzIGluIE5GRCBmb3JtIGFuZCAKKyogbWF5YmUgaW4gTkZLQyBmb3JtLgorKi8KK3B1YmxpYyBjbGFzcyBRdWlja0NoZWNrQnVpbGRlcgoreworICAvLyBwdWJsaWMgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIAorICAvKioKKyAgKiBjb25zdHJ1Y3RvciB3aXRoIGRlZmF1bHQgaW5wdXQsIG91dHB1dCBmaWxlIHBhdGgKKyAgKi8KKyAgcHVibGljIFF1aWNrQ2hlY2tCdWlsZGVyKCkKKyAgeworICB9CisgIAorICAvKioKKyAgKiBCdWlsZGluZyBtZXRob2QuCisgICogRWFjaCB1bmljb2RlIGNoYXJhY3RlciB3aWxsIGJlIHVzZWQgdG8gZ2VuZXJhdGUgZGF0YSwgb3V0cHV0IHRvIHRoZSBkZWZhdWx0CisgICogZmlsZSBwYXRoICAKKyAgKi8KKyAgcHVibGljIHZvaWQgYnVpbGQoKQorICB7CisgICAgYnVpbGQoREVGQVVMVF9JTlBVVF9QQVRIXywgREVGQVVMVF9PVVRQVVRfUEFUSF8pOworICB9CisgIAorICAvKioKKyAgKiBCdWlsZGluZyBtZXRob2QuCisgICogRWFjaCB1bmljb2RlIGNoYXJhY3RlciB3aWxsIGJlIHVzZWQgdG8gZ2VuZXJhdGUgZGF0YS4KKyAgKiBAcGFyYW0gaW5wdXQgZmlsZSBwYXRoCisgICogQHBhcmFtIG91dHB1dCBmaWxlIHBhdGgKKyAgKi8KKyAgcHVibGljIHZvaWQgYnVpbGQoU3RyaW5nIGlucHV0LCBTdHJpbmcgb3V0cHV0KQorICB7ICAgCisgICAgdHJ5CisgICAgeworICAgICAgYnl0ZSByZXN1bHRbXSA9IGdldFF1aWNrQ2hlY2tBcnJheShpbnB1dCk7CisgICAgICBpbnQgbm90eWVzW10gPSBnZXROb3RZZXNGaXJzdENQKHJlc3VsdCk7CisgICAgICBCeXRlVHJpZSB0cmllID0gbmV3IEJ5dGVUcmllKHJlc3VsdCk7CisgICAgICBGaWxlV3JpdGVyIGYgPSBuZXcgRmlsZVdyaXRlcihvdXRwdXQpOworICAgICAgQnVmZmVyZWRXcml0ZXIgdyA9IG5ldyBCdWZmZXJlZFdyaXRlcihmKTsKKyAgICAgIAorICAgICAgdy53cml0ZSgiIyBRdWlja0NoZWNrIGRhdGFcbiIpOworICAgICAgdy53cml0ZSgiIyBHZW5lcmF0ZWQgZnJvbSBOb3JtYWxpemF0aW9uUXVpY2tDaGVjay50eHRcblxuIik7CisgICAgICB3LndyaXRlKCJpbnQgVVFVSUNLX0NIRUNLX01JTl9WQUxVRVNfW10gPSB7Iik7CisgICAgICB3LndyaXRlKCIweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG5vdHllc1swXSkgKyAiLCAweCIgKyAKKyAgICAgICAgICAgICAgSW50ZWdlci50b0hleFN0cmluZyhub3R5ZXNbMV0pICsgIiwgMHgiICsgCisgICAgICAgICAgICAgIEludGVnZXIudG9IZXhTdHJpbmcobm90eWVzWzJdKSArICIsIDB4IiArIAorICAgICAgICAgICAgICBJbnRlZ2VyLnRvSGV4U3RyaW5nKG5vdHllc1szXSkgKyAifTtcbiIpOworICAgICAgCisgICAgICBTdHJpbmcgcyA9IHRyaWUudG9TdHJpbmcoKTsKKyAgICAgIHcud3JpdGUocyk7CisgICAgICB3LmNsb3NlKCk7CisgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oInRlc3QgIiArIHRlc3QoaW5wdXQsIHRyaWUpKTsKKyAgICB9CisgICAgY2F0Y2goRXhjZXB0aW9uIGUpCisgICAgeworICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKKyAgICB9CisgIH0KKyAgCisgIC8qKgorICAqIE1haW4gbWV0aG9kCisgICovCisgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZyBhcmdbXSkKKyAgeworICAgIFF1aWNrQ2hlY2tCdWlsZGVyIHFjYiA9IG5ldyBRdWlja0NoZWNrQnVpbGRlcigpOworICAgIHFjYi5idWlsZCgpOworICB9CisgIAorICAvLyBwcml2YXRlIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgCisgIC8qKgorICAqIE1ldGhvZCB0byBtYW5pcHVsYXRlIHRoZSB2YWx1ZXMgb2YgdGhlIHJlYWQgaW4gbm9ybWFsaXplZCBmb3JtCisgICogQHBhcmFtIGFycmF5IG9mIHF1aWNrY2hlY2sgdmFsdWVzCisgICogQHBhcmFtIHN0YXJ0Y3Agc3RhcnRpbmcgY29kZSBwb2ludAorICAqIEBwYXJhbSBlbmRjcCBlbmRpbmcgY29kZSBwb2ludAorICAqIEBwYXJhbSBub3JtYWxpemF0aW9uZm9ybWF0IG5vcm1hbGl6YXRpb24gZm9ybWF0IGFuZCB0aGUgZm9sbG93aW5nIGFyZ3VtZW50CisgICogICAgICAgIHN0YXRlIGluZGljYXRlcyBpZiBjb2RlcG9pbnRzIGZyb20gc3RhcnRjcCB0byBlbmRjcCBhcmUgb2YgdGhlIAorICAqICAgICAgICBpbmRpY2F0ZWQgbm9ybWFsaXphdGlvbiBmb3JtYXQKKyAgKiBAcGFyYW0gc3RhdGUgaW5kaWNhdGVzIGlmIGNvZGVwb2ludHMgZnJvbSBzdGFydGNwIHRvIGVuZGNwIGFyZSBvZiB0aGUgCisgICogICAgICAgIGFyZ3VtZW50IG5vcm1hbGl6YXRpb24gZm9ybWF0CisgICovCisgIHByaXZhdGUgdm9pZCBmb3JtUXVpY2tDaGVja1ZhbHVlKGJ5dGVbXSBhcnJheSwgaW50IHN0YXJ0Y3AsIGludCBlbmRjcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG5vcm1hbGl6YXRpb25mb3JtYXQsIFN0cmluZyBzdGF0ZSkgCisgIHsKKyAgICBieXRlIHZhbHVlID0gTkZEX01BWUJFX01BU0tfOworICAgIGJ5dGUgY2xlYXIgPSBORkRfTk9fTUFTS187CisKKyAgICBpZiAobm9ybWFsaXphdGlvbmZvcm1hdC5lcXVhbHMoTkZDXykpIHsKKyAgICAgIGNsZWFyID0gTkZDX05PX01BU0tfOworICAgICAgaWYgKHN0YXRlLmVxdWFscyhOT18pKSB7CisgICAgICAgIHZhbHVlID0gTkZDX05PX01BU0tfOworICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGlmIChzdGF0ZS5lcXVhbHMoWUVTXykpIHsKKyAgICAgICAgICB2YWx1ZSA9IE5GQ19ZRVNfTUFTS187CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgdmFsdWUgPSBORkNfTUFZQkVfTUFTS187CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICBpZiAobm9ybWFsaXphdGlvbmZvcm1hdC5lcXVhbHMoTkZEXykpIHsKKyAgICAgICAgaWYgKHN0YXRlLmVxdWFscyhOT18pKSB7CisgICAgICAgICAgdmFsdWUgPSBORkRfTk9fTUFTS187CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgaWYgKHN0YXRlLmVxdWFscyhZRVNfKSkgeworICAgICAgICAgICAgdmFsdWUgPSBORkRfWUVTX01BU0tfOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIGlmIChub3JtYWxpemF0aW9uZm9ybWF0LmVxdWFscyhORktDXykpIHsKKyAgICAgICAgICBjbGVhciA9IE5GS0NfTk9fTUFTS187CisgICAgICAgICAgaWYgKHN0YXRlLmVxdWFscyhOT18pKSB7CisgICAgICAgICAgICB2YWx1ZSA9IE5GS0NfTk9fTUFTS187CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKHN0YXRlLmVxdWFscyhZRVNfKSkgeworICAgICAgICAgICAgICB2YWx1ZSA9IE5GS0NfWUVTX01BU0tfOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIHZhbHVlID0gTkZLQ19NQVlCRV9NQVNLXzsgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGlmIChub3JtYWxpemF0aW9uZm9ybWF0LmVxdWFscyhORktEXykpIHsKKyAgICAgICAgICAgIGNsZWFyID0gTkZLRF9OT19NQVNLXzsKKyAgICAgICAgICAgIGlmIChzdGF0ZS5lcXVhbHMoTk9fKSkgeworICAgICAgICAgICAgICB2YWx1ZSA9IE5GS0RfTk9fTUFTS187CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgaWYgKHN0YXRlLmVxdWFscyhZRVNfKSkgeworICAgICAgICAgICAgICAgIHZhbHVlID0gTkZLRF9ZRVNfTUFTS187CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgdmFsdWUgPSBORktEX01BWUJFX01BU0tfOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgZm9yICg7IHN0YXJ0Y3AgPD0gZW5kY3A7IHN0YXJ0Y3AgKyspIHsKKyAgICAgIGFycmF5W3N0YXJ0Y3BdICY9IGNsZWFyOworICAgICAgaWYgKHZhbHVlICE9IGNsZWFyKSB7CisgICAgICAgIGFycmF5W3N0YXJ0Y3BdIHw9IHZhbHVlOworICAgICAgfQorICAgIH0KKyAgfQorCisgIC8qKgorICAqIFJlYWRzIGluIHRoZSBOb3JtYWxpemF0aW9uUXVpY2tDaGVjay50eHQgZmlsZSBhbmQgZ2VuZXJhdGVzIGEgYnl0ZSBvZiAKKyAgKiBRdWlja0NoZWNrIGRhdGEgZm9yIGVhY2ggY29kZXBvaW50CisgICogQHBhcmFtIGlucHV0IGZpbGUgcGF0aAorICAqIEBleGNlcHRpb24gdGhyb3duIHdoZW4gZmlsZSByZWFkaW5nIGVycm9yIG9jY3VycworICAqLworICBwcml2YXRlIGJ5dGVbXSBnZXRRdWlja0NoZWNrQXJyYXkoU3RyaW5nIGlucHV0KSB0aHJvd3MgRXhjZXB0aW9uCisgIHsKKyAgICBieXRlIHJlc3VsdFtdID0gbmV3IGJ5dGVbVUNoYXJhY3Rlci5NQVhfVkFMVUUgKyAxXTsKKyAgICAKKyAgICAvLyBpbml0aWFsaXppbmcgcXVpY2tjaGVjayBhcnJheQorICAgIGluaXRpYWxpemVRdWlja0NoZWNrQXJyYXkocmVzdWx0KTsKKyAgICAKKyAgICBTdHJpbmdUb2tlbml6ZXIgc3Q7CisgICAgLy8gcmVhZCBpbiBzdGFydCBhbmQgZW5kIGNvZGVwb2ludAorICAgIGludCBzdGFydGNwLAorICAgICAgICBlbmRjcDsKKyAgICAvLyByZWFkIGluIG5vcm1hbGl6YXRpb24gZm9ybWF0IGFuZCBpdHMgY29ycmVzcG9uZGluZyB2YWx1ZQorICAgIFN0cmluZyB0b2tlbiwKKyAgICAgICAgICAgbmYsCisgICAgICAgICAgIGNoZWNrOworICAgIAorICAgIHRyeQorICAgIHsKKyAgICAgIEZpbGVSZWFkZXIgZiA9IG5ldyBGaWxlUmVhZGVyKGlucHV0KTsKKyAgICAgIEJ1ZmZlcmVkUmVhZGVyIHIgPSBuZXcgQnVmZmVyZWRSZWFkZXIoZik7CisgICAgICBTdHJpbmcgcyA9ICIiOworICAgICAgd2hpbGUgKHRydWUpCisgICAgICB7CisgICAgICAgIHMgPSByLnJlYWRMaW5lKCk7CisgICAgICAgIGlmIChzID09IG51bGwpCisgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgCisgICAgICAgIGlmICghcy5lcXVhbHMoIiIpICYmIHMuY2hhckF0KDApICE9ICcjJykKKyAgICAgICAgeworICAgICAgICAgIHN0ID0gbmV3IFN0cmluZ1Rva2VuaXplcihzLCAiOyAiKTsKKyAgICAgICAgICBzdGFydGNwID0gSW50ZWdlci5wYXJzZUludChzdC5uZXh0VG9rZW4oKSwgMTYpOworICAgICAgICAgIGVuZGNwID0gSW50ZWdlci5wYXJzZUludChzdC5uZXh0VG9rZW4oKSwgMTYpOworICAgICAgICAgIG5mID0gc3QubmV4dFRva2VuKCk7CisgICAgICAgICAgY2hlY2sgPSBzdC5uZXh0VG9rZW4oKTsKKyAgICAgICAgICBmb3JtUXVpY2tDaGVja1ZhbHVlKHJlc3VsdCwgc3RhcnRjcCwgZW5kY3AsIG5mLCBjaGVjayk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIHIuY2xvc2UoKTsKKyAgICB9CisgICAgY2F0Y2goRU9GRXhjZXB0aW9uIGUpCisgICAgeworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworICB9CisgIAorICAvKioKKyAgKiBJbml0aWFsaXppbmcgcXVpY2tjaGVjayBhcnJheS4KKyAgKiBBbGwgYXNzaWduZWQgY29kZXBvaW50cyBoYXZlIHRoZSB2YWx1ZSBZLCBhbGwgdW5hc3NpZ25lZCBjb2RlcG9pbnRzIGhhdmUgCisgICogdGhlIHZhbHVlIE0sIGFsbCBub24tY2hhcmFjdGVyIGNvZGVwb2ludHMgKEQ4MDAuLkRGRkYsICpGRkZFLCAqRkZGRikgaGF2ZSAKKyAgKiB0aGUgdmFsdWUgTi4KKyAgKiBAcGFyYW0gYXJyYXkgcXVpY2tjaGVjayBieXRlIGFycmF5CisgICovCisgIHByaXZhdGUgdm9pZCBpbml0aWFsaXplUXVpY2tDaGVja0FycmF5KGJ5dGVbXSBhcnJheSkKKyAgeworICAgIGZvciAoaW50IGNoID0gVUNoYXJhY3Rlci5NSU5fVkFMVUU7IGNoIDw9IFVDaGFyYWN0ZXIuTUFYX1ZBTFVFOyBjaCArKykKKyAgICB7CisgICAgICBhcnJheVtjaF0gPSBERUZJTkVEX0NIQVJfTk9STV9WQUxVRV87ICAKKyAgICAgIGlmICgoY2ggPj0gU1VSUk9HQVRFX1NUQVJUXyAmJiBjaCA8PSBTVVJST0dBVEVfRU5EXykgfHwgCisgICAgICAgICAgKChjaCAmIE1BU0tfTEFTVF8xNl9CSVRTXykgPj0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlOX05PVF9BX0NIQVJfQUZURVJfTUFTS19MQVNUXzE2X0JJVFNfKSkKKyAgICAgICAgYXJyYXlbY2hdID0gTk9UX0FfQ0hBUkFDVEVSX1ZBTFVFXzsKKyAgICB9CisgIH0KKyAgCisgIC8qKgorICAqIFRlc3RzIHRoZSBnZW5lcmF0ZWQgdHJpZSB3aXRoIHRoZSBkYXRhIGluIHRoZSBpbnB1dCBmaWxlLgorICAqIEBwYXJhbSBpbnB1dCBmaWxlIHBhdGgKKyAgKiBAcGFyYW0gdHJpZSBvYmplY3QKKyAgKiBAZXhjZXB0aW9uIHRocm93biB3aGVuIGZpbGUgcmVhZGluZyBlcnJvciBvY2N1cnMKKyAgKi8KKyAgcHJpdmF0ZSBib29sZWFuIHRlc3QoU3RyaW5nIGlucHV0LCBCeXRlVHJpZSB0cmllKSB0aHJvd3MgRXhjZXB0aW9uCisgIHsKKyAgICBTdHJpbmdUb2tlbml6ZXIgc3Q7CisgICAgLy8gcmVhZCBpbiBzdGFydCBhbmQgZW5kIGNvZGVwb2ludAorICAgIGludCBzdGFydGNwLAorICAgICAgICBlbmRjcDsKKyAgICAvLyByZWFkIGluIG5vcm1hbGl6YXRpb24gZm9ybWF0IGFuZCBpdHMgY29ycmVzcG9uZGluZyB2YWx1ZQorICAgIFN0cmluZyB0b2tlbiwKKyAgICAgICAgICAgbmYsCisgICAgICAgICAgIGNoZWNrOworICAgIGJ5dGUgdGVtcDsKKyAgICAKKyAgICB0cnkKKyAgICB7CisgICAgICBGaWxlUmVhZGVyIGYgPSBuZXcgRmlsZVJlYWRlcihpbnB1dCk7CisgICAgICBCdWZmZXJlZFJlYWRlciByID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKGYpOworICAgICAgU3RyaW5nIHMgPSAiIjsKKyAgICAgIHdoaWxlICh0cnVlKQorICAgICAgeworICAgICAgICBzID0gci5yZWFkTGluZSgpOworICAgICAgICBpZiAocyA9PSBudWxsKQorICAgICAgICAgIGJyZWFrOworICAgICAgICAgIAorICAgICAgICBpZiAoIXMuZXF1YWxzKCIiKSAmJiBzLmNoYXJBdCgwKSAhPSAnIycpCisgICAgICAgIHsKKyAgICAgICAgICBzdCA9IG5ldyBTdHJpbmdUb2tlbml6ZXIocywgIjsgIik7CisgICAgICAgICAgc3RhcnRjcCA9IEludGVnZXIucGFyc2VJbnQoc3QubmV4dFRva2VuKCksIDE2KTsKKyAgICAgICAgICBlbmRjcCA9IEludGVnZXIucGFyc2VJbnQoc3QubmV4dFRva2VuKCksIDE2KTsKKyAgICAgICAgICBuZiA9IHN0Lm5leHRUb2tlbigpOworICAgICAgICAgIGNoZWNrID0gc3QubmV4dFRva2VuKCk7CisgICAgICAgICAgCisgICAgICAgICAgYnl0ZSBtYXNrID0gMDsKKyAgICAgICAgICAKKyAgICAgICAgICBpZiAobmYuZXF1YWxzKE5GQ18pKQorICAgICAgICAgICAgbWFzayA9IChieXRlKTB4NDQ7CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKG5mLmVxdWFscyhORkRfKSkKKyAgICAgICAgICAgICAgbWFzayA9IChieXRlKTB4MTE7CisgICAgICAgICAgICBlbHNlIAorICAgICAgICAgICAgICBpZiAobmYuZXF1YWxzKE5GS0NfKSkKKyAgICAgICAgICAgICAgICBtYXNrID0gKGJ5dGUpMHg4ODsKKyAgICAgICAgICAgICAgZWxzZSAKKyAgICAgICAgICAgICAgICBpZiAobmYuZXF1YWxzKE5GS0RfKSkKKyAgICAgICAgICAgICAgICAgIG1hc2sgPSAoYnl0ZSkweDIyOworICAgICAgICAgIGZvciAoOyBzdGFydGNwIDw9IGVuZGNwOyBzdGFydGNwICsrKQorICAgICAgICAgIHsKKyAgICAgICAgICAgIHRlbXAgPSAoYnl0ZSkodHJpZS5nZXRWYWx1ZShzdGFydGNwKSAmIG1hc2spOworICAgICAgICAgICAgaWYgKGNoZWNrLmVxdWFscyhOT18pICYmICh0ZW1wICE9IDApKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkVycm9yIGF0IE5PICIgKyBzdGFydGNwKTsKKyAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoY2hlY2suZXF1YWxzKFlFU18pICYmICh0ZW1wIDwgMCB8fCB0ZW1wID4gMHg4KSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJFcnJvciBhdCBZRVMgIiArIHN0YXJ0Y3ApOworICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChjaGVjay5lcXVhbHMoTUFZQkVfKSAmJiAodGVtcCA8IDB4MTApICYmICh0ZW1wICE9IC0xMjgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkVycm9yIGF0IE1BWUJFICIgKyBzdGFydGNwKTsKKyAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgICAgci5jbG9zZSgpOworICAgIH0KKyAgICBjYXRjaChFT0ZFeGNlcHRpb24gZSkKKyAgICB7CisgICAgfQorICAgIHJldHVybiB0cnVlOworICB9CisgIAorICAvKioKKyAgKiBSZXR1cm5zIGFuIGFycmF5IG9mIHRoZSBmaXJzdCBjb2RlcG9pbnRzIHRoYXQgZG8gbm90IGhhdmUgYSBZRVMgZm9yIHRoZWlyCisgICogcmVzcGVjdGl2ZSBub3JtYWxpemF0aW9uIGZvcm1hdC4gSGVuY2UgCisgICogPHA+IGdldE5vdFllc0ZpcnN0Q1BbMF0gaXMgdGhlIGZpcnN0IGNvZGVwb2ludCB0aGF0IGlzIG5vdCBhIE5GRF9ZRVM8YnI+CisgICogZ2V0Tm90WWVzRmlyc3RDUFsxXSBpcyB0aGUgZmlyc3QgY29kZXBvaW50IHRoYXQgaXMgbm90IGEgTkZLRF9ZRVM8YnI+CisgICogZ2V0Tm90WWVzRmlyc3RDUFsyXSBpcyB0aGUgZmlyc3QgY29kZXBvaW50IHRoYXQgaXMgbm90IGEgTkZDX1lFUzxicj4KKyAgKiBnZXROb3RZZXNGaXJzdENQWzNdIGlzIHRoZSBmaXJzdCBjb2RlcG9pbnQgdGhhdCBpcyBub3QgYSBORktDX1lFUzxicj4KKyAgKiBAcGFyYW0gcXVpY2tjaGVjayBhcnJheSBvZiBxdWlja2NoZWNrIHZhbHVlcworICAqIEByZXR1cm4gYXJyYXkgb2YgZmlyc3QgY29kZXBvaW50cyBub3QgYSBZRVMKKyAgKi8KKyAgcHJpdmF0ZSBpbnRbXSBnZXROb3RZZXNGaXJzdENQKGJ5dGVbXSBxdWlja2NoZWNrKQorICB7CisgICAgaW50IHJlc3VsdFtdID0ge1VDaGFyYWN0ZXIuTUFYX1ZBTFVFLCBVQ2hhcmFjdGVyLk1BWF9WQUxVRSwgCisgICAgICAgICAgICAgICAgICAgIFVDaGFyYWN0ZXIuTUFYX1ZBTFVFLCBVQ2hhcmFjdGVyLk1BWF9WQUxVRX07CisgICAgaW50IGxlbmd0aCA9IHF1aWNrY2hlY2subGVuZ3RoOworICAgIGJ5dGUgdmFsdWU7CisgICAgZm9yIChpbnQgY29kZXBvaW50ID0gMDsgY29kZXBvaW50IDwgVUNoYXJhY3Rlci5NQVhfVkFMVUU7IGNvZGVwb2ludCArKykKKyAgICB7CisgICAgICB2YWx1ZSA9IHF1aWNrY2hlY2tbY29kZXBvaW50XTsKKyAgICAgIGlmICgodmFsdWUgJiBORkRfWUVTX01BU0tfKSA9PSAwICYmIChjb2RlcG9pbnQgPCByZXN1bHRbMF0pKQorICAgICAgICByZXN1bHRbMF0gPSBjb2RlcG9pbnQ7CisgICAgICBpZiAoKHZhbHVlICYgTkZLRF9ZRVNfTUFTS18pID09IDAgJiYgKGNvZGVwb2ludCA8IHJlc3VsdFsxXSkpCisgICAgICAgIHJlc3VsdFsxXSA9IGNvZGVwb2ludDsKKyAgICAgIGlmICgodmFsdWUgJiBORkNfWUVTX01BU0tfKSA9PSAwICYmIChjb2RlcG9pbnQgPCByZXN1bHRbMl0pKQorICAgICAgICByZXN1bHRbMl0gPSBjb2RlcG9pbnQ7CisgICAgICBpZiAoKHZhbHVlICYgTkZLQ19ZRVNfTUFTS18pID09IDAgJiYgKGNvZGVwb2ludCA8IHJlc3VsdFszXSkpCisgICAgICAgIHJlc3VsdFszXSA9IGNvZGVwb2ludDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorICAKKyAgLy8gcHJpdmF0ZSBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIAorICAvKioKKyAgKiBJbnB1dCBmaWxlIHBhdGgKKyAgKi8KKyAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgREVGQVVMVF9JTlBVVF9QQVRIXyA9IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGEvL3VuaWNvZGUvL05vcm1hbGl6YXRpb25RdWlja0NoZWNrLnR4dCI7CisgIAorICAvKioKKyAgKiBPdXRwdXQgZmlsZSBwYXRoCisgICovCisgIHByaXZhdGUgZmluYWwgU3RyaW5nIERFRkFVTFRfT1VUUFVUX1BBVEhfID0gIlF1aWNrQ2hlY2sudHh0IjsKKyAgCisgIC8qKgorICAqIDE2IGJpdHMgbWFzaworICAqLworICBwcml2YXRlIGZpbmFsIGludCBNQVNLX0xBU1RfMTZfQklUU18gPSAweEZGRkY7CisgIAorICAvKioKKyAgKiBNaW5pbXVtIHZhbHVlIG9mIGEgbm90LWEtY2hhcmFjdGVyIGFmdGVyIHRoZSAxNiBiaXQgbWFza2luZworICAqLworICBwcml2YXRlIGZpbmFsIGludCBNSU5fTk9UX0FfQ0hBUl9BRlRFUl9NQVNLX0xBU1RfMTZfQklUU18gPSAweEZGRkU7CisgIAorICAvKioKKyAgKiBTdXJyb2dhdGUgY29kZSBwb2ludHMKKyAgKi8KKyAgcHJpdmF0ZSBmaW5hbCBpbnQgU1VSUk9HQVRFX1NUQVJUXyA9IDB4RDgwMDsKKyAgcHJpdmF0ZSBmaW5hbCBpbnQgU1VSUk9HQVRFX0VORF8gICA9IDB4REJGRjsKKworICAvKioKKyAgKiBORkQgMiBiaXQgbWFzaworICAqLworICBwcml2YXRlIGZpbmFsIGJ5dGUgTkZEX05PX01BU0tfID0gKGJ5dGUpMHhFRTsKKyAgcHJpdmF0ZSBmaW5hbCBieXRlIE5GRF9ZRVNfTUFTS18gPSAoYnl0ZSkweDAxOworICBwcml2YXRlIGZpbmFsIGJ5dGUgTkZEX01BWUJFX01BU0tfID0gKGJ5dGUpMHgxMDsKKworICAvKioKKyAgKiBORktEIDIgYml0IG1hc2sKKyAgKi8KKyAgcHJpdmF0ZSBmaW5hbCBieXRlIE5GS0RfTk9fTUFTS18gPSAoYnl0ZSkweEREOworICBwcml2YXRlIGZpbmFsIGJ5dGUgTkZLRF9ZRVNfTUFTS18gPSAoYnl0ZSkweDAyOworICBwcml2YXRlIGZpbmFsIGJ5dGUgTkZLRF9NQVlCRV9NQVNLXyA9IChieXRlKTB4ZDA7CisKKyAgLyoqCisgICogTkZDIDIgYml0IG1hc2sKKyAgKi8KKyAgcHJpdmF0ZSBmaW5hbCBieXRlIE5GQ19OT19NQVNLXyA9IChieXRlKTB4QkI7CisgIHByaXZhdGUgZmluYWwgYnl0ZSBORkNfWUVTX01BU0tfID0gKGJ5dGUpMHgwNDsKKyAgcHJpdmF0ZSBmaW5hbCBieXRlIE5GQ19NQVlCRV9NQVNLXyA9IChieXRlKTB4NDA7CisKKyAgLyoqCisgICogTkZLQyAyIGJpdCBtYXNrCisgICovCisgIHByaXZhdGUgZmluYWwgYnl0ZSBORktDX05PX01BU0tfID0gKGJ5dGUpMHg3NzsKKyAgcHJpdmF0ZSBmaW5hbCBieXRlIE5GS0NfWUVTX01BU0tfID0gKGJ5dGUpMHgwODsKKyAgcHJpdmF0ZSBmaW5hbCBieXRlIE5GS0NfTUFZQkVfTUFTS18gPSAoYnl0ZSkweDgwOworCisgIC8qKgorICAqIERlZmF1bHQgdmFsdWUgZm9yIHVuZGVmaW5lZCBjaGFyYWN0ZXJzCisgICovCisgIHByaXZhdGUgZmluYWwgYnl0ZSBVTkRFRklORURfQ0hBUl9OT1JNX1ZBTFVFXyA9IChieXRlKTB4RjA7CisKKyAgLyoqCisgICogRGVmYXVsdCB2YWx1ZSBmb3IgZGVmaW5lZCBjaGFyYWN0ZXJzCisgICovCisgIHByaXZhdGUgZmluYWwgYnl0ZSBERUZJTkVEX0NIQVJfTk9STV9WQUxVRV8gPSAoYnl0ZSkweDBGOworCisgIC8qKgorICAqIERlZmF1bHQgdmFsdWUgZm9yIG5vdC1hLWNoYXJhY3RlcgorICAqLworICBwcml2YXRlIGZpbmFsIGJ5dGUgTk9UX0FfQ0hBUkFDVEVSX1ZBTFVFXyA9IChieXRlKTB4MDA7CisgIAorICAvKioKKyAgKiBORkMgbmFtZQorICAqLworICBwcml2YXRlIGZpbmFsIFN0cmluZyBORkNfID0gIk5GQyI7CisgIAorICAvKioKKyAgKiBORktDIG5hbWUKKyAgKi8KKyAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgTkZLQ18gPSAiTkZLQyI7CisgIAorICAvKioKKyAgKiBORkQgbmFtZQorICAqLworICBwcml2YXRlIGZpbmFsIFN0cmluZyBORkRfID0gIk5GRCI7CisgIAorICAvKioKKyAgKiBORktEIG5hbWUKKyAgKi8KKyAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgTkZLRF8gPSAiTkZLRCI7CisgIAorICAvKioKKyAgKiBZRVMKKyAgKi8KKyAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgWUVTXyA9ICJZIjsKKyAgCisgIC8qKgorICAqIE5PCisgICovCisgIHByaXZhdGUgZmluYWwgU3RyaW5nIE5PXyA9ICJOIjsKKyAgCisgIC8qKgorICAqIE1BWUJFCisgICovCisgIHByaXZhdGUgZmluYWwgU3RyaW5nIE1BWUJFXyA9ICJNIjsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90b29scy9ub3JtYWxpemVyL1NvdXJjZVdyaXRlci5qYXZhIGIvc3JjL2NvbS9pYm0vdG9vbHMvbm9ybWFsaXplci9Tb3VyY2VXcml0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lOTUxZjRiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdG9vbHMvbm9ybWFsaXplci9Tb3VyY2VXcml0ZXIuamF2YQpAQCAtMCwwICsxLDUyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90b29scy9ub3JtYWxpemVyL0F0dGljL1NvdXJjZVdyaXRlci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA3LzEyIDE2OjQxOjI2ICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS50b29scy5ub3JtYWxpemVyOworCitpbXBvcnQgY29tLmlibS50ZXh0Lio7CitpbXBvcnQgY29tLmlibS51dGlsLkNvbXBhY3RDaGFyQXJyYXk7CitpbXBvcnQgY29tLmlibS51dGlsLkNvbXBhY3RCeXRlQXJyYXk7CitpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBVdGlsaXRpZXMgZm9yIHdyaXRpbmcgZGF0YSBvdXQgYXMgY29tcGlsYWJsZSBzb3VyY2UgY29kZQorLy8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBTb3VyY2VXcml0ZXIgeworICAgIGFic3RyYWN0IHB1YmxpYyB2b2lkIGNsb3NlKCk7CisgICAgYWJzdHJhY3QgcHVibGljIHZvaWQgd3JpdGUoU3RyaW5nIG5hbWUsIHNob3J0IHZhbHVlKTsKKyAgICBhYnN0cmFjdCBwdWJsaWMgdm9pZCB3cml0ZShTdHJpbmcgbmFtZSwgaW50IHZhbHVlKTsKKworICAgIGFic3RyYWN0IHB1YmxpYyB2b2lkIHdyaXRlKFN0cmluZyBuYW1lLCBDb21wYWN0Q2hhckFycmF5IGFycmF5KTsKKyAgICBhYnN0cmFjdCBwdWJsaWMgdm9pZCB3cml0ZShTdHJpbmcgbmFtZSwgQ29tcGFjdEJ5dGVBcnJheSBhcnJheSk7CisgICAgYWJzdHJhY3QgcHVibGljIHZvaWQgd3JpdGUoU3RyaW5nIG5hbWUsIFN0cmluZ0J1ZmZlciBzdHIpOworCisgICAgYWJzdHJhY3QgcHVibGljIHZvaWQgd3JpdGUoU3RyaW5nIG5hbWUsIGNoYXJbXSBhcnJheSk7CisgICAgYWJzdHJhY3QgcHVibGljIHZvaWQgd3JpdGUoU3RyaW5nIG5hbWUsIGludFtdIGFycmF5KTsKKworICAgIGFic3RyYWN0IHB1YmxpYyB2b2lkIHdyaXRlSGV4KFN0cmluZyBuYW1lLCBjaGFyIHZhbHVlKTsKKyAgICBhYnN0cmFjdCBwdWJsaWMgdm9pZCB3cml0ZUhleChTdHJpbmcgbmFtZSwgaW50IHZhbHVlKTsKKworICAgIHZvaWQgd3JpdGVIZWFkZXIoUHJpbnRXcml0ZXIgb3V0KSB7CisgICAgICAgIG91dC5wcmludGxuKCIvKiIpOworICAgICAgICBvdXQucHJpbnRsbigiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIik7CisgICAgICAgIG91dC5wcmludGxuKCIqICAgQ29weXJpZ2h0IChjKSAxOTk3LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMiKTsKKyAgICAgICAgb3V0LnByaW50bG4oIiogICBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4iKTsKKyAgICAgICAgb3V0LnByaW50bG4oIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIpOworICAgICAgICBvdXQucHJpbnRsbigiKiA+IFRISVMgRklMRSBXQVMgTUFDSElORSBHRU5FUkFURUQgPCIpOworICAgICAgICBvdXQucHJpbnRsbigiKiA+ICAgICAgIERPIE5PVCBFRElUIEJZIEhBTkQgICAgICAgPCIpOworICAgICAgICBvdXQucHJpbnRsbigiKiA+ICAgICAgUlVOIFRPT0wgVE8gUkVHRU5FUkFURSAgICAgPCIpOworICAgICAgICBvdXQucHJpbnRsbigiKiBUb29sOiAiICsgTm9ybWFsaXplci5jbGFzcy5nZXROYW1lKCkpOworICAgICAgICBvdXQucHJpbnRsbigiKiBDcmVhdGlvbiBkYXRlOiAiICsgbmV3IERhdGUoKSk7CisgICAgICAgIG91dC5wcmludGxuKCIqLyIpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rvb2xzL25vcm1hbGl6ZXIvcGFja2FnZS5odG1sIGIvc3JjL2NvbS9pYm0vdG9vbHMvbm9ybWFsaXplci9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTFlYWNjZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rvb2xzL25vcm1hbGl6ZXIvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8IS0tICBDb3B5cmlnaHQgKEMpIDIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisgIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS90b29scy9ub3JtYWxpemVyL0F0dGljL3BhY2thZ2UuaHRtbCx2ICQKKyAgJFJldmlzaW9uOiAxLjEgJAorICAkRGF0ZTogMjAwMC8wMy8xNSAyMTozNTo1MiAkCistLT4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIj4KK1Rvb2wgdXNlZCB0byByZWJ1aWxkIGRhdGEgdGFibGVzIHVzZWQgYnkgTm9ybWFsaXplci4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS90b29scy9yYmJpL0J1aWxkRGljdGlvbmFyeUZpbGUuamF2YSBiL3NyYy9jb20vaWJtL3Rvb2xzL3JiYmkvQnVpbGREaWN0aW9uYXJ5RmlsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjIwN2QwOGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90b29scy9yYmJpL0J1aWxkRGljdGlvbmFyeUZpbGUuamF2YQpAQCAtMCwwICsxLDg3NiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdG9vbHMvcmJiaS9BdHRpYy9CdWlsZERpY3Rpb25hcnlGaWxlLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDkvMjIgMTg6NTg6MjYgJCAKKyAqICRSZXZpc2lvbjogMS4xICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnRvb2xzLnJiYmk7CisKK2ltcG9ydCBjb20uaWJtLnV0aWwuQ29tcGFjdEJ5dGVBcnJheTsKK2ltcG9ydCBjb20uaWJtLnRleHQuVW5pY29kZVNldDsKK2ltcG9ydCBqYXZhLmlvLio7CitpbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOworaW1wb3J0IGphdmEudXRpbC5WZWN0b3I7CisKK3B1YmxpYyBjbGFzcyBCdWlsZERpY3Rpb25hcnlGaWxlIHsKKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmcgYXJnc1tdKQorICAgICAgICAgICAgdGhyb3dzIEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiwgVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiwgSU9FeGNlcHRpb24geworICAgICAgICBTdHJpbmcgZmlsZW5hbWUgPSBhcmdzWzBdOworICAgICAgICBTdHJpbmcgZW5jb2RpbmcgPSAiIjsKKyAgICAgICAgU3RyaW5nIG91dHB1dEZpbGUgPSAiIjsKKyAgICAgICAgU3RyaW5nIGxpc3RpbmdGaWxlID0gIiI7CisKKyAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID49IDIpCisgICAgICAgICAgICBlbmNvZGluZyA9IGFyZ3NbMV07CisKKyAgICAgICAgaWYoYXJncy5sZW5ndGggPj0gMykKKyAgICAgICAgICAgIG91dHB1dEZpbGUgPSBhcmdzWzJdOworCisgICAgICAgIGlmIChhcmdzLmxlbmd0aCA+PSA0KQorICAgICAgICAgICAgbGlzdGluZ0ZpbGUgPSBhcmdzWzNdOworCisgICAgICAgIEJ1aWxkRGljdGlvbmFyeUZpbGUgZGljdGlvbmFyeSA9IG5ldyBCdWlsZERpY3Rpb25hcnlGaWxlKCk7CisgICAgICAgIGRpY3Rpb25hcnkuYnVpbGQoZmlsZW5hbWUsIGVuY29kaW5nKTsKKworICAgICAgICBEYXRhT3V0cHV0U3RyZWFtIG91dCA9IG51bGw7CisgICAgICAgIGlmIChvdXRwdXRGaWxlLmxlbmd0aCgpICE9IDApIHsKKyAgICAgICAgICAgIG91dCA9IG5ldyBEYXRhT3V0cHV0U3RyZWFtKG5ldyBGaWxlT3V0cHV0U3RyZWFtKG91dHB1dEZpbGUpKTsKKyAgICAgICAgICAgIGRpY3Rpb25hcnkud3JpdGVEaWN0aW9uYXJ5RmlsZShvdXQpOworICAgICAgICB9CisKKyAgICAgICAgUHJpbnRXcml0ZXIgbGlzdGluZyA9IG51bGw7CisgICAgICAgIGlmIChsaXN0aW5nRmlsZS5sZW5ndGgoKSAhPSAwKSB7CisgICAgICAgICAgICBsaXN0aW5nID0gbmV3IFByaW50V3JpdGVyKG5ldyBPdXRwdXRTdHJlYW1Xcml0ZXIobmV3IEZpbGVPdXRwdXRTdHJlYW0obGlzdGluZ0ZpbGUpLCAiVW5pY29kZUxpdHRsZSIpKTsKKyAgICAgICAgICAgIGRpY3Rpb25hcnkucHJpbnRXb3JkTGlzdCgiIiwgMCwgbGlzdGluZyk7CisgICAgICAgICAgICBsaXN0aW5nLmNsb3NlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgQnVpbGREaWN0aW9uYXJ5RmlsZSgpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBidWlsZChTdHJpbmcgZmlsZW5hbWUsIFN0cmluZyBlbmNvZGluZykKKyAgICAgICAgICAgIHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24sIFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24sIElPRXhjZXB0aW9uIHsKKyAgICAgICAgRmlsZUlucHV0U3RyZWFtIGZpbGUgPSBuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGVuYW1lKTsKKyAgICAgICAgSW5wdXRTdHJlYW1SZWFkZXIgaW47CisgICAgICAgIGlmIChlbmNvZGluZy5sZW5ndGgoKSA9PSAwKQorICAgICAgICAgICAgaW4gPSBuZXcgSW5wdXRTdHJlYW1SZWFkZXIoZmlsZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGluID0gbmV3IElucHV0U3RyZWFtUmVhZGVyKGZpbGUsIGVuY29kaW5nKTsKKworICAgICAgICBidWlsZENvbHVtbk1hcChpbik7CisKKyAgICAgICAgZmlsZSA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oZmlsZW5hbWUpOworICAgICAgICBpZiAoZW5jb2RpbmcubGVuZ3RoKCkgPT0gMCkKKyAgICAgICAgICAgIGluID0gbmV3IElucHV0U3RyZWFtUmVhZGVyKGZpbGUpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpbiA9IG5ldyBJbnB1dFN0cmVhbVJlYWRlcihmaWxlLCBlbmNvZGluZyk7CisKKyAgICAgICAgYnVpbGRTdGF0ZVRhYmxlKGluKTsKKy8vcHJpbnRUYWJsZSgpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGJ1aWxkQ29sdW1uTWFwKElucHV0U3RyZWFtUmVhZGVyIGluKSB0aHJvd3MgSU9FeGNlcHRpb24geworU3lzdGVtLm91dC5wcmludGxuKCJCdWlsZGluZyBjb2x1bW4gbWFwLi4uIik7CisgICAgICAgIFVuaWNvZGVTZXQgY2hhcnNJbkZpbGUgPSBuZXcgVW5pY29kZVNldCgpOworICAgICAgICBpbnQgYyA9IGluLnJlYWQoKTsKK2ludCB0b3RhbENoYXJzID0gMDsKKyAgICAgICAgd2hpbGUgKGMgPj0gMCkgeworKyt0b3RhbENoYXJzOyBpZiAodG90YWxDaGFycyA+IDAgJiYgdG90YWxDaGFycyAlIDUwMDAgPT0gMCkgU3lzdGVtLm91dC5wcmludGxuKCJSZWFkICIgKyB0b3RhbENoYXJzICsgIiBjaGFyYWN0ZXJzLi4uIik7CisgICAgICAgICAgICBpZiAoYyA+ICcgJykKKyAgICAgICAgICAgICAgICBjaGFyc0luRmlsZS5hZGQoKGNoYXIpYyk7CisgICAgICAgICAgICBjID0gaW4ucmVhZCgpOworICAgICAgICB9CisvLyAgICAgICAgVGVzdC5kZWJ1Z1ByaW50bG4oY2hhcnNJbkZpbGUudG9TdHJpbmcoKSk7CisKKyAgICAgICAgU3RyaW5nQnVmZmVyIHRlbXBSZXZlcnNlTWFwID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICB0ZW1wUmV2ZXJzZU1hcC5hcHBlbmQoJyAnKTsKKworICAgICAgICBjb2x1bW5NYXAgPSBuZXcgQ29tcGFjdEJ5dGVBcnJheSgpOworICAgICAgICBpbnQgbiA9IGNoYXJzSW5GaWxlLmdldFJhbmdlQ291bnQoKTsKKyAgICAgICAgYnl0ZSBwID0gMTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPG47ICsraSkgeworICAgICAgICAgICAgY2hhciBzdGFydCA9IChjaGFyKSBjaGFyc0luRmlsZS5nZXRSYW5nZVN0YXJ0KGkpOworICAgICAgICAgICAgY2hhciBlbmQgPSAoY2hhcikgY2hhcnNJbkZpbGUuZ2V0UmFuZ2VFbmQoaSk7CisgICAgICAgICAgICBmb3IgKGNoYXIgY2ggPSBzdGFydDsgY2ggPD0gZW5kOyBjaCsrKSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbHVtbk1hcC5lbGVtZW50QXQoQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKGNoKSkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBjb2x1bW5NYXAuc2V0RWxlbWVudEF0KENoYXJhY3Rlci50b1VwcGVyQ2FzZShjaCksIENoYXJhY3Rlci50b1VwcGVyQ2FzZShjaCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCk7CisgICAgICAgICAgICAgICAgICAgIGNvbHVtbk1hcC5zZXRFbGVtZW50QXQoQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKGNoKSwgQ2hhcmFjdGVyLnRvTG93ZXJDYXNlKGNoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwKTsKKyAgICAgICAgICAgICAgICAgICAgKytwOworICAgICAgICAgICAgICAgICAgICB0ZW1wUmV2ZXJzZU1hcC5hcHBlbmQoY2gpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorLy9TeXN0ZW0ub3V0LnByaW50bG4oIkNvbXBhY3RpbmcuLi4iKTsKKyAgICAgICAgY29sdW1uTWFwLmNvbXBhY3QoKTsKKworLy9TeXN0ZW0ub3V0LnByaW50bG4odGVtcFJldmVyc2VNYXAudG9TdHJpbmcoKSk7CisgICAgICAgIHJldmVyc2VDb2x1bW5NYXAgPSBuZXcgY2hhcltwXTsKKyAgICAgICAgdGVtcFJldmVyc2VNYXAuZ2V0Q2hhcnMoMCwgcCwgcmV2ZXJzZUNvbHVtbk1hcCwgMCk7CisKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJ0b3RhbCBjb2x1bW5zID0gIiArIHApOworICAgICAgICBudW1Db2xzID0gcDsKKyAgICAgICAgbnVtQ29sR3JvdXBzID0gKG51bUNvbHMgPj4gNSkgKyAxOworCisvKgorc2hvcnRbXSBpbmRleCA9IGNvbHVtbk1hcC5nZXRJbmRleEFycmF5KCk7CitTeXN0ZW0ub3V0LnByaW50bG4oIkluZGV4OiIpOworZm9yIChpbnQgaSA9IDA7IGkgPCBpbmRleC5sZW5ndGg7IGkrKykgeworaWYgKGkgJSAxNiA9PSAwKSB7CitTeXN0ZW0ub3V0LnByaW50bG4oKTsKK1N5c3RlbS5vdXQucHJpbnQoIiAgICAiICsgSW50ZWdlci50b0hleFN0cmluZyhpICogMTI4KSArICI6Iik7Cit9CitTeXN0ZW0ub3V0LnByaW50KCJcdCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGluZGV4W2ldKSk7Cit9CitTeXN0ZW0ub3V0LnByaW50bG4oKTsKK2J5dGVbXSBkYXRhID0gY29sdW1uTWFwLmdldFN0cmluZ0FycmF5KCk7CitTeXN0ZW0ub3V0LnByaW50KCJWYWx1ZXM6Iik7Citmb3IgKGludCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHsKK2lmIChpICUgMTYgPT0gMCkgeworU3lzdGVtLm91dC5wcmludGxuKCk7CitTeXN0ZW0ub3V0LnByaW50KCIgICAgIiArIEludGVnZXIudG9IZXhTdHJpbmcoaSkgKyAiOiIpOworfQoraWYgKGRhdGFbaV0gPT0gMCkKK1N5c3RlbS5vdXQucHJpbnQoIlx0LiIpOworZWxzZQorU3lzdGVtLm91dC5wcmludCgiXHQiICsgSW50ZWdlci50b1N0cmluZyhkYXRhW2ldKSk7Cit9CitTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyovCisgICAgfQorCisgICAgcHVibGljIHZvaWQgYnVpbGRTdGF0ZVRhYmxlKElucHV0U3RyZWFtUmVhZGVyIGluKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBWZWN0b3IgdGVtcFRhYmxlID0gbmV3IFZlY3RvcigpOworICAgICAgICB0ZW1wVGFibGUuYWRkRWxlbWVudChuZXcgaW50W251bUNvbHMgKyAxXSk7CisgICAgICAgIGludCBzdGF0ZSA9IDA7CisKKyAgICAgICAgaW50IGMgPSBpbi5yZWFkKCk7CisgICAgICAgIGludFtdIHJvdyA9IG51bGw7CisgICAgICAgIGludCBjaGFyc0luV29yZCA9IDA7CisgICAgICAgIHdoaWxlIChjID49IDApIHsKKyAgICAgICAgICAgIGNoYXJzSW5Xb3JkKys7CisgICAgICAgICAgICBzaG9ydCBjb2x1bW4gPSBjb2x1bW5NYXAuZWxlbWVudEF0KChjaGFyKWMpOworCisgICAgICAgICAgICByb3cgPSAoaW50W10pKHRlbXBUYWJsZS5lbGVtZW50QXQoc3RhdGUpKTsKKyAgICAgICAgICAgIGlmIChjb2x1bW4gIT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChyb3dbY29sdW1uXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJvd1tjb2x1bW5dID0gdGVtcFRhYmxlLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgKytyb3dbbnVtQ29sc107CisgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gKHRlbXBUYWJsZS5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICB0ZW1wVGFibGUuYWRkRWxlbWVudChuZXcgaW50W251bUNvbHMgKyAxXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSByb3dbY29sdW1uXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHN0YXRlICE9IDApIHsKKyAgICAgICAgICAgICAgICBpZiAocm93WzBdICE9IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIHJvd1swXSA9IC0xOworICAgICAgICAgICAgICAgICAgICArK3Jvd1tudW1Db2xzXTsKKyAgICAgICAgICAgICAgICAgICAgdW5pcXVlV29yZHMrKzsKKyAgICAgICAgICAgICAgICAgICAgdG90YWxVbmlxdWVXb3JkQ2hhcnMgKz0gY2hhcnNJbldvcmQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRvdGFsV29yZHMrKzsKK2lmICh0b3RhbFdvcmRzICUgNTAwMCA9PSAwKSBTeXN0ZW0ub3V0LnByaW50bG4oIlJlYWQgIiArIHRvdGFsV29yZHMgKyAiIHdvcmRzLCAiICsgdGVtcFRhYmxlLnNpemUoKSArICIgcm93cy4uLiIpOworICAgICAgICAgICAgICAgIGNoYXJzSW5Xb3JkID0gMDsKKyAgICAgICAgICAgICAgICBzdGF0ZSA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjID0gaW4ucmVhZCgpOworICAgICAgICB9CisgICAgICAgIGlmIChzdGF0ZSAhPSAwKSB7CisgICAgICAgICAgICByb3cgPSAoaW50W10pKHRlbXBUYWJsZS5lbGVtZW50QXQoc3RhdGUpKTsKKyAgICAgICAgICAgIGlmIChyb3dbMF0gIT0gLTEpIHsKKyAgICAgICAgICAgICAgICByb3dbMF0gPSAtMTsKKyAgICAgICAgICAgICAgICB1bmlxdWVXb3JkcysrOworICAgICAgICAgICAgICAgIHRvdGFsVW5pcXVlV29yZENoYXJzICs9IGNoYXJzSW5Xb3JkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdG90YWxXb3JkcysrOworICAgICAgICB9CisKKyAgICAgICAgY29tcHJlc3ModGVtcFRhYmxlKTsKKworICAgICAgICB0YWJsZSA9IG5ldyBzaG9ydFtudW1Db2xzICogdGVtcFRhYmxlLnNpemUoKV07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVtcFRhYmxlLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICByb3cgPSAoaW50W10pdGVtcFRhYmxlLmVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVtQ29sczsgaisrKQorICAgICAgICAgICAgICAgIHRhYmxlW2kgKiBudW1Db2xzICsgal0gPSAoc2hvcnQpcm93W2pdOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGNvbXByZXNzKFZlY3RvciB0ZW1wVGFibGUpIHsKK1N5c3RlbS5vdXQucHJpbnRsbigiQmVmb3JlIGNvbXByZXNzaW9uOiIpOworU3lzdGVtLm91dC5wcmludGxuKCIgIE51bWJlciBvZiByb3dzID0gIiArIHRlbXBUYWJsZS5zaXplKCkpOworU3lzdGVtLm91dC5wcmludGxuKCIgIE51bWJlciBvZiBjb2x1bW5zID0gIiArIG51bUNvbHMpOworU3lzdGVtLm91dC5wcmludGxuKCIgIE51bWJlciBvZiBjZWxscyA9ICIgKyB0ZW1wVGFibGUuc2l6ZSgpICogbnVtQ29scyk7CisgICAgICAgIGRlbGV0ZUR1cGxpY2F0ZVJvd3ModGVtcFRhYmxlKTsKK1N5c3RlbS5vdXQucHJpbnRsbigiQWZ0ZXIgcmVtb3ZpbmcgZHVwbGljYXRlIHJvd3M6Iik7CitTeXN0ZW0ub3V0LnByaW50bG4oIiAgTnVtYmVyIG9mIHJvd3MgPSAiICsgdGVtcFRhYmxlLnNpemUoKSk7CitTeXN0ZW0ub3V0LnByaW50bG4oIiAgTnVtYmVyIG9mIGNvbHVtbnMgPSAiICsgbnVtQ29scyk7CitTeXN0ZW0ub3V0LnByaW50bG4oIiAgTnVtYmVyIG9mIGNlbGxzID0gIiArIHRlbXBUYWJsZS5zaXplKCkgKiBudW1Db2xzKTsKKyAgICAgICAgc3RhY2tSb3dzKHRlbXBUYWJsZSk7CitpZiAodGVtcFRhYmxlLnNpemUoKSA+IDMyNzY3KSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJUb28gbWFueSByb3dzIGluIHRhYmxlISIpOworU3lzdGVtLm91dC5wcmludGxuKCJBZnRlciBkb3VibGluZyB1cCBvbiByb3dzOiIpOworU3lzdGVtLm91dC5wcmludGxuKCIgIE51bWJlciBvZiByb3dzID0gIiArIHRlbXBUYWJsZS5zaXplKCkpOworU3lzdGVtLm91dC5wcmludGxuKCIgIE51bWJlciBvZiBjb2x1bW5zID0gIiArIG51bUNvbHMpOworU3lzdGVtLm91dC5wcmludGxuKCIgIE51bWJlciBvZiBjZWxscyA9ICIgKyB0ZW1wVGFibGUuc2l6ZSgpICogbnVtQ29scyk7CisgICAgfQorCisvKgorZXhwZXJpbWVudGFsLi4uCisgICAgcHJpdmF0ZSB2b2lkIGRlbGV0ZUR1cGxpY2F0ZVJvd3MoVmVjdG9yIHRlbXBUYWJsZSkgeworICAgICAgICBpbnRbXSByb3dOdW1NYXAgPSBuZXcgaW50W3RlbXBUYWJsZS5zaXplKCldOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd051bU1hcC5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHJvd051bU1hcFtpXSA9IGk7CisKKyAgICAgICAgaW50IG5leHRDbGFzcyA9IG51bUNvbHM7CisgICAgICAgIGludCBjdXJyZW50Q2xhc3M7CisgICAgICAgIGludCBsYXN0Q2xhc3M7CisgICAgICAgIGJvb2xlYW4gc3BsaXQ7CisgICAgICAgIGludFtdIHJvdzEsIHJvdzIsIHRlbXBSb3c7CisgICAgICAgIGludCB0ZW1wQ2F0OworCisgICAgICAgIGRvIHsKK1N5c3RlbS5vdXQucHJpbnRsbigiTWFraW5nIGEgcGFzcyAoIiArIG5leHRDbGFzcyArICIgY2xhc3NlcykuLi4iKTsKKyAgICAgICAgICAgIGN1cnJlbnRDbGFzcyA9IDA7CisgICAgICAgICAgICBsYXN0Q2xhc3MgPSBuZXh0Q2xhc3M7CisgICAgICAgICAgICB3aGlsZSAoY3VycmVudENsYXNzIDwgbmV4dENsYXNzKSB7CitTeXN0ZW0ub3V0LnByaW50bG4oIiAgIGN1cnJlbnRDbGFzcyA9ICIgKyBjdXJyZW50Q2xhc3MpOworICAgICAgICAgICAgICAgIHNwbGl0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgcm93MSA9IHJvdzIgPSBudWxsOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVtcFRhYmxlLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHRlbXBSb3cgPSAoaW50W10pdGVtcFRhYmxlLmVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBSb3dbbnVtQ29sc10gPT0gY3VycmVudENsYXNzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocm93MSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93MSA9IChpbnRbXSl0ZW1wVGFibGUuZWxlbWVudEF0KGkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93MiA9IChpbnRbXSl0ZW1wVGFibGUuZWxlbWVudEF0KGkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbnVtQ29sczsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocm93MVtqXSA9PSAwKSAhPSAocm93MltqXSA9PSAwKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocm93MVtqXSA9PSAtMSkgIT0gKHJvdzJbal0gPT0gLTEpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3cyW251bUNvbHNdID0gbmV4dENsYXNzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BsaXQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocm93MVtqXSAhPSAwICYmIHJvdzJbal0gIT0gMCAmJiByb3cxW2pdICE9IC0xCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiByb3cyW2pdICE9IC0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wUm93ID0gKGludFtdKXRlbXBUYWJsZS5lbGVtZW50QXQocm93MVtqXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wQ2F0ID0gdGVtcFJvd1tudW1Db2xzXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBSb3cgPSAoaW50W10pdGVtcFRhYmxlLmVsZW1lbnRBdChyb3cyW2pdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wQ2F0ICE9IHRlbXBSb3dbbnVtQ29sc10pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3cyW251bUNvbHNdID0gbmV4dENsYXNzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwbGl0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc3BsaXQpCisgICAgICAgICAgICAgICAgICAgICsrbmV4dENsYXNzOworICAgICAgICAgICAgICAgICsrY3VycmVudENsYXNzOworLy9TeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSB3aGlsZSAobGFzdENsYXNzICE9IG5leHRDbGFzcyk7CisKKyAgICAgICAgaW50W10gcmVwcmVzZW50YXRpdmVzID0gbmV3IGludFtuZXh0Q2xhc3NdOworICAgICAgICBmb3IgKGludCBpID0gMTsgaSA8IHRlbXBUYWJsZS5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgdGVtcFJvdyA9IChpbnRbXSl0ZW1wVGFibGUuZWxlbWVudEF0KGkpOworICAgICAgICAgICAgaWYgKHJlcHJlc2VudGF0aXZlc1t0ZW1wUm93W251bUNvbHNdXSA9PSAwKQorICAgICAgICAgICAgICAgIHJlcHJlc2VudGF0aXZlc1t0ZW1wUm93W251bUNvbHNdXSA9IGk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcm93TnVtTWFwW2ldID0gcmVwcmVzZW50YXRpdmVzW3RlbXBSb3dbbnVtQ29sc11dOworICAgICAgICB9CitTeXN0ZW0ub3V0LnByaW50bG4oIlJlbnVtYmVyaW5nLi4uIik7CisKKyAgICAgICAgLy8gcmVudW1iZXIgYWxsIHJlbWFpbmluZyByb3dzCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93TnVtTWFwLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgaWYgKHJvd051bU1hcFtpXSAhPSBpKQorICAgICAgICAgICAgICAgIHRlbXBUYWJsZS5zZXRFbGVtZW50QXQobnVsbCwgaSk7CisgICAgICAgIGludCBuZXdSb3dOdW0gPSAwOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd051bU1hcC5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIGlmICh0ZW1wVGFibGUuZWxlbWVudEF0KGkpICE9IG51bGwpCisgICAgICAgICAgICAgICAgcm93TnVtTWFwW2ldID0gbmV3Um93TnVtKys7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93TnVtTWFwLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgaWYgKHRlbXBUYWJsZS5lbGVtZW50QXQoaSkgPT0gbnVsbCkKKyAgICAgICAgICAgICAgICByb3dOdW1NYXBbaV0gPSByb3dOdW1NYXBbcm93TnVtTWFwW2ldXTsKKworICAgICAgICBmb3IgKGludCBpID0gdGVtcFRhYmxlLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAgICB0ZW1wUm93ID0gKGludFtdKXRlbXBUYWJsZS5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICBpZiAodGVtcFJvdyA9PSBudWxsKQorICAgICAgICAgICAgICAgIHRlbXBUYWJsZS5yZW1vdmVFbGVtZW50QXQoaSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG51bUNvbHM7IGorKykKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBSb3dbal0gIT0gLTEpCisgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wUm93W2pdID0gcm93TnVtTWFwW2pdOworICAgICAgICAgICAgfQorICAgICAgICB9CisvL2ZvciAoaW50IGkgPSAxOyBpIDwgcm93TnVtTWFwLmxlbmd0aDsgaSsrKSByb3dOdW1NYXBbaV0gPSBpOyBpbnQgbmV3Um93TnVtID0gcm93TnVtTWFwLmxlbmd0aDsKKyAgICB9CisqLworCisgICAgcHJpdmF0ZSB2b2lkIGRlbGV0ZUR1cGxpY2F0ZVJvd3MoVmVjdG9yIHRlbXBUYWJsZSkgeworICAgICAgICBWZWN0b3Igd29yayA9IChWZWN0b3IpKHRlbXBUYWJsZS5jbG9uZSgpKTsKKyAgICAgICAgYm9vbGVhbiBkaWREZWxldGVSb3cgPSB0cnVlOworCisgICAgICAgIFZlY3RvciB0ZW1wTWFwcGluZyA9IG5ldyBWZWN0b3Iod29yay5zaXplKCkpOworICAgICAgICBpbnRbXSBtYXBwaW5nID0gbmV3IGludFt3b3JrLnNpemUoKV07CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWFwcGluZy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgbWFwcGluZ1tpXSA9IGk7CisgICAgICAgICAgICB0ZW1wTWFwcGluZy5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKGkpKTsKKyAgICAgICAgfQorICAgICAgICBib29sZWFuW10gdGJkID0gbmV3IGJvb2xlYW5bd29yay5zaXplKCldOworCisgICAgICAgIHdoaWxlIChkaWREZWxldGVSb3cpIHsKK1N5c3RlbS5vdXQucHJpbnRsbigiICIgKyB3b3JrLnNpemUoKSArICIgcm93cy4uLiIpOworaW50IGRlbGV0ZWRSb3dzID0gMDsKKyAgICAgICAgICAgIGRpZERlbGV0ZVJvdyA9IGZhbHNlOworCisgICAgICAgICAgICBzb3J0VGFibGUod29yaywgdGVtcE1hcHBpbmcsIG1hcHBpbmcsIDEsIHdvcmsuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgd29yay5zaXplKCkgLSAxOyApIHsKK1N5c3RlbS5vdXQucHJpbnQoIkRlbGV0aW5nLCBpbnNwZWN0aW5nIHJvdyAiICsgaSArICIsIGRlbGV0ZWQgIiArIGRlbGV0ZWRSb3dzICsgIiByb3dzLi4uXHIiKTsKKyAgICAgICAgICAgICAgICBpbnQgcm93VG9EZWxldGUgPSAoKEludGVnZXIpKHRlbXBNYXBwaW5nLmVsZW1lbnRBdChpICsgMSkpKS5pbnRWYWx1ZSgpOworICAgICAgICAgICAgICAgIGludCByb3dUb01hcFRvID0gKChJbnRlZ2VyKSh0ZW1wTWFwcGluZy5lbGVtZW50QXQoaSkpKS5pbnRWYWx1ZSgpOworICAgICAgICAgICAgICAgIGlmIChjb21wYXJlUm93cygoaW50W10pd29yay5lbGVtZW50QXQoaSksIChpbnRbXSl3b3JrLmVsZW1lbnRBdChpICsgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdGJkW3Jvd1RvRGVsZXRlXSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHRlbXBUYWJsZS5zZXRFbGVtZW50QXQobnVsbCwgcm93VG9EZWxldGUpOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAodGJkW21hcHBpbmdbcm93VG9NYXBUb11dKQorICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1tyb3dUb01hcFRvXSA9IG1hcHBpbmdbbWFwcGluZ1tyb3dUb01hcFRvXV07CisgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdbcm93VG9EZWxldGVdID0gbWFwcGluZ1tyb3dUb01hcFRvXTsKKyAgICAgICAgICAgICAgICAgICAgZGlkRGVsZXRlUm93ID0gdHJ1ZTsKK2RlbGV0ZWRSb3dzKys7CisgICAgICAgICAgICAgICAgICAgIHdvcmsucmVtb3ZlRWxlbWVudEF0KGkgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgdGVtcE1hcHBpbmcucmVtb3ZlRWxlbWVudEF0KGkgKyAxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1hcHBpbmcubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAodGJkW2ldICYmIHRiZFttYXBwaW5nW2ldXSkKKyAgICAgICAgICAgICAgICAgICAgbWFwcGluZ1tpXSA9IG1hcHBpbmdbbWFwcGluZ1tpXV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpbnQgZGVjcmVtZW50QnkgPSAwOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1hcHBpbmcubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmICh0YmRbaV0pCisgICAgICAgICAgICAgICAgZGVjcmVtZW50QnkrKzsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBtYXBwaW5nW2ldIC09IGRlY3JlbWVudEJ5OworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbWFwcGluZy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKHRiZFtpXSkKKyAgICAgICAgICAgICAgICBtYXBwaW5nW2ldID0gbWFwcGluZ1ttYXBwaW5nW2ldXTsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGludCBpID0gdGVtcFRhYmxlLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAgICBpZiAodGJkW2ldKQorICAgICAgICAgICAgICAgIHRlbXBUYWJsZS5yZW1vdmVFbGVtZW50QXQoaSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnRbXSByb3cgPSAoaW50W10pdGVtcFRhYmxlLmVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG51bUNvbHM7IGorKykKKyAgICAgICAgICAgICAgICAgICAgcm93W2pdID0gKHJvd1tqXSA9PSAtMSkgPyAtMSA6IG1hcHBpbmdbcm93W2pdXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzb3J0VGFibGUoVmVjdG9yIHRhYmxlLCBWZWN0b3IgdGVtcE1hcHBpbmcsIGludFtdIG1hcHBpbmcsIGludCBzdGFydCwgaW50IGVuZCkgeworU3lzdGVtLm91dC5wcmludCgiU29ydGluZyAoIiArIHN0YXJ0ICsgIiwgIiArIGVuZCArICIpLi4uXHIiKTsKKyAgICAgICAgaWYgKHN0YXJ0ICsgMSA+PSBlbmQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGVsc2UgaWYgKHN0YXJ0ICsgMTAgPj0gZW5kKSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gc3RhcnQgKyAxOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpbnRbXSByb3cgPSAoaW50W10pdGFibGUuZWxlbWVudEF0KGkpOworICAgICAgICAgICAgICAgIEludGVnZXIgdGVtcE1hcCA9IChJbnRlZ2VyKXRlbXBNYXBwaW5nLmVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgICAgICBpbnQgajsKKyAgICAgICAgICAgICAgICBmb3IgKGogPSBpIC0gMTsgaiA+PSBzdGFydDsgai0tKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjb21wYXJlUm93cygoaW50W10pdGFibGUuZWxlbWVudEF0KGopLCByb3csIG1hcHBpbmcpID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuc2V0RWxlbWVudEF0KChpbnRbXSl0YWJsZS5lbGVtZW50QXQoaiksIGogKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBNYXBwaW5nLnNldEVsZW1lbnRBdCgoSW50ZWdlcil0ZW1wTWFwcGluZy5lbGVtZW50QXQoaiksIGogKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLnNldEVsZW1lbnRBdChyb3csIGogKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBNYXBwaW5nLnNldEVsZW1lbnRBdCh0ZW1wTWFwLCBqICsgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaiA8IHN0YXJ0KSB7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlLnNldEVsZW1lbnRBdChyb3csIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgdGVtcE1hcHBpbmcuc2V0RWxlbWVudEF0KHRlbXBNYXAsIHN0YXJ0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpbnQgYm91bmRhcnlQb3MgPSAoc3RhcnQgKyBlbmQpIC8gMjsKKyAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgYm9vbGVhbiBhbGxUaGVTYW1lID0gdHJ1ZTsKKyAgICAgICAgICAgIGludCBmaXJzdERpZmZlcmVudCA9IDA7CisKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBpbnRbXSBib3VuZGFyeSA9IChpbnRbXSl0YWJsZS5lbGVtZW50QXQoYm91bmRhcnlQb3MpOworICAgICAgICAgICAgICAgIGkgPSBzdGFydDsKKyAgICAgICAgICAgICAgICBpbnQgaiA9IGVuZCAtIDE7CisgICAgICAgICAgICAgICAgaW50W10gcm93ID0gbnVsbDsKKyAgICAgICAgICAgICAgICBieXRlIGNvbXBSZXN1bHQ7CisgICAgICAgICAgICAgICAgd2hpbGUgKGkgPCBqKSB7CisgICAgICAgICAgICAgICAgICAgIHJvdyA9IChpbnRbXSl0YWJsZS5lbGVtZW50QXQoaSk7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChpIDw9IGogJiYgY29tcGFyZVJvd3Mocm93LCBib3VuZGFyeSwgbWFwcGluZykgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgICAgICAgICByb3cgPSAoaW50W10pdGFibGUuZWxlbWVudEF0KGkpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgcm93ID0gKGludFtdKXRhYmxlLmVsZW1lbnRBdChqKTsKKyAgICAgICAgICAgICAgICAgICAgY29tcFJlc3VsdCA9IGNvbXBhcmVSb3dzKHJvdywgYm91bmRhcnksIG1hcHBpbmcpOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaSA8PSBqICYmIChjb21wUmVzdWx0ID49IDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29tcFJlc3VsdCAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsVGhlU2FtZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0RGlmZmVyZW50ID0gajsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGotLTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvdyA9IChpbnRbXSl0YWJsZS5lbGVtZW50QXQoaik7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21wUmVzdWx0ID0gY29tcGFyZVJvd3Mocm93LCBib3VuZGFyeSwgbWFwcGluZyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPD0gaikgeworICAgICAgICAgICAgICAgICAgICAgICAgcm93ID0gKGludFtdKXRhYmxlLmVsZW1lbnRBdChqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLnNldEVsZW1lbnRBdCh0YWJsZS5lbGVtZW50QXQoaSksIGopOworICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuc2V0RWxlbWVudEF0KHJvdywgaSk7CisgICAgICAgICAgICAgICAgICAgICAgICBPYmplY3QgdGVtcCA9IHRlbXBNYXBwaW5nLmVsZW1lbnRBdChqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBNYXBwaW5nLnNldEVsZW1lbnRBdCh0ZW1wTWFwcGluZy5lbGVtZW50QXQoaSksIGopOworICAgICAgICAgICAgICAgICAgICAgICAgdGVtcE1hcHBpbmcuc2V0RWxlbWVudEF0KHRlbXAsIGkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChpIDw9IHN0YXJ0KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhbGxUaGVTYW1lKQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBib3VuZGFyeVBvcyA9IGZpcnN0RGlmZmVyZW50OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gd2hpbGUgKGkgPD0gc3RhcnQpOworICAgICAgICAgICAgc29ydFRhYmxlKHRhYmxlLCB0ZW1wTWFwcGluZywgbWFwcGluZywgc3RhcnQsIGkpOworICAgICAgICAgICAgc29ydFRhYmxlKHRhYmxlLCB0ZW1wTWFwcGluZywgbWFwcGluZywgaSwgZW5kKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgYnl0ZSBjb21wYXJlUm93cyhpbnRbXSByb3cxLCBpbnRbXSByb3cyLCBpbnRbXSBtYXBwaW5nKSB7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ29sczsgaSsrKSB7CisgICAgICAgICAgICBpbnQgYzEgPSAocm93MVtpXSA9PSAtMSkgPyAtMSA6IG1hcHBpbmdbcm93MVtpXV07CisgICAgICAgICAgICBpbnQgYzIgPSAocm93MltpXSA9PSAtMSkgPyAtMSA6IG1hcHBpbmdbcm93MltpXV07CisgICAgICAgICAgICBpZiAoYzEgPCBjMikKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICBlbHNlIGlmIChjMSA+IGMyKQorICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHByaXZhdGUgaW50W10gYnVpbGRSb3dJbmRleChWZWN0b3IgdGVtcFRhYmxlKSB7CisgICAgICAgIGludFtdIHRlbXBSb3dJbmRleCA9IG5ldyBpbnRbdGVtcFRhYmxlLnNpemUoKV07CisgICAgICAgIHJvd0luZGV4RmxhZ3NJbmRleCA9IG5ldyBzaG9ydFt0ZW1wVGFibGUuc2l6ZSgpXTsKKyAgICAgICAgVmVjdG9yIHRlbXBSb3dJbmRleEZsYWdzID0gbmV3IFZlY3RvcigpOworICAgICAgICByb3dJbmRleFNoaWZ0cyA9IG5ldyBieXRlW3RlbXBUYWJsZS5zaXplKCldOworCisgICAgICAgIC8vIGJ1aWxkIHRoZSByb3cgaW5kZXguICBFYWNoIGVudHJ5IGluIHRoZSByb3cgaW5kZXggc3RhcnRzIG91dCByZWZlcnJpbmcKKyAgICAgICAgLy8gdG8gdGhlIG9yaWdpbmFsIHJvdyAoc28gaXQgZG9lc24ndCBhY3R1YWxseSBkbyBhbnkgbWFwcGluZyksIGFuZCB3ZSBzZXQKKyAgICAgICAgLy8gdXAgdGhlIGluZGV4IGZsYWdzIHRvIHNob3cgd2hpY2ggY2VsbHMgaW4gdGhlIHJvdyBhcmUgcG9wdWxhdGVkCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVtcFRhYmxlLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICB0ZW1wUm93SW5kZXhbaV0gPSBpOworCisgICAgICAgICAgICBpbnRbXSByb3cgPSAoaW50W10pdGVtcFRhYmxlLmVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgIGlmIChyb3dbbnVtQ29sc10gPT0gMSAmJiByb3dbMF0gPT0gMCkgeworICAgICAgICAgICAgICAgIGludCBqID0gMDsKKyAgICAgICAgICAgICAgICB3aGlsZSAocm93W2pdID09IDApCisgICAgICAgICAgICAgICAgICAgICsrajsKKyAgICAgICAgICAgICAgICByb3dJbmRleEZsYWdzSW5kZXhbaV0gPSAoc2hvcnQpKC1qKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGludFtdIGZsYWdzID0gbmV3IGludFtudW1Db2xHcm91cHNdOworICAgICAgICAgICAgICAgIGludCBuZXh0RmxhZyA9IDE7CisgICAgICAgICAgICAgICAgaW50IGNvbEdyb3VwID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG51bUNvbHM7IGorKykgeworICAgICAgICAgICAgICAgICAgICBpZiAocm93W2pdICE9IDApCisgICAgICAgICAgICAgICAgICAgICAgICBmbGFnc1tjb2xHcm91cF0gfD0gbmV4dEZsYWc7CisgICAgICAgICAgICAgICAgICAgIG5leHRGbGFnIDw8PSAxOworICAgICAgICAgICAgICAgICAgICBpZiAobmV4dEZsYWcgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgKytjb2xHcm91cDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHRGbGFnID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb2xHcm91cCA9IDA7CisgICAgICAgICAgICAgICAgaW50IGogPSAwOworICAgICAgICAgICAgICAgIHdoaWxlIChqIDwgdGVtcFJvd0luZGV4RmxhZ3Muc2l6ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgoKEludGVnZXIpdGVtcFJvd0luZGV4RmxhZ3MuZWxlbWVudEF0KGopKS5pbnRWYWx1ZSgpID09CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFnc1tjb2xHcm91cF0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrY29sR3JvdXA7CisgICAgICAgICAgICAgICAgICAgICAgICArK2o7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29sR3JvdXAgPj0gbnVtQ29sR3JvdXBzKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNvbEdyb3VwICE9IDApCisgICAgICAgICAgICAgICAgICAgICAgICBjb2xHcm91cCA9IDA7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICsrajsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcm93SW5kZXhGbGFnc0luZGV4W2ldID0gKHNob3J0KShqIC0gY29sR3JvdXApOworICAgICAgICAgICAgICAgIHdoaWxlIChjb2xHcm91cCA8IG51bUNvbEdyb3VwcykgeworICAgICAgICAgICAgICAgICAgICB0ZW1wUm93SW5kZXhGbGFncy5hZGRFbGVtZW50KG5ldyBJbnRlZ2VyKGZsYWdzW2NvbEdyb3VwXSkpOworICAgICAgICAgICAgICAgICAgICArK2NvbEdyb3VwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByb3dJbmRleEZsYWdzID0gbmV3IGludFt0ZW1wUm93SW5kZXhGbGFncy5zaXplKCldOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd0luZGV4RmxhZ3MubGVuZ3RoOyBpKyspCisgICAgICAgICAgICByb3dJbmRleEZsYWdzW2ldID0gKChJbnRlZ2VyKXRlbXBSb3dJbmRleEZsYWdzLmVsZW1lbnRBdChpKSkuaW50VmFsdWUoKTsKK1N5c3RlbS5vdXQucHJpbnRsbigiTnVtYmVyIG9mIGNvbHVtbiBncm91cHMgPSAiICsgbnVtQ29sR3JvdXBzKTsKK1N5c3RlbS5vdXQucHJpbnRsbigiU2l6ZSBvZiByb3dJbmRleEZsYWdzID0gIiArIHJvd0luZGV4RmxhZ3MubGVuZ3RoKTsKKworICAgICAgICByZXR1cm4gdGVtcFJvd0luZGV4OworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzdGFja1Jvd3MoVmVjdG9yIHRlbXBUYWJsZSkgeworLyoKK1N5c3RlbS5vdXQucHJpbnQoIlJvdzpcdCIpOworZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Db2xzOyBpKyspCitTeXN0ZW0ub3V0LnByaW50KHJldmVyc2VDb2x1bW5NYXBbaV0gKyAiXHQiKTsKK1N5c3RlbS5vdXQucHJpbnRsbigpOworZm9yIChpbnQgaSA9IDA7IGkgPCB0ZW1wVGFibGUuc2l6ZSgpOyBpKyspIHsKK1N5c3RlbS5vdXQucHJpbnQoSW50ZWdlci50b1N0cmluZyhpKSArICI6XHQiKTsKK2ludFtdIHJvdyA9IChpbnRbXSl0ZW1wVGFibGUuZWxlbWVudEF0KGkpOworZm9yIChpbnQgaiA9IDA7IGogPCByb3cubGVuZ3RoOyBqKyspCitpZiAocm93W2pdICE9IDApIFN5c3RlbS5vdXQucHJpbnQoSW50ZWdlci50b1N0cmluZyhyb3dbal0pICsgIlx0Iik7CitlbHNlIFN5c3RlbS5vdXQucHJpbnQoIi5cdCIpOworU3lzdGVtLm91dC5wcmludGxuKCk7Cit9CisqLworCisgICAgICAgIGludFtdIHRlbXBSb3dJbmRleCA9IGJ1aWxkUm93SW5kZXgodGVtcFRhYmxlKTsKKyAgICAgICAgYm9vbGVhbltdIHRiZCA9IG5ldyBib29sZWFuW3RlbXBUYWJsZS5zaXplKCldOworCisgICAgICAgIC8vIG5vdyB3ZSBhY3R1YWxseSBnbyB0aHJvdWdoIGFuZCBzdGFjayByb3dzIHRvZ2V0aGVyCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdGVtcFRhYmxlLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBpZiAodGJkW2ldKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworU3lzdGVtLm91dC5wcmludCgiU3RhY2tpbmcsIGluc3BlY3Rpbmcgcm93ICIgKyBpICsgIi4uLlxyIik7CisvL1N5c3RlbS5vdXQucHJpbnRsbigiU3RhY2tpbmcsIGluc3BlY3Rpbmcgcm93ICIgKyBpICsgIi4uLiIpOworCisgICAgICAgICAgICBpbnRbXSBkZXN0Um93ID0gKGludFtdKXRlbXBUYWJsZS5lbGVtZW50QXQoaSk7CisKKyAgICAgICAgICAgIGJvb2xlYW5bXSB0ZW1wRmxhZ3MgPSBuZXcgYm9vbGVhbltudW1Db2xzXTsKKyAgICAgICAgICAgIGJvb2xlYW5bXSBmaWxsZWRDZWxscyA9IG5ldyBib29sZWFuW251bUNvbHNdOworICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBudW1Db2xzOyBqKyspCisgICAgICAgICAgICAgICAgZmlsbGVkQ2VsbHNbal0gPSBkZXN0Um93W2pdICE9IDA7CisKKyAgICAgICAgICAgIGZvciAoaW50IGogPSBpICsgMTsgZGVzdFJvd1tudW1Db2xzXSA8IG51bUNvbHMgJiYgaiA8IHRlbXBUYWJsZS5zaXplKCk7IGorKykgeworICAgICAgICAgICAgICAgIGlmICh0YmRbal0pCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgaW50W10gc3JjUm93ID0gKGludFtdKXRlbXBUYWJsZS5lbGVtZW50QXQoaik7CisgICAgICAgICAgICAgICAgaWYgKHNyY1Jvd1tudW1Db2xzXSArIGRlc3RSb3dbbnVtQ29sc10gPiBudW1Db2xzKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGludCBtYXhMZWZ0U2hpZnQgPSAtOTk5OworICAgICAgICAgICAgICAgIGludCBtYXhSaWdodFNoaWZ0ID0gMDsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBrID0gMDsgayA8IG51bUNvbHM7IGsrKykgeworICAgICAgICAgICAgICAgICAgICB0ZW1wRmxhZ3Nba10gPSBzcmNSb3dba10gIT0gMDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBGbGFnc1trXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1heExlZnRTaGlmdCA9PSAtOTk5KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heExlZnRTaGlmdCA9IC1rOworICAgICAgICAgICAgICAgICAgICAgICAgbWF4UmlnaHRTaGlmdCA9IChudW1Db2xzIC0gMSkgLSBrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaW50IHNoaWZ0OworICAgICAgICAgICAgICAgIGZvciAoc2hpZnQgPSBtYXhMZWZ0U2hpZnQ7IHNoaWZ0IDw9IG1heFJpZ2h0U2hpZnQ7IHNoaWZ0KyspIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGs7CisgICAgICAgICAgICAgICAgICAgIGZvciAoayA9IDA7IGsgPCBudW1Db2xzOyBrKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wRmxhZ3Nba10gJiYgZmlsbGVkQ2VsbHNbayArIHNoaWZ0XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoayA+PSBudW1Db2xzKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChzaGlmdCA8PSBtYXhSaWdodFNoaWZ0KSB7CisvL1N5c3RlbS5vdXQucHJpbnRsbigiUGFja2luZyByb3cgIiArIGogKyAiIGludG8gcm93ICIgKyBpICsgIiB3aXRoIHNoaWZ0ID0gIiArIHNoaWZ0KTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgayA9IDA7IGsgPCBudW1Db2xzOyBrKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wRmxhZ3Nba10pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsZWRDZWxsc1trICsgc2hpZnRdID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0Um93W2sgKyBzaGlmdF0gPSBzcmNSb3dba107CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytkZXN0Um93W251bUNvbHNdOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHRiZFtqXSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHRlbXBSb3dJbmRleFtqXSA9IGk7CisgICAgICAgICAgICAgICAgICAgIHJvd0luZGV4U2hpZnRzW2pdID0gKGJ5dGUpc2hpZnQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gZmluYWxseSwgd2Ugc3F1ZWV6ZSBvdXQgYWxsIHRoZSBkZWxldGVkIHJvd3MKKyAgICAgICAgaW50IGRlY3JlbWVudEJ5ID0gMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0ZW1wUm93SW5kZXgubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIGlmICghdGJkW2ldKQorICAgICAgICAgICAgICAgIHRlbXBSb3dJbmRleFtpXSAtPSBkZWNyZW1lbnRCeTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICArK2RlY3JlbWVudEJ5OworICAgICAgICB9CisgICAgICAgIHJvd0luZGV4ID0gbmV3IHNob3J0W3RlbXBSb3dJbmRleC5sZW5ndGhdOworICAgICAgICBmb3IgKGludCBpID0gdGVtcFJvd0luZGV4Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAgICBpZiAodGJkW2ldKSB7CisgICAgICAgICAgICAgICAgcm93SW5kZXhbaV0gPSAoc2hvcnQpKHRlbXBSb3dJbmRleFt0ZW1wUm93SW5kZXhbaV1dKTsKKyAgICAgICAgICAgICAgICB0ZW1wVGFibGUucmVtb3ZlRWxlbWVudEF0KGkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJvd0luZGV4W2ldID0gKHNob3J0KXRlbXBSb3dJbmRleFtpXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBwcmludFRhYmxlKCkgeworICAgICAgICBzaG9ydCBjZWxsOworICAgICAgICBpbnQgcG9wdWxhdGVkQ2VsbHMgPSAwOworLyoKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDb25jZXB0dWFsIHRhYmxlOiIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiBSb3c6ICAgYSAgIGIgICBjICAgZCAgIGUgICBmICAgZyAgIGggICBpICAgaiAgIGsgICBsICAgbSAgIG4iCisgICAgICAgICAgICAgICAgKyAiICAgbyAgIHAgICBxICAgciAgIHMgICB0ICAgdSAgIHYgICB3ICAgeCAgIHkgICB6ICAgJyAgICMiKTsKKworICAgICAgICBib29sZWFuW10gcm93UHJpbnRGbGFncyA9IG5ldyBib29sZWFuW3Jvd0luZGV4Lmxlbmd0aF07CisgICAgICAgIHByaW50Q29uY2VwdHVhbFRhYmxlKCIiLCAwLCByb3dQcmludEZsYWdzKTsKKyovCisKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQ29uY2VwdHVhbCB0YWJsZToiKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludCgiIFJvdzoiKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXZlcnNlQ29sdW1uTWFwLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiICAgIiArIHJldmVyc2VDb2x1bW5NYXBbaV0pOworICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93SW5kZXgubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICAgICAgcHJpbnROdW1iZXIoaSwgNCk7CisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCI6Iik7CisgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IG51bUNvbHM7IGorKykKKyAgICAgICAgICAgICAgICBwcmludE51bWJlcihhdChpLCBqKSwgNCk7CisgICAgICAgIH0KKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCdcbicpOworCisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkludGVybmFsbHkgc3RvcmVkIHRhYmxlOiIpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIgUm93OiIpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJldmVyc2VDb2x1bW5NYXAubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIgICAiICsgcmV2ZXJzZUNvbHVtbk1hcFtpXSk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB0YWJsZS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgaWYgKGkgJSBudW1Db2xzID09IDApIHsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oKTsKKyAgICAgICAgICAgICAgICBwcmludE51bWJlcihpIC8gbnVtQ29scywgNCk7CisgICAgICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiOiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2VsbCA9IHRhYmxlW2ldOworICAgICAgICAgICAgaWYgKGNlbGwgIT0gMCkKKyAgICAgICAgICAgICAgICBwb3B1bGF0ZWRDZWxscysrOworICAgICAgICAgICAgcHJpbnROdW1iZXIoY2VsbCwgNCk7CisgICAgICAgIH0KKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCdcbicpOworCitTeXN0ZW0ub3V0LnByaW50bG4oIlJvdyBpbmRleDoiKTsKK2ZvciAoaW50IGkgPSAwOyBpIDwgcm93SW5kZXgubGVuZ3RoOyBpKyspIHsKKyAgICBTeXN0ZW0ub3V0LnByaW50KCIgICAiICsgaSArICIgLT4gIiArIHJvd0luZGV4W2ldKTsKKyAgICBpZiAocm93SW5kZXhGbGFnc0luZGV4W2ldIDwgMCkKKyAgICAgICAgU3lzdGVtLm91dC5wcmludCgiLCBmbGFncyA9ICIgKyBJbnRlZ2VyLnRvQmluYXJ5U3RyaW5nKCgxIDw8ICgtcm93SW5kZXhGbGFnc0luZGV4W2ldKSkpICsgIiAoIiArIHJvd0luZGV4RmxhZ3NJbmRleFtpXSk7CisgICAgZWxzZQorICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIsIGZsYWdzID0gIiArIEludGVnZXIudG9CaW5hcnlTdHJpbmcocm93SW5kZXhGbGFnc1tyb3dJbmRleEZsYWdzSW5kZXhbaV1dKSArICIgKCIgKyByb3dJbmRleEZsYWdzSW5kZXhbaV0pOworICAgIFN5c3RlbS5vdXQucHJpbnRsbigiKSwgc2hpZnQgPSAiICsgcm93SW5kZXhTaGlmdHNbaV0pOworfQorLyoKKyAgICAgICAgaW50IHRoZW9yZXRpY2FsTWluUm93cyA9IHBvcHVsYXRlZENlbGxzIC8gbnVtQ29sczsKKyAgICAgICAgaWYgKHBvcHVsYXRlZENlbGxzICUgbnVtQ29scyAhPSAwKQorICAgICAgICAgICAgdGhlb3JldGljYWxNaW5Sb3dzKys7CisgICAgICAgIGludCBvbmVDZWxsUm93cyA9IDA7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93SW5kZXhGbGFncy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgZG91YmxlIHRlbXAgPSBNYXRoLmxvZyhyb3dJbmRleEZsYWdzW2ldKSAvIE1hdGgubG9nKDIpOworICAgICAgICAgICAgaWYgKHRlbXAgPT0gKGludCl0ZW1wKQorICAgICAgICAgICAgICAgIG9uZUNlbGxSb3dzKys7CisgICAgICAgIH0KKworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oJ1xuJyk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVG90YWwgd29yZHMgaW4gaW5wdXQgPSAiICsgdG90YWxXb3Jkcyk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVG90YWwgdW5pcXVlIHdvcmRzID0gIiArIHVuaXF1ZVdvcmRzICsgIiwgY29tcHJpc2luZyAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsVW5pcXVlV29yZENoYXJzICsgIiBjaGFyYWN0ZXJzXG4iKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJOdW1iZXIgb2YgcG9wdWxhdGVkIGNlbGxzID0gIiArIHBvcHVsYXRlZENlbGxzKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUb3RhbCBudW1iZXIgb2YgY2VsbHMgPSAiICsgKHRhYmxlLmxlbmd0aCkpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlJlc2lkZW5jeSA9ICIgKyAoKGZsb2F0KXBvcHVsYXRlZENlbGxzIC8gdGFibGUubGVuZ3RoICogMTAwKSArICclJyk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiUmF0aW8gb2YgcG9wdWxhdGVkIGNlbGxzIHRvIHVuaXF1ZS13b3JkIGNoYXJhY3RlcnMgPSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICgoZmxvYXQpcG9wdWxhdGVkQ2VsbHMgLyB0b3RhbFVuaXF1ZVdvcmRDaGFycyAqIDEwMCkgKyAnJScpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlJhdGlvIG9mIHRvdGFsIGNlbGxzIHRvIHVuaXF1ZS13b3JkIGNoYXJhY3RlcnMgPSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICgoZmxvYXQpdGFibGUubGVuZ3RoIC8gdG90YWxVbmlxdWVXb3JkQ2hhcnMgKiAxMDApICsgJyUnKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJOdW1iZXIgb2Ygcm93cyA9ICIgKyAodGFibGUubGVuZ3RoIC8gbnVtQ29scykpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRoZW9yZXRpY2FsIG1pbmltdW0gbnVtYmVyIG9mIHJvd3MgPSAiICsgdGhlb3JldGljYWxNaW5Sb3dzKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJSYXRpbyBvZiBudW1iZXIgb2Ygcm93cyB0byB0aGVvcmV0aWNhbCBtaW5pbXVtID0gIiArCisgICAgICAgICAgICAgICAgICAgICAgICAoKGZsb2F0KSh0YWJsZS5sZW5ndGggLyBudW1Db2xzKSAvIHRoZW9yZXRpY2FsTWluUm93cyAqIDEwMCkgKyAnJScpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk51bWJlciBvZiBjb25jZXB0dWFsIHJvd3MgPSAiICsgcm93SW5kZXgubGVuZ3RoKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDb25jZXB0dWFsIHJvd3Mgd2l0aCBvbmx5IG9uZSBwb3B1bGF0ZWQgY2VsbCA9ICIgKyBvbmVDZWxsUm93cyk7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiUmF0aW8gb2Ygb25lLWNlbGwgcm93cyB0byB0b3RhbCBjb25jZXB0dWFsIHJvd3MgPSAiICsgKCgoZmxvYXQpb25lQ2VsbFJvd3MpCisgICAgICAgICAgICAgICAgICAgICAgICAvIHJvd0luZGV4Lmxlbmd0aCAqIDEwMCkgKyAnJScpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkF2ZXJhZ2UgbnVtYmVyIG9mIHBvcHVsYXRlZCBjZWxscyBpbiBtdWx0aS1jZWxsIHJvd3MgPSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICgoZmxvYXQpKHBvcHVsYXRlZENlbGxzIC0gb25lQ2VsbFJvd3MpIC8gKHJvd0luZGV4Lmxlbmd0aCAtIG9uZUNlbGxSb3dzKSkpOworCisgICAgICAgIGludCBzdG9yYWdlVXNlZCA9IHRhYmxlLmxlbmd0aCAqIDIgKyByb3dJbmRleC5sZW5ndGggKiAyCisgICAgICAgICAgICAgICAgICAgICAgICArIHJvd0luZGV4RmxhZ3MubGVuZ3RoICogNCArIHJvd0luZGV4U2hpZnRzLmxlbmd0aDsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJUb3RhbCBudW1iZXIgb2YgYnl0ZXMgaW4gdGFibGUgKGluY2x1ZGluZyBpbmRleGVzKSA9ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZVVzZWQpOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkJ5dGVzIG9mIG92ZXJoZWFkIHBlciB1bmlxdWUtd29yZCBjaGFyYWN0ZXIgPSAiICsgKChkb3VibGUpKHN0b3JhZ2VVc2VkCisgICAgICAgICAgICAgICAgICAgICAgICAtICh0b3RhbFVuaXF1ZVdvcmRDaGFycyAqIDIpKSAvIHRvdGFsVW5pcXVlV29yZENoYXJzKSk7CisqLworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBwcmludENvbmNlcHR1YWxUYWJsZShTdHJpbmcgaW5pdGlhbFN0cmluZywgaW50IHN0YXRlLCBib29sZWFuW10gZmxhZ3MpIHsKKyAgICAgICAgaWYgKGluaXRpYWxTdHJpbmcubGVuZ3RoKCkgPT0gMCkKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigicm9vdDoiKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKGluaXRpYWxTdHJpbmcgKyAnOicpOworCisgICAgICAgIGlmICghZmxhZ3Nbc3RhdGVdKSB7CisgICAgICAgICAgICBmbGFnc1tzdGF0ZV0gPSB0cnVlOworICAgICAgICAgICAgcHJpbnROdW1iZXIoc3RhdGUsIDQpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiOiIpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Db2xzOyBpKyspCisgICAgICAgICAgICAgICAgcHJpbnROdW1iZXIoYXQoc3RhdGUsIGkpLCA0KTsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICB9CisKKyAgICAgICAgaW50IG5leHRTdGF0ZTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Db2xzOyBpKyspIHsKKyAgICAgICAgICAgIG5leHRTdGF0ZSA9IGF0KHN0YXRlLCBpKTsKKyAgICAgICAgICAgIGlmIChuZXh0U3RhdGUgPiAwICYmICFmbGFnc1tuZXh0U3RhdGVdKSB7CisgICAgICAgICAgICAgICAgcHJpbnROdW1iZXIobmV4dFN0YXRlLCA0KTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCI6Iik7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBudW1Db2xzOyBqKyspCisgICAgICAgICAgICAgICAgICAgIHByaW50TnVtYmVyKGF0KG5leHRTdGF0ZSwgaiksIDQpOworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtQ29sczsgaSsrKSB7CisgICAgICAgICAgICBuZXh0U3RhdGUgPSBhdChzdGF0ZSwgaSk7CisgICAgICAgICAgICBpZiAobmV4dFN0YXRlID4gMCAmJiAhZmxhZ3NbbmV4dFN0YXRlXSkgeworICAgICAgICAgICAgICAgIGNoYXIgbmV4dENoYXI7CisgICAgICAgICAgICAgICAgaWYgKG5leHRTdGF0ZSA9PSAyNykKKyAgICAgICAgICAgICAgICAgICAgbmV4dENoYXIgPSAnICc7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAobmV4dFN0YXRlID09IDI2KQorICAgICAgICAgICAgICAgICAgICBuZXh0Q2hhciA9ICdcJyc7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBuZXh0Q2hhciA9IChjaGFyKShpICsgJ2EnKTsKKyAgICAgICAgICAgICAgICBmbGFnc1tuZXh0U3RhdGVdID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBwcmludENvbmNlcHR1YWxUYWJsZShpbml0aWFsU3RyaW5nICsgbmV4dENoYXIsIG5leHRTdGF0ZSwgZmxhZ3MpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHByaW50V29yZExpc3QoU3RyaW5nIHBhcnRpYWxXb3JkLCBpbnQgc3RhdGUsIFByaW50V3JpdGVyIG91dCkKKyAgICAgICAgICAgIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGlmIChzdGF0ZSA9PSAtMSkgeworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHBhcnRpYWxXb3JkKTsKKyAgICAgICAgICAgIGlmIChvdXQgIT0gbnVsbCkKKyAgICAgICAgICAgICAgICBvdXQucHJpbnRsbihwYXJ0aWFsV29yZCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bUNvbHM7IGkrKykgeworICAgICAgICAgICAgICAgIGlmIChhdChzdGF0ZSwgaSkgIT0gMCkKKyAgICAgICAgICAgICAgICAgICAgcHJpbnRXb3JkTGlzdChwYXJ0aWFsV29yZCArIHJldmVyc2VDb2x1bW5NYXBbaV0sIGF0KHN0YXRlLCBpKSwgb3V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB3cml0ZURpY3Rpb25hcnlGaWxlKERhdGFPdXRwdXRTdHJlYW0gb3V0KSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBvdXQud3JpdGVJbnQoMCk7ICAgIC8vIHZlcnNpb24gbnVtYmVyCisKKyAgICAgICAgY2hhcltdIGNvbHVtbk1hcEluZGV4ZXMgPSBjb2x1bW5NYXAuZ2V0SW5kZXhBcnJheSgpOworICAgICAgICBvdXQud3JpdGVJbnQoY29sdW1uTWFwSW5kZXhlcy5sZW5ndGgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvbHVtbk1hcEluZGV4ZXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBvdXQud3JpdGVTaG9ydCgoc2hvcnQpY29sdW1uTWFwSW5kZXhlc1tpXSk7CisgICAgICAgIGJ5dGVbXSBjb2x1bW5NYXBWYWx1ZXMgPSBjb2x1bW5NYXAuZ2V0VmFsdWVBcnJheSgpOworICAgICAgICBvdXQud3JpdGVJbnQoY29sdW1uTWFwVmFsdWVzLmxlbmd0aCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY29sdW1uTWFwVmFsdWVzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgb3V0LndyaXRlQnl0ZSgoYnl0ZSljb2x1bW5NYXBWYWx1ZXNbaV0pOworCisgICAgICAgIG91dC53cml0ZUludChudW1Db2xzKTsKKyAgICAgICAgb3V0LndyaXRlSW50KG51bUNvbEdyb3Vwcyk7CisKKyAgICAgICAgb3V0LndyaXRlSW50KHJvd0luZGV4Lmxlbmd0aCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93SW5kZXgubGVuZ3RoOyBpKyspCisgICAgICAgICAgICBvdXQud3JpdGVTaG9ydChyb3dJbmRleFtpXSk7CisKKyAgICAgICAgb3V0LndyaXRlSW50KHJvd0luZGV4RmxhZ3NJbmRleC5sZW5ndGgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJvd0luZGV4RmxhZ3NJbmRleC5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIG91dC53cml0ZVNob3J0KHJvd0luZGV4RmxhZ3NJbmRleFtpXSk7CisgICAgICAgIG91dC53cml0ZUludChyb3dJbmRleEZsYWdzLmxlbmd0aCk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcm93SW5kZXhGbGFncy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIG91dC53cml0ZUludChyb3dJbmRleEZsYWdzW2ldKTsKKworICAgICAgICBvdXQud3JpdGVJbnQocm93SW5kZXhTaGlmdHMubGVuZ3RoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCByb3dJbmRleFNoaWZ0cy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIG91dC53cml0ZUJ5dGUocm93SW5kZXhTaGlmdHNbaV0pOworCisgICAgICAgIG91dC53cml0ZUludCh0YWJsZS5sZW5ndGgpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRhYmxlLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgb3V0LndyaXRlU2hvcnQodGFibGVbaV0pOworCisgICAgICAgIG91dC5jbG9zZSgpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBwcmludE51bWJlcihpbnQgeCwgaW50IHdpZHRoKSB7CisgICAgICAgIFN0cmluZyBzID0gU3RyaW5nLnZhbHVlT2YoeCk7CisgICAgICAgIGlmICh3aWR0aCA+IHMubGVuZ3RoKCkpCisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KHNwYWNlcy5zdWJzdHJpbmcoMCwgd2lkdGggLSBzLmxlbmd0aCgpKSk7CisgICAgICAgIGlmICh4ICE9IDApCisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KHMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCcuJyk7CisgICAgfQorCisgICAgcHVibGljIGZpbmFsIHNob3J0IGF0KGludCByb3csIGNoYXIgY2gpIHsKKyAgICAgICAgaW50IGNvbCA9IGNvbHVtbk1hcC5lbGVtZW50QXQoY2gpOworICAgICAgICByZXR1cm4gYXQocm93LCBjb2wpOworICAgIH0KKworICAgIHB1YmxpYyBmaW5hbCBzaG9ydCBhdChpbnQgcm93LCBpbnQgY29sKSB7CisgICAgICAgIGlmIChjZWxsSXNQb3B1bGF0ZWQocm93LCBjb2wpKQorICAgICAgICAgICAgcmV0dXJuIGludGVybmFsQXQocm93SW5kZXhbcm93XSwgY29sICsgcm93SW5kZXhTaGlmdHNbcm93XSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBjZWxsSXNQb3B1bGF0ZWQoaW50IHJvdywgaW50IGNvbCkgeworICAgICAgICBpZiAocm93SW5kZXhGbGFnc0luZGV4W3Jvd10gPCAwKQorICAgICAgICAgICAgcmV0dXJuIGNvbCA9PSAtcm93SW5kZXhGbGFnc0luZGV4W3Jvd107CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaW50IGZsYWdzID0gcm93SW5kZXhGbGFnc1tyb3dJbmRleEZsYWdzSW5kZXhbcm93XSArIChjb2wgPj4gNSldOworICAgICAgICAgICAgcmV0dXJuIChmbGFncyAmICgxIDw8IChjb2wgJiAweDFmKSkpICE9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIHNob3J0IGludGVybmFsQXQoaW50IHJvdywgaW50IGNvbCkgeworICAgICAgICByZXR1cm4gdGFibGVbcm93ICogbnVtQ29scyArIGNvbF07CisgICAgfQorCisgICAgcHJpdmF0ZSBDb21wYWN0Qnl0ZUFycmF5IGNvbHVtbk1hcCA9IG51bGw7CisgICAgcHJpdmF0ZSBjaGFyW10gcmV2ZXJzZUNvbHVtbk1hcCA9IG51bGw7CisgICAgcHJpdmF0ZSBpbnQgbnVtQ29sczsKKyAgICBwcml2YXRlIGludCBudW1Db2xHcm91cHM7CisgICAgcHJpdmF0ZSBzaG9ydFtdIHRhYmxlID0gbnVsbDsKKyAgICBwcml2YXRlIHNob3J0W10gcm93SW5kZXggPSBudWxsOworICAgIHByaXZhdGUgaW50W10gcm93SW5kZXhGbGFncyA9IG51bGw7CisgICAgcHJpdmF0ZSBzaG9ydFtdIHJvd0luZGV4RmxhZ3NJbmRleCA9IG51bGw7CisgICAgcHJpdmF0ZSBieXRlW10gcm93SW5kZXhTaGlmdHMgPSBudWxsOworCisgICAgcHJpdmF0ZSBpbnQgdG90YWxXb3JkcyA9IDA7CisgICAgcHJpdmF0ZSBpbnQgdW5pcXVlV29yZHMgPSAwOworICAgIHByaXZhdGUgaW50IHRvdGFsVW5pcXVlV29yZENoYXJzID0gMDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBzcGFjZXMgPSAiICAgICAgIjsKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdG9vbHMvcmJiaS9Xcml0ZVRhYmxlc1RvRmlsZXMuamF2YSBiL3NyYy9jb20vaWJtL3Rvb2xzL3JiYmkvV3JpdGVUYWJsZXNUb0ZpbGVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODAyOGE0OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rvb2xzL3JiYmkvV3JpdGVUYWJsZXNUb0ZpbGVzLmphdmEKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdG9vbHMvcmJiaS9BdHRpYy9Xcml0ZVRhYmxlc1RvRmlsZXMuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wOS8yMiAxODo1Nzo0NCAkIAorICogJFJldmlzaW9uOiAxLjEgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udG9vbHMucmJiaTsKKworaW1wb3J0IGphdmEuaW8uKjsKK2ltcG9ydCBjb20uaWJtLnRleHQuKjsKKworcHVibGljIGNsYXNzIFdyaXRlVGFibGVzVG9GaWxlcyB7CisgICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIElPRXhjZXB0aW9uIHsKKyAgICAgICAgd3JpdGVCYXRjaCh0cnVlKTsKKyAgICAgICAgd3JpdGVCYXRjaChmYWxzZSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgdm9pZCB3cml0ZUJhdGNoKGJvb2xlYW4gbGl0dGxlRW5kaWFuKSB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBCcmVha0l0ZXJhdG9yIGJpOworICAgICAgICBTdHJpbmcgc3VmZml4ID0gKGxpdHRsZUVuZGlhbiA/ICJMRSIgOiAiQkUiKTsKKyAgICAgICAgCisgICAgICAgIGJpID0gQnJlYWtJdGVyYXRvci5nZXRDaGFyYWN0ZXJJbnN0YW5jZSgpOworICAgICAgICAoKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpYmkpLndyaXRlVGFibGVzVG9GaWxlKG5ldyBGaWxlT3V0cHV0U3RyZWFtKAorICAgICAgICAgICAgICAgICAgICAiY2hhciIgKyBzdWZmaXggKyAiLmJyayIpLCBsaXR0bGVFbmRpYW4pOworICAgICAgICAKKyAgICAgICAgYmkgPSBCcmVha0l0ZXJhdG9yLmdldFdvcmRJbnN0YW5jZSgpOworICAgICAgICAoKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpYmkpLndyaXRlVGFibGVzVG9GaWxlKG5ldyBGaWxlT3V0cHV0U3RyZWFtKAorICAgICAgICAgICAgICAgICAgICAid29yZCIgKyBzdWZmaXggKyAiLmJyayIpLCBsaXR0bGVFbmRpYW4pOworICAgICAgICAKKyAgICAgICAgYmkgPSBCcmVha0l0ZXJhdG9yLmdldExpbmVJbnN0YW5jZSgpOworICAgICAgICAoKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpYmkpLndyaXRlVGFibGVzVG9GaWxlKG5ldyBGaWxlT3V0cHV0U3RyZWFtKAorICAgICAgICAgICAgICAgICAgICAibGluZSIgKyBzdWZmaXggKyAiLmJyayIpLCBsaXR0bGVFbmRpYW4pOworICAgICAgICAKKyAgICAgICAgYmkgPSBCcmVha0l0ZXJhdG9yLmdldFNlbnRlbmNlSW5zdGFuY2UoKTsKKyAgICAgICAgKChSdWxlQmFzZWRCcmVha0l0ZXJhdG9yKWJpKS53cml0ZVRhYmxlc1RvRmlsZShuZXcgRmlsZU91dHB1dFN0cmVhbSgKKyAgICAgICAgICAgICAgICAgICAgInNlbnQiICsgc3VmZml4ICsgIi5icmsiKSwgbGl0dGxlRW5kaWFuKTsKKworICAgICAgICBqYXZhLnV0aWwuTG9jYWxlIHRoYWkgPSBuZXcgamF2YS51dGlsLkxvY2FsZSgidGgiLCAiIiwgIiIpOworICAgICAgICBiaSA9IEJyZWFrSXRlcmF0b3IuZ2V0V29yZEluc3RhbmNlKHRoYWkpOworICAgICAgICAoKFJ1bGVCYXNlZEJyZWFrSXRlcmF0b3IpYmkpLndyaXRlVGFibGVzVG9GaWxlKG5ldyBGaWxlT3V0cHV0U3RyZWFtKAorICAgICAgICAgICAgICAgICAgICAid29yZF90aCIgKyBzdWZmaXggKyAiLmJyayIpLCBsaXR0bGVFbmRpYW4pOworCisgICAgICAgIGJpID0gQnJlYWtJdGVyYXRvci5nZXRMaW5lSW5zdGFuY2UodGhhaSk7CisgICAgICAgICgoUnVsZUJhc2VkQnJlYWtJdGVyYXRvciliaSkud3JpdGVUYWJsZXNUb0ZpbGUobmV3IEZpbGVPdXRwdXRTdHJlYW0oCisgICAgICAgICAgICAgICAgICAgICJsaW5lX3RoIiArIHN1ZmZpeCArICIuYnJrIiksIGxpdHRsZUVuZGlhbik7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdG9vbHMvdHJhbnNsaXQvVHJhbnMuamF2YSBiL3NyYy9jb20vaWJtL3Rvb2xzL3RyYW5zbGl0L1RyYW5zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzQ1NDhkMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rvb2xzL3RyYW5zbGl0L1RyYW5zLmphdmEKQEAgLTAsMCArMSw5NCBAQAorcGFja2FnZSBjb20uaWJtLnRvb2xzLnRyYW5zbGl0OworaW1wb3J0IGNvbS5pYm0udGV4dC4qOworaW1wb3J0IGphdmEuaW8uKjsKKworLyoqCisgKiBBIGNvbW1hbmQtbGluZSBpbnRlcmZhY2UgdG8gdGhlIElDVTRKIHRyYW5zbGl0ZXJhdG9ycy4KKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqLworcHVibGljIGNsYXNzIFRyYW5zIHsKKworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBib29sZWFuIGlzSFRNTCA9IGZhbHNlOworICAgICAgICBpbnQgcG9zID0gMDsKKyAgICAgICAgaWYgKGFyZ3MubGVuZ3RoIDwgMykgeyB1c2FnZSgpOyB9CisgICAgICAgIGlmIChhcmdzW3Bvc10uZXF1YWxzKCItaHRtbCIpKSB7CisgICAgICAgICAgICArK3BvczsKKyAgICAgICAgICAgIGlzSFRNTCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKChhcmdzLmxlbmd0aC1wb3MpICE9IDMpIHsgdXNhZ2UoKTsgfQorICAgICAgICBTdHJpbmcgdHJhbnNOYW1lID0gYXJnc1twb3MrK107CisgICAgICAgIFN0cmluZyBpbk5hbWUgPSBhcmdzW3BvcysrXTsKKyAgICAgICAgU3RyaW5nIG91dE5hbWUgPSBhcmdzW3BvcysrXTsKKyAgICAgICAgVHJhbnNsaXRlcmF0b3IgdHJhbnMgPSBUcmFuc2xpdGVyYXRvci5nZXRJbnN0YW5jZSh0cmFuc05hbWUpOworICAgICAgICBCdWZmZXJlZFJlYWRlciBpbiA9IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIobmV3IEZpbGVJbnB1dFN0cmVhbShpbk5hbWUpLCAiVVRGOCIpKTsKKyAgICAgICAgUHJpbnRXcml0ZXIgb3V0ID0gbmV3IFByaW50V3JpdGVyKG5ldyBPdXRwdXRTdHJlYW1Xcml0ZXIobmV3IEZpbGVPdXRwdXRTdHJlYW0ob3V0TmFtZSksICJVVEY4IikpOworICAgICAgICB0cmFucyh0cmFucywgaW4sIG91dCwgaXNIVE1MKTsKKyAgICAgICAgb3V0LmNsb3NlKCk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgdHJhbnMoVHJhbnNsaXRlcmF0b3IgdHJhbnMsCisgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyZWRSZWFkZXIgaW4sIFByaW50V3JpdGVyIG91dCwgYm9vbGVhbiBpc0hUTUwpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIGJvb2xlYW4gaW5UYWcgPSBmYWxzZTsgLy8gSWYgdHJ1ZSwgd2UgYXJlIHdpdGhpbiBhIDx0YWc+CisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIFN0cmluZyBsaW5lID0gaW4ucmVhZExpbmUoKTsKKyAgICAgICAgICAgIGlmIChsaW5lID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc0hUTUwpIHsKKyAgICAgICAgICAgICAgICAvLyBQYXNzIHRhZ3MgYmV0d2VlbiA8IGFuZCA+IHVuY2hhbmdlZAorICAgICAgICAgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgICAgICAgICAgaW50IHJpZ2h0ID0gLTE7CisgICAgICAgICAgICAgICAgaWYgKGluVGFnKSB7CisgICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gbGluZS5pbmRleE9mKCc+Jyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyaWdodCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gbGluZS5sZW5ndGgoKS0xOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQobGluZS5zdWJzdHJpbmcoMCwgcmlnaHQrMSkpOworICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiKlM6IiArIGxpbmUuc3Vic3RyaW5nKDAsIHJpZ2h0KzEpKTsKKyAgICAgICAgICAgICAgICAgICAgaW5UYWcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgICAgICBpbnQgbGVmdCA9IGxpbmUuaW5kZXhPZignPCcsIHJpZ2h0KzEpOworICAgICAgICAgICAgICAgICAgICBpZiAobGVmdCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyaWdodCA8IGxpbmUubGVuZ3RoKCktMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1Zi5hcHBlbmQodHJhbnMudHJhbnNsaXRlcmF0ZShsaW5lLnN1YnN0cmluZyhyaWdodCsxKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJUOiIgKyBsaW5lLnN1YnN0cmluZyhyaWdodCsxKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBBcHBlbmQgdHJhbnNsaXRlcmF0ZWQgc2VnbWVudCByaWdodCsxLi5sZWZ0LTEKKyAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCh0cmFucy50cmFuc2xpdGVyYXRlKGxpbmUuc3Vic3RyaW5nKHJpZ2h0KzEsIGxlZnQpKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJUOiIgKyBsaW5lLnN1YnN0cmluZyhyaWdodCsxLCBsZWZ0KSk7CisgICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gbGluZS5pbmRleE9mKCc+JywgbGVmdCsxKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJpZ2h0IDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5UYWcgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChsaW5lLnN1YnN0cmluZyhsZWZ0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIFN5c3RlbS5vdXQucHJpbnRsbigiUzoiICsgbGluZS5zdWJzdHJpbmcobGVmdCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChsaW5lLnN1YnN0cmluZyhsZWZ0LCByaWdodCsxKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgU3lzdGVtLm91dC5wcmludGxuKCJTOiIgKyBsaW5lLnN1YnN0cmluZyhsZWZ0LCByaWdodCsxKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGxpbmUgPSBidWYudG9TdHJpbmcoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbGluZSA9IHRyYW5zLnRyYW5zbGl0ZXJhdGUobGluZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvdXQucHJpbnRsbihsaW5lKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHID0gZmFsc2U7CisKKyAgICAvKioKKyAgICAgKiBFbWl0IHVzYWdlIGFuZCBkaWUuCisgICAgICovCisgICAgc3RhdGljIHZvaWQgdXNhZ2UoKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVXNhZ2U6IGphdmEgY29tLmlibS50b29scy50cmFuc2xpdC5UcmFucyBbLWh0bWxdIDx0cmFucz4gPGluZmlsZT4gPG91dGZpbGU+Iik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiPHRyYW5zPiAgIE5hbWUgb2YgdHJhbnNsaXRlcmF0b3IiKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCI8aW5maWxlPiAgTmFtZSBvZiBpbnB1dCBmaWxlIik7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiPG91dGZpbGU+IE5hbWUgb2Ygb3V0cHV0IGZpbGUiKTsKKyAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCItaHRtbCAgICAgT25seSB0cmFuc2xpdGVyYXRlIHRleHQgb3V0c2lkZSBvZiA8dGFncz4iKTsKKyAgICAgICAgU3lzdGVtLmV4aXQoMCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdG9vbHMvdHJhbnNsaXQvZHVtcElDVXJ1bGVzLmJhdCBiL3NyYy9jb20vaWJtL3Rvb2xzL3RyYW5zbGl0L2R1bXBJQ1VydWxlcy5iYXQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNDFhNWU0OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rvb2xzL3RyYW5zbGl0L2R1bXBJQ1VydWxlcy5iYXQKQEAgLTAsMCArMSwzMjcgQEAKK0ByZW0gPSAnLS0qLVBlcmwtKi0tCitAZWNobyBvZmYKK2lmICIlT1MlIiA9PSAiV2luZG93c19OVCIgZ290byBXaW5OVAorcGVybCAteCAtUyAiJTAiICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5Citnb3RvIGVuZG9mcGVybAorOldpbk5UCitwZXJsIC14IC1TICIlMCIgJSoKK2lmIE5PVCAiJUNPTVNQRUMlIiA9PSAiJVN5c3RlbVJvb3QlXHN5c3RlbTMyXGNtZC5leGUiIGdvdG8gZW5kb2ZwZXJsCitpZiAlZXJyb3JsZXZlbCUgPT0gOTAwOSBlY2hvIFlvdSBkbyBub3QgaGF2ZSBQZXJsIGluIHlvdXIgUEFUSC4KK2dvdG8gZW5kb2ZwZXJsCitAcmVtICc7CisjIXBlcmwKKyNsaW5lIDE0CisKKyMgVGhpcyBwZXJsIHNjcmlwdCBjcmVhdGVzIElDVSB0cmFuc2xpdGVyYXRvciBkYXRhIGZpbGVzLCB0aGF0IGxpdmUKKyMgaW4gaWN1L2RhdGEsIGZyb20gSUNVNEogVVRGOCB0cmFuc2xpdGVyYXRvciBkYXRhIGZpbGVzLCBpbgorIyBpY3U0ai9zcmMvY29tL2libS90ZXh0L3Jlc291cmNlcy4KKyMKKyMgVGhlIHRyYW5zZm9ybWF0aW9uIHRoYXQgaXMgZG9uZSBpcyB2ZXJ5IG1pbmltYWwuICBUaGUgc2NyaXB0IGFzc3VtZXMKKyMgdGhhdCB0aGUgaW5wdXQgZmlsZXMgdXNlIG9ubHkgIyBjb21tZW50cworIyBhbmQgdGhhdCB0aGV5IGZvbGxvdyBhIHJpZ2lkIGZvcm1hdC4KKyMKKyMgVGhlIG91dHB1dCBmaWxlcyBhcmUgbmFtZWQgYWNjb3JkaW5nIHRvIElDVSBjb252ZW50aW9ucyAoc2VlIE5BTUVfTUFQCisjIGJlbG93KSBhbmQgY3JlYXRlZCBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBUaGV5IHNob3VsZCBiZSBtYW51YWxseQorIyBjaGVja2VkIGFuZCB0aGVuIGNvcGllZCBpbnRvIHRoZSBpY3UvZGF0YSBkaXJlY3RvcnkuICBBbiBJQ1UgYnVpbGQgbXVzdAorIyB0aGVuIGJlIGluaXRpYXRlZCwgYW5kIHRoZSBzdGFuZGFyZCBzdWl0ZSBvZiBJQ1UgdHJhbnNsaXRlcmF0b3IgdGVzdHMKKyMgc2hvdWxkIGJlIHJ1biBhZnRlciB0aGF0LgorIworIyBBbGFuIExpdSA1LzE5LzAwIDIvMjcvMDEKKworaWYgKHNjYWxhciBAQVJHViAhPSAxKSB7CisgICAgdXNhZ2UoKTsKK30KKyRESVIgPSBzaGlmdDsKK2lmICghIC1kICRESVIpIHsKKyAgICB1c2FnZSgpOworfQorCitzdWIgdXNhZ2UgeworICAgIG15ICRtZSA9ICQwOworICAgICRtZSA9fiBzfC4rWy9cXF18fDsKKyAgICBwcmludCAiVXNhZ2U6ICRtZSA8ZGlyPlxuIjsKKyAgICBwcmludCAiIHdoZXJlIDxkaXI+IGNvbnRhaW5zIHRoZSBUcmFuc2xpdGVyYXRvcl8qLnV0ZjgudHh0XG4iOworICAgIHByaW50ICIgZmlsZXMuXG4iOworICAgIHByaW50ICJlLmcuLCAkbWUgRjovaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXNcbiI7CisgICAgZGllOworfQorCiskSkFWQV9PTkxZID0gJy0nOworCisjIE1hcHBpbmcgZnJvbSBKYXZhIGZpbGUgbmFtZXMgdG8gSUNVIGZpbGUgbmFtZXMKKyVOQU1FX01BUCA9ICgKKyAgICAgICAgICAgICAiRnVsbHdpZHRoX0hhbGZ3aWR0aCIgPT4gICAgICAgICJmdWxsaGFsZiIsCisgICAgICAgICAgICAgIkhpcmFnYW5hX0thdGFrYW5hIiA9PiAgICAgICAgICAia2FuYSIsCisgICAgICAgICAgICAgIktleWJvYXJkRXNjYXBlX0xhdGluMSIgPT4gICAgICAia2JkZXNjbDEiLAorICAgICAgICAgICAgICJMYXRpbl9BcmFiaWMiID0+ICAgICAgICAgICAgICAgImxhcmFiaWMiLAorICAgICAgICAgICAgICJMYXRpbl9DeXJpbGxpYyIgPT4gICAgICAgICAgICAgImxjeXJpbCIsCisgICAgICAgICAgICAgIkxhdGluX0RldmFuYWdhcmkiID0+ICAgICAgICAgICAibGRldmFuIiwKKyAgICAgICAgICAgICAiTGF0aW5fR3JlZWsiID0+ICAgICAgICAgICAgICAgICJsZ3JlZWsiLAorICAgICAgICAgICAgICJMYXRpbl9IZWJyZXciID0+ICAgICAgICAgICAgICAgImxoZWJyZXciLAorICAgICAgICAgICAgICJMYXRpbl9KYW1vIiA9PiAgICAgICAgICAgICAgICAgImxqYW1vIiwKKyAgICAgICAgICAgICAiTGF0aW5fS2FuYSIgPT4gICAgICAgICAgICAgICAgICJsa2FuYSIsCisgICAgICAgICAgICAgIlN0cmFpZ2h0UXVvdGVzX0N1cmx5UXVvdGVzIiA9PiAicXVvdGVzIiwKKyAgICAgICAgICAgICAiVW5pY29kZU5hbWVfVW5pY29kZUNoYXIiID0+ICAgICJ1Y25hbWUiLAorICAgICAgICAgICAgIAorICAgICAgICAgICAgICMgQW4gSUNVIG5hbWUgb2YgIiIgbWVhbnMgdGhlIElDVSBuYW1lID09IHRoZSBJRAorICAgICAgICAgICAgICJCZW5nYWxpX0ludGVySW5kaWMiID0+ICAgICAgICAgIiIsCisgICAgICAgICAgICAgIkRldmFuYWdhcmlfSW50ZXJJbmRpYyIgPT4gICAgICAiIiwKKyAgICAgICAgICAgICAiR3VqYXJhdGlfSW50ZXJJbmRpYyIgPT4gICAgICAgICIiLAorICAgICAgICAgICAgICJHdXJtdWtoaV9JbnRlckluZGljIiA9PiAgICAgICAgIiIsCisgICAgICAgICAgICAgIkthbm5hZGFfSW50ZXJJbmRpYyIgPT4gICAgICAgICAiIiwKKyAgICAgICAgICAgICAiTWFsYXlhbGFtX0ludGVySW5kaWMiID0+ICAgICAgICIiLAorICAgICAgICAgICAgICJPcml5YV9JbnRlckluZGljIiA9PiAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgIlRhbWlsX0ludGVySW5kaWMiID0+ICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAiVGVsdWd1X0ludGVySW5kaWMiID0+ICAgICAgICAgICIiLAorICAgICAgICAgICAgICJJbnRlckluZGljX0JlbmdhbGkiID0+ICAgICAgICAgIiIsCisgICAgICAgICAgICAgIkludGVySW5kaWNfRGV2YW5hZ2FyaSIgPT4gICAgICAiIiwKKyAgICAgICAgICAgICAiSW50ZXJJbmRpY19HdWphcmF0aSIgPT4gICAgICAgICIiLAorICAgICAgICAgICAgICJJbnRlckluZGljX0d1cm11a2hpIiA9PiAgICAgICAgIiIsCisgICAgICAgICAgICAgIkludGVySW5kaWNfS2FubmFkYSIgPT4gICAgICAgICAiIiwKKyAgICAgICAgICAgICAiSW50ZXJJbmRpY19NYWxheWFsYW0iID0+ICAgICAgICIiLAorICAgICAgICAgICAgICJJbnRlckluZGljX09yaXlhIiA9PiAgICAgICAgICAgIiIsCisgICAgICAgICAgICAgIkludGVySW5kaWNfVGFtaWwiID0+ICAgICAgICAgICAiIiwKKyAgICAgICAgICAgICAiSW50ZXJJbmRpY19UZWx1Z3UiID0+ICAgICAgICAgICIiLAorICAgICAgICAgICAgIAorICAgICAgICAgICAgICMgVGhlc2UgZmlsZXMgYXJlIGxhcmdlLCBzbyBJQ1UgZG9lc24ndCB3YW50IHRoZW0KKyAgICAgICAgICAgICAiSGFuX1BpbnlpbiIgPT4gJEpBVkFfT05MWSwKKyAgICAgICAgICAgICAiS2FuamlfRW5nbGlzaCIgPT4gJEpBVkFfT05MWSwKKyAgICAgICAgICAgICAiS2FuamlfT25Sb21hamkiID0+ICRKQVZBX09OTFksCisgICAgICAgICAgICAgKTsKKworIyBIZWFkZXIgYmxvY2tzIG9mIHRleHQgd3JpdHRlbiBhdCBzdGFydCBvZiBJQ1Ugb3V0cHV0IGZpbGVzCiskSEVBREVSMSA9IDw8RU5EOworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQ29weXJpZ2h0IChjKSAxOTk5LTIwMDEsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMKKy8vIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gVEhJUyBJUyBBIE1BQ0hJTkUtR0VORVJBVEVEIEZJTEUKK0VORAorJEhFQURFUjIgPSA8PEVORDsKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0VORAorCiskVE9PTCA9ICQwOworCisjIEl0ZXJhdGUgb3ZlciBhbGwgSmF2YSBSQlQgcnVsZSBmaWxlcworZm9yZWFjaCAoPCRESVIvVHJhbnNsaXRlcmF0b3JfKi51dGY4LnR4dD4pIHsKKyAgICBuZXh0IGlmICgvfiQvKTsKKyAgICBteSAoJG91dCwgJGlkKSA9IGNvbnZlcnRGaWxlTmFtZSgkXyk7CisgICAgaWYgKCRvdXQpIHsKKyAgICAgICAgaWYgKCRvdXQgZXEgJEpBVkFfT05MWSkgeworICAgICAgICAgICAgcHJpbnQgU1RERVJSICIkaWQ6IEphdmEgb25seVxuIjsKKyAgICAgICAgICAgIG5leHQ7CisgICAgICAgIH0KKyAgICAgICAgZmlsZSgkaWQsICRfLCAkb3V0KTsKKyAgICB9Cit9CisKK2NvbnZlcnRJbmRleCgpOworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIENvbnZlcnQgYSBKYXZhIGZpbGUgbmFtZSB0byBDCisjIFBhcmFtOiBKYXZhIGZpbGUgbmFtZSBvZiB0aGUgZm9ybSBtfFRyYW5zbGl0ZXJhdG9yXyguKylcLnV0ZjhcLnR4dCR8CisjIFJldHVybjogQSBDIGZpbGUgbmFtZSAoZS5nLiwgbGRldmFuLnR4dCkgb3IgdGhlIGVtcHR5IHN0cmluZywKKyMgIGlmIHRoZXJlIGlzIG5vIG1hcHBpbmcsIG9yICRKQVZBX09OTFkgaWYgdGhlIGdpdmVuIGZpbGUgaXNuJ3QKKyMgIGludGVuZGVkIHRvIGJlIGluY29ycG9yYXRlZCBpbnRvIEMuCitzdWIgY29udmVydEZpbGVOYW1lIHsKKyAgICBsb2NhbCAkXyA9IHNoaWZ0OworICAgIG15ICRpZDsKKyAgICBpZiAobXxUcmFuc2xpdGVyYXRvcl8oLispXC51dGY4XC50eHQkfCkgeworICAgICAgICAkaWQgPSAkMTsKKyAgICB9IGVsc2UgeyBkaWUgIkNhbid0IHBhcnNlIEphdmEgZmlsZSBuYW1lICRfIjsgfQorICAgIGlmICghZXhpc3RzICROQU1FX01BUHskaWR9KSB7CisgICAgICAgIHByaW50IFNUREVSUiAiRVJST1I6ICRpZCBub3QgaW4gbWFwOyBwbGVhc2UgdXBkYXRlICQwXG4iOworICAgICAgICByZXR1cm4gJyc7CisgICAgfQorICAgIG15ICRvdXQgPSAkTkFNRV9NQVB7JGlkfTsKKyAgICBpZiAoJG91dCBlcSAnJykgeworICAgICAgICAkb3V0ID0gJGlkOworICAgIH0KKyAgICByZXR1cm4gKCRvdXQsICRpZCk7Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgQ29udmVydCB0aGUgaW5kZXggZmlsZSBmcm9tIEphdmEgdG8gQyBmb3JtYXQKK3N1YiBjb252ZXJ0SW5kZXggeworICAgICRKQVZBX0lOREVYID0gIlRyYW5zbGl0ZXJhdG9yX2luZGV4LnR4dCI7CisgICAgJENfSU5ERVggPSAidHJhbnNsaXRfaW5kZXgudHh0IjsKKyAgICBvcGVuKEpBVkFfSU5ERVgsICIkRElSLyRKQVZBX0lOREVYIikgb3IgZGllOworICAgIG9wZW4oQ19JTkRFWCwgIj4kQ19JTkRFWCIpIG9yIGRpZTsKKyAgICAKKyAgICBoZWFkZXIoXCpDX0lOREVYLCAkSkFWQV9JTkRFWCk7CisgICAgCisgICAgcHJpbnQgQ19JTkRFWCA8PEVORDsKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIE4uQi46IFRoaXMgZmlsZSBoYXMgYmVlbiBnZW5lcmF0ZWQgbWVjaGFuaWNhbGx5IGZyb20gdGhlCisvLyBjb3JyZXNwb25kaW5nIElDVTRKIGZpbGUsIHdoaWNoIGlzIHRoZSBtYXN0ZXIgZmlsZSB0aGF0IHJlY2VpdmVzCisvLyBwcmltYXJ5IHVwZGF0ZXMuICBUaGUgY29sb24tZGVsaW1pdGVkIGZpZWxkcyBoYXZlIGJlZW4gc3BsaXQgaW50bworLy8gc2VwYXJhdGUgc3RyaW5ncy4gIEZvciAnZmlsZScgYW5kICdpbnRlcm5hbCcgbGluZXMsIHRoZSBlbmNvZGluZworLy8gZmllbGQgaGFzIGJlZW4gZGVsZXRlZCwgc2luY2UgdGhlIGVuY29kaW5nIGlzIHByb2Nlc3NlZCBhdCBidWlsZAorLy8gdGltZSBpbiBJQ1U0Qy4gIENlcnRhaW4gbGFyZ2UgcnVsZSBzZXRzIG5vdCBpbnRlbmRlZCBmb3IgZ2VuZXJhbAorLy8gdXNlIGhhdmUgYmVlbiBjb21tZW50ZWQgb3V0IHdpdGggdGhlIG5vdGF0aW9uICJKYXZhIG9ubHkiLgorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0cmFuc2xpdF9pbmRleCB7CisgIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9ySURzIHsKK0VORAorICAgICAgICAgICAgICAgIAorICAgIHdoaWxlICg8SkFWQV9JTkRFWD4pIHsKKyAgICAgICAgIyBDb21tZW50czsgY2hhbmdlICMgdG8gLy8KKyAgICAgICAgaWYgKHN8XihccyopXCN8JDEvL3wpIHsKKyAgICAgICAgICAgIHByaW50IENfSU5ERVg7CisgICAgICAgICAgICBuZXh0OworICAgICAgICB9CisgICAgICAgICMgQmxhbmsgbGluZXMKKyAgICAgICAgaWYgKCEvXFMvKSB7CisgICAgICAgICAgICBwcmludCBDX0lOREVYOworICAgICAgICAgICAgbmV4dDsKKyAgICAgICAgfQorICAgICAgICAjIENvbnRlbnQgbGluZXMKKyAgICAgICAgY2hvbXA7CisgICAgICAgIG15ICRwcmVmaXggPSAnJzsKKyAgICAgICAgbXkgQGEgPSBzcGxpdCgnOicsICRfKTsKKyAgICAgICAgaWYgKCRhWzFdIGVxICdmaWxlJyB8fCAkYVsxXSBlcSAnaW50ZXJuYWwnKSB7CisgICAgICAgICAgICAjIENvbnZlcnQgdGhlIGZpbGUgbmFtZQorICAgICAgICAgICAgbXkgJGlkOworICAgICAgICAgICAgKCRhWzJdLCAkaWQpID0gY29udmVydEZpbGVOYW1lKCRhWzJdKTsKKyAgICAgICAgICAgIGlmICgkYVsyXSBlcSAkSkFWQV9PTkxZKSB7CisgICAgICAgICAgICAgICAgJHByZWZpeCA9ICcvLyBKYXZhIG9ubHk6ICc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAjIERlbGV0ZSB0aGUgZW5jb2RpbmcgZmllbGQKKyAgICAgICAgICAgIHNwbGljZShAYSwgMywgMSk7CisgICAgICAgIH0gZWxzaWYgKCRhWzFdIGVxICdhbGlhcycpIHsKKyAgICAgICAgICAgICMgUGFkIG91dCB3aXRoIGV4dHJhIGJsYW5rIGZpZWxkcyB0byBtYWtlIHRoZQorICAgICAgICAgICAgIyAyLWQgYXJyYXkgc3F1YXJlCisgICAgICAgICAgICBwdXNoIEBhLCAiIjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRpZSAiQ2FuJ3QgcGFyc2UgJF8iOworICAgICAgICB9CisgICAgICAgIHByaW50IENfSU5ERVgKKyAgICAgICAgICAgICRwcmVmaXgsICJ7ICIsCisgICAgICAgICAgICBqb2luKCIsICIsIG1hcCgiXCIkX1wiIiwgQGEpKSwKKyAgICAgICAgICAgICIgfSxcbiI7CisgICAgfQorCisgICAgcHJpbnQgQ19JTkRFWCA8PEVORDsKKyAgfQorfQorRU5ECisKKyAgICBjbG9zZShDX0lOREVYKTsKKyAgICBjbG9zZShKQVZBX0lOREVYKTsKKyAgICBwcmludCBTVERFUlIgIiRKQVZBX0lOREVYIC0+ICRDX0lOREVYXG4iOworfQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIE91dHB1dCBhIGhlYWRlcgorIyBQYXJhbTogRmlsZWhhbmRsZQorc3ViIGhlYWRlciB7CisgICAgbXkgJG91dCA9IHNoaWZ0OworICAgIG15ICRpbiA9IHNoaWZ0OworICAgIHByaW50ICRvdXQgJEhFQURFUjE7CisgICAgcHJpbnQgJG91dCAiLy8gVG9vbDogJFRPT0xcbi8vIFNvdXJjZTogJGluXG4iOworICAgIHByaW50ICRvdXQgIi8vIERhdGU6ICIsIHNjYWxhciBsb2NhbHRpbWUsICJcbiI7CisgICAgcHJpbnQgJG91dCAkSEVBREVSMjsKKyAgICBwcmludCAkb3V0ICJcbiI7Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUHJvY2VzcyBvbmUgZmlsZQorIyBQYXJhbTogSUQsIGUuZy4gRnVsbHdpZHRoLUhhbGZ3aWR0aAorIyBQYXJhbTogSmF2YSBpbnB1dCBmaWxlIG5hbWUsIGUuZy4KKyMgIGY6L2ljdTRqL3NyYy9jb20vaWJtL3RleHQvcmVzb3VyY2VzL1RyYW5zbGl0ZXJhdG9yX0Z1bGx3aWR0aF9IYWxmd2lkdGgudXRmOC50eHQKKyMgUGFyYW06IElDVSBvdXRwdXQgZmlsZSBuYW1lLCBlLmcuIGZ1bGxoYWxmCitzdWIgZmlsZSB7CisgICAgbXkgJGlkID0gc2hpZnQ7CisgICAgbXkgJElOID0gc2hpZnQ7CisgICAgbXkgJG91dCA9IHNoaWZ0OworCisgICAgbXkgJE9VVCA9ICIkb3V0LnR4dCI7CisKKyAgICAjIFNob3cgaW5wdXQgc2l6ZS4gU2hvdyBvdXRwdXQgc2l6ZSBsYXRlciAtLSB1c2VmdWwgZm9yIHF1aWNrIHNhbml0eSBjaGVjay4KKyAgICBwcmludCAiJGlkICgiLCAtcyAkSU4sICIpIC0+ICRPVVQgKCI7CisKKyAgICAjIFdyaXRlIG91dHB1dCBmaWxlIGhlYWRlcgorICAgIG9wZW4oT1VULCAiPiRPVVQiKSBvciBkaWU7CisgICAgYmlubW9kZSBPVVQ7ICMgTXVzdCBkbyB0aGlzIHNvIHdlIGNhbiB3cml0ZSBvdXIgVVRGOCBtYXJrZXIKKyAgICAKKyAgICAjIFdyaXRlIFVURjggbWFya2VyCisgICAgcHJpbnQgT1VUIHBhY2soIkMzIiwgMHhFRiwgMHhCQiwgMHhCRik7CisgICAgcHJpbnQgT1VUICIgLy8gLSotIENvZGluZzogdXRmLTg7IC0qLVxuIjsKKworICAgIGhlYWRlcihcKk9VVCwgJElOKTsKKyAgICBwcmludCBPVVQgIi8vICRpZFxuIjsKKyAgICBwcmludCBPVVQgIlxuIjsKKyAgICBwcmludCBPVVQgIiRvdXQge1xuIjsKKyAgICBwcmludCBPVVQgIiAgUnVsZSB7XG4iOworCisgICAgb3BlbihJTiwgJElOKSBvciBkaWU7CisgICAgYmlubW9kZSBJTjsgIyBJTiBpcyBhIFVURjggZmlsZQorCisgICAgIyBQcm9jZXNzIGVhY2ggbGluZSBieSBjaGFuZ2luZyAjIGNvbW1lbnRzIHRvIC8vIGNvbW1lbnRzCisgICAgIyBhbmQgdGFraW5nIG90aGVyIHRleHQgYW5kIGVuY2xvc2luZyBpdCBpbiBkb3VibGUgcXVvdGVzCisgICAgd2hpbGUgKDxJTj4pIHsKKyAgICAgICAgbXkgJHJhdyA9ICRfOworICAgICAgICAKKyAgICAgICAgIyBDbGVhbiB0aGUgZW9sIGp1bmsgdXAKKyAgICAgICAgcy9bXHgwRFx4MEFdKyQvLzsKKworICAgICAgICAjIFRyYW5zZm9ybSBlc2NhcGVkIGNoYXJhY3RlcnMKKyAgICAgICAgaGlkZUVzY2FwZXMoKTsKKworICAgICAgICBpZiAoL14oXHMqKShcIy4qKSQvKSB7CisgICAgICAgICAgICAjIENvbW1lbnQtb25seSBsaW5lCisgICAgICAgICAgICBteSAoJHdoaXRlLCAkY210KSA9ICgkMSwgJDIpOworICAgICAgICAgICAgJGNtdCA9fiBzfFwjfC8vfDsKKyAgICAgICAgICAgICRfID0gJHdoaXRlIC4gJGNtdDsKKworICAgICAgICB9IGVsc2lmICgvXihccyopKFxTLio/KShccyopKFwjLiopPyQvKSB7CisgICAgICAgICAgICAjIFJ1bGUgbGluZSB3aXRoIG9wdGlvbmFsIGNvbW1lbnQKKyAgICAgICAgICAgIG15ICgkd2hpdGUxLCAkcnVsZSwgJHdoaXRlMiwgJGNtdCkgPSAoJDEsICQyLCAkMywgJDQpOworICAgICAgICAgICAgJGNtdCA9fiBzfFwjfC8vfCBpZiAoJGNtdCk7CisgICAgICAgICAgICAkXyA9ICR3aGl0ZTEgLiAnIicgLiAkcnVsZSAuICciJyAuICR3aGl0ZTIgLiAkY210OworCisgICAgICAgIH0gZWxzaWYgKCEvXFMvKSB7CisgICAgICAgICAgICAjIEJsYW5rIGxpbmUgLS0gbGVhdmUgYXMtaXMKKworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIyBVbnBhcnNlYWJsZSBsaW5lCisgICAgICAgICAgICBwcmludCBTVERFUlIgIkVycm9yOiBDYW4ndCBwYXJzZSBsaW5lOiAkcmF3IjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgIyBSZXN0b3JlIGVzY2FwZWQgY2hhcmFjdGVycworICAgICAgICByZXN0b3JlRXNjYXBlcygpOworCisgICAgICAgIHByaW50IE9VVCAkXywgIlxuIjsKKyAgICB9CisKKyAgICAjIEZpbmlzaCB1cAorICAgIGNsb3NlKElOKTsKKyAgICBwcmludCBPVVQgIiAgfVxuIjsKKyAgICBwcmludCBPVVQgIn1cbiI7CisgICAgY2xvc2UoT1VUKTsKKworICAgICMgV3JpdGUgb3V0cHV0IGZpbGUgc2l6ZSBmb3Igc2FuaXR5IGNoZWNrCisgICAgcHJpbnQgLXMgJE9VVCwgIilcbiI7Cit9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3N1YiBoaWRlRXNjYXBlcyB7CisgICAgIyBUcmFuc2Zvcm0gZXNjYXBlZCBjaGFyYWN0ZXJzCisgICAgc3xcXHUoW2EtekEtWjAtOV17NH0pfDw8dSQxPj58ZzsgIyBUcmFuc2Zvcm0gVW5pY29kZSBlc2NhcGVzCisgICAgc3xcXFwifDw8ZHE+Pnw7ICMgVHJhbnNmb3JtIGJhY2tzbGFzaCBkb3VibGUgcXVvdGUKKyAgICBzfFxcKC4pfDw8cSQxPj58OyAjIFRyYW5zZm9ybSBiYWNrc2xhc2ggZXNjYXBlcworfQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitzdWIgcmVzdG9yZUVzY2FwZXMgeworICAgICMgUmVzdG9yZSBlc2NhcGVkIGNoYXJhY3RlcnMKKyAgICBzfDw8ZHE+PnxcXFwifGc7CisgICAgc3w8PHEoLik+PnxcXCQxfGc7CisgICAgc3w8PHUwMDAwPj58XFxcXHUwMDAwfGc7ICMgRG91YmxlIGVzY2FwZSBVKzAwMDAKKyAgICBzfDw8dSguLi4uKT4+fFxcdSQxfGc7Cit9CisKK19fRU5EX18KKzplbmRvZnBlcmwKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rvb2xzL3RyYW5zbGl0L2luZGljLmJhdCBiL3NyYy9jb20vaWJtL3Rvb2xzL3RyYW5zbGl0L2luZGljLmJhdApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xMDIyM2MzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdG9vbHMvdHJhbnNsaXQvaW5kaWMuYmF0CkBAIC0wLDAgKzEsMTcgQEAKK0BlY2hvIG9mZgorUkVNIENvcHlyaWdodCAoQykgMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcworUkVNIENvcnBvcmF0aW9uIGFuZCBvdGhlcnMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorCitSRU0gVGhpcyBzY3JpcHQgaXMgYSBXaW5kb3dzIGxhdW5jaGVyIGZvciB0aGUgaW5kaWMucGwgc2NyaXB0LiAgRm9yIHRoaXMKK1JFTSB0byB3b3JrLCB0aGUgcGVybCBleGVjdXRhYmxlIG11c3QgYmUgb24gdGhlIHBhdGguICBXZSByZWNvbW1lbmQKK1JFTSB0aGUgQWN0aXZlU3RhdGUgYnVpbGQ7IHNlZSBodHRwOi8vd3d3LmFjdGl2ZXN0YXRlLmNvbS4gIFNlZSB0aGUKK1JFTSB0ei5wbCBzY3JpcHQgaXRzZWxmIGZvciBtb3JlIGRvY3VtZW50YXRpb24uCisKK2lmICIlT1MlIiA9PSAiV2luZG93c19OVCIgZ290byBXaW5OVAorcGVybCAtdyAteCBpbmRpYy5wbCAlMSAlMiAlMyAlNCAlNSAlNiAlNyAlOCAlOQorZ290byBlbmQKKzpXaW5OVAorcGVybCAtdyAteCBpbmRpYy5wbCAlKgoraWYgTk9UICIlQ09NU1BFQyUiID09ICIlU3lzdGVtUm9vdCVcc3lzdGVtMzJcY21kLmV4ZSIgZ290byBlbmQKK2lmICVlcnJvcmxldmVsJSA9PSA5MDA5IGVjaG8gWW91IGRvIG5vdCBoYXZlIFBlcmwgaW4geW91ciBQQVRILgorOmVuZApkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdG9vbHMvdHJhbnNsaXQvaW5kaWMucGwgYi9zcmMvY29tL2libS90b29scy90cmFuc2xpdC9pbmRpYy5wbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lNTljNDdmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdG9vbHMvdHJhbnNsaXQvaW5kaWMucGwKQEAgLTAsMCArMSw2NTUgQEAKKyMhcGVybAorCisjIFVzYWdlIC0gJDAgPHJlbWFwIGZpbGU+CisjICBlLmcuIC0gaW5kaWMgaW5kaWMudHh0CisjIFRoZSBpbnB1dCBmaWxlIHNob3VsZCBiZSBhIHN1YnNldCBvZiB0aGUgVW5pY29kZSBkYXRhIGZpbGUgY29udGFpbmluZworIyB0aGUgYmxvY2tzIG9mIGludGVyZXN0LgorIworIyBUaGUgcmVtYXAgZmlsZSBzaG91bGQgaGF2ZSBsaW5lcyBvZiB0aGUgZm9ybQorIyAiXHUwRDAxPlx1MEQwMjsiCisjIGluY2x1ZGluZyB0aGUgcXVvdGVzLiAgVGhlc2Ugd2lsbCBiZSBpbnRlcnByZXRlZCBhcyBzYXlpbmcgdGhhdCB0aGUKKyMgdW5kZWZpbmVkIGNvZGUgcG9pbnQgVStEMDEgKGRlcml2ZWQgdmlhIG1hcHBpbmcgZnJvbSBJbnRlckluZGljKQorIyBjYW4gYmUgcmVtYXBwZWQgdG8gVStEMDIuCisjIAorIyBUaGUgcHVycG9zZSBvZiB0aGlzIHNjcmlwdCBpcyB0byBwcm9jZXNzIHRoZSBJbmRpYyBzY3JpcHQgZGF0YSBpbnRvCisjIGEgZm9ybSB1c2FibGUgYnkgdGhlIEluZGljVHJhbnNsaXRlcmF0b3IsIHRoYXQgaXMsIHRoZSBJbmRpYy1JbmRpYworIyB0cmFuc2xpdGVyYXRvci4gIFRoZSB0cmFuc2xpdGVyYXRvciBuZWVkcyB0d28gdGhpbmdzOiBBIG1hcHBpbmcgb2YKKyMgdGhlIGNvZGUgcG9pbnRzIGluIGNvbW1vbiwgYW5kIGEgbGlzdCBvZiB0aGUgZXhjZXB0aW9ucy4KKworIyBBc3N1bWUgd2UgYXJlIGxvY2F0ZWQgaW4gaWN1NGovc3JjL2NvbS9pYm0vdG9vbHMvdHJhbnNsaXQvLgorIyBXZSB3YW50IHRoZSBVbmljb2RlIERCIGluIGljdTRqL3NyYy9kYXRhL3VuaWNvZGUvLgorJFVOSUNPREVfREIgPSAiLi4vLi4vLi4vLi4vZGF0YS91bmljb2RlL1VuaWNvZGVEYXRhLnR4dCI7CiskRVhDRVBUSU9OU19GSUxFID0gc2hpZnQ7CisKKyMgQXNzdW1lIHdlIGFyZSBsb2NhdGVkIGluIGljdTRqL3NyYy9jb20vaWJtL3Rvb2xzL3RyYW5zbGl0Ly4KKyMgV2Ugd2FudCB0byBvdXRwdXQgZmlsZXMgdG8gaWN1NGovc3JjL2NvbS9pYm0vdGV4dC9yZXNvdXJjZXMvLgorIyBPdXRwdXQgZGlyZWN0b3J5CiskT1VURElSID0gIi4uLy4uL3RleHQvcmVzb3VyY2VzIjsKKworIyBUaGUgdGVtcGxhdGUgZmlsZSBzaG91bGQgY29udGFpbiBqYXZhIGNvZGUgdGhhdCBjYW4gYmUgdXNlZAorIyB0byBnZW5lcmF0ZSBSdWxlQmFzZWRUcmFuc2xpdGVyYXRvciByZXNvdXJjZSBmaWxlcy4gIFRoZSB0ZW1wbGF0ZQorIyBzaG91bGQgY29udGFpbiB0aGUgZm9sbG93aW5nIGVtYmVkZGVkIHN5bWJvbHMsIHdoaWNoIHRoaXMgc2NyaXB0CisjIHdpbGwgcmVwbGFjZToKKyMgJFRPT0wgLSBuYW1lIG9mIGdlbmVyYXRpbmcgdG9vbAorIyAkREFURSAtIGRhdGUgb2YgZ2VuZXJhdGlvbgorIyAkU0NSSVBURlJPTSAtIG5hbWUgb2Ygc291cmNlIHNjcmlwdAorIyAkU0NSSVBUVE8gLSBuYW1lIG9mIHRhcmdldCBzY3JpcHQKKyMgJFJVTEVTIC0gcnVsZXMKKyRSQlRfVEVNUExBVEUgPSAncmJ0VGVtcGxhdGUudHh0JzsKKworIyBOYW1lIG9mIHRoaXMgdG9vbCBpbiBnZW5lcmF0ZWQgUkJUIGZpbGVzCiskUkJUX0dFTl9UT09MID0gJ2ljdTRqL3NyYy9jb20vaWJtL3Rvb2xzL3RyYW5zbGl0L2luZGljLnBsJzsKKworJERVTVAgPSAwOyAjIElmIDEsIGR1bXAgb3V0IGludGVybmFsIGRhdGEKKworJERPX0hFVVJJU1RJQ19SRU1BUCA9IDA7ICMgSWYgMSwgZG8gYXV0b21hdGljIGhldXJpc3RpYyByZW1hcHBpbmcKKyRET19ERUNPTVBfUkVNQVAgPSAwOyAjIElmIDEsIGRvIGRlY29tcCByZW1hcHBpbmcKKworb3BlbihVTklDT0RFX0RCKTsKK3doaWxlICg8VU5JQ09ERV9EQj4pIHsKKyAgICBuZXh0IGlmIChtfF4wWzAtOF18KTsgIyBTa2lwIHVwIHRvIERldmFuYWdhcmkgYmxvY2sgKDA5MDApCisgICAgbGFzdCBpZiAobXxeMERbOC1GXXxpKTsgIyBCYWlsIG91dCBhZnRlciBNYWxheWFtIGJsb2NrICgwRDAwKQorICAgICMgMEQzOTtNQUxBWUFMQU0gTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisgICAgbXkgQGRhdGEgPSBzcGxpdCgvOy8pOworICAgIG15ICRmdWxsQ29kZSA9IGhleCgkZGF0YVswXSk7ICMgZS5nLiwgMHgwOTNGCisgICAgbXkgJGNvZGUgPSAkZnVsbENvZGUgJiAweDdGOyAjIGUuZy4sIDB4M0YKKyAgICBteSAoJHNjcmlwdCwgJG5hbWUpID0gKCRkYXRhWzFdID1+IC8oXHcrKVxzKyguKykvKTsKKyAgICBkaWUgIkNhbid0IHBhcnNlICRfIiB1bmxlc3MgKCRuYW1lKTsKKyAgICAjIGUuZy4sICRjb2RlLyRzY3JpcHQvJG5hbWUgPSAzRi9NQUxBWUFMQU0vVk9XRUwgU0lHTiBJCisKKyAgICAjIFRpdGxlY2FzZSB0aGUgc2NyaXB0CisgICAgJHNjcmlwdCA9IHVjZmlyc3QobGMoJHNjcmlwdCkpOworCisgICAgIyBGaXggYSBjb3VwbGUgaW5jb25zaXN0ZW5jaWVzIGluIHRoZSAzLjAgZGF0YQorICAgICMgUkVWSVNJVDogSXMgdGhpcyBva2F5IHRvIGRvPworICAgIGlmICgkRE9fSEVVUklTVElDX1JFTUFQKSB7CisgICAgICAgIGlmICgkc2NyaXB0IGVxICdHdWphcmF0aScgJiYgJGNvZGUgPj0gNSAmJiAkY29kZSA8PSAweDE0KSB7CisgICAgICAgICAgICAkbmFtZSA9fiBzL15WT1dFTC9MRVRURVIvOworICAgICAgICB9CisgICAgfQorCisgICAgIyBLZWVwIHRyYWNrIG9mIGFsbCBzY3JpcHQgbmFtZXMgd2UgZW5jb3VudGVyLiAgV2UgYWxzbyBub3RlIHRoZQorICAgICMgYmFzZSBvZiB0aGUgYmxvY2suCisgICAgbXkgJGJhc2UgPSAkZnVsbENvZGUgJiB+MHg3RjsgIyBlLmcuLCAweDkwMDsKKyAgICBpZiAoZXhpc3RzICRTQ1JJUFRfVE9fQkFTRXskc2NyaXB0fSkgeworICAgICAgICBkaWUgIlNjcmlwdCBiYXNlIG1pc21hdGNoIGZvciAkc2NyaXB0OiAkYmFzZSB2cy4gJFNDUklQVF9UT19CQVNFeyRzY3JpcHR9IgorICAgICAgICAgICAgaWYgKCRTQ1JJUFRfVE9fQkFTRXskc2NyaXB0fSBuZSAkYmFzZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgJFNDUklQVF9UT19CQVNFeyRzY3JpcHR9ID0gJGJhc2U7CisgICAgfQorCisgICAgIyBCdWlsZCB1cCBhIG1hcHBpbmcgYnkgbmFtZS4gIEZvciBlYWNoIG5hbWUsIGtlZXAgYSBoYXNoIGtleWVkIGJ5CisgICAgIyBjb2RlIHBvaW50LiAgRm9yIGVhY2ggY29kZSBwb2ludCwga2VlcCBhbiBhcnJheSBvZiBzY3JpcHQgbmFtZXMuCisgICAgIyBBbHNvIGtlZXAgYSB0b3RhbCB1c2UgY291bnQgZm9yIGVhY2ggbmFtZS4KKyAgICBwdXNoIEB7JE5BTUVfQ09ERV9UT19TQ1JJUFRTeyRuYW1lfXskY29kZX19LCAkc2NyaXB0OworICAgICsrJE5BTUVfQ09ERV9UT19TQ1JJUFRTeyRuYW1lfXtjb3VudH07CisKKyAgICAjIEJ1aWxkIGEgbWFwIHRoYXQgbG9va3MgbGlrZSB0aGlzOgorICAgICMgJFNDUklQVF9OQU1FX1RPX0NPREV7PHNjcmlwdD59ezxuYW1lPn0gPSA8Y29kZT4KKyAgICAjIG9yIHVuZGVmIGlmIHRoZXJlIGlzIG5vIG1hcHBpbmcuCisgICAgJFNDUklQVF9OQU1FX1RPX0NPREV7JHNjcmlwdH17JG5hbWV9ID0gJGNvZGU7CisKKyAgICAjIEJ1aWxkIGEgbWFwIHRoYXQgbG9va3MgbGlrZSB0aGlzOgorICAgICRTQ1JJUFRfQ09ERV9UT19OQU1FeyRzY3JpcHR9eyRjb2RlfSA9ICRuYW1lOworCisgICAgIyBBbmQgYSBtYXAgZnJvbSB0aGUgZnVsbENvZGUgcG9pbnQgdG8gdGhlIG5hbWUKKyAgICAkRlVMTENPREVfVE9fTkFNRXskZnVsbENvZGV9ID0gJG5hbWU7CisKKyAgICAjIE1hcCBjb2RlICgwLi43RikgdG8gbmFtZS4gIFRoaXMgaXMgdXN1YWxseSBhIDEtMSBtYXBwaW5nLCBidXQKKyAgICAjIGlzIDEtbiBpbiBhIGZldyBjYXNlcy4KKyAgICBpZiAoZXhpc3RzICRDT0RFX1RPX05BTUV7JGNvZGV9KSB7CisgICAgICAgIGlmICgkbmFtZSBuZSAkQ09ERV9UT19OQU1FeyRjb2RlfSkgeworICAgICAgICAgICAgIyBGb3IgbXVsdGlwbGUgbmFtZXMgb24gYSBjb2RlIG9mZnNldCwgdXNlIHRoZSBmb3JtYXQKKyAgICAgICAgICAgICMgKGEvYiksIChhL2IvYyksIGV0Yy4KKyAgICAgICAgICAgIGxvY2FsICRfID0gJENPREVfVE9fTkFNRXskY29kZX07CisgICAgICAgICAgICBpZiAobXxeXCh8KSB7CisgICAgICAgICAgICAgICAgaWYgKCFtfFtcKFwpL10kbmFtZVtcKFwpL118KSB7CisgICAgICAgICAgICAgICAgICAgIHN8XCkkfC8kbmFtZVwpfDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICRfID0gIigkXy8kbmFtZSkiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgJENPREVfVE9fTkFNRXskY29kZX0gPSAkXzsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgICRDT0RFX1RPX05BTUV7JGNvZGV9ID0gJG5hbWU7CisgICAgfQorfQorY2xvc2UoVU5JQ09ERV9EQik7CisKKyMgUmVhZCBhbmQgcGFyc2UgdGhlIG1hbnVhbCByZW1hcHBpbmcgZmlsZS4gIFRoaXMgY29udGFpbnMgbGluZXMKKyMgb2YgdGhlIGZvcm06CisKKyMgfCJcdTA5NTY+XHUwOTQ4OyIgIC8vIEFJIExlbmd0aCBNYXJrIC0+IERldmFuYWdhcmkgVm93ZWwgU2lnbiBBSSAKKworIyBUaGUgbGVmdCBoYW5kIHNpZGUgY29udGFpbnMgYSBub24tZXhpc3RlbnQgZnVsbCBjb2RlIHZhbHVlLiAgSXQKKyMgc2hvdWxkIGJlIGEgc2luZ2xlIHZhbHVlLiAgVGhlIHJpZ2h0IGhhbmQgc2lkZSBjb250YWlucyBvbmUgb3IgbW9yZQorIyByZWFsIGZ1bGwgY29kZSB2YWx1ZXMuICBUaGUgaWRlYSBpcyB0aGF0IHdoZW4gYSBtYXBwaW5nIGZyb20gYW5vdGhlcgorIyBzY3JpcHQgZW5kcyB1cCBhdCB0aGUgbm9uLWV4aXN0ZW50IGNvZGUgcG9pbnQgb24gdGhlIGxlZnQsIHRoZQorIyBzZXF1ZW5jZSBvbiB0aGUgcmlnaHQgc2hvdWxkIGJlIHN1YnN0aXR1dGVkLiAgSW4gdGhpcyBleGFtcGxlLAorIyBEZXZhbmFnYXJpIGhhcyBubyBBSSBMZW5ndGggTWFyay4gIFNvLCBpZiB0cmFuc2xpdGVyYXRpbmcgZnJvbQorIyBPcml5YSwgdGhlbiB0aGUgY2hhcmFjdGVyIDBCNTYgKE9yaXlhIEFJIExlbmd0aCBNYXJrKSB3aWxsIHJlbWFwIHRvCisjIHRoZSBub24tZXhpc3RlbnQgMDk1NiwgYW5kIHRoYXQgcmVtYXBzIHRvIDA5NDgsIG91ciBjaG9zZW4KKyMgRGV2YW5hZ2FyaSBlcXVpdmFsZW50LiAgRm9yIG91ciBwdXJwb3NlcywgdGhlIGxlZnQgaGFuZCBzaWRlIHNob3VsZAorIyBiZSB0YWtlbiB0byBtZWFuIGl0cyBlcXVpdmFsZW50IHBvaW50IGluIHRoZSBJbnRlckluZGljIHJhbmdlLiAgSW4KKyMgdGhpcyBleGFtcGxlLCB3aGF0IGl0IHJlYWxseSBzYXlzIGlzIEUwNTY+MDk0OCBpbiB0aGUKKyMgSW50ZXJJbmRpYy1EZXZhbmFnYXJpIHRyYW5zbGl0ZXJhdG9yLgorCitpZiAoJEVYQ0VQVElPTlNfRklMRSkgeworICAgIG9wZW4oRVhDRVBUSU9OU19GSUxFKSBvciBkaWU7CisgICAgd2hpbGUgKDxFWENFUFRJT05TX0ZJTEU+KSB7CisgICAgICAgIGlmIChtfF5ccypcIihbXlwiXSo/KVwifCkgeworICAgICAgICAgICAgbXkgJGxpbmUgPSAkXzsKKyAgICAgICAgICAgICRfID0gJDE7CisgICAgICAgICAgICBpZiAoL14oLiopPiguKik7JC8pIHsKKyAgICAgICAgICAgICAgICBteSAoJHJhd0Zyb20sICRyYXdUbykgPSAoJDEsICQyKTsKKyAgICAgICAgICAgICAgICBteSBAZnJvbSA9IHBhcnNlVW5pY29kZUVzY2FwZSgkcmF3RnJvbSk7CisgICAgICAgICAgICAgICAgbXkgQHRvID0gcGFyc2VVbmljb2RlRXNjYXBlKCRyYXdUbyk7CisgICAgICAgICAgICAgICAgbXkgJGZyb20gPSBoZXhBcnJheShAZnJvbSk7CisgICAgICAgICAgICAgICAgIyBTb21lIGVudHJpZXMgbG9vayBsaWtlIHRoaXM6CisgICAgICAgICAgICAgICAgIyB8Ilx1MDk1NT5cdTA5NTU7IgorICAgICAgICAgICAgICAgICMgdGhlc2UgZG8gbm90aGluZzsgaWdub3JlIHRoZW0uCisgICAgICAgICAgICAgICAgaWYgKGludEFycmF5c0VxdWFsKFxAZnJvbSwgXEB0bykpIHsKKyAgICAgICAgICAgICAgICAgICAgI3ByaW50IFNUREVSUiAiSWdub3JpbmcgTk9PUCByZW1hcCBvZiAkZnJvbVxuIjsKKyAgICAgICAgICAgICAgICB9IGVsc2lmIChleGlzdHMgJEVYQ0VQVElPTlN7JGZyb219KSB7CisgICAgICAgICAgICAgICAgICAgIHByaW50IFNUREVSUiAiRVJST1IgaW4gJEVYQ0VQVElPTlNfRklMRSAtIER1cGxpY2F0ZSByZW1hcCBlbnRyaWVzIGZvciAkZnJvbVxuIjsKKyAgICAgICAgICAgICAgICB9IGVsc2lmIChzY2FsYXIgQGZyb20gPiAxKSB7CisgICAgICAgICAgICAgICAgICAgIHByaW50IFNUREVSUiAiRVJST1IgaW4gJEVYQ0VQVElPTlNfRklMRSAtIElnbm9yaW5nIG11bHRpY2hhciByZW1hcDogIiwgaGV4QXJyYXkoQGZyb20pLCAiLT4iLCBoZXhBcnJheShAdG8pLCAiXG4iOyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgIyBDaGVjayB0aGlzIGZvciB2YWxpZGl0eS4gIEZ1bGwgY29kZSBvbiB0aGUgbGVmdAorICAgICAgICAgICAgICAgICAgICAjIHNob3VsZCBOT1QgZXhpc3QuICBGdWxsIGNvZGUgc2VxIG9uIHRoZSByaWdodCBzaG91bGQuCisgICAgICAgICAgICAgICAgICAgIGlmIChleGlzdHMgJEZVTExDT0RFX1RPX05BTUV7JGZyb21bMF19KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCBTVERFUlIgIkVSUk9SIGluICRFWENFUFRJT05TX0ZJTEUgLSBJbnZhbGlkIHJlbWFwOyBsZWZ0IHNpZGUgZGVmaW5lZDogIiwgaGV4QXJyYXkoQGZyb20pLCAiLT4iLCBoZXhBcnJheShAdG8pLCAiXG4iOworICAgICAgICAgICAgICAgICAgICB9IGVsc2lmIChncmVwKCEgZXhpc3RzICRGVUxMQ09ERV9UT19OQU1FeyRffSwgQHRvKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgU1RERVJSICJFUlJPUiBpbiAkRVhDRVBUSU9OU19GSUxFIC0gSW52YWxpZCByZW1hcDsgcmlnaHQgc2lkZSB1bmRlZmluZWQ6ICIsIGhleEFycmF5KEBmcm9tKSwgIi0+IiwgaGV4QXJyYXkoQHRvKSwgIlxuIjsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICRFWENFUFRJT05TeyRmcm9tWzBdfSA9IFxAdG87CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeyBkaWUgIkVSUk9SIGluICRFWENFUFRJT05TX0ZJTEUgLSBDYW4ndCBwYXJzZSBcIiRfXCIgaW4gbGluZSAkbGluZSI7IH0KKyAgICAgICAgfQorICAgIH0KKyAgICBjbG9zZShFWENFUFRJT05TX0ZJTEUpOworICAgIHByaW50IFNUREVSUiAiJEVYQ0VQVElPTlNfRklMRTogTG9hZGVkICIsIHNjYWxhciBrZXlzICVFWENFUFRJT05TLCAiIHJlbWFwcGluZ3NcbiI7Cit9CisKK2lmICgkRE9fREVDT01QX1JFTUFQKSB7CisgICAgIyBSZWFkIHRoZSBOYW1lc0xpc3QudHh0IGZpbGUuICBUaGlzIGNvbnRhaW5zIGRlY29tcG9zaXRpb24gZGF0YS4KKyAgICAjIEdhdGhlciB0aGVzZSBpbnRvICVERUNPTVAsIHdoaWNoIG1hcHMgYSBuYW1lIHRvIG4xLm4yLi4uLCB3aGVyZSBuMQorICAgICMgZXRjLiBhcmUgZGVjb21wb3NlZCBuYW1lcy4gIEUuZy4gJERFQ09NUHsnTEVUVEVSIFJSQSd9IC0+ICdMRVRURVIKKyAgICAjIFJBLlNJR04gTlVLVEEnLiAgVGhlcmUgbWF5IGJlIGRpZmZlcmVudCBtYXBwaW5ncyBpbiBkaWZmZXJlbnQgc2NyaXB0CisgICAgIyBibG9ja3MgKExFVFRFUiBSUkEgaXMgbWFwcGVkIGRpZmZlcmVudGx5IGluIERldmFuYWdhcmkgYW5kIEJlbmdhbGkpLAorICAgICMgaW4gd2hpY2ggY2FzZSB0aGUgbmFtZSBnb2VzIGludG8gJURFQ09NUF9NSVNNQVRDSCwgYW5kIGlzIHJlbW92ZWQKKyAgICAjIGZyb20gJURFQ09NUC4KKyAgICAkTkFNRVMgPSAiTmFtZXNMaXN0LnR4dCI7CisgICAgb3BlbihOQU1FUyk7CisgICAgd2hpbGUgKDxOQU1FUz4pIHsKKyAgICAgICAgIyBTa2lwIHRvIHN0YXJ0IG9mIERFVkFOQUdBUkkgYmxvY2sKKyAgICAgICAgbGFzdCBpZiAoL15cQFxAXHMrMDkwMC8pOworICAgIH0KKyAgICB3aGlsZSAoPE5BTUVTPikgeworICAgICAgICAjIENvbnRpbnVlIHVudGlsIHN0YXJ0IG9mIFNJTkhBTEEgYmxvY2sKKyAgICAgICAgbGFzdCBpZiAoL15cQFxAXHMrMEQ4MC8pOworICAgICAgICBpZiAoL14oWzAtOUEtWl17NH0pL2kpIHsKKyAgICAgICAgICAgICRjb2RlID0gJDE7CisgICAgICAgIH0gZWxzaWYgKC9eXHMrOlxzKiguKykvKSB7CisgICAgICAgICAgICAjIFdlJ3ZlIGZvdW5kIGEgbWFwcGluZyBvZiB0aGUgZm9ybToKKyAgICAgICAgICAgICMgMDkyOSAgICBERVZBTkFHQVJJIExFVFRFUiBOTk5BCisgICAgICAgICAgICAjICAgICAqIGZvciB0cmFuc2NyaWJpbmcgRHJhdmlkaWFuIGFsdmVvbGFyIG4KKyAgICAgICAgICAgICMgICAgIDogMDkyOCAwOTNDCisgICAgICAgICAgICBteSAkZnJvbSA9ICRGVUxMQ09ERV9UT19OQU1Fe2hleCgkY29kZSl9OworICAgICAgICAgICAgbXkgQHRvID0gbWFwKCRGVUxMQ09ERV9UT19OQU1Fe2hleCgkXyl9LCBzcGxpdCgvXHMrLywgJDEpKTsKKyAgICAgICAgICAgIGlmIChleGlzdHMgJERFQ09NUHskZnJvbX0pIHsKKyAgICAgICAgICAgICAgICBteSAkYXJlZiA9ICRERUNPTVB7JGZyb219OworICAgICAgICAgICAgICAgIGlmIChqb2luKCIuIiwgQCRhcmVmKSBuZSBqb2luKCIuIiwgQHRvKSkgeworICAgICAgICAgICAgICAgICAgICBwcmludCBTVERFUlIgIkVSUk9SOiBEZWNvbXAgbWlzbWF0Y2ggZm9yICRmcm9tXG4iOworICAgICAgICAgICAgICAgICAgICBwcmludCBTVERFUlIgIiAgICAgOiAkZnJvbSA9ICIsIGpvaW4oIi4iLCBAJGFyZWYpLCAiXG4iOworICAgICAgICAgICAgICAgICAgICBwcmludCBTVERFUlIgIiAgICAgOiAkZnJvbSA9ICIsIGpvaW4oIi4iLCBAdG8pLCAiXG4iOworICAgICAgICAgICAgICAgICAgICAkREVDT01QX01JU01BVENIeyRmcm9tfSA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkREVDT01QeyRmcm9tfSA9IFxAdG87CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgY2xvc2UoTkFNRVMpOworICAgICMgUmVtb3ZlIG1pc21hdGNoZXMKKyAgICBmb3JlYWNoIChrZXlzICVERUNPTVBfTUlTTUFUQ0gpIHsKKyAgICAgICAgZGVsZXRlICRERUNPTVB7JF99OworICAgIH0KKyAgICBpZiAoJERVTVApIHsKKyAgICAgICAgZm9yZWFjaCAoa2V5cyAlREVDT01QKSB7CisgICAgICAgICAgICBwcmludCAiJF8gPSAiLCBqb2luKCIgKyAiLCBAeyRERUNPTVB7JF99fSksICJcbiI7CisgICAgICAgIH0KKyAgICB9Cit9CisKKyMgQ291bnQgdGhlIHRvdGFsIG51bWJlciBvZiBzY3JpcHRzCisKKyRTQ1JJUFRfQ09VTlQgPSBzY2FsYXIga2V5cyAlU0NSSVBUX1RPX0JBU0U7CisjcHJpbnQgam9pbigiXG4iLCBzb3J0IGtleXMgJVNDUklQVF9UT19CQVNFKSwgIlxuIjsKKworIyBEdW1wIG91dCB0aGUgJU5BTUVfQ09ERV9UT19TQ1JJUFRTIG1hcC4KKworaWYgKCREVU1QKSB7CisgICAgcHJpbnQgIlxuQlkgTkFNRTpcbiI7CisgICAgZm9yZWFjaCBteSAkcGFzcyAoKDEsIDIpKSB7CisgICAgICAgIHByaW50ICJcbkJZIE5BTUUgLSBTSU5HTEVUT05TOlxuIiBpZiAoJHBhc3MgZXEgMik7CisgICAgICAgIGZvcmVhY2ggbXkgJG5hbWUgKHNvcnQga2V5cyAlTkFNRV9DT0RFX1RPX1NDUklQVFMpIHsKKyAgICAgICAgICAgIGlmICgkcGFzcyBlcSAxKSB7CisgICAgICAgICAgICAgICAgbmV4dCBpZiAoMSA+PSAkTkFNRV9DT0RFX1RPX1NDUklQVFN7JG5hbWV9e2NvdW50fSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG5leHQgaWYgKDEgPCAkTkFNRV9DT0RFX1RPX1NDUklQVFN7JG5hbWV9e2NvdW50fSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmludCAiJG5hbWU6IjsKKyAgICAgICAgICAgIG15ICRocmVmID0gJE5BTUVfQ09ERV9UT19TQ1JJUFRTeyRuYW1lfTsKKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJGNvZGUgKHNvcnQgeyRhIDw9PiAkYn0ga2V5cyAlJGhyZWYpIHsKKyAgICAgICAgICAgICAgICBuZXh0IGlmICgkY29kZSBlcSAnY291bnQnKTsKKyAgICAgICAgICAgICAgICBteSAkYXJlZiA9ICRocmVmLT57JGNvZGV9OworICAgICAgICAgICAgICAgIHByaW50ICIgIiwgaGV4MigkY29kZSksICIgKCIsIGZvcm1hdFNjcmlwdExpc3QoJGFyZWYpLCAiKSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcmludCAiXG4iOworICAgICAgICB9CisgICAgfQorfQorCisjIENyZWF0ZSBzb21lIHRyYW5zbGl0ZXJhdG9ycywgYmFzZWQgb24gdGhlIHNjcmlwdHMgYW5kIHRoZSAlTkFNRV9DT0RFX1RPX1NDUklQVFMKKyMgbWFwLiAgT25seSB1c2UgJU5BTUVfQ09ERV9UT19TQ1JJUFRTIGVudHJpZXMgd2l0aCBhIGNvdW50IG9mIDIgb3IgbW9yZSwgdGhhdCBpcywKKyMgbmFtZXMgdGhhdCBvY2N1ciBpbiB0d28gb3IgbW9yZSBzY3JpcHRzLiAgRm9yIHRob3NlIHNjcmlwdHMgd2hlcmUKKyMgdGhlIG5hbWVzIG9jY3VyLCBtYXAgYm90aCB1cCB0byB0aGUgSW50ZXJJbmRpYyByYW5nZSwgYW5kIGRvd24gdG8KKyMgdGhlIHRhcmdldCBzY3JpcHQuCisKKyRJTlRFUklORElDID0gMHhFMDAwOworJElOVEVSSU5ESUNfRVhUUkEgPSAweEUwODA7CiskSU5URVJJTkRJQ19FWFRSQV9ORVhUID0gJElOVEVSSU5ESUNfRVhUUkE7CisKKyMgRm9yIGVhY2ggc2NyaXB0LCBjcmVhdGUgYSBoYXNoLiAgVGhlIGhhc2ggaGFzIGEga2V5IGZvciBlYWNoCisjIGNvZGUgcG9pbnQsIGVpdGhlciB3aXRoaW4gaXRzIGJsb2NrLCBvciBpbiB0aGUgSW50ZXJJbmRpYyBibG9jay4KKyMgdGhlIHZhbHVlIG9mIHRoZSBrZXkgaXMgdGhlIG1hcHBpbmcuCisKKyMgVGhlIHNjcmlwdCBoYXNoZXMgYXJlIG5hbWVkICVERVZBTkFHQVJJLCBldGMuLCBhbmQgcmVmZXJlbmNlZAorIyB3aXRoIHN5bWJvbGljIHJlZnMuCisKK0BSRU1BUCA9ICgncy9cYlNIT1JUXHMrLy9pJywKKyAgICAgICAgICAncy9cYkNBTkRSQVxzKy8vaScsCisgICAgICAgICAgJ3MvXGJRQSQvS0EvaScsCisgICAgICAgICAgJ3MvXGJLSEhBJC9LSEEvaScsCisgICAgICAgICAgJ3MvXGJHSEhBJC9HQS9pJywKKyAgICAgICAgICAncy9cYlpBJC9KQS9pJywKKyAgICAgICAgICAncy9cYkZBJC9QSEEvaScsCisgICAgICAgICAgJ3MvXGJWQSQvQkEvaScsCisgICAgICAgICAgJ3MvXGJOTk5BJC9OQS9pJywKKyAgICAgICAgICAncy9cYlJSQSQvUkEvaScsCisgICAgICAgICAgJ3MvXGJMTExBJC9MTEEvaScsCisgICAgICAgICAgJ3MvXGJMTExBJC9MQS9pJywKKyAgICAgICAgICAncy9cYkxMQSQvTEEvaScsCisgICAgICAgICAgJ3MvXkEoLikgTEVOR1RIIE1BUkskL1ZPV0VMIFNJR04gQSQxL2knLAorICAgICAgICAgICdzL0NBTkRSQUJJTkRVL0JJTkRJL2knLAorICAgICAgICAgICdzL0JJTkRJL0NBTkRSQUJJTkRVL2knLAorICAgICAgICAgICk7CisKKyMgRG8gdGhpcyBzbyB3ZSBzZWUgemVybyBjb3VudHM6Citmb3JlYWNoIG15ICRyZW1hcCAoQFJFTUFQKSB7ICRSRU1BUHskcmVtYXB9ID0gMDsgfQorCisjIFRoaXMgbG9vcCBpdGVyYXRlcyBvdmVyIHRoZSBuYW1lcyBpbiB0aGUgTkFNRV9DT0RFX1RPX1NDUklQVFMgaGFzaC4KKyMgVGhlc2UgbmFtZXMgYXJlIHRoaW5ncyBsaWtlICJMRVRURVIgTk5OQSIuICBGb3IgZWFjaCBuYW1lLCBpdCB0aGVuCisjIGNyZWF0ZXMgc2NyaXB0IG1hcHBpbmdzIHVwIHRvIHRoZSBJbnRlckluZGljIGFyZWEsIGFuZCBiYWNrIGRvd24KKyMgdG8gdGhlIHNjcmlwdCBhcmVhcy4gIElmIGEgbmFtZSBtYXBzIHRvIG1vcmUgdGhhbiBvbmUgb2Zmc2V0LAorIyB0aGVuIGl0IHVzZXMgdGhlIEludGVySW5kaWMgZXh0cmEgcmFuZ2UuICBFaXRoZXIgd2F5LCBpdCBwaWNrcworIyBhIHNpbmdsZSBJbnRlckluZGljIHBvaW50LCBlaXRoZXIgYW4gb2Zmc2V0IHBvaW50IG9yIHNvbWV0aGluZyBpbgorIyB0aGUgZXh0cmEgcmFuZ2UsIGFuZCBtYXBzIHVwIGFuZCBkb3duIGZyb20gdGhhdCBwb2ludC4KK2ZvcmVhY2ggbXkgJG5hbWUgKHNvcnQga2V5cyAlTkFNRV9DT0RFX1RPX1NDUklQVFMpIHsKKyAgICBuZXh0IGlmICgxID49ICROQU1FX0NPREVfVE9fU0NSSVBUU3skbmFtZX17Y291bnR9KTsKKyAgICBteSAkaHJlZiA9ICROQU1FX0NPREVfVE9fU0NSSVBUU3skbmFtZX07CisgICAgIyBDb3VudCB0aGUgbnVtYmVyIG9mIGRpZmZlcmVudCBjb2RlcyBhc3NpZ25lZCB0byB0aGlzIG5hbWUuCisgICAgIyBVc3VhbGx5IDEsIGJ1dCAyIGZvciBhIGhhbmRmdWwgb2YgbmFtZXMuCisgICAgbXkgJGNvZGVDb3VudCA9IChrZXlzICV7JE5BTUVfQ09ERV9UT19TQ1JJUFRTeyRuYW1lfX0pIC0gMTsgIyBsZXNzIDE6IHtjb3VudH0KKyAgICAjIElmICRjb2RlQ291bnQgaXMgMSwgdGhlbiBtYXAgZGlyZWN0bHkgdXAgdG8gdGhlICRJTlRFUklORElDCisgICAgIyBiYXNlLiAgSWYgJGNvZGVDb3VudCBpcyAyLCB0aGVuIG1hcCBpbnRvIHVudXNlZCBzcG90cyBzdGFydGluZworICAgICMgYXQgJElOVEVSSU5ESUNfRVhUUkEuCisgICAgbXkgJGludGVySW5kaWNDb2RlOworICAgIGlmICgkY29kZUNvdW50ID4gMSkgeworICAgICAgICAjIE1hcCBpbnRvIHRoZSBJbnRlckluZGljIGV4dHJhIHJhbmdlCisgICAgICAgICRpbnRlckluZGljQ29kZSA9ICRJTlRFUklORElDX0VYVFJBX05FWFQrKzsKKyAgICB9CisgICAgbXkgJXNlZW47CisgICAgZm9yZWFjaCBteSAkY29kZSAoc29ydCB7JGEgbmUgJ2NvdW50JyAmJiAkYiBuZSAnY291bnQnICYmICRhIDw9PiAkYn0ga2V5cyAlJGhyZWYpIHsKKyAgICAgICAgbmV4dCBpZiAoJGNvZGUgZXEgJ2NvdW50Jyk7CisgICAgICAgIG15ICRhcmVmID0gJGhyZWYtPnskY29kZX07ICMgUmVmIHRvIGFycmF5IG9mIHNjcmlwdHMKKyAgICAgICAgaWYgKCRjb2RlQ291bnQgPT0gMSkgeworICAgICAgICAgICAgIyBNYXAgZGlyZWN0bHkKKyAgICAgICAgICAgICRpbnRlckluZGljQ29kZSA9ICRJTlRFUklORElDICsgJGNvZGU7CisgICAgICAgIH0KKyAgICAgICAgIyBLZWVwIHRyYWNrIG9mIHRoZSBuYW1lcyBvZiB0aGUgZXh0cmEgSW50ZXJJbmRpYyBwb2ludHMKKyAgICAgICAgJElOVEVSSU5ESUNfTkFNRV9UT19GVUxMQ09ERXskbmFtZX0gPSAkaW50ZXJJbmRpY0NvZGU7CisKKyAgICAgICAgZm9yZWFjaCBteSAkc2NyIChAJGFyZWYpIHsKKyAgICAgICAgICAgICRzZWVueyRzY3J9ID0gMTsKKyAgICAgICAgICAgIG15ICRmdWxsQ29kZSA9ICRTQ1JJUFRfVE9fQkFTRXskc2NyfSArICRjb2RlOworICAgICAgICAgICAgJCB7JHNjcn17JGZ1bGxDb2RlfSA9IGhleDQoJGludGVySW5kaWNDb2RlKSAuICI7IC8vICRuYW1lIjsKKyAgICAgICAgICAgICQgeyRzY3J9eyRpbnRlckluZGljQ29kZX0gPSBoZXg0KCRmdWxsQ29kZSkgLiAiOyAvLyAkbmFtZSI7CisgICAgICAgIH0KKyAgICB9CisgICAgIyBOb3cgaGFuZGxlIEludGVySW5kaWMtPlNjcmlwdCB1bm1hcHBlZCBwb2ludHMuICBGb3IgZWFjaCBuYW1lLAorICAgICMgc29tZSBvZiB0aGUgc2NyaXB0cyB3aWxsIGJlIGxlZnQgb3V0IC0tIHdpbGwgaGF2ZSBubyBtYXBwaW5ncworICAgICMgdG8gdGhhdCBuYW1lLiAgRm9yIHRoZXNlIHNjcmlwdHMsIHdlIGNhbiBlaXRoZXIgbGVhdmUgdGhlbQorICAgICMgdW5tYXBwZWQgKHNvIHRoZSBJbnRlckluZGljLT5Mb2NhbCBtYXBwaW5nIGlzIGVtcHR5KSwgb3IKKyAgICAjIHRyeSB0byByZW1hcC4KKyB1bm1hcHBlZFNjcmlwdDoKKyAgICBmb3JlYWNoIG15ICRzY3IgKGtleXMgJVNDUklQVF9UT19CQVNFKSB7CisgICAgICAgIG5leHQgaWYgKCRzZWVueyRzY3J9KTsKKworICAgICAgICBpZiAoJERPX0hFVVJJU1RJQ19SRU1BUCkgeworICAgICAgICAgICAgIyBUcnkgdG8gcmVtYXAgdGhyb3VnaCB0aGUga25vd24gZXF1aXZhbGVuY2VzIGluIG91cgorICAgICAgICAgICAgIyByZW1hcHBpbmcgdGFibGUKKyAgICAgICAgICAgIGZvcmVhY2ggbXkgJHJlbWFwUkUgKEBSRU1BUCkgeworICAgICAgICAgICAgICAgIGxvY2FsICRfID0gJG5hbWU7CisgICAgICAgICAgICAgICAgaWYgKGV2YWwoJHJlbWFwUkUpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChleGlzdHMgJFNDUklQVF9OQU1FX1RPX0NPREV7JHNjcn17JF99KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkIHskc2NyfXskaW50ZXJJbmRpY0NvZGV9ID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZXg0KCRTQ1JJUFRfVE9fQkFTRXskc2NyfSArICRTQ1JJUFRfTkFNRV9UT19DT0RFeyRzY3J9eyRffSkgLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOyAvLyBSRU1BUDogJG5hbWUgLT4gJF8iOworICAgICAgICAgICAgICAgICAgICAgICAgKyskUkVNQVB7JHJlbWFwUkV9OworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCB1bm1hcHBlZFNjcmlwdDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgICMgVHJ5IHRvIHJlbWFwIHRocm91Z2ggdGhlIGZpbGUuICBUaGlzIGNvbnRhaW5zIHJlbWFwcGluZ3Mgb2YKKyAgICAgICAgIyB0aGUgZm9ybSAwOTkxLT4wOTkzLiAgVGhhdCBpcywgaXQgY29udGFpbnMgbG9jYWwgcmVtYXBwaW5ncworICAgICAgICAjIHRoYXQgd2UgY2FuIHN1YnN0aXR1dGUgYW5kIHRyeSBhZ2FpbiB3aXRoLgorICAgICAgICAjfEdVUk1VS0hJLUludGVySW5kaWMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICN8Ly8gMEEwMj47IC8vIFVOTUFQUEVEIElOVEVSTkFMOiBTSUdOIEJJTkRJCisgICAgICAgICN8SW50ZXJJbmRpYy1HVVJNVUtISSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgI3wvLyBFMDAxPjsgLy8gVU5NQVBQRUQgRVhURVJOQUw6IFNJR04gQ0FORFJBQklORFUKKyAgICAgICAgI3wiXHUwQTAxPlx1MEEwMjsiCisgICAgICAgICMgSW4gdGhpcyBleGFtcGxlLCB0aGUgcmVtYXBwaW5nIHRlbGxzIHVzIHRoYXQgdGhlIG5vbi1leGlzdGVudAorICAgICAgICAjIGNoYXJhY3RlciBBMDEgc2hvdWxkIGJlIGNvbnNpZGVyZWQgZXF1aXZhbGVudCB0byB0aGUgcmVhbAorICAgICAgICAjIGNoYXJhY3RlciBBMDIuCisgICAgICAgICMgV2UgaW1wbGVtZW50IHRoaXMgYnkgYWRkaW5nIHR3byBtYXBwaW5nczsgb25lIGZyb20KKyAgICAgICAgIyB0aGUgSW50ZXJJbmRpYyBlcXVpdmFsZW50IG9mIEEwMSwgdGhhdCBpcywgRTAwMSwgdG8gQTAyLAorICAgICAgICAjIGFuZCBvbmUgZnJvbSBBMDIsIHdoaWNoIG90aGVyd2lzZSBoYXMgbm8gbWFwcGluZywgdG8gRTAwMS4KKyAgICAgICAgaWYgKCRFWENFUFRJT05TX0ZJTEUgJiYgJGludGVySW5kaWNDb2RlIDwgJElOVEVSSU5ESUNfRVhUUkEpIHsKKyAgICAgICAgICAgICMgVHJ5IHRvIG1hcCB0aGlzIEludGVySW5kaWMgY2hhcmFjdGVyIGJhY2sgdG8gYSB0aGUgc3BvdAorICAgICAgICAgICAgIyBpdCB3b3VsZCBvY2N1cHkgaW4gdGhpcyBzY3JpcHQgaWYgaXQgaGFkIGEgbWFwcGluZy4KKyAgICAgICAgICAgIG15ICRjb2RlID0gJGludGVySW5kaWNDb2RlICYgMHg3RjsKKyAgICAgICAgICAgIG15ICRwc2V1ZG9GdWxsQ29kZSA9ICRTQ1JJUFRfVE9fQkFTRXskc2NyfSArICRjb2RlOworICAgICAgICAgICAgaWYgKGV4aXN0cyAkRVhDRVBUSU9OU3skcHNldWRvRnVsbENvZGV9KSB7CisgICAgICAgICAgICAgICAgbXkgJGZ1bGxDb2RlQXJyYXkgPSAkRVhDRVBUSU9OU3skcHNldWRvRnVsbENvZGV9OworICAgICAgICAgICAgICAgIG15ICRjb21tZW50OworICAgICAgICAgICAgICAgIGZvcmVhY2ggbXkgJGMgKEAkZnVsbENvZGVBcnJheSkgeworICAgICAgICAgICAgICAgICAgICAkY29tbWVudCAuPSAiLiIgaWYgKCRjb21tZW50KTsKKyAgICAgICAgICAgICAgICAgICAgJGNvbW1lbnQgLj0gJEZVTExDT0RFX1RPX05BTUV7JGN9OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAkY29tbWVudCA9ICI7IC8vIFJFTUFQICgkRVhDRVBUSU9OU19GSUxFKTogIiAuCisgICAgICAgICAgICAgICAgICAgIGhleDQoJHBzZXVkb0Z1bGxDb2RlKSAuICI+IiAuIGhleEFycmF5KEAkZnVsbENvZGVBcnJheSkgLiAiID0gIiAuCisgICAgICAgICAgICAgICAgICAgICRDT0RFX1RPX05BTUV7JGNvZGV9IC4gIj4iIC4gJGNvbW1lbnQ7CisgICAgICAgICAgICAgICAgJCB7JHNjcn17JGludGVySW5kaWNDb2RlfSA9IGhleEFycmF5KEAkZnVsbENvZGVBcnJheSkgLiAkY29tbWVudDsKKyAgICAgICAgICAgICAgICBpZiAoc2NhbGFyIEAkZnVsbENvZGVBcnJheSA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChleGlzdHMgJCB7JHNjcn17JGZ1bGxDb2RlQXJyYXktPlswXX0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICMgVGhlcmUncyBhbHJlYWR5IGEgcHJvcGVyIG1hcHBpbmc7IG5vIG5lZWQgdG8gZmlsbAorICAgICAgICAgICAgICAgICAgICAgICAgIyBpbiByZXZlcnNlCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkIHskc2NyfXskZnVsbENvZGVBcnJheS0+WzBdfSA9IGhleDQoJGludGVySW5kaWNDb2RlKSAuICRjb21tZW50OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG5leHQgdW5tYXBwZWRTY3JpcHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAkU0NSSVBUX0ZVTExDT0RFX1RPX0lTX1VOTUFQUEVEeyRzY3J9eyRpbnRlckluZGljQ29kZX0gPSAxOworICAgICAgICBsb2NhbCAkXyA9ICI7IC8vIFVOTUFQUEVEIEludGVySW5kaWMtJHNjcjogJG5hbWUiOworICAgICAgICBpZiAoZXhpc3RzICRTQ1JJUFRfQ09ERV9UT19OQU1FeyRzY3J9eyRpbnRlckluZGljQ29kZSAmIDB4N0Z9KSB7CisgICAgICAgICAgICBteSAkZnVsbENvZGUgPSAkU0NSSVBUX1RPX0JBU0V7JHNjcn0gKyAoJGludGVySW5kaWNDb2RlICYgMHg3Rik7CisgICAgICAgICAgICAkXyAuPSAiICgiIC4gaGV4NCgkZnVsbENvZGUpIC4gIiA9ICIgLiAkRlVMTENPREVfVE9fTkFNRXskZnVsbENvZGV9IC4gIikiOworICAgICAgICB9CisgICAgICAgICQgeyRzY3J9eyRpbnRlckluZGljQ29kZX0gPSAkXzsKKyAgICB9Cit9CisKKyMgQWRkIGluIHVubWFwcGVkIGVudHJpZXMgZm9yIGVhY2ggc2NyaXB0Citmb3JlYWNoIG15ICRzY3IgKGtleXMgJVNDUklQVF9UT19CQVNFKSB7CisgICAgbXkgJGJhc2UgPSAkU0NSSVBUX1RPX0JBU0V7JHNjcn07CisgdW5tYXBwZWRJbnQ6CisgICAgZm9yZWFjaCBteSAkY29kZSAoa2V5cyAleyRTQ1JJUFRfQ09ERV9UT19OQU1FeyRzY3J9fSkgeworICAgICAgICBteSAkZnVsbENvZGUgPSAkY29kZSArICRiYXNlOworICAgICAgICBuZXh0IGlmIChleGlzdHMgJCB7JHNjcn17JGZ1bGxDb2RlfSk7CisgICAgICAgIG15ICRuYW1lID0gJFNDUklQVF9DT0RFX1RPX05BTUV7JHNjcn17JGNvZGV9OworCisgICAgICAgIGlmICgkRE9fSEVVUklTVElDX1JFTUFQKSB7CisgICAgICAgICAgICBmb3JlYWNoIG15ICRyZW1hcFJFIChAUkVNQVApIHsKKyAgICAgICAgICAgICAgICBsb2NhbCAkXyA9ICRuYW1lOworICAgICAgICAgICAgICAgIGlmIChldmFsKCRyZW1hcFJFKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RzICRJTlRFUklORElDX05BTUVfVE9fRlVMTENPREV7JF99KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkIHskc2NyfXskZnVsbENvZGV9ID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZXg0KCRJTlRFUklORElDX05BTUVfVE9fRlVMTENPREV7JF99KSAuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI7IC8vIFJFTUFQOiAkbmFtZSAtPiAkXyI7CisgICAgICAgICAgICAgICAgICAgICAgICArKyRSRU1BUHskcmVtYXBSRX07CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IHVubWFwcGVkSW50OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgIyBOb3cgdHJ5IHRoZSBkZWNvbXAgdGFibGUKKyAgICAgICAgaWYgKCRET19ERUNPTVBfUkVNQVAgJiYgZXhpc3RzICRERUNPTVB7JG5hbWV9KSB7CisgICAgICAgICAgICBteSAkeDsKKyAgICAgICAgICAgIG15ICRjbXQgPSAiOyAvLyBERUNPTVA6ICRuYW1lIC0+ICI7CisgICAgICAgICAgICBmb3JlYWNoIG15ICRuIChAeyRERUNPTVB7JG5hbWV9fSkgeworICAgICAgICAgICAgICAgIGlmIChleGlzdHMgJFNDUklQVF9OQU1FX1RPX0NPREV7JHNjcn17JG59KSB7CisgICAgICAgICAgICAgICAgICAgICR4IC49IGhleDQoJFNDUklQVF9UT19CQVNFeyRzY3J9ICsgJFNDUklQVF9OQU1FX1RPX0NPREV7JHNjcn17JG59KTsKKyAgICAgICAgICAgICAgICAgICAgJGNtdCAuPSAkbiAuICIgKyAiOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICRjbXQgPSAwOworICAgICAgICAgICAgICAgICAgICBsYXN0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgkY210KSB7CisgICAgICAgICAgICAgICAgJCB7JHNjcn17JGZ1bGxDb2RlfSA9ICR4IC4gJGNtdDsKKyAgICAgICAgICAgICAgICBuZXh0IHVubWFwcGVkSW50OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgJFNDUklQVF9GVUxMQ09ERV9UT19JU19VTk1BUFBFRHskc2NyfXskZnVsbENvZGV9ID0gMTsKKyAgICAgICAgJCB7JHNjcn17JGZ1bGxDb2RlfSA9ICI7IC8vIFVOTUFQUEVEICRzY3ItSW50ZXJJbmRpYzogJG5hbWUiOworICAgIH0KK30KKworIyBHVVIKKyMgRTAwQj47IC8vIFVOTUFQUEVEIEVYVEVSTkFMOiBMRVRURVIgVk9DQUxJQyBSICJcdTBBMEI+XHUwQTMwXHUwQTNGOyIKKyMgRTAwQz47IC8vIFVOTUFQUEVEIEVYVEVSTkFMOiBMRVRURVIgVk9DQUxJQyBMICJcdTBBMEM+XHUwQTA3OyIKKyMgRTAwRD47IC8vIFVOTUFQUEVEIEVYVEVSTkFMOiBMRVRURVIgQ0FORFJBIEUgIlx1MEEwRD5cdTBBMTA7IgorIyBFMDExPjsgLy8gVU5NQVBQRUQgRVhURVJOQUw6IExFVFRFUiBDQU5EUkEgTyAiXHUwQTExPlx1MEExNDsiCisjIEUwMzc+OyAvLyBVTk1BUFBFRCBFWFRFUk5BTDogTEVUVEVSIFNTQSAiXHUwQTM3Plx1MEEzNjsiCisjIEUwNDU+OyAvLyBVTk1BUFBFRCBFWFRFUk5BTDogVk9XRUwgU0lHTiBDQU5EUkEgRSAiXHUwQTQ1Plx1MEE0ODsiCisjIEUwNDk+OyAvLyBVTk1BUFBFRCBFWFRFUk5BTDogVk9XRUwgU0lHTiBDQU5EUkEgTyAiXHUwQTQ5Plx1MEE0QzsiCisjIEZpeCBRQSB0b28KKworIyBEdW1wIG91dCBzY3JpcHQgbWFwcworZm9yZWFjaCBteSAkc2NyIChzb3J0IGtleXMgJVNDUklQVF9UT19CQVNFKSB7CisgICAgIyMgbmV4dCB1bmxlc3MgKCRzY3IgZXEgJ1RFTFVHVScpOyAjIERlYnVnZ2luZworICAgIG15IEBydWxlczsKKyAgICBteSAkZmxhZyA9IDE7CisgICAgZm9yZWFjaCBteSAkZnVsbENvZGUgKHNvcnQgeyRhIDw9PiAkYn0ga2V5cyAleyRzY3J9KSB7CisgICAgICAgIGlmICgkZmxhZyAmJiAkZnVsbENvZGUgPj0gJElOVEVSSU5ESUMpIHsKKyAgICAgICAgICAgICMgV2UgaGF2ZSB0aGUgY29tcGxldGUgPHNjcj4tSW50ZXJJbmRpYyBydWxlczsgZHVtcAorICAgICAgICAgICAgIyB0aGVtIG91dC4KKyAgICAgICAgICAgIGdlbmVyYXRlUkJUKCRzY3IsICJJbnRlckluZGljIiwgXEBydWxlcywgJE9VVERJUik7CisgICAgICAgICAgICBAcnVsZXMgPSAoKTsKKyAgICAgICAgICAgICRmbGFnID0gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXhpc3RzICRTQ1JJUFRfRlVMTENPREVfVE9fSVNfVU5NQVBQRUR7JHNjcn17JGZ1bGxDb2RlfSkgeworICAgICAgICAgICAgcHVzaCBAcnVsZXMsICIvLyAiIC4gaGV4NCgkZnVsbENvZGUpIC4gIj4iIC4gJCB7JHNjcn17JGZ1bGxDb2RlfTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHB1c2ggQHJ1bGVzLCBoZXg0KCRmdWxsQ29kZSkgLiAiPiIgLiAkIHskc2NyfXskZnVsbENvZGV9OworICAgICAgICB9CisgICAgfQorICAgICMgTm93IGdlbmVyYXRlIHRoZSBJbnRlckluZGljLTxzY3I+IHJ1bGVzLgorICAgIGdlbmVyYXRlUkJUKCJJbnRlckluZGljIiwgJHNjciwgXEBydWxlcywgJE9VVERJUik7CisKKyMgICAgcHJpbnQgIiRzY3ItSW50ZXJJbmRpYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7CisjICAgIG15ICRmbGFnID0gMTsKKyMgICAgZm9yZWFjaCBteSAkZnVsbENvZGUgKHNvcnQgeyRhIDw9PiAkYn0ga2V5cyAleyRzY3J9KSB7CisjICAgICAgICBpZiAoJGZsYWcgJiYgJGZ1bGxDb2RlID49ICRJTlRFUklORElDKSB7CisjICAgICAgICAgICAgcHJpbnQgIkludGVySW5kaWMtJHNjciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7CisjICAgICAgICAgICAgJGZsYWcgPSAwOworIyAgICAgICAgfQorIyAgICAgICAgaWYgKGV4aXN0cyAkU0NSSVBUX0ZVTExDT0RFX1RPX0lTX1VOTUFQUEVEeyRzY3J9eyRmdWxsQ29kZX0pIHsKKyMgICAgICAgICAgICBwcmludCAiLy8gIiwgaGV4NCgkZnVsbENvZGUpLCAiPiIsICQgeyRzY3J9eyRmdWxsQ29kZX0sICJcbiI7CisjICAgICAgICB9IGVsc2UgeworIyAgICAgICAgICAgIHByaW50IGhleDQoJGZ1bGxDb2RlKSwgIj4iLCAkIHskc2NyfXskZnVsbENvZGV9LCAiXG4iOworIyAgICAgICAgfQorIyAgICB9Cit9CisKKyMgTGlzdCBzdWNjZXNzZnVsIHJlbWFwcGluZ3MKK2lmICgkRE9fSEVVUklTVElDX1JFTUFQKSB7CisgICAgZm9yZWFjaCBteSAkcmVtYXAgKHNvcnQga2V5cyAlUkVNQVApIHsKKyAgICAgICAgcHJpbnQgU1RERVJSICJSRU1BUCAiLCAkUkVNQVB7JHJlbWFwfSwgIiB4ICRyZW1hcFxuIjsKKyAgICB9Cit9CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFNVQlJPVVRJTkVTCisKKyMgUmV0dXJuIGEgbGlzdGluZyBvZiBhbiBhcnJheSBvZiBzY3JpcHRzCisjIFBhcmFtOiBhcnJheSByZWYKK3N1YiBmb3JtYXRTY3JpcHRMaXN0IHsKKyAgICBteSAkYXJlZiA9IHNoaWZ0OworICAgIGlmICgkU0NSSVBUX0NPVU5UID09IEAkYXJlZikgeworICAgICAgICByZXR1cm4gImFsbCI7CisgICAgfSBlbHNpZiAoKCRTQ1JJUFRfQ09VTlQgLSAzKSA8PSBAJGFyZWYpIHsKKyAgICAgICAgbXkgJHMgPSAiYWxsIGJ1dCI7CisgICAgICAgIG15ICV0ZW1wOworICAgICAgICBmb3JlYWNoIChAJGFyZWYpIHsgJHRlbXB7JF99ID0gMTsgfQorICAgICAgICBmb3JlYWNoIChzb3J0IGtleXMgJVNDUklQVF9UT19CQVNFKSB7CisgICAgICAgICAgICAkcyAuPSAiICRfIiB1bmxlc3MgZXhpc3RzICR0ZW1weyRffTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gJHM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGpvaW4oIiAiLCBAJGFyZWYpOworICAgIH0KK30KKworIyBGb3JtYXQgYXMgJTAyWCBoZXgKK3N1YiBoZXgyIHsKKyAgICBzcHJpbnRmKCIlMDJYIiwgJF9bMF0pOworfQorCisjIEZvcm1hdCBhcyAlMDRYIGhleAorc3ViIGhleDQgeworICAgIHNwcmludGYoIlxcdSUwNFgiLCAkX1swXSk7Cit9CisKKyMgRm9ybWF0IGFuIGFycmF5IGFzICUwNFggaGV4LCBkZWxpbWl0ZWQgYnkgIi4icworc3ViIGhleEFycmF5IHsKKyAgICBqb2luKCIiLCBtYXAgeyBoZXg0KCRfKTsgfSBAXyk7Cit9CisKKyMgUGFyc2UgYSBzdHJpbmcgb2YgdGhlIGZvcm0gIlx1MEQwMSIgdG8gYW4gYXJyYXkgb2YgaW50ZWdlcnMuCisjIE11c3QgT05MWSBjb250YWluIGVzY2FwZXMuCisjIFJldHVybiB0aGUgYXJyYXkuCitzdWIgcGFyc2VVbmljb2RlRXNjYXBlIHsKKyAgICBsb2NhbCAkXyA9IHNoaWZ0OworICAgIG15ICRvcmlnID0gJF87CisgICAgbXkgQHJlc3VsdDsKKyAgICB3aGlsZSAobGVuZ3RoKCRfKSkgeworICAgICAgICBpZiAoL15cXHUoWzAtOWEtZl17NH0pKC4qKS9pKSB7CisgICAgICAgICAgICBwdXNoIEByZXN1bHQsIGhleCgkMSk7CisgICAgICAgICAgICAkXyA9ICQyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGllICJDYW4ndCBwYXJzZSBVbmljb2RlIGVzY2FwZSAkb3JpZ1xuIjsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoMCA9PSBAcmVzdWx0KSB7CisgICAgICAgIGRpZSAiQ2FuJ3QgcGFyc2UgVW5pY29kZSBlc2NhcGUgJG9yaWdcbiI7ICAgICAgICAKKyAgICB9CisgICAgQHJlc3VsdDsKK30KKworIyBSZXR1cm4gMSBpZiB0aGUgdHdvIGFycmF5cyBvZiBpbnRzIGFyZSBlcXVhbC4KKyMgUGFyYW06IHJlZiB0byBhcnJheSBvZiBpbnRzCisjIFBhcmFtOiByZWYgdG8gYXJyYXkgb2YgaW50cworc3ViIGludEFycmF5c0VxdWFsIHsKKyAgICBteSAkYSA9IHNoaWZ0OworICAgIG15ICRiID0gc2hpZnQ7CisgICAgaWYgKHNjYWxhciBAJGEgPT0gc2NhbGFyIEAkYikgeworICAgICAgICBmb3IgKG15ICRpPTA7ICRpPEAkYTsgKyskaSkgeworICAgICAgICAgICAgaWYgKCRhLT5bJGldICE9ICRiLT5bJGldKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisjIEdpdmVuIGEgcnVsZSwgcG9zc2libHkgd2l0aCB0cmFpbGluZyAvLyBjb21tZW50LAorIyBxdW90ZSB0aGUgcnVsZSBwYXJ0IGFuZCBhZGQgYSB0cmFpbGluZyAiKyIgYWZ0ZXIKKyMgaXQuCitzdWIgcXVvdGVSdWxlIHsKKyAgICBteSAkY210OworICAgICRjbXQgPSAkMSBpZiAoc3woXHMqLy8uKil8fCk7ICMgaXNvbGF0ZSB0cmFpbGluZyAvLyBjb21tZW50CisgICAgcy9eKC4qOykvXCIkMVwiKy87CisgICAgcy8kLyRjbXQvOworICAgICRfOworfQorCisjIEdpdmVuIHRoZSBuYW1lIG9mIHRoZSBzb3VyY2Ugc2NyaXB0LCBuYW1lIG9mIHRoZSB0YXJnZXQgc2NyaXB0LAorIyBhbmQgYXJyYXkgb2YgcnVsZSBzdHJpbmdzLCByZXR1cm4gYSBzdHJpbmcgY29udGFpbmluZyB0aGUgc291cmNlCisjIGZvciBhIFJ1bGVCYXNlZFRyYW5zbGl0ZXJhdG9yIGZpbGUuCisjIFBhcmFtOiBzb3VyY2Ugc2NyaXB0IG5hbWUKKyMgUGFyYW06IHRhcmdldCBzY3JpcHQgbmFtZQorIyBQYXJhbTogcmVmIHRvIGFycmF5IG9mIHJ1bGVzLiAgVGhlc2UgcnVsZXMgYXJlIHVucXVvdGVkLCB3aXRob3V0CisjICBjb25jYXRlbmF0b3JzIGJldHdlZW4gdGhlbSwgYnV0IGRvIGhhdmUgdHJhaWxpbmcgJzsnIHNlcGFyYXRvcnMuCisjIFBhcmFtOiBuYW1lIG9mIG91dHB1dCBkaXJlY3RvcnkKK3N1YiBnZW5lcmF0ZVJCVCB7CisgICAgIyAkVE9PTCAtIG5hbWUgb2YgZ2VuZXJhdGluZyB0b29sCisgICAgIyAkREFURSAtIGRhdGUgb2YgZ2VuZXJhdGlvbgorICAgICMgJFNDUklQVEZST00gLSBuYW1lIG9mIHNvdXJjZSBzY3JpcHQKKyAgICAjICRTQ1JJUFRUTyAtIG5hbWUgb2YgdGFyZ2V0IHNjcmlwdAorICAgICMgJFJVTEVTIC0gcnVsZXMKKyAgICBteSAoJHNvdXJjZSwgJHRhcmdldCwgJHJ1bGVzLCAkb3V0ZGlyKSA9IEBfOworICAgIG15ICR0ZXh0OworICAgICRvdXRkaXIgPX4gc3xbL1xcXSR8fDsgIyBEZWxldGUgdHJhaWxpbmcgLyBvciBcCisgICAgbXkgJE9VVCA9ICIkb3V0ZGlyL1RyYW5zbGl0ZXJhdGlvblJ1bGVfJHtzb3VyY2V9XyR0YXJnZXQuamF2YSI7CisgICAgb3BlbihSQlRfVEVNUExBVEUpIG9yIGRpZTsKKyAgICBvcGVuKE9VVCwgIj4kT1VUIikgb3IgZGllOworICAgIHdoaWxlICg8UkJUX1RFTVBMQVRFPikgeworICAgICAgICB3aGlsZSAoL1wkKFtBLVphLXowLTldKykvKSB7CisgICAgICAgICAgICBteSAkdGFnID0gJDE7CisgICAgICAgICAgICBteSAkc3ViOworICAgICAgICAgICAgaWYgKCR0YWcgZXEgJ1RPT0wnKSB7CisgICAgICAgICAgICAgICAgJHN1YiA9ICRSQlRfR0VOX1RPT0w7CisgICAgICAgICAgICB9IGVsc2lmICgkdGFnIGVxICdEQVRFJykgeworICAgICAgICAgICAgICAgICRzdWIgPSBsb2NhbHRpbWU7CisgICAgICAgICAgICB9IGVsc2lmICgkdGFnIGVxICdTQ1JJUFRGUk9NJykgeworICAgICAgICAgICAgICAgICRzdWIgPSAkc291cmNlOworICAgICAgICAgICAgfSBlbHNpZiAoJHRhZyBlcSAnU0NSSVBUVE8nKSB7CisgICAgICAgICAgICAgICAgJHN1YiA9ICR0YXJnZXQ7CisgICAgICAgICAgICB9IGVsc2lmICgkdGFnIGVxICdSVUxFUycpIHsKKyAgICAgICAgICAgICAgICAjIEdldCBhbnkgd2hpdGVzcGFjZS1vbmx5IGluZGVudCBvZmYgdGhlIGZyb250IG9mIHRoaXMgdGFnCisgICAgICAgICAgICAgICAgbXkgJGluZGVudDsKKyAgICAgICAgICAgICAgICAkaW5kZW50ID0gJDEgaWYgKC9eKFxzKylcJCR0YWcvKTsKKworICAgICAgICAgICAgICAgICMgVGhlIHJ1bGVzIGluIHRoZSBhcnJheSBhcmUgbm90IHF1b3RlZC4gIFdlIG5lZWQgdG8gcXVvdGUKKyAgICAgICAgICAgICAgICAjIHRoZW0gYW5kIGFkZCAnKycgb3BlcmF0b3JzIGJldHdlZW4gdGhlbS4gIFdlIGRvIE5PVCBuZWVkCisgICAgICAgICAgICAgICAgIyB0byBhZGQgJzsnIHNlcGFyYXRvcnMuICBXZSBETyBuZWVkIHRvIHNlcGFyYXRlIHRyYWlsaW5nCisgICAgICAgICAgICAgICAgIyAvLyBjb21tZW50cyBhbmQgaGFuZGxlIHRoZW0uCisgICAgICAgICAgICAgICAgJHN1YiA9IGpvaW4oIlxuJGluZGVudCIsIG1hcCgmcXVvdGVSdWxlLCBAJHJ1bGVzKSkgLgorICAgICAgICAgICAgICAgICAgICAiXG4kaW5kZW50XCJcIiI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHByaW50IFNUREVSUiAiRVJST1IgaW4gJFJCVF9URU1QTEFURTogVW5rbm93biB0YWcgJHRhZ1xuIjsKKyAgICAgICAgICAgICAgICAkc3ViID0gIltFUlJPUjpVbmtub3duIHRhZyBcJCR0YWddIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHMvXCQkdGFnLyRzdWIvOworICAgICAgICB9CisgICAgICAgIHByaW50IE9VVDsKKyAgICB9CisgICAgY2xvc2UoT1VUKTsKKyAgICBjbG9zZShSQlRfVEVNUExBVEUpOworICAgIHByaW50IFNUREVSUiAiV3JpdHRlbjogJE9VVFxuIjsKK30KKworX19FTkRfXwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdG9vbHMvdHJhbnNsaXQvaW5kaWNFeGNlcHRpb25zLnR4dCBiL3NyYy9jb20vaWJtL3Rvb2xzL3RyYW5zbGl0L2luZGljRXhjZXB0aW9ucy50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uY2I5NjUyOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3Rvb2xzL3RyYW5zbGl0L2luZGljRXhjZXB0aW9ucy50eHQKQEAgLTAsMCArMSwzNzAgQEAKKy8qIFJlc2VydmVkIGluIGFsbCA5IHNjcmlwdHMgKi8KKworLyoKKyAgIFRoZXNlIGNvZGVwb2ludHMgYXJlIG1hcmtlZCBSRVNFUlZFRCBpbiBhbGwgOSBpbmRpYyBzY3JpcHRzLgorICAgVGhlcmUgc2hvdWxkIG5vdCBiZSBhbnkgdHJhbnNsaXRlcmF0aW9uIHdvcmsgb24gdGhlc2UgY29kZXBvaW50cywgCisgICBpZiB0aGV5IGFyZSBldmVyIGVuY291bnRlcmVkLiAgSWdub3JlIHRoZXNlIGNvZGVwb2ludHMuCisKKyAgIENvbW1vbiByZXNlcnZlZCBjb2RlcG9pbnRzIGluIEFMTCA5IHNjcmlwdHMgOiAob2Zmc2V0KQorICAgMDAsIDA0LCAKKyAgIDNBLCAzQiwgCisgICA0RSwgNEYsIAorICAgN0IsIDdDLCA3RCwgN0UsIDdGCisqLworCisvKiBTY3JpcHQtc3BlY2lmaWMgKi8KKy8qCisgICBUaGVzZSBjb2RlcG9pbnRzIGFyZSBzcGVjaWZpYyB0byB0aGVpciByZXNwZWN0aXZlIHNjcmlwdC4KKyAgIFRyYW5zbGl0ZXJhdGlvbiBvZiB0aGVzZSBjb2RlcG9pbnRzIGZyb20gb25lIHNjcmlwdCB0byBhbm90aGVyIGlzIG1lYW5pbmdsZXNzLgorCisgICBGb3IgZXhhbXBsZSwKKyAgICAgIFx1MEI3MCAoT3JpeWEpIGFuZCBcdTBCRjAgKFRhbWlsKSBhcmUgbm9uLXJlc2VydmVkIGNvZGVwb2ludHMgd2l0aGluIGVhY2ggc2NyaXB0LgorICAgICAgT24gdHJhbnNsaXRlcmF0aW5nIFx1MEI3MCBmcm9tIE9yaXlhIHRvIFRhbWlsLCB3ZSB3aWxsIGdldCBcdTBCRjAuCisgICAgICBCdXQgXHUwQjcwIGluIE9yaXlhIHJlcHJlc2VudHMgSVNTSEFSLCB3aGVyZWFzIFx1MEJGMCBpbiBUYW1pbCByZXByZXNlbnRzIE5VTUJFUiBURU4uCisKKyAgIFx1MDk3MCBEZXZhbmFnYXJpIGFiYnJldmlhdGlvbiBzaWduCisKKyAgIFx1MDlGMCBCZW5nYWxpIGxldHRlciBSQSB3aXRoIG1pZGRsZSBkaWFnb25hbCAoQXNzYW1lc2UpCisgICBcdTA5RjEgQmVuZ2FsaSBsZXR0ZXIgUkEgd2l0aCBsb3dlciBkaWFnb25hbCAKKyAgICAgICAgICAoPUJlbmdhbGkgbGV0dGVyIFZBIHdpdGggbG93ZXIgZGlhZ29uYWwsIEFzc2FtZXNlKQorICAgXHUwOUYyIEJlbmdhbGkgcnVwZWUgbWFyaworICAgXHUwOUYzIEJlbmdhbGkgcnVwZWUgc2lnbgorICAgXHUwOUY0IEJlbmdhbGkgY3VycmVuY3kgbnVtZXJhdG9yIG9uZQorICAgXHUwOUY1IEJlbmdhbGkgY3VycmVuY3kgbnVtZXJhdG9yIHR3bworICAgXHUwOUY2IEJlbmdhbGkgY3VycmVuY3kgbnVtZXJhdG9yIHRocmVlCisgICBcdTA5RjcgQmVuZ2FsaSBjdXJyZW5jeSBudW1lcmF0b3IgZm91cgorICAgXHUwOUY4IEJlbmdhbGkgY3VycmVuY3kgbnVtZXJhdG9yIG9uZSBsZXNzIHRoYW4gdGhlIGRlbm9taW5hdG9yCisgICBcdTA5RjkgQmVuZ2FsaSBjdXJyZW5jeSBkZW5vbWluYXRvciBzaXh0ZWVuCisgICBcdTA5RkEgQmVuZ2FsaSBpc3NoYXIKKworICAgXHUwQTcwIEd1cm11a2hpIHRpcHBpIChuYXNhbGl6YXRpb24pCisgICBcdTBBNzEgR3VybXVraGkgYWRkYWsgKGRvdWJsZXMgZm9sbG93aW5nIGNvbnNvbmFudCkKKyAgIFx1MEE3MiBHdXJtdWtoaSBpcmkgKGJhc2UgZm9yIHZvd2VscykKKyAgIFx1MEE3MyBHdXJtdWtoaSB1cmEgKGJhc2UgZm9yIHZvd2VscykKKyAgIFx1MEE3NCBHdXJtdWtoaSBlayBvbmthciAoR29kIGlzIE9uZSkKKworICAgXHUwQjcwIE9yaXlhIGlzc2hhcgorCisgICBcdTBCRjAgVGFtaWwgbnVtYmVyIHRlbgorICAgXHUwQkYxIFRhbWlsIG51bWJlciBvbmUgaHVuZHJlZAorICAgXHUwQkYyIFRhbWlsIG51bWJlciBvbmUgdGhvdXNhbmQKKyovCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiAgTk9URSA6IDx1bmtub3duPiBjb2RlIHdpbGwgbWFwIGJhY2sgdG8gaXRzZWxmICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKiAgICAgICAgIHRpbGwgd2UgZmluZCBhIGdvb2QgbWF0Y2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBEZXZhbmFnYXJpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyJcdTA5NTU+XHUwOTU1OyIgIC8vIDx1bmtub3duPiBMZW5ndGggTWFyayAtIEthbm5hZGEgKFx1MENENSksIFRlbHVndSAoXHUwQzU1KQorIlx1MDk1Nj5cdTA5NDg7IiAgLy8gQUkgTGVuZ3RoIE1hcmsgLT4gRGV2YW5hZ2FyaSBWb3dlbCBTaWduIEFJCisiXHUwOTU3Plx1MDk0QzsiICAvLyBBVSBMZW5ndGggTWFyayAtPiBEZXZhbmFnYXJpIFZvd2VsIFNpZ24gQVUKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIEJlbmdhbGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworIlx1MDk4RD5cdTA5OEQ7IiAgLy8gPHVua25vd24+IGluZGVwZW5kZW50IHZvd2VsIENhbmRyYSBFCisiXHUwOThFPlx1MDk4RjsiICAvLyBMZXR0ZXIgU2hvcnQgRSAtPiBMZXR0ZXIgRQorIlx1MDk5MT5cdTA5OTM7IiAgLy8gTGV0dGVyIENhbmRyYSBPIC0+IExldHRlciBPCisiXHUwOTkyPlx1MDk5MzsiICAvLyBMZXR0ZXIgU2hvcnQgTyAtPiBMZXR0ZXIgTworIlx1MDlBOT5cdTA5QTg7IiAgLy8gTGV0dGVyIE5OTkEgLT4gTGV0dGVyIE5BCisiXHUwOUIxPlx1MDlCMDsiICAvLyBMZXR0ZXIgUlJBIC0+IExldHRlciBSQQorIlx1MDlCMz5cdTA5QjI7IiAgLy8gTGV0dGVyIExMQSAtPiBMZXR0ZXIgTEEKKyJcdTA5QjQ+XHUwOUIyOyIgIC8vIExldHRlciBMTExBIC0+IExldHRlciBMQQorIlx1MDlCNT5cdTA5QUM7IiAgLy8gTGV0dGVyIFZBIC0+IExldHRlciBCQQorIlx1MDlCRD5cdTA5QkQ7IiAgLy8gPHVua25vd24+IFNpZ24gQXZhZ3JhaGEgLSBEZXZhbmFnYXJpIChcdTA5M0QpCisiXHUwOUM1Plx1MDlDNzsiICAvLyBWb3dlbCBDYW5kcmEgRSAtPiBWb3dlbCBFCisiXHUwOUM2Plx1MDlDNzsiICAvLyBWb3dlbCBTaG9ydCBFIC0+IFZvd2VsIEUKKyJcdTA5Qzk+XHUwOUNCOyIgIC8vIFZvd2VsIENhbmRyYSBPIC0+IFZvd2VsIE8KKyJcdTA5Q0E+XHUwOUNCOyIgIC8vIFZvd2VsIFNob3J0IE8gLT4gVm93ZWwgTworIlx1MDlEMD5cdTA5RDA7IiAgLy8gPHVua25vd24+IE9NIC0gRGV2YW5hZ2FyaSAoXHUwOTUwKSwgR3VqYXJhdGkgKFx1MEFEMCkKKyJcdTA5RDE+XHUwOUQxOyIgIC8vIDx1bmtub3duPiBTdHJlc3MgLSBEZXZhbmFnYXJpIChcdTA5NTEpCisiXHUwOUQyPlx1MDlEMjsiICAvLyA8dW5rbm93bj4gU3RyZXNzIC0gRGV2YW5hZ2FyaSAoXHUwOTUyKQorIlx1MDlEMz5cdTA5RDM7IiAgLy8gPHVua25vd24+IEFjY2VudCAtIERldmFuYWdhcmkgKFx1MDk1MykKKyJcdTA5RDQ+XHUwOUQ0OyIgIC8vIDx1bmtub3duPiBBY2NlbnQgLSBEZXZhbmFnYXJpIChcdTA5NTQpCisiXHUwOUQ1Plx1MDlENTsiICAvLyA8dW5rbm93bj4gTGVuZ3RoIE1hcmsgLSBLYW5uYWRhIChcdTBDRDUpLCBUZWx1Z3UgKFx1MEM1NSkKKyJcdTA5RDY+XHUwOUM4OyIgIC8vIEFJIExlbmd0aCBNYXJrIC0+IEJlbmdhbGkgVm93ZWwgU2lnbiBBSQorIlx1MDlEOD5cdTA5OTU7IiAgLy8gTGV0dGVyIFFBIC0+IExldHRlciBLQQorIlx1MDlEOT5cdTA5OTY7IiAgLy8gTGV0dGVyIEtISEEgLT4gTGV0dGVyIEtIQQorIlx1MDlEQT5cdTA5OTc7IiAgLy8gTGV0dGVyIEdISEEgLT4gTGV0dGVyIEdBCisiXHUwOURCPlx1MDk5QzsiICAvLyBMZXR0ZXIgWkEgLT4gTGV0dGVyIEpBCisiXHUwOURFPlx1MDlBQjsiICAvLyBMZXR0ZXIgRkEgLT4gTGV0dGVyIFBIQQorIlx1MDlFND5cdTA5RTQ7IiAgLy8gPHVua25vd24+IERhbmRhIC0gRGV2YW5hZ2FyaSAoXHUwOTY0KQorIlx1MDlFNT5cdTA5RTU7IiAgLy8gPHVua25vd24+IERvdWJsZSBEYW5kYSAtIERldmFuYWdhcmkgKFx1MDk2NSkKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIEd1cm11a2hpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworIlx1MEEwMT5cdTBBMDI7IgorIlx1MEEwMz5cdTBBMDM7IiAgLy8gPHVua25vd24+IFNpZ24gVmlzYXJnYSAtIERldmFuYWdhcmkgKFx1MDkwMykgJiB0aGUgcmVzdAorIlx1MEEwQj5cdTBBMzBcdTBBM0Y7IgorIlx1MEEwQz5cdTBBMDc7IgorIlx1MEEwRD5cdTBBMTA7IgorIlx1MEEwRT5cdTBBMEY7IgorIlx1MEExMT5cdTBBMTQ7IgorIlx1MEExMj5cdTBBMTM7IgorIlx1MEEyOT5cdTBBMjg7IgorIlx1MEEzMT5cdTBBMzA7IgorIlx1MEEzND5cdTBBMzM7IgorIlx1MEEzNz5cdTBBMzY7IgorIlx1MEEzRD5cdTBBM0Q7IiAgLy8gPHVua25vd24+IFNpZ24gQXZhZ3JhaGEgLSBEZXZhbmFnYXJpIChcdTA5M0QpCisiXHUwQTQzPlx1MEE0MzsiICAvLyA8dW5rbm93bj4gVm9jYWxpYyBSIC0gRGV2YW5hZ2FyaSAoXHUwOTQzKQorIlx1MEE0ND5cdTBBNDQ7IiAgLy8gPHVua25vd24+IFZvY2FsaWMgUlIgLSBEZXZhbmFnYXJpIChcdTA5NDQpCisiXHUwQTQ1Plx1MEE0ODsiCisiXHUwQTQ2Plx1MEE0NzsiCisiXHUwQTQ5Plx1MEE0QzsiCisiXHUwQTRBPlx1MEE0QjsiCisiXHUwQTUwPlx1MEE1MDsiICAvLyA8dW5rbm93bj4gT00gLSBEZXZhbmFnYXJpIChcdTA5NTApLCBHdWphcmF0aSAoXHUwQUQwKQorIlx1MEE1MT5cdTBBNTE7IiAgLy8gPHVua25vd24+IFN0cmVzcyAtIERldmFuYWdhcmkgKFx1MDk1MSkKKyJcdTBBNTI+XHUwQTUyOyIgIC8vIDx1bmtub3duPiBTdHJlc3MgLSBEZXZhbmFnYXJpIChcdTA5NTIpCisiXHUwQTUzPlx1MEE1MzsiICAvLyA8dW5rbm93bj4gQWNjZW50IC0gRGV2YW5hZ2FyaSAoXHUwOTUzKQorIlx1MEE1ND5cdTBBNTQ7IiAgLy8gPHVua25vd24+IEFjY2VudCAtIERldmFuYWdhcmkgKFx1MDk1NCkKKyJcdTBBNTU+XHUwQTU1OyIgIC8vIDx1bmtub3duPiBMZW5ndGggTWFyayAtIEthbm5hZGEgKFx1MENENSksIFRlbHVndSAoXHUwQzU1KQorIlx1MEE1Nj5cdTBBNDg7IiAgLy8gQUkgTGVuZ3RoIE1hcmsgLT4gR3VybXVraGkgVm93ZWwgU2lnbiBBSQorIlx1MEE1Nz5cdTBBNEM7IiAgLy8gQVUgTGVuZ3RoIE1hcmsgLT4gR3VybXVraGkgVm93ZWwgU2lnbiBBVQorIlx1MEE1OD5cdTBBMTVcdTBBM0M7IgorIlx1MEE1RD5cdTBBMjJcdTBBM0M7IiAgLy8gTGV0dGVyIFJIQSAtPiBHdXJtdWtoaSBsZXR0ZXIgZGRoYSAoXHUwQTIyKSArIG51a3RhIChcdTBBM0MpCisiXHUwQTVGPlx1MEEyRjsiCisiXHUwQTYwPlx1MEEzMFx1MEEzRjsiCisiXHUwQTYxPlx1MEEwOFx1MEEzQzsiCisiXHUwQTYyPlx1MEEzRlx1MEEzQzsiCisiXHUwQTYzPlx1MEE0MFx1MEEzQzsiCisiXHUwQTY0Plx1MEE2NDsiICAvLyA8dW5rbm93bj4gRGFuZGEgLSBEZXZhbmFnYXJpIChcdTA5NjQpCisiXHUwQTY1Plx1MEE2NTsiICAvLyA8dW5rbm93bj4gRG91YmxlIERhbmRhIC0gRGV2YW5hZ2FyaSAoXHUwOTY1KQorCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogR3VqYXJhdGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIlx1MEE4Qz5cdTBBQjJcdTBBQzM7IgorIlx1MEE4RT5cdTBBOEQ7IgorIlx1MEE5Mj5cdTBBOTE7IgorIlx1MEFBOT5cdTBBQTg7IgorIlx1MEFCMT5cdTBBQjA7IgorIlx1MEFCND5cdTBBQjM7IgorIlx1MEFDNj5cdTBBQzU7IgorIlx1MEFDQT5cdTBBQzk7IgorIlx1MEFEMT5cdTBBRDE7IiAgLy8gPHVua25vd24+IFN0cmVzcyAtIERldmFuYWdhcmkgKFx1MDk1MSkKKyJcdTBBRDI+XHUwQUQyOyIgIC8vIDx1bmtub3duPiBTdHJlc3MgLSBEZXZhbmFnYXJpIChcdTA5NTIpCisiXHUwQUQzPlx1MEFEMzsiICAvLyA8dW5rbm93bj4gQWNjZW50IC0gRGV2YW5hZ2FyaSAoXHUwOTUzKQorIlx1MEFEND5cdTBBRDQ7IiAgLy8gPHVua25vd24+IEFjY2VudCAtIERldmFuYWdhcmkgKFx1MDk1NCkKKyJcdTBBRDU+XHUwQUQ1OyIgIC8vIDx1bmtub3duPiBMZW5ndGggTWFyayAtIEthbm5hZGEgKFx1MENENSksIFRlbHVndSAoXHUwQzU1KQorIlx1MEFENj5cdTBBQzg7IiAgLy8gQUkgTGVuZ3RoIE1hcmsgLT4gR3VqYXJhdGkgVm93ZWwgU2lnbiBBSQorIlx1MEFENz5cdTBBQ0M7IiAgLy8gQVUgTGVuZ3RoIE1hcmsgLT4gR3VqYXJhdGkgVm93ZWwgU2lnbiBBVQorIlx1MEFEOD5cdTBBOTVcdTBBQkM7IgorIlx1MEFEOT5cdTBBOTZcdTBBQkM7IgorIlx1MEFEQT5cdTBBOTdcdTBBQkM7IgorIlx1MEFEQj5cdTBBOUNcdTBBQkM7IgorIlx1MEFEQz5cdTBBQTFcdTBBQkM7IgorIlx1MEFERD5cdTBBQTJcdTBBQkM7IgorIlx1MEFERT5cdTBBQUJcdTBBQkM7IgorIlx1MEFERj5cdTBBQUZcdTBBQkM7IgorIlx1MEFFMT5cdTBBQjJcdTBBQzM7IgorIlx1MEFFMj5cdTBBQkZcdTBBQkM7IgorIlx1MEFFMz5cdTBBQzBcdTBBQkM7IgorIlx1MEFFND5cdTBBRTQ7IiAgLy8gPHVua25vd24+IERhbmRhIC0gRGV2YW5hZ2FyaSAoXHUwOTY0KQorIlx1MEFFNT5cdTBBRTU7IiAgLy8gPHVua25vd24+IERvdWJsZSBEYW5kYSAtIERldmFuYWdhcmkgKFx1MDk2NSkKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIE9yaXlhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyJcdTBCMEQ+XHUwQjBGOyIKKyJcdTBCMEU+XHUwQjBGOyIKKyJcdTBCMTE+XHUwQjEzOyIKKyJcdTBCMTI+XHUwQjEzOyIKKyJcdTBCMjk+XHUwQjI4OyIKKyJcdTBCMzE+XHUwQjMwOyIKKyJcdTBCMzQ+XHUwQjMzOyIKKyJcdTBCMzU+XHUwQjJDOyIgIC8vIExldHRlciBWQSAtPiBPcml5YSBMZXR0ZXIgQkEKKyJcdTBCNDQ+XHUwQjQzXHUwQjNDOyIKKyJcdTBCNDU+XHUwQjQ3OyIKKyJcdTBCNDY+XHUwQjQ3OyIKKyJcdTBCNDk+XHUwQjRCOyIKKyJcdTBCNEE+XHUwQjRCOyIKKyJcdTBCNTA+XHUwQjEzXHUwQjAxOyIKKyJcdTBCNTE+XHUwQjUxOyIgIC8vIDx1bmtub3duPiBTdHJlc3MgLSBEZXZhbmFnYXJpIChcdTA5NTEpCisiXHUwQjUyPlx1MEI1MjsiICAvLyA8dW5rbm93bj4gU3RyZXNzIC0gRGV2YW5hZ2FyaSAoXHUwOTUyKQorIlx1MEI1Mz5cdTBCNTM7IiAgLy8gPHVua25vd24+IEFjY2VudCAtIERldmFuYWdhcmkgKFx1MDk1MykKKyJcdTBCNTQ+XHUwQjU0OyIgIC8vIDx1bmtub3duPiBBY2NlbnQgLSBEZXZhbmFnYXJpIChcdTA5NTQpCisiXHUwQjU1Plx1MEI1NTsiICAvLyA8dW5rbm93bj4gTGVuZ3RoIE1hcmsgLSBLYW5uYWRhIChcdTBDRDUpLCBUZWx1Z3UgKFx1MEM1NSkKKyJcdTBCNTg+XHUwQjE1XHUwQjNDOyIKKyJcdTBCNTk+XHUwQjE2XHUwQjNDOyIKKyJcdTBCNUE+XHUwQjE3XHUwQjNDOyIKKyJcdTBCNUI+XHUwQjFDXHUwQjNDOyIKKyJcdTBCNUU+XHUwQjJCXHUwQjNDOyIKKyJcdTBCNjI+XHUwQjU2XHUwQjNDOyIKKyJcdTBCNjM+XHUwQjU3XHUwQjNDOyIKKyJcdTBCNjQ+XHUwQjY0OyIgIC8vIDx1bmtub3duPiBEYW5kYSAtIERldmFuYWdhcmkgKFx1MDk2NCkKKyJcdTBCNjU+XHUwQjY1OyIgIC8vIDx1bmtub3duPiBEb3VibGUgRGFuZGEgLSBEZXZhbmFnYXJpIChcdTA5NjUpCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBUYW1pbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyJcdTBCODE+XHUwQjgxOyIgIC8vIDx1bmtub3duPiBDYW5kcmFiaW5kdSAtIERldmFuYWdhcmkgKFx1MDkwMSkgLGV0YworIlx1MEI4Qj5cdTBCQjBcdTBCQkY7IgorIlx1MEI4Qz5cdTBCODc7IgorIlx1MEI4RD5cdTBCODY7IgorIlx1MEI5MT5cdTBCODY7IgorIlx1MEI5Nj5cdTBCOTU7IgorIlx1MEI5Nz5cdTBCOTU7IgorIlx1MEI5OD5cdTBCOTU7IgorIlx1MEI5Qj5cdTBCOUE7IgorIlx1MEI5RD5cdTBCOUE7IgorIlx1MEJBMD5cdTBCOUY7IgorIlx1MEJBMT5cdTBCOUY7IgorIlx1MEJBMj5cdTBCOUY7IgorIlx1MEJBNT5cdTBCQTQ7IgorIlx1MEJBNj5cdTBCQTQ7IgorIlx1MEJBNz5cdTBCQTQ7IgorIlx1MEJBQj5cdTBCQUE7IgorIlx1MEJBQz5cdTBCQUE7IgorIlx1MEJBRD5cdTBCQUE7IgorIlx1MEJCNj5cdTBCQjc7IgorIlx1MEJCQz5cdTBCQkM7IiAgLy8gPHVua25vd24+IE51a3RhCisiXHUwQkJEPlx1MEJCRDsiICAvLyA8dW5rbm93bj4gU2lnbiBBdmFncmFoYSAtIERldmFuYWdhcmkgKFx1MDkzRCkKKyJcdTBCQzM+XHUwQkNEXHUwQkIwXHUwQkJGOyIKKyJcdTBCQzQ+XHUwQkNEXHUwQkIwXHUwQkJGOyIKKyJcdTBCQzU+XHUwQkJFOyIKKyJcdTBCQzk+XHUwQkJFOyIKKyJcdTBCRDA+XHUwQjkzXHUwQkFFXHUwQkNEOyIKKyJcdTBCRDE+XHUwQkQxOyIgIC8vIDx1bmtub3duPiBTdHJlc3MgLSBEZXZhbmFnYXJpIChcdTA5NTEpCisiXHUwQkQyPlx1MEJEMjsiICAvLyA8dW5rbm93bj4gU3RyZXNzIC0gRGV2YW5hZ2FyaSAoXHUwOTUyKQorIlx1MEJEMz5cdTBCRDM7IiAgLy8gPHVua25vd24+IEFjY2VudCAtIERldmFuYWdhcmkgKFx1MDk1MykKKyJcdTBCRDQ+XHUwQkQ0OyIgIC8vIDx1bmtub3duPiBBY2NlbnQgLSBEZXZhbmFnYXJpIChcdTA5NTQpCisiXHUwQkQ1Plx1MEJENTsiICAvLyA8dW5rbm93bj4gTGVuZ3RoIE1hcmsgLSBLYW5uYWRhIChcdTBDRDUpLCBUZWx1Z3UgKFx1MEM1NSkKKyJcdTBCRDY+XHUwQkM4OyIgIC8vIEFJIExlbmd0aCBNYXJrIC0+IFRhbWlsIFZvd2VsIFNpZ24gQUkKKyJcdTBCRDg+XHUwQjk1OyIKKyJcdTBCRDk+XHUwQjk1OyIKKyJcdTBCREE+XHUwQjk1OyIKKyJcdTBCREI+XHUwQjlDOyIKKyJcdTBCREM+XHUwQjlGOyIKKyJcdTBCREQ+XHUwQjlGOyIKKyJcdTBCREU+XHUwQkFBOyIKKyJcdTBCREY+XHUwQkFGOyIKKyJcdTBCRTA+XHUwQkIwXHUwQkJGOyIKKyJcdTBCRTE+XHUwQjg4OyIKKyJcdTBCRTI+XHUwQkUyOyIgIC8vIDx1bmtub3duPiBWb2NhbGljIEwgLSBEZXZhbmFnYXJpIChcdTA5NjIpCisiXHUwQkUzPlx1MEJFMzsiICAvLyA8dW5rbm93bj4gVm9jYWxpYyBMTCAtIERldmFuYWdhcmkgKFx1MDk2MykKKyJcdTBCRTQ+XHUwQkU0OyIgIC8vIDx1bmtub3duPiBEYW5kYSAtIERldmFuYWdhcmkgKFx1MDk2NCkKKyJcdTBCRTU+XHUwQkU1OyIgIC8vIDx1bmtub3duPiBEb3VibGUgRGFuZGEgLSBEZXZhbmFnYXJpIChcdTA5NjUpCisiXHUwQkU2Plx1MDAzMDsiICAvLyBaRVJPIC0gRGlnaXQgWkVSTworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyogVGVsdWd1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisiXHUwQzBEPlx1MEMwRTsiCisiXHUwQzExPlx1MEMxMjsiCisiXHUwQzI5Plx1MEMyODsiCisiXHUwQzM0Plx1MEMzMzsiCisiXHUwQzNDPlx1MEMzQzsiICAvLyA8dW5rbm93bj4gTnVrdGEKKyJcdTBDM0Q+XHUwQzNEOyIgIC8vIDx1bmtub3duPiBTaWduIEF2YWdyYWhhIC0gRGV2YW5hZ2FyaSAoXHUwOTNEKQorIlx1MEM0NT5cdTBDNDY7IgorIlx1MEM0OT5cdTBDNEE7IgorIlx1MEM1MD5cdTBDMTNcdTBDMDI7IgorIlx1MEM1MT5cdTBDNTE7IiAgLy8gPHVua25vd24+IFN0cmVzcyAtIERldmFuYWdhcmkgKFx1MDk1MSkKKyJcdTBDNTI+XHUwQzUyOyIgIC8vIDx1bmtub3duPiBTdHJlc3MgLSBEZXZhbmFnYXJpIChcdTA5NTIpCisiXHUwQzUzPlx1MEM1MzsiICAvLyA8dW5rbm93bj4gQWNjZW50IC0gRGV2YW5hZ2FyaSAoXHUwOTUzKQorIlx1MEM1ND5cdTBDNTQ7IiAgLy8gPHVua25vd24+IEFjY2VudCAtIERldmFuYWdhcmkgKFx1MDk1NCkKKyJcdTBDNTc+XHUwQzRDOyIKKyJcdTBDNTg+XHUwQzE1OyIKKyJcdTBDNTk+XHUwQzE2OyIKKyJcdTBDNUE+XHUwQzE3OyIKKyJcdTBDNUI+XHUwQzFDOyIKKyJcdTBDNUM+XHUwQzIxOyIKKyJcdTBDNUQ+XHUwQzIyOyIKKyJcdTBDNUU+XHUwQzJCOyIKKyJcdTBDNUY+XHUwQzJGOyIKKyJcdTBDNjI+XHUwQzNGOyIKKyJcdTBDNjM+XHUwQzQwOyIKKyJcdTBDNjQ+XHUwQzY0OyIgIC8vIDx1bmtub3duPiBEYW5kYSAtIERldmFuYWdhcmkgKFx1MDk2NCkKKyJcdTBDNjU+XHUwQzY1OyIgIC8vIDx1bmtub3duPiBEb3VibGUgRGFuZGEgLSBEZXZhbmFnYXJpIChcdTA5NjUpCisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKiBLYW5uYWRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyJcdTBDODE+XHUwQzgyOyIKKyJcdTBDOEQ+XHUwQzhFOyIKKyJcdTBDOTE+XHUwQzkyOyIKKyJcdTBDQTk+XHUwQ0E4OyIKKyJcdTBDQjQ+XHUwQ0IzOyIKKyJcdTBDQkM+XHUwQ0JDOyIgIC8vIDx1bmtub3duPiBOdWt0YQorIlx1MENCRD5cdTBDQkQ7IiAgLy8gPHVua25vd24+IFNpZ24gQXZhZ3JhaGEgLSBEZXZhbmFnYXJpIChcdTA5M0QpCisiXHUwQ0M1Plx1MENDNjsiCisiXHUwQ0M5Plx1MENDQTsiCisiXHUwQ0QwPlx1MEM5M1x1MEM4MjsiCisiXHUwQ0QxPlx1MENEMTsiICAvLyA8dW5rbm93bj4gU3RyZXNzIC0gRGV2YW5hZ2FyaSAoXHUwOTUxKQorIlx1MENEMj5cdTBDRDI7IiAgLy8gPHVua25vd24+IFN0cmVzcyAtIERldmFuYWdhcmkgKFx1MDk1MikKKyJcdTBDRDM+XHUwQ0QzOyIgIC8vIDx1bmtub3duPiBBY2NlbnQgLSBEZXZhbmFnYXJpIChcdTA5NTMpCisiXHUwQ0Q0Plx1MENENDsiICAvLyA8dW5rbm93bj4gQWNjZW50IC0gRGV2YW5hZ2FyaSAoXHUwOTU0KQorIlx1MENENz5cdTBDQ0M7IgorIlx1MENEOD5cdTBDOTU7IgorIlx1MENEOT5cdTBDOTY7IgorIlx1MENEQT5cdTBDOTc7IgorIlx1MENEQj5cdTBDOUM7IgorIlx1MENEQz5cdTBDQTE7IgorIlx1MENERD5cdTBDQTI7IgorIlx1MENERj5cdTBDQUY7IgorIlx1MENFMj5cdTBDQkY7IgorIlx1MENFMz5cdTBDQzA7IgorIlx1MENFND5cdTBDRTQ7IiAgLy8gPHVua25vd24+IERhbmRhIC0gRGV2YW5hZ2FyaSAoXHUwOTY0KQorIlx1MENFNT5cdTBDRTU7IiAgLy8gPHVua25vd24+IERvdWJsZSBEYW5kYSAtIERldmFuYWdhcmkgKFx1MDk2NSkKKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qIE1hbGF5YWxhbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworIlx1MEQwMT5cdTBEMDI7IgorIlx1MEQwRD5cdTBEMDY7IgorIlx1MEQxMT5cdTBEMTM7IgorIlx1MEQyOT5cdTBEMjg7IgorIlx1MEQzQz5cdTBEM0M7IiAgLy8gPHVua25vd24+IE51a3RhCisiXHUwRDNEPlx1MEQzRDsiICAvLyA8dW5rbm93bj4gU2lnbiBBdmFncmFoYSAtIERldmFuYWdhcmkgKFx1MDkzRCkKKyJcdTBENDQ+XHUwRDQ0OyIgIC8vIDx1bmtub3duPiBWb2NhbGljIFJSIC0gRGV2YW5hZ2FyaSAoXHUwOTQ0KQorIlx1MEQ0NT5cdTBEM0U7IgorIlx1MEQ0OT5cdTBENEI7IgorIlx1MEQ1MD5cdTBENTA7IiAgLy8gPHVua25vd24+IE9NIC0gRGV2YW5hZ2FyaSAoXHUwOTUwKSwgR3VqYXJhdGkgKFx1MEFEMCkKKyJcdTBENTE+XHUwRDUxOyIgIC8vIDx1bmtub3duPiBTdHJlc3MgLSBEZXZhbmFnYXJpIChcdTA5NTEpCisiXHUwRDUyPlx1MEQ1MjsiICAvLyA8dW5rbm93bj4gU3RyZXNzIC0gRGV2YW5hZ2FyaSAoXHUwOTUyKQorIlx1MEQ1Mz5cdTBENTM7IiAgLy8gPHVua25vd24+IEFjY2VudCAtIERldmFuYWdhcmkgKFx1MDk1MykKKyJcdTBENTQ+XHUwRDU0OyIgIC8vIDx1bmtub3duPiBBY2NlbnQgLSBEZXZhbmFnYXJpIChcdTA5NTQpCisiXHUwRDU1Plx1MEQ1NTsiICAvLyA8dW5rbm93bj4gTGVuZ3RoIE1hcmsgLSBLYW5uYWRhIChcdTBDRDUpLCBUZWx1Z3UgKFx1MEM1NSkKKyJcdTBENTY+XHUwRDQ4OyIgIC8vIEFJIExlbmd0aCBNYXJrIC0+IE1hbGF5YWxhbSBWb3dlbCBTaWduIEFJCisiXHUwRDU4Plx1MEQxNTsiCisiXHUwRDU5Plx1MEQxNjsiCisiXHUwRDVBPlx1MEQxNzsiCisiXHUwRDVCPlx1MEQxQzsiCisiXHUwRDVDPlx1MEQyMTsiCisiXHUwRDVEPlx1MEQyMjsiCisiXHUwRDVFPlx1MEQyQjsiCisiXHUwRDVGPlx1MEQyRjsiCisiXHUwRDYyPlx1MEQ2MjsiICAvLyA8dW5rbm93bj4gVm9jYWxpYyBMIC0gRGV2YW5hZ2FyaSAoXHUwOTYyKQorIlx1MEQ2Mz5cdTBENjM7IiAgLy8gPHVua25vd24+IFZvY2FsaWMgTEwgLSBEZXZhbmFnYXJpIChcdTA5NjMpCisiXHUwRDY0Plx1MEQ2NDsiICAvLyA8dW5rbm93bj4gRGFuZGEgLSBEZXZhbmFnYXJpIChcdTA5NjQpCisiXHUwRDY1Plx1MEQ2NTsiICAvLyA8dW5rbm93bj4gRG91YmxlIERhbmRhIC0gRGV2YW5hZ2FyaSAoXHUwOTY1KQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdG9vbHMvdHJhbnNsaXQvcmJ0VGVtcGxhdGUudHh0IGIvc3JjL2NvbS9pYm0vdG9vbHMvdHJhbnNsaXQvcmJ0VGVtcGxhdGUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA1NDliYmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90b29scy90cmFuc2xpdC9yYnRUZW1wbGF0ZS50eHQKQEAgLTAsMCArMSwyNiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAoYykgMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbgorKiBhbmQgb3RoZXJzLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiA+IFRISVMgRklMRSBXQVMgTUFDSElORSBHRU5FUkFURUQgPAorKiA+ICAgICAgIERPIE5PVCBFRElUIEJZIEhBTkQgICAgICAgPAorKiA+ICAgICAgUlVOIFRPT0wgVE8gUkVHRU5FUkFURSAgICAgPAorKiBUb29sOiAkVE9PTAorKiBDcmVhdGlvbiBkYXRlOiAkREFURQorKi8KK3BhY2thZ2UgY29tLmlibS50ZXh0LnJlc291cmNlczsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKK3B1YmxpYyBjbGFzcyBUcmFuc2xpdGVyYXRpb25SdWxlXyRTQ1JJUFRGUk9NXyRTQ1JJUFRUTyBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIExpc3RSZXNvdXJjZUJ1bmRsZQorICAgICAqLworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdW10geworICAgICAgICAgICAgeyAiUnVsZSIsCisgICAgICAgICAgICAgICRSVUxFUworICAgICAgICAgICAgfQorICAgICAgICB9OworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3Rvb2xzL3RyYW5zbGl0L3ZhcnN1Yi5iYXQgYi9zcmMvY29tL2libS90b29scy90cmFuc2xpdC92YXJzdWIuYmF0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ4OTI3MjEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS90b29scy90cmFuc2xpdC92YXJzdWIuYmF0CkBAIC0wLDAgKzEsNzQgQEAKK0ByZW0gPSAnLS0qLVBlcmwtKi0tCitAZWNobyBvZmYKK2lmICIlT1MlIiA9PSAiV2luZG93c19OVCIgZ290byBXaW5OVAorcGVybCAteCAtUyAiJTAiICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5Citnb3RvIGVuZG9mcGVybAorOldpbk5UCitwZXJsIC14IC1TICIlMCIgJSoKK2lmIE5PVCAiJUNPTVNQRUMlIiA9PSAiJVN5c3RlbVJvb3QlXHN5c3RlbTMyXGNtZC5leGUiIGdvdG8gZW5kb2ZwZXJsCitpZiAlZXJyb3JsZXZlbCUgPT0gOTAwOSBlY2hvIFlvdSBkbyBub3QgaGF2ZSBQZXJsIGluIHlvdXIgUEFUSC4KK2dvdG8gZW5kb2ZwZXJsCitAcmVtICc7CisjIXBlcmwKKyNsaW5lIDE0CisKKyMgVXNhZ2U6IHBlcmwgdmFyc3ViLmJhdCBbLW58LW5yXSA8aW5maWxlPiA8b3V0ZmlsZT4KKyMKKyMgU3Vic3RpdHV0ZXMgdmFyaWFibGVzIGludG8gcnVsZXMgYW5kIGRlbGV0ZXMgdmFyaWFibGUgZGVmaW5pdGlvbgorIyBzdGF0ZW1lbnRzLiAgVmFyaWFibGVzIHRoYXQgZXhwYW5kIHRvIFVuaWNvZGVTZXRzIGFyZSBOT1QKKyMgc3Vic3RpdHV0ZWQuCisjCisjICAtbiAgIEFmdGVyd2FyZHMsIHJ1biBuYXRpdmUyYXNjaWkgLWVuY29kaW5nIFVURjgKKyMgIC1uciAgQWZ0ZXJ3YXJkcywgcnVuIG5hdGl2ZTJhc2NpaSAtZW5jb2RpbmcgVVRGOCAtcmV2ZXJzZQorCiskTjJBID0gMDsKKworJElOID0gc2hpZnQ7CitpZiAoJElOID1+IC9eLW4vKSB7CisgICAgJE4yQSA9IDE7CisgICAgJE4yQW9wdGlvbiA9ICgkSU4gZXEgJy1ucicpID8gIiAtcmV2ZXJzZSAiIDogIiI7CisgICAgJElOID0gc2hpZnQ7Cit9CiskT1VUID0gc2hpZnQ7CisKK2lmICghKCRJTiAmJiAkT1VUKSkgeworICAgIGRpZSAiVXNhZ2U6ICQwIFstbnwtbnJdIDxpbmZpbGU+IDxvdXRmaWxlPiI7Cit9CisKK29wZW4oSU4pIG9yIGRpZSAiQ2FuJ3Qgb3BlbiAkSU46ICQhIjsKK29wZW4oT1VULCAiPiRPVVQiKSBvciBkaWUgIkNhbid0IG9wZW4gJE9VVDogJCEiOworCit3aGlsZSAoPElOPikgeworICAgIGlmICgvXlxzKlwkKFthLXpBLVowLTlfXSspXHMqPVxzKihbXjtcI10rKVxzKjtccyooXCMuKik/JC8pIHsKKyAgICAgICAgIyBUaGlzIGxvb2tzIGxpa2UgYSB2YXJpYWJsZSBkZWZpbml0aW9uCisgICAgICAgIG15ICgkdmFyLCAkZGVmKSA9ICgkMSwgJDIpOworICAgICAgICAjIERvbid0IHN1YnN0aXR1dGUgVW5pY29kZVNldCB2YXJzCisgICAgICAgIGlmICgkZGVmICF+IC9eXFsvKSB7CisgICAgICAgICAgICBpZiAoZXhpc3RzICRWQVJ7JHZhcn0pIHsKKyAgICAgICAgICAgICAgICBwcmludCBTVERFUlIgIkVycm9yOiBEdXBsaWNhdGUgZGVmaW5pdGlvbiBvZiAkdmFyXG4iOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAkVkFSeyR2YXJ9ID0gJGRlZjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5leHQ7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgIyBEbyB2YXJpYWJsZSBzdWJzdGl0dXRpb25zLCBhbmQgb3V0cHV0IGxpbmUKKyAgICBmb3JlYWNoIG15ICR2YXIgKGtleXMgJVZBUikgeworICAgICAgICBteSAkZGVmID0gJFZBUnskdmFyfTsKKyAgICAgICAgcy9cJCR2YXJcYi8kZGVmL2c7CisgICAgfQorICAgIHByaW50IE9VVDsKK30KKworY2xvc2UoT1VUKTsKK2Nsb3NlKElOKTsKKworaWYgKCROMkEpIHsKKyAgICBgbmF0aXZlMmFzY2lpIC1lbmNvZGluZyBVVEY4ICROMkFvcHRpb24gJE9VVCAkT1VULm5hdGl2ZTJhc2NpaWA7CisgICAgdW5saW5rICRPVVQ7CisgICAgcmVuYW1lICIkT1VULm5hdGl2ZTJhc2NpaSIsICRPVVQ7Cit9CisKK19fRU5EX18KKzplbmRvZnBlcmwKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvQnVkZGhpc3RDYWxlbmRhci5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9CdWRkaGlzdENhbGVuZGFyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWUzYTI1MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvQnVkZGhpc3RDYWxlbmRhci5qYXZhCkBAIC0wLDAgKzEsMTkwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL0F0dGljL0J1ZGRoaXN0Q2FsZW5kYXIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8xMS8yOCAwMDo1MDoxMiAkIAorICogJFJldmlzaW9uOiAxLjcgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS51dGlsOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgY29tLmlibS51dGlsLkdyZWdvcmlhbkNhbGVuZGFyOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisKKy8qKgorICogPGNvZGU+QnVkZGhpc3RDYWxlbmRhcjwvY29kZT4gaXMgYSBzdWJjbGFzcyBvZiA8Y29kZT5HcmVnb3JpYW5DYWxlbmRhcjwvY29kZT4KKyAqIHRoYXQgbnVtYmVycyB5ZWFycyBzaW5jZSB0aGUgYmlydGggb2YgdGhlIEJ1ZGRoYS4gIFRoaXMgaXMgdGhlIGNpdmlsIGNhbGVuZGFyCisgKiBpbiBzb21lIHByZWRvbWluYW50bHkgQnVkZGhpc3QgY291bnRyaWVzIHN1Y2ggYXMgVGhhaWxhbmQsIGFuZCBpdCBpcyB1c2VkIGZvcgorICogcmVsaWdpb3VzIHB1cnBvc2VzIGVsc2V3aGVyZS4KKyAqIDxwPgorICogVGhlIEJ1ZGRoaXN0IGNhbGVuZGFyIGlzIGlkZW50aWNhbCB0byB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyIGluIGFsbCByZXNwZWN0cworICogZXhjZXB0IGZvciB0aGUgeWVhciBhbmQgZXJhLiAgWWVhcnMgYXJlIG51bWJlcmVkIHNpbmNlIHRoZSBiaXJ0aCBvZiB0aGUKKyAqIEJ1ZGRoYSBpbiA1NDMgQkMgKEdyZWdvcmlhbiksIHNvIHRoYXQgMSBBRCAoR3JlZ29yaWFuKSBpcyBlcXVpdmFsZW50IHRvIDU0NAorICogQkUgKEJ1ZGRoaXN0IEVyYSkgYW5kIDE5OTggQUQgaXMgMjU0MSBCRS4KKyAqIDxwPgorICogVGhlIEJ1ZGRoaXN0IENhbGVuZGFyIGhhcyBvbmx5IG9uZSBhbGxvd2FibGUgZXJhOiA8Y29kZT5CRTwvY29kZT4uICBJZiB0aGUKKyAqIGNhbGVuZGFyIGlzIG5vdCBpbiBsZW5pZW50IG1vZGUgKHNlZSA8Y29kZT5zZXRMZW5pZW50PC9jb2RlPiksIGRhdGVzIGJlZm9yZQorICogMS8xLzEgQkUgYXJlIHJlamVjdGVkIHdpdGggYW4gPGNvZGU+SWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uPC9jb2RlPi4KKyAqCisgKiBAc2VlIGNvbS5pYm0udXRpbC5HcmVnb3JpYW5DYWxlbmRhcgorICoKKyAqIEBhdXRob3IgTGF1cmEgV2VybmVyCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKi8KK3B1YmxpYyBjbGFzcyBCdWRkaGlzdENhbGVuZGFyIGV4dGVuZHMgR3JlZ29yaWFuQ2FsZW5kYXIgeworICAgIAorICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IFx1MDBhOSAxOTk4IElCTSBDb3JwLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBDb25zdHJ1Y3RvcnMuLi4KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIENvbnN0YW50IGZvciB0aGUgQnVkZGhpc3QgRXJhLiAgVGhpcyBpcyB0aGUgb25seSBhbGxvd2FibGUgPGNvZGU+RVJBPC9jb2RlPgorICAgICAqIHZhbHVlIGZvciB0aGUgQnVkZGhpc3QgY2FsZW5kYXIuCisgICAgICoKKyAgICAgKiBAc2VlIGNvbS5pYm0udXRpbC5DYWxlbmRhciNFUkEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCRSA9IDA7CisgICAgCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIDxjb2RlPkJ1ZGRoaXN0Q2FsZW5kYXI8L2NvZGU+IHVzaW5nIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICovCisgICAgcHVibGljIEJ1ZGRoaXN0Q2FsZW5kYXIoKSB7CisgICAgICAgIHN1cGVyKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIDxjb2RlPkJ1ZGRoaXN0Q2FsZW5kYXI8L2NvZGU+IGJhc2VkIG9uIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgKiBpbiB0aGUgZ2l2ZW4gdGltZSB6b25lIHdpdGggdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqCisgICAgICogQHBhcmFtIHpvbmUgdGhlIGdpdmVuIHRpbWUgem9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgQnVkZGhpc3RDYWxlbmRhcihUaW1lWm9uZSB6b25lKSB7CisgICAgICAgIHN1cGVyKHpvbmUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSA8Y29kZT5CdWRkaGlzdENhbGVuZGFyPC9jb2RlPiBiYXNlZCBvbiB0aGUgY3VycmVudCB0aW1lCisgICAgICogaW4gdGhlIGRlZmF1bHQgdGltZSB6b25lIHdpdGggdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBhTG9jYWxlIHRoZSBnaXZlbiBsb2NhbGUuCisgICAgICovCisgICAgcHVibGljIEJ1ZGRoaXN0Q2FsZW5kYXIoTG9jYWxlIGFMb2NhbGUpIHsKKyAgICAgICAgc3VwZXIoYUxvY2FsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIDxjb2RlPkJ1ZGRoaXN0Q2FsZW5kYXI8L2NvZGU+IGJhc2VkIG9uIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgKiBpbiB0aGUgZ2l2ZW4gdGltZSB6b25lIHdpdGggdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB6b25lIHRoZSBnaXZlbiB0aW1lIHpvbmUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYUxvY2FsZSB0aGUgZ2l2ZW4gbG9jYWxlLgorICAgICAqLworICAgIHB1YmxpYyBCdWRkaGlzdENhbGVuZGFyKFRpbWVab25lIHpvbmUsIExvY2FsZSBhTG9jYWxlKSB7CisgICAgICAgIHN1cGVyKHpvbmUsIGFMb2NhbGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSA8Y29kZT5CdWRkaGlzdENhbGVuZGFyPC9jb2RlPiB3aXRoIHRoZSBnaXZlbiBkYXRlIHNldAorICAgICAqIGluIHRoZSBkZWZhdWx0IHRpbWUgem9uZSB3aXRoIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXRlICAgICAgVGhlIGRhdGUgdG8gd2hpY2ggdGhlIG5ldyBjYWxlbmRhciBpcyBzZXQuCisgICAgICovCisgICAgcHVibGljIEJ1ZGRoaXN0Q2FsZW5kYXIoRGF0ZSBkYXRlKSB7CisgICAgICAgIHRoaXMoKTsKKyAgICAgICAgc2V0VGltZShkYXRlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+QnVkZGhpc3RDYWxlbmRhcjwvY29kZT4gd2l0aCB0aGUgZ2l2ZW4gZGF0ZSBzZXQKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0geWVhciAgICAgIFRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgY2FsZW5kYXIncyB7QGxpbmsgI1lFQVIgWUVBUn0gdGltZSBmaWVsZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtb250aCAgICAgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBjYWxlbmRhcidzIHtAbGluayAjTU9OVEggTU9OVEh9IHRpbWUgZmllbGQuCisgICAgICogICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgaXMgMC1iYXNlZC4gZS5nLiwgMCBmb3IgSmFudWFyeS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXRlICAgICAgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBjYWxlbmRhcidzIHtAbGluayAjREFURSBEQVRFfSB0aW1lIGZpZWxkLgorICAgICAqLworICAgIHB1YmxpYyBCdWRkaGlzdENhbGVuZGFyKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXRlKSB7CisgICAgICAgIHN1cGVyKHllYXIsIG1vbnRoLCBkYXRlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgQnVkZGhpc3RDYWxlbmRhciB3aXRoIHRoZSBnaXZlbiBkYXRlCisgICAgICogYW5kIHRpbWUgc2V0IGZvciB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0geWVhciAgICAgIFRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgY2FsZW5kYXIncyB7QGxpbmsgI1lFQVIgWUVBUn0gdGltZSBmaWVsZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtb250aCAgICAgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBjYWxlbmRhcidzIHtAbGluayAjTU9OVEggTU9OVEh9IHRpbWUgZmllbGQuCisgICAgICogICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgaXMgMC1iYXNlZC4gZS5nLiwgMCBmb3IgSmFudWFyeS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXRlICAgICAgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBjYWxlbmRhcidzIHtAbGluayAjREFURSBEQVRFfSB0aW1lIGZpZWxkLgorICAgICAqCisgICAgICogQHBhcmFtIGhvdXIgICAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNIT1VSX09GX0RBWSBIT1VSX09GX0RBWX0gdGltZSBmaWVsZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtaW51dGUgICAgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBjYWxlbmRhcidzIHtAbGluayAjTUlOVVRFIE1JTlVURX0gdGltZSBmaWVsZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzZWNvbmQgICAgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBjYWxlbmRhcidzIHtAbGluayAjU0VDT05EIFNFQ09ORH0gdGltZSBmaWVsZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgQnVkZGhpc3RDYWxlbmRhcihpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF0ZSwgaW50IGhvdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaW51dGUsIGludCBzZWNvbmQpCisgICAgeworICAgICAgICBzdXBlcih5ZWFyLCBtb250aCwgZGF0ZSwgaG91ciwgbWludXRlLCBzZWNvbmQpOworICAgIH0KKworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gVGhlIG9ubHkgcHJhY3RpY2FsIGRpZmZlcmVuY2UgZnJvbSBhIEdyZWdvcmlhbiBjYWxlbmRhciBpcyB0aGF0IHllYXJzCisgICAgLy8gYXJlIG51bWJlcmVkIHNpbmNlIHRoZSBiaXJ0aCBvZiB0aGUgQnVkZGhhLiAgQSBjb3VwbGUgb2Ygb3ZlcnJpZGVzIHdpbGwKKyAgICAvLyB0YWtlIGNhcmUgb2YgdGhhdC4uLi4KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvLyBTdGFydHMgaW4gLTU0MyBBRCwgaWUgNTQ0IEJDCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEJVRERISVNUX0VSQV9TVEFSVCA9IC01NDM7CisgICAgCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVHZXRFeHRlbmRlZFllYXIoKSB7CisgICAgICAgIGludCB5ZWFyOworICAgICAgICBpZiAobmV3ZXJGaWVsZChFWFRFTkRFRF9ZRUFSLCBZRUFSKSA9PSBFWFRFTkRFRF9ZRUFSKSB7CisgICAgICAgICAgICB5ZWFyID0gaW50ZXJuYWxHZXQoRVhURU5ERURfWUVBUiwgMSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBJZ25vcmUgdGhlIGVyYSwgYXMgdGhlcmUgaXMgb25seSBvbmUKKyAgICAgICAgICAgIHllYXIgPSBpbnRlcm5hbEdldChZRUFSLCAxKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geWVhcjsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4gSkQgb2Ygc3RhcnQgb2YgZ2l2ZW4gbW9udGgveWVhcgorICAgIHByb3RlY3RlZCBpbnQgaGFuZGxlQ29tcHV0ZU1vbnRoU3RhcnQoaW50IGV5ZWFyLCBpbnQgbW9udGgsIGJvb2xlYW4gdXNlTW9udGgpIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLmhhbmRsZUNvbXB1dGVNb250aFN0YXJ0KGV5ZWFyICsgQlVEREhJU1RfRVJBX1NUQVJULCBtb250aCwgdXNlTW9udGgpOworICAgIH0KKworICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZUNvbXB1dGVGaWVsZHMoaW50IGp1bGlhbkRheSkgeworICAgICAgICBzdXBlci5oYW5kbGVDb21wdXRlRmllbGRzKGp1bGlhbkRheSk7CisgICAgICAgIGludCB5ID0gaW50ZXJuYWxHZXQoRVhURU5ERURfWUVBUikgLSBCVURESElTVF9FUkFfU1RBUlQ7CisgICAgICAgIGludGVybmFsU2V0KEVYVEVOREVEX1lFQVIsIHkpOworICAgICAgICBpbnRlcm5hbFNldChFUkEsIDApOworICAgICAgICBpbnRlcm5hbFNldChZRUFSLCB5KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBHcmVnb3JpYW5DYWxlbmRhci4gIFRoZXJlIGlzIG9ubHkgb25lIEJ1ZGRoaXN0IEVSQS4gIFdlCisgICAgICogc2hvdWxkIHJlYWxseSBoYW5kbGUgWUVBUiwgWUVBUl9XT1ksIGFuZCBFWFRFTkRFRF9ZRUFSIGhlcmUgdG9vIHRvCisgICAgICogaW1wbGVtZW50IHRoZSAxLi41MDAwMDAwIHJhbmdlLCBidXQgaXQncyBub3QgY3JpdGljYWwuCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVHZXRMaW1pdChpbnQgZmllbGQsIGludCBsaW1pdFR5cGUpIHsKKyAgICAgICAgaWYgKGZpZWxkID09IEVSQSkgeworICAgICAgICAgICAgcmV0dXJuIEJFOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzdXBlci5oYW5kbGVHZXRMaW1pdChmaWVsZCwgbGltaXRUeXBlKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL0J5dGVUcmllLmphdmEgYi9zcmMvY29tL2libS91dGlsL0J5dGVUcmllLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDVmZWRiYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvQnl0ZVRyaWUuamF2YQpAQCAtMCwwICsxLDIzMiBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL0F0dGljL0J5dGVUcmllLmphdmEsdiAkIAorKiAkRGF0ZTogMjAwMS8wMy8yOCAwMDowMTo1MiAkIAorKiAkUmV2aXNpb246IDEuMiAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS51dGlsOworCitpbXBvcnQgY29tLmlibS50ZXh0LlVDaGFyYWN0ZXI7CisKKy8qKgorKiBDbGFzcyB0byBtYW5pcHVsYXRlIGFuZCBnZW5lcmF0ZSBhIHRyaWUuCisqIFRoaXMgaXMgdXNlZnVsIGZvciBJQ1UgZGF0YSBpbiBwcmltaXRpdmUgdHlwZXMuCisqIFByb3ZpZGVzIGEgY29tcGFjdCB3YXkgdG8gc3RvcmUgaW5mb3JtYXRpb24gdGhhdCBpcyBpbmRleGVkIGJ5IFVuaWNvZGUgCisqIHZhbHVlcywgc3VjaCBhcyBjaGFyYWN0ZXIgcHJvcGVydGllcywgdHlwZXMsIGtleWJvYXJkIHZhbHVlcywgZXRjLiBUaGlzIGlzIAorKiB2ZXJ5IHVzZWZ1bCB3aGVuIHlvdSBoYXZlIGEgYmxvY2sgb2YgVW5pY29kZSBkYXRhIHRoYXQgY29udGFpbnMgc2lnbmlmaWNhbnQgCisqIHZhbHVlcyB3aGlsZSB0aGUgcmVzdCBvZiB0aGUgVW5pY29kZSBkYXRhIGlzIHVudXNlZCBpbiB0aGUgYXBwbGljYXRpb24gb3IgCisqIHdoZW4geW91IGhhdmUgYSBsb3Qgb2YgcmVkdW5kYW5jZSwgc3VjaCBhcyB3aGVyZSBhbGwgMjEsMDAwIEhhbiBpZGVvZ3JhcGhzIAorKiBoYXZlIHRoZSBzYW1lIHZhbHVlLiAgSG93ZXZlciwgbG9va3VwIGlzIG11Y2ggZmFzdGVyIHRoYW4gYSBoYXNoIHRhYmxlLgorKiBBIHRyaWUgb2YgYW55IHByaW1pdGl2ZSBkYXRhIHR5cGUgc2VydmVzIHR3byBwdXJwb3NlczoKKyogPFVMIHR5cGUgPSByb3VuZD4KKyogICAgIDxMST5GYXN0IGFjY2VzcyBvZiB0aGUgaW5kZXhlZCB2YWx1ZXMuCisqICAgICA8TEk+U21hbGxlciBtZW1vcnkgZm9vdHByaW50LgorKiA8L1VMPgorKiBBIHRyaWUgaXMgY29tcG9zZWQgb2YgMiBpbmRleCBhcnJheSBhbmQgdmFsdWUgYXJyYXkuIENvbWJpbmluZyB0aGUgMiBpbmRleAorKiBhcnJheSwgd2UgY291bGQgZ2V0IHRoZSBpbmRpY2llcyBvZiBVbmljb2RlIGNoYXJhY3RlcnMgdG8gdGhlIHZhbHVlIGFycmF5LgorKiBUaGUgZmlyc3QgaW5kZXggYXJyYXkgd2lsbCBjb250YWluIGluZGV4ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgZmlyc3QgMTEgCisqIGJpdHMgb2YgYSAyMSBiaXQgY29kZXBvaW50LCB0aGUgc2Vjb25kIGluZGV4IGFycmF5IHdpbGwgY29udGFpbiBpbmRleGVzIAorKiBjb3JyZXNwb25kaW5nIHRvIHRoZSBuZXh0IDYgYml0cyBvZiB0aGUgY29kZSBwb2ludC4gVGhlIGxhc3QgYXJyYXkgd2lsbCAKKyogY29udGFpbiB0aGUgdmFsdWVzLiBIZW5jZSB0byBhY2Nlc3MgdGhlIHZhbHVlIG9mIGEgY29kZXBvaW50LCB3ZSBjYW4gdXNlIHRoZQorKiBmb2xsb3dpbmcgcHJvZ3JhbQorKiA8cD4KKyogICBpbnQgZmlyc3RpbmRleCA9IGNoID4+IEZJUlNUXzExX0JJVFNfU0hJRlQ7PGJyPgorKiAgIGludCBzZWNvbmRpbmRleCA9IGluZGV4MVtmaXJzdGluZGV4XSArIAorKiAgICAgICAgICAgICAgICAgICAgICAgKGNoID4+IE5FWFRfNl9CSVRTX1NISUZUKSAmIE5FWFRfNl9CSVRTX01BU0s7PGJyPgorKiAgIGludCB0aGlyZGluZGV4ID0gaW5kZXgyW3NlY29uZGluZGV4XSArIGNoICYgTEFTVF9GT1VSX0JJVFNfTUFTSzs8YnI+ICAgIAorKiAgIGYoY2gpID0gdmFsdWVbdGhpcmRpbmRleF07PGJyPgorKiA8L3A+CisqIEB2ZXJzaW9uICAgICAgICAgICAgJFJldmlzaW9uOiAxLjIgJAorKiBAYXV0aG9yICAgICAgICAgICAgIFN5biBXZWUgUXVlaworKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBCeXRlVHJpZQoreworICAvLyBjb25zdHJ1Y3RvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgCisgIC8qKgorICAqIGNvbnN0cnVjdG9yIAorICAqIEBwYXJhbSBhcnJheSBvZiBkYXRhIHRvIGJlIHBvcHVsYXRlZCBpbnRvIHRyaWUKKyAgKi8KKyAgcHVibGljIEJ5dGVUcmllKGJ5dGUgYXJyYXlbXSkKKyAgeworICAgIGJ1aWxkKGFycmF5KTsKKyAgfQorICAKKyAgLyoqCisgICogY29uc3RydWN0b3IgdGhhdCBhc3NpZ25zIHRyaWUgdGhlIGFyZ3VtZW50IHZhbHVlcy4gQXJyYXlzIGFyZSBub3QgCisgICogZHVwbGljYXRlZC4KKyAgKiBAcGFyYW0gc3RhZ2UxIGFycmF5IG9mIHRoZSBmaXJzdCBzZXQgb2YgaW5kZXhlcworICAqIEBwYXJhbSBzdGFnZTIgYXJyYXkgb2YgdGhlIHNlY29uZCBzZXQgb2YgaW5kZXhlcworICAqIEBwYXJhbSBzdGFnZTMgYXJyYXkgb2YgZGF0YQorICAqLworICBwdWJsaWMgQnl0ZVRyaWUoaW50IHN0YWdlMVtdLCBpbnQgc3RhZ2UyW10sIGJ5dGUgc3RhZ2UzW10pCisgIHsKKyAgICBtX3N0YWdlMV8gPSBzdGFnZTE7CisgICAgbV9zdGFnZTJfID0gc3RhZ2UyOworICAgIG1fc3RhZ2UzXyA9IHN0YWdlMzsKKyAgfQorICAKKyAgLy8gcHVibGljIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAKKyAgLyoqCisgICogR2V0dGluZyB0aGUgdHJpZSBkYXRhIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFyZ3VtZW50IGluZGV4LgorICAqIEBwYXJhbSBpbmRleCB0byBiZSBtYW5pcHVsYXRlZCBpbnRvIGNvcnJlc3BvbmRpbmcgdHJpZSBpbmRleAorICAqIEByZXR1cm4gdHJpZSB2YWx1ZSBhdCBpbmRleAorICAqLworICBwdWJsaWMgYnl0ZSBnZXRWYWx1ZShpbnQgaW5kZXgpCisgIHsKKyAgICAvLyBpbmRleCBvZiB0aGUgZmlyc3QgYWNjZXNzIHRvIHRoZSBkYXRhYmFzZSAKKyAgICBpbnQgaW5kZXgxID0gaW5kZXggPj4gU1RBR0VfMV9TSElGVF87CisgICAgLy8gaW5kZXggb2YgdGhlIHNlY29uZCBhY2Nlc3MgdG8gdGhlIGRhdGFiYXNlCisgICAgaW50IGluZGV4MiA9IG1fc3RhZ2UxX1tpbmRleDFdICsgCisgICAgICAgICAgICAgICAgICgoaW5kZXggPj4gU1RBR0VfMl9TSElGVF8pICYgU1RBR0VfMl9NQVNLX0FGVEVSX1NISUZUXyk7CisgICAgLy8gaW5kZXggb2YgdGhlIHRoaXJkIGFjY2VzcyB0byB0aGUgZGF0YWJhc2UKKyAgICBpbnQgaW5kZXgzID0gbV9zdGFnZTJfW2luZGV4Ml0gKyAoaW5kZXggJiBTVEFHRV8zX01BU0tfKTsgIAorICAgIC8vIHJldHJpZXZlcyB2YWx1ZQorICAgIHJldHVybiBtX3N0YWdlM19baW5kZXgzXTsKKyAgfQorICAKKyAgLy8gcHJpdmF0ZSBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIAorICAvKioKKyAgKiBTdGFnZSAxIGluZGV4IGFycmF5CisgICovCisgIHByaXZhdGUgaW50IG1fc3RhZ2UxX1tdOworICAKKyAgLyoqCisgICogU3RhZ2UgMiBpbmRleCBhcnJheQorICAqLworICBwcml2YXRlIGludCBtX3N0YWdlMl9bXTsKKyAgCisgIC8qKgorICAqIFN0YWdlIDMgdmFsdWUgYXJyYXkKKyAgKi8KKyAgcHJpdmF0ZSBieXRlIG1fc3RhZ2UzX1tdOworICAKKyAgLyoqCisgICogU3RhZ2UgMSBzaGlmdAorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU1RBR0VfMV9TSElGVF8gPSAxMDsKKyAgCisgIC8qKgorICAqIFN0YWdlIDIgc2hpZnQKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNUQUdFXzJfU0hJRlRfID0gNDsKKyAgCisgIC8qKgorICAqIFN0YWdlIDIgbWFzaworICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU1RBR0VfMl9NQVNLX0FGVEVSX1NISUZUXyA9IDB4M0Y7CisgIAorICAvKioKKyAgKiBTdGFnZSAzIG1hc2sKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNUQUdFXzNfTUFTS18gPSAweEY7CisgIAorICAvKioKKyAgKiBOdW1iZXIgb2YgbnVtYmVycyBwb3NzaWJsZSBmcm9tIGEgNCBiaXQgdHlwZQorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ09VTlRfNF9CSVRfID0gMHgxMDsKKyAgCisgIC8qKgorICAqIE51bWJlciBvZiBudW1iZXJzIHBvc3NpYmxlIGZyb20gYSA2IGJpdCB0eXBlCisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDT1VOVF82X0JJVF8gPSAweDQwOworICAKKyAgLyoqCisgICogTnVtYmVyIG9mIG51bWJlcnMgcG9zc2libGUgZnJvbSB0aGUgZmlyc3QgMTcgYml0cyBvZiBhIGNvZGVwb2ludAorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ09VTlRfQ09ERVBPSU5UX0ZJUlNUXzE3X0JJVF8gPSAweDExMDAwMCA+PiA0OworICAKKyAgLyoqCisgICogTnVtYmVyIG9mIG51bWJlcnMgcG9zc2libGUgZnJvbSB0aGUgZmlyc3QgMTEgYml0cyBvZiBhIGNvZGVwb2ludAorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ09VTlRfQ09ERVBPSU5UX0ZJUlNUXzExX0JJVF8gPSAweDExMDAwMCA+PiAxMDsKKyAgCisgIC8vIHByaXZhdGUgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAKKyAgLyoqCisgICogQnVpbGRpbmcgdGhlIHRyaWUgZnJvbSBhIGFyZ3VtZW50IGFycmF5LgorICAqIEVhY2ggdW5pY29kZSBjaGFyYWN0ZXIgd2lsbCBiZSB1c2VkIHRvIGdlbmVyYXRlIGRhdGEuCisgICogQHBhcmFtIG91dHB1dCBmaWxlIHBhdGgKKyAgKi8KKyAgcHJpdmF0ZSB2b2lkIGJ1aWxkKGJ5dGUgYXJyYXlbXSkKKyAgeworICAgIGludCBjaCA9IDA7CisgICAgCisgICAgaW50IHN0YWdlMltdID0gbmV3IGludFtDT1VOVF9DT0RFUE9JTlRfRklSU1RfMTdfQklUX107CisgICAgYnl0ZSBzdGFnZTNbXSA9IG5ldyBieXRlW1VDaGFyYWN0ZXIuTUFYX1ZBTFVFID4+IDFdOworICAgIGludCBzaXplID0gVHJpZUJ1aWxkZXIuYnVpbGQoYXJyYXksIDAsIGFycmF5Lmxlbmd0aCwgQ09VTlRfNF9CSVRfLCBzdGFnZTIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2UzKTsKKyAgICAKKyAgICBtX3N0YWdlM18gPSBuZXcgYnl0ZVtzaXplXTsKKyAgICBTeXN0ZW0uYXJyYXljb3B5KHN0YWdlMywgMCwgbV9zdGFnZTNfLCAwLCBzaXplKTsKKyAgICAKKyAgICBtX3N0YWdlMV8gPSBuZXcgaW50W0NPVU5UX0NPREVQT0lOVF9GSVJTVF8xMV9CSVRfXTsKKyAgICBzaXplID0gVHJpZUJ1aWxkZXIuYnVpbGQoc3RhZ2UyLCAwLCBzdGFnZTIubGVuZ3RoLCBDT1VOVF82X0JJVF8sIG1fc3RhZ2UxXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlMik7CisgICAgbV9zdGFnZTJfID0gbmV3IGludFtzaXplXTsKKyAgICBTeXN0ZW0uYXJyYXljb3B5KHN0YWdlMiwgMCwgbV9zdGFnZTJfLCAwLCBzaXplKTsKKyAgfQorICAKKyAgLyoqCisgICogQ29udmVydHMgdHJpZSB0byBhIHJlYWRhYmxlIGZvcm1hdAorICAqIEByZXR1cm4gc3RyaW5nIHZlcnNpb24gb2YgdGhlIHRyaWUKKyAgKi8KKyAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCisgIHsKKyAgICBpbnQgc2l6ZSA9IG1fc3RhZ2UxXy5sZW5ndGg7CisgICAgaW50IGNvdW50ID0gMDsKKyAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigiaW50IG1fc3RhZ2UxX1tdID0ge1xuIik7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKSB7CisgICAgICByZXN1bHQuYXBwZW5kKCIweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1fc3RhZ2UxX1tpXSkpOworICAgICAgaWYgKGkgIT0gc2l6ZSAtIDEpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiLCAiKTsKKyAgICAgIH0KKyAgICAgIGNvdW50ICsrOworICAgICAgaWYgKGNvdW50ID09IDEwKSB7CisgICAgICAgIGNvdW50ID0gMDsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiXG4iKTsKKyAgICAgIH0KKyAgICB9CisgICAgcmVzdWx0LmFwcGVuZCgiXG59XG5cbiIpOworICAgIHNpemUgPSBtX3N0YWdlMl8ubGVuZ3RoOworICAgIHJlc3VsdC5hcHBlbmQoImludCBtX3N0YWdlMl9bXSA9IHtcbiIpOworICAgIGNvdW50ID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkgKyspIHsKKyAgICAgIHJlc3VsdC5hcHBlbmQoIjB4IiArIEludGVnZXIudG9IZXhTdHJpbmcobV9zdGFnZTJfW2ldKSk7CisgICAgICBpZiAoaSAhPSBzaXplIC0gMSkgeworICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIpOworICAgICAgfQorICAgICAgY291bnQgKys7CisgICAgICBpZiAoY291bnQgPT0gMTApIHsKKyAgICAgICAgY291bnQgPSAwOworICAgICAgICByZXN1bHQuYXBwZW5kKCJcbiIpOworICAgICAgfQorICAgIH0KKyAgICByZXN1bHQuYXBwZW5kKCJcbn1cblxuIik7CisgICAgc2l6ZSA9IG1fc3RhZ2UzXy5sZW5ndGg7CisgICAgcmVzdWx0LmFwcGVuZCgiYnl0ZSBtX3N0YWdlM19bXSA9IHtcbiIpOworICAgIGNvdW50ID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkgKyspIHsKKyAgICAgIHJlc3VsdC5hcHBlbmQoIjB4IiArIEludGVnZXIudG9IZXhTdHJpbmcoKGNoYXIpbV9zdGFnZTNfW2ldKSk7CisgICAgICBpZiAoaSAhPSBzaXplIC0gMSkgeworICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIpOworICAgICAgfQorICAgICAgY291bnQgKys7CisgICAgICBpZiAoY291bnQgPT0gMTApIHsKKyAgICAgICAgY291bnQgPSAwOworICAgICAgICByZXN1bHQuYXBwZW5kKCJcbiIpOworICAgICAgfQorICAgIH0KKyAgICByZXN1bHQuYXBwZW5kKCJcbn0iKTsKKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL0NhbGVuZGFyLmphdmEgYi9zcmMvY29tL2libS91dGlsL0NhbGVuZGFyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2ExOWZmMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvQ2FsZW5kYXIuamF2YQpAQCAtMCwwICsxLDQ0NjcgQEAKKy8qCisgKiBAKCMpQ2FsZW5kYXIuamF2YQkxLjQ4IDk5LzExLzA1CisgKgorICogKEMpIENvcHlyaWdodCBUYWxpZ2VudCwgSW5jLiAxOTk2LTE5OTggLSBBbGwgUmlnaHRzIFJlc2VydmVkCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk2LTE5OTggLSBBbGwgUmlnaHRzIFJlc2VydmVkCisgKgorICogUG9ydGlvbnMgY29weXJpZ2h0IChjKSAxOTk2LTE5OTggU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqICAgVGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhpcyBzb3VyY2UgY29kZSBhbmQgZG9jdW1lbnRhdGlvbiBpcyBjb3B5cmlnaHRlZAorICogYW5kIG93bmVkIGJ5IFRhbGlnZW50LCBJbmMuLCBhIHdob2xseS1vd25lZCBzdWJzaWRpYXJ5IG9mIElCTS4gVGhlc2UKKyAqIG1hdGVyaWFscyBhcmUgcHJvdmlkZWQgdW5kZXIgdGVybXMgb2YgYSBMaWNlbnNlIEFncmVlbWVudCBiZXR3ZWVuIFRhbGlnZW50CisgKiBhbmQgU3VuLiBUaGlzIHRlY2hub2xvZ3kgaXMgcHJvdGVjdGVkIGJ5IG11bHRpcGxlIFVTIGFuZCBJbnRlcm5hdGlvbmFsCisgKiBwYXRlbnRzLiBUaGlzIG5vdGljZSBhbmQgYXR0cmlidXRpb24gdG8gVGFsaWdlbnQgbWF5IG5vdCBiZSByZW1vdmVkLgorICogICBUYWxpZ2VudCBpcyBhIHJlZ2lzdGVyZWQgdHJhZGVtYXJrIG9mIFRhbGlnZW50LCBJbmMuCisgKgorICogUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZQorICogYW5kIGl0cyBkb2N1bWVudGF0aW9uIGZvciBOT04tQ09NTUVSQ0lBTCBwdXJwb3NlcyBhbmQgd2l0aG91dAorICogZmVlIGlzIGhlcmVieSBncmFudGVkIHByb3ZpZGVkIHRoYXQgdGhpcyBjb3B5cmlnaHQgbm90aWNlCisgKiBhcHBlYXJzIGluIGFsbCBjb3BpZXMuIFBsZWFzZSByZWZlciB0byB0aGUgZmlsZSAiY29weXJpZ2h0Lmh0bWwiCisgKiBmb3IgZnVydGhlciBpbXBvcnRhbnQgY29weXJpZ2h0IGFuZCBsaWNlbnNpbmcgaW5mb3JtYXRpb24uCisgKgorICogU1VOIE1BS0VTIE5PIFJFUFJFU0VOVEFUSU9OUyBPUiBXQVJSQU5USUVTIEFCT1VUIFRIRSBTVUlUQUJJTElUWSBPRgorICogVEhFIFNPRlRXQVJFLCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVECisgKiBUTyBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQQorICogUEFSVElDVUxBUiBQVVJQT1NFLCBPUiBOT04tSU5GUklOR0VNRU5ULiBTVU4gU0hBTEwgTk9UIEJFIExJQUJMRSBGT1IKKyAqIEFOWSBEQU1BR0VTIFNVRkZFUkVEIEJZIExJQ0VOU0VFIEFTIEEgUkVTVUxUIE9GIFVTSU5HLCBNT0RJRllJTkcgT1IKKyAqIERJU1RSSUJVVElORyBUSElTIFNPRlRXQVJFIE9SIElUUyBERVJJVkFUSVZFUy4KKyAqCisgKi8KKworcGFja2FnZSBjb20uaWJtLnV0aWw7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworaW1wb3J0IGphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZTsKK2ltcG9ydCBqYXZhLnV0aWwuTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uOworaW1wb3J0IGphdmEudGV4dC5NZXNzYWdlRm9ybWF0OworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5PYmplY3RJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLk9iamVjdE91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKK2ltcG9ydCBjb20uaWJtLnRleHQuRGF0ZUZvcm1hdDsKK2ltcG9ydCBjb20uaWJtLnRleHQuRGF0ZUZvcm1hdFN5bWJvbHM7CitpbXBvcnQgY29tLmlibS50ZXh0LlNpbXBsZURhdGVGb3JtYXQ7CisKKy8qKgorICogPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IGlzIGFuIGFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGNvbnZlcnRpbmcgYmV0d2VlbgorICogYSA8Y29kZT5EYXRlPC9jb2RlPiBvYmplY3QgYW5kIGEgc2V0IG9mIGludGVnZXIgZmllbGRzIHN1Y2ggYXMKKyAqIDxjb2RlPllFQVI8L2NvZGU+LCA8Y29kZT5NT05USDwvY29kZT4sIDxjb2RlPkRBWTwvY29kZT4sIDxjb2RlPkhPVVI8L2NvZGU+LAorICogYW5kIHNvIG9uLiAoQSA8Y29kZT5EYXRlPC9jb2RlPiBvYmplY3QgcmVwcmVzZW50cyBhIHNwZWNpZmljIGluc3RhbnQgaW4KKyAqIHRpbWUgd2l0aCBtaWxsaXNlY29uZCBwcmVjaXNpb24uIFNlZQorICoge0BsaW5rIERhdGV9CisgKiBmb3IgaW5mb3JtYXRpb24gYWJvdXQgdGhlIDxjb2RlPkRhdGU8L2NvZGU+IGNsYXNzLikKKyAqCisgKiA8cD48Yj5Ob3RlOjwvYj4gIFRoaXMgY2xhc3MgaXMgc2ltaWxhciwgYnV0IG5vdCBpZGVudGljYWwsIHRvIHRoZSBjbGFzcworICogPGNvZGU+amF2YS51dGlsLkNhbGVuZGFyPC9jb2RlPi4gIENoYW5nZXMgYXJlIGRldGFpbGVkIGJlbG93LgorICoKKyAqIDxwPgorICogU3ViY2xhc3NlcyBvZiA8Y29kZT5DYWxlbmRhcjwvY29kZT4gaW50ZXJwcmV0IGEgPGNvZGU+RGF0ZTwvY29kZT4KKyAqIGFjY29yZGluZyB0byB0aGUgcnVsZXMgb2YgYSBzcGVjaWZpYyBjYWxlbmRhciBzeXN0ZW0uICBJQ1U0SiBjb250YWlucworICogc2V2ZXJhbCBzdWJjbGFzc2VzIGltcGxlbWVudGluZyBkaWZmZXJlbnQgaW50ZXJuYXRpb25hbCBjYWxlbmRhciBzeXN0ZW1zLgorICoKKyAqIDxwPgorICogTGlrZSBvdGhlciBsb2NhbGUtc2Vuc2l0aXZlIGNsYXNzZXMsIDxjb2RlPkNhbGVuZGFyPC9jb2RlPiBwcm92aWRlcyBhCisgKiBjbGFzcyBtZXRob2QsIDxjb2RlPmdldEluc3RhbmNlPC9jb2RlPiwgZm9yIGdldHRpbmcgYSBnZW5lcmFsbHkgdXNlZnVsCisgKiBvYmplY3Qgb2YgdGhpcyB0eXBlLiA8Y29kZT5DYWxlbmRhcjwvY29kZT4ncyA8Y29kZT5nZXRJbnN0YW5jZTwvY29kZT4gbWV0aG9kCisgKiByZXR1cm5zIGEgPGNvZGU+R3JlZ29yaWFuQ2FsZW5kYXI8L2NvZGU+IG9iamVjdCB3aG9zZQorICogdGltZSBmaWVsZHMgaGF2ZSBiZWVuIGluaXRpYWxpemVkIHdpdGggdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZToKKyAqIDxibG9ja3F1b3RlPgorICogPHByZT4KKyAqIENhbGVuZGFyIHJpZ2h0Tm93ID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKyAqIDwvcHJlPgorICogPC9ibG9ja3F1b3RlPgorICoKKyAqIDxwPkEgPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IG9iamVjdCBjYW4gcHJvZHVjZSBhbGwgdGhlIHRpbWUgZmllbGQgdmFsdWVzCisgKiBuZWVkZWQgdG8gaW1wbGVtZW50IHRoZSBkYXRlLXRpbWUgZm9ybWF0dGluZyBmb3IgYSBwYXJ0aWN1bGFyIGxhbmd1YWdlIGFuZAorICogY2FsZW5kYXIgc3R5bGUgKGZvciBleGFtcGxlLCBKYXBhbmVzZS1HcmVnb3JpYW4sIEphcGFuZXNlLVRyYWRpdGlvbmFsKS4KKyAqIDxjb2RlPkNhbGVuZGFyPC9jb2RlPiBkZWZpbmVzIHRoZSByYW5nZSBvZiB2YWx1ZXMgcmV0dXJuZWQgYnkgY2VydGFpbiBmaWVsZHMsCisgKiBhcyB3ZWxsIGFzIHRoZWlyIG1lYW5pbmcuICBGb3IgZXhhbXBsZSwgdGhlIGZpcnN0IG1vbnRoIG9mIHRoZSB5ZWFyIGhhcyB2YWx1ZQorICogPGNvZGU+TU9OVEg8L2NvZGU+ID09IDxjb2RlPkpBTlVBUlk8L2NvZGU+IGZvciBhbGwgY2FsZW5kYXJzLiAgT3RoZXIgdmFsdWVzCisgKiBhcmUgZGVmaW5lZCBieSB0aGUgY29uY3JldGUgc3ViY2xhc3MsIHN1Y2ggYXMgPGNvZGU+RVJBPC9jb2RlPiBhbmQKKyAqIDxjb2RlPllFQVI8L2NvZGU+LiAgU2VlIGluZGl2aWR1YWwgZmllbGQgZG9jdW1lbnRhdGlvbiBhbmQgc3ViY2xhc3MKKyAqIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMuCisgKgorICogPHA+V2hlbiBhIDxjb2RlPkNhbGVuZGFyPC9jb2RlPiBpcyA8ZW0+bGVuaWVudDwvZW0+LCBpdCBhY2NlcHRzIGEgd2lkZXIgcmFuZ2UKKyAqIG9mIGZpZWxkIHZhbHVlcyB0aGFuIGl0IHByb2R1Y2VzLiAgRm9yIGV4YW1wbGUsIGEgbGVuaWVudAorICogPGNvZGU+R3JlZ29yaWFuQ2FsZW5kYXI8L2NvZGU+IGludGVycHJldHMgPGNvZGU+TU9OVEg8L2NvZGU+ID09CisgKiA8Y29kZT5KQU5VQVJZPC9jb2RlPiwgPGNvZGU+REFZX09GX01PTlRIPC9jb2RlPiA9PSAzMiBhcyBGZWJydWFyeSAxLiAgQQorICogbm9uLWxlbmllbnQgPGNvZGU+R3JlZ29yaWFuQ2FsZW5kYXI8L2NvZGU+IHRocm93cyBhbiBleGNlcHRpb24gd2hlbiBnaXZlbgorICogb3V0LW9mLXJhbmdlIGZpZWxkIHNldHRpbmdzLiAgV2hlbiBjYWxlbmRhcnMgcmVjb21wdXRlIGZpZWxkIHZhbHVlcyBmb3IKKyAqIHJldHVybiBieSA8Y29kZT5nZXQoKTwvY29kZT4sIHRoZXkgbm9ybWFsaXplIHRoZW0uICBGb3IgZXhhbXBsZSwgYQorICogPGNvZGU+R3JlZ29yaWFuQ2FsZW5kYXI8L2NvZGU+IGFsd2F5cyBwcm9kdWNlcyA8Y29kZT5EQVlfT0ZfTU9OVEg8L2NvZGU+CisgKiB2YWx1ZXMgYmV0d2VlbiAxIGFuZCB0aGUgbGVuZ3RoIG9mIHRoZSBtb250aC4KKyAqCisgKiA8cD48Y29kZT5DYWxlbmRhcjwvY29kZT4gZGVmaW5lcyBhIGxvY2FsZS1zcGVjaWZpYyBzZXZlbiBkYXkgd2VlayB1c2luZyB0d28KKyAqIHBhcmFtZXRlcnM6IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgYW5kIHRoZSBtaW5pbWFsIGRheXMgaW4gZmlyc3Qgd2VlaworICogKGZyb20gMSB0byA3KS4gIFRoZXNlIG51bWJlcnMgYXJlIHRha2VuIGZyb20gdGhlIGxvY2FsZSByZXNvdXJjZSBkYXRhIHdoZW4gYQorICogPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IGlzIGNvbnN0cnVjdGVkLiAgVGhleSBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgZXhwbGljaXRseQorICogdGhyb3VnaCB0aGUgQVBJLgorICoKKyAqIDxwPldoZW4gc2V0dGluZyBvciBnZXR0aW5nIHRoZSA8Y29kZT5XRUVLX09GX01PTlRIPC9jb2RlPiBvcgorICogPGNvZGU+V0VFS19PRl9ZRUFSPC9jb2RlPiBmaWVsZHMsIDxjb2RlPkNhbGVuZGFyPC9jb2RlPiBtdXN0IGRldGVybWluZSB0aGUKKyAqIGZpcnN0IHdlZWsgb2YgdGhlIG1vbnRoIG9yIHllYXIgYXMgYSByZWZlcmVuY2UgcG9pbnQuICBUaGUgZmlyc3Qgd2VlayBvZiBhCisgKiBtb250aCBvciB5ZWFyIGlzIGRlZmluZWQgYXMgdGhlIGVhcmxpZXN0IHNldmVuIGRheSBwZXJpb2QgYmVnaW5uaW5nIG9uCisgKiA8Y29kZT5nZXRGaXJzdERheU9mV2VlaygpPC9jb2RlPiBhbmQgY29udGFpbmluZyBhdCBsZWFzdAorICogPGNvZGU+Z2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpPC9jb2RlPiBkYXlzIG9mIHRoYXQgbW9udGggb3IgeWVhci4gIFdlZWtzCisgKiBudW1iZXJlZCAuLi4sIC0xLCAwIHByZWNlZGUgdGhlIGZpcnN0IHdlZWs7IHdlZWtzIG51bWJlcmVkIDIsIDMsLi4uIGZvbGxvdworICogaXQuICBOb3RlIHRoYXQgdGhlIG5vcm1hbGl6ZWQgbnVtYmVyaW5nIHJldHVybmVkIGJ5IDxjb2RlPmdldCgpPC9jb2RlPiBtYXkgYmUKKyAqIGRpZmZlcmVudC4gIEZvciBleGFtcGxlLCBhIHNwZWNpZmljIDxjb2RlPkNhbGVuZGFyPC9jb2RlPiBzdWJjbGFzcyBtYXkKKyAqIGRlc2lnbmF0ZSB0aGUgd2VlayBiZWZvcmUgd2VlayAxIG9mIGEgeWVhciBhcyB3ZWVrIDxlbT5uPC9lbT4gb2YgdGhlIHByZXZpb3VzCisgKiB5ZWFyLgorICoKKyAqIDxwPiBXaGVuIGNvbXB1dGluZyBhIDxjb2RlPkRhdGU8L2NvZGU+IGZyb20gdGltZSBmaWVsZHMsIHR3byBzcGVjaWFsCisgKiBjaXJjdW1zdGFuY2VzIG1heSBhcmlzZTogdGhlcmUgbWF5IGJlIGluc3VmZmljaWVudCBpbmZvcm1hdGlvbiB0byBjb21wdXRlIHRoZQorICogPGNvZGU+RGF0ZTwvY29kZT4gKHN1Y2ggYXMgb25seSB5ZWFyIGFuZCBtb250aCBidXQgbm8gZGF5IGluIHRoZSBtb250aCksIG9yCisgKiB0aGVyZSBtYXkgYmUgaW5jb25zaXN0ZW50IGluZm9ybWF0aW9uIChzdWNoIGFzICJUdWVzZGF5LCBKdWx5IDE1LCAxOTk2IiAtLQorICogSnVseSAxNSwgMTk5NiBpcyBhY3R1YWxseSBhIE1vbmRheSkuCisgKgorICogPHA+CisgKiA8c3Ryb25nPkluc3VmZmljaWVudCBpbmZvcm1hdGlvbi48L3N0cm9uZz4gVGhlIGNhbGVuZGFyIHdpbGwgdXNlIGRlZmF1bHQKKyAqIGluZm9ybWF0aW9uIHRvIHNwZWNpZnkgdGhlIG1pc3NpbmcgZmllbGRzLiBUaGlzIG1heSB2YXJ5IGJ5IGNhbGVuZGFyOyBmb3IKKyAqIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIsIHRoZSBkZWZhdWx0IGZvciBhIGZpZWxkIGlzIHRoZSBzYW1lIGFzIHRoYXQgb2YgdGhlCisgKiBzdGFydCBvZiB0aGUgZXBvY2g6IGkuZS4sIFlFQVIgPSAxOTcwLCBNT05USCA9IEpBTlVBUlksIERBVEUgPSAxLCBldGMuCisgKgorICogPHA+CisgKiA8c3Ryb25nPkluY29uc2lzdGVudCBpbmZvcm1hdGlvbi48L3N0cm9uZz4gSWYgZmllbGRzIGNvbmZsaWN0LCB0aGUgY2FsZW5kYXIKKyAqIHdpbGwgZ2l2ZSBwcmVmZXJlbmNlIHRvIGZpZWxkcyBzZXQgbW9yZSByZWNlbnRseS4gRm9yIGV4YW1wbGUsIHdoZW4KKyAqIGRldGVybWluaW5nIHRoZSBkYXksIHRoZSBjYWxlbmRhciB3aWxsIGxvb2sgZm9yIG9uZSBvZiB0aGUgZm9sbG93aW5nCisgKiBjb21iaW5hdGlvbnMgb2YgZmllbGRzLiAgVGhlIG1vc3QgcmVjZW50IGNvbWJpbmF0aW9uLCBhcyBkZXRlcm1pbmVkIGJ5IHRoZQorICogbW9zdCByZWNlbnRseSBzZXQgc2luZ2xlIGZpZWxkLCB3aWxsIGJlIHVzZWQuCisgKgorICogPGJsb2NrcXVvdGU+CisgKiA8cHJlPgorICogTU9OVEggKyBEQVlfT0ZfTU9OVEgKKyAqIE1PTlRIICsgV0VFS19PRl9NT05USCArIERBWV9PRl9XRUVLCisgKiBNT05USCArIERBWV9PRl9XRUVLX0lOX01PTlRIICsgREFZX09GX1dFRUsKKyAqIERBWV9PRl9ZRUFSCisgKiBEQVlfT0ZfV0VFSyArIFdFRUtfT0ZfWUVBUgorICogPC9wcmU+CisgKiA8L2Jsb2NrcXVvdGU+CisgKgorICogRm9yIHRoZSB0aW1lIG9mIGRheToKKyAqCisgKiA8YmxvY2txdW90ZT4KKyAqIDxwcmU+CisgKiBIT1VSX09GX0RBWQorICogQU1fUE0gKyBIT1VSCisgKiA8L3ByZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqCisgKiA8cD4KKyAqIDxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gZm9yIHNvbWUgbm9uLUdyZWdvcmlhbiBjYWxlbmRhcnMsIGRpZmZlcmVudAorICogZmllbGRzIG1heSBiZSBuZWNlc3NhcnkgZm9yIGNvbXBsZXRlIGRpc2FtYmlndWF0aW9uLiBGb3IgZXhhbXBsZSwgYSBmdWxsCisgKiBzcGVjaWZpY2F0aW9uIG9mIHRoZSBoaXN0b3JpYWwgQXJhYmljIGFzdHJvbm9taWNhbCBjYWxlbmRhciByZXF1aXJlcyB5ZWFyLAorICogbW9udGgsIGRheS1vZi1tb250aCA8ZW0+YW5kPC9lbT4gZGF5LW9mLXdlZWsgaW4gc29tZSBjYXNlcy4KKyAqCisgKiA8cD4KKyAqIDxzdHJvbmc+Tm90ZTo8L3N0cm9uZz4gVGhlcmUgYXJlIGNlcnRhaW4gcG9zc2libGUgYW1iaWd1aXRpZXMgaW4KKyAqIGludGVycHJldGF0aW9uIG9mIGNlcnRhaW4gc2luZ3VsYXIgdGltZXMsIHdoaWNoIGFyZSByZXNvbHZlZCBpbiB0aGUKKyAqIGZvbGxvd2luZyB3YXlzOgorICogPG9sPgorICogICAgIDxsaT4gMjQ6MDA6MDAgImJlbG9uZ3MiIHRvIHRoZSBmb2xsb3dpbmcgZGF5LiBUaGF0IGlzLAorICogICAgICAgICAgMjM6NTkgb24gRGVjIDMxLCAxOTY5ICZsdDsgMjQ6MDAgb24gSmFuIDEsIDE5NzAgJmx0OyAyNDowMTowMCBvbiBKYW4gMSwgMTk3MAorICoKKyAqICAgICA8bGk+IEFsdGhvdWdoIGhpc3RvcmljYWxseSBub3QgcHJlY2lzZSwgbWlkbmlnaHQgYWxzbyBiZWxvbmdzIHRvICJhbSIsCisgKiAgICAgICAgICBhbmQgbm9vbiBiZWxvbmdzIHRvICJwbSIsIHNvIG9uIHRoZSBzYW1lIGRheSwKKyAqICAgICAgICAgIDEyOjAwIGFtIChtaWRuaWdodCkgJmx0OyAxMjowMSBhbSwgYW5kIDEyOjAwIHBtIChub29uKSAmbHQ7IDEyOjAxIHBtCisgKiA8L29sPgorICoKKyAqIDxwPgorICogVGhlIGRhdGUgb3IgdGltZSBmb3JtYXQgc3RyaW5ncyBhcmUgbm90IHBhcnQgb2YgdGhlIGRlZmluaXRpb24gb2YgYQorICogY2FsZW5kYXIsIGFzIHRob3NlIG11c3QgYmUgbW9kaWZpYWJsZSBvciBvdmVycmlkYWJsZSBieSB0aGUgdXNlciBhdAorICogcnVudGltZS4gVXNlIHtAbGluayBEYXRlRm9ybWF0fQorICogdG8gZm9ybWF0IGRhdGVzLgorICoKKyAqIDxwPjxzdHJvbmc+RmllbGQgbWFuaXB1bGF0aW9uIG1ldGhvZHM8L3N0cm9uZz48L3A+CisgKiAKKyAqIDxwPjxjb2RlPkNhbGVuZGFyPC9jb2RlPiBmaWVsZHMgY2FuIGJlIGNoYW5nZWQgdXNpbmcgdGhyZWUgbWV0aG9kczoKKyAqIDxjb2RlPnNldCgpPC9jb2RlPiwgPGNvZGU+YWRkKCk8L2NvZGU+LCBhbmQgPGNvZGU+cm9sbCgpPC9jb2RlPi48L3A+CisgKiAKKyAqIDxwPjxzdHJvbmc+PGNvZGU+c2V0KGYsIHZhbHVlKTwvY29kZT48L3N0cm9uZz4gY2hhbmdlcyBmaWVsZAorICogPGNvZGU+ZjwvY29kZT4gdG8gPGNvZGU+dmFsdWU8L2NvZGU+LiAgSW4gYWRkaXRpb24sIGl0IHNldHMgYW4KKyAqIGludGVybmFsIG1lbWJlciB2YXJpYWJsZSB0byBpbmRpY2F0ZSB0aGF0IGZpZWxkIDxjb2RlPmY8L2NvZGU+IGhhcworICogYmVlbiBjaGFuZ2VkLiBBbHRob3VnaCBmaWVsZCA8Y29kZT5mPC9jb2RlPiBpcyBjaGFuZ2VkIGltbWVkaWF0ZWx5LAorICogdGhlIGNhbGVuZGFyJ3MgbWlsbGlzZWNvbmRzIGlzIG5vdCByZWNvbXB1dGVkIHVudGlsIHRoZSBuZXh0IGNhbGwgdG8KKyAqIDxjb2RlPmdldCgpPC9jb2RlPiwgPGNvZGU+Z2V0VGltZSgpPC9jb2RlPiwgb3IKKyAqIDxjb2RlPmdldFRpbWVJbk1pbGxpcygpPC9jb2RlPiBpcyBtYWRlLiBUaHVzLCBtdWx0aXBsZSBjYWxscyB0bworICogPGNvZGU+c2V0KCk8L2NvZGU+IGRvIG5vdCB0cmlnZ2VyIG11bHRpcGxlLCB1bm5lY2Vzc2FyeQorICogY29tcHV0YXRpb25zLiBBcyBhIHJlc3VsdCBvZiBjaGFuZ2luZyBhIGZpZWxkIHVzaW5nCisgKiA8Y29kZT5zZXQoKTwvY29kZT4sIG90aGVyIGZpZWxkcyBtYXkgYWxzbyBjaGFuZ2UsIGRlcGVuZGluZyBvbiB0aGUKKyAqIGZpZWxkLCB0aGUgZmllbGQgdmFsdWUsIGFuZCB0aGUgY2FsZW5kYXIgc3lzdGVtLiBJbiBhZGRpdGlvbiwKKyAqIDxjb2RlPmdldChmKTwvY29kZT4gd2lsbCBub3QgbmVjZXNzYXJpbHkgcmV0dXJuIDxjb2RlPnZhbHVlPC9jb2RlPgorICogYWZ0ZXIgdGhlIGZpZWxkcyBoYXZlIGJlZW4gcmVjb21wdXRlZC4gVGhlIHNwZWNpZmljcyBhcmUgZGV0ZXJtaW5lZCBieQorICogdGhlIGNvbmNyZXRlIGNhbGVuZGFyIGNsYXNzLjwvcD4KKyAqIAorICogPHA+PGVtPkV4YW1wbGU8L2VtPjogQ29uc2lkZXIgYSA8Y29kZT5HcmVnb3JpYW5DYWxlbmRhcjwvY29kZT4KKyAqIG9yaWdpbmFsbHkgc2V0IHRvIEF1Z3VzdCAzMSwgMTk5OS4gQ2FsbGluZyA8Y29kZT5zZXQoQ2FsZW5kYXIuTU9OVEgsCisgKiBDYWxlbmRhci5TRVBURU1CRVIpPC9jb2RlPiBzZXRzIHRoZSBjYWxlbmRhciB0byBTZXB0ZW1iZXIgMzEsCisgKiAxOTk5LiBUaGlzIGlzIGEgdGVtcG9yYXJ5IGludGVybmFsIHJlcHJlc2VudGF0aW9uIHRoYXQgcmVzb2x2ZXMgdG8KKyAqIE9jdG9iZXIgMSwgMTk5OSBpZiA8Y29kZT5nZXRUaW1lKCk8L2NvZGU+aXMgdGhlbiBjYWxsZWQuIEhvd2V2ZXIsIGEKKyAqIGNhbGwgdG8gPGNvZGU+c2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCwgMzApPC9jb2RlPiBiZWZvcmUgdGhlIGNhbGwgdG8KKyAqIDxjb2RlPmdldFRpbWUoKTwvY29kZT4gc2V0cyB0aGUgY2FsZW5kYXIgdG8gU2VwdGVtYmVyIDMwLCAxOTk5LCBzaW5jZQorICogbm8gcmVjb21wdXRhdGlvbiBvY2N1cnMgYWZ0ZXIgPGNvZGU+c2V0KCk8L2NvZGU+IGl0c2VsZi48L3A+CisgKiAKKyAqIDxwPjxzdHJvbmc+PGNvZGU+YWRkKGYsIGRlbHRhKTwvY29kZT48L3N0cm9uZz4gYWRkcyA8Y29kZT5kZWx0YTwvY29kZT4KKyAqIHRvIGZpZWxkIDxjb2RlPmY8L2NvZGU+LiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgPGNvZGU+c2V0KGYsCisgKiBnZXQoZikgKyBkZWx0YSk8L2NvZGU+IHdpdGggdHdvIGFkanVzdG1lbnRzOjwvcD4KKyAqIAorICogPGJsb2NrcXVvdGU+CisgKiAgIDxwPjxzdHJvbmc+QWRkIHJ1bGUgMTwvc3Ryb25nPi4gVGhlIHZhbHVlIG9mIGZpZWxkIDxjb2RlPmY8L2NvZGU+CisgKiAgIGFmdGVyIHRoZSBjYWxsIG1pbnVzIHRoZSB2YWx1ZSBvZiBmaWVsZCA8Y29kZT5mPC9jb2RlPiBiZWZvcmUgdGhlCisgKiAgIGNhbGwgaXMgPGNvZGU+ZGVsdGE8L2NvZGU+LCBtb2R1bG8gYW55IG92ZXJmbG93IHRoYXQgaGFzIG9jY3VycmVkIGluCisgKiAgIGZpZWxkIDxjb2RlPmY8L2NvZGU+LiBPdmVyZmxvdyBvY2N1cnMgd2hlbiBhIGZpZWxkIHZhbHVlIGV4Y2VlZHMgaXRzCisgKiAgIHJhbmdlIGFuZCwgYXMgYSByZXN1bHQsIHRoZSBuZXh0IGxhcmdlciBmaWVsZCBpcyBpbmNyZW1lbnRlZCBvcgorICogICBkZWNyZW1lbnRlZCBhbmQgdGhlIGZpZWxkIHZhbHVlIGlzIGFkanVzdGVkIGJhY2sgaW50byBpdHMgcmFuZ2UuPC9wPgorICogCisgKiAgIDxwPjxzdHJvbmc+QWRkIHJ1bGUgMjwvc3Ryb25nPi4gSWYgYSBzbWFsbGVyIGZpZWxkIGlzIGV4cGVjdGVkIHRvIGJlCisgKiAgIGludmFyaWFudCwgYnV0ICZuYnNwOyBpdCBpcyBpbXBvc3NpYmxlIGZvciBpdCB0byBiZSBlcXVhbCB0byBpdHMKKyAqICAgcHJpb3IgdmFsdWUgYmVjYXVzZSBvZiBjaGFuZ2VzIGluIGl0cyBtaW5pbXVtIG9yIG1heGltdW0gYWZ0ZXIgZmllbGQKKyAqICAgPGNvZGU+ZjwvY29kZT4gaXMgY2hhbmdlZCwgdGhlbiBpdHMgdmFsdWUgaXMgYWRqdXN0ZWQgdG8gYmUgYXMgY2xvc2UKKyAqICAgYXMgcG9zc2libGUgdG8gaXRzIGV4cGVjdGVkIHZhbHVlLiBBIHNtYWxsZXIgZmllbGQgcmVwcmVzZW50cyBhCisgKiAgIHNtYWxsZXIgdW5pdCBvZiB0aW1lLiA8Y29kZT5IT1VSPC9jb2RlPiBpcyBhIHNtYWxsZXIgZmllbGQgdGhhbgorICogICA8Y29kZT5EQVlfT0ZfTU9OVEg8L2NvZGU+LiBObyBhZGp1c3RtZW50IGlzIG1hZGUgdG8gc21hbGxlciBmaWVsZHMKKyAqICAgdGhhdCBhcmUgbm90IGV4cGVjdGVkIHRvIGJlIGludmFyaWFudC4gVGhlIGNhbGVuZGFyIHN5c3RlbQorICogICBkZXRlcm1pbmVzIHdoYXQgZmllbGRzIGFyZSBleHBlY3RlZCB0byBiZSBpbnZhcmlhbnQuPC9wPgorICogPC9ibG9ja3F1b3RlPgorICogCisgKiA8cD5JbiBhZGRpdGlvbiwgdW5saWtlIDxjb2RlPnNldCgpPC9jb2RlPiwgPGNvZGU+YWRkKCk8L2NvZGU+IGZvcmNlcworICogYW4gaW1tZWRpYXRlIHJlY29tcHV0YXRpb24gb2YgdGhlIGNhbGVuZGFyJ3MgbWlsbGlzZWNvbmRzIGFuZCBhbGwKKyAqIGZpZWxkcy48L3A+CisgKiAKKyAqIDxwPjxlbT5FeGFtcGxlPC9lbT46IENvbnNpZGVyIGEgPGNvZGU+R3JlZ29yaWFuQ2FsZW5kYXI8L2NvZGU+CisgKiBvcmlnaW5hbGx5IHNldCB0byBBdWd1c3QgMzEsIDE5OTkuIENhbGxpbmcgPGNvZGU+YWRkKENhbGVuZGFyLk1PTlRILAorICogMTMpPC9jb2RlPiBzZXRzIHRoZSBjYWxlbmRhciB0byBTZXB0ZW1iZXIgMzAsIDIwMDAuIDxzdHJvbmc+QWRkIHJ1bGUKKyAqIDE8L3N0cm9uZz4gc2V0cyB0aGUgPGNvZGU+TU9OVEg8L2NvZGU+IGZpZWxkIHRvIFNlcHRlbWJlciwgc2luY2UKKyAqIGFkZGluZyAxMyBtb250aHMgdG8gQXVndXN0IGdpdmVzIFNlcHRlbWJlciBvZiB0aGUgbmV4dCB5ZWFyLiBTaW5jZQorICogPGNvZGU+REFZX09GX01PTlRIPC9jb2RlPiBjYW5ub3QgYmUgMzEgaW4gU2VwdGVtYmVyIGluIGEKKyAqIDxjb2RlPkdyZWdvcmlhbkNhbGVuZGFyPC9jb2RlPiwgPHN0cm9uZz5hZGQgcnVsZSAyPC9zdHJvbmc+IHNldHMgdGhlCisgKiA8Y29kZT5EQVlfT0ZfTU9OVEg8L2NvZGU+IHRvIDMwLCB0aGUgY2xvc2VzdCBwb3NzaWJsZSB2YWx1ZS4gQWx0aG91Z2gKKyAqIGl0IGlzIGEgc21hbGxlciBmaWVsZCwgPGNvZGU+REFZX09GX1dFRUs8L2NvZGU+IGlzIG5vdCBhZGp1c3RlZCBieQorICogcnVsZSAyLCBzaW5jZSBpdCBpcyBleHBlY3RlZCB0byBjaGFuZ2Ugd2hlbiB0aGUgbW9udGggY2hhbmdlcyBpbiBhCisgKiA8Y29kZT5HcmVnb3JpYW5DYWxlbmRhcjwvY29kZT4uPC9wPgorICogCisgKiA8cD48c3Ryb25nPjxjb2RlPnJvbGwoZiwgZGVsdGEpPC9jb2RlPjwvc3Ryb25nPiBhZGRzCisgKiA8Y29kZT5kZWx0YTwvY29kZT4gdG8gZmllbGQgPGNvZGU+ZjwvY29kZT4gd2l0aG91dCBjaGFuZ2luZyBsYXJnZXIKKyAqIGZpZWxkcy4gVGhpcyBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgPGNvZGU+YWRkKGYsIGRlbHRhKTwvY29kZT4gd2l0aAorICogdGhlIGZvbGxvd2luZyBhZGp1c3RtZW50OjwvcD4KKyAqIAorICogPGJsb2NrcXVvdGU+CisgKiAgIDxwPjxzdHJvbmc+Um9sbCBydWxlPC9zdHJvbmc+LiBMYXJnZXIgZmllbGRzIGFyZSB1bmNoYW5nZWQgYWZ0ZXIgdGhlCisgKiAgIGNhbGwuIEEgbGFyZ2VyIGZpZWxkIHJlcHJlc2VudHMgYSBsYXJnZXIgdW5pdCBvZgorICogICB0aW1lLiA8Y29kZT5EQVlfT0ZfTU9OVEg8L2NvZGU+IGlzIGEgbGFyZ2VyIGZpZWxkIHRoYW4KKyAqICAgPGNvZGU+SE9VUjwvY29kZT4uPC9wPgorICogPC9ibG9ja3F1b3RlPgorICogCisgKiA8cD48ZW0+RXhhbXBsZTwvZW0+OiBDb25zaWRlciBhIDxjb2RlPkdyZWdvcmlhbkNhbGVuZGFyPC9jb2RlPgorICogb3JpZ2luYWxseSBzZXQgdG8gQXVndXN0IDMxLCAxOTk5LiBDYWxsaW5nIDxjb2RlPnJvbGwoQ2FsZW5kYXIuTU9OVEgsCisgKiA4KTwvY29kZT4gc2V0cyB0aGUgY2FsZW5kYXIgdG8gQXByaWwgMzAsIDxzdHJvbmc+MTk5OTwvc3Ryb25nPi4gIEFkZAorICogcnVsZSAxIHNldHMgdGhlIDxjb2RlPk1PTlRIPC9jb2RlPiBmaWVsZCB0byBBcHJpbC4gVXNpbmcgYQorICogPGNvZGU+R3JlZ29yaWFuQ2FsZW5kYXI8L2NvZGU+LCB0aGUgPGNvZGU+REFZX09GX01PTlRIPC9jb2RlPiBjYW5ub3QKKyAqIGJlIDMxIGluIHRoZSBtb250aCBBcHJpbC4gQWRkIHJ1bGUgMiBzZXRzIGl0IHRvIHRoZSBjbG9zZXN0IHBvc3NpYmxlCisgKiB2YWx1ZSwgMzAuIEZpbmFsbHksIHRoZSA8c3Ryb25nPnJvbGwgcnVsZTwvc3Ryb25nPiBtYWludGFpbnMgdGhlCisgKiA8Y29kZT5ZRUFSPC9jb2RlPiBmaWVsZCB2YWx1ZSBvZiAxOTk5LjwvcD4KKyAqIAorICogPHA+PGVtPkV4YW1wbGU8L2VtPjogQ29uc2lkZXIgYSA8Y29kZT5HcmVnb3JpYW5DYWxlbmRhcjwvY29kZT4KKyAqIG9yaWdpbmFsbHkgc2V0IHRvIFN1bmRheSBKdW5lIDYsIDE5OTkuIENhbGxpbmcKKyAqIDxjb2RlPnJvbGwoQ2FsZW5kYXIuV0VFS19PRl9NT05USCwgLTEpPC9jb2RlPiBzZXRzIHRoZSBjYWxlbmRhciB0bworICogVHVlc2RheSBKdW5lIDEsIDE5OTksIHdoZXJlYXMgY2FsbGluZworICogPGNvZGU+YWRkKENhbGVuZGFyLldFRUtfT0ZfTU9OVEgsIC0xKTwvY29kZT4gc2V0cyB0aGUgY2FsZW5kYXIgdG8KKyAqIFN1bmRheSBNYXkgMzAsIDE5OTkuIFRoaXMgaXMgYmVjYXVzZSB0aGUgcm9sbCBydWxlIGltcG9zZXMgYW4KKyAqIGFkZGl0aW9uYWwgY29uc3RyYWludDogVGhlIDxjb2RlPk1PTlRIPC9jb2RlPiBtdXN0IG5vdCBjaGFuZ2Ugd2hlbiB0aGUKKyAqIDxjb2RlPldFRUtfT0ZfTU9OVEg8L2NvZGU+IGlzIHJvbGxlZC4gVGFrZW4gdG9nZXRoZXIgd2l0aCBhZGQgcnVsZSAxLAorICogdGhlIHJlc3VsdGFudCBkYXRlIG11c3QgYmUgYmV0d2VlbiBUdWVzZGF5IEp1bmUgMSBhbmQgU2F0dXJkYXkgSnVuZQorICogNS4gQWNjb3JkaW5nIHRvIGFkZCBydWxlIDIsIHRoZSA8Y29kZT5EQVlfT0ZfV0VFSzwvY29kZT4sIGFuIGludmFyaWFudAorICogd2hlbiBjaGFuZ2luZyB0aGUgPGNvZGU+V0VFS19PRl9NT05USDwvY29kZT4sIGlzIHNldCB0byBUdWVzZGF5LCB0aGUKKyAqIGNsb3Nlc3QgcG9zc2libGUgdmFsdWUgdG8gU3VuZGF5ICh3aGVyZSBTdW5kYXkgaXMgdGhlIGZpcnN0IGRheSBvZiB0aGUKKyAqIHdlZWspLjwvcD4KKyAqIAorICogPHA+PHN0cm9uZz5Vc2FnZSBtb2RlbDwvc3Ryb25nPi4gVG8gbW90aXZhdGUgdGhlIGJlaGF2aW9yIG9mCisgKiA8Y29kZT5hZGQoKTwvY29kZT4gYW5kIDxjb2RlPnJvbGwoKTwvY29kZT4sIGNvbnNpZGVyIGEgdXNlciBpbnRlcmZhY2UKKyAqIGNvbXBvbmVudCB3aXRoIGluY3JlbWVudCBhbmQgZGVjcmVtZW50IGJ1dHRvbnMgZm9yIHRoZSBtb250aCwgZGF5LCBhbmQKKyAqIHllYXIsIGFuZCBhbiB1bmRlcmx5aW5nIDxjb2RlPkdyZWdvcmlhbkNhbGVuZGFyPC9jb2RlPi4gSWYgdGhlCisgKiBpbnRlcmZhY2UgcmVhZHMgSmFudWFyeSAzMSwgMTk5OSBhbmQgdGhlIHVzZXIgcHJlc3NlcyB0aGUgbW9udGgKKyAqIGluY3JlbWVudCBidXR0b24sIHdoYXQgc2hvdWxkIGl0IHJlYWQ/IElmIHRoZSB1bmRlcmx5aW5nCisgKiBpbXBsZW1lbnRhdGlvbiB1c2VzIDxjb2RlPnNldCgpPC9jb2RlPiwgaXQgbWlnaHQgcmVhZCBNYXJjaCAzLCAxOTk5LiBBCisgKiBiZXR0ZXIgcmVzdWx0IHdvdWxkIGJlIEZlYnJ1YXJ5IDI4LCAxOTk5LiBGdXJ0aGVybW9yZSwgaWYgdGhlIHVzZXIKKyAqIHByZXNzZXMgdGhlIG1vbnRoIGluY3JlbWVudCBidXR0b24gYWdhaW4sIGl0IHNob3VsZCByZWFkIE1hcmNoIDMxLAorICogMTk5OSwgbm90IE1hcmNoIDI4LCAxOTk5LiBCeSBzYXZpbmcgdGhlIG9yaWdpbmFsIGRhdGUgYW5kIHVzaW5nIGVpdGhlcgorICogPGNvZGU+YWRkKCk8L2NvZGU+IG9yIDxjb2RlPnJvbGwoKTwvY29kZT4sIGRlcGVuZGluZyBvbiB3aGV0aGVyIGxhcmdlcgorICogZmllbGRzIHNob3VsZCBiZSBhZmZlY3RlZCwgdGhlIHVzZXIgaW50ZXJmYWNlIGNhbiBiZWhhdmUgYXMgbW9zdCB1c2VycworICogd2lsbCBpbnR1aXRpdmVseSBleHBlY3QuPC9wPgorICoKKyAqIDxwPjxiPk5vdGU6PC9iPiBZb3Ugc2hvdWxkIGFsd2F5cyB1c2Uge0BsaW5rICNyb2xsIHJvbGx9IGFuZCB7QGxpbmsgI2FkZCBhZGR9IHJhdGhlcgorICogdGhhbiBhdHRlbXB0aW5nIHRvIHBlcmZvcm0gYXJpdGhtZXRpYyBvcGVyYXRpb25zIGRpcmVjdGx5IG9uIHRoZSBmaWVsZHMKKyAqIG9mIGEgPHR0PkNhbGVuZGFyPC90dD4uICBJdCBpcyBxdWl0ZSBwb3NzaWJsZSBmb3IgPHR0PkNhbGVuZGFyPC90dD4gc3ViY2xhc3NlcworICogdG8gaGF2ZSBmaWVsZHMgd2l0aCBub24tbGluZWFyIGJlaGF2aW9yLCBmb3IgZXhhbXBsZSBtaXNzaW5nIG1vbnRocworICogb3IgZGF5cyBkdXJpbmcgbm9uLWxlYXAgeWVhcnMuICBUaGUgc3ViY2xhc3NlcycgPHR0PmFkZDwvdHQ+IGFuZCA8dHQ+cm9sbDwvdHQ+CisgKiBtZXRob2RzIHdpbGwgdGFrZSB0aGlzIGludG8gYWNjb3VudCwgd2hpbGUgc2ltcGxlIGFyaXRobWV0aWMgbWFuaXB1bGF0aW9ucworICogbWF5IGdpdmUgaW52YWxpZCByZXN1bHRzLgorICoKKyAqIDxwPjxiaWc+PGJpZz48Yj5DYWxlbmRhciBBcmNoaXRlY3R1cmUgaW4gSUNVNEo8L2I+PC9iaWc+PC9iaWc+PC9wPgorICogCisgKiA8cD5SZWNlbnRseSB0aGUgaW1wbGVtZW50YXRpb24gb2YgPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IGhhcyBjaGFuZ2VkCisgKiBzaWduaWZpY2FudGx5IGluIG9yZGVyIHRvIGJldHRlciBzdXBwb3J0IHN1YmNsYXNzaW5nLiBUaGUgb3JpZ2luYWwKKyAqIDxjb2RlPkNhbGVuZGFyPC9jb2RlPiBjbGFzcyB3YXMgZGVzaWduZWQgdG8gc3VwcG9ydCBzdWJjbGFzc2luZywgYnV0CisgKiBpdCBoYWQgb25seSBvbmUgaW1wbGVtZW50ZWQgc3ViY2xhc3MsIDxjb2RlPkdyZWdvcmlhbkNhbGVuZGFyPC9jb2RlPi4KKyAqIFdpdGggdGhlIGltcGxlbWVudGF0aW9uIG9mIHNldmVyYWwgbmV3IGNhbGVuZGFyIHN1YmNsYXNzZXMsIGluY2x1ZGluZworICogdGhlIDxjb2RlPkJ1ZGRoaXN0Q2FsZW5kYXI8L2NvZGU+LCA8Y29kZT5DaGluZXNlQ2FsZW5kYXI8L2NvZGU+LAorICogPGNvZGU+SGVicmV3Q2FsZW5kYXI8L2NvZGU+LCA8Y29kZT5Jc2xhbWljQ2FsZW5kYXI8L2NvZGU+LCBhbmQKKyAqIDxjb2RlPkphcGFuZXNlQ2FsZW5kYXI8L2NvZGU+LCB0aGUgc3ViY2xhc3NpbmcgQVBJIGhhcyBiZWVuIHJld29ya2VkCisgKiB0aG9yb3VnaGx5LiBUaGlzIHNlY3Rpb24gZGV0YWlscyB0aGUgbmV3IHN1YmNsYXNzaW5nIEFQSSBhbmQgb3RoZXIKKyAqIHdheXMgaW4gd2hpY2ggPGNvZGU+Y29tLmlibS51dGlsLkNhbGVuZGFyPC9jb2RlPiBkaWZmZXJzIGZyb20KKyAqIDxjb2RlPmphdmEudXRpbC5DYWxlbmRhcjwvY29kZT4uCisgKiA8L3A+CisgKiAKKyAqIDxwPjxiaWc+PGI+Q2hhbmdlczwvYj48L2JpZz48L3A+CisgKiAKKyAqIDxwPk92ZXJ2aWV3IG9mIGNoYW5nZXMgYmV0d2VlbiB0aGUgY2xhc3NpYyA8Y29kZT5DYWxlbmRhcjwvY29kZT4KKyAqIGFyY2hpdGVjdHVyZSBhbmQgdGhlIG5ldyBhcmNoaXRlY3R1cmUuCisgKiAKKyAqIDx1bD4KKyAqIAorICogICA8bGk+VGhlIDxjb2RlPmZpZWxkc1tdPC9jb2RlPiBhcnJheSBpcyA8Y29kZT5wcml2YXRlPC9jb2RlPiBub3cKKyAqICAgICBpbnN0ZWFkIG9mIDxjb2RlPnByb3RlY3RlZDwvY29kZT4uICBTdWJjbGFzc2VzIG11c3QgYWNjZXNzIGl0CisgKiAgICAgdXNpbmcgdGhlIG1ldGhvZHMge0BsaW5rICNpbnRlcm5hbFNldH0gYW5kCisgKiAgICAge0BsaW5rICNpbnRlcm5hbEdldH0uICA8Yj5Nb3RpdmF0aW9uOjwvYj4gU3ViY2xhc3NlcyBzaG91bGQKKyAqICAgICBub3QgZGlyZWN0bHkgYWNjZXNzIGRhdGEgbWVtYmVycy48L2xpPgorICogCisgKiAgIDxsaT5UaGUgPGNvZGU+dGltZTwvY29kZT4gbG9uZyB3b3JkIGlzIDxjb2RlPnByaXZhdGU8L2NvZGU+IG5vdworICogICAgIGluc3RlYWQgb2YgPGNvZGU+cHJvdGVjdGVkPC9jb2RlPi4gIFN1YmNsYXNzZXMgbWF5IGFjY2VzcyBpdCB1c2luZworICogICAgIHRoZSBtZXRob2Qge0BsaW5rICNpbnRlcm5hbEdldFRpbWVJbk1pbGxpc30sIHdoaWNoIGRvZXMgbm90CisgKiAgICAgcHJvdm9rZSBhbiB1cGRhdGUuIDxiPk1vdGl2YXRpb246PC9iPiBTdWJjbGFzc2VzIHNob3VsZCBub3QKKyAqICAgICBkaXJlY3RseSBhY2Nlc3MgZGF0YSBtZW1iZXJzLjwvbGk+CisgKiAKKyAqICAgPGxpPlRoZSBzY29wZSBvZiByZXNwb25zaWJpbGl0eSBvZiBzdWJjbGFzc2VzIGhhcyBiZWVuIGRyYXN0aWNhbGx5CisgKiAgICAgcmVkdWNlZC4gQXMgbXVjaCBmdW5jdGlvbmFsaXR5IGFzIHBvc3NpYmxlIGlzIGltcGxlbWVudGVkIGluIHRoZQorICogICAgIDxjb2RlPkNhbGVuZGFyPC9jb2RlPiBiYXNlIGNsYXNzLiBBcyBhIHJlc3VsdCwgaXQgaXMgbXVjaCBlYXNpZXIKKyAqICAgICB0byBzdWJjbGFzcyA8Y29kZT5DYWxlbmRhcjwvY29kZT4uIDxiPk1vdGl2YXRpb246PC9iPiBTdWJjbGFzc2VzCisgKiAgICAgc2hvdWxkIG5vdCBoYXZlIHRvIHJlaW1wbGVtZW50IGNvbW1vbiBjb2RlLiBDZXJ0YWluIGJlaGF2aW9ycyBhcmUKKyAqICAgICBjb21tb24gYWNyb3NzIGNhbGVuZGFyIHN5c3RlbXM6IFRoZSBkZWZpbml0aW9uIGFuZCBiZWhhdmlvciBvZgorICogICAgIHdlZWstcmVsYXRlZCBmaWVsZHMgYW5kIHRpbWUgZmllbGRzLCB0aGUgYXJpdGhtZXRpYworICogICAgICh7QGxpbmsgI2FkZChpbnQsIGludCkgYWRkfSBhbmQge0BsaW5rICNyb2xsKGludCwgaW50KSByb2xsfSkgYmVoYXZpb3Igb2YgbWFueQorICogICAgIGZpZWxkcywgYW5kIHRoZSBmaWVsZCB2YWxpZGF0aW9uIHN5c3RlbS48L2xpPgorICogCisgKiAgIDxsaT5UaGUgc3ViY2xhc3NpbmcgQVBJIGhhcyBiZWVuIGNvbXBsZXRlbHkgcmVkZXNpZ25lZC48L2xpPgorICogCisgKiAgIDxsaT5UaGUgPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IGJhc2UgY2xhc3MgY29udGFpbnMgc29tZSBHcmVnb3JpYW4KKyAqICAgICBjYWxlbmRhciBhbGdvcml0aG1pYyBzdXBwb3J0IHRoYXQgc3ViY2xhc3NlcyBjYW4gdXNlIChzcGVjaWZpY2FsbHkKKyAqICAgICBpbiB7QGxpbmsgI2hhbmRsZUNvbXB1dGVGaWVsZHN9KS4gIFN1YmNsYXNzZXMgY2FuIHVzZSB0aGUKKyAqICAgICBtZXRob2RzIDxjb2RlPmdldEdyZWdvcmlhblh4eCgpPC9jb2RlPiB0byBvYnRhaW4gcHJlY29tcHV0ZWQKKyAqICAgICB2YWx1ZXMuIDxiPk1vdGl2YXRpb246PC9iPiBUaGlzIGlzIHJlcXVpcmVkIGJ5IGFsbAorICogICAgIDxjb2RlPkNhbGVuZGFyPC9jb2RlPiBzdWJjbGFzc2VzIGluIG9yZGVyIHRvIGltcGxlbWVudCBjb25zaXN0ZW50CisgKiAgICAgdGltZSB6b25lIGJlaGF2aW9yLCBhbmQgR3JlZ29yaWFuLWRlcml2ZWQgc3lzdGVtcyBjYW4gdXNlIHRoZQorICogICAgIGFscmVhZHkgY29tcHV0ZWQgZGF0YS48L2xpPgorICogCisgKiAgIDxsaT5UaGUgPGNvZGU+RklFTERfQ09VTlQ8L2NvZGU+IGNvbnN0YW50IGhhcyBiZWVuIHJlbW92ZWQuIFVzZQorICogICAgIHtAbGluayAjZ2V0RmllbGRDb3VudH0uICBJbiBhZGRpdGlvbiwgZnJhbWV3b3JrIEFQSSBoYXMgYmVlbgorICogICAgIGFkZGVkIHRvIGFsbG93IHN1YmNsYXNzZXMgdG8gZGVmaW5lIGFkZGl0aW9uYWwgZmllbGRzLgorICogICAgIDxiPk1vdGl2YXRpb246IDwvYj5UaGUgbnVtYmVyIG9mIGZpZWxkcyBpcyBub3QgY29uc3RhbnQgYWNyb3NzCisgKiAgICAgY2FsZW5kYXIgc3lzdGVtcy48L2xpPgorICogCisgKiAgIDxsaT5UaGUgcmFuZ2Ugb2YgaGFuZGxlZCBkYXRlcyBoYXMgYmVlbiBuYXJyb3dlZCBmcm9tICsvLQorICogICAgIH4zMDAsMDAwLDAwMCB5ZWFycyB0byArLy0gfjUsMDAwLDAwMCB5ZWFycy4gSW4gcHJhY3RpY2FsIHRlcm1zCisgKiAgICAgdGhpcyBzaG91bGQgbm90IGFmZmVjdCBjbGllbnRzLiBIb3dldmVyLCBpdCBkb2VzIG1lYW4gdGhhdCBjbGllbnQKKyAqICAgICBjb2RlIGNhbm5vdCBiZSBndWFyYW50ZWVkIHdlbGwtYmVoYXZlZCByZXN1bHRzIHdpdGggZGF0ZXMgc3VjaCBhcworICogICAgIDxjb2RlPkRhdGUoTG9uZy5NSU5fVkFMVUUpPC9jb2RlPiBvcgorICogICAgIDxjb2RlPkRhdGUoTG9uZy5NQVhfVkFMVUUpPC9jb2RlPi4gSW5zdGVhZCwgdGhlCisgKiAgICAgPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IGNvbnN0YW50cyB7QGxpbmsgI01JTl9EQVRFfSwKKyAqICAgICB7QGxpbmsgI01BWF9EQVRFfSwge0BsaW5rICNNSU5fTUlMTElTfSwKKyAqICAgICB7QGxpbmsgI01BWF9NSUxMSVN9LCB7QGxpbmsgI01JTl9KVUxJQU59LCBhbmQKKyAqICAgICB7QGxpbmsgI01BWF9KVUxJQU59IHNob3VsZCBiZSB1c2VkLiA8Yj5Nb3RpdmF0aW9uOjwvYj4gV2l0aAorICogICAgIHRoZSBhZGRpdGlvbiBvZiB0aGUge0BsaW5rICNKVUxJQU5fREFZfSBmaWVsZCwgSnVsaWFuIGRheQorICogICAgIG51bWJlcnMgbXVzdCBiZSByZXN0cmljdGVkIHRvIGEgMzItYml0IDxjb2RlPmludDwvY29kZT4uICBUaGlzCisgKiAgICAgcmVzdHJpY3RzIHRoZSBvdmVyYWxsIHN1cHBvcnRlZCByYW5nZS4gRnVydGhlcm1vcmUsIHJlc3RyaWN0aW5nCisgKiAgICAgdGhlIHN1cHBvcnRlZCByYW5nZSBzaW1wbGlmaWVzIHRoZSBjb21wdXRhdGlvbnMgYnkgcmVtb3ZpbmcKKyAqICAgICBzcGVjaWFsIGNhc2UgY29kZSB0aGF0IHdhcyB1c2VkIHRvIGFjY29tb2RhdGUgYXJpdGhtZXRpYyBvdmVyZmxvdworICogICAgIGF0IG1pbGxpcyBuZWFyIDxjb2RlPkxvbmcuTUlOX1ZBTFVFPC9jb2RlPiBhbmQKKyAqICAgICA8Y29kZT5Mb25nLk1BWF9WQUxVRTwvY29kZT4uPC9saT4KKyAqIAorICogICA8bGk+TmV3IGZpZWxkcyBhcmUgaW1wbGVtZW50ZWQ6IHtAbGluayAjSlVMSUFOX0RBWX0gZGVmaW5lcworICogICAgIHNpbmdsZS1maWVsZCBzcGVjaWZpY2F0aW9uIG9mIHRoZQorICogICAgIGRhdGUuIHtAbGluayAjTUlMTElTRUNPTkRTX0lOX0RBWX0gZGVmaW5lcyBhIHNpbmdsZS1maWVsZAorICogICAgIHNwZWNpZmljYXRpb24gb2YgdGhlIHdhbGwgdGltZS4ge0BsaW5rICNET1dfTE9DQUx9IGFuZAorICogICAgIHtAbGluayAjWUVBUl9XT1l9IGltcGxlbWVudCBsb2NhbGl6ZWQgZGF5LW9mLXdlZWsgYW5kCisgKiAgICAgd2Vlay1vZi15ZWFyIGJlaGF2aW9yLjwvbGk+CisgKiAKKyAqICAgPGxpPlN1YmNsYXNzZXMgY2FuIGFjY2VzcyBtaWxsaXNlY29uZCBjb25zdGFudHMKKyAqICAgICB7QGxpbmsgI09ORV9TRUNPTkR9LCB7QGxpbmsgI09ORV9NSU5VVEV9LAorICogICAgIHtAbGluayAjT05FX0hPVVJ9LCB7QGxpbmsgI09ORV9EQVl9LCBhbmQKKyAqICAgICB7QGxpbmsgI09ORV9XRUVLfSBkZWZpbmVkIGluIDxjb2RlPkNhbGVuZGFyPC9jb2RlPi48L2xpPgorICogCisgKiAgIDxsaT5OZXcgQVBJIGhhcyBiZWVuIGFkZGVkIHRvIHN1cG9ydCBjYWxlbmRhci1zcGVjaWZpYyBzdWJjbGFzc2VzCisgKiAgICAgb2YgPGNvZGU+RGF0ZUZvcm1hdDwvY29kZT4uPC9saT4KKyAqIAorICogICA8bGk+U2V2ZXJhbCBzdWJjbGFzc2VzIGhhdmUgYmVlbiBpbXBsZW1lbnRlZCwgcmVwcmVzZW50aW5nCisgKiAgICAgdmFyaW91cyBpbnRlcm5hdGlvbmFsIGNhbGVuZGFyIHN5c3RlbXMuPC9saT4KKyAqIAorICogPC91bD4KKyAqIAorICogPHA+PGJpZz48Yj5TdWJjbGFzcyBBUEk8L2I+PC9iaWc+PC9wPgorICogCisgKiA8cD5UaGUgb3JpZ2luYWwgPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IEFQSSB3YXMgYmFzZWQgb24gdGhlIGV4cGVyaWVuY2UKKyAqIG9mIGltcGxlbWVudGluZyBhIG9ubHkgYSBzaW5nbGUgc3ViY2xhc3MsCisgKiA8Y29kZT5HcmVnb3JpYW5DYWxlbmRhcjwvY29kZT4uIEFzIGEgcmVzdWx0LCBhbGwgb2YgdGhlIHN1YmNsYXNzaW5nCisgKiBraW5rcyBoYWQgbm90IGJlZW4gd29ya2VkIG91dC4gVGhlIG5ldyBzdWJjbGFzc2luZyBBUEkgaGFzIGJlZW4KKyAqIHJlZmluZWQgYmFzZWQgb24gc2V2ZXJhbCBpbXBsZW1lbnRlZCBzdWJjbGFzc2VzLiBUaGlzIGluY2x1ZGVzIG1ldGhvZHMKKyAqIHRoYXQgbXVzdCBiZSBvdmVycmlkZGVuIGFuZCBtZXRob2RzIGZvciBzdWJjbGFzc2VzIHRvIGNhbGwuIFN1YmNsYXNzZXMKKyAqIG5vIGxvbmdlciBoYXZlIGRpcmVjdCBhY2Nlc3MgdG8gPGNvZGU+ZmllbGRzPC9jb2RlPiBhbmQKKyAqIDxjb2RlPnN0YW1wPC9jb2RlPi4gSW5zdGVhZCwgdGhleSBoYXZlIG5ldyBBUEkgdG8gYWNjZXNzCisgKiB0aGVzZS4gU3ViY2xhc3NlcyBhcmUgYWJsZSB0byBhbGxvY2F0ZSB0aGUgPGNvZGU+ZmllbGRzPC9jb2RlPiBhcnJheQorICogdGhyb3VnaCBhIHByb3RlY3RlZCBmcmFtZXdvcmsgbWV0aG9kOyB0aGlzIGFsbG93cyBzdWJjbGFzc2VzIHRvCisgKiBzcGVjaWZ5IGFkZGl0aW9uYWwgZmllbGRzLiA8L3A+CisgKiAKKyAqIDxwPk1vcmUgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBtb3ZlZCBpbnRvIHRoZSBiYXNlIGNsYXNzLiBUaGUgYmFzZQorICogY2xhc3Mgbm93IGNvbnRhaW5zIG11Y2ggb2YgdGhlIGNvbXB1dGF0aW9uYWwgbWFjaGluZXJ5IHRvIHN1cHBvcnQgdGhlCisgKiBHcmVnb3JpYW4gY2FsZW5kYXIuIFRoaXMgaXMgYmFzZWQgb24gdHdvIHRoaW5nczogKDEpIE1hbnkgY2FsZW5kYXJzCisgKiBhcmUgYmFzZWQgb24gdGhlIEdyZWdvcmlhbiBjYWxlbmRhciAoc3VjaCBhcyB0aGUgQnVkZGhpc3QgYW5kIEphcGFuZXNlCisgKiBpbXBlcmlhbCBjYWxlbmRhcnMpLiAoMikgPGVtPkFsbDwvZW0+IGNhbGVuZGFycyByZXF1aXJlIGJhc2ljCisgKiBHcmVnb3JpYW4gc3VwcG9ydCBpbiBvcmRlciB0byBoYW5kbGUgdGltZXpvbmUgY29tcHV0YXRpb25zLiA8L3A+CisgKiAKKyAqIDxwPkNvbW1vbiBjb21wdXRhdGlvbnMgaGF2ZSBiZWVuIG1vdmVkIGludG8KKyAqIDxjb2RlPkNhbGVuZGFyPC9jb2RlPi4gU3ViY2xhc3NlcyBubyBsb25nZXIgY29tcHV0ZSB0aGUgd2VlayByZWxhdGVkCisgKiBmaWVsZHMgYW5kIHRoZSB0aW1lIHJlbGF0ZWQgZmllbGRzLiBUaGVzZSBhcmUgY29tbW9ubHkgaGFuZGxlZCBmb3IgYWxsCisgKiBjYWxlbmRhcnMgYnkgdGhlIGJhc2UgY2xhc3MuIDwvcD4KKyAqIAorICogPHA+PGI+U3ViY2xhc3MgY29tcHV0YXRpb24gb2YgdGltZSA8dHQ+PSZndDs8L3R0PiBmaWVsZHM8L2I+CisgKiAKKyAqIDxwPlRoZSB7QGxpbmsgI0VSQX0sIHtAbGluayAjWUVBUn0sCisgKiB7QGxpbmsgI0VYVEVOREVEX1lFQVJ9LCB7QGxpbmsgI01PTlRIfSwKKyAqIHtAbGluayAjREFZX09GX01PTlRIfSwgYW5kIHtAbGluayAjREFZX09GX1lFQVJ9IGZpZWxkcyBhcmUKKyAqIGNvbXB1dGVkIGJ5IHRoZSBzdWJjbGFzcywgYmFzZWQgb24gdGhlIEp1bGlhbiBkYXkuIEFsbCBvdGhlciBmaWVsZHMKKyAqIGFyZSBjb21wdXRlZCBieSA8Y29kZT5DYWxlbmRhcjwvY29kZT4uCisgKiAKKyAqIDx1bD4KKyAqIAorICogICA8bGk+U3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50IHtAbGluayAjaGFuZGxlQ29tcHV0ZUZpZWxkc30KKyAqICAgICB0byBjb21wdXRlIHRoZSB7QGxpbmsgI0VSQX0sIHtAbGluayAjWUVBUn0sCisgKiAgICAge0BsaW5rICNFWFRFTkRFRF9ZRUFSfSwge0BsaW5rICNNT05USH0sCisgKiAgICAge0BsaW5rICNEQVlfT0ZfTU9OVEh9LCBhbmQge0BsaW5rICNEQVlfT0ZfWUVBUn0gZmllbGRzLAorICogICAgIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiB0aGUge0BsaW5rICNKVUxJQU5fREFZfSBmaWVsZC4gSWYgdGhlcmUKKyAqICAgICBhcmUgY2FsZW5kYXItc3BlY2lmaWMgZmllbGRzIG5vdCBkZWZpbmVkIGJ5IDxjb2RlPkNhbGVuZGFyPC9jb2RlPiwKKyAqICAgICB0aGV5IG11c3QgYWxzbyBiZSBjb21wdXRlZC4gVGhlc2UgYXJlIHRoZSBvbmx5IGZpZWxkcyB0aGF0IHRoZQorICogICAgIHN1YmNsYXNzIHNob3VsZCBjb21wdXRlLiBBbGwgb3RoZXIgZmllbGRzIGFyZSBjb21wdXRlZCBieSB0aGUgYmFzZQorICogICAgIGNsYXNzLCBzbyB0aW1lIGFuZCB3ZWVrIGZpZWxkcyBiZWhhdmUgaW4gYSBjb25zaXN0ZW50IHdheSBhY3Jvc3MKKyAqICAgICBhbGwgY2FsZW5kYXJzLiBUaGUgZGVmYXVsdCB2ZXJzaW9uIG9mIHRoaXMgbWV0aG9kIGluCisgKiAgICAgPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IGltcGxlbWVudHMgYSBwcm9sZXB0aWMgR3JlZ29yaWFuCisgKiAgICAgY2FsZW5kYXIuIFdpdGhpbiB0aGlzIG1ldGhvZCwgc3ViY2xhc3NlcyBtYXkgY2FsbAorICogICAgIDxjb2RlPmdldEdyZWdvcmlhblh4eCgpPC9jb2RlPiB0byBvYnRhaW4gdGhlIEdyZWdvcmlhbiBjYWxlbmRhcgorICogICAgIG1vbnRoLCBkYXkgb2YgbW9udGgsIGFuZCBleHRlbmRlZCB5ZWFyIGZvciB0aGUgZ2l2ZW4gZGF0ZS48L2xpPgorICogCisgKiA8L3VsPgorICogCisgKiA8cD48Yj5TdWJjbGFzcyBjb21wdXRhdGlvbiBvZiBmaWVsZHMgPHR0Pj0mZ3Q7PC90dD4gdGltZTwvYj4KKyAqIAorICogPHA+VGhlIGludGVycHJldGF0aW9uIG9mIG1vc3QgZmllbGQgdmFsdWVzIGlzIGhhbmRsZWQgZW50aXJlbHkgYnkKKyAqIDxjb2RlPkNhbGVuZGFyPC9jb2RlPi4gPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IGRldGVybWluZXMgd2hpY2ggZmllbGRzCisgKiBhcmUgc2V0LCB3aGljaCBhcmUgbm90LCB3aGljaCBhcmUgc2V0IG1vcmUgcmVjZW50bHksIGFuZCBzbyBvbi4gSW4KKyAqIGFkZGl0aW9uLCA8Y29kZT5DYWxlbmRhcjwvY29kZT4gaGFuZGxlcyB0aGUgY29tcHV0YXRpb24gb2YgdGhlIHRpbWUKKyAqIGZyb20gdGhlIHRpbWUgZmllbGRzIGFuZCBoYW5kbGVzIHRoZSB3ZWVrLXJlbGF0ZWQgZmllbGRzLiBUaGUgb25seQorICogdGhpbmcgdGhlIHN1YmNsYXNzIG11c3QgZG8gaXMgZGV0ZXJtaW5lIHRoZSBleHRlbmRlZCB5ZWFyLCBiYXNlZCBvbgorICogdGhlIHllYXIgZmllbGRzLCBhbmQgdGhlbiwgZ2l2ZW4gYW4gZXh0ZW5kZWQgeWVhciBhbmQgYSBtb250aCwgaXQgbXVzdAorICogcmV0dXJuIGEgSnVsaWFuIGRheSBudW1iZXIuCisgKiAKKyAqIDx1bD4KKyAqIAorICogICA8bGk+U3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50IHtAbGluayAjaGFuZGxlR2V0RXh0ZW5kZWRZZWFyfQorICogICAgIHRvIHJldHVybiB0aGUgZXh0ZW5kZWQgeWVhciBmb3IgdGhpcyBjYWxlbmRhciBzeXN0ZW0sIGJhc2VkIG9uIHRoZQorICogICAgIHtAbGluayAjWUVBUn0sIHtAbGluayAjRVhURU5ERURfWUVBUn0sIGFuZCBhbnkgZmllbGRzIHRoYXQKKyAqICAgICB0aGUgY2FsZW5kYXIgc3lzdGVtIHVzZXMgdGhhdCBhcmUgbGFyZ2VyIHRoYW4gYSB5ZWFyLCBzdWNoIGFzCisgKiAgICAge0BsaW5rICNFUkF9LjwvbGk+CisgKiAKKyAqICAgPGxpPlN1YmNsYXNzZXMgc2hvdWxkIGltcGxlbWVudCB7QGxpbmsgI2hhbmRsZUNvbXB1dGVNb250aFN0YXJ0fQorICogICAgIHRvIHJldHVybiB0aGUgSnVsaWFuIGRheSBudW1iZXIKKyAqICAgICBhc3NvY2lhdGVkIHdpdGggYSBtb250aCBhbmQgZXh0ZW5kZWQgeWVhci4gVGhpcyBpcyB0aGUgSnVsaWFuIGRheQorICogICAgIG51bWJlciBvZiB0aGUgZGF5IGJlZm9yZSB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aC4gVGhlIG1vbnRoCisgKiAgICAgbnVtYmVyIGlzIHplcm8tYmFzZWQuIFRoaXMgY29tcHV0YXRpb24gc2hvdWxkIG5vdCBkZXBlbmQgb24gYW55CisgKiAgICAgZmllbGQgdmFsdWVzLjwvbGk+CisgKiAKKyAqIDwvdWw+CisgKiAKKyAqIDxwPjxiPk90aGVyIG1ldGhvZHM8L2I+CisgKiAKKyAqIDx1bD4KKyAqIAorICogICA8bGk+U3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50IHtAbGluayAjaGFuZGxlR2V0TW9udGhMZW5ndGh9CisgKiAgICAgdG8gcmV0dXJuIHRoZSBudW1iZXIgb2YgZGF5cyBpbiBhCisgKiAgICAgZ2l2ZW4gbW9udGggb2YgYSBnaXZlbiBleHRlbmRlZCB5ZWFyLiBUaGUgbW9udGggbnVtYmVyLCBhcyBhbHdheXMsCisgKiAgICAgaXMgemVyby1iYXNlZC48L2xpPgorICogCisgKiAgIDxsaT5TdWJjbGFzc2VzIHNob3VsZCBpbXBsZW1lbnQge0BsaW5rICNoYW5kbGVHZXRZZWFyTGVuZ3RofQorICogICAgIHRvIHJldHVybiB0aGUgbnVtYmVyIG9mIGRheXMgaW4gdGhlIGdpdmVuCisgKiAgICAgZXh0ZW5kZWQgeWVhci4gVGhpcyBtZXRob2QgaXMgdXNlZCBieQorICogICAgIHtAbGluayAjY29tcHV0ZVdlZWtGaWVsZHN9IHRvIGNvbXB1dGUgdGhlCisgKiAgICAge0BsaW5rICNXRUVLX09GX1lFQVJ9IGFuZCB7QGxpbmsgI1lFQVJfV09ZfSBmaWVsZHMuPC9saT4KKyAqIAorICogICA8bGk+U3ViY2xhc3NlcyBzaG91bGQgaW1wbGVtZW50IHtAbGluayAjaGFuZGxlR2V0TGltaXR9CisgKiAgICAgdG8gcmV0dXJuIHRoZSB7QGxpbmsgI01JTklNVU19LAorICogICAgIHtAbGluayAjR1JFQVRFU1RfTUlOSU1VTX0sIHtAbGluayAjTEVBU1RfTUFYSU1VTX0sIG9yCisgKiAgICAge0BsaW5rICNNQVhJTVVNfSBvZiBhIGZpZWxkLCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mCisgKiAgICAgPGNvZGU+bGltaXRUeXBlPC9jb2RlPi4gVGhpcyBtZXRob2Qgb25seSBuZWVkcyB0byBoYW5kbGUgdGhlCisgKiAgICAgZmllbGRzIHtAbGluayAjRVJBfSwge0BsaW5rICNZRUFSfSwge0BsaW5rICNNT05USH0sCisgKiAgICAge0BsaW5rICNXRUVLX09GX1lFQVJ9LCB7QGxpbmsgI1dFRUtfT0ZfTU9OVEh9LAorICogICAgIHtAbGluayAjREFZX09GX01PTlRIfSwge0BsaW5rICNEQVlfT0ZfWUVBUn0sCisgKiAgICAge0BsaW5rICNEQVlfT0ZfV0VFS19JTl9NT05USH0sIHtAbGluayAjWUVBUl9XT1l9LCBhbmQKKyAqICAgICB7QGxpbmsgI0VYVEVOREVEX1lFQVJ9LiAgT3RoZXIgZmllbGRzIGFyZSBpbnZhcmlhbnQgKHdpdGgKKyAqICAgICByZXNwZWN0IHRvIGNhbGVuZGFyIHN5c3RlbSkgYW5kIGFyZSBoYW5kbGVkIGJ5IHRoZSBiYXNlCisgKiAgICAgY2xhc3MuPC9saT4KKyAqIAorICogICA8bGk+T3B0aW9uYWxseSwgc3ViY2xhc3NlcyBtYXkgb3ZlcnJpZGUge0BsaW5rICN2YWxpZGF0ZUZpZWxkfQorICogICAgIHRvIGNoZWNrIGFueSBzdWJjbGFzcy1zcGVjaWZpYyBmaWVsZHMuIElmIHRoZQorICogICAgIGZpZWxkJ3MgdmFsdWUgaXMgb3V0IG9mIHJhbmdlLCB0aGUgbWV0aG9kIHNob3VsZCB0aHJvdyBhbgorICogICAgIDxjb2RlPklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjwvY29kZT4uIFRoZSBtZXRob2QgbWF5IGNhbGwKKyAqICAgICA8Y29kZT5zdXBlci52YWxpZGF0ZUZpZWxkKGZpZWxkKTwvY29kZT4gdG8gaGFuZGxlIGZpZWxkcyBpbiBhCisgKiAgICAgZ2VuZXJpYyB3YXksIHRoYXQgaXMsIHRvIGNvbXBhcmUgdGhlbSB0byB0aGUgcmFuZ2UKKyAqICAgICA8Y29kZT5nZXRNaW5pbXVtKGZpZWxkKTwvY29kZT4uLjxjb2RlPmdldE1heGltdW0oZmllbGQpPC9jb2RlPi48L2xpPgorICogCisgKiAgIDxsaT5PcHRpb25hbGx5LCBzdWJjbGFzc2VzIG1heSBvdmVycmlkZQorICogICAgIHtAbGluayAjaGFuZGxlQ3JlYXRlRmllbGRzfSB0byBjcmVhdGUgYW4gPGNvZGU+aW50W108L2NvZGU+CisgKiAgICAgYXJyYXkgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgdGhlIGNhbGVuZGFyJ3MgZmllbGRzLiBUaGlzIGlzIG9ubHkKKyAqICAgICBuZWNlc3NhcnkgaWYgdGhlIGNhbGVuZGFyIGRlZmluZXMgYWRkaXRpb25hbCBmaWVsZHMgYmV5b25kIHRob3NlCisgKiAgICAgZGVmaW5lZCBieSA8Y29kZT5DYWxlbmRhcjwvY29kZT4uIFRoZSBsZW5ndGggb2YgdGhlIHJlc3VsdCBtdXN0IGJlCisgKiAgICAgYXQgbGVhc3Qge0BsaW5rICNCQVNFX0ZJRUxEX0NPVU5UfSBhbmQgbm8gbW9yZSB0aGFuCisgKiAgICAge0BsaW5rICNNQVhfRklFTERfQ09VTlR9LjwvbGk+CisgKiAKKyAqICAgPGxpPk9wdGlvbmFsbHksIHN1YmNsYXNzZXMgbWF5IG92ZXJyaWRlCisgKiAgICAge0BsaW5rICNoYW5kbGVHZXREYXRlRm9ybWF0fSB0byBjcmVhdGUgYQorICogICAgIDxjb2RlPkRhdGVGb3JtYXQ8L2NvZGU+IGFwcHJvcHJpYXRlIHRvIHRoaXMgY2FsZW5kYXIuIFRoaXMgaXMgb25seQorICogICAgIHJlcXVpcmVkIGlmIGEgY2FsZW5kYXIgc3ViY2xhc3MgcmVkZWZpbmVzIHRoZSB1c2Ugb2YgYSBmaWVsZCAoZm9yCisgKiAgICAgZXhhbXBsZSwgY2hhbmdlcyB0aGUge0BsaW5rICNFUkF9IGZpZWxkIGZyb20gYSBzeW1ib2xpYyBmaWVsZAorICogICAgIHRvIGEgbnVtZXJpYyBvbmUpIG9yIGRlZmluZXMgYW4gYWRkaXRpb25hbCBmaWVsZC48L2xpPgorICogCisgKiAgIDxsaT5PcHRpb25hbGx5LCBzdWJjbGFzc2VzIG1heSBvdmVycmlkZSB7QGxpbmsgI3JvbGwgcm9sbH0gYW5kCisgKiAgICAge0BsaW5rICNhZGQgYWRkfSB0byBoYW5kbGUgZmllbGRzIHRoYXQgYXJlIGRpc2NvbnRpbnVvdXMuIEZvcgorICogICAgIGV4YW1wbGUsIGluIHRoZSBIZWJyZXcgY2FsZW5kYXIgdGhlIG1vbnRoICZxdW90O0FkYXIgSSZxdW90OyBvbmx5CisgKiAgICAgb2NjdXJzIGluIGxlYXAgeWVhcnM7IGluIG90aGVyIHllYXJzIHRoZSBjYWxlbmRhciBqdW1wcyBmcm9tCisgKiAgICAgU2hldmF0IChtb250aCAjNCkgdG8gQWRhciAobW9udGggIzYpLiBUaGUge0BsaW5rCisgKiAgICAgSGVicmV3Q2FsZW5kYXIjYWRkIEhlYnJld0NhbGVuZGFyLmFkZH0gYW5kIHtAbGluaworICogICAgIEhlYnJld0NhbGVuZGFyI3JvbGwgSGVicmV3Q2FsZW5kYXIucm9sbH0gbWV0aG9kcyB0YWtlIHRoaXMgaW50bworICogICAgIGFjY291bnQsIHNvIHRoYXQgYWRkaW5nIDEgbW9udGggdG8gU2hldmF0IGdpdmVzIHRoZSBwcm9wZXIgcmVzdWx0CisgKiAgICAgKEFkYXIpIGluIGEgbm9uLWxlYXAgeWVhci4gVGhlIHByb3RlY3RlZCB1dGlsaXR5IG1ldGhvZCB7QGxpbmsKKyAqICAgICAjcGluRmllbGQgcGluRmllbGR9IGlzIG9mdGVuIHVzZWZ1bCB3aGVuIGltcGxlbWVudGluZyB0aGVzZSB0d28KKyAqICAgICBtZXRob2RzLiA8L2xpPgorICogCisgKiA8L3VsPgorICogCisgKiA8cD48YmlnPjxiPk5vcm1hbGl6ZWQgYmVoYXZpb3I8L2I+PC9iaWc+CisgKiAKKyAqIDxwPlRoZSBiZWhhdmlvciBvZiBjZXJ0YWluIGZpZWxkcyBoYXMgYmVlbiBtYWRlIGNvbnNpc3RlbnQgYWNyb3NzIGFsbAorICogY2FsZW5kYXIgc3lzdGVtcyBhbmQgaW1wbGVtZW50ZWQgaW4gPGNvZGU+Q2FsZW5kYXI8L2NvZGU+LgorICogCisgKiA8dWw+CisgKiAKKyAqICAgPGxpPlRpbWUgaXMgbm9ybWFsaXplZC4gRXZlbiB0aG91Z2ggc29tZSBjYWxlbmRhciBzeXN0ZW1zIHRyYW5zaXRpb24KKyAqICAgICBiZXR3ZWVuIGRheXMgYXQgc3Vuc2V0IG9yIGF0IG90aGVyIHRpbWVzLCBhbGwgSUNVNEogY2FsZW5kYXJzCisgKiAgICAgdHJhbnNpdGlvbiBiZXR3ZWVuIGRheXMgYXQgPGVtPmxvY2FsIHpvbmUgbWlkbmlnaHQ8L2VtPi4gIFRoaXMKKyAqICAgICBhbGxvd3MgSUNVNEogdG8gY2VudHJhbGl6ZSB0aGUgdGltZSBjb21wdXRhdGlvbnMgaW4KKyAqICAgICA8Y29kZT5DYWxlbmRhcjwvY29kZT4gYW5kIHRvIG1haW50YWluIGJhc2ljIGNvcnJlcHNvbmRlbmNlcworICogICAgIGJldHdlZW4gY2FsZW5kYXIgc3lzdGVtcy4gQWZmZWN0ZWQgZmllbGRzOiB7QGxpbmsgI0FNX1BNfSwKKyAqICAgICB7QGxpbmsgI0hPVVJ9LCB7QGxpbmsgI0hPVVJfT0ZfREFZfSwge0BsaW5rICNNSU5VVEV9LAorICogICAgIHtAbGluayAjU0VDT05EfSwge0BsaW5rICNNSUxMSVNFQ09ORH0sCisgKiAgICAge0BsaW5rICNaT05FX09GRlNFVH0sIGFuZCB7QGxpbmsgI0RTVF9PRkZTRVR9LjwvbGk+CisgKiAKKyAqICAgPGxpPkRTVCBiZWhhdmlvciBpcyBub3JtYWxpemVkLiBEYXlsaWdodCBzYXZpbmdzIHRpbWUgYmVoYXZpb3IgaXMKKyAqICAgICBjb21wdXRlZCB0aGUgc2FtZSBmb3IgYWxsIGNhbGVuZGFyIHN5c3RlbXMsIGFuZCBkZXBlbmRzIG9uIHRoZQorICogICAgIHZhbHVlIG9mIHNldmVyYWwgPGNvZGU+R3JlZ29yaWFuQ2FsZW5kYXI8L2NvZGU+IGZpZWxkczogdGhlCisgKiAgICAge0BsaW5rICNZRUFSfSwge0BsaW5rICNNT05USH0sIGFuZAorICogICAgIHtAbGluayAjREFZX09GX01PTlRIfS4gQXMgYSByZXN1bHQsIDxjb2RlPkNhbGVuZGFyPC9jb2RlPgorICogICAgIGFsd2F5cyBjb21wdXRlcyB0aGVzZSBmaWVsZHMsIGV2ZW4gZm9yIG5vbi1HcmVnb3JpYW4gY2FsZW5kYXIKKyAqICAgICBzeXN0ZW1zLiBUaGVzZSBmaWVsZHMgYXJlIGF2YWlsYWJsZSB0byBzdWJjbGFzc2VzLjwvbGk+CisgKiAKKyAqICAgPGxpPldlZWtzIGFyZSBub3JtYWxpemVkLiBBbHRob3VnaCBsb2NhbGVzIGRlZmluZSB0aGUgd2VlaworICogICAgIGRpZmZlcmVudGx5LCBpbiB0ZXJtcyBvZiB0aGUgZGF5IG9uIHdoaWNoIGl0IHN0YXJ0cywgYW5kIHRoZQorICogICAgIGRlc2lnbmF0aW9uIG9mIHdlZWsgbnVtYmVyIG9uZSBvZiBhIG1vbnRoIG9yIHllYXIsIHRoZXkgYWxsIHVzZSBhCisgKiAgICAgY29tbW9uIG1lY2hhbmlzbS4gRnVydGhlcm1vcmUsIHRoZSBkYXkgb2YgdGhlIHdlZWsgaGFzIGEgc2ltcGxlCisgKiAgICAgYW5kIGNvbnNpc3RlbnQgZGVmaW5pdGlvbiB0aHJvdWdob3V0IGhpc3RvcnkuIEZvciBleGFtcGxlLAorICogICAgIGFsdGhvdWdoIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIgaW50cm9kdWNlZCBhIGRpc2NvbnRpbnVpdHkgd2hlbgorICogICAgIGZpcnN0IGluc3RpdHV0ZWQsIHRoZSBkYXkgb2Ygd2VlayB3YXMgbm90IGRpc3J1cHRlZC4gRm9yIHRoaXMKKyAqICAgICByZWFzb24sIHRoZSBmaWVsZHMge0BsaW5rICNEQVlfT0ZfV0VFS30sIDxjb2RlPldFRUtfT0ZfWUVBUiwKKyAqICAgICBXRUVLX09GX01PTlRIPC9jb2RlPiwge0BsaW5rICNEQVlfT0ZfV0VFS19JTl9NT05USH0sCisgKiAgICAge0BsaW5rICNET1dfTE9DQUx9LCB7QGxpbmsgI1lFQVJfV09ZfSBhcmUgYWxsIGNvbXB1dGVkIGluCisgKiAgICAgYSBjb25zaXN0ZW50IHdheSBpbiB0aGUgYmFzZSBjbGFzcywgYmFzZWQgb24gdGhlCisgKiAgICAge0BsaW5rICNFWFRFTkRFRF9ZRUFSfSwge0BsaW5rICNEQVlfT0ZfWUVBUn0sCisgKiAgICAge0BsaW5rICNNT05USH0sIGFuZCB7QGxpbmsgI0RBWV9PRl9NT05USH0sIHdoaWNoIGFyZQorICogICAgIGNvbXB1dGVkIGJ5IHRoZSBzdWJjbGFzcy48L2xpPgorICogCisgKiA8L3VsPgorICogCisgKiA8cD48YmlnPjxiPlN1cHBvcnRlZCByYW5nZTwvYj48L2JpZz4KKyAqIAorICogPHA+VGhlIGFsbG93YWJsZSByYW5nZSBvZiA8Y29kZT5DYWxlbmRhcjwvY29kZT4gaGFzIGJlZW4KKyAqIG5hcnJvd2VkLiA8Y29kZT5HcmVnb3JpYW5DYWxlbmRhcjwvY29kZT4gdXNlZCB0byBhdHRlbXB0IHRvIHN1cHBvcnQKKyAqIHRoZSByYW5nZSBvZiBkYXRlcyB3aXRoIG1pbGxpc2Vjb25kIHZhbHVlcyBmcm9tCisgKiA8Y29kZT5Mb25nLk1JTl9WQUxVRTwvY29kZT4gdG8gPGNvZGU+TG9uZy5NQVhfVkFMVUU8L2NvZGU+LiBUaGlzCisgKiBpbnRyb2R1Y2VkIGF3a3dhcmQgY29uc3RydWN0aW9ucyAoaGFja3MpIHdoaWNoIHNsb3dlZCBkb3duCisgKiBwZXJmb3JtYW5jZS4gSXQgYWxzbyBpbnRyb2R1Y2VkIG5vbi11bmlmb3JtIGJlaGF2aW9yIGF0IHRoZQorICogYm91bmRhcmllcy4gVGhlIG5ldyA8Y29kZT5DYWxlbmRhcjwvY29kZT4gcHJvdG9jb2wgc3BlY2lmaWVzIHRoZQorICogbWF4aW11bSByYW5nZSBvZiBzdXBwb3J0YWJsZSBkYXRlcyBhcyB0aG9zZSBoYXZpbmcgSnVsaWFuIGRheSBudW1iZXJzCisgKiBvZiA8Y29kZT4tMHg3RjAwMDAwMDwvY29kZT4gdG8gPGNvZGU+KzB4N0YwMDAwMDA8L2NvZGU+LiBUaGlzCisgKiBjb3JyZXNwb25kcyB0byB5ZWFycyBmcm9tIH41LDAwMCwwMDAgQkNFIHRvIH41LDAwMCwwMDAgQ0UuIFByb2dyYW1tZXJzCisgKiBzaG91bGQgdXNlIHRoZSBjb25zdGFudHMge0BsaW5rICNNSU5fREFURX0gKG9yCisgKiB7QGxpbmsgI01JTl9NSUxMSVN9IG9yIHtAbGluayAjTUlOX0pVTElBTn0pIGFuZAorICoge0BsaW5rICNNQVhfREFURX0gKG9yIHtAbGluayAjTUFYX01JTExJU30gb3IKKyAqIHtAbGluayAjTUFYX0pVTElBTn0pIGluIDxjb2RlPkNhbGVuZGFyPC9jb2RlPiB0byBzcGVjaWZ5IGFuCisgKiBleHRyZW1lbHkgZWFybHkgb3IgZXh0cmVtZWx5IGxhdGUgZGF0ZS48L3A+CisgKiAKKyAqIDxwPjxiaWc+PGI+R2VuZXJhbCBub3RlczwvYj48L2JpZz4KKyAqIAorICogPHVsPgorICogCisgKiAgIDxsaT5DYWxlbmRhcnMgaW1wbGVtZW50YXRpb25zIGFyZSA8ZW0+cHJvbGVwdGljPC9lbT4uIEZvciBleGFtcGxlLAorICogICAgIGV2ZW4gdGhvdWdoIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIgd2FzIG5vdCBpbnN0aXR1dGVkIHVudGlsIHRoZQorICogICAgIDE2dGggY2VudHVyeSwgdGhlIDxjb2RlPkdyZWdvcmlhbkNhbGVuZGFyPC9jb2RlPiBjbGFzcyBzdXBwb3J0cworICogICAgIGRhdGVzIGJlZm9yZSB0aGUgaGlzdG9yaWNhbCBvbnNldCBvZiB0aGUgY2FsZW5kYXIgYnkgZXh0ZW5kaW5nIHRoZQorICogICAgIGNhbGVuZGFyIHN5c3RlbSBiYWNrd2FyZCBpbiB0aW1lLiBTaW1pbGFybHksIHRoZQorICogICAgIDxjb2RlPkhlYnJld0NhbGVuZGFyPC9jb2RlPiBleHRlbmRzIGJhY2t3YXJkIGJlZm9yZSB0aGUgc3RhcnQgb2YKKyAqICAgICBpdHMgZXBvY2ggaW50byB6ZXJvIGFuZCBuZWdhdGl2ZSB5ZWFycy4gU3ViY2xhc3NlcyBkbyBub3QgdGhyb3cKKyAqICAgICBleGNlcHRpb25zIGJlY2F1c2UgYSBkYXRlIHByZWNlZGVzIHRoZSBoaXN0b3JpY2FsIHN0YXJ0IG9mIGEKKyAqICAgICBjYWxlbmRhciBzeXN0ZW0uIEluc3RlYWQsIHRoZXkgaW1wbGVtZW50CisgKiAgICAge0BsaW5rICNoYW5kbGVHZXRMaW1pdH0gdG8gcmV0dXJuIGFwcHJvcHJpYXRlIGxpbWl0cyBvbgorICogICAgIHtAbGluayAjWUVBUn0sIHtAbGluayAjRVJBfSwgZXRjLiBmaWVsZHMuIFRoZW4sIGlmIHRoZQorICogICAgIGNhbGVuZGFyIGlzIHNldCB0byBub3QgYmUgbGVuaWVudCwgb3V0LW9mLXJhbmdlIGZpZWxkIHZhbHVlcyB3aWxsCisgKiAgICAgdHJpZ2dlciBhbmQgZXhjZXB0aW9uLjwvbGk+CisgKiAKKyAqICAgPGxpPkNhbGVuZGFyIHN5c3RlbSBzdWJjbGFzc2VzIGNvbXB1dGUgYSA8ZW0+ZXh0ZW5kZWQKKyAqICAgICB5ZWFyPC9lbT4uIFRoaXMgZGlmZmVycyBmcm9tIHRoZSB7QGxpbmsgI1lFQVJ9IGZpZWxkIGluIHRoYXQKKyAqICAgICBpdCByYW5nZXMgb3ZlciBhbGwgaW50ZWdlciB2YWx1ZXMsIGluY2x1ZGluZyB6ZXJvIGFuZCBuZWdhdGl2ZQorICogICAgIHZhbHVlcywgYW5kIGl0IGVuY2Fwc3VsYXRlcyB0aGUgaW5mb3JtYXRpb24gb2YgdGhlCisgKiAgICAge0BsaW5rICNZRUFSfSBmaWVsZCBhbmQgYWxsIGxhcmdlciBmaWVsZHMuICBUaHVzLCBmb3IgdGhlCisgKiAgICAgR3JlZ29yaWFuIGNhbGVuZGFyLCB0aGUge0BsaW5rICNFWFRFTkRFRF9ZRUFSfSBpcyBjb21wdXRlZCBhcworICogICAgIDxjb2RlPkVSQT09QUQgPyBZRUFSIDogMS1ZRUFSPC9jb2RlPi4gQW5vdGhlciBleGFtcGxlIGlzIHRoZSBNYXlhbgorICogICAgIGxvbmcgY291bnQsIHdoaWNoIGhhcyB5ZWFycyAoPGNvZGU+S1VOPC9jb2RlPikgYW5kIG5lc3RlZCBjeWNsZXMKKyAqICAgICBvZiB5ZWFycyAoPGNvZGU+S0FUVU48L2NvZGU+IGFuZCA8Y29kZT5CQUtUVU48L2NvZGU+KS4gVGhlIE1heWFuCisgKiAgICAge0BsaW5rICNFWFRFTkRFRF9ZRUFSfSBpcyBjb21wdXRlZCBhcyA8Y29kZT5UVU4gKyAyMCAqIChLQVRVTgorICogICAgICsgMjAgKiBCQUtUVU4pPC9jb2RlPi4gVGhlIDxjb2RlPkNhbGVuZGFyPC9jb2RlPiBiYXNlIGNsYXNzIHVzZXMKKyAqICAgICB0aGUge0BsaW5rICNFWFRFTkRFRF9ZRUFSfSBmaWVsZCB0byBjb21wdXRlIHRoZSB3ZWVrLXJlbGF0ZWQKKyAqICAgICBmaWVsZHMuPC9saT4KKyAqIAorICogPC91bD4KKyAqCisgKiBAc2VlICAgICAgICAgIERhdGUKKyAqIEBzZWUgICAgICAgICAgR3JlZ29yaWFuQ2FsZW5kYXIKKyAqIEBzZWUgICAgICAgICAgVGltZVpvbmUKKyAqIEBzZWUgICAgICAgICAgRGF0ZUZvcm1hdAorICogQHZlcnNpb24gICAgICAkUmV2aXNpb246IDEuMTkgJCAkRGF0ZTogMjAwMC8xMS8zMCAyMTo1NDoxNiAkCisgKiBAYXV0aG9yIE1hcmsgRGF2aXMsIERhdmlkIEdvbGRzbWl0aCwgQ2hlbi1MaWVoIEh1YW5nLCBBbGFuIExpdSwgTGF1cmEgV2VybmVyCisgKiBAc2luY2UgSkRLMS4xCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBDYWxlbmRhciBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZSwgQ2xvbmVhYmxlIHsKKworICAgIC8vIERhdGEgZmxvdyBpbiBDYWxlbmRhcgorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gVGhlIGN1cnJlbnQgdGltZSBpcyByZXByZXNlbnRlZCBpbiB0d28gd2F5cyBieSBDYWxlbmRhcjogYXMgVVRDCisgICAgLy8gbWlsbGlzZWNvbmRzIGZyb20gdGhlIGVwb2NoIHN0YXJ0ICgxIEphbnVhcnkgMTk3MCAwOjAwIFVUQyksIGFuZCBhcyBsb2NhbAorICAgIC8vIGZpZWxkcyBzdWNoIGFzIE1PTlRILCBIT1VSLCBBTV9QTSwgZXRjLiAgSXQgaXMgcG9zc2libGUgdG8gY29tcHV0ZSB0aGUKKyAgICAvLyBtaWxsaXMgZnJvbSB0aGUgZmllbGRzLCBhbmQgdmljZSB2ZXJzYS4gIFRoZSBkYXRhIG5lZWRlZCB0byBkbyB0aGlzCisgICAgLy8gY29udmVyc2lvbiBpcyBlbmNhcHN1bGF0ZWQgYnkgYSBUaW1lWm9uZSBvYmplY3Qgb3duZWQgYnkgdGhlIENhbGVuZGFyLgorICAgIC8vIFRoZSBkYXRhIHByb3ZpZGVkIGJ5IHRoZSBUaW1lWm9uZSBvYmplY3QgbWF5IGFsc28gYmUgb3ZlcnJpZGRlbiBpZiB0aGUKKyAgICAvLyB1c2VyIHNldHMgdGhlIFpPTkVfT0ZGU0VUIGFuZC9vciBEU1RfT0ZGU0VUIGZpZWxkcyBkaXJlY3RseS4gVGhlIGNsYXNzCisgICAgLy8ga2VlcHMgdHJhY2sgb2Ygd2hhdCBpbmZvcm1hdGlvbiB3YXMgbW9zdCByZWNlbnRseSBzZXQgYnkgdGhlIGNhbGxlciwgYW5kCisgICAgLy8gdXNlcyB0aGF0IHRvIGNvbXB1dGUgYW55IG90aGVyIGluZm9ybWF0aW9uIGFzIG5lZWRlZC4KKworICAgIC8vIElmIHRoZSB1c2VyIHNldHMgdGhlIGZpZWxkcyB1c2luZyBzZXQoKSwgdGhlIGRhdGEgZmxvdyBpcyBhcyBmb2xsb3dzLgorICAgIC8vIFRoaXMgaXMgaW1wbGVtZW50ZWQgYnkgdGhlIENhbGVuZGFyIHN1YmNsYXNzJ3MgY29tcHV0ZVRpbWUoKSBtZXRob2QuCisgICAgLy8gRHVyaW5nIHRoaXMgcHJvY2VzcywgY2VydGFpbiBmaWVsZHMgbWF5IGJlIGlnbm9yZWQuICBUaGUgZGlzYW1iaWd1YXRpb24KKyAgICAvLyBhbGdvcml0aG0gZm9yIHJlc29sdmluZyB3aGljaCBmaWVsZHMgdG8gcGF5IGF0dGVudGlvbiB0byBpcyBkZXNjcmliZWQKKyAgICAvLyBhYm92ZS4KKworICAgIC8vICAgbG9jYWwgZmllbGRzIChZRUFSLCBNT05USCwgREFURSwgSE9VUiwgTUlOVVRFLCBldGMuKQorICAgIC8vICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgIHwgVXNpbmcgQ2FsZW5kYXItc3BlY2lmaWMgYWxnb3JpdGhtCisgICAgLy8gICAgICAgICAgIFYKKyAgICAvLyAgIGxvY2FsIHN0YW5kYXJkIG1pbGxpcworICAgIC8vICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgIHwgVXNpbmcgVGltZVpvbmUgb3IgdXNlci1zZXQgWk9ORV9PRkZTRVQgLyBEU1RfT0ZGU0VUCisgICAgLy8gICAgICAgICAgIFYKKyAgICAvLyAgIFVUQyBtaWxsaXMgKGluIHRpbWUgZGF0YSBtZW1iZXIpCisKKyAgICAvLyBJZiB0aGUgdXNlciBzZXRzIHRoZSBVVEMgbWlsbGlzIHVzaW5nIHNldFRpbWUoKSwgdGhlIGRhdGEgZmxvdyBpcyBhcworICAgIC8vIGZvbGxvd3MuICBUaGlzIGlzIGltcGxlbWVudGVkIGJ5IHRoZSBDYWxlbmRhciBzdWJjbGFzcydzIGNvbXB1dGVGaWVsZHMoKQorICAgIC8vIG1ldGhvZC4KKworICAgIC8vICAgVVRDIG1pbGxpcyAoaW4gdGltZSBkYXRhIG1lbWJlcikKKyAgICAvLyAgICAgICAgICAgfAorICAgIC8vICAgICAgICAgICB8IFVzaW5nIFRpbWVab25lIGdldE9mZnNldCgpCisgICAgLy8gICAgICAgICAgIFYKKyAgICAvLyAgIGxvY2FsIHN0YW5kYXJkIG1pbGxpcworICAgIC8vICAgICAgICAgICB8CisgICAgLy8gICAgICAgICAgIHwgVXNpbmcgQ2FsZW5kYXItc3BlY2lmaWMgYWxnb3JpdGhtCisgICAgLy8gICAgICAgICAgIFYKKyAgICAvLyAgIGxvY2FsIGZpZWxkcyAoWUVBUiwgTU9OVEgsIERBVEUsIEhPVVIsIE1JTlVURSwgZXRjLikKKworICAgIC8vIEluIGdlbmVyYWwsIGEgcm91bmQgdHJpcCBmcm9tIGZpZWxkcywgdGhyb3VnaCBsb2NhbCBhbmQgVVRDIG1pbGxpcywgYW5kCisgICAgLy8gYmFjayBvdXQgdG8gZmllbGRzIGlzIG1hZGUgd2hlbiBuZWNlc3NhcnkuICBUaGlzIGlzIGltcGxlbWVudGVkIGJ5IHRoZQorICAgIC8vIGNvbXBsZXRlKCkgbWV0aG9kLiAgUmVzb2x2aW5nIGEgcGFydGlhbCBzZXQgb2YgZmllbGRzIGludG8gYSBVVEMgbWlsbGlzCisgICAgLy8gdmFsdWUgYWxsb3dzIGFsbCByZW1haW5pbmcgZmllbGRzIHRvIGJlIGdlbmVyYXRlZCBmcm9tIHRoYXQgdmFsdWUuICBJZgorICAgIC8vIHRoZSBDYWxlbmRhciBpcyBsZW5pZW50LCB0aGUgZmllbGRzIGFyZSBhbHNvIHJlbm9ybWFsaXplZCB0byBzdGFuZGFyZAorICAgIC8vIHJhbmdlcyB3aGVuIHRoZXkgYXJlIHJlZ2VuZXJhdGVkLgorCisgICAgLyoqCisgICAgICogRmllbGQgbnVtYmVyIGZvciA8Y29kZT5nZXQ8L2NvZGU+IGFuZCA8Y29kZT5zZXQ8L2NvZGU+IGluZGljYXRpbmcgdGhlCisgICAgICogZXJhLCBlLmcuLCBBRCBvciBCQyBpbiB0aGUgSnVsaWFuIGNhbGVuZGFyLiBUaGlzIGlzIGEgY2FsZW5kYXItc3BlY2lmaWMKKyAgICAgKiB2YWx1ZTsgc2VlIHN1YmNsYXNzIGRvY3VtZW50YXRpb24uCisgICAgICogQHNlZSBHcmVnb3JpYW5DYWxlbmRhciNBRAorICAgICAqIEBzZWUgR3JlZ29yaWFuQ2FsZW5kYXIjQkMKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBFUkEgPSAwOworICAgIC8qKgorICAgICAqIEZpZWxkIG51bWJlciBmb3IgPGNvZGU+Z2V0PC9jb2RlPiBhbmQgPGNvZGU+c2V0PC9jb2RlPiBpbmRpY2F0aW5nIHRoZQorICAgICAqIHllYXIuIFRoaXMgaXMgYSBjYWxlbmRhci1zcGVjaWZpYyB2YWx1ZTsgc2VlIHN1YmNsYXNzIGRvY3VtZW50YXRpb24uCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgWUVBUiA9IDE7CisgICAgLyoqCisgICAgICogRmllbGQgbnVtYmVyIGZvciA8Y29kZT5nZXQ8L2NvZGU+IGFuZCA8Y29kZT5zZXQ8L2NvZGU+IGluZGljYXRpbmcgdGhlCisgICAgICogbW9udGguIFRoaXMgaXMgYSBjYWxlbmRhci1zcGVjaWZpYyB2YWx1ZS4gVGhlIGZpcnN0IG1vbnRoIG9mIHRoZSB5ZWFyIGlzCisgICAgICogPGNvZGU+SkFOVUFSWTwvY29kZT47IHRoZSBsYXN0IGRlcGVuZHMgb24gdGhlIG51bWJlciBvZiBtb250aHMgaW4gYSB5ZWFyLgorICAgICAqIEBzZWUgI0pBTlVBUlkKKyAgICAgKiBAc2VlICNGRUJSVUFSWQorICAgICAqIEBzZWUgI01BUkNICisgICAgICogQHNlZSAjQVBSSUwKKyAgICAgKiBAc2VlICNNQVkKKyAgICAgKiBAc2VlICNKVU5FCisgICAgICogQHNlZSAjSlVMWQorICAgICAqIEBzZWUgI0FVR1VTVAorICAgICAqIEBzZWUgI1NFUFRFTUJFUgorICAgICAqIEBzZWUgI09DVE9CRVIKKyAgICAgKiBAc2VlICNOT1ZFTUJFUgorICAgICAqIEBzZWUgI0RFQ0VNQkVSCisgICAgICogQHNlZSAjVU5ERUNJTUJFUgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IE1PTlRIID0gMjsKKyAgICAvKioKKyAgICAgKiBGaWVsZCBudW1iZXIgZm9yIDxjb2RlPmdldDwvY29kZT4gYW5kIDxjb2RlPnNldDwvY29kZT4gaW5kaWNhdGluZyB0aGUKKyAgICAgKiB3ZWVrIG51bWJlciB3aXRoaW4gdGhlIGN1cnJlbnQgeWVhci4gIFRoZSBmaXJzdCB3ZWVrIG9mIHRoZSB5ZWFyLCBhcworICAgICAqIGRlZmluZWQgYnkgPGNvZGU+Z2V0Rmlyc3REYXlPZldlZWsoKTwvY29kZT4gYW5kCisgICAgICogPGNvZGU+Z2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpPC9jb2RlPiwgaGFzIHZhbHVlIDEuICBTdWJjbGFzc2VzIGRlZmluZQorICAgICAqIHRoZSB2YWx1ZSBvZiA8Y29kZT5XRUVLX09GX1lFQVI8L2NvZGU+IGZvciBkYXlzIGJlZm9yZSB0aGUgZmlyc3Qgd2VlayBvZgorICAgICAqIHRoZSB5ZWFyLgorICAgICAqIEBzZWUgI2dldEZpcnN0RGF5T2ZXZWVrCisgICAgICogQHNlZSAjZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlaworICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFdFRUtfT0ZfWUVBUiA9IDM7CisgICAgLyoqCisgICAgICogRmllbGQgbnVtYmVyIGZvciA8Y29kZT5nZXQ8L2NvZGU+IGFuZCA8Y29kZT5zZXQ8L2NvZGU+IGluZGljYXRpbmcgdGhlCisgICAgICogd2VlayBudW1iZXIgd2l0aGluIHRoZSBjdXJyZW50IG1vbnRoLiAgVGhlIGZpcnN0IHdlZWsgb2YgdGhlIG1vbnRoLCBhcworICAgICAqIGRlZmluZWQgYnkgPGNvZGU+Z2V0Rmlyc3REYXlPZldlZWsoKTwvY29kZT4gYW5kCisgICAgICogPGNvZGU+Z2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpPC9jb2RlPiwgaGFzIHZhbHVlIDEuICBTdWJjbGFzc2VzIGRlZmluZQorICAgICAqIHRoZSB2YWx1ZSBvZiA8Y29kZT5XRUVLX09GX01PTlRIPC9jb2RlPiBmb3IgZGF5cyBiZWZvcmUgdGhlIGZpcnN0IHdlZWsgb2YKKyAgICAgKiB0aGUgbW9udGguCisgICAgICogQHNlZSAjZ2V0Rmlyc3REYXlPZldlZWsKKyAgICAgKiBAc2VlICNnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgV0VFS19PRl9NT05USCA9IDQ7CisgICAgLyoqCisgICAgICogRmllbGQgbnVtYmVyIGZvciA8Y29kZT5nZXQ8L2NvZGU+IGFuZCA8Y29kZT5zZXQ8L2NvZGU+IGluZGljYXRpbmcgdGhlCisgICAgICogZGF5IG9mIHRoZSBtb250aC4gVGhpcyBpcyBhIHN5bm9ueW0gZm9yIDxjb2RlPkRBWV9PRl9NT05USDwvY29kZT4uCisgICAgICogVGhlIGZpcnN0IGRheSBvZiB0aGUgbW9udGggaGFzIHZhbHVlIDEuCisgICAgICogQHNlZSAjREFZX09GX01PTlRICisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgREFURSA9IDU7CisgICAgLyoqCisgICAgICogRmllbGQgbnVtYmVyIGZvciA8Y29kZT5nZXQ8L2NvZGU+IGFuZCA8Y29kZT5zZXQ8L2NvZGU+IGluZGljYXRpbmcgdGhlCisgICAgICogZGF5IG9mIHRoZSBtb250aC4gVGhpcyBpcyBhIHN5bm9ueW0gZm9yIDxjb2RlPkRBVEU8L2NvZGU+LgorICAgICAqIFRoZSBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoIGhhcyB2YWx1ZSAxLgorICAgICAqIEBzZWUgI0RBVEUKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBEQVlfT0ZfTU9OVEggPSA1OworICAgIC8qKgorICAgICAqIEZpZWxkIG51bWJlciBmb3IgPGNvZGU+Z2V0PC9jb2RlPiBhbmQgPGNvZGU+c2V0PC9jb2RlPiBpbmRpY2F0aW5nIHRoZSBkYXkKKyAgICAgKiBudW1iZXIgd2l0aGluIHRoZSBjdXJyZW50IHllYXIuICBUaGUgZmlyc3QgZGF5IG9mIHRoZSB5ZWFyIGhhcyB2YWx1ZSAxLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IERBWV9PRl9ZRUFSID0gNjsKKyAgICAvKioKKyAgICAgKiBGaWVsZCBudW1iZXIgZm9yIDxjb2RlPmdldDwvY29kZT4gYW5kIDxjb2RlPnNldDwvY29kZT4gaW5kaWNhdGluZyB0aGUgZGF5CisgICAgICogb2YgdGhlIHdlZWsuICBUaGlzIGZpZWxkIHRha2VzIHZhbHVlcyA8Y29kZT5TVU5EQVk8L2NvZGU+LAorICAgICAqIDxjb2RlPk1PTkRBWTwvY29kZT4sIDxjb2RlPlRVRVNEQVk8L2NvZGU+LCA8Y29kZT5XRURORVNEQVk8L2NvZGU+LAorICAgICAqIDxjb2RlPlRIVVJTREFZPC9jb2RlPiwgPGNvZGU+RlJJREFZPC9jb2RlPiwgYW5kIDxjb2RlPlNBVFVSREFZPC9jb2RlPi4KKyAgICAgKiBAc2VlICNTVU5EQVkKKyAgICAgKiBAc2VlICNNT05EQVkKKyAgICAgKiBAc2VlICNUVUVTREFZCisgICAgICogQHNlZSAjV0VETkVTREFZCisgICAgICogQHNlZSAjVEhVUlNEQVkKKyAgICAgKiBAc2VlICNGUklEQVkKKyAgICAgKiBAc2VlICNTQVRVUkRBWQorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IERBWV9PRl9XRUVLID0gNzsKKyAgICAvKioKKyAgICAgKiBGaWVsZCBudW1iZXIgZm9yIDxjb2RlPmdldDwvY29kZT4gYW5kIDxjb2RlPnNldDwvY29kZT4gaW5kaWNhdGluZyB0aGUKKyAgICAgKiBvcmRpbmFsIG51bWJlciBvZiB0aGUgZGF5IG9mIHRoZSB3ZWVrIHdpdGhpbiB0aGUgY3VycmVudCBtb250aC4gVG9nZXRoZXIKKyAgICAgKiB3aXRoIHRoZSA8Y29kZT5EQVlfT0ZfV0VFSzwvY29kZT4gZmllbGQsIHRoaXMgdW5pcXVlbHkgc3BlY2lmaWVzIGEgZGF5CisgICAgICogd2l0aGluIGEgbW9udGguICBVbmxpa2UgPGNvZGU+V0VFS19PRl9NT05USDwvY29kZT4gYW5kCisgICAgICogPGNvZGU+V0VFS19PRl9ZRUFSPC9jb2RlPiwgdGhpcyBmaWVsZCdzIHZhbHVlIGRvZXMgPGVtPm5vdDwvZW0+IGRlcGVuZCBvbgorICAgICAqIDxjb2RlPmdldEZpcnN0RGF5T2ZXZWVrKCk8L2NvZGU+IG9yCisgICAgICogPGNvZGU+Z2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpPC9jb2RlPi4gIDxjb2RlPkRBWV9PRl9NT05USCAxPC9jb2RlPgorICAgICAqIHRocm91Z2ggPGNvZGU+NzwvY29kZT4gYWx3YXlzIGNvcnJlc3BvbmQgdG8gPGNvZGU+REFZX09GX1dFRUtfSU5fTU9OVEgKKyAgICAgKiAxPC9jb2RlPjsgPGNvZGU+ODwvY29kZT4gdGhyb3VnaCA8Y29kZT4xNTwvY29kZT4gY29ycmVzcG9uZCB0bworICAgICAqIDxjb2RlPkRBWV9PRl9XRUVLX0lOX01PTlRIIDI8L2NvZGU+LCBhbmQgc28gb24uCisgICAgICogPGNvZGU+REFZX09GX1dFRUtfSU5fTU9OVEggMDwvY29kZT4gaW5kaWNhdGVzIHRoZSB3ZWVrIGJlZm9yZQorICAgICAqIDxjb2RlPkRBWV9PRl9XRUVLX0lOX01PTlRIIDE8L2NvZGU+LiAgTmVnYXRpdmUgdmFsdWVzIGNvdW50IGJhY2sgZnJvbSB0aGUKKyAgICAgKiBlbmQgb2YgdGhlIG1vbnRoLCBzbyB0aGUgbGFzdCBTdW5kYXkgb2YgYSBtb250aCBpcyBzcGVjaWZpZWQgYXMKKyAgICAgKiA8Y29kZT5EQVlfT0ZfV0VFSyA9IFNVTkRBWSwgREFZX09GX1dFRUtfSU5fTU9OVEggPSAtMTwvY29kZT4uICBCZWNhdXNlCisgICAgICogbmVnYXRpdmUgdmFsdWVzIGNvdW50IGJhY2t3YXJkIHRoZXkgd2lsbCB1c3VhbGx5IGJlIGFsaWduZWQgZGlmZmVyZW50bHkKKyAgICAgKiB3aXRoaW4gdGhlIG1vbnRoIHRoYW4gcG9zaXRpdmUgdmFsdWVzLiAgRm9yIGV4YW1wbGUsIGlmIGEgbW9udGggaGFzIDMxCisgICAgICogZGF5cywgPGNvZGU+REFZX09GX1dFRUtfSU5fTU9OVEggLTE8L2NvZGU+IHdpbGwgb3ZlcmxhcAorICAgICAqIDxjb2RlPkRBWV9PRl9XRUVLX0lOX01PTlRIIDU8L2NvZGU+IGFuZCB0aGUgZW5kIG9mIDxjb2RlPjQ8L2NvZGU+LgorICAgICAqIEBzZWUgI0RBWV9PRl9XRUVLCisgICAgICogQHNlZSAjV0VFS19PRl9NT05USAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IERBWV9PRl9XRUVLX0lOX01PTlRIID0gODsKKyAgICAvKioKKyAgICAgKiBGaWVsZCBudW1iZXIgZm9yIDxjb2RlPmdldDwvY29kZT4gYW5kIDxjb2RlPnNldDwvY29kZT4gaW5kaWNhdGluZworICAgICAqIHdoZXRoZXIgdGhlIDxjb2RlPkhPVVI8L2NvZGU+IGlzIGJlZm9yZSBvciBhZnRlciBub29uLgorICAgICAqIEUuZy4sIGF0IDEwOjA0OjE1LjI1MCBQTSB0aGUgPGNvZGU+QU1fUE08L2NvZGU+IGlzIDxjb2RlPlBNPC9jb2RlPi4KKyAgICAgKiBAc2VlICNBTQorICAgICAqIEBzZWUgI1BNCisgICAgICogQHNlZSAjSE9VUgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IEFNX1BNID0gOTsKKyAgICAvKioKKyAgICAgKiBGaWVsZCBudW1iZXIgZm9yIDxjb2RlPmdldDwvY29kZT4gYW5kIDxjb2RlPnNldDwvY29kZT4gaW5kaWNhdGluZyB0aGUKKyAgICAgKiBob3VyIG9mIHRoZSBtb3JuaW5nIG9yIGFmdGVybm9vbi4gPGNvZGU+SE9VUjwvY29kZT4gaXMgdXNlZCBmb3IgdGhlIDEyLWhvdXIKKyAgICAgKiBjbG9jay4KKyAgICAgKiBFLmcuLCBhdCAxMDowNDoxNS4yNTAgUE0gdGhlIDxjb2RlPkhPVVI8L2NvZGU+IGlzIDEwLgorICAgICAqIEBzZWUgI0FNX1BNCisgICAgICogQHNlZSAjSE9VUl9PRl9EQVkKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBIT1VSID0gMTA7CisgICAgLyoqCisgICAgICogRmllbGQgbnVtYmVyIGZvciA8Y29kZT5nZXQ8L2NvZGU+IGFuZCA8Y29kZT5zZXQ8L2NvZGU+IGluZGljYXRpbmcgdGhlCisgICAgICogaG91ciBvZiB0aGUgZGF5LiA8Y29kZT5IT1VSX09GX0RBWTwvY29kZT4gaXMgdXNlZCBmb3IgdGhlIDI0LWhvdXIgY2xvY2suCisgICAgICogRS5nLiwgYXQgMTA6MDQ6MTUuMjUwIFBNIHRoZSA8Y29kZT5IT1VSX09GX0RBWTwvY29kZT4gaXMgMjIuCisgICAgICogQHNlZSAjSE9VUgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IEhPVVJfT0ZfREFZID0gMTE7CisgICAgLyoqCisgICAgICogRmllbGQgbnVtYmVyIGZvciA8Y29kZT5nZXQ8L2NvZGU+IGFuZCA8Y29kZT5zZXQ8L2NvZGU+IGluZGljYXRpbmcgdGhlCisgICAgICogbWludXRlIHdpdGhpbiB0aGUgaG91ci4KKyAgICAgKiBFLmcuLCBhdCAxMDowNDoxNS4yNTAgUE0gdGhlIDxjb2RlPk1JTlVURTwvY29kZT4gaXMgNC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBNSU5VVEUgPSAxMjsKKyAgICAvKioKKyAgICAgKiBGaWVsZCBudW1iZXIgZm9yIDxjb2RlPmdldDwvY29kZT4gYW5kIDxjb2RlPnNldDwvY29kZT4gaW5kaWNhdGluZyB0aGUKKyAgICAgKiBzZWNvbmQgd2l0aGluIHRoZSBtaW51dGUuCisgICAgICogRS5nLiwgYXQgMTA6MDQ6MTUuMjUwIFBNIHRoZSA8Y29kZT5TRUNPTkQ8L2NvZGU+IGlzIDE1LgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFNFQ09ORCA9IDEzOworICAgIC8qKgorICAgICAqIEZpZWxkIG51bWJlciBmb3IgPGNvZGU+Z2V0PC9jb2RlPiBhbmQgPGNvZGU+c2V0PC9jb2RlPiBpbmRpY2F0aW5nIHRoZQorICAgICAqIG1pbGxpc2Vjb25kIHdpdGhpbiB0aGUgc2Vjb25kLgorICAgICAqIEUuZy4sIGF0IDEwOjA0OjE1LjI1MCBQTSB0aGUgPGNvZGU+TUlMTElTRUNPTkQ8L2NvZGU+IGlzIDI1MC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBNSUxMSVNFQ09ORCA9IDE0OworICAgIC8qKgorICAgICAqIEZpZWxkIG51bWJlciBmb3IgPGNvZGU+Z2V0PC9jb2RlPiBhbmQgPGNvZGU+c2V0PC9jb2RlPiBpbmRpY2F0aW5nIHRoZQorICAgICAqIHJhdyBvZmZzZXQgZnJvbSBHTVQgaW4gbWlsbGlzZWNvbmRzLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFpPTkVfT0ZGU0VUID0gMTU7CisgICAgLyoqCisgICAgICogRmllbGQgbnVtYmVyIGZvciA8Y29kZT5nZXQ8L2NvZGU+IGFuZCA8Y29kZT5zZXQ8L2NvZGU+IGluZGljYXRpbmcgdGhlCisgICAgICogZGF5bGlnaHQgc2F2aW5ncyBvZmZzZXQgaW4gbWlsbGlzZWNvbmRzLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IERTVF9PRkZTRVQgPSAxNjsKKworICAgIC8qKgorICAgICAqIEZpZWxkIG51bWJlciBmb3IgPGNvZGU+Z2V0KCk8L2NvZGU+IGFuZCA8Y29kZT5zZXQoKTwvY29kZT4KKyAgICAgKiBpbmRpY2F0aW5nIHRoZSBleHRlbmRlZCB5ZWFyIGNvcnJlc3BvbmRpbmcgdG8gdGhlCisgICAgICogPGNvZGU+V0VFS19PRl9ZRUFSPC9jb2RlPiBmaWVsZC4gIFRoaXMgbWF5IGJlIG9uZSBncmVhdGVyIG9yIGxlc3MKKyAgICAgKiB0aGFuIHRoZSB2YWx1ZSBvZiA8Y29kZT5FWFRFTkRFRF9ZRUFSPC9jb2RlPi4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBZRUFSX1dPWSA9IDE3OworCisgICAgLyoqCisgICAgICogRmllbGQgbnVtYmVyIGZvciA8Y29kZT5nZXQoKTwvY29kZT4gYW5kIDxjb2RlPnNldCgpPC9jb2RlPgorICAgICAqIGluZGljYXRpbmcgdGhlIGxvY2FsaXplZCBkYXkgb2Ygd2Vlay4gIFRoaXMgd2lsbCBiZSBhIHZhbHVlIGZyb20gMQorICAgICAqIHRvIDcgaW5jbHVzaXZlLCB3aXRoIDEgYmVpbmcgdGhlIGxvY2FsaXplZCBmaXJzdCBkYXkgb2YgdGhlIHdlZWsuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRE9XX0xPQ0FMID0gMTg7CisKKyAgICAvKioKKyAgICAgKiBGaWVsZCBudW1iZXIgZm9yIDxjb2RlPmdldCgpPC9jb2RlPiBhbmQgPGNvZGU+c2V0KCk8L2NvZGU+CisgICAgICogaW5kaWNhdGluZyB0aGUgZXh0ZW5kZWQgeWVhci4gIFRoaXMgaXMgYSBzaW5nbGUgbnVtYmVyIGRlc2lnbmF0aW5nCisgICAgICogdGhlIHllYXIgb2YgdGhpcyBjYWxlbmRhciBzeXN0ZW0sIGVuY29tcGFzc2luZyBhbGwgc3VwcmEteWVhcgorICAgICAqIGZpZWxkcy4gIEZvciBleGFtcGxlLCBmb3IgdGhlIEp1bGlhbiBjYWxlbmRhciBzeXN0ZW0sIHllYXIgbnVtYmVycworICAgICAqIGFyZSBwb3NpdGl2ZSwgd2l0aCBhbiBlcmEgb2YgQkNFIG9yIENFLiAgQW4gZXh0ZW5kZWQgeWVhciB2YWx1ZSBmb3IKKyAgICAgKiB0aGUgSnVsaWFuIGNhbGVuZGFyIHN5c3RlbSBhc3NpZ25zIHBvc2l0aXZlIHZhbHVlcyB0byBDRSB5ZWFycyBhbmQKKyAgICAgKiBuZWdhdGl2ZSB2YWx1ZXMgdG8gQkNFIHllYXJzLCB3aXRoIDEgQkNFIGJlaW5nIHllYXIgMC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFWFRFTkRFRF9ZRUFSID0gMTk7CisKKyAgICAvKioKKyAgICAgKiBGaWVsZCBudW1iZXIgZm9yIDxjb2RlPmdldCgpPC9jb2RlPiBhbmQgPGNvZGU+c2V0KCk8L2NvZGU+CisgICAgICogaW5kaWNhdGluZyB0aGUgbW9kaWZpZWQgSnVsaWFuIGRheSBudW1iZXIuICBUaGlzIGlzIGRpZmZlcmVudCBmcm9tCisgICAgICogdGhlIGNvbnZlbnRpb25hbCBKdWxpYW4gZGF5IG51bWJlciBpbiB0d28gcmVnYXJkcy4gIEZpcnN0LCBpdAorICAgICAqIGRlbWFyY2F0ZXMgZGF5cyBhdCBsb2NhbCB6b25lIG1pZG5pZ2h0LCByYXRoZXIgdGhhbiBub29uIEdNVC4KKyAgICAgKiBTZWNvbmQsIGl0IGlzIGEgbG9jYWwgbnVtYmVyOyB0aGF0IGlzLCBpdCBkZXBlbmRzIG9uIHRoZSBsb2NhbCB0aW1lCisgICAgICogem9uZS4gIEl0IGNhbiBiZSB0aG91Z2h0IG9mIGFzIGEgc2luZ2xlIG51bWJlciB0aGF0IGVuY29tcGFzc2VzIGFsbAorICAgICAqIHRoZSBkYXRlLXJlbGF0ZWQgZmllbGRzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEpVTElBTl9EQVkgPSAyMDsKKworICAgIC8qKgorICAgICAqIEZpZWxkIG51bWJlciBmb3IgPGNvZGU+Z2V0KCk8L2NvZGU+IGFuZCA8Y29kZT5zZXQoKTwvY29kZT4KKyAgICAgKiBpbmRpY2F0aW5nIHRoZSBtaWxsaXNlY29uZHMgaW4gdGhlIGRheS4gIFRoaXMgcmFuZ2VzIGZyb20gMCB0bworICAgICAqIDIzOjU5OjU5Ljk5OSAocmVnYXJkbGVzcyBvZiBEU1QpLiAgVGhpcyBmaWVsZCBiZWhhdmVzCisgICAgICogPGVtPmV4YWN0bHk8L2VtPiBsaWtlIGEgY29tcG9zaXRlIG9mIGFsbCB0aW1lLXJlbGF0ZWQgZmllbGRzLCBub3QKKyAgICAgKiBpbmNsdWRpbmcgdGhlIHpvbmUgZmllbGRzLiAgQXMgc3VjaCwgaXQgYWxzbyByZWZsZWN0cworICAgICAqIGRpc2NvbnRpbnVpdGllcyBvZiB0aG9zZSBmaWVsZHMgb24gRFNUIHRyYW5zaXRpb24gZGF5cy4gIE9uIGEgZGF5IG9mCisgICAgICogRFNUIG9uc2V0LCBpdCB3aWxsIGp1bXAgZm9yd2FyZC4gIE9uIGEgZGF5IG9mIERTVCBjZXNzYXRpb24sIGl0IHdpbGwKKyAgICAgKiBqdW1wIGJhY2t3YXJkLiAgVGhpcyByZWZsZWN0cyB0aGUgZmFjdCB0aGF0IGlzIG11c3QgYmUgY29tYmluZWQgd2l0aAorICAgICAqIHRoZSBEU1RfT0ZGU0VUIGZpZWxkIHRvIG9idGFpbiBhIHVuaXF1ZSBsb2NhbCB0aW1lIHZhbHVlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1JTExJU0VDT05EU19JTl9EQVkgPSAyMTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBUaGUgbnVtYmVyIG9mIGZpZWxkcyBkZWZpbmVkIGJ5IHRoaXMgY2xhc3MuICBTdWJjbGFzc2VzIG1heSBkZWZpbmUKKyAgICAgKiBhZGRpdGlvbiBmaWVsZHMgc3RhcnRpbmcgd2l0aCB0aGlzIG51bWJlci4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBCQVNFX0ZJRUxEX0NPVU5UID0gMjI7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgZmllbGRzIHBvc3NpYmxlLiAgU3ViY2xhc3NlcyBtdXN0IG5vdCBkZWZpbmUKKyAgICAgKiBtb3JlIHRvdGFsIGZpZWxkcyB0aGFuIHRoaXMgbnVtYmVyLgorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IE1BWF9GSUVMRF9DT1VOVCA9IDMyOworCisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIDxjb2RlPkRBWV9PRl9XRUVLPC9jb2RlPiBmaWVsZCBpbmRpY2F0aW5nCisgICAgICogU3VuZGF5LgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFNVTkRBWSA9IDE7CisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIDxjb2RlPkRBWV9PRl9XRUVLPC9jb2RlPiBmaWVsZCBpbmRpY2F0aW5nCisgICAgICogTW9uZGF5LgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IE1PTkRBWSA9IDI7CisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIDxjb2RlPkRBWV9PRl9XRUVLPC9jb2RlPiBmaWVsZCBpbmRpY2F0aW5nCisgICAgICogVHVlc2RheS4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBUVUVTREFZID0gMzsKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBvZiB0aGUgPGNvZGU+REFZX09GX1dFRUs8L2NvZGU+IGZpZWxkIGluZGljYXRpbmcKKyAgICAgKiBXZWRuZXNkYXkuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgV0VETkVTREFZID0gNDsKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBvZiB0aGUgPGNvZGU+REFZX09GX1dFRUs8L2NvZGU+IGZpZWxkIGluZGljYXRpbmcKKyAgICAgKiBUaHVyc2RheS4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBUSFVSU0RBWSA9IDU7CisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIDxjb2RlPkRBWV9PRl9XRUVLPC9jb2RlPiBmaWVsZCBpbmRpY2F0aW5nCisgICAgICogRnJpZGF5LgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IEZSSURBWSA9IDY7CisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIDxjb2RlPkRBWV9PRl9XRUVLPC9jb2RlPiBmaWVsZCBpbmRpY2F0aW5nCisgICAgICogU2F0dXJkYXkuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgU0FUVVJEQVkgPSA3OworCisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIDxjb2RlPk1PTlRIPC9jb2RlPiBmaWVsZCBpbmRpY2F0aW5nIHRoZQorICAgICAqIGZpcnN0IG1vbnRoIG9mIHRoZSB5ZWFyLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IEpBTlVBUlkgPSAwOworICAgIC8qKgorICAgICAqIFZhbHVlIG9mIHRoZSA8Y29kZT5NT05USDwvY29kZT4gZmllbGQgaW5kaWNhdGluZyB0aGUKKyAgICAgKiBzZWNvbmQgbW9udGggb2YgdGhlIHllYXIuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgRkVCUlVBUlkgPSAxOworICAgIC8qKgorICAgICAqIFZhbHVlIG9mIHRoZSA8Y29kZT5NT05USDwvY29kZT4gZmllbGQgaW5kaWNhdGluZyB0aGUKKyAgICAgKiB0aGlyZCBtb250aCBvZiB0aGUgeWVhci4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBNQVJDSCA9IDI7CisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIDxjb2RlPk1PTlRIPC9jb2RlPiBmaWVsZCBpbmRpY2F0aW5nIHRoZQorICAgICAqIGZvdXJ0aCBtb250aCBvZiB0aGUgeWVhci4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBBUFJJTCA9IDM7CisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIDxjb2RlPk1PTlRIPC9jb2RlPiBmaWVsZCBpbmRpY2F0aW5nIHRoZQorICAgICAqIGZpZnRoIG1vbnRoIG9mIHRoZSB5ZWFyLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IE1BWSA9IDQ7CisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIDxjb2RlPk1PTlRIPC9jb2RlPiBmaWVsZCBpbmRpY2F0aW5nIHRoZQorICAgICAqIHNpeHRoIG1vbnRoIG9mIHRoZSB5ZWFyLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IEpVTkUgPSA1OworICAgIC8qKgorICAgICAqIFZhbHVlIG9mIHRoZSA8Y29kZT5NT05USDwvY29kZT4gZmllbGQgaW5kaWNhdGluZyB0aGUKKyAgICAgKiBzZXZlbnRoIG1vbnRoIG9mIHRoZSB5ZWFyLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IEpVTFkgPSA2OworICAgIC8qKgorICAgICAqIFZhbHVlIG9mIHRoZSA8Y29kZT5NT05USDwvY29kZT4gZmllbGQgaW5kaWNhdGluZyB0aGUKKyAgICAgKiBlaWdodGggbW9udGggb2YgdGhlIHllYXIuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgQVVHVVNUID0gNzsKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBvZiB0aGUgPGNvZGU+TU9OVEg8L2NvZGU+IGZpZWxkIGluZGljYXRpbmcgdGhlCisgICAgICogbmludGggbW9udGggb2YgdGhlIHllYXIuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgU0VQVEVNQkVSID0gODsKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBvZiB0aGUgPGNvZGU+TU9OVEg8L2NvZGU+IGZpZWxkIGluZGljYXRpbmcgdGhlCisgICAgICogdGVudGggbW9udGggb2YgdGhlIHllYXIuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgT0NUT0JFUiA9IDk7CisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIDxjb2RlPk1PTlRIPC9jb2RlPiBmaWVsZCBpbmRpY2F0aW5nIHRoZQorICAgICAqIGVsZXZlbnRoIG1vbnRoIG9mIHRoZSB5ZWFyLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IE5PVkVNQkVSID0gMTA7CisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIDxjb2RlPk1PTlRIPC9jb2RlPiBmaWVsZCBpbmRpY2F0aW5nIHRoZQorICAgICAqIHR3ZWxmdGggbW9udGggb2YgdGhlIHllYXIuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBpbnQgREVDRU1CRVIgPSAxMTsKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBvZiB0aGUgPGNvZGU+TU9OVEg8L2NvZGU+IGZpZWxkIGluZGljYXRpbmcgdGhlCisgICAgICogdGhpcnRlZW50aCBtb250aCBvZiB0aGUgeWVhci4gQWx0aG91Z2ggPGNvZGU+R3JlZ29yaWFuQ2FsZW5kYXI8L2NvZGU+CisgICAgICogZG9lcyBub3QgdXNlIHRoaXMgdmFsdWUsIGx1bmFyIGNhbGVuZGFycyBkby4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGludCBVTkRFQ0lNQkVSID0gMTI7CisKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBvZiB0aGUgPGNvZGU+QU1fUE08L2NvZGU+IGZpZWxkIGluZGljYXRpbmcgdGhlCisgICAgICogcGVyaW9kIG9mIHRoZSBkYXkgZnJvbSBtaWRuaWdodCB0byBqdXN0IGJlZm9yZSBub29uLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IEFNID0gMDsKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBvZiB0aGUgPGNvZGU+QU1fUE08L2NvZGU+IGZpZWxkIGluZGljYXRpbmcgdGhlCisgICAgICogcGVyaW9kIG9mIHRoZSBkYXkgZnJvbSBub29uIHRvIGp1c3QgYmVmb3JlIG1pZG5pZ2h0LgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgaW50IFBNID0gMTsKKworICAgIC8qKgorICAgICAqIFZhbHVlIHJldHVybmVkIGJ5IGdldERheU9mV2Vla1R5cGUoaW50IGRheU9mV2VlaykgdG8gaW5kaWNhdGUgYQorICAgICAqIHdlZWtkYXkuCisgICAgICogQHNlZSAjV0VFS0VORAorICAgICAqIEBzZWUgI1dFRUtFTkRfT05TRVQKKyAgICAgKiBAc2VlICNXRUVLRU5EX0NFQVNFCisgICAgICogQHNlZSAjZ2V0RGF5T2ZXZWVrVHlwZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFdFRUtEQVkgPSAwOworCisgICAgLyoqCisgICAgICogVmFsdWUgcmV0dXJuZWQgYnkgZ2V0RGF5T2ZXZWVrVHlwZShpbnQgZGF5T2ZXZWVrKSB0byBpbmRpY2F0ZSBhCisgICAgICogd2Vla2VuZCBkYXkuCisgICAgICogQHNlZSAjV0VFS0RBWQorICAgICAqIEBzZWUgI1dFRUtFTkRfT05TRVQKKyAgICAgKiBAc2VlICNXRUVLRU5EX0NFQVNFCisgICAgICogQHNlZSAjZ2V0RGF5T2ZXZWVrVHlwZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFdFRUtFTkQgPSAxOworCisgICAgLyoqCisgICAgICogVmFsdWUgcmV0dXJuZWQgYnkgZ2V0RGF5T2ZXZWVrVHlwZShpbnQgZGF5T2ZXZWVrKSB0byBpbmRpY2F0ZSBhCisgICAgICogZGF5IHRoYXQgc3RhcnRzIGFzIGEgd2Vla2RheSBhbmQgdHJhbnNpdGlvbnMgdG8gdGhlIHdlZWtlbmQuCisgICAgICogQ2FsbCBnZXRXZWVrZW5kVHJhbnNpdGlvbigpIHRvIGdldCB0aGUgcG9pbnQgb2YgdHJhbnNpdGlvbi4KKyAgICAgKiBAc2VlICNXRUVLREFZCisgICAgICogQHNlZSAjV0VFS0VORAorICAgICAqIEBzZWUgI1dFRUtFTkRfQ0VBU0UKKyAgICAgKiBAc2VlICNnZXREYXlPZldlZWtUeXBlCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgV0VFS0VORF9PTlNFVCA9IDI7CisKKyAgICAvKioKKyAgICAgKiBWYWx1ZSByZXR1cm5lZCBieSBnZXREYXlPZldlZWtUeXBlKGludCBkYXlPZldlZWspIHRvIGluZGljYXRlIGEKKyAgICAgKiBkYXkgdGhhdCBzdGFydHMgYXMgdGhlIHdlZWtlbmQgYW5kIHRyYW5zaXRpb25zIHRvIGEgd2Vla2RheS4KKyAgICAgKiBDYWxsIGdldFdlZWtlbmRUcmFuc2l0aW9uKCkgdG8gZ2V0IHRoZSBwb2ludCBvZiB0cmFuc2l0aW9uLgorICAgICAqIEBzZWUgI1dFRUtEQVkKKyAgICAgKiBAc2VlICNXRUVLRU5ECisgICAgICogQHNlZSAjV0VFS0VORF9PTlNFVAorICAgICAqIEBzZWUgI2dldERheU9mV2Vla1R5cGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBXRUVLRU5EX0NFQVNFID0gMzsKKworICAgIC8qKgorICAgICAqIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGluIG9uZSBzZWNvbmQuCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgIE9ORV9TRUNPTkQgPSAxMDAwOworCisgICAgLyoqCisgICAgICogVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gb25lIG1pbnV0ZS4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCAgT05FX01JTlVURSA9IDYwKk9ORV9TRUNPTkQ7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBvbmUgaG91ci4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCAgT05FX0hPVVIgICA9IDYwKk9ORV9NSU5VVEU7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBvbmUgZGF5LiAgQWx0aG91Z2ggT05FX0RBWSBhbmQKKyAgICAgKiBPTkVfV0VFSyBjYW4gZml0IGludG8gaW50cywgdGhleSBtdXN0IGJlIGxvbmdzIGluIG9yZGVyIHRvIHByZXZlbnQKKyAgICAgKiBhcml0aG1ldGljIG92ZXJmbG93IHdoZW4gcGVyZm9ybWluZyAoYnVnIDQxNzM1MTYpLgorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgbG9uZyBPTkVfREFZICAgID0gMjQqT05FX0hPVVI7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBvbmUgd2Vlay4gIEFsdGhvdWdoIE9ORV9EQVkgYW5kCisgICAgICogT05FX1dFRUsgY2FuIGZpdCBpbnRvIGludHMsIHRoZXkgbXVzdCBiZSBsb25ncyBpbiBvcmRlciB0byBwcmV2ZW50CisgICAgICogYXJpdGhtZXRpYyBvdmVyZmxvdyB3aGVuIHBlcmZvcm1pbmcgKGJ1ZyA0MTczNTE2KS4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGxvbmcgT05FX1dFRUsgICA9IDcqT05FX0RBWTsKKworICAgIC8qKgorICAgICAqIFRoZSBKdWxpYW4gZGF5IG9mIHRoZSBHcmVnb3JpYW4gZXBvY2gsIHRoYXQgaXMsIEphbnVhcnkgMSwgMSBvbiB0aGUKKyAgICAgKiBHcmVnb3JpYW4gY2FsZW5kYXIuCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgSkFOXzFfMV9KVUxJQU5fREFZID0gMTcyMTQyNjsKKworICAgIC8qKgorICAgICAqIFRoZSBKdWxpYW4gZGF5IG9mIHRoZSBlcG9jaCwgdGhhdCBpcywgSmFudWFyeSAxLCAxOTcwIG9uIHRoZQorICAgICAqIEdyZWdvcmlhbiBjYWxlbmRhci4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBFUE9DSF9KVUxJQU5fREFZICAgPSAyNDQwNTg4OworCisgICAgLyoqCisgICAgICogVGhlIG1pbmltdW0gc3VwcG9ydGVkIEp1bGlhbiBkYXkuICBUaGlzIHZhbHVlIGlzIGVxdWl2YWxlbnQgdG8KKyAgICAgKiA8Y29kZT5NSU5fTUlMTElTPC9jb2RlPiBhbmQgPGNvZGU+TUlOX0RBVEU8L2NvZGU+LgorICAgICAqIEBzZWUgI0pVTElBTl9EQVkKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBNSU5fSlVMSUFOID0gLTB4N0YwMDAwMDA7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbWluaW11bSBzdXBwb3J0ZWQgZXBvY2ggbWlsbGlzZWNvbmRzLiAgVGhpcyB2YWx1ZSBpcyBlcXVpdmFsZW50CisgICAgICogdG8gPGNvZGU+TUlOX0pVTElBTjwvY29kZT4gYW5kIDxjb2RlPk1JTl9EQVRFPC9jb2RlPi4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGxvbmcgTUlOX01JTExJUyA9IC0xODQzMDM5MDI1MjgwMDAwMDBMOworICAgIC8vIEdldCBhcm91bmQgYnVnIGluIGppa2VzIDEuMTIgZm9yIG5vdy4gIExhdGVyLCB1c2U6CisgICAgLy9wcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGxvbmcgTUlOX01JTExJUyA9IChNSU5fSlVMSUFOIC0gRVBPQ0hfSlVMSUFOX0RBWSkgKiBPTkVfREFZOworCisgICAgLyoqCisgICAgICogVGhlIG1pbmltdW0gc3VwcG9ydGVkIDxjb2RlPkRhdGU8L2NvZGU+LiAgVGhpcyB2YWx1ZSBpcyBlcXVpdmFsZW50CisgICAgICogdG8gPGNvZGU+TUlOX0pVTElBTjwvY29kZT4gYW5kIDxjb2RlPk1JTl9NSUxMSVM8L2NvZGU+LgorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgRGF0ZSBNSU5fREFURSA9IG5ldyBEYXRlKE1JTl9NSUxMSVMpOworCisgICAgLyoqCisgICAgICogVGhlIG1heGltdW0gc3VwcG9ydGVkIEp1bGlhbiBkYXkuICBUaGlzIHZhbHVlIGlzIGVxdWl2YWxlbnQgdG8KKyAgICAgKiA8Y29kZT5NQVhfTUlMTElTPC9jb2RlPiBhbmQgPGNvZGU+TUFYX0RBVEU8L2NvZGU+LgorICAgICAqIEBzZWUgI0pVTElBTl9EQVkKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBNQVhfSlVMSUFOID0gKzB4N0YwMDAwMDA7CisKKyAgICAvKioKKyAgICAgKiBUaGUgbWF4aW11bSBzdXBwb3J0ZWQgZXBvY2ggbWlsbGlzZWNvbmRzLiAgVGhpcyB2YWx1ZSBpcyBlcXVpdmFsZW50CisgICAgICogdG8gPGNvZGU+TUFYX0pVTElBTjwvY29kZT4gYW5kIDxjb2RlPk1BWF9EQVRFPC9jb2RlPi4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGxvbmcgTUFYX01JTExJUyA9IChNQVhfSlVMSUFOIC0gRVBPQ0hfSlVMSUFOX0RBWSkgKiBPTkVfREFZOworCisgICAgLyoqCisgICAgICogVGhlIG1heGltdW0gc3VwcG9ydGVkIDxjb2RlPkRhdGU8L2NvZGU+LiAgVGhpcyB2YWx1ZSBpcyBlcXVpdmFsZW50CisgICAgICogdG8gPGNvZGU+TUFYX0pVTElBTjwvY29kZT4gYW5kIDxjb2RlPk1BWF9NSUxMSVM8L2NvZGU+LgorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgRGF0ZSBNQVhfREFURSA9IG5ldyBEYXRlKE1BWF9NSUxMSVMpOworCisgICAgLy8gSW50ZXJuYWwgbm90ZXM6CisgICAgLy8gQ2FsZW5kYXIgY29udGFpbnMgdHdvIGtpbmRzIG9mIHRpbWUgcmVwcmVzZW50YXRpb25zOiBjdXJyZW50ICJ0aW1lIiBpbgorICAgIC8vIG1pbGxpc2Vjb25kcywgYW5kIGEgc2V0IG9mIHRpbWUgImZpZWxkcyIgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHRpbWUuCisgICAgLy8gVGhlIHR3byByZXByZXNlbnRhdGlvbnMgYXJlIHVzdWFsbHkgaW4gc3luYywgYnV0IGNhbiBnZXQgb3V0IG9mIHN5bmMKKyAgICAvLyBhcyBmb2xsb3dzLgorICAgIC8vIDEuIEluaXRpYWxseSwgbm8gZmllbGRzIGFyZSBzZXQsIGFuZCB0aGUgdGltZSBpcyBpbnZhbGlkLgorICAgIC8vIDIuIElmIHRoZSB0aW1lIGlzIHNldCwgYWxsIGZpZWxkcyBhcmUgY29tcHV0ZWQgYW5kIGluIHN5bmMuCisgICAgLy8gMy4gSWYgYSBzaW5nbGUgZmllbGQgaXMgc2V0LCB0aGUgdGltZSBpcyBpbnZhbGlkLgorICAgIC8vIFJlY29tcHV0YXRpb24gb2YgdGhlIHRpbWUgYW5kIGZpZWxkcyBoYXBwZW5zIHdoZW4gdGhlIG9iamVjdCBuZWVkcworICAgIC8vIHRvIHJldHVybiBhIHJlc3VsdCB0byB0aGUgdXNlciwgb3IgdXNlIGEgcmVzdWx0IGZvciBhIGNvbXB1dGF0aW9uLgorCisgICAgLyoqCisgICAgICogVGhlIGZpZWxkIHZhbHVlcyBmb3IgdGhlIGN1cnJlbnRseSBzZXQgdGltZSBmb3IgdGhpcyBjYWxlbmRhci4KKyAgICAgKiBUaGlzIGlzIGFuIGFycmF5IG9mIGF0IGxlYXN0IDxjb2RlPkJBU0VfRklFTERfQ09VTlQ8L2NvZGU+IGludGVnZXJzLgorICAgICAqIEBzZWUgI2hhbmRsZUNyZWF0ZUZpZWxkcworICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIHRyYW5zaWVudCBpbnQgICAgICAgICAgIGZpZWxkc1tdOworCisgICAgLyoqCisgICAgICogUHNldWRvLXRpbWUtc3RhbXBzIHdoaWNoIHNwZWNpZnkgd2hlbiBlYWNoIGZpZWxkIHdhcyBzZXQuIFRoZXJlCisgICAgICogYXJlIHR3byBzcGVjaWFsIHZhbHVlcywgVU5TRVQgYW5kIElOVEVSTkFMTFlfU0VULiBWYWx1ZXMgZnJvbQorICAgICAqIE1JTklNVU1fVVNFUl9TRVQgdG8gSW50ZWdlci5NQVhfVkFMVUUgYXJlIGxlZ2FsIHVzZXIgc2V0IHZhbHVlcy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHRyYW5zaWVudCBpbnQgICAgICAgICAgIHN0YW1wW107CisKKyAgICAvKioKKyAgICAgKiBUaGUgY3VycmVudGx5IHNldCB0aW1lIGZvciB0aGlzIGNhbGVuZGFyLCBleHByZXNzZWQgaW4gbWlsbGlzZWNvbmRzIGFmdGVyCisgICAgICogSmFudWFyeSAxLCAxOTcwLCAwOjAwOjAwIEdNVC4KKyAgICAgKiBAc2VlICNpc1RpbWVTZXQKKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBsb25nICAgICAgICAgIHRpbWU7CisKKyAgICAvKioKKyAgICAgKiBUcnVlIGlmIHRoZW4gdGhlIHZhbHVlIG9mIDxjb2RlPnRpbWU8L2NvZGU+IGlzIHZhbGlkLgorICAgICAqIFRoZSB0aW1lIGlzIG1hZGUgaW52YWxpZCBieSBhIGNoYW5nZSB0byBhbiBpdGVtIG9mIDxjb2RlPmZpZWxkW108L2NvZGU+LgorICAgICAqIEBzZWUgI3RpbWUKKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgYm9vbGVhbiAgICAgICBpc1RpbWVTZXQ7CisKKyAgICAvKioKKyAgICAgKiBUcnVlIGlmIDxjb2RlPmZpZWxkc1tdPC9jb2RlPiBhcmUgaW4gc3luYyB3aXRoIHRoZSBjdXJyZW50bHkgc2V0IHRpbWUuCisgICAgICogSWYgZmFsc2UsIHRoZW4gdGhlIG5leHQgYXR0ZW1wdCB0byBnZXQgdGhlIHZhbHVlIG9mIGEgZmllbGQgd2lsbAorICAgICAqIGZvcmNlIGEgcmVjb21wdXRhdGlvbiBvZiBhbGwgZmllbGRzIGZyb20gdGhlIGN1cnJlbnQgdmFsdWUgb2YKKyAgICAgKiA8Y29kZT50aW1lPC9jb2RlPi4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgYm9vbGVhbiAgICAgICBhcmVGaWVsZHNTZXQ7CisKKyAgICAvKioKKyAgICAgKiBUcnVlIGlmIGFsbCBmaWVsZHMgaGF2ZSBiZWVuIHNldC4gIFRoaXMgaXMgb25seSBmYWxzZSBpbiBhIGZldworICAgICAqIHNpdHVhdGlvbnM6IEluIGEgbmV3bHkgY3JlYXRlZCwgcGFydGlhbGx5IGNvbnN0cnVjdGVkIG9iamVjdC4gIEFmdGVyCisgICAgICogYSBjYWxsIHRvIGNsZWFyKCkuICBJbiBhbiBvYmplY3QganVzdCByZWFkIGZyb20gYSBzdHJlYW0gdXNpbmcKKyAgICAgKiByZWFkT2JqZWN0KCkuICBPbmNlIGNvbXB1dGVGaWVsZHMoKSBoYXMgYmVlbiBjYWxsZWQgdGhpcyBpcyBzZXQgdG8KKyAgICAgKiB0cnVlIGFuZCBzdGF5cyB0cnVlIHVudGlsIG9uZSBvZiB0aGUgYWJvdmUgc2l0dWF0aW9ucyByZWN1cnMuCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgdHJhbnNpZW50IGJvb2xlYW4gICAgICAgYXJlQWxsRmllbGRzU2V0OworCisgICAgLyoqCisgICAgICogVHJ1ZSBpZiB0aGlzIGNhbGVuZGFyIGFsbG93cyBvdXQtb2YtcmFuZ2UgZmllbGQgdmFsdWVzIGR1cmluZyBjb21wdXRhdGlvbgorICAgICAqIG9mIDxjb2RlPnRpbWU8L2NvZGU+IGZyb20gPGNvZGU+ZmllbGRzW108L2NvZGU+LgorICAgICAqIEBzZWUgI3NldExlbmllbnQKKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuICAgICAgICAgbGVuaWVudCA9IHRydWU7CisKKyAgICAvKioKKyAgICAgKiBUaGUgPGNvZGU+VGltZVpvbmU8L2NvZGU+IHVzZWQgYnkgdGhpcyBjYWxlbmRhci4gPC9jb2RlPkNhbGVuZGFyPC9jb2RlPgorICAgICAqIHVzZXMgdGhlIHRpbWUgem9uZSBkYXRhIHRvIHRyYW5zbGF0ZSBiZXR3ZWVuIGxvY2FsZSBhbmQgR01UIHRpbWUuCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgVGltZVpvbmUgICAgICAgIHpvbmU7CisKKyAgICAvKioKKyAgICAgKiBUaGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLCB3aXRoIHBvc3NpYmxlIHZhbHVlcyA8Y29kZT5TVU5EQVk8L2NvZGU+LAorICAgICAqIDxjb2RlPk1PTkRBWTwvY29kZT4sIGV0Yy4gIFRoaXMgaXMgYSBsb2NhbGUtZGVwZW5kZW50IHZhbHVlLgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCAgICAgICAgICAgICBmaXJzdERheU9mV2VlazsKKworICAgIC8qKgorICAgICAqIFRoZSBudW1iZXIgb2YgZGF5cyByZXF1aXJlZCBmb3IgdGhlIGZpcnN0IHdlZWsgaW4gYSBtb250aCBvciB5ZWFyLAorICAgICAqIHdpdGggcG9zc2libGUgdmFsdWVzIGZyb20gMSB0byA3LiAgVGhpcyBpcyBhIGxvY2FsZS1kZXBlbmRlbnQgdmFsdWUuCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgaW50ICAgICAgICAgICAgIG1pbmltYWxEYXlzSW5GaXJzdFdlZWs7CisKKyAgICAvKioKKyAgICAgKiBGaXJzdCBkYXkgb2YgdGhlIHdlZWtlbmQgaW4gdGhpcyBjYWxlbmRhcidzIGxvY2FsZS4gIE11c3QgYmUgaW4KKyAgICAgKiB0aGUgcmFuZ2UgU1VOREFZLi4uU0FUVVJEQVkgKDEuLjcpLiAgVGhlIHdlZWtlbmQgc3RhcnRzIGF0CisgICAgICogd2Vla2VuZE9uc2V0TWlsbGlzIG1pbGxpc2Vjb25kcyBhZnRlciBtaWRuaWdodCBvbiB0aGF0IGRheSBvZgorICAgICAqIHRoZSB3ZWVrLiAgVGhpcyB2YWx1ZSBpcyB0YWtlbiBmcm9tIGxvY2FsZSByZXNvdXJjZSBkYXRhLgorICAgICAqLworICAgIHByaXZhdGUgaW50IHdlZWtlbmRPbnNldDsKKworICAgIC8qKgorICAgICAqIE1pbGxpc2Vjb25kcyBhZnRlciBtaWRuaWdodCBhdCB3aGljaCB0aGUgd2Vla2VuZCBzdGFydHMgb24gdGhlCisgICAgICogZGF5IG9mIHRoZSB3ZWVrIHdlZWtlbmRPbnNldC4gIFRpbWVzIHRoYXQgYXJlIGdyZWF0ZXIgdGhhbiBvcgorICAgICAqIGVxdWFsIHRvIHdlZWtlbmRPbnNldE1pbGxpcyBhcmUgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSB3ZWVrZW5kLgorICAgICAqIE11c3QgYmUgaW4gdGhlIHJhbmdlIDAuLjI0KjYwKjYwKjEwMDAtMS4gIFRoaXMgdmFsdWUgaXMgdGFrZW4KKyAgICAgKiBmcm9tIGxvY2FsZSByZXNvdXJjZSBkYXRhLgorICAgICAqLworICAgIHByaXZhdGUgaW50IHdlZWtlbmRPbnNldE1pbGxpczsKKworICAgIC8qKgorICAgICAqIERheSBvZiB0aGUgd2VlayB3aGVuIHRoZSB3ZWVrZW5kIHN0b3BzIGluIHRoaXMgY2FsZW5kYXIncworICAgICAqIGxvY2FsZS4gIE11c3QgYmUgaW4gdGhlIHJhbmdlIFNVTkRBWS4uLlNBVFVSREFZICgxLi43KS4gIFRoZQorICAgICAqIHdlZWtlbmQgc3RvcHMgYXQgd2Vla2VuZENlYXNlTWlsbGlzIG1pbGxpc2Vjb25kcyBhZnRlciBtaWRuaWdodAorICAgICAqIG9uIHRoYXQgZGF5IG9mIHRoZSB3ZWVrLiAgVGhpcyB2YWx1ZSBpcyB0YWtlbiBmcm9tIGxvY2FsZQorICAgICAqIHJlc291cmNlIGRhdGEuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgd2Vla2VuZENlYXNlOworCisgICAgLyoqCisgICAgICogTWlsbGlzZWNvbmRzIGFmdGVyIG1pZG5pZ2h0IGF0IHdoaWNoIHRoZSB3ZWVrZW5kIHN0b3BzIG9uIHRoZQorICAgICAqIGRheSBvZiB0aGUgd2VlayB3ZWVrZW5kQ2Vhc2UuICBUaW1lcyB0aGF0IGFyZSBncmVhdGVyIHRoYW4gb3IKKyAgICAgKiBlcXVhbCB0byB3ZWVrZW5kQ2Vhc2VNaWxsaXMgYXJlIGNvbnNpZGVyZWQgbm90IHRvIGJlIHRoZQorICAgICAqIHdlZWtlbmQuICBNdXN0IGJlIGluIHRoZSByYW5nZSAwLi4yNCo2MCo2MCoxMDAwLTEuICBUaGlzIHZhbHVlCisgICAgICogaXMgdGFrZW4gZnJvbSBsb2NhbGUgcmVzb3VyY2UgZGF0YS4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCB3ZWVrZW5kQ2Vhc2VNaWxsaXM7CisKKyAgICAvKioKKyAgICAgKiBDYWNoZSB0byBob2xkIHRoZSBmaXJzdERheU9mV2VlayBhbmQgbWluaW1hbERheXNJbkZpcnN0V2VlaworICAgICAqIG9mIGEgTG9jYWxlLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIEhhc2h0YWJsZSBjYWNoZWRMb2NhbGVEYXRhID0gbmV3IEhhc2h0YWJsZSgzKTsKKworICAgIC8qKgorICAgICAqIFZhbHVlIG9mIHRoZSB0aW1lIHN0YW1wIDxjb2RlPnN0YW1wW108L2NvZGU+IGluZGljYXRpbmcgdGhhdAorICAgICAqIGEgZmllbGQgaGFzIG5vdCBiZWVuIHNldCBzaW5jZSB0aGUgbGFzdCBjYWxsIHRvIDxjb2RlPmNsZWFyKCk8L2NvZGU+LgorICAgICAqIEBzZWUgI0lOVEVSTkFMTFlfU0VUCisgICAgICogQHNlZSAjTUlOSU1VTV9VU0VSX1NUQU1QCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgVU5TRVQgPSAwOworCisgICAgLyoqCisgICAgICogVmFsdWUgb2YgdGhlIHRpbWUgc3RhbXAgPGNvZGU+c3RhbXBbXTwvY29kZT4gaW5kaWNhdGluZyB0aGF0IGEgZmllbGQKKyAgICAgKiBoYXMgYmVlbiBzZXQgdmlhIGNvbXB1dGF0aW9ucyBmcm9tIHRoZSB0aW1lIG9yIGZyb20gb3RoZXIgZmllbGRzLgorICAgICAqIEBzZWUgI1VOU0VUCisgICAgICogQHNlZSAjTUlOSU1VTV9VU0VSX1NUQU1QCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgSU5URVJOQUxMWV9TRVQgPSAxOworCisgICAgLyoqCisgICAgICogSWYgdGhlIHRpbWUgc3RhbXAgPGNvZGU+c3RhbXBbXTwvY29kZT4gaGFzIGEgdmFsdWUgZ3JlYXRlciB0aGFuIG9yCisgICAgICogZXF1YWwgdG8gPGNvZGU+TUlOSU1VTV9VU0VSX1NFVDwvY29kZT4gdGhlbiBpdCBoYXMgYmVlbiBzZXQgYnkgdGhlCisgICAgICogdXNlciB2aWEgYSBjYWxsIHRvIDxjb2RlPnNldCgpPC9jb2RlPi4KKyAgICAgKiBAc2VlICNVTlNFVAorICAgICAqIEBzZWUgI0lOVEVSTkFMTFlfU0VUCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgTUlOSU1VTV9VU0VSX1NUQU1QID0gMjsKKworICAgIC8qKgorICAgICAqIFRoZSBuZXh0IGF2YWlsYWJsZSB2YWx1ZSBmb3IgPGNvZGU+c3RhbXBbXTwvY29kZT4sIGFuIGludGVybmFsIGFycmF5LgorICAgICAqIFRoaXMgYWN0dWFsbHkgc2hvdWxkIG5vdCBiZSB3cml0dGVuIG91dCB0byB0aGUgc3RyZWFtLCBhbmQgd2lsbCBwcm9iYWJseQorICAgICAqIGJlIHJlbW92ZWQgZnJvbSB0aGUgc3RyZWFtIGluIHRoZSBuZWFyIGZ1dHVyZS4gIEluIHRoZSBtZWFudGltZSwKKyAgICAgKiBhIHZhbHVlIG9mIDxjb2RlPk1JTklNVU1fVVNFUl9TVEFNUDwvY29kZT4gc2hvdWxkIGJlIHVzZWQuCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgdHJhbnNpZW50IGludCAgICAgICAgICAgICBuZXh0U3RhbXAgPSBNSU5JTVVNX1VTRVJfU1RBTVA7CisKKyAgICAvLyB0aGUgaW50ZXJuYWwgc2VyaWFsIHZlcnNpb24gd2hpY2ggc2F5cyB3aGljaCB2ZXJzaW9uIHdhcyB3cml0dGVuCisgICAgLy8gLSAwIChkZWZhdWx0KSBmb3IgdmVyc2lvbiB1cCB0byBKREsgMS4xLjUKKyAgICAvLyAtIDEgZm9yIHZlcnNpb24gZnJvbSBKREsgMS4xLjYsIHdoaWNoIHdyaXRlcyBhIGNvcnJlY3QgJ3RpbWUnIHZhbHVlCisgICAgLy8gICAgIGFzIHdlbGwgYXMgY29tcGF0aWJsZSB2YWx1ZXMgZm9yIG90aGVyIGZpZWxkcy4gIFRoaXMgaXMgYQorICAgIC8vICAgICB0cmFuc2l0aW9uYWwgZm9ybWF0LgorICAgIC8vIC0gMiAobm90IGltcGxlbWVudGVkIHlldCkgYSBmdXR1cmUgdmVyc2lvbiwgaW4gd2hpY2ggZmllbGRzW10sCisgICAgLy8gICAgIGFyZUZpZWxkc1NldCwgYW5kIGlzVGltZVNldCBiZWNvbWUgdHJhbnNpZW50LCBhbmQgaXNTZXRbXSBpcworICAgIC8vICAgICByZW1vdmVkLiBJbiBKREsgMS4xLjYgd2Ugd3JpdGUgYSBmb3JtYXQgY29tcGF0aWJsZSB3aXRoIHZlcnNpb24gMi4KKyAgICAvLyBzdGF0aWMgZmluYWwgaW50ICAgICAgICBjdXJyZW50U2VyaWFsVmVyc2lvbiA9IDE7CisgICAgCisgICAgLyoqCisgICAgICogVGhlIHZlcnNpb24gb2YgdGhlIHNlcmlhbGl6ZWQgZGF0YSBvbiB0aGUgc3RyZWFtLiAgUG9zc2libGUgdmFsdWVzOgorICAgICAqIDxkbD4KKyAgICAgKiA8ZHQ+PGI+MDwvYj4gb3Igbm90IHByZXNlbnQgb24gc3RyZWFtPC9kdD4KKyAgICAgKiA8ZGQ+CisgICAgICogSkRLIDEuMS41IG9yIGVhcmxpZXIuCisgICAgICogPC9kZD4KKyAgICAgKiA8ZHQ+PGI+MTwvYj48L2R0PgorICAgICAqIDxkZD4KKyAgICAgKiBKREsgMS4xLjYgb3IgbGF0ZXIuICBXcml0ZXMgYSBjb3JyZWN0ICd0aW1lJyB2YWx1ZQorICAgICAqIGFzIHdlbGwgYXMgY29tcGF0aWJsZSB2YWx1ZXMgZm9yIG90aGVyIGZpZWxkcy4gIFRoaXMgaXMgYQorICAgICAqIHRyYW5zaXRpb25hbCBmb3JtYXQuCisgICAgICogPC9kZD4KKyAgICAgKiA8L2RsPgorICAgICAqIFdoZW4gc3RyZWFtaW5nIG91dCB0aGlzIGNsYXNzLCB0aGUgbW9zdCByZWNlbnQgZm9ybWF0CisgICAgICogYW5kIHRoZSBoaWdoZXN0IGFsbG93YWJsZSA8Y29kZT5zZXJpYWxWZXJzaW9uT25TdHJlYW08L2NvZGU+CisgICAgICogaXMgd3JpdHRlbi4KKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNpbmNlIEpESzEuMS42CisgICAgICovCisgICAgLy8gcHJpdmF0ZSBpbnQgICAgICAgICAgICAgc2VyaWFsVmVyc2lvbk9uU3RyZWFtID0gY3VycmVudFNlcmlhbFZlcnNpb247CisKKyAgICAvLyBQcm9jbGFpbSBzZXJpYWxpemF0aW9uIGNvbXBhdGliaWxpdHkgd2l0aCBKREsgMS4xCisgICAgLy8gc3RhdGljIGZpbmFsIGxvbmcgICAgICAgc2VyaWFsVmVyc2lvblVJRCA9IC0xODA3NTQ3NTA1ODIxNTkwNjQyTDsKKworICAgIC8qKgorICAgICAqIEJpdG1hc2sgZm9yIGludGVybmFsU2V0KCkgZGVmaW5pbmcgd2hpY2ggZmllbGRzIG1heSBsZWdhbGx5IGJlIHNldAorICAgICAqIGJ5IHN1YmNsYXNzZXMuICBBbnkgYXR0ZW1wdCB0byBzZXQgYSBmaWVsZCBub3QgaW4gdGhpcyBiaXRtYXNrCisgICAgICogcmVzdWx0cyBpbiBhbiBleGNlcHRpb24sIGJlY2F1c2Ugc3VjaCBmaWVsZHMgbXVzdCBiZSBzZXQgYnkgdGhlIGJhc2UKKyAgICAgKiBjbGFzcy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHRyYW5zaWVudCBpbnQgaW50ZXJuYWxTZXRNYXNrOworCisgICAgLyoqCisgICAgICogVGhlIEdyZWdvcmlhbiB5ZWFyLCBhcyBjb21wdXRlZCBieSBjb21wdXRlR3JlZ29yaWFuRmllbGRzKCkgYW5kCisgICAgICogcmV0dXJuZWQgYnkgZ2V0R3JlZ29yaWFuWWVhcigpLgorICAgICAqLworICAgIHByaXZhdGUgdHJhbnNpZW50IGludCBncmVnb3JpYW5ZZWFyOworCisgICAgLyoqCisgICAgICogVGhlIEdyZWdvcmlhbiBtb250aCwgYXMgY29tcHV0ZWQgYnkgY29tcHV0ZUdyZWdvcmlhbkZpZWxkcygpIGFuZAorICAgICAqIHJldHVybmVkIGJ5IGdldEdyZWdvcmlhbk1vbnRoKCkuCisgICAgICovCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgaW50IGdyZWdvcmlhbk1vbnRoOworCisgICAgLyoqCisgICAgICogVGhlIEdyZWdvcmlhbiBkYXkgb2YgdGhlIHllYXIsIGFzIGNvbXB1dGVkIGJ5CisgICAgICogY29tcHV0ZUdyZWdvcmlhbkZpZWxkcygpIGFuZCByZXR1cm5lZCBieSBnZXRHcmVnb3JpYW5EYXlPZlllYXIoKS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHRyYW5zaWVudCBpbnQgZ3JlZ29yaWFuRGF5T2ZZZWFyOworCisgICAgLyoqCisgICAgICogVGhlIEdyZWdvcmlhbiBkYXkgb2YgdGhlIG1vbnRoLCBhcyBjb21wdXRlZCBieQorICAgICAqIGNvbXB1dGVHcmVnb3JpYW5GaWVsZHMoKSBhbmQgcmV0dXJuZWQgYnkgZ2V0R3JlZ29yaWFuRGF5T2ZNb250aCgpLgorICAgICAqLworICAgIHByaXZhdGUgdHJhbnNpZW50IGludCBncmVnb3JpYW5EYXlPZk1vbnRoOworCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIENhbGVuZGFyIHdpdGggdGhlIGRlZmF1bHQgdGltZSB6b25lCisgICAgICogYW5kIGxvY2FsZS4KKyAgICAgKiBAc2VlICAgICBUaW1lWm9uZSNnZXREZWZhdWx0CisgICAgICovCisgICAgcHJvdGVjdGVkIENhbGVuZGFyKCkKKyAgICB7CisgICAgICAgIHRoaXMoVGltZVpvbmUuZ2V0RGVmYXVsdCgpLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgY2FsZW5kYXIgd2l0aCB0aGUgc3BlY2lmaWVkIHRpbWUgem9uZSBhbmQgbG9jYWxlLgorICAgICAqIEBwYXJhbSB6b25lIHRoZSB0aW1lIHpvbmUgdG8gdXNlCisgICAgICogQHBhcmFtIGFMb2NhbGUgdGhlIGxvY2FsZSBmb3IgdGhlIHdlZWsgZGF0YQorICAgICAqLworICAgIHByb3RlY3RlZCBDYWxlbmRhcihUaW1lWm9uZSB6b25lLCBMb2NhbGUgYUxvY2FsZSkKKyAgICB7CisgICAgICAgIHRoaXMuem9uZSA9IHpvbmU7CisgICAgICAgIHNldFdlZWtDb3VudERhdGEoYUxvY2FsZSk7CisgICAgICAgIHNldFdlZWtlbmREYXRhKGFMb2NhbGUpOworCisgICAgICAgIC8vIEFsbG9jYXRlIGZpZWxkcyB0aHJvdWdoIHRoZSBmcmFtZXdvcmsgbWV0aG9kLiAgU3ViY2xhc3NlcworICAgICAgICAvLyBtYXkgb3ZlcnJpZGUgdGhpcyB0byBkZWZpbmUgYWRkaXRpb25hbCBmaWVsZHMuCisgICAgICAgIGZpZWxkcyA9IGhhbmRsZUNyZWF0ZUZpZWxkcygpOworICAgICAgICBpZiAoZmllbGRzID09IG51bGwgfHwgZmllbGRzLmxlbmd0aCA8IEJBU0VfRklFTERfQ09VTlQgfHwKKyAgICAgICAgICAgIGZpZWxkcy5sZW5ndGggPiBNQVhfRklFTERfQ09VTlQpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgZmllbGRzW10iKTsKKyAgICAgICAgfQorICAgICAgICBzdGFtcCA9IG5ldyBpbnRbZmllbGRzLmxlbmd0aF07CisgICAgICAgIGludCBtYXNrID0gKDEgPDwgRVJBKSB8CisgICAgICAgICAgICAoMSA8PCBZRUFSKSB8CisgICAgICAgICAgICAoMSA8PCBNT05USCkgfAorICAgICAgICAgICAgKDEgPDwgREFZX09GX01PTlRIKSB8CisgICAgICAgICAgICAoMSA8PCBEQVlfT0ZfWUVBUikgfAorICAgICAgICAgICAgKDEgPDwgRVhURU5ERURfWUVBUik7CisgICAgICAgIGZvciAoaW50IGk9QkFTRV9GSUVMRF9DT1VOVDsgaTxmaWVsZHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIG1hc2sgfD0gKDEgPDwgaSk7CisgICAgICAgIH0KKyAgICAgICAgaW50ZXJuYWxTZXRNYXNrID0gbWFzazsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIGEgY2FsZW5kYXIgdXNpbmcgdGhlIGRlZmF1bHQgdGltZSB6b25lIGFuZCBsb2NhbGUuCisgICAgICogQHJldHVybiBhIENhbGVuZGFyLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgc3luY2hyb25pemVkIENhbGVuZGFyIGdldEluc3RhbmNlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIGEgY2FsZW5kYXIgdXNpbmcgdGhlIHNwZWNpZmllZCB0aW1lIHpvbmUgYW5kIGRlZmF1bHQgbG9jYWxlLgorICAgICAqIEBwYXJhbSB6b25lIHRoZSB0aW1lIHpvbmUgdG8gdXNlCisgICAgICogQHJldHVybiBhIENhbGVuZGFyLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgc3luY2hyb25pemVkIENhbGVuZGFyIGdldEluc3RhbmNlKFRpbWVab25lIHpvbmUpCisgICAgeworICAgICAgICByZXR1cm4gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKHpvbmUsIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgYSBjYWxlbmRhciB1c2luZyB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgYW5kIHNwZWNpZmllZCBsb2NhbGUuCisgICAgICogQHBhcmFtIGFMb2NhbGUgdGhlIGxvY2FsZSBmb3IgdGhlIHdlZWsgZGF0YQorICAgICAqIEByZXR1cm4gYSBDYWxlbmRhci4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHN5bmNocm9uaXplZCBDYWxlbmRhciBnZXRJbnN0YW5jZShMb2NhbGUgYUxvY2FsZSkKKyAgICB7CisgICAgICAgIHJldHVybiBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoVGltZVpvbmUuZ2V0RGVmYXVsdCgpLCBhTG9jYWxlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIGEgY2FsZW5kYXIgd2l0aCB0aGUgc3BlY2lmaWVkIHRpbWUgem9uZSBhbmQgbG9jYWxlLgorICAgICAqIEBwYXJhbSB6b25lIHRoZSB0aW1lIHpvbmUgdG8gdXNlCisgICAgICogQHBhcmFtIGFMb2NhbGUgdGhlIGxvY2FsZSBmb3IgdGhlIHdlZWsgZGF0YQorICAgICAqIEByZXR1cm4gYSBDYWxlbmRhci4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHN5bmNocm9uaXplZCBDYWxlbmRhciBnZXRJbnN0YW5jZShUaW1lWm9uZSB6b25lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2FsZSBhTG9jYWxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG5ldyBHcmVnb3JpYW5DYWxlbmRhcih6b25lLCBhTG9jYWxlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBsaXN0IG9mIGxvY2FsZXMgZm9yIHdoaWNoIENhbGVuZGFycyBhcmUgaW5zdGFsbGVkLgorICAgICAqIEByZXR1cm4gdGhlIGxpc3Qgb2YgbG9jYWxlcyBmb3Igd2hpY2ggQ2FsZW5kYXJzIGFyZSBpbnN0YWxsZWQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBzeW5jaHJvbml6ZWQgTG9jYWxlW10gZ2V0QXZhaWxhYmxlTG9jYWxlcygpCisgICAgeworICAgICAgICByZXR1cm4gRGF0ZUZvcm1hdC5nZXRBdmFpbGFibGVMb2NhbGVzKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGlzIENhbGVuZGFyJ3MgY3VycmVudCB0aW1lLgorICAgICAqIEByZXR1cm4gdGhlIGN1cnJlbnQgdGltZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgRGF0ZSBnZXRUaW1lKCkgeworICAgICAgICByZXR1cm4gbmV3IERhdGUoIGdldFRpbWVJbk1pbGxpcygpICk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGlzIENhbGVuZGFyJ3MgY3VycmVudCB0aW1lIHdpdGggdGhlIGdpdmVuIERhdGUuCisgICAgICogPHA+CisgICAgICogTm90ZTogQ2FsbGluZyA8Y29kZT5zZXRUaW1lKCk8L2NvZGU+IHdpdGgKKyAgICAgKiA8Y29kZT5EYXRlKExvbmcuTUFYX1ZBTFVFKTwvY29kZT4gb3IgPGNvZGU+RGF0ZShMb25nLk1JTl9WQUxVRSk8L2NvZGU+CisgICAgICogbWF5IHlpZWxkIGluY29ycmVjdCBmaWVsZCB2YWx1ZXMgZnJvbSA8Y29kZT5nZXQoKTwvY29kZT4uCisgICAgICogQHBhcmFtIGRhdGUgdGhlIGdpdmVuIERhdGUuICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldFRpbWUoRGF0ZSBkYXRlKSB7CisgICAgICAgIHNldFRpbWVJbk1pbGxpcyggZGF0ZS5nZXRUaW1lKCkgKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoaXMgQ2FsZW5kYXIncyBjdXJyZW50IHRpbWUgYXMgYSBsb25nLgorICAgICAqIEByZXR1cm4gdGhlIGN1cnJlbnQgdGltZSBhcyBVVEMgbWlsbGlzZWNvbmRzIGZyb20gdGhlIGVwb2NoLgorICAgICAqLworICAgIHB1YmxpYyBsb25nIGdldFRpbWVJbk1pbGxpcygpIHsKKyAgICAgICAgaWYgKCFpc1RpbWVTZXQpIHVwZGF0ZVRpbWUoKTsKKyAgICAgICAgcmV0dXJuIHRpbWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGlzIENhbGVuZGFyJ3MgY3VycmVudCB0aW1lIGZyb20gdGhlIGdpdmVuIGxvbmcgdmFsdWUuCisgICAgICogQHBhcmFtIGRhdGUgdGhlIG5ldyB0aW1lIGluIFVUQyBtaWxsaXNlY29uZHMgZnJvbSB0aGUgZXBvY2guCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0VGltZUluTWlsbGlzKCBsb25nIG1pbGxpcyApIHsKKyAgICAgICAgaWYgKG1pbGxpcyA+IE1BWF9NSUxMSVMpIHsKKyAgICAgICAgICAgIG1pbGxpcyA9IE1BWF9NSUxMSVM7CisgICAgICAgIH0gZWxzZSBpZiAobWlsbGlzIDwgTUlOX01JTExJUykgeworICAgICAgICAgICAgbWlsbGlzID0gTUlOX01JTExJUzsKKyAgICAgICAgfQorICAgICAgICB0aW1lID0gbWlsbGlzOworICAgICAgICBpc1RpbWVTZXQgPSB0cnVlOworICAgICAgICBjb21wdXRlRmllbGRzKCk7CisgICAgICAgIGFyZUZpZWxkc1NldCA9IHRydWU7CisgICAgICAgIGFyZUFsbEZpZWxkc1NldCA9IHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgdmFsdWUgZm9yIGEgZ2l2ZW4gdGltZSBmaWVsZC4KKyAgICAgKiBAcGFyYW0gZmllbGQgdGhlIGdpdmVuIHRpbWUgZmllbGQuCisgICAgICogQHJldHVybiB0aGUgdmFsdWUgZm9yIHRoZSBnaXZlbiB0aW1lIGZpZWxkLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBpbnQgZ2V0KGludCBmaWVsZCkKKyAgICB7CisgICAgICAgIGNvbXBsZXRlKCk7CisgICAgICAgIHJldHVybiBmaWVsZHNbZmllbGRdOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIHZhbHVlIGZvciBhIGdpdmVuIHRpbWUgZmllbGQuICBUaGlzIGlzIGFuIGludGVybmFsIG1ldGhvZAorICAgICAqIGZvciBzdWJjbGFzc2VzIHRoYXQgZG9lcyA8ZW0+bm90PC9lbT4gdHJpZ2dlciBhbnkgY2FsY3VsYXRpb25zLgorICAgICAqIEBwYXJhbSBmaWVsZCB0aGUgZ2l2ZW4gdGltZSBmaWVsZC4KKyAgICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBmb3IgdGhlIGdpdmVuIHRpbWUgZmllbGQuCisgICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIGludCBpbnRlcm5hbEdldChpbnQgZmllbGQpCisgICAgeworICAgICAgICByZXR1cm4gZmllbGRzW2ZpZWxkXTsKKyAgICB9CisgCisgICAgLyoqCisgICAgICogR2V0IHRoZSB2YWx1ZSBmb3IgYSBnaXZlbiB0aW1lIGZpZWxkLCBvciByZXR1cm4gdGhlIGdpdmVuIGRlZmF1bHQKKyAgICAgKiB2YWx1ZSBpZiB0aGUgZmllbGQgaXMgbm90IHNldC4gIFRoaXMgaXMgYW4gaW50ZXJuYWwgbWV0aG9kIGZvcgorICAgICAqIHN1YmNsYXNzZXMgdGhhdCBkb2VzIDxlbT5ub3Q8L2VtPiB0cmlnZ2VyIGFueSBjYWxjdWxhdGlvbnMuCisgICAgICogQHBhcmFtIGZpZWxkIHRoZSBnaXZlbiB0aW1lIGZpZWxkLgorICAgICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgdmFsdWUgdG8gcmV0dXJuIGlmIGZpZWxkIGlzIG5vdCBzZXQKKyAgICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBmb3IgdGhlIGdpdmVuIHRpbWUgZmllbGQgb2YgZGVmYXVsdFZhbHVlIGlmIHRoZQorICAgICAqIGZpZWxkIGlzIHVuc2V0CisgICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIGludCBpbnRlcm5hbEdldChpbnQgZmllbGQsIGludCBkZWZhdWx0VmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIChzdGFtcFtmaWVsZF0gPiBVTlNFVCkgPyBmaWVsZHNbZmllbGRdIDogZGVmYXVsdFZhbHVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHRpbWUgZmllbGQgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuCisgICAgICogQHBhcmFtIGZpZWxkIHRoZSBnaXZlbiB0aW1lIGZpZWxkLgorICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gYmUgc2V0IGZvciB0aGUgZ2l2ZW4gdGltZSBmaWVsZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXQoaW50IGZpZWxkLCBpbnQgdmFsdWUpCisgICAgeworICAgICAgICBpc1RpbWVTZXQgPSBmYWxzZTsKKyAgICAgICAgZmllbGRzW2ZpZWxkXSA9IHZhbHVlOworICAgICAgICBzdGFtcFtmaWVsZF0gPSBuZXh0U3RhbXArKzsKKyAgICAgICAgYXJlRmllbGRzU2V0ID0gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgdmFsdWVzIGZvciB0aGUgZmllbGRzIHllYXIsIG1vbnRoLCBhbmQgZGF0ZS4KKyAgICAgKiBQcmV2aW91cyB2YWx1ZXMgb2Ygb3RoZXIgZmllbGRzIGFyZSByZXRhaW5lZC4gIElmIHRoaXMgaXMgbm90IGRlc2lyZWQsCisgICAgICogY2FsbCA8Y29kZT5jbGVhcjwvY29kZT4gZmlyc3QuCisgICAgICogQHBhcmFtIHllYXIgdGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBZRUFSIHRpbWUgZmllbGQuCisgICAgICogQHBhcmFtIG1vbnRoIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgTU9OVEggdGltZSBmaWVsZC4KKyAgICAgKiBNb250aCB2YWx1ZSBpcyAwLWJhc2VkLiBlLmcuLCAwIGZvciBKYW51YXJ5LgorICAgICAqIEBwYXJhbSBkYXRlIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgREFURSB0aW1lIGZpZWxkLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldChpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF0ZSkKKyAgICB7CisgICAgICAgIHNldChZRUFSLCB5ZWFyKTsKKyAgICAgICAgc2V0KE1PTlRILCBtb250aCk7CisgICAgICAgIHNldChEQVRFLCBkYXRlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSB2YWx1ZXMgZm9yIHRoZSBmaWVsZHMgeWVhciwgbW9udGgsIGRhdGUsIGhvdXIsIGFuZCBtaW51dGUuCisgICAgICogUHJldmlvdXMgdmFsdWVzIG9mIG90aGVyIGZpZWxkcyBhcmUgcmV0YWluZWQuICBJZiB0aGlzIGlzIG5vdCBkZXNpcmVkLAorICAgICAqIGNhbGwgPGNvZGU+Y2xlYXI8L2NvZGU+IGZpcnN0LgorICAgICAqIEBwYXJhbSB5ZWFyIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgWUVBUiB0aW1lIGZpZWxkLgorICAgICAqIEBwYXJhbSBtb250aCB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIE1PTlRIIHRpbWUgZmllbGQuCisgICAgICogTW9udGggdmFsdWUgaXMgMC1iYXNlZC4gZS5nLiwgMCBmb3IgSmFudWFyeS4KKyAgICAgKiBAcGFyYW0gZGF0ZSB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIERBVEUgdGltZSBmaWVsZC4KKyAgICAgKiBAcGFyYW0gaG91ciB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIEhPVVJfT0ZfREFZIHRpbWUgZmllbGQuCisgICAgICogQHBhcmFtIG1pbnV0ZSB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIE1JTlVURSB0aW1lIGZpZWxkLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldChpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF0ZSwgaW50IGhvdXIsIGludCBtaW51dGUpCisgICAgeworICAgICAgICBzZXQoWUVBUiwgeWVhcik7CisgICAgICAgIHNldChNT05USCwgbW9udGgpOworICAgICAgICBzZXQoREFURSwgZGF0ZSk7CisgICAgICAgIHNldChIT1VSX09GX0RBWSwgaG91cik7CisgICAgICAgIHNldChNSU5VVEUsIG1pbnV0ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgdmFsdWVzIGZvciB0aGUgZmllbGRzIHllYXIsIG1vbnRoLCBkYXRlLCBob3VyLCBtaW51dGUsIGFuZCBzZWNvbmQuCisgICAgICogUHJldmlvdXMgdmFsdWVzIG9mIG90aGVyIGZpZWxkcyBhcmUgcmV0YWluZWQuICBJZiB0aGlzIGlzIG5vdCBkZXNpcmVkLAorICAgICAqIGNhbGwgPGNvZGU+Y2xlYXI8L2NvZGU+IGZpcnN0LgorICAgICAqIEBwYXJhbSB5ZWFyIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgWUVBUiB0aW1lIGZpZWxkLgorICAgICAqIEBwYXJhbSBtb250aCB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIE1PTlRIIHRpbWUgZmllbGQuCisgICAgICogTW9udGggdmFsdWUgaXMgMC1iYXNlZC4gZS5nLiwgMCBmb3IgSmFudWFyeS4KKyAgICAgKiBAcGFyYW0gZGF0ZSB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIERBVEUgdGltZSBmaWVsZC4KKyAgICAgKiBAcGFyYW0gaG91ciB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIEhPVVJfT0ZfREFZIHRpbWUgZmllbGQuCisgICAgICogQHBhcmFtIG1pbnV0ZSB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIE1JTlVURSB0aW1lIGZpZWxkLgorICAgICAqIEBwYXJhbSBzZWNvbmQgdGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBTRUNPTkQgdGltZSBmaWVsZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXQoaW50IHllYXIsIGludCBtb250aCwgaW50IGRhdGUsIGludCBob3VyLCBpbnQgbWludXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2Vjb25kKQorICAgIHsKKyAgICAgICAgc2V0KFlFQVIsIHllYXIpOworICAgICAgICBzZXQoTU9OVEgsIG1vbnRoKTsKKyAgICAgICAgc2V0KERBVEUsIGRhdGUpOworICAgICAgICBzZXQoSE9VUl9PRl9EQVksIGhvdXIpOworICAgICAgICBzZXQoTUlOVVRFLCBtaW51dGUpOworICAgICAgICBzZXQoU0VDT05ELCBzZWNvbmQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENsZWFycyB0aGUgdmFsdWVzIG9mIGFsbCB0aGUgdGltZSBmaWVsZHMuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgY2xlYXIoKQorICAgIHsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPGZpZWxkcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgZmllbGRzW2ldID0gc3RhbXBbaV0gPSAwOyAvLyBVTlNFVCA9PSAwCisgICAgICAgIH0KKyAgICAgICAgYXJlRmllbGRzU2V0ID0gZmFsc2U7CisgICAgICAgIGFyZUFsbEZpZWxkc1NldCA9IGZhbHNlOworICAgICAgICBpc1RpbWVTZXQgPSBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDbGVhcnMgdGhlIHZhbHVlIGluIHRoZSBnaXZlbiB0aW1lIGZpZWxkLgorICAgICAqIEBwYXJhbSBmaWVsZCB0aGUgdGltZSBmaWVsZCB0byBiZSBjbGVhcmVkLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIGNsZWFyKGludCBmaWVsZCkKKyAgICB7CisgICAgICAgIGZpZWxkc1tmaWVsZF0gPSAwOworICAgICAgICBzdGFtcFtmaWVsZF0gPSBVTlNFVDsKKyAgICAgICAgYXJlRmllbGRzU2V0ID0gZmFsc2U7CisgICAgICAgIGFyZUFsbEZpZWxkc1NldCA9IGZhbHNlOworICAgICAgICBpc1RpbWVTZXQgPSBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiB0aW1lIGZpZWxkIGhhcyBhIHZhbHVlIHNldC4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIHRpbWUgZmllbGQgaGFzIGEgdmFsdWUgc2V0OyBmYWxzZSBvdGhlcndpc2UuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIGJvb2xlYW4gaXNTZXQoaW50IGZpZWxkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YW1wW2ZpZWxkXSAhPSBVTlNFVDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGaWxscyBpbiBhbnkgdW5zZXQgZmllbGRzIGluIHRoZSB0aW1lIGZpZWxkIGxpc3QuCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgY29tcGxldGUoKQorICAgIHsKKyAgICAgICAgaWYgKCFpc1RpbWVTZXQpIHVwZGF0ZVRpbWUoKTsKKyAgICAgICAgaWYgKCFhcmVGaWVsZHNTZXQpIHsKKyAgICAgICAgICAgIGNvbXB1dGVGaWVsZHMoKTsgLy8gZmlsbHMgaW4gdW5zZXQgZmllbGRzCisgICAgICAgICAgICBhcmVGaWVsZHNTZXQgPSB0cnVlOworICAgICAgICAgICAgYXJlQWxsRmllbGRzU2V0ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBhcmVzIHRoaXMgY2FsZW5kYXIgdG8gdGhlIHNwZWNpZmllZCBvYmplY3QuCisgICAgICogVGhlIHJlc3VsdCBpcyA8Y29kZT50cnVlPC9jb2RlPiBpZiBhbmQgb25seSBpZiB0aGUgYXJndW1lbnQgaXMKKyAgICAgKiBub3QgPGNvZGU+bnVsbDwvY29kZT4gYW5kIGlzIGEgPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IG9iamVjdCB0aGF0CisgICAgICogcmVwcmVzZW50cyB0aGUgc2FtZSBjYWxlbmRhciBhcyB0aGlzIG9iamVjdC4KKyAgICAgKiBAcGFyYW0gb2JqIHRoZSBvYmplY3QgdG8gY29tcGFyZSB3aXRoLgorICAgICAqIEByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIG9iamVjdHMgYXJlIHRoZSBzYW1lOworICAgICAqIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZXF1YWxzKE9iamVjdCBvYmopIHsKKyAgICAgICAgaWYgKHRoaXMgPT0gb2JqKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAodGhpcy5nZXRDbGFzcygpICE9IG9iai5nZXRDbGFzcygpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBDYWxlbmRhciB0aGF0ID0gKENhbGVuZGFyKSBvYmo7CisKKyAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBnZXRUaW1lSW5NaWxsaXMoKSA9PSB0aGF0LmdldFRpbWUoKS5nZXRUaW1lKCkgJiYKKyAgICAgICAgICAgIGlzTGVuaWVudCgpID09IHRoYXQuaXNMZW5pZW50KCkgJiYKKyAgICAgICAgICAgIGdldEZpcnN0RGF5T2ZXZWVrKCkgPT0gdGhhdC5nZXRGaXJzdERheU9mV2VlaygpICYmCisgICAgICAgICAgICBnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKCkgPT0gdGhhdC5nZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKCkgJiYKKyAgICAgICAgICAgIGdldFRpbWVab25lKCkuZXF1YWxzKHRoYXQuZ2V0VGltZVpvbmUoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIGhhc2ggY29kZSBmb3IgdGhpcyBjYWxlbmRhci4KKyAgICAgKiBAcmV0dXJuIGEgaGFzaCBjb2RlIHZhbHVlIGZvciB0aGlzIG9iamVjdC4gCisgICAgICogQHNpbmNlIDEuMgorICAgICAqLworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIC8qIERvbid0IGluY2x1ZGUgdGhlIHRpbWUgYmVjYXVzZSAoYSkgd2UgZG9uJ3Qgd2FudCB0aGUgaGFzaCB2YWx1ZSB0bworICAgICAgICAgKiBtb3ZlIGFyb3VuZCBqdXN0IGJlY2F1c2UgYSBjYWxlbmRhciBpcyBzZXQgdG8gZGlmZmVyZW50IHRpbWVzLCBhbmQKKyAgICAgICAgICogKGIpIHdlIGRvbid0IHdhbnQgdG8gdHJpZ2dlciBhIHRpbWUgY29tcHV0YXRpb24ganVzdCB0byBnZXQgYSBoYXNoLgorICAgICAgICAgKiBOb3RlIHRoYXQgaXQgaXMgbm90IG5lY2Vzc2FyeSBmb3IgdW5lcXVhbCBvYmplY3RzIHRvIGFsd2F5cyBoYXZlCisgICAgICAgICAqIHVuZXF1YWwgaGFzaGVzLCBidXQgZXF1YWwgb2JqZWN0cyBtdXN0IGhhdmUgZXF1YWwgaGFzaGVzLiAgKi8KKyAgICAgICAgcmV0dXJuIChsZW5pZW50ID8gMSA6IDApCisgICAgICAgICAgICB8IChmaXJzdERheU9mV2VlayA8PCAxKQorICAgICAgICAgICAgfCAobWluaW1hbERheXNJbkZpcnN0V2VlayA8PCA0KQorICAgICAgICAgICAgfCAoem9uZS5oYXNoQ29kZSgpIDw8IDcpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgZGlmZmVyZW5jZSBpbiBtaWxsaXNlY29uZHMgYmV0d2VlbiB0aGUgbW9tZW50IHRoaXMKKyAgICAgKiBjYWxlbmRhciBpcyBzZXQgdG8gYW5kIHRoZSBtb21lbnQgdGhlIGdpdmVuIGNhbGVuZGFyIG9yIERhdGUgb2JqZWN0CisgICAgICogaXMgc2V0IHRvLgorICAgICAqLworICAgIHByaXZhdGUgbG9uZyBjb21wYXJlKE9iamVjdCB0aGF0KSB7CisgICAgICAgIGxvbmcgdGhhdE1zOworICAgICAgICBpZiAodGhhdCBpbnN0YW5jZW9mIENhbGVuZGFyKSB7CisgICAgICAgICAgICB0aGF0TXMgPSAoKENhbGVuZGFyKXRoYXQpLmdldFRpbWVJbk1pbGxpcygpOworICAgICAgICB9IGVsc2UgaWYgKHRoYXQgaW5zdGFuY2VvZiBEYXRlKSB7CisgICAgICAgICAgICB0aGF0TXMgPSAoKERhdGUpdGhhdCkuZ2V0VGltZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbih0aGF0ICsgImlzIG5vdCBhIENhbGVuZGFyIG9yIERhdGUiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZ2V0VGltZUluTWlsbGlzKCkgLSB0aGF0TXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcGFyZXMgdGhlIHRpbWUgZmllbGQgcmVjb3Jkcy4KKyAgICAgKiBFcXVpdmFsZW50IHRvIGNvbXBhcmluZyByZXN1bHQgb2YgY29udmVyc2lvbiB0byBVVEMuCisgICAgICogQHBhcmFtIHdoZW4gdGhlIENhbGVuZGFyIHRvIGJlIGNvbXBhcmVkIHdpdGggdGhpcyBDYWxlbmRhci4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGN1cnJlbnQgdGltZSBvZiB0aGlzIENhbGVuZGFyIGlzIGJlZm9yZQorICAgICAqIHRoZSB0aW1lIG9mIENhbGVuZGFyIHdoZW47IGZhbHNlIG90aGVyd2lzZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBiZWZvcmUoT2JqZWN0IHdoZW4pIHsKKyAgICAgICAgcmV0dXJuIGNvbXBhcmUod2hlbikgPCAwOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBhcmVzIHRoZSB0aW1lIGZpZWxkIHJlY29yZHMuCisgICAgICogRXF1aXZhbGVudCB0byBjb21wYXJpbmcgcmVzdWx0IG9mIGNvbnZlcnNpb24gdG8gVVRDLgorICAgICAqIEBwYXJhbSB3aGVuIHRoZSBDYWxlbmRhciB0byBiZSBjb21wYXJlZCB3aXRoIHRoaXMgQ2FsZW5kYXIuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBjdXJyZW50IHRpbWUgb2YgdGhpcyBDYWxlbmRhciBpcyBhZnRlcgorICAgICAqIHRoZSB0aW1lIG9mIENhbGVuZGFyIHdoZW47IGZhbHNlIG90aGVyd2lzZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBhZnRlcihPYmplY3Qgd2hlbikgeworICAgICAgICByZXR1cm4gY29tcGFyZSh3aGVuKSA+IDA7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBtYXhpbXVtIHZhbHVlIHRoYXQgdGhpcyBmaWVsZCBjb3VsZCBoYXZlLCBnaXZlbiB0aGUKKyAgICAgKiBjdXJyZW50IGRhdGUuICBGb3IgZXhhbXBsZSwgd2l0aCB0aGUgR3JlZ29yaWFuIGRhdGUgRmVicnVhcnkgMywgMTk5NworICAgICAqIGFuZCB0aGUge0BsaW5rICNEQVlfT0ZfTU9OVEggREFZX09GX01PTlRIfSBmaWVsZCwgdGhlIGFjdHVhbCBtYXhpbXVtCisgICAgICogaXMgMjg7IGZvciBGZWJydWFyeSAzLCAxOTk2IGl0IGlzIDI5LgorICAgICAqCisgICAgICogPHA+VGhlIGFjdHVhbCBtYXhpbXVtIGNvbXB1dGF0aW9uIGlnbm9yZXMgc21hbGxlciBmaWVsZHMgYW5kIHRoZQorICAgICAqIGN1cnJlbnQgdmFsdWUgb2YgbGlrZS1zaXplZCBmaWVsZHMuICBGb3IgZXhhbXBsZSwgdGhlIGFjdHVhbCBtYXhpbXVtCisgICAgICogb2YgdGhlIERBWV9PRl9ZRUFSIG9yIE1PTlRIIGRlcGVuZHMgb25seSBvbiB0aGUgeWVhciBhbmQgc3VwcmEteWVhcgorICAgICAqIGZpZWxkcy4gIFRoZSBhY3R1YWwgbWF4aW11bSBvZiB0aGUgREFZX09GX01PTlRIIGRlcGVuZHMsIGluCisgICAgICogYWRkaXRpb24sIG9uIHRoZSBNT05USCBmaWVsZCBhbmQgYW55IG90aGVyIGZpZWxkcyBhdCB0aGF0CisgICAgICogZ3JhbnVsYXJpdHkgKHN1Y2ggYXMgQ2hpbmVzZUNhbGVuZGFyLklTX0xFQVBfTU9OVEgpLiAgVGhlCisgICAgICogREFZX09GX1dFRUtfSU5fTU9OVEggZmllbGQgZG9lcyBub3QgZGVwZW5kIG9uIHRoZSBjdXJyZW50CisgICAgICogREFZX09GX1dFRUs7IGl0IHJldHVybnMgdGhlIG1heGltdW0gZm9yIGFueSBkYXkgb2Ygd2VlayBpbiB0aGUKKyAgICAgKiBjdXJyZW50IG1vbnRoLiAgTGlrZXdpc2UgZm9yIHRoZSBXRUVLX09GX01PTlRIIGFuZCBXRUVLX09GX1lFQVIKKyAgICAgKiBmaWVsZHMuCisgICAgICogCisgICAgICogQHBhcmFtIGZpZWxkIHRoZSBmaWVsZCB3aG9zZSBtYXhpbXVtIGlzIGRlc2lyZWQKKyAgICAgKiBAcmV0dXJuIHRoZSBtYXhpbXVtIG9mIHRoZSBnaXZlbiBmaWVsZCBmb3IgdGhlIGN1cnJlbnQgZGF0ZSBvZiB0aGlzIGNhbGVuZGFyCisgICAgICogQHNlZSAjZ2V0TWF4aW11bQorICAgICAqIEBzZWUgI2dldExlYXN0TWF4aW11bQorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0QWN0dWFsTWF4aW11bShpbnQgZmllbGQpIHsKKyAgICAgICAgaW50IHJlc3VsdDsKKyAgICAgICAgCisgICAgICAgIHN3aXRjaCAoZmllbGQpIHsKKyAgICAgICAgY2FzZSBEQVlfT0ZfTU9OVEg6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ2FsZW5kYXIgY2FsID0gKENhbGVuZGFyKSBjbG9uZSgpOworICAgICAgICAgICAgICAgIGNhbC5wcmVwYXJlR2V0QWN0dWFsKGZpZWxkLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gaGFuZGxlR2V0TW9udGhMZW5ndGgoY2FsLmdldChFWFRFTkRFRF9ZRUFSKSwgY2FsLmdldChNT05USCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEQVlfT0ZfWUVBUjoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBDYWxlbmRhciBjYWwgPSAoQ2FsZW5kYXIpIGNsb25lKCk7CisgICAgICAgICAgICAgICAgY2FsLnByZXBhcmVHZXRBY3R1YWwoZmllbGQsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBoYW5kbGVHZXRZZWFyTGVuZ3RoKGNhbC5nZXQoRVhURU5ERURfWUVBUikpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEQVlfT0ZfV0VFSzoKKyAgICAgICAgY2FzZSBBTV9QTToKKyAgICAgICAgY2FzZSBIT1VSOgorICAgICAgICBjYXNlIEhPVVJfT0ZfREFZOgorICAgICAgICBjYXNlIE1JTlVURToKKyAgICAgICAgY2FzZSBTRUNPTkQ6CisgICAgICAgIGNhc2UgTUlMTElTRUNPTkQ6CisgICAgICAgIGNhc2UgWk9ORV9PRkZTRVQ6CisgICAgICAgIGNhc2UgRFNUX09GRlNFVDoKKyAgICAgICAgY2FzZSBET1dfTE9DQUw6CisgICAgICAgIGNhc2UgSlVMSUFOX0RBWToKKyAgICAgICAgY2FzZSBNSUxMSVNFQ09ORFNfSU5fREFZOgorICAgICAgICAgICAgLy8gVGhlc2UgZmllbGRzIGFsbCBoYXZlIGZpeGVkIG1pbmltYS9tYXhpbWEKKyAgICAgICAgICAgIHJlc3VsdCA9IGdldE1heGltdW0oZmllbGQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIEZvciBhbGwgb3RoZXIgZmllbGRzLCBkbyBpdCB0aGUgaGFyZCB3YXkuLi4uCisgICAgICAgICAgICByZXN1bHQgPSBnZXRBY3R1YWxIZWxwZXIoZmllbGQsIGdldExlYXN0TWF4aW11bShmaWVsZCksIGdldE1heGltdW0oZmllbGQpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbWluaW11bSB2YWx1ZSB0aGF0IHRoaXMgZmllbGQgY291bGQgaGF2ZSwgZ2l2ZW4gdGhlIGN1cnJlbnQgZGF0ZS4KKyAgICAgKiBGb3IgbW9zdCBmaWVsZHMsIHRoaXMgaXMgdGhlIHNhbWUgYXMge0BsaW5rICNnZXRNaW5pbXVtIGdldE1pbmltdW19CisgICAgICogYW5kIHtAbGluayAjZ2V0R3JlYXRlc3RNaW5pbXVtIGdldEdyZWF0ZXN0TWluaW11bX0uICBIb3dldmVyLCBzb21lIGZpZWxkcywKKyAgICAgKiBlc3BlY2lhbGx5IHRob3NlIHJlbGF0ZWQgdG8gd2VlayBudW1iZXIsIGFyZSBtb3JlIGNvbXBsaWNhdGVkLgorICAgICAqIDxwPgorICAgICAqIEZvciBleGFtcGxlLCBhc3N1bWUge0BsaW5rICNnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrIGdldE1pbmltYWxEYXlzSW5GaXJzdFdlZWt9CisgICAgICogcmV0dXJucyA0IGFuZCB7QGxpbmsgI2dldEZpcnN0RGF5T2ZXZWVrIGdldEZpcnN0RGF5T2ZXZWVrfSByZXR1cm5zIFNVTkRBWS4KKyAgICAgKiBJZiB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aCBpcyBTdW5kYXksIE1vbmRheSwgVHVlc2RheSwgb3IgV2VkbmVzZGF5CisgICAgICogdGhlcmUgd2lsbCBiZSBmb3VyIG9yIG1vcmUgZGF5cyBpbiB0aGUgZmlyc3Qgd2Vlaywgc28gaXQgd2lsbCBiZSB3ZWVrIG51bWJlciAxLAorICAgICAqIGFuZCA8Y29kZT5nZXRBY3R1YWxNaW5pbXVtKFdFRUtfT0ZfTU9OVEgpPC9jb2RlPiB3aWxsIHJldHVybiAxLiAgSG93ZXZlciwKKyAgICAgKiBpZiB0aGUgZmlyc3Qgb2YgdGhlIG1vbnRoIGlzIGEgVGh1cnNkYXksIEZyaWRheSwgb3IgU2F0dXJkYXksIHRoZXJlIGFyZQorICAgICAqIDxlbT5ub3Q8L2VtPiBmb3VyIGRheXMgaW4gdGhhdCB3ZWVrLCBzbyBpdCBpcyB3ZWVrIG51bWJlciAwLCBhbmQgCisgICAgICogPGNvZGU+Z2V0QWN0dWFsTWluaW11bShXRUVLX09GX01PTlRIKTwvY29kZT4gd2lsbCByZXR1cm4gMC4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gZmllbGQgdGhlIGZpZWxkIHdob3NlIGFjdHVhbCBtaW5pbXVtIHZhbHVlIGlzIGRlc2lyZWQuCisgICAgICogQHJldHVybiB0aGUgbWluaW11bSBvZiB0aGUgZ2l2ZW4gZmllbGQgZm9yIHRoZSBjdXJyZW50IGRhdGUgb2YgdGhpcyBjYWxlbmRhcgorICAgICAqCisgICAgICogQHNlZSAjZ2V0TWluaW11bQorICAgICAqIEBzZWUgI2dldEdyZWF0ZXN0TWluaW11bQorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0QWN0dWFsTWluaW11bShpbnQgZmllbGQpIHsKKyAgICAgICAgaW50IHJlc3VsdDsKKyAgICAgICAgCisgICAgICAgIHN3aXRjaCAoZmllbGQpIHsKKyAgICAgICAgY2FzZSBEQVlfT0ZfV0VFSzoKKyAgICAgICAgY2FzZSBBTV9QTToKKyAgICAgICAgY2FzZSBIT1VSOgorICAgICAgICBjYXNlIEhPVVJfT0ZfREFZOgorICAgICAgICBjYXNlIE1JTlVURToKKyAgICAgICAgY2FzZSBTRUNPTkQ6CisgICAgICAgIGNhc2UgTUlMTElTRUNPTkQ6CisgICAgICAgIGNhc2UgWk9ORV9PRkZTRVQ6CisgICAgICAgIGNhc2UgRFNUX09GRlNFVDoKKyAgICAgICAgY2FzZSBET1dfTE9DQUw6CisgICAgICAgIGNhc2UgSlVMSUFOX0RBWToKKyAgICAgICAgY2FzZSBNSUxMSVNFQ09ORFNfSU5fREFZOgorICAgICAgICAgICAgLy8gVGhlc2UgZmllbGRzIGFsbCBoYXZlIGZpeGVkIG1pbmltYS9tYXhpbWEKKyAgICAgICAgICAgIHJlc3VsdCA9IGdldE1pbmltdW0oZmllbGQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIEZvciBhbGwgb3RoZXIgZmllbGRzLCBkbyBpdCB0aGUgaGFyZCB3YXkuLi4uCisgICAgICAgICAgICByZXN1bHQgPSBnZXRBY3R1YWxIZWxwZXIoZmllbGQsIGdldEdyZWF0ZXN0TWluaW11bShmaWVsZCksIGdldE1pbmltdW0oZmllbGQpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJlcGFyZSB0aGlzIGNhbGVuZGFyIGZvciBjb21wdXRpbmcgdGhlIGFjdHVhbCBtaW5pbXVtIG9yIG1heGltdW0uCisgICAgICogVGhpcyBtZXRob2QgbW9kaWZpZXMgdGhpcyBjYWxlbmRhcidzIGZpZWxkczsgaXQgaXMgY2FsbGVkIG9uIGEKKyAgICAgKiB0ZW1wb3JhcnkgY2FsZW5kYXIuCisgICAgICoKKyAgICAgKiA8cD5SYXRpb25hbGU6IFRoZSBzZW1hbnRpY3Mgb2YgZ2V0QWN0dWFsWHh4KCkgaXMgdG8gcmV0dXJuIHRoZQorICAgICAqIG1heGltdW0gb3IgbWluaW11bSB2YWx1ZSB0aGF0IHRoZSBnaXZlbiBmaWVsZCBjYW4gdGFrZSwgdGFraW5nIGludG8KKyAgICAgKiBhY2NvdW50IG90aGVyIHJlbGV2YW50IGZpZWxkcy4gIEluIGdlbmVyYWwgdGhlc2Ugb3RoZXIgZmllbGRzIGFyZQorICAgICAqIGxhcmdlciBmaWVsZHMuICBGb3IgZXhhbXBsZSwgd2hlbiBjb21wdXRpbmcgdGhlIGFjdHVhbCBtYXhpbXVtCisgICAgICogREFZX09GX01PTlRILCB0aGUgY3VycmVudCB2YWx1ZSBvZiBEQVlfT0ZfTU9OVEggaXRzZWxmIGlzIGlnbm9yZWQsCisgICAgICogYXMgaXMgdGhlIHZhbHVlIG9mIGFueSBmaWVsZCBzbWFsbGVyLgorICAgICAqCisgICAgICogPHA+VGhlIHRpbWUgZmllbGRzIGFsbCBoYXZlIGZpeGVkIG1pbmltYSBhbmQgbWF4aW1hLCBzbyB3ZSBkb24ndAorICAgICAqIG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlbS4gIFRoaXMgYWxzbyBsZXRzIHVzIHNldCB0aGUKKyAgICAgKiBNSUxMSVNFQ09ORFNfSU5fREFZIHRvIHplcm8gdG8gZXJhc2UgYW55IGVmZmVjdHMgdGhlIHRpbWUgZmllbGRzCisgICAgICogbWlnaHQgaGF2ZSB3aGVuIGNvbXB1dGluZyBkYXRlIGZpZWxkcy4KKyAgICAgKgorICAgICAqIDxwPkRBWV9PRl9XRUVLIGlzIGFkanVzdGVkIHNwZWNpYWxseSBmb3IgdGhlIFdFRUtfT0ZfTU9OVEggYW5kCisgICAgICogV0VFS19PRl9ZRUFSIGZpZWxkcyB0byBlbnN1cmUgdGhhdCB0aGV5IGFyZSBjb21wdXRlZCBjb3JyZWN0bHkuCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgcHJlcGFyZUdldEFjdHVhbChpbnQgZmllbGQsIGJvb2xlYW4gaXNNaW5pbXVtKSB7CisgICAgICAgIHNldChNSUxMSVNFQ09ORFNfSU5fREFZLCAwKTsKKworICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7CisgICAgICAgIGNhc2UgWUVBUjoKKyAgICAgICAgY2FzZSBZRUFSX1dPWToKKyAgICAgICAgY2FzZSBFWFRFTkRFRF9ZRUFSOgorICAgICAgICAgICAgc2V0KERBWV9PRl9ZRUFSLCBnZXRHcmVhdGVzdE1pbmltdW0oREFZX09GX1lFQVIpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICBjYXNlIE1PTlRIOgorICAgICAgICAgICAgc2V0KERBWV9PRl9NT05USCwgZ2V0R3JlYXRlc3RNaW5pbXVtKERBWV9PRl9NT05USCkpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEQVlfT0ZfV0VFS19JTl9NT05USDoKKyAgICAgICAgICAgIC8vIEZvciBkb3dpbSwgdGhlIG1heGltdW0gb2NjdXJzIGZvciB0aGUgRE9XIG9mIHRoZSBmaXJzdCBvZiB0aGUKKyAgICAgICAgICAgIC8vIG1vbnRoLgorICAgICAgICAgICAgc2V0KERBWV9PRl9NT05USCwgMSk7CisgICAgICAgICAgICBzZXQoREFZX09GX1dFRUssIGdldChEQVlfT0ZfV0VFSykpOyAvLyBNYWtlIHRoaXMgdXNlciBzZXQKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICBjYXNlIFdFRUtfT0ZfTU9OVEg6CisgICAgICAgIGNhc2UgV0VFS19PRl9ZRUFSOgorICAgICAgICAgICAgLy8gSWYgd2UncmUgY291bnRpbmcgd2Vla3MsIHNldCB0aGUgZGF5IG9mIHRoZSB3ZWVrIHRvIGVpdGhlciB0aGUKKyAgICAgICAgICAgIC8vIGZpcnN0IG9yIGxhc3QgbG9jYWxpemVkIERPVy4gIFdlIGtub3cgdGhlIGxhc3Qgd2VlayBvZiBhIG1vbnRoCisgICAgICAgICAgICAvLyBvciB5ZWFyIHdpbGwgY29udGFpbiB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLCBhbmQgdGhhdCB0aGUKKyAgICAgICAgICAgIC8vIGZpcnN0IHdlZWsgd2lsbCBjb250YWluIHRoZSBsYXN0IERPVy4KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQgZG93ID0gZmlyc3REYXlPZldlZWs7CisgICAgICAgICAgICAgICAgaWYgKGlzTWluaW11bSkgeworICAgICAgICAgICAgICAgICAgICBkb3cgPSAoZG93ICsgNikgJSA3OyAvLyBzZXQgdG8gbGFzdCBET1cKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRvdyA8IFNVTkRBWSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZG93ICs9IDc7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc2V0KERBWV9PRl9XRUVLLCBkb3cpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBEbyB0aGlzIGxhc3QgdG8gZ2l2ZSBpdCB0aGUgbmV3ZXN0IHRpbWUgc3RhbXAKKyAgICAgICAgc2V0KGZpZWxkLCBnZXRHcmVhdGVzdE1pbmltdW0oZmllbGQpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGludCBnZXRBY3R1YWxIZWxwZXIoaW50IGZpZWxkLCBpbnQgc3RhcnRWYWx1ZSwgaW50IGVuZFZhbHVlKSB7CisKKyAgICAgICAgaWYgKHN0YXJ0VmFsdWUgPT0gZW5kVmFsdWUpIHsKKyAgICAgICAgICAgIC8vIGlmIHdlIGtub3cgdGhhdCB0aGUgbWF4aW11bSB2YWx1ZSBpcyBhbHdheXMgdGhlIHNhbWUsIGp1c3QgcmV0dXJuIGl0CisgICAgICAgICAgICByZXR1cm4gc3RhcnRWYWx1ZTsKKyAgICAgICAgfSAKKworICAgICAgICBmaW5hbCBpbnQgZGVsdGEgPSAoZW5kVmFsdWUgPiBzdGFydFZhbHVlKSA/IDEgOiAtMTsKKworICAgICAgICAvLyBjbG9uZSB0aGUgY2FsZW5kYXIgc28gd2UgZG9uJ3QgbWVzcyB3aXRoIHRoZSByZWFsIG9uZSwgYW5kIHNldCBpdCB0bworICAgICAgICAvLyBhY2NlcHQgYW55dGhpbmcgZm9yIHRoZSBmaWVsZCB2YWx1ZXMKKyAgICAgICAgQ2FsZW5kYXIgd29yayA9IChDYWxlbmRhcikgY2xvbmUoKTsKKyAgICAgICAgd29yay5zZXRMZW5pZW50KHRydWUpOworICAgICAgICB3b3JrLnByZXBhcmVHZXRBY3R1YWwoZmllbGQsIGRlbHRhIDwgMCk7CisgICAgICAgIAorICAgICAgICAvLyBub3cgdHJ5IGVhY2ggdmFsdWUgZnJvbSB0aGUgc3RhcnQgdG8gdGhlIGVuZCBvbmUgYnkgb25lIHVudGlsCisgICAgICAgIC8vIHdlIGdldCBhIHZhbHVlIHRoYXQgbm9ybWFsaXplcyB0byBhbm90aGVyIHZhbHVlLiAgVGhlIGxhc3QgdmFsdWUgdGhhdAorICAgICAgICAvLyBub3JtYWxpemVzIHRvIGl0c2VsZiBpcyB0aGUgYWN0dWFsIG1heGltdW0gZm9yIHRoZSBjdXJyZW50IGRhdGUKKyAgICAgICAgaW50IHJlc3VsdCA9IHN0YXJ0VmFsdWU7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIHdvcmsuc2V0KGZpZWxkLCBzdGFydFZhbHVlKTsKKyAgICAgICAgICAgIGlmICh3b3JrLmdldChmaWVsZCkgIT0gc3RhcnRWYWx1ZSkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBzdGFydFZhbHVlOworICAgICAgICAgICAgICAgIHN0YXJ0VmFsdWUgKz0gZGVsdGE7CisgICAgICAgICAgICB9CisgICAgICAgIH0gd2hpbGUgKHJlc3VsdCAhPSBlbmRWYWx1ZSk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUm9sbHMgKHVwL2Rvd24pIGEgc2luZ2xlIHVuaXQgb2YgdGltZSBvbiB0aGUgZ2l2ZW4gZmllbGQuICBJZiB0aGUKKyAgICAgKiBmaWVsZCBpcyByb2xsZWQgcGFzdCBpdHMgbWF4aW11bSBhbGxvd2FibGUgdmFsdWUsIGl0IHdpbGwgIndyYXAiIGJhY2sKKyAgICAgKiB0byBpdHMgbWluaW11bSBhbmQgY29udGludWUgcm9sbGluZy4gRm9yCisgICAgICogZXhhbXBsZSwgdG8gcm9sbCB0aGUgY3VycmVudCBkYXRlIHVwIGJ5IG9uZSBkYXksIHlvdSBjYW4gY2FsbDoKKyAgICAgKiA8cD4KKyAgICAgKiA8Y29kZT5yb2xsKHtAbGluayAjREFURX0sIHRydWUpPC9jb2RlPgorICAgICAqIDxwPgorICAgICAqIFdoZW4gcm9sbGluZyBvbiB0aGUge0BsaW5rICNZRUFSfSBmaWVsZCwgaXQgd2lsbCByb2xsIHRoZSB5ZWFyCisgICAgICogdmFsdWUgaW4gdGhlIHJhbmdlIGJldHdlZW4gMSBhbmQgdGhlIHZhbHVlIHJldHVybmVkIGJ5IGNhbGxpbmcKKyAgICAgKiB7QGxpbmsgI2dldE1heGltdW0gZ2V0TWF4aW11bX0oe0BsaW5rICNZRUFSfSkuCisgICAgICogPHA+CisgICAgICogV2hlbiByb2xsaW5nIG9uIGNlcnRhaW4gZmllbGRzLCB0aGUgdmFsdWVzIG9mIG90aGVyIGZpZWxkcyBtYXkgY29uZmxpY3QgYW5kCisgICAgICogbmVlZCB0byBiZSBjaGFuZ2VkLiAgRm9yIGV4YW1wbGUsIHdoZW4gcm9sbGluZyB0aGUgPGNvZGU+TU9OVEg8L2NvZGU+IGZpZWxkCisgICAgICogZm9yIHRoZSBHcmVnb3JpYW4gZGF0ZSAxLzMxLzk2IHVwd2FyZCwgdGhlIDxjb2RlPkRBWV9PRl9NT05USDwvY29kZT4gZmllbGQKKyAgICAgKiBtdXN0IGJlIGFkanVzdGVkIHNvIHRoYXQgdGhlIHJlc3VsdCBpcyAyLzI5Lzk2IHJhdGhlciB0aGFuIHRoZSBpbnZhbGlkCisgICAgICogMi8zMS85Ni4KKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5Ob3RlOjwvYj4gQ2FsbGluZyA8dHQ+cm9sbChmaWVsZCwgdHJ1ZSk8L3R0PiBOIHRpbWVzIGlzIDxlbT5ub3Q8L2VtPgorICAgICAqIG5lY2Vzc2FyaWx5IGVxdWl2YWxlbnQgdG8gY2FsbGluZyA8dHQ+cm9sbChmaWVsZCwgTik8L3R0Pi4gIEZvciBleGFtcGxlLAorICAgICAqIGltYWdpbmUgdGhhdCB5b3Ugc3RhcnQgd2l0aCB0aGUgZGF0ZSBHcmVnb3JpYW4gZGF0ZSBKYW51YXJ5IDMxLCAxOTk1LiAgSWYgeW91IGNhbGwKKyAgICAgKiA8dHQ+cm9sbChDYWxlbmRhci5NT05USCwgMik8L3R0PiwgdGhlIHJlc3VsdCB3aWxsIGJlIE1hcmNoIDMxLCAxOTk1LgorICAgICAqIEJ1dCBpZiB5b3UgY2FsbCA8dHQ+cm9sbChDYWxlbmRhci5NT05USCwgdHJ1ZSk8L3R0PiwgdGhlIHJlc3VsdCB3aWxsIGJlCisgICAgICogRmVicnVhcnkgMjgsIDE5OTUuICBDYWxsaW5nIGl0IG9uZSBtb3JlIHRpbWUgd2lsbCBnaXZlIE1hcmNoIDI4LCAxOTk1LCB3aGljaAorICAgICAqIGlzIHVzdWFsbHkgbm90IHRoZSBkZXNpcmVkIHJlc3VsdC4KKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5Ob3RlOjwvYj4gWW91IHNob3VsZCBhbHdheXMgdXNlIDx0dD5yb2xsPC90dD4gYW5kIDx0dD5hZGQ8L3R0PiByYXRoZXIKKyAgICAgKiB0aGFuIGF0dGVtcHRpbmcgdG8gcGVyZm9ybSBhcml0aG1ldGljIG9wZXJhdGlvbnMgZGlyZWN0bHkgb24gdGhlIGZpZWxkcworICAgICAqIG9mIGEgPHR0PkNhbGVuZGFyPC90dD4uICBJdCBpcyBxdWl0ZSBwb3NzaWJsZSBmb3IgPHR0PkNhbGVuZGFyPC90dD4gc3ViY2xhc3NlcworICAgICAqIHRvIGhhdmUgZmllbGRzIHdpdGggbm9uLWxpbmVhciBiZWhhdmlvciwgZm9yIGV4YW1wbGUgbWlzc2luZyBtb250aHMKKyAgICAgKiBvciBkYXlzIGR1cmluZyBub24tbGVhcCB5ZWFycy4gIFRoZSBzdWJjbGFzc2VzJyA8dHQ+YWRkPC90dD4gYW5kIDx0dD5yb2xsPC90dD4KKyAgICAgKiBtZXRob2RzIHdpbGwgdGFrZSB0aGlzIGludG8gYWNjb3VudCwgd2hpbGUgc2ltcGxlIGFyaXRobWV0aWMgbWFuaXB1bGF0aW9ucworICAgICAqIG1heSBnaXZlIGludmFsaWQgcmVzdWx0cy4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gZmllbGQgdGhlIGNhbGVuZGFyIGZpZWxkIHRvIHJvbGwuCisgICAgICoKKyAgICAgKiBAcGFyYW0gdXAgICAgaW5kaWNhdGVzIGlmIHRoZSB2YWx1ZSBvZiB0aGUgc3BlY2lmaWVkIHRpbWUgZmllbGQgaXMgdG8gYmUKKyAgICAgKiAgICAgICAgICAgICAgcm9sbGVkIHVwIG9yIHJvbGxlZCBkb3duLiBVc2UgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgcm9sbGluZyB1cCwKKyAgICAgKiAgICAgICAgICAgICAgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4KKyAgICAgKgorICAgICAqIEBleGNlcHRpb24gICBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGZpZWxkIGlzIGludmFsaWQgb3IgcmVmZXJzCisgICAgICogICAgICAgICAgICAgIHRvIGEgZmllbGQgdGhhdCBjYW5ub3QgYmUgaGFuZGxlZCBieSB0aGlzIG1ldGhvZC4KKyAgICAgKiBAc2VlICNyb2xsKGludCwgaW50KQorICAgICAqIEBzZWUgI2FkZAorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIHJvbGwoaW50IGZpZWxkLCBib29sZWFuIHVwKQorICAgIHsKKyAgICAgICAgcm9sbChmaWVsZCwgdXAgPyArMSA6IC0xKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSb2xscyAodXAvZG93bikgYSBzcGVjaWZpZWQgYW1vdW50IHRpbWUgb24gdGhlIGdpdmVuIGZpZWxkLiAgRm9yCisgICAgICogZXhhbXBsZSwgdG8gcm9sbCB0aGUgY3VycmVudCBkYXRlIHVwIGJ5IHRocmVlIGRheXMsIHlvdSBjYW4gY2FsbAorICAgICAqIDxjb2RlPnJvbGwoQ2FsZW5kYXIuREFURSwgMyk8L2NvZGU+LiAgSWYgdGhlCisgICAgICogZmllbGQgaXMgcm9sbGVkIHBhc3QgaXRzIG1heGltdW0gYWxsb3dhYmxlIHZhbHVlLCBpdCB3aWxsICJ3cmFwIiBiYWNrCisgICAgICogdG8gaXRzIG1pbmltdW0gYW5kIGNvbnRpbnVlIHJvbGxpbmcuICAKKyAgICAgKiBGb3IgZXhhbXBsZSwgY2FsbGluZyA8Y29kZT5yb2xsKENhbGVuZGFyLkRBVEUsIDEwKTwvY29kZT4KKyAgICAgKiBvbiBhIEdyZWdvcmlhbiBjYWxlbmRhciBzZXQgdG8gNC8yNS85NiB3aWxsIHJlc3VsdCBpbiB0aGUgZGF0ZSA0LzUvOTYuCisgICAgICogPHA+CisgICAgICogV2hlbiByb2xsaW5nIG9uIGNlcnRhaW4gZmllbGRzLCB0aGUgdmFsdWVzIG9mIG90aGVyIGZpZWxkcyBtYXkgY29uZmxpY3QgYW5kCisgICAgICogbmVlZCB0byBiZSBjaGFuZ2VkLiAgRm9yIGV4YW1wbGUsIHdoZW4gcm9sbGluZyB0aGUge0BsaW5rICNNT05USCBNT05USH0gZmllbGQKKyAgICAgKiBmb3IgdGhlIEdyZWdvcmlhbiBkYXRlIDEvMzEvOTYgYnkgKzEsIHRoZSB7QGxpbmsgI0RBWV9PRl9NT05USCBEQVlfT0ZfTU9OVEh9IGZpZWxkCisgICAgICogbXVzdCBiZSBhZGp1c3RlZCBzbyB0aGF0IHRoZSByZXN1bHQgaXMgMi8yOS85NiByYXRoZXIgdGhhbiB0aGUgaW52YWxpZAorICAgICAqIDIvMzEvOTYuCisgICAgICogPHA+CisgICAgICogVGhlIDxjb2RlPmNvbS5pYm0udXRpbC5DYWxlbmRhcjwvY29kZT4gaW1wbGVtZW50YXRpb24gb2YgdGhpcyBtZXRob2QgaXMgYWJsZSB0byByb2xsCisgICAgICogYWxsIGZpZWxkcyBleGNlcHQgZm9yIHtAbGluayAjRVJBIEVSQX0sIHtAbGluayAjRFNUX09GRlNFVCBEU1RfT0ZGU0VUfSwKKyAgICAgKiBhbmQge0BsaW5rICNaT05FX09GRlNFVCBaT05FX09GRlNFVH0uICBTdWJjbGFzc2VzIG1heSwgb2YgY291cnNlLCBhZGQgc3VwcG9ydCBmb3IKKyAgICAgKiBhZGRpdGlvbmFsIGZpZWxkcyBpbiB0aGVpciBvdmVycmlkZXMgb2YgPGNvZGU+cm9sbDwvY29kZT4uCisgICAgICogPHA+CisgICAgICogPGI+Tm90ZTo8L2I+IFlvdSBzaG91bGQgYWx3YXlzIHVzZSA8dHQ+cm9sbDwvdHQ+IGFuZCA8dHQ+YWRkPC90dD4gcmF0aGVyCisgICAgICogdGhhbiBhdHRlbXB0aW5nIHRvIHBlcmZvcm0gYXJpdGhtZXRpYyBvcGVyYXRpb25zIGRpcmVjdGx5IG9uIHRoZSBmaWVsZHMKKyAgICAgKiBvZiBhIDx0dD5DYWxlbmRhcjwvdHQ+LiAgSXQgaXMgcXVpdGUgcG9zc2libGUgZm9yIDx0dD5DYWxlbmRhcjwvdHQ+IHN1YmNsYXNzZXMKKyAgICAgKiB0byBoYXZlIGZpZWxkcyB3aXRoIG5vbi1saW5lYXIgYmVoYXZpb3IsIGZvciBleGFtcGxlIG1pc3NpbmcgbW9udGhzCisgICAgICogb3IgZGF5cyBkdXJpbmcgbm9uLWxlYXAgeWVhcnMuICBUaGUgc3ViY2xhc3NlcycgPHR0PmFkZDwvdHQ+IGFuZCA8dHQ+cm9sbDwvdHQ+CisgICAgICogbWV0aG9kcyB3aWxsIHRha2UgdGhpcyBpbnRvIGFjY291bnQsIHdoaWxlIHNpbXBsZSBhcml0aG1ldGljIG1hbmlwdWxhdGlvbnMKKyAgICAgKiBtYXkgZ2l2ZSBpbnZhbGlkIHJlc3VsdHMuCisgICAgICogPHA+CisgICAgICogPGI+U3ViY2xhc3Npbmc6PC9iPjxicj4KKyAgICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIDxjb2RlPnJvbGw8L2NvZGU+IGFzc3VtZXMgdGhhdCB0aGUgYmVoYXZpb3Igb2YgdGhlCisgICAgICogZmllbGQgaXMgY29udGludW91cyBiZXR3ZWVuIGl0cyBtaW5pbXVtIGFuZCBtYXhpbXVtLCB3aGljaCBhcmUgZm91bmQgYnkKKyAgICAgKiBjYWxsaW5nIHtAbGluayAjZ2V0QWN0dWFsTWluaW11bSBnZXRBY3R1YWxNaW5pbXVtfSBhbmQge0BsaW5rICNnZXRBY3R1YWxNYXhpbXVtIGdldEFjdHVhbE1heGltdW19LgorICAgICAqIEZvciBtb3N0IHN1Y2ggZmllbGRzLCBzaW1wbGUgYWRkaXRpb24sIHN1YnRyYWN0aW9uLCBhbmQgbW9kdWx1cyBvcGVyYXRpb25zCisgICAgICogYXJlIHN1ZmZpY2llbnQgdG8gcGVyZm9ybSB0aGUgcm9sbC4gIEZvciB3ZWVrLXJlbGF0ZWQgZmllbGRzLAorICAgICAqIHRoZSByZXN1bHRzIG9mIHtAbGluayAjZ2V0Rmlyc3REYXlPZldlZWsgZ2V0Rmlyc3REYXlPZldlZWt9IGFuZAorICAgICAqIHtAbGluayAjZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlayBnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrfSBhcmUgYWxzbyBuZWNlc3NhcnkuCisgICAgICogU3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdGhlc2UgdHdvIG1ldGhvZHMgaWYgdGhlaXIgdmFsdWVzIGRpZmZlciBmcm9tIHRoZSBkZWZhdWx0cy4KKyAgICAgKiA8cD4KKyAgICAgKiBTdWJjbGFzc2VzIHRoYXQgaGF2ZSBmaWVsZHMgZm9yIHdoaWNoIHRoZSBhc3N1bXB0aW9uIG9mIGNvbnRpbnVpdHkgYnJlYWtzCisgICAgICogZG93biBtdXN0IG92ZXJpZGUgPGNvZGU+cm9sbDwvY29kZT4gdG8gaGFuZGxlIHRob3NlIGZpZWxkcyBzcGVjaWFsbHkuCisgICAgICogRm9yIGV4YW1wbGUsIGluIHRoZSBIZWJyZXcgY2FsZW5kYXIgdGhlIG1vbnRoICJBZGFyIEkiCisgICAgICogb25seSBvY2N1cnMgaW4gbGVhcCB5ZWFyczsgaW4gb3RoZXIgeWVhcnMgdGhlIGNhbGVuZGFyIGp1bXBzIGZyb20KKyAgICAgKiBTaGV2YXQgKG1vbnRoICM0KSB0byBBZGFyIChtb250aCAjNikuICBUaGUgCisgICAgICoge0BsaW5rIEhlYnJld0NhbGVuZGFyI3JvbGwgSGVicmV3Q2FsZW5kYXIucm9sbH0gbWV0aG9kIHRha2VzIHRoaXMgaW50byBhY2NvdW50LAorICAgICAqIHNvIHRoYXQgcm9sbGluZyB0aGUgbW9udGggb2YgU2hldmF0IGJ5IG9uZSBnaXZlcyB0aGUgcHJvcGVyIHJlc3VsdCAoQWRhcikgaW4gYQorICAgICAqIG5vbi1sZWFwIHllYXIuCisgICAgICogPHA+CisgICAgICogQHBhcmFtIGZpZWxkICAgICB0aGUgY2FsZW5kYXIgZmllbGQgdG8gcm9sbC4KKyAgICAgKiBAcGFyYW0gYW1vdW50ICAgIHRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGZpZWxkIHNob3VsZCBiZSByb2xsZWQuCisgICAgICoKKyAgICAgKiBAZXhjZXB0aW9uICAgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBmaWVsZCBpcyBpbnZhbGlkIG9yIHJlZmVycworICAgICAqICAgICAgICAgICAgICB0byBhIGZpZWxkIHRoYXQgY2Fubm90IGJlIGhhbmRsZWQgYnkgdGhpcyBtZXRob2QuCisgICAgICogQHNlZSAjcm9sbChpbnQsIGJvb2xlYW4pCisgICAgICogQHNlZSAjYWRkCisgICAgICovCisgICAgcHVibGljIHZvaWQgcm9sbChpbnQgZmllbGQsIGludCBhbW91bnQpIHsKKworICAgICAgICBpZiAoYW1vdW50ID09IDApIHsKKyAgICAgICAgICAgIHJldHVybjsgLy8gTm90aGluZyB0byBkbworICAgICAgICB9CisKKyAgICAgICAgY29tcGxldGUoKTsKKworICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7CisgICAgICAgIGNhc2UgREFZX09GX01PTlRIOgorICAgICAgICBjYXNlIEFNX1BNOgorICAgICAgICBjYXNlIE1JTlVURToKKyAgICAgICAgY2FzZSBTRUNPTkQ6CisgICAgICAgIGNhc2UgTUlMTElTRUNPTkQ6CisgICAgICAgIGNhc2UgTUlMTElTRUNPTkRTX0lOX0RBWToKKyAgICAgICAgICAgIC8vIFRoZXNlIGFyZSB0aGUgc3RhbmRhcmQgcm9sbCBpbnN0cnVjdGlvbnMuICBUaGVzZSB3b3JrIGZvciBhbGwKKyAgICAgICAgICAgIC8vIHNpbXBsZSBjYXNlcywgdGhhdCBpcywgY2FzZXMgaW4gd2hpY2ggdGhlIGxpbWl0cyBhcmUgZml4ZWQsIHN1Y2gKKyAgICAgICAgICAgIC8vIGFzIHRoZSBob3VyLCB0aGUgZGF5IG9mIHRoZSBtb250aCwgYW5kIHRoZSBlcmEuCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW50IG1pbiA9IGdldEFjdHVhbE1pbmltdW0oZmllbGQpOworICAgICAgICAgICAgICAgIGludCBtYXggPSBnZXRBY3R1YWxNYXhpbXVtKGZpZWxkKTsKKyAgICAgICAgICAgICAgICBpbnQgZ2FwID0gbWF4IC0gbWluICsgMTsKKworICAgICAgICAgICAgICAgIGludCB2YWx1ZSA9IGludGVybmFsR2V0KGZpZWxkKSArIGFtb3VudDsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9ICh2YWx1ZSAtIG1pbikgJSBnYXA7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlIDwgMCkgeworICAgICAgICAgICAgICAgICAgICB2YWx1ZSArPSBnYXA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhbHVlICs9IG1pbjsKKworICAgICAgICAgICAgICAgIHNldChmaWVsZCwgdmFsdWUpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICBjYXNlIEhPVVI6CisgICAgICAgIGNhc2UgSE9VUl9PRl9EQVk6CisgICAgICAgICAgICAvLyBSb2xsaW5nIHRoZSBob3VyIGlzIGRpZmZpY3VsdCBvbiB0aGUgT05TRVQgYW5kIENFQVNFIGRheXMgb2YKKyAgICAgICAgICAgIC8vIGRheWxpZ2h0IHNhdmluZ3MuICBGb3IgZXhhbXBsZSwgaWYgdGhlIGNoYW5nZSBvY2N1cnMgYXQKKyAgICAgICAgICAgIC8vIDIgQU0sIHdlIGhhdmUgdGhlIGZvbGxvd2luZyBwcm9ncmVzc2lvbjoKKyAgICAgICAgICAgIC8vIE9OU0VUOiAxMiBTdGQgLT4gMSBTdGQgLT4gMyBEc3QgLT4gNCBEc3QKKyAgICAgICAgICAgIC8vIENFQVNFOiAxMiBEc3QgLT4gMSBEc3QgLT4gMSBTdGQgLT4gMiBTdGQKKyAgICAgICAgICAgIC8vIFRvIGdldCBhcm91bmQgdGhpcyBwcm9ibGVtIHdlIGRvbid0IHVzZSBmaWVsZHM7IHdlIG1hbmlwdWxhdGUKKyAgICAgICAgICAgIC8vIHRoZSB0aW1lIGluIG1pbGxpcyBkaXJlY3RseS4KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBBc3N1bWUgbWluID09IDAgaW4gY2FsY3VsYXRpb25zIGJlbG93CisgICAgICAgICAgICAgICAgbG9uZyBzdGFydCA9IGdldFRpbWVJbk1pbGxpcygpOworICAgICAgICAgICAgICAgIGludCBvbGRIb3VyID0gaW50ZXJuYWxHZXQoZmllbGQpOworICAgICAgICAgICAgICAgIGludCBtYXggPSBnZXRNYXhpbXVtKGZpZWxkKTsKKyAgICAgICAgICAgICAgICBpbnQgbmV3SG91ciA9IChvbGRIb3VyICsgYW1vdW50KSAlIChtYXggKyAxKTsKKyAgICAgICAgICAgICAgICBpZiAobmV3SG91ciA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3SG91ciArPSBtYXggKyAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzZXRUaW1lSW5NaWxsaXMoc3RhcnQgKyBPTkVfSE9VUiAqIChuZXdIb3VyIC0gb2xkSG91cikpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICBjYXNlIE1PTlRIOgorICAgICAgICAgICAgLy8gUm9sbGluZyB0aGUgbW9udGggaW52b2x2ZXMgYm90aCBwaW5uaW5nIHRoZSBmaW5hbCB2YWx1ZQorICAgICAgICAgICAgLy8gYW5kIGFkanVzdGluZyB0aGUgREFZX09GX01PTlRIIGlmIG5lY2Vzc2FyeS4gIFdlIG9ubHkgYWRqdXN0IHRoZQorICAgICAgICAgICAgLy8gREFZX09GX01PTlRIIGlmLCBhZnRlciB1cGRhdGluZyB0aGUgTU9OVEggZmllbGQsIGl0IGlzIGlsbGVnYWwuCisgICAgICAgICAgICAvLyBFLmcuLCA8amFuMzE+LnJvbGwoTU9OVEgsIDEpIC0+IDxmZWIyOD4gb3IgPGZlYjI5Pi4KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQgbWF4ID0gZ2V0QWN0dWFsTWF4aW11bShNT05USCk7CisgICAgICAgICAgICAgICAgaW50IG1vbiA9IChpbnRlcm5hbEdldChNT05USCkgKyBhbW91bnQpICUgKG1heCsxKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAobW9uIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBtb24gKz0gKG1heCArIDEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzZXQoTU9OVEgsIG1vbik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gS2VlcCB0aGUgZGF5IG9mIG1vbnRoIGluIHJhbmdlLiAgV2UgZG9uJ3Qgd2FudCB0byBzcGlsbCBvdmVyCisgICAgICAgICAgICAgICAgLy8gaW50byB0aGUgbmV4dCBtb250aDsgZS5nLiwgd2UgZG9uJ3Qgd2FudCBqYW4zMSArIDEgbW8gLT4gZmViMzEgLT4KKyAgICAgICAgICAgICAgICAvLyBtYXIzLgorICAgICAgICAgICAgICAgIHBpbkZpZWxkKERBWV9PRl9NT05USCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgIGNhc2UgWUVBUjoKKyAgICAgICAgY2FzZSBZRUFSX1dPWToKKyAgICAgICAgY2FzZSBFWFRFTkRFRF9ZRUFSOgorICAgICAgICAgICAgLy8gUm9sbGluZyB0aGUgeWVhciBjYW4gaW52b2x2ZSBwaW5uaW5nIHRoZSBEQVlfT0ZfTU9OVEguCisgICAgICAgICAgICBzZXQoZmllbGQsIGludGVybmFsR2V0KGZpZWxkKSArIGFtb3VudCk7CisgICAgICAgICAgICBwaW5GaWVsZChNT05USCk7CisgICAgICAgICAgICBwaW5GaWVsZChEQVlfT0ZfTU9OVEgpOworICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNhc2UgV0VFS19PRl9NT05USDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRyaWNreSwgYmVjYXVzZSBkdXJpbmcgdGhlIHJvbGwgd2UgbWF5IGhhdmUgdG8gc2hpZnQKKyAgICAgICAgICAgICAgICAvLyB0byBhIGRpZmZlcmVudCBkYXkgb2YgdGhlIHdlZWsuICBGb3IgZXhhbXBsZToKKworICAgICAgICAgICAgICAgIC8vICAgIHMgIG0gIHQgIHcgIHIgIGYgIHMKKyAgICAgICAgICAgICAgICAvLyAgICAgICAgICAxICAyICAzICA0ICA1CisgICAgICAgICAgICAgICAgLy8gICAgNiAgNyAgOCAgOSAxMCAxMSAxMgorCisgICAgICAgICAgICAgICAgLy8gV2hlbiByb2xsaW5nIGZyb20gdGhlIDZ0aCBvciA3dGggYmFjayBvbmUgd2Vlaywgd2UgZ28gdG8gdGhlCisgICAgICAgICAgICAgICAgLy8gMXN0IChhc3N1bWluZyB0aGF0IHRoZSBmaXJzdCBwYXJ0aWFsIHdlZWsgY291bnRzKS4gIFRoZSBzYW1lCisgICAgICAgICAgICAgICAgLy8gdGhpbmcgaGFwcGVucyBhdCB0aGUgZW5kIG9mIHRoZSBtb250aC4KKworICAgICAgICAgICAgICAgIC8vIFRoZSBvdGhlciB0cmlja3kgdGhpbmcgaXMgdGhhdCB3ZSBoYXZlIHRvIGZpZ3VyZSBvdXQgd2hldGhlcgorICAgICAgICAgICAgICAgIC8vIHRoZSBmaXJzdCBwYXJ0aWFsIHdlZWsgYWN0dWFsbHkgY291bnRzIG9yIG5vdCwgYmFzZWQgb24gdGhlCisgICAgICAgICAgICAgICAgLy8gbWluaW1hbCBmaXJzdCBkYXlzIGluIHRoZSB3ZWVrLiAgQW5kIHdlIGhhdmUgdG8gdXNlIHRoZQorICAgICAgICAgICAgICAgIC8vIGNvcnJlY3QgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrIHRvIGRlbGluZWF0ZSB0aGUgd2VlaworICAgICAgICAgICAgICAgIC8vIGJvdW5kYXJpZXMuCisKKyAgICAgICAgICAgICAgICAvLyBIZXJlJ3Mgb3VyIGFsZ29yaXRobS4gIEZpcnN0LCB3ZSBmaW5kIHRoZSByZWFsIGJvdW5kYXJpZXMgb2YKKyAgICAgICAgICAgICAgICAvLyB0aGUgbW9udGguICBUaGVuIHdlIGRpc2NhcmQgdGhlIGZpcnN0IHBhcnRpYWwgd2VlayBpZiBpdAorICAgICAgICAgICAgICAgIC8vIGRvZXNuJ3QgY291bnQgaW4gdGhpcyBsb2NhbGUuICBUaGVuIHdlIGZpbGwgaW4gdGhlIGVuZHMgd2l0aAorICAgICAgICAgICAgICAgIC8vIHBoYW50b20gZGF5cywgc28gdGhhdCB0aGUgZmlyc3QgcGFydGlhbCB3ZWVrIGFuZCB0aGUgbGFzdAorICAgICAgICAgICAgICAgIC8vIHBhcnRpYWwgd2VlayBhcmUgZnVsbCB3ZWVrcy4gIFdlIHRoZW4gaGF2ZSBhIG5pY2Ugc3F1YXJlCisgICAgICAgICAgICAgICAgLy8gYmxvY2sgb2Ygd2Vla3MuICBXZSBkbyB0aGUgdXN1YWwgcm9sbGluZyB3aXRoaW4gdGhpcyBibG9jaywKKyAgICAgICAgICAgICAgICAvLyBhcyBpcyBkb25lIGVsc2V3aGVyZSBpbiB0aGlzIG1ldGhvZC4gIElmIHdlIHdpbmQgdXAgb24gb25lIG9mCisgICAgICAgICAgICAgICAgLy8gdGhlIHBoYW50b20gZGF5cyB0aGF0IHdlIGFkZGVkLCB3ZSByZWNvZ25pemUgdGhpcyBhbmQgcGluIHRvCisgICAgICAgICAgICAgICAgLy8gdGhlIGZpcnN0IG9yIHRoZSBsYXN0IGRheSBvZiB0aGUgbW9udGguICBFYXN5LCBlaD8KKworICAgICAgICAgICAgICAgIC8vIE5vcm1hbGl6ZSB0aGUgREFZX09GX1dFRUsgc28gdGhhdCAwIGlzIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsKKyAgICAgICAgICAgICAgICAvLyBpbiB0aGlzIGxvY2FsZS4gIFdlIGhhdmUgZG93IGluIDAuLjYuCisgICAgICAgICAgICAgICAgaW50IGRvdyA9IGludGVybmFsR2V0KERBWV9PRl9XRUVLKSAtIGdldEZpcnN0RGF5T2ZXZWVrKCk7CisgICAgICAgICAgICAgICAgaWYgKGRvdyA8IDApIGRvdyArPSA3OworCisgICAgICAgICAgICAgICAgLy8gRmluZCB0aGUgZGF5IG9mIHRoZSB3ZWVrIChub3JtYWxpemVkIGZvciBsb2NhbGUpIGZvciB0aGUgZmlyc3QKKyAgICAgICAgICAgICAgICAvLyBvZiB0aGUgbW9udGguCisgICAgICAgICAgICAgICAgaW50IGZkbSA9IChkb3cgLSBpbnRlcm5hbEdldChEQVlfT0ZfTU9OVEgpICsgMSkgJSA3OworICAgICAgICAgICAgICAgIGlmIChmZG0gPCAwKSBmZG0gKz0gNzsKKworICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgZmlyc3QgZGF5IG9mIHRoZSBmaXJzdCBmdWxsIHdlZWsgb2YgdGhlIG1vbnRoLAorICAgICAgICAgICAgICAgIC8vIGluY2x1ZGluZyBwaGFudG9tIGRheXMsIGlmIGFueS4gIEZpZ3VyZSBvdXQgaWYgdGhlIGZpcnN0IHdlZWsKKyAgICAgICAgICAgICAgICAvLyBjb3VudHMgb3Igbm90OyBpZiBpdCBjb3VudHMsIHRoZW4gZmlsbCBpbiBwaGFudG9tIGRheXMuICBJZgorICAgICAgICAgICAgICAgIC8vIG5vdCwgYWR2YW5jZSB0byB0aGUgZmlyc3QgcmVhbCBmdWxsIHdlZWsgKHNraXAgdGhlIHBhcnRpYWwgd2VlaykuCisgICAgICAgICAgICAgICAgaW50IHN0YXJ0OworICAgICAgICAgICAgICAgIGlmICgoNyAtIGZkbSkgPCBnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKCkpCisgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gOCAtIGZkbTsgLy8gU2tpcCB0aGUgZmlyc3QgcGFydGlhbCB3ZWVrCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzdGFydCA9IDEgLSBmZG07IC8vIFRoaXMgbWF5IGJlIHplcm8gb3IgbmVnYXRpdmUKKworICAgICAgICAgICAgICAgIC8vIEdldCB0aGUgZGF5IG9mIHRoZSB3ZWVrIChub3JtYWxpemVkIGZvciBsb2NhbGUpIGZvciB0aGUgbGFzdAorICAgICAgICAgICAgICAgIC8vIGRheSBvZiB0aGUgbW9udGguCisgICAgICAgICAgICAgICAgaW50IG1vbnRoTGVuID0gZ2V0QWN0dWFsTWF4aW11bShEQVlfT0ZfTU9OVEgpOworICAgICAgICAgICAgICAgIGludCBsZG0gPSAobW9udGhMZW4gLSBpbnRlcm5hbEdldChEQVlfT0ZfTU9OVEgpICsgZG93KSAlIDc7CisgICAgICAgICAgICAgICAgLy8gV2Uga25vdyBtb250aExlbiA+PSBEQVlfT0ZfTU9OVEggc28gd2Ugc2tpcCB0aGUgKz0gNyBzdGVwIGhlcmUuCisKKyAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIGxpbWl0IGRheSBmb3IgdGhlIGJsb2NrZWQtb2ZmIHJlY3Rhbmd1bGFyIG1vbnRoOyB0aGF0CisgICAgICAgICAgICAgICAgLy8gaXMsIHRoZSBkYXkgd2hpY2ggaXMgb25lIHBhc3QgdGhlIGxhc3QgZGF5IG9mIHRoZSBtb250aCwKKyAgICAgICAgICAgICAgICAvLyBhZnRlciB0aGUgbW9udGggaGFzIGFscmVhZHkgYmVlbiBmaWxsZWQgaW4gd2l0aCBwaGFudG9tIGRheXMKKyAgICAgICAgICAgICAgICAvLyB0byBmaWxsIG91dCB0aGUgbGFzdCB3ZWVrLiAgVGhpcyBkYXkgaGFzIGEgbm9ybWFsaXplZCBET1cgb2YgMC4KKyAgICAgICAgICAgICAgICBpbnQgbGltaXQgPSBtb250aExlbiArIDcgLSBsZG07CisKKyAgICAgICAgICAgICAgICAvLyBOb3cgcm9sbCBiZXR3ZWVuIHN0YXJ0IGFuZCAobGltaXQgLSAxKS4KKyAgICAgICAgICAgICAgICBpbnQgZ2FwID0gbGltaXQgLSBzdGFydDsKKyAgICAgICAgICAgICAgICBpbnQgZGF5X29mX21vbnRoID0gKGludGVybmFsR2V0KERBWV9PRl9NT05USCkgKyBhbW91bnQqNyAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCkgJSBnYXA7CisgICAgICAgICAgICAgICAgaWYgKGRheV9vZl9tb250aCA8IDApIGRheV9vZl9tb250aCArPSBnYXA7CisgICAgICAgICAgICAgICAgZGF5X29mX21vbnRoICs9IHN0YXJ0OworCisgICAgICAgICAgICAgICAgLy8gRmluYWxseSwgcGluIHRvIHRoZSByZWFsIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIG1vbnRoLgorICAgICAgICAgICAgICAgIGlmIChkYXlfb2ZfbW9udGggPCAxKSBkYXlfb2ZfbW9udGggPSAxOworICAgICAgICAgICAgICAgIGlmIChkYXlfb2ZfbW9udGggPiBtb250aExlbikgZGF5X29mX21vbnRoID0gbW9udGhMZW47CisKKyAgICAgICAgICAgICAgICAvLyBTZXQgdGhlIERBWV9PRl9NT05USC4gIFdlIHJlbHkgb24gdGhlIGZhY3QgdGhhdCB0aGlzIGZpZWxkCisgICAgICAgICAgICAgICAgLy8gdGFrZXMgcHJlY2VkZW5jZSBvdmVyIGV2ZXJ5dGhpbmcgZWxzZSAoc2luY2UgYWxsIG90aGVyIGZpZWxkcworICAgICAgICAgICAgICAgIC8vIGFyZSBhbHNvIHNldCBhdCB0aGlzIHBvaW50KS4gIElmIHRoaXMgZmFjdCBjaGFuZ2VzIChpZiB0aGUKKyAgICAgICAgICAgICAgICAvLyBkaXNhbWJpZ3VhdGlvbiBhbGdvcml0aG0gY2hhbmdlcykgdGhlbiB3ZSB3aWxsIGhhdmUgdG8gdW5zZXQKKyAgICAgICAgICAgICAgICAvLyB0aGUgYXBwcm9wcmlhdGUgZmllbGRzIGhlcmUgc28gdGhhdCBEQVlfT0ZfTU9OVEggaXMgYXR0ZW5kZWQKKyAgICAgICAgICAgICAgICAvLyB0by4KKyAgICAgICAgICAgICAgICBzZXQoREFZX09GX01PTlRILCBkYXlfb2ZfbW9udGgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSBXRUVLX09GX1lFQVI6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBmb2xsb3dzIHRoZSBvdXRsaW5lIG9mIFdFRUtfT0ZfTU9OVEgsIGV4Y2VwdCBpdCBhcHBsaWVzCisgICAgICAgICAgICAgICAgLy8gdG8gdGhlIHdob2xlIHllYXIuICBQbGVhc2Ugc2VlIHRoZSBjb21tZW50IGZvciBXRUVLX09GX01PTlRICisgICAgICAgICAgICAgICAgLy8gZm9yIGdlbmVyYWwgbm90ZXMuCisKKyAgICAgICAgICAgICAgICAvLyBOb3JtYWxpemUgdGhlIERBWV9PRl9XRUVLIHNvIHRoYXQgMCBpcyB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrCisgICAgICAgICAgICAgICAgLy8gaW4gdGhpcyBsb2NhbGUuICBXZSBoYXZlIGRvdyBpbiAwLi42LgorICAgICAgICAgICAgICAgIGludCBkb3cgPSBpbnRlcm5hbEdldChEQVlfT0ZfV0VFSykgLSBnZXRGaXJzdERheU9mV2VlaygpOworICAgICAgICAgICAgICAgIGlmIChkb3cgPCAwKSBkb3cgKz0gNzsKKworICAgICAgICAgICAgICAgIC8vIEZpbmQgdGhlIGRheSBvZiB0aGUgd2VlayAobm9ybWFsaXplZCBmb3IgbG9jYWxlKSBmb3IgdGhlIGZpcnN0CisgICAgICAgICAgICAgICAgLy8gb2YgdGhlIHllYXIuCisgICAgICAgICAgICAgICAgaW50IGZkeSA9IChkb3cgLSBpbnRlcm5hbEdldChEQVlfT0ZfWUVBUikgKyAxKSAlIDc7CisgICAgICAgICAgICAgICAgaWYgKGZkeSA8IDApIGZkeSArPSA3OworCisgICAgICAgICAgICAgICAgLy8gR2V0IHRoZSBmaXJzdCBkYXkgb2YgdGhlIGZpcnN0IGZ1bGwgd2VlayBvZiB0aGUgeWVhciwKKyAgICAgICAgICAgICAgICAvLyBpbmNsdWRpbmcgcGhhbnRvbSBkYXlzLCBpZiBhbnkuICBGaWd1cmUgb3V0IGlmIHRoZSBmaXJzdCB3ZWVrCisgICAgICAgICAgICAgICAgLy8gY291bnRzIG9yIG5vdDsgaWYgaXQgY291bnRzLCB0aGVuIGZpbGwgaW4gcGhhbnRvbSBkYXlzLiAgSWYKKyAgICAgICAgICAgICAgICAvLyBub3QsIGFkdmFuY2UgdG8gdGhlIGZpcnN0IHJlYWwgZnVsbCB3ZWVrIChza2lwIHRoZSBwYXJ0aWFsIHdlZWspLgorICAgICAgICAgICAgICAgIGludCBzdGFydDsKKyAgICAgICAgICAgICAgICBpZiAoKDcgLSBmZHkpIDwgZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpKQorICAgICAgICAgICAgICAgICAgICBzdGFydCA9IDggLSBmZHk7IC8vIFNraXAgdGhlIGZpcnN0IHBhcnRpYWwgd2VlaworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSAxIC0gZmR5OyAvLyBUaGlzIG1heSBiZSB6ZXJvIG9yIG5lZ2F0aXZlCisKKyAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIGRheSBvZiB0aGUgd2VlayAobm9ybWFsaXplZCBmb3IgbG9jYWxlKSBmb3IgdGhlIGxhc3QKKyAgICAgICAgICAgICAgICAvLyBkYXkgb2YgdGhlIHllYXIuCisgICAgICAgICAgICAgICAgaW50IHllYXJMZW4gPSBnZXRBY3R1YWxNYXhpbXVtKERBWV9PRl9ZRUFSKTsKKyAgICAgICAgICAgICAgICBpbnQgbGR5ID0gKHllYXJMZW4gLSBpbnRlcm5hbEdldChEQVlfT0ZfWUVBUikgKyBkb3cpICUgNzsKKyAgICAgICAgICAgICAgICAvLyBXZSBrbm93IHllYXJMZW4gPj0gREFZX09GX1lFQVIgc28gd2Ugc2tpcCB0aGUgKz0gNyBzdGVwIGhlcmUuCisKKyAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIGxpbWl0IGRheSBmb3IgdGhlIGJsb2NrZWQtb2ZmIHJlY3Rhbmd1bGFyIHllYXI7IHRoYXQKKyAgICAgICAgICAgICAgICAvLyBpcywgdGhlIGRheSB3aGljaCBpcyBvbmUgcGFzdCB0aGUgbGFzdCBkYXkgb2YgdGhlIHllYXIsCisgICAgICAgICAgICAgICAgLy8gYWZ0ZXIgdGhlIHllYXIgaGFzIGFscmVhZHkgYmVlbiBmaWxsZWQgaW4gd2l0aCBwaGFudG9tIGRheXMKKyAgICAgICAgICAgICAgICAvLyB0byBmaWxsIG91dCB0aGUgbGFzdCB3ZWVrLiAgVGhpcyBkYXkgaGFzIGEgbm9ybWFsaXplZCBET1cgb2YgMC4KKyAgICAgICAgICAgICAgICBpbnQgbGltaXQgPSB5ZWFyTGVuICsgNyAtIGxkeTsKKworICAgICAgICAgICAgICAgIC8vIE5vdyByb2xsIGJldHdlZW4gc3RhcnQgYW5kIChsaW1pdCAtIDEpLgorICAgICAgICAgICAgICAgIGludCBnYXAgPSBsaW1pdCAtIHN0YXJ0OworICAgICAgICAgICAgICAgIGludCBkYXlfb2ZfeWVhciA9IChpbnRlcm5hbEdldChEQVlfT0ZfWUVBUikgKyBhbW91bnQqNyAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCkgJSBnYXA7CisgICAgICAgICAgICAgICAgaWYgKGRheV9vZl95ZWFyIDwgMCkgZGF5X29mX3llYXIgKz0gZ2FwOworICAgICAgICAgICAgICAgIGRheV9vZl95ZWFyICs9IHN0YXJ0OworCisgICAgICAgICAgICAgICAgLy8gRmluYWxseSwgcGluIHRvIHRoZSByZWFsIHN0YXJ0IGFuZCBlbmQgb2YgdGhlIG1vbnRoLgorICAgICAgICAgICAgICAgIGlmIChkYXlfb2ZfeWVhciA8IDEpIGRheV9vZl95ZWFyID0gMTsKKyAgICAgICAgICAgICAgICBpZiAoZGF5X29mX3llYXIgPiB5ZWFyTGVuKSBkYXlfb2ZfeWVhciA9IHllYXJMZW47CisKKyAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0aGUgeWVhciBhbmQgZGF5IG9mIHllYXIgYXJlIGF0dGVuZGVkIHRvIGJ5CisgICAgICAgICAgICAgICAgLy8gY2xlYXJpbmcgb3RoZXIgZmllbGRzIHdoaWNoIHdvdWxkIG5vcm1hbGx5IHRha2UgcHJlY2VkZW5jZS4KKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZGlzYW1iaWd1YXRpb24gYWxnb3JpdGhtIGlzIGNoYW5nZWQsIHRoaXMgc2VjdGlvbiB3aWxsCisgICAgICAgICAgICAgICAgLy8gaGF2ZSB0byBiZSB1cGRhdGVkIGFzIHdlbGwuCisgICAgICAgICAgICAgICAgc2V0KERBWV9PRl9ZRUFSLCBkYXlfb2ZfeWVhcik7CisgICAgICAgICAgICAgICAgY2xlYXIoTU9OVEgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSBEQVlfT0ZfWUVBUjoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBSb2xsIHRoZSBkYXkgb2YgeWVhciB1c2luZyBtaWxsaXMuICBDb21wdXRlIHRoZSBtaWxsaXMgZm9yCisgICAgICAgICAgICAgICAgLy8gdGhlIHN0YXJ0IG9mIHRoZSB5ZWFyLCBhbmQgZ2V0IHRoZSBsZW5ndGggb2YgdGhlIHllYXIuCisgICAgICAgICAgICAgICAgbG9uZyBkZWx0YSA9IGFtb3VudCAqIE9ORV9EQVk7IC8vIFNjYWxlIHVwIGZyb20gZGF5cyB0byBtaWxsaXMKKyAgICAgICAgICAgICAgICBsb25nIG1pbjIgPSB0aW1lIC0gKGludGVybmFsR2V0KERBWV9PRl9ZRUFSKSAtIDEpICogT05FX0RBWTsKKyAgICAgICAgICAgICAgICBpbnQgeWVhckxlbmd0aCA9IGdldEFjdHVhbE1heGltdW0oREFZX09GX1lFQVIpOworICAgICAgICAgICAgICAgIHRpbWUgPSAodGltZSArIGRlbHRhIC0gbWluMikgJSAoeWVhckxlbmd0aCpPTkVfREFZKTsKKyAgICAgICAgICAgICAgICBpZiAodGltZSA8IDApIHRpbWUgKz0geWVhckxlbmd0aCpPTkVfREFZOworICAgICAgICAgICAgICAgIHNldFRpbWVJbk1pbGxpcyh0aW1lICsgbWluMik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICBjYXNlIERBWV9PRl9XRUVLOgorICAgICAgICBjYXNlIERPV19MT0NBTDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBSb2xsIHRoZSBkYXkgb2Ygd2VlayB1c2luZyBtaWxsaXMuICBDb21wdXRlIHRoZSBtaWxsaXMgZm9yCisgICAgICAgICAgICAgICAgLy8gdGhlIHN0YXJ0IG9mIHRoZSB3ZWVrLCB1c2luZyB0aGUgZmlyc3QgZGF5IG9mIHdlZWsgc2V0dGluZy4KKyAgICAgICAgICAgICAgICAvLyBSZXN0cmljdCB0aGUgbWlsbGlzIHRvIFtzdGFydCwgc3RhcnQrN2RheXMpLgorICAgICAgICAgICAgICAgIGxvbmcgZGVsdGEgPSBhbW91bnQgKiBPTkVfREFZOyAvLyBTY2FsZSB1cCBmcm9tIGRheXMgdG8gbWlsbGlzCisgICAgICAgICAgICAgICAgLy8gQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIGRheXMgYmVmb3JlIHRoZSBjdXJyZW50IGRheSBpbiB0aGlzCisgICAgICAgICAgICAgICAgLy8gd2Vlay4gIFRoaXMgd2lsbCBiZSBhIHZhbHVlIDAuLjYuCisgICAgICAgICAgICAgICAgaW50IGxlYWREYXlzID0gaW50ZXJuYWxHZXQoZmllbGQpOworICAgICAgICAgICAgICAgIGxlYWREYXlzIC09IChmaWVsZCA9PSBEQVlfT0ZfV0VFSykgPyBnZXRGaXJzdERheU9mV2VlaygpIDogMTsKKyAgICAgICAgICAgICAgICBpZiAobGVhZERheXMgPCAwKSBsZWFkRGF5cyArPSA3OworICAgICAgICAgICAgICAgIGxvbmcgbWluMiA9IHRpbWUgLSBsZWFkRGF5cyAqIE9ORV9EQVk7CisgICAgICAgICAgICAgICAgdGltZSA9ICh0aW1lICsgZGVsdGEgLSBtaW4yKSAlIE9ORV9XRUVLOworICAgICAgICAgICAgICAgIGlmICh0aW1lIDwgMCkgdGltZSArPSBPTkVfV0VFSzsKKyAgICAgICAgICAgICAgICBzZXRUaW1lSW5NaWxsaXModGltZSArIG1pbjIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgY2FzZSBEQVlfT0ZfV0VFS19JTl9NT05USDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBSb2xsIHRoZSBkYXkgb2Ygd2VlayBpbiB0aGUgbW9udGggdXNpbmcgbWlsbGlzLiAgRGV0ZXJtaW5lCisgICAgICAgICAgICAgICAgLy8gdGhlIGZpcnN0IGRheSBvZiB0aGUgd2VlayBpbiB0aGUgbW9udGgsIGFuZCB0aGVuIHRoZSBsYXN0LAorICAgICAgICAgICAgICAgIC8vIGFuZCB0aGVuIHJvbGwgd2l0aGluIHRoYXQgcmFuZ2UuCisgICAgICAgICAgICAgICAgbG9uZyBkZWx0YSA9IGFtb3VudCAqIE9ORV9XRUVLOyAvLyBTY2FsZSB1cCBmcm9tIHdlZWtzIHRvIG1pbGxpcworICAgICAgICAgICAgICAgIC8vIEZpbmQgdGhlIG51bWJlciBvZiBzYW1lIGRheXMgb2YgdGhlIHdlZWsgYmVmb3JlIHRoaXMgb25lCisgICAgICAgICAgICAgICAgLy8gaW4gdGhpcyBtb250aC4KKyAgICAgICAgICAgICAgICBpbnQgcHJlV2Vla3MgPSAoaW50ZXJuYWxHZXQoREFZX09GX01PTlRIKSAtIDEpIC8gNzsKKyAgICAgICAgICAgICAgICAvLyBGaW5kIHRoZSBudW1iZXIgb2Ygc2FtZSBkYXlzIG9mIHRoZSB3ZWVrIGFmdGVyIHRoaXMgb25lCisgICAgICAgICAgICAgICAgLy8gaW4gdGhpcyBtb250aC4KKyAgICAgICAgICAgICAgICBpbnQgcG9zdFdlZWtzID0gKGdldEFjdHVhbE1heGltdW0oREFZX09GX01PTlRIKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbEdldChEQVlfT0ZfTU9OVEgpKSAvIDc7CisgICAgICAgICAgICAgICAgLy8gRnJvbSB0aGVzZSBjb21wdXRlIHRoZSBtaW4gYW5kIGdhcCBtaWxsaXMgZm9yIHJvbGxpbmcuCisgICAgICAgICAgICAgICAgbG9uZyBtaW4yID0gdGltZSAtIHByZVdlZWtzICogT05FX1dFRUs7CisgICAgICAgICAgICAgICAgbG9uZyBnYXAyID0gT05FX1dFRUsgKiAocHJlV2Vla3MgKyBwb3N0V2Vla3MgKyAxKTsgLy8gTXVzdCBhZGQgMSEKKyAgICAgICAgICAgICAgICAvLyBSb2xsIHdpdGhpbiB0aGlzIHJhbmdlCisgICAgICAgICAgICAgICAgdGltZSA9ICh0aW1lICsgZGVsdGEgLSBtaW4yKSAlIGdhcDI7CisgICAgICAgICAgICAgICAgaWYgKHRpbWUgPCAwKSB0aW1lICs9IGdhcDI7CisgICAgICAgICAgICAgICAgc2V0VGltZUluTWlsbGlzKHRpbWUgKyBtaW4yKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIGNhc2UgSlVMSUFOX0RBWToKKyAgICAgICAgICAgIHNldChmaWVsZCwgaW50ZXJuYWxHZXQoZmllbGQpICsgYW1vdW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8vIE90aGVyIGZpZWxkcyBjYW5ub3QgYmUgcm9sbGVkIGJ5IHRoaXMgbWV0aG9kCisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJDYWxlbmRhci5yb2xsKCIgKyBmaWVsZE5hbWUoZmllbGQpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIikgbm90IHN1cHBvcnRlZCIpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEFkZCBhIHNpZ25lZCBhbW91bnQgdG8gYSBzcGVjaWZpZWQgZmllbGQsIHVzaW5nIHRoaXMgY2FsZW5kYXIncyBydWxlcy4KKyAgICAgKiBGb3IgZXhhbXBsZSwgdG8gYWRkIHRocmVlIGRheXMgdG8gdGhlIGN1cnJlbnQgZGF0ZSwgeW91IGNhbiBjYWxsCisgICAgICogPGNvZGU+YWRkKENhbGVuZGFyLkRBVEUsIDMpPC9jb2RlPi4gCisgICAgICogPHA+CisgICAgICogV2hlbiBhZGRpbmcgdG8gY2VydGFpbiBmaWVsZHMsIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgZmllbGRzIG1heSBjb25mbGljdCBhbmQKKyAgICAgKiBuZWVkIHRvIGJlIGNoYW5nZWQuICBGb3IgZXhhbXBsZSwgd2hlbiBhZGRpbmcgb25lIHRvIHRoZSB7QGxpbmsgI01PTlRIIE1PTlRIfSBmaWVsZAorICAgICAqIGZvciB0aGUgR3JlZ29yaWFuIGRhdGUgMS8zMS85NiwgdGhlIHtAbGluayAjREFZX09GX01PTlRIIERBWV9PRl9NT05USH0gZmllbGQKKyAgICAgKiBtdXN0IGJlIGFkanVzdGVkIHNvIHRoYXQgdGhlIHJlc3VsdCBpcyAyLzI5Lzk2IHJhdGhlciB0aGFuIHRoZSBpbnZhbGlkCisgICAgICogMi8zMS85Ni4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGUgPGNvZGU+Y29tLmlibS51dGlsLkNhbGVuZGFyPC9jb2RlPiBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIG1ldGhvZCBpcyBhYmxlIHRvIGFkZCB0bworICAgICAqIGFsbCBmaWVsZHMgZXhjZXB0IGZvciB7QGxpbmsgI0VSQSBFUkF9LCB7QGxpbmsgI0RTVF9PRkZTRVQgRFNUX09GRlNFVH0sCisgICAgICogYW5kIHtAbGluayAjWk9ORV9PRkZTRVQgWk9ORV9PRkZTRVR9LiAgU3ViY2xhc3NlcyBtYXksIG9mIGNvdXJzZSwgYWRkIHN1cHBvcnQgZm9yCisgICAgICogYWRkaXRpb25hbCBmaWVsZHMgaW4gdGhlaXIgb3ZlcnJpZGVzIG9mIDxjb2RlPmFkZDwvY29kZT4uCisgICAgICogPHA+CisgICAgICogPGI+Tm90ZTo8L2I+IFlvdSBzaG91bGQgYWx3YXlzIHVzZSA8dHQ+cm9sbDwvdHQ+IGFuZCA8dHQ+YWRkPC90dD4gcmF0aGVyCisgICAgICogdGhhbiBhdHRlbXB0aW5nIHRvIHBlcmZvcm0gYXJpdGhtZXRpYyBvcGVyYXRpb25zIGRpcmVjdGx5IG9uIHRoZSBmaWVsZHMKKyAgICAgKiBvZiBhIDx0dD5DYWxlbmRhcjwvdHQ+LiAgSXQgaXMgcXVpdGUgcG9zc2libGUgZm9yIDx0dD5DYWxlbmRhcjwvdHQ+IHN1YmNsYXNzZXMKKyAgICAgKiB0byBoYXZlIGZpZWxkcyB3aXRoIG5vbi1saW5lYXIgYmVoYXZpb3IsIGZvciBleGFtcGxlIG1pc3NpbmcgbW9udGhzCisgICAgICogb3IgZGF5cyBkdXJpbmcgbm9uLWxlYXAgeWVhcnMuICBUaGUgc3ViY2xhc3NlcycgPHR0PmFkZDwvdHQ+IGFuZCA8dHQ+cm9sbDwvdHQ+CisgICAgICogbWV0aG9kcyB3aWxsIHRha2UgdGhpcyBpbnRvIGFjY291bnQsIHdoaWxlIHNpbXBsZSBhcml0aG1ldGljIG1hbmlwdWxhdGlvbnMKKyAgICAgKiBtYXkgZ2l2ZSBpbnZhbGlkIHJlc3VsdHMuCisgICAgICogPHA+CisgICAgICogPGI+U3ViY2xhc3Npbmc6PC9iPjxicj4KKyAgICAgKiBUaGlzIGltcGxlbWVudGF0aW9uIG9mIDxjb2RlPmFkZDwvY29kZT4gYXNzdW1lcyB0aGF0IHRoZSBiZWhhdmlvciBvZiB0aGUKKyAgICAgKiBmaWVsZCBpcyBjb250aW51b3VzIGJldHdlZW4gaXRzIG1pbmltdW0gYW5kIG1heGltdW0sIHdoaWNoIGFyZSBmb3VuZCBieQorICAgICAqIGNhbGxpbmcge0BsaW5rICNnZXRBY3R1YWxNaW5pbXVtIGdldEFjdHVhbE1pbmltdW19IGFuZAorICAgICAqIHtAbGluayAjZ2V0QWN0dWFsTWF4aW11bSBnZXRBY3R1YWxNYXhpbXVtfS4KKyAgICAgKiBGb3Igc3VjaCBmaWVsZHMsIHNpbXBsZSBhcml0aG1ldGljIG9wZXJhdGlvbnMgYXJlIHN1ZmZpY2llbnQgdG8KKyAgICAgKiBwZXJmb3JtIHRoZSBhZGQuCisgICAgICogPHA+CisgICAgICogU3ViY2xhc3NlcyB0aGF0IGhhdmUgZmllbGRzIGZvciB3aGljaCB0aGlzIGFzc3VtcHRpb24gb2YgY29udGludWl0eSBicmVha3MKKyAgICAgKiBkb3duIG11c3Qgb3ZlcmlkZSA8Y29kZT5hZGQ8L2NvZGU+IHRvIGhhbmRsZSB0aG9zZSBmaWVsZHMgc3BlY2lhbGx5LgorICAgICAqIEZvciBleGFtcGxlLCBpbiB0aGUgSGVicmV3IGNhbGVuZGFyIHRoZSBtb250aCAiQWRhciBJIgorICAgICAqIG9ubHkgb2NjdXJzIGluIGxlYXAgeWVhcnM7IGluIG90aGVyIHllYXJzIHRoZSBjYWxlbmRhciBqdW1wcyBmcm9tCisgICAgICogU2hldmF0IChtb250aCAjNCkgdG8gQWRhciAobW9udGggIzYpLiAgVGhlIAorICAgICAqIHtAbGluayBIZWJyZXdDYWxlbmRhciNhZGQgSGVicmV3Q2FsZW5kYXIuYWRkfSBtZXRob2QgdGFrZXMgdGhpcyBpbnRvIGFjY291bnQsCisgICAgICogc28gdGhhdCBhZGRpbmcgb25lIG1vbnRoCisgICAgICogdG8gYSBkYXRlIGluIFNoZXZhdCBnaXZlcyB0aGUgcHJvcGVyIHJlc3VsdCAoQWRhcikgaW4gYSBub24tbGVhcCB5ZWFyLgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBmaWVsZCAgICAgdGhlIHRpbWUgZmllbGQuCisgICAgICogQHBhcmFtIGFtb3VudCAgICB0aGUgYW1vdW50IHRvIGFkZCB0byB0aGUgZmllbGQuCisgICAgICoKKyAgICAgKiBAZXhjZXB0aW9uICAgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBmaWVsZCBpcyBpbnZhbGlkIG9yIHJlZmVycworICAgICAqICAgICAgICAgICAgICB0byBhIGZpZWxkIHRoYXQgY2Fubm90IGJlIGhhbmRsZWQgYnkgdGhpcyBtZXRob2QuCisgICAgICogQHNlZSAjcm9sbChpbnQsIGludCkKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhZGQoaW50IGZpZWxkLCBpbnQgYW1vdW50KSB7CisKKyAgICAgICAgaWYgKGFtb3VudCA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm47ICAgLy8gRG8gbm90aGluZyEKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIGhhbmRsZSBtb3N0IGZpZWxkcyBpbiB0aGUgc2FtZSB3YXkuICBUaGUgYWxnb3JpdGhtIGlzIHRvIGFkZAorICAgICAgICAvLyBhIGNvbXB1dGVkIGFtb3VudCBvZiBtaWxsaXMgdG8gdGhlIGN1cnJlbnQgbWlsbGlzLiAgVGhlIG9ubHkKKyAgICAgICAgLy8gd3JpbmtsZSBpcyB3aXRoIERTVCAtLSBmb3Igc29tZSBmaWVsZHMsIGxpa2UgdGhlIERBWV9PRl9NT05USCwKKyAgICAgICAgLy8gd2UgZG9uJ3Qgd2FudCB0aGUgSE9VUiB0byBzaGlmdCBkdWUgdG8gY2hhbmdlcyBpbiBEU1QuICBJZiB0aGUKKyAgICAgICAgLy8gcmVzdWx0IG9mIHRoZSBhZGQgb3BlcmF0aW9uIGlzIHRvIG1vdmUgZnJvbSBEU1QgdG8gU3RhbmRhcmQsIG9yCisgICAgICAgIC8vIHZpY2UgdmVyc2EsIHdlIG5lZWQgdG8gYWRqdXN0IGJ5IGFuIGhvdXIgZm9yd2FyZCBvciBiYWNrLAorICAgICAgICAvLyByZXNwZWN0aXZlbHkuICBGb3Igc3VjaCBmaWVsZHMgd2Ugc2V0IGtlZXBIb3VySW52YXJpYW50IHRvIHRydWUuCisgICAgICAgIAorICAgICAgICAvLyBXZSBvbmx5IGFkanVzdCB0aGUgRFNUIGZvciBmaWVsZHMgbGFyZ2VyIHRoYW4gYW4gaG91ci4gIEZvcgorICAgICAgICAvLyBmaWVsZHMgc21hbGxlciB0aGFuIGFuIGhvdXIsIHdlIGNhbm5vdCBhZGp1c3QgZm9yIERTVCB3aXRob3V0CisgICAgICAgIC8vIGNhdXNpbmcgcHJvYmxlbXMuICBmb3IgaW5zdGFuY2UsIGlmIHlvdSBhZGQgb25lIGhvdXIgdG8gQXByaWwgNSwKKyAgICAgICAgLy8gMTk5OCwgMTowMCBBTSwgaW4gUFNULCB0aGUgdGltZSBiZWNvbWVzICIyOjAwIEFNIFBEVCIgKGFuCisgICAgICAgIC8vIGlsbGVnYWwgdmFsdWUpLCBidXQgdGhlbiB0aGUgYWRqdXN0bWVudCBzZWVzIHRoZSBjaGFuZ2UgYW5kCisgICAgICAgIC8vIGNvbXBlbnNhdGVzIGJ5IHN1YnRyYWN0aW5nIGFuIGhvdXIuICBBcyBhIHJlc3VsdCB0aGUgdGltZQorICAgICAgICAvLyBkb2Vzbid0IGFkdmFuY2UgYXQgYWxsLgorCisgICAgICAgIC8vIEZvciBzb21lIGZpZWxkcyBsYXJnZXIgdGhhbiBhIGRheSwgc3VjaCBhcyBhIE1PTlRILCB3ZSBwaW4gdGhlCisgICAgICAgIC8vIERBWV9PRl9NT05USC4gIFRoaXMgYWxsb3dzIDxNYXJjaCAzMT4uYWRkKE1PTlRILCAxKSB0byBiZQorICAgICAgICAvLyA8QXByaWwgMzA+LCByYXRoZXIgdGhhbiA8QXByaWwgMzE+ID0+IDxNYXkgMT4uCisKKyAgICAgICAgbG9uZyBkZWx0YSA9IGFtb3VudDsgLy8gZGVsdGEgaW4gbXMKKyAgICAgICAgYm9vbGVhbiBrZWVwSG91ckludmFyaWFudCA9IHRydWU7CisKKyAgICAgICAgc3dpdGNoIChmaWVsZCkgeworICAgICAgICBjYXNlIFlFQVI6CisgICAgICAgIGNhc2UgRVhURU5ERURfWUVBUjoKKyAgICAgICAgY2FzZSBZRUFSX1dPWToKKyAgICAgICAgY2FzZSBNT05USDoKKyAgICAgICAgICAgIHNldChmaWVsZCwgZ2V0KGZpZWxkKSArIGFtb3VudCk7CisgICAgICAgICAgICBwaW5GaWVsZChEQVlfT0ZfTU9OVEgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgV0VFS19PRl9ZRUFSOgorICAgICAgICBjYXNlIFdFRUtfT0ZfTU9OVEg6CisgICAgICAgIGNhc2UgREFZX09GX1dFRUtfSU5fTU9OVEg6CisgICAgICAgICAgICBkZWx0YSAqPSBPTkVfV0VFSzsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQU1fUE06CisgICAgICAgICAgICBkZWx0YSAqPSAxMiAqIE9ORV9IT1VSOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBEQVlfT0ZfTU9OVEg6CisgICAgICAgIGNhc2UgREFZX09GX1lFQVI6CisgICAgICAgIGNhc2UgREFZX09GX1dFRUs6CisgICAgICAgIGNhc2UgRE9XX0xPQ0FMOgorICAgICAgICBjYXNlIEpVTElBTl9EQVk6CisgICAgICAgICAgICBkZWx0YSAqPSBPTkVfREFZOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBIT1VSX09GX0RBWToKKyAgICAgICAgY2FzZSBIT1VSOgorICAgICAgICAgICAgZGVsdGEgKj0gT05FX0hPVVI7CisgICAgICAgICAgICBrZWVwSG91ckludmFyaWFudCA9IGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNSU5VVEU6CisgICAgICAgICAgICBkZWx0YSAqPSBPTkVfTUlOVVRFOworICAgICAgICAgICAga2VlcEhvdXJJbnZhcmlhbnQgPSBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgU0VDT05EOgorICAgICAgICAgICAgZGVsdGEgKj0gT05FX1NFQ09ORDsKKyAgICAgICAgICAgIGtlZXBIb3VySW52YXJpYW50ID0gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE1JTExJU0VDT05EOgorICAgICAgICBjYXNlIE1JTExJU0VDT05EU19JTl9EQVk6CisgICAgICAgICAgICBrZWVwSG91ckludmFyaWFudCA9IGZhbHNlOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkNhbGVuZGFyLmFkZCgiICsgZmllbGROYW1lKGZpZWxkKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEluIG9yZGVyIHRvIGtlZXAgdGhlIGhvdXIgaW52YXJpYW50IChmb3IgZmllbGRzIHdoZXJlIHRoaXMgaXMKKyAgICAgICAgLy8gYXBwcm9wcmlhdGUpLCByZWNvcmQgdGhlIERTVF9PRkZTRVQgYmVmb3JlIGFuZCBhZnRlciB0aGUgYWRkKCkKKyAgICAgICAgLy8gb3BlcmF0aW9uLiAgSWYgaXQgaGFzIGNoYW5nZWQsIHRoZW4gYWRqdXN0IHRoZSBtaWxsaXMgdG8KKyAgICAgICAgLy8gY29tcGVuc2F0ZS4KKyAgICAgICAgaW50IGRzdCA9IDA7CisgICAgICAgIGlmIChrZWVwSG91ckludmFyaWFudCkgeworICAgICAgICAgICAgZHN0ID0gZ2V0KERTVF9PRkZTRVQpOworICAgICAgICB9CisKKyAgICAgICAgc2V0VGltZUluTWlsbGlzKGdldFRpbWVJbk1pbGxpcygpICsgZGVsdGEpOworCisgICAgICAgIGlmIChrZWVwSG91ckludmFyaWFudCkgeworICAgICAgICAgICAgZHN0IC09IGdldChEU1RfT0ZGU0VUKTsKKyAgICAgICAgICAgIGlmIChkc3QgIT0gMCkgeworICAgICAgICAgICAgICAgIHNldFRpbWVJbk1pbGxpcyh0aW1lICsgZHN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhpcyBjYWxlbmRhciBpbiB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldERpc3BsYXlOYW1lKExvY2FsZSBsb2MpIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuZ2V0Q2xhc3MoKS5nZXROYW1lKCk7CisgICAgfQorICAgIAorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIEludGVyZmFjZSBmb3IgY3JlYXRpbmcgY3VzdG9uIERhdGVGb3JtYXRzIGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgQ2FsZW5kYXJzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSA8Y29kZT5EYXRlRm9ybWF0PC9jb2RlPiBhcHByb3ByaWF0ZSB0byB0aGlzIGNhbGVuZGFyLgorICAgICAqIFN1YmNsYXNzZXMgd2lzaGluZyB0byBzcGVjaWFsaXplIHRoaXMgYmVoYXZpb3Igc2hvdWxkIG92ZXJyaWRlCisgICAgICogPGNvZGU+aGFuZGxlR2V0RGF0ZUZvcm1hdCgpPC9jb2RlPgorICAgICAqIEBzZWUgI2hhbmRsZUdldERhdGVGb3JtYXQKKyAgICAgKi8KKyAgICBwdWJsaWMgRGF0ZUZvcm1hdCBnZXREYXRlVGltZUZvcm1hdChpbnQgZGF0ZVN0eWxlLCBpbnQgdGltZVN0eWxlLCBMb2NhbGUgbG9jKSB7CisgICAgICAgIHJldHVybiBmb3JtYXRIZWxwZXIodGhpcywgbG9jLCBkYXRlU3R5bGUsIHRpbWVTdHlsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIGEgPGNvZGU+RGF0ZUZvcm1hdDwvY29kZT4gYXBwcm9wcmlhdGUgdG8gdGhpcyBjYWxlbmRhci4KKyAgICAgKiBUaGlzIGlzIGEgZnJhbWV3b3JrIG1ldGhvZCBmb3Igc3ViY2xhc3NlcyB0byBvdmVycmlkZS4gIFRoaXMgbWV0aG9kCisgICAgICogaXMgcmVzcG9uc2libGUgZm9yIGNyZWF0aW5nIHRoZSBjYWxlbmRhci1zcGVjaWZpYyBEYXRlRm9ybWF0IGFuZAorICAgICAqIERhdGVGb3JtYXRTeW1ib2xzIG9iamVjdHMgYXMgbmVlZGVkLgorICAgICAqIEBwYXJhbSBwYXR0ZXJuIHRoZSBwYXR0ZXJuLCBzcGVjaWZpYyB0byB0aGUgPGNvZGU+RGF0ZUZvcm1hdDwvY29kZT4KKyAgICAgKiBzdWJjbGFzcworICAgICAqIEBwYXJhbSBsb2NhbGUgdGhlIGxvY2FsZSBmb3Igd2hpY2ggdGhlIHN5bWJvbHMgc2hvdWxkIGJlIGRyYXduCisgICAgICogQHJldHVybiBhIDxjb2RlPkRhdGVGb3JtYXQ8L2NvZGU+IGFwcHJvcHJpYXRlIHRvIHRoaXMgY2FsZW5kYXIKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgRGF0ZUZvcm1hdCBoYW5kbGVHZXREYXRlRm9ybWF0KFN0cmluZyBwYXR0ZXJuLCBMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIERhdGVGb3JtYXRTeW1ib2xzIHN5bWJvbHMgPSBuZXcgRGF0ZUZvcm1hdFN5bWJvbHModGhpcywgbG9jYWxlKTsKKyAgICAgICAgcmV0dXJuIG5ldyBTaW1wbGVEYXRlRm9ybWF0KHBhdHRlcm4sIHN5bWJvbHMpOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHJpdmF0ZSBEYXRlRm9ybWF0IGZvcm1hdEhlbHBlcihDYWxlbmRhciBjYWwsIExvY2FsZSBsb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkYXRlU3R5bGUsIGludCB0aW1lU3R5bGUpCisgICAgeworICAgICAgICAvLyBTZWUgaWYgdGhlcmUgYXJlIGFueSBjdXN0b20gcmVzb3VyY2VzIGZvciB0aGlzIGNhbGVuZGFyCisgICAgICAgIC8vIElmIG5vdCwganVzdCB1c2UgdGhlIGRlZmF1bHQgRGF0ZUZvcm1hdAorICAgICAgICBEYXRlRm9ybWF0IHJlc3VsdCA9IG51bGw7CisKKyAgICAgICAgUmVzb3VyY2VCdW5kbGUgYnVuZGxlID0gRGF0ZUZvcm1hdFN5bWJvbHMuZ2V0RGF0ZUZvcm1hdEJ1bmRsZShjYWwsIGxvYyk7CisKKyAgICAgICAgaWYgKGJ1bmRsZSAhPSBudWxsKSB7CisKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgU3RyaW5nW10gcGF0dGVybnMgPSBidW5kbGUuZ2V0U3RyaW5nQXJyYXkoIkRhdGVUaW1lUGF0dGVybnMiKTsKKworICAgICAgICAgICAgICAgIFN0cmluZyBwYXR0ZXJuID0gbnVsbDsKKyAgICAgICAgICAgICAgICBpZiAoKHRpbWVTdHlsZSA+PSAwKSAmJiAoZGF0ZVN0eWxlID49IDApKSB7CisgICAgICAgICAgICAgICAgICAgIE9iamVjdFtdIGRhdGVUaW1lQXJncyA9IHsgcGF0dGVybnNbdGltZVN0eWxlXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuc1tkYXRlU3R5bGUgKyA0XSB9OworICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuID0gTWVzc2FnZUZvcm1hdC5mb3JtYXQocGF0dGVybnNbOF0sIGRhdGVUaW1lQXJncyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHRpbWVTdHlsZSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuc1t0aW1lU3R5bGVdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXRlU3R5bGUgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuID0gcGF0dGVybnNbZGF0ZVN0eWxlICsgNF07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJObyBkYXRlIG9yIHRpbWUgc3R5bGUgc3BlY2lmaWVkIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNhbC5oYW5kbGVHZXREYXRlRm9ybWF0KHBhdHRlcm4sIGxvYyk7CisgICAgICAgICAgICB9IGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIC8vIE5vIGN1c3RvbSBwYXR0ZXJucworICAgICAgICAgICAgICAgIHJlc3VsdCA9IERhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZShkYXRlU3R5bGUsIHRpbWVTdHlsZSwgbG9jKTsKKyAgICAgICAgICAgICAgICBEYXRlRm9ybWF0U3ltYm9scyBzeW1ib2xzID0gbmV3IERhdGVGb3JtYXRTeW1ib2xzKGNhbCwgbG9jKTsKKyAgICAgICAgICAgICAgICAoKFNpbXBsZURhdGVGb3JtYXQpIHJlc3VsdCkuc2V0RGF0ZUZvcm1hdFN5bWJvbHMoc3ltYm9scyk7IC8vIGFsaXUKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IFNpbXBsZURhdGVGb3JtYXQuZ2V0RGF0ZVRpbWVJbnN0YW5jZShkYXRlU3R5bGUsIHRpbWVTdHlsZSwgbG9jKTsKKyAgICAgICAgfQorICAgICAgICByZXN1bHQuc2V0Q2FsZW5kYXIoY2FsKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBQcm90ZWN0ZWQgdXRpbGl0eSBtZXRob2RzIGZvciB1c2UgYnkgc3ViY2xhc3Nlcy4gIFRoZXNlIGFyZSB2ZXJ5IGhhbmR5CisgICAgLy8gZm9yIGltcGxlbWVudGluZyBhZGQsIHJvbGwsIGFuZCBjb21wdXRlRmllbGRzLgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIC8qKgorICAgICAqIEFkanVzdCB0aGUgc3BlY2lmaWVkIGZpZWxkIHNvIHRoYXQgaXQgaXMgd2l0aGluCisgICAgICogdGhlIGFsbG93YWJsZSByYW5nZSBmb3IgdGhlIGRhdGUgdG8gd2hpY2ggdGhpcyBjYWxlbmRhciBpcyBzZXQuCisgICAgICogRm9yIGV4YW1wbGUsIGluIGEgR3JlZ29yaWFuIGNhbGVuZGFyIHBpbm5pbmcgdGhlIHtAbGluayAjREFZX09GX01PTlRIIERBWV9PRl9NT05USH0KKyAgICAgKiBmaWVsZCBmb3IgYSBjYWxlbmRhciBzZXQgdG8gQXByaWwgMzEgd291bGQgY2F1c2UgaXQgdG8gYmUgc2V0CisgICAgICogdG8gQXByaWwgMzAuCisgICAgICogPHA+CisgICAgICogPGI+U3ViY2xhc3Npbmc6PC9iPgorICAgICAqIDxicj4KKyAgICAgKiBUaGlzIHV0aWxpdHkgbWV0aG9kIGlzIGludGVuZGVkIGZvciB1c2UgYnkgc3ViY2xhc3NlcyB0aGF0IG5lZWQgdG8gaW1wbGVtZW50CisgICAgICogdGhlaXIgb3duIG92ZXJyaWRlcyBvZiB7QGxpbmsgI3JvbGwgcm9sbH0gYW5kIHtAbGluayAjYWRkIGFkZH0uCisgICAgICogPHA+CisgICAgICogPGI+Tm90ZTo8L2I+CisgICAgICogPGNvZGU+cGluRmllbGQ8L2NvZGU+IGlzIGltcGxlbWVudGVkIGluIHRlcm1zIG9mCisgICAgICoge0BsaW5rICNnZXRBY3R1YWxNaW5pbXVtIGdldEFjdHVhbE1pbmltdW19CisgICAgICogYW5kIHtAbGluayAjZ2V0QWN0dWFsTWF4aW11bSBnZXRBY3R1YWxNYXhpbXVtfS4gIElmIGVpdGhlciBvZiB0aG9zZSBtZXRob2RzIHVzZXMKKyAgICAgKiBhIHNsb3csIGl0ZXJhdGl2ZSBhbGdvcml0aG0gZm9yIGEgcGFydGljdWxhciBmaWVsZCwgaXQgd291bGQgYmUKKyAgICAgKiB1bndpc2UgdG8gYXR0ZW1wdCB0byBjYWxsIDxjb2RlPnBpbkZpZWxkPC9jb2RlPiBmb3IgdGhhdCBmaWVsZC4gIElmIHlvdQorICAgICAqIHJlYWxseSBkbyBuZWVkIHRvIGRvIHNvLCB5b3Ugc2hvdWxkIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIGRvCisgICAgICogc29tZXRoaW5nIG1vcmUgZWZmaWNpZW50IGZvciB0aGF0IGZpZWxkLgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBmaWVsZCBUaGUgY2FsZW5kYXIgZmllbGQgd2hvc2UgdmFsdWUgc2hvdWxkIGJlIHBpbm5lZC4KKyAgICAgKgorICAgICAqIEBzZWUgI2dldEFjdHVhbE1pbmltdW0KKyAgICAgKiBAc2VlICNnZXRBY3R1YWxNYXhpbXVtCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgcGluRmllbGQoaW50IGZpZWxkKSB7CisgICAgICAgIGludCBtYXggPSBnZXRBY3R1YWxNYXhpbXVtKGZpZWxkKTsKKyAgICAgICAgaW50IG1pbiA9IGdldEFjdHVhbE1pbmltdW0oZmllbGQpOworICAgICAgICAKKyAgICAgICAgaWYgKGZpZWxkc1tmaWVsZF0gPiBtYXgpIHsKKyAgICAgICAgICAgIHNldChmaWVsZCwgbWF4KTsKKyAgICAgICAgfSBlbHNlIGlmIChmaWVsZHNbZmllbGRdIDwgbWluKSB7CisgICAgICAgICAgICBzZXQoZmllbGQsIG1pbik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHdlZWsgbnVtYmVyIG9mIGEgZGF5LCB3aXRoaW4gYSBwZXJpb2QuIFRoaXMgbWF5IGJlIHRoZSB3ZWVrIG51bWJlciBpbgorICAgICAqIGEgeWVhciBvciB0aGUgd2VlayBudW1iZXIgaW4gYSBtb250aC4gVXN1YWxseSB0aGlzIHdpbGwgYmUgYSB2YWx1ZSA+PSAxLCBidXQgaWYKKyAgICAgKiBzb21lIGluaXRpYWwgZGF5cyBvZiB0aGUgcGVyaW9kIGFyZSBleGNsdWRlZCBmcm9tIHdlZWsgMSwgYmVjYXVzZQorICAgICAqIHtAbGluayAjZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlayBnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrfSBpcyA+IDEsIHRoZW4gCisgICAgICogdGhlIHdlZWsgbnVtYmVyIHdpbGwgYmUgemVybyBmb3IgdGhvc2UKKyAgICAgKiBpbml0aWFsIGRheXMuIFRoaXMgbWV0aG9kIHJlcXVpcmVzIHRoZSBkYXkgbnVtYmVyIGFuZCBkYXkgb2Ygd2VlayBmb3Igc29tZQorICAgICAqIGtub3duIGRhdGUgaW4gdGhlIHBlcmlvZCBpbiBvcmRlciB0byBkZXRlcm1pbmUgdGhlIGRheSBvZiB3ZWVrIAorICAgICAqIG9uIHRoZSBkZXNpcmVkIGRheS4KKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5TdWJjbGFzc2luZzo8L2I+CisgICAgICogPGJyPgorICAgICAqIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIGZvciB1c2UgYnkgc3ViY2xhc3NlcyBpbiBpbXBsZW1lbnRpbmcgdGhlaXIKKyAgICAgKiB7QGxpbmsgI2NvbXB1dGVUaW1lIGNvbXB1dGVUaW1lfSBhbmQvb3Ige0BsaW5rICNjb21wdXRlRmllbGRzIGNvbXB1dGVGaWVsZHN9IG1ldGhvZHMuCisgICAgICogSXQgaXMgb2Z0ZW4gdXNlZnVsIGluIHtAbGluayAjZ2V0QWN0dWFsTWluaW11bSBnZXRBY3R1YWxNaW5pbXVtfSBhbmQKKyAgICAgKiB7QGxpbmsgI2dldEFjdHVhbE1heGltdW0gZ2V0QWN0dWFsTWF4aW11bX0gYXMgd2VsbC4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGlzIHZhcmlhbnQgaXMgaGFuZHkgZm9yIGNvbXB1dGluZyB0aGUgd2VlayBudW1iZXIgb2Ygc29tZSBvdGhlcgorICAgICAqIGRheSBvZiBhIHBlcmlvZCAob2Z0ZW4gdGhlIGZpcnN0IG9yIGxhc3QgZGF5IG9mIHRoZSBwZXJpb2QpIHdoZW4gaXRzIGRheQorICAgICAqIG9mIHRoZSB3ZWVrIGlzIG5vdCBrbm93biBidXQgdGhlIGRheSBudW1iZXIgYW5kIGRheSBvZiB3ZWVrIGZvciBzb21lIG90aGVyCisgICAgICogZGF5IGluIHRoZSBwZXJpb2QgKGUuZy4gdGhlIGN1cnJlbnQgZGF0ZSkgPGVtPmlzPC9lbT4ga25vd24uCisgICAgICogPHA+CisgICAgICogQHBhcmFtIGRlc2lyZWREYXkgICAgVGhlIHtAbGluayAjREFZX09GX1lFQVIgREFZX09GX1lFQVJ9IG9yCisgICAgICogICAgICAgICAgICAgIHtAbGluayAjREFZX09GX01PTlRIIERBWV9PRl9NT05USH0gd2hvc2Ugd2VlayBudW1iZXIgaXMgZGVzaXJlZC4KKyAgICAgKiAgICAgICAgICAgICAgU2hvdWxkIGJlIDEgZm9yIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHBlcmlvZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBrbm93bkRheU9mUGVyaW9kICAgVGhlIHtAbGluayAjREFZX09GX1lFQVIgREFZX09GX1lFQVJ9CisgICAgICogICAgICAgICAgICAgIG9yIHtAbGluayAjREFZX09GX01PTlRIIERBWV9PRl9NT05USH0gZm9yIGEgZGF5IGluIHRoZSBwZXJpb2Qgd2hvc2UKKyAgICAgKiAgICAgICAgICAgICAge0BsaW5rICNEQVlfT0ZfV0VFSyBEQVlfT0ZfV0VFS30gaXMgc3BlY2lmaWVkIGJ5IHRoZQorICAgICAqICAgICAgICAgICAgICA8Y29kZT5rbm93bkRheU9mV2VlazwvY29kZT4gcGFyYW1ldGVyLgorICAgICAqICAgICAgICAgICAgICBTaG91bGQgYmUgMSBmb3IgZmlyc3QgZGF5IG9mIHBlcmlvZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBrbm93bkRheU9mV2VlayAgVGhlIHtAbGluayAjREFZX09GX1dFRUsgREFZX09GX1dFRUt9IGZvciB0aGUgZGF5CisgICAgICogICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIDxjb2RlPmtub3duRGF5T2ZQZXJpb2Q8L2NvZGU+IHBhcmFtZXRlci4KKyAgICAgKiAgICAgICAgICAgICAgMS1iYXNlZCB3aXRoIDE9U3VuZGF5LgorICAgICAqCisgICAgICogQHJldHVybiAgICAgIFRoZSB3ZWVrIG51bWJlciAob25lLWJhc2VkKSwgb3IgemVybyBpZiB0aGUgZGF5IGZhbGxzIGJlZm9yZQorICAgICAqICAgICAgICAgICAgICB0aGUgZmlyc3Qgd2VlayBiZWNhdXNlCisgICAgICogICAgICAgICAgICAgIHtAbGluayAjZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlayBnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrfQorICAgICAqICAgICAgICAgICAgICBpcyBtb3JlIHRoYW4gb25lLgorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgd2Vla051bWJlcihpbnQgZGVzaXJlZERheSwgaW50IGRheU9mUGVyaW9kLCBpbnQgZGF5T2ZXZWVrKQorICAgIHsKKyAgICAgICAgLy8gRGV0ZXJtaW5lIHRoZSBkYXkgb2YgdGhlIHdlZWsgb2YgdGhlIGZpcnN0IGRheSBvZiB0aGUgcGVyaW9kCisgICAgICAgIC8vIGluIHF1ZXN0aW9uIChlaXRoZXIgYSB5ZWFyIG9yIGEgbW9udGgpLiAgWmVybyByZXByZXNlbnRzIHRoZQorICAgICAgICAvLyBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgb24gdGhpcyBjYWxlbmRhci4KKyAgICAgICAgaW50IHBlcmlvZFN0YXJ0RGF5T2ZXZWVrID0gKGRheU9mV2VlayAtIGdldEZpcnN0RGF5T2ZXZWVrKCkgLSBkYXlPZlBlcmlvZCArIDEpICUgNzsKKyAgICAgICAgaWYgKHBlcmlvZFN0YXJ0RGF5T2ZXZWVrIDwgMCkgcGVyaW9kU3RhcnREYXlPZldlZWsgKz0gNzsKKworICAgICAgICAvLyBDb21wdXRlIHRoZSB3ZWVrIG51bWJlci4gIEluaXRpYWxseSwgaWdub3JlIHRoZSBmaXJzdCB3ZWVrLCB3aGljaAorICAgICAgICAvLyBtYXkgYmUgZnJhY3Rpb25hbCAob3IgbWF5IG5vdCBiZSkuICBXZSBhZGQgcGVyaW9kU3RhcnREYXlPZldlZWsgaW4KKyAgICAgICAgLy8gb3JkZXIgdG8gZmlsbCBvdXQgdGhlIGZpcnN0IHdlZWssIGlmIGl0IGlzIGZyYWN0aW9uYWwuCisgICAgICAgIGludCB3ZWVrTm8gPSAoZGVzaXJlZERheSArIHBlcmlvZFN0YXJ0RGF5T2ZXZWVrIC0gMSkvNzsKKworICAgICAgICAvLyBJZiB0aGUgZmlyc3Qgd2VlayBpcyBsb25nIGVub3VnaCwgdGhlbiBjb3VudCBpdC4gIElmCisgICAgICAgIC8vIHRoZSBtaW5pbWFsIGRheXMgaW4gdGhlIGZpcnN0IHdlZWsgaXMgb25lLCBvciBpZiB0aGUgcGVyaW9kIHN0YXJ0CisgICAgICAgIC8vIGlzIHplcm8sIHdlIGFsd2F5cyBpbmNyZW1lbnQgd2Vla05vLgorICAgICAgICBpZiAoKDcgLSBwZXJpb2RTdGFydERheU9mV2VlaykgPj0gZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpKSArK3dlZWtObzsKKworICAgICAgICByZXR1cm4gd2Vla05vOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgd2VlayBudW1iZXIgb2YgYSBkYXksIHdpdGhpbiBhIHBlcmlvZC4gVGhpcyBtYXkgYmUgdGhlIHdlZWsgbnVtYmVyIGluCisgICAgICogYSB5ZWFyLCBvciB0aGUgd2VlayBudW1iZXIgaW4gYSBtb250aC4gVXN1YWxseSB0aGlzIHdpbGwgYmUgYSB2YWx1ZSA+PSAxLCBidXQgaWYKKyAgICAgKiBzb21lIGluaXRpYWwgZGF5cyBvZiB0aGUgcGVyaW9kIGFyZSBleGNsdWRlZCBmcm9tIHdlZWsgMSwgYmVjYXVzZQorICAgICAqIHtAbGluayAjZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlayBnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrfSBpcyA+IDEsCisgICAgICogdGhlbiB0aGUgd2VlayBudW1iZXIgd2lsbCBiZSB6ZXJvIGZvciB0aG9zZQorICAgICAqIGluaXRpYWwgZGF5cy4gVGhpcyBtZXRob2QgcmVxdWlyZXMgdGhlIGRheSBvZiB3ZWVrIGZvciB0aGUgZ2l2ZW4gZGF0ZSBpbiBvcmRlciB0byAKKyAgICAgKiBkZXRlcm1pbmUgdGhlIHJlc3VsdC4KKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5TdWJjbGFzc2luZzo8L2I+CisgICAgICogPGJyPgorICAgICAqIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIGZvciB1c2UgYnkgc3ViY2xhc3NlcyBpbiBpbXBsZW1lbnRpbmcgdGhlaXIKKyAgICAgKiB7QGxpbmsgI2NvbXB1dGVUaW1lIGNvbXB1dGVUaW1lfSBhbmQvb3Ige0BsaW5rICNjb21wdXRlRmllbGRzIGNvbXB1dGVGaWVsZHN9IG1ldGhvZHMuCisgICAgICogSXQgaXMgb2Z0ZW4gdXNlZnVsIGluIHtAbGluayAjZ2V0QWN0dWFsTWluaW11bSBnZXRBY3R1YWxNaW5pbXVtfSBhbmQKKyAgICAgKiB7QGxpbmsgI2dldEFjdHVhbE1heGltdW0gZ2V0QWN0dWFsTWF4aW11bX0gYXMgd2VsbC4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gZGF5T2ZQZXJpb2QgICBUaGUge0BsaW5rICNEQVlfT0ZfWUVBUiBEQVlfT0ZfWUVBUn0gb3IKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICB7QGxpbmsgI0RBWV9PRl9NT05USCBEQVlfT0ZfTU9OVEh9IHdob3NlIHdlZWsgbnVtYmVyIGlzIGRlc2lyZWQuCisgICAgICogICAgICAgICAgICAgICAgICAgICAgU2hvdWxkIGJlIDEgZm9yIHRoZSBmaXJzdCBkYXkgb2YgdGhlIHBlcmlvZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXlvZldlZWsgICAgIFRoZSB7QGxpbmsgI0RBWV9PRl9XRUVLIERBWV9PRl9XRUVLfSBmb3IgdGhlIGRheQorICAgICAqICAgICAgICAgICAgICAgICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIDxjb2RlPmRheU9mUGVyaW9kPC9jb2RlPiBwYXJhbWV0ZXIuCisgICAgICogICAgICAgICAgICAgICAgICAgICAgMS1iYXNlZCB3aXRoIDE9U3VuZGF5LgorICAgICAqCisgICAgICogQHJldHVybiAgICAgIFRoZSB3ZWVrIG51bWJlciAob25lLWJhc2VkKSwgb3IgemVybyBpZiB0aGUgZGF5IGZhbGxzIGJlZm9yZQorICAgICAqICAgICAgICAgICAgICB0aGUgZmlyc3Qgd2VlayBiZWNhdXNlCisgICAgICogICAgICAgICAgICAgIHtAbGluayAjZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlayBnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrfQorICAgICAqICAgICAgICAgICAgICBpcyBtb3JlIHRoYW4gb25lLgorICAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCBpbnQgd2Vla051bWJlcihpbnQgZGF5T2ZQZXJpb2QsIGludCBkYXlPZldlZWspCisgICAgeworICAgICAgICByZXR1cm4gd2Vla051bWJlcihkYXlPZlBlcmlvZCwgZGF5T2ZQZXJpb2QsIGRheU9mV2Vlayk7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQ29uc3RhbnRzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogW05FV10KKyAgICAgKiBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgZ2l2ZW4gdGltZSBhbmQgdGhlIHRpbWUgdGhpcworICAgICAqIGNhbGVuZGFyIG9iamVjdCBpcyBzZXQgdG8uICBJZiB0aGlzIGNhbGVuZGFyIGlzIHNldAorICAgICAqIDxlbT5iZWZvcmU8L2VtPiB0aGUgZ2l2ZW4gdGltZSwgdGhlIHJldHVybmVkIHZhbHVlIHdpbGwgYmUKKyAgICAgKiBwb3NpdGl2ZS4gIElmIHRoaXMgY2FsZW5kYXIgaXMgc2V0IDxlbT5hZnRlcjwvZW0+IHRoZSBnaXZlbgorICAgICAqIHRpbWUsIHRoZSByZXR1cm5lZCB2YWx1ZSB3aWxsIGJlIG5lZ2F0aXZlLiAgVGhlCisgICAgICogPGNvZGU+ZmllbGQ8L2NvZGU+IHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIHVuaXRzIG9mIHRoZSByZXR1cm4KKyAgICAgKiB2YWx1ZS4gIEZvciBleGFtcGxlLCBpZiA8Y29kZT5maWVsZERpZmZlcmVuY2Uod2hlbiwKKyAgICAgKiBDYWxlbmRhci5NT05USCk8L2NvZGU+IHJldHVybnMgMywgdGhlbiB0aGlzIGNhbGVuZGFyIGlzIHNldCB0bworICAgICAqIDMgbW9udGhzIGJlZm9yZSA8Y29kZT53aGVuPC9jb2RlPiwgYW5kIHBvc3NpYmx5IHNvbWUgYWRkaXRpb24KKyAgICAgKiB0aW1lIGxlc3MgdGhhbiBvbmUgbW9udGguCisgICAgICoKKyAgICAgKiA8cD5BcyBhIHNpZGUgZWZmZWN0IG9mIHRoaXMgY2FsbCwgdGhpcyBjYWxlbmRhciBpcyBhZHZhbmNlZAorICAgICAqIHRvd2FyZCA8Y29kZT53aGVuPC9jb2RlPiBieSB0aGUgZ2l2ZW4gYW1vdW50LiAgVGhhdCBpcywgY2FsbGluZworICAgICAqIHRoaXMgbWV0aG9kIGhhcyB0aGUgc2lkZSBlZmZlY3Qgb2YgY2FsbGluZyA8Y29kZT5hZGQoZmllbGQsCisgICAgICogbik8L2NvZGU+LCB3aGVyZSA8Y29kZT5uPC9jb2RlPiBpcyB0aGUgcmV0dXJuIHZhbHVlLgorICAgICAqCisgICAgICogPHA+VXNhZ2U6IFRvIHVzZSB0aGlzIG1ldGhvZCwgY2FsbCBpdCBmaXJzdCB3aXRoIHRoZSBsYXJnZXN0CisgICAgICogZmllbGQgb2YgaW50ZXJlc3QsIHRoZW4gd2l0aCBwcm9ncmVzc2l2ZWx5IHNtYWxsZXIgZmllbGRzLiAgRm9yCisgICAgICogZXhhbXBsZToKKyAgICAgKgorICAgICAqIDxwcmU+CisgICAgICogaW50IHkgPSBjYWwuZmllbGREaWZmZXJlbmNlKHdoZW4sIENhbGVuZGFyLllFQVIpOworICAgICAqIGludCBtID0gY2FsLmZpZWxkRGlmZmVyZW5jZSh3aGVuLCBDYWxlbmRhci5NT05USCk7CisgICAgICogaW50IGQgPSBjYWwuZmllbGREaWZmZXJlbmNlKHdoZW4sIENhbGVuZGFyLkRBVEUpOzwvcHJlPgorICAgICAqCisgICAgICogY29tcHV0ZXMgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiA8Y29kZT5jYWw8L2NvZGU+IGFuZAorICAgICAqIDxjb2RlPndoZW48L2NvZGU+IGluIHllYXJzLCBtb250aHMsIGFuZCBkYXlzLgorICAgICAqCisgICAgICogPHA+Tm90ZTogPGNvZGU+ZmllbGREaWZmZXJlbmNlKCk8L2NvZGU+IGlzCisgICAgICogPGVtPmFzeW1tZXRyaWNhbDwvZW0+LiAgVGhhdCBpcywgaW4gdGhlIGZvbGxvd2luZyBjb2RlOgorICAgICAqCisgICAgICogPHByZT4KKyAgICAgKiBjYWwuc2V0VGltZShkYXRlMSk7CisgICAgICogaW50IG0xID0gY2FsLmZpZWxkRGlmZmVyZW5jZShkYXRlMiwgQ2FsZW5kYXIuTU9OVEgpOworICAgICAqIGludCBkMSA9IGNhbC5maWVsZERpZmZlcmVuY2UoZGF0ZTIsIENhbGVuZGFyLkRBVEUpOworICAgICAqIGNhbC5zZXRUaW1lKGRhdGUyKTsKKyAgICAgKiBpbnQgbTIgPSBjYWwuZmllbGREaWZmZXJlbmNlKGRhdGUxLCBDYWxlbmRhci5NT05USCk7CisgICAgICogaW50IGQyID0gY2FsLmZpZWxkRGlmZmVyZW5jZShkYXRlMSwgQ2FsZW5kYXIuREFURSk7PC9wcmU+CisgICAgICoKKyAgICAgKiBvbmUgbWlnaHQgZXhwZWN0IHRoYXQgPGNvZGU+bTEgPT0gLW0yICYmIGQxID09IC1kMjwvY29kZT4uCisgICAgICogSG93ZXZlciwgdGhpcyBpcyBub3QgZ2VuZXJhbGx5IHRoZSBjYXNlLCBiZWNhdXNlIG9mCisgICAgICogaXJyZWd1bGFyaXRpZXMgaW4gdGhlIHVuZGVybHlpbmcgY2FsZW5kYXIgc3lzdGVtIChlLmcuLCB0aGUKKyAgICAgKiBHcmVnb3JpYW4gY2FsZW5kYXIgaGFzIGEgdmFyeWluZyBudW1iZXIgb2YgZGF5cyBwZXIgbW9udGgpLgorICAgICAqCisgICAgICogQHBhcmFtIHdoZW4gdGhlIGRhdGUgdG8gY29tcGFyZSB0aGlzIGNhbGVuZGFyJ3MgdGltZSB0bworICAgICAqIEBwYXJhbSBmaWVsZCB0aGUgZmllbGQgaW4gd2hpY2ggdG8gY29tcHV0ZSB0aGUgcmVzdWx0CisgICAgICogQHJldHVybiB0aGUgZGlmZmVyZW5jZSwgZWl0aGVyIHBvc2l0aXZlIG9yIG5lZ2F0aXZlLCBiZXR3ZWVuCisgICAgICogdGhpcyBjYWxlbmRhcidzIHRpbWUgYW5kIDxjb2RlPndoZW48L2NvZGU+LCBpbiB0ZXJtcyBvZgorICAgICAqIDxjb2RlPmZpZWxkPC9jb2RlPi4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGZpZWxkRGlmZmVyZW5jZShEYXRlIHdoZW4sIGludCBmaWVsZCkgeworICAgICAgICBpbnQgcmVzdWx0ID0gMDsKKyAgICAgICAgbG9uZyB0YXJnZXRNcyA9IHdoZW4uZ2V0VGltZSgpOworICAgICAgICBsb25nIG1zID0gZ2V0VGltZUluTWlsbGlzKCk7CisgICAgICAgIGlmIChtcyA8IHRhcmdldE1zKSB7CisgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgYWRkKGZpZWxkLCAxKTsKKyAgICAgICAgICAgICAgICBsb25nIG5ld01zID0gZ2V0VGltZUluTWlsbGlzKCk7CisgICAgICAgICAgICAgICAgaWYgKG5ld01zID4gdGFyZ2V0TXMpIHsKKyAgICAgICAgICAgICAgICAgICAgc2V0VGltZUluTWlsbGlzKG1zKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1zID0gbmV3TXM7CisgICAgICAgICAgICAgICAgKytyZXN1bHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAobXMgPiB0YXJnZXRNcykgeworICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgIGFkZChmaWVsZCwgLTEpOworICAgICAgICAgICAgICAgIGxvbmcgbmV3TXMgPSBnZXRUaW1lSW5NaWxsaXMoKTsKKyAgICAgICAgICAgICAgICBpZiAobmV3TXMgPCB0YXJnZXRNcykgeworICAgICAgICAgICAgICAgICAgICBzZXRUaW1lSW5NaWxsaXMobXMpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbXMgPSBuZXdNczsKKyAgICAgICAgICAgICAgICAtLXJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHRpbWUgem9uZSB3aXRoIHRoZSBnaXZlbiB0aW1lIHpvbmUgdmFsdWUuCisgICAgICogQHBhcmFtIHZhbHVlIHRoZSBnaXZlbiB0aW1lIHpvbmUuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0VGltZVpvbmUoVGltZVpvbmUgdmFsdWUpCisgICAgeworICAgICAgICB6b25lID0gdmFsdWU7CisgICAgICAgIC8qIFJlY29tcHV0ZSB0aGUgZmllbGRzIGZyb20gdGhlIHRpbWUgdXNpbmcgdGhlIG5ldyB6b25lLiAgVGhpcyBhbHNvCisgICAgICAgICAqIHdvcmtzIGlmIGlzVGltZVNldCBpcyBmYWxzZSAoYWZ0ZXIgYSBjYWxsIHRvIHNldCgpKS4gIEluIHRoYXQgY2FzZQorICAgICAgICAgKiB0aGUgdGltZSB3aWxsIGJlIGNvbXB1dGVkIGZyb20gdGhlIGZpZWxkcyB1c2luZyB0aGUgbmV3IHpvbmUsIHRoZW4KKyAgICAgICAgICogdGhlIGZpZWxkcyB3aWxsIGdldCByZWNvbXB1dGVkIGZyb20gdGhhdC4gIENvbnNpZGVyIHRoZSBzZXF1ZW5jZSBvZgorICAgICAgICAgKiBjYWxsczogY2FsLnNldFRpbWVab25lKEVTVCk7IGNhbC5zZXQoSE9VUiwgMSk7IGNhbC5zZXRUaW1lWm9uZShQU1QpLgorICAgICAgICAgKiBJcyBjYWwgc2V0IHRvIDEgbydjbG9jayBFU1Qgb3IgMSBvJ2Nsb2NrIFBTVD8gIEFuc3dlcjogUFNULiAgTW9yZQorICAgICAgICAgKiBnZW5lcmFsbHksIGEgY2FsbCB0byBzZXRUaW1lWm9uZSgpIGFmZmVjdHMgY2FsbHMgdG8gc2V0KCkgQkVGT1JFIEFORAorICAgICAgICAgKiBBRlRFUiBpdCB1cCB0byB0aGUgbmV4dCBjYWxsIHRvIGNvbXBsZXRlKCkuCisgICAgICAgICAqLworICAgICAgICBhcmVGaWVsZHNTZXQgPSBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSB0aW1lIHpvbmUuCisgICAgICogQHJldHVybiB0aGUgdGltZSB6b25lIG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhpcyBjYWxlbmRhci4KKyAgICAgKi8KKyAgICBwdWJsaWMgVGltZVpvbmUgZ2V0VGltZVpvbmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHpvbmU7CisgICAgfQorCisgICAgLyoqCisgICAgICogU3BlY2lmeSB3aGV0aGVyIG9yIG5vdCBkYXRlL3RpbWUgaW50ZXJwcmV0YXRpb24gaXMgdG8gYmUgbGVuaWVudC4gIFdpdGgKKyAgICAgKiBsZW5pZW50IGludGVycHJldGF0aW9uLCBhIGRhdGUgc3VjaCBhcyAiRmVicnVhcnkgOTQyLCAxOTk2IiB3aWxsIGJlCisgICAgICogdHJlYXRlZCBhcyBiZWluZyBlcXVpdmFsZW50IHRvIHRoZSA5NDFzdCBkYXkgYWZ0ZXIgRmVicnVhcnkgMSwgMTk5Ni4KKyAgICAgKiBXaXRoIHN0cmljdCBpbnRlcnByZXRhdGlvbiwgc3VjaCBkYXRlcyB3aWxsIGNhdXNlIGFuIGV4Y2VwdGlvbiB0byBiZQorICAgICAqIHRocm93bi4KKyAgICAgKgorICAgICAqIEBzZWUgRGF0ZUZvcm1hdCNzZXRMZW5pZW50CisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0TGVuaWVudChib29sZWFuIGxlbmllbnQpCisgICAgeworICAgICAgICB0aGlzLmxlbmllbnQgPSBsZW5pZW50OworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlbGwgd2hldGhlciBkYXRlL3RpbWUgaW50ZXJwcmV0YXRpb24gaXMgdG8gYmUgbGVuaWVudC4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0xlbmllbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGxlbmllbnQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB3aGF0IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgaXM7IGUuZy4sIFN1bmRheSBpbiBVUywKKyAgICAgKiBNb25kYXkgaW4gRnJhbmNlLgorICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgZ2l2ZW4gZmlyc3QgZGF5IG9mIHRoZSB3ZWVrLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEZpcnN0RGF5T2ZXZWVrKGludCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGZpcnN0RGF5T2ZXZWVrID0gdmFsdWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB3aGF0IHRoZSBmaXJzdCBkYXkgb2YgdGhlIHdlZWsgaXM7IGUuZy4sIFN1bmRheSBpbiBVUywKKyAgICAgKiBNb25kYXkgaW4gRnJhbmNlLgorICAgICAqIEByZXR1cm4gdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEZpcnN0RGF5T2ZXZWVrKCkKKyAgICB7CisgICAgICAgIHJldHVybiBmaXJzdERheU9mV2VlazsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHdoYXQgdGhlIG1pbmltYWwgZGF5cyByZXF1aXJlZCBpbiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhciBhcmUuCisgICAgICogRm9yIGV4YW1wbGUsIGlmIHRoZSBmaXJzdCB3ZWVrIGlzIGRlZmluZWQgYXMgb25lIHRoYXQgY29udGFpbnMgdGhlIGZpcnN0CisgICAgICogZGF5IG9mIHRoZSBmaXJzdCBtb250aCBvZiBhIHllYXIsIGNhbGwgdGhlIG1ldGhvZCB3aXRoIHZhbHVlIDEuIElmIGl0CisgICAgICogbXVzdCBiZSBhIGZ1bGwgd2VlaywgdXNlIHZhbHVlIDcuCisgICAgICogQHBhcmFtIHZhbHVlIHRoZSBnaXZlbiBtaW5pbWFsIGRheXMgcmVxdWlyZWQgaW4gdGhlIGZpcnN0IHdlZWsKKyAgICAgKiBvZiB0aGUgeWVhci4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKGludCB2YWx1ZSkKKyAgICB7CisgICAgICAgIG1pbmltYWxEYXlzSW5GaXJzdFdlZWsgPSB2YWx1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHdoYXQgdGhlIG1pbmltYWwgZGF5cyByZXF1aXJlZCBpbiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhciBhcmU7CisgICAgICogZS5nLiwgaWYgdGhlIGZpcnN0IHdlZWsgaXMgZGVmaW5lZCBhcyBvbmUgdGhhdCBjb250YWlucyB0aGUgZmlyc3QgZGF5CisgICAgICogb2YgdGhlIGZpcnN0IG1vbnRoIG9mIGEgeWVhciwgZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlayByZXR1cm5zIDEuIElmCisgICAgICogdGhlIG1pbmltYWwgZGF5cyByZXF1aXJlZCBtdXN0IGJlIGEgZnVsbCB3ZWVrLCBnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrCisgICAgICogcmV0dXJucyA3LgorICAgICAqIEByZXR1cm4gdGhlIG1pbmltYWwgZGF5cyByZXF1aXJlZCBpbiB0aGUgZmlyc3Qgd2VlayBvZiB0aGUgeWVhci4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1pbmltYWxEYXlzSW5GaXJzdFdlZWs7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExJTUlUU1tdW10gPSB7CisgICAgICAgIC8vICAgIE1pbmltdW0gIEdyZWF0ZXN0IG1pbiAgICAgIExlYXN0IG1heCAgIEdyZWF0ZXN0IG1heAorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIEVSQQorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIFlFQVIKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBNT05USAorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIFdFRUtfT0ZfWUVBUgorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIFdFRUtfT0ZfTU9OVEgKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBEQVlfT0ZfTU9OVEgKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBEQVlfT0ZfWUVBUgorICAgICAgICB7ICAgICAgICAgICAxLCAgICAgICAgICAgIDEsICAgICAgICAgICAgIDcsICAgICAgICAgICAgIDcgIH0sIC8vIERBWV9PRl9XRUVLCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gREFZX09GX1dFRUtfSU5fTU9OVEgKKyAgICAgICAgeyAgICAgICAgICAgMCwgICAgICAgICAgICAwLCAgICAgICAgICAgICAxLCAgICAgICAgICAgICAxICB9LCAvLyBBTV9QTQorICAgICAgICB7ICAgICAgICAgICAwLCAgICAgICAgICAgIDAsICAgICAgICAgICAgMTEsICAgICAgICAgICAgMTEgIH0sIC8vIEhPVVIKKyAgICAgICAgeyAgICAgICAgICAgMCwgICAgICAgICAgICAwLCAgICAgICAgICAgIDIzLCAgICAgICAgICAgIDIzICB9LCAvLyBIT1VSX09GX0RBWQorICAgICAgICB7ICAgICAgICAgICAwLCAgICAgICAgICAgIDAsICAgICAgICAgICAgNTksICAgICAgICAgICAgNTkgIH0sIC8vIE1JTlVURQorICAgICAgICB7ICAgICAgICAgICAwLCAgICAgICAgICAgIDAsICAgICAgICAgICAgNTksICAgICAgICAgICAgNTkgIH0sIC8vIFNFQ09ORAorICAgICAgICB7ICAgICAgICAgICAwLCAgICAgICAgICAgIDAsICAgICAgICAgICA5OTksICAgICAgICAgICA5OTkgIH0sIC8vIE1JTExJU0VDT05ECisgICAgICAgIHstMTIqT05FX0hPVVIsIC0xMipPTkVfSE9VUiwgICAxMipPTkVfSE9VUiwgICAxMipPTkVfSE9VUiAgfSwgLy8gWk9ORV9PRkZTRVQKKyAgICAgICAgeyAgICAgICAgICAgMCwgICAgICAgICAgICAwLCAgICAxKk9ORV9IT1VSLCAgICAxKk9ORV9IT1VSICB9LCAvLyBEU1RfT0ZGU0VUCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gWUVBUl9XT1kKKyAgICAgICAgeyAgICAgICAgICAgMSwgICAgICAgICAgICAxLCAgICAgICAgICAgICA3LCAgICAgICAgICAgICA3ICB9LCAvLyBET1dfTE9DQUwKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBFWFRFTkRFRF9ZRUFSCisgICAgICAgIHsgLTB4N0YwMDAwMDAsICAtMHg3RjAwMDAwMCwgICAgMHg3RjAwMDAwMCwgICAgMHg3RjAwMDAwMCAgfSwgLy8gSlVMSUFOX0RBWQorICAgICAgICB7ICAgICAgICAgICAwLCAgICAgICAgICAgIDAsIDI0Kk9ORV9IT1VSLTEsIDI0Kk9ORV9IT1VSLTEgIH0sIC8vIE1JTExJU0VDT05EU19JTl9EQVkKKyAgICB9OworCisgICAgLyoqCisgICAgICogU3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byByZXR1cm4gbGltaXRzIGZvciB0aGUKKyAgICAgKiBmb2xsb3dpbmcgZmllbGRzOgorICAgICAqCisgICAgICogPHByZT5FUkEKKyAgICAgKiBZRUFSCisgICAgICogTU9OVEgKKyAgICAgKiBXRUVLX09GX1lFQVIKKyAgICAgKiBXRUVLX09GX01PTlRICisgICAgICogREFZX09GX01PTlRICisgICAgICogREFZX09GX1lFQVIKKyAgICAgKiBEQVlfT0ZfV0VFS19JTl9NT05USAorICAgICAqIFlFQVJfV09ZCisgICAgICogRVhURU5ERURfWUVBUjwvcHJlPgorICAgICAqCisgICAgICogQHBhcmFtIGZpZWxkIG9uZSBvZiB0aGUgYWJvdmUgZmllbGQgbnVtYmVycworICAgICAqIEBwYXJhbSBsaW1pdFR5cGUgb25lIG9mIDxjb2RlPk1JTklNVU08L2NvZGU+LCA8Y29kZT5HUkVBVEVTVF9NSU5JTVVNPC9jb2RlPiwKKyAgICAgKiA8Y29kZT5MRUFTVF9NQVhJTVVNPC9jb2RlPiwgb3IgPGNvZGU+TUFYSU1VTTwvY29kZT4KKyAgICAgKi8KKyAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgaW50IGhhbmRsZUdldExpbWl0KGludCBmaWVsZCwgaW50IGxpbWl0VHlwZSk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBsaW1pdCBmb3IgYSBmaWVsZC4KKyAgICAgKiBAcGFyYW0gZmllbGQgdGhlIGZpZWxkLCBmcm9tIDAuLjwvY29kZT5nZXRGaWVsZENvdW50KCktMTwvY29kZT4KKyAgICAgKiBAcGFyYW0gbGltaXRUeXBlIHRoZSB0eXBlIHNwZWNpZmllciBmb3IgdGhlIGxpbWl0CisgICAgICogQHNlZSAjTUlOSU1VTQorICAgICAqIEBzZWUgI0dSRUFURVNUX01JTklNVU0KKyAgICAgKiBAc2VlICNMRUFTVF9NQVhJTVVNCisgICAgICogQHNlZSAjTUFYSU1VTQorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgZ2V0TGltaXQoaW50IGZpZWxkLCBpbnQgbGltaXRUeXBlKSB7CisgICAgICAgIHN3aXRjaCAoZmllbGQpIHsKKyAgICAgICAgY2FzZSBEQVlfT0ZfV0VFSzoKKyAgICAgICAgY2FzZSBBTV9QTToKKyAgICAgICAgY2FzZSBIT1VSOgorICAgICAgICBjYXNlIEhPVVJfT0ZfREFZOgorICAgICAgICBjYXNlIE1JTlVURToKKyAgICAgICAgY2FzZSBTRUNPTkQ6CisgICAgICAgIGNhc2UgTUlMTElTRUNPTkQ6CisgICAgICAgIGNhc2UgWk9ORV9PRkZTRVQ6CisgICAgICAgIGNhc2UgRFNUX09GRlNFVDoKKyAgICAgICAgY2FzZSBET1dfTE9DQUw6CisgICAgICAgIGNhc2UgSlVMSUFOX0RBWToKKyAgICAgICAgY2FzZSBNSUxMSVNFQ09ORFNfSU5fREFZOgorICAgICAgICAgICAgcmV0dXJuIExJTUlUU1tmaWVsZF1bbGltaXRUeXBlXTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaGFuZGxlR2V0TGltaXQoZmllbGQsIGxpbWl0VHlwZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogTGltaXQgdHlwZSBmb3IgPGNvZGU+Z2V0TGltaXQoKTwvY29kZT4gYW5kIDxjb2RlPmhhbmRsZUdldExpbWl0KCk8L2NvZGU+CisgICAgICogaW5kaWNhdGluZyB0aGUgbWluaW11bSB2YWx1ZSB0aGF0IGEgZmllbGQgY2FuIHRha2UgKGxlYXN0IG1pbmltdW0pLgorICAgICAqIEBzZWUgI2dldExpbWl0CisgICAgICogQHNlZSAjaGFuZGxlR2V0TGltaXQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBNSU5JTVVNID0gMDsKKworICAgIC8qKgorICAgICAqIExpbWl0IHR5cGUgZm9yIDxjb2RlPmdldExpbWl0KCk8L2NvZGU+IGFuZCA8Y29kZT5oYW5kbGVHZXRMaW1pdCgpPC9jb2RlPgorICAgICAqIGluZGljYXRpbmcgdGhlIGdyZWF0ZXN0IG1pbmltdW0gdmFsdWUgdGhhdCBhIGZpZWxkIGNhbiB0YWtlLgorICAgICAqIEBzZWUgI2dldExpbWl0CisgICAgICogQHNlZSAjaGFuZGxlR2V0TGltaXQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBHUkVBVEVTVF9NSU5JTVVNID0gMTsKKworICAgIC8qKgorICAgICAqIExpbWl0IHR5cGUgZm9yIDxjb2RlPmdldExpbWl0KCk8L2NvZGU+IGFuZCA8Y29kZT5oYW5kbGVHZXRMaW1pdCgpPC9jb2RlPgorICAgICAqIGluZGljYXRpbmcgdGhlIGxlYXN0IG1heGltdW0gdmFsdWUgdGhhdCBhIGZpZWxkIGNhbiB0YWtlLgorICAgICAqIEBzZWUgI2dldExpbWl0CisgICAgICogQHNlZSAjaGFuZGxlR2V0TGltaXQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBMRUFTVF9NQVhJTVVNID0gMjsKKworICAgIC8qKgorICAgICAqIExpbWl0IHR5cGUgZm9yIDxjb2RlPmdldExpbWl0KCk8L2NvZGU+IGFuZCA8Y29kZT5oYW5kbGVHZXRMaW1pdCgpPC9jb2RlPgorICAgICAqIGluZGljYXRpbmcgdGhlIG1heGltdW0gdmFsdWUgdGhhdCBhIGZpZWxkIGNhbiB0YWtlIChncmVhdGVzdCBtYXhpbXVtKS4KKyAgICAgKiBAc2VlICNnZXRMaW1pdAorICAgICAqIEBzZWUgI2hhbmRsZUdldExpbWl0CisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgTUFYSU1VTSA9IDM7CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBtaW5pbXVtIHZhbHVlIGZvciB0aGUgZ2l2ZW4gdGltZSBmaWVsZC4KKyAgICAgKiBlLmcuLCBmb3IgR3JlZ29yaWFuIERBWV9PRl9NT05USCwgMS4KKyAgICAgKiBAcGFyYW0gZmllbGQgdGhlIGdpdmVuIHRpbWUgZmllbGQuCisgICAgICogQHJldHVybiB0aGUgbWluaW11bSB2YWx1ZSBmb3IgdGhlIGdpdmVuIHRpbWUgZmllbGQuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIGludCBnZXRNaW5pbXVtKGludCBmaWVsZCkgeworICAgICAgICByZXR1cm4gZ2V0TGltaXQoZmllbGQsIE1JTklNVU0pOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIG1heGltdW0gdmFsdWUgZm9yIHRoZSBnaXZlbiB0aW1lIGZpZWxkLgorICAgICAqIGUuZy4gZm9yIEdyZWdvcmlhbiBEQVlfT0ZfTU9OVEgsIDMxLgorICAgICAqIEBwYXJhbSBmaWVsZCB0aGUgZ2l2ZW4gdGltZSBmaWVsZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBtYXhpbXVtIHZhbHVlIGZvciB0aGUgZ2l2ZW4gdGltZSBmaWVsZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgaW50IGdldE1heGltdW0oaW50IGZpZWxkKSB7CisgICAgICAgIHJldHVybiBnZXRMaW1pdChmaWVsZCwgTUFYSU1VTSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgaGlnaGVzdCBtaW5pbXVtIHZhbHVlIGZvciB0aGUgZ2l2ZW4gZmllbGQgaWYgdmFyaWVzLgorICAgICAqIE90aGVyd2lzZSBzYW1lIGFzIGdldE1pbmltdW0oKS4gRm9yIEdyZWdvcmlhbiwgbm8gZGlmZmVyZW5jZS4KKyAgICAgKiBAcGFyYW0gZmllbGQgdGhlIGdpdmVuIHRpbWUgZmllbGQuCisgICAgICogQHJldHVybiB0aGUgaGlnaGVzdCBtaW5pbXVtIHZhbHVlIGZvciB0aGUgZ2l2ZW4gdGltZSBmaWVsZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgaW50IGdldEdyZWF0ZXN0TWluaW11bShpbnQgZmllbGQpIHsKKyAgICAgICAgcmV0dXJuIGdldExpbWl0KGZpZWxkLCBHUkVBVEVTVF9NSU5JTVVNKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBsb3dlc3QgbWF4aW11bSB2YWx1ZSBmb3IgdGhlIGdpdmVuIGZpZWxkIGlmIHZhcmllcy4KKyAgICAgKiBPdGhlcndpc2Ugc2FtZSBhcyBnZXRNYXhpbXVtKCkuIGUuZy4sIGZvciBHcmVnb3JpYW4gREFZX09GX01PTlRILCAyOC4KKyAgICAgKiBAcGFyYW0gZmllbGQgdGhlIGdpdmVuIHRpbWUgZmllbGQuCisgICAgICogQHJldHVybiB0aGUgbG93ZXN0IG1heGltdW0gdmFsdWUgZm9yIHRoZSBnaXZlbiB0aW1lIGZpZWxkLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBpbnQgZ2V0TGVhc3RNYXhpbXVtKGludCBmaWVsZCkgeworICAgICAgICByZXR1cm4gZ2V0TGltaXQoZmllbGQsIExFQVNUX01BWElNVU0pOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFdlZWtlbmQgc3VwcG9ydCAtLSBkZXRlcm1pbmluZyB3aGljaCBkYXlzIG9mIHRoZSB3ZWVrIGFyZSB0aGUgd2Vla2VuZAorICAgIC8vIGluIGEgZ2l2ZW4gbG9jYWxlCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gZGF5IG9mIHRoZSB3ZWVrIGlzIGEgd2Vla2RheSwgYQorICAgICAqIHdlZWtlbmQgZGF5LCBvciBhIGRheSB0aGF0IHRyYW5zaXRpb25zIGZyb20gb25lIHRvIHRoZSBvdGhlciwKKyAgICAgKiBpbiB0aGlzIGNhbGVuZGFyIHN5c3RlbS4gIElmIGEgdHJhbnNpdGlvbiBvY2N1cnMgYXQgbWlkbmlnaHQsCisgICAgICogdGhlbiB0aGUgZGF5cyBiZWZvcmUgYW5kIGFmdGVyIHRoZSB0cmFuc2l0aW9uIHdpbGwgaGF2ZSB0aGUKKyAgICAgKiB0eXBlIFdFRUtEQVkgb3IgV0VFS0VORC4gIElmIGEgdHJhbnNpdGlvbiBvY2N1cnMgYXQgYSB0aW1lCisgICAgICogb3RoZXIgdGhhbiBtaWRuaWdodCwgdGhlbiB0aGUgZGF5IG9mIHRoZSB0cmFuc2l0aW9uIHdpbGwgaGF2ZQorICAgICAqIHRoZSB0eXBlIFdFRUtFTkRfT05TRVQgb3IgV0VFS0VORF9DRUFTRS4gIEluIHRoaXMgY2FzZSwgdGhlCisgICAgICogbWV0aG9kIGdldFdlZWtlbmRUcmFuc2l0aW9uKCkgd2lsbCByZXR1cm4gdGhlIHBvaW50IG9mCisgICAgICogdHJhbnNpdGlvbi4KKyAgICAgKiBAcGFyYW0gZGF5T2ZXZWVrIGVpdGhlciBTVU5EQVksIE1PTkRBWSwgVFVFU0RBWSwgV0VETkVTREFZLAorICAgICAqIFRIVVJTREFZLCBGUklEQVksIG9yIFNBVFVSREFZCisgICAgICogQHJldHVybiBlaXRoZXIgV0VFS0RBWSwgV0VFS0VORCwgV0VFS0VORF9PTlNFVCwgb3IKKyAgICAgKiBXRUVLRU5EX0NFQVNFCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgZGF5T2ZXZWVrIGlzIG5vdAorICAgICAqIGJldHdlZW4gU1VOREFZIGFuZCBTQVRVUkRBWSwgaW5jbHVzaXZlCisgICAgICogQHNlZSAjV0VFS0RBWQorICAgICAqIEBzZWUgI1dFRUtFTkQKKyAgICAgKiBAc2VlICNXRUVLRU5EX09OU0VUCisgICAgICogQHNlZSAjV0VFS0VORF9DRUFTRQorICAgICAqIEBzZWUgI2dldFdlZWtlbmRUcmFuc2l0aW9uCisgICAgICogQHNlZSAjaXNXZWVrZW5kKERhdGUpCisgICAgICogQHNlZSAjaXNXZWVrZW5kKCkKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldERheU9mV2Vla1R5cGUoaW50IGRheU9mV2VlaykgeworICAgICAgICBpZiAoZGF5T2ZXZWVrIDwgU1VOREFZIHx8IGRheU9mV2VlayA+IFNBVFVSREFZKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGRheSBvZiB3ZWVrIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHdlZWtlbmRPbnNldCA8IHdlZWtlbmRDZWFzZSkgeworICAgICAgICAgICAgaWYgKGRheU9mV2VlayA8IHdlZWtlbmRPbnNldCB8fCBkYXlPZldlZWsgPiB3ZWVrZW5kQ2Vhc2UpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gV0VFS0RBWTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChkYXlPZldlZWsgPiB3ZWVrZW5kQ2Vhc2UgJiYgZGF5T2ZXZWVrIDwgd2Vla2VuZE9uc2V0KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFdFRUtEQVk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gCisgICAgICAgIGlmIChkYXlPZldlZWsgPT0gd2Vla2VuZE9uc2V0KSB7CisgICAgICAgICAgICByZXR1cm4gKHdlZWtlbmRPbnNldE1pbGxpcyA9PSAwKSA/IFdFRUtFTkQgOiBXRUVLRU5EX09OU0VUOworICAgICAgICB9CisgICAgICAgIGlmIChkYXlPZldlZWsgPT0gd2Vla2VuZENlYXNlKSB7CisgICAgICAgICAgICByZXR1cm4gKHdlZWtlbmRDZWFzZU1pbGxpcyA9PSAwKSA/IFdFRUtEQVkgOiBXRUVLRU5EX0NFQVNFOworICAgICAgICB9CisgICAgICAgIHJldHVybiBXRUVLRU5EOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgdGltZSBkdXJpbmcgdGhlIGRheSBhdCB3aGljaCB0aGUgd2Vla2VuZCBiZWdpbnMgb3IgZW5kIGluCisgICAgICogdGhpcyBjYWxlbmRhciBzeXN0ZW0uICBJZiBnZXREYXlPZldlZWtUeXBlKGRheU9mV2VlaykgPT0KKyAgICAgKiBXRUVLRU5EX09OU0VUIHJldHVybiB0aGUgdGltZSBhdCB3aGljaCB0aGUgd2Vla2VuZCBiZWdpbnMuICBJZgorICAgICAqIGdldERheU9mV2Vla1R5cGUoZGF5T2ZXZWVrKSA9PSBXRUVLRU5EX0NFQVNFIHJldHVybiB0aGUgdGltZSBhdAorICAgICAqIHdoaWNoIHRoZSB3ZWVrZW5kIGVuZHMuICBJZiBnZXREYXlPZldlZWtUeXBlKGRheU9mV2VlaykgaGFzIHNvbWUKKyAgICAgKiBvdGhlciB2YWx1ZSwgdGhlbiB0aHJvdyBhbiBleGNlcHRpb24uCisgICAgICogQHBhcmFtIGRheU9mV2VlayBlaXRoZXIgU1VOREFZLCBNT05EQVksIFRVRVNEQVksIFdFRE5FU0RBWSwKKyAgICAgKiBUSFVSU0RBWSwgRlJJREFZLCBvciBTQVRVUkRBWQorICAgICAqIEByZXR1cm4gdGhlIG1pbGxpc2Vjb25kcyBhZnRlciBtaWRuaWdodCBhdCB3aGljaCB0aGUKKyAgICAgKiB3ZWVrZW5kIGJlZ2lucyBvciBlbmRzCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgZGF5T2ZXZWVrIGlzIG5vdAorICAgICAqIFdFRUtFTkRfT05TRVQgb3IgV0VFS0VORF9DRUFTRQorICAgICAqIEBzZWUgI2dldERheU9mV2Vla1R5cGUKKyAgICAgKiBAc2VlICNpc1dlZWtlbmQoRGF0ZSkKKyAgICAgKiBAc2VlICNpc1dlZWtlbmQoKQorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0V2Vla2VuZFRyYW5zaXRpb24oaW50IGRheU9mV2VlaykgeworICAgICAgICBpZiAoZGF5T2ZXZWVrID09IHdlZWtlbmRPbnNldCkgeworICAgICAgICAgICAgcmV0dXJuIHdlZWtlbmRPbnNldE1pbGxpczsKKyAgICAgICAgfSBlbHNlIGlmIChkYXlPZldlZWsgPT0gd2Vla2VuZENlYXNlKSB7CisgICAgICAgICAgICByZXR1cm4gd2Vla2VuZENlYXNlTWlsbGlzOworICAgICAgICB9CisgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIk5vdCB3ZWVrZW5kIHRyYW5zaXRpb24gZGF5Iik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIGRhdGUgYW5kIHRpbWUgaXMgaW4gdGhlIHdlZWtlbmQgaW4KKyAgICAgKiB0aGlzIGNhbGVuZGFyIHN5c3RlbS4gIEVxdWl2YWxlbnQgdG8gY2FsbGluZyBzZXRUaW1lKCkgZm9sbG93ZWQKKyAgICAgKiBieSBpc1dlZWtlbmQoKS4gIE5vdGU6IFRoaXMgbWV0aG9kIGNoYW5nZXMgdGhlIHRpbWUgdGhpcworICAgICAqIGNhbGVuZGFyIGlzIHNldCB0by4KKyAgICAgKiBAcGFyYW0gZGF0ZSB0aGUgZGF0ZSBhbmQgdGltZQorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gZGF0ZSBhbmQgdGltZSBpcyBwYXJ0IG9mIHRoZQorICAgICAqIHdlZWtlbmQKKyAgICAgKiBAc2VlICNnZXREYXlPZldlZWtUeXBlCisgICAgICogQHNlZSAjZ2V0V2Vla2VuZFRyYW5zaXRpb24KKyAgICAgKiBAc2VlICNpc1dlZWtlbmQoKQorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzV2Vla2VuZChEYXRlIGRhdGUpIHsKKyAgICAgICAgc2V0VGltZShkYXRlKTsKKyAgICAgICAgcmV0dXJuIGlzV2Vla2VuZCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoaXMgQ2FsZW5kYXIncyBjdXJyZW50IGRhdGUgYW5kIHRpbWUgaXMgaW4gdGhlCisgICAgICogd2Vla2VuZCBpbiB0aGlzIGNhbGVuZGFyIHN5c3RlbS4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIGRhdGUgYW5kIHRpbWUgaXMgcGFydCBvZiB0aGUKKyAgICAgKiB3ZWVrZW5kCisgICAgICogQHNlZSAjZ2V0RGF5T2ZXZWVrVHlwZQorICAgICAqIEBzZWUgI2dldFdlZWtlbmRUcmFuc2l0aW9uCisgICAgICogQHNlZSAjaXNXZWVrZW5kKERhdGUpCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNXZWVrZW5kKCkgeworICAgICAgICBpbnQgZG93ID0gIGdldChEQVlfT0ZfV0VFSyk7CisgICAgICAgIGludCBkb3d0ID0gZ2V0RGF5T2ZXZWVrVHlwZShkb3cpOworICAgICAgICBzd2l0Y2ggKGRvd3QpIHsKKyAgICAgICAgY2FzZSBXRUVLREFZOgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjYXNlIFdFRUtFTkQ6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDogLy8gVGhhdCBpcywgV0VFS0VORF9PTlNFVCBvciBXRUVLRU5EX0NFQVNFCisgICAgICAgICAgICAvLyBVc2UgaW50ZXJuYWxHZXQoKSBiZWNhdXNlIHRoZSBhYm92ZSBjYWxsIHRvIGdldCgpIHBvcHVsYXRlZAorICAgICAgICAgICAgLy8gYWxsIGZpZWxkcy4KKyAgICAgICAgICAgIC8vIFtOb3RlOiBUaGVyZSBzaG91bGQgYmUgYSBiZXR0ZXIgd2F5IHRvIGdldCBtaWxsaXMgaW4gZGF5LgorICAgICAgICAgICAgLy8gIEZvciBJQ1U0Siwgc3VibWl0IHJlcXVlc3QgZm9yIGEgTUlMTElTX0lOX0RBWSBmaWVsZAorICAgICAgICAgICAgLy8gIGFuZCBhIERBWV9OVU1CRVIgZmllbGQgKGNvdWxkIGJlIEp1bGlhbiBkYXkgIykuIC0gYWxpdV0KKyAgICAgICAgICAgIGludCBtaWxsaXNJbkRheSA9IGludGVybmFsR2V0KE1JTExJU0VDT05EKSArIDEwMDAgKiAoaW50ZXJuYWxHZXQoU0VDT05EKSArCisgICAgICAgICAgICAgICAgNjAgKiAoaW50ZXJuYWxHZXQoTUlOVVRFKSArIDYwICogaW50ZXJuYWxHZXQoSE9VUl9PRl9EQVkpKSk7CisgICAgICAgICAgICBpbnQgdHJhbnNpdGlvbiA9IGdldFdlZWtlbmRUcmFuc2l0aW9uKGRvdyk7CisgICAgICAgICAgICByZXR1cm4gKGRvd3QgPT0gV0VFS0VORF9PTlNFVCkKKyAgICAgICAgICAgICAgICA/IChtaWxsaXNJbkRheSA+PSB0cmFuc2l0aW9uKQorICAgICAgICAgICAgICAgIDogKG1pbGxpc0luRGF5IDwgIHRyYW5zaXRpb24pOworICAgICAgICB9CisgICAgICAgIC8vIChXZSBjYW4gbmV2ZXIgcmVhY2ggdGhpcyBwb2ludC4pCisgICAgfQorCisgICAgLyoqCisgICAgICogUmVhZCB0aGUgbG9jYWxlIHdlZWtlbmQgZGF0YSBmb3IgdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKgorICAgICAqIFRoaXMgaXMgdGhlIGluaXRpYWwgcGxhY2VtZW50IGFuZCBmb3JtYXQgb2YgdGhpcyBkYXRhIC0tIGl0IG1heSB2ZXJ5CisgICAgICogd2VsbCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS4gIFNlZSB0aGUgbG9jYWxlIGZpbGVzIHRoZW1zZWx2ZXMgZm9yCisgICAgICogZGV0YWlscy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgc2V0V2Vla2VuZERhdGEoTG9jYWxlIGxvYykgeworICAgICAgICBSZXNvdXJjZUJ1bmRsZSByZXNvdXJjZSA9CisgICAgICAgICAgICBSZXNvdXJjZUJ1bmRsZS5nZXRCdW5kbGUoImNvbS5pYm0udXRpbC5yZXNvdXJjZXMuQ2FsZW5kYXJEYXRhIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2MpOworICAgICAgICBTdHJpbmdbXSBkYXRhID0gcmVzb3VyY2UuZ2V0U3RyaW5nQXJyYXkoIldlZWtlbmQiKTsKKyAgICAgICAgd2Vla2VuZE9uc2V0ICAgICAgID0gSW50ZWdlci5wYXJzZUludChkYXRhWzBdKTsKKyAgICAgICAgd2Vla2VuZE9uc2V0TWlsbGlzID0gSW50ZWdlci5wYXJzZUludChkYXRhWzFdKTsKKyAgICAgICAgd2Vla2VuZENlYXNlICAgICAgID0gSW50ZWdlci5wYXJzZUludChkYXRhWzJdKTsKKyAgICAgICAgd2Vla2VuZENlYXNlTWlsbGlzID0gSW50ZWdlci5wYXJzZUludChkYXRhWzNdKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBFbmQgb2Ygd2Vla2VuZCBzdXBwb3J0CisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgQ2xvbmVhYmxlCisgICAgICovCisgICAgcHVibGljIE9iamVjdCBjbG9uZSgpCisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgQ2FsZW5kYXIgb3RoZXIgPSAoQ2FsZW5kYXIpIHN1cGVyLmNsb25lKCk7CisKKyAgICAgICAgICAgIG90aGVyLmZpZWxkcyA9IG5ldyBpbnRbZmllbGRzLmxlbmd0aF07CisgICAgICAgICAgICBvdGhlci5zdGFtcCA9IG5ldyBpbnRbZmllbGRzLmxlbmd0aF07CisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHRoaXMuZmllbGRzLCAwLCBvdGhlci5maWVsZHMsIDAsIGZpZWxkcy5sZW5ndGgpOworICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weSh0aGlzLnN0YW1wLCAwLCBvdGhlci5zdGFtcCwgMCwgZmllbGRzLmxlbmd0aCk7CisKKyAgICAgICAgICAgIG90aGVyLnpvbmUgPSAoVGltZVpvbmUpIHpvbmUuY2xvbmUoKTsKKyAgICAgICAgICAgIHJldHVybiBvdGhlcjsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgLy8gdGhpcyBzaG91bGRuJ3QgaGFwcGVuLCBzaW5jZSB3ZSBhcmUgQ2xvbmVhYmxlCisgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgY2FsZW5kYXIuIFRoaXMgbWV0aG9kIAorICAgICAqIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgb25seSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLCBhbmQgdGhlIAorICAgICAqIGZvcm1hdCBvZiB0aGUgcmV0dXJuZWQgc3RyaW5nIG1heSB2YXJ5IGJldHdlZW4gaW1wbGVtZW50YXRpb25zLiAKKyAgICAgKiBUaGUgcmV0dXJuZWQgc3RyaW5nIG1heSBiZSBlbXB0eSBidXQgbWF5IG5vdCBiZSA8Y29kZT5udWxsPC9jb2RlPi4KKyAgICAgKiAKKyAgICAgKiBAcmV0dXJuICBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGNhbGVuZGFyLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoZ2V0Q2xhc3MoKS5nZXROYW1lKCkpOworICAgICAgICBidWZmZXIuYXBwZW5kKCJbdGltZT0iKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChpc1RpbWVTZXQgPyBTdHJpbmcudmFsdWVPZih0aW1lKSA6ICI/Iik7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoIixhcmVGaWVsZHNTZXQ9Iik7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoYXJlRmllbGRzU2V0KTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZCgiLGFyZUFsbEZpZWxkc1NldD0iKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChhcmVBbGxGaWVsZHNTZXQpOworICAgICAgICBidWZmZXIuYXBwZW5kKCIsbGVuaWVudD0iKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChsZW5pZW50KTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZCgiLHpvbmU9Iik7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoem9uZSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoIixmaXJzdERheU9mV2Vlaz0iKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZChmaXJzdERheU9mV2Vlayk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoIixtaW5pbWFsRGF5c0luRmlyc3RXZWVrPSIpOworICAgICAgICBidWZmZXIuYXBwZW5kKG1pbmltYWxEYXlzSW5GaXJzdFdlZWspOworICAgICAgICBmb3IgKGludCBpPTA7IGk8ZmllbGRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCcsJykuYXBwZW5kKEZJRUxEX05BTUVbaV0pLmFwcGVuZCgnPScpOworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChpc1NldChpKSA/IFN0cmluZy52YWx1ZU9mKGZpZWxkc1tpXSkgOiAiPyIpOworICAgICAgICB9CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ10nKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZygpOworICAgIH0KKworICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09cHJpdmF0ZXM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyAgICAvKioKKyAgICAgKiBCb3RoIGZpcnN0RGF5T2ZXZWVrIGFuZCBtaW5pbWFsRGF5c0luRmlyc3RXZWVrIGFyZSBsb2NhbGUtZGVwZW5kZW50LgorICAgICAqIFRoZXkgYXJlIHVzZWQgdG8gZmlndXJlIG91dCB0aGUgd2VlayBjb3VudCBmb3IgYSBzcGVjaWZpYyBkYXRlIGZvcgorICAgICAqIGEgZ2l2ZW4gbG9jYWxlLiBUaGVzZSBtdXN0IGJlIHNldCB3aGVuIGEgQ2FsZW5kYXIgaXMgY29uc3RydWN0ZWQuCisgICAgICogQHBhcmFtIGRlc2lyZWRMb2NhbGUgdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgc2V0V2Vla0NvdW50RGF0YShMb2NhbGUgZGVzaXJlZExvY2FsZSkKKyAgICB7CisgICAgLyogdHJ5IHRvIGdldCB0aGUgTG9jYWxlIGRhdGEgZnJvbSB0aGUgY2FjaGUgKi8KKyAgICBpbnRbXSBkYXRhID0gKGludFtdKSBjYWNoZWRMb2NhbGVEYXRhLmdldChkZXNpcmVkTG9jYWxlKTsKKyAgICBpZiAoZGF0YSA9PSBudWxsKSB7ICAvKiBjYWNoZSBtaXNzICovCisgICAgICAgIFJlc291cmNlQnVuZGxlIHJlc291cmNlCisgICAgICAgID0gUmVzb3VyY2VCdW5kbGUuZ2V0QnVuZGxlKCJqYXZhLnRleHQucmVzb3VyY2VzLkxvY2FsZUVsZW1lbnRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgZGVzaXJlZExvY2FsZSk7CisgICAgICAgIFN0cmluZ1tdIGRhdGVUaW1lUGF0dGVybnMgPQorICAgICAgICByZXNvdXJjZS5nZXRTdHJpbmdBcnJheSgiRGF0ZVRpbWVFbGVtZW50cyIpOworICAgICAgICBkYXRhID0gbmV3IGludFsyXTsKKyAgICAgICAgZGF0YVswXSA9IEludGVnZXIucGFyc2VJbnQoZGF0ZVRpbWVQYXR0ZXJuc1swXSk7CisgICAgICAgIGRhdGFbMV0gPSBJbnRlZ2VyLnBhcnNlSW50KGRhdGVUaW1lUGF0dGVybnNbMV0pOworICAgICAgICAvKiBjYWNoZSB1cGRhdGUgKi8KKyAgICAgICAgY2FjaGVkTG9jYWxlRGF0YS5wdXQoZGVzaXJlZExvY2FsZSwgZGF0YSk7CisgICAgfQorICAgIGZpcnN0RGF5T2ZXZWVrID0gZGF0YVswXTsKKyAgICBtaW5pbWFsRGF5c0luRmlyc3RXZWVrID0gZGF0YVsxXTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWNvbXB1dGUgdGhlIHRpbWUgYW5kIHVwZGF0ZSB0aGUgc3RhdHVzIGZpZWxkcyBpc1RpbWVTZXQKKyAgICAgKiBhbmQgYXJlRmllbGRzU2V0LiAgQ2FsbGVycyBzaG91bGQgY2hlY2sgaXNUaW1lU2V0IGFuZCBvbmx5CisgICAgICogY2FsbCB0aGlzIG1ldGhvZCBpZiBpc1RpbWVTZXQgaXMgZmFsc2UuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZVRpbWUoKSB7CisgICAgICAgIGNvbXB1dGVUaW1lKCk7CisgICAgICAgIC8vIElmIHdlIGFyZSBsZW5pZW50LCB3ZSBuZWVkIHRvIHJlY29tcHV0ZSB0aGUgZmllbGRzIHRvIG5vcm1hbGl6ZQorICAgICAgICAvLyB0aGUgdmFsdWVzLiAgQWxzbywgaWYgd2UgaGF2ZW4ndCBzZXQgYWxsIHRoZSBmaWVsZHMgeWV0IChpLmUuLAorICAgICAgICAvLyBpbiBhIG5ld2x5LWNyZWF0ZWQgb2JqZWN0KSwgd2UgbmVlZCB0byBmaWxsIGluIHRoZSBmaWVsZHMuIFtMSVVdCisgICAgICAgIGlmIChpc0xlbmllbnQoKSB8fCAhYXJlQWxsRmllbGRzU2V0KSBhcmVGaWVsZHNTZXQgPSBmYWxzZTsKKyAgICAgICAgaXNUaW1lU2V0ID0gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTYXZlIHRoZSBzdGF0ZSBvZiB0aGlzIG9iamVjdCB0byBhIHN0cmVhbSAoaS5lLiwgc2VyaWFsaXplIGl0KS4KKyAgICAgKgorICAgICAqIElkZWFsbHksIDxjb2RlPkNhbGVuZGFyPC9jb2RlPiB3b3VsZCBvbmx5IHdyaXRlIG91dCBpdHMgc3RhdGUgZGF0YSBhbmQKKyAgICAgKiB0aGUgY3VycmVudCB0aW1lLCBhbmQgbm90IHdyaXRlIGFueSBmaWVsZCBkYXRhIG91dCwgc3VjaCBhcworICAgICAqIDxjb2RlPmZpZWxkc1tdPC9jb2RlPiwgPGNvZGU+aXNUaW1lU2V0PC9jb2RlPiwgPGNvZGU+YXJlRmllbGRzU2V0PC9jb2RlPiwKKyAgICAgKiBhbmQgPGNvZGU+aXNTZXRbXTwvY29kZT4uICA8Y29kZT5uZXh0U3RhbXA8L2NvZGU+IGFsc28gc2hvdWxkIG5vdCBiZSBwYXJ0CisgICAgICogb2YgdGhlIHBlcnNpc3RlbnQgc3RhdGUuIFVuZm9ydHVuYXRlbHksIHRoaXMgZGlkbid0IGhhcHBlbiBiZWZvcmUgSkRLIDEuMQorICAgICAqIHNoaXBwZWQuIFRvIGJlIGNvbXBhdGlibGUgd2l0aCBKREsgMS4xLCB3ZSB3aWxsIGFsd2F5cyBoYXZlIHRvIHdyaXRlIG91dAorICAgICAqIHRoZSBmaWVsZCB2YWx1ZXMgYW5kIHN0YXRlIGZsYWdzLiAgSG93ZXZlciwgPGNvZGU+bmV4dFN0YW1wPC9jb2RlPiBjYW4gYmUKKyAgICAgKiByZW1vdmVkIGZyb20gdGhlIHNlcmlhbGl6YXRpb24gc3RyZWFtOyB0aGlzIHdpbGwgcHJvYmFibHkgaGFwcGVuIGluIHRoZQorICAgICAqIG5lYXIgZnV0dXJlLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCB3cml0ZU9iamVjdChPYmplY3RPdXRwdXRTdHJlYW0gc3RyZWFtKQorICAgICAgICAgdGhyb3dzIElPRXhjZXB0aW9uCisgICAgeworICAgICAgICAvLyBUcnkgdG8gY29tcHV0ZSB0aGUgdGltZSBjb3JyZWN0bHksIGZvciB0aGUgZnV0dXJlIChzdHJlYW0KKyAgICAgICAgLy8gdmVyc2lvbiAyKSBpbiB3aGljaCB3ZSBkb24ndCB3cml0ZSBvdXQgZmllbGRzW10gb3IgaXNTZXRbXS4KKyAgICAgICAgaWYgKCFpc1RpbWVTZXQpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgdXBkYXRlVGltZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2F0Y2ggKElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBlKSB7fQorICAgICAgICB9CisKKyAgICAgICAgLy8gV3JpdGUgb3V0IHRoZSAxLjEgRkNTIG9iamVjdC4KKyAgICAgICAgc3RyZWFtLmRlZmF1bHRXcml0ZU9iamVjdCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlY29uc3RpdHV0ZSB0aGlzIG9iamVjdCBmcm9tIGEgc3RyZWFtIChpLmUuLCBkZXNlcmlhbGl6ZSBpdCkuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHJlYWRPYmplY3QoT2JqZWN0SW5wdXRTdHJlYW0gc3RyZWFtKQorICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIENsYXNzTm90Rm91bmRFeGNlcHRpb24geworICAgICAgICAKKyAgICAgICAgc3RyZWFtLmRlZmF1bHRSZWFkT2JqZWN0KCk7CisgICAgICAgIGZpZWxkcyA9IGhhbmRsZUNyZWF0ZUZpZWxkcygpOworICAgICAgICBzdGFtcCA9IG5ldyBpbnRbZmllbGRzLmxlbmd0aF07CisgICAgICAgIGlzVGltZVNldCA9IHRydWU7CisgICAgICAgIGFyZUZpZWxkc1NldCA9IGFyZUFsbEZpZWxkc1NldCA9IGZhbHNlOworICAgICAgICBuZXh0U3RhbXAgPSBNSU5JTVVNX1VTRVJfU1RBTVA7CisgICAgfQorCisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBUaW1lIC0+IEZpZWxkcworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQ29udmVydHMgdGhlIGN1cnJlbnQgbWlsbGlzZWNvbmQgdGltZSB2YWx1ZSA8Y29kZT50aW1lPC9jb2RlPiB0bworICAgICAqIGZpZWxkIHZhbHVlcyBpbiA8Y29kZT5maWVsZHNbXTwvY29kZT4uICBUaGlzIHN5bmNocm9uaXplcyB0aGUgdGltZQorICAgICAqIGZpZWxkIHZhbHVlcyB3aXRoIGEgbmV3IHRpbWUgdGhhdCBpcyBzZXQgZm9yIHRoZSBjYWxlbmRhci4gIFRoZSB0aW1lCisgICAgICogaXMgPGVtPm5vdDwvZW0+IHJlY29tcHV0ZWQgZmlyc3Q7IHRvIHJlY29tcHV0ZSB0aGUgdGltZSwgdGhlbiB0aGUKKyAgICAgKiBmaWVsZHMsIGNhbGwgdGhlIDxjb2RlPmNvbXBsZXRlPC9jb2RlPiBtZXRob2QuCisgICAgICogQHNlZSAjY29tcGxldGUKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBjb21wdXRlRmllbGRzKCkgeworICAgICAgICBpbnQgcmF3T2Zmc2V0ID0gZ2V0VGltZVpvbmUoKS5nZXRSYXdPZmZzZXQoKTsKKyAgICAgICAgbG9uZyBsb2NhbE1pbGxpcyA9IHRpbWUgKyByYXdPZmZzZXQ7CisKKyAgICAgICAgLy8gTWFyayBmaWVsZHMgYXMgc2V0LiAgRG8gdGhpcyBiZWZvcmUgY2FsbGluZyBoYW5kbGVDb21wdXRlRmllbGRzKCkuCisgICAgICAgIGludCBtYXNrID0gaW50ZXJuYWxTZXRNYXNrOworICAgICAgICBmb3IgKGludCBpPTA7IGk8ZmllbGRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAoKG1hc2sgJiAxKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgc3RhbXBbaV0gPSBJTlRFUk5BTExZX1NFVDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3RhbXBbaV0gPSBVTlNFVDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1hc2sgPj49IDE7CisgICAgICAgIH0KKworICAgICAgICAvLyBXZSB1c2VkIHRvIGNoZWNrIGZvciBhbmQgY29ycmVjdCBleHRyZW1lIG1pbGxpcyB2YWx1ZXMgKG5lYXIKKyAgICAgICAgLy8gTG9uZy5NSU5fVkFMVUUgb3IgTG9uZy5NQVhfVkFMVUUpIGhlcmUuICBTdWNoIHZhbHVlcyB3b3VsZCBjYXVzZQorICAgICAgICAvLyBvdmVyZmxvd3MgZnJvbSBwb3NpdGl2ZSB0byBuZWdhdGl2ZSAob3IgdmljZSB2ZXJzYSkgYW5kIGhhZCB0bworICAgICAgICAvLyBiZSBtYW51YWxseSB0d2Vha2VkLiAgV2Ugbm8gbG9uZ2VyIG5lZWQgdG8gZG8gdGhpcyBiZWNhdXNlIHdlCisgICAgICAgIC8vIGhhdmUgbGltaXRlZCB0aGUgcmFuZ2Ugb2Ygc3VwcG9ydGVkIGRhdGVzIHRvIHRob3NlIHRoYXQgaGF2ZSBhCisgICAgICAgIC8vIEp1bGlhbiBkYXkgdGhhdCBmaXRzIGludG8gYW4gaW50LiAgVGhpcyBhbGxvd3MgdXMgdG8gaW1wbGVtZW50IGEKKyAgICAgICAgLy8gSlVMSUFOX0RBWSBmaWVsZCBhbmQgYWxzbyByZW1vdmVzIHNvbWUgaW5lbGVnYW50IGNvZGUuIC0gTGl1CisgICAgICAgIC8vIDExLzYvMDAKKworICAgICAgICBmaWVsZHNbSlVMSUFOX0RBWV0gPSAoaW50KSBmbG9vckRpdmlkZShsb2NhbE1pbGxpcywgT05FX0RBWSkgKworICAgICAgICAgICAgRVBPQ0hfSlVMSUFOX0RBWTsKKworICAgICAgICAvLyBJbiBzb21lIGNhc2VzIHdlIHdpbGwgaGF2ZSB0byBjYWxsIHRoaXMgbWV0aG9kIGFnYWluIGJlbG93IHRvCisgICAgICAgIC8vIGFkanVzdCBmb3IgRFNUIHB1c2hpbmcgdXMgaW50byB0aGUgbmV4dCBKdWxpYW4gZGF5LgorICAgICAgICBjb21wdXRlR3JlZ29yaWFuQW5kRE9XRmllbGRzKGZpZWxkc1tKVUxJQU5fREFZXSk7CisKKyAgICAgICAgbG9uZyBkYXlzID0gKGxvbmcpIChsb2NhbE1pbGxpcyAvIE9ORV9EQVkpOworICAgICAgICBpbnQgbWlsbGlzSW5EYXkgPSAoaW50KSAobG9jYWxNaWxsaXMgLSAoZGF5cyAqIE9ORV9EQVkpKTsKKyAgICAgICAgaWYgKG1pbGxpc0luRGF5IDwgMCkgbWlsbGlzSW5EYXkgKz0gT05FX0RBWTsKKworICAgICAgICAvLyBDYWxsIGdldE9mZnNldCgpIHRvIGdldCB0aGUgVGltZVpvbmUgb2Zmc2V0LiAgVGhlIG1pbGxpc0luRGF5IHZhbHVlCisgICAgICAgIC8vIG11c3QgYmUgX3N0YW5kYXJkXyBsb2NhbCB6b25lIG1pbGxpcy4KKyAgICAgICAgaW50IGRzdE9mZnNldCA9IGdldFRpbWVab25lKCkuZ2V0T2Zmc2V0KAorICAgICAgICAgICAgICAgIGdyZWdvcmlhblllYXIsIGdyZWdvcmlhbk1vbnRoLAorICAgICAgICAgICAgICAgIGdyZWdvcmlhbkRheU9mTW9udGgsCisgICAgICAgICAgICAgICAgZmllbGRzW0RBWV9PRl9XRUVLXSwKKyAgICAgICAgICAgICAgICBtaWxsaXNJbkRheSwKKyAgICAgICAgICAgICAgICBncmVnb3JpYW5Nb250aExlbmd0aChncmVnb3JpYW5ZZWFyLCBncmVnb3JpYW5Nb250aCksCisgICAgICAgICAgICAgICAgZ3JlZ29yaWFuUHJldmlvdXNNb250aExlbmd0aChncmVnb3JpYW5ZZWFyLCBncmVnb3JpYW5Nb250aCkpCisgICAgICAgICAgICAtIHJhd09mZnNldDsKKworICAgICAgICAvLyBBZGp1c3Qgb3VyIG1pbGxpc0luRGF5IGZvciBEU1QuICBkc3RPZmZzZXQgd2lsbCBiZSB6ZXJvIGlmIERTVAorICAgICAgICAvLyBpcyBub3QgaW4gZWZmZWN0IGF0IHRoaXMgdGltZSBvZiB5ZWFyLCBvciBpZiBvdXIgem9uZSBkb2VzIG5vdAorICAgICAgICAvLyB1c2UgRFNULgorICAgICAgICBtaWxsaXNJbkRheSArPSBkc3RPZmZzZXQ7CisKKyAgICAgICAgLy8gSWYgRFNUIGhhcyBwdXNoZWQgdXMgaW50byB0aGUgbmV4dCBkYXksIHdlIG11c3QgY2FsbAorICAgICAgICAvLyBjb21wdXRlR3JlZ29yaWFuQW5kRE9XRmllbGRzKCkgYWdhaW4uICBUaGlzIGhhcHBlbnMgaW4gRFNUIGJldHdlZW4KKyAgICAgICAgLy8gMTI6MDAgYW0gYW5kIDE6MDAgYW0gZXZlcnkgZGF5LiAgVGhlIGZpcnN0IGNhbGwgdG8KKyAgICAgICAgLy8gY29tcHV0ZUdyZWdvcmlhbkFuZERPV0ZpZWxkcygpIHdpbGwgZ2l2ZSB0aGUgd3JvbmcgZGF5LCBzaW5jZSB0aGUKKyAgICAgICAgLy8gU3RhbmRhcmQgdGltZSBpcyBpbiB0aGUgcHJldmlvdXMgZGF5LgorICAgICAgICBpZiAobWlsbGlzSW5EYXkgPj0gT05FX0RBWSkgeworICAgICAgICAgICAgbWlsbGlzSW5EYXkgLT0gT05FX0RBWTsgLy8gQVNTVU1FIGRzdE9mZnNldCA8IDI0OjAwCisKKyAgICAgICAgICAgIC8vIFdlIGRvbid0IHdvcnJ5IGFib3V0IG92ZXJmbG93IG9mIEpVTElBTl9EQVkgYmVjYXVzZSB0aGUKKyAgICAgICAgICAgIC8vIGFsbG93YWJsZSByYW5nZSBvZiBKVUxJQU5fREFZIGhhcyBzbG9wIGF0IHRoZSBlbmRzICh0aGF0IGlzLAorICAgICAgICAgICAgLy8gdGhlIG1heCBpcyBsZXNzIHRoYXQgMHg3RkZGRkZGRiBhbmQgdGhlIG1pbiBpcyBncmVhdGVyIHRoYW4KKyAgICAgICAgICAgIC8vIC0weDgwMDAwMDAwKS4KKyAgICAgICAgICAgIGNvbXB1dGVHcmVnb3JpYW5BbmRET1dGaWVsZHMoKytmaWVsZHNbSlVMSUFOX0RBWV0pOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ2FsbCBmcmFtZXdvcmsgbWV0aG9kIHRvIGhhdmUgc3ViY2xhc3MgY29tcHV0ZSBpdHMgZmllbGRzLgorICAgICAgICAvLyBUaGVzZSBtdXN0IGluY2x1ZGUsIGF0IGEgbWluaW11bSwgTU9OVEgsIERBWV9PRl9NT05USCwKKyAgICAgICAgLy8gRVhURU5ERURfWUVBUiwgWUVBUiwgREFZX09GX1lFQVIuICBUaGlzIG1ldGhvZCB3aWxsIGNhbGwgaW50ZXJuYWxTZXQoKSwKKyAgICAgICAgLy8gd2hpY2ggd2lsbCB1cGRhdGUgc3RhbXBbXS4KKyAgICAgICAgaGFuZGxlQ29tcHV0ZUZpZWxkcyhmaWVsZHNbSlVMSUFOX0RBWV0pOworCisgICAgICAgIC8vIENvbXB1dGUgd2Vlay1yZWxhdGVkIGZpZWxkcywgYmFzZWQgb24gdGhlIHN1YmNsYXNzLWNvbXB1dGVkCisgICAgICAgIC8vIGZpZWxkcyBjb21wdXRlZCBieSBoYW5kbGVDb21wdXRlRmllbGRzKCkuCisgICAgICAgIGNvbXB1dGVXZWVrRmllbGRzKCk7CisKKyAgICAgICAgLy8gQ29tcHV0ZSB0aW1lLXJlbGF0ZWQgZmllbGRzLiAgVGhlc2UgYXJlIGluZGVwZW50IG9mIHRoZSBkYXRlIGFuZAorICAgICAgICAvLyBvZiB0aGUgc3ViY2xhc3MgYWxnb3JpdGhtLiAgVGhleSBkZXBlbmQgb25seSBvbiB0aGUgbG9jYWwgem9uZQorICAgICAgICAvLyB3YWxsIG1pbGxpc2Vjb25kcyBpbiBkYXkuCisgICAgICAgIGZpZWxkc1tNSUxMSVNFQ09ORFNfSU5fREFZXSA9IG1pbGxpc0luRGF5OworICAgICAgICBmaWVsZHNbTUlMTElTRUNPTkRdID0gbWlsbGlzSW5EYXkgJSAxMDAwOworICAgICAgICBtaWxsaXNJbkRheSAvPSAxMDAwOworICAgICAgICBmaWVsZHNbU0VDT05EXSA9IG1pbGxpc0luRGF5ICUgNjA7CisgICAgICAgIG1pbGxpc0luRGF5IC89IDYwOworICAgICAgICBmaWVsZHNbTUlOVVRFXSA9IG1pbGxpc0luRGF5ICUgNjA7CisgICAgICAgIG1pbGxpc0luRGF5IC89IDYwOworICAgICAgICBmaWVsZHNbSE9VUl9PRl9EQVldID0gbWlsbGlzSW5EYXk7CisgICAgICAgIGZpZWxkc1tBTV9QTV0gPSBtaWxsaXNJbkRheSAvIDEyOyAvLyBBc3N1bWUgQU0gPT0gMAorICAgICAgICBmaWVsZHNbSE9VUl0gPSBtaWxsaXNJbkRheSAlIDEyOworICAgICAgICBmaWVsZHNbWk9ORV9PRkZTRVRdID0gcmF3T2Zmc2V0OworICAgICAgICBmaWVsZHNbRFNUX09GRlNFVF0gPSBkc3RPZmZzZXQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcHV0ZSB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyIHllYXIsIG1vbnRoLCBhbmQgZGF5IG9mIG1vbnRoIGZyb20KKyAgICAgKiB0aGUgZ2l2ZW4gSnVsaWFuIGRheS4gIFRoZXNlIHZhbHVlcyBhcmUgbm90IHN0b3JlZCBpbiBmaWVsZHMsIGJ1dCBpbgorICAgICAqIG1lbWJlciB2YXJpYWJsZXMgZ3JlZ29yaWFuWHh4LiAgQWxzbyBjb21wdXRlIHRoZSBEQVlfT0ZfV0VFSyBhbmQKKyAgICAgKiBET1dfTE9DQUwgZmllbGRzLgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgdm9pZCBjb21wdXRlR3JlZ29yaWFuQW5kRE9XRmllbGRzKGludCBqdWxpYW5EYXkpIHsKKyAgICAgICAgY29tcHV0ZUdyZWdvcmlhbkZpZWxkcyhqdWxpYW5EYXkpOworCisgICAgICAgIC8vIENvbXB1dGUgZGF5IG9mIHdlZWs6IEpEIDAgPSBNb25kYXkKKyAgICAgICAgaW50IGRvdyA9IGZpZWxkc1tEQVlfT0ZfV0VFS10gPSBqdWxpYW5EYXlUb0RheU9mV2VlayhqdWxpYW5EYXkpOworCisgICAgICAgIC8vIENhbGN1bGF0ZSAxLWJhc2VkIGxvY2FsaXplZCBkYXkgb2Ygd2VlaworICAgICAgICBpbnQgZG93TG9jYWwgPSBkb3cgLSBnZXRGaXJzdERheU9mV2VlaygpICsgMTsKKyAgICAgICAgaWYgKGRvd0xvY2FsIDwgMSkgeworICAgICAgICAgICAgZG93TG9jYWwgKz0gNzsKKyAgICAgICAgfQorICAgICAgICBmaWVsZHNbRE9XX0xPQ0FMXSA9IGRvd0xvY2FsOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBDb21wdXRlIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIgeWVhciwgbW9udGgsIGFuZCBkYXkgb2YgbW9udGggZnJvbSB0aGUKKyAgICAgKiBKdWxpYW4gZGF5LiAgVGhlc2UgdmFsdWVzIGFyZSBub3Qgc3RvcmVkIGluIGZpZWxkcywgYnV0IGluIG1lbWJlcgorICAgICAqIHZhcmlhYmxlcyBncmVnb3JpYW5YeHguICBUaGV5IGFyZSB1c2VkIGZvciB0aW1lIHpvbmUgY29tcHV0YXRpb25zIGFuZCBieQorICAgICAqIHN1YmNsYXNzZXMgdGhhdCBhcmUgR3JlZ29yaWFuIGRlcml2YXRpdmVzLiAgU3ViY2xhc3NlcyBtYXkgY2FsbCB0aGlzCisgICAgICogbWV0aG9kIHRvIHBlcmZvcm0gYSBHcmVnb3JpYW4gY2FsZW5kYXIgbWlsbGlzLT5maWVsZHMgY29tcHV0YXRpb24uCisgICAgICogVG8gcGVyZm9ybSBhIEdyZWdvcmlhbiBjYWxlbmRhciBmaWVsZHMtPm1pbGxpcyBjb21wdXRhdGlvbiwgY2FsbAorICAgICAqIGNvbXB1dGVHcmVnb3JpYW5Nb250aFN0YXJ0KCkuCisgICAgICogQHNlZSAjY29tcHV0ZUdyZWdvcmlhbk1vbnRoU3RhcnQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgZmluYWwgdm9pZCBjb21wdXRlR3JlZ29yaWFuRmllbGRzKGludCBqdWxpYW5EYXkpIHsKKyAgICAgICAgaW50IHllYXIsIG1vbnRoLCBkYXlPZk1vbnRoLCBkYXlPZlllYXI7CisKKyAgICAgICAgLy8gVGhlIEdyZWdvcmlhbiBlcG9jaCBkYXkgaXMgemVybyBmb3IgTW9uZGF5IEphbnVhcnkgMSwgeWVhciAxLgorICAgICAgICBsb25nIGdyZWdvcmlhbkVwb2NoRGF5ID0ganVsaWFuRGF5IC0gSkFOXzFfMV9KVUxJQU5fREFZOworCisgICAgICAgIC8vIEhlcmUgd2UgY29udmVydCBmcm9tIHRoZSBkYXkgbnVtYmVyIHRvIHRoZSBtdWx0aXBsZSByYWRpeAorICAgICAgICAvLyByZXByZXNlbnRhdGlvbi4gIFdlIHVzZSA0MDAteWVhciwgMTAwLXllYXIsIGFuZCA0LXllYXIgY3ljbGVzLgorICAgICAgICAvLyBGb3IgZXhhbXBsZSwgdGhlIDQteWVhciBjeWNsZSBoYXMgNCB5ZWFycyArIDEgbGVhcCBkYXk7IGdpdmluZworICAgICAgICAvLyAxNDYxID09IDM2NSo0ICsgMSBkYXlzLgorICAgICAgICBpbnRbXSByZW0gPSBuZXcgaW50WzFdOworICAgICAgICBpbnQgbjQwMCA9IGZsb29yRGl2aWRlKGdyZWdvcmlhbkVwb2NoRGF5LCAxNDYwOTcsIHJlbSk7IC8vIDQwMC15ZWFyIGN5Y2xlIGxlbmd0aAorICAgICAgICBpbnQgbjEwMCA9IGZsb29yRGl2aWRlKHJlbVswXSwgMzY1MjQsIHJlbSk7IC8vIDEwMC15ZWFyIGN5Y2xlIGxlbmd0aAorICAgICAgICBpbnQgbjQgPSBmbG9vckRpdmlkZShyZW1bMF0sIDE0NjEsIHJlbSk7IC8vIDQteWVhciBjeWNsZSBsZW5ndGgKKyAgICAgICAgaW50IG4xID0gZmxvb3JEaXZpZGUocmVtWzBdLCAzNjUsIHJlbSk7CisgICAgICAgIHllYXIgPSA0MDAqbjQwMCArIDEwMCpuMTAwICsgNCpuNCArIG4xOworICAgICAgICBkYXlPZlllYXIgPSByZW1bMF07IC8vIHplcm8tYmFzZWQgZGF5IG9mIHllYXIKKyAgICAgICAgaWYgKG4xMDAgPT0gNCB8fCBuMSA9PSA0KSB7CisgICAgICAgICAgICBkYXlPZlllYXIgPSAzNjU7IC8vIERlYyAzMSBhdCBlbmQgb2YgNC0gb3IgNDAwLXlyIGN5Y2xlCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICArK3llYXI7CisgICAgICAgIH0KKworICAgICAgICBib29sZWFuIGlzTGVhcCA9ICgoeWVhciYweDMpID09IDApICYmIC8vIGVxdWl2LiB0byAoeWVhciU0ID09IDApCisgICAgICAgICAgICAoeWVhciUxMDAgIT0gMCB8fCB5ZWFyJTQwMCA9PSAwKTsKKworICAgICAgICBpbnQgY29ycmVjdGlvbiA9IDA7CisgICAgICAgIGludCBtYXJjaDEgPSBpc0xlYXAgPyA2MCA6IDU5OyAvLyB6ZXJvLWJhc2VkIERPWSBmb3IgTWFyY2ggMQorICAgICAgICBpZiAoZGF5T2ZZZWFyID49IG1hcmNoMSkgY29ycmVjdGlvbiA9IGlzTGVhcCA/IDEgOiAyOworICAgICAgICBtb250aCA9ICgxMiAqIChkYXlPZlllYXIgKyBjb3JyZWN0aW9uKSArIDYpIC8gMzY3OyAvLyB6ZXJvLWJhc2VkIG1vbnRoCisgICAgICAgIGRheU9mTW9udGggPSBkYXlPZlllYXIgLQorICAgICAgICAgICAgR1JFR09SSUFOX01PTlRIX0NPVU5UW21vbnRoXVtpc0xlYXA/MzoyXSArIDE7IC8vIG9uZS1iYXNlZCBET00KKworICAgICAgICBncmVnb3JpYW5ZZWFyID0geWVhcjsKKyAgICAgICAgZ3JlZ29yaWFuTW9udGggPSBtb250aDsgLy8gMC1iYXNlZCBhbHJlYWR5CisgICAgICAgIGdyZWdvcmlhbkRheU9mTW9udGggPSBkYXlPZk1vbnRoOyAvLyAxLWJhc2VkIGFscmVhZHkKKyAgICAgICAgZ3JlZ29yaWFuRGF5T2ZZZWFyID0gZGF5T2ZZZWFyICsgMTsgLy8gQ29udmVydCBmcm9tIDAtYmFzZWQgdG8gMS1iYXNlZAorICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXB1dGUgdGhlIGZpZWxkcyBXRUVLX09GX1lFQVIsIFlFQVJfV09ZLCBXRUVLX09GX01PTlRILAorICAgICAqIERBWV9PRl9XRUVLX0lOX01PTlRILCBhbmQgRE9XX0xPQ0FMIGZyb20gRVhURU5ERURfWUVBUiwgWUVBUiwKKyAgICAgKiBEQVlfT0ZfV0VFSywgYW5kIERBWV9PRl9ZRUFSLiAgVGhlIGxhdHRlciBmaWVsZHMgYXJlIGNvbXB1dGVkIGJ5IHRoZQorICAgICAqIHN1YmNsYXNzIGJhc2VkIG9uIHRoZSBjYWxlbmRhciBzeXN0ZW0uCisgICAgICoKKyAgICAgKiA8cD5UaGUgWUVBUl9XT1kgZmllbGQgaXMgY29tcHV0ZWQgc2ltcGxpc3RpY2FsbHkuICBJdCBpcyBlcXVhbCB0byBZRUFSCisgICAgICogbW9zdCBvZiB0aGUgdGltZSwgYnV0IGF0IHRoZSB5ZWFyIGJvdW5kYXJ5IGl0IG1heSBiZSBhZGp1c3RlZCB0byBZRUFSLTEKKyAgICAgKiBvciBZRUFSKzEgdG8gcmVmbGVjdCB0aGUgb3ZlcmxhcCBvZiBhIHdlZWsgaW50byBhbiBhZGphY2VudCB5ZWFyLiAgSW4KKyAgICAgKiB0aGlzIGNhc2UsIGEgc2ltcGxlIGluY3JlbWVudCBvciBkZWNyZW1lbnQgaXMgcGVyZm9ybWVkIG9uIFlFQVIsIGV2ZW4KKyAgICAgKiB0aG91Z2ggdGhpcyBtYXkgeWllbGQgYW4gaW52YWxpZCBZRUFSIHZhbHVlLiAgRm9yIGluc3RhbmNlLCBpZiB0aGUgWUVBUgorICAgICAqIGlzIHBhcnQgb2YgYSBjYWxlbmRhciBzeXN0ZW0gd2l0aCBhbiBOLXllYXIgY3ljbGUgZmllbGQgQ1lDTEUsIHRoZW4KKyAgICAgKiBpbmNyZW1lbnRpbmcgdGhlIFlFQVIgbWF5IGludm9sdmUgaW5jcmVtZW50aW5nIENZQ0xFIGFuZCBzZXR0aW5nIFlFQVIKKyAgICAgKiBiYWNrIHRvIDAgb3IgMS4gIFRoaXMgaXMgbm90IGhhbmRsZWQgYnkgdGhpcyBjb2RlLCBhbmQgaW4gZmFjdCBjYW5ub3QgYmUKKyAgICAgKiBzaW1wbHkgaGFuZGxlZCB3aXRob3V0IGhhdmluZyBzdWJjbGFzc2VzIGRlZmluZSBhbiBlbnRpcmUgcGFyYWxsZWwgc2V0IG9mCisgICAgICogZmllbGRzIGZvciBmaWVsZHMgbGFyZ2VyIHRoYW4gb3IgZXF1YWwgdG8gYSB5ZWFyLiAgVGhpcyBhZGRpdGlvbmFsCisgICAgICogY29tcGxleGl0eSBpcyBub3Qgd2FycmFudGVkLCBzaW5jZSB0aGUgaW50ZW50aW9uIG9mIHRoZSBZRUFSX1dPWSBmaWVsZCBpcworICAgICAqIHRvIHN1cHBvcnQgSVNPIDg2MDEgbm90YXRpb24sIHNvIGl0IHdpbGwgdHlwaWNhbGx5IGJlIHVzZWQgd2l0aCBhCisgICAgICogcHJvbGVwdGljIEdyZWdvcmlhbiBjYWxlbmRhciwgd2hpY2ggaGFzIG5vIGZpZWxkIGxhcmdlciB0aGFuIGEgeWVhci4KKyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgY29tcHV0ZVdlZWtGaWVsZHMoKSB7CisgICAgICAgIGludCBleWVhciA9IGZpZWxkc1tFWFRFTkRFRF9ZRUFSXTsKKyAgICAgICAgaW50IHllYXIgPSBmaWVsZHNbWUVBUl07CisgICAgICAgIGludCBkYXlPZldlZWsgPSBmaWVsZHNbREFZX09GX1dFRUtdOworICAgICAgICBpbnQgZGF5T2ZZZWFyID0gZmllbGRzW0RBWV9PRl9ZRUFSXTsKKworICAgICAgICAvLyBXRUVLX09GX1lFQVIgc3RhcnQKKyAgICAgICAgLy8gQ29tcHV0ZSB0aGUgd2VlayBvZiB0aGUgeWVhci4gIEZvciB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyLCB2YWxpZCB3ZWVrCisgICAgICAgIC8vIG51bWJlcnMgcnVuIGZyb20gMSB0byA1MiBvciA1MywgZGVwZW5kaW5nIG9uIHRoZSB5ZWFyLCB0aGUgZmlyc3QgZGF5CisgICAgICAgIC8vIG9mIHRoZSB3ZWVrLCBhbmQgdGhlIG1pbmltYWwgZGF5cyBpbiB0aGUgZmlyc3Qgd2Vlay4gIEZvciBvdGhlcgorICAgICAgICAvLyBjYWxlbmRhcnMsIHRoZSB2YWxpZCByYW5nZSBtYXkgYmUgZGlmZmVyZW50IC0tIGl0IGRlcGVuZHMgb24gdGhlIHllYXIKKyAgICAgICAgLy8gbGVuZ3RoLiAgRGF5cyBhdCB0aGUgc3RhcnQgb2YgdGhlIHllYXIgbWF5IGZhbGwgaW50byB0aGUgbGFzdCB3ZWVrIG9mCisgICAgICAgIC8vIHRoZSBwcmV2aW91cyB5ZWFyOyBkYXlzIGF0IHRoZSBlbmQgb2YgdGhlIHllYXIgbWF5IGZhbGwgaW50byB0aGUKKyAgICAgICAgLy8gZmlyc3Qgd2VlayBvZiB0aGUgbmV4dCB5ZWFyLiAgQVNTVU1FIHRoYXQgdGhlIHllYXIgbGVuZ3RoIGlzIGxlc3MgdGhhbgorICAgICAgICAvLyA3MDAwIGRheXMuCisgICAgICAgIGludCB5ZWFyT2ZXZWVrT2ZZZWFyID0geWVhcjsKKyAgICAgICAgaW50IHJlbERvdyA9IChkYXlPZldlZWsgKyA3IC0gZ2V0Rmlyc3REYXlPZldlZWsoKSkgJSA3OyAvLyAwLi42CisgICAgICAgIGludCByZWxEb3dKYW4xID0gKGRheU9mV2VlayAtIGRheU9mWWVhciArIDcwMDEgLSBnZXRGaXJzdERheU9mV2VlaygpKSAlIDc7IC8vIDAuLjYKKyAgICAgICAgaW50IHdveSA9IChkYXlPZlllYXIgLSAxICsgcmVsRG93SmFuMSkgLyA3OyAvLyAwLi41MworICAgICAgICBpZiAoKDcgLSByZWxEb3dKYW4xKSA+PSBnZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKCkpIHsKKyAgICAgICAgICAgICsrd295OworICAgICAgICB9CisKKyAgICAgICAgLy8gQWRqdXN0IGZvciB3ZWVrcyBhdCB0aGUgeWVhciBlbmQgdGhhdCBvdmVybGFwIGludG8gdGhlIHByZXZpb3VzIG9yCisgICAgICAgIC8vIG5leHQgY2FsZW5kYXIgeWVhci4KKyAgICAgICAgaWYgKHdveSA9PSAwKSB7CisgICAgICAgICAgICAvLyBXZSBhcmUgdGhlIGxhc3Qgd2VlayBvZiB0aGUgcHJldmlvdXMgeWVhci4KKyAgICAgICAgICAgIC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBhcmUgaW4gdGhlIGxhc3Qgd2VlazsgaWYgc28sIHdlIG5lZWQKKyAgICAgICAgICAgIC8vIHRvIGhhbmRsZSB0aGUgY2FzZSBpbiB3aGljaCB3ZSBhcmUgdGhlIGZpcnN0IHdlZWsgb2YgdGhlCisgICAgICAgICAgICAvLyBuZXh0IHllYXIuCisKKyAgICAgICAgICAgIGludCBwcmV2RG95ID0gZGF5T2ZZZWFyICsgaGFuZGxlR2V0WWVhckxlbmd0aChleWVhciAtIDEpOworICAgICAgICAgICAgd295ID0gd2Vla051bWJlcihwcmV2RG95LCBkYXlPZldlZWspOworICAgICAgICAgICAgeWVhck9mV2Vla09mWWVhci0tOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaW50IGxhc3REb3kgPSBoYW5kbGVHZXRZZWFyTGVuZ3RoKGV5ZWFyKTsKKyAgICAgICAgICAgIC8vIEZhc3QgY2hlY2s6IEZvciBpdCB0byBiZSB3ZWVrIDEgb2YgdGhlIG5leHQgeWVhciwgdGhlIERPWQorICAgICAgICAgICAgLy8gbXVzdCBiZSBvbiBvciBhZnRlciBMLTUsIHdoZXJlIEwgaXMgeWVhckxlbmd0aCgpLCB0aGVuIGl0CisgICAgICAgICAgICAvLyBjYW5ub3QgcG9zc2libHkgYmUgd2VlayAxIG9mIHRoZSBuZXh0IHllYXI6CisgICAgICAgICAgICAvLyAgICAgICAgICBMLTUgICAgICAgICAgICAgICAgICBMCisgICAgICAgICAgICAvLyBkb3k6IDM1OSAzNjAgMzYxIDM2MiAzNjMgMzY0IDM2NSAwMDEKKyAgICAgICAgICAgIC8vIGRvdzogICAgICAxICAgMiAgIDMgICA0ICAgNSAgIDYgICA3CisgICAgICAgICAgICBpZiAoZGF5T2ZZZWFyID49IChsYXN0RG95IC0gNSkpIHsKKyAgICAgICAgICAgICAgICBpbnQgbGFzdFJlbERvdyA9IChyZWxEb3cgKyBsYXN0RG95IC0gZGF5T2ZZZWFyKSAlIDc7CisgICAgICAgICAgICAgICAgaWYgKGxhc3RSZWxEb3cgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIGxhc3RSZWxEb3cgKz0gNzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCgoNiAtIGxhc3RSZWxEb3cpID49IGdldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsoKSkgJiYKKyAgICAgICAgICAgICAgICAgICAgKChkYXlPZlllYXIgKyA3IC0gcmVsRG93KSA+IGxhc3REb3kpKSB7CisgICAgICAgICAgICAgICAgICAgIHdveSA9IDE7CisgICAgICAgICAgICAgICAgICAgIHllYXJPZldlZWtPZlllYXIrKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZmllbGRzW1dFRUtfT0ZfWUVBUl0gPSB3b3k7CisgICAgICAgIGZpZWxkc1tZRUFSX1dPWV0gPSB5ZWFyT2ZXZWVrT2ZZZWFyOworICAgICAgICAvLyBXRUVLX09GX1lFQVIgZW5kCisKKyAgICAgICAgaW50IGRheU9mTW9udGggPSBmaWVsZHNbREFZX09GX01PTlRIXTsKKyAgICAgICAgZmllbGRzW1dFRUtfT0ZfTU9OVEhdID0gd2Vla051bWJlcihkYXlPZk1vbnRoLCBkYXlPZldlZWspOworICAgICAgICBmaWVsZHNbREFZX09GX1dFRUtfSU5fTU9OVEhdID0gKGRheU9mTW9udGgtMSkgLyA3ICsgMTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBGaWVsZHMgLT4gVGltZQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogVmFsdWUgdG8gT1IgYWdhaW5zdCByZXNvbHZlIHRhYmxlIGZpZWxkIHZhbHVlcyBmb3IgcmVtYXBwaW5nLgorICAgICAqIEBzZWUgI3Jlc29sdmVGaWVsZHMKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBSRVNPTFZFX1JFTUFQID0gMzI7CisgICAgLy8gQSBwb3dlciBvZiAyIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBNQVhfRklFTERfQ09VTlQKKworICAgIC8vIERlZmF1bHQgdGFibGUgZm9yIGRheSBpbiB5ZWFyCisgICAgc3RhdGljIGZpbmFsIGludFtdW11bXSBEQVRFX1BSRUNFREVOQ0UgPSB7CisgICAgICAgIHsKKyAgICAgICAgICAgIHsgREFZX09GX01PTlRIIH0sCisgICAgICAgICAgICB7IFdFRUtfT0ZfWUVBUiwgREFZX09GX1dFRUsgfSwKKyAgICAgICAgICAgIHsgV0VFS19PRl9NT05USCwgREFZX09GX1dFRUsgfSwKKyAgICAgICAgICAgIHsgREFZX09GX1dFRUtfSU5fTU9OVEgsIERBWV9PRl9XRUVLIH0sCisgICAgICAgICAgICB7IFdFRUtfT0ZfWUVBUiwgRE9XX0xPQ0FMIH0sCisgICAgICAgICAgICB7IFdFRUtfT0ZfTU9OVEgsIERPV19MT0NBTCB9LAorICAgICAgICAgICAgeyBEQVlfT0ZfV0VFS19JTl9NT05USCwgRE9XX0xPQ0FMIH0sCisgICAgICAgICAgICB7IERBWV9PRl9ZRUFSIH0sCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIHsgV0VFS19PRl9ZRUFSIH0sCisgICAgICAgICAgICB7IFdFRUtfT0ZfTU9OVEggfSwKKyAgICAgICAgICAgIHsgREFZX09GX1dFRUtfSU5fTU9OVEggfSwKKyAgICAgICAgICAgIHsgUkVTT0xWRV9SRU1BUCB8IERBWV9PRl9XRUVLX0lOX01PTlRILCBEQVlfT0ZfV0VFSyB9LAorICAgICAgICAgICAgeyBSRVNPTFZFX1JFTUFQIHwgREFZX09GX1dFRUtfSU5fTU9OVEgsIERPV19MT0NBTCB9LAorICAgICAgICB9LAorICAgIH07CisKKyAgICBzdGF0aWMgZmluYWwgaW50W11bXVtdIERPV19QUkVDRURFTkNFID0geworICAgICAgICB7CisgICAgICAgICAgICB7IERBWV9PRl9XRUVLIH0sCisgICAgICAgICAgICB7IERPV19MT0NBTCB9LAorICAgICAgICB9LAorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBHaXZlbiBhIHByZWNlZGVuY2UgdGFibGUsIHJldHVybiB0aGUgbmV3ZXN0IGZpZWxkIGNvbWJpbmF0aW9uIGluCisgICAgICogdGhlIHRhYmxlLCBvciAtMSBpZiBub25lIGlzIGZvdW5kLgorICAgICAqCisgICAgICogPHA+VGhlIHByZWNlZGVuY2UgdGFibGUgaXMgYSAzLWRpbWVuc2lvbmFsIGFycmF5IG9mIGludGVnZXJzLiAgSXQKKyAgICAgKiBtYXkgYmUgdGhvdWdodCBvZiBhcyBhbiBhcnJheSBvZiBncm91cHMuICBFYWNoIGdyb3VwIGlzIGFuIGFycmF5IG9mCisgICAgICogbGluZXMuICBFYWNoIGxpbmUgaXMgYW4gYXJyYXkgb2YgZmllbGQgbnVtYmVycy4gIFdpdGhpbiBhIGxpbmUsIGlmCisgICAgICogYWxsIGZpZWxkcyBhcmUgc2V0LCB0aGVuIHRoZSB0aW1lIHN0YW1wIG9mIHRoZSBsaW5lIGlzIHRha2VuIHRvIGJlCisgICAgICogdGhlIHN0YW1wIG9mIHRoZSBtb3N0IHJlY2VudGx5IHNldCBmaWVsZC4gIElmIGFueSBmaWVsZCBvZiBhIGxpbmUgaXMKKyAgICAgKiB1bnNldCwgdGhlbiB0aGUgbGluZSBmYWlscyB0byBtYXRjaC4gIFdpdGhpbiBhIGdyb3VwLCB0aGUgbGluZSB3aXRoCisgICAgICogdGhlIG5ld2VzdCB0aW1lIHN0YW1wIGlzIHNlbGVjdGVkLiAgVGhlIGZpcnN0IGZpZWxkIG9mIHRoZSBsaW5lIGlzCisgICAgICogcmV0dXJuZWQgdG8gaW5kaWNhdGUgd2hpY2ggbGluZSBtYXRjaGVkLgorICAgICAqCisgICAgICogPHA+SW4gc29tZSBjYXNlcywgaXQgbWF5IGJlIGRlc2lyYWJsZSB0byBtYXAgYSBsaW5lIHRvIGZpZWxkIHRoYXQKKyAgICAgKiB3aG9zZSBzdGFtcCBpcyBOT1QgZXhhbWluZWQuICBGb3IgZXhhbXBsZSwgaWYgdGhlIGJlc3QgZmllbGQgaXMKKyAgICAgKiBEQVlfT0ZfV0VFSyB0aGVuIHRoZSBEQVlfT0ZfV0VFS19JTl9NT05USCBhbGdvcml0aG0gbWF5IGJlIHVzZWQuICBJbgorICAgICAqIG9yZGVyIHRvIGRvIHRoaXMsIGluc2VydCB0aGUgdmFsdWUgPGNvZGU+UkVNQVBfUkVTT0xWRSB8IEY8L2NvZGU+IGF0CisgICAgICogdGhlIHN0YXJ0IG9mIHRoZSBsaW5lLCB3aGVyZSA8Y29kZT5GPC9jb2RlPiBpcyB0aGUgZGVzaXJlZCByZXR1cm4KKyAgICAgKiBmaWVsZCB2YWx1ZS4gIFRoaXMgZmllbGQgd2lsbCBOT1QgYmUgZXhhbWluZWQ7IGl0IG9ubHkgZGV0ZXJtaW5lcworICAgICAqIHRoZSByZXR1cm4gdmFsdWUgaWYgdGhlIG90aGVyIGZpZWxkcyBpbiB0aGUgbGluZSBhcmUgdGhlIG5ld2VzdC4KKyAgICAgKgorICAgICAqIDxwPklmIGFsbCBsaW5lcyBvZiBhIGdyb3VwIGNvbnRhaW4gYXQgbGVhc3Qgb25lIHVuc2V0IGZpZWxkLCB0aGVuIG5vCisgICAgICogbGluZSB3aWxsIG1hdGNoLCBhbmQgdGhlIGdyb3VwIGFzIGEgd2hvbGUgd2lsbCBmYWlsIHRvIG1hdGNoLiAgSW4KKyAgICAgKiB0aGF0IGNhc2UsIHRoZSBuZXh0IGdyb3VwIHdpbGwgYmUgcHJvY2Vzc2VkLiAgSWYgYWxsIGdyb3VwcyBmYWlsIHRvCisgICAgICogbWF0Y2gsIHRoZW4gLTEgaXMgcmV0dXJuZWQuCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCByZXNvbHZlRmllbGRzKGludFtdW11bXSBwcmVjZWRlbmNlVGFibGUpIHsKKyAgICAgICAgaW50IGJlc3RGaWVsZCA9IC0xOworICAgICAgICBmb3IgKGludCBnPTA7IGc8cHJlY2VkZW5jZVRhYmxlLmxlbmd0aCAmJiBiZXN0RmllbGQgPCAwOyArK2cpIHsKKyAgICAgICAgICAgIGludFtdW10gZ3JvdXAgPSBwcmVjZWRlbmNlVGFibGVbZ107CisgICAgICAgICAgICBpbnQgYmVzdFN0YW1wID0gVU5TRVQ7CisgICAgICAgIGxpbmVzSW5Hcm91cDoKKyAgICAgICAgICAgIGZvciAoaW50IGw9MDsgbDxncm91cC5sZW5ndGg7ICsrbCkgeworICAgICAgICAgICAgICAgIGludFtdIGxpbmU9IGdyb3VwW2xdOworICAgICAgICAgICAgICAgIGludCBsaW5lU3RhbXAgPSBVTlNFVDsKKyAgICAgICAgICAgICAgICAvLyBTa2lwIG92ZXIgZmlyc3QgZW50cnkgaWYgaXQgaXMgbmVnYXRpdmUKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpPShsaW5lWzBdPj1SRVNPTFZFX1JFTUFQKT8xOjA7IGk8bGluZS5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpbnQgcyA9IHN0YW1wW2xpbmVbaV1dOworICAgICAgICAgICAgICAgICAgICAvLyBJZiBhbnkgZmllbGQgaXMgdW5zZXQgdGhlbiBkb24ndCB1c2UgdGhpcyBsaW5lCisgICAgICAgICAgICAgICAgICAgIGlmIChzID09IFVOU0VUKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZSBsaW5lc0luR3JvdXA7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsaW5lU3RhbXAgPSBNYXRoLm1heChsaW5lU3RhbXAsIHMpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIFJlY29yZCBuZXcgbWF4aW11bSBzdGFtcCAmIGZpZWxkIG5vLgorICAgICAgICAgICAgICAgIGlmIChsaW5lU3RhbXAgPiBiZXN0U3RhbXApIHsKKyAgICAgICAgICAgICAgICAgICAgYmVzdFN0YW1wID0gbGluZVN0YW1wOworICAgICAgICAgICAgICAgICAgICBiZXN0RmllbGQgPSBsaW5lWzBdOyAvLyBGaXJzdCBmaWVsZCByZWZlcnMgdG8gZW50aXJlIGxpbmUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIChiZXN0RmllbGQ+PVJFU09MVkVfUkVNQVApPyhiZXN0RmllbGQmKFJFU09MVkVfUkVNQVAtMSkpOmJlc3RGaWVsZDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG5ld2VzdCBzdGFtcCBvZiBhIGdpdmVuIHJhbmdlIG9mIGZpZWxkcy4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IG5ld2VzdFN0YW1wKGludCBmaXJzdCwgaW50IGxhc3QsIGludCBiZXN0U3RhbXBTb0ZhcikgeworICAgICAgICBpbnQgYmVzdFN0YW1wID0gYmVzdFN0YW1wU29GYXI7CisgICAgICAgIGZvciAoaW50IGk9Zmlyc3Q7IGk8PWxhc3Q7ICsraSkgeworICAgICAgICAgICAgaWYgKHN0YW1wW2ldID4gYmVzdFN0YW1wKSB7CisgICAgICAgICAgICAgICAgYmVzdFN0YW1wID0gc3RhbXBbaV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJlc3RTdGFtcDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHRpbWVzdGFtcCBvZiBhIGZpZWxkLgorICAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCBpbnQgZ2V0U3RhbXAoaW50IGZpZWxkKSB7CisgICAgICAgIHJldHVybiBzdGFtcFtmaWVsZF07CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgZmllbGQgdGhhdCBpcyBuZXdlciwgZWl0aGVyIGRlZmF1bHRGaWVsZCwgb3IKKyAgICAgKiBhbHRlcm5hdGVGaWVsZC4gIElmIG5laXRoZXIgaXMgbmV3ZXIgb3IgbmVpdGhlciBpcyBzZXQsIHJldHVybiBkZWZhdWx0RmllbGQuCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBuZXdlckZpZWxkKGludCBkZWZhdWx0RmllbGQsIGludCBhbHRlcm5hdGVGaWVsZCkgeworICAgICAgICBpZiAoc3RhbXBbYWx0ZXJuYXRlRmllbGRdID4gc3RhbXBbZGVmYXVsdEZpZWxkXSkgeworICAgICAgICAgICAgcmV0dXJuIGFsdGVybmF0ZUZpZWxkOworICAgICAgICB9CisgICAgICAgIHJldHVybiBkZWZhdWx0RmllbGQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogRW5zdXJlIHRoYXQgZWFjaCBmaWVsZCBpcyB3aXRoaW4gaXRzIHZhbGlkIHJhbmdlIGJ5IGNhbGxpbmcge0BsaW5rCisgICAgICogI3ZhbGlkYXRlRmllbGQoaW50KX0gb24gZWFjaCBmaWVsZCB0aGF0IGhhcyBiZWVuIHNldC4gIFRoaXMgbWV0aG9kCisgICAgICogc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIHRoaXMgY2FsZW5kYXIgaXMgbm90IGxlbmllbnQuCisgICAgICogQHNlZSAjaXNMZW5pZW50CisgICAgICogQHNlZSAjdmFsaWRhdGVGaWVsZChpbnQpCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgdmFsaWRhdGVGaWVsZHMoKSB7CisgICAgICAgIGZvciAoaW50IGZpZWxkID0gMDsgZmllbGQgPCBmaWVsZHMubGVuZ3RoOyBmaWVsZCsrKSB7CisgICAgICAgICAgICBpZiAoaXNTZXQoZmllbGQpKSB7CisgICAgICAgICAgICAgICAgdmFsaWRhdGVGaWVsZChmaWVsZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBWYWxpZGF0ZSBhIHNpbmdsZSBmaWVsZCBvZiB0aGlzIGNhbGVuZGFyLiAgU3ViY2xhc3NlcyBzaG91bGQKKyAgICAgKiBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byB2YWxpZGF0ZSBhbnkgY2FsZW5kYXItc3BlY2lmaWMgZmllbGRzLgorICAgICAqIEdlbmVyaWMgZmllbGRzIGNhbiBiZSBoYW5kbGVkIGJ5CisgICAgICogPGNvZGU+Q2FsZW5kYXIudmFsaWRhdGVGaWVsZCgpPC9jb2RlPi4KKyAgICAgKiBAc2VlICN2YWxpZGF0ZUZpZWxkKGludCwgaW50LCBpbnQpCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgdmFsaWRhdGVGaWVsZChpbnQgZmllbGQpIHsKKyAgICAgICAgaW50IHk7CisgICAgICAgIHN3aXRjaCAoZmllbGQpIHsKKyAgICAgICAgY2FzZSBEQVlfT0ZfTU9OVEg6CisgICAgICAgICAgICB5ID0gaGFuZGxlR2V0RXh0ZW5kZWRZZWFyKCk7CisgICAgICAgICAgICB2YWxpZGF0ZUZpZWxkKGZpZWxkLCAxLCBoYW5kbGVHZXRNb250aExlbmd0aCh5LCBpbnRlcm5hbEdldChNT05USCkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERBWV9PRl9ZRUFSOgorICAgICAgICAgICAgeSA9IGhhbmRsZUdldEV4dGVuZGVkWWVhcigpOworICAgICAgICAgICAgdmFsaWRhdGVGaWVsZChmaWVsZCwgMSwgaGFuZGxlR2V0WWVhckxlbmd0aCh5KSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEQVlfT0ZfV0VFS19JTl9NT05USDoKKyAgICAgICAgICAgIGlmIChpbnRlcm5hbEdldChmaWVsZCkgPT0gMCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkRBWV9PRl9XRUVLX0lOX01PTlRIIGNhbm5vdCBiZSB6ZXJvIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YWxpZGF0ZUZpZWxkKGZpZWxkLCBnZXRNaW5pbXVtKGZpZWxkKSwgZ2V0TWF4aW11bShmaWVsZCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICB2YWxpZGF0ZUZpZWxkKGZpZWxkLCBnZXRNaW5pbXVtKGZpZWxkKSwgZ2V0TWF4aW11bShmaWVsZCkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBWYWxpZGF0ZSBhIHNpbmdsZSBmaWVsZCBvZiB0aGlzIGNhbGVuZGFyIGdpdmVuIGl0cyBtaW5pbXVtIGFuZAorICAgICAqIG1heGltdW0gYWxsb3dlZCB2YWx1ZS4gIElmIHRoZSBmaWVsZCBpcyBvdXQgb2YgcmFuZ2UsIHRocm93IGEKKyAgICAgKiBkZXNjcmlwdGl2ZSA8Y29kZT5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb248L2NvZGU+LiAgU3ViY2xhc3NlcyBtYXkKKyAgICAgKiB1c2UgdGhpcyBtZXRob2QgaW4gdGhlaXIgaW1wbGVtZW50YXRpb24gb2Yge0BsaW5rCisgICAgICogI3ZhbGlkYXRlRmllbGQoaW50KX0uCisgICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgdmFsaWRhdGVGaWVsZChpbnQgZmllbGQsIGludCBtaW4sIGludCBtYXgpIHsKKyAgICAgICAgaW50IHZhbHVlID0gZmllbGRzW2ZpZWxkXTsKKyAgICAgICAgaWYgKHZhbHVlIDwgbWluIHx8IHZhbHVlID4gbWF4KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKGZpZWxkTmFtZShmaWVsZCkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnPScgKyB2YWx1ZSArICIsIHZhbGlkIHJhbmdlPSIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4gKyAiLi4iICsgbWF4KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlcnRzIHRoZSBjdXJyZW50IGZpZWxkIHZhbHVlcyBpbiA8Y29kZT5maWVsZHNbXTwvY29kZT4gdG8gdGhlCisgICAgICogbWlsbGlzZWNvbmQgdGltZSB2YWx1ZSA8Y29kZT50aW1lPC9jb2RlPi4KKyAgICAgKi8KKyAgIHByb3RlY3RlZCB2b2lkIGNvbXB1dGVUaW1lKCkgeworICAgICAgICBpZiAoIWlzTGVuaWVudCgpKSB7CisgICAgICAgICAgICB2YWxpZGF0ZUZpZWxkcygpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ29tcHV0ZSB0aGUgSnVsaWFuIGRheSAKKyAgICAgICAgaW50IGp1bGlhbkRheSA9IGNvbXB1dGVKdWxpYW5EYXkoKTsKKworICAgICAgICBsb25nIG1pbGxpcyA9IGp1bGlhbkRheVRvTWlsbGlzKGp1bGlhbkRheSk7CisKKyAgICAgICAgaW50IG1pbGxpc0luRGF5OworCisgICAgICAgIC8vIFdlIG9ubHkgdXNlIE1JTExJU0VDT05EU19JTl9EQVkgaWYgaXQgaGFzIGJlZW4gc2V0IGJ5IHRoZSB1c2VyLgorICAgICAgICAvLyBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlIGZvciB0aGUgY2FsbGVyIHRvIHNldCB0aGUgY2FsZW5kYXIgdG8gYQorICAgICAgICAvLyB0aW1lIGFuZCBjYWxsIGNsZWFyKE1PTlRIKSB0byByZXNldCB0aGUgTU9OVEggdG8gSmFudWFyeS4gIFRoaXMKKyAgICAgICAgLy8gaXMgbGVnYWN5IGJlaGF2aW9yLiAgV2l0aG91dCB0aGlzLCBjbGVhcihNT05USCkgaGFzIG5vIGVmZmVjdCwKKyAgICAgICAgLy8gc2luY2UgdGhlIGludGVybmFsbHkgc2V0IEpVTElBTl9EQVkgaXMgdXNlZC4KKyAgICAgICAgaWYgKHN0YW1wW01JTExJU0VDT05EU19JTl9EQVldID49IE1JTklNVU1fVVNFUl9TVEFNUCAmJgorICAgICAgICAgICAgbmV3ZXN0U3RhbXAoQU1fUE0sIE1JTExJU0VDT05ELCBVTlNFVCkgPD0gc3RhbXBbTUlMTElTRUNPTkRTX0lOX0RBWV0pIHsKKyAgICAgICAgICAgIG1pbGxpc0luRGF5ID0gaW50ZXJuYWxHZXQoTUlMTElTRUNPTkRTX0lOX0RBWSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtaWxsaXNJbkRheSA9IGNvbXB1dGVNaWxsaXNJbkRheSgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ29tcHV0ZSB0aGUgdGltZSB6b25lIG9mZnNldCBhbmQgRFNUIG9mZnNldC4gIFRoZXJlIGFyZSB0d28gcG90ZW50aWFsCisgICAgICAgIC8vIGFtYmlndWl0aWVzIGhlcmUuICBXZSdsbCBhc3N1bWUgYSAyOjAwIGFtICh3YWxsIHRpbWUpIHN3aXRjaG92ZXIgdGltZQorICAgICAgICAvLyBmb3IgZGlzY3Vzc2lvbiBwdXJwb3NlcyBoZXJlLgorICAgICAgICAvLyAxLiBUaGUgdHJhbnNpdGlvbiBpbnRvIERTVC4gIEhlcmUsIGEgZGVzaWduYXRlZCB0aW1lIG9mIDI6MDAgYW0gLSAyOjU5IGFtCisgICAgICAgIC8vICAgIGNhbiBiZSBpbiBzdGFuZGFyZCBvciBpbiBEU1QgZGVwZW5kaW5nLiAgSG93ZXZlciwgMjowMCBhbSBpcyBhbiBpbnZhbGlkCisgICAgICAgIC8vICAgIHJlcHJlc2VudGF0aW9uICh0aGUgcmVwcmVzZW50YXRpb24ganVtcHMgZnJvbSAxOjU5OjU5IGFtIFN0ZCB0byAzOjAwOjAwIGFtIERTVCkuCisgICAgICAgIC8vICAgIFdlIGFzc3VtZSBzdGFuZGFyZCB0aW1lLgorICAgICAgICAvLyAyLiBUaGUgdHJhbnNpdGlvbiBvdXQgb2YgRFNULiAgSGVyZSwgYSBkZXNpZ25hdGVkIHRpbWUgb2YgMTowMCBhbSAtIDE6NTkgYW0KKyAgICAgICAgLy8gICAgY2FuIGJlIGluIHN0YW5kYXJkIG9yIERTVC4gIEJvdGggYXJlIHZhbGlkIHJlcHJlc2VudGF0aW9ucyAodGhlIHJlcAorICAgICAgICAvLyAgICBqdW1wcyBmcm9tIDE6NTk6NTkgRFNUIHRvIDE6MDA6MDAgU3RkKS4KKyAgICAgICAgLy8gICAgQWdhaW4sIHdlIGFzc3VtZSBzdGFuZGFyZCB0aW1lLgorICAgICAgICAvLyBXZSB1c2UgdGhlIFRpbWVab25lIG9iamVjdCwgdW5sZXNzIHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5IHNldCB0aGUgWk9ORV9PRkZTRVQKKyAgICAgICAgLy8gb3IgRFNUX09GRlNFVCBmaWVsZHM7IHRoZW4gd2UgdXNlIHRob3NlIGZpZWxkcy4KKyAgICAgICAgaWYgKHN0YW1wW1pPTkVfT0ZGU0VUXSA+PSBNSU5JTVVNX1VTRVJfU1RBTVAgfHwKKyAgICAgICAgICAgIHN0YW1wW0RTVF9PRkZTRVRdID49IE1JTklNVU1fVVNFUl9TVEFNUCkgeworICAgICAgICAgICAgbWlsbGlzSW5EYXkgLT0gaW50ZXJuYWxHZXQoWk9ORV9PRkZTRVQpICsgaW50ZXJuYWxHZXQoRFNUX09GRlNFVCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtaWxsaXNJbkRheSAtPSBjb21wdXRlWm9uZU9mZnNldChtaWxsaXMsIG1pbGxpc0luRGF5KTsKKyAgICAgICAgfQorCisgICAgICAgIHRpbWUgPSBtaWxsaXMgKyBtaWxsaXNJbkRheTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb21wdXRlIHRoZSBtaWxsaXNlY29uZHMgaW4gdGhlIGRheSBmcm9tIHRoZSBmaWVsZHMuICBUaGlzIGlzIGEKKyAgICAgKiB2YWx1ZSBmcm9tIDAgdG8gMjM6NTk6NTkuOTk5IGluY2x1c2l2ZSwgdW5sZXNzIGZpZWxkcyBhcmUgb3V0IG9mCisgICAgICogcmFuZ2UsIGluIHdoaWNoIGNhc2UgaXQgY2FuIGJlIGFuIGFyYml0cmFyeSB2YWx1ZS4gIFRoaXMgdmFsdWUKKyAgICAgKiByZWZsZWN0cyBsb2NhbCB6b25lIHdhbGwgdGltZS4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGNvbXB1dGVNaWxsaXNJbkRheSgpIHsKKyAgICAgICAgLy8gRG8gdGhlIHRpbWUgcG9ydGlvbiBvZiB0aGUgY29udmVyc2lvbi4KKworICAgICAgICBpbnQgbWlsbGlzSW5EYXkgPSAwOworCisgICAgICAgIC8vIEZpbmQgdGhlIGJlc3Qgc2V0IG9mIGZpZWxkcyBzcGVjaWZ5aW5nIHRoZSB0aW1lIG9mIGRheS4gIFRoZXJlCisgICAgICAgIC8vIGFyZSBvbmx5IHR3byBwb3NzaWJpbGl0aWVzIGhlcmU7IHRoZSBIT1VSX09GX0RBWSBvciB0aGUKKyAgICAgICAgLy8gQU1fUE0gYW5kIHRoZSBIT1VSLgorICAgICAgICBpbnQgaG91ck9mRGF5U3RhbXAgPSBzdGFtcFtIT1VSX09GX0RBWV07CisgICAgICAgIGludCBob3VyU3RhbXAgPSBNYXRoLm1heChzdGFtcFtIT1VSXSwgc3RhbXBbQU1fUE1dKTsKKyAgICAgICAgaW50IGJlc3RTdGFtcCA9IChob3VyU3RhbXAgPiBob3VyT2ZEYXlTdGFtcCkgPyBob3VyU3RhbXAgOiBob3VyT2ZEYXlTdGFtcDsKKworICAgICAgICAvLyBIb3VycworICAgICAgICBpZiAoYmVzdFN0YW1wICE9IFVOU0VUKSB7CisgICAgICAgICAgICBpZiAoYmVzdFN0YW1wID09IGhvdXJPZkRheVN0YW1wKSB7CisgICAgICAgICAgICAgICAgLy8gRG9uJ3Qgbm9ybWFsaXplIGhlcmU7IGxldCBvdmVyZmxvdyBidW1wIGludG8gdGhlIG5leHQgcGVyaW9kLgorICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIGhvdyB3ZSBoYW5kbGUgb3RoZXIgZmllbGRzLgorICAgICAgICAgICAgICAgIG1pbGxpc0luRGF5ICs9IGludGVybmFsR2V0KEhPVVJfT0ZfREFZKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gRG9uJ3Qgbm9ybWFsaXplIGhlcmU7IGxldCBvdmVyZmxvdyBidW1wIGludG8gdGhlIG5leHQgcGVyaW9kLgorICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIGhvdyB3ZSBoYW5kbGUgb3RoZXIgZmllbGRzLgorICAgICAgICAgICAgICAgIG1pbGxpc0luRGF5ICs9IGludGVybmFsR2V0KEhPVVIpOworICAgICAgICAgICAgICAgIG1pbGxpc0luRGF5ICs9IDEyICogaW50ZXJuYWxHZXQoQU1fUE0pOyAvLyBEZWZhdWx0IHdvcmtzIGZvciB1bnNldCBBTV9QTQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gV2UgdXNlIHRoZSBmYWN0IHRoYXQgdW5zZXQgPT0gMDsgd2Ugc3RhcnQgd2l0aCBtaWxsaXNJbkRheQorICAgICAgICAvLyA9PSBIT1VSX09GX0RBWS4KKyAgICAgICAgbWlsbGlzSW5EYXkgKj0gNjA7CisgICAgICAgIG1pbGxpc0luRGF5ICs9IGludGVybmFsR2V0KE1JTlVURSk7IC8vIG5vdyBoYXZlIG1pbnV0ZXMKKyAgICAgICAgbWlsbGlzSW5EYXkgKj0gNjA7CisgICAgICAgIG1pbGxpc0luRGF5ICs9IGludGVybmFsR2V0KFNFQ09ORCk7IC8vIG5vdyBoYXZlIHNlY29uZHMKKyAgICAgICAgbWlsbGlzSW5EYXkgKj0gMTAwMDsKKyAgICAgICAgbWlsbGlzSW5EYXkgKz0gaW50ZXJuYWxHZXQoTUlMTElTRUNPTkQpOyAvLyBub3cgaGF2ZSBtaWxsaXMKKworICAgICAgICByZXR1cm4gbWlsbGlzSW5EYXk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBtZXRob2QgY2FuIGFzc3VtZSBFWFRFTkRFRF9ZRUFSIGhhcyBiZWVuIHNldC4KKyAgICAgKiBAcGFyYW0gbWlsbGlzIG1pbGxpc2Vjb25kcyBvZiB0aGUgZGF0ZSBmaWVsZHMKKyAgICAgKiBAcGFyYW0gbWlsbGlzSW5EYXkgbWlsbGlzZWNvbmRzIG9mIHRoZSB0aW1lIGZpZWxkczsgbWF5IGJlIG91dAorICAgICAqIG9yIHJhbmdlLgorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgY29tcHV0ZVpvbmVPZmZzZXQobG9uZyBtaWxsaXMsIGludCBtaWxsaXNJbkRheSkgeworCisgICAgICAgIC8qIE5vcm1hbGl6ZSB0aGUgbWlsbGlzSW5EYXkgdG8gMC4uT05FX0RBWS0xLiAgSWYgdGhlIG1pbGxpcyBpcyBvdXQKKyAgICAgICAgICogb2YgcmFuZ2UsIHRoZW4gd2UgbXVzdCBjYWxsIGNvbXB1dGVHcmVnb3JpYW5BbmRET1dGaWVsZHMoKSB0bworICAgICAgICAgKiByZWNvbXB1dGUgb3VyIGZpZWxkcy4gKi8KKyAgICAgICAgaW50W10gbm9ybWFsaXplZE1pbGxpc0luRGF5ID0gbmV3IGludFsxXTsKKyAgICAgICAgaW50IGRheXMgPSBmbG9vckRpdmlkZShtaWxsaXMgKyBtaWxsaXNJbkRheSwgKGludCkgT05FX0RBWSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTWlsbGlzSW5EYXkpOworCisgICAgICAgIGludCBqdWxpYW5EYXkgPSBtaWxsaXNUb0p1bGlhbkRheShkYXlzICogT05FX0RBWSk7CisKKyAgICAgICAgY29tcHV0ZUdyZWdvcmlhbkFuZERPV0ZpZWxkcyhqdWxpYW5EYXkpOworCisgICAgICAgIHJldHVybiB6b25lLmdldE9mZnNldCgKKyAgICAgICAgICAgICAgICAgICAgICBncmVnb3JpYW5ZZWFyLCBncmVnb3JpYW5Nb250aCwgZ3JlZ29yaWFuRGF5T2ZNb250aCwKKyAgICAgICAgICAgICAgICAgICAgICBmaWVsZHNbREFZX09GX1dFRUtdLCBub3JtYWxpemVkTWlsbGlzSW5EYXlbMF0sCisgICAgICAgICAgICAgICAgICAgICAgZ3JlZ29yaWFuTW9udGhMZW5ndGgoZ3JlZ29yaWFuWWVhciwgZ3JlZ29yaWFuTW9udGgpLAorICAgICAgICAgICAgICAgICAgICAgIGdyZWdvcmlhblByZXZpb3VzTW9udGhMZW5ndGgoZ3JlZ29yaWFuWWVhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZWdvcmlhbk1vbnRoKSk7CisKKyAgICAgICAgLy8gTm90ZTogQmVjYXVzZSB3ZSBwYXNzIGluIHdhbGwgbWlsbGlzSW5EYXksIHJhdGhlciB0aGFuCisgICAgICAgIC8vIHN0YW5kYXJkIG1pbGxpc0luRGF5LCB3ZSBpbnRlcnByZXQgIjE6MDAgYW0iIG9uIHRoZSBkYXkKKyAgICAgICAgLy8gb2YgY2Vzc2F0aW9uIG9mIERTVCBhcyAiMTowMCBhbSBTdGQiIChhc3N1bWluZyB0aGUgdGltZQorICAgICAgICAvLyBvZiBjZXNzYXRpb24gaXMgMjowMCBhbSkuCisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcHV0ZSB0aGUgSnVsaWFuIGRheSBudW1iZXIgYXMgc3BlY2lmaWVkIGJ5IHRoaXMgY2FsZW5kYXIncyBmaWVsZHMuCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBjb21wdXRlSnVsaWFuRGF5KCkgeworCisgICAgICAgIC8vIFdlIHdhbnQgdG8gc2VlIGlmIGFueSBvZiB0aGUgZGF0ZSBmaWVsZHMgaXMgbmV3ZXIgdGhhbiB0aGUKKyAgICAgICAgLy8gSlVMSUFOX0RBWS4gIElmIG5vdCwgdGhlbiB3ZSB1c2UgSlVMSUFOX0RBWS4gIElmIHNvLCB0aGVuIHdlIGRvCisgICAgICAgIC8vIHRoZSBub3JtYWwgcmVzb2x1dGlvbi4gIFdlIG9ubHkgdXNlIEpVTElBTl9EQVkgaWYgaXQgaGFzIGJlZW4KKyAgICAgICAgLy8gc2V0IGJ5IHRoZSB1c2VyLiAgVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSBmb3IgdGhlIGNhbGxlciB0byBzZXQKKyAgICAgICAgLy8gdGhlIGNhbGVuZGFyIHRvIGEgdGltZSBhbmQgY2FsbCBjbGVhcihNT05USCkgdG8gcmVzZXQgdGhlIE1PTlRICisgICAgICAgIC8vIHRvIEphbnVhcnkuICBUaGlzIGlzIGxlZ2FjeSBiZWhhdmlvci4gIFdpdGhvdXQgdGhpcywKKyAgICAgICAgLy8gY2xlYXIoTU9OVEgpIGhhcyBubyBlZmZlY3QsIHNpbmNlIHRoZSBpbnRlcm5hbGx5IHNldCBKVUxJQU5fREFZCisgICAgICAgIC8vIGlzIHVzZWQuCisgICAgICAgIGlmIChzdGFtcFtKVUxJQU5fREFZXSA+PSBNSU5JTVVNX1VTRVJfU1RBTVApIHsKKyAgICAgICAgICAgIGludCBiZXN0U3RhbXAgPSBuZXdlc3RTdGFtcChFUkEsIERBWV9PRl9XRUVLX0lOX01PTlRILCBVTlNFVCk7CisgICAgICAgICAgICBiZXN0U3RhbXAgPSBuZXdlc3RTdGFtcChZRUFSX1dPWSwgRVhURU5ERURfWUVBUiwgYmVzdFN0YW1wKTsKKyAgICAgICAgICAgIGlmIChiZXN0U3RhbXAgPD0gc3RhbXBbSlVMSUFOX0RBWV0pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxHZXQoSlVMSUFOX0RBWSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpbnQgYmVzdEZpZWxkID0gcmVzb2x2ZUZpZWxkcyhnZXRGaWVsZFJlc29sdXRpb25UYWJsZSgpKTsKKyAgICAgICAgaWYgKGJlc3RGaWVsZCA8IDApIHsKKyAgICAgICAgICAgIGJlc3RGaWVsZCA9IERBWV9PRl9NT05USDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBoYW5kbGVDb21wdXRlSnVsaWFuRGF5KGJlc3RGaWVsZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBmaWVsZCByZXNvbHV0aW9uIGFycmF5IGZvciB0aGlzIGNhbGVuZGFyLiAgQ2FsZW5kYXJzIHRoYXQKKyAgICAgKiBkZWZpbmUgYWRkaXRpb25hbCBmaWVsZHMgb3IgY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgZXhpc3RpbmcgZmllbGRzCisgICAgICogc2hvdWxkIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIGFkanVzdCB0aGUgZmllbGQgcmVzb2x1dGlvbiBzZW1hbnRpY3MKKyAgICAgKiBhY2NvcmRpbmdseS4gIE90aGVyIHN1YmNsYXNzZXMgc2hvdWxkIG5vdCBvdmVycmlkZSB0aGlzIG1ldGhvZC4KKyAgICAgKiBAc2VlICNyZXNvbHZlRmllbGRzCisgICAgICovCisgICAgcHJvdGVjdGVkIGludFtdW11bXSBnZXRGaWVsZFJlc29sdXRpb25UYWJsZSgpIHsKKyAgICAgICAgcmV0dXJuIERBVEVfUFJFQ0VERU5DRTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIEp1bGlhbiBkYXkgbnVtYmVyIG9mIGRheSBiZWZvcmUgdGhlIGZpcnN0IGRheSBvZiB0aGUKKyAgICAgKiBnaXZlbiBtb250aCBpbiB0aGUgZ2l2ZW4gZXh0ZW5kZWQgeWVhci4gIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlCisgICAgICogdGhpcyBtZXRob2QgdG8gaW1wbGVtZW50IHRoZWlyIGNhbGVuZGFyIHN5c3RlbS4KKyAgICAgKiBAcGFyYW0gZXllYXIgdGhlIGV4dGVuZGVkIHllYXIKKyAgICAgKiBAcGFyYW0gbW9udGggdGhlIHplcm8tYmFzZWQgbW9udGgsIG9yIDAgaWYgdXNlTW9udGggaXMgZmFsc2UKKyAgICAgKiBAcGFyYW0gdXNlTW9udGggaWYgZmFsc2UsIGNvbXB1dGUgdGhlIGRheSBiZWZvcmUgdGhlIGZpcnN0IGRheSBvZgorICAgICAqIHRoZSBnaXZlbiB5ZWFyLCBvdGhlcndpc2UsIGNvbXB1dGUgdGhlIGRheSBiZWZvcmUgdGhlIGZpcnN0IGRheSBvZgorICAgICAqIHRoZSBnaXZlbiBtb250aAorICAgICAqIEBwYXJhbSByZXR1cm4gdGhlIEp1bGlhbiBkYXkgbnVtYmVyIG9mIHRoZSBkYXkgYmVmb3JlIHRoZSBmaXJzdAorICAgICAqIGRheSBvZiB0aGUgZ2l2ZW4gbW9udGggYW5kIHllYXIKKyAgICAgKi8KKyAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgaW50IGhhbmRsZUNvbXB1dGVNb250aFN0YXJ0KGludCBleWVhciwgaW50IG1vbnRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiB1c2VNb250aCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGV4dGVuZGVkIHllYXIgZGVmaW5lZCBieSB0aGUgY3VycmVudCBmaWVsZHMuICBUaGlzIHdpbGwKKyAgICAgKiB1c2UgdGhlIEVYVEVOREVEX1lFQVIgZmllbGQgb3IgdGhlIFlFQVIgYW5kIHN1cHJhLXllYXIgZmllbGRzIChzdWNoCisgICAgICogYXMgRVJBKSBzcGVjaWZpYyB0byB0aGUgY2FsZW5kYXIgc3lzdGVtLCBkZXBlbmRpbmcgb24gd2hpY2ggc2V0IG9mCisgICAgICogZmllbGRzIGlzIG5ld2VyLgorICAgICAqIEByZXR1cm4gdGhlIGV4dGVuZGVkIHllYXIKKyAgICAgKi8KKyAgICBhYnN0cmFjdCBwcm90ZWN0ZWQgaW50IGhhbmRsZUdldEV4dGVuZGVkWWVhcigpOworCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGUgZ2l2ZW4gbW9udGggb2YgdGhlIGdpdmVuIGV4dGVuZGVkCisgICAgICogeWVhciBvZiB0aGlzIGNhbGVuZGFyIHN5c3RlbS4gIFN1YmNsYXNzZXMgc2hvdWxkIG92ZXJyaWRlIHRoaXMKKyAgICAgKiBtZXRob2QgaWYgdGhleSBjYW4gcHJvdmlkZSBhIG1vcmUgY29ycmVjdCBvciBtb3JlIGVmZmljaWVudAorICAgICAqIGltcGxlbWVudGF0aW9uIHRoYW4gdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gaW4gQ2FsZW5kYXIuCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVHZXRNb250aExlbmd0aChpbnQgZXh0ZW5kZWRZZWFyLCBpbnQgbW9udGgpIHsKKyAgICAgICAgcmV0dXJuIGhhbmRsZUNvbXB1dGVNb250aFN0YXJ0KGV4dGVuZGVkWWVhciwgbW9udGgrMSwgdHJ1ZSkgLQorICAgICAgICAgICAgICAgaGFuZGxlQ29tcHV0ZU1vbnRoU3RhcnQoZXh0ZW5kZWRZZWFyLCBtb250aCwgdHJ1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGUgZ2l2ZW4gZXh0ZW5kZWQgeWVhciBvZiB0aGlzCisgICAgICogY2FsZW5kYXIgc3lzdGVtLiAgU3ViY2xhc3NlcyBzaG91bGQgb3ZlcnJpZGUgdGhpcyBtZXRob2QgaWYgdGhleSBjYW4KKyAgICAgKiBwcm92aWRlIGEgbW9yZSBjb3JyZWN0IG9yIG1vcmUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIHRoYW4gdGhlCisgICAgICogZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpbiBDYWxlbmRhci4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZUdldFllYXJMZW5ndGgoaW50IGV5ZWFyKSB7CisgICAgICAgIHJldHVybiBoYW5kbGVDb21wdXRlTW9udGhTdGFydChleWVhcisxLCAwLCBmYWxzZSkgLQorICAgICAgICAgICAgICAgaGFuZGxlQ29tcHV0ZU1vbnRoU3RhcnQoZXllYXIsIDAsIGZhbHNlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTdWJjbGFzc2VzIHRoYXQgdXNlIGFkZGl0aW9uYWwgZmllbGRzIGJleW9uZCB0aG9zZSBkZWZpbmVkIGluCisgICAgICogPGNvZGU+Q2FsZW5kYXI8L2NvZGU+IHNob3VsZCBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byByZXR1cm4gYW4KKyAgICAgKiA8Y29kZT5pbnRbXTwvY29kZT4gYXJyYXkgb2YgdGhlIGFwcHJvcHJpYXRlIGxlbmd0aC4gIFRoZSBsZW5ndGgKKyAgICAgKiBtdXN0IGJlIGF0IGxlYXN0IDxjb2RlPkJBU0VfRklFTERfQ09VTlQ8L2NvZGU+IGFuZCBubyBtb3JlIHRoYW4KKyAgICAgKiA8Y29kZT5NQVhfRklFTERfQ09VTlQ8L2NvZGU+LgorICAgICAqLworICAgIHByb3RlY3RlZCBpbnRbXSBoYW5kbGVDcmVhdGVGaWVsZHMoKSB7CisgICAgICAgIHJldHVybiBuZXcgaW50W0JBU0VfRklFTERfQ09VTlRdOworICAgIH0KKworICAgIC8qKgorICAgICAqIFN1YmNsYXNzZXMgbWF5IG92ZXJyaWRlIHRoaXMuICBUaGlzIG1ldGhvZCBjYWxscworICAgICAqIGhhbmRsZUdldE1vbnRoTGVuZ3RoKCkgdG8gb2J0YWluIHRoZSBjYWxlbmRhci1zcGVjaWZpYyBtb250aAorICAgICAqIGxlbmd0aC4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZUNvbXB1dGVKdWxpYW5EYXkoaW50IGJlc3RGaWVsZCkgeworCisgICAgICAgIGJvb2xlYW4gdXNlTW9udGggPSAoYmVzdEZpZWxkID09IERBWV9PRl9NT05USCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlc3RGaWVsZCA9PSBXRUVLX09GX01PTlRIIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVzdEZpZWxkID09IERBWV9PRl9XRUVLX0lOX01PTlRIKTsKKworICAgICAgICBpbnQgeWVhciA9IGhhbmRsZUdldEV4dGVuZGVkWWVhcigpOworICAgICAgICBpbnRlcm5hbFNldChFWFRFTkRFRF9ZRUFSLCB5ZWFyKTsKKworICAgICAgICAvLyBHZXQgdGhlIEp1bGlhbiBkYXkgb2YgdGhlIGRheSBCRUZPUkUgdGhlIHN0YXJ0IG9mIHRoaXMgeWVhci4KKyAgICAgICAgLy8gSWYgdXNlTW9udGggaXMgdHJ1ZSwgZ2V0IHRoZSBkYXkgYmVmb3JlIHRoZSBzdGFydCBvZiB0aGUgbW9udGguCisgICAgICAgIGludCBqdWxpYW5EYXkgPSBoYW5kbGVDb21wdXRlTW9udGhTdGFydCh5ZWFyLCB1c2VNb250aCA/IGludGVybmFsR2V0KE1PTlRIKSA6IDAsIHVzZU1vbnRoKTsKKworICAgICAgICBpZiAoYmVzdEZpZWxkID09IERBWV9PRl9NT05USCkgeworICAgICAgICAgICAgcmV0dXJuIGp1bGlhbkRheSArIGludGVybmFsR2V0KERBWV9PRl9NT05USCwgMSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYmVzdEZpZWxkID09IERBWV9PRl9ZRUFSKSB7CisgICAgICAgICAgICByZXR1cm4ganVsaWFuRGF5ICsgaW50ZXJuYWxHZXQoREFZX09GX1lFQVIpOworICAgICAgICB9CisKKyAgICAgICAgaW50IGZpcnN0RGF5T2ZXZWVrID0gZ2V0Rmlyc3REYXlPZldlZWsoKTsgLy8gTG9jYWxpemVkIGZkdworCisgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQganVsaWFuRGF5IGlzIHRoZSAwLWJhc2VkIGRheSBCRUZPUkUgdGhlIGZpcnN0IGRheSBvZgorICAgICAgICAvLyBKYW51YXJ5IDEsIHllYXIgMSBvZiB0aGUgZ2l2ZW4gY2FsZW5kYXIuICBJZiBqdWxpYW5EYXkgPT0gMCwgaXQKKyAgICAgICAgLy8gc3BlY2lmaWVzIChKYW4uIDEsIDEpIC0gMSwgaW4gd2hhdGV2ZXIgY2FsZW5kYXIgd2UgYXJlIHVzaW5nIChKdWxpYW4KKyAgICAgICAgLy8gb3IgR3JlZ29yaWFuKS4KKworICAgICAgICAvLyBBdCB0aGlzIHBvaW50IHdlIG5lZWQgdG8gcHJvY2VzcyB0aGUgV0VFS19PRl9NT05USCBvcgorICAgICAgICAvLyBXRUVLX09GX1lFQVIsIHdoaWNoIGFyZSBzaW1pbGFyLCBvciB0aGUgREFZX09GX1dFRUtfSU5fTU9OVEguCisgICAgICAgIC8vIEZpcnN0LCBwZXJmb3JtIGluaXRpYWwgc2hhcmVkIGNvbXB1dGF0aW9ucy4gIFRoZXNlIGxvY2F0ZSB0aGUKKyAgICAgICAgLy8gZmlyc3Qgd2VlayBvZiB0aGUgcGVyaW9kLgorCisgICAgICAgIC8vIEdldCB0aGUgMC1iYXNlZCBsb2NhbGl6ZWQgRE9XIG9mIGRheSBvbmUgb2YgdGhlIG1vbnRoIG9yIHllYXIuCisgICAgICAgIC8vIFZhbGlkIHJhbmdlIDAuLjYuCisgICAgICAgIGludCBmaXJzdCA9IGp1bGlhbkRheVRvRGF5T2ZXZWVrKGp1bGlhbkRheSArIDEpIC0gZmlyc3REYXlPZldlZWs7CisgICAgICAgIGlmIChmaXJzdCA8IDApIHsKKyAgICAgICAgICAgIGZpcnN0ICs9IDc7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIEdldCB6ZXJvLWJhc2VkIGxvY2FsaXplZCBET1csIHZhbGlkIHJhbmdlIDAuLjYuICBUaGlzIGlzIHRoZSBET1cKKyAgICAgICAgLy8gd2UgYXJlIGxvb2tpbmcgZm9yLgorICAgICAgICBpbnQgZG93TG9jYWwgPSAwOworICAgICAgICBzd2l0Y2ggKHJlc29sdmVGaWVsZHMoRE9XX1BSRUNFREVOQ0UpKSB7CisgICAgICAgIGNhc2UgREFZX09GX1dFRUs6CisgICAgICAgICAgICBkb3dMb2NhbCA9IGludGVybmFsR2V0KERBWV9PRl9XRUVLKSAtIGZpcnN0RGF5T2ZXZWVrOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRE9XX0xPQ0FMOgorICAgICAgICAgICAgZG93TG9jYWwgPSBpbnRlcm5hbEdldChET1dfTE9DQUwpIC0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRvd0xvY2FsID0gZG93TG9jYWwgJSA3OworICAgICAgICBpZiAoZG93TG9jYWwgPCAwKSB7CisgICAgICAgICAgICBkb3dMb2NhbCArPSA3OworICAgICAgICB9CisKKyAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgdGFyZ2V0IERPVyAoZG93TG9jYWwpIGluIHRoZSBtb250aCBvciB5ZWFyLgorICAgICAgICAvLyBBY3R1YWxseSwgaXQgbWF5IGJlIGp1c3QgYmVmb3JlIHRoZSBmaXJzdCBvZiB0aGUgbW9udGggb3IgeWVhci4KKyAgICAgICAgLy8gSXQgd2lsbCBiZSBhbiBpbnRlZ2VyIGZyb20gLTUuLjcuCisgICAgICAgIGludCBkYXRlID0gMSAtIGZpcnN0ICsgZG93TG9jYWw7CisKKyAgICAgICAgaWYgKGJlc3RGaWVsZCA9PSBEQVlfT0ZfV0VFS19JTl9NT05USCkgeworCisgICAgICAgICAgICAvLyBBZGp1c3QgdGhlIHRhcmdldCBET1cgdG8gYmUgaW4gdGhlIG1vbnRoIG9yIHllYXIuCisgICAgICAgICAgICBpZiAoZGF0ZSA8IDEpIHsKKyAgICAgICAgICAgICAgICBkYXRlICs9IDc7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoZSBvbmx5IHRyaWNraW5lc3Mgb2NjdXJzIGlmIHRoZSBkYXktb2Ytd2Vlay1pbi1tb250aCBpcworICAgICAgICAgICAgLy8gbmVnYXRpdmUuCisgICAgICAgICAgICBpbnQgZGltID0gaW50ZXJuYWxHZXQoREFZX09GX1dFRUtfSU5fTU9OVEgsIDEpOworICAgICAgICAgICAgaWYgKGRpbSA+PSAwKSB7CisgICAgICAgICAgICAgICAgZGF0ZSArPSA3KihkaW0gLSAxKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gTW92ZSBkYXRlIHRvIHRoZSBsYXN0IG9mIHRoaXMgZGF5LW9mLXdlZWsgaW4gdGhpcyBtb250aCwKKyAgICAgICAgICAgICAgICAvLyB0aGVuIGJhY2sgdXAgYXMgbmVlZGVkLiAgSWYgZGltPT0tMSwgd2UgZG9uJ3QgYmFjayB1cCBhdAorICAgICAgICAgICAgICAgIC8vIGFsbC4gIElmIGRpbT09LTIsIHdlIGJhY2sgdXAgb25jZSwgZXRjLiAgRG9uJ3QgYmFjayB1cAorICAgICAgICAgICAgICAgIC8vIHBhc3QgdGhlIGZpcnN0IG9mIHRoZSBnaXZlbiBkYXktb2Ytd2VlayBpbiB0aGlzIG1vbnRoLgorICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB3ZSBoYW5kbGUgLTIsIC0zLCBldGMuIGNvcnJlY3RseSwgZXZlbiB0aG91Z2gKKyAgICAgICAgICAgICAgICAvLyB2YWx1ZXMgPCAtMSBhcmUgdGVjaG5pY2FsbHkgZGlzYWxsb3dlZC4KKyAgICAgICAgICAgICAgICBpbnQgbSA9IGludGVybmFsR2V0KE1PTlRILCBKQU5VQVJZKTsKKyAgICAgICAgICAgICAgICBpbnQgbW9udGhMZW5ndGggPSBoYW5kbGVHZXRNb250aExlbmd0aCh5ZWFyLCBtKTsKKyAgICAgICAgICAgICAgICBkYXRlICs9ICgobW9udGhMZW5ndGggLSBkYXRlKSAvIDcgKyBkaW0gKyAxKSAqIDc7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBhc3NlcnQoYmVzdEZpZWxkID09IFdFRUtfT0ZfTU9OVEggfHwgYmVzdEZpZWxkID09IFdFRUtfT0ZfWUVBUikKKworICAgICAgICAgICAgLy8gQWRqdXN0IGZvciBtaW5pbWFsIGRheXMgaW4gZmlyc3Qgd2VlaworICAgICAgICAgICAgaWYgKCg3IC0gZmlyc3QpIDwgZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpKSB7CisgICAgICAgICAgICAgICAgZGF0ZSArPSA3OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBOb3cgYWRqdXN0IGZvciB0aGUgd2VlayBudW1iZXIuCisgICAgICAgICAgICBkYXRlICs9IDcgKiAoaW50ZXJuYWxHZXQoYmVzdEZpZWxkKSAtIDEpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGp1bGlhbkRheSArIGRhdGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcHV0ZSB0aGUgSnVsaWFuIGRheSBvZiBhIG1vbnRoIG9mIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIuCisgICAgICogU3ViY2xhc3NlcyBtYXkgY2FsbCB0aGlzIG1ldGhvZCB0byBwZXJmb3JtIGEgR3JlZ29yaWFuIGNhbGVuZGFyCisgICAgICogZmllbGRzLT5taWxsaXMgY29tcHV0YXRpb24uICBUbyBwZXJmb3JtIGEgR3JlZ29yaWFuIGNhbGVuZGFyCisgICAgICogbWlsbGlzLT5maWVsZHMgY29tcHV0YXRpb24sIGNhbGwgY29tcHV0ZUdyZWdvcmlhbkZpZWxkcygpLgorICAgICAqIEBwYXJhbSB5ZWFyIGV4dGVuZGVkIEdyZWdvcmlhbiB5ZWFyCisgICAgICogQHBhcmFtIG1vbnRoIHplcm8tYmFzZWQgR3JlZ29yaWFuIG1vbnRoCisgICAgICogQHJldHVybiB0aGUgSnVsaWFuIGRheSBudW1iZXIgb2YgdGhlIGRheSBiZWZvcmUgdGhlIGZpcnN0CisgICAgICogZGF5IG9mIHRoZSBnaXZlbiBtb250aCBpbiB0aGUgZ2l2ZW4gZXh0ZW5kZWQgeWVhcgorICAgICAqIEBzZWUgI2NvbXB1dGVHcmVnb3JpYW5GaWVsZHMKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGNvbXB1dGVHcmVnb3JpYW5Nb250aFN0YXJ0KGludCB5ZWFyLCBpbnQgbW9udGgpIHsKKworICAgICAgICAvLyBJZiB0aGUgbW9udGggaXMgb3V0IG9mIHJhbmdlLCBhZGp1c3QgaXQgaW50byByYW5nZSwgYW5kCisgICAgICAgIC8vIG1vZGlmeSB0aGUgZXh0ZW5kZWQgeWVhciB2YWx1ZSBhY2NvcmRpbmdseS4KKyAgICAgICAgaWYgKG1vbnRoIDwgMCB8fCBtb250aCA+IDExKSB7CisgICAgICAgICAgICBpbnRbXSByZW0gPSBuZXcgaW50WzFdOworICAgICAgICAgICAgeWVhciArPSBmbG9vckRpdmlkZShtb250aCwgMTIsIHJlbSk7CisgICAgICAgICAgICBtb250aCA9IHJlbVswXTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2xlYW4gaXNMZWFwID0gKHllYXIlNCA9PSAwKSAmJiAoKHllYXIlMTAwICE9IDApIHx8ICh5ZWFyJTQwMCA9PSAwKSk7CisgICAgICAgIGludCB5ID0geWVhciAtIDE7CisgICAgICAgIC8vIFRoaXMgY29tcHV0YXRpb24gaXMgYWN0dWFsbHkgLi4uICsgKEpBTl8xXzFfSlVMSUFOX0RBWSAtIDMpICsgMi4KKyAgICAgICAgLy8gQWRkIDIgYmVjYXVzZSBHcmVnb3JpYW4gY2FsZW5kYXIgc3RhcnRzIDIgZGF5cyBhZnRlciBKdWxpYW4KKyAgICAgICAgLy8gY2FsZW5kYXIuCisgICAgICAgIGludCBqdWxpYW5EYXkgPSAzNjUqeSArIGZsb29yRGl2aWRlKHksIDQpIC0gZmxvb3JEaXZpZGUoeSwgMTAwKSArCisgICAgICAgICAgICBmbG9vckRpdmlkZSh5LCA0MDApICsgSkFOXzFfMV9KVUxJQU5fREFZIC0gMTsKKworICAgICAgICAvLyBBdCB0aGlzIHBvaW50IGp1bGlhbkRheSBpbmRpY2F0ZXMgdGhlIGRheSBCRUZPUkUgdGhlIGZpcnN0IGRheQorICAgICAgICAvLyBvZiBKYW51YXJ5IDEsIDxleWVhcj4gb2YgdGhlIEdyZWdvcmlhbiBjYWxlbmRhci4KKyAgICAgICAgaWYgKG1vbnRoICE9IDApIHsKKyAgICAgICAgICAgIGp1bGlhbkRheSArPSBHUkVHT1JJQU5fTU9OVEhfQ09VTlRbbW9udGhdW2lzTGVhcD8zOjJdOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGp1bGlhbkRheTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBTdWJjbGFzcyBBUEkKKyAgICAvLyBGb3Igc3ViY2xhc3NlcyB0byBvdmVycmlkZQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogU3ViY2xhc3NlcyBtYXkgb3ZlcnJpZGUgdGhpcyBtZXRob2QgdG8gY29tcHV0ZSBzZXZlcmFsIGZpZWxkcworICAgICAqIHNwZWNpZmljIHRvIGVhY2ggY2FsZW5kYXIgc3lzdGVtLiAgVGhlc2UgYXJlOgorICAgICAqCisgICAgICogPHVsPjxsaT5FUkEKKyAgICAgKiA8bGk+WUVBUgorICAgICAqIDxsaT5NT05USAorICAgICAqIDxsaT5EQVlfT0ZfTU9OVEgKKyAgICAgKiA8bGk+REFZX09GX1lFQVIKKyAgICAgKiA8bGk+RVhURU5ERURfWUVBUjwvdWw+CisgICAgICogCisgICAgICogU3ViY2xhc3NlcyBjYW4gcmVmZXIgdG8gdGhlIERBWV9PRl9XRUVLIGFuZCBET1dfTE9DQUwgZmllbGRzLCB3aGljaAorICAgICAqIHdpbGwgYmUgc2V0IHdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkLiAgU3ViY2xhc3NlcyBjYW4gYWxzbyBjYWxsCisgICAgICogdGhlIGdldEdyZWdvcmlhblh4eCgpIG1ldGhvZHMgdG8gb2J0YWluIEdyZWdvcmlhbiBjYWxlbmRhcgorICAgICAqIGVxdWl2YWxlbnRzIGZvciB0aGUgZ2l2ZW4gSnVsaWFuIGRheS4KKyAgICAgKgorICAgICAqIDxwPkluIGFkZGl0aW9uLCBzdWJjbGFzc2VzIHNob3VsZCBjb21wdXRlIGFueSBzdWJjbGFzcy1zcGVjaWZpYworICAgICAqIGZpZWxkcywgdGhhdCBpcywgZmllbGRzIGZyb20gQkFTRV9GSUVMRF9DT1VOVCB0bworICAgICAqIGdldEZpZWxkQ291bnQoKSAtIDEuCisgICAgICoKKyAgICAgKiA8cD5UaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpbiA8Y29kZT5DYWxlbmRhcjwvY29kZT4gaW1wbGVtZW50cworICAgICAqIGEgcHVyZSBwcm9sZXB0aWMgR3JlZ29yaWFuIGNhbGVuZGFyLgorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZUNvbXB1dGVGaWVsZHMoaW50IGp1bGlhbkRheSkgeworICAgICAgICBpbnRlcm5hbFNldChNT05USCwgZ2V0R3JlZ29yaWFuTW9udGgoKSk7CisgICAgICAgIGludGVybmFsU2V0KERBWV9PRl9NT05USCwgZ2V0R3JlZ29yaWFuRGF5T2ZNb250aCgpKTsKKyAgICAgICAgaW50ZXJuYWxTZXQoREFZX09GX1lFQVIsIGdldEdyZWdvcmlhbkRheU9mWWVhcigpKTsKKyAgICAgICAgaW50IGV5ZWFyID0gZ2V0R3JlZ29yaWFuWWVhcigpOworICAgICAgICBpbnRlcm5hbFNldChFWFRFTkRFRF9ZRUFSLCBleWVhcik7CisgICAgICAgIGludCBlcmEgPSBHcmVnb3JpYW5DYWxlbmRhci5BRDsKKyAgICAgICAgaWYgKGV5ZWFyIDwgMSkgeworICAgICAgICAgICAgZXJhID0gR3JlZ29yaWFuQ2FsZW5kYXIuQkM7CisgICAgICAgICAgICBleWVhciA9IDEgLSBleWVhcjsKKyAgICAgICAgfQorICAgICAgICBpbnRlcm5hbFNldChFUkEsIGVyYSk7CisgICAgICAgIGludGVybmFsU2V0KFlFQVIsIGV5ZWFyKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBTdWJjbGFzcyBBUEkKKyAgICAvLyBGb3Igc3ViY2xhc3NlcyB0byBjYWxsCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGV4dGVuZGVkIHllYXIgb24gdGhlIEdyZWdvcmlhbiBjYWxlbmRhciBhcyBjb21wdXRlZCBieQorICAgICAqIDxjb2RlPmNvbXB1dGVHcmVnb3JpYW5GaWVsZHMoKTwvY29kZT4uCisgICAgICogQHNlZSAjY29tcHV0ZUdyZWdvcmlhbkZpZWxkcworICAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCBpbnQgZ2V0R3JlZ29yaWFuWWVhcigpIHsKKyAgICAgICAgcmV0dXJuIGdyZWdvcmlhblllYXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBtb250aCAoMC1iYXNlZCkgb24gdGhlIEdyZWdvcmlhbiBjYWxlbmRhciBhcyBjb21wdXRlZCBieQorICAgICAqIDxjb2RlPmNvbXB1dGVHcmVnb3JpYW5GaWVsZHMoKTwvY29kZT4uCisgICAgICogQHNlZSAjY29tcHV0ZUdyZWdvcmlhbkZpZWxkcworICAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCBpbnQgZ2V0R3JlZ29yaWFuTW9udGgoKSB7CisgICAgICAgIHJldHVybiBncmVnb3JpYW5Nb250aDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGRheSBvZiB5ZWFyICgxLWJhc2VkKSBvbiB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyIGFzCisgICAgICogY29tcHV0ZWQgYnkgPGNvZGU+Y29tcHV0ZUdyZWdvcmlhbkZpZWxkcygpPC9jb2RlPi4KKyAgICAgKiBAc2VlICNjb21wdXRlR3JlZ29yaWFuRmllbGRzCisgICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIGludCBnZXRHcmVnb3JpYW5EYXlPZlllYXIoKSB7CisgICAgICAgIHJldHVybiBncmVnb3JpYW5EYXlPZlllYXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBkYXkgb2YgbW9udGggKDEtYmFzZWQpIG9uIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIgYXMKKyAgICAgKiBjb21wdXRlZCBieSA8Y29kZT5jb21wdXRlR3JlZ29yaWFuRmllbGRzKCk8L2NvZGU+LgorICAgICAqIEBzZWUgI2NvbXB1dGVHcmVnb3JpYW5GaWVsZHMKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgZmluYWwgaW50IGdldEdyZWdvcmlhbkRheU9mTW9udGgoKSB7CisgICAgICAgIHJldHVybiBncmVnb3JpYW5EYXlPZk1vbnRoOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGZpZWxkcyBkZWZpbmVkIGJ5IHRoaXMgY2FsZW5kYXIuICBWYWxpZCBmaWVsZAorICAgICAqIGFyZ3VtZW50cyB0byA8Y29kZT5zZXQoKTwvY29kZT4gYW5kIDxjb2RlPmdldCgpPC9jb2RlPiBhcmUKKyAgICAgKiA8Y29kZT4wLi5nZXRGaWVsZENvdW50KCktMTwvY29kZT4uCisgICAgICovCisgICAgcHVibGljIGZpbmFsIGludCBnZXRGaWVsZENvdW50KCkgeworICAgICAgICByZXR1cm4gZmllbGRzLmxlbmd0aDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgYSBmaWVsZCB0byBhIHZhbHVlLiAgU3ViY2xhc3NlcyBzaG91bGQgdXNlIHRoaXMgbWV0aG9kIHdoZW4KKyAgICAgKiBjb21wdXRpbmcgZmllbGRzLiAgSXQgc2V0cyB0aGUgdGltZSBzdGFtcCBpbiB0aGUKKyAgICAgKiA8Y29kZT5zdGFtcFtdPC9jb2RlPiBhcnJheSB0byA8Y29kZT5JTlRFUk5BTExZX1NFVDwvY29kZT4uICBJZiBhCisgICAgICogZmllbGQgdGhhdCBtYXkgbm90IGJlIHNldCBieSBzdWJjbGFzc2VzIGlzIHBhc3NlZCBpbiwgYW4KKyAgICAgKiA8Y29kZT5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb248L2NvZGU+IGlzIHRocm93bi4gIFRoaXMgcHJldmVudHMKKyAgICAgKiBzdWJjbGFzc2VzIGZyb20gbW9kaWZ5aW5nIGZpZWxkcyB0aGF0IGFyZSBpbnRlbmRlZCB0byBiZQorICAgICAqIGNhbGVuZGFyLXN5c3RlbSBpbnZhcmlhbnQuCisgICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgaW50ZXJuYWxTZXQoaW50IGZpZWxkLCBpbnQgdmFsdWUpIHsKKyAgICAgICAgaWYgKCgoMSA8PCBmaWVsZCkgJiBpbnRlcm5hbFNldE1hc2spID09IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlN1YmNsYXNzIGNhbm5vdCBzZXQgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkTmFtZShmaWVsZCkpOworICAgICAgICB9CisgICAgICAgIGZpZWxkc1tmaWVsZF0gPSB2YWx1ZTsKKyAgICAgICAgc3RhbXBbZmllbGRdID0gSU5URVJOQUxMWV9TRVQ7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W11bXSBHUkVHT1JJQU5fTU9OVEhfQ09VTlQgPSB7CisgICAgICAgIC8vbGVuIGxlbjIgICBzdCAgc3QyCisgICAgICAgIHsgIDMxLCAgMzEsICAgMCwgICAwIH0sIC8vIEphbgorICAgICAgICB7ICAyOCwgIDI5LCAgMzEsICAzMSB9LCAvLyBGZWIKKyAgICAgICAgeyAgMzEsICAzMSwgIDU5LCAgNjAgfSwgLy8gTWFyCisgICAgICAgIHsgIDMwLCAgMzAsICA5MCwgIDkxIH0sIC8vIEFwcgorICAgICAgICB7ICAzMSwgIDMxLCAxMjAsIDEyMSB9LCAvLyBNYXkKKyAgICAgICAgeyAgMzAsICAzMCwgMTUxLCAxNTIgfSwgLy8gSnVuCisgICAgICAgIHsgIDMxLCAgMzEsIDE4MSwgMTgyIH0sIC8vIEp1bAorICAgICAgICB7ICAzMSwgIDMxLCAyMTIsIDIxMyB9LCAvLyBBdWcKKyAgICAgICAgeyAgMzAsICAzMCwgMjQzLCAyNDQgfSwgLy8gU2VwCisgICAgICAgIHsgIDMxLCAgMzEsIDI3MywgMjc0IH0sIC8vIE9jdAorICAgICAgICB7ICAzMCwgIDMwLCAzMDQsIDMwNSB9LCAvLyBOb3YKKyAgICAgICAgeyAgMzEsICAzMSwgMzM0LCAzMzUgfSAgLy8gRGVjCisgICAgICAgIC8vIGxlbiAgbGVuZ3RoIG9mIG1vbnRoCisgICAgICAgIC8vIGxlbjIgbGVuZ3RoIG9mIG1vbnRoIGluIGEgbGVhcCB5ZWFyCisgICAgICAgIC8vIHN0ICAgZGF5cyBpbiB5ZWFyIGJlZm9yZSBzdGFydCBvZiBtb250aAorICAgICAgICAvLyBzdDIgIGRheXMgaW4geWVhciBiZWZvcmUgbW9udGggaW4gbGVhcCB5ZWFyCisgICAgfTsKKworICAgIC8qKgorICAgICAqIERldGVybWluZXMgaWYgdGhlIGdpdmVuIHllYXIgaXMgYSBsZWFwIHllYXIuIFJldHVybnMgdHJ1ZSBpZiB0aGUKKyAgICAgKiBnaXZlbiB5ZWFyIGlzIGEgbGVhcCB5ZWFyLgorICAgICAqIEBwYXJhbSB5ZWFyIHRoZSBnaXZlbiB5ZWFyLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4geWVhciBpcyBhIGxlYXAgeWVhcjsgZmFsc2Ugb3RoZXJ3aXNlLgorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgYm9vbGVhbiBpc0dyZWdvcmlhbkxlYXBZZWFyKGludCB5ZWFyKSB7CisgICAgICAgIHJldHVybiAoeWVhciU0ID09IDApICYmICgoeWVhciUxMDAgIT0gMCkgfHwgKHllYXIlNDAwID09IDApKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGxlbmd0aCBvZiBhIG1vbnRoIG9mIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIuCisgICAgICogQHBhcmFtIHkgdGhlIGV4dGVuZGVkIHllYXIKKyAgICAgKiBAcGFyYW0gbSB0aGUgMC1iYXNlZCBtb250aCBudW1iZXIKKyAgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgZGF5cyBpbiB0aGUgZ2l2ZW4gbW9udGgKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBncmVnb3JpYW5Nb250aExlbmd0aChpbnQgeSwgaW50IG0pIHsKKyAgICAgICAgcmV0dXJuIEdSRUdPUklBTl9NT05USF9DT1VOVFttXVtpc0dyZWdvcmlhbkxlYXBZZWFyKHkpPzE6MF07CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBsZW5ndGggb2YgYSBwcmV2aW91cyBtb250aCBvZiB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyLgorICAgICAqIEBwYXJhbSB5IHRoZSBleHRlbmRlZCB5ZWFyCisgICAgICogQHBhcmFtIG0gdGhlIDAtYmFzZWQgbW9udGggbnVtYmVyCisgICAgICogQHJldHVybiB0aGUgbnVtYmVyIG9mIGRheXMgaW4gdGhlIG1vbnRoIHByZXZpb3VzIHRvIHRoZSBnaXZlbiBtb250aAorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IGdyZWdvcmlhblByZXZpb3VzTW9udGhMZW5ndGgoaW50IHksIGludCBtKSB7CisgICAgICAgIHJldHVybiAobSA+IDApID8gZ3JlZ29yaWFuTW9udGhMZW5ndGgoeSwgbS0xKSA6IDMxOworICAgIH0KKworICAgIC8qKgorICAgICAqIERpdmlkZSB0d28gbG9uZyBpbnRlZ2VycywgcmV0dXJuaW5nIHRoZSBmbG9vciBvZiB0aGUgcXVvdGllbnQuCisgICAgICogPHA+CisgICAgICogVW5saWtlIHRoZSBidWlsdC1pbiBkaXZpc2lvbiwgdGhpcyBpcyBtYXRoZW1hdGljYWxseSB3ZWxsLWJlaGF2ZWQuCisgICAgICogRS5nLiwgPGNvZGU+LTEvNDwvY29kZT4gPT4gMAorICAgICAqIGJ1dCA8Y29kZT5mbG9vckRpdmlkZSgtMSw0KTwvY29kZT4gPT4gLTEuCisgICAgICogQHBhcmFtIG51bWVyYXRvciB0aGUgbnVtZXJhdG9yCisgICAgICogQHBhcmFtIGRlbm9taW5hdG9yIGEgZGl2aXNvciB3aGljaCBtdXN0IGJlID4gMAorICAgICAqIEByZXR1cm4gdGhlIGZsb29yIG9mIHRoZSBxdW90aWVudC4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGxvbmcgZmxvb3JEaXZpZGUobG9uZyBudW1lcmF0b3IsIGxvbmcgZGVub21pbmF0b3IpIHsKKyAgICAgICAgLy8gV2UgZG8gdGhpcyBjb21wdXRhdGlvbiBpbiBvcmRlciB0byBoYW5kbGUKKyAgICAgICAgLy8gYSBudW1lcmF0b3Igb2YgTG9uZy5NSU5fVkFMVUUgY29ycmVjdGx5CisgICAgICAgIHJldHVybiAobnVtZXJhdG9yID49IDApID8KKyAgICAgICAgICAgIG51bWVyYXRvciAvIGRlbm9taW5hdG9yIDoKKyAgICAgICAgICAgICgobnVtZXJhdG9yICsgMSkgLyBkZW5vbWluYXRvcikgLSAxOworICAgIH0KKworICAgIC8qKgorICAgICAqIERpdmlkZSB0d28gaW50ZWdlcnMsIHJldHVybmluZyB0aGUgZmxvb3Igb2YgdGhlIHF1b3RpZW50LgorICAgICAqIDxwPgorICAgICAqIFVubGlrZSB0aGUgYnVpbHQtaW4gZGl2aXNpb24sIHRoaXMgaXMgbWF0aGVtYXRpY2FsbHkgd2VsbC1iZWhhdmVkLgorICAgICAqIEUuZy4sIDxjb2RlPi0xLzQ8L2NvZGU+ID0+IDAKKyAgICAgKiBidXQgPGNvZGU+Zmxvb3JEaXZpZGUoLTEsNCk8L2NvZGU+ID0+IC0xLgorICAgICAqIEBwYXJhbSBudW1lcmF0b3IgdGhlIG51bWVyYXRvcgorICAgICAqIEBwYXJhbSBkZW5vbWluYXRvciBhIGRpdmlzb3Igd2hpY2ggbXVzdCBiZSA+IDAKKyAgICAgKiBAcmV0dXJuIHRoZSBmbG9vciBvZiB0aGUgcXVvdGllbnQuCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgZmxvb3JEaXZpZGUoaW50IG51bWVyYXRvciwgaW50IGRlbm9taW5hdG9yKSB7CisgICAgICAgIC8vIFdlIGRvIHRoaXMgY29tcHV0YXRpb24gaW4gb3JkZXIgdG8gaGFuZGxlCisgICAgICAgIC8vIGEgbnVtZXJhdG9yIG9mIEludGVnZXIuTUlOX1ZBTFVFIGNvcnJlY3RseQorICAgICAgICByZXR1cm4gKG51bWVyYXRvciA+PSAwKSA/CisgICAgICAgICAgICBudW1lcmF0b3IgLyBkZW5vbWluYXRvciA6CisgICAgICAgICAgICAoKG51bWVyYXRvciArIDEpIC8gZGVub21pbmF0b3IpIC0gMTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEaXZpZGUgdHdvIGludGVnZXJzLCByZXR1cm5pbmcgdGhlIGZsb29yIG9mIHRoZSBxdW90aWVudCwgYW5kCisgICAgICogdGhlIG1vZHVsdXMgcmVtYWluZGVyLgorICAgICAqIDxwPgorICAgICAqIFVubGlrZSB0aGUgYnVpbHQtaW4gZGl2aXNpb24sIHRoaXMgaXMgbWF0aGVtYXRpY2FsbHkgd2VsbC1iZWhhdmVkLgorICAgICAqIEUuZy4sIDxjb2RlPi0xLzQ8L2NvZGU+ID0+IDAgYW5kIDxjb2RlPi0xJTQ8L2NvZGU+ID0+IC0xLAorICAgICAqIGJ1dCA8Y29kZT5mbG9vckRpdmlkZSgtMSw0KTwvY29kZT4gPT4gLTEgd2l0aCA8Y29kZT5yZW1haW5kZXJbMF08L2NvZGU+ID0+IDMuCisgICAgICogQHBhcmFtIG51bWVyYXRvciB0aGUgbnVtZXJhdG9yCisgICAgICogQHBhcmFtIGRlbm9taW5hdG9yIGEgZGl2aXNvciB3aGljaCBtdXN0IGJlID4gMAorICAgICAqIEBwYXJhbSByZW1haW5kZXIgYW4gYXJyYXkgb2YgYXQgbGVhc3Qgb25lIGVsZW1lbnQgaW4gd2hpY2ggdGhlIHZhbHVlCisgICAgICogPGNvZGU+bnVtZXJhdG9yIG1vZCBkZW5vbWluYXRvcjwvY29kZT4gaXMgcmV0dXJuZWQuIFVubGlrZSA8Y29kZT5udW1lcmF0b3IKKyAgICAgKiAlIGRlbm9taW5hdG9yPC9jb2RlPiwgdGhpcyB3aWxsIGFsd2F5cyBiZSBub24tbmVnYXRpdmUuCisgICAgICogQHJldHVybiB0aGUgZmxvb3Igb2YgdGhlIHF1b3RpZW50LgorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IGZsb29yRGl2aWRlKGludCBudW1lcmF0b3IsIGludCBkZW5vbWluYXRvciwgaW50W10gcmVtYWluZGVyKSB7CisgICAgICAgIGlmIChudW1lcmF0b3IgPj0gMCkgeworICAgICAgICAgICAgcmVtYWluZGVyWzBdID0gbnVtZXJhdG9yICUgZGVub21pbmF0b3I7CisgICAgICAgICAgICByZXR1cm4gbnVtZXJhdG9yIC8gZGVub21pbmF0b3I7CisgICAgICAgIH0KKyAgICAgICAgcmVtYWluZGVyWzBdID0gZGVub21pbmF0b3IgKyAobnVtZXJhdG9yICUgZGVub21pbmF0b3IpOworICAgICAgICByZXR1cm4gKChudW1lcmF0b3IgKyAxKSAvIGRlbm9taW5hdG9yKSAtIDE7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGl2aWRlIHR3byBpbnRlZ2VycywgcmV0dXJuaW5nIHRoZSBmbG9vciBvZiB0aGUgcXVvdGllbnQsIGFuZAorICAgICAqIHRoZSBtb2R1bHVzIHJlbWFpbmRlci4KKyAgICAgKiA8cD4KKyAgICAgKiBVbmxpa2UgdGhlIGJ1aWx0LWluIGRpdmlzaW9uLCB0aGlzIGlzIG1hdGhlbWF0aWNhbGx5IHdlbGwtYmVoYXZlZC4KKyAgICAgKiBFLmcuLCA8Y29kZT4tMS80PC9jb2RlPiA9PiAwIGFuZCA8Y29kZT4tMSU0PC9jb2RlPiA9PiAtMSwKKyAgICAgKiBidXQgPGNvZGU+Zmxvb3JEaXZpZGUoLTEsNCk8L2NvZGU+ID0+IC0xIHdpdGggPGNvZGU+cmVtYWluZGVyWzBdPC9jb2RlPiA9PiAzLgorICAgICAqIEBwYXJhbSBudW1lcmF0b3IgdGhlIG51bWVyYXRvcgorICAgICAqIEBwYXJhbSBkZW5vbWluYXRvciBhIGRpdmlzb3Igd2hpY2ggbXVzdCBiZSA+IDAKKyAgICAgKiBAcGFyYW0gcmVtYWluZGVyIGFuIGFycmF5IG9mIGF0IGxlYXN0IG9uZSBlbGVtZW50IGluIHdoaWNoIHRoZSB2YWx1ZQorICAgICAqIDxjb2RlPm51bWVyYXRvciBtb2QgZGVub21pbmF0b3I8L2NvZGU+IGlzIHJldHVybmVkLiBVbmxpa2UgPGNvZGU+bnVtZXJhdG9yCisgICAgICogJSBkZW5vbWluYXRvcjwvY29kZT4sIHRoaXMgd2lsbCBhbHdheXMgYmUgbm9uLW5lZ2F0aXZlLgorICAgICAqIEByZXR1cm4gdGhlIGZsb29yIG9mIHRoZSBxdW90aWVudC4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBmbG9vckRpdmlkZShsb25nIG51bWVyYXRvciwgaW50IGRlbm9taW5hdG9yLCBpbnRbXSByZW1haW5kZXIpIHsKKyAgICAgICAgaWYgKG51bWVyYXRvciA+PSAwKSB7CisgICAgICAgICAgICByZW1haW5kZXJbMF0gPSAoaW50KShudW1lcmF0b3IgJSBkZW5vbWluYXRvcik7CisgICAgICAgICAgICByZXR1cm4gKGludCkobnVtZXJhdG9yIC8gZGVub21pbmF0b3IpOworICAgICAgICB9CisgICAgICAgIGludCBxdW90aWVudCA9IChpbnQpKCgobnVtZXJhdG9yICsgMSkgLyBkZW5vbWluYXRvcikgLSAxKTsKKyAgICAgICAgcmVtYWluZGVyWzBdID0gKGludCkobnVtZXJhdG9yIC0gKHF1b3RpZW50ICogZGVub21pbmF0b3IpKTsKKyAgICAgICAgcmV0dXJuIHF1b3RpZW50OworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIEZJRUxEX05BTUUgPSB7CisgICAgICAgICJFUkEiLCAiWUVBUiIsICJNT05USCIsICJXRUVLX09GX1lFQVIiLCAiV0VFS19PRl9NT05USCIsCisgICAgICAgICJEQVlfT0ZfTU9OVEgiLCAiREFZX09GX1lFQVIiLCAiREFZX09GX1dFRUsiLAorICAgICAgICAiREFZX09GX1dFRUtfSU5fTU9OVEgiLCAiQU1fUE0iLCAiSE9VUiIsICJIT1VSX09GX0RBWSIsCisgICAgICAgICJNSU5VVEUiLCAiU0VDT05EIiwgIk1JTExJU0VDT05EIiwgIlpPTkVfT0ZGU0VUIiwKKyAgICAgICAgIkRTVF9PRkZTRVQiLCAiWUVBUl9XT1kiLCAiRE9XX0xPQ0FMIiwgIkVYVEVOREVEX1lFQVIiLAorICAgICAgICAiSlVMSUFOX0RBWSIsICJNSUxMSVNFQ09ORFNfSU5fREFZIiwKKyAgICB9OworCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgc3RyaW5nIG5hbWUgZm9yIGEgZmllbGQsIGZvciBkZWJ1Z2dpbmcgYW5kIGV4Y2VwdGlvbnMuCisgICAgICovCisgICAgcHJvdGVjdGVkIFN0cmluZyBmaWVsZE5hbWUoaW50IGZpZWxkKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gRklFTERfTkFNRVtmaWVsZF07CisgICAgICAgIH0gY2F0Y2ggKEFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICByZXR1cm4gIkZpZWxkICIgKyBmaWVsZDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlcnRzIHRpbWUgYXMgbWlsbGlzZWNvbmRzIHRvIEp1bGlhbiBkYXkuCisgICAgICogQHBhcmFtIG1pbGxpcyB0aGUgZ2l2ZW4gbWlsbGlzZWNvbmRzLgorICAgICAqIEByZXR1cm4gdGhlIEp1bGlhbiBkYXkgbnVtYmVyLgorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IG1pbGxpc1RvSnVsaWFuRGF5KGxvbmcgbWlsbGlzKSB7CisgICAgICAgIHJldHVybiAoaW50KSAoRVBPQ0hfSlVMSUFOX0RBWSArIGZsb29yRGl2aWRlKG1pbGxpcywgT05FX0RBWSkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlcnRzIEp1bGlhbiBkYXkgdG8gdGltZSBhcyBtaWxsaXNlY29uZHMuCisgICAgICogQHBhcmFtIGp1bGlhbiB0aGUgZ2l2ZW4gSnVsaWFuIGRheSBudW1iZXIuCisgICAgICogQHJldHVybiB0aW1lIGFzIG1pbGxpc2Vjb25kcy4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGxvbmcganVsaWFuRGF5VG9NaWxsaXMoaW50IGp1bGlhbikgeworICAgICAgICByZXR1cm4gKGp1bGlhbiAtIEVQT0NIX0pVTElBTl9EQVkpICogT05FX0RBWTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGRheSBvZiB3ZWVrLCBmcm9tIFNVTkRBWSB0byBTQVRVUkRBWSwgZ2l2ZW4gYSBKdWxpYW4gZGF5LgorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IGp1bGlhbkRheVRvRGF5T2ZXZWVrKGludCBqdWxpYW4pIHsKKyAgICAgICAgLy8gSWYganVsaWFuIGlzIG5lZ2F0aXZlLCB0aGVuIGp1bGlhbiU3IHdpbGwgYmUgbmVnYXRpdmUsIHNvIHdlIGFkanVzdAorICAgICAgICAvLyBhY2NvcmRpbmdseS4gIEp1bGlhbiBkYXkgMCBpcyBNb25kYXkuCisgICAgICAgIGludCBkYXlPZldlZWsgPSAoanVsaWFuICsgTU9OREFZKSAlIDc7CisgICAgICAgIGlmIChkYXlPZldlZWsgPCBTVU5EQVkpIHsKKyAgICAgICAgICAgIGRheU9mV2VlayArPSA3OworICAgICAgICB9CisgICAgICAgIHJldHVybiBkYXlPZldlZWs7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBjdXJyZW50IG1pbGxpc2Vjb25kcyB3aXRob3V0IHJlY29tcHV0aW5nLgorICAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCBsb25nIGludGVybmFsR2V0VGltZUluTWlsbGlzKCkgeworICAgICAgICByZXR1cm4gdGltZTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL0NhbGVuZGFyQXN0cm9ub21lci5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9DYWxlbmRhckFzdHJvbm9tZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xMzY0MzJkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9DYWxlbmRhckFzdHJvbm9tZXIuamF2YQpAQCAtMCwwICsxLDEyMTggQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvQXR0aWMvQ2FsZW5kYXJBc3Ryb25vbWVyLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMTEvMjggMjI6MTc6MDYgJCAKKyAqICRSZXZpc2lvbjogMS41ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnV0aWw7CisKK2ltcG9ydCBqYXZhLnV0aWwuKjsKK2ltcG9ydCBqYXZhLnRleHQuKjsKKworLyoqCisgKiA8Y29kZT5DYWxlbmRhckFzdHJvbm9tZXI8L2NvZGU+IGlzIGEgY2xhc3MgdGhhdCBjYW4gcGVyZm9ybSB0aGUgY2FsY3VsYXRpb25zIHRvCisgKiBkZXRlcm1pbmUgdGhlIHBvc2l0aW9ucyBvZiB0aGUgc3VuIGFuZCBtb29uLCB0aGUgdGltZSBvZiBzdW5yaXNlIGFuZAorICogc3Vuc2V0LCBhbmQgb3RoZXIgYXN0cm9ub215LXJlbGF0ZWQgZGF0YS4gIFRoZSBjYWxjdWxhdGlvbnMgaXQgcGVyZm9ybXMKKyAqIGFyZSBpbiBzb21lIGNhc2VzIHF1aXRlIGNvbXBsaWNhdGVkLCBhbmQgdGhpcyB1dGlsaXR5IGNsYXNzIHNhdmVzIHlvdQorICogdGhlIHRyb3VibGUgb2Ygd29ycnlpbmcgYWJvdXQgdGhlbS4KKyAqIDxwPgorICogVGhlIG1lYXN1cmVtZW50IG9mIHRpbWUgaXMgYSB2ZXJ5IGltcG9ydGFudCBwYXJ0IG9mIGFzdHJvbm9teS4gIEJlY2F1c2UKKyAqIGFzdHJvbm9taWNhbCBib2RpZXMgYXJlIGNvbnN0YW50bHkgaW4gbW90aW9uLCBvYnNlcnZhdGlvbnMgYXJlIG9ubHkgdmFsaWQKKyAqIGF0IGEgZ2l2ZW4gbW9tZW50IGluIHRpbWUuICBBY2NvcmRpbmdseSwgZWFjaCA8Y29kZT5DYWxlbmRhckFzdHJvbm9tZXI8L2NvZGU+CisgKiBvYmplY3QgaGFzIGEgPGNvZGU+dGltZTwvY29kZT4gcHJvcGVydHkgdGhhdCBkZXRlcm1pbmVzIHRoZSBkYXRlCisgKiBhbmQgdGltZSBmb3Igd2hpY2ggaXRzIGNhbGN1bGF0aW9ucyBhcmUgcGVyZm9ybWVkLiAgWW91IGNhbiBzZXQgYW5kCisgKiByZXRyaWV2ZSB0aGlzIHByb3BlcnR5IHdpdGgge0BsaW5rICNzZXREYXRlIHNldERhdGV9LCB7QGxpbmsgI2dldERhdGUgZ2V0RGF0ZX0KKyAqIGFuZCByZWxhdGVkIG1ldGhvZHMuCisgKiA8cD4KKyAqIEFsbW9zdCBhbGwgb2YgdGhlIGNhbGN1bGF0aW9ucyBwZXJmb3JtZWQgYnkgdGhpcyBjbGFzcywgb3IgYnkgYW55CisgKiBhc3Ryb25vbWVyLCBhcmUgYXBwcm94aW1hdGlvbnMgdG8gdmFyaW91cyBkZWdyZWVzIG9mIGFjY3VyYWN5LiAgVGhlCisgKiBjYWxjdWxhdGlvbnMgaW4gdGhpcyBjbGFzcyBhcmUgbW9zdGx5IG1vZGVsbGVkIGFmdGVyIHRob3NlIGRlc2NyaWJlZAorICogaW4gdGhlIGJvb2sKKyAqIDxhIGhyZWY9Imh0dHA6Ly93d3cuYW1hem9uLmNvbS9leGVjL29iaWRvcy9JU0JOPTA1MjEzNTY5OTciIHRhcmdldD0iX3RvcCI+CisgKiBQcmFjdGljYWwgQXN0cm9ub215IFdpdGggWW91ciBDYWxjdWxhdG9yPC9hPiwgYnkgUGV0ZXIgSi4KKyAqIER1ZmZldHQtU21pdGgsIENhbWJyaWRnZSBVbml2ZXJzaXR5IFByZXNzLCAxOTkwLiAgVGhpcyBpcyBhbiBleGNlbGxlbnQKKyAqIGJvb2ssIGFuZCBpZiB5b3Ugd2FudCBhIGdyZWF0ZXIgdW5kZXJzdGFuZGluZyBvZiBob3cgdGhlc2UgY2FsY3VsYXRpb25zCisgKiBhcmUgcGVyZm9ybWVkIGl0IGEgdmVyeSBnb29kLCByZWFkYWJsZSBzdGFydGluZyBwb2ludC4KKyAqIDxwPgorICogPHN0cm9uZz5XQVJOSU5HOjwvc3Ryb25nPiBUaGlzIGNsYXNzIGlzIHZlcnkgZWFybHkgaW4gaXRzIGRldmVsb3BtZW50LCBhbmQKKyAqIGl0IGlzIGhpZ2hseSBsaWtlbHkgdGhhdCBpdHMgQVBJIHdpbGwgY2hhbmdlIHRvIHNvbWUgZGVncmVlIGluIHRoZSBmdXR1cmUuCisgKiBBdCB0aGUgbW9tZW50LCBpdCBiYXNpY2FsbHkgZG9lcyBqdXN0IGVub3VnaCB0byBzdXBwb3J0IHtAbGluayBJc2xhbWljQ2FsZW5kYXJ9CisgKiBhbmQge0BsaW5rIENoaW5lc2VDYWxlbmRhcn0uCisgKgorICogQGF1dGhvciBMYXVyYSBXZXJuZXIKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqLworcHVibGljIGNsYXNzIENhbGVuZGFyQXN0cm9ub21lciB7CisgICAgCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQXN0cm9ub21pY2FsIGNvbnN0YW50cworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogVGhlIG51bWJlciBvZiBzdGFuZGFyZCBob3VycyBpbiBvbmUgc2lkZXJlYWwgZGF5LgorICAgICAqIEFwcHJveGltYXRlbHkgMjQuOTMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBkb3VibGUgU0lERVJFQUxfREFZID0gMjMuOTM0NDY5NjAwMjc7CisgICAgCisgICAgLyoqCisgICAgICogVGhlIG51bWJlciBvZiBzaWRlcmVhbCBob3VycyBpbiBvbmUgbWVhbiBzb2xhciBkYXkuCisgICAgICogQXBwcm94aW1hdGVseSAyNC4wNy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGRvdWJsZSBTT0xBUl9EQVkgPSAgMjQuMDY1NzA5ODE2OworICAgIAorICAgIC8qKgorICAgICAqIFRoZSBhdmVyYWdlIG51bWJlciBvZiBzb2xhciBkYXlzIGZyb20gb25lIG5ldyBtb29uIHRvIHRoZSBuZXh0LiAgVGhpcyBpcyB0aGUgdGltZQorICAgICAqIGl0IHRha2VzIGZvciB0aGUgbW9vbiB0byByZXR1cm4gdGhlIHNhbWUgZWNsaXB0aWMgbG9uZ2l0dWRlIGFzIHRoZSBzdW4uCisgICAgICogSXQgaXMgbG9uZ2VyIHRoYW4gdGhlIHNpZGVyZWFsIG1vbnRoIGJlY2F1c2UgdGhlIHN1bidzIGxvbmdpdHVkZSBpbmNyZWFzZXMKKyAgICAgKiBkdXJpbmcgdGhlIHllYXIgZHVlIHRvIHRoZSByZXZvbHV0aW9uIG9mIHRoZSBlYXJ0aCBhcm91bmQgdGhlIHN1bi4KKyAgICAgKiBBcHByb3hpbWF0ZWx5IDI5LjUzLgorICAgICAqCisgICAgICogQHNlZSAjU0lERVJFQUxfTU9OVEgKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGRvdWJsZSBTWU5PRElDX01PTlRIID0gMjkuNTMwNTg4ODUzOworICAgIAorICAgIC8qKgorICAgICAqIFRoZSBhdmVyYWdlIG51bWJlciBvZiBkYXlzIGl0IHRha2VzCisgICAgICogZm9yIHRoZSBtb29uIHRvIHJldHVybiB0byB0aGUgc2FtZSBlY2xpcHRpYyBsb25naXR1ZGUgcmVsYXRpdmUgdG8gdGhlCisgICAgICogc3RlbGxhciBiYWNrZ3JvdW5kLiAgVGhpcyBpcyByZWZlcnJlZCB0byBhcyB0aGUgc2lkZXJlYWwgbW9udGguCisgICAgICogSXQgaXMgc2hvcnRlciB0aGFuIHRoZSBzeW5vZGljIG1vbnRoIGR1ZSB0bworICAgICAqIHRoZSByZXZvbHV0aW9uIG9mIHRoZSBlYXJ0aCBhcm91bmQgdGhlIHN1bi4KKyAgICAgKiBBcHByb3hpbWF0ZWx5IDI3LjMyLgorICAgICAqCisgICAgICogQHNlZSAjU1lOT0RJQ19NT05USAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZG91YmxlIFNJREVSRUFMX01PTlRIID0gMjcuMzIxNjY7CisgICAgCisgICAgLyoqCisgICAgICogVGhlIGF2ZXJhZ2UgbnVtYmVyIG51bWJlciBvZiBkYXlzIGJldHdlZW4gc3VjY2Vzc2l2ZSB2ZXJuYWwgZXF1aW5veGVzLgorICAgICAqIER1ZSB0byB0aGUgcHJlY2Vzc2lvbiBvZiB0aGUgZWFydGgncworICAgICAqIGF4aXMsIHRoaXMgaXMgbm90IHByZWNpc2VseSB0aGUgc2FtZSBhcyB0aGUgc2lkZXJlYWwgeWVhci4KKyAgICAgKiBBcHByb3hpbWF0ZWx5IDM2NS4yNAorICAgICAqCisgICAgICogQHNlZSAjU0lERVJFQUxfWUVBUgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZG91YmxlIFRST1BJQ0FMX1lFQVIgPSAzNjUuMjQyMTkxOworICAgIAorICAgIC8qKgorICAgICAqIFRoZSBhdmVyYWdlIG51bWJlciBvZiBkYXlzIGl0IHRha2VzCisgICAgICogZm9yIHRoZSBzdW4gdG8gcmV0dXJuIHRvIHRoZSBzYW1lIHBvc2l0aW9uIGFnYWluc3QgdGhlIGZpeGVkIHN0ZWxsYXIKKyAgICAgKiBiYWNrZ3JvdW5kLiAgVGhpcyBpcyB0aGUgZHVyYXRpb24gb2Ygb25lIG9yYml0IG9mIHRoZSBlYXJ0aCBhYm91dCB0aGUgc3VuCisgICAgICogYXMgaXQgd291bGQgYXBwZWFyIHRvIGFuIG91dHNpZGUgb2JzZXJ2ZXIuCisgICAgICogRHVlIHRvIHRoZSBwcmVjZXNzaW9uIG9mIHRoZSBlYXJ0aCdzCisgICAgICogYXhpcywgdGhpcyBpcyBub3QgcHJlY2lzZWx5IHRoZSBzYW1lIGFzIHRoZSB0cm9waWNhbCB5ZWFyLgorICAgICAqIEFwcHJveGltYXRlbHkgMzY1LjI1LgorICAgICAqCisgICAgICogQHNlZSAjVFJPUElDQUxfWUVBUgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZG91YmxlIFNJREVSRUFMX1lFQVIgPSAzNjUuMjU2MzY7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBUaW1lLXJlbGF0ZWQgY29uc3RhbnRzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKiogVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gb25lIHNlY29uZC4gKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCAgU0VDT05EX01TID0gMTAwMDsKKworICAgIC8qKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBvbmUgbWludXRlLiAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50ICBNSU5VVEVfTVMgPSA2MCpTRUNPTkRfTVM7CisKKyAgICAvKiogVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gb25lIGhvdXIuICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgIEhPVVJfTVMgICA9IDYwKk1JTlVURV9NUzsKKworICAgIC8qKiBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBvbmUgZGF5LiAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgbG9uZyBEQVlfTVMgICAgPSAyNCpIT1VSX01TOworCisgICAgLyoqCisgICAgICogVGhlIHN0YXJ0IG9mIHRoZSBqdWxpYW4gZGF5IG51bWJlcmluZyBzY2hlbWUgdXNlZCBieSBhc3Ryb25vbWVycywgd2hpY2gKKyAgICAgKiBpcyAxLzEvNDcxMyBCQyAoSnVsaWFuKSwgMTI6MDAgR01ULiAgVGhpcyBpcyBnaXZlbiBhcyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcworICAgICAqIHNpbmNlIDEvMS8xOTcwIEFEIChHcmVnb3JpYW4pLCBhIG5lZ2F0aXZlIG51bWJlci4KKyAgICAgKiBOb3RlIHRoYXQganVsaWFuIGRheSBudW1iZXJzIGFuZAorICAgICAqIHRoZSBKdWxpYW4gY2FsZW5kYXIgYXJlIDxlbT5ub3Q8L2VtPiB0aGUgc2FtZSB0aGluZy4gIEFsc28gbm90ZSB0aGF0CisgICAgICoganVsaWFuIGRheXMgc3RhcnQgYXQgPGVtPm5vb248L2VtPiwgbm90IG1pZG5pZ2h0LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgbG9uZyBKVUxJQU5fRVBPQ0hfTVMgPSAtMjEwODY2NzYwMDAwMDAwTDsKKyAgICAKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIEFzc29ydGVkIHByaXZhdGUgZGF0YSB1c2VkIGZvciBjb252ZXJzaW9ucworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gTXkgb3duIGNvcGllcyBvZiB0aGVzZSBzbyBjb21waWxlcnMgYXJlIG1vcmUgbGlrZWx5IHRvIG9wdGltaXplIHRoZW0gYXdheQorICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIGRvdWJsZSBQSSA9IDMuMTQxNTkyNjUzNTg5NzkzMjM4NDY7CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgZG91YmxlIFBJMiA9IFBJICogMi4wOworCisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgZG91YmxlIEhPVVJfUkFEID0gUEkgLyAxMjsgICAgICAgIC8vIGhvdXJzIC0+IHJhZGlhbnMKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBkb3VibGUgUkFEX0hPVVIgPSAxMiAvIFBJOyAgICAgICAgLy8gcmFkaWFucyAtPiBob3VycworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIGRvdWJsZSBERUdfUkFEICA9IFBJIC8gMTgwOyAgICAgICAgLy8gZGVncmVlcyAtPiByYWRpYW5zCisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgZG91YmxlIFJBRF9ERUcgID0gMTgwIC8gUEk7ICAgICAgICAvLyByYWRpYW5zIC0+IGRlZ3JlZXMKKyAgICAKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBDb25zdHJ1Y3RvcnMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIG5ldyA8Y29kZT5DYWxlbmRhckFzdHJvbm9tZXI8L2NvZGU+IG9iamVjdCB0aGF0IGlzIGluaXRpYWxpemVkIHRvCisgICAgICogdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgQ2FsZW5kYXJBc3Ryb25vbWVyKCkgeworICAgICAgICB0aGlzKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgbmV3IDxjb2RlPkNhbGVuZGFyQXN0cm9ub21lcjwvY29kZT4gb2JqZWN0IHRoYXQgaXMgaW5pdGlhbGl6ZWQgdG8KKyAgICAgKiB0aGUgc3BlY2lmaWVkIGRhdGUgYW5kIHRpbWUuCisgICAgICovCisgICAgcHVibGljIENhbGVuZGFyQXN0cm9ub21lcihEYXRlIGQpIHsKKyAgICAgICAgdGhpcyhkLmdldFRpbWUoKSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIG5ldyA8Y29kZT5DYWxlbmRhckFzdHJvbm9tZXI8L2NvZGU+IG9iamVjdCB0aGF0IGlzIGluaXRpYWxpemVkIHRvCisgICAgICogdGhlIHNwZWNpZmllZCB0aW1lLiAgVGhlIHRpbWUgaXMgZXhwcmVzc2VkIGFzIGEgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBzaW5jZQorICAgICAqIEphbnVhcnkgMSwgMTk3MCBBRCAoR3JlZ29yaWFuKS4KKyAgICAgKgorICAgICAqIEBzZWUgamF2YS51dGlsLkRhdGUjZ2V0VGltZQorICAgICAqLworICAgIHB1YmxpYyBDYWxlbmRhckFzdHJvbm9tZXIobG9uZyBhVGltZSkgeworICAgICAgICB0aW1lID0gYVRpbWU7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIG5ldyA8Y29kZT5DYWxlbmRhckFzdHJvbm9tZXI8L2NvZGU+IG9iamVjdCB3aXRoIHRoZSBnaXZlbgorICAgICAqIGxhdGl0dWRlIGFuZCBsb25naXR1ZGUuICBUaGUgb2JqZWN0J3MgdGltZSBpcyBzZXQgdG8gdGhlIGN1cnJlbnQKKyAgICAgKiBkYXRlIGFuZCB0aW1lLgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBsb25naXR1ZGUgVGhlIGRlc2lyZWQgbG9uZ2l0dWRlLCBpbiA8ZW0+ZGVncmVlczwvZW0+IGVhc3Qgb2YKKyAgICAgKiAgICAgICAgICAgICAgICAgIHRoZSBHcmVlbndpY2ggbWVyaWRpYW4uCisgICAgICoKKyAgICAgKiBAcGFyYW0gbGF0aXR1ZGUgIFRoZSBkZXNpcmVkIGxhdGl0dWRlLCBpbiA8ZW0+ZGVncmVlczwvZW0+LiAgUG9zaXRpdmUKKyAgICAgKiAgICAgICAgICAgICAgICAgIHZhbHVlcyBzaWduaWZ5IE5vcnRoLCBuZWdhdGl2ZSBTb3V0aC4KKyAgICAgKgorICAgICAqIEBzZWUgamF2YS51dGlsLkRhdGUjZ2V0VGltZQorICAgICAqLworICAgIHB1YmxpYyBDYWxlbmRhckFzdHJvbm9tZXIoZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGxhdGl0dWRlKSB7CisgICAgICAgIHRoaXMoKTsKKyAgICAgICAgZkxvbmdpdHVkZSA9IG5vcm1QSShsb25naXR1ZGUgKiBERUdfUkFEKTsKKyAgICAgICAgZkxhdGl0dWRlICA9IG5vcm1QSShsYXRpdHVkZSAgKiBERUdfUkFEKTsKKyAgICAgICAgZkdtdE9mZnNldCA9IChsb25nKShmTG9uZ2l0dWRlICogMjQgKiBIT1VSX01TIC8gUEkyKTsKKyAgICB9CisgICAgCisgICAgCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gVGltZSBhbmQgZGF0ZSBnZXR0ZXJzIGFuZCBzZXR0ZXJzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogU2V0IHRoZSBjdXJyZW50IGRhdGUgYW5kIHRpbWUgb2YgdGhpcyA8Y29kZT5DYWxlbmRhckFzdHJvbm9tZXI8L2NvZGU+IG9iamVjdC4gIEFsbAorICAgICAqIGFzdHJvbm9taWNhbCBjYWxjdWxhdGlvbnMgYXJlIHBlcmZvcm1lZCBiYXNlZCBvbiB0aGlzIHRpbWUgc2V0dGluZy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBhVGltZSB0aGUgZGF0ZSBhbmQgdGltZSwgZXhwcmVzc2VkIGFzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlCisgICAgICogICAgICAgICAgICAgIDEvMS8xOTcwIDA6MDAgR01UIChHcmVnb3JpYW4pLgorICAgICAqCisgICAgICogQHNlZSAjc2V0RGF0ZQorICAgICAqIEBzZWUgI2dldFRpbWUKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRUaW1lKGxvbmcgYVRpbWUpIHsKKyAgICAgICAgdGltZSA9IGFUaW1lOworICAgICAgICBjbGVhckNhY2hlKCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFNldCB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lIG9mIHRoaXMgPGNvZGU+Q2FsZW5kYXJBc3Ryb25vbWVyPC9jb2RlPiBvYmplY3QuICBBbGwKKyAgICAgKiBhc3Ryb25vbWljYWwgY2FsY3VsYXRpb25zIGFyZSBwZXJmb3JtZWQgYmFzZWQgb24gdGhpcyB0aW1lIHNldHRpbmcuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYVRpbWUgdGhlIHRpbWUgYW5kIGRhdGUsIGV4cHJlc3NlZCBhcyBhIDxjb2RlPkRhdGU8L2NvZGU+IG9iamVjdC4KKyAgICAgKgorICAgICAqIEBzZWUgI3NldFRpbWUKKyAgICAgKiBAc2VlICNnZXREYXRlCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0RGF0ZShEYXRlIGRhdGUpIHsKKyAgICAgICAgc2V0VGltZShkYXRlLmdldFRpbWUoKSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFNldCB0aGUgY3VycmVudCBkYXRlIGFuZCB0aW1lIG9mIHRoaXMgPGNvZGU+Q2FsZW5kYXJBc3Ryb25vbWVyPC9jb2RlPiBvYmplY3QuICBBbGwKKyAgICAgKiBhc3Ryb25vbWljYWwgY2FsY3VsYXRpb25zIGFyZSBwZXJmb3JtZWQgYmFzZWQgb24gdGhpcyB0aW1lIHNldHRpbmcuCisgICAgICoKKyAgICAgKiBAcGFyYW0gamRuICAgdGhlIGRlc2lyZWQgdGltZSwgZXhwcmVzc2VkIGFzIGEgImp1bGlhbiBkYXkgbnVtYmVyIiwKKyAgICAgKiAgICAgICAgICAgICAgd2hpY2ggaXMgdGhlIG51bWJlciBvZiBlbGFwc2VkIGRheXMgc2luY2UgCisgICAgICogICAgICAgICAgICAgIDEvMS80NzEzIEJDIChKdWxpYW4pLCAxMjowMCBHTVQuICBOb3RlIHRoYXQganVsaWFuIGRheQorICAgICAqICAgICAgICAgICAgICBudW1iZXJzIHN0YXJ0IGF0IDxlbT5ub29uPC9lbT4uICBUbyBnZXQgdGhlIGpkbiBmb3IKKyAgICAgKiAgICAgICAgICAgICAgdGhlIGNvcnJlc3BvbmRpbmcgbWlkbmlnaHQsIHN1YnRyYWN0IDAuNS4KKyAgICAgKgorICAgICAqIEBzZWUgI2dldEp1bGlhbkRheQorICAgICAqIEBzZWUgI0pVTElBTl9FUE9DSF9NUworICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEp1bGlhbkRheShkb3VibGUgamRuKSB7CisgICAgICAgIHRpbWUgPSAobG9uZykoamRuICogREFZX01TKSArIEpVTElBTl9FUE9DSF9NUzsKKyAgICAgICAgY2xlYXJDYWNoZSgpOworICAgICAgICBqdWxpYW5EYXkgPSBqZG47CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEdldCB0aGUgY3VycmVudCB0aW1lIG9mIHRoaXMgPGNvZGU+Q2FsZW5kYXJBc3Ryb25vbWVyPC9jb2RlPiBvYmplY3QsCisgICAgICogcmVwcmVzZW50ZWQgYXMgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgc2luY2UKKyAgICAgKiAxLzEvMTk3MCBBRCAwOjAwIEdNVCAoR3JlZ29yaWFuKS4KKyAgICAgKgorICAgICAqIEBzZWUgI3NldFRpbWUKKyAgICAgKiBAc2VlICNnZXREYXRlCisgICAgICovCisgICAgcHVibGljIGxvbmcgZ2V0VGltZSgpIHsKKyAgICAgICAgcmV0dXJuIHRpbWU7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEdldCB0aGUgY3VycmVudCB0aW1lIG9mIHRoaXMgPGNvZGU+Q2FsZW5kYXJBc3Ryb25vbWVyPC9jb2RlPiBvYmplY3QsCisgICAgICogcmVwcmVzZW50ZWQgYXMgYSA8Y29kZT5EYXRlPC9jb2RlPiBvYmplY3QuCisgICAgICoKKyAgICAgKiBAc2VlICNzZXREYXRlCisgICAgICogQHNlZSAjZ2V0VGltZQorICAgICAqLworICAgIHB1YmxpYyBEYXRlIGdldERhdGUoKSB7CisgICAgICAgIHJldHVybiBuZXcgRGF0ZSh0aW1lKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2V0IHRoZSBjdXJyZW50IHRpbWUgb2YgdGhpcyA8Y29kZT5DYWxlbmRhckFzdHJvbm9tZXI8L2NvZGU+IG9iamVjdCwKKyAgICAgKiBleHByZXNzZWQgYXMgYSAianVsaWFuIGRheSBudW1iZXIiLCB3aGljaCBpcyB0aGUgbnVtYmVyIG9mIGVsYXBzZWQKKyAgICAgKiBkYXlzIHNpbmNlIDEvMS80NzEzIEJDIChKdWxpYW4pLCAxMjowMCBHTVQuCisgICAgICoKKyAgICAgKiBAc2VlICNzZXRKdWxpYW5EYXkKKyAgICAgKiBAc2VlICNKVUxJQU5fRVBPQ0hfTVMKKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGdldEp1bGlhbkRheSgpIHsKKyAgICAgICAgaWYgKGp1bGlhbkRheSA9PSBJTlZBTElEKSB7CisgICAgICAgICAgICBqdWxpYW5EYXkgPSAoZG91YmxlKSh0aW1lIC0gSlVMSUFOX0VQT0NIX01TKSAvIChkb3VibGUpREFZX01TOworICAgICAgICB9CisgICAgICAgIHJldHVybiBqdWxpYW5EYXk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybiB0aGlzIG9iamVjdCdzIHRpbWUgZXhwcmVzc2VkIGluIGp1bGlhbiBjZW50dXJpZXM6CisgICAgICogdGhlIG51bWJlciBvZiBjZW50dXJpZXMgYWZ0ZXIgMS8xLzE5MDAgQUQsIDEyOjAwIEdNVAorICAgICAqCisgICAgICogQHNlZSAjZ2V0SnVsaWFuRGF5CisgICAgICovCisgICAgcHVibGljIGRvdWJsZSBnZXRKdWxpYW5DZW50dXJ5KCkgeworICAgICAgICBpZiAoanVsaWFuQ2VudHVyeSA9PSBJTlZBTElEKSB7CisgICAgICAgICAgICBqdWxpYW5DZW50dXJ5ID0gKGdldEp1bGlhbkRheSgpIC0gMjQxNTAyMC4wKSAvIDM2NTI1OworICAgICAgICB9CisgICAgICAgIHJldHVybiBqdWxpYW5DZW50dXJ5OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGN1cnJlbnQgR3JlZW53aWNoIHNpZGVyZWFsIHRpbWUsIG1lYXN1cmVkIGluIGhvdXJzCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSBnZXRHcmVlbndpY2hTaWRlcmVhbCgpIHsKKyAgICAgICAgaWYgKHNpZGVyZWFsVGltZSA9PSBJTlZBTElEKSB7CisgICAgICAgICAgICAvLyBTZWUgcGFnZSA4NiBvZiAiUHJhY3RpYWwgQXN0cm9ub215IHdpdGggeW91ciBDYWxjdWxhdG9yIiwKKyAgICAgICAgICAgIC8vIGJ5IFBldGVyIER1ZmZldC1TbWl0aCwgZm9yIGRldGFpbHMgb24gdGhlIGFsZ29yaXRobS4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGRvdWJsZSBVVCA9IG5vcm1hbGl6ZSgoZG91YmxlKXRpbWUvSE9VUl9NUywgMjQpOworICAgICAgICAKKyAgICAgICAgICAgIHNpZGVyZWFsVGltZSA9IG5vcm1hbGl6ZShnZXRTaWRlcmVhbE9mZnNldCgpICsgVVQqMS4wMDI3Mzc5MDksIDI0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2lkZXJlYWxUaW1lOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIGRvdWJsZSBnZXRTaWRlcmVhbE9mZnNldCgpIHsKKyAgICAgICAgaWYgKHNpZGVyZWFsVDAgPT0gSU5WQUxJRCkgeworICAgICAgICAgICAgZG91YmxlIEpEICA9IE1hdGguZmxvb3IoZ2V0SnVsaWFuRGF5KCkgLSAwLjUpICsgMC41OworICAgICAgICAgICAgZG91YmxlIFMgICA9IEpEIC0gMjQ1MTU0NS4wOworICAgICAgICAgICAgZG91YmxlIFQgICA9IFMgLyAzNjUyNS4wOworICAgICAgICAgICAgc2lkZXJlYWxUMCA9IG5vcm1hbGl6ZSg2LjY5NzM3NDU1OCArIDI0MDAuMDUxMzM2KlQgKyAwLjAwMDAyNTg2MipUKlQsIDI0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2lkZXJlYWxUMDsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgY3VycmVudCBsb2NhbCBzaWRlcmVhbCB0aW1lLCBtZWFzdXJlZCBpbiBob3VycworICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgZ2V0TG9jYWxTaWRlcmVhbCgpIHsKKyAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZShnZXRHcmVlbndpY2hTaWRlcmVhbCgpICsgKGRvdWJsZSlmR210T2Zmc2V0L0hPVVJfTVMsIDI0KTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ29udmVydHMgbG9jYWwgc2lkZXJlYWwgdGltZSB0byBVbml2ZXJzYWwgVGltZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBsc3QgICBUaGUgTG9jYWwgU2lkZXJlYWwgVGltZSwgaW4gaG91cnMgc2luY2Ugc2lkZXJlYWwgbWlkbmlnaHQKKyAgICAgKiAgICAgICAgICAgICAgb24gdGhpcyBvYmplY3QncyBjdXJyZW50IGRhdGUuCisgICAgICoKKyAgICAgKiBAcmV0dXJuICAgICAgVGhlIGNvcnJlc3BvbmRpbmcgVW5pdmVyc2FsIFRpbWUsIGluIG1pbGxpc2Vjb25kcyBzaW5jZQorICAgICAqICAgICAgICAgICAgICAxIEphbiAxOTcwLCBHTVQuICAKKyAgICAgKi8KKyAgICBwcml2YXRlIGxvbmcgbHN0VG9VVChkb3VibGUgbHN0KSB7CisgICAgICAgIC8vIENvbnZlcnQgdG8gbG9jYWwgbWVhbiB0aW1lCisgICAgICAgIGRvdWJsZSBsdCA9IG5vcm1hbGl6ZSgobHN0IC0gZ2V0U2lkZXJlYWxPZmZzZXQoKSkgKiAwLjk5NzI2OTU2NjMsIDI0KTsKKyAgICAgICAgCisgICAgICAgIC8vIFRoZW4gZmluZCBsb2NhbCBtaWRuaWdodCBvbiB0aGlzIGRheQorICAgICAgICBsb25nIGJhc2UgPSBEQVlfTVMgKiAoKHRpbWUgKyBmR210T2Zmc2V0KS9EQVlfTVMpIC0gZkdtdE9mZnNldDsKKyAgICAgICAgCisgICAgICAgIC8vb3V0KCIgICAgbHQgID0iICsgbHQgKyAiIGhvdXJzIik7CisgICAgICAgIC8vb3V0KCIgICAgYmFzZT0iICsgbmV3IERhdGUoYmFzZSkpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIGJhc2UgKyAobG9uZykobHQgKiBIT1VSX01TKTsKKyAgICB9CisgICAgCisgICAgCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQ29vcmRpbmF0ZSB0cmFuc2Zvcm1hdGlvbnMsIGFsbCBiYXNlZCBvbiB0aGUgY3VycmVudCB0aW1lIG9mIHRoaXMgb2JqZWN0CisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0IGZyb20gZWNsaXB0aWMgdG8gZXF1YXRvcmlhbCBjb29yZGluYXRlcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBlY2xpcHRpYyAgQSBwb2ludCBpbiB0aGUgc2t5IGluIGVjbGlwdGljIGNvb3JkaW5hdGVzLgorICAgICAqIEByZXR1cm4gICAgICAgICAgVGhlIGNvcnJlc3BvbmRpbmcgcG9pbnQgaW4gZXF1YXRvcmlhbCBjb29yZGluYXRlcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgRXF1YXRvcmlhbCBlY2xpcHRpY1RvRXF1YXRvcmlhbChFY2xpcHRpYyBlY2xpcHRpYykKKyAgICB7CisgICAgICAgIHJldHVybiBlY2xpcHRpY1RvRXF1YXRvcmlhbChlY2xpcHRpYy5sb25naXR1ZGUsIGVjbGlwdGljLmxhdGl0dWRlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0IGZyb20gZWNsaXB0aWMgdG8gZXF1YXRvcmlhbCBjb29yZGluYXRlcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBlY2xpcExvbmcgICAgIFRoZSBlY2xpcHRpYyBsb25naXR1ZGUKKyAgICAgKiBAcGFyYW0gZWNsaXBMYXQgICAgICBUaGUgZWNsaXB0aWMgbGF0aXR1ZGUKKyAgICAgKgorICAgICAqIEByZXR1cm4gICAgICAgICAgICAgIFRoZSBjb3JyZXNwb25kaW5nIHBvaW50IGluIGVxdWF0b3JpYWwgY29vcmRpbmF0ZXMuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIEVxdWF0b3JpYWwgZWNsaXB0aWNUb0VxdWF0b3JpYWwoZG91YmxlIGVjbGlwTG9uZywgZG91YmxlIGVjbGlwTGF0KQorICAgIHsKKyAgICAgICAgLy8gU2VlIHBhZ2UgNDIgb2YgIlByYWN0aWFsIEFzdHJvbm9teSB3aXRoIHlvdXIgQ2FsY3VsYXRvciIsCisgICAgICAgIC8vIGJ5IFBldGVyIER1ZmZldC1TbWl0aCwgZm9yIGRldGFpbHMgb24gdGhlIGFsZ29yaXRobS4KKworICAgICAgICBkb3VibGUgb2JsaXEgPSBlY2xpcHRpY09ibGlxdWl0eSgpOworICAgICAgICBkb3VibGUgc2luRSA9IE1hdGguc2luKG9ibGlxKTsKKyAgICAgICAgZG91YmxlIGNvc0UgPSBNYXRoLmNvcyhvYmxpcSk7CisgICAgICAgIAorICAgICAgICBkb3VibGUgc2luTCA9IE1hdGguc2luKGVjbGlwTG9uZyk7CisgICAgICAgIGRvdWJsZSBjb3NMID0gTWF0aC5jb3MoZWNsaXBMb25nKTsKKyAgICAgICAgCisgICAgICAgIGRvdWJsZSBzaW5CID0gTWF0aC5zaW4oZWNsaXBMYXQpOworICAgICAgICBkb3VibGUgY29zQiA9IE1hdGguY29zKGVjbGlwTGF0KTsKKyAgICAgICAgZG91YmxlIHRhbkIgPSBNYXRoLnRhbihlY2xpcExhdCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gbmV3IEVxdWF0b3JpYWwoTWF0aC5hdGFuMihzaW5MKmNvc0UgLSB0YW5CKnNpbkUsIGNvc0wpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGguYXNpbihzaW5CKmNvc0UgKyBjb3NCKnNpbkUqc2luTCkgKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZXJ0IGZyb20gZWNsaXB0aWMgbG9uZ2l0dWRlIHRvIGVxdWF0b3JpYWwgY29vcmRpbmF0ZXMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZWNsaXBMb25nICAgICBUaGUgZWNsaXB0aWMgbG9uZ2l0dWRlCisgICAgICoKKyAgICAgKiBAcmV0dXJuICAgICAgICAgICAgICBUaGUgY29ycmVzcG9uZGluZyBwb2ludCBpbiBlcXVhdG9yaWFsIGNvb3JkaW5hdGVzLgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBFcXVhdG9yaWFsIGVjbGlwdGljVG9FcXVhdG9yaWFsKGRvdWJsZSBlY2xpcExvbmcpCisgICAgeworICAgICAgICByZXR1cm4gZWNsaXB0aWNUb0VxdWF0b3JpYWwoZWNsaXBMb25nLCAwKTsgIC8vIFRPRE86IG9wdGltaXplCisgICAgfQorCisKKyAgICBwdWJsaWMgSG9yaXpvbiBlY2xpcHRpY1RvSG9yaXpvbihkb3VibGUgZWNsaXBMb25nKQorICAgIHsKKyAgICAgICAgRXF1YXRvcmlhbCBlcXVhdG9yaWFsID0gZWNsaXB0aWNUb0VxdWF0b3JpYWwoZWNsaXBMb25nKTsKKyAgICAgICAgCisgICAgICAgIGRvdWJsZSBIID0gZ2V0TG9jYWxTaWRlcmVhbCgpKlBJLzEyIC0gZXF1YXRvcmlhbC5hc2NlbnNpb247ICAgICAvLyBIb3VyLWFuZ2xlCisgICAgICAgIAorICAgICAgICBkb3VibGUgc2luSCA9IE1hdGguc2luKEgpOworICAgICAgICBkb3VibGUgY29zSCA9IE1hdGguY29zKEgpOworICAgICAgICBkb3VibGUgc2luRCA9IE1hdGguc2luKGVxdWF0b3JpYWwuZGVjbGluYXRpb24pOworICAgICAgICBkb3VibGUgY29zRCA9IE1hdGguY29zKGVxdWF0b3JpYWwuZGVjbGluYXRpb24pOworICAgICAgICBkb3VibGUgc2luTCA9IE1hdGguc2luKGZMYXRpdHVkZSk7CisgICAgICAgIGRvdWJsZSBjb3NMID0gTWF0aC5jb3MoZkxhdGl0dWRlKTsKKyAgICAgICAgCisgICAgICAgIGRvdWJsZSBhbHRpdHVkZSA9IE1hdGguYXNpbihzaW5EKnNpbkwgKyBjb3NEKmNvc0wqY29zSCk7CisgICAgICAgIGRvdWJsZSBhemltdXRoICA9IE1hdGguYXRhbjIoLWNvc0QqY29zTCpzaW5ILCBzaW5EIC0gc2luTCAqIE1hdGguc2luKGFsdGl0dWRlKSk7CisKKyAgICAgICAgcmV0dXJuIG5ldyBIb3Jpem9uKGF6aW11dGgsIGFsdGl0dWRlKTsKKyAgICB9CisKKyAgICAKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBUaGUgU3VuCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLy8KKyAgICAvLyBQYXJhbWV0ZXJzIG9mIHRoZSBTdW4ncyBvcmJpdCBhcyBvZiAxLzEvMTk5MAorICAgIC8vIEFuZ2xlcyBhcmUgaW4gcmFkaWFucyAoYWZ0ZXIgbXVsdGlwbHlpbmcgYnkgUEkvMTgwKQorICAgIC8vCisgICAgZG91YmxlIGpkbkVwb2NoICA9IDI0NDc4OTEuNTsgICAgICAgICAgIC8vIEpETiBvZiBlcG9jaCAoSmFuIDAuMCAxOTkwKQorCisgICAgZG91YmxlIHN1bkV0YUcgICA9IDI3OS40MDMzMDMgKiBQSS8xODA7IC8vIEVjbGlwdGljIGxvbmdpdHVkZSBhdCBlcG9jaAorICAgIGRvdWJsZSBzdW5PbWVnYUcgPSAyODIuNzY4NDIyICogUEkvMTgwOyAvLyBFY2xpcHRpYyBsb25naXR1ZGUgb2YgcGVyaWdlZQorICAgIGRvdWJsZSBzdW5FICAgICAgPSAgIDAuMDE2NzEzOyAgICAgICAgICAvLyBFY2NlbnRyaWNpdHkgb2Ygb3JiaXQKKyAgICBkb3VibGUgc3VuUjAgICAgID0gICAxLjQ5NTU4NWU4OyAgICAgICAgLy8gU2VtaS1tYWpvciBheGlzIGluIEtNCisgICAgZG91YmxlIHN1blRoZXRhMCA9ICAgMC41MzMxMjggKiBQSS8xODA7IC8vIEFuZ3VsYXIgZGlhbWV0ZXIgYXQgUjAKKworICAgIC8qKgorICAgICAqIFRoZSBsb25naXR1ZGUgb2YgdGhlIHN1biBhdCB0aGUgdGltZSBzcGVjaWZpZWQgYnkgdGhpcyBvYmplY3QuCisgICAgICogVGhlIGxvbmdpdHVkZSBpcyBtZWFzdXJlZCBpbiByYWRpYW5zIGFsb25nIHRoZSBlY2xpcHRpYworICAgICAqIGZyb20gdGhlICJmaXJzdCBwb2ludCBvZiBBcmllcywiIHRoZSBwb2ludCBhdCB3aGljaCB0aGUgZWNsaXB0aWMKKyAgICAgKiBjcm9zc2VzIHRoZSBlYXJ0aCdzIGVxdWF0b3JpYWwgcGxhbmUgYXQgdGhlIHZlcm5hbCBlcXVpbm94LgorICAgICAqIDxwPgorICAgICAqIEN1cnJlbnRseSwgdGhpcyBtZXRob2QgdXNlcyBhbiBhcHByb3hpbWF0aW9uIG9mIHRoZSB0d28tYm9keSBLZXBsZXIncworICAgICAqIGVxdWF0aW9uIGZvciB0aGUgZWFydGggYW5kIHRoZSBzdW4uICBJdCBkb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCB0aGUKKyAgICAgKiBwZXJ0dXJiYXRpb25zIGNhdXNlZCBieSB0aGUgb3RoZXIgcGxhbmV0cywgdGhlIG1vb24sIGV0Yy4KKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGdldFN1bkxvbmdpdHVkZSgpCisgICAgeworICAgICAgICAvLyBTZWUgcGFnZSA4NiBvZiAiUHJhY3RpYWwgQXN0cm9ub215IHdpdGggeW91ciBDYWxjdWxhdG9yIiwKKyAgICAgICAgLy8gYnkgUGV0ZXIgRHVmZmV0LVNtaXRoLCBmb3IgZGV0YWlscyBvbiB0aGUgYWxnb3JpdGhtLgorICAgICAgICAKKyAgICAgICAgaWYgKHN1bkxvbmdpdHVkZSA9PSBJTlZBTElEKSB7CisgICAgICAgICAgICBkb3VibGUgZGF5ID0gZ2V0SnVsaWFuRGF5KCkgLSBqZG5FcG9jaDsgICAgICAgLy8gRGF5cyBzaW5jZSBlcG9jaAorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBGaW5kIHRoZSBhbmd1bGFyIGRpc3RhbmNlIHRoZSBzdW4gaW4gYSBmaWN0aXRpb3VzCisgICAgICAgICAgICAvLyBjaXJjdWxhciBvcmJpdCBoYXMgdHJhdmVsbGVkIHNpbmNlIHRoZSBlcG9jaC4KKyAgICAgICAgICAgIGRvdWJsZSBlcG9jaEFuZ2xlID0gbm9ybTJQSShQSTIvVFJPUElDQUxfWUVBUipkYXkpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBUaGUgZXBvY2ggd2Fzbid0IGF0IHRoZSBzdW4ncyBwZXJpZ2VlOyBmaW5kIHRoZSBhbmd1bGFyIGRpc3RhbmNlCisgICAgICAgICAgICAvLyBzaW5jZSBwZXJpZ2VlLCB3aGljaCBpcyBjYWxsZWQgdGhlICJtZWFuIGFub21hbHkiCisgICAgICAgICAgICBtZWFuQW5vbWFseVN1biA9IG5vcm0yUEkoZXBvY2hBbmdsZSArIHN1bkV0YUcgLSBzdW5PbWVnYUcpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBOb3cgZmluZCB0aGUgInRydWUgYW5vbWFseSIsIGUuZy4gdGhlIHJlYWwgc29sYXIgbG9uZ2l0dWRlCisgICAgICAgICAgICAvLyBieSBzb2x2aW5nIEtlcGxlcidzIGVxdWF0aW9uIGZvciBhbiBlbGxpcHRpY2FsIG9yYml0CisgICAgICAgICAgICBzdW5Mb25naXR1ZGUgPSBub3JtMlBJKHRydWVBbm9tYWx5KG1lYW5Bbm9tYWx5U3VuLCBzdW5FKSArIHN1bk9tZWdhRyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN1bkxvbmdpdHVkZTsKKyAgICB9CisgIAorICAgIC8qKgorICAgICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgc3VuIGF0IHRoaXMgb2JqZWN0J3MgY3VycmVudCBkYXRlIGFuZCB0aW1lLAorICAgICAqIGluIGVxdWF0b3JpYWwgY29vcmRpbmF0ZXMuCisgICAgICovCisgICAgcHVibGljIEVxdWF0b3JpYWwgZ2V0U3VuUG9zaXRpb24oKSB7CisgICAgICAgIHJldHVybiBlY2xpcHRpY1RvRXF1YXRvcmlhbChnZXRTdW5Mb25naXR1ZGUoKSwgMCk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFNvbGFyTG9uZ2l0dWRlIHsKKyAgICAgICAgZG91YmxlIHZhbHVlOworICAgICAgICBTb2xhckxvbmdpdHVkZShkb3VibGUgdmFsKSB7IHZhbHVlID0gdmFsOyB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENvbnN0YW50IHJlcHJlc2VudGluZyB0aGUgdmVybmFsIGVxdWlub3guCisgICAgICogRm9yIHVzZSB3aXRoIHtAbGluayAjZ2V0U3VuVGltZSBnZXRTdW5UaW1lfS4gCisgICAgICogTm90ZTogSW4gdGhpcyBjYXNlLCAidmVybmFsIiByZWZlcnMgdG8gdGhlIG5vcnRoZXJuIGhlbWlzcGhlcmUncyBzZWFzb25zLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU29sYXJMb25naXR1ZGUgVkVSTkFMX0VRVUlOT1ggID0gbmV3IFNvbGFyTG9uZ2l0dWRlKDApOworICAgIAorICAgIC8qKgorICAgICAqIENvbnN0YW50IHJlcHJlc2VudGluZyB0aGUgc3VtbWVyIHNvbHN0aWNlLgorICAgICAqIEZvciB1c2Ugd2l0aCB7QGxpbmsgI2dldFN1blRpbWUgZ2V0U3VuVGltZX0uCisgICAgICogTm90ZTogSW4gdGhpcyBjYXNlLCAic3VtbWVyIiByZWZlcnMgdG8gdGhlIG5vcnRoZXJuIGhlbWlzcGhlcmUncyBzZWFzb25zLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU29sYXJMb25naXR1ZGUgU1VNTUVSX1NPTFNUSUNFID0gbmV3IFNvbGFyTG9uZ2l0dWRlKFBJLzIpOworICAgIAorICAgIC8qKgorICAgICAqIENvbnN0YW50IHJlcHJlc2VudGluZyB0aGUgYXV0dW1uYWwgZXF1aW5veC4KKyAgICAgKiBGb3IgdXNlIHdpdGgge0BsaW5rICNnZXRTdW5UaW1lIGdldFN1blRpbWV9LgorICAgICAqIE5vdGU6IEluIHRoaXMgY2FzZSwgImF1dHVtbiIgcmVmZXJzIHRvIHRoZSBub3J0aGVybiBoZW1pc3BoZXJlJ3Mgc2Vhc29ucy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFNvbGFyTG9uZ2l0dWRlIEFVVFVNTl9FUVVJTk9YICA9IG5ldyBTb2xhckxvbmdpdHVkZShQSSk7CisgICAgCisgICAgLyoqCisgICAgICogQ29uc3RhbnQgcmVwcmVzZW50aW5nIHRoZSB3aW50ZXIgc29sc3RpY2UuCisgICAgICogRm9yIHVzZSB3aXRoIHtAbGluayAjZ2V0U3VuVGltZSBnZXRTdW5UaW1lfS4KKyAgICAgKiBOb3RlOiBJbiB0aGlzIGNhc2UsICJ3aW50ZXIiIHJlZmVycyB0byB0aGUgbm9ydGhlcm4gaGVtaXNwaGVyZSdzIHNlYXNvbnMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTb2xhckxvbmdpdHVkZSBXSU5URVJfU09MU1RJQ0UgPSBuZXcgU29sYXJMb25naXR1ZGUoKFBJKjMpLzIpOworICAgIAorICAgIC8qKgorICAgICAqIEZpbmQgdGhlIG5leHQgdGltZSBhdCB3aGljaCB0aGUgc3VuJ3MgZWNsaXB0aWMgbG9uZ2l0dWRlIHdpbGwgaGF2ZQorICAgICAqIHRoZSBkZXNpcmVkIHZhbHVlLiAgCisgICAgICovCisgICAgcHVibGljIGxvbmcgZ2V0U3VuVGltZShkb3VibGUgZGVzaXJlZCwgYm9vbGVhbiBuZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRpbWVPZkFuZ2xlKCBuZXcgQW5nbGVGdW5jKCkgeyBwdWJsaWMgZG91YmxlIGV2YWwoKSB7IHJldHVybiBnZXRTdW5Mb25naXR1ZGUoKTsgfSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2lyZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJPUElDQUxfWUVBUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSU5VVEVfTVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEZpbmQgdGhlIG5leHQgdGltZSBhdCB3aGljaCB0aGUgc3VuJ3MgZWNsaXB0aWMgbG9uZ2l0dWRlIHdpbGwgaGF2ZQorICAgICAqIHRoZSBkZXNpcmVkIHZhbHVlLiAgCisgICAgICovCisgICAgcHVibGljIGxvbmcgZ2V0U3VuVGltZShTb2xhckxvbmdpdHVkZSBkZXNpcmVkLCBib29sZWFuIG5leHQpIHsKKyAgICAgICAgcmV0dXJuIGdldFN1blRpbWUoZGVzaXJlZC52YWx1ZSwgbmV4dCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHRpbWUgKEdNVCkgb2Ygc3VucmlzZSBvciBzdW5zZXQgb24gdGhlIGxvY2FsIGRhdGUgdG8gd2hpY2gKKyAgICAgKiB0aGlzIGNhbGVuZGFyIGlzIGN1cnJlbnRseSBzZXQuCisgICAgICovCisgICAgcHVibGljIGxvbmcgZ2V0U3VuUmlzZVNldChib29sZWFuIHJpc2UpCisgICAgeworICAgICAgICAvLyBNYWtlIGEgcm91Z2ggZ3Vlc3M6IDZhbSBvciA2cG0gbG9jYWwgdGltZSBvbiB0aGUgY3VycmVudCBkYXkKKyAgICAgICAgbG9uZyBub29uID0gKCh0aW1lICsgZkdtdE9mZnNldCkvREFZX01TKSpEQVlfTVMgLSBmR210T2Zmc2V0ICsgMTIqSE9VUl9NUzsKKyAgICAgICAgCisgICAgICAgIHNldFRpbWUobm9vbiArIChsb25nKSgocmlzZSA/IC02IDogNikgKiBIT1VSX01TKSk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmlzZU9yU2V0KG5ldyBDb29yZEZ1bmMoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIEVxdWF0b3JpYWwgZXZhbCgpIHsgcmV0dXJuIGdldFN1blBvc2l0aW9uKCk7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgIHJpc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgLjUzMyAqIERFR19SQUQsICAgICAgICAvLyBBbmd1bGFyIERpYW1ldGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgMzQgLzYwLjAgKiBERUdfUkFELCAgICAvLyBSZWZyYWN0aW9uIGNvcnJlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICBNSU5VVEVfTVMpOyAgICAgICAgICAgIC8vIERlc2lyZWQgYWNjdXJhY3kKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBUaGUgTW9vbgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIHN0YXRpYyBmaW5hbCBkb3VibGUgbW9vbkwwID0gMzE4LjM1MTY0OCAqIFBJLzE4MDsgICAvLyBNZWFuIGxvbmcuIGF0IGVwb2NoCisgICAgc3RhdGljIGZpbmFsIGRvdWJsZSBtb29uUDAgPSAgMzYuMzQwNDEwICogUEkvMTgwOyAgIC8vIE1lYW4gbG9uZy4gb2YgcGVyaWdlZQorICAgIHN0YXRpYyBmaW5hbCBkb3VibGUgbW9vbk4wID0gMzE4LjUxMDEwNyAqIFBJLzE4MDsgICAvLyBNZWFuIGxvbmcuIG9mIG5vZGUKKyAgICBzdGF0aWMgZmluYWwgZG91YmxlIG1vb25JICA9ICAgNS4xNDUzNjYgKiBQSS8xODA7ICAgLy8gSW5jbGluYXRpb24gb2Ygb3JiaXQKKyAgICBzdGF0aWMgZmluYWwgZG91YmxlIG1vb25FICA9ICAgMC4wNTQ5MDA7ICAgICAgICAgICAgLy8gRWNjZW50cmljaXR5IG9mIG9yYml0CisgICAgCisgICAgLy8gVGhlc2UgYXJlbid0IHVzZWQgcmlnaHQgbm93CisgICAgc3RhdGljIGZpbmFsIGRvdWJsZSBtb29uQSAgPSAgIDMuODQ0MDFlNTsgICAgICAgICAgIC8vIHNlbWktbWFqb3IgYXhpcyAoa20pCisgICAgc3RhdGljIGZpbmFsIGRvdWJsZSBtb29uVDAgPSAgIDAuNTE4MSAqIFBJLzE4MDsgICAgIC8vIEFuZ3VsYXIgc2l6ZSBhdCBkaXN0YW5jZSBBCisgICAgc3RhdGljIGZpbmFsIGRvdWJsZSBtb29uUGkgPSAgIDAuOTUwNyAqIFBJLzE4MDsgICAgIC8vIFBhcmFsbGF4IGF0IGRpc3RhbmNlIEEKKyAgICAKKyAgICAvKioKKyAgICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIG1vb24gYXQgdGhlIHRpbWUgc2V0IG9uIHRoaXMKKyAgICAgKiBvYmplY3QsIGluIGVxdWF0b3JpYWwgY29vcmRpbmF0ZXMuCisgICAgICovCisgICAgcHVibGljIEVxdWF0b3JpYWwgZ2V0TW9vblBvc2l0aW9uKCkKKyAgICB7CisgICAgICAgIC8vCisgICAgICAgIC8vIFNlZSBwYWdlIDE0MiBvZiAiUHJhY3RpYWwgQXN0cm9ub215IHdpdGggeW91ciBDYWxjdWxhdG9yIiwKKyAgICAgICAgLy8gYnkgUGV0ZXIgRHVmZmV0LVNtaXRoLCBmb3IgZGV0YWlscyBvbiB0aGUgYWxnb3JpdGhtLgorICAgICAgICAvLworICAgICAgICBpZiAobW9vblBvc2l0aW9uID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgc29sYXIgbG9uZ2l0dWRlLiAgSGFzIHRoZSBzaWRlIGVmZmVjdCBvZgorICAgICAgICAgICAgLy8gZmlsbGluZyBpbiAibWVhbkFub21hbHlTdW4iIGFzIHdlbGwuCisgICAgICAgICAgICBkb3VibGUgc3VuTG9uZ2l0dWRlID0gZ2V0U3VuTG9uZ2l0dWRlKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBGaW5kIHRoZSAjIG9mIGRheXMgc2luY2UgdGhlIGVwb2NoIG9mIG91ciBvcmJpdGFsIHBhcmFtZXRlcnMuCisgICAgICAgICAgICAvLyBUT0RPOiBDb252ZXJ0IHRoZSB0aW1lIG9mIGRheSBwb3J0aW9uIGludG8gZXBoZW1lcmlzIHRpbWUKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICBkb3VibGUgZGF5ID0gZ2V0SnVsaWFuRGF5KCkgLSBqZG5FcG9jaDsgICAgICAgLy8gRGF5cyBzaW5jZSBlcG9jaAorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIG1lYW4gbG9uZ2l0dWRlIGFuZCBhbm9tYWx5IG9mIHRoZSBtb29uLCBiYXNlZCBvbgorICAgICAgICAgICAgLy8gYSBjaXJjdWxhciBvcmJpdC4gIFNpbWlsYXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgc29sYXIgY2FsY3VsYXRpb24uCisgICAgICAgICAgICBkb3VibGUgbWVhbkxvbmdpdHVkZSA9IG5vcm0yUEkoMTMuMTc2Mzk2NipQSS8xODAqZGF5ICsgbW9vbkwwKTsKKyAgICAgICAgICAgIGRvdWJsZSBtZWFuQW5vbWFseU1vb24gPSBub3JtMlBJKG1lYW5Mb25naXR1ZGUgLSAwLjExMTQwNDEqUEkvMTgwICogZGF5IC0gbW9vblAwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgZm9sbG93aW5nIGNvcnJlY3Rpb25zOgorICAgICAgICAgICAgLy8gIEV2ZWN0aW9uOiAgIHRoZSBzdW4ncyBncmF2aXR5IGFmZmVjdHMgdGhlIG1vb24ncyBlY2NlbnRyaWNpdHkKKyAgICAgICAgICAgIC8vICBBbm51YWwgRXFuOiB2YXJpYXRpb24gaW4gdGhlIGVmZmVjdCBkdWUgdG8gZWFydGgtc3VuIGRpc3RhbmNlCisgICAgICAgICAgICAvLyAgQTM6ICAgICAgICAgY29ycmVjdGlvbiBmYWN0b3IgKGZvciA/Pz8pCisgICAgICAgICAgICAvLworICAgICAgICAgICAgZG91YmxlIGV2ZWN0aW9uID0gMS4yNzM5KlBJLzE4MCAqIE1hdGguc2luKDIgKiAobWVhbkxvbmdpdHVkZSAtIHN1bkxvbmdpdHVkZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gbWVhbkFub21hbHlNb29uKTsKKyAgICAgICAgICAgIGRvdWJsZSBhbm51YWwgICA9IDAuMTg1OCpQSS8xODAgKiBNYXRoLnNpbihtZWFuQW5vbWFseVN1bik7CisgICAgICAgICAgICBkb3VibGUgYTMgICAgICAgPSAwLjM3MDAqUEkvMTgwICogTWF0aC5zaW4obWVhbkFub21hbHlTdW4pOworCisgICAgICAgICAgICBtZWFuQW5vbWFseU1vb24gKz0gZXZlY3Rpb24gLSBhbm51YWwgLSBhMzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIE1vcmUgY29ycmVjdGlvbiBmYWN0b3JzOgorICAgICAgICAgICAgLy8gIGNlbnRlciAgZXF1YXRpb24gb2YgdGhlIGNlbnRlciBjb3JyZWN0aW9uCisgICAgICAgICAgICAvLyAgYTQgICAgICB5ZXQgYW5vdGhlciBlcnJvciBjb3JyZWN0aW9uICg/Pz8pCisgICAgICAgICAgICAvLworICAgICAgICAgICAgLy8gVE9ETzogU2tpcCB0aGUgZXF1YXRpb24gb2YgdGhlIGNlbnRlciBjb3JyZWN0aW9uIGFuZCBzb2x2ZSBLZXBsZXIncyBlcW4/CisgICAgICAgICAgICAvLworICAgICAgICAgICAgZG91YmxlIGNlbnRlciA9IDYuMjg4NipQSS8xODAgKiBNYXRoLnNpbihtZWFuQW5vbWFseU1vb24pOworICAgICAgICAgICAgZG91YmxlIGE0ID0gICAgIDAuMjE0MCpQSS8xODAgKiBNYXRoLnNpbigyICogbWVhbkFub21hbHlNb29uKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gTm93IGZpbmQgdGhlIG1vb24ncyBjb3JyZWN0ZWQgbG9uZ2l0dWRlCisgICAgICAgICAgICBtb29uTG9uZ2l0dWRlID0gbWVhbkxvbmdpdHVkZSArIGV2ZWN0aW9uICsgY2VudGVyIC0gYW5udWFsICsgYTQ7CisKKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBBbmQgZmluYWxseSwgZmluZCB0aGUgdmFyaWF0aW9uLCBjYXVzZWQgYnkgdGhlIGZhY3QgdGhhdCB0aGUgc3VuJ3MKKyAgICAgICAgICAgIC8vIGdyYXZpdGF0aW9uYWwgcHVsbCBvbiB0aGUgbW9vbiB2YXJpZXMgZGVwZW5kaW5nIG9uIHdoaWNoIHNpZGUgb2YKKyAgICAgICAgICAgIC8vIHRoZSBlYXJ0aCB0aGUgbW9vbiBpcyBvbgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIGRvdWJsZSB2YXJpYXRpb24gPSAwLjY1ODMqUEkvMTgwICogTWF0aC5zaW4oMioobW9vbkxvbmdpdHVkZSAtIHN1bkxvbmdpdHVkZSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBtb29uTG9uZ2l0dWRlICs9IHZhcmlhdGlvbjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIFdoYXQgd2UndmUgY2FsY3VsYXRlZCBzbyBmYXIgaXMgdGhlIG1vb24ncyBsb25naXR1ZGUgaW4gdGhlIHBsYW5lCisgICAgICAgICAgICAvLyBvZiBpdHMgb3duIG9yYml0LiAgTm93IG1hcCB0byB0aGUgZWNsaXB0aWMgdG8gZ2V0IHRoZSBsYXRpdHVkZQorICAgICAgICAgICAgLy8gYW5kIGxvbmdpdHVkZS4gIEZpcnN0IHdlIG5lZWQgdG8gZmluZCB0aGUgbG9uZ2l0dWRlIG9mIHRoZSBhc2NlbmRpbmcKKyAgICAgICAgICAgIC8vIG5vZGUsIHRoZSBwb3NpdGlvbiBvbiB0aGUgZWNsaXB0aWMgd2hlcmUgaXQgaXMgY3Jvc3NlZCBieSB0aGUgbW9vbidzCisgICAgICAgICAgICAvLyBvcmJpdCBhcyBpdCBjcm9zc2VzIGZyb20gdGhlIHNvdXRoZXJuIHRvIHRoZSBub3J0aGVybiBoZW1pc3BoZXJlLgorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIGRvdWJsZSBub2RlTG9uZ2l0dWRlID0gbm9ybTJQSShtb29uTjAgLSAwLjA1Mjk1MzkqUEkvMTgwICogZGF5KTsKKworICAgICAgICAgICAgbm9kZUxvbmdpdHVkZSAtPSAwLjE2KlBJLzE4MCAqIE1hdGguc2luKG1lYW5Bbm9tYWx5U3VuKTsKKworICAgICAgICAgICAgZG91YmxlIHkgPSBNYXRoLnNpbihtb29uTG9uZ2l0dWRlIC0gbm9kZUxvbmdpdHVkZSk7CisgICAgICAgICAgICBkb3VibGUgeCA9IE1hdGguY29zKG1vb25Mb25naXR1ZGUgLSBub2RlTG9uZ2l0dWRlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbW9vbkVjbGlwTG9uZyA9IE1hdGguYXRhbjIoeSpNYXRoLmNvcyhtb29uSSksIHgpICsgbm9kZUxvbmdpdHVkZTsKKyAgICAgICAgICAgIGRvdWJsZSBtb29uRWNsaXBMYXQgPSBNYXRoLmFzaW4oeSAqIE1hdGguc2luKG1vb25JKSk7CisKKyAgICAgICAgICAgIG1vb25Qb3NpdGlvbiA9IGVjbGlwdGljVG9FcXVhdG9yaWFsKG1vb25FY2xpcExvbmcsIG1vb25FY2xpcExhdCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1vb25Qb3NpdGlvbjsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogVGhlICJhZ2UiIG9mIHRoZSBtb29uIGF0IHRoZSB0aW1lIHNwZWNpZmllZCBpbiB0aGlzIG9iamVjdC4KKyAgICAgKiBUaGlzIGlzIHJlYWxseSB0aGUgYW5nbGUgYmV0d2VlbiB0aGUKKyAgICAgKiBjdXJyZW50IGVjbGlwdGljIGxvbmdpdHVkZXMgb2YgdGhlIHN1biBhbmQgdGhlIG1vb24sCisgICAgICogbWVhc3VyZWQgaW4gcmFkaWFucy4KKyAgICAgKgorICAgICAqIEBzZWUgI2dldE1vb25QaGFzZQorICAgICAqLworICAgIHB1YmxpYyBkb3VibGUgZ2V0TW9vbkFnZSgpIHsKKyAgICAgICAgLy8gU2VlIHBhZ2UgMTQ3IG9mICJQcmFjdGlhbCBBc3Ryb25vbXkgd2l0aCB5b3VyIENhbGN1bGF0b3IiLAorICAgICAgICAvLyBieSBQZXRlciBEdWZmZXQtU21pdGgsIGZvciBkZXRhaWxzIG9uIHRoZSBhbGdvcml0aG0uCisgICAgICAgIC8vCisgICAgICAgIC8vIEZvcmNlIHRoZSBtb29uJ3MgcG9zaXRpb24gdG8gYmUgY2FsY3VsYXRlZC4gIFdlJ3JlIGdvaW5nIHRvIHVzZQorICAgICAgICAvLyBzb21lIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0cyBjYWNoZWQgZHVyaW5nIHRoYXQgY2FsY3VsYXRpb24uCisgICAgICAgIC8vCisgICAgICAgIGdldE1vb25Qb3NpdGlvbigpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIG5vcm0yUEkobW9vbkVjbGlwTG9uZyAtIHN1bkxvbmdpdHVkZSk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENhbGN1bGF0ZSB0aGUgcGhhc2Ugb2YgdGhlIG1vb24gYXQgdGhlIHRpbWUgc2V0IGluIHRoaXMgb2JqZWN0LgorICAgICAqIFRoZSByZXR1cm5lZCBwaGFzZSBpcyBhIDxjb2RlPmRvdWJsZTwvY29kZT4gaW4gdGhlIHJhbmdlCisgICAgICogPGNvZGU+MCA8PSBwaGFzZSA8IDE8L2NvZGU+LCBpbnRlcnByZXRlZCBhcyBmb2xsb3dzOgorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+MC4wMDogTmV3IG1vb24KKyAgICAgKiA8bGk+MC4yNTogRmlyc3QgcXVhcnRlcgorICAgICAqIDxsaT4wLjUwOiBGdWxsIG1vb24KKyAgICAgKiA8bGk+MC43NTogTGFzdCBxdWFydGVyCisgICAgICogPC91bD4KKyAgICAgKgorICAgICAqIEBzZWUgI2dldE1vb25BZ2UKKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGdldE1vb25QaGFzZSgpIHsKKyAgICAgICAgLy8gU2VlIHBhZ2UgMTQ3IG9mICJQcmFjdGlhbCBBc3Ryb25vbXkgd2l0aCB5b3VyIENhbGN1bGF0b3IiLAorICAgICAgICAvLyBieSBQZXRlciBEdWZmZXQtU21pdGgsIGZvciBkZXRhaWxzIG9uIHRoZSBhbGdvcml0aG0uCisgICAgICAgIHJldHVybiAwLjUgKiAoMSAtIE1hdGguY29zKGdldE1vb25BZ2UoKSkpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBNb29uQWdlIHsKKyAgICAgICAgZG91YmxlIHZhbHVlOworICAgICAgICBNb29uQWdlKGRvdWJsZSB2YWwpIHsgdmFsdWUgPSB2YWw7IH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQ29uc3RhbnQgcmVwcmVzZW50aW5nIGEgbmV3IG1vb24uCisgICAgICogRm9yIHVzZSB3aXRoIHtAbGluayAjZ2V0TW9vblRpbWUgZ2V0TW9vblRpbWV9CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBNb29uQWdlIE5FV19NT09OICAgICAgPSBuZXcgTW9vbkFnZSgwKTsKKworICAgIC8qKgorICAgICAqIENvbnN0YW50IHJlcHJlc2VudGluZyB0aGUgbW9vbidzIGZpcnN0IHF1YXJ0ZXIuCisgICAgICogRm9yIHVzZSB3aXRoIHtAbGluayAjZ2V0TW9vblRpbWUgZ2V0TW9vblRpbWV9CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBNb29uQWdlIEZJUlNUX1FVQVJURVIgPSBuZXcgTW9vbkFnZShQSS8yKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBDb25zdGFudCByZXByZXNlbnRpbmcgYSBmdWxsIG1vb24uCisgICAgICogRm9yIHVzZSB3aXRoIHtAbGluayAjZ2V0TW9vblRpbWUgZ2V0TW9vblRpbWV9CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBNb29uQWdlIEZVTExfTU9PTiAgICAgPSBuZXcgTW9vbkFnZShQSSk7CisgICAgCisgICAgLyoqCisgICAgICogQ29uc3RhbnQgcmVwcmVzZW50aW5nIHRoZSBtb29uJ3MgbGFzdCBxdWFydGVyLgorICAgICAqIEZvciB1c2Ugd2l0aCB7QGxpbmsgI2dldE1vb25UaW1lIGdldE1vb25UaW1lfQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgTW9vbkFnZSBMQVNUX1FVQVJURVIgID0gbmV3IE1vb25BZ2UoKFBJKjMpLzIpOworICAgIAorICAgIC8qKgorICAgICAqIEZpbmQgdGhlIG5leHQgb3IgcHJldmlvdXMgdGltZSBhdCB3aGljaCB0aGUgTW9vbidzIGVjbGlwdGljCisgICAgICogbG9uZ2l0dWRlIHdpbGwgaGF2ZSB0aGUgZGVzaXJlZCB2YWx1ZS4gIAorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBkZXNpcmVkICAgVGhlIGRlc2lyZWQgbG9uZ2l0dWRlLgorICAgICAqIEBwYXJhbSBuZXh0ICAgICAgPHR0PnRydWU8L3R0PiBpZiB0aGUgbmV4dCBvY2N1cnJhbmNlIG9mIHRoZSBwaGFzZQorICAgICAqICAgICAgICAgICAgICAgICAgaXMgZGVzaXJlZCwgPHR0PmZhbHNlPC90dD4gZm9yIHRoZSBwcmV2aW91cyBvY2N1cnJhbmNlLiAKKyAgICAgKi8KKyAgICBwdWJsaWMgbG9uZyBnZXRNb29uVGltZShkb3VibGUgZGVzaXJlZCwgYm9vbGVhbiBuZXh0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRpbWVPZkFuZ2xlKCBuZXcgQW5nbGVGdW5jKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBkb3VibGUgZXZhbCgpIHsgcmV0dXJuIGdldE1vb25BZ2UoKTsgfSB9LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2lyZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1lOT0RJQ19NT05USCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSU5VVEVfTVMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEZpbmQgdGhlIG5leHQgb3IgcHJldmlvdXMgdGltZSBhdCB3aGljaCB0aGUgbW9vbiB3aWxsIGJlIGluIHRoZQorICAgICAqIGRlc2lyZWQgcGhhc2UuCisgICAgICogPHA+CisgICAgICogQHBhcmFtIGRlc2lyZWQgICBUaGUgZGVzaXJlZCBwaGFzZSBvZiB0aGUgbW9vbi4KKyAgICAgKiBAcGFyYW0gbmV4dCAgICAgIDx0dD50cnVlPC90dD4gaWYgdGhlIG5leHQgb2NjdXJyYW5jZSBvZiB0aGUgcGhhc2UKKyAgICAgKiAgICAgICAgICAgICAgICAgIGlzIGRlc2lyZWQsIDx0dD5mYWxzZTwvdHQ+IGZvciB0aGUgcHJldmlvdXMgb2NjdXJyYW5jZS4gCisgICAgICovCisgICAgcHVibGljIGxvbmcgZ2V0TW9vblRpbWUoTW9vbkFnZSBkZXNpcmVkLCBib29sZWFuIG5leHQpIHsKKyAgICAgICAgcmV0dXJuIGdldE1vb25UaW1lKGRlc2lyZWQudmFsdWUsIG5leHQpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSB0aW1lIChHTVQpIG9mIHN1bnJpc2Ugb3Igc3Vuc2V0IG9uIHRoZSBsb2NhbCBkYXRlIHRvIHdoaWNoCisgICAgICogdGhpcyBjYWxlbmRhciBpcyBjdXJyZW50bHkgc2V0LgorICAgICAqLworICAgIHB1YmxpYyBsb25nIGdldE1vb25SaXNlU2V0KGJvb2xlYW4gcmlzZSkKKyAgICB7CisgICAgICAgIHJldHVybiByaXNlT3JTZXQobmV3IENvb3JkRnVuYygpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgRXF1YXRvcmlhbCBldmFsKCkgeyByZXR1cm4gZ2V0TW9vblBvc2l0aW9uKCk7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAgICAgIHJpc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgLjUzMyAqIERFR19SQUQsICAgICAgICAvLyBBbmd1bGFyIERpYW1ldGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgMzQgLzYwLjAgKiBERUdfUkFELCAgICAvLyBSZWZyYWN0aW9uIGNvcnJlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICBNSU5VVEVfTVMpOyAgICAgICAgICAgIC8vIERlc2lyZWQgYWNjdXJhY3kKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBJbnRlcnBvbGF0aW9uIG1ldGhvZHMgZm9yIGZpbmRpbmcgdGhlIHRpbWUgYXQgd2hpY2ggYSBnaXZlbiBldmVudCBvY2N1cnMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICBwcml2YXRlIGludGVyZmFjZSBBbmdsZUZ1bmMgeworICAgICAgICBwdWJsaWMgZG91YmxlIGV2YWwoKTsKKyAgICB9OworICAgIAorICAgIHByaXZhdGUgbG9uZyB0aW1lT2ZBbmdsZShBbmdsZUZ1bmMgZnVuYywgZG91YmxlIGRlc2lyZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBwZXJpb2REYXlzLCBsb25nIGVwc2lsb24sIGJvb2xlYW4gbmV4dCkKKyAgICB7CisgICAgICAgIC8vIEZpbmQgdGhlIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiBhdCB0aGUgY3VycmVudCB0aW1lCisgICAgICAgIGRvdWJsZSBsYXN0QW5nbGUgPSBmdW5jLmV2YWwoKTsKKyAgICAgICAgCisgICAgICAgIC8vIEZpbmQgb3V0IGhvdyBmYXIgd2UgYXJlIGZyb20gdGhlIGRlc2lyZWQgYW5nbGUKKyAgICAgICAgZG91YmxlIGRlbHRhQW5nbGUgPSBub3JtMlBJKGRlc2lyZWQgLSBsYXN0QW5nbGUpIDsKKyAgICAgICAgCisgICAgICAgIC8vIFVzaW5nIHRoZSBhdmVyYWdlIHBlcmlvZCwgZXN0aW1hdGUgdGhlIG5leHQgKG9yIHByZXZpb3VzKSB0aW1lIGF0CisgICAgICAgIC8vIHdoaWNoIHRoZSBkZXNpcmVkIGFuZ2xlIG9jY3Vycy4KKyAgICAgICAgZG91YmxlIGRlbHRhVCA9ICAoZGVsdGFBbmdsZSArIChuZXh0ID8gMCA6IC1QSTIpKSAqIChwZXJpb2REYXlzKkRBWV9NUykgLyBQSTI7CisgICAgICAgIAorICAgICAgICBkb3VibGUgbGFzdERlbHRhVCA9IGRlbHRhVDsgLy8gTGl1CisgICAgICAgIGxvbmcgc3RhcnRUaW1lID0gdGltZTsgLy8gTGl1CisgICAgICAgIAorICAgICAgICBzZXRUaW1lKHRpbWUgKyAobG9uZylkZWx0YVQpOworCisgICAgICAgIC8vIE5vdyBpdGVyYXRlIHVudGlsIHdlIGdldCB0aGUgZXJyb3IgYmVsb3cgZXBzaWxvbi4gIFRocm91Z2hvdXQKKyAgICAgICAgLy8gdGhpcyBsb29wIHdlIHVzZSBub3JtUEkgdG8gZ2V0IHZhbHVlcyBpbiB0aGUgcmFuZ2UgLVBpIHRvIFBpLAorICAgICAgICAvLyBzaW5jZSB3ZSdyZSB1c2luZyB0aGVtIGFzIGNvcnJlY3Rpb24gZmFjdG9ycyByYXRoZXIgdGhhbiBhYnNvbHV0ZSBhbmdsZXMuCisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIC8vIEV2YWx1YXRlIHRoZSBmdW5jdGlvbiBhdCB0aGUgdGltZSB3ZSd2ZSBlc3RpbWF0ZWQKKyAgICAgICAgICAgIGRvdWJsZSBhbmdsZSA9IGZ1bmMuZXZhbCgpOworCisgICAgICAgICAgICAvLyBGaW5kIHRoZSAjIG9mIG1pbGxpc2Vjb25kcyBwZXIgcmFkaWFuIGF0IHRoaXMgcG9pbnQgb24gdGhlIGN1cnZlCisgICAgICAgICAgICBkb3VibGUgZmFjdG9yID0gTWF0aC5hYnMoZGVsdGFUIC8gbm9ybVBJKGFuZ2xlLWxhc3RBbmdsZSkpOworCisgICAgICAgICAgICAvLyBDb3JyZWN0IHRoZSB0aW1lIGVzdGltYXRlIGJhc2VkIG9uIGhvdyBmYXIgb2ZmIHRoZSBhbmdsZSBpcworICAgICAgICAgICAgZGVsdGFUID0gbm9ybVBJKGRlc2lyZWQgLSBhbmdsZSkgKiBmYWN0b3I7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEhBQ0s6CisgICAgICAgICAgICAvLyAKKyAgICAgICAgICAgIC8vIElmIGFicyhkZWx0YVQpIGJlZ2lucyB0byBkaXZlcmdlIHdlIG5lZWQgdG8gcXVpdCB0aGlzIGxvb3AuCisgICAgICAgICAgICAvLyBUaGlzIG9ubHkgYXBwZWFycyB0byBoYXBwZW4gd2hlbiBhdHRlbXB0aW5nIHRvIGxvY2F0ZSwgZm9yCisgICAgICAgICAgICAvLyBleGFtcGxlLCBhIG5ldyBtb29uIG9uIHRoZSBkYXkgb2YgdGhlIG5ldyBtb29uLiAgRS5nLjoKKyAgICAgICAgICAgIC8vIAorICAgICAgICAgICAgLy8gVGhpcyByZXN1bHQgaXMgY29ycmVjdDoKKyAgICAgICAgICAgIC8vIG5ld01vb24oNzUwOChNb24gSnVsIDIzIDAwOjAwOjAwIENTVCAxOTkwLGZhbHNlKSk9CisgICAgICAgICAgICAvLyAgIFN1biBKdWwgMjIgMTA6NTc6NDEgQ1NUIDE5OTAKKyAgICAgICAgICAgIC8vIAorICAgICAgICAgICAgLy8gQnV0IGF0dGVtcHRpbmcgdG8gbWFrZSB0aGUgc2FtZSBjYWxsIGEgZGF5IGVhcmxpZXIgY2F1c2VzIGRlbHRhVAorICAgICAgICAgICAgLy8gdG8gZGl2ZXJnZToKKyAgICAgICAgICAgIC8vIENhbGVuZGFyQXN0cm9ub21lci50aW1lT2ZBbmdsZSgpIGRpdmVyZ2luZzogMS4zNDg1MDg3Mjc1NzU2MjVFOSAtPgorICAgICAgICAgICAgLy8gICAxLjM2NDk4Mjg1NDAyMjQwMzJFOQorICAgICAgICAgICAgLy8gbmV3TW9vbig3NTA3KFN1biBKdWwgMjIgMDA6MDA6MDAgQ1NUIDE5OTAsZmFsc2UpKT0KKyAgICAgICAgICAgIC8vICAgU3VuIEp1bCAwOCAxMzo1NjoxNSBDU1QgMTk5MAorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIEFzIGEgdGVtcG9yYXJ5IHNvbHV0aW9uLCB3ZSBjYXRjaCB0aGlzIHNwZWNpZmljIGNvbmRpdGlvbiBhbmQKKyAgICAgICAgICAgIC8vIGFkanVzdCBvdXIgc3RhcnQgdGltZSBieSBvbmUgZWlnaHRoIHBlcmlvZCBkYXlzIChlaXRoZXIgZm9yd2FyZAorICAgICAgICAgICAgLy8gb3IgYmFja3dhcmQpIGFuZCB0cnkgYWdhaW4uCisgICAgICAgICAgICAvLyBMaXUgMTEvOS8wMAorICAgICAgICAgICAgaWYgKE1hdGguYWJzKGRlbHRhVCkgPiBNYXRoLmFicyhsYXN0RGVsdGFUKSkgeworICAgICAgICAgICAgICAgIGxvbmcgZGVsdGEgPSAobG9uZykgKHBlcmlvZERheXMgKiBEQVlfTVMgLyA4KTsKKyAgICAgICAgICAgICAgICBzZXRUaW1lKHN0YXJ0VGltZSArIChuZXh0ID8gZGVsdGEgOiAtZGVsdGEpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGltZU9mQW5nbGUoZnVuYywgZGVzaXJlZCwgcGVyaW9kRGF5cywgZXBzaWxvbiwgbmV4dCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxhc3REZWx0YVQgPSBkZWx0YVQ7CisgICAgICAgICAgICBsYXN0QW5nbGUgPSBhbmdsZTsKKworICAgICAgICAgICAgc2V0VGltZSh0aW1lICsgKGxvbmcpZGVsdGFUKTsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoTWF0aC5hYnMoZGVsdGFUKSA+IGVwc2lsb24pOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRpbWU7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgaW50ZXJmYWNlIENvb3JkRnVuYyB7CisgICAgICAgIHB1YmxpYyBFcXVhdG9yaWFsIGV2YWwoKTsKKyAgICB9OworICAgIAorICAgIHByaXZhdGUgbG9uZyByaXNlT3JTZXQoQ29vcmRGdW5jIGZ1bmMsIGJvb2xlYW4gcmlzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkaWFtZXRlciwgZG91YmxlIHJlZnJhY3Rpb24sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBlcHNpbG9uKQorICAgIHsgICAgICAgIAorICAgICAgICBFcXVhdG9yaWFsICBwb3MgPSBudWxsOworICAgICAgICBkb3VibGUgICAgICB0YW5MICAgPSBNYXRoLnRhbihmTGF0aXR1ZGUpOworICAgICAgICBsb25nICAgICAgICBkZWx0YVQgPSBMb25nLk1BWF9WQUxVRTsKKyAgICAgICAgaW50ICAgICAgICAgY291bnQgPSAwOworICAgICAgICAKKyAgICAgICAgLy8KKyAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBvYmplY3QncyBwb3NpdGlvbiBhdCB0aGUgY3VycmVudCB0aW1lLCB0aGVuIHVzZSB0aGF0CisgICAgICAgIC8vIHBvc2l0aW9uIHRvIGNhbGN1bGF0ZSB0aGUgdGltZSBvZiByaXNpbmcgb3Igc2V0dGluZy4gIFRoZSBwb3NpdGlvbgorICAgICAgICAvLyB3aWxsIGJlIGRpZmZlcmVudCBhdCB0aGF0IHRpbWUsIHNvIGl0ZXJhdGUgdW50aWwgdGhlIGVycm9yIGlzIGFsbG93YWJsZS4KKyAgICAgICAgLy8KKyAgICAgICAgZG8geworICAgICAgICAgICAgLy8gU2VlICJQcmFjdGljYWwgQXN0cm9ub215IFdpdGggWW91ciBDYWxjdWxhdG9yLCBzZWN0aW9uIDMzLgorICAgICAgICAgICAgcG9zID0gZnVuYy5ldmFsKCk7CisgICAgICAgICAgICBkb3VibGUgYW5nbGUgPSBNYXRoLmFjb3MoLXRhbkwgKiBNYXRoLnRhbihwb3MuZGVjbGluYXRpb24pKTsKKyAgICAgICAgICAgIGRvdWJsZSBsc3QgPSAoKHJpc2UgPyBQSTItYW5nbGUgOiBhbmdsZSkgKyBwb3MuYXNjZW5zaW9uICkgKiAyNCAvIFBJMjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIENvbnZlcnQgZnJvbSBMU1QgdG8gVW5pdmVyc2FsIFRpbWUuCisgICAgICAgICAgICBsb25nIG5ld1RpbWUgPSBsc3RUb1VUKCBsc3QgKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZGVsdGFUID0gbmV3VGltZSAtIHRpbWU7CisgICAgICAgICAgICBzZXRUaW1lKG5ld1RpbWUpOworICAgICAgICB9CisgICAgICAgIHdoaWxlICgrKyBjb3VudCA8IDUgJiYgTWF0aC5hYnMoZGVsdGFUKSA+IGVwc2lsb24pOworICAgICAgICAKKyAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBjb3JyZWN0aW9uIGR1ZSB0byByZWZyYWN0aW9uIGFuZCB0aGUgb2JqZWN0J3MgYW5ndWxhciBkaWFtZXRlcgorICAgICAgICBkb3VibGUgY29zRCAgPSBNYXRoLmNvcyhwb3MuZGVjbGluYXRpb24pOworICAgICAgICBkb3VibGUgcHNpICAgPSBNYXRoLmFjb3MoTWF0aC5zaW4oZkxhdGl0dWRlKSAvIGNvc0QpOworICAgICAgICBkb3VibGUgeCAgICAgPSBkaWFtZXRlciAvIDIgKyByZWZyYWN0aW9uOworICAgICAgICBkb3VibGUgeSAgICAgPSBNYXRoLmFzaW4oTWF0aC5zaW4oeCkgLyBNYXRoLnNpbihwc2kpKTsKKyAgICAgICAgbG9uZyAgZGVsdGEgID0gKGxvbmcpKCgyNDAgKiB5ICogUkFEX0RFRyAvIGNvc0QpKlNFQ09ORF9NUyk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gdGltZSArIChyaXNlID8gLWRlbHRhIDogZGVsdGEpOworICAgIH0KKyAgICAKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBPdGhlciB1dGlsaXR5IG1ldGhvZHMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGRvdWJsZSBub3JtYWxpemUoZG91YmxlIHZhbHVlLCBkb3VibGUgcmFuZ2UpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlIC0gcmFuZ2UgKiBNYXRoLmZsb29yKHZhbHVlIC8gcmFuZ2UpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBOb3JtYWxpemUgYW4gYW5nbGUgc28gdGhhdCBpdCdzIGluIHRoZSByYW5nZSAwIC0gMnBpLgorICAgICAqIEZvciBwb3NpdGl2ZSBhbmdsZXMgdGhpcyBpcyBqdXN0IChhbmdsZSAlIDJwaSksIGJ1dCB0aGUgSmF2YQorICAgICAqIG1vZCBvcGVyYXRvciBkb2Vzbid0IHdvcmsgdGhhdCB3YXkgZm9yIG5lZ2F0aXZlIG51bWJlcnMuLi4uCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgZG91YmxlIG5vcm0yUEkoZG91YmxlIGFuZ2xlKSB7CisgICAgICAgIHJldHVybiBub3JtYWxpemUoYW5nbGUsIFBJMik7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIE5vcm1hbGl6ZSBhbiBhbmdsZSBpbnRvIHRoZSByYW5nZSAtUEkgLSBQSQorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGRvdWJsZSBub3JtUEkoZG91YmxlIGFuZ2xlKSB7CisgICAgICAgIHJldHVybiBub3JtYWxpemUoYW5nbGUgKyBQSSwgUEkyKSAtIFBJOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBGaW5kIHRoZSAidHJ1ZSBhbm9tYWx5IiAobG9uZ2l0dWRlKSBvZiBhbiBvYmplY3QgZnJvbQorICAgICAqIGl0cyBtZWFuIGFub21hbHkgYW5kIHRoZSBlY2NlbnRyaWNpdHkgb2YgaXRzIG9yYml0LiAgVGhpcyB1c2VzCisgICAgICogYW4gaXRlcmF0aXZlIHNvbHV0aW9uIHRvIEtlcGxlcidzIGVxdWF0aW9uLgorICAgICAqCisgICAgICogQHBhcmFtIG1lYW5Bbm9tYWx5ICAgVGhlIG9iamVjdCdzIGxvbmdpdHVkZSBjYWxjdWxhdGVkIGFzIGlmIGl0IHdlcmUgaW4KKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICBhIHJlZ3VsYXIsIGNpcmN1bGFyIG9yYml0LCBtZWFzdXJlZCBpbiByYWRpYW5zCisgICAgICogICAgICAgICAgICAgICAgICAgICAgZnJvbSB0aGUgcG9pbnQgb2YgcGVyaWdlZS4gIAorICAgICAqCisgICAgICogQHBhcmFtIGVjY2VudHJpY2l0eSAgVGhlIGVjY2VudHJpY2l0eSBvZiB0aGUgb3JiaXQKKyAgICAgKgorICAgICAqIEByZXR1cm4gVGhlIHRydWUgYW5vbWFseSAobG9uZ2l0dWRlKSBtZWFzdXJlZCBpbiByYWRpYW5zCisgICAgICovCisgICAgcHJpdmF0ZSBkb3VibGUgdHJ1ZUFub21hbHkoZG91YmxlIG1lYW5Bbm9tYWx5LCBkb3VibGUgZWNjZW50cmljaXR5KQorICAgIHsKKyAgICAgICAgLy8gRmlyc3QsIHNvbHZlIEtlcGxlcidzIGVxdWF0aW9uIGl0ZXJhdGl2ZWx5CisgICAgICAgIGRvdWJsZSBkZWx0YTsKKyAgICAgICAgZG91YmxlIEUgPSBtZWFuQW5vbWFseTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgZGVsdGEgPSBFIC0gZWNjZW50cmljaXR5ICogTWF0aC5zaW4oRSkgLSBtZWFuQW5vbWFseTsKKyAgICAgICAgICAgIEUgPSBFIC0gZGVsdGEgLyAoMSAtIGVjY2VudHJpY2l0eSAqIE1hdGguY29zKEUpKTsKKyAgICAgICAgfSAKKyAgICAgICAgd2hpbGUgKE1hdGguYWJzKGRlbHRhKSA+IGFjY3VyYWN5KTsKKworICAgICAgICByZXR1cm4gMi4wICogTWF0aC5hdGFuKCBNYXRoLnRhbihFLzIpICogTWF0aC5zcXJ0KCAoMStlY2NlbnRyaWNpdHkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLygxLWVjY2VudHJpY2l0eSkgKSApOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBkb3VibGUgYWNjdXJhY3kgPSAwLjAxICogUEkvMTgwOyAgLy8gMC4wMSBkZWdyZWVzCisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBvYmxpcXVpdHkgb2YgdGhlIGVjbGlwdGljICh0aGUgYW5nbGUgYmV0d2VlbiB0aGUgZWNsaXB0aWMKKyAgICAgKiBhbmQgdGhlIGVhcnRoJ3MgZXF1YXRvcikgYXQgdGhlIGN1cnJlbnQgdGltZS4gIFRoaXMgdmFyaWVzIGR1ZSB0bworICAgICAqIHRoZSBwcmVjZXNzaW9uIG9mIHRoZSBlYXJ0aCdzIGF4aXMuCisgICAgICoKKyAgICAgKiBAcmV0dXJuICB0aGUgb2JsaXF1aXR5IG9mIHRoZSBlY2xpcHRpYyByZWxhdGl2ZSB0byB0aGUgZXF1YXRvciwKKyAgICAgKiAgICAgICAgICBtZWFzdXJlZCBpbiByYWRpYW5zLgorICAgICAqLworICAgIHByaXZhdGUgZG91YmxlIGVjbGlwdGljT2JsaXF1aXR5KCkgeworICAgICAgICBpZiAoZWNsaXBPYmxpcXVpdHkgPT0gSU5WQUxJRCkgeworICAgICAgICAgICAgZmluYWwgZG91YmxlIGVwb2NoID0gMjQ1MTU0NS4wOyAgICAgLy8gMjAwMCBBRCwgSmFudWFyeSAxLjUKKworICAgICAgICAgICAgZG91YmxlIFQgPSAoZ2V0SnVsaWFuRGF5KCkgLSBlcG9jaCkgLyAzNjUyNTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZWNsaXBPYmxpcXVpdHkgPSAyMy40MzkyOTIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIC0gNDYuODE1LzM2MDAgKiBUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAtIDAuMDAwNiAqIFQqVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAwLjAwMTgxICogVCpUKlQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGVjbGlwT2JsaXF1aXR5ICo9IERFR19SQUQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGVjbGlwT2JsaXF1aXR5OworICAgIH0KKyAgICAKKyAgICAgCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gUHJpdmF0ZSBkYXRhCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogQ3VycmVudCB0aW1lIGluIG1pbGxpc2Vjb25kcyBzaW5jZSAxLzEvMTk3MCBBRAorICAgICAqIEBzZWUgamF2YS51dGlsLkRhdGUjZ2V0VGltZQorICAgICAqLworICAgIHByaXZhdGUgbG9uZyB0aW1lOworICAgIAorICAgIC8qIFRoZXNlIGFyZW4ndCB1c2VkIHlldCwgYnV0IHRoZXknbGwgYmUgbmVlZGVkIGZvciBzdW5zZXQgY2FsY3VsYXRpb25zCisgICAgICogYW5kIGVxdWF0b3JpYWwgdG8gaG9yaXpvbiBjb29yZGluYXRlIGNvbnZlcnNpb25zCisgICAgICovCisgICAgcHJpdmF0ZSBkb3VibGUgZkxvbmdpdHVkZSA9IDAuMDsKKyAgICBwcml2YXRlIGRvdWJsZSBmTGF0aXR1ZGUgID0gMC4wOworICAgIHByaXZhdGUgbG9uZyAgIGZHbXRPZmZzZXQgPSAwOworICAgIAorICAgIC8vCisgICAgLy8gVGhlIGZvbGxvd2luZyBmaWVsZHMgYXJlIHVzZWQgdG8gY2FjaGUgY2FsY3VsYXRlZCByZXN1bHRzIGZvciBpbXByb3ZlZAorICAgIC8vIHBlcmZvcm1hbmNlLiAgVGhlc2UgdmFsdWVzIGFsbCBkZXBlbmQgb24gdGhlIGN1cnJlbnQgdGltZSBzZXR0aW5nCisgICAgLy8gb2YgdGhpcyBvYmplY3QsIHNvIHRoZSBjbGVhckNhY2hlIG1ldGhvZCBpcyBwcm92aWRlZC4KKyAgICAvLworICAgIHN0YXRpYyBmaW5hbCBwcml2YXRlIGRvdWJsZSBJTlZBTElEID0gRG91YmxlLk1JTl9WQUxVRTsKKyAgICAKKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgICAganVsaWFuRGF5ICAgICAgID0gSU5WQUxJRDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgICAganVsaWFuQ2VudHVyeSAgID0gSU5WQUxJRDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgICAgc3VuTG9uZ2l0dWRlICAgID0gSU5WQUxJRDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgICAgbWVhbkFub21hbHlTdW4gID0gSU5WQUxJRDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgICAgbW9vbkxvbmdpdHVkZSAgID0gSU5WQUxJRDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgICAgbW9vbkVjbGlwTG9uZyAgID0gSU5WQUxJRDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgICAgbWVhbkFub21hbHlNb29uID0gSU5WQUxJRDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgICAgZWNsaXBPYmxpcXVpdHkgID0gSU5WQUxJRDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgICAgc2lkZXJlYWxUMCAgICAgID0gSU5WQUxJRDsKKyAgICBwcml2YXRlIHRyYW5zaWVudCBkb3VibGUgICAgc2lkZXJlYWxUaW1lICAgID0gSU5WQUxJRDsKKyAgICAKKyAgICBwcml2YXRlIHRyYW5zaWVudCBFcXVhdG9yaWFsICBtb29uUG9zaXRpb24gPSBudWxsOworCisgICAgcHJpdmF0ZSB2b2lkIGNsZWFyQ2FjaGUoKSB7CisgICAgICAgIGp1bGlhbkRheSAgICAgICA9IElOVkFMSUQ7CisgICAgICAgIGp1bGlhbkNlbnR1cnkgICA9IElOVkFMSUQ7CisgICAgICAgIHN1bkxvbmdpdHVkZSAgICA9IElOVkFMSUQ7CisgICAgICAgIG1lYW5Bbm9tYWx5U3VuICA9IElOVkFMSUQ7CisgICAgICAgIG1vb25Mb25naXR1ZGUgICA9IElOVkFMSUQ7CisgICAgICAgIG1vb25FY2xpcExvbmcgICA9IElOVkFMSUQ7CisgICAgICAgIG1lYW5Bbm9tYWx5TW9vbiA9IElOVkFMSUQ7CisgICAgICAgIGVjbGlwT2JsaXF1aXR5ICA9IElOVkFMSUQ7CisgICAgICAgIHNpZGVyZWFsVGltZSAgICA9IElOVkFMSUQ7CisgICAgICAgIHNpZGVyZWFsVDAgICAgICA9IElOVkFMSUQ7CisgICAgICAgIG1vb25Qb3NpdGlvbiAgICA9IG51bGw7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIHZvaWQgb3V0KFN0cmluZyBzKSB7CisgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbihzKTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGRlZyhkb3VibGUgcmFkKSB7CisgICAgICAgIHJldHVybiBEb3VibGUudG9TdHJpbmcocmFkICogUkFEX0RFRyk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBob3Vycyhsb25nIG1zKSB7CisgICAgICAgIHJldHVybiBEb3VibGUudG9TdHJpbmcoKGRvdWJsZSltcyAvIEhPVVJfTVMpICsgIiBob3VycyI7CisgICAgfQorICAgIHB1YmxpYyBTdHJpbmcgbG9jYWwobG9uZyBsb2NhbE1pbGxpcykgeworICAgICAgICByZXR1cm4gbmV3IERhdGUobG9jYWxNaWxsaXMgLSBUaW1lWm9uZS5nZXREZWZhdWx0KCkuZ2V0UmF3T2Zmc2V0KCkpLnRvU3RyaW5nKCk7CisgICAgfQorICAgIAorICAgIAorICAgIC8qKgorICAgICAqIFJlcHJlc2VudHMgdGhlIHBvc2l0aW9uIG9mIGFuIG9iamVjdCBpbiB0aGUgc2t5IHJlbGF0aXZlIHRvIHRoZSBlY2xpcHRpYywKKyAgICAgKiB0aGUgcGxhbmUgb2YgdGhlIGVhcnRoJ3Mgb3JiaXQgYXJvdW5kIHRoZSBTdW4uIAorICAgICAqIFRoaXMgaXMgYSBzcGhlcmljYWwgY29vcmRpbmF0ZSBzeXN0ZW0gaW4gd2hpY2ggdGhlIGxhdGl0dWRlCisgICAgICogc3BlY2lmaWVzIHRoZSBwb3NpdGlvbiBub3J0aCBvciBzb3V0aCBvZiB0aGUgcGxhbmUgb2YgdGhlIGVjbGlwdGljLgorICAgICAqIFRoZSBsb25naXR1ZGUgc3BlY2lmaWVzIHRoZSBwb3NpdGlvbiBhbG9uZyB0aGUgZWNsaXB0aWMgcGxhbmUKKyAgICAgKiByZWxhdGl2ZSB0byB0aGUgIkZpcnN0IFBvaW50IG9mIEFyaWVzIiwgd2hpY2ggaXMgdGhlIFN1bidzIHBvc2l0aW9uIGluIHRoZSBza3kKKyAgICAgKiBhdCB0aGUgVmVybmFsIEVxdWlub3guCisgICAgICogPHA+CisgICAgICogTm90ZSB0aGF0IEVjbGlwdGljIG9iamVjdHMgYXJlIGltbXV0YWJsZSBhbmQgY2Fubm90IGJlIG1vZGlmaWVkCisgICAgICogb25jZSB0aGV5IGFyZSBjb25zdHJ1Y3RlZC4gIFRoaXMgYWxsb3dzIHRoZW0gdG8gYmUgcGFzc2VkIGFuZCByZXR1cm5lZCBieQorICAgICAqIHZhbHVlIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgd2hldGhlciBvdGhlciBjb2RlIHdpbGwgbW9kaWZ5IHRoZW0uCisgICAgICoKKyAgICAgKiBAc2VlIENhbGVuZGFyQXN0cm9ub21lci5FcXVhdG9yaWFsCisgICAgICogQHNlZSBDYWxlbmRhckFzdHJvbm9tZXIuSG9yaXpvbgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2xhc3MgRWNsaXB0aWMgeworICAgICAgICAvKioKKyAgICAgICAgICogQ29uc3RydWN0cyBhbiBFY2xpcHRpYyBjb29yZGluYXRlIG9iamVjdC4KKyAgICAgICAgICogPHA+CisgICAgICAgICAqIEBwYXJhbSBsYXQgVGhlIGVjbGlwdGljIGxhdGl0dWRlLCBtZWFzdXJlZCBpbiByYWRpYW5zLgorICAgICAgICAgKiBAcGFyYW0gbG9uIFRoZSBlY2xpcHRpYyBsb25naXR1ZGUsIG1lYXN1cmVkIGluIHJhZGlhbnMuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgRWNsaXB0aWMoZG91YmxlIGxhdCwgZG91YmxlIGxvbikgeworICAgICAgICAgICAgbGF0aXR1ZGUgPSBsYXQ7CisgICAgICAgICAgICBsb25naXR1ZGUgPSBsb247CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgb2JqZWN0CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuIERvdWJsZS50b1N0cmluZyhsb25naXR1ZGUqUkFEX0RFRykgKyAiLCIgKyAobGF0aXR1ZGUqUkFEX0RFRyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgZWNsaXB0aWMgbGF0aXR1ZGUsIGluIHJhZGlhbnMuICBUaGlzIHNwZWNpZmllcyBhbiBvYmplY3QncworICAgICAgICAgKiBwb3NpdGlvbiBub3J0aCBvciBzb3V0aCBvZiB0aGUgcGxhbmUgb2YgdGhlIGVjbGlwdGljLAorICAgICAgICAgKiB3aXRoIHBvc2l0aXZlIGFuZ2xlcyByZXByZXNlbnRpbmcgbm9ydGguCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgZmluYWwgZG91YmxlIGxhdGl0dWRlOworICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBlY2xpcHRpYyBsb25naXR1ZGUsIGluIHJhZGlhbnMuCisgICAgICAgICAqIFRoaXMgc3BlY2lmaWVzIGFuIG9iamVjdCdzIHBvc2l0aW9uIGFsb25nIHRoZSBlY2xpcHRpYyBwbGFuZQorICAgICAgICAgKiByZWxhdGl2ZSB0byB0aGUgIkZpcnN0IFBvaW50IG9mIEFyaWVzIiwgd2hpY2ggaXMgdGhlIFN1bidzIHBvc2l0aW9uCisgICAgICAgICAqIGluIHRoZSBza3kgYXQgdGhlIFZlcm5hbCBFcXVpbm94LAorICAgICAgICAgKiB3aXRoIHBvc2l0aXZlIGFuZ2xlcyByZXByZXNlbnRpbmcgZWFzdC4KKyAgICAgICAgICogPHA+CisgICAgICAgICAqIEEgYml0IG9mIHRyaXZpYTogdGhlIGZpcnN0IHBvaW50IG9mIEFyaWVzIGlzIGN1cnJlbnRseSBpbiB0aGUKKyAgICAgICAgICogY29uc3RlbGxhdGlvbiBQaXNjZXMsIGR1ZSB0byB0aGUgcHJlY2Vzc2lvbiBvZiB0aGUgZWFydGgncyBheGlzLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGZpbmFsIGRvdWJsZSBsb25naXR1ZGU7CisgICAgfTsKKworICAgIC8qKgorICAgICAqIFJlcHJlc2VudHMgdGhlIHBvc2l0aW9uIG9mIGFuIAorICAgICAqIG9iamVjdCBpbiB0aGUgc2t5IHJlbGF0aXZlIHRvIHRoZSBwbGFuZSBvZiB0aGUgZWFydGgncyBlcXVhdG9yLiAKKyAgICAgKiBUaGUgPGk+UmlnaHQgQXNjZW5zaW9uPC9pPiBzcGVjaWZpZXMgdGhlIHBvc2l0aW9uIGVhc3Qgb3Igd2VzdAorICAgICAqIGFsb25nIHRoZSBlcXVhdG9yLCByZWxhdGl2ZSB0byB0aGUgc3VuJ3MgcG9zaXRpb24gYXQgdGhlIHZlcm5hbAorICAgICAqIGVxdWlub3guICBUaGUgPGk+RGVjbGluYXRpb248L2k+IGlzIHRoZSBwb3NpdGlvbiBub3J0aCBvciBzb3V0aAorICAgICAqIG9mIHRoZSBlcXVhdG9yaWFsIHBsYW5lLgorICAgICAqIDxwPgorICAgICAqIE5vdGUgdGhhdCBFcXVhdG9yaWFsIG9iamVjdHMgYXJlIGltbXV0YWJsZSBhbmQgY2Fubm90IGJlIG1vZGlmaWVkCisgICAgICogb25jZSB0aGV5IGFyZSBjb25zdHJ1Y3RlZC4gIFRoaXMgYWxsb3dzIHRoZW0gdG8gYmUgcGFzc2VkIGFuZCByZXR1cm5lZCBieQorICAgICAqIHZhbHVlIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgd2hldGhlciBvdGhlciBjb2RlIHdpbGwgbW9kaWZ5IHRoZW0uCisgICAgICoKKyAgICAgKiBAc2VlIENhbGVuZGFyQXN0cm9ub21lci5FY2xpcHRpYworICAgICAqIEBzZWUgQ2FsZW5kYXJBc3Ryb25vbWVyLkhvcml6b24KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIEVxdWF0b3JpYWwgeworICAgICAgICAvKioKKyAgICAgICAgICogQ29uc3RydWN0cyBhbiBFcXVhdG9yaWFsIGNvb3JkaW5hdGUgb2JqZWN0LgorICAgICAgICAgKiA8cD4KKyAgICAgICAgICogQHBhcmFtIGFzYyBUaGUgcmlnaHQgYXNjZW5zaW9uLCBtZWFzdXJlZCBpbiByYWRpYW5zLgorICAgICAgICAgKiBAcGFyYW0gZGVjIFRoZSBkZWNsaW5hdGlvbiwgbWVhc3VyZWQgaW4gcmFkaWFucy4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBFcXVhdG9yaWFsKGRvdWJsZSBhc2MsIGRvdWJsZSBkZWMpIHsKKyAgICAgICAgICAgIGFzY2Vuc2lvbiA9IGFzYzsKKyAgICAgICAgICAgIGRlY2xpbmF0aW9uID0gZGVjOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdCwgd2l0aCB0aGUKKyAgICAgICAgICogYW5nbGVzIG1lYXN1cmVkIGluIGRlZ3JlZXMuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuIERvdWJsZS50b1N0cmluZyhhc2NlbnNpb24qUkFEX0RFRykgKyAiLCIgKyAoZGVjbGluYXRpb24qUkFEX0RFRyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyBvYmplY3Qgd2l0aCB0aGUgcmlnaHQgYXNjZW5zaW9uCisgICAgICAgICAqIG1lYXN1cmVkIGluIGhvdXJzLCBtaW51dGVzLCBhbmQgc2Vjb25kcy4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9IbXNTdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gcmFkVG9IbXMoYXNjZW5zaW9uKSArICIsIiArIHJhZFRvRG1zKGRlY2xpbmF0aW9uKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSByaWdodCBhc2NlbnNpb24sIGluIHJhZGlhbnMuIAorICAgICAgICAgKiBUaGlzIGlzIHRoZSBwb3NpdGlvbiBlYXN0IG9yIHdlc3QgYWxvbmcgdGhlIGVxdWF0b3IKKyAgICAgICAgICogcmVsYXRpdmUgdG8gdGhlIHN1bidzIHBvc2l0aW9uIGF0IHRoZSB2ZXJuYWwgZXF1aW5veCwKKyAgICAgICAgICogd2l0aCBwb3NpdGl2ZSBhbmdsZXMgcmVwcmVzZW50aW5nIEVhc3QuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgZmluYWwgZG91YmxlIGFzY2Vuc2lvbjsKKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgZGVjbGluYXRpb24sIGluIHJhZGlhbnMuCisgICAgICAgICAqIFRoaXMgaXMgdGhlIHBvc2l0aW9uIG5vcnRoIG9yIHNvdXRoIG9mIHRoZSBlcXVhdG9yaWFsIHBsYW5lLAorICAgICAgICAgKiB3aXRoIHBvc2l0aXZlIGFuZ2xlcyByZXByZXNlbnRpbmcgbm9ydGguCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgZmluYWwgZG91YmxlIGRlY2xpbmF0aW9uOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBSZXByZXNlbnRzIHRoZSBwb3NpdGlvbiBvZiBhbiAgb2JqZWN0IGluIHRoZSBza3kgcmVsYXRpdmUgdG8gCisgICAgICogdGhlIGxvY2FsIGhvcml6b24uCisgICAgICogVGhlIDxpPkFsdGl0dWRlPC9pPiByZXByZXNlbnRzIHRoZSBvYmplY3QncyBlbGV2YXRpb24gYWJvdmUgdGhlIGhvcml6b24sCisgICAgICogd2l0aCBvYmplY3RzIGJlbG93IHRoZSBob3Jpem9uIGhhdmluZyBhIG5lZ2F0aXZlIGFsdGl0dWRlLgorICAgICAqIFRoZSA8aT5BemltdXRoPC9pPiBpcyB0aGUgZ2VvZ3JhcGhpYyBkaXJlY3Rpb24gb2YgdGhlIG9iamVjdCBmcm9tIHRoZQorICAgICAqIG9ic2VydmVyJ3MgcG9zaXRpb24sIHdpdGggMCByZXByZXNlbnRpbmcgbm9ydGguICBUaGUgYXppbXV0aCBpbmNyZWFzZXMKKyAgICAgKiBjbG9ja3dpc2UgZnJvbSBub3J0aC4KKyAgICAgKiA8cD4KKyAgICAgKiBOb3RlIHRoYXQgSG9yaXpvbiBvYmplY3RzIGFyZSBpbW11dGFibGUgYW5kIGNhbm5vdCBiZSBtb2RpZmllZAorICAgICAqIG9uY2UgdGhleSBhcmUgY29uc3RydWN0ZWQuICBUaGlzIGFsbG93cyB0aGVtIHRvIGJlIHBhc3NlZCBhbmQgcmV0dXJuZWQgYnkKKyAgICAgKiB2YWx1ZSB3aXRob3V0IHdvcnJ5aW5nIGFib3V0IHdoZXRoZXIgb3RoZXIgY29kZSB3aWxsIG1vZGlmeSB0aGVtLgorICAgICAqCisgICAgICogQHNlZSBDYWxlbmRhckFzdHJvbm9tZXIuRWNsaXB0aWMKKyAgICAgKiBAc2VlIENhbGVuZGFyQXN0cm9ub21lci5FcXVhdG9yaWFsCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBjbGFzcyBIb3Jpem9uIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIENvbnN0cnVjdHMgYSBIb3Jpem9uIGNvb3JkaW5hdGUgb2JqZWN0LgorICAgICAgICAgKiA8cD4KKyAgICAgICAgICogQHBhcmFtIGFsdCAgVGhlIGFsdGl0dWRlLCBtZWFzdXJlZCBpbiByYWRpYW5zIGFib3ZlIHRoZSBob3Jpem9uLgorICAgICAgICAgKiBAcGFyYW0gYXppbSBUaGUgYXppbXV0aCwgbWVhc3VyZWQgaW4gcmFkaWFucyBjbG9ja3dpc2UgZnJvbSBub3J0aC4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBIb3Jpem9uKGRvdWJsZSBhbHQsIGRvdWJsZSBhemltKSB7CisgICAgICAgICAgICBhbHRpdHVkZSA9IGFsdDsKKyAgICAgICAgICAgIGF6aW11dGggPSBhemltOworICAgICAgICB9CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFJldHVybiBhIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG9iamVjdCwgd2l0aCB0aGUKKyAgICAgICAgICogYW5nbGVzIG1lYXN1cmVkIGluIGRlZ3JlZXMuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICAgICAgcmV0dXJuIERvdWJsZS50b1N0cmluZyhhbHRpdHVkZSpSQURfREVHKSArICIsIiArIChhemltdXRoKlJBRF9ERUcpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKiogVGhlIG9iamVjdCdzIGFsdGl0dWRlIGFib3ZlIHRoZSBob3Jpem9uLCBpbiByYWRpYW5zLiAqLworICAgICAgICBwdWJsaWMgZmluYWwgZG91YmxlIGFsdGl0dWRlOworICAgICAgICAKKyAgICAgICAgLyoqIFRoZSBvYmplY3QncyBkaXJlY3Rpb24sIGluIHJhZGlhbnMgY2xvY2t3aXNlIGZyb20gbm9ydGguICovCisgICAgICAgIHB1YmxpYyBmaW5hbCBkb3VibGUgYXppbXV0aDsKKyAgICB9OworCisgICAgc3RhdGljIHByaXZhdGUgU3RyaW5nIHJhZFRvSG1zKGRvdWJsZSBhbmdsZSkgeworICAgICAgICBpbnQgaHJzID0gKGludCkgKGFuZ2xlKlJBRF9IT1VSKTsKKyAgICAgICAgaW50IG1pbiA9IChpbnQpKChhbmdsZSpSQURfSE9VUiAtIGhycykgKiA2MCk7CisgICAgICAgIGludCBzZWMgPSAoaW50KSgoYW5nbGUqUkFEX0hPVVIgLSBocnMgLSBtaW4vNjAuMCkgKiAzNjAwKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBJbnRlZ2VyLnRvU3RyaW5nKGhycykgKyAiaCIgKyBtaW4gKyAibSIgKyBzZWMgKyAicyI7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwcml2YXRlIFN0cmluZyByYWRUb0Rtcyhkb3VibGUgYW5nbGUpIHsKKyAgICAgICAgaW50IGRlZyA9IChpbnQpIChhbmdsZSpSQURfREVHKTsKKyAgICAgICAgaW50IG1pbiA9IChpbnQpKChhbmdsZSpSQURfREVHIC0gZGVnKSAqIDYwKTsKKyAgICAgICAgaW50IHNlYyA9IChpbnQpKChhbmdsZSpSQURfREVHIC0gZGVnIC0gbWluLzYwLjApICogMzYwMCk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gSW50ZWdlci50b1N0cmluZyhkZWcpICsgIlx1MDBiMCIgKyBtaW4gKyAiJyIgKyBzZWMgKyAiXCIiOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvQ2FsZW5kYXJDYWNoZS5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9DYWxlbmRhckNhY2hlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNGU4YzFkNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvQ2FsZW5kYXJDYWNoZS5qYXZhCkBAIC0wLDAgKzEsMTE4IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL0F0dGljL0NhbGVuZGFyQ2FjaGUuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8xMS8xOCAwMDozMTo0MyAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udXRpbDsKKworcHVibGljIGNsYXNzIENhbGVuZGFyQ2FjaGUKK3sKKyAgICBwdWJsaWMgQ2FsZW5kYXJDYWNoZSgpIHsKKyAgICAgICAgbWFrZUFycmF5cyhhcnJheVNpemUpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgbWFrZUFycmF5cyhpbnQgbmV3U2l6ZSkgeworICAgICAgICBrZXlzICAgID0gbmV3IGxvbmdbbmV3U2l6ZV07CisgICAgICAgIHZhbHVlcyAgPSBuZXcgbG9uZ1tuZXdTaXplXTsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbmV3U2l6ZTsgaSsrKSB7CisgICAgICAgICAgICB2YWx1ZXNbaV0gPSBFTVBUWTsKKyAgICAgICAgfQorICAgICAgICBhcnJheVNpemUgPSBuZXdTaXplOworICAgICAgICB0aHJlc2hvbGQgPSAoaW50KShhcnJheVNpemUgKiAwLjc1KTsKKyAgICAgICAgc2l6ZSA9IDA7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgbG9uZyBnZXQobG9uZyBrZXkpIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlc1tmaW5kSW5kZXgoa2V5KV07CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBwdXQobG9uZyBrZXksIGxvbmcgdmFsdWUpCisgICAgeworICAgICAgICBpZiAoc2l6ZSA+PSB0aHJlc2hvbGQpIHsKKyAgICAgICAgICAgIHJlaGFzaCgpOworICAgICAgICB9CisgICAgICAgIGludCBpbmRleCA9IGZpbmRJbmRleChrZXkpOworICAgICAgICAKKyAgICAgICAga2V5c1tpbmRleF0gPSBrZXk7CisgICAgICAgIHZhbHVlc1tpbmRleF0gPSB2YWx1ZTsKKyAgICAgICAgc2l6ZSsrOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIGZpbmFsIGludCBmaW5kSW5kZXgobG9uZyBrZXkpIHsKKyAgICAgICAgaW50IGluZGV4ID0gaGFzaChrZXkpOworICAgICAgICBpbnQgZGVsdGEgPSAwOworICAgICAgICAKKyAgICAgICAgd2hpbGUgKHZhbHVlc1tpbmRleF0gIT0gRU1QVFkgJiYga2V5c1tpbmRleF0gIT0ga2V5KQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZGVsdGEgPT0gMCkgeworICAgICAgICAgICAgICAgIGRlbHRhID0gaGFzaDIoa2V5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGluZGV4ID0gKGluZGV4ICsgZGVsdGEpICUgYXJyYXlTaXplOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpbmRleDsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIHJlaGFzaCgpCisgICAgeworICAgICAgICBpbnQgb2xkU2l6ZSA9IGFycmF5U2l6ZTsKKyAgICAgICAgbG9uZ1tdIG9sZEtleXMgPSBrZXlzOworICAgICAgICBsb25nW10gb2xkVmFsdWVzID0gdmFsdWVzOworICAgICAgICAKKyAgICAgICAgaWYgKHBJbmRleCA8IHByaW1lcy5sZW5ndGggLSAxKSB7CisgICAgICAgICAgICBhcnJheVNpemUgPSBwcmltZXNbKytwSW5kZXhdOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXJyYXlTaXplID0gYXJyYXlTaXplICogMiArIDE7CisgICAgICAgIH0KKyAgICAgICAgc2l6ZSA9IDA7CisgICAgICAgIAorICAgICAgICBtYWtlQXJyYXlzKGFycmF5U2l6ZSk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgb2xkU2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBpZiAob2xkVmFsdWVzW2ldICE9IEVNUFRZKSB7CisgICAgICAgICAgICAgICAgcHV0KG9sZEtleXNbaV0sIG9sZFZhbHVlc1tpXSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgb2xkS2V5cyA9IG9sZFZhbHVlcyA9IG51bGw7IC8vIEhlbHAgb3V0IHRoZSBnYXJiYWdlIGNvbGxlY3RvcgorICAgIH0KKyAgICAKKyAgICAKKyAgICAvKioKKyAgICAgKiBQcm9kdWNlIGEgdW5pZm9ybWx5LWRpc3RyaWJ1dGVkIGhhc2ggdmFsdWUgZnJvbSBhbiBpbnRlZ2VyIGtleS4KKyAgICAgKiBUaGlzIGlzIGVzc2VudGlhbGx5IGEgbGluZWFyIGNvbmdydWVudGlhbCByYW5kb20gbnVtYmVyIGdlbmVyYXRvcgorICAgICAqIHRoYXQgdXNlcyB0aGUga2V5IGFzIGl0cyBzZWVkIHZhbHVlLgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgaW50IGhhc2gobG9uZyBrZXkpCisgICAgeworICAgICAgICBpbnQgaCA9IChpbnQpKChrZXkgKiAxNTgyMSArIDEpICUgYXJyYXlTaXplKTsKKyAgICAgICAgaWYgKGggPCAwKSB7CisgICAgICAgICAgICBoICs9IGFycmF5U2l6ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaDsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBmaW5hbCBpbnQgaGFzaDIobG9uZyBrZXkpIHsKKyAgICAgICAgcmV0dXJuIGFycmF5U2l6ZSAtIDIgLSAoaW50KShrZXkgJSAoYXJyYXlTaXplLTIpICk7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIGludCBwcmltZXNbXSA9IHsgIC8vIDUsIDE3LCAzMSwgNDcsIC8vIGZvciB0ZXN0aW5nCisgICAgICAgIDYxLCAxMjcsIDUwOSwgMTAyMSwgMjAzOSwgNDA5MywgODE5MSwgMTYzODEsIDMyNzQ5LCA2NTUyMSwKKyAgICAgICAgMTMxMDcxLCAyNjIxMzksIAorICAgIH07CisKKyAgICBwcml2YXRlIGludCAgICAgcEluZGV4ICAgICAgPSAwOworICAgIHByaXZhdGUgaW50ICAgICBzaXplICAgICAgICA9IDA7CisgICAgcHJpdmF0ZSBpbnQgICAgIGFycmF5U2l6ZSAgID0gcHJpbWVzW3BJbmRleF07CisgICAgcHJpdmF0ZSBpbnQgICAgIHRocmVzaG9sZCAgID0gKGFycmF5U2l6ZSAqIDMpIC8gNDsKKyAgICAKKyAgICBwcml2YXRlIGxvbmdbXSAga2V5cyAgICAgICAgPSBuZXcgbG9uZ1thcnJheVNpemVdOworICAgIHByaXZhdGUgbG9uZ1tdICB2YWx1ZXMgICAgICA9IG5ldyBsb25nW2FycmF5U2l6ZV07CisgICAgCisgICAgc3RhdGljIHB1YmxpYyAgbG9uZyBFTVBUWSAgID0gTG9uZy5NSU5fVkFMVUU7Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL0NoYXJUcmllLmphdmEgYi9zcmMvY29tL2libS91dGlsL0NoYXJUcmllLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzVhMjNhZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvQ2hhclRyaWUuamF2YQpAQCAtMCwwICsxLDIzMiBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMSwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL0F0dGljL0NoYXJUcmllLmphdmEsdiAkIAorKiAkRGF0ZTogMjAwMS8wMy8yOCAwMDowMTo1MiAkIAorKiAkUmV2aXNpb246IDEuMSAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS51dGlsOworCitpbXBvcnQgY29tLmlibS50ZXh0LlVDaGFyYWN0ZXI7CisKKy8qKgorKiBDbGFzcyB0byBtYW5pcHVsYXRlIGFuZCBnZW5lcmF0ZSBhIHRyaWUuCisqIFRoaXMgaXMgdXNlZnVsIGZvciBJQ1UgZGF0YSBpbiBwcmltaXRpdmUgdHlwZXMuCisqIFByb3ZpZGVzIGEgY29tcGFjdCB3YXkgdG8gc3RvcmUgaW5mb3JtYXRpb24gdGhhdCBpcyBpbmRleGVkIGJ5IFVuaWNvZGUgCisqIHZhbHVlcywgc3VjaCBhcyBjaGFyYWN0ZXIgcHJvcGVydGllcywgdHlwZXMsIGtleWJvYXJkIHZhbHVlcywgZXRjLiBUaGlzIGlzIAorKiB2ZXJ5IHVzZWZ1bCB3aGVuIHlvdSBoYXZlIGEgYmxvY2sgb2YgVW5pY29kZSBkYXRhIHRoYXQgY29udGFpbnMgc2lnbmlmaWNhbnQgCisqIHZhbHVlcyB3aGlsZSB0aGUgcmVzdCBvZiB0aGUgVW5pY29kZSBkYXRhIGlzIHVudXNlZCBpbiB0aGUgYXBwbGljYXRpb24gb3IgCisqIHdoZW4geW91IGhhdmUgYSBsb3Qgb2YgcmVkdW5kYW5jZSwgc3VjaCBhcyB3aGVyZSBhbGwgMjEsMDAwIEhhbiBpZGVvZ3JhcGhzIAorKiBoYXZlIHRoZSBzYW1lIHZhbHVlLiAgSG93ZXZlciwgbG9va3VwIGlzIG11Y2ggZmFzdGVyIHRoYW4gYSBoYXNoIHRhYmxlLgorKiBBIHRyaWUgb2YgYW55IHByaW1pdGl2ZSBkYXRhIHR5cGUgc2VydmVzIHR3byBwdXJwb3NlczoKKyogPFVMIHR5cGUgPSByb3VuZD4KKyogICAgIDxMST5GYXN0IGFjY2VzcyBvZiB0aGUgaW5kZXhlZCB2YWx1ZXMuCisqICAgICA8TEk+U21hbGxlciBtZW1vcnkgZm9vdHByaW50LgorKiA8L1VMPgorKiBBIHRyaWUgaXMgY29tcG9zZWQgb2YgMiBpbmRleCBhcnJheSBhbmQgdmFsdWUgYXJyYXkuIENvbWJpbmluZyB0aGUgMiBpbmRleAorKiBhcnJheSwgd2UgY291bGQgZ2V0IHRoZSBpbmRpY2llcyBvZiBVbmljb2RlIGNoYXJhY3RlcnMgdG8gdGhlIHZhbHVlIGFycmF5LgorKiBUaGUgZmlyc3QgaW5kZXggYXJyYXkgd2lsbCBjb250YWluIGluZGV4ZXMgY29ycmVzcG9uZGluZyB0byB0aGUgZmlyc3QgMTEgCisqIGJpdHMgb2YgYSAyMSBiaXQgY29kZXBvaW50LCB0aGUgc2Vjb25kIGluZGV4IGFycmF5IHdpbGwgY29udGFpbiBpbmRleGVzIAorKiBjb3JyZXNwb25kaW5nIHRvIHRoZSBuZXh0IDYgYml0cyBvZiB0aGUgY29kZSBwb2ludC4gVGhlIGxhc3QgYXJyYXkgd2lsbCAKKyogY29udGFpbiB0aGUgdmFsdWVzLiBIZW5jZSB0byBhY2Nlc3MgdGhlIHZhbHVlIG9mIGEgY29kZXBvaW50LCB3ZSBjYW4gdXNlIHRoZQorKiBmb2xsb3dpbmcgcHJvZ3JhbQorKiA8cD4KKyogICBpbnQgZmlyc3RpbmRleCA9IGNoID4+IEZJUlNUXzExX0JJVFNfU0hJRlQ7PGJyPgorKiAgIGludCBzZWNvbmRpbmRleCA9IGluZGV4MVtmaXJzdGluZGV4XSArIAorKiAgICAgICAgICAgICAgICAgICAgICAgKGNoID4+IE5FWFRfNl9CSVRTX1NISUZUKSAmIE5FWFRfNl9CSVRTX01BU0s7PGJyPgorKiAgIGludCB0aGlyZGluZGV4ID0gaW5kZXgyW3NlY29uZGluZGV4XSArIGNoICYgTEFTVF9GT1VSX0JJVFNfTUFTSzs8YnI+ICAgIAorKiAgIGYoY2gpID0gdmFsdWVbdGhpcmRpbmRleF07PGJyPgorKiA8L3A+CisqIEB2ZXJzaW9uICAgICAgICAgICAgJFJldmlzaW9uOiAxLjEgJAorKiBAYXV0aG9yICAgICAgICAgICAgIFN5biBXZWUgUXVlaworKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBDaGFyVHJpZQoreworICAvLyBjb25zdHJ1Y3RvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgCisgIC8qKgorICAqIGNvbnN0cnVjdG9yIAorICAqIEBwYXJhbSBhcnJheSBvZiBkYXRhIHRvIGJlIHBvcHVsYXRlZCBpbnRvIHRyaWUKKyAgKi8KKyAgcHVibGljIENoYXJUcmllKGNoYXIgYXJyYXlbXSkKKyAgeworICAgIGJ1aWxkKGFycmF5KTsKKyAgfQorICAKKyAgLyoqCisgICogY29uc3RydWN0b3IgdGhhdCBhc3NpZ25zIHRyaWUgdGhlIGFyZ3VtZW50IHZhbHVlcy4gQXJyYXlzIGFyZSBub3QgCisgICogZHVwbGljYXRlZC4KKyAgKiBAcGFyYW0gc3RhZ2UxIGFycmF5IG9mIHRoZSBmaXJzdCBzZXQgb2YgaW5kZXhlcworICAqIEBwYXJhbSBzdGFnZTIgYXJyYXkgb2YgdGhlIHNlY29uZCBzZXQgb2YgaW5kZXhlcworICAqIEBwYXJhbSBzdGFnZTMgYXJyYXkgb2YgZGF0YQorICAqLworICBwdWJsaWMgQ2hhclRyaWUoaW50IHN0YWdlMVtdLCBpbnQgc3RhZ2UyW10sIGNoYXIgc3RhZ2UzW10pCisgIHsKKyAgICBtX3N0YWdlMV8gPSBzdGFnZTE7CisgICAgbV9zdGFnZTJfID0gc3RhZ2UyOworICAgIG1fc3RhZ2UzXyA9IHN0YWdlMzsKKyAgfQorICAKKyAgLy8gcHVibGljIG1ldGhvZHMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAKKyAgLyoqCisgICogR2V0dGluZyB0aGUgdHJpZSBkYXRhIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGFyZ3VtZW50IGluZGV4LgorICAqIEBwYXJhbSBpbmRleCB0byBiZSBtYW5pcHVsYXRlZCBpbnRvIGNvcnJlc3BvbmRpbmcgdHJpZSBpbmRleAorICAqIEByZXR1cm4gdHJpZSB2YWx1ZSBhdCBpbmRleAorICAqLworICBwdWJsaWMgY2hhciBnZXRWYWx1ZShpbnQgaW5kZXgpCisgIHsKKyAgICAvLyBpbmRleCBvZiB0aGUgZmlyc3QgYWNjZXNzIHRvIHRoZSBkYXRhYmFzZSAKKyAgICBpbnQgaW5kZXgxID0gaW5kZXggPj4gU1RBR0VfMV9TSElGVF87CisgICAgLy8gaW5kZXggb2YgdGhlIHNlY29uZCBhY2Nlc3MgdG8gdGhlIGRhdGFiYXNlCisgICAgaW50IGluZGV4MiA9IG1fc3RhZ2UxX1tpbmRleDFdICsgCisgICAgICAgICAgICAgICAgICgoaW5kZXggPj4gU1RBR0VfMl9TSElGVF8pICYgU1RBR0VfMl9NQVNLX0FGVEVSX1NISUZUXyk7CisgICAgLy8gaW5kZXggb2YgdGhlIHRoaXJkIGFjY2VzcyB0byB0aGUgZGF0YWJhc2UKKyAgICBpbnQgaW5kZXgzID0gbV9zdGFnZTJfW2luZGV4Ml0gKyAoaW5kZXggJiBTVEFHRV8zX01BU0tfKTsgIAorICAgIC8vIHJldHJpZXZlcyB2YWx1ZQorICAgIHJldHVybiBtX3N0YWdlM19baW5kZXgzXTsKKyAgfQorICAKKyAgLy8gcHJpdmF0ZSBkYXRhIG1lbWJlcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIAorICAvKioKKyAgKiBTdGFnZSAxIGluZGV4IGFycmF5CisgICovCisgIHByaXZhdGUgaW50IG1fc3RhZ2UxX1tdOworICAKKyAgLyoqCisgICogU3RhZ2UgMiBpbmRleCBhcnJheQorICAqLworICBwcml2YXRlIGludCBtX3N0YWdlMl9bXTsKKyAgCisgIC8qKgorICAqIFN0YWdlIDMgdmFsdWUgYXJyYXkKKyAgKi8KKyAgcHJpdmF0ZSBjaGFyIG1fc3RhZ2UzX1tdOworICAKKyAgLyoqCisgICogU3RhZ2UgMSBzaGlmdAorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU1RBR0VfMV9TSElGVF8gPSAxMDsKKyAgCisgIC8qKgorICAqIFN0YWdlIDIgc2hpZnQKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNUQUdFXzJfU0hJRlRfID0gNDsKKyAgCisgIC8qKgorICAqIFN0YWdlIDIgbWFzaworICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU1RBR0VfMl9NQVNLX0FGVEVSX1NISUZUXyA9IDB4M0Y7CisgIAorICAvKioKKyAgKiBTdGFnZSAzIG1hc2sKKyAgKi8KKyAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNUQUdFXzNfTUFTS18gPSAweEY7CisgIAorICAvKioKKyAgKiBOdW1iZXIgb2YgbnVtYmVycyBwb3NzaWJsZSBmcm9tIGEgNCBiaXQgdHlwZQorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ09VTlRfNF9CSVRfID0gMHgxMDsKKyAgCisgIC8qKgorICAqIE51bWJlciBvZiBudW1iZXJzIHBvc3NpYmxlIGZyb20gYSA2IGJpdCB0eXBlCisgICovCisgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDT1VOVF82X0JJVF8gPSAweDQwOworICAKKyAgLyoqCisgICogTnVtYmVyIG9mIG51bWJlcnMgcG9zc2libGUgZnJvbSB0aGUgZmlyc3QgMTcgYml0cyBvZiBhIGNvZGVwb2ludAorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ09VTlRfQ09ERVBPSU5UX0ZJUlNUXzE3X0JJVF8gPSAweDExMDAwMCA+PiA0OworICAKKyAgLyoqCisgICogTnVtYmVyIG9mIG51bWJlcnMgcG9zc2libGUgZnJvbSB0aGUgZmlyc3QgMTEgYml0cyBvZiBhIGNvZGVwb2ludAorICAqLworICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ09VTlRfQ09ERVBPSU5UX0ZJUlNUXzExX0JJVF8gPSAweDExMDAwMCA+PiAxMDsKKyAgCisgIC8vIHByaXZhdGUgbWV0aG9kcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAKKyAgLyoqCisgICogQnVpbGRpbmcgdGhlIHRyaWUgZnJvbSBhIGFyZ3VtZW50IGFycmF5LgorICAqIEVhY2ggdW5pY29kZSBjaGFyYWN0ZXIgd2lsbCBiZSB1c2VkIHRvIGdlbmVyYXRlIGRhdGEuCisgICogQHBhcmFtIG91dHB1dCBmaWxlIHBhdGgKKyAgKi8KKyAgcHJpdmF0ZSB2b2lkIGJ1aWxkKGNoYXIgYXJyYXlbXSkKKyAgeworICAgIGludCBjaCA9IDA7CisgICAgCisgICAgaW50IHN0YWdlMltdID0gbmV3IGludFtDT1VOVF9DT0RFUE9JTlRfRklSU1RfMTdfQklUX107CisgICAgY2hhciBzdGFnZTNbXSA9IG5ldyBjaGFyW1VDaGFyYWN0ZXIuTUFYX1ZBTFVFID4+IDFdOworICAgIGludCBzaXplID0gVHJpZUJ1aWxkZXIuYnVpbGQoYXJyYXksIDAsIGFycmF5Lmxlbmd0aCwgQ09VTlRfNF9CSVRfLCBzdGFnZTIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2UzKTsKKyAgICAKKyAgICBtX3N0YWdlM18gPSBuZXcgY2hhcltzaXplXTsKKyAgICBTeXN0ZW0uYXJyYXljb3B5KHN0YWdlMywgMCwgbV9zdGFnZTNfLCAwLCBzaXplKTsKKyAgICAKKyAgICBtX3N0YWdlMV8gPSBuZXcgaW50W0NPVU5UX0NPREVQT0lOVF9GSVJTVF8xMV9CSVRfXTsKKyAgICBzaXplID0gVHJpZUJ1aWxkZXIuYnVpbGQoc3RhZ2UyLCAwLCBzdGFnZTIubGVuZ3RoLCBDT1VOVF82X0JJVF8sIG1fc3RhZ2UxXywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdlMik7CisgICAgbV9zdGFnZTJfID0gbmV3IGludFtzaXplXTsKKyAgICBTeXN0ZW0uYXJyYXljb3B5KHN0YWdlMiwgMCwgbV9zdGFnZTJfLCAwLCBzaXplKTsKKyAgfQorICAKKyAgLyoqCisgICogQ29udmVydHMgdHJpZSB0byBhIHJlYWRhYmxlIGZvcm1hdAorICAqIEByZXR1cm4gc3RyaW5nIHZlcnNpb24gb2YgdGhlIHRyaWUKKyAgKi8KKyAgcHVibGljIFN0cmluZyB0b1N0cmluZygpCisgIHsKKyAgICBpbnQgc2l6ZSA9IG1fc3RhZ2UxXy5sZW5ndGg7CisgICAgaW50IGNvdW50ID0gMDsKKyAgICBTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigiaW50IG1fc3RhZ2UxX1tdID0ge1xuIik7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpICsrKSB7CisgICAgICByZXN1bHQuYXBwZW5kKCIweCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1fc3RhZ2UxX1tpXSkpOworICAgICAgaWYgKGkgIT0gc2l6ZSAtIDEpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiLCAiKTsKKyAgICAgIH0KKyAgICAgIGNvdW50ICsrOworICAgICAgaWYgKGNvdW50ID09IDEwKSB7CisgICAgICAgIGNvdW50ID0gMDsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiXG4iKTsKKyAgICAgIH0KKyAgICB9CisgICAgcmVzdWx0LmFwcGVuZCgiXG59XG5cbiIpOworICAgIHNpemUgPSBtX3N0YWdlMl8ubGVuZ3RoOworICAgIHJlc3VsdC5hcHBlbmQoImludCBtX3N0YWdlMl9bXSA9IHtcbiIpOworICAgIGNvdW50ID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkgKyspIHsKKyAgICAgIHJlc3VsdC5hcHBlbmQoIjB4IiArIEludGVnZXIudG9IZXhTdHJpbmcobV9zdGFnZTJfW2ldKSk7CisgICAgICBpZiAoaSAhPSBzaXplIC0gMSkgeworICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIpOworICAgICAgfQorICAgICAgY291bnQgKys7CisgICAgICBpZiAoY291bnQgPT0gMTApIHsKKyAgICAgICAgY291bnQgPSAwOworICAgICAgICByZXN1bHQuYXBwZW5kKCJcbiIpOworICAgICAgfQorICAgIH0KKyAgICByZXN1bHQuYXBwZW5kKCJcbn1cblxuIik7CisgICAgc2l6ZSA9IG1fc3RhZ2UzXy5sZW5ndGg7CisgICAgcmVzdWx0LmFwcGVuZCgiY2hhciBtX3N0YWdlM19bXSA9IHtcbiIpOworICAgIGNvdW50ID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkgKyspIHsKKyAgICAgIHJlc3VsdC5hcHBlbmQoIjB4IiArIEludGVnZXIudG9IZXhTdHJpbmcobV9zdGFnZTNfW2ldKSk7CisgICAgICBpZiAoaSAhPSBzaXplIC0gMSkgeworICAgICAgICByZXN1bHQuYXBwZW5kKCIsICIpOworICAgICAgfQorICAgICAgY291bnQgKys7CisgICAgICBpZiAoY291bnQgPT0gMTApIHsKKyAgICAgICAgY291bnQgPSAwOworICAgICAgICByZXN1bHQuYXBwZW5kKCJcbiIpOworICAgICAgfQorICAgIH0KKyAgICByZXN1bHQuYXBwZW5kKCJcbn0iKTsKKyAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL0NoaW5lc2VDYWxlbmRhci5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9DaGluZXNlQ2FsZW5kYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40NTYzOGU3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9DaGluZXNlQ2FsZW5kYXIuamF2YQpAQCAtMCwwICsxLDc4MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdXRpbC9BdHRpYy9DaGluZXNlQ2FsZW5kYXIuamF2YSx2ICQKKyAqICREYXRlOiAyMDAwLzExLzI5IDIxOjU3OjQ4ICQKKyAqICRSZXZpc2lvbjogMS45ICQKKyAqLworcGFja2FnZSBjb20uaWJtLnV0aWw7CitpbXBvcnQgY29tLmlibS50ZXh0Lio7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKKworLyoqCisgKiA8Y29kZT5DaGluZXNlQ2FsZW5kYXI8L2NvZGU+IGlzIGEgY29uY3JldGUgc3ViY2xhc3Mgb2Yge0BsaW5rIENhbGVuZGFyfQorICogdGhhdCBpbXBsZW1lbnRzIGEgdHJhZGl0aW9uYWwgQ2hpbmVzZSBjYWxlbmRhci4gIFRoZSB0cmFkaXRpb25hbCBDaGluZXNlCisgKiBjYWxlbmRhciBpcyBhIGx1bmlzb2xhciBjYWxlbmRhcjogRWFjaCBtb250aCBzdGFydHMgb24gYSBuZXcgbW9vbiwgYW5kCisgKiB0aGUgbW9udGhzIGFyZSBudW1iZXJlZCBhY2NvcmRpbmcgdG8gc29sYXIgZXZlbnRzLCBzcGVjaWZpY2FsbHksIHRvCisgKiBndWFyYW50ZWUgdGhhdCBtb250aCAxMSBhbHdheXMgY29udGFpbnMgdGhlIHdpbnRlciBzb2xzdGljZS4gIEluIG9yZGVyCisgKiB0byBhY2NvbXBsaXNoIHRoaXMsIGxlYXAgbW9udGhzIGFyZSBpbnNlcnRlZCBpbiBjZXJ0YWluIHllYXJzLiAgTGVhcAorICogbW9udGhzIGFyZSBudW1iZXJlZCB0aGUgc2FtZSBhcyB0aGUgbW9udGggdGhleSBmb2xsb3cuICBUaGUgZGVjaXNpb24gb2YKKyAqIHdoaWNoIG1vbnRoIGlzIGEgbGVhcCBtb250aCBkZXBlbmRzIG9uIHRoZSByZWxhdGl2ZSBtb3ZlbWVudHMgb2YgdGhlIHN1bgorICogYW5kIG1vb24uCisgKgorICogPHA+VGhpcyBjbGFzcyBkZWZpbmVzIG9uZSBhZGRpdGlvbiBmaWVsZCBiZXlvbmQgdGhvc2UgZGVmaW5lZCBieQorICogPGNvZGU+Q2FsZW5kYXI8L2NvZGU+OiBUaGUgPGNvZGU+SVNfTEVBUF9NT05USDwvY29kZT4gZmllbGQgdGFrZXMgdGhlCisgKiB2YWx1ZSBvZiAwIGZvciBub3JtYWwgbW9udGhzLCBvciAxIGZvciBsZWFwIG1vbnRocy4KKyAqCisgKiA8cD5BbGwgYXN0cm9ub21pY2FsIGNvbXB1dGF0aW9ucyBhcmUgcGVyZm9ybWVkIHdpdGggcmVzcGVjdCB0byBhIHRpbWUKKyAqIHpvbmUgb2YgR01UKzg6MDAgYW5kIGEgbG9uZ2l0dWRlIG9mIDEyMCBkZWdyZWVzIGVhc3QuICBBbHRob3VnaCBzb21lCisgKiBjYWxlbmRhcnMgaW1wbGVtZW50IGEgaGlzdG9yaWNhbGx5IG1vcmUgYWNjdXJhdGUgY29udmVudGlvbiBvZiB1c2luZworICogQmVpamluZydzIGxvY2FsIGxvbmdpdHVkZSAoMTE2IGRlZ3JlZXMgMjUgbWludXRlcyBlYXN0KSBhbmQgdGltZSB6b25lCisgKiAoR01UKzc6NDU6NDApIGZvciBkYXRlcyBiZWZvcmUgMTkyOSwgd2UgZG8gbm90IGltcGxlbWVudCB0aGlzIGhlcmUuCisgKgorICogPHA+WWVhcnMgYXJlIGNvdW50ZWQgaW4gdHdvIGRpZmZlcmVudCB3YXlzIGluIHRoZSBDaGluZXNlIGNhbGVuZGFyLiAgVGhlCisgKiBmaXJzdCBtZXRob2QgaXMgYnkgc2VxdWVudGlhbCBudW1iZXJpbmcgZnJvbSB0aGUgNjFzdCB5ZWFyIG9mIHRoZSByZWlnbgorICogb2YgSHVhbmcgRGksIDI2MzcgQkNFLCB3aGljaCBpcyBkZXNpZ25hdGVkIHllYXIgMSBvbiB0aGUgQ2hpbmVzZQorICogY2FsZW5kYXIuICBUaGUgc2Vjb25kIG1ldGhvZCB1c2VzIDYwLXllYXIgY3ljbGVzIGZyb20gdGhlIHNhbWUgc3RhcnRpbmcKKyAqIHBvaW50LCB3aGljaCBpcyBkZXNpZ25hdGVkIHllYXIgMSBvZiBjeWNsZSAxLiAgSW4gdGhpcyBjbGFzcywgdGhlCisgKiA8Y29kZT5FWFRFTkRFRF9ZRUFSPC9jb2RlPiBmaWVsZCBjb250YWlucyB0aGUgc2VxdWVudGlhbCB5ZWFyIGNvdW50LgorICogVGhlIDxjb2RlPkVSQTwvY29kZT4gZmllbGQgY29udGFpbnMgdGhlIGN5Y2xlIG51bWJlciwgYW5kIHRoZQorICogPGNvZGU+WUVBUjwvY29kZT4gZmllbGQgY29udGFpbnMgdGhlIHllYXIgb2YgdGhlIGN5Y2xlLCBhIHZhbHVlIGJldHdlZW4KKyAqIDEgYW5kIDYwLgorICoKKyAqIDxwPlRoZXJlIGlzIHNvbWUgdmFyaWF0aW9uIGluIHdoYXQgaXMgY29uc2lkZXJlZCB0aGUgc3RhcnRpbmcgcG9pbnQgb2YKKyAqIHRoZSBjYWxlbmRhciwgd2l0aCBzb21lIHNvdXJjZXMgc3RhcnRpbmcgaW4gdGhlIGZpcnN0IHllYXIgb2YgdGhlIHJlaWduCisgKiBvZiBIdWFuZyBEaSwgcmF0aGVyIHRoYW4gdGhlIDYxc3QuICBUaGlzIGdpdmVzIGNvbnRpbnVvdXMgeWVhciBudW1iZXJzCisgKiA2MCB5ZWFycyBncmVhdGVyIGFuZCBjeWNsZSBudW1iZXJzIG9uZSBncmVhdGVyIHRoYW4gd2hhdCB0aGlzIGNsYXNzCisgKiBpbXBsZW1lbnRzLgorICoKKyAqIDxwPkJlY2F1c2UgPGNvZGU+Q2hpbmVzZUNhbGVuZGFyPC9jb2RlPiBkZWZpbmVzIGFuIGFkZGl0aW9uYWwgZmllbGQgYW5kCisgKiByZWRlZmluZXMgdGhlIHdheSB0aGUgPGNvZGU+RVJBPC9jb2RlPiBmaWVsZCBpcyB1c2VkLCBpdCByZXF1aXJlcyBhIG5ldworICogZm9ybWF0IGNsYXNzLCA8Y29kZT5DaGluZXNlRGF0ZUZvcm1hdDwvY29kZT4uICBBcyBhbHdheXMsIHVzZSB0aGUKKyAqIG1ldGhvZHMgPGNvZGU+RGF0ZUZvcm1hdC5nZXRYeHhJbnN0YW5jZShDYWxlbmRhciBjYWwsLi4uKTwvY29kZT4gdG8KKyAqIG9idGFpbiBhIGZvcm1hdHRlciBmb3IgdGhpcyBjYWxlbmRhci4KKyAqCisgKiA8cD5SZWZlcmVuY2VzOjx1bD4KKyAqIAorICogPGxpPkRlcnNob3dpdHogYW5kIFJlaW5nb2xkLCA8aT5DYWxlbmRyaWNhbCBDYWxjdWxhdGlvbnM8L2k+LAorICogQ2FtYnJpZGdlIFVuaXZlcnNpdHkgUHJlc3MsIDE5OTc8L2xpPgorICogCisgKiA8bGk+SGVsbWVyIEFzbGFrc2VuJ3MKKyAqIDxhIGhyZWY9Imh0dHA6Ly93d3cubWF0aC5udXMuZWR1LnNnL2FzbGFrc2VuL2NhbGVuZGFyL2NoaW5lc2Uuc2h0bWwiPgorICogQ2hpbmVzZSBDYWxlbmRhciBwYWdlPC9hPjwvbGk+CisgKgorICogPGxpPlRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnRvbmRlcmluZy5kay9jbGF1cy9jYWxlbmRhci5odG1sIj4KKyAqIENhbGVuZGFyIEZBUTwvYT48L2xpPgorICoKKyAqIDwvdWw+CisgKiBAc2VlIGNvbS5pYm0udGV4dC5DaGluZXNlRGF0ZUZvcm1hdAorICogQGF1dGhvciBBbGFuIExpdQorICovCitwdWJsaWMgY2xhc3MgQ2hpbmVzZUNhbGVuZGFyIGV4dGVuZHMgQ2FsZW5kYXIgeworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBEZXZlbG9wZXIgTm90ZXMKKyAgICAvLyAKKyAgICAvLyBUaW1lIGlzIHJlcHJlc2VudGVkIGFzIGEgc2NhbGFyIGluIHR3byB3YXlzIGluIHRoaXMgY2xhc3MuICBPbmUgaXMKKyAgICAvLyB0aGUgdXN1YWwgVVRDIGVwb2NoIG1pbGxpcywgdGhhdCBpcywgbWlsbGlzZWNvbmRzIGFmdGVyIEphbnVhcnkgMSwKKyAgICAvLyAxOTcwIEdyZWdvcmlhbiwgMDowMDowMC4wMDAgVVRDLiAgVGhlIG90aGVyIGlzIGluIHRlcm1zIG9mICdsb2NhbAorICAgIC8vIGRheXMuJyAgVGhpcyBpcyB0aGUgbnVtYmVyIG9mIGRheXMgYWZ0ZXIgSmFudWFyeSAxLCAxOTcwIEdyZWdvcmlhbiwKKyAgICAvLyBsb2NhbCB0byBCZWlqaW5nLCBDaGluYSAoc2luY2UgYWxsIGNvbXB1dGF0aW9ucyBvZiB0aGUgQ2hpbmVzZQorICAgIC8vIGNhbGVuZGFyIGFyZSBkb25lIGluIEJlaWppbmcpLiAgVGhhdCBpcywgMCByZXByZXNlbnRzIEphbnVhcnkgMSwKKyAgICAvLyAxOTcwIDA6MDAgQXNpYS9TaGFuZ2hhaS4gIENvbnZlcnNpb24gb2YgbG9jYWwgZGF5cyB0byBhbmQgZnJvbQorICAgIC8vIHN0YW5kYXJkIGVwb2NoIG1pbGxpc2Vjb25kcyBpcyBhY2NvbXBsaXNoZWQgYnkgdGhlIGRheXNUb01pbGxpcygpCisgICAgLy8gYW5kIG1pbGxpc1RvRGF5cygpIG1ldGhvZHMuCisgICAgLy8gCisgICAgLy8gU2V2ZXJhbCBtZXRob2RzIHVzZSBjYWNoZXMgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS4gIENhY2hlcyBhcmUgYXQKKyAgICAvLyB0aGUgb2JqZWN0LCBub3QgY2xhc3MgbGV2ZWwsIHVuZGVyIHRoZSBhc3N1bXB0aW9uIHRoYXQgdHlwaWNhbAorICAgIC8vIHVzYWdlIHdpbGwgYmUgdG8gaGF2ZSBvbmUgaW5zdGFuY2Ugb2YgQ2hpbmVzZUNhbGVuZGFyIGF0IGEgdGltZS4KKyAKKyAgICAvKioKKyAgICAgKiBXZSBoYXZlIG9uZSBpbnN0YW5jZSBwZXIgb2JqZWN0LCBhbmQgd2UgZG9uJ3Qgc3luY2hyb25pemUgaXQgYmVjYXVzZQorICAgICAqIENhbGVuZGFyIGRvZXNuJ3Qgc3VwcG9ydCBtdWx0aXRocmVhZGVkIGV4ZWN1dGlvbiBpbiB0aGUgZmlyc3QgcGxhY2UuCisgICAgICovCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgQ2FsZW5kYXJBc3Ryb25vbWVyIGFzdHJvID0gbmV3IENhbGVuZGFyQXN0cm9ub21lcigpOworCisgICAgLyoqCisgICAgICogQ2FjaGUgdGhhdCBtYXBzIEdyZWdvcmlhbiB5ZWFyIHRvIGxvY2FsIGRheXMgb2Ygd2ludGVyIHNvbHN0aWNlLgorICAgICAqIEBzZWUgI3dpbnRlclNvbHN0aWNlCisgICAgICovCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgQ2FsZW5kYXJDYWNoZSB3aW50ZXJTb2xzdGljZUNhY2hlID0gbmV3IENhbGVuZGFyQ2FjaGUoKTsKKworICAgIC8qKgorICAgICAqIENhY2hlIHRoYXQgbWFwcyBHcmVnb3JpYW4geWVhciB0byBsb2NhbCBkYXlzIG9mIENoaW5lc2UgbmV3IHllYXIuCisgICAgICogQHNlZSAjbmV3WWVhcgorICAgICAqLworICAgIHByaXZhdGUgdHJhbnNpZW50IENhbGVuZGFyQ2FjaGUgbmV3WWVhckNhY2hlID0gbmV3IENhbGVuZGFyQ2FjaGUoKTsKKworICAgIC8qKgorICAgICAqIFRydWUgaWYgdGhlIGN1cnJlbnQgeWVhciBpcyBhIGxlYXAgeWVhci4gIFVwZGF0ZWQgd2l0aCBlYWNoIHRpbWUgdG8KKyAgICAgKiBmaWVsZHMgcmVzb2x1dGlvbi4KKyAgICAgKiBAc2VlICNjb21wdXRlQ2hpbmVzZUZpZWxkcworICAgICAqLworICAgIHByaXZhdGUgdHJhbnNpZW50IGJvb2xlYW4gaXNMZWFwWWVhcjsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQ29uc3RydWN0b3JzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIENoaW5lc2UgY2FsZW5kYXIgd2l0aCB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgYW5kIGxvY2FsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgQ2hpbmVzZUNhbGVuZGFyKCkgeworICAgICAgICBzdXBlcigpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIENoaW5lc2UgY2FsZW5kYXIgd2l0aCB0aGUgZ2l2ZW4gdGltZSB6b25lIGFuZCBsb2NhbGUuCisgICAgICogQHBhcmFtIHpvbmUgdGltZSB6b25lIGZvciB0aGlzIGNhbGVuZGFyCisgICAgICogQHBhcmFtIGxvY2FsZSBsb2NhbGUgZm9yIHRoaXMgY2FsZW5kYXIKKyAgICAgKi8KKyAgICBwdWJsaWMgQ2hpbmVzZUNhbGVuZGFyKFRpbWVab25lIHpvbmUsIExvY2FsZSBsb2NhbGUpIHsKKyAgICAgICAgc3VwZXIoem9uZSwgbG9jYWxlKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFB1YmxpYyBjb25zdGFudHMKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogRmllbGQgaW5kaWNhdGluZyB3aGV0aGVyIG9yIG5vdCB0aGUgY3VycmVudCBtb250aCBpcyBhIGxlYXAgbW9udGguCisgICAgICogU2hvdWxkIGhhdmUgYSB2YWx1ZSBvZiAwIGZvciBub24tbGVhcCBtb250aHMsIGFuZCAxIGZvciBsZWFwIG1vbnRocy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBJU19MRUFQX01PTlRIID0gQkFTRV9GSUVMRF9DT1VOVDsKKworICAgIC8qKgorICAgICAqIENvdW50IG9mIGZpZWxkcyBpbiB0aGlzIGNsYXNzLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBGSUVMRF9DT1VOVCA9IElTX0xFQVBfTU9OVEggKyAxOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBDYWxlbmRhciBmcmFtZXdvcmsKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgQ2FsZW5kYXIgdG8gYWxsb2NhdGUgb3VyIGFkZGl0aW9uYWwgZmllbGQuCisgICAgICovCisgICAgcHJvdGVjdGVkIGludFtdIGhhbmRsZUNyZWF0ZUZpZWxkcygpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBpbnRbRklFTERfQ09VTlRdOworICAgIH0KKworICAgIC8qKgorICAgICAqIEFycmF5IGRlZmluaW5nIHRoZSBsaW1pdHMgb2YgZmllbGQgdmFsdWVzIGZvciB0aGlzIGNsYXNzLiAgRmllbGQKKyAgICAgKiBsaW1pdHMgd2hpY2ggYXJlIGludmFyaWFudCB3aXRoIHJlc3BlY3QgdG8gY2FsZW5kYXIgc3lzdGVtIGFuZAorICAgICAqIGRlZmluZWQgYnkgQ2FsZW5kYXIgYXJlIGxlZnQgYmxhbmsuCisgICAgICoKKyAgICAgKiBOb3RlczoKKyAgICAgKgorICAgICAqIEVSQSA1MDAwMDAwIC8gNjAgPSA4MzMzMy4KKyAgICAgKgorICAgICAqIE1PTlRIIFRoZXJlIGFyZSAxMiBvciAxMyBsdW5hciBtb250aHMgaW4gYSB5ZWFyLiAgSG93ZXZlciwgd2UgYWx3YXlzCisgICAgICogbnVtYmVyIHRoZW0gMC4uMTEsIHdpdGggYW4gaW50ZXJjYWxhdGVkLCBpZGVudGljYWxseSBudW1iZXJlZCBsZWFwCisgICAgICogbW9udGgsIHdoZW4gbmVjZXNzYXJ5LgorICAgICAqCisgICAgICogREFZX09GX1lFQVIgSW4gYSBub24tbGVhcCB5ZWFyIHRoZXJlIGFyZSAzNTMsIDM1NCwgb3IgMzU1IGRheXMuICBJbgorICAgICAqIGEgbGVhcCB5ZWFyIHRoZXJlIGFyZSAzODMsIDM4NCwgb3IgMzg1IGRheXMuCisgICAgICoKKyAgICAgKiBXRUVLX09GX1lFQVIgVGhlIGxlYXN0IG1heGltdW0gb2NjdXJzIGlmIHRoZXJlIGFyZSAzNTMgZGF5cyBpbiB0aGUKKyAgICAgKiB5ZWFyLCBhbmQgdGhlIGZpcnN0IDYgYXJlIHRoZSBsYXN0IHdlZWsgb2YgdGhlIHByZXZpb3VzIHllYXIuICBUaGVuCisgICAgICogd2UgaGF2ZSA0OSBmdWxsIHdlZWtzIGFuZCA0IGRheXMgaW4gdGhlIGxhc3Qgd2VlazogNiArIDQ5KjcgKyA0ID0KKyAgICAgKiAzNTMuICBTbyB0aGUgbGVhc3QgbWF4aW11bSBpcyA1MC4gIFRoZSBtYXhpbXVtIG9jY3VycyBpZiB0aGVyZSBhcmUKKyAgICAgKiAzODUgZGF5cyBpbiB0aGUgeWVhciwgYW5kIFdPWSAxIGV4dGVuZHMgNiBkYXlzIGludG8gdGhlIHByaW9yIHllYXIuCisgICAgICogVGhlbiB0aGVyZSBhcmUgNTQgZnVsbCB3ZWVrcywgYW5kIDYgZGF5cyBpbiB0aGUgbGFzdCB3ZWVrOiAxICsgNTQqNworICAgICAqICsgNiA9IDM4NS4gIFRoZSA2IGRheXMgb2YgdGhlIGxhc3Qgd2VlayB3aWxsIGZhbGwgaW50byBXT1kgMSBvZiB0aGUKKyAgICAgKiBuZXh0IHllYXIuICBNYXhpbXVtIGlzIDU1LgorICAgICAqCisgICAgICogV0VFS19PRl9NT05USCBJbiBhIDI5IGRheSBtb250aCwgaWYgdGhlIGZpcnN0IDcgZGF5cyBtYWtlIHVwIHdlZWsgMQorICAgICAqIHRoYXQgbGVhdmVzIDMgZnVsbCB3ZWVrcyBhbmQgMSBkYXkgYXQgdGhlIGVuZC4gIFRoZSBsZWFzdCBtYXhpbXVtIGlzCisgICAgICogdGh1cyA1LiAgSW4gYSAzMCBkYXlzIG1vbnRoLCBpZiB0aGUgcHJldmlvdXMgNiBkYXlzIGJlbG9uZyBXT00gMSBvZgorICAgICAqIHRoaXMgbW9udGgsIHdlIGhhdmUgNCBmdWxsIHdlZWtzIGFuZCAxIGRheXMgYXQgdGhlIGVuZCAod2hpY2gKKyAgICAgKiB0ZWNobmljYWxseSB3aWxsIGJlIFdPTSAxIG9mIHRoZSBuZXh0IG1vbnRoLCBidXQgd2lsbCBiZSByZXBvcnRlZCBieQorICAgICAqIHRpbWUtPmZpZWxkcyBhbmQgaGVuY2UgYnkgZ2V0QWN0dWFsTWF4aW11bSBhcyBXT00gNiBvZiB0aGlzIG1vbnRoKS4KKyAgICAgKiBNYXhpbXVtIGlzIDYuCisgICAgICoKKyAgICAgKiBEQVlfT0ZfV0VFS19JTl9NT05USCBJbiBhIDI5IG9yIDMwIGRheSBtb250aCwgdGhlcmUgYXJlIDQgZnVsbCB3ZWVrcworICAgICAqIHBsdXMgMSBvciAyIGRheXMgYXQgdGhlIGVuZCwgc28gdGhlIG1heGltdW0gaXMgYWx3YXlzIDUuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExJTUlUU1tdW10gPSB7CisgICAgICAgIC8vIE1pbmltdW0gIEdyZWF0ZXN0ICAgIExlYXN0ICBNYXhpbXVtCisgICAgICAgIC8vICAgICAgICAgICBNaW5pbXVtICBNYXhpbXVtCisgICAgICAgIHsgICAgICAgIDEsICAgICAgICAxLCAgIDgzMzMzLCAgIDgzMzMzIH0sIC8vIEVSQQorICAgICAgICB7ICAgICAgICAxLCAgICAgICAgMSwgICAgICA3MCwgICAgICA3MCB9LCAvLyBZRUFSCisgICAgICAgIHsgICAgICAgIDAsICAgICAgICAwLCAgICAgIDExLCAgICAgIDExIH0sIC8vIE1PTlRICisgICAgICAgIHsgICAgICAgIDEsICAgICAgICAxLCAgICAgIDUwLCAgICAgIDU1IH0sIC8vIFdFRUtfT0ZfWUVBUgorICAgICAgICB7ICAgICAgICAxLCAgICAgICAgMSwgICAgICAgNSwgICAgICAgNiB9LCAvLyBXRUVLX09GX01PTlRICisgICAgICAgIHsgICAgICAgIDEsICAgICAgICAxLCAgICAgIDI5LCAgICAgIDMwIH0sIC8vIERBWV9PRl9NT05USAorICAgICAgICB7ICAgICAgICAxLCAgICAgICAgMSwgICAgIDM1MywgICAgIDM4NSB9LCAvLyBEQVlfT0ZfWUVBUgorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBEQVlfT0ZfV0VFSworICAgICAgICB7ICAgICAgIC0xLCAgICAgICAtMSwgICAgICAgNSwgICAgICAgNSB9LCAvLyBEQVlfT0ZfV0VFS19JTl9NT05USAorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBBTV9QTQorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBIT1VSCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIEhPVVJfT0ZfREFZCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIE1JTlVURQorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBTRUNPTkQKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gTUlMTElTRUNPTkQKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gWk9ORV9PRkZTRVQKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gRFNUX09GRlNFVAorICAgICAgICB7IC01MDAwMDAxLCAtNTAwMDAwMSwgNTAwMDAwMSwgNTAwMDAwMSB9LCAvLyBZRUFSX1dPWQorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBET1dfTE9DQUwKKyAgICAgICAgeyAtNTAwMDAwMCwgLTUwMDAwMDAsIDUwMDAwMDAsIDUwMDAwMDAgfSwgLy8gRVhURU5ERURfWUVBUgorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBKVUxJQU5fREFZCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIE1JTExJU0VDT05EU19JTl9EQVkKKyAgICAgICAgeyAgICAgICAgMCwgICAgICAgIDAsICAgICAgIDEsICAgICAgIDEgfSwgLy8gSVNfTEVBUF9NT05USAorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBDYWxlbmRhciB0byByZXR1cm4gdGhlIGxpbWl0IHZhbHVlIGZvciB0aGUgZ2l2ZW4gZmllbGQuCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVHZXRMaW1pdChpbnQgZmllbGQsIGludCBsaW1pdFR5cGUpIHsKKyAgICAgICAgcmV0dXJuIExJTUlUU1tmaWVsZF1bbGltaXRUeXBlXTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbXBsZW1lbnQgYWJzdHJhY3QgQ2FsZW5kYXIgbWV0aG9kIHRvIHJldHVybiB0aGUgZXh0ZW5kZWQgeWVhcgorICAgICAqIGRlZmluZWQgYnkgdGhlIGN1cnJlbnQgZmllbGRzLiAgVGhpcyB3aWxsIHVzZSBlaXRoZXIgdGhlIEVSQSBhbmQKKyAgICAgKiBZRUFSIGZpZWxkIGFzIHRoZSBjeWNsZSBhbmQgeWVhci1vZi1jeWNsZSwgb3IgdGhlIEVYVEVOREVEX1lFQVIKKyAgICAgKiBmaWVsZCBhcyB0aGUgY29udGludW91cyB5ZWFyIGNvdW50LCBkZXBlbmRpbmcgb24gd2hpY2ggaXMgbmV3ZXIuCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVHZXRFeHRlbmRlZFllYXIoKSB7CisgICAgICAgIGludCB5ZWFyOworICAgICAgICBpZiAobmV3ZXN0U3RhbXAoRVJBLCBZRUFSLCBVTlNFVCkgPD0gZ2V0U3RhbXAoRVhURU5ERURfWUVBUikpIHsKKyAgICAgICAgICAgIHllYXIgPSBpbnRlcm5hbEdldChFWFRFTkRFRF9ZRUFSLCAxKTsgLy8gRGVmYXVsdCB0byB5ZWFyIDEKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGludCBjeWNsZSA9IGludGVybmFsR2V0KEVSQSwgMSkgLSAxOyAvLyAwLWJhc2VkIGN5Y2xlCisgICAgICAgICAgICB5ZWFyID0gY3ljbGUgKiA2MCArIGludGVybmFsR2V0KFlFQVIsIDEpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB5ZWFyOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlIENhbGVuZGFyIG1ldGhvZCB0byByZXR1cm4gdGhlIG51bWJlciBvZiBkYXlzIGluIHRoZSBnaXZlbgorICAgICAqIGV4dGVuZGVkIHllYXIgYW5kIG1vbnRoLgorICAgICAqCisgICAgICogPHA+Tm90ZTogVGhpcyBtZXRob2QgYWxzbyByZWFkcyB0aGUgSVNfTEVBUF9NT05USCBmaWVsZCB0byBkZXRlcm1pbmUKKyAgICAgKiB3aGV0aGVyIG9yIG5vdCB0aGUgZ2l2ZW4gbW9udGggaXMgYSBsZWFwIG1vbnRoLgorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgaGFuZGxlR2V0TW9udGhMZW5ndGgoaW50IGV4dGVuZGVkWWVhciwgaW50IG1vbnRoKSB7CisgICAgICAgIGludCB0aGlzU3RhcnQgPSBoYW5kbGVDb21wdXRlTW9udGhTdGFydChleHRlbmRlZFllYXIsIG1vbnRoLCB0cnVlKSAtCisgICAgICAgICAgICBFUE9DSF9KVUxJQU5fREFZICsgMTsgLy8gSnVsaWFuIGRheSAtPiBsb2NhbCBkYXlzCisgICAgICAgIGludCBuZXh0U3RhcnQgPSBuZXdNb29uTmVhcih0aGlzU3RhcnQgKyBTWU5PRElDX0dBUCwgdHJ1ZSk7CisgICAgICAgIHJldHVybiBuZXh0U3RhcnQgLSB0aGlzU3RhcnQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogRnJhbWV3b3JrIG1ldGhvZCB0byBjcmVhdGUgYSBjYWxlbmRhci1zcGVjaWZpYyBEYXRlRm9ybWF0IG9iamVjdAorICAgICAqIHVzaW5nIHRoZSB0aGUgZ2l2ZW4gcGF0dGVybi4gIFRoaXMgbWV0aG9kIGlzIHJlc3BvbnNpYmxlIGZvcgorICAgICAqIGNyZWF0aW5nIHRoZSBjYWxlbmRhci0gc3BlY2lmaWMgRGF0ZUZvcm1hdCBhbmQgRGF0ZUZvcm1hdFN5bWJvbHMKKyAgICAgKiBvYmplY3RzIGFzIG5lZWRlZC4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgRGF0ZUZvcm1hdCBoYW5kbGVHZXREYXRlRm9ybWF0KFN0cmluZyBwYXR0ZXJuLCBMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIHJldHVybiBuZXcgQ2hpbmVzZURhdGVGb3JtYXQocGF0dGVybiwgbG9jYWxlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGaWVsZCByZXNvbHV0aW9uIHRhYmxlIHRoYXQgaW5jb3Jwb3JhdGVzIElTX0xFQVBfTU9OVEguCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGludFtdW11bXSBDSElORVNFX0RBVEVfUFJFQ0VERU5DRSA9IHsKKyAgICAgICAgeworICAgICAgICAgICAgeyBEQVlfT0ZfTU9OVEggfSwKKyAgICAgICAgICAgIHsgV0VFS19PRl9ZRUFSLCBEQVlfT0ZfV0VFSyB9LAorICAgICAgICAgICAgeyBXRUVLX09GX01PTlRILCBEQVlfT0ZfV0VFSyB9LAorICAgICAgICAgICAgeyBEQVlfT0ZfV0VFS19JTl9NT05USCwgREFZX09GX1dFRUsgfSwKKyAgICAgICAgICAgIHsgV0VFS19PRl9ZRUFSLCBET1dfTE9DQUwgfSwKKyAgICAgICAgICAgIHsgV0VFS19PRl9NT05USCwgRE9XX0xPQ0FMIH0sCisgICAgICAgICAgICB7IERBWV9PRl9XRUVLX0lOX01PTlRILCBET1dfTE9DQUwgfSwKKyAgICAgICAgICAgIHsgREFZX09GX1lFQVIgfSwKKyAgICAgICAgICAgIHsgUkVTT0xWRV9SRU1BUCB8IERBWV9PRl9NT05USCwgSVNfTEVBUF9NT05USCB9LAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAgICB7IFdFRUtfT0ZfWUVBUiB9LAorICAgICAgICAgICAgeyBXRUVLX09GX01PTlRIIH0sCisgICAgICAgICAgICB7IERBWV9PRl9XRUVLX0lOX01PTlRIIH0sCisgICAgICAgICAgICB7IFJFU09MVkVfUkVNQVAgfCBEQVlfT0ZfV0VFS19JTl9NT05USCwgREFZX09GX1dFRUsgfSwKKyAgICAgICAgICAgIHsgUkVTT0xWRV9SRU1BUCB8IERBWV9PRl9XRUVLX0lOX01PTlRILCBET1dfTE9DQUwgfSwKKyAgICAgICAgfSwKKyAgICB9OworCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgQ2FsZW5kYXIgdG8gYWRkIElTX0xFQVBfTU9OVEggdG8gdGhlIGZpZWxkIHJlc29sdXRpb24KKyAgICAgKiB0YWJsZS4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50W11bXVtdIGdldEZpZWxkUmVzb2x1dGlvblRhYmxlKCkgeworICAgICAgICByZXR1cm4gQ0hJTkVTRV9EQVRFX1BSRUNFREVOQ0U7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWRqdXN0IHRoaXMgY2FsZW5kYXIgdG8gYmUgZGVsdGEgbW9udGhzIGJlZm9yZSBvciBhZnRlciBhIGdpdmVuCisgICAgICogc3RhcnQgcG9zaXRpb24sIHBpbm5pbmcgdGhlIGRheSBvZiBtb250aCBpZiBuZWNlc3NhcnkuICBUaGUgc3RhcnQKKyAgICAgKiBwb3NpdGlvbiBpcyBnaXZlbiBhcyBhIGxvY2FsIGRheXMgbnVtYmVyIGZvciB0aGUgc3RhcnQgb2YgdGhlIG1vbnRoCisgICAgICogYW5kIGEgZGF5LW9mLW1vbnRoLiAgVXNlZCBieSBhZGQoKSBhbmQgcm9sbCgpLgorICAgICAqIEBwYXJhbSBuZXdNb29uIHRoZSBsb2NhbCBkYXlzIG9mIHRoZSBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoIG9mIHRoZQorICAgICAqIHN0YXJ0IHBvc2l0aW9uIChkYXlzIGFmdGVyIEphbnVhcnkgMSwgMTk3MCAwOjAwIEFzaWEvU2hhbmdoYWkpCisgICAgICogQHBhcmFtIGRvbSB0aGUgMS1iYXNlZCBkYXktb2YtbW9udGggb2YgdGhlIHN0YXJ0IHBvc2l0aW9uCisgICAgICogQHBhcmFtIGRlbHRhIHRoZSBudW1iZXIgb2YgbW9udGhzIHRvIG1vdmUgZm9yd2FyZCBvciBiYWNrd2FyZCBmcm9tCisgICAgICogdGhlIHN0YXJ0IHBvc2l0aW9uCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIG9mZnNldE1vbnRoKGludCBuZXdNb29uLCBpbnQgZG9tLCBpbnQgZGVsdGEpIHsKKyAgICAgICAgLy8gTW92ZSB0byB0aGUgbWlkZGxlIG9mIHRoZSBtb250aCBiZWZvcmUgb3VyIHRhcmdldCBtb250aC4KKyAgICAgICAgbmV3TW9vbiArPSAoaW50KSAoQ2FsZW5kYXJBc3Ryb25vbWVyLlNZTk9ESUNfTU9OVEggKiAoZGVsdGEgLSAwLjUpKTsKKworICAgICAgICAvLyBTZWFyY2ggZm9yd2FyZCB0byB0aGUgdGFyZ2V0IG1vbnRoJ3MgbmV3IG1vb24KKyAgICAgICAgbmV3TW9vbiA9IG5ld01vb25OZWFyKG5ld01vb24sIHRydWUpOworCisgICAgICAgIC8vIEZpbmQgdGhlIHRhcmdldCBkb20KKyAgICAgICAgaW50IGpkID0gbmV3TW9vbiArIEVQT0NIX0pVTElBTl9EQVkgLSAxICsgZG9tOworCisgICAgICAgIC8vIFBpbiB0aGUgZG9tLiAgSW4gdGhpcyBjYWxlbmRhciBhbGwgbW9udGhzIGFyZSAyOSBvciAzMCBkYXlzCisgICAgICAgIC8vIHNvIHBpbm5pbmcganVzdCBtZWFucyBoYW5kbGluZyBkb20gMzAuCisgICAgICAgIGlmIChkb20gPiAyOSkgeworICAgICAgICAgICAgc2V0KEpVTElBTl9EQVksIGpkLTEpOworICAgICAgICAgICAgLy8gVE9ETyBGaXggdGhpcy4gIFdlIHJlYWxseSBzaG91bGRuJ3QgZXZlciBoYXZlIHRvCisgICAgICAgICAgICAvLyBleHBsaWNpdGx5IGNhbGwgY29tcGxldGUoKS4gIFRoaXMgaXMgZWl0aGVyIGEgYnVnIGluCisgICAgICAgICAgICAvLyB0aGlzIG1ldGhvZCwgaW4gQ2hpbmVzZUNhbGVuZGFyLCBvciBpbgorICAgICAgICAgICAgLy8gQ2FsZW5kYXIuZ2V0QWN0dWFsTWF4aW11bSgpLiAgSSBzdXNwZWN0IHRoZSBsYXN0LgorICAgICAgICAgICAgY29tcGxldGUoKTsKKyAgICAgICAgICAgIGlmIChnZXRBY3R1YWxNYXhpbXVtKERBWV9PRl9NT05USCkgPj0gZG9tKSB7CisgICAgICAgICAgICAgICAgc2V0KEpVTElBTl9EQVksIGpkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNldChKVUxJQU5fREFZLCBqZCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBDYWxlbmRhciB0byBoYW5kbGUgbGVhcCBtb250aHMgcHJvcGVybHkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgYWRkKGludCBmaWVsZCwgaW50IGFtb3VudCkgeworICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7CisgICAgICAgIGNhc2UgTU9OVEg6CisgICAgICAgICAgICBpZiAoYW1vdW50ICE9IDApIHsKKyAgICAgICAgICAgICAgICBpbnQgZG9tID0gZ2V0KERBWV9PRl9NT05USCk7CisgICAgICAgICAgICAgICAgaW50IGRheSA9IGdldChKVUxJQU5fREFZKSAtIEVQT0NIX0pVTElBTl9EQVk7IC8vIEdldCBsb2NhbCBkYXkKKyAgICAgICAgICAgICAgICBpbnQgbW9vbiA9IGRheSAtIGRvbSArIDE7IC8vIE5ldyBtb29uIAorICAgICAgICAgICAgICAgIG9mZnNldE1vbnRoKG1vb24sIGRvbSwgYW1vdW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgc3VwZXIuYWRkKGZpZWxkLCBhbW91bnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBDYWxlbmRhciB0byBoYW5kbGUgbGVhcCBtb250aHMgcHJvcGVybHkuCisgICAgICovCisgICAgcHVibGljIHZvaWQgcm9sbChpbnQgZmllbGQsIGludCBhbW91bnQpIHsKKyAgICAgICAgc3dpdGNoIChmaWVsZCkgeworICAgICAgICBjYXNlIE1PTlRIOgorICAgICAgICAgICAgaWYgKGFtb3VudCAhPSAwKSB7CisgICAgICAgICAgICAgICAgaW50IGRvbSA9IGdldChEQVlfT0ZfTU9OVEgpOworICAgICAgICAgICAgICAgIGludCBkYXkgPSBnZXQoSlVMSUFOX0RBWSkgLSBFUE9DSF9KVUxJQU5fREFZOyAvLyBHZXQgbG9jYWwgZGF5CisgICAgICAgICAgICAgICAgaW50IG1vb24gPSBkYXkgLSBkb20gKyAxOyAvLyBOZXcgbW9vbiAoc3RhcnQgb2YgdGhpcyBtb250aCkKKworICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhyb3VnaG91dCB0aGUgZm9sbG93aW5nOiAgTW9udGhzIDEyIGFuZCAxIGFyZSBuZXZlcgorICAgICAgICAgICAgICAgIC8vIGZvbGxvd2VkIGJ5IGEgbGVhcCBtb250aCAoRCZSIHAuIDE4NSkuCisKKyAgICAgICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBhZGp1c3RlZCBtb250aCBudW1iZXIgbS4gIFRoaXMgaXMgemVyby1iYXNlZAorICAgICAgICAgICAgICAgIC8vIHZhbHVlIGZyb20gMC4uMTEgaW4gYSBub24tbGVhcCB5ZWFyLCBhbmQgZnJvbSAwLi4xMiBpbiBhCisgICAgICAgICAgICAgICAgLy8gbGVhcCB5ZWFyLgorICAgICAgICAgICAgICAgIGludCBtID0gZ2V0KE1PTlRIKTsgLy8gMC1iYXNlZCBtb250aAorICAgICAgICAgICAgICAgIGlmIChpc0xlYXBZZWFyKSB7IC8vIChtZW1iZXIgdmFyaWFibGUpCisgICAgICAgICAgICAgICAgICAgIGlmIChnZXQoSVNfTEVBUF9NT05USCkgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgKyttOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgZm9yIGEgcHJpb3IgbGVhcCBtb250aC4gIChJbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvbGxvd2luZywgbW9udGggMCBpcyB0aGUgZmlyc3QgbW9udGggb2YgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB5ZWFyLikgIE1vbnRoIDAgaXMgbmV2ZXIgZm9sbG93ZWQgYnkgYSBsZWFwCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBtb250aCwgYW5kIHdlIGtub3cgbW9udGggbSBpcyBub3QgYSBsZWFwIG1vbnRoLgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW9vbjEgd2lsbCBiZSB0aGUgc3RhcnQgb2YgbW9udGggMCBpZiB0aGVyZSBpcworICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm8gbGVhcCBtb250aCBiZXR3ZWVuIG1vbnRoIDAgYW5kIG1vbnRoIG07CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UgaXQgd2lsbCBiZSB0aGUgc3RhcnQgb2YgbW9udGggMS4KKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb29uMSA9IG1vb24gLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpIChDYWxlbmRhckFzdHJvbm9tZXIuU1lOT0RJQ19NT05USCAqIChtIC0gMC41KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtb29uMSA9IG5ld01vb25OZWFyKG1vb24xLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0xlYXBNb250aEJldHdlZW4obW9vbjEsIG1vb24pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyttOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gTm93IGRvIHRoZSBzdGFuZGFyZCByb2xsIGNvbXB1dGF0aW9uIG9uIG0sIHdpdGggdGhlCisgICAgICAgICAgICAgICAgLy8gYWxsb3dlZCByYW5nZSBvZiAwLi5uLTEsIHdoZXJlIG4gaXMgMTIgb3IgMTMuCisgICAgICAgICAgICAgICAgaW50IG4gPSBpc0xlYXBZZWFyID8gMTMgOiAxMjsgLy8gTW9udGhzIGluIHRoaXMgeWVhcgorICAgICAgICAgICAgICAgIGludCBuZXdNID0gKG0gKyBhbW91bnQpICUgbjsKKyAgICAgICAgICAgICAgICBpZiAobmV3TSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3TSArPSBuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChuZXdNICE9IG0pIHsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0TW9udGgobW9vbiwgZG9tLCBuZXdNIC0gbSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBzdXBlci5yb2xsKGZpZWxkLCBhbW91bnQpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFN1cHBvcnQgbWV0aG9kcyBhbmQgY29uc3RhbnRzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIAorICAgIC8qKgorICAgICAqIFRoZSBzdGFydCB5ZWFyIG9mIHRoZSBDaGluZXNlIGNhbGVuZGFyLCB0aGUgNjFzdCB5ZWFyIG9mIHRoZSByZWlnbgorICAgICAqIG9mIEh1YW5nIERpLiAgU29tZSBzb3VyY2VzIHVzZSB0aGUgZmlyc3QgeWVhciBvZiBoaXMgcmVpZ24sCisgICAgICogcmVzdWx0aW5nIGluIEVYVEVOREVEX1lFQVIgdmFsdWVzIDYwIHllYXJzIGdyZWF0ZXIgYW5kIEVSQSAoY3ljbGUpCisgICAgICogdmFsdWVzIG9uZSBncmVhdGVyLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDSElORVNFX0VQT0NIX1lFQVIgPSAtMjYzNjsgLy8gR3JlZ29yaWFuIHllYXIKKworICAgIC8qKgorICAgICAqIFRoZSBvZmZzZXQgZnJvbSBHTVQgaW4gbWlsbGlzZWNvbmRzIGF0IHdoaWNoIHdlIHBlcmZvcm0gYXN0cm9ub21pY2FsCisgICAgICogY29tcHV0YXRpb25zLiAgU29tZSBzb3VyY2VzIHVzZSBhIGRpZmZlcmVudCBoaXN0b3JpY2FsbHkgYWNjdXJhdGUKKyAgICAgKiBvZmZzZXQgb2YgR01UKzc6NDU6NDAgZm9yIHllYXJzIGJlZm9yZSAxOTI5OyB3ZSBkbyBub3QgZG8gdGhpcy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIENISU5BX09GRlNFVCA9IDgqT05FX0hPVVI7CisKKyAgICAvKioKKyAgICAgKiBWYWx1ZSB0byBiZSBhZGRlZCBvciBzdWJ0cmFjdGVkIGZyb20gdGhlIGxvY2FsIGRheXMgb2YgYSBuZXcgbW9vbiB0bworICAgICAqIGdldCBjbG9zZSB0byB0aGUgbmV4dCBvciBwcmlvciBuZXcgbW9vbiwgYnV0IG5vdCBjcm9zcyBpdC4gIE11c3QgYmUKKyAgICAgKiA+PSAxIGFuZCA8IENhbGVuZGFyQXN0cm9ub21lci5TWU5PRElDX01PTlRILgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTWU5PRElDX0dBUCA9IDI1OworCisgICAgLyoqCisgICAgICogQ29udmVydCBsb2NhbCBkYXlzIHRvIFVUQyBlcG9jaCBtaWxsaXNlY29uZHMuCisgICAgICogQHBhcmFtIGRheXMgZGF5cyBhZnRlciBKYW51YXJ5IDEsIDE5NzAgMDowMCBBc2lhL1NoYW5naGFpCisgICAgICogQHJldHVybiBtaWxsaXNlY29uZHMgYWZ0ZXIgSmFudWFyeSAxLCAxOTcwIDA6MDAgR01UCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBkYXlzVG9NaWxsaXMoaW50IGRheXMpIHsKKyAgICAgICAgcmV0dXJuIChkYXlzICogT05FX0RBWSkgLSBDSElOQV9PRkZTRVQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydCBVVEMgZXBvY2ggbWlsbGlzZWNvbmRzIHRvIGxvY2FsIGRheXMuCisgICAgICogQHBhcmFtIG1pbGxpcyBtaWxsaXNlY29uZHMgYWZ0ZXIgSmFudWFyeSAxLCAxOTcwIDA6MDAgR01UCisgICAgICogQHJldHVybiBkYXlzIGFmdGVyIEphbnVhcnkgMSwgMTk3MCAwOjAwIEFzaWEvU2hhbmdoYWkKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgbWlsbGlzVG9EYXlzKGxvbmcgbWlsbGlzKSB7CisgICAgICAgIHJldHVybiAoaW50KSBmbG9vckRpdmlkZShtaWxsaXMgKyBDSElOQV9PRkZTRVQsIE9ORV9EQVkpOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQXN0cm9ub21pY2FsIGNvbXB1dGF0aW9ucworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBtYWpvciBzb2xhciB0ZXJtIG9uIG9yIGFmdGVyIERlY2VtYmVyIDE1IG9mIHRoZSBnaXZlbgorICAgICAqIEdyZWdvcmlhbiB5ZWFyLCB0aGF0IGlzLCB0aGUgd2ludGVyIHNvbHN0aWNlIG9mIHRoZSBnaXZlbiB5ZWFyLgorICAgICAqIENvbXB1dGF0aW9ucyBhcmUgcmVsYXRpdmUgdG8gQXNpYS9TaGFuZ2hhaSB0aW1lIHpvbmUuCisgICAgICogQHBhcmFtIGd5ZWFyIGEgR3JlZ29yaWFuIHllYXIKKyAgICAgKiBAcmV0dXJuIGRheXMgYWZ0ZXIgSmFudWFyeSAxLCAxOTcwIDA6MDAgQXNpYS9TaGFuZ2hhaSBvZiB0aGUKKyAgICAgKiB3aW50ZXIgc29sc3RpY2Ugb2YgdGhlIGdpdmVuIHllYXIKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCB3aW50ZXJTb2xzdGljZShpbnQgZ3llYXIpIHsKKworICAgICAgICBsb25nIGNhY2hlVmFsdWUgPSB3aW50ZXJTb2xzdGljZUNhY2hlLmdldChneWVhcik7CisKKyAgICAgICAgaWYgKGNhY2hlVmFsdWUgPT0gQ2FsZW5kYXJDYWNoZS5FTVBUWSkgeworICAgICAgICAgICAgLy8gSW4gYm9va3MgRGVjZW1iZXIgMTUgaXMgdXNlZCwgYnV0IGl0IGZhaWxzIGZvciBzb21lIHllYXJzCisgICAgICAgICAgICAvLyB1c2luZyBvdXIgYWxnb3JpdGhtcywgZS5nLjogMTI5OCAxMzkxIDE0OTIgMTU1MyAxNTYwLiAgVGhhdAorICAgICAgICAgICAgLy8gaXMsIHdpbnRlclNvbHN0aWNlKDEyOTgpIHN0YXJ0cyBzZWFyY2ggYXQgRGVjIDE0IDA4OjAwOjAwCisgICAgICAgICAgICAvLyBQU1QgMTI5OCB3aXRoIGEgZmluYWwgcmVzdWx0IG9mIERlYyAxNCAxMDozMTo1OSBQU1QgMTI5OS4KKyAgICAgICAgICAgIGxvbmcgbXMgPSBkYXlzVG9NaWxsaXMoY29tcHV0ZUdyZWdvcmlhbk1vbnRoU3RhcnQoZ3llYXIsIERFQ0VNQkVSKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgLSBFUE9DSF9KVUxJQU5fREFZKTsKKyAgICAgICAgICAgIGFzdHJvLnNldFRpbWUobXMpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBXaW50ZXIgc29sc3RpY2UgaXMgMjcwIGRlZ3JlZXMgc29sYXIgbG9uZ2l0dWRlIGFrYSBEb25nemhpCisgICAgICAgICAgICBsb25nIHNvbGFyTG9uZyA9IGFzdHJvLmdldFN1blRpbWUoQ2FsZW5kYXJBc3Ryb25vbWVyLldJTlRFUl9TT0xTVElDRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnVlKTsKKyAgICAgICAgICAgIGNhY2hlVmFsdWUgPSBtaWxsaXNUb0RheXMoc29sYXJMb25nKTsKKyAgICAgICAgICAgIHdpbnRlclNvbHN0aWNlQ2FjaGUucHV0KGd5ZWFyLCBjYWNoZVZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKGludCkgY2FjaGVWYWx1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGNsb3Nlc3QgbmV3IG1vb24gdG8gdGhlIGdpdmVuIGRhdGUsIHNlYXJjaGluZyBlaXRoZXIKKyAgICAgKiBmb3J3YXJkIG9yIGJhY2t3YXJkIGluIHRpbWUuCisgICAgICogQHBhcmFtIGRheXMgZGF5cyBhZnRlciBKYW51YXJ5IDEsIDE5NzAgMDowMCBBc2lhL1NoYW5naGFpCisgICAgICogQHBhcmFtIGFmdGVyIGlmIHRydWUsIHNlYXJjaCBmb3IgYSBuZXcgbW9vbiBvbiBvciBhZnRlciB0aGUgZ2l2ZW4KKyAgICAgKiBkYXRlOyBvdGhlcndpc2UsIHNlYXJjaCBmb3IgYSBuZXcgbW9vbiBiZWZvcmUgaXQKKyAgICAgKiBAcmV0dXJuIGRheXMgYWZ0ZXIgSmFudWFyeSAxLCAxOTcwIDA6MDAgQXNpYS9TaGFuZ2hhaSBvZiB0aGUgbmVhcmVzdAorICAgICAqIG5ldyBtb29uIGFmdGVyIG9yIGJlZm9yZSA8Y29kZT5kYXlzPC9jb2RlPgorICAgICAqLworICAgIHByaXZhdGUgaW50IG5ld01vb25OZWFyKGludCBkYXlzLCBib29sZWFuIGFmdGVyKSB7CisgICAgICAgIAorICAgICAgICBhc3Ryby5zZXRUaW1lKGRheXNUb01pbGxpcyhkYXlzKSk7CisgICAgICAgIGxvbmcgbmV3TW9vbiA9IGFzdHJvLmdldE1vb25UaW1lKENhbGVuZGFyQXN0cm9ub21lci5ORVdfTU9PTiwgYWZ0ZXIpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIG1pbGxpc1RvRGF5cyhuZXdNb29uKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG5lYXJlc3QgaW50ZWdlciBudW1iZXIgb2Ygc3lub2RpYyBtb250aHMgYmV0d2VlbgorICAgICAqIHR3byBkYXRlcy4KKyAgICAgKiBAcGFyYW0gZGF5MSBkYXlzIGFmdGVyIEphbnVhcnkgMSwgMTk3MCAwOjAwIEFzaWEvU2hhbmdoYWkKKyAgICAgKiBAcGFyYW0gZGF5MiBkYXlzIGFmdGVyIEphbnVhcnkgMSwgMTk3MCAwOjAwIEFzaWEvU2hhbmdoYWkKKyAgICAgKiBAcmV0dXJuIHRoZSBuZWFyZXN0IGludGVnZXIgbnVtYmVyIG9mIG1vbnRocyBiZXR3ZWVuIGRheTEgYW5kIGRheTIKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBzeW5vZGljTW9udGhzQmV0d2VlbihpbnQgZGF5MSwgaW50IGRheTIpIHsKKyAgICAgICAgcmV0dXJuIChpbnQpIE1hdGgucm91bmQoKGRheTIgLSBkYXkxKSAvIENhbGVuZGFyQXN0cm9ub21lci5TWU5PRElDX01PTlRIKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG1ham9yIHNvbGFyIHRlcm0gb24gb3IgYmVmb3JlIGEgZ2l2ZW4gZGF0ZS4gIFRoaXMKKyAgICAgKiB3aWxsIGJlIGFuIGludGVnZXIgZnJvbSAxLi4xMiwgd2l0aCAxIGNvcnJlc3BvbmRpbmcgdG8gMzMwIGRlZ3JlZXMsCisgICAgICogMiB0byAwIGRlZ3JlZXMsIDMgdG8gMzAgZGVncmVlcywuLi4sIGFuZCAxMiB0byAzMDAgZGVncmVlcy4KKyAgICAgKiBAcGFyYW0gZGF5cyBkYXlzIGFmdGVyIEphbnVhcnkgMSwgMTk3MCAwOjAwIEFzaWEvU2hhbmdoYWkKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBtYWpvclNvbGFyVGVybShpbnQgZGF5cykgeworICAgICAgICAKKyAgICAgICAgYXN0cm8uc2V0VGltZShkYXlzVG9NaWxsaXMoZGF5cykpOworCisgICAgICAgIC8vIENvbXB1dGUgKGZsb29yKHNvbGFyTG9uZ2l0dWRlIC8gKHBpLzYpKSArIDIpICUgMTIKKyAgICAgICAgaW50IHRlcm0gPSAoKGludCkgTWF0aC5mbG9vcig2ICogYXN0cm8uZ2V0U3VuTG9uZ2l0dWRlKCkgLyBNYXRoLlBJKSArIDIpICUgMTI7CisgICAgICAgIGlmICh0ZXJtIDwgMSkgeworICAgICAgICAgICAgdGVybSArPSAxMjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGVybTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gbW9udGggbGFja3MgYSBtYWpvciBzb2xhciB0ZXJtLgorICAgICAqIEBwYXJhbSBuZXdNb29uIGRheXMgYWZ0ZXIgSmFudWFyeSAxLCAxOTcwIDA6MDAgQXNpYS9TaGFuZ2hhaSBvZiBhIG5ldworICAgICAqIG1vb24KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gaGFzTm9NYWpvclNvbGFyVGVybShpbnQgbmV3TW9vbikgeworICAgICAgICAKKyAgICAgICAgcmV0dXJuIG1ham9yU29sYXJUZXJtKG5ld01vb24pID09CisgICAgICAgICAgICBtYWpvclNvbGFyVGVybShuZXdNb29uTmVhcihuZXdNb29uICsgU1lOT0RJQ19HQVAsIHRydWUpKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFRpbWUgdG8gZmllbGRzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSBpcyBhIGxlYXAgbW9udGggb24gb3IgYWZ0ZXIgbW9udGggbmV3TW9vbjEgYW5kCisgICAgICogYXQgb3IgYmVmb3JlIG1vbnRoIG5ld01vb24yLgorICAgICAqIEBwYXJhbSBuZXdNb29uMSBkYXlzIGFmdGVyIEphbnVhcnkgMSwgMTk3MCAwOjAwIEFzaWEvU2hhbmdoYWkgb2YgYQorICAgICAqIG5ldyBtb29uCisgICAgICogQHBhcmFtIG5ld01vb24yIGRheXMgYWZ0ZXIgSmFudWFyeSAxLCAxOTcwIDA6MDAgQXNpYS9TaGFuZ2hhaSBvZiBhCisgICAgICogbmV3IG1vb24KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gaXNMZWFwTW9udGhCZXR3ZWVuKGludCBuZXdNb29uMSwgaW50IG5ld01vb24yKSB7CisKKyAgICAgICAgLy8gVGhpcyBpcyBvbmx5IG5lZWRlZCB0byBkZWJ1ZyB0aGUgdGltZU9mQW5nbGUgZGl2ZXJnZW5jZSBidWcuCisgICAgICAgIC8vIFJlbW92ZSB0aGlzIGxhdGVyLiBMaXUgMTEvOS8wMAorICAgICAgICAvLyBERUJVRworICAgICAgICBpZiAoc3lub2RpY01vbnRoc0JldHdlZW4obmV3TW9vbjEsIG5ld01vb24yKSA+PSA1MCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiaXNMZWFwTW9udGhCZXR3ZWVuKCIgKyBuZXdNb29uMSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsICIgKyBuZXdNb29uMiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpOiBJbnZhbGlkIHBhcmFtZXRlcnMiKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAobmV3TW9vbjIgPj0gbmV3TW9vbjEpICYmCisgICAgICAgICAgICAoaXNMZWFwTW9udGhCZXR3ZWVuKG5ld01vb24xLCBuZXdNb29uTmVhcihuZXdNb29uMiAtIFNZTk9ESUNfR0FQLCBmYWxzZSkpIHx8CisgICAgICAgICAgICAgaGFzTm9NYWpvclNvbGFyVGVybShuZXdNb29uMikpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlIENhbGVuZGFyIHRvIGNvbXB1dGUgc2V2ZXJhbCBmaWVsZHMgc3BlY2lmaWMgdG8gdGhlIENoaW5lc2UKKyAgICAgKiBjYWxlbmRhciBzeXN0ZW0uICBUaGVzZSBhcmU6CisgICAgICoKKyAgICAgKiA8dWw+PGxpPkVSQQorICAgICAqIDxsaT5ZRUFSCisgICAgICogPGxpPk1PTlRICisgICAgICogPGxpPkRBWV9PRl9NT05USAorICAgICAqIDxsaT5EQVlfT0ZfWUVBUgorICAgICAqIDxsaT5FWFRFTkRFRF9ZRUFSPC91bD4KKyAgICAgKiAKKyAgICAgKiBUaGUgREFZX09GX1dFRUsgYW5kIERPV19MT0NBTCBmaWVsZHMgYXJlIGFscmVhZHkgc2V0IHdoZW4gdGhpcworICAgICAqIG1ldGhvZCBpcyBjYWxsZWQuICBUaGUgZ2V0R3JlZ29yaWFuWHh4KCkgbWV0aG9kcyByZXR1cm4gR3JlZ29yaWFuCisgICAgICogY2FsZW5kYXIgZXF1aXZhbGVudHMgZm9yIHRoZSBnaXZlbiBKdWxpYW4gZGF5LgorICAgICAqCisgICAgICogPHA+Q29tcHV0ZSB0aGUgQ2hpbmVzZUNhbGVuZGFyLXNwZWNpZmljIGZpZWxkIElTX0xFQVBfTU9OVEguCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgaGFuZGxlQ29tcHV0ZUZpZWxkcyhpbnQganVsaWFuRGF5KSB7CisKKyAgICAgICAgY29tcHV0ZUNoaW5lc2VGaWVsZHMoanVsaWFuRGF5IC0gRVBPQ0hfSlVMSUFOX0RBWSwgLy8gbG9jYWwgZGF5cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRHcmVnb3JpYW5ZZWFyKCksIGdldEdyZWdvcmlhbk1vbnRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUpOyAvLyBzZXQgYWxsIGZpZWxkcworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXB1dGUgZmllbGRzIGZvciB0aGUgQ2hpbmVzZSBjYWxlbmRhciBzeXN0ZW0uICBUaGlzIG1ldGhvZCBjYW4KKyAgICAgKiBlaXRoZXIgc2V0IGFsbCByZWxldmFudCBmaWVsZHMsIGFzIHJlcXVpcmVkIGJ5CisgICAgICogPGNvZGU+aGFuZGxlQ29tcHV0ZUZpZWxkcygpPC9jb2RlPiwgb3IgaXQgY2FuIGp1c3Qgc2V0IHRoZSBNT05USCBhbmQKKyAgICAgKiBJU19MRUFQX01PTlRIIGZpZWxkcywgYXMgcmVxdWlyZWQgYnkKKyAgICAgKiA8Y29kZT5oYW5kbGVDb21wdXRlTW9udGhTdGFydCgpPC9jb2RlPi4KKyAgICAgKgorICAgICAqIDxwPkFzIGEgc2lkZSBlZmZlY3QsIHRoaXMgbWV0aG9kIHNldHMge0BsaW5rICNpc0xlYXBZZWFyfS4KKyAgICAgKiBAcGFyYW0gZGF5cyBkYXlzIGFmdGVyIEphbnVhcnkgMSwgMTk3MCAwOjAwIEFzaWEvU2hhbmdoYWkgb2YgdGhlCisgICAgICogZGF0ZSB0byBjb21wdXRlIGZpZWxkcyBmb3IKKyAgICAgKiBAcGFyYW0gZ3llYXIgdGhlIEdyZWdvcmlhbiB5ZWFyIG9mIHRoZSBnaXZlbiBkYXRlCisgICAgICogQHBhcmFtIGdtb250aCB0aGUgR3JlZ29yaWFuIG1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlCisgICAgICogQHBhcmFtIHNldEFsbEZpZWxkcyBpZiB0cnVlLCBzZXQgdGhlIEVYVEVOREVEX1lFQVIsIEVSQSwgWUVBUiwKKyAgICAgKiBEQVlfT0ZfTU9OVEgsIGFuZCBEQVlfT0ZfWUVBUiBmaWVsZHMuICBJbiBlaXRoZXIgY2FzZSBzZXQgdGhlIE1PTlRICisgICAgICogYW5kIElTX0xFQVBfTU9OVEggZmllbGRzLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBjb21wdXRlQ2hpbmVzZUZpZWxkcyhpbnQgZGF5cywgaW50IGd5ZWFyLCBpbnQgZ21vbnRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIHNldEFsbEZpZWxkcykgeworCisgICAgICAgIC8vIEZpbmQgdGhlIHdpbnRlciBzb2xzdGljZXMgYmVmb3JlIGFuZCBhZnRlciB0aGUgdGFyZ2V0IGRhdGUuCisgICAgICAgIC8vIFRoZXNlIGRlZmluZSB0aGUgYm91bmRhcmllcyBvZiB0aGlzIENoaW5lc2UgeWVhciwgc3BlY2lmaWNhbGx5LAorICAgICAgICAvLyB0aGUgcG9zaXRpb24gb2YgbW9udGggMTEsIHdoaWNoIGFsd2F5cyBjb250YWlucyB0aGUgc29sc3RpY2UuCisgICAgICAgIC8vIFdlIHdhbnQgc29sc3RpY2VCZWZvcmUgPD0gZGF0ZSA8IHNvbHN0aWNlQWZ0ZXIuCisgICAgICAgIGludCBzb2xzdGljZUJlZm9yZTsKKyAgICAgICAgaW50IHNvbHN0aWNlQWZ0ZXIgPSB3aW50ZXJTb2xzdGljZShneWVhcik7CisgICAgICAgIGlmIChkYXlzIDwgc29sc3RpY2VBZnRlcikgeworICAgICAgICAgICAgc29sc3RpY2VCZWZvcmUgPSB3aW50ZXJTb2xzdGljZShneWVhciAtIDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc29sc3RpY2VCZWZvcmUgPSBzb2xzdGljZUFmdGVyOworICAgICAgICAgICAgc29sc3RpY2VBZnRlciA9IHdpbnRlclNvbHN0aWNlKGd5ZWFyICsgMSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBGaW5kIHRoZSBzdGFydCBvZiB0aGUgbW9udGggYWZ0ZXIgbW9udGggMTEuICBUaGlzIHdpbGwgYmUgZWl0aGVyCisgICAgICAgIC8vIHRoZSBwcmlvciBtb250aCAxMiBvciBsZWFwIG1vbnRoIDExICh2ZXJ5IHJhcmUpLiAgQWxzbyBmaW5kIHRoZQorICAgICAgICAvLyBzdGFydCBvZiB0aGUgZm9sbG93aW5nIG1vbnRoIDExLgorICAgICAgICBpbnQgZmlyc3RNb29uID0gbmV3TW9vbk5lYXIoc29sc3RpY2VCZWZvcmUgKyAxLCB0cnVlKTsKKyAgICAgICAgaW50IGxhc3RNb29uID0gbmV3TW9vbk5lYXIoc29sc3RpY2VBZnRlciArIDEsIGZhbHNlKTsKKyAgICAgICAgaW50IHRoaXNNb29uID0gbmV3TW9vbk5lYXIoZGF5cyArIDEsIGZhbHNlKTsgLy8gU3RhcnQgb2YgdGhpcyBtb250aAorICAgICAgICAvLyBOb3RlOiBpc0xlYXBZZWFyIGlzIGEgbWVtYmVyIHZhcmlhYmxlCisgICAgICAgIGlzTGVhcFllYXIgPSBzeW5vZGljTW9udGhzQmV0d2VlbihmaXJzdE1vb24sIGxhc3RNb29uKSA9PSAxMjsKKworICAgICAgICBpbnQgbW9udGggPSBzeW5vZGljTW9udGhzQmV0d2VlbihmaXJzdE1vb24sIHRoaXNNb29uKTsKKyAgICAgICAgaWYgKGlzTGVhcFllYXIgJiYgaXNMZWFwTW9udGhCZXR3ZWVuKGZpcnN0TW9vbiwgdGhpc01vb24pKSB7CisgICAgICAgICAgICBtb250aC0tOworICAgICAgICB9CisgICAgICAgIGlmIChtb250aCA8IDEpIHsKKyAgICAgICAgICAgIG1vbnRoICs9IDEyOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbiBpc0xlYXBNb250aCA9IGlzTGVhcFllYXIgJiYKKyAgICAgICAgICAgIGhhc05vTWFqb3JTb2xhclRlcm0odGhpc01vb24pICYmCisgICAgICAgICAgICAhaXNMZWFwTW9udGhCZXR3ZWVuKGZpcnN0TW9vbiwgbmV3TW9vbk5lYXIodGhpc01vb24gLSBTWU5PRElDX0dBUCwgZmFsc2UpKTsKKworICAgICAgICBpbnRlcm5hbFNldChNT05USCwgbW9udGgtMSk7IC8vIENvbnZlcnQgZnJvbSAxLWJhc2VkIHRvIDAtYmFzZWQKKyAgICAgICAgaW50ZXJuYWxTZXQoSVNfTEVBUF9NT05USCwgaXNMZWFwTW9udGg/MTowKTsKKworICAgICAgICBpZiAoc2V0QWxsRmllbGRzKSB7CisKKyAgICAgICAgICAgIGludCB5ZWFyID0gZ3llYXIgLSBDSElORVNFX0VQT0NIX1lFQVI7CisgICAgICAgICAgICBpZiAobW9udGggPCAxMSB8fAorICAgICAgICAgICAgICAgIGdtb250aCA+PSBKVUxZKSB7CisgICAgICAgICAgICAgICAgeWVhcisrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IGRheU9mTW9udGggPSBkYXlzIC0gdGhpc01vb24gKyAxOworCisgICAgICAgICAgICBpbnRlcm5hbFNldChFWFRFTkRFRF9ZRUFSLCB5ZWFyKTsKKworICAgICAgICAgICAgLy8gMC0+MCw2MCAgMS0+MSwxICA2MC0+MSw2MCAgNjEtPjIsMSAgZXRjLgorICAgICAgICAgICAgaW50W10geWVhck9mQ3ljbGUgPSBuZXcgaW50WzFdOworICAgICAgICAgICAgaW50IGN5Y2xlID0gZmxvb3JEaXZpZGUoeWVhci0xLCA2MCwgeWVhck9mQ3ljbGUpOworICAgICAgICAgICAgaW50ZXJuYWxTZXQoRVJBLCBjeWNsZSsxKTsKKyAgICAgICAgICAgIGludGVybmFsU2V0KFlFQVIsIHllYXJPZkN5Y2xlWzBdKzEpOworCisgICAgICAgICAgICBpbnRlcm5hbFNldChEQVlfT0ZfTU9OVEgsIGRheU9mTW9udGgpOworCisgICAgICAgICAgICAvLyBEYXlzIHdpbGwgYmUgYmVmb3JlIHRoZSBmaXJzdCBuZXcgeWVhciB3ZSBjb21wdXRlIGlmIHRoaXMKKyAgICAgICAgICAgIC8vIGRhdGUgaXMgaW4gbW9udGggMTEsIGxlYXAgMTEsIDEyLiAgVGhlcmUgaXMgbmV2ZXIgYSBsZWFwIDEyLgorICAgICAgICAgICAgLy8gTmV3IHllYXIgY29tcHV0YXRpb25zIGFyZSBjYWNoZWQgc28gdGhpcyBzaG91bGQgYmUgY2hlYXAgaW4KKyAgICAgICAgICAgIC8vIHRoZSBsb25nIHJ1bi4KKyAgICAgICAgICAgIGludCBuZXdZZWFyID0gbmV3WWVhcihneWVhcik7CisgICAgICAgICAgICBpZiAoZGF5cyA8IG5ld1llYXIpIHsKKyAgICAgICAgICAgICAgICBuZXdZZWFyID0gbmV3WWVhcihneWVhci0xKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludGVybmFsU2V0KERBWV9PRl9ZRUFSLCBkYXlzIC0gbmV3WWVhciArIDEpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBGaWVsZHMgdG8gdGltZQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBDaGluZXNlIG5ldyB5ZWFyIG9mIHRoZSBnaXZlbiBHcmVnb3JpYW4geWVhci4KKyAgICAgKiBAcGFyYW0gZ3llYXIgYSBHcmVnb3JpYW4geWVhcgorICAgICAqIEByZXR1cm4gZGF5cyBhZnRlciBKYW51YXJ5IDEsIDE5NzAgMDowMCBBc2lhL1NoYW5naGFpIG9mIHRoZQorICAgICAqIENoaW5lc2UgbmV3IHllYXIgb2YgdGhlIGdpdmVuIHllYXIgKHRoaXMgd2lsbCBiZSBhIG5ldyBtb29uKQorICAgICAqLworICAgIHByaXZhdGUgaW50IG5ld1llYXIoaW50IGd5ZWFyKSB7CisKKyAgICAgICAgbG9uZyBjYWNoZVZhbHVlID0gbmV3WWVhckNhY2hlLmdldChneWVhcik7CisKKyAgICAgICAgaWYgKGNhY2hlVmFsdWUgPT0gQ2FsZW5kYXJDYWNoZS5FTVBUWSkgeworCisgICAgICAgICAgICBpbnQgc29sc3RpY2VCZWZvcmU9IHdpbnRlclNvbHN0aWNlKGd5ZWFyIC0gMSk7CisgICAgICAgICAgICBpbnQgc29sc3RpY2VBZnRlciA9IHdpbnRlclNvbHN0aWNlKGd5ZWFyKTsKKyAgICAgICAgICAgIGludCBuZXdNb29uMSA9IG5ld01vb25OZWFyKHNvbHN0aWNlQmVmb3JlICsgMSwgdHJ1ZSk7CisgICAgICAgICAgICBpbnQgbmV3TW9vbjIgPSBuZXdNb29uTmVhcihuZXdNb29uMSArIFNZTk9ESUNfR0FQLCB0cnVlKTsKKyAgICAgICAgICAgIGludCBuZXdNb29uMTEgPSBuZXdNb29uTmVhcihzb2xzdGljZUFmdGVyICsgMSwgZmFsc2UpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoc3lub2RpY01vbnRoc0JldHdlZW4obmV3TW9vbjEsIG5ld01vb24xMSkgPT0gMTIgJiYKKyAgICAgICAgICAgICAgICAoaGFzTm9NYWpvclNvbGFyVGVybShuZXdNb29uMSkgfHwgaGFzTm9NYWpvclNvbGFyVGVybShuZXdNb29uMikpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVWYWx1ZSA9IG5ld01vb25OZWFyKG5ld01vb24yICsgU1lOT0RJQ19HQVAsIHRydWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjYWNoZVZhbHVlID0gbmV3TW9vbjI7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG5ld1llYXJDYWNoZS5wdXQoZ3llYXIsIGNhY2hlVmFsdWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAoaW50KSBjYWNoZVZhbHVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgSnVsaWFuIGRheSBudW1iZXIgb2YgZGF5IGJlZm9yZSB0aGUgZmlyc3QgZGF5IG9mIHRoZQorICAgICAqIGdpdmVuIG1vbnRoIGluIHRoZSBnaXZlbiBleHRlbmRlZCB5ZWFyLgorICAgICAqIAorICAgICAqIDxwPk5vdGU6IFRoaXMgbWV0aG9kIHJlYWRzIHRoZSBJU19MRUFQX01PTlRIIGZpZWxkIHRvIGRldGVybWluZQorICAgICAqIHdoZXRoZXIgdGhlIGdpdmVuIG1vbnRoIGlzIGEgbGVhcCBtb250aC4KKyAgICAgKiBAcGFyYW0gZXllYXIgdGhlIGV4dGVuZGVkIHllYXIKKyAgICAgKiBAcGFyYW0gbW9udGggdGhlIHplcm8tYmFzZWQgbW9udGguICBUaGUgbW9udGggaXMgYWxzbyBkZXRlcm1pbmVkCisgICAgICogYnkgcmVhZGluZyB0aGUgSVNfTEVBUF9NT05USCBmaWVsZC4KKyAgICAgKiBAcGFyYW0gcmV0dXJuIHRoZSBKdWxpYW4gZGF5IG51bWJlciBvZiB0aGUgZGF5IGJlZm9yZSB0aGUgZmlyc3QKKyAgICAgKiBkYXkgb2YgdGhlIGdpdmVuIG1vbnRoIGFuZCB5ZWFyCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVDb21wdXRlTW9udGhTdGFydChpbnQgZXllYXIsIGludCBtb250aCwgYm9vbGVhbiB1c2VNb250aCkgeworCisgICAgICAgIC8vIElmIHRoZSBtb250aCBpcyBvdXQgb2YgcmFuZ2UsIGFkanVzdCBpdCBpbnRvIHJhbmdlLCBhbmQKKyAgICAgICAgLy8gbW9kaWZ5IHRoZSBleHRlbmRlZCB5ZWFyIHZhbHVlIGFjY29yZGluZ2x5LgorICAgICAgICBpZiAobW9udGggPCAwIHx8IG1vbnRoID4gMTEpIHsKKyAgICAgICAgICAgIGludFtdIHJlbSA9IG5ldyBpbnRbMV07CisgICAgICAgICAgICBleWVhciArPSBmbG9vckRpdmlkZShtb250aCwgMTIsIHJlbSk7CisgICAgICAgICAgICBtb250aCA9IHJlbVswXTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBneWVhciA9IGV5ZWFyICsgQ0hJTkVTRV9FUE9DSF9ZRUFSIC0gMTsgLy8gR3JlZ29yaWFuIHllYXIKKyAgICAgICAgaW50IG5ld1llYXIgPSBuZXdZZWFyKGd5ZWFyKTsKKyAgICAgICAgaW50IG5ld01vb24gPSBuZXdNb29uTmVhcihuZXdZZWFyICsgbW9udGggKiAyOSwgdHJ1ZSk7CisgICAgICAgIAorICAgICAgICBpbnQganVsaWFuRGF5ID0gbmV3TW9vbiArIEVQT0NIX0pVTElBTl9EQVk7CisKKyAgICAgICAgLy8gU2F2ZSBmaWVsZHMgZm9yIGxhdGVyIHJlc3RvcmF0aW9uCisgICAgICAgIGludCBzYXZlTW9udGggPSBpbnRlcm5hbEdldChNT05USCk7CisgICAgICAgIGludCBzYXZlSXNMZWFwTW9udGggPSBpbnRlcm5hbEdldChJU19MRUFQX01PTlRIKTsKKworICAgICAgICAvLyBJZ25vcmUgSVNfTEVBUF9NT05USCBmaWVsZCBpZiB1c2VNb250aCBpcyBmYWxzZQorICAgICAgICBpbnQgaXNMZWFwTW9udGggPSB1c2VNb250aCA/IHNhdmVJc0xlYXBNb250aCA6IDA7CisKKyAgICAgICAgY29tcHV0ZUdyZWdvcmlhbkZpZWxkcyhqdWxpYW5EYXkpOworICAgICAgICAKKyAgICAgICAgLy8gVGhpcyB3aWxsIG1vZGlmeSB0aGUgTU9OVEggYW5kIElTX0xFQVBfTU9OVEggZmllbGRzIChvbmx5KQorICAgICAgICBjb21wdXRlQ2hpbmVzZUZpZWxkcyhuZXdNb29uLCBnZXRHcmVnb3JpYW5ZZWFyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEdyZWdvcmlhbk1vbnRoKCksIGZhbHNlKTsgICAgICAgIAorCisgICAgICAgIGlmIChtb250aCAhPSBpbnRlcm5hbEdldChNT05USCkgfHwKKyAgICAgICAgICAgIGlzTGVhcE1vbnRoICE9IGludGVybmFsR2V0KElTX0xFQVBfTU9OVEgpKSB7CisgICAgICAgICAgICBuZXdNb29uID0gbmV3TW9vbk5lYXIobmV3TW9vbiArIFNZTk9ESUNfR0FQLCB0cnVlKTsKKyAgICAgICAgICAgIGp1bGlhbkRheSA9IG5ld01vb24gKyBFUE9DSF9KVUxJQU5fREFZOworICAgICAgICB9CisKKyAgICAgICAgaW50ZXJuYWxTZXQoTU9OVEgsIHNhdmVNb250aCk7CisgICAgICAgIGludGVybmFsU2V0KElTX0xFQVBfTU9OVEgsIHNhdmVJc0xlYXBNb250aCk7CisKKyAgICAgICAgcmV0dXJuIGp1bGlhbkRheSAtIDE7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9Db21wYWN0Qnl0ZUFycmF5LmphdmEgYi9zcmMvY29tL2libS91dGlsL0NvbXBhY3RCeXRlQXJyYXkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zODE5NjIzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9Db21wYWN0Qnl0ZUFycmF5LmphdmEKQEAgLTAsMCArMSwzNTUgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvQXR0aWMvQ29tcGFjdEJ5dGVBcnJheS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDA0OjE3OjU3ICQgCisgKiAkUmV2aXNpb246IDEuNSAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS51dGlsOworCisKKy8qKgorICogY2xhc3MgQ29tcGFjdEFUeXBlQXJyYXkgOiB1c2Ugb25seSBvbiBwcmltaXRpdmUgZGF0YSB0eXBlcworICogUHJvdmlkZXMgYSBjb21wYWN0IHdheSB0byBzdG9yZSBpbmZvcm1hdGlvbiB0aGF0IGlzIGluZGV4ZWQgYnkgVW5pY29kZQorICogdmFsdWVzLCBzdWNoIGFzIGNoYXJhY3RlciBwcm9wZXJ0aWVzLCB0eXBlcywga2V5Ym9hcmQgdmFsdWVzLCBldGMuVGhpcworICogaXMgdmVyeSB1c2VmdWwgd2hlbiB5b3UgaGF2ZSBhIGJsb2NrIG9mIFVuaWNvZGUgZGF0YSB0aGF0IGNvbnRhaW5zCisgKiBzaWduaWZpY2FudCB2YWx1ZXMgd2hpbGUgdGhlIHJlc3Qgb2YgdGhlIFVuaWNvZGUgZGF0YSBpcyB1bnVzZWQgaW4gdGhlCisgKiBhcHBsaWNhdGlvbiBvciB3aGVuIHlvdSBoYXZlIGEgbG90IG9mIHJlZHVuZGFuY2UsIHN1Y2ggYXMgd2hlcmUgYWxsIDIxLDAwMAorICogSGFuIGlkZW9ncmFwaHMgaGF2ZSB0aGUgc2FtZSB2YWx1ZS4gIEhvd2V2ZXIsIGxvb2t1cCBpcyBtdWNoIGZhc3RlciB0aGFuIGEKKyAqIGhhc2ggdGFibGUuCisgKiBBIGNvbXBhY3QgYXJyYXkgb2YgYW55IHByaW1pdGl2ZSBkYXRhIHR5cGUgc2VydmVzIHR3byBwdXJwb3NlczoKKyAqIDxVTCB0eXBlID0gcm91bmQ+CisgKiAgICAgPExJPkZhc3QgYWNjZXNzIG9mIHRoZSBpbmRleGVkIHZhbHVlcy4KKyAqICAgICA8TEk+U21hbGxlciBtZW1vcnkgZm9vdHByaW50LgorICogPC9VTD4KKyAqIEEgY29tcGFjdCBhcnJheSBpcyBjb21wb3NlZCBvZiBhIGluZGV4IGFycmF5IGFuZCB2YWx1ZSBhcnJheS4gIFRoZSBpbmRleAorICogYXJyYXkgY29udGFpbnMgdGhlIGluZGljaWVzIG9mIFVuaWNvZGUgY2hhcmFjdGVycyB0byB0aGUgdmFsdWUgYXJyYXkuCisgKgorICogQHNlZSAgICAgICAgICAgICAgICBDb21wYWN0Q2hhckFycmF5CisgKiBAdmVyc2lvbiAgICAgICAgICAgICRSZXZpc2lvbjogMS41ICQKKyAqIEBhdXRob3IgICAgICAgICAgICAgSGVsZW5hIFNoaWgKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIENvbXBhY3RCeXRlQXJyYXkgaW1wbGVtZW50cyBDbG9uZWFibGUgeworCisgICAgLyoqCisgICAgICogVGhlIHRvdGFsIG51bWJlciBvZiBVbmljb2RlIGNoYXJhY3RlcnMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyAgZmluYWwgaW50IFVOSUNPREVDT1VOVCA9NjU1MzY7CisKKyAgICAvKioKKyAgICAgKiBEZWZhdWx0IGNvbnN0cnVjdG9yIGZvciBDb21wYWN0Qnl0ZUFycmF5LCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUKKyAgICAgKiBjb21wYWN0IGFycmF5IGlzIDAuCisgICAgICovCisgICAgcHVibGljIENvbXBhY3RCeXRlQXJyYXkoKQorICAgIHsKKyAgICAgICAgdGhpcygoYnl0ZSkwKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RvciBmb3IgQ29tcGFjdEJ5dGVBcnJheS4KKyAgICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBjb21wYWN0IGFycmF5LgorICAgICAqLworICAgIHB1YmxpYyBDb21wYWN0Qnl0ZUFycmF5KGJ5dGUgZGVmYXVsdFZhbHVlKQorICAgIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIHZhbHVlcyA9IG5ldyBieXRlW1VOSUNPREVDT1VOVF07CisgICAgICAgIGluZGljZXMgPSBuZXcgY2hhcltJTkRFWENPVU5UXTsKKyAgICAgICAgaGFzaGVzID0gbmV3IGludFtJTkRFWENPVU5UXTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IFVOSUNPREVDT1VOVDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZXNbaV0gPSBkZWZhdWx0VmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IElOREVYQ09VTlQ7ICsraSkgeworICAgICAgICAgICAgaW5kaWNlc1tpXSA9IChjaGFyKShpPDxCTE9DS1NISUZUKTsKKyAgICAgICAgICAgIGhhc2hlc1tpXSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgaXNDb21wYWN0ID0gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IgZm9yIENvbXBhY3RCeXRlQXJyYXkuCisgICAgICogQHBhcmFtIGluZGV4QXJyYXkgdGhlIGluZGljaWVzIG9mIHRoZSBjb21wYWN0IGFycmF5LgorICAgICAqIEBwYXJhbSBuZXdWYWx1ZXMgdGhlIHZhbHVlcyBvZiB0aGUgY29tcGFjdCBhcnJheS4KKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBJZiBpbmRleCBpcyBvdXQgb2YgcmFuZ2UuCisgICAgICovCisgICAgcHVibGljIENvbXBhY3RCeXRlQXJyYXkoY2hhciBpbmRleEFycmF5W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZSBuZXdWYWx1ZXNbXSkKKyAgICB7CisgICAgICAgIGludCBpOworICAgICAgICBpZiAoaW5kZXhBcnJheS5sZW5ndGggIT0gSU5ERVhDT1VOVCkKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkluZGV4IG91dCBvZiBib3VuZHMhIik7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBJTkRFWENPVU5UOyArK2kpIHsKKyAgICAgICAgICAgIGNoYXIgaW5kZXggPSBpbmRleEFycmF5W2ldOworICAgICAgICAgICAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+PSBuZXdWYWx1ZXMubGVuZ3RoK0JMT0NLQ09VTlQpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkluZGV4IG91dCBvZiBib3VuZHMhIik7CisgICAgICAgIH0KKyAgICAgICAgaW5kaWNlcyA9IGluZGV4QXJyYXk7CisgICAgICAgIHZhbHVlcyA9IG5ld1ZhbHVlczsKKyAgICAgICAgaXNDb21wYWN0ID0gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RvciBmb3IgQ29tcGFjdEJ5dGVBcnJheS4KKyAgICAgKiBAcGFyYW0gaW5kZXhBcnJheSB0aGUgUkxFLWVuY29kZWQgaW5kaWNpZXMgb2YgdGhlIGNvbXBhY3QgYXJyYXkuCisgICAgICogQHBhcmFtIHZhbHVlQXJyYXkgdGhlIFJMRS1lbmNvZGVkIHZhbHVlcyBvZiB0aGUgY29tcGFjdCBhcnJheS4KKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBJZiBpbmRleCBpcyBvdXQgb2YgcmFuZ2UuCisgICAgICovCisgICAgcHVibGljIENvbXBhY3RCeXRlQXJyYXkoU3RyaW5nIGluZGV4QXJyYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHZhbHVlQXJyYXkpCisgICAgeworICAgICAgICB0aGlzKCBVdGlsaXR5LlJMRVN0cmluZ1RvQ2hhckFycmF5KGluZGV4QXJyYXkpLAorICAgICAgICAgICAgICBVdGlsaXR5LlJMRVN0cmluZ1RvQnl0ZUFycmF5KHZhbHVlQXJyYXkpICk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0IHRoZSBtYXBwZWQgdmFsdWUgb2YgYSBVbmljb2RlIGNoYXJhY3Rlci4KKyAgICAgKiBAcGFyYW0gaW5kZXggdGhlIGNoYXJhY3RlciB0byBnZXQgdGhlIG1hcHBlZCB2YWx1ZSB3aXRoCisgICAgICogQHJldHVybiB0aGUgbWFwcGVkIHZhbHVlIG9mIHRoZSBnaXZlbiBjaGFyYWN0ZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgYnl0ZSBlbGVtZW50QXQoY2hhciBpbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiAodmFsdWVzWyhpbmRpY2VzW2luZGV4ID4+IEJMT0NLU0hJRlRdICYgMHhGRkZGKQorICAgICAgICAgICAgICAgICAgICAgICArIChpbmRleCAmIEJMT0NLTUFTSyldKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgYSBuZXcgdmFsdWUgZm9yIGEgVW5pY29kZSBjaGFyYWN0ZXIuCisgICAgICogU2V0IGF1dG9tYXRpY2FsbHkgZXhwYW5kcyB0aGUgYXJyYXkgaWYgaXQgaXMgY29tcGFjdGVkLgorICAgICAqIEBwYXJhbSBpbmRleCB0aGUgY2hhcmFjdGVyIHRvIHNldCB0aGUgbWFwcGVkIHZhbHVlIHdpdGgKKyAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyBtYXBwZWQgdmFsdWUKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRFbGVtZW50QXQoY2hhciBpbmRleCwgYnl0ZSB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChpc0NvbXBhY3QpCisgICAgICAgICAgICBleHBhbmQoKTsKKyAgICAgICAgdmFsdWVzWyhpbnQpaW5kZXhdID0gdmFsdWU7CisgICAgICAgIHRvdWNoQmxvY2soaW5kZXggPj4gQkxPQ0tTSElGVCwgdmFsdWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCBuZXcgdmFsdWVzIGZvciBhIHJhbmdlIG9mIFVuaWNvZGUgY2hhcmFjdGVyLgorICAgICAqIEBwYXJhbSBzdGFydCB0aGUgc3RhcnRpbmcgb2Zmc2V0IG8gb2YgdGhlIHJhbmdlCisgICAgICogQHBhcmFtIGVuZCB0aGUgZW5kaW5nIG9mZnNldCBvZiB0aGUgcmFuZ2UKKyAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyBtYXBwZWQgdmFsdWUKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRFbGVtZW50QXQoY2hhciBzdGFydCwgY2hhciBlbmQsIGJ5dGUgdmFsdWUpCisgICAgeworICAgICAgICBpbnQgaTsKKyAgICAgICAgaWYgKGlzQ29tcGFjdCkgeworICAgICAgICAgICAgZXhwYW5kKCk7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpID0gc3RhcnQ7IGkgPD0gZW5kOyArK2kpIHsKKyAgICAgICAgICAgIHZhbHVlc1tpXSA9IHZhbHVlOworICAgICAgICAgICAgdG91Y2hCbG9jayhpID4+IEJMT0NLU0hJRlQsIHZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGNvbXBhY3QoKSB7CisgICAgICAgIGNvbXBhY3QoZmFsc2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBhY3QgdGhlIGFycmF5LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGNvbXBhY3QoYm9vbGVhbiBleGhhdXN0aXZlKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0NvbXBhY3QpIHsKKyAgICAgICAgICAgIGludCBsaW1pdENvbXBhY3RlZCA9IDA7CisgICAgICAgICAgICBpbnQgaUJsb2NrU3RhcnQgPSAwOworICAgICAgICAgICAgY2hhciBpVW50b3VjaGVkID0gMHhGRkZGOworCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGluZGljZXMubGVuZ3RoOyArK2ksIGlCbG9ja1N0YXJ0ICs9IEJMT0NLQ09VTlQpIHsKKyAgICAgICAgICAgICAgICBpbmRpY2VzW2ldID0gMHhGRkZGOworICAgICAgICAgICAgICAgIGJvb2xlYW4gdG91Y2hlZCA9IGJsb2NrVG91Y2hlZChpKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRvdWNoZWQgJiYgaVVudG91Y2hlZCAhPSAweEZGRkYpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgbm8gdmFsdWVzIGluIHRoaXMgYmxvY2sgd2VyZSBzZXQsIHdlIGNhbiBqdXN0IHNldCBpdHMKKyAgICAgICAgICAgICAgICAgICAgLy8gaW5kZXggdG8gYmUgdGhlIHNhbWUgYXMgc29tZSBvdGhlciBibG9jayB3aXRoIG5vIHZhbHVlcworICAgICAgICAgICAgICAgICAgICAvLyBzZXQsIGFzc3VtaW5nIHdlJ3ZlIHNlZW4gb25lIHlldC4KKyAgICAgICAgICAgICAgICAgICAgaW5kaWNlc1tpXSA9IGlVbnRvdWNoZWQ7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGpCbG9ja1N0YXJ0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgaW50IGogPSAwOworICAgICAgICAgICAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgbGltaXRDb21wYWN0ZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKytqLCBqQmxvY2tTdGFydCArPSBCTE9DS0NPVU5UKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzaGVzW2ldID09IGhhc2hlc1tqXSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheVJlZ2lvbk1hdGNoZXModmFsdWVzLCBpQmxvY2tTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLCBqQmxvY2tTdGFydCwgQkxPQ0tDT1VOVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzW2ldID0gKGNoYXIpakJsb2NrU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGljZXNbaV0gPT0gMHhGRkZGKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBkaWRuJ3QgbWF0Y2gsIHNvIGNvcHkgJiB1cGRhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkodmFsdWVzLCBpQmxvY2tTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMsIGpCbG9ja1N0YXJ0LCBCTE9DS0NPVU5UKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGljZXNbaV0gPSAoY2hhcilqQmxvY2tTdGFydDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhc2hlc1tqXSA9IGhhc2hlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICsrbGltaXRDb21wYWN0ZWQ7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdG91Y2hlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgdGhlIGZpcnN0IHVudG91Y2hlZCBibG9jayB3ZSd2ZSBzZWVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbWVtYmVyIGl0cyBpbmRleC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpVW50b3VjaGVkID0gKGNoYXIpakJsb2NrU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyB3ZSBhcmUgZG9uZSBjb21wYWN0aW5nLCBzbyBub3cgbWFrZSB0aGUgYXJyYXkgY2hhcmVyCisgICAgICAgICAgICBpbnQgbmV3U2l6ZSA9IGxpbWl0Q29tcGFjdGVkKkJMT0NLQ09VTlQ7CisgICAgICAgICAgICBieXRlW10gcmVzdWx0ID0gbmV3IGJ5dGVbbmV3U2l6ZV07CisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHZhbHVlcywgMCwgcmVzdWx0LCAwLCBuZXdTaXplKTsKKyAgICAgICAgICAgIHZhbHVlcyA9IHJlc3VsdDsKKyAgICAgICAgICAgIGlzQ29tcGFjdCA9IHRydWU7CisgICAgICAgICAgICBoYXNoZXMgPSBudWxsOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVuaWVuY2UgdXRpbGl0eSB0byBjb21wYXJlIHR3byBhcnJheXMgb2YgZG91Ymxlcy4KKyAgICAgKiBAcGFyYW0gbGVuIHRoZSBsZW5ndGggdG8gY29tcGFyZS4KKyAgICAgKiBUaGUgc3RhcnQgaW5kaWNlcyBhbmQgc3RhcnQrbGVuIG11c3QgYmUgdmFsaWQuCisgICAgICovCisgICAgZmluYWwgc3RhdGljIGJvb2xlYW4gYXJyYXlSZWdpb25NYXRjaGVzKGJ5dGVbXSBzb3VyY2UsIGludCBzb3VyY2VTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZVtdIHRhcmdldCwgaW50IHRhcmdldFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuKQorICAgIHsKKyAgICAgICAgaW50IHNvdXJjZUVuZCA9IHNvdXJjZVN0YXJ0ICsgbGVuOworICAgICAgICBpbnQgZGVsdGEgPSB0YXJnZXRTdGFydCAtIHNvdXJjZVN0YXJ0OworICAgICAgICBmb3IgKGludCBpID0gc291cmNlU3RhcnQ7IGkgPCBzb3VyY2VFbmQ7IGkrKykgeworICAgICAgICAgICAgaWYgKHNvdXJjZVtpXSAhPSB0YXJnZXRbaSArIGRlbHRhXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZW1lbWJlciB0aGF0IGEgc3BlY2lmaWVkIGJsb2NrIHdhcyAidG91Y2hlZCIsIGkuZS4gaGFkIGEgdmFsdWUgc2V0LgorICAgICAqIFVudG91Y2hlZCBibG9ja3MgY2FuIGJlIHNraXBwZWQgd2hlbiBjb21wYWN0aW5nIHRoZSBhcnJheQorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgdm9pZCB0b3VjaEJsb2NrKGludCBpLCBpbnQgdmFsdWUpIHsKKyAgICAgICAgaGFzaGVzW2ldID0gKGhhc2hlc1tpXSArICh2YWx1ZTw8MSkpIHwgMTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBRdWVyeSB3aGV0aGVyIGEgc3BlY2lmaWVkIGJsb2NrIHdhcyAidG91Y2hlZCIsIGkuZS4gaGFkIGEgdmFsdWUgc2V0LgorICAgICAqIFVudG91Y2hlZCBibG9ja3MgY2FuIGJlIHNraXBwZWQgd2hlbiBjb21wYWN0aW5nIHRoZSBhcnJheQorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBibG9ja1RvdWNoZWQoaW50IGkpIHsKKyAgICAgICAgcmV0dXJuIGhhc2hlc1tpXSAhPSAwOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZvciBpbnRlcm5hbCB1c2Ugb25seS4gIERvIG5vdCBtb2RpZnkgdGhlIHJlc3VsdCwgdGhlIGJlaGF2aW9yIG9mCisgICAgICogbW9kaWZpZWQgcmVzdWx0cyBhcmUgdW5kZWZpbmVkLgorICAgICAqLworICAgIHB1YmxpYyBjaGFyW10gZ2V0SW5kZXhBcnJheSgpCisgICAgeworICAgICAgICByZXR1cm4gaW5kaWNlczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGb3IgaW50ZXJuYWwgdXNlIG9ubHkuICBEbyBub3QgbW9kaWZ5IHRoZSByZXN1bHQsIHRoZSBiZWhhdmlvciBvZgorICAgICAqIG1vZGlmaWVkIHJlc3VsdHMgYXJlIHVuZGVmaW5lZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgYnl0ZVtdIGdldFZhbHVlQXJyYXkoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZhbHVlczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgQ2xvbmVhYmxlCisgICAgICovCisgICAgcHVibGljIE9iamVjdCBjbG9uZSgpCisgICAgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgQ29tcGFjdEJ5dGVBcnJheSBvdGhlciA9IChDb21wYWN0Qnl0ZUFycmF5KSBzdXBlci5jbG9uZSgpOworICAgICAgICAgICAgb3RoZXIudmFsdWVzID0gKGJ5dGVbXSl2YWx1ZXMuY2xvbmUoKTsKKyAgICAgICAgICAgIG90aGVyLmluZGljZXMgPSAoY2hhcltdKWluZGljZXMuY2xvbmUoKTsKKyAgICAgICAgICAgIGlmIChoYXNoZXMgIT0gbnVsbCkgb3RoZXIuaGFzaGVzID0gKGludFtdKWhhc2hlcy5jbG9uZSgpOworICAgICAgICAgICAgcmV0dXJuIG90aGVyOworICAgICAgICB9IGNhdGNoIChDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcGFyZXMgdGhlIGVxdWFsaXR5IG9mIHR3byBjb21wYWN0IGFycmF5IG9iamVjdHMuCisgICAgICogQHBhcmFtIG9iaiB0aGUgY29tcGFjdCBhcnJheSBvYmplY3QgdG8gYmUgY29tcGFyZWQgd2l0aCB0aGlzLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY3VycmVudCBjb21wYWN0IGFycmF5IG9iamVjdCBpcyB0aGUgc2FtZQorICAgICAqIGFzIHRoZSBjb21wYWN0IGFycmF5IG9iamVjdCBvYmo7IGZhbHNlIG90aGVyd2lzZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikgeworICAgICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHRoaXMgPT0gb2JqKSAgICAgICAgICAgICAgICAgICAgICAvLyBxdWljayBjaGVjaworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChnZXRDbGFzcygpICE9IG9iai5nZXRDbGFzcygpKSAgICAgICAgIC8vIHNhbWUgY2xhc3M/CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENvbXBhY3RCeXRlQXJyYXkgb3RoZXIgPSAoQ29tcGFjdEJ5dGVBcnJheSkgb2JqOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IFVOSUNPREVDT1VOVDsgaSsrKSB7CisgICAgICAgICAgICAvLyBjb3VsZCBiZSBzcGVkIHVwIGxhdGVyCisgICAgICAgICAgICBpZiAoZWxlbWVudEF0KChjaGFyKWkpICE9IG90aGVyLmVsZW1lbnRBdCgoY2hhcilpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7IC8vIHdlIG1hZGUgaXQgdGhyb3VnaCB0aGUgZ3VhbnRsZXQuCisgICAgfQorCisgICAgLyoqCisgICAgICogR2VuZXJhdGVzIHRoZSBoYXNoIGNvZGUgZm9yIHRoZSBjb21wYWN0IGFycmF5IG9iamVjdAorICAgICAqLworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIGludCByZXN1bHQgPSAwOworICAgICAgICBpbnQgaW5jcmVtZW50ID0gTWF0aC5taW4oMywgdmFsdWVzLmxlbmd0aC8xNik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSs9IGluY3JlbWVudCkgeworICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMzcgKyB2YWx1ZXNbaV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIHBhY2thZ2UgcHJpdmF0ZQorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBFeHBhbmRpbmcgdGFrZXMgdGhlIGFycmF5IGJhY2sgdG8gYSA2NTUzNiBlbGVtZW50IGFycmF5LgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBleHBhbmQoKQorICAgIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGlmIChpc0NvbXBhY3QpIHsKKyAgICAgICAgICAgIGJ5dGVbXSAgdGVtcEFycmF5OworICAgICAgICAgICAgaGFzaGVzID0gbmV3IGludFtJTkRFWENPVU5UXTsKKyAgICAgICAgICAgIHRlbXBBcnJheSA9IG5ldyBieXRlW1VOSUNPREVDT1VOVF07CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgVU5JQ09ERUNPVU5UOyArK2kpIHsKKyAgICAgICAgICAgICAgICBieXRlIHZhbHVlID0gZWxlbWVudEF0KChjaGFyKWkpOworICAgICAgICAgICAgICAgIHRlbXBBcnJheVtpXSA9IHZhbHVlOworICAgICAgICAgICAgICAgIHRvdWNoQmxvY2soaSA+PiBCTE9DS1NISUZULCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgSU5ERVhDT1VOVDsgKytpKSB7CisgICAgICAgICAgICAgICAgaW5kaWNlc1tpXSA9IChjaGFyKShpPDxCTE9DS1NISUZUKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhbHVlcyA9IG51bGw7CisgICAgICAgICAgICB2YWx1ZXMgPSB0ZW1wQXJyYXk7CisgICAgICAgICAgICBpc0NvbXBhY3QgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgYnl0ZVtdIGdldEFycmF5KCkKKyAgICB7CisgICAgICAgIHJldHVybiB2YWx1ZXM7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgIGZpbmFsIGludCBCTE9DS1NISUZUID03OworICAgIHByaXZhdGUgc3RhdGljICBmaW5hbCBpbnQgQkxPQ0tDT1VOVCA9KDE8PEJMT0NLU0hJRlQpOworICAgIHByaXZhdGUgc3RhdGljICBmaW5hbCBpbnQgSU5ERVhTSElGVCA9KDE2LUJMT0NLU0hJRlQpOworICAgIHByaXZhdGUgc3RhdGljICBmaW5hbCBpbnQgSU5ERVhDT1VOVCA9KDE8PElOREVYU0hJRlQpOworICAgIHByaXZhdGUgc3RhdGljICBmaW5hbCBpbnQgQkxPQ0tNQVNLID0gQkxPQ0tDT1VOVCAtIDE7CisKKyAgICBwcml2YXRlIGJ5dGVbXSB2YWx1ZXM7CisgICAgcHJpdmF0ZSBjaGFyIGluZGljZXNbXTsKKyAgICBwcml2YXRlIGJvb2xlYW4gaXNDb21wYWN0OworICAgIHByaXZhdGUgaW50W10gaGFzaGVzOworfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvQ29tcGFjdENoYXJBcnJheS5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9Db21wYWN0Q2hhckFycmF5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGFhNGEwMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvQ29tcGFjdENoYXJBcnJheS5qYXZhCkBAIC0wLDAgKzEsMzc2IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL0F0dGljL0NvbXBhY3RDaGFyQXJyYXkuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wNy8xMiAxNjo0Mjo0NCAkIAorICogJFJldmlzaW9uOiAxLjYgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS51dGlsOworCitpbXBvcnQgY29tLmlibS51dGlsLlV0aWxpdHk7CisKKy8qKgorICogY2xhc3MgQ29tcGFjdEFUeXBlQXJyYXkgOiB1c2Ugb25seSBvbiBwcmltaXRpdmUgZGF0YSB0eXBlcworICogUHJvdmlkZXMgYSBjb21wYWN0IHdheSB0byBzdG9yZSBpbmZvcm1hdGlvbiB0aGF0IGlzIGluZGV4ZWQgYnkgVW5pY29kZQorICogdmFsdWVzLCBzdWNoIGFzIGNoYXJhY3RlciBwcm9wZXJ0aWVzLCB0eXBlcywga2V5Ym9hcmQgdmFsdWVzLCBldGMuVGhpcworICogaXMgdmVyeSB1c2VmdWwgd2hlbiB5b3UgaGF2ZSBhIGJsb2NrIG9mIFVuaWNvZGUgZGF0YSB0aGF0IGNvbnRhaW5zCisgKiBzaWduaWZpY2FudCB2YWx1ZXMgd2hpbGUgdGhlIHJlc3Qgb2YgdGhlIFVuaWNvZGUgZGF0YSBpcyB1bnVzZWQgaW4gdGhlCisgKiBhcHBsaWNhdGlvbiBvciB3aGVuIHlvdSBoYXZlIGEgbG90IG9mIHJlZHVuZGFuY2UsIHN1Y2ggYXMgd2hlcmUgYWxsIDIxLDAwMAorICogSGFuIGlkZW9ncmFwaHMgaGF2ZSB0aGUgc2FtZSB2YWx1ZS4gIEhvd2V2ZXIsIGxvb2t1cCBpcyBtdWNoIGZhc3RlciB0aGFuIGEKKyAqIGhhc2ggdGFibGUuCisgKiBBIGNvbXBhY3QgYXJyYXkgb2YgYW55IHByaW1pdGl2ZSBkYXRhIHR5cGUgc2VydmVzIHR3byBwdXJwb3NlczoKKyAqIDxVTCB0eXBlID0gcm91bmQ+CisgKiAgICAgPExJPkZhc3QgYWNjZXNzIG9mIHRoZSBpbmRleGVkIHZhbHVlcy4KKyAqICAgICA8TEk+U21hbGxlciBtZW1vcnkgZm9vdHByaW50LgorICogPC9VTD4KKyAqIEEgY29tcGFjdCBhcnJheSBpcyBjb21wb3NlZCBvZiBhIGluZGV4IGFycmF5IGFuZCB2YWx1ZSBhcnJheS4gIFRoZSBpbmRleAorICogYXJyYXkgY29udGFpbnMgdGhlIGluZGljaWVzIG9mIFVuaWNvZGUgY2hhcmFjdGVycyB0byB0aGUgdmFsdWUgYXJyYXkuCisgKiBAc2VlICAgICAgICAgICAgICAgIENvbXBhY3RCeXRlQXJyYXkKKyAqIEB2ZXJzaW9uICAgICAgICAgICAgJFJldmlzaW9uOiAxLjYgJAorICogQGF1dGhvciAgICAgICAgICAgICBIZWxlbmEgU2hpaAorICovCitwdWJsaWMgZmluYWwgY2xhc3MgQ29tcGFjdENoYXJBcnJheSBpbXBsZW1lbnRzIENsb25lYWJsZSB7CisKKyAgICAvKioKKyAgICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIFVuaWNvZGUgY2hhcmFjdGVycy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljICBmaW5hbCBpbnQgVU5JQ09ERUNPVU5UID0gNjU1MzY7CisKKyAgICAvKioKKyAgICAgKiBEZWZhdWx0IGNvbnN0cnVjdG9yIGZvciBDb21wYWN0Q2hhckFycmF5LCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUKKyAgICAgKiBjb21wYWN0IGFycmF5IGlzIDAuCisgICAgICovCisgICAgcHVibGljIENvbXBhY3RDaGFyQXJyYXkoKQorICAgIHsKKyAgICAgICAgdGhpcygoY2hhcikwKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RvciBmb3IgQ29tcGFjdENoYXJBcnJheS4KKyAgICAgKiBAcGFyYW0gZGVmYXVsdFZhbHVlIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBjb21wYWN0IGFycmF5LgorICAgICAqLworICAgIHB1YmxpYyBDb21wYWN0Q2hhckFycmF5KGNoYXIgZGVmYXVsdFZhbHVlKQorICAgIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIHZhbHVlcyA9IG5ldyBjaGFyW1VOSUNPREVDT1VOVF07CisgICAgICAgIGluZGljZXMgPSBuZXcgY2hhcltJTkRFWENPVU5UXTsKKyAgICAgICAgaGFzaGVzID0gbmV3IGludFtJTkRFWENPVU5UXTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IFVOSUNPREVDT1VOVDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZXNbaV0gPSBkZWZhdWx0VmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IElOREVYQ09VTlQ7ICsraSkgeworICAgICAgICAgICAgaW5kaWNlc1tpXSA9IChjaGFyKShpPDxCTE9DS1NISUZUKTsKKyAgICAgICAgICAgIGhhc2hlc1tpXSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgaXNDb21wYWN0ID0gZmFsc2U7CisKKyAgICAgICAgdGhpcy5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0b3IgZm9yIENvbXBhY3RDaGFyQXJyYXkuCisgICAgICogQHBhcmFtIGluZGV4QXJyYXkgdGhlIGluZGljaWVzIG9mIHRoZSBjb21wYWN0IGFycmF5LgorICAgICAqIEBwYXJhbSBuZXdWYWx1ZXMgdGhlIHZhbHVlcyBvZiB0aGUgY29tcGFjdCBhcnJheS4KKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBJZiB0aGUgaW5kZXggaXMgb3V0IG9mIHJhbmdlLgorICAgICAqLworICAgIHB1YmxpYyBDb21wYWN0Q2hhckFycmF5KGNoYXIgaW5kZXhBcnJheVtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIG5ld1ZhbHVlc1tdKQorICAgIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGlmIChpbmRleEFycmF5Lmxlbmd0aCAhPSBJTkRFWENPVU5UKQorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW5kZXggb3V0IG9mIGJvdW5kcy4iKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IElOREVYQ09VTlQ7ICsraSkgeworICAgICAgICAgICAgY2hhciBpbmRleCA9IGluZGV4QXJyYXlbaV07CisgICAgICAgICAgICBpZiAoKGluZGV4IDwgMCkgfHwgKGluZGV4ID49IG5ld1ZhbHVlcy5sZW5ndGgrQkxPQ0tDT1VOVCkpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW5kZXggb3V0IG9mIGJvdW5kcy4iKTsKKyAgICAgICAgfQorICAgICAgICBpbmRpY2VzID0gaW5kZXhBcnJheTsKKyAgICAgICAgdmFsdWVzID0gbmV3VmFsdWVzOworICAgICAgICBpc0NvbXBhY3QgPSB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdG9yIGZvciBDb21wYWN0Q2hhckFycmF5LgorICAgICAqCisgICAgICogQHBhcmFtIGluZGV4QXJyYXkgdGhlIFJMRS1lbmNvZGVkIGluZGljaWVzIG9mIHRoZSBjb21wYWN0IGFycmF5LgorICAgICAqIEBwYXJhbSB2YWx1ZUFycmF5IHRoZSBSTEUtZW5jb2RlZCB2YWx1ZXMgb2YgdGhlIGNvbXBhY3QgYXJyYXkuCisgICAgICoKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiB0aGUgaW5kZXggb3IgdmFsdWUgYXJyYXkgaXMKKyAgICAgKiAgICAgICAgICB0aGUgd3Jvbmcgc2l6ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgQ29tcGFjdENoYXJBcnJheShTdHJpbmcgaW5kZXhBcnJheSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHZhbHVlQXJyYXkpCisgICAgeworICAgICAgICB0aGlzKCBVdGlsaXR5LlJMRVN0cmluZ1RvQ2hhckFycmF5KGluZGV4QXJyYXkpLAorICAgICAgICAgICAgICBVdGlsaXR5LlJMRVN0cmluZ1RvQ2hhckFycmF5KHZhbHVlQXJyYXkpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXQgdGhlIG1hcHBlZCB2YWx1ZSBvZiBhIFVuaWNvZGUgY2hhcmFjdGVyLgorICAgICAqIEBwYXJhbSBpbmRleCB0aGUgY2hhcmFjdGVyIHRvIGdldCB0aGUgbWFwcGVkIHZhbHVlIHdpdGgKKyAgICAgKiBAcmV0dXJuIHRoZSBtYXBwZWQgdmFsdWUgb2YgdGhlIGdpdmVuIGNoYXJhY3RlcgorICAgICAqLworICAgIHB1YmxpYyBjaGFyIGVsZW1lbnRBdChjaGFyIGluZGV4KSAvLyBwYXJhbWV0ZXJpemVkIG9uIGNoYXIKKyAgICB7CisgICAgICAgIHJldHVybiAodmFsdWVzWyhpbmRpY2VzW2luZGV4ID4+IEJMT0NLU0hJRlRdICYgMHhGRkZGKQorICAgICAgICAgICAgICAgICAgICAgICArIChpbmRleCAmIEJMT0NLTUFTSyldKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgYSBuZXcgdmFsdWUgZm9yIGEgVW5pY29kZSBjaGFyYWN0ZXIuCisgICAgICogU2V0IGF1dG9tYXRpY2FsbHkgZXhwYW5kcyB0aGUgYXJyYXkgaWYgaXQgaXMgY29tcGFjdGVkLgorICAgICAqIEBwYXJhbSBpbmRleCB0aGUgY2hhcmFjdGVyIHRvIHNldCB0aGUgbWFwcGVkIHZhbHVlIHdpdGgKKyAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyBtYXBwZWQgdmFsdWUKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRFbGVtZW50QXQoY2hhciBpbmRleCwgY2hhciB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChpc0NvbXBhY3QpCisgICAgICAgICAgICBleHBhbmQoKTsKKyAgICAgICAgIHZhbHVlc1soaW50KWluZGV4XSA9IHZhbHVlOworICAgICAgICB0b3VjaEJsb2NrKGluZGV4ID4+IEJMT0NLU0hJRlQsIHZhbHVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgbmV3IHZhbHVlcyBmb3IgYSByYW5nZSBvZiBVbmljb2RlIGNoYXJhY3Rlci4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzdGFydCB0aGUgc3RhcnRpbmcgb2Zmc2V0IG9mIHRoZSByYW5nZQorICAgICAqIEBwYXJhbSBlbmQgdGhlIGVuZGluZyBvZmZzZXQgb2YgdGhlIHJhbmdlCisgICAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgbWFwcGVkIHZhbHVlCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0RWxlbWVudEF0KGNoYXIgc3RhcnQsIGNoYXIgZW5kLCBjaGFyIHZhbHVlKQorICAgIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGlmIChpc0NvbXBhY3QpIHsKKyAgICAgICAgICAgIGV4cGFuZCgpOworICAgICAgICB9CisgICAgICAgIGZvciAoaSA9IHN0YXJ0OyBpIDw9IGVuZDsgKytpKSB7CisgICAgICAgICAgICB2YWx1ZXNbaV0gPSB2YWx1ZTsKKyAgICAgICAgICAgIHRvdWNoQmxvY2soaSA+PiBCTE9DS1NISUZULCB2YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBjb21wYWN0KCkgeworICAgICAgICBjb21wYWN0KHRydWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBhY3QgdGhlIGFycmF5LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGNvbXBhY3QoYm9vbGVhbiBleGhhdXN0aXZlKQorICAgIHsKKyAgICAgICAgaWYgKCFpc0NvbXBhY3QpIHsKKyAgICAgICAgICAgIGludCBpQmxvY2tTdGFydCA9IDA7CisgICAgICAgICAgICBjaGFyIGlVbnRvdWNoZWQgPSAweEZGRkY7CisgICAgICAgICAgICBpbnQgbmV3U2l6ZSA9IDA7CisKKyAgICAgICAgICAgIGNoYXJbXSB0YXJnZXQgPSBleGhhdXN0aXZlID8gbmV3IGNoYXJbVU5JQ09ERUNPVU5UXSA6IHZhbHVlczsKKworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBpbmRpY2VzLmxlbmd0aDsgKytpLCBpQmxvY2tTdGFydCArPSBCTE9DS0NPVU5UKSB7CisgICAgICAgICAgICAgICAgaW5kaWNlc1tpXSA9IDB4RkZGRjsKKyAgICAgICAgICAgICAgICBib29sZWFuIHRvdWNoZWQgPSBibG9ja1RvdWNoZWQoaSk7CisgICAgICAgICAgICAgICAgaWYgKCF0b3VjaGVkICYmIGlVbnRvdWNoZWQgIT0gMHhGRkZGKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIG5vIHZhbHVlcyBpbiB0aGlzIGJsb2NrIHdlcmUgc2V0LCB3ZSBjYW4ganVzdCBzZXQgaXRzCisgICAgICAgICAgICAgICAgICAgIC8vIGluZGV4IHRvIGJlIHRoZSBzYW1lIGFzIHNvbWUgb3RoZXIgYmxvY2sgd2l0aCBubyB2YWx1ZXMKKyAgICAgICAgICAgICAgICAgICAgLy8gc2V0LCBhc3N1bWluZyB3ZSd2ZSBzZWVuIG9uZSB5ZXQuCisgICAgICAgICAgICAgICAgICAgIGluZGljZXNbaV0gPSBpVW50b3VjaGVkOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGludCBqQmxvY2tTdGFydCA9IDA7CisgICAgICAgICAgICAgICAgICAgIC8vIFNlZSBpZiB3ZSBjYW4gZmluZCBhIHByZXZpb3VzbHkgY29tcGFjdGVkIGJsb2NrIHRoYXQncyBpZGVudGljYWwKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBpOyArK2osIGpCbG9ja1N0YXJ0ICs9IEJMT0NLQ09VTlQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoYXNoZXNbaV0gPT0gaGFzaGVzW2pdICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5UmVnaW9uTWF0Y2hlcyh2YWx1ZXMsIGlCbG9ja1N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzLCBqQmxvY2tTdGFydCwgQkxPQ0tDT1VOVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzW2ldID0gaW5kaWNlc1tqXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoaW5kaWNlc1tpXSA9PSAweEZGRkYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBkZXN0OyAgIC8vIFdoZXJlIHRvIGNvcHkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleGhhdXN0aXZlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VlIGlmIHdlIGNhbiBmaW5kIHNvbWUgb3ZlcmxhcCB3aXRoIGFub3RoZXIgYmxvY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0ID0gRmluZE92ZXJsYXBwaW5nUG9zaXRpb24oaUJsb2NrU3RhcnQsIHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1NpemUpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBKdXN0IGNvcHkgdG8gdGhlIGVuZDsgaXQncyBxdWlja2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdCA9IG5ld1NpemU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGltaXQgPSBkZXN0ICsgQkxPQ0tDT1VOVDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsaW1pdCA+IG5ld1NpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gbmV3U2l6ZTsgaiA8IGxpbWl0OyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0W2pdID0gdmFsdWVzW2lCbG9ja1N0YXJ0ICsgaiAtIGRlc3RdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdTaXplID0gbGltaXQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpbmRpY2VzW2ldID0gKGNoYXIpZGVzdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdG91Y2hlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgdGhlIGZpcnN0IHVudG91Y2hlZCBibG9jayB3ZSd2ZSBzZWVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlbWVtYmVyIGl0cyBpbmRleC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpVW50b3VjaGVkID0gKGNoYXIpakJsb2NrU3RhcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyB3ZSBhcmUgZG9uZSBjb21wYWN0aW5nLCBzbyBub3cgbWFrZSB0aGUgYXJyYXkgc2hvcnRlcgorICAgICAgICAgICAgY2hhcltdIHJlc3VsdCA9IG5ldyBjaGFyW25ld1NpemVdOworICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weSh0YXJnZXQsIDAsIHJlc3VsdCwgMCwgbmV3U2l6ZSk7CisgICAgICAgICAgICB2YWx1ZXMgPSByZXN1bHQ7CisgICAgICAgICAgICBpc0NvbXBhY3QgPSB0cnVlOworICAgICAgICAgICAgaGFzaGVzID0gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgaW50IEZpbmRPdmVybGFwcGluZ1Bvc2l0aW9uKGludCBzdGFydCwgY2hhcltdIHRlbXBWYWx1ZXMsIGludCB0ZW1wQ291bnQpCisgICAgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRlbXBDb3VudDsgaSArPSAxKSB7CisgICAgICAgICAgICBpbnQgY3VycmVudENvdW50ID0gQkxPQ0tDT1VOVDsKKyAgICAgICAgICAgIGlmIChpICsgQkxPQ0tDT1VOVCA+IHRlbXBDb3VudCkgeworICAgICAgICAgICAgICAgIGN1cnJlbnRDb3VudCA9IHRlbXBDb3VudCAtIGk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoYXJyYXlSZWdpb25NYXRjaGVzKHZhbHVlcywgc3RhcnQsIHRlbXBWYWx1ZXMsIGksIGN1cnJlbnRDb3VudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRlbXBDb3VudDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSB1dGlsaXR5IHRvIGNvbXBhcmUgdHdvIGFycmF5cyBvZiBkb3VibGVzLgorICAgICAqIEBwYXJhbSBsZW4gdGhlIGxlbmd0aCB0byBjb21wYXJlLgorICAgICAqIFRoZSBzdGFydCBpbmRpY2VzIGFuZCBzdGFydCtsZW4gbXVzdCBiZSB2YWxpZC4KKyAgICAgKi8KKyAgICBmaW5hbCBzdGF0aWMgYm9vbGVhbiBhcnJheVJlZ2lvbk1hdGNoZXMoY2hhcltdIHNvdXJjZSwgaW50IHNvdXJjZVN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyW10gdGFyZ2V0LCBpbnQgdGFyZ2V0U3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW4pCisgICAgeworICAgICAgICBpbnQgc291cmNlRW5kID0gc291cmNlU3RhcnQgKyBsZW47CisgICAgICAgIGludCBkZWx0YSA9IHRhcmdldFN0YXJ0IC0gc291cmNlU3RhcnQ7CisgICAgICAgIGZvciAoaW50IGkgPSBzb3VyY2VTdGFydDsgaSA8IHNvdXJjZUVuZDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoc291cmNlW2ldICE9IHRhcmdldFtpICsgZGVsdGFdKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbWVtYmVyIHRoYXQgYSBzcGVjaWZpZWQgYmxvY2sgd2FzICJ0b3VjaGVkIiwgaS5lLiBoYWQgYSB2YWx1ZSBzZXQuCisgICAgICogVW50b3VjaGVkIGJsb2NrcyBjYW4gYmUgc2tpcHBlZCB3aGVuIGNvbXBhY3RpbmcgdGhlIGFycmF5CisgICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHRvdWNoQmxvY2soaW50IGksIGludCB2YWx1ZSkgeworICAgICAgICBoYXNoZXNbaV0gPSAoaGFzaGVzW2ldICsgKHZhbHVlPDwxKSkgfCAxOworICAgIH0KKworICAgIC8qKgorICAgICAqIFF1ZXJ5IHdoZXRoZXIgYSBzcGVjaWZpZWQgYmxvY2sgd2FzICJ0b3VjaGVkIiwgaS5lLiBoYWQgYSB2YWx1ZSBzZXQuCisgICAgICogVW50b3VjaGVkIGJsb2NrcyBjYW4gYmUgc2tpcHBlZCB3aGVuIGNvbXBhY3RpbmcgdGhlIGFycmF5CisgICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIGJsb2NrVG91Y2hlZChpbnQgaSkgeworICAgICAgICByZXR1cm4gaGFzaGVzW2ldICE9IDA7CisgICAgfQorCisgICAgLyoqIEZvciBpbnRlcm5hbCB1c2Ugb25seS4gIERvIG5vdCBtb2RpZnkgdGhlIHJlc3VsdCwgdGhlIGJlaGF2aW9yIG9mCisgICAgICAqIG1vZGlmaWVkIHJlc3VsdHMgYXJlIHVuZGVmaW5lZC4KKyAgICAgICovCisgICAgcHVibGljIGNoYXJbXSBnZXRJbmRleEFycmF5KCkKKyAgICB7CisgICAgICAgIHJldHVybiBpbmRpY2VzOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZvciBpbnRlcm5hbCB1c2Ugb25seS4gIERvIG5vdCBtb2RpZnkgdGhlIHJlc3VsdCwgdGhlIGJlaGF2aW9yIG9mCisgICAgICogbW9kaWZpZWQgcmVzdWx0cyBhcmUgdW5kZWZpbmVkLgorICAgICAqLworICAgIHB1YmxpYyBjaGFyW10gZ2V0VmFsdWVBcnJheSgpCisgICAgeworICAgICAgICByZXR1cm4gdmFsdWVzOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBDbG9uZWFibGUKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGNsb25lKCkKKyAgICB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBDb21wYWN0Q2hhckFycmF5IG90aGVyID0gKENvbXBhY3RDaGFyQXJyYXkpIHN1cGVyLmNsb25lKCk7CisgICAgICAgICAgICBvdGhlci52YWx1ZXMgPSAoY2hhcltdKXZhbHVlcy5jbG9uZSgpOworICAgICAgICAgICAgb3RoZXIuaW5kaWNlcyA9IChjaGFyW10paW5kaWNlcy5jbG9uZSgpOworICAgICAgICAgICAgcmV0dXJuIG90aGVyOworICAgICAgICB9IGNhdGNoIChDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcGFyZXMgdGhlIGVxdWFsaXR5IG9mIHR3byBjb21wYWN0IGFycmF5IG9iamVjdHMuCisgICAgICogQHBhcmFtIG9iaiB0aGUgY29tcGFjdCBhcnJheSBvYmplY3QgdG8gYmUgY29tcGFyZWQgd2l0aCB0aGlzLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgY3VycmVudCBjb21wYWN0IGFycmF5IG9iamVjdCBpcyB0aGUgc2FtZQorICAgICAqIGFzIHRoZSBjb21wYWN0IGFycmF5IG9iamVjdCBvYmo7IGZhbHNlIG90aGVyd2lzZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikgeworICAgICAgICBpZiAob2JqID09IG51bGwpIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKHRoaXMgPT0gb2JqKSAgICAgICAgICAgICAgICAgICAgICAvLyBxdWljayBjaGVjaworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmIChnZXRDbGFzcygpICE9IG9iai5nZXRDbGFzcygpKSAgICAgICAgIC8vIHNhbWUgY2xhc3M/CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIENvbXBhY3RDaGFyQXJyYXkgb3RoZXIgPSAoQ29tcGFjdENoYXJBcnJheSkgb2JqOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IFVOSUNPREVDT1VOVDsgaSsrKSB7CisgICAgICAgICAgICAvLyBjb3VsZCBiZSBzcGVkIHVwIGxhdGVyCisgICAgICAgICAgICBpZiAoZWxlbWVudEF0KChjaGFyKWkpICE9IG90aGVyLmVsZW1lbnRBdCgoY2hhcilpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7IC8vIHdlIG1hZGUgaXQgdGhyb3VnaCB0aGUgZ3VhbnRsZXQuCisgICAgfQorCisgICAgLyoqCisgICAgICogR2VuZXJhdGVzIHRoZSBoYXNoIGNvZGUgZm9yIHRoZSBjb21wYWN0IGFycmF5IG9iamVjdAorICAgICAqLworICAgIHB1YmxpYyBpbnQgaGFzaENvZGUoKSB7CisgICAgICAgIGludCByZXN1bHQgPSAwOworICAgICAgICBpbnQgaW5jcmVtZW50ID0gTWF0aC5taW4oMywgdmFsdWVzLmxlbmd0aC8xNik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsdWVzLmxlbmd0aDsgaSs9IGluY3JlbWVudCkgeworICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogMzcgKyB2YWx1ZXNbaV07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKworICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gcHJpdmF0ZQorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBFeHBhbmRpbmcgdGFrZXMgdGhlIGFycmF5IGJhY2sgdG8gYSA2NTUzNiBlbGVtZW50IGFycmF5LgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBleHBhbmQoKQorICAgIHsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGlmIChpc0NvbXBhY3QpIHsKKyAgICAgICAgICAgIGNoYXJbXSB0ZW1wQXJyYXk7CisgICAgICAgICAgICB0ZW1wQXJyYXkgPSBuZXcgY2hhcltVTklDT0RFQ09VTlRdOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IFVOSUNPREVDT1VOVDsgKytpKSB7CisgICAgICAgICAgICAgICAgdGVtcEFycmF5W2ldID0gZWxlbWVudEF0KChjaGFyKWkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IElOREVYQ09VTlQ7ICsraSkgeworICAgICAgICAgICAgICAgIGluZGljZXNbaV0gPSAoY2hhcikoaTw8QkxPQ0tTSElGVCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YWx1ZXMgPSBudWxsOworICAgICAgICAgICAgdmFsdWVzID0gdGVtcEFycmF5OworICAgICAgICAgICAgaXNDb21wYWN0ID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3RhdGljICBmaW5hbCBpbnQgQkxPQ0tTSElGVCA9IDU7IC8vIE5vcm1hbGl6ZXJCdWlsZGVyIG5lZWRzIC0gbGl1CisgICAgc3RhdGljICBmaW5hbCBpbnQgQkxPQ0tDT1VOVCA9KDE8PEJMT0NLU0hJRlQpOworICAgIHN0YXRpYyAgZmluYWwgaW50IElOREVYU0hJRlQgPSgxNi1CTE9DS1NISUZUKTsKKyAgICBzdGF0aWMgIGZpbmFsIGludCBJTkRFWENPVU5UID0oMTw8SU5ERVhTSElGVCk7CisgICAgc3RhdGljICBmaW5hbCBpbnQgQkxPQ0tNQVNLID0gQkxPQ0tDT1VOVCAtIDE7CisKKyAgICBwcml2YXRlIGNoYXIgdmFsdWVzW107CisgICAgcHJpdmF0ZSBjaGFyIGluZGljZXNbXTsKKyAgICBwcml2YXRlIGludFtdIGhhc2hlczsKKyAgICBwcml2YXRlIGJvb2xlYW4gaXNDb21wYWN0OworICAgIGNoYXIgZGVmYXVsdFZhbHVlOworfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvRGF0ZVJ1bGUuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvRGF0ZVJ1bGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42ZmRmZGJhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9EYXRlUnVsZS5qYXZhCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvQXR0aWMvRGF0ZVJ1bGUuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwNDoxNzo1OCAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS51dGlsOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKKy8qKgorICogRGF0ZVJ1bGUgaXMgYW4gaW50ZXJmYWNlIGZvciBjYWxjdWxhdGluZyB0aGUgZGF0ZSBvZiBhbiBldmVudC4KKyAqIEl0IHN1cHBvcnRzIGJvdGggcmVjdXJyaW5nIGV2ZW50cyBhbmQgdGhvc2Ugd2hpY2ggb2NjdXIgb25seSBvbmNlLgorICogRGF0ZVJ1bGUgaXMgdXNlZnVsIGZvciBzdG9yaW5nIGluZm9ybWF0aW9uIGFib3V0IGhvbGlkYXlzLAorICogRGF5bGlnaHQgU2F2aW5ncyBUaW1lIHJ1bGVzLCBhbmQgb3RoZXIgZXZlbnRzIHN1Y2ggYXMgbWVldGluZ3MuCisgKgorICogQHNlZSBTaW1wbGVEYXRlUnVsZQorICovCitwdWJsaWMgaW50ZXJmYWNlIERhdGVSdWxlCit7CisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBmaXJzdCBvY2N1cnJhbmNlIG9mIHRoZSBldmVudCByZXByZXNlbnRlZCBieSB0aGlzIHJ1bGUKKyAgICAgKiB0aGF0IGlzIG9uIG9yIGFmdGVyIHRoZSBnaXZlbiBzdGFydCBkYXRlLgorICAgICAqCisgICAgICogQHBhcmFtIHN0YXJ0IE9ubHkgb2NjdXJyYW5jZXMgb24gb3IgYWZ0ZXIgdGhpcyBkYXRlIGFyZSByZXR1cm5lZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gICAgICBUaGUgZGF0ZSBvbiB3aGljaCB0aGlzIGV2ZW50IG9jY3Vycywgb3IgbnVsbCBpZiBpdAorICAgICAqICAgICAgICAgICAgICBkb2VzIG5vdCBvY2N1ciBvbiBvciBhZnRlciB0aGUgc3RhcnQgZGF0ZS4KKyAgICAgKgorICAgICAqIEBzZWUgI2ZpcnN0QmV0d2VlbgorICAgICAqLworICAgIGFic3RyYWN0IHB1YmxpYyBEYXRlICAgIGZpcnN0QWZ0ZXIoRGF0ZSBzdGFydCk7CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGZpcnN0IG9jY3VycmFuY2Ugb2YgdGhlIGV2ZW50IHJlcHJlc2VudGVkIGJ5IHRoaXMgcnVsZQorICAgICAqIHRoYXQgaXMgb24gb3IgYWZ0ZXIgdGhlIGdpdmVuIHN0YXJ0IGRhdGUgYW5kIGJlZm9yZSB0aGUgZ2l2ZW4KKyAgICAgKiBlbmQgZGF0ZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzdGFydCBPbmx5IG9jY3VycmFuY2VzIG9uIG9yIGFmdGVyIHRoaXMgZGF0ZSBhcmUgcmV0dXJuZWQuCisgICAgICogQHBhcmFtIGVuZCAgIE9ubHkgb2NjdXJyYW5jZXMgYmVmb3JlIHRoaXMgZGF0ZSBhcmUgcmV0dXJuZWQuCisgICAgICoKKyAgICAgKiBAcmV0dXJuICAgICAgVGhlIGRhdGUgb24gd2hpY2ggdGhpcyBldmVudCBvY2N1cnMsIG9yIG51bGwgaWYgaXQKKyAgICAgKiAgICAgICAgICAgICAgZG9lcyBub3Qgb2NjdXIgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZCBkYXRlcy4KKyAgICAgKgorICAgICAqIEBzZWUgI2ZpcnN0QWZ0ZXIKKyAgICAgKi8KKyAgICBhYnN0cmFjdCBwdWJsaWMgRGF0ZSAgICBmaXJzdEJldHdlZW4oRGF0ZSBzdGFydCwgRGF0ZSBlbmQpOworCisgICAgLyoqCisgICAgICogQ2hlY2tzIHdoZXRoZXIgdGhpcyBldmVudCBvY2N1cnMgb24gdGhlIGdpdmVuIGRhdGUuICBUaGlzIGRvZXMKKyAgICAgKiA8ZW0+bm90PC9lbT4gdGFrZSB0aW1lIG9mIGRheSBpbnRvIGFjY291bnQ7IGluc3RlYWQgaXQgY2hlY2tzCisgICAgICogd2hldGhlciB0aGlzIGV2ZW50IGFuZCB0aGUgZ2l2ZW4gZGF0ZSBhcmUgb24gdGhlIHNhbWUgZGF5LgorICAgICAqIFRoaXMgaXMgdXNlZnVsIGZvciBhcHBsaWNhdGlvbnMgc3VjaCBhcyBkZXRlcm1pbmluZyB3aGV0aGVyIGEgZ2l2ZW4KKyAgICAgKiBkYXkgaXMgYSBob2xpZGF5LgorICAgICAqCisgICAgICogQHBhcmFtIGRhdGUgIFRoZSBkYXRlIHRvIGNoZWNrLgorICAgICAqIEByZXR1cm4gICAgICB0cnVlIGlmIHRoaXMgZXZlbnQgb2NjdXJzIG9uIHRoZSBnaXZlbiBkYXRlLgorICAgICAqCisgICAgICovCisgICAgYWJzdHJhY3QgcHVibGljIGJvb2xlYW4gaXNPbihEYXRlIGRhdGUpOworCisgICAgLyoqCisgICAgICogQ2hlY2sgd2hldGhlciB0aGlzIGV2ZW50IG9jY3VycyBhdCBsZWFzdCBvbmNlIGJldHdlZW4gdGhlIHR3bworICAgICAqIGRhdGVzIGdpdmVuLgorICAgICAqLworICAgIGFic3RyYWN0IHB1YmxpYyBib29sZWFuIGlzQmV0d2VlbihEYXRlIHN0YXJ0LCBEYXRlIGVuZCk7Cit9OwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvRWFzdGVySG9saWRheS5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9FYXN0ZXJIb2xpZGF5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDZmYzYzOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvRWFzdGVySG9saWRheS5qYXZhCkBAIC0wLDAgKzEsMjc5IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL0F0dGljL0Vhc3RlckhvbGlkYXkuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wNS8xMiAyMzoyMDoxMCAkIAorICogJFJldmlzaW9uOiAxLjUgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS51dGlsOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgY29tLmlibS51dGlsLkdyZWdvcmlhbkNhbGVuZGFyOworaW1wb3J0IGNvbS5pYm0udXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBjb20uaWJtLnV0aWwuU2ltcGxlVGltZVpvbmU7CisKKy8qKgorICogQSBIb2xpZGF5IHN1YmNsYXNzIHdoaWNoIHJlcHJlc2VudHMgaG9saWRheXMgdGhhdCBvY2N1cgorICogYSBmaXhlZCBudW1iZXIgb2YgZGF5cyBiZWZvcmUgb3IgYWZ0ZXIgRWFzdGVyLiAgU3VwcG9ydHMgYm90aCB0aGUKKyAqIFdlc3Rlcm4gYW5kIE9ydGhvZG94IG1ldGhvZHMgZm9yIGNhbGN1bGF0aW5nIEVhc3Rlci4KKyAqCisgKi8KK3B1YmxpYyBjbGFzcyBFYXN0ZXJIb2xpZGF5IGV4dGVuZHMgSG9saWRheQoreworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIGhvbGlkYXkgdGhhdCBmYWxscyBvbiBFYXN0ZXIgU3VuZGF5IGV2ZXJ5IHllYXIKKyAgICAgKgorICAgICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBob2xpZGF5CisgICAgICovCisgICAgcHVibGljIEVhc3RlckhvbGlkYXkoU3RyaW5nIG5hbWUpCisgICAgeworICAgICAgICBzdXBlcihuYW1lLCBuZXcgRWFzdGVyUnVsZSgwLCBmYWxzZSkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIGhvbGlkYXkgdGhhdCBmYWxscyBhIHNwZWNpZmllZCBudW1iZXIgb2YgZGF5cyBiZWZvcmUKKyAgICAgKiBvciBhZnRlciBFYXN0ZXIgU3VuZGF5IGVhY2ggeWVhci4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXlzQWZ0ZXIgVGhlIG51bWJlciBvZiBkYXlzIGJlZm9yZSAoLSkgb3IgYWZ0ZXIgKCspIEVhc3RlcgorICAgICAqIEBwYXJhbSBuYW1lICAgICAgVGhlIG5hbWUgb2YgdGhlIGhvbGlkYXkKKyAgICAgKi8KKyAgICBwdWJsaWMgRWFzdGVySG9saWRheShpbnQgZGF5c0FmdGVyLCBTdHJpbmcgbmFtZSkKKyAgICB7CisgICAgICAgIHN1cGVyKG5hbWUsIG5ldyBFYXN0ZXJSdWxlKGRheXNBZnRlciwgZmFsc2UpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBob2xpZGF5IHRoYXQgZmFsbHMgYSBzcGVjaWZpZWQgbnVtYmVyIG9mIGRheXMgYmVmb3JlCisgICAgICogb3IgYWZ0ZXIgRWFzdGVyIFN1bmRheSBlYWNoIHllYXIsIHVzaW5nIGVpdGhlciB0aGUgV2VzdGVybgorICAgICAqIG9yIE9ydGhvZG94IGNhbGVuZGFyLgorICAgICAqCisgICAgICogQHBhcmFtIGRheXNBZnRlciBUaGUgbnVtYmVyIG9mIGRheXMgYmVmb3JlICgtKSBvciBhZnRlciAoKykgRWFzdGVyCisgICAgICogQHBhcmFtIG9ydGhvZG94ICBVc2UgdGhlIE9ydGhvZG94IGNhbGVuZGFyPworICAgICAqIEBwYXJhbSBuYW1lICAgICAgVGhlIG5hbWUgb2YgdGhlIGhvbGlkYXkKKyAgICAgKi8KKyAgICBwdWJsaWMgRWFzdGVySG9saWRheShpbnQgZGF5c0FmdGVyLCBib29sZWFuIG9ydGhvZG94LCBTdHJpbmcgbmFtZSkKKyAgICB7CisgICAgICAgIHN1cGVyKG5hbWUsIG5ldyBFYXN0ZXJSdWxlKGRheXNBZnRlciwgb3J0aG9kb3gpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTaHJvdmUgVHVlc2RheSwgYWthIE1hcmRpIEdyYXMsIDQ4IGRheXMgYmVmb3JlIEVhc3RlcgorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgRWFzdGVySG9saWRheSBTSFJPVkVfVFVFU0RBWSAgPSBuZXcgRWFzdGVySG9saWRheSgtNDgsICAgICJTaHJvdmUgVHVlc2RheSIpOworCisgICAgLyoqCisgICAgICogQXNoIFdlZG5lc2RheSwgc3RhcnQgb2YgTGVudCwgNDcgZGF5cyBiZWZvcmUgRWFzdGVyCisgICAgICovCisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBFYXN0ZXJIb2xpZGF5IEFTSF9XRURORVNEQVkgICA9IG5ldyBFYXN0ZXJIb2xpZGF5KC00NywgICAgIkFzaCBXZWRuZXNkYXkiKTsKKworICAgIC8qKgorICAgICAqIFBhbG0gU3VuZGF5LCA3IGRheXMgYmVmb3JlIEVhc3RlcgorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgRWFzdGVySG9saWRheSBQQUxNX1NVTkRBWSAgICAgPSBuZXcgRWFzdGVySG9saWRheSggLTcsICAgICJQYWxtIFN1bmRheSIpOworCisgICAgLyoqCisgICAgICogTWF1bmR5IFRodXJzZGF5LCAzIGRheXMgYmVmb3JlIEVhc3RlcgorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgRWFzdGVySG9saWRheSBNQVVORFlfVEhVUlNEQVkgPSBuZXcgRWFzdGVySG9saWRheSggLTMsICAgICJNYXVuZHkgVGh1cnNkYXkiKTsKKworICAgIC8qKgorICAgICAqIEdvb2QgRnJpZGF5LCAyIGRheXMgYmVmb3JlIEVhc3RlcgorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgRWFzdGVySG9saWRheSBHT09EX0ZSSURBWSAgICAgPSBuZXcgRWFzdGVySG9saWRheSggLTIsICAgICJHb29kIEZyaWRheSIpOworCisgICAgLyoqCisgICAgICogRWFzdGVyIFN1bmRheQorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgRWFzdGVySG9saWRheSBFQVNURVJfU1VOREFZICAgPSBuZXcgRWFzdGVySG9saWRheSggIDAsICAgICJFYXN0ZXIgU3VuZGF5Iik7CisKKyAgICAvKioKKyAgICAgKiBFYXN0ZXIgTW9uZGF5LCAxIGRheSBhZnRlciBFYXN0ZXIKKyAgICAgKi8KKyAgICBzdGF0aWMgcHVibGljIGZpbmFsIEVhc3RlckhvbGlkYXkgRUFTVEVSX01PTkRBWSAgID0gbmV3IEVhc3RlckhvbGlkYXkoICAxLCAgICAiRWFzdGVyIE1vbmRheSIpOworCisgICAgLyoqCisgICAgICogQXNjZW5zaW9uLCAzOSBkYXlzIGFmdGVyIEVhc3RlcgorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgRWFzdGVySG9saWRheSBBU0NFTlNJT04gICAgICAgPSBuZXcgRWFzdGVySG9saWRheSggMzksICAgICJBc2NlbnNpb24iKTsKKworICAgIC8qKgorICAgICAqIFBlbnRlY29zdCAoYWthIFdoaXQgU3VuZGF5KSwgNDkgZGF5cyBhZnRlciBFYXN0ZXIKKyAgICAgKi8KKyAgICBzdGF0aWMgcHVibGljIGZpbmFsIEVhc3RlckhvbGlkYXkgUEVOVEVDT1NUICAgICAgID0gbmV3IEVhc3RlckhvbGlkYXkoIDQ5LCAgICAiUGVudGVjb3N0Iik7CisKKyAgICAvKioKKyAgICAgKiBXaGl0IFN1bmRheSAoYWthIFBlbnRlY29zdCksIDQ5IGRheXMgYWZ0ZXIgRWFzdGVyCisgICAgICovCisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBFYXN0ZXJIb2xpZGF5IFdISVRfU1VOREFZICAgICA9IG5ldyBFYXN0ZXJIb2xpZGF5KCA0OSwgICAgIldoaXQgU3VuZGF5Iik7CisKKyAgICAvKioKKyAgICAgKiBXaGl0IE1vbmRheSwgNTAgZGF5cyBhZnRlciBFYXN0ZXIKKyAgICAgKi8KKyAgICBzdGF0aWMgcHVibGljIGZpbmFsIEVhc3RlckhvbGlkYXkgV0hJVF9NT05EQVkgICAgID0gbmV3IEVhc3RlckhvbGlkYXkoIDUwLCAgICAiV2hpdCBNb25kYXkiKTsKKworICAgIC8qKgorICAgICAqIENvcnB1cyBDaHJpc3RpLCA2MCBkYXlzIGFmdGVyIEVhc3RlcgorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgRWFzdGVySG9saWRheSBDT1JQVVNfQ0hSSVNUSSAgPSBuZXcgRWFzdGVySG9saWRheSggNjAsICAgICJDb3JwdXMgQ2hyaXN0aSIpOworfQorCitjbGFzcyBFYXN0ZXJSdWxlIGltcGxlbWVudHMgRGF0ZVJ1bGUgeworICAgIHB1YmxpYyBFYXN0ZXJSdWxlKGludCBkYXlzQWZ0ZXJFYXN0ZXIsIGJvb2xlYW4gaXNPcnRob2RveCkgeworICAgICAgICB0aGlzLmRheXNBZnRlckVhc3RlciA9IGRheXNBZnRlckVhc3RlcjsKKyAgICAgICAgaWYgKGlzT3J0aG9kb3gpIHsKKyAgICAgICAgICAgIG9ydGhvZG94LnNldEdyZWdvcmlhbkNoYW5nZShuZXcgRGF0ZShMb25nLk1BWF9WQUxVRSkpOworICAgICAgICAgICAgY2FsZW5kYXIgPSBvcnRob2RveDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgZmlyc3Qgb2NjdXJyYW5jZSBvZiB0aGlzIHJ1bGUgb24gb3IgYWZ0ZXIgdGhlIGdpdmVuIGRhdGUKKyAgICAgKi8KKyAgICBwdWJsaWMgRGF0ZSBmaXJzdEFmdGVyKERhdGUgc3RhcnQpCisgICAgeworICAgICAgICBpZiAoc3RhcnREYXRlICE9IG51bGwgJiYgc3RhcnQuYmVmb3JlKHN0YXJ0RGF0ZSkpIHsKKyAgICAgICAgICAgIHN0YXJ0ID0gc3RhcnREYXRlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBkb0ZpcnN0QmV0d2VlbihzdGFydCwgbnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBmaXJzdCBvY2N1cnJhbmNlIG9mIHRoaXMgcnVsZSBvbiBvciBhZnRlcgorICAgICAqIHRoZSBnaXZlbiBzdGFydCBkYXRlIGFuZCBiZWZvcmUgdGhlIGdpdmVuIGVuZCBkYXRlLgorICAgICAqLworICAgIHB1YmxpYyBEYXRlIGZpcnN0QmV0d2VlbihEYXRlIHN0YXJ0LCBEYXRlIGVuZCkKKyAgICB7CisgICAgICAgIC8vIFBpbiB0byB0aGUgbWluL21heCBkYXRlcyBmb3IgdGhpcyBydWxlCisgICAgICAgIGlmIChzdGFydERhdGUgIT0gbnVsbCAmJiBzdGFydC5iZWZvcmUoc3RhcnREYXRlKSkgeworICAgICAgICAgICAgc3RhcnQgPSBzdGFydERhdGU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRvRmlyc3RCZXR3ZWVuKHN0YXJ0LCBlbmQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0cnVlIGlmIHRoZSBnaXZlbiBEYXRlIGlzIG9uIHRoZSBzYW1lIGRheSBhcyBFYXN0ZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc09uKERhdGUgZGF0ZSkKKyAgICB7CisgICAgICAgIGlmIChzdGFydERhdGUgIT0gbnVsbCAmJiBkYXRlLmJlZm9yZShzdGFydERhdGUpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBzeW5jaHJvbml6ZWQoY2FsZW5kYXIpIHsKKyAgICAgICAgICAgIGNhbGVuZGFyLnNldFRpbWUoZGF0ZSk7CisgICAgICAgICAgICBpbnQgZGF5T2ZZZWFyID0gY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkRBWV9PRl9ZRUFSKTsKKworICAgICAgICAgICAgY2FsZW5kYXIuc2V0VGltZShjb21wdXRlSW5ZZWFyKGNhbGVuZGFyLmdldFRpbWUoKSwgY2FsZW5kYXIpKTsKKworICAgICAgICAgICAgcmV0dXJuIGNhbGVuZGFyLmdldChDYWxlbmRhci5EQVlfT0ZfWUVBUikgPT0gZGF5T2ZZZWFyOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgRWFzdGVyIG9jY3VycyBiZXR3ZWVuIHRoZSB0d28gZGF0ZXMgZ2l2ZW4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0JldHdlZW4oRGF0ZSBzdGFydCwgRGF0ZSBlbmQpCisgICAgeworICAgICAgICByZXR1cm4gZmlyc3RCZXR3ZWVuKHN0YXJ0LCBlbmQpICE9IG51bGw7IC8vIFRPRE86IG9wdGltaXplPworICAgIH0KKworICAgIHByaXZhdGUgRGF0ZSBkb0ZpcnN0QmV0d2VlbihEYXRlIHN0YXJ0LCBEYXRlIGVuZCkKKyAgICB7CisgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCJkb0ZpcnN0QmV0d2Vlbjogc3RhcnQgICA9ICIgKyBzdGFydC50b1N0cmluZygpKTsKKyAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oImRvRmlyc3RCZXR3ZWVuOiBlbmQgICAgID0gIiArIGVuZC50b1N0cmluZygpKTsKKworICAgICAgICBzeW5jaHJvbml6ZWQoY2FsZW5kYXIpIHsKKyAgICAgICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hlbiB0aGlzIGhvbGlkYXkgbGFuZHMgaW4gdGhlIGdpdmVuIHllYXIKKyAgICAgICAgICAgIERhdGUgcmVzdWx0ID0gY29tcHV0ZUluWWVhcihzdGFydCwgY2FsZW5kYXIpOworCisgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiICAgICAgICAgICAgICAgIHJlc3VsdCAgPSAiICsgcmVzdWx0LnRvU3RyaW5nKCkpOworCisgICAgICAgICAgICAvLyBXZSBtaWdodCBoYXZlIGdvdHRlbiBhIGRhdGUgdGhhdCdzIGluIHRoZSBzYW1lIHllYXIgYXMgInN0YXJ0IiwgYnV0CisgICAgICAgICAgICAvLyBlYXJsaWVyIGluIHRoZSB5ZWFyLiAgSWYgc28sIGdvIHRvIG5leHQgeWVhcgorICAgICAgICAgICAgaWYgKHJlc3VsdC5iZWZvcmUoc3RhcnQpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGNhbGVuZGFyLnNldFRpbWUoc3RhcnQpOworICAgICAgICAgICAgICAgIGNhbGVuZGFyLmdldChDYWxlbmRhci5ZRUFSKTsgICAgLy8gSkRLIDEuMS4yIGJ1ZyB3b3JrYXJvdW5kCisgICAgICAgICAgICAgICAgY2FsZW5kYXIuYWRkKENhbGVuZGFyLllFQVIsIDEpOworCisgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgICAgICAgICAgICBSZXN1bHQgYmVmb3JlIHN0YXJ0LCBnb2luZyB0byBuZXh0IHllYXI6ICIKKyAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICsgY2FsZW5kYXIuZ2V0VGltZSgpLnRvU3RyaW5nKCkpOworCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29tcHV0ZUluWWVhcihjYWxlbmRhci5nZXRUaW1lKCksIGNhbGVuZGFyKTsKKyAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiICAgICAgICAgICAgICAgIHJlc3VsdCAgPSAiICsgcmVzdWx0LnRvU3RyaW5nKCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZW5kICE9IG51bGwgJiYgcmVzdWx0LmFmdGVyKGVuZCkpIHsKKyAgICAgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiUmVzdWx0IGFmdGVyIGVuZCwgcmV0dXJuaW5nIG51bGwiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb21wdXRlIHRoZSBtb250aCBhbmQgZGF0ZSBvbiB3aGljaCB0aGlzIGhvbGlkYXkgZmFsbHMgaW4gdGhlIHllYXIKKyAgICAgKiBjb250YWluaW5nIHRoZSBkYXRlICJkYXRlIi4gIEZpcnN0IGZpZ3VyZSBvdXQgd2hpY2ggZGF0ZSBFYXN0ZXIKKyAgICAgKiBsYW5kcyBvbiBpbiB0aGlzIHllYXIsIGFuZCB0aGVuIGFkZCB0aGUgb2Zmc2V0IGZvciB0aGlzIGhvbGlkYXkgdG8gZ2V0CisgICAgICogdGhlIHJpZ2h0IGRhdGUuCisgICAgICogPHA+CisgICAgICogVGhlIGFsZ29yaXRobSBoZXJlIGlzIHRha2VuIGZyb20gdGhlCisgICAgICogPGEgaHJlZj1odHRwOi8vd3d3LnBpcC5ka25ldC5kay9+cGlwMTAxNjAvY2FsZW5kYXIuaHRtbD5DYWxlbmRhciBGQVEsCisgICAgICogdmVyc2lvbiAxLjc8L2E+CisgICAgICovCisgICAgcHJpdmF0ZSBEYXRlIGNvbXB1dGVJblllYXIoRGF0ZSBkYXRlLCBHcmVnb3JpYW5DYWxlbmRhciBjYWwpCisgICAgeworICAgICAgICBpZiAoY2FsID09IG51bGwpIGNhbCA9IGNhbGVuZGFyOworCisgICAgICAgIHN5bmNocm9uaXplZChjYWwpIHsKKyAgICAgICAgICAgIGNhbC5zZXRUaW1lKGRhdGUpOworCisgICAgICAgICAgICBpbnQgeWVhciA9IGNhbC5nZXQoQ2FsZW5kYXIuWUVBUik7CisgICAgICAgICAgICBpbnQgZyA9IHllYXIgJSAxOTsgIC8vICJHb2xkZW4gTnVtYmVyIiBvZiB5ZWFyIC0gMQorICAgICAgICAgICAgaW50IGkgPSAwOyAgICAgICAgICAvLyAjIG9mIGRheXMgZnJvbSAzLzIxIHRvIHRoZSBQYXNjaGFsIGZ1bGwgbW9vbgorICAgICAgICAgICAgaW50IGogPSAwOyAgICAgICAgICAvLyBXZWVrZGF5ICgwLWJhc2VkKSBvZiBQYXNjaGFsIGZ1bGwgbW9vbgorCisgICAgICAgICAgICBpZiAoY2FsLmdldFRpbWUoKS5hZnRlciggY2FsLmdldEdyZWdvcmlhbkNoYW5nZSgpKSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBXZSdyZSBwYXN0IHRoZSBHcmVnb3JpYW4gc3dpdGNob3Zlciwgc28gdXNlIHRoZSBHcmVnb3JpYW4gcnVsZXMuCisgICAgICAgICAgICAgICAgaW50IGMgPSB5ZWFyIC8gMTAwOworICAgICAgICAgICAgICAgIGludCBoID0gKGMgLSBjLzQgLSAoOCpjKzEzKS8yNSArIDE5KmcgKyAxNSkgJSAzMDsKKyAgICAgICAgICAgICAgICBpID0gaCAtIChoLzI4KSooMSAtIChoLzI4KSooMjkvKGgrMSkpKigoMjEtZykvMTEpKTsKKyAgICAgICAgICAgICAgICBqID0gKHllYXIgKyB5ZWFyLzQgKyBpICsgMiAtIGMgKyBjLzQpICUgNzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAvLyBVc2UgdGhlIG9sZCBKdWxpYW4gcnVsZXMuCisgICAgICAgICAgICAgICAgaSA9ICgxOSpnICsgMTUpICUgMzA7CisgICAgICAgICAgICAgICAgaiA9ICh5ZWFyICsgeWVhci80ICsgaSkgJSA3OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaW50IGwgPSBpIC0gajsKKyAgICAgICAgICAgIGludCBtID0gMyArIChsKzQwKS80NDsgICAgICAgICAgICAgIC8vIDEtYmFzZWQgbW9udGggaW4gd2hpY2ggRWFzdGVyIGZhbGxzCisgICAgICAgICAgICBpbnQgZCA9IGwgKyAyOCAtIDMxKihtLzQpOyAgICAgICAgICAvLyBEYXRlIG9mIEVhc3RlciB3aXRoaW4gdGhhdCBtb250aAorCisgICAgICAgICAgICBjYWwuY2xlYXIoKTsKKyAgICAgICAgICAgIGNhbC5zZXQoQ2FsZW5kYXIuRVJBLCBHcmVnb3JpYW5DYWxlbmRhci5BRCk7CisgICAgICAgICAgICBjYWwuc2V0KENhbGVuZGFyLllFQVIsIHllYXIpOworICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5NT05USCwgbS0xKTsgICAgICAgLy8gMC1iYXNlZAorICAgICAgICAgICAgY2FsLnNldChDYWxlbmRhci5EQVRFLCBkKTsKKyAgICAgICAgICAgIGNhbC5nZXRUaW1lKCk7ICAgICAgICAgICAgICAgICAgICAgIC8vIEpESyAxLjEuMiBidWcgd29ya2Fyb3VuZAorICAgICAgICAgICAgY2FsLmFkZChDYWxlbmRhci5EQVRFLCBkYXlzQWZ0ZXJFYXN0ZXIpOworCisgICAgICAgICAgICByZXR1cm4gY2FsLmdldFRpbWUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBHcmVnb3JpYW5DYWxlbmRhciBncmVnb3JpYW4gPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIobmV3IFNpbXBsZVRpbWVab25lKDAsICJVVEMiKSk7CisgICAgc3RhdGljIEdyZWdvcmlhbkNhbGVuZGFyIG9ydGhvZG94ID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKG5ldyBTaW1wbGVUaW1lWm9uZSgwLCAiVVRDIikpOworCisgICAgaW50ICAgICAgICAgICAgICAgZGF5c0FmdGVyRWFzdGVyOworICAgIERhdGUgICAgICAgICAgICAgIHN0YXJ0RGF0ZSA9IG51bGw7CisgICAgR3JlZ29yaWFuQ2FsZW5kYXIgY2FsZW5kYXIgPSBncmVnb3JpYW47CisKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvR3JlZ29yaWFuQ2FsZW5kYXIuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvR3JlZ29yaWFuQ2FsZW5kYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43ZjY5MTNiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9HcmVnb3JpYW5DYWxlbmRhci5qYXZhCkBAIC0wLDAgKzEsOTI4IEBACisvKgorICogQCgjKUdyZWdvcmlhbkNhbGVuZGFyLmphdmEJMS41MiA5OS8xMS8yMworICoKKyAqIChDKSBDb3B5cmlnaHQgVGFsaWdlbnQsIEluYy4gMTk5Ni0xOTk4IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZAorICogKEMpIENvcHlyaWdodCBJQk0gQ29ycC4gMTk5Ni0xOTk4IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZAorICoKKyAqIFBvcnRpb25zIGNvcHlyaWdodCAoYykgMTk5Ni0xOTk4IFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAgIFRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoaXMgc291cmNlIGNvZGUgYW5kIGRvY3VtZW50YXRpb24gaXMgY29weXJpZ2h0ZWQKKyAqIGFuZCBvd25lZCBieSBUYWxpZ2VudCwgSW5jLiwgYSB3aG9sbHktb3duZWQgc3Vic2lkaWFyeSBvZiBJQk0uIFRoZXNlCisgKiBtYXRlcmlhbHMgYXJlIHByb3ZpZGVkIHVuZGVyIHRlcm1zIG9mIGEgTGljZW5zZSBBZ3JlZW1lbnQgYmV0d2VlbiBUYWxpZ2VudAorICogYW5kIFN1bi4gVGhpcyB0ZWNobm9sb2d5IGlzIHByb3RlY3RlZCBieSBtdWx0aXBsZSBVUyBhbmQgSW50ZXJuYXRpb25hbAorICogcGF0ZW50cy4gVGhpcyBub3RpY2UgYW5kIGF0dHJpYnV0aW9uIHRvIFRhbGlnZW50IG1heSBub3QgYmUgcmVtb3ZlZC4KKyAqICAgVGFsaWdlbnQgaXMgYSByZWdpc3RlcmVkIHRyYWRlbWFyayBvZiBUYWxpZ2VudCwgSW5jLgorICoKKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUKKyAqIGFuZCBpdHMgZG9jdW1lbnRhdGlvbiBmb3IgTk9OLUNPTU1FUkNJQUwgcHVycG9zZXMgYW5kIHdpdGhvdXQKKyAqIGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCBwcm92aWRlZCB0aGF0IHRoaXMgY29weXJpZ2h0IG5vdGljZQorICogYXBwZWFycyBpbiBhbGwgY29waWVzLiBQbGVhc2UgcmVmZXIgdG8gdGhlIGZpbGUgImNvcHlyaWdodC5odG1sIgorICogZm9yIGZ1cnRoZXIgaW1wb3J0YW50IGNvcHlyaWdodCBhbmQgbGljZW5zaW5nIGluZm9ybWF0aW9uLgorICoKKyAqIFNVTiBNQUtFUyBOTyBSRVBSRVNFTlRBVElPTlMgT1IgV0FSUkFOVElFUyBBQk9VVCBUSEUgU1VJVEFCSUxJVFkgT0YKKyAqIFRIRSBTT0ZUV0FSRSwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRAorICogVE8gVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEKKyAqIFBBUlRJQ1VMQVIgUFVSUE9TRSwgT1IgTk9OLUlORlJJTkdFTUVOVC4gU1VOIFNIQUxMIE5PVCBCRSBMSUFCTEUgRk9SCisgKiBBTlkgREFNQUdFUyBTVUZGRVJFRCBCWSBMSUNFTlNFRSBBUyBBIFJFU1VMVCBPRiBVU0lORywgTU9ESUZZSU5HIE9SCisgKiBESVNUUklCVVRJTkcgVEhJUyBTT0ZUV0FSRSBPUiBJVFMgREVSSVZBVElWRVMuCisgKgorICovCisKK3BhY2thZ2UgY29tLmlibS51dGlsOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisKKy8qKgorICogPGNvZGU+R3JlZ29yaWFuQ2FsZW5kYXI8L2NvZGU+IGlzIGEgY29uY3JldGUgc3ViY2xhc3Mgb2YKKyAqIHtAbGluayBDYWxlbmRhcn0KKyAqIGFuZCBwcm92aWRlcyB0aGUgc3RhbmRhcmQgY2FsZW5kYXIgdXNlZCBieSBtb3N0IG9mIHRoZSB3b3JsZC4KKyAqCisgKiA8cD4KKyAqIFRoZSBzdGFuZGFyZCAoR3JlZ29yaWFuKSBjYWxlbmRhciBoYXMgMiBlcmFzLCBCQyBhbmQgQUQuCisgKgorICogPHA+CisgKiBUaGlzIGltcGxlbWVudGF0aW9uIGhhbmRsZXMgYSBzaW5nbGUgZGlzY29udGludWl0eSwgd2hpY2ggY29ycmVzcG9uZHMgYnkKKyAqIGRlZmF1bHQgdG8gdGhlIGRhdGUgdGhlIEdyZWdvcmlhbiBjYWxlbmRhciB3YXMgaW5zdGl0dXRlZCAoT2N0b2JlciAxNSwgMTU4MgorICogaW4gc29tZSBjb3VudHJpZXMsIGxhdGVyIGluIG90aGVycykuICBUaGUgY3V0b3ZlciBkYXRlIG1heSBiZSBjaGFuZ2VkIGJ5IHRoZQorICogY2FsbGVyIGJ5IGNhbGxpbmcgPGNvZGU+c2V0R3JlZ29yaWFuQ2hhbmdlKCk8L2NvZGU+LgorICoKKyAqIDxwPgorICogSGlzdG9yaWNhbGx5LCBpbiB0aG9zZSBjb3VudHJpZXMgd2hpY2ggYWRvcHRlZCB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyIGZpcnN0LAorICogT2N0b2JlciA0LCAxNTgyIHdhcyB0aHVzIGZvbGxvd2VkIGJ5IE9jdG9iZXIgMTUsIDE1ODIuIFRoaXMgY2FsZW5kYXIgbW9kZWxzCisgKiB0aGlzIGNvcnJlY3RseS4gIEJlZm9yZSB0aGUgR3JlZ29yaWFuIGN1dG92ZXIsIDxjb2RlPkdyZWdvcmlhbkNhbGVuZGFyPC9jb2RlPgorICogaW1wbGVtZW50cyB0aGUgSnVsaWFuIGNhbGVuZGFyLiAgVGhlIG9ubHkgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBHcmVnb3JpYW4KKyAqIGFuZCB0aGUgSnVsaWFuIGNhbGVuZGFyIGlzIHRoZSBsZWFwIHllYXIgcnVsZS4gVGhlIEp1bGlhbiBjYWxlbmRhciBzcGVjaWZpZXMKKyAqIGxlYXAgeWVhcnMgZXZlcnkgZm91ciB5ZWFycywgd2hlcmVhcyB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyIG9taXRzIGNlbnR1cnkKKyAqIHllYXJzIHdoaWNoIGFyZSBub3QgZGl2aXNpYmxlIGJ5IDQwMC4KKyAqCisgKiA8cD4KKyAqIDxjb2RlPkdyZWdvcmlhbkNhbGVuZGFyPC9jb2RlPiBpbXBsZW1lbnRzIDxlbT5wcm9sZXB0aWM8L2VtPiBHcmVnb3JpYW4gYW5kCisgKiBKdWxpYW4gY2FsZW5kYXJzLiBUaGF0IGlzLCBkYXRlcyBhcmUgY29tcHV0ZWQgYnkgZXh0cmFwb2xhdGluZyB0aGUgY3VycmVudAorICogcnVsZXMgaW5kZWZpbml0ZWx5IGZhciBiYWNrd2FyZCBhbmQgZm9yd2FyZCBpbiB0aW1lLiBBcyBhIHJlc3VsdCwKKyAqIDxjb2RlPkdyZWdvcmlhbkNhbGVuZGFyPC9jb2RlPiBtYXkgYmUgdXNlZCBmb3IgYWxsIHllYXJzIHRvIGdlbmVyYXRlCisgKiBtZWFuaW5nZnVsIGFuZCBjb25zaXN0ZW50IHJlc3VsdHMuIEhvd2V2ZXIsIGRhdGVzIG9idGFpbmVkIHVzaW5nCisgKiA8Y29kZT5HcmVnb3JpYW5DYWxlbmRhcjwvY29kZT4gYXJlIGhpc3RvcmljYWxseSBhY2N1cmF0ZSBvbmx5IGZyb20gTWFyY2ggMSwgNAorICogQUQgb253YXJkLCB3aGVuIG1vZGVybiBKdWxpYW4gY2FsZW5kYXIgcnVsZXMgd2VyZSBhZG9wdGVkLiAgQmVmb3JlIHRoaXMgZGF0ZSwKKyAqIGxlYXAgeWVhciBydWxlcyB3ZXJlIGFwcGxpZWQgaXJyZWd1bGFybHksIGFuZCBiZWZvcmUgNDUgQkMgdGhlIEp1bGlhbgorICogY2FsZW5kYXIgZGlkIG5vdCBldmVuIGV4aXN0LgorICoKKyAqIDxwPgorICogUHJpb3IgdG8gdGhlIGluc3RpdHV0aW9uIG9mIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIsIE5ldyBZZWFyJ3MgRGF5IHdhcworICogTWFyY2ggMjUuIFRvIGF2b2lkIGNvbmZ1c2lvbiwgdGhpcyBjYWxlbmRhciBhbHdheXMgdXNlcyBKYW51YXJ5IDEuIEEgbWFudWFsCisgKiBhZGp1c3RtZW50IG1heSBiZSBtYWRlIGlmIGRlc2lyZWQgZm9yIGRhdGVzIHRoYXQgYXJlIHByaW9yIHRvIHRoZSBHcmVnb3JpYW4KKyAqIGNoYW5nZW92ZXIgYW5kIHdoaWNoIGZhbGwgYmV0d2VlbiBKYW51YXJ5IDEgYW5kIE1hcmNoIDI0LgorICoKKyAqIDxwPlZhbHVlcyBjYWxjdWxhdGVkIGZvciB0aGUgPGNvZGU+V0VFS19PRl9ZRUFSPC9jb2RlPiBmaWVsZCByYW5nZSBmcm9tIDEgdG8KKyAqIDUzLiAgV2VlayAxIGZvciBhIHllYXIgaXMgdGhlIGVhcmxpZXN0IHNldmVuIGRheSBwZXJpb2Qgc3RhcnRpbmcgb24KKyAqIDxjb2RlPmdldEZpcnN0RGF5T2ZXZWVrKCk8L2NvZGU+IHRoYXQgY29udGFpbnMgYXQgbGVhc3QKKyAqIDxjb2RlPmdldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsoKTwvY29kZT4gZGF5cyBmcm9tIHRoYXQgeWVhci4gIEl0IHRodXMKKyAqIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiA8Y29kZT5nZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrKCk8L2NvZGU+LAorICogPGNvZGU+Z2V0Rmlyc3REYXlPZldlZWsoKTwvY29kZT4sIGFuZCB0aGUgZGF5IG9mIHRoZSB3ZWVrIG9mIEphbnVhcnkgMS4KKyAqIFdlZWtzIGJldHdlZW4gd2VlayAxIG9mIG9uZSB5ZWFyIGFuZCB3ZWVrIDEgb2YgdGhlIGZvbGxvd2luZyB5ZWFyIGFyZQorICogbnVtYmVyZWQgc2VxdWVudGlhbGx5IGZyb20gMiB0byA1MiBvciA1MyAoYXMgbmVlZGVkKS4KKworICogPHA+Rm9yIGV4YW1wbGUsIEphbnVhcnkgMSwgMTk5OCB3YXMgYSBUaHVyc2RheS4gIElmCisgKiA8Y29kZT5nZXRGaXJzdERheU9mV2VlaygpPC9jb2RlPiBpcyA8Y29kZT5NT05EQVk8L2NvZGU+IGFuZAorICogPGNvZGU+Z2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpPC9jb2RlPiBpcyA0ICh0aGVzZSBhcmUgdGhlIHZhbHVlcworICogcmVmbGVjdGluZyBJU08gODYwMSBhbmQgbWFueSBuYXRpb25hbCBzdGFuZGFyZHMpLCB0aGVuIHdlZWsgMSBvZiAxOTk4IHN0YXJ0cworICogb24gRGVjZW1iZXIgMjksIDE5OTcsIGFuZCBlbmRzIG9uIEphbnVhcnkgNCwgMTk5OC4gIElmLCBob3dldmVyLAorICogPGNvZGU+Z2V0Rmlyc3REYXlPZldlZWsoKTwvY29kZT4gaXMgPGNvZGU+U1VOREFZPC9jb2RlPiwgdGhlbiB3ZWVrIDEgb2YgMTk5OAorICogc3RhcnRzIG9uIEphbnVhcnkgNCwgMTk5OCwgYW5kIGVuZHMgb24gSmFudWFyeSAxMCwgMTk5ODsgdGhlIGZpcnN0IHRocmVlIGRheXMKKyAqIG9mIDE5OTggdGhlbiBhcmUgcGFydCBvZiB3ZWVrIDUzIG9mIDE5OTcuCisgKgorICogPHA+VmFsdWVzIGNhbGN1bGF0ZWQgZm9yIHRoZSA8Y29kZT5XRUVLX09GX01PTlRIPC9jb2RlPiBmaWVsZCByYW5nZSBmcm9tIDAgb3IKKyAqIDEgdG8gNCBvciA1LiAgV2VlayAxIG9mIGEgbW9udGggKHRoZSBkYXlzIHdpdGggPGNvZGU+V0VFS19PRl9NT05USCA9CisgKiAxPC9jb2RlPikgaXMgdGhlIGVhcmxpZXN0IHNldCBvZiBhdCBsZWFzdAorICogPGNvZGU+Z2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpPC9jb2RlPiBjb250aWd1b3VzIGRheXMgaW4gdGhhdCBtb250aCwKKyAqIGVuZGluZyBvbiB0aGUgZGF5IGJlZm9yZSA8Y29kZT5nZXRGaXJzdERheU9mV2VlaygpPC9jb2RlPi4gIFVubGlrZQorICogd2VlayAxIG9mIGEgeWVhciwgd2VlayAxIG9mIGEgbW9udGggbWF5IGJlIHNob3J0ZXIgdGhhbiA3IGRheXMsIG5lZWQKKyAqIG5vdCBzdGFydCBvbiA8Y29kZT5nZXRGaXJzdERheU9mV2VlaygpPC9jb2RlPiwgYW5kIHdpbGwgbm90IGluY2x1ZGUgZGF5cyBvZgorICogdGhlIHByZXZpb3VzIG1vbnRoLiAgRGF5cyBvZiBhIG1vbnRoIGJlZm9yZSB3ZWVrIDEgaGF2ZSBhCisgKiA8Y29kZT5XRUVLX09GX01PTlRIPC9jb2RlPiBvZiAwLgorICoKKyAqIDxwPkZvciBleGFtcGxlLCBpZiA8Y29kZT5nZXRGaXJzdERheU9mV2VlaygpPC9jb2RlPiBpcyA8Y29kZT5TVU5EQVk8L2NvZGU+CisgKiBhbmQgPGNvZGU+Z2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpPC9jb2RlPiBpcyA0LCB0aGVuIHRoZSBmaXJzdCB3ZWVrIG9mCisgKiBKYW51YXJ5IDE5OTggaXMgU3VuZGF5LCBKYW51YXJ5IDQgdGhyb3VnaCBTYXR1cmRheSwgSmFudWFyeSAxMC4gIFRoZXNlIGRheXMKKyAqIGhhdmUgYSA8Y29kZT5XRUVLX09GX01PTlRIPC9jb2RlPiBvZiAxLiAgVGh1cnNkYXksIEphbnVhcnkgMSB0aHJvdWdoCisgKiBTYXR1cmRheSwgSmFudWFyeSAzIGhhdmUgYSA8Y29kZT5XRUVLX09GX01PTlRIPC9jb2RlPiBvZiAwLiAgSWYKKyAqIDxjb2RlPmdldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsoKTwvY29kZT4gaXMgY2hhbmdlZCB0byAzLCB0aGVuIEphbnVhcnkgMQorICogdGhyb3VnaCBKYW51YXJ5IDMgaGF2ZSBhIDxjb2RlPldFRUtfT0ZfTU9OVEg8L2NvZGU+IG9mIDEuCisgKgorICogPHA+CisgKiA8c3Ryb25nPkV4YW1wbGU6PC9zdHJvbmc+CisgKiA8YmxvY2txdW90ZT4KKyAqIDxwcmU+CisgKiAvLyBnZXQgdGhlIHN1cHBvcnRlZCBpZHMgZm9yIEdNVC0wODowMCAoUGFjaWZpYyBTdGFuZGFyZCBUaW1lKQorICogU3RyaW5nW10gaWRzID0gVGltZVpvbmUuZ2V0QXZhaWxhYmxlSURzKC04ICogNjAgKiA2MCAqIDEwMDApOworICogLy8gaWYgbm8gaWRzIHdlcmUgcmV0dXJuZWQsIHNvbWV0aGluZyBpcyB3cm9uZy4gZ2V0IG91dC4KKyAqIGlmIChpZHMubGVuZ3RoID09IDApCisgKiAgICAgU3lzdGVtLmV4aXQoMCk7CisgKgorICogIC8vIGJlZ2luIG91dHB1dAorICogU3lzdGVtLm91dC5wcmludGxuKCJDdXJyZW50IFRpbWUiKTsKKyAqCisgKiAvLyBjcmVhdGUgYSBQYWNpZmljIFN0YW5kYXJkIFRpbWUgdGltZSB6b25lCisgKiBTaW1wbGVUaW1lWm9uZSBwZHQgPSBuZXcgU2ltcGxlVGltZVpvbmUoLTggKiA2MCAqIDYwICogMTAwMCwgaWRzWzBdKTsKKyAqCisgKiAvLyBzZXQgdXAgcnVsZXMgZm9yIGRheWxpZ2h0IHNhdmluZ3MgdGltZQorICogcGR0LnNldFN0YXJ0UnVsZShDYWxlbmRhci5BUFJJTCwgMSwgQ2FsZW5kYXIuU1VOREFZLCAyICogNjAgKiA2MCAqIDEwMDApOworICogcGR0LnNldEVuZFJ1bGUoQ2FsZW5kYXIuT0NUT0JFUiwgLTEsIENhbGVuZGFyLlNVTkRBWSwgMiAqIDYwICogNjAgKiAxMDAwKTsKKyAqCisgKiAvLyBjcmVhdGUgYSBHcmVnb3JpYW5DYWxlbmRhciB3aXRoIHRoZSBQYWNpZmljIERheWxpZ2h0IHRpbWUgem9uZQorICogLy8gYW5kIHRoZSBjdXJyZW50IGRhdGUgYW5kIHRpbWUKKyAqIENhbGVuZGFyIGNhbGVuZGFyID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKHBkdCk7CisgKiBEYXRlIHRyaWFsVGltZSA9IG5ldyBEYXRlKCk7CisgKiBjYWxlbmRhci5zZXRUaW1lKHRyaWFsVGltZSk7CisgKgorICogLy8gcHJpbnQgb3V0IGEgYnVuY2ggb2YgaW50ZXJlc3RpbmcgdGhpbmdzCisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIkVSQTogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5FUkEpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiWUVBUjogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5ZRUFSKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIk1PTlRIOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLk1PTlRIKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIldFRUtfT0ZfWUVBUjogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5XRUVLX09GX1lFQVIpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiV0VFS19PRl9NT05USDogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5XRUVLX09GX01PTlRIKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIkRBVEU6ICIgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuREFURSkpOworICogU3lzdGVtLm91dC5wcmludGxuKCJEQVlfT0ZfTU9OVEg6ICIgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuREFZX09GX01PTlRIKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIkRBWV9PRl9ZRUFSOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkRBWV9PRl9ZRUFSKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIkRBWV9PRl9XRUVLOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIkRBWV9PRl9XRUVLX0lOX01PTlRIOiAiCisgKiAgICAgICAgICAgICAgICAgICAgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuREFZX09GX1dFRUtfSU5fTU9OVEgpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiQU1fUE06ICIgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuQU1fUE0pKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiSE9VUjogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5IT1VSKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIkhPVVJfT0ZfREFZOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIk1JTlVURTogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5NSU5VVEUpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiU0VDT05EOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLlNFQ09ORCkpOworICogU3lzdGVtLm91dC5wcmludGxuKCJNSUxMSVNFQ09ORDogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5NSUxMSVNFQ09ORCkpOworICogU3lzdGVtLm91dC5wcmludGxuKCJaT05FX09GRlNFVDogIgorICogICAgICAgICAgICAgICAgICAgICsgKGNhbGVuZGFyLmdldChDYWxlbmRhci5aT05FX09GRlNFVCkvKDYwKjYwKjEwMDApKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIkRTVF9PRkZTRVQ6ICIKKyAqICAgICAgICAgICAgICAgICAgICArIChjYWxlbmRhci5nZXQoQ2FsZW5kYXIuRFNUX09GRlNFVCkvKDYwKjYwKjEwMDApKSk7CisKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiQ3VycmVudCBUaW1lLCB3aXRoIGhvdXIgcmVzZXQgdG8gMyIpOworICogY2FsZW5kYXIuY2xlYXIoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpOyAvLyBzbyBkb2Vzbid0IG92ZXJyaWRlCisgKiBjYWxlbmRhci5zZXQoQ2FsZW5kYXIuSE9VUiwgMyk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIkVSQTogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5FUkEpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiWUVBUjogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5ZRUFSKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIk1PTlRIOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLk1PTlRIKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIldFRUtfT0ZfWUVBUjogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5XRUVLX09GX1lFQVIpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiV0VFS19PRl9NT05USDogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5XRUVLX09GX01PTlRIKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIkRBVEU6ICIgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuREFURSkpOworICogU3lzdGVtLm91dC5wcmludGxuKCJEQVlfT0ZfTU9OVEg6ICIgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuREFZX09GX01PTlRIKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIkRBWV9PRl9ZRUFSOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkRBWV9PRl9ZRUFSKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIkRBWV9PRl9XRUVLOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIkRBWV9PRl9XRUVLX0lOX01PTlRIOiAiCisgKiAgICAgICAgICAgICAgICAgICAgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuREFZX09GX1dFRUtfSU5fTU9OVEgpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiQU1fUE06ICIgKyBjYWxlbmRhci5nZXQoQ2FsZW5kYXIuQU1fUE0pKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiSE9VUjogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5IT1VSKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIkhPVVJfT0ZfREFZOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZKSk7CisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIk1JTlVURTogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5NSU5VVEUpKTsKKyAqIFN5c3RlbS5vdXQucHJpbnRsbigiU0VDT05EOiAiICsgY2FsZW5kYXIuZ2V0KENhbGVuZGFyLlNFQ09ORCkpOworICogU3lzdGVtLm91dC5wcmludGxuKCJNSUxMSVNFQ09ORDogIiArIGNhbGVuZGFyLmdldChDYWxlbmRhci5NSUxMSVNFQ09ORCkpOworICogU3lzdGVtLm91dC5wcmludGxuKCJaT05FX09GRlNFVDogIgorICogICAgICAgICsgKGNhbGVuZGFyLmdldChDYWxlbmRhci5aT05FX09GRlNFVCkvKDYwKjYwKjEwMDApKSk7IC8vIGluIGhvdXJzCisgKiBTeXN0ZW0ub3V0LnByaW50bG4oIkRTVF9PRkZTRVQ6ICIKKyAqICAgICAgICArIChjYWxlbmRhci5nZXQoQ2FsZW5kYXIuRFNUX09GRlNFVCkvKDYwKjYwKjEwMDApKSk7IC8vIGluIGhvdXJzCisgKiA8L3ByZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqCisgKiBAc2VlICAgICAgICAgIENhbGVuZGFyCisgKiBAc2VlICAgICAgICAgIFRpbWVab25lCisgKiBAdmVyc2lvbiAgICAgIDEuNTIKKyAqIEBhdXRob3IgRGF2aWQgR29sZHNtaXRoLCBNYXJrIERhdmlzLCBDaGVuLUxpZWggSHVhbmcsIEFsYW4gTGl1CisgKiBAc2luY2UgSkRLMS4xCisgKi8KK3B1YmxpYyBjbGFzcyBHcmVnb3JpYW5DYWxlbmRhciBleHRlbmRzIENhbGVuZGFyIHsKKyAgICAvKgorICAgICAqIEltcGxlbWVudGF0aW9uIE5vdGVzCisgICAgICoKKyAgICAgKiBUaGUgSnVsaWFuIGRheSBudW1iZXIsIGFzIHVzZWQgaGVyZSwgaXMgYSBtb2RpZmllZCBudW1iZXIgd2hpY2ggaGFzIGl0cworICAgICAqIG9uc2V0IGF0IG1pZG5pZ2h0LCByYXRoZXIgdGhhbiBub29uLgorICAgICAqCisgICAgICogVGhlIGVwb2NoIGlzIHRoZSBudW1iZXIgb2YgZGF5cyBvciBtaWxsaXNlY29uZHMgZnJvbSBzb21lIGRlZmluZWQKKyAgICAgKiBzdGFydGluZyBwb2ludC4gVGhlIGVwb2NoIGZvciBqYXZhLnV0aWwuRGF0ZSBpcyB1c2VkIGhlcmU7IHRoYXQgaXMsCisgICAgICogbWlsbGlzZWNvbmRzIGZyb20gSmFudWFyeSAxLCAxOTcwIChHcmVnb3JpYW4pLCBtaWRuaWdodCBVVEMuICBPdGhlcgorICAgICAqIGVwb2NocyB3aGljaCBhcmUgdXNlZCBhcmUgSmFudWFyeSAxLCB5ZWFyIDEgKEdyZWdvcmlhbiksIHdoaWNoIGlzIGRheSAxCisgICAgICogb2YgdGhlIEdyZWdvcmlhbiBjYWxlbmRhciwgYW5kIERlY2VtYmVyIDMwLCB5ZWFyIDAgKEdyZWdvcmlhbiksIHdoaWNoIGlzCisgICAgICogZGF5IDEgb2YgdGhlIEp1bGlhbiBjYWxlbmRhci4KKyAgICAgKgorICAgICAqIFdlIGltcGxlbWVudCB0aGUgcHJvbGVwdGljIEp1bGlhbiBhbmQgR3JlZ29yaWFuIGNhbGVuZGFycy4gIFRoaXMgbWVhbnMgd2UKKyAgICAgKiBpbXBsZW1lbnQgdGhlIG1vZGVybiBkZWZpbml0aW9uIG9mIHRoZSBjYWxlbmRhciBldmVuIHRob3VnaCB0aGUKKyAgICAgKiBoaXN0b3JpY2FsIHVzYWdlIGRpZmZlcnMuICBGb3IgZXhhbXBsZSwgaWYgdGhlIEdyZWdvcmlhbiBjaGFuZ2UgaXMgc2V0CisgICAgICogdG8gbmV3IERhdGUoTG9uZy5NSU5fVkFMVUUpLCB3ZSBoYXZlIGEgcHVyZSBHcmVnb3JpYW4gY2FsZW5kYXIgd2hpY2gKKyAgICAgKiBsYWJlbHMgZGF0ZXMgcHJlY2VkaW5nIHRoZSBpbnZlbnRpb24gb2YgdGhlIEdyZWdvcmlhbiBjYWxlbmRhciBpbiAxNTgyIGFzCisgICAgICogaWYgdGhlIGNhbGVuZGFyIGV4aXN0ZWQgdGhlbi4KKyAgICAgKgorICAgICAqIExpa2V3aXNlLCB3aXRoIHRoZSBKdWxpYW4gY2FsZW5kYXIsIHdlIGFzc3VtZSBhIGNvbnNpc3RlbnQgNC15ZWFyIGxlYXAKKyAgICAgKiBydWxlLCBldmVuIHRob3VnaCB0aGUgaGlzdG9yaWNhbCBwYXR0ZXJuIG9mIGxlYXAgeWVhcnMgaXMgaXJyZWd1bGFyLAorICAgICAqIGJlaW5nIGV2ZXJ5IDMgeWVhcnMgZnJvbSA0NSBCQyB0aHJvdWdoIDkgQkMsIHRoZW4gZXZlcnkgNCB5ZWFycyBmcm9tIDggQUQKKyAgICAgKiBvbndhcmRzLCB3aXRoIG5vIGxlYXAgeWVhcnMgaW4tYmV0d2Vlbi4gIFRodXMgZGF0ZSBjb21wdXRhdGlvbnMgYW5kCisgICAgICogZnVuY3Rpb25zIHN1Y2ggYXMgaXNMZWFwWWVhcigpIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgaGlzdG9yaWNhbGx5CisgICAgICogYWNjdXJhdGUuCisgICAgICoKKyAgICAgKiBHaXZlbiB0aGF0IG1pbGxpc2Vjb25kcyBhcmUgYSBsb25nLCBkYXkgbnVtYmVycyBzdWNoIGFzIEp1bGlhbiBkYXkKKyAgICAgKiBudW1iZXJzLCBHcmVnb3JpYW4gb3IgSnVsaWFuIGNhbGVuZGFyIGRheXMsIG9yIGVwb2NoIGRheXMsIGFyZSBhbHNvCisgICAgICogbG9uZ3MuIFllYXJzIGNhbiBmaXQgaW50byBhbiBpbnQuCisgICAgICovCisKKy8vLy8vLy8vLy8vLy8vLy8vLworLy8gQ2xhc3MgVmFyaWFibGVzCisvLy8vLy8vLy8vLy8vLy8vLy8KKworICAgIC8qKgorICAgICAqIFZhbHVlIG9mIHRoZSA8Y29kZT5FUkE8L2NvZGU+IGZpZWxkIGluZGljYXRpbmcKKyAgICAgKiB0aGUgcGVyaW9kIGJlZm9yZSB0aGUgY29tbW9uIGVyYSAoYmVmb3JlIENocmlzdCksIGFsc28ga25vd24gYXMgQkNFLgorICAgICAqIFRoZSBzZXF1ZW5jZSBvZiB5ZWFycyBhdCB0aGUgdHJhbnNpdGlvbiBmcm9tIDxjb2RlPkJDPC9jb2RlPiB0byA8Y29kZT5BRDwvY29kZT4gaXMKKyAgICAgKiAuLi4sIDIgQkMsIDEgQkMsIDEgQUQsIDIgQUQsLi4uCisgICAgICogQHNlZSBDYWxlbmRhciNFUkEKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCQyA9IDA7CisKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBvZiB0aGUgPGNvZGU+RVJBPC9jb2RlPiBmaWVsZCBpbmRpY2F0aW5nCisgICAgICogdGhlIGNvbW1vbiBlcmEgKEFubm8gRG9taW5pKSwgYWxzbyBrbm93biBhcyBDRS4KKyAgICAgKiBUaGUgc2VxdWVuY2Ugb2YgeWVhcnMgYXQgdGhlIHRyYW5zaXRpb24gZnJvbSA8Y29kZT5CQzwvY29kZT4gdG8gPGNvZGU+QUQ8L2NvZGU+IGlzCisgICAgICogLi4uLCAyIEJDLCAxIEJDLCAxIEFELCAyIEFELC4uLgorICAgICAqIEBzZWUgQ2FsZW5kYXIjRVJBCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQUQgPSAxOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEVQT0NIX1lFQVIgPSAxOTcwOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W11bXSBNT05USF9DT1VOVCA9IHsKKyAgICAgICAgLy9sZW4gbGVuMiAgIHN0ICBzdDIKKyAgICAgICAgeyAgMzEsICAzMSwgICAwLCAgIDAgfSwgLy8gSmFuCisgICAgICAgIHsgIDI4LCAgMjksICAzMSwgIDMxIH0sIC8vIEZlYgorICAgICAgICB7ICAzMSwgIDMxLCAgNTksICA2MCB9LCAvLyBNYXIKKyAgICAgICAgeyAgMzAsICAzMCwgIDkwLCAgOTEgfSwgLy8gQXByCisgICAgICAgIHsgIDMxLCAgMzEsIDEyMCwgMTIxIH0sIC8vIE1heQorICAgICAgICB7ICAzMCwgIDMwLCAxNTEsIDE1MiB9LCAvLyBKdW4KKyAgICAgICAgeyAgMzEsICAzMSwgMTgxLCAxODIgfSwgLy8gSnVsCisgICAgICAgIHsgIDMxLCAgMzEsIDIxMiwgMjEzIH0sIC8vIEF1ZworICAgICAgICB7ICAzMCwgIDMwLCAyNDMsIDI0NCB9LCAvLyBTZXAKKyAgICAgICAgeyAgMzEsICAzMSwgMjczLCAyNzQgfSwgLy8gT2N0CisgICAgICAgIHsgIDMwLCAgMzAsIDMwNCwgMzA1IH0sIC8vIE5vdgorICAgICAgICB7ICAzMSwgIDMxLCAzMzQsIDMzNSB9ICAvLyBEZWMKKyAgICAgICAgLy8gbGVuICBsZW5ndGggb2YgbW9udGgKKyAgICAgICAgLy8gbGVuMiBsZW5ndGggb2YgbW9udGggaW4gYSBsZWFwIHllYXIKKyAgICAgICAgLy8gc3QgICBkYXlzIGluIHllYXIgYmVmb3JlIHN0YXJ0IG9mIG1vbnRoCisgICAgICAgIC8vIHN0MiAgZGF5cyBpbiB5ZWFyIGJlZm9yZSBtb250aCBpbiBsZWFwIHllYXIKKyAgICB9OworICAgIAorICAgIC8qKgorICAgICAqIE9sZCB5ZWFyIGxpbWl0cyB3ZXJlIGxlYXN0IG1heCAyOTIyNjkwNTQsIG1heCAyOTIyNzg5OTQuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExJTUlUU1tdW10gPSB7CisgICAgICAgIC8vIE1pbmltdW0gIEdyZWF0ZXN0ICAgIExlYXN0ICBNYXhpbXVtCisgICAgICAgIC8vICAgICAgICAgICBNaW5pbXVtICBNYXhpbXVtCisgICAgICAgIHsgICAgICAgIDAsICAgICAgICAwLCAgICAgICAxLCAgICAgICAxIH0sIC8vIEVSQQorICAgICAgICB7ICAgICAgICAxLCAgICAgICAgMSwgNTgyODk2MywgNTgzODI3MCB9LCAvLyBZRUFSCisgICAgICAgIHsgICAgICAgIDAsICAgICAgICAwLCAgICAgIDExLCAgICAgIDExIH0sIC8vIE1PTlRICisgICAgICAgIHsgICAgICAgIDEsICAgICAgICAxLCAgICAgIDUyLCAgICAgIDUzIH0sIC8vIFdFRUtfT0ZfWUVBUgorICAgICAgICB7ICAgICAgICAwLCAgICAgICAgMCwgICAgICAgNCwgICAgICAgNiB9LCAvLyBXRUVLX09GX01PTlRICisgICAgICAgIHsgICAgICAgIDEsICAgICAgICAxLCAgICAgIDI4LCAgICAgIDMxIH0sIC8vIERBWV9PRl9NT05USAorICAgICAgICB7ICAgICAgICAxLCAgICAgICAgMSwgICAgIDM2NSwgICAgIDM2NiB9LCAvLyBEQVlfT0ZfWUVBUgorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBEQVlfT0ZfV0VFSworICAgICAgICB7ICAgICAgIC0xLCAgICAgICAtMSwgICAgICAgNCwgICAgICAgNiB9LCAvLyBEQVlfT0ZfV0VFS19JTl9NT05USAorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBBTV9QTQorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBIT1VSCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIEhPVVJfT0ZfREFZCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIE1JTlVURQorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBTRUNPTkQKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gTUlMTElTRUNPTkQKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gWk9ORV9PRkZTRVQKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gRFNUX09GRlNFVAorICAgICAgICB7IC01ODM4MjcwLCAtNTgzODI3MCwgNTgyODk2NCwgNTgzODI3MSB9LCAvLyBZRUFSX1dPWQorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBET1dfTE9DQUwKKyAgICAgICAgeyAtNTgzODI2OSwgLTU4MzgyNjksIDU4Mjg5NjMsIDU4MzgyNzAgfSwgLy8gRVhURU5ERURfWUVBUgorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBKVUxJQU5fREFZCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIE1JTExJU0VDT05EU19JTl9EQVkKKyAgICB9OworCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVHZXRMaW1pdChpbnQgZmllbGQsIGludCBsaW1pdFR5cGUpIHsKKyAgICAgICAgcmV0dXJuIExJTUlUU1tmaWVsZF1bbGltaXRUeXBlXTsKKyAgICB9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gSW5zdGFuY2UgVmFyaWFibGVzCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworICAgIC8qKgorICAgICAqIFRoZSBwb2ludCBhdCB3aGljaCB0aGUgR3JlZ29yaWFuIGNhbGVuZGFyIHJ1bGVzIGFyZSB1c2VkLCBtZWFzdXJlZCBpbgorICAgICAqIG1pbGxpc2Vjb25kcyBmcm9tIHRoZSBzdGFuZGFyZCBlcG9jaC4gIERlZmF1bHQgaXMgT2N0b2JlciAxNSwgMTU4MgorICAgICAqIChHcmVnb3JpYW4pIDAwOjAwOjAwIFVUQyBvciAtMTIyMTkyOTI4MDAwMDBMLiAgRm9yIHRoaXMgdmFsdWUsIE9jdG9iZXIgNCwKKyAgICAgKiAxNTgyIChKdWxpYW4pIGlzIGZvbGxvd2VkIGJ5IE9jdG9iZXIgMTUsIDE1ODIgKEdyZWdvcmlhbikuICBUaGlzCisgICAgICogY29ycmVzcG9uZHMgdG8gSnVsaWFuIGRheSBudW1iZXIgMjI5OTE2MS4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBsb25nIGdyZWdvcmlhbkN1dG92ZXIgPSAtMTIyMTkyOTI4MDAwMDBMOworCisgICAgLyoqCisgICAgICogSnVsaWFuIGRheSBudW1iZXIgb2YgdGhlIEdyZWdvcmlhbiBjdXRvdmVyLgorICAgICAqLworICAgIHByaXZhdGUgdHJhbnNpZW50IGludCBjdXRvdmVySnVsaWFuRGF5ID0gMjI5OTE2MTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBUaGUgeWVhciBvZiB0aGUgZ3JlZ29yaWFuQ3V0b3Zlciwgd2l0aCAwIHJlcHJlc2VudGluZworICAgICAqIDEgQkMsIC0xIHJlcHJlc2VudGluZyAyIEJDLCBldGMuCisgICAgICovCisgICAgcHJpdmF0ZSB0cmFuc2llbnQgaW50IGdyZWdvcmlhbkN1dG92ZXJZZWFyID0gMTU4MjsKKworICAgIC8qKgorICAgICAqIFVzZWQgYnkgaGFuZGxlQ29tcHV0ZUp1bGlhbkRheSgpIGFuZCBoYW5kbGVDb21wdXRlTW9udGhTdGFydCgpLgorICAgICAqLworICAgIHRyYW5zaWVudCBwcm90ZWN0ZWQgYm9vbGVhbiBpc0dyZWdvcmlhbjsKKworICAgIC8qKgorICAgICAqIFVzZWQgYnkgaGFuZGxlQ29tcHV0ZUp1bGlhbkRheSgpIGFuZCBoYW5kbGVDb21wdXRlTW9udGhTdGFydCgpLgorICAgICAqLworICAgIHRyYW5zaWVudCBwcm90ZWN0ZWQgYm9vbGVhbiBpbnZlcnRHcmVnb3JpYW47CisKKy8vLy8vLy8vLy8vLy8vLworLy8gQ29uc3RydWN0b3JzCisvLy8vLy8vLy8vLy8vLy8KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBkZWZhdWx0IEdyZWdvcmlhbkNhbGVuZGFyIHVzaW5nIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICovCisgICAgcHVibGljIEdyZWdvcmlhbkNhbGVuZGFyKCkgeworICAgICAgICB0aGlzKFRpbWVab25lLmdldERlZmF1bHQoKSwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIEdyZWdvcmlhbkNhbGVuZGFyIGJhc2VkIG9uIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgKiBpbiB0aGUgZ2l2ZW4gdGltZSB6b25lIHdpdGggdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqIEBwYXJhbSB6b25lIHRoZSBnaXZlbiB0aW1lIHpvbmUuCisgICAgICovCisgICAgcHVibGljIEdyZWdvcmlhbkNhbGVuZGFyKFRpbWVab25lIHpvbmUpIHsKKyAgICAgICAgdGhpcyh6b25lLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgR3JlZ29yaWFuQ2FsZW5kYXIgYmFzZWQgb24gdGhlIGN1cnJlbnQgdGltZQorICAgICAqIGluIHRoZSBkZWZhdWx0IHRpbWUgem9uZSB3aXRoIHRoZSBnaXZlbiBsb2NhbGUuCisgICAgICogQHBhcmFtIGFMb2NhbGUgdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgR3JlZ29yaWFuQ2FsZW5kYXIoTG9jYWxlIGFMb2NhbGUpIHsKKyAgICAgICAgdGhpcyhUaW1lWm9uZS5nZXREZWZhdWx0KCksIGFMb2NhbGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBHcmVnb3JpYW5DYWxlbmRhciBiYXNlZCBvbiB0aGUgY3VycmVudCB0aW1lCisgICAgICogaW4gdGhlIGdpdmVuIHRpbWUgem9uZSB3aXRoIHRoZSBnaXZlbiBsb2NhbGUuCisgICAgICogQHBhcmFtIHpvbmUgdGhlIGdpdmVuIHRpbWUgem9uZS4KKyAgICAgKiBAcGFyYW0gYUxvY2FsZSB0aGUgZ2l2ZW4gbG9jYWxlLgorICAgICAqLworICAgIHB1YmxpYyBHcmVnb3JpYW5DYWxlbmRhcihUaW1lWm9uZSB6b25lLCBMb2NhbGUgYUxvY2FsZSkgeworICAgICAgICBzdXBlcih6b25lLCBhTG9jYWxlKTsKKyAgICAgICAgc2V0VGltZUluTWlsbGlzKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgR3JlZ29yaWFuQ2FsZW5kYXIgd2l0aCB0aGUgZ2l2ZW4gZGF0ZSBzZXQKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICogQHBhcmFtIHllYXIgdGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBZRUFSIHRpbWUgZmllbGQgaW4gdGhlIGNhbGVuZGFyLgorICAgICAqIEBwYXJhbSBtb250aCB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIE1PTlRIIHRpbWUgZmllbGQgaW4gdGhlIGNhbGVuZGFyLgorICAgICAqIE1vbnRoIHZhbHVlIGlzIDAtYmFzZWQuIGUuZy4sIDAgZm9yIEphbnVhcnkuCisgICAgICogQHBhcmFtIGRhdGUgdGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBEQVRFIHRpbWUgZmllbGQgaW4gdGhlIGNhbGVuZGFyLgorICAgICAqLworICAgIHB1YmxpYyBHcmVnb3JpYW5DYWxlbmRhcihpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF0ZSkgeworICAgICAgICBzdXBlcihUaW1lWm9uZS5nZXREZWZhdWx0KCksIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgICAgICBzZXQoRVJBLCBBRCk7CisgICAgICAgIHNldChZRUFSLCB5ZWFyKTsKKyAgICAgICAgc2V0KE1PTlRILCBtb250aCk7CisgICAgICAgIHNldChEQVRFLCBkYXRlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgR3JlZ29yaWFuQ2FsZW5kYXIgd2l0aCB0aGUgZ2l2ZW4gZGF0ZQorICAgICAqIGFuZCB0aW1lIHNldCBmb3IgdGhlIGRlZmF1bHQgdGltZSB6b25lIHdpdGggdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqIEBwYXJhbSB5ZWFyIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgWUVBUiB0aW1lIGZpZWxkIGluIHRoZSBjYWxlbmRhci4KKyAgICAgKiBAcGFyYW0gbW9udGggdGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBNT05USCB0aW1lIGZpZWxkIGluIHRoZSBjYWxlbmRhci4KKyAgICAgKiBNb250aCB2YWx1ZSBpcyAwLWJhc2VkLiBlLmcuLCAwIGZvciBKYW51YXJ5LgorICAgICAqIEBwYXJhbSBkYXRlIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgREFURSB0aW1lIGZpZWxkIGluIHRoZSBjYWxlbmRhci4KKyAgICAgKiBAcGFyYW0gaG91ciB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIEhPVVJfT0ZfREFZIHRpbWUgZmllbGQKKyAgICAgKiBpbiB0aGUgY2FsZW5kYXIuCisgICAgICogQHBhcmFtIG1pbnV0ZSB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIE1JTlVURSB0aW1lIGZpZWxkCisgICAgICogaW4gdGhlIGNhbGVuZGFyLgorICAgICAqLworICAgIHB1YmxpYyBHcmVnb3JpYW5DYWxlbmRhcihpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF0ZSwgaW50IGhvdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaW51dGUpIHsKKyAgICAgICAgc3VwZXIoVGltZVpvbmUuZ2V0RGVmYXVsdCgpLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICAgICAgc2V0KEVSQSwgQUQpOworICAgICAgICBzZXQoWUVBUiwgeWVhcik7CisgICAgICAgIHNldChNT05USCwgbW9udGgpOworICAgICAgICBzZXQoREFURSwgZGF0ZSk7CisgICAgICAgIHNldChIT1VSX09GX0RBWSwgaG91cik7CisgICAgICAgIHNldChNSU5VVEUsIG1pbnV0ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIEdyZWdvcmlhbkNhbGVuZGFyIHdpdGggdGhlIGdpdmVuIGRhdGUKKyAgICAgKiBhbmQgdGltZSBzZXQgZm9yIHRoZSBkZWZhdWx0IHRpbWUgem9uZSB3aXRoIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBAcGFyYW0geWVhciB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIFlFQVIgdGltZSBmaWVsZCBpbiB0aGUgY2FsZW5kYXIuCisgICAgICogQHBhcmFtIG1vbnRoIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgTU9OVEggdGltZSBmaWVsZCBpbiB0aGUgY2FsZW5kYXIuCisgICAgICogTW9udGggdmFsdWUgaXMgMC1iYXNlZC4gZS5nLiwgMCBmb3IgSmFudWFyeS4KKyAgICAgKiBAcGFyYW0gZGF0ZSB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIERBVEUgdGltZSBmaWVsZCBpbiB0aGUgY2FsZW5kYXIuCisgICAgICogQHBhcmFtIGhvdXIgdGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBIT1VSX09GX0RBWSB0aW1lIGZpZWxkCisgICAgICogaW4gdGhlIGNhbGVuZGFyLgorICAgICAqIEBwYXJhbSBtaW51dGUgdGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBNSU5VVEUgdGltZSBmaWVsZAorICAgICAqIGluIHRoZSBjYWxlbmRhci4KKyAgICAgKiBAcGFyYW0gc2Vjb25kIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgU0VDT05EIHRpbWUgZmllbGQKKyAgICAgKiBpbiB0aGUgY2FsZW5kYXIuCisgICAgICovCisgICAgcHVibGljIEdyZWdvcmlhbkNhbGVuZGFyKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXRlLCBpbnQgaG91ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pbnV0ZSwgaW50IHNlY29uZCkgeworICAgICAgICBzdXBlcihUaW1lWm9uZS5nZXREZWZhdWx0KCksIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgICAgICBzZXQoRVJBLCBBRCk7CisgICAgICAgIHNldChZRUFSLCB5ZWFyKTsKKyAgICAgICAgc2V0KE1PTlRILCBtb250aCk7CisgICAgICAgIHNldChEQVRFLCBkYXRlKTsKKyAgICAgICAgc2V0KEhPVVJfT0ZfREFZLCBob3VyKTsKKyAgICAgICAgc2V0KE1JTlVURSwgbWludXRlKTsKKyAgICAgICAgc2V0KFNFQ09ORCwgc2Vjb25kKTsKKyAgICB9CisKKy8vLy8vLy8vLy8vLy8vLy8vCisvLyBQdWJsaWMgbWV0aG9kcworLy8vLy8vLy8vLy8vLy8vLy8KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIEdyZWdvcmlhbkNhbGVuZGFyIGNoYW5nZSBkYXRlLiBUaGlzIGlzIHRoZSBwb2ludCB3aGVuIHRoZSBzd2l0Y2gKKyAgICAgKiBmcm9tIEp1bGlhbiBkYXRlcyB0byBHcmVnb3JpYW4gZGF0ZXMgb2NjdXJyZWQuIERlZmF1bHQgaXMgT2N0b2JlciAxNSwKKyAgICAgKiAxNTgyLiBQcmV2aW91cyB0byB0aGlzLCBkYXRlcyB3aWxsIGJlIGluIHRoZSBKdWxpYW4gY2FsZW5kYXIuCisgICAgICogPHA+CisgICAgICogVG8gb2J0YWluIGEgcHVyZSBKdWxpYW4gY2FsZW5kYXIsIHNldCB0aGUgY2hhbmdlIGRhdGUgdG8KKyAgICAgKiA8Y29kZT5EYXRlKExvbmcuTUFYX1ZBTFVFKTwvY29kZT4uICBUbyBvYnRhaW4gYSBwdXJlIEdyZWdvcmlhbiBjYWxlbmRhciwKKyAgICAgKiBzZXQgdGhlIGNoYW5nZSBkYXRlIHRvIDxjb2RlPkRhdGUoTG9uZy5NSU5fVkFMVUUpPC9jb2RlPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXRlIHRoZSBnaXZlbiBHcmVnb3JpYW4gY3V0b3ZlciBkYXRlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEdyZWdvcmlhbkNoYW5nZShEYXRlIGRhdGUpIHsKKyAgICAgICAgZ3JlZ29yaWFuQ3V0b3ZlciA9IGRhdGUuZ2V0VGltZSgpOworCisgICAgICAgIC8vIElmIHRoZSBjdXRvdmVyIGhhcyBhbiBleHRyZW1lIHZhbHVlLCB0aGVuIGNyZWF0ZSBhIHB1cmUKKyAgICAgICAgLy8gR3JlZ29yaWFuIG9yIHB1cmUgSnVsaWFuIGNhbGVuZGFyIGJ5IGdpdmluZyB0aGUgY3V0b3ZlciB5ZWFyIGFuZAorICAgICAgICAvLyBKRCBleHRyZW1lIHZhbHVlcy4KKyAgICAgICAgaWYgKGdyZWdvcmlhbkN1dG92ZXIgPD0gTUlOX01JTExJUykgeworICAgICAgICAgICAgZ3JlZ29yaWFuQ3V0b3ZlclllYXIgPSBjdXRvdmVySnVsaWFuRGF5ID0gSW50ZWdlci5NSU5fVkFMVUU7CisgICAgICAgIH0gZWxzZSBpZiAoZ3JlZ29yaWFuQ3V0b3ZlciA+PSBNQVhfTUlMTElTKSB7CisgICAgICAgICAgICBncmVnb3JpYW5DdXRvdmVyWWVhciA9IGN1dG92ZXJKdWxpYW5EYXkgPSBJbnRlZ2VyLk1BWF9WQUxVRTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFByZWNvbXB1dGUgdHdvIGludGVybmFsIHZhcmlhYmxlcyB3aGljaCB3ZSB1c2UgdG8gZG8gdGhlIGFjdHVhbAorICAgICAgICAgICAgLy8gY3V0b3ZlciBjb21wdXRhdGlvbnMuICBUaGVzZSBhcmUgdGhlIEp1bGlhbiBkYXkgb2YgdGhlIGN1dG92ZXIKKyAgICAgICAgICAgIC8vIGFuZCB0aGUgY3V0b3ZlciB5ZWFyLgorICAgICAgICAgICAgY3V0b3Zlckp1bGlhbkRheSA9IChpbnQpIGZsb29yRGl2aWRlKGdyZWdvcmlhbkN1dG92ZXIsIE9ORV9EQVkpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBDb252ZXJ0IGN1dG92ZXIgbWlsbGlzIHRvIGV4dGVuZGVkIHllYXIKKyAgICAgICAgICAgIEdyZWdvcmlhbkNhbGVuZGFyIGNhbCA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcihnZXRUaW1lWm9uZSgpKTsKKyAgICAgICAgICAgIGNhbC5zZXRUaW1lKGRhdGUpOworICAgICAgICAgICAgZ3JlZ29yaWFuQ3V0b3ZlclllYXIgPSBjYWwuZ2V0KEVYVEVOREVEX1lFQVIpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgR3JlZ29yaWFuIENhbGVuZGFyIGNoYW5nZSBkYXRlLiAgVGhpcyBpcyB0aGUgcG9pbnQgd2hlbiB0aGUKKyAgICAgKiBzd2l0Y2ggZnJvbSBKdWxpYW4gZGF0ZXMgdG8gR3JlZ29yaWFuIGRhdGVzIG9jY3VycmVkLiBEZWZhdWx0IGlzCisgICAgICogT2N0b2JlciAxNSwgMTU4Mi4gUHJldmlvdXMgdG8gdGhpcywgZGF0ZXMgd2lsbCBiZSBpbiB0aGUgSnVsaWFuCisgICAgICogY2FsZW5kYXIuCisgICAgICogQHJldHVybiB0aGUgR3JlZ29yaWFuIGN1dG92ZXIgZGF0ZSBmb3IgdGhpcyBjYWxlbmRhci4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgRGF0ZSBnZXRHcmVnb3JpYW5DaGFuZ2UoKSB7CisgICAgICAgIHJldHVybiBuZXcgRGF0ZShncmVnb3JpYW5DdXRvdmVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiB5ZWFyIGlzIGEgbGVhcCB5ZWFyLiBSZXR1cm5zIHRydWUgaWYgdGhlCisgICAgICogZ2l2ZW4geWVhciBpcyBhIGxlYXAgeWVhci4KKyAgICAgKiBAcGFyYW0geWVhciB0aGUgZ2l2ZW4geWVhci4KKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIHllYXIgaXMgYSBsZWFwIHllYXI7IGZhbHNlIG90aGVyd2lzZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0xlYXBZZWFyKGludCB5ZWFyKSB7CisgICAgICAgIHJldHVybiB5ZWFyID49IGdyZWdvcmlhbkN1dG92ZXJZZWFyID8KKyAgICAgICAgICAgICgoeWVhciU0ID09IDApICYmICgoeWVhciUxMDAgIT0gMCkgfHwgKHllYXIlNDAwID09IDApKSkgOiAvLyBHcmVnb3JpYW4KKyAgICAgICAgICAgICh5ZWFyJTQgPT0gMCk7IC8vIEp1bGlhbgorICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBhcmVzIHRoaXMgR3JlZ29yaWFuQ2FsZW5kYXIgdG8gYW4gb2JqZWN0IHJlZmVyZW5jZS4KKyAgICAgKiBAcGFyYW0gb2JqIHRoZSBvYmplY3QgcmVmZXJlbmNlIHdpdGggd2hpY2ggdG8gY29tcGFyZQorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGlzIG9iamVjdCBpcyBlcXVhbCB0byA8Y29kZT5vYmo8L2NvZGU+OyBmYWxzZSBvdGhlcndpc2UKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikgeworICAgICAgICByZXR1cm4gc3VwZXIuZXF1YWxzKG9iaikgJiYKKyAgICAgICAgICAgIC8vIENhbGVuZGFyLmVxdWFscygpIGVuc3VyZXMgb2JqIGluc3RhbmNlb2YgR3JlZ29yaWFuQ2FsZW5kYXIKKyAgICAgICAgICAgIGdyZWdvcmlhbkN1dG92ZXIgPT0gKChHcmVnb3JpYW5DYWxlbmRhcilvYmopLmdyZWdvcmlhbkN1dG92ZXI7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIE92ZXJyaWRlIGhhc2hDb2RlLgorICAgICAqIEdlbmVyYXRlcyB0aGUgaGFzaCBjb2RlIGZvciB0aGUgR3JlZ29yaWFuQ2FsZW5kYXIgb2JqZWN0CisgICAgICovCisgICAgcHVibGljIGludCBoYXNoQ29kZSgpIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLmhhc2hDb2RlKCkgXiAoaW50KWdyZWdvcmlhbkN1dG92ZXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIENhbGVuZGFyCisgICAgICogRGF0ZSBBcml0aG1ldGljIGZ1bmN0aW9uLgorICAgICAqIEFkZHMgdGhlIHNwZWNpZmllZCAoc2lnbmVkKSBhbW91bnQgb2YgdGltZSB0byB0aGUgZ2l2ZW4gdGltZSBmaWVsZCwKKyAgICAgKiBiYXNlZCBvbiB0aGUgY2FsZW5kYXIncyBydWxlcy4KKyAgICAgKiBAcGFyYW0gZmllbGQgdGhlIHRpbWUgZmllbGQuCisgICAgICogQHBhcmFtIGFtb3VudCB0aGUgYW1vdW50IG9mIGRhdGUgb3IgdGltZSB0byBiZSBhZGRlZCB0byB0aGUgZmllbGQuCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgYW4gdW5rbm93biBmaWVsZCBpcyBnaXZlbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBhZGQoaW50IGZpZWxkLCBpbnQgYW1vdW50KSB7CisgICAgICAgIHN3aXRjaCAoZmllbGQpIHsKKyAgICAgICAgY2FzZSBFUkE6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW50IGVyYSA9IGdldChFUkEpICsgYW1vdW50OworICAgICAgICAgICAgICAgIGlmIChlcmEgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIGVyYSA9IDA7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlcmEgPiAxKSB7CisgICAgICAgICAgICAgICAgICAgIGVyYSA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNldChFUkEsIGVyYSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHN1cGVyLmFkZChmaWVsZCwgYW1vdW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUm9sbCBhIGZpZWxkIGJ5IGEgc2lnbmVkIGFtb3VudC4KKyAgICAgKiBAc2luY2UgMS4yCisgICAgICovCisgICAgcHVibGljIHZvaWQgcm9sbChpbnQgZmllbGQsIGludCBhbW91bnQpIHsKKworICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7CisgICAgICAgIGNhc2UgRVJBOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludCBlcmEgPSAoZ2V0KEVSQSkgKyBhbW91bnQgKSAlIDI7CisgICAgICAgICAgICAgICAgaWYgKGVyYSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZXJhICs9IDI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNldChFUkEsIGVyYSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgIGNhc2UgV0VFS19PRl9ZRUFSOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIFVubGlrZSBXRUVLX09GX01PTlRILCBXRUVLX09GX1lFQVIgbmV2ZXIgc2hpZnRzIHRoZSBkYXkgb2YgdGhlCisgICAgICAgICAgICAgICAgLy8gd2Vlay4gIEFsc28sIHJvbGxpbmcgdGhlIHdlZWsgb2YgdGhlIHllYXIgY2FuIGhhdmUgc2VlbWluZ2x5CisgICAgICAgICAgICAgICAgLy8gc3RyYW5nZSBlZmZlY3RzIHNpbXBseSBiZWNhdXNlIHRoZSB5ZWFyIG9mIHRoZSB3ZWVrIG9mIHllYXIKKyAgICAgICAgICAgICAgICAvLyBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGNhbGVuZGFyIHllYXIuICBGb3IgZXhhbXBsZSwgdGhlCisgICAgICAgICAgICAgICAgLy8gZGF0ZSBEZWMgMjgsIDE5OTcgaXMgdGhlIGZpcnN0IGRheSBvZiB3ZWVrIDEgb2YgMTk5OCAoaWYKKyAgICAgICAgICAgICAgICAvLyB3ZWVrcyBzdGFydCBvbiBTdW5kYXkgYW5kIHRoZSBtaW5pbWFsIGRheXMgaW4gZmlyc3Qgd2VlayBpcworICAgICAgICAgICAgICAgIC8vIDw9IDMpLgorICAgICAgICAgICAgICAgIGludCB3b3kgPSBnZXQoV0VFS19PRl9ZRUFSKTsKKyAgICAgICAgICAgICAgICAvLyBHZXQgdGhlIElTTyB5ZWFyLCB3aGljaCBtYXRjaGVzIHRoZSB3ZWVrIG9mIHllYXIuICBUaGlzCisgICAgICAgICAgICAgICAgLy8gbWF5IGJlIG9uZSB5ZWFyIGJlZm9yZSBvciBhZnRlciB0aGUgY2FsZW5kYXIgeWVhci4KKyAgICAgICAgICAgICAgICBpbnQgaXNvWWVhciA9IGdldChZRUFSX1dPWSk7CisgICAgICAgICAgICAgICAgaW50IGlzb0RveSA9IGludGVybmFsR2V0KERBWV9PRl9ZRUFSKTsKKyAgICAgICAgICAgICAgICBpZiAoaW50ZXJuYWxHZXQoTU9OVEgpID09IENhbGVuZGFyLkpBTlVBUlkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdveSA+PSA1MikgeworICAgICAgICAgICAgICAgICAgICAgICAgaXNvRG95ICs9IGhhbmRsZUdldFllYXJMZW5ndGgoaXNvWWVhcik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAod295ID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzb0RveSAtPSBoYW5kbGVHZXRZZWFyTGVuZ3RoKGlzb1llYXIgLSAxKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3b3kgKz0gYW1vdW50OworICAgICAgICAgICAgICAgIC8vIERvIGZhc3QgY2hlY2tzIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGNvbXB1dGF0aW9uOgorICAgICAgICAgICAgICAgIGlmICh3b3kgPCAxIHx8IHdveSA+IDUyKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIERldGVybWluZSB0aGUgbGFzdCB3ZWVrIG9mIHRoZSBJU08geWVhci4KKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG8gdGhpcyB1c2luZyB0aGUgc3RhbmRhcmQgZm9ybXVsYSB3ZSB1c2UKKyAgICAgICAgICAgICAgICAgICAgLy8gZXZlcnl3aGVyZSBpbiB0aGlzIGZpbGUuICBJZiB3ZSBjYW4gc2VlIHRoYXQgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIGRheXMgYXQgdGhlIGVuZCBvZiB0aGUgeWVhciBhcmUgZ29pbmcgdG8gZmFsbCBpbnRvCisgICAgICAgICAgICAgICAgICAgIC8vIHdlZWsgMSBvZiB0aGUgbmV4dCB5ZWFyLCB3ZSBkcm9wIHRoZSBsYXN0IHdlZWsgYnkKKyAgICAgICAgICAgICAgICAgICAgLy8gc3VidHJhY3RpbmcgNyBmcm9tIHRoZSBsYXN0IGRheSBvZiB0aGUgeWVhci4KKyAgICAgICAgICAgICAgICAgICAgaW50IGxhc3REb3kgPSBoYW5kbGVHZXRZZWFyTGVuZ3RoKGlzb1llYXIpOworICAgICAgICAgICAgICAgICAgICBpbnQgbGFzdFJlbERvdyA9IChsYXN0RG95IC0gaXNvRG95ICsgaW50ZXJuYWxHZXQoREFZX09GX1dFRUspIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Rmlyc3REYXlPZldlZWsoKSkgJSA3OworICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFJlbERvdyA8IDApIGxhc3RSZWxEb3cgKz0gNzsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCg2IC0gbGFzdFJlbERvdykgPj0gZ2V0TWluaW1hbERheXNJbkZpcnN0V2VlaygpKSBsYXN0RG95IC09IDc7CisgICAgICAgICAgICAgICAgICAgIGludCBsYXN0V295ID0gd2Vla051bWJlcihsYXN0RG95LCBsYXN0UmVsRG93ICsgMSk7CisgICAgICAgICAgICAgICAgICAgIHdveSA9ICgod295ICsgbGFzdFdveSAtIDEpICUgbGFzdFdveSkgKyAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzZXQoV0VFS19PRl9ZRUFSLCB3b3kpOworICAgICAgICAgICAgICAgIHNldChZRUFSLCBpc29ZZWFyKTsgLy8gV2h5IG5vdCBZRUFSX1dPWT8gLSBBbGFuIDExLzYvMDAKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHN1cGVyLnJvbGwoZmllbGQsIGFtb3VudCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG1pbmltdW0gdmFsdWUgdGhhdCB0aGlzIGZpZWxkIGNvdWxkIGhhdmUsIGdpdmVuIHRoZSBjdXJyZW50IGRhdGUuCisgICAgICogRm9yIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIsIHRoaXMgaXMgdGhlIHNhbWUgYXMgZ2V0TWluaW11bSgpIGFuZCBnZXRHcmVhdGVzdE1pbmltdW0oKS4KKyAgICAgKiBAc2luY2UgMS4yCisgICAgICovCisgICAgcHVibGljIGludCBnZXRBY3R1YWxNaW5pbXVtKGludCBmaWVsZCkgeworICAgICAgICByZXR1cm4gZ2V0TWluaW11bShmaWVsZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBtYXhpbXVtIHZhbHVlIHRoYXQgdGhpcyBmaWVsZCBjb3VsZCBoYXZlLCBnaXZlbiB0aGUgY3VycmVudCBkYXRlLgorICAgICAqIEZvciBleGFtcGxlLCB3aXRoIHRoZSBkYXRlICJGZWIgMywgMTk5NyIgYW5kIHRoZSBEQVlfT0ZfTU9OVEggZmllbGQsIHRoZSBhY3R1YWwKKyAgICAgKiBtYXhpbXVtIHdvdWxkIGJlIDI4OyBmb3IgIkZlYiAzLCAxOTk2IiBpdCBzIDI5LiAgU2ltaWxhcmx5IGZvciBhIEhlYnJldyBjYWxlbmRhciwKKyAgICAgKiBmb3Igc29tZSB5ZWFycyB0aGUgYWN0dWFsIG1heGltdW0gZm9yIE1PTlRIIGlzIDEyLCBhbmQgZm9yIG90aGVycyAxMy4KKyAgICAgKiBAc2luY2UgMS4yCisgICAgICovCisgICAgcHVibGljIGludCBnZXRBY3R1YWxNYXhpbXVtKGludCBmaWVsZCkgeworICAgICAgICAvKiBJdCBpcyBhIGtub3duIGxpbWl0YXRpb24gdGhhdCB0aGUgY29kZSBoZXJlIChhbmQgaW4gZ2V0QWN0dWFsTWluaW11bSkKKyAgICAgICAgICogd29uJ3QgYmVoYXZlIHByb3Blcmx5IGF0IHRoZSBleHRyZW1lIGxpbWl0cyBvZiBHcmVnb3JpYW5DYWxlbmRhcidzCisgICAgICAgICAqIHJlcHJlc2VudGFibGUgcmFuZ2UgKGV4Y2VwdCBmb3IgdGhlIGNvZGUgdGhhdCBoYW5kbGVzIHRoZSBZRUFSCisgICAgICAgICAqIGZpZWxkKS4gIFRoYXQncyBiZWNhdXNlIHRoZSBlbmRzIG9mIHRoZSByZXByZXNlbnRhYmxlIHJhbmdlIGFyZSBhdAorICAgICAgICAgKiBvZGQgc3BvdHMgaW4gdGhlIHllYXIuICBGb3IgY2FsZW5kYXJzIHdpdGggdGhlIGRlZmF1bHQgR3JlZ29yaWFuCisgICAgICAgICAqIGN1dG92ZXIsIHRoZXNlIGxpbWl0cyBhcmUgU3VuIERlYyAwMiAxNjo0NzowNCBHTVQgMjkyMjY5MDU1IEJDIHRvIFN1bgorICAgICAgICAgKiBBdWcgMTcgMDc6MTI6NTUgR01UIDI5MjI3ODk5NCBBRCwgc29tZXdoYXQgZGlmZmVyZW50IGZvciBub24tR01UCisgICAgICAgICAqIHpvbmVzLiAgQXMgYSByZXN1bHQsIGlmIHRoZSBjYWxlbmRhciBpcyBzZXQgdG8gQXVnIDEgMjkyMjc4OTk0IEFELAorICAgICAgICAgKiB0aGUgYWN0dWFsIG1heGltdW0gb2YgREFZX09GX01PTlRIIGlzIDE3LCBub3QgMzAuICBJZiB0aGUgZGF0ZSBpcyBNYXIKKyAgICAgICAgICogMzEgaW4gdGhhdCB5ZWFyLCB0aGUgYWN0dWFsIG1heGltdW0gbW9udGggbWlnaHQgYmUgSnVsLCB3aGVyZWFzIGlzCisgICAgICAgICAqIHRoZSBkYXRlIGlzIE1hciAxNSwgdGhlIGFjdHVhbCBtYXhpbXVtIG1pZ2h0IGJlIEF1ZyAtLSBkZXBlbmRpbmcgb24KKyAgICAgICAgICogdGhlIHByZWNpc2Ugc2VtYW50aWNzIHRoYXQgYXJlIGRlc2lyZWQuICBTaW1pbGFyIGNvbnNpZGVyYXRpb25zCisgICAgICAgICAqIGFmZmVjdCBhbGwgZmllbGRzLiAgTm9uZXRoZWxlc3MsIHRoaXMgZWZmZWN0IGlzIHN1ZmZpY2llbnRseSBhcmNhbmUKKyAgICAgICAgICogdGhhdCB3ZSBwZXJtaXQgaXQsIHJhdGhlciB0aGFuIGNvbXBsaWNhdGluZyB0aGUgY29kZSB0byBoYW5kbGUgc3VjaAorICAgICAgICAgKiBpbnRyaWNhY2llcy4gLSBsaXUgOC8yMC85OAorCisgICAgICAgICAqIFVQREFURTogTm8gbG9uZ2VyIHRydWUsIHNpbmNlIHdlIGhhdmUgcHVsbGVkIGluIHRoZSBsaW1pdCB2YWx1ZXMgb24KKyAgICAgICAgICogdGhlIHllYXIuIC0gTGl1IDExLzYvMDAgKi8KKworICAgICAgICBzd2l0Y2ggKGZpZWxkKSB7CisKKyAgICAgICAgY2FzZSBZRUFSOgorICAgICAgICAgICAgLyogVGhlIHllYXIgY29tcHV0YXRpb24gaXMgbm8gZGlmZmVyZW50LCBpbiBwcmluY2lwbGUsIGZyb20gdGhlCisgICAgICAgICAgICAgKiBvdGhlcnMsIGhvd2V2ZXIsIHRoZSByYW5nZSBvZiBwb3NzaWJsZSBtYXhpbWEgaXMgbGFyZ2UuICBJbgorICAgICAgICAgICAgICogYWRkaXRpb24sIHRoZSB3YXkgd2Uga25vdyB3ZSd2ZSBleGNlZWRlZCB0aGUgcmFuZ2UgaXMgZGlmZmVyZW50LgorICAgICAgICAgICAgICogRm9yIHRoZXNlIHJlYXNvbnMsIHdlIHVzZSB0aGUgc3BlY2lhbCBjYXNlIGNvZGUgYmVsb3cgdG8gaGFuZGxlCisgICAgICAgICAgICAgKiB0aGlzIGZpZWxkLgorICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqIFRoZSBhY3R1YWwgbWF4aW1hIGZvciBZRUFSIGRlcGVuZCBvbiB0aGUgdHlwZSBvZiBjYWxlbmRhcjoKKyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKiAgICAgR3JlZ29yaWFuID0gTWF5IDE3LCAyOTIyNzUwNTYgQkMgLSBBdWcgMTcsIDI5MjI3ODk5NCBBRAorICAgICAgICAgICAgICogICAgIEp1bGlhbiAgICA9IERlYyAgMiwgMjkyMjY5MDU1IEJDIC0gSmFuICAzLCAyOTIyNzI5OTMgQUQKKyAgICAgICAgICAgICAqICAgICBIeWJyaWQgICAgPSBEZWMgIDIsIDI5MjI2OTA1NSBCQyAtIEF1ZyAxNywgMjkyMjc4OTk0IEFECisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogV2Uga25vdyB3ZSd2ZSBleGNlZWRlZCB0aGUgbWF4aW11bSB3aGVuIGVpdGhlciB0aGUgbW9udGgsIGRhdGUsCisgICAgICAgICAgICAgKiB0aW1lLCBvciBlcmEgY2hhbmdlcyBpbiByZXNwb25zZSB0byBzZXR0aW5nIHRoZSB5ZWFyLiAgV2UgZG9uJ3QKKyAgICAgICAgICAgICAqIGNoZWNrIGZvciBtb250aCwgZGF0ZSwgYW5kIHRpbWUgaGVyZSBiZWNhdXNlIHRoZSB5ZWFyIGFuZCBlcmEgYXJlCisgICAgICAgICAgICAgKiBzdWZmaWNpZW50IHRvIGRldGVjdCBhbiBpbnZhbGlkIHllYXIgc2V0dGluZy4gIE5PVEU6IElmIGNvZGUgaXMKKyAgICAgICAgICAgICAqIGFkZGVkIHRvIGNoZWNrIHRoZSBtb250aCBhbmQgZGF0ZSBpbiB0aGUgZnV0dXJlIGZvciBzb21lIHJlYXNvbiwKKyAgICAgICAgICAgICAqIEZlYiAyOSBtdXN0IGJlIGFsbG93ZWQgdG8gc2hpZnQgdG8gTWFyIDEgd2hlbiBzZXR0aW5nIHRoZSB5ZWFyLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgQ2FsZW5kYXIgY2FsID0gKENhbGVuZGFyKSBjbG9uZSgpOworICAgICAgICAgICAgICAgIGNhbC5zZXRMZW5pZW50KHRydWUpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGludCBlcmEgPSBjYWwuZ2V0KEVSQSk7CisgICAgICAgICAgICAgICAgRGF0ZSBkID0gY2FsLmdldFRpbWUoKTsKKworICAgICAgICAgICAgICAgIC8qIFBlcmZvcm0gYSBiaW5hcnkgc2VhcmNoLCB3aXRoIHRoZSBpbnZhcmlhbnQgdGhhdCBsb3dHb29kIGlzIGEKKyAgICAgICAgICAgICAgICAgKiB2YWxpZCB5ZWFyLCBhbmQgaGlnaEJhZCBpcyBhbiBvdXQgb2YgcmFuZ2UgeWVhci4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpbnQgbG93R29vZCA9IExJTUlUU1tZRUFSXVsxXTsKKyAgICAgICAgICAgICAgICBpbnQgaGlnaEJhZCA9IExJTUlUU1tZRUFSXVsyXSsxOworICAgICAgICAgICAgICAgIHdoaWxlICgobG93R29vZCArIDEpIDwgaGlnaEJhZCkgeworICAgICAgICAgICAgICAgICAgICBpbnQgeSA9IChsb3dHb29kICsgaGlnaEJhZCkgLyAyOworICAgICAgICAgICAgICAgICAgICBjYWwuc2V0KFlFQVIsIHkpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2FsLmdldChZRUFSKSA9PSB5ICYmIGNhbC5nZXQoRVJBKSA9PSBlcmEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvd0dvb2QgPSB5OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaGlnaEJhZCA9IHk7CisgICAgICAgICAgICAgICAgICAgICAgICBjYWwuc2V0VGltZShkKTsgLy8gUmVzdG9yZSBvcmlnaW5hbCBmaWVsZHMKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByZXR1cm4gbG93R29vZDsKKyAgICAgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmdldEFjdHVhbE1heGltdW0oZmllbGQpOworICAgICAgICB9CisgICAgfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyBQcm9wb3NlZCBwdWJsaWMgQVBJCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgY3VycmVudCB0aW1lIGZvciB0aGlzIENhbGVuZGFyIGlzIGluIERheWxpZ250CisgICAgICogU2F2aW5ncyBUaW1lLgorICAgICAqCisgICAgICogTm90ZSAtLSBNQUtFIFRISVMgUFVCTElDIEFUIFRIRSBORVhUIEFQSSBDSEFOR0UuICBQT1NTSUJMWSBERVBSRUNBVEUKKyAgICAgKiBBTkQgUkVNT1ZFIFRpbWVab25lLmluRGF5bGlnaHRUaW1lKCkuCisgICAgICovCisgICAgYm9vbGVhbiBpbkRheWxpZ2h0VGltZSgpIHsKKyAgICAgICAgaWYgKCFnZXRUaW1lWm9uZSgpLnVzZURheWxpZ2h0VGltZSgpKSByZXR1cm4gZmFsc2U7CisgICAgICAgIGNvbXBsZXRlKCk7IC8vIEZvcmNlIHVwZGF0ZSBvZiBEU1RfT0ZGU0VUIGZpZWxkCisgICAgICAgIHJldHVybiBpbnRlcm5hbEdldChEU1RfT0ZGU0VUKSAhPSAwOworICAgIH0KKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIENhbGVuZGFyIGZyYW1ld29yaworLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZUdldE1vbnRoTGVuZ3RoKGludCBleHRlbmRlZFllYXIsIGludCBtb250aCkgeworICAgICAgICByZXR1cm4gTU9OVEhfQ09VTlRbbW9udGhdW2lzTGVhcFllYXIoZXh0ZW5kZWRZZWFyKT8xOjBdOworICAgIH0KKworICAgIHByb3RlY3RlZCBpbnQgaGFuZGxlR2V0WWVhckxlbmd0aChpbnQgZXllYXIpIHsKKyAgICAgICAgcmV0dXJuIGlzTGVhcFllYXIoZXllYXIpID8gMzY2IDogMzY1OworICAgIH0KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIFRpbWUgPT4gRmllbGRzIGNvbXB1dGF0aW9uCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgQ2FsZW5kYXIgdG8gY29tcHV0ZSBzZXZlcmFsIGZpZWxkcyBzcGVjaWZpYyB0byB0aGUgaHlicmlkCisgICAgICogR3JlZ29yaWFuLUp1bGlhbiBjYWxlbmRhciBzeXN0ZW0uICBUaGVzZSBhcmU6CisgICAgICoKKyAgICAgKiA8dWw+PGxpPkVSQQorICAgICAqIDxsaT5ZRUFSCisgICAgICogPGxpPk1PTlRICisgICAgICogPGxpPkRBWV9PRl9NT05USAorICAgICAqIDxsaT5EQVlfT0ZfWUVBUgorICAgICAqIDxsaT5FWFRFTkRFRF9ZRUFSPC91bD4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVDb21wdXRlRmllbGRzKGludCBqdWxpYW5EYXkpIHsKKyAgICAgICAgaW50IGV5ZWFyLCBtb250aCwgZGF5T2ZNb250aCwgZGF5T2ZZZWFyOworCisgICAgICAgIGlmIChqdWxpYW5EYXkgPj0gY3V0b3Zlckp1bGlhbkRheSkgeworICAgICAgICAgICAgbW9udGggPSBnZXRHcmVnb3JpYW5Nb250aCgpOworICAgICAgICAgICAgZGF5T2ZNb250aCA9IGdldEdyZWdvcmlhbkRheU9mTW9udGgoKTsKKyAgICAgICAgICAgIGRheU9mWWVhciA9IGdldEdyZWdvcmlhbkRheU9mWWVhcigpOworICAgICAgICAgICAgZXllYXIgPSBnZXRHcmVnb3JpYW5ZZWFyKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBUaGUgSnVsaWFuIGVwb2NoIGRheSAobm90IHRoZSBzYW1lIGFzIEp1bGlhbiBEYXkpCisgICAgICAgICAgICAvLyBpcyB6ZXJvIG9uIFNhdHVyZGF5IERlY2VtYmVyIDMwLCAwIChHcmVnb3JpYW4pLgorICAgICAgICAgICAgbG9uZyBqdWxpYW5FcG9jaERheSA9IGp1bGlhbkRheSAtIChKQU5fMV8xX0pVTElBTl9EQVkgLSAyKTsKKyAgICAgICAgICAgIGV5ZWFyID0gKGludCkgZmxvb3JEaXZpZGUoNCpqdWxpYW5FcG9jaERheSArIDE0NjQsIDE0NjEpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBDb21wdXRlIHRoZSBKdWxpYW4gY2FsZW5kYXIgZGF5IG51bWJlciBmb3IgSmFudWFyeSAxLCBleWVhcgorICAgICAgICAgICAgbG9uZyBqYW51YXJ5MSA9IDM2NSooZXllYXItMSkgKyBmbG9vckRpdmlkZShleWVhci0xLCA0KTsKKyAgICAgICAgICAgIGRheU9mWWVhciA9IChpbnQpKGp1bGlhbkVwb2NoRGF5IC0gamFudWFyeTEpOyAvLyAwLWJhc2VkCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEp1bGlhbiBsZWFwIHllYXJzIG9jY3VycmVkIGhpc3RvcmljYWxseSBldmVyeSA0IHllYXJzIHN0YXJ0aW5nCisgICAgICAgICAgICAvLyB3aXRoIDggQUQuICBCZWZvcmUgOCBBRCB0aGUgc3BhY2luZyBpcyBpcnJlZ3VsYXI7IGV2ZXJ5IDMgeWVhcnMKKyAgICAgICAgICAgIC8vIGZyb20gNDUgQkMgdG8gOSBCQywgYW5kIHRoZW4gbm9uZSB1bnRpbCA4IEFELiAgSG93ZXZlciwgd2UgZG9uJ3QKKyAgICAgICAgICAgIC8vIGltcGxlbWVudCB0aGlzIGhpc3RvcmljYWwgZGV0YWlsOyBpbnN0ZWFkLCB3ZSBpbXBsZW1lbnQgdGhlCisgICAgICAgICAgICAvLyBjb21wdXRhdGluYWxseSBjbGVhbmVyIHByb2xlcHRpYyBjYWxlbmRhciwgd2hpY2ggYXNzdW1lcworICAgICAgICAgICAgLy8gY29uc2lzdGVudCA0LXllYXIgY3ljbGVzIHRocm91Z2hvdXQgdGltZS4KKyAgICAgICAgICAgIGJvb2xlYW4gaXNMZWFwID0gKChleWVhciYweDMpID09IDApOyAvLyBlcXVpdi4gdG8gKGV5ZWFyJTQgPT0gMCkKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQ29tbW9uIEp1bGlhbi9HcmVnb3JpYW4gY2FsY3VsYXRpb24KKyAgICAgICAgICAgIGludCBjb3JyZWN0aW9uID0gMDsKKyAgICAgICAgICAgIGludCBtYXJjaDEgPSBpc0xlYXAgPyA2MCA6IDU5OyAvLyB6ZXJvLWJhc2VkIERPWSBmb3IgTWFyY2ggMQorICAgICAgICAgICAgaWYgKGRheU9mWWVhciA+PSBtYXJjaDEpIHsKKyAgICAgICAgICAgICAgICBjb3JyZWN0aW9uID0gaXNMZWFwID8gMSA6IDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtb250aCA9ICgxMiAqIChkYXlPZlllYXIgKyBjb3JyZWN0aW9uKSArIDYpIC8gMzY3OyAvLyB6ZXJvLWJhc2VkIG1vbnRoCisgICAgICAgICAgICBkYXlPZk1vbnRoID0gZGF5T2ZZZWFyIC0gTU9OVEhfQ09VTlRbbW9udGhdW2lzTGVhcD8zOjJdICsgMTsgLy8gb25lLWJhc2VkIERPTQorICAgICAgICAgICAgKytkYXlPZlllYXI7CisgICAgICAgIH0KKyAgICAgICAgaW50ZXJuYWxTZXQoTU9OVEgsIG1vbnRoKTsKKyAgICAgICAgaW50ZXJuYWxTZXQoREFZX09GX01PTlRILCBkYXlPZk1vbnRoKTsKKyAgICAgICAgaW50ZXJuYWxTZXQoREFZX09GX1lFQVIsIGRheU9mWWVhcik7CisgICAgICAgIGludGVybmFsU2V0KEVYVEVOREVEX1lFQVIsIGV5ZWFyKTsKKyAgICAgICAgaW50IGVyYSA9IEFEOworICAgICAgICBpZiAoZXllYXIgPCAxKSB7CisgICAgICAgICAgICBlcmEgPSBCQzsKKyAgICAgICAgICAgIGV5ZWFyID0gMSAtIGV5ZWFyOworICAgICAgICB9CisgICAgICAgIGludGVybmFsU2V0KEVSQSwgZXJhKTsKKyAgICAgICAgaW50ZXJuYWxTZXQoWUVBUiwgZXllYXIpOworICAgIH0KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vIEZpZWxkcyA9PiBUaW1lIGNvbXB1dGF0aW9uCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVHZXRFeHRlbmRlZFllYXIoKSB7CisgICAgICAgIGludCB5ZWFyOworICAgICAgICBpZiAobmV3ZXJGaWVsZChFWFRFTkRFRF9ZRUFSLCBZRUFSKSA9PSBFWFRFTkRFRF9ZRUFSKSB7CisgICAgICAgICAgICB5ZWFyID0gaW50ZXJuYWxHZXQoRVhURU5ERURfWUVBUiwgRVBPQ0hfWUVBUik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBUaGUgeWVhciBkZWZhdWx0cyB0byB0aGUgZXBvY2ggc3RhcnQsIHRoZSBlcmEgdG8gQUQKKyAgICAgICAgICAgIGludCBlcmEgPSBpbnRlcm5hbEdldChFUkEsIEFEKTsKKyAgICAgICAgICAgIGlmIChlcmEgPT0gQkMpIHsKKyAgICAgICAgICAgICAgICB5ZWFyID0gMSAtIGludGVybmFsR2V0KFlFQVIsIDEpOyAvLyBDb252ZXJ0IHRvIGV4dGVuZGVkIHllYXIKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgeWVhciA9IGludGVybmFsR2V0KFlFQVIsIEVQT0NIX1lFQVIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiB5ZWFyOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlIENhbGVuZGFyIHRvIGltcHJvdmUgcGVyZm9ybWFuY2UuICBUaGlzIG1ldGhvZCB0cmllcyB0byB1c2UKKyAgICAgKiB0aGUgRVhURU5ERURfWUVBUiwgTU9OVEgsIERBVEUsIGZpZWxkcyBpZiB0aGV5IGFyZSBzZXQsIGluc3RlYWQgb2YKKyAgICAgKiBjb21wdXRpbmcgdGhlbS4gIElmIHRoZXkgYXJlIG5vdCBzZXQsIHRoaXMgbWV0aG9kIGRlZmVycyB0byB0aGUKKyAgICAgKiBkZWZhdWx0IGltcGxlbWVuYXRpb24uCisgICAgICogQHBhcmFtIG1pbGxpcyBtaWxsaXNlY29uZHMgb2YgdGhlIGRhdGUgZmllbGRzCisgICAgICogQHBhcmFtIG1pbGxpc0luRGF5IG1pbGxpc2Vjb25kcyBvZiB0aGUgdGltZSBmaWVsZHM7IG1heSBiZSBvdXQKKyAgICAgKiBvciByYW5nZS4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IGNvbXB1dGVab25lT2Zmc2V0KGxvbmcgbWlsbGlzLCBpbnQgbWlsbGlzSW5EYXkpIHsKKworICAgICAgICAvLyBOb3JtYWxpemUgdGhlIG1pbGxpc0luRGF5IHRvIDAuLk9ORV9EQVktMS4gIElmIHRoZSBtaWxsaXMgaXMgb3V0CisgICAgICAgIC8vIG9mIHJhbmdlLCB0aGVuIHdlIGRlZmVyIHRvIHRoZSBiYXNlIGNsYXNzIGltcGxlbWVudGF0aW9uIHdoaWNoCisgICAgICAgIC8vIHdpbGwgcmVjb21wdXRlIHRoZSBjb3JyZWN0IHZhbHVlcy4KKyAgICAgICAgaW50W10gbm9ybWFsaXplZE1pbGxpc0luRGF5ID0gbmV3IGludFsxXTsKKyAgICAgICAgaW50IGRheXMgPSBmbG9vckRpdmlkZShtaWxsaXMgKyBtaWxsaXNJbkRheSwgKGludCkgT05FX0RBWSwgbm9ybWFsaXplZE1pbGxpc0luRGF5KTsKKworICAgICAgICAvLyBXZSBuZWVkIHRvIGhhdmUgdGhlIG1vbnRoLCB0aGUgZGF5LCBhbmQgdGhlIGRheSBvZiB0aGUgd2Vlay4gIElmCisgICAgICAgIC8vIHRoZSBmaWVsZHMgYXJlIG5vdCBzZXQgb3IgaWYgd2UncmUgbGVuaWVudCAoc28gZmllbGRzIG1heSBiZSBvdXQKKyAgICAgICAgLy8gb2YgcmFuZ2UpIHRoZW4gd2UgZGVmZXIgdG8gdGhlIGJhc2UgY2xhc3Mgd2hpY2ggd2lsbCBub3JtYWxpemUKKyAgICAgICAgLy8gdGhlIHllYXIsIG1vbnRoLCBhbmQgZGF5IG9mIG1vbnRoLgorICAgICAgICBpZiAoaXNMZW5pZW50KCkgfHwgIWlzU2V0KE1PTlRIKSB8fCAhaXNTZXQoREFZX09GX01PTlRIKQorICAgICAgICAgICAgfHwgbWlsbGlzSW5EYXkgIT0gbm9ybWFsaXplZE1pbGxpc0luRGF5WzBdKSB7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuY29tcHV0ZVpvbmVPZmZzZXQobWlsbGlzLCBtaWxsaXNJbkRheSk7CisgICAgICAgIH0KKworICAgICAgICBpbnQganVsaWFuRGF5ID0gbWlsbGlzVG9KdWxpYW5EYXkoZGF5cyAqIE9ORV9EQVkpOworCisgICAgICAgIC8vIEl0J3MgdGVtcHRpbmcgdG8gdHJ5IHRvIHVzZSBEQVlfT0ZfV0VFSyBoZXJlLCBpZiBpdAorICAgICAgICAvLyBpcyBzZXQsIGJ1dCB3ZSBDQU4nVC4gIEV2ZW4gaWYgaXQncyBzZXQsIGl0IG1pZ2h0IGhhdmUKKyAgICAgICAgLy8gYmVlbiBzZXQgd3JvbmcgYnkgdGhlIHVzZXIuICBXZSBzaG91bGQgcmVseSBvbmx5IG9uCisgICAgICAgIC8vIHRoZSBKdWxpYW4gZGF5IG51bWJlciwgd2hpY2ggaGFzIGJlZW4gY29tcHV0ZWQgY29ycmVjdGx5CisgICAgICAgIC8vIHVzaW5nIHRoZSBkaXNhbWJpZ3VhdGlvbiBhbGdvcml0aG0gYWJvdmUuIFtMSVVdCisgICAgICAgIGludCB5ZWFyID0gaW50ZXJuYWxHZXQoRVhURU5ERURfWUVBUik7CisgICAgICAgIGludCBtb250aCA9IGludGVybmFsR2V0KE1PTlRIKTsKKyAgICAgICAgaW50IHByZXZpb3VzTW9udGhMZW5ndGggPSAobW9udGggPT0gMCkgPworICAgICAgICAgICAgMzEgOiBoYW5kbGVHZXRNb250aExlbmd0aCh5ZWFyLCBtb250aC0xKTsKKworICAgICAgICByZXR1cm4gZ2V0VGltZVpvbmUoKS5nZXRPZmZzZXQoeWVhciwgbW9udGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbEdldChEQVRFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bGlhbkRheVRvRGF5T2ZXZWVrKGp1bGlhbkRheSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkTWlsbGlzSW5EYXlbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVHZXRNb250aExlbmd0aCh5ZWFyLCBtb250aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aW91c01vbnRoTGVuZ3RoKTsKKworICAgICAgICAvLyBOb3RlOiBCZWNhdXNlIHdlIHBhc3MgaW4gd2FsbCBtaWxsaXNJbkRheSwgcmF0aGVyIHRoYW4KKyAgICAgICAgLy8gc3RhbmRhcmQgbWlsbGlzSW5EYXksIHdlIGludGVycHJldCAiMTowMCBhbSIgb24gdGhlIGRheQorICAgICAgICAvLyBvZiBjZXNzYXRpb24gb2YgRFNUIGFzICIxOjAwIGFtIFN0ZCIgKGFzc3VtaW5nIHRoZSB0aW1lCisgICAgICAgIC8vIG9mIGNlc3NhdGlvbiBpcyAyOjAwIGFtKS4KKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZUNvbXB1dGVKdWxpYW5EYXkoaW50IGJlc3RGaWVsZCkgeworCisgICAgICAgIGludmVydEdyZWdvcmlhbiA9IGZhbHNlOworCisgICAgICAgIGludCBqZCA9IHN1cGVyLmhhbmRsZUNvbXB1dGVKdWxpYW5EYXkoYmVzdEZpZWxkKTsKKworICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGNoZWNrIGhhbmRsZXMgcG9ydGlvbnMgb2YgdGhlIGN1dG92ZXIgeWVhciBCRUZPUkUgdGhlCisgICAgICAgIC8vIGN1dG92ZXIgaXRzZWxmIGhhcHBlbnMuCisgICAgICAgIGlmIChpc0dyZWdvcmlhbiAhPSAoamQgPj0gY3V0b3Zlckp1bGlhbkRheSkpIHsKKyAgICAgICAgICAgIGludmVydEdyZWdvcmlhbiA9IHRydWU7CisgICAgICAgICAgICBqZCA9IHN1cGVyLmhhbmRsZUNvbXB1dGVKdWxpYW5EYXkoYmVzdEZpZWxkKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGpkOworICAgIH0KKworICAgIC8vIFJldHVybiBKRCBvZiBzdGFydCBvZiBnaXZlbiBtb250aC95ZWFyCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVDb21wdXRlTW9udGhTdGFydChpbnQgZXllYXIsIGludCBtb250aCwgYm9vbGVhbiB1c2VNb250aCkgeworCisgICAgICAgIC8vIElmIHRoZSBtb250aCBpcyBvdXQgb2YgcmFuZ2UsIGFkanVzdCBpdCBpbnRvIHJhbmdlLCBhbmQKKyAgICAgICAgLy8gbW9kaWZ5IHRoZSBleHRlbmRlZCB5ZWFyIHZhbHVlIGFjY29yZGluZ2x5LgorICAgICAgICBpZiAobW9udGggPCAwIHx8IG1vbnRoID4gMTEpIHsKKyAgICAgICAgICAgIGludFtdIHJlbSA9IG5ldyBpbnRbMV07CisgICAgICAgICAgICBleWVhciArPSBmbG9vckRpdmlkZShtb250aCwgMTIsIHJlbSk7CisgICAgICAgICAgICBtb250aCA9IHJlbVswXTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2xlYW4gaXNMZWFwID0gZXllYXIlNCA9PSAwOworICAgICAgICBpbnQgeSA9IGV5ZWFyIC0gMTsKKyAgICAgICAgaW50IGp1bGlhbkRheSA9IDM2NSp5ICsgZmxvb3JEaXZpZGUoeSwgNCkgKyAoSkFOXzFfMV9KVUxJQU5fREFZIC0gMyk7CisKKyAgICAgICAgaXNHcmVnb3JpYW4gPSAoZXllYXIgPj0gZ3JlZ29yaWFuQ3V0b3ZlclllYXIpOworICAgICAgICBpZiAoaW52ZXJ0R3JlZ29yaWFuKSB7CisgICAgICAgICAgICBpc0dyZWdvcmlhbiA9ICFpc0dyZWdvcmlhbjsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNHcmVnb3JpYW4pIHsKKyAgICAgICAgICAgIGlzTGVhcCA9IGlzTGVhcCAmJiAoKGV5ZWFyJTEwMCAhPSAwKSB8fCAoZXllYXIlNDAwID09IDApKTsKKyAgICAgICAgICAgIC8vIEFkZCAyIGJlY2F1c2UgR3JlZ29yaWFuIGNhbGVuZGFyIHN0YXJ0cyAyIGRheXMgYWZ0ZXIKKyAgICAgICAgICAgIC8vIEp1bGlhbiBjYWxlbmRhcgorICAgICAgICAgICAganVsaWFuRGF5ICs9IGZsb29yRGl2aWRlKHksIDQwMCkgLSBmbG9vckRpdmlkZSh5LCAxMDApICsgMjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQganVsaWFuRGF5IGluZGljYXRlcyB0aGUgZGF5IEJFRk9SRSB0aGUgZmlyc3QKKyAgICAgICAgLy8gZGF5IG9mIEphbnVhcnkgMSwgPGV5ZWFyPiBvZiBlaXRoZXIgdGhlIEp1bGlhbiBvciBHcmVnb3JpYW4KKyAgICAgICAgLy8gY2FsZW5kYXIuCisKKyAgICAgICAgaWYgKG1vbnRoICE9IDApIHsKKyAgICAgICAgICAgIGp1bGlhbkRheSArPSBNT05USF9DT1VOVFttb250aF1baXNMZWFwPzM6Ml07CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4ganVsaWFuRGF5OworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvSGVicmV3Q2FsZW5kYXIuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvSGVicmV3Q2FsZW5kYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mYWI2OGUzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9IZWJyZXdDYWxlbmRhci5qYXZhCkBAIC0wLDAgKzEsNzY2IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL0F0dGljL0hlYnJld0NhbGVuZGFyLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMTEvMjggMDA6NTA6MTMgJCAKKyAqICRSZXZpc2lvbjogMS43ICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnV0aWw7CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworCisvKioKKyAqIDxjb2RlPkhlYnJld0NhbGVuZGFyPC9jb2RlPiBpcyBhIHN1YmNsYXNzIG9mIDxjb2RlPkNhbGVuZGFyPC9jb2RlPgorICogdGhhdCB0aGF0IGltcGxlbWVudHMgdGhlIHRyYWRpdGlvbmFsIEhlYnJldyBjYWxlbmRhci4KKyAqIFRoaXMgaXMgdGhlIGNpdmlsIGNhbGVuZGFyIGluIElzcmFlbCBhbmQgdGhlIGxpdHVyZ2ljYWwgY2FsZW5kYXIKKyAqIG9mIHRoZSBKZXdpc2ggZmFpdGggd29ybGR3aWRlLgorICogPHA+CisgKiBUaGUgSGVicmV3IGNhbGVuZGFyIGlzIGx1bmlzb2xhciBhbmQgdGh1cyBoYXMgYSBudW1iZXIgb2YgaW50ZXJlc3RpbmcKKyAqIHByb3BlcnRpZXMgdGhhdCBkaXN0aW5ndWlzaCBpdCBmcm9tIHRoZSBHcmVnb3JpYW4uICBNb250aHMgc3RhcnQKKyAqIG9uIHRoZSBkYXkgb2YgKGFuIGFyaXRobWV0aWMgYXBwcm94aW1hdGlvbiBvZikgZWFjaCBuZXcgbW9vbi4gIFNpbmNlIHRoZQorICogc29sYXIgeWVhciAoYXBwcm94aW1hdGVseSAzNjUuMjQgZGF5cykgaXMgbm90IGFuIGV2ZW4gbXVsdGlwbGUgb2YKKyAqIHRoZSBsdW5hciBtb250aCAoYXBwcm94aW1hdGVseSAyOS41MyBkYXlzKSBhbiBleHRyYSAibGVhcCBtb250aCIgaXMKKyAqIGluc2VydGVkIGluIDcgb3V0IG9mIGV2ZXJ5IDE5IHllYXJzLiAgVG8gbWFrZSBtYXR0ZXJzIGV2ZW4gbW9yZQorICogaW50ZXJlc3RpbmcsIHRoZSBzdGFydCBvZiBhIHllYXIgY2FuIGJlIGRlbGF5ZWQgYnkgdXAgdG8gdGhyZWUgZGF5cworICogaW4gb3JkZXIgdG8gcHJldmVudCBjZXJ0YWluIGhvbGlkYXlzIGZyb20gZmFsbGluZyBvbiB0aGUgU2FiYmF0aCBhbmQKKyAqIHRvIHByZXZlbnQgY2VydGFpbiBpbGxlZ2FsIHllYXIgbGVuZ3Rocy4gIEZpbmFsbHksIHRoZSBsZW5ndGhzIG9mIGNlcnRhaW4KKyAqIG1vbnRocyBjYW4gdmFyeSBkZXBlbmRpbmcgb24gdGhlIG51bWJlciBvZiBkYXlzIGluIHRoZSB5ZWFyLgorICogPHA+CisgKiBUaGUgbGVhcCBtb250aCBpcyBrbm93biBhcyAiQWRhciAxIiBhbmQgaXMgaW5zZXJ0ZWQgYmV0d2VlbiB0aGUKKyAqIG1vbnRocyBvZiBTaGV2YXQgYW5kIEFkYXIgaW4gbGVhcCB5ZWFycy4gIFNpbmNlIHRoZSBsZWFwIG1vbnRoIGRvZXMKKyAqIG5vdCBjb21lIGF0IHRoZSBlbmQgb2YgdGhlIHllYXIsIGNhbGN1bGF0aW9ucyBpbnZvbHZpbmcKKyAqIG1vbnRoIG51bWJlcnMgYXJlIHBhcnRpY3VsYXJseSBjb21wbGV4LiAgVXNlcnMgb2YgdGhpcyBjbGFzcyBzaG91bGQKKyAqIG1ha2Ugc3VyZSB0byB1c2UgdGhlIHtAbGluayAjcm9sbCByb2xsfSBhbmQge0BsaW5rICNhZGQgYWRkfSBtZXRob2RzCisgKiByYXRoZXIgdGhhbiBhdHRlbXB0aW5nIHRvIHBlcmZvcm0gZGF0ZSBhcml0aG1ldGljIGJ5IG1hbmlwdWxhdGluZworICogdGhlIGZpZWxkcyBkaXJlY3RseS4KKyAqIDxwPgorICogPGI+Tm90ZTo8L2I+IEluIHRoZSB0cmFkaXRpb25hbCBIZWJyZXcgY2FsZW5kYXIsIGRheXMgc3RhcnQgYXQgc3Vuc2V0LgorICogSG93ZXZlciwgaW4gb3JkZXIgdG8ga2VlcCB0aGUgdGltZSBmaWVsZHMgaW4gdGhpcyBjbGFzcworICogc3luY2hyb25pemVkIHdpdGggdGhvc2Ugb2YgdGhlIG90aGVyIGNhbGVuZGFycyBhbmQgd2l0aCBsb2NhbCBjbG9jayB0aW1lLAorICogd2UgdHJlYXQgZGF5cyBhbmQgbW9udGhzIGFzIGJlZ2lubmluZyBhdCBtaWRuaWdodCwKKyAqIHJvdWdobHkgNiBob3VycyBhZnRlciB0aGUgY29ycmVzcG9uZGluZyBzdW5zZXQuCisgKiA8cD4KKyAqIElmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBydWxlcyBiZWhpbmQgdGhlIEhlYnJldworICogY2FsZW5kYXIsIHNlZSBvbmUgb2YgdGhlIGZvbGxvd2luZyByZWZlcmVuY2VzOgorICogPHVsPgorICogPGxpPiI8YSBocmVmPSJodHRwOi8vd3d3LmFtYXpvbi5jb20vZXhlYy9vYmlkb3MvQVNJTi8wNTIxNTY0NzQzIj5DYWxlbmRyaWNhbCBDYWxjdWxhdGlvbnM8L2E+IiwKKyAqICAgICAgYnkgTmFjaHVtIERlcnNob3dpdHogJiBFZHdhcmQgUmVpbmdvbGQsIENhbWJyaWRnZSBVbml2ZXJzaXR5IFByZXNzLCAxOTk3LCBwYWdlcyA4NS05MS4KKyAqCisgKiA8bGk+SGVicmV3IENhbGVuZGFyIFNjaWVuY2UgYW5kIE15dGhzLAorICogICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NpdGllcy5jb20vQXRoZW5zLzE1ODQvIj4KKyAqICAgICAgaHR0cDovL3d3dy5nZW9jaXRpZXMuY29tL0F0aGVucy8xNTg0LzwvYT4KKyAqCisgKiA8bGk+VGhlIENhbGVuZGFyIEZBUSwKKyAqICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5waXAuZGtuZXQuZGsvfnBpcDEwMTYwL2NhbGVuZGFyLmh0bWwiPgorICogICAgICBodHRwOi8vd3d3LnBpcC5ka25ldC5kay9+cGlwMTAxNjAvY2FsZW5kYXIuaHRtbDwvYT4KKyAqIDwvdWw+CisgKiA8cD4KKyAqIEBzZWUgY29tLmlibS51dGlsLkdyZWdvcmlhbkNhbGVuZGFyCisgKgorICogQGF1dGhvciBMYXVyYSBXZXJuZXIKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqLworcHVibGljIGNsYXNzIEhlYnJld0NhbGVuZGFyIGV4dGVuZHMgQ2FsZW5kYXIgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNvcHlyaWdodCA9ICJDb3B5cmlnaHQgXHUwMGE5IDE5OTctMTk5OCBJQk0gQ29ycC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4iOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gVG9ucyBvJyBDb25zdGFudHMuLi4KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKiBDb25zdGFudCBmb3IgVGlzaHJpLCB0aGUgMXN0IG1vbnRoIG9mIHRoZSBIZWJyZXcgeWVhci4gKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUSVNIUkkgPSAwOworCisgICAgLyoqIENvbnN0YW50IGZvciBIZXNodmFuLCB0aGUgMm5kIG1vbnRoIG9mIHRoZSBIZWJyZXcgeWVhci4gKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBIRVNIVkFOID0gMTsKKworICAgIC8qKiBDb25zdGFudCBmb3IgS2lzbGV2LCB0aGUgM3JkIG1vbnRoIG9mIHRoZSBIZWJyZXcgeWVhci4gKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLSVNMRVYgPSAyOworCisgICAgLyoqIENvbnN0YW50IGZvciBUZXZldCwgdGhlIDR0aCBtb250aCBvZiB0aGUgSGVicmV3IHllYXIuICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEVWRVQgPSAzOworCisgICAgLyoqIENvbnN0YW50IGZvciBTaGV2YXQsIHRoZSA1dGggbW9udGggb2YgdGhlIEhlYnJldyB5ZWFyLiAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNIRVZBVCA9IDQ7CisKKyAgICAvKioKKyAgICAgKiBDb25zdGFudCBmb3IgQWRhciBJLCB0aGUgNnRoIG1vbnRoIG9mIHRoZSBIZWJyZXcgeWVhcgorICAgICAqIChwcmVzZW50IGluIGxlYXAgeWVhcnMgb25seSkuIEluIG5vbi1sZWFwIHllYXJzLCB0aGUgY2FsZW5kYXIKKyAgICAgKiBqdW1wcyBmcm9tIFNoZXZhdCAoNXRoIG1vbnRoKSB0byBBZGFyICg3dGggbW9udGgpLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFEQVJfMSA9IDU7CisKKyAgICAvKiogQ29uc3RhbnQgZm9yIHRoZSBBZGFyLCB0aGUgN3RoIG1vbnRoIG9mIHRoZSBIZWJyZXcgeWVhci4gKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBREFSID0gNjsKKworICAgIC8qKiBDb25zdGFudCBmb3IgTmlzYW4sIHRoZSA4dGggbW9udGggb2YgdGhlIEhlYnJldyB5ZWFyLiAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE5JU0FOID0gNzsKKworICAgIC8qKiBDb25zdGFudCBmb3IgSXlhciwgdGhlIDl0aCBtb250aCBvZiB0aGUgSGVicmV3IHllYXIuICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSVlBUiA9IDg7CisKKyAgICAvKiogQ29uc3RhbnQgZm9yIFNpdmFuLCB0aGUgMTB0aCBtb250aCBvZiB0aGUgSGVicmV3IHllYXIuICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0lWQU4gPSA5OworCisgICAgLyoqIENvbnN0YW50IGZvciBUYW1tdXosIHRoZSAxMXRoIG1vbnRoIG9mIHRoZSBIZWJyZXcgeWVhci4gKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUQU1VWiA9IDEwOworCisgICAgLyoqIENvbnN0YW50IGZvciBBdiwgdGhlIDEydGggbW9udGggb2YgdGhlIEhlYnJldyB5ZWFyLiAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFWID0gMTE7CisKKyAgICAvKiogQ29uc3RhbnQgZm9yIEVsdWwsIHRoZSAxM3RoIG1vbnRoIG9mIHRoZSBIZWJyZXcgeWVhci4gKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFTFVMID0gMTI7CisKKyAgICAvKioKKyAgICAgKiBUaGUgYWJzb2x1dGUgZGF0ZSwgaW4gbWlsbGlzZWNvbmRzIHNpbmNlIDEvMS8xOTcwIEFELCBHcmVnb3JpYW4sCisgICAgICogb2YgdGhlIHN0YXJ0IG9mIHRoZSBIZWJyZXcgY2FsZW5kYXIuICBJbiBvcmRlciB0byBrZWVwIHRoaXMgY2FsZW5kYXIncworICAgICAqIHRpbWUgb2YgZGF5IGluIHN5bmMgd2l0aCB0aGF0IG9mIHRoZSBHcmVnb3JpYW4gY2FsZW5kYXIsIHdlIHVzZQorICAgICAqIG1pZG5pZ2h0LCByYXRoZXIgdGhhbiBzdW5zZXQgdGhlIGRheSBiZWZvcmUuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBFUE9DSF9NSUxMSVMgPSAtMTgwNzk5ODYyNDAwMDAwTDsgLy8gMS8xLzEgSFkKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMSU1JVFNbXVtdID0geworICAgICAgICAvLyBNaW5pbXVtICBHcmVhdGVzdCAgICBMZWFzdCAgTWF4aW11bQorICAgICAgICAvLyAgICAgICAgICAgTWluaW11bSAgTWF4aW11bQorICAgICAgICB7ICAgICAgICAwLCAgICAgICAgMCwgICAgICAgMCwgICAgICAgMCB9LCAvLyBFUkEKKyAgICAgICAgeyAgICAgICAgMSwgICAgICAgIDEsIDUwMDAwMDAsIDUwMDAwMDAgfSwgLy8gWUVBUgorICAgICAgICB7ICAgICAgICAwLCAgICAgICAgMCwgICAgICAxMiwgICAgICAxMiB9LCAvLyBNT05USAorICAgICAgICB7ICAgICAgICAxLCAgICAgICAgMSwgICAgICA1MSwgICAgICA1NiB9LCAvLyBXRUVLX09GX1lFQVIKKyAgICAgICAgeyAgICAgICAgMCwgICAgICAgIDAsICAgICAgIDUsICAgICAgIDYgfSwgLy8gV0VFS19PRl9NT05USAorICAgICAgICB7ICAgICAgICAxLCAgICAgICAgMSwgICAgICAyOSwgICAgICAzMCB9LCAvLyBEQVlfT0ZfTU9OVEgKKyAgICAgICAgeyAgICAgICAgMSwgICAgICAgIDEsICAgICAzNTMsICAgICAzODUgfSwgLy8gREFZX09GX1lFQVIKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gREFZX09GX1dFRUsKKyAgICAgICAgeyAgICAgICAtMSwgICAgICAgLTEsICAgICAgIDQsICAgICAgIDYgfSwgLy8gREFZX09GX1dFRUtfSU5fTU9OVEgKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gQU1fUE0KKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gSE9VUgorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBIT1VSX09GX0RBWQorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBNSU5VVEUKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gU0VDT05ECisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIE1JTExJU0VDT05ECisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIFpPTkVfT0ZGU0VUCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIERTVF9PRkZTRVQKKyAgICAgICAgeyAtNTAwMDAwMSwgLTUwMDAwMDEsIDUwMDAwMDEsIDUwMDAwMDEgfSwgLy8gWUVBUl9XT1kKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gRE9XX0xPQ0FMCisgICAgICAgIHsgLTUwMDAwMDAsIC01MDAwMDAwLCA1MDAwMDAwLCA1MDAwMDAwIH0sIC8vIEVYVEVOREVEX1lFQVIKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gSlVMSUFOX0RBWQorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBNSUxMSVNFQ09ORFNfSU5fREFZCisgICAgfTsKKworICAgIC8qKgorICAgICAqIFRoZSBsZW5ndGhzIG9mIHRoZSBIZWJyZXcgbW9udGhzLiAgVGhpcyBpcyBjb21wbGljYXRlZCwgYmVjYXVzZSB0aGVyZQorICAgICAqIGFyZSB0aHJlZSBkaWZmZXJlbnQgdHlwZXMgb2YgeWVhcnMsIG9yIHNpeCBpZiB5b3UgY291bnQgbGVhcCB5ZWFycy4KKyAgICAgKiBEdWUgdG8gdGhlIHJ1bGVzIGZvciBwb3N0cG9uaW5nIHRoZSBzdGFydCBvZiB0aGUgeWVhciB0byBhdm9pZCBoYXZpbmcKKyAgICAgKiBjZXJ0YWluIGhvbGlkYXlzIGZhbGwgb24gdGhlIHNhYmJhdGgsIHRoZSB5ZWFyIGNhbiBlbmQgdXAgYmVpbmcgdGhyZWUKKyAgICAgKiBkaWZmZXJlbnQgbGVuZ3RocywgY2FsbGVkICJkZWZpY2llbnQiLCAibm9ybWFsIiwgYW5kICJjb21wbGV0ZSIuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1PTlRIX0xFTkdUSFtdW10gPSB7CisgICAgICAgIC8vIERlZmljaWVudCAgTm9ybWFsICAgICBDb21wbGV0ZQorICAgICAgICB7ICAgMzAsICAgICAgICAgMzAsICAgICAgICAgMzAgICAgIH0sICAgICAgICAgICAvL1Rpc2hyaQorICAgICAgICB7ICAgMjksICAgICAgICAgMjksICAgICAgICAgMzAgICAgIH0sICAgICAgICAgICAvL0hlc2h2YW4KKyAgICAgICAgeyAgIDI5LCAgICAgICAgIDMwLCAgICAgICAgIDMwICAgICB9LCAgICAgICAgICAgLy9LaXNsZXYKKyAgICAgICAgeyAgIDI5LCAgICAgICAgIDI5LCAgICAgICAgIDI5ICAgICB9LCAgICAgICAgICAgLy9UZXZldAorICAgICAgICB7ICAgMzAsICAgICAgICAgMzAsICAgICAgICAgMzAgICAgIH0sICAgICAgICAgICAvL1NoZXZhdAorICAgICAgICB7ICAgMzAsICAgICAgICAgMzAsICAgICAgICAgMzAgICAgIH0sICAgICAgICAgICAvL0FkYXIgSSAobGVhcCB5ZWFycyBvbmx5KQorICAgICAgICB7ICAgMjksICAgICAgICAgMjksICAgICAgICAgMjkgICAgIH0sICAgICAgICAgICAvL0FkYXIKKyAgICAgICAgeyAgIDMwLCAgICAgICAgIDMwLCAgICAgICAgIDMwICAgICB9LCAgICAgICAgICAgLy9OaXNhbgorICAgICAgICB7ICAgMjksICAgICAgICAgMjksICAgICAgICAgMjkgICAgIH0sICAgICAgICAgICAvL0l5YXIKKyAgICAgICAgeyAgIDMwLCAgICAgICAgIDMwLCAgICAgICAgIDMwICAgICB9LCAgICAgICAgICAgLy9TaXZhbgorICAgICAgICB7ICAgMjksICAgICAgICAgMjksICAgICAgICAgMjkgICAgIH0sICAgICAgICAgICAvL1RhbW11egorICAgICAgICB7ICAgMzAsICAgICAgICAgMzAsICAgICAgICAgMzAgICAgIH0sICAgICAgICAgICAvL0F2CisgICAgICAgIHsgICAyOSwgICAgICAgICAyOSwgICAgICAgICAyOSAgICAgfSwgICAgICAgICAgIC8vRWx1bAorICAgIH07CisKKyAgICAvKioKKyAgICAgKiBUaGUgY3VtdWxhdGl2ZSAjIG9mIGRheXMgdG8gdGhlIGVuZCBvZiBlYWNoIG1vbnRoIGluIGEgbm9uLWxlYXAgeWVhcgorICAgICAqIEFsdGhvdWdoIHRoaXMgY2FuIGJlIGNhbGN1bGF0ZWQgZnJvbSB0aGUgTU9OVEhfTEVOR1RIIHRhYmxlLAorICAgICAqIGtlZXBpbmcgaXQgYXJvdW5kIHNlcGFyYXRlbHkgbWFrZXMgc29tZSBjYWxjdWxhdGlvbnMgYSBsb3QgZmFzdGVyCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1PTlRIX1NUQVJUW11bXSA9IHsKKyAgICAgICAgLy8gRGVmaWNpZW50ICBOb3JtYWwgICAgIENvbXBsZXRlCisgICAgICAgIHsgICAgMCwgICAgICAgICAgMCwgICAgICAgICAgMCAgfSwgICAgICAgICAgLy8gKHBsYWNlaG9sZGVyKQorICAgICAgICB7ICAgMzAsICAgICAgICAgMzAsICAgICAgICAgMzAgIH0sICAgICAgICAgIC8vIFRpc2hyaQorICAgICAgICB7ICAgNTksICAgICAgICAgNTksICAgICAgICAgNjAgIH0sICAgICAgICAgIC8vIEhlc2h2YW4KKyAgICAgICAgeyAgIDg4LCAgICAgICAgIDg5LCAgICAgICAgIDkwICB9LCAgICAgICAgICAvLyBLaXNsZXYKKyAgICAgICAgeyAgMTE3LCAgICAgICAgMTE4LCAgICAgICAgMTE5ICB9LCAgICAgICAgICAvLyBUZXZldAorICAgICAgICB7ICAxNDcsICAgICAgICAxNDgsICAgICAgICAxNDkgIH0sICAgICAgICAgIC8vIFNoZXZhdAorICAgICAgICB7ICAxNDcsICAgICAgICAxNDgsICAgICAgICAxNDkgIH0sICAgICAgICAgIC8vIChBZGFyIEkpCisgICAgICAgIHsgIDE3NiwgICAgICAgIDE3NywgICAgICAgIDE3OCAgfSwgICAgICAgICAgLy8gQWRhcgorICAgICAgICB7ICAyMDYsICAgICAgICAyMDcsICAgICAgICAyMDggIH0sICAgICAgICAgIC8vIE5pc2FuCisgICAgICAgIHsgIDIzNSwgICAgICAgIDIzNiwgICAgICAgIDIzNyAgfSwgICAgICAgICAgLy8gSXlhcgorICAgICAgICB7ICAyNjUsICAgICAgICAyNjYsICAgICAgICAyNjcgIH0sICAgICAgICAgIC8vIFNpdmFuCisgICAgICAgIHsgIDI5NCwgICAgICAgIDI5NSwgICAgICAgIDI5NiAgfSwgICAgICAgICAgLy8gVGFtbXV6CisgICAgICAgIHsgIDMyNCwgICAgICAgIDMyNSwgICAgICAgIDMyNiAgfSwgICAgICAgICAgLy8gQXYKKyAgICAgICAgeyAgMzUzLCAgICAgICAgMzU0LCAgICAgICAgMzU1ICB9LCAgICAgICAgICAvLyBFbHVsCisgICAgfTsKKworICAgIC8qKgorICAgICAqIFRoZSBjdW11bGF0aXZlICMgb2YgZGF5cyB0byB0aGUgZW5kIG9mIGVhY2ggbW9udGggaW4gYSBsZWFwIHllYXIKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTEVBUF9NT05USF9TVEFSVFtdW10gPSB7CisgICAgICAgIC8vIERlZmljaWVudCAgTm9ybWFsICAgICBDb21wbGV0ZQorICAgICAgICB7ICAgIDAsICAgICAgICAgIDAsICAgICAgICAgIDAgIH0sICAgICAgICAgIC8vIChwbGFjZWhvbGRlcikKKyAgICAgICAgeyAgIDMwLCAgICAgICAgIDMwLCAgICAgICAgIDMwICB9LCAgICAgICAgICAvLyBUaXNocmkKKyAgICAgICAgeyAgIDU5LCAgICAgICAgIDU5LCAgICAgICAgIDYwICB9LCAgICAgICAgICAvLyBIZXNodmFuCisgICAgICAgIHsgICA4OCwgICAgICAgICA4OSwgICAgICAgICA5MCAgfSwgICAgICAgICAgLy8gS2lzbGV2CisgICAgICAgIHsgIDExNywgICAgICAgIDExOCwgICAgICAgIDExOSAgfSwgICAgICAgICAgLy8gVGV2ZXQKKyAgICAgICAgeyAgMTQ3LCAgICAgICAgMTQ4LCAgICAgICAgMTQ5ICB9LCAgICAgICAgICAvLyBTaGV2YXQKKyAgICAgICAgeyAgMTc3LCAgICAgICAgMTc4LCAgICAgICAgMTc5ICB9LCAgICAgICAgICAvLyBBZGFyIEkKKyAgICAgICAgeyAgMjA2LCAgICAgICAgMjA3LCAgICAgICAgMjA4ICB9LCAgICAgICAgICAvLyBBZGFyIElJCisgICAgICAgIHsgIDIzNiwgICAgICAgIDIzNywgICAgICAgIDIzOCAgfSwgICAgICAgICAgLy8gTmlzYW4KKyAgICAgICAgeyAgMjY1LCAgICAgICAgMjY2LCAgICAgICAgMjY3ICB9LCAgICAgICAgICAvLyBJeWFyCisgICAgICAgIHsgIDI5NSwgICAgICAgIDI5NiwgICAgICAgIDI5NyAgfSwgICAgICAgICAgLy8gU2l2YW4KKyAgICAgICAgeyAgMzI0LCAgICAgICAgMzI1LCAgICAgICAgMzI2ICB9LCAgICAgICAgICAvLyBUYW1tdXoKKyAgICAgICAgeyAgMzU0LCAgICAgICAgMzU1LCAgICAgICAgMzU2ICB9LCAgICAgICAgICAvLyBBdgorICAgICAgICB7ICAzODMsICAgICAgICAzODQsICAgICAgICAzODUgIH0sICAgICAgICAgIC8vIEVsdWwKKyAgICB9OworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gRGF0YSBNZW1iZXJzLi4uCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBwcml2YXRlIHN0YXRpYyBDYWxlbmRhckNhY2hlIGNhY2hlID0gbmV3IENhbGVuZGFyQ2FjaGUoKTsKKyAgICAKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBDb25zdHJ1Y3RvcnMuLi4KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSBkZWZhdWx0IDxjb2RlPkhlYnJld0NhbGVuZGFyPC9jb2RlPiB1c2luZyB0aGUgY3VycmVudCB0aW1lCisgICAgICogaW4gdGhlIGRlZmF1bHQgdGltZSB6b25lIHdpdGggdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqLworICAgIHB1YmxpYyBIZWJyZXdDYWxlbmRhcigpIHsKKyAgICAgICAgdGhpcyhUaW1lWm9uZS5nZXREZWZhdWx0KCksIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSA8Y29kZT5IZWJyZXdDYWxlbmRhcjwvY29kZT4gYmFzZWQgb24gdGhlIGN1cnJlbnQgdGltZQorICAgICAqIGluIHRoZSBnaXZlbiB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gem9uZSBUaGUgdGltZSB6b25lIGZvciB0aGUgbmV3IGNhbGVuZGFyLgorICAgICAqLworICAgIHB1YmxpYyBIZWJyZXdDYWxlbmRhcihUaW1lWm9uZSB6b25lKSB7CisgICAgICAgIHRoaXMoem9uZSwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIDxjb2RlPkhlYnJld0NhbGVuZGFyPC9jb2RlPiBiYXNlZCBvbiB0aGUgY3VycmVudCB0aW1lCisgICAgICogaW4gdGhlIGRlZmF1bHQgdGltZSB6b25lIHdpdGggdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBhTG9jYWxlIFRoZSBsb2NhbGUgZm9yIHRoZSBuZXcgY2FsZW5kYXIuCisgICAgICovCisgICAgcHVibGljIEhlYnJld0NhbGVuZGFyKExvY2FsZSBhTG9jYWxlKSB7CisgICAgICAgIHRoaXMoVGltZVpvbmUuZ2V0RGVmYXVsdCgpLCBhTG9jYWxlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+SGVicmV3Q2FsZW5kYXI8L2NvZGU+IGJhc2VkIG9uIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgKiBpbiB0aGUgZ2l2ZW4gdGltZSB6b25lIHdpdGggdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB6b25lIFRoZSB0aW1lIHpvbmUgZm9yIHRoZSBuZXcgY2FsZW5kYXIuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYUxvY2FsZSBUaGUgbG9jYWxlIGZvciB0aGUgbmV3IGNhbGVuZGFyLgorICAgICAqLworICAgIHB1YmxpYyBIZWJyZXdDYWxlbmRhcihUaW1lWm9uZSB6b25lLCBMb2NhbGUgYUxvY2FsZSkgeworICAgICAgICBzdXBlcih6b25lLCBhTG9jYWxlKTsKKyAgICAgICAgc2V0VGltZUluTWlsbGlzKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+SGVicmV3Q2FsZW5kYXI8L2NvZGU+IHdpdGggdGhlIGdpdmVuIGRhdGUgc2V0CisgICAgICogaW4gdGhlIGRlZmF1bHQgdGltZSB6b25lIHdpdGggdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqCisgICAgICogQHBhcmFtIHllYXIgICAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNZRUFSIFlFQVJ9IHRpbWUgZmllbGQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbW9udGggICAgIFRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgY2FsZW5kYXIncyB7QGxpbmsgI01PTlRIIE1PTlRIfSB0aW1lIGZpZWxkLgorICAgICAqICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIGlzIDAtYmFzZWQuIGUuZy4sIDAgZm9yIFRpc2hyaS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXRlICAgICAgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBjYWxlbmRhcidzIHtAbGluayAjREFURSBEQVRFfSB0aW1lIGZpZWxkLgorICAgICAqLworICAgIHB1YmxpYyBIZWJyZXdDYWxlbmRhcihpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF0ZSkgeworICAgICAgICBzdXBlcihUaW1lWm9uZS5nZXREZWZhdWx0KCksIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgICAgICB0aGlzLnNldChZRUFSLCB5ZWFyKTsKKyAgICAgICAgdGhpcy5zZXQoTU9OVEgsIG1vbnRoKTsKKyAgICAgICAgdGhpcy5zZXQoREFURSwgZGF0ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIDxjb2RlPkhlYnJld0NhbGVuZGFyPC9jb2RlPiB3aXRoIHRoZSBnaXZlbiBkYXRlIHNldAorICAgICAqIGluIHRoZSBkZWZhdWx0IHRpbWUgem9uZSB3aXRoIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXRlICAgICAgVGhlIGRhdGUgdG8gd2hpY2ggdGhlIG5ldyBjYWxlbmRhciBpcyBzZXQuCisgICAgICovCisgICAgcHVibGljIEhlYnJld0NhbGVuZGFyKERhdGUgZGF0ZSkgeworICAgICAgICBzdXBlcihUaW1lWm9uZS5nZXREZWZhdWx0KCksIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgICAgICB0aGlzLnNldFRpbWUoZGF0ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIDxjb2RlPkhlYnJld0NhbGVuZGFyPC9jb2RlPiB3aXRoIHRoZSBnaXZlbiBkYXRlCisgICAgICogYW5kIHRpbWUgc2V0IGZvciB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0geWVhciAgICAgIFRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgY2FsZW5kYXIncyB7QGxpbmsgI1lFQVIgWUVBUn0gdGltZSBmaWVsZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtb250aCAgICAgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBjYWxlbmRhcidzIHtAbGluayAjTU9OVEggTU9OVEh9IHRpbWUgZmllbGQuCisgICAgICogICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgaXMgMC1iYXNlZC4gZS5nLiwgMCBmb3IgVGlzaHJpLgorICAgICAqCisgICAgICogQHBhcmFtIGRhdGUgICAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNEQVRFIERBVEV9IHRpbWUgZmllbGQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gaG91ciAgICAgIFRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgY2FsZW5kYXIncyB7QGxpbmsgI0hPVVJfT0ZfREFZIEhPVVJfT0ZfREFZfSB0aW1lIGZpZWxkLgorICAgICAqCisgICAgICogQHBhcmFtIG1pbnV0ZSAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNNSU5VVEUgTUlOVVRFfSB0aW1lIGZpZWxkLgorICAgICAqCisgICAgICogQHBhcmFtIHNlY29uZCAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNTRUNPTkQgU0VDT05EfSB0aW1lIGZpZWxkLgorICAgICAqLworICAgIHB1YmxpYyBIZWJyZXdDYWxlbmRhcihpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF0ZSwgaW50IGhvdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaW51dGUsIGludCBzZWNvbmQpCisgICAgeworICAgICAgICBzdXBlcihUaW1lWm9uZS5nZXREZWZhdWx0KCksIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgICAgICB0aGlzLnNldChZRUFSLCB5ZWFyKTsKKyAgICAgICAgdGhpcy5zZXQoTU9OVEgsIG1vbnRoKTsKKyAgICAgICAgdGhpcy5zZXQoREFURSwgZGF0ZSk7CisgICAgICAgIHRoaXMuc2V0KEhPVVJfT0ZfREFZLCBob3VyKTsKKyAgICAgICAgdGhpcy5zZXQoTUlOVVRFLCBtaW51dGUpOworICAgICAgICB0aGlzLnNldChTRUNPTkQsIHNlY29uZCk7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gUm9sbGluZyBhbmQgYWRkaW5nIGZ1bmN0aW9ucyBvdmVycmlkZGVuIGZyb20gQ2FsZW5kYXIKKyAgICAvLworICAgIC8vIFRoZXNlIG1ldGhvZHMgY2FsbCB0aHJvdWdoIHRvIHRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGluIElCTUNhbGVuZGFyCisgICAgLy8gZm9yIG1vc3Qgb2YgdGhlIGZpZWxkcyBhbmQgb25seSBoYW5kbGUgdGhlIHVudXN1YWwgb25lcyB0aGVtc2VsdmVzLgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogQWRkIGEgc2lnbmVkIGFtb3VudCB0byBhIHNwZWNpZmllZCBmaWVsZCwgdXNpbmcgdGhpcyBjYWxlbmRhcidzIHJ1bGVzLgorICAgICAqIEZvciBleGFtcGxlLCB0byBhZGQgdGhyZWUgZGF5cyB0byB0aGUgY3VycmVudCBkYXRlLCB5b3UgY2FuIGNhbGwKKyAgICAgKiA8Y29kZT5hZGQoQ2FsZW5kYXIuREFURSwgMyk8L2NvZGU+LiAKKyAgICAgKiA8cD4KKyAgICAgKiBXaGVuIGFkZGluZyB0byBjZXJ0YWluIGZpZWxkcywgdGhlIHZhbHVlcyBvZiBvdGhlciBmaWVsZHMgbWF5IGNvbmZsaWN0IGFuZAorICAgICAqIG5lZWQgdG8gYmUgY2hhbmdlZC4gIEZvciBleGFtcGxlLCB3aGVuIGFkZGluZyBvbmUgdG8gdGhlIHtAbGluayAjTU9OVEggTU9OVEh9IGZpZWxkCisgICAgICogZm9yIHRoZSBkYXRlICIzMCBBdiA1NzU4IiwgdGhlIHtAbGluayAjREFZX09GX01PTlRIIERBWV9PRl9NT05USH0gZmllbGQKKyAgICAgKiBtdXN0IGJlIGFkanVzdGVkIHNvIHRoYXQgdGhlIHJlc3VsdCBpcyAiMjkgRWx1bCA1NzU4IiByYXRoZXIgdGhhbiB0aGUgaW52YWxpZAorICAgICAqICIzMCBFbHVsIDU3NTgiLgorICAgICAqIDxwPgorICAgICAqIFRoaXMgbWV0aG9kIGlzIGFibGUgdG8gYWRkIHRvCisgICAgICogYWxsIGZpZWxkcyBleGNlcHQgZm9yIHtAbGluayAjRVJBIEVSQX0sIHtAbGluayAjRFNUX09GRlNFVCBEU1RfT0ZGU0VUfSwKKyAgICAgKiBhbmQge0BsaW5rICNaT05FX09GRlNFVCBaT05FX09GRlNFVH0uCisgICAgICogPHA+CisgICAgICogPGI+Tm90ZTo8L2I+IFlvdSBzaG91bGQgYWx3YXlzIHVzZSB7QGxpbmsgI3JvbGwgcm9sbH0gYW5kIGFkZCByYXRoZXIKKyAgICAgKiB0aGFuIGF0dGVtcHRpbmcgdG8gcGVyZm9ybSBhcml0aG1ldGljIG9wZXJhdGlvbnMgZGlyZWN0bHkgb24gdGhlIGZpZWxkcworICAgICAqIG9mIGEgPHR0PkhlYnJld0NhbGVuZGFyPC90dD4uICBTaW5jZSB0aGUge0BsaW5rICNNT05USCBNT05USH0gZmllbGQgYmVoYXZlcworICAgICAqIGRpc2NvbnRpbnVvdXNseSBpbiBub24tbGVhcCB5ZWFycywgc2ltcGxlIGFyaXRobWV0aWMgY2FuIGdpdmUgaW52YWxpZCByZXN1bHRzLgorICAgICAqIDxwPgorICAgICAqIEBwYXJhbSBmaWVsZCAgICAgdGhlIHRpbWUgZmllbGQuCisgICAgICogQHBhcmFtIGFtb3VudCAgICB0aGUgYW1vdW50IHRvIGFkZCB0byB0aGUgZmllbGQuCisgICAgICoKKyAgICAgKiBAZXhjZXB0aW9uICAgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHRoZSBmaWVsZCBpcyBpbnZhbGlkIG9yIHJlZmVycworICAgICAqICAgICAgICAgICAgICB0byBhIGZpZWxkIHRoYXQgY2Fubm90IGJlIGhhbmRsZWQgYnkgdGhpcyBtZXRob2QuCisgICAgICovCisgICAgcHVibGljIHZvaWQgYWRkKGludCBmaWVsZCwgaW50IGFtb3VudCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoZmllbGQpIHsKKyAgICAgICAgY2FzZSBNT05USDogCisgICAgICAgICAgICB7CisvL34gICAgICAgICAgICAgLy8gVGhpcyBzZWVtcyBsaWtlIGEgZ29vZCBpZGVhIGJ1dCBpdCBpc24ndCB3b3JraW5nIDooIC0gQWxhbgorCisvL34gICAgICAgICAgICAgLy8gTU9OVEggaXMgdHJpY2t5LCBiZWNhdXNlIHRoZSBudW1iZXIgb2YgbW9udGhzIHBlciB5ZWFyIHZhcmllcworLy9+ICAgICAgICAgICAgIC8vIEl0J3MgZWFzaWVzdCB0byBqdXN0IGNvbnZlcnQgdG8gYW4gYWJzb2x1dGUgIyBvZiBtb250aHMKKy8vfiAgICAgICAgICAgICAvLyBzaW5jZSB0aGUgZXBvY2gsIGRvIHRoZSBhZGRpdGlvbiwgYW5kIGNvbnZlcnQgYmFjay4KKy8vfiAgICAgICAgICAgICBpbnQgbW9udGggPSAoMjM1ICogZ2V0KFlFQVIpIC0gMjM0KSAvIDE5ICsgZ2V0KE1PTlRIKTsKKy8vfiAgICAgICAgICAgICBtb250aCArPSBhbW91bnQ7CisKKy8vfiAgICAgICAgICAgICAvLyBOb3cgY29udmVydCBiYWNrIHRvIHllYXIgYW5kIG1vbnRoIHZhbHVlcworLy9+ICAgICAgICAgICAgIGludCB5ZWFyID0gKDE5ICogbW9udGggKyAyMzQpIC8gMjM1OworLy9+ICAgICAgICAgICAgIG1vbnRoIC09ICgyMzUgKiB5ZWFyIC0gMjM0KSAvIDE5OworLy9+ICAgICAgICAgICAgIAorLy9+ICAgICAgICAgICAgIC8vIEluIGEgbm9uLWxlYXAgeWVhciwgbW9udGhzIGFmdGVyIHRoZSAobWlzc2luZykgbGVhcCBtb250aAorLy9+ICAgICAgICAgICAgIC8vIG11c3QgYmUgYnVtcGVkIHVwIGJ5IG9uZS4KKy8vfiAgICAgICAgICAgICAvLyBUT0RPOiBidXQgb25seSBpZiB3ZSBzdGFydGVkIGJlZm9yZSB0aGUgbGVhcCBtb250aAorLy9+ICAgICAgICAgICAgIGlmIChtb250aCA+PSBBREFSXzEgJiYgIWlzTGVhcFllYXIoeWVhcikpIHsKKy8vfiAgICAgICAgICAgICAgICAgbW9udGgrKzsKKy8vfiAgICAgICAgICAgICB9CisvL34gICAgICAgICAgICAgc2V0KFlFQVIsIHllYXIpOworLy9+ICAgICAgICAgICAgIHNldChNT05USCwgbW9udGgpOworLy9+ICAgICAgICAgICAgIHBpbkZpZWxkKERBWV9PRl9NT05USCk7CisKKyAgICAgICAgICAgICAgICAvLyBXZSBjYW4ndCBqdXN0IGRvIGEgc2V0KE1PTlRILCBnZXQoTU9OVEgpICsgYW1vdW50KS4gIFRoZQorICAgICAgICAgICAgICAgIC8vIHJlYXNvbiBpcyBBREFSXzEuICBTdXBwb3NlIGFtb3VudCBpcyArMiBhbmQgd2UgbGFuZCBpbgorICAgICAgICAgICAgICAgIC8vIEFEQVJfMSAtLSB0aGVuIHdlIGhhdmUgdG8gYnVtcCB0byBBREFSXzIgYWthIEFEQVIuICBCdXQKKyAgICAgICAgICAgICAgICAvLyBpZiBhbW91bnQgaXMgLTIgYW5kIHdlIGxhbmQgaW4gQURBUl8xLCB0aGVuIHdlIGhhdmUgdG8KKyAgICAgICAgICAgICAgICAvLyBidW1wIHRoZSBvdGhlciB3YXkgLS0gZG93biB0byBTSEVWQVQuICAtIEFsYW4gMTEvMDAKKyAgICAgICAgICAgICAgICBpbnQgbW9udGggPSBnZXQoTU9OVEgpOworICAgICAgICAgICAgICAgIGludCB5ZWFyID0gZ2V0KFlFQVIpOworICAgICAgICAgICAgICAgIC8vcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0hFVkFUID0gNDsKKyAgICAgICAgICAgICAgICAvL3B1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFEQVJfMSA9IDU7CisgICAgICAgICAgICAgICAgLy9wdWJsaWMgc3RhdGljIGZpbmFsIGludCBBREFSID0gNjsKKyAgICAgICAgICAgICAgICBpZiAoYW1vdW50ID4gMCkgeworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoYW1vdW50LS0gPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICArK21vbnRoOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vbnRoID09IEFEQVJfMSAmJiAhaXNMZWFwWWVhcih5ZWFyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsrbW9udGg7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9udGggPiBFTFVMKSB7IC8vIExhc3QgbW9udGggb2YgeWVhcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbnRoID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArK3llYXI7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoYW1vdW50KysgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAtLW1vbnRoOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1vbnRoID09IEFEQVJfMSAmJiAhaXNMZWFwWWVhcih5ZWFyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tbW9udGg7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobW9udGggPCAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9udGggPSBFTFVMOyAvLyBMYXN0IG1vbnRoIG9mIHllYXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXllYXI7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc2V0KE1PTlRILCBtb250aCk7CisgICAgICAgICAgICAgICAgc2V0KFlFQVIsIHllYXIpOworICAgICAgICAgICAgICAgIHBpbkZpZWxkKERBWV9PRl9NT05USCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHN1cGVyLmFkZChmaWVsZCwgYW1vdW50KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUm9sbHMgKHVwL2Rvd24pIGEgc3BlY2lmaWVkIGFtb3VudCB0aW1lIG9uIHRoZSBnaXZlbiBmaWVsZC4gIEZvcgorICAgICAqIGV4YW1wbGUsIHRvIHJvbGwgdGhlIGN1cnJlbnQgZGF0ZSB1cCBieSB0aHJlZSBkYXlzLCB5b3UgY2FuIGNhbGwKKyAgICAgKiA8Y29kZT5yb2xsKENhbGVuZGFyLkRBVEUsIDMpPC9jb2RlPi4gIElmIHRoZQorICAgICAqIGZpZWxkIGlzIHJvbGxlZCBwYXN0IGl0cyBtYXhpbXVtIGFsbG93YWJsZSB2YWx1ZSwgaXQgd2lsbCAid3JhcCIgYmFjaworICAgICAqIHRvIGl0cyBtaW5pbXVtIGFuZCBjb250aW51ZSByb2xsaW5nLiAgCisgICAgICogRm9yIGV4YW1wbGUsIGNhbGxpbmcgPGNvZGU+cm9sbChDYWxlbmRhci5EQVRFLCAxMCk8L2NvZGU+CisgICAgICogb24gYSBIZWJyZXcgY2FsZW5kYXIgc2V0IHRvICIyNSBBdiA1NzU4IiB3aWxsIHJlc3VsdCBpbiB0aGUgZGF0ZSAiNSBBdiA1NzU4Ii4KKyAgICAgKiA8cD4KKyAgICAgKiBXaGVuIHJvbGxpbmcgY2VydGFpbiBmaWVsZHMsIHRoZSB2YWx1ZXMgb2Ygb3RoZXIgZmllbGRzIG1heSBjb25mbGljdCBhbmQKKyAgICAgKiBuZWVkIHRvIGJlIGNoYW5nZWQuICBGb3IgZXhhbXBsZSwgd2hlbiByb2xsaW5nIHRoZSB7QGxpbmsgI01PTlRIIE1PTlRIfSBmaWVsZAorICAgICAqIHVwd2FyZCBieSBvbmUgZm9yIHRoZSBkYXRlICIzMCBBdiA1NzU4IiwgdGhlIHtAbGluayAjREFZX09GX01PTlRIIERBWV9PRl9NT05USH0gZmllbGQKKyAgICAgKiBtdXN0IGJlIGFkanVzdGVkIHNvIHRoYXQgdGhlIHJlc3VsdCBpcyAiMjkgRWx1bCA1NzU4IiByYXRoZXIgdGhhbiB0aGUgaW52YWxpZAorICAgICAqICIzMCBFbHVsIi4KKyAgICAgKiA8cD4KKyAgICAgKiBUaGlzIG1ldGhvZCBpcyBhYmxlIHRvIHJvbGwKKyAgICAgKiBhbGwgZmllbGRzIGV4Y2VwdCBmb3Ige0BsaW5rICNFUkEgRVJBfSwge0BsaW5rICNEU1RfT0ZGU0VUIERTVF9PRkZTRVR9LAorICAgICAqIGFuZCB7QGxpbmsgI1pPTkVfT0ZGU0VUIFpPTkVfT0ZGU0VUfS4gIFN1YmNsYXNzZXMgbWF5LCBvZiBjb3Vyc2UsIGFkZCBzdXBwb3J0IGZvcgorICAgICAqIGFkZGl0aW9uYWwgZmllbGRzIGluIHRoZWlyIG92ZXJyaWRlcyBvZiA8Y29kZT5yb2xsPC9jb2RlPi4KKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5Ob3RlOjwvYj4gWW91IHNob3VsZCBhbHdheXMgdXNlIHJvbGwgYW5kIHtAbGluayAjYWRkIGFkZH0gcmF0aGVyCisgICAgICogdGhhbiBhdHRlbXB0aW5nIHRvIHBlcmZvcm0gYXJpdGhtZXRpYyBvcGVyYXRpb25zIGRpcmVjdGx5IG9uIHRoZSBmaWVsZHMKKyAgICAgKiBvZiBhIDx0dD5IZWJyZXdDYWxlbmRhcjwvdHQ+LiAgU2luY2UgdGhlIHtAbGluayAjTU9OVEggTU9OVEh9IGZpZWxkIGJlaGF2ZXMKKyAgICAgKiBkaXNjb250aW51b3VzbHkgaW4gbm9uLWxlYXAgeWVhcnMsIHNpbXBsZSBhcml0aG1ldGljIGNhbiBnaXZlIGludmFsaWQgcmVzdWx0cy4KKyAgICAgKiA8cD4KKyAgICAgKiBAcGFyYW0gZmllbGQgICAgIHRoZSB0aW1lIGZpZWxkLgorICAgICAqIEBwYXJhbSBhbW91bnQgICAgdGhlIGFtb3VudCBieSB3aGljaCB0aGUgZmllbGQgc2hvdWxkIGJlIHJvbGxlZC4KKyAgICAgKgorICAgICAqIEBleGNlcHRpb24gICBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgdGhlIGZpZWxkIGlzIGludmFsaWQgb3IgcmVmZXJzCisgICAgICogICAgICAgICAgICAgIHRvIGEgZmllbGQgdGhhdCBjYW5ub3QgYmUgaGFuZGxlZCBieSB0aGlzIG1ldGhvZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByb2xsKGludCBmaWVsZCwgaW50IGFtb3VudCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoZmllbGQpIHsKKyAgICAgICAgY2FzZSBNT05USDoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQgbW9udGggPSBnZXQoTU9OVEgpOworICAgICAgICAgICAgICAgIGludCB5ZWFyID0gZ2V0KFlFQVIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGJvb2xlYW4gbGVhcFllYXIgPSBpc0xlYXBZZWFyKHllYXIpOworICAgICAgICAgICAgICAgIGludCB5ZWFyTGVuZ3RoID0gbW9udGhzSW5ZZWFyKHllYXIpOworICAgICAgICAgICAgICAgIGludCBuZXdNb250aCA9IG1vbnRoICsgKGFtb3VudCAlIHllYXJMZW5ndGgpOworICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAgICAgLy8gSWYgaXQncyBub3QgYSBsZWFwIHllYXIgYW5kIHdlJ3JlIHJvbGxpbmcgcGFzdCB0aGUgbWlzc2luZyBtb250aAorICAgICAgICAgICAgICAgIC8vIG9mIEFEQVJfMSwgd2UgbmVlZCB0byByb2xsIGFuIGV4dHJhIG1vbnRoIHRvIG1ha2UgdXAgZm9yIGl0LgorICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAgICAgaWYgKCFsZWFwWWVhcikgeworICAgICAgICAgICAgICAgICAgICBpZiAoYW1vdW50ID4gMCAmJiBtb250aCA8IEFEQVJfMSAmJiBuZXdNb250aCA+PSBBREFSXzEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld01vbnRoKys7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYW1vdW50IDwgMCAmJiBtb250aCA+IEFEQVJfMSAmJiBuZXdNb250aCA8PSBBREFSXzEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld01vbnRoLS07CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc2V0KE1PTlRILCAobmV3TW9udGggKyAxMykgJSAxMyk7CisgICAgICAgICAgICAgICAgcGluRmllbGQoREFZX09GX01PTlRIKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBzdXBlci5yb2xsKGZpZWxkLCBhbW91bnQpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gU3VwcG9ydCBtZXRob2RzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBIZWJyZXcgZGF0ZSBjYWxjdWxhdGlvbnMgYXJlIHBlcmZvcm1lZCBpbiB0ZXJtcyBvZiBkYXlzLCBob3VycywgYW5kCisgICAgLy8gInBhcnRzIiAob3IgaGFsYWtpbSksIHdoaWNoIGFyZSAxLzEwODAgb2YgYW4gaG91ciwgb3IgMyAxLzMgc2Vjb25kcy4KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIEhPVVJfUEFSVFMgPSAxMDgwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgREFZX1BBUlRTICA9IDI0KkhPVVJfUEFSVFM7CisgICAgCisgICAgLy8gQW4gYXBwcm94aW1hdGUgdmFsdWUgZm9yIHRoZSBsZW5ndGggb2YgYSBsdW5hciBtb250aC4KKyAgICAvLyBJdCBpcyB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgeWVhciBhbmQgbW9udGggb2YgYSBnaXZlbgorICAgIC8vIGFic29sdXRlIGRhdGUuCisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgaW50ICBNT05USF9EQVlTID0gMjk7CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgbG9uZyBNT05USF9GUkFDVCA9IDEyKkhPVVJfUEFSVFMgKyA3OTM7CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgbG9uZyBNT05USF9QQVJUUyA9IE1PTlRIX0RBWVMqREFZX1BBUlRTICsgTU9OVEhfRlJBQ1Q7CisgICAgCisgICAgLy8gVGhlIHRpbWUgb2YgdGhlIG5ldyBtb29uIChpbiBwYXJ0cykgb24gMSBUaXNocmksIHllYXIgMSAodGhlIGVwb2NoKQorICAgIC8vIGNvdW50aW5nIGZyb20gbm9vbiBvbiB0aGUgZGF5IGJlZm9yZS4gIEJBSEFSQUQgaXMgYW4gYWJicmV2aWF0aW9uIG9mCisgICAgLy8gQmV0IChNb25kYXkpLCBIZXkgKDUgaG91cnMgZnJvbSBzdW5zZXQpLCBSZXNoLURhbGVkICgyMDQpLgorICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIGxvbmcgQkFIQVJBRCA9IDExKkhPVVJfUEFSVFMgKyAyMDQ7CisKKyAgICAvKioKKyAgICAgKiBGaW5kcyB0aGUgZGF5ICMgb2YgdGhlIGZpcnN0IGRheSBpbiB0aGUgZ2l2ZW4gSGVicmV3IHllYXIuCisgICAgICogVG8gZG8gdGhpcywgd2Ugd2FudCB0byBjYWxjdWxhdGUgdGhlIHRpbWUgb2YgdGhlIFRpc2hyaSAxIG5ldyBtb29uCisgICAgICogaW4gdGhhdCB5ZWFyLgorICAgICAqIDxwPgorICAgICAqIFRoZSBhbGdvcml0aG0gaGVyZSBpcyBzaW1pbGFyIHRvIG9uZXMgZGVzY3JpYmVkIGluIGEgbnVtYmVyIG9mCisgICAgICogcmVmZXJlbmNlcywgaW5jbHVkaW5nOgorICAgICAqIDx1bD4KKyAgICAgKiA8bGk+IkNhbGVuZHJpY2FsIENhbGN1bGF0aW9ucyIsIGJ5IE5hY2h1bSBEZXJzaG93aXR6ICYgRWR3YXJkIFJlaW5nb2xkLAorICAgICAqICAgICBDYW1icmlkZ2UgVW5pdmVyc2l0eSBQcmVzcywgMTk5NywgcGFnZXMgODUtOTEuCisgICAgICoKKyAgICAgKiA8bGk+SGVicmV3IENhbGVuZGFyIFNjaWVuY2UgYW5kIE15dGhzLAorICAgICAqICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lmdlb2NpdGllcy5jb20vQXRoZW5zLzE1ODQvIj4KKyAgICAgKiAgICAgaHR0cDovL3d3dy5nZW9jaXRpZXMuY29tL0F0aGVucy8xNTg0LzwvYT4KKyAgICAgKgorICAgICAqIDxsaT5UaGUgQ2FsZW5kYXIgRkFRLAorICAgICAqICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5waXAuZGtuZXQuZGsvfnBpcDEwMTYwL2NhbGVuZGFyLmZhcTIudHh0Ij4KKyAgICAgKiAgICAgIGh0dHA6Ly93d3cucGlwLmRrbmV0LmRrL35waXAxMDE2MC9jYWxlbmRhci5odG1sPC9hPgorICAgICAqIDwvdWw+CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgbG9uZyBzdGFydE9mWWVhcihpbnQgeWVhcikKKyAgICB7CisgICAgICAgIGxvbmcgZGF5ID0gY2FjaGUuZ2V0KHllYXIpOworICAgICAgICAKKyAgICAgICAgaWYgKGRheSA9PSBDYWxlbmRhckNhY2hlLkVNUFRZKSB7CisgICAgICAgICAgICBpbnQgbW9udGhzID0gKDIzNSAqIHllYXIgLSAyMzQpIC8gMTk7ICAgICAgICAgICAvLyAjIG9mIG1vbnRocyBiZWZvcmUgeWVhcgorCisgICAgICAgICAgICBsb25nIGZyYWMgPSBtb250aHMgKiBNT05USF9GUkFDVCArIEJBSEFSQUQ7ICAgICAvLyBGcmFjdGlvbmFsIHBhcnQgb2YgZGF5ICMKKyAgICAgICAgICAgIGRheSAgPSBtb250aHMgKiAyOSArIChmcmFjIC8gREFZX1BBUlRTKTsgICAvLyBXaG9sZSAjIHBhcnQgb2YgY2FsY3VsYXRpb24KKyAgICAgICAgICAgIGZyYWMgPSBmcmFjICUgREFZX1BBUlRTOyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRpbWUgb2YgZGF5CisKKyAgICAgICAgICAgIGludCB3ZCA9IChpbnQpKGRheSAlIDcpOyAgICAgICAgICAgICAgICAgICAgICAgIC8vIERheSBvZiB3ZWVrICgwID09IE1vbmRheSkKKworICAgICAgICAgICAgaWYgKHdkID09IDIgfHwgd2QgPT0gNCB8fCB3ZCA9PSA2KSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIDFzdCBpcyBvbiBTdW4sIFdlZCwgb3IgRnJpLCBwb3N0cG9uZSB0byB0aGUgbmV4dCBkYXkKKyAgICAgICAgICAgICAgICBkYXkgKz0gMTsKKyAgICAgICAgICAgICAgICB3ZCA9IChpbnQpKGRheSAlIDcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHdkID09IDEgJiYgZnJhYyA+IDE1KkhPVVJfUEFSVFMrMjA0ICYmICFpc0xlYXBZZWFyKHllYXIpICkgeworICAgICAgICAgICAgICAgIC8vIElmIHRoZSBuZXcgbW9vbiBmYWxscyBhZnRlciAzOjExOjIwYW0gKDE1aDIwNHAgZnJvbSB0aGUgcHJldmlvdXMgbm9vbikKKyAgICAgICAgICAgICAgICAvLyBvbiBhIFR1ZXNkYXkgYW5kIGl0IGlzIG5vdCBhIGxlYXAgeWVhciwgcG9zdHBvbmUgYnkgMiBkYXlzLgorICAgICAgICAgICAgICAgIC8vIFRoaXMgcHJldmVudHMgMzU2LWRheSB5ZWFycy4KKyAgICAgICAgICAgICAgICBkYXkgKz0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHdkID09IDAgJiYgZnJhYyA+IDIxKkhPVVJfUEFSVFMrNTg5ICYmIGlzTGVhcFllYXIoeWVhci0xKSApIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgbmV3IG1vb24gZmFsbHMgYWZ0ZXIgOTozMjo0MyAxLzNhbSAoMjFoNTg5cCBmcm9tIHllc3RlcmRheSBub29uKQorICAgICAgICAgICAgICAgIC8vIG9uIGEgTW9uZGF5IGFuZCAqbGFzdCogeWVhciB3YXMgYSBsZWFwIHllYXIsIHBvc3Rwb25lIGJ5IDEgZGF5LgorICAgICAgICAgICAgICAgIC8vIFByZXZlbnRzIDM4Mi1kYXkgeWVhcnMuCisgICAgICAgICAgICAgICAgZGF5ICs9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYWNoZS5wdXQoeWVhciwgZGF5KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZGF5OworICAgIH0KKworICAgIC8qKgorICAgICAqIEZpbmQgdGhlIGRheSBvZiB0aGUgd2VlayBmb3IgYSBnaXZlbiBkYXkKKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXkgICBUaGUgIyBvZiBkYXlzIHNpbmNlIHRoZSBzdGFydCBvZiB0aGUgSGVicmV3IGNhbGVuZGFyLAorICAgICAqICAgICAgICAgICAgICAxLWJhc2VkIChpLmUuIDEvMS8xIEFNIGlzIGRheSAxKS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgYWJzb2x1dGVEYXlUb0RheU9mV2Vlayhsb25nIGRheSkKKyAgICB7CisgICAgICAgIC8vIFdlIGtub3cgdGhhdCAxLzEvMSBBTSBpcyBhIE1vbmRheSwgd2hpY2ggbWFrZXMgdGhlIG1hdGggZWFzeS4uLgorICAgICAgICByZXR1cm4gKGludCkoZGF5ICUgNykgKyAxOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHRoZSB0eXBlIG9mIGEgZ2l2ZW4geWVhci4KKyAgICAgKiAgMCAgICJEZWZpY2llbnQiIHllYXIgd2l0aCAzNTMgb3IgMzgzIGRheXMKKyAgICAgKiAgMSAgICJOb3JtYWwiICAgIHllYXIgd2l0aCAzNTQgb3IgMzg0IGRheXMKKyAgICAgKiAgMiAgICJDb21wbGV0ZSIgIHllYXIgd2l0aCAzNTUgb3IgMzg1IGRheXMKKyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIGludCB5ZWFyVHlwZShpbnQgeWVhcikKKyAgICB7CisgICAgICAgIGludCB5ZWFyTGVuZ3RoID0gaGFuZGxlR2V0WWVhckxlbmd0aCh5ZWFyKTsKKworICAgICAgICBpZiAoeWVhckxlbmd0aCA+IDM4MCkgeworICAgICAgICAgICB5ZWFyTGVuZ3RoIC09IDMwOyAgICAgICAgLy8gU3VidHJhY3QgbGVuZ3RoIG9mIGxlYXAgbW9udGguCisgICAgICAgIH0KKworICAgICAgICBpbnQgdHlwZSA9IDA7CisKKyAgICAgICAgc3dpdGNoICh5ZWFyTGVuZ3RoKSB7CisgICAgICAgICAgICBjYXNlIDM1MzoKKyAgICAgICAgICAgICAgICB0eXBlID0gMDsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM1NDoKKyAgICAgICAgICAgICAgICB0eXBlID0gMTsgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDM1NToKKyAgICAgICAgICAgICAgICB0eXBlID0gMjsgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSWxsZWdhbCB5ZWFyIGxlbmd0aCAiICsgeWVhckxlbmd0aCArICIgaW4geWVhclR5cGUiKTsKKworICAgICAgICB9CisgICAgICAgIHJldHVybiB0eXBlOworICAgIH0KKworICAgIC8qKgorICAgICAqIERldGVybWluZSB3aGV0aGVyIGEgZ2l2ZW4gSGVicmV3IHllYXIgaXMgYSBsZWFwIHllYXIKKyAgICAgKgorICAgICAqIFRoZSBydWxlIGhlcmUgaXMgdGhhdCBpZiAoeWVhciAlIDE5KSA9PSAwLCAzLCA2LCA4LCAxMSwgMTQsIG9yIDE3LgorICAgICAqIFRoZSBmb3JtdWxhIGJlbG93IHBlcmZvcm1zIHRoZSBzYW1lIHRlc3QsIGJlbGlldmUgaXQgb3Igbm90LgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gaXNMZWFwWWVhcihpbnQgeWVhcikgeworICAgICAgICByZXR1cm4gKHllYXIgKiAxMiArIDE3KSAlIDE5ID49IDEyOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGludCBtb250aHNJblllYXIoaW50IHllYXIpIHsKKyAgICAgICAgcmV0dXJuIGlzTGVhcFllYXIoeWVhcikgPyAxMyA6IDEyOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIENhbGVuZGFyIGZyYW1ld29yaworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVHZXRMaW1pdChpbnQgZmllbGQsIGludCBsaW1pdFR5cGUpIHsKKyAgICAgICAgcmV0dXJuIExJTUlUU1tmaWVsZF1bbGltaXRUeXBlXTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBsZW5ndGggb2YgdGhlIGdpdmVuIG1vbnRoIGluIHRoZSBnaXZlbiB5ZWFyCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVHZXRNb250aExlbmd0aChpbnQgZXh0ZW5kZWRZZWFyLCBpbnQgbW9udGgpIHsKKworICAgICAgICBzd2l0Y2ggKG1vbnRoKSB7CisgICAgICAgICAgICBjYXNlIEhFU0hWQU46CisgICAgICAgICAgICBjYXNlIEtJU0xFVjoKKyAgICAgICAgICAgICAgICAvLyBUaGVzZSB0d28gbW9udGggbGVuZ3RocyBjYW4gdmFyeQorICAgICAgICAgICAgICAgIHJldHVybiBNT05USF9MRU5HVEhbbW9udGhdW3llYXJUeXBlKGV4dGVuZGVkWWVhcildOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAvLyBUaGUgcmVzdCBhcmUgYSBmaXhlZCBsZW5ndGgKKyAgICAgICAgICAgICAgICByZXR1cm4gTU9OVEhfTEVOR1RIW21vbnRoXVswXTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBkYXlzIGluIHRoZSBnaXZlbiBIZWJyZXcgeWVhcgorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgaGFuZGxlR2V0WWVhckxlbmd0aChpbnQgZXllYXIpIHsKKyAgICAgICAgcmV0dXJuIChpbnQpKHN0YXJ0T2ZZZWFyKGV5ZWFyKzEpIC0gc3RhcnRPZlllYXIoZXllYXIpKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnZlcnRpbmcgZnJvbSBtaWxsaXNlY29uZHMgdG8gZmllbGQgdmFsdWVzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBTdWJjbGFzc2VzIG1heSBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byBjb21wdXRlIHNldmVyYWwgZmllbGRzCisgICAgICogc3BlY2lmaWMgdG8gZWFjaCBjYWxlbmRhciBzeXN0ZW0uICBUaGVzZSBhcmU6CisgICAgICoKKyAgICAgKiA8dWw+PGxpPkVSQQorICAgICAqIDxsaT5ZRUFSCisgICAgICogPGxpPk1PTlRICisgICAgICogPGxpPkRBWV9PRl9NT05USAorICAgICAqIDxsaT5EQVlfT0ZfWUVBUgorICAgICAqIDxsaT5FWFRFTkRFRF9ZRUFSPC91bD4KKyAgICAgKiAKKyAgICAgKiBTdWJjbGFzc2VzIGNhbiByZWZlciB0byB0aGUgREFZX09GX1dFRUsgYW5kIERPV19MT0NBTCBmaWVsZHMsCisgICAgICogd2hpY2ggd2lsbCBiZSBzZXQgd2hlbiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQuICBTdWJjbGFzc2VzIGNhbgorICAgICAqIGFsc28gY2FsbCB0aGUgZ2V0R3JlZ29yaWFuWHh4KCkgbWV0aG9kcyB0byBvYnRhaW4gR3JlZ29yaWFuCisgICAgICogY2FsZW5kYXIgZXF1aXZhbGVudHMgZm9yIHRoZSBnaXZlbiBKdWxpYW4gZGF5LgorICAgICAqCisgICAgICogPHA+SW4gYWRkaXRpb24sIHN1YmNsYXNzZXMgc2hvdWxkIGNvbXB1dGUgYW55IHN1YmNsYXNzLXNwZWNpZmljCisgICAgICogZmllbGRzLCB0aGF0IGlzLCBmaWVsZHMgZnJvbSBCQVNFX0ZJRUxEX0NPVU5UIHRvCisgICAgICogZ2V0RmllbGRDb3VudCgpIC0gMS4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVDb21wdXRlRmllbGRzKGludCBqdWxpYW5EYXkpIHsKKyAgICAgICAgbG9uZyBkID0ganVsaWFuRGF5IC0gMzQ3OTk3OworICAgICAgICBsb25nIG0gPSAoZCAqIERBWV9QQVJUUykgLyBNT05USF9QQVJUUzsgICAgICAgICAvLyBNb250aHMgKGFwcHJveCkKKyAgICAgICAgaW50IHllYXIgPSAoaW50KSgoMTkgKiBtICsgMjM0KSAvIDIzNSkgKyAxOyAgICAgLy8gWWVhcnMgKGFwcHJveCkKKyAgICAgICAgbG9uZyB5cyAgPSBzdGFydE9mWWVhcih5ZWFyKTsgICAgICAgICAgICAgICAgICAgLy8gMXN0IGRheSBvZiB5ZWFyCisgICAgICAgIGludCBkYXlPZlllYXIgPSAoaW50KShkIC0geXMpOworCisgICAgICAgIC8vIEJlY2F1c2Ugb2YgdGhlIHBvc3Rwb25lbWVudCBydWxlcywgaXQncyBwb3NzaWJsZSB0byBndWVzcyB3cm9uZy4gIEZpeCBpdC4KKyAgICAgICAgd2hpbGUgKGRheU9mWWVhciA8IDEpIHsKKyAgICAgICAgICAgIHllYXItLTsKKyAgICAgICAgICAgIHlzICA9IHN0YXJ0T2ZZZWFyKHllYXIpOworICAgICAgICAgICAgZGF5T2ZZZWFyID0gKGludCkoZCAtIHlzKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE5vdyBmaWd1cmUgb3V0IHdoaWNoIG1vbnRoIHdlJ3JlIGluLCBhbmQgdGhlIGRhdGUgd2l0aGluIHRoYXQgbW9udGgKKyAgICAgICAgaW50IHllYXJUeXBlID0geWVhclR5cGUoeWVhcik7CisgICAgICAgIGludCBtb250aFN0YXJ0W11bXSA9IGlzTGVhcFllYXIoeWVhcikgPyBMRUFQX01PTlRIX1NUQVJUIDogTU9OVEhfU1RBUlQ7CisKKyAgICAgICAgaW50IG1vbnRoID0gMDsKKyAgICAgICAgd2hpbGUgKGRheU9mWWVhciA+IG1vbnRoU3RhcnRbbW9udGhdW3llYXJUeXBlXSkgeworICAgICAgICAgICAgbW9udGgrKzsKKyAgICAgICAgfQorICAgICAgICBtb250aC0tOworICAgICAgICBpbnQgZGF5T2ZNb250aCA9IGRheU9mWWVhciAtIG1vbnRoU3RhcnRbbW9udGhdW3llYXJUeXBlXTsKKworICAgICAgICBpbnRlcm5hbFNldChFUkEsIDApOworICAgICAgICBpbnRlcm5hbFNldChZRUFSLCB5ZWFyKTsKKyAgICAgICAgaW50ZXJuYWxTZXQoRVhURU5ERURfWUVBUiwgeWVhcik7CisgICAgICAgIGludGVybmFsU2V0KE1PTlRILCBtb250aCk7CisgICAgICAgIGludGVybmFsU2V0KERBWV9PRl9NT05USCwgZGF5T2ZNb250aCk7CisgICAgICAgIGludGVybmFsU2V0KERBWV9PRl9ZRUFSLCBkYXlPZlllYXIpOyAgICAgICAKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnZlcnRpbmcgZnJvbSBmaWVsZCB2YWx1ZXMgdG8gbWlsbGlzZWNvbmRzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZUdldEV4dGVuZGVkWWVhcigpIHsKKyAgICAgICAgaW50IHllYXI7CisgICAgICAgIGlmIChuZXdlckZpZWxkKEVYVEVOREVEX1lFQVIsIFlFQVIpID09IEVYVEVOREVEX1lFQVIpIHsKKyAgICAgICAgICAgIHllYXIgPSBpbnRlcm5hbEdldChFWFRFTkRFRF9ZRUFSLCAxKTsgLy8gRGVmYXVsdCB0byB5ZWFyIDEKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHllYXIgPSBpbnRlcm5hbEdldChZRUFSLCAxKTsgLy8gRGVmYXVsdCB0byB5ZWFyIDEKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geWVhcjsKKyAgICB9CisKKyAgICAvLyBSZXR1cm4gSkQgb2Ygc3RhcnQgb2YgZ2l2ZW4gbW9udGgveWVhcgorICAgIHByb3RlY3RlZCBpbnQgaGFuZGxlQ29tcHV0ZU1vbnRoU3RhcnQoaW50IGV5ZWFyLCBpbnQgbW9udGgsIGJvb2xlYW4gdXNlTW9udGgpIHsKKworICAgICAgICAvLyBSZXNvbHZlIG91dC1vZi1yYW5nZSBtb250aHMuICBUaGlzIGlzIG5lY2Vzc2FyeSBpbiBvcmRlciB0bworICAgICAgICAvLyBvYnRhaW4gdGhlIGNvcnJlY3QgeWVhci4KKyAgICAgICAgaWYgKG1vbnRoIDwgMCkgeworICAgICAgICAgICAgd2hpbGUgKG1vbnRoIDwgMCkgeworICAgICAgICAgICAgICAgIG1vbnRoICs9IG1vbnRoc0luWWVhcigtLWV5ZWFyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChtb250aCA+IDApIHsKKyAgICAgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgICAgICBpbnQgbW9udGhzSW5ZZWFyID0gbW9udGhzSW5ZZWFyKGV5ZWFyKTsKKyAgICAgICAgICAgICAgICBpZiAobW9udGggPCBtb250aHNJblllYXIpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICsrZXllYXI7CisgICAgICAgICAgICAgICAgbW9udGggLT0gbW9udGhzSW5ZZWFyOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbG9uZyBkYXkgPSBzdGFydE9mWWVhcihleWVhcik7CisKKyAgICAgICAgaWYgKG1vbnRoICE9IDApIHsKKyAgICAgICAgICAgIGlmIChpc0xlYXBZZWFyKGV5ZWFyKSkgeworICAgICAgICAgICAgICAgIGRheSArPSBMRUFQX01PTlRIX1NUQVJUW21vbnRoXVt5ZWFyVHlwZShleWVhcildOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkYXkgKz0gTU9OVEhfU1RBUlRbbW9udGhdW3llYXJUeXBlKGV5ZWFyKV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gKGludCkgKGRheSArIDM0Nzk5Nyk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9IZWJyZXdIb2xpZGF5LmphdmEgYi9zcmMvY29tL2libS91dGlsL0hlYnJld0hvbGlkYXkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zZDM2MjQxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9IZWJyZXdIb2xpZGF5LmphdmEKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdXRpbC9BdHRpYy9IZWJyZXdIb2xpZGF5LmphdmEsdiAkIAorICogJERhdGU6IDIwMDEvMDIvMjYgMjI6MjE6MTUgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0udXRpbDsKKworcHVibGljIGNsYXNzIEhlYnJld0hvbGlkYXkgZXh0ZW5kcyBIb2xpZGF5Cit7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgSGVicmV3Q2FsZW5kYXIgZ0NhbGVuZGFyID0gbmV3IEhlYnJld0NhbGVuZGFyKCk7CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBob2xpZGF5IGRlZmluZWQgaW4gcmVmZXJlbmNlIHRvIHRoZSBIZWJyZXcgY2FsZW5kYXIuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgaG9saWRheQorICAgICAqLworICAgIHB1YmxpYyBIZWJyZXdIb2xpZGF5KGludCBtb250aCwgaW50IGRhdGUsIFN0cmluZyBuYW1lKQorICAgIHsKKyAgICAgICAgdGhpcyhtb250aCwgZGF0ZSwgMSwgbmFtZSk7CisgICAgfQorCisgICAgcHVibGljIEhlYnJld0hvbGlkYXkoaW50IG1vbnRoLCBpbnQgZGF0ZSwgaW50IGxlbmd0aCwgU3RyaW5nIG5hbWUpCisgICAgeworICAgICAgICBzdXBlcihuYW1lLCBudWxsKTsKKworICAgICAgICBTaW1wbGVEYXRlUnVsZSBydWxlID0gbmV3IFNpbXBsZURhdGVSdWxlKG1vbnRoLCBkYXRlKTsKKyAgICAgICAgcnVsZS5zZXRDYWxlbmRhcihnQ2FsZW5kYXIpOworCisgICAgICAgIHNldFJ1bGUocnVsZSk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBIZWJyZXdIb2xpZGF5CisgICAgICAgIFJPU0hfSEFTSEFOQUggICA9IG5ldyBIZWJyZXdIb2xpZGF5KEhlYnJld0NhbGVuZGFyLlRJU0hSSSwgIDEsICAyLCAgIlJvc2ggSGFzaGFuYWgiKSwKKyAgICAgICAgR0VEQUxJQUggICAgICAgID0gbmV3IEhlYnJld0hvbGlkYXkoSGVicmV3Q2FsZW5kYXIuVElTSFJJLCAgMywgICAgICAiRmFzdCBvZiBHZWRhbGlhaCIpLAorICAgICAgICBZT01fS0lQUFVSICAgICAgPSBuZXcgSGVicmV3SG9saWRheShIZWJyZXdDYWxlbmRhci5USVNIUkksIDEwLCAgICAgICJZb20gS2lwcHVyIiksCisgICAgICAgIFNVS0tPVCAgICAgICAgICA9IG5ldyBIZWJyZXdIb2xpZGF5KEhlYnJld0NhbGVuZGFyLlRJU0hSSSwgMTUsICA2LCAgIlN1a2tvdCIpLAorICAgICAgICBIT1NIQU5BSF9SQUJCQUggPSBuZXcgSGVicmV3SG9saWRheShIZWJyZXdDYWxlbmRhci5USVNIUkksIDIxLCAgICAgICJIb3NoYW5haCBSYWJiYWgiKSwKKyAgICAgICAgU0hFTUlOSV9BVFpFUkVUID0gbmV3IEhlYnJld0hvbGlkYXkoSGVicmV3Q2FsZW5kYXIuVElTSFJJLCAyMiwgICAgICAiU2hlbWluaSBBdHplcmV0IiksCisgICAgICAgIFNJTUNIQVRfVE9SQUggICA9IG5ldyBIZWJyZXdIb2xpZGF5KEhlYnJld0NhbGVuZGFyLlRJU0hSSSwgMjMsICAgICAgIlNpbWNoYXQgVG9yYWgiKSwKKyAgICAgICAgSEFOVUtLQUggICAgICAgID0gbmV3IEhlYnJld0hvbGlkYXkoSGVicmV3Q2FsZW5kYXIuS0lTTEVWLCAyNSwgICAgICAiSGFudWtrYWgiKSwKKyAgICAgICAgVEVWRVRfMTAgICAgICAgID0gbmV3IEhlYnJld0hvbGlkYXkoSGVicmV3Q2FsZW5kYXIuVEVWRVQsICAxMCwgICAgICAiRmFzdCBvZiBUZXZldCAxMCIpLAorICAgICAgICBUVV9CU0hFVkFUICAgICAgPSBuZXcgSGVicmV3SG9saWRheShIZWJyZXdDYWxlbmRhci5TSEVWQVQsIDE1LCAgICAgICJUdSBCJ1NoZXZhdCIpLAorICAgICAgICBFU1RIRVIgICAgICAgICAgPSBuZXcgSGVicmV3SG9saWRheShIZWJyZXdDYWxlbmRhci5BREFSLCAgIDEzLCAgICAgICJGYXN0IG9mIEVzdGhlciIpLAorICAgICAgICBQVVJJTSAgICAgICAgICAgPSBuZXcgSGVicmV3SG9saWRheShIZWJyZXdDYWxlbmRhci5BREFSLCAgIDE0LCAgICAgICJQdXJpbSIpLAorICAgICAgICBTSFVTSEFOX1BVUklNICAgPSBuZXcgSGVicmV3SG9saWRheShIZWJyZXdDYWxlbmRhci5BREFSLCAgIDE1LCAgICAgICJTaHVzaGFuIFB1cmltIiksCisgICAgICAgIFBBU1NPVkVSICAgICAgICA9IG5ldyBIZWJyZXdIb2xpZGF5KEhlYnJld0NhbGVuZGFyLk5JU0FOLCAgMTUsICA4LCAgIlBhc3NvdmVyIiksCisgICAgICAgIFlPTV9IQVNIT0FIICAgICA9IG5ldyBIZWJyZXdIb2xpZGF5KEhlYnJld0NhbGVuZGFyLk5JU0FOLCAgMjcsICAgICAgIllvbSBIYXNob2FoIiksCisgICAgICAgIFlPTV9IQVpJS0FST04gICA9IG5ldyBIZWJyZXdIb2xpZGF5KEhlYnJld0NhbGVuZGFyLklZQVIsICAgIDQsICAgICAgIllvbSBIYXppa2Fyb24iKSwKKyAgICAgICAgWU9NX0hBQVRaTUFVVCAgID0gbmV3IEhlYnJld0hvbGlkYXkoSGVicmV3Q2FsZW5kYXIuSVlBUiwgICAgNSwgICAgICAiWW9tIEhhJ0F0em1hdXQiKSwKKyAgICAgICAgUEVTQUNIX1NIRUlOSSAgID0gbmV3IEhlYnJld0hvbGlkYXkoSGVicmV3Q2FsZW5kYXIuSVlBUiwgICAxNCwgICAgICAiUGVzYWNoIFNoZWluaSIpLAorICAgICAgICBMQUdfQk9NRVIgICAgICAgPSBuZXcgSGVicmV3SG9saWRheShIZWJyZXdDYWxlbmRhci5JWUFSLCAgIDE4LCAgICAgICJMYWIgQidPbWVyIiksCisgICAgICAgIFlPTV9ZRVJVU0hBTEFZSU09IG5ldyBIZWJyZXdIb2xpZGF5KEhlYnJld0NhbGVuZGFyLklZQVIsICAgMjgsICAgICAgIllvbSBZZXJ1c2hhbGF5aW0iKSwKKyAgICAgICAgU0hBVlVPVCAgICAgICAgID0gbmV3IEhlYnJld0hvbGlkYXkoSGVicmV3Q2FsZW5kYXIuU0lWQU4sICAgNiwgIDIsICAiU2hhdnVvdCIpLAorICAgICAgICBUQU1NVVpfMTcgICAgICAgPSBuZXcgSGVicmV3SG9saWRheShIZWJyZXdDYWxlbmRhci5UQU1VWiwgIDE3LCAgICAgICJGYXN0IG9mIFRhbW11eiAxNyIpLAorICAgICAgICBUSVNIQV9CQVYgICAgICAgPSBuZXcgSGVicmV3SG9saWRheShIZWJyZXdDYWxlbmRhci5BViwgICAgICA5LCAgICAgICJGYXN0IG9mIFRpc2hhIEInQXYiKSwKKyAgICAgICAgU0VMSUhPVCAgICAgICAgID0gbmV3IEhlYnJld0hvbGlkYXkoSGVicmV3Q2FsZW5kYXIuRUxVTCwgICAyMSwgICAgICAiU2VsaWhvdCIpOworCit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL0hvbGlkYXkuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvSG9saWRheS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjk2Nzk1ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL0hvbGlkYXkuamF2YQpAQCAtMCwwICsxLDE2NiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdXRpbC9BdHRpYy9Ib2xpZGF5LmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDMvMTAgMDQ6MTc6NTggJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0udXRpbDsKKworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CitpbXBvcnQgamF2YS51dGlsLlJlc291cmNlQnVuZGxlOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb247CisKKy8qKgorICogQW4gYWJzdHJhY3QgY2xhc3MgcmVwcmVzZW50aW5nIGEgaG9saWRheS4gIFRoaXMgY2xhc3Mgc2ltcGx5IGFkZHMKKyAqIGEgaG9saWRheSBuYW1lIHRvIHRoZSBEYXRlUnVsZSBpbnRlcmZhY2UgZm9yIGNhbGN1bGF0aW5nIHRoZSBkYXRlCisgKiBvZiBhbiBldmVudC4KKyAqCisgKi8KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBIb2xpZGF5IGltcGxlbWVudHMgRGF0ZVJ1bGUKK3sKKyAgICBwdWJsaWMgc3RhdGljIEhvbGlkYXlbXSBnZXRIb2xpZGF5cygpCisgICAgeworICAgICAgICByZXR1cm4gZ2V0SG9saWRheXMoTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgfQorCisgICAgcHVibGljIHN0YXRpYyBIb2xpZGF5W10gZ2V0SG9saWRheXMoTG9jYWxlIGxvY2FsZSkKKyAgICB7CisgICAgICAgIEhvbGlkYXlbXSByZXN1bHQgPSBub0hvbGlkYXlzOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBSZXNvdXJjZUJ1bmRsZSBidW5kbGUgPSBSZXNvdXJjZUJ1bmRsZS5nZXRCdW5kbGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tLmlibS51dGlsLnJlc291cmNlcy5Ib2xpZGF5QnVuZGxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZSk7CisKKyAgICAgICAgICAgIHJlc3VsdCA9IChIb2xpZGF5W10pIGJ1bmRsZS5nZXRPYmplY3QoImhvbGlkYXlzIik7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKE1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGZpcnN0IG9jY3VycmFuY2Ugb2YgdGhpcyBob2xpZGF5IG9uIG9yIGFmdGVyIHRoZSBnaXZlbiBkYXRlCisgICAgICoKKyAgICAgKiBAcGFyYW0gc3RhcnQgT25seSBob2xpZGF5cyBvbiBvciBhZnRlciB0aGlzIGRhdGUgYXJlIHJldHVybmVkLgorICAgICAqCisgICAgICogQHJldHVybiAgICAgIFRoZSBkYXRlIG9uIHdoaWNoIHRoaXMgaG9saWRheSBvY2N1cnMsIG9yIG51bGwgaWYgaXQKKyAgICAgKiAgICAgICAgICAgICAgZG9lcyBub3Qgb2NjdXIgb24gb3IgYWZ0ZXIgdGhlIHN0YXJ0IGRhdGUuCisgICAgICoKKyAgICAgKiBAc2VlICNmaXJzdEJldHdlZW4KKyAgICAgKi8KKyAgICBwdWJsaWMgRGF0ZSBmaXJzdEFmdGVyKERhdGUgc3RhcnQpIHsKKyAgICAgICAgcmV0dXJuIHJ1bGUuZmlyc3RBZnRlcihzdGFydCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBmaXJzdCBvY2N1cnJhbmNlIG9mIHRoaXMgaG9saWRheSB0aGF0IGlzIG9uIG9yIGFmdGVyCisgICAgICogdGhlIGdpdmVuIHN0YXJ0IGRhdGUgYW5kIGJlZm9yZSB0aGUgZ2l2ZW4gZW5kIGRhdGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc3RhcnQgT25seSBvY2N1cnJhbmNlcyBvbiBvciBhZnRlciB0aGlzIGRhdGUgYXJlIHJldHVybmVkLgorICAgICAqIEBwYXJhbSBlbmQgICBPbmx5IG9jY3VycmFuY2VzIGJlZm9yZSB0aGlzIGRhdGUgYXJlIHJldHVybmVkLgorICAgICAqCisgICAgICogQHJldHVybiAgICAgIFRoZSBkYXRlIG9uIHdoaWNoIHRoaXMgZXZlbnQgb2NjdXJzLCBvciBudWxsIGlmIGl0CisgICAgICogICAgICAgICAgICAgIGRvZXMgbm90IG9jY3VyIGJldHdlZW4gdGhlIHN0YXJ0IGFuZCBlbmQgZGF0ZXMuCisgICAgICoKKyAgICAgKiBAc2VlICNmaXJzdEFmdGVyCisgICAgICovCisgICAgcHVibGljIERhdGUgZmlyc3RCZXR3ZWVuKERhdGUgc3RhcnQsIERhdGUgZW5kKSB7CisgICAgICAgIHJldHVybiBydWxlLmZpcnN0QmV0d2VlbihzdGFydCwgZW5kKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDaGVja3Mgd2hldGhlciB0aGlzIGhvbGlkYXkgZmFsbHMgb24gdGhlIGdpdmVuIGRhdGUuICBUaGlzIGRvZXMKKyAgICAgKiA8ZW0+bm90PC9lbT4gdGFrZSB0aW1lIG9mIGRheSBpbnRvIGFjY291bnQ7IGluc3RlYWQgaXQgY2hlY2tzCisgICAgICogd2hldGhlciB0aGUgaG9saWRheSBhbmQgdGhlIGdpdmVuIGRhdGUgYXJlIG9uIHRoZSBzYW1lIGRheS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXRlICBUaGUgZGF0ZSB0byBjaGVjay4KKyAgICAgKiBAcmV0dXJuICAgICAgdHJ1ZSBpZiB0aGlzIGhvbGlkYXkgb2NjdXJzIG9uIHRoZSBnaXZlbiBkYXRlLgorICAgICAqCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNPbihEYXRlIGRhdGUpIHsKKyAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4obmFtZSArICIuaXNPbigiICsgZGF0ZS50b1N0cmluZygpICsgIik6Iik7CisgICAgICAgIHJldHVybiBydWxlLmlzT24oZGF0ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2hlY2sgd2hldGhlciB0aGlzIGhvbGlkYXkgb2NjdXJzIGF0IGxlYXN0IG9uY2UgYmV0d2VlbiB0aGUgdHdvCisgICAgICogZGF0ZXMgZ2l2ZW4uCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNCZXR3ZWVuKERhdGUgc3RhcnQsIERhdGUgZW5kKSB7CisgICAgICAgIHJldHVybiBydWxlLmlzQmV0d2VlbihzdGFydCwgZW5kKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBuZXcgSG9saWRheSBvYmplY3QuICBUaGlzIGlzIGZvciB1c2UgYnkgc3ViY2xhc3NlcyBvbmx5LgorICAgICAqIFRoaXMgY29uc3RydWN0cyBhIG5ldyBob2xpZGF5IHdpdGggdGhlIGdpdmVuIG5hbWUgYW5kIGRhdGUgcnVsZXMuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbmFtZSAgVGhlIG5hbWUgb2YgdGhpcyBob2xpZGF5LiAgVGhlIGdldERpc3BsYXlOYW1lIG1ldGhvZAorICAgICAqICAgICAgICAgICAgICB1c2VzIHRoaXMgc3RyaW5nIGFzIGEga2V5IHRvIGxvb2sgdXAgdGhlIGhvbGlkYXkncyBuYW1lIGEKKyAgICAgKiAgICAgICAgICAgICAgcmVzb3VyY2UgYnVuZGxlIG9iamVjdCBuYW1lZCBIb2xpZGF5QnVuZGxlLgorICAgICAqCisgICAgICogQHBhcmFtIHJ1bGUgIFRoZSBkYXRlIHJ1bGVzIHVzZWQgZm9yIGRldGVybWluaW5nIHdoZW4gdGhpcyBob2xpZGF5CisgICAgICogICAgICAgICAgICAgIGZhbGxzLiAgSG9saWRheSdzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBEYXRlUnVsZSBpbnRlZmFjZQorICAgICAqICAgICAgICAgICAgICBzaW1wbHkgZGVsZWdhdGVzIHRvIHRoaXMgRGF0ZVJ1bGUgb2JqZWN0LgorICAgICAqLworICAgIHByb3RlY3RlZCBIb2xpZGF5KFN0cmluZyBuYW1lLCBEYXRlUnVsZSBydWxlKQorICAgIHsKKyAgICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgdGhpcy5ydWxlID0gcnVsZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIG5hbWUgb2YgdGhpcyBob2xpZGF5IGluIHRoZSBsYW5ndWFnZSBvZiB0aGUgZGVmYXVsdCBsb2NhbGUKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldERpc3BsYXlOYW1lKCkgeworICAgICAgICByZXR1cm4gZ2V0RGlzcGxheU5hbWUoTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBuYW1lIG9mIHRoaXMgaG9saWRheSBpbiB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIHNwZWNpZmllZCBsb2NhbGUKKyAgICAgKiBUaGUgPGNvZGU+bmFtZTwvY29kZT4gcGFyYW1ldGVyIHBhc3NlZCB0byB0aGlzIG9iamVjdCdzIGNvbnN0cnVjdG9yIGlzIHVzZWQKKyAgICAgKiBhcyBhIGtleSB0byBsb29rIHVwIHRoZSBob2xpZGF5J3MgbG9jYWxpemVkIG5hbWUgaW4gYSBSZXNvdXJjZUJ1bmRsZSBvYmplY3QKKyAgICAgKiBuYW1lZCBIb2xpZGF5QnVuZGxlLgorICAgICAqCisgICAgICogQHBhcmFtIGxvYyAgIEEgbG9jYWxlIHNwZWNpZnlpbmcgdGhlIGxhbmd1YWdlIGluIHdoaWNoIHRoZSBuYW1lIGlzIGRlc2lyZWQuCisgICAgICoKKyAgICAgKiBAc2VlIFJlc291cmNlQnVuZGxlCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXREaXNwbGF5TmFtZShMb2NhbGUgbG9jYWxlKQorICAgIHsKKyAgICAgICAgU3RyaW5nIG5hbWUgPSB0aGlzLm5hbWU7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFJlc291cmNlQnVuZGxlIGJ1bmRsZSA9IFJlc291cmNlQnVuZGxlLmdldEJ1bmRsZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb20uaWJtLnV0aWwucmVzb3VyY2VzLkhvbGlkYXlCdW5kbGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlKTsKKyAgICAgICAgICAgIG5hbWUgPSBidW5kbGUuZ2V0U3RyaW5nKG5hbWUpOworICAgICAgICB9CisgICAgICAgIGNhdGNoIChNaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIlVzaW5nIGRlZmF1bHQgZGlzcGxheSBuYW1lIGZvciAiICsgbmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgfQorCisgICAgcHVibGljIERhdGVSdWxlIGdldFJ1bGUoKSB7CisgICAgICAgIHJldHVybiBydWxlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFJ1bGUoRGF0ZVJ1bGUgcnVsZSkgeworICAgICAgICB0aGlzLnJ1bGUgPSBydWxlOworICAgIH0KKworICAgIHByaXZhdGUgU3RyaW5nICAgICAgbmFtZTsKKyAgICBwcml2YXRlIERhdGVSdWxlICAgIHJ1bGU7CisKKyAgICBwcml2YXRlIHN0YXRpYyBIb2xpZGF5W10gbm9Ib2xpZGF5cyA9IHt9OworCit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL0lzbGFtaWNDYWxlbmRhci5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9Jc2xhbWljQ2FsZW5kYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lNWRlM2IwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9Jc2xhbWljQ2FsZW5kYXIuamF2YQpAQCAtMCwwICsxLDU2MCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdXRpbC9BdHRpYy9Jc2xhbWljQ2FsZW5kYXIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8xMS8yOCAwMDo1MDoxMyAkIAorICogJFJldmlzaW9uOiAxLjkgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udXRpbDsKKworaW1wb3J0IGNvbS5pYm0udXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBjb20uaWJtLnV0aWwuR3JlZ29yaWFuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBjb20uaWJtLnV0aWwuQ2FsZW5kYXJBc3Ryb25vbWVyOworCisvKioKKyAqIDxjb2RlPklzbGFtaWNDYWxlbmRhcjwvY29kZT4gaXMgYSBzdWJjbGFzcyBvZiA8Y29kZT5DYWxlbmRhcjwvY29kZT4KKyAqIHRoYXQgdGhhdCBpbXBsZW1lbnRzIHRoZSBJc2xhbWljIGNpdmlsIGFuZCByZWxpZ2lvdXMgY2FsZW5kYXJzLiAgSXQKKyAqIGlzIHVzZWQgYXMgdGhlIGNpdmlsIGNhbGVuZGFyIGluIG1vc3Qgb2YgdGhlIEFyYWIgd29ybGQgYW5kIHRoZQorICogbGl0dXJnaWNhbCBjYWxlbmRhciBvZiB0aGUgSXNsYW1pYyBmYWl0aCB3b3JsZHdpZGUuICBUaGlzIGNhbGVuZGFyCisgKiBpcyBhbHNvIGtub3duIGFzIHRoZSAiSGlqcmkiIGNhbGVuZGFyLCBzaW5jZSBpdCBzdGFydHMgYXQgdGhlIHRpbWUKKyAqIG9mIE1vaGFtbWVkJ3MgZW1pZ3JhdGlvbiAob3IgImhpanJhIikgdG8gTWVkaW5haCBvbiBUaHVyc2RheSwgCisgKiBKdWx5IDE1LCA2MjIgQUQgKEp1bGlhbikuCisgKiA8cD4KKyAqIFRoZSBJc2xhbWljIGNhbGVuZGFyIGlzIHN0cmljdGx5IGx1bmFyLCBhbmQgdGh1cyBhbiBJc2xhbWljIHllYXIgb2YgdHdlbHZlCisgKiBsdW5hciBtb250aHMgZG9lcyBub3QgY29ycmVzcG9uZCB0byB0aGUgc29sYXIgeWVhciB1c2VkIGJ5IG1vc3Qgb3RoZXIKKyAqIGNhbGVuZGFyIHN5c3RlbXMsIGluY2x1ZGluZyB0aGUgR3JlZ29yaWFuLiAgQW4gSXNsYW1pYyB5ZWFyIGlzLCBvbiBhdmVyYWdlLAorICogYWJvdXQgMzU0IGRheXMgbG9uZywgc28gZWFjaCBzdWNjZXNzaXZlIElzbGFtaWMgeWVhciBzdGFydHMgYWJvdXQgMTEgZGF5cworICogZWFybGllciBpbiB0aGUgY29ycmVzcG9uZGluZyBHcmVnb3JpYW4geWVhci4KKyAqIDxwPgorICogRWFjaCBtb250aCBvZiB0aGUgY2FsZW5kYXIgc3RhcnRzIHdoZW4gdGhlIG5ldyBtb29uJ3MgY3Jlc2NlbnQgaXMgdmlzaWJsZQorICogYXQgc3Vuc2V0LiAgSG93ZXZlciwgaW4gb3JkZXIgdG8ga2VlcCB0aGUgdGltZSBmaWVsZHMgaW4gdGhpcyBjbGFzcworICogc3luY2hyb25pemVkIHdpdGggdGhvc2Ugb2YgdGhlIG90aGVyIGNhbGVuZGFycyBhbmQgd2l0aCBsb2NhbCBjbG9jayB0aW1lLAorICogd2UgdHJlYXQgZGF5cyBhbmQgbW9udGhzIGFzIGJlZ2lubmluZyBhdCBtaWRuaWdodCwKKyAqIHJvdWdobHkgNiBob3VycyBhZnRlciB0aGUgY29ycmVzcG9uZGluZyBzdW5zZXQuCisgKiA8cD4KKyAqIFRoZXJlIGFyZSB0d28gbWFpbiB2YXJpYW50cyBvZiB0aGUgSXNsYW1pYyBjYWxlbmRhciBpbiBleGlzdGVuY2UuICBUaGUgZmlyc3QKKyAqIGlzIHRoZSA8ZW0+Y2l2aWw8L2VtPiBjYWxlbmRhciwgd2hpY2ggdXNlcyBhIGZpeGVkIGN5Y2xlIG9mIGFsdGVybmF0aW5nIDI5LQorICogYW5kIDMwLWRheSBtb250aHMsIHdpdGggYSBsZWFwIGRheSBhZGRlZCB0byB0aGUgbGFzdCBtb250aCBvZiAxMSBvdXQgb2YKKyAqIGV2ZXJ5IDMwIHllYXJzLiAgVGhpcyBjYWxlbmRhciBpcyBlYXNpbHkgY2FsY3VsYXRlZCBhbmQgdGh1cyBwcmVkaWN0YWJsZSBpbgorICogYWR2YW5jZSwgc28gaXQgaXMgdXNlZCBhcyB0aGUgY2l2aWwgY2FsZW5kYXIgaW4gYSBudW1iZXIgb2YgQXJhYiBjb3VudHJpZXMuCisgKiBUaGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIGEgbmV3bHktY3JlYXRlZCA8Y29kZT5Jc2xhbWljQ2FsZW5kYXI8L2NvZGU+CisgKiBvYmplY3QuCisgKiA8cD4KKyAqIFRoZSBJc2xhbWljIDxlbT5yZWxpZ2lvdXM8L2VtPiBjYWxlbmRhciwgaG93ZXZlciwgaXMgYmFzZWQgb24gdGhlIDxlbT5vYnNlcnZhdGlvbjwvZW0+CisgKiBvZiB0aGUgY3Jlc2NlbnQgbW9vbi4gIEl0IGlzIHRodXMgYWZmZWN0ZWQgYnkgdGhlIHBvc2l0aW9uIGF0IHdoaWNoIHRoZQorICogb2JzZXJ2YXRpb25zIGFyZSBtYWRlLCBzZWFzb25hbCB2YXJpYXRpb25zIGluIHRoZSB0aW1lIG9mIHN1bnNldCwgdGhlCisgKiBlY2NlbnRyaWNpdGllcyBvZiB0aGUgbW9vbidzIG9yYml0LCBhbmQgZXZlbiB0aGUgd2VhdGhlciBhdCB0aGUgb2JzZXJ2YXRpb24KKyAqIHNpdGUuICBUaGlzIG1ha2VzIGl0IGltcG9zc2libGUgdG8gY2FsY3VsYXRlIGluIGFkdmFuY2UsIGFuZCBpdCBjYXVzZXMgdGhlCisgKiBzdGFydCBvZiBhIG1vbnRoIGluIHRoZSByZWxpZ2lvdXMgY2FsZW5kYXIgdG8gZGlmZmVyIGZyb20gdGhlIGNpdmlsIGNhbGVuZGFyCisgKiBieSB1cCB0byB0aHJlZSBkYXlzLgorICogPHA+CisgKiBVc2luZyBhc3Ryb25vbWljYWwgY2FsY3VsYXRpb25zIGZvciB0aGUgcG9zaXRpb24gb2YgdGhlIHN1biBhbmQgbW9vbiwgdGhlCisgKiBtb29uJ3MgaWxsdW1pbmF0aW9uLCBhbmQgb3RoZXIgZmFjdG9ycywgaXQgaXMgcG9zc2libGUgdG8gZGV0ZXJtaW5lIHRoZSBzdGFydAorICogb2YgYSBsdW5hciBtb250aCB3aXRoIGEgZmFpcmx5IGhpZ2ggZGVncmVlIG9mIGNlcnRhaW50eS4gIEhvd2V2ZXIsIHRoZXNlCisgKiBjYWxjdWxhdGlvbnMgYXJlIGV4dHJlbWVseSBjb21wbGljYXRlZCBhbmQgdGh1cyBzbG93LCBzbyBtb3N0IGFsZ29yaXRobXMsCisgKiBpbmNsdWRpbmcgdGhlIG9uZSB1c2VkIGhlcmUsIGFyZSBvbmx5IGFwcHJveGltYXRpb25zIG9mIHRoZSB0cnVlIGFzdHJvbmljYWwKKyAqIGNhbGN1bGF0aW9ucy4gIEF0IHByZXNlbnQsIHRoZSBhcHByb3hpbWF0aW9ucyB1c2VkIGluIHRoaXMgY2xhc3MgYXJlIGZhaXJseQorICogc2ltcGxpc3RpYzsgdGhleSB3aWxsIGJlIGltcHJvdmVkIGluIGxhdGVyIHZlcnNpb25zIG9mIHRoZSBjb2RlLgorICogPHA+CisgKiBUaGUge0BsaW5rICNzZXRDaXZpbCBzZXRDaXZpbH0gbWV0aG9kIGRldGVybWluZXMKKyAqIHdoaWNoIGFwcHJvYWNoIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBzdGFydCBvZiBhIG1vbnRoLiAgQnkgZGVmYXVsdCwgdGhlCisgKiBmaXhlZC1jeWNsZSBjaXZpbCBjYWxlbmRhciBpcyB1c2VkLiAgSG93ZXZlciwgaWYgPGNvZGU+c2V0Q2l2aWwoZmFsc2UpPC9jb2RlPgorICogaXMgY2FsbGVkLCBhbiBhcHByb3hpbWF0aW9uIG9mIHRoZSB0cnVlIGx1bmFyIGNhbGVuZGFyIHdpbGwgYmUgdXNlZC4KKyAqCisgKiBAc2VlIGNvbS5pYm0udXRpbC5HcmVnb3JpYW5DYWxlbmRhcgorICoKKyAqIEBhdXRob3IgTGF1cmEgV2VybmVyCisgKiBAYXV0aG9yIEFsYW4gTGl1CisgKi8KK3B1YmxpYyBjbGFzcyBJc2xhbWljQ2FsZW5kYXIgZXh0ZW5kcyBDYWxlbmRhciB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgY29weXJpZ2h0ID0gIkNvcHlyaWdodCBcdTAwYTkgMTk5Ny0xOTk4IElCTSBDb3JwLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBDb25zdGFudHMuLi4KKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAKKyAgICAvKiogQ29uc3RhbnQgZm9yIE11aGFycmFtLCB0aGUgMXN0IG1vbnRoIG9mIHRoZSBJc2xhbWljIHllYXIuICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTVVIQVJSQU0gPSAwOworCisgICAgLyoqIENvbnN0YW50IGZvciBTYWZhciwgdGhlIDJuZCBtb250aCBvZiB0aGUgSXNsYW1pYyB5ZWFyLiAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNBRkFSID0gMTsKKworICAgIC8qKiBDb25zdGFudCBmb3IgUmFiaScgYWwtYXd3YWwgKG9yIFJhYmknIEkpLCB0aGUgM3JkIG1vbnRoIG9mIHRoZSBJc2xhbWljIHllYXIuICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUkFCSV8xID0gMjsKKworICAgIC8qKiBDb25zdGFudCBmb3IgUmFiaScgYWwtdGhhbmkgb3IgKFJhYmknIElJKSwgdGhlIDR0aCBtb250aCBvZiB0aGUgSXNsYW1pYyB5ZWFyLiAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJBQklfMiA9IDM7CisKKyAgICAvKiogQ29uc3RhbnQgZm9yIEp1bWFkYSBhbC1hd3dhbCBvciAoSnVtYWRhIEkpLCB0aGUgNXRoIG1vbnRoIG9mIHRoZSBJc2xhbWljIHllYXIuICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSlVNQURBXzEgPSA0OworCisgICAgLyoqIENvbnN0YW50IGZvciBKdW1hZGEgYWwtdGhhbmkgb3IgKEp1bWFkYSBJSSksIHRoZSA2dGggbW9udGggb2YgdGhlIElzbGFtaWMgeWVhci4gKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBKVU1BREFfMiA9IDU7CisKKyAgICAvKiogQ29uc3RhbnQgZm9yIFJhamFiLCB0aGUgN3RoIG1vbnRoIG9mIHRoZSBJc2xhbWljIHllYXIuICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUkFKQUIgPSA2OworCisgICAgLyoqIENvbnN0YW50IGZvciBTaGEnYmFuLCB0aGUgOHRoIG1vbnRoIG9mIHRoZSBJc2xhbWljIHllYXIuICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0hBQkFOID0gNzsKKworICAgIC8qKiBDb25zdGFudCBmb3IgUmFtYWRhbiwgdGhlIDl0aCBtb250aCBvZiB0aGUgSXNsYW1pYyB5ZWFyLiAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJBTUFEQU4gPSA4OworCisgICAgLyoqIENvbnN0YW50IGZvciBTaGF3d2FsLCB0aGUgMTB0aCBtb250aCBvZiB0aGUgSXNsYW1pYyB5ZWFyLiAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNIQVdXQUwgPSA5OworCisgICAgLyoqIENvbnN0YW50IGZvciBEaHUgYWwtUWknZGFoLCB0aGUgMTF0aCBtb250aCBvZiB0aGUgSXNsYW1pYyB5ZWFyLiAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERIVV9BTF9RSURBSCA9IDEwOworCisgICAgLyoqIENvbnN0YW50IGZvciBEaHUgYWwtSGlqamFoLCB0aGUgMTJ0aCBtb250aCBvZiB0aGUgSXNsYW1pYyB5ZWFyLiAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERIVV9BTF9ISUpKQUggPSAxMTsKKworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBISUpSQV9NSUxMSVMgPSAtNDI1MjE1ODcyMDAwMDBMOyAgICAvLyA3LzE2LzYyMiBBRCAwMDowMAorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQ29uc3RydWN0b3JzLi4uCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgZGVmYXVsdCA8Y29kZT5Jc2xhbWljQ2FsZW5kYXI8L2NvZGU+IHVzaW5nIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICovCisgICAgcHVibGljIElzbGFtaWNDYWxlbmRhcigpCisgICAgeworICAgICAgICB0aGlzKFRpbWVab25lLmdldERlZmF1bHQoKSwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhbiA8Y29kZT5Jc2xhbWljQ2FsZW5kYXI8L2NvZGU+IGJhc2VkIG9uIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgKiBpbiB0aGUgZ2l2ZW4gdGltZSB6b25lIHdpdGggdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqIEBwYXJhbSB6b25lIHRoZSBnaXZlbiB0aW1lIHpvbmUuCisgICAgICovCisgICAgcHVibGljIElzbGFtaWNDYWxlbmRhcihUaW1lWm9uZSB6b25lKQorICAgIHsKKyAgICAgICAgdGhpcyh6b25lLCBMb2NhbGUuZ2V0RGVmYXVsdCgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGFuIDxjb2RlPklzbGFtaWNDYWxlbmRhcjwvY29kZT4gYmFzZWQgb24gdGhlIGN1cnJlbnQgdGltZQorICAgICAqIGluIHRoZSBkZWZhdWx0IHRpbWUgem9uZSB3aXRoIHRoZSBnaXZlbiBsb2NhbGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYUxvY2FsZSB0aGUgZ2l2ZW4gbG9jYWxlLgorICAgICAqLworICAgIHB1YmxpYyBJc2xhbWljQ2FsZW5kYXIoTG9jYWxlIGFMb2NhbGUpCisgICAgeworICAgICAgICB0aGlzKFRpbWVab25lLmdldERlZmF1bHQoKSwgYUxvY2FsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhbiA8Y29kZT5Jc2xhbWljQ2FsZW5kYXI8L2NvZGU+IGJhc2VkIG9uIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgKiBpbiB0aGUgZ2l2ZW4gdGltZSB6b25lIHdpdGggdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB6b25lIHRoZSBnaXZlbiB0aW1lIHpvbmUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYUxvY2FsZSB0aGUgZ2l2ZW4gbG9jYWxlLgorICAgICAqLworICAgIHB1YmxpYyBJc2xhbWljQ2FsZW5kYXIoVGltZVpvbmUgem9uZSwgTG9jYWxlIGFMb2NhbGUpCisgICAgeworICAgICAgICBzdXBlcih6b25lLCBhTG9jYWxlKTsKKyAgICAgICAgc2V0VGltZUluTWlsbGlzKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGFuIDxjb2RlPklzbGFtaWNDYWxlbmRhcjwvY29kZT4gd2l0aCB0aGUgZ2l2ZW4gZGF0ZSBzZXQKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZGF0ZSAgICAgIFRoZSBkYXRlIHRvIHdoaWNoIHRoZSBuZXcgY2FsZW5kYXIgaXMgc2V0LgorICAgICAqLworICAgIHB1YmxpYyBJc2xhbWljQ2FsZW5kYXIoRGF0ZSBkYXRlKSB7CisgICAgICAgIHN1cGVyKFRpbWVab25lLmdldERlZmF1bHQoKSwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgICAgIHRoaXMuc2V0VGltZShkYXRlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGFuIDxjb2RlPklzbGFtaWNDYWxlbmRhcjwvY29kZT4gd2l0aCB0aGUgZ2l2ZW4gZGF0ZSBzZXQKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0geWVhciB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIHtAbGluayAjWUVBUiBZRUFSfSB0aW1lIGZpZWxkIGluIHRoZSBjYWxlbmRhci4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtb250aCB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIHtAbGluayAjTU9OVEggTU9OVEh9IHRpbWUgZmllbGQgaW4gdGhlIGNhbGVuZGFyLgorICAgICAqICAgICAgICAgICAgICBOb3RlIHRoYXQgdGhlIG1vbnRoIHZhbHVlIGlzIDAtYmFzZWQuIGUuZy4sIDAgZm9yIE11aGFycmFtLgorICAgICAqCisgICAgICogQHBhcmFtIGRhdGUgdGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSB7QGxpbmsgI0RBVEUgREFURX0gdGltZSBmaWVsZCBpbiB0aGUgY2FsZW5kYXIuCisgICAgICovCisgICAgcHVibGljIElzbGFtaWNDYWxlbmRhcihpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF0ZSkKKyAgICB7CisgICAgICAgIHN1cGVyKFRpbWVab25lLmdldERlZmF1bHQoKSwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgICAgIHRoaXMuc2V0KENhbGVuZGFyLllFQVIsIHllYXIpOworICAgICAgICB0aGlzLnNldChDYWxlbmRhci5NT05USCwgbW9udGgpOworICAgICAgICB0aGlzLnNldChDYWxlbmRhci5EQVRFLCBkYXRlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGFuIDxjb2RlPklzbGFtaWNDYWxlbmRhcjwvY29kZT4gd2l0aCB0aGUgZ2l2ZW4gZGF0ZQorICAgICAqIGFuZCB0aW1lIHNldCBmb3IgdGhlIGRlZmF1bHQgdGltZSB6b25lIHdpdGggdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqCisgICAgICogQHBhcmFtIHllYXIgIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUge0BsaW5rICNZRUFSIFlFQVJ9IHRpbWUgZmllbGQgaW4gdGhlIGNhbGVuZGFyLgorICAgICAqCisgICAgICogQHBhcmFtIG1vbnRoIHRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUge0BsaW5rICNNT05USCBNT05USH0gdGltZSBmaWVsZCBpbiB0aGUgY2FsZW5kYXIuCisgICAgICogICAgICAgICAgICAgIE5vdGUgdGhhdCB0aGUgbW9udGggdmFsdWUgaXMgMC1iYXNlZC4gZS5nLiwgMCBmb3IgTXVoYXJyYW0uCisgICAgICoKKyAgICAgKiBAcGFyYW0gZGF0ZSAgdGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSB7QGxpbmsgI0RBVEUgREFURX0gdGltZSBmaWVsZCBpbiB0aGUgY2FsZW5kYXIuCisgICAgICoKKyAgICAgKiBAcGFyYW0gaG91ciAgdGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSB7QGxpbmsgI0hPVVJfT0ZfREFZIEhPVVJfT0ZfREFZfSB0aW1lIGZpZWxkCisgICAgICogICAgICAgICAgICAgIGluIHRoZSBjYWxlbmRhci4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtaW51dGUgdGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSB7QGxpbmsgI01JTlVURSBNSU5VVEV9IHRpbWUgZmllbGQKKyAgICAgKiAgICAgICAgICAgICAgaW4gdGhlIGNhbGVuZGFyLgorICAgICAqCisgICAgICogQHBhcmFtIHNlY29uZCB0aGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIHtAbGluayAjU0VDT05EIFNFQ09ORH0gdGltZSBmaWVsZAorICAgICAqICAgICAgICAgICAgICBpbiB0aGUgY2FsZW5kYXIuCisgICAgICovCisgICAgcHVibGljIElzbGFtaWNDYWxlbmRhcihpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF0ZSwgaW50IGhvdXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaW51dGUsIGludCBzZWNvbmQpCisgICAgeworICAgICAgICBzdXBlcihUaW1lWm9uZS5nZXREZWZhdWx0KCksIExvY2FsZS5nZXREZWZhdWx0KCkpOworICAgICAgICB0aGlzLnNldChDYWxlbmRhci5ZRUFSLCB5ZWFyKTsKKyAgICAgICAgdGhpcy5zZXQoQ2FsZW5kYXIuTU9OVEgsIG1vbnRoKTsKKyAgICAgICAgdGhpcy5zZXQoQ2FsZW5kYXIuREFURSwgZGF0ZSk7CisgICAgICAgIHRoaXMuc2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZLCBob3VyKTsKKyAgICAgICAgdGhpcy5zZXQoQ2FsZW5kYXIuTUlOVVRFLCBtaW51dGUpOworICAgICAgICB0aGlzLnNldChDYWxlbmRhci5TRUNPTkQsIHNlY29uZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGV0ZXJtaW5lcyB3aGV0aGVyIHRoaXMgb2JqZWN0IHVzZXMgdGhlIGZpeGVkLWN5Y2xlIElzbGFtaWMgY2l2aWwgY2FsZW5kYXIKKyAgICAgKiBvciBhbiBhcHByb3hpbWF0aW9uIG9mIHRoZSByZWxpZ2lvdXMsIGFzdHJvbm9taWNhbCBjYWxlbmRhci4KKyAgICAgKgorICAgICAqIEBwYXJhbSBiZUNpdmlsICAgPGNvZGU+dHJ1ZTwvY29kZT4gdG8gdXNlIHRoZSBjaXZpbCBjYWxlbmRhciwKKyAgICAgKiAgICAgICAgICAgICAgICAgIDxjb2RlPmZhbHNlPC9jb2RlPiB0byB1c2UgdGhlIGFzdHJvbm9taWNhbCBjYWxlbmRhci4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRDaXZpbChib29sZWFuIGJlQ2l2aWwpCisgICAgeworICAgICAgICBpZiAoY2l2aWwgIT0gYmVDaXZpbCkgeworICAgICAgICAgICAgLy8gVGhlIGZpZWxkcyBvZiB0aGUgY2FsZW5kYXIgd2lsbCBiZWNvbWUgaW52YWxpZCwgYmVjYXVzZSB0aGUgY2FsZW5kYXIKKyAgICAgICAgICAgIC8vIHJ1bGVzIGFyZSBkaWZmZXJlbnQKKyAgICAgICAgICAgIGxvbmcgbSA9IGdldFRpbWVJbk1pbGxpcygpOworICAgICAgICAgICAgY2l2aWwgPSBiZUNpdmlsOworICAgICAgICAgICAgY2xlYXIoKTsKKyAgICAgICAgICAgIHNldFRpbWVJbk1pbGxpcyhtKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoaXMgb2JqZWN0IGlzIHVzaW5nIHRoZSBmaXhlZC1jeWNsZSBjaXZpbAorICAgICAqIGNhbGVuZGFyLCBvciA8Y29kZT5mYWxzZTwvY29kZT4gaWYgdXNpbmcgdGhlIHJlbGlnaW91cywgYXN0cm9ub21pY2FsCisgICAgICogY2FsZW5kYXIuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNDaXZpbCgpIHsKKyAgICAgICAgcmV0dXJuIGNpdmlsOworICAgIH0KKyAgICAKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBNaW5pbXVtIC8gTWF4aW11bSBhY2Nlc3MgZnVuY3Rpb25zCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTElNSVRTW11bXSA9IHsKKyAgICAgICAgLy8gTWluaW11bSAgR3JlYXRlc3QgICAgTGVhc3QgIE1heGltdW0KKyAgICAgICAgLy8gICAgICAgICAgIE1pbmltdW0gIE1heGltdW0KKyAgICAgICAgeyAgICAgICAgMCwgICAgICAgIDAsICAgICAgIDAsICAgICAgIDAgfSwgLy8gRVJBCisgICAgICAgIHsgICAgICAgIDEsICAgICAgICAxLCA1MDAwMDAwLCA1MDAwMDAwIH0sIC8vIFlFQVIKKyAgICAgICAgeyAgICAgICAgMCwgICAgICAgIDAsICAgICAgMTEsICAgICAgMTEgfSwgLy8gTU9OVEgKKyAgICAgICAgeyAgICAgICAgMSwgICAgICAgIDEsICAgICAgNTEsICAgICAgNTIgfSwgLy8gV0VFS19PRl9ZRUFSCisgICAgICAgIHsgICAgICAgIDAsICAgICAgICAwLCAgICAgICA1LCAgICAgICA2IH0sIC8vIFdFRUtfT0ZfTU9OVEgKKyAgICAgICAgeyAgICAgICAgMSwgICAgICAgIDEsICAgICAgMjksICAgICAgMzAgfSwgLy8gREFZX09GX01PTlRICisgICAgICAgIHsgICAgICAgIDEsICAgICAgICAxLCAgICAgMzU0LCAgICAgMzU1IH0sIC8vIERBWV9PRl9ZRUFSCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIERBWV9PRl9XRUVLCisgICAgICAgIHsgICAgICAgLTEsICAgICAgIC0xLCAgICAgICA0LCAgICAgICA1IH0sIC8vIERBWV9PRl9XRUVLX0lOX01PTlRICisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIEFNX1BNCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIEhPVVIKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gSE9VUl9PRl9EQVkKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gTUlOVVRFCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIFNFQ09ORAorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBNSUxMSVNFQ09ORAorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBaT05FX09GRlNFVAorICAgICAgICB7LyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi99LCAvLyBEU1RfT0ZGU0VUCisgICAgICAgIHsgLTUwMDAwMDEsIC01MDAwMDAxLCA1MDAwMDAxLCA1MDAwMDAxIH0sIC8vIFlFQVJfV09ZCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIERPV19MT0NBTAorICAgICAgICB7IC01MDAwMDAwLCAtNTAwMDAwMCwgNTAwMDAwMCwgNTAwMDAwMCB9LCAvLyBFWFRFTkRFRF9ZRUFSCisgICAgICAgIHsvKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqL30sIC8vIEpVTElBTl9EQVkKKyAgICAgICAgey8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovfSwgLy8gTUlMTElTRUNPTkRTX0lOX0RBWQorICAgIH07CisKKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZUdldExpbWl0KGludCBmaWVsZCwgaW50IGxpbWl0VHlwZSkgeworICAgICAgICByZXR1cm4gTElNSVRTW2ZpZWxkXVtsaW1pdFR5cGVdOworICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIEFzc29ydGVkIGNhbGN1bGF0aW9uIHV0aWxpdGllcworICAgIC8vCisKKyAgICAvKioKKyAgICAgKiBGaW5kIHRoZSBkYXkgb2YgdGhlIHdlZWsgZm9yIGEgZ2l2ZW4gZGF5CisgICAgICoKKyAgICAgKiBAcGFyYW0gZGF5ICAgVGhlICMgb2YgZGF5cyBzaW5jZSB0aGUgc3RhcnQgb2YgdGhlIElzbGFtaWMgY2FsZW5kYXIuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGFic29sdXRlRGF5VG9EYXlPZldlZWsobG9uZyBkYXkpCisgICAgeworICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIGRheSBvZiB0aGUgd2Vlay4KKyAgICAgICAgLy8gVGhpcyByZWxpZXMgb24gdGhlIGZhY3QgdGhhdCB0aGUgZXBvY2ggd2FzIGEgVGh1cnNkYXkuCisgICAgICAgIGludCBkYXlPZldlZWsgPSAoaW50KShkYXkgKyBUSFVSU0RBWSkgJSA3ICsgU1VOREFZOworICAgICAgICBpZiAoZGF5T2ZXZWVrIDwgMCkgeworICAgICAgICAgICAgZGF5T2ZXZWVrICs9IDc7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRheU9mV2VlazsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmUgd2hldGhlciBhIHllYXIgaXMgYSBsZWFwIHllYXIgaW4gdGhlIElzbGFtaWMgY2l2aWwgY2FsZW5kYXIKKyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBib29sZWFuIGNpdmlsTGVhcFllYXIoaW50IHllYXIpCisgICAgeworICAgICAgICByZXR1cm4gKDE0ICsgMTEgKiB5ZWFyKSAlIDMwIDwgMTE7CisgICAgICAgIAorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGRheSAjIG9uIHdoaWNoIHRoZSBnaXZlbiB5ZWFyIHN0YXJ0cy4gIERheXMgYXJlIGNvdW50ZWQKKyAgICAgKiBmcm9tIHRoZSBIaWpyaSBlcG9jaCwgb3JpZ2luIDAuCisgICAgICovCisgICAgcHJpdmF0ZSBsb25nIHllYXJTdGFydChpbnQgeWVhcikgeworICAgICAgICBpZiAoY2l2aWwpIHsKKyAgICAgICAgICAgIHJldHVybiAoeWVhci0xKSozNTQgKyAobG9uZylNYXRoLmZsb29yKCgzKzExKnllYXIpLzMwLjApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHRydWVNb250aFN0YXJ0KDEyKih5ZWFyLTEpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGRheSAjIG9uIHdoaWNoIHRoZSBnaXZlbiBtb250aCBzdGFydHMuICBEYXlzIGFyZSBjb3VudGVkCisgICAgICogZnJvbSB0aGUgSGlqcmkgZXBvY2gsIG9yaWdpbiAwLgorICAgICAqCisgICAgICogQHBhcmFtIHllYXIgIFRoZSBoaWpyaSB5ZWFyCisgICAgICogQHBhcmFtIHllYXIgIFRoZSBoaWpyaSBtb250aCwgMC1iYXNlZAorICAgICAqLworICAgIHByaXZhdGUgbG9uZyBtb250aFN0YXJ0KGludCB5ZWFyLCBpbnQgbW9udGgpIHsKKyAgICAgICAgaWYgKGNpdmlsKSB7CisgICAgICAgICAgICByZXR1cm4gKGxvbmcpTWF0aC5jZWlsKDI5LjUqbW9udGgpCisgICAgICAgICAgICAgICAgICAgICsgKHllYXItMSkqMzU0ICsgKGxvbmcpTWF0aC5mbG9vcigoMysxMSp5ZWFyKS8zMC4wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlTW9udGhTdGFydCgxMiooeWVhci0xKSArIG1vbnRoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBGaW5kIHRoZSBkYXkgbnVtYmVyIG9uIHdoaWNoIGEgcGFydGljdWxhciBtb250aCBvZiB0aGUgdHJ1ZS9sdW5hcgorICAgICAqIElzbGFtaWMgY2FsZW5kYXIgc3RhcnRzLgorICAgICAqCisgICAgICogQHBhcmFtIG1vbnRoIFRoZSBtb250aCBpbiBxdWVzdGlvbiwgb3JpZ2luIDAgZnJvbSB0aGUgSGlqcmkgZXBvY2gKKyAgICAgKgorICAgICAqIEByZXR1cm4gVGhlIGRheSBudW1iZXIgb24gd2hpY2ggdGhlIGdpdmVuIG1vbnRoIHN0YXJ0cy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHRydWVNb250aFN0YXJ0KGxvbmcgbW9udGgpCisgICAgeworICAgICAgICBsb25nIHN0YXJ0ID0gY2FjaGUuZ2V0KG1vbnRoKTsKKworICAgICAgICBpZiAoc3RhcnQgPT0gQ2FsZW5kYXJDYWNoZS5FTVBUWSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gTWFrZSBhIGd1ZXNzIGF0IHdoZW4gdGhlIG1vbnRoIHN0YXJ0ZWQsIHVzaW5nIHRoZSBhdmVyYWdlIGxlbmd0aAorICAgICAgICAgICAgbG9uZyBvcmlnaW4gPSBISUpSQV9NSUxMSVMgCisgICAgICAgICAgICAgICAgICAgICAgICArIChsb25nKU1hdGguZmxvb3IobW9udGggKiBDYWxlbmRhckFzdHJvbm9tZXIuU1lOT0RJQ19NT05USCAtIDEpICogT05FX0RBWTsKKworICAgICAgICAgICAgZG91YmxlIGFnZSA9IG1vb25BZ2Uob3JpZ2luKTsKKworICAgICAgICAgICAgaWYgKG1vb25BZ2Uob3JpZ2luKSA+PSAwKSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIG1vbnRoIGhhcyBhbHJlYWR5IHN0YXJ0ZWQKKyAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgIG9yaWdpbiAtPSBPTkVfREFZOworICAgICAgICAgICAgICAgICAgICBhZ2UgPSBtb29uQWdlKG9yaWdpbik7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoYWdlID49IDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gUHJlY2VkaW5nIG1vbnRoIGhhcyBub3QgZW5kZWQgeWV0LgorICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgb3JpZ2luICs9IE9ORV9EQVk7CisgICAgICAgICAgICAgICAgICAgIGFnZSA9IG1vb25BZ2Uob3JpZ2luKTsKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChhZ2UgPCAwKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3RhcnQgPSAob3JpZ2luIC0gSElKUkFfTUlMTElTKSAvIE9ORV9EQVkgKyAxOworICAgICAgICAgICAgCisgICAgICAgICAgICBjYWNoZS5wdXQobW9udGgsIHN0YXJ0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3RhcnQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSAiYWdlIiBvZiB0aGUgbW9vbiBhdCB0aGUgZ2l2ZW4gdGltZTsgdGhpcyBpcyB0aGUgZGlmZmVyZW5jZQorICAgICAqIGluIGVjbGlwdGljIGxhdGl0dWRlIGJldHdlZW4gdGhlIG1vb24gYW5kIHRoZSBzdW4uICBUaGlzIG1ldGhvZCBzaW1wbHkKKyAgICAgKiBjYWxscyBDYWxlbmRhckFzdHJvbm9tZXIubW9vbkFnZSwgY29udmVydHMgdG8gZGVncmVlcywgCisgICAgICogYW5kIGFkanVzdHMgdGhlIHJlc3VsdHRvIGJlIGluIHRoZSByYW5nZSBbLTE4MCwgMTgwXS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB0aW1lICBUaGUgdGltZSBhdCB3aGljaCB0aGUgbW9vbidzIGFnZSBpcyBkZXNpcmVkLAorICAgICAqICAgICAgICAgICAgICBpbiBtaWxsaXMgc2luY2UgMS8xLzE5NzAuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGRvdWJsZSBtb29uQWdlKGxvbmcgdGltZSkKKyAgICB7CisgICAgICAgIGRvdWJsZSBhZ2UgPSAwOworICAgICAgICAKKyAgICAgICAgc3luY2hyb25pemVkKGFzdHJvKSB7CisgICAgICAgICAgICBhc3Ryby5zZXRUaW1lKHRpbWUpOworICAgICAgICAgICAgYWdlID0gYXN0cm8uZ2V0TW9vbkFnZSgpOworICAgICAgICB9CisgICAgICAgIC8vIENvbnZlcnQgdG8gZGVncmVlcyBhbmQgbm9ybWFsaXplLi4uCisgICAgICAgIGFnZSA9IGFnZSAqIDE4MCAvIE1hdGguUEk7CisgICAgICAgIGlmIChhZ2UgPiAxODApIHsKKyAgICAgICAgICAgIGFnZSA9IGFnZSAtIDM2MDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBhZ2U7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gSW50ZXJuYWwgZGF0YS4uLi4KKyAgICAvLworICAgIAorICAgIC8vIEFuZCBhbiBBc3Ryb25vbWVyIG9iamVjdCBmb3IgdGhlIG1vb24gYWdlIGNhbGN1bGF0aW9ucworICAgIHByaXZhdGUgc3RhdGljIENhbGVuZGFyQXN0cm9ub21lciBhc3RybyA9IG5ldyBDYWxlbmRhckFzdHJvbm9tZXIoKTsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBDYWxlbmRhckNhY2hlIGNhY2hlID0gbmV3IENhbGVuZGFyQ2FjaGUoKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGlzIG9iamVjdCB1c2VzIHRoZSBmaXhlZC1jeWNsZSBJc2xhbWljIGNpdmlsIGNhbGVuZGFyLAorICAgICAqIGFuZCA8Y29kZT5mYWxzZTwvY29kZT4gaWYgaXQgYXBwcm94aW1hdGVzIHRoZSB0cnVlIHJlbGlnaW91cyBjYWxlbmRhciB1c2luZworICAgICAqIGFzdHJvbm9taWNhbCBjYWxjdWxhdGlvbnMgZm9yIHRoZSB0aW1lIG9mIHRoZSBuZXcgbW9vbi4KKyAgICAgKgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gY2l2aWwgPSB0cnVlOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQ2FsZW5kYXIgZnJhbWV3b3JrCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGxlbmd0aCAoaW4gZGF5cykgb2YgdGhlIGdpdmVuIG1vbnRoLgorICAgICAqCisgICAgICogQHBhcmFtIHllYXIgIFRoZSBoaWpyaSB5ZWFyCisgICAgICogQHBhcmFtIHllYXIgIFRoZSBoaWpyaSBtb250aCwgMC1iYXNlZAorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgaGFuZGxlR2V0TW9udGhMZW5ndGgoaW50IGV4dGVuZGVkWWVhciwgaW50IG1vbnRoKSB7CisKKyAgICAgICAgaW50IGxlbmd0aCA9IDA7CisgICAgICAgIAorICAgICAgICBpZiAoY2l2aWwpIHsKKyAgICAgICAgICAgIGxlbmd0aCA9IDI5ICsgKG1vbnRoKzEpICUgMjsKKyAgICAgICAgICAgIGlmIChtb250aCA9PSBESFVfQUxfSElKSkFIICYmIGNpdmlsTGVhcFllYXIoZXh0ZW5kZWRZZWFyKSkgeworICAgICAgICAgICAgICAgIGxlbmd0aCsrOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbW9udGggPSAxMiooZXh0ZW5kZWRZZWFyLTEpICsgbW9udGg7CisgICAgICAgICAgICBsZW5ndGggPSAoaW50KSggdHJ1ZU1vbnRoU3RhcnQobW9udGgrMSkgLSB0cnVlTW9udGhTdGFydChtb250aCkgKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbGVuZ3RoOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgbnVtYmVyIG9mIGRheXMgaW4gdGhlIGdpdmVuIElzbGFtaWMgeWVhcgorICAgICAqLworICAgIHByb3RlY3RlZCBpbnQgaGFuZGxlR2V0WWVhckxlbmd0aChpbnQgZXh0ZW5kZWRZZWFyKSB7CisgICAgICAgIGlmIChjaXZpbCkgeworICAgICAgICAgICAgcmV0dXJuIDM1NCArIChjaXZpbExlYXBZZWFyKGV4dGVuZGVkWWVhcikgPyAxIDogMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnQgbW9udGggPSAxMiooZXh0ZW5kZWRZZWFyLTEpOworICAgICAgICAgICAgcmV0dXJuIChpbnQpKHRydWVNb250aFN0YXJ0KG1vbnRoICsgMTIpIC0gdHJ1ZU1vbnRoU3RhcnQobW9udGgpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnZlcnRpbmcgZnJvbSBmaWVsZCB2YWx1ZXMgdG8gbWlsbGlzZWNvbmRzLi4uLgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLy8gUmV0dXJuIEpEIG9mIHN0YXJ0IG9mIGdpdmVuIG1vbnRoL3llYXIKKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZUNvbXB1dGVNb250aFN0YXJ0KGludCBleWVhciwgaW50IG1vbnRoLCBib29sZWFuIHVzZU1vbnRoKSB7CisgICAgICAgIHJldHVybiAoaW50KSBtb250aFN0YXJ0KGV5ZWFyLCBtb250aCkgKyAxOTQ4NDM5OworICAgIH0gICAgCisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBGdW5jdGlvbnMgZm9yIGNvbnZlcnRpbmcgZnJvbSBtaWxsaXNlY29uZHMgdG8gZmllbGQgdmFsdWVzCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBwcm90ZWN0ZWQgaW50IGhhbmRsZUdldEV4dGVuZGVkWWVhcigpIHsKKyAgICAgICAgaW50IHllYXI7CisgICAgICAgIGlmIChuZXdlckZpZWxkKEVYVEVOREVEX1lFQVIsIFlFQVIpID09IEVYVEVOREVEX1lFQVIpIHsKKyAgICAgICAgICAgIHllYXIgPSBpbnRlcm5hbEdldChFWFRFTkRFRF9ZRUFSLCAxKTsgLy8gRGVmYXVsdCB0byB5ZWFyIDEKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHllYXIgPSBpbnRlcm5hbEdldChZRUFSLCAxKTsgLy8gRGVmYXVsdCB0byB5ZWFyIDEKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geWVhcjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBDYWxlbmRhciB0byBjb21wdXRlIHNldmVyYWwgZmllbGRzIHNwZWNpZmljIHRvIHRoZSBJc2xhbWljCisgICAgICogY2FsZW5kYXIgc3lzdGVtLiAgVGhlc2UgYXJlOgorICAgICAqCisgICAgICogPHVsPjxsaT5FUkEKKyAgICAgKiA8bGk+WUVBUgorICAgICAqIDxsaT5NT05USAorICAgICAqIDxsaT5EQVlfT0ZfTU9OVEgKKyAgICAgKiA8bGk+REFZX09GX1lFQVIKKyAgICAgKiA8bGk+RVhURU5ERURfWUVBUjwvdWw+CisgICAgICogCisgICAgICogVGhlIERBWV9PRl9XRUVLIGFuZCBET1dfTE9DQUwgZmllbGRzIGFyZSBhbHJlYWR5IHNldCB3aGVuIHRoaXMKKyAgICAgKiBtZXRob2QgaXMgY2FsbGVkLiBUaGUgZ2V0R3JlZ29yaWFuWHh4KCkgbWV0aG9kcyByZXR1cm4gR3JlZ29yaWFuCisgICAgICogY2FsZW5kYXIgZXF1aXZhbGVudHMgZm9yIHRoZSBnaXZlbiBKdWxpYW4gZGF5LgorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZUNvbXB1dGVGaWVsZHMoaW50IGp1bGlhbkRheSkgeworICAgICAgICBpbnQgeWVhciwgbW9udGgsIGRheU9mTW9udGgsIGRheU9mWWVhcjsKKyAgICAgICAgbG9uZyBtb250aFN0YXJ0OworICAgICAgICBsb25nIGRheXMgPSBqdWxpYW5EYXkgLSAxOTQ4NDQwOworCisgICAgICAgIGlmIChjaXZpbCkgeworICAgICAgICAgICAgLy8gVXNlIHRoZSBjaXZpbCBjYWxlbmRhciBhcHByb3hpbWF0aW9uLCB3aGljaCBpcyBqdXN0IGFyaXRobWV0aWMKKyAgICAgICAgICAgIHllYXIgID0gKGludClNYXRoLmZsb29yKCAoMzAgKiBkYXlzICsgMTA2NDYpIC8gMTA2MzEuMCApOworICAgICAgICAgICAgbW9udGggPSAoaW50KU1hdGguY2VpbCgoZGF5cyAtIDI5IC0geWVhclN0YXJ0KHllYXIpKSAvIDI5LjUgKTsKKyAgICAgICAgICAgIG1vbnRoID0gTWF0aC5taW4obW9udGgsIDExKTsKKyAgICAgICAgICAgIG1vbnRoU3RhcnQgPSBtb250aFN0YXJ0KHllYXIsIG1vbnRoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEd1ZXNzIGF0IHRoZSBudW1iZXIgb2YgZWxhcHNlZCBmdWxsIG1vbnRocyBzaW5jZSB0aGUgZXBvY2gKKyAgICAgICAgICAgIGludCBtb250aHMgPSAoaW50KU1hdGguZmxvb3IoZGF5cyAvIENhbGVuZGFyQXN0cm9ub21lci5TWU5PRElDX01PTlRIKTsKKworICAgICAgICAgICAgbW9udGhTdGFydCA9IChsb25nKU1hdGguZmxvb3IobW9udGhzICogQ2FsZW5kYXJBc3Ryb25vbWVyLlNZTk9ESUNfTU9OVEggLSAxKTsKKworICAgICAgICAgICAgaWYgKCBkYXlzIC0gbW9udGhTdGFydCA+PSAyOCAmJiBtb29uQWdlKGludGVybmFsR2V0VGltZUluTWlsbGlzKCkpID4gMCkgeworICAgICAgICAgICAgICAgIC8vIElmIHdlJ3JlIG5lYXIgdGhlIGVuZCBvZiB0aGUgbW9udGgsIGFzc3VtZSBuZXh0IG1vbnRoIGFuZCBzZWFyY2ggYmFja3dhcmRzCisgICAgICAgICAgICAgICAgbW9udGhzKys7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEZpbmQgb3V0IHRoZSBsYXN0IHRpbWUgdGhhdCB0aGUgbmV3IG1vb24gd2FzIGFjdHVhbGx5IHZpc2libGUgYXQgdGhpcyBsb25naXR1ZGUKKyAgICAgICAgICAgIC8vIFRoaXMgcmV0dXJucyBtaWRuaWdodCB0aGUgbmlnaHQgdGhhdCB0aGUgbW9vbiB3YXMgdmlzaWJsZSBhdCBzdW5zZXQuCisgICAgICAgICAgICB3aGlsZSAoKG1vbnRoU3RhcnQgPSB0cnVlTW9udGhTdGFydChtb250aHMpKSA+IGRheXMpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiBpdCB3YXMgYWZ0ZXIgdGhlIGRhdGUgaW4gcXVlc3Rpb24sIGJhY2sgdXAgYSBtb250aCBhbmQgdHJ5IGFnYWluCisgICAgICAgICAgICAgICAgbW9udGhzLS07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHllYXIgPSBtb250aHMgLyAxMiArIDE7CisgICAgICAgICAgICBtb250aCA9IG1vbnRocyAlIDEyOworICAgICAgICB9CisKKyAgICAgICAgZGF5T2ZNb250aCA9IChpbnQpKGRheXMgLSBtb250aFN0YXJ0KHllYXIsIG1vbnRoKSkgKyAxOworCisgICAgICAgIC8vIE5vdyBmaWd1cmUgb3V0IHRoZSBkYXkgb2YgdGhlIHllYXIuCisgICAgICAgIGRheU9mWWVhciA9IChpbnQpKGRheXMgLSBtb250aFN0YXJ0KHllYXIsIDApICsgMSk7CisKKyAgICAgICAgaW50ZXJuYWxTZXQoRVJBLCAwKTsKKyAgICAgICAgaW50ZXJuYWxTZXQoWUVBUiwgeWVhcik7CisgICAgICAgIGludGVybmFsU2V0KEVYVEVOREVEX1lFQVIsIHllYXIpOworICAgICAgICBpbnRlcm5hbFNldChNT05USCwgbW9udGgpOworICAgICAgICBpbnRlcm5hbFNldChEQVlfT0ZfTU9OVEgsIGRheU9mTW9udGgpOworICAgICAgICBpbnRlcm5hbFNldChEQVlfT0ZfWUVBUiwgZGF5T2ZZZWFyKTsgICAgICAgCisgICAgfSAgICAKK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvSmFwYW5lc2VDYWxlbmRhci5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9KYXBhbmVzZUNhbGVuZGFyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYTRlZmM5OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvSmFwYW5lc2VDYWxlbmRhci5qYXZhCkBAIC0wLDAgKzEsNTM4IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL0F0dGljL0phcGFuZXNlQ2FsZW5kYXIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8xMS8zMCAyMToyOTo0OSAkIAorICogJFJldmlzaW9uOiAxLjcgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udXRpbDsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5Mb2NhbGU7CisKKy8qKgorICogPGNvZGU+SmFwYW5lc2VDYWxlbmRhcjwvY29kZT4gaXMgYSBzdWJjbGFzcyBvZiA8Y29kZT5HcmVnb3JpYW5DYWxlbmRhcjwvY29kZT4KKyAqIHRoYXQgbnVtYmVycyB5ZWFycyBhbmQgZXJhcyBiYXNlZCBvbiB0aGUgcmVpZ25zIG9mIHRoZSBKYXBhbmVzZSBlbXBlcm9ycy4KKyAqIFRoZSBKYXBhbmVzZSBjYWxlbmRhciBpcyBpZGVudGljYWwgdG8gdGhlIEdyZWdvcmlhbiBjYWxlbmRhciBpbiBhbGwgcmVzcGVjdHMKKyAqIGV4Y2VwdCBmb3IgdGhlIHllYXIgYW5kIGVyYS4gIFRoZSBhc2NlbnNpb24gb2YgZWFjaCAgZW1wZXJvciB0byB0aGUgdGhyb25lCisgKiBiZWdpbnMgYSBuZXcgZXJhLCBhbmQgdGhlIHllYXJzIG9mIHRoYXQgZXJhIGFyZSBudW1iZXJlZCBzdGFydGluZyB3aXRoIHRoZQorICogeWVhciBvZiBhc2NlbnNpb24gYXMgeWVhciAxLgorICogPHA+CisgKiBOb3RlIHRoYXQgaW4gdGhlIHllYXIgb2YgYW4gaW1wZXJpYWwgYXNjZW5zaW9uLCB0aGVyZSBhcmUgdHdvIHBvc3NpYmxlIHNldHMKKyAqIG9mIHllYXIgYW5kIGVyYSB2YWx1ZXM6IHRoYXQgZm9yIHRoZSBvbGQgZXJhIGFuZCBmb3IgdGhlIG5ldy4gIEZvciBleGFtcGxlLCBhCisgKiBuZXcgZXJhIGJlZ2FuIG9uIEphbnVhcnkgNywgMTk4OSBBRC4gIFN0cmljdGx5IHNwZWFraW5nLCB0aGUgZmlyc3Qgc2l4IGRheXMKKyAqIG9mIHRoYXQgeWVhciB3ZXJlIGluIHRoZSBTaG93YSBlcmEsIGUuZy4gIkphbnVhcnkgNiwgNjQgU2hvd2EiLCB3aGlsZSB0aGUgcmVzdAorICogb2YgdGhlIHllYXIgd2FzIGluIHRoZSBIZWlzZWkgZXJhLCBlLmcuICJKYW51YXJ5IDcsIDEgSGVpc2VpIi4gIFRoaXMgY2xhc3MKKyAqIGhhbmRsZXMgdGhpcyBkaXN0aW5jdGlvbiBjb3JyZWN0bHkgd2hlbiBjb21wdXRpbmcgZGF0ZXMuICBIb3dldmVyLCBpbiBsZW5pZW50CisgKiBtb2RlIGVpdGhlciBmb3JtIG9mIGRhdGUgaXMgYWNjZXB0YWJsZSBhcyBpbnB1dC4gCisgKiA8cD4KKyAqIEluIG1vZGVybiB0aW1lcywgZXJhcyBoYXZlIHN0YXJ0ZWQgb24gSmFudWFyeSA4LCAxODY4IEFELCBHcmVnb3JpYW4gKE1laWppKSwKKyAqIEp1bHkgMzAsIDE5MTIgKFRhaXNobyksIERlY2VtYmVyIDI1LCAxOTI2IChTaG93YSksIGFuZCBKYW51YXJ5IDcsIDE5ODkgKEhlaXNlaSkuICBDb25zdGFudHMKKyAqIGZvciB0aGVzZSBlcmFzLCBzdWl0YWJsZSBmb3IgdXNlIGluIHRoZSA8Y29kZT5FUkE8L2NvZGU+IGZpZWxkLCBhcmUgcHJvdmlkZWQKKyAqIGluIHRoaXMgY2xhc3MuICBOb3RlIHRoYXQgdGhlIDxlbT5udW1iZXI8L2VtPiB1c2VkIGZvciBlYWNoIGVyYSBpcyBtb3JlIG9yCisgKiBsZXNzIGFyYml0cmFyeS4gIEN1cnJlbnRseSwgdGhlIGVyYSBzdGFydGluZyBpbiAxMDUzIEFEIGlzIGVyYSAjMDsgaG93ZXZlciB0aGlzCisgKiBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUgYXMgd2UgYWRkIG1vcmUgaGlzdG9yaWNhbCBkYXRhLiAgVXNlIHRoZSBwcmVkZWZpbmVkCisgKiBjb25zdGFudHMgcmF0aGVyIHRoYW4gdXNpbmcgYWN0dWFsLCBhYnNvbHV0ZSBudW1iZXJzLgorICogPHA+CisgKgorICogQHNlZSBjb20uaWJtLnV0aWwuR3JlZ29yaWFuQ2FsZW5kYXIKKyAqCisgKiBAYXV0aG9yIExhdXJhIFdlcm5lcgorICogQGF1dGhvciBBbGFuIExpdQorICovCitwdWJsaWMgY2xhc3MgSmFwYW5lc2VDYWxlbmRhciBleHRlbmRzIEdyZWdvcmlhbkNhbGVuZGFyIHsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgY29weXJpZ2h0ID0gIkNvcHlyaWdodCBcdTAwYTkgMTk5OCBJQk0gQ29ycC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4iOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQ29uc3RydWN0b3JzLi4uCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgZGVmYXVsdCA8Y29kZT5KYXBhbmVzZUNhbGVuZGFyPC9jb2RlPiB1c2luZyB0aGUgY3VycmVudCB0aW1lCisgICAgICogaW4gdGhlIGRlZmF1bHQgdGltZSB6b25lIHdpdGggdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqLworICAgIHB1YmxpYyBKYXBhbmVzZUNhbGVuZGFyKCkgeworICAgICAgICBzdXBlcigpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSA8Y29kZT5KYXBhbmVzZUNhbGVuZGFyPC9jb2RlPiBiYXNlZCBvbiB0aGUgY3VycmVudCB0aW1lCisgICAgICogaW4gdGhlIGdpdmVuIHRpbWUgem9uZSB3aXRoIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBAcGFyYW0gem9uZSB0aGUgZ2l2ZW4gdGltZSB6b25lLgorICAgICAqLworICAgIHB1YmxpYyBKYXBhbmVzZUNhbGVuZGFyKFRpbWVab25lIHpvbmUpIHsKKyAgICAgICAgc3VwZXIoem9uZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIDxjb2RlPkphcGFuZXNlQ2FsZW5kYXI8L2NvZGU+IGJhc2VkIG9uIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgd2l0aCB0aGUgZ2l2ZW4gbG9jYWxlLgorICAgICAqIEBwYXJhbSBhTG9jYWxlIHRoZSBnaXZlbiBsb2NhbGUuCisgICAgICovCisgICAgcHVibGljIEphcGFuZXNlQ2FsZW5kYXIoTG9jYWxlIGFMb2NhbGUpIHsKKyAgICAgICAgc3VwZXIoYUxvY2FsZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0cyBhIDxjb2RlPkphcGFuZXNlQ2FsZW5kYXI8L2NvZGU+IGJhc2VkIG9uIHRoZSBjdXJyZW50IHRpbWUKKyAgICAgKiBpbiB0aGUgZ2l2ZW4gdGltZSB6b25lIHdpdGggdGhlIGdpdmVuIGxvY2FsZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSB6b25lIHRoZSBnaXZlbiB0aW1lIHpvbmUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gYUxvY2FsZSB0aGUgZ2l2ZW4gbG9jYWxlLgorICAgICAqLworICAgIHB1YmxpYyBKYXBhbmVzZUNhbGVuZGFyKFRpbWVab25lIHpvbmUsIExvY2FsZSBhTG9jYWxlKSB7CisgICAgICAgIHN1cGVyKHpvbmUsIGFMb2NhbGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdHMgYSA8Y29kZT5KYXBhbmVzZUNhbGVuZGFyPC9jb2RlPiB3aXRoIHRoZSBnaXZlbiBkYXRlIHNldAorICAgICAqIGluIHRoZSBkZWZhdWx0IHRpbWUgem9uZSB3aXRoIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXRlICAgICAgVGhlIGRhdGUgdG8gd2hpY2ggdGhlIG5ldyBjYWxlbmRhciBpcyBzZXQuCisgICAgICovCisgICAgcHVibGljIEphcGFuZXNlQ2FsZW5kYXIoRGF0ZSBkYXRlKSB7CisgICAgICAgIHRoaXMoKTsKKyAgICAgICAgc2V0VGltZShkYXRlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+SmFwYW5lc2VDYWxlbmRhcjwvY29kZT4gd2l0aCB0aGUgZ2l2ZW4gZGF0ZSBzZXQKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZXJhICAgICAgIFRoZSBpbXBlcmlhbCBlcmEgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNFUkEgRVJBfSBmaWVsZC4KKyAgICAgKiAgICAgICAgICAgICAgICAgIEVyYXMgYXJlIG51bWJlcmVkIHN0YXJ0aW5nIHdpdGggdGhlIFRlbmtpIGVyYSwgd2hpY2gKKyAgICAgKiAgICAgICAgICAgICAgICAgIGJlZ2FuIGluIDEwNTMgQUQgR3JlZ29yaWFuLCBhcyBlcmEgemVyby4gIFJlY2VudAorICAgICAqICAgICAgICAgICAgICAgICAgZXJhcyBjYW4gYmUgc3BlY2lmaWVkIHVzaW5nIHRoZSBjb25zdGFudHMKKyAgICAgKiAgICAgICAgICAgICAgICAgIHtAbGluayAjTUVJSkl9ICh3aGljaCBzdGFydGVkIGluIDE4NjggQUQpLAorICAgICAqICAgICAgICAgICAgICAgICAge0BsaW5rICNUQUlTSE99ICgxOTEyIEFEKSwKKyAgICAgKiAgICAgICAgICAgICAgICAgIHtAbGluayAjU0hPV0F9ICgxOTI2IEFEKSwgYW5kCisgICAgICogICAgICAgICAgICAgICAgICB7QGxpbmsgI0hFSVNFSX0gKDE5ODkgQUQpLgorICAgICAqCisgICAgICogQHBhcmFtIHllYXIgICAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNZRUFSIFlFQVJ9IGZpZWxkLAorICAgICAqICAgICAgICAgICAgICAgICAgaW4gdGVybXMgb2YgdGhlIGVyYS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtb250aCAgICAgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBjYWxlbmRhcidzIHtAbGluayAjTU9OVEggTU9OVEh9IGZpZWxkLgorICAgICAqICAgICAgICAgICAgICAgICAgVGhlIHZhbHVlIGlzIDAtYmFzZWQuIGUuZy4sIDAgZm9yIEphbnVhcnkuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZGF0ZSAgICAgIFRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgY2FsZW5kYXIncyBEQVRFIGZpZWxkLgorICAgICAqLworICAgIHB1YmxpYyBKYXBhbmVzZUNhbGVuZGFyKGludCBlcmEsIGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXRlKSB7CisgICAgICAgIHN1cGVyKHllYXIsIG1vbnRoLCBkYXRlKTsKKyAgICAgICAgc2V0KEVSQSwgZXJhKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+SmFwYW5lc2VDYWxlbmRhcjwvY29kZT4gd2l0aCB0aGUgZ2l2ZW4gZGF0ZSBzZXQKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCB0aW1lIHpvbmUgd2l0aCB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0geWVhciAgICAgIFRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgY2FsZW5kYXIncyB7QGxpbmsgI1lFQVIgWUVBUn0gZmllbGQsCisgICAgICogICAgICAgICAgICAgICAgICBpbiB0aGUgZXJhIEhlaXNlaSwgdGhlIG1vc3QgY3VycmVudCBhdCB0aGUgdGltZSB0aGlzCisgICAgICogICAgICAgICAgICAgICAgICBjbGFzcyB3YXMgbGFzdCB1cGRhdGVkLgorICAgICAqCisgICAgICogQHBhcmFtIG1vbnRoICAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNNT05USCBNT05USH0gZmllbGQuCisgICAgICogICAgICAgICAgICAgICAgICBUaGUgdmFsdWUgaXMgMC1iYXNlZC4gZS5nLiwgMCBmb3IgSmFudWFyeS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXRlICAgICAgVGhlIHZhbHVlIHVzZWQgdG8gc2V0IHRoZSBjYWxlbmRhcidzIHtAbGluayAjREFURSBEQVRFfSBmaWVsZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgSmFwYW5lc2VDYWxlbmRhcihpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF0ZSkgeworICAgICAgICBzdXBlcih5ZWFyLCBtb250aCwgZGF0ZSk7CisgICAgICAgIHNldChFUkEsIENVUlJFTlRfRVJBKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgPGNvZGU+SmFwYW5lc2VDYWxlbmRhcjwvY29kZT4gd2l0aCB0aGUgZ2l2ZW4gZGF0ZQorICAgICAqIGFuZCB0aW1lIHNldCBmb3IgdGhlIGRlZmF1bHQgdGltZSB6b25lIHdpdGggdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqCisgICAgICogQHBhcmFtIHllYXIgICAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNZRUFSIFlFQVJ9IHRpbWUgZmllbGQsCisgICAgICogICAgICAgICAgICAgICAgICBpbiB0aGUgZXJhIEhlaXNlaSwgdGhlIG1vc3QgY3VycmVudCBhdCB0aGUgdGltZSBvZiB0aGlzCisgICAgICogICAgICAgICAgICAgICAgICB3cml0aW5nLgorICAgICAqCisgICAgICogQHBhcmFtIG1vbnRoICAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNNT05USCBNT05USH0gdGltZSBmaWVsZC4KKyAgICAgKiAgICAgICAgICAgICAgICAgIFRoZSB2YWx1ZSBpcyAwLWJhc2VkLiBlLmcuLCAwIGZvciBKYW51YXJ5LgorICAgICAqCisgICAgICogQHBhcmFtIGRhdGUgICAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNEQVRFIERBVEV9IHRpbWUgZmllbGQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gaG91ciAgICAgIFRoZSB2YWx1ZSB1c2VkIHRvIHNldCB0aGUgY2FsZW5kYXIncyB7QGxpbmsgI0hPVVJfT0ZfREFZIEhPVVJfT0ZfREFZfSB0aW1lIGZpZWxkLgorICAgICAqCisgICAgICogQHBhcmFtIG1pbnV0ZSAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNNSU5VVEUgTUlOVVRFfSB0aW1lIGZpZWxkLgorICAgICAqCisgICAgICogQHBhcmFtIHNlY29uZCAgICBUaGUgdmFsdWUgdXNlZCB0byBzZXQgdGhlIGNhbGVuZGFyJ3Mge0BsaW5rICNTRUNPTkQgU0VDT05EfSB0aW1lIGZpZWxkLgorICAgICAqLworICAgIHB1YmxpYyBKYXBhbmVzZUNhbGVuZGFyKGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXRlLCBpbnQgaG91ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1pbnV0ZSwgaW50IHNlY29uZCkKKyAgICB7CisgICAgICAgIHN1cGVyKHllYXIsIG1vbnRoLCBkYXRlLCBob3VyLCBtaW51dGUsIHNlY29uZCk7CisgICAgICAgIHNldChFUkEsIENVUlJFTlRfRVJBKTsKKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHByb3RlY3RlZCBpbnQgaGFuZGxlR2V0RXh0ZW5kZWRZZWFyKCkgeworICAgICAgICBpbnQgeWVhcjsKKyAgICAgICAgLy8gVE9ETyByZWltcGxlbWVudCB0aGlzIHRvIGJlIGZhc3Rlcj8KKyAgICAgICAgaWYgKG5ld2VyRmllbGQoRVhURU5ERURfWUVBUiwgWUVBUikgPT0gRVhURU5ERURfWUVBUiAmJgorICAgICAgICAgICAgbmV3ZXJGaWVsZChFWFRFTkRFRF9ZRUFSLCBFUkEpID09IEVYVEVOREVEX1lFQVIpIHsKKyAgICAgICAgICAgIHllYXIgPSBpbnRlcm5hbEdldChFWFRFTkRFRF9ZRUFSLCAxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFN1YnRyYWN0IG9uZSBiZWNhdXNlIHllYXIgc3RhcnRzIGF0IDEKKyAgICAgICAgICAgIHllYXIgPSBpbnRlcm5hbEdldChZRUFSKSArIEVSQVNbaW50ZXJuYWxHZXQoRVJBKSAqIDNdIC0gMTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geWVhcjsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgdm9pZCBoYW5kbGVDb21wdXRlRmllbGRzKGludCBqdWxpYW5EYXkpIHsKKyAgICAgICAgc3VwZXIuaGFuZGxlQ29tcHV0ZUZpZWxkcyhqdWxpYW5EYXkpOworICAgICAgICBpbnQgeWVhciA9IGludGVybmFsR2V0KEVYVEVOREVEX1lFQVIpOworCisgICAgICAgIGludCBsb3cgPSAwOworCisgICAgICAgIC8vIFNob3J0IGNpcmN1aXQgZm9yIHJlY2VudCB5ZWFycy4gIE1vc3QgbW9kZXJuIGNvbXB1dGF0aW9ucyB3aWxsCisgICAgICAgIC8vIG9jY3VyIGluIHRoZSBjdXJyZW50IGVyYSBhbmQgd29uJ3QgcmVxdWlyZSB0aGUgYmluYXJ5IHNlYXJjaC4KKyAgICAgICAgLy8gTm90ZSB0aGF0IGlmIHRoZSB5ZWFyIGlzID09IHRoZSBjdXJyZW50IGVyYSB5ZWFyLCB0aGVuIHdlIHVzZQorICAgICAgICAvLyB0aGUgYmluYXJ5IHNlYXJjaCB0byBoYW5kbGUgdGhlIG1vbnRoL2RvbSBjb21wYXJpc29uLgorICAgICAgICBpZiAoeWVhciA+IEVSQVNbRVJBUy5sZW5ndGggLSAzXSkgeworICAgICAgICAgICAgbG93ID0gQ1VSUkVOVF9FUkE7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBCaW5hcnkgc2VhcmNoCisgICAgICAgICAgICBpbnQgaGlnaCA9IEVSQVMubGVuZ3RoIC8gMzsKKyAgICAgICAgCisgICAgICAgICAgICB3aGlsZSAobG93IDwgaGlnaCAtIDEpIHsKKyAgICAgICAgICAgICAgICBpbnQgaSA9IChsb3cgKyBoaWdoKSAvIDI7CisgICAgICAgICAgICAgICAgaW50IGRpZmYgPSB5ZWFyIC0gRVJBU1tpKjNdOworCisgICAgICAgICAgICAgICAgLy8gSWYgeWVhcnMgYXJlIHRoZSBzYW1lLCB0aGVuIGNvbXBhcmUgdGhlIG1vbnRocywgYW5kIGlmIHRob3NlCisgICAgICAgICAgICAgICAgLy8gYXJlIHRoZSBzYW1lLCBjb21wYXJlIGRheXMgb2YgbW9udGguICBJbiB0aGUgRVJBUyBhcnJheQorICAgICAgICAgICAgICAgIC8vIG1vbnRocyBhcmUgMS1iYXNlZCBmb3IgZWFzaWVyIG1haW50ZW5hbmNlLgorICAgICAgICAgICAgICAgIGlmIChkaWZmID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZGlmZiA9IGludGVybmFsR2V0KE1PTlRIKSAtIChFUkFTW2kqMyArIDFdIC0gMSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChkaWZmID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpZmYgPSBpbnRlcm5hbEdldChEQVlfT0ZfTU9OVEgpIC0gRVJBU1tpKjMgKyAyXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZGlmZiA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGxvdyA9IGk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaGlnaCA9IGk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gTm93IHdlJ3ZlIGZvdW5kIHRoZSBsYXN0IGVyYSB0aGF0IHN0YXJ0cyBiZWZvcmUgdGhpcyBkYXRlLCBzbworICAgICAgICAvLyBhZGp1c3QgdGhlIHllYXIgdG8gY291bnQgZnJvbSB0aGUgc3RhcnQgb2YgdGhhdCBlcmEuICBOb3RlIHRoYXQKKyAgICAgICAgLy8gYWxsIGRhdGVzIGJlZm9yZSB0aGUgZmlyc3QgZXJhIHdpbGwgZmFsbCBpbnRvIHRoZSBmaXJzdCBlcmEgYnkKKyAgICAgICAgLy8gdGhlIGFsZ29yaXRobS4KKyAgICAgICAgaW50ZXJuYWxTZXQoRVJBLCBsb3cpOworICAgICAgICBpbnRlcm5hbFNldChZRUFSLCB5ZWFyIC0gRVJBU1tsb3cqM10gKyAxKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBFUkFTID0geworICAgIC8vICBHcmVnb3JpYW4gZGF0ZSBvZiBlYWNoIGVtcGVyb3IncyBhc2NlbnNpb24KKyAgICAvLyAgWWVhcnMgYXJlIEFELCBtb250aHMgYXJlIDEtYmFzZWQuCisgICAgLy8gIFllYXIgIE1vbnRoIERheQorICAgICAgICAgNjQ1LCAgICA2LCAxOSwgICAgIC8vIFRhaWthCisgICAgICAgICA2NTAsICAgIDIsIDE1LCAgICAgLy8gSGFrdWNoaQorICAgICAgICAgNjcyLCAgICAxLCAgMSwgICAgIC8vIEhha3VobworICAgICAgICAgNjg2LCAgICA3LCAyMCwgICAgIC8vIFNodWNobworICAgICAgICAgNzAxLCAgICAzLCAyMSwgICAgIC8vIFRhaWhvCisgICAgICAgICA3MDQsICAgIDUsIDEwLCAgICAgLy8gS2VpdW4KKyAgICAgICAgIDcwOCwgICAgMSwgMTEsICAgICAvLyBXYWRvCisgICAgICAgICA3MTUsICAgIDksICAyLCAgICAgLy8gUmVpa2kKKyAgICAgICAgIDcxNywgICAxMSwgMTcsICAgICAvLyBZb3JvCisgICAgICAgICA3MjQsICAgIDIsICA0LCAgICAgLy8gSmlua2kKKyAgICAgICAgIDcyOSwgICAgOCwgIDUsICAgICAvLyBUZW1weW8KKyAgICAgICAgIDc0OSwgICAgNCwgMTQsICAgICAvLyBUZW1weW8ta2FtcG8KKyAgICAgICAgIDc0OSwgICAgNywgIDIsICAgICAvLyBUZW1weW8tc2hvaG8KKyAgICAgICAgIDc1NywgICAgOCwgMTgsICAgICAvLyBUZW1weW8taG9qaQorICAgICAgICAgNzY1LCAgICAxLCAgNywgICAgIC8vIFRlbXBoby1qaW5nbworICAgICAgICAgNzY3LCAgICA4LCAxNiwgICAgIC8vIEppbmdvLWtlaXVuCisgICAgICAgICA3NzAsICAgMTAsICAxLCAgICAgLy8gSG9raQorICAgICAgICAgNzgxLCAgICAxLCAgMSwgICAgIC8vIFRlbi1vCisgICAgICAgICA3ODIsICAgIDgsIDE5LCAgICAgLy8gRW5yeWFrdQorICAgICAgICAgODA2LCAgICA1LCAxOCwgICAgIC8vIERhaWRvCisgICAgICAgICA4MTAsICAgIDksIDE5LCAgICAgLy8gS29uaW4KKyAgICAgICAgIDgyNCwgICAgMSwgIDUsICAgICAvLyBUZW5jaG8KKyAgICAgICAgIDgzNCwgICAgMSwgIDMsICAgICAvLyBTaG93YQorICAgICAgICAgODQ4LCAgICA2LCAxMywgICAgIC8vIEtham8KKyAgICAgICAgIDg1MSwgICAgNCwgMjgsICAgICAvLyBOaW5qdQorICAgICAgICAgODU0LCAgIDExLCAzMCwgICAgIC8vIFNhaWtvCisgICAgICAgICA4NTcsICAgIDIsIDIxLCAgICAgLy8gVGVubmFuCisgICAgICAgICA4NTksICAgIDQsIDE1LCAgICAgLy8gSm9nYW4KKyAgICAgICAgIDg3NywgICAgNCwgMTYsICAgICAvLyBHZW5rZWkKKyAgICAgICAgIDg4NSwgICAgMiwgMjEsICAgICAvLyBOaW5uYQorICAgICAgICAgODg5LCAgICA0LCAyNywgICAgIC8vIEthbXB5bworICAgICAgICAgODk4LCAgICA0LCAyNiwgICAgIC8vIFNob3RhaQorICAgICAgICAgOTAxLCAgICA3LCAxNSwgICAgIC8vIEVuZ2kKKyAgICAgICAgIDkyMywgICAgNCwgMTEsICAgICAvLyBFbmNobworICAgICAgICAgOTMxLCAgICA0LCAyNiwgICAgIC8vIFNob2hlaQorICAgICAgICAgOTM4LCAgICA1LCAyMiwgICAgIC8vIFRlbmd5bworICAgICAgICAgOTQ3LCAgICA0LCAyMiwgICAgIC8vIFRlbnJ5YWt1CisgICAgICAgICA5NTcsICAgMTAsIDI3LCAgICAgLy8gVGVudG9rdQorICAgICAgICAgOTYxLCAgICAyLCAxNiwgICAgIC8vIE93YQorICAgICAgICAgOTY0LCAgICA3LCAxMCwgICAgIC8vIEtvaG8KKyAgICAgICAgIDk2OCwgICAgOCwgMTMsICAgICAvLyBBbm5hCisgICAgICAgICA5NzAsICAgIDMsIDI1LCAgICAgLy8gVGVucm9rdQorICAgICAgICAgOTczLCAgIDEyLCAyMCwgICAgIC8vIFRlbi1lbgorICAgICAgICAgOTc2LCAgICA3LCAxMywgICAgIC8vIEpvZ2VuCisgICAgICAgICA5NzgsICAgMTEsIDI5LCAgICAgLy8gVGVuZ2VuCisgICAgICAgICA5ODMsICAgIDQsIDE1LCAgICAgLy8gRWlrYW4KKyAgICAgICAgIDk4NSwgICAgNCwgMjcsICAgICAvLyBLYW5uYQorICAgICAgICAgOTg3LCAgICA0LCAgNSwgICAgIC8vIEVpLWVuCisgICAgICAgICA5ODksICAgIDgsICA4LCAgICAgLy8gRWlzbworICAgICAgICAgOTkwLCAgIDExLCAgNywgICAgIC8vIFNob3J5YWt1CisgICAgICAgICA5OTUsICAgIDIsIDIyLCAgICAgLy8gQ2hvdG9rdQorICAgICAgICAgOTk5LCAgICAxLCAxMywgICAgIC8vIENob2hvCisgICAgICAgIDEwMDQsICAgIDcsIDIwLCAgICAgLy8gS2Fua28KKyAgICAgICAgMTAxMiwgICAxMiwgMjUsICAgICAvLyBDaG93YQorICAgICAgICAxMDE3LCAgICA0LCAyMywgICAgIC8vIEthbm5pbgorICAgICAgICAxMDIxLCAgICAyLCAgMiwgICAgIC8vIEppYW4KKyAgICAgICAgMTAyNCwgICAgNywgMTMsICAgICAvLyBNYW5qdQorICAgICAgICAxMDI4LCAgICA3LCAyNSwgICAgIC8vIENob2dlbgorICAgICAgICAxMDM3LCAgICA0LCAyMSwgICAgIC8vIENob3J5YWt1CisgICAgICAgIDEwNDAsICAgMTEsIDEwLCAgICAgLy8gQ2hva3l1CisgICAgICAgIDEwNDQsICAgMTEsIDI0LCAgICAgLy8gS2FudG9rdQorICAgICAgICAxMDQ2LCAgICA0LCAxNCwgICAgIC8vIEVpc2hvCisgICAgICAgIDEwNTMsICAgIDEsIDExLCAgICAgLy8gVGVuZ2kKKyAgICAgICAgMTA1OCwgICAgOCwgMjksICAgICAvLyBLb2hlaQorICAgICAgICAxMDY1LCAgICA4LCAgMiwgICAgIC8vIEppcnlha3UKKyAgICAgICAgMTA2OSwgICAgNCwgMTMsICAgICAvLyBFbmt5dQorICAgICAgICAxMDc0LCAgICA4LCAyMywgICAgIC8vIFNob2hvCisgICAgICAgIDEwNzcsICAgMTEsIDE3LCAgICAgLy8gU2hvcnlha3UKKyAgICAgICAgMTA4MSwgICAgMiwgMTAsICAgICAvLyBFaWhvCisgICAgICAgIDEwODQsICAgIDIsICA3LCAgICAgLy8gT3Rva3UKKyAgICAgICAgMTA4NywgICAgNCwgIDcsICAgICAvLyBLYW5qaQorICAgICAgICAxMDk0LCAgIDEyLCAxNSwgICAgIC8vIEthaG8KKyAgICAgICAgMTA5NiwgICAxMiwgMTcsICAgICAvLyBFaWNobworICAgICAgICAxMDk3LCAgIDExLCAyMSwgICAgIC8vIFNob3Rva3UKKyAgICAgICAgMTA5OSwgICAgOCwgMjgsICAgICAvLyBLb3dhCisgICAgICAgIDExMDQsICAgIDIsIDEwLCAgICAgLy8gQ2hvamkKKyAgICAgICAgMTEwNiwgICAgNCwgIDksICAgICAvLyBLYXNobworICAgICAgICAxMTA4LCAgICA4LCAgMywgICAgIC8vIFRlbm5pbgorICAgICAgICAxMTEwLCAgICA3LCAxMywgICAgIC8vIFRlbi1laQorICAgICAgICAxMTEzLCAgICA3LCAxMywgICAgIC8vIEVpa3l1CisgICAgICAgIDExMTgsICAgIDQsICAzLCAgICAgLy8gR2VuLWVpCisgICAgICAgIDExMjAsICAgIDQsIDEwLCAgICAgLy8gSG9hbgorICAgICAgICAxMTI0LCAgICA0LCAgMywgICAgIC8vIFRlbmppCisgICAgICAgIDExMjYsICAgIDEsIDIyLCAgICAgLy8gRGFpamkKKyAgICAgICAgMTEzMSwgICAgMSwgMjksICAgICAvLyBUZW5zaG8KKyAgICAgICAgMTEzMiwgICAgOCwgMTEsICAgICAvLyBDaG9zaG8KKyAgICAgICAgMTEzNSwgICAgNCwgMjcsICAgICAvLyBIb2VuCisgICAgICAgIDExNDEsICAgIDcsIDEwLCAgICAgLy8gRWlqaQorICAgICAgICAxMTQyLCAgICA0LCAyOCwgICAgIC8vIEtvamkKKyAgICAgICAgMTE0NCwgICAgMiwgMjMsICAgICAvLyBUZW55bworICAgICAgICAxMTQ1LCAgICA3LCAyMiwgICAgIC8vIEt5dWFuCisgICAgICAgIDExNTEsICAgIDEsIDI2LCAgICAgLy8gTmlucGVpCisgICAgICAgIDExNTQsICAgMTAsIDI4LCAgICAgLy8gS3l1anUKKyAgICAgICAgMTE1NiwgICAgNCwgMjcsICAgICAvLyBIb2dlbgorICAgICAgICAxMTU5LCAgICA0LCAyMCwgICAgIC8vIEhlaWppCisgICAgICAgIDExNjAsICAgIDEsIDEwLCAgICAgLy8gRWlyeWFrdQorICAgICAgICAxMTYxLCAgICA5LCAgNCwgICAgIC8vIE9obworICAgICAgICAxMTYzLCAgICAzLCAyOSwgICAgIC8vIENob2thbgorICAgICAgICAxMTY1LCAgICA2LCAgNSwgICAgIC8vIEVpbWFuCisgICAgICAgIDExNjYsICAgIDgsIDI3LCAgICAgLy8gTmluLWFuCisgICAgICAgIDExNjksICAgIDQsICA4LCAgICAgLy8gS2FvCisgICAgICAgIDExNzEsICAgIDQsIDIxLCAgICAgLy8gU2hvYW4KKyAgICAgICAgMTE3NSwgICAgNywgMjgsICAgICAvLyBBbmdlbgorICAgICAgICAxMTc3LCAgICA4LCAgNCwgICAgIC8vIEppc2hvCisgICAgICAgIDExODEsICAgIDcsIDE0LCAgICAgLy8gWW93YQorICAgICAgICAxMTgyLCAgICA1LCAyNywgICAgIC8vIEp1ZWkKKyAgICAgICAgMTE4NCwgICAgNCwgMTYsICAgICAvLyBHZW5yeXVrdQorICAgICAgICAxMTg1LCAgICA4LCAxNCwgICAgIC8vIEJ1bmppCisgICAgICAgIDExOTAsICAgIDQsIDExLCAgICAgLy8gS2Vua3l1CisgICAgICAgIDExOTksICAgIDQsIDI3LCAgICAgLy8gU2hvamkKKyAgICAgICAgMTIwMSwgICAgMiwgMTMsICAgICAvLyBLZW5uaW4KKyAgICAgICAgMTIwNCwgICAgMiwgMjAsICAgICAvLyBHZW5reXUKKyAgICAgICAgMTIwNiwgICAgNCwgMjcsICAgICAvLyBLZW4tZWkKKyAgICAgICAgMTIwNywgICAxMCwgMjUsICAgICAvLyBTaG9nZW4KKyAgICAgICAgMTIxMSwgICAgMywgIDksICAgICAvLyBLZW5yeWFrdQorICAgICAgICAxMjEzLCAgIDEyLCAgNiwgICAgIC8vIEtlbnBvCisgICAgICAgIDEyMTksICAgIDQsIDEyLCAgICAgLy8gU2hva3l1CisgICAgICAgIDEyMjIsICAgIDQsIDEzLCAgICAgLy8gSm9vCisgICAgICAgIDEyMjQsICAgMTEsIDIwLCAgICAgLy8gR2VubmluCisgICAgICAgIDEyMjUsICAgIDQsIDIwLCAgICAgLy8gS2Fyb2t1CisgICAgICAgIDEyMjcsICAgMTIsIDEwLCAgICAgLy8gQW50ZWkKKyAgICAgICAgMTIyOSwgICAgMywgIDUsICAgICAvLyBLYW5raQorICAgICAgICAxMjMyLCAgICA0LCAgMiwgICAgIC8vIEpvZWkKKyAgICAgICAgMTIzMywgICAgNCwgMTUsICAgICAvLyBUZW1wdWt1CisgICAgICAgIDEyMzQsICAgMTEsICA1LCAgICAgLy8gQnVucnlha3UKKyAgICAgICAgMTIzNSwgICAgOSwgMTksICAgICAvLyBLYXRlaQorICAgICAgICAxMjM4LCAgIDExLCAyMywgICAgIC8vIFJ5YWt1bmluCisgICAgICAgIDEyMzksICAgIDIsICA3LCAgICAgLy8gRW4tbworICAgICAgICAxMjQwLCAgICA3LCAxNiwgICAgIC8vIE5pbmppCisgICAgICAgIDEyNDMsICAgIDIsIDI2LCAgICAgLy8gS2FuZ2VuCisgICAgICAgIDEyNDcsICAgIDIsIDI4LCAgICAgLy8gSG9qaQorICAgICAgICAxMjQ5LCAgICAzLCAxOCwgICAgIC8vIEtlbmNobworICAgICAgICAxMjU2LCAgIDEwLCAgNSwgICAgIC8vIEtvZ2VuCisgICAgICAgIDEyNTcsICAgIDMsIDE0LCAgICAgLy8gU2hva2EKKyAgICAgICAgMTI1OSwgICAgMywgMjYsICAgICAvLyBTaG9nZW4KKyAgICAgICAgMTI2MCwgICAgNCwgMTMsICAgICAvLyBCdW4tbworICAgICAgICAxMjYxLCAgICAyLCAyMCwgICAgIC8vIEtvY2hvCisgICAgICAgIDEyNjQsICAgIDIsIDI4LCAgICAgLy8gQnVuLWVpCisgICAgICAgIDEyNzUsICAgIDQsIDI1LCAgICAgLy8gS2VuamkKKyAgICAgICAgMTI3OCwgICAgMiwgMjksICAgICAvLyBLb2FuCisgICAgICAgIDEyODgsICAgIDQsIDI4LCAgICAgLy8gU2hvbworICAgICAgICAxMjkzLCAgICA4LCA1NSwgICAgIC8vIEVpbmluCisgICAgICAgIDEyOTksICAgIDQsIDI1LCAgICAgLy8gU2hvYW4KKyAgICAgICAgMTMwMiwgICAxMSwgMjEsICAgICAvLyBLZW5nZW4KKyAgICAgICAgMTMwMywgICAgOCwgIDUsICAgICAvLyBLYWdlbgorICAgICAgICAxMzA2LCAgIDEyLCAxNCwgICAgIC8vIFRva3VqaQorICAgICAgICAxMzA4LCAgIDEwLCAgOSwgICAgIC8vIEVua2VpCisgICAgICAgIDEzMTEsICAgIDQsIDI4LCAgICAgLy8gT2NobworICAgICAgICAxMzEyLCAgICAzLCAyMCwgICAgIC8vIFNob3dhCisgICAgICAgIDEzMTcsICAgIDIsICAzLCAgICAgLy8gQnVucG8KKyAgICAgICAgMTMxOSwgICAgNCwgMjgsICAgICAvLyBHZW5vCisgICAgICAgIDEzMjEsICAgIDIsIDIzLCAgICAgLy8gR2Vua3lvCisgICAgICAgIDEzMjQsICAgMTIsICA5LCAgICAgLy8gU2hvY2h1CisgICAgICAgIDEzMjYsICAgIDQsIDI2LCAgICAgLy8gS2FyZWtpCisgICAgICAgIDEzMjksICAgIDgsIDI5LCAgICAgLy8gR2VudG9rdQorICAgICAgICAxMzMxLCAgICA4LCAgOSwgICAgIC8vIEdlbmtvCisgICAgICAgIDEzMzQsICAgIDEsIDI5LCAgICAgLy8gS2VtbXUKKyAgICAgICAgMTMzNiwgICAgMiwgMjksICAgICAvLyBFbmdlbgorICAgICAgICAxMzQwLCAgICA0LCAyOCwgICAgIC8vIEtva29rdQorICAgICAgICAxMzQ2LCAgIDEyLCAgOCwgICAgIC8vIFNob2hlaQorICAgICAgICAxMzcwLCAgICA3LCAyNCwgICAgIC8vIEtlbnRva3UKKyAgICAgICAgMTM3MiwgICAgNCwgIDEsICAgICAvLyBCdW5jaFx1MDE2OQorICAgICAgICAxMzc1LCAgICA1LCAyNywgICAgIC8vIFRlbmp1CisgICAgICAgIDEzODEsICAgIDIsIDEwLCAgICAgLy8gS293YQorICAgICAgICAxMzg0LCAgICA0LCAyOCwgICAgIC8vIEdlbmNoXHUwMTY5CisgICAgICAgIDEzODQsICAgIDIsIDI3LCAgICAgLy8gTWVpdG9rdQorICAgICAgICAxMzc5LCAgICAzLCAyMiwgICAgIC8vIEtvcnlha3UKKyAgICAgICAgMTM4NywgICAgOCwgMjMsICAgICAvLyBLYWtlaQorICAgICAgICAxMzg5LCAgICAyLCAgOSwgICAgIC8vIEtvbworICAgICAgICAxMzkwLCAgICAzLCAyNiwgICAgIC8vIE1laXRva3UKKyAgICAgICAgMTM5NCwgICAgNywgIDUsICAgICAvLyBPZWkKKyAgICAgICAgMTQyOCwgICAgNCwgMjcsICAgICAvLyBTaG9jaG8KKyAgICAgICAgMTQyOSwgICAgOSwgIDUsICAgICAvLyBFaWt5bworICAgICAgICAxNDQxLCAgICAyLCAxNywgICAgIC8vIEtha2l0c3UKKyAgICAgICAgMTQ0NCwgICAgMiwgIDUsICAgICAvLyBCdW4tYW4KKyAgICAgICAgMTQ0OSwgICAgNywgMjgsICAgICAvLyBIb3Rva3UKKyAgICAgICAgMTQ1MiwgICAgNywgMjUsICAgICAvLyBLeW90b2t1CisgICAgICAgIDE0NTUsICAgIDcsIDI1LCAgICAgLy8gS29zaG8KKyAgICAgICAgMTQ1NywgICAgOSwgMjgsICAgICAvLyBDaG9yb2t1CisgICAgICAgIDE0NjAsICAgMTIsIDIxLCAgICAgLy8gS2Fuc2hvCisgICAgICAgIDE0NjYsICAgIDIsIDI4LCAgICAgLy8gQnVuc2hvCisgICAgICAgIDE0NjcsICAgIDMsICAzLCAgICAgLy8gT25pbgorICAgICAgICAxNDY5LCAgICA0LCAyOCwgICAgIC8vIEJ1bm1laQorICAgICAgICAxNDg3LCAgICA3LCAyOSwgICAgIC8vIENob2t5bworICAgICAgICAxNDg5LCAgICA4LCAyMSwgICAgIC8vIEVudG9rdQorICAgICAgICAxNDkyLCAgICA3LCAxOSwgICAgIC8vIE1laW8KKyAgICAgICAgMTUwMSwgICAgMiwgMjksICAgICAvLyBCdW5raQorICAgICAgICAxNTA0LCAgICAyLCAzMCwgICAgIC8vIEVpc2hvCisgICAgICAgIDE1MjEsICAgIDgsIDIzLCAgICAgLy8gVGFpZWkKKyAgICAgICAgMTUyOCwgICAgOCwgMjAsICAgICAvLyBLeW9yb2t1CisgICAgICAgIDE1MzIsICAgIDcsIDI5LCAgICAgLy8gVGVubW9uCisgICAgICAgIDE1NTUsICAgMTAsIDIzLCAgICAgLy8gS29qaQorICAgICAgICAxNTU4LCAgICAyLCAyOCwgICAgIC8vIEVpcm9rdQorICAgICAgICAxNTcwLCAgICA0LCAyMywgICAgIC8vIEdlbmtpCisgICAgICAgIDE1NzMsICAgIDcsIDI4LCAgICAgLy8gVGVuc2hvCisgICAgICAgIDE1OTIsICAgMTIsICA4LCAgICAgLy8gQnVucm9rdQorICAgICAgICAxNTk2LCAgIDEwLCAyNywgICAgIC8vIEtlaWNobworICAgICAgICAxNjE1LCAgICA3LCAxMywgICAgIC8vIEdlbndhCisgICAgICAgIDE2MjQsICAgIDIsIDMwLCAgICAgLy8gS2FuLWVpCisgICAgICAgIDE2NDQsICAgMTIsIDE2LCAgICAgLy8gU2hvaG8KKyAgICAgICAgMTY0OCwgICAgMiwgMTUsICAgICAvLyBLZWlhbgorICAgICAgICAxNjUyLCAgICA5LCAxOCwgICAgIC8vIFNob28KKyAgICAgICAgMTY1NSwgICAgNCwgMTMsICAgICAvLyBNZWlyeWFrdQorICAgICAgICAxNjU4LCAgICA3LCAyMywgICAgIC8vIE1hbmppCisgICAgICAgIDE2NjEsICAgIDQsIDI1LCAgICAgLy8gS2FuYnVuCisgICAgICAgIDE2NzMsICAgIDksIDIxLCAgICAgLy8gRW5wbworICAgICAgICAxNjgxLCAgICA5LCAyOSwgICAgIC8vIFRlbndhCisgICAgICAgIDE2ODQsICAgIDIsIDIxLCAgICAgLy8gSm9reW8KKyAgICAgICAgMTY4OCwgICAgOSwgMzAsICAgICAvLyBHZW5yb2t1CisgICAgICAgIDE3MDQsICAgIDMsIDEzLCAgICAgLy8gSG9laQorICAgICAgICAxNzExLCAgICA0LCAyNSwgICAgIC8vIFNob3Rva3UKKyAgICAgICAgMTcxNiwgICAgNiwgMjIsICAgICAvLyBLeW9obworICAgICAgICAxNzM2LCAgICA0LCAyOCwgICAgIC8vIEdlbmJ1bgorICAgICAgICAxNzQxLCAgICAyLCAyNywgICAgIC8vIEthbnBvCisgICAgICAgIDE3NDQsICAgIDIsIDIxLCAgICAgLy8gRW5reW8KKyAgICAgICAgMTc0OCwgICAgNywgMTIsICAgICAvLyBLYW4tZW4KKyAgICAgICAgMTc1MSwgICAxMCwgMjcsICAgICAvLyBIb3J5YWt1CisgICAgICAgIDE3NjQsICAgIDYsICAyLCAgICAgLy8gTWVpd2EKKyAgICAgICAgMTc3MiwgICAxMSwgMTYsICAgICAvLyBBbi1laQorICAgICAgICAxNzgxLCAgICA0LCAgMiwgICAgIC8vIFRlbm1laQorICAgICAgICAxNzg5LCAgICAxLCAyNSwgICAgIC8vIEthbnNlaQorICAgICAgICAxODAxLCAgICAyLCAgNSwgICAgIC8vIEt5b3dhCisgICAgICAgIDE4MDQsICAgIDIsIDExLCAgICAgLy8gQnVua2EKKyAgICAgICAgMTgxOCwgICAgNCwgMjIsICAgICAvLyBCdW5zZWkKKyAgICAgICAgMTgzMCwgICAxMiwgMTAsICAgICAvLyBUZW5wbworICAgICAgICAxODQ0LCAgIDEyLCAgMiwgICAgIC8vIEtva2EKKyAgICAgICAgMTg0OCwgICAgMiwgMjgsICAgICAvLyBLYWVpCisgICAgICAgIDE4NTQsICAgMTEsIDI3LCAgICAgLy8gQW5zZWkKKyAgICAgICAgMTg2MCwgICAgMywgMTgsICAgICAvLyBNYW4tZW4KKyAgICAgICAgMTg2MSwgICAgMiwgMTksICAgICAvLyBCdW5reXUKKyAgICAgICAgMTg2NCwgICAgMiwgMjAsICAgICAvLyBHZW5qaQorICAgICAgICAxODY1LCAgICA0LCAgNywgICAgIC8vIEtlaW8KKyAgICAgICAgMTg2OCwgICAgOSwgIDgsICAgICAvLyBNZWlqaQorICAgICAgICAxOTEyLCAgICA3LCAzMCwgICAgIC8vIFRhaXNobworICAgICAgICAxOTI2LCAgIDEyLCAyNSwgICAgIC8vIFNob3dhCisgICAgICAgIDE5ODksICAgIDEsICA4LCAgICAgLy8gSGVpc2VpCisgICAgfTsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFB1YmxpYyBjb25zdGFudHMgZm9yIHNvbWUgb2YgdGhlIHJlY2VudCBlcmFzIHRoYXQgZm9sa3MgbWlnaHQgdXNlLi4uCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvLyBDb25zdGFudCBmb3IgdGhlIGN1cnJlbnQgZXJhLiAgVGhpcyBtdXN0IGJlIHJlZ3VsYXJseSB1cGRhdGVkLgorICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgaW50IENVUlJFTlRfRVJBID0gKEVSQVMubGVuZ3RoIC8gMykgLSAxOworICAgIAorICAgIC8qKiBDb25zdGFudCBmb3IgdGhlIGVyYSBzdGFydGluZyBvbiBTZXB0LiA4LCAxODY4IEFEICovCisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBpbnQgTUVJSkkgPSBDVVJSRU5UX0VSQSAtIDM7CisKKyAgICAvKiogQ29uc3RhbnQgZm9yIHRoZSBlcmEgc3RhcnRpbmcgb24gSnVseSAzMCwgMTkxMiBBRCAqLworICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgaW50IFRBSVNITyA9IENVUlJFTlRfRVJBIC0gMjsKKyAgICAKKyAgICAvKiogQ29uc3RhbnQgZm9yIHRoZSBlcmEgc3RhcnRpbmcgb24gRGVjLiAyNSwgMTkyNiBBRCAqLworICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgaW50IFNIT1dBID0gQ1VSUkVOVF9FUkEgLSAxOworCisgICAgLyoqIENvbnN0YW50IGZvciB0aGUgZXJhIHN0YXJ0aW5nIG9uIEphbi4gNywgMTk4OSBBRCAqLworICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgaW50IEhFSVNFSSA9IENVUlJFTlRfRVJBOworCisgICAgLyoqCisgICAgICogUGFydGlhbCBsaW1pdHMgdGFibGUgZm9yIGxpbWl0cyB0aGF0IGRpZmZlciBmcm9tIEdyZWdvcmlhbkNhbGVuZGFyJ3MuCisgICAgICogVGhlIFlFQVIgbWF4IGxpbWl0cyBhcmUgZmlsbGVkIGluIHRoZSBmaXJzdCB0aW1lIHRoZXkgYXJlIG5lZWRlZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgTElNSVRTW11bXSA9IHsKKyAgICAgICAgLy8gTWluaW11bSAgR3JlYXRlc3QgICAgICAgIExlYXN0ICAgICAgTWF4aW11bQorICAgICAgICAvLyAgICAgICAgICAgTWluaW11bSAgICAgIE1heGltdW0KKyAgICAgICAgeyAgICAgICAgMCwgICAgICAgIDAsIENVUlJFTlRfRVJBLCBDVVJSRU5UX0VSQSB9LCAvLyBFUkEKKyAgICAgICAgeyAgICAgICAgMSwgICAgICAgIDEsICAgICAgICAgICAwLCAgICAgICAgICAgMCB9LCAvLyBZRUFSCisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gWUVBUl9MSU1JVF9LTk9XTiA9IGZhbHNlOworCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgR3JlZ29yaWFuQ2FsZW5kYXIuICBXZSBzaG91bGQgcmVhbGx5IGhhbmRsZSBZRUFSX1dPWSBhbmQKKyAgICAgKiBFWFRFTkRFRF9ZRUFSIGhlcmUgdG9vIHRvIGltcGxlbWVudCB0aGUgMS4uNTAwMDAwMCByYW5nZSwgYnV0IGl0J3MKKyAgICAgKiBub3QgY3JpdGljYWwuCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBoYW5kbGVHZXRMaW1pdChpbnQgZmllbGQsIGludCBsaW1pdFR5cGUpIHsKKyAgICAgICAgc3dpdGNoIChmaWVsZCkgeworICAgICAgICBjYXNlIEVSQToKKyAgICAgICAgICAgIHJldHVybiBMSU1JVFNbZmllbGRdW2xpbWl0VHlwZV07CisgICAgICAgIGNhc2UgWUVBUjoKKyAgICAgICAgICAgIGlmICghWUVBUl9MSU1JVF9LTk9XTikgeworICAgICAgICAgICAgICAgIGludCBtaW4gPSBFUkFTWzNdIC0gRVJBU1swXTsKKyAgICAgICAgICAgICAgICBpbnQgbWF4ID0gbWluOworICAgICAgICAgICAgICAgIGZvciAoaW50IGk9NjsgaTxFUkFTLmxlbmd0aDsgaSs9MykgeworICAgICAgICAgICAgICAgICAgICBpbnQgZCA9IEVSQVNbaV0gLSBFUkFTW2ktM107CisgICAgICAgICAgICAgICAgICAgIGlmIChkIDwgbWluKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtaW4gPSBkOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGQgPiBtYXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1heCA9IGQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgTElNSVRTW2ZpZWxkXVtMRUFTVF9NQVhJTVVNXSA9IG1pbjsKKyAgICAgICAgICAgICAgICBMSU1JVFNbZmllbGRdW01BWElNVU1dID0gbWF4OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIExJTUlUU1tmaWVsZF1bbGltaXRUeXBlXTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBzdXBlci5oYW5kbGVHZXRMaW1pdChmaWVsZCwgbGltaXRUeXBlKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvUmFuZ2VEYXRlUnVsZS5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9SYW5nZURhdGVSdWxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzIyNmQ5ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvUmFuZ2VEYXRlUnVsZS5qYXZhCkBAIC0wLDAgKzEsMTQxIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL0F0dGljL1JhbmdlRGF0ZVJ1bGUuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwNDoxNzo1OSAkIAorICogJFJldmlzaW9uOiAxLjQgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS51dGlsOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKKworcHVibGljIGNsYXNzIFJhbmdlRGF0ZVJ1bGUgaW1wbGVtZW50cyBEYXRlUnVsZQoreworICAgIHB1YmxpYyBSYW5nZURhdGVSdWxlKCkKKyAgICB7CisgICAgfQorCisgICAgcHVibGljIFJhbmdlRGF0ZVJ1bGUoUmFuZ2VbXSByYW5nZXMpCisgICAgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgdGhpcy5yYW5nZXMuYWRkRWxlbWVudChyYW5nZXNbaV0pOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWRkKERhdGVSdWxlIHJ1bGUpCisgICAgeworICAgICAgICBhZGQobmV3IERhdGUoTG9uZy5NSU5fVkFMVUUpLCBydWxlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBhZGQoRGF0ZSBzdGFydCwgRGF0ZVJ1bGUgcnVsZSkKKyAgICB7CisgICAgICAgIC8vIFRPRE86IEluc2VydCBpbiB0aGUgcmlnaHQgcGxhY2UKKyAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJBZGQ6ICIgKyBzdGFydC50b1N0cmluZygpKTsKKyAgICAgICAgcmFuZ2VzLmFkZEVsZW1lbnQobmV3IFJhbmdlKHN0YXJ0LCBydWxlKSk7CisgICAgfQorCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgcHVibGljIERhdGUgZmlyc3RBZnRlcihEYXRlIHN0YXJ0KQorICAgIHsKKyAgICAgICAgLy8gRmluZCB0aGUgcmFuZ2UgdGhhdCBJIHNob3VsZCBsb29rIGF0CisgICAgICAgIGludCBpbmRleCA9IHN0YXJ0SW5kZXgoc3RhcnQpOworICAgICAgICBEYXRlIHJlc3VsdCA9IG51bGw7CisKKyAgICAgICAgUmFuZ2UgciA9IHJhbmdlQXQoaW5kZXgpOworICAgICAgICBSYW5nZSBlID0gcmFuZ2VBdChpbmRleCsxKTsKKworICAgICAgICBpZiAociAhPSBudWxsICYmIHIucnVsZSAhPSBudWxsKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gci5ydWxlLmZpcnN0QmV0d2VlbihzdGFydCwgZS5zdGFydCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHIucnVsZS5maXJzdEFmdGVyKHN0YXJ0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHB1YmxpYyBEYXRlIGZpcnN0QmV0d2VlbihEYXRlIHN0YXJ0LCBEYXRlIGVuZCkKKyAgICB7CisgICAgICAgIC8vIEZpbmQgdGhlIHJhbmdlIHRoYXQgSSBzaG91bGQgbG9vayBhdAorICAgICAgICBpbnQgaW5kZXggPSBzdGFydEluZGV4KHN0YXJ0KTsKKyAgICAgICAgRGF0ZSByZXN1bHQgPSBudWxsOworCisgICAgICAgIFJhbmdlIG5leHQgPSByYW5nZUF0KGluZGV4KTsKKworICAgICAgICB3aGlsZSAocmVzdWx0ID09IG51bGwgJiYgbmV4dCAhPSBudWxsICYmICEgbmV4dC5zdGFydC5hZnRlcihlbmQpKQorICAgICAgICB7CisgICAgICAgICAgICBSYW5nZSByID0gbmV4dDsKKyAgICAgICAgICAgIG5leHQgPSByYW5nZUF0KGluZGV4KzEpOworCisgICAgICAgICAgICBpZiAoci5ydWxlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBEYXRlIGUgPSAobmV4dCAhPSBudWxsICYmIG5leHQuc3RhcnQuYmVmb3JlKGVuZCkpID8gbmV4dC5zdGFydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBlbmQ7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gci5ydWxlLmZpcnN0QmV0d2VlbihzdGFydCwgZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc09uKERhdGUgZGF0ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDaGVjayB3aGV0aGVyIHRoaXMgZXZlbnQgb2NjdXJzIGF0IGxlYXN0IG9uY2UgYmV0d2VlbiB0aGUgdHdvCisgICAgICogZGF0ZXMgZ2l2ZW4uCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNCZXR3ZWVuKERhdGUgc3RhcnQsIERhdGUgZW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZpcnN0QmV0d2VlbihzdGFydCxlbmQpID09IG51bGw7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBmaW5kIHRoZSBpbmRleCBvZiB0aGUgbGFzdCByYW5nZSB3aG9zZSBzdGFydCBkYXRlIGlzIGJlZm9yZSAic3RhcnQiCisgICAgICogcmV0dXJucyBhbiBpbmRleCA+PSByYW5nZXMuc2l6ZSgpIGlmIHRoZXJlIGlzIG5vbmUKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBzdGFydEluZGV4KERhdGUgc3RhcnQpCisgICAgeworICAgICAgICBpbnQgbGFzdEluZGV4ID0gcmFuZ2VzLnNpemUoKTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJhbmdlcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgUmFuZ2UgciA9IChSYW5nZSkgcmFuZ2VzLmVsZW1lbnRBdChpKTsKKyAgICAgICAgICAgIGlmIChzdGFydC5iZWZvcmUoci5zdGFydCkpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGxhc3RJbmRleCA9IGk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGxhc3RJbmRleDsKKyAgICB9CisKKyAgICBwcml2YXRlIFJhbmdlIHJhbmdlQXQoaW50IGluZGV4KQorICAgIHsKKyAgICAgICByZXR1cm4gKGluZGV4IDwgcmFuZ2VzLnNpemUoKSkgPyAoUmFuZ2UpIHJhbmdlcy5lbGVtZW50QXQoaW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbDsKKyAgICB9CisKKyAgICBWZWN0b3IgcmFuZ2VzID0gbmV3IFZlY3RvcigyLDIpOworfTsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gUHJpdmF0ZXMKKy8vCisKK2NsYXNzIFJhbmdlIHsKKyAgICBwdWJsaWMgUmFuZ2UoRGF0ZSBzdGFydCwgRGF0ZVJ1bGUgcnVsZSkgeworICAgICAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7CisgICAgICAgIHRoaXMucnVsZSA9IHJ1bGU7CisgICAgfQorICAgIHB1YmxpYyBEYXRlICAgICBzdGFydDsKKyAgICBwdWJsaWMgRGF0ZVJ1bGUgcnVsZTsKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9TaW1wbGVEYXRlUnVsZS5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9TaW1wbGVEYXRlUnVsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmMxYzQ3ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL1NpbXBsZURhdGVSdWxlLmphdmEKQEAgLTAsMCArMSwyMjggQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvQXR0aWMvU2ltcGxlRGF0ZVJ1bGUuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wNS8xMiAyMzoyMDoxMSAkIAorICogJFJldmlzaW9uOiAxLjUgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS51dGlsOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgY29tLmlibS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGNvbS5pYm0udXRpbC5HcmVnb3JpYW5DYWxlbmRhcjsKK2ltcG9ydCBjb20uaWJtLnV0aWwuU2ltcGxlVGltZVpvbmU7CisKK3B1YmxpYyBjbGFzcyBTaW1wbGVEYXRlUnVsZSBpbXBsZW1lbnRzIERhdGVSdWxlCit7CisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGEgcnVsZSBmb3IgYSBmaXhlZCBkYXRlIHdpdGhpbiBhIG1vbnRoCisgICAgICoKKyAgICAgKiBAcGFyYW0gbW9udGggICAgICAgICBUaGUgbW9udGggaW4gd2hpY2ggdGhpcyBydWxlIG9jY3VycyAoMC1iYXNlZCkuCisgICAgICogQHBhcmFtIGRheU9mTW9udGggICAgVGhlIGRhdGUgaW4gdGhhdCBtb250aCAoMS1iYXNlZCkuCisgICAgICogPC91bD4KKyAgICAgKi8KKyAgICBwdWJsaWMgU2ltcGxlRGF0ZVJ1bGUoaW50IG1vbnRoLCBpbnQgZGF5T2ZNb250aCkKKyAgICB7CisgICAgICAgIHRoaXMubW9udGggICAgICA9IG1vbnRoOworICAgICAgICB0aGlzLmRheU9mTW9udGggPSBkYXlPZk1vbnRoOworICAgICAgICB0aGlzLmRheU9mV2VlayAgPSAwOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIHJ1bGUgZm9yIGEgd2Vla2RheSB3aXRoaW4gYSBtb250aCwgZS5nLiB0aGUgZmlyc3QgTW9uZGF5CisgICAgICoKKyAgICAgKiBAcGFyYW0gbW9udGggICAgICAgICBUaGUgbW9udGggaW4gd2hpY2ggdGhpcyBydWxlIG9jY3VycyAoMC1iYXNlZCkuCisgICAgICogQHBhcmFtIGRheU9mTW9udGggICAgQSBkYXRlIHdpdGhpbiB0aGF0IG1vbnRoICgxLWJhc2VkKS4KKyAgICAgKiBAcGFyYW0gZGF5T2ZXZWVrICAgICBUaGUgZGF5IG9mIHRoZSB3ZWVrIG9uIHdoaWNoIHRoaXMgcnVsZSBvY2N1cnMuCisgICAgICogQHBhcmFtIGFmdGVyICAgICAgICAgSWYgdHJ1ZSwgdGhpcyBydWxlIHNlbGVjdHMgdGhlIGZpcnN0IGRheU9mV2VlaworICAgICAqICAgICAgICAgICAgICAgICAgICAgIG9uIG9yIGFmdGVyIGRheU9mTW9udGguICBJZiBmYWxzZSwgdGhlIHJ1bGUgc2VsZWN0cworICAgICAqICAgICAgICAgICAgICAgICAgICAgIHRoZSBmaXJzdCBkYXlPZldlZWsgb24gb3IgYmVmb3JlIGRheU9mTW9udGguCisgICAgICogPC91bD4KKyAgICAgKi8KKyAgICBwdWJsaWMgU2ltcGxlRGF0ZVJ1bGUoaW50IG1vbnRoLCBpbnQgZGF5T2ZNb250aCwgaW50IGRheU9mV2VlaywgYm9vbGVhbiBhZnRlcikKKyAgICB7CisgICAgICAgIHRoaXMubW9udGggICAgICA9IG1vbnRoOworICAgICAgICB0aGlzLmRheU9mTW9udGggPSBkYXlPZk1vbnRoOworICAgICAgICB0aGlzLmRheU9mV2VlayAgPSBhZnRlciA/IGRheU9mV2VlayA6IC1kYXlPZldlZWs7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBmaXJzdCBvY2N1cnJhbmNlIG9mIHRoZSBldmVudCByZXByZXNlbnRlZCBieSB0aGlzIHJ1bGUKKyAgICAgKiB0aGF0IGlzIG9uIG9yIGFmdGVyIHRoZSBnaXZlbiBzdGFydCBkYXRlLgorICAgICAqCisgICAgICogQHBhcmFtIHN0YXJ0IE9ubHkgb2NjdXJyYW5jZXMgb24gb3IgYWZ0ZXIgdGhpcyBkYXRlIGFyZSByZXR1cm5lZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gICAgICBUaGUgZGF0ZSBvbiB3aGljaCB0aGlzIGV2ZW50IG9jY3Vycywgb3IgbnVsbCBpZiBpdAorICAgICAqICAgICAgICAgICAgICBkb2VzIG5vdCBvY2N1ciBvbiBvciBhZnRlciB0aGUgc3RhcnQgZGF0ZS4KKyAgICAgKgorICAgICAqIEBzZWUgI2ZpcnN0QmV0d2VlbgorICAgICAqLworICAgIHB1YmxpYyBEYXRlIGZpcnN0QWZ0ZXIoRGF0ZSBzdGFydCkKKyAgICB7CisgICAgICAgIGlmIChzdGFydERhdGUgIT0gbnVsbCAmJiBzdGFydC5iZWZvcmUoc3RhcnREYXRlKSkgeworICAgICAgICAgICAgc3RhcnQgPSBzdGFydERhdGU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRvRmlyc3RCZXR3ZWVuKHN0YXJ0LCBlbmREYXRlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGZpcnN0IG9jY3VycmFuY2Ugb2YgdGhlIGV2ZW50IHJlcHJlc2VudGVkIGJ5IHRoaXMgcnVsZQorICAgICAqIHRoYXQgaXMgb24gb3IgYWZ0ZXIgdGhlIGdpdmVuIHN0YXJ0IGRhdGUgYW5kIGJlZm9yZSB0aGUgZ2l2ZW4KKyAgICAgKiBlbmQgZGF0ZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzdGFydCBPbmx5IG9jY3VycmFuY2VzIG9uIG9yIGFmdGVyIHRoaXMgZGF0ZSBhcmUgcmV0dXJuZWQuCisgICAgICogQHBhcmFtIGVuZCAgIE9ubHkgb2NjdXJyYW5jZXMgYmVmb3JlIHRoaXMgZGF0ZSBhcmUgcmV0dXJuZWQuCisgICAgICoKKyAgICAgKiBAcmV0dXJuICAgICAgVGhlIGRhdGUgb24gd2hpY2ggdGhpcyBldmVudCBvY2N1cnMsIG9yIG51bGwgaWYgaXQKKyAgICAgKiAgICAgICAgICAgICAgZG9lcyBub3Qgb2NjdXIgYmV0d2VlbiB0aGUgc3RhcnQgYW5kIGVuZCBkYXRlcy4KKyAgICAgKgorICAgICAqIEBzZWUgI2ZpcnN0QWZ0ZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgRGF0ZSBmaXJzdEJldHdlZW4oRGF0ZSBzdGFydCwgRGF0ZSBlbmQpCisgICAgeworICAgICAgICAvLyBQaW4gdG8gdGhlIG1pbi9tYXggZGF0ZXMgZm9yIHRoaXMgcnVsZQorICAgICAgICBpZiAoc3RhcnREYXRlICE9IG51bGwgJiYgc3RhcnQuYmVmb3JlKHN0YXJ0RGF0ZSkpIHsKKyAgICAgICAgICAgIHN0YXJ0ID0gc3RhcnREYXRlOworICAgICAgICB9CisgICAgICAgIGlmIChlbmREYXRlICE9IG51bGwgJiYgZW5kLmFmdGVyKGVuZERhdGUpKSB7CisgICAgICAgICAgICBlbmQgPSBlbmREYXRlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBkb0ZpcnN0QmV0d2VlbihzdGFydCwgZW5kKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDaGVja3Mgd2hldGhlciB0aGlzIGV2ZW50IG9jY3VycyBvbiB0aGUgZ2l2ZW4gZGF0ZS4gIFRoaXMgZG9lcworICAgICAqIDxlbT5ub3Q8L2VtPiB0YWtlIHRpbWUgb2YgZGF5IGludG8gYWNjb3VudDsgaW5zdGVhZCBpdCBjaGVja3MKKyAgICAgKiB3aGV0aGVyIHRoaXMgZXZlbnQgYW5kIHRoZSBnaXZlbiBkYXRlIGFyZSBvbiB0aGUgc2FtZSBkYXkuCisgICAgICogVGhpcyBpcyB1c2VmdWwgZm9yIGFwcGxpY2F0aW9ucyBzdWNoIGFzIGRldGVybWluaW5nIHdoZXRoZXIgYSBnaXZlbgorICAgICAqIGRheSBpcyBhIGhvbGlkYXkuCisgICAgICoKKyAgICAgKiBAcGFyYW0gZGF0ZSAgVGhlIGRhdGUgdG8gY2hlY2suCisgICAgICogQHJldHVybiAgICAgIHRydWUgaWYgdGhpcyBldmVudCBvY2N1cnMgb24gdGhlIGdpdmVuIGRhdGUuCisgICAgICoKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc09uKERhdGUgZGF0ZSkKKyAgICB7CisgICAgICAgIGlmIChzdGFydERhdGUgIT0gbnVsbCAmJiBkYXRlLmJlZm9yZShzdGFydERhdGUpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVuZERhdGUgIT0gbnVsbCAmJiBkYXRlLmFmdGVyKGVuZERhdGUpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBDYWxlbmRhciBjID0gY2FsZW5kYXI7CisKKyAgICAgICAgc3luY2hyb25pemVkKGMpIHsKKyAgICAgICAgICAgIGMuc2V0VGltZShkYXRlKTsKKworICAgICAgICAgICAgaW50IGRheU9mWWVhciA9IGMuZ2V0KENhbGVuZGFyLkRBWV9PRl9ZRUFSKTsKKworICAgICAgICAgICAgYy5zZXRUaW1lKGNvbXB1dGVJblllYXIoYy5nZXQoQ2FsZW5kYXIuWUVBUiksIGMpKTsKKworICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIiAgaXNPbjogZGF5T2ZZZWFyID0gIiArIGRheU9mWWVhcik7CisgICAgICAgICAgICAvL1N5c3RlbS5vdXQucHJpbnRsbigiICAgICAgICBob2xpZGF5ICAgPSAiICsgYy5nZXQoQ2FsZW5kYXIuREFZX09GX1lFQVIpKTsKKworICAgICAgICAgICAgcmV0dXJuIGMuZ2V0KENhbGVuZGFyLkRBWV9PRl9ZRUFSKSA9PSBkYXlPZlllYXI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDaGVjayB3aGV0aGVyIHRoaXMgZXZlbnQgb2NjdXJzIGF0IGxlYXN0IG9uY2UgYmV0d2VlbiB0aGUgdHdvCisgICAgICogZGF0ZXMgZ2l2ZW4uCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNCZXR3ZWVuKERhdGUgc3RhcnQsIERhdGUgZW5kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGZpcnN0QmV0d2VlbihzdGFydCwgZW5kKSAhPSBudWxsOyAvLyBUT0RPOiBvcHRpbWl6ZT8KKyAgICB9CisKKyAgICBwcml2YXRlIERhdGUgZG9GaXJzdEJldHdlZW4oRGF0ZSBzdGFydCwgRGF0ZSBlbmQpCisgICAgeworICAgICAgICBDYWxlbmRhciBjID0gY2FsZW5kYXI7CisKKyAgICAgICAgc3luY2hyb25pemVkKGMpIHsKKyAgICAgICAgICAgIGMuc2V0VGltZShzdGFydCk7CisKKyAgICAgICAgICAgIGludCB5ZWFyID0gYy5nZXQoQ2FsZW5kYXIuWUVBUik7CisgICAgICAgICAgICBpbnQgbW9udGggPSBjLmdldChDYWxlbmRhci5NT05USCk7CisKKyAgICAgICAgICAgIC8vIElmIHRoZSBydWxlIGlzIGVhcmxpZXIgaW4gdGhlIHllYXIgdGhhbiB0aGUgc3RhcnQgZGF0ZQorICAgICAgICAgICAgLy8gd2UgaGF2ZSB0byBnbyB0byB0aGUgbmV4dCB5ZWFyLgorICAgICAgICAgICAgaWYgKG1vbnRoID4gdGhpcy5tb250aCkgeworICAgICAgICAgICAgICAgIHllYXIrKzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gRmlndXJlIG91dCB3aGVuIHRoZSBydWxlIGxhbmRzIGluIHRoZSBnaXZlbiB5ZWFyCisgICAgICAgICAgICBEYXRlIHJlc3VsdCA9IGNvbXB1dGVJblllYXIoeWVhciwgYyk7CisKKyAgICAgICAgICAgIC8vIElmIHRoZSBydWxlIGlzIGluIHRoZSBzYW1lIG1vbnRoIGFzIHRoZSBzdGFydCBkYXRlLCBpdCdzIHBvc3NpYmxlCisgICAgICAgICAgICAvLyB0byBnZXQgYSByZXN1bHQgdGhhdCdzIGJlZm9yZSB0aGUgc3RhcnQuICBJZiBzbywgZ28gdG8gbmV4dCB5ZWFyLgorICAgICAgICAgICAgaWYgKG1vbnRoID09IHRoaXMubW9udGggJiYgcmVzdWx0LmJlZm9yZShzdGFydCkpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjb21wdXRlSW5ZZWFyKHllYXIrMSwgYyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChlbmQgIT0gbnVsbCAmJiByZXN1bHQuYWZ0ZXIoZW5kKSkgeworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorICAgIH0KKyAgICBwcml2YXRlIERhdGUgY29tcHV0ZUluWWVhcihpbnQgeWVhciwgQ2FsZW5kYXIgYykKKyAgICB7CisgICAgICAgIGlmIChjID09IG51bGwpIGMgPSBjYWxlbmRhcjsKKworICAgICAgICBzeW5jaHJvbml6ZWQoYykgeworICAgICAgICAgICAgYy5jbGVhcigpOworICAgICAgICAgICAgYy5zZXQoQ2FsZW5kYXIuRVJBLCBjLmdldE1heGltdW0oQ2FsZW5kYXIuRVJBKSk7CisgICAgICAgICAgICBjLnNldChDYWxlbmRhci5ZRUFSLCB5ZWFyKTsKKyAgICAgICAgICAgIGMuc2V0KENhbGVuZGFyLk1PTlRILCBtb250aCk7CisgICAgICAgICAgICBjLnNldChDYWxlbmRhci5EQVRFLCBkYXlPZk1vbnRoKTsKKworICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgY29tcHV0ZUluWWVhcjogc3RhcnQgYXQgIiArIGMuZ2V0VGltZSgpLnRvU3RyaW5nKCkpOworCisgICAgICAgICAgICBpZiAoZGF5T2ZXZWVrICE9IDApIHsKKyAgICAgICAgICAgICAgICBjLnNldFRpbWUoYy5nZXRUaW1lKCkpOyAgICAgICAgLy8gSkRLIDEuMS4yIHdvcmthcm91bmQKKyAgICAgICAgICAgICAgICBpbnQgd2Vla2RheSA9IGMuZ2V0KENhbGVuZGFyLkRBWV9PRl9XRUVLKTsKKworICAgICAgICAgICAgICAgIC8vU3lzdGVtLm91dC5wcmludGxuKCIgICAgICAgICAgICAgICAgICAgIHdlZWtkYXkgPSAiICsgd2Vla2RheSk7CisgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgICAgICAgICAgICAgICAgZGF5T2ZZZWFyID0gIiArIGMuZ2V0KENhbGVuZGFyLkRBWV9PRl9ZRUFSKSk7CisKKyAgICAgICAgICAgICAgICBpbnQgZGVsdGEgPSAwOworICAgICAgICAgICAgICAgIGlmIChkYXlPZldlZWsgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIHdhbnQgdGhlIGZpcnN0IG9jY3VycmFuY2Ugb2YgdGhlIGdpdmVuIGRheSBvZiB0aGUgd2VlaworICAgICAgICAgICAgICAgICAgICAvLyBvbiBvciBhZnRlciB0aGUgc3BlY2lmaWVkIGRhdGUgaW4gdGhlIG1vbnRoLgorICAgICAgICAgICAgICAgICAgICBkZWx0YSA9IChkYXlPZldlZWsgLSB3ZWVrZGF5ICsgNykgJSA3OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChkYXlPZldlZWsgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIHdhbnQgdGhlIGZpcnN0IG9jY3VycmFuY2Ugb2YgdGhlICgtZGF5T2ZXZWVrKQorICAgICAgICAgICAgICAgICAgICAvLyBvbiBvciBiZWZvcmUgdGhlIHNwZWNpZmllZCBkYXRlIGluIHRoZSBtb250aC4KKyAgICAgICAgICAgICAgICAgICAgZGVsdGEgPSAtKChkYXlPZldlZWsgKyB3ZWVrZGF5ICsgNykgJSA3KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy9TeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgICAgICAgICAgICAgICAgYWRkaW5nICIgKyBkZWx0YSArICIgZGF5cyIpOworICAgICAgICAgICAgICAgIGMuYWRkKENhbGVuZGFyLkRBVEUsIGRlbHRhKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGMuZ2V0VGltZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0Q2FsZW5kYXIoQ2FsZW5kYXIgYykgeworICAgICAgICBjYWxlbmRhciA9IGM7CisgICAgfQorCisgICAgc3RhdGljIEdyZWdvcmlhbkNhbGVuZGFyIGdDYWxlbmRhciA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcihuZXcgU2ltcGxlVGltZVpvbmUoMCwgIlVUQyIpKTsKKworICAgIENhbGVuZGFyIGNhbGVuZGFyID0gZ0NhbGVuZGFyOworCisgICAgcHJpdmF0ZSBpbnQgICAgIG1vbnRoOworICAgIHByaXZhdGUgaW50ICAgICBkYXlPZk1vbnRoOworICAgIHByaXZhdGUgaW50ICAgICBkYXlPZldlZWs7CisKKyAgICBwcml2YXRlIERhdGUgICAgc3RhcnREYXRlID0gbnVsbDsKKyAgICBwcml2YXRlIERhdGUgICAgZW5kRGF0ZSA9IG51bGw7Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9TaW1wbGVIb2xpZGF5LmphdmEgYi9zcmMvY29tL2libS91dGlsL1NpbXBsZUhvbGlkYXkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iZmMwZjIyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9TaW1wbGVIb2xpZGF5LmphdmEKQEAgLTAsMCArMSwyMzkgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvQXR0aWMvU2ltcGxlSG9saWRheS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzIxIDAyOjE5OjMzICQgCisgKiAkUmV2aXNpb246IDEuNCAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLnV0aWw7CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBjb20uaWJtLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgY29tLmlibS51dGlsLkdyZWdvcmlhbkNhbGVuZGFyOworCisvKioKKyAqIEEgaG9saWRheSB3aG9zZSBkYXRlIGNhbiBiZSByZXByZXNlbnRlZCBieSBhIFNpbXBsZURhdGVSdWxlIG9iamVjdAorICoKKyAqIEBzZWUgU2ltcGxlRGF0ZVJ1bGUKKyAqLworcHVibGljIGNsYXNzIFNpbXBsZUhvbGlkYXkgZXh0ZW5kcyBIb2xpZGF5IHsKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYW4gb2JqZWN0IHJlcHJlc2VudGluZyBhIGhvbGlkYXkKKyAgICAgKgorICAgICAqIEBwYXJhbSBtb250aCAgICAgICAgIFRoZSBtb250aCBpbiB3aGljaCB0aGlzIGhvbGlkYXkgb2NjdXJzICgwLWJhc2VkKQorICAgICAqIEBwYXJhbSBkYXlPZk1vbnRoICAgIFRoZSBkYXRlIHdpdGhpbiB0aGUgbW9udGggKDEtYmFzZWQpLgorICAgICAqCisgICAgICogQHBhcmFtIG5hbWUgIFRoZSBuYW1lIG9mIHRoaXMgaG9saWRheS4gIFRoaXMgc3RyaW5nIGlzIHVzZWQgYXMgYSBrZXkKKyAgICAgKiAgICAgICAgICAgICAgdG8gbG9vayB1cCB0aGUgaG9saWRheSdzIG5hbWUgYSByZXNvdXJjZSBidW5kbGUuCisgICAgICogICAgICAgICAgICAgIElmIHRoZSBuYW1lIGlzIG5vdCBmb3VuZCBpbiB0aGUgcmVzb3VyY2UgYnVuZGxlLAorICAgICAqICAgICAgICAgICAgICBnZXREaXNwbGF5TmFtZSB3aWxsIHJldHVybiB0aGlzIHN0cmluZyBpbnN0ZWFkLgorICAgICAqCisgICAgICogQHNlZSBTaW1wbGVEYXRlUnVsZQorICAgICAqIEBzZWUgSG9saWRheSNnZXREaXNwbGF5TmFtZShqYXZhLnV0aWwuTG9jYWxlKQorICAgICAqCisgICAgICovCisgICAgcHVibGljIFNpbXBsZUhvbGlkYXkoaW50IG1vbnRoLCBpbnQgZGF5T2ZNb250aCwgU3RyaW5nIG5hbWUpCisgICAgeworICAgICAgICBzdXBlcihuYW1lLCBuZXcgU2ltcGxlRGF0ZVJ1bGUobW9udGgsIGRheU9mTW9udGgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYW4gb2JqZWN0IHJlcHJlc2VudGluZyBhIGhvbGlkYXkKKyAgICAgKgorICAgICAqIEBwYXJhbSBtb250aCAgICAgICAgIFRoZSBtb250aCBpbiB3aGljaCB0aGlzIGhvbGlkYXkgb2NjdXJzICgwLWJhc2VkKQorICAgICAqIEBwYXJhbSBkYXlPZk1vbnRoICAgIFRoZSBkYXRlIHdpdGhpbiB0aGUgbW9udGggKDEtYmFzZWQpLgorICAgICAqCisgICAgICogQHBhcmFtIG5hbWUgIFRoZSBuYW1lIG9mIHRoaXMgaG9saWRheS4gIFRoaXMgc3RyaW5nIGlzIHVzZWQgYXMgYSBrZXkKKyAgICAgKiAgICAgICAgICAgICAgdG8gbG9vayB1cCB0aGUgaG9saWRheSdzIG5hbWUgYSByZXNvdXJjZSBidW5kbGUuCisgICAgICogICAgICAgICAgICAgIElmIHRoZSBuYW1lIGlzIG5vdCBmb3VuZCBpbiB0aGUgcmVzb3VyY2UgYnVuZGxlLAorICAgICAqICAgICAgICAgICAgICBnZXREaXNwbGF5TmFtZSB3aWxsIHJldHVybiB0aGlzIHN0cmluZyBpbnN0ZWFkLgorICAgICAqCisgICAgICogQHNlZSBTaW1wbGVEYXRlUnVsZQorICAgICAqIEBzZWUgSG9saWRheSNnZXREaXNwbGF5TmFtZShqYXZhLnV0aWwuTG9jYWxlKQorICAgICAqCisgICAgICovCisgICAgcHVibGljIFNpbXBsZUhvbGlkYXkoaW50IG1vbnRoLCBpbnQgZGF5T2ZNb250aCwgU3RyaW5nIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0WWVhcikKKyAgICB7CisgICAgICAgIHN1cGVyKG5hbWUsIG51bGwpOworCisgICAgICAgIHNldFJhbmdlKHN0YXJ0WWVhciwgMCwgbmV3IFNpbXBsZURhdGVSdWxlKG1vbnRoLCBkYXlPZk1vbnRoKSApOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhbiBvYmplY3QgcmVwcmVzZW50aW5nIGEgaG9saWRheQorICAgICAqCisgICAgICogQHBhcmFtIG1vbnRoICAgICAgICAgVGhlIG1vbnRoIGluIHdoaWNoIHRoaXMgaG9saWRheSBvY2N1cnMgKDAtYmFzZWQpCisgICAgICogQHBhcmFtIGRheU9mTW9udGggICAgVGhlIGRhdGUgd2l0aGluIHRoZSBtb250aCAoMS1iYXNlZCkuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbmFtZSAgVGhlIG5hbWUgb2YgdGhpcyBob2xpZGF5LiAgVGhpcyBzdHJpbmcgaXMgdXNlZCBhcyBhIGtleQorICAgICAqICAgICAgICAgICAgICB0byBsb29rIHVwIHRoZSBob2xpZGF5J3MgbmFtZSBhIHJlc291cmNlIGJ1bmRsZS4KKyAgICAgKiAgICAgICAgICAgICAgSWYgdGhlIG5hbWUgaXMgbm90IGZvdW5kIGluIHRoZSByZXNvdXJjZSBidW5kbGUsCisgICAgICogICAgICAgICAgICAgIGdldERpc3BsYXlOYW1lIHdpbGwgcmV0dXJuIHRoaXMgc3RyaW5nIGluc3RlYWQuCisgICAgICoKKyAgICAgKiBAc2VlIFNpbXBsZURhdGVSdWxlCisgICAgICogQHNlZSBIb2xpZGF5I2dldERpc3BsYXlOYW1lKGphdmEudXRpbC5Mb2NhbGUpCisgICAgICoKKyAgICAgKi8KKyAgICBwdWJsaWMgU2ltcGxlSG9saWRheShpbnQgbW9udGgsIGludCBkYXlPZk1vbnRoLCBTdHJpbmcgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRZZWFyLCBpbnQgZW5kWWVhcikKKyAgICB7CisgICAgICAgIHN1cGVyKG5hbWUsIG51bGwpOworCisgICAgICAgIHNldFJhbmdlKHN0YXJ0WWVhciwgZW5kWWVhciwgbmV3IFNpbXBsZURhdGVSdWxlKG1vbnRoLCBkYXlPZk1vbnRoKSApOworICAgIH0KKworICAgIC8qKiAvLyBUT0RPOiByZW1vdmUKKyAgICAgKiBDb25zdHJ1Y3QgYW4gb2JqZWN0IHJlcHJlc2VudGluZyBhIGhvbGlkYXkKKyAgICAgKgorICAgICAqIEBwYXJhbSBtb250aCBUaGUgbW9udGggaW4gd2hpY2ggdGhpcyBob2xpZGF5IG9jY3VycyAoMC1iYXNlZCkKKyAgICAgKgorICAgICAqIEBwYXJhbSBkYXlPZk1vbnRoIEEgZGF0ZSB3aXRoaW4gdGhlIG1vbnRoICgxLWJhc2VkKS4gIFRoZQorICAgICAqICAgICAgaW50ZXJwcmV0YXRpb24gb2YgdGhpcyBwYXJhbWV0ZXIgZGVwZW5kcyBvbiB0aGUgdmFsdWUgb2YKKyAgICAgKiAgICAgIDxjb2RlPmRheU9mV2VlazwvY29kZT4uCisgICAgICoKKyAgICAgKiBAcGFyYW0gZGF5T2ZXZWVrIFRoZSBkYXkgb2YgdGhlIHdlZWsgb24gd2hpY2ggdGhpcyBob2xpZGF5IG9jY3Vycy4KKyAgICAgKiAgICAgIFRoZSBmb2xsb3dpbmcgdmFsdWVzIGFyZSBsZWdhbDogPHVsPgorICAgICAqICAgICAgPGxpPmRheU9mV2VlayA9PSAwIC0gdXNlIGRheU9mTW9udGggb25seQorICAgICAqICAgICAgPGxpPmRheU9mV2VlayA8IDAgIC0gdXNlIGxhc3QgLWRheU9mV2VlayBiZWZvcmUgb3Igb24gZGF5T2ZNb250aAorICAgICAqICAgICAgPGxpPmRheU9mV2VlayA+IDAgIC0gdXNlIGZpcnN0IGRheU9mV2VlayBhZnRlciBvciBvbiBkYXlPZk1vbnRoCisgICAgICogICAgICA8L3VsPgorICAgICAqCisgICAgICogQHBhcmFtIG5hbWUgIFRoZSBuYW1lIG9mIHRoaXMgaG9saWRheS4gIFRoaXMgc3RyaW5nIGlzIHVzZWQgYXMgYSBrZXkKKyAgICAgKiAgICAgICAgICAgICAgdG8gbG9vayB1cCB0aGUgaG9saWRheSdzIG5hbWUgYSByZXNvdXJjZSBidW5kbGUuCisgICAgICogICAgICAgICAgICAgIElmIHRoZSBuYW1lIGlzIG5vdCBmb3VuZCBpbiB0aGUgcmVzb3VyY2UgYnVuZGxlLAorICAgICAqICAgICAgICAgICAgICBnZXREaXNwbGF5TmFtZSB3aWxsIHJldHVybiB0aGlzIHN0cmluZyBpbnN0ZWFkLgorICAgICAqCisgICAgICogQHNlZSBTaW1wbGVEYXRlUnVsZQorICAgICAqIEBzZWUgSG9saWRheSNnZXREaXNwbGF5TmFtZShqYXZhLnV0aWwuTG9jYWxlKQorICAgICAqCisgICAgICovCisgICAgcHVibGljIFNpbXBsZUhvbGlkYXkoaW50IG1vbnRoLCBpbnQgZGF5T2ZNb250aCwgaW50IGRheU9mV2VlaywgU3RyaW5nIG5hbWUpCisgICAgeworICAgICAgICBzdXBlcihuYW1lLCBuZXcgU2ltcGxlRGF0ZVJ1bGUobW9udGgsIGRheU9mTW9udGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5T2ZXZWVrID4gMCA/IGRheU9mV2VlayA6IC0gZGF5T2ZXZWVrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheU9mV2VlayA+IDApICk7CisgICAgfQorCisKKyAgICBwdWJsaWMgU2ltcGxlSG9saWRheShpbnQgbW9udGgsIGludCBkYXlPZk1vbnRoLCBpbnQgZGF5T2ZXZWVrLCBTdHJpbmcgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydFllYXIpCisgICAgeworICAgICAgICBzdXBlcihuYW1lLCBudWxsKTsKKworICAgICAgICBzZXRSYW5nZShzdGFydFllYXIsIDAsIG5ldyBTaW1wbGVEYXRlUnVsZShtb250aCwgZGF5T2ZNb250aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5T2ZXZWVrID4gMCA/IGRheU9mV2VlayA6IC0gZGF5T2ZXZWVrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlPZldlZWsgPiAwKSApOworICAgIH0KKworCisgICAgcHVibGljIFNpbXBsZUhvbGlkYXkoaW50IG1vbnRoLCBpbnQgZGF5T2ZNb250aCwgaW50IGRheU9mV2VlaywgU3RyaW5nIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRZZWFyLCBpbnQgZW5kWWVhcikKKyAgICB7CisgICAgICAgIHN1cGVyKG5hbWUsIG51bGwpOworCisgICAgICAgIHNldFJhbmdlKHN0YXJ0WWVhciwgZW5kWWVhciwgbmV3IFNpbXBsZURhdGVSdWxlKG1vbnRoLCBkYXlPZk1vbnRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXlPZldlZWsgPiAwID8gZGF5T2ZXZWVrIDogLSBkYXlPZldlZWssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheU9mV2VlayA+IDApICk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNldFJhbmdlKGludCBzdGFydFllYXIsIGludCBlbmRZZWFyLCBEYXRlUnVsZSBydWxlKQorICAgIHsKKyAgICAgICAgUmFuZ2VEYXRlUnVsZSByYW5nZVJ1bGUgPSBuZXcgUmFuZ2VEYXRlUnVsZSgpOworCisgICAgICAgIGlmIChzdGFydFllYXIgIT0gMCkgeworICAgICAgICAgICAgQ2FsZW5kYXIgc3RhcnQgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoc3RhcnRZZWFyLCBDYWxlbmRhci5KQU5VQVJZLCAxKTsKKyAgICAgICAgICAgIHJhbmdlUnVsZS5hZGQoc3RhcnQuZ2V0VGltZSgpLCBydWxlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJhbmdlUnVsZS5hZGQocnVsZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGVuZFllYXIgIT0gMCkgeworICAgICAgICAgICAgRGF0ZSBlbmQgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoZW5kWWVhciwgQ2FsZW5kYXIuREVDRU1CRVIsIDMxKS5nZXRUaW1lKCk7CisgICAgICAgICAgICByYW5nZVJ1bGUuYWRkKGVuZCwgbnVsbCk7CisgICAgICAgIH0KKworICAgICAgICBzZXRSdWxlKHJhbmdlUnVsZSk7CisgICAgfQorCisgICAgLyogQ29uc3RhbnRzIGZvciBob2xpZGF5cyB0aGF0IGFyZSBjb21tb24gdGhyb3VnaG91dCB0aGUgV2VzdGVybgorICAgICAqIGFuZCBDaHJpc3RpYW4gd29ybGRzLi4uLiAqLworCisgICAgLyoqCisgICAgICogTmV3IFllYXIncyBEYXkgLSBKYW51YXJ5IDFzdAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU2ltcGxlSG9saWRheSBORVdfWUVBUlNfREFZID0KKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuSkFOVUFSWSwgICAgMSwgICJOZXcgWWVhcidzIERheSIpOworCisgICAgLyoqCisgICAgICogRXBpcGhhbnksIEphbnVhcnkgNnRoCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTaW1wbGVIb2xpZGF5IEVQSVBIQU5ZID0KKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuSkFOVUFSWSwgICAgNiwgICJFcGlwaGFueSIpOworCisgICAgLyoqCisgICAgICogTWF5IERheSwgTWF5IDFzdAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU2ltcGxlSG9saWRheSBNQVlfREFZID0KKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuTUFZLCAgICAgICAgMSwgICJNYXkgRGF5Iik7CisKKyAgICAvKioKKyAgICAgKiBBc3N1bXB0aW9uLCBBdWd1c3QgMTV0aAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU2ltcGxlSG9saWRheSBBU1NVTVBUSU9OID0KKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuQVVHVVNULCAgICAxNSwgICJBc3N1bXB0aW9uIik7CisKKyAgICAvKioKKyAgICAgKiBBbGwgU2FpbnRzJyBEYXksIE5vdmVtYmVyIDFzdAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU2ltcGxlSG9saWRheSBBTExfU0FJTlRTX0RBWSA9CisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk5PVkVNQkVSLCAgIDEsICAiQWxsIFNhaW50cycgRGF5Iik7CisKKyAgICAvKioKKyAgICAgKiBBbGwgU291bHMnIERheSwgTm92ZW1iZXIgMXN0CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTaW1wbGVIb2xpZGF5IEFMTF9TT1VMU19EQVkgPQorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5OT1ZFTUJFUiwgICAyLCAgIkFsbCBTb3VscycgRGF5Iik7CisKKyAgICAvKioKKyAgICAgKiBJbW1hY3VsYXRlIENvbmNlcHRpb24sIERlY2VtYmVyIDh0aAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU2ltcGxlSG9saWRheSBJTU1BQ1VMQVRFX0NPTkNFUFRJT04gPQorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5ERUNFTUJFUiwgICA4LCAgIkltbWFjdWxhdGUgQ29uY2VwdGlvbiIpOworCisgICAgLyoqCisgICAgICogQ2hyaXN0bWFzIEV2ZSwgRGVjZW1iZXIgMjR0aAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU2ltcGxlSG9saWRheSBDSFJJU1RNQVNfRVZFID0KKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuREVDRU1CRVIsICAyNCwgICJDaHJpc3RtYXMgRXZlIik7CisKKyAgICAvKioKKyAgICAgKiBDaHJpc3RtYXMsIERlY2VtYmVyIDI1dGgKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFNpbXBsZUhvbGlkYXkgQ0hSSVNUTUFTID0KKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuREVDRU1CRVIsICAyNSwgICJDaHJpc3RtYXMiKTsKKworICAgIC8qKgorICAgICAqIEJveGluZyBEYXksIERlY2VtYmVyIDI2dGgKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFNpbXBsZUhvbGlkYXkgQk9YSU5HX0RBWSA9CisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLkRFQ0VNQkVSLCAgMjYsICAiQm94aW5nIERheSIpOworCisgICAgLyoqCisgICAgICogU2FpbnQgU3RlcGhlbidzIERheSwgRGVjZW1iZXIgMjZ0aAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU2ltcGxlSG9saWRheSBTVF9TVEVQSEVOU19EQVkgPQorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5ERUNFTUJFUiwgIDI2LCAgIlN0LiBTdGVwaGVuJ3MgRGF5Iik7CisKKyAgICAvKioKKyAgICAgKiBOZXcgWWVhcidzIEV2ZSwgRGVjZW1iZXIgMzFzdAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU2ltcGxlSG9saWRheSBORVdfWUVBUlNfRVZFID0KKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuREVDRU1CRVIsICAzMSwgICJOZXcgWWVhcidzIEV2ZSIpOworCit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL1NpbXBsZVRpbWVab25lLmphdmEgYi9zcmMvY29tL2libS91dGlsL1NpbXBsZVRpbWVab25lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjljNWM3MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvU2ltcGxlVGltZVpvbmUuamF2YQpAQCAtMCwwICsxLDE0ODkgQEAKKy8qCisgKiBAKCMpU2ltcGxlVGltZVpvbmUuamF2YQkxLjM4IDAwLzAxLzE5CisgKgorICogQ29weXJpZ2h0IDE5OTYtMjAwMCBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiAKKyAqIFRoaXMgc29mdHdhcmUgaXMgdGhlIHByb3ByaWV0YXJ5IGluZm9ybWF0aW9uIG9mIFN1biBNaWNyb3N5c3RlbXMsIEluYy4gIAorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcy4KKyAqIAorICovCisKKy8qCisgKiAoQykgQ29weXJpZ2h0IFRhbGlnZW50LCBJbmMuIDE5OTYgLSBBbGwgUmlnaHRzIFJlc2VydmVkCisgKiAoQykgQ29weXJpZ2h0IElCTSBDb3JwLiAxOTk2IC0gQWxsIFJpZ2h0cyBSZXNlcnZlZAorICoKKyAqICAgVGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhpcyBzb3VyY2UgY29kZSBhbmQgZG9jdW1lbnRhdGlvbiBpcyBjb3B5cmlnaHRlZAorICogYW5kIG93bmVkIGJ5IFRhbGlnZW50LCBJbmMuLCBhIHdob2xseS1vd25lZCBzdWJzaWRpYXJ5IG9mIElCTS4gVGhlc2UKKyAqIG1hdGVyaWFscyBhcmUgcHJvdmlkZWQgdW5kZXIgdGVybXMgb2YgYSBMaWNlbnNlIEFncmVlbWVudCBiZXR3ZWVuIFRhbGlnZW50CisgKiBhbmQgU3VuLiBUaGlzIHRlY2hub2xvZ3kgaXMgcHJvdGVjdGVkIGJ5IG11bHRpcGxlIFVTIGFuZCBJbnRlcm5hdGlvbmFsCisgKiBwYXRlbnRzLiBUaGlzIG5vdGljZSBhbmQgYXR0cmlidXRpb24gdG8gVGFsaWdlbnQgbWF5IG5vdCBiZSByZW1vdmVkLgorICogICBUYWxpZ2VudCBpcyBhIHJlZ2lzdGVyZWQgdHJhZGVtYXJrIG9mIFRhbGlnZW50LCBJbmMuCisgKgorICovCisKK3BhY2thZ2UgY29tLmlibS51dGlsOworCitpbXBvcnQgamF2YS5pby5PYmplY3RJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLk9iamVjdE91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCisvKioKKyAqIDxjb2RlPlNpbXBsZVRpbWVab25lPC9jb2RlPiBpcyBhIGNvbmNyZXRlIHN1YmNsYXNzIG9mIDxjb2RlPlRpbWVab25lPC9jb2RlPgorICogdGhhdCByZXByZXNlbnRzIGEgdGltZSB6b25lIGZvciB1c2Ugd2l0aCBhIEdyZWdvcmlhbiBjYWxlbmRhci4gVGhpcworICogY2xhc3MgZG9lcyBub3QgaGFuZGxlIGhpc3RvcmljYWwgY2hhbmdlcy4KKyAqCisgKiA8UD4KKyAqIFVzZSBhIG5lZ2F0aXZlIHZhbHVlIGZvciA8Y29kZT5kYXlPZldlZWtJbk1vbnRoPC9jb2RlPiB0byBpbmRpY2F0ZSB0aGF0CisgKiA8Y29kZT5TaW1wbGVUaW1lWm9uZTwvY29kZT4gc2hvdWxkIGNvdW50IGZyb20gdGhlIGVuZCBvZiB0aGUgbW9udGggYmFja3dhcmRzLgorICogRm9yIGV4YW1wbGUsIERheWxpZ2h0IFNhdmluZ3MgVGltZSBlbmRzIGF0IHRoZSBsYXN0CisgKiAoZGF5T2ZXZWVrSW5Nb250aCA9IC0xKSBTdW5kYXkgaW4gT2N0b2JlciwgYXQgMiBBTSBpbiBzdGFuZGFyZCB0aW1lLgorICoKKyAqIEBzZWUgICAgICBDYWxlbmRhcgorICogQHNlZSAgICAgIEdyZWdvcmlhbkNhbGVuZGFyCisgKiBAc2VlICAgICAgVGltZVpvbmUKKyAqIEB2ZXJzaW9uICAxLjM4IDAxLzE5LzAwCisgKiBAYXV0aG9yICAgRGF2aWQgR29sZHNtaXRoLCBNYXJrIERhdmlzLCBDaGVuLUxpZWggSHVhbmcsIEFsYW4gTGl1CisgKi8KK3B1YmxpYyBjbGFzcyBTaW1wbGVUaW1lWm9uZSBleHRlbmRzIFRpbWVab25lIHsKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RzIGEgU2ltcGxlVGltZVpvbmUgd2l0aCB0aGUgZ2l2ZW4gYmFzZSB0aW1lIHpvbmUgb2Zmc2V0IGZyb20gR01UCisgICAgICogYW5kIHRpbWUgem9uZSBJRC4gVGltZXpvbmUgSURzIGNhbiBiZSBvYnRhaW5lZCBmcm9tCisgICAgICogVGltZVpvbmUuZ2V0QXZhaWxhYmxlSURzLiBOb3JtYWxseSB5b3Ugc2hvdWxkIHVzZSBUaW1lWm9uZS5nZXREZWZhdWx0IHRvCisgICAgICogY29uc3RydWN0IGEgVGltZVpvbmUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcmF3T2Zmc2V0ICBUaGUgZ2l2ZW4gYmFzZSB0aW1lIHpvbmUgb2Zmc2V0IHRvIEdNVC4KKyAgICAgKiBAcGFyYW0gSUQgICAgICAgICBUaGUgdGltZSB6b25lIElEIHdoaWNoIGlzIG9idGFpbmVkIGZyb20KKyAgICAgKiAgICAgICAgICAgICAgICAgICBUaW1lWm9uZS5nZXRBdmFpbGFibGVJRHMuCisgICAgICovCisgICAgcHVibGljIFNpbXBsZVRpbWVab25lKGludCByYXdPZmZzZXQsIFN0cmluZyBJRCkKKyAgICB7CisgICAgICAgIHRoaXMucmF3T2Zmc2V0ID0gcmF3T2Zmc2V0OworICAgICAgICBzZXRJRCAoSUQpOworICAgICAgICBkc3RTYXZpbmdzID0gbWlsbGlzUGVySG91cjsgLy8gSW4gY2FzZSB1c2VyIHNldHMgcnVsZXMgbGF0ZXIKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBTaW1wbGVUaW1lWm9uZSB3aXRoIHRoZSBnaXZlbiBiYXNlIHRpbWUgem9uZSBvZmZzZXQgZnJvbQorICAgICAqIEdNVCwgdGltZSB6b25lIElELCB0aW1lIHRvIHN0YXJ0IGFuZCBlbmQgdGhlIGRheWxpZ2h0IHRpbWUuIFRpbWV6b25lIElEcworICAgICAqIGNhbiBiZSBvYnRhaW5lZCBmcm9tIFRpbWVab25lLmdldEF2YWlsYWJsZUlEcy4gTm9ybWFsbHkgeW91IHNob3VsZCB1c2UKKyAgICAgKiBUaW1lWm9uZS5nZXREZWZhdWx0IHRvIGNyZWF0ZSBhIFRpbWVab25lLiBGb3IgYSB0aW1lIHpvbmUgdGhhdCBkb2VzIG5vdAorICAgICAqIHVzZSBkYXlsaWdodCBzYXZpbmcgdGltZSwgZG8gbm90IHVzZSB0aGlzIGNvbnN0cnVjdG9yOyBpbnN0ZWFkIHlvdSBzaG91bGQKKyAgICAgKiB1c2UgU2ltcGxlVGltZVpvbmUocmF3T2Zmc2V0LCBJRCkuCisgICAgICoKKyAgICAgKiBCeSBkZWZhdWx0LCB0aGlzIGNvbnN0cnVjdG9yIHNwZWNpZmllcyBkYXktb2Ytd2Vlay1pbi1tb250aCBydWxlcy4gVGhhdAorICAgICAqIGlzLCBpZiB0aGUgc3RhcnREYXkgaXMgMSwgYW5kIHRoZSBzdGFydERheU9mV2VlayBpcyBTVU5EQVksIHRoZW4gdGhpcworICAgICAqIGluZGljYXRlcyB0aGUgZmlyc3QgU3VuZGF5IGluIHRoZSBzdGFydE1vbnRoLiBBIHN0YXJ0RGF5IG9mIC0xIGxpa2V3aXNlCisgICAgICogaW5kaWNhdGVzIHRoZSBsYXN0IFN1bmRheS4gSG93ZXZlciwgYnkgdXNpbmcgbmVnYXRpdmUgb3IgemVybyB2YWx1ZXMgZm9yCisgICAgICogY2VydGFpbiBwYXJhbWV0ZXJzLCBvdGhlciB0eXBlcyBvZiBydWxlcyBjYW4gYmUgc3BlY2lmaWVkLgorICAgICAqCisgICAgICogRGF5IG9mIG1vbnRoLiBUbyBzcGVjaWZ5IGFuIGV4YWN0IGRheSBvZiB0aGUgbW9udGgsIHN1Y2ggYXMgTWFyY2ggMSwgc2V0CisgICAgICogc3RhcnREYXlPZldlZWsgdG8gemVyby4KKyAgICAgKgorICAgICAqIERheSBvZiB3ZWVrIGFmdGVyIGRheSBvZiBtb250aC4gVG8gc3BlY2lmeSB0aGUgZmlyc3QgZGF5IG9mIHRoZSB3ZWVrCisgICAgICogb2NjdXJyaW5nIG9uIG9yIGFmdGVyIGFuIGV4YWN0IGRheSBvZiB0aGUgbW9udGgsIG1ha2UgdGhlIGRheSBvZiB0aGUgd2VlaworICAgICAqIG5lZ2F0aXZlLiBGb3IgZXhhbXBsZSwgaWYgc3RhcnREYXkgaXMgNSBhbmQgc3RhcnREYXlPZldlZWsgaXMgLU1PTkRBWSwKKyAgICAgKiB0aGlzIGluZGljYXRlcyB0aGUgZmlyc3QgTW9uZGF5IG9uIG9yIGFmdGVyIHRoZSA1dGggZGF5IG9mIHRoZQorICAgICAqIHN0YXJ0TW9udGguCisgICAgICoKKyAgICAgKiBEYXkgb2Ygd2VlayBiZWZvcmUgZGF5IG9mIG1vbnRoLiBUbyBzcGVjaWZ5IHRoZSBsYXN0IGRheSBvZiB0aGUgd2VlaworICAgICAqIG9jY3VycmluZyBvbiBvciBiZWZvcmUgYW4gZXhhY3QgZGF5IG9mIHRoZSBtb250aCwgbWFrZSB0aGUgZGF5IG9mIHRoZQorICAgICAqIHdlZWsgYW5kIHRoZSBkYXkgb2YgdGhlIG1vbnRoIG5lZ2F0aXZlLiBGb3IgZXhhbXBsZSwgaWYgc3RhcnREYXkgaXMgLTIxCisgICAgICogYW5kIHN0YXJ0RGF5T2ZXZWVrIGlzIC1XRURORVNEQVksIHRoaXMgaW5kaWNhdGVzIHRoZSBsYXN0IFdlZG5lc2RheSBvbiBvcgorICAgICAqIGJlZm9yZSB0aGUgMjFzdCBvZiB0aGUgc3RhcnRNb250aC4KKyAgICAgKgorICAgICAqIFRoZSBhYm92ZSBleGFtcGxlcyByZWZlciB0byB0aGUgc3RhcnRNb250aCwgc3RhcnREYXksIGFuZCBzdGFydERheU9mV2VlazsKKyAgICAgKiB0aGUgc2FtZSBhcHBsaWVzIGZvciB0aGUgZW5kTW9udGgsIGVuZERheSwgYW5kIGVuZERheU9mV2Vlay4KKyAgICAgKgorICAgICAqIEBwYXJhbSByYXdPZmZzZXQgICAgICAgVGhlIGdpdmVuIGJhc2UgdGltZSB6b25lIG9mZnNldCB0byBHTVQuCisgICAgICogQHBhcmFtIElEICAgICAgICAgICAgICBUaGUgdGltZSB6b25lIElEIHdoaWNoIGlzIG9idGFpbmVkIGZyb20KKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIFRpbWVab25lLmdldEF2YWlsYWJsZUlEcy4KKyAgICAgKiBAcGFyYW0gc3RhcnRNb250aCAgICAgIFRoZSBkYXlsaWdodCBzYXZpbmdzIHN0YXJ0aW5nIG1vbnRoLiBNb250aCBpcworICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgMC1iYXNlZC4gZWcsIDAgZm9yIEphbnVhcnkuCisgICAgICogQHBhcmFtIHN0YXJ0RGF5ICAgICAgICBUaGUgZGF5bGlnaHQgc2F2aW5ncyBzdGFydGluZworICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgZGF5LW9mLXdlZWstaW4tbW9udGguIFBsZWFzZSBzZWUgdGhlIG1lbWJlcgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gZm9yIGFuIGV4YW1wbGUuCisgICAgICogQHBhcmFtIHN0YXJ0RGF5T2ZXZWVrICBUaGUgZGF5bGlnaHQgc2F2aW5ncyBzdGFydGluZyBkYXktb2Ytd2Vlay4gUGxlYXNlCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlIG1lbWJlciBkZXNjcmlwdGlvbiBmb3IgYW4gZXhhbXBsZS4KKyAgICAgKiBAcGFyYW0gc3RhcnRUaW1lICAgICAgIFRoZSBkYXlsaWdodCBzYXZpbmdzIHN0YXJ0aW5nIHRpbWUgaW4gbG9jYWwgd2FsbAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgdGltZSwgd2hpY2ggaXMgc3RhbmRhcmQgdGltZSBpbiB0aGlzIGNhc2UuIFBsZWFzZSBzZWUgdGhlCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXIgZGVzY3JpcHRpb24gZm9yIGFuIGV4YW1wbGUuCisgICAgICogQHBhcmFtIGVuZE1vbnRoICAgICAgICBUaGUgZGF5bGlnaHQgc2F2aW5ncyBlbmRpbmcgbW9udGguIE1vbnRoIGlzCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAwLWJhc2VkLiBlZywgMCBmb3IgSmFudWFyeS4KKyAgICAgKiBAcGFyYW0gZW5kRGF5ICAgICAgICAgIFRoZSBkYXlsaWdodCBzYXZpbmdzIGVuZGluZyBkYXktb2Ytd2Vlay1pbi1tb250aC4KKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIFBsZWFzZSBzZWUgdGhlIG1lbWJlciBkZXNjcmlwdGlvbiBmb3IgYW4gZXhhbXBsZS4KKyAgICAgKiBAcGFyYW0gZW5kRGF5T2ZXZWVrICAgIFRoZSBkYXlsaWdodCBzYXZpbmdzIGVuZGluZyBkYXktb2Ytd2Vlay4gUGxlYXNlCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICBzZWUgdGhlIG1lbWJlciBkZXNjcmlwdGlvbiBmb3IgYW4gZXhhbXBsZS4KKyAgICAgKiBAcGFyYW0gZW5kVGltZSAgICAgICAgIFRoZSBkYXlsaWdodCBzYXZpbmdzIGVuZGluZyB0aW1lIGluIGxvY2FsIHdhbGwgdGltZSwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGRheWxpZ2h0IHRpbWUgaW4gdGhpcyBjYXNlLiBQbGVhc2Ugc2VlIHRoZQorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgbWVtYmVyIGRlc2NyaXB0aW9uIGZvciBhbiBleGFtcGxlLgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHRoZSBtb250aCwgZGF5LCBkYXlPZldlZWssIG9yIHRpbWUKKyAgICAgKiBwYXJhbWV0ZXJzIGFyZSBvdXQgb2YgcmFuZ2UgZm9yIHRoZSBzdGFydCBvciBlbmQgcnVsZQorICAgICAqIEBzaW5jZSBKREsxLjEKKyAgICAgKi8KKyAgICBwdWJsaWMgU2ltcGxlVGltZVpvbmUoaW50IHJhd09mZnNldCwgU3RyaW5nIElELAorICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnRNb250aCwgaW50IHN0YXJ0RGF5LCBpbnQgc3RhcnREYXlPZldlZWssIGludCBzdGFydFRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBlbmRNb250aCwgaW50IGVuZERheSwgaW50IGVuZERheU9mV2VlaywgaW50IGVuZFRpbWUpCisgICAgeworICAgICAgICB0aGlzKHJhd09mZnNldCwgSUQsCisgICAgICAgICAgICAgc3RhcnRNb250aCwgc3RhcnREYXksIHN0YXJ0RGF5T2ZXZWVrLCBzdGFydFRpbWUsIFdBTExfVElNRSwKKyAgICAgICAgICAgICBlbmRNb250aCwgZW5kRGF5LCBlbmREYXlPZldlZWssIGVuZFRpbWUsIFdBTExfVElNRSwKKyAgICAgICAgICAgICBtaWxsaXNQZXJIb3VyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3Rvci4gIFRoaXMgY29uc3RydWN0b3IgaXMgaWRlbnRpY2FsIHRvIHRoZSAxMC1hcmd1bWVudAorICAgICAqIGNvbnN0cnVjdG9yLCBidXQgYWxzbyB0YWtlcyBhIGRzdFNhdmluZ3MgcGFyYW1ldGVyLgorICAgICAqIEBwYXJhbSBkc3RTYXZpbmdzICAgVGhlIGFtb3VudCBvZiB0aW1lIGluIG1zIHNhdmVkIGR1cmluZyBEU1QuCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gdGhlIG1vbnRoLCBkYXksIGRheU9mV2Vlaywgb3IgdGltZQorICAgICAqIHBhcmFtZXRlcnMgYXJlIG91dCBvZiByYW5nZSBmb3IgdGhlIHN0YXJ0IG9yIGVuZCBydWxlCisgICAgICogQHNpbmNlIDEuMgorICAgICAqLworICAgIHB1YmxpYyBTaW1wbGVUaW1lWm9uZShpbnQgcmF3T2Zmc2V0LCBTdHJpbmcgSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydE1vbnRoLCBpbnQgc3RhcnREYXksIGludCBzdGFydERheU9mV2VlaywgaW50IHN0YXJ0VGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGVuZE1vbnRoLCBpbnQgZW5kRGF5LCBpbnQgZW5kRGF5T2ZXZWVrLCBpbnQgZW5kVGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRzdFNhdmluZ3MpCisgICAgeworICAgICAgICB0aGlzKHJhd09mZnNldCwgSUQsCisgICAgICAgICAgICAgc3RhcnRNb250aCwgc3RhcnREYXksIHN0YXJ0RGF5T2ZXZWVrLCBzdGFydFRpbWUsIFdBTExfVElNRSwKKyAgICAgICAgICAgICBlbmRNb250aCwgZW5kRGF5LCBlbmREYXlPZldlZWssIGVuZFRpbWUsIFdBTExfVElNRSwKKyAgICAgICAgICAgICBkc3RTYXZpbmdzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3Rvci4KKyAgICAgKi8KKyAgICBTaW1wbGVUaW1lWm9uZShpbnQgcmF3T2Zmc2V0LCBTdHJpbmcgSUQsCisgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0TW9udGgsIGludCBzdGFydERheSwgaW50IHN0YXJ0RGF5T2ZXZWVrLAorICAgICAgICAgICAgICAgICAgIGludCBzdGFydFRpbWUsIGludCBzdGFydFRpbWVNb2RlLAorICAgICAgICAgICAgICAgICAgIGludCBlbmRNb250aCwgaW50IGVuZERheSwgaW50IGVuZERheU9mV2VlaywKKyAgICAgICAgICAgICAgICAgICBpbnQgZW5kVGltZSwgaW50IGVuZFRpbWVNb2RlLAorICAgICAgICAgICAgICAgICAgIGludCBkc3RTYXZpbmdzKSB7CisgICAgICAgIHNldElEKElEKTsKKyAgICAgICAgdGhpcy5yYXdPZmZzZXQgICAgICA9IHJhd09mZnNldDsKKyAgICAgICAgdGhpcy5zdGFydE1vbnRoICAgICA9IHN0YXJ0TW9udGg7CisgICAgICAgIHRoaXMuc3RhcnREYXkgICAgICAgPSBzdGFydERheTsKKyAgICAgICAgdGhpcy5zdGFydERheU9mV2VlayA9IHN0YXJ0RGF5T2ZXZWVrOworICAgICAgICB0aGlzLnN0YXJ0VGltZSAgICAgID0gc3RhcnRUaW1lOworICAgICAgICB0aGlzLnN0YXJ0VGltZU1vZGUgID0gc3RhcnRUaW1lTW9kZTsKKyAgICAgICAgdGhpcy5lbmRNb250aCAgICAgICA9IGVuZE1vbnRoOworICAgICAgICB0aGlzLmVuZERheSAgICAgICAgID0gZW5kRGF5OworICAgICAgICB0aGlzLmVuZERheU9mV2VlayAgID0gZW5kRGF5T2ZXZWVrOworICAgICAgICB0aGlzLmVuZFRpbWUgICAgICAgID0gZW5kVGltZTsKKyAgICAgICAgdGhpcy5lbmRUaW1lTW9kZSAgICA9IGVuZFRpbWVNb2RlOworICAgICAgICB0aGlzLmRzdFNhdmluZ3MgICAgID0gZHN0U2F2aW5nczsKKyAgICAgICAgLy8gdGhpcy51c2VEYXlsaWdodCAgICA9IHRydWU7IC8vIFNldCBieSBkZWNvZGVSdWxlcworICAgICAgICBkZWNvZGVSdWxlcygpOworICAgICAgICBpZiAoZHN0U2F2aW5ncyA8PSAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIERTVCBzYXZpbmdzIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3RvciBmb3IgVGltZVpvbmVEYXRhLiAgVGFrZXMgYXMgaW5wdXQgYW4gYXJyYXkgYW5kIGFuIGluZGV4CisgICAgICogaW50byB0aGUgYXJyYXkuICBUaGUgYXJyYXkgZm9ybWF0IGlzIHRoYXQgb2YgVGltZVpvbmVEYXRhLkRBVEEuCisgICAgICovCisgICAgU2ltcGxlVGltZVpvbmUoU3RyaW5nIElELCBpbnRbXSBkYXRhLCBpbnQgaSkgeworICAgICAgICBzZXRJRChJRCk7CisgICAgICAgIHJhd09mZnNldCA9IGRhdGFbaSsxXSoxMDAwOworICAgICAgICBpZiAoZGF0YVtpXSA9PSAwKSB7CisgICAgICAgICAgICBkc3RTYXZpbmdzID0gbWlsbGlzUGVySG91cjsgLy8gSW4gY2FzZSB1c2VyIHNldHMgcnVsZXMgbGF0ZXIKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHN0YXJ0TW9udGggICAgID0gZGF0YVtpKzJdOworICAgICAgICAgICAgc3RhcnREYXkgICAgICAgPSBkYXRhW2krM107CisgICAgICAgICAgICBzdGFydERheU9mV2VlayA9IGRhdGFbaSs0XTsKKyAgICAgICAgICAgIHN0YXJ0VGltZSAgICAgID0gZGF0YVtpKzVdKjYwMDAwOworICAgICAgICAgICAgc3RhcnRUaW1lTW9kZSAgPSBkYXRhW2krNl07CisgICAgICAgICAgICBlbmRNb250aCAgICAgICA9IGRhdGFbaSs3XTsKKyAgICAgICAgICAgIGVuZERheSAgICAgICAgID0gZGF0YVtpKzhdOworICAgICAgICAgICAgZW5kRGF5T2ZXZWVrICAgPSBkYXRhW2krOV07CisgICAgICAgICAgICBlbmRUaW1lICAgICAgICA9IGRhdGFbaSsxMF0qNjAwMDA7CisgICAgICAgICAgICBlbmRUaW1lTW9kZSAgICA9IGRhdGFbaSsxMV07CisgICAgICAgICAgICBkc3RTYXZpbmdzICAgICA9IGRhdGFbaSsxMl0qNjAwMDA7CisgICAgICAgICAgICBkZWNvZGVSdWxlcygpOworICAgICAgICAgICAgaWYgKGRzdFNhdmluZ3MgPD0gMCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgRFNUIHNhdmluZ3MiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGRheWxpZ2h0IHNhdmluZ3Mgc3RhcnRpbmcgeWVhci4KKyAgICAgKgorICAgICAqIEBwYXJhbSB5ZWFyICBUaGUgZGF5bGlnaHQgc2F2aW5ncyBzdGFydGluZyB5ZWFyLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFN0YXJ0WWVhcihpbnQgeWVhcikKKyAgICB7CisgICAgICAgIHN0YXJ0WWVhciA9IHllYXI7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgZGF5bGlnaHQgc2F2aW5ncyBzdGFydGluZyBydWxlLiBGb3IgZXhhbXBsZSwgRGF5bGlnaHQgU2F2aW5ncworICAgICAqIFRpbWUgc3RhcnRzIGF0IHRoZSBmaXJzdCBTdW5kYXkgaW4gQXByaWwsIGF0IDIgQU0gaW4gc3RhbmRhcmQgdGltZS4KKyAgICAgKiBUaGVyZWZvcmUsIHlvdSBjYW4gc2V0IHRoZSBzdGFydCBydWxlIGJ5IGNhbGxpbmc6CisgICAgICogc2V0U3RhcnRSdWxlKFRpbWVGaWVsZHMuQVBSSUwsIDEsIFRpbWVGaWVsZHMuU1VOREFZLCAyKjYwKjYwKjEwMDApOworICAgICAqCisgICAgICogQHBhcmFtIG1vbnRoICAgICAgICAgICAgIFRoZSBkYXlsaWdodCBzYXZpbmdzIHN0YXJ0aW5nIG1vbnRoLiBNb250aCBpcworICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAwLWJhc2VkLiBlZywgMCBmb3IgSmFudWFyeS4KKyAgICAgKiBAcGFyYW0gZGF5T2ZXZWVrSW5Nb250aCAgVGhlIGRheWxpZ2h0IHNhdmluZ3Mgc3RhcnRpbmcKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgZGF5LW9mLXdlZWstaW4tbW9udGguIFBsZWFzZSBzZWUgdGhlIG1lbWJlcgorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiBmb3IgYW4gZXhhbXBsZS4KKyAgICAgKiBAcGFyYW0gZGF5T2ZXZWVrICAgICAgICAgVGhlIGRheWxpZ2h0IHNhdmluZ3Mgc3RhcnRpbmcgZGF5LW9mLXdlZWsuCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIFBsZWFzZSBzZWUgdGhlIG1lbWJlciBkZXNjcmlwdGlvbiBmb3IgYW4KKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhhbXBsZS4KKyAgICAgKiBAcGFyYW0gdGltZSAgICAgICAgICAgICAgVGhlIGRheWxpZ2h0IHNhdmluZ3Mgc3RhcnRpbmcgdGltZSBpbiBsb2NhbCB3YWxsCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUsIHdoaWNoIGlzIHN0YW5kYXJkIHRpbWUgaW4gdGhpcyBjYXNlLiBQbGVhc2Ugc2VlCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBtZW1iZXIgZGVzY3JpcHRpb24gZm9yIGFuIGV4YW1wbGUuCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gdGhlIG1vbnRoLCBkYXlPZldlZWtJbk1vbnRoLAorICAgICAqIGRheU9mV2Vlaywgb3IgdGltZSBwYXJhbWV0ZXJzIGFyZSBvdXQgb2YgcmFuZ2UKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRTdGFydFJ1bGUoaW50IG1vbnRoLCBpbnQgZGF5T2ZXZWVrSW5Nb250aCwgaW50IGRheU9mV2VlaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRpbWUpCisgICAgeworICAgICAgICBzdGFydE1vbnRoID0gbW9udGg7CisgICAgICAgIHN0YXJ0RGF5ID0gZGF5T2ZXZWVrSW5Nb250aDsKKyAgICAgICAgc3RhcnREYXlPZldlZWsgPSBkYXlPZldlZWs7CisgICAgICAgIHN0YXJ0VGltZSA9IHRpbWU7CisgICAgICAgIHN0YXJ0VGltZU1vZGUgPSBXQUxMX1RJTUU7CisgICAgICAgIC8vIHVzZURheWxpZ2h0ID0gdHJ1ZTsgLy8gU2V0IGJ5IGRlY29kZVJ1bGVzCisgICAgICAgIGRlY29kZVN0YXJ0UnVsZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIERTVCBzdGFydCBydWxlIHRvIGEgZml4ZWQgZGF0ZSB3aXRoaW4gYSBtb250aC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtb250aCAgICAgICAgIFRoZSBtb250aCBpbiB3aGljaCB0aGlzIHJ1bGUgb2NjdXJzICgwLWJhc2VkKS4KKyAgICAgKiBAcGFyYW0gZGF5T2ZNb250aCAgICBUaGUgZGF0ZSBpbiB0aGF0IG1vbnRoICgxLWJhc2VkKS4KKyAgICAgKiBAcGFyYW0gdGltZSAgICAgICAgICBUaGUgdGltZSBvZiB0aGF0IGRheSAobnVtYmVyIG9mIG1pbGxpcyBhZnRlciBtaWRuaWdodCkKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICB3aGVuIERTVCB0YWtlcyBlZmZlY3QgaW4gbG9jYWwgd2FsbCB0aW1lLCB3aGljaCBpcworICAgICAqICAgICAgICAgICAgICAgICAgICAgIHN0YW5kYXJkIHRpbWUgaW4gdGhpcyBjYXNlLgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHRoZSBtb250aCwKKyAgICAgKiBkYXlPZk1vbnRoLCBvciB0aW1lIHBhcmFtZXRlcnMgYXJlIG91dCBvZiByYW5nZQorICAgICAqIEBzaW5jZSAxLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRTdGFydFJ1bGUoaW50IG1vbnRoLCBpbnQgZGF5T2ZNb250aCwgaW50IHRpbWUpIHsKKyAgICAgICAgc2V0U3RhcnRSdWxlKG1vbnRoLCBkYXlPZk1vbnRoLCAwLCB0aW1lKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBEU1Qgc3RhcnQgcnVsZSB0byBhIHdlZWtkYXkgYmVmb3JlIG9yIGFmdGVyIGEgZ2l2ZSBkYXRlIHdpdGhpbgorICAgICAqIGEgbW9udGgsIGUuZy4sIHRoZSBmaXJzdCBNb25kYXkgb24gb3IgYWZ0ZXIgdGhlIDh0aC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtb250aCAgICAgICAgIFRoZSBtb250aCBpbiB3aGljaCB0aGlzIHJ1bGUgb2NjdXJzICgwLWJhc2VkKS4KKyAgICAgKiBAcGFyYW0gZGF5T2ZNb250aCAgICBBIGRhdGUgd2l0aGluIHRoYXQgbW9udGggKDEtYmFzZWQpLgorICAgICAqIEBwYXJhbSBkYXlPZldlZWsgICAgIFRoZSBkYXkgb2YgdGhlIHdlZWsgb24gd2hpY2ggdGhpcyBydWxlIG9jY3Vycy4KKyAgICAgKiBAcGFyYW0gdGltZSAgICAgICAgICBUaGUgdGltZSBvZiB0aGF0IGRheSAobnVtYmVyIG9mIG1pbGxpcyBhZnRlciBtaWRuaWdodCkKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICB3aGVuIERTVCB0YWtlcyBlZmZlY3QgaW4gbG9jYWwgd2FsbCB0aW1lLCB3aGljaCBpcworICAgICAqICAgICAgICAgICAgICAgICAgICAgIHN0YW5kYXJkIHRpbWUgaW4gdGhpcyBjYXNlLgorICAgICAqIEBwYXJhbSBhZnRlciAgICAgICAgIElmIHRydWUsIHRoaXMgcnVsZSBzZWxlY3RzIHRoZSBmaXJzdCBkYXlPZldlZWsgb24KKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICBvciBhZnRlciBkYXlPZk1vbnRoLiAgSWYgZmFsc2UsIHRoaXMgcnVsZSBzZWxlY3RzCisgICAgICogICAgICAgICAgICAgICAgICAgICAgdGhlIGxhc3QgZGF5T2ZXZWVrIG9uIG9yIGJlZm9yZSBkYXlPZk1vbnRoLgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHRoZSBtb250aCwgZGF5T2ZNb250aCwKKyAgICAgKiBkYXlPZldlZWssIG9yIHRpbWUgcGFyYW1ldGVycyBhcmUgb3V0IG9mIHJhbmdlCisgICAgICogQHNpbmNlIDEuMgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFN0YXJ0UnVsZShpbnQgbW9udGgsIGludCBkYXlPZk1vbnRoLCBpbnQgZGF5T2ZXZWVrLCBpbnQgdGltZSwgYm9vbGVhbiBhZnRlcikKKyAgICB7CisgICAgICAgIGlmIChhZnRlcikKKyAgICAgICAgICAgIHNldFN0YXJ0UnVsZShtb250aCwgZGF5T2ZNb250aCwgLWRheU9mV2VlaywgdGltZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNldFN0YXJ0UnVsZShtb250aCwgLWRheU9mTW9udGgsIC1kYXlPZldlZWssIHRpbWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGRheWxpZ2h0IHNhdmluZ3MgZW5kaW5nIHJ1bGUuIEZvciBleGFtcGxlLCBEYXlsaWdodCBTYXZpbmdzIFRpbWUKKyAgICAgKiBlbmRzIGF0IHRoZSBsYXN0ICgtMSkgU3VuZGF5IGluIE9jdG9iZXIsIGF0IDIgQU0gaW4gc3RhbmRhcmQgdGltZS4KKyAgICAgKiBUaGVyZWZvcmUsIHlvdSBjYW4gc2V0IHRoZSBlbmQgcnVsZSBieSBjYWxsaW5nOgorICAgICAqIHNldEVuZFJ1bGUoVGltZUZpZWxkcy5PQ1RPQkVSLCAtMSwgVGltZUZpZWxkcy5TVU5EQVksIDIqNjAqNjAqMTAwMCk7CisgICAgICoKKyAgICAgKiBAcGFyYW0gbW9udGggICAgICAgICAgICAgVGhlIGRheWxpZ2h0IHNhdmluZ3MgZW5kaW5nIG1vbnRoLiBNb250aCBpcworICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAwLWJhc2VkLiBlZywgMCBmb3IgSmFudWFyeS4KKyAgICAgKiBAcGFyYW0gZGF5T2ZXZWVrSW5Nb250aCAgVGhlIGRheWxpZ2h0IHNhdmluZ3MgZW5kaW5nCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIGRheS1vZi13ZWVrLWluLW1vbnRoLiBQbGVhc2Ugc2VlIHRoZSBtZW1iZXIKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24gZm9yIGFuIGV4YW1wbGUuCisgICAgICogQHBhcmFtIGRheU9mV2VlayAgICAgICAgIFRoZSBkYXlsaWdodCBzYXZpbmdzIGVuZGluZyBkYXktb2Ytd2Vlay4gUGxlYXNlCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIHNlZSB0aGUgbWVtYmVyIGRlc2NyaXB0aW9uIGZvciBhbiBleGFtcGxlLgorICAgICAqIEBwYXJhbSB0aW1lICAgICAgICAgICAgICBUaGUgZGF5bGlnaHQgc2F2aW5ncyBlbmRpbmcgdGltZSBpbiBsb2NhbCB3YWxsIHRpbWUsCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGlzIGRheWxpZ2h0IHRpbWUgaW4gdGhpcyBjYXNlLiBQbGVhc2Ugc2VlIHRoZQorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1iZXIgZGVzY3JpcHRpb24gZm9yIGFuIGV4YW1wbGUuCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gdGhlIG1vbnRoLCBkYXlPZldlZWtJbk1vbnRoLAorICAgICAqIGRheU9mV2Vlaywgb3IgdGltZSBwYXJhbWV0ZXJzIGFyZSBvdXQgb2YgcmFuZ2UKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRFbmRSdWxlKGludCBtb250aCwgaW50IGRheU9mV2Vla0luTW9udGgsIGludCBkYXlPZldlZWssCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgdGltZSkKKyAgICB7CisgICAgICAgIGVuZE1vbnRoID0gbW9udGg7CisgICAgICAgIGVuZERheSA9IGRheU9mV2Vla0luTW9udGg7CisgICAgICAgIGVuZERheU9mV2VlayA9IGRheU9mV2VlazsKKyAgICAgICAgZW5kVGltZSA9IHRpbWU7CisgICAgICAgIGVuZFRpbWVNb2RlID0gV0FMTF9USU1FOworICAgICAgICAvLyB1c2VEYXlsaWdodCA9IHRydWU7IC8vIFNldCBieSBkZWNvZGVSdWxlcworICAgICAgICBkZWNvZGVFbmRSdWxlKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgRFNUIGVuZCBydWxlIHRvIGEgZml4ZWQgZGF0ZSB3aXRoaW4gYSBtb250aC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtb250aCAgICAgICAgIFRoZSBtb250aCBpbiB3aGljaCB0aGlzIHJ1bGUgb2NjdXJzICgwLWJhc2VkKS4KKyAgICAgKiBAcGFyYW0gZGF5T2ZNb250aCAgICBUaGUgZGF0ZSBpbiB0aGF0IG1vbnRoICgxLWJhc2VkKS4KKyAgICAgKiBAcGFyYW0gdGltZSAgICAgICAgICBUaGUgdGltZSBvZiB0aGF0IGRheSAobnVtYmVyIG9mIG1pbGxpcyBhZnRlciBtaWRuaWdodCkKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICB3aGVuIERTVCBlbmRzIGluIGxvY2FsIHdhbGwgdGltZSwgd2hpY2ggaXMgZGF5bGlnaHQKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICB0aW1lIGluIHRoaXMgY2FzZS4KKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB0aGUgbW9udGgsCisgICAgICogZGF5T2ZNb250aCwgb3IgdGltZSBwYXJhbWV0ZXJzIGFyZSBvdXQgb2YgcmFuZ2UKKyAgICAgKiBAc2luY2UgMS4yCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0RW5kUnVsZShpbnQgbW9udGgsIGludCBkYXlPZk1vbnRoLCBpbnQgdGltZSkKKyAgICB7CisgICAgICAgIHNldEVuZFJ1bGUobW9udGgsIGRheU9mTW9udGgsIDAsIHRpbWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIERTVCBlbmQgcnVsZSB0byBhIHdlZWtkYXkgYmVmb3JlIG9yIGFmdGVyIGEgZ2l2ZSBkYXRlIHdpdGhpbgorICAgICAqIGEgbW9udGgsIGUuZy4sIHRoZSBmaXJzdCBNb25kYXkgb24gb3IgYWZ0ZXIgdGhlIDh0aC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtb250aCAgICAgICAgIFRoZSBtb250aCBpbiB3aGljaCB0aGlzIHJ1bGUgb2NjdXJzICgwLWJhc2VkKS4KKyAgICAgKiBAcGFyYW0gZGF5T2ZNb250aCAgICBBIGRhdGUgd2l0aGluIHRoYXQgbW9udGggKDEtYmFzZWQpLgorICAgICAqIEBwYXJhbSBkYXlPZldlZWsgICAgIFRoZSBkYXkgb2YgdGhlIHdlZWsgb24gd2hpY2ggdGhpcyBydWxlIG9jY3Vycy4KKyAgICAgKiBAcGFyYW0gdGltZSAgICAgICAgICBUaGUgdGltZSBvZiB0aGF0IGRheSAobnVtYmVyIG9mIG1pbGxpcyBhZnRlciBtaWRuaWdodCkKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICB3aGVuIERTVCBlbmRzIGluIGxvY2FsIHdhbGwgdGltZSwgd2hpY2ggaXMgZGF5bGlnaHQKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICB0aW1lIGluIHRoaXMgY2FzZS4KKyAgICAgKiBAcGFyYW0gYWZ0ZXIgICAgICAgICBJZiB0cnVlLCB0aGlzIHJ1bGUgc2VsZWN0cyB0aGUgZmlyc3QgZGF5T2ZXZWVrIG9uCisgICAgICogICAgICAgICAgICAgICAgICAgICAgb3IgYWZ0ZXIgZGF5T2ZNb250aC4gIElmIGZhbHNlLCB0aGlzIHJ1bGUgc2VsZWN0cworICAgICAqICAgICAgICAgICAgICAgICAgICAgIHRoZSBsYXN0IGRheU9mV2VlayBvbiBvciBiZWZvcmUgZGF5T2ZNb250aC4KKyAgICAgKiBAZXhjZXB0aW9uIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB0aGUgbW9udGgsIGRheU9mTW9udGgsCisgICAgICogZGF5T2ZXZWVrLCBvciB0aW1lIHBhcmFtZXRlcnMgYXJlIG91dCBvZiByYW5nZQorICAgICAqIEBzaW5jZSAxLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRFbmRSdWxlKGludCBtb250aCwgaW50IGRheU9mTW9udGgsIGludCBkYXlPZldlZWssIGludCB0aW1lLCBib29sZWFuIGFmdGVyKQorICAgIHsKKyAgICAgICAgaWYgKGFmdGVyKQorICAgICAgICAgICAgc2V0RW5kUnVsZShtb250aCwgZGF5T2ZNb250aCwgLWRheU9mV2VlaywgdGltZSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNldEVuZFJ1bGUobW9udGgsIC1kYXlPZk1vbnRoLCAtZGF5T2ZXZWVrLCB0aW1lKTsKKyAgICB9CisKKyAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGRpZmZlcmVuY2UgaW4gbWlsbGlzZWNvbmRzIGJldHdlZW4gbG9jYWwgdGltZSBhbmQKKyAgICAgKiBVVEMsIHRha2luZyBpbnRvIGFjY291bnQgYm90aCB0aGUgcmF3IG9mZnNldCBhbmQgdGhlIGVmZmVjdCBvZgorICAgICAqIGRheWxpZ2h0IHNhdmluZ3MsIGZvciB0aGUgc3BlY2lmaWVkIGRhdGUgYW5kIHRpbWUuICBUaGlzIG1ldGhvZAorICAgICAqIGFzc3VtZXMgdGhhdCB0aGUgc3RhcnQgYW5kIGVuZCBtb250aCBhcmUgZGlzdGluY3QuICBJdCBhbHNvCisgICAgICogdXNlcyBhIGRlZmF1bHQge0BsaW5rIEdyZWdvcmlhbkNhbGVuZGFyfSBvYmplY3QgYXMgaXRzCisgICAgICogdW5kZXJseWluZyBjYWxlbmRhciwgc3VjaCBhcyBmb3IgZGV0ZXJtaW5pbmcgbGVhcCB5ZWFycy4gIERvCisgICAgICogbm90IHVzZSB0aGUgcmVzdWx0IG9mIHRoaXMgbWV0aG9kIHdpdGggYSBjYWxlbmRhciBvdGhlciB0aGFuIGEKKyAgICAgKiBkZWZhdWx0IDxjb2RlPkdyZWdvcmlhbkNhbGVuZGFyPC9jb2RlPi4KKyAgICAgKgorICAgICAqIDxwPjxlbT5Ob3RlOiAgSW4gZ2VuZXJhbCwgY2xpZW50cyBzaG91bGQgdXNlCisgICAgICogPGNvZGU+Q2FsZW5kYXIuZ2V0KFpPTkVfT0ZGU0VUKSArIENhbGVuZGFyLmdldChEU1RfT0ZGU0VUKTwvY29kZT4KKyAgICAgKiBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhpcyBtZXRob2QuPC9lbT4KKyAgICAgKgorICAgICAqIEBwYXJhbSBlcmEgICAgICAgVGhlIGVyYSBvZiB0aGUgZ2l2ZW4gZGF0ZS4KKyAgICAgKiBAcGFyYW0geWVhciAgICAgIFRoZSB5ZWFyIGluIHRoZSBnaXZlbiBkYXRlLgorICAgICAqIEBwYXJhbSBtb250aCAgICAgVGhlIG1vbnRoIGluIHRoZSBnaXZlbiBkYXRlLiBNb250aCBpcyAwLWJhc2VkLiBlLmcuLAorICAgICAqICAgICAgICAgICAgICAgICAgMCBmb3IgSmFudWFyeS4KKyAgICAgKiBAcGFyYW0gZGF5ICAgICAgIFRoZSBkYXktaW4tbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuCisgICAgICogQHBhcmFtIGRheU9mV2VlayBUaGUgZGF5LW9mLXdlZWsgb2YgdGhlIGdpdmVuIGRhdGUuCisgICAgICogQHBhcmFtIG1pbGxpcyAgICBUaGUgbWlsbGlzZWNvbmRzIGluIGRheSBpbiA8ZW0+c3RhbmRhcmQ8L2VtPiBsb2NhbCB0aW1lLgorICAgICAqIEByZXR1cm4gICAgICAgICAgVGhlIG1pbGxpc2Vjb25kcyB0byBhZGQgdG8gVVRDIHRvIGdldCBsb2NhbCB0aW1lLgorICAgICAqIEBleGNlcHRpb24gICAgICAgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHRoZSBlcmEsIG1vbnRoLCBkYXksCisgICAgICogICAgICAgICAgICAgICAgICBkYXlPZldlZWssIG9yIG1pbGxpcyBwYXJhbWV0ZXJzIGFyZSBvdXQgb2YgcmFuZ2UKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldE9mZnNldChpbnQgZXJhLCBpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LCBpbnQgZGF5T2ZXZWVrLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaWxsaXMpCisgICAgeworICAgICAgICAvLyBDaGVjayB0aGUgbW9udGggYmVmb3JlIGluZGV4aW5nIGludG8gc3RhdGljTW9udGhMZW5ndGguIFRoaXMKKwkvLyBkdXBsaWNhdGVzIHRoZSB0ZXN0IHRoYXQgb2NjdXJzIGluIHRoZSA3LWFyZ3VtZW50IGdldE9mZnNldCgpLAorCS8vIGhvd2V2ZXIsIHRoaXMgaXMgdW5hdm9pZGFibGUuIFdlIGRvbid0IG1pbmQgYmVjYXVzZSB0aGlzIG1ldGhvZCwgaW4KKwkvLyBmYWN0LCBzaG91bGQgbm90IGJlIGNhbGxlZDsgaW50ZXJuYWwgY29kZSBzaG91bGQgYWx3YXlzIGNhbGwgdGhlCisJLy8gNy1hcmd1bWVudCBnZXRPZmZzZXQoKSwgYW5kIG91dHNpZGUgY29kZSBzaG91bGQgdXNlIENhbGVuZGFyLmdldChpbnQKKwkvLyBmaWVsZCkgd2l0aCBmaWVsZHMgWk9ORV9PRkZTRVQgYW5kIERTVF9PRkZTRVQuIFdlIGNhbid0IGdldCByaWQgb2YKKwkvLyB0aGlzIG1ldGhvZCBiZWNhdXNlIGl0J3MgcHVibGljIEFQSS4gLSBsaXUgOC8xMC85OAorICAgICAgICBpZiAobW9udGggPCBDYWxlbmRhci5KQU5VQVJZCisgICAgICAgICAgICB8fCBtb250aCA+IENhbGVuZGFyLkRFQ0VNQkVSKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIG1vbnRoICIgKyBtb250aCk7CisgICAgICAgIH0KKwlpbnQgbW9udGhMZW5ndGgsIHByZXZNb250aExlbmd0aDsKKwlpZiAoKGVyYSA9PSBHcmVnb3JpYW5DYWxlbmRhci5BRCkgJiYgaW50ZXJuYWxDYWwuaXNMZWFwWWVhcih5ZWFyKSkgeworCSAgICBtb250aExlbmd0aCA9IHN0YXRpY0xlYXBNb250aExlbmd0aFttb250aF07CisJICAgIHByZXZNb250aExlbmd0aCA9IChtb250aCA+IDEpID8gc3RhdGljTGVhcE1vbnRoTGVuZ3RoW21vbnRoIC0gMV0gOiAzMTsKKwl9IGVsc2UgeworCSAgICBtb250aExlbmd0aCA9IHN0YXRpY01vbnRoTGVuZ3RoW21vbnRoXTsKKwkgICAgcHJldk1vbnRoTGVuZ3RoID0gKG1vbnRoID4gMSkgPyBzdGF0aWNNb250aExlbmd0aFttb250aCAtIDFdIDogMzE7CisJfQorCisgICAgICAgIHJldHVybiBnZXRPZmZzZXQoZXJhLCB5ZWFyLCBtb250aCwgZGF5LCBkYXlPZldlZWssIG1pbGxpcywKKwkJCSBtb250aExlbmd0aCwgcHJldk1vbnRoTGVuZ3RoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIG9mZnNldCwgZm9yIGN1cnJlbnQgZGF0ZSwgbW9kaWZpZWQgaW4gY2FzZSBvZgorICAgICAqIGRheWxpZ2h0IHNhdmluZ3MuIFRoaXMgaXMgdGhlIG9mZnNldCB0byBhZGQgPGVtPnRvPC9lbT4gVVRDIHRvIGdldCBsb2NhbCB0aW1lLgorICAgICAqIEdldHMgdGhlIHRpbWUgem9uZSBvZmZzZXQsIGZvciBjdXJyZW50IGRhdGUsIG1vZGlmaWVkIGluIGNhc2Ugb2YgZGF5bGlnaHQKKyAgICAgKiBzYXZpbmdzLiBUaGlzIGlzIHRoZSBvZmZzZXQgdG8gYWRkICp0byogVVRDIHRvIGdldCBsb2NhbCB0aW1lLiBBc3N1bWUKKyAgICAgKiB0aGF0IHRoZSBzdGFydCBhbmQgZW5kIG1vbnRoIGFyZSBkaXN0aW5jdC4KKyAgICAgKiBAcGFyYW0gZXJhICAgICAgICAgICBUaGUgZXJhIG9mIHRoZSBnaXZlbiBkYXRlLgorICAgICAqIEBwYXJhbSB5ZWFyICAgICAgICAgIFRoZSB5ZWFyIGluIHRoZSBnaXZlbiBkYXRlLgorICAgICAqIEBwYXJhbSBtb250aCAgICAgICAgIFRoZSBtb250aCBpbiB0aGUgZ2l2ZW4gZGF0ZS4gTW9udGggaXMgMC1iYXNlZC4gZS5nLiwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAwIGZvciBKYW51YXJ5LgorICAgICAqIEBwYXJhbSBkYXkgICAgICAgICAgIFRoZSBkYXktaW4tbW9udGggb2YgdGhlIGdpdmVuIGRhdGUuCisgICAgICogQHBhcmFtIGRheU9mV2VlayAgICAgVGhlIGRheS1vZi13ZWVrIG9mIHRoZSBnaXZlbiBkYXRlLgorICAgICAqIEBwYXJhbSBtaWxsaXMgICAgICAgIFRoZSBtaWxsaXNlY29uZHMgaW4gZGF5IGluIDxlbT5zdGFuZGFyZDwvZW0+IGxvY2FsIHRpbWUuCisgICAgICogQHBhcmFtIG1vbnRoTGVuZ3RoICAgVGhlIGxlbmd0aCBvZiB0aGUgZ2l2ZW4gbW9udGggaW4gZGF5cy4KKyAgICAgKiBAcGFyYW0gcHJldk1vbnRoTGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIHByZXZpb3VzIG1vbnRoIGluIGRheXMuCisgICAgICogQHJldHVybiAgICAgICAgICAgICAgVGhlIG9mZnNldCB0byBhZGQgKnRvKiBHTVQgdG8gZ2V0IGxvY2FsIHRpbWUuCisgICAgICogQGV4Y2VwdGlvbiBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gdGhlIGVyYSwgbW9udGgsIGRheSwKKyAgICAgKiBkYXlPZldlZWssIG1pbGxpcywgb3IgbW9udGhMZW5ndGggcGFyYW1ldGVycyBhcmUgb3V0IG9mIHJhbmdlCisgICAgICovCisgICAgaW50IGdldE9mZnNldChpbnQgZXJhLCBpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LCBpbnQgZGF5T2ZXZWVrLAorICAgICAgICAgICAgICAgICAgaW50IG1pbGxpcywgaW50IG1vbnRoTGVuZ3RoLCBpbnQgcHJldk1vbnRoTGVuZ3RoKSB7CisgICAgICAgIGlmIChmYWxzZSkgeworICAgICAgICAgICAgLyogVXNlIHRoaXMgcGFyYW1ldGVyIGNoZWNraW5nIGNvZGUgZm9yIG5vcm1hbCBvcGVyYXRpb24uICBPbmx5IG9uZQorICAgICAgICAgICAgICogb2YgdGhlc2UgdHdvIGJsb2NrcyBzaG91bGQgYWN0dWFsbHkgZ2V0IGNvbXBpbGVkIGludG8gdGhlIGNsYXNzCisgICAgICAgICAgICAgKiBmaWxlLiAgKi8KKyAgICAgICAgICAgIGlmICgoZXJhICE9IEdyZWdvcmlhbkNhbGVuZGFyLkFEICYmIGVyYSAhPSBHcmVnb3JpYW5DYWxlbmRhci5CQykKKyAgICAgICAgICAgICAgICB8fCBtb250aCA8IENhbGVuZGFyLkpBTlVBUlkKKyAgICAgICAgICAgICAgICB8fCBtb250aCA+IENhbGVuZGFyLkRFQ0VNQkVSCisgICAgICAgICAgICAgICAgfHwgZGF5IDwgMQorICAgICAgICAgICAgICAgIHx8IGRheSA+IG1vbnRoTGVuZ3RoCisgICAgICAgICAgICAgICAgfHwgZGF5T2ZXZWVrIDwgQ2FsZW5kYXIuU1VOREFZCisgICAgICAgICAgICAgICAgfHwgZGF5T2ZXZWVrID4gQ2FsZW5kYXIuU0FUVVJEQVkKKyAgICAgICAgICAgICAgICB8fCBtaWxsaXMgPCAwCisgICAgICAgICAgICAgICAgfHwgbWlsbGlzID49IG1pbGxpc1BlckRheQorICAgICAgICAgICAgICAgIHx8IG1vbnRoTGVuZ3RoIDwgMjgKKyAgICAgICAgICAgICAgICB8fCBtb250aExlbmd0aCA+IDMxCisgICAgICAgICAgICAgICAgfHwgcHJldk1vbnRoTGVuZ3RoIDwgMjgKKyAgICAgICAgICAgICAgICB8fCBwcmV2TW9udGhMZW5ndGggPiAzMSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIFRoaXMgcGFyYW1ldGVyIGNoZWNraW5nIGNvZGUgaXMgYmV0dGVyIGZvciBkZWJ1Z2dpbmcsIGJ1dAorICAgICAgICAgICAgICogb3ZlcmtpbGwgZm9yIG5vcm1hbCBvcGVyYXRpb24uICBPbmx5IG9uZSBvZiB0aGVzZSB0d28gYmxvY2tzCisgICAgICAgICAgICAgKiBzaG91bGQgYWN0dWFsbHkgZ2V0IGNvbXBpbGVkIGludG8gdGhlIGNsYXNzIGZpbGUuICAqLworICAgICAgICAgICAgaWYgKGVyYSAhPSBHcmVnb3JpYW5DYWxlbmRhci5BRCAmJiBlcmEgIT0gR3JlZ29yaWFuQ2FsZW5kYXIuQkMpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIGVyYSAiICsgZXJhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtb250aCA8IENhbGVuZGFyLkpBTlVBUlkKKyAgICAgICAgICAgICAgICB8fCBtb250aCA+IENhbGVuZGFyLkRFQ0VNQkVSKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCBtb250aCAiICsgbW9udGgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRheSA8IDEKKyAgICAgICAgICAgICAgICB8fCBkYXkgPiBtb250aExlbmd0aCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgZGF5ICIgKyBkYXkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGRheU9mV2VlayA8IENhbGVuZGFyLlNVTkRBWQorICAgICAgICAgICAgICAgIHx8IGRheU9mV2VlayA+IENhbGVuZGFyLlNBVFVSREFZKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCBkYXkgb2Ygd2VlayAiICsgZGF5T2ZXZWVrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtaWxsaXMgPCAwCisgICAgICAgICAgICAgICAgfHwgbWlsbGlzID49IG1pbGxpc1BlckRheSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgbWlsbGlzICIgKyBtaWxsaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1vbnRoTGVuZ3RoIDwgMjgKKyAgICAgICAgICAgICAgICB8fCBtb250aExlbmd0aCA+IDMxKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCBtb250aCBsZW5ndGggIiArIG1vbnRoTGVuZ3RoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChwcmV2TW9udGhMZW5ndGggPCAyOAorICAgICAgICAgICAgICAgIHx8IHByZXZNb250aExlbmd0aCA+IDMxKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSWxsZWdhbCBwcmV2aW91cyBtb250aCBsZW5ndGggIiArIHByZXZNb250aExlbmd0aCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpbnQgcmVzdWx0ID0gcmF3T2Zmc2V0OworCisgICAgICAgIC8vIEJhaWwgb3V0IGlmIHdlIGFyZSBiZWZvcmUgdGhlIG9uc2V0IG9mIGRheWxpZ2h0IHNhdmluZ3MgdGltZQorICAgICAgICBpZiAoIXVzZURheWxpZ2h0IHx8IHllYXIgPCBzdGFydFllYXIgfHwgZXJhICE9IEdyZWdvcmlhbkNhbGVuZGFyLkFEKSByZXR1cm4gcmVzdWx0OworCisgICAgICAgIC8vIENoZWNrIGZvciBzb3V0aGVybiBoZW1pc3BoZXJlLiAgV2UgYXNzdW1lIHRoYXQgdGhlIHN0YXJ0IGFuZCBlbmQKKyAgICAgICAgLy8gbW9udGggYXJlIGRpZmZlcmVudC4KKyAgICAgICAgYm9vbGVhbiBzb3V0aGVybiA9IChzdGFydE1vbnRoID4gZW5kTW9udGgpOworCisgICAgICAgIC8vIENvbXBhcmUgdGhlIGRhdGUgdG8gdGhlIHN0YXJ0aW5nIGFuZCBlbmRpbmcgcnVsZXMuKzEgPSBkYXRlPnJ1bGUsIC0xCisgICAgICAgIC8vID0gZGF0ZTxydWxlLCAwID0gZGF0ZT09cnVsZS4KKyAgICAgICAgaW50IHN0YXJ0Q29tcGFyZSA9IGNvbXBhcmVUb1J1bGUobW9udGgsIG1vbnRoTGVuZ3RoLCBwcmV2TW9udGhMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRheSwgZGF5T2ZXZWVrLCBtaWxsaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZU1vZGUgPT0gVVRDX1RJTUUgPyAtcmF3T2Zmc2V0IDogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRNb2RlLCBzdGFydE1vbnRoLCBzdGFydERheU9mV2VlaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnREYXksIHN0YXJ0VGltZSk7CisgICAgICAgIGludCBlbmRDb21wYXJlID0gMDsKKworICAgICAgICAvKiBXZSBkb24ndCBhbHdheXMgaGF2ZSB0byBjb21wdXRlIGVuZENvbXBhcmUuICBGb3IgbWFueSBpbnN0YW5jZXMsCisgICAgICAgICAqIHN0YXJ0Q29tcGFyZSBpcyBlbm91Z2ggdG8gZGV0ZXJtaW5lIGlmIHdlIGFyZSBpbiBEU1Qgb3Igbm90LiAgSW4gdGhlCisgICAgICAgICAqIG5vcnRoZXJuIGhlbWlzcGhlcmUsIGlmIHdlIGFyZSBiZWZvcmUgdGhlIHN0YXJ0IHJ1bGUsIHdlIGNhbid0IGhhdmUKKyAgICAgICAgICogRFNULiAgSW4gdGhlIHNvdXRoZXJuIGhlbWlzcGhlcmUsIGlmIHdlIGFyZSBhZnRlciB0aGUgc3RhcnQgcnVsZSwgd2UKKyAgICAgICAgICogbXVzdCBoYXZlIERTVC4gIFRoaXMgaXMgcmVmbGVjdGVkIGluIHRoZSB3YXkgdGhlIG5leHQgaWYgc3RhdGVtZW50CisgICAgICAgICAqIChub3QgdGhlIG9uZSBpbW1lZGlhdGVseSBmb2xsb3dpbmcpIHNob3J0IGNpcmN1aXRzLiAqLworICAgICAgICBpZiAoc291dGhlcm4gIT0gKHN0YXJ0Q29tcGFyZSA+PSAwKSkgeworICAgICAgICAgICAgLyogRm9yIHRoZSBlbmRpbmcgcnVsZSBjb21wYXJpc29uLCB3ZSBhZGQgdGhlIGRzdFNhdmluZ3MgdG8gdGhlIG1pbGxpcworICAgICAgICAgICAgICogcGFzc2VkIGluIHRvIGNvbnZlcnQgdGhlbSBmcm9tIHN0YW5kYXJkIHRvIHdhbGwgdGltZS4gIFdlIHRoZW4gbXVzdAorICAgICAgICAgICAgICogbm9ybWFsaXplIHRoZSBtaWxsaXMgdG8gdGhlIHJhbmdlIDAuLm1pbGxpc1BlckRheS0xLiAqLworICAgICAgICAgICAgZW5kQ29tcGFyZSA9IGNvbXBhcmVUb1J1bGUobW9udGgsIG1vbnRoTGVuZ3RoLCBwcmV2TW9udGhMZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXksIGRheU9mV2VlaywgbWlsbGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kVGltZU1vZGUgPT0gV0FMTF9USU1FID8gZHN0U2F2aW5ncyA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVuZFRpbWVNb2RlID09IFVUQ19USU1FID8gLXJhd09mZnNldCA6IDApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kTW9kZSwgZW5kTW9udGgsIGVuZERheU9mV2VlaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZERheSwgZW5kVGltZSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDaGVjayBmb3IgYm90aCB0aGUgbm9ydGhlcm4gYW5kIHNvdXRoZXJuIGhlbWlzcGhlcmUgY2FzZXMuICBXZQorICAgICAgICAvLyBhc3N1bWUgdGhhdCBpbiB0aGUgbm9ydGhlcm4gaGVtaXNwaGVyZSwgdGhlIHN0YXJ0IHJ1bGUgaXMgYmVmb3JlIHRoZQorICAgICAgICAvLyBlbmQgcnVsZSB3aXRoaW4gdGhlIGNhbGVuZGFyIHllYXIsIGFuZCB2aWNlIHZlcnNhIGZvciB0aGUgc291dGhlcm4KKyAgICAgICAgLy8gaGVtaXNwaGVyZS4KKyAgICAgICAgaWYgKCghc291dGhlcm4gJiYgKHN0YXJ0Q29tcGFyZSA+PSAwICYmIGVuZENvbXBhcmUgPCAwKSkgfHwKKyAgICAgICAgICAgIChzb3V0aGVybiAmJiAoc3RhcnRDb21wYXJlID49IDAgfHwgZW5kQ29tcGFyZSA8IDApKSkKKyAgICAgICAgICAgIHJlc3VsdCArPSBkc3RTYXZpbmdzOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tcGFyZSBhIGdpdmVuIGRhdGUgaW4gdGhlIHllYXIgdG8gYSBydWxlLiBSZXR1cm4gMSwgMCwgb3IgLTEsIGRlcGVuZGluZworICAgICAqIG9uIHdoZXRoZXIgdGhlIGRhdGUgaXMgYWZ0ZXIsIGVxdWFsIHRvLCBvciBiZWZvcmUgdGhlIHJ1bGUgZGF0ZS4gVGhlCisgICAgICogbWlsbGlzIGFyZSBjb21wYXJlZCBkaXJlY3RseSBhZ2FpbnN0IHRoZSBydWxlTWlsbGlzLCBzbyBhbnkKKyAgICAgKiBzdGFuZGFyZC1kYXlsaWdodCBhZGp1c3RtZW50cyBtdXN0IGJlIGhhbmRsZWQgYnkgdGhlIGNhbGxlci4KKyAgICAgKgorICAgICAqIEByZXR1cm4gIDEgaWYgdGhlIGRhdGUgaXMgYWZ0ZXIgdGhlIHJ1bGUgZGF0ZSwgLTEgaWYgdGhlIGRhdGUgaXMgYmVmb3JlCisgICAgICogICAgICAgICAgdGhlIHJ1bGUgZGF0ZSwgb3IgMCBpZiB0aGUgZGF0ZSBpcyBlcXVhbCB0byB0aGUgcnVsZSBkYXRlLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGludCBjb21wYXJlVG9SdWxlKGludCBtb250aCwgaW50IG1vbnRoTGVuLCBpbnQgcHJldk1vbnRoTGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkYXlPZk1vbnRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBkYXlPZldlZWssIGludCBtaWxsaXMsIGludCBtaWxsaXNEZWx0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcnVsZU1vZGUsIGludCBydWxlTW9udGgsIGludCBydWxlRGF5T2ZXZWVrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBydWxlRGF5LCBpbnQgcnVsZU1pbGxpcykKKyAgICB7CisgICAgICAgIC8vIE1ha2UgYWRqdXN0bWVudHMgZm9yIHN0YXJ0VGltZU1vZGUgYW5kIGVuZFRpbWVNb2RlCisgICAgICAgIG1pbGxpcyArPSBtaWxsaXNEZWx0YTsKKyAgICAgICAgd2hpbGUgKG1pbGxpcyA+PSBtaWxsaXNQZXJEYXkpIHsKKyAgICAgICAgICAgIG1pbGxpcyAtPSBtaWxsaXNQZXJEYXk7CisgICAgICAgICAgICArK2RheU9mTW9udGg7CisgICAgICAgICAgICBkYXlPZldlZWsgPSAxICsgKGRheU9mV2VlayAlIDcpOyAvLyBkYXlPZldlZWsgaXMgb25lLWJhc2VkCisgICAgICAgICAgICBpZiAoZGF5T2ZNb250aCA+IG1vbnRoTGVuKSB7CisgICAgICAgICAgICAgICAgZGF5T2ZNb250aCA9IDE7CisgICAgICAgICAgICAgICAgLyogV2hlbiBpbmNyZW1lbnRpbmcgdGhlIG1vbnRoLCBpdCBpcyBkZXNpcmlibGUgdG8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICAgKiBmcm9tIERFQ0VNQkVSIHRvIERFQ0VNQkVSKzEsIHNpbmNlIHdlIHVzZSB0aGUgcmVzdWx0IHRvCisgICAgICAgICAgICAgICAgICogY29tcGFyZSBhZ2FpbnN0IGEgcmVhbCBtb250aC4gV3JhcGFyb3VuZCBvZiB0aGUgdmFsdWUKKyAgICAgICAgICAgICAgICAgKiBsZWFkcyB0byBidWcgNDE3MzYwNC4gKi8KKyAgICAgICAgICAgICAgICArK21vbnRoOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHdoaWxlIChtaWxsaXMgPCAwKSB7CisgICAgICAgICAgICBtaWxsaXMgKz0gbWlsbGlzUGVyRGF5OworICAgICAgICAgICAgLS1kYXlPZk1vbnRoOworICAgICAgICAgICAgZGF5T2ZXZWVrID0gMSArICgoZGF5T2ZXZWVrKzUpICUgNyk7IC8vIGRheU9mV2VlayBpcyBvbmUtYmFzZWQKKyAgICAgICAgICAgIGlmIChkYXlPZk1vbnRoIDwgMSkgeworICAgICAgICAgICAgICAgIGRheU9mTW9udGggPSBwcmV2TW9udGhMZW47CisgICAgICAgICAgICAgICAgLS1tb250aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG1vbnRoIDwgcnVsZU1vbnRoKSByZXR1cm4gLTE7CisgICAgICAgIGVsc2UgaWYgKG1vbnRoID4gcnVsZU1vbnRoKSByZXR1cm4gMTsKKworICAgICAgICBpbnQgcnVsZURheU9mTW9udGggPSAwOworICAgICAgICBzd2l0Y2ggKHJ1bGVNb2RlKQorICAgICAgICB7CisgICAgICAgIGNhc2UgRE9NX01PREU6CisgICAgICAgICAgICBydWxlRGF5T2ZNb250aCA9IHJ1bGVEYXk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBET1dfSU5fTU9OVEhfTU9ERToKKyAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSBydWxlRGF5IGlzIHRoZSBkYXktb2Ytd2Vlay1pbi1tb250aAorICAgICAgICAgICAgaWYgKHJ1bGVEYXkgPiAwKQorICAgICAgICAgICAgICAgIHJ1bGVEYXlPZk1vbnRoID0gMSArIChydWxlRGF5IC0gMSkgKiA3ICsKKyAgICAgICAgICAgICAgICAgICAgKDcgKyBydWxlRGF5T2ZXZWVrIC0gKGRheU9mV2VlayAtIGRheU9mTW9udGggKyAxKSkgJSA3OworICAgICAgICAgICAgZWxzZSAvLyBBc3N1bWUgcnVsZURheSA8IDAgaGVyZQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHJ1bGVEYXlPZk1vbnRoID0gbW9udGhMZW4gKyAocnVsZURheSArIDEpICogNyAtCisgICAgICAgICAgICAgICAgICAgICg3ICsgKGRheU9mV2VlayArIG1vbnRoTGVuIC0gZGF5T2ZNb250aCkgLSBydWxlRGF5T2ZXZWVrKSAlIDc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBET1dfR0VfRE9NX01PREU6CisgICAgICAgICAgICBydWxlRGF5T2ZNb250aCA9IHJ1bGVEYXkgKworICAgICAgICAgICAgICAgICg0OSArIHJ1bGVEYXlPZldlZWsgLSBydWxlRGF5IC0gZGF5T2ZXZWVrICsgZGF5T2ZNb250aCkgJSA3OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRE9XX0xFX0RPTV9NT0RFOgorICAgICAgICAgICAgcnVsZURheU9mTW9udGggPSBydWxlRGF5IC0KKyAgICAgICAgICAgICAgICAoNDkgLSBydWxlRGF5T2ZXZWVrICsgcnVsZURheSArIGRheU9mV2VlayAtIGRheU9mTW9udGgpICUgNzsKKyAgICAgICAgICAgIC8vIE5vdGUgYXQgdGhpcyBwb2ludCBydWxlRGF5T2ZNb250aCBtYXkgYmUgPDEsIGFsdGhvdWdoIGl0IHdpbGwKKyAgICAgICAgICAgIC8vIGJlID49MSBmb3Igd2VsbC1mb3JtZWQgcnVsZXMuCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkYXlPZk1vbnRoIDwgcnVsZURheU9mTW9udGgpIHJldHVybiAtMTsKKyAgICAgICAgZWxzZSBpZiAoZGF5T2ZNb250aCA+IHJ1bGVEYXlPZk1vbnRoKSByZXR1cm4gMTsKKworICAgICAgICBpZiAobWlsbGlzIDwgcnVsZU1pbGxpcykgcmV0dXJuIC0xOworICAgICAgICBlbHNlIGlmIChtaWxsaXMgPiBydWxlTWlsbGlzKSByZXR1cm4gMTsKKyAgICAgICAgZWxzZSByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgVGltZVpvbmUKKyAgICAgKiBHZXRzIHRoZSBHTVQgb2Zmc2V0IGZvciB0aGlzIHRpbWUgem9uZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFJhd09mZnNldCgpCisgICAgeworICAgICAgICAvLyBUaGUgZ2l2ZW4gZGF0ZSB3aWxsIGJlIHRha2VuIGludG8gYWNjb3VudCB3aGlsZQorICAgICAgICAvLyB3ZSBoYXZlIHRoZSBoaXN0b3JpY2FsIHRpbWUgem9uZSBkYXRhIGluIHBsYWNlLgorICAgICAgICByZXR1cm4gcmF3T2Zmc2V0OworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBUaW1lWm9uZQorICAgICAqIFNldHMgdGhlIGJhc2UgdGltZSB6b25lIG9mZnNldCB0byBHTVQuCisgICAgICogVGhpcyBpcyB0aGUgb2Zmc2V0IHRvIGFkZCAqdG8qIFVUQyB0byBnZXQgbG9jYWwgdGltZS4KKyAgICAgKiBQbGVhc2Ugc2VlIFRpbWVab25lLnNldFJhd09mZnNldCBmb3IgZGVzY3JpcHRpb25zIG9uIHRoZSBwYXJhbWV0ZXIuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0UmF3T2Zmc2V0KGludCBvZmZzZXRNaWxsaXMpCisgICAgeworICAgICAgICB0aGlzLnJhd09mZnNldCA9IG9mZnNldE1pbGxpczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBhbW91bnQgb2YgdGltZSBpbiBtcyB0aGF0IHRoZSBjbG9jayBpcyBhZHZhbmNlZCBkdXJpbmcgRFNULgorICAgICAqIEBwYXJhbSBtaWxsaXNTYXZlZER1cmluZ0RTVCB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGUgdGltZSBpcworICAgICAqIGFkdmFuY2VkIHdpdGggcmVzcGVjdCB0byBzdGFuZGFyZCB0aW1lIHdoZW4gdGhlIGRheWxpZ2h0IHNhdmluZ3MgcnVsZXMKKyAgICAgKiBhcmUgaW4gZWZmZWN0LiBBIHBvc2l0aXZlIG51bWJlciwgdHlwaWNhbGx5IG9uZSBob3VyICgzNjAwMDAwKS4KKyAgICAgKiBAc2luY2UgMS4yCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0RFNUU2F2aW5ncyhpbnQgbWlsbGlzU2F2ZWREdXJpbmdEU1QpIHsKKyAgICAgICAgaWYgKG1pbGxpc1NhdmVkRHVyaW5nRFNUIDw9IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIklsbGVnYWwgRFNUIHNhdmluZ3MiKTsKKyAgICAgICAgfQorICAgICAgICBkc3RTYXZpbmdzID0gbWlsbGlzU2F2ZWREdXJpbmdEU1Q7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgYW1vdW50IG9mIHRpbWUgaW4gbXMgdGhhdCB0aGUgY2xvY2sgaXMgYWR2YW5jZWQgZHVyaW5nIERTVC4KKyAgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRoZSB0aW1lIGlzCisgICAgICogYWR2YW5jZWQgd2l0aCByZXNwZWN0IHRvIHN0YW5kYXJkIHRpbWUgd2hlbiB0aGUgZGF5bGlnaHQgc2F2aW5ncyBydWxlcworICAgICAqIGFyZSBpbiBlZmZlY3QuIEEgcG9zaXRpdmUgbnVtYmVyLCB0eXBpY2FsbHkgb25lIGhvdXIgKDM2MDAwMDApLgorICAgICAqIEBzaW5jZSAxLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldERTVFNhdmluZ3MoKSB7CisgICAgICAgIHJldHVybiBkc3RTYXZpbmdzOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBUaW1lWm9uZQorICAgICAqIFF1ZXJpZXMgaWYgdGhpcyB0aW1lIHpvbmUgdXNlcyBEYXlsaWdodCBTYXZpbmdzIFRpbWUuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gdXNlRGF5bGlnaHRUaW1lKCkKKyAgICB7CisgICAgICAgIHJldHVybiB1c2VEYXlsaWdodDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgVGltZVpvbmUKKyAgICAgKiBRdWVyaWVzIGlmIHRoZSBnaXZlbiBkYXRlIGlzIGluIERheWxpZ2h0IFNhdmluZ3MgVGltZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpbkRheWxpZ2h0VGltZShEYXRlIGRhdGUpCisgICAgeworICAgICAgICBHcmVnb3JpYW5DYWxlbmRhciBnYyA9IG5ldyBHcmVnb3JpYW5DYWxlbmRhcih0aGlzKTsKKyAgICAgICAgZ2Muc2V0VGltZShkYXRlKTsKKyAgICAgICAgcmV0dXJuIGdjLmluRGF5bGlnaHRUaW1lKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIENsb25lYWJsZQorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN1cGVyLmNsb25lKCk7CisgICAgICAgIC8vIG90aGVyIGZpZWxkcyBhcmUgYml0LWNvcGllZAorICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlIGhhc2hDb2RlLgorICAgICAqIEdlbmVyYXRlcyB0aGUgaGFzaCBjb2RlIGZvciB0aGUgU2ltcGxlRGF0ZUZvcm1hdCBvYmplY3QKKyAgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGludCBoYXNoQ29kZSgpCisgICAgeworICAgICAgICByZXR1cm4gc3RhcnRNb250aCBeIHN0YXJ0RGF5IF4gc3RhcnREYXlPZldlZWsgXiBzdGFydFRpbWUgXgorICAgICAgICAgICAgZW5kTW9udGggXiBlbmREYXkgXiBlbmREYXlPZldlZWsgXiBlbmRUaW1lIF4gcmF3T2Zmc2V0OworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBhcmVzIHRoZSBlcXVhbGl0eSBvZiB0d28gU2ltcGxlVGltZVpvbmUgb2JqZWN0cy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBvYmogIFRoZSBTaW1wbGVUaW1lWm9uZSBvYmplY3QgdG8gYmUgY29tcGFyZWQgd2l0aC4KKyAgICAgKiBAcmV0dXJuICAgICBUcnVlIGlmIHRoZSBnaXZlbiBvYmogaXMgdGhlIHNhbWUgYXMgdGhpcyBTaW1wbGVUaW1lWm9uZQorICAgICAqICAgICAgICAgICAgIG9iamVjdDsgZmFsc2Ugb3RoZXJ3aXNlLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMgPT0gb2JqKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGlmICghKG9iaiBpbnN0YW5jZW9mIFNpbXBsZVRpbWVab25lKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBTaW1wbGVUaW1lWm9uZSB0aGF0ID0gKFNpbXBsZVRpbWVab25lKSBvYmo7CisKKyAgICAgICAgcmV0dXJuIGdldElEKCkuZXF1YWxzKHRoYXQuZ2V0SUQoKSkgJiYKKyAgICAgICAgICAgIGhhc1NhbWVSdWxlcyh0aGF0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB0aGlzIHpvbmUgaGFzIHRoZSBzYW1lIHJ1bGVzIGFuZCBvZmZzZXQgYXMgYW5vdGhlciB6b25lLgorICAgICAqIEBwYXJhbSBvdGhlciB0aGUgVGltZVpvbmUgb2JqZWN0IHRvIGJlIGNvbXBhcmVkIHdpdGgKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIHpvbmUgaGFzIHRoZSBzYW1lIHJ1bGVzIGFuZCBvZmZzZXQgYXMgdGhpcyBvbmUKKyAgICAgKiBAc2luY2UgMS4yCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaGFzU2FtZVJ1bGVzKFRpbWVab25lIG90aGVyKSB7CisgICAgICAgIGlmICh0aGlzID09IG90aGVyKSByZXR1cm4gdHJ1ZTsKKyAgICAgICAgaWYgKCEob3RoZXIgaW5zdGFuY2VvZiBTaW1wbGVUaW1lWm9uZSkpIHJldHVybiBmYWxzZTsKKyAgICAgICAgU2ltcGxlVGltZVpvbmUgdGhhdCA9IChTaW1wbGVUaW1lWm9uZSkgb3RoZXI7CisgICAgICAgIHJldHVybiByYXdPZmZzZXQgPT0gdGhhdC5yYXdPZmZzZXQgJiYKKyAgICAgICAgICAgIHVzZURheWxpZ2h0ID09IHRoYXQudXNlRGF5bGlnaHQgJiYKKyAgICAgICAgICAgICghdXNlRGF5bGlnaHQKKyAgICAgICAgICAgICAvLyBPbmx5IGNoZWNrIHJ1bGVzIGlmIHVzaW5nIERTVAorICAgICAgICAgICAgIHx8IChkc3RTYXZpbmdzID09IHRoYXQuZHN0U2F2aW5ncyAmJgorICAgICAgICAgICAgICAgICBzdGFydE1vZGUgPT0gdGhhdC5zdGFydE1vZGUgJiYKKyAgICAgICAgICAgICAgICAgc3RhcnRNb250aCA9PSB0aGF0LnN0YXJ0TW9udGggJiYKKyAgICAgICAgICAgICAgICAgc3RhcnREYXkgPT0gdGhhdC5zdGFydERheSAmJgorICAgICAgICAgICAgICAgICBzdGFydERheU9mV2VlayA9PSB0aGF0LnN0YXJ0RGF5T2ZXZWVrICYmCisgICAgICAgICAgICAgICAgIHN0YXJ0VGltZSA9PSB0aGF0LnN0YXJ0VGltZSAmJgorICAgICAgICAgICAgICAgICBzdGFydFRpbWVNb2RlID09IHRoYXQuc3RhcnRUaW1lTW9kZSAmJgorICAgICAgICAgICAgICAgICBlbmRNb2RlID09IHRoYXQuZW5kTW9kZSAmJgorICAgICAgICAgICAgICAgICBlbmRNb250aCA9PSB0aGF0LmVuZE1vbnRoICYmCisgICAgICAgICAgICAgICAgIGVuZERheSA9PSB0aGF0LmVuZERheSAmJgorICAgICAgICAgICAgICAgICBlbmREYXlPZldlZWsgPT0gdGhhdC5lbmREYXlPZldlZWsgJiYKKyAgICAgICAgICAgICAgICAgZW5kVGltZSA9PSB0aGF0LmVuZFRpbWUgJiYKKyAgICAgICAgICAgICAgICAgZW5kVGltZU1vZGUgPT0gdGhhdC5lbmRUaW1lTW9kZSAmJgorICAgICAgICAgICAgICAgICBzdGFydFllYXIgPT0gdGhhdC5zdGFydFllYXIpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB0aW1lIHpvbmUuCisgICAgICogQHJldHVybiAgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB0aW1lIHpvbmUuCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIGdldENsYXNzKCkuZ2V0TmFtZSgpICsKKyAgICAgICAgICAgICJbaWQ9IiArIGdldElEKCkgKworICAgICAgICAgICAgIixvZmZzZXQ9IiArIHJhd09mZnNldCArCisgICAgICAgICAgICAiLGRzdFNhdmluZ3M9IiArIGRzdFNhdmluZ3MgKworICAgICAgICAgICAgIix1c2VEYXlsaWdodD0iICsgdXNlRGF5bGlnaHQgKworICAgICAgICAgICAgIixzdGFydFllYXI9IiArIHN0YXJ0WWVhciArCisgICAgICAgICAgICAiLHN0YXJ0TW9kZT0iICsgc3RhcnRNb2RlICsKKyAgICAgICAgICAgICIsc3RhcnRNb250aD0iICsgc3RhcnRNb250aCArCisgICAgICAgICAgICAiLHN0YXJ0RGF5PSIgKyBzdGFydERheSArCisgICAgICAgICAgICAiLHN0YXJ0RGF5T2ZXZWVrPSIgKyBzdGFydERheU9mV2VlayArCisgICAgICAgICAgICAiLHN0YXJ0VGltZT0iICsgc3RhcnRUaW1lICsKKyAgICAgICAgICAgICIsc3RhcnRUaW1lTW9kZT0iICsgc3RhcnRUaW1lTW9kZSArCisgICAgICAgICAgICAiLGVuZE1vZGU9IiArIGVuZE1vZGUgKworICAgICAgICAgICAgIixlbmRNb250aD0iICsgZW5kTW9udGggKworICAgICAgICAgICAgIixlbmREYXk9IiArIGVuZERheSArCisgICAgICAgICAgICAiLGVuZERheU9mV2Vlaz0iICsgZW5kRGF5T2ZXZWVrICsKKyAgICAgICAgICAgICIsZW5kVGltZT0iICsgZW5kVGltZSArCisgICAgICAgICAgICAiLGVuZFRpbWVNb2RlPSIgKyBlbmRUaW1lTW9kZSArICddJzsKKyAgICB9CisKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PXByaXZhdGVzPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgLyoqCisgICAgICogVGhlIG1vbnRoIGluIHdoaWNoIGRheWxpZ2h0IHNhdmluZ3MgdGltZSBzdGFydHMuICBUaGlzIHZhbHVlIG11c3QgYmUKKyAgICAgKiBiZXR3ZWVuIDxjb2RlPkNhbGVuZGFyLkpBTlVBUlk8L2NvZGU+IGFuZAorICAgICAqIDxjb2RlPkNhbGVuZGFyLkRFQ0VNQkVSPC9jb2RlPiBpbmNsdXNpdmUuICBUaGlzIHZhbHVlIG11c3Qgbm90IGVxdWFsCisgICAgICogPGNvZGU+ZW5kTW9udGg8L2NvZGU+LgorICAgICAqIDxwPklmIDxjb2RlPnVzZURheWxpZ2h0PC9jb2RlPiBpcyBmYWxzZSwgdGhpcyB2YWx1ZSBpcyBpZ25vcmVkLgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBzdGFydE1vbnRoOworCisgICAgLyoqCisgICAgICogVGhpcyBmaWVsZCBoYXMgdHdvIHBvc3NpYmxlIGludGVycHJldGF0aW9uczoKKyAgICAgKiA8ZGw+CisgICAgICogPGR0Pjxjb2RlPnN0YXJ0TW9kZSA9PSBET1dfSU5fTU9OVEg8L2NvZGU+PC9kdD4KKyAgICAgKiA8ZGQ+CisgICAgICogPGNvZGU+c3RhcnREYXk8L2NvZGU+IGluZGljYXRlcyB0aGUgZGF5IG9mIHRoZSBtb250aCBvZgorICAgICAqIDxjb2RlPnN0YXJ0TW9udGg8L2NvZGU+IG9uIHdoaWNoIGRheWxpZ2h0CisgICAgICogc2F2aW5ncyB0aW1lIHN0YXJ0cywgZnJvbSAxIHRvIDI4LCAzMCwgb3IgMzEsIGRlcGVuZGluZyBvbiB0aGUKKyAgICAgKiA8Y29kZT5zdGFydE1vbnRoPC9jb2RlPi4KKyAgICAgKiA8L2RkPgorICAgICAqIDxkdD48Y29kZT5zdGFydE1vZGUgIT0gRE9XX0lOX01PTlRIPC9jb2RlPjwvZHQ+CisgICAgICogPGRkPgorICAgICAqIDxjb2RlPnN0YXJ0RGF5PC9jb2RlPiBpbmRpY2F0ZXMgd2hpY2ggPGNvZGU+c3RhcnREYXlPZldlZWs8L2NvZGU+IGluIHRoCisgICAgICogbW9udGggPGNvZGU+c3RhcnRNb250aDwvY29kZT4gZGF5bGlnaHQKKyAgICAgKiBzYXZpbmdzIHRpbWUgc3RhcnRzIG9uLiAgRm9yIGV4YW1wbGUsIGEgdmFsdWUgb2YgKzEgYW5kIGEKKyAgICAgKiA8Y29kZT5zdGFydERheU9mV2VlazwvY29kZT4gb2YgPGNvZGU+Q2FsZW5kYXIuU1VOREFZPC9jb2RlPiBpbmRpY2F0ZXMgdGhlCisgICAgICogZmlyc3QgU3VuZGF5IG9mIDxjb2RlPnN0YXJ0TW9udGg8L2NvZGU+LiAgTGlrZXdpc2UsICsyIHdvdWxkIGluZGljYXRlIHRoZQorICAgICAqIHNlY29uZCBTdW5kYXksIGFuZCAtMSB0aGUgbGFzdCBTdW5kYXkuICBBIHZhbHVlIG9mIDAgaXMgaWxsZWdhbC4KKyAgICAgKiA8L2RkPgorICAgICAqIDwvdWw+CisgICAgICogPHA+SWYgPGNvZGU+dXNlRGF5bGlnaHQ8L2NvZGU+IGlzIGZhbHNlLCB0aGlzIHZhbHVlIGlzIGlnbm9yZWQuCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgaW50IHN0YXJ0RGF5OworCisgICAgLyoqCisgICAgICogVGhlIGRheSBvZiB0aGUgd2VlayBvbiB3aGljaCBkYXlsaWdodCBzYXZpbmdzIHRpbWUgc3RhcnRzLiAgVGhpcyB2YWx1ZQorICAgICAqIG11c3QgYmUgYmV0d2VlbiA8Y29kZT5DYWxlbmRhci5TVU5EQVk8L2NvZGU+IGFuZAorICAgICAqIDxjb2RlPkNhbGVuZGFyLlNBVFVSREFZPC9jb2RlPiBpbmNsdXNpdmUuCisgICAgICogPHA+SWYgPGNvZGU+dXNlRGF5bGlnaHQ8L2NvZGU+IGlzIGZhbHNlIG9yCisgICAgICogPGNvZGU+c3RhcnRNb2RlID09IERBWV9PRl9NT05USDwvY29kZT4sIHRoaXMgdmFsdWUgaXMgaWdub3JlZC4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgc3RhcnREYXlPZldlZWs7CisKKyAgICAvKioKKyAgICAgKiBUaGUgdGltZSBpbiBtaWxsaXNlY29uZHMgYWZ0ZXIgbWlkbmlnaHQgYXQgd2hpY2ggZGF5bGlnaHQgc2F2aW5ncworICAgICAqIHRpbWUgc3RhcnRzLiAgVGhpcyB2YWx1ZSBpcyBleHByZXNzZWQgYXMgd2FsbCB0aW1lLCBzdGFuZGFyZCB0aW1lLAorICAgICAqIG9yIFVUQyB0aW1lLCBkZXBlbmRpbmcgb24gdGhlIHNldHRpbmcgb2YgPGNvZGU+c3RhcnRUaW1lTW9kZTwvY29kZT4uCisgICAgICogPHA+SWYgPGNvZGU+dXNlRGF5bGlnaHQ8L2NvZGU+IGlzIGZhbHNlLCB0aGlzIHZhbHVlIGlzIGlnbm9yZWQuCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgaW50IHN0YXJ0VGltZTsKKworICAgIC8qKgorICAgICAqIFRoZSBmb3JtYXQgb2Ygc3RhcnRUaW1lLCBlaXRoZXIgV0FMTF9USU1FLCBTVEFOREFSRF9USU1FLCBvciBVVENfVElNRS4KKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNpbmNlIEpESyAxLjMKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBzdGFydFRpbWVNb2RlOworCisgICAgLyoqCisgICAgICogVGhlIG1vbnRoIGluIHdoaWNoIGRheWxpZ2h0IHNhdmluZ3MgdGltZSBlbmRzLiAgVGhpcyB2YWx1ZSBtdXN0IGJlCisgICAgICogYmV0d2VlbiA8Y29kZT5DYWxlbmRhci5KQU5VQVJZPC9jb2RlPiBhbmQKKyAgICAgKiA8Y29kZT5DYWxlbmRhci5VTkRFQ0lNQkVSPC9jb2RlPi4gIFRoaXMgdmFsdWUgbXVzdCBub3QgZXF1YWwKKyAgICAgKiA8Y29kZT5zdGFydE1vbnRoPC9jb2RlPi4KKyAgICAgKiA8cD5JZiA8Y29kZT51c2VEYXlsaWdodDwvY29kZT4gaXMgZmFsc2UsIHRoaXMgdmFsdWUgaXMgaWdub3JlZC4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZW5kTW9udGg7CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGZpZWxkIGhhcyB0d28gcG9zc2libGUgaW50ZXJwcmV0YXRpb25zOgorICAgICAqIDxkbD4KKyAgICAgKiA8ZHQ+PGNvZGU+ZW5kTW9kZSA9PSBET1dfSU5fTU9OVEg8L2NvZGU+PC9kdD4KKyAgICAgKiA8ZGQ+CisgICAgICogPGNvZGU+ZW5kRGF5PC9jb2RlPiBpbmRpY2F0ZXMgdGhlIGRheSBvZiB0aGUgbW9udGggb2YKKyAgICAgKiA8Y29kZT5lbmRNb250aDwvY29kZT4gb24gd2hpY2ggZGF5bGlnaHQKKyAgICAgKiBzYXZpbmdzIHRpbWUgZW5kcywgZnJvbSAxIHRvIDI4LCAzMCwgb3IgMzEsIGRlcGVuZGluZyBvbiB0aGUKKyAgICAgKiA8Y29kZT5lbmRNb250aDwvY29kZT4uCisgICAgICogPC9kZD4KKyAgICAgKiA8ZHQ+PGNvZGU+ZW5kTW9kZSAhPSBET1dfSU5fTU9OVEg8L2NvZGU+PC9kdD4KKyAgICAgKiA8ZGQ+CisgICAgICogPGNvZGU+ZW5kRGF5PC9jb2RlPiBpbmRpY2F0ZXMgd2hpY2ggPGNvZGU+ZW5kRGF5T2ZXZWVrPC9jb2RlPiBpbiB0aAorICAgICAqIG1vbnRoIDxjb2RlPmVuZE1vbnRoPC9jb2RlPiBkYXlsaWdodAorICAgICAqIHNhdmluZ3MgdGltZSBlbmRzIG9uLiAgRm9yIGV4YW1wbGUsIGEgdmFsdWUgb2YgKzEgYW5kIGEKKyAgICAgKiA8Y29kZT5lbmREYXlPZldlZWs8L2NvZGU+IG9mIDxjb2RlPkNhbGVuZGFyLlNVTkRBWTwvY29kZT4gaW5kaWNhdGVzIHRoZQorICAgICAqIGZpcnN0IFN1bmRheSBvZiA8Y29kZT5lbmRNb250aDwvY29kZT4uICBMaWtld2lzZSwgKzIgd291bGQgaW5kaWNhdGUgdGhlCisgICAgICogc2Vjb25kIFN1bmRheSwgYW5kIC0xIHRoZSBsYXN0IFN1bmRheS4gIEEgdmFsdWUgb2YgMCBpcyBpbGxlZ2FsLgorICAgICAqIDwvZGQ+CisgICAgICogPC91bD4KKyAgICAgKiA8cD5JZiA8Y29kZT51c2VEYXlsaWdodDwvY29kZT4gaXMgZmFsc2UsIHRoaXMgdmFsdWUgaXMgaWdub3JlZC4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZW5kRGF5OworCisgICAgLyoqCisgICAgICogVGhlIGRheSBvZiB0aGUgd2VlayBvbiB3aGljaCBkYXlsaWdodCBzYXZpbmdzIHRpbWUgZW5kcy4gIFRoaXMgdmFsdWUKKyAgICAgKiBtdXN0IGJlIGJldHdlZW4gPGNvZGU+Q2FsZW5kYXIuU1VOREFZPC9jb2RlPiBhbmQKKyAgICAgKiA8Y29kZT5DYWxlbmRhci5TQVRVUkRBWTwvY29kZT4gaW5jbHVzaXZlLgorICAgICAqIDxwPklmIDxjb2RlPnVzZURheWxpZ2h0PC9jb2RlPiBpcyBmYWxzZSBvcgorICAgICAqIDxjb2RlPmVuZE1vZGUgPT0gREFZX09GX01PTlRIPC9jb2RlPiwgdGhpcyB2YWx1ZSBpcyBpZ25vcmVkLgorICAgICAqIEBzZXJpYWwKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBlbmREYXlPZldlZWs7CisKKyAgICAvKioKKyAgICAgKiBUaGUgdGltZSBpbiBtaWxsaXNlY29uZHMgYWZ0ZXIgbWlkbmlnaHQgYXQgd2hpY2ggZGF5bGlnaHQgc2F2aW5ncworICAgICAqIHRpbWUgZW5kcy4gIFRoaXMgdmFsdWUgaXMgZXhwcmVzc2VkIGFzIHdhbGwgdGltZSwgc3RhbmRhcmQgdGltZSwKKyAgICAgKiBvciBVVEMgdGltZSwgZGVwZW5kaW5nIG9uIHRoZSBzZXR0aW5nIG9mIDxjb2RlPmVuZFRpbWVNb2RlPC9jb2RlPi4KKyAgICAgKiA8cD5JZiA8Y29kZT51c2VEYXlsaWdodDwvY29kZT4gaXMgZmFsc2UsIHRoaXMgdmFsdWUgaXMgaWdub3JlZC4KKyAgICAgKiBAc2VyaWFsCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZW5kVGltZTsKKworICAgIC8qKgorICAgICAqIFRoZSBmb3JtYXQgb2YgZW5kVGltZSwgZWl0aGVyIFdBTExfVElNRSwgU1RBTkRBUkRfVElNRSwgb3IgVVRDX1RJTUUuCisgICAgICogQHNlcmlhbAorICAgICAqIEBzaW5jZSBKREsgMS4zCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZW5kVGltZU1vZGU7CisKKyAgICAvKioKKyAgICAgKiBUaGUgeWVhciBpbiB3aGljaCBkYXlsaWdodCBzYXZpbmdzIHRpbWUgaXMgZmlyc3Qgb2JzZXJ2ZWQuICBUaGlzIGlzIGFuIEFECisgICAgICogdmFsdWUuICBJZiB0aGlzIHZhbHVlIGlzIGxlc3MgdGhhbiAxIHRoZW4gZGF5bGlnaHQgc2F2aW5ncyBpcyBvYnNlcnZlZAorICAgICAqIGZvciBhbGwgQUQgeWVhcnMuCisgICAgICogPHA+SWYgPGNvZGU+dXNlRGF5bGlnaHQ8L2NvZGU+IGlzIGZhbHNlLCB0aGlzIHZhbHVlIGlzIGlnbm9yZWQuCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgaW50IHN0YXJ0WWVhcjsKKworICAgIC8qKgorICAgICAqIFRoZSBvZmZzZXQgaW4gbWlsbGlzZWNvbmRzIGJldHdlZW4gdGhpcyB6b25lIGFuZCBHTVQuICBOZWdhdGl2ZSBvZmZzZXRzCisgICAgICogYXJlIHRvIHRoZSB3ZXN0IG9mIEdyZWVud2ljaC4gIFRvIG9idGFpbiBsb2NhbCA8ZW0+c3RhbmRhcmQ8L2VtPiB0aW1lLAorICAgICAqIGFkZCB0aGUgb2Zmc2V0IHRvIEdNVCB0aW1lLiAgVG8gb2J0YWluIGxvY2FsIHdhbGwgdGltZSBpdCBtYXkgYWxzbyBiZQorICAgICAqIG5lY2Vzc2FyeSB0byBhZGQgPGNvZGU+ZHN0U2F2aW5nczwvY29kZT4uCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgaW50IHJhd09mZnNldDsKKworICAgIC8qKgorICAgICAqIEEgYm9vbGVhbiB2YWx1ZSB3aGljaCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoaXMgem9uZSB1c2VzIGRheWxpZ2h0CisgICAgICogc2F2aW5ncyB0aW1lLiAgSWYgdGhpcyB2YWx1ZSBpcyBmYWxzZSwgc2V2ZXJhbCBvdGhlciBmaWVsZHMgYXJlIGlnbm9yZWQuCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiB1c2VEYXlsaWdodD1mYWxzZTsgLy8gaW5kaWNhdGUgaWYgdGhpcyB0aW1lIHpvbmUgdXNlcyBEU1QKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBtaWxsaXNQZXJIb3VyID0gNjAqNjAqMTAwMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgbWlsbGlzUGVyRGF5ICA9IDI0Km1pbGxpc1BlckhvdXI7CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGZpZWxkIHdhcyBzZXJpYWxpemVkIGluIEpESyAxLjEsIHNvIHdlIGhhdmUgdG8ga2VlcCBpdCB0aGF0IHdheQorICAgICAqIHRvIG1haW50YWluIHNlcmlhbGl6YXRpb24gY29tcGF0aWJpbGl0eS4gSG93ZXZlciwgdGhlcmUncyBubyBuZWVkIHRvCisgICAgICogcmVjcmVhdGUgdGhlIGFycmF5IGVhY2ggdGltZSB3ZSBjcmVhdGUgYSBuZXcgdGltZSB6b25lLgorICAgICAqIEBzZXJpYWwgQW4gYXJyYXkgb2YgYnl0ZXMgY29udGFpbmluZyB0aGUgdmFsdWVzIHszMSwgMjgsIDMxLCAzMCwgMzEsIDMwLAorICAgICAqIDMxLCAzMSwgMzAsIDMxLCAzMCwgMzF9LiAgVGhpcyBpcyBpZ25vcmVkIGFzIG9mIHRoZSBKYXZhIDIgcGxhdGZvcm0gdjEuMiwgaG93ZXZlciwgaXQgbXVzdAorICAgICAqIGJlIHN0cmVhbWVkIG91dCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIEpESyAxLjEuCisgICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCBieXRlIG1vbnRoTGVuZ3RoW10gPSBzdGF0aWNNb250aExlbmd0aDsKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBieXRlIHN0YXRpY01vbnRoTGVuZ3RoW10gPSB7MzEsMjgsMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzF9OworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGJ5dGUgc3RhdGljTGVhcE1vbnRoTGVuZ3RoW10gPSB7MzEsMjksMzEsMzAsMzEsMzAsMzEsMzEsMzAsMzEsMzAsMzF9OworICAgIC8vIEhhY2s6IFVzZSB0aGUgeS9tL2QgY29uc3RydWN0b3IgaW4gdGhlIGZvbGxvd2luZyBsaW5lLgorICAgIC8vIFRoaXMgcHJldmVudHMgdGhlIGluZmluaXRlIHJlY3Vyc2lvbiB0aGF0IHJlc3VsdHMgd2hlbgorICAgIC8vIHRoZSBHQyB3YW50cyB0byBjYWxsIFNUWi5nZXRPZmZzZXQuIC0gbGl1CisgICAgcHJpdmF0ZSBzdGF0aWMgR3JlZ29yaWFuQ2FsZW5kYXIgaW50ZXJuYWxDYWwgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoMCwgMCwgMCk7CisKKyAgICAvKioKKyAgICAgKiBWYXJpYWJsZXMgc3BlY2lmeWluZyB0aGUgbW9kZSBvZiB0aGUgc3RhcnQgcnVsZS4gIFRha2VzIHRoZSBmb2xsb3dpbmcKKyAgICAgKiB2YWx1ZXM6CisgICAgICogPGRsPgorICAgICAqIDxkdD48Y29kZT5ET01fTU9ERTwvY29kZT48L2R0PgorICAgICAqIDxkZD4KKyAgICAgKiBFeGFjdCBkYXkgb2Ygd2VlazsgZS5nLiwgTWFyY2ggMS4KKyAgICAgKiA8L2RkPgorICAgICAqIDxkdD48Y29kZT5ET1dfSU5fTU9OVEhfTU9ERTwvY29kZT48L2R0PiAgICAKKyAgICAgKiA8ZGQ+CisgICAgICogRGF5IG9mIHdlZWsgaW4gbW9udGg7IGUuZy4sIGxhc3QgU3VuZGF5IGluIE1hcmNoLgorICAgICAqIDwvZGQ+CisgICAgICogPGR0Pjxjb2RlPkRPV19HRV9ET01fTU9ERTwvY29kZT48L2R0PgorICAgICAqIDxkZD4KKyAgICAgKiBEYXkgb2Ygd2VlayBhZnRlciBkYXkgb2YgbW9udGg7IGUuZy4sIFN1bmRheSBvbiBvciBhZnRlciBNYXJjaCAxNS4KKyAgICAgKiA8L2RkPgorICAgICAqIDxkdD48Y29kZT5ET1dfTEVfRE9NX01PREU8L2NvZGU+PC9kdD4KKyAgICAgKiA8ZGQ+CisgICAgICogRGF5IG9mIHdlZWsgYmVmb3JlIGRheSBvZiBtb250aDsgZS5nLiwgU3VuZGF5IG9uIG9yIGJlZm9yZSBNYXJjaCAxNS4KKyAgICAgKiA8L2RkPgorICAgICAqIDwvZGw+CisgICAgICogVGhlIHNldHRpbmcgb2YgdGhpcyBmaWVsZCBhZmZlY3RzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUKKyAgICAgKiA8Y29kZT5zdGFydERheTwvY29kZT4gZmllbGQuCisgICAgICogPHA+SWYgPGNvZGU+dXNlRGF5bGlnaHQ8L2NvZGU+IGlzIGZhbHNlLCB0aGlzIHZhbHVlIGlzIGlnbm9yZWQuCisgICAgICogQHNlcmlhbAorICAgICAqIEBzaW5jZSBKREsxLjEuNAorICAgICAqLworICAgIHByaXZhdGUgaW50IHN0YXJ0TW9kZTsKKworICAgIC8qKgorICAgICAqIFZhcmlhYmxlcyBzcGVjaWZ5aW5nIHRoZSBtb2RlIG9mIHRoZSBlbmQgcnVsZS4gIFRha2VzIHRoZSBmb2xsb3dpbmcKKyAgICAgKiB2YWx1ZXM6CisgICAgICogPGRsPgorICAgICAqIDxkdD48Y29kZT5ET01fTU9ERTwvY29kZT48L2R0PgorICAgICAqIDxkZD4KKyAgICAgKiBFeGFjdCBkYXkgb2Ygd2VlazsgZS5nLiwgTWFyY2ggMS4KKyAgICAgKiA8L2RkPgorICAgICAqIDxkdD48Y29kZT5ET1dfSU5fTU9OVEhfTU9ERTwvY29kZT48L2R0PiAgICAKKyAgICAgKiA8ZGQ+CisgICAgICogRGF5IG9mIHdlZWsgaW4gbW9udGg7IGUuZy4sIGxhc3QgU3VuZGF5IGluIE1hcmNoLgorICAgICAqIDwvZGQ+CisgICAgICogPGR0Pjxjb2RlPkRPV19HRV9ET01fTU9ERTwvY29kZT48L2R0PgorICAgICAqIDxkZD4KKyAgICAgKiBEYXkgb2Ygd2VlayBhZnRlciBkYXkgb2YgbW9udGg7IGUuZy4sIFN1bmRheSBvbiBvciBhZnRlciBNYXJjaCAxNS4KKyAgICAgKiA8L2RkPgorICAgICAqIDxkdD48Y29kZT5ET1dfTEVfRE9NX01PREU8L2NvZGU+PC9kdD4KKyAgICAgKiA8ZGQ+CisgICAgICogRGF5IG9mIHdlZWsgYmVmb3JlIGRheSBvZiBtb250aDsgZS5nLiwgU3VuZGF5IG9uIG9yIGJlZm9yZSBNYXJjaCAxNS4KKyAgICAgKiA8L2RkPgorICAgICAqIDwvZGw+CisgICAgICogVGhlIHNldHRpbmcgb2YgdGhpcyBmaWVsZCBhZmZlY3RzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUKKyAgICAgKiA8Y29kZT5lbmREYXk8L2NvZGU+IGZpZWxkLgorICAgICAqIDxwPklmIDxjb2RlPnVzZURheWxpZ2h0PC9jb2RlPiBpcyBmYWxzZSwgdGhpcyB2YWx1ZSBpcyBpZ25vcmVkLgorICAgICAqIEBzZXJpYWwKKyAgICAgKiBAc2luY2UgSkRLMS4xLjQKKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBlbmRNb2RlOworCisgICAgLyoqCisgICAgICogQSBwb3NpdGl2ZSB2YWx1ZSBpbmRpY2F0aW5nIHRoZSBhbW91bnQgb2YgdGltZSBzYXZlZCBkdXJpbmcgRFNUIGluCisgICAgICogbWlsbGlzZWNvbmRzLgorICAgICAqIFR5cGljYWxseSBvbmUgaG91ciAoMzYwMDAwMCk7IHNvbWV0aW1lcyAzMCBtaW51dGVzICgxODAwMDAwKS4KKyAgICAgKiA8cD5JZiA8Y29kZT51c2VEYXlsaWdodDwvY29kZT4gaXMgZmFsc2UsIHRoaXMgdmFsdWUgaXMgaWdub3JlZC4KKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNpbmNlIEpESzEuMS40CisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZHN0U2F2aW5nczsKKworICAgIC8qKgorICAgICAqIENvbnN0YW50cyBzcGVjaWZ5aW5nIHZhbHVlcyBvZiBzdGFydE1vZGUgYW5kIGVuZE1vZGUuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERPTV9NT0RFICAgICAgICAgID0gMTsgLy8gRXhhY3QgZGF5IG9mIG1vbnRoLCAiTWFyIDEiCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERPV19JTl9NT05USF9NT0RFID0gMjsgLy8gRGF5IG9mIHdlZWsgaW4gbW9udGgsICJsYXN0U3VuIgorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBET1dfR0VfRE9NX01PREUgICA9IDM7IC8vIERheSBvZiB3ZWVrIGFmdGVyIGRheSBvZiBtb250aCwgIlN1bj49MTUiCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERPV19MRV9ET01fTU9ERSAgID0gNDsgLy8gRGF5IG9mIHdlZWsgYmVmb3JlIGRheSBvZiBtb250aCwgIlN1bjw9MjEiCisKKyAgICAvKioKKyAgICAgKiBDb25zdGFudCBmb3IgYSBydWxlIHNwZWNpZmllZCBhcyB3YWxsIHRpbWUuICBXYWxsIHRpbWUgaXMgc3RhbmRhcmQgdGltZQorICAgICAqIGZvciB0aGUgb25zZXQgcnVsZSwgYW5kIGRheWxpZ2h0IHRpbWUgZm9yIHRoZSBlbmQgcnVsZS4gIE1vc3QgcnVsZXMKKyAgICAgKiBhcmUgc3BlY2lmaWVkIGFzIHdhbGwgdGltZS4KKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgaW50IFdBTExfVElNRSA9IDA7IC8vIFplcm8gZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKKworICAgIC8qKgorICAgICAqIENvbnN0YW50IGZvciBhIHJ1bGUgc3BlY2lmaWVkIGFzIHN0YW5kYXJkIHRpbWUuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIGludCBTVEFOREFSRF9USU1FID0gMTsKKworICAgIC8qKgorICAgICAqIENvbnN0YW50IGZvciBhIHJ1bGUgc3BlY2lmaWVkIGFzIFVUQy4gIEVVIHJ1bGVzIGFyZSBzcGVjaWZpZWQgYXMgVVRDCisgICAgICogdGltZS4KKyAgICAgKi8KKyAgICBzdGF0aWMgZmluYWwgaW50IFVUQ19USU1FID0gMjsKKworICAgIC8vIFByb2NsYWltIGNvbXBhdGliaWxpdHkgd2l0aCAxLjEKKyAgICBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTQwMzI1MDk3MTIxNTQ2NTA1MEw7CisKKyAgICAvLyB0aGUgaW50ZXJuYWwgc2VyaWFsIHZlcnNpb24gd2hpY2ggc2F5cyB3aGljaCB2ZXJzaW9uIHdhcyB3cml0dGVuCisgICAgLy8gLSAwIChkZWZhdWx0KSBmb3IgdmVyc2lvbiB1cCB0byBKREsgMS4xLjMKKyAgICAvLyAtIDEgZm9yIHZlcnNpb24gZnJvbSBKREsgMS4xLjQsIHdoaWNoIGluY2x1ZGVzIDMgbmV3IGZpZWxkcworICAgIC8vIC0gMiBmb3IgSkRLIDEuMywgd2hpY2ggaW5jbHVkZXMgMiBuZXcgZmlsZXMKKyAgICBzdGF0aWMgZmluYWwgaW50IGN1cnJlbnRTZXJpYWxWZXJzaW9uID0gMjsKKworICAgIC8qKgorICAgICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBzZXJpYWxpemVkIGRhdGEgb24gdGhlIHN0cmVhbS4gIFBvc3NpYmxlIHZhbHVlczoKKyAgICAgKiA8ZGw+CisgICAgICogPGR0PjxiPjA8L2I+IG9yIG5vdCBwcmVzZW50IG9uIHN0cmVhbTwvZHQ+CisgICAgICogPGRkPgorICAgICAqIEpESyAxLjEuMyBvciBlYXJsaWVyLgorICAgICAqIDwvZGQ+CisgICAgICogPGR0PjxiPjE8L2I+PC9kdD4KKyAgICAgKiA8ZGQ+CisgICAgICogSkRLIDEuMS40IG9yIGxhdGVyLiAgSW5jbHVkZXMgdGhyZWUgbmV3IGZpZWxkczogPGNvZGU+c3RhcnRNb2RlPC9jb2RlPiwKKyAgICAgKiA8Y29kZT5lbmRNb2RlPC9jb2RlPiwgYW5kIDxjb2RlPmRzdFNhdmluZ3M8L2NvZGU+LgorICAgICAqIDwvZGQ+CisgICAgICogPGR0PjxiPjI8L2I+PC9kdD4KKyAgICAgKiA8ZGQ+CisgICAgICogSkRLIDEuMyBvciBsYXRlci4gIEluY2x1ZGVzIHR3byBuZXcgZmllbGRzOiA8Y29kZT5zdGFydFRpbWVNb2RlPC9jb2RlPgorICAgICAqIGFuZCA8Y29kZT5lbmRUaW1lTW9kZTwvY29kZT4uCisgICAgICogPC9kZD4KKyAgICAgKiA8L2RsPgorICAgICAqIFdoZW4gc3RyZWFtaW5nIG91dCB0aGlzIGNsYXNzLCB0aGUgbW9zdCByZWNlbnQgZm9ybWF0CisgICAgICogYW5kIHRoZSBoaWdoZXN0IGFsbG93YWJsZSA8Y29kZT5zZXJpYWxWZXJzaW9uT25TdHJlYW08L2NvZGU+CisgICAgICogaXMgd3JpdHRlbi4KKyAgICAgKiBAc2VyaWFsCisgICAgICogQHNpbmNlIEpESzEuMS40CisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgc2VyaWFsVmVyc2lvbk9uU3RyZWFtID0gY3VycmVudFNlcmlhbFZlcnNpb247CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBSdWxlIHJlcHJlc2VudGF0aW9uCisgICAgLy8KKyAgICAvLyBXZSByZXByZXNlbnQgdGhlIGZvbGxvd2luZyBmbGF2b3JzIG9mIHJ1bGVzOgorICAgIC8vICAgICAgIDUgICAgICAgIHRoZSBmaWZ0aCBvZiB0aGUgbW9udGgKKyAgICAvLyAgICAgICBsYXN0U3VuICB0aGUgbGFzdCBTdW5kYXkgaW4gdGhlIG1vbnRoCisgICAgLy8gICAgICAgbGFzdE1vbiAgdGhlIGxhc3QgTW9uZGF5IGluIHRoZSBtb250aAorICAgIC8vICAgICAgIFN1bj49OCAgIGZpcnN0IFN1bmRheSBvbiBvciBhZnRlciB0aGUgZWlnaHRoCisgICAgLy8gICAgICAgU3VuPD0yNSAgbGFzdCBTdW5kYXkgb24gb3IgYmVmb3JlIHRoZSAyNXRoCisgICAgLy8gVGhpcyBpcyBmdXJ0aGVyIGNvbXBsaWNhdGVkIGJ5IHRoZSBmYWN0IHRoYXQgd2UgbmVlZCB0byByZW1haW4KKyAgICAvLyBiYWNrd2FyZCBjb21wYXRpYmxlIHdpdGggdGhlIDEuMSBGQ1MuICBGaW5hbGx5LCB3ZSBuZWVkIHRvIG1pbmltaXplCisgICAgLy8gQVBJIGNoYW5nZXMuICBJbiBvcmRlciB0byBzYXRpc2Z5IHRoZXNlIHJlcXVpcmVtZW50cywgd2Ugc3VwcG9ydAorICAgIC8vIHRocmVlIHJlcHJlc2VudGF0aW9uIHN5c3RlbXMsIGFuZCB3ZSB0cmFuc2xhdGUgYmV0d2VlbiB0aGVtLgorICAgIC8vCisgICAgLy8gSU5URVJOQUwgUkVQUkVTRU5UQVRJT04KKyAgICAvLyBUaGlzIGlzIHRoZSBmb3JtYXQgU2ltcGxlVGltZVpvbmUgb2JqZWN0cyB0YWtlIGFmdGVyIGNvbnN0cnVjdGlvbiBvcgorICAgIC8vIHN0cmVhbWluZyBpbiBpcyBjb21wbGV0ZS4gIFJ1bGVzIGFyZSByZXByZXNlbnRlZCBkaXJlY3RseSwgdXNpbmcgYW4KKyAgICAvLyB1bmVuY29kZWQgZm9ybWF0LiAgV2Ugd2lsbCBkaXNjdXNzIHRoZSBzdGFydCBydWxlIG9ubHkgYmVsb3c7IHRoZSBlbmQKKyAgICAvLyBydWxlIGlzIGFuYWxvZ291cy4KKyAgICAvLyAgIHN0YXJ0TW9kZSAgICAgIFRha2VzIG9uIGVudW1lcmF0ZWQgdmFsdWVzIERBWV9PRl9NT05USCwKKyAgICAvLyAgICAgICAgICAgICAgICAgIERPV19JTl9NT05USCwgRE9XX0FGVEVSX0RPTSwgb3IgRE9XX0JFRk9SRV9ET00uCisgICAgLy8gICBzdGFydERheSAgICAgICBUaGUgZGF5IG9mIHRoZSBtb250aCwgb3IgZm9yIERPV19JTl9NT05USCBtb2RlLCBhCisgICAgLy8gICAgICAgICAgICAgICAgICB2YWx1ZSBpbmRpY2F0aW5nIHdoaWNoIERPVywgc3VjaCBhcyArMSBmb3IgZmlyc3QsCisgICAgLy8gICAgICAgICAgICAgICAgICArMiBmb3Igc2Vjb25kLCAtMSBmb3IgbGFzdCwgZXRjLgorICAgIC8vICAgc3RhcnREYXlPZldlZWsgVGhlIGRheSBvZiB0aGUgd2Vlay4gIElnbm9yZWQgZm9yIERBWV9PRl9NT05USC4KKyAgICAvLworICAgIC8vIEVOQ09ERUQgUkVQUkVTRU5UQVRJT04KKyAgICAvLyBUaGlzIGlzIHRoZSBmb3JtYXQgYWNjZXB0ZWQgYnkgdGhlIGNvbnN0cnVjdG9yIGFuZCBieSBzZXRTdGFydFJ1bGUoKQorICAgIC8vIGFuZCBzZXRFbmRSdWxlKCkuICBJdCB1c2VzIHZhcmlvdXMgY29tYmluYXRpb25zIG9mIHBvc2l0aXZlLCBuZWdhdGl2ZSwKKyAgICAvLyBhbmQgemVybyB2YWx1ZXMgdG8gZW5jb2RlIHRoZSBkaWZmZXJlbnQgcnVsZXMuICBUaGlzIHJlcHJlc2VudGF0aW9uCisgICAgLy8gYWxsb3dzIHVzIHRvIHNwZWNpZnkgYWxsIHRoZSBkaWZmZXJlbnQgcnVsZSBmbGF2b3JzIHdpdGhvdXQgYWx0ZXJpbmcKKyAgICAvLyB0aGUgQVBJLgorICAgIC8vICAgTU9ERSAgICAgICAgICAgICAgc3RhcnRNb250aCAgICBzdGFydERheSAgICBzdGFydERheU9mV2VlaworICAgIC8vICAgRE9XX0lOX01PTlRIX01PREUgPj0wICAgICAgICAgICAhPTAgICAgICAgICA+MAorICAgIC8vICAgRE9NX01PREUgICAgICAgICAgPj0wICAgICAgICAgICA+MCAgICAgICAgICA9PTAKKyAgICAvLyAgIERPV19HRV9ET01fTU9ERSAgID49MCAgICAgICAgICAgPjAgICAgICAgICAgPDAKKyAgICAvLyAgIERPV19MRV9ET01fTU9ERSAgID49MCAgICAgICAgICAgPDAgICAgICAgICAgPDAKKyAgICAvLyAgIChubyBEU1QpICAgICAgICAgIGRvbid0IGNhcmUgICAgPT0wICAgICAgICAgZG9uJ3QgY2FyZQorICAgIC8vCisgICAgLy8gU1RSRUFNRUQgUkVQUkVTRU5UQVRJT04KKyAgICAvLyBXZSBtdXN0IHJldGFpbiBiaW5hcnkgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSAxLjEgRkNTLiAgVGhlIDEuMSBjb2RlIG9ubHkKKyAgICAvLyBoYW5kbGVzIERPV19JTl9NT05USF9NT0RFIGFuZCBub24tRFNUIG1vZGUsIHRoZSBsYXR0ZXIgaW5kaWNhdGVkIGJ5IHRoZQorICAgIC8vIGZsYWcgdXNlRGF5bGlnaHQuICBXaGVuIHdlIHN0cmVhbSBhbiBvYmplY3Qgb3V0LCB3ZSB0cmFuc2xhdGUgaW50byBhbgorICAgIC8vIGFwcHJveGltYXRlIERPV19JTl9NT05USF9NT0RFIHJlcHJlc2VudGF0aW9uIHNvIHRoZSBvYmplY3QgY2FuIGJlIHBhcnNlZAorICAgIC8vIGFuZCB1c2VkIGJ5IDEuMSBjb2RlLiAgRm9sbG93aW5nIHRoYXQsIHdlIHdyaXRlIG91dCB0aGUgZnVsbAorICAgIC8vIHJlcHJlc2VudGF0aW9uIHNlcGFyYXRlbHkgc28gdGhhdCBjb250ZW1wb3JhcnkgY29kZSBjYW4gcmVjb2duaXplIGFuZAorICAgIC8vIHBhcnNlIGl0LiAgVGhlIGZ1bGwgcmVwcmVzZW50YXRpb24gaXMgd3JpdHRlbiBpbiBhICJwYWNrZWQiIGZvcm1hdCwKKyAgICAvLyBjb25zaXN0aW5nIG9mIGEgdmVyc2lvbiBudW1iZXIsIGEgbGVuZ3RoLCBhbmQgYW4gYXJyYXkgb2YgYnl0ZXMuICBGdXR1cmUKKyAgICAvLyB2ZXJzaW9ucyBvZiB0aGlzIGNsYXNzIG1heSBzcGVjaWZ5IGRpZmZlcmVudCB2ZXJzaW9ucy4gIElmIHRoZXkgd2lzaCB0bworICAgIC8vIGluY2x1ZGUgYWRkaXRpb25hbCBkYXRhLCB0aGV5IHNob3VsZCBkbyBzbyBieSBzdG9yaW5nIHRoZW0gYWZ0ZXIgdGhlCisgICAgLy8gcGFja2VkIHJlcHJlc2VudGF0aW9uIGJlbG93LgorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogR2l2ZW4gYSBzZXQgb2YgZW5jb2RlZCBydWxlcyBpbiBzdGFydERheSBhbmQgc3RhcnREYXlPZk1vbnRoLCBkZWNvZGUKKyAgICAgKiB0aGVtIGFuZCBzZXQgdGhlIHN0YXJ0TW9kZSBhcHByb3ByaWF0ZWx5LiAgRG8gdGhlIHNhbWUgZm9yIGVuZERheSBhbmQKKyAgICAgKiBlbmREYXlPZk1vbnRoLiAgVXBvbiBlbnRyeSwgdGhlIGRheSBvZiB3ZWVrIHZhcmlhYmxlcyBtYXkgYmUgemVybyBvcgorICAgICAqIG5lZ2F0aXZlLCBpbiBvcmRlciB0byBpbmRpY2F0ZSBzcGVjaWFsIG1vZGVzLiAgVGhlIGRheSBvZiBtb250aAorICAgICAqIHZhcmlhYmxlcyBtYXkgYWxzbyBiZSBuZWdhdGl2ZS4gIFVwb24gZXhpdCwgdGhlIG1vZGUgdmFyaWFibGVzIHdpbGwgYmUKKyAgICAgKiBzZXQsIGFuZCB0aGUgZGF5IG9mIHdlZWsgYW5kIGRheSBvZiBtb250aCB2YXJpYWJsZXMgd2lsbCBiZSBwb3NpdGl2ZS4KKyAgICAgKiBUaGlzIG1ldGhvZCBhbHNvIHJlY29nbml6ZXMgYSBzdGFydERheSBvciBlbmREYXkgb2YgemVybyBhcyBpbmRpY2F0aW5nCisgICAgICogbm8gRFNULgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBkZWNvZGVSdWxlcygpCisgICAgeworICAgICAgICBkZWNvZGVTdGFydFJ1bGUoKTsKKyAgICAgICAgZGVjb2RlRW5kUnVsZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIERlY29kZSB0aGUgc3RhcnQgcnVsZSBhbmQgdmFsaWRhdGUgdGhlIHBhcmFtZXRlcnMuICBUaGUgcGFyYW1ldGVycyBhcmUKKyAgICAgKiBleHBlY3RlZCB0byBiZSBpbiBlbmNvZGVkIGZvcm0sIHdoaWNoIHJlcHJlc2VudHMgdGhlIHZhcmlvdXMgcnVsZSBtb2RlcworICAgICAqIGJ5IG5lZ2F0aW5nIG9yIHplcm9pbmcgY2VydGFpbiB2YWx1ZXMuICBSZXByZXNlbnRhdGlvbiBmb3JtYXRzIGFyZToKKyAgICAgKiA8cD4KKyAgICAgKiA8cHJlPgorICAgICAqICAgICAgICAgICAgRE9XX0lOX01PTlRIICBET00gICAgRE9XPj1ET00gIERPVzw9RE9NICBubyBEU1QKKyAgICAgKiAgICAgICAgICAgIC0tLS0tLS0tLS0tLSAgLS0tLS0gIC0tLS0tLS0tICAtLS0tLS0tLSAgLS0tLS0tLS0tLQorICAgICAqIG1vbnRoICAgICAgIDAuLjExICAgICAgICBzYW1lICAgIHNhbWUgICAgICBzYW1lICAgICBkb24ndCBjYXJlCisgICAgICogZGF5ICAgICAgICAtNS4uNSAgICAgICAgIDEuLjMxICAgMS4uMzEgICAgLTEuLi0zMSAgIDAKKyAgICAgKiBkYXlPZldlZWsgICAxLi43ICAgICAgICAgMCAgICAgIC0xLi4tNyAgICAtMS4uLTcgICAgZG9uJ3QgY2FyZQorICAgICAqIHRpbWUgICAgICAgIDAuLk9ORURBWSAgICBzYW1lICAgIHNhbWUgICAgICBzYW1lICAgICBkb24ndCBjYXJlCisgICAgICogPC9wcmU+CisgICAgICogVGhlIHJhbmdlIGZvciBtb250aCBkb2VzIG5vdCBpbmNsdWRlIFVOREVDSU1CRVIgc2luY2UgdGhpcyBjbGFzcyBpcworICAgICAqIHJlYWxseSBzcGVjaWZpYyB0byBHcmVnb3JpYW5DYWxlbmRhciwgd2hpY2ggZG9lcyBub3QgdXNlIHRoYXQgbW9udGguCisgICAgICogVGhlIHJhbmdlIGZvciB0aW1lIGluY2x1ZGVzIE9ORURBWSAodnMuIGVuZGluZyBhdCBPTkVEQVktMSkgYmVjYXVzZSB0aGUKKyAgICAgKiBlbmQgcnVsZSBpcyBhbiBleGNsdXNpdmUgbGltaXQgcG9pbnQuICBUaGF0IGlzLCB0aGUgcmFuZ2Ugb2YgdGltZXMgdGhhdAorICAgICAqIGFyZSBpbiBEU1QgaW5jbHVkZSB0aG9zZSA+PSB0aGUgc3RhcnQgYW5kIDwgdGhlIGVuZC4gIEZvciB0aGlzIHJlYXNvbiwKKyAgICAgKiBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gc3BlY2lmeSBhbiBlbmQgb2YgT05FREFZIGluIG9yZGVyIHRvIGluY2x1ZGUgdGhlCisgICAgICogZW50aXJlIGRheS4gIEFsdGhvdWdoIHRoaXMgaXMgZXF1aXZhbGVudCB0byB0aW1lIDAgb2YgdGhlIGZvbGxvd2luZyBkYXksCisgICAgICogaXQncyBub3QgYWx3YXlzIHBvc3NpYmxlIHRvIHNwZWNpZnkgdGhhdCwgZm9yIGV4YW1wbGUsIG9uIERlY2VtYmVyIDMxLgorICAgICAqIFdoaWxlIGFyZ3VhYmx5IHRoZSBzdGFydCByYW5nZSBzaG91bGQgc3RpbGwgYmUgMC4uT05FREFZLTEsIHdlIGtlZXAKKyAgICAgKiB0aGUgc3RhcnQgYW5kIGVuZCByYW5nZXMgdGhlIHNhbWUgZm9yIGNvbnNpc3RlbmN5LgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBkZWNvZGVTdGFydFJ1bGUoKSB7CisgICAgICAgIHVzZURheWxpZ2h0ID0gKHN0YXJ0RGF5ICE9IDApICYmIChlbmREYXkgIT0gMCk7CisgICAgICAgIGlmIChzdGFydERheSAhPSAwKSB7CisgICAgICAgICAgICBpZiAoc3RhcnRNb250aCA8IENhbGVuZGFyLkpBTlVBUlkgfHwgc3RhcnRNb250aCA+IENhbGVuZGFyLkRFQ0VNQkVSKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICJJbGxlZ2FsIHN0YXJ0IG1vbnRoICIgKyBzdGFydE1vbnRoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdGFydFRpbWUgPCAwIHx8IHN0YXJ0VGltZSA+PSBtaWxsaXNQZXJEYXkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgc3RhcnQgdGltZSAiICsgc3RhcnRUaW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdGFydERheU9mV2VlayA9PSAwKSB7CisgICAgICAgICAgICAgICAgc3RhcnRNb2RlID0gRE9NX01PREU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChzdGFydERheU9mV2VlayA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRNb2RlID0gRE9XX0lOX01PTlRIX01PREU7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnREYXlPZldlZWsgPSAtc3RhcnREYXlPZldlZWs7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydERheSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0TW9kZSA9IERPV19HRV9ET01fTU9ERTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0RGF5ID0gLXN0YXJ0RGF5OworICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRNb2RlID0gRE9XX0xFX0RPTV9NT0RFOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChzdGFydERheU9mV2VlayA+IENhbGVuZGFyLlNBVFVSREFZKSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiSWxsZWdhbCBzdGFydCBkYXkgb2Ygd2VlayAiICsgc3RhcnREYXlPZldlZWspOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdGFydE1vZGUgPT0gRE9XX0lOX01PTlRIX01PREUpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3RhcnREYXkgPCAtNSB8fCBzdGFydERheSA+IDUpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSWxsZWdhbCBzdGFydCBkYXkgb2Ygd2VlayBpbiBtb250aCAiICsgc3RhcnREYXkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhcnREYXkgPCAxIHx8IHN0YXJ0RGF5ID4gc3RhdGljTW9udGhMZW5ndGhbc3RhcnRNb250aF0pIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgc3RhcnQgZGF5ICIgKyBzdGFydERheSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZWNvZGUgdGhlIGVuZCBydWxlIGFuZCB2YWxpZGF0ZSB0aGUgcGFyYW1ldGVycy4gIFRoaXMgbWV0aG9kIGlzIGV4YWN0bHkKKyAgICAgKiBhbmFsb2dvdXMgdG8gZGVjb2RlU3RhcnRSdWxlKCkuCisgICAgICogQHNlZSBkZWNvZGVTdGFydFJ1bGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgZGVjb2RlRW5kUnVsZSgpIHsKKyAgICAgICAgdXNlRGF5bGlnaHQgPSAoc3RhcnREYXkgIT0gMCkgJiYgKGVuZERheSAhPSAwKTsKKyAgICAgICAgaWYgKGVuZERheSAhPSAwKSB7CisgICAgICAgICAgICBpZiAoZW5kTW9udGggPCBDYWxlbmRhci5KQU5VQVJZIHx8IGVuZE1vbnRoID4gQ2FsZW5kYXIuREVDRU1CRVIpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgZW5kIG1vbnRoICIgKyBlbmRNb250aCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5kVGltZSA8IDAgfHwgZW5kVGltZSA+PSBtaWxsaXNQZXJEYXkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgZW5kIHRpbWUgIiArIGVuZFRpbWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGVuZERheU9mV2VlayA9PSAwKSB7CisgICAgICAgICAgICAgICAgZW5kTW9kZSA9IERPTV9NT0RFOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoZW5kRGF5T2ZXZWVrID4gMCkgeworICAgICAgICAgICAgICAgICAgICBlbmRNb2RlID0gRE9XX0lOX01PTlRIX01PREU7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZW5kRGF5T2ZXZWVrID0gLWVuZERheU9mV2VlazsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVuZERheSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVuZE1vZGUgPSBET1dfR0VfRE9NX01PREU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlbmREYXkgPSAtZW5kRGF5OworICAgICAgICAgICAgICAgICAgICAgICAgZW5kTW9kZSA9IERPV19MRV9ET01fTU9ERTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZW5kRGF5T2ZXZWVrID4gQ2FsZW5kYXIuU0FUVVJEQVkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbGxlZ2FsIGVuZCBkYXkgb2Ygd2VlayAiICsgZW5kRGF5T2ZXZWVrKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5kTW9kZSA9PSBET1dfSU5fTU9OVEhfTU9ERSkgeworICAgICAgICAgICAgICAgIGlmIChlbmREYXkgPCAtNSB8fCBlbmREYXkgPiA1KSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgZW5kIGRheSBvZiB3ZWVrIGluIG1vbnRoICIgKyBlbmREYXkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5kRGF5IDwgMSB8fCBlbmREYXkgPiBzdGF0aWNNb250aExlbmd0aFtlbmRNb250aF0pIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgZW5kIGRheSAiICsgZW5kRGF5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIE1ha2UgcnVsZXMgY29tcGF0aWJsZSB0byAxLjEgRkNTIGNvZGUuICBTaW5jZSAxLjEgRkNTIGNvZGUgb25seSB1bmRlcnN0YW5kcworICAgICAqIGRheS1vZi13ZWVrLWluLW1vbnRoIHJ1bGVzLCB3ZSBtdXN0IG1vZGlmeSBvdGhlciBtb2RlcyBvZiBydWxlcyB0byB0aGVpcgorICAgICAqIGFwcHJveGltYXRlIGVxdWl2YWxlbnQgaW4gMS4xIEZDUyB0ZXJtcy4gIFRoaXMgbWV0aG9kIGlzIHVzZWQgd2hlbiBzdHJlYW1pbmcKKyAgICAgKiBvdXQgb2JqZWN0cyBvZiB0aGlzIGNsYXNzLiAgQWZ0ZXIgaXQgaXMgY2FsbGVkLCB0aGUgcnVsZXMgd2lsbCBiZSBtb2RpZmllZCwKKyAgICAgKiB3aXRoIGEgcG9zc2libGUgbG9zcyBvZiBpbmZvcm1hdGlvbi4gIHN0YXJ0TW9kZSBhbmQgZW5kTW9kZSB3aWxsIE5PVCBiZQorICAgICAqIGFsdGVyZWQsIGV2ZW4gdGhvdWdoIHNlbWFudGljYWxseSB0aGV5IHNob3VsZCBiZSBzZXQgdG8gRE9XX0lOX01PTlRIX01PREUsCisgICAgICogc2luY2UgdGhlIHJ1bGUgbW9kaWZpY2F0aW9uIGlzIG9ubHkgaW50ZW5kZWQgdG8gYmUgdGVtcG9yYXJ5LgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBtYWtlUnVsZXNDb21wYXRpYmxlKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAoc3RhcnRNb2RlKQorICAgICAgICB7CisgICAgICAgIGNhc2UgRE9NX01PREU6CisgICAgICAgICAgICBzdGFydERheSA9IDEgKyAoc3RhcnREYXkgLyA3KTsKKyAgICAgICAgICAgIHN0YXJ0RGF5T2ZXZWVrID0gQ2FsZW5kYXIuU1VOREFZOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRE9XX0dFX0RPTV9NT0RFOgorICAgICAgICAgICAgLy8gQSBkYXktb2YtbW9udGggb2YgMSBpcyBlcXVpdmFsZW50IHRvIERPV19JTl9NT05USF9NT0RFCisgICAgICAgICAgICAvLyB0aGF0IGlzLCBTdW4+PTEgPT0gZmlyc3RTdW4uCisgICAgICAgICAgICBpZiAoc3RhcnREYXkgIT0gMSkKKyAgICAgICAgICAgICAgICBzdGFydERheSA9IDEgKyAoc3RhcnREYXkgLyA3KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERPV19MRV9ET01fTU9ERToKKyAgICAgICAgICAgIGlmIChzdGFydERheSA+PSAzMCkKKyAgICAgICAgICAgICAgICBzdGFydERheSA9IC0xOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN0YXJ0RGF5ID0gMSArIChzdGFydERheSAvIDcpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKGVuZE1vZGUpCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBET01fTU9ERToKKyAgICAgICAgICAgIGVuZERheSA9IDEgKyAoZW5kRGF5IC8gNyk7CisgICAgICAgICAgICBlbmREYXlPZldlZWsgPSBDYWxlbmRhci5TVU5EQVk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBET1dfR0VfRE9NX01PREU6CisgICAgICAgICAgICAvLyBBIGRheS1vZi1tb250aCBvZiAxIGlzIGVxdWl2YWxlbnQgdG8gRE9XX0lOX01PTlRIX01PREUKKyAgICAgICAgICAgIC8vIHRoYXQgaXMsIFN1bj49MSA9PSBmaXJzdFN1bi4KKyAgICAgICAgICAgIGlmIChlbmREYXkgIT0gMSkKKyAgICAgICAgICAgICAgICBlbmREYXkgPSAxICsgKGVuZERheSAvIDcpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRE9XX0xFX0RPTV9NT0RFOgorICAgICAgICAgICAgaWYgKGVuZERheSA+PSAzMCkKKyAgICAgICAgICAgICAgICBlbmREYXkgPSAtMTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlbmREYXkgPSAxICsgKGVuZERheSAvIDcpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvKiBBZGp1c3QgdGhlIHN0YXJ0IGFuZCBlbmQgdGltZXMgdG8gd2FsbCB0aW1lLiAgVGhpcyB3b3JrcyBwZXJmZWN0bHkKKyAgICAgICAgICogd2VsbCB1bmxlc3MgaXQgcHVzaGVzIGludG8gdGhlIG5leHQgb3IgcHJldmlvdXMgZGF5LiAgSWYgdGhhdAorICAgICAgICAgKiBoYXBwZW5zLCB3ZSBhdHRlbXB0IHRvIGFkanVzdCB0aGUgZGF5IHJ1bGUgc29tZXdoYXQgY3J1ZGVseS4gIFRoZSBkYXkKKyAgICAgICAgICogcnVsZXMgaGF2ZSBiZWVuIGZvcmNlZCBpbnRvIERPV19JTl9NT05USCBtb2RlIGFscmVhZHksIHNvIHdlIGNoYW5nZQorICAgICAgICAgKiB0aGUgZGF5IG9mIHdlZWsgdG8gbW92ZSBmb3J3YXJkIG9yIGJhY2sgYnkgYSBkYXkuICBJdCdzIHBvc3NpYmxlIHRvCisgICAgICAgICAqIG1ha2UgYSBtb3JlIHJlZmluZWQgYWRqdXN0bWVudCBvZiB0aGUgb3JpZ2luYWwgcnVsZXMgZmlyc3QsIGJ1dCBpbgorICAgICAgICAgKiBtb3N0IGNhc2VzIHRoaXMgZXh0cmEgZWZmb3J0IHdpbGwgZ28gdG8gd2FzdGUgb25jZSB3ZSBhZGp1c3QgdGhlIGRheQorICAgICAgICAgKiBydWxlcyBhbnl3YXkuICovCisgICAgICAgIHN3aXRjaCAoc3RhcnRUaW1lTW9kZSkgeworICAgICAgICBjYXNlIFVUQ19USU1FOgorICAgICAgICAgICAgc3RhcnRUaW1lICs9IHJhd09mZnNldDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHdoaWxlIChzdGFydFRpbWUgPCAwKSB7CisgICAgICAgICAgICBzdGFydFRpbWUgKz0gbWlsbGlzUGVyRGF5OworICAgICAgICAgICAgc3RhcnREYXlPZldlZWsgPSAxICsgKChzdGFydERheU9mV2Vlays1KSAlIDcpOyAvLyBCYWNrIDEgZGF5CisgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKHN0YXJ0VGltZSA+PSBtaWxsaXNQZXJEYXkpIHsKKyAgICAgICAgICAgIHN0YXJ0VGltZSAtPSBtaWxsaXNQZXJEYXk7CisgICAgICAgICAgICBzdGFydERheU9mV2VlayA9IDEgKyAoc3RhcnREYXlPZldlZWsgJSA3KTsgLy8gRm9yd2FyZCAxIGRheQorICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChlbmRUaW1lTW9kZSkgeworICAgICAgICBjYXNlIFVUQ19USU1FOgorICAgICAgICAgICAgZW5kVGltZSArPSByYXdPZmZzZXQgKyBkc3RTYXZpbmdzOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1RBTkRBUkRfVElNRToKKyAgICAgICAgICAgIGVuZFRpbWUgKz0gZHN0U2F2aW5nczsKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoZW5kVGltZSA8IDApIHsKKyAgICAgICAgICAgIGVuZFRpbWUgKz0gbWlsbGlzUGVyRGF5OworICAgICAgICAgICAgZW5kRGF5T2ZXZWVrID0gMSArICgoZW5kRGF5T2ZXZWVrKzUpICUgNyk7IC8vIEJhY2sgMSBkYXkKKyAgICAgICAgfQorICAgICAgICB3aGlsZSAoZW5kVGltZSA+PSBtaWxsaXNQZXJEYXkpIHsKKyAgICAgICAgICAgIGVuZFRpbWUgLT0gbWlsbGlzUGVyRGF5OworICAgICAgICAgICAgZW5kRGF5T2ZXZWVrID0gMSArIChlbmREYXlPZldlZWsgJSA3KTsgLy8gRm9yd2FyZCAxIGRheQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUGFjayB0aGUgc3RhcnQgYW5kIGVuZCBydWxlcyBpbnRvIGFuIGFycmF5IG9mIGJ5dGVzLiAgT25seSBwYWNrCisgICAgICogZGF0YSB3aGljaCBpcyBub3QgcHJlc2VydmVkIGJ5IG1ha2VSdWxlc0NvbXBhdGlibGUuCisgICAgICovCisgICAgcHJpdmF0ZSBieXRlW10gcGFja1J1bGVzKCkKKyAgICB7CisgICAgICAgIGJ5dGVbXSBydWxlcyA9IG5ldyBieXRlWzZdOworICAgICAgICBydWxlc1swXSA9IChieXRlKXN0YXJ0RGF5OworICAgICAgICBydWxlc1sxXSA9IChieXRlKXN0YXJ0RGF5T2ZXZWVrOworICAgICAgICBydWxlc1syXSA9IChieXRlKWVuZERheTsKKyAgICAgICAgcnVsZXNbM10gPSAoYnl0ZSllbmREYXlPZldlZWs7CisKKyAgICAgICAgLy8gQXMgb2Ygc2VyaWFsIHZlcnNpb24gMiwgaW5jbHVkZSB0aW1lIG1vZGVzCisgICAgICAgIHJ1bGVzWzRdID0gKGJ5dGUpc3RhcnRUaW1lTW9kZTsKKyAgICAgICAgcnVsZXNbNV0gPSAoYnl0ZSllbmRUaW1lTW9kZTsKKworICAgICAgICByZXR1cm4gcnVsZXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2l2ZW4gYW4gYXJyYXkgb2YgYnl0ZXMgcHJvZHVjZWQgYnkgcGFja1J1bGVzLCBpbnRlcnByZXQgdGhlbQorICAgICAqIGFzIHRoZSBzdGFydCBhbmQgZW5kIHJ1bGVzLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCB1bnBhY2tSdWxlcyhieXRlW10gcnVsZXMpCisgICAgeworICAgICAgICBzdGFydERheSAgICAgICA9IHJ1bGVzWzBdOworICAgICAgICBzdGFydERheU9mV2VlayA9IHJ1bGVzWzFdOworICAgICAgICBlbmREYXkgICAgICAgICA9IHJ1bGVzWzJdOworICAgICAgICBlbmREYXlPZldlZWsgICA9IHJ1bGVzWzNdOworCisgICAgICAgIC8vIEFzIG9mIHNlcmlhbCB2ZXJzaW9uIDIsIGluY2x1ZGUgdGltZSBtb2RlcworICAgICAgICBpZiAocnVsZXMubGVuZ3RoID49IDYpIHsKKyAgICAgICAgICAgIHN0YXJ0VGltZU1vZGUgPSBydWxlc1s0XTsKKyAgICAgICAgICAgIGVuZFRpbWVNb2RlICAgPSBydWxlc1s1XTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFBhY2sgdGhlIHN0YXJ0IGFuZCBlbmQgdGltZXMgaW50byBhbiBhcnJheSBvZiBieXRlcy4gIFRoaXMgaXMgcmVxdWlyZWQKKyAgICAgKiBhcyBvZiBzZXJpYWwgdmVyc2lvbiAyLgorICAgICAqLworICAgIHByaXZhdGUgaW50W10gcGFja1RpbWVzKCkgeworICAgICAgICBpbnRbXSB0aW1lcyA9IG5ldyBpbnRbMl07CisgICAgICAgIHRpbWVzWzBdID0gc3RhcnRUaW1lOworICAgICAgICB0aW1lc1sxXSA9IGVuZFRpbWU7CisgICAgICAgIHJldHVybiB0aW1lczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVbnBhY2sgdGhlIHN0YXJ0IGFuZCBlbmQgdGltZXMgZnJvbSBhbiBhcnJheSBvZiBieXRlcy4gIFRoaXMgaXMgcmVxdWlyZWQKKyAgICAgKiBhcyBvZiBzZXJpYWwgdmVyc2lvbiAyLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCB1bnBhY2tUaW1lcyhpbnRbXSB0aW1lcykgeworICAgICAgICBzdGFydFRpbWUgPSB0aW1lc1swXTsKKyAgICAgICAgZW5kVGltZSA9IHRpbWVzWzFdOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNhdmUgdGhlIHN0YXRlIG9mIHRoaXMgb2JqZWN0IHRvIGEgc3RyZWFtIChpLmUuLCBzZXJpYWxpemUgaXQpLgorICAgICAqCisgICAgICogQHNlcmlhbERhdGEgV2Ugd3JpdGUgb3V0IHR3byBmb3JtYXRzLCBhIEpESyAxLjEgY29tcGF0aWJsZSBmb3JtYXQsIHVzaW5nCisgICAgICogPGNvZGU+RE9XX0lOX01PTlRIX01PREU8L2NvZGU+IHJ1bGVzLCBpbiB0aGUgcmVxdWlyZWQgc2VjdGlvbiwgZm9sbG93ZWQKKyAgICAgKiBieSB0aGUgZnVsbCBydWxlcywgaW4gcGFja2VkIGZvcm1hdCwgaW4gdGhlIG9wdGlvbmFsIHNlY3Rpb24uICBUaGUKKyAgICAgKiBvcHRpb25hbCBzZWN0aW9uIHdpbGwgYmUgaWdub3JlZCBieSBKREsgMS4xIGNvZGUgdXBvbiBzdHJlYW0gaW4uCisgICAgICogPHA+IENvbnRlbnRzIG9mIHRoZSBvcHRpb25hbCBzZWN0aW9uOiBUaGUgbGVuZ3RoIG9mIGEgYnl0ZSBhcnJheSBpcworICAgICAqIGVtaXR0ZWQgKGludCk7IHRoaXMgaXMgNCBhcyBvZiB0aGlzIHJlbGVhc2UuIFRoZSBieXRlIGFycmF5IG9mIHRoZSBnaXZlbgorICAgICAqIGxlbmd0aCBpcyBlbWl0dGVkLiBUaGUgY29udGVudHMgb2YgdGhlIGJ5dGUgYXJyYXkgYXJlIHRoZSB0cnVlIHZhbHVlcyBvZgorICAgICAqIHRoZSBmaWVsZHMgPGNvZGU+c3RhcnREYXk8L2NvZGU+LCA8Y29kZT5zdGFydERheU9mV2VlazwvY29kZT4sCisgICAgICogPGNvZGU+ZW5kRGF5PC9jb2RlPiwgYW5kIDxjb2RlPmVuZERheU9mV2VlazwvY29kZT4uICBUaGUgdmFsdWVzIG9mIHRoZXNlCisgICAgICogZmllbGRzIGluIHRoZSByZXF1aXJlZCBzZWN0aW9uIGFyZSBhcHByb3hpbWF0ZSB2YWx1ZXMgc3VpdGVkIHRvIHRoZSBydWxlCisgICAgICogbW9kZSA8Y29kZT5ET1dfSU5fTU9OVEhfTU9ERTwvY29kZT4sIHdoaWNoIGlzIHRoZSBvbmx5IG1vZGUgcmVjb2duaXplZCBieQorICAgICAqIEpESyAxLjEuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHdyaXRlT2JqZWN0KE9iamVjdE91dHB1dFN0cmVhbSBzdHJlYW0pCisgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24KKyAgICB7CisgICAgICAgIC8vIENvbnN0cnVjdCBhIGJpbmFyeSBydWxlCisgICAgICAgIGJ5dGVbXSBydWxlcyA9IHBhY2tSdWxlcygpOworICAgICAgICBpbnRbXSB0aW1lcyA9IHBhY2tUaW1lcygpOworCisgICAgICAgIC8vIENvbnZlcnQgdG8gMS4xIEZDUyBydWxlcy4gIFRoaXMgc3RlcCBtYXkgY2F1c2UgdXMgdG8gbG9zZSBpbmZvcm1hdGlvbi4KKyAgICAgICAgbWFrZVJ1bGVzQ29tcGF0aWJsZSgpOworCisgICAgICAgIC8vIFdyaXRlIG91dCB0aGUgMS4xIEZDUyBydWxlcworICAgICAgICBzdHJlYW0uZGVmYXVsdFdyaXRlT2JqZWN0KCk7CisKKyAgICAgICAgLy8gV3JpdGUgb3V0IHRoZSBiaW5hcnkgcnVsZXMgaW4gdGhlIG9wdGlvbmFsIGRhdGEgYXJlYSBvZiB0aGUgc3RyZWFtLgorICAgICAgICBzdHJlYW0ud3JpdGVJbnQocnVsZXMubGVuZ3RoKTsKKyAgICAgICAgc3RyZWFtLndyaXRlKHJ1bGVzKTsKKyAgICAgICAgc3RyZWFtLndyaXRlT2JqZWN0KHRpbWVzKTsKKworICAgICAgICAvLyBSZWNvdmVyIHRoZSBvcmlnaW5hbCBydWxlcy4gIFRoaXMgcmVjb3ZlcnMgdGhlIGluZm9ybWF0aW9uIGxvc3QKKyAgICAgICAgLy8gYnkgbWFrZVJ1bGVzQ29tcGF0aWJsZS4KKyAgICAgICAgdW5wYWNrUnVsZXMocnVsZXMpOworICAgICAgICB1bnBhY2tUaW1lcyh0aW1lcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVjb25zdGl0dXRlIHRoaXMgb2JqZWN0IGZyb20gYSBzdHJlYW0gKGkuZS4sIGRlc2VyaWFsaXplIGl0KS4KKyAgICAgKgorICAgICAqIFdlIGhhbmRsZSBib3RoIEpESyAxLjEKKyAgICAgKiBiaW5hcnkgZm9ybWF0cyBhbmQgZnVsbCBmb3JtYXRzIHdpdGggYSBwYWNrZWQgYnl0ZSBhcnJheS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgcmVhZE9iamVjdChPYmplY3RJbnB1dFN0cmVhbSBzdHJlYW0pCisgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24sIENsYXNzTm90Rm91bmRFeGNlcHRpb24KKyAgICB7CisgICAgICAgIHN0cmVhbS5kZWZhdWx0UmVhZE9iamVjdCgpOworCisgICAgICAgIGlmIChzZXJpYWxWZXJzaW9uT25TdHJlYW0gPCAxKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBGaXggYSBidWcgaW4gdGhlIDEuMSBTaW1wbGVUaW1lWm9uZSBjb2RlIC0tIG5hbWVseSwKKyAgICAgICAgICAgIC8vIHN0YXJ0RGF5T2ZXZWVrIGFuZCBlbmREYXlPZldlZWsgd2VyZSB1c3VhbGx5IHVuaW5pdGlhbGl6ZWQuICBXZSBjYW4ndCBkbworICAgICAgICAgICAgLy8gdG9vIG11Y2gsIHNvIHdlIGFzc3VtZSBTVU5EQVksIHdoaWNoIGFjdHVhbGx5IHdvcmtzIG1vc3Qgb2YgdGhlIHRpbWUuCisgICAgICAgICAgICBpZiAoc3RhcnREYXlPZldlZWsgPT0gMCkgc3RhcnREYXlPZldlZWsgPSBDYWxlbmRhci5TVU5EQVk7CisgICAgICAgICAgICBpZiAoZW5kRGF5T2ZXZWVrID09IDApIGVuZERheU9mV2VlayA9IENhbGVuZGFyLlNVTkRBWTsKKworICAgICAgICAgICAgLy8gVGhlIHZhcmlhYmxlcyBkc3RTYXZpbmdzLCBzdGFydE1vZGUsIGFuZCBlbmRNb2RlIGFyZSBwb3N0LTEuMSwgc28gdGhleQorICAgICAgICAgICAgLy8gd29uJ3QgYmUgcHJlc2VudCBpZiB3ZSdyZSByZWFkaW5nIGZyb20gYSAxLjEgc3RyZWFtLiAgRml4IHRoZW0gdXAuCisgICAgICAgICAgICBzdGFydE1vZGUgPSBlbmRNb2RlID0gRE9XX0lOX01PTlRIX01PREU7CisgICAgICAgICAgICBkc3RTYXZpbmdzID0gbWlsbGlzUGVySG91cjsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIEZvciAxLjEuNCwgaW4gYWRkaXRpb24gdG8gdGhlIDMgbmV3IGluc3RhbmNlIHZhcmlhYmxlcywgd2UgYWxzbworICAgICAgICAgICAgLy8gc3RvcmUgdGhlIGFjdHVhbCBydWxlcyAod2hpY2ggaGF2ZSBub3QgYmUgbWFkZSBjb21wYXRpYmxlIHdpdGggMS4xKQorICAgICAgICAgICAgLy8gaW4gdGhlIG9wdGlvbmFsIGFyZWEuICBSZWFkIHRoZW0gaW4gaGVyZSBhbmQgcGFyc2UgdGhlbS4KKyAgICAgICAgICAgIGludCBsZW5ndGggPSBzdHJlYW0ucmVhZEludCgpOworICAgICAgICAgICAgYnl0ZVtdIHJ1bGVzID0gbmV3IGJ5dGVbbGVuZ3RoXTsKKyAgICAgICAgICAgIHN0cmVhbS5yZWFkRnVsbHkocnVsZXMpOworICAgICAgICAgICAgdW5wYWNrUnVsZXMocnVsZXMpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNlcmlhbFZlcnNpb25PblN0cmVhbSA+PSAyKSB7CisgICAgICAgICAgICBpbnRbXSB0aW1lcyA9IChpbnRbXSkgc3RyZWFtLnJlYWRPYmplY3QoKTsKKyAgICAgICAgICAgIHVucGFja1RpbWVzKHRpbWVzKTsKKyAgICAgICAgfQorCisgICAgICAgIHNlcmlhbFZlcnNpb25PblN0cmVhbSA9IGN1cnJlbnRTZXJpYWxWZXJzaW9uOworICAgIH0KK30KKworLy9lb2YKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvU2ltcGxlVGltZVpvbmVBZGFwdGVyLmphdmEgYi9zcmMvY29tL2libS91dGlsL1NpbXBsZVRpbWVab25lQWRhcHRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjdmYzhmMTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL1NpbXBsZVRpbWVab25lQWRhcHRlci5qYXZhCkBAIC0wLDAgKzEsMTU3IEBACisvKiBDb3B5cmlnaHQgKGMpIDIwMDAgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL0F0dGljL1NpbXBsZVRpbWVab25lQWRhcHRlci5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA1LzEyIDIzOjIwOjExICQgCisgKiAkUmV2aXNpb246IDEuMSAkCisgKi8KK3BhY2thZ2UgY29tLmlibS51dGlsOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCisvKioKKyAqIDxjb2RlPlNpbXBsZVRpbWVab25lQWRhcHRlcjwvY29kZT4gd3JhcHMgYQorICogY29tLmlibS51dGlsLlNpbXBsZVRpbWVab25lIGFuZCBpbmhlcml0cyBmcm9tIGphdmEudXRpbC5UaW1lWm9uZS4KKyAqIFdpdGhvdXQgdGhpcyBjbGFzcywgd2Ugd291bGQgbmVlZCB0byAncG9ydCcgamF2YS51dGlsLkRhdGUgdG8KKyAqIGNvbS5pYm0udXRpbCBhcyB3ZWxsLCBzbyB0aGF0IERhdGUgY291bGQgaW50ZXJvcGVyYXRlIHByb3Blcmx5IHdpdGgKKyAqIHRoZSBjb20uaWJtLnV0aWwgVGltZVpvbmUgYW5kIENhbGVuZGFyIGNsYXNzZXMuICBXaXRoIHRoaXMgY2xhc3MsCisgKiB3ZSBjYW4gKG1vc3RseSkgdXNlIGphdmEudXRpbC5EYXRlIHRvZ2V0aGVyIHdpdGggY29tLmlibS51dGlsCisgKiBjbGFzc2VzLgorICoKKyAqIDxwPlRoaXMgc29sdXRpb24gaXMgaW1wZXJmZWN0IGJlY2F1c2Ugb2YgdGhlIGZhdWx0eSBkZXNpZ24gb2YKKyAqIGphdmEudXRpbC5UaW1lWm9uZS4gIFNwZWNpZmljYWxseSwgVFogY29udGFpbnMgYSBwYWNrYWdlIHByaXZhdGUKKyAqIG1ldGhvZCwgZ2V0T2Zmc2V0KCksIHRoYXQgc2hvdWxkIHJlYWxseSBiZSBwdWJsaWMuICBCZWNhdXNlIGl0IGlzCisgKiBwYWNrYWdlIHByaXZhdGUsIGl0IGNhbm5vdCBiZSBvdmVycmlkZGVuIGZyb20gd2hlcmUgd2UgYXJlLCBhbmQgd2UKKyAqIGNhbm5vdCBwcm9wZXJseSBkZWxlZ2F0ZSBpdHMgb3BlcmF0aW9uIHRvIG91ciBjb250YWluZWQKKyAqIGNvbS5pYm0udXRpbC5TVFogb2JqZWN0LgorICoKKyAqIDxwPkZvciB0aGUgbW9tZW50IHdlIGxpdmUgd2l0aCB0aGlzIHByb2JsZW0uICBJdCBhcHBlYXIgbm90IHRvCisgKiBjYXVzZSB0b28gbXVjaCB0cm91YmxlIHNpbmNlIG1vc3QgcmVhbCBjb21wdXRhdGlvbnMgaGFwcGVuIHVzaW5nCisgKiB0aGUgY29tLmlibS51dGlsIGNsYXNzZXMuICBIb3dldmVyLCBpZiB0aGlzIGJlY29tZXMgYSBwcm9ibGVtIGluCisgKiB0aGUgZnV0dXJlLCB3ZSB3aWxsIGhhdmUgdG8gc3RvcCB1c2luZyB0aGlzIGFkYXB0ZXIsIGFuZCAncG9ydCcKKyAqIGphdmEudXRpbC5EYXRlIGludG8gY29tLmlibS51dGlsLgorICoKKyAqIEBzZWUgY29tLmlibS51dGlsLlRpbWVab25lI3NldERlZmF1bHQKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqLworcHVibGljIGNsYXNzIFNpbXBsZVRpbWVab25lQWRhcHRlciBleHRlbmRzIGphdmEudXRpbC5UaW1lWm9uZSB7CisKKyAgICAvKioKKyAgICAgKiBUaGUgY29udGFpbmVkIGNvbS5pYm0udXRpbC5TaW1wbGVUaW1lWm9uZSBvYmplY3QuCisgICAgICogV2UgZGVsZWdhdGUgYWxsIG1ldGhvZHMgdG8gdGhpcyBvYmplY3QuCisgICAgICovCisgICAgcHJpdmF0ZSBTaW1wbGVUaW1lWm9uZSB6b25lOworCisgICAgcHVibGljIFNpbXBsZVRpbWVab25lQWRhcHRlcihTaW1wbGVUaW1lWm9uZSB6b25lKSB7CisgICAgICAgIHRoaXMuem9uZSA9IHpvbmU7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgVGltZVpvbmUKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldElEKCkgeworICAgICAgICByZXR1cm4gem9uZS5nZXRJRCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlIFRpbWVab25lCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0SUQoU3RyaW5nIElEKSB7CisgICAgICAgIHpvbmUuc2V0SUQoSUQpOworICAgIH0gICAgCisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZSBUaW1lWm9uZQorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGhhc1NhbWVSdWxlcyhqYXZhLnV0aWwuVGltZVpvbmUgb3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIG90aGVyIGluc3RhbmNlb2YgU2ltcGxlVGltZVpvbmVBZGFwdGVyICYmCisgICAgICAgICAgICB6b25lLmhhc1NhbWVSdWxlcygoKFNpbXBsZVRpbWVab25lQWRhcHRlcilvdGhlcikuem9uZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGUgVGltZVpvbmUKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldE9mZnNldChpbnQgZXJhLCBpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LCBpbnQgZGF5T2ZXZWVrLAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtaWxsaXMpIHsKKyAgICAgICAgcmV0dXJuIHpvbmUuZ2V0T2Zmc2V0KGVyYSwgeWVhciwgbW9udGgsIGRheSwgZGF5T2ZXZWVrLCBtaWxsaXMpOworICAgIH0KKworICAgIC8vIFRoaXMgZG9lc24ndCB3b3JrISBCZWNhdXNlIHRoaXMgaXMgYSBwYWNrYWdlLXByaXZhdGUgbWV0aG9kLAorICAgIC8vIGl0IGNhbm5vdCBvdmVycmlkZSB0aGUgY29ycmVzcG9uZGluZyBtZXRob2QgaW4gamF2YS51dGlsLlRaLgorICAgIC8vIFRoaXMgcmVmbGVjdHMgYSBmdW5kYW1lbnRhbCBidWcgaW4gdGhlIGFyY2hpdGVjdHVyZSBvZgorICAgIC8vIGphdmEudXRpbC5UWi4gIElmIG5vdCBmb3IgdGhpcywgdGhpcyBhZGFwdGVyIGNsYXNzIHdvdWxkCisgICAgLy8gd29yayBmbGF3bGVzc2x5LiAtIGxpdQorLy8hICAgIC8qKgorLy8hICAgICAqIE92ZXJyaWRlIFRpbWVab25lCisvLyEgICAgICovCisvLyEgICAgaW50IGdldE9mZnNldChpbnQgZXJhLCBpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LCBpbnQgZGF5T2ZXZWVrLAorLy8hICAgICAgICAgICAgICAgICAgaW50IG1pbGxpcywgaW50IG1vbnRoTGVuZ3RoLCBpbnQgcHJldk1vbnRoTGVuZ3RoKSB7CisvLyEgICAgICAgIHJldHVybiB6b25lLmdldE9mZnNldChlcmEsIHllYXIsIG1vbnRoLCBkYXksIGRheU9mV2VlaywKKy8vISAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbGxpcywgbW9udGhMZW5ndGgsIHByZXZNb250aExlbmd0aCk7CisvLyEgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIFRpbWVab25lCisgICAgICogR2V0cyB0aGUgR01UIG9mZnNldCBmb3IgdGhpcyB0aW1lIHpvbmUuCisgICAgICovCisgICAgcHVibGljIGludCBnZXRSYXdPZmZzZXQoKSB7CisgICAgICAgIHJldHVybiB6b25lLmdldFJhd09mZnNldCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBUaW1lWm9uZQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFJhd09mZnNldChpbnQgb2Zmc2V0TWlsbGlzKSB7CisgICAgICAgIHpvbmUuc2V0UmF3T2Zmc2V0KG9mZnNldE1pbGxpcyk7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIFRpbWVab25lCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gdXNlRGF5bGlnaHRUaW1lKCkgeworICAgICAgICByZXR1cm4gem9uZS51c2VEYXlsaWdodFRpbWUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgVGltZVpvbmUKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpbkRheWxpZ2h0VGltZShEYXRlIGRhdGUpIHsKKyAgICAgICAgcmV0dXJuIHpvbmUuaW5EYXlsaWdodFRpbWUoZGF0ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIENsb25lYWJsZQorICAgICAqLworICAgIHB1YmxpYyBPYmplY3QgY2xvbmUoKSB7CisgICAgICAgIHJldHVybiBuZXcgU2ltcGxlVGltZVpvbmVBZGFwdGVyKChTaW1wbGVUaW1lWm9uZSl6b25lLmNsb25lKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlIGhhc2hDb2RlLgorICAgICAqLworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgaW50IGhhc2hDb2RlKCkgeworICAgICAgICByZXR1cm4gem9uZS5oYXNoQ29kZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbXBhcmVzIHRoZSBlcXVhbGl0eSBvZiB0d28gU2ltcGxlVGltZVpvbmUgb2JqZWN0cy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBvYmogIFRoZSBTaW1wbGVUaW1lWm9uZSBvYmplY3QgdG8gYmUgY29tcGFyZWQgd2l0aC4KKyAgICAgKiBAcmV0dXJuICAgICBUcnVlIGlmIHRoZSBnaXZlbiBvYmogaXMgdGhlIHNhbWUgYXMgdGhpcyBTaW1wbGVUaW1lWm9uZQorICAgICAqICAgICAgICAgICAgIG9iamVjdDsgZmFsc2Ugb3RoZXJ3aXNlLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7CisgICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBTaW1wbGVUaW1lWm9uZUFkYXB0ZXIpIHsKKyAgICAgICAgICAgIG9iaiA9ICgoU2ltcGxlVGltZVpvbmVBZGFwdGVyKW9iaikuem9uZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gem9uZS5lcXVhbHMob2JqKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB0aW1lIHpvbmUuCisgICAgICogQHJldHVybiAgYSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhpcyB0aW1lIHpvbmUuCisgICAgICovCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgLy8gU2hvdWxkIHByb2JhYmx5IHNob3cgb3VyIGNsYXNzIG5hbWUgaGVyZS4uLmZpeCBsYXRlci4KKyAgICAgICAgcmV0dXJuIHpvbmUudG9TdHJpbmcoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL1RpbWVab25lLmphdmEgYi9zcmMvY29tL2libS91dGlsL1RpbWVab25lLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjBjNDA5OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvVGltZVpvbmUuamF2YQpAQCAtMCwwICsxLDcwNSBAQAorLyoKKyAqIEAoIylUaW1lWm9uZS5qYXZhCTEuNTEgMDAvMDEvMTkKKyAqCisgKiBDb3B5cmlnaHQgMTk5Ni0yMDAwIFN1biBNaWNyb3N5c3RlbXMsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIAorICogVGhpcyBzb2Z0d2FyZSBpcyB0aGUgcHJvcHJpZXRhcnkgaW5mb3JtYXRpb24gb2YgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiAgCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zLgorICogCisgKi8KKworLyoKKyAqIChDKSBDb3B5cmlnaHQgVGFsaWdlbnQsIEluYy4gMTk5NiAtIEFsbCBSaWdodHMgUmVzZXJ2ZWQKKyAqIChDKSBDb3B5cmlnaHQgSUJNIENvcnAuIDE5OTYgLSBBbGwgUmlnaHRzIFJlc2VydmVkCisgKgorICogICBUaGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGlzIHNvdXJjZSBjb2RlIGFuZCBkb2N1bWVudGF0aW9uIGlzIGNvcHlyaWdodGVkCisgKiBhbmQgb3duZWQgYnkgVGFsaWdlbnQsIEluYy4sIGEgd2hvbGx5LW93bmVkIHN1YnNpZGlhcnkgb2YgSUJNLiBUaGVzZQorICogbWF0ZXJpYWxzIGFyZSBwcm92aWRlZCB1bmRlciB0ZXJtcyBvZiBhIExpY2Vuc2UgQWdyZWVtZW50IGJldHdlZW4gVGFsaWdlbnQKKyAqIGFuZCBTdW4uIFRoaXMgdGVjaG5vbG9neSBpcyBwcm90ZWN0ZWQgYnkgbXVsdGlwbGUgVVMgYW5kIEludGVybmF0aW9uYWwKKyAqIHBhdGVudHMuIFRoaXMgbm90aWNlIGFuZCBhdHRyaWJ1dGlvbiB0byBUYWxpZ2VudCBtYXkgbm90IGJlIHJlbW92ZWQuCisgKiAgIFRhbGlnZW50IGlzIGEgcmVnaXN0ZXJlZCB0cmFkZW1hcmsgb2YgVGFsaWdlbnQsIEluYy4KKyAqCisgKi8KKworcGFja2FnZSBjb20uaWJtLnV0aWw7CitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CitpbXBvcnQgamF2YS5sYW5nLnJlZi5Tb2Z0UmVmZXJlbmNlOworaW1wb3J0IGphdmEuc2VjdXJpdHkuQWNjZXNzQ29udHJvbGxlcjsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5LlByaXZpbGVnZWRBY3Rpb247CitpbXBvcnQgY29tLmlibS50ZXh0LlNpbXBsZURhdGVGb3JtYXQ7CitpbXBvcnQgY29tLmlibS50ZXh0Lk51bWJlckZvcm1hdDsKK2ltcG9ydCBqYXZhLnRleHQuUGFyc2VQb3NpdGlvbjsKK2ltcG9ydCBzdW4uc2VjdXJpdHkuYWN0aW9uLkdldFByb3BlcnR5QWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7CitpbXBvcnQgamF2YS51dGlsLkxvY2FsZTsKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworCisvKioKKyAqIDxjb2RlPlRpbWVab25lPC9jb2RlPiByZXByZXNlbnRzIGEgdGltZSB6b25lIG9mZnNldCwgYW5kIGFsc28gZmlndXJlcyBvdXQgZGF5bGlnaHQKKyAqIHNhdmluZ3MuCisgKgorICogPHA+CisgKiBUeXBpY2FsbHksIHlvdSBnZXQgYSA8Y29kZT5UaW1lWm9uZTwvY29kZT4gdXNpbmcgPGNvZGU+Z2V0RGVmYXVsdDwvY29kZT4KKyAqIHdoaWNoIGNyZWF0ZXMgYSA8Y29kZT5UaW1lWm9uZTwvY29kZT4gYmFzZWQgb24gdGhlIHRpbWUgem9uZSB3aGVyZSB0aGUgcHJvZ3JhbQorICogaXMgcnVubmluZy4gRm9yIGV4YW1wbGUsIGZvciBhIHByb2dyYW0gcnVubmluZyBpbiBKYXBhbiwgPGNvZGU+Z2V0RGVmYXVsdDwvY29kZT4KKyAqIGNyZWF0ZXMgYSA8Y29kZT5UaW1lWm9uZTwvY29kZT4gb2JqZWN0IGJhc2VkIG9uIEphcGFuZXNlIFN0YW5kYXJkIFRpbWUuCisgKgorICogPHA+CisgKiBZb3UgY2FuIGFsc28gZ2V0IGEgPGNvZGU+VGltZVpvbmU8L2NvZGU+IHVzaW5nIDxjb2RlPmdldFRpbWVab25lPC9jb2RlPgorICogYWxvbmcgd2l0aCBhIHRpbWUgem9uZSBJRC4gRm9yIGluc3RhbmNlLCB0aGUgdGltZSB6b25lIElEIGZvciB0aGUKKyAqIFUuUy4gUGFjaWZpYyBUaW1lIHpvbmUgaXMgIkFtZXJpY2EvTG9zX0FuZ2VsZXMiLiBTbywgeW91IGNhbiBnZXQgYQorICogVS5TLiBQYWNpZmljIFRpbWUgPGNvZGU+VGltZVpvbmU8L2NvZGU+IG9iamVjdCB3aXRoOgorICogPGJsb2NrcXVvdGU+CisgKiA8cHJlPgorICogVGltZVpvbmUgdHogPSBUaW1lWm9uZS5nZXRUaW1lWm9uZSgiQW1lcmljYS9Mb3NfQW5nZWxlcyIpOworICogPC9wcmU+CisgKiA8L2Jsb2NrcXVvdGU+CisgKiBZb3UgY2FuIHVzZSA8Y29kZT5nZXRBdmFpbGFibGVJRHM8L2NvZGU+IG1ldGhvZCB0byBpdGVyYXRlIHRocm91Z2gKKyAqIGFsbCB0aGUgc3VwcG9ydGVkIHRpbWUgem9uZSBJRHMuIFlvdSBjYW4gdGhlbiBjaG9vc2UgYQorICogc3VwcG9ydGVkIElEIHRvIGdldCBhIDxjb2RlPlRpbWVab25lPC9jb2RlPi4KKyAqIElmIHRoZSB0aW1lIHpvbmUgeW91IHdhbnQgaXMgbm90IHJlcHJlc2VudGVkIGJ5IG9uZSBvZiB0aGUKKyAqIHN1cHBvcnRlZCBJRHMsIHRoZW4geW91IGNhbiBjcmVhdGUgYSBjdXN0b20gdGltZSB6b25lIElEIHdpdGgKKyAqIHRoZSBmb2xsb3dpbmcgc3ludGF4OgorICoKKyAqIDxibG9ja3F1b3RlPgorICogPHByZT4KKyAqIEdNVFsrfC1daGhbWzpdbW1dCisgKiA8L3ByZT4KKyAqIDwvYmxvY2txdW90ZT4KKyAqCisgKiBGb3IgZXhhbXBsZSwgeW91IG1pZ2h0IHNwZWNpZnkgR01UKzE0OjAwIGFzIGEgY3VzdG9tCisgKiB0aW1lIHpvbmUgSUQuICBUaGUgPGNvZGU+VGltZVpvbmU8L2NvZGU+IHRoYXQgaXMgcmV0dXJuZWQKKyAqIHdoZW4geW91IHNwZWNpZnkgYSBjdXN0b20gdGltZSB6b25lIElEIGRvZXMgbm90IGluY2x1ZGUKKyAqIGRheWxpZ2h0IHNhdmluZ3MgdGltZS4KKyAqIDxwPgorICogRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBKREsgMS4xLngsIHNvbWUgb3RoZXIgdGhyZWUtbGV0dGVyIHRpbWUgem9uZSBJRHMKKyAqIChzdWNoIGFzICJQU1QiLCAiQ1RUIiwgIkFTVCIpIGFyZSBhbHNvIHN1cHBvcnRlZC4gSG93ZXZlciwgPHN0cm9uZz50aGVpcgorICogdXNlIGlzIGRlcHJlY2F0ZWQ8L3N0cm9uZz4gYmVjYXVzZSB0aGUgc2FtZSBhYmJyZXZpYXRpb24gaXMgb2Z0ZW4gdXNlZAorICogZm9yIG11bHRpcGxlIHRpbWUgem9uZXMgKGZvciBleGFtcGxlLCAiQ1NUIiBjb3VsZCBiZSBVLlMuICJDZW50cmFsIFN0YW5kYXJkCisgKiBUaW1lIiBhbmQgIkNoaW5hIFN0YW5kYXJkIFRpbWUiKSwgYW5kIHRoZSBKYXZhIHBsYXRmb3JtIGNhbiB0aGVuIG9ubHkKKyAqIHJlY29nbml6ZSBvbmUgb2YgdGhlbS4KKyAqCisgKgorICogQHNlZSAgICAgICAgICBDYWxlbmRhcgorICogQHNlZSAgICAgICAgICBHcmVnb3JpYW5DYWxlbmRhcgorICogQHNlZSAgICAgICAgICBTaW1wbGVUaW1lWm9uZQorICogQHZlcnNpb24gICAgICAxLjUxIDAxLzE5LzAwCisgKiBAYXV0aG9yICAgICAgIE1hcmsgRGF2aXMsIERhdmlkIEdvbGRzbWl0aCwgQ2hlbi1MaWVoIEh1YW5nLCBBbGFuIExpdQorICogQHNpbmNlICAgICAgICBKREsxLjEKKyAqLworYWJzdHJhY3QgcHVibGljIGNsYXNzIFRpbWVab25lIGltcGxlbWVudHMgU2VyaWFsaXphYmxlLCBDbG9uZWFibGUgeworICAgIC8qKgorICAgICAqIFNvbGUgY29uc3RydWN0b3IuICAoRm9yIGludm9jYXRpb24gYnkgc3ViY2xhc3MgY29uc3RydWN0b3JzLCB0eXBpY2FsbHkKKyAgICAgKiBpbXBsaWNpdC4pCisgICAgICovCisgICAgcHVibGljIFRpbWVab25lKCkgeworICAgIH0KKworICAgIC8qKgorICAgICAqIEEgc3R5bGUgc3BlY2lmaWVyIGZvciA8Y29kZT5nZXREaXNwbGF5TmFtZSgpPC9jb2RlPiBpbmRpY2F0aW5nCisgICAgICogYSBzaG9ydCBuYW1lLCBzdWNoIGFzICJQU1QuIgorICAgICAqIEBzZWUgI0xPTkcKKyAgICAgKiBAc2luY2UgMS4yCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0hPUlQgPSAwOworCisgICAgLyoqCisgICAgICogQSBzdHlsZSBzcGVjaWZpZXIgZm9yIDxjb2RlPmdldERpc3BsYXlOYW1lKCk8L2NvZGU+IGluZGljYXRpbmcKKyAgICAgKiBhIGxvbmcgbmFtZSwgc3VjaCBhcyAiUGFjaWZpYyBTdGFuZGFyZCBUaW1lLiIKKyAgICAgKiBAc2VlICNTSE9SVAorICAgICAqIEBzaW5jZSAxLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBMT05HICA9IDE7CisKKyAgICAvLyBDb25zdGFudHMgdXNlZCBpbnRlcm5hbGx5OyB1bml0IGlzIG1pbGxpc2Vjb25kcworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBPTkVfTUlOVVRFID0gNjAqMTAwMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgT05FX0hPVVIgICA9IDYwKk9ORV9NSU5VVEU7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE9ORV9EQVkgICAgPSAyNCpPTkVfSE9VUjsKKworICAgIC8qKgorICAgICAqIENhY2hlIHRvIGhvbGQgdGhlIFNpbXBsZURhdGVGb3JtYXQgb2JqZWN0cyBmb3IgYSBMb2NhbGUuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgSGFzaHRhYmxlIGNhY2hlZExvY2FsZURhdGEgPSBuZXcgSGFzaHRhYmxlKDMpOworCisgICAgLy8gUHJvY2xhaW0gc2VyaWFsaXphdGlvbiBjb21wYXRpYmlsaXR5IHdpdGggSkRLIDEuMQorICAgIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAzNTgxNDYzMzY5MTY2OTI0OTYxTDsKKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIHRpbWUgem9uZSBvZmZzZXQsIGZvciBjdXJyZW50IGRhdGUsIG1vZGlmaWVkIGluIGNhc2Ugb2YKKyAgICAgKiBkYXlsaWdodCBzYXZpbmdzLiBUaGlzIGlzIHRoZSBvZmZzZXQgdG8gYWRkICp0byogVVRDIHRvIGdldCBsb2NhbCB0aW1lLgorICAgICAqIEBwYXJhbSBlcmEgdGhlIGVyYSBvZiB0aGUgZ2l2ZW4gZGF0ZS4KKyAgICAgKiBAcGFyYW0geWVhciB0aGUgeWVhciBpbiB0aGUgZ2l2ZW4gZGF0ZS4KKyAgICAgKiBAcGFyYW0gbW9udGggdGhlIG1vbnRoIGluIHRoZSBnaXZlbiBkYXRlLgorICAgICAqIE1vbnRoIGlzIDAtYmFzZWQuIGUuZy4sIDAgZm9yIEphbnVhcnkuCisgICAgICogQHBhcmFtIGRheSB0aGUgZGF5LWluLW1vbnRoIG9mIHRoZSBnaXZlbiBkYXRlLgorICAgICAqIEBwYXJhbSBkYXlPZldlZWsgdGhlIGRheS1vZi13ZWVrIG9mIHRoZSBnaXZlbiBkYXRlLgorICAgICAqIEBwYXJhbSBtaWxsaXNlY29uZHMgdGhlIG1pbGxpcyBpbiBkYXkgaW4gPGVtPnN0YW5kYXJkPC9lbT4gbG9jYWwgdGltZS4KKyAgICAgKiBAcmV0dXJuIHRoZSBvZmZzZXQgdG8gYWRkICp0byogR01UIHRvIGdldCBsb2NhbCB0aW1lLgorICAgICAqLworICAgIGFic3RyYWN0IHB1YmxpYyBpbnQgZ2V0T2Zmc2V0KGludCBlcmEsIGludCB5ZWFyLCBpbnQgbW9udGgsIGludCBkYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRheU9mV2VlaywgaW50IG1pbGxpc2Vjb25kcyk7CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSB0aW1lIHpvbmUgb2Zmc2V0LCBmb3IgY3VycmVudCBkYXRlLCBtb2RpZmllZCBpbiBjYXNlIG9mCisgICAgICogZGF5bGlnaHQgc2F2aW5ncy4gVGhpcyBpcyB0aGUgb2Zmc2V0IHRvIGFkZCAqdG8qIFVUQyB0byBnZXQgbG9jYWwgdGltZS4KKyAgICAgKiBAcGFyYW0gZXJhIHRoZSBlcmEgb2YgdGhlIGdpdmVuIGRhdGUuCisgICAgICogQHBhcmFtIHllYXIgdGhlIHllYXIgaW4gdGhlIGdpdmVuIGRhdGUuCisgICAgICogQHBhcmFtIG1vbnRoIHRoZSBtb250aCBpbiB0aGUgZ2l2ZW4gZGF0ZS4KKyAgICAgKiBNb250aCBpcyAwLWJhc2VkLiBlLmcuLCAwIGZvciBKYW51YXJ5LgorICAgICAqIEBwYXJhbSBkYXkgdGhlIGRheS1pbi1tb250aCBvZiB0aGUgZ2l2ZW4gZGF0ZS4KKyAgICAgKiBAcGFyYW0gZGF5T2ZXZWVrIHRoZSBkYXktb2Ytd2VlayBvZiB0aGUgZ2l2ZW4gZGF0ZS4KKyAgICAgKiBAcGFyYW0gbWlsbGlzZWNvbmRzIHRoZSBtaWxsaXMgaW4gZGF5IGluIDxlbT5zdGFuZGFyZDwvZW0+IGxvY2FsIHRpbWUuCisgICAgICogQHBhcmFtIG1vbnRoTGVuZ3RoIHRoZSBsZW5ndGggb2YgdGhlIGdpdmVuIG1vbnRoIGluIGRheXMuCisgICAgICogQHBhcmFtIHByZXZNb250aExlbmd0aCB0aGUgbGVuZ3RoIG9mIHRoZSBwcmV2aW91cyBtb250aCBpbiBkYXlzLgorICAgICAqIEByZXR1cm4gdGhlIG9mZnNldCB0byBhZGQgKnRvKiBHTVQgdG8gZ2V0IGxvY2FsIHRpbWUuCisgICAgICovCisgICAgaW50IGdldE9mZnNldChpbnQgZXJhLCBpbnQgeWVhciwgaW50IG1vbnRoLCBpbnQgZGF5LAorCQkgIGludCBkYXlPZldlZWssIGludCBtaWxsaXNlY29uZHMsIGludCBtb250aExlbmd0aCwgaW50IHByZXZNb250aExlbmd0aCkgeworCS8vIERlZmF1bHQgaW1wbGVtZW50YXRpb24gd2hpY2ggaWdub3JlcyB0aGUgbW9udGhMZW5ndGguCisJLy8gU2ltcGxlVGltZVpvbmUgb3ZlcnJpZGVzIHRoaXMgYW5kIGFjdHVhbGx5IHVzZXMgbW9udGhMZW5ndGguCisJcmV0dXJuIGdldE9mZnNldChlcmEsIHllYXIsIG1vbnRoLCBkYXksIGRheU9mV2VlaywgbWlsbGlzZWNvbmRzKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogTkVXQ0FMCisgICAgICogR2V0cyB0aGUgbG9jYWwgdGltZSB6b25lIG9mZnNldCBmb3IgdGhpcyB6b25lLCBmb3IgdGhlIGdpdmVuIGRhdGUuCisgICAgICogQHBhcmFtIGV5ZWFyIHRoZSBleHRlbmRlZCBHcmVnb3JpYW4geWVhciwgd2l0aCAwID0gMSBCQywgLTEgPSAyIEJDLAorICAgICAqIGV0Yy4KKyAgICAgKi8KKyAgICBpbnQgZ2V0T2Zmc2V0KGludCBleWVhciwgaW50IG1vbnRoLCBpbnQgZGF5T2ZNb250aCwgaW50IGRheU9mV2VlaywKKyAgICAgICAgICAgICAgICAgIGludCBtaWxsaXNlY29uZHMsIGludCBtb250aExlbmd0aCwgaW50IHByZXZNb250aExlbmd0aCkgeworICAgICAgICAvLyBURU1QT1JBUlk6IENvbnZlcnQgdGhlIGV5ZWFyIHRvIGFuIGVyYS95ZWFyIGFuZCBjYWxsIG9sZCBBUEkKKyAgICAgICAgaW50IGVyYSA9IEdyZWdvcmlhbkNhbGVuZGFyLkFEOworICAgICAgICBpZiAoZXllYXIgPCAxKSB7CisgICAgICAgICAgICBlcmEgPSBHcmVnb3JpYW5DYWxlbmRhci5CQzsKKyAgICAgICAgICAgIGV5ZWFyID0gMSAtIGV5ZWFyOworICAgICAgICB9CisgICAgICAgIHJldHVybiBnZXRPZmZzZXQoZXJhLCBleWVhciwgbW9udGgsIGRheU9mTW9udGgsIGRheU9mV2VlaywKKyAgICAgICAgICAgICAgICAgICAgICAgICBtaWxsaXNlY29uZHMsIG1vbnRoTGVuZ3RoLCBwcmV2TW9udGhMZW5ndGgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGJhc2UgdGltZSB6b25lIG9mZnNldCB0byBHTVQuCisgICAgICogVGhpcyBpcyB0aGUgb2Zmc2V0IHRvIGFkZCAqdG8qIFVUQyB0byBnZXQgbG9jYWwgdGltZS4KKyAgICAgKiBAcGFyYW0gb2Zmc2V0TWlsbGlzIHRoZSBnaXZlbiBiYXNlIHRpbWUgem9uZSBvZmZzZXQgdG8gR01ULgorICAgICAqLworICAgIGFic3RyYWN0IHB1YmxpYyB2b2lkIHNldFJhd09mZnNldChpbnQgb2Zmc2V0TWlsbGlzKTsKKworICAgIC8qKgorICAgICAqIEdldHMgdW5tb2RpZmllZCBvZmZzZXQsIE5PVCBtb2RpZmllZCBpbiBjYXNlIG9mIGRheWxpZ2h0IHNhdmluZ3MuCisgICAgICogVGhpcyBpcyB0aGUgb2Zmc2V0IHRvIGFkZCAqdG8qIFVUQyB0byBnZXQgbG9jYWwgdGltZS4KKyAgICAgKiBAcmV0dXJuIHRoZSB1bm1vZGlmaWVkIG9mZnNldCB0byBhZGQgKnRvKiBVVEMgdG8gZ2V0IGxvY2FsIHRpbWUuCisgICAgICovCisgICAgYWJzdHJhY3QgcHVibGljIGludCBnZXRSYXdPZmZzZXQoKTsKKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIElEIG9mIHRoaXMgdGltZSB6b25lLgorICAgICAqIEByZXR1cm4gdGhlIElEIG9mIHRoaXMgdGltZSB6b25lLgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0SUQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIElEOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHRpbWUgem9uZSBJRC4gVGhpcyBkb2VzIG5vdCBjaGFuZ2UgYW55IG90aGVyIGRhdGEgaW4KKyAgICAgKiB0aGUgdGltZSB6b25lIG9iamVjdC4KKyAgICAgKiBAcGFyYW0gSUQgdGhlIG5ldyB0aW1lIHpvbmUgSUQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0SUQoU3RyaW5nIElEKQorICAgIHsKKyAgICAgICAgaWYgKElEID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigpOworICAgICAgICB9CisgICAgICAgIHRoaXMuSUQgPSBJRDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgbmFtZSBvZiB0aGlzIHRpbWUgem9uZSBzdWl0YWJsZSBmb3IgcHJlc2VudGF0aW9uIHRvIHRoZSB1c2VyCisgICAgICogaW4gdGhlIGRlZmF1bHQgbG9jYWxlLgorICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGxvbmcgbmFtZSwgbm90IGluY2x1ZGluZyBkYXlsaWdodCBzYXZpbmdzLgorICAgICAqIElmIHRoZSBkaXNwbGF5IG5hbWUgaXMgbm90IGF2YWlsYWJsZSBmb3IgdGhlIGxvY2FsZSwKKyAgICAgKiB0aGVuIHRoaXMgbWV0aG9kIHJldHVybnMgYSBzdHJpbmcgaW4gdGhlIGZvcm1hdAorICAgICAqIDxjb2RlPkdNVFsrLV1oaDptbTwvY29kZT4uCisgICAgICogQHJldHVybiB0aGUgaHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0aGlzIHRpbWUgem9uZSBpbiB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICogQHNpbmNlIDEuMgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBTdHJpbmcgZ2V0RGlzcGxheU5hbWUoKSB7CisgICAgICAgIHJldHVybiBnZXREaXNwbGF5TmFtZShmYWxzZSwgTE9ORywgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIG5hbWUgb2YgdGhpcyB0aW1lIHpvbmUgc3VpdGFibGUgZm9yIHByZXNlbnRhdGlvbiB0byB0aGUgdXNlcgorICAgICAqIGluIHRoZSBzcGVjaWZpZWQgbG9jYWxlLgorICAgICAqIFRoaXMgbWV0aG9kIHJldHVybnMgdGhlIGxvbmcgbmFtZSwgbm90IGluY2x1ZGluZyBkYXlsaWdodCBzYXZpbmdzLgorICAgICAqIElmIHRoZSBkaXNwbGF5IG5hbWUgaXMgbm90IGF2YWlsYWJsZSBmb3IgdGhlIGxvY2FsZSwKKyAgICAgKiB0aGVuIHRoaXMgbWV0aG9kIHJldHVybnMgYSBzdHJpbmcgaW4gdGhlIGZvcm1hdAorICAgICAqIDxjb2RlPkdNVFsrLV1oaDptbTwvY29kZT4uCisgICAgICogQHBhcmFtIGxvY2FsZSB0aGUgbG9jYWxlIGluIHdoaWNoIHRvIHN1cHBseSB0aGUgZGlzcGxheSBuYW1lLgorICAgICAqIEByZXR1cm4gdGhlIGh1bWFuLXJlYWRhYmxlIG5hbWUgb2YgdGhpcyB0aW1lIHpvbmUgaW4gdGhlIGdpdmVuIGxvY2FsZQorICAgICAqIG9yIGluIHRoZSBkZWZhdWx0IGxvY2FsZSBpZiB0aGUgZ2l2ZW4gbG9jYWxlIGlzIG5vdCByZWNvZ25pemVkLgorICAgICAqIEBzaW5jZSAxLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgU3RyaW5nIGdldERpc3BsYXlOYW1lKExvY2FsZSBsb2NhbGUpIHsKKyAgICAgICAgcmV0dXJuIGdldERpc3BsYXlOYW1lKGZhbHNlLCBMT05HLCBsb2NhbGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBuYW1lIG9mIHRoaXMgdGltZSB6b25lIHN1aXRhYmxlIGZvciBwcmVzZW50YXRpb24gdG8gdGhlIHVzZXIKKyAgICAgKiBpbiB0aGUgZGVmYXVsdCBsb2NhbGUuCisgICAgICogSWYgdGhlIGRpc3BsYXkgbmFtZSBpcyBub3QgYXZhaWxhYmxlIGZvciB0aGUgbG9jYWxlLAorICAgICAqIHRoZW4gdGhpcyBtZXRob2QgcmV0dXJucyBhIHN0cmluZyBpbiB0aGUgZm9ybWF0CisgICAgICogPGNvZGU+R01UWystXWhoOm1tPC9jb2RlPi4KKyAgICAgKiBAcGFyYW0gZGF5bGlnaHQgaWYgdHJ1ZSwgcmV0dXJuIHRoZSBkYXlsaWdodCBzYXZpbmdzIG5hbWUuCisgICAgICogQHBhcmFtIHN0eWxlIGVpdGhlciA8Y29kZT5MT05HPC9jb2RlPiBvciA8Y29kZT5TSE9SVDwvY29kZT4KKyAgICAgKiBAcmV0dXJuIHRoZSBodW1hbi1yZWFkYWJsZSBuYW1lIG9mIHRoaXMgdGltZSB6b25lIGluIHRoZSBkZWZhdWx0IGxvY2FsZS4KKyAgICAgKiBAc2luY2UgMS4yCisgICAgICovCisgICAgcHVibGljIGZpbmFsIFN0cmluZyBnZXREaXNwbGF5TmFtZShib29sZWFuIGRheWxpZ2h0LCBpbnQgc3R5bGUpIHsKKyAgICAgICAgcmV0dXJuIGdldERpc3BsYXlOYW1lKGRheWxpZ2h0LCBzdHlsZSwgTG9jYWxlLmdldERlZmF1bHQoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIG5hbWUgb2YgdGhpcyB0aW1lIHpvbmUgc3VpdGFibGUgZm9yIHByZXNlbnRhdGlvbiB0byB0aGUgdXNlcgorICAgICAqIGluIHRoZSBzcGVjaWZpZWQgbG9jYWxlLgorICAgICAqIElmIHRoZSBkaXNwbGF5IG5hbWUgaXMgbm90IGF2YWlsYWJsZSBmb3IgdGhlIGxvY2FsZSwKKyAgICAgKiB0aGVuIHRoaXMgbWV0aG9kIHJldHVybnMgYSBzdHJpbmcgaW4gdGhlIGZvcm1hdAorICAgICAqIDxjb2RlPkdNVFsrLV1oaDptbTwvY29kZT4uCisgICAgICogQHBhcmFtIGRheWxpZ2h0IGlmIHRydWUsIHJldHVybiB0aGUgZGF5bGlnaHQgc2F2aW5ncyBuYW1lLgorICAgICAqIEBwYXJhbSBzdHlsZSBlaXRoZXIgPGNvZGU+TE9ORzwvY29kZT4gb3IgPGNvZGU+U0hPUlQ8L2NvZGU+CisgICAgICogQHBhcmFtIGxvY2FsZSB0aGUgbG9jYWxlIGluIHdoaWNoIHRvIHN1cHBseSB0aGUgZGlzcGxheSBuYW1lLgorICAgICAqIEByZXR1cm4gdGhlIGh1bWFuLXJlYWRhYmxlIG5hbWUgb2YgdGhpcyB0aW1lIHpvbmUgaW4gdGhlIGdpdmVuIGxvY2FsZQorICAgICAqIG9yIGluIHRoZSBkZWZhdWx0IGxvY2FsZSBpZiB0aGUgZ2l2ZW4gbG9jYWxlIGlzIG5vdCByZWNvZ25pemVkLgorICAgICAqIEBleGNlcHRpb24gSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHN0eWxlIGlzIGludmFsaWQuCisgICAgICogQHNpbmNlIDEuMgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0RGlzcGxheU5hbWUoYm9vbGVhbiBkYXlsaWdodCwgaW50IHN0eWxlLCBMb2NhbGUgbG9jYWxlKSB7CisgICAgICAgIC8qIE5PVEVTOgorICAgICAgICAgKiAoMSkgV2UgdXNlIFNpbXBsZURhdGVGb3JtYXQgZm9yIHNpbXBsaWNpdHk7IHdlIGNvdWxkIGRvIHRoaXMKKyAgICAgICAgICogbW9yZSBlZmZpY2llbnRseSBidXQgaXQgd291bGQgZHVwbGljYXRlIHRoZSBTaW1wbGVEYXRlRm9ybWF0IGNvZGUKKyAgICAgICAgICogaGVyZSwgd2hpY2ggaXMgdW5kZXNpcmFibGUuCisgICAgICAgICAqICgyKSBBdHRlbXB0cyB0byBtb3ZlIHRoZSBjb2RlIGZyb20gU2ltcGxlRGF0ZUZvcm1hdCB0byBoZXJlIGFsc28gcnVuCisgICAgICAgICAqIGFncm91bmQgYmVjYXVzZSB0aGlzIHJlcXVpcmVzIFNpbXBsZURhdGVGb3JtYXQgdG8ga2VlcCBhIExvY2FsZQorICAgICAgICAgKiBvYmplY3QgYXJvdW5kLCB3aGljaCBpdCBjdXJyZW50bHkgZG9lc24ndDsgdG8gc3ludGhlc2l6ZSBzdWNoIGEKKyAgICAgICAgICogbG9jYWxlIHVwb24gcmVzdXJyZWN0aW9uOyBhbmQgdG8gc29tZWhvdyBoYW5kbGUgdGhlIHNwZWNpYWwgY2FzZSBvZgorICAgICAgICAgKiBjb25zdHJ1Y3Rpb24gZnJvbSBhIERhdGVGb3JtYXRTeW1ib2xzIG9iamVjdC4KKyAgICAgICAgICovCisgICAgICAgIGlmIChzdHlsZSAhPSBTSE9SVCAmJiBzdHlsZSAhPSBMT05HKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbGxlZ2FsIHN0eWxlOiAiICsgc3R5bGUpOworICAgICAgICB9CisgICAgICAgIC8vIFdlIGtlZXAgYSBjYWNoZSwgaW5kZXhlZCBieSBsb2NhbGUuICBUaGUgY2FjaGUgY29udGFpbnMgYQorICAgICAgICAvLyBTaW1wbGVEYXRlRm9ybWF0IG9iamVjdCwgd2hpY2ggd2UgY3JlYXRlIG9uIGRlbWFuZC4KKyAgICAgICAgU29mdFJlZmVyZW5jZSBkYXRhID0gKFNvZnRSZWZlcmVuY2UpY2FjaGVkTG9jYWxlRGF0YS5nZXQobG9jYWxlKTsKKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBmb3JtYXQ7CisgICAgICAgIGlmIChkYXRhID09IG51bGwgfHwKKyAgICAgICAgICAgIChmb3JtYXQgPSAoU2ltcGxlRGF0ZUZvcm1hdClkYXRhLmdldCgpKSA9PSBudWxsKSB7CisgICAgICAgICAgICBmb3JtYXQgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdChudWxsLCBsb2NhbGUpOworICAgICAgICAgICAgY2FjaGVkTG9jYWxlRGF0YS5wdXQobG9jYWxlLCBuZXcgU29mdFJlZmVyZW5jZShmb3JtYXQpKTsKKyAgICAgICAgfQorICAgICAgICAvLyBDcmVhdGUgYSBuZXcgU2ltcGxlVGltZVpvbmUgYXMgYSBzdGFuZC1pbiBmb3IgdGhpcyB6b25lOyB0aGUgc3RhbmQtaW4KKyAgICAgICAgLy8gd2lsbCBoYXZlIG5vIERTVCwgb3IgRFNUIGR1cmluZyBKYW51YXJ5LCBidXQgdGhlIHNhbWUgSUQgYW5kIG9mZnNldCwKKyAgICAgICAgLy8gYW5kIGhlbmNlIHRoZSBzYW1lIGRpc3BsYXkgbmFtZS4gIFdlIGRvbid0IGNhY2hlIHRoZXNlIGJlY2F1c2UKKyAgICAgICAgLy8gdGhleSdyZSBzbWFsbCBhbmQgY2hlYXAgdG8gY3JlYXRlLgorICAgICAgICBTaW1wbGVUaW1lWm9uZSB0ejsKKyAgICAgICAgaWYgKGRheWxpZ2h0ICYmIHVzZURheWxpZ2h0VGltZSgpKSB7CisgICAgICAgICAgICBpbnQgc2F2aW5ncyA9IE9ORV9IT1VSOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBzYXZpbmdzID0gKChTaW1wbGVUaW1lWm9uZSkgdGhpcykuZ2V0RFNUU2F2aW5ncygpOworICAgICAgICAgICAgfSBjYXRjaCAoQ2xhc3NDYXN0RXhjZXB0aW9uIGUpIHt9CisgICAgICAgICAgICB0eiA9IG5ldyBTaW1wbGVUaW1lWm9uZShnZXRSYXdPZmZzZXQoKSwgZ2V0SUQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENhbGVuZGFyLkpBTlVBUlksIDEsIDAsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYWxlbmRhci5GRUJSVUFSWSwgMSwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmluZ3MpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdHogPSBuZXcgU2ltcGxlVGltZVpvbmUoZ2V0UmF3T2Zmc2V0KCksIGdldElEKCkpOworICAgICAgICB9CisgICAgICAgIGZvcm1hdC5hcHBseVBhdHRlcm4oc3R5bGUgPT0gTE9ORyA/ICJ6enp6IiA6ICJ6Iik7ICAgICAgCisgICAgICAgIGZvcm1hdC5zZXRUaW1lWm9uZSh0eik7CisgICAgICAgIC8vIEZvcm1hdCBhIGRhdGUgaW4gSmFudWFyeS4gIFdlIHVzZSB0aGUgdmFsdWUgMTAqT05FX0RBWSA9PSBKYW4gMTEgMTk3MAorICAgICAgICAvLyAwOjAwIEdNVC4KKyAgICAgICAgcmV0dXJuIGZvcm1hdC5mb3JtYXQobmV3IERhdGUoODY0MDAwMDAwTCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFF1ZXJpZXMgaWYgdGhpcyB0aW1lIHpvbmUgdXNlcyBkYXlsaWdodCBzYXZpbmdzIHRpbWUuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoaXMgdGltZSB6b25lIHVzZXMgZGF5bGlnaHQgc2F2aW5ncyB0aW1lLAorICAgICAqIGZhbHNlLCBvdGhlcndpc2UuCisgICAgICovCisgICAgYWJzdHJhY3QgcHVibGljIGJvb2xlYW4gdXNlRGF5bGlnaHRUaW1lKCk7CisKKyAgICAvKioKKyAgICAgKiBRdWVyaWVzIGlmIHRoZSBnaXZlbiBkYXRlIGlzIGluIGRheWxpZ2h0IHNhdmluZ3MgdGltZSBpbgorICAgICAqIHRoaXMgdGltZSB6b25lLgorICAgICAqIEBwYXJhbSBkYXRlIHRoZSBnaXZlbiBEYXRlLgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gZGF0ZSBpcyBpbiBkYXlsaWdodCBzYXZpbmdzIHRpbWUsCisgICAgICogZmFsc2UsIG90aGVyd2lzZS4KKyAgICAgKi8KKyAgICBhYnN0cmFjdCBwdWJsaWMgYm9vbGVhbiBpbkRheWxpZ2h0VGltZShEYXRlIGRhdGUpOworCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgPGNvZGU+VGltZVpvbmU8L2NvZGU+IGZvciB0aGUgZ2l2ZW4gSUQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gSUQgdGhlIElEIGZvciBhIDxjb2RlPlRpbWVab25lPC9jb2RlPiwgZWl0aGVyIGFuIGFiYnJldmlhdGlvbgorICAgICAqIHN1Y2ggYXMgIlBTVCIsIGEgZnVsbCBuYW1lIHN1Y2ggYXMgIkFtZXJpY2EvTG9zX0FuZ2VsZXMiLCBvciBhIGN1c3RvbQorICAgICAqIElEIHN1Y2ggYXMgIkdNVC04OjAwIi4gTm90ZSB0aGF0IHRoZSBzdXBwb3J0IG9mIGFiYnJldmlhdGlvbnMgaXMKKyAgICAgKiBmb3IgSkRLIDEuMS54IGNvbXBhdGliaWxpdHkgb25seSBhbmQgZnVsbCBuYW1lcyBzaG91bGQgYmUgdXNlZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIHNwZWNpZmllZCA8Y29kZT5UaW1lWm9uZTwvY29kZT4sIG9yIHRoZSBHTVQgem9uZSBpZiB0aGUgZ2l2ZW4gSUQKKyAgICAgKiBjYW5ub3QgYmUgdW5kZXJzdG9vZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHN5bmNocm9uaXplZCBUaW1lWm9uZSBnZXRUaW1lWm9uZShTdHJpbmcgSUQpIHsKKyAgICAgICAgLyogV2UgZmlyc3QgdHJ5IHRvIGxvb2t1cCB0aGUgem9uZSBJRCBpbiBvdXIgaGFzaHRhYmxlLiAgSWYgdGhpcyBmYWlscywKKyAgICAgICAgICogd2UgdHJ5IHRvIHBhcnNlIGl0IGFzIGEgY3VzdG9tIHN0cmluZyBHTVRbKy1daGg6bW0uICBUaGlzIGFsbG93cyB1cworICAgICAgICAgKiB0byByZWNvZ25pemUgem9uZXMgaW4gdXNlci50aW1lem9uZSB0aGF0IG90aGVyd2lzZSBjYW5ub3QgYmUKKyAgICAgICAgICogaWRlbnRpZmllZC4gIFdlIGRvIHRoZSByZWNvZ25pdGlvbiBoZXJlLCByYXRoZXIgdGhhbiBpbiBnZXREZWZhdWx0KCksCisgICAgICAgICAqIHNvIHRoYXQgdGhlIGRlZmF1bHQgem9uZSBpcyBhbHdheXMgdGhlIHJlc3VsdCBvZiBjYWxsaW5nCisgICAgICAgICAqIGdldFRpbWVab25lKCkgd2l0aCB0aGUgcHJvcGVydHkgdXNlci50aW1lem9uZS4KKyAgICAgICAgICoKKyAgICAgICAgICogSWYgYWxsIGVsc2UgZmFpbHMsIHdlIHJldHVybiBHTVQsIHdoaWNoIGlzIHByb2JhYmx5IG5vdCB3aGF0IHRoZSB1c2VyCisgICAgICAgICAqIHdhbnRzLCBidXQgYXQgbGVhc3QgaXMgYSBmdW5jdGlvbmluZyBUaW1lWm9uZSBvYmplY3QuICovCisgICAgICAgIFRpbWVab25lIHpvbmUgPSBUaW1lWm9uZURhdGEuZ2V0KElEKTsKKyAgICAgICAgaWYgKHpvbmUgPT0gbnVsbCkgem9uZSA9IHBhcnNlQ3VzdG9tVGltZVpvbmUoSUQpOworICAgICAgICBpZiAoem9uZSA9PSBudWxsKSB6b25lID0gKFRpbWVab25lKUdNVC5jbG9uZSgpOworICAgICAgICByZXR1cm4gem9uZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBuZXcgU3RyaW5nIGFycmF5IGNvbnRhaW5pbmcgYWxsIHN5c3RlbSBUaW1lWm9uZSBJRHMKKyAgICAgKiB3aXRoIHRoZSBnaXZlbiByYXcgb2Zmc2V0IGZyb20gR01ULiAgVGhlc2UgSURzIG1heSBiZSBwYXNzZWQgdG8KKyAgICAgKiA8Y29kZT5nZXQoKTwvY29kZT4gdG8gY29uc3RydWN0IHRoZSBjb3JyZXNwb25kaW5nIFRpbWVab25lCisgICAgICogb2JqZWN0LgorICAgICAqIEBwYXJhbSByYXdPZmZzZXQgdGhlIG9mZnNldCBpbiBtaWxsaXNlY29uZHMgZnJvbSBHTVQKKyAgICAgKiBAcmV0dXJuIGFuIGFycmF5IG9mIElEcyBmb3Igc3lzdGVtIFRpbWVab25lcyB3aXRoIHRoZSBnaXZlbgorICAgICAqIHJhdyBvZmZzZXQuICBJZiB0aGVyZSBhcmUgbm9uZSwgcmV0dXJuIGEgemVyby1sZW5ndGggYXJyYXkuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBnZXRBdmFpbGFibGVJRHMoaW50IHJhd09mZnNldCkgeworICAgICAgICByZXR1cm4gVGltZVpvbmVEYXRhLmdldEF2YWlsYWJsZUlEcyhyYXdPZmZzZXQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIG5ldyBTdHJpbmcgYXJyYXkgY29udGFpbmluZyBhbGwgc3lzdGVtIFRpbWVab25lIElEcworICAgICAqIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gY291bnRyeS4gIFRoZXNlIElEcyBtYXkgYmUgcGFzc2VkIHRvCisgICAgICogPGNvZGU+Z2V0KCk8L2NvZGU+IHRvIGNvbnN0cnVjdCB0aGUgY29ycmVzcG9uZGluZyBUaW1lWm9uZQorICAgICAqIG9iamVjdC4KKyAgICAgKiBAcGFyYW0gYSB0d28tbGV0dGVyIElTTyAzMTY2IGNvdW50cnkgY29kZSwgb3IgPGNvZGU+bnVsbDwvY29kZT4KKyAgICAgKiB0byByZXR1cm4gem9uZXMgbm90IGFzc29jaWF0ZWQgd2l0aCBhbnkgY291bnRyeQorICAgICAqIEByZXR1cm4gYW4gYXJyYXkgb2YgSURzIGZvciBzeXN0ZW0gVGltZVpvbmVzIGluIHRoZSBnaXZlbgorICAgICAqIGNvdW50cnkuICBJZiB0aGVyZSBhcmUgbm9uZSwgcmV0dXJuIGEgemVyby1sZW5ndGggYXJyYXkuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBnZXRBdmFpbGFibGVJRHMoU3RyaW5nIGNvdW50cnkpIHsKKyAgICAgICAgcmV0dXJuIFRpbWVab25lRGF0YS5nZXRBdmFpbGFibGVJRHMoY291bnRyeSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIGEgbmV3IFN0cmluZyBhcnJheSBjb250YWluaW5nIGFsbCBzeXN0ZW0gVGltZVpvbmUgSURzLgorICAgICAqIFRoZXNlIElEcyAoYW5kIG9ubHkgdGhlc2UgSURzKSBtYXkgYmUgcGFzc2VkIHRvCisgICAgICogPGNvZGU+Z2V0KCk8L2NvZGU+IHRvIGNvbnN0cnVjdCB0aGUgY29ycmVzcG9uZGluZyBUaW1lWm9uZQorICAgICAqIG9iamVjdC4KKyAgICAgKiBAcmV0dXJuIGFuIGFycmF5IG9mIGFsbCBzeXN0ZW0gVGltZVpvbmUgSURzCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBnZXRBdmFpbGFibGVJRHMoKSB7CisgICAgICAgIHJldHVybiBUaW1lWm9uZURhdGEuZ2V0QXZhaWxhYmxlSURzKCk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBJRHMgaW4gdGhlIGVxdWl2YWxlbmN5IGdyb3VwIHRoYXQKKyAgICAgKiBpbmNsdWRlcyB0aGUgZ2l2ZW4gSUQuICBBbiBlcXVpdmFsZW5jeSBncm91cCBjb250YWlucyB6b25lcworICAgICAqIHRoYXQgaGF2ZSB0aGUgc2FtZSBHTVQgb2Zmc2V0IGFuZCBydWxlcy4KKyAgICAgKgorICAgICAqIDxwPlRoZSByZXR1cm5lZCBjb3VudCBpbmNsdWRlcyB0aGUgZ2l2ZW4gSUQ7IGl0IGlzIGFsd2F5cyA+PSAxCisgICAgICogZm9yIHZhbGlkIElEcy4gIFRoZSBnaXZlbiBJRCBtdXN0IGJlIGEgc3lzdGVtIHRpbWUgem9uZS4gIElmIGl0CisgICAgICogaXMgbm90LCByZXR1cm5zIHplcm8uCisgICAgICogQHBhcmFtIGlkIGEgc3lzdGVtIHRpbWUgem9uZSBJRAorICAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiB6b25lcyBpbiB0aGUgZXF1aXZhbGVuY3kgZ3JvdXAgY29udGFpbmluZworICAgICAqICdpZCcsIG9yIHplcm8gaWYgJ2lkJyBpcyBub3QgYSB2YWxpZCBzeXN0ZW0gSUQKKyAgICAgKiBAc2VlICNnZXRFcXVpdmFsZW50SUQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBjb3VudEVxdWl2YWxlbnRJRHMoU3RyaW5nIGlkKSB7CisgICAgICAgIHJldHVybiBUaW1lWm9uZURhdGEuY291bnRFcXVpdmFsZW50SURzKGlkKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGFuIElEIGluIHRoZSBlcXVpdmFsZW5jeSBncm91cCB0aGF0CisgICAgICogaW5jbHVkZXMgdGhlIGdpdmVuIElELiAgQW4gZXF1aXZhbGVuY3kgZ3JvdXAgY29udGFpbnMgem9uZXMKKyAgICAgKiB0aGF0IGhhdmUgdGhlIHNhbWUgR01UIG9mZnNldCBhbmQgcnVsZXMuCisgICAgICoKKyAgICAgKiA8cD5UaGUgZ2l2ZW4gaW5kZXggbXVzdCBiZSBpbiB0aGUgcmFuZ2UgMC4ubi0xLCB3aGVyZSBuIGlzIHRoZQorICAgICAqIHZhbHVlIHJldHVybmVkIGJ5IDxjb2RlPmNvdW50RXF1aXZhbGVudElEcyhpZCk8L2NvZGU+LiAgRm9yCisgICAgICogc29tZSB2YWx1ZSBvZiAnaW5kZXgnLCB0aGUgcmV0dXJuZWQgdmFsdWUgd2lsbCBiZSBlcXVhbCB0byB0aGUKKyAgICAgKiBnaXZlbiBpZC4gIElmIHRoZSBnaXZlbiBpZCBpcyBub3QgYSB2YWxpZCBzeXN0ZW0gdGltZSB6b25lLCBvcgorICAgICAqIGlmICdpbmRleCcgaXMgb3V0IG9mIHJhbmdlLCB0aGVuIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLgorICAgICAqIEBwYXJhbSBpZCBhIHN5c3RlbSB0aW1lIHpvbmUgSUQKKyAgICAgKiBAcGFyYW0gaW5kZXggYSB2YWx1ZSBmcm9tIDAgdG8gbi0xLCB3aGVyZSBuIGlzIHRoZSB2YWx1ZQorICAgICAqIHJldHVybmVkIGJ5IDxjb2RlPmNvdW50RXF1aXZhbGVudElEcyhpZCk8L2NvZGU+CisgICAgICogQHJldHVybiB0aGUgSUQgb2YgdGhlIGluZGV4LXRoIHpvbmUgaW4gdGhlIGVxdWl2YWxlbmN5IGdyb3VwCisgICAgICogY29udGFpbmluZyAnaWQnLCBvciBhbiBlbXB0eSBzdHJpbmcgaWYgJ2lkJyBpcyBub3QgYSB2YWxpZAorICAgICAqIHN5c3RlbSBJRCBvciAnaW5kZXgnIGlzIG91dCBvZiByYW5nZQorICAgICAqIEBzZWUgI2NvdW50RXF1aXZhbGVudElEcworICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEVxdWl2YWxlbnRJRChTdHJpbmcgaWQsIGludCBpbmRleCkgeworICAgICAgICByZXR1cm4gVGltZVpvbmVEYXRhLmdldEVxdWl2YWxlbnRJRChpZCwgaW5kZXgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIHBsYXRmb3JtIGRlZmluZWQgVGltZVpvbmUgSUQuCisgICAgICoqLworLy8gICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIFN0cmluZyBnZXRTeXN0ZW1UaW1lWm9uZUlEKFN0cmluZyBqYXZhSG9tZSwgCisvLwkJCQkJCSAgICAgU3RyaW5nIHJlZ2lvbik7CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBkZWZhdWx0IDxjb2RlPlRpbWVab25lPC9jb2RlPiBmb3IgdGhpcyBob3N0LgorICAgICAqIFRoZSBzb3VyY2Ugb2YgdGhlIGRlZmF1bHQgPGNvZGU+VGltZVpvbmU8L2NvZGU+IAorICAgICAqIG1heSB2YXJ5IHdpdGggaW1wbGVtZW50YXRpb24uCisgICAgICogQHJldHVybiBhIGRlZmF1bHQgPGNvZGU+VGltZVpvbmU8L2NvZGU+LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgc3luY2hyb25pemVkIFRpbWVab25lIGdldERlZmF1bHQoKSB7CisgICAgICAgIGlmIChkZWZhdWx0Wm9uZSA9PSBudWxsKSB7CisgICAgICAgICAgICAvLyBUaGUgZm9sbG93aW5nIGNhdXNlcyBhbiBBY2Nlc3NDb250cm9sRXhjZXB0aW9uIHdoZW4gcnVuIGluIGFuCisgICAgICAgICAgICAvLyBhcHBsZXQuICBUbyBnZXQgYXJvdW5kIHRoaXMsIHdlIGRvbid0IHJlYWQgdGhlIHVzZXIudGltZXpvbmUKKyAgICAgICAgICAgIC8vIHByb3BlcnR5OyBpbnN0ZWFkIHdlIGRlZmVyIHRvIFRpbWVab25lLmdldERlZmF1bHQoKS4gLSBMaXUKKyAgICAgICAgICAgIC8vIS8vIGdldCB0aGUgdGltZSB6b25lIElEIGZyb20gdGhlIHN5c3RlbSBwcm9wZXJ0aWVzCisgICAgICAgICAgICAvLyFTdHJpbmcgem9uZUlEID0gKFN0cmluZykgQWNjZXNzQ29udHJvbGxlci5kb1ByaXZpbGVnZWQoCisgICAgICAgICAgICAvLyEgICAgbmV3IEdldFByb3BlcnR5QWN0aW9uKCJ1c2VyLnRpbWV6b25lIikpOworICAgICAgICAgICAgLy8hCisJICAgIC8vIS8vIGlmIHRoZSB0aW1lIHpvbmUgSUQgaXMgbm90IHNldCAoeWV0KSwgcGVyZm9ybSB0aGUKKwkgICAgLy8hLy8gcGxhdGZvcm0gdG8gSmF2YSB0aW1lIHpvbmUgSUQgbWFwcGluZy4KKwkgICAgLy8haWYgKHpvbmVJRCA9PSBudWxsIHx8IHpvbmVJRC5lcXVhbHMoIiIpKSB7IAorCQkvL1N0cmluZyByZWdpb24gPSAoU3RyaW5nKSBBY2Nlc3NDb250cm9sbGVyLmRvUHJpdmlsZWdlZCgKKwkJLy8gICAgbmV3IEdldFByb3BlcnR5QWN0aW9uKCJ1c2VyLnJlZ2lvbiIpKTsKKwkJLy9TdHJpbmcgamF2YUhvbWUgPSAoU3RyaW5nKSBBY2Nlc3NDb250cm9sbGVyLmRvUHJpdmlsZWdlZCgKKwkJLy8gICAgbmV3IEdldFByb3BlcnR5QWN0aW9uKCJqYXZhLmhvbWUiKSk7CisJCS8vem9uZUlEID0gZ2V0U3lzdGVtVGltZVpvbmVJRChqYXZhSG9tZSwgcmVnaW9uKTsKKworICAgICAgICAgICAgICAgIC8vIFtpY3U0aiBXZSBnZXQgdGhlIGRlZmF1bHQgem9uZSBieSBxdWVyeWluZyBqYXZhLnV0aWwuVGltZVpvbmUsCisgICAgICAgICAgICAgICAgLy8gICAgICAgIGFuZCB0aGVuIGF0dGVtcHRpbmcgdG8gbWFwIHRoZSBJRC4gLSBsaXUgXQorICAgICAgICAgICAgICAgIGphdmEudXRpbC5UaW1lWm9uZSBfZGVmYXVsdCA9IGphdmEudXRpbC5UaW1lWm9uZS5nZXREZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgaWYgKGZhbHNlKSBTeXN0ZW0ub3V0LnByaW50bG4oImphdmEudXRpbC5UWi5kZWZhdWx0ICIgKyBfZGVmYXVsdCk7CisgICAgICAgICAgICAgICAgU3RyaW5nIHpvbmVJRCA9IF9kZWZhdWx0LmdldElEKCk7CisgICAgICAgICAgICAgICAgZGVmYXVsdFpvbmUgPSBUaW1lWm9uZURhdGEuZ2V0KHpvbmVJRCk7CisgICAgICAgICAgICAgICAgaWYgKGRlZmF1bHRab25lID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gW2ljdTRqIFRoaXMgbWVhbnMgdGhhdCB0aGUgem9uZSByZXR1cm5lZCBieSB0aGUgSkRLIGRvZXMKKyAgICAgICAgICAgICAgICAgICAgLy8gbm90IGV4aXN0IGluIG91ciB0YWJsZS4gIFdlIHdpbGwsIGZvciB0aGUgbW9tZW50LCBtYXAgdG8KKyAgICAgICAgICAgICAgICAgICAgLy8gYSBzdGQgem9uZSB0aGF0IGhhcyB0aGUgc2FtZSByYXcgb2Zmc2V0LiAgSW4gdGhlIGZ1dHVyZQorICAgICAgICAgICAgICAgICAgICAvLyB3ZSBtaWdodCBmaW5kIGl0IHdvcnRod2hpbGUgdG8gZXh0cmFjdCB0aGUgcnVsZXMgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gc3lzdGVtIGRlZmF1bHQgem9uZSwgYnV0IHRoaXMgaXMgdG9vIG11Y2ggdHJvdWJsZSBmb3IKKyAgICAgICAgICAgICAgICAgICAgLy8gbm93LiAgSXQgd2lsbCBiZSBlYXNpZXIgdG8gZXh0ZW5kIG91ciBtYXBwaW5nIHRhYmxlIHRvCisgICAgICAgICAgICAgICAgICAgIC8vIG1hdGNoIHRoZSBKREtzIHdlIHdhbnQgdG8gc3VwcG9ydC4gLSBsaXUgXQorICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgamF2YS51dGlsLlNpbXBsZVRpbWVab25lIHMgPSAoamF2YS51dGlsLlNpbXBsZVRpbWVab25lKSBfZGVmYXVsdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRab25lID0gbmV3IFNpbXBsZVRpbWVab25lKHMuZ2V0UmF3T2Zmc2V0KCksIHMuZ2V0SUQoKSk7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKENsYXNzQ2FzdEV4Y2VwdGlvbiBlKSB7fQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh6b25lSUQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgem9uZUlEID0gR01UX0lEOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIEFnYWluLCB3ZSBjYW4ndCBkbyB0aGlzIGZyb20gb3V0c2lkZSB0aGUgSkRLIGluIGFuIGFwcGxldC4KKyAgICAgICAgICAgICAgICAgICAgLy8hZmluYWwgU3RyaW5nIGlkID0gem9uZUlEOworICAgICAgICAgICAgICAgICAgICAvLyFBY2Nlc3NDb250cm9sbGVyLmRvUHJpdmlsZWdlZChuZXcgUHJpdmlsZWdlZEFjdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8hICAgIHB1YmxpYyBPYmplY3QgcnVuKCkgeworICAgICAgICAgICAgICAgICAgICAvLyEgICAgICAgIFN5c3RlbS5zZXRQcm9wZXJ0eSgidXNlci50aW1lem9uZSIsIGlkKTsKKyAgICAgICAgICAgICAgICAgICAgLy8hICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgLy8hICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLy8hfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8hfQorICAgICAgICAgICAgaWYgKGRlZmF1bHRab25lID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBkZWZhdWx0Wm9uZSA9IGdldFRpbWVab25lKHpvbmVJRCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZmFsc2UpIFN5c3RlbS5vdXQucHJpbnRsbigiY29tLmlibS51dGlsLlRaLmRlZmF1bHQgIiArIGRlZmF1bHRab25lKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKFRpbWVab25lKWRlZmF1bHRab25lLmNsb25lKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgPGNvZGU+VGltZVpvbmU8L2NvZGU+IHRoYXQgaXMKKyAgICAgKiByZXR1cm5lZCBieSB0aGUgPGNvZGU+Z2V0RGVmYXVsdDwvY29kZT4gbWV0aG9kLiAgSWYgPGNvZGU+em9uZTwvY29kZT4KKyAgICAgKiBpcyBudWxsLCByZXNldCB0aGUgZGVmYXVsdCB0byB0aGUgdmFsdWUgaXQgaGFkIG9yaWdpbmFsbHkgd2hlbiB0aGUKKyAgICAgKiBWTSBmaXJzdCBzdGFydGVkLgorICAgICAqIEBwYXJhbSB6b25lIHRoZSBuZXcgZGVmYXVsdCB0aW1lIHpvbmUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHN5bmNocm9uaXplZCB2b2lkIHNldERlZmF1bHQoVGltZVpvbmUgem9uZSkKKyAgICB7CisgICAgICAgIGRlZmF1bHRab25lID0gem9uZTsKKyAgICAgICAgLy8gW2ljdTRqIEtlZXAgamF2YS51dGlsLlRpbWVab25lIGRlZmF1bHQgaW4gc3luYyBzbyBqYXZhLnV0aWwuRGF0ZQorICAgICAgICAvLyAgICAgICAgY2FuIGludGVyb3BlcmF0ZSB3aXRoIGNvbS5pYm0udXRpbCBjbGFzc2VzLiAgVGhpcyBzb2x1dGlvbgorICAgICAgICAvLyAgICAgICAgaXMgX2ltcGVyZmVjdF87IHNlZSBTaW1wbGVUaW1lWm9uZUFkYXB0ZXIuIC0gbGl1XQorICAgICAgICB0cnkgeworICAgICAgICAgICAgamF2YS51dGlsLlRpbWVab25lLnNldERlZmF1bHQoCisgICAgICAgICAgICAgICAgbmV3IFNpbXBsZVRpbWVab25lQWRhcHRlcigoU2ltcGxlVGltZVpvbmUpIHpvbmUpKTsKKyAgICAgICAgfSBjYXRjaCAoQ2xhc3NDYXN0RXhjZXB0aW9uIGUpIHt9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0cnVlIGlmIHRoaXMgem9uZSBoYXMgdGhlIHNhbWUgcnVsZSBhbmQgb2Zmc2V0IGFzIGFub3RoZXIgem9uZS4KKyAgICAgKiBUaGF0IGlzLCBpZiB0aGlzIHpvbmUgZGlmZmVycyBvbmx5IGluIElELCBpZiBhdCBhbGwuICBSZXR1cm5zIGZhbHNlCisgICAgICogaWYgdGhlIG90aGVyIHpvbmUgaXMgbnVsbC4KKyAgICAgKiBAcGFyYW0gb3RoZXIgdGhlIDxjb2RlPlRpbWVab25lPC9jb2RlPiBvYmplY3QgdG8gYmUgY29tcGFyZWQgd2l0aAorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgb3RoZXIgem9uZSBpcyBub3QgbnVsbCBhbmQgaXMgdGhlIHNhbWUgYXMgdGhpcyBvbmUsCisgICAgICogd2l0aCB0aGUgcG9zc2libGUgZXhjZXB0aW9uIG9mIHRoZSBJRAorICAgICAqIEBzaW5jZSAxLjIKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBoYXNTYW1lUnVsZXMoVGltZVpvbmUgb3RoZXIpIHsKKyAgICAgICAgcmV0dXJuIG90aGVyICE9IG51bGwgJiYgZ2V0UmF3T2Zmc2V0KCkgPT0gb3RoZXIuZ2V0UmF3T2Zmc2V0KCkgJiYKKyAgICAgICAgICAgIHVzZURheWxpZ2h0VGltZSgpID09IG90aGVyLnVzZURheWxpZ2h0VGltZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBDbG9uZWFibGUKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0IGNsb25lKCkKKyAgICB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBUaW1lWm9uZSBvdGhlciA9IChUaW1lWm9uZSkgc3VwZXIuY2xvbmUoKTsKKyAgICAgICAgICAgIG90aGVyLklEID0gSUQ7CisgICAgICAgICAgICByZXR1cm4gb3RoZXI7CisgICAgICAgIH0gY2F0Y2ggKENsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PXByaXZhdGVzPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgLyoqCisgICAgICogVGhlIHN0cmluZyBpZGVudGlmaWVyIG9mIHRoaXMgPGNvZGU+VGltZVpvbmU8L2NvZGU+LiAgVGhpcyBpcyBhCisgICAgICogcHJvZ3JhbW1hdGljIGlkZW50aWZpZXIgdXNlZCBpbnRlcm5hbGx5IHRvIGxvb2sgdXAgPGNvZGU+VGltZVpvbmU8L2NvZGU+CisgICAgICogb2JqZWN0cyBmcm9tIHRoZSBzeXN0ZW0gdGFibGUgYW5kIGFsc28gdG8gbWFwIHRoZW0gdG8gdGhlaXIgbG9jYWxpemVkCisgICAgICogZGlzcGxheSBuYW1lcy4gIDxjb2RlPklEPC9jb2RlPiB2YWx1ZXMgYXJlIHVuaXF1ZSBpbiB0aGUgc3lzdGVtCisgICAgICogdGFibGUgYnV0IG1heSBub3QgYmUgZm9yIGR5bmFtaWNhbGx5IGNyZWF0ZWQgem9uZXMuCisgICAgICogQHNlcmlhbAorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nICAgICAgICAgICBJRDsKKyAgICBwcml2YXRlIHN0YXRpYyBUaW1lWm9uZSAgZGVmYXVsdFpvbmUgPSBudWxsOworCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyAgICAgICAgIEdNVF9JRCAgICAgICAgPSAiR01UIjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgICAgR01UX0lEX0xFTkdUSCA9IDM7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENVU1RPTV9JRCAgICAgPSAiQ3VzdG9tIjsKKworICAgIHByaXZhdGUgc3RhdGljIE51bWJlckZvcm1hdCBudW1iZXJGb3JtYXQgPSBudWxsOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgVGltZVpvbmUgR01UID0gbmV3IFNpbXBsZVRpbWVab25lKDAsIEdNVF9JRCk7CisKKyAgICAvKioKKyAgICAgKiBQYXJzZSBhIGN1c3RvbSB0aW1lIHpvbmUgaWRlbnRpZmllciBhbmQgcmV0dXJuIGEgY29ycmVzcG9uZGluZyB6b25lLgorICAgICAqIEBwYXJhbSBpZCBhIHN0cmluZyBvZiB0aGUgZm9ybSBHTVRbKy1daGg6bW0sIEdNVFsrLV1oaG1tLCBvcgorICAgICAqIEdNVFsrLV1oaC4KKyAgICAgKiBAcmV0dXJuIGEgbmV3bHkgY3JlYXRlZCBTaW1wbGVUaW1lWm9uZSB3aXRoIHRoZSBnaXZlbiBvZmZzZXQgYW5kCisgICAgICogbm8gZGF5bGlnaHQgc2F2aW5ncyB0aW1lLCBvciBudWxsIGlmIHRoZSBpZCBjYW5ub3QgYmUgcGFyc2VkLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFNpbXBsZVRpbWVab25lIHBhcnNlQ3VzdG9tVGltZVpvbmUoU3RyaW5nIGlkKSB7CisgICAgICAgIGlmIChpZC5sZW5ndGgoKSA+IEdNVF9JRF9MRU5HVEggJiYKKyAgICAgICAgICAgIGlkLnJlZ2lvbk1hdGNoZXModHJ1ZSwgMCwgR01UX0lELCAwLCBHTVRfSURfTEVOR1RIKSkgeworICAgICAgICAgICAgUGFyc2VQb3NpdGlvbiBwb3MgPSBuZXcgUGFyc2VQb3NpdGlvbihHTVRfSURfTEVOR1RIKTsKKyAgICAgICAgICAgIGJvb2xlYW4gbmVnYXRpdmUgPSBmYWxzZTsKKyAgICAgICAgICAgIGludCBvZmZzZXQ7CisKKyAgICAgICAgICAgIGlmIChpZC5jaGFyQXQocG9zLmdldEluZGV4KCkpID09ICctJykKKyAgICAgICAgICAgICAgICBuZWdhdGl2ZSA9IHRydWU7CisgICAgICAgICAgICBlbHNlIGlmIChpZC5jaGFyQXQocG9zLmdldEluZGV4KCkpICE9ICcrJykKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIHBvcy5zZXRJbmRleChwb3MuZ2V0SW5kZXgoKSArIDEpOworCisgICAgICAgICAgICAvLyBDcmVhdGUgTnVtYmVyRm9ybWF0IGlmIG5lY2Vzc2FyeQorICAgICAgICAgICAgc3luY2hyb25pemVkIChUaW1lWm9uZS5jbGFzcykgeworICAgICAgICAgICAgICAgIGlmIChudW1iZXJGb3JtYXQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBudW1iZXJGb3JtYXQgPSBOdW1iZXJGb3JtYXQuZ2V0SW5zdGFuY2UoKTsKKyAgICAgICAgICAgICAgICAgICAgbnVtYmVyRm9ybWF0LnNldFBhcnNlSW50ZWdlck9ubHkodHJ1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG51bWJlckZvcm1hdCkgeworICAgICAgICAgICAgICAgIC8vIExvb2sgZm9yIGVpdGhlciBoaDptbSwgaGhtbSwgb3IgaGgKKyAgICAgICAgICAgICAgICBpbnQgc3RhcnQgPSBwb3MuZ2V0SW5kZXgoKTsKKyAgICAgICAgICAgICAgICBOdW1iZXIgbiA9IG51bWJlckZvcm1hdC5wYXJzZShpZCwgcG9zKTsKKyAgICAgICAgICAgICAgICBpZiAobiA9PSBudWxsKSByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICBvZmZzZXQgPSBuLmludFZhbHVlKCk7CisKKyAgICAgICAgICAgICAgICBpZiAocG9zLmdldEluZGV4KCkgPCBpZC5sZW5ndGgoKSAmJgorICAgICAgICAgICAgICAgICAgICBpZC5jaGFyQXQocG9zLmdldEluZGV4KCkpID09ICc6JykgeworICAgICAgICAgICAgICAgICAgICAvLyBoaDptbQorICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKj0gNjA7CisgICAgICAgICAgICAgICAgICAgIHBvcy5zZXRJbmRleChwb3MuZ2V0SW5kZXgoKSArIDEpOworICAgICAgICAgICAgICAgICAgICBuID0gbnVtYmVyRm9ybWF0LnBhcnNlKGlkLCBwb3MpOworICAgICAgICAgICAgICAgICAgICBpZiAobiA9PSBudWxsKSByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgb2Zmc2V0ICs9IG4uaW50VmFsdWUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIGhobW0gb3IgaGgKKworICAgICAgICAgICAgICAgICAgICAvLyBCZSBzdHJpY3QgYWJvdXQgaW50ZXJwcmV0aW5nIHNvbWV0aGluZyBhcyBoaDsgaXQgbXVzdCBiZQorICAgICAgICAgICAgICAgICAgICAvLyBhbiBvZmZzZXQgPCAzMCwgYW5kIGl0IG11c3QgYmUgb25lIG9yIHR3byBkaWdpdHMuIFRodXMKKyAgICAgICAgICAgICAgICAgICAgLy8gMDAxMCBpcyBpbnRlcnByZXRlZCBhcyAwMDoxMCwgYnV0IDEwIGlzIGludGVycHJldGVkIGFzCisgICAgICAgICAgICAgICAgICAgIC8vIDEwOjAwLgorICAgICAgICAgICAgICAgICAgICBpZiAob2Zmc2V0IDwgMzAgJiYgKHBvcy5nZXRJbmRleCgpIC0gc3RhcnQpIDw9IDIpCisgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKj0gNjA7IC8vIGhoLCBmcm9tIDAwIHRvIDI5OyAzMCBpcyAwMDozMAorICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBvZmZzZXQgPSBvZmZzZXQgJSAxMDAgKyBvZmZzZXQgLyAxMDAgKiA2MDsgLy8gaGhtbQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkgb2Zmc2V0ID0gLW9mZnNldDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbXBsZVRpbWVab25lKG9mZnNldCAqIDYwMDAwLCBDVVNUT01fSUQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgLy8gSW50ZXJuYWwgSW1wbGVtZW50YXRpb24gTm90ZXMgW0xJVV0KKyAgICAvLworICAgIC8vIFRpbWVab25lIGRhdGEgaXMgc3RvcmVkIGluIHR3byBwYXJ0cy4gIFRoZSBmaXJzdCBpcyBhbiBlbmNvZGluZyBvZiB0aGUKKyAgICAvLyBydWxlcyBmb3IgZWFjaCBUaW1lWm9uZS4gIEEgVGltZVpvbmUgcnVsZSBpbmNsdWRlcyB0aGUgb2Zmc2V0IG9mIGEgem9uZQorICAgIC8vIGluIG1pbGxpc2Vjb25kcyBmcm9tIEdNVCwgdGhlIHN0YXJ0aW5nIG1vbnRoIGFuZCBkYXkgZm9yIGRheWxpZ2h0IHNhdmluZ3MKKyAgICAvLyB0aW1lLCBpZiB0aGVyZSBpcyBhbnksIGFuZCB0aGUgZW5kaW5nIG1vbnRoIGFuZCBkYXkgZm9yIGRheWxpZ2h0IHNhdmluZ3MKKyAgICAvLyB0aW1lLiAgVGhlIHN0YXJ0aW5nIGFuZCBlbmRpbmcgZGF5cyBhcmUgc3BlY2lmaWVkIGluIHRlcm1zIG9mIHRoZSBuLXRoCisgICAgLy8gZGF5IG9mIHRoZSB3ZWVrLCBmb3IgaW5zdGFuY2UsIHRoZSBmaXJzdCBTdW5kYXkgb3IgdGhlIGxhc3QgKCItMSItdGgpCisgICAgLy8gU3VuZGF5IG9mIHRoZSBtb250aC4gIFRoZSBydWxlcyBhcmUgc3RvcmVkIGFzIHN0YXRpY2FsbHktY29uc3RydWN0ZWQKKyAgICAvLyBTaW1wbGVUaW1lWm9uZSBvYmplY3RzIGluIHRoZSBUaW1lWm9uZSBjbGFzcy4KKyAgICAvLworICAgIC8vIEVhY2ggcnVsZSBoYXMgYSB1bmlxdWUgaW50ZXJuYWwgaWRlbnRpZmllciBzdHJpbmcgd2hpY2ggaXMgdXNlZCB0bworICAgIC8vIHNwZWNpZnkgaXQuICBUaGlzIGlkZW50aWZpZXIgc3RyaW5nIGlzIGFyYml0cmFyeSwgYW5kIGlzIG5vdCB0byBiZSBzaG93bgorICAgIC8vIHRvIHRoZSB1c2VyIC0tIGl0IGlzIGZvciBwcm9ncmFtbWF0aWMgdXNlIG9ubHkuICBJbiBvcmRlciB0byBpbnN0YW50aWF0ZQorICAgIC8vIGEgVGltZVpvbmUgb2JqZWN0LCB5b3UgcGFzcyBpdHMgaWRlbnRpZmllciBzdHJpbmcgdG8KKyAgICAvLyBUaW1lWm9uZS5nZXRUaW1lWm9uZSgpLiAgKFRoaXMgaWRlbnRpZmllciBpcyBhbHNvIHVzZWQgdG8gaW5kZXggdGhlCisgICAgLy8gbG9jYWxpemVkIHN0cmluZyBkYXRhLikKKyAgICAvLworICAgIC8vIFRoZSBzZWNvbmQgcGFydCBvZiB0aGUgZGF0YSBjb25zaXN0cyBvZiBsb2NhbGl6ZWQgc3RyaW5nIG5hbWVzIHVzZWQgYnkKKyAgICAvLyBEYXRlRm9ybWF0IHRvIGRlc2NyaWJlIHZhcmlvdXMgVGltZVpvbmVzLiAgQSBUaW1lWm9uZSBtYXkgaGF2ZSB1cCB0byBmb3VyCisgICAgLy8gbmFtZXM6IFRoZSBhYmJyZXZpYXRlZCBhbmQgbG9uZyBuYW1lIGZvciBzdGFuZGFyZCB0aW1lIGluIHRoYXQgem9uZSwgYW5kCisgICAgLy8gdGhlIGFiYnJldmlhdGVkIGFuZCBsb25nIG5hbWUgZm9yIGRheWxpZ2h0IHNhdmluZ3MgdGltZSBpbiB0aGF0IHpvbmUuCisgICAgLy8gVGhlIGRhdGEgYWxzbyBpbmNsdWRlcyBhIHJlcHJlc2VudGF0aXZlIGNpdHkuICBGb3IgZXhhbXBsZSwgWyAiUFNUIiwKKyAgICAvLyAiUGFjaWZpYyBTdGFuZGFyZCBUaW1lIiwgIlBEVCIsICJQYWNpZmljIERheWxpZ2h0IFRpbWUiLCAiTG9zIEFuZ2VsZXMiIF0KKyAgICAvLyBtaWdodCBiZSBvbmUgc3VjaCBzZXQgb2Ygc3RyaW5nIG5hbWVzIGluIHRoZSBlbl9VUyBsb2NhbGUuICBUaGVzZSBzdHJpbmdzCisgICAgLy8gYXJlIGludGVuZGVkIHRvIGJlIHNob3duIHRvIHRoZSB1c2VyLiAgVGhlIHN0cmluZyBkYXRhIGlzIGluZGV4ZWQgaW4gdGhlCisgICAgLy8gc3lzdGVtIGJ5IGEgcGFpciAoU3RyaW5nIGlkLCBMb2NhbGUgbG9jYWxlKS4gIFRoZSBpZCBpcyB0aGUgdW5pcXVlIHN0cmluZworICAgIC8vIGlkZW50aWZpZXIgZm9yIHRoZSBydWxlIGZvciB0aGUgZ2l2ZW4gVGltZVpvbmUgKGFzIHBhc3NlZCB0bworICAgIC8vIFRpbWVab25lLmdldFRpbWVab25lKCkpLiAgU3RyaW5nIG5hbWVzIGFyZSBzdG9yZWQgYXMgbG9jYWxpemVkIHJlc291cmNlCisgICAgLy8gZGF0YSBvZiB0aGUgY2xhc3MgamF2YS50ZXh0LnJlc291cmNlcy5EYXRlRm9ybWF0Wm9uZURhdGE/Pz8gIHdoZXJlID8/PyBpcworICAgIC8vIHRoZSBMb2NhbGUgc3BlY2lmaWVyIChlLmcuLCBEYXRlRm9ybWF0Wm9uZURhdGFfZW5fVVMpLiAgVGhpcyBkYXRhIGlzIGEKKyAgICAvLyB0d28tZGltZW5zaW9uYWwgYXJyYXkgb2Ygc3RyaW5ncyB3aXRoIE4gcm93cyBhbmQgNiBjb2x1bW5zLiAgVGhlIGNvbHVtbnMKKyAgICAvLyBhcmUgaWQsIHNob3J0IHN0YW5kYXJkIG5hbWUsIGxvbmcgc3RhbmRhcmQgbmFtZSwgc2hvcnQgZGF5bGlnaHQgbmFtZSwKKyAgICAvLyBsb25nIGRheWxpZ2h0IG5hbWUsIHJlcHJlc2VudGF0aXZlIGNpdHkgbmFtZS4KKyAgICAvLworICAgIC8vIFRoZSBtYXBwaW5nIGJldHdlZW4gcnVsZXMgKFNpbXBsZVRpbWVab25lIG9iamVjdHMpIGFuZCBsb2NhbGl6ZWQgc3RyaW5nCisgICAgLy8gbmFtZXMgKERhdGVGb3JtYXRab25lRGF0YSBvYmplY3RzKSBpcyBvbmUtdG8tbWFueS4gIFRoYXQgaXMsIHRoZXJlIHdpbGwKKyAgICAvLyBzb21ldGltZXMgYmUgbW9yZSB0aGFuIG9uZSBsb2NhbGl6ZWQgc3RyaW5nIG5hbWUgc2V0cyBhc3NvY2lhdGVkIHdpdGgKKyAgICAvLyBlYWNoIHJ1bGUuCisgICAgLy8KKyAgICAvLyBFYWNoIGxvY2FsZSBjYW4gcG90ZW50aWFsbHkgaGF2ZSBsb2NhbGl6ZWQgbmFtZSBkYXRhIGZvciBhbGwgdGltZSB6b25lcy4KKyAgICAvLyBTaW5jZSB3ZSBzdXBwb3J0IGFwcHJveGltYXRlbHkgOTAgdGltZSB6b25lcyBhbmQgYXBwcm94aW1hdGVseSA1MAorICAgIC8vIGxvY2FsZXMsIHRoZXJlIGNhbiBiZSBvdmVyIDQ1MDAgc2V0cyBvZiBsb2NhbGl6ZWQgbmFtZXMuICBJbiBwcmFjdGljZSwKKyAgICAvLyBvbmx5IGEgZnJhY3Rpb24gb2YgdGhlc2UgbmFtZXMgYXJlIHByb3ZpZGVkLiAgSWYgYSB0aW1lIHpvbmUgbmVlZHMgdG8gYmUKKyAgICAvLyBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgaW4gYSBnaXZlbiBsb2NhbGUsIGFuZCB0aGVyZSBpcyBubyBzdHJpbmcgZGF0YSBpbgorICAgIC8vIHRoYXQgbG9jYWxlIGZvciB0aGF0IHRpbWUgem9uZSwgdGhlbiB0aGUgZGVmYXVsdCByZXByZXNlbnRhdGlvbiB3aWxsIGJlCisgICAgLy8gc2hvd24uICBUaGlzIGlzIGEgc3RyaW5nIG9mIHRoZSBmb3JtIEdNVCtISE1NIG9yIEdNVC1ISE1NLCB3aGVyZSBISE1NCisgICAgLy8gcmVwcmVzZW50cyB0aGUgb2Zmc2V0IGluIGhvdXJzIGFuZCBtaW51dGVzIHdpdGggcmVzcGVjdCB0byBHTVQuICBUaGlzCisgICAgLy8gZm9ybWF0IGlzIHVzZWQgYmVjYXVzZSBpdCBpcyByZWNvZ25pemVkIGluIGFsbCBsb2NhbGVzLiAgSW4gb3JkZXIgdG8gbWFrZQorICAgIC8vIHRoaXMgbWVjaGFuaXNtIHRvIHdvcmssIHRoZSByb290IHJlc291cmNlIGRhdGEgKGluIHRoZSBjbGFzcworICAgIC8vIERhdGVGb3JtYXRab25lRGF0YSkgaXMgbGVmdCBlbXB0eS4KKyAgICAvLworICAgIC8vIFRoZSBjdXJyZW50IGRlZmF1bHQgVGltZVpvbmUgaXMgZGV0ZXJtaW5lZCB2aWEgdGhlIHN5c3RlbSBwcm9wZXJ0eQorICAgIC8vIHVzZXIudGltZXpvbmUuICBUaGlzIGlzIHNldCBieSB0aGUgcGxhdGZvcm0tZGVwZW5kZW50IG5hdGl2ZSBjb2RlIHRvCisgICAgLy8gYSB0aHJlZS1sZXR0ZXIgYWJicmV2aWF0aW9uLiAgV2UgaW50ZXJwcmV0IHRoZXNlIGludG8gb3VyIG93biBpbnRlcm5hbAorICAgIC8vIElEcyB1c2luZyBhIGxvb2t1cCB0YWJsZS4KK30KKworLy9lb2YKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvVGltZVpvbmVEYXRhLmphdmEgYi9zcmMvY29tL2libS91dGlsL1RpbWVab25lRGF0YS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmE2ODE0NWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL1RpbWVab25lRGF0YS5qYXZhCkBAIC0wLDAgKzEsMTIxMSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAyMDAxLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZAorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdXRpbC9BdHRpYy9UaW1lWm9uZURhdGEuamF2YSx2ICQKKyAqICREYXRlOiAyMDAxLzAyLzAyIDE5OjMwOjAyICQKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqLworcGFja2FnZSBjb20uaWJtLnV0aWw7CitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKKworLyoqCisgKiBJbnRlcm5hbCBjbGFzcyB0aGF0IGVuY2Fwc3VsYXRlcyBkYXRhIGFib3V0IHRoZSBzeXN0ZW0gdGltZSB6b25lcy4KKyAqIFRoaXMgaW5jbHVkZXMgdGhlIG5hbWVzIG9mIGFsbCB6b25lcywgdGhlaXIgcmF3IG9mZnNldHMsIHRoZWlyCisgKiBydWxlcyAoZm9yIHpvbmVzIG9ic2VydmluZyBEU1QpLCBhbmQgaW5kZXggdGFibGVzIHRoYXQgZ3JvdXAKKyAqIHRvZ2V0aGVyIHpvbmVzIHdpdGggdGhlIHNhbWUgcmF3IG9mZnNldCwgYXMgd2VsbCBhcyB6b25lcyB0aGF0IGFyZQorICogZXF1aXZhbGVudCAoc2FtZSByYXcgb2Zmc2V0IGFuZCBydWxlcykuCisgKiAKKyAqIDxwPlRoaXMgY2xhc3MgY29udGFpbnMgdHdvIHBhcnRzOiBBIG5hcnJvdyBBUEkgZm9yIGluc3RhbnRpYXRpbmcKKyAqIHRoZSBzeXN0ZW0gem9uZSBvYmplY3RzIGFuZCBmb3Igb2J0YWluaW5nIG1ldGFpbmZvcm1hdGlvbgorICogKGF2YWlsYWJsZSB6b25lIGxpc3RzIGFuZCBlcXVpdmFsZW5jeSBncm91cCBsaXN0cyksIGFuZCBibG9ja3Mgb2YKKyAqIGNvbXByZXNzZWQgZGF0YSB0aGF0IHRha2UgdGhlIGZvcm0gb2Ygc3RhdGljIHN0cmluZ3Mgb3Igc3RyaW5nCisgKiBhcnJheXMuICBUaGUgY29tcHJlc3NlZCBkYXRhIGlzIGdlbmVyYXRlZCBzb3VyY2UgY29kZSB0aGF0IGNhbm5vdAorICogYmUgaGFuZCBlZGl0ZWQuICBJdCBpcyBkZXJpdmVkIGZyb20gdGhlIHN0YW5kYXJkIFVOSVggem9uZSBkYXRhIGF0CisgKiBmdHA6Ly9lbHNpZS5uY2kubmloLmdvdi9wdWIgYW5kIGlzIHByb2Nlc3NlZCBieSB0aGUgdG9vbCBnZW50egorICogbG9jYXRlZCBhdCBpY3Uvc291cmNlL3Rvb2xzL2dlbnR6LiAgV2hlbiB0aGUgVU5JWCB6b25lIGRhdGEKKyAqIGNoYW5nZXMsIHRoZSBnZW50eiB0b29sIG11c3QgYmUgcnVuIHRvIGdlbmVyYXRlIHRoZSBuZXcgZGF0YSBhbmQKKyAqIHRoZSBjb21wcmVzc2VkIGRhdGEgYmxvY2tzIGluIHRoaXMgZmlsZSBhbmQgdGhlIG5ldyBibG9ja3MgbXVzdCBiZQorICogcGFzdGVkIGluLiAgRm9yIHN0ZXAtYnktc3RlcCBpbnN0cnVjdGlvbnMsIHNlZQorICogaWN1L3NvdXJjZS90b29scy9nZW50ei9yZWFkbWUudHh0LgorICoKKyAqIEBhdXRob3IgQWxhbiBMaXUKKyAqLworY2xhc3MgVGltZVpvbmVEYXRhIHsKKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhbmQgcmV0dXJuIHRoZSBnaXZlbiBzeXN0ZW0gVGltZVpvbmUsIG9yIHJldHVybiBudWxsIGlmCisgICAgICogdGhlIGdpdmVuIElEIGRvZXMgbm90IHJlZmVyIHRvIGEgc3lzdGVtIFRpbWVab25lLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgVGltZVpvbmUgZ2V0KFN0cmluZyBJRCkgeworICAgICAgICBpbnQgaSA9IGxvb2t1cChJRCk7CisgICAgICAgIHJldHVybiAoaTwwKSA/IG51bGwgOiBuZXcgU2ltcGxlVGltZVpvbmUoSUQsIERBVEEsIGkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiBhIG5ldyBTdHJpbmcgYXJyYXkgY29udGFpbmluZyBhbGwgc3lzdGVtIFRpbWVab25lIElEcy4KKyAgICAgKiBUaGVzZSBJRHMgKGFuZCBvbmx5IHRoZXNlIElEcykgbWF5IGJlIHBhc3NlZCB0bworICAgICAqIDxjb2RlPmdldCgpPC9jb2RlPiB0byBjb25zdHJ1Y3QgdGhlIGNvcnJlc3BvbmRpbmcgVGltZVpvbmUKKyAgICAgKiBvYmplY3QuCisgICAgICogQHJldHVybiBhbiBhcnJheSBvZiBhbGwgc3lzdGVtIFRpbWVab25lIElEcworICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nW10gZ2V0QXZhaWxhYmxlSURzKCkgeworICAgICAgICBTdHJpbmdbXSByZXN1bHQgPSBuZXcgU3RyaW5nW0lEUy5sZW5ndGhdOworICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KElEUywgMCwgcmVzdWx0LCAwLCBJRFMubGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBuZXcgU3RyaW5nIGFycmF5IGNvbnRhaW5pbmcgYWxsIHN5c3RlbSBUaW1lWm9uZSBJRHMKKyAgICAgKiB3aXRoIHRoZSBnaXZlbiByYXcgb2Zmc2V0IGZyb20gR01ULiAgVGhlc2UgSURzIG1heSBiZSBwYXNzZWQgdG8KKyAgICAgKiA8Y29kZT5nZXQoKTwvY29kZT4gdG8gY29uc3RydWN0IHRoZSBjb3JyZXNwb25kaW5nIFRpbWVab25lCisgICAgICogb2JqZWN0LgorICAgICAqIEBwYXJhbSByYXdPZmZzZXQgdGhlIG9mZnNldCBpbiBtaWxsaXNlY29uZHMgZnJvbSBHTVQKKyAgICAgKiBAcmV0dXJuIGFuIGFycmF5IG9mIElEcyBmb3Igc3lzdGVtIFRpbWVab25lcyB3aXRoIHRoZSBnaXZlbgorICAgICAqIHJhdyBvZmZzZXQuICBJZiB0aGVyZSBhcmUgbm9uZSwgcmV0dXJuIGEgemVyby1sZW5ndGggYXJyYXkuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBnZXRBdmFpbGFibGVJRHMoaW50IHJhd09mZnNldCkgeworICAgICAgICAvLyBEbyBhIGxpbmVhciBzZWFyY2g7IHRoZXJlIGFyZSA8IDIwMCBlbnRyaWVzCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxJTkRFWF9CWV9PRkZTRVQubGVuZ3RoOykgeworICAgICAgICAgICAgaW50IG9mZnNldCA9IElOREVYX0JZX09GRlNFVFtpXSAqIDEwMDA7CisgICAgICAgICAgICBpZiAob2Zmc2V0ID4gcmF3T2Zmc2V0KSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAob2Zmc2V0ID09IHJhd09mZnNldCkgeworICAgICAgICAgICAgICAgIC8vIEZvdW5kIG91ciBkZXNpcmVkIG9mZnNldAorICAgICAgICAgICAgICAgIGludCBuID0gSU5ERVhfQllfT0ZGU0VUW2krMl07CisgICAgICAgICAgICAgICAgU3RyaW5nW10gcmVzdWx0ID0gbmV3IFN0cmluZ1tuXTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBqPTA7IGo8bjsgKytqKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFtqXSA9IElEU1tJTkRFWF9CWV9PRkZTRVRbaSszK2pdXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEFkdmFuY2UgdG8gdGhlIG5leHQgZW50cnkKKyAgICAgICAgICAgIGkgKz0gSU5ERVhfQllfT0ZGU0VUW2krMl0gKyAzOworICAgICAgICB9CisgICAgICAgIC8vIEZhaWxlZCB0byBmaW5kIGFueTsgcmV0dXJuIGVtcHR5IGFycmF5CisgICAgICAgIHJldHVybiBuZXcgU3RyaW5nWzBdOworICAgIH0KKyAKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBuZXcgU3RyaW5nIGFycmF5IGNvbnRhaW5pbmcgYWxsIHN5c3RlbSBUaW1lWm9uZSBJRHMKKyAgICAgKiBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuIGNvdW50cnkuICBUaGVzZSBJRHMgbWF5IGJlIHBhc3NlZCB0bworICAgICAqIDxjb2RlPmdldCgpPC9jb2RlPiB0byBjb25zdHJ1Y3QgdGhlIGNvcnJlc3BvbmRpbmcgVGltZVpvbmUKKyAgICAgKiBvYmplY3QuCisgICAgICogQHBhcmFtIGEgdHdvLWxldHRlciBJU08gMzE2NiBjb3VudHJ5IGNvZGUsIG9yIDxjb2RlPm51bGw8L2NvZGU+CisgICAgICogdG8gcmV0dXJuIHpvbmVzIG5vdCBhc3NvY2lhdGVkIHdpdGggYW55IGNvdW50cnkKKyAgICAgKiBAcmV0dXJuIGFuIGFycmF5IG9mIElEcyBmb3Igc3lzdGVtIFRpbWVab25lcyB3aXRoIHRoZSBnaXZlbgorICAgICAqIHJhdyBvZmZzZXQuICBJZiB0aGVyZSBhcmUgbm9uZSwgcmV0dXJuIGEgemVyby1sZW5ndGggYXJyYXkuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBnZXRBdmFpbGFibGVJRHMoU3RyaW5nIGNvdW50cnlDb2RlKSB7CisgICAgICAgIC8vIENvbnN0cnVjdCBvdXIga2V5OyB0aGlzIGlzIGFuIGludGVnZXIgb2YgdGhlIGZvcm0KKyAgICAgICAgLy8gMzIqbjEgKyBuMCwgd2hlcmUgMDw9bjw9MjUuCisgICAgICAgIGludCBjb3VudHJ5SGFzaCA9IDA7CisgICAgICAgIGlmIChjb3VudHJ5Q29kZSAhPSBudWxsKSB7CisgICAgICAgICAgICBjb3VudHJ5SGFzaCA9CisgICAgICAgICAgICAgICAgKChDaGFyYWN0ZXIudG9VcHBlckNhc2UoY291bnRyeUNvZGUuY2hhckF0KDApKSAtICdBJykgPDwgNSkgfAorICAgICAgICAgICAgICAgIChDaGFyYWN0ZXIudG9VcHBlckNhc2UoY291bnRyeUNvZGUuY2hhckF0KDEpKSAtICdBJyk7CisgICAgICAgIH0KKworICAgICAgICAvLyBEbyBhIGxpbmVhciBzZWFyY2g7IHRoZXJlIGFyZSB+IDI1MCBlbnRyaWVzCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxJTkRFWF9CWV9DT1VOVFJZLmxlbmd0aDsgKSB7CisgICAgICAgICAgICBpZiAoY291bnRyeUhhc2ggPT0gSU5ERVhfQllfQ09VTlRSWVtpXSkgeworICAgICAgICAgICAgICAgIC8vIEZvdW5kIHRoZSBkZXNpcmVkIGNvdW50cnkKKyAgICAgICAgICAgICAgICBpbnQgbiA9IElOREVYX0JZX0NPVU5UUllbaSsxXTsKKyAgICAgICAgICAgICAgICBTdHJpbmdbXSByZXN1bHQgPSBuZXcgU3RyaW5nW25dOworICAgICAgICAgICAgICAgIGZvciAoaW50IGo9MDsgajxuOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0W2pdID0gSURTW0lOREVYX0JZX0NPVU5UUllbaSsyK2pdXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaSArPSBJTkRFWF9CWV9DT1VOVFJZW2krMV0gKyAyOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vIEZhaWxlZCB0byBmaW5kIGFueTsgcmV0dXJuIGVtcHR5IGFycmF5CisgICAgICAgIHJldHVybiBuZXcgU3RyaW5nWzBdOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBJRHMgaW4gdGhlIGVxdWl2YWxlbmN5IGdyb3VwIHRoYXQKKyAgICAgKiBpbmNsdWRlcyB0aGUgZ2l2ZW4gSUQuICBBbiBlcXVpdmFsZW5jeSBncm91cCBjb250YWlucyB6b25lcworICAgICAqIHRoYXQgaGF2ZSB0aGUgc2FtZSBHTVQgb2Zmc2V0IGFuZCBydWxlcy4KKyAgICAgKgorICAgICAqIDxwPlRoZSByZXR1cm5lZCBjb3VudCBpbmNsdWRlcyB0aGUgZ2l2ZW4gSUQ7IGl0IGlzIGFsd2F5cyA+PSAxCisgICAgICogZm9yIHZhbGlkIElEcy4gIFRoZSBnaXZlbiBJRCBtdXN0IGJlIGEgc3lzdGVtIHRpbWUgem9uZS4gIElmIGl0CisgICAgICogaXMgbm90LCByZXR1cm5zIHplcm8uCisgICAgICogQHBhcmFtIElEIGEgc3lzdGVtIHRpbWUgem9uZSBJRAorICAgICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiB6b25lcyBpbiB0aGUgZXF1aXZhbGVuY3kgZ3JvdXAgY29udGFpbmluZworICAgICAqICdJRCcsIG9yIHplcm8gaWYgJ0lEJyBpcyBub3QgYSB2YWxpZCBzeXN0ZW0gSUQKKyAgICAgKiBAc2VlICNnZXRFcXVpdmFsZW50SUQKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGludCBjb3VudEVxdWl2YWxlbnRJRHMoU3RyaW5nIElEKSB7CisgICAgICAgIGludCBpID0gbG9va3VwKElEKTsKKyAgICAgICAgcmV0dXJuIChpPDApID8gMCA6IERBVEFbaSArICgoREFUQVtpKzFdPT0wKT8yOjEzKV07CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhbiBJRCBpbiB0aGUgZXF1aXZhbGVuY3kgZ3JvdXAgdGhhdAorICAgICAqIGluY2x1ZGVzIHRoZSBnaXZlbiBJRC4gIEFuIGVxdWl2YWxlbmN5IGdyb3VwIGNvbnRhaW5zIHpvbmVzCisgICAgICogdGhhdCBoYXZlIHRoZSBzYW1lIEdNVCBvZmZzZXQgYW5kIHJ1bGVzLgorICAgICAqCisgICAgICogPHA+VGhlIGdpdmVuIGluZGV4IG11c3QgYmUgaW4gdGhlIHJhbmdlIDAuLm4tMSwgd2hlcmUgbiBpcyB0aGUKKyAgICAgKiB2YWx1ZSByZXR1cm5lZCBieSA8Y29kZT5jb3VudEVxdWl2YWxlbnRJRHMoaWQpPC9jb2RlPi4gIEZvcgorICAgICAqIHNvbWUgdmFsdWUgb2YgJ2luZGV4JywgdGhlIHJldHVybmVkIHZhbHVlIHdpbGwgYmUgZXF1YWwgdG8gdGhlCisgICAgICogZ2l2ZW4gaWQuICBJZiB0aGUgZ2l2ZW4gaWQgaXMgbm90IGEgdmFsaWQgc3lzdGVtIHRpbWUgem9uZSwgb3IKKyAgICAgKiBpZiAnaW5kZXgnIGlzIG91dCBvZiByYW5nZSwgdGhlbiByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy4KKyAgICAgKiBAcGFyYW0gSUQgYSBzeXN0ZW0gdGltZSB6b25lIElECisgICAgICogQHBhcmFtIGluZGV4IGEgdmFsdWUgZnJvbSAwIHRvIG4tMSwgd2hlcmUgbiBpcyB0aGUgdmFsdWUKKyAgICAgKiByZXR1cm5lZCBieSA8Y29kZT5jb3VudEVxdWl2YWxlbnRJRHMoaWQpPC9jb2RlPgorICAgICAqIEByZXR1cm4gdGhlIElEIG9mIHRoZSBpbmRleC10aCB6b25lIGluIHRoZSBlcXVpdmFsZW5jeSBncm91cAorICAgICAqIGNvbnRhaW5pbmcgJ0lEJywgb3IgYW4gZW1wdHkgc3RyaW5nIGlmICdJRCcgaXMgbm90IGEgdmFsaWQKKyAgICAgKiBzeXN0ZW0gSUQgb3IgJ2luZGV4JyBpcyBvdXQgb2YgcmFuZ2UKKyAgICAgKiBAc2VlICNjb3VudEVxdWl2YWxlbnRJRHMKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRFcXVpdmFsZW50SUQoU3RyaW5nIElELCBpbnQgaW5kZXgpIHsKKyAgICAgICAgaW50IGkgPSBsb29rdXAoSUQpOworICAgICAgICBpZiAoaTwwKSB7CisgICAgICAgICAgICByZXR1cm4gIiI7CisgICAgICAgIH0KKyAgICAgICAgaW50IGogPSBpICsgKChEQVRBW2krMV09PTApPzI6MTMpOworICAgICAgICByZXR1cm4gKGluZGV4PERBVEFbal0pID8gSURTW0RBVEFbaitpbmRleCsxXV0gOiAiIjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHaXZlbiBhbiBJRCwgcmV0dXJuIHRoZSBlcXVpdmFsZW5jeSBncm91cCBpbmRleCAoaW5kZXggb2YKKyAgICAgKiBEQVRBW10gZm9yIHRoZSBzdGFydCBvZiB0aGUgZ3JvdXAncyBkYXRhKSBvciAtMSBpZiBub3QgZm91bmQuCisgICAgICovCisgICAgc3RhdGljIGludCBsb29rdXAoU3RyaW5nIElEKSB7CisgICAgICAgIEludGVnZXIgaSA9IChJbnRlZ2VyKSBJTkRFWF9CWV9OQU1FLmdldChJRCk7CisgICAgICAgIHJldHVybiAoaSA9PSBudWxsKSA/IC0xIDogaS5pbnRWYWx1ZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEVxdWl2YWxlbmN5IGdyb3VwIGRhdGEgaW4gaW50W10gZm9ybS4gIFRoaXMgaXMgcmVwcmVzZW50ZWQgYXMgYQorICAgICAqIHNpbmdsZSBmbGF0IGFycmF5IG9mIGludHMgZm9yIGNvbXBhY3RuZXNzLiAgRWFjaCBlcXVpdmFsZW5jeQorICAgICAqIGdyb3VwIGlzIHJlcHJlc2VudGVkIGJ5IGEgc2VxdWVuY2Ugb2YgaW50cyBvZiB2YXJpYWJsZSBsZW5ndGguCisgICAgICogR3JvdXBzIGFyZSBpZGVudGlmaWVkIGJ5IGEgc2luZ2xlIGludGVnZXIsIHRoZSBvZmZzZXQgdG8gdGhlCisgICAgICogc3RhcnQgb2YgdGhlIGdyb3VwLiAgSWYgaSBpcyB0aGUgb2Zmc2V0IHRvIHRoZSBzdGFydCBvZiB0aGUKKyAgICAgKiBncm91cCwgdGhlbiB0aGUgbGF5b3V0IG9mIGRhdGEgaXM6CisgICAgICoKKyAgICAgKiBPZmZzZXQgIERhdGEgICAgICAgTm90ZXMKKyAgICAgKiBpKzAgICAgIGlzRFNUICAgICAgMCBmb3Igc3RhbmRhcmQgem9uZXMsIDEgZm9yIERTVAorICAgICAqIGkrMSAgICAgcmF3T2Zmc2V0ICBpbiBzZWNvbmRzIGZyb20gR01UCisgICAgICogPERTVCB6b25lcyBjb250YWluIGFkZGl0aW9uYWwgZW50cmllcyBoZXJlOyBzZWUgYmVsb3c+CisgICAgICogaiswICAgICBjb3VudCAgICAgIG51bWJlciBvZiBJRHMgdG8gZm9sbG93LCA+PSAxCisgICAgICogaisxLi5rICBJRHMgICAgICAgIGluZGljZXMgaW50byBJRFNbXSBhcnJheQorICAgICAqIGoraysxICAgKG5leHQgZW50cnkgc3RhcnQpCisgICAgICoKKyAgICAgKiBGb3Igc3RhbmRhcmQgem9uZXMsIGogPSBpKzIuICBGb3IgRFNUIHpvbmVzLCBqID0gaSsxMworICAgICAqIGFuZCB0aGUgZm9sbG93aW5nIGVudHJpZXMgYXBwbHk6CisgICAgICoKKyAgICAgKiBPZmZzZXQgIERhdGEgICAgICAgTm90ZXMKKyAgICAgKiBpKzIgICAgIHN0YXJ0TW9udGggMC1iYXNlZAorICAgICAqIGkrMyAgICAgc3RhcnREb3dpbQorICAgICAqIGkrNCAgICAgc3RhcnREb3cgIAorICAgICAqIGkrNSAgICAgc3RhcnRUaW1lICBpbiBtaW51dGVzCisgICAgICogaSs2ICAgICBzdGFydE1vZGUgIHcvcy91IGVuY29kZWQgYXMgMC8xLzIKKyAgICAgKiBpKzcgICAgIGVuZE1vbnRoICAgMC1iYXNlZAorICAgICAqIGkrOCAgICAgZW5kRG93aW0KKyAgICAgKiBpKzkgICAgIGVuZERvdyAgCisgICAgICogaSsxMCAgICBlbmRUaW1lICAgIGluIG1pbnV0ZXMKKyAgICAgKiBpKzExICAgIGVuZE1vZGUgICAgdy9zL3UgZW5jb2RlZCBhcyAwLzEvMgorICAgICAqIGkrMTIgICAgIGRzdFNhdmluZ3MgaW4gbWludXRlcworICAgICAqCisgICAgICogQSBzdGFuZGFyZCB6b25lIGVudHJ5IGlzIDMrbiBpbnRzIGxvbmcsIGFuZCBhIERTVCB6b25lIGVudHJ5IGlzCisgICAgICogMTQrbiBpbnRzIGxvbmcsIHdoZXJlIG4gaXMgY291bnQgb2YgSURzIHRvIGZvbGxvdyAodGhlIHZhbHVlIGF0CisgICAgICogaiswKS4KKyAgICAgKi8KKyAgICBzdGF0aWMgaW50W10gREFUQTsKKworICAgIC8qKgorICAgICAqIE1hcCBmcm9tIFRpbWVab25lIElEIHRvIGVxdWl2YWxlbmN5IGdyb3VwIG9mZnNldC4gIFRoaXMgaXMgYW4KKyAgICAgKiBpbmRleCBpbnRvIERBVEEuICBUaGUgZXF1aXZhbGVuY3kgZ3JvdXAgZGF0YSBzdGFydHMgYXQgREFUQVtpXQorICAgICAqIGFuZCBvY2N1cGllcyB0aGUgbSBpbnRzIHRoYXQgZm9sbG93LCB3aGVyZSB0aGUgdmFsdWUgb2YgbSBkZXBlbmRzCisgICAgICogb24gd2hldGhlciB0aGUgem9uZSBpcyBzdGFuZGFyZCBvciBEU1QgYW5kIGhvdyBtYW55IElEcyBhcmUgaW4KKyAgICAgKiB0aGUgZ3JvdXAuCisgICAgICovCisgICAgc3RhdGljIGZpbmFsIEhhc2h0YWJsZSBJTkRFWF9CWV9OQU1FID0gbmV3IEhhc2h0YWJsZSgpOworCisgICAgLyoqCisgICAgICogSW5kZXggb2YgcmF3T2Zmc2V0IHRvIGxpc3Qgb2Ygem9uZXMuICBFbnRyaWVzIGFyZSBpbiBvcmRlciBvZiAKKyAgICAgKiBhc2NlbmRpbmcgcmF3T2Zmc2V0LiAgRm9ybWF0OgorICAgICAqCisgICAgICogT2Zmc2V0ICBEYXRhICAgICAgIE5vdGVzCisgICAgICogaSswICAgICByYXdPZmZzZXQgIGluIG1pbGxpc2Vjb25kcyBmcm9tIEdNVAorICAgICAqIGkrMSAgICAgZGVmYXVsdCAgICBkZWZhdWx0IHpvbmUgZm9yIHRoaXMgb2Zmc2V0CisgICAgICogaSsyICAgICBjb3VudCAgICAgIG51bWJlciBvZiBJRHMgdG8gZm9sbG93CisgICAgICogaSszLi5qICBJRHMgICAgICAgIGluZGljZXMgaW50byBJRFMKKyAgICAgKiBpK2orMSAgIChuZXh0IGVudHJ5IHN0YXJ0KQorICAgICAqCisgICAgICogSWYgdGhlIG51bWJlciBvZiBlcXVpdmFsZW5jeSBncm91cHMgaXMgbiwgdGhlbiBqPW4rMi4KKyAgICAgKgorICAgICAqIEVxdWl2YWxlbmN5IGdyb3VwIElEcyBhcmUgaW5kaWNlcyBpbiBEQVRBIHRvIHRoZSBzdGFydCBvZiBlYWNoCisgICAgICogZXF1aXZhbGVuY3kgZ3JvdXAuCisgICAgICovCisgICAgc3RhdGljIGludFtdIElOREVYX0JZX09GRlNFVDsKKworICAgIC8qKgorICAgICAqIEluZGV4IGJ5IGNvdW50cnkgdG8gbGlzdCBvZiB6b25lcy4gIEVudHJpZXMgYXJlIGluIG9yZGVyIG9mIAorICAgICAqIGFzY2VuZGluZyBjb3VudHJ5IGNvZGUuICBGb3JtYXQ6CisgICAgICoKKyAgICAgKiBPZmZzZXQgIERhdGEgICAgICAgTm90ZXMKKyAgICAgKiBpKzAgICAgIGNvdW50cnkgICAgYXMgYW4gaW50ZWdlciAzMm4xICsgbjA7IHNlZSBiZWxvdworICAgICAqIGkrMSAgICAgY291bnQgICAgICBudW1iZXIgb2YgSURzIHRvIGZvbGxvdworICAgICAqIGkrMi4uaiAgSURzICAgICAgICBpbmRpY2VzIGludG8gSURTW10KKyAgICAgKgorICAgICAqIElmIHRoZSBudW1iZXIgb2Ygem9uZXMgaXMgbiwgdGhlbiBqPW4rMS4KKyAgICAgKgorICAgICAqIFRoZSBmaXJzdCBpbnRlZ2VyIGluIGVhY2ggZW50cnkgaXMgdGhlIGNvdW50cnkgY29kZSBhcyBhbiBpbnRlZ2VyCisgICAgICogZnJvbSAwLi4oMjYtMSkqMzIrKDI2LTEpLiAgVGhpcyBpcyBjb21wdXRlZCBhcyBmb2xsb3dzOiAgQSB0d28KKyAgICAgKiBsZXR0ZXIgY291bnRyeSBjb2RlIFhZIGlzIGNvbnZlcnRlZCB0byAoKFgtJ0EnKTw8NSkgfCAoWS0nQScpLgorICAgICAqIFRoZSBzcGVjaWFsIHZhbHVlIDAgaW5kaWNhdGVzIG5vIGFzc2lnbmVkIGNvdW50cnkuICBUaGlzIGFsc28KKyAgICAgKiBtYXBzIHRvIHRoZSBjb3VudHJ5IGNvZGUgJ0FBJyBidXQgY3VycmVudGx5IHRoaXMgaXMgbm90IGEgdmFsaWQKKyAgICAgKiBjb3VudHJ5IGNvZGUuCisgICAgICoKKyAgICAgKiBab25lIElEIHZhbHVlcyBhcmUgaW5kaWNlcyBpbnRvIElEU1tdLgorICAgICAqLworICAgIHN0YXRpYyBpbnRbXSBJTkRFWF9CWV9DT1VOVFJZOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQkVHSU4gR0VORVJBVEVEIFNPVVJDRSBDT0RFCisgICAgLy8gRGF0ZTogRnJpIEZlYiAwMiAxMDozNjozMiBQU1QgMjAwMQorICAgIC8vIFZlcnNpb246IHR6ZGF0YTIwMDBoIGZyb20gZnRwOi8vZWxzaWUubmNpLm5paC5nb3YvcHViCisgICAgLy8gVG9vbDogaWN1L3NvdXJjZS90b29scy9nZW50egorICAgIC8vIFNlZTogaWN1L3NvdXJjZS90b29scy9nZW50ei9yZWFkbWUudHh0CisgICAgLy8gRE8gTk9UIEVESVQgVEhJUyBTRUNUSU9OCisKKyAgICAvKioKKyAgICAgKiBBcnJheSBvZiBJRHMgaW4gbGV4aWNvZ3JhcGhpYyBvcmRlci4gIFRoZSBJTkRFWF9CWV9PRkZTRVQgYW5kIERBVEEKKyAgICAgKiBhcnJheXMgcmVmZXIgdG8gem9uZXMgdXNpbmcgaW5kaWNlcyBpbnRvIHRoaXMgYXJyYXkuICBUbyBtYXAgZnJvbSBJRAorICAgICAqIHRvIGVxdWl2YWxlbmN5IGdyb3VwLCB1c2UgdGhlIElOREVYX0JZX05BTUUgSGFzaHRhYmxlLgorICAgICAqID4+IEdFTkVSQVRFRCBEQVRBOiBETyBOT1QgRURJVCA8PAorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBJRFMgPSB7CisgICAgICAgICJBQ1QiLAorICAgICAgICAiQUVUIiwKKyAgICAgICAgIkFHVCIsCisgICAgICAgICJBUlQiLAorICAgICAgICAiQVNUIiwKKyAgICAgICAgIkFmcmljYS9BYmlkamFuIiwKKyAgICAgICAgIkFmcmljYS9BY2NyYSIsCisgICAgICAgICJBZnJpY2EvQWRkaXNfQWJhYmEiLAorICAgICAgICAiQWZyaWNhL0FsZ2llcnMiLAorICAgICAgICAiQWZyaWNhL0FzbWVyYSIsCisgICAgICAgICJBZnJpY2EvQmFtYWtvIiwKKyAgICAgICAgIkFmcmljYS9CYW5ndWkiLAorICAgICAgICAiQWZyaWNhL0Jhbmp1bCIsCisgICAgICAgICJBZnJpY2EvQmlzc2F1IiwKKyAgICAgICAgIkFmcmljYS9CbGFudHlyZSIsCisgICAgICAgICJBZnJpY2EvQnJhenphdmlsbGUiLAorICAgICAgICAiQWZyaWNhL0J1anVtYnVyYSIsCisgICAgICAgICJBZnJpY2EvQ2Fpcm8iLAorICAgICAgICAiQWZyaWNhL0Nhc2FibGFuY2EiLAorICAgICAgICAiQWZyaWNhL0NldXRhIiwKKyAgICAgICAgIkFmcmljYS9Db25ha3J5IiwKKyAgICAgICAgIkFmcmljYS9EYWthciIsCisgICAgICAgICJBZnJpY2EvRGFyX2VzX1NhbGFhbSIsCisgICAgICAgICJBZnJpY2EvRGppYm91dGkiLAorICAgICAgICAiQWZyaWNhL0RvdWFsYSIsCisgICAgICAgICJBZnJpY2EvRWxfQWFpdW4iLAorICAgICAgICAiQWZyaWNhL0ZyZWV0b3duIiwKKyAgICAgICAgIkFmcmljYS9HYWJvcm9uZSIsCisgICAgICAgICJBZnJpY2EvSGFyYXJlIiwKKyAgICAgICAgIkFmcmljYS9Kb2hhbm5lc2J1cmciLAorICAgICAgICAiQWZyaWNhL0thbXBhbGEiLAorICAgICAgICAiQWZyaWNhL0toYXJ0b3VtIiwKKyAgICAgICAgIkFmcmljYS9LaWdhbGkiLAorICAgICAgICAiQWZyaWNhL0tpbnNoYXNhIiwKKyAgICAgICAgIkFmcmljYS9MYWdvcyIsCisgICAgICAgICJBZnJpY2EvTGlicmV2aWxsZSIsCisgICAgICAgICJBZnJpY2EvTG9tZSIsCisgICAgICAgICJBZnJpY2EvTHVhbmRhIiwKKyAgICAgICAgIkFmcmljYS9MdWJ1bWJhc2hpIiwKKyAgICAgICAgIkFmcmljYS9MdXNha2EiLAorICAgICAgICAiQWZyaWNhL01hbGFibyIsCisgICAgICAgICJBZnJpY2EvTWFwdXRvIiwKKyAgICAgICAgIkFmcmljYS9NYXNlcnUiLAorICAgICAgICAiQWZyaWNhL01iYWJhbmUiLAorICAgICAgICAiQWZyaWNhL01vZ2FkaXNodSIsCisgICAgICAgICJBZnJpY2EvTW9ucm92aWEiLAorICAgICAgICAiQWZyaWNhL05haXJvYmkiLAorICAgICAgICAiQWZyaWNhL05kamFtZW5hIiwKKyAgICAgICAgIkFmcmljYS9OaWFtZXkiLAorICAgICAgICAiQWZyaWNhL05vdWFrY2hvdHQiLAorICAgICAgICAiQWZyaWNhL091YWdhZG91Z291IiwKKyAgICAgICAgIkFmcmljYS9Qb3J0by1Ob3ZvIiwKKyAgICAgICAgIkFmcmljYS9TYW9fVG9tZSIsCisgICAgICAgICJBZnJpY2EvVGltYnVrdHUiLAorICAgICAgICAiQWZyaWNhL1RyaXBvbGkiLAorICAgICAgICAiQWZyaWNhL1R1bmlzIiwKKyAgICAgICAgIkFmcmljYS9XaW5kaG9layIsCisgICAgICAgICJBbWVyaWNhL0FkYWsiLAorICAgICAgICAiQW1lcmljYS9BbmNob3JhZ2UiLAorICAgICAgICAiQW1lcmljYS9Bbmd1aWxsYSIsCisgICAgICAgICJBbWVyaWNhL0FudGlndWEiLAorICAgICAgICAiQW1lcmljYS9BcmFndWFpbmEiLAorICAgICAgICAiQW1lcmljYS9BcnViYSIsCisgICAgICAgICJBbWVyaWNhL0FzdW5jaW9uIiwKKyAgICAgICAgIkFtZXJpY2EvQmFyYmFkb3MiLAorICAgICAgICAiQW1lcmljYS9CZWxlbSIsCisgICAgICAgICJBbWVyaWNhL0JlbGl6ZSIsCisgICAgICAgICJBbWVyaWNhL0JvYV9WaXN0YSIsCisgICAgICAgICJBbWVyaWNhL0JvZ290YSIsCisgICAgICAgICJBbWVyaWNhL0JvaXNlIiwKKyAgICAgICAgIkFtZXJpY2EvQnVlbm9zX0FpcmVzIiwKKyAgICAgICAgIkFtZXJpY2EvQ2FtYnJpZGdlX0JheSIsCisgICAgICAgICJBbWVyaWNhL0NhbmN1biIsCisgICAgICAgICJBbWVyaWNhL0NhcmFjYXMiLAorICAgICAgICAiQW1lcmljYS9DYXRhbWFyY2EiLAorICAgICAgICAiQW1lcmljYS9DYXllbm5lIiwKKyAgICAgICAgIkFtZXJpY2EvQ2F5bWFuIiwKKyAgICAgICAgIkFtZXJpY2EvQ2hpY2FnbyIsCisgICAgICAgICJBbWVyaWNhL0NoaWh1YWh1YSIsCisgICAgICAgICJBbWVyaWNhL0NvcmRvYmEiLAorICAgICAgICAiQW1lcmljYS9Db3N0YV9SaWNhIiwKKyAgICAgICAgIkFtZXJpY2EvQ3VpYWJhIiwKKyAgICAgICAgIkFtZXJpY2EvQ3VyYWNhbyIsCisgICAgICAgICJBbWVyaWNhL0Rhd3NvbiIsCisgICAgICAgICJBbWVyaWNhL0Rhd3Nvbl9DcmVlayIsCisgICAgICAgICJBbWVyaWNhL0RlbnZlciIsCisgICAgICAgICJBbWVyaWNhL0RldHJvaXQiLAorICAgICAgICAiQW1lcmljYS9Eb21pbmljYSIsCisgICAgICAgICJBbWVyaWNhL0VkbW9udG9uIiwKKyAgICAgICAgIkFtZXJpY2EvRWlydW5lcGUiLAorICAgICAgICAiQW1lcmljYS9FbF9TYWx2YWRvciIsCisgICAgICAgICJBbWVyaWNhL0ZvcnRhbGV6YSIsCisgICAgICAgICJBbWVyaWNhL0dsYWNlX0JheSIsCisgICAgICAgICJBbWVyaWNhL0dvZHRoYWIiLAorICAgICAgICAiQW1lcmljYS9Hb29zZV9CYXkiLAorICAgICAgICAiQW1lcmljYS9HcmFuZF9UdXJrIiwKKyAgICAgICAgIkFtZXJpY2EvR3JlbmFkYSIsCisgICAgICAgICJBbWVyaWNhL0d1YWRlbG91cGUiLAorICAgICAgICAiQW1lcmljYS9HdWF0ZW1hbGEiLAorICAgICAgICAiQW1lcmljYS9HdWF5YXF1aWwiLAorICAgICAgICAiQW1lcmljYS9HdXlhbmEiLAorICAgICAgICAiQW1lcmljYS9IYWxpZmF4IiwKKyAgICAgICAgIkFtZXJpY2EvSGF2YW5hIiwKKyAgICAgICAgIkFtZXJpY2EvSGVybW9zaWxsbyIsCisgICAgICAgICJBbWVyaWNhL0luZGlhbmEvS25veCIsCisgICAgICAgICJBbWVyaWNhL0luZGlhbmEvTWFyZW5nbyIsCisgICAgICAgICJBbWVyaWNhL0luZGlhbmEvVmV2YXkiLAorICAgICAgICAiQW1lcmljYS9JbmRpYW5hcG9saXMiLAorICAgICAgICAiQW1lcmljYS9JbnV2aWsiLAorICAgICAgICAiQW1lcmljYS9JcWFsdWl0IiwKKyAgICAgICAgIkFtZXJpY2EvSmFtYWljYSIsCisgICAgICAgICJBbWVyaWNhL0p1anV5IiwKKyAgICAgICAgIkFtZXJpY2EvSnVuZWF1IiwKKyAgICAgICAgIkFtZXJpY2EvS2VudHVja3kvTW9udGljZWxsbyIsCisgICAgICAgICJBbWVyaWNhL0xhX1BheiIsCisgICAgICAgICJBbWVyaWNhL0xpbWEiLAorICAgICAgICAiQW1lcmljYS9Mb3NfQW5nZWxlcyIsCisgICAgICAgICJBbWVyaWNhL0xvdWlzdmlsbGUiLAorICAgICAgICAiQW1lcmljYS9NYWNlaW8iLAorICAgICAgICAiQW1lcmljYS9NYW5hZ3VhIiwKKyAgICAgICAgIkFtZXJpY2EvTWFuYXVzIiwKKyAgICAgICAgIkFtZXJpY2EvTWFydGluaXF1ZSIsCisgICAgICAgICJBbWVyaWNhL01hemF0bGFuIiwKKyAgICAgICAgIkFtZXJpY2EvTWVuZG96YSIsCisgICAgICAgICJBbWVyaWNhL01lbm9taW5lZSIsCisgICAgICAgICJBbWVyaWNhL01lcmlkYSIsCisgICAgICAgICJBbWVyaWNhL01leGljb19DaXR5IiwKKyAgICAgICAgIkFtZXJpY2EvTWlxdWVsb24iLAorICAgICAgICAiQW1lcmljYS9Nb250ZXJyZXkiLAorICAgICAgICAiQW1lcmljYS9Nb250ZXZpZGVvIiwKKyAgICAgICAgIkFtZXJpY2EvTW9udHJlYWwiLAorICAgICAgICAiQW1lcmljYS9Nb250c2VycmF0IiwKKyAgICAgICAgIkFtZXJpY2EvTmFzc2F1IiwKKyAgICAgICAgIkFtZXJpY2EvTmV3X1lvcmsiLAorICAgICAgICAiQW1lcmljYS9OaXBpZ29uIiwKKyAgICAgICAgIkFtZXJpY2EvTm9tZSIsCisgICAgICAgICJBbWVyaWNhL05vcm9uaGEiLAorICAgICAgICAiQW1lcmljYS9QYW5hbWEiLAorICAgICAgICAiQW1lcmljYS9QYW5nbmlydHVuZyIsCisgICAgICAgICJBbWVyaWNhL1BhcmFtYXJpYm8iLAorICAgICAgICAiQW1lcmljYS9QaG9lbml4IiwKKyAgICAgICAgIkFtZXJpY2EvUG9ydC1hdS1QcmluY2UiLAorICAgICAgICAiQW1lcmljYS9Qb3J0X29mX1NwYWluIiwKKyAgICAgICAgIkFtZXJpY2EvUG9ydG9fQWNyZSIsCisgICAgICAgICJBbWVyaWNhL1BvcnRvX1ZlbGhvIiwKKyAgICAgICAgIkFtZXJpY2EvUHVlcnRvX1JpY28iLAorICAgICAgICAiQW1lcmljYS9SYWlueV9SaXZlciIsCisgICAgICAgICJBbWVyaWNhL1Jhbmtpbl9JbmxldCIsCisgICAgICAgICJBbWVyaWNhL1JlY2lmZSIsCisgICAgICAgICJBbWVyaWNhL1JlZ2luYSIsCisgICAgICAgICJBbWVyaWNhL1Jvc2FyaW8iLAorICAgICAgICAiQW1lcmljYS9TYW50aWFnbyIsCisgICAgICAgICJBbWVyaWNhL1NhbnRvX0RvbWluZ28iLAorICAgICAgICAiQW1lcmljYS9TYW9fUGF1bG8iLAorICAgICAgICAiQW1lcmljYS9TY29yZXNieXN1bmQiLAorICAgICAgICAiQW1lcmljYS9TdF9Kb2hucyIsCisgICAgICAgICJBbWVyaWNhL1N0X0tpdHRzIiwKKyAgICAgICAgIkFtZXJpY2EvU3RfTHVjaWEiLAorICAgICAgICAiQW1lcmljYS9TdF9UaG9tYXMiLAorICAgICAgICAiQW1lcmljYS9TdF9WaW5jZW50IiwKKyAgICAgICAgIkFtZXJpY2EvU3dpZnRfQ3VycmVudCIsCisgICAgICAgICJBbWVyaWNhL1RlZ3VjaWdhbHBhIiwKKyAgICAgICAgIkFtZXJpY2EvVGh1bGUiLAorICAgICAgICAiQW1lcmljYS9UaHVuZGVyX0JheSIsCisgICAgICAgICJBbWVyaWNhL1RpanVhbmEiLAorICAgICAgICAiQW1lcmljYS9Ub3J0b2xhIiwKKyAgICAgICAgIkFtZXJpY2EvVmFuY291dmVyIiwKKyAgICAgICAgIkFtZXJpY2EvV2hpdGVob3JzZSIsCisgICAgICAgICJBbWVyaWNhL1dpbm5pcGVnIiwKKyAgICAgICAgIkFtZXJpY2EvWWFrdXRhdCIsCisgICAgICAgICJBbWVyaWNhL1llbGxvd2tuaWZlIiwKKyAgICAgICAgIkFudGFyY3RpY2EvQ2FzZXkiLAorICAgICAgICAiQW50YXJjdGljYS9EYXZpcyIsCisgICAgICAgICJBbnRhcmN0aWNhL0R1bW9udERVcnZpbGxlIiwKKyAgICAgICAgIkFudGFyY3RpY2EvTWF3c29uIiwKKyAgICAgICAgIkFudGFyY3RpY2EvTWNNdXJkbyIsCisgICAgICAgICJBbnRhcmN0aWNhL1BhbG1lciIsCisgICAgICAgICJBbnRhcmN0aWNhL1N5b3dhIiwKKyAgICAgICAgIkFyY3RpYy9Mb25neWVhcmJ5ZW4iLAorICAgICAgICAiQXNpYS9BZGVuIiwKKyAgICAgICAgIkFzaWEvQWxtYXR5IiwKKyAgICAgICAgIkFzaWEvQW1tYW4iLAorICAgICAgICAiQXNpYS9BbmFkeXIiLAorICAgICAgICAiQXNpYS9BcXRhdSIsCisgICAgICAgICJBc2lhL0FxdG9iZSIsCisgICAgICAgICJBc2lhL0FzaGdhYmF0IiwKKyAgICAgICAgIkFzaWEvQmFnaGRhZCIsCisgICAgICAgICJBc2lhL0JhaHJhaW4iLAorICAgICAgICAiQXNpYS9CYWt1IiwKKyAgICAgICAgIkFzaWEvQmFuZ2tvayIsCisgICAgICAgICJBc2lhL0JlaXJ1dCIsCisgICAgICAgICJBc2lhL0Jpc2hrZWsiLAorICAgICAgICAiQXNpYS9CcnVuZWkiLAorICAgICAgICAiQXNpYS9DYWxjdXR0YSIsCisgICAgICAgICJBc2lhL0NodW5na2luZyIsCisgICAgICAgICJBc2lhL0NvbG9tYm8iLAorICAgICAgICAiQXNpYS9EYW1hc2N1cyIsCisgICAgICAgICJBc2lhL0RoYWthIiwKKyAgICAgICAgIkFzaWEvRGlsaSIsCisgICAgICAgICJBc2lhL0R1YmFpIiwKKyAgICAgICAgIkFzaWEvRHVzaGFuYmUiLAorICAgICAgICAiQXNpYS9HYXphIiwKKyAgICAgICAgIkFzaWEvSGFyYmluIiwKKyAgICAgICAgIkFzaWEvSG9uZ19Lb25nIiwKKyAgICAgICAgIkFzaWEvSG92ZCIsCisgICAgICAgICJBc2lhL0lya3V0c2siLAorICAgICAgICAiQXNpYS9KYWthcnRhIiwKKyAgICAgICAgIkFzaWEvSmF5YXB1cmEiLAorICAgICAgICAiQXNpYS9KZXJ1c2FsZW0iLAorICAgICAgICAiQXNpYS9LYWJ1bCIsCisgICAgICAgICJBc2lhL0thbWNoYXRrYSIsCisgICAgICAgICJBc2lhL0thcmFjaGkiLAorICAgICAgICAiQXNpYS9LYXNoZ2FyIiwKKyAgICAgICAgIkFzaWEvS2F0bWFuZHUiLAorICAgICAgICAiQXNpYS9LcmFzbm95YXJzayIsCisgICAgICAgICJBc2lhL0t1YWxhX0x1bXB1ciIsCisgICAgICAgICJBc2lhL0t1Y2hpbmciLAorICAgICAgICAiQXNpYS9LdXdhaXQiLAorICAgICAgICAiQXNpYS9NYWNhbyIsCisgICAgICAgICJBc2lhL01hZ2FkYW4iLAorICAgICAgICAiQXNpYS9NYW5pbGEiLAorICAgICAgICAiQXNpYS9NdXNjYXQiLAorICAgICAgICAiQXNpYS9OaWNvc2lhIiwKKyAgICAgICAgIkFzaWEvTm92b3NpYmlyc2siLAorICAgICAgICAiQXNpYS9PbXNrIiwKKyAgICAgICAgIkFzaWEvUGhub21fUGVuaCIsCisgICAgICAgICJBc2lhL1B5b25neWFuZyIsCisgICAgICAgICJBc2lhL1FhdGFyIiwKKyAgICAgICAgIkFzaWEvUmFuZ29vbiIsCisgICAgICAgICJBc2lhL1JpeWFkaCIsCisgICAgICAgICJBc2lhL1JpeWFkaDg3IiwKKyAgICAgICAgIkFzaWEvUml5YWRoODgiLAorICAgICAgICAiQXNpYS9SaXlhZGg4OSIsCisgICAgICAgICJBc2lhL1NhaWdvbiIsCisgICAgICAgICJBc2lhL1NhbWFya2FuZCIsCisgICAgICAgICJBc2lhL1Nlb3VsIiwKKyAgICAgICAgIkFzaWEvU2hhbmdoYWkiLAorICAgICAgICAiQXNpYS9TaW5nYXBvcmUiLAorICAgICAgICAiQXNpYS9UYWlwZWkiLAorICAgICAgICAiQXNpYS9UYXNoa2VudCIsCisgICAgICAgICJBc2lhL1RiaWxpc2kiLAorICAgICAgICAiQXNpYS9UZWhyYW4iLAorICAgICAgICAiQXNpYS9UaGltcGh1IiwKKyAgICAgICAgIkFzaWEvVG9reW8iLAorICAgICAgICAiQXNpYS9VanVuZ19QYW5kYW5nIiwKKyAgICAgICAgIkFzaWEvVWxhYW5iYWF0YXIiLAorICAgICAgICAiQXNpYS9VcnVtcWkiLAorICAgICAgICAiQXNpYS9WaWVudGlhbmUiLAorICAgICAgICAiQXNpYS9WbGFkaXZvc3RvayIsCisgICAgICAgICJBc2lhL1lha3V0c2siLAorICAgICAgICAiQXNpYS9ZZWthdGVyaW5idXJnIiwKKyAgICAgICAgIkFzaWEvWWVyZXZhbiIsCisgICAgICAgICJBdGxhbnRpYy9Bem9yZXMiLAorICAgICAgICAiQXRsYW50aWMvQmVybXVkYSIsCisgICAgICAgICJBdGxhbnRpYy9DYW5hcnkiLAorICAgICAgICAiQXRsYW50aWMvQ2FwZV9WZXJkZSIsCisgICAgICAgICJBdGxhbnRpYy9GYWVyb2UiLAorICAgICAgICAiQXRsYW50aWMvSmFuX01heWVuIiwKKyAgICAgICAgIkF0bGFudGljL01hZGVpcmEiLAorICAgICAgICAiQXRsYW50aWMvUmV5a2phdmlrIiwKKyAgICAgICAgIkF0bGFudGljL1NvdXRoX0dlb3JnaWEiLAorICAgICAgICAiQXRsYW50aWMvU3RfSGVsZW5hIiwKKyAgICAgICAgIkF0bGFudGljL1N0YW5sZXkiLAorICAgICAgICAiQXVzdHJhbGlhL0FkZWxhaWRlIiwKKyAgICAgICAgIkF1c3RyYWxpYS9CcmlzYmFuZSIsCisgICAgICAgICJBdXN0cmFsaWEvQnJva2VuX0hpbGwiLAorICAgICAgICAiQXVzdHJhbGlhL0RhcndpbiIsCisgICAgICAgICJBdXN0cmFsaWEvSG9iYXJ0IiwKKyAgICAgICAgIkF1c3RyYWxpYS9MaW5kZW1hbiIsCisgICAgICAgICJBdXN0cmFsaWEvTG9yZF9Ib3dlIiwKKyAgICAgICAgIkF1c3RyYWxpYS9NZWxib3VybmUiLAorICAgICAgICAiQXVzdHJhbGlhL1BlcnRoIiwKKyAgICAgICAgIkF1c3RyYWxpYS9TeWRuZXkiLAorICAgICAgICAiQkVUIiwKKyAgICAgICAgIkJTVCIsCisgICAgICAgICJDQVQiLAorICAgICAgICAiQ0VUIiwKKyAgICAgICAgIkNOVCIsCisgICAgICAgICJDU1QiLAorICAgICAgICAiQ1RUIiwKKyAgICAgICAgIkVBVCIsCisgICAgICAgICJFQ1QiLAorICAgICAgICAiRUVUIiwKKyAgICAgICAgIkVTVCIsCisgICAgICAgICJFdGMvR01UIiwKKyAgICAgICAgIkV0Yy9HTVQrMSIsCisgICAgICAgICJFdGMvR01UKzEwIiwKKyAgICAgICAgIkV0Yy9HTVQrMTEiLAorICAgICAgICAiRXRjL0dNVCsxMiIsCisgICAgICAgICJFdGMvR01UKzIiLAorICAgICAgICAiRXRjL0dNVCszIiwKKyAgICAgICAgIkV0Yy9HTVQrNCIsCisgICAgICAgICJFdGMvR01UKzUiLAorICAgICAgICAiRXRjL0dNVCs2IiwKKyAgICAgICAgIkV0Yy9HTVQrNyIsCisgICAgICAgICJFdGMvR01UKzgiLAorICAgICAgICAiRXRjL0dNVCs5IiwKKyAgICAgICAgIkV0Yy9HTVQtMSIsCisgICAgICAgICJFdGMvR01ULTEwIiwKKyAgICAgICAgIkV0Yy9HTVQtMTEiLAorICAgICAgICAiRXRjL0dNVC0xMiIsCisgICAgICAgICJFdGMvR01ULTEzIiwKKyAgICAgICAgIkV0Yy9HTVQtMTQiLAorICAgICAgICAiRXRjL0dNVC0yIiwKKyAgICAgICAgIkV0Yy9HTVQtMyIsCisgICAgICAgICJFdGMvR01ULTQiLAorICAgICAgICAiRXRjL0dNVC01IiwKKyAgICAgICAgIkV0Yy9HTVQtNiIsCisgICAgICAgICJFdGMvR01ULTciLAorICAgICAgICAiRXRjL0dNVC04IiwKKyAgICAgICAgIkV0Yy9HTVQtOSIsCisgICAgICAgICJFdGMvVUNUIiwKKyAgICAgICAgIkV0Yy9VVEMiLAorICAgICAgICAiRXVyb3BlL0Ftc3RlcmRhbSIsCisgICAgICAgICJFdXJvcGUvQW5kb3JyYSIsCisgICAgICAgICJFdXJvcGUvQXRoZW5zIiwKKyAgICAgICAgIkV1cm9wZS9CZWxmYXN0IiwKKyAgICAgICAgIkV1cm9wZS9CZWxncmFkZSIsCisgICAgICAgICJFdXJvcGUvQmVybGluIiwKKyAgICAgICAgIkV1cm9wZS9CcmF0aXNsYXZhIiwKKyAgICAgICAgIkV1cm9wZS9CcnVzc2VscyIsCisgICAgICAgICJFdXJvcGUvQnVjaGFyZXN0IiwKKyAgICAgICAgIkV1cm9wZS9CdWRhcGVzdCIsCisgICAgICAgICJFdXJvcGUvQ2hpc2luYXUiLAorICAgICAgICAiRXVyb3BlL0NvcGVuaGFnZW4iLAorICAgICAgICAiRXVyb3BlL0R1YmxpbiIsCisgICAgICAgICJFdXJvcGUvR2licmFsdGFyIiwKKyAgICAgICAgIkV1cm9wZS9IZWxzaW5raSIsCisgICAgICAgICJFdXJvcGUvSXN0YW5idWwiLAorICAgICAgICAiRXVyb3BlL0thbGluaW5ncmFkIiwKKyAgICAgICAgIkV1cm9wZS9LaWV2IiwKKyAgICAgICAgIkV1cm9wZS9MaXNib24iLAorICAgICAgICAiRXVyb3BlL0xqdWJsamFuYSIsCisgICAgICAgICJFdXJvcGUvTG9uZG9uIiwKKyAgICAgICAgIkV1cm9wZS9MdXhlbWJvdXJnIiwKKyAgICAgICAgIkV1cm9wZS9NYWRyaWQiLAorICAgICAgICAiRXVyb3BlL01hbHRhIiwKKyAgICAgICAgIkV1cm9wZS9NaW5zayIsCisgICAgICAgICJFdXJvcGUvTW9uYWNvIiwKKyAgICAgICAgIkV1cm9wZS9Nb3Njb3ciLAorICAgICAgICAiRXVyb3BlL09zbG8iLAorICAgICAgICAiRXVyb3BlL1BhcmlzIiwKKyAgICAgICAgIkV1cm9wZS9QcmFndWUiLAorICAgICAgICAiRXVyb3BlL1JpZ2EiLAorICAgICAgICAiRXVyb3BlL1JvbWUiLAorICAgICAgICAiRXVyb3BlL1NhbWFyYSIsCisgICAgICAgICJFdXJvcGUvU2FuX01hcmlubyIsCisgICAgICAgICJFdXJvcGUvU2FyYWpldm8iLAorICAgICAgICAiRXVyb3BlL1NpbWZlcm9wb2wiLAorICAgICAgICAiRXVyb3BlL1Nrb3BqZSIsCisgICAgICAgICJFdXJvcGUvU29maWEiLAorICAgICAgICAiRXVyb3BlL1N0b2NraG9sbSIsCisgICAgICAgICJFdXJvcGUvVGFsbGlubiIsCisgICAgICAgICJFdXJvcGUvVGlyYW5lIiwKKyAgICAgICAgIkV1cm9wZS9UaXJhc3BvbCIsCisgICAgICAgICJFdXJvcGUvVXpoZ29yb2QiLAorICAgICAgICAiRXVyb3BlL1ZhZHV6IiwKKyAgICAgICAgIkV1cm9wZS9WYXRpY2FuIiwKKyAgICAgICAgIkV1cm9wZS9WaWVubmEiLAorICAgICAgICAiRXVyb3BlL1ZpbG5pdXMiLAorICAgICAgICAiRXVyb3BlL1dhcnNhdyIsCisgICAgICAgICJFdXJvcGUvWmFncmViIiwKKyAgICAgICAgIkV1cm9wZS9aYXBvcm96aHllIiwKKyAgICAgICAgIkV1cm9wZS9adXJpY2giLAorICAgICAgICAiR01UIiwKKyAgICAgICAgIkhTVCIsCisgICAgICAgICJJRVQiLAorICAgICAgICAiSVNUIiwKKyAgICAgICAgIkluZGlhbi9BbnRhbmFuYXJpdm8iLAorICAgICAgICAiSW5kaWFuL0NoYWdvcyIsCisgICAgICAgICJJbmRpYW4vQ2hyaXN0bWFzIiwKKyAgICAgICAgIkluZGlhbi9Db2NvcyIsCisgICAgICAgICJJbmRpYW4vQ29tb3JvIiwKKyAgICAgICAgIkluZGlhbi9LZXJndWVsZW4iLAorICAgICAgICAiSW5kaWFuL01haGUiLAorICAgICAgICAiSW5kaWFuL01hbGRpdmVzIiwKKyAgICAgICAgIkluZGlhbi9NYXVyaXRpdXMiLAorICAgICAgICAiSW5kaWFuL01heW90dGUiLAorICAgICAgICAiSW5kaWFuL1JldW5pb24iLAorICAgICAgICAiSlNUIiwKKyAgICAgICAgIk1FVCIsCisgICAgICAgICJNSVQiLAorICAgICAgICAiTVNUIiwKKyAgICAgICAgIk5FVCIsCisgICAgICAgICJOU1QiLAorICAgICAgICAiUExUIiwKKyAgICAgICAgIlBOVCIsCisgICAgICAgICJQUlQiLAorICAgICAgICAiUFNUIiwKKyAgICAgICAgIlBhY2lmaWMvQXBpYSIsCisgICAgICAgICJQYWNpZmljL0F1Y2tsYW5kIiwKKyAgICAgICAgIlBhY2lmaWMvQ2hhdGhhbSIsCisgICAgICAgICJQYWNpZmljL0Vhc3RlciIsCisgICAgICAgICJQYWNpZmljL0VmYXRlIiwKKyAgICAgICAgIlBhY2lmaWMvRW5kZXJidXJ5IiwKKyAgICAgICAgIlBhY2lmaWMvRmFrYW9mbyIsCisgICAgICAgICJQYWNpZmljL0ZpamkiLAorICAgICAgICAiUGFjaWZpYy9GdW5hZnV0aSIsCisgICAgICAgICJQYWNpZmljL0dhbGFwYWdvcyIsCisgICAgICAgICJQYWNpZmljL0dhbWJpZXIiLAorICAgICAgICAiUGFjaWZpYy9HdWFkYWxjYW5hbCIsCisgICAgICAgICJQYWNpZmljL0d1YW0iLAorICAgICAgICAiUGFjaWZpYy9Ib25vbHVsdSIsCisgICAgICAgICJQYWNpZmljL0pvaG5zdG9uIiwKKyAgICAgICAgIlBhY2lmaWMvS2lyaXRpbWF0aSIsCisgICAgICAgICJQYWNpZmljL0tvc3JhZSIsCisgICAgICAgICJQYWNpZmljL0t3YWphbGVpbiIsCisgICAgICAgICJQYWNpZmljL01hanVybyIsCisgICAgICAgICJQYWNpZmljL01hcnF1ZXNhcyIsCisgICAgICAgICJQYWNpZmljL01pZHdheSIsCisgICAgICAgICJQYWNpZmljL05hdXJ1IiwKKyAgICAgICAgIlBhY2lmaWMvTml1ZSIsCisgICAgICAgICJQYWNpZmljL05vcmZvbGsiLAorICAgICAgICAiUGFjaWZpYy9Ob3VtZWEiLAorICAgICAgICAiUGFjaWZpYy9QYWdvX1BhZ28iLAorICAgICAgICAiUGFjaWZpYy9QYWxhdSIsCisgICAgICAgICJQYWNpZmljL1BpdGNhaXJuIiwKKyAgICAgICAgIlBhY2lmaWMvUG9uYXBlIiwKKyAgICAgICAgIlBhY2lmaWMvUG9ydF9Nb3Jlc2J5IiwKKyAgICAgICAgIlBhY2lmaWMvUmFyb3RvbmdhIiwKKyAgICAgICAgIlBhY2lmaWMvU2FpcGFuIiwKKyAgICAgICAgIlBhY2lmaWMvVGFoaXRpIiwKKyAgICAgICAgIlBhY2lmaWMvVGFyYXdhIiwKKyAgICAgICAgIlBhY2lmaWMvVG9uZ2F0YXB1IiwKKyAgICAgICAgIlBhY2lmaWMvVHJ1ayIsCisgICAgICAgICJQYWNpZmljL1dha2UiLAorICAgICAgICAiUGFjaWZpYy9XYWxsaXMiLAorICAgICAgICAiUGFjaWZpYy9ZYXAiLAorICAgICAgICAiU1NUIiwKKyAgICAgICAgIlVUQyIsCisgICAgICAgICJWU1QiLAorICAgICAgICAiV0VUIiwKKyAgICB9OworCisgICAgLyoqCisgICAgICogUkxFIGVuY29kZWQgZm9ybSBvZiBEQVRBLgorICAgICAqIEBzZWUgY29tLmlibS51dGlsLlV0aWxpdHkuUkxFU3RyaW5nVG9JbnRBcnJheQorICAgICAqID4+IEdFTkVSQVRFRCBEQVRBOiBETyBOT1QgRURJVCA8PAorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgREFUQV9STEUgPQorICAgICAgICAiXDAwMFx1MDZBMFwwMDBcMDAwXHVGRkZGXHU1NzQwXDAwMFwwMDFcMDAwXHUwMTIwXDAwMFwwMDBcdUZGRkZcdTY1NTBcMDAwIisKKyAgICAgICAgIlwwMDZcMDAwXHUwMTFGXDAwMFx1MDE3RFwwMDBcdTAxODVcMDAwXHUwMTk5XDAwMFx1MDE5QlwwMDBcdTAxOUVcMDAwXDAwMCIrCisgICAgICAgICJcdUZGRkZcdTczNjBcMDAwXDAwNlwwMDBcdTAxMUVcMDAwXHUwMTZEXDAwMFx1MDE4QlwwMDBcdTAxOTJcMDAwXHUwMTkzIisKKyAgICAgICAgIlwwMDBcdTAxQTVcMDAwXDAwMVx1RkZGRlx1NzM2MFwwMDBcMDAzXDAwMFwwMDFcdUZGRkZcdUZGRkZcMDAweFwwMDBcMDAwIisKKyAgICAgICAgIlwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAweFwwMDBcMDAwXDAwMDxcMDAwXDAwMVwwMDA5XDAwMFwwMDFcdUZGRkYiKworICAgICAgICAiXHU3MzYwXDAwMFwwMTFcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDAxXHVGRkZGIisKKyAgICAgICAgIlx1RkZGRlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAzNlwwMDBcMDAxXDAwMFx1MDFBM1wwMDBcMDAwXHVGRkZGXHU3QTY4XDAwMCIrCisgICAgICAgICJcMDAxXDAwMFx1MDE5OFwwMDBcMDAwXHVGRkZGXHU4MTcwXDAwMFwwMDJcMDAwXHUwMTI4XDAwMFx1MDE4RlwwMDBcMDAxIisKKyAgICAgICAgIlx1RkZGRlx1ODE3MFwwMDBcMDAzXDAwMFwwMDFcdUZGRkZcdUZGRkZcMDAweFwwMDBcMDAwXDAwMFwwMTFcdUZGRkZcdUZGRkYiKworICAgICAgICAiXDAwMFwwMDFcMDAweFwwMDBcMDAwXDAwMDxcMDAwXDAwNVwwMDBcMDA0XDAwMDpcMDAwcFwwMDBcdTAwODdcMDAwXHUwMEE5IisKKyAgICAgICAgIlwwMDBcMDAwXHVGRkZGXHU4RjgwXDAwMFwwMDJcMDAwXHUwMTI3XDAwMFx1MDFBMFwwMDBcMDAxXHVGRkZGXHU4RjgwXDAwMCIrCisgICAgICAgICJcMDAzXDAwMFwwMDFcdUZGRkZcdUZGRkZcMDAweFwwMDBcMDAwXDAwMFwwMTFcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDAiKworICAgICAgICAieFwwMDBcMDAwXDAwMDxcMDAwXDAwNlwwMDBTXDAwMHRcMDAwXHUwMEE0XDAwMFx1MDBBNlwwMDBcdTAwQTdcMDAwXHUwMTg0IisKKyAgICAgICAgIlwwMDBcMDAwXHVGRkZGXHU5RDkwXDAwMFwwMDVcMDAwVFwwMDBnXDAwMFx1MDA4Q1wwMDBcdTAxMjZcMDAwXHUwMTgyXDAwMCIrCisgICAgICAgICJcMDAxXHVGRkZGXHU5RDkwXDAwMFwwMDNcMDAwXDAwMVx1RkZGRlx1RkZGRlwwMDB4XDAwMFwwMDBcMDAwXDAxMVx1RkZGRiIrCisgICAgICAgICJcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDBcMDAwPFwwMDBcMDEwXDAwMEVcMDAwTlwwMDBVXDAwMFhcMDAwbFwwMDAiKworICAgICAgICAielwwMDBcdTAwQUFcMDAwXHUwMTdFXDAwMFwwMDBcdUZGRkZcdUFCQTBcMDAwXDAwNVwwMDB3XDAwMFx1MDA5NVwwMDBcdTAwQTAiKworICAgICAgICAiXDAwMFx1MDEyNVwwMDBcdTAxOEVcMDAwXDAwMVx1RkZGRlx1QUJBMFwwMDBcMDAzXDAwMFwwMDFcdUZGRkZcdUZGRkZcMDAwIisKKyAgICAgICAgInhcMDAwXDAwMFwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAweFwwMDBcMDAwXDAwMDxcMDAwXDAxMVwwMDBHXDAwMCIrCisgICAgICAgICJIXDAwME1cMDAwfFwwMDB9XDAwMH5cMDAwXHUwMDgwXDAwMFx1MDA5MlwwMDBcdTAxMTZcMDAwXDAwMVx1RkZGRlx1QUJBMCIrCisgICAgICAgICJcMDAwXDAwM1wwMDBcMDAxXHVGRkZGXHVGRkZGXDAwMHhcMDAwXDAwMFwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDEiKworICAgICAgICAiXDAwMHhcMDAwXDAwMVwwMDA8XDAwMFwwMDFcMDAwXHUwMEE4XDAwMFwwMDFcdUZGRkZcdUFCQTBcMDAwXDAxM1wwMDBcMDIyIisKKyAgICAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMTRcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwPCIrCisgICAgICAgICJcMDAwXDAwMVwwMDBCXDAwMFwwMDFcdUZGRkZcdUFCQTBcMDAwXDAwMFwwMDBcMDE3XHVGRkZGXHVGRkY5XDAwMFwwMDAiKworICAgICAgICAiXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDE3XDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMDxcMDAwXDAwMVwwMDBQXDAwMCIrCisgICAgICAgICJcMDAxXHVGRkZGXHVBQkEwXDAwMFwwMDJcMDAwXDAyN1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDciKworICAgICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMDxcMDAwXDAwMVwwMDBiXDAwMFwwMDFcdUZGRkZcdUFCQTBcMDAwXDAwNCIrCisgICAgICAgICJcMDAwXDAwMVx1RkZGRlx1RkZGRlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMFwwMDAiKworICAgICAgICAiXDAwMFwwMDBcMDAwPFwwMDBcMDAyXDAwMFpcMDAwXHUwMEExXDAwMFwwMDFcdUZGRkZcdUFCQTBcMDAwXDAxMVwwMDBcMDExIisKKyAgICAgICAgIlx1RkZGRlx1RkZGRlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMlwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDBcMDAwXDAwMCIrCisgICAgICAgICJcMDAwPFwwMDBcMDAxXDAwMFx1MDE4OFwwMDBcMDAwXHVGRkZGXHVCOUIwXDAwMFwwMTdcMDAwTFwwMDBZXDAwMGNcMDAwIisKKyAgICAgICAgImhcMDAwaVwwMDBqXDAwMGtcMDAwbVwwMDBuXDAwMFx1MDA4OVwwMDBcdTAwOEFcMDAwXHUwMDhGXDAwMFx1MDA5M1wwMDAiKworICAgICAgICAiXHUwMTI0XDAwMFx1MDE2RVwwMDBcMDAxXHVGRkZGXHVCOUIwXDAwMFwwMDNcMDAwXDAwMVx1RkZGRlx1RkZGRlwwMDBcMDAwIisKKyAgICAgICAgIlwwMDBcMDAwXDAwMFwwMTFcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwPFwwMDBcMDAxXDAwMCIrCisgICAgICAgICJfXDAwMFwwMDFcdUZGRkZcdUI5QjBcMDAwXDAwM1wwMDBcMDAxXHVGRkZGXHVGRkZGXDAwMFwwMDBcMDAwXDAwMVwwMDAiKworICAgICAgICAiXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMVwwMDA8XDAwMFwwMDFcMDAwZlwwMDBcMDAxXHVGRkZGIisKKyAgICAgICAgIlx1QjlCMFwwMDBcMDAzXDAwMFwwMDFcdUZGRkZcdUZGRkZcMDAwPFwwMDBcMDAxXDAwMFwwMTFcdUZGRkZcdUZGRkZcMDAwIisKKyAgICAgICAgIlwwMDFcMDAwPFwwMDBcMDAxXDAwMDxcMDAwXDAwMVwwMDBcdTAwOERcMDAwXDAwMVx1RkZGRlx1QjlCMFwwMDBcMDAzXDAwMCIrCisgICAgICAgICJcMDAxXHVGRkZGXHVGRkZGXDAwMHhcMDAwXDAwMFwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAweFwwMDBcMDAwIisKKyAgICAgICAgIlwwMDA8XDAwMFwwMTFcMDAwVlwwMDBxXDAwMHVcMDAwXHUwMDgyXDAwMFx1MDA4NFwwMDBcdTAwODVcMDAwXHUwMDg2XDAwMCIrCisgICAgICAgICJcdTAwQTNcMDAwXHUwMTFCXDAwMFwwMDFcdUZGRkZcdUI5QjBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDAiKworICAgICAgICAiXDAwMFwwMDBcMDAzXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwPFwwMDBcMDAxXDAwMHNcMDAwXDAwMSIrCisgICAgICAgICJcdUZGRkZcdUI5QjBcMDAwXDAwNFwwMDBcMDAyXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTNcMDAwXDAzN1wwMDAiKworICAgICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwPFwwMDBcMDAxXDAwMERcMDAwXDAwMFx1RkZGRlx1QzdDMFwwMDBcMDMxXDAwMCIrCisgICAgICAgICI7XDAwMDxcMDAwPlwwMDBDXDAwMElcMDAwUlwwMDBXXDAwMGBcMDAwYVwwMDBkXDAwMHJcMDAweFwwMDB5XDAwMFx1MDA4MyIrCisgICAgICAgICJcMDAwXHUwMDhFXDAwMFx1MDA5MFwwMDBcdTAwOTFcMDAwXHUwMDk4XDAwMFx1MDA5Q1wwMDBcdTAwOURcMDAwXHUwMDlFIisKKyAgICAgICAgIlwwMDBcdTAwOUZcMDAwXHUwMEE1XDAwMFx1MDEyM1wwMDBcdTAxODNcMDAwXDAwMVx1RkZGRlx1QzdDMFwwMDBcMDAzXDAwMCIrCisgICAgICAgICJcMDAxXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwXDAwMVwwMDAiKworICAgICAgICAiXDAwMFwwMDA8XDAwMFwwMDFcMDAwXlwwMDBcMDAxXHVGRkZGXHVDN0MwXDAwMFwwMDNcMDAwXDAwMVx1RkZGRlx1RkZGRiIrCisgICAgICAgICJcMDAweFwwMDBcMDAwXDAwMFwwMTFcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDBcMDAwPFwwMDBcMDA0XDAwMCIrCisgICAgICAgICJcMTM0XDAwMGVcMDAwXHUwMEEyXDAwMFx1MDBGRFwwMDBcMDAxXHVGRkZGXHVDN0MwXDAwMFwwMDNcMDAwXDAxN1x1RkZGRiIrCisgICAgICAgICJcdUZGRkZcMDAweFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAzMVwwMDBcMDAwXDAwMHhcMDAwXDAwMFwwMDA8XDAwMFwwMDEiKworICAgICAgICAiXDAwMEBcMDAwXDAwMVx1RkZGRlx1QzdDMFwwMDBcMDExXDAwMFwwMDFcdUZGRkZcdUZGRkZcMDAwXDAwMFwwMDBcMDAwIisKKyAgICAgICAgIlwwMDBcMDAxXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMDxcMDAwXDAwMVwwMDA/XDAwMFwwMDEiKworICAgICAgICAiXHVGRkZGXHVDN0MwXDAwMFwwMTFcMDAwXDAxMFx1RkZGRlx1RkZGRlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMVwwMDBcMDE3IisKKyAgICAgICAgIlx1RkZGRlx1RkZGRlwwMDBcMDAwXDAwMFwwMDBcMDAwPFwwMDBcMDAxXDAwMFFcMDAwXDAwMVx1RkZGRlx1QzdDMFwwMDAiKworICAgICAgICAiXDAxMVwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAyXDAwMFwwMTFcdUZGRkZcdUZGRkZcMDAwIisKKyAgICAgICAgIlwwMDBcMDAwXDAwMFwwMDA8XDAwMFwwMDJcMDAwXHUwMDk3XDAwMFx1MDBCMFwwMDBcMDAxXHVGRkZGXHVDN0MwXDAwMCIrCisgICAgICAgICJcMDEwXDAwMFwwMTBcdUZGRkZcdUZGRkZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDNcMDAwXDAyMFx1RkZGRlx1RkZGRlwwMDAiKworICAgICAgICAiXDAwMFwwMDBcMDAwXDAwMDxcMDAwXDAwMVwwMDBcdTAxMDZcMDAwXDAwMVx1RkZGRlx1Q0VDOFwwMDBcMDAzXDAwMFwwMDEiKworICAgICAgICAiXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwXDAwMVwwMDBcMDAwIisKKyAgICAgICAgIlwwMDA8XDAwMFwwMDJcMDAwXHUwMDlCXDAwMFx1MDExNVwwMDBcMDAwXHVGRkZGXHVENUQwXDAwMFwwMTZcMDAwXDAwMiIrCisgICAgICAgICJcMDAwQVwwMDBGXDAwMEpcMDAwS1wwMDBPXDAwMFtcMDAwb1wwMDB2XDAwMHtcMDAwXHUwMDhCXDAwMFx1MDA5NFwwMDAiKworICAgICAgICAiXHUwMDk2XDAwMFx1MDEyMlwwMDBcMDAxXHVGRkZGXHVENUQwXDAwMFwwMDNcMDAwXDAwMVx1RkZGRlx1RkZGRlwwMDB4IisKKyAgICAgICAgIlwwMDBcMDAwXDAwMFwwMTFcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDBcMDAwPFwwMDBcMDAxXDAwMFx1MDA3RiIrCisgICAgICAgICJcMDAwXDAwMVx1RkZGRlx1RDVEMFwwMDBcMDAyXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwPFwwMDBcMDAyXDAwMFwwMTEiKworICAgICAgICAiXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwPFwwMDBcMDAyXDAwMDxcMDAwXDAwMVwwMDBdXDAwMFwwMDFcdUZGRkZcdUQ1RDAiKworICAgICAgICAiXDAwMFwwMTFcMDAwXDAyMlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMzRcMDAwXDAwMFwwMDBcMDAwIisKKyAgICAgICAgIlwwMDBcMDAwXDAwMDxcMDAwXDAwMVwwMDBcdTAwODFcMDAwXDAwMVx1RkZGRlx1RDVEMFwwMDBcMDExXDAwMFwwMTBcdUZGRkYiKworICAgICAgICAiXHVGRkZGXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMTdcdUZGRkZcdUZGRkZcMDAwXDAwMFwwMDBcMDAwXDAwMCIrCisgICAgICAgICI8XDAwMFwwMDNcMDAwPVwwMDBcdTAwOTlcMDAwXHUwMTExXDAwMFwwMDBcdUZGRkZcdUUzRTBcMDAwXDAwM1wwMDBcdTAwODgiKworICAgICAgICAiXDAwMFx1MDEwNFwwMDBcdTAxMjFcMDAwXDAwMFx1RkZGRlx1RjFGMFwwMDBcMDAzXDAwMFx1MDBGRlwwMDBcdTAxMDFcMDAwIisKKyAgICAgICAgIlx1MDExRFwwMDBcMDAxXHVGRkZGXHVGMUYwXDAwMFwwMDJcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDA8XDAwMFwwMDJcMDAwIisKKyAgICAgICAgIlwwMTFcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDA8XDAwMFwwMDJcMDAwPFwwMDBcMDAyXDAwMFx1MDA5QVwwMDBcdTAwRkMiKworICAgICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDI1XDAwMFwwMDVcMDAwXDAxMlwwMDBcMDE0XDAwMFwwMTVcMDAwXDAyMlwwMDBcMDI0IisKKyAgICAgICAgIlwwMDBcMDI1XDAwMFwwMzFcMDAwJFwwMDAtXDAwMDFcMDAwMlwwMDA0XDAwMDVcMDAwXHUwMTAzXDAwMFx1MDEwNVwwMDAiKworICAgICAgICAiXHUwMTFDXDAwMFx1MDEzN1wwMDBcdTAxMzhcMDAwXHUwMTZDXDAwMFx1MDFBRFwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwNSIrCisgICAgICAgICJcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDAiKworICAgICAgICAiXDAwMDxcMDAwXDAwMVwwMDBcMDMyXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAyXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwIisKKyAgICAgICAgIjxcMDAwXDAwMlwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwPFwwMDBcMDAyXDAwMDxcMDAwXDAxMFwwMDBcdTAwRkUiKworICAgICAgICAiXDAwMFx1MDEwMFwwMDBcdTAxMDJcMDAwXHUwMTNDXDAwMFx1MDE0NVwwMDBcdTAxNEJcMDAwXHUwMTREXDAwMFx1MDFBRiIrCisgICAgICAgICJcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMTBcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEzXDAwMFwwMzciKworICAgICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjRcMDAwXDAwMVwwMDBcMDA2XDAwMFwwMDBcMDAwXHUwRTEwXDAwMCIrCisgICAgICAgICJcMDE1XDAwMFwwMTBcMDAwXDAxM1wwMDBcMDE3XDAwMFwwMzBcMDAwIVwwMDBcMDQyXDAwMCNcMDAwJVwwMDAoXDAwMC8iKworICAgICAgICAiXDAwMDBcMDAwM1wwMDBcdTAxMjlcMDAwXDAwMVwwMDBcdTBFMTBcMDAwXDAwMlx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMCIrCisgICAgICAgICI8XDAwMFwwMDJcMDAwXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMDxcMDAwXDAwMlwwMDA8XDAwMCBcMDAwXDAyM1wwMDAiKworICAgICAgICAiXHUwMEIyXDAwMFx1MDExOVwwMDBcdTAxMzlcMDAwXHUwMTNBXDAwMFx1MDEzRFwwMDBcdTAxM0VcMDAwXHUwMTNGXDAwMCIrCisgICAgICAgICJcdTAxNDBcMDAwXHUwMTQyXDAwMFx1MDE0NFwwMDBcdTAxNDZcMDAwXHUwMTRDXDAwMFx1MDE0RVwwMDBcdTAxNEZcMDAwIisKKyAgICAgICAgIlx1MDE1MFwwMDBcdTAxNTJcMDAwXHUwMTU0XDAwMFx1MDE1NVwwMDBcdTAxNTZcMDAwXHUwMTU4XDAwMFx1MDE1QVwwMDAiKworICAgICAgICAiXHUwMTVCXDAwMFx1MDE1RFwwMDBcdTAxNUZcMDAwXHUwMTYxXDAwMFx1MDE2NFwwMDBcdTAxNjVcMDAwXHUwMTY2XDAwMCIrCisgICAgICAgICJcdTAxNjhcMDAwXHUwMTY5XDAwMFx1MDE2QlwwMDBcMDAxXDAwMFx1MEUxMFwwMDBcMDAyXHVGRkZGXHVGRkZGXDAwMFwwMDEiKworICAgICAgICAiXDAwMHhcMDAwXDAwMVwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAweFwwMDBcMDAxXDAwMDxcMDAwXDAwMlwwMDAiKworICAgICAgICAiXHUwMTE0XDAwMFx1MDE3Q1wwMDBcMDAxXDAwMFx1MEUxMFwwMDBcMDA0XDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMCIrCisgICAgICAgICJcMDAxXDAwMFwwMTBcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDFcMDAwPFwwMDBcMDAxXDAwMDdcMDAwIisKKyAgICAgICAgIlwwMDFcMDAwXHUwRTEwXDAwMFwwMTBcMDAwXDAwMVx1RkZGRlx1RkZGRlwwMDB4XDAwMFwwMDBcMDAwXDAwM1wwMDBcMDAxIisKKyAgICAgICAgIlx1RkZGRlx1RkZGRlwwMDB4XDAwMFwwMDBcMDAwPFwwMDBcMDAxXDAwMDhcMDAwXDAwMFwwMDBcdTFDMjBcMDAwXDAyMCIrCisgICAgICAgICJcMDAwXDAxNlwwMDBcMDIwXDAwMFwwMzNcMDAwXDAzNFwwMDAgXDAwMCZcMDAwJ1wwMDApXDAwMCpcMDAwK1wwMDA2XDAwMCIrCisgICAgICAgICJcdTAxMTNcMDAwXHUwMTJGXDAwMFx1MDE1N1wwMDBcdTAxNjBcMDAwXHUwMTY3XDAwMFwwMDFcMDAwXHUxQzIwXDAwMFwwMDMiKworICAgICAgICAiXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMVwwMDBcMDAxXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwIisKKyAgICAgICAgIlwwMDA8XDAwMFwwMDFcMDAwXHUwMEM0XDAwMFwwMDFcMDAwXHUxQzIwXDAwMFwwMDNcMDAwXDAwMVwwMDBcMDAwXDAwMCIrCisgICAgICAgICI8XDAwMFwwMDBcMDAwXDAxMFwwMDBcMDMwXDAwMFwwMDBcMDAwPFwwMDBcMDAwXDAwMDxcMDAwXDAwMVwwMDBcdTAwRDAiKworICAgICAgICAiXDAwMFwwMDFcMDAwXHUxQzIwXDAwMFwwMDNcMDAwXDAxN1x1RkZGRlx1RkZGQVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMSIrCisgICAgICAgICJcMDAwXDAxN1x1RkZGRlx1RkZGQVwwMDBcMDAwXDAwMFwwMDBcMDAwPFwwMDBcMDAxXDAwMFx1MDBDOVwwMDBcMDAxXDAwMCIrCisgICAgICAgICJcdTFDMjBcMDAwXDAwM1x1RkZGRlx1RkZGRlwwMDBcMDA2XDAwMFwwMDBcMDAwXDAwMVwwMDBcMDEwXHVGRkZGXHVGRkZGIisKKyAgICAgICAgIlwwMDBcMDA1XDAwMFx1MDU2NFwwMDBcMDAxXDAwMDxcMDAwXDAwMlwwMDBcMDAzXDAwMFwwMjFcMDAwXDAwMVwwMDBcdTFDMjAiKworICAgICAgICAiXDAwMFwwMDJcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxIisKKyAgICAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDAwPFwwMDBcMDAxXDAwMFx1MDBCRVwwMDBcMDAxXDAwMFx1MUMyMFwwMDBcMDAyXHVGRkZGIisKKyAgICAgICAgIlx1RkZGRlwwMDBcMDAxXDAwMDxcMDAwXDAwMlwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwPFwwMDBcMDAyXDAwMCIrCisgICAgICAgICI8XDAwMFwwMTRcMDAwXHUwMERFXDAwMFx1MDExQVwwMDBcdTAxM0JcMDAwXHUwMTQxXDAwMFx1MDE0M1wwMDBcdTAxNDciKworICAgICAgICAiXDAwMFx1MDE0OFwwMDBcdTAxNEFcMDAwXHUwMTVDXDAwMFx1MDE1RVwwMDBcdTAxNjNcMDAwXHUwMTZBXDAwMFwwMDFcMDAwIisKKyAgICAgICAgIlx1MUMyMFwwMDBcMDAyXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAweFwwMDBcMDAxXDAwMFwwMTFcdUZGRkZcdUZGRkZcMDAwIisKKyAgICAgICAgIlwwMDFcMDAweFwwMDBcMDAxXDAwMDxcMDAwXDAwMlwwMDBcdTAxNDlcMDAwXHUwMTUxXDAwMFwwMDFcMDAwXHUxQzIwXDAwMCIrCisgICAgICAgICJcMDAyXHVGRkZGXHVGRkZGXDAwMFwwMDVcMDAwXDAwMFwwMDBcMDAxXDAwMFwwMTBcdUZGRkZcdUZGRkZcMDAwXDAwNVwwMDAiKworICAgICAgICAiXDAwMFwwMDBcMDAxXDAwMDxcMDAwXDAwMVwwMDBcdTAwQjVcMDAwXDAwMVwwMDBcdTFDMjBcMDAwXDAxMFwwMDBcMDE3IisKKyAgICAgICAgIlx1RkZGRlx1RkZGRlwwMDB4XDAwMFwwMDBcMDAwXDAwMlwwMDBcMDE3XHVGRkZGXHVGRkZGXDAwMHhcMDAwXDAwMFwwMDAiKworICAgICAgICAiPFwwMDBcMDAxXDAwMFwwMzVcMDAwXDAwMFwwMDBcdTJBMzBcMDAwXDAyM1wwMDBcMDA3XDAwMFwwMTFcMDAwXDAyNlwwMDAiKworICAgICAgICAiXDAyN1wwMDBcMDM2XDAwMFwwMzdcMDAwLFwwMDAuXDAwMFx1MDBCMVwwMDBcdTAwQjNcMDAwXHUwMEJCXDAwMFx1MDBEOSIrCisgICAgICAgICJcMDAwXHUwMEUzXDAwMFx1MDBFNVwwMDBcdTAxMThcMDAwXHUwMTMwXDAwMFx1MDE3MFwwMDBcdTAxNzRcMDAwXHUwMTc5IisKKyAgICAgICAgIlwwMDBcMDAxXDAwMFx1MkEzMFwwMDBcMDAzXDAwMFwwMDFcMDAwXDAwMFwwMDBcdTAwQjRcMDAwXDAwMVwwMDBcMDExXDAwMCIrCisgICAgICAgICJcMDAxXDAwMFwwMDBcMDAwXHUwMEI0XDAwMFwwMDFcMDAwPFwwMDBcMDAxXDAwMFx1MDBCQVwwMDBcMDAxXDAwMFx1MkEzMCIrCisgICAgICAgICJcMDAwXDAwMlx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMHhcMDAwXDAwMVwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDEiKworICAgICAgICAiXDAwMHhcMDAwXDAwMVwwMDA8XDAwMFwwMDJcMDAwXHUwMTUzXDAwMFx1MDE2MlwwMDBcMDAwXDAwMFx1MkJEOFwwMDBcMDAzIisKKyAgICAgICAgIlwwMDBcdTAwRTZcMDAwXHUwMEU3XDAwMFx1MDBFOFwwMDBcMDAxXDAwMFx1MzEzOFwwMDBcMDAyXDAwMFwwMjRcMDAwXDAwMCIrCisgICAgICAgICJcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcMDAwXDAyN1wwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDA8XDAwMFwwMDEiKworICAgICAgICAiXDAwMFx1MDBGMVwwMDBcMDAwXDAwMFx1Mzg0MFwwMDBcMDA2XDAwMFx1MDBDN1wwMDBcdTAwRERcMDAwXHUwMTMxXDAwMCIrCisgICAgICAgICJcdTAxNzZcMDAwXHUwMTc4XDAwMFx1MDE3QVwwMDBcMDAxXDAwMFx1Mzg0MFwwMDBcMDAyXHVGRkZGXHVGRkZGXDAwMFwwMDEiKworICAgICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMDxcMDAwIisKKyAgICAgICAgIlwwMDJcMDAwXHUwMEI3XDAwMFx1MDBGMFwwMDBcMDAxXDAwMFx1Mzg0MFwwMDBcMDAyXHVGRkZGXHVGRkZGXDAwMFwwMDEiKworICAgICAgICAiXDAwMDxcMDAwXDAwMFwwMDBcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwPFwwMDBcMDAwXDAwMDxcMDAwXDAwMVwwMDAiKworICAgICAgICAiXHUwMEJDXDAwMFwwMDFcMDAwXHUzODQwXDAwMFwwMDJcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDFcMDAwIisKKyAgICAgICAgIlwwMTFcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDFcMDAwPFwwMDBcMDAzXDAwMFx1MDBGQlwwMDBcdTAxNTkiKworICAgICAgICAiXDAwMFx1MDE3RlwwMDBcMDAwXDAwMFx1M0Y0OFwwMDBcMDAxXDAwMFx1MDBEMVwwMDBcMDAwXDAwMFx1NDY1MFwwMDBcMDEyIisKKyAgICAgICAgIlwwMDBcdTAwQjlcMDAwXHUwMEM4XDAwMFx1MDBEM1wwMDBcdTAwRUFcMDAwXHUwMEVGXDAwMFx1MDEzMlwwMDBcdTAxNzEiKworICAgICAgICAiXDAwMFx1MDE3NVwwMDBcdTAxNzdcMDAwXHUwMTgxXDAwMFwwMDFcMDAwXHU0NjUwXDAwMFwwMDJcdUZGRkZcdUZGRkZcMDAwIisKKyAgICAgICAgIlwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTFcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwPCIrCisgICAgICAgICJcMDAwXDAwMVwwMDBcdTAwQjhcMDAwXDAwMVwwMDBcdTQ2NTBcMDAwXDAwMlx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMHgiKworICAgICAgICAiXDAwMFwwMDFcMDAwXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMHhcMDAwXDAwMVwwMDA8XDAwMFwwMDFcMDAwXHUwMEZBIisKKyAgICAgICAgIlwwMDBcMDAxXDAwMFx1NDY1MFwwMDBcMDAyXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwXHUwMDk2XDAwMFwwMDBcMDAwXDAxMSIrCisgICAgICAgICJcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDBcdTAwOTZcMDAwXDAwMFwwMDA8XDAwMFwwMDFcMDAwXHUwMEJGXDAwMFwwMDAiKworICAgICAgICAiXDAwMFx1NEQ1OFwwMDBcMDAyXDAwMFx1MDBDMVwwMDBcdTAxNkZcMDAwXDAwMFwwMDBcdTUwRENcMDAwXDAwMVwwMDBcdTAwRDUiKworICAgICAgICAiXDAwMFwwMDBcMDAwXHU1NDYwXDAwMFwwMDZcMDAwXHUwMEFFXDAwMFx1MDBDM1wwMDBcdTAwQzVcMDAwXHUwMEYyXDAwMCIrCisgICAgICAgICJcdTAxMTJcMDAwXHUwMTMzXDAwMFwwMDFcMDAwXHU1NDYwXDAwMFwwMDJcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDBcMDAwIisKKyAgICAgICAgIlwwMDBcMDAwXDAwMFwwMTFcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwPFwwMDBcMDAxXDAwMCIrCisgICAgICAgICJcdTAwQjRcMDAwXDAwMVwwMDBcdTU0NjBcMDAwXDAwMlx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMHhcMDAwXDAwMVwwMDAiKworICAgICAgICAiXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMHhcMDAwXDAwMVwwMDA8XDAwMFwwMDJcMDAwXHUwMERGXDAwMFx1MDBFMCIrCisgICAgICAgICJcMDAwXDAwMFwwMDBcdTVCNjhcMDAwXDAwMlwwMDBcdTAwRTRcMDAwXHUwMTczXDAwMFwwMDBcMDAwXHU2MjcwXDAwMFwwMTEiKworICAgICAgICAiXDAwMFx1MDBBQ1wwMDBcdTAwQkRcMDAwXHUwMENFXDAwMFx1MDBFMVwwMDBcdTAwRTlcMDAwXHUwMEY3XDAwMFx1MDEzNCIrCisgICAgICAgICJcMDAwXHUwMTcyXDAwMFx1MDFBRVwwMDBcMDAxXDAwMFx1NjI3MFwwMDBcMDAyXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwIisKKyAgICAgICAgIlwwMDBcMDAwXDAwMFwwMDBcMDEwXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMDxcMDAwXDAwMSIrCisgICAgICAgICJcMDAwXHUwMENDXDAwMFwwMDFcMDAwXHU2MjcwXDAwMFwwMDJcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDEiKworICAgICAgICAiXDAwMFwwMTFcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDFcMDAwPFwwMDBcMDAxXDAwMFx1MDBENlwwMDBcMDAwIisKKyAgICAgICAgIlwwMDBcdTcwODBcMDAwXDAxMFwwMDBcdTAwQUJcMDAwXHUwMEMwXDAwMFx1MDBEN1wwMDBcdTAwRDhcMDAwXHUwMEVEXDAwMCIrCisgICAgICAgICJcdTAwRjRcMDAwXHUwMTBGXDAwMFx1MDEzNVwwMDBcMDAxXDAwMFx1NzA4MFwwMDBcMDAzXDAwMFwwMTJcdUZGRkZcdUZGRkYiKworICAgICAgICAiXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDEwXDAwMFwwMTNcdUZGRkZcdUZGRkZcMDAwXDAwMFwwMDBcMDAwXDAwMDxcMDAwIisKKyAgICAgICAgIlwwMDdcMDAwXHUwMEMyXDAwMFx1MDBDQVwwMDBcdTAwRDRcMDAwXHUwMERBXDAwMFx1MDBFQ1wwMDBcdTAwRjZcMDAwXHUwMTE3IisKKyAgICAgICAgIlwwMDBcMDAxXDAwMFx1NzA4MFwwMDBcMDA1XDAwMFwwMzZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDAiKworICAgICAgICAiXDAzNlwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDA8XDAwMFwwMDFcMDAwXHUwMEVFXDAwMFwwMDFcMDAwXHU3MDgwIisKKyAgICAgICAgIlwwMDBcMDAyXDAwMFwwMjZcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAxMFwwMDBcMDI1XDAwMFwwMDBcMDAwXDAwMCIrCisgICAgICAgICJcMDAwXDAwMFwwMDA8XDAwMFwwMDFcMDAwXHUwMERDXDAwMFwwMDFcMDAwXHU3MDgwXDAwMFwwMDJcdUZGRkZcdUZGRkYiKworICAgICAgICAiXDAwMFwwMDFcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMTBcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDBcMDAwXDAwMFwwMDBcMDAwIisKKyAgICAgICAgIjxcMDAwXDAwMVwwMDBcdTAwRjVcMDAwXDAwMVwwMDBcdTcwODBcMDAwXDAwMlx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMCIrCisgICAgICAgICJ4XDAwMFwwMDFcMDAwXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMHhcMDAwXDAwMVwwMDA8XDAwMFwwMDFcMDAwXHUwMENEIisKKyAgICAgICAgIlwwMDBcMDAxXDAwMFx1NzA4MFwwMDBcMDA0XDAwMFwwMTBcdUZGRkZcdUZGRkZcMDAwXHUwMEQyXDAwMFwwMDBcMDAwXDAxMSIrCisgICAgICAgICJcMDAwXDAyMFx1RkZGRlx1RkZGRlwwMDBcdTAwRDJcMDAwXDAwMFwwMDA8XDAwMFwwMDFcMDAwXHUwMENCXDAwMFwwMDAiKworICAgICAgICAiXDAwMFx1N0U5MFwwMDBcMDA3XDAwMFx1MDBDNlwwMDBcdTAwQ0ZcMDAwXHUwMEUyXDAwMFx1MDBGM1wwMDBcdTAxMzZcMDAwIisKKyAgICAgICAgIlx1MDE3QlwwMDBcdTAxOUZcMDAwXDAwMVwwMDBcdTdFOTBcMDAwXDAwMlx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMHhcMDAwIisKKyAgICAgICAgIlwwMDFcMDAwXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMHhcMDAwXDAwMVwwMDA8XDAwMFwwMDFcMDAwXHUwMEY5XDAwMCIrCisgICAgICAgICJcMDAxXDAwMFx1N0U5MFwwMDBcMDA0XHVGRkZGXHVGRkYyXHVGRkZGXHVGRkZGXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDExIisKKyAgICAgICAgIlx1RkZGRlx1RkZGMlx1RkZGRlx1RkZGRlwwMDBcMDAwXDAwMFwwMDBcMDAwPFwwMDBcMDAxXDAwMFx1MDBFQlwwMDBcMDAxIisKKyAgICAgICAgIlwwMDBcdTg1OThcMDAwXDAxMVwwMDBcMDAzXDAwMFwwMDBcMDAweFwwMDBcMDAwXDAwMFwwMDJcdUZGRkZcdUZGRkZcMDAwIisKKyAgICAgICAgIlwwMDFcMDAweFwwMDBcMDAwXDAwMDxcMDAwXDAwMlwwMDBcMDAwXDAwMFx1MDEwQVwwMDBcMDAxXDAwMFx1ODU5OFwwMDAiKworICAgICAgICAiXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMHhcMDAwXDAwMVwwMDBcMDAyXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwIisKKyAgICAgICAgInhcMDAwXDAwMVwwMDA8XDAwMFwwMDJcMDAwXHUwMTA3XDAwMFx1MDEwOVwwMDBcMDAwXDAwMFx1OENBMFwwMDBcMDA3XDAwMCIrCisgICAgICAgICJcdTAwQURcMDAwXHUwMTJBXDAwMFx1MDE5MVwwMDBcdTAxQTJcMDAwXHUwMUE0XDAwMFx1MDFBOFwwMDBcdTAxQUJcMDAwIisKKyAgICAgICAgIlwwMDFcMDAwXHU4Q0EwXDAwMFwwMDJcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDFcMDAwXDAxMVx1RkZGRiIrCisgICAgICAgICJcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDFcMDAwPFwwMDBcMDAxXDAwMFx1MDBGOFwwMDBcMDAxXDAwMFx1OENBMFwwMDAiKworICAgICAgICAiXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMHhcMDAwXDAwMVwwMDBcMDAyXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAwIisKKyAgICAgICAgInhcMDAwXDAwMVwwMDA8XDAwMFwwMDNcMDAwXDAwMVwwMDBcdTAxMEVcMDAwXHUwMTEwXDAwMFwwMDFcMDAwXHU4Q0EwXDAwMCIrCisgICAgICAgICJcMDExXHVGRkZGXHVGRkZGXDAwMFwwMDFcMDAweFwwMDBcMDAxXDAwMFwwMDJcMDAwXDAwMVx1RkZGRlx1RkZGRlwwMDAiKworICAgICAgICAieFwwMDBcMDAxXDAwMDxcMDAwXDAwMlwwMDBcdTAxMDhcMDAwXHUwMTBDXDAwMFwwMDFcMDAwXHU4Q0EwXDAwMFwwMTFcMDAwIisKKyAgICAgICAgIlwwMDFcdUZGRkZcdUZGRkZcMDAweFwwMDBcMDAxXDAwMFwwMDJcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDEiKworICAgICAgICAiXDAwMDxcMDAwXDAwMVwwMDBcdTAxMEJcMDAwXDAwMVwwMDBcdTkzQThcMDAwXDAxMVx1RkZGRlx1RkZGRlwwMDBcMDAxIisKKyAgICAgICAgIlwwMDB4XDAwMFwwMDFcMDAwXDAwMlx1RkZGRlx1RkZGRlwwMDBcMDAxXDAwMHhcMDAwXDAwMVwwMDBcMDM2XDAwMFwwMDEiKworICAgICAgICAiXDAwMFx1MDEwRFwwMDBcMDAwXDAwMFx1OUFCMFwwMDBcMDA1XDAwMFx1MDEyQlwwMDBcdTAxOTBcMDAwXHUwMTk1XDAwMCIrCisgICAgICAgICJcdTAxQTFcMDAwXHUwMUFDXDAwMFwwMDFcMDAwXHU5QUIwXDAwMFwwMTNcMDAwXDAwMVwwMDBcMDAwXDAwMHhcMDAwXDAwMSIrCisgICAgICAgICJcMDAwXDAwMlwwMDBcMDAyXDAwMFwwMDBcMDAweFwwMDBcMDAxXDAwMDxcMDAwXDAwMVwwMDBcdTAxOURcMDAwXDAwMVwwMDAiKworICAgICAgICAiXHU5QUIwXDAwMFwwMDJcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDFcMDAwXDAxMVx1RkZGRlx1RkZGRlwwMDAiKworICAgICAgICAiXDAwMVwwMDB4XDAwMFwwMDFcMDAwPFwwMDBcMDAxXDAwMFx1MDBEQlwwMDBcMDAxXDAwMFx1OUFCMFwwMDBcMDExXDAwMCIrCisgICAgICAgICJcMDI3XHVGRkZGXHVGRkZGXDAwMFwwMDBcMDAwXDAwMFwwMDBcMDAwXDAwMFwwMjdcdUZGRkZcdUZGRkZcMDAwXDAwMFwwMDAiKworICAgICAgICAiXDAwMFwwMDA8XDAwMFwwMDFcMDAwXHUwMTg5XDAwMFwwMDBcMDAwXHVBMUI4XDAwMFwwMDFcMDAwXHUwMTlDXDAwMFwwMDAiKworICAgICAgICAiXDAwMFx1QThDMFwwMDBcMDEwXDAwMFx1MDEyQ1wwMDBcdTAxOERcMDAwXHUwMTk2XDAwMFx1MDE5N1wwMDBcdTAxOUFcMDAwIisKKyAgICAgICAgIlx1MDFBNlwwMDBcdTAxQTlcMDAwXHUwMUFBXDAwMFwwMDFcMDAwXHVBOEMwXDAwMFwwMDJcdUZGRkZcdUZGRkZcMDAwXDAwMSIrCisgICAgICAgICJcMDAweFwwMDBcMDAxXDAwMFwwMTFcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDB4XDAwMFwwMDFcMDAwPFwwMDBcMDAyXDAwMCIrCisgICAgICAgICJcdTAwQjZcMDAwXHUwMEQyXDAwMFwwMDFcMDAwXHVBOEMwXDAwMFwwMTJcMDAwXDAwMVx1RkZGRlx1RkZGRlwwMDB4XDAwMCIrCisgICAgICAgICJcMDAwXDAwMFwwMDFcdUZGRkZcdUZGRkZcMDAwXDAwMVwwMDBcdTAwQjRcMDAwXDAwMFwwMDA8XDAwMFwwMDFcMDAwXHUwMThDIisKKyAgICAgICAgIlwwMDBcMDAxXDAwMFx1QThDMFwwMDBcMDExXDAwMFwwMDFcdUZGRkZcdUZGRkZcMDAweFwwMDBcMDAxXDAwMFwwMDJcMDAwIisKKyAgICAgICAgIlwwMTdcdUZGRkZcdUZGRkZcMDAweFwwMDBcMDAxXDAwMDxcMDAwXDAwM1wwMDBcdTAwQUZcMDAwXHUwMTgwXDAwMFx1MDE4NiIrCisgICAgICAgICJcMDAwXDAwMVwwMDBcdUIzNENcMDAwXDAxMVwwMDBcMDAxXHVGRkZGXHVGRkZGXDAwMFx1MDBBNVwwMDBcMDAxXDAwMFwwMDIiKworICAgICAgICAiXDAwMFwwMTdcdUZGRkZcdUZGRkZcMDAwXHUwMEE1XDAwMFwwMDFcMDAwPFwwMDBcMDAxXDAwMFx1MDE4N1wwMDBcMDAwIisKKyAgICAgICAgIlwwMDBcdUI2RDBcMDAwXDAwMlwwMDBcdTAxMkRcMDAwXHUwMThBXDAwMFwwMDFcMDAwXHVCNkQwXDAwMFwwMTJcMDAwXDAwNCIrCisgICAgICAgICJcMDAwXDAwMFwwMDB4XDAwMFwwMDFcMDAwXDAwMFwwMDBcMDMzXDAwMFwwMDBcMDAweFwwMDBcMDAxXDAwMDxcMDAwXDAwMSIrCisgICAgICAgICJcMDAwXHUwMUE3XDAwMFwwMDBcMDAwXHVDNEUwXDAwMFwwMDJcMDAwXHUwMTJFXDAwMFx1MDE5NCIKKyAgICAgICAgOworCisgICAgLyoqCisgICAgICogUkxFIGVuY29kZWQgZm9ybSBvZiBJTkRFWF9CWV9OQU1FX0FSUkFZLgorICAgICAqIEBzZWUgY29tLmlibS51dGlsLlV0aWxpdHkuUkxFU3RyaW5nVG9JbnRBcnJheQorICAgICAqID4+IEdFTkVSQVRFRCBEQVRBOiBETyBOT1QgRURJVCA8PAorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgSU5ERVhfQllfTkFNRV9BUlJBWV9STEUgPQorICAgICAgICAiXDAwMFx1MDFCMFwwMDBcdTA1OENcMDAwXHUwNUM1XDAwMFx1MDIwRVwwMDBcdTAzNzFcMDAwPVwwMDBcdTAyNzlcMDAwIisKKyAgICAgICAgIlx1MDJCNlwwMDBcdTAzRDhcMDAwXHUwMkM1XDAwMFx1MDNEOFwwMDBcdTAyNzlcMDAwXHUwMkM1XDAwMFx1MDI3OVwwMDAiKworICAgICAgICAiXHUwMjc5XDAwMFx1MDMzMVwwMDBcdTAyQzVcMDAwXHUwMzMxXDAwMFx1MDM3MVwwMDBcdTAyNzlcMDAwXHUwMkQ1XDAwMCIrCisgICAgICAgICJcdTAyNzlcMDAwXHUwMjc5XDAwMFx1MDNEOFwwMDBcdTAzRDhcMDAwXHUwMkM1XDAwMFx1MDI3OVwwMDBcdTAyOTFcMDAwIisKKyAgICAgICAgIlx1MDMzMVwwMDBcdTAzMzFcMDAwXHUwM0M5XDAwMFx1MDNEOFwwMDBcdTAzRDhcMDAwXHUwMzMxXDAwMFx1MDJDNVwwMDAiKworICAgICAgICAiXHUwMkM1XDAwMFx1MDJDNVwwMDBcdTAyNzlcMDAwXHUwMkM1XDAwMFx1MDMzMVwwMDBcdTAzMzFcMDAwXHUwMkM1XDAwMCIrCisgICAgICAgICJcdTAzMzFcMDAwXHUwMzMxXDAwMFx1MDMzMVwwMDBcdTAzRDhcMDAwXHUwMjc5XDAwMFx1MDNEOFwwMDBcdTAyQzVcMDAwIisKKyAgICAgICAgIlx1MDJDNVwwMDBcdTAyNzlcMDAwXHUwMjc5XDAwMFx1MDJDNVwwMDBcdTAyNzlcMDAwXHUwMjc5XDAwMFx1MDMzMVwwMDAiKworICAgICAgICAiXHUwMzEzXDAwMFx1MDMyMlwwMDBcMDI2XDAwMD1cMDAwXHUwMTc1XDAwMFx1MDE3NVwwMDBcdTAyNENcMDAwXHUwMTc1IisKKyAgICAgICAgIlwwMDBcdTAxQzFcMDAwXHUwMUIyXDAwMFx1MDIwRVwwMDBcdTAwQjVcMDAwXHUwMTc1XDAwMFx1MDE2NlwwMDBxXDAwMCIrCisgICAgICAgICJcdTAyMEVcMDAwXHUwMDhGXDAwMFx1MDA4RlwwMDBcdTAxNzVcMDAwXHUwMjBFXDAwMFx1MDIwRVwwMDBcdTAxMDFcMDAwIisKKyAgICAgICAgIlx1MDA4RlwwMDBxXDAwMFx1MDIwRVwwMDBcdTAwQzRcMDAwXHUwMUQwXDAwMFx1MDE3NVwwMDBVXDAwMGlcMDAwcVwwMDAiKworICAgICAgICAiXHUwMTQwXDAwMFx1MDE3NVwwMDBxXDAwMFx1MDEwMVwwMDBcdTAwRTJcMDAwXHUwMjBFXDAwMFx1MDFBMFwwMDBcdTAyMkUiKworICAgICAgICAiXDAwMFx1MDE5MVwwMDBcdTAxMTNcMDAwXHUwMTc1XDAwMFx1MDE3NVwwMDBcdTAwRDNcMDAwXHUwMTAxXDAwMFx1MDE3NSIrCisgICAgICAgICJcMDAwXHUwMUEwXDAwMFx1MDEyMlwwMDBpXDAwMFx1QTVBNVwwMDBcMDA0XDAwMFx1MDEwMVwwMDBxXDAwMFx1MDEwMVwwMDAiKworICAgICAgICAiXHUwMTAxXDAwMFx1MDIwRVwwMDA9XDAwMFx1MDE0MFwwMDBcdTAxNzVcMDAwXHUwMTU3XDAwMFVcMDAwXHUwMTQwXDAwMCIrCisgICAgICAgICJcdTAyMEVcMDAwXHUwMDg3XDAwMFx1MDE3NVwwMDBcdTAxNzVcMDAwcVwwMDBcdTAyMEVcMDAwXHUwMDhGXDAwMFx1MDA4RiIrCisgICAgICAgICJcMDAwXHUwMDhGXDAwMFx1MDIxRlwwMDBcdTAwOEZcMDAwXHUwMjNEXDAwMFx1MDE0MFwwMDBcdTAxNzVcMDAwXHUwMTQwIisKKyAgICAgICAgIlwwMDBcdTAxNDBcMDAwXHUwMTQwXDAwMD1cMDAwXHUwMjVEXDAwMFx1MDEwMVwwMDBcdTAxMDFcMDAwXHUwMjBFXDAwMCIrCisgICAgICAgICJpXDAwMFx1MDEzMVwwMDBcdTAxNzVcMDAwXHUwMTAxXDAwMFx1MDE3NVwwMDBcdTAxNzVcMDAwXHUwMDhGXDAwMFx1MDEwMSIrCisgICAgICAgICJcMDAwXHUwMjBFXDAwMFx1MDA4N1wwMDBcdTAyMEVcMDAwXHUwMURGXDAwMFx1MDE3NVwwMDBcdTAyNENcMDAwXHUwMjY5IisKKyAgICAgICAgIlwwMDBcdTAxRkVcMDAwXHVBNUE1XDAwMFwwMDRcMDAwXHUwMTc1XDAwMFx1MDA4N1wwMDBcdTAwRTJcMDAwXHUwMUEwXDAwMCIrCisgICAgICAgICJcdTAxNDBcMDAwVVwwMDBcdTAxNzVcMDAwVVwwMDBVXDAwMFx1MDBBNlwwMDA9XDAwMHFcMDAwXHUwNEY5XDAwMFx1MDRDRiIrCisgICAgICAgICJcMDAwXHUwNUFDXDAwMFx1MDRBMlwwMDBcdTA2NjdcMDAwXHUwMURGXDAwMFx1MDNEOFwwMDBcdTAyRDVcMDAwXHUwM0Q4IisKKyAgICAgICAgIlwwMDBcdTA0QUJcMDAwXHUwM0JBXDAwMFx1MDY0OFwwMDBcdTA0MkJcMDAwXHUwNDZDXDAwMFx1MDQ1RlwwMDBcdTAzRUUiKworICAgICAgICAiXDAwMFx1MDNEOFwwMDBcdTA0M0JcMDAwXHUwNENGXDAwMFx1MDM4MVwwMDBcdTA0OEFcMDAwXHUwNEY5XDAwMFx1MDQ5OSIrCisgICAgICAgICJcMDAwXHUwNTA0XDAwMFx1MDRBMlwwMDBcdTAzNDRcMDAwXHUwNEEyXDAwMFx1MDU2NFwwMDBcdTA0MjJcMDAwXHUwNDVGIisKKyAgICAgICAgIlwwMDBcdTAzNjJcMDAwXHUwNTA0XDAwMFx1MDU1NVwwMDBcdTA0REJcMDAwXHUwNTQ2XDAwMFx1MDRDRlwwMDBcdTA1NjQiKworICAgICAgICAiXDAwMFx1MDM1M1wwMDBcdTA0NUJcMDAwXHUwNjQ4XDAwMFx1MDQ1RlwwMDBcdTA1MDRcMDAwXHUwNDlFXDAwMFx1MDRFQSIrCisgICAgICAgICJcMDAwXHUwNEY5XDAwMFx1MDRGOVwwMDBcdTAzRDhcMDAwXHUwNTA0XDAwMFx1MDYxQlwwMDBcdTA1MjhcMDAwXHUwNDIyIisKKyAgICAgICAgIlwwMDBcdTAzOTBcMDAwXHUwNEJBXDAwMFx1MDRCQVwwMDBcdTA0Q0ZcMDAwXHUwNTY0XDAwMFx1MDNEOFwwMDBcdTA0Q0EiKworICAgICAgICAiXDAwMFx1MDNEOFwwMDBcdTA0MERcMDAwXHUwNDBEXDAwMFx1MDQwRFwwMDBcdTA0Q0ZcMDAwXHUwNDVGXDAwMFx1MDU3RCIrCisgICAgICAgICJcMDAwXHUwNTA0XDAwMFx1MDRGOVwwMDBcdTA1MTlcMDAwXHUwNDVGXDAwMFx1MDQyQlwwMDBcdTA0MTNcMDAwXHUwNEEyIisKKyAgICAgICAgIlwwMDBcdTA1NjRcMDAwXHUwNEY5XDAwMFx1MDUzN1wwMDBcdTA1MDRcMDAwXHUwNENGXDAwMFx1MDVCNlwwMDBcdTA1NkUiKworICAgICAgICAiXDAwMFx1MDQ3QlwwMDBcdTA0NEFcMDAwXHUwMjY5XDAwMFx1MDFBMFwwMDBcdTAyQTBcMDAwXHUwMjYzXDAwMFx1MDJBMCIrCisgICAgICAgICJcMDAwXHUwMjYzXDAwMFx1MDJBMFwwMDBcdTAyNzlcMDAwXHUwMjVEXDAwMFx1MDI3OVwwMDBcdTAxRUZcMDAwXHUwNTlDIisKKyAgICAgICAgIlwwMDBcdTA1RDZcMDAwXHUwNTlDXDAwMFx1MDU4Q1wwMDBcdTA1RTZcMDAwXHUwNUQ2XDAwMFx1MDVGNVwwMDBcdTA1QzUiKworICAgICAgICAiXDAwMFx1MDRGOVwwMDBcdTA1QzVcMDAwXHUwMjRDXDAwMFx1MDRBMlwwMDBcdTAzMzFcMDAwXHUwMzAzXDAwMFx1MDFGRSIrCisgICAgICAgICJcMDAwXHUwMDhGXDAwMFx1MDUwNFwwMDBcdTAzRDhcMDAwXHUwMkQ1XDAwMFx1MDM5MFwwMDBcdTAxNDBcMDAwXHUwMjc5IisKKyAgICAgICAgIlwwMDBcdTAyNjNcMDAwXDAxNVwwMDBcMDA0XDAwMFwwMDBcMDAwXHUwMjVEXDAwMFx1MDIwRVwwMDBcdTAxNzVcMDAwXHUwMTAxIisKKyAgICAgICAgIlwwMDBcdTAwODdcMDAwaVwwMDBQXDAwMDhcMDAwXHUwMkM1XDAwMFx1MDVBQ1wwMDBcdTA2MDRcMDAwXHUwNjNEXDAwMCIrCisgICAgICAgICJcdTA2ODdcMDAwXHUwNjlCXDAwMFx1MDMzMVwwMDBcdTAzRDhcMDAwXHUwNDIyXDAwMFx1MDQ1RlwwMDBcdTA0QTJcMDAwIisKKyAgICAgICAgIlx1MDRDRlwwMDBcdTA0RjlcMDAwXHUwNTY0XDAwMFx1MDI3OVwwMDBcdTAyNzlcMDAwXHUwMkQ1XDAwMFx1MDJENVwwMDAiKworICAgICAgICAiXHUwMzkwXDAwMFx1MDJBMFwwMDBcdUE1QTVcMDAwXDAwNFwwMDBcdTAyRDVcMDAwXHUwMzkwXDAwMFx1MDJENVwwMDBcdTAzOTAiKworICAgICAgICAiXDAwMFx1MDJENVwwMDBcdTAyQTBcMDAwXHUwMkQ1XDAwMFx1MDM5MFwwMDBcdTAzOTBcMDAwXHUwM0FBXDAwMFx1MDM5MCIrCisgICAgICAgICJcMDAwXHUwMkEwXDAwMFx1MDJENVwwMDBcdTAyQTBcMDAwXHUwMkQ1XDAwMFx1MDJENVwwMDBcdTAyRDVcMDAwXHUwM0FBIisKKyAgICAgICAgIlwwMDBcdTAyRDVcMDAwXHUwM0ZEXDAwMFx1MDJENVwwMDBcdTAyRDVcMDAwXHUwMkQ1XDAwMFx1MDMzMVwwMDBcdTAyRDUiKworICAgICAgICAiXDAwMFx1MDQ0QVwwMDBcdTAyRDVcMDAwXHUwMkQ1XDAwMFx1MDM5MFwwMDBcdTAyRDVcMDAwXHUwMzkwXDAwMFx1MDJENSIrCisgICAgICAgICJcMDAwXHUwMzMxXDAwMFx1MDJENVwwMDBcdTAzRkRcMDAwXHUwMzkwXDAwMFx1MDJENVwwMDBcdTAyRDVcMDAwXHUwMkQ1IisKKyAgICAgICAgIlwwMDBcdTAzMzFcMDAwXHUwMkQ1XDAwMFx1MDJENVwwMDBcdTAzOTBcMDAwXHUwMkQ1XDAwMFx1MDI3OVwwMDBcMDE1XDAwMCIrCisgICAgICAgICJcdTAxMDFcMDAwXHUwNDk5XDAwMFx1MDNEOFwwMDBcdTA0NUZcMDAwXHUwNENGXDAwMFx1MDRDQVwwMDBcdTAzRDhcMDAwIisKKyAgICAgICAgIlx1MDQ1RlwwMDBcdTA0MjJcMDAwXHUwNDVGXDAwMFx1MDQyMlwwMDBcdTAzRDhcMDAwXHUwNDIyXDAwMFx1MDU2NFwwMDAiKworICAgICAgICAiXHUwMzAzXDAwMFwwMDRcMDAwcVwwMDBcdTA0NEFcMDAwXHUwNjY3XDAwMFx1MDQ1RlwwMDBpXDAwMFx1MDE3NVwwMDBVIisKKyAgICAgICAgIlwwMDBcMDA0XDAwMFx1MDY2N1wwMDBcdTA2NzhcMDAwXHUwMEYyXDAwMFx1MDYyQVwwMDBcdTA2ODdcMDAwXDAxNVwwMDAiKworICAgICAgICAiXHUwNjU4XDAwMFx1MDYzRFwwMDBcdTAwODdcMDAwOFwwMDBcdTA2MDRcMDAwXHUwNUFDXDAwMFwwMTVcMDAwXDAxNVwwMDAiKworICAgICAgICAiXHUwNjlCXDAwMFx1MDYwNFwwMDBcdTA2M0RcMDAwXHUwNjNEXDAwMDRcMDAwXDAwNFwwMDBcdTA2M0RcMDAwXDAwNFwwMDAiKworICAgICAgICAiXHUwNjM5XDAwMFx1MDYwQ1wwMDBcMDA0XDAwMFx1MDU2NFwwMDBQXDAwMFx1MDYwNFwwMDBcdTA1QUNcMDAwJVwwMDBcdTA1QUMiKworICAgICAgICAiXDAwMFwwMTVcMDAwXHUwNjNEXDAwMFx1MDY4Q1wwMDBcdTA1QUNcMDAwXHUwNjNEXDAwMFx1MDYzRFwwMDBcdTA1QUNcMDAwIisKKyAgICAgICAgIlx1MDYwNFwwMDBcdTAyNzlcMDAwXHUwNENGXDAwMFx1MDJBMCIKKyAgICAgICAgOworCisgICAgLyoqCisgICAgICogUkxFIGVuY29kZWQgZm9ybSBvZiBJTkRFWF9CWV9PRkZTRVQuCisgICAgICogQHNlZSBjb20uaWJtLnV0aWwuVXRpbGl0eS5STEVTdHJpbmdUb0ludEFycmF5CisgICAgICogPj4gR0VORVJBVEVEIERBVEE6IERPIE5PVCBFRElUIDw8CisgICAgICovCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBJTkRFWF9CWV9PRkZTRVRfUkxFID0KKyAgICAgICAgIlwwMDBcdTAyMjVcdUZGRkZcdTU3NDBcMDAwXHUwMTIwXDAwMFwwMDFcMDAwXHUwMTIwXHVGRkZGXHU2NTUwXDAwMFx1MDE4NSIrCisgICAgICAgICJcMDAwXDAwNlwwMDBcdTAxMUZcMDAwXHUwMTdEXDAwMFx1MDE4NVwwMDBcdTAxOTlcMDAwXHUwMTlCXDAwMFx1MDE5RVx1RkZGRiIrCisgICAgICAgICJcdTczNjBcMDAwXHUwMTkyXDAwMFwwMTBcMDAwOVwwMDBcdTAxMUVcMDAwXHUwMTZEXDAwMFx1MDE4QlwwMDBcdTAxOTIiKworICAgICAgICAiXDAwMFx1MDE5M1wwMDBcdTAxQTNcMDAwXHUwMUE1XHVGRkZGXHU3QTY4XDAwMFx1MDE5OFwwMDBcMDAxXDAwMFx1MDE5OCIrCisgICAgICAgICJcdUZGRkZcdTgxNzBcMDAwOlwwMDBcMDA3XDAwMFwwMDRcMDAwOlwwMDBwXDAwMFx1MDA4N1wwMDBcdTAwQTlcMDAwXHUwMTI4IisKKyAgICAgICAgIlwwMDBcdTAxOEZcdUZGRkZcdThGODBcMDAwdFwwMDBcMDEwXDAwMFNcMDAwdFwwMDBcdTAwQTRcMDAwXHUwMEE2XDAwMCIrCisgICAgICAgICJcdTAwQTdcMDAwXHUwMTI3XDAwMFx1MDE4NFwwMDBcdTAxQTBcdUZGRkZcdTlEOTBcMDAwVVwwMDBcMDE1XDAwMEVcMDAwIisKKyAgICAgICAgIk5cMDAwVFwwMDBVXDAwMFhcMDAwZ1wwMDBsXDAwMHpcMDAwXHUwMDhDXDAwMFx1MDBBQVwwMDBcdTAxMjZcMDAwXHUwMTdFIisKKyAgICAgICAgIlwwMDBcdTAxODJcdUZGRkZcdUFCQTBcMDAwTVwwMDBcMDI1XDAwMEJcMDAwR1wwMDBIXDAwME1cMDAwUFwwMDBaXDAwMCIrCisgICAgICAgICJiXDAwMHdcMDAwfFwwMDB9XDAwMH5cMDAwXHUwMDgwXDAwMFx1MDA5MlwwMDBcdTAwOTVcMDAwXHUwMEEwXDAwMFx1MDBBMSIrCisgICAgICAgICJcMDAwXHUwMEE4XDAwMFx1MDExNlwwMDBcdTAxMjVcMDAwXHUwMTg4XDAwMFx1MDE4RVx1RkZGRlx1QjlCMFwwMDBrXDAwMCIrCisgICAgICAgICJcMDM1XDAwMERcMDAwTFwwMDBWXDAwMFlcMDAwX1wwMDBjXDAwMGZcMDAwaFwwMDBpXDAwMGpcMDAwa1wwMDBtXDAwMG4iKworICAgICAgICAiXDAwMHFcMDAwc1wwMDB1XDAwMFx1MDA4MlwwMDBcdTAwODRcMDAwXHUwMDg1XDAwMFx1MDA4NlwwMDBcdTAwODlcMDAwIisKKyAgICAgICAgIlx1MDA4QVwwMDBcdTAwOERcMDAwXHUwMDhGXDAwMFx1MDA5M1wwMDBcdTAwQTNcMDAwXHUwMTFCXDAwMFx1MDEyNFwwMDAiKworICAgICAgICAiXHUwMTZFXHVGRkZGXHVDN0MwXDAwMFx1MDA5MVwwMDAkXDAwMDtcMDAwPFwwMDA+XDAwMD9cMDAwQFwwMDBDXDAwMElcMDAwIisKKyAgICAgICAgIlFcMDAwUlwwMDBXXDAwMFwxMzRcMDAwXlwwMDBgXDAwMGFcMDAwZFwwMDBlXDAwMHJcMDAweFwwMDB5XDAwMFx1MDA4MyIrCisgICAgICAgICJcMDAwXHUwMDhFXDAwMFx1MDA5MFwwMDBcdTAwOTFcMDAwXHUwMDk3XDAwMFx1MDA5OFwwMDBcdTAwOUNcMDAwXHUwMDlEIisKKyAgICAgICAgIlwwMDBcdTAwOUVcMDAwXHUwMDlGXDAwMFx1MDBBMlwwMDBcdTAwQTVcMDAwXHUwMEIwXDAwMFx1MDBGRFwwMDBcdTAxMDYiKworICAgICAgICAiXDAwMFx1MDEyM1wwMDBcdTAxODNcdUZGRkZcdUNFQzhcMDAwXHUwMDlCXDAwMFwwMDJcMDAwXHUwMDlCXDAwMFx1MDExNSIrCisgICAgICAgICJcdUZGRkZcdUQ1RDBcMDAwRlwwMDBcMDI0XDAwMFwwMDJcMDAwPVwwMDBBXDAwMEZcMDAwSlwwMDBLXDAwME9cMDAwW1wwMDAiKworICAgICAgICAiXVwwMDBvXDAwMHZcMDAwe1wwMDBcdTAwN0ZcMDAwXHUwMDgxXDAwMFx1MDA4QlwwMDBcdTAwOTRcMDAwXHUwMDk2XDAwMCIrCisgICAgICAgICJcdTAwOTlcMDAwXHUwMTExXDAwMFx1MDEyMlx1RkZGRlx1RTNFMFwwMDBcdTAwODhcMDAwXDAwM1wwMDBcdTAwODhcMDAwIisKKyAgICAgICAgIlx1MDEwNFwwMDBcdTAxMjFcdUZGRkZcdUYxRjBcMDAwXHUwMEZDXDAwMFwwMDVcMDAwXHUwMDlBXDAwMFx1MDBGQ1wwMDAiKworICAgICAgICAiXHUwMEZGXDAwMFx1MDEwMVwwMDBcdTAxMURcMDAwXDAwMFwwMDBcdTAxNkNcMDAwXDAzN1wwMDBcMDA1XDAwMFwwMDZcMDAwIisKKyAgICAgICAgIlwwMTJcMDAwXDAxNFwwMDBcMDE1XDAwMFwwMjJcMDAwXDAyNFwwMDBcMDI1XDAwMFwwMzFcMDAwXDAzMlwwMDAkXDAwMCIrCisgICAgICAgICItXDAwMDFcMDAwMlwwMDA0XDAwMDVcMDAwXHUwMEZFXDAwMFx1MDEwMFwwMDBcdTAxMDJcMDAwXHUwMTAzXDAwMFx1MDEwNSIrCisgICAgICAgICJcMDAwXHUwMTFDXDAwMFx1MDEzN1wwMDBcdTAxMzhcMDAwXHUwMTNDXDAwMFx1MDE0NVwwMDBcdTAxNEJcMDAwXHUwMTREIisKKyAgICAgICAgIlwwMDBcdTAxNkNcMDAwXHUwMUFEXDAwMFx1MDFBRlwwMDBcdTBFMTBcMDAwXHUwMTU1XDAwMDFcMDAwXDAxMFwwMDBcMDEzIisKKyAgICAgICAgIlwwMDBcMDE3XDAwMFwwMjNcMDAwXDAzMFwwMDAhXDAwMFwwNDJcMDAwI1wwMDAlXDAwMChcMDAwL1wwMDAwXDAwMDNcMDAwIisKKyAgICAgICAgIjdcMDAwOFwwMDBcdTAwQjJcMDAwXHUwMTE0XDAwMFx1MDExOVwwMDBcdTAxMjlcMDAwXHUwMTM5XDAwMFx1MDEzQVwwMDAiKworICAgICAgICAiXHUwMTNEXDAwMFx1MDEzRVwwMDBcdTAxM0ZcMDAwXHUwMTQwXDAwMFx1MDE0MlwwMDBcdTAxNDRcMDAwXHUwMTQ2XDAwMCIrCisgICAgICAgICJcdTAxNENcMDAwXHUwMTRFXDAwMFx1MDE0RlwwMDBcdTAxNTBcMDAwXHUwMTUyXDAwMFx1MDE1NFwwMDBcdTAxNTVcMDAwIisKKyAgICAgICAgIlx1MDE1NlwwMDBcdTAxNThcMDAwXHUwMTVBXDAwMFx1MDE1QlwwMDBcdTAxNURcMDAwXHUwMTVGXDAwMFx1MDE2MVwwMDAiKworICAgICAgICAiXHUwMTY0XDAwMFx1MDE2NVwwMDBcdTAxNjZcMDAwXHUwMTY4XDAwMFx1MDE2OVwwMDBcdTAxNkJcMDAwXHUwMTdDXDAwMCIrCisgICAgICAgICJcdTFDMjBcMDAwXDAyMVwwMDAmXDAwMFwwMDNcMDAwXDAxNlwwMDBcMDIwXDAwMFwwMjFcMDAwXDAzM1wwMDBcMDM0XDAwMCIrCisgICAgICAgICJcMDM1XDAwMCBcMDAwJlwwMDAnXDAwMClcMDAwKlwwMDArXDAwMDZcMDAwXHUwMEI1XDAwMFx1MDBCRVwwMDBcdTAwQzQiKworICAgICAgICAiXDAwMFx1MDBDOVwwMDBcdTAwRDBcMDAwXHUwMERFXDAwMFx1MDExM1wwMDBcdTAxMUFcMDAwXHUwMTJGXDAwMFx1MDEzQiIrCisgICAgICAgICJcMDAwXHUwMTQxXDAwMFx1MDE0M1wwMDBcdTAxNDdcMDAwXHUwMTQ4XDAwMFx1MDE0OVwwMDBcdTAxNEFcMDAwXHUwMTUxIisKKyAgICAgICAgIlwwMDBcdTAxNTdcMDAwXHUwMTVDXDAwMFx1MDE1RVwwMDBcdTAxNjBcMDAwXHUwMTYzXDAwMFx1MDE2N1wwMDBcdTAxNkEiKworICAgICAgICAiXDAwMFx1MkEzMFwwMDBcMDA3XDAwMFwwMjZcMDAwXDAwN1wwMDBcMDExXDAwMFwwMjZcMDAwXDAyN1wwMDBcMDM2XDAwMCIrCisgICAgICAgICJcMDM3XDAwMCxcMDAwLlwwMDBcdTAwQjFcMDAwXHUwMEIzXDAwMFx1MDBCQVwwMDBcdTAwQkJcMDAwXHUwMEQ5XDAwMFx1MDBFMyIrCisgICAgICAgICJcMDAwXHUwMEU1XDAwMFx1MDExOFwwMDBcdTAxMzBcMDAwXHUwMTUzXDAwMFx1MDE2MlwwMDBcdTAxNzBcMDAwXHUwMTc0IisKKyAgICAgICAgIlwwMDBcdTAxNzlcMDAwXHUyQkQ4XDAwMFx1MDBFOFwwMDBcMDAzXDAwMFx1MDBFNlwwMDBcdTAwRTdcMDAwXHUwMEU4XDAwMCIrCisgICAgICAgICJcdTMxMzhcMDAwXHUwMEYxXDAwMFwwMDFcMDAwXHUwMEYxXDAwMFx1Mzg0MFwwMDBcdTAwRkJcMDAwXDAxNFwwMDBcdTAwQjciKworICAgICAgICAiXDAwMFx1MDBCQ1wwMDBcdTAwQzdcMDAwXHUwMEREXDAwMFx1MDBGMFwwMDBcdTAwRkJcMDAwXHUwMTMxXDAwMFx1MDE1OSIrCisgICAgICAgICJcMDAwXHUwMTc2XDAwMFx1MDE3OFwwMDBcdTAxN0FcMDAwXHUwMTdGXDAwMFx1M0Y0OFwwMDBcdTAwRDFcMDAwXDAwMVwwMDAiKworICAgICAgICAiXHUwMEQxXDAwMFx1NDY1MFwwMDBcdTAwRDNcMDAwXDAxNVwwMDBcdTAwQjhcMDAwXHUwMEI5XDAwMFx1MDBCRlwwMDBcdTAwQzgiKworICAgICAgICAiXDAwMFx1MDBEM1wwMDBcdTAwRUFcMDAwXHUwMEVGXDAwMFx1MDBGQVwwMDBcdTAxMzJcMDAwXHUwMTcxXDAwMFx1MDE3NSIrCisgICAgICAgICJcMDAwXHUwMTc3XDAwMFx1MDE4MVwwMDBcdTRENThcMDAwXHUwMEMxXDAwMFwwMDJcMDAwXHUwMEMxXDAwMFx1MDE2RlwwMDAiKworICAgICAgICAiXHU1MERDXDAwMFx1MDBENVwwMDBcMDAxXDAwMFx1MDBENVwwMDBcdTU0NjBcMDAwXHUwMEM1XDAwMFwwMTFcMDAwXHUwMEFFIisKKyAgICAgICAgIlwwMDBcdTAwQjRcMDAwXHUwMEMzXDAwMFx1MDBDNVwwMDBcdTAwREZcMDAwXHUwMEUwXDAwMFx1MDBGMlwwMDBcdTAxMTIiKworICAgICAgICAiXDAwMFx1MDEzM1wwMDBcdTVCNjhcMDAwXHUwMEU0XDAwMFwwMDJcMDAwXHUwMEU0XDAwMFx1MDE3M1wwMDBcdTYyNzBcMDAwIisKKyAgICAgICAgIlx1MDBFOVwwMDBcMDEzXDAwMFx1MDBBQ1wwMDBcdTAwQkRcMDAwXHUwMENDXDAwMFx1MDBDRVwwMDBcdTAwRDZcMDAwXHUwMEUxIisKKyAgICAgICAgIlwwMDBcdTAwRTlcMDAwXHUwMEY3XDAwMFx1MDEzNFwwMDBcdTAxNzJcMDAwXHUwMUFFXDAwMFx1NzA4MFwwMDBcdTAwRUMiKworICAgICAgICAiXDAwMFwwMjRcMDAwXHUwMEFCXDAwMFx1MDBDMFwwMDBcdTAwQzJcMDAwXHUwMENBXDAwMFx1MDBDQlwwMDBcdTAwQ0RcMDAwIisKKyAgICAgICAgIlx1MDBENFwwMDBcdTAwRDdcMDAwXHUwMEQ4XDAwMFx1MDBEQVwwMDBcdTAwRENcMDAwXHUwMEVDXDAwMFx1MDBFRFwwMDAiKworICAgICAgICAiXHUwMEVFXDAwMFx1MDBGNFwwMDBcdTAwRjVcMDAwXHUwMEY2XDAwMFx1MDEwRlwwMDBcdTAxMTdcMDAwXHUwMTM1XDAwMCIrCisgICAgICAgICJcdTdFOTBcMDAwXHUwMEYzXDAwMFwwMTFcMDAwXHUwMEM2XDAwMFx1MDBDRlwwMDBcdTAwRTJcMDAwXHUwMEVCXDAwMFx1MDBGMyIrCisgICAgICAgICJcMDAwXHUwMEY5XDAwMFx1MDEzNlwwMDBcdTAxN0JcMDAwXHUwMTlGXDAwMFx1ODU5OFwwMDBcdTAxMEFcMDAwXDAwNFwwMDAiKworICAgICAgICAiXDAwMFwwMDBcdTAxMDdcMDAwXHUwMTA5XDAwMFx1MDEwQVwwMDBcdThDQTBcMDAwXHUwMTEwXDAwMFwwMTZcMDAwXDAwMSIrCisgICAgICAgICJcMDAwXHUwMEFEXDAwMFx1MDBGOFwwMDBcdTAxMDhcMDAwXHUwMTBCXDAwMFx1MDEwQ1wwMDBcdTAxMEVcMDAwXHUwMTEwIisKKyAgICAgICAgIlwwMDBcdTAxMkFcMDAwXHUwMTkxXDAwMFx1MDFBMlwwMDBcdTAxQTRcMDAwXHUwMUE4XDAwMFx1MDFBQlwwMDBcdTkzQTgiKworICAgICAgICAiXDAwMFx1MDEwRFwwMDBcMDAxXDAwMFx1MDEwRFwwMDBcdTlBQjBcMDAwXHUwMTkwXDAwMFwwMTBcMDAwXHUwMERCXDAwMCIrCisgICAgICAgICJcdTAxMkJcMDAwXHUwMTg5XDAwMFx1MDE5MFwwMDBcdTAxOTVcMDAwXHUwMTlEXDAwMFx1MDFBMVwwMDBcdTAxQUNcMDAwIisKKyAgICAgICAgIlx1QTFCOFwwMDBcdTAxOUNcMDAwXDAwMVwwMDBcdTAxOUNcMDAwXHVBOEMwXDAwMFx1MDE4NlwwMDBcMDE2XDAwMFx1MDBBRiIrCisgICAgICAgICJcMDAwXHUwMEI2XDAwMFx1MDBEMlwwMDBcdTAxMkNcMDAwXHUwMTgwXDAwMFx1MDE4NlwwMDBcdTAxOENcMDAwXHUwMThEIisKKyAgICAgICAgIlwwMDBcdTAxOTZcMDAwXHUwMTk3XDAwMFx1MDE5QVwwMDBcdTAxQTZcMDAwXHUwMUE5XDAwMFx1MDFBQVwwMDBcdUIzNEMiKworICAgICAgICAiXDAwMFx1MDE4N1wwMDBcMDAxXDAwMFx1MDE4N1wwMDBcdUI2RDBcMDAwXHUwMThBXDAwMFwwMDNcMDAwXHUwMTJEXDAwMCIrCisgICAgICAgICJcdTAxOEFcMDAwXHUwMUE3XDAwMFx1QzRFMFwwMDBcdTAxOTRcMDAwXDAwMlwwMDBcdTAxMkVcMDAwXHUwMTk0IgorICAgICAgICA7CisKKyAgICAvKioKKyAgICAgKiBSTEUgZW5jb2RlZCBmb3JtIG9mIElOREVYX0JZX0NPVU5UUlkuCisgICAgICogQHNlZSBjb20uaWJtLnV0aWwuVXRpbGl0eS5STEVTdHJpbmdUb0ludEFycmF5CisgICAgICogPj4gR0VORVJBVEVEIERBVEE6IERPIE5PVCBFRElUIDw8CisgICAgICovCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBJTkRFWF9CWV9DT1VOVFJZX1JMRSA9CisgICAgICAgICJcMDAwXHUwMzhDXDAwMFwwMDBcMDAwJlwwMDBcdTAwRTZcMDAwXHUwMEU3XDAwMFx1MDBFOFwwMDBcdTAxMTRcMDAwXHUwMTFBIisKKyAgICAgICAgIlwwMDBcdTAxMUNcMDAwXHUwMTFEXDAwMFx1MDExRVwwMDBcdTAxMUZcMDAwXHUwMTIwXDAwMFx1MDEyMVwwMDBcdTAxMjIiKworICAgICAgICAiXDAwMFx1MDEyM1wwMDBcdTAxMjRcMDAwXHUwMTI1XDAwMFx1MDEyNlwwMDBcdTAxMjdcMDAwXHUwMTI4XDAwMFx1MDEyOSIrCisgICAgICAgICJcMDAwXHUwMTJBXDAwMFx1MDEyQlwwMDBcdTAxMkNcMDAwXHUwMTJEXDAwMFx1MDEyRVwwMDBcdTAxMkZcMDAwXHUwMTMwIisKKyAgICAgICAgIlwwMDBcdTAxMzFcMDAwXHUwMTMyXDAwMFx1MDEzM1wwMDBcdTAxMzRcMDAwXHUwMTM1XDAwMFx1MDEzNlwwMDBcdTAxMzciKworICAgICAgICAiXDAwMFx1MDEzOFwwMDBcdTAxNkNcMDAwXHUwMTdDXDAwMFx1MDFBRFwwMDBcdTAxQUZcMDAwXDAwM1wwMDBcMDAxXDAwMCIrCisgICAgICAgICJcdTAxM0FcMDAwXDAwNFwwMDBcMDAxXDAwMFx1MDBDN1wwMDBcMDA1XDAwMFwwMDFcMDAwXHUwMEQxXDAwMFwwMDZcMDAwIisKKyAgICAgICAgIlwwMDFcMDAwPFwwMDBcMDEwXDAwMFwwMDFcMDAwO1wwMDBcMDEzXDAwMFwwMDFcMDAwXHUwMTYxXDAwMFwwMTRcMDAwXDAwMiIrCisgICAgICAgICJcMDAwXHUwMEZCXDAwMFx1MDE3RlwwMDBcMDE1XDAwMFwwMDFcMDAwUlwwMDBcMDE2XDAwMFwwMDFcMDAwJVwwMDBcMDIwIisKKyAgICAgICAgIlwwMDBcMDA3XDAwMFx1MDBBQlwwMDBcdTAwQUNcMDAwXHUwMEFEXDAwMFx1MDBBRVwwMDBcdTAwQUZcMDAwXHUwMEIwXDAwMCIrCisgICAgICAgICJcdTAwQjFcMDAwXDAyMVwwMDBcMDA3XDAwMFwwMDJcMDAwRlwwMDBKXDAwME9cMDAwb1wwMDB7XDAwMFx1MDA5NlwwMDAiKworICAgICAgICAiXDAyMlwwMDBcMDAxXDAwMFx1MDE5RVwwMDBcMDIzXDAwMFwwMDFcMDAwXHUwMTY2XDAwMFwwMjRcMDAwXDAxNFwwMDBcMDAwIisKKyAgICAgICAgIlwwMDBcMDAxXDAwMFx1MDEwN1wwMDBcdTAxMDhcMDAwXHUwMTA5XDAwMFx1MDEwQVwwMDBcdTAxMEJcMDAwXHUwMTBDXDAwMCIrCisgICAgICAgICJcdTAxMERcMDAwXHUwMTBFXDAwMFx1MDEwRlwwMDBcdTAxMTBcMDAwXDAyNlwwMDBcMDAxXDAwMD5cMDAwXDAzMVwwMDAiKworICAgICAgICAiXDAwMVwwMDBcdTAwQkNcMDAwIFwwMDBcMDAxXDAwMFx1MDE1QlwwMDAhXDAwMFwwMDFcMDAwQFwwMDAjXDAwMFwwMDJcMDAwIisKKyAgICAgICAgIlx1MDBDNVwwMDBcdTAxMTJcMDAwJFwwMDBcMDAxXDAwMFx1MDE0MFwwMDAlXDAwMFwwMDFcMDAwMlwwMDAmXDAwMFwwMDEiKworICAgICAgICAiXDAwMFx1MDE1RVwwMDAnXDAwMFwwMDFcMDAwXHUwMEJCXDAwMChcMDAwXDAwMVwwMDBcMDIwXDAwMClcMDAwXDAwMVwwMDAiKworICAgICAgICAiM1wwMDAsXDAwMFwwMDFcMDAwXHUwMEZEXDAwMC1cMDAwXDAwMVwwMDBcdTAwQzBcMDAwLlwwMDBcMDAxXDAwMHJcMDAwIisKKyAgICAgICAgIjFcMDAwXDAxNlwwMDA9XDAwMEFcMDAwQ1wwMDBRXDAwMFlcMDAwW1wwMDB2XDAwMHhcMDAwXHUwMDg4XDAwMFx1MDA4RiIrCisgICAgICAgICJcMDAwXHUwMDkwXDAwMFx1MDA5NFwwMDBcdTAwOTlcMDAwXHUwMTExXDAwMDJcMDAwXDAwMVwwMDBcdTAwODRcMDAwM1wwMDAiKworICAgICAgICAiXDAwMVwwMDBcdTAwRjJcMDAwNlwwMDBcMDAxXDAwMFwwMzNcMDAwOFwwMDBcMDAxXDAwMFx1MDE1MVwwMDA5XDAwMFwwMDEiKworICAgICAgICAiXDAwMEJcMDAwQFwwMDBcMDI3XDAwMEdcMDAwU1wwMDBUXDAwMFhcMDAwXDEzNFwwMDBeXDAwMGVcMDAwbFwwMDBtXDAwMCIrCisgICAgICAgICJcdTAwODJcMDAwXHUwMDg2XDAwMFx1MDA4QVwwMDBcdTAwOTJcMDAwXHUwMDkzXDAwMFx1MDA5NVwwMDBcdTAwOUJcMDAwIisKKyAgICAgICAgIlx1MDBBMFwwMDBcdTAwQTNcMDAwXHUwMEE2XDAwMFx1MDBBN1wwMDBcdTAwQThcMDAwXHUwMEFBXDAwMFx1MDExNVwwMDAiKworICAgICAgICAiQlwwMDBcMDAxXDAwMFx1MDE3M1wwMDBDXDAwMFwwMDJcMDAwIVwwMDAmXDAwMEVcMDAwXDAwMVwwMDBcMDEzXDAwMEZcMDAwIisKKyAgICAgICAgIlwwMDFcMDAwXDAxN1wwMDBHXDAwMFwwMDFcMDAwXHUwMTZCXDAwMEhcMDAwXDAwMVwwMDBcMDA1XDAwMEpcMDAwXDAwMSIrCisgICAgICAgICJcMDAwXHUwMUEzXDAwMEtcMDAwXDAwMlwwMDBcdTAwOTdcMDAwXHUwMTg4XDAwMExcMDAwXDAwMVwwMDBcMDMwXDAwME0iKworICAgICAgICAiXDAwMFwwMDZcMDAwXHUwMEMyXDAwMFx1MDBDQVwwMDBcdTAwRDRcMDAwXHUwMEVDXDAwMFx1MDBGNlwwMDBcdTAxMTdcMDAwIisKKyAgICAgICAgIk5cMDAwXDAwMVwwMDBEXDAwMFFcMDAwXDAwMVwwMDBQXDAwMFRcMDAwXDAwMVwwMDBmXDAwMFVcMDAwXDAwMVwwMDBcdTAwRkYiKworICAgICAgICAiXDAwMFdcMDAwXDAwMVwwMDBcdTAxNzJcMDAwWFwwMDBcMDAxXDAwMFx1MDBERVwwMDBZXDAwMFwwMDFcMDAwXHUwMTU2IisKKyAgICAgICAgIlwwMDBkXDAwMFwwMDFcMDAwXHUwMTNFXDAwMGlcMDAwXDAwMVwwMDBcMDI3XDAwMGpcMDAwXDAwMVwwMDBcdTAxNDRcMDAwIisKKyAgICAgICAgImxcMDAwXDAwMVwwMDBXXDAwMG5cMDAwXDAwMVwwMDBcdTAwOThcMDAweVwwMDBcMDAxXDAwMFwwMTBcMDAwXHUwMDgyXDAwMCIrCisgICAgICAgICJcMDAyXDAwMGNcMDAwXHUwMThFXDAwMFx1MDA4NFwwMDBcMDAxXDAwMFx1MDE2MFwwMDBcdTAwODZcMDAwXDAwMlwwMDAiKworICAgICAgICAiXDAwM1wwMDBcMDIxXDAwMFx1MDA4N1wwMDBcMDAxXDAwMFwwMzFcMDAwXHUwMDkxXDAwMFwwMDFcMDAwXDAxMVwwMDBcdTAwOTIiKworICAgICAgICAiXDAwMFwwMDNcMDAwXDAyM1wwMDBcdTAwRkVcMDAwXHUwMTRGXDAwMFx1MDA5M1wwMDBcMDAyXDAwMFwwMDdcMDAwXHUwMTE4IisKKyAgICAgICAgIlwwMDBcdTAwQThcMDAwXDAwMVwwMDBcdTAxNDdcMDAwXHUwMEE5XDAwMFwwMDFcMDAwXHUwMThDXDAwMFx1MDBBQVwwMDAiKworICAgICAgICAiXDAwMVwwMDBcdTAxMDZcMDAwXHUwMEFDXDAwMFwwMDRcMDAwXHUwMTk1XDAwMFx1MDFBMVwwMDBcdTAxQThcMDAwXHUwMUFCIisKKyAgICAgICAgIlwwMDBcdTAwQUVcMDAwXDAwMVwwMDBcdTAxMDBcMDAwXHUwMEIxXDAwMFwwMDJcMDAwXHUwMTE5XDAwMFx1MDE1NVwwMDAiKworICAgICAgICAiXHUwMEMwXDAwMFwwMDFcMDAwI1wwMDBcdTAwQzFcMDAwXDAwMlwwMDBcdTAxM0NcMDAwXHUwMTREXDAwMFx1MDBDM1wwMDAiKworICAgICAgICAiXDAwMVwwMDBgXDAwMFx1MDBDNFwwMDBcMDAxXDAwMFx1MDBGMFwwMDBcdTAwQzVcMDAwXDAwMVwwMDBLXDAwMFx1MDBDNyIrCisgICAgICAgICJcMDAwXDAwMVwwMDBcMDA2XDAwMFx1MDBDOFwwMDBcMDAxXDAwMFx1MDE0NlwwMDBcdTAwQ0JcMDAwXDAwM1wwMDBdXDAwMCIrCisgICAgICAgICJcdTAwOUFcMDAwXHUwMEEyXDAwMFx1MDBDQ1wwMDBcMDAxXDAwMFwwMTRcMDAwXHUwMENEXDAwMFwwMDFcMDAwXDAyNFwwMDAiKworICAgICAgICAiXHUwMENGXDAwMFwwMDFcMDAwYVwwMDBcdTAwRDBcMDAwXDAwMVwwMDAoXDAwMFx1MDBEMVwwMDBcMDAxXDAwMFx1MDEzQiIrCisgICAgICAgICJcMDAwXHUwMEQyXDAwMFwwMDFcMDAwXHUwMTA0XDAwMFx1MDBEM1wwMDBcMDAxXDAwMGJcMDAwXHUwMEQ0XDAwMFwwMDEiKworICAgICAgICAiXDAwMFx1MDE5MVwwMDBcdTAwRDZcMDAwXDAwMVwwMDBcMDE1XDAwMFx1MDBEOFwwMDBcMDAxXDAwMGRcMDAwXHUwMEVBIisKKyAgICAgICAgIlwwMDBcMDAxXDAwMFx1MDBDQlwwMDBcdTAwRURcMDAwXDAwMVwwMDBcdTAwQTFcMDAwXHUwMEYxXDAwMFwwMDFcMDAwXHUwMTY5IisKKyAgICAgICAgIlwwMDBcdTAwRjNcMDAwXDAwMVwwMDBcdTAwOERcMDAwXHUwMEY0XDAwMFwwMDFcMDAwXHUwMTQyXDAwMFx1MDEwM1wwMDAiKworICAgICAgICAiXDAwM1wwMDBcdTAwQ0VcMDAwXHUwMENGXDAwMFx1MDBGNFwwMDBcdTAxMDRcMDAwXDAwMVwwMDBcdTAxNDVcMDAwXHUwMTBCIisKKyAgICAgICAgIlwwMDBcMDAxXDAwMFx1MDBEMFwwMDBcdTAxMERcMDAwXDAwMlwwMDBcdTAwQzFcMDAwXHUwMTZGXDAwMFx1MDEwRVwwMDAiKworICAgICAgICAiXDAwMVwwMDBcdTAxNzFcMDAwXHUwMTEwXDAwMFwwMDFcMDAwXHUwMEJBXDAwMFx1MDExMVwwMDBcMDAxXDAwMFx1MDBGMSIrCisgICAgICAgICJcMDAwXHUwMTEyXDAwMFwwMDFcMDAwXHUwMTAzXDAwMFx1MDExM1wwMDBcMDAxXDAwMFx1MDE1OFwwMDBcdTAxMkNcMDAwIisKKyAgICAgICAgIlwwMDFcMDAwblwwMDBcdTAxMkVcMDAwXDAwMVwwMDBcdTAwQjVcMDAwXHUwMTJGXDAwMFwwMDJcMDAwXHUwMEYzXDAwMCIrCisgICAgICAgICJcdTAxN0JcMDAwXHUwMTQ0XDAwMFwwMDFcMDAwLlwwMDBcdTAxNDZcMDAwXDAwMVwwMDBcdTAwQkZcMDAwXHUwMTQ3XDAwMCIrCisgICAgICAgICJcMDAxXDAwMFx1MDBFMVwwMDBcdTAxNDhcMDAwXDAwM1wwMDBcdTAxOEFcMDAwXHUwMTk0XDAwMFx1MDFBNlwwMDBcdTAxNEMiKworICAgICAgICAiXDAwMFwwMDFcMDAwXHUwMTc0XDAwMFx1MDE0RFwwMDBcMDAxXDAwMFx1MDA5Q1wwMDBcdTAxNEZcMDAwXDAwMVwwMDBcdTAwRTIiKworICAgICAgICAiXDAwMFx1MDE1MVwwMDBcMDAxXDAwMFx1MDBFQlwwMDBcdTAxNTZcMDAwXDAwMVwwMDBcdTAwRDlcMDAwXHUwMTU4XDAwMCIrCisgICAgICAgICJcMDAxXDAwMExcMDAwXHUwMTU5XDAwMFwwMDNcMDAwXHUwMEI0XDAwMFx1MDBCN1wwMDBcdTAwQjhcMDAwXHUwMTYwXDAwMCIrCisgICAgICAgICJcMDAxXDAwMFx1MDBGN1wwMDBcdTAxNjFcMDAwXDAwMVwwMDBcdTAwQkVcMDAwXHUwMTYyXDAwMFwwMDFcMDAwXHUwMDlEIisKKyAgICAgICAgIlwwMDBcdTAxNjhcMDAwXDAwMVwwMDBcdTAxNjRcMDAwXHUwMTZBXDAwMFwwMDFcMDAwXHUwMEMzXDAwMFx1MDE3MVwwMDAiKworICAgICAgICAiXDAwMVwwMDAtXDAwMFx1MDE3MlwwMDBcMDAxXDAwMCpcMDAwXHUwMTczXDAwMFwwMDFcMDAwXHUwMTY3XDAwMFx1MDE3NCIrCisgICAgICAgICJcMDAwXDAwMVwwMDBcdTAxNEVcMDAwXHUwMTc1XDAwMFwwMDFcMDAwXHUwMTU3XDAwMFx1MDE3OFwwMDBcMDAxXDAwMDYiKworICAgICAgICAiXDAwMFx1MDE4MFwwMDBcMDAxXDAwMFwwMjJcMDAwXHUwMTgyXDAwMFwwMDFcMDAwXHUwMTUyXDAwMFx1MDE4M1wwMDBcMDAyIisKKyAgICAgICAgIlwwMDBcdTAxNDNcMDAwXHUwMTYyXDAwMFx1MDE4NlwwMDBcMDAxXDAwMFx1MDE3MFwwMDBcdTAxODdcMDAwXDAwMlwwMDAiKworICAgICAgICAiXHUwMTk2XDAwMFx1MDE5N1wwMDBcdTAxOEFcMDAwXDAwMVwwMDBcdTAxNURcMDAwXHUwMThCXDAwMFwwMDJcMDAwXDAxMiIrCisgICAgICAgICJcMDAwNVwwMDBcdTAxOENcMDAwXDAwMVwwMDBcdTAwRTRcMDAwXHUwMThEXDAwMFwwMDJcMDAwXHUwMENDXDAwMFx1MDBGNSIrCisgICAgICAgICJcMDAwXHUwMThFXDAwMFwwMDFcMDAwXHUwMERBXDAwMFx1MDE4RlwwMDBcMDAxXDAwMFx1MDFBNFwwMDBcdTAxOTBcMDAwIisKKyAgICAgICAgIlwwMDFcMDAweVwwMDBcdTAxOTFcMDAwXDAwMVwwMDAxXDAwMFx1MDE5MlwwMDBcMDAxXDAwMFx1MDA4M1wwMDBcdTAxOTMiKworICAgICAgICAiXDAwMFwwMDFcMDAwXHUwMTUwXDAwMFx1MDE5NFwwMDBcMDAxXDAwMFx1MDE3OFwwMDBcdTAxOTVcMDAwXDAwMVwwMDBcdTAxNzciKworICAgICAgICAiXDAwMFx1MDE5NlwwMDBcMDAxXDAwMFwwMTZcMDAwXHUwMTk3XDAwMFwwMTBcMDAwSFwwMDBOXDAwMGdcMDAwelwwMDB9IisKKyAgICAgICAgIlwwMDB+XDAwMFx1MDA4MFwwMDBcdTAwQTRcMDAwXHUwMTk4XDAwMFwwMDJcMDAwXHUwMEQ3XDAwMFx1MDBEOFwwMDBcdTAxOTkiKworICAgICAgICAiXDAwMFwwMDFcMDAwKVwwMDBcdTAxQTBcMDAwXDAwMVwwMDA4XDAwMFx1MDFBMlwwMDBcMDAxXDAwMFx1MDE5RFwwMDBcdTAxQTQiKworICAgICAgICAiXDAwMFwwMDFcMDAwMFwwMDBcdTAxQTVcMDAwXDAwMVwwMDBcdTAxOUNcMDAwXHUwMUE2XDAwMFwwMDFcMDAwXDA0MlwwMDAiKworICAgICAgICAiXHUwMUE4XDAwMFwwMDFcMDAwd1wwMDBcdTAxQUJcMDAwXDAwMVwwMDBcdTAxMzlcMDAwXHUwMUFFXDAwMFwwMDFcMDAwIisKKyAgICAgICAgIlx1MDE1NFwwMDBcdTAxQUZcMDAwXDAwMVwwMDBcdTAwRDVcMDAwXHUwMUIxXDAwMFwwMDFcMDAwXHUwMTlBXDAwMFx1MDFCNCIrCisgICAgICAgICJcMDAwXDAwMVwwMDBcdTAxOUJcMDAwXHUwMUI5XDAwMFwwMDNcMDAwXHUwMTgwXDAwMFx1MDE4NlwwMDBcdTAxODdcMDAwIisKKyAgICAgICAgIlx1MDFDQ1wwMDBcMDAxXDAwMFx1MDBERFwwMDBcdTAxRTBcMDAwXDAwMVwwMDBcdTAwODlcMDAwXHUwMUU0XDAwMFwwMDEiKworICAgICAgICAiXDAwMHNcMDAwXHUwMUU1XDAwMFwwMDNcMDAwXHUwMThGXDAwMFx1MDE5OFwwMDBcdTAxQTVcMDAwXHUwMUU2XDAwMFwwMDEiKworICAgICAgICAiXDAwMFx1MDFBMlwwMDBcdTAxRTdcMDAwXDAwMVwwMDBcdTAwRENcMDAwXHUwMUVBXDAwMFwwMDJcMDAwXHUwMEQzXDAwMCIrCisgICAgICAgICJcdTAxODFcMDAwXHUwMUVCXDAwMFwwMDFcMDAwXHUwMTY4XDAwMFx1MDFFQ1wwMDBcMDAxXDAwMFx1MDA3RlwwMDBcdTAxRUQiKworICAgICAgICAiXDAwMFwwMDFcMDAwXHUwMUEwXDAwMFx1MDFGMVwwMDBcMDAyXDAwMFx1MDA5MVwwMDBcdTAxODNcMDAwXHUwMUYyXDAwMCIrCisgICAgICAgICJcMDAxXDAwMFx1MDBDOVwwMDBcdTAxRjNcMDAwXDAwM1wwMDBcdTAwRkNcMDAwXHUwMTAyXDAwMFx1MDE0QlwwMDBcdTAxRjYiKworICAgICAgICAiXDAwMFwwMDFcMDAwXHUwMTlGXDAwMFx1MDFGOFwwMDBcMDAxXDAwMD9cMDAwXHUwMjAwXDAwMFwwMDFcMDAwXHUwMEUzIisKKyAgICAgICAgIlwwMDBcdTAyMjRcMDAwXDAwMVwwMDBcdTAxN0FcMDAwXHUwMjJFXDAwMFwwMDFcMDAwXHUwMTQxXDAwMFx1MDIzNFwwMDAiKworICAgICAgICAiXDAxNVwwMDBcdTAwQjZcMDAwXHUwMENEXDAwMFx1MDBEMlwwMDBcdTAwRDZcMDAwXHUwMERCXDAwMFx1MDBERlwwMDBcdTAwRTAiKworICAgICAgICAiXDAwMFx1MDBGOFwwMDBcdTAwRjlcMDAwXHUwMEZBXDAwMFx1MDE0OVwwMDBcdTAxNTNcMDAwXHUwMTU5XDAwMFx1MDIzNiIrCisgICAgICAgICJcMDAwXDAwMVwwMDAgXDAwMFx1MDI0MFwwMDBcMDAxXDAwMFx1MDBFNVwwMDBcdTAyNDFcMDAwXDAwMlwwMDBcdTAxOTAiKworICAgICAgICAiXDAwMFx1MDFBQ1wwMDBcdTAyNDJcMDAwXDAwMVwwMDBcdTAxNzZcMDAwXHUwMjQzXDAwMFwwMDFcMDAwXDAzN1wwMDBcdTAyNDQiKworICAgICAgICAiXDAwMFwwMDFcMDAwXHUwMTVGXDAwMFx1MDI0NlwwMDBcMDAxXDAwMFx1MDBFRFwwMDBcdTAyNDdcMDAwXDAwMVwwMDBcdTAxMDUiKworICAgICAgICAiXDAwMFx1MDI0OFwwMDBcMDAxXDAwMFx1MDE0Q1wwMDBcdTAyNDlcMDAwXDAwMlwwMDBcdTAwQjJcMDAwXHUwMTAxXDAwMCIrCisgICAgICAgICJcdTAyNEFcMDAwXDAwMVwwMDBcdTAxM0ZcMDAwXHUwMjRCXDAwMFwwMDFcMDAwXDAzMlwwMDBcdTAyNENcMDAwXDAwMVwwMDAiKworICAgICAgICAiXHUwMTVBXDAwMFx1MDI0RFwwMDBcMDAxXDAwMFwwMjVcMDAwXHUwMjRFXDAwMFwwMDFcMDAwLFwwMDBcdTAyNTFcMDAwIisKKyAgICAgICAgIlwwMDFcMDAwXHUwMDhCXDAwMFx1MDI1M1wwMDBcMDAxXDAwMDRcMDAwXHUwMjU1XDAwMFwwMDFcMDAwWlwwMDBcdTAyNTgiKworICAgICAgICAiXDAwMFwwMDFcMDAwXHUwMEM0XDAwMFx1MDI1OVwwMDBcMDAxXDAwMCtcMDAwXHUwMjYyXDAwMFwwMDFcMDAwX1wwMDBcdTAyNjMiKworICAgICAgICAiXDAwMFwwMDFcMDAwL1wwMDBcdTAyNjVcMDAwXDAwMVwwMDBcdTAxNzVcMDAwXHUwMjY2XDAwMFwwMDFcMDAwJFwwMDBcdTAyNjciKworICAgICAgICAiXDAwMFwwMDFcMDAwXHUwMEJEXDAwMFx1MDI2OVwwMDBcMDAxXDAwMFx1MDBDOFwwMDBcdTAyNkFcMDAwXDAwMVwwMDBcdTAxOEIiKworICAgICAgICAiXDAwMFx1MDI2Q1wwMDBcMDAxXDAwMFx1MDBCOVwwMDBcdTAyNkRcMDAwXDAwMVwwMDA3XDAwMFx1MDI2RVwwMDBcMDAxIisKKyAgICAgICAgIlwwMDBcdTAxQTdcMDAwXHUwMjZGXDAwMFwwMDFcMDAwXHUwMEM2XDAwMFx1MDI3MVwwMDBcMDAxXDAwMFx1MDE0OFwwMDAiKworICAgICAgICAiXHUwMjczXDAwMFwwMDFcMDAwXHUwMDhFXDAwMFx1MDI3NVwwMDBcMDAxXDAwMFx1MDE4RFwwMDBcdTAyNzZcMDAwXDAwMSIrCisgICAgICAgICJcMDAwXHUwMEVFXDAwMFx1MDI3OVwwMDBcMDAxXDAwMFwwMjZcMDAwXHUwMjgwXDAwMFwwMDRcMDAwXHUwMTRBXDAwMFx1MDE1QyIrCisgICAgICAgICJcMDAwXHUwMTYzXDAwMFx1MDE2QVwwMDBcdTAyODZcMDAwXDAwMVwwMDBcMDM2XDAwMFx1MDI4Q1wwMDBcMDAzXDAwMFx1MDE5MyIrCisgICAgICAgICJcMDAwXHUwMTk5XDAwMFx1MDFBOVwwMDBcdTAyOTJcMDAwXDAzNFwwMDBcMDA0XDAwMDlcMDAwOlwwMDBFXDAwME1cMDAwIisKKyAgICAgICAgIlVcMDAwVlwwMDBoXDAwMGlcMDAwalwwMDBrXDAwMHBcMDAwcVwwMDB0XDAwMHVcMDAwfFwwMDBcdTAwODVcMDAwXHUwMDg3IisKKyAgICAgICAgIlwwMDBcdTAwOENcMDAwXHUwMEE5XDAwMFx1MDExNlwwMDBcdTAxMUJcMDAwXHUwMTZEXDAwMFx1MDE2RVwwMDBcdTAxN0UiKworICAgICAgICAiXDAwMFx1MDE4MlwwMDBcdTAxODRcMDAwXHUwMTkyXDAwMFx1MDI5OFwwMDBcMDAxXDAwMFx1MDA4MVwwMDBcdTAyOTlcMDAwIisKKyAgICAgICAgIlwwMDJcMDAwXHUwMEVBXDAwMFx1MDBFRlwwMDBcdTAyQTBcMDAwXDAwMVwwMDBcdTAxNjVcMDAwXHUwMkEyXDAwMFwwMDEiKworICAgICAgICAiXDAwMFx1MDA5RlwwMDBcdTAyQTRcMDAwXDAwMVwwMDBJXDAwMFx1MDJBNlwwMDBcMDAxXDAwMFx1MDBBNVwwMDBcdTAyQTgiKworICAgICAgICAiXDAwMFwwMDFcMDAwXHUwMDlFXDAwMFx1MDJBRFwwMDBcMDAyXDAwMFx1MDBFOVwwMDBcdTAxQUVcMDAwXHUwMkI0XDAwMCIrCisgICAgICAgICJcMDAxXDAwMFx1MDE4OVwwMDBcdTAyQzVcMDAwXDAwMVwwMDBcdTAxQUFcMDAwXHUwMkQyXDAwMFwwMDJcMDAwXHUwMTdEIisKKyAgICAgICAgIlwwMDBcdTAxODVcMDAwXHUwMzA0XDAwMFwwMDFcMDAwXHUwMEIzXDAwMFx1MDMxM1wwMDBcMDAxXDAwMFx1MDE3OVwwMDAiKworICAgICAgICAiXHUwMzE0XDAwMFwwMDFcMDAwXHUwMTNEXDAwMFx1MDMyMFwwMDBcMDAxXDAwMFwwMzVcMDAwXHUwMzJDXDAwMFwwMDFcMDAwIisKKyAgICAgICAgIidcMDAwXHUwMzM2XDAwMFwwMDJcMDAwXDAzNFwwMDBcdTAxMTMiCisgICAgICAgIDsKKworICAgIC8vIEVORCBHRU5FUkFURUQgU09VUkNFIENPREUKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHN0YXRpYyB7CisgICAgICAgIC8vIFVucGFjayB0aGUgaW50W10gREFUQSBhcnJheQorICAgICAgICBEQVRBID0gVXRpbGl0eS5STEVTdHJpbmdUb0ludEFycmF5KERBVEFfUkxFKTsKKworICAgICAgICAvLyBVbnBhY2sgdGhlIGludFtdIElOREVYX0JZX09GRlNFVCBhcnJheQorICAgICAgICBJTkRFWF9CWV9PRkZTRVQgPSBVdGlsaXR5LlJMRVN0cmluZ1RvSW50QXJyYXkoSU5ERVhfQllfT0ZGU0VUX1JMRSk7CisKKyAgICAgICAgLy8gVW5wYWNrIHRoZSBpbnRbXSBJTkRFWF9CWV9DT1VOVFJZIGFycmF5CisgICAgICAgIElOREVYX0JZX0NPVU5UUlkgPSBVdGlsaXR5LlJMRVN0cmluZ1RvSW50QXJyYXkoSU5ERVhfQllfQ09VTlRSWV9STEUpOworCisgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgaW5kZXggYnkgbmFtZS4gIFdlIHVucGFjayB0aGlzIGFycmF5IGFuZCB0aGVuCisgICAgICAgIC8vIGRpc2NhcmQgaXQgYWZ0ZXIgd2UncmUgZG9uZSB3aXRoIGl0LgorICAgICAgICBpbnRbXSBpbmRleF9ieV9uYW1lX2FycmF5ID0gVXRpbGl0eS5STEVTdHJpbmdUb0ludEFycmF5KElOREVYX0JZX05BTUVfQVJSQVlfUkxFKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPElEUy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgSU5ERVhfQllfTkFNRS5wdXQoSURTW2ldLCBuZXcgSW50ZWdlcihpbmRleF9ieV9uYW1lX2FycmF5W2ldKSk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL1RyaWVCdWlsZGVyLmphdmEgYi9zcmMvY29tL2libS91dGlsL1RyaWVCdWlsZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYmE5MDIyMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvVHJpZUJ1aWxkZXIuamF2YQpAQCAtMCwwICsxLDIyNCBAQAorLyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAqCisqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL0F0dGljL1RyaWVCdWlsZGVyLmphdmEsdiAkIAorKiAkRGF0ZTogMjAwMS8wMy8yOCAwMDowMTo1MSAkIAorKiAkUmV2aXNpb246IDEuMiAkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3BhY2thZ2UgY29tLmlibS51dGlsOworCisvKioKKyogQnVpbGRlciBsYXNzIHRvIG1hbmlwdWxhdGUgYW5kIGdlbmVyYXRlIGEgdHJpZS4KKyogVGhpcyBpcyB1c2VmdWwgZm9yIElDVSBkYXRhIGluIHByaW1pdGl2ZSB0eXBlcy4KKyogUHJvdmlkZXMgYSBjb21wYWN0IHdheSB0byBzdG9yZSBpbmZvcm1hdGlvbiB0aGF0IGlzIGluZGV4ZWQgYnkgVW5pY29kZSAKKyogdmFsdWVzLCBzdWNoIGFzIGNoYXJhY3RlciBwcm9wZXJ0aWVzLCB0eXBlcywga2V5Ym9hcmQgdmFsdWVzLCBldGMuIFRoaXMgaXMgCisqIHZlcnkgdXNlZnVsIHdoZW4geW91IGhhdmUgYSBibG9jayBvZiBVbmljb2RlIGRhdGEgdGhhdCBjb250YWlucyBzaWduaWZpY2FudCAKKyogdmFsdWVzIHdoaWxlIHRoZSByZXN0IG9mIHRoZSBVbmljb2RlIGRhdGEgaXMgdW51c2VkIGluIHRoZSBhcHBsaWNhdGlvbiBvciAKKyogd2hlbiB5b3UgaGF2ZSBhIGxvdCBvZiByZWR1bmRhbmNlLCBzdWNoIGFzIHdoZXJlIGFsbCAyMSwwMDAgSGFuIGlkZW9ncmFwaHMgCisqIGhhdmUgdGhlIHNhbWUgdmFsdWUuICBIb3dldmVyLCBsb29rdXAgaXMgbXVjaCBmYXN0ZXIgdGhhbiBhIGhhc2ggdGFibGUuCisqIEEgdHJpZSBvZiBhbnkgcHJpbWl0aXZlIGRhdGEgdHlwZSBzZXJ2ZXMgdHdvIHB1cnBvc2VzOgorKiA8VUwgdHlwZSA9IHJvdW5kPgorKiAgICAgPExJPkZhc3QgYWNjZXNzIG9mIHRoZSBpbmRleGVkIHZhbHVlcy4KKyogICAgIDxMST5TbWFsbGVyIG1lbW9yeSBmb290cHJpbnQuCisqIDwvVUw+CisqIEEgdHJpZSBpcyBjb21wb3NlZCBvZiAyIGluZGV4IGFycmF5IGFuZCB2YWx1ZSBhcnJheS4gQ29tYmluaW5nIHRoZSAyIGluZGV4CisqIGFycmF5LCB3ZSBjb3VsZCBnZXQgdGhlIGluZGljaWVzIG9mIFVuaWNvZGUgY2hhcmFjdGVycyB0byB0aGUgdmFsdWUgYXJyYXkuCisqIFRoZSBmaXJzdCBpbmRleCBhcnJheSB3aWxsIGNvbnRhaW4gaW5kZXhlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBmaXJzdCAxMSAKKyogYml0cyBvZiBhIDIxIGJpdCBjb2RlcG9pbnQsIHRoZSBzZWNvbmQgaW5kZXggYXJyYXkgd2lsbCBjb250YWluIGluZGV4ZXMgCisqIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5leHQgNiBiaXRzIG9mIHRoZSBjb2RlIHBvaW50LiBUaGUgbGFzdCBhcnJheSB3aWxsIAorKiBjb250YWluIHRoZSB2YWx1ZXMuIEhlbmNlIHRvIGFjY2VzcyB0aGUgdmFsdWUgb2YgYSBjb2RlcG9pbnQsIHdlIGNhbiB1c2UgdGhlIAorKiBmb2xsb3dpbmcgcHJvZ3JhbS4KKyogPHA+CisqICAgaW50IGZpcnN0aW5kZXggPSBjaCA+PiBGSVJTVF9TRVRfT0ZfQklUU19TSElGVDs8YnI+CisqICAgaW50IHNlY29uZGluZGV4ID0gaW5kZXgxW2ZpcnN0aW5kZXhdICsgCisqICAgICAgICAgICAgICAgICAgKGNoID4+IE5FWFRfU0VUX09GX0JJVFNfU0hJRlQpICYgTkVYVF9TRVRfT0ZfQklUU19NQVNLOzxicj4KKyogICBpbnQgdGhpcmRpbmRleCA9IGluZGV4MltzZWNvbmRpbmRleF0gKyBjaCAmIExBU1RfU0VUX09GX0JJVFNfTUFTSzs8YnI+ICAgIAorKiAgIGYoY2gpID0gdmFsdWVbdGhpcmRpbmRleF07PGJyPgorKiA8L3A+CisqIEB2ZXJzaW9uICAgICAgICAgICAgJFJldmlzaW9uOiAxLjIgJAorKiBAYXV0aG9yICAgICAgICAgICAgIFN5biBXZWUgUXVlaworKi8KK2ZpbmFsIGNsYXNzIFRyaWVCdWlsZGVyCit7CisgIC8vIHB1YmxpYyBtZXRob2RzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgCisgIC8qKgorICAqIFRha2VzIGFyZ3VtZW50IGFycmF5IGFuZCBmb3JtcyBhIGNvbXBhY3QgYXJyYXkgaW50byB0aGUgcmVzdWx0IGFycmF5cy4KKyAgKiBUaGUgcmVzdWx0IHdpbGwgYmUgCisgICogPGNvZGU+CisgICogICBhcnJheVtpbmRleF0gPT0gdmFsdWVhcnJheVtpbmRleGFycmF5W2luZGV4XV0KKyAgKiA8L2NvZGU+LgorICAqIE5vdGUgOiBUaGlzIG1ldGhvZCBpcyBnZW5lcmljLCBpdCBvbmx5IHRha2VzIHZhbHVlcyBmcm9tIHRoZSBhcnJheS4gCisgICogQHBhcmFtIGFycmF5IHZhbHVlIGFycmF5IHRvIGJlIG1hbmlwdWxhdGVkCisgICogQHBhcmFtIHN0YXJ0IGluZGV4IG9mIHRoZSBhcnJheSB0byBwcm9jZXNzCisgICogQHBhcmFtIGxlbmd0aCBvZiBhcnJheSB0byBwcm9jZXNzLgorICAqIEBwYXJhbSBibG9ja3NpemUgc2l6ZSBvZiBlYWNoIGJsb2NrcyBleGlzdGluZyBpbiB2YWx1ZWFycmF5CisgICogQHBhcmFtIGluZGV4YXJyYXkgcmVzdWx0IGluZGV4IGFycmF5IHdpdGggbGVuZ3RoID0gYXJyYXkubGVuZ3RoLCB3aXRoIAorICAqICAgICAgICB2YWx1ZXMgd2hpY2ggaW5kZXhlcyB0byB2YWx1ZWFycmF5LgorICAqIEBwYXJhbSB2YWx1ZWFycmF5IHJlc3VsdCB2YWx1ZSBhcnJheSBjb21wYWN0IHZhbHVlIGFycmF5CisgICogQHJldHVybiBzaXplIG9mIHZhbHVlYXJyYXkKKyAgKi8KKyAgc3RhdGljIGludCBidWlsZChieXRlIGFycmF5W10sIGludCBzdGFydCwgaW50IGxlbmd0aCwgaW50IGJsb2Nrc2l6ZSwgCisgICAgICAgICAgICAgICAgICAgaW50IGluZGV4YXJyYXlbXSwgYnl0ZSB2YWx1ZWFycmF5W10pCisgIHsKKyAgICBpbnQgdmFsdWVzaXplID0gMDsKKyAgICBpbnQgdmFsdWVpbmRleDsKKyAgICBpbnQgYmxvY2tjb3VudCA9IDA7ICAKKyAgICBpbnQgaW5kZXggPSAwOworICAgIGludCBtaW47CisgICAgCisgICAgd2hpbGUgKHN0YXJ0IDwgbGVuZ3RoKSB7CisgICAgICAvLyBmb3IgYSBibG9jayBvZiBibG9ja3NpemUgaW4gdGhlIGFycmF5CisgICAgICAvLyB3ZSB0cnkgdG8gZmluZCBhIHNpbWlsYXIgYmxvY2sgaW4gdmFsdWVhcnJheQorICAgICAgZm9yICh2YWx1ZWluZGV4ID0gMDsgdmFsdWVpbmRleCA8IHZhbHVlc2l6ZTsgdmFsdWVpbmRleCArKykgeworICAgICAgICAvLyB0ZXN0aW5nIGVhY2ggYmxvY2sgb2YgYmxvY2tzaXplIGF0IGluZGV4IHZhbHVlaW5kZXggaW4gdmFsdWVhcnJheQorICAgICAgICAvLyBpZiBpdCBpcyA9PSB0byBhcnJheSBibG9ja3MKKyAgICAgICAgbWluID0gTWF0aC5taW4oYmxvY2tzaXplLCB2YWx1ZXNpemUgLSB2YWx1ZWluZGV4KTsKKyAgICAgICAgZm9yIChibG9ja2NvdW50ID0gMDsgYmxvY2tjb3VudCA8IG1pbjtibG9ja2NvdW50ICsrKSB7CisgICAgICAgICAgaWYgKGFycmF5W3N0YXJ0ICsgYmxvY2tjb3VudF0gIT0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVhcnJheVt2YWx1ZWluZGV4ICsgYmxvY2tjb3VudF0pIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGJsb2NrY291bnQgPT0gYmxvY2tzaXplIHx8IHZhbHVlaW5kZXggKyBibG9ja2NvdW50ID09IHZhbHVlc2l6ZSkgeworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC8vIGlmIG5vIHNpbWlsYXIgYmxvY2sgaXMgZm91bmQgaW4gdmFsdWUgYXJyYXkKKyAgICAgIC8vIHdlIHBvcHVsYXRlIHRoZSByZXN1bHQgYXJyYXlzIHdpdGggZGF0YQorICAgICAgZm9yIChtaW4gPSBNYXRoLm1pbihibG9ja3NpemUsIGxlbmd0aCAtIHN0YXJ0KTsgYmxvY2tjb3VudCA8IG1pbjsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrY291bnQgKyspIHsKKyAgICAgICAgdmFsdWVhcnJheVt2YWx1ZXNpemUgKytdID0gYXJyYXlbc3RhcnQgKyBibG9ja2NvdW50XTsKKyAgICAgIH0KKyAgICAgICAgCisgICAgICBpbmRleGFycmF5W2luZGV4ICsrXSA9IHZhbHVlaW5kZXg7CisgICAgICBzdGFydCArPSBibG9ja3NpemU7CisgICAgfQorICAgIAorICAgIHJldHVybiB2YWx1ZXNpemU7CisgIH0KKyAgCisgIC8qKgorICAqIFRha2VzIGFyZ3VtZW50IGFycmF5IGFuZCBmb3JtcyBhIGNvbXBhY3QgYXJyYXkgaW50byB0aGUgcmVzdWx0IGFycmF5cy4KKyAgKiBUaGUgcmVzdWx0IHdpbGwgYmUgCisgICogPGNvZGU+CisgICogICBhcnJheVtpbmRleF0gPT0gdmFsdWVhcnJheVtpbmRleGFycmF5W2luZGV4XV0KKyAgKiA8L2NvZGU+LgorICAqIE5vdGUgOiBUaGlzIG1ldGhvZCBpcyBnZW5lcmljLCBpdCBvbmx5IHRha2VzIHZhbHVlcyBmcm9tIHRoZSBhcnJheS4gCisgICogQHBhcmFtIGFycmF5IHZhbHVlIGFycmF5IHRvIGJlIG1hbmlwdWxhdGVkCisgICogQHBhcmFtIHN0YXJ0IGluZGV4IG9mIHRoZSBhcnJheSB0byBwcm9jZXNzCisgICogQHBhcmFtIGxlbmd0aCBvZiBhcnJheSB0byBwcm9jZXNzLgorICAqIEBwYXJhbSBibG9ja3NpemUgc2l6ZSBvZiBlYWNoIGJsb2NrcyBleGlzdGluZyBpbiB2YWx1ZWFycmF5CisgICogQHBhcmFtIGluZGV4YXJyYXkgcmVzdWx0IGluZGV4IGFycmF5IHdpdGggbGVuZ3RoID0gYXJyYXkubGVuZ3RoLCB3aXRoIAorICAqICAgICAgICB2YWx1ZXMgd2hpY2ggaW5kZXhlcyB0byB2YWx1ZWFycmF5LgorICAqIEBwYXJhbSB2YWx1ZWFycmF5IHJlc3VsdCB2YWx1ZSBhcnJheSBjb21wYWN0IHZhbHVlIGFycmF5CisgICogQHJldHVybiBzaXplIG9mIHZhbHVlYXJyYXkKKyAgKi8KKyAgc3RhdGljIGludCBidWlsZChjaGFyIGFycmF5W10sIGludCBzdGFydCwgaW50IGxlbmd0aCwgaW50IGJsb2Nrc2l6ZSwgCisgICAgICAgICAgICAgICAgICAgaW50IGluZGV4YXJyYXlbXSwgY2hhciB2YWx1ZWFycmF5W10pCisgIHsKKyAgICBpbnQgdmFsdWVzaXplID0gMDsKKyAgICBpbnQgdmFsdWVpbmRleDsKKyAgICBpbnQgYmxvY2tjb3VudCA9IDA7ICAKKyAgICBpbnQgaW5kZXggPSAwOworICAgIGludCBtaW47CisgICAgCisgICAgd2hpbGUgKHN0YXJ0IDwgbGVuZ3RoKSB7CisgICAgICAvLyBmb3IgYSBibG9jayBvZiBibG9ja3NpemUgaW4gdGhlIGFycmF5CisgICAgICAvLyB3ZSB0cnkgdG8gZmluZCBhIHNpbWlsYXIgYmxvY2sgaW4gdmFsdWVhcnJheQorICAgICAgZm9yICh2YWx1ZWluZGV4ID0gMDsgdmFsdWVpbmRleCA8IHZhbHVlc2l6ZTsgdmFsdWVpbmRleCArKykgeworICAgICAgICAvLyB0ZXN0aW5nIGVhY2ggYmxvY2sgb2YgYmxvY2tzaXplIGF0IGluZGV4IHZhbHVlaW5kZXggaW4gdmFsdWVhcnJheQorICAgICAgICAvLyBpZiBpdCBpcyA9PSB0byBhcnJheSBibG9ja3MKKyAgICAgICAgbWluID0gTWF0aC5taW4oYmxvY2tzaXplLCB2YWx1ZXNpemUgLSB2YWx1ZWluZGV4KTsKKyAgICAgICAgZm9yIChibG9ja2NvdW50ID0gMDsgYmxvY2tjb3VudCA8IG1pbjtibG9ja2NvdW50ICsrKSB7CisgICAgICAgICAgaWYgKGFycmF5W3N0YXJ0ICsgYmxvY2tjb3VudF0gIT0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVhcnJheVt2YWx1ZWluZGV4ICsgYmxvY2tjb3VudF0pIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGJsb2NrY291bnQgPT0gYmxvY2tzaXplIHx8IHZhbHVlaW5kZXggKyBibG9ja2NvdW50ID09IHZhbHVlc2l6ZSkgeworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC8vIGlmIG5vIHNpbWlsYXIgYmxvY2sgaXMgZm91bmQgaW4gdmFsdWUgYXJyYXkKKyAgICAgIC8vIHdlIHBvcHVsYXRlIHRoZSByZXN1bHQgYXJyYXlzIHdpdGggZGF0YQorICAgICAgZm9yIChtaW4gPSBNYXRoLm1pbihibG9ja3NpemUsIGxlbmd0aCAtIHN0YXJ0KTsgYmxvY2tjb3VudCA8IG1pbjsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrY291bnQgKyspIHsKKyAgICAgICAgdmFsdWVhcnJheVt2YWx1ZXNpemUgKytdID0gYXJyYXlbc3RhcnQgKyBibG9ja2NvdW50XTsKKyAgICAgIH0KKyAgICAgICAgCisgICAgICBpbmRleGFycmF5W2luZGV4ICsrXSA9IHZhbHVlaW5kZXg7CisgICAgICBzdGFydCArPSBibG9ja3NpemU7CisgICAgfQorICAgIAorICAgIHJldHVybiB2YWx1ZXNpemU7CisgIH0KKyAgCisgIC8qKgorICAqIFRha2VzIGFyZ3VtZW50IGFycmF5IGFuZCBmb3JtcyBhIGNvbXBhY3QgYXJyYXkgaW50byB0aGUgcmVzdWx0IGFycmF5cy4KKyAgKiBUaGUgcmVzdWx0IHdpbGwgYmUgCisgICogPGNvZGU+CisgICogICBhcnJheVtpbmRleF0gPT0gdmFsdWVhcnJheVtpbmRleGFycmF5W2luZGV4XV0KKyAgKiA8L2NvZGU+LgorICAqIE5vdGUgOiBUaGlzIG1ldGhvZCBpcyBnZW5lcmljLCBpdCBvbmx5IHRha2VzIHZhbHVlcyBmcm9tIHRoZSBhcnJheS4gCisgICogQHBhcmFtIGFycmF5IHZhbHVlIGFycmF5IHRvIGJlIG1hbmlwdWxhdGVkCisgICogQHBhcmFtIHN0YXJ0IGluZGV4IG9mIHRoZSBhcnJheSB0byBwcm9jZXNzCisgICogQHBhcmFtIGxlbmd0aCBvZiBhcnJheSB0byBwcm9jZXNzLgorICAqIEBwYXJhbSBibG9ja3NpemUgc2l6ZSBvZiBlYWNoIGJsb2NrcyBleGlzdGluZyBpbiB2YWx1ZWFycmF5CisgICogQHBhcmFtIGluZGV4YXJyYXkgcmVzdWx0IGluZGV4IGFycmF5IHdpdGggbGVuZ3RoID0gYXJyYXkubGVuZ3RoLCB3aXRoIAorICAqICAgICAgICB2YWx1ZXMgd2hpY2ggaW5kZXhlcyB0byB2YWx1ZWFycmF5LgorICAqIEBwYXJhbSB2YWx1ZWFycmF5IHJlc3VsdCB2YWx1ZSBhcnJheSBjb21wYWN0IHZhbHVlIGFycmF5CisgICogQHJldHVybiBzaXplIG9mIHZhbHVlYXJyYXkgCisgICovCisgIHN0YXRpYyBpbnQgYnVpbGQoaW50IGFycmF5W10sIGludCBzdGFydCwgaW50IGxlbmd0aCwgaW50IGJsb2Nrc2l6ZSwgCisgICAgICAgICAgICAgICAgICAgaW50IGluZGV4YXJyYXlbXSwgaW50IHZhbHVlYXJyYXlbXSkKKyAgeworICAgIGludCB2YWx1ZXNpemUgPSAwOworICAgIGludCB2YWx1ZWluZGV4OworICAgIGludCBibG9ja2NvdW50ID0gMDsgIAorICAgIGludCBpbmRleCA9IDA7CisgICAgaW50IG1pbjsKKyAgICAKKyAgICB3aGlsZSAoc3RhcnQgPCBsZW5ndGgpIHsKKyAgICAgIC8vIGZvciBhIGJsb2NrIG9mIGJsb2Nrc2l6ZSBpbiB0aGUgYXJyYXkKKyAgICAgIC8vIHdlIHRyeSB0byBmaW5kIGEgc2ltaWxhciBibG9jayBpbiB2YWx1ZWFycmF5CisgICAgICBmb3IgKHZhbHVlaW5kZXggPSAwOyB2YWx1ZWluZGV4IDwgdmFsdWVzaXplOyB2YWx1ZWluZGV4ICsrKSB7CisgICAgICAgIC8vIHRlc3RpbmcgZWFjaCBibG9jayBvZiBibG9ja3NpemUgYXQgaW5kZXggdmFsdWVpbmRleCBpbiB2YWx1ZWFycmF5CisgICAgICAgIC8vIGlmIGl0IGlzID09IHRvIGFycmF5IGJsb2NrcworICAgICAgICBtaW4gPSBNYXRoLm1pbihibG9ja3NpemUsIHZhbHVlc2l6ZSAtIHZhbHVlaW5kZXgpOworICAgICAgICBmb3IgKGJsb2NrY291bnQgPSAwOyBibG9ja2NvdW50IDwgbWluOyBibG9ja2NvdW50ICsrKSB7CisgICAgICAgICAgaWYgKGFycmF5W3N0YXJ0ICsgYmxvY2tjb3VudF0gIT0gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVhcnJheVt2YWx1ZWluZGV4ICsgYmxvY2tjb3VudF0pIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGJsb2NrY291bnQgPT0gYmxvY2tzaXplIHx8IHZhbHVlaW5kZXggKyBibG9ja2NvdW50ID09IHZhbHVlc2l6ZSkgeworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC8vIGlmIG5vIHNpbWlsYXIgYmxvY2sgaXMgZm91bmQgaW4gdmFsdWUgYXJyYXkKKyAgICAgIC8vIHdlIHBvcHVsYXRlIHRoZSByZXN1bHQgYXJyYXlzIHdpdGggZGF0YQorICAgICAgbWluID0gTWF0aC5taW4oYmxvY2tzaXplLCBsZW5ndGggLSBzdGFydCk7CisgICAgICBmb3IgKDsgYmxvY2tjb3VudCA8IG1pbjsgYmxvY2tjb3VudCArKykgeworICAgICAgICB2YWx1ZWFycmF5W3ZhbHVlc2l6ZSArK10gPSBhcnJheVtzdGFydCArIGJsb2NrY291bnRdOworICAgICAgfQorICAgICAgICAKKyAgICAgIGluZGV4YXJyYXlbaW5kZXggKytdID0gdmFsdWVpbmRleDsKKyAgICAgIHN0YXJ0ICs9IGJsb2Nrc2l6ZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHZhbHVlc2l6ZTsKKyAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvVXRpbGl0eS5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9VdGlsaXR5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTQ0OWMwZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvVXRpbGl0eS5qYXZhCkBAIC0wLDAgKzEsNzMzIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL0F0dGljL1V0aWxpdHkuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMS8wMS8wOSAyMDowNzoxNiAkIAorICogJFJldmlzaW9uOiAxLjUgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udXRpbDsKKworcHVibGljIGZpbmFsIGNsYXNzIFV0aWxpdHkgeworCisgICAgLyoqCisgICAgICogQ29udmVuaWVuY2UgdXRpbGl0eSB0byBjb21wYXJlIHR3byBPYmplY3RbXXMuCisgICAgICogT3VnaHQgdG8gYmUgaW4gU3lzdGVtCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBib29sZWFuIGFycmF5RXF1YWxzKE9iamVjdFtdIHNvdXJjZSwgT2JqZWN0IHRhcmdldCkgeworICAgICAgICBpZiAoc291cmNlID09IG51bGwpIHJldHVybiAodGFyZ2V0ID09IG51bGwpOworICAgICAgICBpZiAoISh0YXJnZXQgaW5zdGFuY2VvZiBPYmplY3RbXSkpIHJldHVybiBmYWxzZTsKKyAgICAgICAgT2JqZWN0W10gdGFyZyA9IChPYmplY3RbXSkgdGFyZ2V0OworICAgICAgICByZXR1cm4gKHNvdXJjZS5sZW5ndGggPT0gdGFyZy5sZW5ndGgKKyAgICAgICAgICAgICAgICAmJiBhcnJheVJlZ2lvbk1hdGNoZXMoc291cmNlLCAwLCB0YXJnLCAwLCBzb3VyY2UubGVuZ3RoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVuaWVuY2UgdXRpbGl0eSB0byBjb21wYXJlIHR3byBpbnRbXXMKKyAgICAgKiBPdWdodCB0byBiZSBpbiBTeXN0ZW0KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGJvb2xlYW4gYXJyYXlFcXVhbHMoaW50W10gc291cmNlLCBPYmplY3QgdGFyZ2V0KSB7CisgICAgICAgIGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuICh0YXJnZXQgPT0gbnVsbCk7CisgICAgICAgIGlmICghKHRhcmdldCBpbnN0YW5jZW9mIGludFtdKSkgcmV0dXJuIGZhbHNlOworICAgICAgICBpbnRbXSB0YXJnID0gKGludFtdKSB0YXJnZXQ7CisgICAgICAgIHJldHVybiAoc291cmNlLmxlbmd0aCA9PSB0YXJnLmxlbmd0aAorICAgICAgICAgICAgICAgICYmIGFycmF5UmVnaW9uTWF0Y2hlcyhzb3VyY2UsIDAsIHRhcmcsIDAsIHNvdXJjZS5sZW5ndGgpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSB1dGlsaXR5IHRvIGNvbXBhcmUgdHdvIGRvdWJsZVtdcworICAgICAqIE91Z2h0IHRvIGJlIGluIFN5c3RlbQorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgYm9vbGVhbiBhcnJheUVxdWFscyhkb3VibGVbXSBzb3VyY2UsIE9iamVjdCB0YXJnZXQpIHsKKyAgICAgICAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4gKHRhcmdldCA9PSBudWxsKTsKKyAgICAgICAgaWYgKCEodGFyZ2V0IGluc3RhbmNlb2YgZG91YmxlW10pKSByZXR1cm4gZmFsc2U7CisgICAgICAgIGRvdWJsZVtdIHRhcmcgPSAoZG91YmxlW10pIHRhcmdldDsKKyAgICAgICAgcmV0dXJuIChzb3VyY2UubGVuZ3RoID09IHRhcmcubGVuZ3RoCisgICAgICAgICAgICAgICAgJiYgYXJyYXlSZWdpb25NYXRjaGVzKHNvdXJjZSwgMCwgdGFyZywgMCwgc291cmNlLmxlbmd0aCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIHV0aWxpdHkgdG8gY29tcGFyZSB0d28gT2JqZWN0W11zCisgICAgICogT3VnaHQgdG8gYmUgaW4gU3lzdGVtCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBib29sZWFuIGFycmF5RXF1YWxzKE9iamVjdCBzb3VyY2UsIE9iamVjdCB0YXJnZXQpIHsKKyAgICAgICAgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4gKHRhcmdldCA9PSBudWxsKTsKKyAgICAgICAgLy8gZm9yIHNvbWUgcmVhc29uLCB0aGUgY29ycmVjdCBhcnJheUVxdWFscyBpcyBub3QgYmVpbmcgY2FsbGVkCisgICAgICAgIC8vIHNvIGRvIGl0IGJ5IGhhbmQgZm9yIG5vdy4KKyAgICAgICAgaWYgKHNvdXJjZSBpbnN0YW5jZW9mIE9iamVjdFtdKQorICAgICAgICAgICAgcmV0dXJuKGFycmF5RXF1YWxzKChPYmplY3RbXSkgc291cmNlLHRhcmdldCkpOworICAgICAgICBpZiAoc291cmNlIGluc3RhbmNlb2YgaW50W10pCisgICAgICAgICAgICByZXR1cm4oYXJyYXlFcXVhbHMoKGludFtdKSBzb3VyY2UsdGFyZ2V0KSk7CisgICAgICAgIGlmIChzb3VyY2UgaW5zdGFuY2VvZiBkb3VibGVbXSkKKyAgICAgICAgICAgIHJldHVybihhcnJheUVxdWFscygoaW50W10pIHNvdXJjZSx0YXJnZXQpKTsKKyAgICAgICAgcmV0dXJuIHNvdXJjZS5lcXVhbHModGFyZ2V0KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSB1dGlsaXR5IHRvIGNvbXBhcmUgdHdvIE9iamVjdFtdcworICAgICAqIE91Z2h0IHRvIGJlIGluIFN5c3RlbS4KKyAgICAgKiBAcGFyYW0gbGVuIHRoZSBsZW5ndGggdG8gY29tcGFyZS4KKyAgICAgKiBUaGUgc3RhcnQgaW5kaWNlcyBhbmQgc3RhcnQrbGVuIG11c3QgYmUgdmFsaWQuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHN0YXRpYyBib29sZWFuIGFycmF5UmVnaW9uTWF0Y2hlcyhPYmplY3RbXSBzb3VyY2UsIGludCBzb3VyY2VTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0W10gdGFyZ2V0LCBpbnQgdGFyZ2V0U3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW4pCisgICAgeworICAgICAgICBpbnQgc291cmNlRW5kID0gc291cmNlU3RhcnQgKyBsZW47CisgICAgICAgIGludCBkZWx0YSA9IHRhcmdldFN0YXJ0IC0gc291cmNlU3RhcnQ7CisgICAgICAgIGZvciAoaW50IGkgPSBzb3VyY2VTdGFydDsgaSA8IHNvdXJjZUVuZDsgaSsrKSB7CisgICAgICAgICAgICBpZiAoIWFycmF5RXF1YWxzKHNvdXJjZVtpXSx0YXJnZXRbaSArIGRlbHRhXSkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVuaWVuY2UgdXRpbGl0eSB0byBjb21wYXJlIHR3byBpbnRbXXMuCisgICAgICogQHBhcmFtIGxlbiB0aGUgbGVuZ3RoIHRvIGNvbXBhcmUuCisgICAgICogVGhlIHN0YXJ0IGluZGljZXMgYW5kIHN0YXJ0K2xlbiBtdXN0IGJlIHZhbGlkLgorICAgICAqIE91Z2h0IHRvIGJlIGluIFN5c3RlbQorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgYm9vbGVhbiBhcnJheVJlZ2lvbk1hdGNoZXMoaW50W10gc291cmNlLCBpbnQgc291cmNlU3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludFtdIHRhcmdldCwgaW50IHRhcmdldFN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGVuKQorICAgIHsKKyAgICAgICAgaW50IHNvdXJjZUVuZCA9IHNvdXJjZVN0YXJ0ICsgbGVuOworICAgICAgICBpbnQgZGVsdGEgPSB0YXJnZXRTdGFydCAtIHNvdXJjZVN0YXJ0OworICAgICAgICBmb3IgKGludCBpID0gc291cmNlU3RhcnQ7IGkgPCBzb3VyY2VFbmQ7IGkrKykgeworICAgICAgICAgICAgaWYgKHNvdXJjZVtpXSAhPSB0YXJnZXRbaSArIGRlbHRhXSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb252ZW5pZW5jZSB1dGlsaXR5IHRvIGNvbXBhcmUgdHdvIGFycmF5cyBvZiBkb3VibGVzLgorICAgICAqIEBwYXJhbSBsZW4gdGhlIGxlbmd0aCB0byBjb21wYXJlLgorICAgICAqIFRoZSBzdGFydCBpbmRpY2VzIGFuZCBzdGFydCtsZW4gbXVzdCBiZSB2YWxpZC4KKyAgICAgKiBPdWdodCB0byBiZSBpbiBTeXN0ZW0KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGJvb2xlYW4gYXJyYXlSZWdpb25NYXRjaGVzKGRvdWJsZVtdIHNvdXJjZSwgaW50IHNvdXJjZVN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGVbXSB0YXJnZXQsIGludCB0YXJnZXRTdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxlbikKKyAgICB7CisgICAgICAgIGludCBzb3VyY2VFbmQgPSBzb3VyY2VTdGFydCArIGxlbjsKKyAgICAgICAgaW50IGRlbHRhID0gdGFyZ2V0U3RhcnQgLSBzb3VyY2VTdGFydDsKKyAgICAgICAgZm9yIChpbnQgaSA9IHNvdXJjZVN0YXJ0OyBpIDwgc291cmNlRW5kOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChzb3VyY2VbaV0gIT0gdGFyZ2V0W2kgKyBkZWx0YV0pCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVuaWVuY2UgdXRpbGl0eS4gRG9lcyBudWxsIGNoZWNrcyBvbiBvYmplY3RzLCB0aGVuIGNhbGxzIGVxdWFscy4KKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgc3RhdGljIGJvb2xlYW4gb2JqZWN0RXF1YWxzKE9iamVjdCBzb3VyY2UsIE9iamVjdCB0YXJnZXQpIHsKKyAgICBpZiAoc291cmNlID09IG51bGwpCisgICAgICAgICAgICByZXR1cm4gKHRhcmdldCA9PSBudWxsKTsKKyAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gc291cmNlLmVxdWFscyh0YXJnZXQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZSBFU0NBUEUgY2hhcmFjdGVyIGlzIHVzZWQgZHVyaW5nIHJ1bi1sZW5ndGggZW5jb2RpbmcuICBJdCBzaWduYWxzCisgICAgICogYSBydW4gb2YgaWRlbnRpY2FsIGNoYXJzLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNoYXIgRVNDQVBFID0gJ1x1QTVBNSc7CisKKyAgICAvKioKKyAgICAgKiBUaGUgRVNDQVBFX0JZVEUgY2hhcmFjdGVyIGlzIHVzZWQgZHVyaW5nIHJ1bi1sZW5ndGggZW5jb2RpbmcuICBJdCBzaWduYWxzCisgICAgICogYSBydW4gb2YgaWRlbnRpY2FsIGJ5dGVzLgorICAgICAqLworICAgIHN0YXRpYyBmaW5hbCBieXRlIEVTQ0FQRV9CWVRFID0gKGJ5dGUpMHhBNTsKKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIHN0cmluZyByZXByZXNlbnRpbmcgYW4gaW50IGFycmF5LiAgVXNlIHJ1bi1sZW5ndGggZW5jb2RpbmcuCisgICAgICogQSBjaGFyYWN0ZXIgcmVwcmVzZW50cyBpdHNlbGYsIHVubGVzcyBpdCBpcyB0aGUgRVNDQVBFIGNoYXJhY3Rlci4gIFRoZW4KKyAgICAgKiB0aGUgZm9sbG93aW5nIG5vdGF0aW9ucyBhcmUgcG9zc2libGU6CisgICAgICogICBFU0NBUEUgRVNDQVBFICAgRVNDQVBFIGxpdGVyYWwKKyAgICAgKiAgIEVTQ0FQRSBuIGMgICAgICBuIGluc3RhbmNlcyBvZiBjaGFyYWN0ZXIgYworICAgICAqIFNpbmNlIGFuIGVuY29kZWQgcnVuIG9jY3VwaWVzIDMgY2hhcmFjdGVycywgd2Ugb25seSBlbmNvZGUgcnVucyBvZiA0IG9yCisgICAgICogbW9yZSBjaGFyYWN0ZXJzLiAgVGh1cyB3ZSBoYXZlIG4gPiAwIGFuZCBuICE9IEVTQ0FQRSBhbmQgbiA8PSAweEZGRkYuCisgICAgICogSWYgd2UgZW5jb3VudGVyIGEgcnVuIHdoZXJlIG4gPT0gRVNDQVBFLCB3ZSByZXByZXNlbnQgdGhpcyBhczoKKyAgICAgKiAgIGMgRVNDQVBFIG4tMSBjCisgICAgICogVGhlIEVTQ0FQRSB2YWx1ZSBpcyBjaG9zZW4gc28gYXMgbm90IHRvIGNvbGxpZGUgd2l0aCBjb21tb25seQorICAgICAqIHNlZW4gdmFsdWVzLgorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgU3RyaW5nIGFycmF5VG9STEVTdHJpbmcoaW50W10gYSkgeworICAgICAgICBTdHJpbmdCdWZmZXIgYnVmZmVyID0gbmV3IFN0cmluZ0J1ZmZlcigpOworCisgICAgICAgIGFwcGVuZEludChidWZmZXIsIGEubGVuZ3RoKTsKKyAgICAgICAgaW50IHJ1blZhbHVlID0gYVswXTsKKyAgICAgICAgaW50IHJ1bkxlbmd0aCA9IDE7CisgICAgICAgIGZvciAoaW50IGk9MTsgaTxhLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpbnQgcyA9IGFbaV07CisgICAgICAgICAgICBpZiAocyA9PSBydW5WYWx1ZSAmJiBydW5MZW5ndGggPCAweEZGRkYpIHsKKyAgICAgICAgICAgICAgICArK3J1bkxlbmd0aDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZW5jb2RlUnVuKGJ1ZmZlciwgcnVuVmFsdWUsIHJ1bkxlbmd0aCk7CisgICAgICAgICAgICAgICAgcnVuVmFsdWUgPSBzOworICAgICAgICAgICAgICAgIHJ1bkxlbmd0aCA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZW5jb2RlUnVuKGJ1ZmZlciwgcnVuVmFsdWUsIHJ1bkxlbmd0aCk7CisgICAgICAgIHJldHVybiBidWZmZXIudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgc2hvcnQgYXJyYXkuICBVc2UgcnVuLWxlbmd0aCBlbmNvZGluZy4KKyAgICAgKiBBIGNoYXJhY3RlciByZXByZXNlbnRzIGl0c2VsZiwgdW5sZXNzIGl0IGlzIHRoZSBFU0NBUEUgY2hhcmFjdGVyLiAgVGhlbgorICAgICAqIHRoZSBmb2xsb3dpbmcgbm90YXRpb25zIGFyZSBwb3NzaWJsZToKKyAgICAgKiAgIEVTQ0FQRSBFU0NBUEUgICBFU0NBUEUgbGl0ZXJhbAorICAgICAqICAgRVNDQVBFIG4gYyAgICAgIG4gaW5zdGFuY2VzIG9mIGNoYXJhY3RlciBjCisgICAgICogU2luY2UgYW4gZW5jb2RlZCBydW4gb2NjdXBpZXMgMyBjaGFyYWN0ZXJzLCB3ZSBvbmx5IGVuY29kZSBydW5zIG9mIDQgb3IKKyAgICAgKiBtb3JlIGNoYXJhY3RlcnMuICBUaHVzIHdlIGhhdmUgbiA+IDAgYW5kIG4gIT0gRVNDQVBFIGFuZCBuIDw9IDB4RkZGRi4KKyAgICAgKiBJZiB3ZSBlbmNvdW50ZXIgYSBydW4gd2hlcmUgbiA9PSBFU0NBUEUsIHdlIHJlcHJlc2VudCB0aGlzIGFzOgorICAgICAqICAgYyBFU0NBUEUgbi0xIGMKKyAgICAgKiBUaGUgRVNDQVBFIHZhbHVlIGlzIGNob3NlbiBzbyBhcyBub3QgdG8gY29sbGlkZSB3aXRoIGNvbW1vbmx5CisgICAgICogc2VlbiB2YWx1ZXMuCisgICAgICovCisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBTdHJpbmcgYXJyYXlUb1JMRVN0cmluZyhzaG9ydFtdIGEpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgLy8gZm9yIChpbnQgaT0wOyBpPGEubGVuZ3RoOyArK2kpIGJ1ZmZlci5hcHBlbmQoKGNoYXIpIGFbaV0pOworICAgICAgICBidWZmZXIuYXBwZW5kKChjaGFyKSAoYS5sZW5ndGggPj4gMTYpKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZCgoY2hhcikgYS5sZW5ndGgpOworICAgICAgICBzaG9ydCBydW5WYWx1ZSA9IGFbMF07CisgICAgICAgIGludCBydW5MZW5ndGggPSAxOworICAgICAgICBmb3IgKGludCBpPTE7IGk8YS5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgc2hvcnQgcyA9IGFbaV07CisgICAgICAgICAgICBpZiAocyA9PSBydW5WYWx1ZSAmJiBydW5MZW5ndGggPCAweEZGRkYpICsrcnVuTGVuZ3RoOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBlbmNvZGVSdW4oYnVmZmVyLCBydW5WYWx1ZSwgcnVuTGVuZ3RoKTsKKyAgICAgICAgICAgIHJ1blZhbHVlID0gczsKKyAgICAgICAgICAgIHJ1bkxlbmd0aCA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZW5jb2RlUnVuKGJ1ZmZlciwgcnVuVmFsdWUsIHJ1bkxlbmd0aCk7CisgICAgICAgIHJldHVybiBidWZmZXIudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgY2hhciBhcnJheS4gIFVzZSBydW4tbGVuZ3RoIGVuY29kaW5nLgorICAgICAqIEEgY2hhcmFjdGVyIHJlcHJlc2VudHMgaXRzZWxmLCB1bmxlc3MgaXQgaXMgdGhlIEVTQ0FQRSBjaGFyYWN0ZXIuICBUaGVuCisgICAgICogdGhlIGZvbGxvd2luZyBub3RhdGlvbnMgYXJlIHBvc3NpYmxlOgorICAgICAqICAgRVNDQVBFIEVTQ0FQRSAgIEVTQ0FQRSBsaXRlcmFsCisgICAgICogICBFU0NBUEUgbiBjICAgICAgbiBpbnN0YW5jZXMgb2YgY2hhcmFjdGVyIGMKKyAgICAgKiBTaW5jZSBhbiBlbmNvZGVkIHJ1biBvY2N1cGllcyAzIGNoYXJhY3RlcnMsIHdlIG9ubHkgZW5jb2RlIHJ1bnMgb2YgNCBvcgorICAgICAqIG1vcmUgY2hhcmFjdGVycy4gIFRodXMgd2UgaGF2ZSBuID4gMCBhbmQgbiAhPSBFU0NBUEUgYW5kIG4gPD0gMHhGRkZGLgorICAgICAqIElmIHdlIGVuY291bnRlciBhIHJ1biB3aGVyZSBuID09IEVTQ0FQRSwgd2UgcmVwcmVzZW50IHRoaXMgYXM6CisgICAgICogICBjIEVTQ0FQRSBuLTEgYworICAgICAqIFRoZSBFU0NBUEUgdmFsdWUgaXMgY2hvc2VuIHNvIGFzIG5vdCB0byBjb2xsaWRlIHdpdGggY29tbW9ubHkKKyAgICAgKiBzZWVuIHZhbHVlcy4KKyAgICAgKi8KKyAgICBzdGF0aWMgcHVibGljIGZpbmFsIFN0cmluZyBhcnJheVRvUkxFU3RyaW5nKGNoYXJbXSBhKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoKGNoYXIpIChhLmxlbmd0aCA+PiAxNikpOworICAgICAgICBidWZmZXIuYXBwZW5kKChjaGFyKSBhLmxlbmd0aCk7CisgICAgICAgIGNoYXIgcnVuVmFsdWUgPSBhWzBdOworICAgICAgICBpbnQgcnVuTGVuZ3RoID0gMTsKKyAgICAgICAgZm9yIChpbnQgaT0xOyBpPGEubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGNoYXIgcyA9IGFbaV07CisgICAgICAgICAgICBpZiAocyA9PSBydW5WYWx1ZSAmJiBydW5MZW5ndGggPCAweEZGRkYpICsrcnVuTGVuZ3RoOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBlbmNvZGVSdW4oYnVmZmVyLCAoc2hvcnQpcnVuVmFsdWUsIHJ1bkxlbmd0aCk7CisgICAgICAgICAgICBydW5WYWx1ZSA9IHM7CisgICAgICAgICAgICBydW5MZW5ndGggPSAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVuY29kZVJ1bihidWZmZXIsIChzaG9ydClydW5WYWx1ZSwgcnVuTGVuZ3RoKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnN0cnVjdCBhIHN0cmluZyByZXByZXNlbnRpbmcgYSBieXRlIGFycmF5LiAgVXNlIHJ1bi1sZW5ndGggZW5jb2RpbmcuCisgICAgICogVHdvIGJ5dGVzIGFyZSBwYWNrZWQgaW50byBhIHNpbmdsZSBjaGFyLCB3aXRoIGEgc2luZ2xlIGV4dHJhIHplcm8gYnl0ZSBhdAorICAgICAqIHRoZSBlbmQgaWYgbmVlZGVkLiAgQSBieXRlIHJlcHJlc2VudHMgaXRzZWxmLCB1bmxlc3MgaXQgaXMgdGhlCisgICAgICogRVNDQVBFX0JZVEUuICBUaGVuIHRoZSBmb2xsb3dpbmcgbm90YXRpb25zIGFyZSBwb3NzaWJsZToKKyAgICAgKiAgIEVTQ0FQRV9CWVRFIEVTQ0FQRV9CWVRFICAgRVNDQVBFX0JZVEUgbGl0ZXJhbAorICAgICAqICAgRVNDQVBFX0JZVEUgbiBiICAgICAgICAgICBuIGluc3RhbmNlcyBvZiBieXRlIGIKKyAgICAgKiBTaW5jZSBhbiBlbmNvZGVkIHJ1biBvY2N1cGllcyAzIGJ5dGVzLCB3ZSBvbmx5IGVuY29kZSBydW5zIG9mIDQgb3IKKyAgICAgKiBtb3JlIGJ5dGVzLiAgVGh1cyB3ZSBoYXZlIG4gPiAwIGFuZCBuICE9IEVTQ0FQRV9CWVRFIGFuZCBuIDw9IDB4RkYuCisgICAgICogSWYgd2UgZW5jb3VudGVyIGEgcnVuIHdoZXJlIG4gPT0gRVNDQVBFX0JZVEUsIHdlIHJlcHJlc2VudCB0aGlzIGFzOgorICAgICAqICAgYiBFU0NBUEVfQllURSBuLTEgYgorICAgICAqIFRoZSBFU0NBUEVfQllURSB2YWx1ZSBpcyBjaG9zZW4gc28gYXMgbm90IHRvIGNvbGxpZGUgd2l0aCBjb21tb25seQorICAgICAqIHNlZW4gdmFsdWVzLgorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgU3RyaW5nIGFycmF5VG9STEVTdHJpbmcoYnl0ZVtdIGEpIHsKKyAgICAgICAgU3RyaW5nQnVmZmVyIGJ1ZmZlciA9IG5ldyBTdHJpbmdCdWZmZXIoKTsKKyAgICAgICAgYnVmZmVyLmFwcGVuZCgoY2hhcikgKGEubGVuZ3RoID4+IDE2KSk7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoKGNoYXIpIGEubGVuZ3RoKTsKKyAgICAgICAgYnl0ZSBydW5WYWx1ZSA9IGFbMF07CisgICAgICAgIGludCBydW5MZW5ndGggPSAxOworICAgICAgICBieXRlW10gc3RhdGUgPSBuZXcgYnl0ZVsyXTsKKyAgICAgICAgZm9yIChpbnQgaT0xOyBpPGEubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIGJ5dGUgYiA9IGFbaV07CisgICAgICAgICAgICBpZiAoYiA9PSBydW5WYWx1ZSAmJiBydW5MZW5ndGggPCAweEZGKSArK3J1bkxlbmd0aDsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGVuY29kZVJ1bihidWZmZXIsIHJ1blZhbHVlLCBydW5MZW5ndGgsIHN0YXRlKTsKKyAgICAgICAgICAgICAgICBydW5WYWx1ZSA9IGI7CisgICAgICAgICAgICAgICAgcnVuTGVuZ3RoID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbmNvZGVSdW4oYnVmZmVyLCBydW5WYWx1ZSwgcnVuTGVuZ3RoLCBzdGF0ZSk7CisKKyAgICAgICAgLy8gV2UgbXVzdCBzYXZlIHRoZSBmaW5hbCBieXRlLCBpZiB0aGVyZSBpcyBvbmUsIGJ5IHBhZGRpbmcKKyAgICAgICAgLy8gYW4gZXh0cmEgemVyby4KKyAgICAgICAgaWYgKHN0YXRlWzBdICE9IDApIGFwcGVuZEVuY29kZWRCeXRlKGJ1ZmZlciwgKGJ5dGUpMCwgc3RhdGUpOworCisgICAgICAgIHJldHVybiBidWZmZXIudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBFbmNvZGUgYSBydW4sIHBvc3NpYmx5IGEgZGVnZW5lcmF0ZSBydW4gKG9mIDwgNCB2YWx1ZXMpLgorICAgICAqIEBwYXJhbSBsZW5ndGggVGhlIGxlbmd0aCBvZiB0aGUgcnVuOyBtdXN0IGJlID4gMCAmJiA8PSAweEZGRkYuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgdm9pZCBlbmNvZGVSdW4oU3RyaW5nQnVmZmVyIGJ1ZmZlciwgaW50IHZhbHVlLCBpbnQgbGVuZ3RoKSB7CisgICAgICAgIGlmIChsZW5ndGggPCA0KSB7CisgICAgICAgICAgICBmb3IgKGludCBqPTA7IGo8bGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gRVNDQVBFKSB7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZEludChidWZmZXIsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXBwZW5kSW50KGJ1ZmZlciwgdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGxlbmd0aCA9PSAoaW50KSBFU0NBUEUpIHsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gKGludCkgRVNDQVBFKSB7CisgICAgICAgICAgICAgICAgICAgIGFwcGVuZEludChidWZmZXIsIEVTQ0FQRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFwcGVuZEludChidWZmZXIsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAtLWxlbmd0aDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFwcGVuZEludChidWZmZXIsIEVTQ0FQRSk7CisgICAgICAgICAgICBhcHBlbmRJbnQoYnVmZmVyLCBsZW5ndGgpOworICAgICAgICAgICAgYXBwZW5kSW50KGJ1ZmZlciwgdmFsdWUpOyAvLyBEb24ndCBuZWVkIHRvIGVzY2FwZSB0aGlzIHZhbHVlCisgICAgICAgIH0KKyAgICB9CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgdm9pZCBhcHBlbmRJbnQoU3RyaW5nQnVmZmVyIGJ1ZmZlciwgaW50IHZhbHVlKSB7CisgICAgICAgIGJ1ZmZlci5hcHBlbmQoKGNoYXIpKHZhbHVlID4+PiAxNikpOworICAgICAgICBidWZmZXIuYXBwZW5kKChjaGFyKSh2YWx1ZSAmIDB4RkZGRikpOworICAgIH0KKworCisgICAgLyoqCisgICAgICogRW5jb2RlIGEgcnVuLCBwb3NzaWJseSBhIGRlZ2VuZXJhdGUgcnVuIChvZiA8IDQgdmFsdWVzKS4KKyAgICAgKiBAcGFyYW0gbGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIHJ1bjsgbXVzdCBiZSA+IDAgJiYgPD0gMHhGRkZGLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIHZvaWQgZW5jb2RlUnVuKFN0cmluZ0J1ZmZlciBidWZmZXIsIHNob3J0IHZhbHVlLCBpbnQgbGVuZ3RoKSB7CisgICAgICAgIGlmIChsZW5ndGggPCA0KSB7CisgICAgICAgICAgICBmb3IgKGludCBqPTA7IGo8bGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gKGludCkgRVNDQVBFKSBidWZmZXIuYXBwZW5kKEVTQ0FQRSk7CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgoY2hhcikgdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKGxlbmd0aCA9PSAoaW50KSBFU0NBUEUpIHsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gKGludCkgRVNDQVBFKSBidWZmZXIuYXBwZW5kKEVTQ0FQRSk7CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgoY2hhcikgdmFsdWUpOworICAgICAgICAgICAgICAgIC0tbGVuZ3RoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChFU0NBUEUpOworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgoY2hhcikgbGVuZ3RoKTsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoKGNoYXIpIHZhbHVlKTsgLy8gRG9uJ3QgbmVlZCB0byBlc2NhcGUgdGhpcyB2YWx1ZQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogRW5jb2RlIGEgcnVuLCBwb3NzaWJseSBhIGRlZ2VuZXJhdGUgcnVuIChvZiA8IDQgdmFsdWVzKS4KKyAgICAgKiBAcGFyYW0gbGVuZ3RoIFRoZSBsZW5ndGggb2YgdGhlIHJ1bjsgbXVzdCBiZSA+IDAgJiYgPD0gMHhGRi4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCB2b2lkIGVuY29kZVJ1bihTdHJpbmdCdWZmZXIgYnVmZmVyLCBieXRlIHZhbHVlLCBpbnQgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICBieXRlW10gc3RhdGUpIHsKKyAgICAgICAgaWYgKGxlbmd0aCA8IDQpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGo9MDsgajxsZW5ndGg7ICsraikgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBFU0NBUEVfQllURSkgYXBwZW5kRW5jb2RlZEJ5dGUoYnVmZmVyLCBFU0NBUEVfQllURSwgc3RhdGUpOworICAgICAgICAgICAgICAgIGFwcGVuZEVuY29kZWRCeXRlKGJ1ZmZlciwgdmFsdWUsIHN0YXRlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChsZW5ndGggPT0gRVNDQVBFX0JZVEUpIHsKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBFU0NBUEVfQllURSkgYXBwZW5kRW5jb2RlZEJ5dGUoYnVmZmVyLCBFU0NBUEVfQllURSwgc3RhdGUpOworICAgICAgICAgICAgYXBwZW5kRW5jb2RlZEJ5dGUoYnVmZmVyLCB2YWx1ZSwgc3RhdGUpOworICAgICAgICAgICAgLS1sZW5ndGg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhcHBlbmRFbmNvZGVkQnl0ZShidWZmZXIsIEVTQ0FQRV9CWVRFLCBzdGF0ZSk7CisgICAgICAgICAgICBhcHBlbmRFbmNvZGVkQnl0ZShidWZmZXIsIChieXRlKWxlbmd0aCwgc3RhdGUpOworICAgICAgICAgICAgYXBwZW5kRW5jb2RlZEJ5dGUoYnVmZmVyLCB2YWx1ZSwgc3RhdGUpOyAvLyBEb24ndCBuZWVkIHRvIGVzY2FwZSB0aGlzIHZhbHVlCisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBcHBlbmQgYSBieXRlIHRvIHRoZSBnaXZlbiBTdHJpbmdCdWZmZXIsIHBhY2tpbmcgdHdvIGJ5dGVzIGludG8gZWFjaAorICAgICAqIGNoYXJhY3Rlci4gIFRoZSBzdGF0ZSBwYXJhbWV0ZXIgbWFpbnRhaW5zIGludGVybWVkaWFyeSBkYXRhIGJldHdlZW4KKyAgICAgKiBjYWxscy4KKyAgICAgKiBAcGFyYW0gc3RhdGUgQSB0d28tZWxlbWVudCBhcnJheSwgd2l0aCBzdGF0ZVswXSA9PSAwIGlmIHRoaXMgaXMgdGhlCisgICAgICogZmlyc3QgYnl0ZSBvZiBhIHBhaXIsIG9yIHN0YXRlWzBdICE9IDAgaWYgdGhpcyBpcyB0aGUgc2Vjb25kIGJ5dGUKKyAgICAgKiBvZiBhIHBhaXIsIGluIHdoaWNoIGNhc2Ugc3RhdGVbMV0gaXMgdGhlIGZpcnN0IGJ5dGUuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgdm9pZCBhcHBlbmRFbmNvZGVkQnl0ZShTdHJpbmdCdWZmZXIgYnVmZmVyLCBieXRlIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZVtdIHN0YXRlKSB7CisgICAgICAgIGlmIChzdGF0ZVswXSAhPSAwKSB7CisgICAgICAgICAgICBjaGFyIGMgPSAoY2hhcikgKChzdGF0ZVsxXSA8PCA4KSB8ICgoKGludCkgdmFsdWUpICYgMHhGRikpOworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChjKTsKKyAgICAgICAgICAgIHN0YXRlWzBdID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN0YXRlWzBdID0gMTsKKyAgICAgICAgICAgIHN0YXRlWzFdID0gdmFsdWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYW4gYXJyYXkgb2YgaW50cyBmcm9tIGEgcnVuLWxlbmd0aCBlbmNvZGVkIHN0cmluZy4KKyAgICAgKi8KKyAgICBzdGF0aWMgcHVibGljIGZpbmFsIGludFtdIFJMRVN0cmluZ1RvSW50QXJyYXkoU3RyaW5nIHMpIHsKKyAgICAgICAgaW50IGxlbmd0aCA9IGdldEludChzLCAwKTsKKyAgICAgICAgaW50W10gYXJyYXkgPSBuZXcgaW50W2xlbmd0aF07CisgICAgICAgIGludCBhaSA9IDAsIGkgPSAxOworCisgICAgICAgIGludCBtYXhJID0gcy5sZW5ndGgoKSAvIDI7CisgICAgICAgIHdoaWxlIChhaSA8IGxlbmd0aCAmJiBpIDwgbWF4SSkgeworICAgICAgICAgICAgaW50IGMgPSBnZXRJbnQocywgaSsrKTsKKworICAgICAgICAgICAgaWYgKGMgPT0gRVNDQVBFKSB7CisgICAgICAgICAgICAgICAgYyA9IGdldEludChzLCBpKyspOworICAgICAgICAgICAgICAgIGlmIChjID09IEVTQ0FQRSkgeworICAgICAgICAgICAgICAgICAgICBhcnJheVthaSsrXSA9IGM7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IHJ1bkxlbmd0aCA9IGM7CisgICAgICAgICAgICAgICAgICAgIGludCBydW5WYWx1ZSA9IGdldEludChzLCBpKyspOworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqPTA7IGo8cnVuTGVuZ3RoOyArK2opIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5W2FpKytdID0gcnVuVmFsdWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBhcnJheVthaSsrXSA9IGM7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoYWkgIT0gbGVuZ3RoIHx8IGkgIT0gbWF4SSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoIkJhZCBydW4tbGVuZ3RoIGVuY29kZWQgaW50IGFycmF5Iik7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gYXJyYXk7CisgICAgfQorICAgIHN0YXRpYyBmaW5hbCBpbnQgZ2V0SW50KFN0cmluZyBzLCBpbnQgaSkgeworICAgICAgICByZXR1cm4gKCgoaW50KSBzLmNoYXJBdCgyKmkpKSA8PCAxNikgfCAoaW50KSBzLmNoYXJBdCgyKmkrMSk7CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYW4gYXJyYXkgb2Ygc2hvcnRzIGZyb20gYSBydW4tbGVuZ3RoIGVuY29kZWQgc3RyaW5nLgorICAgICAqLworICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgc2hvcnRbXSBSTEVTdHJpbmdUb1Nob3J0QXJyYXkoU3RyaW5nIHMpIHsKKyAgICAgICAgaW50IGxlbmd0aCA9ICgoKGludCkgcy5jaGFyQXQoMCkpIDw8IDE2KSB8ICgoaW50KSBzLmNoYXJBdCgxKSk7CisgICAgICAgIHNob3J0W10gYXJyYXkgPSBuZXcgc2hvcnRbbGVuZ3RoXTsKKyAgICAgICAgaW50IGFpID0gMDsKKyAgICAgICAgZm9yIChpbnQgaT0yOyBpPHMubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgY2hhciBjID0gcy5jaGFyQXQoaSk7CisgICAgICAgICAgICBpZiAoYyA9PSBFU0NBUEUpIHsKKyAgICAgICAgICAgICAgICBjID0gcy5jaGFyQXQoKytpKTsKKyAgICAgICAgICAgICAgICBpZiAoYyA9PSBFU0NBUEUpIHsKKyAgICAgICAgICAgICAgICAgICAgYXJyYXlbYWkrK10gPSAoc2hvcnQpIGM7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IHJ1bkxlbmd0aCA9IChpbnQpIGM7CisgICAgICAgICAgICAgICAgICAgIHNob3J0IHJ1blZhbHVlID0gKHNob3J0KSBzLmNoYXJBdCgrK2kpOworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqPTA7IGo8cnVuTGVuZ3RoOyArK2opIGFycmF5W2FpKytdID0gcnVuVmFsdWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYXJyYXlbYWkrK10gPSAoc2hvcnQpIGM7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoYWkgIT0gbGVuZ3RoKQorICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoIkJhZCBydW4tbGVuZ3RoIGVuY29kZWQgc2hvcnQgYXJyYXkiKTsKKworICAgICAgICByZXR1cm4gYXJyYXk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IGFuIGFycmF5IG9mIHNob3J0cyBmcm9tIGEgcnVuLWxlbmd0aCBlbmNvZGVkIHN0cmluZy4KKyAgICAgKi8KKyAgICBzdGF0aWMgcHVibGljIGZpbmFsIGNoYXJbXSBSTEVTdHJpbmdUb0NoYXJBcnJheShTdHJpbmcgcykgeworICAgICAgICBpbnQgbGVuZ3RoID0gKCgoaW50KSBzLmNoYXJBdCgwKSkgPDwgMTYpIHwgKChpbnQpIHMuY2hhckF0KDEpKTsKKyAgICAgICAgY2hhcltdIGFycmF5ID0gbmV3IGNoYXJbbGVuZ3RoXTsKKyAgICAgICAgaW50IGFpID0gMDsKKyAgICAgICAgZm9yIChpbnQgaT0yOyBpPHMubGVuZ3RoKCk7ICsraSkgeworICAgICAgICAgICAgY2hhciBjID0gcy5jaGFyQXQoaSk7CisgICAgICAgICAgICBpZiAoYyA9PSBFU0NBUEUpIHsKKyAgICAgICAgICAgICAgICBjID0gcy5jaGFyQXQoKytpKTsKKyAgICAgICAgICAgICAgICBpZiAoYyA9PSBFU0NBUEUpIHsKKyAgICAgICAgICAgICAgICAgICAgYXJyYXlbYWkrK10gPSBjOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGludCBydW5MZW5ndGggPSAoaW50KSBjOworICAgICAgICAgICAgICAgICAgICBjaGFyIHJ1blZhbHVlID0gcy5jaGFyQXQoKytpKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqPHJ1bkxlbmd0aDsgKytqKSBhcnJheVthaSsrXSA9IHJ1blZhbHVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGFycmF5W2FpKytdID0gYzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChhaSAhPSBsZW5ndGgpCisgICAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcigiQmFkIHJ1bi1sZW5ndGggZW5jb2RlZCBzaG9ydCBhcnJheSIpOworCisgICAgICAgIHJldHVybiBhcnJheTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDb25zdHJ1Y3QgYW4gYXJyYXkgb2YgYnl0ZXMgZnJvbSBhIHJ1bi1sZW5ndGggZW5jb2RlZCBzdHJpbmcuCisgICAgICovCisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBieXRlW10gUkxFU3RyaW5nVG9CeXRlQXJyYXkoU3RyaW5nIHMpIHsKKyAgICAgICAgaW50IGxlbmd0aCA9ICgoKGludCkgcy5jaGFyQXQoMCkpIDw8IDE2KSB8ICgoaW50KSBzLmNoYXJBdCgxKSk7CisgICAgICAgIGJ5dGVbXSBhcnJheSA9IG5ldyBieXRlW2xlbmd0aF07CisgICAgICAgIGJvb2xlYW4gbmV4dENoYXIgPSB0cnVlOworICAgICAgICBjaGFyIGMgPSAwOworICAgICAgICBpbnQgbm9kZSA9IDA7CisgICAgICAgIGludCBydW5MZW5ndGggPSAwOworICAgICAgICBpbnQgaSA9IDI7CisgICAgICAgIGZvciAoaW50IGFpPTA7IGFpPGxlbmd0aDsgKSB7CisgICAgICAgICAgICAvLyBUaGlzIHBhcnQgb2YgdGhlIGxvb3AgcGxhY2VzIHRoZSBuZXh0IGJ5dGUgaW50byB0aGUgbG9jYWwKKyAgICAgICAgICAgIC8vIHZhcmlhYmxlICdiJyBlYWNoIHRpbWUgdGhyb3VnaCB0aGUgbG9vcC4gIEl0IGtlZXBzIHRoZQorICAgICAgICAgICAgLy8gY3VycmVudCBjaGFyYWN0ZXIgaW4gJ2MnIGFuZCB1c2VzIHRoZSBib29sZWFuICduZXh0Q2hhcicKKyAgICAgICAgICAgIC8vIHRvIHNlZSBpZiB3ZSd2ZSB0YWtlbiBib3RoIGJ5dGVzIG91dCBvZiAnYycgeWV0LgorICAgICAgICAgICAgYnl0ZSBiOworICAgICAgICAgICAgaWYgKG5leHRDaGFyKSB7CisgICAgICAgICAgICAgICAgYyA9IHMuY2hhckF0KGkrKyk7CisgICAgICAgICAgICAgICAgYiA9IChieXRlKSAoYyA+PiA4KTsKKyAgICAgICAgICAgICAgICBuZXh0Q2hhciA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYiA9IChieXRlKSAoYyAmIDB4RkYpOworICAgICAgICAgICAgICAgIG5leHRDaGFyID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhpcyBwYXJ0IG9mIHRoZSBsb29wIGlzIGEgdGlueSBzdGF0ZSBtYWNoaW5lIHdoaWNoIGhhbmRsZXMKKyAgICAgICAgICAgIC8vIHRoZSBwYXJzaW5nIG9mIHRoZSBydW4tbGVuZ3RoIGVuY29kaW5nLiAgVGhpcyB3b3VsZCBiZSBzaW1wbGVyCisgICAgICAgICAgICAvLyBpZiB3ZSBjb3VsZCBsb29rIGFoZWFkLCBidXQgd2UgY2FuJ3QsIHNvIHdlIHVzZSAnbm9kZScgdG8KKyAgICAgICAgICAgIC8vIG1vdmUgYmV0d2VlbiB0aHJlZSBub2RlcyBpbiB0aGUgc3RhdGUgbWFjaGluZS4KKyAgICAgICAgICAgIHN3aXRjaCAobm9kZSkgeworICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgIC8vIE5vcm1hbCBpZGxlIG5vZGUKKyAgICAgICAgICAgICAgICBpZiAoYiA9PSBFU0NBUEVfQllURSkgeworICAgICAgICAgICAgICAgICAgICBub2RlID0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGFycmF5W2FpKytdID0gYjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBzZWVuIG9uZSBFU0NBUEVfQllURTsgd2UgZXhwZWN0IGVpdGhlciBhIHNlY29uZAorICAgICAgICAgICAgICAgIC8vIG9uZSwgb3IgYSBydW4gbGVuZ3RoIGFuZCB2YWx1ZS4KKyAgICAgICAgICAgICAgICBpZiAoYiA9PSBFU0NBUEVfQllURSkgeworICAgICAgICAgICAgICAgICAgICBhcnJheVthaSsrXSA9IEVTQ0FQRV9CWVRFOworICAgICAgICAgICAgICAgICAgICBub2RlID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJ1bkxlbmd0aCA9IGI7CisgICAgICAgICAgICAgICAgICAgIC8vIEludGVycHJldCBzaWduZWQgYnl0ZSBhcyB1bnNpZ25lZAorICAgICAgICAgICAgICAgICAgICBpZiAocnVuTGVuZ3RoIDwgMCkgcnVuTGVuZ3RoICs9IDB4MTAwOworICAgICAgICAgICAgICAgICAgICBub2RlID0gMjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBzZWVuIGFuIEVTQ0FQRV9CWVRFIGFuZCBsZW5ndGggYnl0ZS4gIFdlIGludGVycHJldAorICAgICAgICAgICAgICAgIC8vIHRoZSBuZXh0IGJ5dGUgYXMgdGhlIHZhbHVlIHRvIGJlIHJlcGVhdGVkLgorICAgICAgICAgICAgICAgIGZvciAoaW50IGo9MDsgajxydW5MZW5ndGg7ICsraikgYXJyYXlbYWkrK10gPSBiOworICAgICAgICAgICAgICAgIG5vZGUgPSAwOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG5vZGUgIT0gMCkKKyAgICAgICAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKCJCYWQgcnVuLWxlbmd0aCBlbmNvZGVkIGJ5dGUgYXJyYXkiKTsKKworICAgICAgICBpZiAoaSAhPSBzLmxlbmd0aCgpKQorICAgICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoIkV4Y2VzcyBkYXRhIGluIFJMRSBieXRlIGFycmF5IHN0cmluZyIpOworCisgICAgICAgIHJldHVybiBhcnJheTsKKyAgICB9CisKKyAgICBzdGF0aWMgcHVibGljIFN0cmluZyBMSU5FX1NFUEFSQVRPUiA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgibGluZS5zZXBhcmF0b3IiKTsKKworICAgIC8qKgorICAgICAqIEZvcm1hdCBhIFN0cmluZyBmb3IgcmVwcmVzZW50YXRpb24gaW4gYSBzb3VyY2UgZmlsZS4gIFRoaXMgaW5jbHVkZXMKKyAgICAgKiBicmVha2luZyBpdCBpbnRvIGxpbmVzIGFuZCBlc2NhcGluZyBjaGFyYWN0ZXJzIHVzaW5nIG9jdGFsIG5vdGF0aW9uCisgICAgICogd2hlbiBuZWNlc3NhcnkgKGNvbnRyb2wgY2hhcmFjdGVycyBhbmQgZG91YmxlIHF1b3RlcykuCisgICAgICovCisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBTdHJpbmcgZm9ybWF0Rm9yU291cmNlKFN0cmluZyBzKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxzLmxlbmd0aCgpOykgeworICAgICAgICAgICAgaWYgKGkgPiAwKSBidWZmZXIuYXBwZW5kKCcrJykuYXBwZW5kKExJTkVfU0VQQVJBVE9SKTsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoIiAgICAgICAgXCIiKTsKKyAgICAgICAgICAgIGludCBjb3VudCA9IDExOworICAgICAgICAgICAgd2hpbGUgKGk8cy5sZW5ndGgoKSAmJiBjb3VudDw4MCkgeworICAgICAgICAgICAgY2hhciBjID0gcy5jaGFyQXQoaSsrKTsKKyAgICAgICAgICAgIGlmIChjIDwgJ1x1MDAyMCcgfHwgYyA9PSAnIicgfHwgYyA9PSAnXFwnKSB7CisgICAgICAgICAgICAgICAgLy8gUmVwcmVzZW50IGNvbnRyb2wgY2hhcmFjdGVycywgYmFja3NsYXNoIGFuZCBkb3VibGUgcXVvdGUKKyAgICAgICAgICAgICAgICAvLyB1c2luZyBvY3RhbCBub3RhdGlvbjsgb3RoZXJ3aXNlIHRoZSBzdHJpbmcgd2UgZm9ybQorICAgICAgICAgICAgICAgIC8vIHdvbid0IGNvbXBpbGUsIHNpbmNlIFVuaWNvZGUgZXNjYXBlIHNlcXVlbmNlcyBhcmUKKyAgICAgICAgICAgICAgICAvLyBwcm9jZXNzZWQgYmVmb3JlIHRva2VuaXphdGlvbi4KKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCdcXCcpOworICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoSEVYX0RJR0lUWyhjICYgMDcwMCkgPj4gNl0pOyAvLyBIRVhfRElHSVQgd29ya3MgZm9yIG9jdGFsCisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChIRVhfRElHSVRbKGMgJiAwMDcwKSA+PiAzXSk7CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChIRVhfRElHSVRbKGMgJiAwMDA3KV0pOworICAgICAgICAgICAgICAgIGNvdW50ICs9IDQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjIDw9ICdcdTAwN0UnKSB7CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChjKTsKKyAgICAgICAgICAgICAgICBjb3VudCArPSAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZCgiXFx1Iik7CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChIRVhfRElHSVRbKGMgJiAweEYwMDApID4+IDEyXSk7CisgICAgICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChIRVhfRElHSVRbKGMgJiAweDBGMDApID4+IDhdKTsKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKEhFWF9ESUdJVFsoYyAmIDB4MDBGMCkgPj4gNF0pOworICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoSEVYX0RJR0lUWyhjICYgMHgwMDBGKV0pOworICAgICAgICAgICAgICAgIGNvdW50ICs9IDY7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKCciJyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZygpOworICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBjaGFyW10gSEVYX0RJR0lUID0geycwJywnMScsJzInLCczJywnNCcsJzUnLCc2JywnNycsCisgICAgICAgICAgICAgICAgICAgICAnOCcsJzknLCdBJywnQicsJ0MnLCdEJywnRScsJ0YnfTsKKworCisgICAgLyoqCisgICAgICogQ29udmVydCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIHJhbmdlIFUrMDAyMCB0byBVKzAwN0YgdG8KKyAgICAgKiBVbmljb2RlIGVzY2FwZXMsIGFuZCBjb252ZXJ0IGJhY2tzbGFzaCB0byBhIGRvdWJsZSBiYWNrc2xhc2guCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgZXNjYXBlKFN0cmluZyBzKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciBidWYgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxzLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGNoYXIgYyA9IHMuY2hhckF0KGkpOworICAgICAgICAgICAgaWYgKGMgPj0gJyAnICYmIGMgPD0gMHgwMDdGKSB7CisgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1xcJykgeworICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCJcXFxcIik7IC8vIFRoYXQgaXMsICJcXCIKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKGMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgiXFx1Iik7CisgICAgICAgICAgICAgICAgaWYgKGMgPCAweDEwMDApIHsKKyAgICAgICAgICAgICAgICAgICAgYnVmLmFwcGVuZCgnMCcpOworICAgICAgICAgICAgICAgICAgICBpZiAoYyA8IDB4MTAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA8IDB4MTApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWYuYXBwZW5kKCcwJyk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnVmLmFwcGVuZChJbnRlZ2VyLnRvSGV4U3RyaW5nKGMpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYnVmLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydCBhIGNoYXIgdG8gNCBoZXggdXBwZXJjYXNlIGRpZ2l0cy4gIEUuZy4sIGhleCgnYScpID0+CisgICAgICogIjAwNDEiLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGhleChjaGFyIGNoKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciB0ZW1wID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICByZXR1cm4gaGV4KGNoLCB0ZW1wKS50b1N0cmluZygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlcnQgYSBzdHJpbmcgdG8gY29tbWEtc2VwYXJhdGVkIGdyb3VwcyBvZiA0IGhleCB1cHBlcmNhc2UKKyAgICAgKiBkaWdpdHMuICBFLmcuLCBoZXgoJ2FiJykgPT4gIjAwNDEsMDA0MiIuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgaGV4KFN0cmluZyBzKSB7CisgICAgICAgIFN0cmluZ0J1ZmZlciB0ZW1wID0gbmV3IFN0cmluZ0J1ZmZlcigpOworICAgICAgICByZXR1cm4gaGV4KHMsIHRlbXApLnRvU3RyaW5nKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydCBhIHN0cmluZyB0byBjb21tYS1zZXBhcmF0ZWQgZ3JvdXBzIG9mIDQgaGV4IHVwcGVyY2FzZQorICAgICAqIGRpZ2l0cy4gIEUuZy4sIGhleCgnYWInKSA9PiAiMDA0MSwwMDQyIi4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZyBoZXgoU3RyaW5nQnVmZmVyIHMpIHsKKyAgICAgICAgcmV0dXJuIGhleChzLnRvU3RyaW5nKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENvbnZlcnQgYSBjaGFyIHRvIDQgaGV4IHVwcGVyY2FzZSBkaWdpdHMuICBFLmcuLCBoZXgoJ2EnKSA9PgorICAgICAqICIwMDQxIi4gIEFwcGVuZCB0aGUgb3V0cHV0IHRvIHRoZSBnaXZlbiBTdHJpbmdCdWZmZXIuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmdCdWZmZXIgaGV4KGNoYXIgY2gsIFN0cmluZ0J1ZmZlciBvdXRwdXQpIHsKKyAgICAgICAgU3RyaW5nIGZvbyA9IEludGVnZXIudG9TdHJpbmcoY2gsMTYpLnRvVXBwZXJDYXNlKCk7CisgICAgICAgIGZvciAoaW50IGkgPSBmb28ubGVuZ3RoKCk7IGkgPCA0OyArK2kpIHsKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoJzAnKTsKKyAgICAgICAgfQorICAgICAgICBvdXRwdXQuYXBwZW5kKGZvbyk7CisgICAgICAgIHJldHVybiBvdXRwdXQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29udmVydCBhIHN0cmluZyB0byBjb21tYS1zZXBhcmF0ZWQgZ3JvdXBzIG9mIDQgaGV4IHVwcGVyY2FzZQorICAgICAqIGRpZ2l0cy4gIEUuZy4sIGhleCgnYWInKSA9PiAiMDA0MSwwMDQyIi4gIEFwcGVuZCB0aGUgb3V0cHV0CisgICAgICogdG8gdGhlIGdpdmVuIFN0cmluZ0J1ZmZlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFN0cmluZ0J1ZmZlciBoZXgoU3RyaW5nIHMsIFN0cmluZ0J1ZmZlciByZXN1bHQpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChpICE9IDApIHJlc3VsdC5hcHBlbmQoJywnKTsKKyAgICAgICAgICAgIGhleChzLmNoYXJBdChpKSwgcmVzdWx0KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFNwbGl0IGEgc3RyaW5nIGludG8gcGllY2VzIGJhc2VkIG9uIHRoZSBnaXZlbiBkaXZpZGVyIGNoYXJhY3RlcgorICAgICAqIEBwYXJhbSBzIHRoZSBzdHJpbmcgdG8gc3BsaXQKKyAgICAgKiBAcGFyYW0gZGl2aWRlciB0aGUgY2hhcmFjdGVyIG9uIHdoaWNoIHRvIHNwbGl0LiAgT2NjdXJyZW5jZXMgb2YKKyAgICAgKiB0aGlzIGNoYXJhY3RlciBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBvdXRwdXQKKyAgICAgKiBAcGFyYW0gb3V0cHV0IGFuIGFycmF5IHRvIHJlY2VpdmUgdGhlIHN1YnN0cmluZ3MgYmV0d2VlbgorICAgICAqIGluc3RhbmNlcyBvZiBkaXZpZGVyLiAgSXQgbXVzdCBiZSBsYXJnZSBlbm91Z2ggb24gZW50cnkgdG8KKyAgICAgKiBhY2NvbW9kYXRlIGFsbCBvdXRwdXQuICBBZGphY2VudCBpbnN0YW5jZXMgb2YgdGhlIGRpdmlkZXIKKyAgICAgKiBjaGFyYWN0ZXIgd2lsbCBwbGFjZSBlbXB0eSBzdHJpbmdzIGludG8gb3V0cHV0LiAgQmVmb3JlCisgICAgICogcmV0dXJuaW5nLCBvdXRwdXQgaXMgcGFkZGVkIG91dCB3aXRoIGVtcHR5IHN0cmluZ3MuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHNwbGl0KFN0cmluZyBzLCBjaGFyIGRpdmlkZXIsIFN0cmluZ1tdIG91dHB1dCkgeworICAgICAgICBpbnQgbGFzdCA9IDA7CisgICAgICAgIGludCBjdXJyZW50ID0gMDsKKyAgICAgICAgaW50IGk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgICAgIGlmIChzLmNoYXJBdChpKSA9PSBkaXZpZGVyKSB7CisgICAgICAgICAgICAgICAgb3V0cHV0W2N1cnJlbnQrK10gPSBzLnN1YnN0cmluZyhsYXN0LGkpOworICAgICAgICAgICAgICAgIGxhc3QgPSBpKzE7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgb3V0cHV0W2N1cnJlbnQrK10gPSBzLnN1YnN0cmluZyhsYXN0LGkpOworICAgICAgICB3aGlsZSAoY3VycmVudCA8IG91dHB1dC5sZW5ndGgpIHsKKyAgICAgICAgICAgIG91dHB1dFtjdXJyZW50KytdID0gIiI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBMb29rIHVwIGEgZ2l2ZW4gc3RyaW5nIGluIGEgc3RyaW5nIGFycmF5LiAgUmV0dXJucyB0aGUgaW5kZXggYXQKKyAgICAgKiB3aGljaCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiB0aGUgc3RyaW5nIHdhcyBmb3VuZCBpbiB0aGUKKyAgICAgKiBhcnJheSwgb3IgLTEgaWYgaXQgd2FzIG5vdCBmb3VuZC4KKyAgICAgKiBAcGFyYW0gc291cmNlIHRoZSBzdHJpbmcgdG8gc2VhcmNoIGZvcgorICAgICAqIEBwYXJhbSB0YXJnZXQgdGhlIGFycmF5IG9mIHplcm8gb3IgbW9yZSBzdHJpbmdzIGluIHdoaWNoIHRvCisgICAgICogbG9vayBmb3Igc291cmNlCisgICAgICogQHJldHVybiB0aGUgaW5kZXggb2YgdGFyZ2V0IGF0IHdoaWNoIHNvdXJjZSBmaXJzdCBvY2N1cnMsIG9yIC0xCisgICAgICogaWYgbm90IGZvdW5kCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgbG9va3VwKFN0cmluZyBzb3VyY2UsIFN0cmluZ1tdIHRhcmdldCkgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHRhcmdldC5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKHNvdXJjZS5lcXVhbHModGFyZ2V0W2ldKSkgcmV0dXJuIGk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvcGFja2FnZS5odG1sIGIvc3JjL2NvbS9pYm0vdXRpbC9wYWNrYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMTk2OTAwZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvcGFja2FnZS5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8IS0tICBDb3B5cmlnaHQgKEMpIDIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kCisgIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworICAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL0F0dGljL3BhY2thZ2UuaHRtbCx2ICQKKyAgJFJldmlzaW9uOiAxLjEgJAorICAkRGF0ZTogMjAwMC8wMy8xNSAyMTozNTo1MyAkCistLT4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIj4KK0ludGVybmF0aW9uYWwgY2FsZW5kYXJzIGFuZCBvdGhlciB1dGlsaXR5IGNsYXNzZXMuCis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQnVkZGhpc3RDYWxlbmRhclN5bWJvbHMuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0J1ZGRoaXN0Q2FsZW5kYXJTeW1ib2xzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWFhOWIzOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0J1ZGRoaXN0Q2FsZW5kYXJTeW1ib2xzLmphdmEKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQXR0aWMvQnVkZGhpc3RDYWxlbmRhclN5bWJvbHMuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wOS8xOSAxODozNzozNiAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udXRpbC5yZXNvdXJjZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIERlZmF1bHQgRGF0ZSBGb3JtYXQgc3ltYm9scyBmb3IgdGhlIEJ1ZGRoaXN0IENhbGVuZGFyCisgKi8KK3B1YmxpYyBjbGFzcyBCdWRkaGlzdENhbGVuZGFyU3ltYm9scyBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgY29weXJpZ2h0ID0gIkNvcHlyaWdodCBcdTAwYTkgMTk5OCBJQk0gQ29ycC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4iOworCisgICAgc3RhdGljIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICJFcmFzIiwgbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICAgICAiQkUiCisgICAgICAgICAgICB9IH0sCisgICAgfTsKKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGZDb250ZW50czsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQnVkZGhpc3RDYWxlbmRhclN5bWJvbHNfYXIuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0J1ZGRoaXN0Q2FsZW5kYXJTeW1ib2xzX2FyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNTEyODZiYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0J1ZGRoaXN0Q2FsZW5kYXJTeW1ib2xzX2FyLmphdmEKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQXR0aWMvQnVkZGhpc3RDYWxlbmRhclN5bWJvbHNfYXIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wOS8xOSAxODozNzozNiAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udXRpbC5yZXNvdXJjZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIERlZmF1bHQgRGF0ZSBGb3JtYXQgc3ltYm9scyBmb3IgdGhlIEJ1ZGRoaXN0IENhbGVuZGFyCisgKi8KK3B1YmxpYyBjbGFzcyBCdWRkaGlzdENhbGVuZGFyU3ltYm9sc19hciBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgY29weXJpZ2h0ID0gIkNvcHlyaWdodCBcdTAwYTkgMTk5OSBJQk0gQ29ycC4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4iOworCisgICAgc3RhdGljIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICJFcmFzIiwgbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICAgICAiXHUwNjI3XHUwNjQ0XHUwNjJBXHUwNjQyXHUwNjQ4XHUwNjRBXHUwNjQ1IFx1MDYyN1x1MDY0NFx1MDYyOFx1MDY0OFx1MDYzMFx1MDY0QSIKKyAgICAgICAgICAgIH0gfSwKKyAgICB9OworCisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gZkNvbnRlbnRzOworICAgIH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9CdWRkaGlzdENhbGVuZGFyU3ltYm9sc19odS5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQnVkZGhpc3RDYWxlbmRhclN5bWJvbHNfaHUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wNDUwNzg1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQnVkZGhpc3RDYWxlbmRhclN5bWJvbHNfaHUuamF2YQpAQCAtMCwwICsxLDMzIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9BdHRpYy9CdWRkaGlzdENhbGVuZGFyU3ltYm9sc19odS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA5LzE5IDE4OjM3OjM2ICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS51dGlsLnJlc291cmNlczsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8qKgorICogSHVuZ2FyaWFuIERhdGUgRm9ybWF0IHN5bWJvbHMgZm9yIHRoZSBCdWRkaGlzdCBDYWxlbmRhcgorICovCitwdWJsaWMgY2xhc3MgQnVkZGhpc3RDYWxlbmRhclN5bWJvbHNfaHUgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNvcHlyaWdodCA9ICJDb3B5cmlnaHQgXHUwMGE5IDE5OTggSUJNIENvcnAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIjsKKworICAgIHN0YXRpYyBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAiRXJhcyIsIG5ldyBTdHJpbmdbXSB7CisgICAgICAgICAgICAgICAgIkJLIgorICAgICAgICAgICAgfSB9LAorICAgIH07CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBmQ29udGVudHM7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0J1ZGRoaXN0Q2FsZW5kYXJTeW1ib2xzX3RoLmphdmEgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9CdWRkaGlzdENhbGVuZGFyU3ltYm9sc190aC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjYwNTUzMTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9CdWRkaGlzdENhbGVuZGFyU3ltYm9sc190aC5qYXZhCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0F0dGljL0J1ZGRoaXN0Q2FsZW5kYXJTeW1ib2xzX3RoLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDkvMTkgMTg6Mzc6MzYgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLyoqCisgKiBUaGFpIHZlcnNpb24gb2YgdGhlIERhdGUgRm9ybWF0IHN5bWJvbHMgZm9yIHRoZSBCdWRkaGlzdCBjYWxlbmRhcgorICovCitwdWJsaWMgY2xhc3MgQnVkZGhpc3RDYWxlbmRhclN5bWJvbHNfdGggZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNvcHlyaWdodCA9ICJDb3B5cmlnaHQgXHUwMGE5IDE5OTggSUJNIENvcnAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIjsKKworICAgIHN0YXRpYyBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAiRXJhcyIsIG5ldyBTdHJpbmdbXSB7CisgICAgICAgICAgICAgICAgIlx1MGUxZS5cdTBlMjguIgorICAgICAgICAgICAgfSB9LAorICAgIH07CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBmQ29udGVudHM7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0NhbGVuZGFyRGF0YS5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQ2FsZW5kYXJEYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZWZmOWFiZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0NhbGVuZGFyRGF0YS5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK3BhY2thZ2UgY29tLmlibS51dGlsLnJlc291cmNlczsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvLyBEZWZhdWx0CitwdWJsaWMgY2xhc3MgQ2FsZW5kYXJEYXRhIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgTGlzdFJlc291cmNlQnVuZGxlCisgICAgICovCisgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7CisgICAgICAgICAgICB7ICJXZWVrZW5kIiwKKyAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAvLyBTYXR1cmRheTpTdW5kYXkKKyAgICAgICAgICAgICAgICAgICAgIjciLCAiMCIsIC8vIG9uc2V0IGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgICAgICAiMiIsICIwIiAgLy8gY2Vhc2UgZG93LCBtaWxsaXMgaW4gZGF5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9DYWxlbmRhckRhdGFfYXJfQUUuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0NhbGVuZGFyRGF0YV9hcl9BRS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFkYzBlMTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9DYWxlbmRhckRhdGFfYXJfQUUuamF2YQpAQCAtMCwwICsxLDE5IEBACitwYWNrYWdlIGNvbS5pYm0udXRpbC5yZXNvdXJjZXM7CitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLy8gQXJhYmljLCBVbml0ZWQgQXJhYiBFbWlyYXRlcworcHVibGljIGNsYXNzIENhbGVuZGFyRGF0YV9hcl9BRSBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIExpc3RSZXNvdXJjZUJ1bmRsZQorICAgICAqLworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdW10geworICAgICAgICAgICAgeyAiV2Vla2VuZCIsCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgLy8gVGh1cnNkYXk6RnJpZGF5CisgICAgICAgICAgICAgICAgICAgICI1IiwgIjAiLCAvLyBvbnNldCBkb3csIG1pbGxpcyBpbiBkYXkKKyAgICAgICAgICAgICAgICAgICAgIjciLCAiMCIgIC8vIGNlYXNlIGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQ2FsZW5kYXJEYXRhX2FyX0JILmphdmEgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9DYWxlbmRhckRhdGFfYXJfQkguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yMDdiMWExCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQ2FsZW5kYXJEYXRhX2FyX0JILmphdmEKQEAgLTAsMCArMSwxOSBAQAorcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8vIEFyYWJpYywgQmFocmFpbgorcHVibGljIGNsYXNzIENhbGVuZGFyRGF0YV9hcl9CSCBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIExpc3RSZXNvdXJjZUJ1bmRsZQorICAgICAqLworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdW10geworICAgICAgICAgICAgeyAiV2Vla2VuZCIsCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgLy8gVGh1cnNkYXk6RnJpZGF5CisgICAgICAgICAgICAgICAgICAgICI1IiwgIjAiLCAvLyBvbnNldCBkb3csIG1pbGxpcyBpbiBkYXkKKyAgICAgICAgICAgICAgICAgICAgIjciLCAiMCIgIC8vIGNlYXNlIGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQ2FsZW5kYXJEYXRhX2FyX0RaLmphdmEgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9DYWxlbmRhckRhdGFfYXJfRFouamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MDkzN2I4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQ2FsZW5kYXJEYXRhX2FyX0RaLmphdmEKQEAgLTAsMCArMSwxOSBAQAorcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8vIEFyYWJpYywgQWxnZXJpYQorcHVibGljIGNsYXNzIENhbGVuZGFyRGF0YV9hcl9EWiBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIExpc3RSZXNvdXJjZUJ1bmRsZQorICAgICAqLworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdW10geworICAgICAgICAgICAgeyAiV2Vla2VuZCIsCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgLy8gVGh1cnNkYXk6RnJpZGF5CisgICAgICAgICAgICAgICAgICAgICI1IiwgIjAiLCAvLyBvbnNldCBkb3csIG1pbGxpcyBpbiBkYXkKKyAgICAgICAgICAgICAgICAgICAgIjciLCAiMCIgIC8vIGNlYXNlIGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQ2FsZW5kYXJEYXRhX2FyX0VHLmphdmEgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9DYWxlbmRhckRhdGFfYXJfRUcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44NDNmMWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQ2FsZW5kYXJEYXRhX2FyX0VHLmphdmEKQEAgLTAsMCArMSwxOSBAQAorcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8vIEFyYWJpYywgRWd5cHQKK3B1YmxpYyBjbGFzcyBDYWxlbmRhckRhdGFfYXJfRUcgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBMaXN0UmVzb3VyY2VCdW5kbGUKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXVtdIHsKKyAgICAgICAgICAgIHsgIldlZWtlbmQiLAorICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7IC8vIEZyaWRheTpTYXR1cmRheQorICAgICAgICAgICAgICAgICAgICAiNiIsICIwIiwgLy8gb25zZXQgZG93LCBtaWxsaXMgaW4gZGF5CisgICAgICAgICAgICAgICAgICAgICIxIiwgIjAiICAvLyBjZWFzZSBkb3csIG1pbGxpcyBpbiBkYXkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICB9OworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0NhbGVuZGFyRGF0YV9hcl9KTy5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQ2FsZW5kYXJEYXRhX2FyX0pPLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzI0NDM1NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0NhbGVuZGFyRGF0YV9hcl9KTy5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK3BhY2thZ2UgY29tLmlibS51dGlsLnJlc291cmNlczsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvLyBBcmFiaWMsIEpvcmRhbgorcHVibGljIGNsYXNzIENhbGVuZGFyRGF0YV9hcl9KTyBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIExpc3RSZXNvdXJjZUJ1bmRsZQorICAgICAqLworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdW10geworICAgICAgICAgICAgeyAiV2Vla2VuZCIsCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgLy8gVGh1cnNkYXk6RnJpZGF5CisgICAgICAgICAgICAgICAgICAgICI1IiwgIjAiLCAvLyBvbnNldCBkb3csIG1pbGxpcyBpbiBkYXkKKyAgICAgICAgICAgICAgICAgICAgIjciLCAiMCIgIC8vIGNlYXNlIGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQ2FsZW5kYXJEYXRhX2FyX0tXLmphdmEgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9DYWxlbmRhckRhdGFfYXJfS1cuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yZDk5ZDgzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQ2FsZW5kYXJEYXRhX2FyX0tXLmphdmEKQEAgLTAsMCArMSwxOSBAQAorcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8vIEFyYWJpYywgS3V3YWl0CitwdWJsaWMgY2xhc3MgQ2FsZW5kYXJEYXRhX2FyX0tXIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgTGlzdFJlc291cmNlQnVuZGxlCisgICAgICovCisgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7CisgICAgICAgICAgICB7ICJXZWVrZW5kIiwKKyAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAvLyBUaHVyc2RheTpGcmlkYXkKKyAgICAgICAgICAgICAgICAgICAgIjUiLCAiMCIsIC8vIG9uc2V0IGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgICAgICAiNyIsICIwIiAgLy8gY2Vhc2UgZG93LCBtaWxsaXMgaW4gZGF5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9DYWxlbmRhckRhdGFfYXJfT00uamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0NhbGVuZGFyRGF0YV9hcl9PTS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmUxZDhhODUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9DYWxlbmRhckRhdGFfYXJfT00uamF2YQpAQCAtMCwwICsxLDE5IEBACitwYWNrYWdlIGNvbS5pYm0udXRpbC5yZXNvdXJjZXM7CitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLy8gQXJhYmljLCBPbWFuCitwdWJsaWMgY2xhc3MgQ2FsZW5kYXJEYXRhX2FyX09NIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgTGlzdFJlc291cmNlQnVuZGxlCisgICAgICovCisgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7CisgICAgICAgICAgICB7ICJXZWVrZW5kIiwKKyAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAvLyBUaHVyc2RheTpGcmlkYXkKKyAgICAgICAgICAgICAgICAgICAgIjUiLCAiMCIsIC8vIG9uc2V0IGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgICAgICAiNyIsICIwIiAgLy8gY2Vhc2UgZG93LCBtaWxsaXMgaW4gZGF5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9DYWxlbmRhckRhdGFfYXJfUUEuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0NhbGVuZGFyRGF0YV9hcl9RQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA2MzYxNWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9DYWxlbmRhckRhdGFfYXJfUUEuamF2YQpAQCAtMCwwICsxLDE5IEBACitwYWNrYWdlIGNvbS5pYm0udXRpbC5yZXNvdXJjZXM7CitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLy8gQXJhYmljLCBRYXRhcgorcHVibGljIGNsYXNzIENhbGVuZGFyRGF0YV9hcl9RQSBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIExpc3RSZXNvdXJjZUJ1bmRsZQorICAgICAqLworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdW10geworICAgICAgICAgICAgeyAiV2Vla2VuZCIsCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgLy8gVGh1cnNkYXk6RnJpZGF5CisgICAgICAgICAgICAgICAgICAgICI1IiwgIjAiLCAvLyBvbnNldCBkb3csIG1pbGxpcyBpbiBkYXkKKyAgICAgICAgICAgICAgICAgICAgIjciLCAiMCIgIC8vIGNlYXNlIGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQ2FsZW5kYXJEYXRhX2FyX1NBLmphdmEgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9DYWxlbmRhckRhdGFfYXJfU0EuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41Y2I1MjgzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQ2FsZW5kYXJEYXRhX2FyX1NBLmphdmEKQEAgLTAsMCArMSwxOSBAQAorcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8vIEFyYWJpYywgU2F1ZGkgQXJhYmlhCitwdWJsaWMgY2xhc3MgQ2FsZW5kYXJEYXRhX2FyX1NBIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICAvKioKKyAgICAgKiBPdmVycmlkZXMgTGlzdFJlc291cmNlQnVuZGxlCisgICAgICovCisgICAgcHVibGljIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBuZXcgT2JqZWN0W11bXSB7CisgICAgICAgICAgICB7ICJXZWVrZW5kIiwKKyAgICAgICAgICAgICAgICBuZXcgU3RyaW5nW10geyAvLyBUaHVyc2RheTpGcmlkYXkKKyAgICAgICAgICAgICAgICAgICAgIjUiLCAiMCIsIC8vIG9uc2V0IGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgICAgICAiNyIsICIwIiAgLy8gY2Vhc2UgZG93LCBtaWxsaXMgaW4gZGF5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9DYWxlbmRhckRhdGFfYXJfU1kuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0NhbGVuZGFyRGF0YV9hcl9TWS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjk3MjQyZjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9DYWxlbmRhckRhdGFfYXJfU1kuamF2YQpAQCAtMCwwICsxLDE5IEBACitwYWNrYWdlIGNvbS5pYm0udXRpbC5yZXNvdXJjZXM7CitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLy8gQXJhYmljLCBTeXJpYQorcHVibGljIGNsYXNzIENhbGVuZGFyRGF0YV9hcl9TWSBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIExpc3RSZXNvdXJjZUJ1bmRsZQorICAgICAqLworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdW10geworICAgICAgICAgICAgeyAiV2Vla2VuZCIsCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgLy8gRnJpZGF5OlNhdHVyZGF5CisgICAgICAgICAgICAgICAgICAgICI2IiwgIjAiLCAvLyBvbnNldCBkb3csIG1pbGxpcyBpbiBkYXkKKyAgICAgICAgICAgICAgICAgICAgIjEiLCAiMCIgIC8vIGNlYXNlIGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQ2FsZW5kYXJEYXRhX2FyX1lFLmphdmEgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9DYWxlbmRhckRhdGFfYXJfWUUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jMTFlNTE5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQ2FsZW5kYXJEYXRhX2FyX1lFLmphdmEKQEAgLTAsMCArMSwxOSBAQAorcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8vIEFyYWJpYywgWWVtZW4KK3B1YmxpYyBjbGFzcyBDYWxlbmRhckRhdGFfYXJfWUUgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBMaXN0UmVzb3VyY2VCdW5kbGUKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXVtdIHsKKyAgICAgICAgICAgIHsgIldlZWtlbmQiLAorICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7IC8vIFRodXJzZGF5OkZyaWRheQorICAgICAgICAgICAgICAgICAgICAiNSIsICIwIiwgLy8gb25zZXQgZG93LCBtaWxsaXMgaW4gZGF5CisgICAgICAgICAgICAgICAgICAgICI3IiwgIjAiICAvLyBjZWFzZSBkb3csIG1pbGxpcyBpbiBkYXkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICB9OworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0NhbGVuZGFyRGF0YV9pd19JTC5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQ2FsZW5kYXJEYXRhX2l3X0lMLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZGY1MDVlZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0NhbGVuZGFyRGF0YV9pd19JTC5qYXZhCkBAIC0wLDAgKzEsMTkgQEAKK3BhY2thZ2UgY29tLmlibS51dGlsLnJlc291cmNlczsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvLyBIZWJyZXcsIElzcmFlbAorcHVibGljIGNsYXNzIENhbGVuZGFyRGF0YV9pd19JTCBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIExpc3RSZXNvdXJjZUJ1bmRsZQorICAgICAqLworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdW10geworICAgICAgICAgICAgeyAiV2Vla2VuZCIsCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgLy8gRnJpZGF5OlNhdHVyZGF5CisgICAgICAgICAgICAgICAgICAgICI2IiwgIjAiLCAvLyBvbnNldCBkb3csIG1pbGxpcyBpbiBkYXkKKyAgICAgICAgICAgICAgICAgICAgIjEiLCAiMCIgIC8vIGNlYXNlIGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQ2FsZW5kYXJEYXRhX21zX01ZLmphdmEgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9DYWxlbmRhckRhdGFfbXNfTVkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42MDBmMzE1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQ2FsZW5kYXJEYXRhX21zX01ZLmphdmEKQEAgLTAsMCArMSwxOSBAQAorcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8vIEJhaGFzYSBNYWxheXNpYSwgTWFsYXlzaWEKK3B1YmxpYyBjbGFzcyBDYWxlbmRhckRhdGFfbXNfTVkgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIC8qKgorICAgICAqIE92ZXJyaWRlcyBMaXN0UmVzb3VyY2VCdW5kbGUKKyAgICAgKi8KKyAgICBwdWJsaWMgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBPYmplY3RbXVtdIHsKKyAgICAgICAgICAgIHsgIldlZWtlbmQiLAorICAgICAgICAgICAgICAgIG5ldyBTdHJpbmdbXSB7IC8vIFNhdHVyZGF5IC0gaGFsZiBkYXkgaW4gc29tZSBvZmZpY2VzOlN1bmRheQorICAgICAgICAgICAgICAgICAgICAiIiwgIjAiLCAvLyBvbnNldCBkb3csIG1pbGxpcyBpbiBkYXkKKyAgICAgICAgICAgICAgICAgICAgIiIsICIwIiAgLy8gY2Vhc2UgZG93LCBtaWxsaXMgaW4gZGF5CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgfTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9DYWxlbmRhckRhdGFfdGVfSU4uamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0NhbGVuZGFyRGF0YV90ZV9JTi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmI3MDYzNWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9DYWxlbmRhckRhdGFfdGVfSU4uamF2YQpAQCAtMCwwICsxLDE5IEBACitwYWNrYWdlIGNvbS5pYm0udXRpbC5yZXNvdXJjZXM7CitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLy8gVGVsdWd1LCBJbmRpYQorcHVibGljIGNsYXNzIENhbGVuZGFyRGF0YV90ZV9JTiBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgLyoqCisgICAgICogT3ZlcnJpZGVzIExpc3RSZXNvdXJjZUJ1bmRsZQorICAgICAqLworICAgIHB1YmxpYyBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gbmV3IE9iamVjdFtdW10geworICAgICAgICAgICAgeyAiV2Vla2VuZCIsCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsgLy8gU3VuZGF5CisgICAgICAgICAgICAgICAgICAgICIxIiwgIjAiLCAvLyBvbnNldCBkb3csIG1pbGxpcyBpbiBkYXkKKyAgICAgICAgICAgICAgICAgICAgIjIiLCAiMCIgIC8vIGNlYXNlIGRvdywgbWlsbGlzIGluIGRheQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgIH07CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQ2hpbmVzZUNhbGVuZGFyU3ltYm9scy5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQ2hpbmVzZUNhbGVuZGFyU3ltYm9scy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQ4N2Q1ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9DaGluZXNlQ2FsZW5kYXJTeW1ib2xzLmphdmEKQEAgLTAsMCArMSwzNSBAQAorcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8qKgorICogRGVmYXVsdCBEYXRlIEZvcm1hdCBzeW1ib2xzIGZvciB0aGUgQ2hpbmVzZSBjYWxlbmRhci4KKyAqLworcHVibGljIGNsYXNzIENoaW5lc2VDYWxlbmRhclN5bWJvbHMgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworCisgICAgc3RhdGljIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICJJc0xlYXBNb250aCIsCisgICAgICAgICAgICBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgICAgICIiLAorICAgICAgICAgICAgICAgICIqIgorICAgICAgICAgICAgfSwKKyAgICAgICAgfSwKKyAgICAgICAgeyAiRGF0ZVRpbWVQYXR0ZXJucyIsCisgICAgICAgICAgICBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgICAgICJoOm1tOnNzIGEgeiIsIC8vIGZ1bGwgdGltZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgImg6bW06c3MgYSB6IiwgLy8gbG9uZyB0aW1lIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAiaDptbTpzcyBhIiwgLy8gbWVkaXVtIHRpbWUgcGF0dGVybgorICAgICAgICAgICAgICAgICJoOm1tIGEiLCAvLyBzaG9ydCB0aW1lIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAvLyBUT0RPIEZpeCB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgIkVFRUUgeSd4J0ctTWwtZCIsIC8vIGZ1bGwgZGF0ZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgInkneCdHLU1sLWQiLCAvLyBsb25nIGRhdGUgcGF0dGVybgorICAgICAgICAgICAgICAgICJ5J3gnRy1NbC1kIiwgLy8gbWVkaXVtIGRhdGUgcGF0dGVybgorICAgICAgICAgICAgICAgICJ5J3gnRy1NbC1kIiwgLy8gc2hvcnQgZGF0ZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgInsxfSB7MH0iIC8vIGRhdGUtdGltZSBwYXR0ZXJuCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgfTsKKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGZDb250ZW50czsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9IZWJyZXdDYWxlbmRhclN5bWJvbHMuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hlYnJld0NhbGVuZGFyU3ltYm9scy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjkzZmU0MDAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9IZWJyZXdDYWxlbmRhclN5bWJvbHMuamF2YQpAQCAtMCwwICsxLDQ4IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9BdHRpYy9IZWJyZXdDYWxlbmRhclN5bWJvbHMuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wOS8xOSAxODozNzozNiAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udXRpbC5yZXNvdXJjZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIERlZmF1bHQgRGF0ZSBGb3JtYXQgc3ltYm9scyBmb3IgdGhlIEhlYnJldyBDYWxlbmRhcgorICovCitwdWJsaWMgY2xhc3MgSGVicmV3Q2FsZW5kYXJTeW1ib2xzIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IFx1MDBhOSAxOTk4IElCTSBDb3JwLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICBzdGF0aWMgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgIk1vbnRoTmFtZXMiLCBuZXcgU3RyaW5nW10geyAKKyAgICAgICAgICAgICAgICAiVGlzaHJpIiwKKyAgICAgICAgICAgICAgICAiSGVzaHZhbiIsCisgICAgICAgICAgICAgICAgIktpc2xldiIsCisgICAgICAgICAgICAgICAgIlRldmV0IiwKKyAgICAgICAgICAgICAgICAiU2hldmF0IiwKKyAgICAgICAgICAgICAgICAiQWRhciBJIiwgICAgICAgLy8gTGVhcCB5ZWFycyBvbmx5CisgICAgICAgICAgICAgICAgIkFkYXIiLAorICAgICAgICAgICAgICAgICJOaXNhbiIsCisgICAgICAgICAgICAgICAgIkl5YXIiLAorICAgICAgICAgICAgICAgICJTaXZhbiIsCisgICAgICAgICAgICAgICAgIlRhbXV6IiwKKyAgICAgICAgICAgICAgICAiQXYiLAorICAgICAgICAgICAgICAgICJFbHVsIiwKKyAgICAgICAgICAgIH0gfSwKKyAgICAgICAgeyAiRXJhcyIsIG5ldyBTdHJpbmdbXSB7IAorICAgICAgICAgICAgICAgICJBTSIKKyAgICAgICAgICAgIH0gfSwKKyAgICB9OworICAgICAgICAKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBmQ29udGVudHM7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hlYnJld0NhbGVuZGFyU3ltYm9sc19maS5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSGVicmV3Q2FsZW5kYXJTeW1ib2xzX2ZpLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjMyZGExMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hlYnJld0NhbGVuZGFyU3ltYm9sc19maS5qYXZhCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0F0dGljL0hlYnJld0NhbGVuZGFyU3ltYm9sc19maS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA5LzE5IDE4OjM3OjM2ICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS51dGlsLnJlc291cmNlczsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8qKgorICogRmlubmlzaCBkYXRlIGZvcm1hdCBzeW1ib2xzIGZvciB0aGUgSGVicmV3IENhbGVuZGFyCisgKi8KK3B1YmxpYyBjbGFzcyBIZWJyZXdDYWxlbmRhclN5bWJvbHNfZmkgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNvcHlyaWdodCA9ICJDb3B5cmlnaHQgXHUwMGE5IDE5OTggSUJNIENvcnAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIjsKKworICAgIHN0YXRpYyBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAiTmFtZSIsICAgICAgICJKdXV0YWxhaW5lbiBrYWxlbnRlcmkiIH0sCisgICAgICAgIAorICAgICAgICB7ICJNb250aE5hbWVzIiwgbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICAgICAiVGlcdTAxNjFyXHUwMEVDa3V1IiwgICAgICAgLy8gVGlzaHJpCisgICAgICAgICAgICAgICAgIkhlXHUwMTYxdlx1MDBFMW5rdXUiLCAgICAgIC8vIEhlc2h2YW4KKyAgICAgICAgICAgICAgICAiS2lzbFx1MDBFOXZrdXUiLCAgICAgICAgICAgLy8gS2lzbGV2CisgICAgICAgICAgICAgICAgIlRldlx1MDBFOXRrdXUiLCAgICAgICAgICAgIC8vIFRldmV0CisgICAgICAgICAgICAgICAgIlx1MDE2MGV2YXRrdXUiLCAgICAgICAgICAgIC8vIFNoZXZhdAorICAgICAgICAgICAgICAgICJBZFx1MDBFMXJrdXUiLCAgICAgICAgICAgICAvLyBBZGFyIEkKKyAgICAgICAgICAgICAgICAiQWRcdTAwRTFya3V1IElJIiwgICAgICAgICAgLy8gQWRhcgorICAgICAgICAgICAgICAgICJOaXNcdTAwRTFua3V1IiwgICAgICAgICAgICAvLyBOaXNhbgorICAgICAgICAgICAgICAgICJJampcdTAwRTFya3V1IiwgICAgICAgICAgICAvLyBJeWFyCisgICAgICAgICAgICAgICAgIlNpdlx1MDBFMW5rdXUiLCAgICAgICAgICAgIC8vIFNpdmFuCisgICAgICAgICAgICAgICAgIlRhbW1cdTAwRkF6a3V1IiwgICAgICAgICAgIC8vIFRhbXV6CisgICAgICAgICAgICAgICAgIkFia3V1IiwgICAgICAgICAgICAgICAgICAgIC8vIEF2CisgICAgICAgICAgICAgICAgIkVsXHUwMEZBbGt1dSIsICAgICAgICAgICAgIC8vIEVsdWwKKyAgICAgICAgICAgIH0gfSwKKworICAgICAgICB7ICJFcmFzIiwgbmV3IFN0cmluZ1tdIHsgCisgICAgICAgICAgICAgICAgIkFNIiAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFubm8gTXVuZGkKKyAgICAgICAgICAgIH0gfSwKKyAgICB9OworCisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gZkNvbnRlbnRzOworICAgIH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9IZWJyZXdDYWxlbmRhclN5bWJvbHNfZnIuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hlYnJld0NhbGVuZGFyU3ltYm9sc19mci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmU0ZmNlYjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9IZWJyZXdDYWxlbmRhclN5bWJvbHNfZnIuamF2YQpAQCAtMCwwICsxLDQ4IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9BdHRpYy9IZWJyZXdDYWxlbmRhclN5bWJvbHNfZnIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wOS8xOSAxODozNzozNiAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udXRpbC5yZXNvdXJjZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIEZyZW5jaCBkYXRlIGZvcm1hdCBzeW1ib2xzIGZvciB0aGUgSGVicmV3IENhbGVuZGFyLgorICogVGhpcyBkYXRhIGFjdHVhbGx5IGFwcGxpZXMgdG8gRnJlbmNoIENhbmFkaWFuLiAgSWYgd2UgcmVjZWl2ZQorICogb2ZmaWNpYWwgRnJlbmNoIGRhdGEgZnJvbSBvdXIgRnJhbmNlIG9mZmljZSwgd2Ugc2hvdWxkIG1vdmUgdGhlIAorICogRnJlbmNoIENhbmFkaWFuIGRhdGEgKGlmIGl0J3MgZGlmZmVyZW50KSBkb3duIGludG8gX2ZyX0NBCisgKi8KK3B1YmxpYyBjbGFzcyBIZWJyZXdDYWxlbmRhclN5bWJvbHNfZnIgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNvcHlyaWdodCA9ICJDb3B5cmlnaHQgXHUwMGE5IDE5OTggSUJNIENvcnAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIjsKKworICAgIHN0YXRpYyBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAiTW9udGhOYW1lcyIsIG5ldyBTdHJpbmdbXSB7CisgICAgICAgICAgICAgICAgIlRpc3NlcmkiLCAgICAgIC8vIFRpc2hyaQorICAgICAgICAgICAgICAgICJIZXN2YW4iLCAgICAgICAvLyBIZXNodmFuCisgICAgICAgICAgICAgICAgIktpc2xldiIsICAgICAgIC8vIEtpc2xldgorICAgICAgICAgICAgICAgICJUXHUwMGU5YmV0aCIsICAvLyBUZXZldAorICAgICAgICAgICAgICAgICJTY2hcdTAwZTliYXQiLCAvLyBTaGV2YXQKKyAgICAgICAgICAgICAgICAiQWRhciIsICAgICAgICAgLy8gQWRhciBJCisgICAgICAgICAgICAgICAgIkFkYXIgSUkiLCAgICAgIC8vIEFkYXIKKyAgICAgICAgICAgICAgICAiTmlzc2FuIiwgICAgICAgLy8gTmlzYW4KKyAgICAgICAgICAgICAgICAiSXlhciIsICAgICAgICAgLy8gSXlhcgorICAgICAgICAgICAgICAgICJTaXZhbiIsICAgICAgICAvLyBTaXZhbgorICAgICAgICAgICAgICAgICJUYW1vdXoiLCAgICAgICAvLyBUYW11egorICAgICAgICAgICAgICAgICJBYiIsICAgICAgICAgICAvLyBBdgorICAgICAgICAgICAgICAgICJFbGxvdWwiLCAgICAgICAvLyBFbHVsCisgICAgICAgICAgICB9IH0sCisgICAgfTsKKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGZDb250ZW50czsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSGVicmV3Q2FsZW5kYXJTeW1ib2xzX2h1LmphdmEgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9IZWJyZXdDYWxlbmRhclN5bWJvbHNfaHUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lZDA4N2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSGVicmV3Q2FsZW5kYXJTeW1ib2xzX2h1LmphdmEKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQXR0aWMvSGVicmV3Q2FsZW5kYXJTeW1ib2xzX2h1LmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDkvMTkgMTg6Mzc6MzYgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLyoqCisgKiBIdW5nYXJpYW4gZGF0ZSBmb3JtYXQgc3ltYm9scyBmb3IgdGhlIEhlYnJldyBDYWxlbmRhcgorICovCitwdWJsaWMgY2xhc3MgSGVicmV3Q2FsZW5kYXJTeW1ib2xzX2h1IGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IFx1MDBhOSAxOTk4IElCTSBDb3JwLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICBzdGF0aWMgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgIk1vbnRoTmFtZXMiLCBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgICAgICJUaXNyaSIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGlzaHJpCisgICAgICAgICAgICAgICAgIkhlc3ZcdTAwRTFuIiwgICAgICAgICAgICAgICAgICAvLyBIZXNodmFuCisgICAgICAgICAgICAgICAgIktpc3psXHUwMEU5diIsICAgICAgICAgICAgICAgICAvLyBLaXNsZXYKKyAgICAgICAgICAgICAgICAiVFx1MDBFOXZcdTAwRTlzeiIsICAgICAgICAgICAgIC8vIFRldmV0CisgICAgICAgICAgICAgICAgIlN2XHUwMEUxdCIsICAgICAgICAgICAgICAgICAgICAvLyBTaGV2YXQKKyAgICAgICAgICAgICAgICAiXHUwMEMxZFx1MDBFMXIgcmlzXHUwMEYzbiIsICAgIC8vIEFkYXIgSQorICAgICAgICAgICAgICAgICJcdTAwQzFkXHUwMEUxciBzXHUwMEU5bmkiLCAgICAgLy8gQWRhcgorICAgICAgICAgICAgICAgICJOaXN6XHUwMEUxbiIsICAgICAgICAgICAgICAgICAgLy8gTmlzYW4KKyAgICAgICAgICAgICAgICAiSWpcdTAwRTFyIiwgICAgICAgICAgICAgICAgICAgIC8vIEl5YXIKKyAgICAgICAgICAgICAgICAiU3ppdlx1MDBFMW4iLCAgICAgICAgICAgICAgICAgIC8vIFNpdmFuCisgICAgICAgICAgICAgICAgIlRhbXV6IiwgICAgICAgICAgICAgICAgICAgICAgICAvLyBUYW11egorICAgICAgICAgICAgICAgICJcdTAwQzF2IiwgICAgICAgICAgICAgICAgICAgICAgLy8gQXYKKyAgICAgICAgICAgICAgICAiRWx1bCIsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEVsdWwKKyAgICAgICAgICAgIH0gfSwKKyAgICAgICAgeyAiRXJhcyIsIG5ldyBTdHJpbmdbXSB7CisgICAgICAgICAgICAgICAgIlRcdTAwQzkiCisgICAgICAgICAgICB9IH0sCisgICAgfTsKKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGZDb250ZW50czsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSGVicmV3Q2FsZW5kYXJTeW1ib2xzX2l3LmphdmEgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9IZWJyZXdDYWxlbmRhclN5bWJvbHNfaXcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43MTY4OTIxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSGVicmV3Q2FsZW5kYXJTeW1ib2xzX2l3LmphdmEKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQXR0aWMvSGVicmV3Q2FsZW5kYXJTeW1ib2xzX2l3LmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDkvMTkgMTg6Mzc6MzYgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLyoqCisgKiBIZWJyZXctbGFuZ3VhZ2UgZGF0ZSBmb3JtYXQgc3ltYm9scyBmb3IgdGhlIEhlYnJldyBDYWxlbmRhcgorICovCitwdWJsaWMgY2xhc3MgSGVicmV3Q2FsZW5kYXJTeW1ib2xzX2l3IGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IFx1MDBhOSAxOTk4IElCTSBDb3JwLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICBzdGF0aWMgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgIk1vbnRoTmFtZXMiLCBuZXcgU3RyaW5nW10geyAKKyAgICAgICAgICAgICAgICAiXHUwNUVBXHUwNUU5XHUwNUU4XHUwNUQ5IiwgICAgICAgICAgICAgICAgIC8vIFRpc2hyaQorICAgICAgICAgICAgICAgICJcdTA1RDdcdTA1RTlcdTA1RDVcdTA1REYiLCAgICAgICAgICAgICAgICAgLy8gSGVzaHZhbgorICAgICAgICAgICAgICAgICJcdTA1REJcdTA1RTFcdTA1RENcdTA1RDUiLCAgICAgICAgICAgICAgICAgLy8gS2lzbGV2CisgICAgICAgICAgICAgICAgIlx1MDVEOFx1MDVEMVx1MDVFQSIsICAgICAgICAgICAgICAgICAgICAgICAvLyBUZXZldAorICAgICAgICAgICAgICAgICJcdTA1RTlcdTA1RDFcdTA1RDgiLCAgICAgICAgICAgICAgICAgICAgICAgLy8gU2hldmF0CisgICAgICAgICAgICAgICAgIlx1MDVFOVx1MDVEMVx1MDVEOCIsICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGFyIEkKKyAgICAgICAgICAgICAgICAiXHUwNUQwXHUwNUQzXHUwNUU4IFx1MDVFOVx1MDVFMFx1MDVEOSIsICAgIC8vIEFkYXIKKyAgICAgICAgICAgICAgICAiXHUwNUUwXHUwNUQ5XHUwNUUxXHUwNURGIiwgICAgICAgICAgICAgICAgIC8vIE5pc2FuCisgICAgICAgICAgICAgICAgIlx1MDVEMFx1MDVEOVx1MDVEOVx1MDVFOCIsICAgICAgICAgICAgICAgICAvLyBJeWFyCisgICAgICAgICAgICAgICAgIlx1MDVFMVx1MDVEOVx1MDVENVx1MDVERiIsICAgICAgICAgICAgICAgICAvLyBTaXZhbgorICAgICAgICAgICAgICAgICJcdTA1RUFcdTA1REVcdTA1RDVcdTA1RDYiLCAgICAgICAgICAgICAgICAgLy8gVGFtdXoKKyAgICAgICAgICAgICAgICAiXHUwNUQwXHUwNUQxIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEF2CisgICAgICAgICAgICAgICAgIlx1MDVEMFx1MDVEQ1x1MDVENVx1MDVEQyIsICAgICAgICAgICAgICAgICAvLyBFbHVsCisgICAgICAgICAgICB9IH0sCisgICAgICAgIHsgIkVyYXMiLCBuZXcgU3RyaW5nW10geyAKKyAgICAgICAgICAgICAgICAiXHUwNURDXHUwNUQxXHUwNUQ0XDA0Mlx1MDVFMiIKKyAgICAgICAgICAgIH0gfSwKKyAgICB9OworICAgICAgICAKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBmQ29udGVudHM7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hlYnJld0NhbGVuZGFyU3ltYm9sc19ubC5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSGVicmV3Q2FsZW5kYXJTeW1ib2xzX25sLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjA5MDFlMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hlYnJld0NhbGVuZGFyU3ltYm9sc19ubC5qYXZhCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0F0dGljL0hlYnJld0NhbGVuZGFyU3ltYm9sc19ubC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA5LzE5IDE4OjM3OjM2ICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS51dGlsLnJlc291cmNlczsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8qKgorICogRHV0Y2ggZGF0ZSBmb3JtYXQgc3ltYm9scyBmb3IgdGhlIEhlYnJldyBDYWxlbmRhcgorICovCitwdWJsaWMgY2xhc3MgSGVicmV3Q2FsZW5kYXJTeW1ib2xzX25sIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IFx1MDBhOSAxOTk4IElCTSBDb3JwLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICBzdGF0aWMgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgIk1vbnRoTmFtZXMiLCBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgICAgICJUaXNqcmllIiwgICAgICAvLyBUaXNocmkKKyAgICAgICAgICAgICAgICAiQ2hlc2p3YW4iLCAgICAgLy8gSGVzaHZhbgorICAgICAgICAgICAgICAgICJLaXNsZXYiLCAgICAgICAvLyBLaXNsZXYKKyAgICAgICAgICAgICAgICAiVGV2ZXQiLCAgICAgICAgLy8gVGV2ZXQKKyAgICAgICAgICAgICAgICAiU2pldmF0IiwgICAgICAgLy8gU2hldmF0CisgICAgICAgICAgICAgICAgIkFkYXIiLCAgICAgICAgIC8vIEFkYXIgSQorICAgICAgICAgICAgICAgICJBZGFyIEIiLCAgICAgICAvLyBBZGFyCisgICAgICAgICAgICAgICAgIk5pc2FuIiwgICAgICAgIC8vIE5pc2FuCisgICAgICAgICAgICAgICAgIklqYXIiLCAgICAgICAgIC8vIEl5YXIKKyAgICAgICAgICAgICAgICAiU2l2YW4iLCAgICAgICAgLy8gU2l2YW4KKyAgICAgICAgICAgICAgICAiVGFtbW9leiIsICAgICAgLy8gVGFtdXoKKyAgICAgICAgICAgICAgICAiQXYiLCAgICAgICAgICAgLy8gQXYKKyAgICAgICAgICAgICAgICAiRWxsb2VsIiwgICAgICAgLy8gRWx1bAorICAgICAgICAgICAgfSB9LAorICAgIH07CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBmQ29udGVudHM7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hvbGlkYXlCdW5kbGUuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hvbGlkYXlCdW5kbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43MTgwMzAyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZS5qYXZhCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0F0dGljL0hvbGlkYXlCdW5kbGUuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwNDoxODowMSAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS51dGlsLnJlc291cmNlczsKKworaW1wb3J0IGNvbS5pYm0udXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKK3B1YmxpYyBjbGFzcyBIb2xpZGF5QnVuZGxlIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIC8vIE5vcm1hbGx5LCBlYWNoIEhvbGlkYXlCdW5kbGUgdXNlcyB0aGUgaG9saWRheSdzIFVTIEVuZ2xpc2ggbmFtZQorICAgIC8vIGFzIHRoZSBzdHJpbmcga2V5IGZvciBsb29raW5nIHVwIHRoZSBsb2NhbGl6ZWQgbmFtZS4gIFRoaXMgbWVhbnMKKyAgICAvLyB0aGF0IHRoZSBrZXkgaXRzZWxmIGNhbiBiZSB1c2VkIGlmIG5vIG5hbWUgaXMgZm91bmQgZm9yIHRoZSByZXF1ZXN0ZWQKKyAgICAvLyBsb2NhbGUuCisgICAgLy8KKyAgICAvLyBGb3IgaG9saWRheXMgd2hlcmUgdGhlIGtleSBpcyBfbm90XyB0aGUgRW5nbGlzaCBuYW1lLCBlLmcuIGluIHRoZQorICAgIC8vIGNhc2Ugb2YgY29uZmxpY3RzLCB0aGUgRW5nbGlzaCBuYW1lIG11c3QgYmUgZ2l2ZW4gaGVyZS4KKyAgICAvLworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICAgIiIsICIiICB9LCAgICAgIC8vIENhbid0IGJlIGVtcHR5IQorICAgIH07CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7IHJldHVybiBmQ29udGVudHM7IH07CisKK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Ib2xpZGF5QnVuZGxlX2RhLmphdmEgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Ib2xpZGF5QnVuZGxlX2RhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWM4MWI1MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hvbGlkYXlCdW5kbGVfZGEuamF2YQpAQCAtMCwwICsxLDM4IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9BdHRpYy9Ib2xpZGF5QnVuZGxlX2RhLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDkvMjAgMjI6Mzc6NTQgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0udXRpbC5yZXNvdXJjZXM7CisKK2ltcG9ydCBjb20uaWJtLnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworcHVibGljIGNsYXNzIEhvbGlkYXlCdW5kbGVfZGEgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUKK3sKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9CisgICAgeworICAgICAgICB7ICAgIkFybWlzdGljZSBEYXkiLCAgICAgICAgInZcdTAwZTViZW5odmlsZSIgfSwKKyAgICAgICAgeyAgICJBc2NlbnNpb24iLCAgICAgICAgICAgICJoaW1tZWxmYXJ0IiB9LAorICAgICAgICB7ICAgIkJveGluZyBEYXkiLCAgICAgICAgICAgImFuZGVuIGp1bGVkYWciIH0sCisgICAgICAgIHsgICAiQ2hyaXN0bWFzIEV2ZSIsICAgICAgICAianVsZWFmdGVuIiB9LAorICAgICAgICB7ICAgIkVhc3RlciIsICAgICAgICAgICAgICAgInBcdTAwZTVza2UiIH0sCisgICAgICAgIHsgICAiRXBpcGhhbnkiLCAgICAgICAgICAgICAiaGVsbGlndHJla29uZ2Vyc2RhZyIgfSwKKyAgICAgICAgeyAgICJHb29kIEZyaWRheSIsICAgICAgICAgICJsYW5nZnJlZGFnIiB9LAorICAgICAgICB7ICAgIkhhbGxvd2VlbiIsICAgICAgICAgICAgImFsbGVoZWxnZW5zYWZ0ZW4iIH0sCisgICAgICAgIHsgICAiTWF1bmR5IFRodXJzZGF5IiwgICAgICAic2tcdTAwZTZydG9yc2RhZyIgfSwKKyAgICAgICAgeyAgICJQYWxtIFN1bmRheSIsICAgICAgICAgICJwYWxtZXNcdTAwZjhuZGFnIiB9LAorICAgICAgICB7ICAgIlBlbnRlY29zdCIsICAgICAgICAgICAgInBpbnNlIiB9LAorICAgICAgICB7ICAgIlNocm92ZSBUdWVzZGF5IiwgICAgICAgImh2aWRldGlyc2RhZyIgfSwKKyAgICB9OworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsgcmV0dXJuIGZDb250ZW50czsgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hvbGlkYXlCdW5kbGVfZGFfREsuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hvbGlkYXlCdW5kbGVfZGFfREsuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43YjRkODkwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9kYV9ESy5qYXZhCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0F0dGljL0hvbGlkYXlCdW5kbGVfZGFfREsuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwNDoxODowMiAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS51dGlsLnJlc291cmNlczsKKworaW1wb3J0IGNvbS5pYm0udXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCitwdWJsaWMgY2xhc3MgSG9saWRheUJ1bmRsZV9kYV9ESyBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZQoreworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIEhvbGlkYXlbXSBmSG9saWRheXMgPSB7CisgICAgICAgIFNpbXBsZUhvbGlkYXkuTkVXX1lFQVJTX0RBWSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuQVBSSUwsICAgMzAsIC1DYWxlbmRhci5GUklEQVksICJHZW5lcmFsIFByYXllciBEYXkiKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuSlVORSwgICAgNSwgICAgICAgICAgICAgICAgICAgICJDb25zdGl0dXRpb24gRGF5IiksCisgICAgICAgIFNpbXBsZUhvbGlkYXkuQ0hSSVNUTUFTX0VWRSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5DSFJJU1RNQVMsCisgICAgICAgIFNpbXBsZUhvbGlkYXkuQk9YSU5HX0RBWSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5ORVdfWUVBUlNfRVZFLAorCisgICAgICAgIC8vIEVhc3RlciBhbmQgcmVsYXRlZCBob2xpZGF5cworICAgICAgICBFYXN0ZXJIb2xpZGF5Lk1BVU5EWV9USFVSU0RBWSwKKyAgICAgICAgRWFzdGVySG9saWRheS5HT09EX0ZSSURBWSwKKyAgICAgICAgRWFzdGVySG9saWRheS5FQVNURVJfU1VOREFZLAorICAgICAgICBFYXN0ZXJIb2xpZGF5LkVBU1RFUl9NT05EQVksCisgICAgICAgIEVhc3RlckhvbGlkYXkuQVNDRU5TSU9OLAorICAgICAgICBFYXN0ZXJIb2xpZGF5LldISVRfTU9OREFZLAorICAgIH07CisKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAgICJob2xpZGF5cyIsICAgICAgICAgICAgIGZIb2xpZGF5cyB9LAorICAgIH07CisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeyByZXR1cm4gZkNvbnRlbnRzOyB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9kZS5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9kZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmU5NzIwYjEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Ib2xpZGF5QnVuZGxlX2RlLmphdmEKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQXR0aWMvSG9saWRheUJ1bmRsZV9kZS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA5LzIwIDIyOjM5OjEyICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworcHVibGljIGNsYXNzIEhvbGlkYXlCdW5kbGVfZGUgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICAgIkFsbCBTYWludHMnIERheSIsICAgICAgICAgICAgICAiQWxsZXJoZWlsaWdlbiIgfSwKKyAgICAgICAgeyAgICJBbGwgU291bHMnIERheSIsICAgICAgICAgICAgICAgIkFsbGVyc2VlbGVuIiB9LAorICAgICAgICB7ICAgIkFybWlzdGljZSBEYXkiLCAgICAgICAgICAgICAgICAiV2FmZmVuc3RpbGxzdGFuZHN0YWciIH0sCisgICAgICAgIHsgICAiQXNjZW5zaW9uIiwgICAgICAgICAgICAgICAgICAgICJDaHJpc3RpIEhpbW1lbGZhaHJ0IiB9LAorICAgICAgICB7ICAgIkFzaCBXZWRuZXNkYXkiLCAgICAgICAgICAgICAgICAiQXNjaGVybWl0dHdvY2giIH0sCisgICAgICAgIHsgICAiQXNzdW1wdGlvbiIsICAgICAgICAgICAgICAgICAgICJNYXJpXHUwMGU0IEhpbW1lbGZhaHJ0IiB9LAorICAgICAgICB7ICAgIkJveGluZyBEYXkiLCAgICAgICAgICAgICAgICAgICAiMi4gV2VpaG5hY2h0c3RhZyIgfSwKKyAgICAgICAgeyAgICJDYXJuaXZhbCIsICAgICAgICAgICAgICAgICAgICAgIkthcm5ldmFsIiB9LAorICAgICAgICB7ICAgIkNocmlzdG1hcyIsICAgICAgICAgICAgICAgICAgICAiV2VpaG5hY2h0c3RhZyIgfSwKKyAgICAgICAgeyAgICJDaXZpYyBIb2xpZGF5IiwgICAgICAgICAgICAgICAgIkJcdTAwZmNyZ2VyZmVpZXJ0YWciIH0sCisgICAgICAgIHsgICAiQ29uc3RpdHV0aW9uIERheSIsICAgICAgICAgICAgICJWZXJmYXNzdW5nc3RhZyIgfSwKKyAgICAgICAgeyAgICJDb3JwdXMgQ2hyaXN0aSIsICAgICAgICAgICAgICAgIkZyb25sZWljaG5hbSIgfSwKKyAgICAgICAgeyAgICJEYXkgb2YgUHJheWVyIGFuZCBSZXBlbnRhbmNlIiwgIkJ1XHUwMGRmLSB1bmQgQmV0dGFnIiB9LAorICAgICAgICB7ICAgIkVhc3RlciBNb25kYXkiLCAgICAgICAgICAgICAgICAiT3N0ZXJtb25udGFnIiB9LAorICAgICAgICB7ICAgIkVhc3RlciBTdW5kYXkiLCAgICAgICAgICAgICAgICAiT3N0ZXJzb25udGFnIiB9LAorICAgICAgICB7ICAgIkVwaXBoYW55IiwgICAgICAgICAgICAgICAgICAgICAiSGVpbGlnZSAzIEtcdTAwZjZuaWdlIiB9LAorICAgICAgICB7ICAgIkZhdGhlcidzIERheSIsICAgICAgICAgICAgICAgICAiVmF0ZXJ0YWciIH0sCisgICAgICAgIHsgICAiRmxhZyBEYXkiLCAgICAgICAgICAgICAgICAgICAgICJKYWhyZXN0YWcgZGVyIE5hdGlvbmFsZmxhZ2dlIiB9LAorICAgICAgICB7ICAgIkdlcm1hbiBVbml0eSBEYXkiLCAgICAgICAgICAgICAiVGFnIGRlciBkZXV0c2NoZW4gRWluaGVpdCIgfSwKKyAgICAgICAgeyAgICJHb29kIEZyaWRheSIsICAgICAgICAgICAgICAgICAgIkthcmZyZWl0YWciIH0sCisgICAgICAgIHsgICAiSGFsbG93ZWVuIiwgICAgICAgICAgICAgICAgICAgICJBYmVuZCB2b3IgQWxsZXJoZWlsaWdlbiIgfSwKKyAgICAgICAgeyAgICJJbW1hY3VsYXRlIENvbmNlcHRpb24iLCAgICAgICAgIk1hcmlcdTAwZTQgRW1wZlx1MDBlNG5nbmlzIiB9LAorICAgICAgICB7ICAgIkluZGVwZW5kZW5jZSBEYXkiLCAgICAgICAgICAgICAiVW5hYmhcdTAwZTRuZ2lna2VpdHN0YWciIH0sCisgICAgICAgIHsgICAiTGFib3IgRGF5IiwgICAgICAgICAgICAgICAgICAgICJUYWcgZGVyIEFyYmVpdCIgfSwKKyAgICAgICAgeyAgICJMaWJlcmF0aW9uIERheSIsICAgICAgICAgICAgICAgIkJlZnJlaXVuZ3N0YWciIH0sCisgICAgICAgIHsgICAiTWFyZGkgR3JhcyIsICAgICAgICAgICAgICAgICAgICJGYXNjaGluZ3NkaWVuc3RhZyIgfSwKKyAgICAgICAgeyAgICJNYXVuZHkgVGh1cnNkYXkiLCAgICAgICAgICAgICAgIkdyXHUwMGZjbmRvbm5lcnN0YWciIH0sCisgICAgICAgIHsgICAiTWF5IERheSIsICAgICAgICAgICAgICAgICAgICAgICJNYWlmZWllcnRhZyIgfSwKKyAgICAgICAgeyAgICJNZW1vcmlhbCBEYXkiLCAgICAgICAgICAgICAgICAgIlRhZyBkZXMgR2VkZW5rZW5zIiB9LAorICAgICAgICB7ICAgIk1vdGhlcidzIERheSIsICAgICAgICAgICAgICAgICAiTXV0dGVydGFnIiB9LAorICAgICAgICB7ICAgIk5hdGlvbmFsIEhvbGlkYXkiLCAgICAgICAgICAgICAiTmF0aW9uYWxmZWllcnRhZyIgfSwKKyAgICAgICAgeyAgICJOZXcgWWVhcidzIERheSIsICAgICAgICAgICAgICAgIk5ldWphaHIiIH0sCisgICAgICAgIHsgICAiTmV3IFllYXIncyBFdmUiLCAgICAgICAgICAgICAgICJTaWx2ZXN0ZXJhYmVuZCIgfSwKKyAgICAgICAgeyAgICJQYWxtIFN1bmRheSIsICAgICAgICAgICAgICAgICAgIlBhbG1zb25udGFnIiB9LAorICAgICAgICB7ICAgIlBlbnRlY29zdCIsICAgICAgICAgICAgICAgICAgICAiUGZpbmdzdGVuIiB9LAorICAgICAgICB7ICAgIlByZXNpZGVudHMnIERheSIsICAgICAgICAgICAgICAiUHJcdTAwZTRzaWRlbnRzdGFnIiB9LAorICAgICAgICB7ICAgIlJlbWVtYnJhbmNlIERheSIsICAgICAgICAgICAgICAiVm9sa3N0cmF1ZXJ0YWciIH0sCisgICAgICAgIHsgICAiUmV2b2x1dGlvbiBEYXkiLCAgICAgICAgICAgICAgICJKYWhyZXN0YWcgZGVyIFJldm9sdXRpb24iIH0sCisgICAgICAgIHsgICAiUm9zZSBNb25kYXkiLCAgICAgICAgICAgICAgICAgICJSb3Nlbm1vbnRhZyIgfSwKKyAgICAgICAgeyAgICJTdC4gU3RlcGhlbidzIERheSIsICAgICAgICAgICAgIlN0ZXBoYW5pdGFnIiB9LAorICAgICAgICB7ICAgIlNocm92ZSBUdWVzZGF5IiwgICAgICAgICAgICAgICAiRmFzY2hpbmdzZGllbnN0YWciIH0sCisgICAgICAgIHsgICAiU3ByaW5nIEhvbGlkYXkiLCAgICAgICAgICAgICAgICJUYWcgZGVzIEZyXHUwMGZjaGxpbmdzIiB9LAorICAgICAgICB7ICAgIlN1bW1lciBCYW5rIEhvbGlkYXkiLCAgICAgICAgICAiQmFua2ZlaWVydGFnIiB9LAorICAgICAgICB7ICAgIlRoYW5rc2dpdmluZyIsICAgICAgICAgICAgICAgICAiRGFua2Zlc3QiIH0sCisgICAgICAgIHsgICAiVW5pdHkgRGF5IiwgICAgICAgICAgICAgICAgICAgICJFaW5oZWl0c3RhZyIgfSwKKyAgICAgICAgeyAgICJWZXRlcmFucycgRGF5IiwgICAgICAgICAgICAgICAgIlZldGVyYW5zdGFnIiB9LAorICAgICAgICB7ICAgIlZpY3RvcnkgRGF5IiwgICAgICAgICAgICAgICAgICAiVGFnIGRlciBCZWZyZWl1bmciIH0sCisgICAgICAgIHsgICAiV2FzaGluZ3RvbidzIEJpcnRoZGF5IiwgICAgICAgICJXYXNoaW5ndG9ucyBHZWJ1cnRzdGFnIiB9LAorICAgICAgICB7ICAgIldoaXQgTW9uZGF5IiwgICAgICAgICAgICAgICAgICAiUGZpbmdzdG1vbnRhZyIgfSwKKyAgICAgICAgeyAgICJXaGl0IFN1bmRheSIsICAgICAgICAgICAgICAgICAgIlBmaW5nc3Rzb25udGFnIiB9LAorICAgIH07CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7IHJldHVybiBmQ29udGVudHM7IH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Ib2xpZGF5QnVuZGxlX2RlX0FULmphdmEgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Ib2xpZGF5QnVuZGxlX2RlX0FULmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYTQ5MmVkNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hvbGlkYXlCdW5kbGVfZGVfQVQuamF2YQpAQCAtMCwwICsxLDQ5IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9BdHRpYy9Ib2xpZGF5QnVuZGxlX2RlX0FULmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDkvMTkgMTk6MjY6NDcgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0udXRpbC5yZXNvdXJjZXM7CisKK2ltcG9ydCBjb20uaWJtLnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworcHVibGljIGNsYXNzIEhvbGlkYXlCdW5kbGVfZGVfQVQgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIEhvbGlkYXlbXSBmSG9saWRheXMgPSB7CisgICAgICAgIFNpbXBsZUhvbGlkYXkuTkVXX1lFQVJTX0RBWSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5FUElQSEFOWSwKKyAgICAgICAgRWFzdGVySG9saWRheS5HT09EX0ZSSURBWSwKKyAgICAgICAgRWFzdGVySG9saWRheS5FQVNURVJfU1VOREFZLAorICAgICAgICBFYXN0ZXJIb2xpZGF5LkVBU1RFUl9NT05EQVksCisgICAgICAgIEVhc3RlckhvbGlkYXkuQVNDRU5TSU9OLAorICAgICAgICBFYXN0ZXJIb2xpZGF5LldISVRfU1VOREFZLAorICAgICAgICBFYXN0ZXJIb2xpZGF5LldISVRfTU9OREFZLAorICAgICAgICBFYXN0ZXJIb2xpZGF5LkNPUlBVU19DSFJJU1RJLAorICAgICAgICBTaW1wbGVIb2xpZGF5LkFTU1VNUFRJT04sCisgICAgICAgIFNpbXBsZUhvbGlkYXkuQUxMX1NBSU5UU19EQVksCisgICAgICAgIFNpbXBsZUhvbGlkYXkuSU1NQUNVTEFURV9DT05DRVBUSU9OLAorICAgICAgICBTaW1wbGVIb2xpZGF5LkNIUklTVE1BUywKKyAgICAgICAgU2ltcGxlSG9saWRheS5TVF9TVEVQSEVOU19EQVksCisKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuTUFZLCAgICAgICAgMSwgIDAsICAgICAgICAgICAgICAgIk5hdGlvbmFsIEhvbGlkYXkiKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuT0NUT0JFUiwgICAzMSwgLUNhbGVuZGFyLk1PTkRBWSwgIk5hdGlvbmFsIEhvbGlkYXkiKSwKKyAgICB9OworCisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgImhvbGlkYXlzIiwgICBmSG9saWRheXMgfSwKKworICAgICAgICAvLyBPbmx5IGhvbGlkYXlzIG5hbWVzIGRpZmZlcmVudCBmcm9tIHRob3NlIHVzZWQgaW4gR2VybWFueSBhcmUgbGlzdGVkIGhlcmUKKyAgICAgICAgeyAgICJDaHJpc3RtYXMiLCAgICAgICAgIkNocmlzdHRhZyIgfSwKKyAgICAgICAgeyAgICJOZXcgWWVhcidzIERheSIsICAgIk5ldWphaHJzdGFnIiB9LAorICAgIH07CisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeyByZXR1cm4gZkNvbnRlbnRzOyB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9kZV9ERS5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9kZV9ERS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmYxOGM4MjAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Ib2xpZGF5QnVuZGxlX2RlX0RFLmphdmEKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQXR0aWMvSG9saWRheUJ1bmRsZV9kZV9ERS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDA0OjE4OjAyICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworCitpbXBvcnQgY29tLmlibS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKK3B1YmxpYyBjbGFzcyBIb2xpZGF5QnVuZGxlX2RlX0RFIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBIb2xpZGF5W10gZkhvbGlkYXlzID0geworICAgICAgICBTaW1wbGVIb2xpZGF5Lk5FV19ZRUFSU19EQVksCisgICAgICAgIFNpbXBsZUhvbGlkYXkuTUFZX0RBWSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuSlVORSwgICAgICAxNSwgIENhbGVuZGFyLldFRE5FU0RBWSwgICJNZW1vcmlhbCBEYXkiKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuT0NUT0JFUiwgICAgMywgIDAsICAgICAgICAgICAgICAgICAgICJVbml0eSBEYXkiKSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5BTExfU0FJTlRTX0RBWSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuTk9WRU1CRVIsICAxOCwgIDAsICAgICAgICAgICAgICAgICAgICJEYXkgb2YgUHJheWVyIGFuZCBSZXBlbnRhbmNlIiksCisgICAgICAgIFNpbXBsZUhvbGlkYXkuQ0hSSVNUTUFTLAorICAgICAgICBTaW1wbGVIb2xpZGF5LkJPWElOR19EQVksCisKKyAgICAgICAgLy8gRWFzdGVyIGFuZCByZWxhdGVkIGhvbGlkYXlzCisgICAgICAgIEVhc3RlckhvbGlkYXkuR09PRF9GUklEQVksCisgICAgICAgIEVhc3RlckhvbGlkYXkuRUFTVEVSX1NVTkRBWSwKKyAgICAgICAgRWFzdGVySG9saWRheS5FQVNURVJfTU9OREFZLAorICAgICAgICBFYXN0ZXJIb2xpZGF5LkFTQ0VOU0lPTiwKKyAgICAgICAgRWFzdGVySG9saWRheS5XSElUX1NVTkRBWSwKKyAgICAgICAgRWFzdGVySG9saWRheS5XSElUX01PTkRBWSwKKyAgICB9OworCisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgImhvbGlkYXlzIiwgICBmSG9saWRheXMgfSwKKyAgICB9OworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsgcmV0dXJuIGZDb250ZW50czsgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hvbGlkYXlCdW5kbGVfZWwuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hvbGlkYXlCdW5kbGVfZWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yNmZhZmExCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9lbC5qYXZhCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0F0dGljL0hvbGlkYXlCdW5kbGVfZWwuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwNDoxODowMiAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS51dGlsLnJlc291cmNlczsKKworaW1wb3J0IGNvbS5pYm0udXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCitwdWJsaWMgY2xhc3MgSG9saWRheUJ1bmRsZV9lbCBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPQorICAgIHsKKyAgICAgICAgeyAgICJBc3N1bXB0aW9uIiwgICAgICAgICAgICIxNSBcdTAzOTFcdTAzY2RcdTAzYjNcdTAzYmZcdTAzY2RcdTAzYzNcdTAzYzRcdTAzYmZcdTAzYzUiIH0sCisgICAgICAgIHsgICAiQm94aW5nIERheSIsICAgICAgICAgICAiXHUwMzk0XHUwM2I1XHUwM2NkXHUwM2M0XHUwM2I1XHUwM2MxXHUwM2I3IFx1MDNiY1x1MDNhZFx1MDNjMVx1MDNiMSBcdTAzYzRcdTAzY2VcdTAzYmQgXHUwM2E3XHUwM2MxXHUwM2I5XHUwM2MzXHUwM2M0XHUwM2JmXHUwM2M1XHUwM2IzXHUwM2FkXHUwM2JkXHUwM2JkXHUwM2M5XHUwM2JkIiB9LAorICAgICAgICB7ICAgIkNocmlzdG1hcyIsICAgICAgICAgICAgIlx1MDNhN1x1MDNjMVx1MDNiOVx1MDNjM1x1MDNjNFx1MDNiZlx1MDNjZFx1MDNiM1x1MDNiNVx1MDNiZFx1MDNiZFx1MDNiMSIgfSwKKyAgICAgICAgeyAgICJDbGVhbiBNb25kYXkiLCAgICAgICAgICJcdTAzOWFcdTAzYjFcdTAzYjhcdTAzYjFcdTAzYzFcdTAzYWUgXHUwMzk0XHUwM2I1XHUwM2M1XHUwM2M0XHUwM2FkXHUwM2MxXHUwM2IxIiB9LAorICAgICAgICB7ICAgIkVhc3RlciBNb25kYXkiLCAgICAgICAgIlx1MDM5NFx1MDNiNVx1MDNjZFx1MDNjNFx1MDNiNVx1MDNjMVx1MDNiNyBcdTAzYmNcdTAzYWRcdTAzYzFcdTAzYjEgXHUwM2M0XHUwM2JmXHUwM2NkIFx1MDNhMFx1MDNhY1x1MDNjM1x1MDNjN1x1MDNiMSIgfSwKKyAgICAgICAgeyAgICJFcGlwaGFueSIsICAgICAgICAgICAgICJcdTAzODhcdTAzYzBcdTAzYjlcdTAzYzZcdTAzYWNcdTAzYmRcdTAzYjVcdTAzYjlcdTAzYjEiIH0sCisgICAgICAgIHsgICAiR29vZCBGcmlkYXkiLCAgICAgICAgICAiXHUwMzljXHUwM2I1XHUwM2IzXHUwM2FjXHUwM2JiXHUwM2I3IFx1MDNhMFx1MDNiMVx1MDNjMVx1MDNiMVx1MDNjM1x1MDNiYVx1MDNiNVx1MDNjNVx1MDNhZSIgfSwKKyAgICAgICAgeyAgICJNYXkgRGF5IiwgICAgICAgICAgICAgICJcdTAzYTBcdTAzYzFcdTAzYzlcdTAzYzRcdTAzYmZcdTAzYmNcdTAzYjFcdTAzYjNcdTAzYjlcdTAzYWMiIH0sCisgICAgICAgIHsgICAiTmV3IFllYXIncyBEYXkiLCAgICAgICAiXHUwM2EwXHUwM2MxXHUwM2M5XHUwM2M0XHUwM2JmXHUwM2M3XHUwM2MxXHUwM2JmXHUwM2JkXHUwM2I5XHUwM2FjIiB9LAorICAgICAgICB7ICAgIk9jaGkgRGF5IiwgICAgICAgICAgICAgIjI4IFx1MDM4Y1x1MDNiYVx1MDNjNFx1MDNjOVx1MDNiMlx1MDNjMVx1MDNhZlx1MDNiZlx1MDNjNSIgfSwKKyAgICAgICAgeyAgICJXaGl0IE1vbmRheSIsICAgICAgICAgICJcdTAzOTRcdTAzYjVcdTAzY2RcdTAzYzRcdTAzYjVcdTAzYzFcdTAzYjcgXHUwM2JjXHUwM2FkXHUwM2MxXHUwM2IxIFx1MDNjNFx1MDNiZlx1MDNjZCBcdTAzYTBcdTAzYjVcdTAzYmRcdTAzYzRcdTAzYjdcdTAzYmFcdTAzYmZcdTAzYzNcdTAzYzRcdTAzYWUiIH0sCisKKyAgICB9OworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsgcmV0dXJuIGZDb250ZW50czsgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hvbGlkYXlCdW5kbGVfZWxfR1IuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hvbGlkYXlCdW5kbGVfZWxfR1IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jMjM2MzAzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9lbF9HUi5qYXZhCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0F0dGljL0hvbGlkYXlCdW5kbGVfZWxfR1IuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwNDoxODowMiAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS51dGlsLnJlc291cmNlczsKKworaW1wb3J0IGNvbS5pYm0udXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCitwdWJsaWMgY2xhc3MgSG9saWRheUJ1bmRsZV9lbF9HUiBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgSG9saWRheVtdIGZIb2xpZGF5cyA9IHsKKyAgICAgICAgU2ltcGxlSG9saWRheS5ORVdfWUVBUlNfREFZLAorICAgICAgICBTaW1wbGVIb2xpZGF5LkVQSVBIQU5ZLAorCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk1BUkNILCAgICAgMjUsICAwLCAgICAiSW5kZXBlbmRlbmNlIERheSIpLAorCisgICAgICAgIFNpbXBsZUhvbGlkYXkuTUFZX0RBWSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5BU1NVTVBUSU9OLAorCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk9DVE9CRVIsICAgMjgsICAwLCAgICAiT2NoaSBEYXkiKSwKKworICAgICAgICBTaW1wbGVIb2xpZGF5LkNIUklTVE1BUywKKyAgICAgICAgU2ltcGxlSG9saWRheS5CT1hJTkdfREFZLAorCisgICAgICAgIC8vIEVhc3RlciBhbmQgcmVsYXRlZCBob2xpZGF5cyBpbiB0aGUgT3J0aG9kb3ggY2FsZW5kYXIKKyAgICAgICAgbmV3IEVhc3RlckhvbGlkYXkoLTIsICAgdHJ1ZSwgIkdvb2QgRnJpZGF5IiksCisgICAgICAgIG5ldyBFYXN0ZXJIb2xpZGF5KCAwLCAgIHRydWUsICJFYXN0ZXIgU3VuZGF5IiksCisgICAgICAgIG5ldyBFYXN0ZXJIb2xpZGF5KCAxLCAgIHRydWUsICJFYXN0ZXIgTW9uZGF5IiksCisgICAgICAgIG5ldyBFYXN0ZXJIb2xpZGF5KDUwLCAgIHRydWUsICJXaGl0IE1vbmRheSIpLAorICAgIH07CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgICAiaG9saWRheXMiLCAgICAgICAgIGZIb2xpZGF5cyAgIH0sCisgICAgfTsKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7IHJldHVybiBmQ29udGVudHM7IH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Ib2xpZGF5QnVuZGxlX2VuLmphdmEgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Ib2xpZGF5QnVuZGxlX2VuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYmY2MjM2MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hvbGlkYXlCdW5kbGVfZW4uamF2YQpAQCAtMCwwICsxLDM1IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9BdHRpYy9Ib2xpZGF5QnVuZGxlX2VuLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDMvMTAgMDQ6MTg6MDMgJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0udXRpbC5yZXNvdXJjZXM7CisKK2ltcG9ydCBjb20uaWJtLnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCitwdWJsaWMgY2xhc3MgSG9saWRheUJ1bmRsZV9lbiBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisKKyAgICAvLyBOb3JtYWxseSwgZWFjaCBIb2xpZGF5QnVuZGxlIHVzZXMgdGhlIGhvbGlkYXkncyBVUyBFbmdsaXNoIG5hbWUKKyAgICAvLyBhcyB0aGUgc3RyaW5nIGtleSBmb3IgbG9va2luZyB1cCB0aGUgbG9jYWxpemVkIG5hbWUuICBUaGlzIG1lYW5zCisgICAgLy8gdGhhdCB0aGUga2V5IGl0c2VsZiBjYW4gYmUgdXNlZCBpZiBubyBuYW1lIGlzIGZvdW5kIGZvciB0aGUgcmVxdWVzdGVkCisgICAgLy8gbG9jYWxlLgorICAgIC8vCisgICAgLy8gRm9yIGhvbGlkYXlzIHdoZXJlIHRoZSBrZXkgaXMgX25vdF8gdGhlIEVuZ2xpc2ggbmFtZSwgZS5nLiBpbiB0aGUKKyAgICAvLyBjYXNlIG9mIGNvbmZsaWN0cywgdGhlIEVuZ2xpc2ggbmFtZSBtdXN0IGJlIGdpdmVuIGhlcmUuCisgICAgLy8KKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAgICIiLCAiIiAgfSwgICAgICAvLyBDYW4ndCBiZSBlbXB0eSEKKyAgICB9OworCisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeyByZXR1cm4gZkNvbnRlbnRzOyB9OworCit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9lbl9DQS5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9lbl9DQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmNiYzM0ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Ib2xpZGF5QnVuZGxlX2VuX0NBLmphdmEKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQXR0aWMvSG9saWRheUJ1bmRsZV9lbl9DQS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDA0OjE4OjAzICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworCitpbXBvcnQgY29tLmlibS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKK3B1YmxpYyBjbGFzcyBIb2xpZGF5QnVuZGxlX2VuX0NBIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBIb2xpZGF5W10gZkhvbGlkYXlzID0geworICAgICAgICBTaW1wbGVIb2xpZGF5Lk5FV19ZRUFSU19EQVksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk1BWSwgICAgICAgMTksIDAsICAgICAgICAgICAgICAgICAgIlZpY3RvcmlhIERheSIpLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5KVUxZLCAgICAgICAxLCAwLCAgICAgICAgICAgICAgICAgICJDYW5hZGEgRGF5IiksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLkFVR1VTVCwgICAgIDEsIENhbGVuZGFyLk1PTkRBWSwgICAgIkNpdmljIEhvbGlkYXkiKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuU0VQVEVNQkVSLCAgMSwgQ2FsZW5kYXIuTU9OREFZLCAgICAiTGFib3IgRGF5IiksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk9DVE9CRVIsICAgIDgsIENhbGVuZGFyLk1PTkRBWSwgICAgIlRoYW5rc2dpdmluZyIpLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5OT1ZFTUJFUiwgIDExLCAwLCAgICAgICAgICAgICAgICAgICJSZW1lbWJyYW5jZSBEYXkiKSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5DSFJJU1RNQVMsCisgICAgICAgIFNpbXBsZUhvbGlkYXkuQk9YSU5HX0RBWSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5ORVdfWUVBUlNfRVZFLAorCisgICAgICAgIC8vIEVhc3RlciBhbmQgcmVsYXRlZCBob2xpZGF5cworICAgICAgICAvL2hleSB7amZ9IC0gd2hlcmUgYXJlIHRoZXNlIGZyb20/CisvLyAgICAgICAgRWFzdGVySG9saWRheS5HT09EX0ZSSURBWSwKKy8vICAgICAgICBFYXN0ZXJIb2xpZGF5LkVBU1RFUl9TVU5EQVksCisvLyAgICAgICAgRWFzdGVySG9saWRheS5FQVNURVJfTU9OREFZLAorICAgIH07CisKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAiaG9saWRheXMiLCAgIGZIb2xpZGF5cyB9LAorCisgICAgICAgIHsgIkxhYm9yIERheSIsICAiTGFib3VyIERheSIgfSwKKyAgICB9OworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsgcmV0dXJuIGZDb250ZW50czsgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hvbGlkYXlCdW5kbGVfZW5fR0IuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hvbGlkYXlCdW5kbGVfZW5fR0IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wNTVhMDk3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9lbl9HQi5qYXZhCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0F0dGljL0hvbGlkYXlCdW5kbGVfZW5fR0IuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwNDoxODowMyAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS51dGlsLnJlc291cmNlczsKKworaW1wb3J0IGNvbS5pYm0udXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCitwdWJsaWMgY2xhc3MgSG9saWRheUJ1bmRsZV9lbl9HQiBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZQoreworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIEhvbGlkYXlbXSBmSG9saWRheXMgPSB7CisgICAgICAgIFNpbXBsZUhvbGlkYXkuTkVXX1lFQVJTX0RBWSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5NQVlfREFZLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5NQVksICAgICAgICAzMSwgLUNhbGVuZGFyLk1PTkRBWSwgICAgIlNwcmluZyBIb2xpZGF5IiksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLkFVR1VTVCwgICAgIDMxLCAtQ2FsZW5kYXIuTU9OREFZLCAgICAiU3VtbWVyIEJhbmsgSG9saWRheSIpLAorICAgICAgICBTaW1wbGVIb2xpZGF5LkNIUklTVE1BUywKKyAgICAgICAgU2ltcGxlSG9saWRheS5CT1hJTkdfREFZLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5ERUNFTUJFUiwgICAzMSwgLUNhbGVuZGFyLk1PTkRBWSwgICAgIkNocmlzdG1hcyBIb2xpZGF5IiksCisKKyAgICAgICAgLy8gRWFzdGVyIGFuZCByZWxhdGVkIGhvbGlkYXlzCisgICAgICAgIEVhc3RlckhvbGlkYXkuR09PRF9GUklEQVksCisgICAgICAgIEVhc3RlckhvbGlkYXkuRUFTVEVSX1NVTkRBWSwKKyAgICAgICAgRWFzdGVySG9saWRheS5FQVNURVJfTU9OREFZLAorICAgIH07CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgImhvbGlkYXlzIiwgICBmSG9saWRheXMgfSwKKworICAgICAgICB7ICJMYWJvciBEYXkiLCAgIkxhYm91ciBEYXkiIH0sCisgICAgfTsKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7IHJldHVybiBmQ29udGVudHM7IH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Ib2xpZGF5QnVuZGxlX2VuX1VTLmphdmEgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Ib2xpZGF5QnVuZGxlX2VuX1VTLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYTg5MTJmYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hvbGlkYXlCdW5kbGVfZW5fVVMuamF2YQpAQCAtMCwwICsxLDUyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9BdHRpYy9Ib2xpZGF5QnVuZGxlX2VuX1VTLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDMvMTAgMDQ6MTg6MDMgJCAKKyAqICRSZXZpc2lvbjogMS4yICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0udXRpbC5yZXNvdXJjZXM7CisKK2ltcG9ydCBjb20uaWJtLnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworcHVibGljIGNsYXNzIEhvbGlkYXlCdW5kbGVfZW5fVVMgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUKK3sKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBIb2xpZGF5W10gZkhvbGlkYXlzID0geworICAgICAgICBTaW1wbGVIb2xpZGF5Lk5FV19ZRUFSU19EQVksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLkpBTlVBUlksICAgMTUsIENhbGVuZGFyLk1PTkRBWSwgICAgICAiTWFydGluIEx1dGhlciBLaW5nIERheSIsICAgMTk4NiksCisKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuRkVCUlVBUlksICAxNSwgQ2FsZW5kYXIuTU9OREFZLCAgICAgICJQcmVzaWRlbnRzJyBEYXkiLCAgICAgICAgICAxOTc2KSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuRkVCUlVBUlksICAyMiwgICAgICAgICAgICAgICAgICAgICAgICJXYXNoaW5ndG9uJ3MgQmlydGhkYXkiLCAgICAxNzc2LCAxOTc1KSwKKworICAgICAgICBFYXN0ZXJIb2xpZGF5LkdPT0RfRlJJREFZLAorICAgICAgICBFYXN0ZXJIb2xpZGF5LkVBU1RFUl9TVU5EQVksCisKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuTUFZLCAgICAgICAgOCwgQ2FsZW5kYXIuU1VOREFZLCAgICAgICJNb3RoZXIncyBEYXkiLCAgICAgICAgICAgICAxOTE0KSwKKworICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5NQVksICAgICAgIDMxLCAtQ2FsZW5kYXIuTU9OREFZLCAgICAgIk1lbW9yaWFsIERheSIsICAgICAgICAgICAgIDE5NzEpLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5NQVksICAgICAgIDMwLCAgICAgICAgICAgICAgICAgICAgICAgIk1lbW9yaWFsIERheSIsICAgICAgICAgICAgIDE4NjgsIDE5NzApLAorCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLkpVTkUsICAgICAgMTUsIENhbGVuZGFyLlNVTkRBWSwgICAgICAiRmF0aGVyJ3MgRGF5IiwgICAgICAgICAgICAgMTk1NiksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLkpVTFksICAgICAgIDQsICAgICAgICAgICAgICAgICAgICAgICAiSW5kZXBlbmRlbmNlIERheSIsICAgICAgICAgMTc3NiksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLlNFUFRFTUJFUiwgIDEsIENhbGVuZGFyLk1PTkRBWSwgICAgICAiTGFib3IgRGF5IiwgICAgICAgICAgICAgICAgMTg5NCksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk5PVkVNQkVSLCAgIDIsIENhbGVuZGFyLlRVRVNEQVksICAgICAiRWxlY3Rpb24gRGF5IiksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk9DVE9CRVIsICAgIDgsIENhbGVuZGFyLk1PTkRBWSwgICAgICAiQ29sdW1idXMgRGF5IiwgICAgICAgICAgICAgMTk3MSksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk9DVE9CRVIgLCAgMzEsICAgICAgICAgICAgICAgICAgICAgICAiSGFsbG93ZWVuIiksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk5PVkVNQkVSLCAgMTEsICAgICAgICAgICAgICAgICAgICAgICAiVmV0ZXJhbnMnIERheSIsICAgICAgICAgICAgMTkxOCksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk5PVkVNQkVSLCAgMjIsIENhbGVuZGFyLlRIVVJTREFZLCAgICAiVGhhbmtzZ2l2aW5nIiwgICAgICAgICAgICAgMTg2MyksCisKKyAgICAgICAgU2ltcGxlSG9saWRheS5DSFJJU1RNQVMsCisgICAgfTsKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAiaG9saWRheXMiLCAgIGZIb2xpZGF5cyB9LAorICAgIH07CisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeyByZXR1cm4gZkNvbnRlbnRzOyB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9lcy5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9lcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjYxOGRhOTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Ib2xpZGF5QnVuZGxlX2VzLmphdmEKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQXR0aWMvSG9saWRheUJ1bmRsZV9lcy5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA5LzIwIDIyOjUwOjEyICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworCitpbXBvcnQgY29tLmlibS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworcHVibGljIGNsYXNzIEhvbGlkYXlCdW5kbGVfZXMgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICAgIkFsbCBTYWludHMnIERheSIsICAgICAgICAgICJUb2RvcyBsb3MgU2FudG9zIiB9LAorICAgICAgICB7ICAgIkFybWlzdGljZSBEYXkiLCAgICAgICAgICAgICJEXHUwMGVkYSBkZWwgQXJtaXN0aWNpbyIgfSwKKyAgICAgICAgeyAgICJBc2NlbnNpb24iLCAgICAgICAgICAgICAgICAiQXNjZW5zaVx1MDBmM24iIH0sCisgICAgICAgIHsgICAiQmVuaXRvIEp1XHUwMGUxcmV6IERheSIsICAgICAgICAiRFx1MDBlZGEgZGUgbGEgQmVuaXRvIEp1XHUwMGUxcmV6IiB9LAorICAgICAgICB7ICAgIkJveGluZyBEYXkiLCAgICAgICAgICAgICAgICJEXHUwMGVkYSBlbiBxdWUgc2UgZGFuIEFndWluYWxkb3MgTmF2aWRlXHUwMGYxb3MiIH0sCisgICAgICAgIHsgICAiQ2FuYWRhIERheSIsICAgICAgICAgICAgICAgIkRcdTAwZWRhIGRlbCBDYW5hZFx1MDBlMSIgfSwKKyAgICAgICAgeyAgICJDaHJpc3RtYXMgRXZlIiwgICAgICAgICAgICAiVlx1MDBFRHNwZXJhIGRlIE5hdmlkYWQiIH0sCisgICAgICAgIHsgICAiQ2hyaXN0bWFzIiwgICAgICAgICAgICAgICAgIk5hdmlkYWQiIH0sCisgICAgICAgIHsgICAiQ29uc3RpdHV0aW9uIERheSIsICAgICAgICAgIkRcdTAwZWRhIGRlIGxhIENvbnN0aXR1Y2lcdTAwZjNuIiB9LAorICAgICAgICB7ICAgIkRheSBvZiB0aGUgRGVhZCIsICAgICAgICAgICJEXHUwMGVkYSBkZSBsb3MgTXVlcnRvcyIgfSwKKyAgICAgICAgeyAgICJFYXN0ZXIgU3VuZGF5IiwgICAgICAgICAgICAiUGFzY3VhIiB9LAorICAgICAgICB7ICAgIkVhc3RlciBNb25kYXkiLCAgICAgICAgICAgICJQYXNjdWEgTHVuZXMiIH0sCisgICAgICAgIHsgICAiRXBpcGhhbnkiLCAgICAgICAgICAgICAgICAgIkVwaWZhblx1MDBlZGEiIH0sCisgICAgICAgIHsgICAiRmF0aGVyJ3MgRGF5IiwgICAgICAgICAgICAgIkRcdTAwZWRhIGRlbCBQYWRyZSIgfSwKKyAgICAgICAgeyAgICJGbGFnIERheSIsICAgICAgICAgICAgICAgICAiRFx1MDBlZGEgZGUgbGEgQmFuZGVyYSIgfSwKKyAgICAgICAgeyAgICJHb29kIEZyaWRheSIsICAgICAgICAgICAgICAiVmllcm5lcyBTYW50byIgfSwKKyAgICAgICAgeyAgICJIYWxsb3dlZW4iLCAgICAgICAgICAgICAgICAidlx1MDBlZHNwZXJhIGRlIFRvZG9zIGxvcyBTYW50b3MiIH0sCisgICAgICAgIHsgICAiSW5kZXBlbmRlbmNlIERheSIsICAgICAgICAgIkRcdTAwZWRhIGRlIGxhIEluZGVwZW5kZW5jaWEiIH0sCisgICAgICAgIHsgICAiTGFib3IgRGF5IiwgICAgICAgICAgICAgICAgIkRcdTAwZWRhIGRlIFRyYWJhamFkb3JlcyIgfSwKKyAgICAgICAgeyAgICJNYXVuZHkgVGh1cnNkYXkiLCAgICAgICAgICAiSnVldmVzIFNhbnRvIiB9LAorICAgICAgICB7ICAgIk1heSBEYXkiLCAgICAgICAgICAgICAgICAgICJQcmltZXJvIGRlIE1heW8iIH0sCisgICAgICAgIHsgICAiTWVtb3JpYWwgRGF5IiwgICAgICAgICAgICAgIkRcdTAwZWRhIGRlIGxhIFJlbWVtb3JhY2lcdTAwZjNuIiB9LAorICAgICAgICB7ICAgIk1vdGhlcidzIERheSIsICAgICAgICAgICAgICJEXHUwMGVkYSBkZSBsYSBNYWRyZSIgfSwKKyAgICAgICAgeyAgICJOZXcgWWVhcidzIERheSIsICAgICAgICAgICAiQVx1MDBmMW8gTnVldm8iIH0sCisgICAgICAgIHsgICAiUGFsbSBTdW5kYXkiLCAgICAgICAgICAgICAgIkRvbWluZ28gZGUgUmFtb3MiIH0sCisgICAgICAgIHsgICAiUGVudGVjb3N0IiwgICAgICAgICAgICAgICAgIlBlbnRlY29zdFx1MDBlOXMiIH0sCisgICAgICAgIHsgICAiUHJlc2lkZW50cycgRGF5IiwgICAgICAgICAgIkRcdTAwZWRhIGRlIFByZXNpZGVudGVzIiB9LAorICAgICAgICB7ICAgIlJldm9sdXRpb24gRGF5IiwgICAgICAgICAgICJEXHUwMGVkYSBkZSBsYSBSZXZvbHVjaVx1MDBmM24iIH0sCisgICAgICAgIHsgICAiU2hyb3ZlIFR1ZXNkYXkiLCAgICAgICAgICAgIk1hcnRlcyBkZSBDYXJuYXZhbCIgfSwKKyAgICAgICAgeyAgICJUaGFua3NnaXZpbmciLCAgICAgICAgICAgICAiRFx1MDBlZGEgZGUgQWNjaVx1MDBmM24gZGUgR3JhY2lhcyIgfSwKKyAgICAgICAgeyAgICJWZXRlcmFucycgRGF5IiwgICAgICAgICAgICAiRFx1MDBlZGEgZGUgVmV0ZXJhbm9zIiB9LAorICAgICAgICB7ICAgIlZpY3RvcmlhIERheSIsICAgICAgICAgICAgICJEXHUwMGVkYSBkZSBWaWN0b3JpYSIgfSwKKyAgICAgICAgeyAgICJXaGl0IFN1bmRheSIsICAgICAgICAgICAgICAiUGVudGVjb3N0XHUwMGU5cyIgfSwKKyAgICB9OworCisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeyByZXR1cm4gZkNvbnRlbnRzOyB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9lc19NWC5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9lc19NWC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQ2MmFiMDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Ib2xpZGF5QnVuZGxlX2VzX01YLmphdmEKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQXR0aWMvSG9saWRheUJ1bmRsZV9lc19NWC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA5LzIwIDIyOjUxOjIzICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworCitpbXBvcnQgY29tLmlibS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKK3B1YmxpYyBjbGFzcyBIb2xpZGF5QnVuZGxlX2VzX01YIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBIb2xpZGF5W10gZkhvbGlkYXlzID0geworICAgICAgICBTaW1wbGVIb2xpZGF5Lk5FV19ZRUFSU19EQVksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLkZFQlJVQVJZLCAgIDUsICAwLCAgICAiQ29uc3RpdHV0aW9uIERheSIpLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5NQVJDSCwgICAgIDIxLCAgMCwgICAgIkJlbml0byBKdVx1MDBFMXJleiBEYXkiKSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5NQVlfREFZLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5NQVksICAgICAgICA1LCAgMCwgICAgIkNpbmNvIGRlIE1heW8iKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuSlVORSwgICAgICAgMSwgIDAsICAgICJOYXZ5IERheSIpLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5TRVBURU1CRVIsIDE2LCAgMCwgICAgIkluZGVwZW5kZW5jZSBEYXkiKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuT0NUT0JFUiwgICAxMiwgIDAsICAgICJEXHUwMEVEYSBkZSBsYSBSYXphIiksCisgICAgICAgIFNpbXBsZUhvbGlkYXkuQUxMX1NBSU5UU19EQVksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk5PVkVNQkVSLCAgIDIsICAwLCAgICAiRGF5IG9mIHRoZSBEZWFkIiksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk5PVkVNQkVSLCAgMjAsICAwLCAgICAiUmV2b2x1dGlvbiBEYXkiKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuREVDRU1CRVIsICAxMiwgIDAsICAgICJGbGFnIERheSIpLAorICAgICAgICBTaW1wbGVIb2xpZGF5LkNIUklTVE1BUywKKyAgICB9OworICAgIHN0YXRpYyBwcml2YXRlIGZpbmFsIE9iamVjdFtdW10gZkNvbnRlbnRzID0geworICAgICAgICB7ICJob2xpZGF5cyIsICAgZkhvbGlkYXlzIH0sCisgICAgfTsKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7IHJldHVybiBmQ29udGVudHM7IH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Ib2xpZGF5QnVuZGxlX2ZyLmphdmEgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Ib2xpZGF5QnVuZGxlX2ZyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZTJhZTU3NwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hvbGlkYXlCdW5kbGVfZnIuamF2YQpAQCAtMCwwICsxLDUwIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9BdHRpYy9Ib2xpZGF5QnVuZGxlX2ZyLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDkvMTkgMTk6MjQ6NDcgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCitwYWNrYWdlIGNvbS5pYm0udXRpbC5yZXNvdXJjZXM7CisKK2ltcG9ydCBjb20uaWJtLnV0aWwuKjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCitwdWJsaWMgY2xhc3MgSG9saWRheUJ1bmRsZV9mciBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgICAiQWxsIFNhaW50cycgRGF5IiwgICAgICAiVG91c3NhaW50IiB9LAorICAgICAgICB7ICAgIkFybWlzdGljZSBEYXkiLCAgICAgICAgIkpvdXIgZGUgbCdBcm1pc3RpY2UiIH0sCisgICAgICAgIHsgICAiQXNjZW5zaW9uIiwgICAgICAgICAgICAiQXNjZW5zaW9uIiB9LAorICAgICAgICB7ICAgIkJhc3RpbGxlIERheSIsICAgICAgICAgIkZcdTAwRUF0ZSBkZSBsYSBCYXN0aWxsZSIgfSwKKyAgICAgICAgeyAgICJCZW5pdG8gSnVcdTAwRTFyZXogRGF5IiwgICAgIkZcdTAwRUF0ZSBkZSBCZW5pdG8gSnVcdTAwRTFyZXoiIH0sCisgICAgICAgIHsgICAiQm94aW5nIERheSIsICAgICAgICAgICAiTGVuZGVtYWluIGRlIE5vXHUwMEVCbCIgfSwKKyAgICAgICAgeyAgICJDaHJpc3RtYXMgRXZlIiwgICAgICAgICJWZWlsbGUgZGUgTm9cdTAwRUJsIiB9LAorICAgICAgICB7ICAgIkNocmlzdG1hcyIsICAgICAgICAgICAgIk5vXHUwMEVCbCIgfSwKKyAgICAgICAgeyAgICJFYXN0ZXIgTW9uZGF5IiwgICAgICAgICJQXHUwMEUycXVlcyBsdW5kaSIgfSwKKyAgICAgICAgeyAgICJFYXN0ZXIgU3VuZGF5IiwgICAgICAgICJQXHUwMEUycXVlcyIgfSwKKyAgICAgICAgeyAgICJFcGlwaGFueSIsICAgICAgICAgICAgICJsJ1x1MDBDOXBpcGhhbmllIiB9LAorICAgICAgICB7ICAgIkZsYWcgRGF5IiwgICAgICAgICAgICAgIkZcdTAwRUF0ZSBkdSBEcmFwZWF1IiB9LAorICAgICAgICB7ICAgIkdvb2QgRnJpZGF5IiwgICAgICAgICAgIlZlbmRyZWRpIFNhaW50IiB9LAorICAgICAgICB7ICAgIkhhbGxvd2VlbiIsICAgICAgICAgICAgIlZlaWxsZSBkZSBsYSBUb3Vzc2FpbnQiIH0sCisgICAgICAgIHsgICAiQWxsIFNhaW50cycgRGF5IiwgICAgICAiVG91c3NhaW50IiB9LAorICAgICAgICB7ICAgIkluZGVwZW5kZW5jZSBEYXkiLCAgICAgIkZcdTAwRUF0ZSBJbmRcdTAwRTlwZW5kYW5jZSIgfSwKKyAgICAgICAgeyAgICJNYXVuZHkgVGh1cnNkYXkiLCAgICAgICJKZXVkaSBTYWludCIgfSwKKyAgICAgICAgeyAgICJNb3RoZXIncyBEYXkiLCAgICAgICAgICJGXHUwMEVBdGUgZGVzIG1cdTAwRThyZXMiIH0sCisgICAgICAgIHsgICAiTmF0aW9uYWwgRGF5IiwgICAgICAgICAiRlx1MDBFQXRlIE5hdGlvbmFsZSIgfSwKKyAgICAgICAgeyAgICJOZXcgWWVhcidzIERheSIsICAgICAgICJKb3VyIGRlIGwnYW4iIH0sCisgICAgICAgIHsgICAiUGFsbSBTdW5kYXkiLCAgICAgICAgICAibGVzIFJhbWVhdXgiIH0sCisgICAgICAgIHsgICAiUGVudGVjb3N0IiwgICAgICAgICAgICAiUGVudGVjXHUwMEY0dGUiIH0sCisgICAgICAgIHsgICAiU2hyb3ZlIFR1ZXNkYXkiLCAgICAgICAiTWFyZGkgR3JhcyIgfSwKKyAgICAgICAgeyAgICJTdC4gU3RlcGhlbidzIERheSIsICAgICJTYWludC1cdTAwQzl0aWVubmUiIH0sCisgICAgICAgIHsgICAiVmljdG9yaWEgRGF5IiwgICAgICAgICAiRlx1MDBFQXRlIGRlIGxhIFZpY3RvcmlhIiB9LAorICAgICAgICB7ICAgIlZpY3RvcnkgRGF5IiwgICAgICAgICAgIkZcdTAwRUF0ZSBkZSBsYSBWaWN0b2lyZSIgfSwKKyAgICB9OworCisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeyByZXR1cm4gZkNvbnRlbnRzOyB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9mcl9DQS5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9mcl9DQS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjViNGE2MmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Ib2xpZGF5QnVuZGxlX2ZyX0NBLmphdmEKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQXR0aWMvSG9saWRheUJ1bmRsZV9mcl9DQS5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDA0OjE4OjA0ICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworCitpbXBvcnQgY29tLmlibS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKK3B1YmxpYyBjbGFzcyBIb2xpZGF5QnVuZGxlX2ZyX0NBIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBIb2xpZGF5W10gZkhvbGlkYXlzID0geworICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5KQU5VQVJZLCAgICAxLCAgMCwgICAgICAgICAgICAgICAgICAiTmV3IFllYXIncyBEYXkiKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuTUFZLCAgICAgICAxOSwgIDAsICAgICAgICAgICAgICAgICAgIlZpY3RvcmlhIERheSIpLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5KVU5FLCAgICAgIDI0LCAgMCwgICAgICAgICAgICAgICAgICAiTmF0aW9uYWwgRGF5IiksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLkpVTFksICAgICAgIDEsICAwLCAgICAgICAgICAgICAgICAgICJDYW5hZGEgRGF5IiksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLkFVR1VTVCwgICAgIDEsICBDYWxlbmRhci5NT05EQVksICAgICJDaXZpYyBIb2xpZGF5IiksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLlNFUFRFTUJFUiwgIDEsICBDYWxlbmRhci5NT05EQVksICAgICJMYWJvdXIgRGF5IiksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLk9DVE9CRVIsICAgIDgsICBDYWxlbmRhci5NT05EQVksICAgICJUaGFua3NnaXZpbmciKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuTk9WRU1CRVIsICAxMSwgIDAsICAgICAgICAgICAgICAgICAgIlJlbWVtYnJhbmNlIERheSIpLAorICAgICAgICBTaW1wbGVIb2xpZGF5LkNIUklTVE1BUywKKyAgICAgICAgU2ltcGxlSG9saWRheS5CT1hJTkdfREFZLAorICAgICAgICBTaW1wbGVIb2xpZGF5Lk5FV19ZRUFSU19FVkUsCisKKyAgICAgICAgLy8gRWFzdGVyIGFuZCByZWxhdGVkIGhvbGlkYXlzCisgICAgICAgIEVhc3RlckhvbGlkYXkuR09PRF9GUklEQVksCisgICAgICAgIEVhc3RlckhvbGlkYXkuRUFTVEVSX1NVTkRBWSwKKyAgICAgICAgRWFzdGVySG9saWRheS5FQVNURVJfTU9OREFZLAorICAgIH07CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgImhvbGlkYXlzIiwgICBmSG9saWRheXMgfSwKKyAgICB9OworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsgcmV0dXJuIGZDb250ZW50czsgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hvbGlkYXlCdW5kbGVfZnJfRlIuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hvbGlkYXlCdW5kbGVfZnJfRlIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lZGJiYTcxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9mcl9GUi5qYXZhCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0F0dGljL0hvbGlkYXlCdW5kbGVfZnJfRlIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwNDoxODowNCAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS51dGlsLnJlc291cmNlczsKKworaW1wb3J0IGNvbS5pYm0udXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCitwdWJsaWMgY2xhc3MgSG9saWRheUJ1bmRsZV9mcl9GUiBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgSG9saWRheVtdIGZIb2xpZGF5cyA9IHsKKyAgICAgICAgU2ltcGxlSG9saWRheS5ORVdfWUVBUlNfREFZLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5NQVksICAgICAgICAxLCAgMCwgIkxhYm9yIERheSIpLAorICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5NQVksICAgICAgICA4LCAgMCwgIlZpY3RvcnkgRGF5IiksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLkpVTFksICAgICAgMTQsICAwLCAiQmFzdGlsbGUgRGF5IiksCisgICAgICAgIFNpbXBsZUhvbGlkYXkuQVNTVU1QVElPTiwKKyAgICAgICAgU2ltcGxlSG9saWRheS5BTExfU0FJTlRTX0RBWSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuTk9WRU1CRVIsICAxMSwgIDAsICJBcm1pc3RpY2UgRGF5IiksCisgICAgICAgIFNpbXBsZUhvbGlkYXkuQ0hSSVNUTUFTLAorCisgICAgICAgIC8vIEVhc3RlciBhbmQgcmVsYXRlZCBob2xpZGF5cworICAgICAgICBFYXN0ZXJIb2xpZGF5LkVBU1RFUl9TVU5EQVksCisgICAgICAgIEVhc3RlckhvbGlkYXkuRUFTVEVSX01PTkRBWSwKKyAgICAgICAgRWFzdGVySG9saWRheS5BU0NFTlNJT04sCisgICAgICAgIEVhc3RlckhvbGlkYXkuV0hJVF9TVU5EQVksCisgICAgICAgIEVhc3RlckhvbGlkYXkuV0hJVF9NT05EQVksCisgICAgfTsKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAiaG9saWRheXMiLCAgIGZIb2xpZGF5cyB9LAorICAgIH07CisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeyByZXR1cm4gZkNvbnRlbnRzOyB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9pdC5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9pdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmU1ZTI3YzQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Ib2xpZGF5QnVuZGxlX2l0LmphdmEKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQXR0aWMvSG9saWRheUJ1bmRsZV9pdC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA5LzIwIDIyOjM3OjU0ICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworCitpbXBvcnQgY29tLmlibS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKK3B1YmxpYyBjbGFzcyBIb2xpZGF5QnVuZGxlX2l0IGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9CisgICAgeworICAgICAgICB7ICAgIkFsbCBTYWludHMnIERheSIsICAgICAgIk9nbmlzc2FudGkiIH0sCisgICAgICAgIHsgICAiQXJtaXN0aWNlIERheSIsICAgICAgICAiYXJtaXN0aXppbyIgfSwKKyAgICAgICAgeyAgICJBc2NlbnNpb24iLCAgICAgICAgICAgICJhc2NlbnNpb25lIiB9LAorICAgICAgICB7ICAgIkFzaCBXZWRuZXNkYXkiLCAgICAgICAgIm1lcmNvbGVkXHUwMGVjIGRlbGxlIGNlbmVyaSIgfSwKKyAgICAgICAgeyAgICJCb3hpbmcgRGF5IiwgICAgICAgICAgICJTYW50byBTdGVmYW5vIiB9LAorICAgICAgICB7ICAgIkNocmlzdG1hcyIsICAgICAgICAgICAgIm5hdGFsZSIgfSwKKyAgICAgICAgeyAgICJFYXN0ZXIgU3VuZGF5IiwgICAgICAgICJwYXNxdWEiIH0sCisgICAgICAgIHsgICAiRXBpcGhhbnkiLCAgICAgICAgICAgICAiRXBpZmFuaWEiIH0sCisgICAgICAgIHsgICAiR29vZCBGcmlkYXkiLCAgICAgICAgICAidmVuZXJkXHUwMGVjIHNhbnRvIiB9LAorICAgICAgICB7ICAgIkhhbGxvd2VlbiIsICAgICAgICAgICAgInZpZ2lsaWEgZGkgT2duaXNzYW50aSIgfSwKKyAgICAgICAgeyAgICJNYXVuZHkgVGh1cnNkYXkiLCAgICAgICJnaW92ZWRcdTAwZWMgc2FudG8iIH0sCisgICAgICAgIHsgICAiTmV3IFllYXIncyBEYXkiLCAgICAgICAiYW5ubyBudW92byIgfSwKKyAgICAgICAgeyAgICJQYWxtIFN1bmRheSIsICAgICAgICAgICJkb21lbmljYSBkZWxsZSBwYWxtZSIgfSwKKyAgICAgICAgeyAgICJQZW50ZWNvc3QiLCAgICAgICAgICAgICJkaSBQZW50ZWNvc3RlIiB9LAorICAgICAgICB7ICAgIlNocm92ZSBUdWVzZGF5IiwgICAgICAgIm1hcnRlZGkgZ3Jhc3NvIiB9LAorICAgICAgICB7ICAgIlN0LiBTdGVwaGVuJ3MgRGF5IiwgICAgIlNhbnRvIFN0ZWZhbm8iIH0sCisgICAgICAgIHsgICAiVGhhbmtzZ2l2aW5nIiwgICAgICAgICAiR2lvcm5vIGRlbCBSaW5ncmF6aWFtZW50byIgfSwKKworICAgIH07CisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeyByZXR1cm4gZkNvbnRlbnRzOyB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9pdF9JVC5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9pdF9JVC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjczOGUxMzcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Ib2xpZGF5QnVuZGxlX2l0X0lULmphdmEKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQXR0aWMvSG9saWRheUJ1bmRsZV9pdF9JVC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDA0OjE4OjA0ICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworCitpbXBvcnQgY29tLmlibS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKK3B1YmxpYyBjbGFzcyBIb2xpZGF5QnVuZGxlX2l0X0lUIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBIb2xpZGF5W10gZkhvbGlkYXlzID0geworICAgICAgICBTaW1wbGVIb2xpZGF5Lk5FV19ZRUFSU19EQVksCisgICAgICAgIFNpbXBsZUhvbGlkYXkuRVBJUEhBTlksCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLkFQUklMLCAgICAgIDEsICAwLCAgICAiTGliZXJhdGlvbiBEYXkiKSwKKyAgICAgICAgbmV3IFNpbXBsZUhvbGlkYXkoQ2FsZW5kYXIuTUFZLCAgICAgICAgMSwgIDAsICAgICJMYWJvciBEYXkiKSwKKyAgICAgICAgU2ltcGxlSG9saWRheS5BU1NVTVBUSU9OLAorICAgICAgICBTaW1wbGVIb2xpZGF5LkFMTF9TQUlOVFNfREFZLAorICAgICAgICBTaW1wbGVIb2xpZGF5LklNTUFDVUxBVEVfQ09OQ0VQVElPTiwKKyAgICAgICAgU2ltcGxlSG9saWRheS5DSFJJU1RNQVMsCisgICAgICAgIG5ldyBTaW1wbGVIb2xpZGF5KENhbGVuZGFyLkRFQ0VNQkVSLCAgMjYsICAwLCAgICAiU3QuIFN0ZXBoZW5zIERheSIpLAorICAgICAgICBTaW1wbGVIb2xpZGF5Lk5FV19ZRUFSU19FVkUsCisKKyAgICAgICAgLy8gRWFzdGVyIGFuZCByZWxhdGVkIGhvbGlkYXlzCisgICAgICAgIEVhc3RlckhvbGlkYXkuRUFTVEVSX1NVTkRBWSwKKyAgICAgICAgRWFzdGVySG9saWRheS5FQVNURVJfTU9OREFZLAorICAgIH07CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgImhvbGlkYXlzIiwgICAgICAgICAgIGZIb2xpZGF5cyB9LAorICAgIH07CisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeyByZXR1cm4gZkNvbnRlbnRzOyB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9pdy5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9pdy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmY1YzQwM2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Ib2xpZGF5QnVuZGxlX2l3LmphdmEKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQXR0aWMvSG9saWRheUJ1bmRsZV9pdy5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDA0OjE4OjA0ICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworCitpbXBvcnQgY29tLmlibS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworcHVibGljIGNsYXNzIEhvbGlkYXlCdW5kbGVfaXcgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworCisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgICAiIiwgIiIgIH0sICAgICAgLy8gQ2FuJ3QgYmUgZW1wdHkhCisgICAgfTsKKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsgcmV0dXJuIGZDb250ZW50czsgfTsKKworfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hvbGlkYXlCdW5kbGVfaXdfSUwuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0hvbGlkYXlCdW5kbGVfaXdfSUwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41ZTliZDMwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9pd19JTC5qYXZhCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0F0dGljL0hvbGlkYXlCdW5kbGVfaXdfSUwuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wMy8xMCAwNDoxODowNSAkIAorICogJFJldmlzaW9uOiAxLjIgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKK3BhY2thZ2UgY29tLmlibS51dGlsLnJlc291cmNlczsKKworaW1wb3J0IGNvbS5pYm0udXRpbC4qOworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCitwdWJsaWMgY2xhc3MgSG9saWRheUJ1bmRsZV9pd19JTCBleHRlbmRzIExpc3RSZXNvdXJjZUJ1bmRsZSB7CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgSG9saWRheVtdIGZIb2xpZGF5cyA9IHsKKyAgICAgICAgSGVicmV3SG9saWRheS5ST1NIX0hBU0hBTkFILAorICAgICAgICBIZWJyZXdIb2xpZGF5LllPTV9LSVBQVVIsCisgICAgICAgIEhlYnJld0hvbGlkYXkuSEFOVUtLQUgsCisgICAgICAgIEhlYnJld0hvbGlkYXkuUFVSSU0sCisgICAgICAgIEhlYnJld0hvbGlkYXkuUEFTU09WRVIsCisgICAgICAgIEhlYnJld0hvbGlkYXkuU0hBVlVPVCwKKyAgICAgICAgSGVicmV3SG9saWRheS5TRUxJSE9ULAorICAgIH07CisKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAiaG9saWRheXMiLCAgIGZIb2xpZGF5cyB9LAorICAgIH07CisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeyByZXR1cm4gZkNvbnRlbnRzOyB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9qYV9KUC5qYXZhIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSG9saWRheUJ1bmRsZV9qYV9KUC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjc4NWM5NjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Ib2xpZGF5QnVuZGxlX2phX0pQLmphdmEKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgICAgKgorICogb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogJFNvdXJjZTogL3hzcmwvTnN2bi9pY3UvaWN1NGovc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvQXR0aWMvSG9saWRheUJ1bmRsZV9qYV9KUC5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzAzLzEwIDA0OjE4OjA1ICQgCisgKiAkUmV2aXNpb246IDEuMiAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworCitpbXBvcnQgY29tLmlibS51dGlsLio7CitpbXBvcnQgamF2YS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKK3B1YmxpYyBjbGFzcyBIb2xpZGF5QnVuZGxlX2phX0pQIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBIb2xpZGF5W10gZkhvbGlkYXlzID0geworICAgICAgICBuZXcgU2ltcGxlSG9saWRheShDYWxlbmRhci5GRUJSVUFSWSwgIDExLCAgMCwgICAgIk5hdGlvbmFsIEZvdW5kYXRpb24gRGF5IiksCisgICAgfTsKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAgICJob2xpZGF5cyIsICAgICAgICAgZkhvbGlkYXlzICAgfSwKKyAgICB9OworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsgcmV0dXJuIGZDb250ZW50czsgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0lzbGFtaWNDYWxlbmRhclN5bWJvbHMuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0lzbGFtaWNDYWxlbmRhclN5bWJvbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MjAzYmZjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSXNsYW1pY0NhbGVuZGFyU3ltYm9scy5qYXZhCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0F0dGljL0lzbGFtaWNDYWxlbmRhclN5bWJvbHMuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wOS8xOSAxODozNzozNiAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udXRpbC5yZXNvdXJjZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIERlZmF1bHQgRGF0ZSBGb3JtYXQgc3ltYm9scyBmb3IgdGhlIElzbGFtaWMgQ2FsZW5kYXIKKyAqLworcHVibGljIGNsYXNzIElzbGFtaWNDYWxlbmRhclN5bWJvbHMgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIAorICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IFx1MDBhOSAxOTk4LTE5OTkgSUJNIENvcnAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIjsKKworICAgIHN0YXRpYyBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAiTW9udGhOYW1lcyIsIG5ldyBTdHJpbmdbXSB7IAorICAgICAgICAgICAgICAgICJNdWhhcnJhbSIsCisgICAgICAgICAgICAgICAgIlNhZmFyIiwKKyAgICAgICAgICAgICAgICAiUmFiaScgSSIsCisgICAgICAgICAgICAgICAgIlJhYmknIElJIiwKKyAgICAgICAgICAgICAgICAiSnVtYWRhIEkiLAorICAgICAgICAgICAgICAgICJKdW1hZGEgSSIsCisgICAgICAgICAgICAgICAgIlJhamFiIiwKKyAgICAgICAgICAgICAgICAiU2hhJ2JhbiIsCisgICAgICAgICAgICAgICAgIlJhbWFkYW4iLAorICAgICAgICAgICAgICAgICJTaGF3d2FsIiwKKyAgICAgICAgICAgICAgICAiRGh1J2wtUWknZGFoIiwKKyAgICAgICAgICAgICAgICAiRGh1J2wtSGlqamFoIiwKKyAgICAgICAgICAgIH0gfSwKKyAgICAgICAgeyAiRXJhcyIsIG5ldyBTdHJpbmdbXSB7IAorICAgICAgICAgICAgICAgICJBSCIKKyAgICAgICAgICAgIH0gfSwKKyAgICB9OworICAgICAgICAKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBmQ29udGVudHM7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0lzbGFtaWNDYWxlbmRhclN5bWJvbHNfYXIuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0lzbGFtaWNDYWxlbmRhclN5bWJvbHNfYXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41MWRmNTZiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSXNsYW1pY0NhbGVuZGFyU3ltYm9sc19hci5qYXZhCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0F0dGljL0lzbGFtaWNDYWxlbmRhclN5bWJvbHNfYXIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wOS8xOSAxODozNzozNiAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udXRpbC5yZXNvdXJjZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIERlZmF1bHQgRGF0ZSBGb3JtYXQgc3ltYm9scyBmb3IgdGhlIElzbGFtaWMgQ2FsZW5kYXIKKyAqLworcHVibGljIGNsYXNzIElzbGFtaWNDYWxlbmRhclN5bWJvbHNfYXIgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworICAgIAorICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IFx1MDBhOSAxOTk5IElCTSBDb3JwLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICBzdGF0aWMgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgIk1vbnRoTmFtZXMiLCBuZXcgU3RyaW5nW10geyAKKyAgICAgICAgICAgICJcdTA2NDVcdTA2MkRcdTA2MzFcdTA2NDUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE11aGFycmFtCisgICAgICAgICAgICAiXHUwNjM1XHUwNjQxXHUwNjMxIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTYWZhcgorICAgICAgICAgICAgIlx1MDYzMVx1MDYyOFx1MDY0QVx1MDYzOSBcdTA2MjdcdTA2NDRcdTA2MjNcdTA2NDhcdTA2NDQiLCAgICAgICAgICAgICAgLy8gUmFiaScgSQorICAgICAgICAgICAgIlx1MDYzMVx1MDYyOFx1MDY0QVx1MDYzOSBcdTA2MjdcdTA2NDRcdTA2MjJcdTA2MkVcdTA2MzEiLCAgICAgICAgICAgICAgLy8gUmFiaScgSUkKKyAgICAgICAgICAgICJcdTA2MkNcdTA2NDVcdTA2MjdcdTA2MkZcdTA2NDkgXHUwNjI3XHUwNjQ0XHUwNjIzXHUwNjQ4XHUwNjQ0XHUwNjQ5IiwgIC8vIEp1bWFkYSBJCisgICAgICAgICAgICAiXHUwNjJDXHUwNjQ1XHUwNjI3XHUwNjJGXHUwNjQ5IFx1MDYyN1x1MDY0NFx1MDYyMlx1MDYyRVx1MDYzMVx1MDYyOSIsICAvLyBKdW1hZGEgSQorICAgICAgICAgICAgIlx1MDYzMVx1MDYyQ1x1MDYyOCIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmFqYWIKKyAgICAgICAgICAgICJcdTA2MzRcdTA2MzlcdTA2MjhcdTA2MjdcdTA2NDYiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNoYSdiYW4KKyAgICAgICAgICAgICJcdTA2MzFcdTA2NDVcdTA2MzZcdTA2MjdcdTA2NDYiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJhbWFkYW4KKyAgICAgICAgICAgICJcdTA2MzRcdTA2NDhcdTA2MjdcdTA2NDQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNoYXd3YWwKKyAgICAgICAgICAgICJcdTA2MzBcdTA2NDggXHUwNjI3XHUwNjQ0XHUwNjQyXHUwNjM5XHUwNjJGXHUwNjI5IiwgICAgICAgICAgICAgICAgICAgIC8vIERodSdsLVFpJ2RhaAorICAgICAgICAgICAgIlx1MDYzMFx1MDY0OCBcdTA2MjdcdTA2NDRcdTA2MkRcdTA2MkNcdTA2MjkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGh1J2wtSGlqamFoCisgICAgICAgIH0gfSwKKyAgICAgICAgeyAiRXJhcyIsIG5ldyBTdHJpbmdbXSB7IAorICAgICAgICAgICAgIlx1MDY0N1x1MjAwRCIsICAvLyBBSAorICAgICAgICB9IH0sCisgICAgfTsKKyAgICAgICAgCisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gZkNvbnRlbnRzOworICAgIH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Jc2xhbWljQ2FsZW5kYXJTeW1ib2xzX2ZpLmphdmEgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Jc2xhbWljQ2FsZW5kYXJTeW1ib2xzX2ZpLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNGM3ZDBlOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0lzbGFtaWNDYWxlbmRhclN5bWJvbHNfZmkuamF2YQpAQCAtMCwwICsxLDQ3IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9BdHRpYy9Jc2xhbWljQ2FsZW5kYXJTeW1ib2xzX2ZpLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDkvMTkgMTg6Mzc6MzYgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLyoqCisgKiBGaW5uaXNoIGRhdGUgZm9ybWF0IHN5bWJvbHMgZm9yIHRoZSBJc2xhbWljIENhbGVuZGFyCisgKi8KK3B1YmxpYyBjbGFzcyBJc2xhbWljQ2FsZW5kYXJTeW1ib2xzX2ZpIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IFx1MDBhOSAxOTk4IElCTSBDb3JwLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICBzdGF0aWMgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgIk1vbnRoTmFtZXMiLCBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgIk11aFx1MDBFMXJyYW0iLCAgICAgICAgICAgICAgICAvLyBNdWhhcnJhbQorICAgICAgICAgICAgIlNcdTAwRTFmYXIiLCAgICAgICAgICAgICAgICAgICAvLyBTYWZhcgorICAgICAgICAgICAgIlJhYlx1MDBFRCcgYWwtXHUwMEUxd3dhbCIsICAgICAvLyBSYWJpJyBhbC1hd3dhbAorICAgICAgICAgICAgIlJhYlx1MDBFRCcgYWwtXHUwMEUxa2hpciIsICAgICAvLyBSYWJpJyBhbC10aGFuaQorICAgICAgICAgICAgIkRcdTAxN0V1bWFkYS1sLVx1MDBGQWxhIiwgICAgICAvLyBKdW1hZGEgYWwtYXd3YWwKKyAgICAgICAgICAgICJEXHUwMTdFdW1hZGEtbC1cdTAwRTFraGlyYSIsICAgLy8gSnVtYWRhIGFsLXRoYW5pCisgICAgICAgICAgICAiUmFkXHUwMTdFYWIiLCAgICAgICAgICAgICAgICAgIC8vIFJhamFiCisgICAgICAgICAgICAiXHUwMTYwYSdiXHUwMEUxbiIsICAgICAgICAgICAgIC8vIFNoYSdiYW4KKyAgICAgICAgICAgICJSYW1hZFx1MDBFMW4iLCAgICAgICAgICAgICAgICAgLy8gUmFtYWRhbgorICAgICAgICAgICAgIlx1MDE2MGF3d2FsIiwgICAgICAgICAgICAgICAgICAvLyBTaGF3d2FsCisgICAgICAgICAgICAiRGh1LWwtcWFkYSIsICAgICAgICAgICAgICAgICAgIC8vIERodSBhbC1RaSdkYWgKKyAgICAgICAgICAgICJEaHUtbC1oaWRkXHUwMTdFYSIsICAgICAgICAgICAgLy8gRGh1IGFsLUhpamphaAorICAgICAgICAgICAgfSB9LAorICAgICAgICB7ICJFcmFzIiwgbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICJBSCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQW5ubyBIaWRcdTAxN0VyYQorICAgICAgICAgICAgfSB9LAorICAgIH07CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBmQ29udGVudHM7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0lzbGFtaWNDYWxlbmRhclN5bWJvbHNfZnIuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0lzbGFtaWNDYWxlbmRhclN5bWJvbHNfZnIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40MDM4YzdiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSXNsYW1pY0NhbGVuZGFyU3ltYm9sc19mci5qYXZhCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0F0dGljL0lzbGFtaWNDYWxlbmRhclN5bWJvbHNfZnIuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wOS8xOSAxODozNzozNiAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udXRpbC5yZXNvdXJjZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIEZyZW5jaCBkYXRlIGZvcm1hdCBzeW1ib2xzIGZvciB0aGUgSXNsYW1pYyBDYWxlbmRhcgorICogVGhpcyBkYXRhIGFjdHVhbGx5IGFwcGxpZXMgdG8gRnJlbmNoIENhbmFkaWFuLiAgSWYgd2UgcmVjZWl2ZQorICogb2ZmaWNpYWwgRnJlbmNoIGRhdGEgZnJvbSBvdXIgRnJhbmNlIG9mZmljZSwgd2Ugc2hvdWxkIG1vdmUgdGhlIAorICogRnJlbmNoIENhbmFkaWFuIGRhdGEgKGlmIGl0J3MgZGlmZmVyZW50KSBkb3duIGludG8gX2ZyX0NBCisgKi8KK3B1YmxpYyBjbGFzcyBJc2xhbWljQ2FsZW5kYXJTeW1ib2xzX2ZyIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IFx1MDBhOSAxOTk4IElCTSBDb3JwLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICBzdGF0aWMgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgIk1vbnRoTmFtZXMiLCBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgIk1vdWhhcnJhbSIsICAgICAgICAgICAgLy8gTXVoYXJyYW0KKyAgICAgICAgICAgICJTYWZhciIsICAgICAgICAgICAgICAgIC8vIFNhZmFyCisgICAgICAgICAgICAiUmFiaSctb3VsLUFvdW91YWwiLCAgICAvLyBSYWJpJyBhbC1hd3dhbAorICAgICAgICAgICAgIlJhYmknLW91dC1UYW5pIiwgICAgICAgLy8gUmFiaScgYWwtdGhhbmkKKyAgICAgICAgICAgICJEam91bWFkYS1sLU91bGEiLCAgICAgIC8vIEp1bWFkYSBhbC1hd3dhbAorICAgICAgICAgICAgIkRqb3VtYWRhLXQtVGFuaWEiLCAgICAgLy8gSnVtYWRhIGFsLXRoYW5pCisgICAgICAgICAgICAiUmFkamFiIiwgICAgICAgICAgICAgICAvLyBSYWphYgorICAgICAgICAgICAgIkNoYSdiYW4iLCAgICAgICAgICAgICAgLy8gU2hhJ2JhbgorICAgICAgICAgICAgIlJhbWFkYW4iLCAgICAgICAgICAgICAgLy8gUmFtYWRhbgorICAgICAgICAgICAgIkNoYW91b3VhbCIsICAgICAgICAgICAgLy8gU2hhd3dhbAorICAgICAgICAgICAgIkRvdS1sLVFhJ2RhIiwgICAgICAgICAgLy8gRGh1IGFsLVFpJ2RhaAorICAgICAgICAgICAgIkRvdS1sLUhpZGpqYSIsICAgICAgICAgLy8gRGh1IGFsLUhpamphaAorICAgICAgICAgICAgfSB9LAorICAgICAgICB7ICJFcmFzIiwgbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICJBSCIgICAgICAgIC8vIEFubm8gSGlqcmkKKyAgICAgICAgICAgIH0gfSwKKyAgICB9OworCisgICAgcHVibGljIHN5bmNocm9uaXplZCBPYmplY3RbXVtdIGdldENvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gZkNvbnRlbnRzOworICAgIH0KK307CmRpZmYgLS1naXQgYS9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Jc2xhbWljQ2FsZW5kYXJTeW1ib2xzX2h1LmphdmEgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9Jc2xhbWljQ2FsZW5kYXJTeW1ib2xzX2h1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOGY2NjQ2OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0lzbGFtaWNDYWxlbmRhclN5bWJvbHNfaHUuamF2YQpAQCAtMCwwICsxLDQ3IEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9BdHRpYy9Jc2xhbWljQ2FsZW5kYXJTeW1ib2xzX2h1LmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDkvMTkgMTg6Mzc6MzYgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLyoqCisgKiBIdW5nYXJpYW4gZGF0ZSBmb3JtYXQgc3ltYm9scyBmb3IgdGhlIElzbGFtaWMgQ2FsZW5kYXIKKyAqLworcHVibGljIGNsYXNzIElzbGFtaWNDYWxlbmRhclN5bWJvbHNfaHUgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNvcHlyaWdodCA9ICJDb3B5cmlnaHQgXHUwMGE5IDE5OTggSUJNIENvcnAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIjsKKworICAgIHN0YXRpYyBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAiTW9udGhOYW1lcyIsIG5ldyBTdHJpbmdbXSB7CisgICAgICAgICAgICAiTW9oYXJyZW0iLCAgICAgICAgICAgICAgICAgLy8gTXVoYXJyYW0KKyAgICAgICAgICAgICJTYWZhciIsICAgICAgICAgICAgICAgICAgICAvLyBTYWZhcgorICAgICAgICAgICAgIlJcdTAwRTliaSBlbCBhdnZlbCIsICAgICAgIC8vIFJhYmknIGFsLWF3d2FsCisgICAgICAgICAgICAiUlx1MDBFOWJpIGVsIGFjY2hlciIsICAgICAgLy8gUmFiaScgYWwtdGhhbmkKKyAgICAgICAgICAgICJEc2VtXHUwMEUxZGkgZWwgYXZ2ZWwiLCAgICAvLyBKdW1hZGEgYWwtYXd3YWwKKyAgICAgICAgICAgICJEc2VtXHUwMEUxZGkgZWwgYWNjaGVyIiwgICAvLyBKdW1hZGEgYWwtdGhhbmkKKyAgICAgICAgICAgICJSZWRzZWIiLCAgICAgICAgICAgICAgICAgICAvLyBSYWphYgorICAgICAgICAgICAgIlNhYlx1MDBFMW4iLCAgICAgICAgICAgICAgIC8vIFNoYSdiYW4KKyAgICAgICAgICAgICJSYW1hZFx1MDBFMW4iLCAgICAgICAgICAgICAvLyBSYW1hZGFuCisgICAgICAgICAgICAiU2V2dlx1MDBFMWwiLCAgICAgICAgICAgICAgLy8gU2hhd3dhbAorICAgICAgICAgICAgIkRzXHUwMEZDbCBrYWRlIiwgICAgICAgICAgIC8vIERodSBhbC1RaSdkYWgKKyAgICAgICAgICAgICJEc1x1MDBGQ2wgaGVkc2UiLCAgICAgICAgICAvLyBEaHUgYWwtSGlqamFoCisgICAgICAgICAgICB9IH0sCisgICAgICAgIHsgIkVyYXMiLCBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgIk1GIgorICAgICAgICAgICAgfSB9LAorICAgIH07CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBmQ29udGVudHM7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0lzbGFtaWNDYWxlbmRhclN5bWJvbHNfaXcuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0lzbGFtaWNDYWxlbmRhclN5bWJvbHNfaXcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mZjVmMjAyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSXNsYW1pY0NhbGVuZGFyU3ltYm9sc19pdy5qYXZhCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0F0dGljL0lzbGFtaWNDYWxlbmRhclN5bWJvbHNfaXcuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wOS8xOSAxODozNzozNiAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udXRpbC5yZXNvdXJjZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIERlZmF1bHQgRGF0ZSBGb3JtYXQgc3ltYm9scyBmb3IgdGhlIElzbGFtaWMgQ2FsZW5kYXIKKyAqLworcHVibGljIGNsYXNzIElzbGFtaWNDYWxlbmRhclN5bWJvbHNfaXcgZXh0ZW5kcyBMaXN0UmVzb3VyY2VCdW5kbGUgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNvcHlyaWdodCA9ICJDb3B5cmlnaHQgXHUwMGE5IDE5OTggSUJNIENvcnAuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIjsKKworICAgIHN0YXRpYyBmaW5hbCBPYmplY3RbXVtdIGZDb250ZW50cyA9IHsKKyAgICAgICAgeyAiTW9udGhOYW1lcyIsIG5ldyBTdHJpbmdbXSB7CisgICAgICAgICAgICAiXHUwNURFXHUwNUQ1XHUwNUQ3XHUwNUU4XHUwNUREIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE11aGFycmFtCisgICAgICAgICAgICAiXHUwNUUxXHUwNUU0XHUwNUU4IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNhZmFyCisgICAgICAgICAgICAiXHUwNUU4XHUwNUQxXHUwNUQ5XHUwNUUyIFx1MDVEMFx1MDVEQy1cdTA1RDBcdTA1RDVcdTA1RDVcdTA1RDBcdTA1REMiLCAgICAgICAgIC8vIFJhYmknIGFsLWF3d2FsCisgICAgICAgICAgICAiXHUwNUU4XHUwNUQxXHUwNUQ5XHUwNUUyIFx1MDVEMFx1MDVEQy1cdTA1RUFcdTA1RTBcdTA1RDkiLCAgICAgICAgICAgICAgICAgICAgIC8vIFJhYmknIGFsLXRoYW5pCisgICAgICAgICAgICAiXHUwNUQyJ1x1MDVENVx1MDVERVx1MDVEM1x1MDVENCBcdTA1RDBcdTA1REMtXHUwNUQwXHUwNUQ1XHUwNUQ1XHUwNUQwXHUwNURDIiwgIC8vIEp1bWFkYSBhbC1hd3dhbAorICAgICAgICAgICAgIlx1MDVEMidcdTA1RDVcdTA1REVcdTA1RDNcdTA1RDQgXHUwNUQwXHUwNURDLVx1MDVFQVx1MDVFMFx1MDVEOSIsICAgICAgICAgICAgICAvLyBKdW1hZGEgYWwtdGhhbmkKKyAgICAgICAgICAgICJcdTA1RThcdTA1RDInXHUwNUQwXHUwNUQxIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmFqYWIKKyAgICAgICAgICAgICJcdTA1RTlcdTA1RTJcdTA1RDFcdTA1RDBcdTA1REYiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2hhJ2JhbgorICAgICAgICAgICAgIlx1MDVFOFx1MDVEMFx1MDVERVx1MDVEM1x1MDVERiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSYW1hZGFuCisgICAgICAgICAgICAiXHUwNUU5XHUwNUQ1XHUwNUQ1XHUwNUQwXHUwNURDIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNoYXd3YWwKKyAgICAgICAgICAgICJcdTA1RTlcdTA1RDVcdTA1RDVcdTA1RDBcdTA1REMiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGh1IGFsLVFpJ2RhaAorICAgICAgICAgICAgIlx1MDVENlx1MDVENSBcdTA1RDBcdTA1REMtXHUwNUQ3XHUwNUQ5XHUwNUQyJ1x1MDVENCIsICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEaHUgYWwtSGlqamFoCisgICAgICAgICAgICB9IH0sCisgICAgICAgIHsgIkVyYXMiLCBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgIlx1MDVFOVx1MDVFMFx1MDVFQSBcdTA1RDRcdTA1RDlcdTA1RDInXHUwNUU4XHUwNUQ0IgorICAgICAgICAgICAgfSB9LAorICAgIH07CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBmQ29udGVudHM7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0lzbGFtaWNDYWxlbmRhclN5bWJvbHNfbmwuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0lzbGFtaWNDYWxlbmRhclN5bWJvbHNfbmwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xN2NkNDc1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSXNsYW1pY0NhbGVuZGFyU3ltYm9sc19ubC5qYXZhCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0F0dGljL0lzbGFtaWNDYWxlbmRhclN5bWJvbHNfbmwuamF2YSx2ICQgCisgKiAkRGF0ZTogMjAwMC8wOS8xOSAxODozNzozNiAkIAorICogJFJldmlzaW9uOiAxLjMgJAorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCitwYWNrYWdlIGNvbS5pYm0udXRpbC5yZXNvdXJjZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdFJlc291cmNlQnVuZGxlOworCisvKioKKyAqIER1dGNoIGRhdGUgZm9ybWF0IHN5bWJvbHMgZm9yIHRoZSBJc2xhbWljIENhbGVuZGFyCisgKi8KK3B1YmxpYyBjbGFzcyBJc2xhbWljQ2FsZW5kYXJTeW1ib2xzX25sIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IFx1MDBhOSAxOTk4IElCTSBDb3JwLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICBzdGF0aWMgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgIk1vbnRoTmFtZXMiLCBuZXcgU3RyaW5nW10geworICAgICAgICAgICAgIk1vZWhhcnJhbSIsICAgICAgICAgICAgLy8gTXVoYXJyYW0KKyAgICAgICAgICAgICJTYWZhciIsICAgICAgICAgICAgICAgIC8vIFNhZmFyCisgICAgICAgICAgICAiUmFiaSdhIGFsIGF3YWwgIiwgICAgICAvLyBSYWJpJyBhbC1hd3dhbAorICAgICAgICAgICAgIlJhYmknYSBhbCB0aGFuaSIsICAgICAgLy8gUmFiaScgYWwtdGhhbmkKKyAgICAgICAgICAgICJKb2VtYWQnYWwgYXdhbCIsICAgICAgIC8vIEp1bWFkYSBhbC1hd3dhbAorICAgICAgICAgICAgIkpvZW1hZCdhbCB0aGFuaSIsICAgICAgLy8gSnVtYWRhIGFsLXRoYW5pCisgICAgICAgICAgICAiUmFqYWIiLCAgICAgICAgICAgICAgICAvLyBSYWphYgorICAgICAgICAgICAgIlNqYSdhYmFuIiwgICAgICAgICAgICAgLy8gU2hhJ2JhbgorICAgICAgICAgICAgIlJhbWFkYW4iLCAgICAgICAgICAgICAgLy8gUmFtYWRhbgorICAgICAgICAgICAgIlNqYXdhbCIsICAgICAgICAgICAgICAgLy8gU2hhd3dhbAorICAgICAgICAgICAgIkRvZSBhbCBrYSdhYmEiLCAgICAgICAgLy8gRGh1IGFsLVFpJ2RhaAorICAgICAgICAgICAgIkRvZSBhbCBoaXpqYSIsICAgICAgICAgLy8gRGh1IGFsLUhpamphaAorICAgICAgICAgICAgfSB9LAorICAgICAgICB7ICJFcmFzIiwgbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICJTYSduYSBIaXpqcmlhIgorICAgICAgICAgICAgfSB9LAorICAgIH07CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIE9iamVjdFtdW10gZ2V0Q29udGVudHMoKSB7CisgICAgICAgIHJldHVybiBmQ29udGVudHM7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0phcGFuZXNlQ2FsZW5kYXJTeW1ib2xzLmphdmEgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9KYXBhbmVzZUNhbGVuZGFyU3ltYm9scy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjk1NGQ1OGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9KYXBhbmVzZUNhbGVuZGFyU3ltYm9scy5qYXZhCkBAIC0wLDAgKzEsMjgyIEBACisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIENvcHlyaWdodCAoQykgMTk5Ni0yMDAwLCBJbnRlcm5hdGlvbmFsIEJ1c2luZXNzIE1hY2hpbmVzIENvcnBvcmF0aW9uIGFuZCAgICAqCisgKiBvdGhlcnMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiAkU291cmNlOiAveHNybC9Oc3ZuL2ljdS9pY3U0ai9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9BdHRpYy9KYXBhbmVzZUNhbGVuZGFyU3ltYm9scy5qYXZhLHYgJCAKKyAqICREYXRlOiAyMDAwLzA5LzE5IDE4OjM3OjM2ICQgCisgKiAkUmV2aXNpb246IDEuMyAkCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KK3BhY2thZ2UgY29tLmlibS51dGlsLnJlc291cmNlczsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGU7CisKKy8qKgorICogRGVmYXVsdCBEYXRlIEZvcm1hdCBzeW1ib2xzIGZvciB0aGUgSmFwYW5lc2UgQ2FsZW5kYXIKKyAqLworcHVibGljIGNsYXNzIEphcGFuZXNlQ2FsZW5kYXJTeW1ib2xzIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IFx1MDBhOSAxOTk4IElCTSBDb3JwLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICBzdGF0aWMgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgIkRhdGVUaW1lUGF0dGVybnMiLAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICAgICAiaDptbTpzcyBhIHoiLCAvLyBmdWxsIHRpbWUgcGF0dGVybgorICAgICAgICAgICAgICAgICJoOm1tOnNzIGEgeiIsIC8vIGxvbmcgdGltZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgImg6bW06c3MgYSIsIC8vIG1lZGl1bSB0aW1lIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAiaDptbSBhIiwgLy8gc2hvcnQgdGltZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgIkVFRUUsIE1NTU0gZCwgeXkgRyIsIC8vIGZ1bGwgZGF0ZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgIk1NTU0gZCwgeXkgRyIsIC8vIGxvbmcgZGF0ZSBwYXR0ZXJuCisgICAgICAgICAgICAgICAgIk1NTSBkLCB5eSBHIiwgLy8gbWVkaXVtIGRhdGUgcGF0dGVybgorICAgICAgICAgICAgICAgICJNL2QveXkiLCAvLyBzaG9ydCBkYXRlIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAiezF9IHswfSIgLy8gZGF0ZS10aW1lIHBhdHRlcm4KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgeyAiRXJhcyIsIG5ldyBTdHJpbmdbXSB7CisgICAgICAgICAgICAvLyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgIEdyZWdvcmlhbiBZZWFyCisgICAgICAgICAgICAiVGFpa2EiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vICA2NDUKKyAgICAgICAgICAgICJIYWt1Y2hpIiwgICAgICAgICAgICAgICAgICAgICAgLy8gIDY1MAorICAgICAgICAgICAgIkhha3VoXHUwMTREIiwgICAgICAgICAgICAgICAgICAvLyAgNjcyCisgICAgICAgICAgICAiU2h1Y2hcdTAxNEQiLCAgICAgICAgICAgICAgICAgIC8vICA2ODYKKyAgICAgICAgICAgICJUYWloXHUwMTREIiwgICAgICAgICAgICAgICAgICAgLy8gIDcwMQorICAgICAgICAgICAgIktlaXVuIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAgNzA0CisgICAgICAgICAgICAiV2FkXHUwMTREIiwgICAgICAgICAgICAgICAgICAgIC8vICA3MDgKKyAgICAgICAgICAgICJSZWlraSIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gIDcxNQorICAgICAgICAgICAgIllcdTAxNERyXHUwMTREIiwgICAgICAgICAgICAgICAvLyAgNzE3CisgICAgICAgICAgICAiSmlua2kiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vICA3MjQKKyAgICAgICAgICAgICJUZW1weVx1MDE0RCIsICAgICAgICAgICAgICAgICAgLy8gIDcyOQorICAgICAgICAgICAgIlRlbXB5XHUwMTRELWthbXBcdTAxNEQiLCAgICAgICAvLyAgNzQ5CisgICAgICAgICAgICAiVGVtcHlcdTAxNEQtc2hcdTAxNERoXHUwMTREIiwgIC8vICA3NDkKKyAgICAgICAgICAgICJUZW1weVx1MDE0RC1oXHUwMTREamkiLCAgICAgICAgLy8gIDc1NworICAgICAgICAgICAgIlRlbXBoXHUwMTRELWppbmdvIiwgICAgICAgICAgICAvLyAgNzY1CisgICAgICAgICAgICAiSmluZ28ta2VpdW4iLCAgICAgICAgICAgICAgICAgIC8vICA3NjcKKyAgICAgICAgICAgICJIXHUwMTREa2kiLCAgICAgICAgICAgICAgICAgICAgLy8gIDc3MAorICAgICAgICAgICAgIlRlbi1cdTAxNEQiLCAgICAgICAgICAgICAgICAgICAvLyAgNzgxCisgICAgICAgICAgICAiRW5yeWFrdSIsICAgICAgICAgICAgICAgICAgICAgIC8vICA3ODIKKyAgICAgICAgICAgICJEYWlkXHUwMTREIiwgICAgICAgICAgICAgICAgICAgLy8gIDgwNgorICAgICAgICAgICAgIktcdTAxNERuaW4iLCAgICAgICAgICAgICAgICAgICAvLyAgODEwCisgICAgICAgICAgICAiVGVuY2hcdTAxNEQiLCAgICAgICAgICAgICAgICAgIC8vICA4MjQKKyAgICAgICAgICAgICJTaFx1MDE0RHdhIiwgICAgICAgICAgICAgICAgICAgLy8gIDgzNAorICAgICAgICAgICAgIkthalx1MDE0RCIsICAgICAgICAgICAgICAgICAgICAvLyAgODQ4CisgICAgICAgICAgICAiTmluanUiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vICA4NTEKKyAgICAgICAgICAgICJTYWlrbyIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gIDg1NAorICAgICAgICAgICAgIlRlbm5hbiIsICAgICAgICAgICAgICAgICAgICAgICAvLyAgODU3CisgICAgICAgICAgICAiSlx1MDE0RGdhbiIsICAgICAgICAgICAgICAgICAgIC8vICA4NTkKKyAgICAgICAgICAgICJHZW5rZWkiLCAgICAgICAgICAgICAgICAgICAgICAgLy8gIDg3NworICAgICAgICAgICAgIk5pbm5hIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAgODg1CisgICAgICAgICAgICAiS2FtcHlcdTAxNEQiLCAgICAgICAgICAgICAgICAgIC8vICA4ODkKKyAgICAgICAgICAgICJTaFx1MDE0RHRhaSIsICAgICAgICAgICAgICAgICAgLy8gIDg5OAorICAgICAgICAgICAgIkVuZ2kiLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgOTAxCisgICAgICAgICAgICAiRW5jaFx1MDE0RCIsICAgICAgICAgICAgICAgICAgIC8vICA5MjMKKyAgICAgICAgICAgICJTaFx1MDE0RGhlaSIsICAgICAgICAgICAgICAgICAgLy8gIDkzMQorICAgICAgICAgICAgIlRlbmd5XHUwMTREIiwgICAgICAgICAgICAgICAgICAvLyAgOTM4CisgICAgICAgICAgICAiVGVucnlha3UiLCAgICAgICAgICAgICAgICAgICAgIC8vICA5NDcKKyAgICAgICAgICAgICJUZW50b2t1IiwgICAgICAgICAgICAgICAgICAgICAgLy8gIDk1NworICAgICAgICAgICAgIlx1MDE0Q3dhIiwgICAgICAgICAgICAgICAgICAgICAvLyAgOTYxCisgICAgICAgICAgICAiS1x1MDE0RGhcdTAxNEQiLCAgICAgICAgICAgICAgIC8vICA5NjQKKyAgICAgICAgICAgICJBbm5hIiwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gIDk2OAorICAgICAgICAgICAgIlRlbnJva3UiLCAgICAgICAgICAgICAgICAgICAgICAvLyAgOTcwCisgICAgICAgICAgICAiVGVuLWVuIiwgICAgICAgICAgICAgICAgICAgICAgIC8vICA5NzMKKyAgICAgICAgICAgICJKXHUwMTREZ2VuIiwgICAgICAgICAgICAgICAgICAgLy8gIDk3NgorICAgICAgICAgICAgIlRlbmdlbiIsICAgICAgICAgICAgICAgICAgICAgICAvLyAgOTc4CisgICAgICAgICAgICAiRWlrYW4iLCAgICAgICAgICAgICAgICAgICAgICAgIC8vICA5ODMKKyAgICAgICAgICAgICJLYW5uYSIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gIDk4NQorICAgICAgICAgICAgIkVpLWVuIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAgOTg3CisgICAgICAgICAgICAiRWlzbyIsICAgICAgICAgICAgICAgICAgICAgICAgIC8vICA5ODkKKyAgICAgICAgICAgICJTaFx1MDE0RHJ5YWt1IiwgICAgICAgICAgICAgICAgLy8gIDk5MAorICAgICAgICAgICAgIkNoXHUwMTREdG9rdSIsICAgICAgICAgICAgICAgICAvLyAgOTk1CisgICAgICAgICAgICAiQ2hcdTAxNERoXHUwMTREIiwgICAgICAgICAgICAgIC8vICA5OTkKKyAgICAgICAgICAgICJLYW5rXHUwMTREIiwgICAgICAgICAgICAgICAgICAgLy8gMTAwNAorICAgICAgICAgICAgIkNoXHUwMTREd2EiLCAgICAgICAgICAgICAgICAgICAvLyAxMDEyCisgICAgICAgICAgICAiS2FubmluIiwgICAgICAgICAgICAgICAgICAgICAgIC8vIDEwMTcKKyAgICAgICAgICAgICJKaWFuIiwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTAyMQorICAgICAgICAgICAgIk1hbmp1IiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMDI0CisgICAgICAgICAgICAiQ2hcdTAxNERnZW4iLCAgICAgICAgICAgICAgICAgIC8vIDEwMjgKKyAgICAgICAgICAgICJDaFx1MDE0RHJ5YWt1IiwgICAgICAgICAgICAgICAgLy8gMTAzNworICAgICAgICAgICAgIkNoXHUwMTREa3lcdTAxNkIiLCAgICAgICAgICAgICAvLyAxMDQwCisgICAgICAgICAgICAiS2FudG9rdSIsICAgICAgICAgICAgICAgICAgICAgIC8vIDEwNDQKKyAgICAgICAgICAgICJFaXNoXHUwMTREIiwgICAgICAgICAgICAgICAgICAgLy8gMTA0NgorICAgICAgICAgICAgIlRlbmdpIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMDUzCisgICAgICAgICAgICAiS1x1MDE0RGhlaSIsICAgICAgICAgICAgICAgICAgIC8vIDEwNTgKKyAgICAgICAgICAgICJKaXJ5YWt1IiwgICAgICAgICAgICAgICAgICAgICAgLy8gMTA2NQorICAgICAgICAgICAgIkVua3lcdTAxNkIiLCAgICAgICAgICAgICAgICAgICAvLyAxMDY5CisgICAgICAgICAgICAiU2hcdTAxNERobyIsICAgICAgICAgICAgICAgICAgIC8vIDEwNzQKKyAgICAgICAgICAgICJTaFx1MDE0RHJ5YWt1IiwgICAgICAgICAgICAgICAgLy8gMTA3NworICAgICAgICAgICAgIkVpaG8iLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMDgxCisgICAgICAgICAgICAiXHUwMTRDdG9rdSIsICAgICAgICAgICAgICAgICAgIC8vIDEwODQKKyAgICAgICAgICAgICJLYW5qaSIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTA4NworICAgICAgICAgICAgIkthaG8iLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMDk0CisgICAgICAgICAgICAiRWljaFx1MDE0RCIsICAgICAgICAgICAgICAgICAgIC8vIDEwOTYKKyAgICAgICAgICAgICJTaFx1MDE0RHRva3UiLCAgICAgICAgICAgICAgICAgLy8gMTA5NworICAgICAgICAgICAgIktcdTAxNER3YSIsICAgICAgICAgICAgICAgICAgICAvLyAxMDk5CisgICAgICAgICAgICAiQ2hcdTAxNERqaSIsICAgICAgICAgICAgICAgICAgIC8vIDExMDQKKyAgICAgICAgICAgICJLYXNoXHUwMTREIiwgICAgICAgICAgICAgICAgICAgLy8gMTEwNgorICAgICAgICAgICAgIlRlbm5pbiIsICAgICAgICAgICAgICAgICAgICAgICAvLyAxMTA4CisgICAgICAgICAgICAiVGVuLWVpIiwgICAgICAgICAgICAgICAgICAgICAgIC8vIDExMTAKKyAgICAgICAgICAgICJFaWt5XHUwMTZCIiwgICAgICAgICAgICAgICAgICAgLy8gMTExMworICAgICAgICAgICAgIkdlbi1laSIsICAgICAgICAgICAgICAgICAgICAgICAvLyAxMTE4CisgICAgICAgICAgICAiSG9hbiIsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDExMjAKKyAgICAgICAgICAgICJUZW5qaSIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTEyNAorICAgICAgICAgICAgIkRhaWppIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMTI2CisgICAgICAgICAgICAiVGVuc2hcdTAxNEQiLCAgICAgICAgICAgICAgICAgIC8vIDExMzEKKyAgICAgICAgICAgICJDaFx1MDE0RHNoXHUwMTREIiwgICAgICAgICAgICAgLy8gMTEzMgorICAgICAgICAgICAgIkhvZW4iLCAgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMTM1CisgICAgICAgICAgICAiRWlqaSIsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDExNDEKKyAgICAgICAgICAgICJLXHUwMTREamkiLCAgICAgICAgICAgICAgICAgICAgLy8gMTE0MgorICAgICAgICAgICAgIlRlbnlcdTAxNEQiLCAgICAgICAgICAgICAgICAgICAvLyAxMTQ0CisgICAgICAgICAgICAiS3lcdTAxNkJhbiIsICAgICAgICAgICAgICAgICAgIC8vIDExNDUKKyAgICAgICAgICAgICJOaW5wZWkiLCAgICAgICAgICAgICAgICAgICAgICAgLy8gMTE1MQorICAgICAgICAgICAgIkt5XHUwMTZCanUiLCAgICAgICAgICAgICAgICAgICAvLyAxMTU0CisgICAgICAgICAgICAiSG9nZW4iLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDExNTYKKyAgICAgICAgICAgICJIZWlqaSIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTE1OQorICAgICAgICAgICAgIkVpcnlha3UiLCAgICAgICAgICAgICAgICAgICAgICAvLyAxMTYwCisgICAgICAgICAgICAiXHUwMTRDaG8iLCAgICAgICAgICAgICAgICAgICAgIC8vIDExNjEKKyAgICAgICAgICAgICJDaFx1MDE0RGthbiIsICAgICAgICAgICAgICAgICAgLy8gMTE2MworICAgICAgICAgICAgIkVpbWFuIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMTY1CisgICAgICAgICAgICAiTmluLWFuIiwgICAgICAgICAgICAgICAgICAgICAgIC8vIDExNjYKKyAgICAgICAgICAgICJLYVx1MDE0RCIsICAgICAgICAgICAgICAgICAgICAgLy8gMTE2OQorICAgICAgICAgICAgIlNoXHUwMTREYW4iLCAgICAgICAgICAgICAgICAgICAvLyAxMTcxCisgICAgICAgICAgICAiQW5nZW4iLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDExNzUKKyAgICAgICAgICAgICJKaXNoXHUwMTREIiwgICAgICAgICAgICAgICAgICAgLy8gMTE3NworICAgICAgICAgICAgIllcdTAxNER3YSIsICAgICAgICAgICAgICAgICAgICAvLyAxMTgxCisgICAgICAgICAgICAiSnVlaSIsICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDExODIKKyAgICAgICAgICAgICJHZW5yeXVrdSIsICAgICAgICAgICAgICAgICAgICAgLy8gMTE4NAorICAgICAgICAgICAgIkJ1bmppIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMTg1CisgICAgICAgICAgICAiS2Vua3lcdTAxNkIiLCAgICAgICAgICAgICAgICAgIC8vIDExOTAKKyAgICAgICAgICAgICJTaFx1MDE0RGppIiwgICAgICAgICAgICAgICAgICAgLy8gMTE5OQorICAgICAgICAgICAgIktlbm5pbiIsICAgICAgICAgICAgICAgICAgICAgICAvLyAxMjAxCisgICAgICAgICAgICAiR2Vua3lcdTAxNkIiLCAgICAgICAgICAgICAgICAgIC8vIDEyMDQKKyAgICAgICAgICAgICJLZW4tZWkiLCAgICAgICAgICAgICAgICAgICAgICAgLy8gMTIwNgorICAgICAgICAgICAgIlNoXHUwMTREZ2VuIiwgICAgICAgICAgICAgICAgICAvLyAxMjA3CisgICAgICAgICAgICAiS2Vucnlha3UiLCAgICAgICAgICAgICAgICAgICAgIC8vIDEyMTEKKyAgICAgICAgICAgICJLZW5wXHUwMTREIiwgICAgICAgICAgICAgICAgICAgLy8gMTIxMworICAgICAgICAgICAgIlNoXHUwMTREa3lcdTAxNkIiLCAgICAgICAgICAgICAvLyAxMjE5CisgICAgICAgICAgICAiSlx1MDE0RFx1MDE0RCIsICAgICAgICAgICAgICAgIC8vIDEyMjIKKyAgICAgICAgICAgICJHZW5uaW4iLCAgICAgICAgICAgICAgICAgICAgICAgLy8gMTIyNAorICAgICAgICAgICAgIkthcm9rdSIsICAgICAgICAgICAgICAgICAgICAgICAvLyAxMjI1CisgICAgICAgICAgICAiQW50ZWkiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEyMjcKKyAgICAgICAgICAgICJLYW5raSIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTIyOQorICAgICAgICAgICAgIkpcdTAxNERlaSIsICAgICAgICAgICAgICAgICAgICAvLyAxMjMyCisgICAgICAgICAgICAiVGVtcHVrdSIsICAgICAgICAgICAgICAgICAgICAgIC8vIDEyMzMKKyAgICAgICAgICAgICJCdW5yeWFrdSIsICAgICAgICAgICAgICAgICAgICAgLy8gMTIzNAorICAgICAgICAgICAgIkthdGVpIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMjM1CisgICAgICAgICAgICAiUnlha3VuaW4iLCAgICAgICAgICAgICAgICAgICAgIC8vIDEyMzgKKyAgICAgICAgICAgICJFbi1cdTAxNEQiLCAgICAgICAgICAgICAgICAgICAgLy8gMTIzOQorICAgICAgICAgICAgIk5pbmppIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMjQwCisgICAgICAgICAgICAiS2FuZ2VuIiwgICAgICAgICAgICAgICAgICAgICAgIC8vIDEyNDMKKyAgICAgICAgICAgICJIXHUwMTREamkiLCAgICAgICAgICAgICAgICAgICAgLy8gMTI0NworICAgICAgICAgICAgIktlbmNoXHUwMTREIiwgICAgICAgICAgICAgICAgICAvLyAxMjQ5CisgICAgICAgICAgICAiS1x1MDE0RGdlbiIsICAgICAgICAgICAgICAgICAgIC8vIDEyNTYKKyAgICAgICAgICAgICJTaFx1MDE0RGthIiwgICAgICAgICAgICAgICAgICAgLy8gMTI1NworICAgICAgICAgICAgIlNoXHUwMTREZ2VuIiwgICAgICAgICAgICAgICAgICAvLyAxMjU5CisgICAgICAgICAgICAiQnVuLVx1MDE0RCIsICAgICAgICAgICAgICAgICAgIC8vIDEyNjAKKyAgICAgICAgICAgICJLXHUwMTREY2hcdTAxNEQiLCAgICAgICAgICAgICAgLy8gMTI2MQorICAgICAgICAgICAgIkJ1bi1laSIsICAgICAgICAgICAgICAgICAgICAgICAvLyAxMjY0CisgICAgICAgICAgICAiS2VuamkiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEyNzUKKyAgICAgICAgICAgICJLXHUwMTREYW4iLCAgICAgICAgICAgICAgICAgICAgLy8gMTI3OAorICAgICAgICAgICAgIlNoXHUwMTREXHUwMTREIiwgICAgICAgICAgICAgICAvLyAxMjg4CisgICAgICAgICAgICAiRWluaW4iLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEyOTMKKyAgICAgICAgICAgICJTaFx1MDE0RGFuIiwgICAgICAgICAgICAgICAgICAgLy8gMTI5OQorICAgICAgICAgICAgIktlbmdlbiIsICAgICAgICAgICAgICAgICAgICAgICAvLyAxMzAyCisgICAgICAgICAgICAiS2FnZW4iLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEzMDMKKyAgICAgICAgICAgICJUb2t1amkiLCAgICAgICAgICAgICAgICAgICAgICAgLy8gMTMwNgorICAgICAgICAgICAgIkVua2VpIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMzA4CisgICAgICAgICAgICAiXHUwMTRDY2hcdTAxNEQiLCAgICAgICAgICAgICAgIC8vIDEzMTEKKyAgICAgICAgICAgICJTaFx1MDE0RHdhIiwgICAgICAgICAgICAgICAgICAgLy8gMTMxMgorICAgICAgICAgICAgIkJ1bnBcdTAxNEQiLCAgICAgICAgICAgICAgICAgICAvLyAxMzE3CisgICAgICAgICAgICAiR2VuXHUwMTREIiwgICAgICAgICAgICAgICAgICAgIC8vIDEzMTkKKyAgICAgICAgICAgICJHZW5reVx1MDE0RCIsICAgICAgICAgICAgICAgICAgLy8gMTMyMQorICAgICAgICAgICAgIlNoXHUwMTREY2hcdTAxNkIiLCAgICAgICAgICAgICAvLyAxMzI0CisgICAgICAgICAgICAiS2FyZWtpIiwgICAgICAgICAgICAgICAgICAgICAgIC8vIDEzMjYKKyAgICAgICAgICAgICJHZW50b2t1IiwgICAgICAgICAgICAgICAgICAgICAgLy8gMTMyOQorICAgICAgICAgICAgIkdlbmtcdTAxNEQiLCAgICAgICAgICAgICAgICAgICAvLyAxMzMxCisgICAgICAgICAgICAiS2VtbXUiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEzMzQKKyAgICAgICAgICAgICJFbmdlbiIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTMzNgorICAgICAgICAgICAgIktcdTAxNERrb2t1IiwgICAgICAgICAgICAgICAgICAvLyAxMzQwCisgICAgICAgICAgICAiU2hcdTAxNERoZWkiLCAgICAgICAgICAgICAgICAgIC8vIDEzNDYKKyAgICAgICAgICAgICJLZW50b2t1IiwgICAgICAgICAgICAgICAgICAgICAgLy8gMTM3MAorICAgICAgICAgICAgIkJ1bmNoXHUwMTY5IiwgICAgICAgICAgICAgICAgICAvLyAxMzcyCisgICAgICAgICAgICAiVGVuanUiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEzNzUKKyAgICAgICAgICAgICJLXHUwMTREd2EiLCAgICAgICAgICAgICAgICAgICAgLy8gMTM4MQorICAgICAgICAgICAgIkdlbmNoXHUwMTY5IiwgICAgICAgICAgICAgICAgICAvLyAxMzg0CisgICAgICAgICAgICAiTWVpdG9rdSIsICAgICAgICAgICAgICAgICAgICAgIC8vIDEzODQKKyAgICAgICAgICAgICJLXHUwMTREcnlha3UiLCAgICAgICAgICAgICAgICAgLy8gMTM3OQorICAgICAgICAgICAgIktha2VpIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxMzg3CisgICAgICAgICAgICAiS1x1MDE0RFx1MDE0RCIsICAgICAgICAgICAgICAgIC8vIDEzODkKKyAgICAgICAgICAgICJNZWl0b2t1IiwgICAgICAgICAgICAgICAgICAgICAgLy8gMTM5MAorICAgICAgICAgICAgIlx1MDE0Q2VpIiwgICAgICAgICAgICAgICAgICAgICAvLyAxMzk0CisgICAgICAgICAgICAiU2hcdTAxNERjaFx1MDE0RCIsICAgICAgICAgICAgIC8vIDE0MjgKKyAgICAgICAgICAgICJFaWt5XHUwMTREIiwgICAgICAgICAgICAgICAgICAgLy8gMTQyOQorICAgICAgICAgICAgIktha2l0c3UiLCAgICAgICAgICAgICAgICAgICAgICAvLyAxNDQxCisgICAgICAgICAgICAiQnVuLWFuIiwgICAgICAgICAgICAgICAgICAgICAgIC8vIDE0NDQKKyAgICAgICAgICAgICJIXHUwMTREdG9rdSIsICAgICAgICAgICAgICAgICAgLy8gMTQ0OQorICAgICAgICAgICAgIkt5XHUwMTREdG9rdSIsICAgICAgICAgICAgICAgICAvLyAxNDUyCisgICAgICAgICAgICAiS1x1MDE0RHNoXHUwMTREIiwgICAgICAgICAgICAgIC8vIDE0NTUKKyAgICAgICAgICAgICJDaFx1MDE0RHJva3UiLCAgICAgICAgICAgICAgICAgLy8gMTQ1NworICAgICAgICAgICAgIkthbnNoXHUwMTREIiwgICAgICAgICAgICAgICAgICAvLyAxNDYwCisgICAgICAgICAgICAiQnVuc2hcdTAxNEQiLCAgICAgICAgICAgICAgICAgIC8vIDE0NjYKKyAgICAgICAgICAgICJcdTAxNENuaW4iLCAgICAgICAgICAgICAgICAgICAgLy8gMTQ2NworICAgICAgICAgICAgIkJ1bm1laSIsICAgICAgICAgICAgICAgICAgICAgICAvLyAxNDY5CisgICAgICAgICAgICAiQ2hcdTAxNERreVx1MDE0RCIsICAgICAgICAgICAgIC8vIDE0ODcKKyAgICAgICAgICAgICJFbnRva3UiLCAgICAgICAgICAgICAgICAgICAgICAgLy8gMTQ4OQorICAgICAgICAgICAgIk1laVx1MDE0RCIsICAgICAgICAgICAgICAgICAgICAvLyAxNDkyCisgICAgICAgICAgICAiQnVua2kiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDE1MDEKKyAgICAgICAgICAgICJFaXNoXHUwMTREIiwgICAgICAgICAgICAgICAgICAgLy8gMTUwNAorICAgICAgICAgICAgIlRhaWVpIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxNTIxCisgICAgICAgICAgICAiS3lcdTAxNERyb2t1IiwgICAgICAgICAgICAgICAgIC8vIDE1MjgKKyAgICAgICAgICAgICJUZW5tb24iLCAgICAgICAgICAgICAgICAgICAgICAgLy8gMTUzMgorICAgICAgICAgICAgIktcdTAxNERqaSIsICAgICAgICAgICAgICAgICAgICAvLyAxNTU1CisgICAgICAgICAgICAiRWlyb2t1IiwgICAgICAgICAgICAgICAgICAgICAgIC8vIDE1NTgKKyAgICAgICAgICAgICJHZW5raSIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTU3MAorICAgICAgICAgICAgIlRlbnNoXHUwMTREIiwgICAgICAgICAgICAgICAgICAvLyAxNTczCisgICAgICAgICAgICAiQnVucm9rdSIsICAgICAgICAgICAgICAgICAgICAgIC8vIDE1OTIKKyAgICAgICAgICAgICJLZWljaFx1MDE0RCIsICAgICAgICAgICAgICAgICAgLy8gMTU5NgorICAgICAgICAgICAgIkdlbndhIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxNjE1CisgICAgICAgICAgICAiS2FuLWVpIiwgICAgICAgICAgICAgICAgICAgICAgIC8vIDE2MjQKKyAgICAgICAgICAgICJTaFx1MDE0RGhvIiwgICAgICAgICAgICAgICAgICAgLy8gMTY0NAorICAgICAgICAgICAgIktlaWFuIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxNjQ4CisgICAgICAgICAgICAiU2hcdTAxNERcdTAxNEQiLCAgICAgICAgICAgICAgIC8vIDE2NTIKKyAgICAgICAgICAgICJNZWlyeWFrdSIsICAgICAgICAgICAgICAgICAgICAgLy8gMTY1NQorICAgICAgICAgICAgIk1hbmppIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxNjU4CisgICAgICAgICAgICAiS2FuYnVuIiwgICAgICAgICAgICAgICAgICAgICAgIC8vIDE2NjEKKyAgICAgICAgICAgICJFbnBcdTAxNEQiLCAgICAgICAgICAgICAgICAgICAgLy8gMTY3MworICAgICAgICAgICAgIlRlbndhIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxNjgxCisgICAgICAgICAgICAiSlx1MDE0RGt5XHUwMTREIiwgICAgICAgICAgICAgIC8vIDE2ODQKKyAgICAgICAgICAgICJHZW5yb2t1IiwgICAgICAgICAgICAgICAgICAgICAgLy8gMTY4OAorICAgICAgICAgICAgIkhcdTAxNERlaSIsICAgICAgICAgICAgICAgICAgICAvLyAxNzA0CisgICAgICAgICAgICAiU2hcdTAxNER0b2t1IiwgICAgICAgICAgICAgICAgIC8vIDE3MTEKKyAgICAgICAgICAgICJLeVx1MDE0RGhcdTAxNEQiLCAgICAgICAgICAgICAgLy8gMTcxNgorICAgICAgICAgICAgIkdlbmJ1biIsICAgICAgICAgICAgICAgICAgICAgICAvLyAxNzM2CisgICAgICAgICAgICAiS2FucFx1MDE0RCIsICAgICAgICAgICAgICAgICAgIC8vIDE3NDEKKyAgICAgICAgICAgICJFbmt5XHUwMTREIiwgICAgICAgICAgICAgICAgICAgLy8gMTc0NAorICAgICAgICAgICAgIkthbi1lbiIsICAgICAgICAgICAgICAgICAgICAgICAvLyAxNzQ4CisgICAgICAgICAgICAiSFx1MDE0RHJ5YWt1IiwgICAgICAgICAgICAgICAgIC8vIDE3NTEKKyAgICAgICAgICAgICJNZWl3YSIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTc2NAorICAgICAgICAgICAgIkFuLWVpIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxNzcyCisgICAgICAgICAgICAiVGVubWVpIiwgICAgICAgICAgICAgICAgICAgICAgIC8vIDE3ODEKKyAgICAgICAgICAgICJLYW5zZWkiLCAgICAgICAgICAgICAgICAgICAgICAgLy8gMTc4OQorICAgICAgICAgICAgIkt5XHUwMTREd2EiLCAgICAgICAgICAgICAgICAgICAvLyAxODAxCisgICAgICAgICAgICAiQnVua2EiLCAgICAgICAgICAgICAgICAgICAgICAgIC8vIDE4MDQKKyAgICAgICAgICAgICJCdW5zZWkiLCAgICAgICAgICAgICAgICAgICAgICAgLy8gMTgxOAorICAgICAgICAgICAgIlRlbnBcdTAxNEQiLCAgICAgICAgICAgICAgICAgICAvLyAxODMwCisgICAgICAgICAgICAiS1x1MDE0RGthIiwgICAgICAgICAgICAgICAgICAgIC8vIDE4NDQKKyAgICAgICAgICAgICJLYWVpIiwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTg0OAorICAgICAgICAgICAgIkFuc2VpIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxODU0CisgICAgICAgICAgICAiTWFuLWVuIiwgICAgICAgICAgICAgICAgICAgICAgIC8vIDE4NjAKKyAgICAgICAgICAgICJCdW5reVx1MDE2QiIsICAgICAgICAgICAgICAgICAgLy8gMTg2MQorICAgICAgICAgICAgIkdlbmppIiwgICAgICAgICAgICAgICAgICAgICAgICAvLyAxODY0CisgICAgICAgICAgICAiS2VpXHUwMTREIiwgICAgICAgICAgICAgICAgICAgIC8vIDE4NjUKKyAgICAgICAgICAgICJNZWlqaSIsICAgICAgICAgICAgICAgICAgICAgICAgLy8gMTg2OAorICAgICAgICAgICAgIlRhaXNoXHUwMTREIiwgICAgICAgICAgICAgICAgICAvLyAxOTEyCisgICAgICAgICAgICAiU2hcdTAxNER3YSIsICAgICAgICAgICAgICAgICAgIC8vIDE5MjYKKyAgICAgICAgICAgICJIZWlzZWkiLCAgICAgICAgICAgICAgICAgICAgICAgLy8gMTk4OQorICAgICAgICB9IH0sCisgICAgfTsKKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGZDb250ZW50czsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvSmFwYW5lc2VDYWxlbmRhclN5bWJvbHNfamEuamF2YSBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0phcGFuZXNlQ2FsZW5kYXJTeW1ib2xzX2phLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWNjZDViMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0phcGFuZXNlQ2FsZW5kYXJTeW1ib2xzX2phLmphdmEKQEAgLTAsMCArMSwyODEgQEAKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQ29weXJpZ2h0IChDKSAxOTk2LTIwMDAsIEludGVybmF0aW9uYWwgQnVzaW5lc3MgTWFjaGluZXMgQ29ycG9yYXRpb24gYW5kICAgICoKKyAqIG90aGVycy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0F0dGljL0phcGFuZXNlQ2FsZW5kYXJTeW1ib2xzX2phLmphdmEsdiAkIAorICogJERhdGU6IDIwMDAvMDkvMTkgMTg6Mzc6MzYgJCAKKyAqICRSZXZpc2lvbjogMS4zICQKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworcGFja2FnZSBjb20uaWJtLnV0aWwucmVzb3VyY2VzOworCitpbXBvcnQgamF2YS51dGlsLkxpc3RSZXNvdXJjZUJ1bmRsZTsKKworLyoqCisgKiBKYXBhbmVzZSBLYW5qaSB2ZXJzaW9uIG9mIHRoZSBEYXRlIEZvcm1hdCBzeW1ib2xzIGZvciB0aGUgSmFwYW5lc2UgY2FsZW5kYXIKKyAqLworcHVibGljIGNsYXNzIEphcGFuZXNlQ2FsZW5kYXJTeW1ib2xzX2phIGV4dGVuZHMgTGlzdFJlc291cmNlQnVuZGxlIHsKKworICAgIHByaXZhdGUgc3RhdGljIFN0cmluZyBjb3B5cmlnaHQgPSAiQ29weXJpZ2h0IFx1MDBhOSAxOTk4IElCTSBDb3JwLiBBbGwgUmlnaHRzIFJlc2VydmVkLiI7CisKKyAgICBzdGF0aWMgZmluYWwgT2JqZWN0W11bXSBmQ29udGVudHMgPSB7CisgICAgICAgIHsgIkRhdGVUaW1lUGF0dGVybnMiLAorICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICAgICAiSCdcdTY2NDInbW0nXHU1MjA2J3NzJ1x1NzlkMid6IiwgLy8gZnVsbCB0aW1lIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAiSDptbTpzczp6IiwgLy8gbG9uZyB0aW1lIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAiSDptbTpzcyIsIC8vIG1lZGl1bSB0aW1lIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAiSDptbSIsIC8vIHNob3J0IHRpbWUgcGF0dGVybgorICAgICAgICAgICAgICAgICJHIHl5J1x1NWU3NCdNJ1x1NjcwOCdkJ1x1NjVlNSciLCAvLyBmdWxsIGRhdGUgcGF0dGVybgorICAgICAgICAgICAgICAgICJHIHl5L01NL2RkIiwgLy8gbG9uZyBkYXRlIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAiRyB5eS9NTS9kZCIsIC8vIG1lZGl1bSBkYXRlIHBhdHRlcm4KKyAgICAgICAgICAgICAgICAiRyB5eS9NTS9kZCIsIC8vIHNob3J0IGRhdGUgcGF0dGVybgorICAgICAgICAgICAgICAgICJ7MX0gezB9IiAvLyBkYXRlLXRpbWUgcGF0dGVybgorICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICB7ICJFcmFzIiwgbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgICAgICJcdTU5MjdcdTUzMTYiLCAgICAgICAgICAgICAvLyAgNjQ1IFRhaWthCisgICAgICAgICAgICAiXHU3NjdEXHU5NkM5IiwgICAgICAgICAgICAgLy8gIDY1MCBIYWt1Y2hpCisgICAgICAgICAgICAiXHU3NjdEXHU5Q0VGIiwgICAgICAgICAgICAgLy8gIDY3MiBIYWt1aG8KKyAgICAgICAgICAgICJcdTY3MzFcdTlDRTUiLCAgICAgICAgICAgICAvLyAgNjg2IFNodWNobworICAgICAgICAgICAgIlx1NTkyN1x1NUI5RCIsICAgICAgICAgICAgIC8vICA3MDEgVGFpaG8KKyAgICAgICAgICAgICJcdTYxNzZcdTk2RjIiLCAgICAgICAgICAgICAvLyAgNzA0IEtlaXVuCisgICAgICAgICAgICAiXHU1NDhDXHU5Mjg1IiwgICAgICAgICAgICAgLy8gIDcwOCBXYWRvCisgICAgICAgICAgICAiXHU5NzBBXHU0RTgwIiwgICAgICAgICAgICAgLy8gIDcxNSBSZWlraQorICAgICAgICAgICAgIlx1OTkwQVx1ODAwMSIsICAgICAgICAgICAgIC8vICA3MTcgWW9ybworICAgICAgICAgICAgIlx1Nzk1RVx1NEU4MCIsICAgICAgICAgICAgIC8vICA3MjQgSmlua2kKKyAgICAgICAgICAgICJcdTU5MjlcdTVFNzMiLCAgICAgICAgICAgICAvLyAgNzI5IFRlbXB5bworICAgICAgICAgICAgIlx1NTkyOVx1NUU3M1x1NjExRlx1NUI5RCIsIC8vICA3NDkgVGVtcHlvLWthbXBvCisgICAgICAgICAgICAiXHU1OTI5XHU1RTczXHU1MkREXHU1QjlEIiwgLy8gIDc0OSBUZW1weW8tc2hvaG8KKyAgICAgICAgICAgICJcdTU5MjlcdTVFNzNcdTVCOURcdTVCNTciLCAvLyAgNzU3IFRlbXB5by1ob2ppCisgICAgICAgICAgICAiXHU1OTI5XHU1RTczXHU3OTVFXHU4Qjc3IiwgLy8gIDc2NSBUZW1waG8tamluZ28KKyAgICAgICAgICAgICJcdTc5NUVcdThCNzdcdTY2NkZcdTk2RjIiLCAvLyAgNzY3IEppbmdvLWtlaXVuCisgICAgICAgICAgICAiXHU1QjlEXHU0RTgwIiwgICAgICAgICAgICAgLy8gIDc3MCBIb2tpCisgICAgICAgICAgICAiXHU1OTI5XHU1RkRDIiwgICAgICAgICAgICAgLy8gIDc4MSBUZW4tbworICAgICAgICAgICAgIlx1NUVGNlx1NjZBNiIsICAgICAgICAgICAgIC8vICA3ODIgRW5yeWFrdQorICAgICAgICAgICAgIlx1NTkyN1x1NTQwQyIsICAgICAgICAgICAgIC8vICA4MDYgRGFpZG8KKyAgICAgICAgICAgICJcdTVGMThcdTRFQzEiLCAgICAgICAgICAgICAvLyAgODEwIEtvbmluCisgICAgICAgICAgICAiXHU1OTI5XHU5NTc3IiwgICAgICAgICAgICAgLy8gIDgyNCBUZW5jaG8KKyAgICAgICAgICAgICJcdTYyN0ZcdTU0OEMiLCAgICAgICAgICAgICAvLyAgODM0IFNob3dhCisgICAgICAgICAgICAiXHU1NjA5XHU3OTY1IiwgICAgICAgICAgICAgLy8gIDg0OCBLYWpvCisgICAgICAgICAgICAiXHU0RUMxXHU1QkZGIiwgICAgICAgICAgICAgLy8gIDg1MSBOaW5qdQorICAgICAgICAgICAgIlx1NjU4OVx1ODg2MSIsICAgICAgICAgICAgIC8vICA4NTQgU2Fpa28KKyAgICAgICAgICAgICJcdTU5MjlcdTVCODkiLCAgICAgICAgICAgICAvLyAgODU3IFRlbm5hbgorICAgICAgICAgICAgIlx1OEM5RVx1ODlCMyIsICAgICAgICAgICAgIC8vICA4NTkgSm9nYW4KKyAgICAgICAgICAgICJcdTUxNDNcdTYxNzYiLCAgICAgICAgICAgICAvLyAgODc3IEdlbmtlaQorICAgICAgICAgICAgIlx1NEVDMVx1NTQ4QyIsICAgICAgICAgICAgIC8vICA4ODUgTmlubmEKKyAgICAgICAgICAgICJcdTVCREJcdTVFNzMiLCAgICAgICAgICAgICAvLyAgODg5IEthbXB5bworICAgICAgICAgICAgIlx1NjYwQ1x1NkNGMCIsICAgICAgICAgICAgIC8vICA4OTggU2hvdGFpCisgICAgICAgICAgICAiXHU1RUY2XHU1NTlDIiwgICAgICAgICAgICAgLy8gIDkwMSBFbmdpCisgICAgICAgICAgICAiXHU1RUY2XHU5NTc3IiwgICAgICAgICAgICAgLy8gIDkyMyBFbmNobworICAgICAgICAgICAgIlx1NjI3Rlx1NUU3MyIsICAgICAgICAgICAgIC8vICA5MzEgU2hvaGVpCisgICAgICAgICAgICAiXHU1OTI5XHU2MTc2IiwgICAgICAgICAgICAgLy8gIDkzOCBUZW5neW8KKyAgICAgICAgICAgICJcdTU5MjlcdTY2QTYiLCAgICAgICAgICAgICAvLyAgOTQ3IFRlbnJ5YWt1CisgICAgICAgICAgICAiXHU1OTI5XHU1RkIzIiwgICAgICAgICAgICAgLy8gIDk1NyBUZW50b2t1CisgICAgICAgICAgICAiXHU1RkRDXHU1NDhDIiwgICAgICAgICAgICAgLy8gIDk2MSBPd2EKKyAgICAgICAgICAgICJcdTVFQjdcdTRGREQiLCAgICAgICAgICAgICAvLyAgOTY0IEtvaG8KKyAgICAgICAgICAgICJcdTVCODlcdTU0OEMiLCAgICAgICAgICAgICAvLyAgOTY4IEFubmEKKyAgICAgICAgICAgICJcdTU5MjlcdTc5ODQiLCAgICAgICAgICAgICAvLyAgOTcwIFRlbnJva3UKKyAgICAgICAgICAgICJcdTU5MjlcdTVFRjYiLCAgICAgICAgICAgICAvLyAgOTczIFRlbi1lbgorICAgICAgICAgICAgIlx1OEM5RVx1NTE0MyIsICAgICAgICAgICAgIC8vICA5NzYgSm9nZW4KKyAgICAgICAgICAgICJcdTU5MjlcdTUxNDMiLCAgICAgICAgICAgICAvLyAgOTc4IFRlbmdlbgorICAgICAgICAgICAgIlx1NkMzOFx1ODlCMyIsICAgICAgICAgICAgIC8vICA5ODMgRWlrYW4KKyAgICAgICAgICAgICJcdTVCREJcdTU0OEMiLCAgICAgICAgICAgICAvLyAgOTg1IEthbm5hCisgICAgICAgICAgICAiXHU2QzM4XHU1RUY2IiwgICAgICAgICAgICAgLy8gIDk4NyBFaS1lbgorICAgICAgICAgICAgIlx1NkMzOFx1Nzk1QSIsICAgICAgICAgICAgIC8vICA5ODkgRWlzbworICAgICAgICAgICAgIlx1NkI2M1x1NjZBNiIsICAgICAgICAgICAgIC8vICA5OTAgU2hvcnlha3UKKyAgICAgICAgICAgICJcdTk1NzdcdTVGQjMiLCAgICAgICAgICAgICAvLyAgOTk1IENob3Rva3UKKyAgICAgICAgICAgICJcdTk1NzdcdTRGREQiLCAgICAgICAgICAgICAvLyAgOTk5IENob2hvCisgICAgICAgICAgICAiXHU1QkRCXHU1RjE4IiwgICAgICAgICAgICAgLy8gMTAwNCBLYW5rbworICAgICAgICAgICAgIlx1OTU3N1x1NTQ4QyIsICAgICAgICAgICAgIC8vIDEwMTIgQ2hvd2EKKyAgICAgICAgICAgICJcdTVCREJcdTRFQzEiLCAgICAgICAgICAgICAvLyAxMDE3IEthbm5pbgorICAgICAgICAgICAgIlx1NkNCQlx1NUI4OSIsICAgICAgICAgICAgIC8vIDEwMjEgSmlhbgorICAgICAgICAgICAgIlx1NEUwN1x1NUJGRiIsICAgICAgICAgICAgIC8vIDEwMjQgTWFuanUKKyAgICAgICAgICAgICJcdTk1NzdcdTUxNDMiLCAgICAgICAgICAgICAvLyAxMDI4IENob2dlbgorICAgICAgICAgICAgIlx1OTU3N1x1NjZBNiIsICAgICAgICAgICAgIC8vIDEwMzcgQ2hvcnlha3UKKyAgICAgICAgICAgICJcdTk1NzdcdTRFNDUiLCAgICAgICAgICAgICAvLyAxMDQwIENob2t5dQorICAgICAgICAgICAgIlx1NUJEQlx1NUZCMyIsICAgICAgICAgICAgIC8vIDEwNDQgS2FudG9rdQorICAgICAgICAgICAgIlx1NkMzOFx1NjI3RiIsICAgICAgICAgICAgIC8vIDEwNDYgRWlzaG8KKyAgICAgICAgICAgICJcdTU5MjlcdTU1OUMiLCAgICAgICAgICAgICAvLyAxMDUzIFRlbmdpCisgICAgICAgICAgICAiXHU1RUI3XHU1RTczIiwgICAgICAgICAgICAgLy8gMTA1OCBLb2hlaQorICAgICAgICAgICAgIlx1NkNCQlx1NjZBNiIsICAgICAgICAgICAgIC8vIDEwNjUgSmlyeWFrdQorICAgICAgICAgICAgIlx1NUVGNlx1NEU0NSIsICAgICAgICAgICAgIC8vIDEwNjkgRW5reXUKKyAgICAgICAgICAgICJcdTYyN0ZcdTRGREQiLCAgICAgICAgICAgICAvLyAxMDc0IFNob2hvCisgICAgICAgICAgICAiXHU2MjdGXHU2NkE2IiwgICAgICAgICAgICAgLy8gMTA3NyBTaG9yeWFrdQorICAgICAgICAgICAgIlx1NkMzOFx1NEZERCIsICAgICAgICAgICAgIC8vIDEwODEgRWlobworICAgICAgICAgICAgIlx1NUZEQ1x1NUZCMyIsICAgICAgICAgICAgIC8vIDEwODQgT3Rva3UKKyAgICAgICAgICAgICJcdTVCREJcdTZDQkIiLCAgICAgICAgICAgICAvLyAxMDg3IEthbmppCisgICAgICAgICAgICAiXHU1NjA5XHU0RkREIiwgICAgICAgICAgICAgLy8gMTA5NCBLYWhvCisgICAgICAgICAgICAiXHU2QzM4XHU5NTc3IiwgICAgICAgICAgICAgLy8gMTA5NiBFaWNobworICAgICAgICAgICAgIlx1NjI3Rlx1NUZCMyIsICAgICAgICAgICAgIC8vIDEwOTcgU2hvdG9rdQorICAgICAgICAgICAgIlx1NUVCN1x1NTQ4QyIsICAgICAgICAgICAgIC8vIDEwOTkgS293YQorICAgICAgICAgICAgIlx1OTU3N1x1NkNCQiIsICAgICAgICAgICAgIC8vIDExMDQgQ2hvamkKKyAgICAgICAgICAgICJcdTU2MDlcdTYyN0YiLCAgICAgICAgICAgICAvLyAxMTA2IEthc2hvCisgICAgICAgICAgICAiXHU1OTI5XHU0RUMxIiwgICAgICAgICAgICAgLy8gMTEwOCBUZW5uaW4KKyAgICAgICAgICAgICJcdTU5MjlcdTZDMzgiLCAgICAgICAgICAgICAvLyAxMTEwIFRlbi1laQorICAgICAgICAgICAgIlx1NkMzOFx1NEU0NSIsICAgICAgICAgICAgIC8vIDExMTMgRWlreXUKKyAgICAgICAgICAgICJcdTUxNDNcdTZDMzgiLCAgICAgICAgICAgICAvLyAxMTE4IEdlbi1laQorICAgICAgICAgICAgIlx1NEZERFx1NUI4OSIsICAgICAgICAgICAgIC8vIDExMjAgSG9hbgorICAgICAgICAgICAgIlx1NTkyOVx1NkNCQiIsICAgICAgICAgICAgIC8vIDExMjQgVGVuamkKKyAgICAgICAgICAgICJcdTU5MjdcdTZDQkIiLCAgICAgICAgICAgICAvLyAxMTI2IERhaWppCisgICAgICAgICAgICAiXHU1OTI5XHU2MjdGIiwgICAgICAgICAgICAgLy8gMTEzMSBUZW5zaG8KKyAgICAgICAgICAgICJcdTk1NzdcdTYyN0YiLCAgICAgICAgICAgICAvLyAxMTMyIENob3NobworICAgICAgICAgICAgIlx1NEZERFx1NUVGNiIsICAgICAgICAgICAgIC8vIDExMzUgSG9lbgorICAgICAgICAgICAgIlx1NkMzOFx1NkNCQiIsICAgICAgICAgICAgIC8vIDExNDEgRWlqaQorICAgICAgICAgICAgIlx1NUVCN1x1NkNCQiIsICAgICAgICAgICAgIC8vIDExNDIgS29qaQorICAgICAgICAgICAgIlx1NTkyOVx1OTkwQSIsICAgICAgICAgICAgIC8vIDExNDQgVGVueW8KKyAgICAgICAgICAgICJcdTRFNDVcdTVCODkiLCAgICAgICAgICAgICAvLyAxMTQ1IEt5dWFuCisgICAgICAgICAgICAiXHU0RUMxXHU1RTczIiwgICAgICAgICAgICAgLy8gMTE1MSBOaW5wZWkKKyAgICAgICAgICAgICJcdTRFNDVcdTVCRkYiLCAgICAgICAgICAgICAvLyAxMTU0IEt5dWp1CisgICAgICAgICAgICAiXHU0RkREXHU1MTQzIiwgICAgICAgICAgICAgLy8gMTE1NiBIb2dlbgorICAgICAgICAgICAgIlx1NUU3M1x1NkNCQiIsICAgICAgICAgICAgIC8vIDExNTkgSGVpamkKKyAgICAgICAgICAgICJcdTZDMzhcdTY2QTYiLCAgICAgICAgICAgICAvLyAxMTYwIEVpcnlha3UKKyAgICAgICAgICAgICJcdTVGRENcdTRGREQiLCAgICAgICAgICAgICAvLyAxMTYxIE9obworICAgICAgICAgICAgIlx1OTU3N1x1NUJEQiIsICAgICAgICAgICAgIC8vIDExNjMgQ2hva2FuCisgICAgICAgICAgICAiXHU2QzM4XHU0RTA3IiwgICAgICAgICAgICAgLy8gMTE2NSBFaW1hbgorICAgICAgICAgICAgIlx1NEVDMVx1NUI4OSIsICAgICAgICAgICAgIC8vIDExNjYgTmluLWFuCisgICAgICAgICAgICAiXHU1NjA5XHU1RkRDIiwgICAgICAgICAgICAgLy8gMTE2OSBLYW8KKyAgICAgICAgICAgICJcdTYyN0ZcdTVCODkiLCAgICAgICAgICAgICAvLyAxMTcxIFNob2FuCisgICAgICAgICAgICAiXHU1Qjg5XHU1MTQzIiwgICAgICAgICAgICAgLy8gMTE3NSBBbmdlbgorICAgICAgICAgICAgIlx1NkNCQlx1NjI3RiIsICAgICAgICAgICAgIC8vIDExNzcgSmlzaG8KKyAgICAgICAgICAgICJcdTk5MEFcdTU0OEMiLCAgICAgICAgICAgICAvLyAxMTgxIFlvd2EKKyAgICAgICAgICAgICJcdTVCRkZcdTZDMzgiLCAgICAgICAgICAgICAvLyAxMTgyIEp1ZWkKKyAgICAgICAgICAgICJcdTUxNDNcdTY2QTYiLCAgICAgICAgICAgICAvLyAxMTg0IEdlbnJ5dWt1CisgICAgICAgICAgICAiXHU2NTg3XHU2Q0JCIiwgICAgICAgICAgICAgLy8gMTE4NSBCdW5qaQorICAgICAgICAgICAgIlx1NUVGQVx1NEU0NSIsICAgICAgICAgICAgIC8vIDExOTAgS2Vua3l1CisgICAgICAgICAgICAiXHU2QjYzXHU2Q0JCIiwgICAgICAgICAgICAgLy8gMTE5OSBTaG9qaQorICAgICAgICAgICAgIlx1NUVGQVx1NEVDMSIsICAgICAgICAgICAgIC8vIDEyMDEgS2VubmluCisgICAgICAgICAgICAiXHU1MTQzXHU0RTQ1IiwgICAgICAgICAgICAgLy8gMTIwNCBHZW5reXUKKyAgICAgICAgICAgICJcdTVFRkFcdTZDMzgiLCAgICAgICAgICAgICAvLyAxMjA2IEtlbi1laQorICAgICAgICAgICAgIlx1NjI3Rlx1NTE0MyIsICAgICAgICAgICAgIC8vIDEyMDcgU2hvZ2VuCisgICAgICAgICAgICAiXHU1RUZBXHU2NkE2IiwgICAgICAgICAgICAgLy8gMTIxMSBLZW5yeWFrdQorICAgICAgICAgICAgIlx1NUVGQVx1NEZERCIsICAgICAgICAgICAgIC8vIDEyMTMgS2VucG8KKyAgICAgICAgICAgICJcdTYyN0ZcdTRFNDUiLCAgICAgICAgICAgICAvLyAxMjE5IFNob2t5dQorICAgICAgICAgICAgIlx1OEM5RVx1NUZEQyIsICAgICAgICAgICAgIC8vIDEyMjIgSm9vCisgICAgICAgICAgICAiXHU1MTQzXHU0RUMxIiwgICAgICAgICAgICAgLy8gMTIyNCBHZW5uaW4KKyAgICAgICAgICAgICJcdTU2MDlcdTc5ODQiLCAgICAgICAgICAgICAvLyAxMjI1IEthcm9rdQorICAgICAgICAgICAgIlx1NUI4OVx1OEM5RSIsICAgICAgICAgICAgIC8vIDEyMjcgQW50ZWkKKyAgICAgICAgICAgICJcdTVCREJcdTU1OUMiLCAgICAgICAgICAgICAvLyAxMjI5IEthbmtpCisgICAgICAgICAgICAiXHU4QzlFXHU2QzM4IiwgICAgICAgICAgICAgLy8gMTIzMiBKb2VpCisgICAgICAgICAgICAiXHU1OTI5XHU3OThGIiwgICAgICAgICAgICAgLy8gMTIzMyBUZW1wdWt1CisgICAgICAgICAgICAiXHU2NTg3XHU2NkE2IiwgICAgICAgICAgICAgLy8gMTIzNCBCdW5yeWFrdQorICAgICAgICAgICAgIlx1NTYwOVx1Nzk4RSIsICAgICAgICAgICAgIC8vIDEyMzUgS2F0ZWkKKyAgICAgICAgICAgICJcdTY2QTZcdTRFQzEiLCAgICAgICAgICAgICAvLyAxMjM4IFJ5YWt1bmluCisgICAgICAgICAgICAiXHU1RUY2XHU1RkRDIiwgICAgICAgICAgICAgLy8gMTIzOSBFbi1vCisgICAgICAgICAgICAiXHU0RUMxXHU2Q0JCIiwgICAgICAgICAgICAgLy8gMTI0MCBOaW5qaQorICAgICAgICAgICAgIlx1NUJEQlx1NTE0MyIsICAgICAgICAgICAgIC8vIDEyNDMgS2FuZ2VuCisgICAgICAgICAgICAiXHU1QjlEXHU2Q0JCIiwgICAgICAgICAgICAgLy8gMTI0NyBIb2ppCisgICAgICAgICAgICAiXHU1RUZBXHU5NTc3IiwgICAgICAgICAgICAgLy8gMTI0OSBLZW5jaG8KKyAgICAgICAgICAgICJcdTVFQjdcdTUxNDMiLCAgICAgICAgICAgICAvLyAxMjU2IEtvZ2VuCisgICAgICAgICAgICAiXHU2QjYzXHU1NjA5IiwgICAgICAgICAgICAgLy8gMTI1NyBTaG9rYQorICAgICAgICAgICAgIlx1NkI2M1x1NTE0MyIsICAgICAgICAgICAgIC8vIDEyNTkgU2hvZ2VuCisgICAgICAgICAgICAiXHU2NTg3XHU1RkRDIiwgICAgICAgICAgICAgLy8gMTI2MCBCdW4tbworICAgICAgICAgICAgIlx1NUYxOFx1OTU3NyIsICAgICAgICAgICAgIC8vIDEyNjEgS29jaG8KKyAgICAgICAgICAgICJcdTY1ODdcdTZDMzgiLCAgICAgICAgICAgICAvLyAxMjY0IEJ1bi1laQorICAgICAgICAgICAgIlx1NUVGQVx1NkNCQiIsICAgICAgICAgICAgIC8vIDEyNzUgS2VuamkKKyAgICAgICAgICAgICJcdTVGMThcdTVCODkiLCAgICAgICAgICAgICAvLyAxMjc4IEtvYW4KKyAgICAgICAgICAgICJcdTZCNjNcdTVGREMiLCAgICAgICAgICAgICAvLyAxMjg4IFNob28KKyAgICAgICAgICAgICJcdTZDMzhcdTRFQzEiLCAgICAgICAgICAgICAvLyAxMjkzIEVpbmluCisgICAgICAgICAgICAiXHU2QjYzXHU1Qjg5IiwgICAgICAgICAgICAgLy8gMTI5OSBTaG9hbgorICAgICAgICAgICAgIlx1NEU3RVx1NTE0MyIsICAgICAgICAgICAgIC8vIDEzMDIgS2VuZ2VuCisgICAgICAgICAgICAiXHU1NjA5XHU1MTQzIiwgICAgICAgICAgICAgLy8gMTMwMyBLYWdlbgorICAgICAgICAgICAgIlx1NUZCM1x1NkNCQiIsICAgICAgICAgICAgIC8vIDEzMDYgVG9rdWppCisgICAgICAgICAgICAiXHU1RUY2XHU2MTc2IiwgICAgICAgICAgICAgLy8gMTMwOCBFbmtlaQorICAgICAgICAgICAgIlx1NUZEQ1x1OTU3NyIsICAgICAgICAgICAgIC8vIDEzMTEgT2NobworICAgICAgICAgICAgIlx1NkI2M1x1NTQ4QyIsICAgICAgICAgICAgIC8vIDEzMTIgU2hvd2EKKyAgICAgICAgICAgICJcdTY1ODdcdTRGREQiLCAgICAgICAgICAgICAvLyAxMzE3IEJ1bnBvCisgICAgICAgICAgICAiXHU1MTQzXHU1RkRDIiwgICAgICAgICAgICAgLy8gMTMxOSBHZW5vCisgICAgICAgICAgICAiXHU1MTQzXHU0RUE4IiwgICAgICAgICAgICAgLy8gMTMyMSBHZW5reW8KKyAgICAgICAgICAgICJcdTZCNjNcdTRFMkQiLCAgICAgICAgICAgICAvLyAxMzI0IFNob2NodQorICAgICAgICAgICAgIlx1NTYwOVx1NjZBNiIsICAgICAgICAgICAgIC8vIDEzMjYgS2FyZWtpCisgICAgICAgICAgICAiXHU1MTQzXHU1RkIzIiwgICAgICAgICAgICAgLy8gMTMyOSBHZW50b2t1CisgICAgICAgICAgICAiXHU1MTQzXHU1RjE4IiwgICAgICAgICAgICAgLy8gMTMzMSBHZW5rbworICAgICAgICAgICAgIlx1NUVGQVx1NkI2NiIsICAgICAgICAgICAgIC8vIDEzMzQgS2VtbXUKKyAgICAgICAgICAgICJcdTVFRjZcdTUxNDMiLCAgICAgICAgICAgICAvLyAxMzM2IEVuZ2VuCisgICAgICAgICAgICAiXHU4MjA4XHU1NkZEIiwgICAgICAgICAgICAgLy8gMTM0MCBLb2tva3UKKyAgICAgICAgICAgICJcdTZCNjNcdTVFNzMiLCAgICAgICAgICAgICAvLyAxMzQ2IFNob2hlaQorICAgICAgICAgICAgIlx1NUVGQVx1NUZCMyIsICAgICAgICAgICAgIC8vIDEzNzAgS2VudG9rdQorICAgICAgICAgICAgIlx1NjU4N1x1NEUyRCIsICAgICAgICAgICAgIC8vIDEzNzIgQnVuY2h1CisgICAgICAgICAgICAiXHU1OTI5XHU2Mzg4IiwgICAgICAgICAgICAgLy8gMTM3NSBUZW5qdQorICAgICAgICAgICAgIlx1NUYxOFx1NTQ4QyIsICAgICAgICAgICAgIC8vIDEzODEgS293YQorICAgICAgICAgICAgIlx1NTE0M1x1NEUyRCIsICAgICAgICAgICAgIC8vIDEzODQgR2VuY2h1CisgICAgICAgICAgICAiXHU4MUYzXHU1RkIzIiwgICAgICAgICAgICAgLy8gMTM4NCBNZWl0b2t1CisgICAgICAgICAgICAiXHU1RUI3XHU2NkE2IiwgICAgICAgICAgICAgLy8gMTM3OSBLb3J5YWt1CisgICAgICAgICAgICAiXHU1NjA5XHU2MTc2IiwgICAgICAgICAgICAgLy8gMTM4NyBLYWtlaQorICAgICAgICAgICAgIlx1NUVCN1x1NUZEQyIsICAgICAgICAgICAgIC8vIDEzODkgS29vCisgICAgICAgICAgICAiXHU2NjBFXHU1RkIzIiwgICAgICAgICAgICAgLy8gMTM5MCBNZWl0b2t1CisgICAgICAgICAgICAiXHU1RkRDXHU2QzM4IiwgICAgICAgICAgICAgLy8gMTM5NCBPZWkKKyAgICAgICAgICAgICJcdTZCNjNcdTk1NzciLCAgICAgICAgICAgICAvLyAxNDI4IFNob2NobworICAgICAgICAgICAgIlx1NkMzOFx1NEVBQiIsICAgICAgICAgICAgIC8vIDE0MjkgRWlreW8KKyAgICAgICAgICAgICJcdTU2MDlcdTU0MDkiLCAgICAgICAgICAgICAvLyAxNDQxIEtha2l0c3UKKyAgICAgICAgICAgICJcdTY1ODdcdTVCODkiLCAgICAgICAgICAgICAvLyAxNDQ0IEJ1bi1hbgorICAgICAgICAgICAgIlx1NUI5RFx1NUZCMyIsICAgICAgICAgICAgIC8vIDE0NDkgSG90b2t1CisgICAgICAgICAgICAiXHU0RUFCXHU1RkIzIiwgICAgICAgICAgICAgLy8gMTQ1MiBLeW90b2t1CisgICAgICAgICAgICAiXHU1RUI3XHU2QjYzIiwgICAgICAgICAgICAgLy8gMTQ1NSBLb3NobworICAgICAgICAgICAgIlx1OTU3N1x1Nzk4NCIsICAgICAgICAgICAgIC8vIDE0NTcgQ2hvcm9rdQorICAgICAgICAgICAgIlx1NUJEQlx1NkI2MyIsICAgICAgICAgICAgIC8vIDE0NjAgS2Fuc2hvCisgICAgICAgICAgICAiXHU2NTg3XHU2QjYzIiwgICAgICAgICAgICAgLy8gMTQ2NiBCdW5zaG8KKyAgICAgICAgICAgICJcdTVGRENcdTRFQzEiLCAgICAgICAgICAgICAvLyAxNDY3IE9uaW4KKyAgICAgICAgICAgICJcdTY1ODdcdTY2MEUiLCAgICAgICAgICAgICAvLyAxNDY5IEJ1bm1laQorICAgICAgICAgICAgIlx1OTU3N1x1NEVBQiIsICAgICAgICAgICAgIC8vIDE0ODcgQ2hva3lvCisgICAgICAgICAgICAiXHU1RUY2XHU1RkIzIiwgICAgICAgICAgICAgLy8gMTQ4OSBFbnRva3UKKyAgICAgICAgICAgICJcdTY2MEVcdTVGREMiLCAgICAgICAgICAgICAvLyAxNDkyIE1laW8KKyAgICAgICAgICAgICJcdTY1ODdcdTRFODAiLCAgICAgICAgICAgICAvLyAxNTAxIEJ1bmtpCisgICAgICAgICAgICAiXHU2QzM4XHU2QjYzIiwgICAgICAgICAgICAgLy8gMTUwNCBFaXNobworICAgICAgICAgICAgIlx1NTkyN1x1NkMzOCIsICAgICAgICAgICAgIC8vIDE1MjEgVGFpZWkKKyAgICAgICAgICAgICJcdTRFQUJcdTc5ODQiLCAgICAgICAgICAgICAvLyAxNTI4IEt5b3Jva3UKKyAgICAgICAgICAgICJcdTU5MjlcdTY1ODciLCAgICAgICAgICAgICAvLyAxNTMyIFRlbm1vbgorICAgICAgICAgICAgIlx1NUYxOFx1NkNCQiIsICAgICAgICAgICAgIC8vIDE1NTUgS29qaQorICAgICAgICAgICAgIlx1NkMzOFx1Nzk4NCIsICAgICAgICAgICAgIC8vIDE1NTggRWlyb2t1CisgICAgICAgICAgICAiXHU1MTQzXHU0RTgwIiwgICAgICAgICAgICAgLy8gMTU3MCBHZW5raQorICAgICAgICAgICAgIlx1NTkyOVx1NkI2MyIsICAgICAgICAgICAgIC8vIDE1NzMgVGVuc2hvCisgICAgICAgICAgICAiXHU2NTg3XHU3OTg0IiwgICAgICAgICAgICAgLy8gMTU5MiBCdW5yb2t1CisgICAgICAgICAgICAiXHU2MTc2XHU5NTc3IiwgICAgICAgICAgICAgLy8gMTU5NiBLZWljaG8KKyAgICAgICAgICAgICJcdTUxNDNcdTU0OEMiLCAgICAgICAgICAgICAvLyAxNjE1IEdlbndhCisgICAgICAgICAgICAiXHU1QkRCXHU2QzM4IiwgICAgICAgICAgICAgLy8gMTYyNCBLYW4tZWkKKyAgICAgICAgICAgICJcdTZCNjNcdTRGREQiLCAgICAgICAgICAgICAvLyAxNjQ0IFNob2hvCisgICAgICAgICAgICAiXHU2MTc2XHU1Qjg5IiwgICAgICAgICAgICAgLy8gMTY0OCBLZWlhbgorICAgICAgICAgICAgIlx1NjI3Rlx1NUZEQyIsICAgICAgICAgICAgIC8vIDE2NTIgU2hvbworICAgICAgICAgICAgIlx1NjYwRVx1NjZBNiIsICAgICAgICAgICAgIC8vIDE2NTUgTWVpcnlha3UKKyAgICAgICAgICAgICJcdTRFMDdcdTZDQkIiLCAgICAgICAgICAgICAvLyAxNjU4IE1hbmppCisgICAgICAgICAgICAiXHU1QkRCXHU2NTg3IiwgICAgICAgICAgICAgLy8gMTY2MSBLYW5idW4KKyAgICAgICAgICAgICJcdTVFRjZcdTVCOUQiLCAgICAgICAgICAgICAvLyAxNjczIEVucG8KKyAgICAgICAgICAgICJcdTU5MjlcdTU0OEMiLCAgICAgICAgICAgICAvLyAxNjgxIFRlbndhCisgICAgICAgICAgICAiXHU4QzlFXHU0RUFCIiwgICAgICAgICAgICAgLy8gMTY4NCBKb2t5bworICAgICAgICAgICAgIlx1NTE0M1x1Nzk4NCIsICAgICAgICAgICAgIC8vIDE2ODggR2Vucm9rdQorICAgICAgICAgICAgIlx1NUI5RFx1NkMzOCIsICAgICAgICAgICAgIC8vIDE3MDQgSG9laQorICAgICAgICAgICAgIlx1NkI2M1x1NUZCMyIsICAgICAgICAgICAgIC8vIDE3MTEgU2hvdG9rdQorICAgICAgICAgICAgIlx1NEVBQlx1NEZERCIsICAgICAgICAgICAgIC8vIDE3MTYgS3lvaG8KKyAgICAgICAgICAgICJcdTUxNDNcdTY1ODciLCAgICAgICAgICAgICAvLyAxNzM2IEdlbmJ1bgorICAgICAgICAgICAgIlx1NUJEQlx1NEZERCIsICAgICAgICAgICAgIC8vIDE3NDEgS2FucG8KKyAgICAgICAgICAgICJcdTVFRjZcdTRFQUIiLCAgICAgICAgICAgICAvLyAxNzQ0IEVua3lvCisgICAgICAgICAgICAiXHU1QkRCXHU1RUY2IiwgICAgICAgICAgICAgLy8gMTc0OCBLYW4tZW4KKyAgICAgICAgICAgICJcdTVCOURcdTY2QTYiLCAgICAgICAgICAgICAvLyAxNzUxIEhvcnlha3UKKyAgICAgICAgICAgICJcdTY2MEVcdTU0OEMiLCAgICAgICAgICAgICAvLyAxNzY0IE1laXdhCisgICAgICAgICAgICAiXHU1Qjg5XHU2QzM4IiwgICAgICAgICAgICAgLy8gMTc3MiBBbi1laQorICAgICAgICAgICAgIlx1NTkyOVx1NjYwRSIsICAgICAgICAgICAgIC8vIDE3ODEgVGVubWVpCisgICAgICAgICAgICAiXHU1QkRCXHU2NTNGIiwgICAgICAgICAgICAgLy8gMTc4OSBLYW5zZWkKKyAgICAgICAgICAgICJcdTRFQUJcdTU0OEMiLCAgICAgICAgICAgICAvLyAxODAxIEt5b3dhCisgICAgICAgICAgICAiXHU2NTg3XHU1MzE2IiwgICAgICAgICAgICAgLy8gMTgwNCBCdW5rYQorICAgICAgICAgICAgIlx1NjU4N1x1NjUzRiIsICAgICAgICAgICAgIC8vIDE4MTggQnVuc2VpCisgICAgICAgICAgICAiXHU1OTI5XHU0RkREIiwgICAgICAgICAgICAgLy8gMTgzMCBUZW5wbworICAgICAgICAgICAgIlx1NUYxOFx1NTMxNiIsICAgICAgICAgICAgIC8vIDE4NDQgS29rYQorICAgICAgICAgICAgIlx1NTYwOVx1NkMzOCIsICAgICAgICAgICAgIC8vIDE4NDggS2FlaQorICAgICAgICAgICAgIlx1NUI4OVx1NjUzRiIsICAgICAgICAgICAgIC8vIDE4NTQgQW5zZWkKKyAgICAgICAgICAgICJcdTRFMDdcdTVFRjYiLCAgICAgICAgICAgICAvLyAxODYwIE1hbi1lbgorICAgICAgICAgICAgIlx1NjU4N1x1NEU0NSIsICAgICAgICAgICAgIC8vIDE4NjEgQnVua3l1CisgICAgICAgICAgICAiXHU1MTQzXHU2Q0JCIiwgICAgICAgICAgICAgLy8gMTg2NCBHZW5qaQorICAgICAgICAgICAgIlx1NjE3Nlx1NUZEQyIsICAgICAgICAgICAgIC8vIDE4NjUgS2VpbworICAgICAgICAgICAgIlx1NjYwRVx1NkNCQiIsICAgICAgICAgICAgIC8vIDE4NjggTWVpamkKKyAgICAgICAgICAgICJcdTU5MjdcdTZCNjMiLCAgICAgICAgICAgICAvLyAxOTEyIFRhaXNobworICAgICAgICAgICAgIlx1NjYyRFx1NTQ4QyIsICAgICAgICAgICAgIC8vIDE5MjYgU2hvd2EKKyAgICAgICAgICAgICJcdTVFNzNcdTYyMTAiLCAgICAgICAgICAgICAvLyAxOTg5IEhlaXNlaQorICAgICAgICB9IH0sCisgICAgfTsKKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgT2JqZWN0W11bXSBnZXRDb250ZW50cygpIHsKKyAgICAgICAgcmV0dXJuIGZDb250ZW50czsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvcGFja2FnZS5odG1sIGIvc3JjL2NvbS9pYm0vdXRpbC9yZXNvdXJjZXMvcGFja2FnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE5ZjY0YTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvY29tL2libS91dGlsL3Jlc291cmNlcy9wYWNrYWdlLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzwhLS0gIENvcHlyaWdodCAoQykgMjAwMCwgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQKKyAgb3RoZXJzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorCisgICRTb3VyY2U6IC94c3JsL05zdm4vaWN1L2ljdTRqL3NyYy9jb20vaWJtL3V0aWwvcmVzb3VyY2VzL0F0dGljL3BhY2thZ2UuaHRtbCx2ICQKKyAgJFJldmlzaW9uOiAxLjEgJAorICAkRGF0ZTogMjAwMC8wMy8xNSAyMTozNTo1MyAkCistLT4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIj4KK1Jlc291cmNlcyB1c2VkIGJ5IGNsYXNzZXMgaW4gdGhlIGNvbS5pYm0udXRpbCBwYWNrYWdlLgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9kYXRhL2hvbGlkYXlzX2pwLnVjcyBiL3NyYy9kYXRhL2hvbGlkYXlzX2pwLnVjcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yZTZiYzQ5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2RhdGEvaG9saWRheXNfanAudWNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9kYXRhL3RoYWk2LnVjcyBiL3NyYy9kYXRhL3RoYWk2LnVjcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iYWIwNTQzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2RhdGEvdGhhaTYudWNzCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3NyYy9kYXRhL3VuaWNvZGUvQ29tcG9zaXRpb25FeGNsdXNpb25zLTEudHh0IGIvc3JjL2RhdGEvdW5pY29kZS9Db21wb3NpdGlvbkV4Y2x1c2lvbnMtMS50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNWVhNDZhZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9kYXRhL3VuaWNvZGUvQ29tcG9zaXRpb25FeGNsdXNpb25zLTEudHh0CkBAIC0wLDAgKzEsMTQzIEBACisjIENvbXBvc2l0aW9uIEV4Y2x1c2lvbnMKKyMgVGhpcyBmaWxlIGxpc3RzIHRoZSBjaGFyYWN0ZXJzIGZyb20gdGhlIFVUUiAjMTUgQ29tcG9zaXRpb24gRXhjbHVzaW9uIFRhYmxlLgorIworIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlCisjIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyMTUvI1ByaW1hcnkgRXhjbHVzaW9uIExpc3QgVGFibGUKKworIyAoMSkgU2NyaXB0IFNwZWNpZmljcworIyBUaGlzIGxpc3Qgb2YgY2hhcmFjdGVycyBjYW5ub3QgYmUgZGVyaXZlZCBmcm9tIHRoZSBVbmljb2RlRGF0YSBmaWxlLgorCiswOTU4ICMgREVWQU5BR0FSSSBMRVRURVIgUUEKKzA5NTkgIyBERVZBTkFHQVJJIExFVFRFUiBLSEhBCiswOTVBICMgREVWQU5BR0FSSSBMRVRURVIgR0hIQQorMDk1QiAjIERFVkFOQUdBUkkgTEVUVEVSIFpBCiswOTVDICMgREVWQU5BR0FSSSBMRVRURVIgRERESEEKKzA5NUQgIyBERVZBTkFHQVJJIExFVFRFUiBSSEEKKzA5NUUgIyBERVZBTkFHQVJJIExFVFRFUiBGQQorMDk1RiAjIERFVkFOQUdBUkkgTEVUVEVSIFlZQQorMDlEQyAjIEJFTkdBTEkgTEVUVEVSIFJSQQorMDlERCAjIEJFTkdBTEkgTEVUVEVSIFJIQQorMDlERiAjIEJFTkdBTEkgTEVUVEVSIFlZQQorMEEzMyAjIEdVUk1VS0hJIExFVFRFUiBMTEEKKzBBMzYgIyBHVVJNVUtISSBMRVRURVIgU0hBCiswQTU5ICMgR1VSTVVLSEkgTEVUVEVSIEtISEEKKzBBNUEgIyBHVVJNVUtISSBMRVRURVIgR0hIQQorMEE1QiAjIEdVUk1VS0hJIExFVFRFUiBaQQorMEE1RSAjIEdVUk1VS0hJIExFVFRFUiBGQQorMEI1QyAjIE9SSVlBIExFVFRFUiBSUkEKKzBCNUQgIyBPUklZQSBMRVRURVIgUkhBCiswRjQzICMgVElCRVRBTiBMRVRURVIgR0hBCiswRjREICMgVElCRVRBTiBMRVRURVIgRERIQQorMEY1MiAjIFRJQkVUQU4gTEVUVEVSIERIQQorMEY1NyAjIFRJQkVUQU4gTEVUVEVSIEJIQQorMEY1QyAjIFRJQkVUQU4gTEVUVEVSIERaSEEKKzBGNjkgIyBUSUJFVEFOIExFVFRFUiBLU1NBCiswRjc2ICMgVElCRVRBTiBWT1dFTCBTSUdOIFZPQ0FMSUMgUgorMEY3OCAjIFRJQkVUQU4gVk9XRUwgU0lHTiBWT0NBTElDIEwKKzBGOTMgIyBUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgR0hBCiswRjlEICMgVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERESEEKKzBGQTIgIyBUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgREhBCiswRkE3ICMgVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEJIQQorMEZBQyAjIFRJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBEWkhBCiswRkI5ICMgVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEtTU0EKK0ZCMUYgIyBIRUJSRVcgTElHQVRVUkUgWUlERElTSCBZT0QgWU9EIFBBVEFICitGQjJBICMgSEVCUkVXIExFVFRFUiBTSElOIFdJVEggU0hJTiBET1QKK0ZCMkIgIyBIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBTSU4gRE9UCitGQjJDICMgSEVCUkVXIExFVFRFUiBTSElOIFdJVEggREFHRVNIIEFORCBTSElOIERPVAorRkIyRCAjIEhFQlJFVyBMRVRURVIgU0hJTiBXSVRIIERBR0VTSCBBTkQgU0lOIERPVAorRkIyRSAjIEhFQlJFVyBMRVRURVIgQUxFRiBXSVRIIFBBVEFICitGQjJGICMgSEVCUkVXIExFVFRFUiBBTEVGIFdJVEggUUFNQVRTCitGQjMwICMgSEVCUkVXIExFVFRFUiBBTEVGIFdJVEggTUFQSVEKK0ZCMzEgIyBIRUJSRVcgTEVUVEVSIEJFVCBXSVRIIERBR0VTSAorRkIzMiAjIEhFQlJFVyBMRVRURVIgR0lNRUwgV0lUSCBEQUdFU0gKK0ZCMzMgIyBIRUJSRVcgTEVUVEVSIERBTEVUIFdJVEggREFHRVNICitGQjM0ICMgSEVCUkVXIExFVFRFUiBIRSBXSVRIIE1BUElRCitGQjM1ICMgSEVCUkVXIExFVFRFUiBWQVYgV0lUSCBEQUdFU0gKK0ZCMzYgIyBIRUJSRVcgTEVUVEVSIFpBWUlOIFdJVEggREFHRVNICitGQjM4ICMgSEVCUkVXIExFVFRFUiBURVQgV0lUSCBEQUdFU0gKK0ZCMzkgIyBIRUJSRVcgTEVUVEVSIFlPRCBXSVRIIERBR0VTSAorRkIzQSAjIEhFQlJFVyBMRVRURVIgRklOQUwgS0FGIFdJVEggREFHRVNICitGQjNCICMgSEVCUkVXIExFVFRFUiBLQUYgV0lUSCBEQUdFU0gKK0ZCM0MgIyBIRUJSRVcgTEVUVEVSIExBTUVEIFdJVEggREFHRVNICitGQjNFICMgSEVCUkVXIExFVFRFUiBNRU0gV0lUSCBEQUdFU0gKK0ZCNDAgIyBIRUJSRVcgTEVUVEVSIE5VTiBXSVRIIERBR0VTSAorRkI0MSAjIEhFQlJFVyBMRVRURVIgU0FNRUtIIFdJVEggREFHRVNICitGQjQzICMgSEVCUkVXIExFVFRFUiBGSU5BTCBQRSBXSVRIIERBR0VTSAorRkI0NCAjIEhFQlJFVyBMRVRURVIgUEUgV0lUSCBEQUdFU0gKK0ZCNDYgIyBIRUJSRVcgTEVUVEVSIFRTQURJIFdJVEggREFHRVNICitGQjQ3ICMgSEVCUkVXIExFVFRFUiBRT0YgV0lUSCBEQUdFU0gKK0ZCNDggIyBIRUJSRVcgTEVUVEVSIFJFU0ggV0lUSCBEQUdFU0gKK0ZCNDkgIyBIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBEQUdFU0gKK0ZCNEEgIyBIRUJSRVcgTEVUVEVSIFRBViBXSVRIIERBR0VTSAorRkI0QiAjIEhFQlJFVyBMRVRURVIgVkFWIFdJVEggSE9MQU0KK0ZCNEMgIyBIRUJSRVcgTEVUVEVSIEJFVCBXSVRIIFJBRkUKK0ZCNEQgIyBIRUJSRVcgTEVUVEVSIEtBRiBXSVRIIFJBRkUKK0ZCNEUgIyBIRUJSRVcgTEVUVEVSIFBFIFdJVEggUkFGRQorCisjICgyKSBQb3N0IENvbXBvc2l0aW9uIFZlcnNpb24gY2hhcmFjdGVycworIyBUaGVzZSBjaGFyYWN0ZXJzIGNhbm5vdCBiZSBkZXJpdmVkIGZyb20gdGhlIFVuaWNvZGVEYXRhIGZpbGUuCisjIChUaGVyZSBhcmUgbm8gY2hhcmFjdGVycyBpbiB0aGlzIGNhdGVnb3J5IGluIHRoaXMgdmVyc2lvbiBvZiBVbmljb2RlLikKKworIyAoMykgU2luZ2xldG9uIERlY29tcG9zaXRpb25zCisjIFRoZXNlIGNoYXJhY3RlcnMgY2FuIGJlIGRlcml2ZWQgZnJvbSB0aGUgVW5pY29kZURhdGEgZmlsZQorIyBieSBpbmNsdWRpbmcgYWxsIGNoYXJhY3RlcnMgd2hvc2UgY2Fub25pY2FsIGRlY29tcG9zaXRpb24KKyMgY29uc2lzdHMgb2YgYSBzaW5nbGUgY2hhcmFjdGVyLgorIyBUaGVzZSBjaGFyYWN0ZXJzIGFyZSBzaW1wbHkgcXVvdGVkIGhlcmUgZm9yIHJlZmVyZW5jZS4KKworIyAwMzQwIENPTUJJTklORyBHUkFWRSBUT05FIE1BUksKKyMgMDM0MSBDT01CSU5JTkcgQUNVVEUgVE9ORSBNQVJLCisjIDAzNDMgQ09NQklOSU5HIEdSRUVLIEtPUk9OSVMKKyMgMDM3NCBHUkVFSyBOVU1FUkFMIFNJR04KKyMgMDM3RSBHUkVFSyBRVUVTVElPTiBNQVJLCisjIDAzODcgR1JFRUsgQU5PIFRFTEVJQQorIyAxRjcxIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIE9YSUEKKyMgMUY3MyBHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIE9YSUEKKyMgMUY3NSBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggT1hJQQorIyAxRjc3IEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggT1hJQQorIyAxRjc5IEdSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggT1hJQQorIyAxRjdCIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggT1hJQQorIyAxRjdEIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIE9YSUEKKyMgMUZCQiBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIE9YSUEKKyMgMUZCRSBHUkVFSyBQUk9TR0VHUkFNTUVOSQorIyAxRkM5IEdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBPWElBCisjIDFGQ0IgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggT1hJQQorIyAxRkQzIEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBIEFORCBPWElBCisjIDFGREIgR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIE9YSUEKKyMgMUZFMyBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgT1hJQQorIyAxRkVCIEdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBPWElBCisjIDFGRUUgR1JFRUsgRElBTFlUSUtBIEFORCBPWElBCisjIDFGRUYgR1JFRUsgVkFSSUEKKyMgMUZGOSBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggT1hJQQorIyAxRkZCIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggT1hJQQorIyAxRkZEIEdSRUVLIE9YSUEKKyMgMjAwMCBFTiBRVUFECisjIDIwMDEgRU0gUVVBRAorIyAyMTI2IE9ITSBTSUdOCisjIDIxMkEgS0VMVklOIFNJR04KKyMgMjEyQiBBTkdTVFJPTSBTSUdOCisjIDIzMjkgTEVGVC1QT0lOVElORyBBTkdMRSBCUkFDS0VUCisjIDIzMkEgUklHSFQtUE9JTlRJTkcgQU5HTEUgQlJBQ0tFVAorIyBGOTAwIENKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTAwCisjLi4gRkEwRCBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwRAorIyBGQTEwIENKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTEwCisjIEZBMTIgQ0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMTIKKyMgRkExNSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExNQorIy4uIEZBMUUgQ0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMUUKKyMgRkEyMCBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyMAorIyBGQTIyIENKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTIyCisjIEZBMjUgQ0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMjUKKyMgRkEyNiBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyNgorIyBGQTJBIENKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTJBCisjLi4gRkEyRCBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyRAorCisjICg0KSBOb24tU3RhcnRlciBEZWNvbXBvc2l0aW9ucworIyBUaGVzZSBjaGFyYWN0ZXJzIGNhbiBiZSBkZXJpdmVkIGZyb20gdGhlIFVuaWNvZGVEYXRhIGZpbGUKKyMgYnkgaW5jbHVkaW5nIGFsbCBjaGFyYWN0ZXJzIHdob3NlIGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uIGNvbnNpc3RzCisjIG9mIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycywgdGhlIGZpcnN0IG9mIHdoaWNoIGhhcyBhIGNhbm9uaWNhbAorIyBjbGFzcyBvZiB6ZXJvLgorIyBUaGVzZSBjaGFyYWN0ZXJzIGFyZSBzaW1wbHkgcXVvdGVkIGhlcmUgZm9yIHJlZmVyZW5jZS4KKworIyAwMzQ0IENPTUJJTklORyBHUkVFSyBESUFMWVRJS0EgVE9OT1MKKyMgMEY3MyBUSUJFVEFOIFZPV0VMIFNJR04gSUkKKyMgMEY3NSBUSUJFVEFOIFZPV0VMIFNJR04gVVUKKyMgMEY4MSBUSUJFVEFOIFZPV0VMIFNJR04gUkVWRVJTRUQgSUkKZGlmZiAtLWdpdCBhL3NyYy9kYXRhL3VuaWNvZGUvQ29tcG9zaXRpb25FeGNsdXNpb25zLnR4dCBiL3NyYy9kYXRhL3VuaWNvZGUvQ29tcG9zaXRpb25FeGNsdXNpb25zLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hOTVkMzlhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2RhdGEvdW5pY29kZS9Db21wb3NpdGlvbkV4Y2x1c2lvbnMudHh0CkBAIC0wLDAgKzEsMTQ1IEBACisjIENvbXBvc2l0aW9uIEV4Y2x1c2lvbnMKKyMgVGhpcyBmaWxlIGxpc3RzIHRoZSBjaGFyYWN0ZXJzIGZyb20gdGhlIFVUUiAjMTUgQ29tcG9zaXRpb24gRXhjbHVzaW9uIFRhYmxlLgorIworIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlCisjIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9yZXBvcnRzL3RyMTUvI1ByaW1hcnkgRXhjbHVzaW9uIExpc3QgVGFibGUKKworIyAoMSkgU2NyaXB0IFNwZWNpZmljcworIyBUaGlzIGxpc3Qgb2YgY2hhcmFjdGVycyBjYW5ub3QgYmUgZGVyaXZlZCBmcm9tIHRoZSBVbmljb2RlRGF0YSBmaWxlLgorCiswOTU4ICMgREVWQU5BR0FSSSBMRVRURVIgUUEKKzA5NTkgIyBERVZBTkFHQVJJIExFVFRFUiBLSEhBCiswOTVBICMgREVWQU5BR0FSSSBMRVRURVIgR0hIQQorMDk1QiAjIERFVkFOQUdBUkkgTEVUVEVSIFpBCiswOTVDICMgREVWQU5BR0FSSSBMRVRURVIgRERESEEKKzA5NUQgIyBERVZBTkFHQVJJIExFVFRFUiBSSEEKKzA5NUUgIyBERVZBTkFHQVJJIExFVFRFUiBGQQorMDk1RiAjIERFVkFOQUdBUkkgTEVUVEVSIFlZQQorMDlEQyAjIEJFTkdBTEkgTEVUVEVSIFJSQQorMDlERCAjIEJFTkdBTEkgTEVUVEVSIFJIQQorMDlERiAjIEJFTkdBTEkgTEVUVEVSIFlZQQorMEEzMyAjIEdVUk1VS0hJIExFVFRFUiBMTEEKKzBBMzYgIyBHVVJNVUtISSBMRVRURVIgU0hBCiswQTU5ICMgR1VSTVVLSEkgTEVUVEVSIEtISEEKKzBBNUEgIyBHVVJNVUtISSBMRVRURVIgR0hIQQorMEE1QiAjIEdVUk1VS0hJIExFVFRFUiBaQQorMEE1RSAjIEdVUk1VS0hJIExFVFRFUiBGQQorMEI1QyAjIE9SSVlBIExFVFRFUiBSUkEKKzBCNUQgIyBPUklZQSBMRVRURVIgUkhBCiswRjQzICMgVElCRVRBTiBMRVRURVIgR0hBCiswRjREICMgVElCRVRBTiBMRVRURVIgRERIQQorMEY1MiAjIFRJQkVUQU4gTEVUVEVSIERIQQorMEY1NyAjIFRJQkVUQU4gTEVUVEVSIEJIQQorMEY1QyAjIFRJQkVUQU4gTEVUVEVSIERaSEEKKzBGNjkgIyBUSUJFVEFOIExFVFRFUiBLU1NBCiswRjc2ICMgVElCRVRBTiBWT1dFTCBTSUdOIFZPQ0FMSUMgUgorMEY3OCAjIFRJQkVUQU4gVk9XRUwgU0lHTiBWT0NBTElDIEwKKzBGOTMgIyBUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgR0hBCiswRjlEICMgVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERESEEKKzBGQTIgIyBUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgREhBCiswRkE3ICMgVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEJIQQorMEZBQyAjIFRJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBEWkhBCiswRkI5ICMgVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEtTU0EKK0ZCMUYgIyBIRUJSRVcgTElHQVRVUkUgWUlERElTSCBZT0QgWU9EIFBBVEFICitGQjJBICMgSEVCUkVXIExFVFRFUiBTSElOIFdJVEggU0hJTiBET1QKK0ZCMkIgIyBIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBTSU4gRE9UCitGQjJDICMgSEVCUkVXIExFVFRFUiBTSElOIFdJVEggREFHRVNIIEFORCBTSElOIERPVAorRkIyRCAjIEhFQlJFVyBMRVRURVIgU0hJTiBXSVRIIERBR0VTSCBBTkQgU0lOIERPVAorRkIyRSAjIEhFQlJFVyBMRVRURVIgQUxFRiBXSVRIIFBBVEFICitGQjJGICMgSEVCUkVXIExFVFRFUiBBTEVGIFdJVEggUUFNQVRTCitGQjMwICMgSEVCUkVXIExFVFRFUiBBTEVGIFdJVEggTUFQSVEKK0ZCMzEgIyBIRUJSRVcgTEVUVEVSIEJFVCBXSVRIIERBR0VTSAorRkIzMiAjIEhFQlJFVyBMRVRURVIgR0lNRUwgV0lUSCBEQUdFU0gKK0ZCMzMgIyBIRUJSRVcgTEVUVEVSIERBTEVUIFdJVEggREFHRVNICitGQjM0ICMgSEVCUkVXIExFVFRFUiBIRSBXSVRIIE1BUElRCitGQjM1ICMgSEVCUkVXIExFVFRFUiBWQVYgV0lUSCBEQUdFU0gKK0ZCMzYgIyBIRUJSRVcgTEVUVEVSIFpBWUlOIFdJVEggREFHRVNICitGQjM4ICMgSEVCUkVXIExFVFRFUiBURVQgV0lUSCBEQUdFU0gKK0ZCMzkgIyBIRUJSRVcgTEVUVEVSIFlPRCBXSVRIIERBR0VTSAorRkIzQSAjIEhFQlJFVyBMRVRURVIgRklOQUwgS0FGIFdJVEggREFHRVNICitGQjNCICMgSEVCUkVXIExFVFRFUiBLQUYgV0lUSCBEQUdFU0gKK0ZCM0MgIyBIRUJSRVcgTEVUVEVSIExBTUVEIFdJVEggREFHRVNICitGQjNFICMgSEVCUkVXIExFVFRFUiBNRU0gV0lUSCBEQUdFU0gKK0ZCNDAgIyBIRUJSRVcgTEVUVEVSIE5VTiBXSVRIIERBR0VTSAorRkI0MSAjIEhFQlJFVyBMRVRURVIgU0FNRUtIIFdJVEggREFHRVNICitGQjQzICMgSEVCUkVXIExFVFRFUiBGSU5BTCBQRSBXSVRIIERBR0VTSAorRkI0NCAjIEhFQlJFVyBMRVRURVIgUEUgV0lUSCBEQUdFU0gKK0ZCNDYgIyBIRUJSRVcgTEVUVEVSIFRTQURJIFdJVEggREFHRVNICitGQjQ3ICMgSEVCUkVXIExFVFRFUiBRT0YgV0lUSCBEQUdFU0gKK0ZCNDggIyBIRUJSRVcgTEVUVEVSIFJFU0ggV0lUSCBEQUdFU0gKK0ZCNDkgIyBIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBEQUdFU0gKK0ZCNEEgIyBIRUJSRVcgTEVUVEVSIFRBViBXSVRIIERBR0VTSAorRkI0QiAjIEhFQlJFVyBMRVRURVIgVkFWIFdJVEggSE9MQU0KK0ZCNEMgIyBIRUJSRVcgTEVUVEVSIEJFVCBXSVRIIFJBRkUKK0ZCNEQgIyBIRUJSRVcgTEVUVEVSIEtBRiBXSVRIIFJBRkUKK0ZCNEUgIyBIRUJSRVcgTEVUVEVSIFBFIFdJVEggUkFGRQorCisjICgyKSBQb3N0IENvbXBvc2l0aW9uIFZlcnNpb24gY2hhcmFjdGVycworIyBUaGVzZSBjaGFyYWN0ZXJzIGNhbm5vdCBiZSBkZXJpdmVkIGZyb20gdGhlIFVuaWNvZGVEYXRhIGZpbGUuCisjIChUaGVyZSBhcmUgbm8gY2hhcmFjdGVycyBpbiB0aGlzIGNhdGVnb3J5IGluIHRoaXMgdmVyc2lvbiBvZiBVbmljb2RlLikKKworIyAoMykgU2luZ2xldG9uIERlY29tcG9zaXRpb25zCisjIFRoZXNlIGNoYXJhY3RlcnMgY2FuIGJlIGRlcml2ZWQgZnJvbSB0aGUgVW5pY29kZURhdGEgZmlsZQorIyBieSBpbmNsdWRpbmcgYWxsIGNoYXJhY3RlcnMgd2hvc2UgY2Fub25pY2FsIGRlY29tcG9zaXRpb24KKyMgY29uc2lzdHMgb2YgYSBzaW5nbGUgY2hhcmFjdGVyLgorIyBUaGVzZSBjaGFyYWN0ZXJzIGFyZSBzaW1wbHkgcXVvdGVkIGhlcmUgZm9yIHJlZmVyZW5jZS4KKworIyAwMzQwIENPTUJJTklORyBHUkFWRSBUT05FIE1BUksKKyMgMDM0MSBDT01CSU5JTkcgQUNVVEUgVE9ORSBNQVJLCisjIDAzNDMgQ09NQklOSU5HIEdSRUVLIEtPUk9OSVMKKyMgMDM3NCBHUkVFSyBOVU1FUkFMIFNJR04KKyMgMDM3RSBHUkVFSyBRVUVTVElPTiBNQVJLCisjIDAzODcgR1JFRUsgQU5PIFRFTEVJQQorIyAxRjcxIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIE9YSUEKKyMgMUY3MyBHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIE9YSUEKKyMgMUY3NSBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggT1hJQQorIyAxRjc3IEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggT1hJQQorIyAxRjc5IEdSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggT1hJQQorIyAxRjdCIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggT1hJQQorIyAxRjdEIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIE9YSUEKKyMgMUZCQiBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIE9YSUEKKyMgMUZCRSBHUkVFSyBQUk9TR0VHUkFNTUVOSQorIyAxRkM5IEdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBPWElBCisjIDFGQ0IgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggT1hJQQorIyAxRkQzIEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBIEFORCBPWElBCisjIDFGREIgR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIE9YSUEKKyMgMUZFMyBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgT1hJQQorIyAxRkVCIEdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBPWElBCisjIDFGRUUgR1JFRUsgRElBTFlUSUtBIEFORCBPWElBCisjIDFGRUYgR1JFRUsgVkFSSUEKKyMgMUZGOSBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggT1hJQQorIyAxRkZCIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggT1hJQQorIyAxRkZEIEdSRUVLIE9YSUEKKyMgMjAwMCBFTiBRVUFECisjIDIwMDEgRU0gUVVBRAorIyAyMTI2IE9ITSBTSUdOCisjIDIxMkEgS0VMVklOIFNJR04KKyMgMjEyQiBBTkdTVFJPTSBTSUdOCisjIDIzMjkgTEVGVC1QT0lOVElORyBBTkdMRSBCUkFDS0VUCisjIDIzMkEgUklHSFQtUE9JTlRJTkcgQU5HTEUgQlJBQ0tFVAorIyBGOTAwIENKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTAwCisjLi4gRkEwRCBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwRAorIyBGQTEwIENKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTEwCisjIEZBMTIgQ0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMTIKKyMgRkExNSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExNQorIy4uIEZBMUUgQ0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMUUKKyMgRkEyMCBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyMAorIyBGQTIyIENKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTIyCisjIEZBMjUgQ0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMjUKKyMgRkEyNiBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyNgorIyBGQTJBIENKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTJBCisjLi4gRkEyRCBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyRAorCisjICg0KSBOb24tU3RhcnRlciBEZWNvbXBvc2l0aW9ucworIyBUaGVzZSBjaGFyYWN0ZXJzIGNhbiBiZSBkZXJpdmVkIGZyb20gdGhlIFVuaWNvZGVEYXRhIGZpbGUKKyMgYnkgaW5jbHVkaW5nIGFsbCBjaGFyYWN0ZXJzIHdob3NlIGNhbm9uaWNhbCBkZWNvbXBvc2l0aW9uIGNvbnNpc3RzCisjIG9mIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycywgdGhlIGZpcnN0IG9mIHdoaWNoIGhhcyBhIGNhbm9uaWNhbAorIyBjbGFzcyBvZiB6ZXJvLgorIyBUaGVzZSBjaGFyYWN0ZXJzIGFyZSBzaW1wbHkgcXVvdGVkIGhlcmUgZm9yIHJlZmVyZW5jZS4KKworIyAwMzQ0IENPTUJJTklORyBHUkVFSyBESUFMWVRJS0EgVE9OT1MKKyMgMEY3MyBUSUJFVEFOIFZPV0VMIFNJR04gSUkKKyMgMEY3NSBUSUJFVEFOIFZPV0VMIFNJR04gVVUKKyMgMEY4MSBUSUJFVEFOIFZPV0VMIFNJR04gUkVWRVJTRUQgSUkKKworCmRpZmYgLS1naXQgYS9zcmMvZGF0YS91bmljb2RlL0RyYWZ0LVRlc3RTdWl0ZS50eHQgYi9zcmMvZGF0YS91bmljb2RlL0RyYWZ0LVRlc3RTdWl0ZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjVmNGM0MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9kYXRhL3VuaWNvZGUvRHJhZnQtVGVzdFN1aXRlLnR4dApAQCAtMCwwICsxLDE1MjQ5IEBACisjIE5vcm1hbGl6YXRpb24gVGVzdCBTdWl0ZQorIyBDb2x1bW5zIChjMSwgYzIsLi4uKSBhcmUgc2VwYXJhdGVkIGJ5IHNlbWljb2xvbnMKKyMKKyMgQ29tbWVudHMgYXJlIGluZGljYXRlZCB3aXRoIGhhc2ggbWFya3MKKyMgVGhlIGZvbGxvd2luZyBpbnZhcmlhbnRzIG11c3QgYmUgdHJ1ZSBmb3IgYWxsIGNvbmZvcm1hbnQgaW1wbGVtZW50YXRpb25zCisjICBjMiA9PSBORkMoYzEpID09IE5GQyhjMikgPT0gTkZDKGMzKQorIyAgYzMgPT0gTkZEKGMxKSA9PSBORkQoYzIpID09IE5GRChjMykKKyMgIGM0ID09IE5GS0MoYzEpID09IE5GS0MoYzIpID09IE5GS0MoYzMpID09IE5GS0MoYzQpID09IE5GS0MoYzUpCisjICBjNSA9PSBORktEKGMxKSA9PSBORktEKGMyKSA9PSBORktEKGMzKSA9PSBORktEKGM0KSA9PSBORktEKGM1KQorIworIyBQYXJ0IDM6IFNwZWNpZmljIGNhc2VzCisjCisxRTBBOzFFMEE7MDA0NCAwMzA3OzFFMEE7MDA0NCAwMzA3OyAjICjhuIo7IOG4ijsgROKXjMyHOyDhuIo7IETil4zMhzsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggRE9UIEFCT1ZFCisxRTBDOzFFMEM7MDA0NCAwMzIzOzFFMEM7MDA0NCAwMzIzOyAjICjhuIw7IOG4jDsgROKXjMyjOyDhuIw7IETil4zMozsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggRE9UIEJFTE9XCisxRTBBIDAzMjM7MUUwQyAwMzA3OzAwNDQgMDMyMyAwMzA3OzFFMEMgMDMwNzswMDQ0IDAzMjMgMDMwNzsgIyAo4biK4peMzKM7IOG4jOKXjMyHOyBE4peMzKPil4zMhzsg4biM4peMzIc7IETil4zMo+KXjMyHOyApIExBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBET1QgQUJPVkUsIENPTUJJTklORyBET1QgQkVMT1cKKzFFMEMgMDMwNzsxRTBDIDAzMDc7MDA0NCAwMzIzIDAzMDc7MUUwQyAwMzA3OzAwNDQgMDMyMyAwMzA3OyAjICjhuIzil4zMhzsg4biM4peMzIc7IETil4zMo+KXjMyHOyDhuIzil4zMhzsgROKXjMyj4peMzIc7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIERPVCBCRUxPVywgQ09NQklOSU5HIERPVCBBQk9WRQorMDA0NCAwMzA3IDAzMjM7MUUwQyAwMzA3OzAwNDQgMDMyMyAwMzA3OzFFMEMgMDMwNzswMDQ0IDAzMjMgMDMwNzsgIyAoROKXjMyH4peMzKM7IOG4jOKXjMyHOyBE4peMzKPil4zMhzsg4biM4peMzIc7IETil4zMo+KXjMyHOyApIExBVElOIENBUElUQUwgTEVUVEVSIEQsIENPTUJJTklORyBET1QgQUJPVkUsIENPTUJJTklORyBET1QgQkVMT1cKKzAwNDQgMDMyMyAwMzA3OzFFMEMgMDMwNzswMDQ0IDAzMjMgMDMwNzsxRTBDIDAzMDc7MDA0NCAwMzIzIDAzMDc7ICMgKETil4zMo+KXjMyHOyDhuIzil4zMhzsgROKXjMyj4peMzIc7IOG4jOKXjMyHOyBE4peMzKPil4zMhzsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBELCBDT01CSU5JTkcgRE9UIEJFTE9XLCBDT01CSU5JTkcgRE9UIEFCT1ZFCisxRTBBIDAzMUI7MUUwQSAwMzFCOzAwNDQgMDMxQiAwMzA3OzFFMEEgMDMxQjswMDQ0IDAzMUIgMDMwNzsgIyAo4biK4peMzJs7IOG4iuKXjMybOyBE4peMzJvil4zMhzsg4biK4peMzJs7IETil4zMm+KXjMyHOyApIExBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBET1QgQUJPVkUsIENPTUJJTklORyBIT1JOCisxRTBDIDAzMUI7MUUwQyAwMzFCOzAwNDQgMDMxQiAwMzIzOzFFMEMgMDMxQjswMDQ0IDAzMUIgMDMyMzsgIyAo4biM4peMzJs7IOG4jOKXjMybOyBE4peMzJvil4zMozsg4biM4peMzJs7IETil4zMm+KXjMyjOyApIExBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBET1QgQkVMT1csIENPTUJJTklORyBIT1JOCisxRTBBIDAzMUIgMDMyMzsxRTBDIDAzMUIgMDMwNzswMDQ0IDAzMUIgMDMyMyAwMzA3OzFFMEMgMDMxQiAwMzA3OzAwNDQgMDMxQiAwMzIzIDAzMDc7ICMgKOG4iuKXjMyb4peMzKM7IOG4jOKXjMyb4peMzIc7IETil4zMm+KXjMyj4peMzIc7IOG4jOKXjMyb4peMzIc7IETil4zMm+KXjMyj4peMzIc7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIERPVCBBQk9WRSwgQ09NQklOSU5HIEhPUk4sIENPTUJJTklORyBET1QgQkVMT1cKKzFFMEMgMDMxQiAwMzA3OzFFMEMgMDMxQiAwMzA3OzAwNDQgMDMxQiAwMzIzIDAzMDc7MUUwQyAwMzFCIDAzMDc7MDA0NCAwMzFCIDAzMjMgMDMwNzsgIyAo4biM4peMzJvil4zMhzsg4biM4peMzJvil4zMhzsgROKXjMyb4peMzKPil4zMhzsg4biM4peMzJvil4zMhzsgROKXjMyb4peMzKPil4zMhzsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggRE9UIEJFTE9XLCBDT01CSU5JTkcgSE9STiwgQ09NQklOSU5HIERPVCBBQk9WRQorMDA0NCAwMzFCIDAzMDcgMDMyMzsxRTBDIDAzMUIgMDMwNzswMDQ0IDAzMUIgMDMyMyAwMzA3OzFFMEMgMDMxQiAwMzA3OzAwNDQgMDMxQiAwMzIzIDAzMDc7ICMgKETil4zMm+KXjMyH4peMzKM7IOG4jOKXjMyb4peMzIc7IETil4zMm+KXjMyj4peMzIc7IOG4jOKXjMyb4peMzIc7IETil4zMm+KXjMyj4peMzIc7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCwgQ09NQklOSU5HIEhPUk4sIENPTUJJTklORyBET1QgQUJPVkUsIENPTUJJTklORyBET1QgQkVMT1cKKzAwNDQgMDMxQiAwMzIzIDAzMDc7MUUwQyAwMzFCIDAzMDc7MDA0NCAwMzFCIDAzMjMgMDMwNzsxRTBDIDAzMUIgMDMwNzswMDQ0IDAzMUIgMDMyMyAwMzA3OyAjIChE4peMzJvil4zMo+KXjMyHOyDhuIzil4zMm+KXjMyHOyBE4peMzJvil4zMo+KXjMyHOyDhuIzil4zMm+KXjMyHOyBE4peMzJvil4zMo+KXjMyHOyApIExBVElOIENBUElUQUwgTEVUVEVSIEQsIENPTUJJTklORyBIT1JOLCBDT01CSU5JTkcgRE9UIEJFTE9XLCBDT01CSU5JTkcgRE9UIEFCT1ZFCiswMEM4OzAwQzg7MDA0NSAwMzAwOzAwQzg7MDA0NSAwMzAwOyAjICjDiDsgw4g7IEXil4zMgDsgw4g7IEXil4zMgDsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkUKKzAxMTI7MDExMjswMDQ1IDAzMDQ7MDExMjswMDQ1IDAzMDQ7ICMgKMSSOyDEkjsgReKXjMyEOyDEkjsgReKXjMyEOyApIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBNQUNST04KKzAwNDUgMDMwMDswMEM4OzAwNDUgMDMwMDswMEM4OzAwNDUgMDMwMDsgIyAoReKXjMyAOyDDiDsgReKXjMyAOyDDiDsgReKXjMyAOyApIExBVElOIENBUElUQUwgTEVUVEVSIEUsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQKKzAwNDUgMDMwNDswMTEyOzAwNDUgMDMwNDswMTEyOzAwNDUgMDMwNDsgIyAoReKXjMyEOyDEkjsgReKXjMyEOyDEkjsgReKXjMyEOyApIExBVElOIENBUElUQUwgTEVUVEVSIEUsIENPTUJJTklORyBNQUNST04KKzFFMTQ7MUUxNDswMDQ1IDAzMDQgMDMwMDsxRTE0OzAwNDUgMDMwNCAwMzAwOyAjICjhuJQ7IOG4lDsgReKXjMyE4peMzIA7IOG4lDsgReKXjMyE4peMzIA7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE1BQ1JPTiBBTkQgR1JBVkUKKzAxMTIgMDMwMDsxRTE0OzAwNDUgMDMwNCAwMzAwOzFFMTQ7MDA0NSAwMzA0IDAzMDA7ICMgKMSS4peMzIA7IOG4lDsgReKXjMyE4peMzIA7IOG4lDsgReKXjMyE4peMzIA7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE1BQ1JPTiwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVAorMUUxNCAwMzA0OzFFMTQgMDMwNDswMDQ1IDAzMDQgMDMwMCAwMzA0OzFFMTQgMDMwNDswMDQ1IDAzMDQgMDMwMCAwMzA0OyAjICjhuJTil4zMhDsg4biU4peMzIQ7IEXil4zMhOKXjMyA4peMzIQ7IOG4lOKXjMyEOyBF4peMzITil4zMgOKXjMyEOyApIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBNQUNST04gQU5EIEdSQVZFLCBDT01CSU5JTkcgTUFDUk9OCiswMDQ1IDAzMDQgMDMwMDsxRTE0OzAwNDUgMDMwNCAwMzAwOzFFMTQ7MDA0NSAwMzA0IDAzMDA7ICMgKEXil4zMhOKXjMyAOyDhuJQ7IEXil4zMhOKXjMyAOyDhuJQ7IEXil4zMhOKXjMyAOyApIExBVElOIENBUElUQUwgTEVUVEVSIEUsIENPTUJJTklORyBNQUNST04sIENPTUJJTklORyBHUkFWRSBBQ0NFTlQKKzAwNDUgMDMwMCAwMzA0OzAwQzggMDMwNDswMDQ1IDAzMDAgMDMwNDswMEM4IDAzMDQ7MDA0NSAwMzAwIDAzMDQ7ICMgKEXil4zMgOKXjMyEOyDDiOKXjMyEOyBF4peMzIDil4zMhDsgw4jil4zMhDsgReKXjMyA4peMzIQ7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgQ09NQklOSU5HIE1BQ1JPTgorIworIyBQYXJ0IDE6IENoYXJhY3RlciBieSBjaGFyYWN0ZXIgdGVzdAorIyBBbGwgY2hhcmFjdGVycyBub3QgZXhwbGljaXRseSBvY2N1cnJpbmcgaW4gYzEgb2YgUGFydCAxIGhhdmUgaWRlbnRpY2FsIE5GQywgRCwgS0MsIEtEIGZvcm1zLgorIworMDBBMDswMEEwOzAwQTA7MDAyMDswMDIwOyAjICjCoDsgwqA7IMKgOyAgOyAgOyApIE5PLUJSRUFLIFNQQUNFCiswMEE4OzAwQTg7MDBBODswMDIwIDAzMDg7MDAyMCAwMzA4OyAjICjCqDsgwqg7IMKoOyAg4peMzIg7ICDil4zMiDsgKSBESUFFUkVTSVMKKzAwQUE7MDBBQTswMEFBOzAwNjE7MDA2MTsgIyAowqo7IMKqOyDCqjsgYTsgYTsgKSBGRU1JTklORSBPUkRJTkFMIElORElDQVRPUgorMDBBRjswMEFGOzAwQUY7MDAyMCAwMzA0OzAwMjAgMDMwNDsgIyAowq87IMKvOyDCrzsgIOKXjMyEOyAg4peMzIQ7ICkgTUFDUk9OCiswMEIyOzAwQjI7MDBCMjswMDMyOzAwMzI7ICMgKMKyOyDCsjsgwrI7IDI7IDI7ICkgU1VQRVJTQ1JJUFQgVFdPCiswMEIzOzAwQjM7MDBCMzswMDMzOzAwMzM7ICMgKMKzOyDCszsgwrM7IDM7IDM7ICkgU1VQRVJTQ1JJUFQgVEhSRUUKKzAwQjQ7MDBCNDswMEI0OzAwMjAgMDMwMTswMDIwIDAzMDE7ICMgKMK0OyDCtDsgwrQ7ICDil4zMgTsgIOKXjMyBOyApIEFDVVRFIEFDQ0VOVAorMDBCNTswMEI1OzAwQjU7MDNCQzswM0JDOyAjICjCtTsgwrU7IMK1OyDOvDsgzrw7ICkgTUlDUk8gU0lHTgorMDBCODswMEI4OzAwQjg7MDAyMCAwMzI3OzAwMjAgMDMyNzsgIyAowrg7IMK4OyDCuDsgIOKXjMynOyAg4peMzKc7ICkgQ0VESUxMQQorMDBCOTswMEI5OzAwQjk7MDAzMTswMDMxOyAjICjCuTsgwrk7IMK5OyAxOyAxOyApIFNVUEVSU0NSSVBUIE9ORQorMDBCQTswMEJBOzAwQkE7MDA2RjswMDZGOyAjICjCujsgwro7IMK6OyBvOyBvOyApIE1BU0NVTElORSBPUkRJTkFMIElORElDQVRPUgorMDBCQzswMEJDOzAwQkM7MDAzMSAyMDQ0IDAwMzQ7MDAzMSAyMDQ0IDAwMzQ7ICMgKMK8OyDCvDsgwrw7IDHigYQ0OyAx4oGENDsgKSBWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVIKKzAwQkQ7MDBCRDswMEJEOzAwMzEgMjA0NCAwMDMyOzAwMzEgMjA0NCAwMDMyOyAjICjCvTsgwr07IMK9OyAx4oGEMjsgMeKBhDI7ICkgVlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGCiswMEJFOzAwQkU7MDBCRTswMDMzIDIwNDQgMDAzNDswMDMzIDIwNDQgMDAzNDsgIyAowr47IMK+OyDCvjsgM+KBhDQ7IDPigYQ0OyApIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUworMDBDMDswMEMwOzAwNDEgMDMwMDswMEMwOzAwNDEgMDMwMDsgIyAow4A7IMOAOyBB4peMzIA7IMOAOyBB4peMzIA7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFCiswMEMxOzAwQzE7MDA0MSAwMzAxOzAwQzE7MDA0MSAwMzAxOyAjICjDgTsgw4E7IEHil4zMgTsgw4E7IEHil4zMgTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEUKKzAwQzI7MDBDMjswMDQxIDAzMDI7MDBDMjswMDQxIDAzMDI7ICMgKMOCOyDDgjsgQeKXjMyCOyDDgjsgQeKXjMyCOyApIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYCiswMEMzOzAwQzM7MDA0MSAwMzAzOzAwQzM7MDA0MSAwMzAzOyAjICjDgzsgw4M7IEHil4zMgzsgw4M7IEHil4zMgzsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREUKKzAwQzQ7MDBDNDswMDQxIDAzMDg7MDBDNDswMDQxIDAzMDg7ICMgKMOEOyDDhDsgQeKXjMyIOyDDhDsgQeKXjMyIOyApIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKzAwQzU7MDBDNTswMDQxIDAzMEE7MDBDNTswMDQxIDAzMEE7ICMgKMOFOyDDhTsgQeKXjMyKOyDDhTsgQeKXjMyKOyApIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFCiswMEM3OzAwQzc7MDA0MyAwMzI3OzAwQzc7MDA0MyAwMzI3OyAjICjDhzsgw4c7IEPil4zMpzsgw4c7IEPil4zMpzsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQQorMDBDODswMEM4OzAwNDUgMDMwMDswMEM4OzAwNDUgMDMwMDsgIyAow4g7IMOIOyBF4peMzIA7IMOIOyBF4peMzIA7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFCiswMEM5OzAwQzk7MDA0NSAwMzAxOzAwQzk7MDA0NSAwMzAxOyAjICjDiTsgw4k7IEXil4zMgTsgw4k7IEXil4zMgTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEUKKzAwQ0E7MDBDQTswMDQ1IDAzMDI7MDBDQTswMDQ1IDAzMDI7ICMgKMOKOyDDijsgReKXjMyCOyDDijsgReKXjMyCOyApIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiswMENCOzAwQ0I7MDA0NSAwMzA4OzAwQ0I7MDA0NSAwMzA4OyAjICjDizsgw4s7IEXil4zMiDsgw4s7IEXil4zMiDsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiswMENDOzAwQ0M7MDA0OSAwMzAwOzAwQ0M7MDA0OSAwMzAwOyAjICjDjDsgw4w7IEnil4zMgDsgw4w7IEnil4zMgDsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkUKKzAwQ0Q7MDBDRDswMDQ5IDAzMDE7MDBDRDswMDQ5IDAzMDE7ICMgKMONOyDDjTsgSeKXjMyBOyDDjTsgSeKXjMyBOyApIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURQorMDBDRTswMENFOzAwNDkgMDMwMjswMENFOzAwNDkgMDMwMjsgIyAow447IMOOOyBJ4peMzII7IMOOOyBJ4peMzII7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVgKKzAwQ0Y7MDBDRjswMDQ5IDAzMDg7MDBDRjswMDQ5IDAzMDg7ICMgKMOPOyDDjzsgSeKXjMyIOyDDjzsgSeKXjMyIOyApIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMKKzAwRDE7MDBEMTswMDRFIDAzMDM7MDBEMTswMDRFIDAzMDM7ICMgKMOROyDDkTsgTuKXjMyDOyDDkTsgTuKXjMyDOyApIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERQorMDBEMjswMEQyOzAwNEYgMDMwMDswMEQyOzAwNEYgMDMwMDsgIyAow5I7IMOSOyBP4peMzIA7IMOSOyBP4peMzIA7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFCiswMEQzOzAwRDM7MDA0RiAwMzAxOzAwRDM7MDA0RiAwMzAxOyAjICjDkzsgw5M7IE/il4zMgTsgw5M7IE/il4zMgTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEUKKzAwRDQ7MDBENDswMDRGIDAzMDI7MDBENDswMDRGIDAzMDI7ICMgKMOUOyDDlDsgT+KXjMyCOyDDlDsgT+KXjMyCOyApIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiswMEQ1OzAwRDU7MDA0RiAwMzAzOzAwRDU7MDA0RiAwMzAzOyAjICjDlTsgw5U7IE/il4zMgzsgw5U7IE/il4zMgzsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUKKzAwRDY7MDBENjswMDRGIDAzMDg7MDBENjswMDRGIDAzMDg7ICMgKMOWOyDDljsgT+KXjMyIOyDDljsgT+KXjMyIOyApIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMKKzAwRDk7MDBEOTswMDU1IDAzMDA7MDBEOTswMDU1IDAzMDA7ICMgKMOZOyDDmTsgVeKXjMyAOyDDmTsgVeKXjMyAOyApIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRQorMDBEQTswMERBOzAwNTUgMDMwMTswMERBOzAwNTUgMDMwMTsgIyAow5o7IMOaOyBV4peMzIE7IMOaOyBV4peMzIE7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFCiswMERCOzAwREI7MDA1NSAwMzAyOzAwREI7MDA1NSAwMzAyOyAjICjDmzsgw5s7IFXil4zMgjsgw5s7IFXil4zMgjsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWAorMDBEQzswMERDOzAwNTUgMDMwODswMERDOzAwNTUgMDMwODsgIyAow5w7IMOcOyBV4peMzIg7IMOcOyBV4peMzIg7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUworMDBERDswMEREOzAwNTkgMDMwMTswMEREOzAwNTkgMDMwMTsgIyAow507IMOdOyBZ4peMzIE7IMOdOyBZ4peMzIE7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFCiswMEUwOzAwRTA7MDA2MSAwMzAwOzAwRTA7MDA2MSAwMzAwOyAjICjDoDsgw6A7IGHil4zMgDsgw6A7IGHil4zMgDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFCiswMEUxOzAwRTE7MDA2MSAwMzAxOzAwRTE7MDA2MSAwMzAxOyAjICjDoTsgw6E7IGHil4zMgTsgw6E7IGHil4zMgTsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFCiswMEUyOzAwRTI7MDA2MSAwMzAyOzAwRTI7MDA2MSAwMzAyOyAjICjDojsgw6I7IGHil4zMgjsgw6I7IGHil4zMgjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVgKKzAwRTM7MDBFMzswMDYxIDAzMDM7MDBFMzswMDYxIDAzMDM7ICMgKMOjOyDDozsgYeKXjMyDOyDDozsgYeKXjMyDOyApIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggVElMREUKKzAwRTQ7MDBFNDswMDYxIDAzMDg7MDBFNDswMDYxIDAzMDg7ICMgKMOkOyDDpDsgYeKXjMyIOyDDpDsgYeKXjMyIOyApIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTCiswMEU1OzAwRTU7MDA2MSAwMzBBOzAwRTU7MDA2MSAwMzBBOyAjICjDpTsgw6U7IGHil4zMijsgw6U7IGHil4zMijsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUKKzAwRTc7MDBFNzswMDYzIDAzMjc7MDBFNzswMDYzIDAzMjc7ICMgKMOnOyDDpzsgY+KXjMynOyDDpzsgY+KXjMynOyApIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQQorMDBFODswMEU4OzAwNjUgMDMwMDswMEU4OzAwNjUgMDMwMDsgIyAow6g7IMOoOyBl4peMzIA7IMOoOyBl4peMzIA7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRQorMDBFOTswMEU5OzAwNjUgMDMwMTswMEU5OzAwNjUgMDMwMTsgIyAow6k7IMOpOyBl4peMzIE7IMOpOyBl4peMzIE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURQorMDBFQTswMEVBOzAwNjUgMDMwMjswMEVBOzAwNjUgMDMwMjsgIyAow6o7IMOqOyBl4peMzII7IMOqOyBl4peMzII7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYCiswMEVCOzAwRUI7MDA2NSAwMzA4OzAwRUI7MDA2NSAwMzA4OyAjICjDqzsgw6s7IGXil4zMiDsgw6s7IGXil4zMiDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUworMDBFQzswMEVDOzAwNjkgMDMwMDswMEVDOzAwNjkgMDMwMDsgIyAow6w7IMOsOyBp4peMzIA7IMOsOyBp4peMzIA7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQorMDBFRDswMEVEOzAwNjkgMDMwMTswMEVEOzAwNjkgMDMwMTsgIyAow607IMOtOyBp4peMzIE7IMOtOyBp4peMzIE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURQorMDBFRTswMEVFOzAwNjkgMDMwMjswMEVFOzAwNjkgMDMwMjsgIyAow647IMOuOyBp4peMzII7IMOuOyBp4peMzII7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYCiswMEVGOzAwRUY7MDA2OSAwMzA4OzAwRUY7MDA2OSAwMzA4OyAjICjDrzsgw687IGnil4zMiDsgw687IGnil4zMiDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUworMDBGMTswMEYxOzAwNkUgMDMwMzswMEYxOzAwNkUgMDMwMzsgIyAow7E7IMOxOyBu4peMzIM7IMOxOyBu4peMzIM7ICkgTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERQorMDBGMjswMEYyOzAwNkYgMDMwMDswMEYyOzAwNkYgMDMwMDsgIyAow7I7IMOyOyBv4peMzIA7IMOyOyBv4peMzIA7ICkgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRQorMDBGMzswMEYzOzAwNkYgMDMwMTswMEYzOzAwNkYgMDMwMTsgIyAow7M7IMOzOyBv4peMzIE7IMOzOyBv4peMzIE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURQorMDBGNDswMEY0OzAwNkYgMDMwMjswMEY0OzAwNkYgMDMwMjsgIyAow7Q7IMO0OyBv4peMzII7IMO0OyBv4peMzII7ICkgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYCiswMEY1OzAwRjU7MDA2RiAwMzAzOzAwRjU7MDA2RiAwMzAzOyAjICjDtTsgw7U7IG/il4zMgzsgw7U7IG/il4zMgzsgKSBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFCiswMEY2OzAwRjY7MDA2RiAwMzA4OzAwRjY7MDA2RiAwMzA4OyAjICjDtjsgw7Y7IG/il4zMiDsgw7Y7IG/il4zMiDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUworMDBGOTswMEY5OzAwNzUgMDMwMDswMEY5OzAwNzUgMDMwMDsgIyAow7k7IMO5OyB14peMzIA7IMO5OyB14peMzIA7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRQorMDBGQTswMEZBOzAwNzUgMDMwMTswMEZBOzAwNzUgMDMwMTsgIyAow7o7IMO6OyB14peMzIE7IMO6OyB14peMzIE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURQorMDBGQjswMEZCOzAwNzUgMDMwMjswMEZCOzAwNzUgMDMwMjsgIyAow7s7IMO7OyB14peMzII7IMO7OyB14peMzII7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYCiswMEZDOzAwRkM7MDA3NSAwMzA4OzAwRkM7MDA3NSAwMzA4OyAjICjDvDsgw7w7IHXil4zMiDsgw7w7IHXil4zMiDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUworMDBGRDswMEZEOzAwNzkgMDMwMTswMEZEOzAwNzkgMDMwMTsgIyAow707IMO9OyB54peMzIE7IMO9OyB54peMzIE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURQorMDBGRjswMEZGOzAwNzkgMDMwODswMEZGOzAwNzkgMDMwODsgIyAow787IMO/OyB54peMzIg7IMO/OyB54peMzIg7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVMKKzAxMDA7MDEwMDswMDQxIDAzMDQ7MDEwMDswMDQxIDAzMDQ7ICMgKMSAOyDEgDsgQeKXjMyEOyDEgDsgQeKXjMyEOyApIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBNQUNST04KKzAxMDE7MDEwMTswMDYxIDAzMDQ7MDEwMTswMDYxIDAzMDQ7ICMgKMSBOyDEgTsgYeKXjMyEOyDEgTsgYeKXjMyEOyApIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggTUFDUk9OCiswMTAyOzAxMDI7MDA0MSAwMzA2OzAxMDI7MDA0MSAwMzA2OyAjICjEgjsgxII7IEHil4zMhjsgxII7IEHil4zMhjsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkUKKzAxMDM7MDEwMzswMDYxIDAzMDY7MDEwMzswMDYxIDAzMDY7ICMgKMSDOyDEgzsgYeKXjMyGOyDEgzsgYeKXjMyGOyApIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQlJFVkUKKzAxMDQ7MDEwNDswMDQxIDAzMjg7MDEwNDswMDQxIDAzMjg7ICMgKMSEOyDEhDsgQeKXjMyoOyDEhDsgQeKXjMyoOyApIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBPR09ORUsKKzAxMDU7MDEwNTswMDYxIDAzMjg7MDEwNTswMDYxIDAzMjg7ICMgKMSFOyDEhTsgYeKXjMyoOyDEhTsgYeKXjMyoOyApIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggT0dPTkVLCiswMTA2OzAxMDY7MDA0MyAwMzAxOzAxMDY7MDA0MyAwMzAxOyAjICjEhjsgxIY7IEPil4zMgTsgxIY7IEPil4zMgTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQUNVVEUKKzAxMDc7MDEwNzswMDYzIDAzMDE7MDEwNzswMDYzIDAzMDE7ICMgKMSHOyDEhzsgY+KXjMyBOyDEhzsgY+KXjMyBOyApIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQUNVVEUKKzAxMDg7MDEwODswMDQzIDAzMDI7MDEwODswMDQzIDAzMDI7ICMgKMSIOyDEiDsgQ+KXjMyCOyDEiDsgQ+KXjMyCOyApIExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDSVJDVU1GTEVYCiswMTA5OzAxMDk7MDA2MyAwMzAyOzAxMDk7MDA2MyAwMzAyOyAjICjEiTsgxIk7IGPil4zMgjsgxIk7IGPil4zMgjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENJUkNVTUZMRVgKKzAxMEE7MDEwQTswMDQzIDAzMDc7MDEwQTswMDQzIDAzMDc7ICMgKMSKOyDEijsgQ+KXjMyHOyDEijsgQ+KXjMyHOyApIExBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBET1QgQUJPVkUKKzAxMEI7MDEwQjswMDYzIDAzMDc7MDEwQjswMDYzIDAzMDc7ICMgKMSLOyDEizsgY+KXjMyHOyDEizsgY+KXjMyHOyApIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggRE9UIEFCT1ZFCiswMTBDOzAxMEM7MDA0MyAwMzBDOzAxMEM7MDA0MyAwMzBDOyAjICjEjDsgxIw7IEPil4zMjDsgxIw7IEPil4zMjDsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0FST04KKzAxMEQ7MDEwRDswMDYzIDAzMEM7MDEwRDswMDYzIDAzMEM7ICMgKMSNOyDEjTsgY+KXjMyMOyDEjTsgY+KXjMyMOyApIExBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0FST04KKzAxMEU7MDEwRTswMDQ0IDAzMEM7MDEwRTswMDQ0IDAzMEM7ICMgKMSOOyDEjjsgROKXjMyMOyDEjjsgROKXjMyMOyApIExBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBDQVJPTgorMDEwRjswMTBGOzAwNjQgMDMwQzswMTBGOzAwNjQgMDMwQzsgIyAoxI87IMSPOyBk4peMzIw7IMSPOyBk4peMzIw7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBDQVJPTgorMDExMjswMTEyOzAwNDUgMDMwNDswMTEyOzAwNDUgMDMwNDsgIyAoxJI7IMSSOyBF4peMzIQ7IMSSOyBF4peMzIQ7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE1BQ1JPTgorMDExMzswMTEzOzAwNjUgMDMwNDswMTEzOzAwNjUgMDMwNDsgIyAoxJM7IMSTOyBl4peMzIQ7IMSTOyBl4peMzIQ7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBNQUNST04KKzAxMTQ7MDExNDswMDQ1IDAzMDY7MDExNDswMDQ1IDAzMDY7ICMgKMSUOyDElDsgReKXjMyGOyDElDsgReKXjMyGOyApIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBCUkVWRQorMDExNTswMTE1OzAwNjUgMDMwNjswMTE1OzAwNjUgMDMwNjsgIyAoxJU7IMSVOyBl4peMzIY7IMSVOyBl4peMzIY7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBCUkVWRQorMDExNjswMTE2OzAwNDUgMDMwNzswMTE2OzAwNDUgMDMwNzsgIyAoxJY7IMSWOyBF4peMzIc7IMSWOyBF4peMzIc7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRQorMDExNzswMTE3OzAwNjUgMDMwNzswMTE3OzAwNjUgMDMwNzsgIyAoxJc7IMSXOyBl4peMzIc7IMSXOyBl4peMzIc7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBET1QgQUJPVkUKKzAxMTg7MDExODswMDQ1IDAzMjg7MDExODswMDQ1IDAzMjg7ICMgKMSYOyDEmDsgReKXjMyoOyDEmDsgReKXjMyoOyApIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBPR09ORUsKKzAxMTk7MDExOTswMDY1IDAzMjg7MDExOTswMDY1IDAzMjg7ICMgKMSZOyDEmTsgZeKXjMyoOyDEmTsgZeKXjMyoOyApIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggT0dPTkVLCiswMTFBOzAxMUE7MDA0NSAwMzBDOzAxMUE7MDA0NSAwMzBDOyAjICjEmjsgxJo7IEXil4zMjDsgxJo7IEXil4zMjDsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0FST04KKzAxMUI7MDExQjswMDY1IDAzMEM7MDExQjswMDY1IDAzMEM7ICMgKMSbOyDEmzsgZeKXjMyMOyDEmzsgZeKXjMyMOyApIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0FST04KKzAxMUM7MDExQzswMDQ3IDAzMDI7MDExQzswMDQ3IDAzMDI7ICMgKMScOyDEnDsgR+KXjMyCOyDEnDsgR+KXjMyCOyApIExBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBDSVJDVU1GTEVYCiswMTFEOzAxMUQ7MDA2NyAwMzAyOzAxMUQ7MDA2NyAwMzAyOyAjICjEnTsgxJ07IGfil4zMgjsgxJ07IGfil4zMgjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIENJUkNVTUZMRVgKKzAxMUU7MDExRTswMDQ3IDAzMDY7MDExRTswMDQ3IDAzMDY7ICMgKMSeOyDEnjsgR+KXjMyGOyDEnjsgR+KXjMyGOyApIExBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBCUkVWRQorMDExRjswMTFGOzAwNjcgMDMwNjswMTFGOzAwNjcgMDMwNjsgIyAoxJ87IMSfOyBn4peMzIY7IMSfOyBn4peMzIY7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBCUkVWRQorMDEyMDswMTIwOzAwNDcgMDMwNzswMTIwOzAwNDcgMDMwNzsgIyAoxKA7IMSgOyBH4peMzIc7IMSgOyBH4peMzIc7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIERPVCBBQk9WRQorMDEyMTswMTIxOzAwNjcgMDMwNzswMTIxOzAwNjcgMDMwNzsgIyAoxKE7IMShOyBn4peMzIc7IMShOyBn4peMzIc7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBET1QgQUJPVkUKKzAxMjI7MDEyMjswMDQ3IDAzMjc7MDEyMjswMDQ3IDAzMjc7ICMgKMSiOyDEojsgR+KXjMynOyDEojsgR+KXjMynOyApIExBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBDRURJTExBCiswMTIzOzAxMjM7MDA2NyAwMzI3OzAxMjM7MDA2NyAwMzI3OyAjICjEozsgxKM7IGfil4zMpzsgxKM7IGfil4zMpzsgKSBMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIENFRElMTEEKKzAxMjQ7MDEyNDswMDQ4IDAzMDI7MDEyNDswMDQ4IDAzMDI7ICMgKMSkOyDEpDsgSOKXjMyCOyDEpDsgSOKXjMyCOyApIExBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBDSVJDVU1GTEVYCiswMTI1OzAxMjU7MDA2OCAwMzAyOzAxMjU7MDA2OCAwMzAyOyAjICjEpTsgxKU7IGjil4zMgjsgxKU7IGjil4zMgjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIENJUkNVTUZMRVgKKzAxMjg7MDEyODswMDQ5IDAzMDM7MDEyODswMDQ5IDAzMDM7ICMgKMSoOyDEqDsgSeKXjMyDOyDEqDsgSeKXjMyDOyApIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBUSUxERQorMDEyOTswMTI5OzAwNjkgMDMwMzswMTI5OzAwNjkgMDMwMzsgIyAoxKk7IMSpOyBp4peMzIM7IMSpOyBp4peMzIM7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBUSUxERQorMDEyQTswMTJBOzAwNDkgMDMwNDswMTJBOzAwNDkgMDMwNDsgIyAoxKo7IMSqOyBJ4peMzIQ7IMSqOyBJ4peMzIQ7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE1BQ1JPTgorMDEyQjswMTJCOzAwNjkgMDMwNDswMTJCOzAwNjkgMDMwNDsgIyAoxKs7IMSrOyBp4peMzIQ7IMSrOyBp4peMzIQ7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBNQUNST04KKzAxMkM7MDEyQzswMDQ5IDAzMDY7MDEyQzswMDQ5IDAzMDY7ICMgKMSsOyDErDsgSeKXjMyGOyDErDsgSeKXjMyGOyApIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBCUkVWRQorMDEyRDswMTJEOzAwNjkgMDMwNjswMTJEOzAwNjkgMDMwNjsgIyAoxK07IMStOyBp4peMzIY7IMStOyBp4peMzIY7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBCUkVWRQorMDEyRTswMTJFOzAwNDkgMDMyODswMTJFOzAwNDkgMDMyODsgIyAoxK47IMSuOyBJ4peMzKg7IMSuOyBJ4peMzKg7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE9HT05FSworMDEyRjswMTJGOzAwNjkgMDMyODswMTJGOzAwNjkgMDMyODsgIyAoxK87IMSvOyBp4peMzKg7IMSvOyBp4peMzKg7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBPR09ORUsKKzAxMzA7MDEzMDswMDQ5IDAzMDc7MDEzMDswMDQ5IDAzMDc7ICMgKMSwOyDEsDsgSeKXjMyHOyDEsDsgSeKXjMyHOyApIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBET1QgQUJPVkUKKzAxMzI7MDEzMjswMTMyOzAwNDkgMDA0QTswMDQ5IDAwNEE7ICMgKMSyOyDEsjsgxLI7IElKOyBJSjsgKSBMQVRJTiBDQVBJVEFMIExJR0FUVVJFIElKCiswMTMzOzAxMzM7MDEzMzswMDY5IDAwNkE7MDA2OSAwMDZBOyAjICjEszsgxLM7IMSzOyBpajsgaWo7ICkgTEFUSU4gU01BTEwgTElHQVRVUkUgSUoKKzAxMzQ7MDEzNDswMDRBIDAzMDI7MDEzNDswMDRBIDAzMDI7ICMgKMS0OyDEtDsgSuKXjMyCOyDEtDsgSuKXjMyCOyApIExBVElOIENBUElUQUwgTEVUVEVSIEogV0lUSCBDSVJDVU1GTEVYCiswMTM1OzAxMzU7MDA2QSAwMzAyOzAxMzU7MDA2QSAwMzAyOyAjICjEtTsgxLU7IGril4zMgjsgxLU7IGril4zMgjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgSiBXSVRIIENJUkNVTUZMRVgKKzAxMzY7MDEzNjswMDRCIDAzMjc7MDEzNjswMDRCIDAzMjc7ICMgKMS2OyDEtjsgS+KXjMynOyDEtjsgS+KXjMynOyApIExBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBDRURJTExBCiswMTM3OzAxMzc7MDA2QiAwMzI3OzAxMzc7MDA2QiAwMzI3OyAjICjEtzsgxLc7IGvil4zMpzsgxLc7IGvil4zMpzsgKSBMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIENFRElMTEEKKzAxMzk7MDEzOTswMDRDIDAzMDE7MDEzOTswMDRDIDAzMDE7ICMgKMS5OyDEuTsgTOKXjMyBOyDEuTsgTOKXjMyBOyApIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBBQ1VURQorMDEzQTswMTNBOzAwNkMgMDMwMTswMTNBOzAwNkMgMDMwMTsgIyAoxLo7IMS6OyBs4peMzIE7IMS6OyBs4peMzIE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBBQ1VURQorMDEzQjswMTNCOzAwNEMgMDMyNzswMTNCOzAwNEMgMDMyNzsgIyAoxLs7IMS7OyBM4peMzKc7IMS7OyBM4peMzKc7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENFRElMTEEKKzAxM0M7MDEzQzswMDZDIDAzMjc7MDEzQzswMDZDIDAzMjc7ICMgKMS8OyDEvDsgbOKXjMynOyDEvDsgbOKXjMynOyApIExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0VESUxMQQorMDEzRDswMTNEOzAwNEMgMDMwQzswMTNEOzAwNEMgMDMwQzsgIyAoxL07IMS9OyBM4peMzIw7IMS9OyBM4peMzIw7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENBUk9OCiswMTNFOzAxM0U7MDA2QyAwMzBDOzAxM0U7MDA2QyAwMzBDOyAjICjEvjsgxL47IGzil4zMjDsgxL47IGzil4zMjDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIENBUk9OCiswMTNGOzAxM0Y7MDEzRjswMDRDIDAwQjc7MDA0QyAwMEI3OyAjICjEvzsgxL87IMS/OyBMwrc7IEzCtzsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggTUlERExFIERPVAorMDE0MDswMTQwOzAxNDA7MDA2QyAwMEI3OzAwNkMgMDBCNzsgIyAoxYA7IMWAOyDFgDsgbMK3OyBswrc7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBNSURETEUgRE9UCiswMTQzOzAxNDM7MDA0RSAwMzAxOzAxNDM7MDA0RSAwMzAxOyAjICjFgzsgxYM7IE7il4zMgTsgxYM7IE7il4zMgTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQUNVVEUKKzAxNDQ7MDE0NDswMDZFIDAzMDE7MDE0NDswMDZFIDAzMDE7ICMgKMWEOyDFhDsgbuKXjMyBOyDFhDsgbuKXjMyBOyApIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQUNVVEUKKzAxNDU7MDE0NTswMDRFIDAzMjc7MDE0NTswMDRFIDAzMjc7ICMgKMWFOyDFhTsgTuKXjMynOyDFhTsgTuKXjMynOyApIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDRURJTExBCiswMTQ2OzAxNDY7MDA2RSAwMzI3OzAxNDY7MDA2RSAwMzI3OyAjICjFhjsgxYY7IG7il4zMpzsgxYY7IG7il4zMpzsgKSBMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENFRElMTEEKKzAxNDc7MDE0NzswMDRFIDAzMEM7MDE0NzswMDRFIDAzMEM7ICMgKMWHOyDFhzsgTuKXjMyMOyDFhzsgTuKXjMyMOyApIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDQVJPTgorMDE0ODswMTQ4OzAwNkUgMDMwQzswMTQ4OzAwNkUgMDMwQzsgIyAoxYg7IMWIOyBu4peMzIw7IMWIOyBu4peMzIw7ICkgTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBDQVJPTgorMDE0OTswMTQ5OzAxNDk7MDJCQyAwMDZFOzAyQkMgMDA2RTsgIyAoxYk7IMWJOyDFiTsgyrxuOyDKvG47ICkgTEFUSU4gU01BTEwgTEVUVEVSIE4gUFJFQ0VERUQgQlkgQVBPU1RST1BIRQorMDE0QzswMTRDOzAwNEYgMDMwNDswMTRDOzAwNEYgMDMwNDsgIyAoxYw7IMWMOyBP4peMzIQ7IMWMOyBP4peMzIQ7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIE1BQ1JPTgorMDE0RDswMTREOzAwNkYgMDMwNDswMTREOzAwNkYgMDMwNDsgIyAoxY07IMWNOyBv4peMzIQ7IMWNOyBv4peMzIQ7ICkgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBNQUNST04KKzAxNEU7MDE0RTswMDRGIDAzMDY7MDE0RTswMDRGIDAzMDY7ICMgKMWOOyDFjjsgT+KXjMyGOyDFjjsgT+KXjMyGOyApIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBCUkVWRQorMDE0RjswMTRGOzAwNkYgMDMwNjswMTRGOzAwNkYgMDMwNjsgIyAoxY87IMWPOyBv4peMzIY7IMWPOyBv4peMzIY7ICkgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBCUkVWRQorMDE1MDswMTUwOzAwNEYgMDMwQjswMTUwOzAwNEYgMDMwQjsgIyAoxZA7IMWQOyBP4peMzIs7IMWQOyBP4peMzIs7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVUJMRSBBQ1VURQorMDE1MTswMTUxOzAwNkYgMDMwQjswMTUxOzAwNkYgMDMwQjsgIyAoxZE7IMWROyBv4peMzIs7IMWROyBv4peMzIs7ICkgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEUKKzAxNTQ7MDE1NDswMDUyIDAzMDE7MDE1NDswMDUyIDAzMDE7ICMgKMWUOyDFlDsgUuKXjMyBOyDFlDsgUuKXjMyBOyApIExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBBQ1VURQorMDE1NTswMTU1OzAwNzIgMDMwMTswMTU1OzAwNzIgMDMwMTsgIyAoxZU7IMWVOyBy4peMzIE7IMWVOyBy4peMzIE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBBQ1VURQorMDE1NjswMTU2OzAwNTIgMDMyNzswMTU2OzAwNTIgMDMyNzsgIyAoxZY7IMWWOyBS4peMzKc7IMWWOyBS4peMzKc7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIENFRElMTEEKKzAxNTc7MDE1NzswMDcyIDAzMjc7MDE1NzswMDcyIDAzMjc7ICMgKMWXOyDFlzsgcuKXjMynOyDFlzsgcuKXjMynOyApIExBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggQ0VESUxMQQorMDE1ODswMTU4OzAwNTIgMDMwQzswMTU4OzAwNTIgMDMwQzsgIyAoxZg7IMWYOyBS4peMzIw7IMWYOyBS4peMzIw7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIENBUk9OCiswMTU5OzAxNTk7MDA3MiAwMzBDOzAxNTk7MDA3MiAwMzBDOyAjICjFmTsgxZk7IHLil4zMjDsgxZk7IHLil4zMjDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENBUk9OCiswMTVBOzAxNUE7MDA1MyAwMzAxOzAxNUE7MDA1MyAwMzAxOyAjICjFmjsgxZo7IFPil4zMgTsgxZo7IFPil4zMgTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQUNVVEUKKzAxNUI7MDE1QjswMDczIDAzMDE7MDE1QjswMDczIDAzMDE7ICMgKMWbOyDFmzsgc+KXjMyBOyDFmzsgc+KXjMyBOyApIExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQUNVVEUKKzAxNUM7MDE1QzswMDUzIDAzMDI7MDE1QzswMDUzIDAzMDI7ICMgKMWcOyDFnDsgU+KXjMyCOyDFnDsgU+KXjMyCOyApIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDSVJDVU1GTEVYCiswMTVEOzAxNUQ7MDA3MyAwMzAyOzAxNUQ7MDA3MyAwMzAyOyAjICjFnTsgxZ07IHPil4zMgjsgxZ07IHPil4zMgjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENJUkNVTUZMRVgKKzAxNUU7MDE1RTswMDUzIDAzMjc7MDE1RTswMDUzIDAzMjc7ICMgKMWeOyDFnjsgU+KXjMynOyDFnjsgU+KXjMynOyApIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDRURJTExBCiswMTVGOzAxNUY7MDA3MyAwMzI3OzAxNUY7MDA3MyAwMzI3OyAjICjFnzsgxZ87IHPil4zMpzsgxZ87IHPil4zMpzsgKSBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENFRElMTEEKKzAxNjA7MDE2MDswMDUzIDAzMEM7MDE2MDswMDUzIDAzMEM7ICMgKMWgOyDFoDsgU+KXjMyMOyDFoDsgU+KXjMyMOyApIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTgorMDE2MTswMTYxOzAwNzMgMDMwQzswMTYxOzAwNzMgMDMwQzsgIyAoxaE7IMWhOyBz4peMzIw7IMWhOyBz4peMzIw7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTgorMDE2MjswMTYyOzAwNTQgMDMyNzswMTYyOzAwNTQgMDMyNzsgIyAoxaI7IMWiOyBU4peMzKc7IMWiOyBU4peMzKc7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENFRElMTEEKKzAxNjM7MDE2MzswMDc0IDAzMjc7MDE2MzswMDc0IDAzMjc7ICMgKMWjOyDFozsgdOKXjMynOyDFozsgdOKXjMynOyApIExBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ0VESUxMQQorMDE2NDswMTY0OzAwNTQgMDMwQzswMTY0OzAwNTQgMDMwQzsgIyAoxaQ7IMWkOyBU4peMzIw7IMWkOyBU4peMzIw7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENBUk9OCiswMTY1OzAxNjU7MDA3NCAwMzBDOzAxNjU7MDA3NCAwMzBDOyAjICjFpTsgxaU7IHTil4zMjDsgxaU7IHTil4zMjDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIENBUk9OCiswMTY4OzAxNjg7MDA1NSAwMzAzOzAxNjg7MDA1NSAwMzAzOyAjICjFqDsgxag7IFXil4zMgzsgxag7IFXil4zMgzsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggVElMREUKKzAxNjk7MDE2OTswMDc1IDAzMDM7MDE2OTswMDc1IDAzMDM7ICMgKMWpOyDFqTsgdeKXjMyDOyDFqTsgdeKXjMyDOyApIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggVElMREUKKzAxNkE7MDE2QTswMDU1IDAzMDQ7MDE2QTswMDU1IDAzMDQ7ICMgKMWqOyDFqjsgVeKXjMyEOyDFqjsgVeKXjMyEOyApIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST04KKzAxNkI7MDE2QjswMDc1IDAzMDQ7MDE2QjswMDc1IDAzMDQ7ICMgKMWrOyDFqzsgdeKXjMyEOyDFqzsgdeKXjMyEOyApIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggTUFDUk9OCiswMTZDOzAxNkM7MDA1NSAwMzA2OzAxNkM7MDA1NSAwMzA2OyAjICjFrDsgxaw7IFXil4zMhjsgxaw7IFXil4zMhjsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQlJFVkUKKzAxNkQ7MDE2RDswMDc1IDAzMDY7MDE2RDswMDc1IDAzMDY7ICMgKMWtOyDFrTsgdeKXjMyGOyDFrTsgdeKXjMyGOyApIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQlJFVkUKKzAxNkU7MDE2RTswMDU1IDAzMEE7MDE2RTswMDU1IDAzMEE7ICMgKMWuOyDFrjsgVeKXjMyKOyDFrjsgVeKXjMyKOyApIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFCiswMTZGOzAxNkY7MDA3NSAwMzBBOzAxNkY7MDA3NSAwMzBBOyAjICjFrzsgxa87IHXil4zMijsgxa87IHXil4zMijsgKSBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIFJJTkcgQUJPVkUKKzAxNzA7MDE3MDswMDU1IDAzMEI7MDE3MDswMDU1IDAzMEI7ICMgKMWwOyDFsDsgVeKXjMyLOyDFsDsgVeKXjMyLOyApIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEUKKzAxNzE7MDE3MTswMDc1IDAzMEI7MDE3MTswMDc1IDAzMEI7ICMgKMWxOyDFsTsgdeKXjMyLOyDFsTsgdeKXjMyLOyApIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCiswMTcyOzAxNzI7MDA1NSAwMzI4OzAxNzI7MDA1NSAwMzI4OyAjICjFsjsgxbI7IFXil4zMqDsgxbI7IFXil4zMqDsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggT0dPTkVLCiswMTczOzAxNzM7MDA3NSAwMzI4OzAxNzM7MDA3NSAwMzI4OyAjICjFszsgxbM7IHXil4zMqDsgxbM7IHXil4zMqDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE9HT05FSworMDE3NDswMTc0OzAwNTcgMDMwMjswMTc0OzAwNTcgMDMwMjsgIyAoxbQ7IMW0OyBX4peMzII7IMW0OyBX4peMzII7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIENJUkNVTUZMRVgKKzAxNzU7MDE3NTswMDc3IDAzMDI7MDE3NTswMDc3IDAzMDI7ICMgKMW1OyDFtTsgd+KXjMyCOyDFtTsgd+KXjMyCOyApIExBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggQ0lSQ1VNRkxFWAorMDE3NjswMTc2OzAwNTkgMDMwMjswMTc2OzAwNTkgMDMwMjsgIyAoxbY7IMW2OyBZ4peMzII7IMW2OyBZ4peMzII7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIENJUkNVTUZMRVgKKzAxNzc7MDE3NzswMDc5IDAzMDI7MDE3NzswMDc5IDAzMDI7ICMgKMW3OyDFtzsgeeKXjMyCOyDFtzsgeeKXjMyCOyApIExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQ0lSQ1VNRkxFWAorMDE3ODswMTc4OzAwNTkgMDMwODswMTc4OzAwNTkgMDMwODsgIyAoxbg7IMW4OyBZ4peMzIg7IMW4OyBZ4peMzIg7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUworMDE3OTswMTc5OzAwNUEgMDMwMTswMTc5OzAwNUEgMDMwMTsgIyAoxbk7IMW5OyBa4peMzIE7IMW5OyBa4peMzIE7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIEFDVVRFCiswMTdBOzAxN0E7MDA3QSAwMzAxOzAxN0E7MDA3QSAwMzAxOyAjICjFujsgxbo7IHril4zMgTsgxbo7IHril4zMgTsgKSBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIEFDVVRFCiswMTdCOzAxN0I7MDA1QSAwMzA3OzAxN0I7MDA1QSAwMzA3OyAjICjFuzsgxbs7IFril4zMhzsgxbs7IFril4zMhzsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggRE9UIEFCT1ZFCiswMTdDOzAxN0M7MDA3QSAwMzA3OzAxN0M7MDA3QSAwMzA3OyAjICjFvDsgxbw7IHril4zMhzsgxbw7IHril4zMhzsgKSBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIERPVCBBQk9WRQorMDE3RDswMTdEOzAwNUEgMDMwQzswMTdEOzAwNUEgMDMwQzsgIyAoxb07IMW9OyBa4peMzIw7IMW9OyBa4peMzIw7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENBUk9OCiswMTdFOzAxN0U7MDA3QSAwMzBDOzAxN0U7MDA3QSAwMzBDOyAjICjFvjsgxb47IHril4zMjDsgxb47IHril4zMjDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENBUk9OCiswMTdGOzAxN0Y7MDE3RjswMDczOzAwNzM7ICMgKMW/OyDFvzsgxb87IHM7IHM7ICkgTEFUSU4gU01BTEwgTEVUVEVSIExPTkcgUworMDFBMDswMUEwOzAwNEYgMDMxQjswMUEwOzAwNEYgMDMxQjsgIyAoxqA7IMagOyBP4peMzJs7IMagOyBP4peMzJs7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4KKzAxQTE7MDFBMTswMDZGIDAzMUI7MDFBMTswMDZGIDAzMUI7ICMgKMahOyDGoTsgb+KXjMybOyDGoTsgb+KXjMybOyApIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggSE9STgorMDFBRjswMUFGOzAwNTUgMDMxQjswMUFGOzAwNTUgMDMxQjsgIyAoxq87IMavOyBV4peMzJs7IMavOyBV4peMzJs7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4KKzAxQjA7MDFCMDswMDc1IDAzMUI7MDFCMDswMDc1IDAzMUI7ICMgKMawOyDGsDsgdeKXjMybOyDGsDsgdeKXjMybOyApIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSE9STgorMDFDNDswMUM0OzAxQzQ7MDA0NCAwMTdEOzAwNDQgMDA1QSAwMzBDOyAjICjHhDsgx4Q7IMeEOyBExb07IERa4peMzIw7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRFogV0lUSCBDQVJPTgorMDFDNTswMUM1OzAxQzU7MDA0NCAwMTdFOzAwNDQgMDA3QSAwMzBDOyAjICjHhTsgx4U7IMeFOyBExb47IER64peMzIw7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIFNNQUxMIExFVFRFUiBaIFdJVEggQ0FST04KKzAxQzY7MDFDNjswMUM2OzAwNjQgMDE3RTswMDY0IDAwN0EgMDMwQzsgIyAox4Y7IMeGOyDHhjsgZMW+OyBkeuKXjMyMOyApIExBVElOIFNNQUxMIExFVFRFUiBEWiBXSVRIIENBUk9OCiswMUM3OzAxQzc7MDFDNzswMDRDIDAwNEE7MDA0QyAwMDRBOyAjICjHhzsgx4c7IMeHOyBMSjsgTEo7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTEoKKzAxQzg7MDFDODswMUM4OzAwNEMgMDA2QTswMDRDIDAwNkE7ICMgKMeIOyDHiDsgx4g7IExqOyBMajsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggU01BTEwgTEVUVEVSIEoKKzAxQzk7MDFDOTswMUM5OzAwNkMgMDA2QTswMDZDIDAwNkE7ICMgKMeJOyDHiTsgx4k7IGxqOyBsajsgKSBMQVRJTiBTTUFMTCBMRVRURVIgTEoKKzAxQ0E7MDFDQTswMUNBOzAwNEUgMDA0QTswMDRFIDAwNEE7ICMgKMeKOyDHijsgx4o7IE5KOyBOSjsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBOSgorMDFDQjswMUNCOzAxQ0I7MDA0RSAwMDZBOzAwNEUgMDA2QTsgIyAox4s7IMeLOyDHizsgTmo7IE5qOyApIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBTTUFMTCBMRVRURVIgSgorMDFDQzswMUNDOzAxQ0M7MDA2RSAwMDZBOzAwNkUgMDA2QTsgIyAox4w7IMeMOyDHjDsgbmo7IG5qOyApIExBVElOIFNNQUxMIExFVFRFUiBOSgorMDFDRDswMUNEOzAwNDEgMDMwQzswMUNEOzAwNDEgMDMwQzsgIyAox407IMeNOyBB4peMzIw7IMeNOyBB4peMzIw7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENBUk9OCiswMUNFOzAxQ0U7MDA2MSAwMzBDOzAxQ0U7MDA2MSAwMzBDOyAjICjHjjsgx447IGHil4zMjDsgx447IGHil4zMjDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENBUk9OCiswMUNGOzAxQ0Y7MDA0OSAwMzBDOzAxQ0Y7MDA0OSAwMzBDOyAjICjHjzsgx487IEnil4zMjDsgx487IEnil4zMjDsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0FST04KKzAxRDA7MDFEMDswMDY5IDAzMEM7MDFEMDswMDY5IDAzMEM7ICMgKMeQOyDHkDsgaeKXjMyMOyDHkDsgaeKXjMyMOyApIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0FST04KKzAxRDE7MDFEMTswMDRGIDAzMEM7MDFEMTswMDRGIDAzMEM7ICMgKMeROyDHkTsgT+KXjMyMOyDHkTsgT+KXjMyMOyApIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDQVJPTgorMDFEMjswMUQyOzAwNkYgMDMwQzswMUQyOzAwNkYgMDMwQzsgIyAox5I7IMeSOyBv4peMzIw7IMeSOyBv4peMzIw7ICkgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDQVJPTgorMDFEMzswMUQzOzAwNTUgMDMwQzswMUQzOzAwNTUgMDMwQzsgIyAox5M7IMeTOyBV4peMzIw7IMeTOyBV4peMzIw7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENBUk9OCiswMUQ0OzAxRDQ7MDA3NSAwMzBDOzAxRDQ7MDA3NSAwMzBDOyAjICjHlDsgx5Q7IHXil4zMjDsgx5Q7IHXil4zMjDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENBUk9OCiswMUQ1OzAxRDU7MDA1NSAwMzA4IDAzMDQ7MDFENTswMDU1IDAzMDggMDMwNDsgIyAox5U7IMeVOyBV4peMzIjil4zMhDsgx5U7IFXil4zMiOKXjMyEOyApIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIE1BQ1JPTgorMDFENjswMUQ2OzAwNzUgMDMwOCAwMzA0OzAxRDY7MDA3NSAwMzA4IDAzMDQ7ICMgKMeWOyDHljsgdeKXjMyI4peMzIQ7IMeWOyB14peMzIjil4zMhDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgTUFDUk9OCiswMUQ3OzAxRDc7MDA1NSAwMzA4IDAzMDE7MDFENzswMDU1IDAzMDggMDMwMTsgIyAox5c7IMeXOyBV4peMzIjil4zMgTsgx5c7IFXil4zMiOKXjMyBOyApIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIEFDVVRFCiswMUQ4OzAxRDg7MDA3NSAwMzA4IDAzMDE7MDFEODswMDc1IDAzMDggMDMwMTsgIyAox5g7IMeYOyB14peMzIjil4zMgTsgx5g7IHXil4zMiOKXjMyBOyApIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEFORCBBQ1VURQorMDFEOTswMUQ5OzAwNTUgMDMwOCAwMzBDOzAxRDk7MDA1NSAwMzA4IDAzMEM7ICMgKMeZOyDHmTsgVeKXjMyI4peMzIw7IMeZOyBV4peMzIjil4zMjDsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEFORCBDQVJPTgorMDFEQTswMURBOzAwNzUgMDMwOCAwMzBDOzAxREE7MDA3NSAwMzA4IDAzMEM7ICMgKMeaOyDHmjsgdeKXjMyI4peMzIw7IMeaOyB14peMzIjil4zMjDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgQ0FST04KKzAxREI7MDFEQjswMDU1IDAzMDggMDMwMDswMURCOzAwNTUgMDMwOCAwMzAwOyAjICjHmzsgx5s7IFXil4zMiOKXjMyAOyDHmzsgVeKXjMyI4peMzIA7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgR1JBVkUKKzAxREM7MDFEQzswMDc1IDAzMDggMDMwMDswMURDOzAwNzUgMDMwOCAwMzAwOyAjICjHnDsgx5w7IHXil4zMiOKXjMyAOyDHnDsgdeKXjMyI4peMzIA7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIEdSQVZFCiswMURFOzAxREU7MDA0MSAwMzA4IDAzMDQ7MDFERTswMDQxIDAzMDggMDMwNDsgIyAox547IMeeOyBB4peMzIjil4zMhDsgx547IEHil4zMiOKXjMyEOyApIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMgQU5EIE1BQ1JPTgorMDFERjswMURGOzAwNjEgMDMwOCAwMzA0OzAxREY7MDA2MSAwMzA4IDAzMDQ7ICMgKMefOyDHnzsgYeKXjMyI4peMzIQ7IMefOyBh4peMzIjil4zMhDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUyBBTkQgTUFDUk9OCiswMUUwOzAxRTA7MDA0MSAwMzA3IDAzMDQ7MDFFMDswMDQxIDAzMDcgMDMwNDsgIyAox6A7IMegOyBB4peMzIfil4zMhDsgx6A7IEHil4zMh+KXjMyEOyApIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBET1QgQUJPVkUgQU5EIE1BQ1JPTgorMDFFMTswMUUxOzAwNjEgMDMwNyAwMzA0OzAxRTE7MDA2MSAwMzA3IDAzMDQ7ICMgKMehOyDHoTsgYeKXjMyH4peMzIQ7IMehOyBh4peMzIfil4zMhDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERPVCBBQk9WRSBBTkQgTUFDUk9OCiswMUUyOzAxRTI7MDBDNiAwMzA0OzAxRTI7MDBDNiAwMzA0OyAjICjHojsgx6I7IMOG4peMzIQ7IMeiOyDDhuKXjMyEOyApIExBVElOIENBUElUQUwgTEVUVEVSIEFFIFdJVEggTUFDUk9OCiswMUUzOzAxRTM7MDBFNiAwMzA0OzAxRTM7MDBFNiAwMzA0OyAjICjHozsgx6M7IMOm4peMzIQ7IMejOyDDpuKXjMyEOyApIExBVElOIFNNQUxMIExFVFRFUiBBRSBXSVRIIE1BQ1JPTgorMDFFNjswMUU2OzAwNDcgMDMwQzswMUU2OzAwNDcgMDMwQzsgIyAox6Y7IMemOyBH4peMzIw7IMemOyBH4peMzIw7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIENBUk9OCiswMUU3OzAxRTc7MDA2NyAwMzBDOzAxRTc7MDA2NyAwMzBDOyAjICjHpzsgx6c7IGfil4zMjDsgx6c7IGfil4zMjDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIENBUk9OCiswMUU4OzAxRTg7MDA0QiAwMzBDOzAxRTg7MDA0QiAwMzBDOyAjICjHqDsgx6g7IEvil4zMjDsgx6g7IEvil4zMjDsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggQ0FST04KKzAxRTk7MDFFOTswMDZCIDAzMEM7MDFFOTswMDZCIDAzMEM7ICMgKMepOyDHqTsga+KXjMyMOyDHqTsga+KXjMyMOyApIExBVElOIFNNQUxMIExFVFRFUiBLIFdJVEggQ0FST04KKzAxRUE7MDFFQTswMDRGIDAzMjg7MDFFQTswMDRGIDAzMjg7ICMgKMeqOyDHqjsgT+KXjMyoOyDHqjsgT+KXjMyoOyApIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBPR09ORUsKKzAxRUI7MDFFQjswMDZGIDAzMjg7MDFFQjswMDZGIDAzMjg7ICMgKMerOyDHqzsgb+KXjMyoOyDHqzsgb+KXjMyoOyApIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggT0dPTkVLCiswMUVDOzAxRUM7MDA0RiAwMzI4IDAzMDQ7MDFFQzswMDRGIDAzMjggMDMwNDsgIyAox6w7IMesOyBP4peMzKjil4zMhDsgx6w7IE/il4zMqOKXjMyEOyApIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBPR09ORUsgQU5EIE1BQ1JPTgorMDFFRDswMUVEOzAwNkYgMDMyOCAwMzA0OzAxRUQ7MDA2RiAwMzI4IDAzMDQ7ICMgKMetOyDHrTsgb+KXjMyo4peMzIQ7IMetOyBv4peMzKjil4zMhDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIE9HT05FSyBBTkQgTUFDUk9OCiswMUVFOzAxRUU7MDFCNyAwMzBDOzAxRUU7MDFCNyAwMzBDOyAjICjHrjsgx647IMa34peMzIw7IMeuOyDGt+KXjMyMOyApIExBVElOIENBUElUQUwgTEVUVEVSIEVaSCBXSVRIIENBUk9OCiswMUVGOzAxRUY7MDI5MiAwMzBDOzAxRUY7MDI5MiAwMzBDOyAjICjHrzsgx687IMqS4peMzIw7IMevOyDKkuKXjMyMOyApIExBVElOIFNNQUxMIExFVFRFUiBFWkggV0lUSCBDQVJPTgorMDFGMDswMUYwOzAwNkEgMDMwQzswMUYwOzAwNkEgMDMwQzsgIyAox7A7IMewOyBq4peMzIw7IMewOyBq4peMzIw7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEogV0lUSCBDQVJPTgorMDFGMTswMUYxOzAxRjE7MDA0NCAwMDVBOzAwNDQgMDA1QTsgIyAox7E7IMexOyDHsTsgRFo7IERaOyApIExBVElOIENBUElUQUwgTEVUVEVSIERaCiswMUYyOzAxRjI7MDFGMjswMDQ0IDAwN0E7MDA0NCAwMDdBOyAjICjHsjsgx7I7IMeyOyBEejsgRHo7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIFNNQUxMIExFVFRFUiBaCiswMUYzOzAxRjM7MDFGMzswMDY0IDAwN0E7MDA2NCAwMDdBOyAjICjHszsgx7M7IMezOyBkejsgZHo7ICkgTEFUSU4gU01BTEwgTEVUVEVSIERaCiswMUY0OzAxRjQ7MDA0NyAwMzAxOzAxRjQ7MDA0NyAwMzAxOyAjICjHtDsgx7Q7IEfil4zMgTsgx7Q7IEfil4zMgTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQUNVVEUKKzAxRjU7MDFGNTswMDY3IDAzMDE7MDFGNTswMDY3IDAzMDE7ICMgKMe1OyDHtTsgZ+KXjMyBOyDHtTsgZ+KXjMyBOyApIExBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQUNVVEUKKzAxRjg7MDFGODswMDRFIDAzMDA7MDFGODswMDRFIDAzMDA7ICMgKMe4OyDHuDsgTuKXjMyAOyDHuDsgTuKXjMyAOyApIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBHUkFWRQorMDFGOTswMUY5OzAwNkUgMDMwMDswMUY5OzAwNkUgMDMwMDsgIyAox7k7IMe5OyBu4peMzIA7IMe5OyBu4peMzIA7ICkgTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBHUkFWRQorMDFGQTswMUZBOzAwNDEgMDMwQSAwMzAxOzAxRkE7MDA0MSAwMzBBIDAzMDE7ICMgKMe6OyDHujsgQeKXjMyK4peMzIE7IMe6OyBB4peMzIril4zMgTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRSBBTkQgQUNVVEUKKzAxRkI7MDFGQjswMDYxIDAzMEEgMDMwMTswMUZCOzAwNjEgMDMwQSAwMzAxOyAjICjHuzsgx7s7IGHil4zMiuKXjMyBOyDHuzsgYeKXjMyK4peMzIE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFIEFORCBBQ1VURQorMDFGQzswMUZDOzAwQzYgMDMwMTswMUZDOzAwQzYgMDMwMTsgIyAox7w7IMe8OyDDhuKXjMyBOyDHvDsgw4bil4zMgTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBBRSBXSVRIIEFDVVRFCiswMUZEOzAxRkQ7MDBFNiAwMzAxOzAxRkQ7MDBFNiAwMzAxOyAjICjHvTsgx707IMOm4peMzIE7IMe9OyDDpuKXjMyBOyApIExBVElOIFNNQUxMIExFVFRFUiBBRSBXSVRIIEFDVVRFCiswMUZFOzAxRkU7MDBEOCAwMzAxOzAxRkU7MDBEOCAwMzAxOyAjICjHvjsgx747IMOY4peMzIE7IMe+OyDDmOKXjMyBOyApIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UgQU5EIEFDVVRFCiswMUZGOzAxRkY7MDBGOCAwMzAxOzAxRkY7MDBGOCAwMzAxOyAjICjHvzsgx787IMO44peMzIE7IMe/OyDDuOKXjMyBOyApIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFIEFORCBBQ1VURQorMDIwMDswMjAwOzAwNDEgMDMwRjswMjAwOzAwNDEgMDMwRjsgIyAoyIA7IMiAOyBB4peMzI87IMiAOyBB4peMzI87ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERPVUJMRSBHUkFWRQorMDIwMTswMjAxOzAwNjEgMDMwRjswMjAxOzAwNjEgMDMwRjsgIyAoyIE7IMiBOyBh4peMzI87IMiBOyBh4peMzI87ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBET1VCTEUgR1JBVkUKKzAyMDI7MDIwMjswMDQxIDAzMTE7MDIwMjswMDQxIDAzMTE7ICMgKMiCOyDIgjsgQeKXjMyROyDIgjsgQeKXjMyROyApIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBJTlZFUlRFRCBCUkVWRQorMDIwMzswMjAzOzAwNjEgMDMxMTswMjAzOzAwNjEgMDMxMTsgIyAoyIM7IMiDOyBh4peMzJE7IMiDOyBh4peMzJE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBJTlZFUlRFRCBCUkVWRQorMDIwNDswMjA0OzAwNDUgMDMwRjswMjA0OzAwNDUgMDMwRjsgIyAoyIQ7IMiEOyBF4peMzI87IMiEOyBF4peMzI87ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVUJMRSBHUkFWRQorMDIwNTswMjA1OzAwNjUgMDMwRjswMjA1OzAwNjUgMDMwRjsgIyAoyIU7IMiFOyBl4peMzI87IMiFOyBl4peMzI87ICkgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBET1VCTEUgR1JBVkUKKzAyMDY7MDIwNjswMDQ1IDAzMTE7MDIwNjswMDQ1IDAzMTE7ICMgKMiGOyDIhjsgReKXjMyROyDIhjsgReKXjMyROyApIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBJTlZFUlRFRCBCUkVWRQorMDIwNzswMjA3OzAwNjUgMDMxMTswMjA3OzAwNjUgMDMxMTsgIyAoyIc7IMiHOyBl4peMzJE7IMiHOyBl4peMzJE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBJTlZFUlRFRCBCUkVWRQorMDIwODswMjA4OzAwNDkgMDMwRjswMjA4OzAwNDkgMDMwRjsgIyAoyIg7IMiIOyBJ4peMzI87IMiIOyBJ4peMzI87ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERPVUJMRSBHUkFWRQorMDIwOTswMjA5OzAwNjkgMDMwRjswMjA5OzAwNjkgMDMwRjsgIyAoyIk7IMiJOyBp4peMzI87IMiJOyBp4peMzI87ICkgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBET1VCTEUgR1JBVkUKKzAyMEE7MDIwQTswMDQ5IDAzMTE7MDIwQTswMDQ5IDAzMTE7ICMgKMiKOyDIijsgSeKXjMyROyDIijsgSeKXjMyROyApIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBJTlZFUlRFRCBCUkVWRQorMDIwQjswMjBCOzAwNjkgMDMxMTswMjBCOzAwNjkgMDMxMTsgIyAoyIs7IMiLOyBp4peMzJE7IMiLOyBp4peMzJE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBJTlZFUlRFRCBCUkVWRQorMDIwQzswMjBDOzAwNEYgMDMwRjswMjBDOzAwNEYgMDMwRjsgIyAoyIw7IMiMOyBP4peMzI87IMiMOyBP4peMzI87ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVUJMRSBHUkFWRQorMDIwRDswMjBEOzAwNkYgMDMwRjswMjBEOzAwNkYgMDMwRjsgIyAoyI07IMiNOyBv4peMzI87IMiNOyBv4peMzI87ICkgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1VCTEUgR1JBVkUKKzAyMEU7MDIwRTswMDRGIDAzMTE7MDIwRTswMDRGIDAzMTE7ICMgKMiOOyDIjjsgT+KXjMyROyDIjjsgT+KXjMyROyApIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBJTlZFUlRFRCBCUkVWRQorMDIwRjswMjBGOzAwNkYgMDMxMTswMjBGOzAwNkYgMDMxMTsgIyAoyI87IMiPOyBv4peMzJE7IMiPOyBv4peMzJE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBJTlZFUlRFRCBCUkVWRQorMDIxMDswMjEwOzAwNTIgMDMwRjswMjEwOzAwNTIgMDMwRjsgIyAoyJA7IMiQOyBS4peMzI87IMiQOyBS4peMzI87ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIERPVUJMRSBHUkFWRQorMDIxMTswMjExOzAwNzIgMDMwRjswMjExOzAwNzIgMDMwRjsgIyAoyJE7IMiROyBy4peMzI87IMiROyBy4peMzI87ICkgTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBET1VCTEUgR1JBVkUKKzAyMTI7MDIxMjswMDUyIDAzMTE7MDIxMjswMDUyIDAzMTE7ICMgKMiSOyDIkjsgUuKXjMyROyDIkjsgUuKXjMyROyApIExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBJTlZFUlRFRCBCUkVWRQorMDIxMzswMjEzOzAwNzIgMDMxMTswMjEzOzAwNzIgMDMxMTsgIyAoyJM7IMiTOyBy4peMzJE7IMiTOyBy4peMzJE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBJTlZFUlRFRCBCUkVWRQorMDIxNDswMjE0OzAwNTUgMDMwRjswMjE0OzAwNTUgMDMwRjsgIyAoyJQ7IMiUOyBV4peMzI87IMiUOyBV4peMzI87ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERPVUJMRSBHUkFWRQorMDIxNTswMjE1OzAwNzUgMDMwRjswMjE1OzAwNzUgMDMwRjsgIyAoyJU7IMiVOyB14peMzI87IMiVOyB14peMzI87ICkgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBET1VCTEUgR1JBVkUKKzAyMTY7MDIxNjswMDU1IDAzMTE7MDIxNjswMDU1IDAzMTE7ICMgKMiWOyDIljsgVeKXjMyROyDIljsgVeKXjMyROyApIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBJTlZFUlRFRCBCUkVWRQorMDIxNzswMjE3OzAwNzUgMDMxMTswMjE3OzAwNzUgMDMxMTsgIyAoyJc7IMiXOyB14peMzJE7IMiXOyB14peMzJE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBJTlZFUlRFRCBCUkVWRQorMDIxODswMjE4OzAwNTMgMDMyNjswMjE4OzAwNTMgMDMyNjsgIyAoyJg7IMiYOyBT4peMzKY7IMiYOyBT4peMzKY7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENPTU1BIEJFTE9XCiswMjE5OzAyMTk7MDA3MyAwMzI2OzAyMTk7MDA3MyAwMzI2OyAjICjImTsgyJk7IHPil4zMpjsgyJk7IHPil4zMpjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENPTU1BIEJFTE9XCiswMjFBOzAyMUE7MDA1NCAwMzI2OzAyMUE7MDA1NCAwMzI2OyAjICjImjsgyJo7IFTil4zMpjsgyJo7IFTil4zMpjsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggQ09NTUEgQkVMT1cKKzAyMUI7MDIxQjswMDc0IDAzMjY7MDIxQjswMDc0IDAzMjY7ICMgKMibOyDImzsgdOKXjMymOyDImzsgdOKXjMymOyApIExBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ09NTUEgQkVMT1cKKzAyMUU7MDIxRTswMDQ4IDAzMEM7MDIxRTswMDQ4IDAzMEM7ICMgKMieOyDInjsgSOKXjMyMOyDInjsgSOKXjMyMOyApIExBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBDQVJPTgorMDIxRjswMjFGOzAwNjggMDMwQzswMjFGOzAwNjggMDMwQzsgIyAoyJ87IMifOyBo4peMzIw7IMifOyBo4peMzIw7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBDQVJPTgorMDIyNjswMjI2OzAwNDEgMDMwNzswMjI2OzAwNDEgMDMwNzsgIyAoyKY7IMimOyBB4peMzIc7IMimOyBB4peMzIc7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERPVCBBQk9WRQorMDIyNzswMjI3OzAwNjEgMDMwNzswMjI3OzAwNjEgMDMwNzsgIyAoyKc7IMinOyBh4peMzIc7IMinOyBh4peMzIc7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBET1QgQUJPVkUKKzAyMjg7MDIyODswMDQ1IDAzMjc7MDIyODswMDQ1IDAzMjc7ICMgKMioOyDIqDsgReKXjMynOyDIqDsgReKXjMynOyApIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDRURJTExBCiswMjI5OzAyMjk7MDA2NSAwMzI3OzAyMjk7MDA2NSAwMzI3OyAjICjIqTsgyKk7IGXil4zMpzsgyKk7IGXil4zMpzsgKSBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENFRElMTEEKKzAyMkE7MDIyQTswMDRGIDAzMDggMDMwNDswMjJBOzAwNEYgMDMwOCAwMzA0OyAjICjIqjsgyKo7IE/il4zMiOKXjMyEOyDIqjsgT+KXjMyI4peMzIQ7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUyBBTkQgTUFDUk9OCiswMjJCOzAyMkI7MDA2RiAwMzA4IDAzMDQ7MDIyQjswMDZGIDAzMDggMDMwNDsgIyAoyKs7IMirOyBv4peMzIjil4zMhDsgyKs7IG/il4zMiOKXjMyEOyApIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTIEFORCBNQUNST04KKzAyMkM7MDIyQzswMDRGIDAzMDMgMDMwNDswMjJDOzAwNEYgMDMwMyAwMzA0OyAjICjIrDsgyKw7IE/il4zMg+KXjMyEOyDIrDsgT+KXjMyD4peMzIQ7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFIEFORCBNQUNST04KKzAyMkQ7MDIyRDswMDZGIDAzMDMgMDMwNDswMjJEOzAwNkYgMDMwMyAwMzA0OyAjICjIrTsgyK07IG/il4zMg+KXjMyEOyDIrTsgb+KXjMyD4peMzIQ7ICkgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERSBBTkQgTUFDUk9OCiswMjJFOzAyMkU7MDA0RiAwMzA3OzAyMkU7MDA0RiAwMzA3OyAjICjIrjsgyK47IE/il4zMhzsgyK47IE/il4zMhzsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRE9UIEFCT1ZFCiswMjJGOzAyMkY7MDA2RiAwMzA3OzAyMkY7MDA2RiAwMzA3OyAjICjIrzsgyK87IG/il4zMhzsgyK87IG/il4zMhzsgKSBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERPVCBBQk9WRQorMDIzMDswMjMwOzAwNEYgMDMwNyAwMzA0OzAyMzA7MDA0RiAwMzA3IDAzMDQ7ICMgKMiwOyDIsDsgT+KXjMyH4peMzIQ7IMiwOyBP4peMzIfil4zMhDsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRE9UIEFCT1ZFIEFORCBNQUNST04KKzAyMzE7MDIzMTswMDZGIDAzMDcgMDMwNDswMjMxOzAwNkYgMDMwNyAwMzA0OyAjICjIsTsgyLE7IG/il4zMh+KXjMyEOyDIsTsgb+KXjMyH4peMzIQ7ICkgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1QgQUJPVkUgQU5EIE1BQ1JPTgorMDIzMjswMjMyOzAwNTkgMDMwNDswMjMyOzAwNTkgMDMwNDsgIyAoyLI7IMiyOyBZ4peMzIQ7IMiyOyBZ4peMzIQ7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIE1BQ1JPTgorMDIzMzswMjMzOzAwNzkgMDMwNDswMjMzOzAwNzkgMDMwNDsgIyAoyLM7IMizOyB54peMzIQ7IMizOyB54peMzIQ7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBNQUNST04KKzAyQjA7MDJCMDswMkIwOzAwNjg7MDA2ODsgIyAoyrA7IMqwOyDKsDsgaDsgaDsgKSBNT0RJRklFUiBMRVRURVIgU01BTEwgSAorMDJCMTswMkIxOzAyQjE7MDI2NjswMjY2OyAjICjKsTsgyrE7IMqxOyDJpjsgyaY7ICkgTU9ESUZJRVIgTEVUVEVSIFNNQUxMIEggV0lUSCBIT09LCiswMkIyOzAyQjI7MDJCMjswMDZBOzAwNkE7ICMgKMqyOyDKsjsgyrI7IGo7IGo7ICkgTU9ESUZJRVIgTEVUVEVSIFNNQUxMIEoKKzAyQjM7MDJCMzswMkIzOzAwNzI7MDA3MjsgIyAoyrM7IMqzOyDKszsgcjsgcjsgKSBNT0RJRklFUiBMRVRURVIgU01BTEwgUgorMDJCNDswMkI0OzAyQjQ7MDI3OTswMjc5OyAjICjKtDsgyrQ7IMq0OyDJuTsgybk7ICkgTU9ESUZJRVIgTEVUVEVSIFNNQUxMIFRVUk5FRCBSCiswMkI1OzAyQjU7MDJCNTswMjdCOzAyN0I7ICMgKMq1OyDKtTsgyrU7IMm7OyDJuzsgKSBNT0RJRklFUiBMRVRURVIgU01BTEwgVFVSTkVEIFIgV0lUSCBIT09LCiswMkI2OzAyQjY7MDJCNjswMjgxOzAyODE7ICMgKMq2OyDKtjsgyrY7IMqBOyDKgTsgKSBNT0RJRklFUiBMRVRURVIgU01BTEwgQ0FQSVRBTCBJTlZFUlRFRCBSCiswMkI3OzAyQjc7MDJCNzswMDc3OzAwNzc7ICMgKMq3OyDKtzsgyrc7IHc7IHc7ICkgTU9ESUZJRVIgTEVUVEVSIFNNQUxMIFcKKzAyQjg7MDJCODswMkI4OzAwNzk7MDA3OTsgIyAoyrg7IMq4OyDKuDsgeTsgeTsgKSBNT0RJRklFUiBMRVRURVIgU01BTEwgWQorMDJEODswMkQ4OzAyRDg7MDAyMCAwMzA2OzAwMjAgMDMwNjsgIyAoy5g7IMuYOyDLmDsgIOKXjMyGOyAg4peMzIY7ICkgQlJFVkUKKzAyRDk7MDJEOTswMkQ5OzAwMjAgMDMwNzswMDIwIDAzMDc7ICMgKMuZOyDLmTsgy5k7ICDil4zMhzsgIOKXjMyHOyApIERPVCBBQk9WRQorMDJEQTswMkRBOzAyREE7MDAyMCAwMzBBOzAwMjAgMDMwQTsgIyAoy5o7IMuaOyDLmjsgIOKXjMyKOyAg4peMzIo7ICkgUklORyBBQk9WRQorMDJEQjswMkRCOzAyREI7MDAyMCAwMzI4OzAwMjAgMDMyODsgIyAoy5s7IMubOyDLmzsgIOKXjMyoOyAg4peMzKg7ICkgT0dPTkVLCiswMkRDOzAyREM7MDJEQzswMDIwIDAzMDM7MDAyMCAwMzAzOyAjICjLnDsgy5w7IMucOyAg4peMzIM7ICDil4zMgzsgKSBTTUFMTCBUSUxERQorMDJERDswMkREOzAyREQ7MDAyMCAwMzBCOzAwMjAgMDMwQjsgIyAoy507IMudOyDLnTsgIOKXjMyLOyAg4peMzIs7ICkgRE9VQkxFIEFDVVRFIEFDQ0VOVAorMDJFMDswMkUwOzAyRTA7MDI2MzswMjYzOyAjICjLoDsgy6A7IMugOyDJozsgyaM7ICkgTU9ESUZJRVIgTEVUVEVSIFNNQUxMIEdBTU1BCiswMkUxOzAyRTE7MDJFMTswMDZDOzAwNkM7ICMgKMuhOyDLoTsgy6E7IGw7IGw7ICkgTU9ESUZJRVIgTEVUVEVSIFNNQUxMIEwKKzAyRTI7MDJFMjswMkUyOzAwNzM7MDA3MzsgIyAoy6I7IMuiOyDLojsgczsgczsgKSBNT0RJRklFUiBMRVRURVIgU01BTEwgUworMDJFMzswMkUzOzAyRTM7MDA3ODswMDc4OyAjICjLozsgy6M7IMujOyB4OyB4OyApIE1PRElGSUVSIExFVFRFUiBTTUFMTCBYCiswMkU0OzAyRTQ7MDJFNDswMjk1OzAyOTU7ICMgKMukOyDLpDsgy6Q7IMqVOyDKlTsgKSBNT0RJRklFUiBMRVRURVIgU01BTEwgUkVWRVJTRUQgR0xPVFRBTCBTVE9QCiswMzQwOzAzMDA7MDMwMDswMzAwOzAzMDA7ICMgKOKXjM2AOyDil4zMgDsg4peMzIA7IOKXjMyAOyDil4zMgDsgKSBDT01CSU5JTkcgR1JBVkUgVE9ORSBNQVJLCiswMzQxOzAzMDE7MDMwMTswMzAxOzAzMDE7ICMgKOKXjM2BOyDil4zMgTsg4peMzIE7IOKXjMyBOyDil4zMgTsgKSBDT01CSU5JTkcgQUNVVEUgVE9ORSBNQVJLCiswMzQzOzAzMTM7MDMxMzswMzEzOzAzMTM7ICMgKOKXjM2DOyDil4zMkzsg4peMzJM7IOKXjMyTOyDil4zMkzsgKSBDT01CSU5JTkcgR1JFRUsgS09ST05JUworMDM0NDswMzA4IDAzMDE7MDMwOCAwMzAxOzAzMDggMDMwMTswMzA4IDAzMDE7ICMgKOKXjM2EOyDil4zMiOKXjMyBOyDil4zMiOKXjMyBOyDil4zMiOKXjMyBOyDil4zMiOKXjMyBOyApIENPTUJJTklORyBHUkVFSyBESUFMWVRJS0EgVE9OT1MKKzAzNzQ7MDJCOTswMkI5OzAyQjk7MDJCOTsgIyAozbQ7IMq5OyDKuTsgyrk7IMq5OyApIEdSRUVLIE5VTUVSQUwgU0lHTgorMDM3QTswMzdBOzAzN0E7MDAyMCAwMzQ1OzAwMjAgMDM0NTsgIyAozbo7IM26OyDNujsgIOKXjM2FOyAg4peMzYU7ICkgR1JFRUsgWVBPR0VHUkFNTUVOSQorMDM3RTswMDNCOzAwM0I7MDAzQjswMDNCOyAjICjNvjsgOzsgOzsgOzsgOzsgKSBHUkVFSyBRVUVTVElPTiBNQVJLCiswMzg0OzAzODQ7MDM4NDswMDIwIDAzMDE7MDAyMCAwMzAxOyAjICjOhDsgzoQ7IM6EOyAg4peMzIE7ICDil4zMgTsgKSBHUkVFSyBUT05PUworMDM4NTswMzg1OzAwQTggMDMwMTswMDIwIDAzMDggMDMwMTswMDIwIDAzMDggMDMwMTsgIyAozoU7IM6FOyDCqOKXjMyBOyAg4peMzIjil4zMgTsgIOKXjMyI4peMzIE7ICkgR1JFRUsgRElBTFlUSUtBIFRPTk9TCiswMzg2OzAzODY7MDM5MSAwMzAxOzAzODY7MDM5MSAwMzAxOyAjICjOhjsgzoY7IM6R4peMzIE7IM6GOyDOkeKXjMyBOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggVE9OT1MKKzAzODc7MDBCNzswMEI3OzAwQjc7MDBCNzsgIyAozoc7IMK3OyDCtzsgwrc7IMK3OyApIEdSRUVLIEFOTyBURUxFSUEKKzAzODg7MDM4ODswMzk1IDAzMDE7MDM4ODswMzk1IDAzMDE7ICMgKM6IOyDOiDsgzpXil4zMgTsgzog7IM6V4peMzIE7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIFRPTk9TCiswMzg5OzAzODk7MDM5NyAwMzAxOzAzODk7MDM5NyAwMzAxOyAjICjOiTsgzok7IM6X4peMzIE7IM6JOyDOl+KXjMyBOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFRPTk9TCiswMzhBOzAzOEE7MDM5OSAwMzAxOzAzOEE7MDM5OSAwMzAxOyAjICjOijsgzoo7IM6Z4peMzIE7IM6KOyDOmeKXjMyBOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBUT05PUworMDM4QzswMzhDOzAzOUYgMDMwMTswMzhDOzAzOUYgMDMwMTsgIyAozow7IM6MOyDOn+KXjMyBOyDOjDsgzp/il4zMgTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggVE9OT1MKKzAzOEU7MDM4RTswM0E1IDAzMDE7MDM4RTswM0E1IDAzMDE7ICMgKM6OOyDOjjsgzqXil4zMgTsgzo47IM6l4peMzIE7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIFRPTk9TCiswMzhGOzAzOEY7MDNBOSAwMzAxOzAzOEY7MDNBOSAwMzAxOyAjICjOjzsgzo87IM6p4peMzIE7IM6POyDOqeKXjMyBOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggVE9OT1MKKzAzOTA7MDM5MDswM0I5IDAzMDggMDMwMTswMzkwOzAzQjkgMDMwOCAwMzAxOyAjICjOkDsgzpA7IM654peMzIjil4zMgTsgzpA7IM654peMzIjil4zMgTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgVE9OT1MKKzAzQUE7MDNBQTswMzk5IDAzMDg7MDNBQTswMzk5IDAzMDg7ICMgKM6qOyDOqjsgzpnil4zMiDsgzqo7IM6Z4peMzIg7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQQorMDNBQjswM0FCOzAzQTUgMDMwODswM0FCOzAzQTUgMDMwODsgIyAozqs7IM6rOyDOpeKXjMyIOyDOqzsgzqXil4zMiDsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBCiswM0FDOzAzQUM7MDNCMSAwMzAxOzAzQUM7MDNCMSAwMzAxOyAjICjOrDsgzqw7IM6x4peMzIE7IM6sOyDOseKXjMyBOyApIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFRPTk9TCiswM0FEOzAzQUQ7MDNCNSAwMzAxOzAzQUQ7MDNCNSAwMzAxOyAjICjOrTsgzq07IM614peMzIE7IM6tOyDOteKXjMyBOyApIEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggVE9OT1MKKzAzQUU7MDNBRTswM0I3IDAzMDE7MDNBRTswM0I3IDAzMDE7ICMgKM6uOyDOrjsgzrfil4zMgTsgzq47IM634peMzIE7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFRPTk9TCiswM0FGOzAzQUY7MDNCOSAwMzAxOzAzQUY7MDNCOSAwMzAxOyAjICjOrzsgzq87IM654peMzIE7IM6vOyDOueKXjMyBOyApIEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggVE9OT1MKKzAzQjA7MDNCMDswM0M1IDAzMDggMDMwMTswM0IwOzAzQzUgMDMwOCAwMzAxOyAjICjOsDsgzrA7IM+F4peMzIjil4zMgTsgzrA7IM+F4peMzIjil4zMgTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgVE9OT1MKKzAzQ0E7MDNDQTswM0I5IDAzMDg7MDNDQTswM0I5IDAzMDg7ICMgKM+KOyDPijsgzrnil4zMiDsgz4o7IM654peMzIg7ICkgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EKKzAzQ0I7MDNDQjswM0M1IDAzMDg7MDNDQjswM0M1IDAzMDg7ICMgKM+LOyDPizsgz4Xil4zMiDsgz4s7IM+F4peMzIg7ICkgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EKKzAzQ0M7MDNDQzswM0JGIDAzMDE7MDNDQzswM0JGIDAzMDE7ICMgKM+MOyDPjDsgzr/il4zMgTsgz4w7IM6/4peMzIE7ICkgR1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBUT05PUworMDNDRDswM0NEOzAzQzUgMDMwMTswM0NEOzAzQzUgMDMwMTsgIyAoz407IM+NOyDPheKXjMyBOyDPjTsgz4Xil4zMgTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFRPTk9TCiswM0NFOzAzQ0U7MDNDOSAwMzAxOzAzQ0U7MDNDOSAwMzAxOyAjICjPjjsgz447IM+J4peMzIE7IM+OOyDPieKXjMyBOyApIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFRPTk9TCiswM0QwOzAzRDA7MDNEMDswM0IyOzAzQjI7ICMgKM+QOyDPkDsgz5A7IM6yOyDOsjsgKSBHUkVFSyBCRVRBIFNZTUJPTAorMDNEMTswM0QxOzAzRDE7MDNCODswM0I4OyAjICjPkTsgz5E7IM+ROyDOuDsgzrg7ICkgR1JFRUsgVEhFVEEgU1lNQk9MCiswM0QyOzAzRDI7MDNEMjswM0E1OzAzQTU7ICMgKM+SOyDPkjsgz5I7IM6lOyDOpTsgKSBHUkVFSyBVUFNJTE9OIFdJVEggSE9PSyBTWU1CT0wKKzAzRDM7MDNEMzswM0QyIDAzMDE7MDM4RTswM0E1IDAzMDE7ICMgKM+TOyDPkzsgz5Lil4zMgTsgzo47IM6l4peMzIE7ICkgR1JFRUsgVVBTSUxPTiBXSVRIIEFDVVRFIEFORCBIT09LIFNZTUJPTAorMDNENDswM0Q0OzAzRDIgMDMwODswM0FCOzAzQTUgMDMwODsgIyAoz5Q7IM+UOyDPkuKXjMyIOyDOqzsgzqXil4zMiDsgKSBHUkVFSyBVUFNJTE9OIFdJVEggRElBRVJFU0lTIEFORCBIT09LIFNZTUJPTAorMDNENTswM0Q1OzAzRDU7MDNDNjswM0M2OyAjICjPlTsgz5U7IM+VOyDPhjsgz4Y7ICkgR1JFRUsgUEhJIFNZTUJPTAorMDNENjswM0Q2OzAzRDY7MDNDMDswM0MwOyAjICjPljsgz5Y7IM+WOyDPgDsgz4A7ICkgR1JFRUsgUEkgU1lNQk9MCiswM0YwOzAzRjA7MDNGMDswM0JBOzAzQkE7ICMgKM+wOyDPsDsgz7A7IM66OyDOujsgKSBHUkVFSyBLQVBQQSBTWU1CT0wKKzAzRjE7MDNGMTswM0YxOzAzQzE7MDNDMTsgIyAoz7E7IM+xOyDPsTsgz4E7IM+BOyApIEdSRUVLIFJITyBTWU1CT0wKKzAzRjI7MDNGMjswM0YyOzAzQzI7MDNDMjsgIyAoz7I7IM+yOyDPsjsgz4I7IM+COyApIEdSRUVLIExVTkFURSBTSUdNQSBTWU1CT0wKKzA0MDA7MDQwMDswNDE1IDAzMDA7MDQwMDswNDE1IDAzMDA7ICMgKNCAOyDQgDsg0JXil4zMgDsg0IA7INCV4peMzIA7ICkgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUgV0lUSCBHUkFWRQorMDQwMTswNDAxOzA0MTUgMDMwODswNDAxOzA0MTUgMDMwODsgIyAo0IE7INCBOyDQleKXjMyIOyDQgTsg0JXil4zMiDsgKSBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJTworMDQwMzswNDAzOzA0MTMgMDMwMTswNDAzOzA0MTMgMDMwMTsgIyAo0IM7INCDOyDQk+KXjMyBOyDQgzsg0JPil4zMgTsgKSBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSkUKKzA0MDc7MDQwNzswNDA2IDAzMDg7MDQwNzswNDA2IDAzMDg7ICMgKNCHOyDQhzsg0Ibil4zMiDsg0Ic7INCG4peMzIg7ICkgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUkKKzA0MEM7MDQwQzswNDFBIDAzMDE7MDQwQzswNDFBIDAzMDE7ICMgKNCMOyDQjDsg0Jril4zMgTsg0Iw7INCa4peMzIE7ICkgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0pFCiswNDBEOzA0MEQ7MDQxOCAwMzAwOzA0MEQ7MDQxOCAwMzAwOyAjICjQjTsg0I07INCY4peMzIA7INCNOyDQmOKXjMyAOyApIENZUklMTElDIENBUElUQUwgTEVUVEVSIEkgV0lUSCBHUkFWRQorMDQwRTswNDBFOzA0MjMgMDMwNjswNDBFOzA0MjMgMDMwNjsgIyAo0I47INCOOyDQo+KXjMyGOyDQjjsg0KPil4zMhjsgKSBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBVCiswNDE5OzA0MTk7MDQxOCAwMzA2OzA0MTk7MDQxOCAwMzA2OyAjICjQmTsg0Jk7INCY4peMzIY7INCZOyDQmOKXjMyGOyApIENZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIEkKKzA0Mzk7MDQzOTswNDM4IDAzMDY7MDQzOTswNDM4IDAzMDY7ICMgKNC5OyDQuTsg0Ljil4zMhjsg0Lk7INC44peMzIY7ICkgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEkKKzA0NTA7MDQ1MDswNDM1IDAzMDA7MDQ1MDswNDM1IDAzMDA7ICMgKNGQOyDRkDsg0LXil4zMgDsg0ZA7INC14peMzIA7ICkgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElFIFdJVEggR1JBVkUKKzA0NTE7MDQ1MTswNDM1IDAzMDg7MDQ1MTswNDM1IDAzMDg7ICMgKNGROyDRkTsg0LXil4zMiDsg0ZE7INC14peMzIg7ICkgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIElPCiswNDUzOzA0NTM7MDQzMyAwMzAxOzA0NTM7MDQzMyAwMzAxOyAjICjRkzsg0ZM7INCz4peMzIE7INGTOyDQs+KXjMyBOyApIENZUklMTElDIFNNQUxMIExFVFRFUiBHSkUKKzA0NTc7MDQ1NzswNDU2IDAzMDg7MDQ1NzswNDU2IDAzMDg7ICMgKNGXOyDRlzsg0Zbil4zMiDsg0Zc7INGW4peMzIg7ICkgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlJCiswNDVDOzA0NUM7MDQzQSAwMzAxOzA0NUM7MDQzQSAwMzAxOyAjICjRnDsg0Zw7INC64peMzIE7INGcOyDQuuKXjMyBOyApIENZUklMTElDIFNNQUxMIExFVFRFUiBLSkUKKzA0NUQ7MDQ1RDswNDM4IDAzMDA7MDQ1RDswNDM4IDAzMDA7ICMgKNGdOyDRnTsg0Ljil4zMgDsg0Z07INC44peMzIA7ICkgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRQorMDQ1RTswNDVFOzA0NDMgMDMwNjswNDVFOzA0NDMgMDMwNjsgIyAo0Z47INGeOyDRg+KXjMyGOyDRnjsg0YPil4zMhjsgKSBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgVQorMDQ3NjswNDc2OzA0NzQgMDMwRjswNDc2OzA0NzQgMDMwRjsgIyAo0bY7ING2OyDRtOKXjMyPOyDRtjsg0bTil4zMjzsgKSBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJWkhJVFNBIFdJVEggRE9VQkxFIEdSQVZFIEFDQ0VOVAorMDQ3NzswNDc3OzA0NzUgMDMwRjswNDc3OzA0NzUgMDMwRjsgIyAo0bc7ING3OyDRteKXjMyPOyDRtzsg0bXil4zMjzsgKSBDWVJJTExJQyBTTUFMTCBMRVRURVIgSVpISVRTQSBXSVRIIERPVUJMRSBHUkFWRSBBQ0NFTlQKKzA0QzE7MDRDMTswNDE2IDAzMDY7MDRDMTswNDE2IDAzMDY7ICMgKNOBOyDTgTsg0Jbil4zMhjsg04E7INCW4peMzIY7ICkgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFIFdJVEggQlJFVkUKKzA0QzI7MDRDMjswNDM2IDAzMDY7MDRDMjswNDM2IDAzMDY7ICMgKNOCOyDTgjsg0Lbil4zMhjsg04I7INC24peMzIY7ICkgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRSBXSVRIIEJSRVZFCiswNEQwOzA0RDA7MDQxMCAwMzA2OzA0RDA7MDQxMCAwMzA2OyAjICjTkDsg05A7INCQ4peMzIY7INOQOyDQkOKXjMyGOyApIENZUklMTElDIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRQorMDREMTswNEQxOzA0MzAgMDMwNjswNEQxOzA0MzAgMDMwNjsgIyAo05E7INOROyDQsOKXjMyGOyDTkTsg0LDil4zMhjsgKSBDWVJJTExJQyBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFCiswNEQyOzA0RDI7MDQxMCAwMzA4OzA0RDI7MDQxMCAwMzA4OyAjICjTkjsg05I7INCQ4peMzIg7INOSOyDQkOKXjMyIOyApIENZUklMTElDIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKzA0RDM7MDREMzswNDMwIDAzMDg7MDREMzswNDMwIDAzMDg7ICMgKNOTOyDTkzsg0LDil4zMiDsg05M7INCw4peMzIg7ICkgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMKKzA0RDY7MDRENjswNDE1IDAzMDY7MDRENjswNDE1IDAzMDY7ICMgKNOWOyDTljsg0JXil4zMhjsg05Y7INCV4peMzIY7ICkgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUgV0lUSCBCUkVWRQorMDRENzswNEQ3OzA0MzUgMDMwNjswNEQ3OzA0MzUgMDMwNjsgIyAo05c7INOXOyDQteKXjMyGOyDTlzsg0LXil4zMhjsgKSBDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUgV0lUSCBCUkVWRQorMDREQTswNERBOzA0RDggMDMwODswNERBOzA0RDggMDMwODsgIyAo05o7INOaOyDTmOKXjMyIOyDTmjsg05jil4zMiDsgKSBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTQ0hXQSBXSVRIIERJQUVSRVNJUworMDREQjswNERCOzA0RDkgMDMwODswNERCOzA0RDkgMDMwODsgIyAo05s7INObOyDTmeKXjMyIOyDTmzsg05nil4zMiDsgKSBDWVJJTExJQyBTTUFMTCBMRVRURVIgU0NIV0EgV0lUSCBESUFFUkVTSVMKKzA0REM7MDREQzswNDE2IDAzMDg7MDREQzswNDE2IDAzMDg7ICMgKNOcOyDTnDsg0Jbil4zMiDsg05w7INCW4peMzIg7ICkgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFIFdJVEggRElBRVJFU0lTCiswNEREOzA0REQ7MDQzNiAwMzA4OzA0REQ7MDQzNiAwMzA4OyAjICjTnTsg0507INC24peMzIg7INOdOyDQtuKXjMyIOyApIENZUklMTElDIFNNQUxMIExFVFRFUiBaSEUgV0lUSCBESUFFUkVTSVMKKzA0REU7MDRERTswNDE3IDAzMDg7MDRERTswNDE3IDAzMDg7ICMgKNOeOyDTnjsg0Jfil4zMiDsg0547INCX4peMzIg7ICkgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUgV0lUSCBESUFFUkVTSVMKKzA0REY7MDRERjswNDM3IDAzMDg7MDRERjswNDM3IDAzMDg7ICMgKNOfOyDTnzsg0Lfil4zMiDsg0587INC34peMzIg7ICkgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFIFdJVEggRElBRVJFU0lTCiswNEUyOzA0RTI7MDQxOCAwMzA0OzA0RTI7MDQxOCAwMzA0OyAjICjTojsg06I7INCY4peMzIQ7INOiOyDQmOKXjMyEOyApIENZUklMTElDIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST04KKzA0RTM7MDRFMzswNDM4IDAzMDQ7MDRFMzswNDM4IDAzMDQ7ICMgKNOjOyDTozsg0Ljil4zMhDsg06M7INC44peMzIQ7ICkgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIEkgV0lUSCBNQUNST04KKzA0RTQ7MDRFNDswNDE4IDAzMDg7MDRFNDswNDE4IDAzMDg7ICMgKNOkOyDTpDsg0Jjil4zMiDsg06Q7INCY4peMzIg7ICkgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUworMDRFNTswNEU1OzA0MzggMDMwODswNEU1OzA0MzggMDMwODsgIyAo06U7INOlOyDQuOKXjMyIOyDTpTsg0Ljil4zMiDsgKSBDWVJJTExJQyBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUworMDRFNjswNEU2OzA0MUUgMDMwODswNEU2OzA0MUUgMDMwODsgIyAo06Y7INOmOyDQnuKXjMyIOyDTpjsg0J7il4zMiDsgKSBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiswNEU3OzA0RTc7MDQzRSAwMzA4OzA0RTc7MDQzRSAwMzA4OyAjICjTpzsg06c7INC+4peMzIg7INOnOyDQvuKXjMyIOyApIENZUklMTElDIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTCiswNEVBOzA0RUE7MDRFOCAwMzA4OzA0RUE7MDRFOCAwMzA4OyAjICjTqjsg06o7INOo4peMzIg7INOqOyDTqOKXjMyIOyApIENZUklMTElDIENBUElUQUwgTEVUVEVSIEJBUlJFRCBPIFdJVEggRElBRVJFU0lTCiswNEVCOzA0RUI7MDRFOSAwMzA4OzA0RUI7MDRFOSAwMzA4OyAjICjTqzsg06s7INOp4peMzIg7INOrOyDTqeKXjMyIOyApIENZUklMTElDIFNNQUxMIExFVFRFUiBCQVJSRUQgTyBXSVRIIERJQUVSRVNJUworMDRFQzswNEVDOzA0MkQgMDMwODswNEVDOzA0MkQgMDMwODsgIyAo06w7INOsOyDQreKXjMyIOyDTrDsg0K3il4zMiDsgKSBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiswNEVEOzA0RUQ7MDQ0RCAwMzA4OzA0RUQ7MDQ0RCAwMzA4OyAjICjTrTsg0607INGN4peMzIg7INOtOyDRjeKXjMyIOyApIENZUklMTElDIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTCiswNEVFOzA0RUU7MDQyMyAwMzA0OzA0RUU7MDQyMyAwMzA0OyAjICjTrjsg0647INCj4peMzIQ7INOuOyDQo+KXjMyEOyApIENZUklMTElDIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST04KKzA0RUY7MDRFRjswNDQzIDAzMDQ7MDRFRjswNDQzIDAzMDQ7ICMgKNOvOyDTrzsg0YPil4zMhDsg0687INGD4peMzIQ7ICkgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST04KKzA0RjA7MDRGMDswNDIzIDAzMDg7MDRGMDswNDIzIDAzMDg7ICMgKNOwOyDTsDsg0KPil4zMiDsg07A7INCj4peMzIg7ICkgQ1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUworMDRGMTswNEYxOzA0NDMgMDMwODswNEYxOzA0NDMgMDMwODsgIyAo07E7INOxOyDRg+KXjMyIOyDTsTsg0YPil4zMiDsgKSBDWVJJTExJQyBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUworMDRGMjswNEYyOzA0MjMgMDMwQjswNEYyOzA0MjMgMDMwQjsgIyAo07I7INOyOyDQo+KXjMyLOyDTsjsg0KPil4zMizsgKSBDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCiswNEYzOzA0RjM7MDQ0MyAwMzBCOzA0RjM7MDQ0MyAwMzBCOyAjICjTszsg07M7INGD4peMzIs7INOzOyDRg+KXjMyLOyApIENZUklMTElDIFNNQUxMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFCiswNEY0OzA0RjQ7MDQyNyAwMzA4OzA0RjQ7MDQyNyAwMzA4OyAjICjTtDsg07Q7INCn4peMzIg7INO0OyDQp+KXjMyIOyApIENZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIERJQUVSRVNJUworMDRGNTswNEY1OzA0NDcgMDMwODswNEY1OzA0NDcgMDMwODsgIyAo07U7INO1OyDRh+KXjMyIOyDTtTsg0Yfil4zMiDsgKSBDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggRElBRVJFU0lTCiswNEY4OzA0Rjg7MDQyQiAwMzA4OzA0Rjg7MDQyQiAwMzA4OyAjICjTuDsg07g7INCr4peMzIg7INO4OyDQq+KXjMyIOyApIENZUklMTElDIENBUElUQUwgTEVUVEVSIFlFUlUgV0lUSCBESUFFUkVTSVMKKzA0Rjk7MDRGOTswNDRCIDAzMDg7MDRGOTswNDRCIDAzMDg7ICMgKNO5OyDTuTsg0Yvil4zMiDsg07k7INGL4peMzIg7ICkgQ1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlUgV0lUSCBESUFFUkVTSVMKKzA1ODc7MDU4NzswNTg3OzA1NjUgMDU4MjswNTY1IDA1ODI7ICMgKNaHOyDWhzsg1oc7INWl1oI7INWl1oI7ICkgQVJNRU5JQU4gU01BTEwgTElHQVRVUkUgRUNIIFlJV04KKzA2MjI7MDYyMjswNjI3IDA2NTM7MDYyMjswNjI3IDA2NTM7ICMgKNiiOyDYojsg2Kfil4zZkzsg2KI7INin4peM2ZM7ICkgQVJBQklDIExFVFRFUiBBTEVGIFdJVEggTUFEREEgQUJPVkUKKzA2MjM7MDYyMzswNjI3IDA2NTQ7MDYyMzswNjI3IDA2NTQ7ICMgKNijOyDYozsg2Kfil4zZlDsg2KM7INin4peM2ZQ7ICkgQVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQUJPVkUKKzA2MjQ7MDYyNDswNjQ4IDA2NTQ7MDYyNDswNjQ4IDA2NTQ7ICMgKNikOyDYpDsg2Yjil4zZlDsg2KQ7INmI4peM2ZQ7ICkgQVJBQklDIExFVFRFUiBXQVcgV0lUSCBIQU1aQSBBQk9WRQorMDYyNTswNjI1OzA2MjcgMDY1NTswNjI1OzA2MjcgMDY1NTsgIyAo2KU7INilOyDYp+KXjNmVOyDYpTsg2Kfil4zZlTsgKSBBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBIQU1aQSBCRUxPVworMDYyNjswNjI2OzA2NEEgMDY1NDswNjI2OzA2NEEgMDY1NDsgIyAo2KY7INimOyDZiuKXjNmUOyDYpjsg2Yril4zZlDsgKSBBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFCiswNjc1OzA2NzU7MDY3NTswNjI3IDA2NzQ7MDYyNyAwNjc0OyAjICjZtTsg2bU7INm1OyDYp9m0OyDYp9m0OyApIEFSQUJJQyBMRVRURVIgSElHSCBIQU1aQSBBTEVGCiswNjc2OzA2NzY7MDY3NjswNjQ4IDA2NzQ7MDY0OCAwNjc0OyAjICjZtjsg2bY7INm2OyDZiNm0OyDZiNm0OyApIEFSQUJJQyBMRVRURVIgSElHSCBIQU1aQSBXQVcKKzA2Nzc7MDY3NzswNjc3OzA2QzcgMDY3NDswNkM3IDA2NzQ7ICMgKNm3OyDZtzsg2bc7INuH2bQ7INuH2bQ7ICkgQVJBQklDIExFVFRFUiBVIFdJVEggSEFNWkEgQUJPVkUKKzA2Nzg7MDY3ODswNjc4OzA2NEEgMDY3NDswNjRBIDA2NzQ7ICMgKNm4OyDZuDsg2bg7INmK2bQ7INmK2bQ7ICkgQVJBQklDIExFVFRFUiBISUdIIEhBTVpBIFlFSAorMDZDMDswNkMwOzA2RDUgMDY1NDswNkMwOzA2RDUgMDY1NDsgIyAo24A7INuAOyDbleKXjNmUOyDbgDsg25Xil4zZlDsgKSBBUkFCSUMgTEVUVEVSIEhFSCBXSVRIIFlFSCBBQk9WRQorMDZDMjswNkMyOzA2QzEgMDY1NDswNkMyOzA2QzEgMDY1NDsgIyAo24I7INuCOyDbgeKXjNmUOyDbgjsg24Hil4zZlDsgKSBBUkFCSUMgTEVUVEVSIEhFSCBHT0FMIFdJVEggSEFNWkEgQUJPVkUKKzA2RDM7MDZEMzswNkQyIDA2NTQ7MDZEMzswNkQyIDA2NTQ7ICMgKNuTOyDbkzsg25Lil4zZlDsg25M7INuS4peM2ZQ7ICkgQVJBQklDIExFVFRFUiBZRUggQkFSUkVFIFdJVEggSEFNWkEgQUJPVkUKKzA5Mjk7MDkyOTswOTI4IDA5M0M7MDkyOTswOTI4IDA5M0M7ICMgKOCkqTsg4KSpOyDgpKjil4zgpLw7IOCkqTsg4KSo4peM4KS8OyApIERFVkFOQUdBUkkgTEVUVEVSIE5OTkEKKzA5MzE7MDkzMTswOTMwIDA5M0M7MDkzMTswOTMwIDA5M0M7ICMgKOCksTsg4KSxOyDgpLDil4zgpLw7IOCksTsg4KSw4peM4KS8OyApIERFVkFOQUdBUkkgTEVUVEVSIFJSQQorMDkzNDswOTM0OzA5MzMgMDkzQzswOTM0OzA5MzMgMDkzQzsgIyAo4KS0OyDgpLQ7IOCks+KXjOCkvDsg4KS0OyDgpLPil4zgpLw7ICkgREVWQU5BR0FSSSBMRVRURVIgTExMQQorMDk1ODswOTE1IDA5M0M7MDkxNSAwOTNDOzA5MTUgMDkzQzswOTE1IDA5M0M7ICMgKOClmDsg4KSV4peM4KS8OyDgpJXil4zgpLw7IOCkleKXjOCkvDsg4KSV4peM4KS8OyApIERFVkFOQUdBUkkgTEVUVEVSIFFBCiswOTU5OzA5MTYgMDkzQzswOTE2IDA5M0M7MDkxNiAwOTNDOzA5MTYgMDkzQzsgIyAo4KWZOyDgpJbil4zgpLw7IOCkluKXjOCkvDsg4KSW4peM4KS8OyDgpJbil4zgpLw7ICkgREVWQU5BR0FSSSBMRVRURVIgS0hIQQorMDk1QTswOTE3IDA5M0M7MDkxNyAwOTNDOzA5MTcgMDkzQzswOTE3IDA5M0M7ICMgKOClmjsg4KSX4peM4KS8OyDgpJfil4zgpLw7IOCkl+KXjOCkvDsg4KSX4peM4KS8OyApIERFVkFOQUdBUkkgTEVUVEVSIEdISEEKKzA5NUI7MDkxQyAwOTNDOzA5MUMgMDkzQzswOTFDIDA5M0M7MDkxQyAwOTNDOyAjICjgpZs7IOCknOKXjOCkvDsg4KSc4peM4KS8OyDgpJzil4zgpLw7IOCknOKXjOCkvDsgKSBERVZBTkFHQVJJIExFVFRFUiBaQQorMDk1QzswOTIxIDA5M0M7MDkyMSAwOTNDOzA5MjEgMDkzQzswOTIxIDA5M0M7ICMgKOClnDsg4KSh4peM4KS8OyDgpKHil4zgpLw7IOCkoeKXjOCkvDsg4KSh4peM4KS8OyApIERFVkFOQUdBUkkgTEVUVEVSIEREREhBCiswOTVEOzA5MjIgMDkzQzswOTIyIDA5M0M7MDkyMiAwOTNDOzA5MjIgMDkzQzsgIyAo4KWdOyDgpKLil4zgpLw7IOCkouKXjOCkvDsg4KSi4peM4KS8OyDgpKLil4zgpLw7ICkgREVWQU5BR0FSSSBMRVRURVIgUkhBCiswOTVFOzA5MkIgMDkzQzswOTJCIDA5M0M7MDkyQiAwOTNDOzA5MkIgMDkzQzsgIyAo4KWeOyDgpKvil4zgpLw7IOCkq+KXjOCkvDsg4KSr4peM4KS8OyDgpKvil4zgpLw7ICkgREVWQU5BR0FSSSBMRVRURVIgRkEKKzA5NUY7MDkyRiAwOTNDOzA5MkYgMDkzQzswOTJGIDA5M0M7MDkyRiAwOTNDOyAjICjgpZ87IOCkr+KXjOCkvDsg4KSv4peM4KS8OyDgpK/il4zgpLw7IOCkr+KXjOCkvDsgKSBERVZBTkFHQVJJIExFVFRFUiBZWUEKKzA5Q0I7MDlDQjswOUM3IDA5QkU7MDlDQjswOUM3IDA5QkU7ICMgKOCnizsg4KeLOyDgp4fgpr47IOCnizsg4KeH4Ka+OyApIEJFTkdBTEkgVk9XRUwgU0lHTiBPCiswOUNDOzA5Q0M7MDlDNyAwOUQ3OzA5Q0M7MDlDNyAwOUQ3OyAjICjgp4w7IOCnjDsg4KeH4KeXOyDgp4w7IOCnh+CnlzsgKSBCRU5HQUxJIFZPV0VMIFNJR04gQVUKKzA5REM7MDlBMSAwOUJDOzA5QTEgMDlCQzswOUExIDA5QkM7MDlBMSAwOUJDOyAjICjgp5w7IOCmoeKXjOCmvDsg4Kah4peM4Ka8OyDgpqHil4zgprw7IOCmoeKXjOCmvDsgKSBCRU5HQUxJIExFVFRFUiBSUkEKKzA5REQ7MDlBMiAwOUJDOzA5QTIgMDlCQzswOUEyIDA5QkM7MDlBMiAwOUJDOyAjICjgp507IOCmouKXjOCmvDsg4Kai4peM4Ka8OyDgpqLil4zgprw7IOCmouKXjOCmvDsgKSBCRU5HQUxJIExFVFRFUiBSSEEKKzA5REY7MDlBRiAwOUJDOzA5QUYgMDlCQzswOUFGIDA5QkM7MDlBRiAwOUJDOyAjICjgp587IOCmr+KXjOCmvDsg4Kav4peM4Ka8OyDgpq/il4zgprw7IOCmr+KXjOCmvDsgKSBCRU5HQUxJIExFVFRFUiBZWUEKKzBBMzM7MEEzMiAwQTNDOzBBMzIgMEEzQzswQTMyIDBBM0M7MEEzMiAwQTNDOyAjICjgqLM7IOCosuKXjOCovDsg4Kiy4peM4Ki8OyDgqLLil4zgqLw7IOCosuKXjOCovDsgKSBHVVJNVUtISSBMRVRURVIgTExBCiswQTM2OzBBMzggMEEzQzswQTM4IDBBM0M7MEEzOCAwQTNDOzBBMzggMEEzQzsgIyAo4Ki2OyDgqLjil4zgqLw7IOCouOKXjOCovDsg4Ki44peM4Ki8OyDgqLjil4zgqLw7ICkgR1VSTVVLSEkgTEVUVEVSIFNIQQorMEE1OTswQTE2IDBBM0M7MEExNiAwQTNDOzBBMTYgMEEzQzswQTE2IDBBM0M7ICMgKOCpmTsg4KiW4peM4Ki8OyDgqJbil4zgqLw7IOColuKXjOCovDsg4KiW4peM4Ki8OyApIEdVUk1VS0hJIExFVFRFUiBLSEhBCiswQTVBOzBBMTcgMEEzQzswQTE3IDBBM0M7MEExNyAwQTNDOzBBMTcgMEEzQzsgIyAo4KmaOyDgqJfil4zgqLw7IOCol+KXjOCovDsg4KiX4peM4Ki8OyDgqJfil4zgqLw7ICkgR1VSTVVLSEkgTEVUVEVSIEdISEEKKzBBNUI7MEExQyAwQTNDOzBBMUMgMEEzQzswQTFDIDBBM0M7MEExQyAwQTNDOyAjICjgqZs7IOConOKXjOCovDsg4Kic4peM4Ki8OyDgqJzil4zgqLw7IOConOKXjOCovDsgKSBHVVJNVUtISSBMRVRURVIgWkEKKzBBNUU7MEEyQiAwQTNDOzBBMkIgMEEzQzswQTJCIDBBM0M7MEEyQiAwQTNDOyAjICjgqZ47IOCoq+KXjOCovDsg4Kir4peM4Ki8OyDgqKvil4zgqLw7IOCoq+KXjOCovDsgKSBHVVJNVUtISSBMRVRURVIgRkEKKzBCNDg7MEI0ODswQjQ3IDBCNTY7MEI0ODswQjQ3IDBCNTY7ICMgKOCtiDsg4K2IOyDgrYfil4zgrZY7IOCtiDsg4K2H4peM4K2WOyApIE9SSVlBIFZPV0VMIFNJR04gQUkKKzBCNEI7MEI0QjswQjQ3IDBCM0U7MEI0QjswQjQ3IDBCM0U7ICMgKOCtizsg4K2LOyDgrYfgrL47IOCtizsg4K2H4Ky+OyApIE9SSVlBIFZPV0VMIFNJR04gTworMEI0QzswQjRDOzBCNDcgMEI1NzswQjRDOzBCNDcgMEI1NzsgIyAo4K2MOyDgrYw7IOCth+Ctlzsg4K2MOyDgrYfgrZc7ICkgT1JJWUEgVk9XRUwgU0lHTiBBVQorMEI1QzswQjIxIDBCM0M7MEIyMSAwQjNDOzBCMjEgMEIzQzswQjIxIDBCM0M7ICMgKOCtnDsg4Kyh4peM4Ky8OyDgrKHil4zgrLw7IOCsoeKXjOCsvDsg4Kyh4peM4Ky8OyApIE9SSVlBIExFVFRFUiBSUkEKKzBCNUQ7MEIyMiAwQjNDOzBCMjIgMEIzQzswQjIyIDBCM0M7MEIyMiAwQjNDOyAjICjgrZ07IOCsouKXjOCsvDsg4Kyi4peM4Ky8OyDgrKLil4zgrLw7IOCsouKXjOCsvDsgKSBPUklZQSBMRVRURVIgUkhBCiswQjk0OzBCOTQ7MEI5MiAwQkQ3OzBCOTQ7MEI5MiAwQkQ3OyAjICjgrpQ7IOCulDsg4K6S4K+XOyDgrpQ7IOCukuCvlzsgKSBUQU1JTCBMRVRURVIgQVUKKzBCQ0E7MEJDQTswQkM2IDBCQkU7MEJDQTswQkM2IDBCQkU7ICMgKOCvijsg4K+KOyDgr4bgrr47IOCvijsg4K+G4K6+OyApIFRBTUlMIFZPV0VMIFNJR04gTworMEJDQjswQkNCOzBCQzcgMEJCRTswQkNCOzBCQzcgMEJCRTsgIyAo4K+LOyDgr4s7IOCvh+Cuvjsg4K+LOyDgr4fgrr47ICkgVEFNSUwgVk9XRUwgU0lHTiBPTworMEJDQzswQkNDOzBCQzYgMEJENzswQkNDOzBCQzYgMEJENzsgIyAo4K+MOyDgr4w7IOCvhuCvlzsg4K+MOyDgr4bgr5c7ICkgVEFNSUwgVk9XRUwgU0lHTiBBVQorMEM0ODswQzQ4OzBDNDYgMEM1NjswQzQ4OzBDNDYgMEM1NjsgIyAo4peM4LGIOyDil4zgsYg7IOKXjOCxhuKXjOCxljsg4peM4LGIOyDil4zgsYbil4zgsZY7ICkgVEVMVUdVIFZPV0VMIFNJR04gQUkKKzBDQzA7MENDMDswQ0JGIDBDRDU7MENDMDswQ0JGIDBDRDU7ICMgKOCzgDsg4LOAOyDil4zgsr/gs5U7IOCzgDsg4peM4LK/4LOVOyApIEtBTk5BREEgVk9XRUwgU0lHTiBJSQorMENDNzswQ0M3OzBDQzYgMENENTswQ0M3OzBDQzYgMENENTsgIyAo4LOHOyDgs4c7IOKXjOCzhuCzlTsg4LOHOyDil4zgs4bgs5U7ICkgS0FOTkFEQSBWT1dFTCBTSUdOIEVFCiswQ0M4OzBDQzg7MENDNiAwQ0Q2OzBDQzg7MENDNiAwQ0Q2OyAjICjgs4g7IOCziDsg4peM4LOG4LOWOyDgs4g7IOKXjOCzhuCzljsgKSBLQU5OQURBIFZPV0VMIFNJR04gQUkKKzBDQ0E7MENDQTswQ0M2IDBDQzI7MENDQTswQ0M2IDBDQzI7ICMgKOCzijsg4LOKOyDil4zgs4bgs4I7IOCzijsg4peM4LOG4LOCOyApIEtBTk5BREEgVk9XRUwgU0lHTiBPCiswQ0NCOzBDQ0I7MENDNiAwQ0MyIDBDRDU7MENDQjswQ0M2IDBDQzIgMENENTsgIyAo4LOLOyDgs4s7IOKXjOCzhuCzguCzlTsg4LOLOyDil4zgs4bgs4Lgs5U7ICkgS0FOTkFEQSBWT1dFTCBTSUdOIE9PCiswRDRBOzBENEE7MEQ0NiAwRDNFOzBENEE7MEQ0NiAwRDNFOyAjICjgtYo7IOC1ijsg4LWG4LS+OyDgtYo7IOC1huC0vjsgKSBNQUxBWUFMQU0gVk9XRUwgU0lHTiBPCiswRDRCOzBENEI7MEQ0NyAwRDNFOzBENEI7MEQ0NyAwRDNFOyAjICjgtYs7IOC1izsg4LWH4LS+OyDgtYs7IOC1h+C0vjsgKSBNQUxBWUFMQU0gVk9XRUwgU0lHTiBPTworMEQ0QzswRDRDOzBENDYgMEQ1NzswRDRDOzBENDYgMEQ1NzsgIyAo4LWMOyDgtYw7IOC1huC1lzsg4LWMOyDgtYbgtZc7ICkgTUFMQVlBTEFNIFZPV0VMIFNJR04gQVUKKzBEREE7MEREQTswREQ5IDBEQ0E7MEREQTswREQ5IDBEQ0E7ICMgKOC3mjsg4LeaOyDgt5nil4zgt4o7IOC3mjsg4LeZ4peM4LeKOyApIFNJTkhBTEEgVk9XRUwgU0lHTiBESUdBIEtPTUJVVkEKKzBEREM7MEREQzswREQ5IDBEQ0Y7MEREQzswREQ5IDBEQ0Y7ICMgKOC3nDsg4LecOyDgt5ngt487IOC3nDsg4LeZ4LePOyApIFNJTkhBTEEgVk9XRUwgU0lHTiBLT01CVVZBIEhBQSBBRUxBLVBJTExBCiswREREOzBEREQ7MEREOSAwRENGIDBEQ0E7MERERDswREQ5IDBEQ0YgMERDQTsgIyAo4LedOyDgt507IOC3meC3j+KXjOC3ijsg4LedOyDgt5ngt4/il4zgt4o7ICkgU0lOSEFMQSBWT1dFTCBTSUdOIEtPTUJVVkEgSEFBIERJR0EgQUVMQS1QSUxMQQorMERERTswRERFOzBERDkgMERERjswRERFOzBERDkgMERERjsgIyAo4LeeOyDgt547IOC3meC3nzsg4LeeOyDgt5ngt587ICkgU0lOSEFMQSBWT1dFTCBTSUdOIEtPTUJVVkEgSEFBIEdBWUFOVUtJVFRBCiswRTMzOzBFMzM7MEUzMzswRTREIDBFMzI7MEU0RCAwRTMyOyAjICjguLM7IOC4szsg4LizOyDil4zguY3guLI7IOKXjOC5jeC4sjsgKSBUSEFJIENIQVJBQ1RFUiBTQVJBIEFNCiswRUIzOzBFQjM7MEVCMzswRUNEIDBFQjI7MEVDRCAwRUIyOyAjICjgurM7IOC6szsg4LqzOyDil4zgu43gurI7IOKXjOC7jeC6sjsgKSBMQU8gVk9XRUwgU0lHTiBBTQorMEVEQzswRURDOzBFREM7MEVBQiAwRTk5OzBFQUIgMEU5OTsgIyAo4LucOyDgu5w7IOC7nDsg4Lqr4LqZOyDguqvgupk7ICkgTEFPIEhPIE5PCiswRUREOzBFREQ7MEVERDswRUFCIDBFQTE7MEVBQiAwRUExOyAjICjgu507IOC7nTsg4LudOyDguqvguqE7IOC6q+C6oTsgKSBMQU8gSE8gTU8KKzBGMEM7MEYwQzswRjBDOzBGMEI7MEYwQjsgIyAo4LyMOyDgvIw7IOC8jDsg4LyLOyDgvIs7ICkgVElCRVRBTiBNQVJLIERFTElNSVRFUiBUU0hFRyBCU1RBUgorMEY0MzswRjQyIDBGQjc7MEY0MiAwRkI3OzBGNDIgMEZCNzswRjQyIDBGQjc7ICMgKOC9gzsg4L2C4peM4L63OyDgvYLil4zgvrc7IOC9guKXjOC+tzsg4L2C4peM4L63OyApIFRJQkVUQU4gTEVUVEVSIEdIQQorMEY0RDswRjRDIDBGQjc7MEY0QyAwRkI3OzBGNEMgMEZCNzswRjRDIDBGQjc7ICMgKOC9jTsg4L2M4peM4L63OyDgvYzil4zgvrc7IOC9jOKXjOC+tzsg4L2M4peM4L63OyApIFRJQkVUQU4gTEVUVEVSIERESEEKKzBGNTI7MEY1MSAwRkI3OzBGNTEgMEZCNzswRjUxIDBGQjc7MEY1MSAwRkI3OyAjICjgvZI7IOC9keKXjOC+tzsg4L2R4peM4L63OyDgvZHil4zgvrc7IOC9keKXjOC+tzsgKSBUSUJFVEFOIExFVFRFUiBESEEKKzBGNTc7MEY1NiAwRkI3OzBGNTYgMEZCNzswRjU2IDBGQjc7MEY1NiAwRkI3OyAjICjgvZc7IOC9luKXjOC+tzsg4L2W4peM4L63OyDgvZbil4zgvrc7IOC9luKXjOC+tzsgKSBUSUJFVEFOIExFVFRFUiBCSEEKKzBGNUM7MEY1QiAwRkI3OzBGNUIgMEZCNzswRjVCIDBGQjc7MEY1QiAwRkI3OyAjICjgvZw7IOC9m+KXjOC+tzsg4L2b4peM4L63OyDgvZvil4zgvrc7IOC9m+KXjOC+tzsgKSBUSUJFVEFOIExFVFRFUiBEWkhBCiswRjY5OzBGNDAgMEZCNTswRjQwIDBGQjU7MEY0MCAwRkI1OzBGNDAgMEZCNTsgIyAo4L2pOyDgvYDil4zgvrU7IOC9gOKXjOC+tTsg4L2A4peM4L61OyDgvYDil4zgvrU7ICkgVElCRVRBTiBMRVRURVIgS1NTQQorMEY3MzswRjcxIDBGNzI7MEY3MSAwRjcyOzBGNzEgMEY3MjswRjcxIDBGNzI7ICMgKOKXjOC9szsg4peM4L2x4peM4L2yOyDil4zgvbHil4zgvbI7IOKXjOC9seKXjOC9sjsg4peM4L2x4peM4L2yOyApIFRJQkVUQU4gVk9XRUwgU0lHTiBJSQorMEY3NTswRjcxIDBGNzQ7MEY3MSAwRjc0OzBGNzEgMEY3NDswRjcxIDBGNzQ7ICMgKOKXjOC9tTsg4peM4L2x4peM4L20OyDil4zgvbHil4zgvbQ7IOKXjOC9seKXjOC9tDsg4peM4L2x4peM4L20OyApIFRJQkVUQU4gVk9XRUwgU0lHTiBVVQorMEY3NjswRkIyIDBGODA7MEZCMiAwRjgwOzBGQjIgMEY4MDswRkIyIDBGODA7ICMgKOKXjOC9tjsg4peM4L6y4peM4L6AOyDil4zgvrLil4zgvoA7IOKXjOC+suKXjOC+gDsg4peM4L6y4peM4L6AOyApIFRJQkVUQU4gVk9XRUwgU0lHTiBWT0NBTElDIFIKKzBGNzc7MEY3NzswRjc3OzBGQjIgMEY3MSAwRjgwOzBGQjIgMEY3MSAwRjgwOyAjICjil4zgvbc7IOKXjOC9tzsg4peM4L23OyDil4zgvrLil4zgvbHil4zgvoA7IOKXjOC+suKXjOC9seKXjOC+gDsgKSBUSUJFVEFOIFZPV0VMIFNJR04gVk9DQUxJQyBSUgorMEY3ODswRkIzIDBGODA7MEZCMyAwRjgwOzBGQjMgMEY4MDswRkIzIDBGODA7ICMgKOKXjOC9uDsg4peM4L6z4peM4L6AOyDil4zgvrPil4zgvoA7IOKXjOC+s+KXjOC+gDsg4peM4L6z4peM4L6AOyApIFRJQkVUQU4gVk9XRUwgU0lHTiBWT0NBTElDIEwKKzBGNzk7MEY3OTswRjc5OzBGQjMgMEY3MSAwRjgwOzBGQjMgMEY3MSAwRjgwOyAjICjil4zgvbk7IOKXjOC9uTsg4peM4L25OyDil4zgvrPil4zgvbHil4zgvoA7IOKXjOC+s+KXjOC9seKXjOC+gDsgKSBUSUJFVEFOIFZPV0VMIFNJR04gVk9DQUxJQyBMTAorMEY4MTswRjcxIDBGODA7MEY3MSAwRjgwOzBGNzEgMEY4MDswRjcxIDBGODA7ICMgKOKXjOC+gTsg4peM4L2x4peM4L6AOyDil4zgvbHil4zgvoA7IOKXjOC9seKXjOC+gDsg4peM4L2x4peM4L6AOyApIFRJQkVUQU4gVk9XRUwgU0lHTiBSRVZFUlNFRCBJSQorMEY5MzswRjkyIDBGQjc7MEY5MiAwRkI3OzBGOTIgMEZCNzswRjkyIDBGQjc7ICMgKOKXjOC+kzsg4peM4L6S4peM4L63OyDil4zgvpLil4zgvrc7IOKXjOC+kuKXjOC+tzsg4peM4L6S4peM4L63OyApIFRJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBHSEEKKzBGOUQ7MEY5QyAwRkI3OzBGOUMgMEZCNzswRjlDIDBGQjc7MEY5QyAwRkI3OyAjICjil4zgvp07IOKXjOC+nOKXjOC+tzsg4peM4L6c4peM4L63OyDil4zgvpzil4zgvrc7IOKXjOC+nOKXjOC+tzsgKSBUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgRERIQQorMEZBMjswRkExIDBGQjc7MEZBMSAwRkI3OzBGQTEgMEZCNzswRkExIDBGQjc7ICMgKOKXjOC+ojsg4peM4L6h4peM4L63OyDil4zgvqHil4zgvrc7IOKXjOC+oeKXjOC+tzsg4peM4L6h4peM4L63OyApIFRJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBESEEKKzBGQTc7MEZBNiAwRkI3OzBGQTYgMEZCNzswRkE2IDBGQjc7MEZBNiAwRkI3OyAjICjil4zgvqc7IOKXjOC+puKXjOC+tzsg4peM4L6m4peM4L63OyDil4zgvqbil4zgvrc7IOKXjOC+puKXjOC+tzsgKSBUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgQkhBCiswRkFDOzBGQUIgMEZCNzswRkFCIDBGQjc7MEZBQiAwRkI3OzBGQUIgMEZCNzsgIyAo4peM4L6sOyDil4zgvqvil4zgvrc7IOKXjOC+q+KXjOC+tzsg4peM4L6r4peM4L63OyDil4zgvqvil4zgvrc7ICkgVElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERaSEEKKzBGQjk7MEY5MCAwRkI1OzBGOTAgMEZCNTswRjkwIDBGQjU7MEY5MCAwRkI1OyAjICjil4zgvrk7IOKXjOC+kOKXjOC+tTsg4peM4L6Q4peM4L61OyDil4zgvpDil4zgvrU7IOKXjOC+kOKXjOC+tTsgKSBUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgS1NTQQorMTAyNjsxMDI2OzEwMjUgMTAyRTsxMDI2OzEwMjUgMTAyRTsgIyAo4YCmOyDhgKY7IOGApeKXjOGArjsg4YCmOyDhgKXil4zhgK47ICkgTVlBTk1BUiBMRVRURVIgVVUKKzFFMDA7MUUwMDswMDQxIDAzMjU7MUUwMDswMDQxIDAzMjU7ICMgKOG4gDsg4biAOyBB4peMzKU7IOG4gDsgQeKXjMylOyApIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEJFTE9XCisxRTAxOzFFMDE7MDA2MSAwMzI1OzFFMDE7MDA2MSAwMzI1OyAjICjhuIE7IOG4gTsgYeKXjMylOyDhuIE7IGHil4zMpTsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQkVMT1cKKzFFMDI7MUUwMjswMDQyIDAzMDc7MUUwMjswMDQyIDAzMDc7ICMgKOG4gjsg4biCOyBC4peMzIc7IOG4gjsgQuKXjMyHOyApIExBVElOIENBUElUQUwgTEVUVEVSIEIgV0lUSCBET1QgQUJPVkUKKzFFMDM7MUUwMzswMDYyIDAzMDc7MUUwMzswMDYyIDAzMDc7ICMgKOG4gzsg4biDOyBi4peMzIc7IOG4gzsgYuKXjMyHOyApIExBVElOIFNNQUxMIExFVFRFUiBCIFdJVEggRE9UIEFCT1ZFCisxRTA0OzFFMDQ7MDA0MiAwMzIzOzFFMDQ7MDA0MiAwMzIzOyAjICjhuIQ7IOG4hDsgQuKXjMyjOyDhuIQ7IELil4zMozsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFdJVEggRE9UIEJFTE9XCisxRTA1OzFFMDU7MDA2MiAwMzIzOzFFMDU7MDA2MiAwMzIzOyAjICjhuIU7IOG4hTsgYuKXjMyjOyDhuIU7IGLil4zMozsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQiBXSVRIIERPVCBCRUxPVworMUUwNjsxRTA2OzAwNDIgMDMzMTsxRTA2OzAwNDIgMDMzMTsgIyAo4biGOyDhuIY7IELil4zMsTsg4biGOyBC4peMzLE7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQiBXSVRIIExJTkUgQkVMT1cKKzFFMDc7MUUwNzswMDYyIDAzMzE7MUUwNzswMDYyIDAzMzE7ICMgKOG4hzsg4biHOyBi4peMzLE7IOG4hzsgYuKXjMyxOyApIExBVElOIFNNQUxMIExFVFRFUiBCIFdJVEggTElORSBCRUxPVworMUUwODsxRTA4OzAwNDMgMDMyNyAwMzAxOzFFMDg7MDA0MyAwMzI3IDAzMDE7ICMgKOG4iDsg4biIOyBD4peMzKfil4zMgTsg4biIOyBD4peMzKfil4zMgTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSBBTkQgQUNVVEUKKzFFMDk7MUUwOTswMDYzIDAzMjcgMDMwMTsxRTA5OzAwNjMgMDMyNyAwMzAxOyAjICjhuIk7IOG4iTsgY+KXjMyn4peMzIE7IOG4iTsgY+KXjMyn4peMzIE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBIEFORCBBQ1VURQorMUUwQTsxRTBBOzAwNDQgMDMwNzsxRTBBOzAwNDQgMDMwNzsgIyAo4biKOyDhuIo7IETil4zMhzsg4biKOyBE4peMzIc7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIERPVCBBQk9WRQorMUUwQjsxRTBCOzAwNjQgMDMwNzsxRTBCOzAwNjQgMDMwNzsgIyAo4biLOyDhuIs7IGTil4zMhzsg4biLOyBk4peMzIc7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBET1QgQUJPVkUKKzFFMEM7MUUwQzswMDQ0IDAzMjM7MUUwQzswMDQ0IDAzMjM7ICMgKOG4jDsg4biMOyBE4peMzKM7IOG4jDsgROKXjMyjOyApIExBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBET1QgQkVMT1cKKzFFMEQ7MUUwRDswMDY0IDAzMjM7MUUwRDswMDY0IDAzMjM7ICMgKOG4jTsg4biNOyBk4peMzKM7IOG4jTsgZOKXjMyjOyApIExBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggRE9UIEJFTE9XCisxRTBFOzFFMEU7MDA0NCAwMzMxOzFFMEU7MDA0NCAwMzMxOyAjICjhuI47IOG4jjsgROKXjMyxOyDhuI47IETil4zMsTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggTElORSBCRUxPVworMUUwRjsxRTBGOzAwNjQgMDMzMTsxRTBGOzAwNjQgMDMzMTsgIyAo4biPOyDhuI87IGTil4zMsTsg4biPOyBk4peMzLE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBMSU5FIEJFTE9XCisxRTEwOzFFMTA7MDA0NCAwMzI3OzFFMTA7MDA0NCAwMzI3OyAjICjhuJA7IOG4kDsgROKXjMynOyDhuJA7IETil4zMpzsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggQ0VESUxMQQorMUUxMTsxRTExOzAwNjQgMDMyNzsxRTExOzAwNjQgMDMyNzsgIyAo4biROyDhuJE7IGTil4zMpzsg4biROyBk4peMzKc7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBDRURJTExBCisxRTEyOzFFMTI7MDA0NCAwMzJEOzFFMTI7MDA0NCAwMzJEOyAjICjhuJI7IOG4kjsgROKXjMytOyDhuJI7IETil4zMrTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVworMUUxMzsxRTEzOzAwNjQgMDMyRDsxRTEzOzAwNjQgMDMyRDsgIyAo4biTOyDhuJM7IGTil4zMrTsg4biTOyBk4peMzK07ICkgTEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBDSVJDVU1GTEVYIEJFTE9XCisxRTE0OzFFMTQ7MDA0NSAwMzA0IDAzMDA7MUUxNDswMDQ1IDAzMDQgMDMwMDsgIyAo4biUOyDhuJQ7IEXil4zMhOKXjMyAOyDhuJQ7IEXil4zMhOKXjMyAOyApIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBNQUNST04gQU5EIEdSQVZFCisxRTE1OzFFMTU7MDA2NSAwMzA0IDAzMDA7MUUxNTswMDY1IDAzMDQgMDMwMDsgIyAo4biVOyDhuJU7IGXil4zMhOKXjMyAOyDhuJU7IGXil4zMhOKXjMyAOyApIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggTUFDUk9OIEFORCBHUkFWRQorMUUxNjsxRTE2OzAwNDUgMDMwNCAwMzAxOzFFMTY7MDA0NSAwMzA0IDAzMDE7ICMgKOG4ljsg4biWOyBF4peMzITil4zMgTsg4biWOyBF4peMzITil4zMgTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggTUFDUk9OIEFORCBBQ1VURQorMUUxNzsxRTE3OzAwNjUgMDMwNCAwMzAxOzFFMTc7MDA2NSAwMzA0IDAzMDE7ICMgKOG4lzsg4biXOyBl4peMzITil4zMgTsg4biXOyBl4peMzITil4zMgTsgKSBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE1BQ1JPTiBBTkQgQUNVVEUKKzFFMTg7MUUxODswMDQ1IDAzMkQ7MUUxODswMDQ1IDAzMkQ7ICMgKOG4mDsg4biYOyBF4peMzK07IOG4mDsgReKXjMytOyApIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEJFTE9XCisxRTE5OzFFMTk7MDA2NSAwMzJEOzFFMTk7MDA2NSAwMzJEOyAjICjhuJk7IOG4mTsgZeKXjMytOyDhuJk7IGXil4zMrTsgKSBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQkVMT1cKKzFFMUE7MUUxQTswMDQ1IDAzMzA7MUUxQTswMDQ1IDAzMzA7ICMgKOG4mjsg4biaOyBF4peMzLA7IOG4mjsgReKXjMywOyApIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBUSUxERSBCRUxPVworMUUxQjsxRTFCOzAwNjUgMDMzMDsxRTFCOzAwNjUgMDMzMDsgIyAo4bibOyDhuJs7IGXil4zMsDsg4bibOyBl4peMzLA7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBUSUxERSBCRUxPVworMUUxQzsxRTFDOzAwNDUgMDMyNyAwMzA2OzFFMUM7MDA0NSAwMzI3IDAzMDY7ICMgKOG4nDsg4bicOyBF4peMzKfil4zMhjsg4bicOyBF4peMzKfil4zMhjsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0VESUxMQSBBTkQgQlJFVkUKKzFFMUQ7MUUxRDswMDY1IDAzMjcgMDMwNjsxRTFEOzAwNjUgMDMyNyAwMzA2OyAjICjhuJ07IOG4nTsgZeKXjMyn4peMzIY7IOG4nTsgZeKXjMyn4peMzIY7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDRURJTExBIEFORCBCUkVWRQorMUUxRTsxRTFFOzAwNDYgMDMwNzsxRTFFOzAwNDYgMDMwNzsgIyAo4bieOyDhuJ47IEbil4zMhzsg4bieOyBG4peMzIc7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRiBXSVRIIERPVCBBQk9WRQorMUUxRjsxRTFGOzAwNjYgMDMwNzsxRTFGOzAwNjYgMDMwNzsgIyAo4bifOyDhuJ87IGbil4zMhzsg4bifOyBm4peMzIc7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBET1QgQUJPVkUKKzFFMjA7MUUyMDswMDQ3IDAzMDQ7MUUyMDswMDQ3IDAzMDQ7ICMgKOG4oDsg4bigOyBH4peMzIQ7IOG4oDsgR+KXjMyEOyApIExBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBNQUNST04KKzFFMjE7MUUyMTswMDY3IDAzMDQ7MUUyMTswMDY3IDAzMDQ7ICMgKOG4oTsg4bihOyBn4peMzIQ7IOG4oTsgZ+KXjMyEOyApIExBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggTUFDUk9OCisxRTIyOzFFMjI7MDA0OCAwMzA3OzFFMjI7MDA0OCAwMzA3OyAjICjhuKI7IOG4ojsgSOKXjMyHOyDhuKI7IEjil4zMhzsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggRE9UIEFCT1ZFCisxRTIzOzFFMjM7MDA2OCAwMzA3OzFFMjM7MDA2OCAwMzA3OyAjICjhuKM7IOG4ozsgaOKXjMyHOyDhuKM7IGjil4zMhzsgKSBMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIERPVCBBQk9WRQorMUUyNDsxRTI0OzAwNDggMDMyMzsxRTI0OzAwNDggMDMyMzsgIyAo4bikOyDhuKQ7IEjil4zMozsg4bikOyBI4peMzKM7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIERPVCBCRUxPVworMUUyNTsxRTI1OzAwNjggMDMyMzsxRTI1OzAwNjggMDMyMzsgIyAo4bilOyDhuKU7IGjil4zMozsg4bilOyBo4peMzKM7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBET1QgQkVMT1cKKzFFMjY7MUUyNjswMDQ4IDAzMDg7MUUyNjswMDQ4IDAzMDg7ICMgKOG4pjsg4bimOyBI4peMzIg7IOG4pjsgSOKXjMyIOyApIExBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBESUFFUkVTSVMKKzFFMjc7MUUyNzswMDY4IDAzMDg7MUUyNzswMDY4IDAzMDg7ICMgKOG4pzsg4binOyBo4peMzIg7IOG4pzsgaOKXjMyIOyApIExBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggRElBRVJFU0lTCisxRTI4OzFFMjg7MDA0OCAwMzI3OzFFMjg7MDA0OCAwMzI3OyAjICjhuKg7IOG4qDsgSOKXjMynOyDhuKg7IEjil4zMpzsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggQ0VESUxMQQorMUUyOTsxRTI5OzAwNjggMDMyNzsxRTI5OzAwNjggMDMyNzsgIyAo4bipOyDhuKk7IGjil4zMpzsg4bipOyBo4peMzKc7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBDRURJTExBCisxRTJBOzFFMkE7MDA0OCAwMzJFOzFFMkE7MDA0OCAwMzJFOyAjICjhuKo7IOG4qjsgSOKXjMyuOyDhuKo7IEjil4zMrjsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggQlJFVkUgQkVMT1cKKzFFMkI7MUUyQjswMDY4IDAzMkU7MUUyQjswMDY4IDAzMkU7ICMgKOG4qzsg4birOyBo4peMzK47IOG4qzsgaOKXjMyuOyApIExBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggQlJFVkUgQkVMT1cKKzFFMkM7MUUyQzswMDQ5IDAzMzA7MUUyQzswMDQ5IDAzMzA7ICMgKOG4rDsg4bisOyBJ4peMzLA7IOG4rDsgSeKXjMywOyApIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBUSUxERSBCRUxPVworMUUyRDsxRTJEOzAwNjkgMDMzMDsxRTJEOzAwNjkgMDMzMDsgIyAo4bitOyDhuK07IGnil4zMsDsg4bitOyBp4peMzLA7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBUSUxERSBCRUxPVworMUUyRTsxRTJFOzAwNDkgMDMwOCAwMzAxOzFFMkU7MDA0OSAwMzA4IDAzMDE7ICMgKOG4rjsg4biuOyBJ4peMzIjil4zMgTsg4biuOyBJ4peMzIjil4zMgTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTIEFORCBBQ1VURQorMUUyRjsxRTJGOzAwNjkgMDMwOCAwMzAxOzFFMkY7MDA2OSAwMzA4IDAzMDE7ICMgKOG4rzsg4bivOyBp4peMzIjil4zMgTsg4bivOyBp4peMzIjil4zMgTsgKSBMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUyBBTkQgQUNVVEUKKzFFMzA7MUUzMDswMDRCIDAzMDE7MUUzMDswMDRCIDAzMDE7ICMgKOG4sDsg4biwOyBL4peMzIE7IOG4sDsgS+KXjMyBOyApIExBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBBQ1VURQorMUUzMTsxRTMxOzAwNkIgMDMwMTsxRTMxOzAwNkIgMDMwMTsgIyAo4bixOyDhuLE7IGvil4zMgTsg4bixOyBr4peMzIE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBBQ1VURQorMUUzMjsxRTMyOzAwNEIgMDMyMzsxRTMyOzAwNEIgMDMyMzsgIyAo4biyOyDhuLI7IEvil4zMozsg4biyOyBL4peMzKM7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIERPVCBCRUxPVworMUUzMzsxRTMzOzAwNkIgMDMyMzsxRTMzOzAwNkIgMDMyMzsgIyAo4bizOyDhuLM7IGvil4zMozsg4bizOyBr4peMzKM7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBET1QgQkVMT1cKKzFFMzQ7MUUzNDswMDRCIDAzMzE7MUUzNDswMDRCIDAzMzE7ICMgKOG4tDsg4bi0OyBL4peMzLE7IOG4tDsgS+KXjMyxOyApIExBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBMSU5FIEJFTE9XCisxRTM1OzFFMzU7MDA2QiAwMzMxOzFFMzU7MDA2QiAwMzMxOyAjICjhuLU7IOG4tTsga+KXjMyxOyDhuLU7IGvil4zMsTsgKSBMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIExJTkUgQkVMT1cKKzFFMzY7MUUzNjswMDRDIDAzMjM7MUUzNjswMDRDIDAzMjM7ICMgKOG4tjsg4bi2OyBM4peMzKM7IOG4tjsgTOKXjMyjOyApIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBET1QgQkVMT1cKKzFFMzc7MUUzNzswMDZDIDAzMjM7MUUzNzswMDZDIDAzMjM7ICMgKOG4tzsg4bi3OyBs4peMzKM7IOG4tzsgbOKXjMyjOyApIExBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggRE9UIEJFTE9XCisxRTM4OzFFMzg7MDA0QyAwMzIzIDAzMDQ7MUUzODswMDRDIDAzMjMgMDMwNDsgIyAo4bi4OyDhuLg7IEzil4zMo+KXjMyEOyDhuLg7IEzil4zMo+KXjMyEOyApIExBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBET1QgQkVMT1cgQU5EIE1BQ1JPTgorMUUzOTsxRTM5OzAwNkMgMDMyMyAwMzA0OzFFMzk7MDA2QyAwMzIzIDAzMDQ7ICMgKOG4uTsg4bi5OyBs4peMzKPil4zMhDsg4bi5OyBs4peMzKPil4zMhDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIERPVCBCRUxPVyBBTkQgTUFDUk9OCisxRTNBOzFFM0E7MDA0QyAwMzMxOzFFM0E7MDA0QyAwMzMxOyAjICjhuLo7IOG4ujsgTOKXjMyxOyDhuLo7IEzil4zMsTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggTElORSBCRUxPVworMUUzQjsxRTNCOzAwNkMgMDMzMTsxRTNCOzAwNkMgMDMzMTsgIyAo4bi7OyDhuLs7IGzil4zMsTsg4bi7OyBs4peMzLE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBMSU5FIEJFTE9XCisxRTNDOzFFM0M7MDA0QyAwMzJEOzFFM0M7MDA0QyAwMzJEOyAjICjhuLw7IOG4vDsgTOKXjMytOyDhuLw7IEzil4zMrTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVworMUUzRDsxRTNEOzAwNkMgMDMyRDsxRTNEOzAwNkMgMDMyRDsgIyAo4bi9OyDhuL07IGzil4zMrTsg4bi9OyBs4peMzK07ICkgTEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDSVJDVU1GTEVYIEJFTE9XCisxRTNFOzFFM0U7MDA0RCAwMzAxOzFFM0U7MDA0RCAwMzAxOyAjICjhuL47IOG4vjsgTeKXjMyBOyDhuL47IE3il4zMgTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBNIFdJVEggQUNVVEUKKzFFM0Y7MUUzRjswMDZEIDAzMDE7MUUzRjswMDZEIDAzMDE7ICMgKOG4vzsg4bi/OyBt4peMzIE7IOG4vzsgbeKXjMyBOyApIExBVElOIFNNQUxMIExFVFRFUiBNIFdJVEggQUNVVEUKKzFFNDA7MUU0MDswMDREIDAzMDc7MUU0MDswMDREIDAzMDc7ICMgKOG5gDsg4bmAOyBN4peMzIc7IOG5gDsgTeKXjMyHOyApIExBVElOIENBUElUQUwgTEVUVEVSIE0gV0lUSCBET1QgQUJPVkUKKzFFNDE7MUU0MTswMDZEIDAzMDc7MUU0MTswMDZEIDAzMDc7ICMgKOG5gTsg4bmBOyBt4peMzIc7IOG5gTsgbeKXjMyHOyApIExBVElOIFNNQUxMIExFVFRFUiBNIFdJVEggRE9UIEFCT1ZFCisxRTQyOzFFNDI7MDA0RCAwMzIzOzFFNDI7MDA0RCAwMzIzOyAjICjhuYI7IOG5gjsgTeKXjMyjOyDhuYI7IE3il4zMozsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBNIFdJVEggRE9UIEJFTE9XCisxRTQzOzFFNDM7MDA2RCAwMzIzOzFFNDM7MDA2RCAwMzIzOyAjICjhuYM7IOG5gzsgbeKXjMyjOyDhuYM7IG3il4zMozsgKSBMQVRJTiBTTUFMTCBMRVRURVIgTSBXSVRIIERPVCBCRUxPVworMUU0NDsxRTQ0OzAwNEUgMDMwNzsxRTQ0OzAwNEUgMDMwNzsgIyAo4bmEOyDhuYQ7IE7il4zMhzsg4bmEOyBO4peMzIc7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIERPVCBBQk9WRQorMUU0NTsxRTQ1OzAwNkUgMDMwNzsxRTQ1OzAwNkUgMDMwNzsgIyAo4bmFOyDhuYU7IG7il4zMhzsg4bmFOyBu4peMzIc7ICkgTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBET1QgQUJPVkUKKzFFNDY7MUU0NjswMDRFIDAzMjM7MUU0NjswMDRFIDAzMjM7ICMgKOG5hjsg4bmGOyBO4peMzKM7IOG5hjsgTuKXjMyjOyApIExBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBET1QgQkVMT1cKKzFFNDc7MUU0NzswMDZFIDAzMjM7MUU0NzswMDZFIDAzMjM7ICMgKOG5hzsg4bmHOyBu4peMzKM7IOG5hzsgbuKXjMyjOyApIExBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggRE9UIEJFTE9XCisxRTQ4OzFFNDg7MDA0RSAwMzMxOzFFNDg7MDA0RSAwMzMxOyAjICjhuYg7IOG5iDsgTuKXjMyxOyDhuYg7IE7il4zMsTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggTElORSBCRUxPVworMUU0OTsxRTQ5OzAwNkUgMDMzMTsxRTQ5OzAwNkUgMDMzMTsgIyAo4bmJOyDhuYk7IG7il4zMsTsg4bmJOyBu4peMzLE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBMSU5FIEJFTE9XCisxRTRBOzFFNEE7MDA0RSAwMzJEOzFFNEE7MDA0RSAwMzJEOyAjICjhuYo7IOG5ijsgTuKXjMytOyDhuYo7IE7il4zMrTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVworMUU0QjsxRTRCOzAwNkUgMDMyRDsxRTRCOzAwNkUgMDMyRDsgIyAo4bmLOyDhuYs7IG7il4zMrTsg4bmLOyBu4peMzK07ICkgTEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBDSVJDVU1GTEVYIEJFTE9XCisxRTRDOzFFNEM7MDA0RiAwMzAzIDAzMDE7MUU0QzswMDRGIDAzMDMgMDMwMTsgIyAo4bmMOyDhuYw7IE/il4zMg+KXjMyBOyDhuYw7IE/il4zMg+KXjMyBOyApIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERSBBTkQgQUNVVEUKKzFFNEQ7MUU0RDswMDZGIDAzMDMgMDMwMTsxRTREOzAwNkYgMDMwMyAwMzAxOyAjICjhuY07IOG5jTsgb+KXjMyD4peMzIE7IOG5jTsgb+KXjMyD4peMzIE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERSBBTkQgQUNVVEUKKzFFNEU7MUU0RTswMDRGIDAzMDMgMDMwODsxRTRFOzAwNEYgMDMwMyAwMzA4OyAjICjhuY47IOG5jjsgT+KXjMyD4peMzIg7IOG5jjsgT+KXjMyD4peMzIg7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFIEFORCBESUFFUkVTSVMKKzFFNEY7MUU0RjswMDZGIDAzMDMgMDMwODsxRTRGOzAwNkYgMDMwMyAwMzA4OyAjICjhuY87IOG5jzsgb+KXjMyD4peMzIg7IOG5jzsgb+KXjMyD4peMzIg7ICkgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERSBBTkQgRElBRVJFU0lTCisxRTUwOzFFNTA7MDA0RiAwMzA0IDAzMDA7MUU1MDswMDRGIDAzMDQgMDMwMDsgIyAo4bmQOyDhuZA7IE/il4zMhOKXjMyAOyDhuZA7IE/il4zMhOKXjMyAOyApIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBNQUNST04gQU5EIEdSQVZFCisxRTUxOzFFNTE7MDA2RiAwMzA0IDAzMDA7MUU1MTswMDZGIDAzMDQgMDMwMDsgIyAo4bmROyDhuZE7IG/il4zMhOKXjMyAOyDhuZE7IG/il4zMhOKXjMyAOyApIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggTUFDUk9OIEFORCBHUkFWRQorMUU1MjsxRTUyOzAwNEYgMDMwNCAwMzAxOzFFNTI7MDA0RiAwMzA0IDAzMDE7ICMgKOG5kjsg4bmSOyBP4peMzITil4zMgTsg4bmSOyBP4peMzITil4zMgTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTUFDUk9OIEFORCBBQ1VURQorMUU1MzsxRTUzOzAwNkYgMDMwNCAwMzAxOzFFNTM7MDA2RiAwMzA0IDAzMDE7ICMgKOG5kzsg4bmTOyBv4peMzITil4zMgTsg4bmTOyBv4peMzITil4zMgTsgKSBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIE1BQ1JPTiBBTkQgQUNVVEUKKzFFNTQ7MUU1NDswMDUwIDAzMDE7MUU1NDswMDUwIDAzMDE7ICMgKOG5lDsg4bmUOyBQ4peMzIE7IOG5lDsgUOKXjMyBOyApIExBVElOIENBUElUQUwgTEVUVEVSIFAgV0lUSCBBQ1VURQorMUU1NTsxRTU1OzAwNzAgMDMwMTsxRTU1OzAwNzAgMDMwMTsgIyAo4bmVOyDhuZU7IHDil4zMgTsg4bmVOyBw4peMzIE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFAgV0lUSCBBQ1VURQorMUU1NjsxRTU2OzAwNTAgMDMwNzsxRTU2OzAwNTAgMDMwNzsgIyAo4bmWOyDhuZY7IFDil4zMhzsg4bmWOyBQ4peMzIc7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUCBXSVRIIERPVCBBQk9WRQorMUU1NzsxRTU3OzAwNzAgMDMwNzsxRTU3OzAwNzAgMDMwNzsgIyAo4bmXOyDhuZc7IHDil4zMhzsg4bmXOyBw4peMzIc7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFAgV0lUSCBET1QgQUJPVkUKKzFFNTg7MUU1ODswMDUyIDAzMDc7MUU1ODswMDUyIDAzMDc7ICMgKOG5mDsg4bmYOyBS4peMzIc7IOG5mDsgUuKXjMyHOyApIExBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBET1QgQUJPVkUKKzFFNTk7MUU1OTswMDcyIDAzMDc7MUU1OTswMDcyIDAzMDc7ICMgKOG5mTsg4bmZOyBy4peMzIc7IOG5mTsgcuKXjMyHOyApIExBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggRE9UIEFCT1ZFCisxRTVBOzFFNUE7MDA1MiAwMzIzOzFFNUE7MDA1MiAwMzIzOyAjICjhuZo7IOG5mjsgUuKXjMyjOyDhuZo7IFLil4zMozsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggRE9UIEJFTE9XCisxRTVCOzFFNUI7MDA3MiAwMzIzOzFFNUI7MDA3MiAwMzIzOyAjICjhuZs7IOG5mzsgcuKXjMyjOyDhuZs7IHLil4zMozsgKSBMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIERPVCBCRUxPVworMUU1QzsxRTVDOzAwNTIgMDMyMyAwMzA0OzFFNUM7MDA1MiAwMzIzIDAzMDQ7ICMgKOG5nDsg4bmcOyBS4peMzKPil4zMhDsg4bmcOyBS4peMzKPil4zMhDsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggRE9UIEJFTE9XIEFORCBNQUNST04KKzFFNUQ7MUU1RDswMDcyIDAzMjMgMDMwNDsxRTVEOzAwNzIgMDMyMyAwMzA0OyAjICjhuZ07IOG5nTsgcuKXjMyj4peMzIQ7IOG5nTsgcuKXjMyj4peMzIQ7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBET1QgQkVMT1cgQU5EIE1BQ1JPTgorMUU1RTsxRTVFOzAwNTIgMDMzMTsxRTVFOzAwNTIgMDMzMTsgIyAo4bmeOyDhuZ47IFLil4zMsTsg4bmeOyBS4peMzLE7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIExJTkUgQkVMT1cKKzFFNUY7MUU1RjswMDcyIDAzMzE7MUU1RjswMDcyIDAzMzE7ICMgKOG5nzsg4bmfOyBy4peMzLE7IOG5nzsgcuKXjMyxOyApIExBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggTElORSBCRUxPVworMUU2MDsxRTYwOzAwNTMgMDMwNzsxRTYwOzAwNTMgMDMwNzsgIyAo4bmgOyDhuaA7IFPil4zMhzsg4bmgOyBT4peMzIc7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIERPVCBBQk9WRQorMUU2MTsxRTYxOzAwNzMgMDMwNzsxRTYxOzAwNzMgMDMwNzsgIyAo4bmhOyDhuaE7IHPil4zMhzsg4bmhOyBz4peMzIc7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBET1QgQUJPVkUKKzFFNjI7MUU2MjswMDUzIDAzMjM7MUU2MjswMDUzIDAzMjM7ICMgKOG5ojsg4bmiOyBT4peMzKM7IOG5ojsgU+KXjMyjOyApIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBET1QgQkVMT1cKKzFFNjM7MUU2MzswMDczIDAzMjM7MUU2MzswMDczIDAzMjM7ICMgKOG5ozsg4bmjOyBz4peMzKM7IOG5ozsgc+KXjMyjOyApIExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggRE9UIEJFTE9XCisxRTY0OzFFNjQ7MDA1MyAwMzAxIDAzMDc7MUU2NDswMDUzIDAzMDEgMDMwNzsgIyAo4bmkOyDhuaQ7IFPil4zMgeKXjMyHOyDhuaQ7IFPil4zMgeKXjMyHOyApIExBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBBQ1VURSBBTkQgRE9UIEFCT1ZFCisxRTY1OzFFNjU7MDA3MyAwMzAxIDAzMDc7MUU2NTswMDczIDAzMDEgMDMwNzsgIyAo4bmlOyDhuaU7IHPil4zMgeKXjMyHOyDhuaU7IHPil4zMgeKXjMyHOyApIExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQUNVVEUgQU5EIERPVCBBQk9WRQorMUU2NjsxRTY2OzAwNTMgMDMwQyAwMzA3OzFFNjY7MDA1MyAwMzBDIDAzMDc7ICMgKOG5pjsg4bmmOyBT4peMzIzil4zMhzsg4bmmOyBT4peMzIzil4zMhzsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04gQU5EIERPVCBBQk9WRQorMUU2NzsxRTY3OzAwNzMgMDMwQyAwMzA3OzFFNjc7MDA3MyAwMzBDIDAzMDc7ICMgKOG5pzsg4bmnOyBz4peMzIzil4zMhzsg4bmnOyBz4peMzIzil4zMhzsgKSBMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OIEFORCBET1QgQUJPVkUKKzFFNjg7MUU2ODswMDUzIDAzMjMgMDMwNzsxRTY4OzAwNTMgMDMyMyAwMzA3OyAjICjhuag7IOG5qDsgU+KXjMyj4peMzIc7IOG5qDsgU+KXjMyj4peMzIc7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIERPVCBCRUxPVyBBTkQgRE9UIEFCT1ZFCisxRTY5OzFFNjk7MDA3MyAwMzIzIDAzMDc7MUU2OTswMDczIDAzMjMgMDMwNzsgIyAo4bmpOyDhuak7IHPil4zMo+KXjMyHOyDhuak7IHPil4zMo+KXjMyHOyApIExBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggRE9UIEJFTE9XIEFORCBET1QgQUJPVkUKKzFFNkE7MUU2QTswMDU0IDAzMDc7MUU2QTswMDU0IDAzMDc7ICMgKOG5qjsg4bmqOyBU4peMzIc7IOG5qjsgVOKXjMyHOyApIExBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBET1QgQUJPVkUKKzFFNkI7MUU2QjswMDc0IDAzMDc7MUU2QjswMDc0IDAzMDc7ICMgKOG5qzsg4bmrOyB04peMzIc7IOG5qzsgdOKXjMyHOyApIExBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggRE9UIEFCT1ZFCisxRTZDOzFFNkM7MDA1NCAwMzIzOzFFNkM7MDA1NCAwMzIzOyAjICjhuaw7IOG5rDsgVOKXjMyjOyDhuaw7IFTil4zMozsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggRE9UIEJFTE9XCisxRTZEOzFFNkQ7MDA3NCAwMzIzOzFFNkQ7MDA3NCAwMzIzOyAjICjhua07IOG5rTsgdOKXjMyjOyDhua07IHTil4zMozsgKSBMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIERPVCBCRUxPVworMUU2RTsxRTZFOzAwNTQgMDMzMTsxRTZFOzAwNTQgMDMzMTsgIyAo4bmuOyDhua47IFTil4zMsTsg4bmuOyBU4peMzLE7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIExJTkUgQkVMT1cKKzFFNkY7MUU2RjswMDc0IDAzMzE7MUU2RjswMDc0IDAzMzE7ICMgKOG5rzsg4bmvOyB04peMzLE7IOG5rzsgdOKXjMyxOyApIExBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggTElORSBCRUxPVworMUU3MDsxRTcwOzAwNTQgMDMyRDsxRTcwOzAwNTQgMDMyRDsgIyAo4bmwOyDhubA7IFTil4zMrTsg4bmwOyBU4peMzK07ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENJUkNVTUZMRVggQkVMT1cKKzFFNzE7MUU3MTswMDc0IDAzMkQ7MUU3MTswMDc0IDAzMkQ7ICMgKOG5sTsg4bmxOyB04peMzK07IOG5sTsgdOKXjMytOyApIExBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVworMUU3MjsxRTcyOzAwNTUgMDMyNDsxRTcyOzAwNTUgMDMyNDsgIyAo4bmyOyDhubI7IFXil4zMpDsg4bmyOyBV4peMzKQ7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBCRUxPVworMUU3MzsxRTczOzAwNzUgMDMyNDsxRTczOzAwNzUgMDMyNDsgIyAo4bmzOyDhubM7IHXil4zMpDsg4bmzOyB14peMzKQ7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQkVMT1cKKzFFNzQ7MUU3NDswMDU1IDAzMzA7MUU3NDswMDU1IDAzMzA7ICMgKOG5tDsg4bm0OyBV4peMzLA7IOG5tDsgVeKXjMywOyApIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBUSUxERSBCRUxPVworMUU3NTsxRTc1OzAwNzUgMDMzMDsxRTc1OzAwNzUgMDMzMDsgIyAo4bm1OyDhubU7IHXil4zMsDsg4bm1OyB14peMzLA7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBUSUxERSBCRUxPVworMUU3NjsxRTc2OzAwNTUgMDMyRDsxRTc2OzAwNTUgMDMyRDsgIyAo4bm2OyDhubY7IFXil4zMrTsg4bm2OyBV4peMzK07ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVggQkVMT1cKKzFFNzc7MUU3NzswMDc1IDAzMkQ7MUU3NzswMDc1IDAzMkQ7ICMgKOG5tzsg4bm3OyB14peMzK07IOG5tzsgdeKXjMytOyApIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVworMUU3ODsxRTc4OzAwNTUgMDMwMyAwMzAxOzFFNzg7MDA1NSAwMzAzIDAzMDE7ICMgKOG5uDsg4bm4OyBV4peMzIPil4zMgTsg4bm4OyBV4peMzIPil4zMgTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggVElMREUgQU5EIEFDVVRFCisxRTc5OzFFNzk7MDA3NSAwMzAzIDAzMDE7MUU3OTswMDc1IDAzMDMgMDMwMTsgIyAo4bm5OyDhubk7IHXil4zMg+KXjMyBOyDhubk7IHXil4zMg+KXjMyBOyApIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggVElMREUgQU5EIEFDVVRFCisxRTdBOzFFN0E7MDA1NSAwMzA0IDAzMDg7MUU3QTswMDU1IDAzMDQgMDMwODsgIyAo4bm6OyDhubo7IFXil4zMhOKXjMyIOyDhubo7IFXil4zMhOKXjMyIOyApIExBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST04gQU5EIERJQUVSRVNJUworMUU3QjsxRTdCOzAwNzUgMDMwNCAwMzA4OzFFN0I7MDA3NSAwMzA0IDAzMDg7ICMgKOG5uzsg4bm7OyB14peMzITil4zMiDsg4bm7OyB14peMzITil4zMiDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE1BQ1JPTiBBTkQgRElBRVJFU0lTCisxRTdDOzFFN0M7MDA1NiAwMzAzOzFFN0M7MDA1NiAwMzAzOyAjICjhubw7IOG5vDsgVuKXjMyDOyDhubw7IFbil4zMgzsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBWIFdJVEggVElMREUKKzFFN0Q7MUU3RDswMDc2IDAzMDM7MUU3RDswMDc2IDAzMDM7ICMgKOG5vTsg4bm9OyB24peMzIM7IOG5vTsgduKXjMyDOyApIExBVElOIFNNQUxMIExFVFRFUiBWIFdJVEggVElMREUKKzFFN0U7MUU3RTswMDU2IDAzMjM7MUU3RTswMDU2IDAzMjM7ICMgKOG5vjsg4bm+OyBW4peMzKM7IOG5vjsgVuKXjMyjOyApIExBVElOIENBUElUQUwgTEVUVEVSIFYgV0lUSCBET1QgQkVMT1cKKzFFN0Y7MUU3RjswMDc2IDAzMjM7MUU3RjswMDc2IDAzMjM7ICMgKOG5vzsg4bm/OyB24peMzKM7IOG5vzsgduKXjMyjOyApIExBVElOIFNNQUxMIExFVFRFUiBWIFdJVEggRE9UIEJFTE9XCisxRTgwOzFFODA7MDA1NyAwMzAwOzFFODA7MDA1NyAwMzAwOyAjICjhuoA7IOG6gDsgV+KXjMyAOyDhuoA7IFfil4zMgDsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBXIFdJVEggR1JBVkUKKzFFODE7MUU4MTswMDc3IDAzMDA7MUU4MTswMDc3IDAzMDA7ICMgKOG6gTsg4bqBOyB34peMzIA7IOG6gTsgd+KXjMyAOyApIExBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggR1JBVkUKKzFFODI7MUU4MjswMDU3IDAzMDE7MUU4MjswMDU3IDAzMDE7ICMgKOG6gjsg4bqCOyBX4peMzIE7IOG6gjsgV+KXjMyBOyApIExBVElOIENBUElUQUwgTEVUVEVSIFcgV0lUSCBBQ1VURQorMUU4MzsxRTgzOzAwNzcgMDMwMTsxRTgzOzAwNzcgMDMwMTsgIyAo4bqDOyDhuoM7IHfil4zMgTsg4bqDOyB34peMzIE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFcgV0lUSCBBQ1VURQorMUU4NDsxRTg0OzAwNTcgMDMwODsxRTg0OzAwNTcgMDMwODsgIyAo4bqEOyDhuoQ7IFfil4zMiDsg4bqEOyBX4peMzIg7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIERJQUVSRVNJUworMUU4NTsxRTg1OzAwNzcgMDMwODsxRTg1OzAwNzcgMDMwODsgIyAo4bqFOyDhuoU7IHfil4zMiDsg4bqFOyB34peMzIg7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFcgV0lUSCBESUFFUkVTSVMKKzFFODY7MUU4NjswMDU3IDAzMDc7MUU4NjswMDU3IDAzMDc7ICMgKOG6hjsg4bqGOyBX4peMzIc7IOG6hjsgV+KXjMyHOyApIExBVElOIENBUElUQUwgTEVUVEVSIFcgV0lUSCBET1QgQUJPVkUKKzFFODc7MUU4NzswMDc3IDAzMDc7MUU4NzswMDc3IDAzMDc7ICMgKOG6hzsg4bqHOyB34peMzIc7IOG6hzsgd+KXjMyHOyApIExBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggRE9UIEFCT1ZFCisxRTg4OzFFODg7MDA1NyAwMzIzOzFFODg7MDA1NyAwMzIzOyAjICjhuog7IOG6iDsgV+KXjMyjOyDhuog7IFfil4zMozsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBXIFdJVEggRE9UIEJFTE9XCisxRTg5OzFFODk7MDA3NyAwMzIzOzFFODk7MDA3NyAwMzIzOyAjICjhuok7IOG6iTsgd+KXjMyjOyDhuok7IHfil4zMozsgKSBMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIERPVCBCRUxPVworMUU4QTsxRThBOzAwNTggMDMwNzsxRThBOzAwNTggMDMwNzsgIyAo4bqKOyDhuoo7IFjil4zMhzsg4bqKOyBY4peMzIc7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWCBXSVRIIERPVCBBQk9WRQorMUU4QjsxRThCOzAwNzggMDMwNzsxRThCOzAwNzggMDMwNzsgIyAo4bqLOyDhuos7IHjil4zMhzsg4bqLOyB44peMzIc7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFggV0lUSCBET1QgQUJPVkUKKzFFOEM7MUU4QzswMDU4IDAzMDg7MUU4QzswMDU4IDAzMDg7ICMgKOG6jDsg4bqMOyBY4peMzIg7IOG6jDsgWOKXjMyIOyApIExBVElOIENBUElUQUwgTEVUVEVSIFggV0lUSCBESUFFUkVTSVMKKzFFOEQ7MUU4RDswMDc4IDAzMDg7MUU4RDswMDc4IDAzMDg7ICMgKOG6jTsg4bqNOyB44peMzIg7IOG6jTsgeOKXjMyIOyApIExBVElOIFNNQUxMIExFVFRFUiBYIFdJVEggRElBRVJFU0lTCisxRThFOzFFOEU7MDA1OSAwMzA3OzFFOEU7MDA1OSAwMzA3OyAjICjhuo47IOG6jjsgWeKXjMyHOyDhuo47IFnil4zMhzsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRE9UIEFCT1ZFCisxRThGOzFFOEY7MDA3OSAwMzA3OzFFOEY7MDA3OSAwMzA3OyAjICjhuo87IOG6jzsgeeKXjMyHOyDhuo87IHnil4zMhzsgKSBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERPVCBBQk9WRQorMUU5MDsxRTkwOzAwNUEgMDMwMjsxRTkwOzAwNUEgMDMwMjsgIyAo4bqQOyDhupA7IFril4zMgjsg4bqQOyBa4peMzII7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENJUkNVTUZMRVgKKzFFOTE7MUU5MTswMDdBIDAzMDI7MUU5MTswMDdBIDAzMDI7ICMgKOG6kTsg4bqROyB64peMzII7IOG6kTsgeuKXjMyCOyApIExBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ0lSQ1VNRkxFWAorMUU5MjsxRTkyOzAwNUEgMDMyMzsxRTkyOzAwNUEgMDMyMzsgIyAo4bqSOyDhupI7IFril4zMozsg4bqSOyBa4peMzKM7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIERPVCBCRUxPVworMUU5MzsxRTkzOzAwN0EgMDMyMzsxRTkzOzAwN0EgMDMyMzsgIyAo4bqTOyDhupM7IHril4zMozsg4bqTOyB64peMzKM7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBET1QgQkVMT1cKKzFFOTQ7MUU5NDswMDVBIDAzMzE7MUU5NDswMDVBIDAzMzE7ICMgKOG6lDsg4bqUOyBa4peMzLE7IOG6lDsgWuKXjMyxOyApIExBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBMSU5FIEJFTE9XCisxRTk1OzFFOTU7MDA3QSAwMzMxOzFFOTU7MDA3QSAwMzMxOyAjICjhupU7IOG6lTsgeuKXjMyxOyDhupU7IHril4zMsTsgKSBMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIExJTkUgQkVMT1cKKzFFOTY7MUU5NjswMDY4IDAzMzE7MUU5NjswMDY4IDAzMzE7ICMgKOG6ljsg4bqWOyBo4peMzLE7IOG6ljsgaOKXjMyxOyApIExBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggTElORSBCRUxPVworMUU5NzsxRTk3OzAwNzQgMDMwODsxRTk3OzAwNzQgMDMwODsgIyAo4bqXOyDhupc7IHTil4zMiDsg4bqXOyB04peMzIg7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBESUFFUkVTSVMKKzFFOTg7MUU5ODswMDc3IDAzMEE7MUU5ODswMDc3IDAzMEE7ICMgKOG6mDsg4bqYOyB34peMzIo7IOG6mDsgd+KXjMyKOyApIExBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggUklORyBBQk9WRQorMUU5OTsxRTk5OzAwNzkgMDMwQTsxRTk5OzAwNzkgMDMwQTsgIyAo4bqZOyDhupk7IHnil4zMijsg4bqZOyB54peMzIo7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBSSU5HIEFCT1ZFCisxRTlBOzFFOUE7MUU5QTswMDYxIDAyQkU7MDA2MSAwMkJFOyAjICjhupo7IOG6mjsg4bqaOyBhyr47IGHKvjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJR0hUIEhBTEYgUklORworMUU5QjsxRTlCOzAxN0YgMDMwNzsxRTYxOzAwNzMgMDMwNzsgIyAo4bqbOyDhups7IMW/4peMzIc7IOG5oTsgc+KXjMyHOyApIExBVElOIFNNQUxMIExFVFRFUiBMT05HIFMgV0lUSCBET1QgQUJPVkUKKzFFQTA7MUVBMDswMDQxIDAzMjM7MUVBMDswMDQxIDAzMjM7ICMgKOG6oDsg4bqgOyBB4peMzKM7IOG6oDsgQeKXjMyjOyApIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBET1QgQkVMT1cKKzFFQTE7MUVBMTswMDYxIDAzMjM7MUVBMTswMDYxIDAzMjM7ICMgKOG6oTsg4bqhOyBh4peMzKM7IOG6oTsgYeKXjMyjOyApIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRE9UIEJFTE9XCisxRUEyOzFFQTI7MDA0MSAwMzA5OzFFQTI7MDA0MSAwMzA5OyAjICjhuqI7IOG6ojsgQeKXjMyJOyDhuqI7IEHil4zMiTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggSE9PSyBBQk9WRQorMUVBMzsxRUEzOzAwNjEgMDMwOTsxRUEzOzAwNjEgMDMwOTsgIyAo4bqjOyDhuqM7IGHil4zMiTsg4bqjOyBh4peMzIk7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBIT09LIEFCT1ZFCisxRUE0OzFFQTQ7MDA0MSAwMzAyIDAzMDE7MUVBNDswMDQxIDAzMDIgMDMwMTsgIyAo4bqkOyDhuqQ7IEHil4zMguKXjMyBOyDhuqQ7IEHil4zMguKXjMyBOyApIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBBQ1VURQorMUVBNTsxRUE1OzAwNjEgMDMwMiAwMzAxOzFFQTU7MDA2MSAwMzAyIDAzMDE7ICMgKOG6pTsg4bqlOyBh4peMzILil4zMgTsg4bqlOyBh4peMzILil4zMgTsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFCisxRUE2OzFFQTY7MDA0MSAwMzAyIDAzMDA7MUVBNjswMDQxIDAzMDIgMDMwMDsgIyAo4bqmOyDhuqY7IEHil4zMguKXjMyAOyDhuqY7IEHil4zMguKXjMyAOyApIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBHUkFWRQorMUVBNzsxRUE3OzAwNjEgMDMwMiAwMzAwOzFFQTc7MDA2MSAwMzAyIDAzMDA7ICMgKOG6pzsg4bqnOyBh4peMzILil4zMgDsg4bqnOyBh4peMzILil4zMgDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFCisxRUE4OzFFQTg7MDA0MSAwMzAyIDAzMDk7MUVBODswMDQxIDAzMDIgMDMwOTsgIyAo4bqoOyDhuqg7IEHil4zMguKXjMyJOyDhuqg7IEHil4zMguKXjMyJOyApIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBIT09LIEFCT1ZFCisxRUE5OzFFQTk7MDA2MSAwMzAyIDAzMDk7MUVBOTswMDYxIDAzMDIgMDMwOTsgIyAo4bqpOyDhuqk7IGHil4zMguKXjMyJOyDhuqk7IGHil4zMguKXjMyJOyApIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgSE9PSyBBQk9WRQorMUVBQTsxRUFBOzAwNDEgMDMwMiAwMzAzOzFFQUE7MDA0MSAwMzAyIDAzMDM7ICMgKOG6qjsg4bqqOyBB4peMzILil4zMgzsg4bqqOyBB4peMzILil4zMgzsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgVElMREUKKzFFQUI7MUVBQjswMDYxIDAzMDIgMDMwMzsxRUFCOzAwNjEgMDMwMiAwMzAzOyAjICjhuqs7IOG6qzsgYeKXjMyC4peMzIM7IOG6qzsgYeKXjMyC4peMzIM7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERQorMUVBQzsxRUFDOzAwNDEgMDMyMyAwMzAyOzFFQUM7MDA0MSAwMzIzIDAzMDI7ICMgKOG6rDsg4bqsOyBB4peMzKPil4zMgjsg4bqsOyBB4peMzKPil4zMgjsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgRE9UIEJFTE9XCisxRUFEOzFFQUQ7MDA2MSAwMzIzIDAzMDI7MUVBRDswMDYxIDAzMjMgMDMwMjsgIyAo4bqtOyDhuq07IGHil4zMo+KXjMyCOyDhuq07IGHil4zMo+KXjMyCOyApIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgRE9UIEJFTE9XCisxRUFFOzFFQUU7MDA0MSAwMzA2IDAzMDE7MUVBRTswMDQxIDAzMDYgMDMwMTsgIyAo4bquOyDhuq47IEHil4zMhuKXjMyBOyDhuq47IEHil4zMhuKXjMyBOyApIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgQUNVVEUKKzFFQUY7MUVBRjswMDYxIDAzMDYgMDMwMTsxRUFGOzAwNjEgMDMwNiAwMzAxOyAjICjhuq87IOG6rzsgYeKXjMyG4peMzIE7IOG6rzsgYeKXjMyG4peMzIE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgQUNVVEUKKzFFQjA7MUVCMDswMDQxIDAzMDYgMDMwMDsxRUIwOzAwNDEgMDMwNiAwMzAwOyAjICjhurA7IOG6sDsgQeKXjMyG4peMzIA7IOG6sDsgQeKXjMyG4peMzIA7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBHUkFWRQorMUVCMTsxRUIxOzAwNjEgMDMwNiAwMzAwOzFFQjE7MDA2MSAwMzA2IDAzMDA7ICMgKOG6sTsg4bqxOyBh4peMzIbil4zMgDsg4bqxOyBh4peMzIbil4zMgDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBHUkFWRQorMUVCMjsxRUIyOzAwNDEgMDMwNiAwMzA5OzFFQjI7MDA0MSAwMzA2IDAzMDk7ICMgKOG6sjsg4bqyOyBB4peMzIbil4zMiTsg4bqyOyBB4peMzIbil4zMiTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIEhPT0sgQUJPVkUKKzFFQjM7MUVCMzswMDYxIDAzMDYgMDMwOTsxRUIzOzAwNjEgMDMwNiAwMzA5OyAjICjhurM7IOG6szsgYeKXjMyG4peMzIk7IOG6szsgYeKXjMyG4peMzIk7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgSE9PSyBBQk9WRQorMUVCNDsxRUI0OzAwNDEgMDMwNiAwMzAzOzFFQjQ7MDA0MSAwMzA2IDAzMDM7ICMgKOG6tDsg4bq0OyBB4peMzIbil4zMgzsg4bq0OyBB4peMzIbil4zMgzsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIFRJTERFCisxRUI1OzFFQjU7MDA2MSAwMzA2IDAzMDM7MUVCNTswMDYxIDAzMDYgMDMwMzsgIyAo4bq1OyDhurU7IGHil4zMhuKXjMyDOyDhurU7IGHil4zMhuKXjMyDOyApIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIFRJTERFCisxRUI2OzFFQjY7MDA0MSAwMzIzIDAzMDY7MUVCNjswMDQxIDAzMjMgMDMwNjsgIyAo4bq2OyDhurY7IEHil4zMo+KXjMyGOyDhurY7IEHil4zMo+KXjMyGOyApIExBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgRE9UIEJFTE9XCisxRUI3OzFFQjc7MDA2MSAwMzIzIDAzMDY7MUVCNzswMDYxIDAzMjMgMDMwNjsgIyAo4bq3OyDhurc7IGHil4zMo+KXjMyGOyDhurc7IGHil4zMo+KXjMyGOyApIExBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIERPVCBCRUxPVworMUVCODsxRUI4OzAwNDUgMDMyMzsxRUI4OzAwNDUgMDMyMzsgIyAo4bq4OyDhurg7IEXil4zMozsg4bq4OyBF4peMzKM7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVCBCRUxPVworMUVCOTsxRUI5OzAwNjUgMDMyMzsxRUI5OzAwNjUgMDMyMzsgIyAo4bq5OyDhurk7IGXil4zMozsg4bq5OyBl4peMzKM7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBET1QgQkVMT1cKKzFFQkE7MUVCQTswMDQ1IDAzMDk7MUVCQTswMDQ1IDAzMDk7ICMgKOG6ujsg4bq6OyBF4peMzIk7IOG6ujsgReKXjMyJOyApIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBIT09LIEFCT1ZFCisxRUJCOzFFQkI7MDA2NSAwMzA5OzFFQkI7MDA2NSAwMzA5OyAjICjhurs7IOG6uzsgZeKXjMyJOyDhurs7IGXil4zMiTsgKSBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEhPT0sgQUJPVkUKKzFFQkM7MUVCQzswMDQ1IDAzMDM7MUVCQzswMDQ1IDAzMDM7ICMgKOG6vDsg4bq8OyBF4peMzIM7IOG6vDsgReKXjMyDOyApIExBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBUSUxERQorMUVCRDsxRUJEOzAwNjUgMDMwMzsxRUJEOzAwNjUgMDMwMzsgIyAo4bq9OyDhur07IGXil4zMgzsg4bq9OyBl4peMzIM7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBUSUxERQorMUVCRTsxRUJFOzAwNDUgMDMwMiAwMzAxOzFFQkU7MDA0NSAwMzAyIDAzMDE7ICMgKOG6vjsg4bq+OyBF4peMzILil4zMgTsg4bq+OyBF4peMzILil4zMgTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgQUNVVEUKKzFFQkY7MUVCRjswMDY1IDAzMDIgMDMwMTsxRUJGOzAwNjUgMDMwMiAwMzAxOyAjICjhur87IOG6vzsgZeKXjMyC4peMzIE7IOG6vzsgZeKXjMyC4peMzIE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBBQ1VURQorMUVDMDsxRUMwOzAwNDUgMDMwMiAwMzAwOzFFQzA7MDA0NSAwMzAyIDAzMDA7ICMgKOG7gDsg4buAOyBF4peMzILil4zMgDsg4buAOyBF4peMzILil4zMgDsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgR1JBVkUKKzFFQzE7MUVDMTswMDY1IDAzMDIgMDMwMDsxRUMxOzAwNjUgMDMwMiAwMzAwOyAjICjhu4E7IOG7gTsgZeKXjMyC4peMzIA7IOG7gTsgZeKXjMyC4peMzIA7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBHUkFWRQorMUVDMjsxRUMyOzAwNDUgMDMwMiAwMzA5OzFFQzI7MDA0NSAwMzAyIDAzMDk7ICMgKOG7gjsg4buCOyBF4peMzILil4zMiTsg4buCOyBF4peMzILil4zMiTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgSE9PSyBBQk9WRQorMUVDMzsxRUMzOzAwNjUgMDMwMiAwMzA5OzFFQzM7MDA2NSAwMzAyIDAzMDk7ICMgKOG7gzsg4buDOyBl4peMzILil4zMiTsg4buDOyBl4peMzILil4zMiTsgKSBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEhPT0sgQUJPVkUKKzFFQzQ7MUVDNDswMDQ1IDAzMDIgMDMwMzsxRUM0OzAwNDUgMDMwMiAwMzAzOyAjICjhu4Q7IOG7hDsgReKXjMyC4peMzIM7IOG7hDsgReKXjMyC4peMzIM7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIFRJTERFCisxRUM1OzFFQzU7MDA2NSAwMzAyIDAzMDM7MUVDNTswMDY1IDAzMDIgMDMwMzsgIyAo4buFOyDhu4U7IGXil4zMguKXjMyDOyDhu4U7IGXil4zMguKXjMyDOyApIExBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgVElMREUKKzFFQzY7MUVDNjswMDQ1IDAzMjMgMDMwMjsxRUM2OzAwNDUgMDMyMyAwMzAyOyAjICjhu4Y7IOG7hjsgReKXjMyj4peMzII7IOG7hjsgReKXjMyj4peMzII7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIERPVCBCRUxPVworMUVDNzsxRUM3OzAwNjUgMDMyMyAwMzAyOzFFQzc7MDA2NSAwMzIzIDAzMDI7ICMgKOG7hzsg4buHOyBl4peMzKPil4zMgjsg4buHOyBl4peMzKPil4zMgjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIERPVCBCRUxPVworMUVDODsxRUM4OzAwNDkgMDMwOTsxRUM4OzAwNDkgMDMwOTsgIyAo4buIOyDhu4g7IEnil4zMiTsg4buIOyBJ4peMzIk7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEhPT0sgQUJPVkUKKzFFQzk7MUVDOTswMDY5IDAzMDk7MUVDOTswMDY5IDAzMDk7ICMgKOG7iTsg4buJOyBp4peMzIk7IOG7iTsgaeKXjMyJOyApIExBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggSE9PSyBBQk9WRQorMUVDQTsxRUNBOzAwNDkgMDMyMzsxRUNBOzAwNDkgMDMyMzsgIyAo4buKOyDhu4o7IEnil4zMozsg4buKOyBJ4peMzKM7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERPVCBCRUxPVworMUVDQjsxRUNCOzAwNjkgMDMyMzsxRUNCOzAwNjkgMDMyMzsgIyAo4buLOyDhu4s7IGnil4zMozsg4buLOyBp4peMzKM7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBET1QgQkVMT1cKKzFFQ0M7MUVDQzswMDRGIDAzMjM7MUVDQzswMDRGIDAzMjM7ICMgKOG7jDsg4buMOyBP4peMzKM7IOG7jDsgT+KXjMyjOyApIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBET1QgQkVMT1cKKzFFQ0Q7MUVDRDswMDZGIDAzMjM7MUVDRDswMDZGIDAzMjM7ICMgKOG7jTsg4buNOyBv4peMzKM7IOG7jTsgb+KXjMyjOyApIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9UIEJFTE9XCisxRUNFOzFFQ0U7MDA0RiAwMzA5OzFFQ0U7MDA0RiAwMzA5OyAjICjhu447IOG7jjsgT+KXjMyJOyDhu447IE/il4zMiTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggSE9PSyBBQk9WRQorMUVDRjsxRUNGOzAwNkYgMDMwOTsxRUNGOzAwNkYgMDMwOTsgIyAo4buPOyDhu487IG/il4zMiTsg4buPOyBv4peMzIk7ICkgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBIT09LIEFCT1ZFCisxRUQwOzFFRDA7MDA0RiAwMzAyIDAzMDE7MUVEMDswMDRGIDAzMDIgMDMwMTsgIyAo4buQOyDhu5A7IE/il4zMguKXjMyBOyDhu5A7IE/il4zMguKXjMyBOyApIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBBQ1VURQorMUVEMTsxRUQxOzAwNkYgMDMwMiAwMzAxOzFFRDE7MDA2RiAwMzAyIDAzMDE7ICMgKOG7kTsg4buROyBv4peMzILil4zMgTsg4buROyBv4peMzILil4zMgTsgKSBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFCisxRUQyOzFFRDI7MDA0RiAwMzAyIDAzMDA7MUVEMjswMDRGIDAzMDIgMDMwMDsgIyAo4buSOyDhu5I7IE/il4zMguKXjMyAOyDhu5I7IE/il4zMguKXjMyAOyApIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBHUkFWRQorMUVEMzsxRUQzOzAwNkYgMDMwMiAwMzAwOzFFRDM7MDA2RiAwMzAyIDAzMDA7ICMgKOG7kzsg4buTOyBv4peMzILil4zMgDsg4buTOyBv4peMzILil4zMgDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFCisxRUQ0OzFFRDQ7MDA0RiAwMzAyIDAzMDk7MUVENDswMDRGIDAzMDIgMDMwOTsgIyAo4buUOyDhu5Q7IE/il4zMguKXjMyJOyDhu5Q7IE/il4zMguKXjMyJOyApIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBIT09LIEFCT1ZFCisxRUQ1OzFFRDU7MDA2RiAwMzAyIDAzMDk7MUVENTswMDZGIDAzMDIgMDMwOTsgIyAo4buVOyDhu5U7IG/il4zMguKXjMyJOyDhu5U7IG/il4zMguKXjMyJOyApIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgSE9PSyBBQk9WRQorMUVENjsxRUQ2OzAwNEYgMDMwMiAwMzAzOzFFRDY7MDA0RiAwMzAyIDAzMDM7ICMgKOG7ljsg4buWOyBP4peMzILil4zMgzsg4buWOyBP4peMzILil4zMgzsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgVElMREUKKzFFRDc7MUVENzswMDZGIDAzMDIgMDMwMzsxRUQ3OzAwNkYgMDMwMiAwMzAzOyAjICjhu5c7IOG7lzsgb+KXjMyC4peMzIM7IOG7lzsgb+KXjMyC4peMzIM7ICkgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERQorMUVEODsxRUQ4OzAwNEYgMDMyMyAwMzAyOzFFRDg7MDA0RiAwMzIzIDAzMDI7ICMgKOG7mDsg4buYOyBP4peMzKPil4zMgjsg4buYOyBP4peMzKPil4zMgjsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgRE9UIEJFTE9XCisxRUQ5OzFFRDk7MDA2RiAwMzIzIDAzMDI7MUVEOTswMDZGIDAzMjMgMDMwMjsgIyAo4buZOyDhu5k7IG/il4zMo+KXjMyCOyDhu5k7IG/il4zMo+KXjMyCOyApIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgRE9UIEJFTE9XCisxRURBOzFFREE7MDA0RiAwMzFCIDAzMDE7MUVEQTswMDRGIDAzMUIgMDMwMTsgIyAo4buaOyDhu5o7IE/il4zMm+KXjMyBOyDhu5o7IE/il4zMm+KXjMyBOyApIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBBQ1VURQorMUVEQjsxRURCOzAwNkYgMDMxQiAwMzAxOzFFREI7MDA2RiAwMzFCIDAzMDE7ICMgKOG7mzsg4bubOyBv4peMzJvil4zMgTsg4bubOyBv4peMzJvil4zMgTsgKSBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEFDVVRFCisxRURDOzFFREM7MDA0RiAwMzFCIDAzMDA7MUVEQzswMDRGIDAzMUIgMDMwMDsgIyAo4bucOyDhu5w7IE/il4zMm+KXjMyAOyDhu5w7IE/il4zMm+KXjMyAOyApIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBHUkFWRQorMUVERDsxRUREOzAwNkYgMDMxQiAwMzAwOzFFREQ7MDA2RiAwMzFCIDAzMDA7ICMgKOG7nTsg4budOyBv4peMzJvil4zMgDsg4budOyBv4peMzJvil4zMgDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEdSQVZFCisxRURFOzFFREU7MDA0RiAwMzFCIDAzMDk7MUVERTswMDRGIDAzMUIgMDMwOTsgIyAo4bueOyDhu547IE/il4zMm+KXjMyJOyDhu547IE/il4zMm+KXjMyJOyApIExBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBIT09LIEFCT1ZFCisxRURGOzFFREY7MDA2RiAwMzFCIDAzMDk7MUVERjswMDZGIDAzMUIgMDMwOTsgIyAo4bufOyDhu587IG/il4zMm+KXjMyJOyDhu587IG/il4zMm+KXjMyJOyApIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgSE9PSyBBQk9WRQorMUVFMDsxRUUwOzAwNEYgMDMxQiAwMzAzOzFFRTA7MDA0RiAwMzFCIDAzMDM7ICMgKOG7oDsg4bugOyBP4peMzJvil4zMgzsg4bugOyBP4peMzJvil4zMgzsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgVElMREUKKzFFRTE7MUVFMTswMDZGIDAzMUIgMDMwMzsxRUUxOzAwNkYgMDMxQiAwMzAzOyAjICjhu6E7IOG7oTsgb+KXjMyb4peMzIM7IOG7oTsgb+KXjMyb4peMzIM7ICkgTEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBUSUxERQorMUVFMjsxRUUyOzAwNEYgMDMxQiAwMzIzOzFFRTI7MDA0RiAwMzFCIDAzMjM7ICMgKOG7ojsg4buiOyBP4peMzJvil4zMozsg4buiOyBP4peMzJvil4zMozsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgRE9UIEJFTE9XCisxRUUzOzFFRTM7MDA2RiAwMzFCIDAzMjM7MUVFMzswMDZGIDAzMUIgMDMyMzsgIyAo4bujOyDhu6M7IG/il4zMm+KXjMyjOyDhu6M7IG/il4zMm+KXjMyjOyApIExBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgRE9UIEJFTE9XCisxRUU0OzFFRTQ7MDA1NSAwMzIzOzFFRTQ7MDA1NSAwMzIzOyAjICjhu6Q7IOG7pDsgVeKXjMyjOyDhu6Q7IFXil4zMozsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRE9UIEJFTE9XCisxRUU1OzFFRTU7MDA3NSAwMzIzOzFFRTU7MDA3NSAwMzIzOyAjICjhu6U7IOG7pTsgdeKXjMyjOyDhu6U7IHXil4zMozsgKSBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERPVCBCRUxPVworMUVFNjsxRUU2OzAwNTUgMDMwOTsxRUU2OzAwNTUgMDMwOTsgIyAo4bumOyDhu6Y7IFXil4zMiTsg4bumOyBV4peMzIk7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPT0sgQUJPVkUKKzFFRTc7MUVFNzswMDc1IDAzMDk7MUVFNzswMDc1IDAzMDk7ICMgKOG7pzsg4bunOyB14peMzIk7IOG7pzsgdeKXjMyJOyApIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSE9PSyBBQk9WRQorMUVFODsxRUU4OzAwNTUgMDMxQiAwMzAxOzFFRTg7MDA1NSAwMzFCIDAzMDE7ICMgKOG7qDsg4buoOyBV4peMzJvil4zMgTsg4buoOyBV4peMzJvil4zMgTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgQUNVVEUKKzFFRTk7MUVFOTswMDc1IDAzMUIgMDMwMTsxRUU5OzAwNzUgMDMxQiAwMzAxOyAjICjhu6k7IOG7qTsgdeKXjMyb4peMzIE7IOG7qTsgdeKXjMyb4peMzIE7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBBQ1VURQorMUVFQTsxRUVBOzAwNTUgMDMxQiAwMzAwOzFFRUE7MDA1NSAwMzFCIDAzMDA7ICMgKOG7qjsg4buqOyBV4peMzJvil4zMgDsg4buqOyBV4peMzJvil4zMgDsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgR1JBVkUKKzFFRUI7MUVFQjswMDc1IDAzMUIgMDMwMDsxRUVCOzAwNzUgMDMxQiAwMzAwOyAjICjhu6s7IOG7qzsgdeKXjMyb4peMzIA7IOG7qzsgdeKXjMyb4peMzIA7ICkgTEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBHUkFWRQorMUVFQzsxRUVDOzAwNTUgMDMxQiAwMzA5OzFFRUM7MDA1NSAwMzFCIDAzMDk7ICMgKOG7rDsg4busOyBV4peMzJvil4zMiTsg4busOyBV4peMzJvil4zMiTsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgSE9PSyBBQk9WRQorMUVFRDsxRUVEOzAwNzUgMDMxQiAwMzA5OzFFRUQ7MDA3NSAwMzFCIDAzMDk7ICMgKOG7rTsg4butOyB14peMzJvil4zMiTsg4butOyB14peMzJvil4zMiTsgKSBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEhPT0sgQUJPVkUKKzFFRUU7MUVFRTswMDU1IDAzMUIgMDMwMzsxRUVFOzAwNTUgMDMxQiAwMzAzOyAjICjhu647IOG7rjsgVeKXjMyb4peMzIM7IOG7rjsgVeKXjMyb4peMzIM7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIFRJTERFCisxRUVGOzFFRUY7MDA3NSAwMzFCIDAzMDM7MUVFRjswMDc1IDAzMUIgMDMwMzsgIyAo4buvOyDhu687IHXil4zMm+KXjMyDOyDhu687IHXil4zMm+KXjMyDOyApIExBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgVElMREUKKzFFRjA7MUVGMDswMDU1IDAzMUIgMDMyMzsxRUYwOzAwNTUgMDMxQiAwMzIzOyAjICjhu7A7IOG7sDsgVeKXjMyb4peMzKM7IOG7sDsgVeKXjMyb4peMzKM7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIERPVCBCRUxPVworMUVGMTsxRUYxOzAwNzUgMDMxQiAwMzIzOzFFRjE7MDA3NSAwMzFCIDAzMjM7ICMgKOG7sTsg4buxOyB14peMzJvil4zMozsg4buxOyB14peMzJvil4zMozsgKSBMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIERPVCBCRUxPVworMUVGMjsxRUYyOzAwNTkgMDMwMDsxRUYyOzAwNTkgMDMwMDsgIyAo4buyOyDhu7I7IFnil4zMgDsg4buyOyBZ4peMzIA7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEdSQVZFCisxRUYzOzFFRjM7MDA3OSAwMzAwOzFFRjM7MDA3OSAwMzAwOyAjICjhu7M7IOG7szsgeeKXjMyAOyDhu7M7IHnil4zMgDsgKSBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEdSQVZFCisxRUY0OzFFRjQ7MDA1OSAwMzIzOzFFRjQ7MDA1OSAwMzIzOyAjICjhu7Q7IOG7tDsgWeKXjMyjOyDhu7Q7IFnil4zMozsgKSBMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRE9UIEJFTE9XCisxRUY1OzFFRjU7MDA3OSAwMzIzOzFFRjU7MDA3OSAwMzIzOyAjICjhu7U7IOG7tTsgeeKXjMyjOyDhu7U7IHnil4zMozsgKSBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERPVCBCRUxPVworMUVGNjsxRUY2OzAwNTkgMDMwOTsxRUY2OzAwNTkgMDMwOTsgIyAo4bu2OyDhu7Y7IFnil4zMiTsg4bu2OyBZ4peMzIk7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEhPT0sgQUJPVkUKKzFFRjc7MUVGNzswMDc5IDAzMDk7MUVGNzswMDc5IDAzMDk7ICMgKOG7tzsg4bu3OyB54peMzIk7IOG7tzsgeeKXjMyJOyApIExBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggSE9PSyBBQk9WRQorMUVGODsxRUY4OzAwNTkgMDMwMzsxRUY4OzAwNTkgMDMwMzsgIyAo4bu4OyDhu7g7IFnil4zMgzsg4bu4OyBZ4peMzIM7ICkgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIFRJTERFCisxRUY5OzFFRjk7MDA3OSAwMzAzOzFFRjk7MDA3OSAwMzAzOyAjICjhu7k7IOG7uTsgeeKXjMyDOyDhu7k7IHnil4zMgzsgKSBMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIFRJTERFCisxRjAwOzFGMDA7MDNCMSAwMzEzOzFGMDA7MDNCMSAwMzEzOyAjICjhvIA7IOG8gDsgzrHil4zMkzsg4byAOyDOseKXjMyTOyApIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJCisxRjAxOzFGMDE7MDNCMSAwMzE0OzFGMDE7MDNCMSAwMzE0OyAjICjhvIE7IOG8gTsgzrHil4zMlDsg4byBOyDOseKXjMyUOyApIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBCisxRjAyOzFGMDI7MDNCMSAwMzEzIDAzMDA7MUYwMjswM0IxIDAzMTMgMDMwMDsgIyAo4byCOyDhvII7IM6x4peMzJPil4zMgDsg4byCOyDOseKXjMyT4peMzIA7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFZBUklBCisxRjAzOzFGMDM7MDNCMSAwMzE0IDAzMDA7MUYwMzswM0IxIDAzMTQgMDMwMDsgIyAo4byDOyDhvIM7IM6x4peMzJTil4zMgDsg4byDOyDOseKXjMyU4peMzIA7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFZBUklBCisxRjA0OzFGMDQ7MDNCMSAwMzEzIDAzMDE7MUYwNDswM0IxIDAzMTMgMDMwMTsgIyAo4byEOyDhvIQ7IM6x4peMzJPil4zMgTsg4byEOyDOseKXjMyT4peMzIE7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIE9YSUEKKzFGMDU7MUYwNTswM0IxIDAzMTQgMDMwMTsxRjA1OzAzQjEgMDMxNCAwMzAxOyAjICjhvIU7IOG8hTsgzrHil4zMlOKXjMyBOyDhvIU7IM6x4peMzJTil4zMgTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgT1hJQQorMUYwNjsxRjA2OzAzQjEgMDMxMyAwMzQyOzFGMDY7MDNCMSAwMzEzIDAzNDI7ICMgKOG8hjsg4byGOyDOseKXjMyT4peMzYI7IOG8hjsgzrHil4zMk+KXjM2COyApIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSQorMUYwNzsxRjA3OzAzQjEgMDMxNCAwMzQyOzFGMDc7MDNCMSAwMzE0IDAzNDI7ICMgKOG8hzsg4byHOyDOseKXjMyU4peMzYI7IOG8hzsgzrHil4zMlOKXjM2COyApIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSQorMUYwODsxRjA4OzAzOTEgMDMxMzsxRjA4OzAzOTEgMDMxMzsgIyAo4byIOyDhvIg7IM6R4peMzJM7IOG8iDsgzpHil4zMkzsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJCisxRjA5OzFGMDk7MDM5MSAwMzE0OzFGMDk7MDM5MSAwMzE0OyAjICjhvIk7IOG8iTsgzpHil4zMlDsg4byJOyDOkeKXjMyUOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEKKzFGMEE7MUYwQTswMzkxIDAzMTMgMDMwMDsxRjBBOzAzOTEgMDMxMyAwMzAwOyAjICjhvIo7IOG8ijsgzpHil4zMk+KXjMyAOyDhvIo7IM6R4peMzJPil4zMgDsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBWQVJJQQorMUYwQjsxRjBCOzAzOTEgMDMxNCAwMzAwOzFGMEI7MDM5MSAwMzE0IDAzMDA7ICMgKOG8izsg4byLOyDOkeKXjMyU4peMzIA7IOG8izsgzpHil4zMlOKXjMyAOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFZBUklBCisxRjBDOzFGMEM7MDM5MSAwMzEzIDAzMDE7MUYwQzswMzkxIDAzMTMgMDMwMTsgIyAo4byMOyDhvIw7IM6R4peMzJPil4zMgTsg4byMOyDOkeKXjMyT4peMzIE7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgT1hJQQorMUYwRDsxRjBEOzAzOTEgMDMxNCAwMzAxOzFGMEQ7MDM5MSAwMzE0IDAzMDE7ICMgKOG8jTsg4byNOyDOkeKXjMyU4peMzIE7IOG8jTsgzpHil4zMlOKXjMyBOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIE9YSUEKKzFGMEU7MUYwRTswMzkxIDAzMTMgMDM0MjsxRjBFOzAzOTEgMDMxMyAwMzQyOyAjICjhvI47IOG8jjsgzpHil4zMk+KXjM2COyDhvI47IM6R4peMzJPil4zNgjsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSQorMUYwRjsxRjBGOzAzOTEgMDMxNCAwMzQyOzFGMEY7MDM5MSAwMzE0IDAzNDI7ICMgKOG8jzsg4byPOyDOkeKXjMyU4peMzYI7IOG8jzsgzpHil4zMlOKXjM2COyApIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JCisxRjEwOzFGMTA7MDNCNSAwMzEzOzFGMTA7MDNCNSAwMzEzOyAjICjhvJA7IOG8kDsgzrXil4zMkzsg4byQOyDOteKXjMyTOyApIEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggUFNJTEkKKzFGMTE7MUYxMTswM0I1IDAzMTQ7MUYxMTswM0I1IDAzMTQ7ICMgKOG8kTsg4byROyDOteKXjMyUOyDhvJE7IM614peMzJQ7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBEQVNJQQorMUYxMjsxRjEyOzAzQjUgMDMxMyAwMzAwOzFGMTI7MDNCNSAwMzEzIDAzMDA7ICMgKOG8kjsg4bySOyDOteKXjMyT4peMzIA7IOG8kjsgzrXil4zMk+KXjMyAOyApIEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggUFNJTEkgQU5EIFZBUklBCisxRjEzOzFGMTM7MDNCNSAwMzE0IDAzMDA7MUYxMzswM0I1IDAzMTQgMDMwMDsgIyAo4byTOyDhvJM7IM614peMzJTil4zMgDsg4byTOyDOteKXjMyU4peMzIA7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBEQVNJQSBBTkQgVkFSSUEKKzFGMTQ7MUYxNDswM0I1IDAzMTMgMDMwMTsxRjE0OzAzQjUgMDMxMyAwMzAxOyAjICjhvJQ7IOG8lDsgzrXil4zMk+KXjMyBOyDhvJQ7IM614peMzJPil4zMgTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIFBTSUxJIEFORCBPWElBCisxRjE1OzFGMTU7MDNCNSAwMzE0IDAzMDE7MUYxNTswM0I1IDAzMTQgMDMwMTsgIyAo4byVOyDhvJU7IM614peMzJTil4zMgTsg4byVOyDOteKXjMyU4peMzIE7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBEQVNJQSBBTkQgT1hJQQorMUYxODsxRjE4OzAzOTUgMDMxMzsxRjE4OzAzOTUgMDMxMzsgIyAo4byYOyDhvJg7IM6V4peMzJM7IOG8mDsgzpXil4zMkzsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggUFNJTEkKKzFGMTk7MUYxOTswMzk1IDAzMTQ7MUYxOTswMzk1IDAzMTQ7ICMgKOG8mTsg4byZOyDOleKXjMyUOyDhvJk7IM6V4peMzJQ7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIERBU0lBCisxRjFBOzFGMUE7MDM5NSAwMzEzIDAzMDA7MUYxQTswMzk1IDAzMTMgMDMwMDsgIyAo4byaOyDhvJo7IM6V4peMzJPil4zMgDsg4byaOyDOleKXjMyT4peMzIA7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIFBTSUxJIEFORCBWQVJJQQorMUYxQjsxRjFCOzAzOTUgMDMxNCAwMzAwOzFGMUI7MDM5NSAwMzE0IDAzMDA7ICMgKOG8mzsg4bybOyDOleKXjMyU4peMzIA7IOG8mzsgzpXil4zMlOKXjMyAOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBEQVNJQSBBTkQgVkFSSUEKKzFGMUM7MUYxQzswMzk1IDAzMTMgMDMwMTsxRjFDOzAzOTUgMDMxMyAwMzAxOyAjICjhvJw7IOG8nDsgzpXil4zMk+KXjMyBOyDhvJw7IM6V4peMzJPil4zMgTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggUFNJTEkgQU5EIE9YSUEKKzFGMUQ7MUYxRDswMzk1IDAzMTQgMDMwMTsxRjFEOzAzOTUgMDMxNCAwMzAxOyAjICjhvJ07IOG8nTsgzpXil4zMlOKXjMyBOyDhvJ07IM6V4peMzJTil4zMgTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUEgQU5EIE9YSUEKKzFGMjA7MUYyMDswM0I3IDAzMTM7MUYyMDswM0I3IDAzMTM7ICMgKOG8oDsg4bygOyDOt+KXjMyTOyDhvKA7IM634peMzJM7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJCisxRjIxOzFGMjE7MDNCNyAwMzE0OzFGMjE7MDNCNyAwMzE0OyAjICjhvKE7IOG8oTsgzrfil4zMlDsg4byhOyDOt+KXjMyUOyApIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQQorMUYyMjsxRjIyOzAzQjcgMDMxMyAwMzAwOzFGMjI7MDNCNyAwMzEzIDAzMDA7ICMgKOG8ojsg4byiOyDOt+KXjMyT4peMzIA7IOG8ojsgzrfil4zMk+KXjMyAOyApIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgVkFSSUEKKzFGMjM7MUYyMzswM0I3IDAzMTQgMDMwMDsxRjIzOzAzQjcgMDMxNCAwMzAwOyAjICjhvKM7IOG8ozsgzrfil4zMlOKXjMyAOyDhvKM7IM634peMzJTil4zMgDsgKSBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFZBUklBCisxRjI0OzFGMjQ7MDNCNyAwMzEzIDAzMDE7MUYyNDswM0I3IDAzMTMgMDMwMTsgIyAo4bykOyDhvKQ7IM634peMzJPil4zMgTsg4bykOyDOt+KXjMyT4peMzIE7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBPWElBCisxRjI1OzFGMjU7MDNCNyAwMzE0IDAzMDE7MUYyNTswM0I3IDAzMTQgMDMwMTsgIyAo4bylOyDhvKU7IM634peMzJTil4zMgTsg4bylOyDOt+KXjMyU4peMzIE7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBPWElBCisxRjI2OzFGMjY7MDNCNyAwMzEzIDAzNDI7MUYyNjswM0I3IDAzMTMgMDM0MjsgIyAo4bymOyDhvKY7IM634peMzJPil4zNgjsg4bymOyDOt+KXjMyT4peMzYI7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSQorMUYyNzsxRjI3OzAzQjcgMDMxNCAwMzQyOzFGMjc7MDNCNyAwMzE0IDAzNDI7ICMgKOG8pzsg4bynOyDOt+KXjMyU4peMzYI7IOG8pzsgzrfil4zMlOKXjM2COyApIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkKKzFGMjg7MUYyODswMzk3IDAzMTM7MUYyODswMzk3IDAzMTM7ICMgKOG8qDsg4byoOyDOl+KXjMyTOyDhvKg7IM6X4peMzJM7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkKKzFGMjk7MUYyOTswMzk3IDAzMTQ7MUYyOTswMzk3IDAzMTQ7ICMgKOG8qTsg4bypOyDOl+KXjMyUOyDhvKk7IM6X4peMzJQ7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEKKzFGMkE7MUYyQTswMzk3IDAzMTMgMDMwMDsxRjJBOzAzOTcgMDMxMyAwMzAwOyAjICjhvKo7IOG8qjsgzpfil4zMk+KXjMyAOyDhvKo7IM6X4peMzJPil4zMgDsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgVkFSSUEKKzFGMkI7MUYyQjswMzk3IDAzMTQgMDMwMDsxRjJCOzAzOTcgMDMxNCAwMzAwOyAjICjhvKs7IOG8qzsgzpfil4zMlOKXjMyAOyDhvKs7IM6X4peMzJTil4zMgDsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgVkFSSUEKKzFGMkM7MUYyQzswMzk3IDAzMTMgMDMwMTsxRjJDOzAzOTcgMDMxMyAwMzAxOyAjICjhvKw7IOG8rDsgzpfil4zMk+KXjMyBOyDhvKw7IM6X4peMzJPil4zMgTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgT1hJQQorMUYyRDsxRjJEOzAzOTcgMDMxNCAwMzAxOzFGMkQ7MDM5NyAwMzE0IDAzMDE7ICMgKOG8rTsg4bytOyDOl+KXjMyU4peMzIE7IOG8rTsgzpfil4zMlOKXjMyBOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBPWElBCisxRjJFOzFGMkU7MDM5NyAwMzEzIDAzNDI7MUYyRTswMzk3IDAzMTMgMDM0MjsgIyAo4byuOyDhvK47IM6X4peMzJPil4zNgjsg4byuOyDOl+KXjMyT4peMzYI7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JCisxRjJGOzFGMkY7MDM5NyAwMzE0IDAzNDI7MUYyRjswMzk3IDAzMTQgMDM0MjsgIyAo4byvOyDhvK87IM6X4peMzJTil4zNgjsg4byvOyDOl+KXjMyU4peMzYI7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JCisxRjMwOzFGMzA7MDNCOSAwMzEzOzFGMzA7MDNCOSAwMzEzOyAjICjhvLA7IOG8sDsgzrnil4zMkzsg4bywOyDOueKXjMyTOyApIEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggUFNJTEkKKzFGMzE7MUYzMTswM0I5IDAzMTQ7MUYzMTswM0I5IDAzMTQ7ICMgKOG8sTsg4byxOyDOueKXjMyUOyDhvLE7IM654peMzJQ7ICkgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQQorMUYzMjsxRjMyOzAzQjkgMDMxMyAwMzAwOzFGMzI7MDNCOSAwMzEzIDAzMDA7ICMgKOG8sjsg4byyOyDOueKXjMyT4peMzIA7IOG8sjsgzrnil4zMk+KXjMyAOyApIEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggUFNJTEkgQU5EIFZBUklBCisxRjMzOzFGMzM7MDNCOSAwMzE0IDAzMDA7MUYzMzswM0I5IDAzMTQgMDMwMDsgIyAo4byzOyDhvLM7IM654peMzJTil4zMgDsg4byzOyDOueKXjMyU4peMzIA7ICkgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgVkFSSUEKKzFGMzQ7MUYzNDswM0I5IDAzMTMgMDMwMTsxRjM0OzAzQjkgMDMxMyAwMzAxOyAjICjhvLQ7IOG8tDsgzrnil4zMk+KXjMyBOyDhvLQ7IM654peMzJPil4zMgTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJIEFORCBPWElBCisxRjM1OzFGMzU7MDNCOSAwMzE0IDAzMDE7MUYzNTswM0I5IDAzMTQgMDMwMTsgIyAo4by1OyDhvLU7IM654peMzJTil4zMgTsg4by1OyDOueKXjMyU4peMzIE7ICkgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgT1hJQQorMUYzNjsxRjM2OzAzQjkgMDMxMyAwMzQyOzFGMzY7MDNCOSAwMzEzIDAzNDI7ICMgKOG8tjsg4by2OyDOueKXjMyT4peMzYI7IOG8tjsgzrnil4zMk+KXjM2COyApIEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JCisxRjM3OzFGMzc7MDNCOSAwMzE0IDAzNDI7MUYzNzswM0I5IDAzMTQgMDM0MjsgIyAo4by3OyDhvLc7IM654peMzJTil4zNgjsg4by3OyDOueKXjMyU4peMzYI7ICkgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkKKzFGMzg7MUYzODswMzk5IDAzMTM7MUYzODswMzk5IDAzMTM7ICMgKOG8uDsg4by4OyDOmeKXjMyTOyDhvLg7IM6Z4peMzJM7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJCisxRjM5OzFGMzk7MDM5OSAwMzE0OzFGMzk7MDM5OSAwMzE0OyAjICjhvLk7IOG8uTsgzpnil4zMlDsg4by5OyDOmeKXjMyUOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQQorMUYzQTsxRjNBOzAzOTkgMDMxMyAwMzAwOzFGM0E7MDM5OSAwMzEzIDAzMDA7ICMgKOG8ujsg4by6OyDOmeKXjMyT4peMzIA7IOG8ujsgzpnil4zMk+KXjMyAOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBQU0lMSSBBTkQgVkFSSUEKKzFGM0I7MUYzQjswMzk5IDAzMTQgMDMwMDsxRjNCOzAzOTkgMDMxNCAwMzAwOyAjICjhvLs7IOG8uzsgzpnil4zMlOKXjMyAOyDhvLs7IM6Z4peMzJTil4zMgDsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggREFTSUEgQU5EIFZBUklBCisxRjNDOzFGM0M7MDM5OSAwMzEzIDAzMDE7MUYzQzswMzk5IDAzMTMgMDMwMTsgIyAo4by8OyDhvLw7IM6Z4peMzJPil4zMgTsg4by8OyDOmeKXjMyT4peMzIE7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJIEFORCBPWElBCisxRjNEOzFGM0Q7MDM5OSAwMzE0IDAzMDE7MUYzRDswMzk5IDAzMTQgMDMwMTsgIyAo4by9OyDhvL07IM6Z4peMzJTil4zMgTsg4by9OyDOmeKXjMyU4peMzIE7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIERBU0lBIEFORCBPWElBCisxRjNFOzFGM0U7MDM5OSAwMzEzIDAzNDI7MUYzRTswMzk5IDAzMTMgMDM0MjsgIyAo4by+OyDhvL47IM6Z4peMzJPil4zNgjsg4by+OyDOmeKXjMyT4peMzYI7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSQorMUYzRjsxRjNGOzAzOTkgMDMxNCAwMzQyOzFGM0Y7MDM5OSAwMzE0IDAzNDI7ICMgKOG8vzsg4by/OyDOmeKXjMyU4peMzYI7IOG8vzsgzpnil4zMlOKXjM2COyApIEdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkKKzFGNDA7MUY0MDswM0JGIDAzMTM7MUY0MDswM0JGIDAzMTM7ICMgKOG9gDsg4b2AOyDOv+KXjMyTOyDhvYA7IM6/4peMzJM7ICkgR1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBQU0lMSQorMUY0MTsxRjQxOzAzQkYgMDMxNDsxRjQxOzAzQkYgMDMxNDsgIyAo4b2BOyDhvYE7IM6/4peMzJQ7IOG9gTsgzr/il4zMlDsgKSBHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBCisxRjQyOzFGNDI7MDNCRiAwMzEzIDAzMDA7MUY0MjswM0JGIDAzMTMgMDMwMDsgIyAo4b2COyDhvYI7IM6/4peMzJPil4zMgDsg4b2COyDOv+KXjMyT4peMzIA7ICkgR1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBQU0lMSSBBTkQgVkFSSUEKKzFGNDM7MUY0MzswM0JGIDAzMTQgMDMwMDsxRjQzOzAzQkYgMDMxNCAwMzAwOyAjICjhvYM7IOG9gzsgzr/il4zMlOKXjMyAOyDhvYM7IM6/4peMzJTil4zMgDsgKSBHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBIEFORCBWQVJJQQorMUY0NDsxRjQ0OzAzQkYgMDMxMyAwMzAxOzFGNDQ7MDNCRiAwMzEzIDAzMDE7ICMgKOG9hDsg4b2EOyDOv+KXjMyT4peMzIE7IOG9hDsgzr/il4zMk+KXjMyBOyApIEdSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggUFNJTEkgQU5EIE9YSUEKKzFGNDU7MUY0NTswM0JGIDAzMTQgMDMwMTsxRjQ1OzAzQkYgMDMxNCAwMzAxOyAjICjhvYU7IOG9hTsgzr/il4zMlOKXjMyBOyDhvYU7IM6/4peMzJTil4zMgTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBIEFORCBPWElBCisxRjQ4OzFGNDg7MDM5RiAwMzEzOzFGNDg7MDM5RiAwMzEzOyAjICjhvYg7IOG9iDsgzp/il4zMkzsg4b2IOyDOn+KXjMyTOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBQU0lMSQorMUY0OTsxRjQ5OzAzOUYgMDMxNDsxRjQ5OzAzOUYgMDMxNDsgIyAo4b2JOyDhvYk7IM6f4peMzJQ7IOG9iTsgzp/il4zMlDsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggREFTSUEKKzFGNEE7MUY0QTswMzlGIDAzMTMgMDMwMDsxRjRBOzAzOUYgMDMxMyAwMzAwOyAjICjhvYo7IOG9ijsgzp/il4zMk+KXjMyAOyDhvYo7IM6f4peMzJPil4zMgDsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggUFNJTEkgQU5EIFZBUklBCisxRjRCOzFGNEI7MDM5RiAwMzE0IDAzMDA7MUY0QjswMzlGIDAzMTQgMDMwMDsgIyAo4b2LOyDhvYs7IM6f4peMzJTil4zMgDsg4b2LOyDOn+KXjMyU4peMzIA7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBIEFORCBWQVJJQQorMUY0QzsxRjRDOzAzOUYgMDMxMyAwMzAxOzFGNEM7MDM5RiAwMzEzIDAzMDE7ICMgKOG9jDsg4b2MOyDOn+KXjMyT4peMzIE7IOG9jDsgzp/il4zMk+KXjMyBOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBQU0lMSSBBTkQgT1hJQQorMUY0RDsxRjREOzAzOUYgMDMxNCAwMzAxOzFGNEQ7MDM5RiAwMzE0IDAzMDE7ICMgKOG9jTsg4b2NOyDOn+KXjMyU4peMzIE7IOG9jTsgzp/il4zMlOKXjMyBOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBEQVNJQSBBTkQgT1hJQQorMUY1MDsxRjUwOzAzQzUgMDMxMzsxRjUwOzAzQzUgMDMxMzsgIyAo4b2QOyDhvZA7IM+F4peMzJM7IOG9kDsgz4Xil4zMkzsgKSBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBTSUxJCisxRjUxOzFGNTE7MDNDNSAwMzE0OzFGNTE7MDNDNSAwMzE0OyAjICjhvZE7IOG9kTsgz4Xil4zMlDsg4b2ROyDPheKXjMyUOyApIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEKKzFGNTI7MUY1MjswM0M1IDAzMTMgMDMwMDsxRjUyOzAzQzUgMDMxMyAwMzAwOyAjICjhvZI7IOG9kjsgz4Xil4zMk+KXjMyAOyDhvZI7IM+F4peMzJPil4zMgDsgKSBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBTSUxJIEFORCBWQVJJQQorMUY1MzsxRjUzOzAzQzUgMDMxNCAwMzAwOzFGNTM7MDNDNSAwMzE0IDAzMDA7ICMgKOG9kzsg4b2TOyDPheKXjMyU4peMzIA7IOG9kzsgz4Xil4zMlOKXjMyAOyApIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIFZBUklBCisxRjU0OzFGNTQ7MDNDNSAwMzEzIDAzMDE7MUY1NDswM0M1IDAzMTMgMDMwMTsgIyAo4b2UOyDhvZQ7IM+F4peMzJPil4zMgTsg4b2UOyDPheKXjMyT4peMzIE7ICkgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBQU0lMSSBBTkQgT1hJQQorMUY1NTsxRjU1OzAzQzUgMDMxNCAwMzAxOzFGNTU7MDNDNSAwMzE0IDAzMDE7ICMgKOG9lTsg4b2VOyDPheKXjMyU4peMzIE7IOG9lTsgz4Xil4zMlOKXjMyBOyApIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIE9YSUEKKzFGNTY7MUY1NjswM0M1IDAzMTMgMDM0MjsxRjU2OzAzQzUgMDMxMyAwMzQyOyAjICjhvZY7IOG9ljsgz4Xil4zMk+KXjM2COyDhvZY7IM+F4peMzJPil4zNgjsgKSBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSQorMUY1NzsxRjU3OzAzQzUgMDMxNCAwMzQyOzFGNTc7MDNDNSAwMzE0IDAzNDI7ICMgKOG9lzsg4b2XOyDPheKXjMyU4peMzYI7IOG9lzsgz4Xil4zMlOKXjM2COyApIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JCisxRjU5OzFGNTk7MDNBNSAwMzE0OzFGNTk7MDNBNSAwMzE0OyAjICjhvZk7IOG9mTsgzqXil4zMlDsg4b2ZOyDOpeKXjMyUOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBEQVNJQQorMUY1QjsxRjVCOzAzQTUgMDMxNCAwMzAwOzFGNUI7MDNBNSAwMzE0IDAzMDA7ICMgKOG9mzsg4b2bOyDOpeKXjMyU4peMzIA7IOG9mzsgzqXil4zMlOKXjMyAOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBEQVNJQSBBTkQgVkFSSUEKKzFGNUQ7MUY1RDswM0E1IDAzMTQgMDMwMTsxRjVEOzAzQTUgMDMxNCAwMzAxOyAjICjhvZ07IOG9nTsgzqXil4zMlOKXjMyBOyDhvZ07IM6l4peMzJTil4zMgTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIE9YSUEKKzFGNUY7MUY1RjswM0E1IDAzMTQgMDM0MjsxRjVGOzAzQTUgMDMxNCAwMzQyOyAjICjhvZ87IOG9nzsgzqXil4zMlOKXjM2COyDhvZ87IM6l4peMzJTil4zNgjsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JCisxRjYwOzFGNjA7MDNDOSAwMzEzOzFGNjA7MDNDOSAwMzEzOyAjICjhvaA7IOG9oDsgz4nil4zMkzsg4b2gOyDPieKXjMyTOyApIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJCisxRjYxOzFGNjE7MDNDOSAwMzE0OzFGNjE7MDNDOSAwMzE0OyAjICjhvaE7IOG9oTsgz4nil4zMlDsg4b2hOyDPieKXjMyUOyApIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBCisxRjYyOzFGNjI7MDNDOSAwMzEzIDAzMDA7MUY2MjswM0M5IDAzMTMgMDMwMDsgIyAo4b2iOyDhvaI7IM+J4peMzJPil4zMgDsg4b2iOyDPieKXjMyT4peMzIA7ICkgR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFZBUklBCisxRjYzOzFGNjM7MDNDOSAwMzE0IDAzMDA7MUY2MzswM0M5IDAzMTQgMDMwMDsgIyAo4b2jOyDhvaM7IM+J4peMzJTil4zMgDsg4b2jOyDPieKXjMyU4peMzIA7ICkgR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFZBUklBCisxRjY0OzFGNjQ7MDNDOSAwMzEzIDAzMDE7MUY2NDswM0M5IDAzMTMgMDMwMTsgIyAo4b2kOyDhvaQ7IM+J4peMzJPil4zMgTsg4b2kOyDPieKXjMyT4peMzIE7ICkgR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIE9YSUEKKzFGNjU7MUY2NTswM0M5IDAzMTQgMDMwMTsxRjY1OzAzQzkgMDMxNCAwMzAxOyAjICjhvaU7IOG9pTsgz4nil4zMlOKXjMyBOyDhvaU7IM+J4peMzJTil4zMgTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgT1hJQQorMUY2NjsxRjY2OzAzQzkgMDMxMyAwMzQyOzFGNjY7MDNDOSAwMzEzIDAzNDI7ICMgKOG9pjsg4b2mOyDPieKXjMyT4peMzYI7IOG9pjsgz4nil4zMk+KXjM2COyApIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSQorMUY2NzsxRjY3OzAzQzkgMDMxNCAwMzQyOzFGNjc7MDNDOSAwMzE0IDAzNDI7ICMgKOG9pzsg4b2nOyDPieKXjMyU4peMzYI7IOG9pzsgz4nil4zMlOKXjM2COyApIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSQorMUY2ODsxRjY4OzAzQTkgMDMxMzsxRjY4OzAzQTkgMDMxMzsgIyAo4b2oOyDhvag7IM6p4peMzJM7IOG9qDsgzqnil4zMkzsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJCisxRjY5OzFGNjk7MDNBOSAwMzE0OzFGNjk7MDNBOSAwMzE0OyAjICjhvak7IOG9qTsgzqnil4zMlDsg4b2pOyDOqeKXjMyUOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEKKzFGNkE7MUY2QTswM0E5IDAzMTMgMDMwMDsxRjZBOzAzQTkgMDMxMyAwMzAwOyAjICjhvao7IOG9qjsgzqnil4zMk+KXjMyAOyDhvao7IM6p4peMzJPil4zMgDsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBWQVJJQQorMUY2QjsxRjZCOzAzQTkgMDMxNCAwMzAwOzFGNkI7MDNBOSAwMzE0IDAzMDA7ICMgKOG9qzsg4b2rOyDOqeKXjMyU4peMzIA7IOG9qzsgzqnil4zMlOKXjMyAOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFZBUklBCisxRjZDOzFGNkM7MDNBOSAwMzEzIDAzMDE7MUY2QzswM0E5IDAzMTMgMDMwMTsgIyAo4b2sOyDhvaw7IM6p4peMzJPil4zMgTsg4b2sOyDOqeKXjMyT4peMzIE7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgT1hJQQorMUY2RDsxRjZEOzAzQTkgMDMxNCAwMzAxOzFGNkQ7MDNBOSAwMzE0IDAzMDE7ICMgKOG9rTsg4b2tOyDOqeKXjMyU4peMzIE7IOG9rTsgzqnil4zMlOKXjMyBOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIE9YSUEKKzFGNkU7MUY2RTswM0E5IDAzMTMgMDM0MjsxRjZFOzAzQTkgMDMxMyAwMzQyOyAjICjhva47IOG9rjsgzqnil4zMk+KXjM2COyDhva47IM6p4peMzJPil4zNgjsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSQorMUY2RjsxRjZGOzAzQTkgMDMxNCAwMzQyOzFGNkY7MDNBOSAwMzE0IDAzNDI7ICMgKOG9rzsg4b2vOyDOqeKXjMyU4peMzYI7IOG9rzsgzqnil4zMlOKXjM2COyApIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JCisxRjcwOzFGNzA7MDNCMSAwMzAwOzFGNzA7MDNCMSAwMzAwOyAjICjhvbA7IOG9sDsgzrHil4zMgDsg4b2wOyDOseKXjMyAOyApIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFZBUklBCisxRjcxOzAzQUM7MDNCMSAwMzAxOzAzQUM7MDNCMSAwMzAxOyAjICjhvbE7IM6sOyDOseKXjMyBOyDOrDsgzrHil4zMgTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBPWElBCisxRjcyOzFGNzI7MDNCNSAwMzAwOzFGNzI7MDNCNSAwMzAwOyAjICjhvbI7IOG9sjsgzrXil4zMgDsg4b2yOyDOteKXjMyAOyApIEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggVkFSSUEKKzFGNzM7MDNBRDswM0I1IDAzMDE7MDNBRDswM0I1IDAzMDE7ICMgKOG9szsgzq07IM614peMzIE7IM6tOyDOteKXjMyBOyApIEdSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggT1hJQQorMUY3NDsxRjc0OzAzQjcgMDMwMDsxRjc0OzAzQjcgMDMwMDsgIyAo4b20OyDhvbQ7IM634peMzIA7IOG9tDsgzrfil4zMgDsgKSBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggVkFSSUEKKzFGNzU7MDNBRTswM0I3IDAzMDE7MDNBRTswM0I3IDAzMDE7ICMgKOG9tTsgzq47IM634peMzIE7IM6uOyDOt+KXjMyBOyApIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBPWElBCisxRjc2OzFGNzY7MDNCOSAwMzAwOzFGNzY7MDNCOSAwMzAwOyAjICjhvbY7IOG9tjsgzrnil4zMgDsg4b22OyDOueKXjMyAOyApIEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggVkFSSUEKKzFGNzc7MDNBRjswM0I5IDAzMDE7MDNBRjswM0I5IDAzMDE7ICMgKOG9tzsgzq87IM654peMzIE7IM6vOyDOueKXjMyBOyApIEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggT1hJQQorMUY3ODsxRjc4OzAzQkYgMDMwMDsxRjc4OzAzQkYgMDMwMDsgIyAo4b24OyDhvbg7IM6/4peMzIA7IOG9uDsgzr/il4zMgDsgKSBHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIFZBUklBCisxRjc5OzAzQ0M7MDNCRiAwMzAxOzAzQ0M7MDNCRiAwMzAxOyAjICjhvbk7IM+MOyDOv+KXjMyBOyDPjDsgzr/il4zMgTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIE9YSUEKKzFGN0E7MUY3QTswM0M1IDAzMDA7MUY3QTswM0M1IDAzMDA7ICMgKOG9ujsg4b26OyDPheKXjMyAOyDhvbo7IM+F4peMzIA7ICkgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBWQVJJQQorMUY3QjswM0NEOzAzQzUgMDMwMTswM0NEOzAzQzUgMDMwMTsgIyAo4b27OyDPjTsgz4Xil4zMgTsgz407IM+F4peMzIE7ICkgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBPWElBCisxRjdDOzFGN0M7MDNDOSAwMzAwOzFGN0M7MDNDOSAwMzAwOyAjICjhvbw7IOG9vDsgz4nil4zMgDsg4b28OyDPieKXjMyAOyApIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFZBUklBCisxRjdEOzAzQ0U7MDNDOSAwMzAxOzAzQ0U7MDNDOSAwMzAxOyAjICjhvb07IM+OOyDPieKXjMyBOyDPjjsgz4nil4zMgTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBPWElBCisxRjgwOzFGODA7MDNCMSAwMzEzIDAzNDU7MUY4MDswM0IxIDAzMTMgMDM0NTsgIyAo4b6AOyDhvoA7IM6x4peMzJPil4zNhTsg4b6AOyDOseKXjMyT4peMzYU7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFlQT0dFR1JBTU1FTkkKKzFGODE7MUY4MTswM0IxIDAzMTQgMDM0NTsxRjgxOzAzQjEgMDMxNCAwMzQ1OyAjICjhvoE7IOG+gTsgzrHil4zMlOKXjM2FOyDhvoE7IM6x4peMzJTil4zNhTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUY4MjsxRjgyOzAzQjEgMDMxMyAwMzAwIDAzNDU7MUY4MjswM0IxIDAzMTMgMDMwMCAwMzQ1OyAjICjhvoI7IOG+gjsgzrHil4zMk+KXjMyA4peMzYU7IOG+gjsgzrHil4zMk+KXjMyA4peMzYU7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JCisxRjgzOzFGODM7MDNCMSAwMzE0IDAzMDAgMDM0NTsxRjgzOzAzQjEgMDMxNCAwMzAwIDAzNDU7ICMgKOG+gzsg4b6DOyDOseKXjMyU4peMzIDil4zNhTsg4b6DOyDOseKXjMyU4peMzIDil4zNhTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGODQ7MUY4NDswM0IxIDAzMTMgMDMwMSAwMzQ1OzFGODQ7MDNCMSAwMzEzIDAzMDEgMDM0NTsgIyAo4b6EOyDhvoQ7IM6x4peMzJPil4zMgeKXjM2FOyDhvoQ7IM6x4peMzJPil4zMgeKXjM2FOyApIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JCisxRjg1OzFGODU7MDNCMSAwMzE0IDAzMDEgMDM0NTsxRjg1OzAzQjEgMDMxNCAwMzAxIDAzNDU7ICMgKOG+hTsg4b6FOyDOseKXjMyU4peMzIHil4zNhTsg4b6FOyDOseKXjMyU4peMzIHil4zNhTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUY4NjsxRjg2OzAzQjEgMDMxMyAwMzQyIDAzNDU7MUY4NjswM0IxIDAzMTMgMDM0MiAwMzQ1OyAjICjhvoY7IOG+hjsgzrHil4zMk+KXjM2C4peMzYU7IOG+hjsgzrHil4zMk+KXjM2C4peMzYU7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JCisxRjg3OzFGODc7MDNCMSAwMzE0IDAzNDIgMDM0NTsxRjg3OzAzQjEgMDMxNCAwMzQyIDAzNDU7ICMgKOG+hzsg4b6HOyDOseKXjMyU4peMzYLil4zNhTsg4b6HOyDOseKXjMyU4peMzYLil4zNhTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkkKKzFGODg7MUY4ODswMzkxIDAzMTMgMDM0NTsxRjg4OzAzOTEgMDMxMyAwMzQ1OyAjICjhvog7IOG+iDsgzpHil4zMk+KXjM2FOyDhvog7IM6R4peMzJPil4zNhTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBQUk9TR0VHUkFNTUVOSQorMUY4OTsxRjg5OzAzOTEgMDMxNCAwMzQ1OzFGODk7MDM5MSAwMzE0IDAzNDU7ICMgKOG+iTsg4b6JOyDOkeKXjMyU4peMzYU7IOG+iTsgzpHil4zMlOKXjM2FOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRjhBOzFGOEE7MDM5MSAwMzEzIDAzMDAgMDM0NTsxRjhBOzAzOTEgMDMxMyAwMzAwIDAzNDU7ICMgKOG+ijsg4b6KOyDOkeKXjMyT4peMzIDil4zNhTsg4b6KOyDOkeKXjMyT4peMzIDil4zNhTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOEI7MUY4QjswMzkxIDAzMTQgMDMwMCAwMzQ1OzFGOEI7MDM5MSAwMzE0IDAzMDAgMDM0NTsgIyAo4b6LOyDhvos7IM6R4peMzJTil4zMgOKXjM2FOyDhvos7IM6R4peMzJTil4zMgOKXjM2FOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSQorMUY4QzsxRjhDOzAzOTEgMDMxMyAwMzAxIDAzNDU7MUY4QzswMzkxIDAzMTMgMDMwMSAwMzQ1OyAjICjhvow7IOG+jDsgzpHil4zMk+KXjMyB4peMzYU7IOG+jDsgzpHil4zMk+KXjMyB4peMzYU7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOEQ7MUY4RDswMzkxIDAzMTQgMDMwMSAwMzQ1OzFGOEQ7MDM5MSAwMzE0IDAzMDEgMDM0NTsgIyAo4b6NOyDhvo07IM6R4peMzJTil4zMgeKXjM2FOyDhvo07IM6R4peMzJTil4zMgeKXjM2FOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRjhFOzFGOEU7MDM5MSAwMzEzIDAzNDIgMDM0NTsxRjhFOzAzOTEgMDMxMyAwMzQyIDAzNDU7ICMgKOG+jjsg4b6OOyDOkeKXjMyT4peMzYLil4zNhTsg4b6OOyDOkeKXjMyT4peMzYLil4zNhTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOEY7MUY4RjswMzkxIDAzMTQgMDM0MiAwMzQ1OzFGOEY7MDM5MSAwMzE0IDAzNDIgMDM0NTsgIyAo4b6POyDhvo87IM6R4peMzJTil4zNguKXjM2FOyDhvo87IM6R4peMzJTil4zNguKXjM2FOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBQUk9TR0VHUkFNTUVOSQorMUY5MDsxRjkwOzAzQjcgMDMxMyAwMzQ1OzFGOTA7MDNCNyAwMzEzIDAzNDU7ICMgKOG+kDsg4b6QOyDOt+KXjMyT4peMzYU7IOG+kDsgzrfil4zMk+KXjM2FOyApIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgWVBPR0VHUkFNTUVOSQorMUY5MTsxRjkxOzAzQjcgMDMxNCAwMzQ1OzFGOTE7MDNCNyAwMzE0IDAzNDU7ICMgKOG+kTsg4b6ROyDOt+KXjMyU4peMzYU7IOG+kTsgzrfil4zMlOKXjM2FOyApIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUY5MjsxRjkyOzAzQjcgMDMxMyAwMzAwIDAzNDU7MUY5MjswM0I3IDAzMTMgMDMwMCAwMzQ1OyAjICjhvpI7IOG+kjsgzrfil4zMk+KXjMyA4peMzYU7IOG+kjsgzrfil4zMk+KXjMyA4peMzYU7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUY5MzsxRjkzOzAzQjcgMDMxNCAwMzAwIDAzNDU7MUY5MzswM0I3IDAzMTQgMDMwMCAwMzQ1OyAjICjhvpM7IOG+kzsgzrfil4zMlOKXjMyA4peMzYU7IOG+kzsgzrfil4zMlOKXjMyA4peMzYU7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUY5NDsxRjk0OzAzQjcgMDMxMyAwMzAxIDAzNDU7MUY5NDswM0I3IDAzMTMgMDMwMSAwMzQ1OyAjICjhvpQ7IOG+lDsgzrfil4zMk+KXjMyB4peMzYU7IOG+lDsgzrfil4zMk+KXjMyB4peMzYU7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JCisxRjk1OzFGOTU7MDNCNyAwMzE0IDAzMDEgMDM0NTsxRjk1OzAzQjcgMDMxNCAwMzAxIDAzNDU7ICMgKOG+lTsg4b6VOyDOt+KXjMyU4peMzIHil4zNhTsg4b6VOyDOt+KXjMyU4peMzIHil4zNhTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGOTY7MUY5NjswM0I3IDAzMTMgMDM0MiAwMzQ1OzFGOTY7MDNCNyAwMzEzIDAzNDIgMDM0NTsgIyAo4b6WOyDhvpY7IM634peMzJPil4zNguKXjM2FOyDhvpY7IM634peMzJPil4zNguKXjM2FOyApIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkkKKzFGOTc7MUY5NzswM0I3IDAzMTQgMDM0MiAwMzQ1OzFGOTc7MDNCNyAwMzE0IDAzNDIgMDM0NTsgIyAo4b6XOyDhvpc7IM634peMzJTil4zNguKXjM2FOyDhvpc7IM634peMzJTil4zNguKXjM2FOyApIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkkKKzFGOTg7MUY5ODswMzk3IDAzMTMgMDM0NTsxRjk4OzAzOTcgMDMxMyAwMzQ1OyAjICjhvpg7IOG+mDsgzpfil4zMk+KXjM2FOyDhvpg7IM6X4peMzJPil4zNhTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOTk7MUY5OTswMzk3IDAzMTQgMDM0NTsxRjk5OzAzOTcgMDMxNCAwMzQ1OyAjICjhvpk7IOG+mTsgzpfil4zMlOKXjM2FOyDhvpk7IM6X4peMzJTil4zNhTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOUE7MUY5QTswMzk3IDAzMTMgMDMwMCAwMzQ1OzFGOUE7MDM5NyAwMzEzIDAzMDAgMDM0NTsgIyAo4b6aOyDhvpo7IM6X4peMzJPil4zMgOKXjM2FOyDhvpo7IM6X4peMzJPil4zMgOKXjM2FOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOUI7MUY5QjswMzk3IDAzMTQgMDMwMCAwMzQ1OzFGOUI7MDM5NyAwMzE0IDAzMDAgMDM0NTsgIyAo4b6bOyDhvps7IM6X4peMzJTil4zMgOKXjM2FOyDhvps7IM6X4peMzJTil4zMgOKXjM2FOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOUM7MUY5QzswMzk3IDAzMTMgMDMwMSAwMzQ1OzFGOUM7MDM5NyAwMzEzIDAzMDEgMDM0NTsgIyAo4b6cOyDhvpw7IM6X4peMzJPil4zMgeKXjM2FOyDhvpw7IM6X4peMzJPil4zMgeKXjM2FOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBQUk9TR0VHUkFNTUVOSQorMUY5RDsxRjlEOzAzOTcgMDMxNCAwMzAxIDAzNDU7MUY5RDswMzk3IDAzMTQgMDMwMSAwMzQ1OyAjICjhvp07IOG+nTsgzpfil4zMlOKXjMyB4peMzYU7IOG+nTsgzpfil4zMlOKXjMyB4peMzYU7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRjlFOzFGOUU7MDM5NyAwMzEzIDAzNDIgMDM0NTsxRjlFOzAzOTcgMDMxMyAwMzQyIDAzNDU7ICMgKOG+njsg4b6eOyDOl+KXjMyT4peMzYLil4zNhTsg4b6eOyDOl+KXjMyT4peMzYLil4zNhTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JCisxRjlGOzFGOUY7MDM5NyAwMzE0IDAzNDIgMDM0NTsxRjlGOzAzOTcgMDMxNCAwMzQyIDAzNDU7ICMgKOG+nzsg4b6fOyDOl+KXjMyU4peMzYLil4zNhTsg4b6fOyDOl+KXjMyU4peMzYLil4zNhTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JCisxRkEwOzFGQTA7MDNDOSAwMzEzIDAzNDU7MUZBMDswM0M5IDAzMTMgMDM0NTsgIyAo4b6gOyDhvqA7IM+J4peMzJPil4zNhTsg4b6gOyDPieKXjMyT4peMzYU7ICkgR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFlQT0dFR1JBTU1FTkkKKzFGQTE7MUZBMTswM0M5IDAzMTQgMDM0NTsxRkExOzAzQzkgMDMxNCAwMzQ1OyAjICjhvqE7IOG+oTsgz4nil4zMlOKXjM2FOyDhvqE7IM+J4peMzJTil4zNhTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUZBMjsxRkEyOzAzQzkgMDMxMyAwMzAwIDAzNDU7MUZBMjswM0M5IDAzMTMgMDMwMCAwMzQ1OyAjICjhvqI7IOG+ojsgz4nil4zMk+KXjMyA4peMzYU7IOG+ojsgz4nil4zMk+KXjMyA4peMzYU7ICkgR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JCisxRkEzOzFGQTM7MDNDOSAwMzE0IDAzMDAgMDM0NTsxRkEzOzAzQzkgMDMxNCAwMzAwIDAzNDU7ICMgKOG+ozsg4b6jOyDPieKXjMyU4peMzIDil4zNhTsg4b6jOyDPieKXjMyU4peMzIDil4zNhTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGQTQ7MUZBNDswM0M5IDAzMTMgMDMwMSAwMzQ1OzFGQTQ7MDNDOSAwMzEzIDAzMDEgMDM0NTsgIyAo4b6kOyDhvqQ7IM+J4peMzJPil4zMgeKXjM2FOyDhvqQ7IM+J4peMzJPil4zMgeKXjM2FOyApIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JCisxRkE1OzFGQTU7MDNDOSAwMzE0IDAzMDEgMDM0NTsxRkE1OzAzQzkgMDMxNCAwMzAxIDAzNDU7ICMgKOG+pTsg4b6lOyDPieKXjMyU4peMzIHil4zNhTsg4b6lOyDPieKXjMyU4peMzIHil4zNhTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUZBNjsxRkE2OzAzQzkgMDMxMyAwMzQyIDAzNDU7MUZBNjswM0M5IDAzMTMgMDM0MiAwMzQ1OyAjICjhvqY7IOG+pjsgz4nil4zMk+KXjM2C4peMzYU7IOG+pjsgz4nil4zMk+KXjM2C4peMzYU7ICkgR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JCisxRkE3OzFGQTc7MDNDOSAwMzE0IDAzNDIgMDM0NTsxRkE3OzAzQzkgMDMxNCAwMzQyIDAzNDU7ICMgKOG+pzsg4b6nOyDPieKXjMyU4peMzYLil4zNhTsg4b6nOyDPieKXjMyU4peMzYLil4zNhTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkkKKzFGQTg7MUZBODswM0E5IDAzMTMgMDM0NTsxRkE4OzAzQTkgMDMxMyAwMzQ1OyAjICjhvqg7IOG+qDsgzqnil4zMk+KXjM2FOyDhvqg7IM6p4peMzJPil4zNhTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBQUk9TR0VHUkFNTUVOSQorMUZBOTsxRkE5OzAzQTkgMDMxNCAwMzQ1OzFGQTk7MDNBOSAwMzE0IDAzNDU7ICMgKOG+qTsg4b6pOyDOqeKXjMyU4peMzYU7IOG+qTsgzqnil4zMlOKXjM2FOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRkFBOzFGQUE7MDNBOSAwMzEzIDAzMDAgMDM0NTsxRkFBOzAzQTkgMDMxMyAwMzAwIDAzNDU7ICMgKOG+qjsg4b6qOyDOqeKXjMyT4peMzIDil4zNhTsg4b6qOyDOqeKXjMyT4peMzIDil4zNhTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGQUI7MUZBQjswM0E5IDAzMTQgMDMwMCAwMzQ1OzFGQUI7MDNBOSAwMzE0IDAzMDAgMDM0NTsgIyAo4b6rOyDhvqs7IM6p4peMzJTil4zMgOKXjM2FOyDhvqs7IM6p4peMzJTil4zMgOKXjM2FOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSQorMUZBQzsxRkFDOzAzQTkgMDMxMyAwMzAxIDAzNDU7MUZBQzswM0E5IDAzMTMgMDMwMSAwMzQ1OyAjICjhvqw7IOG+rDsgzqnil4zMk+KXjMyB4peMzYU7IOG+rDsgzqnil4zMk+KXjMyB4peMzYU7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGQUQ7MUZBRDswM0E5IDAzMTQgMDMwMSAwMzQ1OzFGQUQ7MDNBOSAwMzE0IDAzMDEgMDM0NTsgIyAo4b6tOyDhvq07IM6p4peMzJTil4zMgeKXjM2FOyDhvq07IM6p4peMzJTil4zMgeKXjM2FOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRkFFOzFGQUU7MDNBOSAwMzEzIDAzNDIgMDM0NTsxRkFFOzAzQTkgMDMxMyAwMzQyIDAzNDU7ICMgKOG+rjsg4b6uOyDOqeKXjMyT4peMzYLil4zNhTsg4b6uOyDOqeKXjMyT4peMzYLil4zNhTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGQUY7MUZBRjswM0E5IDAzMTQgMDM0MiAwMzQ1OzFGQUY7MDNBOSAwMzE0IDAzNDIgMDM0NTsgIyAo4b6vOyDhvq87IM6p4peMzJTil4zNguKXjM2FOyDhvq87IM6p4peMzJTil4zNguKXjM2FOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBQUk9TR0VHUkFNTUVOSQorMUZCMDsxRkIwOzAzQjEgMDMwNjsxRkIwOzAzQjEgMDMwNjsgIyAo4b6wOyDhvrA7IM6x4peMzIY7IOG+sDsgzrHil4zMhjsgKSBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBWUkFDSFkKKzFGQjE7MUZCMTswM0IxIDAzMDQ7MUZCMTswM0IxIDAzMDQ7ICMgKOG+sTsg4b6xOyDOseKXjMyEOyDhvrE7IM6x4peMzIQ7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggTUFDUk9OCisxRkIyOzFGQjI7MDNCMSAwMzAwIDAzNDU7MUZCMjswM0IxIDAzMDAgMDM0NTsgIyAo4b6yOyDhvrI7IM6x4peMzIDil4zNhTsg4b6yOyDOseKXjMyA4peMzYU7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGQjM7MUZCMzswM0IxIDAzNDU7MUZCMzswM0IxIDAzNDU7ICMgKOG+szsg4b6zOyDOseKXjM2FOyDhvrM7IM6x4peMzYU7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggWVBPR0VHUkFNTUVOSQorMUZCNDsxRkI0OzAzQjEgMDMwMSAwMzQ1OzFGQjQ7MDNCMSAwMzAxIDAzNDU7ICMgKOG+tDsg4b60OyDOseKXjMyB4peMzYU7IOG+tDsgzrHil4zMgeKXjM2FOyApIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGQjY7MUZCNjswM0IxIDAzNDI7MUZCNjswM0IxIDAzNDI7ICMgKOG+tjsg4b62OyDOseKXjM2COyDhvrY7IM6x4peMzYI7ICkgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUEVSSVNQT01FTkkKKzFGQjc7MUZCNzswM0IxIDAzNDIgMDM0NTsxRkI3OzAzQjEgMDM0MiAwMzQ1OyAjICjhvrc7IOG+tzsgzrHil4zNguKXjM2FOyDhvrc7IM6x4peMzYLil4zNhTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUZCODsxRkI4OzAzOTEgMDMwNjsxRkI4OzAzOTEgMDMwNjsgIyAo4b64OyDhvrg7IM6R4peMzIY7IOG+uDsgzpHil4zMhjsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFZSQUNIWQorMUZCOTsxRkI5OzAzOTEgMDMwNDsxRkI5OzAzOTEgMDMwNDsgIyAo4b65OyDhvrk7IM6R4peMzIQ7IOG+uTsgzpHil4zMhDsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIE1BQ1JPTgorMUZCQTsxRkJBOzAzOTEgMDMwMDsxRkJBOzAzOTEgMDMwMDsgIyAo4b66OyDhvro7IM6R4peMzIA7IOG+ujsgzpHil4zMgDsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFZBUklBCisxRkJCOzAzODY7MDM5MSAwMzAxOzAzODY7MDM5MSAwMzAxOyAjICjhvrs7IM6GOyDOkeKXjMyBOyDOhjsgzpHil4zMgTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIE9YSUEKKzFGQkM7MUZCQzswMzkxIDAzNDU7MUZCQzswMzkxIDAzNDU7ICMgKOG+vDsg4b68OyDOkeKXjM2FOyDhvrw7IM6R4peMzYU7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQUk9TR0VHUkFNTUVOSQorMUZCRDsxRkJEOzFGQkQ7MDAyMCAwMzEzOzAwMjAgMDMxMzsgIyAo4b69OyDhvr07IOG+vTsgIOKXjMyTOyAg4peMzJM7ICkgR1JFRUsgS09ST05JUworMUZCRTswM0I5OzAzQjk7MDNCOTswM0I5OyAjICjhvr47IM65OyDOuTsgzrk7IM65OyApIEdSRUVLIFBST1NHRUdSQU1NRU5JCisxRkJGOzFGQkY7MUZCRjswMDIwIDAzMTM7MDAyMCAwMzEzOyAjICjhvr87IOG+vzsg4b6/OyAg4peMzJM7ICDil4zMkzsgKSBHUkVFSyBQU0lMSQorMUZDMDsxRkMwOzFGQzA7MDAyMCAwMzQyOzAwMjAgMDM0MjsgIyAo4b+AOyDhv4A7IOG/gDsgIOKXjM2COyAg4peMzYI7ICkgR1JFRUsgUEVSSVNQT01FTkkKKzFGQzE7MUZDMTswMEE4IDAzNDI7MDAyMCAwMzA4IDAzNDI7MDAyMCAwMzA4IDAzNDI7ICMgKOG/gTsg4b+BOyDCqOKXjM2COyAg4peMzIjil4zNgjsgIOKXjMyI4peMzYI7ICkgR1JFRUsgRElBTFlUSUtBIEFORCBQRVJJU1BPTUVOSQorMUZDMjsxRkMyOzAzQjcgMDMwMCAwMzQ1OzFGQzI7MDNCNyAwMzAwIDAzNDU7ICMgKOG/gjsg4b+COyDOt+KXjMyA4peMzYU7IOG/gjsgzrfil4zMgOKXjM2FOyApIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUZDMzsxRkMzOzAzQjcgMDM0NTsxRkMzOzAzQjcgMDM0NTsgIyAo4b+DOyDhv4M7IM634peMzYU7IOG/gzsgzrfil4zNhTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggWVBPR0VHUkFNTUVOSQorMUZDNDsxRkM0OzAzQjcgMDMwMSAwMzQ1OzFGQzQ7MDNCNyAwMzAxIDAzNDU7ICMgKOG/hDsg4b+EOyDOt+KXjMyB4peMzYU7IOG/hDsgzrfil4zMgeKXjM2FOyApIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBPWElBIEFORCBZUE9HRUdSQU1NRU5JCisxRkM2OzFGQzY7MDNCNyAwMzQyOzFGQzY7MDNCNyAwMzQyOyAjICjhv4Y7IOG/hjsgzrfil4zNgjsg4b+GOyDOt+KXjM2COyApIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQRVJJU1BPTUVOSQorMUZDNzsxRkM3OzAzQjcgMDM0MiAwMzQ1OzFGQzc7MDNCNyAwMzQyIDAzNDU7ICMgKOG/hzsg4b+HOyDOt+KXjM2C4peMzYU7IOG/hzsgzrfil4zNguKXjM2FOyApIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUZDODsxRkM4OzAzOTUgMDMwMDsxRkM4OzAzOTUgMDMwMDsgIyAo4b+IOyDhv4g7IM6V4peMzIA7IOG/iDsgzpXil4zMgDsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggVkFSSUEKKzFGQzk7MDM4ODswMzk1IDAzMDE7MDM4ODswMzk1IDAzMDE7ICMgKOG/iTsgzog7IM6V4peMzIE7IM6IOyDOleKXjMyBOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBPWElBCisxRkNBOzFGQ0E7MDM5NyAwMzAwOzFGQ0E7MDM5NyAwMzAwOyAjICjhv4o7IOG/ijsgzpfil4zMgDsg4b+KOyDOl+KXjMyAOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFZBUklBCisxRkNCOzAzODk7MDM5NyAwMzAxOzAzODk7MDM5NyAwMzAxOyAjICjhv4s7IM6JOyDOl+KXjMyBOyDOiTsgzpfil4zMgTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBPWElBCisxRkNDOzFGQ0M7MDM5NyAwMzQ1OzFGQ0M7MDM5NyAwMzQ1OyAjICjhv4w7IOG/jDsgzpfil4zNhTsg4b+MOyDOl+KXjM2FOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBST1NHRUdSQU1NRU5JCisxRkNEOzFGQ0Q7MUZCRiAwMzAwOzAwMjAgMDMxMyAwMzAwOzAwMjAgMDMxMyAwMzAwOyAjICjhv407IOG/jTsg4b6/4peMzIA7ICDil4zMk+KXjMyAOyAg4peMzJPil4zMgDsgKSBHUkVFSyBQU0lMSSBBTkQgVkFSSUEKKzFGQ0U7MUZDRTsxRkJGIDAzMDE7MDAyMCAwMzEzIDAzMDE7MDAyMCAwMzEzIDAzMDE7ICMgKOG/jjsg4b+OOyDhvr/il4zMgTsgIOKXjMyT4peMzIE7ICDil4zMk+KXjMyBOyApIEdSRUVLIFBTSUxJIEFORCBPWElBCisxRkNGOzFGQ0Y7MUZCRiAwMzQyOzAwMjAgMDMxMyAwMzQyOzAwMjAgMDMxMyAwMzQyOyAjICjhv487IOG/jzsg4b6/4peMzYI7ICDil4zMk+KXjM2COyAg4peMzJPil4zNgjsgKSBHUkVFSyBQU0lMSSBBTkQgUEVSSVNQT01FTkkKKzFGRDA7MUZEMDswM0I5IDAzMDY7MUZEMDswM0I5IDAzMDY7ICMgKOG/kDsg4b+QOyDOueKXjMyGOyDhv5A7IM654peMzIY7ICkgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBWUkFDSFkKKzFGRDE7MUZEMTswM0I5IDAzMDQ7MUZEMTswM0I5IDAzMDQ7ICMgKOG/kTsg4b+ROyDOueKXjMyEOyDhv5E7IM654peMzIQ7ICkgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBNQUNST04KKzFGRDI7MUZEMjswM0I5IDAzMDggMDMwMDsxRkQyOzAzQjkgMDMwOCAwMzAwOyAjICjhv5I7IOG/kjsgzrnil4zMiOKXjMyAOyDhv5I7IM654peMzIjil4zMgDsgKSBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgVkFSSUEKKzFGRDM7MDM5MDswM0I5IDAzMDggMDMwMTswMzkwOzAzQjkgMDMwOCAwMzAxOyAjICjhv5M7IM6QOyDOueKXjMyI4peMzIE7IM6QOyDOueKXjMyI4peMzIE7ICkgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EgQU5EIE9YSUEKKzFGRDY7MUZENjswM0I5IDAzNDI7MUZENjswM0I5IDAzNDI7ICMgKOG/ljsg4b+WOyDOueKXjM2COyDhv5Y7IM654peMzYI7ICkgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBQRVJJU1BPTUVOSQorMUZENzsxRkQ3OzAzQjkgMDMwOCAwMzQyOzFGRDc7MDNCOSAwMzA4IDAzNDI7ICMgKOG/lzsg4b+XOyDOueKXjMyI4peMzYI7IOG/lzsgzrnil4zMiOKXjM2COyApIEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBIEFORCBQRVJJU1BPTUVOSQorMUZEODsxRkQ4OzAzOTkgMDMwNjsxRkQ4OzAzOTkgMDMwNjsgIyAo4b+YOyDhv5g7IM6Z4peMzIY7IOG/mDsgzpnil4zMhjsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggVlJBQ0hZCisxRkQ5OzFGRDk7MDM5OSAwMzA0OzFGRDk7MDM5OSAwMzA0OyAjICjhv5k7IOG/mTsgzpnil4zMhDsg4b+ZOyDOmeKXjMyEOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBNQUNST04KKzFGREE7MUZEQTswMzk5IDAzMDA7MUZEQTswMzk5IDAzMDA7ICMgKOG/mjsg4b+aOyDOmeKXjMyAOyDhv5o7IM6Z4peMzIA7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFZBUklBCisxRkRCOzAzOEE7MDM5OSAwMzAxOzAzOEE7MDM5OSAwMzAxOyAjICjhv5s7IM6KOyDOmeKXjMyBOyDOijsgzpnil4zMgTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggT1hJQQorMUZERDsxRkREOzFGRkUgMDMwMDswMDIwIDAzMTQgMDMwMDswMDIwIDAzMTQgMDMwMDsgIyAo4b+dOyDhv507IOG/vuKXjMyAOyAg4peMzJTil4zMgDsgIOKXjMyU4peMzIA7ICkgR1JFRUsgREFTSUEgQU5EIFZBUklBCisxRkRFOzFGREU7MUZGRSAwMzAxOzAwMjAgMDMxNCAwMzAxOzAwMjAgMDMxNCAwMzAxOyAjICjhv547IOG/njsg4b++4peMzIE7ICDil4zMlOKXjMyBOyAg4peMzJTil4zMgTsgKSBHUkVFSyBEQVNJQSBBTkQgT1hJQQorMUZERjsxRkRGOzFGRkUgMDM0MjswMDIwIDAzMTQgMDM0MjswMDIwIDAzMTQgMDM0MjsgIyAo4b+fOyDhv587IOG/vuKXjM2COyAg4peMzJTil4zNgjsgIOKXjMyU4peMzYI7ICkgR1JFRUsgREFTSUEgQU5EIFBFUklTUE9NRU5JCisxRkUwOzFGRTA7MDNDNSAwMzA2OzFGRTA7MDNDNSAwMzA2OyAjICjhv6A7IOG/oDsgz4Xil4zMhjsg4b+gOyDPheKXjMyGOyApIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggVlJBQ0hZCisxRkUxOzFGRTE7MDNDNSAwMzA0OzFGRTE7MDNDNSAwMzA0OyAjICjhv6E7IOG/oTsgz4Xil4zMhDsg4b+hOyDPheKXjMyEOyApIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggTUFDUk9OCisxRkUyOzFGRTI7MDNDNSAwMzA4IDAzMDA7MUZFMjswM0M1IDAzMDggMDMwMDsgIyAo4b+iOyDhv6I7IM+F4peMzIjil4zMgDsg4b+iOyDPheKXjMyI4peMzIA7ICkgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EgQU5EIFZBUklBCisxRkUzOzAzQjA7MDNDNSAwMzA4IDAzMDE7MDNCMDswM0M1IDAzMDggMDMwMTsgIyAo4b+jOyDOsDsgz4Xil4zMiOKXjMyBOyDOsDsgz4Xil4zMiOKXjMyBOyApIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBIEFORCBPWElBCisxRkU0OzFGRTQ7MDNDMSAwMzEzOzFGRTQ7MDNDMSAwMzEzOyAjICjhv6Q7IOG/pDsgz4Hil4zMkzsg4b+kOyDPgeKXjMyTOyApIEdSRUVLIFNNQUxMIExFVFRFUiBSSE8gV0lUSCBQU0lMSQorMUZFNTsxRkU1OzAzQzEgMDMxNDsxRkU1OzAzQzEgMDMxNDsgIyAo4b+lOyDhv6U7IM+B4peMzJQ7IOG/pTsgz4Hil4zMlDsgKSBHUkVFSyBTTUFMTCBMRVRURVIgUkhPIFdJVEggREFTSUEKKzFGRTY7MUZFNjswM0M1IDAzNDI7MUZFNjswM0M1IDAzNDI7ICMgKOG/pjsg4b+mOyDPheKXjM2COyDhv6Y7IM+F4peMzYI7ICkgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBQRVJJU1BPTUVOSQorMUZFNzsxRkU3OzAzQzUgMDMwOCAwMzQyOzFGRTc7MDNDNSAwMzA4IDAzNDI7ICMgKOG/pzsg4b+nOyDPheKXjMyI4peMzYI7IOG/pzsgz4Xil4zMiOKXjM2COyApIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBIEFORCBQRVJJU1BPTUVOSQorMUZFODsxRkU4OzAzQTUgMDMwNjsxRkU4OzAzQTUgMDMwNjsgIyAo4b+oOyDhv6g7IM6l4peMzIY7IOG/qDsgzqXil4zMhjsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggVlJBQ0hZCisxRkU5OzFGRTk7MDNBNSAwMzA0OzFGRTk7MDNBNSAwMzA0OyAjICjhv6k7IOG/qTsgzqXil4zMhDsg4b+pOyDOpeKXjMyEOyApIEdSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBNQUNST04KKzFGRUE7MUZFQTswM0E1IDAzMDA7MUZFQTswM0E1IDAzMDA7ICMgKOG/qjsg4b+qOyDOpeKXjMyAOyDhv6o7IM6l4peMzIA7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIFZBUklBCisxRkVCOzAzOEU7MDNBNSAwMzAxOzAzOEU7MDNBNSAwMzAxOyAjICjhv6s7IM6OOyDOpeKXjMyBOyDOjjsgzqXil4zMgTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggT1hJQQorMUZFQzsxRkVDOzAzQTEgMDMxNDsxRkVDOzAzQTEgMDMxNDsgIyAo4b+sOyDhv6w7IM6h4peMzJQ7IOG/rDsgzqHil4zMlDsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBSSE8gV0lUSCBEQVNJQQorMUZFRDsxRkVEOzAwQTggMDMwMDswMDIwIDAzMDggMDMwMDswMDIwIDAzMDggMDMwMDsgIyAo4b+tOyDhv607IMKo4peMzIA7ICDil4zMiOKXjMyAOyAg4peMzIjil4zMgDsgKSBHUkVFSyBESUFMWVRJS0EgQU5EIFZBUklBCisxRkVFOzAzODU7MDBBOCAwMzAxOzAwMjAgMDMwOCAwMzAxOzAwMjAgMDMwOCAwMzAxOyAjICjhv647IM6FOyDCqOKXjMyBOyAg4peMzIjil4zMgTsgIOKXjMyI4peMzIE7ICkgR1JFRUsgRElBTFlUSUtBIEFORCBPWElBCisxRkVGOzAwNjA7MDA2MDswMDYwOzAwNjA7ICMgKOG/rzsgYDsgYDsgYDsgYDsgKSBHUkVFSyBWQVJJQQorMUZGMjsxRkYyOzAzQzkgMDMwMCAwMzQ1OzFGRjI7MDNDOSAwMzAwIDAzNDU7ICMgKOG/sjsg4b+yOyDPieKXjMyA4peMzYU7IOG/sjsgz4nil4zMgOKXjM2FOyApIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JCisxRkYzOzFGRjM7MDNDOSAwMzQ1OzFGRjM7MDNDOSAwMzQ1OyAjICjhv7M7IOG/szsgz4nil4zNhTsg4b+zOyDPieKXjM2FOyApIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFlQT0dFR1JBTU1FTkkKKzFGRjQ7MUZGNDswM0M5IDAzMDEgMDM0NTsxRkY0OzAzQzkgMDMwMSAwMzQ1OyAjICjhv7Q7IOG/tDsgz4nil4zMgeKXjM2FOyDhv7Q7IM+J4peMzIHil4zNhTsgKSBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBPWElBIEFORCBZUE9HRUdSQU1NRU5JCisxRkY2OzFGRjY7MDNDOSAwMzQyOzFGRjY7MDNDOSAwMzQyOyAjICjhv7Y7IOG/tjsgz4nil4zNgjsg4b+2OyDPieKXjM2COyApIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBFUklTUE9NRU5JCisxRkY3OzFGRjc7MDNDOSAwMzQyIDAzNDU7MUZGNzswM0M5IDAzNDIgMDM0NTsgIyAo4b+3OyDhv7c7IM+J4peMzYLil4zNhTsg4b+3OyDPieKXjM2C4peMzYU7ICkgR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkkKKzFGRjg7MUZGODswMzlGIDAzMDA7MUZGODswMzlGIDAzMDA7ICMgKOG/uDsg4b+4OyDOn+KXjMyAOyDhv7g7IM6f4peMzIA7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIFZBUklBCisxRkY5OzAzOEM7MDM5RiAwMzAxOzAzOEM7MDM5RiAwMzAxOyAjICjhv7k7IM6MOyDOn+KXjMyBOyDOjDsgzp/il4zMgTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggT1hJQQorMUZGQTsxRkZBOzAzQTkgMDMwMDsxRkZBOzAzQTkgMDMwMDsgIyAo4b+6OyDhv7o7IM6p4peMzIA7IOG/ujsgzqnil4zMgDsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFZBUklBCisxRkZCOzAzOEY7MDNBOSAwMzAxOzAzOEY7MDNBOSAwMzAxOyAjICjhv7s7IM6POyDOqeKXjMyBOyDOjzsgzqnil4zMgTsgKSBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIE9YSUEKKzFGRkM7MUZGQzswM0E5IDAzNDU7MUZGQzswM0E5IDAzNDU7ICMgKOG/vDsg4b+8OyDOqeKXjM2FOyDhv7w7IM6p4peMzYU7ICkgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQUk9TR0VHUkFNTUVOSQorMUZGRDswMEI0OzAwQjQ7MDAyMCAwMzAxOzAwMjAgMDMwMTsgIyAo4b+9OyDCtDsgwrQ7ICDil4zMgTsgIOKXjMyBOyApIEdSRUVLIE9YSUEKKzFGRkU7MUZGRTsxRkZFOzAwMjAgMDMxNDswMDIwIDAzMTQ7ICMgKOG/vjsg4b++OyDhv747ICDil4zMlDsgIOKXjMyUOyApIEdSRUVLIERBU0lBCisyMDAwOzIwMDI7MjAwMjswMDIwOzAwMjA7ICMgKOKAgDsg4oCCOyDigII7ICA7ICA7ICkgRU4gUVVBRAorMjAwMTsyMDAzOzIwMDM7MDAyMDswMDIwOyAjICjigIE7IOKAgzsg4oCDOyAgOyAgOyApIEVNIFFVQUQKKzIwMDI7MjAwMjsyMDAyOzAwMjA7MDAyMDsgIyAo4oCCOyDigII7IOKAgjsgIDsgIDsgKSBFTiBTUEFDRQorMjAwMzsyMDAzOzIwMDM7MDAyMDswMDIwOyAjICjigIM7IOKAgzsg4oCDOyAgOyAgOyApIEVNIFNQQUNFCisyMDA0OzIwMDQ7MjAwNDswMDIwOzAwMjA7ICMgKOKAhDsg4oCEOyDigIQ7ICA7ICA7ICkgVEhSRUUtUEVSLUVNIFNQQUNFCisyMDA1OzIwMDU7MjAwNTswMDIwOzAwMjA7ICMgKOKAhTsg4oCFOyDigIU7ICA7ICA7ICkgRk9VUi1QRVItRU0gU1BBQ0UKKzIwMDY7MjAwNjsyMDA2OzAwMjA7MDAyMDsgIyAo4oCGOyDigIY7IOKAhjsgIDsgIDsgKSBTSVgtUEVSLUVNIFNQQUNFCisyMDA3OzIwMDc7MjAwNzswMDIwOzAwMjA7ICMgKOKAhzsg4oCHOyDigIc7ICA7ICA7ICkgRklHVVJFIFNQQUNFCisyMDA4OzIwMDg7MjAwODswMDIwOzAwMjA7ICMgKOKAiDsg4oCIOyDigIg7ICA7ICA7ICkgUFVOQ1RVQVRJT04gU1BBQ0UKKzIwMDk7MjAwOTsyMDA5OzAwMjA7MDAyMDsgIyAo4oCJOyDigIk7IOKAiTsgIDsgIDsgKSBUSElOIFNQQUNFCisyMDBBOzIwMEE7MjAwQTswMDIwOzAwMjA7ICMgKOKAijsg4oCKOyDigIo7ICA7ICA7ICkgSEFJUiBTUEFDRQorMjAxMTsyMDExOzIwMTE7MjAxMDsyMDEwOyAjICjigJE7IOKAkTsg4oCROyDigJA7IOKAkDsgKSBOT04tQlJFQUtJTkcgSFlQSEVOCisyMDE3OzIwMTc7MjAxNzswMDIwIDAzMzM7MDAyMCAwMzMzOyAjICjigJc7IOKAlzsg4oCXOyAg4peMzLM7ICDil4zMszsgKSBET1VCTEUgTE9XIExJTkUKKzIwMjQ7MjAyNDsyMDI0OzAwMkU7MDAyRTsgIyAo4oCkOyDigKQ7IOKApDsgLjsgLjsgKSBPTkUgRE9UIExFQURFUgorMjAyNTsyMDI1OzIwMjU7MDAyRSAwMDJFOzAwMkUgMDAyRTsgIyAo4oClOyDigKU7IOKApTsgLi47IC4uOyApIFRXTyBET1QgTEVBREVSCisyMDI2OzIwMjY7MjAyNjswMDJFIDAwMkUgMDAyRTswMDJFIDAwMkUgMDAyRTsgIyAo4oCmOyDigKY7IOKApjsgLi4uOyAuLi47ICkgSE9SSVpPTlRBTCBFTExJUFNJUworMjAyRjsyMDJGOzIwMkY7MDAyMDswMDIwOyAjICjigK87IOKArzsg4oCvOyAgOyAgOyApIE5BUlJPVyBOTy1CUkVBSyBTUEFDRQorMjAzMzsyMDMzOzIwMzM7MjAzMiAyMDMyOzIwMzIgMjAzMjsgIyAo4oCzOyDigLM7IOKAszsg4oCy4oCyOyDigLLigLI7ICkgRE9VQkxFIFBSSU1FCisyMDM0OzIwMzQ7MjAzNDsyMDMyIDIwMzIgMjAzMjsyMDMyIDIwMzIgMjAzMjsgIyAo4oC0OyDigLQ7IOKAtDsg4oCy4oCy4oCyOyDigLLigLLigLI7ICkgVFJJUExFIFBSSU1FCisyMDM2OzIwMzY7MjAzNjsyMDM1IDIwMzU7MjAzNSAyMDM1OyAjICjigLY7IOKAtjsg4oC2OyDigLXigLU7IOKAteKAtTsgKSBSRVZFUlNFRCBET1VCTEUgUFJJTUUKKzIwMzc7MjAzNzsyMDM3OzIwMzUgMjAzNSAyMDM1OzIwMzUgMjAzNSAyMDM1OyAjICjigLc7IOKAtzsg4oC3OyDigLXigLXigLU7IOKAteKAteKAtTsgKSBSRVZFUlNFRCBUUklQTEUgUFJJTUUKKzIwM0M7MjAzQzsyMDNDOzAwMjEgMDAyMTswMDIxIDAwMjE7ICMgKOKAvDsg4oC8OyDigLw7ICEhOyAhITsgKSBET1VCTEUgRVhDTEFNQVRJT04gTUFSSworMjAzRTsyMDNFOzIwM0U7MDAyMCAwMzA1OzAwMjAgMDMwNTsgIyAo4oC+OyDigL47IOKAvjsgIOKXjMyFOyAg4peMzIU7ICkgT1ZFUkxJTkUKKzIwNDg7MjA0ODsyMDQ4OzAwM0YgMDAyMTswMDNGIDAwMjE7ICMgKOKBiDsg4oGIOyDigYg7ID8hOyA/ITsgKSBRVUVTVElPTiBFWENMQU1BVElPTiBNQVJLCisyMDQ5OzIwNDk7MjA0OTswMDIxIDAwM0Y7MDAyMSAwMDNGOyAjICjigYk7IOKBiTsg4oGJOyAhPzsgIT87ICkgRVhDTEFNQVRJT04gUVVFU1RJT04gTUFSSworMjA3MDsyMDcwOzIwNzA7MDAzMDswMDMwOyAjICjigbA7IOKBsDsg4oGwOyAwOyAwOyApIFNVUEVSU0NSSVBUIFpFUk8KKzIwNzQ7MjA3NDsyMDc0OzAwMzQ7MDAzNDsgIyAo4oG0OyDigbQ7IOKBtDsgNDsgNDsgKSBTVVBFUlNDUklQVCBGT1VSCisyMDc1OzIwNzU7MjA3NTswMDM1OzAwMzU7ICMgKOKBtTsg4oG1OyDigbU7IDU7IDU7ICkgU1VQRVJTQ1JJUFQgRklWRQorMjA3NjsyMDc2OzIwNzY7MDAzNjswMDM2OyAjICjigbY7IOKBtjsg4oG2OyA2OyA2OyApIFNVUEVSU0NSSVBUIFNJWAorMjA3NzsyMDc3OzIwNzc7MDAzNzswMDM3OyAjICjigbc7IOKBtzsg4oG3OyA3OyA3OyApIFNVUEVSU0NSSVBUIFNFVkVOCisyMDc4OzIwNzg7MjA3ODswMDM4OzAwMzg7ICMgKOKBuDsg4oG4OyDigbg7IDg7IDg7ICkgU1VQRVJTQ1JJUFQgRUlHSFQKKzIwNzk7MjA3OTsyMDc5OzAwMzk7MDAzOTsgIyAo4oG5OyDigbk7IOKBuTsgOTsgOTsgKSBTVVBFUlNDUklQVCBOSU5FCisyMDdBOzIwN0E7MjA3QTswMDJCOzAwMkI7ICMgKOKBujsg4oG6OyDigbo7ICs7ICs7ICkgU1VQRVJTQ1JJUFQgUExVUyBTSUdOCisyMDdCOzIwN0I7MjA3QjsyMjEyOzIyMTI7ICMgKOKBuzsg4oG7OyDigbs7IOKIkjsg4oiSOyApIFNVUEVSU0NSSVBUIE1JTlVTCisyMDdDOzIwN0M7MjA3QzswMDNEOzAwM0Q7ICMgKOKBvDsg4oG8OyDigbw7ID07ID07ICkgU1VQRVJTQ1JJUFQgRVFVQUxTIFNJR04KKzIwN0Q7MjA3RDsyMDdEOzAwMjg7MDAyODsgIyAo4oG9OyDigb07IOKBvTsgKDsgKDsgKSBTVVBFUlNDUklQVCBMRUZUIFBBUkVOVEhFU0lTCisyMDdFOzIwN0U7MjA3RTswMDI5OzAwMjk7ICMgKOKBvjsg4oG+OyDigb47ICk7ICk7ICkgU1VQRVJTQ1JJUFQgUklHSFQgUEFSRU5USEVTSVMKKzIwN0Y7MjA3RjsyMDdGOzAwNkU7MDA2RTsgIyAo4oG/OyDigb87IOKBvzsgbjsgbjsgKSBTVVBFUlNDUklQVCBMQVRJTiBTTUFMTCBMRVRURVIgTgorMjA4MDsyMDgwOzIwODA7MDAzMDswMDMwOyAjICjigoA7IOKCgDsg4oKAOyAwOyAwOyApIFNVQlNDUklQVCBaRVJPCisyMDgxOzIwODE7MjA4MTswMDMxOzAwMzE7ICMgKOKCgTsg4oKBOyDigoE7IDE7IDE7ICkgU1VCU0NSSVBUIE9ORQorMjA4MjsyMDgyOzIwODI7MDAzMjswMDMyOyAjICjigoI7IOKCgjsg4oKCOyAyOyAyOyApIFNVQlNDUklQVCBUV08KKzIwODM7MjA4MzsyMDgzOzAwMzM7MDAzMzsgIyAo4oKDOyDigoM7IOKCgzsgMzsgMzsgKSBTVUJTQ1JJUFQgVEhSRUUKKzIwODQ7MjA4NDsyMDg0OzAwMzQ7MDAzNDsgIyAo4oKEOyDigoQ7IOKChDsgNDsgNDsgKSBTVUJTQ1JJUFQgRk9VUgorMjA4NTsyMDg1OzIwODU7MDAzNTswMDM1OyAjICjigoU7IOKChTsg4oKFOyA1OyA1OyApIFNVQlNDUklQVCBGSVZFCisyMDg2OzIwODY7MjA4NjswMDM2OzAwMzY7ICMgKOKChjsg4oKGOyDigoY7IDY7IDY7ICkgU1VCU0NSSVBUIFNJWAorMjA4NzsyMDg3OzIwODc7MDAzNzswMDM3OyAjICjigoc7IOKChzsg4oKHOyA3OyA3OyApIFNVQlNDUklQVCBTRVZFTgorMjA4ODsyMDg4OzIwODg7MDAzODswMDM4OyAjICjigog7IOKCiDsg4oKIOyA4OyA4OyApIFNVQlNDUklQVCBFSUdIVAorMjA4OTsyMDg5OzIwODk7MDAzOTswMDM5OyAjICjigok7IOKCiTsg4oKJOyA5OyA5OyApIFNVQlNDUklQVCBOSU5FCisyMDhBOzIwOEE7MjA4QTswMDJCOzAwMkI7ICMgKOKCijsg4oKKOyDigoo7ICs7ICs7ICkgU1VCU0NSSVBUIFBMVVMgU0lHTgorMjA4QjsyMDhCOzIwOEI7MjIxMjsyMjEyOyAjICjigos7IOKCizsg4oKLOyDiiJI7IOKIkjsgKSBTVUJTQ1JJUFQgTUlOVVMKKzIwOEM7MjA4QzsyMDhDOzAwM0Q7MDAzRDsgIyAo4oKMOyDigow7IOKCjDsgPTsgPTsgKSBTVUJTQ1JJUFQgRVFVQUxTIFNJR04KKzIwOEQ7MjA4RDsyMDhEOzAwMjg7MDAyODsgIyAo4oKNOyDigo07IOKCjTsgKDsgKDsgKSBTVUJTQ1JJUFQgTEVGVCBQQVJFTlRIRVNJUworMjA4RTsyMDhFOzIwOEU7MDAyOTswMDI5OyAjICjigo47IOKCjjsg4oKOOyApOyApOyApIFNVQlNDUklQVCBSSUdIVCBQQVJFTlRIRVNJUworMjBBODsyMEE4OzIwQTg7MDA1MiAwMDczOzAwNTIgMDA3MzsgIyAo4oKoOyDigqg7IOKCqDsgUnM7IFJzOyApIFJVUEVFIFNJR04KKzIxMDA7MjEwMDsyMTAwOzAwNjEgMDAyRiAwMDYzOzAwNjEgMDAyRiAwMDYzOyAjICjihIA7IOKEgDsg4oSAOyBhL2M7IGEvYzsgKSBBQ0NPVU5UIE9GCisyMTAxOzIxMDE7MjEwMTswMDYxIDAwMkYgMDA3MzswMDYxIDAwMkYgMDA3MzsgIyAo4oSBOyDihIE7IOKEgTsgYS9zOyBhL3M7ICkgQUREUkVTU0VEIFRPIFRIRSBTVUJKRUNUCisyMTAyOzIxMDI7MjEwMjswMDQzOzAwNDM7ICMgKOKEgjsg4oSCOyDihII7IEM7IEM7ICkgRE9VQkxFLVNUUlVDSyBDQVBJVEFMIEMKKzIxMDM7MjEwMzsyMTAzOzAwQjAgMDA0MzswMEIwIDAwNDM7ICMgKOKEgzsg4oSDOyDihIM7IMKwQzsgwrBDOyApIERFR1JFRSBDRUxTSVVTCisyMTA1OzIxMDU7MjEwNTswMDYzIDAwMkYgMDA2RjswMDYzIDAwMkYgMDA2RjsgIyAo4oSFOyDihIU7IOKEhTsgYy9vOyBjL287ICkgQ0FSRSBPRgorMjEwNjsyMTA2OzIxMDY7MDA2MyAwMDJGIDAwNzU7MDA2MyAwMDJGIDAwNzU7ICMgKOKEhjsg4oSGOyDihIY7IGMvdTsgYy91OyApIENBREEgVU5BCisyMTA3OzIxMDc7MjEwNzswMTkwOzAxOTA7ICMgKOKEhzsg4oSHOyDihIc7IMaQOyDGkDsgKSBFVUxFUiBDT05TVEFOVAorMjEwOTsyMTA5OzIxMDk7MDBCMCAwMDQ2OzAwQjAgMDA0NjsgIyAo4oSJOyDihIk7IOKEiTsgwrBGOyDCsEY7ICkgREVHUkVFIEZBSFJFTkhFSVQKKzIxMEE7MjEwQTsyMTBBOzAwNjc7MDA2NzsgIyAo4oSKOyDihIo7IOKEijsgZzsgZzsgKSBTQ1JJUFQgU01BTEwgRworMjEwQjsyMTBCOzIxMEI7MDA0ODswMDQ4OyAjICjihIs7IOKEizsg4oSLOyBIOyBIOyApIFNDUklQVCBDQVBJVEFMIEgKKzIxMEM7MjEwQzsyMTBDOzAwNDg7MDA0ODsgIyAo4oSMOyDihIw7IOKEjDsgSDsgSDsgKSBCTEFDSy1MRVRURVIgQ0FQSVRBTCBICisyMTBEOzIxMEQ7MjEwRDswMDQ4OzAwNDg7ICMgKOKEjTsg4oSNOyDihI07IEg7IEg7ICkgRE9VQkxFLVNUUlVDSyBDQVBJVEFMIEgKKzIxMEU7MjEwRTsyMTBFOzAwNjg7MDA2ODsgIyAo4oSOOyDihI47IOKEjjsgaDsgaDsgKSBQTEFOQ0sgQ09OU1RBTlQKKzIxMEY7MjEwRjsyMTBGOzAxMjc7MDEyNzsgIyAo4oSPOyDihI87IOKEjzsgxKc7IMSnOyApIFBMQU5DSyBDT05TVEFOVCBPVkVSIFRXTyBQSQorMjExMDsyMTEwOzIxMTA7MDA0OTswMDQ5OyAjICjihJA7IOKEkDsg4oSQOyBJOyBJOyApIFNDUklQVCBDQVBJVEFMIEkKKzIxMTE7MjExMTsyMTExOzAwNDk7MDA0OTsgIyAo4oSROyDihJE7IOKEkTsgSTsgSTsgKSBCTEFDSy1MRVRURVIgQ0FQSVRBTCBJCisyMTEyOzIxMTI7MjExMjswMDRDOzAwNEM7ICMgKOKEkjsg4oSSOyDihJI7IEw7IEw7ICkgU0NSSVBUIENBUElUQUwgTAorMjExMzsyMTEzOzIxMTM7MDA2QzswMDZDOyAjICjihJM7IOKEkzsg4oSTOyBsOyBsOyApIFNDUklQVCBTTUFMTCBMCisyMTE1OzIxMTU7MjExNTswMDRFOzAwNEU7ICMgKOKElTsg4oSVOyDihJU7IE47IE47ICkgRE9VQkxFLVNUUlVDSyBDQVBJVEFMIE4KKzIxMTY7MjExNjsyMTE2OzAwNEUgMDA2RjswMDRFIDAwNkY7ICMgKOKEljsg4oSWOyDihJY7IE5vOyBObzsgKSBOVU1FUk8gU0lHTgorMjExOTsyMTE5OzIxMTk7MDA1MDswMDUwOyAjICjihJk7IOKEmTsg4oSZOyBQOyBQOyApIERPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBQCisyMTFBOzIxMUE7MjExQTswMDUxOzAwNTE7ICMgKOKEmjsg4oSaOyDihJo7IFE7IFE7ICkgRE9VQkxFLVNUUlVDSyBDQVBJVEFMIFEKKzIxMUI7MjExQjsyMTFCOzAwNTI7MDA1MjsgIyAo4oSbOyDihJs7IOKEmzsgUjsgUjsgKSBTQ1JJUFQgQ0FQSVRBTCBSCisyMTFDOzIxMUM7MjExQzswMDUyOzAwNTI7ICMgKOKEnDsg4oScOyDihJw7IFI7IFI7ICkgQkxBQ0stTEVUVEVSIENBUElUQUwgUgorMjExRDsyMTFEOzIxMUQ7MDA1MjswMDUyOyAjICjihJ07IOKEnTsg4oSdOyBSOyBSOyApIERPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBSCisyMTIwOzIxMjA7MjEyMDswMDUzIDAwNEQ7MDA1MyAwMDREOyAjICjihKA7IOKEoDsg4oSgOyBTTTsgU007ICkgU0VSVklDRSBNQVJLCisyMTIxOzIxMjE7MjEyMTswMDU0IDAwNDUgMDA0QzswMDU0IDAwNDUgMDA0QzsgIyAo4oShOyDihKE7IOKEoTsgVEVMOyBURUw7ICkgVEVMRVBIT05FIFNJR04KKzIxMjI7MjEyMjsyMTIyOzAwNTQgMDA0RDswMDU0IDAwNEQ7ICMgKOKEojsg4oSiOyDihKI7IFRNOyBUTTsgKSBUUkFERSBNQVJLIFNJR04KKzIxMjQ7MjEyNDsyMTI0OzAwNUE7MDA1QTsgIyAo4oSkOyDihKQ7IOKEpDsgWjsgWjsgKSBET1VCTEUtU1RSVUNLIENBUElUQUwgWgorMjEyNjswM0E5OzAzQTk7MDNBOTswM0E5OyAjICjihKY7IM6pOyDOqTsgzqk7IM6pOyApIE9ITSBTSUdOCisyMTI4OzIxMjg7MjEyODswMDVBOzAwNUE7ICMgKOKEqDsg4oSoOyDihKg7IFo7IFo7ICkgQkxBQ0stTEVUVEVSIENBUElUQUwgWgorMjEyQTswMDRCOzAwNEI7MDA0QjswMDRCOyAjICjihKo7IEs7IEs7IEs7IEs7ICkgS0VMVklOIFNJR04KKzIxMkI7MDBDNTswMDQxIDAzMEE7MDBDNTswMDQxIDAzMEE7ICMgKOKEqzsgw4U7IEHil4zMijsgw4U7IEHil4zMijsgKSBBTkdTVFJPTSBTSUdOCisyMTJDOzIxMkM7MjEyQzswMDQyOzAwNDI7ICMgKOKErDsg4oSsOyDihKw7IEI7IEI7ICkgU0NSSVBUIENBUElUQUwgQgorMjEyRDsyMTJEOzIxMkQ7MDA0MzswMDQzOyAjICjihK07IOKErTsg4oStOyBDOyBDOyApIEJMQUNLLUxFVFRFUiBDQVBJVEFMIEMKKzIxMkY7MjEyRjsyMTJGOzAwNjU7MDA2NTsgIyAo4oSvOyDihK87IOKErzsgZTsgZTsgKSBTQ1JJUFQgU01BTEwgRQorMjEzMDsyMTMwOzIxMzA7MDA0NTswMDQ1OyAjICjihLA7IOKEsDsg4oSwOyBFOyBFOyApIFNDUklQVCBDQVBJVEFMIEUKKzIxMzE7MjEzMTsyMTMxOzAwNDY7MDA0NjsgIyAo4oSxOyDihLE7IOKEsTsgRjsgRjsgKSBTQ1JJUFQgQ0FQSVRBTCBGCisyMTMzOzIxMzM7MjEzMzswMDREOzAwNEQ7ICMgKOKEszsg4oSzOyDihLM7IE07IE07ICkgU0NSSVBUIENBUElUQUwgTQorMjEzNDsyMTM0OzIxMzQ7MDA2RjswMDZGOyAjICjihLQ7IOKEtDsg4oS0OyBvOyBvOyApIFNDUklQVCBTTUFMTCBPCisyMTM1OzIxMzU7MjEzNTswNUQwOzA1RDA7ICMgKOKEtTsg4oS1OyDihLU7INeQOyDXkDsgKSBBTEVGIFNZTUJPTAorMjEzNjsyMTM2OzIxMzY7MDVEMTswNUQxOyAjICjihLY7IOKEtjsg4oS2OyDXkTsg15E7ICkgQkVUIFNZTUJPTAorMjEzNzsyMTM3OzIxMzc7MDVEMjswNUQyOyAjICjihLc7IOKEtzsg4oS3OyDXkjsg15I7ICkgR0lNRUwgU1lNQk9MCisyMTM4OzIxMzg7MjEzODswNUQzOzA1RDM7ICMgKOKEuDsg4oS4OyDihLg7INeTOyDXkzsgKSBEQUxFVCBTWU1CT0wKKzIxMzk7MjEzOTsyMTM5OzAwNjk7MDA2OTsgIyAo4oS5OyDihLk7IOKEuTsgaTsgaTsgKSBJTkZPUk1BVElPTiBTT1VSQ0UKKzIxNTM7MjE1MzsyMTUzOzAwMzEgMjA0NCAwMDMzOzAwMzEgMjA0NCAwMDMzOyAjICjihZM7IOKFkzsg4oWTOyAx4oGEMzsgMeKBhDM7ICkgVlVMR0FSIEZSQUNUSU9OIE9ORSBUSElSRAorMjE1NDsyMTU0OzIxNTQ7MDAzMiAyMDQ0IDAwMzM7MDAzMiAyMDQ0IDAwMzM7ICMgKOKFlDsg4oWUOyDihZQ7IDLigYQzOyAy4oGEMzsgKSBWVUxHQVIgRlJBQ1RJT04gVFdPIFRISVJEUworMjE1NTsyMTU1OzIxNTU7MDAzMSAyMDQ0IDAwMzU7MDAzMSAyMDQ0IDAwMzU7ICMgKOKFlTsg4oWVOyDihZU7IDHigYQ1OyAx4oGENTsgKSBWVUxHQVIgRlJBQ1RJT04gT05FIEZJRlRICisyMTU2OzIxNTY7MjE1NjswMDMyIDIwNDQgMDAzNTswMDMyIDIwNDQgMDAzNTsgIyAo4oWWOyDihZY7IOKFljsgMuKBhDU7IDLigYQ1OyApIFZVTEdBUiBGUkFDVElPTiBUV08gRklGVEhTCisyMTU3OzIxNTc7MjE1NzswMDMzIDIwNDQgMDAzNTswMDMzIDIwNDQgMDAzNTsgIyAo4oWXOyDihZc7IOKFlzsgM+KBhDU7IDPigYQ1OyApIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBGSUZUSFMKKzIxNTg7MjE1ODsyMTU4OzAwMzQgMjA0NCAwMDM1OzAwMzQgMjA0NCAwMDM1OyAjICjihZg7IOKFmDsg4oWYOyA04oGENTsgNOKBhDU7ICkgVlVMR0FSIEZSQUNUSU9OIEZPVVIgRklGVEhTCisyMTU5OzIxNTk7MjE1OTswMDMxIDIwNDQgMDAzNjswMDMxIDIwNDQgMDAzNjsgIyAo4oWZOyDihZk7IOKFmTsgMeKBhDY7IDHigYQ2OyApIFZVTEdBUiBGUkFDVElPTiBPTkUgU0lYVEgKKzIxNUE7MjE1QTsyMTVBOzAwMzUgMjA0NCAwMDM2OzAwMzUgMjA0NCAwMDM2OyAjICjihZo7IOKFmjsg4oWaOyA14oGENjsgNeKBhDY7ICkgVlVMR0FSIEZSQUNUSU9OIEZJVkUgU0lYVEhTCisyMTVCOzIxNUI7MjE1QjswMDMxIDIwNDQgMDAzODswMDMxIDIwNDQgMDAzODsgIyAo4oWbOyDihZs7IOKFmzsgMeKBhDg7IDHigYQ4OyApIFZVTEdBUiBGUkFDVElPTiBPTkUgRUlHSFRICisyMTVDOzIxNUM7MjE1QzswMDMzIDIwNDQgMDAzODswMDMzIDIwNDQgMDAzODsgIyAo4oWcOyDihZw7IOKFnDsgM+KBhDg7IDPigYQ4OyApIFZVTEdBUiBGUkFDVElPTiBUSFJFRSBFSUdIVEhTCisyMTVEOzIxNUQ7MjE1RDswMDM1IDIwNDQgMDAzODswMDM1IDIwNDQgMDAzODsgIyAo4oWdOyDihZ07IOKFnTsgNeKBhDg7IDXigYQ4OyApIFZVTEdBUiBGUkFDVElPTiBGSVZFIEVJR0hUSFMKKzIxNUU7MjE1RTsyMTVFOzAwMzcgMjA0NCAwMDM4OzAwMzcgMjA0NCAwMDM4OyAjICjihZ47IOKFnjsg4oWeOyA34oGEODsgN+KBhDg7ICkgVlVMR0FSIEZSQUNUSU9OIFNFVkVOIEVJR0hUSFMKKzIxNUY7MjE1RjsyMTVGOzAwMzEgMjA0NDswMDMxIDIwNDQ7ICMgKOKFnzsg4oWfOyDihZ87IDHigYQ7IDHigYQ7ICkgRlJBQ1RJT04gTlVNRVJBVE9SIE9ORQorMjE2MDsyMTYwOzIxNjA7MDA0OTswMDQ5OyAjICjihaA7IOKFoDsg4oWgOyBJOyBJOyApIFJPTUFOIE5VTUVSQUwgT05FCisyMTYxOzIxNjE7MjE2MTswMDQ5IDAwNDk7MDA0OSAwMDQ5OyAjICjihaE7IOKFoTsg4oWhOyBJSTsgSUk7ICkgUk9NQU4gTlVNRVJBTCBUV08KKzIxNjI7MjE2MjsyMTYyOzAwNDkgMDA0OSAwMDQ5OzAwNDkgMDA0OSAwMDQ5OyAjICjihaI7IOKFojsg4oWiOyBJSUk7IElJSTsgKSBST01BTiBOVU1FUkFMIFRIUkVFCisyMTYzOzIxNjM7MjE2MzswMDQ5IDAwNTY7MDA0OSAwMDU2OyAjICjihaM7IOKFozsg4oWjOyBJVjsgSVY7ICkgUk9NQU4gTlVNRVJBTCBGT1VSCisyMTY0OzIxNjQ7MjE2NDswMDU2OzAwNTY7ICMgKOKFpDsg4oWkOyDihaQ7IFY7IFY7ICkgUk9NQU4gTlVNRVJBTCBGSVZFCisyMTY1OzIxNjU7MjE2NTswMDU2IDAwNDk7MDA1NiAwMDQ5OyAjICjihaU7IOKFpTsg4oWlOyBWSTsgVkk7ICkgUk9NQU4gTlVNRVJBTCBTSVgKKzIxNjY7MjE2NjsyMTY2OzAwNTYgMDA0OSAwMDQ5OzAwNTYgMDA0OSAwMDQ5OyAjICjihaY7IOKFpjsg4oWmOyBWSUk7IFZJSTsgKSBST01BTiBOVU1FUkFMIFNFVkVOCisyMTY3OzIxNjc7MjE2NzswMDU2IDAwNDkgMDA0OSAwMDQ5OzAwNTYgMDA0OSAwMDQ5IDAwNDk7ICMgKOKFpzsg4oWnOyDihac7IFZJSUk7IFZJSUk7ICkgUk9NQU4gTlVNRVJBTCBFSUdIVAorMjE2ODsyMTY4OzIxNjg7MDA0OSAwMDU4OzAwNDkgMDA1ODsgIyAo4oWoOyDihag7IOKFqDsgSVg7IElYOyApIFJPTUFOIE5VTUVSQUwgTklORQorMjE2OTsyMTY5OzIxNjk7MDA1ODswMDU4OyAjICjihak7IOKFqTsg4oWpOyBYOyBYOyApIFJPTUFOIE5VTUVSQUwgVEVOCisyMTZBOzIxNkE7MjE2QTswMDU4IDAwNDk7MDA1OCAwMDQ5OyAjICjihao7IOKFqjsg4oWqOyBYSTsgWEk7ICkgUk9NQU4gTlVNRVJBTCBFTEVWRU4KKzIxNkI7MjE2QjsyMTZCOzAwNTggMDA0OSAwMDQ5OzAwNTggMDA0OSAwMDQ5OyAjICjihas7IOKFqzsg4oWrOyBYSUk7IFhJSTsgKSBST01BTiBOVU1FUkFMIFRXRUxWRQorMjE2QzsyMTZDOzIxNkM7MDA0QzswMDRDOyAjICjihaw7IOKFrDsg4oWsOyBMOyBMOyApIFJPTUFOIE5VTUVSQUwgRklGVFkKKzIxNkQ7MjE2RDsyMTZEOzAwNDM7MDA0MzsgIyAo4oWtOyDiha07IOKFrTsgQzsgQzsgKSBST01BTiBOVU1FUkFMIE9ORSBIVU5EUkVECisyMTZFOzIxNkU7MjE2RTswMDQ0OzAwNDQ7ICMgKOKFrjsg4oWuOyDiha47IEQ7IEQ7ICkgUk9NQU4gTlVNRVJBTCBGSVZFIEhVTkRSRUQKKzIxNkY7MjE2RjsyMTZGOzAwNEQ7MDA0RDsgIyAo4oWvOyDiha87IOKFrzsgTTsgTTsgKSBST01BTiBOVU1FUkFMIE9ORSBUSE9VU0FORAorMjE3MDsyMTcwOzIxNzA7MDA2OTswMDY5OyAjICjihbA7IOKFsDsg4oWwOyBpOyBpOyApIFNNQUxMIFJPTUFOIE5VTUVSQUwgT05FCisyMTcxOzIxNzE7MjE3MTswMDY5IDAwNjk7MDA2OSAwMDY5OyAjICjihbE7IOKFsTsg4oWxOyBpaTsgaWk7ICkgU01BTEwgUk9NQU4gTlVNRVJBTCBUV08KKzIxNzI7MjE3MjsyMTcyOzAwNjkgMDA2OSAwMDY5OzAwNjkgMDA2OSAwMDY5OyAjICjihbI7IOKFsjsg4oWyOyBpaWk7IGlpaTsgKSBTTUFMTCBST01BTiBOVU1FUkFMIFRIUkVFCisyMTczOzIxNzM7MjE3MzswMDY5IDAwNzY7MDA2OSAwMDc2OyAjICjihbM7IOKFszsg4oWzOyBpdjsgaXY7ICkgU01BTEwgUk9NQU4gTlVNRVJBTCBGT1VSCisyMTc0OzIxNzQ7MjE3NDswMDc2OzAwNzY7ICMgKOKFtDsg4oW0OyDihbQ7IHY7IHY7ICkgU01BTEwgUk9NQU4gTlVNRVJBTCBGSVZFCisyMTc1OzIxNzU7MjE3NTswMDc2IDAwNjk7MDA3NiAwMDY5OyAjICjihbU7IOKFtTsg4oW1OyB2aTsgdmk7ICkgU01BTEwgUk9NQU4gTlVNRVJBTCBTSVgKKzIxNzY7MjE3NjsyMTc2OzAwNzYgMDA2OSAwMDY5OzAwNzYgMDA2OSAwMDY5OyAjICjihbY7IOKFtjsg4oW2OyB2aWk7IHZpaTsgKSBTTUFMTCBST01BTiBOVU1FUkFMIFNFVkVOCisyMTc3OzIxNzc7MjE3NzswMDc2IDAwNjkgMDA2OSAwMDY5OzAwNzYgMDA2OSAwMDY5IDAwNjk7ICMgKOKFtzsg4oW3OyDihbc7IHZpaWk7IHZpaWk7ICkgU01BTEwgUk9NQU4gTlVNRVJBTCBFSUdIVAorMjE3ODsyMTc4OzIxNzg7MDA2OSAwMDc4OzAwNjkgMDA3ODsgIyAo4oW4OyDihbg7IOKFuDsgaXg7IGl4OyApIFNNQUxMIFJPTUFOIE5VTUVSQUwgTklORQorMjE3OTsyMTc5OzIxNzk7MDA3ODswMDc4OyAjICjihbk7IOKFuTsg4oW5OyB4OyB4OyApIFNNQUxMIFJPTUFOIE5VTUVSQUwgVEVOCisyMTdBOzIxN0E7MjE3QTswMDc4IDAwNjk7MDA3OCAwMDY5OyAjICjihbo7IOKFujsg4oW6OyB4aTsgeGk7ICkgU01BTEwgUk9NQU4gTlVNRVJBTCBFTEVWRU4KKzIxN0I7MjE3QjsyMTdCOzAwNzggMDA2OSAwMDY5OzAwNzggMDA2OSAwMDY5OyAjICjihbs7IOKFuzsg4oW7OyB4aWk7IHhpaTsgKSBTTUFMTCBST01BTiBOVU1FUkFMIFRXRUxWRQorMjE3QzsyMTdDOzIxN0M7MDA2QzswMDZDOyAjICjihbw7IOKFvDsg4oW8OyBsOyBsOyApIFNNQUxMIFJPTUFOIE5VTUVSQUwgRklGVFkKKzIxN0Q7MjE3RDsyMTdEOzAwNjM7MDA2MzsgIyAo4oW9OyDihb07IOKFvTsgYzsgYzsgKSBTTUFMTCBST01BTiBOVU1FUkFMIE9ORSBIVU5EUkVECisyMTdFOzIxN0U7MjE3RTswMDY0OzAwNjQ7ICMgKOKFvjsg4oW+OyDihb47IGQ7IGQ7ICkgU01BTEwgUk9NQU4gTlVNRVJBTCBGSVZFIEhVTkRSRUQKKzIxN0Y7MjE3RjsyMTdGOzAwNkQ7MDA2RDsgIyAo4oW/OyDihb87IOKFvzsgbTsgbTsgKSBTTUFMTCBST01BTiBOVU1FUkFMIE9ORSBUSE9VU0FORAorMjE5QTsyMTlBOzIxOTAgMDMzODsyMTlBOzIxOTAgMDMzODsgIyAo4oaaOyDihpo7IOKGkOKXjMy4OyDihpo7IOKGkOKXjMy4OyApIExFRlRXQVJEUyBBUlJPVyBXSVRIIFNUUk9LRQorMjE5QjsyMTlCOzIxOTIgMDMzODsyMTlCOzIxOTIgMDMzODsgIyAo4oabOyDihps7IOKGkuKXjMy4OyDihps7IOKGkuKXjMy4OyApIFJJR0hUV0FSRFMgQVJST1cgV0lUSCBTVFJPS0UKKzIxQUU7MjFBRTsyMTk0IDAzMzg7MjFBRTsyMTk0IDAzMzg7ICMgKOKGrjsg4oauOyDihpTil4zMuDsg4oauOyDihpTil4zMuDsgKSBMRUZUIFJJR0hUIEFSUk9XIFdJVEggU1RST0tFCisyMUNEOzIxQ0Q7MjFEMCAwMzM4OzIxQ0Q7MjFEMCAwMzM4OyAjICjih407IOKHjTsg4oeQ4peMzLg7IOKHjTsg4oeQ4peMzLg7ICkgTEVGVFdBUkRTIERPVUJMRSBBUlJPVyBXSVRIIFNUUk9LRQorMjFDRTsyMUNFOzIxRDQgMDMzODsyMUNFOzIxRDQgMDMzODsgIyAo4oeOOyDih447IOKHlOKXjMy4OyDih447IOKHlOKXjMy4OyApIExFRlQgUklHSFQgRE9VQkxFIEFSUk9XIFdJVEggU1RST0tFCisyMUNGOzIxQ0Y7MjFEMiAwMzM4OzIxQ0Y7MjFEMiAwMzM4OyAjICjih487IOKHjzsg4oeS4peMzLg7IOKHjzsg4oeS4peMzLg7ICkgUklHSFRXQVJEUyBET1VCTEUgQVJST1cgV0lUSCBTVFJPS0UKKzIyMDQ7MjIwNDsyMjAzIDAzMzg7MjIwNDsyMjAzIDAzMzg7ICMgKOKIhDsg4oiEOyDiiIPil4zMuDsg4oiEOyDiiIPil4zMuDsgKSBUSEVSRSBET0VTIE5PVCBFWElTVAorMjIwOTsyMjA5OzIyMDggMDMzODsyMjA5OzIyMDggMDMzODsgIyAo4oiJOyDiiIk7IOKIiOKXjMy4OyDiiIk7IOKIiOKXjMy4OyApIE5PVCBBTiBFTEVNRU5UIE9GCisyMjBDOzIyMEM7MjIwQiAwMzM4OzIyMEM7MjIwQiAwMzM4OyAjICjiiIw7IOKIjDsg4oiL4peMzLg7IOKIjDsg4oiL4peMzLg7ICkgRE9FUyBOT1QgQ09OVEFJTiBBUyBNRU1CRVIKKzIyMjQ7MjIyNDsyMjIzIDAzMzg7MjIyNDsyMjIzIDAzMzg7ICMgKOKIpDsg4oikOyDiiKPil4zMuDsg4oikOyDiiKPil4zMuDsgKSBET0VTIE5PVCBESVZJREUKKzIyMjY7MjIyNjsyMjI1IDAzMzg7MjIyNjsyMjI1IDAzMzg7ICMgKOKIpjsg4oimOyDiiKXil4zMuDsg4oimOyDiiKXil4zMuDsgKSBOT1QgUEFSQUxMRUwgVE8KKzIyMkM7MjIyQzsyMjJDOzIyMkIgMjIyQjsyMjJCIDIyMkI7ICMgKOKIrDsg4oisOyDiiKw7IOKIq+KIqzsg4oir4oirOyApIERPVUJMRSBJTlRFR1JBTAorMjIyRDsyMjJEOzIyMkQ7MjIyQiAyMjJCIDIyMkI7MjIyQiAyMjJCIDIyMkI7ICMgKOKIrTsg4oitOyDiiK07IOKIq+KIq+KIqzsg4oir4oir4oirOyApIFRSSVBMRSBJTlRFR1JBTAorMjIyRjsyMjJGOzIyMkY7MjIyRSAyMjJFOzIyMkUgMjIyRTsgIyAo4oivOyDiiK87IOKIrzsg4oiu4oiuOyDiiK7iiK47ICkgU1VSRkFDRSBJTlRFR1JBTAorMjIzMDsyMjMwOzIyMzA7MjIyRSAyMjJFIDIyMkU7MjIyRSAyMjJFIDIyMkU7ICMgKOKIsDsg4oiwOyDiiLA7IOKIruKIruKIrjsg4oiu4oiu4oiuOyApIFZPTFVNRSBJTlRFR1JBTAorMjI0MTsyMjQxOzIyM0MgMDMzODsyMjQxOzIyM0MgMDMzODsgIyAo4omBOyDiiYE7IOKIvOKXjMy4OyDiiYE7IOKIvOKXjMy4OyApIE5PVCBUSUxERQorMjI0NDsyMjQ0OzIyNDMgMDMzODsyMjQ0OzIyNDMgMDMzODsgIyAo4omEOyDiiYQ7IOKJg+KXjMy4OyDiiYQ7IOKJg+KXjMy4OyApIE5PVCBBU1lNUFRPVElDQUxMWSBFUVVBTCBUTworMjI0NzsyMjQ3OzIyNDUgMDMzODsyMjQ3OzIyNDUgMDMzODsgIyAo4omHOyDiiYc7IOKJheKXjMy4OyDiiYc7IOKJheKXjMy4OyApIE5FSVRIRVIgQVBQUk9YSU1BVEVMWSBOT1IgQUNUVUFMTFkgRVFVQUwgVE8KKzIyNDk7MjI0OTsyMjQ4IDAzMzg7MjI0OTsyMjQ4IDAzMzg7ICMgKOKJiTsg4omJOyDiiYjil4zMuDsg4omJOyDiiYjil4zMuDsgKSBOT1QgQUxNT1NUIEVRVUFMIFRPCisyMjYwOzIyNjA7MDAzRCAwMzM4OzIyNjA7MDAzRCAwMzM4OyAjICjiiaA7IOKJoDsgPeKXjMy4OyDiiaA7ID3il4zMuDsgKSBOT1QgRVFVQUwgVE8KKzIyNjI7MjI2MjsyMjYxIDAzMzg7MjI2MjsyMjYxIDAzMzg7ICMgKOKJojsg4omiOyDiiaHil4zMuDsg4omiOyDiiaHil4zMuDsgKSBOT1QgSURFTlRJQ0FMIFRPCisyMjZEOzIyNkQ7MjI0RCAwMzM4OzIyNkQ7MjI0RCAwMzM4OyAjICjiia07IOKJrTsg4omN4peMzLg7IOKJrTsg4omN4peMzLg7ICkgTk9UIEVRVUlWQUxFTlQgVE8KKzIyNkU7MjI2RTswMDNDIDAzMzg7MjI2RTswMDNDIDAzMzg7ICMgKOKJrjsg4omuOyA84peMzLg7IOKJrjsgPOKXjMy4OyApIE5PVCBMRVNTLVRIQU4KKzIyNkY7MjI2RjswMDNFIDAzMzg7MjI2RjswMDNFIDAzMzg7ICMgKOKJrzsg4omvOyA+4peMzLg7IOKJrzsgPuKXjMy4OyApIE5PVCBHUkVBVEVSLVRIQU4KKzIyNzA7MjI3MDsyMjY0IDAzMzg7MjI3MDsyMjY0IDAzMzg7ICMgKOKJsDsg4omwOyDiiaTil4zMuDsg4omwOyDiiaTil4zMuDsgKSBORUlUSEVSIExFU1MtVEhBTiBOT1IgRVFVQUwgVE8KKzIyNzE7MjI3MTsyMjY1IDAzMzg7MjI3MTsyMjY1IDAzMzg7ICMgKOKJsTsg4omxOyDiiaXil4zMuDsg4omxOyDiiaXil4zMuDsgKSBORUlUSEVSIEdSRUFURVItVEhBTiBOT1IgRVFVQUwgVE8KKzIyNzQ7MjI3NDsyMjcyIDAzMzg7MjI3NDsyMjcyIDAzMzg7ICMgKOKJtDsg4om0OyDiibLil4zMuDsg4om0OyDiibLil4zMuDsgKSBORUlUSEVSIExFU1MtVEhBTiBOT1IgRVFVSVZBTEVOVCBUTworMjI3NTsyMjc1OzIyNzMgMDMzODsyMjc1OzIyNzMgMDMzODsgIyAo4om1OyDiibU7IOKJs+KXjMy4OyDiibU7IOKJs+KXjMy4OyApIE5FSVRIRVIgR1JFQVRFUi1USEFOIE5PUiBFUVVJVkFMRU5UIFRPCisyMjc4OzIyNzg7MjI3NiAwMzM4OzIyNzg7MjI3NiAwMzM4OyAjICjiibg7IOKJuDsg4om24peMzLg7IOKJuDsg4om24peMzLg7ICkgTkVJVEhFUiBMRVNTLVRIQU4gTk9SIEdSRUFURVItVEhBTgorMjI3OTsyMjc5OzIyNzcgMDMzODsyMjc5OzIyNzcgMDMzODsgIyAo4om5OyDiibk7IOKJt+KXjMy4OyDiibk7IOKJt+KXjMy4OyApIE5FSVRIRVIgR1JFQVRFUi1USEFOIE5PUiBMRVNTLVRIQU4KKzIyODA7MjI4MDsyMjdBIDAzMzg7MjI4MDsyMjdBIDAzMzg7ICMgKOKKgDsg4oqAOyDiibril4zMuDsg4oqAOyDiibril4zMuDsgKSBET0VTIE5PVCBQUkVDRURFCisyMjgxOzIyODE7MjI3QiAwMzM4OzIyODE7MjI3QiAwMzM4OyAjICjiioE7IOKKgTsg4om74peMzLg7IOKKgTsg4om74peMzLg7ICkgRE9FUyBOT1QgU1VDQ0VFRAorMjI4NDsyMjg0OzIyODIgMDMzODsyMjg0OzIyODIgMDMzODsgIyAo4oqEOyDiioQ7IOKKguKXjMy4OyDiioQ7IOKKguKXjMy4OyApIE5PVCBBIFNVQlNFVCBPRgorMjI4NTsyMjg1OzIyODMgMDMzODsyMjg1OzIyODMgMDMzODsgIyAo4oqFOyDiioU7IOKKg+KXjMy4OyDiioU7IOKKg+KXjMy4OyApIE5PVCBBIFNVUEVSU0VUIE9GCisyMjg4OzIyODg7MjI4NiAwMzM4OzIyODg7MjI4NiAwMzM4OyAjICjiiog7IOKKiDsg4oqG4peMzLg7IOKKiDsg4oqG4peMzLg7ICkgTkVJVEhFUiBBIFNVQlNFVCBPRiBOT1IgRVFVQUwgVE8KKzIyODk7MjI4OTsyMjg3IDAzMzg7MjI4OTsyMjg3IDAzMzg7ICMgKOKKiTsg4oqJOyDiiofil4zMuDsg4oqJOyDiiofil4zMuDsgKSBORUlUSEVSIEEgU1VQRVJTRVQgT0YgTk9SIEVRVUFMIFRPCisyMkFDOzIyQUM7MjJBMiAwMzM4OzIyQUM7MjJBMiAwMzM4OyAjICjiiqw7IOKKrDsg4oqi4peMzLg7IOKKrDsg4oqi4peMzLg7ICkgRE9FUyBOT1QgUFJPVkUKKzIyQUQ7MjJBRDsyMkE4IDAzMzg7MjJBRDsyMkE4IDAzMzg7ICMgKOKKrTsg4oqtOyDiiqjil4zMuDsg4oqtOyDiiqjil4zMuDsgKSBOT1QgVFJVRQorMjJBRTsyMkFFOzIyQTkgMDMzODsyMkFFOzIyQTkgMDMzODsgIyAo4oquOyDiiq47IOKKqeKXjMy4OyDiiq47IOKKqeKXjMy4OyApIERPRVMgTk9UIEZPUkNFCisyMkFGOzIyQUY7MjJBQiAwMzM4OzIyQUY7MjJBQiAwMzM4OyAjICjiiq87IOKKrzsg4oqr4peMzLg7IOKKrzsg4oqr4peMzLg7ICkgTkVHQVRFRCBET1VCTEUgVkVSVElDQUwgQkFSIERPVUJMRSBSSUdIVCBUVVJOU1RJTEUKKzIyRTA7MjJFMDsyMjdDIDAzMzg7MjJFMDsyMjdDIDAzMzg7ICMgKOKLoDsg4ougOyDiibzil4zMuDsg4ougOyDiibzil4zMuDsgKSBET0VTIE5PVCBQUkVDRURFIE9SIEVRVUFMCisyMkUxOzIyRTE7MjI3RCAwMzM4OzIyRTE7MjI3RCAwMzM4OyAjICjii6E7IOKLoTsg4om94peMzLg7IOKLoTsg4om94peMzLg7ICkgRE9FUyBOT1QgU1VDQ0VFRCBPUiBFUVVBTAorMjJFMjsyMkUyOzIyOTEgMDMzODsyMkUyOzIyOTEgMDMzODsgIyAo4ouiOyDii6I7IOKKkeKXjMy4OyDii6I7IOKKkeKXjMy4OyApIE5PVCBTUVVBUkUgSU1BR0UgT0YgT1IgRVFVQUwgVE8KKzIyRTM7MjJFMzsyMjkyIDAzMzg7MjJFMzsyMjkyIDAzMzg7ICMgKOKLozsg4oujOyDiipLil4zMuDsg4oujOyDiipLil4zMuDsgKSBOT1QgU1FVQVJFIE9SSUdJTkFMIE9GIE9SIEVRVUFMIFRPCisyMkVBOzIyRUE7MjJCMiAwMzM4OzIyRUE7MjJCMiAwMzM4OyAjICjii6o7IOKLqjsg4oqy4peMzLg7IOKLqjsg4oqy4peMzLg7ICkgTk9UIE5PUk1BTCBTVUJHUk9VUCBPRgorMjJFQjsyMkVCOzIyQjMgMDMzODsyMkVCOzIyQjMgMDMzODsgIyAo4ourOyDii6s7IOKKs+KXjMy4OyDii6s7IOKKs+KXjMy4OyApIERPRVMgTk9UIENPTlRBSU4gQVMgTk9STUFMIFNVQkdST1VQCisyMkVDOzIyRUM7MjJCNCAwMzM4OzIyRUM7MjJCNCAwMzM4OyAjICjii6w7IOKLrDsg4oq04peMzLg7IOKLrDsg4oq04peMzLg7ICkgTk9UIE5PUk1BTCBTVUJHUk9VUCBPRiBPUiBFUVVBTCBUTworMjJFRDsyMkVEOzIyQjUgMDMzODsyMkVEOzIyQjUgMDMzODsgIyAo4outOyDii607IOKKteKXjMy4OyDii607IOKKteKXjMy4OyApIERPRVMgTk9UIENPTlRBSU4gQVMgTk9STUFMIFNVQkdST1VQIE9SIEVRVUFMCisyMzI5OzMwMDg7MzAwODszMDA4OzMwMDg7ICMgKOKMqTsg44CIOyDjgIg7IOOAiDsg44CIOyApIExFRlQtUE9JTlRJTkcgQU5HTEUgQlJBQ0tFVAorMjMyQTszMDA5OzMwMDk7MzAwOTszMDA5OyAjICjijKo7IOOAiTsg44CJOyDjgIk7IOOAiTsgKSBSSUdIVC1QT0lOVElORyBBTkdMRSBCUkFDS0VUCisyNDYwOzI0NjA7MjQ2MDswMDMxOzAwMzE7ICMgKOKRoDsg4pGgOyDikaA7IDE7IDE7ICkgQ0lSQ0xFRCBESUdJVCBPTkUKKzI0NjE7MjQ2MTsyNDYxOzAwMzI7MDAzMjsgIyAo4pGhOyDikaE7IOKRoTsgMjsgMjsgKSBDSVJDTEVEIERJR0lUIFRXTworMjQ2MjsyNDYyOzI0NjI7MDAzMzswMDMzOyAjICjikaI7IOKRojsg4pGiOyAzOyAzOyApIENJUkNMRUQgRElHSVQgVEhSRUUKKzI0NjM7MjQ2MzsyNDYzOzAwMzQ7MDAzNDsgIyAo4pGjOyDikaM7IOKRozsgNDsgNDsgKSBDSVJDTEVEIERJR0lUIEZPVVIKKzI0NjQ7MjQ2NDsyNDY0OzAwMzU7MDAzNTsgIyAo4pGkOyDikaQ7IOKRpDsgNTsgNTsgKSBDSVJDTEVEIERJR0lUIEZJVkUKKzI0NjU7MjQ2NTsyNDY1OzAwMzY7MDAzNjsgIyAo4pGlOyDikaU7IOKRpTsgNjsgNjsgKSBDSVJDTEVEIERJR0lUIFNJWAorMjQ2NjsyNDY2OzI0NjY7MDAzNzswMDM3OyAjICjikaY7IOKRpjsg4pGmOyA3OyA3OyApIENJUkNMRUQgRElHSVQgU0VWRU4KKzI0Njc7MjQ2NzsyNDY3OzAwMzg7MDAzODsgIyAo4pGnOyDikac7IOKRpzsgODsgODsgKSBDSVJDTEVEIERJR0lUIEVJR0hUCisyNDY4OzI0Njg7MjQ2ODswMDM5OzAwMzk7ICMgKOKRqDsg4pGoOyDikag7IDk7IDk7ICkgQ0lSQ0xFRCBESUdJVCBOSU5FCisyNDY5OzI0Njk7MjQ2OTswMDMxIDAwMzA7MDAzMSAwMDMwOyAjICjikak7IOKRqTsg4pGpOyAxMDsgMTA7ICkgQ0lSQ0xFRCBOVU1CRVIgVEVOCisyNDZBOzI0NkE7MjQ2QTswMDMxIDAwMzE7MDAzMSAwMDMxOyAjICjikao7IOKRqjsg4pGqOyAxMTsgMTE7ICkgQ0lSQ0xFRCBOVU1CRVIgRUxFVkVOCisyNDZCOzI0NkI7MjQ2QjswMDMxIDAwMzI7MDAzMSAwMDMyOyAjICjikas7IOKRqzsg4pGrOyAxMjsgMTI7ICkgQ0lSQ0xFRCBOVU1CRVIgVFdFTFZFCisyNDZDOzI0NkM7MjQ2QzswMDMxIDAwMzM7MDAzMSAwMDMzOyAjICjikaw7IOKRrDsg4pGsOyAxMzsgMTM7ICkgQ0lSQ0xFRCBOVU1CRVIgVEhJUlRFRU4KKzI0NkQ7MjQ2RDsyNDZEOzAwMzEgMDAzNDswMDMxIDAwMzQ7ICMgKOKRrTsg4pGtOyDika07IDE0OyAxNDsgKSBDSVJDTEVEIE5VTUJFUiBGT1VSVEVFTgorMjQ2RTsyNDZFOzI0NkU7MDAzMSAwMDM1OzAwMzEgMDAzNTsgIyAo4pGuOyDika47IOKRrjsgMTU7IDE1OyApIENJUkNMRUQgTlVNQkVSIEZJRlRFRU4KKzI0NkY7MjQ2RjsyNDZGOzAwMzEgMDAzNjswMDMxIDAwMzY7ICMgKOKRrzsg4pGvOyDika87IDE2OyAxNjsgKSBDSVJDTEVEIE5VTUJFUiBTSVhURUVOCisyNDcwOzI0NzA7MjQ3MDswMDMxIDAwMzc7MDAzMSAwMDM3OyAjICjikbA7IOKRsDsg4pGwOyAxNzsgMTc7ICkgQ0lSQ0xFRCBOVU1CRVIgU0VWRU5URUVOCisyNDcxOzI0NzE7MjQ3MTswMDMxIDAwMzg7MDAzMSAwMDM4OyAjICjikbE7IOKRsTsg4pGxOyAxODsgMTg7ICkgQ0lSQ0xFRCBOVU1CRVIgRUlHSFRFRU4KKzI0NzI7MjQ3MjsyNDcyOzAwMzEgMDAzOTswMDMxIDAwMzk7ICMgKOKRsjsg4pGyOyDikbI7IDE5OyAxOTsgKSBDSVJDTEVEIE5VTUJFUiBOSU5FVEVFTgorMjQ3MzsyNDczOzI0NzM7MDAzMiAwMDMwOzAwMzIgMDAzMDsgIyAo4pGzOyDikbM7IOKRszsgMjA7IDIwOyApIENJUkNMRUQgTlVNQkVSIFRXRU5UWQorMjQ3NDsyNDc0OzI0NzQ7MDAyOCAwMDMxIDAwMjk7MDAyOCAwMDMxIDAwMjk7ICMgKOKRtDsg4pG0OyDikbQ7ICgxKTsgKDEpOyApIFBBUkVOVEhFU0laRUQgRElHSVQgT05FCisyNDc1OzI0NzU7MjQ3NTswMDI4IDAwMzIgMDAyOTswMDI4IDAwMzIgMDAyOTsgIyAo4pG1OyDikbU7IOKRtTsgKDIpOyAoMik7ICkgUEFSRU5USEVTSVpFRCBESUdJVCBUV08KKzI0NzY7MjQ3NjsyNDc2OzAwMjggMDAzMyAwMDI5OzAwMjggMDAzMyAwMDI5OyAjICjikbY7IOKRtjsg4pG2OyAoMyk7ICgzKTsgKSBQQVJFTlRIRVNJWkVEIERJR0lUIFRIUkVFCisyNDc3OzI0Nzc7MjQ3NzswMDI4IDAwMzQgMDAyOTswMDI4IDAwMzQgMDAyOTsgIyAo4pG3OyDikbc7IOKRtzsgKDQpOyAoNCk7ICkgUEFSRU5USEVTSVpFRCBESUdJVCBGT1VSCisyNDc4OzI0Nzg7MjQ3ODswMDI4IDAwMzUgMDAyOTswMDI4IDAwMzUgMDAyOTsgIyAo4pG4OyDikbg7IOKRuDsgKDUpOyAoNSk7ICkgUEFSRU5USEVTSVpFRCBESUdJVCBGSVZFCisyNDc5OzI0Nzk7MjQ3OTswMDI4IDAwMzYgMDAyOTswMDI4IDAwMzYgMDAyOTsgIyAo4pG5OyDikbk7IOKRuTsgKDYpOyAoNik7ICkgUEFSRU5USEVTSVpFRCBESUdJVCBTSVgKKzI0N0E7MjQ3QTsyNDdBOzAwMjggMDAzNyAwMDI5OzAwMjggMDAzNyAwMDI5OyAjICjikbo7IOKRujsg4pG6OyAoNyk7ICg3KTsgKSBQQVJFTlRIRVNJWkVEIERJR0lUIFNFVkVOCisyNDdCOzI0N0I7MjQ3QjswMDI4IDAwMzggMDAyOTswMDI4IDAwMzggMDAyOTsgIyAo4pG7OyDikbs7IOKRuzsgKDgpOyAoOCk7ICkgUEFSRU5USEVTSVpFRCBESUdJVCBFSUdIVAorMjQ3QzsyNDdDOzI0N0M7MDAyOCAwMDM5IDAwMjk7MDAyOCAwMDM5IDAwMjk7ICMgKOKRvDsg4pG8OyDikbw7ICg5KTsgKDkpOyApIFBBUkVOVEhFU0laRUQgRElHSVQgTklORQorMjQ3RDsyNDdEOzI0N0Q7MDAyOCAwMDMxIDAwMzAgMDAyOTswMDI4IDAwMzEgMDAzMCAwMDI5OyAjICjikb07IOKRvTsg4pG9OyAoMTApOyAoMTApOyApIFBBUkVOVEhFU0laRUQgTlVNQkVSIFRFTgorMjQ3RTsyNDdFOzI0N0U7MDAyOCAwMDMxIDAwMzEgMDAyOTswMDI4IDAwMzEgMDAzMSAwMDI5OyAjICjikb47IOKRvjsg4pG+OyAoMTEpOyAoMTEpOyApIFBBUkVOVEhFU0laRUQgTlVNQkVSIEVMRVZFTgorMjQ3RjsyNDdGOzI0N0Y7MDAyOCAwMDMxIDAwMzIgMDAyOTswMDI4IDAwMzEgMDAzMiAwMDI5OyAjICjikb87IOKRvzsg4pG/OyAoMTIpOyAoMTIpOyApIFBBUkVOVEhFU0laRUQgTlVNQkVSIFRXRUxWRQorMjQ4MDsyNDgwOzI0ODA7MDAyOCAwMDMxIDAwMzMgMDAyOTswMDI4IDAwMzEgMDAzMyAwMDI5OyAjICjikoA7IOKSgDsg4pKAOyAoMTMpOyAoMTMpOyApIFBBUkVOVEhFU0laRUQgTlVNQkVSIFRISVJURUVOCisyNDgxOzI0ODE7MjQ4MTswMDI4IDAwMzEgMDAzNCAwMDI5OzAwMjggMDAzMSAwMDM0IDAwMjk7ICMgKOKSgTsg4pKBOyDikoE7ICgxNCk7ICgxNCk7ICkgUEFSRU5USEVTSVpFRCBOVU1CRVIgRk9VUlRFRU4KKzI0ODI7MjQ4MjsyNDgyOzAwMjggMDAzMSAwMDM1IDAwMjk7MDAyOCAwMDMxIDAwMzUgMDAyOTsgIyAo4pKCOyDikoI7IOKSgjsgKDE1KTsgKDE1KTsgKSBQQVJFTlRIRVNJWkVEIE5VTUJFUiBGSUZURUVOCisyNDgzOzI0ODM7MjQ4MzswMDI4IDAwMzEgMDAzNiAwMDI5OzAwMjggMDAzMSAwMDM2IDAwMjk7ICMgKOKSgzsg4pKDOyDikoM7ICgxNik7ICgxNik7ICkgUEFSRU5USEVTSVpFRCBOVU1CRVIgU0lYVEVFTgorMjQ4NDsyNDg0OzI0ODQ7MDAyOCAwMDMxIDAwMzcgMDAyOTswMDI4IDAwMzEgMDAzNyAwMDI5OyAjICjikoQ7IOKShDsg4pKEOyAoMTcpOyAoMTcpOyApIFBBUkVOVEhFU0laRUQgTlVNQkVSIFNFVkVOVEVFTgorMjQ4NTsyNDg1OzI0ODU7MDAyOCAwMDMxIDAwMzggMDAyOTswMDI4IDAwMzEgMDAzOCAwMDI5OyAjICjikoU7IOKShTsg4pKFOyAoMTgpOyAoMTgpOyApIFBBUkVOVEhFU0laRUQgTlVNQkVSIEVJR0hURUVOCisyNDg2OzI0ODY7MjQ4NjswMDI4IDAwMzEgMDAzOSAwMDI5OzAwMjggMDAzMSAwMDM5IDAwMjk7ICMgKOKShjsg4pKGOyDikoY7ICgxOSk7ICgxOSk7ICkgUEFSRU5USEVTSVpFRCBOVU1CRVIgTklORVRFRU4KKzI0ODc7MjQ4NzsyNDg3OzAwMjggMDAzMiAwMDMwIDAwMjk7MDAyOCAwMDMyIDAwMzAgMDAyOTsgIyAo4pKHOyDikoc7IOKShzsgKDIwKTsgKDIwKTsgKSBQQVJFTlRIRVNJWkVEIE5VTUJFUiBUV0VOVFkKKzI0ODg7MjQ4ODsyNDg4OzAwMzEgMDAyRTswMDMxIDAwMkU7ICMgKOKSiDsg4pKIOyDikog7IDEuOyAxLjsgKSBESUdJVCBPTkUgRlVMTCBTVE9QCisyNDg5OzI0ODk7MjQ4OTswMDMyIDAwMkU7MDAzMiAwMDJFOyAjICjikok7IOKSiTsg4pKJOyAyLjsgMi47ICkgRElHSVQgVFdPIEZVTEwgU1RPUAorMjQ4QTsyNDhBOzI0OEE7MDAzMyAwMDJFOzAwMzMgMDAyRTsgIyAo4pKKOyDikoo7IOKSijsgMy47IDMuOyApIERJR0lUIFRIUkVFIEZVTEwgU1RPUAorMjQ4QjsyNDhCOzI0OEI7MDAzNCAwMDJFOzAwMzQgMDAyRTsgIyAo4pKLOyDikos7IOKSizsgNC47IDQuOyApIERJR0lUIEZPVVIgRlVMTCBTVE9QCisyNDhDOzI0OEM7MjQ4QzswMDM1IDAwMkU7MDAzNSAwMDJFOyAjICjikow7IOKSjDsg4pKMOyA1LjsgNS47ICkgRElHSVQgRklWRSBGVUxMIFNUT1AKKzI0OEQ7MjQ4RDsyNDhEOzAwMzYgMDAyRTswMDM2IDAwMkU7ICMgKOKSjTsg4pKNOyDiko07IDYuOyA2LjsgKSBESUdJVCBTSVggRlVMTCBTVE9QCisyNDhFOzI0OEU7MjQ4RTswMDM3IDAwMkU7MDAzNyAwMDJFOyAjICjiko47IOKSjjsg4pKOOyA3LjsgNy47ICkgRElHSVQgU0VWRU4gRlVMTCBTVE9QCisyNDhGOzI0OEY7MjQ4RjswMDM4IDAwMkU7MDAzOCAwMDJFOyAjICjiko87IOKSjzsg4pKPOyA4LjsgOC47ICkgRElHSVQgRUlHSFQgRlVMTCBTVE9QCisyNDkwOzI0OTA7MjQ5MDswMDM5IDAwMkU7MDAzOSAwMDJFOyAjICjikpA7IOKSkDsg4pKQOyA5LjsgOS47ICkgRElHSVQgTklORSBGVUxMIFNUT1AKKzI0OTE7MjQ5MTsyNDkxOzAwMzEgMDAzMCAwMDJFOzAwMzEgMDAzMCAwMDJFOyAjICjikpE7IOKSkTsg4pKROyAxMC47IDEwLjsgKSBOVU1CRVIgVEVOIEZVTEwgU1RPUAorMjQ5MjsyNDkyOzI0OTI7MDAzMSAwMDMxIDAwMkU7MDAzMSAwMDMxIDAwMkU7ICMgKOKSkjsg4pKSOyDikpI7IDExLjsgMTEuOyApIE5VTUJFUiBFTEVWRU4gRlVMTCBTVE9QCisyNDkzOzI0OTM7MjQ5MzswMDMxIDAwMzIgMDAyRTswMDMxIDAwMzIgMDAyRTsgIyAo4pKTOyDikpM7IOKSkzsgMTIuOyAxMi47ICkgTlVNQkVSIFRXRUxWRSBGVUxMIFNUT1AKKzI0OTQ7MjQ5NDsyNDk0OzAwMzEgMDAzMyAwMDJFOzAwMzEgMDAzMyAwMDJFOyAjICjikpQ7IOKSlDsg4pKUOyAxMy47IDEzLjsgKSBOVU1CRVIgVEhJUlRFRU4gRlVMTCBTVE9QCisyNDk1OzI0OTU7MjQ5NTswMDMxIDAwMzQgMDAyRTswMDMxIDAwMzQgMDAyRTsgIyAo4pKVOyDikpU7IOKSlTsgMTQuOyAxNC47ICkgTlVNQkVSIEZPVVJURUVOIEZVTEwgU1RPUAorMjQ5NjsyNDk2OzI0OTY7MDAzMSAwMDM1IDAwMkU7MDAzMSAwMDM1IDAwMkU7ICMgKOKSljsg4pKWOyDikpY7IDE1LjsgMTUuOyApIE5VTUJFUiBGSUZURUVOIEZVTEwgU1RPUAorMjQ5NzsyNDk3OzI0OTc7MDAzMSAwMDM2IDAwMkU7MDAzMSAwMDM2IDAwMkU7ICMgKOKSlzsg4pKXOyDikpc7IDE2LjsgMTYuOyApIE5VTUJFUiBTSVhURUVOIEZVTEwgU1RPUAorMjQ5ODsyNDk4OzI0OTg7MDAzMSAwMDM3IDAwMkU7MDAzMSAwMDM3IDAwMkU7ICMgKOKSmDsg4pKYOyDikpg7IDE3LjsgMTcuOyApIE5VTUJFUiBTRVZFTlRFRU4gRlVMTCBTVE9QCisyNDk5OzI0OTk7MjQ5OTswMDMxIDAwMzggMDAyRTswMDMxIDAwMzggMDAyRTsgIyAo4pKZOyDikpk7IOKSmTsgMTguOyAxOC47ICkgTlVNQkVSIEVJR0hURUVOIEZVTEwgU1RPUAorMjQ5QTsyNDlBOzI0OUE7MDAzMSAwMDM5IDAwMkU7MDAzMSAwMDM5IDAwMkU7ICMgKOKSmjsg4pKaOyDikpo7IDE5LjsgMTkuOyApIE5VTUJFUiBOSU5FVEVFTiBGVUxMIFNUT1AKKzI0OUI7MjQ5QjsyNDlCOzAwMzIgMDAzMCAwMDJFOzAwMzIgMDAzMCAwMDJFOyAjICjikps7IOKSmzsg4pKbOyAyMC47IDIwLjsgKSBOVU1CRVIgVFdFTlRZIEZVTEwgU1RPUAorMjQ5QzsyNDlDOzI0OUM7MDAyOCAwMDYxIDAwMjk7MDAyOCAwMDYxIDAwMjk7ICMgKOKSnDsg4pKcOyDikpw7IChhKTsgKGEpOyApIFBBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEEKKzI0OUQ7MjQ5RDsyNDlEOzAwMjggMDA2MiAwMDI5OzAwMjggMDA2MiAwMDI5OyAjICjikp07IOKSnTsg4pKdOyAoYik7IChiKTsgKSBQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBCCisyNDlFOzI0OUU7MjQ5RTswMDI4IDAwNjMgMDAyOTswMDI4IDAwNjMgMDAyOTsgIyAo4pKeOyDikp47IOKSnjsgKGMpOyAoYyk7ICkgUEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgQworMjQ5RjsyNDlGOzI0OUY7MDAyOCAwMDY0IDAwMjk7MDAyOCAwMDY0IDAwMjk7ICMgKOKSnzsg4pKfOyDikp87IChkKTsgKGQpOyApIFBBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEQKKzI0QTA7MjRBMDsyNEEwOzAwMjggMDA2NSAwMDI5OzAwMjggMDA2NSAwMDI5OyAjICjikqA7IOKSoDsg4pKgOyAoZSk7IChlKTsgKSBQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBFCisyNEExOzI0QTE7MjRBMTswMDI4IDAwNjYgMDAyOTswMDI4IDAwNjYgMDAyOTsgIyAo4pKhOyDikqE7IOKSoTsgKGYpOyAoZik7ICkgUEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgRgorMjRBMjsyNEEyOzI0QTI7MDAyOCAwMDY3IDAwMjk7MDAyOCAwMDY3IDAwMjk7ICMgKOKSojsg4pKiOyDikqI7IChnKTsgKGcpOyApIFBBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEcKKzI0QTM7MjRBMzsyNEEzOzAwMjggMDA2OCAwMDI5OzAwMjggMDA2OCAwMDI5OyAjICjikqM7IOKSozsg4pKjOyAoaCk7IChoKTsgKSBQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBICisyNEE0OzI0QTQ7MjRBNDswMDI4IDAwNjkgMDAyOTswMDI4IDAwNjkgMDAyOTsgIyAo4pKkOyDikqQ7IOKSpDsgKGkpOyAoaSk7ICkgUEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgSQorMjRBNTsyNEE1OzI0QTU7MDAyOCAwMDZBIDAwMjk7MDAyOCAwMDZBIDAwMjk7ICMgKOKSpTsg4pKlOyDikqU7IChqKTsgKGopOyApIFBBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEoKKzI0QTY7MjRBNjsyNEE2OzAwMjggMDA2QiAwMDI5OzAwMjggMDA2QiAwMDI5OyAjICjikqY7IOKSpjsg4pKmOyAoayk7IChrKTsgKSBQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBLCisyNEE3OzI0QTc7MjRBNzswMDI4IDAwNkMgMDAyOTswMDI4IDAwNkMgMDAyOTsgIyAo4pKnOyDikqc7IOKSpzsgKGwpOyAobCk7ICkgUEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgTAorMjRBODsyNEE4OzI0QTg7MDAyOCAwMDZEIDAwMjk7MDAyOCAwMDZEIDAwMjk7ICMgKOKSqDsg4pKoOyDikqg7IChtKTsgKG0pOyApIFBBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIE0KKzI0QTk7MjRBOTsyNEE5OzAwMjggMDA2RSAwMDI5OzAwMjggMDA2RSAwMDI5OyAjICjikqk7IOKSqTsg4pKpOyAobik7IChuKTsgKSBQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBOCisyNEFBOzI0QUE7MjRBQTswMDI4IDAwNkYgMDAyOTswMDI4IDAwNkYgMDAyOTsgIyAo4pKqOyDikqo7IOKSqjsgKG8pOyAobyk7ICkgUEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgTworMjRBQjsyNEFCOzI0QUI7MDAyOCAwMDcwIDAwMjk7MDAyOCAwMDcwIDAwMjk7ICMgKOKSqzsg4pKrOyDikqs7IChwKTsgKHApOyApIFBBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFAKKzI0QUM7MjRBQzsyNEFDOzAwMjggMDA3MSAwMDI5OzAwMjggMDA3MSAwMDI5OyAjICjikqw7IOKSrDsg4pKsOyAocSk7IChxKTsgKSBQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBRCisyNEFEOzI0QUQ7MjRBRDswMDI4IDAwNzIgMDAyOTswMDI4IDAwNzIgMDAyOTsgIyAo4pKtOyDikq07IOKSrTsgKHIpOyAocik7ICkgUEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgUgorMjRBRTsyNEFFOzI0QUU7MDAyOCAwMDczIDAwMjk7MDAyOCAwMDczIDAwMjk7ICMgKOKSrjsg4pKuOyDikq47IChzKTsgKHMpOyApIFBBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFMKKzI0QUY7MjRBRjsyNEFGOzAwMjggMDA3NCAwMDI5OzAwMjggMDA3NCAwMDI5OyAjICjikq87IOKSrzsg4pKvOyAodCk7ICh0KTsgKSBQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBUCisyNEIwOzI0QjA7MjRCMDswMDI4IDAwNzUgMDAyOTswMDI4IDAwNzUgMDAyOTsgIyAo4pKwOyDikrA7IOKSsDsgKHUpOyAodSk7ICkgUEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgVQorMjRCMTsyNEIxOzI0QjE7MDAyOCAwMDc2IDAwMjk7MDAyOCAwMDc2IDAwMjk7ICMgKOKSsTsg4pKxOyDikrE7ICh2KTsgKHYpOyApIFBBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFYKKzI0QjI7MjRCMjsyNEIyOzAwMjggMDA3NyAwMDI5OzAwMjggMDA3NyAwMDI5OyAjICjikrI7IOKSsjsg4pKyOyAodyk7ICh3KTsgKSBQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBXCisyNEIzOzI0QjM7MjRCMzswMDI4IDAwNzggMDAyOTswMDI4IDAwNzggMDAyOTsgIyAo4pKzOyDikrM7IOKSszsgKHgpOyAoeCk7ICkgUEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgWAorMjRCNDsyNEI0OzI0QjQ7MDAyOCAwMDc5IDAwMjk7MDAyOCAwMDc5IDAwMjk7ICMgKOKStDsg4pK0OyDikrQ7ICh5KTsgKHkpOyApIFBBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFkKKzI0QjU7MjRCNTsyNEI1OzAwMjggMDA3QSAwMDI5OzAwMjggMDA3QSAwMDI5OyAjICjikrU7IOKStTsg4pK1OyAoeik7ICh6KTsgKSBQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBaCisyNEI2OzI0QjY7MjRCNjswMDQxOzAwNDE7ICMgKOKStjsg4pK2OyDikrY7IEE7IEE7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBBCisyNEI3OzI0Qjc7MjRCNzswMDQyOzAwNDI7ICMgKOKStzsg4pK3OyDikrc7IEI7IEI7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCisyNEI4OzI0Qjg7MjRCODswMDQzOzAwNDM7ICMgKOKSuDsg4pK4OyDikrg7IEM7IEM7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBDCisyNEI5OzI0Qjk7MjRCOTswMDQ0OzAwNDQ7ICMgKOKSuTsg4pK5OyDikrk7IEQ7IEQ7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBECisyNEJBOzI0QkE7MjRCQTswMDQ1OzAwNDU7ICMgKOKSujsg4pK6OyDikro7IEU7IEU7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCisyNEJCOzI0QkI7MjRCQjswMDQ2OzAwNDY7ICMgKOKSuzsg4pK7OyDikrs7IEY7IEY7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBGCisyNEJDOzI0QkM7MjRCQzswMDQ3OzAwNDc7ICMgKOKSvDsg4pK8OyDikrw7IEc7IEc7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBHCisyNEJEOzI0QkQ7MjRCRDswMDQ4OzAwNDg7ICMgKOKSvTsg4pK9OyDikr07IEg7IEg7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBICisyNEJFOzI0QkU7MjRCRTswMDQ5OzAwNDk7ICMgKOKSvjsg4pK+OyDikr47IEk7IEk7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBJCisyNEJGOzI0QkY7MjRCRjswMDRBOzAwNEE7ICMgKOKSvzsg4pK/OyDikr87IEo7IEo7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBKCisyNEMwOzI0QzA7MjRDMDswMDRCOzAwNEI7ICMgKOKTgDsg4pOAOyDik4A7IEs7IEs7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCisyNEMxOzI0QzE7MjRDMTswMDRDOzAwNEM7ICMgKOKTgTsg4pOBOyDik4E7IEw7IEw7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBMCisyNEMyOzI0QzI7MjRDMjswMDREOzAwNEQ7ICMgKOKTgjsg4pOCOyDik4I7IE07IE07ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBNCisyNEMzOzI0QzM7MjRDMzswMDRFOzAwNEU7ICMgKOKTgzsg4pODOyDik4M7IE47IE47ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCisyNEM0OzI0QzQ7MjRDNDswMDRGOzAwNEY7ICMgKOKThDsg4pOEOyDik4Q7IE87IE87ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBPCisyNEM1OzI0QzU7MjRDNTswMDUwOzAwNTA7ICMgKOKThTsg4pOFOyDik4U7IFA7IFA7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBQCisyNEM2OzI0QzY7MjRDNjswMDUxOzAwNTE7ICMgKOKThjsg4pOGOyDik4Y7IFE7IFE7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCisyNEM3OzI0Qzc7MjRDNzswMDUyOzAwNTI7ICMgKOKThzsg4pOHOyDik4c7IFI7IFI7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBSCisyNEM4OzI0Qzg7MjRDODswMDUzOzAwNTM7ICMgKOKTiDsg4pOIOyDik4g7IFM7IFM7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBTCisyNEM5OzI0Qzk7MjRDOTswMDU0OzAwNTQ7ICMgKOKTiTsg4pOJOyDik4k7IFQ7IFQ7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCisyNENBOzI0Q0E7MjRDQTswMDU1OzAwNTU7ICMgKOKTijsg4pOKOyDik4o7IFU7IFU7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBVCisyNENCOzI0Q0I7MjRDQjswMDU2OzAwNTY7ICMgKOKTizsg4pOLOyDik4s7IFY7IFY7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBWCisyNENDOzI0Q0M7MjRDQzswMDU3OzAwNTc7ICMgKOKTjDsg4pOMOyDik4w7IFc7IFc7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCisyNENEOzI0Q0Q7MjRDRDswMDU4OzAwNTg7ICMgKOKTjTsg4pONOyDik407IFg7IFg7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBYCisyNENFOzI0Q0U7MjRDRTswMDU5OzAwNTk7ICMgKOKTjjsg4pOOOyDik447IFk7IFk7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBZCisyNENGOzI0Q0Y7MjRDRjswMDVBOzAwNUE7ICMgKOKTjzsg4pOPOyDik487IFo7IFo7ICkgQ0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCisyNEQwOzI0RDA7MjREMDswMDYxOzAwNjE7ICMgKOKTkDsg4pOQOyDik5A7IGE7IGE7ICkgQ0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgQQorMjREMTsyNEQxOzI0RDE7MDA2MjswMDYyOyAjICjik5E7IOKTkTsg4pOROyBiOyBiOyApIENJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzI0RDI7MjREMjsyNEQyOzAwNjM7MDA2MzsgIyAo4pOSOyDik5I7IOKTkjsgYzsgYzsgKSBDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBDCisyNEQzOzI0RDM7MjREMzswMDY0OzAwNjQ7ICMgKOKTkzsg4pOTOyDik5M7IGQ7IGQ7ICkgQ0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgRAorMjRENDsyNEQ0OzI0RDQ7MDA2NTswMDY1OyAjICjik5Q7IOKTlDsg4pOUOyBlOyBlOyApIENJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEUKKzI0RDU7MjRENTsyNEQ1OzAwNjY7MDA2NjsgIyAo4pOVOyDik5U7IOKTlTsgZjsgZjsgKSBDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBGCisyNEQ2OzI0RDY7MjRENjswMDY3OzAwNjc7ICMgKOKTljsg4pOWOyDik5Y7IGc7IGc7ICkgQ0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgRworMjRENzsyNEQ3OzI0RDc7MDA2ODswMDY4OyAjICjik5c7IOKTlzsg4pOXOyBoOyBoOyApIENJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEgKKzI0RDg7MjREODsyNEQ4OzAwNjk7MDA2OTsgIyAo4pOYOyDik5g7IOKTmDsgaTsgaTsgKSBDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBJCisyNEQ5OzI0RDk7MjREOTswMDZBOzAwNkE7ICMgKOKTmTsg4pOZOyDik5k7IGo7IGo7ICkgQ0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgSgorMjREQTsyNERBOzI0REE7MDA2QjswMDZCOyAjICjik5o7IOKTmjsg4pOaOyBrOyBrOyApIENJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEsKKzI0REI7MjREQjsyNERCOzAwNkM7MDA2QzsgIyAo4pObOyDik5s7IOKTmzsgbDsgbDsgKSBDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBMCisyNERDOzI0REM7MjREQzswMDZEOzAwNkQ7ICMgKOKTnDsg4pOcOyDik5w7IG07IG07ICkgQ0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgTQorMjRERDsyNEREOzI0REQ7MDA2RTswMDZFOyAjICjik507IOKTnTsg4pOdOyBuOyBuOyApIENJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIE4KKzI0REU7MjRERTsyNERFOzAwNkY7MDA2RjsgIyAo4pOeOyDik547IOKTnjsgbzsgbzsgKSBDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBPCisyNERGOzI0REY7MjRERjswMDcwOzAwNzA7ICMgKOKTnzsg4pOfOyDik587IHA7IHA7ICkgQ0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgUAorMjRFMDsyNEUwOzI0RTA7MDA3MTswMDcxOyAjICjik6A7IOKToDsg4pOgOyBxOyBxOyApIENJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFEKKzI0RTE7MjRFMTsyNEUxOzAwNzI7MDA3MjsgIyAo4pOhOyDik6E7IOKToTsgcjsgcjsgKSBDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBSCisyNEUyOzI0RTI7MjRFMjswMDczOzAwNzM7ICMgKOKTojsg4pOiOyDik6I7IHM7IHM7ICkgQ0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgUworMjRFMzsyNEUzOzI0RTM7MDA3NDswMDc0OyAjICjik6M7IOKTozsg4pOjOyB0OyB0OyApIENJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFQKKzI0RTQ7MjRFNDsyNEU0OzAwNzU7MDA3NTsgIyAo4pOkOyDik6Q7IOKTpDsgdTsgdTsgKSBDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBVCisyNEU1OzI0RTU7MjRFNTswMDc2OzAwNzY7ICMgKOKTpTsg4pOlOyDik6U7IHY7IHY7ICkgQ0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgVgorMjRFNjsyNEU2OzI0RTY7MDA3NzswMDc3OyAjICjik6Y7IOKTpjsg4pOmOyB3OyB3OyApIENJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFcKKzI0RTc7MjRFNzsyNEU3OzAwNzg7MDA3ODsgIyAo4pOnOyDik6c7IOKTpzsgeDsgeDsgKSBDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBYCisyNEU4OzI0RTg7MjRFODswMDc5OzAwNzk7ICMgKOKTqDsg4pOoOyDik6g7IHk7IHk7ICkgQ0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgWQorMjRFOTsyNEU5OzI0RTk7MDA3QTswMDdBOyAjICjik6k7IOKTqTsg4pOpOyB6OyB6OyApIENJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFoKKzI0RUE7MjRFQTsyNEVBOzAwMzA7MDAzMDsgIyAo4pOqOyDik6o7IOKTqjsgMDsgMDsgKSBDSVJDTEVEIERJR0lUIFpFUk8KKzJFOUY7MkU5RjsyRTlGOzZCQ0Q7NkJDRDsgIyAo4rqfOyDiup87IOK6nzsg5q+NOyDmr407ICkgQ0pLIFJBRElDQUwgTU9USEVSCisyRUYzOzJFRjM7MkVGMzs5RjlGOzlGOUY7ICMgKOK7szsg4ruzOyDiu7M7IOm+nzsg6b6fOyApIENKSyBSQURJQ0FMIEMtU0lNUExJRklFRCBUVVJUTEUKKzJGMDA7MkYwMDsyRjAwOzRFMDA7NEUwMDsgIyAo4ryAOyDivIA7IOK8gDsg5LiAOyDkuIA7ICkgS0FOR1hJIFJBRElDQUwgT05FCisyRjAxOzJGMDE7MkYwMTs0RTI4OzRFMjg7ICMgKOK8gTsg4ryBOyDivIE7IOS4qDsg5LioOyApIEtBTkdYSSBSQURJQ0FMIExJTkUKKzJGMDI7MkYwMjsyRjAyOzRFMzY7NEUzNjsgIyAo4ryCOyDivII7IOK8gjsg5Li2OyDkuLY7ICkgS0FOR1hJIFJBRElDQUwgRE9UCisyRjAzOzJGMDM7MkYwMzs0RTNGOzRFM0Y7ICMgKOK8gzsg4ryDOyDivIM7IOS4vzsg5Li/OyApIEtBTkdYSSBSQURJQ0FMIFNMQVNICisyRjA0OzJGMDQ7MkYwNDs0RTU5OzRFNTk7ICMgKOK8hDsg4ryEOyDivIQ7IOS5mTsg5LmZOyApIEtBTkdYSSBSQURJQ0FMIFNFQ09ORAorMkYwNTsyRjA1OzJGMDU7NEU4NTs0RTg1OyAjICjivIU7IOK8hTsg4ryFOyDkuoU7IOS6hTsgKSBLQU5HWEkgUkFESUNBTCBIT09LCisyRjA2OzJGMDY7MkYwNjs0RThDOzRFOEM7ICMgKOK8hjsg4ryGOyDivIY7IOS6jDsg5LqMOyApIEtBTkdYSSBSQURJQ0FMIFRXTworMkYwNzsyRjA3OzJGMDc7NEVBMDs0RUEwOyAjICjivIc7IOK8hzsg4ryHOyDkuqA7IOS6oDsgKSBLQU5HWEkgUkFESUNBTCBMSUQKKzJGMDg7MkYwODsyRjA4OzRFQkE7NEVCQTsgIyAo4ryIOyDivIg7IOK8iDsg5Lq6OyDkuro7ICkgS0FOR1hJIFJBRElDQUwgTUFOCisyRjA5OzJGMDk7MkYwOTs1MTNGOzUxM0Y7ICMgKOK8iTsg4ryJOyDivIk7IOWEvzsg5YS/OyApIEtBTkdYSSBSQURJQ0FMIExFR1MKKzJGMEE7MkYwQTsyRjBBOzUxNjU7NTE2NTsgIyAo4ryKOyDivIo7IOK8ijsg5YWlOyDlhaU7ICkgS0FOR1hJIFJBRElDQUwgRU5URVIKKzJGMEI7MkYwQjsyRjBCOzUxNkI7NTE2QjsgIyAo4ryLOyDivIs7IOK8izsg5YWrOyDlhas7ICkgS0FOR1hJIFJBRElDQUwgRUlHSFQKKzJGMEM7MkYwQzsyRjBDOzUxODI7NTE4MjsgIyAo4ryMOyDivIw7IOK8jDsg5YaCOyDlhoI7ICkgS0FOR1hJIFJBRElDQUwgRE9XTiBCT1gKKzJGMEQ7MkYwRDsyRjBEOzUxOTY7NTE5NjsgIyAo4ryNOyDivI07IOK8jTsg5YaWOyDlhpY7ICkgS0FOR1hJIFJBRElDQUwgQ09WRVIKKzJGMEU7MkYwRTsyRjBFOzUxQUI7NTFBQjsgIyAo4ryOOyDivI47IOK8jjsg5YarOyDlhqs7ICkgS0FOR1hJIFJBRElDQUwgSUNFCisyRjBGOzJGMEY7MkYwRjs1MUUwOzUxRTA7ICMgKOK8jzsg4ryPOyDivI87IOWHoDsg5YegOyApIEtBTkdYSSBSQURJQ0FMIFRBQkxFCisyRjEwOzJGMTA7MkYxMDs1MUY1OzUxRjU7ICMgKOK8kDsg4ryQOyDivJA7IOWHtTsg5Ye1OyApIEtBTkdYSSBSQURJQ0FMIE9QRU4gQk9YCisyRjExOzJGMTE7MkYxMTs1MjAwOzUyMDA7ICMgKOK8kTsg4ryROyDivJE7IOWIgDsg5YiAOyApIEtBTkdYSSBSQURJQ0FMIEtOSUZFCisyRjEyOzJGMTI7MkYxMjs1MjlCOzUyOUI7ICMgKOK8kjsg4rySOyDivJI7IOWKmzsg5YqbOyApIEtBTkdYSSBSQURJQ0FMIFBPV0VSCisyRjEzOzJGMTM7MkYxMzs1MkY5OzUyRjk7ICMgKOK8kzsg4ryTOyDivJM7IOWLuTsg5Yu5OyApIEtBTkdYSSBSQURJQ0FMIFdSQVAKKzJGMTQ7MkYxNDsyRjE0OzUzMTU7NTMxNTsgIyAo4ryUOyDivJQ7IOK8lDsg5YyVOyDljJU7ICkgS0FOR1hJIFJBRElDQUwgU1BPT04KKzJGMTU7MkYxNTsyRjE1OzUzMUE7NTMxQTsgIyAo4ryVOyDivJU7IOK8lTsg5YyaOyDljJo7ICkgS0FOR1hJIFJBRElDQUwgUklHSFQgT1BFTiBCT1gKKzJGMTY7MkYxNjsyRjE2OzUzMzg7NTMzODsgIyAo4ryWOyDivJY7IOK8ljsg5Yy4OyDljLg7ICkgS0FOR1hJIFJBRElDQUwgSElESU5HIEVOQ0xPU1VSRQorMkYxNzsyRjE3OzJGMTc7NTM0MTs1MzQxOyAjICjivJc7IOK8lzsg4ryXOyDljYE7IOWNgTsgKSBLQU5HWEkgUkFESUNBTCBURU4KKzJGMTg7MkYxODsyRjE4OzUzNUM7NTM1QzsgIyAo4ryYOyDivJg7IOK8mDsg5Y2cOyDljZw7ICkgS0FOR1hJIFJBRElDQUwgRElWSU5BVElPTgorMkYxOTsyRjE5OzJGMTk7NTM2OTs1MzY5OyAjICjivJk7IOK8mTsg4ryZOyDljak7IOWNqTsgKSBLQU5HWEkgUkFESUNBTCBTRUFMCisyRjFBOzJGMUE7MkYxQTs1MzgyOzUzODI7ICMgKOK8mjsg4ryaOyDivJo7IOWOgjsg5Y6COyApIEtBTkdYSSBSQURJQ0FMIENMSUZGCisyRjFCOzJGMUI7MkYxQjs1M0I2OzUzQjY7ICMgKOK8mzsg4rybOyDivJs7IOWOtjsg5Y62OyApIEtBTkdYSSBSQURJQ0FMIFBSSVZBVEUKKzJGMUM7MkYxQzsyRjFDOzUzQzg7NTNDODsgIyAo4rycOyDivJw7IOK8nDsg5Y+IOyDlj4g7ICkgS0FOR1hJIFJBRElDQUwgQUdBSU4KKzJGMUQ7MkYxRDsyRjFEOzUzRTM7NTNFMzsgIyAo4rydOyDivJ07IOK8nTsg5Y+jOyDlj6M7ICkgS0FOR1hJIFJBRElDQUwgTU9VVEgKKzJGMUU7MkYxRTsyRjFFOzU2RDc7NTZENzsgIyAo4ryeOyDivJ47IOK8njsg5ZuXOyDlm5c7ICkgS0FOR1hJIFJBRElDQUwgRU5DTE9TVVJFCisyRjFGOzJGMUY7MkYxRjs1NzFGOzU3MUY7ICMgKOK8nzsg4ryfOyDivJ87IOWcnzsg5ZyfOyApIEtBTkdYSSBSQURJQ0FMIEVBUlRICisyRjIwOzJGMjA7MkYyMDs1OEVCOzU4RUI7ICMgKOK8oDsg4rygOyDivKA7IOWjqzsg5aOrOyApIEtBTkdYSSBSQURJQ0FMIFNDSE9MQVIKKzJGMjE7MkYyMTsyRjIxOzU5MDI7NTkwMjsgIyAo4ryhOyDivKE7IOK8oTsg5aSCOyDlpII7ICkgS0FOR1hJIFJBRElDQUwgR08KKzJGMjI7MkYyMjsyRjIyOzU5MEE7NTkwQTsgIyAo4ryiOyDivKI7IOK8ojsg5aSKOyDlpIo7ICkgS0FOR1hJIFJBRElDQUwgR08gU0xPV0xZCisyRjIzOzJGMjM7MkYyMzs1OTE1OzU5MTU7ICMgKOK8ozsg4ryjOyDivKM7IOWklTsg5aSVOyApIEtBTkdYSSBSQURJQ0FMIEVWRU5JTkcKKzJGMjQ7MkYyNDsyRjI0OzU5Mjc7NTkyNzsgIyAo4rykOyDivKQ7IOK8pDsg5aSnOyDlpKc7ICkgS0FOR1hJIFJBRElDQUwgQklHCisyRjI1OzJGMjU7MkYyNTs1OTczOzU5NzM7ICMgKOK8pTsg4rylOyDivKU7IOWlszsg5aWzOyApIEtBTkdYSSBSQURJQ0FMIFdPTUFOCisyRjI2OzJGMjY7MkYyNjs1QjUwOzVCNTA7ICMgKOK8pjsg4rymOyDivKY7IOWtkDsg5a2QOyApIEtBTkdYSSBSQURJQ0FMIENISUxECisyRjI3OzJGMjc7MkYyNzs1QjgwOzVCODA7ICMgKOK8pzsg4rynOyDivKc7IOWugDsg5a6AOyApIEtBTkdYSSBSQURJQ0FMIFJPT0YKKzJGMjg7MkYyODsyRjI4OzVCRjg7NUJGODsgIyAo4ryoOyDivKg7IOK8qDsg5a+4OyDlr7g7ICkgS0FOR1hJIFJBRElDQUwgSU5DSAorMkYyOTsyRjI5OzJGMjk7NUMwRjs1QzBGOyAjICjivKk7IOK8qTsg4rypOyDlsI87IOWwjzsgKSBLQU5HWEkgUkFESUNBTCBTTUFMTAorMkYyQTsyRjJBOzJGMkE7NUMyMjs1QzIyOyAjICjivKo7IOK8qjsg4ryqOyDlsKI7IOWwojsgKSBLQU5HWEkgUkFESUNBTCBMQU1FCisyRjJCOzJGMkI7MkYyQjs1QzM4OzVDMzg7ICMgKOK8qzsg4ryrOyDivKs7IOWwuDsg5bC4OyApIEtBTkdYSSBSQURJQ0FMIENPUlBTRQorMkYyQzsyRjJDOzJGMkM7NUM2RTs1QzZFOyAjICjivKw7IOK8rDsg4rysOyDlsa47IOWxrjsgKSBLQU5HWEkgUkFESUNBTCBTUFJPVVQKKzJGMkQ7MkYyRDsyRjJEOzVDNzE7NUM3MTsgIyAo4rytOyDivK07IOK8rTsg5bGxOyDlsbE7ICkgS0FOR1hJIFJBRElDQUwgTU9VTlRBSU4KKzJGMkU7MkYyRTsyRjJFOzVEREI7NUREQjsgIyAo4ryuOyDivK47IOK8rjsg5bebOyDlt5s7ICkgS0FOR1hJIFJBRElDQUwgUklWRVIKKzJGMkY7MkYyRjsyRjJGOzVERTU7NURFNTsgIyAo4ryvOyDivK87IOK8rzsg5belOyDlt6U7ICkgS0FOR1hJIFJBRElDQUwgV09SSworMkYzMDsyRjMwOzJGMzA7NURGMTs1REYxOyAjICjivLA7IOK8sDsg4rywOyDlt7E7IOW3sTsgKSBLQU5HWEkgUkFESUNBTCBPTkVTRUxGCisyRjMxOzJGMzE7MkYzMTs1REZFOzVERkU7ICMgKOK8sTsg4ryxOyDivLE7IOW3vjsg5be+OyApIEtBTkdYSSBSQURJQ0FMIFRVUkJBTgorMkYzMjsyRjMyOzJGMzI7NUU3Mjs1RTcyOyAjICjivLI7IOK8sjsg4ryyOyDlubI7IOW5sjsgKSBLQU5HWEkgUkFESUNBTCBEUlkKKzJGMzM7MkYzMzsyRjMzOzVFN0E7NUU3QTsgIyAo4ryzOyDivLM7IOK8szsg5bm6OyDlubo7ICkgS0FOR1hJIFJBRElDQUwgU0hPUlQgVEhSRUFECisyRjM0OzJGMzQ7MkYzNDs1RTdGOzVFN0Y7ICMgKOK8tDsg4ry0OyDivLQ7IOW5vzsg5bm/OyApIEtBTkdYSSBSQURJQ0FMIERPVFRFRCBDTElGRgorMkYzNTsyRjM1OzJGMzU7NUVGNDs1RUY0OyAjICjivLU7IOK8tTsg4ry1OyDlu7Q7IOW7tDsgKSBLQU5HWEkgUkFESUNBTCBMT05HIFNUUklERQorMkYzNjsyRjM2OzJGMzY7NUVGRTs1RUZFOyAjICjivLY7IOK8tjsg4ry2OyDlu747IOW7vjsgKSBLQU5HWEkgUkFESUNBTCBUV08gSEFORFMKKzJGMzc7MkYzNzsyRjM3OzVGMEI7NUYwQjsgIyAo4ry3OyDivLc7IOK8tzsg5byLOyDlvIs7ICkgS0FOR1hJIFJBRElDQUwgU0hPT1QKKzJGMzg7MkYzODsyRjM4OzVGMTM7NUYxMzsgIyAo4ry4OyDivLg7IOK8uDsg5byTOyDlvJM7ICkgS0FOR1hJIFJBRElDQUwgQk9XCisyRjM5OzJGMzk7MkYzOTs1RjUwOzVGNTA7ICMgKOK8uTsg4ry5OyDivLk7IOW9kDsg5b2QOyApIEtBTkdYSSBSQURJQ0FMIFNOT1VUCisyRjNBOzJGM0E7MkYzQTs1RjYxOzVGNjE7ICMgKOK8ujsg4ry6OyDivLo7IOW9oTsg5b2hOyApIEtBTkdYSSBSQURJQ0FMIEJSSVNUTEUKKzJGM0I7MkYzQjsyRjNCOzVGNzM7NUY3MzsgIyAo4ry7OyDivLs7IOK8uzsg5b2zOyDlvbM7ICkgS0FOR1hJIFJBRElDQUwgU1RFUAorMkYzQzsyRjNDOzJGM0M7NUZDMzs1RkMzOyAjICjivLw7IOK8vDsg4ry8OyDlv4M7IOW/gzsgKSBLQU5HWEkgUkFESUNBTCBIRUFSVAorMkYzRDsyRjNEOzJGM0Q7NjIwODs2MjA4OyAjICjivL07IOK8vTsg4ry9OyDmiIg7IOaIiDsgKSBLQU5HWEkgUkFESUNBTCBIQUxCRVJECisyRjNFOzJGM0U7MkYzRTs2MjM2OzYyMzY7ICMgKOK8vjsg4ry+OyDivL47IOaItjsg5oi2OyApIEtBTkdYSSBSQURJQ0FMIERPT1IKKzJGM0Y7MkYzRjsyRjNGOzYyNEI7NjI0QjsgIyAo4ry/OyDivL87IOK8vzsg5omLOyDmiYs7ICkgS0FOR1hJIFJBRElDQUwgSEFORAorMkY0MDsyRjQwOzJGNDA7NjUyRjs2NTJGOyAjICjivYA7IOK9gDsg4r2AOyDmlK87IOaUrzsgKSBLQU5HWEkgUkFESUNBTCBCUkFOQ0gKKzJGNDE7MkY0MTsyRjQxOzY1MzQ7NjUzNDsgIyAo4r2BOyDivYE7IOK9gTsg5pS0OyDmlLQ7ICkgS0FOR1hJIFJBRElDQUwgUkFQCisyRjQyOzJGNDI7MkY0Mjs2NTg3OzY1ODc7ICMgKOK9gjsg4r2COyDivYI7IOaWhzsg5paHOyApIEtBTkdYSSBSQURJQ0FMIFNDUklQVAorMkY0MzsyRjQzOzJGNDM7NjU5Nzs2NTk3OyAjICjivYM7IOK9gzsg4r2DOyDmlpc7IOaWlzsgKSBLQU5HWEkgUkFESUNBTCBESVBQRVIKKzJGNDQ7MkY0NDsyRjQ0OzY1QTQ7NjVBNDsgIyAo4r2EOyDivYQ7IOK9hDsg5pakOyDmlqQ7ICkgS0FOR1hJIFJBRElDQUwgQVhFCisyRjQ1OzJGNDU7MkY0NTs2NUI5OzY1Qjk7ICMgKOK9hTsg4r2FOyDivYU7IOaWuTsg5pa5OyApIEtBTkdYSSBSQURJQ0FMIFNRVUFSRQorMkY0NjsyRjQ2OzJGNDY7NjVFMDs2NUUwOyAjICjivYY7IOK9hjsg4r2GOyDml6A7IOaXoDsgKSBLQU5HWEkgUkFESUNBTCBOT1QKKzJGNDc7MkY0NzsyRjQ3OzY1RTU7NjVFNTsgIyAo4r2HOyDivYc7IOK9hzsg5pelOyDml6U7ICkgS0FOR1hJIFJBRElDQUwgU1VOCisyRjQ4OzJGNDg7MkY0ODs2NkYwOzY2RjA7ICMgKOK9iDsg4r2IOyDivYg7IOabsDsg5puwOyApIEtBTkdYSSBSQURJQ0FMIFNBWQorMkY0OTsyRjQ5OzJGNDk7NjcwODs2NzA4OyAjICjivYk7IOK9iTsg4r2JOyDmnIg7IOaciDsgKSBLQU5HWEkgUkFESUNBTCBNT09OCisyRjRBOzJGNEE7MkY0QTs2NzI4OzY3Mjg7ICMgKOK9ijsg4r2KOyDivYo7IOacqDsg5pyoOyApIEtBTkdYSSBSQURJQ0FMIFRSRUUKKzJGNEI7MkY0QjsyRjRCOzZCMjA7NkIyMDsgIyAo4r2LOyDivYs7IOK9izsg5qygOyDmrKA7ICkgS0FOR1hJIFJBRElDQUwgTEFDSworMkY0QzsyRjRDOzJGNEM7NkI2Mjs2QjYyOyAjICjivYw7IOK9jDsg4r2MOyDmraI7IOatojsgKSBLQU5HWEkgUkFESUNBTCBTVE9QCisyRjREOzJGNEQ7MkY0RDs2Qjc5OzZCNzk7ICMgKOK9jTsg4r2NOyDivY07IOatuTsg5q25OyApIEtBTkdYSSBSQURJQ0FMIERFQVRICisyRjRFOzJGNEU7MkY0RTs2QkIzOzZCQjM7ICMgKOK9jjsg4r2OOyDivY47IOauszsg5q6zOyApIEtBTkdYSSBSQURJQ0FMIFdFQVBPTgorMkY0RjsyRjRGOzJGNEY7NkJDQjs2QkNCOyAjICjivY87IOK9jzsg4r2POyDmr4s7IOavizsgKSBLQU5HWEkgUkFESUNBTCBETyBOT1QKKzJGNTA7MkY1MDsyRjUwOzZCRDQ7NkJENDsgIyAo4r2QOyDivZA7IOK9kDsg5q+UOyDmr5Q7ICkgS0FOR1hJIFJBRElDQUwgQ09NUEFSRQorMkY1MTsyRjUxOzJGNTE7NkJEQjs2QkRCOyAjICjivZE7IOK9kTsg4r2ROyDmr5s7IOavmzsgKSBLQU5HWEkgUkFESUNBTCBGVVIKKzJGNTI7MkY1MjsyRjUyOzZDMEY7NkMwRjsgIyAo4r2SOyDivZI7IOK9kjsg5rCPOyDmsI87ICkgS0FOR1hJIFJBRElDQUwgQ0xBTgorMkY1MzsyRjUzOzJGNTM7NkMxNDs2QzE0OyAjICjivZM7IOK9kzsg4r2TOyDmsJQ7IOawlDsgKSBLQU5HWEkgUkFESUNBTCBTVEVBTQorMkY1NDsyRjU0OzJGNTQ7NkMzNDs2QzM0OyAjICjivZQ7IOK9lDsg4r2UOyDmsLQ7IOawtDsgKSBLQU5HWEkgUkFESUNBTCBXQVRFUgorMkY1NTsyRjU1OzJGNTU7NzA2Qjs3MDZCOyAjICjivZU7IOK9lTsg4r2VOyDngas7IOeBqzsgKSBLQU5HWEkgUkFESUNBTCBGSVJFCisyRjU2OzJGNTY7MkY1Njs3MjJBOzcyMkE7ICMgKOK9ljsg4r2WOyDivZY7IOeIqjsg54iqOyApIEtBTkdYSSBSQURJQ0FMIENMQVcKKzJGNTc7MkY1NzsyRjU3OzcyMzY7NzIzNjsgIyAo4r2XOyDivZc7IOK9lzsg54i2OyDniLY7ICkgS0FOR1hJIFJBRElDQUwgRkFUSEVSCisyRjU4OzJGNTg7MkY1ODs3MjNCOzcyM0I7ICMgKOK9mDsg4r2YOyDivZg7IOeIuzsg54i7OyApIEtBTkdYSSBSQURJQ0FMIERPVUJMRSBYCisyRjU5OzJGNTk7MkY1OTs3MjNGOzcyM0Y7ICMgKOK9mTsg4r2ZOyDivZk7IOeIvzsg54i/OyApIEtBTkdYSSBSQURJQ0FMIEhBTEYgVFJFRSBUUlVOSworMkY1QTsyRjVBOzJGNUE7NzI0Nzs3MjQ3OyAjICjivZo7IOK9mjsg4r2aOyDniYc7IOeJhzsgKSBLQU5HWEkgUkFESUNBTCBTTElDRQorMkY1QjsyRjVCOzJGNUI7NzI1OTs3MjU5OyAjICjivZs7IOK9mzsg4r2bOyDniZk7IOeJmTsgKSBLQU5HWEkgUkFESUNBTCBGQU5HCisyRjVDOzJGNUM7MkY1Qzs3MjVCOzcyNUI7ICMgKOK9nDsg4r2cOyDivZw7IOeJmzsg54mbOyApIEtBTkdYSSBSQURJQ0FMIENPVworMkY1RDsyRjVEOzJGNUQ7NzJBQzs3MkFDOyAjICjivZ07IOK9nTsg4r2dOyDniqw7IOeKrDsgKSBLQU5HWEkgUkFESUNBTCBET0cKKzJGNUU7MkY1RTsyRjVFOzczODQ7NzM4NDsgIyAo4r2eOyDivZ47IOK9njsg546EOyDnjoQ7ICkgS0FOR1hJIFJBRElDQUwgUFJPRk9VTkQKKzJGNUY7MkY1RjsyRjVGOzczODk7NzM4OTsgIyAo4r2fOyDivZ87IOK9nzsg546JOyDnjok7ICkgS0FOR1hJIFJBRElDQUwgSkFERQorMkY2MDsyRjYwOzJGNjA7NzREQzs3NERDOyAjICjivaA7IOK9oDsg4r2gOyDnk5w7IOeTnDsgKSBLQU5HWEkgUkFESUNBTCBNRUxPTgorMkY2MTsyRjYxOzJGNjE7NzRFNjs3NEU2OyAjICjivaE7IOK9oTsg4r2hOyDnk6Y7IOeTpjsgKSBLQU5HWEkgUkFESUNBTCBUSUxFCisyRjYyOzJGNjI7MkY2Mjs3NTE4Ozc1MTg7ICMgKOK9ojsg4r2iOyDivaI7IOeUmDsg55SYOyApIEtBTkdYSSBSQURJQ0FMIFNXRUVUCisyRjYzOzJGNjM7MkY2Mzs3NTFGOzc1MUY7ICMgKOK9ozsg4r2jOyDivaM7IOeUnzsg55SfOyApIEtBTkdYSSBSQURJQ0FMIExJRkUKKzJGNjQ7MkY2NDsyRjY0Ozc1Mjg7NzUyODsgIyAo4r2kOyDivaQ7IOK9pDsg55SoOyDnlKg7ICkgS0FOR1hJIFJBRElDQUwgVVNFCisyRjY1OzJGNjU7MkY2NTs3NTMwOzc1MzA7ICMgKOK9pTsg4r2lOyDivaU7IOeUsDsg55SwOyApIEtBTkdYSSBSQURJQ0FMIEZJRUxECisyRjY2OzJGNjY7MkY2Njs3NThCOzc1OEI7ICMgKOK9pjsg4r2mOyDivaY7IOeWizsg55aLOyApIEtBTkdYSSBSQURJQ0FMIEJPTFQgT0YgQ0xPVEgKKzJGNjc7MkY2NzsyRjY3Ozc1OTI7NzU5MjsgIyAo4r2nOyDivac7IOK9pzsg55aSOyDnlpI7ICkgS0FOR1hJIFJBRElDQUwgU0lDS05FU1MKKzJGNjg7MkY2ODsyRjY4Ozc2NzY7NzY3NjsgIyAo4r2oOyDivag7IOK9qDsg55m2OyDnmbY7ICkgS0FOR1hJIFJBRElDQUwgRE9UVEVEIFRFTlQKKzJGNjk7MkY2OTsyRjY5Ozc2N0Q7NzY3RDsgIyAo4r2pOyDivak7IOK9qTsg55m9OyDnmb07ICkgS0FOR1hJIFJBRElDQUwgV0hJVEUKKzJGNkE7MkY2QTsyRjZBOzc2QUU7NzZBRTsgIyAo4r2qOyDivao7IOK9qjsg55quOyDnmq47ICkgS0FOR1hJIFJBRElDQUwgU0tJTgorMkY2QjsyRjZCOzJGNkI7NzZCRjs3NkJGOyAjICjivas7IOK9qzsg4r2rOyDnmr87IOeavzsgKSBLQU5HWEkgUkFESUNBTCBESVNICisyRjZDOzJGNkM7MkY2Qzs3NkVFOzc2RUU7ICMgKOK9rDsg4r2sOyDivaw7IOebrjsg55uuOyApIEtBTkdYSSBSQURJQ0FMIEVZRQorMkY2RDsyRjZEOzJGNkQ7NzdEQjs3N0RCOyAjICjiva07IOK9rTsg4r2tOyDnn5s7IOefmzsgKSBLQU5HWEkgUkFESUNBTCBTUEVBUgorMkY2RTsyRjZFOzJGNkU7NzdFMjs3N0UyOyAjICjiva47IOK9rjsg4r2uOyDnn6I7IOefojsgKSBLQU5HWEkgUkFESUNBTCBBUlJPVworMkY2RjsyRjZGOzJGNkY7NzdGMzs3N0YzOyAjICjiva87IOK9rzsg4r2vOyDnn7M7IOefszsgKSBLQU5HWEkgUkFESUNBTCBTVE9ORQorMkY3MDsyRjcwOzJGNzA7NzkzQTs3OTNBOyAjICjivbA7IOK9sDsg4r2wOyDnpLo7IOekujsgKSBLQU5HWEkgUkFESUNBTCBTUElSSVQKKzJGNzE7MkY3MTsyRjcxOzc5Qjg7NzlCODsgIyAo4r2xOyDivbE7IOK9sTsg56a4OyDnprg7ICkgS0FOR1hJIFJBRElDQUwgVFJBQ0sKKzJGNzI7MkY3MjsyRjcyOzc5QkU7NzlCRTsgIyAo4r2yOyDivbI7IOK9sjsg56a+OyDnpr47ICkgS0FOR1hJIFJBRElDQUwgR1JBSU4KKzJGNzM7MkY3MzsyRjczOzdBNzQ7N0E3NDsgIyAo4r2zOyDivbM7IOK9szsg56m0OyDnqbQ7ICkgS0FOR1hJIFJBRElDQUwgQ0FWRQorMkY3NDsyRjc0OzJGNzQ7N0FDQjs3QUNCOyAjICjivbQ7IOK9tDsg4r20OyDnq4s7IOerizsgKSBLQU5HWEkgUkFESUNBTCBTVEFORAorMkY3NTsyRjc1OzJGNzU7N0FGOTs3QUY5OyAjICjivbU7IOK9tTsg4r21OyDnq7k7IOeruTsgKSBLQU5HWEkgUkFESUNBTCBCQU1CT08KKzJGNzY7MkY3NjsyRjc2OzdDNzM7N0M3MzsgIyAo4r22OyDivbY7IOK9tjsg57GzOyDnsbM7ICkgS0FOR1hJIFJBRElDQUwgUklDRQorMkY3NzsyRjc3OzJGNzc7N0NGODs3Q0Y4OyAjICjivbc7IOK9tzsg4r23OyDns7g7IOezuDsgKSBLQU5HWEkgUkFESUNBTCBTSUxLCisyRjc4OzJGNzg7MkY3ODs3RjM2OzdGMzY7ICMgKOK9uDsg4r24OyDivbg7IOe8tjsg57y2OyApIEtBTkdYSSBSQURJQ0FMIEpBUgorMkY3OTsyRjc5OzJGNzk7N0Y1MTs3RjUxOyAjICjivbk7IOK9uTsg4r25OyDnvZE7IOe9kTsgKSBLQU5HWEkgUkFESUNBTCBORVQKKzJGN0E7MkY3QTsyRjdBOzdGOEE7N0Y4QTsgIyAo4r26OyDivbo7IOK9ujsg576KOyDnvoo7ICkgS0FOR1hJIFJBRElDQUwgU0hFRVAKKzJGN0I7MkY3QjsyRjdCOzdGQkQ7N0ZCRDsgIyAo4r27OyDivbs7IOK9uzsg5769OyDnvr07ICkgS0FOR1hJIFJBRElDQUwgRkVBVEhFUgorMkY3QzsyRjdDOzJGN0M7ODAwMTs4MDAxOyAjICjivbw7IOK9vDsg4r28OyDogIE7IOiAgTsgKSBLQU5HWEkgUkFESUNBTCBPTEQKKzJGN0Q7MkY3RDsyRjdEOzgwMEM7ODAwQzsgIyAo4r29OyDivb07IOK9vTsg6ICMOyDogIw7ICkgS0FOR1hJIFJBRElDQUwgQU5ECisyRjdFOzJGN0U7MkY3RTs4MDEyOzgwMTI7ICMgKOK9vjsg4r2+OyDivb47IOiAkjsg6ICSOyApIEtBTkdYSSBSQURJQ0FMIFBMT1cKKzJGN0Y7MkY3RjsyRjdGOzgwMzM7ODAzMzsgIyAo4r2/OyDivb87IOK9vzsg6ICzOyDogLM7ICkgS0FOR1hJIFJBRElDQUwgRUFSCisyRjgwOzJGODA7MkY4MDs4MDdGOzgwN0Y7ICMgKOK+gDsg4r6AOyDivoA7IOiBvzsg6IG/OyApIEtBTkdYSSBSQURJQ0FMIEJSVVNICisyRjgxOzJGODE7MkY4MTs4MDg5OzgwODk7ICMgKOK+gTsg4r6BOyDivoE7IOiCiTsg6IKJOyApIEtBTkdYSSBSQURJQ0FMIE1FQVQKKzJGODI7MkY4MjsyRjgyOzgxRTM7ODFFMzsgIyAo4r6COyDivoI7IOK+gjsg6IejOyDoh6M7ICkgS0FOR1hJIFJBRElDQUwgTUlOSVNURVIKKzJGODM7MkY4MzsyRjgzOzgxRUE7ODFFQTsgIyAo4r6DOyDivoM7IOK+gzsg6IeqOyDoh6o7ICkgS0FOR1hJIFJBRElDQUwgU0VMRgorMkY4NDsyRjg0OzJGODQ7ODFGMzs4MUYzOyAjICjivoQ7IOK+hDsg4r6EOyDoh7M7IOiHszsgKSBLQU5HWEkgUkFESUNBTCBBUlJJVkUKKzJGODU7MkY4NTsyRjg1OzgxRkM7ODFGQzsgIyAo4r6FOyDivoU7IOK+hTsg6Ie8OyDoh7w7ICkgS0FOR1hJIFJBRElDQUwgTU9SVEFSCisyRjg2OzJGODY7MkY4Njs4MjBDOzgyMEM7ICMgKOK+hjsg4r6GOyDivoY7IOiIjDsg6IiMOyApIEtBTkdYSSBSQURJQ0FMIFRPTkdVRQorMkY4NzsyRjg3OzJGODc7ODIxQjs4MjFCOyAjICjivoc7IOK+hzsg4r6HOyDoiJs7IOiImzsgKSBLQU5HWEkgUkFESUNBTCBPUFBPU0UKKzJGODg7MkY4ODsyRjg4OzgyMUY7ODIxRjsgIyAo4r6IOyDivog7IOK+iDsg6IifOyDoiJ87ICkgS0FOR1hJIFJBRElDQUwgQk9BVAorMkY4OTsyRjg5OzJGODk7ODI2RTs4MjZFOyAjICjivok7IOK+iTsg4r6JOyDoia47IOiJrjsgKSBLQU5HWEkgUkFESUNBTCBTVE9QUElORworMkY4QTsyRjhBOzJGOEE7ODI3Mjs4MjcyOyAjICjivoo7IOK+ijsg4r6KOyDoibI7IOiJsjsgKSBLQU5HWEkgUkFESUNBTCBDT0xPUgorMkY4QjsyRjhCOzJGOEI7ODI3ODs4Mjc4OyAjICjivos7IOK+izsg4r6LOyDoibg7IOiJuDsgKSBLQU5HWEkgUkFESUNBTCBHUkFTUworMkY4QzsyRjhDOzJGOEM7ODY0RDs4NjREOyAjICjivow7IOK+jDsg4r6MOyDomY07IOiZjTsgKSBLQU5HWEkgUkFESUNBTCBUSUdFUgorMkY4RDsyRjhEOzJGOEQ7ODY2Qjs4NjZCOyAjICjivo07IOK+jTsg4r6NOyDomas7IOiZqzsgKSBLQU5HWEkgUkFESUNBTCBJTlNFQ1QKKzJGOEU7MkY4RTsyRjhFOzg4NDA7ODg0MDsgIyAo4r6OOyDivo47IOK+jjsg6KGAOyDooYA7ICkgS0FOR1hJIFJBRElDQUwgQkxPT0QKKzJGOEY7MkY4RjsyRjhGOzg4NEM7ODg0QzsgIyAo4r6POyDivo87IOK+jzsg6KGMOyDooYw7ICkgS0FOR1hJIFJBRElDQUwgV0FMSyBFTkNMT1NVUkUKKzJGOTA7MkY5MDsyRjkwOzg4NjM7ODg2MzsgIyAo4r6QOyDivpA7IOK+kDsg6KGjOyDooaM7ICkgS0FOR1hJIFJBRElDQUwgQ0xPVEhFUworMkY5MTsyRjkxOzJGOTE7ODk3RTs4OTdFOyAjICjivpE7IOK+kTsg4r6ROyDopb47IOilvjsgKSBLQU5HWEkgUkFESUNBTCBXRVNUCisyRjkyOzJGOTI7MkY5Mjs4OThCOzg5OEI7ICMgKOK+kjsg4r6SOyDivpI7IOimizsg6KaLOyApIEtBTkdYSSBSQURJQ0FMIFNFRQorMkY5MzsyRjkzOzJGOTM7ODlEMjs4OUQyOyAjICjivpM7IOK+kzsg4r6TOyDop5I7IOinkjsgKSBLQU5HWEkgUkFESUNBTCBIT1JOCisyRjk0OzJGOTQ7MkY5NDs4QTAwOzhBMDA7ICMgKOK+lDsg4r6UOyDivpQ7IOiogDsg6KiAOyApIEtBTkdYSSBSQURJQ0FMIFNQRUVDSAorMkY5NTsyRjk1OzJGOTU7OEMzNzs4QzM3OyAjICjivpU7IOK+lTsg4r6VOyDosLc7IOiwtzsgKSBLQU5HWEkgUkFESUNBTCBWQUxMRVkKKzJGOTY7MkY5NjsyRjk2OzhDNDY7OEM0NjsgIyAo4r6WOyDivpY7IOK+ljsg6LGGOyDosYY7ICkgS0FOR1hJIFJBRElDQUwgQkVBTgorMkY5NzsyRjk3OzJGOTc7OEM1NTs4QzU1OyAjICjivpc7IOK+lzsg4r6XOyDosZU7IOixlTsgKSBLQU5HWEkgUkFESUNBTCBQSUcKKzJGOTg7MkY5ODsyRjk4OzhDNzg7OEM3ODsgIyAo4r6YOyDivpg7IOK+mDsg6LG4OyDosbg7ICkgS0FOR1hJIFJBRElDQUwgQkFER0VSCisyRjk5OzJGOTk7MkY5OTs4QzlEOzhDOUQ7ICMgKOK+mTsg4r6ZOyDivpk7IOiynTsg6LKdOyApIEtBTkdYSSBSQURJQ0FMIFNIRUxMCisyRjlBOzJGOUE7MkY5QTs4RDY0OzhENjQ7ICMgKOK+mjsg4r6aOyDivpo7IOi1pDsg6LWkOyApIEtBTkdYSSBSQURJQ0FMIFJFRAorMkY5QjsyRjlCOzJGOUI7OEQ3MDs4RDcwOyAjICjivps7IOK+mzsg4r6bOyDotbA7IOi1sDsgKSBLQU5HWEkgUkFESUNBTCBSVU4KKzJGOUM7MkY5QzsyRjlDOzhEQjM7OERCMzsgIyAo4r6cOyDivpw7IOK+nDsg6LazOyDotrM7ICkgS0FOR1hJIFJBRElDQUwgRk9PVAorMkY5RDsyRjlEOzJGOUQ7OEVBQjs4RUFCOyAjICjivp07IOK+nTsg4r6dOyDouqs7IOi6qzsgKSBLQU5HWEkgUkFESUNBTCBCT0RZCisyRjlFOzJGOUU7MkY5RTs4RUNBOzhFQ0E7ICMgKOK+njsg4r6eOyDivp47IOi7ijsg6LuKOyApIEtBTkdYSSBSQURJQ0FMIENBUlQKKzJGOUY7MkY5RjsyRjlGOzhGOUI7OEY5QjsgIyAo4r6fOyDivp87IOK+nzsg6L6bOyDovps7ICkgS0FOR1hJIFJBRElDQUwgQklUVEVSCisyRkEwOzJGQTA7MkZBMDs4RkIwOzhGQjA7ICMgKOK+oDsg4r6gOyDivqA7IOi+sDsg6L6wOyApIEtBTkdYSSBSQURJQ0FMIE1PUk5JTkcKKzJGQTE7MkZBMTsyRkExOzhGQjU7OEZCNTsgIyAo4r6hOyDivqE7IOK+oTsg6L61OyDovrU7ICkgS0FOR1hJIFJBRElDQUwgV0FMSworMkZBMjsyRkEyOzJGQTI7OTA5MTs5MDkxOyAjICjivqI7IOK+ojsg4r6iOyDpgpE7IOmCkTsgKSBLQU5HWEkgUkFESUNBTCBDSVRZCisyRkEzOzJGQTM7MkZBMzs5MTQ5OzkxNDk7ICMgKOK+ozsg4r6jOyDivqM7IOmFiTsg6YWJOyApIEtBTkdYSSBSQURJQ0FMIFdJTkUKKzJGQTQ7MkZBNDsyRkE0OzkxQzY7OTFDNjsgIyAo4r6kOyDivqQ7IOK+pDsg6YeGOyDph4Y7ICkgS0FOR1hJIFJBRElDQUwgRElTVElOR1VJU0gKKzJGQTU7MkZBNTsyRkE1OzkxQ0M7OTFDQzsgIyAo4r6lOyDivqU7IOK+pTsg6YeMOyDph4w7ICkgS0FOR1hJIFJBRElDQUwgVklMTEFHRQorMkZBNjsyRkE2OzJGQTY7OTFEMTs5MUQxOyAjICjivqY7IOK+pjsg4r6mOyDph5E7IOmHkTsgKSBLQU5HWEkgUkFESUNBTCBHT0xECisyRkE3OzJGQTc7MkZBNzs5NTc3Ozk1Nzc7ICMgKOK+pzsg4r6nOyDivqc7IOmVtzsg6ZW3OyApIEtBTkdYSSBSQURJQ0FMIExPTkcKKzJGQTg7MkZBODsyRkE4Ozk1ODA7OTU4MDsgIyAo4r6oOyDivqg7IOK+qDsg6ZaAOyDploA7ICkgS0FOR1hJIFJBRElDQUwgR0FURQorMkZBOTsyRkE5OzJGQTk7OTYxQzs5NjFDOyAjICjivqk7IOK+qTsg4r6pOyDpmJw7IOmYnDsgKSBLQU5HWEkgUkFESUNBTCBNT1VORAorMkZBQTsyRkFBOzJGQUE7OTZCNjs5NkI2OyAjICjivqo7IOK+qjsg4r6qOyDpmrY7IOmatjsgKSBLQU5HWEkgUkFESUNBTCBTTEFWRQorMkZBQjsyRkFCOzJGQUI7OTZCOTs5NkI5OyAjICjivqs7IOK+qzsg4r6rOyDpmrk7IOmauTsgKSBLQU5HWEkgUkFESUNBTCBTSE9SVCBUQUlMRUQgQklSRAorMkZBQzsyRkFDOzJGQUM7OTZFODs5NkU4OyAjICjivqw7IOK+rDsg4r6sOyDpm6g7IOmbqDsgKSBLQU5HWEkgUkFESUNBTCBSQUlOCisyRkFEOzJGQUQ7MkZBRDs5NzUxOzk3NTE7ICMgKOK+rTsg4r6tOyDivq07IOmdkTsg6Z2ROyApIEtBTkdYSSBSQURJQ0FMIEJMVUUKKzJGQUU7MkZBRTsyRkFFOzk3NUU7OTc1RTsgIyAo4r6uOyDivq47IOK+rjsg6Z2eOyDpnZ47ICkgS0FOR1hJIFJBRElDQUwgV1JPTkcKKzJGQUY7MkZBRjsyRkFGOzk3NjI7OTc2MjsgIyAo4r6vOyDivq87IOK+rzsg6Z2iOyDpnaI7ICkgS0FOR1hJIFJBRElDQUwgRkFDRQorMkZCMDsyRkIwOzJGQjA7OTc2OTs5NzY5OyAjICjivrA7IOK+sDsg4r6wOyDpnak7IOmdqTsgKSBLQU5HWEkgUkFESUNBTCBMRUFUSEVSCisyRkIxOzJGQjE7MkZCMTs5N0NCOzk3Q0I7ICMgKOK+sTsg4r6xOyDivrE7IOmfizsg6Z+LOyApIEtBTkdYSSBSQURJQ0FMIFRBTk5FRCBMRUFUSEVSCisyRkIyOzJGQjI7MkZCMjs5N0VEOzk3RUQ7ICMgKOK+sjsg4r6yOyDivrI7IOmfrTsg6Z+tOyApIEtBTkdYSSBSQURJQ0FMIExFRUsKKzJGQjM7MkZCMzsyRkIzOzk3RjM7OTdGMzsgIyAo4r6zOyDivrM7IOK+szsg6Z+zOyDpn7M7ICkgS0FOR1hJIFJBRElDQUwgU09VTkQKKzJGQjQ7MkZCNDsyRkI0Ozk4MDE7OTgwMTsgIyAo4r60OyDivrQ7IOK+tDsg6aCBOyDpoIE7ICkgS0FOR1hJIFJBRElDQUwgTEVBRgorMkZCNTsyRkI1OzJGQjU7OThBODs5OEE4OyAjICjivrU7IOK+tTsg4r61OyDpoqg7IOmiqDsgKSBLQU5HWEkgUkFESUNBTCBXSU5ECisyRkI2OzJGQjY7MkZCNjs5OERCOzk4REI7ICMgKOK+tjsg4r62OyDivrY7IOmjmzsg6aObOyApIEtBTkdYSSBSQURJQ0FMIEZMWQorMkZCNzsyRkI3OzJGQjc7OThERjs5OERGOyAjICjivrc7IOK+tzsg4r63OyDpo587IOmjnzsgKSBLQU5HWEkgUkFESUNBTCBFQVQKKzJGQjg7MkZCODsyRkI4Ozk5OTY7OTk5NjsgIyAo4r64OyDivrg7IOK+uDsg6aaWOyDpppY7ICkgS0FOR1hJIFJBRElDQUwgSEVBRAorMkZCOTsyRkI5OzJGQjk7OTk5OTs5OTk5OyAjICjivrk7IOK+uTsg4r65OyDpppk7IOmmmTsgKSBLQU5HWEkgUkFESUNBTCBGUkFHUkFOVAorMkZCQTsyRkJBOzJGQkE7OTlBQzs5OUFDOyAjICjivro7IOK+ujsg4r66OyDppqw7IOmmrDsgKSBLQU5HWEkgUkFESUNBTCBIT1JTRQorMkZCQjsyRkJCOzJGQkI7OUFBODs5QUE4OyAjICjivrs7IOK+uzsg4r67OyDpqqg7IOmqqDsgKSBLQU5HWEkgUkFESUNBTCBCT05FCisyRkJDOzJGQkM7MkZCQzs5QUQ4OzlBRDg7ICMgKOK+vDsg4r68OyDivrw7IOmrmDsg6auYOyApIEtBTkdYSSBSQURJQ0FMIFRBTEwKKzJGQkQ7MkZCRDsyRkJEOzlBREY7OUFERjsgIyAo4r69OyDivr07IOK+vTsg6aufOyDpq587ICkgS0FOR1hJIFJBRElDQUwgSEFJUgorMkZCRTsyRkJFOzJGQkU7OUIyNTs5QjI1OyAjICjivr47IOK+vjsg4r6+OyDprKU7IOmspTsgKSBLQU5HWEkgUkFESUNBTCBGSUdIVAorMkZCRjsyRkJGOzJGQkY7OUIyRjs5QjJGOyAjICjivr87IOK+vzsg4r6/OyDprK87IOmsrzsgKSBLQU5HWEkgUkFESUNBTCBTQUNSSUZJQ0lBTCBXSU5FCisyRkMwOzJGQzA7MkZDMDs5QjMyOzlCMzI7ICMgKOK/gDsg4r+AOyDiv4A7IOmssjsg6ayyOyApIEtBTkdYSSBSQURJQ0FMIENBVUxEUk9OCisyRkMxOzJGQzE7MkZDMTs5QjNDOzlCM0M7ICMgKOK/gTsg4r+BOyDiv4E7IOmsvDsg6ay8OyApIEtBTkdYSSBSQURJQ0FMIEdIT1NUCisyRkMyOzJGQzI7MkZDMjs5QjVBOzlCNUE7ICMgKOK/gjsg4r+COyDiv4I7IOmtmjsg6a2aOyApIEtBTkdYSSBSQURJQ0FMIEZJU0gKKzJGQzM7MkZDMzsyRkMzOzlDRTU7OUNFNTsgIyAo4r+DOyDiv4M7IOK/gzsg6bOlOyDps6U7ICkgS0FOR1hJIFJBRElDQUwgQklSRAorMkZDNDsyRkM0OzJGQzQ7OUU3NTs5RTc1OyAjICjiv4Q7IOK/hDsg4r+EOyDpubU7IOm5tTsgKSBLQU5HWEkgUkFESUNBTCBTQUxUCisyRkM1OzJGQzU7MkZDNTs5RTdGOzlFN0Y7ICMgKOK/hTsg4r+FOyDiv4U7IOm5vzsg6bm/OyApIEtBTkdYSSBSQURJQ0FMIERFRVIKKzJGQzY7MkZDNjsyRkM2OzlFQTU7OUVBNTsgIyAo4r+GOyDiv4Y7IOK/hjsg6bqlOyDpuqU7ICkgS0FOR1hJIFJBRElDQUwgV0hFQVQKKzJGQzc7MkZDNzsyRkM3OzlFQkI7OUVCQjsgIyAo4r+HOyDiv4c7IOK/hzsg6bq7OyDpurs7ICkgS0FOR1hJIFJBRElDQUwgSEVNUAorMkZDODsyRkM4OzJGQzg7OUVDMzs5RUMzOyAjICjiv4g7IOK/iDsg4r+IOyDpu4M7IOm7gzsgKSBLQU5HWEkgUkFESUNBTCBZRUxMT1cKKzJGQzk7MkZDOTsyRkM5OzlFQ0Q7OUVDRDsgIyAo4r+JOyDiv4k7IOK/iTsg6buNOyDpu407ICkgS0FOR1hJIFJBRElDQUwgTUlMTEVUCisyRkNBOzJGQ0E7MkZDQTs5RUQxOzlFRDE7ICMgKOK/ijsg4r+KOyDiv4o7IOm7kTsg6buROyApIEtBTkdYSSBSQURJQ0FMIEJMQUNLCisyRkNCOzJGQ0I7MkZDQjs5RUY5OzlFRjk7ICMgKOK/izsg4r+LOyDiv4s7IOm7uTsg6bu5OyApIEtBTkdYSSBSQURJQ0FMIEVNQlJPSURFUlkKKzJGQ0M7MkZDQzsyRkNDOzlFRkQ7OUVGRDsgIyAo4r+MOyDiv4w7IOK/jDsg6bu9OyDpu707ICkgS0FOR1hJIFJBRElDQUwgRlJPRworMkZDRDsyRkNEOzJGQ0Q7OUYwRTs5RjBFOyAjICjiv407IOK/jTsg4r+NOyDpvI47IOm8jjsgKSBLQU5HWEkgUkFESUNBTCBUUklQT0QKKzJGQ0U7MkZDRTsyRkNFOzlGMTM7OUYxMzsgIyAo4r+OOyDiv447IOK/jjsg6byTOyDpvJM7ICkgS0FOR1hJIFJBRElDQUwgRFJVTQorMkZDRjsyRkNGOzJGQ0Y7OUYyMDs5RjIwOyAjICjiv487IOK/jzsg4r+POyDpvKA7IOm8oDsgKSBLQU5HWEkgUkFESUNBTCBSQVQKKzJGRDA7MkZEMDsyRkQwOzlGM0I7OUYzQjsgIyAo4r+QOyDiv5A7IOK/kDsg6by7OyDpvLs7ICkgS0FOR1hJIFJBRElDQUwgTk9TRQorMkZEMTsyRkQxOzJGRDE7OUY0QTs5RjRBOyAjICjiv5E7IOK/kTsg4r+ROyDpvYo7IOm9ijsgKSBLQU5HWEkgUkFESUNBTCBFVkVOCisyRkQyOzJGRDI7MkZEMjs5RjUyOzlGNTI7ICMgKOK/kjsg4r+SOyDiv5I7IOm9kjsg6b2SOyApIEtBTkdYSSBSQURJQ0FMIFRPT1RICisyRkQzOzJGRDM7MkZEMzs5RjhEOzlGOEQ7ICMgKOK/kzsg4r+TOyDiv5M7IOm+jTsg6b6NOyApIEtBTkdYSSBSQURJQ0FMIERSQUdPTgorMkZENDsyRkQ0OzJGRDQ7OUY5Qzs5RjlDOyAjICjiv5Q7IOK/lDsg4r+UOyDpvpw7IOm+nDsgKSBLQU5HWEkgUkFESUNBTCBUVVJUTEUKKzJGRDU7MkZENTsyRkQ1OzlGQTA7OUZBMDsgIyAo4r+VOyDiv5U7IOK/lTsg6b6gOyDpvqA7ICkgS0FOR1hJIFJBRElDQUwgRkxVVEUKKzMwMDA7MzAwMDszMDAwOzAwMjA7MDAyMDsgIyAo44CAOyDjgIA7IOOAgDsgIDsgIDsgKSBJREVPR1JBUEhJQyBTUEFDRQorMzAzNjszMDM2OzMwMzY7MzAxMjszMDEyOyAjICjjgLY7IOOAtjsg44C2OyDjgJI7IOOAkjsgKSBDSVJDTEVEIFBPU1RBTCBNQVJLCiszMDM4OzMwMzg7MzAzODs1MzQxOzUzNDE7ICMgKOOAuDsg44C4OyDjgLg7IOWNgTsg5Y2BOyApIEhBTkdaSE9VIE5VTUVSQUwgVEVOCiszMDM5OzMwMzk7MzAzOTs1MzQ0OzUzNDQ7ICMgKOOAuTsg44C5OyDjgLk7IOWNhDsg5Y2EOyApIEhBTkdaSE9VIE5VTUVSQUwgVFdFTlRZCiszMDNBOzMwM0E7MzAzQTs1MzQ1OzUzNDU7ICMgKOOAujsg44C6OyDjgLo7IOWNhTsg5Y2FOyApIEhBTkdaSE9VIE5VTUVSQUwgVEhJUlRZCiszMDRDOzMwNEM7MzA0QiAzMDk5OzMwNEM7MzA0QiAzMDk5OyAjICjjgYw7IOOBjDsg44GL4peM44KZOyDjgYw7IOOBi+KXjOOCmTsgKSBISVJBR0FOQSBMRVRURVIgR0EKKzMwNEU7MzA0RTszMDREIDMwOTk7MzA0RTszMDREIDMwOTk7ICMgKOOBjjsg44GOOyDjgY3il4zjgpk7IOOBjjsg44GN4peM44KZOyApIEhJUkFHQU5BIExFVFRFUiBHSQorMzA1MDszMDUwOzMwNEYgMzA5OTszMDUwOzMwNEYgMzA5OTsgIyAo44GQOyDjgZA7IOOBj+KXjOOCmTsg44GQOyDjgY/il4zjgpk7ICkgSElSQUdBTkEgTEVUVEVSIEdVCiszMDUyOzMwNTI7MzA1MSAzMDk5OzMwNTI7MzA1MSAzMDk5OyAjICjjgZI7IOOBkjsg44GR4peM44KZOyDjgZI7IOOBkeKXjOOCmTsgKSBISVJBR0FOQSBMRVRURVIgR0UKKzMwNTQ7MzA1NDszMDUzIDMwOTk7MzA1NDszMDUzIDMwOTk7ICMgKOOBlDsg44GUOyDjgZPil4zjgpk7IOOBlDsg44GT4peM44KZOyApIEhJUkFHQU5BIExFVFRFUiBHTworMzA1NjszMDU2OzMwNTUgMzA5OTszMDU2OzMwNTUgMzA5OTsgIyAo44GWOyDjgZY7IOOBleKXjOOCmTsg44GWOyDjgZXil4zjgpk7ICkgSElSQUdBTkEgTEVUVEVSIFpBCiszMDU4OzMwNTg7MzA1NyAzMDk5OzMwNTg7MzA1NyAzMDk5OyAjICjjgZg7IOOBmDsg44GX4peM44KZOyDjgZg7IOOBl+KXjOOCmTsgKSBISVJBR0FOQSBMRVRURVIgWkkKKzMwNUE7MzA1QTszMDU5IDMwOTk7MzA1QTszMDU5IDMwOTk7ICMgKOOBmjsg44GaOyDjgZnil4zjgpk7IOOBmjsg44GZ4peM44KZOyApIEhJUkFHQU5BIExFVFRFUiBaVQorMzA1QzszMDVDOzMwNUIgMzA5OTszMDVDOzMwNUIgMzA5OTsgIyAo44GcOyDjgZw7IOOBm+KXjOOCmTsg44GcOyDjgZvil4zjgpk7ICkgSElSQUdBTkEgTEVUVEVSIFpFCiszMDVFOzMwNUU7MzA1RCAzMDk5OzMwNUU7MzA1RCAzMDk5OyAjICjjgZ47IOOBnjsg44Gd4peM44KZOyDjgZ47IOOBneKXjOOCmTsgKSBISVJBR0FOQSBMRVRURVIgWk8KKzMwNjA7MzA2MDszMDVGIDMwOTk7MzA2MDszMDVGIDMwOTk7ICMgKOOBoDsg44GgOyDjgZ/il4zjgpk7IOOBoDsg44Gf4peM44KZOyApIEhJUkFHQU5BIExFVFRFUiBEQQorMzA2MjszMDYyOzMwNjEgMzA5OTszMDYyOzMwNjEgMzA5OTsgIyAo44GiOyDjgaI7IOOBoeKXjOOCmTsg44GiOyDjgaHil4zjgpk7ICkgSElSQUdBTkEgTEVUVEVSIERJCiszMDY1OzMwNjU7MzA2NCAzMDk5OzMwNjU7MzA2NCAzMDk5OyAjICjjgaU7IOOBpTsg44Gk4peM44KZOyDjgaU7IOOBpOKXjOOCmTsgKSBISVJBR0FOQSBMRVRURVIgRFUKKzMwNjc7MzA2NzszMDY2IDMwOTk7MzA2NzszMDY2IDMwOTk7ICMgKOOBpzsg44GnOyDjgabil4zjgpk7IOOBpzsg44Gm4peM44KZOyApIEhJUkFHQU5BIExFVFRFUiBERQorMzA2OTszMDY5OzMwNjggMzA5OTszMDY5OzMwNjggMzA5OTsgIyAo44GpOyDjgak7IOOBqOKXjOOCmTsg44GpOyDjgajil4zjgpk7ICkgSElSQUdBTkEgTEVUVEVSIERPCiszMDcwOzMwNzA7MzA2RiAzMDk5OzMwNzA7MzA2RiAzMDk5OyAjICjjgbA7IOOBsDsg44Gv4peM44KZOyDjgbA7IOOBr+KXjOOCmTsgKSBISVJBR0FOQSBMRVRURVIgQkEKKzMwNzE7MzA3MTszMDZGIDMwOUE7MzA3MTszMDZGIDMwOUE7ICMgKOOBsTsg44GxOyDjga/il4zjgpo7IOOBsTsg44Gv4peM44KaOyApIEhJUkFHQU5BIExFVFRFUiBQQQorMzA3MzszMDczOzMwNzIgMzA5OTszMDczOzMwNzIgMzA5OTsgIyAo44GzOyDjgbM7IOOBsuKXjOOCmTsg44GzOyDjgbLil4zjgpk7ICkgSElSQUdBTkEgTEVUVEVSIEJJCiszMDc0OzMwNzQ7MzA3MiAzMDlBOzMwNzQ7MzA3MiAzMDlBOyAjICjjgbQ7IOOBtDsg44Gy4peM44KaOyDjgbQ7IOOBsuKXjOOCmjsgKSBISVJBR0FOQSBMRVRURVIgUEkKKzMwNzY7MzA3NjszMDc1IDMwOTk7MzA3NjszMDc1IDMwOTk7ICMgKOOBtjsg44G2OyDjgbXil4zjgpk7IOOBtjsg44G14peM44KZOyApIEhJUkFHQU5BIExFVFRFUiBCVQorMzA3NzszMDc3OzMwNzUgMzA5QTszMDc3OzMwNzUgMzA5QTsgIyAo44G3OyDjgbc7IOOBteKXjOOCmjsg44G3OyDjgbXil4zjgpo7ICkgSElSQUdBTkEgTEVUVEVSIFBVCiszMDc5OzMwNzk7MzA3OCAzMDk5OzMwNzk7MzA3OCAzMDk5OyAjICjjgbk7IOOBuTsg44G44peM44KZOyDjgbk7IOOBuOKXjOOCmTsgKSBISVJBR0FOQSBMRVRURVIgQkUKKzMwN0E7MzA3QTszMDc4IDMwOUE7MzA3QTszMDc4IDMwOUE7ICMgKOOBujsg44G6OyDjgbjil4zjgpo7IOOBujsg44G44peM44KaOyApIEhJUkFHQU5BIExFVFRFUiBQRQorMzA3QzszMDdDOzMwN0IgMzA5OTszMDdDOzMwN0IgMzA5OTsgIyAo44G8OyDjgbw7IOOBu+KXjOOCmTsg44G8OyDjgbvil4zjgpk7ICkgSElSQUdBTkEgTEVUVEVSIEJPCiszMDdEOzMwN0Q7MzA3QiAzMDlBOzMwN0Q7MzA3QiAzMDlBOyAjICjjgb07IOOBvTsg44G74peM44KaOyDjgb07IOOBu+KXjOOCmjsgKSBISVJBR0FOQSBMRVRURVIgUE8KKzMwOTQ7MzA5NDszMDQ2IDMwOTk7MzA5NDszMDQ2IDMwOTk7ICMgKOOClDsg44KUOyDjgYbil4zjgpk7IOOClDsg44GG4peM44KZOyApIEhJUkFHQU5BIExFVFRFUiBWVQorMzA5QjszMDlCOzMwOUI7MDAyMCAzMDk5OzAwMjAgMzA5OTsgIyAo44KbOyDjgps7IOOCmzsgIOKXjOOCmTsgIOKXjOOCmTsgKSBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSworMzA5QzszMDlDOzMwOUM7MDAyMCAzMDlBOzAwMjAgMzA5QTsgIyAo44KcOyDjgpw7IOOCnDsgIOKXjOOCmjsgIOKXjOOCmjsgKSBLQVRBS0FOQS1ISVJBR0FOQSBTRU1JLVZPSUNFRCBTT1VORCBNQVJLCiszMDlFOzMwOUU7MzA5RCAzMDk5OzMwOUU7MzA5RCAzMDk5OyAjICjjgp47IOOCnjsg44Kd4peM44KZOyDjgp47IOOCneKXjOOCmTsgKSBISVJBR0FOQSBWT0lDRUQgSVRFUkFUSU9OIE1BUksKKzMwQUM7MzBBQzszMEFCIDMwOTk7MzBBQzszMEFCIDMwOTk7ICMgKOOCrDsg44KsOyDjgqvil4zjgpk7IOOCrDsg44Kr4peM44KZOyApIEtBVEFLQU5BIExFVFRFUiBHQQorMzBBRTszMEFFOzMwQUQgMzA5OTszMEFFOzMwQUQgMzA5OTsgIyAo44KuOyDjgq47IOOCreKXjOOCmTsg44KuOyDjgq3il4zjgpk7ICkgS0FUQUtBTkEgTEVUVEVSIEdJCiszMEIwOzMwQjA7MzBBRiAzMDk5OzMwQjA7MzBBRiAzMDk5OyAjICjjgrA7IOOCsDsg44Kv4peM44KZOyDjgrA7IOOCr+KXjOOCmTsgKSBLQVRBS0FOQSBMRVRURVIgR1UKKzMwQjI7MzBCMjszMEIxIDMwOTk7MzBCMjszMEIxIDMwOTk7ICMgKOOCsjsg44KyOyDjgrHil4zjgpk7IOOCsjsg44Kx4peM44KZOyApIEtBVEFLQU5BIExFVFRFUiBHRQorMzBCNDszMEI0OzMwQjMgMzA5OTszMEI0OzMwQjMgMzA5OTsgIyAo44K0OyDjgrQ7IOOCs+KXjOOCmTsg44K0OyDjgrPil4zjgpk7ICkgS0FUQUtBTkEgTEVUVEVSIEdPCiszMEI2OzMwQjY7MzBCNSAzMDk5OzMwQjY7MzBCNSAzMDk5OyAjICjjgrY7IOOCtjsg44K14peM44KZOyDjgrY7IOOCteKXjOOCmTsgKSBLQVRBS0FOQSBMRVRURVIgWkEKKzMwQjg7MzBCODszMEI3IDMwOTk7MzBCODszMEI3IDMwOTk7ICMgKOOCuDsg44K4OyDjgrfil4zjgpk7IOOCuDsg44K34peM44KZOyApIEtBVEFLQU5BIExFVFRFUiBaSQorMzBCQTszMEJBOzMwQjkgMzA5OTszMEJBOzMwQjkgMzA5OTsgIyAo44K6OyDjgro7IOOCueKXjOOCmTsg44K6OyDjgrnil4zjgpk7ICkgS0FUQUtBTkEgTEVUVEVSIFpVCiszMEJDOzMwQkM7MzBCQiAzMDk5OzMwQkM7MzBCQiAzMDk5OyAjICjjgrw7IOOCvDsg44K74peM44KZOyDjgrw7IOOCu+KXjOOCmTsgKSBLQVRBS0FOQSBMRVRURVIgWkUKKzMwQkU7MzBCRTszMEJEIDMwOTk7MzBCRTszMEJEIDMwOTk7ICMgKOOCvjsg44K+OyDjgr3il4zjgpk7IOOCvjsg44K94peM44KZOyApIEtBVEFLQU5BIExFVFRFUiBaTworMzBDMDszMEMwOzMwQkYgMzA5OTszMEMwOzMwQkYgMzA5OTsgIyAo44OAOyDjg4A7IOOCv+KXjOOCmTsg44OAOyDjgr/il4zjgpk7ICkgS0FUQUtBTkEgTEVUVEVSIERBCiszMEMyOzMwQzI7MzBDMSAzMDk5OzMwQzI7MzBDMSAzMDk5OyAjICjjg4I7IOODgjsg44OB4peM44KZOyDjg4I7IOODgeKXjOOCmTsgKSBLQVRBS0FOQSBMRVRURVIgREkKKzMwQzU7MzBDNTszMEM0IDMwOTk7MzBDNTszMEM0IDMwOTk7ICMgKOODhTsg44OFOyDjg4Til4zjgpk7IOODhTsg44OE4peM44KZOyApIEtBVEFLQU5BIExFVFRFUiBEVQorMzBDNzszMEM3OzMwQzYgMzA5OTszMEM3OzMwQzYgMzA5OTsgIyAo44OHOyDjg4c7IOODhuKXjOOCmTsg44OHOyDjg4bil4zjgpk7ICkgS0FUQUtBTkEgTEVUVEVSIERFCiszMEM5OzMwQzk7MzBDOCAzMDk5OzMwQzk7MzBDOCAzMDk5OyAjICjjg4k7IOODiTsg44OI4peM44KZOyDjg4k7IOODiOKXjOOCmTsgKSBLQVRBS0FOQSBMRVRURVIgRE8KKzMwRDA7MzBEMDszMENGIDMwOTk7MzBEMDszMENGIDMwOTk7ICMgKOODkDsg44OQOyDjg4/il4zjgpk7IOODkDsg44OP4peM44KZOyApIEtBVEFLQU5BIExFVFRFUiBCQQorMzBEMTszMEQxOzMwQ0YgMzA5QTszMEQxOzMwQ0YgMzA5QTsgIyAo44OROyDjg5E7IOODj+KXjOOCmjsg44OROyDjg4/il4zjgpo7ICkgS0FUQUtBTkEgTEVUVEVSIFBBCiszMEQzOzMwRDM7MzBEMiAzMDk5OzMwRDM7MzBEMiAzMDk5OyAjICjjg5M7IOODkzsg44OS4peM44KZOyDjg5M7IOODkuKXjOOCmTsgKSBLQVRBS0FOQSBMRVRURVIgQkkKKzMwRDQ7MzBENDszMEQyIDMwOUE7MzBENDszMEQyIDMwOUE7ICMgKOODlDsg44OUOyDjg5Lil4zjgpo7IOODlDsg44OS4peM44KaOyApIEtBVEFLQU5BIExFVFRFUiBQSQorMzBENjszMEQ2OzMwRDUgMzA5OTszMEQ2OzMwRDUgMzA5OTsgIyAo44OWOyDjg5Y7IOODleKXjOOCmTsg44OWOyDjg5Xil4zjgpk7ICkgS0FUQUtBTkEgTEVUVEVSIEJVCiszMEQ3OzMwRDc7MzBENSAzMDlBOzMwRDc7MzBENSAzMDlBOyAjICjjg5c7IOODlzsg44OV4peM44KaOyDjg5c7IOODleKXjOOCmjsgKSBLQVRBS0FOQSBMRVRURVIgUFUKKzMwRDk7MzBEOTszMEQ4IDMwOTk7MzBEOTszMEQ4IDMwOTk7ICMgKOODmTsg44OZOyDjg5jil4zjgpk7IOODmTsg44OY4peM44KZOyApIEtBVEFLQU5BIExFVFRFUiBCRQorMzBEQTszMERBOzMwRDggMzA5QTszMERBOzMwRDggMzA5QTsgIyAo44OaOyDjg5o7IOODmOKXjOOCmjsg44OaOyDjg5jil4zjgpo7ICkgS0FUQUtBTkEgTEVUVEVSIFBFCiszMERDOzMwREM7MzBEQiAzMDk5OzMwREM7MzBEQiAzMDk5OyAjICjjg5w7IOODnDsg44Ob4peM44KZOyDjg5w7IOODm+KXjOOCmTsgKSBLQVRBS0FOQSBMRVRURVIgQk8KKzMwREQ7MzBERDszMERCIDMwOUE7MzBERDszMERCIDMwOUE7ICMgKOODnTsg44OdOyDjg5vil4zjgpo7IOODnTsg44Ob4peM44KaOyApIEtBVEFLQU5BIExFVFRFUiBQTworMzBGNDszMEY0OzMwQTYgMzA5OTszMEY0OzMwQTYgMzA5OTsgIyAo44O0OyDjg7Q7IOOCpuKXjOOCmTsg44O0OyDjgqbil4zjgpk7ICkgS0FUQUtBTkEgTEVUVEVSIFZVCiszMEY3OzMwRjc7MzBFRiAzMDk5OzMwRjc7MzBFRiAzMDk5OyAjICjjg7c7IOODtzsg44Ov4peM44KZOyDjg7c7IOODr+KXjOOCmTsgKSBLQVRBS0FOQSBMRVRURVIgVkEKKzMwRjg7MzBGODszMEYwIDMwOTk7MzBGODszMEYwIDMwOTk7ICMgKOODuDsg44O4OyDjg7Dil4zjgpk7IOODuDsg44Ow4peM44KZOyApIEtBVEFLQU5BIExFVFRFUiBWSQorMzBGOTszMEY5OzMwRjEgMzA5OTszMEY5OzMwRjEgMzA5OTsgIyAo44O5OyDjg7k7IOODseKXjOOCmTsg44O5OyDjg7Hil4zjgpk7ICkgS0FUQUtBTkEgTEVUVEVSIFZFCiszMEZBOzMwRkE7MzBGMiAzMDk5OzMwRkE7MzBGMiAzMDk5OyAjICjjg7o7IOODujsg44Oy4peM44KZOyDjg7o7IOODsuKXjOOCmTsgKSBLQVRBS0FOQSBMRVRURVIgVk8KKzMwRkU7MzBGRTszMEZEIDMwOTk7MzBGRTszMEZEIDMwOTk7ICMgKOODvjsg44O+OyDjg73il4zjgpk7IOODvjsg44O94peM44KZOyApIEtBVEFLQU5BIFZPSUNFRCBJVEVSQVRJT04gTUFSSworMzEzMTszMTMxOzMxMzE7MTEwMDsxMTAwOyAjICjjhLE7IOOEsTsg44SxOyDhhIA7IOGEgDsgKSBIQU5HVUwgTEVUVEVSIEtJWUVPSworMzEzMjszMTMyOzMxMzI7MTEwMTsxMTAxOyAjICjjhLI7IOOEsjsg44SyOyDhhIE7IOGEgTsgKSBIQU5HVUwgTEVUVEVSIFNTQU5HS0lZRU9LCiszMTMzOzMxMzM7MzEzMzsxMUFBOzExQUE7ICMgKOOEszsg44SzOyDjhLM7IOGGqjsg4YaqOyApIEhBTkdVTCBMRVRURVIgS0lZRU9LLVNJT1MKKzMxMzQ7MzEzNDszMTM0OzExMDI7MTEwMjsgIyAo44S0OyDjhLQ7IOOEtDsg4YSCOyDhhII7ICkgSEFOR1VMIExFVFRFUiBOSUVVTgorMzEzNTszMTM1OzMxMzU7MTFBQzsxMUFDOyAjICjjhLU7IOOEtTsg44S1OyDhhqw7IOGGrDsgKSBIQU5HVUwgTEVUVEVSIE5JRVVOLUNJRVVDCiszMTM2OzMxMzY7MzEzNjsxMUFEOzExQUQ7ICMgKOOEtjsg44S2OyDjhLY7IOGGrTsg4YatOyApIEhBTkdVTCBMRVRURVIgTklFVU4tSElFVUgKKzMxMzc7MzEzNzszMTM3OzExMDM7MTEwMzsgIyAo44S3OyDjhLc7IOOEtzsg4YSDOyDhhIM7ICkgSEFOR1VMIExFVFRFUiBUSUtFVVQKKzMxMzg7MzEzODszMTM4OzExMDQ7MTEwNDsgIyAo44S4OyDjhLg7IOOEuDsg4YSEOyDhhIQ7ICkgSEFOR1VMIExFVFRFUiBTU0FOR1RJS0VVVAorMzEzOTszMTM5OzMxMzk7MTEwNTsxMTA1OyAjICjjhLk7IOOEuTsg44S5OyDhhIU7IOGEhTsgKSBIQU5HVUwgTEVUVEVSIFJJRVVMCiszMTNBOzMxM0E7MzEzQTsxMUIwOzExQjA7ICMgKOOEujsg44S6OyDjhLo7IOGGsDsg4YawOyApIEhBTkdVTCBMRVRURVIgUklFVUwtS0lZRU9LCiszMTNCOzMxM0I7MzEzQjsxMUIxOzExQjE7ICMgKOOEuzsg44S7OyDjhLs7IOGGsTsg4YaxOyApIEhBTkdVTCBMRVRURVIgUklFVUwtTUlFVU0KKzMxM0M7MzEzQzszMTNDOzExQjI7MTFCMjsgIyAo44S8OyDjhLw7IOOEvDsg4YayOyDhhrI7ICkgSEFOR1VMIExFVFRFUiBSSUVVTC1QSUVVUAorMzEzRDszMTNEOzMxM0Q7MTFCMzsxMUIzOyAjICjjhL07IOOEvTsg44S9OyDhhrM7IOGGszsgKSBIQU5HVUwgTEVUVEVSIFJJRVVMLVNJT1MKKzMxM0U7MzEzRTszMTNFOzExQjQ7MTFCNDsgIyAo44S+OyDjhL47IOOEvjsg4Ya0OyDhhrQ7ICkgSEFOR1VMIExFVFRFUiBSSUVVTC1USElFVVRICiszMTNGOzMxM0Y7MzEzRjsxMUI1OzExQjU7ICMgKOOEvzsg44S/OyDjhL87IOGGtTsg4Ya1OyApIEhBTkdVTCBMRVRURVIgUklFVUwtUEhJRVVQSAorMzE0MDszMTQwOzMxNDA7MTExQTsxMTFBOyAjICjjhYA7IOOFgDsg44WAOyDhhJo7IOGEmjsgKSBIQU5HVUwgTEVUVEVSIFJJRVVMLUhJRVVICiszMTQxOzMxNDE7MzE0MTsxMTA2OzExMDY7ICMgKOOFgTsg44WBOyDjhYE7IOGEhjsg4YSGOyApIEhBTkdVTCBMRVRURVIgTUlFVU0KKzMxNDI7MzE0MjszMTQyOzExMDc7MTEwNzsgIyAo44WCOyDjhYI7IOOFgjsg4YSHOyDhhIc7ICkgSEFOR1VMIExFVFRFUiBQSUVVUAorMzE0MzszMTQzOzMxNDM7MTEwODsxMTA4OyAjICjjhYM7IOOFgzsg44WDOyDhhIg7IOGEiDsgKSBIQU5HVUwgTEVUVEVSIFNTQU5HUElFVVAKKzMxNDQ7MzE0NDszMTQ0OzExMjE7MTEyMTsgIyAo44WEOyDjhYQ7IOOFhDsg4YShOyDhhKE7ICkgSEFOR1VMIExFVFRFUiBQSUVVUC1TSU9TCiszMTQ1OzMxNDU7MzE0NTsxMTA5OzExMDk7ICMgKOOFhTsg44WFOyDjhYU7IOGEiTsg4YSJOyApIEhBTkdVTCBMRVRURVIgU0lPUworMzE0NjszMTQ2OzMxNDY7MTEwQTsxMTBBOyAjICjjhYY7IOOFhjsg44WGOyDhhIo7IOGEijsgKSBIQU5HVUwgTEVUVEVSIFNTQU5HU0lPUworMzE0NzszMTQ3OzMxNDc7MTEwQjsxMTBCOyAjICjjhYc7IOOFhzsg44WHOyDhhIs7IOGEizsgKSBIQU5HVUwgTEVUVEVSIElFVU5HCiszMTQ4OzMxNDg7MzE0ODsxMTBDOzExMEM7ICMgKOOFiDsg44WIOyDjhYg7IOGEjDsg4YSMOyApIEhBTkdVTCBMRVRURVIgQ0lFVUMKKzMxNDk7MzE0OTszMTQ5OzExMEQ7MTEwRDsgIyAo44WJOyDjhYk7IOOFiTsg4YSNOyDhhI07ICkgSEFOR1VMIExFVFRFUiBTU0FOR0NJRVVDCiszMTRBOzMxNEE7MzE0QTsxMTBFOzExMEU7ICMgKOOFijsg44WKOyDjhYo7IOGEjjsg4YSOOyApIEhBTkdVTCBMRVRURVIgQ0hJRVVDSAorMzE0QjszMTRCOzMxNEI7MTEwRjsxMTBGOyAjICjjhYs7IOOFizsg44WLOyDhhI87IOGEjzsgKSBIQU5HVUwgTEVUVEVSIEtISUVVS0gKKzMxNEM7MzE0QzszMTRDOzExMTA7MTExMDsgIyAo44WMOyDjhYw7IOOFjDsg4YSQOyDhhJA7ICkgSEFOR1VMIExFVFRFUiBUSElFVVRICiszMTREOzMxNEQ7MzE0RDsxMTExOzExMTE7ICMgKOOFjTsg44WNOyDjhY07IOGEkTsg4YSROyApIEhBTkdVTCBMRVRURVIgUEhJRVVQSAorMzE0RTszMTRFOzMxNEU7MTExMjsxMTEyOyAjICjjhY47IOOFjjsg44WOOyDhhJI7IOGEkjsgKSBIQU5HVUwgTEVUVEVSIEhJRVVICiszMTRGOzMxNEY7MzE0RjsxMTYxOzExNjE7ICMgKOOFjzsg44WPOyDjhY87IOGFoTsg4YWhOyApIEhBTkdVTCBMRVRURVIgQQorMzE1MDszMTUwOzMxNTA7MTE2MjsxMTYyOyAjICjjhZA7IOOFkDsg44WQOyDhhaI7IOGFojsgKSBIQU5HVUwgTEVUVEVSIEFFCiszMTUxOzMxNTE7MzE1MTsxMTYzOzExNjM7ICMgKOOFkTsg44WROyDjhZE7IOGFozsg4YWjOyApIEhBTkdVTCBMRVRURVIgWUEKKzMxNTI7MzE1MjszMTUyOzExNjQ7MTE2NDsgIyAo44WSOyDjhZI7IOOFkjsg4YWkOyDhhaQ7ICkgSEFOR1VMIExFVFRFUiBZQUUKKzMxNTM7MzE1MzszMTUzOzExNjU7MTE2NTsgIyAo44WTOyDjhZM7IOOFkzsg4YWlOyDhhaU7ICkgSEFOR1VMIExFVFRFUiBFTworMzE1NDszMTU0OzMxNTQ7MTE2NjsxMTY2OyAjICjjhZQ7IOOFlDsg44WUOyDhhaY7IOGFpjsgKSBIQU5HVUwgTEVUVEVSIEUKKzMxNTU7MzE1NTszMTU1OzExNjc7MTE2NzsgIyAo44WVOyDjhZU7IOOFlTsg4YWnOyDhhac7ICkgSEFOR1VMIExFVFRFUiBZRU8KKzMxNTY7MzE1NjszMTU2OzExNjg7MTE2ODsgIyAo44WWOyDjhZY7IOOFljsg4YWoOyDhhag7ICkgSEFOR1VMIExFVFRFUiBZRQorMzE1NzszMTU3OzMxNTc7MTE2OTsxMTY5OyAjICjjhZc7IOOFlzsg44WXOyDhhak7IOGFqTsgKSBIQU5HVUwgTEVUVEVSIE8KKzMxNTg7MzE1ODszMTU4OzExNkE7MTE2QTsgIyAo44WYOyDjhZg7IOOFmDsg4YWqOyDhhao7ICkgSEFOR1VMIExFVFRFUiBXQQorMzE1OTszMTU5OzMxNTk7MTE2QjsxMTZCOyAjICjjhZk7IOOFmTsg44WZOyDhhas7IOGFqzsgKSBIQU5HVUwgTEVUVEVSIFdBRQorMzE1QTszMTVBOzMxNUE7MTE2QzsxMTZDOyAjICjjhZo7IOOFmjsg44WaOyDhhaw7IOGFrDsgKSBIQU5HVUwgTEVUVEVSIE9FCiszMTVCOzMxNUI7MzE1QjsxMTZEOzExNkQ7ICMgKOOFmzsg44WbOyDjhZs7IOGFrTsg4YWtOyApIEhBTkdVTCBMRVRURVIgWU8KKzMxNUM7MzE1QzszMTVDOzExNkU7MTE2RTsgIyAo44WcOyDjhZw7IOOFnDsg4YWuOyDhha47ICkgSEFOR1VMIExFVFRFUiBVCiszMTVEOzMxNUQ7MzE1RDsxMTZGOzExNkY7ICMgKOOFnTsg44WdOyDjhZ07IOGFrzsg4YWvOyApIEhBTkdVTCBMRVRURVIgV0VPCiszMTVFOzMxNUU7MzE1RTsxMTcwOzExNzA7ICMgKOOFnjsg44WeOyDjhZ47IOGFsDsg4YWwOyApIEhBTkdVTCBMRVRURVIgV0UKKzMxNUY7MzE1RjszMTVGOzExNzE7MTE3MTsgIyAo44WfOyDjhZ87IOOFnzsg4YWxOyDhhbE7ICkgSEFOR1VMIExFVFRFUiBXSQorMzE2MDszMTYwOzMxNjA7MTE3MjsxMTcyOyAjICjjhaA7IOOFoDsg44WgOyDhhbI7IOGFsjsgKSBIQU5HVUwgTEVUVEVSIFlVCiszMTYxOzMxNjE7MzE2MTsxMTczOzExNzM7ICMgKOOFoTsg44WhOyDjhaE7IOGFszsg4YWzOyApIEhBTkdVTCBMRVRURVIgRVUKKzMxNjI7MzE2MjszMTYyOzExNzQ7MTE3NDsgIyAo44WiOyDjhaI7IOOFojsg4YW0OyDhhbQ7ICkgSEFOR1VMIExFVFRFUiBZSQorMzE2MzszMTYzOzMxNjM7MTE3NTsxMTc1OyAjICjjhaM7IOOFozsg44WjOyDhhbU7IOGFtTsgKSBIQU5HVUwgTEVUVEVSIEkKKzMxNjQ7MzE2NDszMTY0OzExNjA7MTE2MDsgIyAo44WkOyDjhaQ7IOOFpDsg4YWgOyDhhaA7ICkgSEFOR1VMIEZJTExFUgorMzE2NTszMTY1OzMxNjU7MTExNDsxMTE0OyAjICjjhaU7IOOFpTsg44WlOyDhhJQ7IOGElDsgKSBIQU5HVUwgTEVUVEVSIFNTQU5HTklFVU4KKzMxNjY7MzE2NjszMTY2OzExMTU7MTExNTsgIyAo44WmOyDjhaY7IOOFpjsg4YSVOyDhhJU7ICkgSEFOR1VMIExFVFRFUiBOSUVVTi1USUtFVVQKKzMxNjc7MzE2NzszMTY3OzExQzc7MTFDNzsgIyAo44WnOyDjhac7IOOFpzsg4YeHOyDhh4c7ICkgSEFOR1VMIExFVFRFUiBOSUVVTi1TSU9TCiszMTY4OzMxNjg7MzE2ODsxMUM4OzExQzg7ICMgKOOFqDsg44WoOyDjhag7IOGHiDsg4YeIOyApIEhBTkdVTCBMRVRURVIgTklFVU4tUEFOU0lPUworMzE2OTszMTY5OzMxNjk7MTFDQzsxMUNDOyAjICjjhak7IOOFqTsg44WpOyDhh4w7IOGHjDsgKSBIQU5HVUwgTEVUVEVSIFJJRVVMLUtJWUVPSy1TSU9TCiszMTZBOzMxNkE7MzE2QTsxMUNFOzExQ0U7ICMgKOOFqjsg44WqOyDjhao7IOGHjjsg4YeOOyApIEhBTkdVTCBMRVRURVIgUklFVUwtVElLRVVUCiszMTZCOzMxNkI7MzE2QjsxMUQzOzExRDM7ICMgKOOFqzsg44WrOyDjhas7IOGHkzsg4YeTOyApIEhBTkdVTCBMRVRURVIgUklFVUwtUElFVVAtU0lPUworMzE2QzszMTZDOzMxNkM7MTFENzsxMUQ3OyAjICjjhaw7IOOFrDsg44WsOyDhh5c7IOGHlzsgKSBIQU5HVUwgTEVUVEVSIFJJRVVMLVBBTlNJT1MKKzMxNkQ7MzE2RDszMTZEOzExRDk7MTFEOTsgIyAo44WtOyDjha07IOOFrTsg4YeZOyDhh5k7ICkgSEFOR1VMIExFVFRFUiBSSUVVTC1ZRU9SSU5ISUVVSAorMzE2RTszMTZFOzMxNkU7MTExQzsxMTFDOyAjICjjha47IOOFrjsg44WuOyDhhJw7IOGEnDsgKSBIQU5HVUwgTEVUVEVSIE1JRVVNLVBJRVVQCiszMTZGOzMxNkY7MzE2RjsxMUREOzExREQ7ICMgKOOFrzsg44WvOyDjha87IOGHnTsg4YedOyApIEhBTkdVTCBMRVRURVIgTUlFVU0tU0lPUworMzE3MDszMTcwOzMxNzA7MTFERjsxMURGOyAjICjjhbA7IOOFsDsg44WwOyDhh587IOGHnzsgKSBIQU5HVUwgTEVUVEVSIE1JRVVNLVBBTlNJT1MKKzMxNzE7MzE3MTszMTcxOzExMUQ7MTExRDsgIyAo44WxOyDjhbE7IOOFsTsg4YSdOyDhhJ07ICkgSEFOR1VMIExFVFRFUiBLQVBZRU9VTk1JRVVNCiszMTcyOzMxNzI7MzE3MjsxMTFFOzExMUU7ICMgKOOFsjsg44WyOyDjhbI7IOGEnjsg4YSeOyApIEhBTkdVTCBMRVRURVIgUElFVVAtS0lZRU9LCiszMTczOzMxNzM7MzE3MzsxMTIwOzExMjA7ICMgKOOFszsg44WzOyDjhbM7IOGEoDsg4YSgOyApIEhBTkdVTCBMRVRURVIgUElFVVAtVElLRVVUCiszMTc0OzMxNzQ7MzE3NDsxMTIyOzExMjI7ICMgKOOFtDsg44W0OyDjhbQ7IOGEojsg4YSiOyApIEhBTkdVTCBMRVRURVIgUElFVVAtU0lPUy1LSVlFT0sKKzMxNzU7MzE3NTszMTc1OzExMjM7MTEyMzsgIyAo44W1OyDjhbU7IOOFtTsg4YSjOyDhhKM7ICkgSEFOR1VMIExFVFRFUiBQSUVVUC1TSU9TLVRJS0VVVAorMzE3NjszMTc2OzMxNzY7MTEyNzsxMTI3OyAjICjjhbY7IOOFtjsg44W2OyDhhKc7IOGEpzsgKSBIQU5HVUwgTEVUVEVSIFBJRVVQLUNJRVVDCiszMTc3OzMxNzc7MzE3NzsxMTI5OzExMjk7ICMgKOOFtzsg44W3OyDjhbc7IOGEqTsg4YSpOyApIEhBTkdVTCBMRVRURVIgUElFVVAtVEhJRVVUSAorMzE3ODszMTc4OzMxNzg7MTEyQjsxMTJCOyAjICjjhbg7IOOFuDsg44W4OyDhhKs7IOGEqzsgKSBIQU5HVUwgTEVUVEVSIEtBUFlFT1VOUElFVVAKKzMxNzk7MzE3OTszMTc5OzExMkM7MTEyQzsgIyAo44W5OyDjhbk7IOOFuTsg4YSsOyDhhKw7ICkgSEFOR1VMIExFVFRFUiBLQVBZRU9VTlNTQU5HUElFVVAKKzMxN0E7MzE3QTszMTdBOzExMkQ7MTEyRDsgIyAo44W6OyDjhbo7IOOFujsg4YStOyDhhK07ICkgSEFOR1VMIExFVFRFUiBTSU9TLUtJWUVPSworMzE3QjszMTdCOzMxN0I7MTEyRTsxMTJFOyAjICjjhbs7IOOFuzsg44W7OyDhhK47IOGErjsgKSBIQU5HVUwgTEVUVEVSIFNJT1MtTklFVU4KKzMxN0M7MzE3QzszMTdDOzExMkY7MTEyRjsgIyAo44W8OyDjhbw7IOOFvDsg4YSvOyDhhK87ICkgSEFOR1VMIExFVFRFUiBTSU9TLVRJS0VVVAorMzE3RDszMTdEOzMxN0Q7MTEzMjsxMTMyOyAjICjjhb07IOOFvTsg44W9OyDhhLI7IOGEsjsgKSBIQU5HVUwgTEVUVEVSIFNJT1MtUElFVVAKKzMxN0U7MzE3RTszMTdFOzExMzY7MTEzNjsgIyAo44W+OyDjhb47IOOFvjsg4YS2OyDhhLY7ICkgSEFOR1VMIExFVFRFUiBTSU9TLUNJRVVDCiszMTdGOzMxN0Y7MzE3RjsxMTQwOzExNDA7ICMgKOOFvzsg44W/OyDjhb87IOGFgDsg4YWAOyApIEhBTkdVTCBMRVRURVIgUEFOU0lPUworMzE4MDszMTgwOzMxODA7MTE0NzsxMTQ3OyAjICjjhoA7IOOGgDsg44aAOyDhhYc7IOGFhzsgKSBIQU5HVUwgTEVUVEVSIFNTQU5HSUVVTkcKKzMxODE7MzE4MTszMTgxOzExNEM7MTE0QzsgIyAo44aBOyDjhoE7IOOGgTsg4YWMOyDhhYw7ICkgSEFOR1VMIExFVFRFUiBZRVNJRVVORworMzE4MjszMTgyOzMxODI7MTFGMTsxMUYxOyAjICjjhoI7IOOGgjsg44aCOyDhh7E7IOGHsTsgKSBIQU5HVUwgTEVUVEVSIFlFU0lFVU5HLVNJT1MKKzMxODM7MzE4MzszMTgzOzExRjI7MTFGMjsgIyAo44aDOyDjhoM7IOOGgzsg4YeyOyDhh7I7ICkgSEFOR1VMIExFVFRFUiBZRVNJRVVORy1QQU5TSU9TCiszMTg0OzMxODQ7MzE4NDsxMTU3OzExNTc7ICMgKOOGhDsg44aEOyDjhoQ7IOGFlzsg4YWXOyApIEhBTkdVTCBMRVRURVIgS0FQWUVPVU5QSElFVVBICiszMTg1OzMxODU7MzE4NTsxMTU4OzExNTg7ICMgKOOGhTsg44aFOyDjhoU7IOGFmDsg4YWYOyApIEhBTkdVTCBMRVRURVIgU1NBTkdISUVVSAorMzE4NjszMTg2OzMxODY7MTE1OTsxMTU5OyAjICjjhoY7IOOGhjsg44aGOyDhhZk7IOGFmTsgKSBIQU5HVUwgTEVUVEVSIFlFT1JJTkhJRVVICiszMTg3OzMxODc7MzE4NzsxMTg0OzExODQ7ICMgKOOGhzsg44aHOyDjhoc7IOGGhDsg4YaEOyApIEhBTkdVTCBMRVRURVIgWU8tWUEKKzMxODg7MzE4ODszMTg4OzExODU7MTE4NTsgIyAo44aIOyDjhog7IOOGiDsg4YaFOyDhhoU7ICkgSEFOR1VMIExFVFRFUiBZTy1ZQUUKKzMxODk7MzE4OTszMTg5OzExODg7MTE4ODsgIyAo44aJOyDjhok7IOOGiTsg4YaIOyDhhog7ICkgSEFOR1VMIExFVFRFUiBZTy1JCiszMThBOzMxOEE7MzE4QTsxMTkxOzExOTE7ICMgKOOGijsg44aKOyDjhoo7IOGGkTsg4YaROyApIEhBTkdVTCBMRVRURVIgWVUtWUVPCiszMThCOzMxOEI7MzE4QjsxMTkyOzExOTI7ICMgKOOGizsg44aLOyDjhos7IOGGkjsg4YaSOyApIEhBTkdVTCBMRVRURVIgWVUtWUUKKzMxOEM7MzE4QzszMThDOzExOTQ7MTE5NDsgIyAo44aMOyDjhow7IOOGjDsg4YaUOyDhhpQ7ICkgSEFOR1VMIExFVFRFUiBZVS1JCiszMThEOzMxOEQ7MzE4RDsxMTlFOzExOUU7ICMgKOOGjTsg44aNOyDjho07IOGGnjsg4YaeOyApIEhBTkdVTCBMRVRURVIgQVJBRUEKKzMxOEU7MzE4RTszMThFOzExQTE7MTFBMTsgIyAo44aOOyDjho47IOOGjjsg4YahOyDhhqE7ICkgSEFOR1VMIExFVFRFUiBBUkFFQUUKKzMxOTI7MzE5MjszMTkyOzRFMDA7NEUwMDsgIyAo44aSOyDjhpI7IOOGkjsg5LiAOyDkuIA7ICkgSURFT0dSQVBISUMgQU5OT1RBVElPTiBPTkUgTUFSSworMzE5MzszMTkzOzMxOTM7NEU4Qzs0RThDOyAjICjjhpM7IOOGkzsg44aTOyDkuow7IOS6jDsgKSBJREVPR1JBUEhJQyBBTk5PVEFUSU9OIFRXTyBNQVJLCiszMTk0OzMxOTQ7MzE5NDs0RTA5OzRFMDk7ICMgKOOGlDsg44aUOyDjhpQ7IOS4iTsg5LiJOyApIElERU9HUkFQSElDIEFOTk9UQVRJT04gVEhSRUUgTUFSSworMzE5NTszMTk1OzMxOTU7NTZEQjs1NkRCOyAjICjjhpU7IOOGlTsg44aVOyDlm5s7IOWbmzsgKSBJREVPR1JBUEhJQyBBTk5PVEFUSU9OIEZPVVIgTUFSSworMzE5NjszMTk2OzMxOTY7NEUwQTs0RTBBOyAjICjjhpY7IOOGljsg44aWOyDkuIo7IOS4ijsgKSBJREVPR1JBUEhJQyBBTk5PVEFUSU9OIFRPUCBNQVJLCiszMTk3OzMxOTc7MzE5Nzs0RTJEOzRFMkQ7ICMgKOOGlzsg44aXOyDjhpc7IOS4rTsg5LitOyApIElERU9HUkFQSElDIEFOTk9UQVRJT04gTUlERExFIE1BUksKKzMxOTg7MzE5ODszMTk4OzRFMEI7NEUwQjsgIyAo44aYOyDjhpg7IOOGmDsg5LiLOyDkuIs7ICkgSURFT0dSQVBISUMgQU5OT1RBVElPTiBCT1RUT00gTUFSSworMzE5OTszMTk5OzMxOTk7NzUzMjs3NTMyOyAjICjjhpk7IOOGmTsg44aZOyDnlLI7IOeUsjsgKSBJREVPR1JBUEhJQyBBTk5PVEFUSU9OIEZJUlNUIE1BUksKKzMxOUE7MzE5QTszMTlBOzRFNTk7NEU1OTsgIyAo44aaOyDjhpo7IOOGmjsg5LmZOyDkuZk7ICkgSURFT0dSQVBISUMgQU5OT1RBVElPTiBTRUNPTkQgTUFSSworMzE5QjszMTlCOzMxOUI7NEUxOTs0RTE5OyAjICjjhps7IOOGmzsg44abOyDkuJk7IOS4mTsgKSBJREVPR1JBUEhJQyBBTk5PVEFUSU9OIFRISVJEIE1BUksKKzMxOUM7MzE5QzszMTlDOzRFMDE7NEUwMTsgIyAo44acOyDjhpw7IOOGnDsg5LiBOyDkuIE7ICkgSURFT0dSQVBISUMgQU5OT1RBVElPTiBGT1VSVEggTUFSSworMzE5RDszMTlEOzMxOUQ7NTkyOTs1OTI5OyAjICjjhp07IOOGnTsg44adOyDlpKk7IOWkqTsgKSBJREVPR1JBUEhJQyBBTk5PVEFUSU9OIEhFQVZFTiBNQVJLCiszMTlFOzMxOUU7MzE5RTs1NzMwOzU3MzA7ICMgKOOGnjsg44aeOyDjhp47IOWcsDsg5ZywOyApIElERU9HUkFQSElDIEFOTk9UQVRJT04gRUFSVEggTUFSSworMzE5RjszMTlGOzMxOUY7NEVCQTs0RUJBOyAjICjjhp87IOOGnzsg44afOyDkuro7IOS6ujsgKSBJREVPR1JBUEhJQyBBTk5PVEFUSU9OIE1BTiBNQVJLCiszMjAwOzMyMDA7MzIwMDswMDI4IDExMDAgMDAyOTswMDI4IDExMDAgMDAyOTsgIyAo44iAOyDjiIA7IOOIgDsgKOGEgCk7ICjhhIApOyApIFBBUkVOVEhFU0laRUQgSEFOR1VMIEtJWUVPSworMzIwMTszMjAxOzMyMDE7MDAyOCAxMTAyIDAwMjk7MDAyOCAxMTAyIDAwMjk7ICMgKOOIgTsg44iBOyDjiIE7ICjhhIIpOyAo4YSCKTsgKSBQQVJFTlRIRVNJWkVEIEhBTkdVTCBOSUVVTgorMzIwMjszMjAyOzMyMDI7MDAyOCAxMTAzIDAwMjk7MDAyOCAxMTAzIDAwMjk7ICMgKOOIgjsg44iCOyDjiII7ICjhhIMpOyAo4YSDKTsgKSBQQVJFTlRIRVNJWkVEIEhBTkdVTCBUSUtFVVQKKzMyMDM7MzIwMzszMjAzOzAwMjggMTEwNSAwMDI5OzAwMjggMTEwNSAwMDI5OyAjICjjiIM7IOOIgzsg44iDOyAo4YSFKTsgKOGEhSk7ICkgUEFSRU5USEVTSVpFRCBIQU5HVUwgUklFVUwKKzMyMDQ7MzIwNDszMjA0OzAwMjggMTEwNiAwMDI5OzAwMjggMTEwNiAwMDI5OyAjICjjiIQ7IOOIhDsg44iEOyAo4YSGKTsgKOGEhik7ICkgUEFSRU5USEVTSVpFRCBIQU5HVUwgTUlFVU0KKzMyMDU7MzIwNTszMjA1OzAwMjggMTEwNyAwMDI5OzAwMjggMTEwNyAwMDI5OyAjICjjiIU7IOOIhTsg44iFOyAo4YSHKTsgKOGEhyk7ICkgUEFSRU5USEVTSVpFRCBIQU5HVUwgUElFVVAKKzMyMDY7MzIwNjszMjA2OzAwMjggMTEwOSAwMDI5OzAwMjggMTEwOSAwMDI5OyAjICjjiIY7IOOIhjsg44iGOyAo4YSJKTsgKOGEiSk7ICkgUEFSRU5USEVTSVpFRCBIQU5HVUwgU0lPUworMzIwNzszMjA3OzMyMDc7MDAyOCAxMTBCIDAwMjk7MDAyOCAxMTBCIDAwMjk7ICMgKOOIhzsg44iHOyDjiIc7ICjhhIspOyAo4YSLKTsgKSBQQVJFTlRIRVNJWkVEIEhBTkdVTCBJRVVORworMzIwODszMjA4OzMyMDg7MDAyOCAxMTBDIDAwMjk7MDAyOCAxMTBDIDAwMjk7ICMgKOOIiDsg44iIOyDjiIg7ICjhhIwpOyAo4YSMKTsgKSBQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSUVVQworMzIwOTszMjA5OzMyMDk7MDAyOCAxMTBFIDAwMjk7MDAyOCAxMTBFIDAwMjk7ICMgKOOIiTsg44iJOyDjiIk7ICjhhI4pOyAo4YSOKTsgKSBQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSElFVUNICiszMjBBOzMyMEE7MzIwQTswMDI4IDExMEYgMDAyOTswMDI4IDExMEYgMDAyOTsgIyAo44iKOyDjiIo7IOOIijsgKOGEjyk7ICjhhI8pOyApIFBBUkVOVEhFU0laRUQgSEFOR1VMIEtISUVVS0gKKzMyMEI7MzIwQjszMjBCOzAwMjggMTExMCAwMDI5OzAwMjggMTExMCAwMDI5OyAjICjjiIs7IOOIizsg44iLOyAo4YSQKTsgKOGEkCk7ICkgUEFSRU5USEVTSVpFRCBIQU5HVUwgVEhJRVVUSAorMzIwQzszMjBDOzMyMEM7MDAyOCAxMTExIDAwMjk7MDAyOCAxMTExIDAwMjk7ICMgKOOIjDsg44iMOyDjiIw7ICjhhJEpOyAo4YSRKTsgKSBQQVJFTlRIRVNJWkVEIEhBTkdVTCBQSElFVVBICiszMjBEOzMyMEQ7MzIwRDswMDI4IDExMTIgMDAyOTswMDI4IDExMTIgMDAyOTsgIyAo44iNOyDjiI07IOOIjTsgKOGEkik7ICjhhJIpOyApIFBBUkVOVEhFU0laRUQgSEFOR1VMIEhJRVVICiszMjBFOzMyMEU7MzIwRTswMDI4IEFDMDAgMDAyOTswMDI4IDExMDAgMTE2MSAwMDI5OyAjICjjiI47IOOIjjsg44iOOyAo6rCAKTsgKOGEgOGFoSk7ICkgUEFSRU5USEVTSVpFRCBIQU5HVUwgS0lZRU9LIEEKKzMyMEY7MzIwRjszMjBGOzAwMjggQjA5OCAwMDI5OzAwMjggMTEwMiAxMTYxIDAwMjk7ICMgKOOIjzsg44iPOyDjiI87ICjrgpgpOyAo4YSC4YWhKTsgKSBQQVJFTlRIRVNJWkVEIEhBTkdVTCBOSUVVTiBBCiszMjEwOzMyMTA7MzIxMDswMDI4IEIyRTQgMDAyOTswMDI4IDExMDMgMTE2MSAwMDI5OyAjICjjiJA7IOOIkDsg44iQOyAo64ukKTsgKOGEg+GFoSk7ICkgUEFSRU5USEVTSVpFRCBIQU5HVUwgVElLRVVUIEEKKzMyMTE7MzIxMTszMjExOzAwMjggQjc3QyAwMDI5OzAwMjggMTEwNSAxMTYxIDAwMjk7ICMgKOOIkTsg44iROyDjiJE7ICjrnbwpOyAo4YSF4YWhKTsgKSBQQVJFTlRIRVNJWkVEIEhBTkdVTCBSSUVVTCBBCiszMjEyOzMyMTI7MzIxMjswMDI4IEI5QzggMDAyOTswMDI4IDExMDYgMTE2MSAwMDI5OyAjICjjiJI7IOOIkjsg44iSOyAo66eIKTsgKOGEhuGFoSk7ICkgUEFSRU5USEVTSVpFRCBIQU5HVUwgTUlFVU0gQQorMzIxMzszMjEzOzMyMTM7MDAyOCBCQzE0IDAwMjk7MDAyOCAxMTA3IDExNjEgMDAyOTsgIyAo44iTOyDjiJM7IOOIkzsgKOuwlCk7ICjhhIfhhaEpOyApIFBBUkVOVEhFU0laRUQgSEFOR1VMIFBJRVVQIEEKKzMyMTQ7MzIxNDszMjE0OzAwMjggQzBBQyAwMDI5OzAwMjggMTEwOSAxMTYxIDAwMjk7ICMgKOOIlDsg44iUOyDjiJQ7ICjsgqwpOyAo4YSJ4YWhKTsgKSBQQVJFTlRIRVNJWkVEIEhBTkdVTCBTSU9TIEEKKzMyMTU7MzIxNTszMjE1OzAwMjggQzU0NCAwMDI5OzAwMjggMTEwQiAxMTYxIDAwMjk7ICMgKOOIlTsg44iVOyDjiJU7ICjslYQpOyAo4YSL4YWhKTsgKSBQQVJFTlRIRVNJWkVEIEhBTkdVTCBJRVVORyBBCiszMjE2OzMyMTY7MzIxNjswMDI4IEM3OTAgMDAyOTswMDI4IDExMEMgMTE2MSAwMDI5OyAjICjjiJY7IOOIljsg44iWOyAo7J6QKTsgKOGEjOGFoSk7ICkgUEFSRU5USEVTSVpFRCBIQU5HVUwgQ0lFVUMgQQorMzIxNzszMjE3OzMyMTc7MDAyOCBDQzI4IDAwMjk7MDAyOCAxMTBFIDExNjEgMDAyOTsgIyAo44iXOyDjiJc7IOOIlzsgKOywqCk7ICjhhI7hhaEpOyApIFBBUkVOVEhFU0laRUQgSEFOR1VMIENISUVVQ0ggQQorMzIxODszMjE4OzMyMTg7MDAyOCBDRTc0IDAwMjk7MDAyOCAxMTBGIDExNjEgMDAyOTsgIyAo44iYOyDjiJg7IOOImDsgKOy5tCk7ICjhhI/hhaEpOyApIFBBUkVOVEhFU0laRUQgSEFOR1VMIEtISUVVS0ggQQorMzIxOTszMjE5OzMyMTk7MDAyOCBEMEMwIDAwMjk7MDAyOCAxMTEwIDExNjEgMDAyOTsgIyAo44iZOyDjiJk7IOOImTsgKO2DgCk7ICjhhJDhhaEpOyApIFBBUkVOVEhFU0laRUQgSEFOR1VMIFRISUVVVEggQQorMzIxQTszMjFBOzMyMUE7MDAyOCBEMzBDIDAwMjk7MDAyOCAxMTExIDExNjEgMDAyOTsgIyAo44iaOyDjiJo7IOOImjsgKO2MjCk7ICjhhJHhhaEpOyApIFBBUkVOVEhFU0laRUQgSEFOR1VMIFBISUVVUEggQQorMzIxQjszMjFCOzMyMUI7MDAyOCBENTU4IDAwMjk7MDAyOCAxMTEyIDExNjEgMDAyOTsgIyAo44ibOyDjiJs7IOOImzsgKO2VmCk7ICjhhJLhhaEpOyApIFBBUkVOVEhFU0laRUQgSEFOR1VMIEhJRVVIIEEKKzMyMUM7MzIxQzszMjFDOzAwMjggQzhGQyAwMDI5OzAwMjggMTEwQyAxMTZFIDAwMjk7ICMgKOOInDsg44icOyDjiJw7ICjso7wpOyAo4YSM4YWuKTsgKSBQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSUVVQyBVCiszMjIwOzMyMjA7MzIyMDswMDI4IDRFMDAgMDAyOTswMDI4IDRFMDAgMDAyOTsgIyAo44igOyDjiKA7IOOIoDsgKOS4gCk7ICjkuIApOyApIFBBUkVOVEhFU0laRUQgSURFT0dSQVBIIE9ORQorMzIyMTszMjIxOzMyMjE7MDAyOCA0RThDIDAwMjk7MDAyOCA0RThDIDAwMjk7ICMgKOOIoTsg44ihOyDjiKE7ICjkuowpOyAo5LqMKTsgKSBQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBUV08KKzMyMjI7MzIyMjszMjIyOzAwMjggNEUwOSAwMDI5OzAwMjggNEUwOSAwMDI5OyAjICjjiKI7IOOIojsg44iiOyAo5LiJKTsgKOS4iSk7ICkgUEFSRU5USEVTSVpFRCBJREVPR1JBUEggVEhSRUUKKzMyMjM7MzIyMzszMjIzOzAwMjggNTZEQiAwMDI5OzAwMjggNTZEQiAwMDI5OyAjICjjiKM7IOOIozsg44ijOyAo5ZubKTsgKOWbmyk7ICkgUEFSRU5USEVTSVpFRCBJREVPR1JBUEggRk9VUgorMzIyNDszMjI0OzMyMjQ7MDAyOCA0RTk0IDAwMjk7MDAyOCA0RTk0IDAwMjk7ICMgKOOIpDsg44ikOyDjiKQ7ICjkupQpOyAo5LqUKTsgKSBQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBGSVZFCiszMjI1OzMyMjU7MzIyNTswMDI4IDUxNkQgMDAyOTswMDI4IDUxNkQgMDAyOTsgIyAo44ilOyDjiKU7IOOIpTsgKOWFrSk7ICjlha0pOyApIFBBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNJWAorMzIyNjszMjI2OzMyMjY7MDAyOCA0RTAzIDAwMjk7MDAyOCA0RTAzIDAwMjk7ICMgKOOIpjsg44imOyDjiKY7ICjkuIMpOyAo5LiDKTsgKSBQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTRVZFTgorMzIyNzszMjI3OzMyMjc7MDAyOCA1MTZCIDAwMjk7MDAyOCA1MTZCIDAwMjk7ICMgKOOIpzsg44inOyDjiKc7ICjlhaspOyAo5YWrKTsgKSBQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBFSUdIVAorMzIyODszMjI4OzMyMjg7MDAyOCA0RTVEIDAwMjk7MDAyOCA0RTVEIDAwMjk7ICMgKOOIqDsg44ioOyDjiKg7ICjkuZ0pOyAo5LmdKTsgKSBQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBOSU5FCiszMjI5OzMyMjk7MzIyOTswMDI4IDUzNDEgMDAyOTswMDI4IDUzNDEgMDAyOTsgIyAo44ipOyDjiKk7IOOIqTsgKOWNgSk7ICjljYEpOyApIFBBUkVOVEhFU0laRUQgSURFT0dSQVBIIFRFTgorMzIyQTszMjJBOzMyMkE7MDAyOCA2NzA4IDAwMjk7MDAyOCA2NzA4IDAwMjk7ICMgKOOIqjsg44iqOyDjiKo7ICjmnIgpOyAo5pyIKTsgKSBQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBNT09OCiszMjJCOzMyMkI7MzIyQjswMDI4IDcwNkIgMDAyOTswMDI4IDcwNkIgMDAyOTsgIyAo44irOyDjiKs7IOOIqzsgKOeBqyk7ICjngaspOyApIFBBUkVOVEhFU0laRUQgSURFT0dSQVBIIEZJUkUKKzMyMkM7MzIyQzszMjJDOzAwMjggNkMzNCAwMDI5OzAwMjggNkMzNCAwMDI5OyAjICjjiKw7IOOIrDsg44isOyAo5rC0KTsgKOawtCk7ICkgUEFSRU5USEVTSVpFRCBJREVPR1JBUEggV0FURVIKKzMyMkQ7MzIyRDszMjJEOzAwMjggNjcyOCAwMDI5OzAwMjggNjcyOCAwMDI5OyAjICjjiK07IOOIrTsg44itOyAo5pyoKTsgKOacqCk7ICkgUEFSRU5USEVTSVpFRCBJREVPR1JBUEggV09PRAorMzIyRTszMjJFOzMyMkU7MDAyOCA5MUQxIDAwMjk7MDAyOCA5MUQxIDAwMjk7ICMgKOOIrjsg44iuOyDjiK47ICjph5EpOyAo6YeRKTsgKSBQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBNRVRBTAorMzIyRjszMjJGOzMyMkY7MDAyOCA1NzFGIDAwMjk7MDAyOCA1NzFGIDAwMjk7ICMgKOOIrzsg44ivOyDjiK87ICjlnJ8pOyAo5ZyfKTsgKSBQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBFQVJUSAorMzIzMDszMjMwOzMyMzA7MDAyOCA2NUU1IDAwMjk7MDAyOCA2NUU1IDAwMjk7ICMgKOOIsDsg44iwOyDjiLA7ICjml6UpOyAo5pelKTsgKSBQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTVU4KKzMyMzE7MzIzMTszMjMxOzAwMjggNjgyQSAwMDI5OzAwMjggNjgyQSAwMDI5OyAjICjjiLE7IOOIsTsg44ixOyAo5qCqKTsgKOagqik7ICkgUEFSRU5USEVTSVpFRCBJREVPR1JBUEggU1RPQ0sKKzMyMzI7MzIzMjszMjMyOzAwMjggNjcwOSAwMDI5OzAwMjggNjcwOSAwMDI5OyAjICjjiLI7IOOIsjsg44iyOyAo5pyJKTsgKOaciSk7ICkgUEFSRU5USEVTSVpFRCBJREVPR1JBUEggSEFWRQorMzIzMzszMjMzOzMyMzM7MDAyOCA3OTNFIDAwMjk7MDAyOCA3OTNFIDAwMjk7ICMgKOOIszsg44izOyDjiLM7ICjnpL4pOyAo56S+KTsgKSBQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTT0NJRVRZCiszMjM0OzMyMzQ7MzIzNDswMDI4IDU0MEQgMDAyOTswMDI4IDU0MEQgMDAyOTsgIyAo44i0OyDjiLQ7IOOItDsgKOWQjSk7ICjlkI0pOyApIFBBUkVOVEhFU0laRUQgSURFT0dSQVBIIE5BTUUKKzMyMzU7MzIzNTszMjM1OzAwMjggNzI3OSAwMDI5OzAwMjggNzI3OSAwMDI5OyAjICjjiLU7IOOItTsg44i1OyAo54m5KTsgKOeJuSk7ICkgUEFSRU5USEVTSVpFRCBJREVPR1JBUEggU1BFQ0lBTAorMzIzNjszMjM2OzMyMzY7MDAyOCA4Q0ExIDAwMjk7MDAyOCA4Q0ExIDAwMjk7ICMgKOOItjsg44i2OyDjiLY7ICjosqEpOyAo6LKhKTsgKSBQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBGSU5BTkNJQUwKKzMyMzc7MzIzNzszMjM3OzAwMjggNzk1RCAwMDI5OzAwMjggNzk1RCAwMDI5OyAjICjjiLc7IOOItzsg44i3OyAo56WdKTsgKOelnSk7ICkgUEFSRU5USEVTSVpFRCBJREVPR1JBUEggQ09OR1JBVFVMQVRJT04KKzMyMzg7MzIzODszMjM4OzAwMjggNTJCNCAwMDI5OzAwMjggNTJCNCAwMDI5OyAjICjjiLg7IOOIuDsg44i4OyAo5Yq0KTsgKOWKtCk7ICkgUEFSRU5USEVTSVpFRCBJREVPR1JBUEggTEFCT1IKKzMyMzk7MzIzOTszMjM5OzAwMjggNEVFMyAwMDI5OzAwMjggNEVFMyAwMDI5OyAjICjjiLk7IOOIuTsg44i5OyAo5LujKTsgKOS7oyk7ICkgUEFSRU5USEVTSVpFRCBJREVPR1JBUEggUkVQUkVTRU5UCiszMjNBOzMyM0E7MzIzQTswMDI4IDU0N0MgMDAyOTswMDI4IDU0N0MgMDAyOTsgIyAo44i6OyDjiLo7IOOIujsgKOWRvCk7ICjlkbwpOyApIFBBUkVOVEhFU0laRUQgSURFT0dSQVBIIENBTEwKKzMyM0I7MzIzQjszMjNCOzAwMjggNUI2NiAwMDI5OzAwMjggNUI2NiAwMDI5OyAjICjjiLs7IOOIuzsg44i7OyAo5a2mKTsgKOWtpik7ICkgUEFSRU5USEVTSVpFRCBJREVPR1JBUEggU1RVRFkKKzMyM0M7MzIzQzszMjNDOzAwMjggNzZFMyAwMDI5OzAwMjggNzZFMyAwMDI5OyAjICjjiLw7IOOIvDsg44i8OyAo55ujKTsgKOeboyk7ICkgUEFSRU5USEVTSVpFRCBJREVPR1JBUEggU1VQRVJWSVNFCiszMjNEOzMyM0Q7MzIzRDswMDI4IDRGMDEgMDAyOTswMDI4IDRGMDEgMDAyOTsgIyAo44i9OyDjiL07IOOIvTsgKOS8gSk7ICjkvIEpOyApIFBBUkVOVEhFU0laRUQgSURFT0dSQVBIIEVOVEVSUFJJU0UKKzMyM0U7MzIzRTszMjNFOzAwMjggOENDNyAwMDI5OzAwMjggOENDNyAwMDI5OyAjICjjiL47IOOIvjsg44i+OyAo6LOHKTsgKOizhyk7ICkgUEFSRU5USEVTSVpFRCBJREVPR1JBUEggUkVTT1VSQ0UKKzMyM0Y7MzIzRjszMjNGOzAwMjggNTM1NCAwMDI5OzAwMjggNTM1NCAwMDI5OyAjICjjiL87IOOIvzsg44i/OyAo5Y2UKTsgKOWNlCk7ICkgUEFSRU5USEVTSVpFRCBJREVPR1JBUEggQUxMSUFOQ0UKKzMyNDA7MzI0MDszMjQwOzAwMjggNzk2RCAwMDI5OzAwMjggNzk2RCAwMDI5OyAjICjjiYA7IOOJgDsg44mAOyAo56WtKTsgKOelrSk7ICkgUEFSRU5USEVTSVpFRCBJREVPR1JBUEggRkVTVElWQUwKKzMyNDE7MzI0MTszMjQxOzAwMjggNEYxMSAwMDI5OzAwMjggNEYxMSAwMDI5OyAjICjjiYE7IOOJgTsg44mBOyAo5LyRKTsgKOS8kSk7ICkgUEFSRU5USEVTSVpFRCBJREVPR1JBUEggUkVTVAorMzI0MjszMjQyOzMyNDI7MDAyOCA4MUVBIDAwMjk7MDAyOCA4MUVBIDAwMjk7ICMgKOOJgjsg44mCOyDjiYI7ICjoh6opOyAo6IeqKTsgKSBQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTRUxGCiszMjQzOzMyNDM7MzI0MzswMDI4IDgxRjMgMDAyOTswMDI4IDgxRjMgMDAyOTsgIyAo44mDOyDjiYM7IOOJgzsgKOiHsyk7ICjoh7MpOyApIFBBUkVOVEhFU0laRUQgSURFT0dSQVBIIFJFQUNICiszMjYwOzMyNjA7MzI2MDsxMTAwOzExMDA7ICMgKOOJoDsg44mgOyDjiaA7IOGEgDsg4YSAOyApIENJUkNMRUQgSEFOR1VMIEtJWUVPSworMzI2MTszMjYxOzMyNjE7MTEwMjsxMTAyOyAjICjjiaE7IOOJoTsg44mhOyDhhII7IOGEgjsgKSBDSVJDTEVEIEhBTkdVTCBOSUVVTgorMzI2MjszMjYyOzMyNjI7MTEwMzsxMTAzOyAjICjjiaI7IOOJojsg44miOyDhhIM7IOGEgzsgKSBDSVJDTEVEIEhBTkdVTCBUSUtFVVQKKzMyNjM7MzI2MzszMjYzOzExMDU7MTEwNTsgIyAo44mjOyDjiaM7IOOJozsg4YSFOyDhhIU7ICkgQ0lSQ0xFRCBIQU5HVUwgUklFVUwKKzMyNjQ7MzI2NDszMjY0OzExMDY7MTEwNjsgIyAo44mkOyDjiaQ7IOOJpDsg4YSGOyDhhIY7ICkgQ0lSQ0xFRCBIQU5HVUwgTUlFVU0KKzMyNjU7MzI2NTszMjY1OzExMDc7MTEwNzsgIyAo44mlOyDjiaU7IOOJpTsg4YSHOyDhhIc7ICkgQ0lSQ0xFRCBIQU5HVUwgUElFVVAKKzMyNjY7MzI2NjszMjY2OzExMDk7MTEwOTsgIyAo44mmOyDjiaY7IOOJpjsg4YSJOyDhhIk7ICkgQ0lSQ0xFRCBIQU5HVUwgU0lPUworMzI2NzszMjY3OzMyNjc7MTEwQjsxMTBCOyAjICjjiac7IOOJpzsg44mnOyDhhIs7IOGEizsgKSBDSVJDTEVEIEhBTkdVTCBJRVVORworMzI2ODszMjY4OzMyNjg7MTEwQzsxMTBDOyAjICjjiag7IOOJqDsg44moOyDhhIw7IOGEjDsgKSBDSVJDTEVEIEhBTkdVTCBDSUVVQworMzI2OTszMjY5OzMyNjk7MTEwRTsxMTBFOyAjICjjiak7IOOJqTsg44mpOyDhhI47IOGEjjsgKSBDSVJDTEVEIEhBTkdVTCBDSElFVUNICiszMjZBOzMyNkE7MzI2QTsxMTBGOzExMEY7ICMgKOOJqjsg44mqOyDjiao7IOGEjzsg4YSPOyApIENJUkNMRUQgSEFOR1VMIEtISUVVS0gKKzMyNkI7MzI2QjszMjZCOzExMTA7MTExMDsgIyAo44mrOyDjias7IOOJqzsg4YSQOyDhhJA7ICkgQ0lSQ0xFRCBIQU5HVUwgVEhJRVVUSAorMzI2QzszMjZDOzMyNkM7MTExMTsxMTExOyAjICjjiaw7IOOJrDsg44msOyDhhJE7IOGEkTsgKSBDSVJDTEVEIEhBTkdVTCBQSElFVVBICiszMjZEOzMyNkQ7MzI2RDsxMTEyOzExMTI7ICMgKOOJrTsg44mtOyDjia07IOGEkjsg4YSSOyApIENJUkNMRUQgSEFOR1VMIEhJRVVICiszMjZFOzMyNkU7MzI2RTtBQzAwOzExMDAgMTE2MTsgIyAo44muOyDjia47IOOJrjsg6rCAOyDhhIDhhaE7ICkgQ0lSQ0xFRCBIQU5HVUwgS0lZRU9LIEEKKzMyNkY7MzI2RjszMjZGO0IwOTg7MTEwMiAxMTYxOyAjICjjia87IOOJrzsg44mvOyDrgpg7IOGEguGFoTsgKSBDSVJDTEVEIEhBTkdVTCBOSUVVTiBBCiszMjcwOzMyNzA7MzI3MDtCMkU0OzExMDMgMTE2MTsgIyAo44mwOyDjibA7IOOJsDsg64ukOyDhhIPhhaE7ICkgQ0lSQ0xFRCBIQU5HVUwgVElLRVVUIEEKKzMyNzE7MzI3MTszMjcxO0I3N0M7MTEwNSAxMTYxOyAjICjjibE7IOOJsTsg44mxOyDrnbw7IOGEheGFoTsgKSBDSVJDTEVEIEhBTkdVTCBSSUVVTCBBCiszMjcyOzMyNzI7MzI3MjtCOUM4OzExMDYgMTE2MTsgIyAo44myOyDjibI7IOOJsjsg66eIOyDhhIbhhaE7ICkgQ0lSQ0xFRCBIQU5HVUwgTUlFVU0gQQorMzI3MzszMjczOzMyNzM7QkMxNDsxMTA3IDExNjE7ICMgKOOJszsg44mzOyDjibM7IOuwlDsg4YSH4YWhOyApIENJUkNMRUQgSEFOR1VMIFBJRVVQIEEKKzMyNzQ7MzI3NDszMjc0O0MwQUM7MTEwOSAxMTYxOyAjICjjibQ7IOOJtDsg44m0OyDsgqw7IOGEieGFoTsgKSBDSVJDTEVEIEhBTkdVTCBTSU9TIEEKKzMyNzU7MzI3NTszMjc1O0M1NDQ7MTEwQiAxMTYxOyAjICjjibU7IOOJtTsg44m1OyDslYQ7IOGEi+GFoTsgKSBDSVJDTEVEIEhBTkdVTCBJRVVORyBBCiszMjc2OzMyNzY7MzI3NjtDNzkwOzExMEMgMTE2MTsgIyAo44m2OyDjibY7IOOJtjsg7J6QOyDhhIzhhaE7ICkgQ0lSQ0xFRCBIQU5HVUwgQ0lFVUMgQQorMzI3NzszMjc3OzMyNzc7Q0MyODsxMTBFIDExNjE7ICMgKOOJtzsg44m3OyDjibc7IOywqDsg4YSO4YWhOyApIENJUkNMRUQgSEFOR1VMIENISUVVQ0ggQQorMzI3ODszMjc4OzMyNzg7Q0U3NDsxMTBGIDExNjE7ICMgKOOJuDsg44m4OyDjibg7IOy5tDsg4YSP4YWhOyApIENJUkNMRUQgSEFOR1VMIEtISUVVS0ggQQorMzI3OTszMjc5OzMyNzk7RDBDMDsxMTEwIDExNjE7ICMgKOOJuTsg44m5OyDjibk7IO2DgDsg4YSQ4YWhOyApIENJUkNMRUQgSEFOR1VMIFRISUVVVEggQQorMzI3QTszMjdBOzMyN0E7RDMwQzsxMTExIDExNjE7ICMgKOOJujsg44m6OyDjibo7IO2MjDsg4YSR4YWhOyApIENJUkNMRUQgSEFOR1VMIFBISUVVUEggQQorMzI3QjszMjdCOzMyN0I7RDU1ODsxMTEyIDExNjE7ICMgKOOJuzsg44m7OyDjibs7IO2VmDsg4YSS4YWhOyApIENJUkNMRUQgSEFOR1VMIEhJRVVIIEEKKzMyODA7MzI4MDszMjgwOzRFMDA7NEUwMDsgIyAo44qAOyDjioA7IOOKgDsg5LiAOyDkuIA7ICkgQ0lSQ0xFRCBJREVPR1JBUEggT05FCiszMjgxOzMyODE7MzI4MTs0RThDOzRFOEM7ICMgKOOKgTsg44qBOyDjioE7IOS6jDsg5LqMOyApIENJUkNMRUQgSURFT0dSQVBIIFRXTworMzI4MjszMjgyOzMyODI7NEUwOTs0RTA5OyAjICjjioI7IOOKgjsg44qCOyDkuIk7IOS4iTsgKSBDSVJDTEVEIElERU9HUkFQSCBUSFJFRQorMzI4MzszMjgzOzMyODM7NTZEQjs1NkRCOyAjICjjioM7IOOKgzsg44qDOyDlm5s7IOWbmzsgKSBDSVJDTEVEIElERU9HUkFQSCBGT1VSCiszMjg0OzMyODQ7MzI4NDs0RTk0OzRFOTQ7ICMgKOOKhDsg44qEOyDjioQ7IOS6lDsg5LqUOyApIENJUkNMRUQgSURFT0dSQVBIIEZJVkUKKzMyODU7MzI4NTszMjg1OzUxNkQ7NTE2RDsgIyAo44qFOyDjioU7IOOKhTsg5YWtOyDlha07ICkgQ0lSQ0xFRCBJREVPR1JBUEggU0lYCiszMjg2OzMyODY7MzI4Njs0RTAzOzRFMDM7ICMgKOOKhjsg44qGOyDjioY7IOS4gzsg5LiDOyApIENJUkNMRUQgSURFT0dSQVBIIFNFVkVOCiszMjg3OzMyODc7MzI4Nzs1MTZCOzUxNkI7ICMgKOOKhzsg44qHOyDjioc7IOWFqzsg5YWrOyApIENJUkNMRUQgSURFT0dSQVBIIEVJR0hUCiszMjg4OzMyODg7MzI4ODs0RTVEOzRFNUQ7ICMgKOOKiDsg44qIOyDjiog7IOS5nTsg5LmdOyApIENJUkNMRUQgSURFT0dSQVBIIE5JTkUKKzMyODk7MzI4OTszMjg5OzUzNDE7NTM0MTsgIyAo44qJOyDjiok7IOOKiTsg5Y2BOyDljYE7ICkgQ0lSQ0xFRCBJREVPR1JBUEggVEVOCiszMjhBOzMyOEE7MzI4QTs2NzA4OzY3MDg7ICMgKOOKijsg44qKOyDjioo7IOaciDsg5pyIOyApIENJUkNMRUQgSURFT0dSQVBIIE1PT04KKzMyOEI7MzI4QjszMjhCOzcwNkI7NzA2QjsgIyAo44qLOyDjios7IOOKizsg54GrOyDngas7ICkgQ0lSQ0xFRCBJREVPR1JBUEggRklSRQorMzI4QzszMjhDOzMyOEM7NkMzNDs2QzM0OyAjICjjiow7IOOKjDsg44qMOyDmsLQ7IOawtDsgKSBDSVJDTEVEIElERU9HUkFQSCBXQVRFUgorMzI4RDszMjhEOzMyOEQ7NjcyODs2NzI4OyAjICjjio07IOOKjTsg44qNOyDmnKg7IOacqDsgKSBDSVJDTEVEIElERU9HUkFQSCBXT09ECiszMjhFOzMyOEU7MzI4RTs5MUQxOzkxRDE7ICMgKOOKjjsg44qOOyDjio47IOmHkTsg6YeROyApIENJUkNMRUQgSURFT0dSQVBIIE1FVEFMCiszMjhGOzMyOEY7MzI4Rjs1NzFGOzU3MUY7ICMgKOOKjzsg44qPOyDjio87IOWcnzsg5ZyfOyApIENJUkNMRUQgSURFT0dSQVBIIEVBUlRICiszMjkwOzMyOTA7MzI5MDs2NUU1OzY1RTU7ICMgKOOKkDsg44qQOyDjipA7IOaXpTsg5pelOyApIENJUkNMRUQgSURFT0dSQVBIIFNVTgorMzI5MTszMjkxOzMyOTE7NjgyQTs2ODJBOyAjICjjipE7IOOKkTsg44qROyDmoKo7IOagqjsgKSBDSVJDTEVEIElERU9HUkFQSCBTVE9DSworMzI5MjszMjkyOzMyOTI7NjcwOTs2NzA5OyAjICjjipI7IOOKkjsg44qSOyDmnIk7IOaciTsgKSBDSVJDTEVEIElERU9HUkFQSCBIQVZFCiszMjkzOzMyOTM7MzI5Mzs3OTNFOzc5M0U7ICMgKOOKkzsg44qTOyDjipM7IOekvjsg56S+OyApIENJUkNMRUQgSURFT0dSQVBIIFNPQ0lFVFkKKzMyOTQ7MzI5NDszMjk0OzU0MEQ7NTQwRDsgIyAo44qUOyDjipQ7IOOKlDsg5ZCNOyDlkI07ICkgQ0lSQ0xFRCBJREVPR1JBUEggTkFNRQorMzI5NTszMjk1OzMyOTU7NzI3OTs3Mjc5OyAjICjjipU7IOOKlTsg44qVOyDnibk7IOeJuTsgKSBDSVJDTEVEIElERU9HUkFQSCBTUEVDSUFMCiszMjk2OzMyOTY7MzI5Njs4Q0ExOzhDQTE7ICMgKOOKljsg44qWOyDjipY7IOiyoTsg6LKhOyApIENJUkNMRUQgSURFT0dSQVBIIEZJTkFOQ0lBTAorMzI5NzszMjk3OzMyOTc7Nzk1RDs3OTVEOyAjICjjipc7IOOKlzsg44qXOyDnpZ07IOelnTsgKSBDSVJDTEVEIElERU9HUkFQSCBDT05HUkFUVUxBVElPTgorMzI5ODszMjk4OzMyOTg7NTJCNDs1MkI0OyAjICjjipg7IOOKmDsg44qYOyDlirQ7IOWKtDsgKSBDSVJDTEVEIElERU9HUkFQSCBMQUJPUgorMzI5OTszMjk5OzMyOTk7NzlEODs3OUQ4OyAjICjjipk7IOOKmTsg44qZOyDnp5g7IOenmDsgKSBDSVJDTEVEIElERU9HUkFQSCBTRUNSRVQKKzMyOUE7MzI5QTszMjlBOzc1Mzc7NzUzNzsgIyAo44qaOyDjipo7IOOKmjsg55S3OyDnlLc7ICkgQ0lSQ0xFRCBJREVPR1JBUEggTUFMRQorMzI5QjszMjlCOzMyOUI7NTk3Mzs1OTczOyAjICjjips7IOOKmzsg44qbOyDlpbM7IOWlszsgKSBDSVJDTEVEIElERU9HUkFQSCBGRU1BTEUKKzMyOUM7MzI5QzszMjlDOzkwNjk7OTA2OTsgIyAo44qcOyDjipw7IOOKnDsg6YGpOyDpgak7ICkgQ0lSQ0xFRCBJREVPR1JBUEggU1VJVEFCTEUKKzMyOUQ7MzI5RDszMjlEOzUxMkE7NTEyQTsgIyAo44qdOyDjip07IOOKnTsg5YSqOyDlhKo7ICkgQ0lSQ0xFRCBJREVPR1JBUEggRVhDRUxMRU5UCiszMjlFOzMyOUU7MzI5RTs1MzcwOzUzNzA7ICMgKOOKnjsg44qeOyDjip47IOWNsDsg5Y2wOyApIENJUkNMRUQgSURFT0dSQVBIIFBSSU5UCiszMjlGOzMyOUY7MzI5Rjs2Q0U4OzZDRTg7ICMgKOOKnzsg44qfOyDjip87IOazqDsg5rOoOyApIENJUkNMRUQgSURFT0dSQVBIIEFUVEVOVElPTgorMzJBMDszMkEwOzMyQTA7OTgwNTs5ODA1OyAjICjjiqA7IOOKoDsg44qgOyDpoIU7IOmghTsgKSBDSVJDTEVEIElERU9HUkFQSCBJVEVNCiszMkExOzMyQTE7MzJBMTs0RjExOzRGMTE7ICMgKOOKoTsg44qhOyDjiqE7IOS8kTsg5LyROyApIENJUkNMRUQgSURFT0dSQVBIIFJFU1QKKzMyQTI7MzJBMjszMkEyOzUxOTk7NTE5OTsgIyAo44qiOyDjiqI7IOOKojsg5YaZOyDlhpk7ICkgQ0lSQ0xFRCBJREVPR1JBUEggQ09QWQorMzJBMzszMkEzOzMyQTM7NkI2Mzs2QjYzOyAjICjjiqM7IOOKozsg44qjOyDmraM7IOatozsgKSBDSVJDTEVEIElERU9HUkFQSCBDT1JSRUNUCiszMkE0OzMyQTQ7MzJBNDs0RTBBOzRFMEE7ICMgKOOKpDsg44qkOyDjiqQ7IOS4ijsg5LiKOyApIENJUkNMRUQgSURFT0dSQVBIIEhJR0gKKzMyQTU7MzJBNTszMkE1OzRFMkQ7NEUyRDsgIyAo44qlOyDjiqU7IOOKpTsg5LitOyDkuK07ICkgQ0lSQ0xFRCBJREVPR1JBUEggQ0VOVFJFCiszMkE2OzMyQTY7MzJBNjs0RTBCOzRFMEI7ICMgKOOKpjsg44qmOyDjiqY7IOS4izsg5LiLOyApIENJUkNMRUQgSURFT0dSQVBIIExPVworMzJBNzszMkE3OzMyQTc7NURFNjs1REU2OyAjICjjiqc7IOOKpzsg44qnOyDlt6Y7IOW3pjsgKSBDSVJDTEVEIElERU9HUkFQSCBMRUZUCiszMkE4OzMyQTg7MzJBODs1M0YzOzUzRjM7ICMgKOOKqDsg44qoOyDjiqg7IOWPszsg5Y+zOyApIENJUkNMRUQgSURFT0dSQVBIIFJJR0hUCiszMkE5OzMyQTk7MzJBOTs1MzNCOzUzM0I7ICMgKOOKqTsg44qpOyDjiqk7IOWMuzsg5Yy7OyApIENJUkNMRUQgSURFT0dSQVBIIE1FRElDSU5FCiszMkFBOzMyQUE7MzJBQTs1Qjk3OzVCOTc7ICMgKOOKqjsg44qqOyDjiqo7IOWulzsg5a6XOyApIENJUkNMRUQgSURFT0dSQVBIIFJFTElHSU9OCiszMkFCOzMyQUI7MzJBQjs1QjY2OzVCNjY7ICMgKOOKqzsg44qrOyDjiqs7IOWtpjsg5a2mOyApIENJUkNMRUQgSURFT0dSQVBIIFNUVURZCiszMkFDOzMyQUM7MzJBQzs3NkUzOzc2RTM7ICMgKOOKrDsg44qsOyDjiqw7IOebozsg55ujOyApIENJUkNMRUQgSURFT0dSQVBIIFNVUEVSVklTRQorMzJBRDszMkFEOzMyQUQ7NEYwMTs0RjAxOyAjICjjiq07IOOKrTsg44qtOyDkvIE7IOS8gTsgKSBDSVJDTEVEIElERU9HUkFQSCBFTlRFUlBSSVNFCiszMkFFOzMyQUU7MzJBRTs4Q0M3OzhDQzc7ICMgKOOKrjsg44quOyDjiq47IOizhzsg6LOHOyApIENJUkNMRUQgSURFT0dSQVBIIFJFU09VUkNFCiszMkFGOzMyQUY7MzJBRjs1MzU0OzUzNTQ7ICMgKOOKrzsg44qvOyDjiq87IOWNlDsg5Y2UOyApIENJUkNMRUQgSURFT0dSQVBIIEFMTElBTkNFCiszMkIwOzMyQjA7MzJCMDs1OTFDOzU5MUM7ICMgKOOKsDsg44qwOyDjirA7IOWknDsg5aScOyApIENJUkNMRUQgSURFT0dSQVBIIE5JR0hUCiszMkMwOzMyQzA7MzJDMDswMDMxIDY3MDg7MDAzMSA2NzA4OyAjICjji4A7IOOLgDsg44uAOyAx5pyIOyAx5pyIOyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEpBTlVBUlkKKzMyQzE7MzJDMTszMkMxOzAwMzIgNjcwODswMDMyIDY3MDg7ICMgKOOLgTsg44uBOyDji4E7IDLmnIg7IDLmnIg7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgRkVCUlVBUlkKKzMyQzI7MzJDMjszMkMyOzAwMzMgNjcwODswMDMzIDY3MDg7ICMgKOOLgjsg44uCOyDji4I7IDPmnIg7IDPmnIg7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgTUFSQ0gKKzMyQzM7MzJDMzszMkMzOzAwMzQgNjcwODswMDM0IDY3MDg7ICMgKOOLgzsg44uDOyDji4M7IDTmnIg7IDTmnIg7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgQVBSSUwKKzMyQzQ7MzJDNDszMkM0OzAwMzUgNjcwODswMDM1IDY3MDg7ICMgKOOLhDsg44uEOyDji4Q7IDXmnIg7IDXmnIg7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgTUFZCiszMkM1OzMyQzU7MzJDNTswMDM2IDY3MDg7MDAzNiA2NzA4OyAjICjji4U7IOOLhTsg44uFOyA25pyIOyA25pyIOyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEpVTkUKKzMyQzY7MzJDNjszMkM2OzAwMzcgNjcwODswMDM3IDY3MDg7ICMgKOOLhjsg44uGOyDji4Y7IDfmnIg7IDfmnIg7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSlVMWQorMzJDNzszMkM3OzMyQzc7MDAzOCA2NzA4OzAwMzggNjcwODsgIyAo44uHOyDji4c7IOOLhzsgOOaciDsgOOaciDsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBBVUdVU1QKKzMyQzg7MzJDODszMkM4OzAwMzkgNjcwODswMDM5IDY3MDg7ICMgKOOLiDsg44uIOyDji4g7IDnmnIg7IDnmnIg7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgU0VQVEVNQkVSCiszMkM5OzMyQzk7MzJDOTswMDMxIDAwMzAgNjcwODswMDMxIDAwMzAgNjcwODsgIyAo44uJOyDji4k7IOOLiTsgMTDmnIg7IDEw5pyIOyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIE9DVE9CRVIKKzMyQ0E7MzJDQTszMkNBOzAwMzEgMDAzMSA2NzA4OzAwMzEgMDAzMSA2NzA4OyAjICjji4o7IOOLijsg44uKOyAxMeaciDsgMTHmnIg7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgTk9WRU1CRVIKKzMyQ0I7MzJDQjszMkNCOzAwMzEgMDAzMiA2NzA4OzAwMzEgMDAzMiA2NzA4OyAjICjji4s7IOOLizsg44uLOyAxMuaciDsgMTLmnIg7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREVDRU1CRVIKKzMyRDA7MzJEMDszMkQwOzMwQTI7MzBBMjsgIyAo44uQOyDji5A7IOOLkDsg44KiOyDjgqI7ICkgQ0lSQ0xFRCBLQVRBS0FOQSBBCiszMkQxOzMyRDE7MzJEMTszMEE0OzMwQTQ7ICMgKOOLkTsg44uROyDji5E7IOOCpDsg44KkOyApIENJUkNMRUQgS0FUQUtBTkEgSQorMzJEMjszMkQyOzMyRDI7MzBBNjszMEE2OyAjICjji5I7IOOLkjsg44uSOyDjgqY7IOOCpjsgKSBDSVJDTEVEIEtBVEFLQU5BIFUKKzMyRDM7MzJEMzszMkQzOzMwQTg7MzBBODsgIyAo44uTOyDji5M7IOOLkzsg44KoOyDjgqg7ICkgQ0lSQ0xFRCBLQVRBS0FOQSBFCiszMkQ0OzMyRDQ7MzJENDszMEFBOzMwQUE7ICMgKOOLlDsg44uUOyDji5Q7IOOCqjsg44KqOyApIENJUkNMRUQgS0FUQUtBTkEgTworMzJENTszMkQ1OzMyRDU7MzBBQjszMEFCOyAjICjji5U7IOOLlTsg44uVOyDjgqs7IOOCqzsgKSBDSVJDTEVEIEtBVEFLQU5BIEtBCiszMkQ2OzMyRDY7MzJENjszMEFEOzMwQUQ7ICMgKOOLljsg44uWOyDji5Y7IOOCrTsg44KtOyApIENJUkNMRUQgS0FUQUtBTkEgS0kKKzMyRDc7MzJENzszMkQ3OzMwQUY7MzBBRjsgIyAo44uXOyDji5c7IOOLlzsg44KvOyDjgq87ICkgQ0lSQ0xFRCBLQVRBS0FOQSBLVQorMzJEODszMkQ4OzMyRDg7MzBCMTszMEIxOyAjICjji5g7IOOLmDsg44uYOyDjgrE7IOOCsTsgKSBDSVJDTEVEIEtBVEFLQU5BIEtFCiszMkQ5OzMyRDk7MzJEOTszMEIzOzMwQjM7ICMgKOOLmTsg44uZOyDji5k7IOOCszsg44KzOyApIENJUkNMRUQgS0FUQUtBTkEgS08KKzMyREE7MzJEQTszMkRBOzMwQjU7MzBCNTsgIyAo44uaOyDji5o7IOOLmjsg44K1OyDjgrU7ICkgQ0lSQ0xFRCBLQVRBS0FOQSBTQQorMzJEQjszMkRCOzMyREI7MzBCNzszMEI3OyAjICjji5s7IOOLmzsg44ubOyDjgrc7IOOCtzsgKSBDSVJDTEVEIEtBVEFLQU5BIFNJCiszMkRDOzMyREM7MzJEQzszMEI5OzMwQjk7ICMgKOOLnDsg44ucOyDji5w7IOOCuTsg44K5OyApIENJUkNMRUQgS0FUQUtBTkEgU1UKKzMyREQ7MzJERDszMkREOzMwQkI7MzBCQjsgIyAo44udOyDji507IOOLnTsg44K7OyDjgrs7ICkgQ0lSQ0xFRCBLQVRBS0FOQSBTRQorMzJERTszMkRFOzMyREU7MzBCRDszMEJEOyAjICjji547IOOLnjsg44ueOyDjgr07IOOCvTsgKSBDSVJDTEVEIEtBVEFLQU5BIFNPCiszMkRGOzMyREY7MzJERjszMEJGOzMwQkY7ICMgKOOLnzsg44ufOyDji587IOOCvzsg44K/OyApIENJUkNMRUQgS0FUQUtBTkEgVEEKKzMyRTA7MzJFMDszMkUwOzMwQzE7MzBDMTsgIyAo44ugOyDji6A7IOOLoDsg44OBOyDjg4E7ICkgQ0lSQ0xFRCBLQVRBS0FOQSBUSQorMzJFMTszMkUxOzMyRTE7MzBDNDszMEM0OyAjICjji6E7IOOLoTsg44uhOyDjg4Q7IOODhDsgKSBDSVJDTEVEIEtBVEFLQU5BIFRVCiszMkUyOzMyRTI7MzJFMjszMEM2OzMwQzY7ICMgKOOLojsg44uiOyDji6I7IOODhjsg44OGOyApIENJUkNMRUQgS0FUQUtBTkEgVEUKKzMyRTM7MzJFMzszMkUzOzMwQzg7MzBDODsgIyAo44ujOyDji6M7IOOLozsg44OIOyDjg4g7ICkgQ0lSQ0xFRCBLQVRBS0FOQSBUTworMzJFNDszMkU0OzMyRTQ7MzBDQTszMENBOyAjICjji6Q7IOOLpDsg44ukOyDjg4o7IOODijsgKSBDSVJDTEVEIEtBVEFLQU5BIE5BCiszMkU1OzMyRTU7MzJFNTszMENCOzMwQ0I7ICMgKOOLpTsg44ulOyDji6U7IOODizsg44OLOyApIENJUkNMRUQgS0FUQUtBTkEgTkkKKzMyRTY7MzJFNjszMkU2OzMwQ0M7MzBDQzsgIyAo44umOyDji6Y7IOOLpjsg44OMOyDjg4w7ICkgQ0lSQ0xFRCBLQVRBS0FOQSBOVQorMzJFNzszMkU3OzMyRTc7MzBDRDszMENEOyAjICjji6c7IOOLpzsg44unOyDjg407IOODjTsgKSBDSVJDTEVEIEtBVEFLQU5BIE5FCiszMkU4OzMyRTg7MzJFODszMENFOzMwQ0U7ICMgKOOLqDsg44uoOyDji6g7IOODjjsg44OOOyApIENJUkNMRUQgS0FUQUtBTkEgTk8KKzMyRTk7MzJFOTszMkU5OzMwQ0Y7MzBDRjsgIyAo44upOyDji6k7IOOLqTsg44OPOyDjg487ICkgQ0lSQ0xFRCBLQVRBS0FOQSBIQQorMzJFQTszMkVBOzMyRUE7MzBEMjszMEQyOyAjICjji6o7IOOLqjsg44uqOyDjg5I7IOODkjsgKSBDSVJDTEVEIEtBVEFLQU5BIEhJCiszMkVCOzMyRUI7MzJFQjszMEQ1OzMwRDU7ICMgKOOLqzsg44urOyDji6s7IOODlTsg44OVOyApIENJUkNMRUQgS0FUQUtBTkEgSFUKKzMyRUM7MzJFQzszMkVDOzMwRDg7MzBEODsgIyAo44usOyDji6w7IOOLrDsg44OYOyDjg5g7ICkgQ0lSQ0xFRCBLQVRBS0FOQSBIRQorMzJFRDszMkVEOzMyRUQ7MzBEQjszMERCOyAjICjji607IOOLrTsg44utOyDjg5s7IOODmzsgKSBDSVJDTEVEIEtBVEFLQU5BIEhPCiszMkVFOzMyRUU7MzJFRTszMERFOzMwREU7ICMgKOOLrjsg44uuOyDji647IOODnjsg44OeOyApIENJUkNMRUQgS0FUQUtBTkEgTUEKKzMyRUY7MzJFRjszMkVGOzMwREY7MzBERjsgIyAo44uvOyDji687IOOLrzsg44OfOyDjg587ICkgQ0lSQ0xFRCBLQVRBS0FOQSBNSQorMzJGMDszMkYwOzMyRjA7MzBFMDszMEUwOyAjICjji7A7IOOLsDsg44uwOyDjg6A7IOODoDsgKSBDSVJDTEVEIEtBVEFLQU5BIE1VCiszMkYxOzMyRjE7MzJGMTszMEUxOzMwRTE7ICMgKOOLsTsg44uxOyDji7E7IOODoTsg44OhOyApIENJUkNMRUQgS0FUQUtBTkEgTUUKKzMyRjI7MzJGMjszMkYyOzMwRTI7MzBFMjsgIyAo44uyOyDji7I7IOOLsjsg44OiOyDjg6I7ICkgQ0lSQ0xFRCBLQVRBS0FOQSBNTworMzJGMzszMkYzOzMyRjM7MzBFNDszMEU0OyAjICjji7M7IOOLszsg44uzOyDjg6Q7IOODpDsgKSBDSVJDTEVEIEtBVEFLQU5BIFlBCiszMkY0OzMyRjQ7MzJGNDszMEU2OzMwRTY7ICMgKOOLtDsg44u0OyDji7Q7IOODpjsg44OmOyApIENJUkNMRUQgS0FUQUtBTkEgWVUKKzMyRjU7MzJGNTszMkY1OzMwRTg7MzBFODsgIyAo44u1OyDji7U7IOOLtTsg44OoOyDjg6g7ICkgQ0lSQ0xFRCBLQVRBS0FOQSBZTworMzJGNjszMkY2OzMyRjY7MzBFOTszMEU5OyAjICjji7Y7IOOLtjsg44u2OyDjg6k7IOODqTsgKSBDSVJDTEVEIEtBVEFLQU5BIFJBCiszMkY3OzMyRjc7MzJGNzszMEVBOzMwRUE7ICMgKOOLtzsg44u3OyDji7c7IOODqjsg44OqOyApIENJUkNMRUQgS0FUQUtBTkEgUkkKKzMyRjg7MzJGODszMkY4OzMwRUI7MzBFQjsgIyAo44u4OyDji7g7IOOLuDsg44OrOyDjg6s7ICkgQ0lSQ0xFRCBLQVRBS0FOQSBSVQorMzJGOTszMkY5OzMyRjk7MzBFQzszMEVDOyAjICjji7k7IOOLuTsg44u5OyDjg6w7IOODrDsgKSBDSVJDTEVEIEtBVEFLQU5BIFJFCiszMkZBOzMyRkE7MzJGQTszMEVEOzMwRUQ7ICMgKOOLujsg44u6OyDji7o7IOODrTsg44OtOyApIENJUkNMRUQgS0FUQUtBTkEgUk8KKzMyRkI7MzJGQjszMkZCOzMwRUY7MzBFRjsgIyAo44u7OyDji7s7IOOLuzsg44OvOyDjg687ICkgQ0lSQ0xFRCBLQVRBS0FOQSBXQQorMzJGQzszMkZDOzMyRkM7MzBGMDszMEYwOyAjICjji7w7IOOLvDsg44u8OyDjg7A7IOODsDsgKSBDSVJDTEVEIEtBVEFLQU5BIFdJCiszMkZEOzMyRkQ7MzJGRDszMEYxOzMwRjE7ICMgKOOLvTsg44u9OyDji707IOODsTsg44OxOyApIENJUkNMRUQgS0FUQUtBTkEgV0UKKzMyRkU7MzJGRTszMkZFOzMwRjI7MzBGMjsgIyAo44u+OyDji747IOOLvjsg44OyOyDjg7I7ICkgQ0lSQ0xFRCBLQVRBS0FOQSBXTworMzMwMDszMzAwOzMzMDA7MzBBMiAzMEQxIDMwRkMgMzBDODszMEEyIDMwQ0YgMzA5QSAzMEZDIDMwQzg7ICMgKOOMgDsg44yAOyDjjIA7IOOCouODkeODvOODiDsg44Ki44OP4peM44Ka44O844OIOyApIFNRVUFSRSBBUEFBVE8KKzMzMDE7MzMwMTszMzAxOzMwQTIgMzBFQiAzMEQ1IDMwQTE7MzBBMiAzMEVCIDMwRDUgMzBBMTsgIyAo44yBOyDjjIE7IOOMgTsg44Ki44Or44OV44KhOyDjgqLjg6vjg5XjgqE7ICkgU1FVQVJFIEFSVUhVQQorMzMwMjszMzAyOzMzMDI7MzBBMiAzMEYzIDMwREEgMzBBMjszMEEyIDMwRjMgMzBEOCAzMDlBIDMwQTI7ICMgKOOMgjsg44yCOyDjjII7IOOCouODs+ODmuOCojsg44Ki44Oz44OY4peM44Ka44KiOyApIFNRVUFSRSBBTlBFQQorMzMwMzszMzAzOzMzMDM7MzBBMiAzMEZDIDMwRUI7MzBBMiAzMEZDIDMwRUI7ICMgKOOMgzsg44yDOyDjjIM7IOOCouODvOODqzsg44Ki44O844OrOyApIFNRVUFSRSBBQVJVCiszMzA0OzMzMDQ7MzMwNDszMEE0IDMwQ0IgMzBGMyAzMEIwOzMwQTQgMzBDQiAzMEYzIDMwQUYgMzA5OTsgIyAo44yEOyDjjIQ7IOOMhDsg44Kk44OL44Oz44KwOyDjgqTjg4vjg7Pjgq/il4zjgpk7ICkgU1FVQVJFIElOSU5HVQorMzMwNTszMzA1OzMzMDU7MzBBNCAzMEYzIDMwQzE7MzBBNCAzMEYzIDMwQzE7ICMgKOOMhTsg44yFOyDjjIU7IOOCpOODs+ODgTsg44Kk44Oz44OBOyApIFNRVUFSRSBJTlRJCiszMzA2OzMzMDY7MzMwNjszMEE2IDMwQTkgMzBGMzszMEE2IDMwQTkgMzBGMzsgIyAo44yGOyDjjIY7IOOMhjsg44Km44Kp44OzOyDjgqbjgqnjg7M7ICkgU1FVQVJFIFVPTgorMzMwNzszMzA3OzMzMDc7MzBBOCAzMEI5IDMwQUYgMzBGQyAzMEM5OzMwQTggMzBCOSAzMEFGIDMwRkMgMzBDOCAzMDk5OyAjICjjjIc7IOOMhzsg44yHOyDjgqjjgrnjgq/jg7zjg4k7IOOCqOOCueOCr+ODvOODiOKXjOOCmTsgKSBTUVVBUkUgRVNVS1VVRE8KKzMzMDg7MzMwODszMzA4OzMwQTggMzBGQyAzMEFCIDMwRkM7MzBBOCAzMEZDIDMwQUIgMzBGQzsgIyAo44yIOyDjjIg7IOOMiDsg44Ko44O844Kr44O8OyDjgqjjg7zjgqvjg7w7ICkgU1FVQVJFIEVFS0FBCiszMzA5OzMzMDk7MzMwOTszMEFBIDMwRjMgMzBCOTszMEFBIDMwRjMgMzBCOTsgIyAo44yJOyDjjIk7IOOMiTsg44Kq44Oz44K5OyDjgqrjg7Pjgrk7ICkgU1FVQVJFIE9OU1UKKzMzMEE7MzMwQTszMzBBOzMwQUEgMzBGQyAzMEUwOzMwQUEgMzBGQyAzMEUwOyAjICjjjIo7IOOMijsg44yKOyDjgqrjg7zjg6A7IOOCquODvOODoDsgKSBTUVVBUkUgT09NVQorMzMwQjszMzBCOzMzMEI7MzBBQiAzMEE0IDMwRUE7MzBBQiAzMEE0IDMwRUE7ICMgKOOMizsg44yLOyDjjIs7IOOCq+OCpOODqjsg44Kr44Kk44OqOyApIFNRVUFSRSBLQUlSSQorMzMwQzszMzBDOzMzMEM7MzBBQiAzMEU5IDMwQzMgMzBDODszMEFCIDMwRTkgMzBDMyAzMEM4OyAjICjjjIw7IOOMjDsg44yMOyDjgqvjg6njg4Pjg4g7IOOCq+ODqeODg+ODiDsgKSBTUVVBUkUgS0FSQVRUTworMzMwRDszMzBEOzMzMEQ7MzBBQiAzMEVEIDMwRUEgMzBGQzszMEFCIDMwRUQgMzBFQSAzMEZDOyAjICjjjI07IOOMjTsg44yNOyDjgqvjg63jg6rjg7w7IOOCq+ODreODquODvDsgKSBTUVVBUkUgS0FST1JJSQorMzMwRTszMzBFOzMzMEU7MzBBQyAzMEVEIDMwRjM7MzBBQiAzMDk5IDMwRUQgMzBGMzsgIyAo44yOOyDjjI47IOOMjjsg44Ks44Ot44OzOyDjgqvil4zjgpnjg63jg7M7ICkgU1FVQVJFIEdBUk9OCiszMzBGOzMzMEY7MzMwRjszMEFDIDMwRjMgMzBERTszMEFCIDMwOTkgMzBGMyAzMERFOyAjICjjjI87IOOMjzsg44yPOyDjgqzjg7Pjg547IOOCq+KXjOOCmeODs+ODnjsgKSBTUVVBUkUgR0FOTUEKKzMzMTA7MzMxMDszMzEwOzMwQUUgMzBBQzszMEFEIDMwOTkgMzBBQiAzMDk5OyAjICjjjJA7IOOMkDsg44yQOyDjgq7jgqw7IOOCreKXjOOCmeOCq+KXjOOCmTsgKSBTUVVBUkUgR0lHQQorMzMxMTszMzExOzMzMTE7MzBBRSAzMENCIDMwRkM7MzBBRCAzMDk5IDMwQ0IgMzBGQzsgIyAo44yROyDjjJE7IOOMkTsg44Ku44OL44O8OyDjgq3il4zjgpnjg4vjg7w7ICkgU1FVQVJFIEdJTklJCiszMzEyOzMzMTI7MzMxMjszMEFEIDMwRTUgMzBFQSAzMEZDOzMwQUQgMzBFNSAzMEVBIDMwRkM7ICMgKOOMkjsg44ySOyDjjJI7IOOCreODpeODquODvDsg44Kt44Ol44Oq44O8OyApIFNRVUFSRSBLWVVSSUkKKzMzMTM7MzMxMzszMzEzOzMwQUUgMzBFQiAzMEMwIDMwRkM7MzBBRCAzMDk5IDMwRUIgMzBCRiAzMDk5IDMwRkM7ICMgKOOMkzsg44yTOyDjjJM7IOOCruODq+ODgOODvDsg44Kt4peM44KZ44Or44K/4peM44KZ44O8OyApIFNRVUFSRSBHSVJVREFBCiszMzE0OzMzMTQ7MzMxNDszMEFEIDMwRUQ7MzBBRCAzMEVEOyAjICjjjJQ7IOOMlDsg44yUOyDjgq3jg607IOOCreODrTsgKSBTUVVBUkUgS0lSTworMzMxNTszMzE1OzMzMTU7MzBBRCAzMEVEIDMwQjAgMzBFOSAzMEUwOzMwQUQgMzBFRCAzMEFGIDMwOTkgMzBFOSAzMEUwOyAjICjjjJU7IOOMlTsg44yVOyDjgq3jg63jgrDjg6njg6A7IOOCreODreOCr+KXjOOCmeODqeODoDsgKSBTUVVBUkUgS0lST0dVUkFNVQorMzMxNjszMzE2OzMzMTY7MzBBRCAzMEVEIDMwRTEgMzBGQyAzMEM4IDMwRUI7MzBBRCAzMEVEIDMwRTEgMzBGQyAzMEM4IDMwRUI7ICMgKOOMljsg44yWOyDjjJY7IOOCreODreODoeODvOODiOODqzsg44Kt44Ot44Oh44O844OI44OrOyApIFNRVUFSRSBLSVJPTUVFVE9SVQorMzMxNzszMzE3OzMzMTc7MzBBRCAzMEVEIDMwRUYgMzBDMyAzMEM4OzMwQUQgMzBFRCAzMEVGIDMwQzMgMzBDODsgIyAo44yXOyDjjJc7IOOMlzsg44Kt44Ot44Ov44OD44OIOyDjgq3jg63jg6/jg4Pjg4g7ICkgU1FVQVJFIEtJUk9XQVRUTworMzMxODszMzE4OzMzMTg7MzBCMCAzMEU5IDMwRTA7MzBBRiAzMDk5IDMwRTkgMzBFMDsgIyAo44yYOyDjjJg7IOOMmDsg44Kw44Op44OgOyDjgq/il4zjgpnjg6njg6A7ICkgU1FVQVJFIEdVUkFNVQorMzMxOTszMzE5OzMzMTk7MzBCMCAzMEU5IDMwRTAgMzBDOCAzMEYzOzMwQUYgMzA5OSAzMEU5IDMwRTAgMzBDOCAzMEYzOyAjICjjjJk7IOOMmTsg44yZOyDjgrDjg6njg6Djg4jjg7M7IOOCr+KXjOOCmeODqeODoOODiOODszsgKSBTUVVBUkUgR1VSQU1VVE9OCiszMzFBOzMzMUE7MzMxQTszMEFGIDMwRUIgMzBCQyAzMEE0IDMwRUQ7MzBBRiAzMEVCIDMwQkIgMzA5OSAzMEE0IDMwRUQ7ICMgKOOMmjsg44yaOyDjjJo7IOOCr+ODq+OCvOOCpOODrTsg44Kv44Or44K74peM44KZ44Kk44OtOyApIFNRVUFSRSBLVVJVWkVJUk8KKzMzMUI7MzMxQjszMzFCOzMwQUYgMzBFRCAzMEZDIDMwQ0Q7MzBBRiAzMEVEIDMwRkMgMzBDRDsgIyAo44ybOyDjjJs7IOOMmzsg44Kv44Ot44O844ONOyDjgq/jg63jg7zjg407ICkgU1FVQVJFIEtVUk9PTkUKKzMzMUM7MzMxQzszMzFDOzMwQjEgMzBGQyAzMEI5OzMwQjEgMzBGQyAzMEI5OyAjICjjjJw7IOOMnDsg44ycOyDjgrHjg7zjgrk7IOOCseODvOOCuTsgKSBTUVVBUkUgS0VFU1UKKzMzMUQ7MzMxRDszMzFEOzMwQjMgMzBFQiAzMENBOzMwQjMgMzBFQiAzMENBOyAjICjjjJ07IOOMnTsg44ydOyDjgrPjg6vjg4o7IOOCs+ODq+ODijsgKSBTUVVBUkUgS09SVU5BCiszMzFFOzMzMUU7MzMxRTszMEIzIDMwRkMgMzBERDszMEIzIDMwRkMgMzBEQiAzMDlBOyAjICjjjJ47IOOMnjsg44yeOyDjgrPjg7zjg507IOOCs+ODvOODm+KXjOOCmjsgKSBTUVVBUkUgS09PUE8KKzMzMUY7MzMxRjszMzFGOzMwQjUgMzBBNCAzMEFGIDMwRUI7MzBCNSAzMEE0IDMwQUYgMzBFQjsgIyAo44yfOyDjjJ87IOOMnzsg44K144Kk44Kv44OrOyDjgrXjgqTjgq/jg6s7ICkgU1FVQVJFIFNBSUtVUlUKKzMzMjA7MzMyMDszMzIwOzMwQjUgMzBGMyAzMEMxIDMwRkMgMzBFMDszMEI1IDMwRjMgMzBDMSAzMEZDIDMwRTA7ICMgKOOMoDsg44ygOyDjjKA7IOOCteODs+ODgeODvOODoDsg44K144Oz44OB44O844OgOyApIFNRVUFSRSBTQU5USUlNVQorMzMyMTszMzIxOzMzMjE7MzBCNyAzMEVBIDMwRjMgMzBCMDszMEI3IDMwRUEgMzBGMyAzMEFGIDMwOTk7ICMgKOOMoTsg44yhOyDjjKE7IOOCt+ODquODs+OCsDsg44K344Oq44Oz44Kv4peM44KZOyApIFNRVUFSRSBTSVJJTkdVCiszMzIyOzMzMjI7MzMyMjszMEJCIDMwRjMgMzBDMTszMEJCIDMwRjMgMzBDMTsgIyAo44yiOyDjjKI7IOOMojsg44K744Oz44OBOyDjgrvjg7Pjg4E7ICkgU1FVQVJFIFNFTlRJCiszMzIzOzMzMjM7MzMyMzszMEJCIDMwRjMgMzBDODszMEJCIDMwRjMgMzBDODsgIyAo44yjOyDjjKM7IOOMozsg44K744Oz44OIOyDjgrvjg7Pjg4g7ICkgU1FVQVJFIFNFTlRPCiszMzI0OzMzMjQ7MzMyNDszMEMwIDMwRkMgMzBCOTszMEJGIDMwOTkgMzBGQyAzMEI5OyAjICjjjKQ7IOOMpDsg44ykOyDjg4Djg7zjgrk7IOOCv+KXjOOCmeODvOOCuTsgKSBTUVVBUkUgREFBU1UKKzMzMjU7MzMyNTszMzI1OzMwQzcgMzBCNzszMEM2IDMwOTkgMzBCNzsgIyAo44ylOyDjjKU7IOOMpTsg44OH44K3OyDjg4bil4zjgpnjgrc7ICkgU1FVQVJFIERFU0kKKzMzMjY7MzMyNjszMzI2OzMwQzkgMzBFQjszMEM4IDMwOTkgMzBFQjsgIyAo44ymOyDjjKY7IOOMpjsg44OJ44OrOyDjg4jil4zjgpnjg6s7ICkgU1FVQVJFIERPUlUKKzMzMjc7MzMyNzszMzI3OzMwQzggMzBGMzszMEM4IDMwRjM7ICMgKOOMpzsg44ynOyDjjKc7IOODiOODszsg44OI44OzOyApIFNRVUFSRSBUT04KKzMzMjg7MzMyODszMzI4OzMwQ0EgMzBDRTszMENBIDMwQ0U7ICMgKOOMqDsg44yoOyDjjKg7IOODiuODjjsg44OK44OOOyApIFNRVUFSRSBOQU5PCiszMzI5OzMzMjk7MzMyOTszMENFIDMwQzMgMzBDODszMENFIDMwQzMgMzBDODsgIyAo44ypOyDjjKk7IOOMqTsg44OO44OD44OIOyDjg47jg4Pjg4g7ICkgU1FVQVJFIE5PVFRPCiszMzJBOzMzMkE7MzMyQTszMENGIDMwQTQgMzBDNDszMENGIDMwQTQgMzBDNDsgIyAo44yqOyDjjKo7IOOMqjsg44OP44Kk44OEOyDjg4/jgqTjg4Q7ICkgU1FVQVJFIEhBSVRVCiszMzJCOzMzMkI7MzMyQjszMEQxIDMwRkMgMzBCQiAzMEYzIDMwQzg7MzBDRiAzMDlBIDMwRkMgMzBCQiAzMEYzIDMwQzg7ICMgKOOMqzsg44yrOyDjjKs7IOODkeODvOOCu+ODs+ODiDsg44OP4peM44Ka44O844K744Oz44OIOyApIFNRVUFSRSBQQUFTRU5UTworMzMyQzszMzJDOzMzMkM7MzBEMSAzMEZDIDMwQzQ7MzBDRiAzMDlBIDMwRkMgMzBDNDsgIyAo44ysOyDjjKw7IOOMrDsg44OR44O844OEOyDjg4/il4zjgprjg7zjg4Q7ICkgU1FVQVJFIFBBQVRVCiszMzJEOzMzMkQ7MzMyRDszMEQwIDMwRkMgMzBFQyAzMEVCOzMwQ0YgMzA5OSAzMEZDIDMwRUMgMzBFQjsgIyAo44ytOyDjjK07IOOMrTsg44OQ44O844Os44OrOyDjg4/il4zjgpnjg7zjg6zjg6s7ICkgU1FVQVJFIEJBQVJFUlUKKzMzMkU7MzMyRTszMzJFOzMwRDQgMzBBMiAzMEI5IDMwQzggMzBFQjszMEQyIDMwOUEgMzBBMiAzMEI5IDMwQzggMzBFQjsgIyAo44yuOyDjjK47IOOMrjsg44OU44Ki44K544OI44OrOyDjg5Lil4zjgprjgqLjgrnjg4jjg6s7ICkgU1FVQVJFIFBJQVNVVE9SVQorMzMyRjszMzJGOzMzMkY7MzBENCAzMEFGIDMwRUI7MzBEMiAzMDlBIDMwQUYgMzBFQjsgIyAo44yvOyDjjK87IOOMrzsg44OU44Kv44OrOyDjg5Lil4zjgprjgq/jg6s7ICkgU1FVQVJFIFBJS1VSVQorMzMzMDszMzMwOzMzMzA7MzBENCAzMEIzOzMwRDIgMzA5QSAzMEIzOyAjICjjjLA7IOOMsDsg44ywOyDjg5TjgrM7IOODkuKXjOOCmuOCszsgKSBTUVVBUkUgUElLTworMzMzMTszMzMxOzMzMzE7MzBEMyAzMEVCOzMwRDIgMzA5OSAzMEVCOyAjICjjjLE7IOOMsTsg44yxOyDjg5Pjg6s7IOODkuKXjOOCmeODqzsgKSBTUVVBUkUgQklSVQorMzMzMjszMzMyOzMzMzI7MzBENSAzMEExIDMwRTkgMzBDMyAzMEM5OzMwRDUgMzBBMSAzMEU5IDMwQzMgMzBDOCAzMDk5OyAjICjjjLI7IOOMsjsg44yyOyDjg5XjgqHjg6njg4Pjg4k7IOODleOCoeODqeODg+ODiOKXjOOCmTsgKSBTUVVBUkUgSFVBUkFERE8KKzMzMzM7MzMzMzszMzMzOzMwRDUgMzBBMyAzMEZDIDMwQzg7MzBENSAzMEEzIDMwRkMgMzBDODsgIyAo44yzOyDjjLM7IOOMszsg44OV44Kj44O844OIOyDjg5XjgqPjg7zjg4g7ICkgU1FVQVJFIEhVSUlUTworMzMzNDszMzM0OzMzMzQ7MzBENiAzMEMzIDMwQjcgMzBBNyAzMEVCOzMwRDUgMzA5OSAzMEMzIDMwQjcgMzBBNyAzMEVCOyAjICjjjLQ7IOOMtDsg44y0OyDjg5bjg4Pjgrfjgqfjg6s7IOODleKXjOOCmeODg+OCt+OCp+ODqzsgKSBTUVVBUkUgQlVTU1lFUlUKKzMzMzU7MzMzNTszMzM1OzMwRDUgMzBFOSAzMEYzOzMwRDUgMzBFOSAzMEYzOyAjICjjjLU7IOOMtTsg44y1OyDjg5Xjg6njg7M7IOODleODqeODszsgKSBTUVVBUkUgSFVSQU4KKzMzMzY7MzMzNjszMzM2OzMwRDggMzBBRiAzMEJGIDMwRkMgMzBFQjszMEQ4IDMwQUYgMzBCRiAzMEZDIDMwRUI7ICMgKOOMtjsg44y2OyDjjLY7IOODmOOCr+OCv+ODvOODqzsg44OY44Kv44K/44O844OrOyApIFNRVUFSRSBIRUtVVEFBUlUKKzMzMzc7MzMzNzszMzM3OzMwREEgMzBCRDszMEQ4IDMwOUEgMzBCRDsgIyAo44y3OyDjjLc7IOOMtzsg44Oa44K9OyDjg5jil4zjgprjgr07ICkgU1FVQVJFIFBFU08KKzMzMzg7MzMzODszMzM4OzMwREEgMzBDQiAzMEQyOzMwRDggMzA5QSAzMENCIDMwRDI7ICMgKOOMuDsg44y4OyDjjLg7IOODmuODi+ODkjsg44OY4peM44Ka44OL44OSOyApIFNRVUFSRSBQRU5JSEkKKzMzMzk7MzMzOTszMzM5OzMwRDggMzBFQiAzMEM0OzMwRDggMzBFQiAzMEM0OyAjICjjjLk7IOOMuTsg44y5OyDjg5jjg6vjg4Q7IOODmOODq+ODhDsgKSBTUVVBUkUgSEVSVVRVCiszMzNBOzMzM0E7MzMzQTszMERBIDMwRjMgMzBCOTszMEQ4IDMwOUEgMzBGMyAzMEI5OyAjICjjjLo7IOOMujsg44y6OyDjg5rjg7Pjgrk7IOODmOKXjOOCmuODs+OCuTsgKSBTUVVBUkUgUEVOU1UKKzMzM0I7MzMzQjszMzNCOzMwREEgMzBGQyAzMEI4OzMwRDggMzA5QSAzMEZDIDMwQjcgMzA5OTsgIyAo44y7OyDjjLs7IOOMuzsg44Oa44O844K4OyDjg5jil4zjgprjg7zjgrfil4zjgpk7ICkgU1FVQVJFIFBFRVpJCiszMzNDOzMzM0M7MzMzQzszMEQ5IDMwRkMgMzBCRjszMEQ4IDMwOTkgMzBGQyAzMEJGOyAjICjjjLw7IOOMvDsg44y8OyDjg5njg7zjgr87IOODmOKXjOOCmeODvOOCvzsgKSBTUVVBUkUgQkVFVEEKKzMzM0Q7MzMzRDszMzNEOzMwREQgMzBBNCAzMEYzIDMwQzg7MzBEQiAzMDlBIDMwQTQgMzBGMyAzMEM4OyAjICjjjL07IOOMvTsg44y9OyDjg53jgqTjg7Pjg4g7IOODm+KXjOOCmuOCpOODs+ODiDsgKSBTUVVBUkUgUE9JTlRPCiszMzNFOzMzM0U7MzMzRTszMERDIDMwRUIgMzBDODszMERCIDMwOTkgMzBFQiAzMEM4OyAjICjjjL47IOOMvjsg44y+OyDjg5zjg6vjg4g7IOODm+KXjOOCmeODq+ODiDsgKSBTUVVBUkUgQk9SVVRPCiszMzNGOzMzM0Y7MzMzRjszMERCIDMwRjM7MzBEQiAzMEYzOyAjICjjjL87IOOMvzsg44y/OyDjg5vjg7M7IOODm+ODszsgKSBTUVVBUkUgSE9OCiszMzQwOzMzNDA7MzM0MDszMEREIDMwRjMgMzBDOTszMERCIDMwOUEgMzBGMyAzMEM4IDMwOTk7ICMgKOONgDsg442AOyDjjYA7IOODneODs+ODiTsg44Ob4peM44Ka44Oz44OI4peM44KZOyApIFNRVUFSRSBQT05ETworMzM0MTszMzQxOzMzNDE7MzBEQiAzMEZDIDMwRUI7MzBEQiAzMEZDIDMwRUI7ICMgKOONgTsg442BOyDjjYE7IOODm+ODvOODqzsg44Ob44O844OrOyApIFNRVUFSRSBIT09SVQorMzM0MjszMzQyOzMzNDI7MzBEQiAzMEZDIDMwRjM7MzBEQiAzMEZDIDMwRjM7ICMgKOONgjsg442COyDjjYI7IOODm+ODvOODszsg44Ob44O844OzOyApIFNRVUFSRSBIT09OCiszMzQzOzMzNDM7MzM0MzszMERFIDMwQTQgMzBBRiAzMEVEOzMwREUgMzBBNCAzMEFGIDMwRUQ7ICMgKOONgzsg442DOyDjjYM7IOODnuOCpOOCr+ODrTsg44Oe44Kk44Kv44OtOyApIFNRVUFSRSBNQUlLVVJPCiszMzQ0OzMzNDQ7MzM0NDszMERFIDMwQTQgMzBFQjszMERFIDMwQTQgMzBFQjsgIyAo442EOyDjjYQ7IOONhDsg44Oe44Kk44OrOyDjg57jgqTjg6s7ICkgU1FVQVJFIE1BSVJVCiszMzQ1OzMzNDU7MzM0NTszMERFIDMwQzMgMzBDRjszMERFIDMwQzMgMzBDRjsgIyAo442FOyDjjYU7IOONhTsg44Oe44OD44OPOyDjg57jg4Pjg487ICkgU1FVQVJFIE1BSEhBCiszMzQ2OzMzNDY7MzM0NjszMERFIDMwRUIgMzBBRjszMERFIDMwRUIgMzBBRjsgIyAo442GOyDjjYY7IOONhjsg44Oe44Or44KvOyDjg57jg6vjgq87ICkgU1FVQVJFIE1BUlVLVQorMzM0NzszMzQ3OzMzNDc7MzBERSAzMEYzIDMwQjcgMzBFNyAzMEYzOzMwREUgMzBGMyAzMEI3IDMwRTcgMzBGMzsgIyAo442HOyDjjYc7IOONhzsg44Oe44Oz44K344On44OzOyDjg57jg7Pjgrfjg6fjg7M7ICkgU1FVQVJFIE1BTlNZT04KKzMzNDg7MzM0ODszMzQ4OzMwREYgMzBBRiAzMEVEIDMwRjM7MzBERiAzMEFGIDMwRUQgMzBGMzsgIyAo442IOyDjjYg7IOONiDsg44Of44Kv44Ot44OzOyDjg5/jgq/jg63jg7M7ICkgU1FVQVJFIE1JS1VST04KKzMzNDk7MzM0OTszMzQ5OzMwREYgMzBFQTszMERGIDMwRUE7ICMgKOONiTsg442JOyDjjYk7IOODn+ODqjsg44Of44OqOyApIFNRVUFSRSBNSVJJCiszMzRBOzMzNEE7MzM0QTszMERGIDMwRUEgMzBEMCAzMEZDIDMwRUI7MzBERiAzMEVBIDMwQ0YgMzA5OSAzMEZDIDMwRUI7ICMgKOONijsg442KOyDjjYo7IOODn+ODquODkOODvOODqzsg44Of44Oq44OP4peM44KZ44O844OrOyApIFNRVUFSRSBNSVJJQkFBUlUKKzMzNEI7MzM0QjszMzRCOzMwRTEgMzBBQzszMEUxIDMwQUIgMzA5OTsgIyAo442LOyDjjYs7IOONizsg44Oh44KsOyDjg6Hjgqvil4zjgpk7ICkgU1FVQVJFIE1FR0EKKzMzNEM7MzM0QzszMzRDOzMwRTEgMzBBQyAzMEM4IDMwRjM7MzBFMSAzMEFCIDMwOTkgMzBDOCAzMEYzOyAjICjjjYw7IOONjDsg442MOyDjg6Hjgqzjg4jjg7M7IOODoeOCq+KXjOOCmeODiOODszsgKSBTUVVBUkUgTUVHQVRPTgorMzM0RDszMzREOzMzNEQ7MzBFMSAzMEZDIDMwQzggMzBFQjszMEUxIDMwRkMgMzBDOCAzMEVCOyAjICjjjY07IOONjTsg442NOyDjg6Hjg7zjg4jjg6s7IOODoeODvOODiOODqzsgKSBTUVVBUkUgTUVFVE9SVQorMzM0RTszMzRFOzMzNEU7MzBFNCAzMEZDIDMwQzk7MzBFNCAzMEZDIDMwQzggMzA5OTsgIyAo442OOyDjjY47IOONjjsg44Ok44O844OJOyDjg6Tjg7zjg4jil4zjgpk7ICkgU1FVQVJFIFlBQURPCiszMzRGOzMzNEY7MzM0RjszMEU0IDMwRkMgMzBFQjszMEU0IDMwRkMgMzBFQjsgIyAo442POyDjjY87IOONjzsg44Ok44O844OrOyDjg6Tjg7zjg6s7ICkgU1FVQVJFIFlBQVJVCiszMzUwOzMzNTA7MzM1MDszMEU2IDMwQTIgMzBGMzszMEU2IDMwQTIgMzBGMzsgIyAo442QOyDjjZA7IOONkDsg44Om44Ki44OzOyDjg6bjgqLjg7M7ICkgU1FVQVJFIFlVQU4KKzMzNTE7MzM1MTszMzUxOzMwRUEgMzBDMyAzMEM4IDMwRUI7MzBFQSAzMEMzIDMwQzggMzBFQjsgIyAo442ROyDjjZE7IOONkTsg44Oq44OD44OI44OrOyDjg6rjg4Pjg4jjg6s7ICkgU1FVQVJFIFJJVFRPUlUKKzMzNTI7MzM1MjszMzUyOzMwRUEgMzBFOTszMEVBIDMwRTk7ICMgKOONkjsg442SOyDjjZI7IOODquODqTsg44Oq44OpOyApIFNRVUFSRSBSSVJBCiszMzUzOzMzNTM7MzM1MzszMEVCIDMwRDQgMzBGQzszMEVCIDMwRDIgMzA5QSAzMEZDOyAjICjjjZM7IOONkzsg442TOyDjg6vjg5Tjg7w7IOODq+ODkuKXjOOCmuODvDsgKSBTUVVBUkUgUlVQSUkKKzMzNTQ7MzM1NDszMzU0OzMwRUIgMzBGQyAzMEQ2IDMwRUI7MzBFQiAzMEZDIDMwRDUgMzA5OSAzMEVCOyAjICjjjZQ7IOONlDsg442UOyDjg6vjg7zjg5bjg6s7IOODq+ODvOODleKXjOOCmeODqzsgKSBTUVVBUkUgUlVVQlVSVQorMzM1NTszMzU1OzMzNTU7MzBFQyAzMEUwOzMwRUMgMzBFMDsgIyAo442VOyDjjZU7IOONlTsg44Os44OgOyDjg6zjg6A7ICkgU1FVQVJFIFJFTVUKKzMzNTY7MzM1NjszMzU2OzMwRUMgMzBGMyAzMEM4IDMwQjIgMzBGMzszMEVDIDMwRjMgMzBDOCAzMEIxIDMwOTkgMzBGMzsgIyAo442WOyDjjZY7IOONljsg44Os44Oz44OI44Ky44OzOyDjg6zjg7Pjg4jjgrHil4zjgpnjg7M7ICkgU1FVQVJFIFJFTlRPR0VOCiszMzU3OzMzNTc7MzM1NzszMEVGIDMwQzMgMzBDODszMEVGIDMwQzMgMzBDODsgIyAo442XOyDjjZc7IOONlzsg44Ov44OD44OIOyDjg6/jg4Pjg4g7ICkgU1FVQVJFIFdBVFRPCiszMzU4OzMzNTg7MzM1ODswMDMwIDcwQjk7MDAzMCA3MEI5OyAjICjjjZg7IOONmDsg442YOyAw54K5OyAw54K5OyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgWkVSTworMzM1OTszMzU5OzMzNTk7MDAzMSA3MEI5OzAwMzEgNzBCOTsgIyAo442ZOyDjjZk7IOONmTsgMeeCuTsgMeeCuTsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIE9ORQorMzM1QTszMzVBOzMzNUE7MDAzMiA3MEI5OzAwMzIgNzBCOTsgIyAo442aOyDjjZo7IOONmjsgMueCuTsgMueCuTsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRXTworMzM1QjszMzVCOzMzNUI7MDAzMyA3MEI5OzAwMzMgNzBCOTsgIyAo442bOyDjjZs7IOONmzsgM+eCuTsgM+eCuTsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRIUkVFCiszMzVDOzMzNUM7MzM1QzswMDM0IDcwQjk7MDAzNCA3MEI5OyAjICjjjZw7IOONnDsg442cOyA054K5OyA054K5OyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgRk9VUgorMzM1RDszMzVEOzMzNUQ7MDAzNSA3MEI5OzAwMzUgNzBCOTsgIyAo442dOyDjjZ07IOONnTsgNeeCuTsgNeeCuTsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEZJVkUKKzMzNUU7MzM1RTszMzVFOzAwMzYgNzBCOTswMDM2IDcwQjk7ICMgKOONnjsg442eOyDjjZ47IDbngrk7IDbngrk7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBTSVgKKzMzNUY7MzM1RjszMzVGOzAwMzcgNzBCOTswMDM3IDcwQjk7ICMgKOONnzsg442fOyDjjZ87IDfngrk7IDfngrk7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBTRVZFTgorMzM2MDszMzYwOzMzNjA7MDAzOCA3MEI5OzAwMzggNzBCOTsgIyAo442gOyDjjaA7IOONoDsgOOeCuTsgOOeCuTsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEVJR0hUCiszMzYxOzMzNjE7MzM2MTswMDM5IDcwQjk7MDAzOSA3MEI5OyAjICjjjaE7IOONoTsg442hOyA554K5OyA554K5OyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgTklORQorMzM2MjszMzYyOzMzNjI7MDAzMSAwMDMwIDcwQjk7MDAzMSAwMDMwIDcwQjk7ICMgKOONojsg442iOyDjjaI7IDEw54K5OyAxMOeCuTsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRFTgorMzM2MzszMzYzOzMzNjM7MDAzMSAwMDMxIDcwQjk7MDAzMSAwMDMxIDcwQjk7ICMgKOONozsg442jOyDjjaM7IDEx54K5OyAxMeeCuTsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEVMRVZFTgorMzM2NDszMzY0OzMzNjQ7MDAzMSAwMDMyIDcwQjk7MDAzMSAwMDMyIDcwQjk7ICMgKOONpDsg442kOyDjjaQ7IDEy54K5OyAxMueCuTsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRXRUxWRQorMzM2NTszMzY1OzMzNjU7MDAzMSAwMDMzIDcwQjk7MDAzMSAwMDMzIDcwQjk7ICMgKOONpTsg442lOyDjjaU7IDEz54K5OyAxM+eCuTsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRISVJURUVOCiszMzY2OzMzNjY7MzM2NjswMDMxIDAwMzQgNzBCOTswMDMxIDAwMzQgNzBCOTsgIyAo442mOyDjjaY7IOONpjsgMTTngrk7IDE054K5OyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgRk9VUlRFRU4KKzMzNjc7MzM2NzszMzY3OzAwMzEgMDAzNSA3MEI5OzAwMzEgMDAzNSA3MEI5OyAjICjjjac7IOONpzsg442nOyAxNeeCuTsgMTXngrk7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBGSUZURUVOCiszMzY4OzMzNjg7MzM2ODswMDMxIDAwMzYgNzBCOTswMDMxIDAwMzYgNzBCOTsgIyAo442oOyDjjag7IOONqDsgMTbngrk7IDE254K5OyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgU0lYVEVFTgorMzM2OTszMzY5OzMzNjk7MDAzMSAwMDM3IDcwQjk7MDAzMSAwMDM3IDcwQjk7ICMgKOONqTsg442pOyDjjak7IDE354K5OyAxN+eCuTsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFNFVkVOVEVFTgorMzM2QTszMzZBOzMzNkE7MDAzMSAwMDM4IDcwQjk7MDAzMSAwMDM4IDcwQjk7ICMgKOONqjsg442qOyDjjao7IDE454K5OyAxOOeCuTsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEVJR0hURUVOCiszMzZCOzMzNkI7MzM2QjswMDMxIDAwMzkgNzBCOTswMDMxIDAwMzkgNzBCOTsgIyAo442rOyDjjas7IOONqzsgMTnngrk7IDE554K5OyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgTklORVRFRU4KKzMzNkM7MzM2QzszMzZDOzAwMzIgMDAzMCA3MEI5OzAwMzIgMDAzMCA3MEI5OyAjICjjjaw7IOONrDsg442sOyAyMOeCuTsgMjDngrk7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV0VOVFkKKzMzNkQ7MzM2RDszMzZEOzAwMzIgMDAzMSA3MEI5OzAwMzIgMDAzMSA3MEI5OyAjICjjja07IOONrTsg442tOyAyMeeCuTsgMjHngrk7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV0VOVFktT05FCiszMzZFOzMzNkU7MzM2RTswMDMyIDAwMzIgNzBCOTswMDMyIDAwMzIgNzBCOTsgIyAo442uOyDjja47IOONrjsgMjLngrk7IDIy54K5OyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVFdFTlRZLVRXTworMzM2RjszMzZGOzMzNkY7MDAzMiAwMDMzIDcwQjk7MDAzMiAwMDMzIDcwQjk7ICMgKOONrzsg442vOyDjja87IDIz54K5OyAyM+eCuTsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRXRU5UWS1USFJFRQorMzM3MDszMzcwOzMzNzA7MDAzMiAwMDM0IDcwQjk7MDAzMiAwMDM0IDcwQjk7ICMgKOONsDsg442wOyDjjbA7IDI054K5OyAyNOeCuTsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRXRU5UWS1GT1VSCiszMzcxOzMzNzE7MzM3MTswMDY4IDAwNTAgMDA2MTswMDY4IDAwNTAgMDA2MTsgIyAo442xOyDjjbE7IOONsTsgaFBhOyBoUGE7ICkgU1FVQVJFIEhQQQorMzM3MjszMzcyOzMzNzI7MDA2NCAwMDYxOzAwNjQgMDA2MTsgIyAo442yOyDjjbI7IOONsjsgZGE7IGRhOyApIFNRVUFSRSBEQQorMzM3MzszMzczOzMzNzM7MDA0MSAwMDU1OzAwNDEgMDA1NTsgIyAo442zOyDjjbM7IOONszsgQVU7IEFVOyApIFNRVUFSRSBBVQorMzM3NDszMzc0OzMzNzQ7MDA2MiAwMDYxIDAwNzI7MDA2MiAwMDYxIDAwNzI7ICMgKOONtDsg4420OyDjjbQ7IGJhcjsgYmFyOyApIFNRVUFSRSBCQVIKKzMzNzU7MzM3NTszMzc1OzAwNkYgMDA1NjswMDZGIDAwNTY7ICMgKOONtTsg4421OyDjjbU7IG9WOyBvVjsgKSBTUVVBUkUgT1YKKzMzNzY7MzM3NjszMzc2OzAwNzAgMDA2MzswMDcwIDAwNjM7ICMgKOONtjsg4422OyDjjbY7IHBjOyBwYzsgKSBTUVVBUkUgUEMKKzMzN0I7MzM3QjszMzdCOzVFNzMgNjIxMDs1RTczIDYyMTA7ICMgKOONuzsg4427OyDjjbs7IOW5s+aIkDsg5bmz5oiQOyApIFNRVUFSRSBFUkEgTkFNRSBIRUlTRUkKKzMzN0M7MzM3QzszMzdDOzY2MkQgNTQ4Qzs2NjJEIDU0OEM7ICMgKOONvDsg4428OyDjjbw7IOaYreWSjDsg5pit5ZKMOyApIFNRVUFSRSBFUkEgTkFNRSBTWU9VV0EKKzMzN0Q7MzM3RDszMzdEOzU5MjcgNkI2Mzs1OTI3IDZCNjM7ICMgKOONvTsg4429OyDjjb07IOWkp+atozsg5aSn5q2jOyApIFNRVUFSRSBFUkEgTkFNRSBUQUlTWU9VCiszMzdFOzMzN0U7MzM3RTs2NjBFIDZDQkI7NjYwRSA2Q0JCOyAjICjjjb47IOONvjsg442+OyDmmI7msrs7IOaYjuayuzsgKSBTUVVBUkUgRVJBIE5BTUUgTUVJWkkKKzMzN0Y7MzM3RjszMzdGOzY4MkEgNUYwRiA0RjFBIDc5M0U7NjgyQSA1RjBGIDRGMUEgNzkzRTsgIyAo442/OyDjjb87IOONvzsg5qCq5byP5Lya56S+OyDmoKrlvI/kvJrnpL47ICkgU1FVQVJFIENPUlBPUkFUSU9OCiszMzgwOzMzODA7MzM4MDswMDcwIDAwNDE7MDA3MCAwMDQxOyAjICjjjoA7IOOOgDsg446AOyBwQTsgcEE7ICkgU1FVQVJFIFBBIEFNUFMKKzMzODE7MzM4MTszMzgxOzAwNkUgMDA0MTswMDZFIDAwNDE7ICMgKOOOgTsg446BOyDjjoE7IG5BOyBuQTsgKSBTUVVBUkUgTkEKKzMzODI7MzM4MjszMzgyOzAzQkMgMDA0MTswM0JDIDAwNDE7ICMgKOOOgjsg446COyDjjoI7IM68QTsgzrxBOyApIFNRVUFSRSBNVSBBCiszMzgzOzMzODM7MzM4MzswMDZEIDAwNDE7MDA2RCAwMDQxOyAjICjjjoM7IOOOgzsg446DOyBtQTsgbUE7ICkgU1FVQVJFIE1BCiszMzg0OzMzODQ7MzM4NDswMDZCIDAwNDE7MDA2QiAwMDQxOyAjICjjjoQ7IOOOhDsg446EOyBrQTsga0E7ICkgU1FVQVJFIEtBCiszMzg1OzMzODU7MzM4NTswMDRCIDAwNDI7MDA0QiAwMDQyOyAjICjjjoU7IOOOhTsg446FOyBLQjsgS0I7ICkgU1FVQVJFIEtCCiszMzg2OzMzODY7MzM4NjswMDREIDAwNDI7MDA0RCAwMDQyOyAjICjjjoY7IOOOhjsg446GOyBNQjsgTUI7ICkgU1FVQVJFIE1CCiszMzg3OzMzODc7MzM4NzswMDQ3IDAwNDI7MDA0NyAwMDQyOyAjICjjjoc7IOOOhzsg446HOyBHQjsgR0I7ICkgU1FVQVJFIEdCCiszMzg4OzMzODg7MzM4ODswMDYzIDAwNjEgMDA2QzswMDYzIDAwNjEgMDA2QzsgIyAo446IOyDjjog7IOOOiDsgY2FsOyBjYWw7ICkgU1FVQVJFIENBTAorMzM4OTszMzg5OzMzODk7MDA2QiAwMDYzIDAwNjEgMDA2QzswMDZCIDAwNjMgMDA2MSAwMDZDOyAjICjjjok7IOOOiTsg446JOyBrY2FsOyBrY2FsOyApIFNRVUFSRSBLQ0FMCiszMzhBOzMzOEE7MzM4QTswMDcwIDAwNDY7MDA3MCAwMDQ2OyAjICjjjoo7IOOOijsg446KOyBwRjsgcEY7ICkgU1FVQVJFIFBGCiszMzhCOzMzOEI7MzM4QjswMDZFIDAwNDY7MDA2RSAwMDQ2OyAjICjjjos7IOOOizsg446LOyBuRjsgbkY7ICkgU1FVQVJFIE5GCiszMzhDOzMzOEM7MzM4QzswM0JDIDAwNDY7MDNCQyAwMDQ2OyAjICjjjow7IOOOjDsg446MOyDOvEY7IM68RjsgKSBTUVVBUkUgTVUgRgorMzM4RDszMzhEOzMzOEQ7MDNCQyAwMDY3OzAzQkMgMDA2NzsgIyAo446NOyDjjo07IOOOjTsgzrxnOyDOvGc7ICkgU1FVQVJFIE1VIEcKKzMzOEU7MzM4RTszMzhFOzAwNkQgMDA2NzswMDZEIDAwNjc7ICMgKOOOjjsg446OOyDjjo47IG1nOyBtZzsgKSBTUVVBUkUgTUcKKzMzOEY7MzM4RjszMzhGOzAwNkIgMDA2NzswMDZCIDAwNjc7ICMgKOOOjzsg446POyDjjo87IGtnOyBrZzsgKSBTUVVBUkUgS0cKKzMzOTA7MzM5MDszMzkwOzAwNDggMDA3QTswMDQ4IDAwN0E7ICMgKOOOkDsg446QOyDjjpA7IEh6OyBIejsgKSBTUVVBUkUgSFoKKzMzOTE7MzM5MTszMzkxOzAwNkIgMDA0OCAwMDdBOzAwNkIgMDA0OCAwMDdBOyAjICjjjpE7IOOOkTsg446ROyBrSHo7IGtIejsgKSBTUVVBUkUgS0haCiszMzkyOzMzOTI7MzM5MjswMDREIDAwNDggMDA3QTswMDREIDAwNDggMDA3QTsgIyAo446SOyDjjpI7IOOOkjsgTUh6OyBNSHo7ICkgU1FVQVJFIE1IWgorMzM5MzszMzkzOzMzOTM7MDA0NyAwMDQ4IDAwN0E7MDA0NyAwMDQ4IDAwN0E7ICMgKOOOkzsg446TOyDjjpM7IEdIejsgR0h6OyApIFNRVUFSRSBHSFoKKzMzOTQ7MzM5NDszMzk0OzAwNTQgMDA0OCAwMDdBOzAwNTQgMDA0OCAwMDdBOyAjICjjjpQ7IOOOlDsg446UOyBUSHo7IFRIejsgKSBTUVVBUkUgVEhaCiszMzk1OzMzOTU7MzM5NTswM0JDIDAwNkM7MDNCQyAwMDZDOyAjICjjjpU7IOOOlTsg446VOyDOvGw7IM68bDsgKSBTUVVBUkUgTVUgTAorMzM5NjszMzk2OzMzOTY7MDA2RCAwMDZDOzAwNkQgMDA2QzsgIyAo446WOyDjjpY7IOOOljsgbWw7IG1sOyApIFNRVUFSRSBNTAorMzM5NzszMzk3OzMzOTc7MDA2NCAwMDZDOzAwNjQgMDA2QzsgIyAo446XOyDjjpc7IOOOlzsgZGw7IGRsOyApIFNRVUFSRSBETAorMzM5ODszMzk4OzMzOTg7MDA2QiAwMDZDOzAwNkIgMDA2QzsgIyAo446YOyDjjpg7IOOOmDsga2w7IGtsOyApIFNRVUFSRSBLTAorMzM5OTszMzk5OzMzOTk7MDA2NiAwMDZEOzAwNjYgMDA2RDsgIyAo446ZOyDjjpk7IOOOmTsgZm07IGZtOyApIFNRVUFSRSBGTQorMzM5QTszMzlBOzMzOUE7MDA2RSAwMDZEOzAwNkUgMDA2RDsgIyAo446aOyDjjpo7IOOOmjsgbm07IG5tOyApIFNRVUFSRSBOTQorMzM5QjszMzlCOzMzOUI7MDNCQyAwMDZEOzAzQkMgMDA2RDsgIyAo446bOyDjjps7IOOOmzsgzrxtOyDOvG07ICkgU1FVQVJFIE1VIE0KKzMzOUM7MzM5QzszMzlDOzAwNkQgMDA2RDswMDZEIDAwNkQ7ICMgKOOOnDsg446cOyDjjpw7IG1tOyBtbTsgKSBTUVVBUkUgTU0KKzMzOUQ7MzM5RDszMzlEOzAwNjMgMDA2RDswMDYzIDAwNkQ7ICMgKOOOnTsg446dOyDjjp07IGNtOyBjbTsgKSBTUVVBUkUgQ00KKzMzOUU7MzM5RTszMzlFOzAwNkIgMDA2RDswMDZCIDAwNkQ7ICMgKOOOnjsg446eOyDjjp47IGttOyBrbTsgKSBTUVVBUkUgS00KKzMzOUY7MzM5RjszMzlGOzAwNkQgMDA2RCAwMDMyOzAwNkQgMDA2RCAwMDMyOyAjICjjjp87IOOOnzsg446fOyBtbTI7IG1tMjsgKSBTUVVBUkUgTU0gU1FVQVJFRAorMzNBMDszM0EwOzMzQTA7MDA2MyAwMDZEIDAwMzI7MDA2MyAwMDZEIDAwMzI7ICMgKOOOoDsg446gOyDjjqA7IGNtMjsgY20yOyApIFNRVUFSRSBDTSBTUVVBUkVECiszM0ExOzMzQTE7MzNBMTswMDZEIDAwMzI7MDA2RCAwMDMyOyAjICjjjqE7IOOOoTsg446hOyBtMjsgbTI7ICkgU1FVQVJFIE0gU1FVQVJFRAorMzNBMjszM0EyOzMzQTI7MDA2QiAwMDZEIDAwMzI7MDA2QiAwMDZEIDAwMzI7ICMgKOOOojsg446iOyDjjqI7IGttMjsga20yOyApIFNRVUFSRSBLTSBTUVVBUkVECiszM0EzOzMzQTM7MzNBMzswMDZEIDAwNkQgMDAzMzswMDZEIDAwNkQgMDAzMzsgIyAo446jOyDjjqM7IOOOozsgbW0zOyBtbTM7ICkgU1FVQVJFIE1NIENVQkVECiszM0E0OzMzQTQ7MzNBNDswMDYzIDAwNkQgMDAzMzswMDYzIDAwNkQgMDAzMzsgIyAo446kOyDjjqQ7IOOOpDsgY20zOyBjbTM7ICkgU1FVQVJFIENNIENVQkVECiszM0E1OzMzQTU7MzNBNTswMDZEIDAwMzM7MDA2RCAwMDMzOyAjICjjjqU7IOOOpTsg446lOyBtMzsgbTM7ICkgU1FVQVJFIE0gQ1VCRUQKKzMzQTY7MzNBNjszM0E2OzAwNkIgMDA2RCAwMDMzOzAwNkIgMDA2RCAwMDMzOyAjICjjjqY7IOOOpjsg446mOyBrbTM7IGttMzsgKSBTUVVBUkUgS00gQ1VCRUQKKzMzQTc7MzNBNzszM0E3OzAwNkQgMjIxNSAwMDczOzAwNkQgMjIxNSAwMDczOyAjICjjjqc7IOOOpzsg446nOyBt4oiVczsgbeKIlXM7ICkgU1FVQVJFIE0gT1ZFUiBTCiszM0E4OzMzQTg7MzNBODswMDZEIDIyMTUgMDA3MyAwMDMyOzAwNkQgMjIxNSAwMDczIDAwMzI7ICMgKOOOqDsg446oOyDjjqg7IG3iiJVzMjsgbeKIlXMyOyApIFNRVUFSRSBNIE9WRVIgUyBTUVVBUkVECiszM0E5OzMzQTk7MzNBOTswMDUwIDAwNjE7MDA1MCAwMDYxOyAjICjjjqk7IOOOqTsg446pOyBQYTsgUGE7ICkgU1FVQVJFIFBBCiszM0FBOzMzQUE7MzNBQTswMDZCIDAwNTAgMDA2MTswMDZCIDAwNTAgMDA2MTsgIyAo446qOyDjjqo7IOOOqjsga1BhOyBrUGE7ICkgU1FVQVJFIEtQQQorMzNBQjszM0FCOzMzQUI7MDA0RCAwMDUwIDAwNjE7MDA0RCAwMDUwIDAwNjE7ICMgKOOOqzsg446rOyDjjqs7IE1QYTsgTVBhOyApIFNRVUFSRSBNUEEKKzMzQUM7MzNBQzszM0FDOzAwNDcgMDA1MCAwMDYxOzAwNDcgMDA1MCAwMDYxOyAjICjjjqw7IOOOrDsg446sOyBHUGE7IEdQYTsgKSBTUVVBUkUgR1BBCiszM0FEOzMzQUQ7MzNBRDswMDcyIDAwNjEgMDA2NDswMDcyIDAwNjEgMDA2NDsgIyAo446tOyDjjq07IOOOrTsgcmFkOyByYWQ7ICkgU1FVQVJFIFJBRAorMzNBRTszM0FFOzMzQUU7MDA3MiAwMDYxIDAwNjQgMjIxNSAwMDczOzAwNzIgMDA2MSAwMDY0IDIyMTUgMDA3MzsgIyAo446uOyDjjq47IOOOrjsgcmFk4oiVczsgcmFk4oiVczsgKSBTUVVBUkUgUkFEIE9WRVIgUworMzNBRjszM0FGOzMzQUY7MDA3MiAwMDYxIDAwNjQgMjIxNSAwMDczIDAwMzI7MDA3MiAwMDYxIDAwNjQgMjIxNSAwMDczIDAwMzI7ICMgKOOOrzsg446vOyDjjq87IHJhZOKIlXMyOyByYWTiiJVzMjsgKSBTUVVBUkUgUkFEIE9WRVIgUyBTUVVBUkVECiszM0IwOzMzQjA7MzNCMDswMDcwIDAwNzM7MDA3MCAwMDczOyAjICjjjrA7IOOOsDsg446wOyBwczsgcHM7ICkgU1FVQVJFIFBTCiszM0IxOzMzQjE7MzNCMTswMDZFIDAwNzM7MDA2RSAwMDczOyAjICjjjrE7IOOOsTsg446xOyBuczsgbnM7ICkgU1FVQVJFIE5TCiszM0IyOzMzQjI7MzNCMjswM0JDIDAwNzM7MDNCQyAwMDczOyAjICjjjrI7IOOOsjsg446yOyDOvHM7IM68czsgKSBTUVVBUkUgTVUgUworMzNCMzszM0IzOzMzQjM7MDA2RCAwMDczOzAwNkQgMDA3MzsgIyAo446zOyDjjrM7IOOOszsgbXM7IG1zOyApIFNRVUFSRSBNUworMzNCNDszM0I0OzMzQjQ7MDA3MCAwMDU2OzAwNzAgMDA1NjsgIyAo4460OyDjjrQ7IOOOtDsgcFY7IHBWOyApIFNRVUFSRSBQVgorMzNCNTszM0I1OzMzQjU7MDA2RSAwMDU2OzAwNkUgMDA1NjsgIyAo4461OyDjjrU7IOOOtTsgblY7IG5WOyApIFNRVUFSRSBOVgorMzNCNjszM0I2OzMzQjY7MDNCQyAwMDU2OzAzQkMgMDA1NjsgIyAo4462OyDjjrY7IOOOtjsgzrxWOyDOvFY7ICkgU1FVQVJFIE1VIFYKKzMzQjc7MzNCNzszM0I3OzAwNkQgMDA1NjswMDZEIDAwNTY7ICMgKOOOtzsg4463OyDjjrc7IG1WOyBtVjsgKSBTUVVBUkUgTVYKKzMzQjg7MzNCODszM0I4OzAwNkIgMDA1NjswMDZCIDAwNTY7ICMgKOOOuDsg4464OyDjjrg7IGtWOyBrVjsgKSBTUVVBUkUgS1YKKzMzQjk7MzNCOTszM0I5OzAwNEQgMDA1NjswMDREIDAwNTY7ICMgKOOOuTsg4465OyDjjrk7IE1WOyBNVjsgKSBTUVVBUkUgTVYgTUVHQQorMzNCQTszM0JBOzMzQkE7MDA3MCAwMDU3OzAwNzAgMDA1NzsgIyAo4466OyDjjro7IOOOujsgcFc7IHBXOyApIFNRVUFSRSBQVworMzNCQjszM0JCOzMzQkI7MDA2RSAwMDU3OzAwNkUgMDA1NzsgIyAo4467OyDjjrs7IOOOuzsgblc7IG5XOyApIFNRVUFSRSBOVworMzNCQzszM0JDOzMzQkM7MDNCQyAwMDU3OzAzQkMgMDA1NzsgIyAo4468OyDjjrw7IOOOvDsgzrxXOyDOvFc7ICkgU1FVQVJFIE1VIFcKKzMzQkQ7MzNCRDszM0JEOzAwNkQgMDA1NzswMDZEIDAwNTc7ICMgKOOOvTsg4469OyDjjr07IG1XOyBtVzsgKSBTUVVBUkUgTVcKKzMzQkU7MzNCRTszM0JFOzAwNkIgMDA1NzswMDZCIDAwNTc7ICMgKOOOvjsg446+OyDjjr47IGtXOyBrVzsgKSBTUVVBUkUgS1cKKzMzQkY7MzNCRjszM0JGOzAwNEQgMDA1NzswMDREIDAwNTc7ICMgKOOOvzsg446/OyDjjr87IE1XOyBNVzsgKSBTUVVBUkUgTVcgTUVHQQorMzNDMDszM0MwOzMzQzA7MDA2QiAwM0E5OzAwNkIgMDNBOTsgIyAo44+AOyDjj4A7IOOPgDsga86pOyBrzqk7ICkgU1FVQVJFIEsgT0hNCiszM0MxOzMzQzE7MzNDMTswMDREIDAzQTk7MDA0RCAwM0E5OyAjICjjj4E7IOOPgTsg44+BOyBNzqk7IE3OqTsgKSBTUVVBUkUgTSBPSE0KKzMzQzI7MzNDMjszM0MyOzAwNjEgMDAyRSAwMDZEIDAwMkU7MDA2MSAwMDJFIDAwNkQgMDAyRTsgIyAo44+COyDjj4I7IOOPgjsgYS5tLjsgYS5tLjsgKSBTUVVBUkUgQU0KKzMzQzM7MzNDMzszM0MzOzAwNDIgMDA3MTswMDQyIDAwNzE7ICMgKOOPgzsg44+DOyDjj4M7IEJxOyBCcTsgKSBTUVVBUkUgQlEKKzMzQzQ7MzNDNDszM0M0OzAwNjMgMDA2MzswMDYzIDAwNjM7ICMgKOOPhDsg44+EOyDjj4Q7IGNjOyBjYzsgKSBTUVVBUkUgQ0MKKzMzQzU7MzNDNTszM0M1OzAwNjMgMDA2NDswMDYzIDAwNjQ7ICMgKOOPhTsg44+FOyDjj4U7IGNkOyBjZDsgKSBTUVVBUkUgQ0QKKzMzQzY7MzNDNjszM0M2OzAwNDMgMjIxNSAwMDZCIDAwNjc7MDA0MyAyMjE1IDAwNkIgMDA2NzsgIyAo44+GOyDjj4Y7IOOPhjsgQ+KIlWtnOyBD4oiVa2c7ICkgU1FVQVJFIEMgT1ZFUiBLRworMzNDNzszM0M3OzMzQzc7MDA0MyAwMDZGIDAwMkU7MDA0MyAwMDZGIDAwMkU7ICMgKOOPhzsg44+HOyDjj4c7IENvLjsgQ28uOyApIFNRVUFSRSBDTworMzNDODszM0M4OzMzQzg7MDA2NCAwMDQyOzAwNjQgMDA0MjsgIyAo44+IOyDjj4g7IOOPiDsgZEI7IGRCOyApIFNRVUFSRSBEQgorMzNDOTszM0M5OzMzQzk7MDA0NyAwMDc5OzAwNDcgMDA3OTsgIyAo44+JOyDjj4k7IOOPiTsgR3k7IEd5OyApIFNRVUFSRSBHWQorMzNDQTszM0NBOzMzQ0E7MDA2OCAwMDYxOzAwNjggMDA2MTsgIyAo44+KOyDjj4o7IOOPijsgaGE7IGhhOyApIFNRVUFSRSBIQQorMzNDQjszM0NCOzMzQ0I7MDA0OCAwMDUwOzAwNDggMDA1MDsgIyAo44+LOyDjj4s7IOOPizsgSFA7IEhQOyApIFNRVUFSRSBIUAorMzNDQzszM0NDOzMzQ0M7MDA2OSAwMDZFOzAwNjkgMDA2RTsgIyAo44+MOyDjj4w7IOOPjDsgaW47IGluOyApIFNRVUFSRSBJTgorMzNDRDszM0NEOzMzQ0Q7MDA0QiAwMDRCOzAwNEIgMDA0QjsgIyAo44+NOyDjj407IOOPjTsgS0s7IEtLOyApIFNRVUFSRSBLSworMzNDRTszM0NFOzMzQ0U7MDA0QiAwMDREOzAwNEIgMDA0RDsgIyAo44+OOyDjj447IOOPjjsgS007IEtNOyApIFNRVUFSRSBLTSBDQVBJVEFMCiszM0NGOzMzQ0Y7MzNDRjswMDZCIDAwNzQ7MDA2QiAwMDc0OyAjICjjj487IOOPjzsg44+POyBrdDsga3Q7ICkgU1FVQVJFIEtUCiszM0QwOzMzRDA7MzNEMDswMDZDIDAwNkQ7MDA2QyAwMDZEOyAjICjjj5A7IOOPkDsg44+QOyBsbTsgbG07ICkgU1FVQVJFIExNCiszM0QxOzMzRDE7MzNEMTswMDZDIDAwNkU7MDA2QyAwMDZFOyAjICjjj5E7IOOPkTsg44+ROyBsbjsgbG47ICkgU1FVQVJFIExOCiszM0QyOzMzRDI7MzNEMjswMDZDIDAwNkYgMDA2NzswMDZDIDAwNkYgMDA2NzsgIyAo44+SOyDjj5I7IOOPkjsgbG9nOyBsb2c7ICkgU1FVQVJFIExPRworMzNEMzszM0QzOzMzRDM7MDA2QyAwMDc4OzAwNkMgMDA3ODsgIyAo44+TOyDjj5M7IOOPkzsgbHg7IGx4OyApIFNRVUFSRSBMWAorMzNENDszM0Q0OzMzRDQ7MDA2RCAwMDYyOzAwNkQgMDA2MjsgIyAo44+UOyDjj5Q7IOOPlDsgbWI7IG1iOyApIFNRVUFSRSBNQiBTTUFMTAorMzNENTszM0Q1OzMzRDU7MDA2RCAwMDY5IDAwNkM7MDA2RCAwMDY5IDAwNkM7ICMgKOOPlTsg44+VOyDjj5U7IG1pbDsgbWlsOyApIFNRVUFSRSBNSUwKKzMzRDY7MzNENjszM0Q2OzAwNkQgMDA2RiAwMDZDOzAwNkQgMDA2RiAwMDZDOyAjICjjj5Y7IOOPljsg44+WOyBtb2w7IG1vbDsgKSBTUVVBUkUgTU9MCiszM0Q3OzMzRDc7MzNENzswMDUwIDAwNDg7MDA1MCAwMDQ4OyAjICjjj5c7IOOPlzsg44+XOyBQSDsgUEg7ICkgU1FVQVJFIFBICiszM0Q4OzMzRDg7MzNEODswMDcwIDAwMkUgMDA2RCAwMDJFOzAwNzAgMDAyRSAwMDZEIDAwMkU7ICMgKOOPmDsg44+YOyDjj5g7IHAubS47IHAubS47ICkgU1FVQVJFIFBNCiszM0Q5OzMzRDk7MzNEOTswMDUwIDAwNTAgMDA0RDswMDUwIDAwNTAgMDA0RDsgIyAo44+ZOyDjj5k7IOOPmTsgUFBNOyBQUE07ICkgU1FVQVJFIFBQTQorMzNEQTszM0RBOzMzREE7MDA1MCAwMDUyOzAwNTAgMDA1MjsgIyAo44+aOyDjj5o7IOOPmjsgUFI7IFBSOyApIFNRVUFSRSBQUgorMzNEQjszM0RCOzMzREI7MDA3MyAwMDcyOzAwNzMgMDA3MjsgIyAo44+bOyDjj5s7IOOPmzsgc3I7IHNyOyApIFNRVUFSRSBTUgorMzNEQzszM0RDOzMzREM7MDA1MyAwMDc2OzAwNTMgMDA3NjsgIyAo44+cOyDjj5w7IOOPnDsgU3Y7IFN2OyApIFNRVUFSRSBTVgorMzNERDszM0REOzMzREQ7MDA1NyAwMDYyOzAwNTcgMDA2MjsgIyAo44+dOyDjj507IOOPnTsgV2I7IFdiOyApIFNRVUFSRSBXQgorMzNFMDszM0UwOzMzRTA7MDAzMSA2NUU1OzAwMzEgNjVFNTsgIyAo44+gOyDjj6A7IOOPoDsgMeaXpTsgMeaXpTsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgT05FCiszM0UxOzMzRTE7MzNFMTswMDMyIDY1RTU7MDAzMiA2NUU1OyAjICjjj6E7IOOPoTsg44+hOyAy5pelOyAy5pelOyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV08KKzMzRTI7MzNFMjszM0UyOzAwMzMgNjVFNTswMDMzIDY1RTU7ICMgKOOPojsg44+iOyDjj6I7IDPml6U7IDPml6U7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRIUkVFCiszM0UzOzMzRTM7MzNFMzswMDM0IDY1RTU7MDAzNCA2NUU1OyAjICjjj6M7IOOPozsg44+jOyA05pelOyA05pelOyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBGT1VSCiszM0U0OzMzRTQ7MzNFNDswMDM1IDY1RTU7MDAzNSA2NUU1OyAjICjjj6Q7IOOPpDsg44+kOyA15pelOyA15pelOyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBGSVZFCiszM0U1OzMzRTU7MzNFNTswMDM2IDY1RTU7MDAzNiA2NUU1OyAjICjjj6U7IOOPpTsg44+lOyA25pelOyA25pelOyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBTSVgKKzMzRTY7MzNFNjszM0U2OzAwMzcgNjVFNTswMDM3IDY1RTU7ICMgKOOPpjsg44+mOyDjj6Y7IDfml6U7IDfml6U7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFNFVkVOCiszM0U3OzMzRTc7MzNFNzswMDM4IDY1RTU7MDAzOCA2NUU1OyAjICjjj6c7IOOPpzsg44+nOyA45pelOyA45pelOyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBFSUdIVAorMzNFODszM0U4OzMzRTg7MDAzOSA2NUU1OzAwMzkgNjVFNTsgIyAo44+oOyDjj6g7IOOPqDsgOeaXpTsgOeaXpTsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgTklORQorMzNFOTszM0U5OzMzRTk7MDAzMSAwMDMwIDY1RTU7MDAzMSAwMDMwIDY1RTU7ICMgKOOPqTsg44+pOyDjj6k7IDEw5pelOyAxMOaXpTsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVEVOCiszM0VBOzMzRUE7MzNFQTswMDMxIDAwMzEgNjVFNTswMDMxIDAwMzEgNjVFNTsgIyAo44+qOyDjj6o7IOOPqjsgMTHml6U7IDEx5pelOyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBFTEVWRU4KKzMzRUI7MzNFQjszM0VCOzAwMzEgMDAzMiA2NUU1OzAwMzEgMDAzMiA2NUU1OyAjICjjj6s7IOOPqzsg44+rOyAxMuaXpTsgMTLml6U7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRUxWRQorMzNFQzszM0VDOzMzRUM7MDAzMSAwMDMzIDY1RTU7MDAzMSAwMDMzIDY1RTU7ICMgKOOPrDsg44+sOyDjj6w7IDEz5pelOyAxM+aXpTsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVEhJUlRFRU4KKzMzRUQ7MzNFRDszM0VEOzAwMzEgMDAzNCA2NUU1OzAwMzEgMDAzNCA2NUU1OyAjICjjj607IOOPrTsg44+tOyAxNOaXpTsgMTTml6U7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIEZPVVJURUVOCiszM0VFOzMzRUU7MzNFRTswMDMxIDAwMzUgNjVFNTswMDMxIDAwMzUgNjVFNTsgIyAo44+uOyDjj647IOOPrjsgMTXml6U7IDE15pelOyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBGSUZURUVOCiszM0VGOzMzRUY7MzNFRjswMDMxIDAwMzYgNjVFNTswMDMxIDAwMzYgNjVFNTsgIyAo44+vOyDjj687IOOPrzsgMTbml6U7IDE25pelOyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBTSVhURUVOCiszM0YwOzMzRjA7MzNGMDswMDMxIDAwMzcgNjVFNTswMDMxIDAwMzcgNjVFNTsgIyAo44+wOyDjj7A7IOOPsDsgMTfml6U7IDE35pelOyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBTRVZFTlRFRU4KKzMzRjE7MzNGMTszM0YxOzAwMzEgMDAzOCA2NUU1OzAwMzEgMDAzOCA2NUU1OyAjICjjj7E7IOOPsTsg44+xOyAxOOaXpTsgMTjml6U7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIEVJR0hURUVOCiszM0YyOzMzRjI7MzNGMjswMDMxIDAwMzkgNjVFNTswMDMxIDAwMzkgNjVFNTsgIyAo44+yOyDjj7I7IOOPsjsgMTnml6U7IDE55pelOyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBOSU5FVEVFTgorMzNGMzszM0YzOzMzRjM7MDAzMiAwMDMwIDY1RTU7MDAzMiAwMDMwIDY1RTU7ICMgKOOPszsg44+zOyDjj7M7IDIw5pelOyAyMOaXpTsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVFdFTlRZCiszM0Y0OzMzRjQ7MzNGNDswMDMyIDAwMzEgNjVFNTswMDMyIDAwMzEgNjVFNTsgIyAo44+0OyDjj7Q7IOOPtDsgMjHml6U7IDIx5pelOyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktT05FCiszM0Y1OzMzRjU7MzNGNTswMDMyIDAwMzIgNjVFNTswMDMyIDAwMzIgNjVFNTsgIyAo44+1OyDjj7U7IOOPtTsgMjLml6U7IDIy5pelOyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktVFdPCiszM0Y2OzMzRjY7MzNGNjswMDMyIDAwMzMgNjVFNTswMDMyIDAwMzMgNjVFNTsgIyAo44+2OyDjj7Y7IOOPtjsgMjPml6U7IDIz5pelOyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktVEhSRUUKKzMzRjc7MzNGNzszM0Y3OzAwMzIgMDAzNCA2NUU1OzAwMzIgMDAzNCA2NUU1OyAjICjjj7c7IOOPtzsg44+3OyAyNOaXpTsgMjTml6U7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1GT1VSCiszM0Y4OzMzRjg7MzNGODswMDMyIDAwMzUgNjVFNTswMDMyIDAwMzUgNjVFNTsgIyAo44+4OyDjj7g7IOOPuDsgMjXml6U7IDI15pelOyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktRklWRQorMzNGOTszM0Y5OzMzRjk7MDAzMiAwMDM2IDY1RTU7MDAzMiAwMDM2IDY1RTU7ICMgKOOPuTsg44+5OyDjj7k7IDI25pelOyAyNuaXpTsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVFdFTlRZLVNJWAorMzNGQTszM0ZBOzMzRkE7MDAzMiAwMDM3IDY1RTU7MDAzMiAwMDM3IDY1RTU7ICMgKOOPujsg44+6OyDjj7o7IDI35pelOyAyN+aXpTsgKSBJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVFdFTlRZLVNFVkVOCiszM0ZCOzMzRkI7MzNGQjswMDMyIDAwMzggNjVFNTswMDMyIDAwMzggNjVFNTsgIyAo44+7OyDjj7s7IOOPuzsgMjjml6U7IDI45pelOyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktRUlHSFQKKzMzRkM7MzNGQzszM0ZDOzAwMzIgMDAzOSA2NUU1OzAwMzIgMDAzOSA2NUU1OyAjICjjj7w7IOOPvDsg44+8OyAyOeaXpTsgMjnml6U7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1OSU5FCiszM0ZEOzMzRkQ7MzNGRDswMDMzIDAwMzAgNjVFNTswMDMzIDAwMzAgNjVFNTsgIyAo44+9OyDjj707IOOPvTsgMzDml6U7IDMw5pelOyApIElERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUSElSVFkKKzMzRkU7MzNGRTszM0ZFOzAwMzMgMDAzMSA2NUU1OzAwMzMgMDAzMSA2NUU1OyAjICjjj747IOOPvjsg44++OyAzMeaXpTsgMzHml6U7ICkgSURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRISVJUWS1PTkUKK0FDMDA7QUMwMDsxMTAwIDExNjE7QUMwMDsxMTAwIDExNjE7ICMgKOqwgDsg6rCAOyDhhIDhhaE7IOqwgDsg4YSA4YWhOyApIEhBTkdVTCBTWUxMQUJMRSBHQQorQUMwMTtBQzAxOzExMDAgMTE2MSAxMUE4O0FDMDE7MTEwMCAxMTYxIDExQTg7ICMgKOqwgTsg6rCBOyDhhIDhhaHhhqg7IOqwgTsg4YSA4YWh4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBHQUcKK0FDMDI7QUMwMjsxMTAwIDExNjEgMTFBOTtBQzAyOzExMDAgMTE2MSAxMUE5OyAjICjqsII7IOqwgjsg4YSA4YWh4YapOyDqsII7IOGEgOGFoeGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgR0FHRworQUMwMztBQzAzOzExMDAgMTE2MSAxMUFBO0FDMDM7MTEwMCAxMTYxIDExQUE7ICMgKOqwgzsg6rCDOyDhhIDhhaHhhqo7IOqwgzsg4YSA4YWh4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBHQUdTCitBQzA0O0FDMDQ7MTEwMCAxMTYxIDExQUI7QUMwNDsxMTAwIDExNjEgMTFBQjsgIyAo6rCEOyDqsIQ7IOGEgOGFoeGGqzsg6rCEOyDhhIDhhaHhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEdBTgorQUMwNTtBQzA1OzExMDAgMTE2MSAxMUFDO0FDMDU7MTEwMCAxMTYxIDExQUM7ICMgKOqwhTsg6rCFOyDhhIDhhaHhhqw7IOqwhTsg4YSA4YWh4YasOyApIEhBTkdVTCBTWUxMQUJMRSBHQU5KCitBQzA2O0FDMDY7MTEwMCAxMTYxIDExQUQ7QUMwNjsxMTAwIDExNjEgMTFBRDsgIyAo6rCGOyDqsIY7IOGEgOGFoeGGrTsg6rCGOyDhhIDhhaHhhq07ICkgSEFOR1VMIFNZTExBQkxFIEdBTkgKK0FDMDc7QUMwNzsxMTAwIDExNjEgMTFBRTtBQzA3OzExMDAgMTE2MSAxMUFFOyAjICjqsIc7IOqwhzsg4YSA4YWh4YauOyDqsIc7IOGEgOGFoeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgR0FECitBQzA4O0FDMDg7MTEwMCAxMTYxIDExQUY7QUMwODsxMTAwIDExNjEgMTFBRjsgIyAo6rCIOyDqsIg7IOGEgOGFoeGGrzsg6rCIOyDhhIDhhaHhhq87ICkgSEFOR1VMIFNZTExBQkxFIEdBTAorQUMwOTtBQzA5OzExMDAgMTE2MSAxMUIwO0FDMDk7MTEwMCAxMTYxIDExQjA7ICMgKOqwiTsg6rCJOyDhhIDhhaHhhrA7IOqwiTsg4YSA4YWh4YawOyApIEhBTkdVTCBTWUxMQUJMRSBHQUxHCitBQzBBO0FDMEE7MTEwMCAxMTYxIDExQjE7QUMwQTsxMTAwIDExNjEgMTFCMTsgIyAo6rCKOyDqsIo7IOGEgOGFoeGGsTsg6rCKOyDhhIDhhaHhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEdBTE0KK0FDMEI7QUMwQjsxMTAwIDExNjEgMTFCMjtBQzBCOzExMDAgMTE2MSAxMUIyOyAjICjqsIs7IOqwizsg4YSA4YWh4YayOyDqsIs7IOGEgOGFoeGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgR0FMQgorQUMwQztBQzBDOzExMDAgMTE2MSAxMUIzO0FDMEM7MTEwMCAxMTYxIDExQjM7ICMgKOqwjDsg6rCMOyDhhIDhhaHhhrM7IOqwjDsg4YSA4YWh4YazOyApIEhBTkdVTCBTWUxMQUJMRSBHQUxTCitBQzBEO0FDMEQ7MTEwMCAxMTYxIDExQjQ7QUMwRDsxMTAwIDExNjEgMTFCNDsgIyAo6rCNOyDqsI07IOGEgOGFoeGGtDsg6rCNOyDhhIDhhaHhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEdBTFQKK0FDMEU7QUMwRTsxMTAwIDExNjEgMTFCNTtBQzBFOzExMDAgMTE2MSAxMUI1OyAjICjqsI47IOqwjjsg4YSA4YWh4Ya1OyDqsI47IOGEgOGFoeGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgR0FMUAorQUMwRjtBQzBGOzExMDAgMTE2MSAxMUI2O0FDMEY7MTEwMCAxMTYxIDExQjY7ICMgKOqwjzsg6rCPOyDhhIDhhaHhhrY7IOqwjzsg4YSA4YWh4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBHQUxICitBQzEwO0FDMTA7MTEwMCAxMTYxIDExQjc7QUMxMDsxMTAwIDExNjEgMTFCNzsgIyAo6rCQOyDqsJA7IOGEgOGFoeGGtzsg6rCQOyDhhIDhhaHhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEdBTQorQUMxMTtBQzExOzExMDAgMTE2MSAxMUI4O0FDMTE7MTEwMCAxMTYxIDExQjg7ICMgKOqwkTsg6rCROyDhhIDhhaHhhrg7IOqwkTsg4YSA4YWh4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBHQUIKK0FDMTI7QUMxMjsxMTAwIDExNjEgMTFCOTtBQzEyOzExMDAgMTE2MSAxMUI5OyAjICjqsJI7IOqwkjsg4YSA4YWh4Ya5OyDqsJI7IOGEgOGFoeGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgR0FCUworQUMxMztBQzEzOzExMDAgMTE2MSAxMUJBO0FDMTM7MTEwMCAxMTYxIDExQkE7ICMgKOqwkzsg6rCTOyDhhIDhhaHhhro7IOqwkzsg4YSA4YWh4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBHQVMKK0FDMTQ7QUMxNDsxMTAwIDExNjEgMTFCQjtBQzE0OzExMDAgMTE2MSAxMUJCOyAjICjqsJQ7IOqwlDsg4YSA4YWh4Ya7OyDqsJQ7IOGEgOGFoeGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgR0FTUworQUMxNTtBQzE1OzExMDAgMTE2MSAxMUJDO0FDMTU7MTEwMCAxMTYxIDExQkM7ICMgKOqwlTsg6rCVOyDhhIDhhaHhhrw7IOqwlTsg4YSA4YWh4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBHQU5HCitBQzE2O0FDMTY7MTEwMCAxMTYxIDExQkQ7QUMxNjsxMTAwIDExNjEgMTFCRDsgIyAo6rCWOyDqsJY7IOGEgOGFoeGGvTsg6rCWOyDhhIDhhaHhhr07ICkgSEFOR1VMIFNZTExBQkxFIEdBSgorQUMxNztBQzE3OzExMDAgMTE2MSAxMUJFO0FDMTc7MTEwMCAxMTYxIDExQkU7ICMgKOqwlzsg6rCXOyDhhIDhhaHhhr47IOqwlzsg4YSA4YWh4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBHQUMKK0FDMTg7QUMxODsxMTAwIDExNjEgMTFCRjtBQzE4OzExMDAgMTE2MSAxMUJGOyAjICjqsJg7IOqwmDsg4YSA4YWh4Ya/OyDqsJg7IOGEgOGFoeGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgR0FLCitBQzE5O0FDMTk7MTEwMCAxMTYxIDExQzA7QUMxOTsxMTAwIDExNjEgMTFDMDsgIyAo6rCZOyDqsJk7IOGEgOGFoeGHgDsg6rCZOyDhhIDhhaHhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEdBVAorQUMxQTtBQzFBOzExMDAgMTE2MSAxMUMxO0FDMUE7MTEwMCAxMTYxIDExQzE7ICMgKOqwmjsg6rCaOyDhhIDhhaHhh4E7IOqwmjsg4YSA4YWh4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBHQVAKK0FDMUI7QUMxQjsxMTAwIDExNjEgMTFDMjtBQzFCOzExMDAgMTE2MSAxMUMyOyAjICjqsJs7IOqwmzsg4YSA4YWh4YeCOyDqsJs7IOGEgOGFoeGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgR0FICitBQzFDO0FDMUM7MTEwMCAxMTYyO0FDMUM7MTEwMCAxMTYyOyAjICjqsJw7IOqwnDsg4YSA4YWiOyDqsJw7IOGEgOGFojsgKSBIQU5HVUwgU1lMTEFCTEUgR0FFCitBQzFEO0FDMUQ7MTEwMCAxMTYyIDExQTg7QUMxRDsxMTAwIDExNjIgMTFBODsgIyAo6rCdOyDqsJ07IOGEgOGFouGGqDsg6rCdOyDhhIDhhaLhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEdBRUcKK0FDMUU7QUMxRTsxMTAwIDExNjIgMTFBOTtBQzFFOzExMDAgMTE2MiAxMUE5OyAjICjqsJ47IOqwnjsg4YSA4YWi4YapOyDqsJ47IOGEgOGFouGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgR0FFR0cKK0FDMUY7QUMxRjsxMTAwIDExNjIgMTFBQTtBQzFGOzExMDAgMTE2MiAxMUFBOyAjICjqsJ87IOqwnzsg4YSA4YWi4YaqOyDqsJ87IOGEgOGFouGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgR0FFR1MKK0FDMjA7QUMyMDsxMTAwIDExNjIgMTFBQjtBQzIwOzExMDAgMTE2MiAxMUFCOyAjICjqsKA7IOqwoDsg4YSA4YWi4YarOyDqsKA7IOGEgOGFouGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgR0FFTgorQUMyMTtBQzIxOzExMDAgMTE2MiAxMUFDO0FDMjE7MTEwMCAxMTYyIDExQUM7ICMgKOqwoTsg6rChOyDhhIDhhaLhhqw7IOqwoTsg4YSA4YWi4YasOyApIEhBTkdVTCBTWUxMQUJMRSBHQUVOSgorQUMyMjtBQzIyOzExMDAgMTE2MiAxMUFEO0FDMjI7MTEwMCAxMTYyIDExQUQ7ICMgKOqwojsg6rCiOyDhhIDhhaLhhq07IOqwojsg4YSA4YWi4YatOyApIEhBTkdVTCBTWUxMQUJMRSBHQUVOSAorQUMyMztBQzIzOzExMDAgMTE2MiAxMUFFO0FDMjM7MTEwMCAxMTYyIDExQUU7ICMgKOqwozsg6rCjOyDhhIDhhaLhhq47IOqwozsg4YSA4YWi4YauOyApIEhBTkdVTCBTWUxMQUJMRSBHQUVECitBQzI0O0FDMjQ7MTEwMCAxMTYyIDExQUY7QUMyNDsxMTAwIDExNjIgMTFBRjsgIyAo6rCkOyDqsKQ7IOGEgOGFouGGrzsg6rCkOyDhhIDhhaLhhq87ICkgSEFOR1VMIFNZTExBQkxFIEdBRUwKK0FDMjU7QUMyNTsxMTAwIDExNjIgMTFCMDtBQzI1OzExMDAgMTE2MiAxMUIwOyAjICjqsKU7IOqwpTsg4YSA4YWi4YawOyDqsKU7IOGEgOGFouGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgR0FFTEcKK0FDMjY7QUMyNjsxMTAwIDExNjIgMTFCMTtBQzI2OzExMDAgMTE2MiAxMUIxOyAjICjqsKY7IOqwpjsg4YSA4YWi4YaxOyDqsKY7IOGEgOGFouGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgR0FFTE0KK0FDMjc7QUMyNzsxMTAwIDExNjIgMTFCMjtBQzI3OzExMDAgMTE2MiAxMUIyOyAjICjqsKc7IOqwpzsg4YSA4YWi4YayOyDqsKc7IOGEgOGFouGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgR0FFTEIKK0FDMjg7QUMyODsxMTAwIDExNjIgMTFCMztBQzI4OzExMDAgMTE2MiAxMUIzOyAjICjqsKg7IOqwqDsg4YSA4YWi4YazOyDqsKg7IOGEgOGFouGGszsgKSBIQU5HVUwgU1lMTEFCTEUgR0FFTFMKK0FDMjk7QUMyOTsxMTAwIDExNjIgMTFCNDtBQzI5OzExMDAgMTE2MiAxMUI0OyAjICjqsKk7IOqwqTsg4YSA4YWi4Ya0OyDqsKk7IOGEgOGFouGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgR0FFTFQKK0FDMkE7QUMyQTsxMTAwIDExNjIgMTFCNTtBQzJBOzExMDAgMTE2MiAxMUI1OyAjICjqsKo7IOqwqjsg4YSA4YWi4Ya1OyDqsKo7IOGEgOGFouGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgR0FFTFAKK0FDMkI7QUMyQjsxMTAwIDExNjIgMTFCNjtBQzJCOzExMDAgMTE2MiAxMUI2OyAjICjqsKs7IOqwqzsg4YSA4YWi4Ya2OyDqsKs7IOGEgOGFouGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgR0FFTEgKK0FDMkM7QUMyQzsxMTAwIDExNjIgMTFCNztBQzJDOzExMDAgMTE2MiAxMUI3OyAjICjqsKw7IOqwrDsg4YSA4YWi4Ya3OyDqsKw7IOGEgOGFouGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgR0FFTQorQUMyRDtBQzJEOzExMDAgMTE2MiAxMUI4O0FDMkQ7MTEwMCAxMTYyIDExQjg7ICMgKOqwrTsg6rCtOyDhhIDhhaLhhrg7IOqwrTsg4YSA4YWi4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBHQUVCCitBQzJFO0FDMkU7MTEwMCAxMTYyIDExQjk7QUMyRTsxMTAwIDExNjIgMTFCOTsgIyAo6rCuOyDqsK47IOGEgOGFouGGuTsg6rCuOyDhhIDhhaLhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEdBRUJTCitBQzJGO0FDMkY7MTEwMCAxMTYyIDExQkE7QUMyRjsxMTAwIDExNjIgMTFCQTsgIyAo6rCvOyDqsK87IOGEgOGFouGGujsg6rCvOyDhhIDhhaLhhro7ICkgSEFOR1VMIFNZTExBQkxFIEdBRVMKK0FDMzA7QUMzMDsxMTAwIDExNjIgMTFCQjtBQzMwOzExMDAgMTE2MiAxMUJCOyAjICjqsLA7IOqwsDsg4YSA4YWi4Ya7OyDqsLA7IOGEgOGFouGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgR0FFU1MKK0FDMzE7QUMzMTsxMTAwIDExNjIgMTFCQztBQzMxOzExMDAgMTE2MiAxMUJDOyAjICjqsLE7IOqwsTsg4YSA4YWi4Ya8OyDqsLE7IOGEgOGFouGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgR0FFTkcKK0FDMzI7QUMzMjsxMTAwIDExNjIgMTFCRDtBQzMyOzExMDAgMTE2MiAxMUJEOyAjICjqsLI7IOqwsjsg4YSA4YWi4Ya9OyDqsLI7IOGEgOGFouGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgR0FFSgorQUMzMztBQzMzOzExMDAgMTE2MiAxMUJFO0FDMzM7MTEwMCAxMTYyIDExQkU7ICMgKOqwszsg6rCzOyDhhIDhhaLhhr47IOqwszsg4YSA4YWi4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBHQUVDCitBQzM0O0FDMzQ7MTEwMCAxMTYyIDExQkY7QUMzNDsxMTAwIDExNjIgMTFCRjsgIyAo6rC0OyDqsLQ7IOGEgOGFouGGvzsg6rC0OyDhhIDhhaLhhr87ICkgSEFOR1VMIFNZTExBQkxFIEdBRUsKK0FDMzU7QUMzNTsxMTAwIDExNjIgMTFDMDtBQzM1OzExMDAgMTE2MiAxMUMwOyAjICjqsLU7IOqwtTsg4YSA4YWi4YeAOyDqsLU7IOGEgOGFouGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgR0FFVAorQUMzNjtBQzM2OzExMDAgMTE2MiAxMUMxO0FDMzY7MTEwMCAxMTYyIDExQzE7ICMgKOqwtjsg6rC2OyDhhIDhhaLhh4E7IOqwtjsg4YSA4YWi4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBHQUVQCitBQzM3O0FDMzc7MTEwMCAxMTYyIDExQzI7QUMzNzsxMTAwIDExNjIgMTFDMjsgIyAo6rC3OyDqsLc7IOGEgOGFouGHgjsg6rC3OyDhhIDhhaLhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEdBRUgKK0FDMzg7QUMzODsxMTAwIDExNjM7QUMzODsxMTAwIDExNjM7ICMgKOqwuDsg6rC4OyDhhIDhhaM7IOqwuDsg4YSA4YWjOyApIEhBTkdVTCBTWUxMQUJMRSBHWUEKK0FDMzk7QUMzOTsxMTAwIDExNjMgMTFBODtBQzM5OzExMDAgMTE2MyAxMUE4OyAjICjqsLk7IOqwuTsg4YSA4YWj4YaoOyDqsLk7IOGEgOGFo+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR1lBRworQUMzQTtBQzNBOzExMDAgMTE2MyAxMUE5O0FDM0E7MTEwMCAxMTYzIDExQTk7ICMgKOqwujsg6rC6OyDhhIDhhaPhhqk7IOqwujsg4YSA4YWj4YapOyApIEhBTkdVTCBTWUxMQUJMRSBHWUFHRworQUMzQjtBQzNCOzExMDAgMTE2MyAxMUFBO0FDM0I7MTEwMCAxMTYzIDExQUE7ICMgKOqwuzsg6rC7OyDhhIDhhaPhhqo7IOqwuzsg4YSA4YWj4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBHWUFHUworQUMzQztBQzNDOzExMDAgMTE2MyAxMUFCO0FDM0M7MTEwMCAxMTYzIDExQUI7ICMgKOqwvDsg6rC8OyDhhIDhhaPhhqs7IOqwvDsg4YSA4YWj4YarOyApIEhBTkdVTCBTWUxMQUJMRSBHWUFOCitBQzNEO0FDM0Q7MTEwMCAxMTYzIDExQUM7QUMzRDsxMTAwIDExNjMgMTFBQzsgIyAo6rC9OyDqsL07IOGEgOGFo+GGrDsg6rC9OyDhhIDhhaPhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEdZQU5KCitBQzNFO0FDM0U7MTEwMCAxMTYzIDExQUQ7QUMzRTsxMTAwIDExNjMgMTFBRDsgIyAo6rC+OyDqsL47IOGEgOGFo+GGrTsg6rC+OyDhhIDhhaPhhq07ICkgSEFOR1VMIFNZTExBQkxFIEdZQU5ICitBQzNGO0FDM0Y7MTEwMCAxMTYzIDExQUU7QUMzRjsxMTAwIDExNjMgMTFBRTsgIyAo6rC/OyDqsL87IOGEgOGFo+GGrjsg6rC/OyDhhIDhhaPhhq47ICkgSEFOR1VMIFNZTExBQkxFIEdZQUQKK0FDNDA7QUM0MDsxMTAwIDExNjMgMTFBRjtBQzQwOzExMDAgMTE2MyAxMUFGOyAjICjqsYA7IOqxgDsg4YSA4YWj4YavOyDqsYA7IOGEgOGFo+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgR1lBTAorQUM0MTtBQzQxOzExMDAgMTE2MyAxMUIwO0FDNDE7MTEwMCAxMTYzIDExQjA7ICMgKOqxgTsg6rGBOyDhhIDhhaPhhrA7IOqxgTsg4YSA4YWj4YawOyApIEhBTkdVTCBTWUxMQUJMRSBHWUFMRworQUM0MjtBQzQyOzExMDAgMTE2MyAxMUIxO0FDNDI7MTEwMCAxMTYzIDExQjE7ICMgKOqxgjsg6rGCOyDhhIDhhaPhhrE7IOqxgjsg4YSA4YWj4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHWUFMTQorQUM0MztBQzQzOzExMDAgMTE2MyAxMUIyO0FDNDM7MTEwMCAxMTYzIDExQjI7ICMgKOqxgzsg6rGDOyDhhIDhhaPhhrI7IOqxgzsg4YSA4YWj4YayOyApIEhBTkdVTCBTWUxMQUJMRSBHWUFMQgorQUM0NDtBQzQ0OzExMDAgMTE2MyAxMUIzO0FDNDQ7MTEwMCAxMTYzIDExQjM7ICMgKOqxhDsg6rGEOyDhhIDhhaPhhrM7IOqxhDsg4YSA4YWj4YazOyApIEhBTkdVTCBTWUxMQUJMRSBHWUFMUworQUM0NTtBQzQ1OzExMDAgMTE2MyAxMUI0O0FDNDU7MTEwMCAxMTYzIDExQjQ7ICMgKOqxhTsg6rGFOyDhhIDhhaPhhrQ7IOqxhTsg4YSA4YWj4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHWUFMVAorQUM0NjtBQzQ2OzExMDAgMTE2MyAxMUI1O0FDNDY7MTEwMCAxMTYzIDExQjU7ICMgKOqxhjsg6rGGOyDhhIDhhaPhhrU7IOqxhjsg4YSA4YWj4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBHWUFMUAorQUM0NztBQzQ3OzExMDAgMTE2MyAxMUI2O0FDNDc7MTEwMCAxMTYzIDExQjY7ICMgKOqxhzsg6rGHOyDhhIDhhaPhhrY7IOqxhzsg4YSA4YWj4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBHWUFMSAorQUM0ODtBQzQ4OzExMDAgMTE2MyAxMUI3O0FDNDg7MTEwMCAxMTYzIDExQjc7ICMgKOqxiDsg6rGIOyDhhIDhhaPhhrc7IOqxiDsg4YSA4YWj4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHWUFNCitBQzQ5O0FDNDk7MTEwMCAxMTYzIDExQjg7QUM0OTsxMTAwIDExNjMgMTFCODsgIyAo6rGJOyDqsYk7IOGEgOGFo+GGuDsg6rGJOyDhhIDhhaPhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEdZQUIKK0FDNEE7QUM0QTsxMTAwIDExNjMgMTFCOTtBQzRBOzExMDAgMTE2MyAxMUI5OyAjICjqsYo7IOqxijsg4YSA4YWj4Ya5OyDqsYo7IOGEgOGFo+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgR1lBQlMKK0FDNEI7QUM0QjsxMTAwIDExNjMgMTFCQTtBQzRCOzExMDAgMTE2MyAxMUJBOyAjICjqsYs7IOqxizsg4YSA4YWj4Ya6OyDqsYs7IOGEgOGFo+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgR1lBUworQUM0QztBQzRDOzExMDAgMTE2MyAxMUJCO0FDNEM7MTEwMCAxMTYzIDExQkI7ICMgKOqxjDsg6rGMOyDhhIDhhaPhhrs7IOqxjDsg4YSA4YWj4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBHWUFTUworQUM0RDtBQzREOzExMDAgMTE2MyAxMUJDO0FDNEQ7MTEwMCAxMTYzIDExQkM7ICMgKOqxjTsg6rGNOyDhhIDhhaPhhrw7IOqxjTsg4YSA4YWj4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBHWUFORworQUM0RTtBQzRFOzExMDAgMTE2MyAxMUJEO0FDNEU7MTEwMCAxMTYzIDExQkQ7ICMgKOqxjjsg6rGOOyDhhIDhhaPhhr07IOqxjjsg4YSA4YWj4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHWUFKCitBQzRGO0FDNEY7MTEwMCAxMTYzIDExQkU7QUM0RjsxMTAwIDExNjMgMTFCRTsgIyAo6rGPOyDqsY87IOGEgOGFo+GGvjsg6rGPOyDhhIDhhaPhhr47ICkgSEFOR1VMIFNZTExBQkxFIEdZQUMKK0FDNTA7QUM1MDsxMTAwIDExNjMgMTFCRjtBQzUwOzExMDAgMTE2MyAxMUJGOyAjICjqsZA7IOqxkDsg4YSA4YWj4Ya/OyDqsZA7IOGEgOGFo+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgR1lBSworQUM1MTtBQzUxOzExMDAgMTE2MyAxMUMwO0FDNTE7MTEwMCAxMTYzIDExQzA7ICMgKOqxkTsg6rGROyDhhIDhhaPhh4A7IOqxkTsg4YSA4YWj4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHWUFUCitBQzUyO0FDNTI7MTEwMCAxMTYzIDExQzE7QUM1MjsxMTAwIDExNjMgMTFDMTsgIyAo6rGSOyDqsZI7IOGEgOGFo+GHgTsg6rGSOyDhhIDhhaPhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEdZQVAKK0FDNTM7QUM1MzsxMTAwIDExNjMgMTFDMjtBQzUzOzExMDAgMTE2MyAxMUMyOyAjICjqsZM7IOqxkzsg4YSA4YWj4YeCOyDqsZM7IOGEgOGFo+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgR1lBSAorQUM1NDtBQzU0OzExMDAgMTE2NDtBQzU0OzExMDAgMTE2NDsgIyAo6rGUOyDqsZQ7IOGEgOGFpDsg6rGUOyDhhIDhhaQ7ICkgSEFOR1VMIFNZTExBQkxFIEdZQUUKK0FDNTU7QUM1NTsxMTAwIDExNjQgMTFBODtBQzU1OzExMDAgMTE2NCAxMUE4OyAjICjqsZU7IOqxlTsg4YSA4YWk4YaoOyDqsZU7IOGEgOGFpOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR1lBRUcKK0FDNTY7QUM1NjsxMTAwIDExNjQgMTFBOTtBQzU2OzExMDAgMTE2NCAxMUE5OyAjICjqsZY7IOqxljsg4YSA4YWk4YapOyDqsZY7IOGEgOGFpOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgR1lBRUdHCitBQzU3O0FDNTc7MTEwMCAxMTY0IDExQUE7QUM1NzsxMTAwIDExNjQgMTFBQTsgIyAo6rGXOyDqsZc7IOGEgOGFpOGGqjsg6rGXOyDhhIDhhaThhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdZQUVHUworQUM1ODtBQzU4OzExMDAgMTE2NCAxMUFCO0FDNTg7MTEwMCAxMTY0IDExQUI7ICMgKOqxmDsg6rGYOyDhhIDhhaThhqs7IOqxmDsg4YSA4YWk4YarOyApIEhBTkdVTCBTWUxMQUJMRSBHWUFFTgorQUM1OTtBQzU5OzExMDAgMTE2NCAxMUFDO0FDNTk7MTEwMCAxMTY0IDExQUM7ICMgKOqxmTsg6rGZOyDhhIDhhaThhqw7IOqxmTsg4YSA4YWk4YasOyApIEhBTkdVTCBTWUxMQUJMRSBHWUFFTkoKK0FDNUE7QUM1QTsxMTAwIDExNjQgMTFBRDtBQzVBOzExMDAgMTE2NCAxMUFEOyAjICjqsZo7IOqxmjsg4YSA4YWk4YatOyDqsZo7IOGEgOGFpOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR1lBRU5ICitBQzVCO0FDNUI7MTEwMCAxMTY0IDExQUU7QUM1QjsxMTAwIDExNjQgMTFBRTsgIyAo6rGbOyDqsZs7IOGEgOGFpOGGrjsg6rGbOyDhhIDhhaThhq47ICkgSEFOR1VMIFNZTExBQkxFIEdZQUVECitBQzVDO0FDNUM7MTEwMCAxMTY0IDExQUY7QUM1QzsxMTAwIDExNjQgMTFBRjsgIyAo6rGcOyDqsZw7IOGEgOGFpOGGrzsg6rGcOyDhhIDhhaThhq87ICkgSEFOR1VMIFNZTExBQkxFIEdZQUVMCitBQzVEO0FDNUQ7MTEwMCAxMTY0IDExQjA7QUM1RDsxMTAwIDExNjQgMTFCMDsgIyAo6rGdOyDqsZ07IOGEgOGFpOGGsDsg6rGdOyDhhIDhhaThhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdZQUVMRworQUM1RTtBQzVFOzExMDAgMTE2NCAxMUIxO0FDNUU7MTEwMCAxMTY0IDExQjE7ICMgKOqxnjsg6rGeOyDhhIDhhaThhrE7IOqxnjsg4YSA4YWk4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHWUFFTE0KK0FDNUY7QUM1RjsxMTAwIDExNjQgMTFCMjtBQzVGOzExMDAgMTE2NCAxMUIyOyAjICjqsZ87IOqxnzsg4YSA4YWk4YayOyDqsZ87IOGEgOGFpOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgR1lBRUxCCitBQzYwO0FDNjA7MTEwMCAxMTY0IDExQjM7QUM2MDsxMTAwIDExNjQgMTFCMzsgIyAo6rGgOyDqsaA7IOGEgOGFpOGGszsg6rGgOyDhhIDhhaThhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdZQUVMUworQUM2MTtBQzYxOzExMDAgMTE2NCAxMUI0O0FDNjE7MTEwMCAxMTY0IDExQjQ7ICMgKOqxoTsg6rGhOyDhhIDhhaThhrQ7IOqxoTsg4YSA4YWk4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHWUFFTFQKK0FDNjI7QUM2MjsxMTAwIDExNjQgMTFCNTtBQzYyOzExMDAgMTE2NCAxMUI1OyAjICjqsaI7IOqxojsg4YSA4YWk4Ya1OyDqsaI7IOGEgOGFpOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgR1lBRUxQCitBQzYzO0FDNjM7MTEwMCAxMTY0IDExQjY7QUM2MzsxMTAwIDExNjQgMTFCNjsgIyAo6rGjOyDqsaM7IOGEgOGFpOGGtjsg6rGjOyDhhIDhhaThhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdZQUVMSAorQUM2NDtBQzY0OzExMDAgMTE2NCAxMUI3O0FDNjQ7MTEwMCAxMTY0IDExQjc7ICMgKOqxpDsg6rGkOyDhhIDhhaThhrc7IOqxpDsg4YSA4YWk4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHWUFFTQorQUM2NTtBQzY1OzExMDAgMTE2NCAxMUI4O0FDNjU7MTEwMCAxMTY0IDExQjg7ICMgKOqxpTsg6rGlOyDhhIDhhaThhrg7IOqxpTsg4YSA4YWk4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBHWUFFQgorQUM2NjtBQzY2OzExMDAgMTE2NCAxMUI5O0FDNjY7MTEwMCAxMTY0IDExQjk7ICMgKOqxpjsg6rGmOyDhhIDhhaThhrk7IOqxpjsg4YSA4YWk4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHWUFFQlMKK0FDNjc7QUM2NzsxMTAwIDExNjQgMTFCQTtBQzY3OzExMDAgMTE2NCAxMUJBOyAjICjqsac7IOqxpzsg4YSA4YWk4Ya6OyDqsac7IOGEgOGFpOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgR1lBRVMKK0FDNjg7QUM2ODsxMTAwIDExNjQgMTFCQjtBQzY4OzExMDAgMTE2NCAxMUJCOyAjICjqsag7IOqxqDsg4YSA4YWk4Ya7OyDqsag7IOGEgOGFpOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgR1lBRVNTCitBQzY5O0FDNjk7MTEwMCAxMTY0IDExQkM7QUM2OTsxMTAwIDExNjQgMTFCQzsgIyAo6rGpOyDqsak7IOGEgOGFpOGGvDsg6rGpOyDhhIDhhaThhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdZQUVORworQUM2QTtBQzZBOzExMDAgMTE2NCAxMUJEO0FDNkE7MTEwMCAxMTY0IDExQkQ7ICMgKOqxqjsg6rGqOyDhhIDhhaThhr07IOqxqjsg4YSA4YWk4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHWUFFSgorQUM2QjtBQzZCOzExMDAgMTE2NCAxMUJFO0FDNkI7MTEwMCAxMTY0IDExQkU7ICMgKOqxqzsg6rGrOyDhhIDhhaThhr47IOqxqzsg4YSA4YWk4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBHWUFFQworQUM2QztBQzZDOzExMDAgMTE2NCAxMUJGO0FDNkM7MTEwMCAxMTY0IDExQkY7ICMgKOqxrDsg6rGsOyDhhIDhhaThhr87IOqxrDsg4YSA4YWk4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHWUFFSworQUM2RDtBQzZEOzExMDAgMTE2NCAxMUMwO0FDNkQ7MTEwMCAxMTY0IDExQzA7ICMgKOqxrTsg6rGtOyDhhIDhhaThh4A7IOqxrTsg4YSA4YWk4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHWUFFVAorQUM2RTtBQzZFOzExMDAgMTE2NCAxMUMxO0FDNkU7MTEwMCAxMTY0IDExQzE7ICMgKOqxrjsg6rGuOyDhhIDhhaThh4E7IOqxrjsg4YSA4YWk4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBHWUFFUAorQUM2RjtBQzZGOzExMDAgMTE2NCAxMUMyO0FDNkY7MTEwMCAxMTY0IDExQzI7ICMgKOqxrzsg6rGvOyDhhIDhhaThh4I7IOqxrzsg4YSA4YWk4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHWUFFSAorQUM3MDtBQzcwOzExMDAgMTE2NTtBQzcwOzExMDAgMTE2NTsgIyAo6rGwOyDqsbA7IOGEgOGFpTsg6rGwOyDhhIDhhaU7ICkgSEFOR1VMIFNZTExBQkxFIEdFTworQUM3MTtBQzcxOzExMDAgMTE2NSAxMUE4O0FDNzE7MTEwMCAxMTY1IDExQTg7ICMgKOqxsTsg6rGxOyDhhIDhhaXhhqg7IOqxsTsg4YSA4YWl4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBHRU9HCitBQzcyO0FDNzI7MTEwMCAxMTY1IDExQTk7QUM3MjsxMTAwIDExNjUgMTFBOTsgIyAo6rGyOyDqsbI7IOGEgOGFpeGGqTsg6rGyOyDhhIDhhaXhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEdFT0dHCitBQzczO0FDNzM7MTEwMCAxMTY1IDExQUE7QUM3MzsxMTAwIDExNjUgMTFBQTsgIyAo6rGzOyDqsbM7IOGEgOGFpeGGqjsg6rGzOyDhhIDhhaXhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdFT0dTCitBQzc0O0FDNzQ7MTEwMCAxMTY1IDExQUI7QUM3NDsxMTAwIDExNjUgMTFBQjsgIyAo6rG0OyDqsbQ7IOGEgOGFpeGGqzsg6rG0OyDhhIDhhaXhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEdFT04KK0FDNzU7QUM3NTsxMTAwIDExNjUgMTFBQztBQzc1OzExMDAgMTE2NSAxMUFDOyAjICjqsbU7IOqxtTsg4YSA4YWl4YasOyDqsbU7IOGEgOGFpeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgR0VPTkoKK0FDNzY7QUM3NjsxMTAwIDExNjUgMTFBRDtBQzc2OzExMDAgMTE2NSAxMUFEOyAjICjqsbY7IOqxtjsg4YSA4YWl4YatOyDqsbY7IOGEgOGFpeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR0VPTkgKK0FDNzc7QUM3NzsxMTAwIDExNjUgMTFBRTtBQzc3OzExMDAgMTE2NSAxMUFFOyAjICjqsbc7IOqxtzsg4YSA4YWl4YauOyDqsbc7IOGEgOGFpeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgR0VPRAorQUM3ODtBQzc4OzExMDAgMTE2NSAxMUFGO0FDNzg7MTEwMCAxMTY1IDExQUY7ICMgKOqxuDsg6rG4OyDhhIDhhaXhhq87IOqxuDsg4YSA4YWl4YavOyApIEhBTkdVTCBTWUxMQUJMRSBHRU9MCitBQzc5O0FDNzk7MTEwMCAxMTY1IDExQjA7QUM3OTsxMTAwIDExNjUgMTFCMDsgIyAo6rG5OyDqsbk7IOGEgOGFpeGGsDsg6rG5OyDhhIDhhaXhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdFT0xHCitBQzdBO0FDN0E7MTEwMCAxMTY1IDExQjE7QUM3QTsxMTAwIDExNjUgMTFCMTsgIyAo6rG6OyDqsbo7IOGEgOGFpeGGsTsg6rG6OyDhhIDhhaXhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEdFT0xNCitBQzdCO0FDN0I7MTEwMCAxMTY1IDExQjI7QUM3QjsxMTAwIDExNjUgMTFCMjsgIyAo6rG7OyDqsbs7IOGEgOGFpeGGsjsg6rG7OyDhhIDhhaXhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEdFT0xCCitBQzdDO0FDN0M7MTEwMCAxMTY1IDExQjM7QUM3QzsxMTAwIDExNjUgMTFCMzsgIyAo6rG8OyDqsbw7IOGEgOGFpeGGszsg6rG8OyDhhIDhhaXhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdFT0xTCitBQzdEO0FDN0Q7MTEwMCAxMTY1IDExQjQ7QUM3RDsxMTAwIDExNjUgMTFCNDsgIyAo6rG9OyDqsb07IOGEgOGFpeGGtDsg6rG9OyDhhIDhhaXhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEdFT0xUCitBQzdFO0FDN0U7MTEwMCAxMTY1IDExQjU7QUM3RTsxMTAwIDExNjUgMTFCNTsgIyAo6rG+OyDqsb47IOGEgOGFpeGGtTsg6rG+OyDhhIDhhaXhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEdFT0xQCitBQzdGO0FDN0Y7MTEwMCAxMTY1IDExQjY7QUM3RjsxMTAwIDExNjUgMTFCNjsgIyAo6rG/OyDqsb87IOGEgOGFpeGGtjsg6rG/OyDhhIDhhaXhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdFT0xICitBQzgwO0FDODA7MTEwMCAxMTY1IDExQjc7QUM4MDsxMTAwIDExNjUgMTFCNzsgIyAo6rKAOyDqsoA7IOGEgOGFpeGGtzsg6rKAOyDhhIDhhaXhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEdFT00KK0FDODE7QUM4MTsxMTAwIDExNjUgMTFCODtBQzgxOzExMDAgMTE2NSAxMUI4OyAjICjqsoE7IOqygTsg4YSA4YWl4Ya4OyDqsoE7IOGEgOGFpeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgR0VPQgorQUM4MjtBQzgyOzExMDAgMTE2NSAxMUI5O0FDODI7MTEwMCAxMTY1IDExQjk7ICMgKOqygjsg6rKCOyDhhIDhhaXhhrk7IOqygjsg4YSA4YWl4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHRU9CUworQUM4MztBQzgzOzExMDAgMTE2NSAxMUJBO0FDODM7MTEwMCAxMTY1IDExQkE7ICMgKOqygzsg6rKDOyDhhIDhhaXhhro7IOqygzsg4YSA4YWl4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBHRU9TCitBQzg0O0FDODQ7MTEwMCAxMTY1IDExQkI7QUM4NDsxMTAwIDExNjUgMTFCQjsgIyAo6rKEOyDqsoQ7IOGEgOGFpeGGuzsg6rKEOyDhhIDhhaXhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEdFT1NTCitBQzg1O0FDODU7MTEwMCAxMTY1IDExQkM7QUM4NTsxMTAwIDExNjUgMTFCQzsgIyAo6rKFOyDqsoU7IOGEgOGFpeGGvDsg6rKFOyDhhIDhhaXhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdFT05HCitBQzg2O0FDODY7MTEwMCAxMTY1IDExQkQ7QUM4NjsxMTAwIDExNjUgMTFCRDsgIyAo6rKGOyDqsoY7IOGEgOGFpeGGvTsg6rKGOyDhhIDhhaXhhr07ICkgSEFOR1VMIFNZTExBQkxFIEdFT0oKK0FDODc7QUM4NzsxMTAwIDExNjUgMTFCRTtBQzg3OzExMDAgMTE2NSAxMUJFOyAjICjqsoc7IOqyhzsg4YSA4YWl4Ya+OyDqsoc7IOGEgOGFpeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgR0VPQworQUM4ODtBQzg4OzExMDAgMTE2NSAxMUJGO0FDODg7MTEwMCAxMTY1IDExQkY7ICMgKOqyiDsg6rKIOyDhhIDhhaXhhr87IOqyiDsg4YSA4YWl4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHRU9LCitBQzg5O0FDODk7MTEwMCAxMTY1IDExQzA7QUM4OTsxMTAwIDExNjUgMTFDMDsgIyAo6rKJOyDqsok7IOGEgOGFpeGHgDsg6rKJOyDhhIDhhaXhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEdFT1QKK0FDOEE7QUM4QTsxMTAwIDExNjUgMTFDMTtBQzhBOzExMDAgMTE2NSAxMUMxOyAjICjqsoo7IOqyijsg4YSA4YWl4YeBOyDqsoo7IOGEgOGFpeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgR0VPUAorQUM4QjtBQzhCOzExMDAgMTE2NSAxMUMyO0FDOEI7MTEwMCAxMTY1IDExQzI7ICMgKOqyizsg6rKLOyDhhIDhhaXhh4I7IOqyizsg4YSA4YWl4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHRU9ICitBQzhDO0FDOEM7MTEwMCAxMTY2O0FDOEM7MTEwMCAxMTY2OyAjICjqsow7IOqyjDsg4YSA4YWmOyDqsow7IOGEgOGFpjsgKSBIQU5HVUwgU1lMTEFCTEUgR0UKK0FDOEQ7QUM4RDsxMTAwIDExNjYgMTFBODtBQzhEOzExMDAgMTE2NiAxMUE4OyAjICjqso07IOqyjTsg4YSA4YWm4YaoOyDqso07IOGEgOGFpuGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR0VHCitBQzhFO0FDOEU7MTEwMCAxMTY2IDExQTk7QUM4RTsxMTAwIDExNjYgMTFBOTsgIyAo6rKOOyDqso47IOGEgOGFpuGGqTsg6rKOOyDhhIDhhabhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEdFR0cKK0FDOEY7QUM4RjsxMTAwIDExNjYgMTFBQTtBQzhGOzExMDAgMTE2NiAxMUFBOyAjICjqso87IOqyjzsg4YSA4YWm4YaqOyDqso87IOGEgOGFpuGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgR0VHUworQUM5MDtBQzkwOzExMDAgMTE2NiAxMUFCO0FDOTA7MTEwMCAxMTY2IDExQUI7ICMgKOqykDsg6rKQOyDhhIDhhabhhqs7IOqykDsg4YSA4YWm4YarOyApIEhBTkdVTCBTWUxMQUJMRSBHRU4KK0FDOTE7QUM5MTsxMTAwIDExNjYgMTFBQztBQzkxOzExMDAgMTE2NiAxMUFDOyAjICjqspE7IOqykTsg4YSA4YWm4YasOyDqspE7IOGEgOGFpuGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgR0VOSgorQUM5MjtBQzkyOzExMDAgMTE2NiAxMUFEO0FDOTI7MTEwMCAxMTY2IDExQUQ7ICMgKOqykjsg6rKSOyDhhIDhhabhhq07IOqykjsg4YSA4YWm4YatOyApIEhBTkdVTCBTWUxMQUJMRSBHRU5ICitBQzkzO0FDOTM7MTEwMCAxMTY2IDExQUU7QUM5MzsxMTAwIDExNjYgMTFBRTsgIyAo6rKTOyDqspM7IOGEgOGFpuGGrjsg6rKTOyDhhIDhhabhhq47ICkgSEFOR1VMIFNZTExBQkxFIEdFRAorQUM5NDtBQzk0OzExMDAgMTE2NiAxMUFGO0FDOTQ7MTEwMCAxMTY2IDExQUY7ICMgKOqylDsg6rKUOyDhhIDhhabhhq87IOqylDsg4YSA4YWm4YavOyApIEhBTkdVTCBTWUxMQUJMRSBHRUwKK0FDOTU7QUM5NTsxMTAwIDExNjYgMTFCMDtBQzk1OzExMDAgMTE2NiAxMUIwOyAjICjqspU7IOqylTsg4YSA4YWm4YawOyDqspU7IOGEgOGFpuGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgR0VMRworQUM5NjtBQzk2OzExMDAgMTE2NiAxMUIxO0FDOTY7MTEwMCAxMTY2IDExQjE7ICMgKOqyljsg6rKWOyDhhIDhhabhhrE7IOqyljsg4YSA4YWm4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHRUxNCitBQzk3O0FDOTc7MTEwMCAxMTY2IDExQjI7QUM5NzsxMTAwIDExNjYgMTFCMjsgIyAo6rKXOyDqspc7IOGEgOGFpuGGsjsg6rKXOyDhhIDhhabhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEdFTEIKK0FDOTg7QUM5ODsxMTAwIDExNjYgMTFCMztBQzk4OzExMDAgMTE2NiAxMUIzOyAjICjqspg7IOqymDsg4YSA4YWm4YazOyDqspg7IOGEgOGFpuGGszsgKSBIQU5HVUwgU1lMTEFCTEUgR0VMUworQUM5OTtBQzk5OzExMDAgMTE2NiAxMUI0O0FDOTk7MTEwMCAxMTY2IDExQjQ7ICMgKOqymTsg6rKZOyDhhIDhhabhhrQ7IOqymTsg4YSA4YWm4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHRUxUCitBQzlBO0FDOUE7MTEwMCAxMTY2IDExQjU7QUM5QTsxMTAwIDExNjYgMTFCNTsgIyAo6rKaOyDqspo7IOGEgOGFpuGGtTsg6rKaOyDhhIDhhabhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEdFTFAKK0FDOUI7QUM5QjsxMTAwIDExNjYgMTFCNjtBQzlCOzExMDAgMTE2NiAxMUI2OyAjICjqsps7IOqymzsg4YSA4YWm4Ya2OyDqsps7IOGEgOGFpuGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgR0VMSAorQUM5QztBQzlDOzExMDAgMTE2NiAxMUI3O0FDOUM7MTEwMCAxMTY2IDExQjc7ICMgKOqynDsg6rKcOyDhhIDhhabhhrc7IOqynDsg4YSA4YWm4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHRU0KK0FDOUQ7QUM5RDsxMTAwIDExNjYgMTFCODtBQzlEOzExMDAgMTE2NiAxMUI4OyAjICjqsp07IOqynTsg4YSA4YWm4Ya4OyDqsp07IOGEgOGFpuGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgR0VCCitBQzlFO0FDOUU7MTEwMCAxMTY2IDExQjk7QUM5RTsxMTAwIDExNjYgMTFCOTsgIyAo6rKeOyDqsp47IOGEgOGFpuGGuTsg6rKeOyDhhIDhhabhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEdFQlMKK0FDOUY7QUM5RjsxMTAwIDExNjYgMTFCQTtBQzlGOzExMDAgMTE2NiAxMUJBOyAjICjqsp87IOqynzsg4YSA4YWm4Ya6OyDqsp87IOGEgOGFpuGGujsgKSBIQU5HVUwgU1lMTEFCTEUgR0VTCitBQ0EwO0FDQTA7MTEwMCAxMTY2IDExQkI7QUNBMDsxMTAwIDExNjYgMTFCQjsgIyAo6rKgOyDqsqA7IOGEgOGFpuGGuzsg6rKgOyDhhIDhhabhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEdFU1MKK0FDQTE7QUNBMTsxMTAwIDExNjYgMTFCQztBQ0ExOzExMDAgMTE2NiAxMUJDOyAjICjqsqE7IOqyoTsg4YSA4YWm4Ya8OyDqsqE7IOGEgOGFpuGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgR0VORworQUNBMjtBQ0EyOzExMDAgMTE2NiAxMUJEO0FDQTI7MTEwMCAxMTY2IDExQkQ7ICMgKOqyojsg6rKiOyDhhIDhhabhhr07IOqyojsg4YSA4YWm4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHRUoKK0FDQTM7QUNBMzsxMTAwIDExNjYgMTFCRTtBQ0EzOzExMDAgMTE2NiAxMUJFOyAjICjqsqM7IOqyozsg4YSA4YWm4Ya+OyDqsqM7IOGEgOGFpuGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgR0VDCitBQ0E0O0FDQTQ7MTEwMCAxMTY2IDExQkY7QUNBNDsxMTAwIDExNjYgMTFCRjsgIyAo6rKkOyDqsqQ7IOGEgOGFpuGGvzsg6rKkOyDhhIDhhabhhr87ICkgSEFOR1VMIFNZTExBQkxFIEdFSworQUNBNTtBQ0E1OzExMDAgMTE2NiAxMUMwO0FDQTU7MTEwMCAxMTY2IDExQzA7ICMgKOqypTsg6rKlOyDhhIDhhabhh4A7IOqypTsg4YSA4YWm4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHRVQKK0FDQTY7QUNBNjsxMTAwIDExNjYgMTFDMTtBQ0E2OzExMDAgMTE2NiAxMUMxOyAjICjqsqY7IOqypjsg4YSA4YWm4YeBOyDqsqY7IOGEgOGFpuGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgR0VQCitBQ0E3O0FDQTc7MTEwMCAxMTY2IDExQzI7QUNBNzsxMTAwIDExNjYgMTFDMjsgIyAo6rKnOyDqsqc7IOGEgOGFpuGHgjsg6rKnOyDhhIDhhabhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEdFSAorQUNBODtBQ0E4OzExMDAgMTE2NztBQ0E4OzExMDAgMTE2NzsgIyAo6rKoOyDqsqg7IOGEgOGFpzsg6rKoOyDhhIDhhac7ICkgSEFOR1VMIFNZTExBQkxFIEdZRU8KK0FDQTk7QUNBOTsxMTAwIDExNjcgMTFBODtBQ0E5OzExMDAgMTE2NyAxMUE4OyAjICjqsqk7IOqyqTsg4YSA4YWn4YaoOyDqsqk7IOGEgOGFp+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR1lFT0cKK0FDQUE7QUNBQTsxMTAwIDExNjcgMTFBOTtBQ0FBOzExMDAgMTE2NyAxMUE5OyAjICjqsqo7IOqyqjsg4YSA4YWn4YapOyDqsqo7IOGEgOGFp+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgR1lFT0dHCitBQ0FCO0FDQUI7MTEwMCAxMTY3IDExQUE7QUNBQjsxMTAwIDExNjcgMTFBQTsgIyAo6rKrOyDqsqs7IOGEgOGFp+GGqjsg6rKrOyDhhIDhhafhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdZRU9HUworQUNBQztBQ0FDOzExMDAgMTE2NyAxMUFCO0FDQUM7MTEwMCAxMTY3IDExQUI7ICMgKOqyrDsg6rKsOyDhhIDhhafhhqs7IOqyrDsg4YSA4YWn4YarOyApIEhBTkdVTCBTWUxMQUJMRSBHWUVPTgorQUNBRDtBQ0FEOzExMDAgMTE2NyAxMUFDO0FDQUQ7MTEwMCAxMTY3IDExQUM7ICMgKOqyrTsg6rKtOyDhhIDhhafhhqw7IOqyrTsg4YSA4YWn4YasOyApIEhBTkdVTCBTWUxMQUJMRSBHWUVPTkoKK0FDQUU7QUNBRTsxMTAwIDExNjcgMTFBRDtBQ0FFOzExMDAgMTE2NyAxMUFEOyAjICjqsq47IOqyrjsg4YSA4YWn4YatOyDqsq47IOGEgOGFp+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR1lFT05ICitBQ0FGO0FDQUY7MTEwMCAxMTY3IDExQUU7QUNBRjsxMTAwIDExNjcgMTFBRTsgIyAo6rKvOyDqsq87IOGEgOGFp+GGrjsg6rKvOyDhhIDhhafhhq47ICkgSEFOR1VMIFNZTExBQkxFIEdZRU9ECitBQ0IwO0FDQjA7MTEwMCAxMTY3IDExQUY7QUNCMDsxMTAwIDExNjcgMTFBRjsgIyAo6rKwOyDqsrA7IOGEgOGFp+GGrzsg6rKwOyDhhIDhhafhhq87ICkgSEFOR1VMIFNZTExBQkxFIEdZRU9MCitBQ0IxO0FDQjE7MTEwMCAxMTY3IDExQjA7QUNCMTsxMTAwIDExNjcgMTFCMDsgIyAo6rKxOyDqsrE7IOGEgOGFp+GGsDsg6rKxOyDhhIDhhafhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdZRU9MRworQUNCMjtBQ0IyOzExMDAgMTE2NyAxMUIxO0FDQjI7MTEwMCAxMTY3IDExQjE7ICMgKOqysjsg6rKyOyDhhIDhhafhhrE7IOqysjsg4YSA4YWn4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHWUVPTE0KK0FDQjM7QUNCMzsxMTAwIDExNjcgMTFCMjtBQ0IzOzExMDAgMTE2NyAxMUIyOyAjICjqsrM7IOqyszsg4YSA4YWn4YayOyDqsrM7IOGEgOGFp+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgR1lFT0xCCitBQ0I0O0FDQjQ7MTEwMCAxMTY3IDExQjM7QUNCNDsxMTAwIDExNjcgMTFCMzsgIyAo6rK0OyDqsrQ7IOGEgOGFp+GGszsg6rK0OyDhhIDhhafhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdZRU9MUworQUNCNTtBQ0I1OzExMDAgMTE2NyAxMUI0O0FDQjU7MTEwMCAxMTY3IDExQjQ7ICMgKOqytTsg6rK1OyDhhIDhhafhhrQ7IOqytTsg4YSA4YWn4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHWUVPTFQKK0FDQjY7QUNCNjsxMTAwIDExNjcgMTFCNTtBQ0I2OzExMDAgMTE2NyAxMUI1OyAjICjqsrY7IOqytjsg4YSA4YWn4Ya1OyDqsrY7IOGEgOGFp+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgR1lFT0xQCitBQ0I3O0FDQjc7MTEwMCAxMTY3IDExQjY7QUNCNzsxMTAwIDExNjcgMTFCNjsgIyAo6rK3OyDqsrc7IOGEgOGFp+GGtjsg6rK3OyDhhIDhhafhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdZRU9MSAorQUNCODtBQ0I4OzExMDAgMTE2NyAxMUI3O0FDQjg7MTEwMCAxMTY3IDExQjc7ICMgKOqyuDsg6rK4OyDhhIDhhafhhrc7IOqyuDsg4YSA4YWn4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHWUVPTQorQUNCOTtBQ0I5OzExMDAgMTE2NyAxMUI4O0FDQjk7MTEwMCAxMTY3IDExQjg7ICMgKOqyuTsg6rK5OyDhhIDhhafhhrg7IOqyuTsg4YSA4YWn4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBHWUVPQgorQUNCQTtBQ0JBOzExMDAgMTE2NyAxMUI5O0FDQkE7MTEwMCAxMTY3IDExQjk7ICMgKOqyujsg6rK6OyDhhIDhhafhhrk7IOqyujsg4YSA4YWn4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHWUVPQlMKK0FDQkI7QUNCQjsxMTAwIDExNjcgMTFCQTtBQ0JCOzExMDAgMTE2NyAxMUJBOyAjICjqsrs7IOqyuzsg4YSA4YWn4Ya6OyDqsrs7IOGEgOGFp+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgR1lFT1MKK0FDQkM7QUNCQzsxMTAwIDExNjcgMTFCQjtBQ0JDOzExMDAgMTE2NyAxMUJCOyAjICjqsrw7IOqyvDsg4YSA4YWn4Ya7OyDqsrw7IOGEgOGFp+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgR1lFT1NTCitBQ0JEO0FDQkQ7MTEwMCAxMTY3IDExQkM7QUNCRDsxMTAwIDExNjcgMTFCQzsgIyAo6rK9OyDqsr07IOGEgOGFp+GGvDsg6rK9OyDhhIDhhafhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdZRU9ORworQUNCRTtBQ0JFOzExMDAgMTE2NyAxMUJEO0FDQkU7MTEwMCAxMTY3IDExQkQ7ICMgKOqyvjsg6rK+OyDhhIDhhafhhr07IOqyvjsg4YSA4YWn4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHWUVPSgorQUNCRjtBQ0JGOzExMDAgMTE2NyAxMUJFO0FDQkY7MTEwMCAxMTY3IDExQkU7ICMgKOqyvzsg6rK/OyDhhIDhhafhhr47IOqyvzsg4YSA4YWn4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBHWUVPQworQUNDMDtBQ0MwOzExMDAgMTE2NyAxMUJGO0FDQzA7MTEwMCAxMTY3IDExQkY7ICMgKOqzgDsg6rOAOyDhhIDhhafhhr87IOqzgDsg4YSA4YWn4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHWUVPSworQUNDMTtBQ0MxOzExMDAgMTE2NyAxMUMwO0FDQzE7MTEwMCAxMTY3IDExQzA7ICMgKOqzgTsg6rOBOyDhhIDhhafhh4A7IOqzgTsg4YSA4YWn4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHWUVPVAorQUNDMjtBQ0MyOzExMDAgMTE2NyAxMUMxO0FDQzI7MTEwMCAxMTY3IDExQzE7ICMgKOqzgjsg6rOCOyDhhIDhhafhh4E7IOqzgjsg4YSA4YWn4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBHWUVPUAorQUNDMztBQ0MzOzExMDAgMTE2NyAxMUMyO0FDQzM7MTEwMCAxMTY3IDExQzI7ICMgKOqzgzsg6rODOyDhhIDhhafhh4I7IOqzgzsg4YSA4YWn4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHWUVPSAorQUNDNDtBQ0M0OzExMDAgMTE2ODtBQ0M0OzExMDAgMTE2ODsgIyAo6rOEOyDqs4Q7IOGEgOGFqDsg6rOEOyDhhIDhhag7ICkgSEFOR1VMIFNZTExBQkxFIEdZRQorQUNDNTtBQ0M1OzExMDAgMTE2OCAxMUE4O0FDQzU7MTEwMCAxMTY4IDExQTg7ICMgKOqzhTsg6rOFOyDhhIDhhajhhqg7IOqzhTsg4YSA4YWo4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBHWUVHCitBQ0M2O0FDQzY7MTEwMCAxMTY4IDExQTk7QUNDNjsxMTAwIDExNjggMTFBOTsgIyAo6rOGOyDqs4Y7IOGEgOGFqOGGqTsg6rOGOyDhhIDhhajhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEdZRUdHCitBQ0M3O0FDQzc7MTEwMCAxMTY4IDExQUE7QUNDNzsxMTAwIDExNjggMTFBQTsgIyAo6rOHOyDqs4c7IOGEgOGFqOGGqjsg6rOHOyDhhIDhhajhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdZRUdTCitBQ0M4O0FDQzg7MTEwMCAxMTY4IDExQUI7QUNDODsxMTAwIDExNjggMTFBQjsgIyAo6rOIOyDqs4g7IOGEgOGFqOGGqzsg6rOIOyDhhIDhhajhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEdZRU4KK0FDQzk7QUNDOTsxMTAwIDExNjggMTFBQztBQ0M5OzExMDAgMTE2OCAxMUFDOyAjICjqs4k7IOqziTsg4YSA4YWo4YasOyDqs4k7IOGEgOGFqOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgR1lFTkoKK0FDQ0E7QUNDQTsxMTAwIDExNjggMTFBRDtBQ0NBOzExMDAgMTE2OCAxMUFEOyAjICjqs4o7IOqzijsg4YSA4YWo4YatOyDqs4o7IOGEgOGFqOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR1lFTkgKK0FDQ0I7QUNDQjsxMTAwIDExNjggMTFBRTtBQ0NCOzExMDAgMTE2OCAxMUFFOyAjICjqs4s7IOqzizsg4YSA4YWo4YauOyDqs4s7IOGEgOGFqOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgR1lFRAorQUNDQztBQ0NDOzExMDAgMTE2OCAxMUFGO0FDQ0M7MTEwMCAxMTY4IDExQUY7ICMgKOqzjDsg6rOMOyDhhIDhhajhhq87IOqzjDsg4YSA4YWo4YavOyApIEhBTkdVTCBTWUxMQUJMRSBHWUVMCitBQ0NEO0FDQ0Q7MTEwMCAxMTY4IDExQjA7QUNDRDsxMTAwIDExNjggMTFCMDsgIyAo6rONOyDqs407IOGEgOGFqOGGsDsg6rONOyDhhIDhhajhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdZRUxHCitBQ0NFO0FDQ0U7MTEwMCAxMTY4IDExQjE7QUNDRTsxMTAwIDExNjggMTFCMTsgIyAo6rOOOyDqs447IOGEgOGFqOGGsTsg6rOOOyDhhIDhhajhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEdZRUxNCitBQ0NGO0FDQ0Y7MTEwMCAxMTY4IDExQjI7QUNDRjsxMTAwIDExNjggMTFCMjsgIyAo6rOPOyDqs487IOGEgOGFqOGGsjsg6rOPOyDhhIDhhajhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEdZRUxCCitBQ0QwO0FDRDA7MTEwMCAxMTY4IDExQjM7QUNEMDsxMTAwIDExNjggMTFCMzsgIyAo6rOQOyDqs5A7IOGEgOGFqOGGszsg6rOQOyDhhIDhhajhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdZRUxTCitBQ0QxO0FDRDE7MTEwMCAxMTY4IDExQjQ7QUNEMTsxMTAwIDExNjggMTFCNDsgIyAo6rOROyDqs5E7IOGEgOGFqOGGtDsg6rOROyDhhIDhhajhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEdZRUxUCitBQ0QyO0FDRDI7MTEwMCAxMTY4IDExQjU7QUNEMjsxMTAwIDExNjggMTFCNTsgIyAo6rOSOyDqs5I7IOGEgOGFqOGGtTsg6rOSOyDhhIDhhajhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEdZRUxQCitBQ0QzO0FDRDM7MTEwMCAxMTY4IDExQjY7QUNEMzsxMTAwIDExNjggMTFCNjsgIyAo6rOTOyDqs5M7IOGEgOGFqOGGtjsg6rOTOyDhhIDhhajhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdZRUxICitBQ0Q0O0FDRDQ7MTEwMCAxMTY4IDExQjc7QUNENDsxMTAwIDExNjggMTFCNzsgIyAo6rOUOyDqs5Q7IOGEgOGFqOGGtzsg6rOUOyDhhIDhhajhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEdZRU0KK0FDRDU7QUNENTsxMTAwIDExNjggMTFCODtBQ0Q1OzExMDAgMTE2OCAxMUI4OyAjICjqs5U7IOqzlTsg4YSA4YWo4Ya4OyDqs5U7IOGEgOGFqOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgR1lFQgorQUNENjtBQ0Q2OzExMDAgMTE2OCAxMUI5O0FDRDY7MTEwMCAxMTY4IDExQjk7ICMgKOqzljsg6rOWOyDhhIDhhajhhrk7IOqzljsg4YSA4YWo4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHWUVCUworQUNENztBQ0Q3OzExMDAgMTE2OCAxMUJBO0FDRDc7MTEwMCAxMTY4IDExQkE7ICMgKOqzlzsg6rOXOyDhhIDhhajhhro7IOqzlzsg4YSA4YWo4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBHWUVTCitBQ0Q4O0FDRDg7MTEwMCAxMTY4IDExQkI7QUNEODsxMTAwIDExNjggMTFCQjsgIyAo6rOYOyDqs5g7IOGEgOGFqOGGuzsg6rOYOyDhhIDhhajhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEdZRVNTCitBQ0Q5O0FDRDk7MTEwMCAxMTY4IDExQkM7QUNEOTsxMTAwIDExNjggMTFCQzsgIyAo6rOZOyDqs5k7IOGEgOGFqOGGvDsg6rOZOyDhhIDhhajhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdZRU5HCitBQ0RBO0FDREE7MTEwMCAxMTY4IDExQkQ7QUNEQTsxMTAwIDExNjggMTFCRDsgIyAo6rOaOyDqs5o7IOGEgOGFqOGGvTsg6rOaOyDhhIDhhajhhr07ICkgSEFOR1VMIFNZTExBQkxFIEdZRUoKK0FDREI7QUNEQjsxMTAwIDExNjggMTFCRTtBQ0RCOzExMDAgMTE2OCAxMUJFOyAjICjqs5s7IOqzmzsg4YSA4YWo4Ya+OyDqs5s7IOGEgOGFqOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgR1lFQworQUNEQztBQ0RDOzExMDAgMTE2OCAxMUJGO0FDREM7MTEwMCAxMTY4IDExQkY7ICMgKOqznDsg6rOcOyDhhIDhhajhhr87IOqznDsg4YSA4YWo4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHWUVLCitBQ0REO0FDREQ7MTEwMCAxMTY4IDExQzA7QUNERDsxMTAwIDExNjggMTFDMDsgIyAo6rOdOyDqs507IOGEgOGFqOGHgDsg6rOdOyDhhIDhhajhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEdZRVQKK0FDREU7QUNERTsxMTAwIDExNjggMTFDMTtBQ0RFOzExMDAgMTE2OCAxMUMxOyAjICjqs547IOqznjsg4YSA4YWo4YeBOyDqs547IOGEgOGFqOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgR1lFUAorQUNERjtBQ0RGOzExMDAgMTE2OCAxMUMyO0FDREY7MTEwMCAxMTY4IDExQzI7ICMgKOqznzsg6rOfOyDhhIDhhajhh4I7IOqznzsg4YSA4YWo4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHWUVICitBQ0UwO0FDRTA7MTEwMCAxMTY5O0FDRTA7MTEwMCAxMTY5OyAjICjqs6A7IOqzoDsg4YSA4YWpOyDqs6A7IOGEgOGFqTsgKSBIQU5HVUwgU1lMTEFCTEUgR08KK0FDRTE7QUNFMTsxMTAwIDExNjkgMTFBODtBQ0UxOzExMDAgMTE2OSAxMUE4OyAjICjqs6E7IOqzoTsg4YSA4YWp4YaoOyDqs6E7IOGEgOGFqeGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR09HCitBQ0UyO0FDRTI7MTEwMCAxMTY5IDExQTk7QUNFMjsxMTAwIDExNjkgMTFBOTsgIyAo6rOiOyDqs6I7IOGEgOGFqeGGqTsg6rOiOyDhhIDhhanhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEdPR0cKK0FDRTM7QUNFMzsxMTAwIDExNjkgMTFBQTtBQ0UzOzExMDAgMTE2OSAxMUFBOyAjICjqs6M7IOqzozsg4YSA4YWp4YaqOyDqs6M7IOGEgOGFqeGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgR09HUworQUNFNDtBQ0U0OzExMDAgMTE2OSAxMUFCO0FDRTQ7MTEwMCAxMTY5IDExQUI7ICMgKOqzpDsg6rOkOyDhhIDhhanhhqs7IOqzpDsg4YSA4YWp4YarOyApIEhBTkdVTCBTWUxMQUJMRSBHT04KK0FDRTU7QUNFNTsxMTAwIDExNjkgMTFBQztBQ0U1OzExMDAgMTE2OSAxMUFDOyAjICjqs6U7IOqzpTsg4YSA4YWp4YasOyDqs6U7IOGEgOGFqeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgR09OSgorQUNFNjtBQ0U2OzExMDAgMTE2OSAxMUFEO0FDRTY7MTEwMCAxMTY5IDExQUQ7ICMgKOqzpjsg6rOmOyDhhIDhhanhhq07IOqzpjsg4YSA4YWp4YatOyApIEhBTkdVTCBTWUxMQUJMRSBHT05ICitBQ0U3O0FDRTc7MTEwMCAxMTY5IDExQUU7QUNFNzsxMTAwIDExNjkgMTFBRTsgIyAo6rOnOyDqs6c7IOGEgOGFqeGGrjsg6rOnOyDhhIDhhanhhq47ICkgSEFOR1VMIFNZTExBQkxFIEdPRAorQUNFODtBQ0U4OzExMDAgMTE2OSAxMUFGO0FDRTg7MTEwMCAxMTY5IDExQUY7ICMgKOqzqDsg6rOoOyDhhIDhhanhhq87IOqzqDsg4YSA4YWp4YavOyApIEhBTkdVTCBTWUxMQUJMRSBHT0wKK0FDRTk7QUNFOTsxMTAwIDExNjkgMTFCMDtBQ0U5OzExMDAgMTE2OSAxMUIwOyAjICjqs6k7IOqzqTsg4YSA4YWp4YawOyDqs6k7IOGEgOGFqeGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgR09MRworQUNFQTtBQ0VBOzExMDAgMTE2OSAxMUIxO0FDRUE7MTEwMCAxMTY5IDExQjE7ICMgKOqzqjsg6rOqOyDhhIDhhanhhrE7IOqzqjsg4YSA4YWp4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHT0xNCitBQ0VCO0FDRUI7MTEwMCAxMTY5IDExQjI7QUNFQjsxMTAwIDExNjkgMTFCMjsgIyAo6rOrOyDqs6s7IOGEgOGFqeGGsjsg6rOrOyDhhIDhhanhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEdPTEIKK0FDRUM7QUNFQzsxMTAwIDExNjkgMTFCMztBQ0VDOzExMDAgMTE2OSAxMUIzOyAjICjqs6w7IOqzrDsg4YSA4YWp4YazOyDqs6w7IOGEgOGFqeGGszsgKSBIQU5HVUwgU1lMTEFCTEUgR09MUworQUNFRDtBQ0VEOzExMDAgMTE2OSAxMUI0O0FDRUQ7MTEwMCAxMTY5IDExQjQ7ICMgKOqzrTsg6rOtOyDhhIDhhanhhrQ7IOqzrTsg4YSA4YWp4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHT0xUCitBQ0VFO0FDRUU7MTEwMCAxMTY5IDExQjU7QUNFRTsxMTAwIDExNjkgMTFCNTsgIyAo6rOuOyDqs647IOGEgOGFqeGGtTsg6rOuOyDhhIDhhanhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEdPTFAKK0FDRUY7QUNFRjsxMTAwIDExNjkgMTFCNjtBQ0VGOzExMDAgMTE2OSAxMUI2OyAjICjqs687IOqzrzsg4YSA4YWp4Ya2OyDqs687IOGEgOGFqeGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgR09MSAorQUNGMDtBQ0YwOzExMDAgMTE2OSAxMUI3O0FDRjA7MTEwMCAxMTY5IDExQjc7ICMgKOqzsDsg6rOwOyDhhIDhhanhhrc7IOqzsDsg4YSA4YWp4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHT00KK0FDRjE7QUNGMTsxMTAwIDExNjkgMTFCODtBQ0YxOzExMDAgMTE2OSAxMUI4OyAjICjqs7E7IOqzsTsg4YSA4YWp4Ya4OyDqs7E7IOGEgOGFqeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgR09CCitBQ0YyO0FDRjI7MTEwMCAxMTY5IDExQjk7QUNGMjsxMTAwIDExNjkgMTFCOTsgIyAo6rOyOyDqs7I7IOGEgOGFqeGGuTsg6rOyOyDhhIDhhanhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEdPQlMKK0FDRjM7QUNGMzsxMTAwIDExNjkgMTFCQTtBQ0YzOzExMDAgMTE2OSAxMUJBOyAjICjqs7M7IOqzszsg4YSA4YWp4Ya6OyDqs7M7IOGEgOGFqeGGujsgKSBIQU5HVUwgU1lMTEFCTEUgR09TCitBQ0Y0O0FDRjQ7MTEwMCAxMTY5IDExQkI7QUNGNDsxMTAwIDExNjkgMTFCQjsgIyAo6rO0OyDqs7Q7IOGEgOGFqeGGuzsg6rO0OyDhhIDhhanhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEdPU1MKK0FDRjU7QUNGNTsxMTAwIDExNjkgMTFCQztBQ0Y1OzExMDAgMTE2OSAxMUJDOyAjICjqs7U7IOqztTsg4YSA4YWp4Ya8OyDqs7U7IOGEgOGFqeGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgR09ORworQUNGNjtBQ0Y2OzExMDAgMTE2OSAxMUJEO0FDRjY7MTEwMCAxMTY5IDExQkQ7ICMgKOqztjsg6rO2OyDhhIDhhanhhr07IOqztjsg4YSA4YWp4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHT0oKK0FDRjc7QUNGNzsxMTAwIDExNjkgMTFCRTtBQ0Y3OzExMDAgMTE2OSAxMUJFOyAjICjqs7c7IOqztzsg4YSA4YWp4Ya+OyDqs7c7IOGEgOGFqeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgR09DCitBQ0Y4O0FDRjg7MTEwMCAxMTY5IDExQkY7QUNGODsxMTAwIDExNjkgMTFCRjsgIyAo6rO4OyDqs7g7IOGEgOGFqeGGvzsg6rO4OyDhhIDhhanhhr87ICkgSEFOR1VMIFNZTExBQkxFIEdPSworQUNGOTtBQ0Y5OzExMDAgMTE2OSAxMUMwO0FDRjk7MTEwMCAxMTY5IDExQzA7ICMgKOqzuTsg6rO5OyDhhIDhhanhh4A7IOqzuTsg4YSA4YWp4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHT1QKK0FDRkE7QUNGQTsxMTAwIDExNjkgMTFDMTtBQ0ZBOzExMDAgMTE2OSAxMUMxOyAjICjqs7o7IOqzujsg4YSA4YWp4YeBOyDqs7o7IOGEgOGFqeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgR09QCitBQ0ZCO0FDRkI7MTEwMCAxMTY5IDExQzI7QUNGQjsxMTAwIDExNjkgMTFDMjsgIyAo6rO7OyDqs7s7IOGEgOGFqeGHgjsg6rO7OyDhhIDhhanhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEdPSAorQUNGQztBQ0ZDOzExMDAgMTE2QTtBQ0ZDOzExMDAgMTE2QTsgIyAo6rO8OyDqs7w7IOGEgOGFqjsg6rO8OyDhhIDhhao7ICkgSEFOR1VMIFNZTExBQkxFIEdXQQorQUNGRDtBQ0ZEOzExMDAgMTE2QSAxMUE4O0FDRkQ7MTEwMCAxMTZBIDExQTg7ICMgKOqzvTsg6rO9OyDhhIDhharhhqg7IOqzvTsg4YSA4YWq4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBHV0FHCitBQ0ZFO0FDRkU7MTEwMCAxMTZBIDExQTk7QUNGRTsxMTAwIDExNkEgMTFBOTsgIyAo6rO+OyDqs747IOGEgOGFquGGqTsg6rO+OyDhhIDhharhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEdXQUdHCitBQ0ZGO0FDRkY7MTEwMCAxMTZBIDExQUE7QUNGRjsxMTAwIDExNkEgMTFBQTsgIyAo6rO/OyDqs787IOGEgOGFquGGqjsg6rO/OyDhhIDhharhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdXQUdTCitBRDAwO0FEMDA7MTEwMCAxMTZBIDExQUI7QUQwMDsxMTAwIDExNkEgMTFBQjsgIyAo6rSAOyDqtIA7IOGEgOGFquGGqzsg6rSAOyDhhIDhharhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEdXQU4KK0FEMDE7QUQwMTsxMTAwIDExNkEgMTFBQztBRDAxOzExMDAgMTE2QSAxMUFDOyAjICjqtIE7IOq0gTsg4YSA4YWq4YasOyDqtIE7IOGEgOGFquGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgR1dBTkoKK0FEMDI7QUQwMjsxMTAwIDExNkEgMTFBRDtBRDAyOzExMDAgMTE2QSAxMUFEOyAjICjqtII7IOq0gjsg4YSA4YWq4YatOyDqtII7IOGEgOGFquGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR1dBTkgKK0FEMDM7QUQwMzsxMTAwIDExNkEgMTFBRTtBRDAzOzExMDAgMTE2QSAxMUFFOyAjICjqtIM7IOq0gzsg4YSA4YWq4YauOyDqtIM7IOGEgOGFquGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgR1dBRAorQUQwNDtBRDA0OzExMDAgMTE2QSAxMUFGO0FEMDQ7MTEwMCAxMTZBIDExQUY7ICMgKOq0hDsg6rSEOyDhhIDhharhhq87IOq0hDsg4YSA4YWq4YavOyApIEhBTkdVTCBTWUxMQUJMRSBHV0FMCitBRDA1O0FEMDU7MTEwMCAxMTZBIDExQjA7QUQwNTsxMTAwIDExNkEgMTFCMDsgIyAo6rSFOyDqtIU7IOGEgOGFquGGsDsg6rSFOyDhhIDhharhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdXQUxHCitBRDA2O0FEMDY7MTEwMCAxMTZBIDExQjE7QUQwNjsxMTAwIDExNkEgMTFCMTsgIyAo6rSGOyDqtIY7IOGEgOGFquGGsTsg6rSGOyDhhIDhharhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEdXQUxNCitBRDA3O0FEMDc7MTEwMCAxMTZBIDExQjI7QUQwNzsxMTAwIDExNkEgMTFCMjsgIyAo6rSHOyDqtIc7IOGEgOGFquGGsjsg6rSHOyDhhIDhharhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEdXQUxCCitBRDA4O0FEMDg7MTEwMCAxMTZBIDExQjM7QUQwODsxMTAwIDExNkEgMTFCMzsgIyAo6rSIOyDqtIg7IOGEgOGFquGGszsg6rSIOyDhhIDhharhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdXQUxTCitBRDA5O0FEMDk7MTEwMCAxMTZBIDExQjQ7QUQwOTsxMTAwIDExNkEgMTFCNDsgIyAo6rSJOyDqtIk7IOGEgOGFquGGtDsg6rSJOyDhhIDhharhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEdXQUxUCitBRDBBO0FEMEE7MTEwMCAxMTZBIDExQjU7QUQwQTsxMTAwIDExNkEgMTFCNTsgIyAo6rSKOyDqtIo7IOGEgOGFquGGtTsg6rSKOyDhhIDhharhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEdXQUxQCitBRDBCO0FEMEI7MTEwMCAxMTZBIDExQjY7QUQwQjsxMTAwIDExNkEgMTFCNjsgIyAo6rSLOyDqtIs7IOGEgOGFquGGtjsg6rSLOyDhhIDhharhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdXQUxICitBRDBDO0FEMEM7MTEwMCAxMTZBIDExQjc7QUQwQzsxMTAwIDExNkEgMTFCNzsgIyAo6rSMOyDqtIw7IOGEgOGFquGGtzsg6rSMOyDhhIDhharhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEdXQU0KK0FEMEQ7QUQwRDsxMTAwIDExNkEgMTFCODtBRDBEOzExMDAgMTE2QSAxMUI4OyAjICjqtI07IOq0jTsg4YSA4YWq4Ya4OyDqtI07IOGEgOGFquGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgR1dBQgorQUQwRTtBRDBFOzExMDAgMTE2QSAxMUI5O0FEMEU7MTEwMCAxMTZBIDExQjk7ICMgKOq0jjsg6rSOOyDhhIDhharhhrk7IOq0jjsg4YSA4YWq4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHV0FCUworQUQwRjtBRDBGOzExMDAgMTE2QSAxMUJBO0FEMEY7MTEwMCAxMTZBIDExQkE7ICMgKOq0jzsg6rSPOyDhhIDhharhhro7IOq0jzsg4YSA4YWq4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBHV0FTCitBRDEwO0FEMTA7MTEwMCAxMTZBIDExQkI7QUQxMDsxMTAwIDExNkEgMTFCQjsgIyAo6rSQOyDqtJA7IOGEgOGFquGGuzsg6rSQOyDhhIDhharhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEdXQVNTCitBRDExO0FEMTE7MTEwMCAxMTZBIDExQkM7QUQxMTsxMTAwIDExNkEgMTFCQzsgIyAo6rSROyDqtJE7IOGEgOGFquGGvDsg6rSROyDhhIDhharhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdXQU5HCitBRDEyO0FEMTI7MTEwMCAxMTZBIDExQkQ7QUQxMjsxMTAwIDExNkEgMTFCRDsgIyAo6rSSOyDqtJI7IOGEgOGFquGGvTsg6rSSOyDhhIDhharhhr07ICkgSEFOR1VMIFNZTExBQkxFIEdXQUoKK0FEMTM7QUQxMzsxMTAwIDExNkEgMTFCRTtBRDEzOzExMDAgMTE2QSAxMUJFOyAjICjqtJM7IOq0kzsg4YSA4YWq4Ya+OyDqtJM7IOGEgOGFquGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgR1dBQworQUQxNDtBRDE0OzExMDAgMTE2QSAxMUJGO0FEMTQ7MTEwMCAxMTZBIDExQkY7ICMgKOq0lDsg6rSUOyDhhIDhharhhr87IOq0lDsg4YSA4YWq4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHV0FLCitBRDE1O0FEMTU7MTEwMCAxMTZBIDExQzA7QUQxNTsxMTAwIDExNkEgMTFDMDsgIyAo6rSVOyDqtJU7IOGEgOGFquGHgDsg6rSVOyDhhIDhharhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEdXQVQKK0FEMTY7QUQxNjsxMTAwIDExNkEgMTFDMTtBRDE2OzExMDAgMTE2QSAxMUMxOyAjICjqtJY7IOq0ljsg4YSA4YWq4YeBOyDqtJY7IOGEgOGFquGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgR1dBUAorQUQxNztBRDE3OzExMDAgMTE2QSAxMUMyO0FEMTc7MTEwMCAxMTZBIDExQzI7ICMgKOq0lzsg6rSXOyDhhIDhharhh4I7IOq0lzsg4YSA4YWq4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHV0FICitBRDE4O0FEMTg7MTEwMCAxMTZCO0FEMTg7MTEwMCAxMTZCOyAjICjqtJg7IOq0mDsg4YSA4YWrOyDqtJg7IOGEgOGFqzsgKSBIQU5HVUwgU1lMTEFCTEUgR1dBRQorQUQxOTtBRDE5OzExMDAgMTE2QiAxMUE4O0FEMTk7MTEwMCAxMTZCIDExQTg7ICMgKOq0mTsg6rSZOyDhhIDhhavhhqg7IOq0mTsg4YSA4YWr4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBHV0FFRworQUQxQTtBRDFBOzExMDAgMTE2QiAxMUE5O0FEMUE7MTEwMCAxMTZCIDExQTk7ICMgKOq0mjsg6rSaOyDhhIDhhavhhqk7IOq0mjsg4YSA4YWr4YapOyApIEhBTkdVTCBTWUxMQUJMRSBHV0FFR0cKK0FEMUI7QUQxQjsxMTAwIDExNkIgMTFBQTtBRDFCOzExMDAgMTE2QiAxMUFBOyAjICjqtJs7IOq0mzsg4YSA4YWr4YaqOyDqtJs7IOGEgOGFq+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgR1dBRUdTCitBRDFDO0FEMUM7MTEwMCAxMTZCIDExQUI7QUQxQzsxMTAwIDExNkIgMTFBQjsgIyAo6rScOyDqtJw7IOGEgOGFq+GGqzsg6rScOyDhhIDhhavhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEdXQUVOCitBRDFEO0FEMUQ7MTEwMCAxMTZCIDExQUM7QUQxRDsxMTAwIDExNkIgMTFBQzsgIyAo6rSdOyDqtJ07IOGEgOGFq+GGrDsg6rSdOyDhhIDhhavhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEdXQUVOSgorQUQxRTtBRDFFOzExMDAgMTE2QiAxMUFEO0FEMUU7MTEwMCAxMTZCIDExQUQ7ICMgKOq0njsg6rSeOyDhhIDhhavhhq07IOq0njsg4YSA4YWr4YatOyApIEhBTkdVTCBTWUxMQUJMRSBHV0FFTkgKK0FEMUY7QUQxRjsxMTAwIDExNkIgMTFBRTtBRDFGOzExMDAgMTE2QiAxMUFFOyAjICjqtJ87IOq0nzsg4YSA4YWr4YauOyDqtJ87IOGEgOGFq+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgR1dBRUQKK0FEMjA7QUQyMDsxMTAwIDExNkIgMTFBRjtBRDIwOzExMDAgMTE2QiAxMUFGOyAjICjqtKA7IOq0oDsg4YSA4YWr4YavOyDqtKA7IOGEgOGFq+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgR1dBRUwKK0FEMjE7QUQyMTsxMTAwIDExNkIgMTFCMDtBRDIxOzExMDAgMTE2QiAxMUIwOyAjICjqtKE7IOq0oTsg4YSA4YWr4YawOyDqtKE7IOGEgOGFq+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgR1dBRUxHCitBRDIyO0FEMjI7MTEwMCAxMTZCIDExQjE7QUQyMjsxMTAwIDExNkIgMTFCMTsgIyAo6rSiOyDqtKI7IOGEgOGFq+GGsTsg6rSiOyDhhIDhhavhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEdXQUVMTQorQUQyMztBRDIzOzExMDAgMTE2QiAxMUIyO0FEMjM7MTEwMCAxMTZCIDExQjI7ICMgKOq0ozsg6rSjOyDhhIDhhavhhrI7IOq0ozsg4YSA4YWr4YayOyApIEhBTkdVTCBTWUxMQUJMRSBHV0FFTEIKK0FEMjQ7QUQyNDsxMTAwIDExNkIgMTFCMztBRDI0OzExMDAgMTE2QiAxMUIzOyAjICjqtKQ7IOq0pDsg4YSA4YWr4YazOyDqtKQ7IOGEgOGFq+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgR1dBRUxTCitBRDI1O0FEMjU7MTEwMCAxMTZCIDExQjQ7QUQyNTsxMTAwIDExNkIgMTFCNDsgIyAo6rSlOyDqtKU7IOGEgOGFq+GGtDsg6rSlOyDhhIDhhavhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEdXQUVMVAorQUQyNjtBRDI2OzExMDAgMTE2QiAxMUI1O0FEMjY7MTEwMCAxMTZCIDExQjU7ICMgKOq0pjsg6rSmOyDhhIDhhavhhrU7IOq0pjsg4YSA4YWr4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBHV0FFTFAKK0FEMjc7QUQyNzsxMTAwIDExNkIgMTFCNjtBRDI3OzExMDAgMTE2QiAxMUI2OyAjICjqtKc7IOq0pzsg4YSA4YWr4Ya2OyDqtKc7IOGEgOGFq+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgR1dBRUxICitBRDI4O0FEMjg7MTEwMCAxMTZCIDExQjc7QUQyODsxMTAwIDExNkIgMTFCNzsgIyAo6rSoOyDqtKg7IOGEgOGFq+GGtzsg6rSoOyDhhIDhhavhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEdXQUVNCitBRDI5O0FEMjk7MTEwMCAxMTZCIDExQjg7QUQyOTsxMTAwIDExNkIgMTFCODsgIyAo6rSpOyDqtKk7IOGEgOGFq+GGuDsg6rSpOyDhhIDhhavhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEdXQUVCCitBRDJBO0FEMkE7MTEwMCAxMTZCIDExQjk7QUQyQTsxMTAwIDExNkIgMTFCOTsgIyAo6rSqOyDqtKo7IOGEgOGFq+GGuTsg6rSqOyDhhIDhhavhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEdXQUVCUworQUQyQjtBRDJCOzExMDAgMTE2QiAxMUJBO0FEMkI7MTEwMCAxMTZCIDExQkE7ICMgKOq0qzsg6rSrOyDhhIDhhavhhro7IOq0qzsg4YSA4YWr4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBHV0FFUworQUQyQztBRDJDOzExMDAgMTE2QiAxMUJCO0FEMkM7MTEwMCAxMTZCIDExQkI7ICMgKOq0rDsg6rSsOyDhhIDhhavhhrs7IOq0rDsg4YSA4YWr4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBHV0FFU1MKK0FEMkQ7QUQyRDsxMTAwIDExNkIgMTFCQztBRDJEOzExMDAgMTE2QiAxMUJDOyAjICjqtK07IOq0rTsg4YSA4YWr4Ya8OyDqtK07IOGEgOGFq+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgR1dBRU5HCitBRDJFO0FEMkU7MTEwMCAxMTZCIDExQkQ7QUQyRTsxMTAwIDExNkIgMTFCRDsgIyAo6rSuOyDqtK47IOGEgOGFq+GGvTsg6rSuOyDhhIDhhavhhr07ICkgSEFOR1VMIFNZTExBQkxFIEdXQUVKCitBRDJGO0FEMkY7MTEwMCAxMTZCIDExQkU7QUQyRjsxMTAwIDExNkIgMTFCRTsgIyAo6rSvOyDqtK87IOGEgOGFq+GGvjsg6rSvOyDhhIDhhavhhr47ICkgSEFOR1VMIFNZTExBQkxFIEdXQUVDCitBRDMwO0FEMzA7MTEwMCAxMTZCIDExQkY7QUQzMDsxMTAwIDExNkIgMTFCRjsgIyAo6rSwOyDqtLA7IOGEgOGFq+GGvzsg6rSwOyDhhIDhhavhhr87ICkgSEFOR1VMIFNZTExBQkxFIEdXQUVLCitBRDMxO0FEMzE7MTEwMCAxMTZCIDExQzA7QUQzMTsxMTAwIDExNkIgMTFDMDsgIyAo6rSxOyDqtLE7IOGEgOGFq+GHgDsg6rSxOyDhhIDhhavhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEdXQUVUCitBRDMyO0FEMzI7MTEwMCAxMTZCIDExQzE7QUQzMjsxMTAwIDExNkIgMTFDMTsgIyAo6rSyOyDqtLI7IOGEgOGFq+GHgTsg6rSyOyDhhIDhhavhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEdXQUVQCitBRDMzO0FEMzM7MTEwMCAxMTZCIDExQzI7QUQzMzsxMTAwIDExNkIgMTFDMjsgIyAo6rSzOyDqtLM7IOGEgOGFq+GHgjsg6rSzOyDhhIDhhavhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEdXQUVICitBRDM0O0FEMzQ7MTEwMCAxMTZDO0FEMzQ7MTEwMCAxMTZDOyAjICjqtLQ7IOq0tDsg4YSA4YWsOyDqtLQ7IOGEgOGFrDsgKSBIQU5HVUwgU1lMTEFCTEUgR09FCitBRDM1O0FEMzU7MTEwMCAxMTZDIDExQTg7QUQzNTsxMTAwIDExNkMgMTFBODsgIyAo6rS1OyDqtLU7IOGEgOGFrOGGqDsg6rS1OyDhhIDhhazhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEdPRUcKK0FEMzY7QUQzNjsxMTAwIDExNkMgMTFBOTtBRDM2OzExMDAgMTE2QyAxMUE5OyAjICjqtLY7IOq0tjsg4YSA4YWs4YapOyDqtLY7IOGEgOGFrOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgR09FR0cKK0FEMzc7QUQzNzsxMTAwIDExNkMgMTFBQTtBRDM3OzExMDAgMTE2QyAxMUFBOyAjICjqtLc7IOq0tzsg4YSA4YWs4YaqOyDqtLc7IOGEgOGFrOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgR09FR1MKK0FEMzg7QUQzODsxMTAwIDExNkMgMTFBQjtBRDM4OzExMDAgMTE2QyAxMUFCOyAjICjqtLg7IOq0uDsg4YSA4YWs4YarOyDqtLg7IOGEgOGFrOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgR09FTgorQUQzOTtBRDM5OzExMDAgMTE2QyAxMUFDO0FEMzk7MTEwMCAxMTZDIDExQUM7ICMgKOq0uTsg6rS5OyDhhIDhhazhhqw7IOq0uTsg4YSA4YWs4YasOyApIEhBTkdVTCBTWUxMQUJMRSBHT0VOSgorQUQzQTtBRDNBOzExMDAgMTE2QyAxMUFEO0FEM0E7MTEwMCAxMTZDIDExQUQ7ICMgKOq0ujsg6rS6OyDhhIDhhazhhq07IOq0ujsg4YSA4YWs4YatOyApIEhBTkdVTCBTWUxMQUJMRSBHT0VOSAorQUQzQjtBRDNCOzExMDAgMTE2QyAxMUFFO0FEM0I7MTEwMCAxMTZDIDExQUU7ICMgKOq0uzsg6rS7OyDhhIDhhazhhq47IOq0uzsg4YSA4YWs4YauOyApIEhBTkdVTCBTWUxMQUJMRSBHT0VECitBRDNDO0FEM0M7MTEwMCAxMTZDIDExQUY7QUQzQzsxMTAwIDExNkMgMTFBRjsgIyAo6rS8OyDqtLw7IOGEgOGFrOGGrzsg6rS8OyDhhIDhhazhhq87ICkgSEFOR1VMIFNZTExBQkxFIEdPRUwKK0FEM0Q7QUQzRDsxMTAwIDExNkMgMTFCMDtBRDNEOzExMDAgMTE2QyAxMUIwOyAjICjqtL07IOq0vTsg4YSA4YWs4YawOyDqtL07IOGEgOGFrOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgR09FTEcKK0FEM0U7QUQzRTsxMTAwIDExNkMgMTFCMTtBRDNFOzExMDAgMTE2QyAxMUIxOyAjICjqtL47IOq0vjsg4YSA4YWs4YaxOyDqtL47IOGEgOGFrOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgR09FTE0KK0FEM0Y7QUQzRjsxMTAwIDExNkMgMTFCMjtBRDNGOzExMDAgMTE2QyAxMUIyOyAjICjqtL87IOq0vzsg4YSA4YWs4YayOyDqtL87IOGEgOGFrOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgR09FTEIKK0FENDA7QUQ0MDsxMTAwIDExNkMgMTFCMztBRDQwOzExMDAgMTE2QyAxMUIzOyAjICjqtYA7IOq1gDsg4YSA4YWs4YazOyDqtYA7IOGEgOGFrOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgR09FTFMKK0FENDE7QUQ0MTsxMTAwIDExNkMgMTFCNDtBRDQxOzExMDAgMTE2QyAxMUI0OyAjICjqtYE7IOq1gTsg4YSA4YWs4Ya0OyDqtYE7IOGEgOGFrOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgR09FTFQKK0FENDI7QUQ0MjsxMTAwIDExNkMgMTFCNTtBRDQyOzExMDAgMTE2QyAxMUI1OyAjICjqtYI7IOq1gjsg4YSA4YWs4Ya1OyDqtYI7IOGEgOGFrOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgR09FTFAKK0FENDM7QUQ0MzsxMTAwIDExNkMgMTFCNjtBRDQzOzExMDAgMTE2QyAxMUI2OyAjICjqtYM7IOq1gzsg4YSA4YWs4Ya2OyDqtYM7IOGEgOGFrOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgR09FTEgKK0FENDQ7QUQ0NDsxMTAwIDExNkMgMTFCNztBRDQ0OzExMDAgMTE2QyAxMUI3OyAjICjqtYQ7IOq1hDsg4YSA4YWs4Ya3OyDqtYQ7IOGEgOGFrOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgR09FTQorQUQ0NTtBRDQ1OzExMDAgMTE2QyAxMUI4O0FENDU7MTEwMCAxMTZDIDExQjg7ICMgKOq1hTsg6rWFOyDhhIDhhazhhrg7IOq1hTsg4YSA4YWs4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBHT0VCCitBRDQ2O0FENDY7MTEwMCAxMTZDIDExQjk7QUQ0NjsxMTAwIDExNkMgMTFCOTsgIyAo6rWGOyDqtYY7IOGEgOGFrOGGuTsg6rWGOyDhhIDhhazhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEdPRUJTCitBRDQ3O0FENDc7MTEwMCAxMTZDIDExQkE7QUQ0NzsxMTAwIDExNkMgMTFCQTsgIyAo6rWHOyDqtYc7IOGEgOGFrOGGujsg6rWHOyDhhIDhhazhhro7ICkgSEFOR1VMIFNZTExBQkxFIEdPRVMKK0FENDg7QUQ0ODsxMTAwIDExNkMgMTFCQjtBRDQ4OzExMDAgMTE2QyAxMUJCOyAjICjqtYg7IOq1iDsg4YSA4YWs4Ya7OyDqtYg7IOGEgOGFrOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgR09FU1MKK0FENDk7QUQ0OTsxMTAwIDExNkMgMTFCQztBRDQ5OzExMDAgMTE2QyAxMUJDOyAjICjqtYk7IOq1iTsg4YSA4YWs4Ya8OyDqtYk7IOGEgOGFrOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgR09FTkcKK0FENEE7QUQ0QTsxMTAwIDExNkMgMTFCRDtBRDRBOzExMDAgMTE2QyAxMUJEOyAjICjqtYo7IOq1ijsg4YSA4YWs4Ya9OyDqtYo7IOGEgOGFrOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgR09FSgorQUQ0QjtBRDRCOzExMDAgMTE2QyAxMUJFO0FENEI7MTEwMCAxMTZDIDExQkU7ICMgKOq1izsg6rWLOyDhhIDhhazhhr47IOq1izsg4YSA4YWs4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBHT0VDCitBRDRDO0FENEM7MTEwMCAxMTZDIDExQkY7QUQ0QzsxMTAwIDExNkMgMTFCRjsgIyAo6rWMOyDqtYw7IOGEgOGFrOGGvzsg6rWMOyDhhIDhhazhhr87ICkgSEFOR1VMIFNZTExBQkxFIEdPRUsKK0FENEQ7QUQ0RDsxMTAwIDExNkMgMTFDMDtBRDREOzExMDAgMTE2QyAxMUMwOyAjICjqtY07IOq1jTsg4YSA4YWs4YeAOyDqtY07IOGEgOGFrOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgR09FVAorQUQ0RTtBRDRFOzExMDAgMTE2QyAxMUMxO0FENEU7MTEwMCAxMTZDIDExQzE7ICMgKOq1jjsg6rWOOyDhhIDhhazhh4E7IOq1jjsg4YSA4YWs4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBHT0VQCitBRDRGO0FENEY7MTEwMCAxMTZDIDExQzI7QUQ0RjsxMTAwIDExNkMgMTFDMjsgIyAo6rWPOyDqtY87IOGEgOGFrOGHgjsg6rWPOyDhhIDhhazhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEdPRUgKK0FENTA7QUQ1MDsxMTAwIDExNkQ7QUQ1MDsxMTAwIDExNkQ7ICMgKOq1kDsg6rWQOyDhhIDhha07IOq1kDsg4YSA4YWtOyApIEhBTkdVTCBTWUxMQUJMRSBHWU8KK0FENTE7QUQ1MTsxMTAwIDExNkQgMTFBODtBRDUxOzExMDAgMTE2RCAxMUE4OyAjICjqtZE7IOq1kTsg4YSA4YWt4YaoOyDqtZE7IOGEgOGFreGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR1lPRworQUQ1MjtBRDUyOzExMDAgMTE2RCAxMUE5O0FENTI7MTEwMCAxMTZEIDExQTk7ICMgKOq1kjsg6rWSOyDhhIDhha3hhqk7IOq1kjsg4YSA4YWt4YapOyApIEhBTkdVTCBTWUxMQUJMRSBHWU9HRworQUQ1MztBRDUzOzExMDAgMTE2RCAxMUFBO0FENTM7MTEwMCAxMTZEIDExQUE7ICMgKOq1kzsg6rWTOyDhhIDhha3hhqo7IOq1kzsg4YSA4YWt4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBHWU9HUworQUQ1NDtBRDU0OzExMDAgMTE2RCAxMUFCO0FENTQ7MTEwMCAxMTZEIDExQUI7ICMgKOq1lDsg6rWUOyDhhIDhha3hhqs7IOq1lDsg4YSA4YWt4YarOyApIEhBTkdVTCBTWUxMQUJMRSBHWU9OCitBRDU1O0FENTU7MTEwMCAxMTZEIDExQUM7QUQ1NTsxMTAwIDExNkQgMTFBQzsgIyAo6rWVOyDqtZU7IOGEgOGFreGGrDsg6rWVOyDhhIDhha3hhqw7ICkgSEFOR1VMIFNZTExBQkxFIEdZT05KCitBRDU2O0FENTY7MTEwMCAxMTZEIDExQUQ7QUQ1NjsxMTAwIDExNkQgMTFBRDsgIyAo6rWWOyDqtZY7IOGEgOGFreGGrTsg6rWWOyDhhIDhha3hhq07ICkgSEFOR1VMIFNZTExBQkxFIEdZT05ICitBRDU3O0FENTc7MTEwMCAxMTZEIDExQUU7QUQ1NzsxMTAwIDExNkQgMTFBRTsgIyAo6rWXOyDqtZc7IOGEgOGFreGGrjsg6rWXOyDhhIDhha3hhq47ICkgSEFOR1VMIFNZTExBQkxFIEdZT0QKK0FENTg7QUQ1ODsxMTAwIDExNkQgMTFBRjtBRDU4OzExMDAgMTE2RCAxMUFGOyAjICjqtZg7IOq1mDsg4YSA4YWt4YavOyDqtZg7IOGEgOGFreGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgR1lPTAorQUQ1OTtBRDU5OzExMDAgMTE2RCAxMUIwO0FENTk7MTEwMCAxMTZEIDExQjA7ICMgKOq1mTsg6rWZOyDhhIDhha3hhrA7IOq1mTsg4YSA4YWt4YawOyApIEhBTkdVTCBTWUxMQUJMRSBHWU9MRworQUQ1QTtBRDVBOzExMDAgMTE2RCAxMUIxO0FENUE7MTEwMCAxMTZEIDExQjE7ICMgKOq1mjsg6rWaOyDhhIDhha3hhrE7IOq1mjsg4YSA4YWt4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHWU9MTQorQUQ1QjtBRDVCOzExMDAgMTE2RCAxMUIyO0FENUI7MTEwMCAxMTZEIDExQjI7ICMgKOq1mzsg6rWbOyDhhIDhha3hhrI7IOq1mzsg4YSA4YWt4YayOyApIEhBTkdVTCBTWUxMQUJMRSBHWU9MQgorQUQ1QztBRDVDOzExMDAgMTE2RCAxMUIzO0FENUM7MTEwMCAxMTZEIDExQjM7ICMgKOq1nDsg6rWcOyDhhIDhha3hhrM7IOq1nDsg4YSA4YWt4YazOyApIEhBTkdVTCBTWUxMQUJMRSBHWU9MUworQUQ1RDtBRDVEOzExMDAgMTE2RCAxMUI0O0FENUQ7MTEwMCAxMTZEIDExQjQ7ICMgKOq1nTsg6rWdOyDhhIDhha3hhrQ7IOq1nTsg4YSA4YWt4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHWU9MVAorQUQ1RTtBRDVFOzExMDAgMTE2RCAxMUI1O0FENUU7MTEwMCAxMTZEIDExQjU7ICMgKOq1njsg6rWeOyDhhIDhha3hhrU7IOq1njsg4YSA4YWt4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBHWU9MUAorQUQ1RjtBRDVGOzExMDAgMTE2RCAxMUI2O0FENUY7MTEwMCAxMTZEIDExQjY7ICMgKOq1nzsg6rWfOyDhhIDhha3hhrY7IOq1nzsg4YSA4YWt4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBHWU9MSAorQUQ2MDtBRDYwOzExMDAgMTE2RCAxMUI3O0FENjA7MTEwMCAxMTZEIDExQjc7ICMgKOq1oDsg6rWgOyDhhIDhha3hhrc7IOq1oDsg4YSA4YWt4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHWU9NCitBRDYxO0FENjE7MTEwMCAxMTZEIDExQjg7QUQ2MTsxMTAwIDExNkQgMTFCODsgIyAo6rWhOyDqtaE7IOGEgOGFreGGuDsg6rWhOyDhhIDhha3hhrg7ICkgSEFOR1VMIFNZTExBQkxFIEdZT0IKK0FENjI7QUQ2MjsxMTAwIDExNkQgMTFCOTtBRDYyOzExMDAgMTE2RCAxMUI5OyAjICjqtaI7IOq1ojsg4YSA4YWt4Ya5OyDqtaI7IOGEgOGFreGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgR1lPQlMKK0FENjM7QUQ2MzsxMTAwIDExNkQgMTFCQTtBRDYzOzExMDAgMTE2RCAxMUJBOyAjICjqtaM7IOq1ozsg4YSA4YWt4Ya6OyDqtaM7IOGEgOGFreGGujsgKSBIQU5HVUwgU1lMTEFCTEUgR1lPUworQUQ2NDtBRDY0OzExMDAgMTE2RCAxMUJCO0FENjQ7MTEwMCAxMTZEIDExQkI7ICMgKOq1pDsg6rWkOyDhhIDhha3hhrs7IOq1pDsg4YSA4YWt4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBHWU9TUworQUQ2NTtBRDY1OzExMDAgMTE2RCAxMUJDO0FENjU7MTEwMCAxMTZEIDExQkM7ICMgKOq1pTsg6rWlOyDhhIDhha3hhrw7IOq1pTsg4YSA4YWt4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBHWU9ORworQUQ2NjtBRDY2OzExMDAgMTE2RCAxMUJEO0FENjY7MTEwMCAxMTZEIDExQkQ7ICMgKOq1pjsg6rWmOyDhhIDhha3hhr07IOq1pjsg4YSA4YWt4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHWU9KCitBRDY3O0FENjc7MTEwMCAxMTZEIDExQkU7QUQ2NzsxMTAwIDExNkQgMTFCRTsgIyAo6rWnOyDqtac7IOGEgOGFreGGvjsg6rWnOyDhhIDhha3hhr47ICkgSEFOR1VMIFNZTExBQkxFIEdZT0MKK0FENjg7QUQ2ODsxMTAwIDExNkQgMTFCRjtBRDY4OzExMDAgMTE2RCAxMUJGOyAjICjqtag7IOq1qDsg4YSA4YWt4Ya/OyDqtag7IOGEgOGFreGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgR1lPSworQUQ2OTtBRDY5OzExMDAgMTE2RCAxMUMwO0FENjk7MTEwMCAxMTZEIDExQzA7ICMgKOq1qTsg6rWpOyDhhIDhha3hh4A7IOq1qTsg4YSA4YWt4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHWU9UCitBRDZBO0FENkE7MTEwMCAxMTZEIDExQzE7QUQ2QTsxMTAwIDExNkQgMTFDMTsgIyAo6rWqOyDqtao7IOGEgOGFreGHgTsg6rWqOyDhhIDhha3hh4E7ICkgSEFOR1VMIFNZTExBQkxFIEdZT1AKK0FENkI7QUQ2QjsxMTAwIDExNkQgMTFDMjtBRDZCOzExMDAgMTE2RCAxMUMyOyAjICjqtas7IOq1qzsg4YSA4YWt4YeCOyDqtas7IOGEgOGFreGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgR1lPSAorQUQ2QztBRDZDOzExMDAgMTE2RTtBRDZDOzExMDAgMTE2RTsgIyAo6rWsOyDqtaw7IOGEgOGFrjsg6rWsOyDhhIDhha47ICkgSEFOR1VMIFNZTExBQkxFIEdVCitBRDZEO0FENkQ7MTEwMCAxMTZFIDExQTg7QUQ2RDsxMTAwIDExNkUgMTFBODsgIyAo6rWtOyDqta07IOGEgOGFruGGqDsg6rWtOyDhhIDhha7hhqg7ICkgSEFOR1VMIFNZTExBQkxFIEdVRworQUQ2RTtBRDZFOzExMDAgMTE2RSAxMUE5O0FENkU7MTEwMCAxMTZFIDExQTk7ICMgKOq1rjsg6rWuOyDhhIDhha7hhqk7IOq1rjsg4YSA4YWu4YapOyApIEhBTkdVTCBTWUxMQUJMRSBHVUdHCitBRDZGO0FENkY7MTEwMCAxMTZFIDExQUE7QUQ2RjsxMTAwIDExNkUgMTFBQTsgIyAo6rWvOyDqta87IOGEgOGFruGGqjsg6rWvOyDhhIDhha7hhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdVR1MKK0FENzA7QUQ3MDsxMTAwIDExNkUgMTFBQjtBRDcwOzExMDAgMTE2RSAxMUFCOyAjICjqtbA7IOq1sDsg4YSA4YWu4YarOyDqtbA7IOGEgOGFruGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgR1VOCitBRDcxO0FENzE7MTEwMCAxMTZFIDExQUM7QUQ3MTsxMTAwIDExNkUgMTFBQzsgIyAo6rWxOyDqtbE7IOGEgOGFruGGrDsg6rWxOyDhhIDhha7hhqw7ICkgSEFOR1VMIFNZTExBQkxFIEdVTkoKK0FENzI7QUQ3MjsxMTAwIDExNkUgMTFBRDtBRDcyOzExMDAgMTE2RSAxMUFEOyAjICjqtbI7IOq1sjsg4YSA4YWu4YatOyDqtbI7IOGEgOGFruGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR1VOSAorQUQ3MztBRDczOzExMDAgMTE2RSAxMUFFO0FENzM7MTEwMCAxMTZFIDExQUU7ICMgKOq1szsg6rWzOyDhhIDhha7hhq47IOq1szsg4YSA4YWu4YauOyApIEhBTkdVTCBTWUxMQUJMRSBHVUQKK0FENzQ7QUQ3NDsxMTAwIDExNkUgMTFBRjtBRDc0OzExMDAgMTE2RSAxMUFGOyAjICjqtbQ7IOq1tDsg4YSA4YWu4YavOyDqtbQ7IOGEgOGFruGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgR1VMCitBRDc1O0FENzU7MTEwMCAxMTZFIDExQjA7QUQ3NTsxMTAwIDExNkUgMTFCMDsgIyAo6rW1OyDqtbU7IOGEgOGFruGGsDsg6rW1OyDhhIDhha7hhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdVTEcKK0FENzY7QUQ3NjsxMTAwIDExNkUgMTFCMTtBRDc2OzExMDAgMTE2RSAxMUIxOyAjICjqtbY7IOq1tjsg4YSA4YWu4YaxOyDqtbY7IOGEgOGFruGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgR1VMTQorQUQ3NztBRDc3OzExMDAgMTE2RSAxMUIyO0FENzc7MTEwMCAxMTZFIDExQjI7ICMgKOq1tzsg6rW3OyDhhIDhha7hhrI7IOq1tzsg4YSA4YWu4YayOyApIEhBTkdVTCBTWUxMQUJMRSBHVUxCCitBRDc4O0FENzg7MTEwMCAxMTZFIDExQjM7QUQ3ODsxMTAwIDExNkUgMTFCMzsgIyAo6rW4OyDqtbg7IOGEgOGFruGGszsg6rW4OyDhhIDhha7hhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdVTFMKK0FENzk7QUQ3OTsxMTAwIDExNkUgMTFCNDtBRDc5OzExMDAgMTE2RSAxMUI0OyAjICjqtbk7IOq1uTsg4YSA4YWu4Ya0OyDqtbk7IOGEgOGFruGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgR1VMVAorQUQ3QTtBRDdBOzExMDAgMTE2RSAxMUI1O0FEN0E7MTEwMCAxMTZFIDExQjU7ICMgKOq1ujsg6rW6OyDhhIDhha7hhrU7IOq1ujsg4YSA4YWu4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBHVUxQCitBRDdCO0FEN0I7MTEwMCAxMTZFIDExQjY7QUQ3QjsxMTAwIDExNkUgMTFCNjsgIyAo6rW7OyDqtbs7IOGEgOGFruGGtjsg6rW7OyDhhIDhha7hhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdVTEgKK0FEN0M7QUQ3QzsxMTAwIDExNkUgMTFCNztBRDdDOzExMDAgMTE2RSAxMUI3OyAjICjqtbw7IOq1vDsg4YSA4YWu4Ya3OyDqtbw7IOGEgOGFruGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgR1VNCitBRDdEO0FEN0Q7MTEwMCAxMTZFIDExQjg7QUQ3RDsxMTAwIDExNkUgMTFCODsgIyAo6rW9OyDqtb07IOGEgOGFruGGuDsg6rW9OyDhhIDhha7hhrg7ICkgSEFOR1VMIFNZTExBQkxFIEdVQgorQUQ3RTtBRDdFOzExMDAgMTE2RSAxMUI5O0FEN0U7MTEwMCAxMTZFIDExQjk7ICMgKOq1vjsg6rW+OyDhhIDhha7hhrk7IOq1vjsg4YSA4YWu4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHVUJTCitBRDdGO0FEN0Y7MTEwMCAxMTZFIDExQkE7QUQ3RjsxMTAwIDExNkUgMTFCQTsgIyAo6rW/OyDqtb87IOGEgOGFruGGujsg6rW/OyDhhIDhha7hhro7ICkgSEFOR1VMIFNZTExBQkxFIEdVUworQUQ4MDtBRDgwOzExMDAgMTE2RSAxMUJCO0FEODA7MTEwMCAxMTZFIDExQkI7ICMgKOq2gDsg6raAOyDhhIDhha7hhrs7IOq2gDsg4YSA4YWu4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBHVVNTCitBRDgxO0FEODE7MTEwMCAxMTZFIDExQkM7QUQ4MTsxMTAwIDExNkUgMTFCQzsgIyAo6raBOyDqtoE7IOGEgOGFruGGvDsg6raBOyDhhIDhha7hhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdVTkcKK0FEODI7QUQ4MjsxMTAwIDExNkUgMTFCRDtBRDgyOzExMDAgMTE2RSAxMUJEOyAjICjqtoI7IOq2gjsg4YSA4YWu4Ya9OyDqtoI7IOGEgOGFruGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgR1VKCitBRDgzO0FEODM7MTEwMCAxMTZFIDExQkU7QUQ4MzsxMTAwIDExNkUgMTFCRTsgIyAo6raDOyDqtoM7IOGEgOGFruGGvjsg6raDOyDhhIDhha7hhr47ICkgSEFOR1VMIFNZTExBQkxFIEdVQworQUQ4NDtBRDg0OzExMDAgMTE2RSAxMUJGO0FEODQ7MTEwMCAxMTZFIDExQkY7ICMgKOq2hDsg6raEOyDhhIDhha7hhr87IOq2hDsg4YSA4YWu4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHVUsKK0FEODU7QUQ4NTsxMTAwIDExNkUgMTFDMDtBRDg1OzExMDAgMTE2RSAxMUMwOyAjICjqtoU7IOq2hTsg4YSA4YWu4YeAOyDqtoU7IOGEgOGFruGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgR1VUCitBRDg2O0FEODY7MTEwMCAxMTZFIDExQzE7QUQ4NjsxMTAwIDExNkUgMTFDMTsgIyAo6raGOyDqtoY7IOGEgOGFruGHgTsg6raGOyDhhIDhha7hh4E7ICkgSEFOR1VMIFNZTExBQkxFIEdVUAorQUQ4NztBRDg3OzExMDAgMTE2RSAxMUMyO0FEODc7MTEwMCAxMTZFIDExQzI7ICMgKOq2hzsg6raHOyDhhIDhha7hh4I7IOq2hzsg4YSA4YWu4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHVUgKK0FEODg7QUQ4ODsxMTAwIDExNkY7QUQ4ODsxMTAwIDExNkY7ICMgKOq2iDsg6raIOyDhhIDhha87IOq2iDsg4YSA4YWvOyApIEhBTkdVTCBTWUxMQUJMRSBHV0VPCitBRDg5O0FEODk7MTEwMCAxMTZGIDExQTg7QUQ4OTsxMTAwIDExNkYgMTFBODsgIyAo6raJOyDqtok7IOGEgOGFr+GGqDsg6raJOyDhhIDhha/hhqg7ICkgSEFOR1VMIFNZTExBQkxFIEdXRU9HCitBRDhBO0FEOEE7MTEwMCAxMTZGIDExQTk7QUQ4QTsxMTAwIDExNkYgMTFBOTsgIyAo6raKOyDqtoo7IOGEgOGFr+GGqTsg6raKOyDhhIDhha/hhqk7ICkgSEFOR1VMIFNZTExBQkxFIEdXRU9HRworQUQ4QjtBRDhCOzExMDAgMTE2RiAxMUFBO0FEOEI7MTEwMCAxMTZGIDExQUE7ICMgKOq2izsg6raLOyDhhIDhha/hhqo7IOq2izsg4YSA4YWv4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBHV0VPR1MKK0FEOEM7QUQ4QzsxMTAwIDExNkYgMTFBQjtBRDhDOzExMDAgMTE2RiAxMUFCOyAjICjqtow7IOq2jDsg4YSA4YWv4YarOyDqtow7IOGEgOGFr+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgR1dFT04KK0FEOEQ7QUQ4RDsxMTAwIDExNkYgMTFBQztBRDhEOzExMDAgMTE2RiAxMUFDOyAjICjqto07IOq2jTsg4YSA4YWv4YasOyDqto07IOGEgOGFr+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgR1dFT05KCitBRDhFO0FEOEU7MTEwMCAxMTZGIDExQUQ7QUQ4RTsxMTAwIDExNkYgMTFBRDsgIyAo6raOOyDqto47IOGEgOGFr+GGrTsg6raOOyDhhIDhha/hhq07ICkgSEFOR1VMIFNZTExBQkxFIEdXRU9OSAorQUQ4RjtBRDhGOzExMDAgMTE2RiAxMUFFO0FEOEY7MTEwMCAxMTZGIDExQUU7ICMgKOq2jzsg6raPOyDhhIDhha/hhq47IOq2jzsg4YSA4YWv4YauOyApIEhBTkdVTCBTWUxMQUJMRSBHV0VPRAorQUQ5MDtBRDkwOzExMDAgMTE2RiAxMUFGO0FEOTA7MTEwMCAxMTZGIDExQUY7ICMgKOq2kDsg6raQOyDhhIDhha/hhq87IOq2kDsg4YSA4YWv4YavOyApIEhBTkdVTCBTWUxMQUJMRSBHV0VPTAorQUQ5MTtBRDkxOzExMDAgMTE2RiAxMUIwO0FEOTE7MTEwMCAxMTZGIDExQjA7ICMgKOq2kTsg6raROyDhhIDhha/hhrA7IOq2kTsg4YSA4YWv4YawOyApIEhBTkdVTCBTWUxMQUJMRSBHV0VPTEcKK0FEOTI7QUQ5MjsxMTAwIDExNkYgMTFCMTtBRDkyOzExMDAgMTE2RiAxMUIxOyAjICjqtpI7IOq2kjsg4YSA4YWv4YaxOyDqtpI7IOGEgOGFr+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgR1dFT0xNCitBRDkzO0FEOTM7MTEwMCAxMTZGIDExQjI7QUQ5MzsxMTAwIDExNkYgMTFCMjsgIyAo6raTOyDqtpM7IOGEgOGFr+GGsjsg6raTOyDhhIDhha/hhrI7ICkgSEFOR1VMIFNZTExBQkxFIEdXRU9MQgorQUQ5NDtBRDk0OzExMDAgMTE2RiAxMUIzO0FEOTQ7MTEwMCAxMTZGIDExQjM7ICMgKOq2lDsg6raUOyDhhIDhha/hhrM7IOq2lDsg4YSA4YWv4YazOyApIEhBTkdVTCBTWUxMQUJMRSBHV0VPTFMKK0FEOTU7QUQ5NTsxMTAwIDExNkYgMTFCNDtBRDk1OzExMDAgMTE2RiAxMUI0OyAjICjqtpU7IOq2lTsg4YSA4YWv4Ya0OyDqtpU7IOGEgOGFr+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgR1dFT0xUCitBRDk2O0FEOTY7MTEwMCAxMTZGIDExQjU7QUQ5NjsxMTAwIDExNkYgMTFCNTsgIyAo6raWOyDqtpY7IOGEgOGFr+GGtTsg6raWOyDhhIDhha/hhrU7ICkgSEFOR1VMIFNZTExBQkxFIEdXRU9MUAorQUQ5NztBRDk3OzExMDAgMTE2RiAxMUI2O0FEOTc7MTEwMCAxMTZGIDExQjY7ICMgKOq2lzsg6raXOyDhhIDhha/hhrY7IOq2lzsg4YSA4YWv4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBHV0VPTEgKK0FEOTg7QUQ5ODsxMTAwIDExNkYgMTFCNztBRDk4OzExMDAgMTE2RiAxMUI3OyAjICjqtpg7IOq2mDsg4YSA4YWv4Ya3OyDqtpg7IOGEgOGFr+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgR1dFT00KK0FEOTk7QUQ5OTsxMTAwIDExNkYgMTFCODtBRDk5OzExMDAgMTE2RiAxMUI4OyAjICjqtpk7IOq2mTsg4YSA4YWv4Ya4OyDqtpk7IOGEgOGFr+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgR1dFT0IKK0FEOUE7QUQ5QTsxMTAwIDExNkYgMTFCOTtBRDlBOzExMDAgMTE2RiAxMUI5OyAjICjqtpo7IOq2mjsg4YSA4YWv4Ya5OyDqtpo7IOGEgOGFr+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgR1dFT0JTCitBRDlCO0FEOUI7MTEwMCAxMTZGIDExQkE7QUQ5QjsxMTAwIDExNkYgMTFCQTsgIyAo6rabOyDqtps7IOGEgOGFr+GGujsg6rabOyDhhIDhha/hhro7ICkgSEFOR1VMIFNZTExBQkxFIEdXRU9TCitBRDlDO0FEOUM7MTEwMCAxMTZGIDExQkI7QUQ5QzsxMTAwIDExNkYgMTFCQjsgIyAo6racOyDqtpw7IOGEgOGFr+GGuzsg6racOyDhhIDhha/hhrs7ICkgSEFOR1VMIFNZTExBQkxFIEdXRU9TUworQUQ5RDtBRDlEOzExMDAgMTE2RiAxMUJDO0FEOUQ7MTEwMCAxMTZGIDExQkM7ICMgKOq2nTsg6radOyDhhIDhha/hhrw7IOq2nTsg4YSA4YWv4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBHV0VPTkcKK0FEOUU7QUQ5RTsxMTAwIDExNkYgMTFCRDtBRDlFOzExMDAgMTE2RiAxMUJEOyAjICjqtp47IOq2njsg4YSA4YWv4Ya9OyDqtp47IOGEgOGFr+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgR1dFT0oKK0FEOUY7QUQ5RjsxMTAwIDExNkYgMTFCRTtBRDlGOzExMDAgMTE2RiAxMUJFOyAjICjqtp87IOq2nzsg4YSA4YWv4Ya+OyDqtp87IOGEgOGFr+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgR1dFT0MKK0FEQTA7QURBMDsxMTAwIDExNkYgMTFCRjtBREEwOzExMDAgMTE2RiAxMUJGOyAjICjqtqA7IOq2oDsg4YSA4YWv4Ya/OyDqtqA7IOGEgOGFr+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgR1dFT0sKK0FEQTE7QURBMTsxMTAwIDExNkYgMTFDMDtBREExOzExMDAgMTE2RiAxMUMwOyAjICjqtqE7IOq2oTsg4YSA4YWv4YeAOyDqtqE7IOGEgOGFr+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgR1dFT1QKK0FEQTI7QURBMjsxMTAwIDExNkYgMTFDMTtBREEyOzExMDAgMTE2RiAxMUMxOyAjICjqtqI7IOq2ojsg4YSA4YWv4YeBOyDqtqI7IOGEgOGFr+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgR1dFT1AKK0FEQTM7QURBMzsxMTAwIDExNkYgMTFDMjtBREEzOzExMDAgMTE2RiAxMUMyOyAjICjqtqM7IOq2ozsg4YSA4YWv4YeCOyDqtqM7IOGEgOGFr+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgR1dFT0gKK0FEQTQ7QURBNDsxMTAwIDExNzA7QURBNDsxMTAwIDExNzA7ICMgKOq2pDsg6rakOyDhhIDhhbA7IOq2pDsg4YSA4YWwOyApIEhBTkdVTCBTWUxMQUJMRSBHV0UKK0FEQTU7QURBNTsxMTAwIDExNzAgMTFBODtBREE1OzExMDAgMTE3MCAxMUE4OyAjICjqtqU7IOq2pTsg4YSA4YWw4YaoOyDqtqU7IOGEgOGFsOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR1dFRworQURBNjtBREE2OzExMDAgMTE3MCAxMUE5O0FEQTY7MTEwMCAxMTcwIDExQTk7ICMgKOq2pjsg6ramOyDhhIDhhbDhhqk7IOq2pjsg4YSA4YWw4YapOyApIEhBTkdVTCBTWUxMQUJMRSBHV0VHRworQURBNztBREE3OzExMDAgMTE3MCAxMUFBO0FEQTc7MTEwMCAxMTcwIDExQUE7ICMgKOq2pzsg6ranOyDhhIDhhbDhhqo7IOq2pzsg4YSA4YWw4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBHV0VHUworQURBODtBREE4OzExMDAgMTE3MCAxMUFCO0FEQTg7MTEwMCAxMTcwIDExQUI7ICMgKOq2qDsg6raoOyDhhIDhhbDhhqs7IOq2qDsg4YSA4YWw4YarOyApIEhBTkdVTCBTWUxMQUJMRSBHV0VOCitBREE5O0FEQTk7MTEwMCAxMTcwIDExQUM7QURBOTsxMTAwIDExNzAgMTFBQzsgIyAo6rapOyDqtqk7IOGEgOGFsOGGrDsg6rapOyDhhIDhhbDhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEdXRU5KCitBREFBO0FEQUE7MTEwMCAxMTcwIDExQUQ7QURBQTsxMTAwIDExNzAgMTFBRDsgIyAo6raqOyDqtqo7IOGEgOGFsOGGrTsg6raqOyDhhIDhhbDhhq07ICkgSEFOR1VMIFNZTExBQkxFIEdXRU5ICitBREFCO0FEQUI7MTEwMCAxMTcwIDExQUU7QURBQjsxMTAwIDExNzAgMTFBRTsgIyAo6rarOyDqtqs7IOGEgOGFsOGGrjsg6rarOyDhhIDhhbDhhq47ICkgSEFOR1VMIFNZTExBQkxFIEdXRUQKK0FEQUM7QURBQzsxMTAwIDExNzAgMTFBRjtBREFDOzExMDAgMTE3MCAxMUFGOyAjICjqtqw7IOq2rDsg4YSA4YWw4YavOyDqtqw7IOGEgOGFsOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgR1dFTAorQURBRDtBREFEOzExMDAgMTE3MCAxMUIwO0FEQUQ7MTEwMCAxMTcwIDExQjA7ICMgKOq2rTsg6ratOyDhhIDhhbDhhrA7IOq2rTsg4YSA4YWw4YawOyApIEhBTkdVTCBTWUxMQUJMRSBHV0VMRworQURBRTtBREFFOzExMDAgMTE3MCAxMUIxO0FEQUU7MTEwMCAxMTcwIDExQjE7ICMgKOq2rjsg6rauOyDhhIDhhbDhhrE7IOq2rjsg4YSA4YWw4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHV0VMTQorQURBRjtBREFGOzExMDAgMTE3MCAxMUIyO0FEQUY7MTEwMCAxMTcwIDExQjI7ICMgKOq2rzsg6ravOyDhhIDhhbDhhrI7IOq2rzsg4YSA4YWw4YayOyApIEhBTkdVTCBTWUxMQUJMRSBHV0VMQgorQURCMDtBREIwOzExMDAgMTE3MCAxMUIzO0FEQjA7MTEwMCAxMTcwIDExQjM7ICMgKOq2sDsg6rawOyDhhIDhhbDhhrM7IOq2sDsg4YSA4YWw4YazOyApIEhBTkdVTCBTWUxMQUJMRSBHV0VMUworQURCMTtBREIxOzExMDAgMTE3MCAxMUI0O0FEQjE7MTEwMCAxMTcwIDExQjQ7ICMgKOq2sTsg6raxOyDhhIDhhbDhhrQ7IOq2sTsg4YSA4YWw4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHV0VMVAorQURCMjtBREIyOzExMDAgMTE3MCAxMUI1O0FEQjI7MTEwMCAxMTcwIDExQjU7ICMgKOq2sjsg6rayOyDhhIDhhbDhhrU7IOq2sjsg4YSA4YWw4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBHV0VMUAorQURCMztBREIzOzExMDAgMTE3MCAxMUI2O0FEQjM7MTEwMCAxMTcwIDExQjY7ICMgKOq2szsg6razOyDhhIDhhbDhhrY7IOq2szsg4YSA4YWw4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBHV0VMSAorQURCNDtBREI0OzExMDAgMTE3MCAxMUI3O0FEQjQ7MTEwMCAxMTcwIDExQjc7ICMgKOq2tDsg6ra0OyDhhIDhhbDhhrc7IOq2tDsg4YSA4YWw4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHV0VNCitBREI1O0FEQjU7MTEwMCAxMTcwIDExQjg7QURCNTsxMTAwIDExNzAgMTFCODsgIyAo6ra1OyDqtrU7IOGEgOGFsOGGuDsg6ra1OyDhhIDhhbDhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEdXRUIKK0FEQjY7QURCNjsxMTAwIDExNzAgMTFCOTtBREI2OzExMDAgMTE3MCAxMUI5OyAjICjqtrY7IOq2tjsg4YSA4YWw4Ya5OyDqtrY7IOGEgOGFsOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgR1dFQlMKK0FEQjc7QURCNzsxMTAwIDExNzAgMTFCQTtBREI3OzExMDAgMTE3MCAxMUJBOyAjICjqtrc7IOq2tzsg4YSA4YWw4Ya6OyDqtrc7IOGEgOGFsOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgR1dFUworQURCODtBREI4OzExMDAgMTE3MCAxMUJCO0FEQjg7MTEwMCAxMTcwIDExQkI7ICMgKOq2uDsg6ra4OyDhhIDhhbDhhrs7IOq2uDsg4YSA4YWw4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBHV0VTUworQURCOTtBREI5OzExMDAgMTE3MCAxMUJDO0FEQjk7MTEwMCAxMTcwIDExQkM7ICMgKOq2uTsg6ra5OyDhhIDhhbDhhrw7IOq2uTsg4YSA4YWw4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBHV0VORworQURCQTtBREJBOzExMDAgMTE3MCAxMUJEO0FEQkE7MTEwMCAxMTcwIDExQkQ7ICMgKOq2ujsg6ra6OyDhhIDhhbDhhr07IOq2ujsg4YSA4YWw4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHV0VKCitBREJCO0FEQkI7MTEwMCAxMTcwIDExQkU7QURCQjsxMTAwIDExNzAgMTFCRTsgIyAo6ra7OyDqtrs7IOGEgOGFsOGGvjsg6ra7OyDhhIDhhbDhhr47ICkgSEFOR1VMIFNZTExBQkxFIEdXRUMKK0FEQkM7QURCQzsxMTAwIDExNzAgMTFCRjtBREJDOzExMDAgMTE3MCAxMUJGOyAjICjqtrw7IOq2vDsg4YSA4YWw4Ya/OyDqtrw7IOGEgOGFsOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgR1dFSworQURCRDtBREJEOzExMDAgMTE3MCAxMUMwO0FEQkQ7MTEwMCAxMTcwIDExQzA7ICMgKOq2vTsg6ra9OyDhhIDhhbDhh4A7IOq2vTsg4YSA4YWw4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHV0VUCitBREJFO0FEQkU7MTEwMCAxMTcwIDExQzE7QURCRTsxMTAwIDExNzAgMTFDMTsgIyAo6ra+OyDqtr47IOGEgOGFsOGHgTsg6ra+OyDhhIDhhbDhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEdXRVAKK0FEQkY7QURCRjsxMTAwIDExNzAgMTFDMjtBREJGOzExMDAgMTE3MCAxMUMyOyAjICjqtr87IOq2vzsg4YSA4YWw4YeCOyDqtr87IOGEgOGFsOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgR1dFSAorQURDMDtBREMwOzExMDAgMTE3MTtBREMwOzExMDAgMTE3MTsgIyAo6reAOyDqt4A7IOGEgOGFsTsg6reAOyDhhIDhhbE7ICkgSEFOR1VMIFNZTExBQkxFIEdXSQorQURDMTtBREMxOzExMDAgMTE3MSAxMUE4O0FEQzE7MTEwMCAxMTcxIDExQTg7ICMgKOq3gTsg6reBOyDhhIDhhbHhhqg7IOq3gTsg4YSA4YWx4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBHV0lHCitBREMyO0FEQzI7MTEwMCAxMTcxIDExQTk7QURDMjsxMTAwIDExNzEgMTFBOTsgIyAo6reCOyDqt4I7IOGEgOGFseGGqTsg6reCOyDhhIDhhbHhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEdXSUdHCitBREMzO0FEQzM7MTEwMCAxMTcxIDExQUE7QURDMzsxMTAwIDExNzEgMTFBQTsgIyAo6reDOyDqt4M7IOGEgOGFseGGqjsg6reDOyDhhIDhhbHhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdXSUdTCitBREM0O0FEQzQ7MTEwMCAxMTcxIDExQUI7QURDNDsxMTAwIDExNzEgMTFBQjsgIyAo6reEOyDqt4Q7IOGEgOGFseGGqzsg6reEOyDhhIDhhbHhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEdXSU4KK0FEQzU7QURDNTsxMTAwIDExNzEgMTFBQztBREM1OzExMDAgMTE3MSAxMUFDOyAjICjqt4U7IOq3hTsg4YSA4YWx4YasOyDqt4U7IOGEgOGFseGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgR1dJTkoKK0FEQzY7QURDNjsxMTAwIDExNzEgMTFBRDtBREM2OzExMDAgMTE3MSAxMUFEOyAjICjqt4Y7IOq3hjsg4YSA4YWx4YatOyDqt4Y7IOGEgOGFseGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR1dJTkgKK0FEQzc7QURDNzsxMTAwIDExNzEgMTFBRTtBREM3OzExMDAgMTE3MSAxMUFFOyAjICjqt4c7IOq3hzsg4YSA4YWx4YauOyDqt4c7IOGEgOGFseGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgR1dJRAorQURDODtBREM4OzExMDAgMTE3MSAxMUFGO0FEQzg7MTEwMCAxMTcxIDExQUY7ICMgKOq3iDsg6reIOyDhhIDhhbHhhq87IOq3iDsg4YSA4YWx4YavOyApIEhBTkdVTCBTWUxMQUJMRSBHV0lMCitBREM5O0FEQzk7MTEwMCAxMTcxIDExQjA7QURDOTsxMTAwIDExNzEgMTFCMDsgIyAo6reJOyDqt4k7IOGEgOGFseGGsDsg6reJOyDhhIDhhbHhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdXSUxHCitBRENBO0FEQ0E7MTEwMCAxMTcxIDExQjE7QURDQTsxMTAwIDExNzEgMTFCMTsgIyAo6reKOyDqt4o7IOGEgOGFseGGsTsg6reKOyDhhIDhhbHhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEdXSUxNCitBRENCO0FEQ0I7MTEwMCAxMTcxIDExQjI7QURDQjsxMTAwIDExNzEgMTFCMjsgIyAo6reLOyDqt4s7IOGEgOGFseGGsjsg6reLOyDhhIDhhbHhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEdXSUxCCitBRENDO0FEQ0M7MTEwMCAxMTcxIDExQjM7QURDQzsxMTAwIDExNzEgMTFCMzsgIyAo6reMOyDqt4w7IOGEgOGFseGGszsg6reMOyDhhIDhhbHhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdXSUxTCitBRENEO0FEQ0Q7MTEwMCAxMTcxIDExQjQ7QURDRDsxMTAwIDExNzEgMTFCNDsgIyAo6reNOyDqt407IOGEgOGFseGGtDsg6reNOyDhhIDhhbHhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEdXSUxUCitBRENFO0FEQ0U7MTEwMCAxMTcxIDExQjU7QURDRTsxMTAwIDExNzEgMTFCNTsgIyAo6reOOyDqt447IOGEgOGFseGGtTsg6reOOyDhhIDhhbHhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEdXSUxQCitBRENGO0FEQ0Y7MTEwMCAxMTcxIDExQjY7QURDRjsxMTAwIDExNzEgMTFCNjsgIyAo6rePOyDqt487IOGEgOGFseGGtjsg6rePOyDhhIDhhbHhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdXSUxICitBREQwO0FERDA7MTEwMCAxMTcxIDExQjc7QUREMDsxMTAwIDExNzEgMTFCNzsgIyAo6reQOyDqt5A7IOGEgOGFseGGtzsg6reQOyDhhIDhhbHhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEdXSU0KK0FERDE7QUREMTsxMTAwIDExNzEgMTFCODtBREQxOzExMDAgMTE3MSAxMUI4OyAjICjqt5E7IOq3kTsg4YSA4YWx4Ya4OyDqt5E7IOGEgOGFseGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgR1dJQgorQUREMjtBREQyOzExMDAgMTE3MSAxMUI5O0FERDI7MTEwMCAxMTcxIDExQjk7ICMgKOq3kjsg6reSOyDhhIDhhbHhhrk7IOq3kjsg4YSA4YWx4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHV0lCUworQUREMztBREQzOzExMDAgMTE3MSAxMUJBO0FERDM7MTEwMCAxMTcxIDExQkE7ICMgKOq3kzsg6reTOyDhhIDhhbHhhro7IOq3kzsg4YSA4YWx4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBHV0lTCitBREQ0O0FERDQ7MTEwMCAxMTcxIDExQkI7QURENDsxMTAwIDExNzEgMTFCQjsgIyAo6reUOyDqt5Q7IOGEgOGFseGGuzsg6reUOyDhhIDhhbHhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEdXSVNTCitBREQ1O0FERDU7MTEwMCAxMTcxIDExQkM7QURENTsxMTAwIDExNzEgMTFCQzsgIyAo6reVOyDqt5U7IOGEgOGFseGGvDsg6reVOyDhhIDhhbHhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdXSU5HCitBREQ2O0FERDY7MTEwMCAxMTcxIDExQkQ7QURENjsxMTAwIDExNzEgMTFCRDsgIyAo6reWOyDqt5Y7IOGEgOGFseGGvTsg6reWOyDhhIDhhbHhhr07ICkgSEFOR1VMIFNZTExBQkxFIEdXSUoKK0FERDc7QURENzsxMTAwIDExNzEgMTFCRTtBREQ3OzExMDAgMTE3MSAxMUJFOyAjICjqt5c7IOq3lzsg4YSA4YWx4Ya+OyDqt5c7IOGEgOGFseGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgR1dJQworQUREODtBREQ4OzExMDAgMTE3MSAxMUJGO0FERDg7MTEwMCAxMTcxIDExQkY7ICMgKOq3mDsg6reYOyDhhIDhhbHhhr87IOq3mDsg4YSA4YWx4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHV0lLCitBREQ5O0FERDk7MTEwMCAxMTcxIDExQzA7QUREOTsxMTAwIDExNzEgMTFDMDsgIyAo6reZOyDqt5k7IOGEgOGFseGHgDsg6reZOyDhhIDhhbHhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEdXSVQKK0FEREE7QUREQTsxMTAwIDExNzEgMTFDMTtBRERBOzExMDAgMTE3MSAxMUMxOyAjICjqt5o7IOq3mjsg4YSA4YWx4YeBOyDqt5o7IOGEgOGFseGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgR1dJUAorQUREQjtBRERCOzExMDAgMTE3MSAxMUMyO0FEREI7MTEwMCAxMTcxIDExQzI7ICMgKOq3mzsg6rebOyDhhIDhhbHhh4I7IOq3mzsg4YSA4YWx4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHV0lICitBRERDO0FEREM7MTEwMCAxMTcyO0FEREM7MTEwMCAxMTcyOyAjICjqt5w7IOq3nDsg4YSA4YWyOyDqt5w7IOGEgOGFsjsgKSBIQU5HVUwgU1lMTEFCTEUgR1lVCitBREREO0FEREQ7MTEwMCAxMTcyIDExQTg7QURERDsxMTAwIDExNzIgMTFBODsgIyAo6redOyDqt507IOGEgOGFsuGGqDsg6redOyDhhIDhhbLhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEdZVUcKK0FEREU7QURERTsxMTAwIDExNzIgMTFBOTtBRERFOzExMDAgMTE3MiAxMUE5OyAjICjqt547IOq3njsg4YSA4YWy4YapOyDqt547IOGEgOGFsuGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgR1lVR0cKK0FEREY7QURERjsxMTAwIDExNzIgMTFBQTtBRERGOzExMDAgMTE3MiAxMUFBOyAjICjqt587IOq3nzsg4YSA4YWy4YaqOyDqt587IOGEgOGFsuGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgR1lVR1MKK0FERTA7QURFMDsxMTAwIDExNzIgMTFBQjtBREUwOzExMDAgMTE3MiAxMUFCOyAjICjqt6A7IOq3oDsg4YSA4YWy4YarOyDqt6A7IOGEgOGFsuGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgR1lVTgorQURFMTtBREUxOzExMDAgMTE3MiAxMUFDO0FERTE7MTEwMCAxMTcyIDExQUM7ICMgKOq3oTsg6rehOyDhhIDhhbLhhqw7IOq3oTsg4YSA4YWy4YasOyApIEhBTkdVTCBTWUxMQUJMRSBHWVVOSgorQURFMjtBREUyOzExMDAgMTE3MiAxMUFEO0FERTI7MTEwMCAxMTcyIDExQUQ7ICMgKOq3ojsg6reiOyDhhIDhhbLhhq07IOq3ojsg4YSA4YWy4YatOyApIEhBTkdVTCBTWUxMQUJMRSBHWVVOSAorQURFMztBREUzOzExMDAgMTE3MiAxMUFFO0FERTM7MTEwMCAxMTcyIDExQUU7ICMgKOq3ozsg6rejOyDhhIDhhbLhhq47IOq3ozsg4YSA4YWy4YauOyApIEhBTkdVTCBTWUxMQUJMRSBHWVVECitBREU0O0FERTQ7MTEwMCAxMTcyIDExQUY7QURFNDsxMTAwIDExNzIgMTFBRjsgIyAo6rekOyDqt6Q7IOGEgOGFsuGGrzsg6rekOyDhhIDhhbLhhq87ICkgSEFOR1VMIFNZTExBQkxFIEdZVUwKK0FERTU7QURFNTsxMTAwIDExNzIgMTFCMDtBREU1OzExMDAgMTE3MiAxMUIwOyAjICjqt6U7IOq3pTsg4YSA4YWy4YawOyDqt6U7IOGEgOGFsuGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgR1lVTEcKK0FERTY7QURFNjsxMTAwIDExNzIgMTFCMTtBREU2OzExMDAgMTE3MiAxMUIxOyAjICjqt6Y7IOq3pjsg4YSA4YWy4YaxOyDqt6Y7IOGEgOGFsuGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgR1lVTE0KK0FERTc7QURFNzsxMTAwIDExNzIgMTFCMjtBREU3OzExMDAgMTE3MiAxMUIyOyAjICjqt6c7IOq3pzsg4YSA4YWy4YayOyDqt6c7IOGEgOGFsuGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgR1lVTEIKK0FERTg7QURFODsxMTAwIDExNzIgMTFCMztBREU4OzExMDAgMTE3MiAxMUIzOyAjICjqt6g7IOq3qDsg4YSA4YWy4YazOyDqt6g7IOGEgOGFsuGGszsgKSBIQU5HVUwgU1lMTEFCTEUgR1lVTFMKK0FERTk7QURFOTsxMTAwIDExNzIgMTFCNDtBREU5OzExMDAgMTE3MiAxMUI0OyAjICjqt6k7IOq3qTsg4YSA4YWy4Ya0OyDqt6k7IOGEgOGFsuGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgR1lVTFQKK0FERUE7QURFQTsxMTAwIDExNzIgMTFCNTtBREVBOzExMDAgMTE3MiAxMUI1OyAjICjqt6o7IOq3qjsg4YSA4YWy4Ya1OyDqt6o7IOGEgOGFsuGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgR1lVTFAKK0FERUI7QURFQjsxMTAwIDExNzIgMTFCNjtBREVCOzExMDAgMTE3MiAxMUI2OyAjICjqt6s7IOq3qzsg4YSA4YWy4Ya2OyDqt6s7IOGEgOGFsuGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgR1lVTEgKK0FERUM7QURFQzsxMTAwIDExNzIgMTFCNztBREVDOzExMDAgMTE3MiAxMUI3OyAjICjqt6w7IOq3rDsg4YSA4YWy4Ya3OyDqt6w7IOGEgOGFsuGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgR1lVTQorQURFRDtBREVEOzExMDAgMTE3MiAxMUI4O0FERUQ7MTEwMCAxMTcyIDExQjg7ICMgKOq3rTsg6retOyDhhIDhhbLhhrg7IOq3rTsg4YSA4YWy4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBHWVVCCitBREVFO0FERUU7MTEwMCAxMTcyIDExQjk7QURFRTsxMTAwIDExNzIgMTFCOTsgIyAo6reuOyDqt647IOGEgOGFsuGGuTsg6reuOyDhhIDhhbLhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEdZVUJTCitBREVGO0FERUY7MTEwMCAxMTcyIDExQkE7QURFRjsxMTAwIDExNzIgMTFCQTsgIyAo6revOyDqt687IOGEgOGFsuGGujsg6revOyDhhIDhhbLhhro7ICkgSEFOR1VMIFNZTExBQkxFIEdZVVMKK0FERjA7QURGMDsxMTAwIDExNzIgMTFCQjtBREYwOzExMDAgMTE3MiAxMUJCOyAjICjqt7A7IOq3sDsg4YSA4YWy4Ya7OyDqt7A7IOGEgOGFsuGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgR1lVU1MKK0FERjE7QURGMTsxMTAwIDExNzIgMTFCQztBREYxOzExMDAgMTE3MiAxMUJDOyAjICjqt7E7IOq3sTsg4YSA4YWy4Ya8OyDqt7E7IOGEgOGFsuGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgR1lVTkcKK0FERjI7QURGMjsxMTAwIDExNzIgMTFCRDtBREYyOzExMDAgMTE3MiAxMUJEOyAjICjqt7I7IOq3sjsg4YSA4YWy4Ya9OyDqt7I7IOGEgOGFsuGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgR1lVSgorQURGMztBREYzOzExMDAgMTE3MiAxMUJFO0FERjM7MTEwMCAxMTcyIDExQkU7ICMgKOq3szsg6rezOyDhhIDhhbLhhr47IOq3szsg4YSA4YWy4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBHWVVDCitBREY0O0FERjQ7MTEwMCAxMTcyIDExQkY7QURGNDsxMTAwIDExNzIgMTFCRjsgIyAo6re0OyDqt7Q7IOGEgOGFsuGGvzsg6re0OyDhhIDhhbLhhr87ICkgSEFOR1VMIFNZTExBQkxFIEdZVUsKK0FERjU7QURGNTsxMTAwIDExNzIgMTFDMDtBREY1OzExMDAgMTE3MiAxMUMwOyAjICjqt7U7IOq3tTsg4YSA4YWy4YeAOyDqt7U7IOGEgOGFsuGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgR1lVVAorQURGNjtBREY2OzExMDAgMTE3MiAxMUMxO0FERjY7MTEwMCAxMTcyIDExQzE7ICMgKOq3tjsg6re2OyDhhIDhhbLhh4E7IOq3tjsg4YSA4YWy4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBHWVVQCitBREY3O0FERjc7MTEwMCAxMTcyIDExQzI7QURGNzsxMTAwIDExNzIgMTFDMjsgIyAo6re3OyDqt7c7IOGEgOGFsuGHgjsg6re3OyDhhIDhhbLhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEdZVUgKK0FERjg7QURGODsxMTAwIDExNzM7QURGODsxMTAwIDExNzM7ICMgKOq3uDsg6re4OyDhhIDhhbM7IOq3uDsg4YSA4YWzOyApIEhBTkdVTCBTWUxMQUJMRSBHRVUKK0FERjk7QURGOTsxMTAwIDExNzMgMTFBODtBREY5OzExMDAgMTE3MyAxMUE4OyAjICjqt7k7IOq3uTsg4YSA4YWz4YaoOyDqt7k7IOGEgOGFs+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR0VVRworQURGQTtBREZBOzExMDAgMTE3MyAxMUE5O0FERkE7MTEwMCAxMTczIDExQTk7ICMgKOq3ujsg6re6OyDhhIDhhbPhhqk7IOq3ujsg4YSA4YWz4YapOyApIEhBTkdVTCBTWUxMQUJMRSBHRVVHRworQURGQjtBREZCOzExMDAgMTE3MyAxMUFBO0FERkI7MTEwMCAxMTczIDExQUE7ICMgKOq3uzsg6re7OyDhhIDhhbPhhqo7IOq3uzsg4YSA4YWz4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBHRVVHUworQURGQztBREZDOzExMDAgMTE3MyAxMUFCO0FERkM7MTEwMCAxMTczIDExQUI7ICMgKOq3vDsg6re8OyDhhIDhhbPhhqs7IOq3vDsg4YSA4YWz4YarOyApIEhBTkdVTCBTWUxMQUJMRSBHRVVOCitBREZEO0FERkQ7MTEwMCAxMTczIDExQUM7QURGRDsxMTAwIDExNzMgMTFBQzsgIyAo6re9OyDqt707IOGEgOGFs+GGrDsg6re9OyDhhIDhhbPhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEdFVU5KCitBREZFO0FERkU7MTEwMCAxMTczIDExQUQ7QURGRTsxMTAwIDExNzMgMTFBRDsgIyAo6re+OyDqt747IOGEgOGFs+GGrTsg6re+OyDhhIDhhbPhhq07ICkgSEFOR1VMIFNZTExBQkxFIEdFVU5ICitBREZGO0FERkY7MTEwMCAxMTczIDExQUU7QURGRjsxMTAwIDExNzMgMTFBRTsgIyAo6re/OyDqt787IOGEgOGFs+GGrjsg6re/OyDhhIDhhbPhhq47ICkgSEFOR1VMIFNZTExBQkxFIEdFVUQKK0FFMDA7QUUwMDsxMTAwIDExNzMgMTFBRjtBRTAwOzExMDAgMTE3MyAxMUFGOyAjICjquIA7IOq4gDsg4YSA4YWz4YavOyDquIA7IOGEgOGFs+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgR0VVTAorQUUwMTtBRTAxOzExMDAgMTE3MyAxMUIwO0FFMDE7MTEwMCAxMTczIDExQjA7ICMgKOq4gTsg6riBOyDhhIDhhbPhhrA7IOq4gTsg4YSA4YWz4YawOyApIEhBTkdVTCBTWUxMQUJMRSBHRVVMRworQUUwMjtBRTAyOzExMDAgMTE3MyAxMUIxO0FFMDI7MTEwMCAxMTczIDExQjE7ICMgKOq4gjsg6riCOyDhhIDhhbPhhrE7IOq4gjsg4YSA4YWz4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHRVVMTQorQUUwMztBRTAzOzExMDAgMTE3MyAxMUIyO0FFMDM7MTEwMCAxMTczIDExQjI7ICMgKOq4gzsg6riDOyDhhIDhhbPhhrI7IOq4gzsg4YSA4YWz4YayOyApIEhBTkdVTCBTWUxMQUJMRSBHRVVMQgorQUUwNDtBRTA0OzExMDAgMTE3MyAxMUIzO0FFMDQ7MTEwMCAxMTczIDExQjM7ICMgKOq4hDsg6riEOyDhhIDhhbPhhrM7IOq4hDsg4YSA4YWz4YazOyApIEhBTkdVTCBTWUxMQUJMRSBHRVVMUworQUUwNTtBRTA1OzExMDAgMTE3MyAxMUI0O0FFMDU7MTEwMCAxMTczIDExQjQ7ICMgKOq4hTsg6riFOyDhhIDhhbPhhrQ7IOq4hTsg4YSA4YWz4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHRVVMVAorQUUwNjtBRTA2OzExMDAgMTE3MyAxMUI1O0FFMDY7MTEwMCAxMTczIDExQjU7ICMgKOq4hjsg6riGOyDhhIDhhbPhhrU7IOq4hjsg4YSA4YWz4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBHRVVMUAorQUUwNztBRTA3OzExMDAgMTE3MyAxMUI2O0FFMDc7MTEwMCAxMTczIDExQjY7ICMgKOq4hzsg6riHOyDhhIDhhbPhhrY7IOq4hzsg4YSA4YWz4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBHRVVMSAorQUUwODtBRTA4OzExMDAgMTE3MyAxMUI3O0FFMDg7MTEwMCAxMTczIDExQjc7ICMgKOq4iDsg6riIOyDhhIDhhbPhhrc7IOq4iDsg4YSA4YWz4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHRVVNCitBRTA5O0FFMDk7MTEwMCAxMTczIDExQjg7QUUwOTsxMTAwIDExNzMgMTFCODsgIyAo6riJOyDquIk7IOGEgOGFs+GGuDsg6riJOyDhhIDhhbPhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEdFVUIKK0FFMEE7QUUwQTsxMTAwIDExNzMgMTFCOTtBRTBBOzExMDAgMTE3MyAxMUI5OyAjICjquIo7IOq4ijsg4YSA4YWz4Ya5OyDquIo7IOGEgOGFs+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgR0VVQlMKK0FFMEI7QUUwQjsxMTAwIDExNzMgMTFCQTtBRTBCOzExMDAgMTE3MyAxMUJBOyAjICjquIs7IOq4izsg4YSA4YWz4Ya6OyDquIs7IOGEgOGFs+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgR0VVUworQUUwQztBRTBDOzExMDAgMTE3MyAxMUJCO0FFMEM7MTEwMCAxMTczIDExQkI7ICMgKOq4jDsg6riMOyDhhIDhhbPhhrs7IOq4jDsg4YSA4YWz4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBHRVVTUworQUUwRDtBRTBEOzExMDAgMTE3MyAxMUJDO0FFMEQ7MTEwMCAxMTczIDExQkM7ICMgKOq4jTsg6riNOyDhhIDhhbPhhrw7IOq4jTsg4YSA4YWz4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBHRVVORworQUUwRTtBRTBFOzExMDAgMTE3MyAxMUJEO0FFMEU7MTEwMCAxMTczIDExQkQ7ICMgKOq4jjsg6riOOyDhhIDhhbPhhr07IOq4jjsg4YSA4YWz4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHRVVKCitBRTBGO0FFMEY7MTEwMCAxMTczIDExQkU7QUUwRjsxMTAwIDExNzMgMTFCRTsgIyAo6riPOyDquI87IOGEgOGFs+GGvjsg6riPOyDhhIDhhbPhhr47ICkgSEFOR1VMIFNZTExBQkxFIEdFVUMKK0FFMTA7QUUxMDsxMTAwIDExNzMgMTFCRjtBRTEwOzExMDAgMTE3MyAxMUJGOyAjICjquJA7IOq4kDsg4YSA4YWz4Ya/OyDquJA7IOGEgOGFs+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgR0VVSworQUUxMTtBRTExOzExMDAgMTE3MyAxMUMwO0FFMTE7MTEwMCAxMTczIDExQzA7ICMgKOq4kTsg6riROyDhhIDhhbPhh4A7IOq4kTsg4YSA4YWz4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHRVVUCitBRTEyO0FFMTI7MTEwMCAxMTczIDExQzE7QUUxMjsxMTAwIDExNzMgMTFDMTsgIyAo6riSOyDquJI7IOGEgOGFs+GHgTsg6riSOyDhhIDhhbPhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEdFVVAKK0FFMTM7QUUxMzsxMTAwIDExNzMgMTFDMjtBRTEzOzExMDAgMTE3MyAxMUMyOyAjICjquJM7IOq4kzsg4YSA4YWz4YeCOyDquJM7IOGEgOGFs+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgR0VVSAorQUUxNDtBRTE0OzExMDAgMTE3NDtBRTE0OzExMDAgMTE3NDsgIyAo6riUOyDquJQ7IOGEgOGFtDsg6riUOyDhhIDhhbQ7ICkgSEFOR1VMIFNZTExBQkxFIEdZSQorQUUxNTtBRTE1OzExMDAgMTE3NCAxMUE4O0FFMTU7MTEwMCAxMTc0IDExQTg7ICMgKOq4lTsg6riVOyDhhIDhhbThhqg7IOq4lTsg4YSA4YW04YaoOyApIEhBTkdVTCBTWUxMQUJMRSBHWUlHCitBRTE2O0FFMTY7MTEwMCAxMTc0IDExQTk7QUUxNjsxMTAwIDExNzQgMTFBOTsgIyAo6riWOyDquJY7IOGEgOGFtOGGqTsg6riWOyDhhIDhhbThhqk7ICkgSEFOR1VMIFNZTExBQkxFIEdZSUdHCitBRTE3O0FFMTc7MTEwMCAxMTc0IDExQUE7QUUxNzsxMTAwIDExNzQgMTFBQTsgIyAo6riXOyDquJc7IOGEgOGFtOGGqjsg6riXOyDhhIDhhbThhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdZSUdTCitBRTE4O0FFMTg7MTEwMCAxMTc0IDExQUI7QUUxODsxMTAwIDExNzQgMTFBQjsgIyAo6riYOyDquJg7IOGEgOGFtOGGqzsg6riYOyDhhIDhhbThhqs7ICkgSEFOR1VMIFNZTExBQkxFIEdZSU4KK0FFMTk7QUUxOTsxMTAwIDExNzQgMTFBQztBRTE5OzExMDAgMTE3NCAxMUFDOyAjICjquJk7IOq4mTsg4YSA4YW04YasOyDquJk7IOGEgOGFtOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgR1lJTkoKK0FFMUE7QUUxQTsxMTAwIDExNzQgMTFBRDtBRTFBOzExMDAgMTE3NCAxMUFEOyAjICjquJo7IOq4mjsg4YSA4YW04YatOyDquJo7IOGEgOGFtOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR1lJTkgKK0FFMUI7QUUxQjsxMTAwIDExNzQgMTFBRTtBRTFCOzExMDAgMTE3NCAxMUFFOyAjICjquJs7IOq4mzsg4YSA4YW04YauOyDquJs7IOGEgOGFtOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgR1lJRAorQUUxQztBRTFDOzExMDAgMTE3NCAxMUFGO0FFMUM7MTEwMCAxMTc0IDExQUY7ICMgKOq4nDsg6ricOyDhhIDhhbThhq87IOq4nDsg4YSA4YW04YavOyApIEhBTkdVTCBTWUxMQUJMRSBHWUlMCitBRTFEO0FFMUQ7MTEwMCAxMTc0IDExQjA7QUUxRDsxMTAwIDExNzQgMTFCMDsgIyAo6ridOyDquJ07IOGEgOGFtOGGsDsg6ridOyDhhIDhhbThhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdZSUxHCitBRTFFO0FFMUU7MTEwMCAxMTc0IDExQjE7QUUxRTsxMTAwIDExNzQgMTFCMTsgIyAo6rieOyDquJ47IOGEgOGFtOGGsTsg6rieOyDhhIDhhbThhrE7ICkgSEFOR1VMIFNZTExBQkxFIEdZSUxNCitBRTFGO0FFMUY7MTEwMCAxMTc0IDExQjI7QUUxRjsxMTAwIDExNzQgMTFCMjsgIyAo6rifOyDquJ87IOGEgOGFtOGGsjsg6rifOyDhhIDhhbThhrI7ICkgSEFOR1VMIFNZTExBQkxFIEdZSUxCCitBRTIwO0FFMjA7MTEwMCAxMTc0IDExQjM7QUUyMDsxMTAwIDExNzQgMTFCMzsgIyAo6rigOyDquKA7IOGEgOGFtOGGszsg6rigOyDhhIDhhbThhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdZSUxTCitBRTIxO0FFMjE7MTEwMCAxMTc0IDExQjQ7QUUyMTsxMTAwIDExNzQgMTFCNDsgIyAo6rihOyDquKE7IOGEgOGFtOGGtDsg6rihOyDhhIDhhbThhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEdZSUxUCitBRTIyO0FFMjI7MTEwMCAxMTc0IDExQjU7QUUyMjsxMTAwIDExNzQgMTFCNTsgIyAo6riiOyDquKI7IOGEgOGFtOGGtTsg6riiOyDhhIDhhbThhrU7ICkgSEFOR1VMIFNZTExBQkxFIEdZSUxQCitBRTIzO0FFMjM7MTEwMCAxMTc0IDExQjY7QUUyMzsxMTAwIDExNzQgMTFCNjsgIyAo6rijOyDquKM7IOGEgOGFtOGGtjsg6rijOyDhhIDhhbThhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdZSUxICitBRTI0O0FFMjQ7MTEwMCAxMTc0IDExQjc7QUUyNDsxMTAwIDExNzQgMTFCNzsgIyAo6rikOyDquKQ7IOGEgOGFtOGGtzsg6rikOyDhhIDhhbThhrc7ICkgSEFOR1VMIFNZTExBQkxFIEdZSU0KK0FFMjU7QUUyNTsxMTAwIDExNzQgMTFCODtBRTI1OzExMDAgMTE3NCAxMUI4OyAjICjquKU7IOq4pTsg4YSA4YW04Ya4OyDquKU7IOGEgOGFtOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgR1lJQgorQUUyNjtBRTI2OzExMDAgMTE3NCAxMUI5O0FFMjY7MTEwMCAxMTc0IDExQjk7ICMgKOq4pjsg6rimOyDhhIDhhbThhrk7IOq4pjsg4YSA4YW04Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHWUlCUworQUUyNztBRTI3OzExMDAgMTE3NCAxMUJBO0FFMjc7MTEwMCAxMTc0IDExQkE7ICMgKOq4pzsg6rinOyDhhIDhhbThhro7IOq4pzsg4YSA4YW04Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBHWUlTCitBRTI4O0FFMjg7MTEwMCAxMTc0IDExQkI7QUUyODsxMTAwIDExNzQgMTFCQjsgIyAo6rioOyDquKg7IOGEgOGFtOGGuzsg6rioOyDhhIDhhbThhrs7ICkgSEFOR1VMIFNZTExBQkxFIEdZSVNTCitBRTI5O0FFMjk7MTEwMCAxMTc0IDExQkM7QUUyOTsxMTAwIDExNzQgMTFCQzsgIyAo6ripOyDquKk7IOGEgOGFtOGGvDsg6ripOyDhhIDhhbThhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdZSU5HCitBRTJBO0FFMkE7MTEwMCAxMTc0IDExQkQ7QUUyQTsxMTAwIDExNzQgMTFCRDsgIyAo6riqOyDquKo7IOGEgOGFtOGGvTsg6riqOyDhhIDhhbThhr07ICkgSEFOR1VMIFNZTExBQkxFIEdZSUoKK0FFMkI7QUUyQjsxMTAwIDExNzQgMTFCRTtBRTJCOzExMDAgMTE3NCAxMUJFOyAjICjquKs7IOq4qzsg4YSA4YW04Ya+OyDquKs7IOGEgOGFtOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgR1lJQworQUUyQztBRTJDOzExMDAgMTE3NCAxMUJGO0FFMkM7MTEwMCAxMTc0IDExQkY7ICMgKOq4rDsg6risOyDhhIDhhbThhr87IOq4rDsg4YSA4YW04Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHWUlLCitBRTJEO0FFMkQ7MTEwMCAxMTc0IDExQzA7QUUyRDsxMTAwIDExNzQgMTFDMDsgIyAo6ritOyDquK07IOGEgOGFtOGHgDsg6ritOyDhhIDhhbThh4A7ICkgSEFOR1VMIFNZTExBQkxFIEdZSVQKK0FFMkU7QUUyRTsxMTAwIDExNzQgMTFDMTtBRTJFOzExMDAgMTE3NCAxMUMxOyAjICjquK47IOq4rjsg4YSA4YW04YeBOyDquK47IOGEgOGFtOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgR1lJUAorQUUyRjtBRTJGOzExMDAgMTE3NCAxMUMyO0FFMkY7MTEwMCAxMTc0IDExQzI7ICMgKOq4rzsg6rivOyDhhIDhhbThh4I7IOq4rzsg4YSA4YW04YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHWUlICitBRTMwO0FFMzA7MTEwMCAxMTc1O0FFMzA7MTEwMCAxMTc1OyAjICjquLA7IOq4sDsg4YSA4YW1OyDquLA7IOGEgOGFtTsgKSBIQU5HVUwgU1lMTEFCTEUgR0kKK0FFMzE7QUUzMTsxMTAwIDExNzUgMTFBODtBRTMxOzExMDAgMTE3NSAxMUE4OyAjICjquLE7IOq4sTsg4YSA4YW14YaoOyDquLE7IOGEgOGFteGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR0lHCitBRTMyO0FFMzI7MTEwMCAxMTc1IDExQTk7QUUzMjsxMTAwIDExNzUgMTFBOTsgIyAo6riyOyDquLI7IOGEgOGFteGGqTsg6riyOyDhhIDhhbXhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEdJR0cKK0FFMzM7QUUzMzsxMTAwIDExNzUgMTFBQTtBRTMzOzExMDAgMTE3NSAxMUFBOyAjICjquLM7IOq4szsg4YSA4YW14YaqOyDquLM7IOGEgOGFteGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgR0lHUworQUUzNDtBRTM0OzExMDAgMTE3NSAxMUFCO0FFMzQ7MTEwMCAxMTc1IDExQUI7ICMgKOq4tDsg6ri0OyDhhIDhhbXhhqs7IOq4tDsg4YSA4YW14YarOyApIEhBTkdVTCBTWUxMQUJMRSBHSU4KK0FFMzU7QUUzNTsxMTAwIDExNzUgMTFBQztBRTM1OzExMDAgMTE3NSAxMUFDOyAjICjquLU7IOq4tTsg4YSA4YW14YasOyDquLU7IOGEgOGFteGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgR0lOSgorQUUzNjtBRTM2OzExMDAgMTE3NSAxMUFEO0FFMzY7MTEwMCAxMTc1IDExQUQ7ICMgKOq4tjsg6ri2OyDhhIDhhbXhhq07IOq4tjsg4YSA4YW14YatOyApIEhBTkdVTCBTWUxMQUJMRSBHSU5ICitBRTM3O0FFMzc7MTEwMCAxMTc1IDExQUU7QUUzNzsxMTAwIDExNzUgMTFBRTsgIyAo6ri3OyDquLc7IOGEgOGFteGGrjsg6ri3OyDhhIDhhbXhhq47ICkgSEFOR1VMIFNZTExBQkxFIEdJRAorQUUzODtBRTM4OzExMDAgMTE3NSAxMUFGO0FFMzg7MTEwMCAxMTc1IDExQUY7ICMgKOq4uDsg6ri4OyDhhIDhhbXhhq87IOq4uDsg4YSA4YW14YavOyApIEhBTkdVTCBTWUxMQUJMRSBHSUwKK0FFMzk7QUUzOTsxMTAwIDExNzUgMTFCMDtBRTM5OzExMDAgMTE3NSAxMUIwOyAjICjquLk7IOq4uTsg4YSA4YW14YawOyDquLk7IOGEgOGFteGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgR0lMRworQUUzQTtBRTNBOzExMDAgMTE3NSAxMUIxO0FFM0E7MTEwMCAxMTc1IDExQjE7ICMgKOq4ujsg6ri6OyDhhIDhhbXhhrE7IOq4ujsg4YSA4YW14YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHSUxNCitBRTNCO0FFM0I7MTEwMCAxMTc1IDExQjI7QUUzQjsxMTAwIDExNzUgMTFCMjsgIyAo6ri7OyDquLs7IOGEgOGFteGGsjsg6ri7OyDhhIDhhbXhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEdJTEIKK0FFM0M7QUUzQzsxMTAwIDExNzUgMTFCMztBRTNDOzExMDAgMTE3NSAxMUIzOyAjICjquLw7IOq4vDsg4YSA4YW14YazOyDquLw7IOGEgOGFteGGszsgKSBIQU5HVUwgU1lMTEFCTEUgR0lMUworQUUzRDtBRTNEOzExMDAgMTE3NSAxMUI0O0FFM0Q7MTEwMCAxMTc1IDExQjQ7ICMgKOq4vTsg6ri9OyDhhIDhhbXhhrQ7IOq4vTsg4YSA4YW14Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHSUxUCitBRTNFO0FFM0U7MTEwMCAxMTc1IDExQjU7QUUzRTsxMTAwIDExNzUgMTFCNTsgIyAo6ri+OyDquL47IOGEgOGFteGGtTsg6ri+OyDhhIDhhbXhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEdJTFAKK0FFM0Y7QUUzRjsxMTAwIDExNzUgMTFCNjtBRTNGOzExMDAgMTE3NSAxMUI2OyAjICjquL87IOq4vzsg4YSA4YW14Ya2OyDquL87IOGEgOGFteGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgR0lMSAorQUU0MDtBRTQwOzExMDAgMTE3NSAxMUI3O0FFNDA7MTEwMCAxMTc1IDExQjc7ICMgKOq5gDsg6rmAOyDhhIDhhbXhhrc7IOq5gDsg4YSA4YW14Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHSU0KK0FFNDE7QUU0MTsxMTAwIDExNzUgMTFCODtBRTQxOzExMDAgMTE3NSAxMUI4OyAjICjquYE7IOq5gTsg4YSA4YW14Ya4OyDquYE7IOGEgOGFteGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgR0lCCitBRTQyO0FFNDI7MTEwMCAxMTc1IDExQjk7QUU0MjsxMTAwIDExNzUgMTFCOTsgIyAo6rmCOyDquYI7IOGEgOGFteGGuTsg6rmCOyDhhIDhhbXhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEdJQlMKK0FFNDM7QUU0MzsxMTAwIDExNzUgMTFCQTtBRTQzOzExMDAgMTE3NSAxMUJBOyAjICjquYM7IOq5gzsg4YSA4YW14Ya6OyDquYM7IOGEgOGFteGGujsgKSBIQU5HVUwgU1lMTEFCTEUgR0lTCitBRTQ0O0FFNDQ7MTEwMCAxMTc1IDExQkI7QUU0NDsxMTAwIDExNzUgMTFCQjsgIyAo6rmEOyDquYQ7IOGEgOGFteGGuzsg6rmEOyDhhIDhhbXhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEdJU1MKK0FFNDU7QUU0NTsxMTAwIDExNzUgMTFCQztBRTQ1OzExMDAgMTE3NSAxMUJDOyAjICjquYU7IOq5hTsg4YSA4YW14Ya8OyDquYU7IOGEgOGFteGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgR0lORworQUU0NjtBRTQ2OzExMDAgMTE3NSAxMUJEO0FFNDY7MTEwMCAxMTc1IDExQkQ7ICMgKOq5hjsg6rmGOyDhhIDhhbXhhr07IOq5hjsg4YSA4YW14Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHSUoKK0FFNDc7QUU0NzsxMTAwIDExNzUgMTFCRTtBRTQ3OzExMDAgMTE3NSAxMUJFOyAjICjquYc7IOq5hzsg4YSA4YW14Ya+OyDquYc7IOGEgOGFteGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgR0lDCitBRTQ4O0FFNDg7MTEwMCAxMTc1IDExQkY7QUU0ODsxMTAwIDExNzUgMTFCRjsgIyAo6rmIOyDquYg7IOGEgOGFteGGvzsg6rmIOyDhhIDhhbXhhr87ICkgSEFOR1VMIFNZTExBQkxFIEdJSworQUU0OTtBRTQ5OzExMDAgMTE3NSAxMUMwO0FFNDk7MTEwMCAxMTc1IDExQzA7ICMgKOq5iTsg6rmJOyDhhIDhhbXhh4A7IOq5iTsg4YSA4YW14YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHSVQKK0FFNEE7QUU0QTsxMTAwIDExNzUgMTFDMTtBRTRBOzExMDAgMTE3NSAxMUMxOyAjICjquYo7IOq5ijsg4YSA4YW14YeBOyDquYo7IOGEgOGFteGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgR0lQCitBRTRCO0FFNEI7MTEwMCAxMTc1IDExQzI7QUU0QjsxMTAwIDExNzUgMTFDMjsgIyAo6rmLOyDquYs7IOGEgOGFteGHgjsg6rmLOyDhhIDhhbXhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEdJSAorQUU0QztBRTRDOzExMDEgMTE2MTtBRTRDOzExMDEgMTE2MTsgIyAo6rmMOyDquYw7IOGEgeGFoTsg6rmMOyDhhIHhhaE7ICkgSEFOR1VMIFNZTExBQkxFIEdHQQorQUU0RDtBRTREOzExMDEgMTE2MSAxMUE4O0FFNEQ7MTEwMSAxMTYxIDExQTg7ICMgKOq5jTsg6rmNOyDhhIHhhaHhhqg7IOq5jTsg4YSB4YWh4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBHR0FHCitBRTRFO0FFNEU7MTEwMSAxMTYxIDExQTk7QUU0RTsxMTAxIDExNjEgMTFBOTsgIyAo6rmOOyDquY47IOGEgeGFoeGGqTsg6rmOOyDhhIHhhaHhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEdHQUdHCitBRTRGO0FFNEY7MTEwMSAxMTYxIDExQUE7QUU0RjsxMTAxIDExNjEgMTFBQTsgIyAo6rmPOyDquY87IOGEgeGFoeGGqjsg6rmPOyDhhIHhhaHhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdHQUdTCitBRTUwO0FFNTA7MTEwMSAxMTYxIDExQUI7QUU1MDsxMTAxIDExNjEgMTFBQjsgIyAo6rmQOyDquZA7IOGEgeGFoeGGqzsg6rmQOyDhhIHhhaHhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEdHQU4KK0FFNTE7QUU1MTsxMTAxIDExNjEgMTFBQztBRTUxOzExMDEgMTE2MSAxMUFDOyAjICjquZE7IOq5kTsg4YSB4YWh4YasOyDquZE7IOGEgeGFoeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dBTkoKK0FFNTI7QUU1MjsxMTAxIDExNjEgMTFBRDtBRTUyOzExMDEgMTE2MSAxMUFEOyAjICjquZI7IOq5kjsg4YSB4YWh4YatOyDquZI7IOGEgeGFoeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dBTkgKK0FFNTM7QUU1MzsxMTAxIDExNjEgMTFBRTtBRTUzOzExMDEgMTE2MSAxMUFFOyAjICjquZM7IOq5kzsg4YSB4YWh4YauOyDquZM7IOGEgeGFoeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dBRAorQUU1NDtBRTU0OzExMDEgMTE2MSAxMUFGO0FFNTQ7MTEwMSAxMTYxIDExQUY7ICMgKOq5lDsg6rmUOyDhhIHhhaHhhq87IOq5lDsg4YSB4YWh4YavOyApIEhBTkdVTCBTWUxMQUJMRSBHR0FMCitBRTU1O0FFNTU7MTEwMSAxMTYxIDExQjA7QUU1NTsxMTAxIDExNjEgMTFCMDsgIyAo6rmVOyDquZU7IOGEgeGFoeGGsDsg6rmVOyDhhIHhhaHhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdHQUxHCitBRTU2O0FFNTY7MTEwMSAxMTYxIDExQjE7QUU1NjsxMTAxIDExNjEgMTFCMTsgIyAo6rmWOyDquZY7IOGEgeGFoeGGsTsg6rmWOyDhhIHhhaHhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEdHQUxNCitBRTU3O0FFNTc7MTEwMSAxMTYxIDExQjI7QUU1NzsxMTAxIDExNjEgMTFCMjsgIyAo6rmXOyDquZc7IOGEgeGFoeGGsjsg6rmXOyDhhIHhhaHhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEdHQUxCCitBRTU4O0FFNTg7MTEwMSAxMTYxIDExQjM7QUU1ODsxMTAxIDExNjEgMTFCMzsgIyAo6rmYOyDquZg7IOGEgeGFoeGGszsg6rmYOyDhhIHhhaHhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdHQUxTCitBRTU5O0FFNTk7MTEwMSAxMTYxIDExQjQ7QUU1OTsxMTAxIDExNjEgMTFCNDsgIyAo6rmZOyDquZk7IOGEgeGFoeGGtDsg6rmZOyDhhIHhhaHhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEdHQUxUCitBRTVBO0FFNUE7MTEwMSAxMTYxIDExQjU7QUU1QTsxMTAxIDExNjEgMTFCNTsgIyAo6rmaOyDquZo7IOGEgeGFoeGGtTsg6rmaOyDhhIHhhaHhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEdHQUxQCitBRTVCO0FFNUI7MTEwMSAxMTYxIDExQjY7QUU1QjsxMTAxIDExNjEgMTFCNjsgIyAo6rmbOyDquZs7IOGEgeGFoeGGtjsg6rmbOyDhhIHhhaHhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdHQUxICitBRTVDO0FFNUM7MTEwMSAxMTYxIDExQjc7QUU1QzsxMTAxIDExNjEgMTFCNzsgIyAo6rmcOyDquZw7IOGEgeGFoeGGtzsg6rmcOyDhhIHhhaHhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEdHQU0KK0FFNUQ7QUU1RDsxMTAxIDExNjEgMTFCODtBRTVEOzExMDEgMTE2MSAxMUI4OyAjICjquZ07IOq5nTsg4YSB4YWh4Ya4OyDquZ07IOGEgeGFoeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dBQgorQUU1RTtBRTVFOzExMDEgMTE2MSAxMUI5O0FFNUU7MTEwMSAxMTYxIDExQjk7ICMgKOq5njsg6rmeOyDhhIHhhaHhhrk7IOq5njsg4YSB4YWh4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHR0FCUworQUU1RjtBRTVGOzExMDEgMTE2MSAxMUJBO0FFNUY7MTEwMSAxMTYxIDExQkE7ICMgKOq5nzsg6rmfOyDhhIHhhaHhhro7IOq5nzsg4YSB4YWh4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBHR0FTCitBRTYwO0FFNjA7MTEwMSAxMTYxIDExQkI7QUU2MDsxMTAxIDExNjEgMTFCQjsgIyAo6rmgOyDquaA7IOGEgeGFoeGGuzsg6rmgOyDhhIHhhaHhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEdHQVNTCitBRTYxO0FFNjE7MTEwMSAxMTYxIDExQkM7QUU2MTsxMTAxIDExNjEgMTFCQzsgIyAo6rmhOyDquaE7IOGEgeGFoeGGvDsg6rmhOyDhhIHhhaHhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdHQU5HCitBRTYyO0FFNjI7MTEwMSAxMTYxIDExQkQ7QUU2MjsxMTAxIDExNjEgMTFCRDsgIyAo6rmiOyDquaI7IOGEgeGFoeGGvTsg6rmiOyDhhIHhhaHhhr07ICkgSEFOR1VMIFNZTExBQkxFIEdHQUoKK0FFNjM7QUU2MzsxMTAxIDExNjEgMTFCRTtBRTYzOzExMDEgMTE2MSAxMUJFOyAjICjquaM7IOq5ozsg4YSB4YWh4Ya+OyDquaM7IOGEgeGFoeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dBQworQUU2NDtBRTY0OzExMDEgMTE2MSAxMUJGO0FFNjQ7MTEwMSAxMTYxIDExQkY7ICMgKOq5pDsg6rmkOyDhhIHhhaHhhr87IOq5pDsg4YSB4YWh4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHR0FLCitBRTY1O0FFNjU7MTEwMSAxMTYxIDExQzA7QUU2NTsxMTAxIDExNjEgMTFDMDsgIyAo6rmlOyDquaU7IOGEgeGFoeGHgDsg6rmlOyDhhIHhhaHhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEdHQVQKK0FFNjY7QUU2NjsxMTAxIDExNjEgMTFDMTtBRTY2OzExMDEgMTE2MSAxMUMxOyAjICjquaY7IOq5pjsg4YSB4YWh4YeBOyDquaY7IOGEgeGFoeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dBUAorQUU2NztBRTY3OzExMDEgMTE2MSAxMUMyO0FFNjc7MTEwMSAxMTYxIDExQzI7ICMgKOq5pzsg6rmnOyDhhIHhhaHhh4I7IOq5pzsg4YSB4YWh4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHR0FICitBRTY4O0FFNjg7MTEwMSAxMTYyO0FFNjg7MTEwMSAxMTYyOyAjICjquag7IOq5qDsg4YSB4YWiOyDquag7IOGEgeGFojsgKSBIQU5HVUwgU1lMTEFCTEUgR0dBRQorQUU2OTtBRTY5OzExMDEgMTE2MiAxMUE4O0FFNjk7MTEwMSAxMTYyIDExQTg7ICMgKOq5qTsg6rmpOyDhhIHhhaLhhqg7IOq5qTsg4YSB4YWi4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBHR0FFRworQUU2QTtBRTZBOzExMDEgMTE2MiAxMUE5O0FFNkE7MTEwMSAxMTYyIDExQTk7ICMgKOq5qjsg6rmqOyDhhIHhhaLhhqk7IOq5qjsg4YSB4YWi4YapOyApIEhBTkdVTCBTWUxMQUJMRSBHR0FFR0cKK0FFNkI7QUU2QjsxMTAxIDExNjIgMTFBQTtBRTZCOzExMDEgMTE2MiAxMUFBOyAjICjquas7IOq5qzsg4YSB4YWi4YaqOyDquas7IOGEgeGFouGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dBRUdTCitBRTZDO0FFNkM7MTEwMSAxMTYyIDExQUI7QUU2QzsxMTAxIDExNjIgMTFBQjsgIyAo6rmsOyDquaw7IOGEgeGFouGGqzsg6rmsOyDhhIHhhaLhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEdHQUVOCitBRTZEO0FFNkQ7MTEwMSAxMTYyIDExQUM7QUU2RDsxMTAxIDExNjIgMTFBQzsgIyAo6rmtOyDqua07IOGEgeGFouGGrDsg6rmtOyDhhIHhhaLhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEdHQUVOSgorQUU2RTtBRTZFOzExMDEgMTE2MiAxMUFEO0FFNkU7MTEwMSAxMTYyIDExQUQ7ICMgKOq5rjsg6rmuOyDhhIHhhaLhhq07IOq5rjsg4YSB4YWi4YatOyApIEhBTkdVTCBTWUxMQUJMRSBHR0FFTkgKK0FFNkY7QUU2RjsxMTAxIDExNjIgMTFBRTtBRTZGOzExMDEgMTE2MiAxMUFFOyAjICjqua87IOq5rzsg4YSB4YWi4YauOyDqua87IOGEgeGFouGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dBRUQKK0FFNzA7QUU3MDsxMTAxIDExNjIgMTFBRjtBRTcwOzExMDEgMTE2MiAxMUFGOyAjICjqubA7IOq5sDsg4YSB4YWi4YavOyDqubA7IOGEgeGFouGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgR0dBRUwKK0FFNzE7QUU3MTsxMTAxIDExNjIgMTFCMDtBRTcxOzExMDEgMTE2MiAxMUIwOyAjICjqubE7IOq5sTsg4YSB4YWi4YawOyDqubE7IOGEgeGFouGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dBRUxHCitBRTcyO0FFNzI7MTEwMSAxMTYyIDExQjE7QUU3MjsxMTAxIDExNjIgMTFCMTsgIyAo6rmyOyDqubI7IOGEgeGFouGGsTsg6rmyOyDhhIHhhaLhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEdHQUVMTQorQUU3MztBRTczOzExMDEgMTE2MiAxMUIyO0FFNzM7MTEwMSAxMTYyIDExQjI7ICMgKOq5szsg6rmzOyDhhIHhhaLhhrI7IOq5szsg4YSB4YWi4YayOyApIEhBTkdVTCBTWUxMQUJMRSBHR0FFTEIKK0FFNzQ7QUU3NDsxMTAxIDExNjIgMTFCMztBRTc0OzExMDEgMTE2MiAxMUIzOyAjICjqubQ7IOq5tDsg4YSB4YWi4YazOyDqubQ7IOGEgeGFouGGszsgKSBIQU5HVUwgU1lMTEFCTEUgR0dBRUxTCitBRTc1O0FFNzU7MTEwMSAxMTYyIDExQjQ7QUU3NTsxMTAxIDExNjIgMTFCNDsgIyAo6rm1OyDqubU7IOGEgeGFouGGtDsg6rm1OyDhhIHhhaLhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEdHQUVMVAorQUU3NjtBRTc2OzExMDEgMTE2MiAxMUI1O0FFNzY7MTEwMSAxMTYyIDExQjU7ICMgKOq5tjsg6rm2OyDhhIHhhaLhhrU7IOq5tjsg4YSB4YWi4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBHR0FFTFAKK0FFNzc7QUU3NzsxMTAxIDExNjIgMTFCNjtBRTc3OzExMDEgMTE2MiAxMUI2OyAjICjqubc7IOq5tzsg4YSB4YWi4Ya2OyDqubc7IOGEgeGFouGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dBRUxICitBRTc4O0FFNzg7MTEwMSAxMTYyIDExQjc7QUU3ODsxMTAxIDExNjIgMTFCNzsgIyAo6rm4OyDqubg7IOGEgeGFouGGtzsg6rm4OyDhhIHhhaLhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEdHQUVNCitBRTc5O0FFNzk7MTEwMSAxMTYyIDExQjg7QUU3OTsxMTAxIDExNjIgMTFCODsgIyAo6rm5OyDqubk7IOGEgeGFouGGuDsg6rm5OyDhhIHhhaLhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEdHQUVCCitBRTdBO0FFN0E7MTEwMSAxMTYyIDExQjk7QUU3QTsxMTAxIDExNjIgMTFCOTsgIyAo6rm6OyDqubo7IOGEgeGFouGGuTsg6rm6OyDhhIHhhaLhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEdHQUVCUworQUU3QjtBRTdCOzExMDEgMTE2MiAxMUJBO0FFN0I7MTEwMSAxMTYyIDExQkE7ICMgKOq5uzsg6rm7OyDhhIHhhaLhhro7IOq5uzsg4YSB4YWi4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBHR0FFUworQUU3QztBRTdDOzExMDEgMTE2MiAxMUJCO0FFN0M7MTEwMSAxMTYyIDExQkI7ICMgKOq5vDsg6rm8OyDhhIHhhaLhhrs7IOq5vDsg4YSB4YWi4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBHR0FFU1MKK0FFN0Q7QUU3RDsxMTAxIDExNjIgMTFCQztBRTdEOzExMDEgMTE2MiAxMUJDOyAjICjqub07IOq5vTsg4YSB4YWi4Ya8OyDqub07IOGEgeGFouGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dBRU5HCitBRTdFO0FFN0U7MTEwMSAxMTYyIDExQkQ7QUU3RTsxMTAxIDExNjIgMTFCRDsgIyAo6rm+OyDqub47IOGEgeGFouGGvTsg6rm+OyDhhIHhhaLhhr07ICkgSEFOR1VMIFNZTExBQkxFIEdHQUVKCitBRTdGO0FFN0Y7MTEwMSAxMTYyIDExQkU7QUU3RjsxMTAxIDExNjIgMTFCRTsgIyAo6rm/OyDqub87IOGEgeGFouGGvjsg6rm/OyDhhIHhhaLhhr47ICkgSEFOR1VMIFNZTExBQkxFIEdHQUVDCitBRTgwO0FFODA7MTEwMSAxMTYyIDExQkY7QUU4MDsxMTAxIDExNjIgMTFCRjsgIyAo6rqAOyDquoA7IOGEgeGFouGGvzsg6rqAOyDhhIHhhaLhhr87ICkgSEFOR1VMIFNZTExBQkxFIEdHQUVLCitBRTgxO0FFODE7MTEwMSAxMTYyIDExQzA7QUU4MTsxMTAxIDExNjIgMTFDMDsgIyAo6rqBOyDquoE7IOGEgeGFouGHgDsg6rqBOyDhhIHhhaLhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEdHQUVUCitBRTgyO0FFODI7MTEwMSAxMTYyIDExQzE7QUU4MjsxMTAxIDExNjIgMTFDMTsgIyAo6rqCOyDquoI7IOGEgeGFouGHgTsg6rqCOyDhhIHhhaLhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEdHQUVQCitBRTgzO0FFODM7MTEwMSAxMTYyIDExQzI7QUU4MzsxMTAxIDExNjIgMTFDMjsgIyAo6rqDOyDquoM7IOGEgeGFouGHgjsg6rqDOyDhhIHhhaLhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEdHQUVICitBRTg0O0FFODQ7MTEwMSAxMTYzO0FFODQ7MTEwMSAxMTYzOyAjICjquoQ7IOq6hDsg4YSB4YWjOyDquoQ7IOGEgeGFozsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZQQorQUU4NTtBRTg1OzExMDEgMTE2MyAxMUE4O0FFODU7MTEwMSAxMTYzIDExQTg7ICMgKOq6hTsg6rqFOyDhhIHhhaPhhqg7IOq6hTsg4YSB4YWj4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lBRworQUU4NjtBRTg2OzExMDEgMTE2MyAxMUE5O0FFODY7MTEwMSAxMTYzIDExQTk7ICMgKOq6hjsg6rqGOyDhhIHhhaPhhqk7IOq6hjsg4YSB4YWj4YapOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lBR0cKK0FFODc7QUU4NzsxMTAxIDExNjMgMTFBQTtBRTg3OzExMDEgMTE2MyAxMUFBOyAjICjquoc7IOq6hzsg4YSB4YWj4YaqOyDquoc7IOGEgeGFo+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZQUdTCitBRTg4O0FFODg7MTEwMSAxMTYzIDExQUI7QUU4ODsxMTAxIDExNjMgMTFBQjsgIyAo6rqIOyDquog7IOGEgeGFo+GGqzsg6rqIOyDhhIHhhaPhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFOCitBRTg5O0FFODk7MTEwMSAxMTYzIDExQUM7QUU4OTsxMTAxIDExNjMgMTFBQzsgIyAo6rqJOyDquok7IOGEgeGFo+GGrDsg6rqJOyDhhIHhhaPhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFOSgorQUU4QTtBRThBOzExMDEgMTE2MyAxMUFEO0FFOEE7MTEwMSAxMTYzIDExQUQ7ICMgKOq6ijsg6rqKOyDhhIHhhaPhhq07IOq6ijsg4YSB4YWj4YatOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lBTkgKK0FFOEI7QUU4QjsxMTAxIDExNjMgMTFBRTtBRThCOzExMDEgMTE2MyAxMUFFOyAjICjquos7IOq6izsg4YSB4YWj4YauOyDquos7IOGEgeGFo+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZQUQKK0FFOEM7QUU4QzsxMTAxIDExNjMgMTFBRjtBRThDOzExMDEgMTE2MyAxMUFGOyAjICjquow7IOq6jDsg4YSB4YWj4YavOyDquow7IOGEgeGFo+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZQUwKK0FFOEQ7QUU4RDsxMTAxIDExNjMgMTFCMDtBRThEOzExMDEgMTE2MyAxMUIwOyAjICjquo07IOq6jTsg4YSB4YWj4YawOyDquo07IOGEgeGFo+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZQUxHCitBRThFO0FFOEU7MTEwMSAxMTYzIDExQjE7QUU4RTsxMTAxIDExNjMgMTFCMTsgIyAo6rqOOyDquo47IOGEgeGFo+GGsTsg6rqOOyDhhIHhhaPhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFMTQorQUU4RjtBRThGOzExMDEgMTE2MyAxMUIyO0FFOEY7MTEwMSAxMTYzIDExQjI7ICMgKOq6jzsg6rqPOyDhhIHhhaPhhrI7IOq6jzsg4YSB4YWj4YayOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lBTEIKK0FFOTA7QUU5MDsxMTAxIDExNjMgMTFCMztBRTkwOzExMDEgMTE2MyAxMUIzOyAjICjqupA7IOq6kDsg4YSB4YWj4YazOyDqupA7IOGEgeGFo+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZQUxTCitBRTkxO0FFOTE7MTEwMSAxMTYzIDExQjQ7QUU5MTsxMTAxIDExNjMgMTFCNDsgIyAo6rqROyDqupE7IOGEgeGFo+GGtDsg6rqROyDhhIHhhaPhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFMVAorQUU5MjtBRTkyOzExMDEgMTE2MyAxMUI1O0FFOTI7MTEwMSAxMTYzIDExQjU7ICMgKOq6kjsg6rqSOyDhhIHhhaPhhrU7IOq6kjsg4YSB4YWj4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lBTFAKK0FFOTM7QUU5MzsxMTAxIDExNjMgMTFCNjtBRTkzOzExMDEgMTE2MyAxMUI2OyAjICjqupM7IOq6kzsg4YSB4YWj4Ya2OyDqupM7IOGEgeGFo+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZQUxICitBRTk0O0FFOTQ7MTEwMSAxMTYzIDExQjc7QUU5NDsxMTAxIDExNjMgMTFCNzsgIyAo6rqUOyDqupQ7IOGEgeGFo+GGtzsg6rqUOyDhhIHhhaPhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFNCitBRTk1O0FFOTU7MTEwMSAxMTYzIDExQjg7QUU5NTsxMTAxIDExNjMgMTFCODsgIyAo6rqVOyDqupU7IOGEgeGFo+GGuDsg6rqVOyDhhIHhhaPhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFCCitBRTk2O0FFOTY7MTEwMSAxMTYzIDExQjk7QUU5NjsxMTAxIDExNjMgMTFCOTsgIyAo6rqWOyDqupY7IOGEgeGFo+GGuTsg6rqWOyDhhIHhhaPhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFCUworQUU5NztBRTk3OzExMDEgMTE2MyAxMUJBO0FFOTc7MTEwMSAxMTYzIDExQkE7ICMgKOq6lzsg6rqXOyDhhIHhhaPhhro7IOq6lzsg4YSB4YWj4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lBUworQUU5ODtBRTk4OzExMDEgMTE2MyAxMUJCO0FFOTg7MTEwMSAxMTYzIDExQkI7ICMgKOq6mDsg6rqYOyDhhIHhhaPhhrs7IOq6mDsg4YSB4YWj4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lBU1MKK0FFOTk7QUU5OTsxMTAxIDExNjMgMTFCQztBRTk5OzExMDEgMTE2MyAxMUJDOyAjICjqupk7IOq6mTsg4YSB4YWj4Ya8OyDqupk7IOGEgeGFo+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZQU5HCitBRTlBO0FFOUE7MTEwMSAxMTYzIDExQkQ7QUU5QTsxMTAxIDExNjMgMTFCRDsgIyAo6rqaOyDqupo7IOGEgeGFo+GGvTsg6rqaOyDhhIHhhaPhhr07ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFKCitBRTlCO0FFOUI7MTEwMSAxMTYzIDExQkU7QUU5QjsxMTAxIDExNjMgMTFCRTsgIyAo6rqbOyDqups7IOGEgeGFo+GGvjsg6rqbOyDhhIHhhaPhhr47ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFDCitBRTlDO0FFOUM7MTEwMSAxMTYzIDExQkY7QUU5QzsxMTAxIDExNjMgMTFCRjsgIyAo6rqcOyDqupw7IOGEgeGFo+GGvzsg6rqcOyDhhIHhhaPhhr87ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFLCitBRTlEO0FFOUQ7MTEwMSAxMTYzIDExQzA7QUU5RDsxMTAxIDExNjMgMTFDMDsgIyAo6rqdOyDqup07IOGEgeGFo+GHgDsg6rqdOyDhhIHhhaPhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFUCitBRTlFO0FFOUU7MTEwMSAxMTYzIDExQzE7QUU5RTsxMTAxIDExNjMgMTFDMTsgIyAo6rqeOyDqup47IOGEgeGFo+GHgTsg6rqeOyDhhIHhhaPhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFQCitBRTlGO0FFOUY7MTEwMSAxMTYzIDExQzI7QUU5RjsxMTAxIDExNjMgMTFDMjsgIyAo6rqfOyDqup87IOGEgeGFo+GHgjsg6rqfOyDhhIHhhaPhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFICitBRUEwO0FFQTA7MTEwMSAxMTY0O0FFQTA7MTEwMSAxMTY0OyAjICjquqA7IOq6oDsg4YSB4YWkOyDquqA7IOGEgeGFpDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZQUUKK0FFQTE7QUVBMTsxMTAxIDExNjQgMTFBODtBRUExOzExMDEgMTE2NCAxMUE4OyAjICjquqE7IOq6oTsg4YSB4YWk4YaoOyDquqE7IOGEgeGFpOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZQUVHCitBRUEyO0FFQTI7MTEwMSAxMTY0IDExQTk7QUVBMjsxMTAxIDExNjQgMTFBOTsgIyAo6rqiOyDquqI7IOGEgeGFpOGGqTsg6rqiOyDhhIHhhaThhqk7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFFR0cKK0FFQTM7QUVBMzsxMTAxIDExNjQgMTFBQTtBRUEzOzExMDEgMTE2NCAxMUFBOyAjICjquqM7IOq6ozsg4YSB4YWk4YaqOyDquqM7IOGEgeGFpOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZQUVHUworQUVBNDtBRUE0OzExMDEgMTE2NCAxMUFCO0FFQTQ7MTEwMSAxMTY0IDExQUI7ICMgKOq6pDsg6rqkOyDhhIHhhaThhqs7IOq6pDsg4YSB4YWk4YarOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lBRU4KK0FFQTU7QUVBNTsxMTAxIDExNjQgMTFBQztBRUE1OzExMDEgMTE2NCAxMUFDOyAjICjquqU7IOq6pTsg4YSB4YWk4YasOyDquqU7IOGEgeGFpOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZQUVOSgorQUVBNjtBRUE2OzExMDEgMTE2NCAxMUFEO0FFQTY7MTEwMSAxMTY0IDExQUQ7ICMgKOq6pjsg6rqmOyDhhIHhhaThhq07IOq6pjsg4YSB4YWk4YatOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lBRU5ICitBRUE3O0FFQTc7MTEwMSAxMTY0IDExQUU7QUVBNzsxMTAxIDExNjQgMTFBRTsgIyAo6rqnOyDquqc7IOGEgeGFpOGGrjsg6rqnOyDhhIHhhaThhq47ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFFRAorQUVBODtBRUE4OzExMDEgMTE2NCAxMUFGO0FFQTg7MTEwMSAxMTY0IDExQUY7ICMgKOq6qDsg6rqoOyDhhIHhhaThhq87IOq6qDsg4YSB4YWk4YavOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lBRUwKK0FFQTk7QUVBOTsxMTAxIDExNjQgMTFCMDtBRUE5OzExMDEgMTE2NCAxMUIwOyAjICjquqk7IOq6qTsg4YSB4YWk4YawOyDquqk7IOGEgeGFpOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZQUVMRworQUVBQTtBRUFBOzExMDEgMTE2NCAxMUIxO0FFQUE7MTEwMSAxMTY0IDExQjE7ICMgKOq6qjsg6rqqOyDhhIHhhaThhrE7IOq6qjsg4YSB4YWk4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lBRUxNCitBRUFCO0FFQUI7MTEwMSAxMTY0IDExQjI7QUVBQjsxMTAxIDExNjQgMTFCMjsgIyAo6rqrOyDquqs7IOGEgeGFpOGGsjsg6rqrOyDhhIHhhaThhrI7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFFTEIKK0FFQUM7QUVBQzsxMTAxIDExNjQgMTFCMztBRUFDOzExMDEgMTE2NCAxMUIzOyAjICjquqw7IOq6rDsg4YSB4YWk4YazOyDquqw7IOGEgeGFpOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZQUVMUworQUVBRDtBRUFEOzExMDEgMTE2NCAxMUI0O0FFQUQ7MTEwMSAxMTY0IDExQjQ7ICMgKOq6rTsg6rqtOyDhhIHhhaThhrQ7IOq6rTsg4YSB4YWk4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lBRUxUCitBRUFFO0FFQUU7MTEwMSAxMTY0IDExQjU7QUVBRTsxMTAxIDExNjQgMTFCNTsgIyAo6rquOyDquq47IOGEgeGFpOGGtTsg6rquOyDhhIHhhaThhrU7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFFTFAKK0FFQUY7QUVBRjsxMTAxIDExNjQgMTFCNjtBRUFGOzExMDEgMTE2NCAxMUI2OyAjICjquq87IOq6rzsg4YSB4YWk4Ya2OyDquq87IOGEgeGFpOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZQUVMSAorQUVCMDtBRUIwOzExMDEgMTE2NCAxMUI3O0FFQjA7MTEwMSAxMTY0IDExQjc7ICMgKOq6sDsg6rqwOyDhhIHhhaThhrc7IOq6sDsg4YSB4YWk4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lBRU0KK0FFQjE7QUVCMTsxMTAxIDExNjQgMTFCODtBRUIxOzExMDEgMTE2NCAxMUI4OyAjICjqurE7IOq6sTsg4YSB4YWk4Ya4OyDqurE7IOGEgeGFpOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZQUVCCitBRUIyO0FFQjI7MTEwMSAxMTY0IDExQjk7QUVCMjsxMTAxIDExNjQgMTFCOTsgIyAo6rqyOyDqurI7IOGEgeGFpOGGuTsg6rqyOyDhhIHhhaThhrk7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFFQlMKK0FFQjM7QUVCMzsxMTAxIDExNjQgMTFCQTtBRUIzOzExMDEgMTE2NCAxMUJBOyAjICjqurM7IOq6szsg4YSB4YWk4Ya6OyDqurM7IOGEgeGFpOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZQUVTCitBRUI0O0FFQjQ7MTEwMSAxMTY0IDExQkI7QUVCNDsxMTAxIDExNjQgMTFCQjsgIyAo6rq0OyDqurQ7IOGEgeGFpOGGuzsg6rq0OyDhhIHhhaThhrs7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFFU1MKK0FFQjU7QUVCNTsxMTAxIDExNjQgMTFCQztBRUI1OzExMDEgMTE2NCAxMUJDOyAjICjqurU7IOq6tTsg4YSB4YWk4Ya8OyDqurU7IOGEgeGFpOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZQUVORworQUVCNjtBRUI2OzExMDEgMTE2NCAxMUJEO0FFQjY7MTEwMSAxMTY0IDExQkQ7ICMgKOq6tjsg6rq2OyDhhIHhhaThhr07IOq6tjsg4YSB4YWk4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lBRUoKK0FFQjc7QUVCNzsxMTAxIDExNjQgMTFCRTtBRUI3OzExMDEgMTE2NCAxMUJFOyAjICjqurc7IOq6tzsg4YSB4YWk4Ya+OyDqurc7IOGEgeGFpOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZQUVDCitBRUI4O0FFQjg7MTEwMSAxMTY0IDExQkY7QUVCODsxMTAxIDExNjQgMTFCRjsgIyAo6rq4OyDqurg7IOGEgeGFpOGGvzsg6rq4OyDhhIHhhaThhr87ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFFSworQUVCOTtBRUI5OzExMDEgMTE2NCAxMUMwO0FFQjk7MTEwMSAxMTY0IDExQzA7ICMgKOq6uTsg6rq5OyDhhIHhhaThh4A7IOq6uTsg4YSB4YWk4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lBRVQKK0FFQkE7QUVCQTsxMTAxIDExNjQgMTFDMTtBRUJBOzExMDEgMTE2NCAxMUMxOyAjICjquro7IOq6ujsg4YSB4YWk4YeBOyDquro7IOGEgeGFpOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZQUVQCitBRUJCO0FFQkI7MTEwMSAxMTY0IDExQzI7QUVCQjsxMTAxIDExNjQgMTFDMjsgIyAo6rq7OyDqurs7IOGEgeGFpOGHgjsg6rq7OyDhhIHhhaThh4I7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUFFSAorQUVCQztBRUJDOzExMDEgMTE2NTtBRUJDOzExMDEgMTE2NTsgIyAo6rq8OyDqurw7IOGEgeGFpTsg6rq8OyDhhIHhhaU7ICkgSEFOR1VMIFNZTExBQkxFIEdHRU8KK0FFQkQ7QUVCRDsxMTAxIDExNjUgMTFBODtBRUJEOzExMDEgMTE2NSAxMUE4OyAjICjqur07IOq6vTsg4YSB4YWl4YaoOyDqur07IOGEgeGFpeGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dFT0cKK0FFQkU7QUVCRTsxMTAxIDExNjUgMTFBOTtBRUJFOzExMDEgMTE2NSAxMUE5OyAjICjqur47IOq6vjsg4YSB4YWl4YapOyDqur47IOGEgeGFpeGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dFT0dHCitBRUJGO0FFQkY7MTEwMSAxMTY1IDExQUE7QUVCRjsxMTAxIDExNjUgMTFBQTsgIyAo6rq/OyDqur87IOGEgeGFpeGGqjsg6rq/OyDhhIHhhaXhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdHRU9HUworQUVDMDtBRUMwOzExMDEgMTE2NSAxMUFCO0FFQzA7MTEwMSAxMTY1IDExQUI7ICMgKOq7gDsg6ruAOyDhhIHhhaXhhqs7IOq7gDsg4YSB4YWl4YarOyApIEhBTkdVTCBTWUxMQUJMRSBHR0VPTgorQUVDMTtBRUMxOzExMDEgMTE2NSAxMUFDO0FFQzE7MTEwMSAxMTY1IDExQUM7ICMgKOq7gTsg6ruBOyDhhIHhhaXhhqw7IOq7gTsg4YSB4YWl4YasOyApIEhBTkdVTCBTWUxMQUJMRSBHR0VPTkoKK0FFQzI7QUVDMjsxMTAxIDExNjUgMTFBRDtBRUMyOzExMDEgMTE2NSAxMUFEOyAjICjqu4I7IOq7gjsg4YSB4YWl4YatOyDqu4I7IOGEgeGFpeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dFT05ICitBRUMzO0FFQzM7MTEwMSAxMTY1IDExQUU7QUVDMzsxMTAxIDExNjUgMTFBRTsgIyAo6ruDOyDqu4M7IOGEgeGFpeGGrjsg6ruDOyDhhIHhhaXhhq47ICkgSEFOR1VMIFNZTExBQkxFIEdHRU9ECitBRUM0O0FFQzQ7MTEwMSAxMTY1IDExQUY7QUVDNDsxMTAxIDExNjUgMTFBRjsgIyAo6ruEOyDqu4Q7IOGEgeGFpeGGrzsg6ruEOyDhhIHhhaXhhq87ICkgSEFOR1VMIFNZTExBQkxFIEdHRU9MCitBRUM1O0FFQzU7MTEwMSAxMTY1IDExQjA7QUVDNTsxMTAxIDExNjUgMTFCMDsgIyAo6ruFOyDqu4U7IOGEgeGFpeGGsDsg6ruFOyDhhIHhhaXhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdHRU9MRworQUVDNjtBRUM2OzExMDEgMTE2NSAxMUIxO0FFQzY7MTEwMSAxMTY1IDExQjE7ICMgKOq7hjsg6ruGOyDhhIHhhaXhhrE7IOq7hjsg4YSB4YWl4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHR0VPTE0KK0FFQzc7QUVDNzsxMTAxIDExNjUgMTFCMjtBRUM3OzExMDEgMTE2NSAxMUIyOyAjICjqu4c7IOq7hzsg4YSB4YWl4YayOyDqu4c7IOGEgeGFpeGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dFT0xCCitBRUM4O0FFQzg7MTEwMSAxMTY1IDExQjM7QUVDODsxMTAxIDExNjUgMTFCMzsgIyAo6ruIOyDqu4g7IOGEgeGFpeGGszsg6ruIOyDhhIHhhaXhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdHRU9MUworQUVDOTtBRUM5OzExMDEgMTE2NSAxMUI0O0FFQzk7MTEwMSAxMTY1IDExQjQ7ICMgKOq7iTsg6ruJOyDhhIHhhaXhhrQ7IOq7iTsg4YSB4YWl4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHR0VPTFQKK0FFQ0E7QUVDQTsxMTAxIDExNjUgMTFCNTtBRUNBOzExMDEgMTE2NSAxMUI1OyAjICjqu4o7IOq7ijsg4YSB4YWl4Ya1OyDqu4o7IOGEgeGFpeGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dFT0xQCitBRUNCO0FFQ0I7MTEwMSAxMTY1IDExQjY7QUVDQjsxMTAxIDExNjUgMTFCNjsgIyAo6ruLOyDqu4s7IOGEgeGFpeGGtjsg6ruLOyDhhIHhhaXhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdHRU9MSAorQUVDQztBRUNDOzExMDEgMTE2NSAxMUI3O0FFQ0M7MTEwMSAxMTY1IDExQjc7ICMgKOq7jDsg6ruMOyDhhIHhhaXhhrc7IOq7jDsg4YSB4YWl4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHR0VPTQorQUVDRDtBRUNEOzExMDEgMTE2NSAxMUI4O0FFQ0Q7MTEwMSAxMTY1IDExQjg7ICMgKOq7jTsg6ruNOyDhhIHhhaXhhrg7IOq7jTsg4YSB4YWl4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBHR0VPQgorQUVDRTtBRUNFOzExMDEgMTE2NSAxMUI5O0FFQ0U7MTEwMSAxMTY1IDExQjk7ICMgKOq7jjsg6ruOOyDhhIHhhaXhhrk7IOq7jjsg4YSB4YWl4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHR0VPQlMKK0FFQ0Y7QUVDRjsxMTAxIDExNjUgMTFCQTtBRUNGOzExMDEgMTE2NSAxMUJBOyAjICjqu487IOq7jzsg4YSB4YWl4Ya6OyDqu487IOGEgeGFpeGGujsgKSBIQU5HVUwgU1lMTEFCTEUgR0dFT1MKK0FFRDA7QUVEMDsxMTAxIDExNjUgMTFCQjtBRUQwOzExMDEgMTE2NSAxMUJCOyAjICjqu5A7IOq7kDsg4YSB4YWl4Ya7OyDqu5A7IOGEgeGFpeGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgR0dFT1NTCitBRUQxO0FFRDE7MTEwMSAxMTY1IDExQkM7QUVEMTsxMTAxIDExNjUgMTFCQzsgIyAo6ruROyDqu5E7IOGEgeGFpeGGvDsg6ruROyDhhIHhhaXhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdHRU9ORworQUVEMjtBRUQyOzExMDEgMTE2NSAxMUJEO0FFRDI7MTEwMSAxMTY1IDExQkQ7ICMgKOq7kjsg6ruSOyDhhIHhhaXhhr07IOq7kjsg4YSB4YWl4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHR0VPSgorQUVEMztBRUQzOzExMDEgMTE2NSAxMUJFO0FFRDM7MTEwMSAxMTY1IDExQkU7ICMgKOq7kzsg6ruTOyDhhIHhhaXhhr47IOq7kzsg4YSB4YWl4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBHR0VPQworQUVENDtBRUQ0OzExMDEgMTE2NSAxMUJGO0FFRDQ7MTEwMSAxMTY1IDExQkY7ICMgKOq7lDsg6ruUOyDhhIHhhaXhhr87IOq7lDsg4YSB4YWl4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHR0VPSworQUVENTtBRUQ1OzExMDEgMTE2NSAxMUMwO0FFRDU7MTEwMSAxMTY1IDExQzA7ICMgKOq7lTsg6ruVOyDhhIHhhaXhh4A7IOq7lTsg4YSB4YWl4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHR0VPVAorQUVENjtBRUQ2OzExMDEgMTE2NSAxMUMxO0FFRDY7MTEwMSAxMTY1IDExQzE7ICMgKOq7ljsg6ruWOyDhhIHhhaXhh4E7IOq7ljsg4YSB4YWl4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBHR0VPUAorQUVENztBRUQ3OzExMDEgMTE2NSAxMUMyO0FFRDc7MTEwMSAxMTY1IDExQzI7ICMgKOq7lzsg6ruXOyDhhIHhhaXhh4I7IOq7lzsg4YSB4YWl4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHR0VPSAorQUVEODtBRUQ4OzExMDEgMTE2NjtBRUQ4OzExMDEgMTE2NjsgIyAo6ruYOyDqu5g7IOGEgeGFpjsg6ruYOyDhhIHhhaY7ICkgSEFOR1VMIFNZTExBQkxFIEdHRQorQUVEOTtBRUQ5OzExMDEgMTE2NiAxMUE4O0FFRDk7MTEwMSAxMTY2IDExQTg7ICMgKOq7mTsg6ruZOyDhhIHhhabhhqg7IOq7mTsg4YSB4YWm4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBHR0VHCitBRURBO0FFREE7MTEwMSAxMTY2IDExQTk7QUVEQTsxMTAxIDExNjYgMTFBOTsgIyAo6ruaOyDqu5o7IOGEgeGFpuGGqTsg6ruaOyDhhIHhhabhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEdHRUdHCitBRURCO0FFREI7MTEwMSAxMTY2IDExQUE7QUVEQjsxMTAxIDExNjYgMTFBQTsgIyAo6rubOyDqu5s7IOGEgeGFpuGGqjsg6rubOyDhhIHhhabhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdHRUdTCitBRURDO0FFREM7MTEwMSAxMTY2IDExQUI7QUVEQzsxMTAxIDExNjYgMTFBQjsgIyAo6rucOyDqu5w7IOGEgeGFpuGGqzsg6rucOyDhhIHhhabhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEdHRU4KK0FFREQ7QUVERDsxMTAxIDExNjYgMTFBQztBRUREOzExMDEgMTE2NiAxMUFDOyAjICjqu507IOq7nTsg4YSB4YWm4YasOyDqu507IOGEgeGFpuGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dFTkoKK0FFREU7QUVERTsxMTAxIDExNjYgMTFBRDtBRURFOzExMDEgMTE2NiAxMUFEOyAjICjqu547IOq7njsg4YSB4YWm4YatOyDqu547IOGEgeGFpuGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dFTkgKK0FFREY7QUVERjsxMTAxIDExNjYgMTFBRTtBRURGOzExMDEgMTE2NiAxMUFFOyAjICjqu587IOq7nzsg4YSB4YWm4YauOyDqu587IOGEgeGFpuGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dFRAorQUVFMDtBRUUwOzExMDEgMTE2NiAxMUFGO0FFRTA7MTEwMSAxMTY2IDExQUY7ICMgKOq7oDsg6rugOyDhhIHhhabhhq87IOq7oDsg4YSB4YWm4YavOyApIEhBTkdVTCBTWUxMQUJMRSBHR0VMCitBRUUxO0FFRTE7MTEwMSAxMTY2IDExQjA7QUVFMTsxMTAxIDExNjYgMTFCMDsgIyAo6ruhOyDqu6E7IOGEgeGFpuGGsDsg6ruhOyDhhIHhhabhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdHRUxHCitBRUUyO0FFRTI7MTEwMSAxMTY2IDExQjE7QUVFMjsxMTAxIDExNjYgMTFCMTsgIyAo6ruiOyDqu6I7IOGEgeGFpuGGsTsg6ruiOyDhhIHhhabhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEdHRUxNCitBRUUzO0FFRTM7MTEwMSAxMTY2IDExQjI7QUVFMzsxMTAxIDExNjYgMTFCMjsgIyAo6rujOyDqu6M7IOGEgeGFpuGGsjsg6rujOyDhhIHhhabhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEdHRUxCCitBRUU0O0FFRTQ7MTEwMSAxMTY2IDExQjM7QUVFNDsxMTAxIDExNjYgMTFCMzsgIyAo6rukOyDqu6Q7IOGEgeGFpuGGszsg6rukOyDhhIHhhabhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdHRUxTCitBRUU1O0FFRTU7MTEwMSAxMTY2IDExQjQ7QUVFNTsxMTAxIDExNjYgMTFCNDsgIyAo6rulOyDqu6U7IOGEgeGFpuGGtDsg6rulOyDhhIHhhabhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEdHRUxUCitBRUU2O0FFRTY7MTEwMSAxMTY2IDExQjU7QUVFNjsxMTAxIDExNjYgMTFCNTsgIyAo6rumOyDqu6Y7IOGEgeGFpuGGtTsg6rumOyDhhIHhhabhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEdHRUxQCitBRUU3O0FFRTc7MTEwMSAxMTY2IDExQjY7QUVFNzsxMTAxIDExNjYgMTFCNjsgIyAo6runOyDqu6c7IOGEgeGFpuGGtjsg6runOyDhhIHhhabhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdHRUxICitBRUU4O0FFRTg7MTEwMSAxMTY2IDExQjc7QUVFODsxMTAxIDExNjYgMTFCNzsgIyAo6ruoOyDqu6g7IOGEgeGFpuGGtzsg6ruoOyDhhIHhhabhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEdHRU0KK0FFRTk7QUVFOTsxMTAxIDExNjYgMTFCODtBRUU5OzExMDEgMTE2NiAxMUI4OyAjICjqu6k7IOq7qTsg4YSB4YWm4Ya4OyDqu6k7IOGEgeGFpuGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dFQgorQUVFQTtBRUVBOzExMDEgMTE2NiAxMUI5O0FFRUE7MTEwMSAxMTY2IDExQjk7ICMgKOq7qjsg6ruqOyDhhIHhhabhhrk7IOq7qjsg4YSB4YWm4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHR0VCUworQUVFQjtBRUVCOzExMDEgMTE2NiAxMUJBO0FFRUI7MTEwMSAxMTY2IDExQkE7ICMgKOq7qzsg6rurOyDhhIHhhabhhro7IOq7qzsg4YSB4YWm4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBHR0VTCitBRUVDO0FFRUM7MTEwMSAxMTY2IDExQkI7QUVFQzsxMTAxIDExNjYgMTFCQjsgIyAo6rusOyDqu6w7IOGEgeGFpuGGuzsg6rusOyDhhIHhhabhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEdHRVNTCitBRUVEO0FFRUQ7MTEwMSAxMTY2IDExQkM7QUVFRDsxMTAxIDExNjYgMTFCQzsgIyAo6rutOyDqu607IOGEgeGFpuGGvDsg6rutOyDhhIHhhabhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdHRU5HCitBRUVFO0FFRUU7MTEwMSAxMTY2IDExQkQ7QUVFRTsxMTAxIDExNjYgMTFCRDsgIyAo6ruuOyDqu647IOGEgeGFpuGGvTsg6ruuOyDhhIHhhabhhr07ICkgSEFOR1VMIFNZTExBQkxFIEdHRUoKK0FFRUY7QUVFRjsxMTAxIDExNjYgMTFCRTtBRUVGOzExMDEgMTE2NiAxMUJFOyAjICjqu687IOq7rzsg4YSB4YWm4Ya+OyDqu687IOGEgeGFpuGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dFQworQUVGMDtBRUYwOzExMDEgMTE2NiAxMUJGO0FFRjA7MTEwMSAxMTY2IDExQkY7ICMgKOq7sDsg6ruwOyDhhIHhhabhhr87IOq7sDsg4YSB4YWm4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHR0VLCitBRUYxO0FFRjE7MTEwMSAxMTY2IDExQzA7QUVGMTsxMTAxIDExNjYgMTFDMDsgIyAo6ruxOyDqu7E7IOGEgeGFpuGHgDsg6ruxOyDhhIHhhabhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEdHRVQKK0FFRjI7QUVGMjsxMTAxIDExNjYgMTFDMTtBRUYyOzExMDEgMTE2NiAxMUMxOyAjICjqu7I7IOq7sjsg4YSB4YWm4YeBOyDqu7I7IOGEgeGFpuGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dFUAorQUVGMztBRUYzOzExMDEgMTE2NiAxMUMyO0FFRjM7MTEwMSAxMTY2IDExQzI7ICMgKOq7szsg6ruzOyDhhIHhhabhh4I7IOq7szsg4YSB4YWm4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHR0VICitBRUY0O0FFRjQ7MTEwMSAxMTY3O0FFRjQ7MTEwMSAxMTY3OyAjICjqu7Q7IOq7tDsg4YSB4YWnOyDqu7Q7IOGEgeGFpzsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZRU8KK0FFRjU7QUVGNTsxMTAxIDExNjcgMTFBODtBRUY1OzExMDEgMTE2NyAxMUE4OyAjICjqu7U7IOq7tTsg4YSB4YWn4YaoOyDqu7U7IOGEgeGFp+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZRU9HCitBRUY2O0FFRjY7MTEwMSAxMTY3IDExQTk7QUVGNjsxMTAxIDExNjcgMTFBOTsgIyAo6ru2OyDqu7Y7IOGEgeGFp+GGqTsg6ru2OyDhhIHhhafhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUVPR0cKK0FFRjc7QUVGNzsxMTAxIDExNjcgMTFBQTtBRUY3OzExMDEgMTE2NyAxMUFBOyAjICjqu7c7IOq7tzsg4YSB4YWn4YaqOyDqu7c7IOGEgeGFp+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZRU9HUworQUVGODtBRUY4OzExMDEgMTE2NyAxMUFCO0FFRjg7MTEwMSAxMTY3IDExQUI7ICMgKOq7uDsg6ru4OyDhhIHhhafhhqs7IOq7uDsg4YSB4YWn4YarOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFT04KK0FFRjk7QUVGOTsxMTAxIDExNjcgMTFBQztBRUY5OzExMDEgMTE2NyAxMUFDOyAjICjqu7k7IOq7uTsg4YSB4YWn4YasOyDqu7k7IOGEgeGFp+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZRU9OSgorQUVGQTtBRUZBOzExMDEgMTE2NyAxMUFEO0FFRkE7MTEwMSAxMTY3IDExQUQ7ICMgKOq7ujsg6ru6OyDhhIHhhafhhq07IOq7ujsg4YSB4YWn4YatOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFT05ICitBRUZCO0FFRkI7MTEwMSAxMTY3IDExQUU7QUVGQjsxMTAxIDExNjcgMTFBRTsgIyAo6ru7OyDqu7s7IOGEgeGFp+GGrjsg6ru7OyDhhIHhhafhhq47ICkgSEFOR1VMIFNZTExBQkxFIEdHWUVPRAorQUVGQztBRUZDOzExMDEgMTE2NyAxMUFGO0FFRkM7MTEwMSAxMTY3IDExQUY7ICMgKOq7vDsg6ru8OyDhhIHhhafhhq87IOq7vDsg4YSB4YWn4YavOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFT0wKK0FFRkQ7QUVGRDsxMTAxIDExNjcgMTFCMDtBRUZEOzExMDEgMTE2NyAxMUIwOyAjICjqu707IOq7vTsg4YSB4YWn4YawOyDqu707IOGEgeGFp+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZRU9MRworQUVGRTtBRUZFOzExMDEgMTE2NyAxMUIxO0FFRkU7MTEwMSAxMTY3IDExQjE7ICMgKOq7vjsg6ru+OyDhhIHhhafhhrE7IOq7vjsg4YSB4YWn4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFT0xNCitBRUZGO0FFRkY7MTEwMSAxMTY3IDExQjI7QUVGRjsxMTAxIDExNjcgMTFCMjsgIyAo6ru/OyDqu787IOGEgeGFp+GGsjsg6ru/OyDhhIHhhafhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUVPTEIKK0FGMDA7QUYwMDsxMTAxIDExNjcgMTFCMztBRjAwOzExMDEgMTE2NyAxMUIzOyAjICjqvIA7IOq8gDsg4YSB4YWn4YazOyDqvIA7IOGEgeGFp+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZRU9MUworQUYwMTtBRjAxOzExMDEgMTE2NyAxMUI0O0FGMDE7MTEwMSAxMTY3IDExQjQ7ICMgKOq8gTsg6ryBOyDhhIHhhafhhrQ7IOq8gTsg4YSB4YWn4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFT0xUCitBRjAyO0FGMDI7MTEwMSAxMTY3IDExQjU7QUYwMjsxMTAxIDExNjcgMTFCNTsgIyAo6ryCOyDqvII7IOGEgeGFp+GGtTsg6ryCOyDhhIHhhafhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUVPTFAKK0FGMDM7QUYwMzsxMTAxIDExNjcgMTFCNjtBRjAzOzExMDEgMTE2NyAxMUI2OyAjICjqvIM7IOq8gzsg4YSB4YWn4Ya2OyDqvIM7IOGEgeGFp+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZRU9MSAorQUYwNDtBRjA0OzExMDEgMTE2NyAxMUI3O0FGMDQ7MTEwMSAxMTY3IDExQjc7ICMgKOq8hDsg6ryEOyDhhIHhhafhhrc7IOq8hDsg4YSB4YWn4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFT00KK0FGMDU7QUYwNTsxMTAxIDExNjcgMTFCODtBRjA1OzExMDEgMTE2NyAxMUI4OyAjICjqvIU7IOq8hTsg4YSB4YWn4Ya4OyDqvIU7IOGEgeGFp+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZRU9CCitBRjA2O0FGMDY7MTEwMSAxMTY3IDExQjk7QUYwNjsxMTAxIDExNjcgMTFCOTsgIyAo6ryGOyDqvIY7IOGEgeGFp+GGuTsg6ryGOyDhhIHhhafhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUVPQlMKK0FGMDc7QUYwNzsxMTAxIDExNjcgMTFCQTtBRjA3OzExMDEgMTE2NyAxMUJBOyAjICjqvIc7IOq8hzsg4YSB4YWn4Ya6OyDqvIc7IOGEgeGFp+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZRU9TCitBRjA4O0FGMDg7MTEwMSAxMTY3IDExQkI7QUYwODsxMTAxIDExNjcgMTFCQjsgIyAo6ryIOyDqvIg7IOGEgeGFp+GGuzsg6ryIOyDhhIHhhafhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUVPU1MKK0FGMDk7QUYwOTsxMTAxIDExNjcgMTFCQztBRjA5OzExMDEgMTE2NyAxMUJDOyAjICjqvIk7IOq8iTsg4YSB4YWn4Ya8OyDqvIk7IOGEgeGFp+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZRU9ORworQUYwQTtBRjBBOzExMDEgMTE2NyAxMUJEO0FGMEE7MTEwMSAxMTY3IDExQkQ7ICMgKOq8ijsg6ryKOyDhhIHhhafhhr07IOq8ijsg4YSB4YWn4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFT0oKK0FGMEI7QUYwQjsxMTAxIDExNjcgMTFCRTtBRjBCOzExMDEgMTE2NyAxMUJFOyAjICjqvIs7IOq8izsg4YSB4YWn4Ya+OyDqvIs7IOGEgeGFp+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZRU9DCitBRjBDO0FGMEM7MTEwMSAxMTY3IDExQkY7QUYwQzsxMTAxIDExNjcgMTFCRjsgIyAo6ryMOyDqvIw7IOGEgeGFp+GGvzsg6ryMOyDhhIHhhafhhr87ICkgSEFOR1VMIFNZTExBQkxFIEdHWUVPSworQUYwRDtBRjBEOzExMDEgMTE2NyAxMUMwO0FGMEQ7MTEwMSAxMTY3IDExQzA7ICMgKOq8jTsg6ryNOyDhhIHhhafhh4A7IOq8jTsg4YSB4YWn4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFT1QKK0FGMEU7QUYwRTsxMTAxIDExNjcgMTFDMTtBRjBFOzExMDEgMTE2NyAxMUMxOyAjICjqvI47IOq8jjsg4YSB4YWn4YeBOyDqvI47IOGEgeGFp+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZRU9QCitBRjBGO0FGMEY7MTEwMSAxMTY3IDExQzI7QUYwRjsxMTAxIDExNjcgMTFDMjsgIyAo6ryPOyDqvI87IOGEgeGFp+GHgjsg6ryPOyDhhIHhhafhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUVPSAorQUYxMDtBRjEwOzExMDEgMTE2ODtBRjEwOzExMDEgMTE2ODsgIyAo6ryQOyDqvJA7IOGEgeGFqDsg6ryQOyDhhIHhhag7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUUKK0FGMTE7QUYxMTsxMTAxIDExNjggMTFBODtBRjExOzExMDEgMTE2OCAxMUE4OyAjICjqvJE7IOq8kTsg4YSB4YWo4YaoOyDqvJE7IOGEgeGFqOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZRUcKK0FGMTI7QUYxMjsxMTAxIDExNjggMTFBOTtBRjEyOzExMDEgMTE2OCAxMUE5OyAjICjqvJI7IOq8kjsg4YSB4YWo4YapOyDqvJI7IOGEgeGFqOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZRUdHCitBRjEzO0FGMTM7MTEwMSAxMTY4IDExQUE7QUYxMzsxMTAxIDExNjggMTFBQTsgIyAo6ryTOyDqvJM7IOGEgeGFqOGGqjsg6ryTOyDhhIHhhajhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUVHUworQUYxNDtBRjE0OzExMDEgMTE2OCAxMUFCO0FGMTQ7MTEwMSAxMTY4IDExQUI7ICMgKOq8lDsg6ryUOyDhhIHhhajhhqs7IOq8lDsg4YSB4YWo4YarOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFTgorQUYxNTtBRjE1OzExMDEgMTE2OCAxMUFDO0FGMTU7MTEwMSAxMTY4IDExQUM7ICMgKOq8lTsg6ryVOyDhhIHhhajhhqw7IOq8lTsg4YSB4YWo4YasOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFTkoKK0FGMTY7QUYxNjsxMTAxIDExNjggMTFBRDtBRjE2OzExMDEgMTE2OCAxMUFEOyAjICjqvJY7IOq8ljsg4YSB4YWo4YatOyDqvJY7IOGEgeGFqOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZRU5ICitBRjE3O0FGMTc7MTEwMSAxMTY4IDExQUU7QUYxNzsxMTAxIDExNjggMTFBRTsgIyAo6ryXOyDqvJc7IOGEgeGFqOGGrjsg6ryXOyDhhIHhhajhhq47ICkgSEFOR1VMIFNZTExBQkxFIEdHWUVECitBRjE4O0FGMTg7MTEwMSAxMTY4IDExQUY7QUYxODsxMTAxIDExNjggMTFBRjsgIyAo6ryYOyDqvJg7IOGEgeGFqOGGrzsg6ryYOyDhhIHhhajhhq87ICkgSEFOR1VMIFNZTExBQkxFIEdHWUVMCitBRjE5O0FGMTk7MTEwMSAxMTY4IDExQjA7QUYxOTsxMTAxIDExNjggMTFCMDsgIyAo6ryZOyDqvJk7IOGEgeGFqOGGsDsg6ryZOyDhhIHhhajhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUVMRworQUYxQTtBRjFBOzExMDEgMTE2OCAxMUIxO0FGMUE7MTEwMSAxMTY4IDExQjE7ICMgKOq8mjsg6ryaOyDhhIHhhajhhrE7IOq8mjsg4YSB4YWo4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFTE0KK0FGMUI7QUYxQjsxMTAxIDExNjggMTFCMjtBRjFCOzExMDEgMTE2OCAxMUIyOyAjICjqvJs7IOq8mzsg4YSB4YWo4YayOyDqvJs7IOGEgeGFqOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZRUxCCitBRjFDO0FGMUM7MTEwMSAxMTY4IDExQjM7QUYxQzsxMTAxIDExNjggMTFCMzsgIyAo6rycOyDqvJw7IOGEgeGFqOGGszsg6rycOyDhhIHhhajhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUVMUworQUYxRDtBRjFEOzExMDEgMTE2OCAxMUI0O0FGMUQ7MTEwMSAxMTY4IDExQjQ7ICMgKOq8nTsg6rydOyDhhIHhhajhhrQ7IOq8nTsg4YSB4YWo4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFTFQKK0FGMUU7QUYxRTsxMTAxIDExNjggMTFCNTtBRjFFOzExMDEgMTE2OCAxMUI1OyAjICjqvJ47IOq8njsg4YSB4YWo4Ya1OyDqvJ47IOGEgeGFqOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZRUxQCitBRjFGO0FGMUY7MTEwMSAxMTY4IDExQjY7QUYxRjsxMTAxIDExNjggMTFCNjsgIyAo6ryfOyDqvJ87IOGEgeGFqOGGtjsg6ryfOyDhhIHhhajhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUVMSAorQUYyMDtBRjIwOzExMDEgMTE2OCAxMUI3O0FGMjA7MTEwMSAxMTY4IDExQjc7ICMgKOq8oDsg6rygOyDhhIHhhajhhrc7IOq8oDsg4YSB4YWo4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFTQorQUYyMTtBRjIxOzExMDEgMTE2OCAxMUI4O0FGMjE7MTEwMSAxMTY4IDExQjg7ICMgKOq8oTsg6ryhOyDhhIHhhajhhrg7IOq8oTsg4YSB4YWo4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFQgorQUYyMjtBRjIyOzExMDEgMTE2OCAxMUI5O0FGMjI7MTEwMSAxMTY4IDExQjk7ICMgKOq8ojsg6ryiOyDhhIHhhajhhrk7IOq8ojsg4YSB4YWo4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFQlMKK0FGMjM7QUYyMzsxMTAxIDExNjggMTFCQTtBRjIzOzExMDEgMTE2OCAxMUJBOyAjICjqvKM7IOq8ozsg4YSB4YWo4Ya6OyDqvKM7IOGEgeGFqOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZRVMKK0FGMjQ7QUYyNDsxMTAxIDExNjggMTFCQjtBRjI0OzExMDEgMTE2OCAxMUJCOyAjICjqvKQ7IOq8pDsg4YSB4YWo4Ya7OyDqvKQ7IOGEgeGFqOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZRVNTCitBRjI1O0FGMjU7MTEwMSAxMTY4IDExQkM7QUYyNTsxMTAxIDExNjggMTFCQzsgIyAo6rylOyDqvKU7IOGEgeGFqOGGvDsg6rylOyDhhIHhhajhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUVORworQUYyNjtBRjI2OzExMDEgMTE2OCAxMUJEO0FGMjY7MTEwMSAxMTY4IDExQkQ7ICMgKOq8pjsg6rymOyDhhIHhhajhhr07IOq8pjsg4YSB4YWo4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFSgorQUYyNztBRjI3OzExMDEgMTE2OCAxMUJFO0FGMjc7MTEwMSAxMTY4IDExQkU7ICMgKOq8pzsg6rynOyDhhIHhhajhhr47IOq8pzsg4YSB4YWo4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFQworQUYyODtBRjI4OzExMDEgMTE2OCAxMUJGO0FGMjg7MTEwMSAxMTY4IDExQkY7ICMgKOq8qDsg6ryoOyDhhIHhhajhhr87IOq8qDsg4YSB4YWo4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFSworQUYyOTtBRjI5OzExMDEgMTE2OCAxMUMwO0FGMjk7MTEwMSAxMTY4IDExQzA7ICMgKOq8qTsg6rypOyDhhIHhhajhh4A7IOq8qTsg4YSB4YWo4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFVAorQUYyQTtBRjJBOzExMDEgMTE2OCAxMUMxO0FGMkE7MTEwMSAxMTY4IDExQzE7ICMgKOq8qjsg6ryqOyDhhIHhhajhh4E7IOq8qjsg4YSB4YWo4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFUAorQUYyQjtBRjJCOzExMDEgMTE2OCAxMUMyO0FGMkI7MTEwMSAxMTY4IDExQzI7ICMgKOq8qzsg6ryrOyDhhIHhhajhh4I7IOq8qzsg4YSB4YWo4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lFSAorQUYyQztBRjJDOzExMDEgMTE2OTtBRjJDOzExMDEgMTE2OTsgIyAo6rysOyDqvKw7IOGEgeGFqTsg6rysOyDhhIHhhak7ICkgSEFOR1VMIFNZTExBQkxFIEdHTworQUYyRDtBRjJEOzExMDEgMTE2OSAxMUE4O0FGMkQ7MTEwMSAxMTY5IDExQTg7ICMgKOq8rTsg6rytOyDhhIHhhanhhqg7IOq8rTsg4YSB4YWp4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBHR09HCitBRjJFO0FGMkU7MTEwMSAxMTY5IDExQTk7QUYyRTsxMTAxIDExNjkgMTFBOTsgIyAo6ryuOyDqvK47IOGEgeGFqeGGqTsg6ryuOyDhhIHhhanhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEdHT0dHCitBRjJGO0FGMkY7MTEwMSAxMTY5IDExQUE7QUYyRjsxMTAxIDExNjkgMTFBQTsgIyAo6ryvOyDqvK87IOGEgeGFqeGGqjsg6ryvOyDhhIHhhanhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdHT0dTCitBRjMwO0FGMzA7MTEwMSAxMTY5IDExQUI7QUYzMDsxMTAxIDExNjkgMTFBQjsgIyAo6rywOyDqvLA7IOGEgeGFqeGGqzsg6rywOyDhhIHhhanhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEdHT04KK0FGMzE7QUYzMTsxMTAxIDExNjkgMTFBQztBRjMxOzExMDEgMTE2OSAxMUFDOyAjICjqvLE7IOq8sTsg4YSB4YWp4YasOyDqvLE7IOGEgeGFqeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dPTkoKK0FGMzI7QUYzMjsxMTAxIDExNjkgMTFBRDtBRjMyOzExMDEgMTE2OSAxMUFEOyAjICjqvLI7IOq8sjsg4YSB4YWp4YatOyDqvLI7IOGEgeGFqeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dPTkgKK0FGMzM7QUYzMzsxMTAxIDExNjkgMTFBRTtBRjMzOzExMDEgMTE2OSAxMUFFOyAjICjqvLM7IOq8szsg4YSB4YWp4YauOyDqvLM7IOGEgeGFqeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dPRAorQUYzNDtBRjM0OzExMDEgMTE2OSAxMUFGO0FGMzQ7MTEwMSAxMTY5IDExQUY7ICMgKOq8tDsg6ry0OyDhhIHhhanhhq87IOq8tDsg4YSB4YWp4YavOyApIEhBTkdVTCBTWUxMQUJMRSBHR09MCitBRjM1O0FGMzU7MTEwMSAxMTY5IDExQjA7QUYzNTsxMTAxIDExNjkgMTFCMDsgIyAo6ry1OyDqvLU7IOGEgeGFqeGGsDsg6ry1OyDhhIHhhanhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdHT0xHCitBRjM2O0FGMzY7MTEwMSAxMTY5IDExQjE7QUYzNjsxMTAxIDExNjkgMTFCMTsgIyAo6ry2OyDqvLY7IOGEgeGFqeGGsTsg6ry2OyDhhIHhhanhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEdHT0xNCitBRjM3O0FGMzc7MTEwMSAxMTY5IDExQjI7QUYzNzsxMTAxIDExNjkgMTFCMjsgIyAo6ry3OyDqvLc7IOGEgeGFqeGGsjsg6ry3OyDhhIHhhanhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEdHT0xCCitBRjM4O0FGMzg7MTEwMSAxMTY5IDExQjM7QUYzODsxMTAxIDExNjkgMTFCMzsgIyAo6ry4OyDqvLg7IOGEgeGFqeGGszsg6ry4OyDhhIHhhanhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdHT0xTCitBRjM5O0FGMzk7MTEwMSAxMTY5IDExQjQ7QUYzOTsxMTAxIDExNjkgMTFCNDsgIyAo6ry5OyDqvLk7IOGEgeGFqeGGtDsg6ry5OyDhhIHhhanhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEdHT0xUCitBRjNBO0FGM0E7MTEwMSAxMTY5IDExQjU7QUYzQTsxMTAxIDExNjkgMTFCNTsgIyAo6ry6OyDqvLo7IOGEgeGFqeGGtTsg6ry6OyDhhIHhhanhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEdHT0xQCitBRjNCO0FGM0I7MTEwMSAxMTY5IDExQjY7QUYzQjsxMTAxIDExNjkgMTFCNjsgIyAo6ry7OyDqvLs7IOGEgeGFqeGGtjsg6ry7OyDhhIHhhanhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdHT0xICitBRjNDO0FGM0M7MTEwMSAxMTY5IDExQjc7QUYzQzsxMTAxIDExNjkgMTFCNzsgIyAo6ry8OyDqvLw7IOGEgeGFqeGGtzsg6ry8OyDhhIHhhanhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEdHT00KK0FGM0Q7QUYzRDsxMTAxIDExNjkgMTFCODtBRjNEOzExMDEgMTE2OSAxMUI4OyAjICjqvL07IOq8vTsg4YSB4YWp4Ya4OyDqvL07IOGEgeGFqeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dPQgorQUYzRTtBRjNFOzExMDEgMTE2OSAxMUI5O0FGM0U7MTEwMSAxMTY5IDExQjk7ICMgKOq8vjsg6ry+OyDhhIHhhanhhrk7IOq8vjsg4YSB4YWp4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHR09CUworQUYzRjtBRjNGOzExMDEgMTE2OSAxMUJBO0FGM0Y7MTEwMSAxMTY5IDExQkE7ICMgKOq8vzsg6ry/OyDhhIHhhanhhro7IOq8vzsg4YSB4YWp4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBHR09TCitBRjQwO0FGNDA7MTEwMSAxMTY5IDExQkI7QUY0MDsxMTAxIDExNjkgMTFCQjsgIyAo6r2AOyDqvYA7IOGEgeGFqeGGuzsg6r2AOyDhhIHhhanhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEdHT1NTCitBRjQxO0FGNDE7MTEwMSAxMTY5IDExQkM7QUY0MTsxMTAxIDExNjkgMTFCQzsgIyAo6r2BOyDqvYE7IOGEgeGFqeGGvDsg6r2BOyDhhIHhhanhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdHT05HCitBRjQyO0FGNDI7MTEwMSAxMTY5IDExQkQ7QUY0MjsxMTAxIDExNjkgMTFCRDsgIyAo6r2COyDqvYI7IOGEgeGFqeGGvTsg6r2COyDhhIHhhanhhr07ICkgSEFOR1VMIFNZTExBQkxFIEdHT0oKK0FGNDM7QUY0MzsxMTAxIDExNjkgMTFCRTtBRjQzOzExMDEgMTE2OSAxMUJFOyAjICjqvYM7IOq9gzsg4YSB4YWp4Ya+OyDqvYM7IOGEgeGFqeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dPQworQUY0NDtBRjQ0OzExMDEgMTE2OSAxMUJGO0FGNDQ7MTEwMSAxMTY5IDExQkY7ICMgKOq9hDsg6r2EOyDhhIHhhanhhr87IOq9hDsg4YSB4YWp4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHR09LCitBRjQ1O0FGNDU7MTEwMSAxMTY5IDExQzA7QUY0NTsxMTAxIDExNjkgMTFDMDsgIyAo6r2FOyDqvYU7IOGEgeGFqeGHgDsg6r2FOyDhhIHhhanhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEdHT1QKK0FGNDY7QUY0NjsxMTAxIDExNjkgMTFDMTtBRjQ2OzExMDEgMTE2OSAxMUMxOyAjICjqvYY7IOq9hjsg4YSB4YWp4YeBOyDqvYY7IOGEgeGFqeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dPUAorQUY0NztBRjQ3OzExMDEgMTE2OSAxMUMyO0FGNDc7MTEwMSAxMTY5IDExQzI7ICMgKOq9hzsg6r2HOyDhhIHhhanhh4I7IOq9hzsg4YSB4YWp4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHR09ICitBRjQ4O0FGNDg7MTEwMSAxMTZBO0FGNDg7MTEwMSAxMTZBOyAjICjqvYg7IOq9iDsg4YSB4YWqOyDqvYg7IOGEgeGFqjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXQQorQUY0OTtBRjQ5OzExMDEgMTE2QSAxMUE4O0FGNDk7MTEwMSAxMTZBIDExQTg7ICMgKOq9iTsg6r2JOyDhhIHhharhhqg7IOq9iTsg4YSB4YWq4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dBRworQUY0QTtBRjRBOzExMDEgMTE2QSAxMUE5O0FGNEE7MTEwMSAxMTZBIDExQTk7ICMgKOq9ijsg6r2KOyDhhIHhharhhqk7IOq9ijsg4YSB4YWq4YapOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dBR0cKK0FGNEI7QUY0QjsxMTAxIDExNkEgMTFBQTtBRjRCOzExMDEgMTE2QSAxMUFBOyAjICjqvYs7IOq9izsg4YSB4YWq4YaqOyDqvYs7IOGEgeGFquGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXQUdTCitBRjRDO0FGNEM7MTEwMSAxMTZBIDExQUI7QUY0QzsxMTAxIDExNkEgMTFBQjsgIyAo6r2MOyDqvYw7IOGEgeGFquGGqzsg6r2MOyDhhIHhharhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FOCitBRjREO0FGNEQ7MTEwMSAxMTZBIDExQUM7QUY0RDsxMTAxIDExNkEgMTFBQzsgIyAo6r2NOyDqvY07IOGEgeGFquGGrDsg6r2NOyDhhIHhharhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FOSgorQUY0RTtBRjRFOzExMDEgMTE2QSAxMUFEO0FGNEU7MTEwMSAxMTZBIDExQUQ7ICMgKOq9jjsg6r2OOyDhhIHhharhhq07IOq9jjsg4YSB4YWq4YatOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dBTkgKK0FGNEY7QUY0RjsxMTAxIDExNkEgMTFBRTtBRjRGOzExMDEgMTE2QSAxMUFFOyAjICjqvY87IOq9jzsg4YSB4YWq4YauOyDqvY87IOGEgeGFquGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXQUQKK0FGNTA7QUY1MDsxMTAxIDExNkEgMTFBRjtBRjUwOzExMDEgMTE2QSAxMUFGOyAjICjqvZA7IOq9kDsg4YSB4YWq4YavOyDqvZA7IOGEgeGFquGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXQUwKK0FGNTE7QUY1MTsxMTAxIDExNkEgMTFCMDtBRjUxOzExMDEgMTE2QSAxMUIwOyAjICjqvZE7IOq9kTsg4YSB4YWq4YawOyDqvZE7IOGEgeGFquGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXQUxHCitBRjUyO0FGNTI7MTEwMSAxMTZBIDExQjE7QUY1MjsxMTAxIDExNkEgMTFCMTsgIyAo6r2SOyDqvZI7IOGEgeGFquGGsTsg6r2SOyDhhIHhharhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FMTQorQUY1MztBRjUzOzExMDEgMTE2QSAxMUIyO0FGNTM7MTEwMSAxMTZBIDExQjI7ICMgKOq9kzsg6r2TOyDhhIHhharhhrI7IOq9kzsg4YSB4YWq4YayOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dBTEIKK0FGNTQ7QUY1NDsxMTAxIDExNkEgMTFCMztBRjU0OzExMDEgMTE2QSAxMUIzOyAjICjqvZQ7IOq9lDsg4YSB4YWq4YazOyDqvZQ7IOGEgeGFquGGszsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXQUxTCitBRjU1O0FGNTU7MTEwMSAxMTZBIDExQjQ7QUY1NTsxMTAxIDExNkEgMTFCNDsgIyAo6r2VOyDqvZU7IOGEgeGFquGGtDsg6r2VOyDhhIHhharhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FMVAorQUY1NjtBRjU2OzExMDEgMTE2QSAxMUI1O0FGNTY7MTEwMSAxMTZBIDExQjU7ICMgKOq9ljsg6r2WOyDhhIHhharhhrU7IOq9ljsg4YSB4YWq4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dBTFAKK0FGNTc7QUY1NzsxMTAxIDExNkEgMTFCNjtBRjU3OzExMDEgMTE2QSAxMUI2OyAjICjqvZc7IOq9lzsg4YSB4YWq4Ya2OyDqvZc7IOGEgeGFquGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXQUxICitBRjU4O0FGNTg7MTEwMSAxMTZBIDExQjc7QUY1ODsxMTAxIDExNkEgMTFCNzsgIyAo6r2YOyDqvZg7IOGEgeGFquGGtzsg6r2YOyDhhIHhharhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FNCitBRjU5O0FGNTk7MTEwMSAxMTZBIDExQjg7QUY1OTsxMTAxIDExNkEgMTFCODsgIyAo6r2ZOyDqvZk7IOGEgeGFquGGuDsg6r2ZOyDhhIHhharhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FCCitBRjVBO0FGNUE7MTEwMSAxMTZBIDExQjk7QUY1QTsxMTAxIDExNkEgMTFCOTsgIyAo6r2aOyDqvZo7IOGEgeGFquGGuTsg6r2aOyDhhIHhharhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FCUworQUY1QjtBRjVCOzExMDEgMTE2QSAxMUJBO0FGNUI7MTEwMSAxMTZBIDExQkE7ICMgKOq9mzsg6r2bOyDhhIHhharhhro7IOq9mzsg4YSB4YWq4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dBUworQUY1QztBRjVDOzExMDEgMTE2QSAxMUJCO0FGNUM7MTEwMSAxMTZBIDExQkI7ICMgKOq9nDsg6r2cOyDhhIHhharhhrs7IOq9nDsg4YSB4YWq4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dBU1MKK0FGNUQ7QUY1RDsxMTAxIDExNkEgMTFCQztBRjVEOzExMDEgMTE2QSAxMUJDOyAjICjqvZ07IOq9nTsg4YSB4YWq4Ya8OyDqvZ07IOGEgeGFquGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXQU5HCitBRjVFO0FGNUU7MTEwMSAxMTZBIDExQkQ7QUY1RTsxMTAxIDExNkEgMTFCRDsgIyAo6r2eOyDqvZ47IOGEgeGFquGGvTsg6r2eOyDhhIHhharhhr07ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FKCitBRjVGO0FGNUY7MTEwMSAxMTZBIDExQkU7QUY1RjsxMTAxIDExNkEgMTFCRTsgIyAo6r2fOyDqvZ87IOGEgeGFquGGvjsg6r2fOyDhhIHhharhhr47ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FDCitBRjYwO0FGNjA7MTEwMSAxMTZBIDExQkY7QUY2MDsxMTAxIDExNkEgMTFCRjsgIyAo6r2gOyDqvaA7IOGEgeGFquGGvzsg6r2gOyDhhIHhharhhr87ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FLCitBRjYxO0FGNjE7MTEwMSAxMTZBIDExQzA7QUY2MTsxMTAxIDExNkEgMTFDMDsgIyAo6r2hOyDqvaE7IOGEgeGFquGHgDsg6r2hOyDhhIHhharhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FUCitBRjYyO0FGNjI7MTEwMSAxMTZBIDExQzE7QUY2MjsxMTAxIDExNkEgMTFDMTsgIyAo6r2iOyDqvaI7IOGEgeGFquGHgTsg6r2iOyDhhIHhharhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FQCitBRjYzO0FGNjM7MTEwMSAxMTZBIDExQzI7QUY2MzsxMTAxIDExNkEgMTFDMjsgIyAo6r2jOyDqvaM7IOGEgeGFquGHgjsg6r2jOyDhhIHhharhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FICitBRjY0O0FGNjQ7MTEwMSAxMTZCO0FGNjQ7MTEwMSAxMTZCOyAjICjqvaQ7IOq9pDsg4YSB4YWrOyDqvaQ7IOGEgeGFqzsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXQUUKK0FGNjU7QUY2NTsxMTAxIDExNkIgMTFBODtBRjY1OzExMDEgMTE2QiAxMUE4OyAjICjqvaU7IOq9pTsg4YSB4YWr4YaoOyDqvaU7IOGEgeGFq+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXQUVHCitBRjY2O0FGNjY7MTEwMSAxMTZCIDExQTk7QUY2NjsxMTAxIDExNkIgMTFBOTsgIyAo6r2mOyDqvaY7IOGEgeGFq+GGqTsg6r2mOyDhhIHhhavhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FFR0cKK0FGNjc7QUY2NzsxMTAxIDExNkIgMTFBQTtBRjY3OzExMDEgMTE2QiAxMUFBOyAjICjqvac7IOq9pzsg4YSB4YWr4YaqOyDqvac7IOGEgeGFq+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXQUVHUworQUY2ODtBRjY4OzExMDEgMTE2QiAxMUFCO0FGNjg7MTEwMSAxMTZCIDExQUI7ICMgKOq9qDsg6r2oOyDhhIHhhavhhqs7IOq9qDsg4YSB4YWr4YarOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dBRU4KK0FGNjk7QUY2OTsxMTAxIDExNkIgMTFBQztBRjY5OzExMDEgMTE2QiAxMUFDOyAjICjqvak7IOq9qTsg4YSB4YWr4YasOyDqvak7IOGEgeGFq+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXQUVOSgorQUY2QTtBRjZBOzExMDEgMTE2QiAxMUFEO0FGNkE7MTEwMSAxMTZCIDExQUQ7ICMgKOq9qjsg6r2qOyDhhIHhhavhhq07IOq9qjsg4YSB4YWr4YatOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dBRU5ICitBRjZCO0FGNkI7MTEwMSAxMTZCIDExQUU7QUY2QjsxMTAxIDExNkIgMTFBRTsgIyAo6r2rOyDqvas7IOGEgeGFq+GGrjsg6r2rOyDhhIHhhavhhq47ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FFRAorQUY2QztBRjZDOzExMDEgMTE2QiAxMUFGO0FGNkM7MTEwMSAxMTZCIDExQUY7ICMgKOq9rDsg6r2sOyDhhIHhhavhhq87IOq9rDsg4YSB4YWr4YavOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dBRUwKK0FGNkQ7QUY2RDsxMTAxIDExNkIgMTFCMDtBRjZEOzExMDEgMTE2QiAxMUIwOyAjICjqva07IOq9rTsg4YSB4YWr4YawOyDqva07IOGEgeGFq+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXQUVMRworQUY2RTtBRjZFOzExMDEgMTE2QiAxMUIxO0FGNkU7MTEwMSAxMTZCIDExQjE7ICMgKOq9rjsg6r2uOyDhhIHhhavhhrE7IOq9rjsg4YSB4YWr4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dBRUxNCitBRjZGO0FGNkY7MTEwMSAxMTZCIDExQjI7QUY2RjsxMTAxIDExNkIgMTFCMjsgIyAo6r2vOyDqva87IOGEgeGFq+GGsjsg6r2vOyDhhIHhhavhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FFTEIKK0FGNzA7QUY3MDsxMTAxIDExNkIgMTFCMztBRjcwOzExMDEgMTE2QiAxMUIzOyAjICjqvbA7IOq9sDsg4YSB4YWr4YazOyDqvbA7IOGEgeGFq+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXQUVMUworQUY3MTtBRjcxOzExMDEgMTE2QiAxMUI0O0FGNzE7MTEwMSAxMTZCIDExQjQ7ICMgKOq9sTsg6r2xOyDhhIHhhavhhrQ7IOq9sTsg4YSB4YWr4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dBRUxUCitBRjcyO0FGNzI7MTEwMSAxMTZCIDExQjU7QUY3MjsxMTAxIDExNkIgMTFCNTsgIyAo6r2yOyDqvbI7IOGEgeGFq+GGtTsg6r2yOyDhhIHhhavhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FFTFAKK0FGNzM7QUY3MzsxMTAxIDExNkIgMTFCNjtBRjczOzExMDEgMTE2QiAxMUI2OyAjICjqvbM7IOq9szsg4YSB4YWr4Ya2OyDqvbM7IOGEgeGFq+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXQUVMSAorQUY3NDtBRjc0OzExMDEgMTE2QiAxMUI3O0FGNzQ7MTEwMSAxMTZCIDExQjc7ICMgKOq9tDsg6r20OyDhhIHhhavhhrc7IOq9tDsg4YSB4YWr4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dBRU0KK0FGNzU7QUY3NTsxMTAxIDExNkIgMTFCODtBRjc1OzExMDEgMTE2QiAxMUI4OyAjICjqvbU7IOq9tTsg4YSB4YWr4Ya4OyDqvbU7IOGEgeGFq+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXQUVCCitBRjc2O0FGNzY7MTEwMSAxMTZCIDExQjk7QUY3NjsxMTAxIDExNkIgMTFCOTsgIyAo6r22OyDqvbY7IOGEgeGFq+GGuTsg6r22OyDhhIHhhavhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FFQlMKK0FGNzc7QUY3NzsxMTAxIDExNkIgMTFCQTtBRjc3OzExMDEgMTE2QiAxMUJBOyAjICjqvbc7IOq9tzsg4YSB4YWr4Ya6OyDqvbc7IOGEgeGFq+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXQUVTCitBRjc4O0FGNzg7MTEwMSAxMTZCIDExQkI7QUY3ODsxMTAxIDExNkIgMTFCQjsgIyAo6r24OyDqvbg7IOGEgeGFq+GGuzsg6r24OyDhhIHhhavhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FFU1MKK0FGNzk7QUY3OTsxMTAxIDExNkIgMTFCQztBRjc5OzExMDEgMTE2QiAxMUJDOyAjICjqvbk7IOq9uTsg4YSB4YWr4Ya8OyDqvbk7IOGEgeGFq+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXQUVORworQUY3QTtBRjdBOzExMDEgMTE2QiAxMUJEO0FGN0E7MTEwMSAxMTZCIDExQkQ7ICMgKOq9ujsg6r26OyDhhIHhhavhhr07IOq9ujsg4YSB4YWr4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dBRUoKK0FGN0I7QUY3QjsxMTAxIDExNkIgMTFCRTtBRjdCOzExMDEgMTE2QiAxMUJFOyAjICjqvbs7IOq9uzsg4YSB4YWr4Ya+OyDqvbs7IOGEgeGFq+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXQUVDCitBRjdDO0FGN0M7MTEwMSAxMTZCIDExQkY7QUY3QzsxMTAxIDExNkIgMTFCRjsgIyAo6r28OyDqvbw7IOGEgeGFq+GGvzsg6r28OyDhhIHhhavhhr87ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FFSworQUY3RDtBRjdEOzExMDEgMTE2QiAxMUMwO0FGN0Q7MTEwMSAxMTZCIDExQzA7ICMgKOq9vTsg6r29OyDhhIHhhavhh4A7IOq9vTsg4YSB4YWr4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dBRVQKK0FGN0U7QUY3RTsxMTAxIDExNkIgMTFDMTtBRjdFOzExMDEgMTE2QiAxMUMxOyAjICjqvb47IOq9vjsg4YSB4YWr4YeBOyDqvb47IOGEgeGFq+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXQUVQCitBRjdGO0FGN0Y7MTEwMSAxMTZCIDExQzI7QUY3RjsxMTAxIDExNkIgMTFDMjsgIyAo6r2/OyDqvb87IOGEgeGFq+GHgjsg6r2/OyDhhIHhhavhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0FFSAorQUY4MDtBRjgwOzExMDEgMTE2QztBRjgwOzExMDEgMTE2QzsgIyAo6r6AOyDqvoA7IOGEgeGFrDsg6r6AOyDhhIHhhaw7ICkgSEFOR1VMIFNZTExBQkxFIEdHT0UKK0FGODE7QUY4MTsxMTAxIDExNkMgMTFBODtBRjgxOzExMDEgMTE2QyAxMUE4OyAjICjqvoE7IOq+gTsg4YSB4YWs4YaoOyDqvoE7IOGEgeGFrOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dPRUcKK0FGODI7QUY4MjsxMTAxIDExNkMgMTFBOTtBRjgyOzExMDEgMTE2QyAxMUE5OyAjICjqvoI7IOq+gjsg4YSB4YWs4YapOyDqvoI7IOGEgeGFrOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dPRUdHCitBRjgzO0FGODM7MTEwMSAxMTZDIDExQUE7QUY4MzsxMTAxIDExNkMgMTFBQTsgIyAo6r6DOyDqvoM7IOGEgeGFrOGGqjsg6r6DOyDhhIHhhazhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdHT0VHUworQUY4NDtBRjg0OzExMDEgMTE2QyAxMUFCO0FGODQ7MTEwMSAxMTZDIDExQUI7ICMgKOq+hDsg6r6EOyDhhIHhhazhhqs7IOq+hDsg4YSB4YWs4YarOyApIEhBTkdVTCBTWUxMQUJMRSBHR09FTgorQUY4NTtBRjg1OzExMDEgMTE2QyAxMUFDO0FGODU7MTEwMSAxMTZDIDExQUM7ICMgKOq+hTsg6r6FOyDhhIHhhazhhqw7IOq+hTsg4YSB4YWs4YasOyApIEhBTkdVTCBTWUxMQUJMRSBHR09FTkoKK0FGODY7QUY4NjsxMTAxIDExNkMgMTFBRDtBRjg2OzExMDEgMTE2QyAxMUFEOyAjICjqvoY7IOq+hjsg4YSB4YWs4YatOyDqvoY7IOGEgeGFrOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dPRU5ICitBRjg3O0FGODc7MTEwMSAxMTZDIDExQUU7QUY4NzsxMTAxIDExNkMgMTFBRTsgIyAo6r6HOyDqvoc7IOGEgeGFrOGGrjsg6r6HOyDhhIHhhazhhq47ICkgSEFOR1VMIFNZTExBQkxFIEdHT0VECitBRjg4O0FGODg7MTEwMSAxMTZDIDExQUY7QUY4ODsxMTAxIDExNkMgMTFBRjsgIyAo6r6IOyDqvog7IOGEgeGFrOGGrzsg6r6IOyDhhIHhhazhhq87ICkgSEFOR1VMIFNZTExBQkxFIEdHT0VMCitBRjg5O0FGODk7MTEwMSAxMTZDIDExQjA7QUY4OTsxMTAxIDExNkMgMTFCMDsgIyAo6r6JOyDqvok7IOGEgeGFrOGGsDsg6r6JOyDhhIHhhazhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdHT0VMRworQUY4QTtBRjhBOzExMDEgMTE2QyAxMUIxO0FGOEE7MTEwMSAxMTZDIDExQjE7ICMgKOq+ijsg6r6KOyDhhIHhhazhhrE7IOq+ijsg4YSB4YWs4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHR09FTE0KK0FGOEI7QUY4QjsxMTAxIDExNkMgMTFCMjtBRjhCOzExMDEgMTE2QyAxMUIyOyAjICjqvos7IOq+izsg4YSB4YWs4YayOyDqvos7IOGEgeGFrOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dPRUxCCitBRjhDO0FGOEM7MTEwMSAxMTZDIDExQjM7QUY4QzsxMTAxIDExNkMgMTFCMzsgIyAo6r6MOyDqvow7IOGEgeGFrOGGszsg6r6MOyDhhIHhhazhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdHT0VMUworQUY4RDtBRjhEOzExMDEgMTE2QyAxMUI0O0FGOEQ7MTEwMSAxMTZDIDExQjQ7ICMgKOq+jTsg6r6NOyDhhIHhhazhhrQ7IOq+jTsg4YSB4YWs4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHR09FTFQKK0FGOEU7QUY4RTsxMTAxIDExNkMgMTFCNTtBRjhFOzExMDEgMTE2QyAxMUI1OyAjICjqvo47IOq+jjsg4YSB4YWs4Ya1OyDqvo47IOGEgeGFrOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dPRUxQCitBRjhGO0FGOEY7MTEwMSAxMTZDIDExQjY7QUY4RjsxMTAxIDExNkMgMTFCNjsgIyAo6r6POyDqvo87IOGEgeGFrOGGtjsg6r6POyDhhIHhhazhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdHT0VMSAorQUY5MDtBRjkwOzExMDEgMTE2QyAxMUI3O0FGOTA7MTEwMSAxMTZDIDExQjc7ICMgKOq+kDsg6r6QOyDhhIHhhazhhrc7IOq+kDsg4YSB4YWs4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHR09FTQorQUY5MTtBRjkxOzExMDEgMTE2QyAxMUI4O0FGOTE7MTEwMSAxMTZDIDExQjg7ICMgKOq+kTsg6r6ROyDhhIHhhazhhrg7IOq+kTsg4YSB4YWs4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBHR09FQgorQUY5MjtBRjkyOzExMDEgMTE2QyAxMUI5O0FGOTI7MTEwMSAxMTZDIDExQjk7ICMgKOq+kjsg6r6SOyDhhIHhhazhhrk7IOq+kjsg4YSB4YWs4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHR09FQlMKK0FGOTM7QUY5MzsxMTAxIDExNkMgMTFCQTtBRjkzOzExMDEgMTE2QyAxMUJBOyAjICjqvpM7IOq+kzsg4YSB4YWs4Ya6OyDqvpM7IOGEgeGFrOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgR0dPRVMKK0FGOTQ7QUY5NDsxMTAxIDExNkMgMTFCQjtBRjk0OzExMDEgMTE2QyAxMUJCOyAjICjqvpQ7IOq+lDsg4YSB4YWs4Ya7OyDqvpQ7IOGEgeGFrOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgR0dPRVNTCitBRjk1O0FGOTU7MTEwMSAxMTZDIDExQkM7QUY5NTsxMTAxIDExNkMgMTFCQzsgIyAo6r6VOyDqvpU7IOGEgeGFrOGGvDsg6r6VOyDhhIHhhazhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdHT0VORworQUY5NjtBRjk2OzExMDEgMTE2QyAxMUJEO0FGOTY7MTEwMSAxMTZDIDExQkQ7ICMgKOq+ljsg6r6WOyDhhIHhhazhhr07IOq+ljsg4YSB4YWs4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHR09FSgorQUY5NztBRjk3OzExMDEgMTE2QyAxMUJFO0FGOTc7MTEwMSAxMTZDIDExQkU7ICMgKOq+lzsg6r6XOyDhhIHhhazhhr47IOq+lzsg4YSB4YWs4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBHR09FQworQUY5ODtBRjk4OzExMDEgMTE2QyAxMUJGO0FGOTg7MTEwMSAxMTZDIDExQkY7ICMgKOq+mDsg6r6YOyDhhIHhhazhhr87IOq+mDsg4YSB4YWs4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHR09FSworQUY5OTtBRjk5OzExMDEgMTE2QyAxMUMwO0FGOTk7MTEwMSAxMTZDIDExQzA7ICMgKOq+mTsg6r6ZOyDhhIHhhazhh4A7IOq+mTsg4YSB4YWs4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHR09FVAorQUY5QTtBRjlBOzExMDEgMTE2QyAxMUMxO0FGOUE7MTEwMSAxMTZDIDExQzE7ICMgKOq+mjsg6r6aOyDhhIHhhazhh4E7IOq+mjsg4YSB4YWs4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBHR09FUAorQUY5QjtBRjlCOzExMDEgMTE2QyAxMUMyO0FGOUI7MTEwMSAxMTZDIDExQzI7ICMgKOq+mzsg6r6bOyDhhIHhhazhh4I7IOq+mzsg4YSB4YWs4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHR09FSAorQUY5QztBRjlDOzExMDEgMTE2RDtBRjlDOzExMDEgMTE2RDsgIyAo6r6cOyDqvpw7IOGEgeGFrTsg6r6cOyDhhIHhha07ICkgSEFOR1VMIFNZTExBQkxFIEdHWU8KK0FGOUQ7QUY5RDsxMTAxIDExNkQgMTFBODtBRjlEOzExMDEgMTE2RCAxMUE4OyAjICjqvp07IOq+nTsg4YSB4YWt4YaoOyDqvp07IOGEgeGFreGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZT0cKK0FGOUU7QUY5RTsxMTAxIDExNkQgMTFBOTtBRjlFOzExMDEgMTE2RCAxMUE5OyAjICjqvp47IOq+njsg4YSB4YWt4YapOyDqvp47IOGEgeGFreGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZT0dHCitBRjlGO0FGOUY7MTEwMSAxMTZEIDExQUE7QUY5RjsxMTAxIDExNkQgMTFBQTsgIyAo6r6fOyDqvp87IOGEgeGFreGGqjsg6r6fOyDhhIHhha3hhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdHWU9HUworQUZBMDtBRkEwOzExMDEgMTE2RCAxMUFCO0FGQTA7MTEwMSAxMTZEIDExQUI7ICMgKOq+oDsg6r6gOyDhhIHhha3hhqs7IOq+oDsg4YSB4YWt4YarOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lPTgorQUZBMTtBRkExOzExMDEgMTE2RCAxMUFDO0FGQTE7MTEwMSAxMTZEIDExQUM7ICMgKOq+oTsg6r6hOyDhhIHhha3hhqw7IOq+oTsg4YSB4YWt4YasOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lPTkoKK0FGQTI7QUZBMjsxMTAxIDExNkQgMTFBRDtBRkEyOzExMDEgMTE2RCAxMUFEOyAjICjqvqI7IOq+ojsg4YSB4YWt4YatOyDqvqI7IOGEgeGFreGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZT05ICitBRkEzO0FGQTM7MTEwMSAxMTZEIDExQUU7QUZBMzsxMTAxIDExNkQgMTFBRTsgIyAo6r6jOyDqvqM7IOGEgeGFreGGrjsg6r6jOyDhhIHhha3hhq47ICkgSEFOR1VMIFNZTExBQkxFIEdHWU9ECitBRkE0O0FGQTQ7MTEwMSAxMTZEIDExQUY7QUZBNDsxMTAxIDExNkQgMTFBRjsgIyAo6r6kOyDqvqQ7IOGEgeGFreGGrzsg6r6kOyDhhIHhha3hhq87ICkgSEFOR1VMIFNZTExBQkxFIEdHWU9MCitBRkE1O0FGQTU7MTEwMSAxMTZEIDExQjA7QUZBNTsxMTAxIDExNkQgMTFCMDsgIyAo6r6lOyDqvqU7IOGEgeGFreGGsDsg6r6lOyDhhIHhha3hhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdHWU9MRworQUZBNjtBRkE2OzExMDEgMTE2RCAxMUIxO0FGQTY7MTEwMSAxMTZEIDExQjE7ICMgKOq+pjsg6r6mOyDhhIHhha3hhrE7IOq+pjsg4YSB4YWt4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lPTE0KK0FGQTc7QUZBNzsxMTAxIDExNkQgMTFCMjtBRkE3OzExMDEgMTE2RCAxMUIyOyAjICjqvqc7IOq+pzsg4YSB4YWt4YayOyDqvqc7IOGEgeGFreGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZT0xCCitBRkE4O0FGQTg7MTEwMSAxMTZEIDExQjM7QUZBODsxMTAxIDExNkQgMTFCMzsgIyAo6r6oOyDqvqg7IOGEgeGFreGGszsg6r6oOyDhhIHhha3hhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdHWU9MUworQUZBOTtBRkE5OzExMDEgMTE2RCAxMUI0O0FGQTk7MTEwMSAxMTZEIDExQjQ7ICMgKOq+qTsg6r6pOyDhhIHhha3hhrQ7IOq+qTsg4YSB4YWt4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lPTFQKK0FGQUE7QUZBQTsxMTAxIDExNkQgMTFCNTtBRkFBOzExMDEgMTE2RCAxMUI1OyAjICjqvqo7IOq+qjsg4YSB4YWt4Ya1OyDqvqo7IOGEgeGFreGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZT0xQCitBRkFCO0FGQUI7MTEwMSAxMTZEIDExQjY7QUZBQjsxMTAxIDExNkQgMTFCNjsgIyAo6r6rOyDqvqs7IOGEgeGFreGGtjsg6r6rOyDhhIHhha3hhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdHWU9MSAorQUZBQztBRkFDOzExMDEgMTE2RCAxMUI3O0FGQUM7MTEwMSAxMTZEIDExQjc7ICMgKOq+rDsg6r6sOyDhhIHhha3hhrc7IOq+rDsg4YSB4YWt4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lPTQorQUZBRDtBRkFEOzExMDEgMTE2RCAxMUI4O0FGQUQ7MTEwMSAxMTZEIDExQjg7ICMgKOq+rTsg6r6tOyDhhIHhha3hhrg7IOq+rTsg4YSB4YWt4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lPQgorQUZBRTtBRkFFOzExMDEgMTE2RCAxMUI5O0FGQUU7MTEwMSAxMTZEIDExQjk7ICMgKOq+rjsg6r6uOyDhhIHhha3hhrk7IOq+rjsg4YSB4YWt4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lPQlMKK0FGQUY7QUZBRjsxMTAxIDExNkQgMTFCQTtBRkFGOzExMDEgMTE2RCAxMUJBOyAjICjqvq87IOq+rzsg4YSB4YWt4Ya6OyDqvq87IOGEgeGFreGGujsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZT1MKK0FGQjA7QUZCMDsxMTAxIDExNkQgMTFCQjtBRkIwOzExMDEgMTE2RCAxMUJCOyAjICjqvrA7IOq+sDsg4YSB4YWt4Ya7OyDqvrA7IOGEgeGFreGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZT1NTCitBRkIxO0FGQjE7MTEwMSAxMTZEIDExQkM7QUZCMTsxMTAxIDExNkQgMTFCQzsgIyAo6r6xOyDqvrE7IOGEgeGFreGGvDsg6r6xOyDhhIHhha3hhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdHWU9ORworQUZCMjtBRkIyOzExMDEgMTE2RCAxMUJEO0FGQjI7MTEwMSAxMTZEIDExQkQ7ICMgKOq+sjsg6r6yOyDhhIHhha3hhr07IOq+sjsg4YSB4YWt4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lPSgorQUZCMztBRkIzOzExMDEgMTE2RCAxMUJFO0FGQjM7MTEwMSAxMTZEIDExQkU7ICMgKOq+szsg6r6zOyDhhIHhha3hhr47IOq+szsg4YSB4YWt4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lPQworQUZCNDtBRkI0OzExMDEgMTE2RCAxMUJGO0FGQjQ7MTEwMSAxMTZEIDExQkY7ICMgKOq+tDsg6r60OyDhhIHhha3hhr87IOq+tDsg4YSB4YWt4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lPSworQUZCNTtBRkI1OzExMDEgMTE2RCAxMUMwO0FGQjU7MTEwMSAxMTZEIDExQzA7ICMgKOq+tTsg6r61OyDhhIHhha3hh4A7IOq+tTsg4YSB4YWt4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lPVAorQUZCNjtBRkI2OzExMDEgMTE2RCAxMUMxO0FGQjY7MTEwMSAxMTZEIDExQzE7ICMgKOq+tjsg6r62OyDhhIHhha3hh4E7IOq+tjsg4YSB4YWt4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lPUAorQUZCNztBRkI3OzExMDEgMTE2RCAxMUMyO0FGQjc7MTEwMSAxMTZEIDExQzI7ICMgKOq+tzsg6r63OyDhhIHhha3hh4I7IOq+tzsg4YSB4YWt4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lPSAorQUZCODtBRkI4OzExMDEgMTE2RTtBRkI4OzExMDEgMTE2RTsgIyAo6r64OyDqvrg7IOGEgeGFrjsg6r64OyDhhIHhha47ICkgSEFOR1VMIFNZTExBQkxFIEdHVQorQUZCOTtBRkI5OzExMDEgMTE2RSAxMUE4O0FGQjk7MTEwMSAxMTZFIDExQTg7ICMgKOq+uTsg6r65OyDhhIHhha7hhqg7IOq+uTsg4YSB4YWu4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBHR1VHCitBRkJBO0FGQkE7MTEwMSAxMTZFIDExQTk7QUZCQTsxMTAxIDExNkUgMTFBOTsgIyAo6r66OyDqvro7IOGEgeGFruGGqTsg6r66OyDhhIHhha7hhqk7ICkgSEFOR1VMIFNZTExBQkxFIEdHVUdHCitBRkJCO0FGQkI7MTEwMSAxMTZFIDExQUE7QUZCQjsxMTAxIDExNkUgMTFBQTsgIyAo6r67OyDqvrs7IOGEgeGFruGGqjsg6r67OyDhhIHhha7hhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdHVUdTCitBRkJDO0FGQkM7MTEwMSAxMTZFIDExQUI7QUZCQzsxMTAxIDExNkUgMTFBQjsgIyAo6r68OyDqvrw7IOGEgeGFruGGqzsg6r68OyDhhIHhha7hhqs7ICkgSEFOR1VMIFNZTExBQkxFIEdHVU4KK0FGQkQ7QUZCRDsxMTAxIDExNkUgMTFBQztBRkJEOzExMDEgMTE2RSAxMUFDOyAjICjqvr07IOq+vTsg4YSB4YWu4YasOyDqvr07IOGEgeGFruGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dVTkoKK0FGQkU7QUZCRTsxMTAxIDExNkUgMTFBRDtBRkJFOzExMDEgMTE2RSAxMUFEOyAjICjqvr47IOq+vjsg4YSB4YWu4YatOyDqvr47IOGEgeGFruGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dVTkgKK0FGQkY7QUZCRjsxMTAxIDExNkUgMTFBRTtBRkJGOzExMDEgMTE2RSAxMUFFOyAjICjqvr87IOq+vzsg4YSB4YWu4YauOyDqvr87IOGEgeGFruGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dVRAorQUZDMDtBRkMwOzExMDEgMTE2RSAxMUFGO0FGQzA7MTEwMSAxMTZFIDExQUY7ICMgKOq/gDsg6r+AOyDhhIHhha7hhq87IOq/gDsg4YSB4YWu4YavOyApIEhBTkdVTCBTWUxMQUJMRSBHR1VMCitBRkMxO0FGQzE7MTEwMSAxMTZFIDExQjA7QUZDMTsxMTAxIDExNkUgMTFCMDsgIyAo6r+BOyDqv4E7IOGEgeGFruGGsDsg6r+BOyDhhIHhha7hhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdHVUxHCitBRkMyO0FGQzI7MTEwMSAxMTZFIDExQjE7QUZDMjsxMTAxIDExNkUgMTFCMTsgIyAo6r+COyDqv4I7IOGEgeGFruGGsTsg6r+COyDhhIHhha7hhrE7ICkgSEFOR1VMIFNZTExBQkxFIEdHVUxNCitBRkMzO0FGQzM7MTEwMSAxMTZFIDExQjI7QUZDMzsxMTAxIDExNkUgMTFCMjsgIyAo6r+DOyDqv4M7IOGEgeGFruGGsjsg6r+DOyDhhIHhha7hhrI7ICkgSEFOR1VMIFNZTExBQkxFIEdHVUxCCitBRkM0O0FGQzQ7MTEwMSAxMTZFIDExQjM7QUZDNDsxMTAxIDExNkUgMTFCMzsgIyAo6r+EOyDqv4Q7IOGEgeGFruGGszsg6r+EOyDhhIHhha7hhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdHVUxTCitBRkM1O0FGQzU7MTEwMSAxMTZFIDExQjQ7QUZDNTsxMTAxIDExNkUgMTFCNDsgIyAo6r+FOyDqv4U7IOGEgeGFruGGtDsg6r+FOyDhhIHhha7hhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEdHVUxUCitBRkM2O0FGQzY7MTEwMSAxMTZFIDExQjU7QUZDNjsxMTAxIDExNkUgMTFCNTsgIyAo6r+GOyDqv4Y7IOGEgeGFruGGtTsg6r+GOyDhhIHhha7hhrU7ICkgSEFOR1VMIFNZTExBQkxFIEdHVUxQCitBRkM3O0FGQzc7MTEwMSAxMTZFIDExQjY7QUZDNzsxMTAxIDExNkUgMTFCNjsgIyAo6r+HOyDqv4c7IOGEgeGFruGGtjsg6r+HOyDhhIHhha7hhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdHVUxICitBRkM4O0FGQzg7MTEwMSAxMTZFIDExQjc7QUZDODsxMTAxIDExNkUgMTFCNzsgIyAo6r+IOyDqv4g7IOGEgeGFruGGtzsg6r+IOyDhhIHhha7hhrc7ICkgSEFOR1VMIFNZTExBQkxFIEdHVU0KK0FGQzk7QUZDOTsxMTAxIDExNkUgMTFCODtBRkM5OzExMDEgMTE2RSAxMUI4OyAjICjqv4k7IOq/iTsg4YSB4YWu4Ya4OyDqv4k7IOGEgeGFruGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dVQgorQUZDQTtBRkNBOzExMDEgMTE2RSAxMUI5O0FGQ0E7MTEwMSAxMTZFIDExQjk7ICMgKOq/ijsg6r+KOyDhhIHhha7hhrk7IOq/ijsg4YSB4YWu4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHR1VCUworQUZDQjtBRkNCOzExMDEgMTE2RSAxMUJBO0FGQ0I7MTEwMSAxMTZFIDExQkE7ICMgKOq/izsg6r+LOyDhhIHhha7hhro7IOq/izsg4YSB4YWu4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBHR1VTCitBRkNDO0FGQ0M7MTEwMSAxMTZFIDExQkI7QUZDQzsxMTAxIDExNkUgMTFCQjsgIyAo6r+MOyDqv4w7IOGEgeGFruGGuzsg6r+MOyDhhIHhha7hhrs7ICkgSEFOR1VMIFNZTExBQkxFIEdHVVNTCitBRkNEO0FGQ0Q7MTEwMSAxMTZFIDExQkM7QUZDRDsxMTAxIDExNkUgMTFCQzsgIyAo6r+NOyDqv407IOGEgeGFruGGvDsg6r+NOyDhhIHhha7hhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdHVU5HCitBRkNFO0FGQ0U7MTEwMSAxMTZFIDExQkQ7QUZDRTsxMTAxIDExNkUgMTFCRDsgIyAo6r+OOyDqv447IOGEgeGFruGGvTsg6r+OOyDhhIHhha7hhr07ICkgSEFOR1VMIFNZTExBQkxFIEdHVUoKK0FGQ0Y7QUZDRjsxMTAxIDExNkUgMTFCRTtBRkNGOzExMDEgMTE2RSAxMUJFOyAjICjqv487IOq/jzsg4YSB4YWu4Ya+OyDqv487IOGEgeGFruGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dVQworQUZEMDtBRkQwOzExMDEgMTE2RSAxMUJGO0FGRDA7MTEwMSAxMTZFIDExQkY7ICMgKOq/kDsg6r+QOyDhhIHhha7hhr87IOq/kDsg4YSB4YWu4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHR1VLCitBRkQxO0FGRDE7MTEwMSAxMTZFIDExQzA7QUZEMTsxMTAxIDExNkUgMTFDMDsgIyAo6r+ROyDqv5E7IOGEgeGFruGHgDsg6r+ROyDhhIHhha7hh4A7ICkgSEFOR1VMIFNZTExBQkxFIEdHVVQKK0FGRDI7QUZEMjsxMTAxIDExNkUgMTFDMTtBRkQyOzExMDEgMTE2RSAxMUMxOyAjICjqv5I7IOq/kjsg4YSB4YWu4YeBOyDqv5I7IOGEgeGFruGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dVUAorQUZEMztBRkQzOzExMDEgMTE2RSAxMUMyO0FGRDM7MTEwMSAxMTZFIDExQzI7ICMgKOq/kzsg6r+TOyDhhIHhha7hh4I7IOq/kzsg4YSB4YWu4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHR1VICitBRkQ0O0FGRDQ7MTEwMSAxMTZGO0FGRDQ7MTEwMSAxMTZGOyAjICjqv5Q7IOq/lDsg4YSB4YWvOyDqv5Q7IOGEgeGFrzsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXRU8KK0FGRDU7QUZENTsxMTAxIDExNkYgMTFBODtBRkQ1OzExMDEgMTE2RiAxMUE4OyAjICjqv5U7IOq/lTsg4YSB4YWv4YaoOyDqv5U7IOGEgeGFr+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXRU9HCitBRkQ2O0FGRDY7MTEwMSAxMTZGIDExQTk7QUZENjsxMTAxIDExNkYgMTFBOTsgIyAo6r+WOyDqv5Y7IOGEgeGFr+GGqTsg6r+WOyDhhIHhha/hhqk7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0VPR0cKK0FGRDc7QUZENzsxMTAxIDExNkYgMTFBQTtBRkQ3OzExMDEgMTE2RiAxMUFBOyAjICjqv5c7IOq/lzsg4YSB4YWv4YaqOyDqv5c7IOGEgeGFr+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXRU9HUworQUZEODtBRkQ4OzExMDEgMTE2RiAxMUFCO0FGRDg7MTEwMSAxMTZGIDExQUI7ICMgKOq/mDsg6r+YOyDhhIHhha/hhqs7IOq/mDsg4YSB4YWv4YarOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFT04KK0FGRDk7QUZEOTsxMTAxIDExNkYgMTFBQztBRkQ5OzExMDEgMTE2RiAxMUFDOyAjICjqv5k7IOq/mTsg4YSB4YWv4YasOyDqv5k7IOGEgeGFr+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXRU9OSgorQUZEQTtBRkRBOzExMDEgMTE2RiAxMUFEO0FGREE7MTEwMSAxMTZGIDExQUQ7ICMgKOq/mjsg6r+aOyDhhIHhha/hhq07IOq/mjsg4YSB4YWv4YatOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFT05ICitBRkRCO0FGREI7MTEwMSAxMTZGIDExQUU7QUZEQjsxMTAxIDExNkYgMTFBRTsgIyAo6r+bOyDqv5s7IOGEgeGFr+GGrjsg6r+bOyDhhIHhha/hhq47ICkgSEFOR1VMIFNZTExBQkxFIEdHV0VPRAorQUZEQztBRkRDOzExMDEgMTE2RiAxMUFGO0FGREM7MTEwMSAxMTZGIDExQUY7ICMgKOq/nDsg6r+cOyDhhIHhha/hhq87IOq/nDsg4YSB4YWv4YavOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFT0wKK0FGREQ7QUZERDsxMTAxIDExNkYgMTFCMDtBRkREOzExMDEgMTE2RiAxMUIwOyAjICjqv507IOq/nTsg4YSB4YWv4YawOyDqv507IOGEgeGFr+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXRU9MRworQUZERTtBRkRFOzExMDEgMTE2RiAxMUIxO0FGREU7MTEwMSAxMTZGIDExQjE7ICMgKOq/njsg6r+eOyDhhIHhha/hhrE7IOq/njsg4YSB4YWv4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFT0xNCitBRkRGO0FGREY7MTEwMSAxMTZGIDExQjI7QUZERjsxMTAxIDExNkYgMTFCMjsgIyAo6r+fOyDqv587IOGEgeGFr+GGsjsg6r+fOyDhhIHhha/hhrI7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0VPTEIKK0FGRTA7QUZFMDsxMTAxIDExNkYgMTFCMztBRkUwOzExMDEgMTE2RiAxMUIzOyAjICjqv6A7IOq/oDsg4YSB4YWv4YazOyDqv6A7IOGEgeGFr+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXRU9MUworQUZFMTtBRkUxOzExMDEgMTE2RiAxMUI0O0FGRTE7MTEwMSAxMTZGIDExQjQ7ICMgKOq/oTsg6r+hOyDhhIHhha/hhrQ7IOq/oTsg4YSB4YWv4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFT0xUCitBRkUyO0FGRTI7MTEwMSAxMTZGIDExQjU7QUZFMjsxMTAxIDExNkYgMTFCNTsgIyAo6r+iOyDqv6I7IOGEgeGFr+GGtTsg6r+iOyDhhIHhha/hhrU7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0VPTFAKK0FGRTM7QUZFMzsxMTAxIDExNkYgMTFCNjtBRkUzOzExMDEgMTE2RiAxMUI2OyAjICjqv6M7IOq/ozsg4YSB4YWv4Ya2OyDqv6M7IOGEgeGFr+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXRU9MSAorQUZFNDtBRkU0OzExMDEgMTE2RiAxMUI3O0FGRTQ7MTEwMSAxMTZGIDExQjc7ICMgKOq/pDsg6r+kOyDhhIHhha/hhrc7IOq/pDsg4YSB4YWv4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFT00KK0FGRTU7QUZFNTsxMTAxIDExNkYgMTFCODtBRkU1OzExMDEgMTE2RiAxMUI4OyAjICjqv6U7IOq/pTsg4YSB4YWv4Ya4OyDqv6U7IOGEgeGFr+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXRU9CCitBRkU2O0FGRTY7MTEwMSAxMTZGIDExQjk7QUZFNjsxMTAxIDExNkYgMTFCOTsgIyAo6r+mOyDqv6Y7IOGEgeGFr+GGuTsg6r+mOyDhhIHhha/hhrk7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0VPQlMKK0FGRTc7QUZFNzsxMTAxIDExNkYgMTFCQTtBRkU3OzExMDEgMTE2RiAxMUJBOyAjICjqv6c7IOq/pzsg4YSB4YWv4Ya6OyDqv6c7IOGEgeGFr+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXRU9TCitBRkU4O0FGRTg7MTEwMSAxMTZGIDExQkI7QUZFODsxMTAxIDExNkYgMTFCQjsgIyAo6r+oOyDqv6g7IOGEgeGFr+GGuzsg6r+oOyDhhIHhha/hhrs7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0VPU1MKK0FGRTk7QUZFOTsxMTAxIDExNkYgMTFCQztBRkU5OzExMDEgMTE2RiAxMUJDOyAjICjqv6k7IOq/qTsg4YSB4YWv4Ya8OyDqv6k7IOGEgeGFr+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXRU9ORworQUZFQTtBRkVBOzExMDEgMTE2RiAxMUJEO0FGRUE7MTEwMSAxMTZGIDExQkQ7ICMgKOq/qjsg6r+qOyDhhIHhha/hhr07IOq/qjsg4YSB4YWv4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFT0oKK0FGRUI7QUZFQjsxMTAxIDExNkYgMTFCRTtBRkVCOzExMDEgMTE2RiAxMUJFOyAjICjqv6s7IOq/qzsg4YSB4YWv4Ya+OyDqv6s7IOGEgeGFr+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXRU9DCitBRkVDO0FGRUM7MTEwMSAxMTZGIDExQkY7QUZFQzsxMTAxIDExNkYgMTFCRjsgIyAo6r+sOyDqv6w7IOGEgeGFr+GGvzsg6r+sOyDhhIHhha/hhr87ICkgSEFOR1VMIFNZTExBQkxFIEdHV0VPSworQUZFRDtBRkVEOzExMDEgMTE2RiAxMUMwO0FGRUQ7MTEwMSAxMTZGIDExQzA7ICMgKOq/rTsg6r+tOyDhhIHhha/hh4A7IOq/rTsg4YSB4YWv4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFT1QKK0FGRUU7QUZFRTsxMTAxIDExNkYgMTFDMTtBRkVFOzExMDEgMTE2RiAxMUMxOyAjICjqv647IOq/rjsg4YSB4YWv4YeBOyDqv647IOGEgeGFr+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXRU9QCitBRkVGO0FGRUY7MTEwMSAxMTZGIDExQzI7QUZFRjsxMTAxIDExNkYgMTFDMjsgIyAo6r+vOyDqv687IOGEgeGFr+GHgjsg6r+vOyDhhIHhha/hh4I7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0VPSAorQUZGMDtBRkYwOzExMDEgMTE3MDtBRkYwOzExMDEgMTE3MDsgIyAo6r+wOyDqv7A7IOGEgeGFsDsg6r+wOyDhhIHhhbA7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0UKK0FGRjE7QUZGMTsxMTAxIDExNzAgMTFBODtBRkYxOzExMDEgMTE3MCAxMUE4OyAjICjqv7E7IOq/sTsg4YSB4YWw4YaoOyDqv7E7IOGEgeGFsOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXRUcKK0FGRjI7QUZGMjsxMTAxIDExNzAgMTFBOTtBRkYyOzExMDEgMTE3MCAxMUE5OyAjICjqv7I7IOq/sjsg4YSB4YWw4YapOyDqv7I7IOGEgeGFsOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXRUdHCitBRkYzO0FGRjM7MTEwMSAxMTcwIDExQUE7QUZGMzsxMTAxIDExNzAgMTFBQTsgIyAo6r+zOyDqv7M7IOGEgeGFsOGGqjsg6r+zOyDhhIHhhbDhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0VHUworQUZGNDtBRkY0OzExMDEgMTE3MCAxMUFCO0FGRjQ7MTEwMSAxMTcwIDExQUI7ICMgKOq/tDsg6r+0OyDhhIHhhbDhhqs7IOq/tDsg4YSB4YWw4YarOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFTgorQUZGNTtBRkY1OzExMDEgMTE3MCAxMUFDO0FGRjU7MTEwMSAxMTcwIDExQUM7ICMgKOq/tTsg6r+1OyDhhIHhhbDhhqw7IOq/tTsg4YSB4YWw4YasOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFTkoKK0FGRjY7QUZGNjsxMTAxIDExNzAgMTFBRDtBRkY2OzExMDEgMTE3MCAxMUFEOyAjICjqv7Y7IOq/tjsg4YSB4YWw4YatOyDqv7Y7IOGEgeGFsOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXRU5ICitBRkY3O0FGRjc7MTEwMSAxMTcwIDExQUU7QUZGNzsxMTAxIDExNzAgMTFBRTsgIyAo6r+3OyDqv7c7IOGEgeGFsOGGrjsg6r+3OyDhhIHhhbDhhq47ICkgSEFOR1VMIFNZTExBQkxFIEdHV0VECitBRkY4O0FGRjg7MTEwMSAxMTcwIDExQUY7QUZGODsxMTAxIDExNzAgMTFBRjsgIyAo6r+4OyDqv7g7IOGEgeGFsOGGrzsg6r+4OyDhhIHhhbDhhq87ICkgSEFOR1VMIFNZTExBQkxFIEdHV0VMCitBRkY5O0FGRjk7MTEwMSAxMTcwIDExQjA7QUZGOTsxMTAxIDExNzAgMTFCMDsgIyAo6r+5OyDqv7k7IOGEgeGFsOGGsDsg6r+5OyDhhIHhhbDhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0VMRworQUZGQTtBRkZBOzExMDEgMTE3MCAxMUIxO0FGRkE7MTEwMSAxMTcwIDExQjE7ICMgKOq/ujsg6r+6OyDhhIHhhbDhhrE7IOq/ujsg4YSB4YWw4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFTE0KK0FGRkI7QUZGQjsxMTAxIDExNzAgMTFCMjtBRkZCOzExMDEgMTE3MCAxMUIyOyAjICjqv7s7IOq/uzsg4YSB4YWw4YayOyDqv7s7IOGEgeGFsOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXRUxCCitBRkZDO0FGRkM7MTEwMSAxMTcwIDExQjM7QUZGQzsxMTAxIDExNzAgMTFCMzsgIyAo6r+8OyDqv7w7IOGEgeGFsOGGszsg6r+8OyDhhIHhhbDhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0VMUworQUZGRDtBRkZEOzExMDEgMTE3MCAxMUI0O0FGRkQ7MTEwMSAxMTcwIDExQjQ7ICMgKOq/vTsg6r+9OyDhhIHhhbDhhrQ7IOq/vTsg4YSB4YWw4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFTFQKK0FGRkU7QUZGRTsxMTAxIDExNzAgMTFCNTtBRkZFOzExMDEgMTE3MCAxMUI1OyAjICjqv747IOq/vjsg4YSB4YWw4Ya1OyDqv747IOGEgeGFsOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXRUxQCitBRkZGO0FGRkY7MTEwMSAxMTcwIDExQjY7QUZGRjsxMTAxIDExNzAgMTFCNjsgIyAo6r+/OyDqv787IOGEgeGFsOGGtjsg6r+/OyDhhIHhhbDhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0VMSAorQjAwMDtCMDAwOzExMDEgMTE3MCAxMUI3O0IwMDA7MTEwMSAxMTcwIDExQjc7ICMgKOuAgDsg64CAOyDhhIHhhbDhhrc7IOuAgDsg4YSB4YWw4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFTQorQjAwMTtCMDAxOzExMDEgMTE3MCAxMUI4O0IwMDE7MTEwMSAxMTcwIDExQjg7ICMgKOuAgTsg64CBOyDhhIHhhbDhhrg7IOuAgTsg4YSB4YWw4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFQgorQjAwMjtCMDAyOzExMDEgMTE3MCAxMUI5O0IwMDI7MTEwMSAxMTcwIDExQjk7ICMgKOuAgjsg64CCOyDhhIHhhbDhhrk7IOuAgjsg4YSB4YWw4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFQlMKK0IwMDM7QjAwMzsxMTAxIDExNzAgMTFCQTtCMDAzOzExMDEgMTE3MCAxMUJBOyAjICjrgIM7IOuAgzsg4YSB4YWw4Ya6OyDrgIM7IOGEgeGFsOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXRVMKK0IwMDQ7QjAwNDsxMTAxIDExNzAgMTFCQjtCMDA0OzExMDEgMTE3MCAxMUJCOyAjICjrgIQ7IOuAhDsg4YSB4YWw4Ya7OyDrgIQ7IOGEgeGFsOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXRVNTCitCMDA1O0IwMDU7MTEwMSAxMTcwIDExQkM7QjAwNTsxMTAxIDExNzAgMTFCQzsgIyAo64CFOyDrgIU7IOGEgeGFsOGGvDsg64CFOyDhhIHhhbDhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0VORworQjAwNjtCMDA2OzExMDEgMTE3MCAxMUJEO0IwMDY7MTEwMSAxMTcwIDExQkQ7ICMgKOuAhjsg64CGOyDhhIHhhbDhhr07IOuAhjsg4YSB4YWw4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFSgorQjAwNztCMDA3OzExMDEgMTE3MCAxMUJFO0IwMDc7MTEwMSAxMTcwIDExQkU7ICMgKOuAhzsg64CHOyDhhIHhhbDhhr47IOuAhzsg4YSB4YWw4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFQworQjAwODtCMDA4OzExMDEgMTE3MCAxMUJGO0IwMDg7MTEwMSAxMTcwIDExQkY7ICMgKOuAiDsg64CIOyDhhIHhhbDhhr87IOuAiDsg4YSB4YWw4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFSworQjAwOTtCMDA5OzExMDEgMTE3MCAxMUMwO0IwMDk7MTEwMSAxMTcwIDExQzA7ICMgKOuAiTsg64CJOyDhhIHhhbDhh4A7IOuAiTsg4YSB4YWw4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFVAorQjAwQTtCMDBBOzExMDEgMTE3MCAxMUMxO0IwMEE7MTEwMSAxMTcwIDExQzE7ICMgKOuAijsg64CKOyDhhIHhhbDhh4E7IOuAijsg4YSB4YWw4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFUAorQjAwQjtCMDBCOzExMDEgMTE3MCAxMUMyO0IwMEI7MTEwMSAxMTcwIDExQzI7ICMgKOuAizsg64CLOyDhhIHhhbDhh4I7IOuAizsg4YSB4YWw4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dFSAorQjAwQztCMDBDOzExMDEgMTE3MTtCMDBDOzExMDEgMTE3MTsgIyAo64CMOyDrgIw7IOGEgeGFsTsg64CMOyDhhIHhhbE7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0kKK0IwMEQ7QjAwRDsxMTAxIDExNzEgMTFBODtCMDBEOzExMDEgMTE3MSAxMUE4OyAjICjrgI07IOuAjTsg4YSB4YWx4YaoOyDrgI07IOGEgeGFseGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXSUcKK0IwMEU7QjAwRTsxMTAxIDExNzEgMTFBOTtCMDBFOzExMDEgMTE3MSAxMUE5OyAjICjrgI47IOuAjjsg4YSB4YWx4YapOyDrgI47IOGEgeGFseGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXSUdHCitCMDBGO0IwMEY7MTEwMSAxMTcxIDExQUE7QjAwRjsxMTAxIDExNzEgMTFBQTsgIyAo64CPOyDrgI87IOGEgeGFseGGqjsg64CPOyDhhIHhhbHhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0lHUworQjAxMDtCMDEwOzExMDEgMTE3MSAxMUFCO0IwMTA7MTEwMSAxMTcxIDExQUI7ICMgKOuAkDsg64CQOyDhhIHhhbHhhqs7IOuAkDsg4YSB4YWx4YarOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dJTgorQjAxMTtCMDExOzExMDEgMTE3MSAxMUFDO0IwMTE7MTEwMSAxMTcxIDExQUM7ICMgKOuAkTsg64CROyDhhIHhhbHhhqw7IOuAkTsg4YSB4YWx4YasOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dJTkoKK0IwMTI7QjAxMjsxMTAxIDExNzEgMTFBRDtCMDEyOzExMDEgMTE3MSAxMUFEOyAjICjrgJI7IOuAkjsg4YSB4YWx4YatOyDrgJI7IOGEgeGFseGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXSU5ICitCMDEzO0IwMTM7MTEwMSAxMTcxIDExQUU7QjAxMzsxMTAxIDExNzEgMTFBRTsgIyAo64CTOyDrgJM7IOGEgeGFseGGrjsg64CTOyDhhIHhhbHhhq47ICkgSEFOR1VMIFNZTExBQkxFIEdHV0lECitCMDE0O0IwMTQ7MTEwMSAxMTcxIDExQUY7QjAxNDsxMTAxIDExNzEgMTFBRjsgIyAo64CUOyDrgJQ7IOGEgeGFseGGrzsg64CUOyDhhIHhhbHhhq87ICkgSEFOR1VMIFNZTExBQkxFIEdHV0lMCitCMDE1O0IwMTU7MTEwMSAxMTcxIDExQjA7QjAxNTsxMTAxIDExNzEgMTFCMDsgIyAo64CVOyDrgJU7IOGEgeGFseGGsDsg64CVOyDhhIHhhbHhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0lMRworQjAxNjtCMDE2OzExMDEgMTE3MSAxMUIxO0IwMTY7MTEwMSAxMTcxIDExQjE7ICMgKOuAljsg64CWOyDhhIHhhbHhhrE7IOuAljsg4YSB4YWx4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dJTE0KK0IwMTc7QjAxNzsxMTAxIDExNzEgMTFCMjtCMDE3OzExMDEgMTE3MSAxMUIyOyAjICjrgJc7IOuAlzsg4YSB4YWx4YayOyDrgJc7IOGEgeGFseGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXSUxCCitCMDE4O0IwMTg7MTEwMSAxMTcxIDExQjM7QjAxODsxMTAxIDExNzEgMTFCMzsgIyAo64CYOyDrgJg7IOGEgeGFseGGszsg64CYOyDhhIHhhbHhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0lMUworQjAxOTtCMDE5OzExMDEgMTE3MSAxMUI0O0IwMTk7MTEwMSAxMTcxIDExQjQ7ICMgKOuAmTsg64CZOyDhhIHhhbHhhrQ7IOuAmTsg4YSB4YWx4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dJTFQKK0IwMUE7QjAxQTsxMTAxIDExNzEgMTFCNTtCMDFBOzExMDEgMTE3MSAxMUI1OyAjICjrgJo7IOuAmjsg4YSB4YWx4Ya1OyDrgJo7IOGEgeGFseGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXSUxQCitCMDFCO0IwMUI7MTEwMSAxMTcxIDExQjY7QjAxQjsxMTAxIDExNzEgMTFCNjsgIyAo64CbOyDrgJs7IOGEgeGFseGGtjsg64CbOyDhhIHhhbHhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0lMSAorQjAxQztCMDFDOzExMDEgMTE3MSAxMUI3O0IwMUM7MTEwMSAxMTcxIDExQjc7ICMgKOuAnDsg64CcOyDhhIHhhbHhhrc7IOuAnDsg4YSB4YWx4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dJTQorQjAxRDtCMDFEOzExMDEgMTE3MSAxMUI4O0IwMUQ7MTEwMSAxMTcxIDExQjg7ICMgKOuAnTsg64CdOyDhhIHhhbHhhrg7IOuAnTsg4YSB4YWx4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dJQgorQjAxRTtCMDFFOzExMDEgMTE3MSAxMUI5O0IwMUU7MTEwMSAxMTcxIDExQjk7ICMgKOuAnjsg64CeOyDhhIHhhbHhhrk7IOuAnjsg4YSB4YWx4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dJQlMKK0IwMUY7QjAxRjsxMTAxIDExNzEgMTFCQTtCMDFGOzExMDEgMTE3MSAxMUJBOyAjICjrgJ87IOuAnzsg4YSB4YWx4Ya6OyDrgJ87IOGEgeGFseGGujsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXSVMKK0IwMjA7QjAyMDsxMTAxIDExNzEgMTFCQjtCMDIwOzExMDEgMTE3MSAxMUJCOyAjICjrgKA7IOuAoDsg4YSB4YWx4Ya7OyDrgKA7IOGEgeGFseGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgR0dXSVNTCitCMDIxO0IwMjE7MTEwMSAxMTcxIDExQkM7QjAyMTsxMTAxIDExNzEgMTFCQzsgIyAo64ChOyDrgKE7IOGEgeGFseGGvDsg64ChOyDhhIHhhbHhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdHV0lORworQjAyMjtCMDIyOzExMDEgMTE3MSAxMUJEO0IwMjI7MTEwMSAxMTcxIDExQkQ7ICMgKOuAojsg64CiOyDhhIHhhbHhhr07IOuAojsg4YSB4YWx4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dJSgorQjAyMztCMDIzOzExMDEgMTE3MSAxMUJFO0IwMjM7MTEwMSAxMTcxIDExQkU7ICMgKOuAozsg64CjOyDhhIHhhbHhhr47IOuAozsg4YSB4YWx4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dJQworQjAyNDtCMDI0OzExMDEgMTE3MSAxMUJGO0IwMjQ7MTEwMSAxMTcxIDExQkY7ICMgKOuApDsg64CkOyDhhIHhhbHhhr87IOuApDsg4YSB4YWx4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHR1dJSworQjAyNTtCMDI1OzExMDEgMTE3MSAxMUMwO0IwMjU7MTEwMSAxMTcxIDExQzA7ICMgKOuApTsg64ClOyDhhIHhhbHhh4A7IOuApTsg4YSB4YWx4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dJVAorQjAyNjtCMDI2OzExMDEgMTE3MSAxMUMxO0IwMjY7MTEwMSAxMTcxIDExQzE7ICMgKOuApjsg64CmOyDhhIHhhbHhh4E7IOuApjsg4YSB4YWx4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dJUAorQjAyNztCMDI3OzExMDEgMTE3MSAxMUMyO0IwMjc7MTEwMSAxMTcxIDExQzI7ICMgKOuApzsg64CnOyDhhIHhhbHhh4I7IOuApzsg4YSB4YWx4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHR1dJSAorQjAyODtCMDI4OzExMDEgMTE3MjtCMDI4OzExMDEgMTE3MjsgIyAo64CoOyDrgKg7IOGEgeGFsjsg64CoOyDhhIHhhbI7ICkgSEFOR1VMIFNZTExBQkxFIEdHWVUKK0IwMjk7QjAyOTsxMTAxIDExNzIgMTFBODtCMDI5OzExMDEgMTE3MiAxMUE4OyAjICjrgKk7IOuAqTsg4YSB4YWy4YaoOyDrgKk7IOGEgeGFsuGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZVUcKK0IwMkE7QjAyQTsxMTAxIDExNzIgMTFBOTtCMDJBOzExMDEgMTE3MiAxMUE5OyAjICjrgKo7IOuAqjsg4YSB4YWy4YapOyDrgKo7IOGEgeGFsuGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZVUdHCitCMDJCO0IwMkI7MTEwMSAxMTcyIDExQUE7QjAyQjsxMTAxIDExNzIgMTFBQTsgIyAo64CrOyDrgKs7IOGEgeGFsuGGqjsg64CrOyDhhIHhhbLhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdHWVVHUworQjAyQztCMDJDOzExMDEgMTE3MiAxMUFCO0IwMkM7MTEwMSAxMTcyIDExQUI7ICMgKOuArDsg64CsOyDhhIHhhbLhhqs7IOuArDsg4YSB4YWy4YarOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lVTgorQjAyRDtCMDJEOzExMDEgMTE3MiAxMUFDO0IwMkQ7MTEwMSAxMTcyIDExQUM7ICMgKOuArTsg64CtOyDhhIHhhbLhhqw7IOuArTsg4YSB4YWy4YasOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lVTkoKK0IwMkU7QjAyRTsxMTAxIDExNzIgMTFBRDtCMDJFOzExMDEgMTE3MiAxMUFEOyAjICjrgK47IOuArjsg4YSB4YWy4YatOyDrgK47IOGEgeGFsuGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZVU5ICitCMDJGO0IwMkY7MTEwMSAxMTcyIDExQUU7QjAyRjsxMTAxIDExNzIgMTFBRTsgIyAo64CvOyDrgK87IOGEgeGFsuGGrjsg64CvOyDhhIHhhbLhhq47ICkgSEFOR1VMIFNZTExBQkxFIEdHWVVECitCMDMwO0IwMzA7MTEwMSAxMTcyIDExQUY7QjAzMDsxMTAxIDExNzIgMTFBRjsgIyAo64CwOyDrgLA7IOGEgeGFsuGGrzsg64CwOyDhhIHhhbLhhq87ICkgSEFOR1VMIFNZTExBQkxFIEdHWVVMCitCMDMxO0IwMzE7MTEwMSAxMTcyIDExQjA7QjAzMTsxMTAxIDExNzIgMTFCMDsgIyAo64CxOyDrgLE7IOGEgeGFsuGGsDsg64CxOyDhhIHhhbLhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdHWVVMRworQjAzMjtCMDMyOzExMDEgMTE3MiAxMUIxO0IwMzI7MTEwMSAxMTcyIDExQjE7ICMgKOuAsjsg64CyOyDhhIHhhbLhhrE7IOuAsjsg4YSB4YWy4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lVTE0KK0IwMzM7QjAzMzsxMTAxIDExNzIgMTFCMjtCMDMzOzExMDEgMTE3MiAxMUIyOyAjICjrgLM7IOuAszsg4YSB4YWy4YayOyDrgLM7IOGEgeGFsuGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZVUxCCitCMDM0O0IwMzQ7MTEwMSAxMTcyIDExQjM7QjAzNDsxMTAxIDExNzIgMTFCMzsgIyAo64C0OyDrgLQ7IOGEgeGFsuGGszsg64C0OyDhhIHhhbLhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdHWVVMUworQjAzNTtCMDM1OzExMDEgMTE3MiAxMUI0O0IwMzU7MTEwMSAxMTcyIDExQjQ7ICMgKOuAtTsg64C1OyDhhIHhhbLhhrQ7IOuAtTsg4YSB4YWy4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lVTFQKK0IwMzY7QjAzNjsxMTAxIDExNzIgMTFCNTtCMDM2OzExMDEgMTE3MiAxMUI1OyAjICjrgLY7IOuAtjsg4YSB4YWy4Ya1OyDrgLY7IOGEgeGFsuGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZVUxQCitCMDM3O0IwMzc7MTEwMSAxMTcyIDExQjY7QjAzNzsxMTAxIDExNzIgMTFCNjsgIyAo64C3OyDrgLc7IOGEgeGFsuGGtjsg64C3OyDhhIHhhbLhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdHWVVMSAorQjAzODtCMDM4OzExMDEgMTE3MiAxMUI3O0IwMzg7MTEwMSAxMTcyIDExQjc7ICMgKOuAuDsg64C4OyDhhIHhhbLhhrc7IOuAuDsg4YSB4YWy4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lVTQorQjAzOTtCMDM5OzExMDEgMTE3MiAxMUI4O0IwMzk7MTEwMSAxMTcyIDExQjg7ICMgKOuAuTsg64C5OyDhhIHhhbLhhrg7IOuAuTsg4YSB4YWy4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lVQgorQjAzQTtCMDNBOzExMDEgMTE3MiAxMUI5O0IwM0E7MTEwMSAxMTcyIDExQjk7ICMgKOuAujsg64C6OyDhhIHhhbLhhrk7IOuAujsg4YSB4YWy4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lVQlMKK0IwM0I7QjAzQjsxMTAxIDExNzIgMTFCQTtCMDNCOzExMDEgMTE3MiAxMUJBOyAjICjrgLs7IOuAuzsg4YSB4YWy4Ya6OyDrgLs7IOGEgeGFsuGGujsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZVVMKK0IwM0M7QjAzQzsxMTAxIDExNzIgMTFCQjtCMDNDOzExMDEgMTE3MiAxMUJCOyAjICjrgLw7IOuAvDsg4YSB4YWy4Ya7OyDrgLw7IOGEgeGFsuGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZVVNTCitCMDNEO0IwM0Q7MTEwMSAxMTcyIDExQkM7QjAzRDsxMTAxIDExNzIgMTFCQzsgIyAo64C9OyDrgL07IOGEgeGFsuGGvDsg64C9OyDhhIHhhbLhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdHWVVORworQjAzRTtCMDNFOzExMDEgMTE3MiAxMUJEO0IwM0U7MTEwMSAxMTcyIDExQkQ7ICMgKOuAvjsg64C+OyDhhIHhhbLhhr07IOuAvjsg4YSB4YWy4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lVSgorQjAzRjtCMDNGOzExMDEgMTE3MiAxMUJFO0IwM0Y7MTEwMSAxMTcyIDExQkU7ICMgKOuAvzsg64C/OyDhhIHhhbLhhr47IOuAvzsg4YSB4YWy4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lVQworQjA0MDtCMDQwOzExMDEgMTE3MiAxMUJGO0IwNDA7MTEwMSAxMTcyIDExQkY7ICMgKOuBgDsg64GAOyDhhIHhhbLhhr87IOuBgDsg4YSB4YWy4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lVSworQjA0MTtCMDQxOzExMDEgMTE3MiAxMUMwO0IwNDE7MTEwMSAxMTcyIDExQzA7ICMgKOuBgTsg64GBOyDhhIHhhbLhh4A7IOuBgTsg4YSB4YWy4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lVVAorQjA0MjtCMDQyOzExMDEgMTE3MiAxMUMxO0IwNDI7MTEwMSAxMTcyIDExQzE7ICMgKOuBgjsg64GCOyDhhIHhhbLhh4E7IOuBgjsg4YSB4YWy4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lVUAorQjA0MztCMDQzOzExMDEgMTE3MiAxMUMyO0IwNDM7MTEwMSAxMTcyIDExQzI7ICMgKOuBgzsg64GDOyDhhIHhhbLhh4I7IOuBgzsg4YSB4YWy4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lVSAorQjA0NDtCMDQ0OzExMDEgMTE3MztCMDQ0OzExMDEgMTE3MzsgIyAo64GEOyDrgYQ7IOGEgeGFszsg64GEOyDhhIHhhbM7ICkgSEFOR1VMIFNZTExBQkxFIEdHRVUKK0IwNDU7QjA0NTsxMTAxIDExNzMgMTFBODtCMDQ1OzExMDEgMTE3MyAxMUE4OyAjICjrgYU7IOuBhTsg4YSB4YWz4YaoOyDrgYU7IOGEgeGFs+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dFVUcKK0IwNDY7QjA0NjsxMTAxIDExNzMgMTFBOTtCMDQ2OzExMDEgMTE3MyAxMUE5OyAjICjrgYY7IOuBhjsg4YSB4YWz4YapOyDrgYY7IOGEgeGFs+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dFVUdHCitCMDQ3O0IwNDc7MTEwMSAxMTczIDExQUE7QjA0NzsxMTAxIDExNzMgMTFBQTsgIyAo64GHOyDrgYc7IOGEgeGFs+GGqjsg64GHOyDhhIHhhbPhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdHRVVHUworQjA0ODtCMDQ4OzExMDEgMTE3MyAxMUFCO0IwNDg7MTEwMSAxMTczIDExQUI7ICMgKOuBiDsg64GIOyDhhIHhhbPhhqs7IOuBiDsg4YSB4YWz4YarOyApIEhBTkdVTCBTWUxMQUJMRSBHR0VVTgorQjA0OTtCMDQ5OzExMDEgMTE3MyAxMUFDO0IwNDk7MTEwMSAxMTczIDExQUM7ICMgKOuBiTsg64GJOyDhhIHhhbPhhqw7IOuBiTsg4YSB4YWz4YasOyApIEhBTkdVTCBTWUxMQUJMRSBHR0VVTkoKK0IwNEE7QjA0QTsxMTAxIDExNzMgMTFBRDtCMDRBOzExMDEgMTE3MyAxMUFEOyAjICjrgYo7IOuBijsg4YSB4YWz4YatOyDrgYo7IOGEgeGFs+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dFVU5ICitCMDRCO0IwNEI7MTEwMSAxMTczIDExQUU7QjA0QjsxMTAxIDExNzMgMTFBRTsgIyAo64GLOyDrgYs7IOGEgeGFs+GGrjsg64GLOyDhhIHhhbPhhq47ICkgSEFOR1VMIFNZTExBQkxFIEdHRVVECitCMDRDO0IwNEM7MTEwMSAxMTczIDExQUY7QjA0QzsxMTAxIDExNzMgMTFBRjsgIyAo64GMOyDrgYw7IOGEgeGFs+GGrzsg64GMOyDhhIHhhbPhhq87ICkgSEFOR1VMIFNZTExBQkxFIEdHRVVMCitCMDREO0IwNEQ7MTEwMSAxMTczIDExQjA7QjA0RDsxMTAxIDExNzMgMTFCMDsgIyAo64GNOyDrgY07IOGEgeGFs+GGsDsg64GNOyDhhIHhhbPhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdHRVVMRworQjA0RTtCMDRFOzExMDEgMTE3MyAxMUIxO0IwNEU7MTEwMSAxMTczIDExQjE7ICMgKOuBjjsg64GOOyDhhIHhhbPhhrE7IOuBjjsg4YSB4YWz4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHR0VVTE0KK0IwNEY7QjA0RjsxMTAxIDExNzMgMTFCMjtCMDRGOzExMDEgMTE3MyAxMUIyOyAjICjrgY87IOuBjzsg4YSB4YWz4YayOyDrgY87IOGEgeGFs+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dFVUxCCitCMDUwO0IwNTA7MTEwMSAxMTczIDExQjM7QjA1MDsxMTAxIDExNzMgMTFCMzsgIyAo64GQOyDrgZA7IOGEgeGFs+GGszsg64GQOyDhhIHhhbPhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdHRVVMUworQjA1MTtCMDUxOzExMDEgMTE3MyAxMUI0O0IwNTE7MTEwMSAxMTczIDExQjQ7ICMgKOuBkTsg64GROyDhhIHhhbPhhrQ7IOuBkTsg4YSB4YWz4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHR0VVTFQKK0IwNTI7QjA1MjsxMTAxIDExNzMgMTFCNTtCMDUyOzExMDEgMTE3MyAxMUI1OyAjICjrgZI7IOuBkjsg4YSB4YWz4Ya1OyDrgZI7IOGEgeGFs+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dFVUxQCitCMDUzO0IwNTM7MTEwMSAxMTczIDExQjY7QjA1MzsxMTAxIDExNzMgMTFCNjsgIyAo64GTOyDrgZM7IOGEgeGFs+GGtjsg64GTOyDhhIHhhbPhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdHRVVMSAorQjA1NDtCMDU0OzExMDEgMTE3MyAxMUI3O0IwNTQ7MTEwMSAxMTczIDExQjc7ICMgKOuBlDsg64GUOyDhhIHhhbPhhrc7IOuBlDsg4YSB4YWz4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHR0VVTQorQjA1NTtCMDU1OzExMDEgMTE3MyAxMUI4O0IwNTU7MTEwMSAxMTczIDExQjg7ICMgKOuBlTsg64GVOyDhhIHhhbPhhrg7IOuBlTsg4YSB4YWz4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBHR0VVQgorQjA1NjtCMDU2OzExMDEgMTE3MyAxMUI5O0IwNTY7MTEwMSAxMTczIDExQjk7ICMgKOuBljsg64GWOyDhhIHhhbPhhrk7IOuBljsg4YSB4YWz4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHR0VVQlMKK0IwNTc7QjA1NzsxMTAxIDExNzMgMTFCQTtCMDU3OzExMDEgMTE3MyAxMUJBOyAjICjrgZc7IOuBlzsg4YSB4YWz4Ya6OyDrgZc7IOGEgeGFs+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgR0dFVVMKK0IwNTg7QjA1ODsxMTAxIDExNzMgMTFCQjtCMDU4OzExMDEgMTE3MyAxMUJCOyAjICjrgZg7IOuBmDsg4YSB4YWz4Ya7OyDrgZg7IOGEgeGFs+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgR0dFVVNTCitCMDU5O0IwNTk7MTEwMSAxMTczIDExQkM7QjA1OTsxMTAxIDExNzMgMTFCQzsgIyAo64GZOyDrgZk7IOGEgeGFs+GGvDsg64GZOyDhhIHhhbPhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdHRVVORworQjA1QTtCMDVBOzExMDEgMTE3MyAxMUJEO0IwNUE7MTEwMSAxMTczIDExQkQ7ICMgKOuBmjsg64GaOyDhhIHhhbPhhr07IOuBmjsg4YSB4YWz4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHR0VVSgorQjA1QjtCMDVCOzExMDEgMTE3MyAxMUJFO0IwNUI7MTEwMSAxMTczIDExQkU7ICMgKOuBmzsg64GbOyDhhIHhhbPhhr47IOuBmzsg4YSB4YWz4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBHR0VVQworQjA1QztCMDVDOzExMDEgMTE3MyAxMUJGO0IwNUM7MTEwMSAxMTczIDExQkY7ICMgKOuBnDsg64GcOyDhhIHhhbPhhr87IOuBnDsg4YSB4YWz4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHR0VVSworQjA1RDtCMDVEOzExMDEgMTE3MyAxMUMwO0IwNUQ7MTEwMSAxMTczIDExQzA7ICMgKOuBnTsg64GdOyDhhIHhhbPhh4A7IOuBnTsg4YSB4YWz4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHR0VVVAorQjA1RTtCMDVFOzExMDEgMTE3MyAxMUMxO0IwNUU7MTEwMSAxMTczIDExQzE7ICMgKOuBnjsg64GeOyDhhIHhhbPhh4E7IOuBnjsg4YSB4YWz4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBHR0VVUAorQjA1RjtCMDVGOzExMDEgMTE3MyAxMUMyO0IwNUY7MTEwMSAxMTczIDExQzI7ICMgKOuBnzsg64GfOyDhhIHhhbPhh4I7IOuBnzsg4YSB4YWz4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHR0VVSAorQjA2MDtCMDYwOzExMDEgMTE3NDtCMDYwOzExMDEgMTE3NDsgIyAo64GgOyDrgaA7IOGEgeGFtDsg64GgOyDhhIHhhbQ7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUkKK0IwNjE7QjA2MTsxMTAxIDExNzQgMTFBODtCMDYxOzExMDEgMTE3NCAxMUE4OyAjICjrgaE7IOuBoTsg4YSB4YW04YaoOyDrgaE7IOGEgeGFtOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZSUcKK0IwNjI7QjA2MjsxMTAxIDExNzQgMTFBOTtCMDYyOzExMDEgMTE3NCAxMUE5OyAjICjrgaI7IOuBojsg4YSB4YW04YapOyDrgaI7IOGEgeGFtOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZSUdHCitCMDYzO0IwNjM7MTEwMSAxMTc0IDExQUE7QjA2MzsxMTAxIDExNzQgMTFBQTsgIyAo64GjOyDrgaM7IOGEgeGFtOGGqjsg64GjOyDhhIHhhbThhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUlHUworQjA2NDtCMDY0OzExMDEgMTE3NCAxMUFCO0IwNjQ7MTEwMSAxMTc0IDExQUI7ICMgKOuBpDsg64GkOyDhhIHhhbThhqs7IOuBpDsg4YSB4YW04YarOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lJTgorQjA2NTtCMDY1OzExMDEgMTE3NCAxMUFDO0IwNjU7MTEwMSAxMTc0IDExQUM7ICMgKOuBpTsg64GlOyDhhIHhhbThhqw7IOuBpTsg4YSB4YW04YasOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lJTkoKK0IwNjY7QjA2NjsxMTAxIDExNzQgMTFBRDtCMDY2OzExMDEgMTE3NCAxMUFEOyAjICjrgaY7IOuBpjsg4YSB4YW04YatOyDrgaY7IOGEgeGFtOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZSU5ICitCMDY3O0IwNjc7MTEwMSAxMTc0IDExQUU7QjA2NzsxMTAxIDExNzQgMTFBRTsgIyAo64GnOyDrgac7IOGEgeGFtOGGrjsg64GnOyDhhIHhhbThhq47ICkgSEFOR1VMIFNZTExBQkxFIEdHWUlECitCMDY4O0IwNjg7MTEwMSAxMTc0IDExQUY7QjA2ODsxMTAxIDExNzQgMTFBRjsgIyAo64GoOyDrgag7IOGEgeGFtOGGrzsg64GoOyDhhIHhhbThhq87ICkgSEFOR1VMIFNZTExBQkxFIEdHWUlMCitCMDY5O0IwNjk7MTEwMSAxMTc0IDExQjA7QjA2OTsxMTAxIDExNzQgMTFCMDsgIyAo64GpOyDrgak7IOGEgeGFtOGGsDsg64GpOyDhhIHhhbThhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUlMRworQjA2QTtCMDZBOzExMDEgMTE3NCAxMUIxO0IwNkE7MTEwMSAxMTc0IDExQjE7ICMgKOuBqjsg64GqOyDhhIHhhbThhrE7IOuBqjsg4YSB4YW04YaxOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lJTE0KK0IwNkI7QjA2QjsxMTAxIDExNzQgMTFCMjtCMDZCOzExMDEgMTE3NCAxMUIyOyAjICjrgas7IOuBqzsg4YSB4YW04YayOyDrgas7IOGEgeGFtOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZSUxCCitCMDZDO0IwNkM7MTEwMSAxMTc0IDExQjM7QjA2QzsxMTAxIDExNzQgMTFCMzsgIyAo64GsOyDrgaw7IOGEgeGFtOGGszsg64GsOyDhhIHhhbThhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUlMUworQjA2RDtCMDZEOzExMDEgMTE3NCAxMUI0O0IwNkQ7MTEwMSAxMTc0IDExQjQ7ICMgKOuBrTsg64GtOyDhhIHhhbThhrQ7IOuBrTsg4YSB4YW04Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lJTFQKK0IwNkU7QjA2RTsxMTAxIDExNzQgMTFCNTtCMDZFOzExMDEgMTE3NCAxMUI1OyAjICjrga47IOuBrjsg4YSB4YW04Ya1OyDrga47IOGEgeGFtOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZSUxQCitCMDZGO0IwNkY7MTEwMSAxMTc0IDExQjY7QjA2RjsxMTAxIDExNzQgMTFCNjsgIyAo64GvOyDrga87IOGEgeGFtOGGtjsg64GvOyDhhIHhhbThhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUlMSAorQjA3MDtCMDcwOzExMDEgMTE3NCAxMUI3O0IwNzA7MTEwMSAxMTc0IDExQjc7ICMgKOuBsDsg64GwOyDhhIHhhbThhrc7IOuBsDsg4YSB4YW04Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lJTQorQjA3MTtCMDcxOzExMDEgMTE3NCAxMUI4O0IwNzE7MTEwMSAxMTc0IDExQjg7ICMgKOuBsTsg64GxOyDhhIHhhbThhrg7IOuBsTsg4YSB4YW04Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lJQgorQjA3MjtCMDcyOzExMDEgMTE3NCAxMUI5O0IwNzI7MTEwMSAxMTc0IDExQjk7ICMgKOuBsjsg64GyOyDhhIHhhbThhrk7IOuBsjsg4YSB4YW04Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lJQlMKK0IwNzM7QjA3MzsxMTAxIDExNzQgMTFCQTtCMDczOzExMDEgMTE3NCAxMUJBOyAjICjrgbM7IOuBszsg4YSB4YW04Ya6OyDrgbM7IOGEgeGFtOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZSVMKK0IwNzQ7QjA3NDsxMTAxIDExNzQgMTFCQjtCMDc0OzExMDEgMTE3NCAxMUJCOyAjICjrgbQ7IOuBtDsg4YSB4YW04Ya7OyDrgbQ7IOGEgeGFtOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgR0dZSVNTCitCMDc1O0IwNzU7MTEwMSAxMTc0IDExQkM7QjA3NTsxMTAxIDExNzQgMTFCQzsgIyAo64G1OyDrgbU7IOGEgeGFtOGGvDsg64G1OyDhhIHhhbThhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdHWUlORworQjA3NjtCMDc2OzExMDEgMTE3NCAxMUJEO0IwNzY7MTEwMSAxMTc0IDExQkQ7ICMgKOuBtjsg64G2OyDhhIHhhbThhr07IOuBtjsg4YSB4YW04Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lJSgorQjA3NztCMDc3OzExMDEgMTE3NCAxMUJFO0IwNzc7MTEwMSAxMTc0IDExQkU7ICMgKOuBtzsg64G3OyDhhIHhhbThhr47IOuBtzsg4YSB4YW04Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lJQworQjA3ODtCMDc4OzExMDEgMTE3NCAxMUJGO0IwNzg7MTEwMSAxMTc0IDExQkY7ICMgKOuBuDsg64G4OyDhhIHhhbThhr87IOuBuDsg4YSB4YW04Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHR1lJSworQjA3OTtCMDc5OzExMDEgMTE3NCAxMUMwO0IwNzk7MTEwMSAxMTc0IDExQzA7ICMgKOuBuTsg64G5OyDhhIHhhbThh4A7IOuBuTsg4YSB4YW04YeAOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lJVAorQjA3QTtCMDdBOzExMDEgMTE3NCAxMUMxO0IwN0E7MTEwMSAxMTc0IDExQzE7ICMgKOuBujsg64G6OyDhhIHhhbThh4E7IOuBujsg4YSB4YW04YeBOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lJUAorQjA3QjtCMDdCOzExMDEgMTE3NCAxMUMyO0IwN0I7MTEwMSAxMTc0IDExQzI7ICMgKOuBuzsg64G7OyDhhIHhhbThh4I7IOuBuzsg4YSB4YW04YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHR1lJSAorQjA3QztCMDdDOzExMDEgMTE3NTtCMDdDOzExMDEgMTE3NTsgIyAo64G8OyDrgbw7IOGEgeGFtTsg64G8OyDhhIHhhbU7ICkgSEFOR1VMIFNZTExBQkxFIEdHSQorQjA3RDtCMDdEOzExMDEgMTE3NSAxMUE4O0IwN0Q7MTEwMSAxMTc1IDExQTg7ICMgKOuBvTsg64G9OyDhhIHhhbXhhqg7IOuBvTsg4YSB4YW14YaoOyApIEhBTkdVTCBTWUxMQUJMRSBHR0lHCitCMDdFO0IwN0U7MTEwMSAxMTc1IDExQTk7QjA3RTsxMTAxIDExNzUgMTFBOTsgIyAo64G+OyDrgb47IOGEgeGFteGGqTsg64G+OyDhhIHhhbXhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEdHSUdHCitCMDdGO0IwN0Y7MTEwMSAxMTc1IDExQUE7QjA3RjsxMTAxIDExNzUgMTFBQTsgIyAo64G/OyDrgb87IOGEgeGFteGGqjsg64G/OyDhhIHhhbXhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEdHSUdTCitCMDgwO0IwODA7MTEwMSAxMTc1IDExQUI7QjA4MDsxMTAxIDExNzUgMTFBQjsgIyAo64KAOyDrgoA7IOGEgeGFteGGqzsg64KAOyDhhIHhhbXhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEdHSU4KK0IwODE7QjA4MTsxMTAxIDExNzUgMTFBQztCMDgxOzExMDEgMTE3NSAxMUFDOyAjICjrgoE7IOuCgTsg4YSB4YW14YasOyDrgoE7IOGEgeGFteGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dJTkoKK0IwODI7QjA4MjsxMTAxIDExNzUgMTFBRDtCMDgyOzExMDEgMTE3NSAxMUFEOyAjICjrgoI7IOuCgjsg4YSB4YW14YatOyDrgoI7IOGEgeGFteGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dJTkgKK0IwODM7QjA4MzsxMTAxIDExNzUgMTFBRTtCMDgzOzExMDEgMTE3NSAxMUFFOyAjICjrgoM7IOuCgzsg4YSB4YW14YauOyDrgoM7IOGEgeGFteGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dJRAorQjA4NDtCMDg0OzExMDEgMTE3NSAxMUFGO0IwODQ7MTEwMSAxMTc1IDExQUY7ICMgKOuChDsg64KEOyDhhIHhhbXhhq87IOuChDsg4YSB4YW14YavOyApIEhBTkdVTCBTWUxMQUJMRSBHR0lMCitCMDg1O0IwODU7MTEwMSAxMTc1IDExQjA7QjA4NTsxMTAxIDExNzUgMTFCMDsgIyAo64KFOyDrgoU7IOGEgeGFteGGsDsg64KFOyDhhIHhhbXhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEdHSUxHCitCMDg2O0IwODY7MTEwMSAxMTc1IDExQjE7QjA4NjsxMTAxIDExNzUgMTFCMTsgIyAo64KGOyDrgoY7IOGEgeGFteGGsTsg64KGOyDhhIHhhbXhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEdHSUxNCitCMDg3O0IwODc7MTEwMSAxMTc1IDExQjI7QjA4NzsxMTAxIDExNzUgMTFCMjsgIyAo64KHOyDrgoc7IOGEgeGFteGGsjsg64KHOyDhhIHhhbXhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEdHSUxCCitCMDg4O0IwODg7MTEwMSAxMTc1IDExQjM7QjA4ODsxMTAxIDExNzUgMTFCMzsgIyAo64KIOyDrgog7IOGEgeGFteGGszsg64KIOyDhhIHhhbXhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEdHSUxTCitCMDg5O0IwODk7MTEwMSAxMTc1IDExQjQ7QjA4OTsxMTAxIDExNzUgMTFCNDsgIyAo64KJOyDrgok7IOGEgeGFteGGtDsg64KJOyDhhIHhhbXhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEdHSUxUCitCMDhBO0IwOEE7MTEwMSAxMTc1IDExQjU7QjA4QTsxMTAxIDExNzUgMTFCNTsgIyAo64KKOyDrgoo7IOGEgeGFteGGtTsg64KKOyDhhIHhhbXhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEdHSUxQCitCMDhCO0IwOEI7MTEwMSAxMTc1IDExQjY7QjA4QjsxMTAxIDExNzUgMTFCNjsgIyAo64KLOyDrgos7IOGEgeGFteGGtjsg64KLOyDhhIHhhbXhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEdHSUxICitCMDhDO0IwOEM7MTEwMSAxMTc1IDExQjc7QjA4QzsxMTAxIDExNzUgMTFCNzsgIyAo64KMOyDrgow7IOGEgeGFteGGtzsg64KMOyDhhIHhhbXhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEdHSU0KK0IwOEQ7QjA4RDsxMTAxIDExNzUgMTFCODtCMDhEOzExMDEgMTE3NSAxMUI4OyAjICjrgo07IOuCjTsg4YSB4YW14Ya4OyDrgo07IOGEgeGFteGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgR0dJQgorQjA4RTtCMDhFOzExMDEgMTE3NSAxMUI5O0IwOEU7MTEwMSAxMTc1IDExQjk7ICMgKOuCjjsg64KOOyDhhIHhhbXhhrk7IOuCjjsg4YSB4YW14Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBHR0lCUworQjA4RjtCMDhGOzExMDEgMTE3NSAxMUJBO0IwOEY7MTEwMSAxMTc1IDExQkE7ICMgKOuCjzsg64KPOyDhhIHhhbXhhro7IOuCjzsg4YSB4YW14Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBHR0lTCitCMDkwO0IwOTA7MTEwMSAxMTc1IDExQkI7QjA5MDsxMTAxIDExNzUgMTFCQjsgIyAo64KQOyDrgpA7IOGEgeGFteGGuzsg64KQOyDhhIHhhbXhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEdHSVNTCitCMDkxO0IwOTE7MTEwMSAxMTc1IDExQkM7QjA5MTsxMTAxIDExNzUgMTFCQzsgIyAo64KROyDrgpE7IOGEgeGFteGGvDsg64KROyDhhIHhhbXhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEdHSU5HCitCMDkyO0IwOTI7MTEwMSAxMTc1IDExQkQ7QjA5MjsxMTAxIDExNzUgMTFCRDsgIyAo64KSOyDrgpI7IOGEgeGFteGGvTsg64KSOyDhhIHhhbXhhr07ICkgSEFOR1VMIFNZTExBQkxFIEdHSUoKK0IwOTM7QjA5MzsxMTAxIDExNzUgMTFCRTtCMDkzOzExMDEgMTE3NSAxMUJFOyAjICjrgpM7IOuCkzsg4YSB4YW14Ya+OyDrgpM7IOGEgeGFteGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgR0dJQworQjA5NDtCMDk0OzExMDEgMTE3NSAxMUJGO0IwOTQ7MTEwMSAxMTc1IDExQkY7ICMgKOuClDsg64KUOyDhhIHhhbXhhr87IOuClDsg4YSB4YW14Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBHR0lLCitCMDk1O0IwOTU7MTEwMSAxMTc1IDExQzA7QjA5NTsxMTAxIDExNzUgMTFDMDsgIyAo64KVOyDrgpU7IOGEgeGFteGHgDsg64KVOyDhhIHhhbXhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEdHSVQKK0IwOTY7QjA5NjsxMTAxIDExNzUgMTFDMTtCMDk2OzExMDEgMTE3NSAxMUMxOyAjICjrgpY7IOuCljsg4YSB4YW14YeBOyDrgpY7IOGEgeGFteGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgR0dJUAorQjA5NztCMDk3OzExMDEgMTE3NSAxMUMyO0IwOTc7MTEwMSAxMTc1IDExQzI7ICMgKOuClzsg64KXOyDhhIHhhbXhh4I7IOuClzsg4YSB4YW14YeCOyApIEhBTkdVTCBTWUxMQUJMRSBHR0lICitCMDk4O0IwOTg7MTEwMiAxMTYxO0IwOTg7MTEwMiAxMTYxOyAjICjrgpg7IOuCmDsg4YSC4YWhOyDrgpg7IOGEguGFoTsgKSBIQU5HVUwgU1lMTEFCTEUgTkEKK0IwOTk7QjA5OTsxMTAyIDExNjEgMTFBODtCMDk5OzExMDIgMTE2MSAxMUE4OyAjICjrgpk7IOuCmTsg4YSC4YWh4YaoOyDrgpk7IOGEguGFoeGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgTkFHCitCMDlBO0IwOUE7MTEwMiAxMTYxIDExQTk7QjA5QTsxMTAyIDExNjEgMTFBOTsgIyAo64KaOyDrgpo7IOGEguGFoeGGqTsg64KaOyDhhILhhaHhhqk7ICkgSEFOR1VMIFNZTExBQkxFIE5BR0cKK0IwOUI7QjA5QjsxMTAyIDExNjEgMTFBQTtCMDlCOzExMDIgMTE2MSAxMUFBOyAjICjrgps7IOuCmzsg4YSC4YWh4YaqOyDrgps7IOGEguGFoeGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgTkFHUworQjA5QztCMDlDOzExMDIgMTE2MSAxMUFCO0IwOUM7MTEwMiAxMTYxIDExQUI7ICMgKOuCnDsg64KcOyDhhILhhaHhhqs7IOuCnDsg4YSC4YWh4YarOyApIEhBTkdVTCBTWUxMQUJMRSBOQU4KK0IwOUQ7QjA5RDsxMTAyIDExNjEgMTFBQztCMDlEOzExMDIgMTE2MSAxMUFDOyAjICjrgp07IOuCnTsg4YSC4YWh4YasOyDrgp07IOGEguGFoeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgTkFOSgorQjA5RTtCMDlFOzExMDIgMTE2MSAxMUFEO0IwOUU7MTEwMiAxMTYxIDExQUQ7ICMgKOuCnjsg64KeOyDhhILhhaHhhq07IOuCnjsg4YSC4YWh4YatOyApIEhBTkdVTCBTWUxMQUJMRSBOQU5ICitCMDlGO0IwOUY7MTEwMiAxMTYxIDExQUU7QjA5RjsxMTAyIDExNjEgMTFBRTsgIyAo64KfOyDrgp87IOGEguGFoeGGrjsg64KfOyDhhILhhaHhhq47ICkgSEFOR1VMIFNZTExBQkxFIE5BRAorQjBBMDtCMEEwOzExMDIgMTE2MSAxMUFGO0IwQTA7MTEwMiAxMTYxIDExQUY7ICMgKOuCoDsg64KgOyDhhILhhaHhhq87IOuCoDsg4YSC4YWh4YavOyApIEhBTkdVTCBTWUxMQUJMRSBOQUwKK0IwQTE7QjBBMTsxMTAyIDExNjEgMTFCMDtCMEExOzExMDIgMTE2MSAxMUIwOyAjICjrgqE7IOuCoTsg4YSC4YWh4YawOyDrgqE7IOGEguGFoeGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgTkFMRworQjBBMjtCMEEyOzExMDIgMTE2MSAxMUIxO0IwQTI7MTEwMiAxMTYxIDExQjE7ICMgKOuCojsg64KiOyDhhILhhaHhhrE7IOuCojsg4YSC4YWh4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBOQUxNCitCMEEzO0IwQTM7MTEwMiAxMTYxIDExQjI7QjBBMzsxMTAyIDExNjEgMTFCMjsgIyAo64KjOyDrgqM7IOGEguGFoeGGsjsg64KjOyDhhILhhaHhhrI7ICkgSEFOR1VMIFNZTExBQkxFIE5BTEIKK0IwQTQ7QjBBNDsxMTAyIDExNjEgMTFCMztCMEE0OzExMDIgMTE2MSAxMUIzOyAjICjrgqQ7IOuCpDsg4YSC4YWh4YazOyDrgqQ7IOGEguGFoeGGszsgKSBIQU5HVUwgU1lMTEFCTEUgTkFMUworQjBBNTtCMEE1OzExMDIgMTE2MSAxMUI0O0IwQTU7MTEwMiAxMTYxIDExQjQ7ICMgKOuCpTsg64KlOyDhhILhhaHhhrQ7IOuCpTsg4YSC4YWh4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBOQUxUCitCMEE2O0IwQTY7MTEwMiAxMTYxIDExQjU7QjBBNjsxMTAyIDExNjEgMTFCNTsgIyAo64KmOyDrgqY7IOGEguGFoeGGtTsg64KmOyDhhILhhaHhhrU7ICkgSEFOR1VMIFNZTExBQkxFIE5BTFAKK0IwQTc7QjBBNzsxMTAyIDExNjEgMTFCNjtCMEE3OzExMDIgMTE2MSAxMUI2OyAjICjrgqc7IOuCpzsg4YSC4YWh4Ya2OyDrgqc7IOGEguGFoeGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgTkFMSAorQjBBODtCMEE4OzExMDIgMTE2MSAxMUI3O0IwQTg7MTEwMiAxMTYxIDExQjc7ICMgKOuCqDsg64KoOyDhhILhhaHhhrc7IOuCqDsg4YSC4YWh4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBOQU0KK0IwQTk7QjBBOTsxMTAyIDExNjEgMTFCODtCMEE5OzExMDIgMTE2MSAxMUI4OyAjICjrgqk7IOuCqTsg4YSC4YWh4Ya4OyDrgqk7IOGEguGFoeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgTkFCCitCMEFBO0IwQUE7MTEwMiAxMTYxIDExQjk7QjBBQTsxMTAyIDExNjEgMTFCOTsgIyAo64KqOyDrgqo7IOGEguGFoeGGuTsg64KqOyDhhILhhaHhhrk7ICkgSEFOR1VMIFNZTExBQkxFIE5BQlMKK0IwQUI7QjBBQjsxMTAyIDExNjEgMTFCQTtCMEFCOzExMDIgMTE2MSAxMUJBOyAjICjrgqs7IOuCqzsg4YSC4YWh4Ya6OyDrgqs7IOGEguGFoeGGujsgKSBIQU5HVUwgU1lMTEFCTEUgTkFTCitCMEFDO0IwQUM7MTEwMiAxMTYxIDExQkI7QjBBQzsxMTAyIDExNjEgMTFCQjsgIyAo64KsOyDrgqw7IOGEguGFoeGGuzsg64KsOyDhhILhhaHhhrs7ICkgSEFOR1VMIFNZTExBQkxFIE5BU1MKK0IwQUQ7QjBBRDsxMTAyIDExNjEgMTFCQztCMEFEOzExMDIgMTE2MSAxMUJDOyAjICjrgq07IOuCrTsg4YSC4YWh4Ya8OyDrgq07IOGEguGFoeGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgTkFORworQjBBRTtCMEFFOzExMDIgMTE2MSAxMUJEO0IwQUU7MTEwMiAxMTYxIDExQkQ7ICMgKOuCrjsg64KuOyDhhILhhaHhhr07IOuCrjsg4YSC4YWh4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBOQUoKK0IwQUY7QjBBRjsxMTAyIDExNjEgMTFCRTtCMEFGOzExMDIgMTE2MSAxMUJFOyAjICjrgq87IOuCrzsg4YSC4YWh4Ya+OyDrgq87IOGEguGFoeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgTkFDCitCMEIwO0IwQjA7MTEwMiAxMTYxIDExQkY7QjBCMDsxMTAyIDExNjEgMTFCRjsgIyAo64KwOyDrgrA7IOGEguGFoeGGvzsg64KwOyDhhILhhaHhhr87ICkgSEFOR1VMIFNZTExBQkxFIE5BSworQjBCMTtCMEIxOzExMDIgMTE2MSAxMUMwO0IwQjE7MTEwMiAxMTYxIDExQzA7ICMgKOuCsTsg64KxOyDhhILhhaHhh4A7IOuCsTsg4YSC4YWh4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBOQVQKK0IwQjI7QjBCMjsxMTAyIDExNjEgMTFDMTtCMEIyOzExMDIgMTE2MSAxMUMxOyAjICjrgrI7IOuCsjsg4YSC4YWh4YeBOyDrgrI7IOGEguGFoeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgTkFQCitCMEIzO0IwQjM7MTEwMiAxMTYxIDExQzI7QjBCMzsxMTAyIDExNjEgMTFDMjsgIyAo64KzOyDrgrM7IOGEguGFoeGHgjsg64KzOyDhhILhhaHhh4I7ICkgSEFOR1VMIFNZTExBQkxFIE5BSAorQjBCNDtCMEI0OzExMDIgMTE2MjtCMEI0OzExMDIgMTE2MjsgIyAo64K0OyDrgrQ7IOGEguGFojsg64K0OyDhhILhhaI7ICkgSEFOR1VMIFNZTExBQkxFIE5BRQorQjBCNTtCMEI1OzExMDIgMTE2MiAxMUE4O0IwQjU7MTEwMiAxMTYyIDExQTg7ICMgKOuCtTsg64K1OyDhhILhhaLhhqg7IOuCtTsg4YSC4YWi4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBOQUVHCitCMEI2O0IwQjY7MTEwMiAxMTYyIDExQTk7QjBCNjsxMTAyIDExNjIgMTFBOTsgIyAo64K2OyDrgrY7IOGEguGFouGGqTsg64K2OyDhhILhhaLhhqk7ICkgSEFOR1VMIFNZTExBQkxFIE5BRUdHCitCMEI3O0IwQjc7MTEwMiAxMTYyIDExQUE7QjBCNzsxMTAyIDExNjIgMTFBQTsgIyAo64K3OyDrgrc7IOGEguGFouGGqjsg64K3OyDhhILhhaLhhqo7ICkgSEFOR1VMIFNZTExBQkxFIE5BRUdTCitCMEI4O0IwQjg7MTEwMiAxMTYyIDExQUI7QjBCODsxMTAyIDExNjIgMTFBQjsgIyAo64K4OyDrgrg7IOGEguGFouGGqzsg64K4OyDhhILhhaLhhqs7ICkgSEFOR1VMIFNZTExBQkxFIE5BRU4KK0IwQjk7QjBCOTsxMTAyIDExNjIgMTFBQztCMEI5OzExMDIgMTE2MiAxMUFDOyAjICjrgrk7IOuCuTsg4YSC4YWi4YasOyDrgrk7IOGEguGFouGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgTkFFTkoKK0IwQkE7QjBCQTsxMTAyIDExNjIgMTFBRDtCMEJBOzExMDIgMTE2MiAxMUFEOyAjICjrgro7IOuCujsg4YSC4YWi4YatOyDrgro7IOGEguGFouGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgTkFFTkgKK0IwQkI7QjBCQjsxMTAyIDExNjIgMTFBRTtCMEJCOzExMDIgMTE2MiAxMUFFOyAjICjrgrs7IOuCuzsg4YSC4YWi4YauOyDrgrs7IOGEguGFouGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgTkFFRAorQjBCQztCMEJDOzExMDIgMTE2MiAxMUFGO0IwQkM7MTEwMiAxMTYyIDExQUY7ICMgKOuCvDsg64K8OyDhhILhhaLhhq87IOuCvDsg4YSC4YWi4YavOyApIEhBTkdVTCBTWUxMQUJMRSBOQUVMCitCMEJEO0IwQkQ7MTEwMiAxMTYyIDExQjA7QjBCRDsxMTAyIDExNjIgMTFCMDsgIyAo64K9OyDrgr07IOGEguGFouGGsDsg64K9OyDhhILhhaLhhrA7ICkgSEFOR1VMIFNZTExBQkxFIE5BRUxHCitCMEJFO0IwQkU7MTEwMiAxMTYyIDExQjE7QjBCRTsxMTAyIDExNjIgMTFCMTsgIyAo64K+OyDrgr47IOGEguGFouGGsTsg64K+OyDhhILhhaLhhrE7ICkgSEFOR1VMIFNZTExBQkxFIE5BRUxNCitCMEJGO0IwQkY7MTEwMiAxMTYyIDExQjI7QjBCRjsxMTAyIDExNjIgMTFCMjsgIyAo64K/OyDrgr87IOGEguGFouGGsjsg64K/OyDhhILhhaLhhrI7ICkgSEFOR1VMIFNZTExBQkxFIE5BRUxCCitCMEMwO0IwQzA7MTEwMiAxMTYyIDExQjM7QjBDMDsxMTAyIDExNjIgMTFCMzsgIyAo64OAOyDrg4A7IOGEguGFouGGszsg64OAOyDhhILhhaLhhrM7ICkgSEFOR1VMIFNZTExBQkxFIE5BRUxTCitCMEMxO0IwQzE7MTEwMiAxMTYyIDExQjQ7QjBDMTsxMTAyIDExNjIgMTFCNDsgIyAo64OBOyDrg4E7IOGEguGFouGGtDsg64OBOyDhhILhhaLhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIE5BRUxUCitCMEMyO0IwQzI7MTEwMiAxMTYyIDExQjU7QjBDMjsxMTAyIDExNjIgMTFCNTsgIyAo64OCOyDrg4I7IOGEguGFouGGtTsg64OCOyDhhILhhaLhhrU7ICkgSEFOR1VMIFNZTExBQkxFIE5BRUxQCitCMEMzO0IwQzM7MTEwMiAxMTYyIDExQjY7QjBDMzsxMTAyIDExNjIgMTFCNjsgIyAo64ODOyDrg4M7IOGEguGFouGGtjsg64ODOyDhhILhhaLhhrY7ICkgSEFOR1VMIFNZTExBQkxFIE5BRUxICitCMEM0O0IwQzQ7MTEwMiAxMTYyIDExQjc7QjBDNDsxMTAyIDExNjIgMTFCNzsgIyAo64OEOyDrg4Q7IOGEguGFouGGtzsg64OEOyDhhILhhaLhhrc7ICkgSEFOR1VMIFNZTExBQkxFIE5BRU0KK0IwQzU7QjBDNTsxMTAyIDExNjIgMTFCODtCMEM1OzExMDIgMTE2MiAxMUI4OyAjICjrg4U7IOuDhTsg4YSC4YWi4Ya4OyDrg4U7IOGEguGFouGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgTkFFQgorQjBDNjtCMEM2OzExMDIgMTE2MiAxMUI5O0IwQzY7MTEwMiAxMTYyIDExQjk7ICMgKOuDhjsg64OGOyDhhILhhaLhhrk7IOuDhjsg4YSC4YWi4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBOQUVCUworQjBDNztCMEM3OzExMDIgMTE2MiAxMUJBO0IwQzc7MTEwMiAxMTYyIDExQkE7ICMgKOuDhzsg64OHOyDhhILhhaLhhro7IOuDhzsg4YSC4YWi4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBOQUVTCitCMEM4O0IwQzg7MTEwMiAxMTYyIDExQkI7QjBDODsxMTAyIDExNjIgMTFCQjsgIyAo64OIOyDrg4g7IOGEguGFouGGuzsg64OIOyDhhILhhaLhhrs7ICkgSEFOR1VMIFNZTExBQkxFIE5BRVNTCitCMEM5O0IwQzk7MTEwMiAxMTYyIDExQkM7QjBDOTsxMTAyIDExNjIgMTFCQzsgIyAo64OJOyDrg4k7IOGEguGFouGGvDsg64OJOyDhhILhhaLhhrw7ICkgSEFOR1VMIFNZTExBQkxFIE5BRU5HCitCMENBO0IwQ0E7MTEwMiAxMTYyIDExQkQ7QjBDQTsxMTAyIDExNjIgMTFCRDsgIyAo64OKOyDrg4o7IOGEguGFouGGvTsg64OKOyDhhILhhaLhhr07ICkgSEFOR1VMIFNZTExBQkxFIE5BRUoKK0IwQ0I7QjBDQjsxMTAyIDExNjIgMTFCRTtCMENCOzExMDIgMTE2MiAxMUJFOyAjICjrg4s7IOuDizsg4YSC4YWi4Ya+OyDrg4s7IOGEguGFouGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgTkFFQworQjBDQztCMENDOzExMDIgMTE2MiAxMUJGO0IwQ0M7MTEwMiAxMTYyIDExQkY7ICMgKOuDjDsg64OMOyDhhILhhaLhhr87IOuDjDsg4YSC4YWi4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBOQUVLCitCMENEO0IwQ0Q7MTEwMiAxMTYyIDExQzA7QjBDRDsxMTAyIDExNjIgMTFDMDsgIyAo64ONOyDrg407IOGEguGFouGHgDsg64ONOyDhhILhhaLhh4A7ICkgSEFOR1VMIFNZTExBQkxFIE5BRVQKK0IwQ0U7QjBDRTsxMTAyIDExNjIgMTFDMTtCMENFOzExMDIgMTE2MiAxMUMxOyAjICjrg447IOuDjjsg4YSC4YWi4YeBOyDrg447IOGEguGFouGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgTkFFUAorQjBDRjtCMENGOzExMDIgMTE2MiAxMUMyO0IwQ0Y7MTEwMiAxMTYyIDExQzI7ICMgKOuDjzsg64OPOyDhhILhhaLhh4I7IOuDjzsg4YSC4YWi4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBOQUVICitCMEQwO0IwRDA7MTEwMiAxMTYzO0IwRDA7MTEwMiAxMTYzOyAjICjrg5A7IOuDkDsg4YSC4YWjOyDrg5A7IOGEguGFozsgKSBIQU5HVUwgU1lMTEFCTEUgTllBCitCMEQxO0IwRDE7MTEwMiAxMTYzIDExQTg7QjBEMTsxMTAyIDExNjMgMTFBODsgIyAo64OROyDrg5E7IOGEguGFo+GGqDsg64OROyDhhILhhaPhhqg7ICkgSEFOR1VMIFNZTExBQkxFIE5ZQUcKK0IwRDI7QjBEMjsxMTAyIDExNjMgMTFBOTtCMEQyOzExMDIgMTE2MyAxMUE5OyAjICjrg5I7IOuDkjsg4YSC4YWj4YapOyDrg5I7IOGEguGFo+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgTllBR0cKK0IwRDM7QjBEMzsxMTAyIDExNjMgMTFBQTtCMEQzOzExMDIgMTE2MyAxMUFBOyAjICjrg5M7IOuDkzsg4YSC4YWj4YaqOyDrg5M7IOGEguGFo+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgTllBR1MKK0IwRDQ7QjBENDsxMTAyIDExNjMgMTFBQjtCMEQ0OzExMDIgMTE2MyAxMUFCOyAjICjrg5Q7IOuDlDsg4YSC4YWj4YarOyDrg5Q7IOGEguGFo+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgTllBTgorQjBENTtCMEQ1OzExMDIgMTE2MyAxMUFDO0IwRDU7MTEwMiAxMTYzIDExQUM7ICMgKOuDlTsg64OVOyDhhILhhaPhhqw7IOuDlTsg4YSC4YWj4YasOyApIEhBTkdVTCBTWUxMQUJMRSBOWUFOSgorQjBENjtCMEQ2OzExMDIgMTE2MyAxMUFEO0IwRDY7MTEwMiAxMTYzIDExQUQ7ICMgKOuDljsg64OWOyDhhILhhaPhhq07IOuDljsg4YSC4YWj4YatOyApIEhBTkdVTCBTWUxMQUJMRSBOWUFOSAorQjBENztCMEQ3OzExMDIgMTE2MyAxMUFFO0IwRDc7MTEwMiAxMTYzIDExQUU7ICMgKOuDlzsg64OXOyDhhILhhaPhhq47IOuDlzsg4YSC4YWj4YauOyApIEhBTkdVTCBTWUxMQUJMRSBOWUFECitCMEQ4O0IwRDg7MTEwMiAxMTYzIDExQUY7QjBEODsxMTAyIDExNjMgMTFBRjsgIyAo64OYOyDrg5g7IOGEguGFo+GGrzsg64OYOyDhhILhhaPhhq87ICkgSEFOR1VMIFNZTExBQkxFIE5ZQUwKK0IwRDk7QjBEOTsxMTAyIDExNjMgMTFCMDtCMEQ5OzExMDIgMTE2MyAxMUIwOyAjICjrg5k7IOuDmTsg4YSC4YWj4YawOyDrg5k7IOGEguGFo+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgTllBTEcKK0IwREE7QjBEQTsxMTAyIDExNjMgMTFCMTtCMERBOzExMDIgMTE2MyAxMUIxOyAjICjrg5o7IOuDmjsg4YSC4YWj4YaxOyDrg5o7IOGEguGFo+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgTllBTE0KK0IwREI7QjBEQjsxMTAyIDExNjMgMTFCMjtCMERCOzExMDIgMTE2MyAxMUIyOyAjICjrg5s7IOuDmzsg4YSC4YWj4YayOyDrg5s7IOGEguGFo+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgTllBTEIKK0IwREM7QjBEQzsxMTAyIDExNjMgMTFCMztCMERDOzExMDIgMTE2MyAxMUIzOyAjICjrg5w7IOuDnDsg4YSC4YWj4YazOyDrg5w7IOGEguGFo+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgTllBTFMKK0IwREQ7QjBERDsxMTAyIDExNjMgMTFCNDtCMEREOzExMDIgMTE2MyAxMUI0OyAjICjrg507IOuDnTsg4YSC4YWj4Ya0OyDrg507IOGEguGFo+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgTllBTFQKK0IwREU7QjBERTsxMTAyIDExNjMgMTFCNTtCMERFOzExMDIgMTE2MyAxMUI1OyAjICjrg547IOuDnjsg4YSC4YWj4Ya1OyDrg547IOGEguGFo+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgTllBTFAKK0IwREY7QjBERjsxMTAyIDExNjMgMTFCNjtCMERGOzExMDIgMTE2MyAxMUI2OyAjICjrg587IOuDnzsg4YSC4YWj4Ya2OyDrg587IOGEguGFo+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgTllBTEgKK0IwRTA7QjBFMDsxMTAyIDExNjMgMTFCNztCMEUwOzExMDIgMTE2MyAxMUI3OyAjICjrg6A7IOuDoDsg4YSC4YWj4Ya3OyDrg6A7IOGEguGFo+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgTllBTQorQjBFMTtCMEUxOzExMDIgMTE2MyAxMUI4O0IwRTE7MTEwMiAxMTYzIDExQjg7ICMgKOuDoTsg64OhOyDhhILhhaPhhrg7IOuDoTsg4YSC4YWj4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBOWUFCCitCMEUyO0IwRTI7MTEwMiAxMTYzIDExQjk7QjBFMjsxMTAyIDExNjMgMTFCOTsgIyAo64OiOyDrg6I7IOGEguGFo+GGuTsg64OiOyDhhILhhaPhhrk7ICkgSEFOR1VMIFNZTExBQkxFIE5ZQUJTCitCMEUzO0IwRTM7MTEwMiAxMTYzIDExQkE7QjBFMzsxMTAyIDExNjMgMTFCQTsgIyAo64OjOyDrg6M7IOGEguGFo+GGujsg64OjOyDhhILhhaPhhro7ICkgSEFOR1VMIFNZTExBQkxFIE5ZQVMKK0IwRTQ7QjBFNDsxMTAyIDExNjMgMTFCQjtCMEU0OzExMDIgMTE2MyAxMUJCOyAjICjrg6Q7IOuDpDsg4YSC4YWj4Ya7OyDrg6Q7IOGEguGFo+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgTllBU1MKK0IwRTU7QjBFNTsxMTAyIDExNjMgMTFCQztCMEU1OzExMDIgMTE2MyAxMUJDOyAjICjrg6U7IOuDpTsg4YSC4YWj4Ya8OyDrg6U7IOGEguGFo+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgTllBTkcKK0IwRTY7QjBFNjsxMTAyIDExNjMgMTFCRDtCMEU2OzExMDIgMTE2MyAxMUJEOyAjICjrg6Y7IOuDpjsg4YSC4YWj4Ya9OyDrg6Y7IOGEguGFo+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgTllBSgorQjBFNztCMEU3OzExMDIgMTE2MyAxMUJFO0IwRTc7MTEwMiAxMTYzIDExQkU7ICMgKOuDpzsg64OnOyDhhILhhaPhhr47IOuDpzsg4YSC4YWj4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBOWUFDCitCMEU4O0IwRTg7MTEwMiAxMTYzIDExQkY7QjBFODsxMTAyIDExNjMgMTFCRjsgIyAo64OoOyDrg6g7IOGEguGFo+GGvzsg64OoOyDhhILhhaPhhr87ICkgSEFOR1VMIFNZTExBQkxFIE5ZQUsKK0IwRTk7QjBFOTsxMTAyIDExNjMgMTFDMDtCMEU5OzExMDIgMTE2MyAxMUMwOyAjICjrg6k7IOuDqTsg4YSC4YWj4YeAOyDrg6k7IOGEguGFo+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgTllBVAorQjBFQTtCMEVBOzExMDIgMTE2MyAxMUMxO0IwRUE7MTEwMiAxMTYzIDExQzE7ICMgKOuDqjsg64OqOyDhhILhhaPhh4E7IOuDqjsg4YSC4YWj4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBOWUFQCitCMEVCO0IwRUI7MTEwMiAxMTYzIDExQzI7QjBFQjsxMTAyIDExNjMgMTFDMjsgIyAo64OrOyDrg6s7IOGEguGFo+GHgjsg64OrOyDhhILhhaPhh4I7ICkgSEFOR1VMIFNZTExBQkxFIE5ZQUgKK0IwRUM7QjBFQzsxMTAyIDExNjQ7QjBFQzsxMTAyIDExNjQ7ICMgKOuDrDsg64OsOyDhhILhhaQ7IOuDrDsg4YSC4YWkOyApIEhBTkdVTCBTWUxMQUJMRSBOWUFFCitCMEVEO0IwRUQ7MTEwMiAxMTY0IDExQTg7QjBFRDsxMTAyIDExNjQgMTFBODsgIyAo64OtOyDrg607IOGEguGFpOGGqDsg64OtOyDhhILhhaThhqg7ICkgSEFOR1VMIFNZTExBQkxFIE5ZQUVHCitCMEVFO0IwRUU7MTEwMiAxMTY0IDExQTk7QjBFRTsxMTAyIDExNjQgMTFBOTsgIyAo64OuOyDrg647IOGEguGFpOGGqTsg64OuOyDhhILhhaThhqk7ICkgSEFOR1VMIFNZTExBQkxFIE5ZQUVHRworQjBFRjtCMEVGOzExMDIgMTE2NCAxMUFBO0IwRUY7MTEwMiAxMTY0IDExQUE7ICMgKOuDrzsg64OvOyDhhILhhaThhqo7IOuDrzsg4YSC4YWk4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBOWUFFR1MKK0IwRjA7QjBGMDsxMTAyIDExNjQgMTFBQjtCMEYwOzExMDIgMTE2NCAxMUFCOyAjICjrg7A7IOuDsDsg4YSC4YWk4YarOyDrg7A7IOGEguGFpOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgTllBRU4KK0IwRjE7QjBGMTsxMTAyIDExNjQgMTFBQztCMEYxOzExMDIgMTE2NCAxMUFDOyAjICjrg7E7IOuDsTsg4YSC4YWk4YasOyDrg7E7IOGEguGFpOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgTllBRU5KCitCMEYyO0IwRjI7MTEwMiAxMTY0IDExQUQ7QjBGMjsxMTAyIDExNjQgMTFBRDsgIyAo64OyOyDrg7I7IOGEguGFpOGGrTsg64OyOyDhhILhhaThhq07ICkgSEFOR1VMIFNZTExBQkxFIE5ZQUVOSAorQjBGMztCMEYzOzExMDIgMTE2NCAxMUFFO0IwRjM7MTEwMiAxMTY0IDExQUU7ICMgKOuDszsg64OzOyDhhILhhaThhq47IOuDszsg4YSC4YWk4YauOyApIEhBTkdVTCBTWUxMQUJMRSBOWUFFRAorQjBGNDtCMEY0OzExMDIgMTE2NCAxMUFGO0IwRjQ7MTEwMiAxMTY0IDExQUY7ICMgKOuDtDsg64O0OyDhhILhhaThhq87IOuDtDsg4YSC4YWk4YavOyApIEhBTkdVTCBTWUxMQUJMRSBOWUFFTAorQjBGNTtCMEY1OzExMDIgMTE2NCAxMUIwO0IwRjU7MTEwMiAxMTY0IDExQjA7ICMgKOuDtTsg64O1OyDhhILhhaThhrA7IOuDtTsg4YSC4YWk4YawOyApIEhBTkdVTCBTWUxMQUJMRSBOWUFFTEcKK0IwRjY7QjBGNjsxMTAyIDExNjQgMTFCMTtCMEY2OzExMDIgMTE2NCAxMUIxOyAjICjrg7Y7IOuDtjsg4YSC4YWk4YaxOyDrg7Y7IOGEguGFpOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgTllBRUxNCitCMEY3O0IwRjc7MTEwMiAxMTY0IDExQjI7QjBGNzsxMTAyIDExNjQgMTFCMjsgIyAo64O3OyDrg7c7IOGEguGFpOGGsjsg64O3OyDhhILhhaThhrI7ICkgSEFOR1VMIFNZTExBQkxFIE5ZQUVMQgorQjBGODtCMEY4OzExMDIgMTE2NCAxMUIzO0IwRjg7MTEwMiAxMTY0IDExQjM7ICMgKOuDuDsg64O4OyDhhILhhaThhrM7IOuDuDsg4YSC4YWk4YazOyApIEhBTkdVTCBTWUxMQUJMRSBOWUFFTFMKK0IwRjk7QjBGOTsxMTAyIDExNjQgMTFCNDtCMEY5OzExMDIgMTE2NCAxMUI0OyAjICjrg7k7IOuDuTsg4YSC4YWk4Ya0OyDrg7k7IOGEguGFpOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgTllBRUxUCitCMEZBO0IwRkE7MTEwMiAxMTY0IDExQjU7QjBGQTsxMTAyIDExNjQgMTFCNTsgIyAo64O6OyDrg7o7IOGEguGFpOGGtTsg64O6OyDhhILhhaThhrU7ICkgSEFOR1VMIFNZTExBQkxFIE5ZQUVMUAorQjBGQjtCMEZCOzExMDIgMTE2NCAxMUI2O0IwRkI7MTEwMiAxMTY0IDExQjY7ICMgKOuDuzsg64O7OyDhhILhhaThhrY7IOuDuzsg4YSC4YWk4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBOWUFFTEgKK0IwRkM7QjBGQzsxMTAyIDExNjQgMTFCNztCMEZDOzExMDIgMTE2NCAxMUI3OyAjICjrg7w7IOuDvDsg4YSC4YWk4Ya3OyDrg7w7IOGEguGFpOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgTllBRU0KK0IwRkQ7QjBGRDsxMTAyIDExNjQgMTFCODtCMEZEOzExMDIgMTE2NCAxMUI4OyAjICjrg707IOuDvTsg4YSC4YWk4Ya4OyDrg707IOGEguGFpOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgTllBRUIKK0IwRkU7QjBGRTsxMTAyIDExNjQgMTFCOTtCMEZFOzExMDIgMTE2NCAxMUI5OyAjICjrg747IOuDvjsg4YSC4YWk4Ya5OyDrg747IOGEguGFpOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgTllBRUJTCitCMEZGO0IwRkY7MTEwMiAxMTY0IDExQkE7QjBGRjsxMTAyIDExNjQgMTFCQTsgIyAo64O/OyDrg787IOGEguGFpOGGujsg64O/OyDhhILhhaThhro7ICkgSEFOR1VMIFNZTExBQkxFIE5ZQUVTCitCMTAwO0IxMDA7MTEwMiAxMTY0IDExQkI7QjEwMDsxMTAyIDExNjQgMTFCQjsgIyAo64SAOyDrhIA7IOGEguGFpOGGuzsg64SAOyDhhILhhaThhrs7ICkgSEFOR1VMIFNZTExBQkxFIE5ZQUVTUworQjEwMTtCMTAxOzExMDIgMTE2NCAxMUJDO0IxMDE7MTEwMiAxMTY0IDExQkM7ICMgKOuEgTsg64SBOyDhhILhhaThhrw7IOuEgTsg4YSC4YWk4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBOWUFFTkcKK0IxMDI7QjEwMjsxMTAyIDExNjQgMTFCRDtCMTAyOzExMDIgMTE2NCAxMUJEOyAjICjrhII7IOuEgjsg4YSC4YWk4Ya9OyDrhII7IOGEguGFpOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgTllBRUoKK0IxMDM7QjEwMzsxMTAyIDExNjQgMTFCRTtCMTAzOzExMDIgMTE2NCAxMUJFOyAjICjrhIM7IOuEgzsg4YSC4YWk4Ya+OyDrhIM7IOGEguGFpOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgTllBRUMKK0IxMDQ7QjEwNDsxMTAyIDExNjQgMTFCRjtCMTA0OzExMDIgMTE2NCAxMUJGOyAjICjrhIQ7IOuEhDsg4YSC4YWk4Ya/OyDrhIQ7IOGEguGFpOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgTllBRUsKK0IxMDU7QjEwNTsxMTAyIDExNjQgMTFDMDtCMTA1OzExMDIgMTE2NCAxMUMwOyAjICjrhIU7IOuEhTsg4YSC4YWk4YeAOyDrhIU7IOGEguGFpOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgTllBRVQKK0IxMDY7QjEwNjsxMTAyIDExNjQgMTFDMTtCMTA2OzExMDIgMTE2NCAxMUMxOyAjICjrhIY7IOuEhjsg4YSC4YWk4YeBOyDrhIY7IOGEguGFpOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgTllBRVAKK0IxMDc7QjEwNzsxMTAyIDExNjQgMTFDMjtCMTA3OzExMDIgMTE2NCAxMUMyOyAjICjrhIc7IOuEhzsg4YSC4YWk4YeCOyDrhIc7IOGEguGFpOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgTllBRUgKK0IxMDg7QjEwODsxMTAyIDExNjU7QjEwODsxMTAyIDExNjU7ICMgKOuEiDsg64SIOyDhhILhhaU7IOuEiDsg4YSC4YWlOyApIEhBTkdVTCBTWUxMQUJMRSBORU8KK0IxMDk7QjEwOTsxMTAyIDExNjUgMTFBODtCMTA5OzExMDIgMTE2NSAxMUE4OyAjICjrhIk7IOuEiTsg4YSC4YWl4YaoOyDrhIk7IOGEguGFpeGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgTkVPRworQjEwQTtCMTBBOzExMDIgMTE2NSAxMUE5O0IxMEE7MTEwMiAxMTY1IDExQTk7ICMgKOuEijsg64SKOyDhhILhhaXhhqk7IOuEijsg4YSC4YWl4YapOyApIEhBTkdVTCBTWUxMQUJMRSBORU9HRworQjEwQjtCMTBCOzExMDIgMTE2NSAxMUFBO0IxMEI7MTEwMiAxMTY1IDExQUE7ICMgKOuEizsg64SLOyDhhILhhaXhhqo7IOuEizsg4YSC4YWl4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBORU9HUworQjEwQztCMTBDOzExMDIgMTE2NSAxMUFCO0IxMEM7MTEwMiAxMTY1IDExQUI7ICMgKOuEjDsg64SMOyDhhILhhaXhhqs7IOuEjDsg4YSC4YWl4YarOyApIEhBTkdVTCBTWUxMQUJMRSBORU9OCitCMTBEO0IxMEQ7MTEwMiAxMTY1IDExQUM7QjEwRDsxMTAyIDExNjUgMTFBQzsgIyAo64SNOyDrhI07IOGEguGFpeGGrDsg64SNOyDhhILhhaXhhqw7ICkgSEFOR1VMIFNZTExBQkxFIE5FT05KCitCMTBFO0IxMEU7MTEwMiAxMTY1IDExQUQ7QjEwRTsxMTAyIDExNjUgMTFBRDsgIyAo64SOOyDrhI47IOGEguGFpeGGrTsg64SOOyDhhILhhaXhhq07ICkgSEFOR1VMIFNZTExBQkxFIE5FT05ICitCMTBGO0IxMEY7MTEwMiAxMTY1IDExQUU7QjEwRjsxMTAyIDExNjUgMTFBRTsgIyAo64SPOyDrhI87IOGEguGFpeGGrjsg64SPOyDhhILhhaXhhq47ICkgSEFOR1VMIFNZTExBQkxFIE5FT0QKK0IxMTA7QjExMDsxMTAyIDExNjUgMTFBRjtCMTEwOzExMDIgMTE2NSAxMUFGOyAjICjrhJA7IOuEkDsg4YSC4YWl4YavOyDrhJA7IOGEguGFpeGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgTkVPTAorQjExMTtCMTExOzExMDIgMTE2NSAxMUIwO0IxMTE7MTEwMiAxMTY1IDExQjA7ICMgKOuEkTsg64SROyDhhILhhaXhhrA7IOuEkTsg4YSC4YWl4YawOyApIEhBTkdVTCBTWUxMQUJMRSBORU9MRworQjExMjtCMTEyOzExMDIgMTE2NSAxMUIxO0IxMTI7MTEwMiAxMTY1IDExQjE7ICMgKOuEkjsg64SSOyDhhILhhaXhhrE7IOuEkjsg4YSC4YWl4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBORU9MTQorQjExMztCMTEzOzExMDIgMTE2NSAxMUIyO0IxMTM7MTEwMiAxMTY1IDExQjI7ICMgKOuEkzsg64STOyDhhILhhaXhhrI7IOuEkzsg4YSC4YWl4YayOyApIEhBTkdVTCBTWUxMQUJMRSBORU9MQgorQjExNDtCMTE0OzExMDIgMTE2NSAxMUIzO0IxMTQ7MTEwMiAxMTY1IDExQjM7ICMgKOuElDsg64SUOyDhhILhhaXhhrM7IOuElDsg4YSC4YWl4YazOyApIEhBTkdVTCBTWUxMQUJMRSBORU9MUworQjExNTtCMTE1OzExMDIgMTE2NSAxMUI0O0IxMTU7MTEwMiAxMTY1IDExQjQ7ICMgKOuElTsg64SVOyDhhILhhaXhhrQ7IOuElTsg4YSC4YWl4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBORU9MVAorQjExNjtCMTE2OzExMDIgMTE2NSAxMUI1O0IxMTY7MTEwMiAxMTY1IDExQjU7ICMgKOuEljsg64SWOyDhhILhhaXhhrU7IOuEljsg4YSC4YWl4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBORU9MUAorQjExNztCMTE3OzExMDIgMTE2NSAxMUI2O0IxMTc7MTEwMiAxMTY1IDExQjY7ICMgKOuElzsg64SXOyDhhILhhaXhhrY7IOuElzsg4YSC4YWl4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBORU9MSAorQjExODtCMTE4OzExMDIgMTE2NSAxMUI3O0IxMTg7MTEwMiAxMTY1IDExQjc7ICMgKOuEmDsg64SYOyDhhILhhaXhhrc7IOuEmDsg4YSC4YWl4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBORU9NCitCMTE5O0IxMTk7MTEwMiAxMTY1IDExQjg7QjExOTsxMTAyIDExNjUgMTFCODsgIyAo64SZOyDrhJk7IOGEguGFpeGGuDsg64SZOyDhhILhhaXhhrg7ICkgSEFOR1VMIFNZTExBQkxFIE5FT0IKK0IxMUE7QjExQTsxMTAyIDExNjUgMTFCOTtCMTFBOzExMDIgMTE2NSAxMUI5OyAjICjrhJo7IOuEmjsg4YSC4YWl4Ya5OyDrhJo7IOGEguGFpeGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgTkVPQlMKK0IxMUI7QjExQjsxMTAyIDExNjUgMTFCQTtCMTFCOzExMDIgMTE2NSAxMUJBOyAjICjrhJs7IOuEmzsg4YSC4YWl4Ya6OyDrhJs7IOGEguGFpeGGujsgKSBIQU5HVUwgU1lMTEFCTEUgTkVPUworQjExQztCMTFDOzExMDIgMTE2NSAxMUJCO0IxMUM7MTEwMiAxMTY1IDExQkI7ICMgKOuEnDsg64ScOyDhhILhhaXhhrs7IOuEnDsg4YSC4YWl4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBORU9TUworQjExRDtCMTFEOzExMDIgMTE2NSAxMUJDO0IxMUQ7MTEwMiAxMTY1IDExQkM7ICMgKOuEnTsg64SdOyDhhILhhaXhhrw7IOuEnTsg4YSC4YWl4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBORU9ORworQjExRTtCMTFFOzExMDIgMTE2NSAxMUJEO0IxMUU7MTEwMiAxMTY1IDExQkQ7ICMgKOuEnjsg64SeOyDhhILhhaXhhr07IOuEnjsg4YSC4YWl4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBORU9KCitCMTFGO0IxMUY7MTEwMiAxMTY1IDExQkU7QjExRjsxMTAyIDExNjUgMTFCRTsgIyAo64SfOyDrhJ87IOGEguGFpeGGvjsg64SfOyDhhILhhaXhhr47ICkgSEFOR1VMIFNZTExBQkxFIE5FT0MKK0IxMjA7QjEyMDsxMTAyIDExNjUgMTFCRjtCMTIwOzExMDIgMTE2NSAxMUJGOyAjICjrhKA7IOuEoDsg4YSC4YWl4Ya/OyDrhKA7IOGEguGFpeGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgTkVPSworQjEyMTtCMTIxOzExMDIgMTE2NSAxMUMwO0IxMjE7MTEwMiAxMTY1IDExQzA7ICMgKOuEoTsg64ShOyDhhILhhaXhh4A7IOuEoTsg4YSC4YWl4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBORU9UCitCMTIyO0IxMjI7MTEwMiAxMTY1IDExQzE7QjEyMjsxMTAyIDExNjUgMTFDMTsgIyAo64SiOyDrhKI7IOGEguGFpeGHgTsg64SiOyDhhILhhaXhh4E7ICkgSEFOR1VMIFNZTExBQkxFIE5FT1AKK0IxMjM7QjEyMzsxMTAyIDExNjUgMTFDMjtCMTIzOzExMDIgMTE2NSAxMUMyOyAjICjrhKM7IOuEozsg4YSC4YWl4YeCOyDrhKM7IOGEguGFpeGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgTkVPSAorQjEyNDtCMTI0OzExMDIgMTE2NjtCMTI0OzExMDIgMTE2NjsgIyAo64SkOyDrhKQ7IOGEguGFpjsg64SkOyDhhILhhaY7ICkgSEFOR1VMIFNZTExBQkxFIE5FCitCMTI1O0IxMjU7MTEwMiAxMTY2IDExQTg7QjEyNTsxMTAyIDExNjYgMTFBODsgIyAo64SlOyDrhKU7IOGEguGFpuGGqDsg64SlOyDhhILhhabhhqg7ICkgSEFOR1VMIFNZTExBQkxFIE5FRworQjEyNjtCMTI2OzExMDIgMTE2NiAxMUE5O0IxMjY7MTEwMiAxMTY2IDExQTk7ICMgKOuEpjsg64SmOyDhhILhhabhhqk7IOuEpjsg4YSC4YWm4YapOyApIEhBTkdVTCBTWUxMQUJMRSBORUdHCitCMTI3O0IxMjc7MTEwMiAxMTY2IDExQUE7QjEyNzsxMTAyIDExNjYgMTFBQTsgIyAo64SnOyDrhKc7IOGEguGFpuGGqjsg64SnOyDhhILhhabhhqo7ICkgSEFOR1VMIFNZTExBQkxFIE5FR1MKK0IxMjg7QjEyODsxMTAyIDExNjYgMTFBQjtCMTI4OzExMDIgMTE2NiAxMUFCOyAjICjrhKg7IOuEqDsg4YSC4YWm4YarOyDrhKg7IOGEguGFpuGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgTkVOCitCMTI5O0IxMjk7MTEwMiAxMTY2IDExQUM7QjEyOTsxMTAyIDExNjYgMTFBQzsgIyAo64SpOyDrhKk7IOGEguGFpuGGrDsg64SpOyDhhILhhabhhqw7ICkgSEFOR1VMIFNZTExBQkxFIE5FTkoKK0IxMkE7QjEyQTsxMTAyIDExNjYgMTFBRDtCMTJBOzExMDIgMTE2NiAxMUFEOyAjICjrhKo7IOuEqjsg4YSC4YWm4YatOyDrhKo7IOGEguGFpuGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgTkVOSAorQjEyQjtCMTJCOzExMDIgMTE2NiAxMUFFO0IxMkI7MTEwMiAxMTY2IDExQUU7ICMgKOuEqzsg64SrOyDhhILhhabhhq47IOuEqzsg4YSC4YWm4YauOyApIEhBTkdVTCBTWUxMQUJMRSBORUQKK0IxMkM7QjEyQzsxMTAyIDExNjYgMTFBRjtCMTJDOzExMDIgMTE2NiAxMUFGOyAjICjrhKw7IOuErDsg4YSC4YWm4YavOyDrhKw7IOGEguGFpuGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgTkVMCitCMTJEO0IxMkQ7MTEwMiAxMTY2IDExQjA7QjEyRDsxMTAyIDExNjYgMTFCMDsgIyAo64StOyDrhK07IOGEguGFpuGGsDsg64StOyDhhILhhabhhrA7ICkgSEFOR1VMIFNZTExBQkxFIE5FTEcKK0IxMkU7QjEyRTsxMTAyIDExNjYgMTFCMTtCMTJFOzExMDIgMTE2NiAxMUIxOyAjICjrhK47IOuErjsg4YSC4YWm4YaxOyDrhK47IOGEguGFpuGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgTkVMTQorQjEyRjtCMTJGOzExMDIgMTE2NiAxMUIyO0IxMkY7MTEwMiAxMTY2IDExQjI7ICMgKOuErzsg64SvOyDhhILhhabhhrI7IOuErzsg4YSC4YWm4YayOyApIEhBTkdVTCBTWUxMQUJMRSBORUxCCitCMTMwO0IxMzA7MTEwMiAxMTY2IDExQjM7QjEzMDsxMTAyIDExNjYgMTFCMzsgIyAo64SwOyDrhLA7IOGEguGFpuGGszsg64SwOyDhhILhhabhhrM7ICkgSEFOR1VMIFNZTExBQkxFIE5FTFMKK0IxMzE7QjEzMTsxMTAyIDExNjYgMTFCNDtCMTMxOzExMDIgMTE2NiAxMUI0OyAjICjrhLE7IOuEsTsg4YSC4YWm4Ya0OyDrhLE7IOGEguGFpuGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgTkVMVAorQjEzMjtCMTMyOzExMDIgMTE2NiAxMUI1O0IxMzI7MTEwMiAxMTY2IDExQjU7ICMgKOuEsjsg64SyOyDhhILhhabhhrU7IOuEsjsg4YSC4YWm4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBORUxQCitCMTMzO0IxMzM7MTEwMiAxMTY2IDExQjY7QjEzMzsxMTAyIDExNjYgMTFCNjsgIyAo64SzOyDrhLM7IOGEguGFpuGGtjsg64SzOyDhhILhhabhhrY7ICkgSEFOR1VMIFNZTExBQkxFIE5FTEgKK0IxMzQ7QjEzNDsxMTAyIDExNjYgMTFCNztCMTM0OzExMDIgMTE2NiAxMUI3OyAjICjrhLQ7IOuEtDsg4YSC4YWm4Ya3OyDrhLQ7IOGEguGFpuGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgTkVNCitCMTM1O0IxMzU7MTEwMiAxMTY2IDExQjg7QjEzNTsxMTAyIDExNjYgMTFCODsgIyAo64S1OyDrhLU7IOGEguGFpuGGuDsg64S1OyDhhILhhabhhrg7ICkgSEFOR1VMIFNZTExBQkxFIE5FQgorQjEzNjtCMTM2OzExMDIgMTE2NiAxMUI5O0IxMzY7MTEwMiAxMTY2IDExQjk7ICMgKOuEtjsg64S2OyDhhILhhabhhrk7IOuEtjsg4YSC4YWm4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBORUJTCitCMTM3O0IxMzc7MTEwMiAxMTY2IDExQkE7QjEzNzsxMTAyIDExNjYgMTFCQTsgIyAo64S3OyDrhLc7IOGEguGFpuGGujsg64S3OyDhhILhhabhhro7ICkgSEFOR1VMIFNZTExBQkxFIE5FUworQjEzODtCMTM4OzExMDIgMTE2NiAxMUJCO0IxMzg7MTEwMiAxMTY2IDExQkI7ICMgKOuEuDsg64S4OyDhhILhhabhhrs7IOuEuDsg4YSC4YWm4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBORVNTCitCMTM5O0IxMzk7MTEwMiAxMTY2IDExQkM7QjEzOTsxMTAyIDExNjYgMTFCQzsgIyAo64S5OyDrhLk7IOGEguGFpuGGvDsg64S5OyDhhILhhabhhrw7ICkgSEFOR1VMIFNZTExBQkxFIE5FTkcKK0IxM0E7QjEzQTsxMTAyIDExNjYgMTFCRDtCMTNBOzExMDIgMTE2NiAxMUJEOyAjICjrhLo7IOuEujsg4YSC4YWm4Ya9OyDrhLo7IOGEguGFpuGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgTkVKCitCMTNCO0IxM0I7MTEwMiAxMTY2IDExQkU7QjEzQjsxMTAyIDExNjYgMTFCRTsgIyAo64S7OyDrhLs7IOGEguGFpuGGvjsg64S7OyDhhILhhabhhr47ICkgSEFOR1VMIFNZTExBQkxFIE5FQworQjEzQztCMTNDOzExMDIgMTE2NiAxMUJGO0IxM0M7MTEwMiAxMTY2IDExQkY7ICMgKOuEvDsg64S8OyDhhILhhabhhr87IOuEvDsg4YSC4YWm4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBORUsKK0IxM0Q7QjEzRDsxMTAyIDExNjYgMTFDMDtCMTNEOzExMDIgMTE2NiAxMUMwOyAjICjrhL07IOuEvTsg4YSC4YWm4YeAOyDrhL07IOGEguGFpuGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgTkVUCitCMTNFO0IxM0U7MTEwMiAxMTY2IDExQzE7QjEzRTsxMTAyIDExNjYgMTFDMTsgIyAo64S+OyDrhL47IOGEguGFpuGHgTsg64S+OyDhhILhhabhh4E7ICkgSEFOR1VMIFNZTExBQkxFIE5FUAorQjEzRjtCMTNGOzExMDIgMTE2NiAxMUMyO0IxM0Y7MTEwMiAxMTY2IDExQzI7ICMgKOuEvzsg64S/OyDhhILhhabhh4I7IOuEvzsg4YSC4YWm4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBORUgKK0IxNDA7QjE0MDsxMTAyIDExNjc7QjE0MDsxMTAyIDExNjc7ICMgKOuFgDsg64WAOyDhhILhhac7IOuFgDsg4YSC4YWnOyApIEhBTkdVTCBTWUxMQUJMRSBOWUVPCitCMTQxO0IxNDE7MTEwMiAxMTY3IDExQTg7QjE0MTsxMTAyIDExNjcgMTFBODsgIyAo64WBOyDrhYE7IOGEguGFp+GGqDsg64WBOyDhhILhhafhhqg7ICkgSEFOR1VMIFNZTExBQkxFIE5ZRU9HCitCMTQyO0IxNDI7MTEwMiAxMTY3IDExQTk7QjE0MjsxMTAyIDExNjcgMTFBOTsgIyAo64WCOyDrhYI7IOGEguGFp+GGqTsg64WCOyDhhILhhafhhqk7ICkgSEFOR1VMIFNZTExBQkxFIE5ZRU9HRworQjE0MztCMTQzOzExMDIgMTE2NyAxMUFBO0IxNDM7MTEwMiAxMTY3IDExQUE7ICMgKOuFgzsg64WDOyDhhILhhafhhqo7IOuFgzsg4YSC4YWn4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBOWUVPR1MKK0IxNDQ7QjE0NDsxMTAyIDExNjcgMTFBQjtCMTQ0OzExMDIgMTE2NyAxMUFCOyAjICjrhYQ7IOuFhDsg4YSC4YWn4YarOyDrhYQ7IOGEguGFp+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgTllFT04KK0IxNDU7QjE0NTsxMTAyIDExNjcgMTFBQztCMTQ1OzExMDIgMTE2NyAxMUFDOyAjICjrhYU7IOuFhTsg4YSC4YWn4YasOyDrhYU7IOGEguGFp+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgTllFT05KCitCMTQ2O0IxNDY7MTEwMiAxMTY3IDExQUQ7QjE0NjsxMTAyIDExNjcgMTFBRDsgIyAo64WGOyDrhYY7IOGEguGFp+GGrTsg64WGOyDhhILhhafhhq07ICkgSEFOR1VMIFNZTExBQkxFIE5ZRU9OSAorQjE0NztCMTQ3OzExMDIgMTE2NyAxMUFFO0IxNDc7MTEwMiAxMTY3IDExQUU7ICMgKOuFhzsg64WHOyDhhILhhafhhq47IOuFhzsg4YSC4YWn4YauOyApIEhBTkdVTCBTWUxMQUJMRSBOWUVPRAorQjE0ODtCMTQ4OzExMDIgMTE2NyAxMUFGO0IxNDg7MTEwMiAxMTY3IDExQUY7ICMgKOuFiDsg64WIOyDhhILhhafhhq87IOuFiDsg4YSC4YWn4YavOyApIEhBTkdVTCBTWUxMQUJMRSBOWUVPTAorQjE0OTtCMTQ5OzExMDIgMTE2NyAxMUIwO0IxNDk7MTEwMiAxMTY3IDExQjA7ICMgKOuFiTsg64WJOyDhhILhhafhhrA7IOuFiTsg4YSC4YWn4YawOyApIEhBTkdVTCBTWUxMQUJMRSBOWUVPTEcKK0IxNEE7QjE0QTsxMTAyIDExNjcgMTFCMTtCMTRBOzExMDIgMTE2NyAxMUIxOyAjICjrhYo7IOuFijsg4YSC4YWn4YaxOyDrhYo7IOGEguGFp+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgTllFT0xNCitCMTRCO0IxNEI7MTEwMiAxMTY3IDExQjI7QjE0QjsxMTAyIDExNjcgMTFCMjsgIyAo64WLOyDrhYs7IOGEguGFp+GGsjsg64WLOyDhhILhhafhhrI7ICkgSEFOR1VMIFNZTExBQkxFIE5ZRU9MQgorQjE0QztCMTRDOzExMDIgMTE2NyAxMUIzO0IxNEM7MTEwMiAxMTY3IDExQjM7ICMgKOuFjDsg64WMOyDhhILhhafhhrM7IOuFjDsg4YSC4YWn4YazOyApIEhBTkdVTCBTWUxMQUJMRSBOWUVPTFMKK0IxNEQ7QjE0RDsxMTAyIDExNjcgMTFCNDtCMTREOzExMDIgMTE2NyAxMUI0OyAjICjrhY07IOuFjTsg4YSC4YWn4Ya0OyDrhY07IOGEguGFp+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgTllFT0xUCitCMTRFO0IxNEU7MTEwMiAxMTY3IDExQjU7QjE0RTsxMTAyIDExNjcgMTFCNTsgIyAo64WOOyDrhY47IOGEguGFp+GGtTsg64WOOyDhhILhhafhhrU7ICkgSEFOR1VMIFNZTExBQkxFIE5ZRU9MUAorQjE0RjtCMTRGOzExMDIgMTE2NyAxMUI2O0IxNEY7MTEwMiAxMTY3IDExQjY7ICMgKOuFjzsg64WPOyDhhILhhafhhrY7IOuFjzsg4YSC4YWn4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBOWUVPTEgKK0IxNTA7QjE1MDsxMTAyIDExNjcgMTFCNztCMTUwOzExMDIgMTE2NyAxMUI3OyAjICjrhZA7IOuFkDsg4YSC4YWn4Ya3OyDrhZA7IOGEguGFp+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgTllFT00KK0IxNTE7QjE1MTsxMTAyIDExNjcgMTFCODtCMTUxOzExMDIgMTE2NyAxMUI4OyAjICjrhZE7IOuFkTsg4YSC4YWn4Ya4OyDrhZE7IOGEguGFp+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgTllFT0IKK0IxNTI7QjE1MjsxMTAyIDExNjcgMTFCOTtCMTUyOzExMDIgMTE2NyAxMUI5OyAjICjrhZI7IOuFkjsg4YSC4YWn4Ya5OyDrhZI7IOGEguGFp+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgTllFT0JTCitCMTUzO0IxNTM7MTEwMiAxMTY3IDExQkE7QjE1MzsxMTAyIDExNjcgMTFCQTsgIyAo64WTOyDrhZM7IOGEguGFp+GGujsg64WTOyDhhILhhafhhro7ICkgSEFOR1VMIFNZTExBQkxFIE5ZRU9TCitCMTU0O0IxNTQ7MTEwMiAxMTY3IDExQkI7QjE1NDsxMTAyIDExNjcgMTFCQjsgIyAo64WUOyDrhZQ7IOGEguGFp+GGuzsg64WUOyDhhILhhafhhrs7ICkgSEFOR1VMIFNZTExBQkxFIE5ZRU9TUworQjE1NTtCMTU1OzExMDIgMTE2NyAxMUJDO0IxNTU7MTEwMiAxMTY3IDExQkM7ICMgKOuFlTsg64WVOyDhhILhhafhhrw7IOuFlTsg4YSC4YWn4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBOWUVPTkcKK0IxNTY7QjE1NjsxMTAyIDExNjcgMTFCRDtCMTU2OzExMDIgMTE2NyAxMUJEOyAjICjrhZY7IOuFljsg4YSC4YWn4Ya9OyDrhZY7IOGEguGFp+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgTllFT0oKK0IxNTc7QjE1NzsxMTAyIDExNjcgMTFCRTtCMTU3OzExMDIgMTE2NyAxMUJFOyAjICjrhZc7IOuFlzsg4YSC4YWn4Ya+OyDrhZc7IOGEguGFp+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgTllFT0MKK0IxNTg7QjE1ODsxMTAyIDExNjcgMTFCRjtCMTU4OzExMDIgMTE2NyAxMUJGOyAjICjrhZg7IOuFmDsg4YSC4YWn4Ya/OyDrhZg7IOGEguGFp+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgTllFT0sKK0IxNTk7QjE1OTsxMTAyIDExNjcgMTFDMDtCMTU5OzExMDIgMTE2NyAxMUMwOyAjICjrhZk7IOuFmTsg4YSC4YWn4YeAOyDrhZk7IOGEguGFp+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgTllFT1QKK0IxNUE7QjE1QTsxMTAyIDExNjcgMTFDMTtCMTVBOzExMDIgMTE2NyAxMUMxOyAjICjrhZo7IOuFmjsg4YSC4YWn4YeBOyDrhZo7IOGEguGFp+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgTllFT1AKK0IxNUI7QjE1QjsxMTAyIDExNjcgMTFDMjtCMTVCOzExMDIgMTE2NyAxMUMyOyAjICjrhZs7IOuFmzsg4YSC4YWn4YeCOyDrhZs7IOGEguGFp+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgTllFT0gKK0IxNUM7QjE1QzsxMTAyIDExNjg7QjE1QzsxMTAyIDExNjg7ICMgKOuFnDsg64WcOyDhhILhhag7IOuFnDsg4YSC4YWoOyApIEhBTkdVTCBTWUxMQUJMRSBOWUUKK0IxNUQ7QjE1RDsxMTAyIDExNjggMTFBODtCMTVEOzExMDIgMTE2OCAxMUE4OyAjICjrhZ07IOuFnTsg4YSC4YWo4YaoOyDrhZ07IOGEguGFqOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgTllFRworQjE1RTtCMTVFOzExMDIgMTE2OCAxMUE5O0IxNUU7MTEwMiAxMTY4IDExQTk7ICMgKOuFnjsg64WeOyDhhILhhajhhqk7IOuFnjsg4YSC4YWo4YapOyApIEhBTkdVTCBTWUxMQUJMRSBOWUVHRworQjE1RjtCMTVGOzExMDIgMTE2OCAxMUFBO0IxNUY7MTEwMiAxMTY4IDExQUE7ICMgKOuFnzsg64WfOyDhhILhhajhhqo7IOuFnzsg4YSC4YWo4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBOWUVHUworQjE2MDtCMTYwOzExMDIgMTE2OCAxMUFCO0IxNjA7MTEwMiAxMTY4IDExQUI7ICMgKOuFoDsg64WgOyDhhILhhajhhqs7IOuFoDsg4YSC4YWo4YarOyApIEhBTkdVTCBTWUxMQUJMRSBOWUVOCitCMTYxO0IxNjE7MTEwMiAxMTY4IDExQUM7QjE2MTsxMTAyIDExNjggMTFBQzsgIyAo64WhOyDrhaE7IOGEguGFqOGGrDsg64WhOyDhhILhhajhhqw7ICkgSEFOR1VMIFNZTExBQkxFIE5ZRU5KCitCMTYyO0IxNjI7MTEwMiAxMTY4IDExQUQ7QjE2MjsxMTAyIDExNjggMTFBRDsgIyAo64WiOyDrhaI7IOGEguGFqOGGrTsg64WiOyDhhILhhajhhq07ICkgSEFOR1VMIFNZTExBQkxFIE5ZRU5ICitCMTYzO0IxNjM7MTEwMiAxMTY4IDExQUU7QjE2MzsxMTAyIDExNjggMTFBRTsgIyAo64WjOyDrhaM7IOGEguGFqOGGrjsg64WjOyDhhILhhajhhq47ICkgSEFOR1VMIFNZTExBQkxFIE5ZRUQKK0IxNjQ7QjE2NDsxMTAyIDExNjggMTFBRjtCMTY0OzExMDIgMTE2OCAxMUFGOyAjICjrhaQ7IOuFpDsg4YSC4YWo4YavOyDrhaQ7IOGEguGFqOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgTllFTAorQjE2NTtCMTY1OzExMDIgMTE2OCAxMUIwO0IxNjU7MTEwMiAxMTY4IDExQjA7ICMgKOuFpTsg64WlOyDhhILhhajhhrA7IOuFpTsg4YSC4YWo4YawOyApIEhBTkdVTCBTWUxMQUJMRSBOWUVMRworQjE2NjtCMTY2OzExMDIgMTE2OCAxMUIxO0IxNjY7MTEwMiAxMTY4IDExQjE7ICMgKOuFpjsg64WmOyDhhILhhajhhrE7IOuFpjsg4YSC4YWo4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBOWUVMTQorQjE2NztCMTY3OzExMDIgMTE2OCAxMUIyO0IxNjc7MTEwMiAxMTY4IDExQjI7ICMgKOuFpzsg64WnOyDhhILhhajhhrI7IOuFpzsg4YSC4YWo4YayOyApIEhBTkdVTCBTWUxMQUJMRSBOWUVMQgorQjE2ODtCMTY4OzExMDIgMTE2OCAxMUIzO0IxNjg7MTEwMiAxMTY4IDExQjM7ICMgKOuFqDsg64WoOyDhhILhhajhhrM7IOuFqDsg4YSC4YWo4YazOyApIEhBTkdVTCBTWUxMQUJMRSBOWUVMUworQjE2OTtCMTY5OzExMDIgMTE2OCAxMUI0O0IxNjk7MTEwMiAxMTY4IDExQjQ7ICMgKOuFqTsg64WpOyDhhILhhajhhrQ7IOuFqTsg4YSC4YWo4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBOWUVMVAorQjE2QTtCMTZBOzExMDIgMTE2OCAxMUI1O0IxNkE7MTEwMiAxMTY4IDExQjU7ICMgKOuFqjsg64WqOyDhhILhhajhhrU7IOuFqjsg4YSC4YWo4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBOWUVMUAorQjE2QjtCMTZCOzExMDIgMTE2OCAxMUI2O0IxNkI7MTEwMiAxMTY4IDExQjY7ICMgKOuFqzsg64WrOyDhhILhhajhhrY7IOuFqzsg4YSC4YWo4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBOWUVMSAorQjE2QztCMTZDOzExMDIgMTE2OCAxMUI3O0IxNkM7MTEwMiAxMTY4IDExQjc7ICMgKOuFrDsg64WsOyDhhILhhajhhrc7IOuFrDsg4YSC4YWo4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBOWUVNCitCMTZEO0IxNkQ7MTEwMiAxMTY4IDExQjg7QjE2RDsxMTAyIDExNjggMTFCODsgIyAo64WtOyDrha07IOGEguGFqOGGuDsg64WtOyDhhILhhajhhrg7ICkgSEFOR1VMIFNZTExBQkxFIE5ZRUIKK0IxNkU7QjE2RTsxMTAyIDExNjggMTFCOTtCMTZFOzExMDIgMTE2OCAxMUI5OyAjICjrha47IOuFrjsg4YSC4YWo4Ya5OyDrha47IOGEguGFqOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgTllFQlMKK0IxNkY7QjE2RjsxMTAyIDExNjggMTFCQTtCMTZGOzExMDIgMTE2OCAxMUJBOyAjICjrha87IOuFrzsg4YSC4YWo4Ya6OyDrha87IOGEguGFqOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgTllFUworQjE3MDtCMTcwOzExMDIgMTE2OCAxMUJCO0IxNzA7MTEwMiAxMTY4IDExQkI7ICMgKOuFsDsg64WwOyDhhILhhajhhrs7IOuFsDsg4YSC4YWo4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBOWUVTUworQjE3MTtCMTcxOzExMDIgMTE2OCAxMUJDO0IxNzE7MTEwMiAxMTY4IDExQkM7ICMgKOuFsTsg64WxOyDhhILhhajhhrw7IOuFsTsg4YSC4YWo4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBOWUVORworQjE3MjtCMTcyOzExMDIgMTE2OCAxMUJEO0IxNzI7MTEwMiAxMTY4IDExQkQ7ICMgKOuFsjsg64WyOyDhhILhhajhhr07IOuFsjsg4YSC4YWo4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBOWUVKCitCMTczO0IxNzM7MTEwMiAxMTY4IDExQkU7QjE3MzsxMTAyIDExNjggMTFCRTsgIyAo64WzOyDrhbM7IOGEguGFqOGGvjsg64WzOyDhhILhhajhhr47ICkgSEFOR1VMIFNZTExBQkxFIE5ZRUMKK0IxNzQ7QjE3NDsxMTAyIDExNjggMTFCRjtCMTc0OzExMDIgMTE2OCAxMUJGOyAjICjrhbQ7IOuFtDsg4YSC4YWo4Ya/OyDrhbQ7IOGEguGFqOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgTllFSworQjE3NTtCMTc1OzExMDIgMTE2OCAxMUMwO0IxNzU7MTEwMiAxMTY4IDExQzA7ICMgKOuFtTsg64W1OyDhhILhhajhh4A7IOuFtTsg4YSC4YWo4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBOWUVUCitCMTc2O0IxNzY7MTEwMiAxMTY4IDExQzE7QjE3NjsxMTAyIDExNjggMTFDMTsgIyAo64W2OyDrhbY7IOGEguGFqOGHgTsg64W2OyDhhILhhajhh4E7ICkgSEFOR1VMIFNZTExBQkxFIE5ZRVAKK0IxNzc7QjE3NzsxMTAyIDExNjggMTFDMjtCMTc3OzExMDIgMTE2OCAxMUMyOyAjICjrhbc7IOuFtzsg4YSC4YWo4YeCOyDrhbc7IOGEguGFqOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgTllFSAorQjE3ODtCMTc4OzExMDIgMTE2OTtCMTc4OzExMDIgMTE2OTsgIyAo64W4OyDrhbg7IOGEguGFqTsg64W4OyDhhILhhak7ICkgSEFOR1VMIFNZTExBQkxFIE5PCitCMTc5O0IxNzk7MTEwMiAxMTY5IDExQTg7QjE3OTsxMTAyIDExNjkgMTFBODsgIyAo64W5OyDrhbk7IOGEguGFqeGGqDsg64W5OyDhhILhhanhhqg7ICkgSEFOR1VMIFNZTExBQkxFIE5PRworQjE3QTtCMTdBOzExMDIgMTE2OSAxMUE5O0IxN0E7MTEwMiAxMTY5IDExQTk7ICMgKOuFujsg64W6OyDhhILhhanhhqk7IOuFujsg4YSC4YWp4YapOyApIEhBTkdVTCBTWUxMQUJMRSBOT0dHCitCMTdCO0IxN0I7MTEwMiAxMTY5IDExQUE7QjE3QjsxMTAyIDExNjkgMTFBQTsgIyAo64W7OyDrhbs7IOGEguGFqeGGqjsg64W7OyDhhILhhanhhqo7ICkgSEFOR1VMIFNZTExBQkxFIE5PR1MKK0IxN0M7QjE3QzsxMTAyIDExNjkgMTFBQjtCMTdDOzExMDIgMTE2OSAxMUFCOyAjICjrhbw7IOuFvDsg4YSC4YWp4YarOyDrhbw7IOGEguGFqeGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgTk9OCitCMTdEO0IxN0Q7MTEwMiAxMTY5IDExQUM7QjE3RDsxMTAyIDExNjkgMTFBQzsgIyAo64W9OyDrhb07IOGEguGFqeGGrDsg64W9OyDhhILhhanhhqw7ICkgSEFOR1VMIFNZTExBQkxFIE5PTkoKK0IxN0U7QjE3RTsxMTAyIDExNjkgMTFBRDtCMTdFOzExMDIgMTE2OSAxMUFEOyAjICjrhb47IOuFvjsg4YSC4YWp4YatOyDrhb47IOGEguGFqeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgTk9OSAorQjE3RjtCMTdGOzExMDIgMTE2OSAxMUFFO0IxN0Y7MTEwMiAxMTY5IDExQUU7ICMgKOuFvzsg64W/OyDhhILhhanhhq47IOuFvzsg4YSC4YWp4YauOyApIEhBTkdVTCBTWUxMQUJMRSBOT0QKK0IxODA7QjE4MDsxMTAyIDExNjkgMTFBRjtCMTgwOzExMDIgMTE2OSAxMUFGOyAjICjrhoA7IOuGgDsg4YSC4YWp4YavOyDrhoA7IOGEguGFqeGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgTk9MCitCMTgxO0IxODE7MTEwMiAxMTY5IDExQjA7QjE4MTsxMTAyIDExNjkgMTFCMDsgIyAo64aBOyDrhoE7IOGEguGFqeGGsDsg64aBOyDhhILhhanhhrA7ICkgSEFOR1VMIFNZTExBQkxFIE5PTEcKK0IxODI7QjE4MjsxMTAyIDExNjkgMTFCMTtCMTgyOzExMDIgMTE2OSAxMUIxOyAjICjrhoI7IOuGgjsg4YSC4YWp4YaxOyDrhoI7IOGEguGFqeGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgTk9MTQorQjE4MztCMTgzOzExMDIgMTE2OSAxMUIyO0IxODM7MTEwMiAxMTY5IDExQjI7ICMgKOuGgzsg64aDOyDhhILhhanhhrI7IOuGgzsg4YSC4YWp4YayOyApIEhBTkdVTCBTWUxMQUJMRSBOT0xCCitCMTg0O0IxODQ7MTEwMiAxMTY5IDExQjM7QjE4NDsxMTAyIDExNjkgMTFCMzsgIyAo64aEOyDrhoQ7IOGEguGFqeGGszsg64aEOyDhhILhhanhhrM7ICkgSEFOR1VMIFNZTExBQkxFIE5PTFMKK0IxODU7QjE4NTsxMTAyIDExNjkgMTFCNDtCMTg1OzExMDIgMTE2OSAxMUI0OyAjICjrhoU7IOuGhTsg4YSC4YWp4Ya0OyDrhoU7IOGEguGFqeGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgTk9MVAorQjE4NjtCMTg2OzExMDIgMTE2OSAxMUI1O0IxODY7MTEwMiAxMTY5IDExQjU7ICMgKOuGhjsg64aGOyDhhILhhanhhrU7IOuGhjsg4YSC4YWp4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBOT0xQCitCMTg3O0IxODc7MTEwMiAxMTY5IDExQjY7QjE4NzsxMTAyIDExNjkgMTFCNjsgIyAo64aHOyDrhoc7IOGEguGFqeGGtjsg64aHOyDhhILhhanhhrY7ICkgSEFOR1VMIFNZTExBQkxFIE5PTEgKK0IxODg7QjE4ODsxMTAyIDExNjkgMTFCNztCMTg4OzExMDIgMTE2OSAxMUI3OyAjICjrhog7IOuGiDsg4YSC4YWp4Ya3OyDrhog7IOGEguGFqeGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgTk9NCitCMTg5O0IxODk7MTEwMiAxMTY5IDExQjg7QjE4OTsxMTAyIDExNjkgMTFCODsgIyAo64aJOyDrhok7IOGEguGFqeGGuDsg64aJOyDhhILhhanhhrg7ICkgSEFOR1VMIFNZTExBQkxFIE5PQgorQjE4QTtCMThBOzExMDIgMTE2OSAxMUI5O0IxOEE7MTEwMiAxMTY5IDExQjk7ICMgKOuGijsg64aKOyDhhILhhanhhrk7IOuGijsg4YSC4YWp4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBOT0JTCitCMThCO0IxOEI7MTEwMiAxMTY5IDExQkE7QjE4QjsxMTAyIDExNjkgMTFCQTsgIyAo64aLOyDrhos7IOGEguGFqeGGujsg64aLOyDhhILhhanhhro7ICkgSEFOR1VMIFNZTExBQkxFIE5PUworQjE4QztCMThDOzExMDIgMTE2OSAxMUJCO0IxOEM7MTEwMiAxMTY5IDExQkI7ICMgKOuGjDsg64aMOyDhhILhhanhhrs7IOuGjDsg4YSC4YWp4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBOT1NTCitCMThEO0IxOEQ7MTEwMiAxMTY5IDExQkM7QjE4RDsxMTAyIDExNjkgMTFCQzsgIyAo64aNOyDrho07IOGEguGFqeGGvDsg64aNOyDhhILhhanhhrw7ICkgSEFOR1VMIFNZTExBQkxFIE5PTkcKK0IxOEU7QjE4RTsxMTAyIDExNjkgMTFCRDtCMThFOzExMDIgMTE2OSAxMUJEOyAjICjrho47IOuGjjsg4YSC4YWp4Ya9OyDrho47IOGEguGFqeGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgTk9KCitCMThGO0IxOEY7MTEwMiAxMTY5IDExQkU7QjE4RjsxMTAyIDExNjkgMTFCRTsgIyAo64aPOyDrho87IOGEguGFqeGGvjsg64aPOyDhhILhhanhhr47ICkgSEFOR1VMIFNZTExBQkxFIE5PQworQjE5MDtCMTkwOzExMDIgMTE2OSAxMUJGO0IxOTA7MTEwMiAxMTY5IDExQkY7ICMgKOuGkDsg64aQOyDhhILhhanhhr87IOuGkDsg4YSC4YWp4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBOT0sKK0IxOTE7QjE5MTsxMTAyIDExNjkgMTFDMDtCMTkxOzExMDIgMTE2OSAxMUMwOyAjICjrhpE7IOuGkTsg4YSC4YWp4YeAOyDrhpE7IOGEguGFqeGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgTk9UCitCMTkyO0IxOTI7MTEwMiAxMTY5IDExQzE7QjE5MjsxMTAyIDExNjkgMTFDMTsgIyAo64aSOyDrhpI7IOGEguGFqeGHgTsg64aSOyDhhILhhanhh4E7ICkgSEFOR1VMIFNZTExBQkxFIE5PUAorQjE5MztCMTkzOzExMDIgMTE2OSAxMUMyO0IxOTM7MTEwMiAxMTY5IDExQzI7ICMgKOuGkzsg64aTOyDhhILhhanhh4I7IOuGkzsg4YSC4YWp4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBOT0gKK0IxOTQ7QjE5NDsxMTAyIDExNkE7QjE5NDsxMTAyIDExNkE7ICMgKOuGlDsg64aUOyDhhILhhao7IOuGlDsg4YSC4YWqOyApIEhBTkdVTCBTWUxMQUJMRSBOV0EKK0IxOTU7QjE5NTsxMTAyIDExNkEgMTFBODtCMTk1OzExMDIgMTE2QSAxMUE4OyAjICjrhpU7IOuGlTsg4YSC4YWq4YaoOyDrhpU7IOGEguGFquGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgTldBRworQjE5NjtCMTk2OzExMDIgMTE2QSAxMUE5O0IxOTY7MTEwMiAxMTZBIDExQTk7ICMgKOuGljsg64aWOyDhhILhharhhqk7IOuGljsg4YSC4YWq4YapOyApIEhBTkdVTCBTWUxMQUJMRSBOV0FHRworQjE5NztCMTk3OzExMDIgMTE2QSAxMUFBO0IxOTc7MTEwMiAxMTZBIDExQUE7ICMgKOuGlzsg64aXOyDhhILhharhhqo7IOuGlzsg4YSC4YWq4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBOV0FHUworQjE5ODtCMTk4OzExMDIgMTE2QSAxMUFCO0IxOTg7MTEwMiAxMTZBIDExQUI7ICMgKOuGmDsg64aYOyDhhILhharhhqs7IOuGmDsg4YSC4YWq4YarOyApIEhBTkdVTCBTWUxMQUJMRSBOV0FOCitCMTk5O0IxOTk7MTEwMiAxMTZBIDExQUM7QjE5OTsxMTAyIDExNkEgMTFBQzsgIyAo64aZOyDrhpk7IOGEguGFquGGrDsg64aZOyDhhILhharhhqw7ICkgSEFOR1VMIFNZTExBQkxFIE5XQU5KCitCMTlBO0IxOUE7MTEwMiAxMTZBIDExQUQ7QjE5QTsxMTAyIDExNkEgMTFBRDsgIyAo64aaOyDrhpo7IOGEguGFquGGrTsg64aaOyDhhILhharhhq07ICkgSEFOR1VMIFNZTExBQkxFIE5XQU5ICitCMTlCO0IxOUI7MTEwMiAxMTZBIDExQUU7QjE5QjsxMTAyIDExNkEgMTFBRTsgIyAo64abOyDrhps7IOGEguGFquGGrjsg64abOyDhhILhharhhq47ICkgSEFOR1VMIFNZTExBQkxFIE5XQUQKK0IxOUM7QjE5QzsxMTAyIDExNkEgMTFBRjtCMTlDOzExMDIgMTE2QSAxMUFGOyAjICjrhpw7IOuGnDsg4YSC4YWq4YavOyDrhpw7IOGEguGFquGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgTldBTAorQjE5RDtCMTlEOzExMDIgMTE2QSAxMUIwO0IxOUQ7MTEwMiAxMTZBIDExQjA7ICMgKOuGnTsg64adOyDhhILhharhhrA7IOuGnTsg4YSC4YWq4YawOyApIEhBTkdVTCBTWUxMQUJMRSBOV0FMRworQjE5RTtCMTlFOzExMDIgMTE2QSAxMUIxO0IxOUU7MTEwMiAxMTZBIDExQjE7ICMgKOuGnjsg64aeOyDhhILhharhhrE7IOuGnjsg4YSC4YWq4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBOV0FMTQorQjE5RjtCMTlGOzExMDIgMTE2QSAxMUIyO0IxOUY7MTEwMiAxMTZBIDExQjI7ICMgKOuGnzsg64afOyDhhILhharhhrI7IOuGnzsg4YSC4YWq4YayOyApIEhBTkdVTCBTWUxMQUJMRSBOV0FMQgorQjFBMDtCMUEwOzExMDIgMTE2QSAxMUIzO0IxQTA7MTEwMiAxMTZBIDExQjM7ICMgKOuGoDsg64agOyDhhILhharhhrM7IOuGoDsg4YSC4YWq4YazOyApIEhBTkdVTCBTWUxMQUJMRSBOV0FMUworQjFBMTtCMUExOzExMDIgMTE2QSAxMUI0O0IxQTE7MTEwMiAxMTZBIDExQjQ7ICMgKOuGoTsg64ahOyDhhILhharhhrQ7IOuGoTsg4YSC4YWq4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBOV0FMVAorQjFBMjtCMUEyOzExMDIgMTE2QSAxMUI1O0IxQTI7MTEwMiAxMTZBIDExQjU7ICMgKOuGojsg64aiOyDhhILhharhhrU7IOuGojsg4YSC4YWq4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBOV0FMUAorQjFBMztCMUEzOzExMDIgMTE2QSAxMUI2O0IxQTM7MTEwMiAxMTZBIDExQjY7ICMgKOuGozsg64ajOyDhhILhharhhrY7IOuGozsg4YSC4YWq4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBOV0FMSAorQjFBNDtCMUE0OzExMDIgMTE2QSAxMUI3O0IxQTQ7MTEwMiAxMTZBIDExQjc7ICMgKOuGpDsg64akOyDhhILhharhhrc7IOuGpDsg4YSC4YWq4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBOV0FNCitCMUE1O0IxQTU7MTEwMiAxMTZBIDExQjg7QjFBNTsxMTAyIDExNkEgMTFCODsgIyAo64alOyDrhqU7IOGEguGFquGGuDsg64alOyDhhILhharhhrg7ICkgSEFOR1VMIFNZTExBQkxFIE5XQUIKK0IxQTY7QjFBNjsxMTAyIDExNkEgMTFCOTtCMUE2OzExMDIgMTE2QSAxMUI5OyAjICjrhqY7IOuGpjsg4YSC4YWq4Ya5OyDrhqY7IOGEguGFquGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgTldBQlMKK0IxQTc7QjFBNzsxMTAyIDExNkEgMTFCQTtCMUE3OzExMDIgMTE2QSAxMUJBOyAjICjrhqc7IOuGpzsg4YSC4YWq4Ya6OyDrhqc7IOGEguGFquGGujsgKSBIQU5HVUwgU1lMTEFCTEUgTldBUworQjFBODtCMUE4OzExMDIgMTE2QSAxMUJCO0IxQTg7MTEwMiAxMTZBIDExQkI7ICMgKOuGqDsg64aoOyDhhILhharhhrs7IOuGqDsg4YSC4YWq4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBOV0FTUworQjFBOTtCMUE5OzExMDIgMTE2QSAxMUJDO0IxQTk7MTEwMiAxMTZBIDExQkM7ICMgKOuGqTsg64apOyDhhILhharhhrw7IOuGqTsg4YSC4YWq4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBOV0FORworQjFBQTtCMUFBOzExMDIgMTE2QSAxMUJEO0IxQUE7MTEwMiAxMTZBIDExQkQ7ICMgKOuGqjsg64aqOyDhhILhharhhr07IOuGqjsg4YSC4YWq4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBOV0FKCitCMUFCO0IxQUI7MTEwMiAxMTZBIDExQkU7QjFBQjsxMTAyIDExNkEgMTFCRTsgIyAo64arOyDrhqs7IOGEguGFquGGvjsg64arOyDhhILhharhhr47ICkgSEFOR1VMIFNZTExBQkxFIE5XQUMKK0IxQUM7QjFBQzsxMTAyIDExNkEgMTFCRjtCMUFDOzExMDIgMTE2QSAxMUJGOyAjICjrhqw7IOuGrDsg4YSC4YWq4Ya/OyDrhqw7IOGEguGFquGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgTldBSworQjFBRDtCMUFEOzExMDIgMTE2QSAxMUMwO0IxQUQ7MTEwMiAxMTZBIDExQzA7ICMgKOuGrTsg64atOyDhhILhharhh4A7IOuGrTsg4YSC4YWq4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBOV0FUCitCMUFFO0IxQUU7MTEwMiAxMTZBIDExQzE7QjFBRTsxMTAyIDExNkEgMTFDMTsgIyAo64auOyDrhq47IOGEguGFquGHgTsg64auOyDhhILhharhh4E7ICkgSEFOR1VMIFNZTExBQkxFIE5XQVAKK0IxQUY7QjFBRjsxMTAyIDExNkEgMTFDMjtCMUFGOzExMDIgMTE2QSAxMUMyOyAjICjrhq87IOuGrzsg4YSC4YWq4YeCOyDrhq87IOGEguGFquGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgTldBSAorQjFCMDtCMUIwOzExMDIgMTE2QjtCMUIwOzExMDIgMTE2QjsgIyAo64awOyDrhrA7IOGEguGFqzsg64awOyDhhILhhas7ICkgSEFOR1VMIFNZTExBQkxFIE5XQUUKK0IxQjE7QjFCMTsxMTAyIDExNkIgMTFBODtCMUIxOzExMDIgMTE2QiAxMUE4OyAjICjrhrE7IOuGsTsg4YSC4YWr4YaoOyDrhrE7IOGEguGFq+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgTldBRUcKK0IxQjI7QjFCMjsxMTAyIDExNkIgMTFBOTtCMUIyOzExMDIgMTE2QiAxMUE5OyAjICjrhrI7IOuGsjsg4YSC4YWr4YapOyDrhrI7IOGEguGFq+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgTldBRUdHCitCMUIzO0IxQjM7MTEwMiAxMTZCIDExQUE7QjFCMzsxMTAyIDExNkIgMTFBQTsgIyAo64azOyDrhrM7IOGEguGFq+GGqjsg64azOyDhhILhhavhhqo7ICkgSEFOR1VMIFNZTExBQkxFIE5XQUVHUworQjFCNDtCMUI0OzExMDIgMTE2QiAxMUFCO0IxQjQ7MTEwMiAxMTZCIDExQUI7ICMgKOuGtDsg64a0OyDhhILhhavhhqs7IOuGtDsg4YSC4YWr4YarOyApIEhBTkdVTCBTWUxMQUJMRSBOV0FFTgorQjFCNTtCMUI1OzExMDIgMTE2QiAxMUFDO0IxQjU7MTEwMiAxMTZCIDExQUM7ICMgKOuGtTsg64a1OyDhhILhhavhhqw7IOuGtTsg4YSC4YWr4YasOyApIEhBTkdVTCBTWUxMQUJMRSBOV0FFTkoKK0IxQjY7QjFCNjsxMTAyIDExNkIgMTFBRDtCMUI2OzExMDIgMTE2QiAxMUFEOyAjICjrhrY7IOuGtjsg4YSC4YWr4YatOyDrhrY7IOGEguGFq+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgTldBRU5ICitCMUI3O0IxQjc7MTEwMiAxMTZCIDExQUU7QjFCNzsxMTAyIDExNkIgMTFBRTsgIyAo64a3OyDrhrc7IOGEguGFq+GGrjsg64a3OyDhhILhhavhhq47ICkgSEFOR1VMIFNZTExBQkxFIE5XQUVECitCMUI4O0IxQjg7MTEwMiAxMTZCIDExQUY7QjFCODsxMTAyIDExNkIgMTFBRjsgIyAo64a4OyDrhrg7IOGEguGFq+GGrzsg64a4OyDhhILhhavhhq87ICkgSEFOR1VMIFNZTExBQkxFIE5XQUVMCitCMUI5O0IxQjk7MTEwMiAxMTZCIDExQjA7QjFCOTsxMTAyIDExNkIgMTFCMDsgIyAo64a5OyDrhrk7IOGEguGFq+GGsDsg64a5OyDhhILhhavhhrA7ICkgSEFOR1VMIFNZTExBQkxFIE5XQUVMRworQjFCQTtCMUJBOzExMDIgMTE2QiAxMUIxO0IxQkE7MTEwMiAxMTZCIDExQjE7ICMgKOuGujsg64a6OyDhhILhhavhhrE7IOuGujsg4YSC4YWr4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBOV0FFTE0KK0IxQkI7QjFCQjsxMTAyIDExNkIgMTFCMjtCMUJCOzExMDIgMTE2QiAxMUIyOyAjICjrhrs7IOuGuzsg4YSC4YWr4YayOyDrhrs7IOGEguGFq+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgTldBRUxCCitCMUJDO0IxQkM7MTEwMiAxMTZCIDExQjM7QjFCQzsxMTAyIDExNkIgMTFCMzsgIyAo64a8OyDrhrw7IOGEguGFq+GGszsg64a8OyDhhILhhavhhrM7ICkgSEFOR1VMIFNZTExBQkxFIE5XQUVMUworQjFCRDtCMUJEOzExMDIgMTE2QiAxMUI0O0IxQkQ7MTEwMiAxMTZCIDExQjQ7ICMgKOuGvTsg64a9OyDhhILhhavhhrQ7IOuGvTsg4YSC4YWr4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBOV0FFTFQKK0IxQkU7QjFCRTsxMTAyIDExNkIgMTFCNTtCMUJFOzExMDIgMTE2QiAxMUI1OyAjICjrhr47IOuGvjsg4YSC4YWr4Ya1OyDrhr47IOGEguGFq+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgTldBRUxQCitCMUJGO0IxQkY7MTEwMiAxMTZCIDExQjY7QjFCRjsxMTAyIDExNkIgMTFCNjsgIyAo64a/OyDrhr87IOGEguGFq+GGtjsg64a/OyDhhILhhavhhrY7ICkgSEFOR1VMIFNZTExBQkxFIE5XQUVMSAorQjFDMDtCMUMwOzExMDIgMTE2QiAxMUI3O0IxQzA7MTEwMiAxMTZCIDExQjc7ICMgKOuHgDsg64eAOyDhhILhhavhhrc7IOuHgDsg4YSC4YWr4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBOV0FFTQorQjFDMTtCMUMxOzExMDIgMTE2QiAxMUI4O0IxQzE7MTEwMiAxMTZCIDExQjg7ICMgKOuHgTsg64eBOyDhhILhhavhhrg7IOuHgTsg4YSC4YWr4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBOV0FFQgorQjFDMjtCMUMyOzExMDIgMTE2QiAxMUI5O0IxQzI7MTEwMiAxMTZCIDExQjk7ICMgKOuHgjsg64eCOyDhhILhhavhhrk7IOuHgjsg4YSC4YWr4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBOV0FFQlMKK0IxQzM7QjFDMzsxMTAyIDExNkIgMTFCQTtCMUMzOzExMDIgMTE2QiAxMUJBOyAjICjrh4M7IOuHgzsg4YSC4YWr4Ya6OyDrh4M7IOGEguGFq+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgTldBRVMKK0IxQzQ7QjFDNDsxMTAyIDExNkIgMTFCQjtCMUM0OzExMDIgMTE2QiAxMUJCOyAjICjrh4Q7IOuHhDsg4YSC4YWr4Ya7OyDrh4Q7IOGEguGFq+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgTldBRVNTCitCMUM1O0IxQzU7MTEwMiAxMTZCIDExQkM7QjFDNTsxMTAyIDExNkIgMTFCQzsgIyAo64eFOyDrh4U7IOGEguGFq+GGvDsg64eFOyDhhILhhavhhrw7ICkgSEFOR1VMIFNZTExBQkxFIE5XQUVORworQjFDNjtCMUM2OzExMDIgMTE2QiAxMUJEO0IxQzY7MTEwMiAxMTZCIDExQkQ7ICMgKOuHhjsg64eGOyDhhILhhavhhr07IOuHhjsg4YSC4YWr4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBOV0FFSgorQjFDNztCMUM3OzExMDIgMTE2QiAxMUJFO0IxQzc7MTEwMiAxMTZCIDExQkU7ICMgKOuHhzsg64eHOyDhhILhhavhhr47IOuHhzsg4YSC4YWr4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBOV0FFQworQjFDODtCMUM4OzExMDIgMTE2QiAxMUJGO0IxQzg7MTEwMiAxMTZCIDExQkY7ICMgKOuHiDsg64eIOyDhhILhhavhhr87IOuHiDsg4YSC4YWr4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBOV0FFSworQjFDOTtCMUM5OzExMDIgMTE2QiAxMUMwO0IxQzk7MTEwMiAxMTZCIDExQzA7ICMgKOuHiTsg64eJOyDhhILhhavhh4A7IOuHiTsg4YSC4YWr4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBOV0FFVAorQjFDQTtCMUNBOzExMDIgMTE2QiAxMUMxO0IxQ0E7MTEwMiAxMTZCIDExQzE7ICMgKOuHijsg64eKOyDhhILhhavhh4E7IOuHijsg4YSC4YWr4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBOV0FFUAorQjFDQjtCMUNCOzExMDIgMTE2QiAxMUMyO0IxQ0I7MTEwMiAxMTZCIDExQzI7ICMgKOuHizsg64eLOyDhhILhhavhh4I7IOuHizsg4YSC4YWr4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBOV0FFSAorQjFDQztCMUNDOzExMDIgMTE2QztCMUNDOzExMDIgMTE2QzsgIyAo64eMOyDrh4w7IOGEguGFrDsg64eMOyDhhILhhaw7ICkgSEFOR1VMIFNZTExBQkxFIE5PRQorQjFDRDtCMUNEOzExMDIgMTE2QyAxMUE4O0IxQ0Q7MTEwMiAxMTZDIDExQTg7ICMgKOuHjTsg64eNOyDhhILhhazhhqg7IOuHjTsg4YSC4YWs4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBOT0VHCitCMUNFO0IxQ0U7MTEwMiAxMTZDIDExQTk7QjFDRTsxMTAyIDExNkMgMTFBOTsgIyAo64eOOyDrh447IOGEguGFrOGGqTsg64eOOyDhhILhhazhhqk7ICkgSEFOR1VMIFNZTExBQkxFIE5PRUdHCitCMUNGO0IxQ0Y7MTEwMiAxMTZDIDExQUE7QjFDRjsxMTAyIDExNkMgMTFBQTsgIyAo64ePOyDrh487IOGEguGFrOGGqjsg64ePOyDhhILhhazhhqo7ICkgSEFOR1VMIFNZTExBQkxFIE5PRUdTCitCMUQwO0IxRDA7MTEwMiAxMTZDIDExQUI7QjFEMDsxMTAyIDExNkMgMTFBQjsgIyAo64eQOyDrh5A7IOGEguGFrOGGqzsg64eQOyDhhILhhazhhqs7ICkgSEFOR1VMIFNZTExBQkxFIE5PRU4KK0IxRDE7QjFEMTsxMTAyIDExNkMgMTFBQztCMUQxOzExMDIgMTE2QyAxMUFDOyAjICjrh5E7IOuHkTsg4YSC4YWs4YasOyDrh5E7IOGEguGFrOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgTk9FTkoKK0IxRDI7QjFEMjsxMTAyIDExNkMgMTFBRDtCMUQyOzExMDIgMTE2QyAxMUFEOyAjICjrh5I7IOuHkjsg4YSC4YWs4YatOyDrh5I7IOGEguGFrOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgTk9FTkgKK0IxRDM7QjFEMzsxMTAyIDExNkMgMTFBRTtCMUQzOzExMDIgMTE2QyAxMUFFOyAjICjrh5M7IOuHkzsg4YSC4YWs4YauOyDrh5M7IOGEguGFrOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgTk9FRAorQjFENDtCMUQ0OzExMDIgMTE2QyAxMUFGO0IxRDQ7MTEwMiAxMTZDIDExQUY7ICMgKOuHlDsg64eUOyDhhILhhazhhq87IOuHlDsg4YSC4YWs4YavOyApIEhBTkdVTCBTWUxMQUJMRSBOT0VMCitCMUQ1O0IxRDU7MTEwMiAxMTZDIDExQjA7QjFENTsxMTAyIDExNkMgMTFCMDsgIyAo64eVOyDrh5U7IOGEguGFrOGGsDsg64eVOyDhhILhhazhhrA7ICkgSEFOR1VMIFNZTExBQkxFIE5PRUxHCitCMUQ2O0IxRDY7MTEwMiAxMTZDIDExQjE7QjFENjsxMTAyIDExNkMgMTFCMTsgIyAo64eWOyDrh5Y7IOGEguGFrOGGsTsg64eWOyDhhILhhazhhrE7ICkgSEFOR1VMIFNZTExBQkxFIE5PRUxNCitCMUQ3O0IxRDc7MTEwMiAxMTZDIDExQjI7QjFENzsxMTAyIDExNkMgMTFCMjsgIyAo64eXOyDrh5c7IOGEguGFrOGGsjsg64eXOyDhhILhhazhhrI7ICkgSEFOR1VMIFNZTExBQkxFIE5PRUxCCitCMUQ4O0IxRDg7MTEwMiAxMTZDIDExQjM7QjFEODsxMTAyIDExNkMgMTFCMzsgIyAo64eYOyDrh5g7IOGEguGFrOGGszsg64eYOyDhhILhhazhhrM7ICkgSEFOR1VMIFNZTExBQkxFIE5PRUxTCitCMUQ5O0IxRDk7MTEwMiAxMTZDIDExQjQ7QjFEOTsxMTAyIDExNkMgMTFCNDsgIyAo64eZOyDrh5k7IOGEguGFrOGGtDsg64eZOyDhhILhhazhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIE5PRUxUCitCMURBO0IxREE7MTEwMiAxMTZDIDExQjU7QjFEQTsxMTAyIDExNkMgMTFCNTsgIyAo64eaOyDrh5o7IOGEguGFrOGGtTsg64eaOyDhhILhhazhhrU7ICkgSEFOR1VMIFNZTExBQkxFIE5PRUxQCitCMURCO0IxREI7MTEwMiAxMTZDIDExQjY7QjFEQjsxMTAyIDExNkMgMTFCNjsgIyAo64ebOyDrh5s7IOGEguGFrOGGtjsg64ebOyDhhILhhazhhrY7ICkgSEFOR1VMIFNZTExBQkxFIE5PRUxICitCMURDO0IxREM7MTEwMiAxMTZDIDExQjc7QjFEQzsxMTAyIDExNkMgMTFCNzsgIyAo64ecOyDrh5w7IOGEguGFrOGGtzsg64ecOyDhhILhhazhhrc7ICkgSEFOR1VMIFNZTExBQkxFIE5PRU0KK0IxREQ7QjFERDsxMTAyIDExNkMgMTFCODtCMUREOzExMDIgMTE2QyAxMUI4OyAjICjrh507IOuHnTsg4YSC4YWs4Ya4OyDrh507IOGEguGFrOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgTk9FQgorQjFERTtCMURFOzExMDIgMTE2QyAxMUI5O0IxREU7MTEwMiAxMTZDIDExQjk7ICMgKOuHnjsg64eeOyDhhILhhazhhrk7IOuHnjsg4YSC4YWs4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBOT0VCUworQjFERjtCMURGOzExMDIgMTE2QyAxMUJBO0IxREY7MTEwMiAxMTZDIDExQkE7ICMgKOuHnzsg64efOyDhhILhhazhhro7IOuHnzsg4YSC4YWs4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBOT0VTCitCMUUwO0IxRTA7MTEwMiAxMTZDIDExQkI7QjFFMDsxMTAyIDExNkMgMTFCQjsgIyAo64egOyDrh6A7IOGEguGFrOGGuzsg64egOyDhhILhhazhhrs7ICkgSEFOR1VMIFNZTExBQkxFIE5PRVNTCitCMUUxO0IxRTE7MTEwMiAxMTZDIDExQkM7QjFFMTsxMTAyIDExNkMgMTFCQzsgIyAo64ehOyDrh6E7IOGEguGFrOGGvDsg64ehOyDhhILhhazhhrw7ICkgSEFOR1VMIFNZTExBQkxFIE5PRU5HCitCMUUyO0IxRTI7MTEwMiAxMTZDIDExQkQ7QjFFMjsxMTAyIDExNkMgMTFCRDsgIyAo64eiOyDrh6I7IOGEguGFrOGGvTsg64eiOyDhhILhhazhhr07ICkgSEFOR1VMIFNZTExBQkxFIE5PRUoKK0IxRTM7QjFFMzsxMTAyIDExNkMgMTFCRTtCMUUzOzExMDIgMTE2QyAxMUJFOyAjICjrh6M7IOuHozsg4YSC4YWs4Ya+OyDrh6M7IOGEguGFrOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgTk9FQworQjFFNDtCMUU0OzExMDIgMTE2QyAxMUJGO0IxRTQ7MTEwMiAxMTZDIDExQkY7ICMgKOuHpDsg64ekOyDhhILhhazhhr87IOuHpDsg4YSC4YWs4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBOT0VLCitCMUU1O0IxRTU7MTEwMiAxMTZDIDExQzA7QjFFNTsxMTAyIDExNkMgMTFDMDsgIyAo64elOyDrh6U7IOGEguGFrOGHgDsg64elOyDhhILhhazhh4A7ICkgSEFOR1VMIFNZTExBQkxFIE5PRVQKK0IxRTY7QjFFNjsxMTAyIDExNkMgMTFDMTtCMUU2OzExMDIgMTE2QyAxMUMxOyAjICjrh6Y7IOuHpjsg4YSC4YWs4YeBOyDrh6Y7IOGEguGFrOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgTk9FUAorQjFFNztCMUU3OzExMDIgMTE2QyAxMUMyO0IxRTc7MTEwMiAxMTZDIDExQzI7ICMgKOuHpzsg64enOyDhhILhhazhh4I7IOuHpzsg4YSC4YWs4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBOT0VICitCMUU4O0IxRTg7MTEwMiAxMTZEO0IxRTg7MTEwMiAxMTZEOyAjICjrh6g7IOuHqDsg4YSC4YWtOyDrh6g7IOGEguGFrTsgKSBIQU5HVUwgU1lMTEFCTEUgTllPCitCMUU5O0IxRTk7MTEwMiAxMTZEIDExQTg7QjFFOTsxMTAyIDExNkQgMTFBODsgIyAo64epOyDrh6k7IOGEguGFreGGqDsg64epOyDhhILhha3hhqg7ICkgSEFOR1VMIFNZTExBQkxFIE5ZT0cKK0IxRUE7QjFFQTsxMTAyIDExNkQgMTFBOTtCMUVBOzExMDIgMTE2RCAxMUE5OyAjICjrh6o7IOuHqjsg4YSC4YWt4YapOyDrh6o7IOGEguGFreGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgTllPR0cKK0IxRUI7QjFFQjsxMTAyIDExNkQgMTFBQTtCMUVCOzExMDIgMTE2RCAxMUFBOyAjICjrh6s7IOuHqzsg4YSC4YWt4YaqOyDrh6s7IOGEguGFreGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgTllPR1MKK0IxRUM7QjFFQzsxMTAyIDExNkQgMTFBQjtCMUVDOzExMDIgMTE2RCAxMUFCOyAjICjrh6w7IOuHrDsg4YSC4YWt4YarOyDrh6w7IOGEguGFreGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgTllPTgorQjFFRDtCMUVEOzExMDIgMTE2RCAxMUFDO0IxRUQ7MTEwMiAxMTZEIDExQUM7ICMgKOuHrTsg64etOyDhhILhha3hhqw7IOuHrTsg4YSC4YWt4YasOyApIEhBTkdVTCBTWUxMQUJMRSBOWU9OSgorQjFFRTtCMUVFOzExMDIgMTE2RCAxMUFEO0IxRUU7MTEwMiAxMTZEIDExQUQ7ICMgKOuHrjsg64euOyDhhILhha3hhq07IOuHrjsg4YSC4YWt4YatOyApIEhBTkdVTCBTWUxMQUJMRSBOWU9OSAorQjFFRjtCMUVGOzExMDIgMTE2RCAxMUFFO0IxRUY7MTEwMiAxMTZEIDExQUU7ICMgKOuHrzsg64evOyDhhILhha3hhq47IOuHrzsg4YSC4YWt4YauOyApIEhBTkdVTCBTWUxMQUJMRSBOWU9ECitCMUYwO0IxRjA7MTEwMiAxMTZEIDExQUY7QjFGMDsxMTAyIDExNkQgMTFBRjsgIyAo64ewOyDrh7A7IOGEguGFreGGrzsg64ewOyDhhILhha3hhq87ICkgSEFOR1VMIFNZTExBQkxFIE5ZT0wKK0IxRjE7QjFGMTsxMTAyIDExNkQgMTFCMDtCMUYxOzExMDIgMTE2RCAxMUIwOyAjICjrh7E7IOuHsTsg4YSC4YWt4YawOyDrh7E7IOGEguGFreGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgTllPTEcKK0IxRjI7QjFGMjsxMTAyIDExNkQgMTFCMTtCMUYyOzExMDIgMTE2RCAxMUIxOyAjICjrh7I7IOuHsjsg4YSC4YWt4YaxOyDrh7I7IOGEguGFreGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgTllPTE0KK0IxRjM7QjFGMzsxMTAyIDExNkQgMTFCMjtCMUYzOzExMDIgMTE2RCAxMUIyOyAjICjrh7M7IOuHszsg4YSC4YWt4YayOyDrh7M7IOGEguGFreGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgTllPTEIKK0IxRjQ7QjFGNDsxMTAyIDExNkQgMTFCMztCMUY0OzExMDIgMTE2RCAxMUIzOyAjICjrh7Q7IOuHtDsg4YSC4YWt4YazOyDrh7Q7IOGEguGFreGGszsgKSBIQU5HVUwgU1lMTEFCTEUgTllPTFMKK0IxRjU7QjFGNTsxMTAyIDExNkQgMTFCNDtCMUY1OzExMDIgMTE2RCAxMUI0OyAjICjrh7U7IOuHtTsg4YSC4YWt4Ya0OyDrh7U7IOGEguGFreGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgTllPTFQKK0IxRjY7QjFGNjsxMTAyIDExNkQgMTFCNTtCMUY2OzExMDIgMTE2RCAxMUI1OyAjICjrh7Y7IOuHtjsg4YSC4YWt4Ya1OyDrh7Y7IOGEguGFreGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgTllPTFAKK0IxRjc7QjFGNzsxMTAyIDExNkQgMTFCNjtCMUY3OzExMDIgMTE2RCAxMUI2OyAjICjrh7c7IOuHtzsg4YSC4YWt4Ya2OyDrh7c7IOGEguGFreGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgTllPTEgKK0IxRjg7QjFGODsxMTAyIDExNkQgMTFCNztCMUY4OzExMDIgMTE2RCAxMUI3OyAjICjrh7g7IOuHuDsg4YSC4YWt4Ya3OyDrh7g7IOGEguGFreGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgTllPTQorQjFGOTtCMUY5OzExMDIgMTE2RCAxMUI4O0IxRjk7MTEwMiAxMTZEIDExQjg7ICMgKOuHuTsg64e5OyDhhILhha3hhrg7IOuHuTsg4YSC4YWt4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBOWU9CCitCMUZBO0IxRkE7MTEwMiAxMTZEIDExQjk7QjFGQTsxMTAyIDExNkQgMTFCOTsgIyAo64e6OyDrh7o7IOGEguGFreGGuTsg64e6OyDhhILhha3hhrk7ICkgSEFOR1VMIFNZTExBQkxFIE5ZT0JTCitCMUZCO0IxRkI7MTEwMiAxMTZEIDExQkE7QjFGQjsxMTAyIDExNkQgMTFCQTsgIyAo64e7OyDrh7s7IOGEguGFreGGujsg64e7OyDhhILhha3hhro7ICkgSEFOR1VMIFNZTExBQkxFIE5ZT1MKK0IxRkM7QjFGQzsxMTAyIDExNkQgMTFCQjtCMUZDOzExMDIgMTE2RCAxMUJCOyAjICjrh7w7IOuHvDsg4YSC4YWt4Ya7OyDrh7w7IOGEguGFreGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgTllPU1MKK0IxRkQ7QjFGRDsxMTAyIDExNkQgMTFCQztCMUZEOzExMDIgMTE2RCAxMUJDOyAjICjrh707IOuHvTsg4YSC4YWt4Ya8OyDrh707IOGEguGFreGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgTllPTkcKK0IxRkU7QjFGRTsxMTAyIDExNkQgMTFCRDtCMUZFOzExMDIgMTE2RCAxMUJEOyAjICjrh747IOuHvjsg4YSC4YWt4Ya9OyDrh747IOGEguGFreGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgTllPSgorQjFGRjtCMUZGOzExMDIgMTE2RCAxMUJFO0IxRkY7MTEwMiAxMTZEIDExQkU7ICMgKOuHvzsg64e/OyDhhILhha3hhr47IOuHvzsg4YSC4YWt4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBOWU9DCitCMjAwO0IyMDA7MTEwMiAxMTZEIDExQkY7QjIwMDsxMTAyIDExNkQgMTFCRjsgIyAo64iAOyDriIA7IOGEguGFreGGvzsg64iAOyDhhILhha3hhr87ICkgSEFOR1VMIFNZTExBQkxFIE5ZT0sKK0IyMDE7QjIwMTsxMTAyIDExNkQgMTFDMDtCMjAxOzExMDIgMTE2RCAxMUMwOyAjICjriIE7IOuIgTsg4YSC4YWt4YeAOyDriIE7IOGEguGFreGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgTllPVAorQjIwMjtCMjAyOzExMDIgMTE2RCAxMUMxO0IyMDI7MTEwMiAxMTZEIDExQzE7ICMgKOuIgjsg64iCOyDhhILhha3hh4E7IOuIgjsg4YSC4YWt4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBOWU9QCitCMjAzO0IyMDM7MTEwMiAxMTZEIDExQzI7QjIwMzsxMTAyIDExNkQgMTFDMjsgIyAo64iDOyDriIM7IOGEguGFreGHgjsg64iDOyDhhILhha3hh4I7ICkgSEFOR1VMIFNZTExBQkxFIE5ZT0gKK0IyMDQ7QjIwNDsxMTAyIDExNkU7QjIwNDsxMTAyIDExNkU7ICMgKOuIhDsg64iEOyDhhILhha47IOuIhDsg4YSC4YWuOyApIEhBTkdVTCBTWUxMQUJMRSBOVQorQjIwNTtCMjA1OzExMDIgMTE2RSAxMUE4O0IyMDU7MTEwMiAxMTZFIDExQTg7ICMgKOuIhTsg64iFOyDhhILhha7hhqg7IOuIhTsg4YSC4YWu4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBOVUcKK0IyMDY7QjIwNjsxMTAyIDExNkUgMTFBOTtCMjA2OzExMDIgMTE2RSAxMUE5OyAjICjriIY7IOuIhjsg4YSC4YWu4YapOyDriIY7IOGEguGFruGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgTlVHRworQjIwNztCMjA3OzExMDIgMTE2RSAxMUFBO0IyMDc7MTEwMiAxMTZFIDExQUE7ICMgKOuIhzsg64iHOyDhhILhha7hhqo7IOuIhzsg4YSC4YWu4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBOVUdTCitCMjA4O0IyMDg7MTEwMiAxMTZFIDExQUI7QjIwODsxMTAyIDExNkUgMTFBQjsgIyAo64iIOyDriIg7IOGEguGFruGGqzsg64iIOyDhhILhha7hhqs7ICkgSEFOR1VMIFNZTExBQkxFIE5VTgorQjIwOTtCMjA5OzExMDIgMTE2RSAxMUFDO0IyMDk7MTEwMiAxMTZFIDExQUM7ICMgKOuIiTsg64iJOyDhhILhha7hhqw7IOuIiTsg4YSC4YWu4YasOyApIEhBTkdVTCBTWUxMQUJMRSBOVU5KCitCMjBBO0IyMEE7MTEwMiAxMTZFIDExQUQ7QjIwQTsxMTAyIDExNkUgMTFBRDsgIyAo64iKOyDriIo7IOGEguGFruGGrTsg64iKOyDhhILhha7hhq07ICkgSEFOR1VMIFNZTExBQkxFIE5VTkgKK0IyMEI7QjIwQjsxMTAyIDExNkUgMTFBRTtCMjBCOzExMDIgMTE2RSAxMUFFOyAjICjriIs7IOuIizsg4YSC4YWu4YauOyDriIs7IOGEguGFruGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgTlVECitCMjBDO0IyMEM7MTEwMiAxMTZFIDExQUY7QjIwQzsxMTAyIDExNkUgMTFBRjsgIyAo64iMOyDriIw7IOGEguGFruGGrzsg64iMOyDhhILhha7hhq87ICkgSEFOR1VMIFNZTExBQkxFIE5VTAorQjIwRDtCMjBEOzExMDIgMTE2RSAxMUIwO0IyMEQ7MTEwMiAxMTZFIDExQjA7ICMgKOuIjTsg64iNOyDhhILhha7hhrA7IOuIjTsg4YSC4YWu4YawOyApIEhBTkdVTCBTWUxMQUJMRSBOVUxHCitCMjBFO0IyMEU7MTEwMiAxMTZFIDExQjE7QjIwRTsxMTAyIDExNkUgMTFCMTsgIyAo64iOOyDriI47IOGEguGFruGGsTsg64iOOyDhhILhha7hhrE7ICkgSEFOR1VMIFNZTExBQkxFIE5VTE0KK0IyMEY7QjIwRjsxMTAyIDExNkUgMTFCMjtCMjBGOzExMDIgMTE2RSAxMUIyOyAjICjriI87IOuIjzsg4YSC4YWu4YayOyDriI87IOGEguGFruGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgTlVMQgorQjIxMDtCMjEwOzExMDIgMTE2RSAxMUIzO0IyMTA7MTEwMiAxMTZFIDExQjM7ICMgKOuIkDsg64iQOyDhhILhha7hhrM7IOuIkDsg4YSC4YWu4YazOyApIEhBTkdVTCBTWUxMQUJMRSBOVUxTCitCMjExO0IyMTE7MTEwMiAxMTZFIDExQjQ7QjIxMTsxMTAyIDExNkUgMTFCNDsgIyAo64iROyDriJE7IOGEguGFruGGtDsg64iROyDhhILhha7hhrQ7ICkgSEFOR1VMIFNZTExBQkxFIE5VTFQKK0IyMTI7QjIxMjsxMTAyIDExNkUgMTFCNTtCMjEyOzExMDIgMTE2RSAxMUI1OyAjICjriJI7IOuIkjsg4YSC4YWu4Ya1OyDriJI7IOGEguGFruGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgTlVMUAorQjIxMztCMjEzOzExMDIgMTE2RSAxMUI2O0IyMTM7MTEwMiAxMTZFIDExQjY7ICMgKOuIkzsg64iTOyDhhILhha7hhrY7IOuIkzsg4YSC4YWu4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBOVUxICitCMjE0O0IyMTQ7MTEwMiAxMTZFIDExQjc7QjIxNDsxMTAyIDExNkUgMTFCNzsgIyAo64iUOyDriJQ7IOGEguGFruGGtzsg64iUOyDhhILhha7hhrc7ICkgSEFOR1VMIFNZTExBQkxFIE5VTQorQjIxNTtCMjE1OzExMDIgMTE2RSAxMUI4O0IyMTU7MTEwMiAxMTZFIDExQjg7ICMgKOuIlTsg64iVOyDhhILhha7hhrg7IOuIlTsg4YSC4YWu4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBOVUIKK0IyMTY7QjIxNjsxMTAyIDExNkUgMTFCOTtCMjE2OzExMDIgMTE2RSAxMUI5OyAjICjriJY7IOuIljsg4YSC4YWu4Ya5OyDriJY7IOGEguGFruGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgTlVCUworQjIxNztCMjE3OzExMDIgMTE2RSAxMUJBO0IyMTc7MTEwMiAxMTZFIDExQkE7ICMgKOuIlzsg64iXOyDhhILhha7hhro7IOuIlzsg4YSC4YWu4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBOVVMKK0IyMTg7QjIxODsxMTAyIDExNkUgMTFCQjtCMjE4OzExMDIgMTE2RSAxMUJCOyAjICjriJg7IOuImDsg4YSC4YWu4Ya7OyDriJg7IOGEguGFruGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgTlVTUworQjIxOTtCMjE5OzExMDIgMTE2RSAxMUJDO0IyMTk7MTEwMiAxMTZFIDExQkM7ICMgKOuImTsg64iZOyDhhILhha7hhrw7IOuImTsg4YSC4YWu4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBOVU5HCitCMjFBO0IyMUE7MTEwMiAxMTZFIDExQkQ7QjIxQTsxMTAyIDExNkUgMTFCRDsgIyAo64iaOyDriJo7IOGEguGFruGGvTsg64iaOyDhhILhha7hhr07ICkgSEFOR1VMIFNZTExBQkxFIE5VSgorQjIxQjtCMjFCOzExMDIgMTE2RSAxMUJFO0IyMUI7MTEwMiAxMTZFIDExQkU7ICMgKOuImzsg64ibOyDhhILhha7hhr47IOuImzsg4YSC4YWu4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBOVUMKK0IyMUM7QjIxQzsxMTAyIDExNkUgMTFCRjtCMjFDOzExMDIgMTE2RSAxMUJGOyAjICjriJw7IOuInDsg4YSC4YWu4Ya/OyDriJw7IOGEguGFruGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgTlVLCitCMjFEO0IyMUQ7MTEwMiAxMTZFIDExQzA7QjIxRDsxMTAyIDExNkUgMTFDMDsgIyAo64idOyDriJ07IOGEguGFruGHgDsg64idOyDhhILhha7hh4A7ICkgSEFOR1VMIFNZTExBQkxFIE5VVAorQjIxRTtCMjFFOzExMDIgMTE2RSAxMUMxO0IyMUU7MTEwMiAxMTZFIDExQzE7ICMgKOuInjsg64ieOyDhhILhha7hh4E7IOuInjsg4YSC4YWu4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBOVVAKK0IyMUY7QjIxRjsxMTAyIDExNkUgMTFDMjtCMjFGOzExMDIgMTE2RSAxMUMyOyAjICjriJ87IOuInzsg4YSC4YWu4YeCOyDriJ87IOGEguGFruGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgTlVICitCMjIwO0IyMjA7MTEwMiAxMTZGO0IyMjA7MTEwMiAxMTZGOyAjICjriKA7IOuIoDsg4YSC4YWvOyDriKA7IOGEguGFrzsgKSBIQU5HVUwgU1lMTEFCTEUgTldFTworQjIyMTtCMjIxOzExMDIgMTE2RiAxMUE4O0IyMjE7MTEwMiAxMTZGIDExQTg7ICMgKOuIoTsg64ihOyDhhILhha/hhqg7IOuIoTsg4YSC4YWv4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBOV0VPRworQjIyMjtCMjIyOzExMDIgMTE2RiAxMUE5O0IyMjI7MTEwMiAxMTZGIDExQTk7ICMgKOuIojsg64iiOyDhhILhha/hhqk7IOuIojsg4YSC4YWv4YapOyApIEhBTkdVTCBTWUxMQUJMRSBOV0VPR0cKK0IyMjM7QjIyMzsxMTAyIDExNkYgMTFBQTtCMjIzOzExMDIgMTE2RiAxMUFBOyAjICjriKM7IOuIozsg4YSC4YWv4YaqOyDriKM7IOGEguGFr+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgTldFT0dTCitCMjI0O0IyMjQ7MTEwMiAxMTZGIDExQUI7QjIyNDsxMTAyIDExNkYgMTFBQjsgIyAo64ikOyDriKQ7IOGEguGFr+GGqzsg64ikOyDhhILhha/hhqs7ICkgSEFOR1VMIFNZTExBQkxFIE5XRU9OCitCMjI1O0IyMjU7MTEwMiAxMTZGIDExQUM7QjIyNTsxMTAyIDExNkYgMTFBQzsgIyAo64ilOyDriKU7IOGEguGFr+GGrDsg64ilOyDhhILhha/hhqw7ICkgSEFOR1VMIFNZTExBQkxFIE5XRU9OSgorQjIyNjtCMjI2OzExMDIgMTE2RiAxMUFEO0IyMjY7MTEwMiAxMTZGIDExQUQ7ICMgKOuIpjsg64imOyDhhILhha/hhq07IOuIpjsg4YSC4YWv4YatOyApIEhBTkdVTCBTWUxMQUJMRSBOV0VPTkgKK0IyMjc7QjIyNzsxMTAyIDExNkYgMTFBRTtCMjI3OzExMDIgMTE2RiAxMUFFOyAjICjriKc7IOuIpzsg4YSC4YWv4YauOyDriKc7IOGEguGFr+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgTldFT0QKK0IyMjg7QjIyODsxMTAyIDExNkYgMTFBRjtCMjI4OzExMDIgMTE2RiAxMUFGOyAjICjriKg7IOuIqDsg4YSC4YWv4YavOyDriKg7IOGEguGFr+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgTldFT0wKK0IyMjk7QjIyOTsxMTAyIDExNkYgMTFCMDtCMjI5OzExMDIgMTE2RiAxMUIwOyAjICjriKk7IOuIqTsg4YSC4YWv4YawOyDriKk7IOGEguGFr+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgTldFT0xHCitCMjJBO0IyMkE7MTEwMiAxMTZGIDExQjE7QjIyQTsxMTAyIDExNkYgMTFCMTsgIyAo64iqOyDriKo7IOGEguGFr+GGsTsg64iqOyDhhILhha/hhrE7ICkgSEFOR1VMIFNZTExBQkxFIE5XRU9MTQorQjIyQjtCMjJCOzExMDIgMTE2RiAxMUIyO0IyMkI7MTEwMiAxMTZGIDExQjI7ICMgKOuIqzsg64irOyDhhILhha/hhrI7IOuIqzsg4YSC4YWv4YayOyApIEhBTkdVTCBTWUxMQUJMRSBOV0VPTEIKK0IyMkM7QjIyQzsxMTAyIDExNkYgMTFCMztCMjJDOzExMDIgMTE2RiAxMUIzOyAjICjriKw7IOuIrDsg4YSC4YWv4YazOyDriKw7IOGEguGFr+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgTldFT0xTCitCMjJEO0IyMkQ7MTEwMiAxMTZGIDExQjQ7QjIyRDsxMTAyIDExNkYgMTFCNDsgIyAo64itOyDriK07IOGEguGFr+GGtDsg64itOyDhhILhha/hhrQ7ICkgSEFOR1VMIFNZTExBQkxFIE5XRU9MVAorQjIyRTtCMjJFOzExMDIgMTE2RiAxMUI1O0IyMkU7MTEwMiAxMTZGIDExQjU7ICMgKOuIrjsg64iuOyDhhILhha/hhrU7IOuIrjsg4YSC4YWv4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBOV0VPTFAKK0IyMkY7QjIyRjsxMTAyIDExNkYgMTFCNjtCMjJGOzExMDIgMTE2RiAxMUI2OyAjICjriK87IOuIrzsg4YSC4YWv4Ya2OyDriK87IOGEguGFr+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgTldFT0xICitCMjMwO0IyMzA7MTEwMiAxMTZGIDExQjc7QjIzMDsxMTAyIDExNkYgMTFCNzsgIyAo64iwOyDriLA7IOGEguGFr+GGtzsg64iwOyDhhILhha/hhrc7ICkgSEFOR1VMIFNZTExBQkxFIE5XRU9NCitCMjMxO0IyMzE7MTEwMiAxMTZGIDExQjg7QjIzMTsxMTAyIDExNkYgMTFCODsgIyAo64ixOyDriLE7IOGEguGFr+GGuDsg64ixOyDhhILhha/hhrg7ICkgSEFOR1VMIFNZTExBQkxFIE5XRU9CCitCMjMyO0IyMzI7MTEwMiAxMTZGIDExQjk7QjIzMjsxMTAyIDExNkYgMTFCOTsgIyAo64iyOyDriLI7IOGEguGFr+GGuTsg64iyOyDhhILhha/hhrk7ICkgSEFOR1VMIFNZTExBQkxFIE5XRU9CUworQjIzMztCMjMzOzExMDIgMTE2RiAxMUJBO0IyMzM7MTEwMiAxMTZGIDExQkE7ICMgKOuIszsg64izOyDhhILhha/hhro7IOuIszsg4YSC4YWv4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBOV0VPUworQjIzNDtCMjM0OzExMDIgMTE2RiAxMUJCO0IyMzQ7MTEwMiAxMTZGIDExQkI7ICMgKOuItDsg64i0OyDhhILhha/hhrs7IOuItDsg4YSC4YWv4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBOV0VPU1MKK0IyMzU7QjIzNTsxMTAyIDExNkYgMTFCQztCMjM1OzExMDIgMTE2RiAxMUJDOyAjICjriLU7IOuItTsg4YSC4YWv4Ya8OyDriLU7IOGEguGFr+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgTldFT05HCitCMjM2O0IyMzY7MTEwMiAxMTZGIDExQkQ7QjIzNjsxMTAyIDExNkYgMTFCRDsgIyAo64i2OyDriLY7IOGEguGFr+GGvTsg64i2OyDhhILhha/hhr07ICkgSEFOR1VMIFNZTExBQkxFIE5XRU9KCitCMjM3O0IyMzc7MTEwMiAxMTZGIDExQkU7QjIzNzsxMTAyIDExNkYgMTFCRTsgIyAo64i3OyDriLc7IOGEguGFr+GGvjsg64i3OyDhhILhha/hhr47ICkgSEFOR1VMIFNZTExBQkxFIE5XRU9DCitCMjM4O0IyMzg7MTEwMiAxMTZGIDExQkY7QjIzODsxMTAyIDExNkYgMTFCRjsgIyAo64i4OyDriLg7IOGEguGFr+GGvzsg64i4OyDhhILhha/hhr87ICkgSEFOR1VMIFNZTExBQkxFIE5XRU9LCitCMjM5O0IyMzk7MTEwMiAxMTZGIDExQzA7QjIzOTsxMTAyIDExNkYgMTFDMDsgIyAo64i5OyDriLk7IOGEguGFr+GHgDsg64i5OyDhhILhha/hh4A7ICkgSEFOR1VMIFNZTExBQkxFIE5XRU9UCitCMjNBO0IyM0E7MTEwMiAxMTZGIDExQzE7QjIzQTsxMTAyIDExNkYgMTFDMTsgIyAo64i6OyDriLo7IOGEguGFr+GHgTsg64i6OyDhhILhha/hh4E7ICkgSEFOR1VMIFNZTExBQkxFIE5XRU9QCitCMjNCO0IyM0I7MTEwMiAxMTZGIDExQzI7QjIzQjsxMTAyIDExNkYgMTFDMjsgIyAo64i7OyDriLs7IOGEguGFr+GHgjsg64i7OyDhhILhha/hh4I7ICkgSEFOR1VMIFNZTExBQkxFIE5XRU9ICitCMjNDO0IyM0M7MTEwMiAxMTcwO0IyM0M7MTEwMiAxMTcwOyAjICjriLw7IOuIvDsg4YSC4YWwOyDriLw7IOGEguGFsDsgKSBIQU5HVUwgU1lMTEFCTEUgTldFCitCMjNEO0IyM0Q7MTEwMiAxMTcwIDExQTg7QjIzRDsxMTAyIDExNzAgMTFBODsgIyAo64i9OyDriL07IOGEguGFsOGGqDsg64i9OyDhhILhhbDhhqg7ICkgSEFOR1VMIFNZTExBQkxFIE5XRUcKK0IyM0U7QjIzRTsxMTAyIDExNzAgMTFBOTtCMjNFOzExMDIgMTE3MCAxMUE5OyAjICjriL47IOuIvjsg4YSC4YWw4YapOyDriL47IOGEguGFsOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgTldFR0cKK0IyM0Y7QjIzRjsxMTAyIDExNzAgMTFBQTtCMjNGOzExMDIgMTE3MCAxMUFBOyAjICjriL87IOuIvzsg4YSC4YWw4YaqOyDriL87IOGEguGFsOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgTldFR1MKK0IyNDA7QjI0MDsxMTAyIDExNzAgMTFBQjtCMjQwOzExMDIgMTE3MCAxMUFCOyAjICjriYA7IOuJgDsg4YSC4YWw4YarOyDriYA7IOGEguGFsOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgTldFTgorQjI0MTtCMjQxOzExMDIgMTE3MCAxMUFDO0IyNDE7MTEwMiAxMTcwIDExQUM7ICMgKOuJgTsg64mBOyDhhILhhbDhhqw7IOuJgTsg4YSC4YWw4YasOyApIEhBTkdVTCBTWUxMQUJMRSBOV0VOSgorQjI0MjtCMjQyOzExMDIgMTE3MCAxMUFEO0IyNDI7MTEwMiAxMTcwIDExQUQ7ICMgKOuJgjsg64mCOyDhhILhhbDhhq07IOuJgjsg4YSC4YWw4YatOyApIEhBTkdVTCBTWUxMQUJMRSBOV0VOSAorQjI0MztCMjQzOzExMDIgMTE3MCAxMUFFO0IyNDM7MTEwMiAxMTcwIDExQUU7ICMgKOuJgzsg64mDOyDhhILhhbDhhq47IOuJgzsg4YSC4YWw4YauOyApIEhBTkdVTCBTWUxMQUJMRSBOV0VECitCMjQ0O0IyNDQ7MTEwMiAxMTcwIDExQUY7QjI0NDsxMTAyIDExNzAgMTFBRjsgIyAo64mEOyDriYQ7IOGEguGFsOGGrzsg64mEOyDhhILhhbDhhq87ICkgSEFOR1VMIFNZTExBQkxFIE5XRUwKK0IyNDU7QjI0NTsxMTAyIDExNzAgMTFCMDtCMjQ1OzExMDIgMTE3MCAxMUIwOyAjICjriYU7IOuJhTsg4YSC4YWw4YawOyDriYU7IOGEguGFsOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgTldFTEcKK0IyNDY7QjI0NjsxMTAyIDExNzAgMTFCMTtCMjQ2OzExMDIgMTE3MCAxMUIxOyAjICjriYY7IOuJhjsg4YSC4YWw4YaxOyDriYY7IOGEguGFsOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgTldFTE0KK0IyNDc7QjI0NzsxMTAyIDExNzAgMTFCMjtCMjQ3OzExMDIgMTE3MCAxMUIyOyAjICjriYc7IOuJhzsg4YSC4YWw4YayOyDriYc7IOGEguGFsOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgTldFTEIKK0IyNDg7QjI0ODsxMTAyIDExNzAgMTFCMztCMjQ4OzExMDIgMTE3MCAxMUIzOyAjICjriYg7IOuJiDsg4YSC4YWw4YazOyDriYg7IOGEguGFsOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgTldFTFMKK0IyNDk7QjI0OTsxMTAyIDExNzAgMTFCNDtCMjQ5OzExMDIgMTE3MCAxMUI0OyAjICjriYk7IOuJiTsg4YSC4YWw4Ya0OyDriYk7IOGEguGFsOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgTldFTFQKK0IyNEE7QjI0QTsxMTAyIDExNzAgMTFCNTtCMjRBOzExMDIgMTE3MCAxMUI1OyAjICjriYo7IOuJijsg4YSC4YWw4Ya1OyDriYo7IOGEguGFsOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgTldFTFAKK0IyNEI7QjI0QjsxMTAyIDExNzAgMTFCNjtCMjRCOzExMDIgMTE3MCAxMUI2OyAjICjriYs7IOuJizsg4YSC4YWw4Ya2OyDriYs7IOGEguGFsOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgTldFTEgKK0IyNEM7QjI0QzsxMTAyIDExNzAgMTFCNztCMjRDOzExMDIgMTE3MCAxMUI3OyAjICjriYw7IOuJjDsg4YSC4YWw4Ya3OyDriYw7IOGEguGFsOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgTldFTQorQjI0RDtCMjREOzExMDIgMTE3MCAxMUI4O0IyNEQ7MTEwMiAxMTcwIDExQjg7ICMgKOuJjTsg64mNOyDhhILhhbDhhrg7IOuJjTsg4YSC4YWw4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBOV0VCCitCMjRFO0IyNEU7MTEwMiAxMTcwIDExQjk7QjI0RTsxMTAyIDExNzAgMTFCOTsgIyAo64mOOyDriY47IOGEguGFsOGGuTsg64mOOyDhhILhhbDhhrk7ICkgSEFOR1VMIFNZTExBQkxFIE5XRUJTCitCMjRGO0IyNEY7MTEwMiAxMTcwIDExQkE7QjI0RjsxMTAyIDExNzAgMTFCQTsgIyAo64mPOyDriY87IOGEguGFsOGGujsg64mPOyDhhILhhbDhhro7ICkgSEFOR1VMIFNZTExBQkxFIE5XRVMKK0IyNTA7QjI1MDsxMTAyIDExNzAgMTFCQjtCMjUwOzExMDIgMTE3MCAxMUJCOyAjICjriZA7IOuJkDsg4YSC4YWw4Ya7OyDriZA7IOGEguGFsOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgTldFU1MKK0IyNTE7QjI1MTsxMTAyIDExNzAgMTFCQztCMjUxOzExMDIgMTE3MCAxMUJDOyAjICjriZE7IOuJkTsg4YSC4YWw4Ya8OyDriZE7IOGEguGFsOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgTldFTkcKK0IyNTI7QjI1MjsxMTAyIDExNzAgMTFCRDtCMjUyOzExMDIgMTE3MCAxMUJEOyAjICjriZI7IOuJkjsg4YSC4YWw4Ya9OyDriZI7IOGEguGFsOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgTldFSgorQjI1MztCMjUzOzExMDIgMTE3MCAxMUJFO0IyNTM7MTEwMiAxMTcwIDExQkU7ICMgKOuJkzsg64mTOyDhhILhhbDhhr47IOuJkzsg4YSC4YWw4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBOV0VDCitCMjU0O0IyNTQ7MTEwMiAxMTcwIDExQkY7QjI1NDsxMTAyIDExNzAgMTFCRjsgIyAo64mUOyDriZQ7IOGEguGFsOGGvzsg64mUOyDhhILhhbDhhr87ICkgSEFOR1VMIFNZTExBQkxFIE5XRUsKK0IyNTU7QjI1NTsxMTAyIDExNzAgMTFDMDtCMjU1OzExMDIgMTE3MCAxMUMwOyAjICjriZU7IOuJlTsg4YSC4YWw4YeAOyDriZU7IOGEguGFsOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgTldFVAorQjI1NjtCMjU2OzExMDIgMTE3MCAxMUMxO0IyNTY7MTEwMiAxMTcwIDExQzE7ICMgKOuJljsg64mWOyDhhILhhbDhh4E7IOuJljsg4YSC4YWw4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBOV0VQCitCMjU3O0IyNTc7MTEwMiAxMTcwIDExQzI7QjI1NzsxMTAyIDExNzAgMTFDMjsgIyAo64mXOyDriZc7IOGEguGFsOGHgjsg64mXOyDhhILhhbDhh4I7ICkgSEFOR1VMIFNZTExBQkxFIE5XRUgKK0IyNTg7QjI1ODsxMTAyIDExNzE7QjI1ODsxMTAyIDExNzE7ICMgKOuJmDsg64mYOyDhhILhhbE7IOuJmDsg4YSC4YWxOyApIEhBTkdVTCBTWUxMQUJMRSBOV0kKK0IyNTk7QjI1OTsxMTAyIDExNzEgMTFBODtCMjU5OzExMDIgMTE3MSAxMUE4OyAjICjriZk7IOuJmTsg4YSC4YWx4YaoOyDriZk7IOGEguGFseGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgTldJRworQjI1QTtCMjVBOzExMDIgMTE3MSAxMUE5O0IyNUE7MTEwMiAxMTcxIDExQTk7ICMgKOuJmjsg64maOyDhhILhhbHhhqk7IOuJmjsg4YSC4YWx4YapOyApIEhBTkdVTCBTWUxMQUJMRSBOV0lHRworQjI1QjtCMjVCOzExMDIgMTE3MSAxMUFBO0IyNUI7MTEwMiAxMTcxIDExQUE7ICMgKOuJmzsg64mbOyDhhILhhbHhhqo7IOuJmzsg4YSC4YWx4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBOV0lHUworQjI1QztCMjVDOzExMDIgMTE3MSAxMUFCO0IyNUM7MTEwMiAxMTcxIDExQUI7ICMgKOuJnDsg64mcOyDhhILhhbHhhqs7IOuJnDsg4YSC4YWx4YarOyApIEhBTkdVTCBTWUxMQUJMRSBOV0lOCitCMjVEO0IyNUQ7MTEwMiAxMTcxIDExQUM7QjI1RDsxMTAyIDExNzEgMTFBQzsgIyAo64mdOyDriZ07IOGEguGFseGGrDsg64mdOyDhhILhhbHhhqw7ICkgSEFOR1VMIFNZTExBQkxFIE5XSU5KCitCMjVFO0IyNUU7MTEwMiAxMTcxIDExQUQ7QjI1RTsxMTAyIDExNzEgMTFBRDsgIyAo64meOyDriZ47IOGEguGFseGGrTsg64meOyDhhILhhbHhhq07ICkgSEFOR1VMIFNZTExBQkxFIE5XSU5ICitCMjVGO0IyNUY7MTEwMiAxMTcxIDExQUU7QjI1RjsxMTAyIDExNzEgMTFBRTsgIyAo64mfOyDriZ87IOGEguGFseGGrjsg64mfOyDhhILhhbHhhq47ICkgSEFOR1VMIFNZTExBQkxFIE5XSUQKK0IyNjA7QjI2MDsxMTAyIDExNzEgMTFBRjtCMjYwOzExMDIgMTE3MSAxMUFGOyAjICjriaA7IOuJoDsg4YSC4YWx4YavOyDriaA7IOGEguGFseGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgTldJTAorQjI2MTtCMjYxOzExMDIgMTE3MSAxMUIwO0IyNjE7MTEwMiAxMTcxIDExQjA7ICMgKOuJoTsg64mhOyDhhILhhbHhhrA7IOuJoTsg4YSC4YWx4YawOyApIEhBTkdVTCBTWUxMQUJMRSBOV0lMRworQjI2MjtCMjYyOzExMDIgMTE3MSAxMUIxO0IyNjI7MTEwMiAxMTcxIDExQjE7ICMgKOuJojsg64miOyDhhILhhbHhhrE7IOuJojsg4YSC4YWx4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBOV0lMTQorQjI2MztCMjYzOzExMDIgMTE3MSAxMUIyO0IyNjM7MTEwMiAxMTcxIDExQjI7ICMgKOuJozsg64mjOyDhhILhhbHhhrI7IOuJozsg4YSC4YWx4YayOyApIEhBTkdVTCBTWUxMQUJMRSBOV0lMQgorQjI2NDtCMjY0OzExMDIgMTE3MSAxMUIzO0IyNjQ7MTEwMiAxMTcxIDExQjM7ICMgKOuJpDsg64mkOyDhhILhhbHhhrM7IOuJpDsg4YSC4YWx4YazOyApIEhBTkdVTCBTWUxMQUJMRSBOV0lMUworQjI2NTtCMjY1OzExMDIgMTE3MSAxMUI0O0IyNjU7MTEwMiAxMTcxIDExQjQ7ICMgKOuJpTsg64mlOyDhhILhhbHhhrQ7IOuJpTsg4YSC4YWx4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBOV0lMVAorQjI2NjtCMjY2OzExMDIgMTE3MSAxMUI1O0IyNjY7MTEwMiAxMTcxIDExQjU7ICMgKOuJpjsg64mmOyDhhILhhbHhhrU7IOuJpjsg4YSC4YWx4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBOV0lMUAorQjI2NztCMjY3OzExMDIgMTE3MSAxMUI2O0IyNjc7MTEwMiAxMTcxIDExQjY7ICMgKOuJpzsg64mnOyDhhILhhbHhhrY7IOuJpzsg4YSC4YWx4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBOV0lMSAorQjI2ODtCMjY4OzExMDIgMTE3MSAxMUI3O0IyNjg7MTEwMiAxMTcxIDExQjc7ICMgKOuJqDsg64moOyDhhILhhbHhhrc7IOuJqDsg4YSC4YWx4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBOV0lNCitCMjY5O0IyNjk7MTEwMiAxMTcxIDExQjg7QjI2OTsxMTAyIDExNzEgMTFCODsgIyAo64mpOyDriak7IOGEguGFseGGuDsg64mpOyDhhILhhbHhhrg7ICkgSEFOR1VMIFNZTExBQkxFIE5XSUIKK0IyNkE7QjI2QTsxMTAyIDExNzEgMTFCOTtCMjZBOzExMDIgMTE3MSAxMUI5OyAjICjriao7IOuJqjsg4YSC4YWx4Ya5OyDriao7IOGEguGFseGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgTldJQlMKK0IyNkI7QjI2QjsxMTAyIDExNzEgMTFCQTtCMjZCOzExMDIgMTE3MSAxMUJBOyAjICjrias7IOuJqzsg4YSC4YWx4Ya6OyDrias7IOGEguGFseGGujsgKSBIQU5HVUwgU1lMTEFCTEUgTldJUworQjI2QztCMjZDOzExMDIgMTE3MSAxMUJCO0IyNkM7MTEwMiAxMTcxIDExQkI7ICMgKOuJrDsg64msOyDhhILhhbHhhrs7IOuJrDsg4YSC4YWx4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBOV0lTUworQjI2RDtCMjZEOzExMDIgMTE3MSAxMUJDO0IyNkQ7MTEwMiAxMTcxIDExQkM7ICMgKOuJrTsg64mtOyDhhILhhbHhhrw7IOuJrTsg4YSC4YWx4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBOV0lORworQjI2RTtCMjZFOzExMDIgMTE3MSAxMUJEO0IyNkU7MTEwMiAxMTcxIDExQkQ7ICMgKOuJrjsg64muOyDhhILhhbHhhr07IOuJrjsg4YSC4YWx4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBOV0lKCitCMjZGO0IyNkY7MTEwMiAxMTcxIDExQkU7QjI2RjsxMTAyIDExNzEgMTFCRTsgIyAo64mvOyDria87IOGEguGFseGGvjsg64mvOyDhhILhhbHhhr47ICkgSEFOR1VMIFNZTExBQkxFIE5XSUMKK0IyNzA7QjI3MDsxMTAyIDExNzEgMTFCRjtCMjcwOzExMDIgMTE3MSAxMUJGOyAjICjribA7IOuJsDsg4YSC4YWx4Ya/OyDribA7IOGEguGFseGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgTldJSworQjI3MTtCMjcxOzExMDIgMTE3MSAxMUMwO0IyNzE7MTEwMiAxMTcxIDExQzA7ICMgKOuJsTsg64mxOyDhhILhhbHhh4A7IOuJsTsg4YSC4YWx4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBOV0lUCitCMjcyO0IyNzI7MTEwMiAxMTcxIDExQzE7QjI3MjsxMTAyIDExNzEgMTFDMTsgIyAo64myOyDribI7IOGEguGFseGHgTsg64myOyDhhILhhbHhh4E7ICkgSEFOR1VMIFNZTExBQkxFIE5XSVAKK0IyNzM7QjI3MzsxMTAyIDExNzEgMTFDMjtCMjczOzExMDIgMTE3MSAxMUMyOyAjICjribM7IOuJszsg4YSC4YWx4YeCOyDribM7IOGEguGFseGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgTldJSAorQjI3NDtCMjc0OzExMDIgMTE3MjtCMjc0OzExMDIgMTE3MjsgIyAo64m0OyDribQ7IOGEguGFsjsg64m0OyDhhILhhbI7ICkgSEFOR1VMIFNZTExBQkxFIE5ZVQorQjI3NTtCMjc1OzExMDIgMTE3MiAxMUE4O0IyNzU7MTEwMiAxMTcyIDExQTg7ICMgKOuJtTsg64m1OyDhhILhhbLhhqg7IOuJtTsg4YSC4YWy4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBOWVVHCitCMjc2O0IyNzY7MTEwMiAxMTcyIDExQTk7QjI3NjsxMTAyIDExNzIgMTFBOTsgIyAo64m2OyDribY7IOGEguGFsuGGqTsg64m2OyDhhILhhbLhhqk7ICkgSEFOR1VMIFNZTExBQkxFIE5ZVUdHCitCMjc3O0IyNzc7MTEwMiAxMTcyIDExQUE7QjI3NzsxMTAyIDExNzIgMTFBQTsgIyAo64m3OyDribc7IOGEguGFsuGGqjsg64m3OyDhhILhhbLhhqo7ICkgSEFOR1VMIFNZTExBQkxFIE5ZVUdTCitCMjc4O0IyNzg7MTEwMiAxMTcyIDExQUI7QjI3ODsxMTAyIDExNzIgMTFBQjsgIyAo64m4OyDribg7IOGEguGFsuGGqzsg64m4OyDhhILhhbLhhqs7ICkgSEFOR1VMIFNZTExBQkxFIE5ZVU4KK0IyNzk7QjI3OTsxMTAyIDExNzIgMTFBQztCMjc5OzExMDIgMTE3MiAxMUFDOyAjICjribk7IOuJuTsg4YSC4YWy4YasOyDribk7IOGEguGFsuGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgTllVTkoKK0IyN0E7QjI3QTsxMTAyIDExNzIgMTFBRDtCMjdBOzExMDIgMTE3MiAxMUFEOyAjICjribo7IOuJujsg4YSC4YWy4YatOyDribo7IOGEguGFsuGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgTllVTkgKK0IyN0I7QjI3QjsxMTAyIDExNzIgMTFBRTtCMjdCOzExMDIgMTE3MiAxMUFFOyAjICjribs7IOuJuzsg4YSC4YWy4YauOyDribs7IOGEguGFsuGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgTllVRAorQjI3QztCMjdDOzExMDIgMTE3MiAxMUFGO0IyN0M7MTEwMiAxMTcyIDExQUY7ICMgKOuJvDsg64m8OyDhhILhhbLhhq87IOuJvDsg4YSC4YWy4YavOyApIEhBTkdVTCBTWUxMQUJMRSBOWVVMCitCMjdEO0IyN0Q7MTEwMiAxMTcyIDExQjA7QjI3RDsxMTAyIDExNzIgMTFCMDsgIyAo64m9OyDrib07IOGEguGFsuGGsDsg64m9OyDhhILhhbLhhrA7ICkgSEFOR1VMIFNZTExBQkxFIE5ZVUxHCitCMjdFO0IyN0U7MTEwMiAxMTcyIDExQjE7QjI3RTsxMTAyIDExNzIgMTFCMTsgIyAo64m+OyDrib47IOGEguGFsuGGsTsg64m+OyDhhILhhbLhhrE7ICkgSEFOR1VMIFNZTExBQkxFIE5ZVUxNCitCMjdGO0IyN0Y7MTEwMiAxMTcyIDExQjI7QjI3RjsxMTAyIDExNzIgMTFCMjsgIyAo64m/OyDrib87IOGEguGFsuGGsjsg64m/OyDhhILhhbLhhrI7ICkgSEFOR1VMIFNZTExBQkxFIE5ZVUxCCitCMjgwO0IyODA7MTEwMiAxMTcyIDExQjM7QjI4MDsxMTAyIDExNzIgMTFCMzsgIyAo64qAOyDrioA7IOGEguGFsuGGszsg64qAOyDhhILhhbLhhrM7ICkgSEFOR1VMIFNZTExBQkxFIE5ZVUxTCitCMjgxO0IyODE7MTEwMiAxMTcyIDExQjQ7QjI4MTsxMTAyIDExNzIgMTFCNDsgIyAo64qBOyDrioE7IOGEguGFsuGGtDsg64qBOyDhhILhhbLhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIE5ZVUxUCitCMjgyO0IyODI7MTEwMiAxMTcyIDExQjU7QjI4MjsxMTAyIDExNzIgMTFCNTsgIyAo64qCOyDrioI7IOGEguGFsuGGtTsg64qCOyDhhILhhbLhhrU7ICkgSEFOR1VMIFNZTExBQkxFIE5ZVUxQCitCMjgzO0IyODM7MTEwMiAxMTcyIDExQjY7QjI4MzsxMTAyIDExNzIgMTFCNjsgIyAo64qDOyDrioM7IOGEguGFsuGGtjsg64qDOyDhhILhhbLhhrY7ICkgSEFOR1VMIFNZTExBQkxFIE5ZVUxICitCMjg0O0IyODQ7MTEwMiAxMTcyIDExQjc7QjI4NDsxMTAyIDExNzIgMTFCNzsgIyAo64qEOyDrioQ7IOGEguGFsuGGtzsg64qEOyDhhILhhbLhhrc7ICkgSEFOR1VMIFNZTExBQkxFIE5ZVU0KK0IyODU7QjI4NTsxMTAyIDExNzIgMTFCODtCMjg1OzExMDIgMTE3MiAxMUI4OyAjICjrioU7IOuKhTsg4YSC4YWy4Ya4OyDrioU7IOGEguGFsuGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgTllVQgorQjI4NjtCMjg2OzExMDIgMTE3MiAxMUI5O0IyODY7MTEwMiAxMTcyIDExQjk7ICMgKOuKhjsg64qGOyDhhILhhbLhhrk7IOuKhjsg4YSC4YWy4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBOWVVCUworQjI4NztCMjg3OzExMDIgMTE3MiAxMUJBO0IyODc7MTEwMiAxMTcyIDExQkE7ICMgKOuKhzsg64qHOyDhhILhhbLhhro7IOuKhzsg4YSC4YWy4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBOWVVTCitCMjg4O0IyODg7MTEwMiAxMTcyIDExQkI7QjI4ODsxMTAyIDExNzIgMTFCQjsgIyAo64qIOyDriog7IOGEguGFsuGGuzsg64qIOyDhhILhhbLhhrs7ICkgSEFOR1VMIFNZTExBQkxFIE5ZVVNTCitCMjg5O0IyODk7MTEwMiAxMTcyIDExQkM7QjI4OTsxMTAyIDExNzIgMTFCQzsgIyAo64qJOyDriok7IOGEguGFsuGGvDsg64qJOyDhhILhhbLhhrw7ICkgSEFOR1VMIFNZTExBQkxFIE5ZVU5HCitCMjhBO0IyOEE7MTEwMiAxMTcyIDExQkQ7QjI4QTsxMTAyIDExNzIgMTFCRDsgIyAo64qKOyDrioo7IOGEguGFsuGGvTsg64qKOyDhhILhhbLhhr07ICkgSEFOR1VMIFNZTExBQkxFIE5ZVUoKK0IyOEI7QjI4QjsxMTAyIDExNzIgMTFCRTtCMjhCOzExMDIgMTE3MiAxMUJFOyAjICjrios7IOuKizsg4YSC4YWy4Ya+OyDrios7IOGEguGFsuGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgTllVQworQjI4QztCMjhDOzExMDIgMTE3MiAxMUJGO0IyOEM7MTEwMiAxMTcyIDExQkY7ICMgKOuKjDsg64qMOyDhhILhhbLhhr87IOuKjDsg4YSC4YWy4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBOWVVLCitCMjhEO0IyOEQ7MTEwMiAxMTcyIDExQzA7QjI4RDsxMTAyIDExNzIgMTFDMDsgIyAo64qNOyDrio07IOGEguGFsuGHgDsg64qNOyDhhILhhbLhh4A7ICkgSEFOR1VMIFNZTExBQkxFIE5ZVVQKK0IyOEU7QjI4RTsxMTAyIDExNzIgMTFDMTtCMjhFOzExMDIgMTE3MiAxMUMxOyAjICjrio47IOuKjjsg4YSC4YWy4YeBOyDrio47IOGEguGFsuGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgTllVUAorQjI4RjtCMjhGOzExMDIgMTE3MiAxMUMyO0IyOEY7MTEwMiAxMTcyIDExQzI7ICMgKOuKjzsg64qPOyDhhILhhbLhh4I7IOuKjzsg4YSC4YWy4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBOWVVICitCMjkwO0IyOTA7MTEwMiAxMTczO0IyOTA7MTEwMiAxMTczOyAjICjripA7IOuKkDsg4YSC4YWzOyDripA7IOGEguGFszsgKSBIQU5HVUwgU1lMTEFCTEUgTkVVCitCMjkxO0IyOTE7MTEwMiAxMTczIDExQTg7QjI5MTsxMTAyIDExNzMgMTFBODsgIyAo64qROyDripE7IOGEguGFs+GGqDsg64qROyDhhILhhbPhhqg7ICkgSEFOR1VMIFNZTExBQkxFIE5FVUcKK0IyOTI7QjI5MjsxMTAyIDExNzMgMTFBOTtCMjkyOzExMDIgMTE3MyAxMUE5OyAjICjripI7IOuKkjsg4YSC4YWz4YapOyDripI7IOGEguGFs+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgTkVVR0cKK0IyOTM7QjI5MzsxMTAyIDExNzMgMTFBQTtCMjkzOzExMDIgMTE3MyAxMUFBOyAjICjripM7IOuKkzsg4YSC4YWz4YaqOyDripM7IOGEguGFs+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgTkVVR1MKK0IyOTQ7QjI5NDsxMTAyIDExNzMgMTFBQjtCMjk0OzExMDIgMTE3MyAxMUFCOyAjICjripQ7IOuKlDsg4YSC4YWz4YarOyDripQ7IOGEguGFs+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgTkVVTgorQjI5NTtCMjk1OzExMDIgMTE3MyAxMUFDO0IyOTU7MTEwMiAxMTczIDExQUM7ICMgKOuKlTsg64qVOyDhhILhhbPhhqw7IOuKlTsg4YSC4YWz4YasOyApIEhBTkdVTCBTWUxMQUJMRSBORVVOSgorQjI5NjtCMjk2OzExMDIgMTE3MyAxMUFEO0IyOTY7MTEwMiAxMTczIDExQUQ7ICMgKOuKljsg64qWOyDhhILhhbPhhq07IOuKljsg4YSC4YWz4YatOyApIEhBTkdVTCBTWUxMQUJMRSBORVVOSAorQjI5NztCMjk3OzExMDIgMTE3MyAxMUFFO0IyOTc7MTEwMiAxMTczIDExQUU7ICMgKOuKlzsg64qXOyDhhILhhbPhhq47IOuKlzsg4YSC4YWz4YauOyApIEhBTkdVTCBTWUxMQUJMRSBORVVECitCMjk4O0IyOTg7MTEwMiAxMTczIDExQUY7QjI5ODsxMTAyIDExNzMgMTFBRjsgIyAo64qYOyDripg7IOGEguGFs+GGrzsg64qYOyDhhILhhbPhhq87ICkgSEFOR1VMIFNZTExBQkxFIE5FVUwKK0IyOTk7QjI5OTsxMTAyIDExNzMgMTFCMDtCMjk5OzExMDIgMTE3MyAxMUIwOyAjICjripk7IOuKmTsg4YSC4YWz4YawOyDripk7IOGEguGFs+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgTkVVTEcKK0IyOUE7QjI5QTsxMTAyIDExNzMgMTFCMTtCMjlBOzExMDIgMTE3MyAxMUIxOyAjICjripo7IOuKmjsg4YSC4YWz4YaxOyDripo7IOGEguGFs+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgTkVVTE0KK0IyOUI7QjI5QjsxMTAyIDExNzMgMTFCMjtCMjlCOzExMDIgMTE3MyAxMUIyOyAjICjrips7IOuKmzsg4YSC4YWz4YayOyDrips7IOGEguGFs+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgTkVVTEIKK0IyOUM7QjI5QzsxMTAyIDExNzMgMTFCMztCMjlDOzExMDIgMTE3MyAxMUIzOyAjICjripw7IOuKnDsg4YSC4YWz4YazOyDripw7IOGEguGFs+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgTkVVTFMKK0IyOUQ7QjI5RDsxMTAyIDExNzMgMTFCNDtCMjlEOzExMDIgMTE3MyAxMUI0OyAjICjrip07IOuKnTsg4YSC4YWz4Ya0OyDrip07IOGEguGFs+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgTkVVTFQKK0IyOUU7QjI5RTsxMTAyIDExNzMgMTFCNTtCMjlFOzExMDIgMTE3MyAxMUI1OyAjICjrip47IOuKnjsg4YSC4YWz4Ya1OyDrip47IOGEguGFs+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgTkVVTFAKK0IyOUY7QjI5RjsxMTAyIDExNzMgMTFCNjtCMjlGOzExMDIgMTE3MyAxMUI2OyAjICjrip87IOuKnzsg4YSC4YWz4Ya2OyDrip87IOGEguGFs+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgTkVVTEgKK0IyQTA7QjJBMDsxMTAyIDExNzMgMTFCNztCMkEwOzExMDIgMTE3MyAxMUI3OyAjICjriqA7IOuKoDsg4YSC4YWz4Ya3OyDriqA7IOGEguGFs+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgTkVVTQorQjJBMTtCMkExOzExMDIgMTE3MyAxMUI4O0IyQTE7MTEwMiAxMTczIDExQjg7ICMgKOuKoTsg64qhOyDhhILhhbPhhrg7IOuKoTsg4YSC4YWz4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBORVVCCitCMkEyO0IyQTI7MTEwMiAxMTczIDExQjk7QjJBMjsxMTAyIDExNzMgMTFCOTsgIyAo64qiOyDriqI7IOGEguGFs+GGuTsg64qiOyDhhILhhbPhhrk7ICkgSEFOR1VMIFNZTExBQkxFIE5FVUJTCitCMkEzO0IyQTM7MTEwMiAxMTczIDExQkE7QjJBMzsxMTAyIDExNzMgMTFCQTsgIyAo64qjOyDriqM7IOGEguGFs+GGujsg64qjOyDhhILhhbPhhro7ICkgSEFOR1VMIFNZTExBQkxFIE5FVVMKK0IyQTQ7QjJBNDsxMTAyIDExNzMgMTFCQjtCMkE0OzExMDIgMTE3MyAxMUJCOyAjICjriqQ7IOuKpDsg4YSC4YWz4Ya7OyDriqQ7IOGEguGFs+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgTkVVU1MKK0IyQTU7QjJBNTsxMTAyIDExNzMgMTFCQztCMkE1OzExMDIgMTE3MyAxMUJDOyAjICjriqU7IOuKpTsg4YSC4YWz4Ya8OyDriqU7IOGEguGFs+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgTkVVTkcKK0IyQTY7QjJBNjsxMTAyIDExNzMgMTFCRDtCMkE2OzExMDIgMTE3MyAxMUJEOyAjICjriqY7IOuKpjsg4YSC4YWz4Ya9OyDriqY7IOGEguGFs+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgTkVVSgorQjJBNztCMkE3OzExMDIgMTE3MyAxMUJFO0IyQTc7MTEwMiAxMTczIDExQkU7ICMgKOuKpzsg64qnOyDhhILhhbPhhr47IOuKpzsg4YSC4YWz4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBORVVDCitCMkE4O0IyQTg7MTEwMiAxMTczIDExQkY7QjJBODsxMTAyIDExNzMgMTFCRjsgIyAo64qoOyDriqg7IOGEguGFs+GGvzsg64qoOyDhhILhhbPhhr87ICkgSEFOR1VMIFNZTExBQkxFIE5FVUsKK0IyQTk7QjJBOTsxMTAyIDExNzMgMTFDMDtCMkE5OzExMDIgMTE3MyAxMUMwOyAjICjriqk7IOuKqTsg4YSC4YWz4YeAOyDriqk7IOGEguGFs+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgTkVVVAorQjJBQTtCMkFBOzExMDIgMTE3MyAxMUMxO0IyQUE7MTEwMiAxMTczIDExQzE7ICMgKOuKqjsg64qqOyDhhILhhbPhh4E7IOuKqjsg4YSC4YWz4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBORVVQCitCMkFCO0IyQUI7MTEwMiAxMTczIDExQzI7QjJBQjsxMTAyIDExNzMgMTFDMjsgIyAo64qrOyDriqs7IOGEguGFs+GHgjsg64qrOyDhhILhhbPhh4I7ICkgSEFOR1VMIFNZTExBQkxFIE5FVUgKK0IyQUM7QjJBQzsxMTAyIDExNzQ7QjJBQzsxMTAyIDExNzQ7ICMgKOuKrDsg64qsOyDhhILhhbQ7IOuKrDsg4YSC4YW0OyApIEhBTkdVTCBTWUxMQUJMRSBOWUkKK0IyQUQ7QjJBRDsxMTAyIDExNzQgMTFBODtCMkFEOzExMDIgMTE3NCAxMUE4OyAjICjriq07IOuKrTsg4YSC4YW04YaoOyDriq07IOGEguGFtOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgTllJRworQjJBRTtCMkFFOzExMDIgMTE3NCAxMUE5O0IyQUU7MTEwMiAxMTc0IDExQTk7ICMgKOuKrjsg64quOyDhhILhhbThhqk7IOuKrjsg4YSC4YW04YapOyApIEhBTkdVTCBTWUxMQUJMRSBOWUlHRworQjJBRjtCMkFGOzExMDIgMTE3NCAxMUFBO0IyQUY7MTEwMiAxMTc0IDExQUE7ICMgKOuKrzsg64qvOyDhhILhhbThhqo7IOuKrzsg4YSC4YW04YaqOyApIEhBTkdVTCBTWUxMQUJMRSBOWUlHUworQjJCMDtCMkIwOzExMDIgMTE3NCAxMUFCO0IyQjA7MTEwMiAxMTc0IDExQUI7ICMgKOuKsDsg64qwOyDhhILhhbThhqs7IOuKsDsg4YSC4YW04YarOyApIEhBTkdVTCBTWUxMQUJMRSBOWUlOCitCMkIxO0IyQjE7MTEwMiAxMTc0IDExQUM7QjJCMTsxMTAyIDExNzQgMTFBQzsgIyAo64qxOyDrirE7IOGEguGFtOGGrDsg64qxOyDhhILhhbThhqw7ICkgSEFOR1VMIFNZTExBQkxFIE5ZSU5KCitCMkIyO0IyQjI7MTEwMiAxMTc0IDExQUQ7QjJCMjsxMTAyIDExNzQgMTFBRDsgIyAo64qyOyDrirI7IOGEguGFtOGGrTsg64qyOyDhhILhhbThhq07ICkgSEFOR1VMIFNZTExBQkxFIE5ZSU5ICitCMkIzO0IyQjM7MTEwMiAxMTc0IDExQUU7QjJCMzsxMTAyIDExNzQgMTFBRTsgIyAo64qzOyDrirM7IOGEguGFtOGGrjsg64qzOyDhhILhhbThhq47ICkgSEFOR1VMIFNZTExBQkxFIE5ZSUQKK0IyQjQ7QjJCNDsxMTAyIDExNzQgMTFBRjtCMkI0OzExMDIgMTE3NCAxMUFGOyAjICjrirQ7IOuKtDsg4YSC4YW04YavOyDrirQ7IOGEguGFtOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgTllJTAorQjJCNTtCMkI1OzExMDIgMTE3NCAxMUIwO0IyQjU7MTEwMiAxMTc0IDExQjA7ICMgKOuKtTsg64q1OyDhhILhhbThhrA7IOuKtTsg4YSC4YW04YawOyApIEhBTkdVTCBTWUxMQUJMRSBOWUlMRworQjJCNjtCMkI2OzExMDIgMTE3NCAxMUIxO0IyQjY7MTEwMiAxMTc0IDExQjE7ICMgKOuKtjsg64q2OyDhhILhhbThhrE7IOuKtjsg4YSC4YW04YaxOyApIEhBTkdVTCBTWUxMQUJMRSBOWUlMTQorQjJCNztCMkI3OzExMDIgMTE3NCAxMUIyO0IyQjc7MTEwMiAxMTc0IDExQjI7ICMgKOuKtzsg64q3OyDhhILhhbThhrI7IOuKtzsg4YSC4YW04YayOyApIEhBTkdVTCBTWUxMQUJMRSBOWUlMQgorQjJCODtCMkI4OzExMDIgMTE3NCAxMUIzO0IyQjg7MTEwMiAxMTc0IDExQjM7ICMgKOuKuDsg64q4OyDhhILhhbThhrM7IOuKuDsg4YSC4YW04YazOyApIEhBTkdVTCBTWUxMQUJMRSBOWUlMUworQjJCOTtCMkI5OzExMDIgMTE3NCAxMUI0O0IyQjk7MTEwMiAxMTc0IDExQjQ7ICMgKOuKuTsg64q5OyDhhILhhbThhrQ7IOuKuTsg4YSC4YW04Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBOWUlMVAorQjJCQTtCMkJBOzExMDIgMTE3NCAxMUI1O0IyQkE7MTEwMiAxMTc0IDExQjU7ICMgKOuKujsg64q6OyDhhILhhbThhrU7IOuKujsg4YSC4YW04Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBOWUlMUAorQjJCQjtCMkJCOzExMDIgMTE3NCAxMUI2O0IyQkI7MTEwMiAxMTc0IDExQjY7ICMgKOuKuzsg64q7OyDhhILhhbThhrY7IOuKuzsg4YSC4YW04Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBOWUlMSAorQjJCQztCMkJDOzExMDIgMTE3NCAxMUI3O0IyQkM7MTEwMiAxMTc0IDExQjc7ICMgKOuKvDsg64q8OyDhhILhhbThhrc7IOuKvDsg4YSC4YW04Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBOWUlNCitCMkJEO0IyQkQ7MTEwMiAxMTc0IDExQjg7QjJCRDsxMTAyIDExNzQgMTFCODsgIyAo64q9OyDrir07IOGEguGFtOGGuDsg64q9OyDhhILhhbThhrg7ICkgSEFOR1VMIFNZTExBQkxFIE5ZSUIKK0IyQkU7QjJCRTsxMTAyIDExNzQgMTFCOTtCMkJFOzExMDIgMTE3NCAxMUI5OyAjICjrir47IOuKvjsg4YSC4YW04Ya5OyDrir47IOGEguGFtOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgTllJQlMKK0IyQkY7QjJCRjsxMTAyIDExNzQgMTFCQTtCMkJGOzExMDIgMTE3NCAxMUJBOyAjICjrir87IOuKvzsg4YSC4YW04Ya6OyDrir87IOGEguGFtOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgTllJUworQjJDMDtCMkMwOzExMDIgMTE3NCAxMUJCO0IyQzA7MTEwMiAxMTc0IDExQkI7ICMgKOuLgDsg64uAOyDhhILhhbThhrs7IOuLgDsg4YSC4YW04Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBOWUlTUworQjJDMTtCMkMxOzExMDIgMTE3NCAxMUJDO0IyQzE7MTEwMiAxMTc0IDExQkM7ICMgKOuLgTsg64uBOyDhhILhhbThhrw7IOuLgTsg4YSC4YW04Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBOWUlORworQjJDMjtCMkMyOzExMDIgMTE3NCAxMUJEO0IyQzI7MTEwMiAxMTc0IDExQkQ7ICMgKOuLgjsg64uCOyDhhILhhbThhr07IOuLgjsg4YSC4YW04Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBOWUlKCitCMkMzO0IyQzM7MTEwMiAxMTc0IDExQkU7QjJDMzsxMTAyIDExNzQgMTFCRTsgIyAo64uDOyDri4M7IOGEguGFtOGGvjsg64uDOyDhhILhhbThhr47ICkgSEFOR1VMIFNZTExBQkxFIE5ZSUMKK0IyQzQ7QjJDNDsxMTAyIDExNzQgMTFCRjtCMkM0OzExMDIgMTE3NCAxMUJGOyAjICjri4Q7IOuLhDsg4YSC4YW04Ya/OyDri4Q7IOGEguGFtOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgTllJSworQjJDNTtCMkM1OzExMDIgMTE3NCAxMUMwO0IyQzU7MTEwMiAxMTc0IDExQzA7ICMgKOuLhTsg64uFOyDhhILhhbThh4A7IOuLhTsg4YSC4YW04YeAOyApIEhBTkdVTCBTWUxMQUJMRSBOWUlUCitCMkM2O0IyQzY7MTEwMiAxMTc0IDExQzE7QjJDNjsxMTAyIDExNzQgMTFDMTsgIyAo64uGOyDri4Y7IOGEguGFtOGHgTsg64uGOyDhhILhhbThh4E7ICkgSEFOR1VMIFNZTExBQkxFIE5ZSVAKK0IyQzc7QjJDNzsxMTAyIDExNzQgMTFDMjtCMkM3OzExMDIgMTE3NCAxMUMyOyAjICjri4c7IOuLhzsg4YSC4YW04YeCOyDri4c7IOGEguGFtOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgTllJSAorQjJDODtCMkM4OzExMDIgMTE3NTtCMkM4OzExMDIgMTE3NTsgIyAo64uIOyDri4g7IOGEguGFtTsg64uIOyDhhILhhbU7ICkgSEFOR1VMIFNZTExBQkxFIE5JCitCMkM5O0IyQzk7MTEwMiAxMTc1IDExQTg7QjJDOTsxMTAyIDExNzUgMTFBODsgIyAo64uJOyDri4k7IOGEguGFteGGqDsg64uJOyDhhILhhbXhhqg7ICkgSEFOR1VMIFNZTExBQkxFIE5JRworQjJDQTtCMkNBOzExMDIgMTE3NSAxMUE5O0IyQ0E7MTEwMiAxMTc1IDExQTk7ICMgKOuLijsg64uKOyDhhILhhbXhhqk7IOuLijsg4YSC4YW14YapOyApIEhBTkdVTCBTWUxMQUJMRSBOSUdHCitCMkNCO0IyQ0I7MTEwMiAxMTc1IDExQUE7QjJDQjsxMTAyIDExNzUgMTFBQTsgIyAo64uLOyDri4s7IOGEguGFteGGqjsg64uLOyDhhILhhbXhhqo7ICkgSEFOR1VMIFNZTExBQkxFIE5JR1MKK0IyQ0M7QjJDQzsxMTAyIDExNzUgMTFBQjtCMkNDOzExMDIgMTE3NSAxMUFCOyAjICjri4w7IOuLjDsg4YSC4YW14YarOyDri4w7IOGEguGFteGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgTklOCitCMkNEO0IyQ0Q7MTEwMiAxMTc1IDExQUM7QjJDRDsxMTAyIDExNzUgMTFBQzsgIyAo64uNOyDri407IOGEguGFteGGrDsg64uNOyDhhILhhbXhhqw7ICkgSEFOR1VMIFNZTExBQkxFIE5JTkoKK0IyQ0U7QjJDRTsxMTAyIDExNzUgMTFBRDtCMkNFOzExMDIgMTE3NSAxMUFEOyAjICjri447IOuLjjsg4YSC4YW14YatOyDri447IOGEguGFteGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgTklOSAorQjJDRjtCMkNGOzExMDIgMTE3NSAxMUFFO0IyQ0Y7MTEwMiAxMTc1IDExQUU7ICMgKOuLjzsg64uPOyDhhILhhbXhhq47IOuLjzsg4YSC4YW14YauOyApIEhBTkdVTCBTWUxMQUJMRSBOSUQKK0IyRDA7QjJEMDsxMTAyIDExNzUgMTFBRjtCMkQwOzExMDIgMTE3NSAxMUFGOyAjICjri5A7IOuLkDsg4YSC4YW14YavOyDri5A7IOGEguGFteGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgTklMCitCMkQxO0IyRDE7MTEwMiAxMTc1IDExQjA7QjJEMTsxMTAyIDExNzUgMTFCMDsgIyAo64uROyDri5E7IOGEguGFteGGsDsg64uROyDhhILhhbXhhrA7ICkgSEFOR1VMIFNZTExBQkxFIE5JTEcKK0IyRDI7QjJEMjsxMTAyIDExNzUgMTFCMTtCMkQyOzExMDIgMTE3NSAxMUIxOyAjICjri5I7IOuLkjsg4YSC4YW14YaxOyDri5I7IOGEguGFteGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgTklMTQorQjJEMztCMkQzOzExMDIgMTE3NSAxMUIyO0IyRDM7MTEwMiAxMTc1IDExQjI7ICMgKOuLkzsg64uTOyDhhILhhbXhhrI7IOuLkzsg4YSC4YW14YayOyApIEhBTkdVTCBTWUxMQUJMRSBOSUxCCitCMkQ0O0IyRDQ7MTEwMiAxMTc1IDExQjM7QjJENDsxMTAyIDExNzUgMTFCMzsgIyAo64uUOyDri5Q7IOGEguGFteGGszsg64uUOyDhhILhhbXhhrM7ICkgSEFOR1VMIFNZTExBQkxFIE5JTFMKK0IyRDU7QjJENTsxMTAyIDExNzUgMTFCNDtCMkQ1OzExMDIgMTE3NSAxMUI0OyAjICjri5U7IOuLlTsg4YSC4YW14Ya0OyDri5U7IOGEguGFteGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgTklMVAorQjJENjtCMkQ2OzExMDIgMTE3NSAxMUI1O0IyRDY7MTEwMiAxMTc1IDExQjU7ICMgKOuLljsg64uWOyDhhILhhbXhhrU7IOuLljsg4YSC4YW14Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBOSUxQCitCMkQ3O0IyRDc7MTEwMiAxMTc1IDExQjY7QjJENzsxMTAyIDExNzUgMTFCNjsgIyAo64uXOyDri5c7IOGEguGFteGGtjsg64uXOyDhhILhhbXhhrY7ICkgSEFOR1VMIFNZTExBQkxFIE5JTEgKK0IyRDg7QjJEODsxMTAyIDExNzUgMTFCNztCMkQ4OzExMDIgMTE3NSAxMUI3OyAjICjri5g7IOuLmDsg4YSC4YW14Ya3OyDri5g7IOGEguGFteGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgTklNCitCMkQ5O0IyRDk7MTEwMiAxMTc1IDExQjg7QjJEOTsxMTAyIDExNzUgMTFCODsgIyAo64uZOyDri5k7IOGEguGFteGGuDsg64uZOyDhhILhhbXhhrg7ICkgSEFOR1VMIFNZTExBQkxFIE5JQgorQjJEQTtCMkRBOzExMDIgMTE3NSAxMUI5O0IyREE7MTEwMiAxMTc1IDExQjk7ICMgKOuLmjsg64uaOyDhhILhhbXhhrk7IOuLmjsg4YSC4YW14Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBOSUJTCitCMkRCO0IyREI7MTEwMiAxMTc1IDExQkE7QjJEQjsxMTAyIDExNzUgMTFCQTsgIyAo64ubOyDri5s7IOGEguGFteGGujsg64ubOyDhhILhhbXhhro7ICkgSEFOR1VMIFNZTExBQkxFIE5JUworQjJEQztCMkRDOzExMDIgMTE3NSAxMUJCO0IyREM7MTEwMiAxMTc1IDExQkI7ICMgKOuLnDsg64ucOyDhhILhhbXhhrs7IOuLnDsg4YSC4YW14Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBOSVNTCitCMkREO0IyREQ7MTEwMiAxMTc1IDExQkM7QjJERDsxMTAyIDExNzUgMTFCQzsgIyAo64udOyDri507IOGEguGFteGGvDsg64udOyDhhILhhbXhhrw7ICkgSEFOR1VMIFNZTExBQkxFIE5JTkcKK0IyREU7QjJERTsxMTAyIDExNzUgMTFCRDtCMkRFOzExMDIgMTE3NSAxMUJEOyAjICjri547IOuLnjsg4YSC4YW14Ya9OyDri547IOGEguGFteGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgTklKCitCMkRGO0IyREY7MTEwMiAxMTc1IDExQkU7QjJERjsxMTAyIDExNzUgMTFCRTsgIyAo64ufOyDri587IOGEguGFteGGvjsg64ufOyDhhILhhbXhhr47ICkgSEFOR1VMIFNZTExBQkxFIE5JQworQjJFMDtCMkUwOzExMDIgMTE3NSAxMUJGO0IyRTA7MTEwMiAxMTc1IDExQkY7ICMgKOuLoDsg64ugOyDhhILhhbXhhr87IOuLoDsg4YSC4YW14Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBOSUsKK0IyRTE7QjJFMTsxMTAyIDExNzUgMTFDMDtCMkUxOzExMDIgMTE3NSAxMUMwOyAjICjri6E7IOuLoTsg4YSC4YW14YeAOyDri6E7IOGEguGFteGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgTklUCitCMkUyO0IyRTI7MTEwMiAxMTc1IDExQzE7QjJFMjsxMTAyIDExNzUgMTFDMTsgIyAo64uiOyDri6I7IOGEguGFteGHgTsg64uiOyDhhILhhbXhh4E7ICkgSEFOR1VMIFNZTExBQkxFIE5JUAorQjJFMztCMkUzOzExMDIgMTE3NSAxMUMyO0IyRTM7MTEwMiAxMTc1IDExQzI7ICMgKOuLozsg64ujOyDhhILhhbXhh4I7IOuLozsg4YSC4YW14YeCOyApIEhBTkdVTCBTWUxMQUJMRSBOSUgKK0IyRTQ7QjJFNDsxMTAzIDExNjE7QjJFNDsxMTAzIDExNjE7ICMgKOuLpDsg64ukOyDhhIPhhaE7IOuLpDsg4YSD4YWhOyApIEhBTkdVTCBTWUxMQUJMRSBEQQorQjJFNTtCMkU1OzExMDMgMTE2MSAxMUE4O0IyRTU7MTEwMyAxMTYxIDExQTg7ICMgKOuLpTsg64ulOyDhhIPhhaHhhqg7IOuLpTsg4YSD4YWh4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBEQUcKK0IyRTY7QjJFNjsxMTAzIDExNjEgMTFBOTtCMkU2OzExMDMgMTE2MSAxMUE5OyAjICjri6Y7IOuLpjsg4YSD4YWh4YapOyDri6Y7IOGEg+GFoeGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgREFHRworQjJFNztCMkU3OzExMDMgMTE2MSAxMUFBO0IyRTc7MTEwMyAxMTYxIDExQUE7ICMgKOuLpzsg64unOyDhhIPhhaHhhqo7IOuLpzsg4YSD4YWh4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBEQUdTCitCMkU4O0IyRTg7MTEwMyAxMTYxIDExQUI7QjJFODsxMTAzIDExNjEgMTFBQjsgIyAo64uoOyDri6g7IOGEg+GFoeGGqzsg64uoOyDhhIPhhaHhhqs7ICkgSEFOR1VMIFNZTExBQkxFIERBTgorQjJFOTtCMkU5OzExMDMgMTE2MSAxMUFDO0IyRTk7MTEwMyAxMTYxIDExQUM7ICMgKOuLqTsg64upOyDhhIPhhaHhhqw7IOuLqTsg4YSD4YWh4YasOyApIEhBTkdVTCBTWUxMQUJMRSBEQU5KCitCMkVBO0IyRUE7MTEwMyAxMTYxIDExQUQ7QjJFQTsxMTAzIDExNjEgMTFBRDsgIyAo64uqOyDri6o7IOGEg+GFoeGGrTsg64uqOyDhhIPhhaHhhq07ICkgSEFOR1VMIFNZTExBQkxFIERBTkgKK0IyRUI7QjJFQjsxMTAzIDExNjEgMTFBRTtCMkVCOzExMDMgMTE2MSAxMUFFOyAjICjri6s7IOuLqzsg4YSD4YWh4YauOyDri6s7IOGEg+GFoeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgREFECitCMkVDO0IyRUM7MTEwMyAxMTYxIDExQUY7QjJFQzsxMTAzIDExNjEgMTFBRjsgIyAo64usOyDri6w7IOGEg+GFoeGGrzsg64usOyDhhIPhhaHhhq87ICkgSEFOR1VMIFNZTExBQkxFIERBTAorQjJFRDtCMkVEOzExMDMgMTE2MSAxMUIwO0IyRUQ7MTEwMyAxMTYxIDExQjA7ICMgKOuLrTsg64utOyDhhIPhhaHhhrA7IOuLrTsg4YSD4YWh4YawOyApIEhBTkdVTCBTWUxMQUJMRSBEQUxHCitCMkVFO0IyRUU7MTEwMyAxMTYxIDExQjE7QjJFRTsxMTAzIDExNjEgMTFCMTsgIyAo64uuOyDri647IOGEg+GFoeGGsTsg64uuOyDhhIPhhaHhhrE7ICkgSEFOR1VMIFNZTExBQkxFIERBTE0KK0IyRUY7QjJFRjsxMTAzIDExNjEgMTFCMjtCMkVGOzExMDMgMTE2MSAxMUIyOyAjICjri687IOuLrzsg4YSD4YWh4YayOyDri687IOGEg+GFoeGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgREFMQgorQjJGMDtCMkYwOzExMDMgMTE2MSAxMUIzO0IyRjA7MTEwMyAxMTYxIDExQjM7ICMgKOuLsDsg64uwOyDhhIPhhaHhhrM7IOuLsDsg4YSD4YWh4YazOyApIEhBTkdVTCBTWUxMQUJMRSBEQUxTCitCMkYxO0IyRjE7MTEwMyAxMTYxIDExQjQ7QjJGMTsxMTAzIDExNjEgMTFCNDsgIyAo64uxOyDri7E7IOGEg+GFoeGGtDsg64uxOyDhhIPhhaHhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIERBTFQKK0IyRjI7QjJGMjsxMTAzIDExNjEgMTFCNTtCMkYyOzExMDMgMTE2MSAxMUI1OyAjICjri7I7IOuLsjsg4YSD4YWh4Ya1OyDri7I7IOGEg+GFoeGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgREFMUAorQjJGMztCMkYzOzExMDMgMTE2MSAxMUI2O0IyRjM7MTEwMyAxMTYxIDExQjY7ICMgKOuLszsg64uzOyDhhIPhhaHhhrY7IOuLszsg4YSD4YWh4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBEQUxICitCMkY0O0IyRjQ7MTEwMyAxMTYxIDExQjc7QjJGNDsxMTAzIDExNjEgMTFCNzsgIyAo64u0OyDri7Q7IOGEg+GFoeGGtzsg64u0OyDhhIPhhaHhhrc7ICkgSEFOR1VMIFNZTExBQkxFIERBTQorQjJGNTtCMkY1OzExMDMgMTE2MSAxMUI4O0IyRjU7MTEwMyAxMTYxIDExQjg7ICMgKOuLtTsg64u1OyDhhIPhhaHhhrg7IOuLtTsg4YSD4YWh4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBEQUIKK0IyRjY7QjJGNjsxMTAzIDExNjEgMTFCOTtCMkY2OzExMDMgMTE2MSAxMUI5OyAjICjri7Y7IOuLtjsg4YSD4YWh4Ya5OyDri7Y7IOGEg+GFoeGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgREFCUworQjJGNztCMkY3OzExMDMgMTE2MSAxMUJBO0IyRjc7MTEwMyAxMTYxIDExQkE7ICMgKOuLtzsg64u3OyDhhIPhhaHhhro7IOuLtzsg4YSD4YWh4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBEQVMKK0IyRjg7QjJGODsxMTAzIDExNjEgMTFCQjtCMkY4OzExMDMgMTE2MSAxMUJCOyAjICjri7g7IOuLuDsg4YSD4YWh4Ya7OyDri7g7IOGEg+GFoeGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgREFTUworQjJGOTtCMkY5OzExMDMgMTE2MSAxMUJDO0IyRjk7MTEwMyAxMTYxIDExQkM7ICMgKOuLuTsg64u5OyDhhIPhhaHhhrw7IOuLuTsg4YSD4YWh4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBEQU5HCitCMkZBO0IyRkE7MTEwMyAxMTYxIDExQkQ7QjJGQTsxMTAzIDExNjEgMTFCRDsgIyAo64u6OyDri7o7IOGEg+GFoeGGvTsg64u6OyDhhIPhhaHhhr07ICkgSEFOR1VMIFNZTExBQkxFIERBSgorQjJGQjtCMkZCOzExMDMgMTE2MSAxMUJFO0IyRkI7MTEwMyAxMTYxIDExQkU7ICMgKOuLuzsg64u7OyDhhIPhhaHhhr47IOuLuzsg4YSD4YWh4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBEQUMKK0IyRkM7QjJGQzsxMTAzIDExNjEgMTFCRjtCMkZDOzExMDMgMTE2MSAxMUJGOyAjICjri7w7IOuLvDsg4YSD4YWh4Ya/OyDri7w7IOGEg+GFoeGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgREFLCitCMkZEO0IyRkQ7MTEwMyAxMTYxIDExQzA7QjJGRDsxMTAzIDExNjEgMTFDMDsgIyAo64u9OyDri707IOGEg+GFoeGHgDsg64u9OyDhhIPhhaHhh4A7ICkgSEFOR1VMIFNZTExBQkxFIERBVAorQjJGRTtCMkZFOzExMDMgMTE2MSAxMUMxO0IyRkU7MTEwMyAxMTYxIDExQzE7ICMgKOuLvjsg64u+OyDhhIPhhaHhh4E7IOuLvjsg4YSD4YWh4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBEQVAKK0IyRkY7QjJGRjsxMTAzIDExNjEgMTFDMjtCMkZGOzExMDMgMTE2MSAxMUMyOyAjICjri787IOuLvzsg4YSD4YWh4YeCOyDri787IOGEg+GFoeGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgREFICitCMzAwO0IzMDA7MTEwMyAxMTYyO0IzMDA7MTEwMyAxMTYyOyAjICjrjIA7IOuMgDsg4YSD4YWiOyDrjIA7IOGEg+GFojsgKSBIQU5HVUwgU1lMTEFCTEUgREFFCitCMzAxO0IzMDE7MTEwMyAxMTYyIDExQTg7QjMwMTsxMTAzIDExNjIgMTFBODsgIyAo64yBOyDrjIE7IOGEg+GFouGGqDsg64yBOyDhhIPhhaLhhqg7ICkgSEFOR1VMIFNZTExBQkxFIERBRUcKK0IzMDI7QjMwMjsxMTAzIDExNjIgMTFBOTtCMzAyOzExMDMgMTE2MiAxMUE5OyAjICjrjII7IOuMgjsg4YSD4YWi4YapOyDrjII7IOGEg+GFouGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgREFFR0cKK0IzMDM7QjMwMzsxMTAzIDExNjIgMTFBQTtCMzAzOzExMDMgMTE2MiAxMUFBOyAjICjrjIM7IOuMgzsg4YSD4YWi4YaqOyDrjIM7IOGEg+GFouGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgREFFR1MKK0IzMDQ7QjMwNDsxMTAzIDExNjIgMTFBQjtCMzA0OzExMDMgMTE2MiAxMUFCOyAjICjrjIQ7IOuMhDsg4YSD4YWi4YarOyDrjIQ7IOGEg+GFouGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgREFFTgorQjMwNTtCMzA1OzExMDMgMTE2MiAxMUFDO0IzMDU7MTEwMyAxMTYyIDExQUM7ICMgKOuMhTsg64yFOyDhhIPhhaLhhqw7IOuMhTsg4YSD4YWi4YasOyApIEhBTkdVTCBTWUxMQUJMRSBEQUVOSgorQjMwNjtCMzA2OzExMDMgMTE2MiAxMUFEO0IzMDY7MTEwMyAxMTYyIDExQUQ7ICMgKOuMhjsg64yGOyDhhIPhhaLhhq07IOuMhjsg4YSD4YWi4YatOyApIEhBTkdVTCBTWUxMQUJMRSBEQUVOSAorQjMwNztCMzA3OzExMDMgMTE2MiAxMUFFO0IzMDc7MTEwMyAxMTYyIDExQUU7ICMgKOuMhzsg64yHOyDhhIPhhaLhhq47IOuMhzsg4YSD4YWi4YauOyApIEhBTkdVTCBTWUxMQUJMRSBEQUVECitCMzA4O0IzMDg7MTEwMyAxMTYyIDExQUY7QjMwODsxMTAzIDExNjIgMTFBRjsgIyAo64yIOyDrjIg7IOGEg+GFouGGrzsg64yIOyDhhIPhhaLhhq87ICkgSEFOR1VMIFNZTExBQkxFIERBRUwKK0IzMDk7QjMwOTsxMTAzIDExNjIgMTFCMDtCMzA5OzExMDMgMTE2MiAxMUIwOyAjICjrjIk7IOuMiTsg4YSD4YWi4YawOyDrjIk7IOGEg+GFouGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgREFFTEcKK0IzMEE7QjMwQTsxMTAzIDExNjIgMTFCMTtCMzBBOzExMDMgMTE2MiAxMUIxOyAjICjrjIo7IOuMijsg4YSD4YWi4YaxOyDrjIo7IOGEg+GFouGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgREFFTE0KK0IzMEI7QjMwQjsxMTAzIDExNjIgMTFCMjtCMzBCOzExMDMgMTE2MiAxMUIyOyAjICjrjIs7IOuMizsg4YSD4YWi4YayOyDrjIs7IOGEg+GFouGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgREFFTEIKK0IzMEM7QjMwQzsxMTAzIDExNjIgMTFCMztCMzBDOzExMDMgMTE2MiAxMUIzOyAjICjrjIw7IOuMjDsg4YSD4YWi4YazOyDrjIw7IOGEg+GFouGGszsgKSBIQU5HVUwgU1lMTEFCTEUgREFFTFMKK0IzMEQ7QjMwRDsxMTAzIDExNjIgMTFCNDtCMzBEOzExMDMgMTE2MiAxMUI0OyAjICjrjI07IOuMjTsg4YSD4YWi4Ya0OyDrjI07IOGEg+GFouGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgREFFTFQKK0IzMEU7QjMwRTsxMTAzIDExNjIgMTFCNTtCMzBFOzExMDMgMTE2MiAxMUI1OyAjICjrjI47IOuMjjsg4YSD4YWi4Ya1OyDrjI47IOGEg+GFouGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgREFFTFAKK0IzMEY7QjMwRjsxMTAzIDExNjIgMTFCNjtCMzBGOzExMDMgMTE2MiAxMUI2OyAjICjrjI87IOuMjzsg4YSD4YWi4Ya2OyDrjI87IOGEg+GFouGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgREFFTEgKK0IzMTA7QjMxMDsxMTAzIDExNjIgMTFCNztCMzEwOzExMDMgMTE2MiAxMUI3OyAjICjrjJA7IOuMkDsg4YSD4YWi4Ya3OyDrjJA7IOGEg+GFouGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgREFFTQorQjMxMTtCMzExOzExMDMgMTE2MiAxMUI4O0IzMTE7MTEwMyAxMTYyIDExQjg7ICMgKOuMkTsg64yROyDhhIPhhaLhhrg7IOuMkTsg4YSD4YWi4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBEQUVCCitCMzEyO0IzMTI7MTEwMyAxMTYyIDExQjk7QjMxMjsxMTAzIDExNjIgMTFCOTsgIyAo64ySOyDrjJI7IOGEg+GFouGGuTsg64ySOyDhhIPhhaLhhrk7ICkgSEFOR1VMIFNZTExBQkxFIERBRUJTCitCMzEzO0IzMTM7MTEwMyAxMTYyIDExQkE7QjMxMzsxMTAzIDExNjIgMTFCQTsgIyAo64yTOyDrjJM7IOGEg+GFouGGujsg64yTOyDhhIPhhaLhhro7ICkgSEFOR1VMIFNZTExBQkxFIERBRVMKK0IzMTQ7QjMxNDsxMTAzIDExNjIgMTFCQjtCMzE0OzExMDMgMTE2MiAxMUJCOyAjICjrjJQ7IOuMlDsg4YSD4YWi4Ya7OyDrjJQ7IOGEg+GFouGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgREFFU1MKK0IzMTU7QjMxNTsxMTAzIDExNjIgMTFCQztCMzE1OzExMDMgMTE2MiAxMUJDOyAjICjrjJU7IOuMlTsg4YSD4YWi4Ya8OyDrjJU7IOGEg+GFouGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgREFFTkcKK0IzMTY7QjMxNjsxMTAzIDExNjIgMTFCRDtCMzE2OzExMDMgMTE2MiAxMUJEOyAjICjrjJY7IOuMljsg4YSD4YWi4Ya9OyDrjJY7IOGEg+GFouGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgREFFSgorQjMxNztCMzE3OzExMDMgMTE2MiAxMUJFO0IzMTc7MTEwMyAxMTYyIDExQkU7ICMgKOuMlzsg64yXOyDhhIPhhaLhhr47IOuMlzsg4YSD4YWi4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBEQUVDCitCMzE4O0IzMTg7MTEwMyAxMTYyIDExQkY7QjMxODsxMTAzIDExNjIgMTFCRjsgIyAo64yYOyDrjJg7IOGEg+GFouGGvzsg64yYOyDhhIPhhaLhhr87ICkgSEFOR1VMIFNZTExBQkxFIERBRUsKK0IzMTk7QjMxOTsxMTAzIDExNjIgMTFDMDtCMzE5OzExMDMgMTE2MiAxMUMwOyAjICjrjJk7IOuMmTsg4YSD4YWi4YeAOyDrjJk7IOGEg+GFouGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgREFFVAorQjMxQTtCMzFBOzExMDMgMTE2MiAxMUMxO0IzMUE7MTEwMyAxMTYyIDExQzE7ICMgKOuMmjsg64yaOyDhhIPhhaLhh4E7IOuMmjsg4YSD4YWi4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBEQUVQCitCMzFCO0IzMUI7MTEwMyAxMTYyIDExQzI7QjMxQjsxMTAzIDExNjIgMTFDMjsgIyAo64ybOyDrjJs7IOGEg+GFouGHgjsg64ybOyDhhIPhhaLhh4I7ICkgSEFOR1VMIFNZTExBQkxFIERBRUgKK0IzMUM7QjMxQzsxMTAzIDExNjM7QjMxQzsxMTAzIDExNjM7ICMgKOuMnDsg64ycOyDhhIPhhaM7IOuMnDsg4YSD4YWjOyApIEhBTkdVTCBTWUxMQUJMRSBEWUEKK0IzMUQ7QjMxRDsxMTAzIDExNjMgMTFBODtCMzFEOzExMDMgMTE2MyAxMUE4OyAjICjrjJ07IOuMnTsg4YSD4YWj4YaoOyDrjJ07IOGEg+GFo+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRFlBRworQjMxRTtCMzFFOzExMDMgMTE2MyAxMUE5O0IzMUU7MTEwMyAxMTYzIDExQTk7ICMgKOuMnjsg64yeOyDhhIPhhaPhhqk7IOuMnjsg4YSD4YWj4YapOyApIEhBTkdVTCBTWUxMQUJMRSBEWUFHRworQjMxRjtCMzFGOzExMDMgMTE2MyAxMUFBO0IzMUY7MTEwMyAxMTYzIDExQUE7ICMgKOuMnzsg64yfOyDhhIPhhaPhhqo7IOuMnzsg4YSD4YWj4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBEWUFHUworQjMyMDtCMzIwOzExMDMgMTE2MyAxMUFCO0IzMjA7MTEwMyAxMTYzIDExQUI7ICMgKOuMoDsg64ygOyDhhIPhhaPhhqs7IOuMoDsg4YSD4YWj4YarOyApIEhBTkdVTCBTWUxMQUJMRSBEWUFOCitCMzIxO0IzMjE7MTEwMyAxMTYzIDExQUM7QjMyMTsxMTAzIDExNjMgMTFBQzsgIyAo64yhOyDrjKE7IOGEg+GFo+GGrDsg64yhOyDhhIPhhaPhhqw7ICkgSEFOR1VMIFNZTExBQkxFIERZQU5KCitCMzIyO0IzMjI7MTEwMyAxMTYzIDExQUQ7QjMyMjsxMTAzIDExNjMgMTFBRDsgIyAo64yiOyDrjKI7IOGEg+GFo+GGrTsg64yiOyDhhIPhhaPhhq07ICkgSEFOR1VMIFNZTExBQkxFIERZQU5ICitCMzIzO0IzMjM7MTEwMyAxMTYzIDExQUU7QjMyMzsxMTAzIDExNjMgMTFBRTsgIyAo64yjOyDrjKM7IOGEg+GFo+GGrjsg64yjOyDhhIPhhaPhhq47ICkgSEFOR1VMIFNZTExBQkxFIERZQUQKK0IzMjQ7QjMyNDsxMTAzIDExNjMgMTFBRjtCMzI0OzExMDMgMTE2MyAxMUFGOyAjICjrjKQ7IOuMpDsg4YSD4YWj4YavOyDrjKQ7IOGEg+GFo+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgRFlBTAorQjMyNTtCMzI1OzExMDMgMTE2MyAxMUIwO0IzMjU7MTEwMyAxMTYzIDExQjA7ICMgKOuMpTsg64ylOyDhhIPhhaPhhrA7IOuMpTsg4YSD4YWj4YawOyApIEhBTkdVTCBTWUxMQUJMRSBEWUFMRworQjMyNjtCMzI2OzExMDMgMTE2MyAxMUIxO0IzMjY7MTEwMyAxMTYzIDExQjE7ICMgKOuMpjsg64ymOyDhhIPhhaPhhrE7IOuMpjsg4YSD4YWj4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBEWUFMTQorQjMyNztCMzI3OzExMDMgMTE2MyAxMUIyO0IzMjc7MTEwMyAxMTYzIDExQjI7ICMgKOuMpzsg64ynOyDhhIPhhaPhhrI7IOuMpzsg4YSD4YWj4YayOyApIEhBTkdVTCBTWUxMQUJMRSBEWUFMQgorQjMyODtCMzI4OzExMDMgMTE2MyAxMUIzO0IzMjg7MTEwMyAxMTYzIDExQjM7ICMgKOuMqDsg64yoOyDhhIPhhaPhhrM7IOuMqDsg4YSD4YWj4YazOyApIEhBTkdVTCBTWUxMQUJMRSBEWUFMUworQjMyOTtCMzI5OzExMDMgMTE2MyAxMUI0O0IzMjk7MTEwMyAxMTYzIDExQjQ7ICMgKOuMqTsg64ypOyDhhIPhhaPhhrQ7IOuMqTsg4YSD4YWj4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBEWUFMVAorQjMyQTtCMzJBOzExMDMgMTE2MyAxMUI1O0IzMkE7MTEwMyAxMTYzIDExQjU7ICMgKOuMqjsg64yqOyDhhIPhhaPhhrU7IOuMqjsg4YSD4YWj4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBEWUFMUAorQjMyQjtCMzJCOzExMDMgMTE2MyAxMUI2O0IzMkI7MTEwMyAxMTYzIDExQjY7ICMgKOuMqzsg64yrOyDhhIPhhaPhhrY7IOuMqzsg4YSD4YWj4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBEWUFMSAorQjMyQztCMzJDOzExMDMgMTE2MyAxMUI3O0IzMkM7MTEwMyAxMTYzIDExQjc7ICMgKOuMrDsg64ysOyDhhIPhhaPhhrc7IOuMrDsg4YSD4YWj4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBEWUFNCitCMzJEO0IzMkQ7MTEwMyAxMTYzIDExQjg7QjMyRDsxMTAzIDExNjMgMTFCODsgIyAo64ytOyDrjK07IOGEg+GFo+GGuDsg64ytOyDhhIPhhaPhhrg7ICkgSEFOR1VMIFNZTExBQkxFIERZQUIKK0IzMkU7QjMyRTsxMTAzIDExNjMgMTFCOTtCMzJFOzExMDMgMTE2MyAxMUI5OyAjICjrjK47IOuMrjsg4YSD4YWj4Ya5OyDrjK47IOGEg+GFo+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgRFlBQlMKK0IzMkY7QjMyRjsxMTAzIDExNjMgMTFCQTtCMzJGOzExMDMgMTE2MyAxMUJBOyAjICjrjK87IOuMrzsg4YSD4YWj4Ya6OyDrjK87IOGEg+GFo+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgRFlBUworQjMzMDtCMzMwOzExMDMgMTE2MyAxMUJCO0IzMzA7MTEwMyAxMTYzIDExQkI7ICMgKOuMsDsg64ywOyDhhIPhhaPhhrs7IOuMsDsg4YSD4YWj4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBEWUFTUworQjMzMTtCMzMxOzExMDMgMTE2MyAxMUJDO0IzMzE7MTEwMyAxMTYzIDExQkM7ICMgKOuMsTsg64yxOyDhhIPhhaPhhrw7IOuMsTsg4YSD4YWj4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBEWUFORworQjMzMjtCMzMyOzExMDMgMTE2MyAxMUJEO0IzMzI7MTEwMyAxMTYzIDExQkQ7ICMgKOuMsjsg64yyOyDhhIPhhaPhhr07IOuMsjsg4YSD4YWj4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBEWUFKCitCMzMzO0IzMzM7MTEwMyAxMTYzIDExQkU7QjMzMzsxMTAzIDExNjMgMTFCRTsgIyAo64yzOyDrjLM7IOGEg+GFo+GGvjsg64yzOyDhhIPhhaPhhr47ICkgSEFOR1VMIFNZTExBQkxFIERZQUMKK0IzMzQ7QjMzNDsxMTAzIDExNjMgMTFCRjtCMzM0OzExMDMgMTE2MyAxMUJGOyAjICjrjLQ7IOuMtDsg4YSD4YWj4Ya/OyDrjLQ7IOGEg+GFo+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgRFlBSworQjMzNTtCMzM1OzExMDMgMTE2MyAxMUMwO0IzMzU7MTEwMyAxMTYzIDExQzA7ICMgKOuMtTsg64y1OyDhhIPhhaPhh4A7IOuMtTsg4YSD4YWj4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBEWUFUCitCMzM2O0IzMzY7MTEwMyAxMTYzIDExQzE7QjMzNjsxMTAzIDExNjMgMTFDMTsgIyAo64y2OyDrjLY7IOGEg+GFo+GHgTsg64y2OyDhhIPhhaPhh4E7ICkgSEFOR1VMIFNZTExBQkxFIERZQVAKK0IzMzc7QjMzNzsxMTAzIDExNjMgMTFDMjtCMzM3OzExMDMgMTE2MyAxMUMyOyAjICjrjLc7IOuMtzsg4YSD4YWj4YeCOyDrjLc7IOGEg+GFo+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgRFlBSAorQjMzODtCMzM4OzExMDMgMTE2NDtCMzM4OzExMDMgMTE2NDsgIyAo64y4OyDrjLg7IOGEg+GFpDsg64y4OyDhhIPhhaQ7ICkgSEFOR1VMIFNZTExBQkxFIERZQUUKK0IzMzk7QjMzOTsxMTAzIDExNjQgMTFBODtCMzM5OzExMDMgMTE2NCAxMUE4OyAjICjrjLk7IOuMuTsg4YSD4YWk4YaoOyDrjLk7IOGEg+GFpOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRFlBRUcKK0IzM0E7QjMzQTsxMTAzIDExNjQgMTFBOTtCMzNBOzExMDMgMTE2NCAxMUE5OyAjICjrjLo7IOuMujsg4YSD4YWk4YapOyDrjLo7IOGEg+GFpOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgRFlBRUdHCitCMzNCO0IzM0I7MTEwMyAxMTY0IDExQUE7QjMzQjsxMTAzIDExNjQgMTFBQTsgIyAo64y7OyDrjLs7IOGEg+GFpOGGqjsg64y7OyDhhIPhhaThhqo7ICkgSEFOR1VMIFNZTExBQkxFIERZQUVHUworQjMzQztCMzNDOzExMDMgMTE2NCAxMUFCO0IzM0M7MTEwMyAxMTY0IDExQUI7ICMgKOuMvDsg64y8OyDhhIPhhaThhqs7IOuMvDsg4YSD4YWk4YarOyApIEhBTkdVTCBTWUxMQUJMRSBEWUFFTgorQjMzRDtCMzNEOzExMDMgMTE2NCAxMUFDO0IzM0Q7MTEwMyAxMTY0IDExQUM7ICMgKOuMvTsg64y9OyDhhIPhhaThhqw7IOuMvTsg4YSD4YWk4YasOyApIEhBTkdVTCBTWUxMQUJMRSBEWUFFTkoKK0IzM0U7QjMzRTsxMTAzIDExNjQgMTFBRDtCMzNFOzExMDMgMTE2NCAxMUFEOyAjICjrjL47IOuMvjsg4YSD4YWk4YatOyDrjL47IOGEg+GFpOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRFlBRU5ICitCMzNGO0IzM0Y7MTEwMyAxMTY0IDExQUU7QjMzRjsxMTAzIDExNjQgMTFBRTsgIyAo64y/OyDrjL87IOGEg+GFpOGGrjsg64y/OyDhhIPhhaThhq47ICkgSEFOR1VMIFNZTExBQkxFIERZQUVECitCMzQwO0IzNDA7MTEwMyAxMTY0IDExQUY7QjM0MDsxMTAzIDExNjQgMTFBRjsgIyAo642AOyDrjYA7IOGEg+GFpOGGrzsg642AOyDhhIPhhaThhq87ICkgSEFOR1VMIFNZTExBQkxFIERZQUVMCitCMzQxO0IzNDE7MTEwMyAxMTY0IDExQjA7QjM0MTsxMTAzIDExNjQgMTFCMDsgIyAo642BOyDrjYE7IOGEg+GFpOGGsDsg642BOyDhhIPhhaThhrA7ICkgSEFOR1VMIFNZTExBQkxFIERZQUVMRworQjM0MjtCMzQyOzExMDMgMTE2NCAxMUIxO0IzNDI7MTEwMyAxMTY0IDExQjE7ICMgKOuNgjsg642COyDhhIPhhaThhrE7IOuNgjsg4YSD4YWk4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBEWUFFTE0KK0IzNDM7QjM0MzsxMTAzIDExNjQgMTFCMjtCMzQzOzExMDMgMTE2NCAxMUIyOyAjICjrjYM7IOuNgzsg4YSD4YWk4YayOyDrjYM7IOGEg+GFpOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgRFlBRUxCCitCMzQ0O0IzNDQ7MTEwMyAxMTY0IDExQjM7QjM0NDsxMTAzIDExNjQgMTFCMzsgIyAo642EOyDrjYQ7IOGEg+GFpOGGszsg642EOyDhhIPhhaThhrM7ICkgSEFOR1VMIFNZTExBQkxFIERZQUVMUworQjM0NTtCMzQ1OzExMDMgMTE2NCAxMUI0O0IzNDU7MTEwMyAxMTY0IDExQjQ7ICMgKOuNhTsg642FOyDhhIPhhaThhrQ7IOuNhTsg4YSD4YWk4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBEWUFFTFQKK0IzNDY7QjM0NjsxMTAzIDExNjQgMTFCNTtCMzQ2OzExMDMgMTE2NCAxMUI1OyAjICjrjYY7IOuNhjsg4YSD4YWk4Ya1OyDrjYY7IOGEg+GFpOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgRFlBRUxQCitCMzQ3O0IzNDc7MTEwMyAxMTY0IDExQjY7QjM0NzsxMTAzIDExNjQgMTFCNjsgIyAo642HOyDrjYc7IOGEg+GFpOGGtjsg642HOyDhhIPhhaThhrY7ICkgSEFOR1VMIFNZTExBQkxFIERZQUVMSAorQjM0ODtCMzQ4OzExMDMgMTE2NCAxMUI3O0IzNDg7MTEwMyAxMTY0IDExQjc7ICMgKOuNiDsg642IOyDhhIPhhaThhrc7IOuNiDsg4YSD4YWk4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBEWUFFTQorQjM0OTtCMzQ5OzExMDMgMTE2NCAxMUI4O0IzNDk7MTEwMyAxMTY0IDExQjg7ICMgKOuNiTsg642JOyDhhIPhhaThhrg7IOuNiTsg4YSD4YWk4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBEWUFFQgorQjM0QTtCMzRBOzExMDMgMTE2NCAxMUI5O0IzNEE7MTEwMyAxMTY0IDExQjk7ICMgKOuNijsg642KOyDhhIPhhaThhrk7IOuNijsg4YSD4YWk4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBEWUFFQlMKK0IzNEI7QjM0QjsxMTAzIDExNjQgMTFCQTtCMzRCOzExMDMgMTE2NCAxMUJBOyAjICjrjYs7IOuNizsg4YSD4YWk4Ya6OyDrjYs7IOGEg+GFpOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgRFlBRVMKK0IzNEM7QjM0QzsxMTAzIDExNjQgMTFCQjtCMzRDOzExMDMgMTE2NCAxMUJCOyAjICjrjYw7IOuNjDsg4YSD4YWk4Ya7OyDrjYw7IOGEg+GFpOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgRFlBRVNTCitCMzREO0IzNEQ7MTEwMyAxMTY0IDExQkM7QjM0RDsxMTAzIDExNjQgMTFCQzsgIyAo642NOyDrjY07IOGEg+GFpOGGvDsg642NOyDhhIPhhaThhrw7ICkgSEFOR1VMIFNZTExBQkxFIERZQUVORworQjM0RTtCMzRFOzExMDMgMTE2NCAxMUJEO0IzNEU7MTEwMyAxMTY0IDExQkQ7ICMgKOuNjjsg642OOyDhhIPhhaThhr07IOuNjjsg4YSD4YWk4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBEWUFFSgorQjM0RjtCMzRGOzExMDMgMTE2NCAxMUJFO0IzNEY7MTEwMyAxMTY0IDExQkU7ICMgKOuNjzsg642POyDhhIPhhaThhr47IOuNjzsg4YSD4YWk4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBEWUFFQworQjM1MDtCMzUwOzExMDMgMTE2NCAxMUJGO0IzNTA7MTEwMyAxMTY0IDExQkY7ICMgKOuNkDsg642QOyDhhIPhhaThhr87IOuNkDsg4YSD4YWk4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBEWUFFSworQjM1MTtCMzUxOzExMDMgMTE2NCAxMUMwO0IzNTE7MTEwMyAxMTY0IDExQzA7ICMgKOuNkTsg642ROyDhhIPhhaThh4A7IOuNkTsg4YSD4YWk4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBEWUFFVAorQjM1MjtCMzUyOzExMDMgMTE2NCAxMUMxO0IzNTI7MTEwMyAxMTY0IDExQzE7ICMgKOuNkjsg642SOyDhhIPhhaThh4E7IOuNkjsg4YSD4YWk4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBEWUFFUAorQjM1MztCMzUzOzExMDMgMTE2NCAxMUMyO0IzNTM7MTEwMyAxMTY0IDExQzI7ICMgKOuNkzsg642TOyDhhIPhhaThh4I7IOuNkzsg4YSD4YWk4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBEWUFFSAorQjM1NDtCMzU0OzExMDMgMTE2NTtCMzU0OzExMDMgMTE2NTsgIyAo642UOyDrjZQ7IOGEg+GFpTsg642UOyDhhIPhhaU7ICkgSEFOR1VMIFNZTExBQkxFIERFTworQjM1NTtCMzU1OzExMDMgMTE2NSAxMUE4O0IzNTU7MTEwMyAxMTY1IDExQTg7ICMgKOuNlTsg642VOyDhhIPhhaXhhqg7IOuNlTsg4YSD4YWl4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBERU9HCitCMzU2O0IzNTY7MTEwMyAxMTY1IDExQTk7QjM1NjsxMTAzIDExNjUgMTFBOTsgIyAo642WOyDrjZY7IOGEg+GFpeGGqTsg642WOyDhhIPhhaXhhqk7ICkgSEFOR1VMIFNZTExBQkxFIERFT0dHCitCMzU3O0IzNTc7MTEwMyAxMTY1IDExQUE7QjM1NzsxMTAzIDExNjUgMTFBQTsgIyAo642XOyDrjZc7IOGEg+GFpeGGqjsg642XOyDhhIPhhaXhhqo7ICkgSEFOR1VMIFNZTExBQkxFIERFT0dTCitCMzU4O0IzNTg7MTEwMyAxMTY1IDExQUI7QjM1ODsxMTAzIDExNjUgMTFBQjsgIyAo642YOyDrjZg7IOGEg+GFpeGGqzsg642YOyDhhIPhhaXhhqs7ICkgSEFOR1VMIFNZTExBQkxFIERFT04KK0IzNTk7QjM1OTsxMTAzIDExNjUgMTFBQztCMzU5OzExMDMgMTE2NSAxMUFDOyAjICjrjZk7IOuNmTsg4YSD4YWl4YasOyDrjZk7IOGEg+GFpeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgREVPTkoKK0IzNUE7QjM1QTsxMTAzIDExNjUgMTFBRDtCMzVBOzExMDMgMTE2NSAxMUFEOyAjICjrjZo7IOuNmjsg4YSD4YWl4YatOyDrjZo7IOGEg+GFpeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgREVPTkgKK0IzNUI7QjM1QjsxMTAzIDExNjUgMTFBRTtCMzVCOzExMDMgMTE2NSAxMUFFOyAjICjrjZs7IOuNmzsg4YSD4YWl4YauOyDrjZs7IOGEg+GFpeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgREVPRAorQjM1QztCMzVDOzExMDMgMTE2NSAxMUFGO0IzNUM7MTEwMyAxMTY1IDExQUY7ICMgKOuNnDsg642cOyDhhIPhhaXhhq87IOuNnDsg4YSD4YWl4YavOyApIEhBTkdVTCBTWUxMQUJMRSBERU9MCitCMzVEO0IzNUQ7MTEwMyAxMTY1IDExQjA7QjM1RDsxMTAzIDExNjUgMTFCMDsgIyAo642dOyDrjZ07IOGEg+GFpeGGsDsg642dOyDhhIPhhaXhhrA7ICkgSEFOR1VMIFNZTExBQkxFIERFT0xHCitCMzVFO0IzNUU7MTEwMyAxMTY1IDExQjE7QjM1RTsxMTAzIDExNjUgMTFCMTsgIyAo642eOyDrjZ47IOGEg+GFpeGGsTsg642eOyDhhIPhhaXhhrE7ICkgSEFOR1VMIFNZTExBQkxFIERFT0xNCitCMzVGO0IzNUY7MTEwMyAxMTY1IDExQjI7QjM1RjsxMTAzIDExNjUgMTFCMjsgIyAo642fOyDrjZ87IOGEg+GFpeGGsjsg642fOyDhhIPhhaXhhrI7ICkgSEFOR1VMIFNZTExBQkxFIERFT0xCCitCMzYwO0IzNjA7MTEwMyAxMTY1IDExQjM7QjM2MDsxMTAzIDExNjUgMTFCMzsgIyAo642gOyDrjaA7IOGEg+GFpeGGszsg642gOyDhhIPhhaXhhrM7ICkgSEFOR1VMIFNZTExBQkxFIERFT0xTCitCMzYxO0IzNjE7MTEwMyAxMTY1IDExQjQ7QjM2MTsxMTAzIDExNjUgMTFCNDsgIyAo642hOyDrjaE7IOGEg+GFpeGGtDsg642hOyDhhIPhhaXhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIERFT0xUCitCMzYyO0IzNjI7MTEwMyAxMTY1IDExQjU7QjM2MjsxMTAzIDExNjUgMTFCNTsgIyAo642iOyDrjaI7IOGEg+GFpeGGtTsg642iOyDhhIPhhaXhhrU7ICkgSEFOR1VMIFNZTExBQkxFIERFT0xQCitCMzYzO0IzNjM7MTEwMyAxMTY1IDExQjY7QjM2MzsxMTAzIDExNjUgMTFCNjsgIyAo642jOyDrjaM7IOGEg+GFpeGGtjsg642jOyDhhIPhhaXhhrY7ICkgSEFOR1VMIFNZTExBQkxFIERFT0xICitCMzY0O0IzNjQ7MTEwMyAxMTY1IDExQjc7QjM2NDsxMTAzIDExNjUgMTFCNzsgIyAo642kOyDrjaQ7IOGEg+GFpeGGtzsg642kOyDhhIPhhaXhhrc7ICkgSEFOR1VMIFNZTExBQkxFIERFT00KK0IzNjU7QjM2NTsxMTAzIDExNjUgMTFCODtCMzY1OzExMDMgMTE2NSAxMUI4OyAjICjrjaU7IOuNpTsg4YSD4YWl4Ya4OyDrjaU7IOGEg+GFpeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgREVPQgorQjM2NjtCMzY2OzExMDMgMTE2NSAxMUI5O0IzNjY7MTEwMyAxMTY1IDExQjk7ICMgKOuNpjsg642mOyDhhIPhhaXhhrk7IOuNpjsg4YSD4YWl4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBERU9CUworQjM2NztCMzY3OzExMDMgMTE2NSAxMUJBO0IzNjc7MTEwMyAxMTY1IDExQkE7ICMgKOuNpzsg642nOyDhhIPhhaXhhro7IOuNpzsg4YSD4YWl4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBERU9TCitCMzY4O0IzNjg7MTEwMyAxMTY1IDExQkI7QjM2ODsxMTAzIDExNjUgMTFCQjsgIyAo642oOyDrjag7IOGEg+GFpeGGuzsg642oOyDhhIPhhaXhhrs7ICkgSEFOR1VMIFNZTExBQkxFIERFT1NTCitCMzY5O0IzNjk7MTEwMyAxMTY1IDExQkM7QjM2OTsxMTAzIDExNjUgMTFCQzsgIyAo642pOyDrjak7IOGEg+GFpeGGvDsg642pOyDhhIPhhaXhhrw7ICkgSEFOR1VMIFNZTExBQkxFIERFT05HCitCMzZBO0IzNkE7MTEwMyAxMTY1IDExQkQ7QjM2QTsxMTAzIDExNjUgMTFCRDsgIyAo642qOyDrjao7IOGEg+GFpeGGvTsg642qOyDhhIPhhaXhhr07ICkgSEFOR1VMIFNZTExBQkxFIERFT0oKK0IzNkI7QjM2QjsxMTAzIDExNjUgMTFCRTtCMzZCOzExMDMgMTE2NSAxMUJFOyAjICjrjas7IOuNqzsg4YSD4YWl4Ya+OyDrjas7IOGEg+GFpeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgREVPQworQjM2QztCMzZDOzExMDMgMTE2NSAxMUJGO0IzNkM7MTEwMyAxMTY1IDExQkY7ICMgKOuNrDsg642sOyDhhIPhhaXhhr87IOuNrDsg4YSD4YWl4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBERU9LCitCMzZEO0IzNkQ7MTEwMyAxMTY1IDExQzA7QjM2RDsxMTAzIDExNjUgMTFDMDsgIyAo642tOyDrja07IOGEg+GFpeGHgDsg642tOyDhhIPhhaXhh4A7ICkgSEFOR1VMIFNZTExBQkxFIERFT1QKK0IzNkU7QjM2RTsxMTAzIDExNjUgMTFDMTtCMzZFOzExMDMgMTE2NSAxMUMxOyAjICjrja47IOuNrjsg4YSD4YWl4YeBOyDrja47IOGEg+GFpeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgREVPUAorQjM2RjtCMzZGOzExMDMgMTE2NSAxMUMyO0IzNkY7MTEwMyAxMTY1IDExQzI7ICMgKOuNrzsg642vOyDhhIPhhaXhh4I7IOuNrzsg4YSD4YWl4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBERU9ICitCMzcwO0IzNzA7MTEwMyAxMTY2O0IzNzA7MTEwMyAxMTY2OyAjICjrjbA7IOuNsDsg4YSD4YWmOyDrjbA7IOGEg+GFpjsgKSBIQU5HVUwgU1lMTEFCTEUgREUKK0IzNzE7QjM3MTsxMTAzIDExNjYgMTFBODtCMzcxOzExMDMgMTE2NiAxMUE4OyAjICjrjbE7IOuNsTsg4YSD4YWm4YaoOyDrjbE7IOGEg+GFpuGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgREVHCitCMzcyO0IzNzI7MTEwMyAxMTY2IDExQTk7QjM3MjsxMTAzIDExNjYgMTFBOTsgIyAo642yOyDrjbI7IOGEg+GFpuGGqTsg642yOyDhhIPhhabhhqk7ICkgSEFOR1VMIFNZTExBQkxFIERFR0cKK0IzNzM7QjM3MzsxMTAzIDExNjYgMTFBQTtCMzczOzExMDMgMTE2NiAxMUFBOyAjICjrjbM7IOuNszsg4YSD4YWm4YaqOyDrjbM7IOGEg+GFpuGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgREVHUworQjM3NDtCMzc0OzExMDMgMTE2NiAxMUFCO0IzNzQ7MTEwMyAxMTY2IDExQUI7ICMgKOuNtDsg6420OyDhhIPhhabhhqs7IOuNtDsg4YSD4YWm4YarOyApIEhBTkdVTCBTWUxMQUJMRSBERU4KK0IzNzU7QjM3NTsxMTAzIDExNjYgMTFBQztCMzc1OzExMDMgMTE2NiAxMUFDOyAjICjrjbU7IOuNtTsg4YSD4YWm4YasOyDrjbU7IOGEg+GFpuGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgREVOSgorQjM3NjtCMzc2OzExMDMgMTE2NiAxMUFEO0IzNzY7MTEwMyAxMTY2IDExQUQ7ICMgKOuNtjsg6422OyDhhIPhhabhhq07IOuNtjsg4YSD4YWm4YatOyApIEhBTkdVTCBTWUxMQUJMRSBERU5ICitCMzc3O0IzNzc7MTEwMyAxMTY2IDExQUU7QjM3NzsxMTAzIDExNjYgMTFBRTsgIyAo6423OyDrjbc7IOGEg+GFpuGGrjsg6423OyDhhIPhhabhhq47ICkgSEFOR1VMIFNZTExBQkxFIERFRAorQjM3ODtCMzc4OzExMDMgMTE2NiAxMUFGO0IzNzg7MTEwMyAxMTY2IDExQUY7ICMgKOuNuDsg6424OyDhhIPhhabhhq87IOuNuDsg4YSD4YWm4YavOyApIEhBTkdVTCBTWUxMQUJMRSBERUwKK0IzNzk7QjM3OTsxMTAzIDExNjYgMTFCMDtCMzc5OzExMDMgMTE2NiAxMUIwOyAjICjrjbk7IOuNuTsg4YSD4YWm4YawOyDrjbk7IOGEg+GFpuGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgREVMRworQjM3QTtCMzdBOzExMDMgMTE2NiAxMUIxO0IzN0E7MTEwMyAxMTY2IDExQjE7ICMgKOuNujsg6426OyDhhIPhhabhhrE7IOuNujsg4YSD4YWm4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBERUxNCitCMzdCO0IzN0I7MTEwMyAxMTY2IDExQjI7QjM3QjsxMTAzIDExNjYgMTFCMjsgIyAo6427OyDrjbs7IOGEg+GFpuGGsjsg6427OyDhhIPhhabhhrI7ICkgSEFOR1VMIFNZTExBQkxFIERFTEIKK0IzN0M7QjM3QzsxMTAzIDExNjYgMTFCMztCMzdDOzExMDMgMTE2NiAxMUIzOyAjICjrjbw7IOuNvDsg4YSD4YWm4YazOyDrjbw7IOGEg+GFpuGGszsgKSBIQU5HVUwgU1lMTEFCTEUgREVMUworQjM3RDtCMzdEOzExMDMgMTE2NiAxMUI0O0IzN0Q7MTEwMyAxMTY2IDExQjQ7ICMgKOuNvTsg6429OyDhhIPhhabhhrQ7IOuNvTsg4YSD4YWm4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBERUxUCitCMzdFO0IzN0U7MTEwMyAxMTY2IDExQjU7QjM3RTsxMTAzIDExNjYgMTFCNTsgIyAo642+OyDrjb47IOGEg+GFpuGGtTsg642+OyDhhIPhhabhhrU7ICkgSEFOR1VMIFNZTExBQkxFIERFTFAKK0IzN0Y7QjM3RjsxMTAzIDExNjYgMTFCNjtCMzdGOzExMDMgMTE2NiAxMUI2OyAjICjrjb87IOuNvzsg4YSD4YWm4Ya2OyDrjb87IOGEg+GFpuGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgREVMSAorQjM4MDtCMzgwOzExMDMgMTE2NiAxMUI3O0IzODA7MTEwMyAxMTY2IDExQjc7ICMgKOuOgDsg646AOyDhhIPhhabhhrc7IOuOgDsg4YSD4YWm4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBERU0KK0IzODE7QjM4MTsxMTAzIDExNjYgMTFCODtCMzgxOzExMDMgMTE2NiAxMUI4OyAjICjrjoE7IOuOgTsg4YSD4YWm4Ya4OyDrjoE7IOGEg+GFpuGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgREVCCitCMzgyO0IzODI7MTEwMyAxMTY2IDExQjk7QjM4MjsxMTAzIDExNjYgMTFCOTsgIyAo646COyDrjoI7IOGEg+GFpuGGuTsg646COyDhhIPhhabhhrk7ICkgSEFOR1VMIFNZTExBQkxFIERFQlMKK0IzODM7QjM4MzsxMTAzIDExNjYgMTFCQTtCMzgzOzExMDMgMTE2NiAxMUJBOyAjICjrjoM7IOuOgzsg4YSD4YWm4Ya6OyDrjoM7IOGEg+GFpuGGujsgKSBIQU5HVUwgU1lMTEFCTEUgREVTCitCMzg0O0IzODQ7MTEwMyAxMTY2IDExQkI7QjM4NDsxMTAzIDExNjYgMTFCQjsgIyAo646EOyDrjoQ7IOGEg+GFpuGGuzsg646EOyDhhIPhhabhhrs7ICkgSEFOR1VMIFNZTExBQkxFIERFU1MKK0IzODU7QjM4NTsxMTAzIDExNjYgMTFCQztCMzg1OzExMDMgMTE2NiAxMUJDOyAjICjrjoU7IOuOhTsg4YSD4YWm4Ya8OyDrjoU7IOGEg+GFpuGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgREVORworQjM4NjtCMzg2OzExMDMgMTE2NiAxMUJEO0IzODY7MTEwMyAxMTY2IDExQkQ7ICMgKOuOhjsg646GOyDhhIPhhabhhr07IOuOhjsg4YSD4YWm4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBERUoKK0IzODc7QjM4NzsxMTAzIDExNjYgMTFCRTtCMzg3OzExMDMgMTE2NiAxMUJFOyAjICjrjoc7IOuOhzsg4YSD4YWm4Ya+OyDrjoc7IOGEg+GFpuGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgREVDCitCMzg4O0IzODg7MTEwMyAxMTY2IDExQkY7QjM4ODsxMTAzIDExNjYgMTFCRjsgIyAo646IOyDrjog7IOGEg+GFpuGGvzsg646IOyDhhIPhhabhhr87ICkgSEFOR1VMIFNZTExBQkxFIERFSworQjM4OTtCMzg5OzExMDMgMTE2NiAxMUMwO0IzODk7MTEwMyAxMTY2IDExQzA7ICMgKOuOiTsg646JOyDhhIPhhabhh4A7IOuOiTsg4YSD4YWm4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBERVQKK0IzOEE7QjM4QTsxMTAzIDExNjYgMTFDMTtCMzhBOzExMDMgMTE2NiAxMUMxOyAjICjrjoo7IOuOijsg4YSD4YWm4YeBOyDrjoo7IOGEg+GFpuGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgREVQCitCMzhCO0IzOEI7MTEwMyAxMTY2IDExQzI7QjM4QjsxMTAzIDExNjYgMTFDMjsgIyAo646LOyDrjos7IOGEg+GFpuGHgjsg646LOyDhhIPhhabhh4I7ICkgSEFOR1VMIFNZTExBQkxFIERFSAorQjM4QztCMzhDOzExMDMgMTE2NztCMzhDOzExMDMgMTE2NzsgIyAo646MOyDrjow7IOGEg+GFpzsg646MOyDhhIPhhac7ICkgSEFOR1VMIFNZTExBQkxFIERZRU8KK0IzOEQ7QjM4RDsxMTAzIDExNjcgMTFBODtCMzhEOzExMDMgMTE2NyAxMUE4OyAjICjrjo07IOuOjTsg4YSD4YWn4YaoOyDrjo07IOGEg+GFp+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRFlFT0cKK0IzOEU7QjM4RTsxMTAzIDExNjcgMTFBOTtCMzhFOzExMDMgMTE2NyAxMUE5OyAjICjrjo47IOuOjjsg4YSD4YWn4YapOyDrjo47IOGEg+GFp+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgRFlFT0dHCitCMzhGO0IzOEY7MTEwMyAxMTY3IDExQUE7QjM4RjsxMTAzIDExNjcgMTFBQTsgIyAo646POyDrjo87IOGEg+GFp+GGqjsg646POyDhhIPhhafhhqo7ICkgSEFOR1VMIFNZTExBQkxFIERZRU9HUworQjM5MDtCMzkwOzExMDMgMTE2NyAxMUFCO0IzOTA7MTEwMyAxMTY3IDExQUI7ICMgKOuOkDsg646QOyDhhIPhhafhhqs7IOuOkDsg4YSD4YWn4YarOyApIEhBTkdVTCBTWUxMQUJMRSBEWUVPTgorQjM5MTtCMzkxOzExMDMgMTE2NyAxMUFDO0IzOTE7MTEwMyAxMTY3IDExQUM7ICMgKOuOkTsg646ROyDhhIPhhafhhqw7IOuOkTsg4YSD4YWn4YasOyApIEhBTkdVTCBTWUxMQUJMRSBEWUVPTkoKK0IzOTI7QjM5MjsxMTAzIDExNjcgMTFBRDtCMzkyOzExMDMgMTE2NyAxMUFEOyAjICjrjpI7IOuOkjsg4YSD4YWn4YatOyDrjpI7IOGEg+GFp+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRFlFT05ICitCMzkzO0IzOTM7MTEwMyAxMTY3IDExQUU7QjM5MzsxMTAzIDExNjcgMTFBRTsgIyAo646TOyDrjpM7IOGEg+GFp+GGrjsg646TOyDhhIPhhafhhq47ICkgSEFOR1VMIFNZTExBQkxFIERZRU9ECitCMzk0O0IzOTQ7MTEwMyAxMTY3IDExQUY7QjM5NDsxMTAzIDExNjcgMTFBRjsgIyAo646UOyDrjpQ7IOGEg+GFp+GGrzsg646UOyDhhIPhhafhhq87ICkgSEFOR1VMIFNZTExBQkxFIERZRU9MCitCMzk1O0IzOTU7MTEwMyAxMTY3IDExQjA7QjM5NTsxMTAzIDExNjcgMTFCMDsgIyAo646VOyDrjpU7IOGEg+GFp+GGsDsg646VOyDhhIPhhafhhrA7ICkgSEFOR1VMIFNZTExBQkxFIERZRU9MRworQjM5NjtCMzk2OzExMDMgMTE2NyAxMUIxO0IzOTY7MTEwMyAxMTY3IDExQjE7ICMgKOuOljsg646WOyDhhIPhhafhhrE7IOuOljsg4YSD4YWn4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBEWUVPTE0KK0IzOTc7QjM5NzsxMTAzIDExNjcgMTFCMjtCMzk3OzExMDMgMTE2NyAxMUIyOyAjICjrjpc7IOuOlzsg4YSD4YWn4YayOyDrjpc7IOGEg+GFp+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgRFlFT0xCCitCMzk4O0IzOTg7MTEwMyAxMTY3IDExQjM7QjM5ODsxMTAzIDExNjcgMTFCMzsgIyAo646YOyDrjpg7IOGEg+GFp+GGszsg646YOyDhhIPhhafhhrM7ICkgSEFOR1VMIFNZTExBQkxFIERZRU9MUworQjM5OTtCMzk5OzExMDMgMTE2NyAxMUI0O0IzOTk7MTEwMyAxMTY3IDExQjQ7ICMgKOuOmTsg646ZOyDhhIPhhafhhrQ7IOuOmTsg4YSD4YWn4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBEWUVPTFQKK0IzOUE7QjM5QTsxMTAzIDExNjcgMTFCNTtCMzlBOzExMDMgMTE2NyAxMUI1OyAjICjrjpo7IOuOmjsg4YSD4YWn4Ya1OyDrjpo7IOGEg+GFp+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgRFlFT0xQCitCMzlCO0IzOUI7MTEwMyAxMTY3IDExQjY7QjM5QjsxMTAzIDExNjcgMTFCNjsgIyAo646bOyDrjps7IOGEg+GFp+GGtjsg646bOyDhhIPhhafhhrY7ICkgSEFOR1VMIFNZTExBQkxFIERZRU9MSAorQjM5QztCMzlDOzExMDMgMTE2NyAxMUI3O0IzOUM7MTEwMyAxMTY3IDExQjc7ICMgKOuOnDsg646cOyDhhIPhhafhhrc7IOuOnDsg4YSD4YWn4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBEWUVPTQorQjM5RDtCMzlEOzExMDMgMTE2NyAxMUI4O0IzOUQ7MTEwMyAxMTY3IDExQjg7ICMgKOuOnTsg646dOyDhhIPhhafhhrg7IOuOnTsg4YSD4YWn4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBEWUVPQgorQjM5RTtCMzlFOzExMDMgMTE2NyAxMUI5O0IzOUU7MTEwMyAxMTY3IDExQjk7ICMgKOuOnjsg646eOyDhhIPhhafhhrk7IOuOnjsg4YSD4YWn4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBEWUVPQlMKK0IzOUY7QjM5RjsxMTAzIDExNjcgMTFCQTtCMzlGOzExMDMgMTE2NyAxMUJBOyAjICjrjp87IOuOnzsg4YSD4YWn4Ya6OyDrjp87IOGEg+GFp+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgRFlFT1MKK0IzQTA7QjNBMDsxMTAzIDExNjcgMTFCQjtCM0EwOzExMDMgMTE2NyAxMUJCOyAjICjrjqA7IOuOoDsg4YSD4YWn4Ya7OyDrjqA7IOGEg+GFp+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgRFlFT1NTCitCM0ExO0IzQTE7MTEwMyAxMTY3IDExQkM7QjNBMTsxMTAzIDExNjcgMTFCQzsgIyAo646hOyDrjqE7IOGEg+GFp+GGvDsg646hOyDhhIPhhafhhrw7ICkgSEFOR1VMIFNZTExBQkxFIERZRU9ORworQjNBMjtCM0EyOzExMDMgMTE2NyAxMUJEO0IzQTI7MTEwMyAxMTY3IDExQkQ7ICMgKOuOojsg646iOyDhhIPhhafhhr07IOuOojsg4YSD4YWn4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBEWUVPSgorQjNBMztCM0EzOzExMDMgMTE2NyAxMUJFO0IzQTM7MTEwMyAxMTY3IDExQkU7ICMgKOuOozsg646jOyDhhIPhhafhhr47IOuOozsg4YSD4YWn4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBEWUVPQworQjNBNDtCM0E0OzExMDMgMTE2NyAxMUJGO0IzQTQ7MTEwMyAxMTY3IDExQkY7ICMgKOuOpDsg646kOyDhhIPhhafhhr87IOuOpDsg4YSD4YWn4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBEWUVPSworQjNBNTtCM0E1OzExMDMgMTE2NyAxMUMwO0IzQTU7MTEwMyAxMTY3IDExQzA7ICMgKOuOpTsg646lOyDhhIPhhafhh4A7IOuOpTsg4YSD4YWn4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBEWUVPVAorQjNBNjtCM0E2OzExMDMgMTE2NyAxMUMxO0IzQTY7MTEwMyAxMTY3IDExQzE7ICMgKOuOpjsg646mOyDhhIPhhafhh4E7IOuOpjsg4YSD4YWn4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBEWUVPUAorQjNBNztCM0E3OzExMDMgMTE2NyAxMUMyO0IzQTc7MTEwMyAxMTY3IDExQzI7ICMgKOuOpzsg646nOyDhhIPhhafhh4I7IOuOpzsg4YSD4YWn4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBEWUVPSAorQjNBODtCM0E4OzExMDMgMTE2ODtCM0E4OzExMDMgMTE2ODsgIyAo646oOyDrjqg7IOGEg+GFqDsg646oOyDhhIPhhag7ICkgSEFOR1VMIFNZTExBQkxFIERZRQorQjNBOTtCM0E5OzExMDMgMTE2OCAxMUE4O0IzQTk7MTEwMyAxMTY4IDExQTg7ICMgKOuOqTsg646pOyDhhIPhhajhhqg7IOuOqTsg4YSD4YWo4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBEWUVHCitCM0FBO0IzQUE7MTEwMyAxMTY4IDExQTk7QjNBQTsxMTAzIDExNjggMTFBOTsgIyAo646qOyDrjqo7IOGEg+GFqOGGqTsg646qOyDhhIPhhajhhqk7ICkgSEFOR1VMIFNZTExBQkxFIERZRUdHCitCM0FCO0IzQUI7MTEwMyAxMTY4IDExQUE7QjNBQjsxMTAzIDExNjggMTFBQTsgIyAo646rOyDrjqs7IOGEg+GFqOGGqjsg646rOyDhhIPhhajhhqo7ICkgSEFOR1VMIFNZTExBQkxFIERZRUdTCitCM0FDO0IzQUM7MTEwMyAxMTY4IDExQUI7QjNBQzsxMTAzIDExNjggMTFBQjsgIyAo646sOyDrjqw7IOGEg+GFqOGGqzsg646sOyDhhIPhhajhhqs7ICkgSEFOR1VMIFNZTExBQkxFIERZRU4KK0IzQUQ7QjNBRDsxMTAzIDExNjggMTFBQztCM0FEOzExMDMgMTE2OCAxMUFDOyAjICjrjq07IOuOrTsg4YSD4YWo4YasOyDrjq07IOGEg+GFqOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgRFlFTkoKK0IzQUU7QjNBRTsxMTAzIDExNjggMTFBRDtCM0FFOzExMDMgMTE2OCAxMUFEOyAjICjrjq47IOuOrjsg4YSD4YWo4YatOyDrjq47IOGEg+GFqOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRFlFTkgKK0IzQUY7QjNBRjsxMTAzIDExNjggMTFBRTtCM0FGOzExMDMgMTE2OCAxMUFFOyAjICjrjq87IOuOrzsg4YSD4YWo4YauOyDrjq87IOGEg+GFqOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgRFlFRAorQjNCMDtCM0IwOzExMDMgMTE2OCAxMUFGO0IzQjA7MTEwMyAxMTY4IDExQUY7ICMgKOuOsDsg646wOyDhhIPhhajhhq87IOuOsDsg4YSD4YWo4YavOyApIEhBTkdVTCBTWUxMQUJMRSBEWUVMCitCM0IxO0IzQjE7MTEwMyAxMTY4IDExQjA7QjNCMTsxMTAzIDExNjggMTFCMDsgIyAo646xOyDrjrE7IOGEg+GFqOGGsDsg646xOyDhhIPhhajhhrA7ICkgSEFOR1VMIFNZTExBQkxFIERZRUxHCitCM0IyO0IzQjI7MTEwMyAxMTY4IDExQjE7QjNCMjsxMTAzIDExNjggMTFCMTsgIyAo646yOyDrjrI7IOGEg+GFqOGGsTsg646yOyDhhIPhhajhhrE7ICkgSEFOR1VMIFNZTExBQkxFIERZRUxNCitCM0IzO0IzQjM7MTEwMyAxMTY4IDExQjI7QjNCMzsxMTAzIDExNjggMTFCMjsgIyAo646zOyDrjrM7IOGEg+GFqOGGsjsg646zOyDhhIPhhajhhrI7ICkgSEFOR1VMIFNZTExBQkxFIERZRUxCCitCM0I0O0IzQjQ7MTEwMyAxMTY4IDExQjM7QjNCNDsxMTAzIDExNjggMTFCMzsgIyAo6460OyDrjrQ7IOGEg+GFqOGGszsg6460OyDhhIPhhajhhrM7ICkgSEFOR1VMIFNZTExBQkxFIERZRUxTCitCM0I1O0IzQjU7MTEwMyAxMTY4IDExQjQ7QjNCNTsxMTAzIDExNjggMTFCNDsgIyAo6461OyDrjrU7IOGEg+GFqOGGtDsg6461OyDhhIPhhajhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIERZRUxUCitCM0I2O0IzQjY7MTEwMyAxMTY4IDExQjU7QjNCNjsxMTAzIDExNjggMTFCNTsgIyAo6462OyDrjrY7IOGEg+GFqOGGtTsg6462OyDhhIPhhajhhrU7ICkgSEFOR1VMIFNZTExBQkxFIERZRUxQCitCM0I3O0IzQjc7MTEwMyAxMTY4IDExQjY7QjNCNzsxMTAzIDExNjggMTFCNjsgIyAo6463OyDrjrc7IOGEg+GFqOGGtjsg6463OyDhhIPhhajhhrY7ICkgSEFOR1VMIFNZTExBQkxFIERZRUxICitCM0I4O0IzQjg7MTEwMyAxMTY4IDExQjc7QjNCODsxMTAzIDExNjggMTFCNzsgIyAo6464OyDrjrg7IOGEg+GFqOGGtzsg6464OyDhhIPhhajhhrc7ICkgSEFOR1VMIFNZTExBQkxFIERZRU0KK0IzQjk7QjNCOTsxMTAzIDExNjggMTFCODtCM0I5OzExMDMgMTE2OCAxMUI4OyAjICjrjrk7IOuOuTsg4YSD4YWo4Ya4OyDrjrk7IOGEg+GFqOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgRFlFQgorQjNCQTtCM0JBOzExMDMgMTE2OCAxMUI5O0IzQkE7MTEwMyAxMTY4IDExQjk7ICMgKOuOujsg6466OyDhhIPhhajhhrk7IOuOujsg4YSD4YWo4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBEWUVCUworQjNCQjtCM0JCOzExMDMgMTE2OCAxMUJBO0IzQkI7MTEwMyAxMTY4IDExQkE7ICMgKOuOuzsg6467OyDhhIPhhajhhro7IOuOuzsg4YSD4YWo4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBEWUVTCitCM0JDO0IzQkM7MTEwMyAxMTY4IDExQkI7QjNCQzsxMTAzIDExNjggMTFCQjsgIyAo6468OyDrjrw7IOGEg+GFqOGGuzsg6468OyDhhIPhhajhhrs7ICkgSEFOR1VMIFNZTExBQkxFIERZRVNTCitCM0JEO0IzQkQ7MTEwMyAxMTY4IDExQkM7QjNCRDsxMTAzIDExNjggMTFCQzsgIyAo6469OyDrjr07IOGEg+GFqOGGvDsg6469OyDhhIPhhajhhrw7ICkgSEFOR1VMIFNZTExBQkxFIERZRU5HCitCM0JFO0IzQkU7MTEwMyAxMTY4IDExQkQ7QjNCRTsxMTAzIDExNjggMTFCRDsgIyAo646+OyDrjr47IOGEg+GFqOGGvTsg646+OyDhhIPhhajhhr07ICkgSEFOR1VMIFNZTExBQkxFIERZRUoKK0IzQkY7QjNCRjsxMTAzIDExNjggMTFCRTtCM0JGOzExMDMgMTE2OCAxMUJFOyAjICjrjr87IOuOvzsg4YSD4YWo4Ya+OyDrjr87IOGEg+GFqOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgRFlFQworQjNDMDtCM0MwOzExMDMgMTE2OCAxMUJGO0IzQzA7MTEwMyAxMTY4IDExQkY7ICMgKOuPgDsg64+AOyDhhIPhhajhhr87IOuPgDsg4YSD4YWo4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBEWUVLCitCM0MxO0IzQzE7MTEwMyAxMTY4IDExQzA7QjNDMTsxMTAzIDExNjggMTFDMDsgIyAo64+BOyDrj4E7IOGEg+GFqOGHgDsg64+BOyDhhIPhhajhh4A7ICkgSEFOR1VMIFNZTExBQkxFIERZRVQKK0IzQzI7QjNDMjsxMTAzIDExNjggMTFDMTtCM0MyOzExMDMgMTE2OCAxMUMxOyAjICjrj4I7IOuPgjsg4YSD4YWo4YeBOyDrj4I7IOGEg+GFqOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgRFlFUAorQjNDMztCM0MzOzExMDMgMTE2OCAxMUMyO0IzQzM7MTEwMyAxMTY4IDExQzI7ICMgKOuPgzsg64+DOyDhhIPhhajhh4I7IOuPgzsg4YSD4YWo4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBEWUVICitCM0M0O0IzQzQ7MTEwMyAxMTY5O0IzQzQ7MTEwMyAxMTY5OyAjICjrj4Q7IOuPhDsg4YSD4YWpOyDrj4Q7IOGEg+GFqTsgKSBIQU5HVUwgU1lMTEFCTEUgRE8KK0IzQzU7QjNDNTsxMTAzIDExNjkgMTFBODtCM0M1OzExMDMgMTE2OSAxMUE4OyAjICjrj4U7IOuPhTsg4YSD4YWp4YaoOyDrj4U7IOGEg+GFqeGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRE9HCitCM0M2O0IzQzY7MTEwMyAxMTY5IDExQTk7QjNDNjsxMTAzIDExNjkgMTFBOTsgIyAo64+GOyDrj4Y7IOGEg+GFqeGGqTsg64+GOyDhhIPhhanhhqk7ICkgSEFOR1VMIFNZTExBQkxFIERPR0cKK0IzQzc7QjNDNzsxMTAzIDExNjkgMTFBQTtCM0M3OzExMDMgMTE2OSAxMUFBOyAjICjrj4c7IOuPhzsg4YSD4YWp4YaqOyDrj4c7IOGEg+GFqeGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgRE9HUworQjNDODtCM0M4OzExMDMgMTE2OSAxMUFCO0IzQzg7MTEwMyAxMTY5IDExQUI7ICMgKOuPiDsg64+IOyDhhIPhhanhhqs7IOuPiDsg4YSD4YWp4YarOyApIEhBTkdVTCBTWUxMQUJMRSBET04KK0IzQzk7QjNDOTsxMTAzIDExNjkgMTFBQztCM0M5OzExMDMgMTE2OSAxMUFDOyAjICjrj4k7IOuPiTsg4YSD4YWp4YasOyDrj4k7IOGEg+GFqeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgRE9OSgorQjNDQTtCM0NBOzExMDMgMTE2OSAxMUFEO0IzQ0E7MTEwMyAxMTY5IDExQUQ7ICMgKOuPijsg64+KOyDhhIPhhanhhq07IOuPijsg4YSD4YWp4YatOyApIEhBTkdVTCBTWUxMQUJMRSBET05ICitCM0NCO0IzQ0I7MTEwMyAxMTY5IDExQUU7QjNDQjsxMTAzIDExNjkgMTFBRTsgIyAo64+LOyDrj4s7IOGEg+GFqeGGrjsg64+LOyDhhIPhhanhhq47ICkgSEFOR1VMIFNZTExBQkxFIERPRAorQjNDQztCM0NDOzExMDMgMTE2OSAxMUFGO0IzQ0M7MTEwMyAxMTY5IDExQUY7ICMgKOuPjDsg64+MOyDhhIPhhanhhq87IOuPjDsg4YSD4YWp4YavOyApIEhBTkdVTCBTWUxMQUJMRSBET0wKK0IzQ0Q7QjNDRDsxMTAzIDExNjkgMTFCMDtCM0NEOzExMDMgMTE2OSAxMUIwOyAjICjrj407IOuPjTsg4YSD4YWp4YawOyDrj407IOGEg+GFqeGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgRE9MRworQjNDRTtCM0NFOzExMDMgMTE2OSAxMUIxO0IzQ0U7MTEwMyAxMTY5IDExQjE7ICMgKOuPjjsg64+OOyDhhIPhhanhhrE7IOuPjjsg4YSD4YWp4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBET0xNCitCM0NGO0IzQ0Y7MTEwMyAxMTY5IDExQjI7QjNDRjsxMTAzIDExNjkgMTFCMjsgIyAo64+POyDrj487IOGEg+GFqeGGsjsg64+POyDhhIPhhanhhrI7ICkgSEFOR1VMIFNZTExBQkxFIERPTEIKK0IzRDA7QjNEMDsxMTAzIDExNjkgMTFCMztCM0QwOzExMDMgMTE2OSAxMUIzOyAjICjrj5A7IOuPkDsg4YSD4YWp4YazOyDrj5A7IOGEg+GFqeGGszsgKSBIQU5HVUwgU1lMTEFCTEUgRE9MUworQjNEMTtCM0QxOzExMDMgMTE2OSAxMUI0O0IzRDE7MTEwMyAxMTY5IDExQjQ7ICMgKOuPkTsg64+ROyDhhIPhhanhhrQ7IOuPkTsg4YSD4YWp4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBET0xUCitCM0QyO0IzRDI7MTEwMyAxMTY5IDExQjU7QjNEMjsxMTAzIDExNjkgMTFCNTsgIyAo64+SOyDrj5I7IOGEg+GFqeGGtTsg64+SOyDhhIPhhanhhrU7ICkgSEFOR1VMIFNZTExBQkxFIERPTFAKK0IzRDM7QjNEMzsxMTAzIDExNjkgMTFCNjtCM0QzOzExMDMgMTE2OSAxMUI2OyAjICjrj5M7IOuPkzsg4YSD4YWp4Ya2OyDrj5M7IOGEg+GFqeGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgRE9MSAorQjNENDtCM0Q0OzExMDMgMTE2OSAxMUI3O0IzRDQ7MTEwMyAxMTY5IDExQjc7ICMgKOuPlDsg64+UOyDhhIPhhanhhrc7IOuPlDsg4YSD4YWp4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBET00KK0IzRDU7QjNENTsxMTAzIDExNjkgMTFCODtCM0Q1OzExMDMgMTE2OSAxMUI4OyAjICjrj5U7IOuPlTsg4YSD4YWp4Ya4OyDrj5U7IOGEg+GFqeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgRE9CCitCM0Q2O0IzRDY7MTEwMyAxMTY5IDExQjk7QjNENjsxMTAzIDExNjkgMTFCOTsgIyAo64+WOyDrj5Y7IOGEg+GFqeGGuTsg64+WOyDhhIPhhanhhrk7ICkgSEFOR1VMIFNZTExBQkxFIERPQlMKK0IzRDc7QjNENzsxMTAzIDExNjkgMTFCQTtCM0Q3OzExMDMgMTE2OSAxMUJBOyAjICjrj5c7IOuPlzsg4YSD4YWp4Ya6OyDrj5c7IOGEg+GFqeGGujsgKSBIQU5HVUwgU1lMTEFCTEUgRE9TCitCM0Q4O0IzRDg7MTEwMyAxMTY5IDExQkI7QjNEODsxMTAzIDExNjkgMTFCQjsgIyAo64+YOyDrj5g7IOGEg+GFqeGGuzsg64+YOyDhhIPhhanhhrs7ICkgSEFOR1VMIFNZTExBQkxFIERPU1MKK0IzRDk7QjNEOTsxMTAzIDExNjkgMTFCQztCM0Q5OzExMDMgMTE2OSAxMUJDOyAjICjrj5k7IOuPmTsg4YSD4YWp4Ya8OyDrj5k7IOGEg+GFqeGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgRE9ORworQjNEQTtCM0RBOzExMDMgMTE2OSAxMUJEO0IzREE7MTEwMyAxMTY5IDExQkQ7ICMgKOuPmjsg64+aOyDhhIPhhanhhr07IOuPmjsg4YSD4YWp4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBET0oKK0IzREI7QjNEQjsxMTAzIDExNjkgMTFCRTtCM0RCOzExMDMgMTE2OSAxMUJFOyAjICjrj5s7IOuPmzsg4YSD4YWp4Ya+OyDrj5s7IOGEg+GFqeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgRE9DCitCM0RDO0IzREM7MTEwMyAxMTY5IDExQkY7QjNEQzsxMTAzIDExNjkgMTFCRjsgIyAo64+cOyDrj5w7IOGEg+GFqeGGvzsg64+cOyDhhIPhhanhhr87ICkgSEFOR1VMIFNZTExBQkxFIERPSworQjNERDtCM0REOzExMDMgMTE2OSAxMUMwO0IzREQ7MTEwMyAxMTY5IDExQzA7ICMgKOuPnTsg64+dOyDhhIPhhanhh4A7IOuPnTsg4YSD4YWp4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBET1QKK0IzREU7QjNERTsxMTAzIDExNjkgMTFDMTtCM0RFOzExMDMgMTE2OSAxMUMxOyAjICjrj547IOuPnjsg4YSD4YWp4YeBOyDrj547IOGEg+GFqeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgRE9QCitCM0RGO0IzREY7MTEwMyAxMTY5IDExQzI7QjNERjsxMTAzIDExNjkgMTFDMjsgIyAo64+fOyDrj587IOGEg+GFqeGHgjsg64+fOyDhhIPhhanhh4I7ICkgSEFOR1VMIFNZTExBQkxFIERPSAorQjNFMDtCM0UwOzExMDMgMTE2QTtCM0UwOzExMDMgMTE2QTsgIyAo64+gOyDrj6A7IOGEg+GFqjsg64+gOyDhhIPhhao7ICkgSEFOR1VMIFNZTExBQkxFIERXQQorQjNFMTtCM0UxOzExMDMgMTE2QSAxMUE4O0IzRTE7MTEwMyAxMTZBIDExQTg7ICMgKOuPoTsg64+hOyDhhIPhharhhqg7IOuPoTsg4YSD4YWq4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBEV0FHCitCM0UyO0IzRTI7MTEwMyAxMTZBIDExQTk7QjNFMjsxMTAzIDExNkEgMTFBOTsgIyAo64+iOyDrj6I7IOGEg+GFquGGqTsg64+iOyDhhIPhharhhqk7ICkgSEFOR1VMIFNZTExBQkxFIERXQUdHCitCM0UzO0IzRTM7MTEwMyAxMTZBIDExQUE7QjNFMzsxMTAzIDExNkEgMTFBQTsgIyAo64+jOyDrj6M7IOGEg+GFquGGqjsg64+jOyDhhIPhharhhqo7ICkgSEFOR1VMIFNZTExBQkxFIERXQUdTCitCM0U0O0IzRTQ7MTEwMyAxMTZBIDExQUI7QjNFNDsxMTAzIDExNkEgMTFBQjsgIyAo64+kOyDrj6Q7IOGEg+GFquGGqzsg64+kOyDhhIPhharhhqs7ICkgSEFOR1VMIFNZTExBQkxFIERXQU4KK0IzRTU7QjNFNTsxMTAzIDExNkEgMTFBQztCM0U1OzExMDMgMTE2QSAxMUFDOyAjICjrj6U7IOuPpTsg4YSD4YWq4YasOyDrj6U7IOGEg+GFquGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgRFdBTkoKK0IzRTY7QjNFNjsxMTAzIDExNkEgMTFBRDtCM0U2OzExMDMgMTE2QSAxMUFEOyAjICjrj6Y7IOuPpjsg4YSD4YWq4YatOyDrj6Y7IOGEg+GFquGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRFdBTkgKK0IzRTc7QjNFNzsxMTAzIDExNkEgMTFBRTtCM0U3OzExMDMgMTE2QSAxMUFFOyAjICjrj6c7IOuPpzsg4YSD4YWq4YauOyDrj6c7IOGEg+GFquGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgRFdBRAorQjNFODtCM0U4OzExMDMgMTE2QSAxMUFGO0IzRTg7MTEwMyAxMTZBIDExQUY7ICMgKOuPqDsg64+oOyDhhIPhharhhq87IOuPqDsg4YSD4YWq4YavOyApIEhBTkdVTCBTWUxMQUJMRSBEV0FMCitCM0U5O0IzRTk7MTEwMyAxMTZBIDExQjA7QjNFOTsxMTAzIDExNkEgMTFCMDsgIyAo64+pOyDrj6k7IOGEg+GFquGGsDsg64+pOyDhhIPhharhhrA7ICkgSEFOR1VMIFNZTExBQkxFIERXQUxHCitCM0VBO0IzRUE7MTEwMyAxMTZBIDExQjE7QjNFQTsxMTAzIDExNkEgMTFCMTsgIyAo64+qOyDrj6o7IOGEg+GFquGGsTsg64+qOyDhhIPhharhhrE7ICkgSEFOR1VMIFNZTExBQkxFIERXQUxNCitCM0VCO0IzRUI7MTEwMyAxMTZBIDExQjI7QjNFQjsxMTAzIDExNkEgMTFCMjsgIyAo64+rOyDrj6s7IOGEg+GFquGGsjsg64+rOyDhhIPhharhhrI7ICkgSEFOR1VMIFNZTExBQkxFIERXQUxCCitCM0VDO0IzRUM7MTEwMyAxMTZBIDExQjM7QjNFQzsxMTAzIDExNkEgMTFCMzsgIyAo64+sOyDrj6w7IOGEg+GFquGGszsg64+sOyDhhIPhharhhrM7ICkgSEFOR1VMIFNZTExBQkxFIERXQUxTCitCM0VEO0IzRUQ7MTEwMyAxMTZBIDExQjQ7QjNFRDsxMTAzIDExNkEgMTFCNDsgIyAo64+tOyDrj607IOGEg+GFquGGtDsg64+tOyDhhIPhharhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIERXQUxUCitCM0VFO0IzRUU7MTEwMyAxMTZBIDExQjU7QjNFRTsxMTAzIDExNkEgMTFCNTsgIyAo64+uOyDrj647IOGEg+GFquGGtTsg64+uOyDhhIPhharhhrU7ICkgSEFOR1VMIFNZTExBQkxFIERXQUxQCitCM0VGO0IzRUY7MTEwMyAxMTZBIDExQjY7QjNFRjsxMTAzIDExNkEgMTFCNjsgIyAo64+vOyDrj687IOGEg+GFquGGtjsg64+vOyDhhIPhharhhrY7ICkgSEFOR1VMIFNZTExBQkxFIERXQUxICitCM0YwO0IzRjA7MTEwMyAxMTZBIDExQjc7QjNGMDsxMTAzIDExNkEgMTFCNzsgIyAo64+wOyDrj7A7IOGEg+GFquGGtzsg64+wOyDhhIPhharhhrc7ICkgSEFOR1VMIFNZTExBQkxFIERXQU0KK0IzRjE7QjNGMTsxMTAzIDExNkEgMTFCODtCM0YxOzExMDMgMTE2QSAxMUI4OyAjICjrj7E7IOuPsTsg4YSD4YWq4Ya4OyDrj7E7IOGEg+GFquGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgRFdBQgorQjNGMjtCM0YyOzExMDMgMTE2QSAxMUI5O0IzRjI7MTEwMyAxMTZBIDExQjk7ICMgKOuPsjsg64+yOyDhhIPhharhhrk7IOuPsjsg4YSD4YWq4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBEV0FCUworQjNGMztCM0YzOzExMDMgMTE2QSAxMUJBO0IzRjM7MTEwMyAxMTZBIDExQkE7ICMgKOuPszsg64+zOyDhhIPhharhhro7IOuPszsg4YSD4YWq4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBEV0FTCitCM0Y0O0IzRjQ7MTEwMyAxMTZBIDExQkI7QjNGNDsxMTAzIDExNkEgMTFCQjsgIyAo64+0OyDrj7Q7IOGEg+GFquGGuzsg64+0OyDhhIPhharhhrs7ICkgSEFOR1VMIFNZTExBQkxFIERXQVNTCitCM0Y1O0IzRjU7MTEwMyAxMTZBIDExQkM7QjNGNTsxMTAzIDExNkEgMTFCQzsgIyAo64+1OyDrj7U7IOGEg+GFquGGvDsg64+1OyDhhIPhharhhrw7ICkgSEFOR1VMIFNZTExBQkxFIERXQU5HCitCM0Y2O0IzRjY7MTEwMyAxMTZBIDExQkQ7QjNGNjsxMTAzIDExNkEgMTFCRDsgIyAo64+2OyDrj7Y7IOGEg+GFquGGvTsg64+2OyDhhIPhharhhr07ICkgSEFOR1VMIFNZTExBQkxFIERXQUoKK0IzRjc7QjNGNzsxMTAzIDExNkEgMTFCRTtCM0Y3OzExMDMgMTE2QSAxMUJFOyAjICjrj7c7IOuPtzsg4YSD4YWq4Ya+OyDrj7c7IOGEg+GFquGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgRFdBQworQjNGODtCM0Y4OzExMDMgMTE2QSAxMUJGO0IzRjg7MTEwMyAxMTZBIDExQkY7ICMgKOuPuDsg64+4OyDhhIPhharhhr87IOuPuDsg4YSD4YWq4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBEV0FLCitCM0Y5O0IzRjk7MTEwMyAxMTZBIDExQzA7QjNGOTsxMTAzIDExNkEgMTFDMDsgIyAo64+5OyDrj7k7IOGEg+GFquGHgDsg64+5OyDhhIPhharhh4A7ICkgSEFOR1VMIFNZTExBQkxFIERXQVQKK0IzRkE7QjNGQTsxMTAzIDExNkEgMTFDMTtCM0ZBOzExMDMgMTE2QSAxMUMxOyAjICjrj7o7IOuPujsg4YSD4YWq4YeBOyDrj7o7IOGEg+GFquGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgRFdBUAorQjNGQjtCM0ZCOzExMDMgMTE2QSAxMUMyO0IzRkI7MTEwMyAxMTZBIDExQzI7ICMgKOuPuzsg64+7OyDhhIPhharhh4I7IOuPuzsg4YSD4YWq4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBEV0FICitCM0ZDO0IzRkM7MTEwMyAxMTZCO0IzRkM7MTEwMyAxMTZCOyAjICjrj7w7IOuPvDsg4YSD4YWrOyDrj7w7IOGEg+GFqzsgKSBIQU5HVUwgU1lMTEFCTEUgRFdBRQorQjNGRDtCM0ZEOzExMDMgMTE2QiAxMUE4O0IzRkQ7MTEwMyAxMTZCIDExQTg7ICMgKOuPvTsg64+9OyDhhIPhhavhhqg7IOuPvTsg4YSD4YWr4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBEV0FFRworQjNGRTtCM0ZFOzExMDMgMTE2QiAxMUE5O0IzRkU7MTEwMyAxMTZCIDExQTk7ICMgKOuPvjsg64++OyDhhIPhhavhhqk7IOuPvjsg4YSD4YWr4YapOyApIEhBTkdVTCBTWUxMQUJMRSBEV0FFR0cKK0IzRkY7QjNGRjsxMTAzIDExNkIgMTFBQTtCM0ZGOzExMDMgMTE2QiAxMUFBOyAjICjrj787IOuPvzsg4YSD4YWr4YaqOyDrj787IOGEg+GFq+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgRFdBRUdTCitCNDAwO0I0MDA7MTEwMyAxMTZCIDExQUI7QjQwMDsxMTAzIDExNkIgMTFBQjsgIyAo65CAOyDrkIA7IOGEg+GFq+GGqzsg65CAOyDhhIPhhavhhqs7ICkgSEFOR1VMIFNZTExBQkxFIERXQUVOCitCNDAxO0I0MDE7MTEwMyAxMTZCIDExQUM7QjQwMTsxMTAzIDExNkIgMTFBQzsgIyAo65CBOyDrkIE7IOGEg+GFq+GGrDsg65CBOyDhhIPhhavhhqw7ICkgSEFOR1VMIFNZTExBQkxFIERXQUVOSgorQjQwMjtCNDAyOzExMDMgMTE2QiAxMUFEO0I0MDI7MTEwMyAxMTZCIDExQUQ7ICMgKOuQgjsg65CCOyDhhIPhhavhhq07IOuQgjsg4YSD4YWr4YatOyApIEhBTkdVTCBTWUxMQUJMRSBEV0FFTkgKK0I0MDM7QjQwMzsxMTAzIDExNkIgMTFBRTtCNDAzOzExMDMgMTE2QiAxMUFFOyAjICjrkIM7IOuQgzsg4YSD4YWr4YauOyDrkIM7IOGEg+GFq+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgRFdBRUQKK0I0MDQ7QjQwNDsxMTAzIDExNkIgMTFBRjtCNDA0OzExMDMgMTE2QiAxMUFGOyAjICjrkIQ7IOuQhDsg4YSD4YWr4YavOyDrkIQ7IOGEg+GFq+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgRFdBRUwKK0I0MDU7QjQwNTsxMTAzIDExNkIgMTFCMDtCNDA1OzExMDMgMTE2QiAxMUIwOyAjICjrkIU7IOuQhTsg4YSD4YWr4YawOyDrkIU7IOGEg+GFq+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgRFdBRUxHCitCNDA2O0I0MDY7MTEwMyAxMTZCIDExQjE7QjQwNjsxMTAzIDExNkIgMTFCMTsgIyAo65CGOyDrkIY7IOGEg+GFq+GGsTsg65CGOyDhhIPhhavhhrE7ICkgSEFOR1VMIFNZTExBQkxFIERXQUVMTQorQjQwNztCNDA3OzExMDMgMTE2QiAxMUIyO0I0MDc7MTEwMyAxMTZCIDExQjI7ICMgKOuQhzsg65CHOyDhhIPhhavhhrI7IOuQhzsg4YSD4YWr4YayOyApIEhBTkdVTCBTWUxMQUJMRSBEV0FFTEIKK0I0MDg7QjQwODsxMTAzIDExNkIgMTFCMztCNDA4OzExMDMgMTE2QiAxMUIzOyAjICjrkIg7IOuQiDsg4YSD4YWr4YazOyDrkIg7IOGEg+GFq+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgRFdBRUxTCitCNDA5O0I0MDk7MTEwMyAxMTZCIDExQjQ7QjQwOTsxMTAzIDExNkIgMTFCNDsgIyAo65CJOyDrkIk7IOGEg+GFq+GGtDsg65CJOyDhhIPhhavhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIERXQUVMVAorQjQwQTtCNDBBOzExMDMgMTE2QiAxMUI1O0I0MEE7MTEwMyAxMTZCIDExQjU7ICMgKOuQijsg65CKOyDhhIPhhavhhrU7IOuQijsg4YSD4YWr4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBEV0FFTFAKK0I0MEI7QjQwQjsxMTAzIDExNkIgMTFCNjtCNDBCOzExMDMgMTE2QiAxMUI2OyAjICjrkIs7IOuQizsg4YSD4YWr4Ya2OyDrkIs7IOGEg+GFq+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgRFdBRUxICitCNDBDO0I0MEM7MTEwMyAxMTZCIDExQjc7QjQwQzsxMTAzIDExNkIgMTFCNzsgIyAo65CMOyDrkIw7IOGEg+GFq+GGtzsg65CMOyDhhIPhhavhhrc7ICkgSEFOR1VMIFNZTExBQkxFIERXQUVNCitCNDBEO0I0MEQ7MTEwMyAxMTZCIDExQjg7QjQwRDsxMTAzIDExNkIgMTFCODsgIyAo65CNOyDrkI07IOGEg+GFq+GGuDsg65CNOyDhhIPhhavhhrg7ICkgSEFOR1VMIFNZTExBQkxFIERXQUVCCitCNDBFO0I0MEU7MTEwMyAxMTZCIDExQjk7QjQwRTsxMTAzIDExNkIgMTFCOTsgIyAo65COOyDrkI47IOGEg+GFq+GGuTsg65COOyDhhIPhhavhhrk7ICkgSEFOR1VMIFNZTExBQkxFIERXQUVCUworQjQwRjtCNDBGOzExMDMgMTE2QiAxMUJBO0I0MEY7MTEwMyAxMTZCIDExQkE7ICMgKOuQjzsg65CPOyDhhIPhhavhhro7IOuQjzsg4YSD4YWr4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBEV0FFUworQjQxMDtCNDEwOzExMDMgMTE2QiAxMUJCO0I0MTA7MTEwMyAxMTZCIDExQkI7ICMgKOuQkDsg65CQOyDhhIPhhavhhrs7IOuQkDsg4YSD4YWr4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBEV0FFU1MKK0I0MTE7QjQxMTsxMTAzIDExNkIgMTFCQztCNDExOzExMDMgMTE2QiAxMUJDOyAjICjrkJE7IOuQkTsg4YSD4YWr4Ya8OyDrkJE7IOGEg+GFq+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgRFdBRU5HCitCNDEyO0I0MTI7MTEwMyAxMTZCIDExQkQ7QjQxMjsxMTAzIDExNkIgMTFCRDsgIyAo65CSOyDrkJI7IOGEg+GFq+GGvTsg65CSOyDhhIPhhavhhr07ICkgSEFOR1VMIFNZTExBQkxFIERXQUVKCitCNDEzO0I0MTM7MTEwMyAxMTZCIDExQkU7QjQxMzsxMTAzIDExNkIgMTFCRTsgIyAo65CTOyDrkJM7IOGEg+GFq+GGvjsg65CTOyDhhIPhhavhhr47ICkgSEFOR1VMIFNZTExBQkxFIERXQUVDCitCNDE0O0I0MTQ7MTEwMyAxMTZCIDExQkY7QjQxNDsxMTAzIDExNkIgMTFCRjsgIyAo65CUOyDrkJQ7IOGEg+GFq+GGvzsg65CUOyDhhIPhhavhhr87ICkgSEFOR1VMIFNZTExBQkxFIERXQUVLCitCNDE1O0I0MTU7MTEwMyAxMTZCIDExQzA7QjQxNTsxMTAzIDExNkIgMTFDMDsgIyAo65CVOyDrkJU7IOGEg+GFq+GHgDsg65CVOyDhhIPhhavhh4A7ICkgSEFOR1VMIFNZTExBQkxFIERXQUVUCitCNDE2O0I0MTY7MTEwMyAxMTZCIDExQzE7QjQxNjsxMTAzIDExNkIgMTFDMTsgIyAo65CWOyDrkJY7IOGEg+GFq+GHgTsg65CWOyDhhIPhhavhh4E7ICkgSEFOR1VMIFNZTExBQkxFIERXQUVQCitCNDE3O0I0MTc7MTEwMyAxMTZCIDExQzI7QjQxNzsxMTAzIDExNkIgMTFDMjsgIyAo65CXOyDrkJc7IOGEg+GFq+GHgjsg65CXOyDhhIPhhavhh4I7ICkgSEFOR1VMIFNZTExBQkxFIERXQUVICitCNDE4O0I0MTg7MTEwMyAxMTZDO0I0MTg7MTEwMyAxMTZDOyAjICjrkJg7IOuQmDsg4YSD4YWsOyDrkJg7IOGEg+GFrDsgKSBIQU5HVUwgU1lMTEFCTEUgRE9FCitCNDE5O0I0MTk7MTEwMyAxMTZDIDExQTg7QjQxOTsxMTAzIDExNkMgMTFBODsgIyAo65CZOyDrkJk7IOGEg+GFrOGGqDsg65CZOyDhhIPhhazhhqg7ICkgSEFOR1VMIFNZTExBQkxFIERPRUcKK0I0MUE7QjQxQTsxMTAzIDExNkMgMTFBOTtCNDFBOzExMDMgMTE2QyAxMUE5OyAjICjrkJo7IOuQmjsg4YSD4YWs4YapOyDrkJo7IOGEg+GFrOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgRE9FR0cKK0I0MUI7QjQxQjsxMTAzIDExNkMgMTFBQTtCNDFCOzExMDMgMTE2QyAxMUFBOyAjICjrkJs7IOuQmzsg4YSD4YWs4YaqOyDrkJs7IOGEg+GFrOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgRE9FR1MKK0I0MUM7QjQxQzsxMTAzIDExNkMgMTFBQjtCNDFDOzExMDMgMTE2QyAxMUFCOyAjICjrkJw7IOuQnDsg4YSD4YWs4YarOyDrkJw7IOGEg+GFrOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgRE9FTgorQjQxRDtCNDFEOzExMDMgMTE2QyAxMUFDO0I0MUQ7MTEwMyAxMTZDIDExQUM7ICMgKOuQnTsg65CdOyDhhIPhhazhhqw7IOuQnTsg4YSD4YWs4YasOyApIEhBTkdVTCBTWUxMQUJMRSBET0VOSgorQjQxRTtCNDFFOzExMDMgMTE2QyAxMUFEO0I0MUU7MTEwMyAxMTZDIDExQUQ7ICMgKOuQnjsg65CeOyDhhIPhhazhhq07IOuQnjsg4YSD4YWs4YatOyApIEhBTkdVTCBTWUxMQUJMRSBET0VOSAorQjQxRjtCNDFGOzExMDMgMTE2QyAxMUFFO0I0MUY7MTEwMyAxMTZDIDExQUU7ICMgKOuQnzsg65CfOyDhhIPhhazhhq47IOuQnzsg4YSD4YWs4YauOyApIEhBTkdVTCBTWUxMQUJMRSBET0VECitCNDIwO0I0MjA7MTEwMyAxMTZDIDExQUY7QjQyMDsxMTAzIDExNkMgMTFBRjsgIyAo65CgOyDrkKA7IOGEg+GFrOGGrzsg65CgOyDhhIPhhazhhq87ICkgSEFOR1VMIFNZTExBQkxFIERPRUwKK0I0MjE7QjQyMTsxMTAzIDExNkMgMTFCMDtCNDIxOzExMDMgMTE2QyAxMUIwOyAjICjrkKE7IOuQoTsg4YSD4YWs4YawOyDrkKE7IOGEg+GFrOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgRE9FTEcKK0I0MjI7QjQyMjsxMTAzIDExNkMgMTFCMTtCNDIyOzExMDMgMTE2QyAxMUIxOyAjICjrkKI7IOuQojsg4YSD4YWs4YaxOyDrkKI7IOGEg+GFrOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgRE9FTE0KK0I0MjM7QjQyMzsxMTAzIDExNkMgMTFCMjtCNDIzOzExMDMgMTE2QyAxMUIyOyAjICjrkKM7IOuQozsg4YSD4YWs4YayOyDrkKM7IOGEg+GFrOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgRE9FTEIKK0I0MjQ7QjQyNDsxMTAzIDExNkMgMTFCMztCNDI0OzExMDMgMTE2QyAxMUIzOyAjICjrkKQ7IOuQpDsg4YSD4YWs4YazOyDrkKQ7IOGEg+GFrOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgRE9FTFMKK0I0MjU7QjQyNTsxMTAzIDExNkMgMTFCNDtCNDI1OzExMDMgMTE2QyAxMUI0OyAjICjrkKU7IOuQpTsg4YSD4YWs4Ya0OyDrkKU7IOGEg+GFrOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgRE9FTFQKK0I0MjY7QjQyNjsxMTAzIDExNkMgMTFCNTtCNDI2OzExMDMgMTE2QyAxMUI1OyAjICjrkKY7IOuQpjsg4YSD4YWs4Ya1OyDrkKY7IOGEg+GFrOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgRE9FTFAKK0I0Mjc7QjQyNzsxMTAzIDExNkMgMTFCNjtCNDI3OzExMDMgMTE2QyAxMUI2OyAjICjrkKc7IOuQpzsg4YSD4YWs4Ya2OyDrkKc7IOGEg+GFrOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgRE9FTEgKK0I0Mjg7QjQyODsxMTAzIDExNkMgMTFCNztCNDI4OzExMDMgMTE2QyAxMUI3OyAjICjrkKg7IOuQqDsg4YSD4YWs4Ya3OyDrkKg7IOGEg+GFrOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgRE9FTQorQjQyOTtCNDI5OzExMDMgMTE2QyAxMUI4O0I0Mjk7MTEwMyAxMTZDIDExQjg7ICMgKOuQqTsg65CpOyDhhIPhhazhhrg7IOuQqTsg4YSD4YWs4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBET0VCCitCNDJBO0I0MkE7MTEwMyAxMTZDIDExQjk7QjQyQTsxMTAzIDExNkMgMTFCOTsgIyAo65CqOyDrkKo7IOGEg+GFrOGGuTsg65CqOyDhhIPhhazhhrk7ICkgSEFOR1VMIFNZTExBQkxFIERPRUJTCitCNDJCO0I0MkI7MTEwMyAxMTZDIDExQkE7QjQyQjsxMTAzIDExNkMgMTFCQTsgIyAo65CrOyDrkKs7IOGEg+GFrOGGujsg65CrOyDhhIPhhazhhro7ICkgSEFOR1VMIFNZTExBQkxFIERPRVMKK0I0MkM7QjQyQzsxMTAzIDExNkMgMTFCQjtCNDJDOzExMDMgMTE2QyAxMUJCOyAjICjrkKw7IOuQrDsg4YSD4YWs4Ya7OyDrkKw7IOGEg+GFrOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgRE9FU1MKK0I0MkQ7QjQyRDsxMTAzIDExNkMgMTFCQztCNDJEOzExMDMgMTE2QyAxMUJDOyAjICjrkK07IOuQrTsg4YSD4YWs4Ya8OyDrkK07IOGEg+GFrOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgRE9FTkcKK0I0MkU7QjQyRTsxMTAzIDExNkMgMTFCRDtCNDJFOzExMDMgMTE2QyAxMUJEOyAjICjrkK47IOuQrjsg4YSD4YWs4Ya9OyDrkK47IOGEg+GFrOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgRE9FSgorQjQyRjtCNDJGOzExMDMgMTE2QyAxMUJFO0I0MkY7MTEwMyAxMTZDIDExQkU7ICMgKOuQrzsg65CvOyDhhIPhhazhhr47IOuQrzsg4YSD4YWs4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBET0VDCitCNDMwO0I0MzA7MTEwMyAxMTZDIDExQkY7QjQzMDsxMTAzIDExNkMgMTFCRjsgIyAo65CwOyDrkLA7IOGEg+GFrOGGvzsg65CwOyDhhIPhhazhhr87ICkgSEFOR1VMIFNZTExBQkxFIERPRUsKK0I0MzE7QjQzMTsxMTAzIDExNkMgMTFDMDtCNDMxOzExMDMgMTE2QyAxMUMwOyAjICjrkLE7IOuQsTsg4YSD4YWs4YeAOyDrkLE7IOGEg+GFrOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgRE9FVAorQjQzMjtCNDMyOzExMDMgMTE2QyAxMUMxO0I0MzI7MTEwMyAxMTZDIDExQzE7ICMgKOuQsjsg65CyOyDhhIPhhazhh4E7IOuQsjsg4YSD4YWs4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBET0VQCitCNDMzO0I0MzM7MTEwMyAxMTZDIDExQzI7QjQzMzsxMTAzIDExNkMgMTFDMjsgIyAo65CzOyDrkLM7IOGEg+GFrOGHgjsg65CzOyDhhIPhhazhh4I7ICkgSEFOR1VMIFNZTExBQkxFIERPRUgKK0I0MzQ7QjQzNDsxMTAzIDExNkQ7QjQzNDsxMTAzIDExNkQ7ICMgKOuQtDsg65C0OyDhhIPhha07IOuQtDsg4YSD4YWtOyApIEhBTkdVTCBTWUxMQUJMRSBEWU8KK0I0MzU7QjQzNTsxMTAzIDExNkQgMTFBODtCNDM1OzExMDMgMTE2RCAxMUE4OyAjICjrkLU7IOuQtTsg4YSD4YWt4YaoOyDrkLU7IOGEg+GFreGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRFlPRworQjQzNjtCNDM2OzExMDMgMTE2RCAxMUE5O0I0MzY7MTEwMyAxMTZEIDExQTk7ICMgKOuQtjsg65C2OyDhhIPhha3hhqk7IOuQtjsg4YSD4YWt4YapOyApIEhBTkdVTCBTWUxMQUJMRSBEWU9HRworQjQzNztCNDM3OzExMDMgMTE2RCAxMUFBO0I0Mzc7MTEwMyAxMTZEIDExQUE7ICMgKOuQtzsg65C3OyDhhIPhha3hhqo7IOuQtzsg4YSD4YWt4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBEWU9HUworQjQzODtCNDM4OzExMDMgMTE2RCAxMUFCO0I0Mzg7MTEwMyAxMTZEIDExQUI7ICMgKOuQuDsg65C4OyDhhIPhha3hhqs7IOuQuDsg4YSD4YWt4YarOyApIEhBTkdVTCBTWUxMQUJMRSBEWU9OCitCNDM5O0I0Mzk7MTEwMyAxMTZEIDExQUM7QjQzOTsxMTAzIDExNkQgMTFBQzsgIyAo65C5OyDrkLk7IOGEg+GFreGGrDsg65C5OyDhhIPhha3hhqw7ICkgSEFOR1VMIFNZTExBQkxFIERZT05KCitCNDNBO0I0M0E7MTEwMyAxMTZEIDExQUQ7QjQzQTsxMTAzIDExNkQgMTFBRDsgIyAo65C6OyDrkLo7IOGEg+GFreGGrTsg65C6OyDhhIPhha3hhq07ICkgSEFOR1VMIFNZTExBQkxFIERZT05ICitCNDNCO0I0M0I7MTEwMyAxMTZEIDExQUU7QjQzQjsxMTAzIDExNkQgMTFBRTsgIyAo65C7OyDrkLs7IOGEg+GFreGGrjsg65C7OyDhhIPhha3hhq47ICkgSEFOR1VMIFNZTExBQkxFIERZT0QKK0I0M0M7QjQzQzsxMTAzIDExNkQgMTFBRjtCNDNDOzExMDMgMTE2RCAxMUFGOyAjICjrkLw7IOuQvDsg4YSD4YWt4YavOyDrkLw7IOGEg+GFreGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgRFlPTAorQjQzRDtCNDNEOzExMDMgMTE2RCAxMUIwO0I0M0Q7MTEwMyAxMTZEIDExQjA7ICMgKOuQvTsg65C9OyDhhIPhha3hhrA7IOuQvTsg4YSD4YWt4YawOyApIEhBTkdVTCBTWUxMQUJMRSBEWU9MRworQjQzRTtCNDNFOzExMDMgMTE2RCAxMUIxO0I0M0U7MTEwMyAxMTZEIDExQjE7ICMgKOuQvjsg65C+OyDhhIPhha3hhrE7IOuQvjsg4YSD4YWt4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBEWU9MTQorQjQzRjtCNDNGOzExMDMgMTE2RCAxMUIyO0I0M0Y7MTEwMyAxMTZEIDExQjI7ICMgKOuQvzsg65C/OyDhhIPhha3hhrI7IOuQvzsg4YSD4YWt4YayOyApIEhBTkdVTCBTWUxMQUJMRSBEWU9MQgorQjQ0MDtCNDQwOzExMDMgMTE2RCAxMUIzO0I0NDA7MTEwMyAxMTZEIDExQjM7ICMgKOuRgDsg65GAOyDhhIPhha3hhrM7IOuRgDsg4YSD4YWt4YazOyApIEhBTkdVTCBTWUxMQUJMRSBEWU9MUworQjQ0MTtCNDQxOzExMDMgMTE2RCAxMUI0O0I0NDE7MTEwMyAxMTZEIDExQjQ7ICMgKOuRgTsg65GBOyDhhIPhha3hhrQ7IOuRgTsg4YSD4YWt4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBEWU9MVAorQjQ0MjtCNDQyOzExMDMgMTE2RCAxMUI1O0I0NDI7MTEwMyAxMTZEIDExQjU7ICMgKOuRgjsg65GCOyDhhIPhha3hhrU7IOuRgjsg4YSD4YWt4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBEWU9MUAorQjQ0MztCNDQzOzExMDMgMTE2RCAxMUI2O0I0NDM7MTEwMyAxMTZEIDExQjY7ICMgKOuRgzsg65GDOyDhhIPhha3hhrY7IOuRgzsg4YSD4YWt4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBEWU9MSAorQjQ0NDtCNDQ0OzExMDMgMTE2RCAxMUI3O0I0NDQ7MTEwMyAxMTZEIDExQjc7ICMgKOuRhDsg65GEOyDhhIPhha3hhrc7IOuRhDsg4YSD4YWt4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBEWU9NCitCNDQ1O0I0NDU7MTEwMyAxMTZEIDExQjg7QjQ0NTsxMTAzIDExNkQgMTFCODsgIyAo65GFOyDrkYU7IOGEg+GFreGGuDsg65GFOyDhhIPhha3hhrg7ICkgSEFOR1VMIFNZTExBQkxFIERZT0IKK0I0NDY7QjQ0NjsxMTAzIDExNkQgMTFCOTtCNDQ2OzExMDMgMTE2RCAxMUI5OyAjICjrkYY7IOuRhjsg4YSD4YWt4Ya5OyDrkYY7IOGEg+GFreGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgRFlPQlMKK0I0NDc7QjQ0NzsxMTAzIDExNkQgMTFCQTtCNDQ3OzExMDMgMTE2RCAxMUJBOyAjICjrkYc7IOuRhzsg4YSD4YWt4Ya6OyDrkYc7IOGEg+GFreGGujsgKSBIQU5HVUwgU1lMTEFCTEUgRFlPUworQjQ0ODtCNDQ4OzExMDMgMTE2RCAxMUJCO0I0NDg7MTEwMyAxMTZEIDExQkI7ICMgKOuRiDsg65GIOyDhhIPhha3hhrs7IOuRiDsg4YSD4YWt4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBEWU9TUworQjQ0OTtCNDQ5OzExMDMgMTE2RCAxMUJDO0I0NDk7MTEwMyAxMTZEIDExQkM7ICMgKOuRiTsg65GJOyDhhIPhha3hhrw7IOuRiTsg4YSD4YWt4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBEWU9ORworQjQ0QTtCNDRBOzExMDMgMTE2RCAxMUJEO0I0NEE7MTEwMyAxMTZEIDExQkQ7ICMgKOuRijsg65GKOyDhhIPhha3hhr07IOuRijsg4YSD4YWt4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBEWU9KCitCNDRCO0I0NEI7MTEwMyAxMTZEIDExQkU7QjQ0QjsxMTAzIDExNkQgMTFCRTsgIyAo65GLOyDrkYs7IOGEg+GFreGGvjsg65GLOyDhhIPhha3hhr47ICkgSEFOR1VMIFNZTExBQkxFIERZT0MKK0I0NEM7QjQ0QzsxMTAzIDExNkQgMTFCRjtCNDRDOzExMDMgMTE2RCAxMUJGOyAjICjrkYw7IOuRjDsg4YSD4YWt4Ya/OyDrkYw7IOGEg+GFreGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgRFlPSworQjQ0RDtCNDREOzExMDMgMTE2RCAxMUMwO0I0NEQ7MTEwMyAxMTZEIDExQzA7ICMgKOuRjTsg65GNOyDhhIPhha3hh4A7IOuRjTsg4YSD4YWt4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBEWU9UCitCNDRFO0I0NEU7MTEwMyAxMTZEIDExQzE7QjQ0RTsxMTAzIDExNkQgMTFDMTsgIyAo65GOOyDrkY47IOGEg+GFreGHgTsg65GOOyDhhIPhha3hh4E7ICkgSEFOR1VMIFNZTExBQkxFIERZT1AKK0I0NEY7QjQ0RjsxMTAzIDExNkQgMTFDMjtCNDRGOzExMDMgMTE2RCAxMUMyOyAjICjrkY87IOuRjzsg4YSD4YWt4YeCOyDrkY87IOGEg+GFreGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgRFlPSAorQjQ1MDtCNDUwOzExMDMgMTE2RTtCNDUwOzExMDMgMTE2RTsgIyAo65GQOyDrkZA7IOGEg+GFrjsg65GQOyDhhIPhha47ICkgSEFOR1VMIFNZTExBQkxFIERVCitCNDUxO0I0NTE7MTEwMyAxMTZFIDExQTg7QjQ1MTsxMTAzIDExNkUgMTFBODsgIyAo65GROyDrkZE7IOGEg+GFruGGqDsg65GROyDhhIPhha7hhqg7ICkgSEFOR1VMIFNZTExBQkxFIERVRworQjQ1MjtCNDUyOzExMDMgMTE2RSAxMUE5O0I0NTI7MTEwMyAxMTZFIDExQTk7ICMgKOuRkjsg65GSOyDhhIPhha7hhqk7IOuRkjsg4YSD4YWu4YapOyApIEhBTkdVTCBTWUxMQUJMRSBEVUdHCitCNDUzO0I0NTM7MTEwMyAxMTZFIDExQUE7QjQ1MzsxMTAzIDExNkUgMTFBQTsgIyAo65GTOyDrkZM7IOGEg+GFruGGqjsg65GTOyDhhIPhha7hhqo7ICkgSEFOR1VMIFNZTExBQkxFIERVR1MKK0I0NTQ7QjQ1NDsxMTAzIDExNkUgMTFBQjtCNDU0OzExMDMgMTE2RSAxMUFCOyAjICjrkZQ7IOuRlDsg4YSD4YWu4YarOyDrkZQ7IOGEg+GFruGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgRFVOCitCNDU1O0I0NTU7MTEwMyAxMTZFIDExQUM7QjQ1NTsxMTAzIDExNkUgMTFBQzsgIyAo65GVOyDrkZU7IOGEg+GFruGGrDsg65GVOyDhhIPhha7hhqw7ICkgSEFOR1VMIFNZTExBQkxFIERVTkoKK0I0NTY7QjQ1NjsxMTAzIDExNkUgMTFBRDtCNDU2OzExMDMgMTE2RSAxMUFEOyAjICjrkZY7IOuRljsg4YSD4YWu4YatOyDrkZY7IOGEg+GFruGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRFVOSAorQjQ1NztCNDU3OzExMDMgMTE2RSAxMUFFO0I0NTc7MTEwMyAxMTZFIDExQUU7ICMgKOuRlzsg65GXOyDhhIPhha7hhq47IOuRlzsg4YSD4YWu4YauOyApIEhBTkdVTCBTWUxMQUJMRSBEVUQKK0I0NTg7QjQ1ODsxMTAzIDExNkUgMTFBRjtCNDU4OzExMDMgMTE2RSAxMUFGOyAjICjrkZg7IOuRmDsg4YSD4YWu4YavOyDrkZg7IOGEg+GFruGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgRFVMCitCNDU5O0I0NTk7MTEwMyAxMTZFIDExQjA7QjQ1OTsxMTAzIDExNkUgMTFCMDsgIyAo65GZOyDrkZk7IOGEg+GFruGGsDsg65GZOyDhhIPhha7hhrA7ICkgSEFOR1VMIFNZTExBQkxFIERVTEcKK0I0NUE7QjQ1QTsxMTAzIDExNkUgMTFCMTtCNDVBOzExMDMgMTE2RSAxMUIxOyAjICjrkZo7IOuRmjsg4YSD4YWu4YaxOyDrkZo7IOGEg+GFruGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgRFVMTQorQjQ1QjtCNDVCOzExMDMgMTE2RSAxMUIyO0I0NUI7MTEwMyAxMTZFIDExQjI7ICMgKOuRmzsg65GbOyDhhIPhha7hhrI7IOuRmzsg4YSD4YWu4YayOyApIEhBTkdVTCBTWUxMQUJMRSBEVUxCCitCNDVDO0I0NUM7MTEwMyAxMTZFIDExQjM7QjQ1QzsxMTAzIDExNkUgMTFCMzsgIyAo65GcOyDrkZw7IOGEg+GFruGGszsg65GcOyDhhIPhha7hhrM7ICkgSEFOR1VMIFNZTExBQkxFIERVTFMKK0I0NUQ7QjQ1RDsxMTAzIDExNkUgMTFCNDtCNDVEOzExMDMgMTE2RSAxMUI0OyAjICjrkZ07IOuRnTsg4YSD4YWu4Ya0OyDrkZ07IOGEg+GFruGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgRFVMVAorQjQ1RTtCNDVFOzExMDMgMTE2RSAxMUI1O0I0NUU7MTEwMyAxMTZFIDExQjU7ICMgKOuRnjsg65GeOyDhhIPhha7hhrU7IOuRnjsg4YSD4YWu4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBEVUxQCitCNDVGO0I0NUY7MTEwMyAxMTZFIDExQjY7QjQ1RjsxMTAzIDExNkUgMTFCNjsgIyAo65GfOyDrkZ87IOGEg+GFruGGtjsg65GfOyDhhIPhha7hhrY7ICkgSEFOR1VMIFNZTExBQkxFIERVTEgKK0I0NjA7QjQ2MDsxMTAzIDExNkUgMTFCNztCNDYwOzExMDMgMTE2RSAxMUI3OyAjICjrkaA7IOuRoDsg4YSD4YWu4Ya3OyDrkaA7IOGEg+GFruGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgRFVNCitCNDYxO0I0NjE7MTEwMyAxMTZFIDExQjg7QjQ2MTsxMTAzIDExNkUgMTFCODsgIyAo65GhOyDrkaE7IOGEg+GFruGGuDsg65GhOyDhhIPhha7hhrg7ICkgSEFOR1VMIFNZTExBQkxFIERVQgorQjQ2MjtCNDYyOzExMDMgMTE2RSAxMUI5O0I0NjI7MTEwMyAxMTZFIDExQjk7ICMgKOuRojsg65GiOyDhhIPhha7hhrk7IOuRojsg4YSD4YWu4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBEVUJTCitCNDYzO0I0NjM7MTEwMyAxMTZFIDExQkE7QjQ2MzsxMTAzIDExNkUgMTFCQTsgIyAo65GjOyDrkaM7IOGEg+GFruGGujsg65GjOyDhhIPhha7hhro7ICkgSEFOR1VMIFNZTExBQkxFIERVUworQjQ2NDtCNDY0OzExMDMgMTE2RSAxMUJCO0I0NjQ7MTEwMyAxMTZFIDExQkI7ICMgKOuRpDsg65GkOyDhhIPhha7hhrs7IOuRpDsg4YSD4YWu4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBEVVNTCitCNDY1O0I0NjU7MTEwMyAxMTZFIDExQkM7QjQ2NTsxMTAzIDExNkUgMTFCQzsgIyAo65GlOyDrkaU7IOGEg+GFruGGvDsg65GlOyDhhIPhha7hhrw7ICkgSEFOR1VMIFNZTExBQkxFIERVTkcKK0I0NjY7QjQ2NjsxMTAzIDExNkUgMTFCRDtCNDY2OzExMDMgMTE2RSAxMUJEOyAjICjrkaY7IOuRpjsg4YSD4YWu4Ya9OyDrkaY7IOGEg+GFruGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgRFVKCitCNDY3O0I0Njc7MTEwMyAxMTZFIDExQkU7QjQ2NzsxMTAzIDExNkUgMTFCRTsgIyAo65GnOyDrkac7IOGEg+GFruGGvjsg65GnOyDhhIPhha7hhr47ICkgSEFOR1VMIFNZTExBQkxFIERVQworQjQ2ODtCNDY4OzExMDMgMTE2RSAxMUJGO0I0Njg7MTEwMyAxMTZFIDExQkY7ICMgKOuRqDsg65GoOyDhhIPhha7hhr87IOuRqDsg4YSD4YWu4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBEVUsKK0I0Njk7QjQ2OTsxMTAzIDExNkUgMTFDMDtCNDY5OzExMDMgMTE2RSAxMUMwOyAjICjrkak7IOuRqTsg4YSD4YWu4YeAOyDrkak7IOGEg+GFruGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgRFVUCitCNDZBO0I0NkE7MTEwMyAxMTZFIDExQzE7QjQ2QTsxMTAzIDExNkUgMTFDMTsgIyAo65GqOyDrkao7IOGEg+GFruGHgTsg65GqOyDhhIPhha7hh4E7ICkgSEFOR1VMIFNZTExBQkxFIERVUAorQjQ2QjtCNDZCOzExMDMgMTE2RSAxMUMyO0I0NkI7MTEwMyAxMTZFIDExQzI7ICMgKOuRqzsg65GrOyDhhIPhha7hh4I7IOuRqzsg4YSD4YWu4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBEVUgKK0I0NkM7QjQ2QzsxMTAzIDExNkY7QjQ2QzsxMTAzIDExNkY7ICMgKOuRrDsg65GsOyDhhIPhha87IOuRrDsg4YSD4YWvOyApIEhBTkdVTCBTWUxMQUJMRSBEV0VPCitCNDZEO0I0NkQ7MTEwMyAxMTZGIDExQTg7QjQ2RDsxMTAzIDExNkYgMTFBODsgIyAo65GtOyDrka07IOGEg+GFr+GGqDsg65GtOyDhhIPhha/hhqg7ICkgSEFOR1VMIFNZTExBQkxFIERXRU9HCitCNDZFO0I0NkU7MTEwMyAxMTZGIDExQTk7QjQ2RTsxMTAzIDExNkYgMTFBOTsgIyAo65GuOyDrka47IOGEg+GFr+GGqTsg65GuOyDhhIPhha/hhqk7ICkgSEFOR1VMIFNZTExBQkxFIERXRU9HRworQjQ2RjtCNDZGOzExMDMgMTE2RiAxMUFBO0I0NkY7MTEwMyAxMTZGIDExQUE7ICMgKOuRrzsg65GvOyDhhIPhha/hhqo7IOuRrzsg4YSD4YWv4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBEV0VPR1MKK0I0NzA7QjQ3MDsxMTAzIDExNkYgMTFBQjtCNDcwOzExMDMgMTE2RiAxMUFCOyAjICjrkbA7IOuRsDsg4YSD4YWv4YarOyDrkbA7IOGEg+GFr+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgRFdFT04KK0I0NzE7QjQ3MTsxMTAzIDExNkYgMTFBQztCNDcxOzExMDMgMTE2RiAxMUFDOyAjICjrkbE7IOuRsTsg4YSD4YWv4YasOyDrkbE7IOGEg+GFr+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgRFdFT05KCitCNDcyO0I0NzI7MTEwMyAxMTZGIDExQUQ7QjQ3MjsxMTAzIDExNkYgMTFBRDsgIyAo65GyOyDrkbI7IOGEg+GFr+GGrTsg65GyOyDhhIPhha/hhq07ICkgSEFOR1VMIFNZTExBQkxFIERXRU9OSAorQjQ3MztCNDczOzExMDMgMTE2RiAxMUFFO0I0NzM7MTEwMyAxMTZGIDExQUU7ICMgKOuRszsg65GzOyDhhIPhha/hhq47IOuRszsg4YSD4YWv4YauOyApIEhBTkdVTCBTWUxMQUJMRSBEV0VPRAorQjQ3NDtCNDc0OzExMDMgMTE2RiAxMUFGO0I0NzQ7MTEwMyAxMTZGIDExQUY7ICMgKOuRtDsg65G0OyDhhIPhha/hhq87IOuRtDsg4YSD4YWv4YavOyApIEhBTkdVTCBTWUxMQUJMRSBEV0VPTAorQjQ3NTtCNDc1OzExMDMgMTE2RiAxMUIwO0I0NzU7MTEwMyAxMTZGIDExQjA7ICMgKOuRtTsg65G1OyDhhIPhha/hhrA7IOuRtTsg4YSD4YWv4YawOyApIEhBTkdVTCBTWUxMQUJMRSBEV0VPTEcKK0I0NzY7QjQ3NjsxMTAzIDExNkYgMTFCMTtCNDc2OzExMDMgMTE2RiAxMUIxOyAjICjrkbY7IOuRtjsg4YSD4YWv4YaxOyDrkbY7IOGEg+GFr+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgRFdFT0xNCitCNDc3O0I0Nzc7MTEwMyAxMTZGIDExQjI7QjQ3NzsxMTAzIDExNkYgMTFCMjsgIyAo65G3OyDrkbc7IOGEg+GFr+GGsjsg65G3OyDhhIPhha/hhrI7ICkgSEFOR1VMIFNZTExBQkxFIERXRU9MQgorQjQ3ODtCNDc4OzExMDMgMTE2RiAxMUIzO0I0Nzg7MTEwMyAxMTZGIDExQjM7ICMgKOuRuDsg65G4OyDhhIPhha/hhrM7IOuRuDsg4YSD4YWv4YazOyApIEhBTkdVTCBTWUxMQUJMRSBEV0VPTFMKK0I0Nzk7QjQ3OTsxMTAzIDExNkYgMTFCNDtCNDc5OzExMDMgMTE2RiAxMUI0OyAjICjrkbk7IOuRuTsg4YSD4YWv4Ya0OyDrkbk7IOGEg+GFr+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgRFdFT0xUCitCNDdBO0I0N0E7MTEwMyAxMTZGIDExQjU7QjQ3QTsxMTAzIDExNkYgMTFCNTsgIyAo65G6OyDrkbo7IOGEg+GFr+GGtTsg65G6OyDhhIPhha/hhrU7ICkgSEFOR1VMIFNZTExBQkxFIERXRU9MUAorQjQ3QjtCNDdCOzExMDMgMTE2RiAxMUI2O0I0N0I7MTEwMyAxMTZGIDExQjY7ICMgKOuRuzsg65G7OyDhhIPhha/hhrY7IOuRuzsg4YSD4YWv4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBEV0VPTEgKK0I0N0M7QjQ3QzsxMTAzIDExNkYgMTFCNztCNDdDOzExMDMgMTE2RiAxMUI3OyAjICjrkbw7IOuRvDsg4YSD4YWv4Ya3OyDrkbw7IOGEg+GFr+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgRFdFT00KK0I0N0Q7QjQ3RDsxMTAzIDExNkYgMTFCODtCNDdEOzExMDMgMTE2RiAxMUI4OyAjICjrkb07IOuRvTsg4YSD4YWv4Ya4OyDrkb07IOGEg+GFr+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgRFdFT0IKK0I0N0U7QjQ3RTsxMTAzIDExNkYgMTFCOTtCNDdFOzExMDMgMTE2RiAxMUI5OyAjICjrkb47IOuRvjsg4YSD4YWv4Ya5OyDrkb47IOGEg+GFr+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgRFdFT0JTCitCNDdGO0I0N0Y7MTEwMyAxMTZGIDExQkE7QjQ3RjsxMTAzIDExNkYgMTFCQTsgIyAo65G/OyDrkb87IOGEg+GFr+GGujsg65G/OyDhhIPhha/hhro7ICkgSEFOR1VMIFNZTExBQkxFIERXRU9TCitCNDgwO0I0ODA7MTEwMyAxMTZGIDExQkI7QjQ4MDsxMTAzIDExNkYgMTFCQjsgIyAo65KAOyDrkoA7IOGEg+GFr+GGuzsg65KAOyDhhIPhha/hhrs7ICkgSEFOR1VMIFNZTExBQkxFIERXRU9TUworQjQ4MTtCNDgxOzExMDMgMTE2RiAxMUJDO0I0ODE7MTEwMyAxMTZGIDExQkM7ICMgKOuSgTsg65KBOyDhhIPhha/hhrw7IOuSgTsg4YSD4YWv4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBEV0VPTkcKK0I0ODI7QjQ4MjsxMTAzIDExNkYgMTFCRDtCNDgyOzExMDMgMTE2RiAxMUJEOyAjICjrkoI7IOuSgjsg4YSD4YWv4Ya9OyDrkoI7IOGEg+GFr+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgRFdFT0oKK0I0ODM7QjQ4MzsxMTAzIDExNkYgMTFCRTtCNDgzOzExMDMgMTE2RiAxMUJFOyAjICjrkoM7IOuSgzsg4YSD4YWv4Ya+OyDrkoM7IOGEg+GFr+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgRFdFT0MKK0I0ODQ7QjQ4NDsxMTAzIDExNkYgMTFCRjtCNDg0OzExMDMgMTE2RiAxMUJGOyAjICjrkoQ7IOuShDsg4YSD4YWv4Ya/OyDrkoQ7IOGEg+GFr+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgRFdFT0sKK0I0ODU7QjQ4NTsxMTAzIDExNkYgMTFDMDtCNDg1OzExMDMgMTE2RiAxMUMwOyAjICjrkoU7IOuShTsg4YSD4YWv4YeAOyDrkoU7IOGEg+GFr+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgRFdFT1QKK0I0ODY7QjQ4NjsxMTAzIDExNkYgMTFDMTtCNDg2OzExMDMgMTE2RiAxMUMxOyAjICjrkoY7IOuShjsg4YSD4YWv4YeBOyDrkoY7IOGEg+GFr+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgRFdFT1AKK0I0ODc7QjQ4NzsxMTAzIDExNkYgMTFDMjtCNDg3OzExMDMgMTE2RiAxMUMyOyAjICjrkoc7IOuShzsg4YSD4YWv4YeCOyDrkoc7IOGEg+GFr+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgRFdFT0gKK0I0ODg7QjQ4ODsxMTAzIDExNzA7QjQ4ODsxMTAzIDExNzA7ICMgKOuSiDsg65KIOyDhhIPhhbA7IOuSiDsg4YSD4YWwOyApIEhBTkdVTCBTWUxMQUJMRSBEV0UKK0I0ODk7QjQ4OTsxMTAzIDExNzAgMTFBODtCNDg5OzExMDMgMTE3MCAxMUE4OyAjICjrkok7IOuSiTsg4YSD4YWw4YaoOyDrkok7IOGEg+GFsOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRFdFRworQjQ4QTtCNDhBOzExMDMgMTE3MCAxMUE5O0I0OEE7MTEwMyAxMTcwIDExQTk7ICMgKOuSijsg65KKOyDhhIPhhbDhhqk7IOuSijsg4YSD4YWw4YapOyApIEhBTkdVTCBTWUxMQUJMRSBEV0VHRworQjQ4QjtCNDhCOzExMDMgMTE3MCAxMUFBO0I0OEI7MTEwMyAxMTcwIDExQUE7ICMgKOuSizsg65KLOyDhhIPhhbDhhqo7IOuSizsg4YSD4YWw4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBEV0VHUworQjQ4QztCNDhDOzExMDMgMTE3MCAxMUFCO0I0OEM7MTEwMyAxMTcwIDExQUI7ICMgKOuSjDsg65KMOyDhhIPhhbDhhqs7IOuSjDsg4YSD4YWw4YarOyApIEhBTkdVTCBTWUxMQUJMRSBEV0VOCitCNDhEO0I0OEQ7MTEwMyAxMTcwIDExQUM7QjQ4RDsxMTAzIDExNzAgMTFBQzsgIyAo65KNOyDrko07IOGEg+GFsOGGrDsg65KNOyDhhIPhhbDhhqw7ICkgSEFOR1VMIFNZTExBQkxFIERXRU5KCitCNDhFO0I0OEU7MTEwMyAxMTcwIDExQUQ7QjQ4RTsxMTAzIDExNzAgMTFBRDsgIyAo65KOOyDrko47IOGEg+GFsOGGrTsg65KOOyDhhIPhhbDhhq07ICkgSEFOR1VMIFNZTExBQkxFIERXRU5ICitCNDhGO0I0OEY7MTEwMyAxMTcwIDExQUU7QjQ4RjsxMTAzIDExNzAgMTFBRTsgIyAo65KPOyDrko87IOGEg+GFsOGGrjsg65KPOyDhhIPhhbDhhq47ICkgSEFOR1VMIFNZTExBQkxFIERXRUQKK0I0OTA7QjQ5MDsxMTAzIDExNzAgMTFBRjtCNDkwOzExMDMgMTE3MCAxMUFGOyAjICjrkpA7IOuSkDsg4YSD4YWw4YavOyDrkpA7IOGEg+GFsOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgRFdFTAorQjQ5MTtCNDkxOzExMDMgMTE3MCAxMUIwO0I0OTE7MTEwMyAxMTcwIDExQjA7ICMgKOuSkTsg65KROyDhhIPhhbDhhrA7IOuSkTsg4YSD4YWw4YawOyApIEhBTkdVTCBTWUxMQUJMRSBEV0VMRworQjQ5MjtCNDkyOzExMDMgMTE3MCAxMUIxO0I0OTI7MTEwMyAxMTcwIDExQjE7ICMgKOuSkjsg65KSOyDhhIPhhbDhhrE7IOuSkjsg4YSD4YWw4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBEV0VMTQorQjQ5MztCNDkzOzExMDMgMTE3MCAxMUIyO0I0OTM7MTEwMyAxMTcwIDExQjI7ICMgKOuSkzsg65KTOyDhhIPhhbDhhrI7IOuSkzsg4YSD4YWw4YayOyApIEhBTkdVTCBTWUxMQUJMRSBEV0VMQgorQjQ5NDtCNDk0OzExMDMgMTE3MCAxMUIzO0I0OTQ7MTEwMyAxMTcwIDExQjM7ICMgKOuSlDsg65KUOyDhhIPhhbDhhrM7IOuSlDsg4YSD4YWw4YazOyApIEhBTkdVTCBTWUxMQUJMRSBEV0VMUworQjQ5NTtCNDk1OzExMDMgMTE3MCAxMUI0O0I0OTU7MTEwMyAxMTcwIDExQjQ7ICMgKOuSlTsg65KVOyDhhIPhhbDhhrQ7IOuSlTsg4YSD4YWw4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBEV0VMVAorQjQ5NjtCNDk2OzExMDMgMTE3MCAxMUI1O0I0OTY7MTEwMyAxMTcwIDExQjU7ICMgKOuSljsg65KWOyDhhIPhhbDhhrU7IOuSljsg4YSD4YWw4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBEV0VMUAorQjQ5NztCNDk3OzExMDMgMTE3MCAxMUI2O0I0OTc7MTEwMyAxMTcwIDExQjY7ICMgKOuSlzsg65KXOyDhhIPhhbDhhrY7IOuSlzsg4YSD4YWw4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBEV0VMSAorQjQ5ODtCNDk4OzExMDMgMTE3MCAxMUI3O0I0OTg7MTEwMyAxMTcwIDExQjc7ICMgKOuSmDsg65KYOyDhhIPhhbDhhrc7IOuSmDsg4YSD4YWw4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBEV0VNCitCNDk5O0I0OTk7MTEwMyAxMTcwIDExQjg7QjQ5OTsxMTAzIDExNzAgMTFCODsgIyAo65KZOyDrkpk7IOGEg+GFsOGGuDsg65KZOyDhhIPhhbDhhrg7ICkgSEFOR1VMIFNZTExBQkxFIERXRUIKK0I0OUE7QjQ5QTsxMTAzIDExNzAgMTFCOTtCNDlBOzExMDMgMTE3MCAxMUI5OyAjICjrkpo7IOuSmjsg4YSD4YWw4Ya5OyDrkpo7IOGEg+GFsOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgRFdFQlMKK0I0OUI7QjQ5QjsxMTAzIDExNzAgMTFCQTtCNDlCOzExMDMgMTE3MCAxMUJBOyAjICjrkps7IOuSmzsg4YSD4YWw4Ya6OyDrkps7IOGEg+GFsOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgRFdFUworQjQ5QztCNDlDOzExMDMgMTE3MCAxMUJCO0I0OUM7MTEwMyAxMTcwIDExQkI7ICMgKOuSnDsg65KcOyDhhIPhhbDhhrs7IOuSnDsg4YSD4YWw4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBEV0VTUworQjQ5RDtCNDlEOzExMDMgMTE3MCAxMUJDO0I0OUQ7MTEwMyAxMTcwIDExQkM7ICMgKOuSnTsg65KdOyDhhIPhhbDhhrw7IOuSnTsg4YSD4YWw4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBEV0VORworQjQ5RTtCNDlFOzExMDMgMTE3MCAxMUJEO0I0OUU7MTEwMyAxMTcwIDExQkQ7ICMgKOuSnjsg65KeOyDhhIPhhbDhhr07IOuSnjsg4YSD4YWw4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBEV0VKCitCNDlGO0I0OUY7MTEwMyAxMTcwIDExQkU7QjQ5RjsxMTAzIDExNzAgMTFCRTsgIyAo65KfOyDrkp87IOGEg+GFsOGGvjsg65KfOyDhhIPhhbDhhr47ICkgSEFOR1VMIFNZTExBQkxFIERXRUMKK0I0QTA7QjRBMDsxMTAzIDExNzAgMTFCRjtCNEEwOzExMDMgMTE3MCAxMUJGOyAjICjrkqA7IOuSoDsg4YSD4YWw4Ya/OyDrkqA7IOGEg+GFsOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgRFdFSworQjRBMTtCNEExOzExMDMgMTE3MCAxMUMwO0I0QTE7MTEwMyAxMTcwIDExQzA7ICMgKOuSoTsg65KhOyDhhIPhhbDhh4A7IOuSoTsg4YSD4YWw4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBEV0VUCitCNEEyO0I0QTI7MTEwMyAxMTcwIDExQzE7QjRBMjsxMTAzIDExNzAgMTFDMTsgIyAo65KiOyDrkqI7IOGEg+GFsOGHgTsg65KiOyDhhIPhhbDhh4E7ICkgSEFOR1VMIFNZTExBQkxFIERXRVAKK0I0QTM7QjRBMzsxMTAzIDExNzAgMTFDMjtCNEEzOzExMDMgMTE3MCAxMUMyOyAjICjrkqM7IOuSozsg4YSD4YWw4YeCOyDrkqM7IOGEg+GFsOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgRFdFSAorQjRBNDtCNEE0OzExMDMgMTE3MTtCNEE0OzExMDMgMTE3MTsgIyAo65KkOyDrkqQ7IOGEg+GFsTsg65KkOyDhhIPhhbE7ICkgSEFOR1VMIFNZTExBQkxFIERXSQorQjRBNTtCNEE1OzExMDMgMTE3MSAxMUE4O0I0QTU7MTEwMyAxMTcxIDExQTg7ICMgKOuSpTsg65KlOyDhhIPhhbHhhqg7IOuSpTsg4YSD4YWx4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBEV0lHCitCNEE2O0I0QTY7MTEwMyAxMTcxIDExQTk7QjRBNjsxMTAzIDExNzEgMTFBOTsgIyAo65KmOyDrkqY7IOGEg+GFseGGqTsg65KmOyDhhIPhhbHhhqk7ICkgSEFOR1VMIFNZTExBQkxFIERXSUdHCitCNEE3O0I0QTc7MTEwMyAxMTcxIDExQUE7QjRBNzsxMTAzIDExNzEgMTFBQTsgIyAo65KnOyDrkqc7IOGEg+GFseGGqjsg65KnOyDhhIPhhbHhhqo7ICkgSEFOR1VMIFNZTExBQkxFIERXSUdTCitCNEE4O0I0QTg7MTEwMyAxMTcxIDExQUI7QjRBODsxMTAzIDExNzEgMTFBQjsgIyAo65KoOyDrkqg7IOGEg+GFseGGqzsg65KoOyDhhIPhhbHhhqs7ICkgSEFOR1VMIFNZTExBQkxFIERXSU4KK0I0QTk7QjRBOTsxMTAzIDExNzEgMTFBQztCNEE5OzExMDMgMTE3MSAxMUFDOyAjICjrkqk7IOuSqTsg4YSD4YWx4YasOyDrkqk7IOGEg+GFseGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgRFdJTkoKK0I0QUE7QjRBQTsxMTAzIDExNzEgMTFBRDtCNEFBOzExMDMgMTE3MSAxMUFEOyAjICjrkqo7IOuSqjsg4YSD4YWx4YatOyDrkqo7IOGEg+GFseGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRFdJTkgKK0I0QUI7QjRBQjsxMTAzIDExNzEgMTFBRTtCNEFCOzExMDMgMTE3MSAxMUFFOyAjICjrkqs7IOuSqzsg4YSD4YWx4YauOyDrkqs7IOGEg+GFseGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgRFdJRAorQjRBQztCNEFDOzExMDMgMTE3MSAxMUFGO0I0QUM7MTEwMyAxMTcxIDExQUY7ICMgKOuSrDsg65KsOyDhhIPhhbHhhq87IOuSrDsg4YSD4YWx4YavOyApIEhBTkdVTCBTWUxMQUJMRSBEV0lMCitCNEFEO0I0QUQ7MTEwMyAxMTcxIDExQjA7QjRBRDsxMTAzIDExNzEgMTFCMDsgIyAo65KtOyDrkq07IOGEg+GFseGGsDsg65KtOyDhhIPhhbHhhrA7ICkgSEFOR1VMIFNZTExBQkxFIERXSUxHCitCNEFFO0I0QUU7MTEwMyAxMTcxIDExQjE7QjRBRTsxMTAzIDExNzEgMTFCMTsgIyAo65KuOyDrkq47IOGEg+GFseGGsTsg65KuOyDhhIPhhbHhhrE7ICkgSEFOR1VMIFNZTExBQkxFIERXSUxNCitCNEFGO0I0QUY7MTEwMyAxMTcxIDExQjI7QjRBRjsxMTAzIDExNzEgMTFCMjsgIyAo65KvOyDrkq87IOGEg+GFseGGsjsg65KvOyDhhIPhhbHhhrI7ICkgSEFOR1VMIFNZTExBQkxFIERXSUxCCitCNEIwO0I0QjA7MTEwMyAxMTcxIDExQjM7QjRCMDsxMTAzIDExNzEgMTFCMzsgIyAo65KwOyDrkrA7IOGEg+GFseGGszsg65KwOyDhhIPhhbHhhrM7ICkgSEFOR1VMIFNZTExBQkxFIERXSUxTCitCNEIxO0I0QjE7MTEwMyAxMTcxIDExQjQ7QjRCMTsxMTAzIDExNzEgMTFCNDsgIyAo65KxOyDrkrE7IOGEg+GFseGGtDsg65KxOyDhhIPhhbHhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIERXSUxUCitCNEIyO0I0QjI7MTEwMyAxMTcxIDExQjU7QjRCMjsxMTAzIDExNzEgMTFCNTsgIyAo65KyOyDrkrI7IOGEg+GFseGGtTsg65KyOyDhhIPhhbHhhrU7ICkgSEFOR1VMIFNZTExBQkxFIERXSUxQCitCNEIzO0I0QjM7MTEwMyAxMTcxIDExQjY7QjRCMzsxMTAzIDExNzEgMTFCNjsgIyAo65KzOyDrkrM7IOGEg+GFseGGtjsg65KzOyDhhIPhhbHhhrY7ICkgSEFOR1VMIFNZTExBQkxFIERXSUxICitCNEI0O0I0QjQ7MTEwMyAxMTcxIDExQjc7QjRCNDsxMTAzIDExNzEgMTFCNzsgIyAo65K0OyDrkrQ7IOGEg+GFseGGtzsg65K0OyDhhIPhhbHhhrc7ICkgSEFOR1VMIFNZTExBQkxFIERXSU0KK0I0QjU7QjRCNTsxMTAzIDExNzEgMTFCODtCNEI1OzExMDMgMTE3MSAxMUI4OyAjICjrkrU7IOuStTsg4YSD4YWx4Ya4OyDrkrU7IOGEg+GFseGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgRFdJQgorQjRCNjtCNEI2OzExMDMgMTE3MSAxMUI5O0I0QjY7MTEwMyAxMTcxIDExQjk7ICMgKOuStjsg65K2OyDhhIPhhbHhhrk7IOuStjsg4YSD4YWx4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBEV0lCUworQjRCNztCNEI3OzExMDMgMTE3MSAxMUJBO0I0Qjc7MTEwMyAxMTcxIDExQkE7ICMgKOuStzsg65K3OyDhhIPhhbHhhro7IOuStzsg4YSD4YWx4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBEV0lTCitCNEI4O0I0Qjg7MTEwMyAxMTcxIDExQkI7QjRCODsxMTAzIDExNzEgMTFCQjsgIyAo65K4OyDrkrg7IOGEg+GFseGGuzsg65K4OyDhhIPhhbHhhrs7ICkgSEFOR1VMIFNZTExBQkxFIERXSVNTCitCNEI5O0I0Qjk7MTEwMyAxMTcxIDExQkM7QjRCOTsxMTAzIDExNzEgMTFCQzsgIyAo65K5OyDrkrk7IOGEg+GFseGGvDsg65K5OyDhhIPhhbHhhrw7ICkgSEFOR1VMIFNZTExBQkxFIERXSU5HCitCNEJBO0I0QkE7MTEwMyAxMTcxIDExQkQ7QjRCQTsxMTAzIDExNzEgMTFCRDsgIyAo65K6OyDrkro7IOGEg+GFseGGvTsg65K6OyDhhIPhhbHhhr07ICkgSEFOR1VMIFNZTExBQkxFIERXSUoKK0I0QkI7QjRCQjsxMTAzIDExNzEgMTFCRTtCNEJCOzExMDMgMTE3MSAxMUJFOyAjICjrkrs7IOuSuzsg4YSD4YWx4Ya+OyDrkrs7IOGEg+GFseGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgRFdJQworQjRCQztCNEJDOzExMDMgMTE3MSAxMUJGO0I0QkM7MTEwMyAxMTcxIDExQkY7ICMgKOuSvDsg65K8OyDhhIPhhbHhhr87IOuSvDsg4YSD4YWx4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBEV0lLCitCNEJEO0I0QkQ7MTEwMyAxMTcxIDExQzA7QjRCRDsxMTAzIDExNzEgMTFDMDsgIyAo65K9OyDrkr07IOGEg+GFseGHgDsg65K9OyDhhIPhhbHhh4A7ICkgSEFOR1VMIFNZTExBQkxFIERXSVQKK0I0QkU7QjRCRTsxMTAzIDExNzEgMTFDMTtCNEJFOzExMDMgMTE3MSAxMUMxOyAjICjrkr47IOuSvjsg4YSD4YWx4YeBOyDrkr47IOGEg+GFseGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgRFdJUAorQjRCRjtCNEJGOzExMDMgMTE3MSAxMUMyO0I0QkY7MTEwMyAxMTcxIDExQzI7ICMgKOuSvzsg65K/OyDhhIPhhbHhh4I7IOuSvzsg4YSD4YWx4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBEV0lICitCNEMwO0I0QzA7MTEwMyAxMTcyO0I0QzA7MTEwMyAxMTcyOyAjICjrk4A7IOuTgDsg4YSD4YWyOyDrk4A7IOGEg+GFsjsgKSBIQU5HVUwgU1lMTEFCTEUgRFlVCitCNEMxO0I0QzE7MTEwMyAxMTcyIDExQTg7QjRDMTsxMTAzIDExNzIgMTFBODsgIyAo65OBOyDrk4E7IOGEg+GFsuGGqDsg65OBOyDhhIPhhbLhhqg7ICkgSEFOR1VMIFNZTExBQkxFIERZVUcKK0I0QzI7QjRDMjsxMTAzIDExNzIgMTFBOTtCNEMyOzExMDMgMTE3MiAxMUE5OyAjICjrk4I7IOuTgjsg4YSD4YWy4YapOyDrk4I7IOGEg+GFsuGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgRFlVR0cKK0I0QzM7QjRDMzsxMTAzIDExNzIgMTFBQTtCNEMzOzExMDMgMTE3MiAxMUFBOyAjICjrk4M7IOuTgzsg4YSD4YWy4YaqOyDrk4M7IOGEg+GFsuGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgRFlVR1MKK0I0QzQ7QjRDNDsxMTAzIDExNzIgMTFBQjtCNEM0OzExMDMgMTE3MiAxMUFCOyAjICjrk4Q7IOuThDsg4YSD4YWy4YarOyDrk4Q7IOGEg+GFsuGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgRFlVTgorQjRDNTtCNEM1OzExMDMgMTE3MiAxMUFDO0I0QzU7MTEwMyAxMTcyIDExQUM7ICMgKOuThTsg65OFOyDhhIPhhbLhhqw7IOuThTsg4YSD4YWy4YasOyApIEhBTkdVTCBTWUxMQUJMRSBEWVVOSgorQjRDNjtCNEM2OzExMDMgMTE3MiAxMUFEO0I0QzY7MTEwMyAxMTcyIDExQUQ7ICMgKOuThjsg65OGOyDhhIPhhbLhhq07IOuThjsg4YSD4YWy4YatOyApIEhBTkdVTCBTWUxMQUJMRSBEWVVOSAorQjRDNztCNEM3OzExMDMgMTE3MiAxMUFFO0I0Qzc7MTEwMyAxMTcyIDExQUU7ICMgKOuThzsg65OHOyDhhIPhhbLhhq47IOuThzsg4YSD4YWy4YauOyApIEhBTkdVTCBTWUxMQUJMRSBEWVVECitCNEM4O0I0Qzg7MTEwMyAxMTcyIDExQUY7QjRDODsxMTAzIDExNzIgMTFBRjsgIyAo65OIOyDrk4g7IOGEg+GFsuGGrzsg65OIOyDhhIPhhbLhhq87ICkgSEFOR1VMIFNZTExBQkxFIERZVUwKK0I0Qzk7QjRDOTsxMTAzIDExNzIgMTFCMDtCNEM5OzExMDMgMTE3MiAxMUIwOyAjICjrk4k7IOuTiTsg4YSD4YWy4YawOyDrk4k7IOGEg+GFsuGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgRFlVTEcKK0I0Q0E7QjRDQTsxMTAzIDExNzIgMTFCMTtCNENBOzExMDMgMTE3MiAxMUIxOyAjICjrk4o7IOuTijsg4YSD4YWy4YaxOyDrk4o7IOGEg+GFsuGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgRFlVTE0KK0I0Q0I7QjRDQjsxMTAzIDExNzIgMTFCMjtCNENCOzExMDMgMTE3MiAxMUIyOyAjICjrk4s7IOuTizsg4YSD4YWy4YayOyDrk4s7IOGEg+GFsuGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgRFlVTEIKK0I0Q0M7QjRDQzsxMTAzIDExNzIgMTFCMztCNENDOzExMDMgMTE3MiAxMUIzOyAjICjrk4w7IOuTjDsg4YSD4YWy4YazOyDrk4w7IOGEg+GFsuGGszsgKSBIQU5HVUwgU1lMTEFCTEUgRFlVTFMKK0I0Q0Q7QjRDRDsxMTAzIDExNzIgMTFCNDtCNENEOzExMDMgMTE3MiAxMUI0OyAjICjrk407IOuTjTsg4YSD4YWy4Ya0OyDrk407IOGEg+GFsuGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgRFlVTFQKK0I0Q0U7QjRDRTsxMTAzIDExNzIgMTFCNTtCNENFOzExMDMgMTE3MiAxMUI1OyAjICjrk447IOuTjjsg4YSD4YWy4Ya1OyDrk447IOGEg+GFsuGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgRFlVTFAKK0I0Q0Y7QjRDRjsxMTAzIDExNzIgMTFCNjtCNENGOzExMDMgMTE3MiAxMUI2OyAjICjrk487IOuTjzsg4YSD4YWy4Ya2OyDrk487IOGEg+GFsuGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgRFlVTEgKK0I0RDA7QjREMDsxMTAzIDExNzIgMTFCNztCNEQwOzExMDMgMTE3MiAxMUI3OyAjICjrk5A7IOuTkDsg4YSD4YWy4Ya3OyDrk5A7IOGEg+GFsuGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgRFlVTQorQjREMTtCNEQxOzExMDMgMTE3MiAxMUI4O0I0RDE7MTEwMyAxMTcyIDExQjg7ICMgKOuTkTsg65OROyDhhIPhhbLhhrg7IOuTkTsg4YSD4YWy4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBEWVVCCitCNEQyO0I0RDI7MTEwMyAxMTcyIDExQjk7QjREMjsxMTAzIDExNzIgMTFCOTsgIyAo65OSOyDrk5I7IOGEg+GFsuGGuTsg65OSOyDhhIPhhbLhhrk7ICkgSEFOR1VMIFNZTExBQkxFIERZVUJTCitCNEQzO0I0RDM7MTEwMyAxMTcyIDExQkE7QjREMzsxMTAzIDExNzIgMTFCQTsgIyAo65OTOyDrk5M7IOGEg+GFsuGGujsg65OTOyDhhIPhhbLhhro7ICkgSEFOR1VMIFNZTExBQkxFIERZVVMKK0I0RDQ7QjRENDsxMTAzIDExNzIgMTFCQjtCNEQ0OzExMDMgMTE3MiAxMUJCOyAjICjrk5Q7IOuTlDsg4YSD4YWy4Ya7OyDrk5Q7IOGEg+GFsuGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgRFlVU1MKK0I0RDU7QjRENTsxMTAzIDExNzIgMTFCQztCNEQ1OzExMDMgMTE3MiAxMUJDOyAjICjrk5U7IOuTlTsg4YSD4YWy4Ya8OyDrk5U7IOGEg+GFsuGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgRFlVTkcKK0I0RDY7QjRENjsxMTAzIDExNzIgMTFCRDtCNEQ2OzExMDMgMTE3MiAxMUJEOyAjICjrk5Y7IOuTljsg4YSD4YWy4Ya9OyDrk5Y7IOGEg+GFsuGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgRFlVSgorQjRENztCNEQ3OzExMDMgMTE3MiAxMUJFO0I0RDc7MTEwMyAxMTcyIDExQkU7ICMgKOuTlzsg65OXOyDhhIPhhbLhhr47IOuTlzsg4YSD4YWy4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBEWVVDCitCNEQ4O0I0RDg7MTEwMyAxMTcyIDExQkY7QjREODsxMTAzIDExNzIgMTFCRjsgIyAo65OYOyDrk5g7IOGEg+GFsuGGvzsg65OYOyDhhIPhhbLhhr87ICkgSEFOR1VMIFNZTExBQkxFIERZVUsKK0I0RDk7QjREOTsxMTAzIDExNzIgMTFDMDtCNEQ5OzExMDMgMTE3MiAxMUMwOyAjICjrk5k7IOuTmTsg4YSD4YWy4YeAOyDrk5k7IOGEg+GFsuGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgRFlVVAorQjREQTtCNERBOzExMDMgMTE3MiAxMUMxO0I0REE7MTEwMyAxMTcyIDExQzE7ICMgKOuTmjsg65OaOyDhhIPhhbLhh4E7IOuTmjsg4YSD4YWy4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBEWVVQCitCNERCO0I0REI7MTEwMyAxMTcyIDExQzI7QjREQjsxMTAzIDExNzIgMTFDMjsgIyAo65ObOyDrk5s7IOGEg+GFsuGHgjsg65ObOyDhhIPhhbLhh4I7ICkgSEFOR1VMIFNZTExBQkxFIERZVUgKK0I0REM7QjREQzsxMTAzIDExNzM7QjREQzsxMTAzIDExNzM7ICMgKOuTnDsg65OcOyDhhIPhhbM7IOuTnDsg4YSD4YWzOyApIEhBTkdVTCBTWUxMQUJMRSBERVUKK0I0REQ7QjRERDsxMTAzIDExNzMgMTFBODtCNEREOzExMDMgMTE3MyAxMUE4OyAjICjrk507IOuTnTsg4YSD4YWz4YaoOyDrk507IOGEg+GFs+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgREVVRworQjRERTtCNERFOzExMDMgMTE3MyAxMUE5O0I0REU7MTEwMyAxMTczIDExQTk7ICMgKOuTnjsg65OeOyDhhIPhhbPhhqk7IOuTnjsg4YSD4YWz4YapOyApIEhBTkdVTCBTWUxMQUJMRSBERVVHRworQjRERjtCNERGOzExMDMgMTE3MyAxMUFBO0I0REY7MTEwMyAxMTczIDExQUE7ICMgKOuTnzsg65OfOyDhhIPhhbPhhqo7IOuTnzsg4YSD4YWz4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBERVVHUworQjRFMDtCNEUwOzExMDMgMTE3MyAxMUFCO0I0RTA7MTEwMyAxMTczIDExQUI7ICMgKOuToDsg65OgOyDhhIPhhbPhhqs7IOuToDsg4YSD4YWz4YarOyApIEhBTkdVTCBTWUxMQUJMRSBERVVOCitCNEUxO0I0RTE7MTEwMyAxMTczIDExQUM7QjRFMTsxMTAzIDExNzMgMTFBQzsgIyAo65OhOyDrk6E7IOGEg+GFs+GGrDsg65OhOyDhhIPhhbPhhqw7ICkgSEFOR1VMIFNZTExBQkxFIERFVU5KCitCNEUyO0I0RTI7MTEwMyAxMTczIDExQUQ7QjRFMjsxMTAzIDExNzMgMTFBRDsgIyAo65OiOyDrk6I7IOGEg+GFs+GGrTsg65OiOyDhhIPhhbPhhq07ICkgSEFOR1VMIFNZTExBQkxFIERFVU5ICitCNEUzO0I0RTM7MTEwMyAxMTczIDExQUU7QjRFMzsxMTAzIDExNzMgMTFBRTsgIyAo65OjOyDrk6M7IOGEg+GFs+GGrjsg65OjOyDhhIPhhbPhhq47ICkgSEFOR1VMIFNZTExBQkxFIERFVUQKK0I0RTQ7QjRFNDsxMTAzIDExNzMgMTFBRjtCNEU0OzExMDMgMTE3MyAxMUFGOyAjICjrk6Q7IOuTpDsg4YSD4YWz4YavOyDrk6Q7IOGEg+GFs+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgREVVTAorQjRFNTtCNEU1OzExMDMgMTE3MyAxMUIwO0I0RTU7MTEwMyAxMTczIDExQjA7ICMgKOuTpTsg65OlOyDhhIPhhbPhhrA7IOuTpTsg4YSD4YWz4YawOyApIEhBTkdVTCBTWUxMQUJMRSBERVVMRworQjRFNjtCNEU2OzExMDMgMTE3MyAxMUIxO0I0RTY7MTEwMyAxMTczIDExQjE7ICMgKOuTpjsg65OmOyDhhIPhhbPhhrE7IOuTpjsg4YSD4YWz4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBERVVMTQorQjRFNztCNEU3OzExMDMgMTE3MyAxMUIyO0I0RTc7MTEwMyAxMTczIDExQjI7ICMgKOuTpzsg65OnOyDhhIPhhbPhhrI7IOuTpzsg4YSD4YWz4YayOyApIEhBTkdVTCBTWUxMQUJMRSBERVVMQgorQjRFODtCNEU4OzExMDMgMTE3MyAxMUIzO0I0RTg7MTEwMyAxMTczIDExQjM7ICMgKOuTqDsg65OoOyDhhIPhhbPhhrM7IOuTqDsg4YSD4YWz4YazOyApIEhBTkdVTCBTWUxMQUJMRSBERVVMUworQjRFOTtCNEU5OzExMDMgMTE3MyAxMUI0O0I0RTk7MTEwMyAxMTczIDExQjQ7ICMgKOuTqTsg65OpOyDhhIPhhbPhhrQ7IOuTqTsg4YSD4YWz4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBERVVMVAorQjRFQTtCNEVBOzExMDMgMTE3MyAxMUI1O0I0RUE7MTEwMyAxMTczIDExQjU7ICMgKOuTqjsg65OqOyDhhIPhhbPhhrU7IOuTqjsg4YSD4YWz4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBERVVMUAorQjRFQjtCNEVCOzExMDMgMTE3MyAxMUI2O0I0RUI7MTEwMyAxMTczIDExQjY7ICMgKOuTqzsg65OrOyDhhIPhhbPhhrY7IOuTqzsg4YSD4YWz4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBERVVMSAorQjRFQztCNEVDOzExMDMgMTE3MyAxMUI3O0I0RUM7MTEwMyAxMTczIDExQjc7ICMgKOuTrDsg65OsOyDhhIPhhbPhhrc7IOuTrDsg4YSD4YWz4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBERVVNCitCNEVEO0I0RUQ7MTEwMyAxMTczIDExQjg7QjRFRDsxMTAzIDExNzMgMTFCODsgIyAo65OtOyDrk607IOGEg+GFs+GGuDsg65OtOyDhhIPhhbPhhrg7ICkgSEFOR1VMIFNZTExBQkxFIERFVUIKK0I0RUU7QjRFRTsxMTAzIDExNzMgMTFCOTtCNEVFOzExMDMgMTE3MyAxMUI5OyAjICjrk647IOuTrjsg4YSD4YWz4Ya5OyDrk647IOGEg+GFs+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgREVVQlMKK0I0RUY7QjRFRjsxMTAzIDExNzMgMTFCQTtCNEVGOzExMDMgMTE3MyAxMUJBOyAjICjrk687IOuTrzsg4YSD4YWz4Ya6OyDrk687IOGEg+GFs+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgREVVUworQjRGMDtCNEYwOzExMDMgMTE3MyAxMUJCO0I0RjA7MTEwMyAxMTczIDExQkI7ICMgKOuTsDsg65OwOyDhhIPhhbPhhrs7IOuTsDsg4YSD4YWz4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBERVVTUworQjRGMTtCNEYxOzExMDMgMTE3MyAxMUJDO0I0RjE7MTEwMyAxMTczIDExQkM7ICMgKOuTsTsg65OxOyDhhIPhhbPhhrw7IOuTsTsg4YSD4YWz4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBERVVORworQjRGMjtCNEYyOzExMDMgMTE3MyAxMUJEO0I0RjI7MTEwMyAxMTczIDExQkQ7ICMgKOuTsjsg65OyOyDhhIPhhbPhhr07IOuTsjsg4YSD4YWz4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBERVVKCitCNEYzO0I0RjM7MTEwMyAxMTczIDExQkU7QjRGMzsxMTAzIDExNzMgMTFCRTsgIyAo65OzOyDrk7M7IOGEg+GFs+GGvjsg65OzOyDhhIPhhbPhhr47ICkgSEFOR1VMIFNZTExBQkxFIERFVUMKK0I0RjQ7QjRGNDsxMTAzIDExNzMgMTFCRjtCNEY0OzExMDMgMTE3MyAxMUJGOyAjICjrk7Q7IOuTtDsg4YSD4YWz4Ya/OyDrk7Q7IOGEg+GFs+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgREVVSworQjRGNTtCNEY1OzExMDMgMTE3MyAxMUMwO0I0RjU7MTEwMyAxMTczIDExQzA7ICMgKOuTtTsg65O1OyDhhIPhhbPhh4A7IOuTtTsg4YSD4YWz4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBERVVUCitCNEY2O0I0RjY7MTEwMyAxMTczIDExQzE7QjRGNjsxMTAzIDExNzMgMTFDMTsgIyAo65O2OyDrk7Y7IOGEg+GFs+GHgTsg65O2OyDhhIPhhbPhh4E7ICkgSEFOR1VMIFNZTExBQkxFIERFVVAKK0I0Rjc7QjRGNzsxMTAzIDExNzMgMTFDMjtCNEY3OzExMDMgMTE3MyAxMUMyOyAjICjrk7c7IOuTtzsg4YSD4YWz4YeCOyDrk7c7IOGEg+GFs+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgREVVSAorQjRGODtCNEY4OzExMDMgMTE3NDtCNEY4OzExMDMgMTE3NDsgIyAo65O4OyDrk7g7IOGEg+GFtDsg65O4OyDhhIPhhbQ7ICkgSEFOR1VMIFNZTExBQkxFIERZSQorQjRGOTtCNEY5OzExMDMgMTE3NCAxMUE4O0I0Rjk7MTEwMyAxMTc0IDExQTg7ICMgKOuTuTsg65O5OyDhhIPhhbThhqg7IOuTuTsg4YSD4YW04YaoOyApIEhBTkdVTCBTWUxMQUJMRSBEWUlHCitCNEZBO0I0RkE7MTEwMyAxMTc0IDExQTk7QjRGQTsxMTAzIDExNzQgMTFBOTsgIyAo65O6OyDrk7o7IOGEg+GFtOGGqTsg65O6OyDhhIPhhbThhqk7ICkgSEFOR1VMIFNZTExBQkxFIERZSUdHCitCNEZCO0I0RkI7MTEwMyAxMTc0IDExQUE7QjRGQjsxMTAzIDExNzQgMTFBQTsgIyAo65O7OyDrk7s7IOGEg+GFtOGGqjsg65O7OyDhhIPhhbThhqo7ICkgSEFOR1VMIFNZTExBQkxFIERZSUdTCitCNEZDO0I0RkM7MTEwMyAxMTc0IDExQUI7QjRGQzsxMTAzIDExNzQgMTFBQjsgIyAo65O8OyDrk7w7IOGEg+GFtOGGqzsg65O8OyDhhIPhhbThhqs7ICkgSEFOR1VMIFNZTExBQkxFIERZSU4KK0I0RkQ7QjRGRDsxMTAzIDExNzQgMTFBQztCNEZEOzExMDMgMTE3NCAxMUFDOyAjICjrk707IOuTvTsg4YSD4YW04YasOyDrk707IOGEg+GFtOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgRFlJTkoKK0I0RkU7QjRGRTsxMTAzIDExNzQgMTFBRDtCNEZFOzExMDMgMTE3NCAxMUFEOyAjICjrk747IOuTvjsg4YSD4YW04YatOyDrk747IOGEg+GFtOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRFlJTkgKK0I0RkY7QjRGRjsxMTAzIDExNzQgMTFBRTtCNEZGOzExMDMgMTE3NCAxMUFFOyAjICjrk787IOuTvzsg4YSD4YW04YauOyDrk787IOGEg+GFtOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgRFlJRAorQjUwMDtCNTAwOzExMDMgMTE3NCAxMUFGO0I1MDA7MTEwMyAxMTc0IDExQUY7ICMgKOuUgDsg65SAOyDhhIPhhbThhq87IOuUgDsg4YSD4YW04YavOyApIEhBTkdVTCBTWUxMQUJMRSBEWUlMCitCNTAxO0I1MDE7MTEwMyAxMTc0IDExQjA7QjUwMTsxMTAzIDExNzQgMTFCMDsgIyAo65SBOyDrlIE7IOGEg+GFtOGGsDsg65SBOyDhhIPhhbThhrA7ICkgSEFOR1VMIFNZTExBQkxFIERZSUxHCitCNTAyO0I1MDI7MTEwMyAxMTc0IDExQjE7QjUwMjsxMTAzIDExNzQgMTFCMTsgIyAo65SCOyDrlII7IOGEg+GFtOGGsTsg65SCOyDhhIPhhbThhrE7ICkgSEFOR1VMIFNZTExBQkxFIERZSUxNCitCNTAzO0I1MDM7MTEwMyAxMTc0IDExQjI7QjUwMzsxMTAzIDExNzQgMTFCMjsgIyAo65SDOyDrlIM7IOGEg+GFtOGGsjsg65SDOyDhhIPhhbThhrI7ICkgSEFOR1VMIFNZTExBQkxFIERZSUxCCitCNTA0O0I1MDQ7MTEwMyAxMTc0IDExQjM7QjUwNDsxMTAzIDExNzQgMTFCMzsgIyAo65SEOyDrlIQ7IOGEg+GFtOGGszsg65SEOyDhhIPhhbThhrM7ICkgSEFOR1VMIFNZTExBQkxFIERZSUxTCitCNTA1O0I1MDU7MTEwMyAxMTc0IDExQjQ7QjUwNTsxMTAzIDExNzQgMTFCNDsgIyAo65SFOyDrlIU7IOGEg+GFtOGGtDsg65SFOyDhhIPhhbThhrQ7ICkgSEFOR1VMIFNZTExBQkxFIERZSUxUCitCNTA2O0I1MDY7MTEwMyAxMTc0IDExQjU7QjUwNjsxMTAzIDExNzQgMTFCNTsgIyAo65SGOyDrlIY7IOGEg+GFtOGGtTsg65SGOyDhhIPhhbThhrU7ICkgSEFOR1VMIFNZTExBQkxFIERZSUxQCitCNTA3O0I1MDc7MTEwMyAxMTc0IDExQjY7QjUwNzsxMTAzIDExNzQgMTFCNjsgIyAo65SHOyDrlIc7IOGEg+GFtOGGtjsg65SHOyDhhIPhhbThhrY7ICkgSEFOR1VMIFNZTExBQkxFIERZSUxICitCNTA4O0I1MDg7MTEwMyAxMTc0IDExQjc7QjUwODsxMTAzIDExNzQgMTFCNzsgIyAo65SIOyDrlIg7IOGEg+GFtOGGtzsg65SIOyDhhIPhhbThhrc7ICkgSEFOR1VMIFNZTExBQkxFIERZSU0KK0I1MDk7QjUwOTsxMTAzIDExNzQgMTFCODtCNTA5OzExMDMgMTE3NCAxMUI4OyAjICjrlIk7IOuUiTsg4YSD4YW04Ya4OyDrlIk7IOGEg+GFtOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgRFlJQgorQjUwQTtCNTBBOzExMDMgMTE3NCAxMUI5O0I1MEE7MTEwMyAxMTc0IDExQjk7ICMgKOuUijsg65SKOyDhhIPhhbThhrk7IOuUijsg4YSD4YW04Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBEWUlCUworQjUwQjtCNTBCOzExMDMgMTE3NCAxMUJBO0I1MEI7MTEwMyAxMTc0IDExQkE7ICMgKOuUizsg65SLOyDhhIPhhbThhro7IOuUizsg4YSD4YW04Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBEWUlTCitCNTBDO0I1MEM7MTEwMyAxMTc0IDExQkI7QjUwQzsxMTAzIDExNzQgMTFCQjsgIyAo65SMOyDrlIw7IOGEg+GFtOGGuzsg65SMOyDhhIPhhbThhrs7ICkgSEFOR1VMIFNZTExBQkxFIERZSVNTCitCNTBEO0I1MEQ7MTEwMyAxMTc0IDExQkM7QjUwRDsxMTAzIDExNzQgMTFCQzsgIyAo65SNOyDrlI07IOGEg+GFtOGGvDsg65SNOyDhhIPhhbThhrw7ICkgSEFOR1VMIFNZTExBQkxFIERZSU5HCitCNTBFO0I1MEU7MTEwMyAxMTc0IDExQkQ7QjUwRTsxMTAzIDExNzQgMTFCRDsgIyAo65SOOyDrlI47IOGEg+GFtOGGvTsg65SOOyDhhIPhhbThhr07ICkgSEFOR1VMIFNZTExBQkxFIERZSUoKK0I1MEY7QjUwRjsxMTAzIDExNzQgMTFCRTtCNTBGOzExMDMgMTE3NCAxMUJFOyAjICjrlI87IOuUjzsg4YSD4YW04Ya+OyDrlI87IOGEg+GFtOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgRFlJQworQjUxMDtCNTEwOzExMDMgMTE3NCAxMUJGO0I1MTA7MTEwMyAxMTc0IDExQkY7ICMgKOuUkDsg65SQOyDhhIPhhbThhr87IOuUkDsg4YSD4YW04Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBEWUlLCitCNTExO0I1MTE7MTEwMyAxMTc0IDExQzA7QjUxMTsxMTAzIDExNzQgMTFDMDsgIyAo65SROyDrlJE7IOGEg+GFtOGHgDsg65SROyDhhIPhhbThh4A7ICkgSEFOR1VMIFNZTExBQkxFIERZSVQKK0I1MTI7QjUxMjsxMTAzIDExNzQgMTFDMTtCNTEyOzExMDMgMTE3NCAxMUMxOyAjICjrlJI7IOuUkjsg4YSD4YW04YeBOyDrlJI7IOGEg+GFtOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgRFlJUAorQjUxMztCNTEzOzExMDMgMTE3NCAxMUMyO0I1MTM7MTEwMyAxMTc0IDExQzI7ICMgKOuUkzsg65STOyDhhIPhhbThh4I7IOuUkzsg4YSD4YW04YeCOyApIEhBTkdVTCBTWUxMQUJMRSBEWUlICitCNTE0O0I1MTQ7MTEwMyAxMTc1O0I1MTQ7MTEwMyAxMTc1OyAjICjrlJQ7IOuUlDsg4YSD4YW1OyDrlJQ7IOGEg+GFtTsgKSBIQU5HVUwgU1lMTEFCTEUgREkKK0I1MTU7QjUxNTsxMTAzIDExNzUgMTFBODtCNTE1OzExMDMgMTE3NSAxMUE4OyAjICjrlJU7IOuUlTsg4YSD4YW14YaoOyDrlJU7IOGEg+GFteGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRElHCitCNTE2O0I1MTY7MTEwMyAxMTc1IDExQTk7QjUxNjsxMTAzIDExNzUgMTFBOTsgIyAo65SWOyDrlJY7IOGEg+GFteGGqTsg65SWOyDhhIPhhbXhhqk7ICkgSEFOR1VMIFNZTExBQkxFIERJR0cKK0I1MTc7QjUxNzsxMTAzIDExNzUgMTFBQTtCNTE3OzExMDMgMTE3NSAxMUFBOyAjICjrlJc7IOuUlzsg4YSD4YW14YaqOyDrlJc7IOGEg+GFteGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgRElHUworQjUxODtCNTE4OzExMDMgMTE3NSAxMUFCO0I1MTg7MTEwMyAxMTc1IDExQUI7ICMgKOuUmDsg65SYOyDhhIPhhbXhhqs7IOuUmDsg4YSD4YW14YarOyApIEhBTkdVTCBTWUxMQUJMRSBESU4KK0I1MTk7QjUxOTsxMTAzIDExNzUgMTFBQztCNTE5OzExMDMgMTE3NSAxMUFDOyAjICjrlJk7IOuUmTsg4YSD4YW14YasOyDrlJk7IOGEg+GFteGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgRElOSgorQjUxQTtCNTFBOzExMDMgMTE3NSAxMUFEO0I1MUE7MTEwMyAxMTc1IDExQUQ7ICMgKOuUmjsg65SaOyDhhIPhhbXhhq07IOuUmjsg4YSD4YW14YatOyApIEhBTkdVTCBTWUxMQUJMRSBESU5ICitCNTFCO0I1MUI7MTEwMyAxMTc1IDExQUU7QjUxQjsxMTAzIDExNzUgMTFBRTsgIyAo65SbOyDrlJs7IOGEg+GFteGGrjsg65SbOyDhhIPhhbXhhq47ICkgSEFOR1VMIFNZTExBQkxFIERJRAorQjUxQztCNTFDOzExMDMgMTE3NSAxMUFGO0I1MUM7MTEwMyAxMTc1IDExQUY7ICMgKOuUnDsg65ScOyDhhIPhhbXhhq87IOuUnDsg4YSD4YW14YavOyApIEhBTkdVTCBTWUxMQUJMRSBESUwKK0I1MUQ7QjUxRDsxMTAzIDExNzUgMTFCMDtCNTFEOzExMDMgMTE3NSAxMUIwOyAjICjrlJ07IOuUnTsg4YSD4YW14YawOyDrlJ07IOGEg+GFteGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgRElMRworQjUxRTtCNTFFOzExMDMgMTE3NSAxMUIxO0I1MUU7MTEwMyAxMTc1IDExQjE7ICMgKOuUnjsg65SeOyDhhIPhhbXhhrE7IOuUnjsg4YSD4YW14YaxOyApIEhBTkdVTCBTWUxMQUJMRSBESUxNCitCNTFGO0I1MUY7MTEwMyAxMTc1IDExQjI7QjUxRjsxMTAzIDExNzUgMTFCMjsgIyAo65SfOyDrlJ87IOGEg+GFteGGsjsg65SfOyDhhIPhhbXhhrI7ICkgSEFOR1VMIFNZTExBQkxFIERJTEIKK0I1MjA7QjUyMDsxMTAzIDExNzUgMTFCMztCNTIwOzExMDMgMTE3NSAxMUIzOyAjICjrlKA7IOuUoDsg4YSD4YW14YazOyDrlKA7IOGEg+GFteGGszsgKSBIQU5HVUwgU1lMTEFCTEUgRElMUworQjUyMTtCNTIxOzExMDMgMTE3NSAxMUI0O0I1MjE7MTEwMyAxMTc1IDExQjQ7ICMgKOuUoTsg65ShOyDhhIPhhbXhhrQ7IOuUoTsg4YSD4YW14Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBESUxUCitCNTIyO0I1MjI7MTEwMyAxMTc1IDExQjU7QjUyMjsxMTAzIDExNzUgMTFCNTsgIyAo65SiOyDrlKI7IOGEg+GFteGGtTsg65SiOyDhhIPhhbXhhrU7ICkgSEFOR1VMIFNZTExBQkxFIERJTFAKK0I1MjM7QjUyMzsxMTAzIDExNzUgMTFCNjtCNTIzOzExMDMgMTE3NSAxMUI2OyAjICjrlKM7IOuUozsg4YSD4YW14Ya2OyDrlKM7IOGEg+GFteGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgRElMSAorQjUyNDtCNTI0OzExMDMgMTE3NSAxMUI3O0I1MjQ7MTEwMyAxMTc1IDExQjc7ICMgKOuUpDsg65SkOyDhhIPhhbXhhrc7IOuUpDsg4YSD4YW14Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBESU0KK0I1MjU7QjUyNTsxMTAzIDExNzUgMTFCODtCNTI1OzExMDMgMTE3NSAxMUI4OyAjICjrlKU7IOuUpTsg4YSD4YW14Ya4OyDrlKU7IOGEg+GFteGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgRElCCitCNTI2O0I1MjY7MTEwMyAxMTc1IDExQjk7QjUyNjsxMTAzIDExNzUgMTFCOTsgIyAo65SmOyDrlKY7IOGEg+GFteGGuTsg65SmOyDhhIPhhbXhhrk7ICkgSEFOR1VMIFNZTExBQkxFIERJQlMKK0I1Mjc7QjUyNzsxMTAzIDExNzUgMTFCQTtCNTI3OzExMDMgMTE3NSAxMUJBOyAjICjrlKc7IOuUpzsg4YSD4YW14Ya6OyDrlKc7IOGEg+GFteGGujsgKSBIQU5HVUwgU1lMTEFCTEUgRElTCitCNTI4O0I1Mjg7MTEwMyAxMTc1IDExQkI7QjUyODsxMTAzIDExNzUgMTFCQjsgIyAo65SoOyDrlKg7IOGEg+GFteGGuzsg65SoOyDhhIPhhbXhhrs7ICkgSEFOR1VMIFNZTExBQkxFIERJU1MKK0I1Mjk7QjUyOTsxMTAzIDExNzUgMTFCQztCNTI5OzExMDMgMTE3NSAxMUJDOyAjICjrlKk7IOuUqTsg4YSD4YW14Ya8OyDrlKk7IOGEg+GFteGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgRElORworQjUyQTtCNTJBOzExMDMgMTE3NSAxMUJEO0I1MkE7MTEwMyAxMTc1IDExQkQ7ICMgKOuUqjsg65SqOyDhhIPhhbXhhr07IOuUqjsg4YSD4YW14Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBESUoKK0I1MkI7QjUyQjsxMTAzIDExNzUgMTFCRTtCNTJCOzExMDMgMTE3NSAxMUJFOyAjICjrlKs7IOuUqzsg4YSD4YW14Ya+OyDrlKs7IOGEg+GFteGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgRElDCitCNTJDO0I1MkM7MTEwMyAxMTc1IDExQkY7QjUyQzsxMTAzIDExNzUgMTFCRjsgIyAo65SsOyDrlKw7IOGEg+GFteGGvzsg65SsOyDhhIPhhbXhhr87ICkgSEFOR1VMIFNZTExBQkxFIERJSworQjUyRDtCNTJEOzExMDMgMTE3NSAxMUMwO0I1MkQ7MTEwMyAxMTc1IDExQzA7ICMgKOuUrTsg65StOyDhhIPhhbXhh4A7IOuUrTsg4YSD4YW14YeAOyApIEhBTkdVTCBTWUxMQUJMRSBESVQKK0I1MkU7QjUyRTsxMTAzIDExNzUgMTFDMTtCNTJFOzExMDMgMTE3NSAxMUMxOyAjICjrlK47IOuUrjsg4YSD4YW14YeBOyDrlK47IOGEg+GFteGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgRElQCitCNTJGO0I1MkY7MTEwMyAxMTc1IDExQzI7QjUyRjsxMTAzIDExNzUgMTFDMjsgIyAo65SvOyDrlK87IOGEg+GFteGHgjsg65SvOyDhhIPhhbXhh4I7ICkgSEFOR1VMIFNZTExBQkxFIERJSAorQjUzMDtCNTMwOzExMDQgMTE2MTtCNTMwOzExMDQgMTE2MTsgIyAo65SwOyDrlLA7IOGEhOGFoTsg65SwOyDhhIThhaE7ICkgSEFOR1VMIFNZTExBQkxFIEREQQorQjUzMTtCNTMxOzExMDQgMTE2MSAxMUE4O0I1MzE7MTEwNCAxMTYxIDExQTg7ICMgKOuUsTsg65SxOyDhhIThhaHhhqg7IOuUsTsg4YSE4YWh4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBEREFHCitCNTMyO0I1MzI7MTEwNCAxMTYxIDExQTk7QjUzMjsxMTA0IDExNjEgMTFBOTsgIyAo65SyOyDrlLI7IOGEhOGFoeGGqTsg65SyOyDhhIThhaHhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEREQUdHCitCNTMzO0I1MzM7MTEwNCAxMTYxIDExQUE7QjUzMzsxMTA0IDExNjEgMTFBQTsgIyAo65SzOyDrlLM7IOGEhOGFoeGGqjsg65SzOyDhhIThhaHhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEREQUdTCitCNTM0O0I1MzQ7MTEwNCAxMTYxIDExQUI7QjUzNDsxMTA0IDExNjEgMTFBQjsgIyAo65S0OyDrlLQ7IOGEhOGFoeGGqzsg65S0OyDhhIThhaHhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEREQU4KK0I1MzU7QjUzNTsxMTA0IDExNjEgMTFBQztCNTM1OzExMDQgMTE2MSAxMUFDOyAjICjrlLU7IOuUtTsg4YSE4YWh4YasOyDrlLU7IOGEhOGFoeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgRERBTkoKK0I1MzY7QjUzNjsxMTA0IDExNjEgMTFBRDtCNTM2OzExMDQgMTE2MSAxMUFEOyAjICjrlLY7IOuUtjsg4YSE4YWh4YatOyDrlLY7IOGEhOGFoeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRERBTkgKK0I1Mzc7QjUzNzsxMTA0IDExNjEgMTFBRTtCNTM3OzExMDQgMTE2MSAxMUFFOyAjICjrlLc7IOuUtzsg4YSE4YWh4YauOyDrlLc7IOGEhOGFoeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgRERBRAorQjUzODtCNTM4OzExMDQgMTE2MSAxMUFGO0I1Mzg7MTEwNCAxMTYxIDExQUY7ICMgKOuUuDsg65S4OyDhhIThhaHhhq87IOuUuDsg4YSE4YWh4YavOyApIEhBTkdVTCBTWUxMQUJMRSBEREFMCitCNTM5O0I1Mzk7MTEwNCAxMTYxIDExQjA7QjUzOTsxMTA0IDExNjEgMTFCMDsgIyAo65S5OyDrlLk7IOGEhOGFoeGGsDsg65S5OyDhhIThhaHhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEREQUxHCitCNTNBO0I1M0E7MTEwNCAxMTYxIDExQjE7QjUzQTsxMTA0IDExNjEgMTFCMTsgIyAo65S6OyDrlLo7IOGEhOGFoeGGsTsg65S6OyDhhIThhaHhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEREQUxNCitCNTNCO0I1M0I7MTEwNCAxMTYxIDExQjI7QjUzQjsxMTA0IDExNjEgMTFCMjsgIyAo65S7OyDrlLs7IOGEhOGFoeGGsjsg65S7OyDhhIThhaHhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEREQUxCCitCNTNDO0I1M0M7MTEwNCAxMTYxIDExQjM7QjUzQzsxMTA0IDExNjEgMTFCMzsgIyAo65S8OyDrlLw7IOGEhOGFoeGGszsg65S8OyDhhIThhaHhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEREQUxTCitCNTNEO0I1M0Q7MTEwNCAxMTYxIDExQjQ7QjUzRDsxMTA0IDExNjEgMTFCNDsgIyAo65S9OyDrlL07IOGEhOGFoeGGtDsg65S9OyDhhIThhaHhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEREQUxUCitCNTNFO0I1M0U7MTEwNCAxMTYxIDExQjU7QjUzRTsxMTA0IDExNjEgMTFCNTsgIyAo65S+OyDrlL47IOGEhOGFoeGGtTsg65S+OyDhhIThhaHhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEREQUxQCitCNTNGO0I1M0Y7MTEwNCAxMTYxIDExQjY7QjUzRjsxMTA0IDExNjEgMTFCNjsgIyAo65S/OyDrlL87IOGEhOGFoeGGtjsg65S/OyDhhIThhaHhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEREQUxICitCNTQwO0I1NDA7MTEwNCAxMTYxIDExQjc7QjU0MDsxMTA0IDExNjEgMTFCNzsgIyAo65WAOyDrlYA7IOGEhOGFoeGGtzsg65WAOyDhhIThhaHhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEREQU0KK0I1NDE7QjU0MTsxMTA0IDExNjEgMTFCODtCNTQxOzExMDQgMTE2MSAxMUI4OyAjICjrlYE7IOuVgTsg4YSE4YWh4Ya4OyDrlYE7IOGEhOGFoeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgRERBQgorQjU0MjtCNTQyOzExMDQgMTE2MSAxMUI5O0I1NDI7MTEwNCAxMTYxIDExQjk7ICMgKOuVgjsg65WCOyDhhIThhaHhhrk7IOuVgjsg4YSE4YWh4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBEREFCUworQjU0MztCNTQzOzExMDQgMTE2MSAxMUJBO0I1NDM7MTEwNCAxMTYxIDExQkE7ICMgKOuVgzsg65WDOyDhhIThhaHhhro7IOuVgzsg4YSE4YWh4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBEREFTCitCNTQ0O0I1NDQ7MTEwNCAxMTYxIDExQkI7QjU0NDsxMTA0IDExNjEgMTFCQjsgIyAo65WEOyDrlYQ7IOGEhOGFoeGGuzsg65WEOyDhhIThhaHhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEREQVNTCitCNTQ1O0I1NDU7MTEwNCAxMTYxIDExQkM7QjU0NTsxMTA0IDExNjEgMTFCQzsgIyAo65WFOyDrlYU7IOGEhOGFoeGGvDsg65WFOyDhhIThhaHhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEREQU5HCitCNTQ2O0I1NDY7MTEwNCAxMTYxIDExQkQ7QjU0NjsxMTA0IDExNjEgMTFCRDsgIyAo65WGOyDrlYY7IOGEhOGFoeGGvTsg65WGOyDhhIThhaHhhr07ICkgSEFOR1VMIFNZTExBQkxFIEREQUoKK0I1NDc7QjU0NzsxMTA0IDExNjEgMTFCRTtCNTQ3OzExMDQgMTE2MSAxMUJFOyAjICjrlYc7IOuVhzsg4YSE4YWh4Ya+OyDrlYc7IOGEhOGFoeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgRERBQworQjU0ODtCNTQ4OzExMDQgMTE2MSAxMUJGO0I1NDg7MTEwNCAxMTYxIDExQkY7ICMgKOuViDsg65WIOyDhhIThhaHhhr87IOuViDsg4YSE4YWh4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBEREFLCitCNTQ5O0I1NDk7MTEwNCAxMTYxIDExQzA7QjU0OTsxMTA0IDExNjEgMTFDMDsgIyAo65WJOyDrlYk7IOGEhOGFoeGHgDsg65WJOyDhhIThhaHhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEREQVQKK0I1NEE7QjU0QTsxMTA0IDExNjEgMTFDMTtCNTRBOzExMDQgMTE2MSAxMUMxOyAjICjrlYo7IOuVijsg4YSE4YWh4YeBOyDrlYo7IOGEhOGFoeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgRERBUAorQjU0QjtCNTRCOzExMDQgMTE2MSAxMUMyO0I1NEI7MTEwNCAxMTYxIDExQzI7ICMgKOuVizsg65WLOyDhhIThhaHhh4I7IOuVizsg4YSE4YWh4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBEREFICitCNTRDO0I1NEM7MTEwNCAxMTYyO0I1NEM7MTEwNCAxMTYyOyAjICjrlYw7IOuVjDsg4YSE4YWiOyDrlYw7IOGEhOGFojsgKSBIQU5HVUwgU1lMTEFCTEUgRERBRQorQjU0RDtCNTREOzExMDQgMTE2MiAxMUE4O0I1NEQ7MTEwNCAxMTYyIDExQTg7ICMgKOuVjTsg65WNOyDhhIThhaLhhqg7IOuVjTsg4YSE4YWi4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBEREFFRworQjU0RTtCNTRFOzExMDQgMTE2MiAxMUE5O0I1NEU7MTEwNCAxMTYyIDExQTk7ICMgKOuVjjsg65WOOyDhhIThhaLhhqk7IOuVjjsg4YSE4YWi4YapOyApIEhBTkdVTCBTWUxMQUJMRSBEREFFR0cKK0I1NEY7QjU0RjsxMTA0IDExNjIgMTFBQTtCNTRGOzExMDQgMTE2MiAxMUFBOyAjICjrlY87IOuVjzsg4YSE4YWi4YaqOyDrlY87IOGEhOGFouGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgRERBRUdTCitCNTUwO0I1NTA7MTEwNCAxMTYyIDExQUI7QjU1MDsxMTA0IDExNjIgMTFBQjsgIyAo65WQOyDrlZA7IOGEhOGFouGGqzsg65WQOyDhhIThhaLhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEREQUVOCitCNTUxO0I1NTE7MTEwNCAxMTYyIDExQUM7QjU1MTsxMTA0IDExNjIgMTFBQzsgIyAo65WROyDrlZE7IOGEhOGFouGGrDsg65WROyDhhIThhaLhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEREQUVOSgorQjU1MjtCNTUyOzExMDQgMTE2MiAxMUFEO0I1NTI7MTEwNCAxMTYyIDExQUQ7ICMgKOuVkjsg65WSOyDhhIThhaLhhq07IOuVkjsg4YSE4YWi4YatOyApIEhBTkdVTCBTWUxMQUJMRSBEREFFTkgKK0I1NTM7QjU1MzsxMTA0IDExNjIgMTFBRTtCNTUzOzExMDQgMTE2MiAxMUFFOyAjICjrlZM7IOuVkzsg4YSE4YWi4YauOyDrlZM7IOGEhOGFouGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgRERBRUQKK0I1NTQ7QjU1NDsxMTA0IDExNjIgMTFBRjtCNTU0OzExMDQgMTE2MiAxMUFGOyAjICjrlZQ7IOuVlDsg4YSE4YWi4YavOyDrlZQ7IOGEhOGFouGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgRERBRUwKK0I1NTU7QjU1NTsxMTA0IDExNjIgMTFCMDtCNTU1OzExMDQgMTE2MiAxMUIwOyAjICjrlZU7IOuVlTsg4YSE4YWi4YawOyDrlZU7IOGEhOGFouGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgRERBRUxHCitCNTU2O0I1NTY7MTEwNCAxMTYyIDExQjE7QjU1NjsxMTA0IDExNjIgMTFCMTsgIyAo65WWOyDrlZY7IOGEhOGFouGGsTsg65WWOyDhhIThhaLhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEREQUVMTQorQjU1NztCNTU3OzExMDQgMTE2MiAxMUIyO0I1NTc7MTEwNCAxMTYyIDExQjI7ICMgKOuVlzsg65WXOyDhhIThhaLhhrI7IOuVlzsg4YSE4YWi4YayOyApIEhBTkdVTCBTWUxMQUJMRSBEREFFTEIKK0I1NTg7QjU1ODsxMTA0IDExNjIgMTFCMztCNTU4OzExMDQgMTE2MiAxMUIzOyAjICjrlZg7IOuVmDsg4YSE4YWi4YazOyDrlZg7IOGEhOGFouGGszsgKSBIQU5HVUwgU1lMTEFCTEUgRERBRUxTCitCNTU5O0I1NTk7MTEwNCAxMTYyIDExQjQ7QjU1OTsxMTA0IDExNjIgMTFCNDsgIyAo65WZOyDrlZk7IOGEhOGFouGGtDsg65WZOyDhhIThhaLhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEREQUVMVAorQjU1QTtCNTVBOzExMDQgMTE2MiAxMUI1O0I1NUE7MTEwNCAxMTYyIDExQjU7ICMgKOuVmjsg65WaOyDhhIThhaLhhrU7IOuVmjsg4YSE4YWi4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBEREFFTFAKK0I1NUI7QjU1QjsxMTA0IDExNjIgMTFCNjtCNTVCOzExMDQgMTE2MiAxMUI2OyAjICjrlZs7IOuVmzsg4YSE4YWi4Ya2OyDrlZs7IOGEhOGFouGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgRERBRUxICitCNTVDO0I1NUM7MTEwNCAxMTYyIDExQjc7QjU1QzsxMTA0IDExNjIgMTFCNzsgIyAo65WcOyDrlZw7IOGEhOGFouGGtzsg65WcOyDhhIThhaLhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEREQUVNCitCNTVEO0I1NUQ7MTEwNCAxMTYyIDExQjg7QjU1RDsxMTA0IDExNjIgMTFCODsgIyAo65WdOyDrlZ07IOGEhOGFouGGuDsg65WdOyDhhIThhaLhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEREQUVCCitCNTVFO0I1NUU7MTEwNCAxMTYyIDExQjk7QjU1RTsxMTA0IDExNjIgMTFCOTsgIyAo65WeOyDrlZ47IOGEhOGFouGGuTsg65WeOyDhhIThhaLhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEREQUVCUworQjU1RjtCNTVGOzExMDQgMTE2MiAxMUJBO0I1NUY7MTEwNCAxMTYyIDExQkE7ICMgKOuVnzsg65WfOyDhhIThhaLhhro7IOuVnzsg4YSE4YWi4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBEREFFUworQjU2MDtCNTYwOzExMDQgMTE2MiAxMUJCO0I1NjA7MTEwNCAxMTYyIDExQkI7ICMgKOuVoDsg65WgOyDhhIThhaLhhrs7IOuVoDsg4YSE4YWi4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBEREFFU1MKK0I1NjE7QjU2MTsxMTA0IDExNjIgMTFCQztCNTYxOzExMDQgMTE2MiAxMUJDOyAjICjrlaE7IOuVoTsg4YSE4YWi4Ya8OyDrlaE7IOGEhOGFouGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgRERBRU5HCitCNTYyO0I1NjI7MTEwNCAxMTYyIDExQkQ7QjU2MjsxMTA0IDExNjIgMTFCRDsgIyAo65WiOyDrlaI7IOGEhOGFouGGvTsg65WiOyDhhIThhaLhhr07ICkgSEFOR1VMIFNZTExBQkxFIEREQUVKCitCNTYzO0I1NjM7MTEwNCAxMTYyIDExQkU7QjU2MzsxMTA0IDExNjIgMTFCRTsgIyAo65WjOyDrlaM7IOGEhOGFouGGvjsg65WjOyDhhIThhaLhhr47ICkgSEFOR1VMIFNZTExBQkxFIEREQUVDCitCNTY0O0I1NjQ7MTEwNCAxMTYyIDExQkY7QjU2NDsxMTA0IDExNjIgMTFCRjsgIyAo65WkOyDrlaQ7IOGEhOGFouGGvzsg65WkOyDhhIThhaLhhr87ICkgSEFOR1VMIFNZTExBQkxFIEREQUVLCitCNTY1O0I1NjU7MTEwNCAxMTYyIDExQzA7QjU2NTsxMTA0IDExNjIgMTFDMDsgIyAo65WlOyDrlaU7IOGEhOGFouGHgDsg65WlOyDhhIThhaLhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEREQUVUCitCNTY2O0I1NjY7MTEwNCAxMTYyIDExQzE7QjU2NjsxMTA0IDExNjIgMTFDMTsgIyAo65WmOyDrlaY7IOGEhOGFouGHgTsg65WmOyDhhIThhaLhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEREQUVQCitCNTY3O0I1Njc7MTEwNCAxMTYyIDExQzI7QjU2NzsxMTA0IDExNjIgMTFDMjsgIyAo65WnOyDrlac7IOGEhOGFouGHgjsg65WnOyDhhIThhaLhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEREQUVICitCNTY4O0I1Njg7MTEwNCAxMTYzO0I1Njg7MTEwNCAxMTYzOyAjICjrlag7IOuVqDsg4YSE4YWjOyDrlag7IOGEhOGFozsgKSBIQU5HVUwgU1lMTEFCTEUgRERZQQorQjU2OTtCNTY5OzExMDQgMTE2MyAxMUE4O0I1Njk7MTEwNCAxMTYzIDExQTg7ICMgKOuVqTsg65WpOyDhhIThhaPhhqg7IOuVqTsg4YSE4YWj4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBERFlBRworQjU2QTtCNTZBOzExMDQgMTE2MyAxMUE5O0I1NkE7MTEwNCAxMTYzIDExQTk7ICMgKOuVqjsg65WqOyDhhIThhaPhhqk7IOuVqjsg4YSE4YWj4YapOyApIEhBTkdVTCBTWUxMQUJMRSBERFlBR0cKK0I1NkI7QjU2QjsxMTA0IDExNjMgMTFBQTtCNTZCOzExMDQgMTE2MyAxMUFBOyAjICjrlas7IOuVqzsg4YSE4YWj4YaqOyDrlas7IOGEhOGFo+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgRERZQUdTCitCNTZDO0I1NkM7MTEwNCAxMTYzIDExQUI7QjU2QzsxMTA0IDExNjMgMTFBQjsgIyAo65WsOyDrlaw7IOGEhOGFo+GGqzsg65WsOyDhhIThhaPhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEREWUFOCitCNTZEO0I1NkQ7MTEwNCAxMTYzIDExQUM7QjU2RDsxMTA0IDExNjMgMTFBQzsgIyAo65WtOyDrla07IOGEhOGFo+GGrDsg65WtOyDhhIThhaPhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEREWUFOSgorQjU2RTtCNTZFOzExMDQgMTE2MyAxMUFEO0I1NkU7MTEwNCAxMTYzIDExQUQ7ICMgKOuVrjsg65WuOyDhhIThhaPhhq07IOuVrjsg4YSE4YWj4YatOyApIEhBTkdVTCBTWUxMQUJMRSBERFlBTkgKK0I1NkY7QjU2RjsxMTA0IDExNjMgMTFBRTtCNTZGOzExMDQgMTE2MyAxMUFFOyAjICjrla87IOuVrzsg4YSE4YWj4YauOyDrla87IOGEhOGFo+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgRERZQUQKK0I1NzA7QjU3MDsxMTA0IDExNjMgMTFBRjtCNTcwOzExMDQgMTE2MyAxMUFGOyAjICjrlbA7IOuVsDsg4YSE4YWj4YavOyDrlbA7IOGEhOGFo+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgRERZQUwKK0I1NzE7QjU3MTsxMTA0IDExNjMgMTFCMDtCNTcxOzExMDQgMTE2MyAxMUIwOyAjICjrlbE7IOuVsTsg4YSE4YWj4YawOyDrlbE7IOGEhOGFo+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgRERZQUxHCitCNTcyO0I1NzI7MTEwNCAxMTYzIDExQjE7QjU3MjsxMTA0IDExNjMgMTFCMTsgIyAo65WyOyDrlbI7IOGEhOGFo+GGsTsg65WyOyDhhIThhaPhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEREWUFMTQorQjU3MztCNTczOzExMDQgMTE2MyAxMUIyO0I1NzM7MTEwNCAxMTYzIDExQjI7ICMgKOuVszsg65WzOyDhhIThhaPhhrI7IOuVszsg4YSE4YWj4YayOyApIEhBTkdVTCBTWUxMQUJMRSBERFlBTEIKK0I1NzQ7QjU3NDsxMTA0IDExNjMgMTFCMztCNTc0OzExMDQgMTE2MyAxMUIzOyAjICjrlbQ7IOuVtDsg4YSE4YWj4YazOyDrlbQ7IOGEhOGFo+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgRERZQUxTCitCNTc1O0I1NzU7MTEwNCAxMTYzIDExQjQ7QjU3NTsxMTA0IDExNjMgMTFCNDsgIyAo65W1OyDrlbU7IOGEhOGFo+GGtDsg65W1OyDhhIThhaPhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEREWUFMVAorQjU3NjtCNTc2OzExMDQgMTE2MyAxMUI1O0I1NzY7MTEwNCAxMTYzIDExQjU7ICMgKOuVtjsg65W2OyDhhIThhaPhhrU7IOuVtjsg4YSE4YWj4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBERFlBTFAKK0I1Nzc7QjU3NzsxMTA0IDExNjMgMTFCNjtCNTc3OzExMDQgMTE2MyAxMUI2OyAjICjrlbc7IOuVtzsg4YSE4YWj4Ya2OyDrlbc7IOGEhOGFo+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgRERZQUxICitCNTc4O0I1Nzg7MTEwNCAxMTYzIDExQjc7QjU3ODsxMTA0IDExNjMgMTFCNzsgIyAo65W4OyDrlbg7IOGEhOGFo+GGtzsg65W4OyDhhIThhaPhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEREWUFNCitCNTc5O0I1Nzk7MTEwNCAxMTYzIDExQjg7QjU3OTsxMTA0IDExNjMgMTFCODsgIyAo65W5OyDrlbk7IOGEhOGFo+GGuDsg65W5OyDhhIThhaPhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEREWUFCCitCNTdBO0I1N0E7MTEwNCAxMTYzIDExQjk7QjU3QTsxMTA0IDExNjMgMTFCOTsgIyAo65W6OyDrlbo7IOGEhOGFo+GGuTsg65W6OyDhhIThhaPhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEREWUFCUworQjU3QjtCNTdCOzExMDQgMTE2MyAxMUJBO0I1N0I7MTEwNCAxMTYzIDExQkE7ICMgKOuVuzsg65W7OyDhhIThhaPhhro7IOuVuzsg4YSE4YWj4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBERFlBUworQjU3QztCNTdDOzExMDQgMTE2MyAxMUJCO0I1N0M7MTEwNCAxMTYzIDExQkI7ICMgKOuVvDsg65W8OyDhhIThhaPhhrs7IOuVvDsg4YSE4YWj4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBERFlBU1MKK0I1N0Q7QjU3RDsxMTA0IDExNjMgMTFCQztCNTdEOzExMDQgMTE2MyAxMUJDOyAjICjrlb07IOuVvTsg4YSE4YWj4Ya8OyDrlb07IOGEhOGFo+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgRERZQU5HCitCNTdFO0I1N0U7MTEwNCAxMTYzIDExQkQ7QjU3RTsxMTA0IDExNjMgMTFCRDsgIyAo65W+OyDrlb47IOGEhOGFo+GGvTsg65W+OyDhhIThhaPhhr07ICkgSEFOR1VMIFNZTExBQkxFIEREWUFKCitCNTdGO0I1N0Y7MTEwNCAxMTYzIDExQkU7QjU3RjsxMTA0IDExNjMgMTFCRTsgIyAo65W/OyDrlb87IOGEhOGFo+GGvjsg65W/OyDhhIThhaPhhr47ICkgSEFOR1VMIFNZTExBQkxFIEREWUFDCitCNTgwO0I1ODA7MTEwNCAxMTYzIDExQkY7QjU4MDsxMTA0IDExNjMgMTFCRjsgIyAo65aAOyDrloA7IOGEhOGFo+GGvzsg65aAOyDhhIThhaPhhr87ICkgSEFOR1VMIFNZTExBQkxFIEREWUFLCitCNTgxO0I1ODE7MTEwNCAxMTYzIDExQzA7QjU4MTsxMTA0IDExNjMgMTFDMDsgIyAo65aBOyDrloE7IOGEhOGFo+GHgDsg65aBOyDhhIThhaPhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEREWUFUCitCNTgyO0I1ODI7MTEwNCAxMTYzIDExQzE7QjU4MjsxMTA0IDExNjMgMTFDMTsgIyAo65aCOyDrloI7IOGEhOGFo+GHgTsg65aCOyDhhIThhaPhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEREWUFQCitCNTgzO0I1ODM7MTEwNCAxMTYzIDExQzI7QjU4MzsxMTA0IDExNjMgMTFDMjsgIyAo65aDOyDrloM7IOGEhOGFo+GHgjsg65aDOyDhhIThhaPhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEREWUFICitCNTg0O0I1ODQ7MTEwNCAxMTY0O0I1ODQ7MTEwNCAxMTY0OyAjICjrloQ7IOuWhDsg4YSE4YWkOyDrloQ7IOGEhOGFpDsgKSBIQU5HVUwgU1lMTEFCTEUgRERZQUUKK0I1ODU7QjU4NTsxMTA0IDExNjQgMTFBODtCNTg1OzExMDQgMTE2NCAxMUE4OyAjICjrloU7IOuWhTsg4YSE4YWk4YaoOyDrloU7IOGEhOGFpOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRERZQUVHCitCNTg2O0I1ODY7MTEwNCAxMTY0IDExQTk7QjU4NjsxMTA0IDExNjQgMTFBOTsgIyAo65aGOyDrloY7IOGEhOGFpOGGqTsg65aGOyDhhIThhaThhqk7ICkgSEFOR1VMIFNZTExBQkxFIEREWUFFR0cKK0I1ODc7QjU4NzsxMTA0IDExNjQgMTFBQTtCNTg3OzExMDQgMTE2NCAxMUFBOyAjICjrloc7IOuWhzsg4YSE4YWk4YaqOyDrloc7IOGEhOGFpOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgRERZQUVHUworQjU4ODtCNTg4OzExMDQgMTE2NCAxMUFCO0I1ODg7MTEwNCAxMTY0IDExQUI7ICMgKOuWiDsg65aIOyDhhIThhaThhqs7IOuWiDsg4YSE4YWk4YarOyApIEhBTkdVTCBTWUxMQUJMRSBERFlBRU4KK0I1ODk7QjU4OTsxMTA0IDExNjQgMTFBQztCNTg5OzExMDQgMTE2NCAxMUFDOyAjICjrlok7IOuWiTsg4YSE4YWk4YasOyDrlok7IOGEhOGFpOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgRERZQUVOSgorQjU4QTtCNThBOzExMDQgMTE2NCAxMUFEO0I1OEE7MTEwNCAxMTY0IDExQUQ7ICMgKOuWijsg65aKOyDhhIThhaThhq07IOuWijsg4YSE4YWk4YatOyApIEhBTkdVTCBTWUxMQUJMRSBERFlBRU5ICitCNThCO0I1OEI7MTEwNCAxMTY0IDExQUU7QjU4QjsxMTA0IDExNjQgMTFBRTsgIyAo65aLOyDrlos7IOGEhOGFpOGGrjsg65aLOyDhhIThhaThhq47ICkgSEFOR1VMIFNZTExBQkxFIEREWUFFRAorQjU4QztCNThDOzExMDQgMTE2NCAxMUFGO0I1OEM7MTEwNCAxMTY0IDExQUY7ICMgKOuWjDsg65aMOyDhhIThhaThhq87IOuWjDsg4YSE4YWk4YavOyApIEhBTkdVTCBTWUxMQUJMRSBERFlBRUwKK0I1OEQ7QjU4RDsxMTA0IDExNjQgMTFCMDtCNThEOzExMDQgMTE2NCAxMUIwOyAjICjrlo07IOuWjTsg4YSE4YWk4YawOyDrlo07IOGEhOGFpOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgRERZQUVMRworQjU4RTtCNThFOzExMDQgMTE2NCAxMUIxO0I1OEU7MTEwNCAxMTY0IDExQjE7ICMgKOuWjjsg65aOOyDhhIThhaThhrE7IOuWjjsg4YSE4YWk4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBERFlBRUxNCitCNThGO0I1OEY7MTEwNCAxMTY0IDExQjI7QjU4RjsxMTA0IDExNjQgMTFCMjsgIyAo65aPOyDrlo87IOGEhOGFpOGGsjsg65aPOyDhhIThhaThhrI7ICkgSEFOR1VMIFNZTExBQkxFIEREWUFFTEIKK0I1OTA7QjU5MDsxMTA0IDExNjQgMTFCMztCNTkwOzExMDQgMTE2NCAxMUIzOyAjICjrlpA7IOuWkDsg4YSE4YWk4YazOyDrlpA7IOGEhOGFpOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgRERZQUVMUworQjU5MTtCNTkxOzExMDQgMTE2NCAxMUI0O0I1OTE7MTEwNCAxMTY0IDExQjQ7ICMgKOuWkTsg65aROyDhhIThhaThhrQ7IOuWkTsg4YSE4YWk4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBERFlBRUxUCitCNTkyO0I1OTI7MTEwNCAxMTY0IDExQjU7QjU5MjsxMTA0IDExNjQgMTFCNTsgIyAo65aSOyDrlpI7IOGEhOGFpOGGtTsg65aSOyDhhIThhaThhrU7ICkgSEFOR1VMIFNZTExBQkxFIEREWUFFTFAKK0I1OTM7QjU5MzsxMTA0IDExNjQgMTFCNjtCNTkzOzExMDQgMTE2NCAxMUI2OyAjICjrlpM7IOuWkzsg4YSE4YWk4Ya2OyDrlpM7IOGEhOGFpOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgRERZQUVMSAorQjU5NDtCNTk0OzExMDQgMTE2NCAxMUI3O0I1OTQ7MTEwNCAxMTY0IDExQjc7ICMgKOuWlDsg65aUOyDhhIThhaThhrc7IOuWlDsg4YSE4YWk4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBERFlBRU0KK0I1OTU7QjU5NTsxMTA0IDExNjQgMTFCODtCNTk1OzExMDQgMTE2NCAxMUI4OyAjICjrlpU7IOuWlTsg4YSE4YWk4Ya4OyDrlpU7IOGEhOGFpOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgRERZQUVCCitCNTk2O0I1OTY7MTEwNCAxMTY0IDExQjk7QjU5NjsxMTA0IDExNjQgMTFCOTsgIyAo65aWOyDrlpY7IOGEhOGFpOGGuTsg65aWOyDhhIThhaThhrk7ICkgSEFOR1VMIFNZTExBQkxFIEREWUFFQlMKK0I1OTc7QjU5NzsxMTA0IDExNjQgMTFCQTtCNTk3OzExMDQgMTE2NCAxMUJBOyAjICjrlpc7IOuWlzsg4YSE4YWk4Ya6OyDrlpc7IOGEhOGFpOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgRERZQUVTCitCNTk4O0I1OTg7MTEwNCAxMTY0IDExQkI7QjU5ODsxMTA0IDExNjQgMTFCQjsgIyAo65aYOyDrlpg7IOGEhOGFpOGGuzsg65aYOyDhhIThhaThhrs7ICkgSEFOR1VMIFNZTExBQkxFIEREWUFFU1MKK0I1OTk7QjU5OTsxMTA0IDExNjQgMTFCQztCNTk5OzExMDQgMTE2NCAxMUJDOyAjICjrlpk7IOuWmTsg4YSE4YWk4Ya8OyDrlpk7IOGEhOGFpOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgRERZQUVORworQjU5QTtCNTlBOzExMDQgMTE2NCAxMUJEO0I1OUE7MTEwNCAxMTY0IDExQkQ7ICMgKOuWmjsg65aaOyDhhIThhaThhr07IOuWmjsg4YSE4YWk4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBERFlBRUoKK0I1OUI7QjU5QjsxMTA0IDExNjQgMTFCRTtCNTlCOzExMDQgMTE2NCAxMUJFOyAjICjrlps7IOuWmzsg4YSE4YWk4Ya+OyDrlps7IOGEhOGFpOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgRERZQUVDCitCNTlDO0I1OUM7MTEwNCAxMTY0IDExQkY7QjU5QzsxMTA0IDExNjQgMTFCRjsgIyAo65acOyDrlpw7IOGEhOGFpOGGvzsg65acOyDhhIThhaThhr87ICkgSEFOR1VMIFNZTExBQkxFIEREWUFFSworQjU5RDtCNTlEOzExMDQgMTE2NCAxMUMwO0I1OUQ7MTEwNCAxMTY0IDExQzA7ICMgKOuWnTsg65adOyDhhIThhaThh4A7IOuWnTsg4YSE4YWk4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBERFlBRVQKK0I1OUU7QjU5RTsxMTA0IDExNjQgMTFDMTtCNTlFOzExMDQgMTE2NCAxMUMxOyAjICjrlp47IOuWnjsg4YSE4YWk4YeBOyDrlp47IOGEhOGFpOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgRERZQUVQCitCNTlGO0I1OUY7MTEwNCAxMTY0IDExQzI7QjU5RjsxMTA0IDExNjQgMTFDMjsgIyAo65afOyDrlp87IOGEhOGFpOGHgjsg65afOyDhhIThhaThh4I7ICkgSEFOR1VMIFNZTExBQkxFIEREWUFFSAorQjVBMDtCNUEwOzExMDQgMTE2NTtCNUEwOzExMDQgMTE2NTsgIyAo65agOyDrlqA7IOGEhOGFpTsg65agOyDhhIThhaU7ICkgSEFOR1VMIFNZTExBQkxFIERERU8KK0I1QTE7QjVBMTsxMTA0IDExNjUgMTFBODtCNUExOzExMDQgMTE2NSAxMUE4OyAjICjrlqE7IOuWoTsg4YSE4YWl4YaoOyDrlqE7IOGEhOGFpeGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRERFT0cKK0I1QTI7QjVBMjsxMTA0IDExNjUgMTFBOTtCNUEyOzExMDQgMTE2NSAxMUE5OyAjICjrlqI7IOuWojsg4YSE4YWl4YapOyDrlqI7IOGEhOGFpeGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgRERFT0dHCitCNUEzO0I1QTM7MTEwNCAxMTY1IDExQUE7QjVBMzsxMTA0IDExNjUgMTFBQTsgIyAo65ajOyDrlqM7IOGEhOGFpeGGqjsg65ajOyDhhIThhaXhhqo7ICkgSEFOR1VMIFNZTExBQkxFIERERU9HUworQjVBNDtCNUE0OzExMDQgMTE2NSAxMUFCO0I1QTQ7MTEwNCAxMTY1IDExQUI7ICMgKOuWpDsg65akOyDhhIThhaXhhqs7IOuWpDsg4YSE4YWl4YarOyApIEhBTkdVTCBTWUxMQUJMRSBEREVPTgorQjVBNTtCNUE1OzExMDQgMTE2NSAxMUFDO0I1QTU7MTEwNCAxMTY1IDExQUM7ICMgKOuWpTsg65alOyDhhIThhaXhhqw7IOuWpTsg4YSE4YWl4YasOyApIEhBTkdVTCBTWUxMQUJMRSBEREVPTkoKK0I1QTY7QjVBNjsxMTA0IDExNjUgMTFBRDtCNUE2OzExMDQgMTE2NSAxMUFEOyAjICjrlqY7IOuWpjsg4YSE4YWl4YatOyDrlqY7IOGEhOGFpeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRERFT05ICitCNUE3O0I1QTc7MTEwNCAxMTY1IDExQUU7QjVBNzsxMTA0IDExNjUgMTFBRTsgIyAo65anOyDrlqc7IOGEhOGFpeGGrjsg65anOyDhhIThhaXhhq47ICkgSEFOR1VMIFNZTExBQkxFIERERU9ECitCNUE4O0I1QTg7MTEwNCAxMTY1IDExQUY7QjVBODsxMTA0IDExNjUgMTFBRjsgIyAo65aoOyDrlqg7IOGEhOGFpeGGrzsg65aoOyDhhIThhaXhhq87ICkgSEFOR1VMIFNZTExBQkxFIERERU9MCitCNUE5O0I1QTk7MTEwNCAxMTY1IDExQjA7QjVBOTsxMTA0IDExNjUgMTFCMDsgIyAo65apOyDrlqk7IOGEhOGFpeGGsDsg65apOyDhhIThhaXhhrA7ICkgSEFOR1VMIFNZTExBQkxFIERERU9MRworQjVBQTtCNUFBOzExMDQgMTE2NSAxMUIxO0I1QUE7MTEwNCAxMTY1IDExQjE7ICMgKOuWqjsg65aqOyDhhIThhaXhhrE7IOuWqjsg4YSE4YWl4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBEREVPTE0KK0I1QUI7QjVBQjsxMTA0IDExNjUgMTFCMjtCNUFCOzExMDQgMTE2NSAxMUIyOyAjICjrlqs7IOuWqzsg4YSE4YWl4YayOyDrlqs7IOGEhOGFpeGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgRERFT0xCCitCNUFDO0I1QUM7MTEwNCAxMTY1IDExQjM7QjVBQzsxMTA0IDExNjUgMTFCMzsgIyAo65asOyDrlqw7IOGEhOGFpeGGszsg65asOyDhhIThhaXhhrM7ICkgSEFOR1VMIFNZTExBQkxFIERERU9MUworQjVBRDtCNUFEOzExMDQgMTE2NSAxMUI0O0I1QUQ7MTEwNCAxMTY1IDExQjQ7ICMgKOuWrTsg65atOyDhhIThhaXhhrQ7IOuWrTsg4YSE4YWl4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBEREVPTFQKK0I1QUU7QjVBRTsxMTA0IDExNjUgMTFCNTtCNUFFOzExMDQgMTE2NSAxMUI1OyAjICjrlq47IOuWrjsg4YSE4YWl4Ya1OyDrlq47IOGEhOGFpeGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgRERFT0xQCitCNUFGO0I1QUY7MTEwNCAxMTY1IDExQjY7QjVBRjsxMTA0IDExNjUgMTFCNjsgIyAo65avOyDrlq87IOGEhOGFpeGGtjsg65avOyDhhIThhaXhhrY7ICkgSEFOR1VMIFNZTExBQkxFIERERU9MSAorQjVCMDtCNUIwOzExMDQgMTE2NSAxMUI3O0I1QjA7MTEwNCAxMTY1IDExQjc7ICMgKOuWsDsg65awOyDhhIThhaXhhrc7IOuWsDsg4YSE4YWl4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBEREVPTQorQjVCMTtCNUIxOzExMDQgMTE2NSAxMUI4O0I1QjE7MTEwNCAxMTY1IDExQjg7ICMgKOuWsTsg65axOyDhhIThhaXhhrg7IOuWsTsg4YSE4YWl4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBEREVPQgorQjVCMjtCNUIyOzExMDQgMTE2NSAxMUI5O0I1QjI7MTEwNCAxMTY1IDExQjk7ICMgKOuWsjsg65ayOyDhhIThhaXhhrk7IOuWsjsg4YSE4YWl4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBEREVPQlMKK0I1QjM7QjVCMzsxMTA0IDExNjUgMTFCQTtCNUIzOzExMDQgMTE2NSAxMUJBOyAjICjrlrM7IOuWszsg4YSE4YWl4Ya6OyDrlrM7IOGEhOGFpeGGujsgKSBIQU5HVUwgU1lMTEFCTEUgRERFT1MKK0I1QjQ7QjVCNDsxMTA0IDExNjUgMTFCQjtCNUI0OzExMDQgMTE2NSAxMUJCOyAjICjrlrQ7IOuWtDsg4YSE4YWl4Ya7OyDrlrQ7IOGEhOGFpeGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgRERFT1NTCitCNUI1O0I1QjU7MTEwNCAxMTY1IDExQkM7QjVCNTsxMTA0IDExNjUgMTFCQzsgIyAo65a1OyDrlrU7IOGEhOGFpeGGvDsg65a1OyDhhIThhaXhhrw7ICkgSEFOR1VMIFNZTExBQkxFIERERU9ORworQjVCNjtCNUI2OzExMDQgMTE2NSAxMUJEO0I1QjY7MTEwNCAxMTY1IDExQkQ7ICMgKOuWtjsg65a2OyDhhIThhaXhhr07IOuWtjsg4YSE4YWl4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBEREVPSgorQjVCNztCNUI3OzExMDQgMTE2NSAxMUJFO0I1Qjc7MTEwNCAxMTY1IDExQkU7ICMgKOuWtzsg65a3OyDhhIThhaXhhr47IOuWtzsg4YSE4YWl4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBEREVPQworQjVCODtCNUI4OzExMDQgMTE2NSAxMUJGO0I1Qjg7MTEwNCAxMTY1IDExQkY7ICMgKOuWuDsg65a4OyDhhIThhaXhhr87IOuWuDsg4YSE4YWl4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBEREVPSworQjVCOTtCNUI5OzExMDQgMTE2NSAxMUMwO0I1Qjk7MTEwNCAxMTY1IDExQzA7ICMgKOuWuTsg65a5OyDhhIThhaXhh4A7IOuWuTsg4YSE4YWl4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBEREVPVAorQjVCQTtCNUJBOzExMDQgMTE2NSAxMUMxO0I1QkE7MTEwNCAxMTY1IDExQzE7ICMgKOuWujsg65a6OyDhhIThhaXhh4E7IOuWujsg4YSE4YWl4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBEREVPUAorQjVCQjtCNUJCOzExMDQgMTE2NSAxMUMyO0I1QkI7MTEwNCAxMTY1IDExQzI7ICMgKOuWuzsg65a7OyDhhIThhaXhh4I7IOuWuzsg4YSE4YWl4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBEREVPSAorQjVCQztCNUJDOzExMDQgMTE2NjtCNUJDOzExMDQgMTE2NjsgIyAo65a8OyDrlrw7IOGEhOGFpjsg65a8OyDhhIThhaY7ICkgSEFOR1VMIFNZTExBQkxFIERERQorQjVCRDtCNUJEOzExMDQgMTE2NiAxMUE4O0I1QkQ7MTEwNCAxMTY2IDExQTg7ICMgKOuWvTsg65a9OyDhhIThhabhhqg7IOuWvTsg4YSE4YWm4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBEREVHCitCNUJFO0I1QkU7MTEwNCAxMTY2IDExQTk7QjVCRTsxMTA0IDExNjYgMTFBOTsgIyAo65a+OyDrlr47IOGEhOGFpuGGqTsg65a+OyDhhIThhabhhqk7ICkgSEFOR1VMIFNZTExBQkxFIERERUdHCitCNUJGO0I1QkY7MTEwNCAxMTY2IDExQUE7QjVCRjsxMTA0IDExNjYgMTFBQTsgIyAo65a/OyDrlr87IOGEhOGFpuGGqjsg65a/OyDhhIThhabhhqo7ICkgSEFOR1VMIFNZTExBQkxFIERERUdTCitCNUMwO0I1QzA7MTEwNCAxMTY2IDExQUI7QjVDMDsxMTA0IDExNjYgMTFBQjsgIyAo65eAOyDrl4A7IOGEhOGFpuGGqzsg65eAOyDhhIThhabhhqs7ICkgSEFOR1VMIFNZTExBQkxFIERERU4KK0I1QzE7QjVDMTsxMTA0IDExNjYgMTFBQztCNUMxOzExMDQgMTE2NiAxMUFDOyAjICjrl4E7IOuXgTsg4YSE4YWm4YasOyDrl4E7IOGEhOGFpuGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgRERFTkoKK0I1QzI7QjVDMjsxMTA0IDExNjYgMTFBRDtCNUMyOzExMDQgMTE2NiAxMUFEOyAjICjrl4I7IOuXgjsg4YSE4YWm4YatOyDrl4I7IOGEhOGFpuGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRERFTkgKK0I1QzM7QjVDMzsxMTA0IDExNjYgMTFBRTtCNUMzOzExMDQgMTE2NiAxMUFFOyAjICjrl4M7IOuXgzsg4YSE4YWm4YauOyDrl4M7IOGEhOGFpuGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgRERFRAorQjVDNDtCNUM0OzExMDQgMTE2NiAxMUFGO0I1QzQ7MTEwNCAxMTY2IDExQUY7ICMgKOuXhDsg65eEOyDhhIThhabhhq87IOuXhDsg4YSE4YWm4YavOyApIEhBTkdVTCBTWUxMQUJMRSBEREVMCitCNUM1O0I1QzU7MTEwNCAxMTY2IDExQjA7QjVDNTsxMTA0IDExNjYgMTFCMDsgIyAo65eFOyDrl4U7IOGEhOGFpuGGsDsg65eFOyDhhIThhabhhrA7ICkgSEFOR1VMIFNZTExBQkxFIERERUxHCitCNUM2O0I1QzY7MTEwNCAxMTY2IDExQjE7QjVDNjsxMTA0IDExNjYgMTFCMTsgIyAo65eGOyDrl4Y7IOGEhOGFpuGGsTsg65eGOyDhhIThhabhhrE7ICkgSEFOR1VMIFNZTExBQkxFIERERUxNCitCNUM3O0I1Qzc7MTEwNCAxMTY2IDExQjI7QjVDNzsxMTA0IDExNjYgMTFCMjsgIyAo65eHOyDrl4c7IOGEhOGFpuGGsjsg65eHOyDhhIThhabhhrI7ICkgSEFOR1VMIFNZTExBQkxFIERERUxCCitCNUM4O0I1Qzg7MTEwNCAxMTY2IDExQjM7QjVDODsxMTA0IDExNjYgMTFCMzsgIyAo65eIOyDrl4g7IOGEhOGFpuGGszsg65eIOyDhhIThhabhhrM7ICkgSEFOR1VMIFNZTExBQkxFIERERUxTCitCNUM5O0I1Qzk7MTEwNCAxMTY2IDExQjQ7QjVDOTsxMTA0IDExNjYgMTFCNDsgIyAo65eJOyDrl4k7IOGEhOGFpuGGtDsg65eJOyDhhIThhabhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIERERUxUCitCNUNBO0I1Q0E7MTEwNCAxMTY2IDExQjU7QjVDQTsxMTA0IDExNjYgMTFCNTsgIyAo65eKOyDrl4o7IOGEhOGFpuGGtTsg65eKOyDhhIThhabhhrU7ICkgSEFOR1VMIFNZTExBQkxFIERERUxQCitCNUNCO0I1Q0I7MTEwNCAxMTY2IDExQjY7QjVDQjsxMTA0IDExNjYgMTFCNjsgIyAo65eLOyDrl4s7IOGEhOGFpuGGtjsg65eLOyDhhIThhabhhrY7ICkgSEFOR1VMIFNZTExBQkxFIERERUxICitCNUNDO0I1Q0M7MTEwNCAxMTY2IDExQjc7QjVDQzsxMTA0IDExNjYgMTFCNzsgIyAo65eMOyDrl4w7IOGEhOGFpuGGtzsg65eMOyDhhIThhabhhrc7ICkgSEFOR1VMIFNZTExBQkxFIERERU0KK0I1Q0Q7QjVDRDsxMTA0IDExNjYgMTFCODtCNUNEOzExMDQgMTE2NiAxMUI4OyAjICjrl407IOuXjTsg4YSE4YWm4Ya4OyDrl407IOGEhOGFpuGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgRERFQgorQjVDRTtCNUNFOzExMDQgMTE2NiAxMUI5O0I1Q0U7MTEwNCAxMTY2IDExQjk7ICMgKOuXjjsg65eOOyDhhIThhabhhrk7IOuXjjsg4YSE4YWm4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBEREVCUworQjVDRjtCNUNGOzExMDQgMTE2NiAxMUJBO0I1Q0Y7MTEwNCAxMTY2IDExQkE7ICMgKOuXjzsg65ePOyDhhIThhabhhro7IOuXjzsg4YSE4YWm4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBEREVTCitCNUQwO0I1RDA7MTEwNCAxMTY2IDExQkI7QjVEMDsxMTA0IDExNjYgMTFCQjsgIyAo65eQOyDrl5A7IOGEhOGFpuGGuzsg65eQOyDhhIThhabhhrs7ICkgSEFOR1VMIFNZTExBQkxFIERERVNTCitCNUQxO0I1RDE7MTEwNCAxMTY2IDExQkM7QjVEMTsxMTA0IDExNjYgMTFCQzsgIyAo65eROyDrl5E7IOGEhOGFpuGGvDsg65eROyDhhIThhabhhrw7ICkgSEFOR1VMIFNZTExBQkxFIERERU5HCitCNUQyO0I1RDI7MTEwNCAxMTY2IDExQkQ7QjVEMjsxMTA0IDExNjYgMTFCRDsgIyAo65eSOyDrl5I7IOGEhOGFpuGGvTsg65eSOyDhhIThhabhhr07ICkgSEFOR1VMIFNZTExBQkxFIERERUoKK0I1RDM7QjVEMzsxMTA0IDExNjYgMTFCRTtCNUQzOzExMDQgMTE2NiAxMUJFOyAjICjrl5M7IOuXkzsg4YSE4YWm4Ya+OyDrl5M7IOGEhOGFpuGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgRERFQworQjVENDtCNUQ0OzExMDQgMTE2NiAxMUJGO0I1RDQ7MTEwNCAxMTY2IDExQkY7ICMgKOuXlDsg65eUOyDhhIThhabhhr87IOuXlDsg4YSE4YWm4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBEREVLCitCNUQ1O0I1RDU7MTEwNCAxMTY2IDExQzA7QjVENTsxMTA0IDExNjYgMTFDMDsgIyAo65eVOyDrl5U7IOGEhOGFpuGHgDsg65eVOyDhhIThhabhh4A7ICkgSEFOR1VMIFNZTExBQkxFIERERVQKK0I1RDY7QjVENjsxMTA0IDExNjYgMTFDMTtCNUQ2OzExMDQgMTE2NiAxMUMxOyAjICjrl5Y7IOuXljsg4YSE4YWm4YeBOyDrl5Y7IOGEhOGFpuGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgRERFUAorQjVENztCNUQ3OzExMDQgMTE2NiAxMUMyO0I1RDc7MTEwNCAxMTY2IDExQzI7ICMgKOuXlzsg65eXOyDhhIThhabhh4I7IOuXlzsg4YSE4YWm4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBEREVICitCNUQ4O0I1RDg7MTEwNCAxMTY3O0I1RDg7MTEwNCAxMTY3OyAjICjrl5g7IOuXmDsg4YSE4YWnOyDrl5g7IOGEhOGFpzsgKSBIQU5HVUwgU1lMTEFCTEUgRERZRU8KK0I1RDk7QjVEOTsxMTA0IDExNjcgMTFBODtCNUQ5OzExMDQgMTE2NyAxMUE4OyAjICjrl5k7IOuXmTsg4YSE4YWn4YaoOyDrl5k7IOGEhOGFp+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRERZRU9HCitCNURBO0I1REE7MTEwNCAxMTY3IDExQTk7QjVEQTsxMTA0IDExNjcgMTFBOTsgIyAo65eaOyDrl5o7IOGEhOGFp+GGqTsg65eaOyDhhIThhafhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEREWUVPR0cKK0I1REI7QjVEQjsxMTA0IDExNjcgMTFBQTtCNURCOzExMDQgMTE2NyAxMUFBOyAjICjrl5s7IOuXmzsg4YSE4YWn4YaqOyDrl5s7IOGEhOGFp+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgRERZRU9HUworQjVEQztCNURDOzExMDQgMTE2NyAxMUFCO0I1REM7MTEwNCAxMTY3IDExQUI7ICMgKOuXnDsg65ecOyDhhIThhafhhqs7IOuXnDsg4YSE4YWn4YarOyApIEhBTkdVTCBTWUxMQUJMRSBERFlFT04KK0I1REQ7QjVERDsxMTA0IDExNjcgMTFBQztCNUREOzExMDQgMTE2NyAxMUFDOyAjICjrl507IOuXnTsg4YSE4YWn4YasOyDrl507IOGEhOGFp+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgRERZRU9OSgorQjVERTtCNURFOzExMDQgMTE2NyAxMUFEO0I1REU7MTEwNCAxMTY3IDExQUQ7ICMgKOuXnjsg65eeOyDhhIThhafhhq07IOuXnjsg4YSE4YWn4YatOyApIEhBTkdVTCBTWUxMQUJMRSBERFlFT05ICitCNURGO0I1REY7MTEwNCAxMTY3IDExQUU7QjVERjsxMTA0IDExNjcgMTFBRTsgIyAo65efOyDrl587IOGEhOGFp+GGrjsg65efOyDhhIThhafhhq47ICkgSEFOR1VMIFNZTExBQkxFIEREWUVPRAorQjVFMDtCNUUwOzExMDQgMTE2NyAxMUFGO0I1RTA7MTEwNCAxMTY3IDExQUY7ICMgKOuXoDsg65egOyDhhIThhafhhq87IOuXoDsg4YSE4YWn4YavOyApIEhBTkdVTCBTWUxMQUJMRSBERFlFT0wKK0I1RTE7QjVFMTsxMTA0IDExNjcgMTFCMDtCNUUxOzExMDQgMTE2NyAxMUIwOyAjICjrl6E7IOuXoTsg4YSE4YWn4YawOyDrl6E7IOGEhOGFp+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgRERZRU9MRworQjVFMjtCNUUyOzExMDQgMTE2NyAxMUIxO0I1RTI7MTEwNCAxMTY3IDExQjE7ICMgKOuXojsg65eiOyDhhIThhafhhrE7IOuXojsg4YSE4YWn4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBERFlFT0xNCitCNUUzO0I1RTM7MTEwNCAxMTY3IDExQjI7QjVFMzsxMTA0IDExNjcgMTFCMjsgIyAo65ejOyDrl6M7IOGEhOGFp+GGsjsg65ejOyDhhIThhafhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEREWUVPTEIKK0I1RTQ7QjVFNDsxMTA0IDExNjcgMTFCMztCNUU0OzExMDQgMTE2NyAxMUIzOyAjICjrl6Q7IOuXpDsg4YSE4YWn4YazOyDrl6Q7IOGEhOGFp+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgRERZRU9MUworQjVFNTtCNUU1OzExMDQgMTE2NyAxMUI0O0I1RTU7MTEwNCAxMTY3IDExQjQ7ICMgKOuXpTsg65elOyDhhIThhafhhrQ7IOuXpTsg4YSE4YWn4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBERFlFT0xUCitCNUU2O0I1RTY7MTEwNCAxMTY3IDExQjU7QjVFNjsxMTA0IDExNjcgMTFCNTsgIyAo65emOyDrl6Y7IOGEhOGFp+GGtTsg65emOyDhhIThhafhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEREWUVPTFAKK0I1RTc7QjVFNzsxMTA0IDExNjcgMTFCNjtCNUU3OzExMDQgMTE2NyAxMUI2OyAjICjrl6c7IOuXpzsg4YSE4YWn4Ya2OyDrl6c7IOGEhOGFp+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgRERZRU9MSAorQjVFODtCNUU4OzExMDQgMTE2NyAxMUI3O0I1RTg7MTEwNCAxMTY3IDExQjc7ICMgKOuXqDsg65eoOyDhhIThhafhhrc7IOuXqDsg4YSE4YWn4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBERFlFT00KK0I1RTk7QjVFOTsxMTA0IDExNjcgMTFCODtCNUU5OzExMDQgMTE2NyAxMUI4OyAjICjrl6k7IOuXqTsg4YSE4YWn4Ya4OyDrl6k7IOGEhOGFp+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgRERZRU9CCitCNUVBO0I1RUE7MTEwNCAxMTY3IDExQjk7QjVFQTsxMTA0IDExNjcgMTFCOTsgIyAo65eqOyDrl6o7IOGEhOGFp+GGuTsg65eqOyDhhIThhafhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEREWUVPQlMKK0I1RUI7QjVFQjsxMTA0IDExNjcgMTFCQTtCNUVCOzExMDQgMTE2NyAxMUJBOyAjICjrl6s7IOuXqzsg4YSE4YWn4Ya6OyDrl6s7IOGEhOGFp+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgRERZRU9TCitCNUVDO0I1RUM7MTEwNCAxMTY3IDExQkI7QjVFQzsxMTA0IDExNjcgMTFCQjsgIyAo65esOyDrl6w7IOGEhOGFp+GGuzsg65esOyDhhIThhafhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEREWUVPU1MKK0I1RUQ7QjVFRDsxMTA0IDExNjcgMTFCQztCNUVEOzExMDQgMTE2NyAxMUJDOyAjICjrl607IOuXrTsg4YSE4YWn4Ya8OyDrl607IOGEhOGFp+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgRERZRU9ORworQjVFRTtCNUVFOzExMDQgMTE2NyAxMUJEO0I1RUU7MTEwNCAxMTY3IDExQkQ7ICMgKOuXrjsg65euOyDhhIThhafhhr07IOuXrjsg4YSE4YWn4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBERFlFT0oKK0I1RUY7QjVFRjsxMTA0IDExNjcgMTFCRTtCNUVGOzExMDQgMTE2NyAxMUJFOyAjICjrl687IOuXrzsg4YSE4YWn4Ya+OyDrl687IOGEhOGFp+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgRERZRU9DCitCNUYwO0I1RjA7MTEwNCAxMTY3IDExQkY7QjVGMDsxMTA0IDExNjcgMTFCRjsgIyAo65ewOyDrl7A7IOGEhOGFp+GGvzsg65ewOyDhhIThhafhhr87ICkgSEFOR1VMIFNZTExBQkxFIEREWUVPSworQjVGMTtCNUYxOzExMDQgMTE2NyAxMUMwO0I1RjE7MTEwNCAxMTY3IDExQzA7ICMgKOuXsTsg65exOyDhhIThhafhh4A7IOuXsTsg4YSE4YWn4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBERFlFT1QKK0I1RjI7QjVGMjsxMTA0IDExNjcgMTFDMTtCNUYyOzExMDQgMTE2NyAxMUMxOyAjICjrl7I7IOuXsjsg4YSE4YWn4YeBOyDrl7I7IOGEhOGFp+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgRERZRU9QCitCNUYzO0I1RjM7MTEwNCAxMTY3IDExQzI7QjVGMzsxMTA0IDExNjcgMTFDMjsgIyAo65ezOyDrl7M7IOGEhOGFp+GHgjsg65ezOyDhhIThhafhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEREWUVPSAorQjVGNDtCNUY0OzExMDQgMTE2ODtCNUY0OzExMDQgMTE2ODsgIyAo65e0OyDrl7Q7IOGEhOGFqDsg65e0OyDhhIThhag7ICkgSEFOR1VMIFNZTExBQkxFIEREWUUKK0I1RjU7QjVGNTsxMTA0IDExNjggMTFBODtCNUY1OzExMDQgMTE2OCAxMUE4OyAjICjrl7U7IOuXtTsg4YSE4YWo4YaoOyDrl7U7IOGEhOGFqOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRERZRUcKK0I1RjY7QjVGNjsxMTA0IDExNjggMTFBOTtCNUY2OzExMDQgMTE2OCAxMUE5OyAjICjrl7Y7IOuXtjsg4YSE4YWo4YapOyDrl7Y7IOGEhOGFqOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgRERZRUdHCitCNUY3O0I1Rjc7MTEwNCAxMTY4IDExQUE7QjVGNzsxMTA0IDExNjggMTFBQTsgIyAo65e3OyDrl7c7IOGEhOGFqOGGqjsg65e3OyDhhIThhajhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEREWUVHUworQjVGODtCNUY4OzExMDQgMTE2OCAxMUFCO0I1Rjg7MTEwNCAxMTY4IDExQUI7ICMgKOuXuDsg65e4OyDhhIThhajhhqs7IOuXuDsg4YSE4YWo4YarOyApIEhBTkdVTCBTWUxMQUJMRSBERFlFTgorQjVGOTtCNUY5OzExMDQgMTE2OCAxMUFDO0I1Rjk7MTEwNCAxMTY4IDExQUM7ICMgKOuXuTsg65e5OyDhhIThhajhhqw7IOuXuTsg4YSE4YWo4YasOyApIEhBTkdVTCBTWUxMQUJMRSBERFlFTkoKK0I1RkE7QjVGQTsxMTA0IDExNjggMTFBRDtCNUZBOzExMDQgMTE2OCAxMUFEOyAjICjrl7o7IOuXujsg4YSE4YWo4YatOyDrl7o7IOGEhOGFqOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRERZRU5ICitCNUZCO0I1RkI7MTEwNCAxMTY4IDExQUU7QjVGQjsxMTA0IDExNjggMTFBRTsgIyAo65e7OyDrl7s7IOGEhOGFqOGGrjsg65e7OyDhhIThhajhhq47ICkgSEFOR1VMIFNZTExBQkxFIEREWUVECitCNUZDO0I1RkM7MTEwNCAxMTY4IDExQUY7QjVGQzsxMTA0IDExNjggMTFBRjsgIyAo65e8OyDrl7w7IOGEhOGFqOGGrzsg65e8OyDhhIThhajhhq87ICkgSEFOR1VMIFNZTExBQkxFIEREWUVMCitCNUZEO0I1RkQ7MTEwNCAxMTY4IDExQjA7QjVGRDsxMTA0IDExNjggMTFCMDsgIyAo65e9OyDrl707IOGEhOGFqOGGsDsg65e9OyDhhIThhajhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEREWUVMRworQjVGRTtCNUZFOzExMDQgMTE2OCAxMUIxO0I1RkU7MTEwNCAxMTY4IDExQjE7ICMgKOuXvjsg65e+OyDhhIThhajhhrE7IOuXvjsg4YSE4YWo4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBERFlFTE0KK0I1RkY7QjVGRjsxMTA0IDExNjggMTFCMjtCNUZGOzExMDQgMTE2OCAxMUIyOyAjICjrl787IOuXvzsg4YSE4YWo4YayOyDrl787IOGEhOGFqOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgRERZRUxCCitCNjAwO0I2MDA7MTEwNCAxMTY4IDExQjM7QjYwMDsxMTA0IDExNjggMTFCMzsgIyAo65iAOyDrmIA7IOGEhOGFqOGGszsg65iAOyDhhIThhajhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEREWUVMUworQjYwMTtCNjAxOzExMDQgMTE2OCAxMUI0O0I2MDE7MTEwNCAxMTY4IDExQjQ7ICMgKOuYgTsg65iBOyDhhIThhajhhrQ7IOuYgTsg4YSE4YWo4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBERFlFTFQKK0I2MDI7QjYwMjsxMTA0IDExNjggMTFCNTtCNjAyOzExMDQgMTE2OCAxMUI1OyAjICjrmII7IOuYgjsg4YSE4YWo4Ya1OyDrmII7IOGEhOGFqOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgRERZRUxQCitCNjAzO0I2MDM7MTEwNCAxMTY4IDExQjY7QjYwMzsxMTA0IDExNjggMTFCNjsgIyAo65iDOyDrmIM7IOGEhOGFqOGGtjsg65iDOyDhhIThhajhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEREWUVMSAorQjYwNDtCNjA0OzExMDQgMTE2OCAxMUI3O0I2MDQ7MTEwNCAxMTY4IDExQjc7ICMgKOuYhDsg65iEOyDhhIThhajhhrc7IOuYhDsg4YSE4YWo4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBERFlFTQorQjYwNTtCNjA1OzExMDQgMTE2OCAxMUI4O0I2MDU7MTEwNCAxMTY4IDExQjg7ICMgKOuYhTsg65iFOyDhhIThhajhhrg7IOuYhTsg4YSE4YWo4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBERFlFQgorQjYwNjtCNjA2OzExMDQgMTE2OCAxMUI5O0I2MDY7MTEwNCAxMTY4IDExQjk7ICMgKOuYhjsg65iGOyDhhIThhajhhrk7IOuYhjsg4YSE4YWo4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBERFlFQlMKK0I2MDc7QjYwNzsxMTA0IDExNjggMTFCQTtCNjA3OzExMDQgMTE2OCAxMUJBOyAjICjrmIc7IOuYhzsg4YSE4YWo4Ya6OyDrmIc7IOGEhOGFqOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgRERZRVMKK0I2MDg7QjYwODsxMTA0IDExNjggMTFCQjtCNjA4OzExMDQgMTE2OCAxMUJCOyAjICjrmIg7IOuYiDsg4YSE4YWo4Ya7OyDrmIg7IOGEhOGFqOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgRERZRVNTCitCNjA5O0I2MDk7MTEwNCAxMTY4IDExQkM7QjYwOTsxMTA0IDExNjggMTFCQzsgIyAo65iJOyDrmIk7IOGEhOGFqOGGvDsg65iJOyDhhIThhajhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEREWUVORworQjYwQTtCNjBBOzExMDQgMTE2OCAxMUJEO0I2MEE7MTEwNCAxMTY4IDExQkQ7ICMgKOuYijsg65iKOyDhhIThhajhhr07IOuYijsg4YSE4YWo4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBERFlFSgorQjYwQjtCNjBCOzExMDQgMTE2OCAxMUJFO0I2MEI7MTEwNCAxMTY4IDExQkU7ICMgKOuYizsg65iLOyDhhIThhajhhr47IOuYizsg4YSE4YWo4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBERFlFQworQjYwQztCNjBDOzExMDQgMTE2OCAxMUJGO0I2MEM7MTEwNCAxMTY4IDExQkY7ICMgKOuYjDsg65iMOyDhhIThhajhhr87IOuYjDsg4YSE4YWo4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBERFlFSworQjYwRDtCNjBEOzExMDQgMTE2OCAxMUMwO0I2MEQ7MTEwNCAxMTY4IDExQzA7ICMgKOuYjTsg65iNOyDhhIThhajhh4A7IOuYjTsg4YSE4YWo4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBERFlFVAorQjYwRTtCNjBFOzExMDQgMTE2OCAxMUMxO0I2MEU7MTEwNCAxMTY4IDExQzE7ICMgKOuYjjsg65iOOyDhhIThhajhh4E7IOuYjjsg4YSE4YWo4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBERFlFUAorQjYwRjtCNjBGOzExMDQgMTE2OCAxMUMyO0I2MEY7MTEwNCAxMTY4IDExQzI7ICMgKOuYjzsg65iPOyDhhIThhajhh4I7IOuYjzsg4YSE4YWo4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBERFlFSAorQjYxMDtCNjEwOzExMDQgMTE2OTtCNjEwOzExMDQgMTE2OTsgIyAo65iQOyDrmJA7IOGEhOGFqTsg65iQOyDhhIThhak7ICkgSEFOR1VMIFNZTExBQkxFIERETworQjYxMTtCNjExOzExMDQgMTE2OSAxMUE4O0I2MTE7MTEwNCAxMTY5IDExQTg7ICMgKOuYkTsg65iROyDhhIThhanhhqg7IOuYkTsg4YSE4YWp4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBERE9HCitCNjEyO0I2MTI7MTEwNCAxMTY5IDExQTk7QjYxMjsxMTA0IDExNjkgMTFBOTsgIyAo65iSOyDrmJI7IOGEhOGFqeGGqTsg65iSOyDhhIThhanhhqk7ICkgSEFOR1VMIFNZTExBQkxFIERET0dHCitCNjEzO0I2MTM7MTEwNCAxMTY5IDExQUE7QjYxMzsxMTA0IDExNjkgMTFBQTsgIyAo65iTOyDrmJM7IOGEhOGFqeGGqjsg65iTOyDhhIThhanhhqo7ICkgSEFOR1VMIFNZTExBQkxFIERET0dTCitCNjE0O0I2MTQ7MTEwNCAxMTY5IDExQUI7QjYxNDsxMTA0IDExNjkgMTFBQjsgIyAo65iUOyDrmJQ7IOGEhOGFqeGGqzsg65iUOyDhhIThhanhhqs7ICkgSEFOR1VMIFNZTExBQkxFIERET04KK0I2MTU7QjYxNTsxMTA0IDExNjkgMTFBQztCNjE1OzExMDQgMTE2OSAxMUFDOyAjICjrmJU7IOuYlTsg4YSE4YWp4YasOyDrmJU7IOGEhOGFqeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgRERPTkoKK0I2MTY7QjYxNjsxMTA0IDExNjkgMTFBRDtCNjE2OzExMDQgMTE2OSAxMUFEOyAjICjrmJY7IOuYljsg4YSE4YWp4YatOyDrmJY7IOGEhOGFqeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRERPTkgKK0I2MTc7QjYxNzsxMTA0IDExNjkgMTFBRTtCNjE3OzExMDQgMTE2OSAxMUFFOyAjICjrmJc7IOuYlzsg4YSE4YWp4YauOyDrmJc7IOGEhOGFqeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgRERPRAorQjYxODtCNjE4OzExMDQgMTE2OSAxMUFGO0I2MTg7MTEwNCAxMTY5IDExQUY7ICMgKOuYmDsg65iYOyDhhIThhanhhq87IOuYmDsg4YSE4YWp4YavOyApIEhBTkdVTCBTWUxMQUJMRSBERE9MCitCNjE5O0I2MTk7MTEwNCAxMTY5IDExQjA7QjYxOTsxMTA0IDExNjkgMTFCMDsgIyAo65iZOyDrmJk7IOGEhOGFqeGGsDsg65iZOyDhhIThhanhhrA7ICkgSEFOR1VMIFNZTExBQkxFIERET0xHCitCNjFBO0I2MUE7MTEwNCAxMTY5IDExQjE7QjYxQTsxMTA0IDExNjkgMTFCMTsgIyAo65iaOyDrmJo7IOGEhOGFqeGGsTsg65iaOyDhhIThhanhhrE7ICkgSEFOR1VMIFNZTExBQkxFIERET0xNCitCNjFCO0I2MUI7MTEwNCAxMTY5IDExQjI7QjYxQjsxMTA0IDExNjkgMTFCMjsgIyAo65ibOyDrmJs7IOGEhOGFqeGGsjsg65ibOyDhhIThhanhhrI7ICkgSEFOR1VMIFNZTExBQkxFIERET0xCCitCNjFDO0I2MUM7MTEwNCAxMTY5IDExQjM7QjYxQzsxMTA0IDExNjkgMTFCMzsgIyAo65icOyDrmJw7IOGEhOGFqeGGszsg65icOyDhhIThhanhhrM7ICkgSEFOR1VMIFNZTExBQkxFIERET0xTCitCNjFEO0I2MUQ7MTEwNCAxMTY5IDExQjQ7QjYxRDsxMTA0IDExNjkgMTFCNDsgIyAo65idOyDrmJ07IOGEhOGFqeGGtDsg65idOyDhhIThhanhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIERET0xUCitCNjFFO0I2MUU7MTEwNCAxMTY5IDExQjU7QjYxRTsxMTA0IDExNjkgMTFCNTsgIyAo65ieOyDrmJ47IOGEhOGFqeGGtTsg65ieOyDhhIThhanhhrU7ICkgSEFOR1VMIFNZTExBQkxFIERET0xQCitCNjFGO0I2MUY7MTEwNCAxMTY5IDExQjY7QjYxRjsxMTA0IDExNjkgMTFCNjsgIyAo65ifOyDrmJ87IOGEhOGFqeGGtjsg65ifOyDhhIThhanhhrY7ICkgSEFOR1VMIFNZTExBQkxFIERET0xICitCNjIwO0I2MjA7MTEwNCAxMTY5IDExQjc7QjYyMDsxMTA0IDExNjkgMTFCNzsgIyAo65igOyDrmKA7IOGEhOGFqeGGtzsg65igOyDhhIThhanhhrc7ICkgSEFOR1VMIFNZTExBQkxFIERET00KK0I2MjE7QjYyMTsxMTA0IDExNjkgMTFCODtCNjIxOzExMDQgMTE2OSAxMUI4OyAjICjrmKE7IOuYoTsg4YSE4YWp4Ya4OyDrmKE7IOGEhOGFqeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgRERPQgorQjYyMjtCNjIyOzExMDQgMTE2OSAxMUI5O0I2MjI7MTEwNCAxMTY5IDExQjk7ICMgKOuYojsg65iiOyDhhIThhanhhrk7IOuYojsg4YSE4YWp4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBERE9CUworQjYyMztCNjIzOzExMDQgMTE2OSAxMUJBO0I2MjM7MTEwNCAxMTY5IDExQkE7ICMgKOuYozsg65ijOyDhhIThhanhhro7IOuYozsg4YSE4YWp4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBERE9TCitCNjI0O0I2MjQ7MTEwNCAxMTY5IDExQkI7QjYyNDsxMTA0IDExNjkgMTFCQjsgIyAo65ikOyDrmKQ7IOGEhOGFqeGGuzsg65ikOyDhhIThhanhhrs7ICkgSEFOR1VMIFNZTExBQkxFIERET1NTCitCNjI1O0I2MjU7MTEwNCAxMTY5IDExQkM7QjYyNTsxMTA0IDExNjkgMTFCQzsgIyAo65ilOyDrmKU7IOGEhOGFqeGGvDsg65ilOyDhhIThhanhhrw7ICkgSEFOR1VMIFNZTExBQkxFIERET05HCitCNjI2O0I2MjY7MTEwNCAxMTY5IDExQkQ7QjYyNjsxMTA0IDExNjkgMTFCRDsgIyAo65imOyDrmKY7IOGEhOGFqeGGvTsg65imOyDhhIThhanhhr07ICkgSEFOR1VMIFNZTExBQkxFIERET0oKK0I2Mjc7QjYyNzsxMTA0IDExNjkgMTFCRTtCNjI3OzExMDQgMTE2OSAxMUJFOyAjICjrmKc7IOuYpzsg4YSE4YWp4Ya+OyDrmKc7IOGEhOGFqeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgRERPQworQjYyODtCNjI4OzExMDQgMTE2OSAxMUJGO0I2Mjg7MTEwNCAxMTY5IDExQkY7ICMgKOuYqDsg65ioOyDhhIThhanhhr87IOuYqDsg4YSE4YWp4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBERE9LCitCNjI5O0I2Mjk7MTEwNCAxMTY5IDExQzA7QjYyOTsxMTA0IDExNjkgMTFDMDsgIyAo65ipOyDrmKk7IOGEhOGFqeGHgDsg65ipOyDhhIThhanhh4A7ICkgSEFOR1VMIFNZTExBQkxFIERET1QKK0I2MkE7QjYyQTsxMTA0IDExNjkgMTFDMTtCNjJBOzExMDQgMTE2OSAxMUMxOyAjICjrmKo7IOuYqjsg4YSE4YWp4YeBOyDrmKo7IOGEhOGFqeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgRERPUAorQjYyQjtCNjJCOzExMDQgMTE2OSAxMUMyO0I2MkI7MTEwNCAxMTY5IDExQzI7ICMgKOuYqzsg65irOyDhhIThhanhh4I7IOuYqzsg4YSE4YWp4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBERE9ICitCNjJDO0I2MkM7MTEwNCAxMTZBO0I2MkM7MTEwNCAxMTZBOyAjICjrmKw7IOuYrDsg4YSE4YWqOyDrmKw7IOGEhOGFqjsgKSBIQU5HVUwgU1lMTEFCTEUgRERXQQorQjYyRDtCNjJEOzExMDQgMTE2QSAxMUE4O0I2MkQ7MTEwNCAxMTZBIDExQTg7ICMgKOuYrTsg65itOyDhhIThharhhqg7IOuYrTsg4YSE4YWq4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBERFdBRworQjYyRTtCNjJFOzExMDQgMTE2QSAxMUE5O0I2MkU7MTEwNCAxMTZBIDExQTk7ICMgKOuYrjsg65iuOyDhhIThharhhqk7IOuYrjsg4YSE4YWq4YapOyApIEhBTkdVTCBTWUxMQUJMRSBERFdBR0cKK0I2MkY7QjYyRjsxMTA0IDExNkEgMTFBQTtCNjJGOzExMDQgMTE2QSAxMUFBOyAjICjrmK87IOuYrzsg4YSE4YWq4YaqOyDrmK87IOGEhOGFquGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgRERXQUdTCitCNjMwO0I2MzA7MTEwNCAxMTZBIDExQUI7QjYzMDsxMTA0IDExNkEgMTFBQjsgIyAo65iwOyDrmLA7IOGEhOGFquGGqzsg65iwOyDhhIThharhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEREV0FOCitCNjMxO0I2MzE7MTEwNCAxMTZBIDExQUM7QjYzMTsxMTA0IDExNkEgMTFBQzsgIyAo65ixOyDrmLE7IOGEhOGFquGGrDsg65ixOyDhhIThharhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEREV0FOSgorQjYzMjtCNjMyOzExMDQgMTE2QSAxMUFEO0I2MzI7MTEwNCAxMTZBIDExQUQ7ICMgKOuYsjsg65iyOyDhhIThharhhq07IOuYsjsg4YSE4YWq4YatOyApIEhBTkdVTCBTWUxMQUJMRSBERFdBTkgKK0I2MzM7QjYzMzsxMTA0IDExNkEgMTFBRTtCNjMzOzExMDQgMTE2QSAxMUFFOyAjICjrmLM7IOuYszsg4YSE4YWq4YauOyDrmLM7IOGEhOGFquGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgRERXQUQKK0I2MzQ7QjYzNDsxMTA0IDExNkEgMTFBRjtCNjM0OzExMDQgMTE2QSAxMUFGOyAjICjrmLQ7IOuYtDsg4YSE4YWq4YavOyDrmLQ7IOGEhOGFquGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgRERXQUwKK0I2MzU7QjYzNTsxMTA0IDExNkEgMTFCMDtCNjM1OzExMDQgMTE2QSAxMUIwOyAjICjrmLU7IOuYtTsg4YSE4YWq4YawOyDrmLU7IOGEhOGFquGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgRERXQUxHCitCNjM2O0I2MzY7MTEwNCAxMTZBIDExQjE7QjYzNjsxMTA0IDExNkEgMTFCMTsgIyAo65i2OyDrmLY7IOGEhOGFquGGsTsg65i2OyDhhIThharhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEREV0FMTQorQjYzNztCNjM3OzExMDQgMTE2QSAxMUIyO0I2Mzc7MTEwNCAxMTZBIDExQjI7ICMgKOuYtzsg65i3OyDhhIThharhhrI7IOuYtzsg4YSE4YWq4YayOyApIEhBTkdVTCBTWUxMQUJMRSBERFdBTEIKK0I2Mzg7QjYzODsxMTA0IDExNkEgMTFCMztCNjM4OzExMDQgMTE2QSAxMUIzOyAjICjrmLg7IOuYuDsg4YSE4YWq4YazOyDrmLg7IOGEhOGFquGGszsgKSBIQU5HVUwgU1lMTEFCTEUgRERXQUxTCitCNjM5O0I2Mzk7MTEwNCAxMTZBIDExQjQ7QjYzOTsxMTA0IDExNkEgMTFCNDsgIyAo65i5OyDrmLk7IOGEhOGFquGGtDsg65i5OyDhhIThharhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEREV0FMVAorQjYzQTtCNjNBOzExMDQgMTE2QSAxMUI1O0I2M0E7MTEwNCAxMTZBIDExQjU7ICMgKOuYujsg65i6OyDhhIThharhhrU7IOuYujsg4YSE4YWq4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBERFdBTFAKK0I2M0I7QjYzQjsxMTA0IDExNkEgMTFCNjtCNjNCOzExMDQgMTE2QSAxMUI2OyAjICjrmLs7IOuYuzsg4YSE4YWq4Ya2OyDrmLs7IOGEhOGFquGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgRERXQUxICitCNjNDO0I2M0M7MTEwNCAxMTZBIDExQjc7QjYzQzsxMTA0IDExNkEgMTFCNzsgIyAo65i8OyDrmLw7IOGEhOGFquGGtzsg65i8OyDhhIThharhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEREV0FNCitCNjNEO0I2M0Q7MTEwNCAxMTZBIDExQjg7QjYzRDsxMTA0IDExNkEgMTFCODsgIyAo65i9OyDrmL07IOGEhOGFquGGuDsg65i9OyDhhIThharhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEREV0FCCitCNjNFO0I2M0U7MTEwNCAxMTZBIDExQjk7QjYzRTsxMTA0IDExNkEgMTFCOTsgIyAo65i+OyDrmL47IOGEhOGFquGGuTsg65i+OyDhhIThharhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEREV0FCUworQjYzRjtCNjNGOzExMDQgMTE2QSAxMUJBO0I2M0Y7MTEwNCAxMTZBIDExQkE7ICMgKOuYvzsg65i/OyDhhIThharhhro7IOuYvzsg4YSE4YWq4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBERFdBUworQjY0MDtCNjQwOzExMDQgMTE2QSAxMUJCO0I2NDA7MTEwNCAxMTZBIDExQkI7ICMgKOuZgDsg65mAOyDhhIThharhhrs7IOuZgDsg4YSE4YWq4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBERFdBU1MKK0I2NDE7QjY0MTsxMTA0IDExNkEgMTFCQztCNjQxOzExMDQgMTE2QSAxMUJDOyAjICjrmYE7IOuZgTsg4YSE4YWq4Ya8OyDrmYE7IOGEhOGFquGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgRERXQU5HCitCNjQyO0I2NDI7MTEwNCAxMTZBIDExQkQ7QjY0MjsxMTA0IDExNkEgMTFCRDsgIyAo65mCOyDrmYI7IOGEhOGFquGGvTsg65mCOyDhhIThharhhr07ICkgSEFOR1VMIFNZTExBQkxFIEREV0FKCitCNjQzO0I2NDM7MTEwNCAxMTZBIDExQkU7QjY0MzsxMTA0IDExNkEgMTFCRTsgIyAo65mDOyDrmYM7IOGEhOGFquGGvjsg65mDOyDhhIThharhhr47ICkgSEFOR1VMIFNZTExBQkxFIEREV0FDCitCNjQ0O0I2NDQ7MTEwNCAxMTZBIDExQkY7QjY0NDsxMTA0IDExNkEgMTFCRjsgIyAo65mEOyDrmYQ7IOGEhOGFquGGvzsg65mEOyDhhIThharhhr87ICkgSEFOR1VMIFNZTExBQkxFIEREV0FLCitCNjQ1O0I2NDU7MTEwNCAxMTZBIDExQzA7QjY0NTsxMTA0IDExNkEgMTFDMDsgIyAo65mFOyDrmYU7IOGEhOGFquGHgDsg65mFOyDhhIThharhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEREV0FUCitCNjQ2O0I2NDY7MTEwNCAxMTZBIDExQzE7QjY0NjsxMTA0IDExNkEgMTFDMTsgIyAo65mGOyDrmYY7IOGEhOGFquGHgTsg65mGOyDhhIThharhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEREV0FQCitCNjQ3O0I2NDc7MTEwNCAxMTZBIDExQzI7QjY0NzsxMTA0IDExNkEgMTFDMjsgIyAo65mHOyDrmYc7IOGEhOGFquGHgjsg65mHOyDhhIThharhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEREV0FICitCNjQ4O0I2NDg7MTEwNCAxMTZCO0I2NDg7MTEwNCAxMTZCOyAjICjrmYg7IOuZiDsg4YSE4YWrOyDrmYg7IOGEhOGFqzsgKSBIQU5HVUwgU1lMTEFCTEUgRERXQUUKK0I2NDk7QjY0OTsxMTA0IDExNkIgMTFBODtCNjQ5OzExMDQgMTE2QiAxMUE4OyAjICjrmYk7IOuZiTsg4YSE4YWr4YaoOyDrmYk7IOGEhOGFq+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRERXQUVHCitCNjRBO0I2NEE7MTEwNCAxMTZCIDExQTk7QjY0QTsxMTA0IDExNkIgMTFBOTsgIyAo65mKOyDrmYo7IOGEhOGFq+GGqTsg65mKOyDhhIThhavhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEREV0FFR0cKK0I2NEI7QjY0QjsxMTA0IDExNkIgMTFBQTtCNjRCOzExMDQgMTE2QiAxMUFBOyAjICjrmYs7IOuZizsg4YSE4YWr4YaqOyDrmYs7IOGEhOGFq+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgRERXQUVHUworQjY0QztCNjRDOzExMDQgMTE2QiAxMUFCO0I2NEM7MTEwNCAxMTZCIDExQUI7ICMgKOuZjDsg65mMOyDhhIThhavhhqs7IOuZjDsg4YSE4YWr4YarOyApIEhBTkdVTCBTWUxMQUJMRSBERFdBRU4KK0I2NEQ7QjY0RDsxMTA0IDExNkIgMTFBQztCNjREOzExMDQgMTE2QiAxMUFDOyAjICjrmY07IOuZjTsg4YSE4YWr4YasOyDrmY07IOGEhOGFq+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgRERXQUVOSgorQjY0RTtCNjRFOzExMDQgMTE2QiAxMUFEO0I2NEU7MTEwNCAxMTZCIDExQUQ7ICMgKOuZjjsg65mOOyDhhIThhavhhq07IOuZjjsg4YSE4YWr4YatOyApIEhBTkdVTCBTWUxMQUJMRSBERFdBRU5ICitCNjRGO0I2NEY7MTEwNCAxMTZCIDExQUU7QjY0RjsxMTA0IDExNkIgMTFBRTsgIyAo65mPOyDrmY87IOGEhOGFq+GGrjsg65mPOyDhhIThhavhhq47ICkgSEFOR1VMIFNZTExBQkxFIEREV0FFRAorQjY1MDtCNjUwOzExMDQgMTE2QiAxMUFGO0I2NTA7MTEwNCAxMTZCIDExQUY7ICMgKOuZkDsg65mQOyDhhIThhavhhq87IOuZkDsg4YSE4YWr4YavOyApIEhBTkdVTCBTWUxMQUJMRSBERFdBRUwKK0I2NTE7QjY1MTsxMTA0IDExNkIgMTFCMDtCNjUxOzExMDQgMTE2QiAxMUIwOyAjICjrmZE7IOuZkTsg4YSE4YWr4YawOyDrmZE7IOGEhOGFq+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgRERXQUVMRworQjY1MjtCNjUyOzExMDQgMTE2QiAxMUIxO0I2NTI7MTEwNCAxMTZCIDExQjE7ICMgKOuZkjsg65mSOyDhhIThhavhhrE7IOuZkjsg4YSE4YWr4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBERFdBRUxNCitCNjUzO0I2NTM7MTEwNCAxMTZCIDExQjI7QjY1MzsxMTA0IDExNkIgMTFCMjsgIyAo65mTOyDrmZM7IOGEhOGFq+GGsjsg65mTOyDhhIThhavhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEREV0FFTEIKK0I2NTQ7QjY1NDsxMTA0IDExNkIgMTFCMztCNjU0OzExMDQgMTE2QiAxMUIzOyAjICjrmZQ7IOuZlDsg4YSE4YWr4YazOyDrmZQ7IOGEhOGFq+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgRERXQUVMUworQjY1NTtCNjU1OzExMDQgMTE2QiAxMUI0O0I2NTU7MTEwNCAxMTZCIDExQjQ7ICMgKOuZlTsg65mVOyDhhIThhavhhrQ7IOuZlTsg4YSE4YWr4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBERFdBRUxUCitCNjU2O0I2NTY7MTEwNCAxMTZCIDExQjU7QjY1NjsxMTA0IDExNkIgMTFCNTsgIyAo65mWOyDrmZY7IOGEhOGFq+GGtTsg65mWOyDhhIThhavhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEREV0FFTFAKK0I2NTc7QjY1NzsxMTA0IDExNkIgMTFCNjtCNjU3OzExMDQgMTE2QiAxMUI2OyAjICjrmZc7IOuZlzsg4YSE4YWr4Ya2OyDrmZc7IOGEhOGFq+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgRERXQUVMSAorQjY1ODtCNjU4OzExMDQgMTE2QiAxMUI3O0I2NTg7MTEwNCAxMTZCIDExQjc7ICMgKOuZmDsg65mYOyDhhIThhavhhrc7IOuZmDsg4YSE4YWr4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBERFdBRU0KK0I2NTk7QjY1OTsxMTA0IDExNkIgMTFCODtCNjU5OzExMDQgMTE2QiAxMUI4OyAjICjrmZk7IOuZmTsg4YSE4YWr4Ya4OyDrmZk7IOGEhOGFq+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgRERXQUVCCitCNjVBO0I2NUE7MTEwNCAxMTZCIDExQjk7QjY1QTsxMTA0IDExNkIgMTFCOTsgIyAo65maOyDrmZo7IOGEhOGFq+GGuTsg65maOyDhhIThhavhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEREV0FFQlMKK0I2NUI7QjY1QjsxMTA0IDExNkIgMTFCQTtCNjVCOzExMDQgMTE2QiAxMUJBOyAjICjrmZs7IOuZmzsg4YSE4YWr4Ya6OyDrmZs7IOGEhOGFq+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgRERXQUVTCitCNjVDO0I2NUM7MTEwNCAxMTZCIDExQkI7QjY1QzsxMTA0IDExNkIgMTFCQjsgIyAo65mcOyDrmZw7IOGEhOGFq+GGuzsg65mcOyDhhIThhavhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEREV0FFU1MKK0I2NUQ7QjY1RDsxMTA0IDExNkIgMTFCQztCNjVEOzExMDQgMTE2QiAxMUJDOyAjICjrmZ07IOuZnTsg4YSE4YWr4Ya8OyDrmZ07IOGEhOGFq+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgRERXQUVORworQjY1RTtCNjVFOzExMDQgMTE2QiAxMUJEO0I2NUU7MTEwNCAxMTZCIDExQkQ7ICMgKOuZnjsg65meOyDhhIThhavhhr07IOuZnjsg4YSE4YWr4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBERFdBRUoKK0I2NUY7QjY1RjsxMTA0IDExNkIgMTFCRTtCNjVGOzExMDQgMTE2QiAxMUJFOyAjICjrmZ87IOuZnzsg4YSE4YWr4Ya+OyDrmZ87IOGEhOGFq+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgRERXQUVDCitCNjYwO0I2NjA7MTEwNCAxMTZCIDExQkY7QjY2MDsxMTA0IDExNkIgMTFCRjsgIyAo65mgOyDrmaA7IOGEhOGFq+GGvzsg65mgOyDhhIThhavhhr87ICkgSEFOR1VMIFNZTExBQkxFIEREV0FFSworQjY2MTtCNjYxOzExMDQgMTE2QiAxMUMwO0I2NjE7MTEwNCAxMTZCIDExQzA7ICMgKOuZoTsg65mhOyDhhIThhavhh4A7IOuZoTsg4YSE4YWr4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBERFdBRVQKK0I2NjI7QjY2MjsxMTA0IDExNkIgMTFDMTtCNjYyOzExMDQgMTE2QiAxMUMxOyAjICjrmaI7IOuZojsg4YSE4YWr4YeBOyDrmaI7IOGEhOGFq+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgRERXQUVQCitCNjYzO0I2NjM7MTEwNCAxMTZCIDExQzI7QjY2MzsxMTA0IDExNkIgMTFDMjsgIyAo65mjOyDrmaM7IOGEhOGFq+GHgjsg65mjOyDhhIThhavhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEREV0FFSAorQjY2NDtCNjY0OzExMDQgMTE2QztCNjY0OzExMDQgMTE2QzsgIyAo65mkOyDrmaQ7IOGEhOGFrDsg65mkOyDhhIThhaw7ICkgSEFOR1VMIFNZTExBQkxFIERET0UKK0I2NjU7QjY2NTsxMTA0IDExNkMgMTFBODtCNjY1OzExMDQgMTE2QyAxMUE4OyAjICjrmaU7IOuZpTsg4YSE4YWs4YaoOyDrmaU7IOGEhOGFrOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRERPRUcKK0I2NjY7QjY2NjsxMTA0IDExNkMgMTFBOTtCNjY2OzExMDQgMTE2QyAxMUE5OyAjICjrmaY7IOuZpjsg4YSE4YWs4YapOyDrmaY7IOGEhOGFrOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgRERPRUdHCitCNjY3O0I2Njc7MTEwNCAxMTZDIDExQUE7QjY2NzsxMTA0IDExNkMgMTFBQTsgIyAo65mnOyDrmac7IOGEhOGFrOGGqjsg65mnOyDhhIThhazhhqo7ICkgSEFOR1VMIFNZTExBQkxFIERET0VHUworQjY2ODtCNjY4OzExMDQgMTE2QyAxMUFCO0I2Njg7MTEwNCAxMTZDIDExQUI7ICMgKOuZqDsg65moOyDhhIThhazhhqs7IOuZqDsg4YSE4YWs4YarOyApIEhBTkdVTCBTWUxMQUJMRSBERE9FTgorQjY2OTtCNjY5OzExMDQgMTE2QyAxMUFDO0I2Njk7MTEwNCAxMTZDIDExQUM7ICMgKOuZqTsg65mpOyDhhIThhazhhqw7IOuZqTsg4YSE4YWs4YasOyApIEhBTkdVTCBTWUxMQUJMRSBERE9FTkoKK0I2NkE7QjY2QTsxMTA0IDExNkMgMTFBRDtCNjZBOzExMDQgMTE2QyAxMUFEOyAjICjrmao7IOuZqjsg4YSE4YWs4YatOyDrmao7IOGEhOGFrOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRERPRU5ICitCNjZCO0I2NkI7MTEwNCAxMTZDIDExQUU7QjY2QjsxMTA0IDExNkMgMTFBRTsgIyAo65mrOyDrmas7IOGEhOGFrOGGrjsg65mrOyDhhIThhazhhq47ICkgSEFOR1VMIFNZTExBQkxFIERET0VECitCNjZDO0I2NkM7MTEwNCAxMTZDIDExQUY7QjY2QzsxMTA0IDExNkMgMTFBRjsgIyAo65msOyDrmaw7IOGEhOGFrOGGrzsg65msOyDhhIThhazhhq87ICkgSEFOR1VMIFNZTExBQkxFIERET0VMCitCNjZEO0I2NkQ7MTEwNCAxMTZDIDExQjA7QjY2RDsxMTA0IDExNkMgMTFCMDsgIyAo65mtOyDrma07IOGEhOGFrOGGsDsg65mtOyDhhIThhazhhrA7ICkgSEFOR1VMIFNZTExBQkxFIERET0VMRworQjY2RTtCNjZFOzExMDQgMTE2QyAxMUIxO0I2NkU7MTEwNCAxMTZDIDExQjE7ICMgKOuZrjsg65muOyDhhIThhazhhrE7IOuZrjsg4YSE4YWs4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBERE9FTE0KK0I2NkY7QjY2RjsxMTA0IDExNkMgMTFCMjtCNjZGOzExMDQgMTE2QyAxMUIyOyAjICjrma87IOuZrzsg4YSE4YWs4YayOyDrma87IOGEhOGFrOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgRERPRUxCCitCNjcwO0I2NzA7MTEwNCAxMTZDIDExQjM7QjY3MDsxMTA0IDExNkMgMTFCMzsgIyAo65mwOyDrmbA7IOGEhOGFrOGGszsg65mwOyDhhIThhazhhrM7ICkgSEFOR1VMIFNZTExBQkxFIERET0VMUworQjY3MTtCNjcxOzExMDQgMTE2QyAxMUI0O0I2NzE7MTEwNCAxMTZDIDExQjQ7ICMgKOuZsTsg65mxOyDhhIThhazhhrQ7IOuZsTsg4YSE4YWs4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBERE9FTFQKK0I2NzI7QjY3MjsxMTA0IDExNkMgMTFCNTtCNjcyOzExMDQgMTE2QyAxMUI1OyAjICjrmbI7IOuZsjsg4YSE4YWs4Ya1OyDrmbI7IOGEhOGFrOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgRERPRUxQCitCNjczO0I2NzM7MTEwNCAxMTZDIDExQjY7QjY3MzsxMTA0IDExNkMgMTFCNjsgIyAo65mzOyDrmbM7IOGEhOGFrOGGtjsg65mzOyDhhIThhazhhrY7ICkgSEFOR1VMIFNZTExBQkxFIERET0VMSAorQjY3NDtCNjc0OzExMDQgMTE2QyAxMUI3O0I2NzQ7MTEwNCAxMTZDIDExQjc7ICMgKOuZtDsg65m0OyDhhIThhazhhrc7IOuZtDsg4YSE4YWs4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBERE9FTQorQjY3NTtCNjc1OzExMDQgMTE2QyAxMUI4O0I2NzU7MTEwNCAxMTZDIDExQjg7ICMgKOuZtTsg65m1OyDhhIThhazhhrg7IOuZtTsg4YSE4YWs4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBERE9FQgorQjY3NjtCNjc2OzExMDQgMTE2QyAxMUI5O0I2NzY7MTEwNCAxMTZDIDExQjk7ICMgKOuZtjsg65m2OyDhhIThhazhhrk7IOuZtjsg4YSE4YWs4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBERE9FQlMKK0I2Nzc7QjY3NzsxMTA0IDExNkMgMTFCQTtCNjc3OzExMDQgMTE2QyAxMUJBOyAjICjrmbc7IOuZtzsg4YSE4YWs4Ya6OyDrmbc7IOGEhOGFrOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgRERPRVMKK0I2Nzg7QjY3ODsxMTA0IDExNkMgMTFCQjtCNjc4OzExMDQgMTE2QyAxMUJCOyAjICjrmbg7IOuZuDsg4YSE4YWs4Ya7OyDrmbg7IOGEhOGFrOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgRERPRVNTCitCNjc5O0I2Nzk7MTEwNCAxMTZDIDExQkM7QjY3OTsxMTA0IDExNkMgMTFCQzsgIyAo65m5OyDrmbk7IOGEhOGFrOGGvDsg65m5OyDhhIThhazhhrw7ICkgSEFOR1VMIFNZTExBQkxFIERET0VORworQjY3QTtCNjdBOzExMDQgMTE2QyAxMUJEO0I2N0E7MTEwNCAxMTZDIDExQkQ7ICMgKOuZujsg65m6OyDhhIThhazhhr07IOuZujsg4YSE4YWs4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBERE9FSgorQjY3QjtCNjdCOzExMDQgMTE2QyAxMUJFO0I2N0I7MTEwNCAxMTZDIDExQkU7ICMgKOuZuzsg65m7OyDhhIThhazhhr47IOuZuzsg4YSE4YWs4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBERE9FQworQjY3QztCNjdDOzExMDQgMTE2QyAxMUJGO0I2N0M7MTEwNCAxMTZDIDExQkY7ICMgKOuZvDsg65m8OyDhhIThhazhhr87IOuZvDsg4YSE4YWs4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBERE9FSworQjY3RDtCNjdEOzExMDQgMTE2QyAxMUMwO0I2N0Q7MTEwNCAxMTZDIDExQzA7ICMgKOuZvTsg65m9OyDhhIThhazhh4A7IOuZvTsg4YSE4YWs4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBERE9FVAorQjY3RTtCNjdFOzExMDQgMTE2QyAxMUMxO0I2N0U7MTEwNCAxMTZDIDExQzE7ICMgKOuZvjsg65m+OyDhhIThhazhh4E7IOuZvjsg4YSE4YWs4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBERE9FUAorQjY3RjtCNjdGOzExMDQgMTE2QyAxMUMyO0I2N0Y7MTEwNCAxMTZDIDExQzI7ICMgKOuZvzsg65m/OyDhhIThhazhh4I7IOuZvzsg4YSE4YWs4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBERE9FSAorQjY4MDtCNjgwOzExMDQgMTE2RDtCNjgwOzExMDQgMTE2RDsgIyAo65qAOyDrmoA7IOGEhOGFrTsg65qAOyDhhIThha07ICkgSEFOR1VMIFNZTExBQkxFIEREWU8KK0I2ODE7QjY4MTsxMTA0IDExNkQgMTFBODtCNjgxOzExMDQgMTE2RCAxMUE4OyAjICjrmoE7IOuagTsg4YSE4YWt4YaoOyDrmoE7IOGEhOGFreGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRERZT0cKK0I2ODI7QjY4MjsxMTA0IDExNkQgMTFBOTtCNjgyOzExMDQgMTE2RCAxMUE5OyAjICjrmoI7IOuagjsg4YSE4YWt4YapOyDrmoI7IOGEhOGFreGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgRERZT0dHCitCNjgzO0I2ODM7MTEwNCAxMTZEIDExQUE7QjY4MzsxMTA0IDExNkQgMTFBQTsgIyAo65qDOyDrmoM7IOGEhOGFreGGqjsg65qDOyDhhIThha3hhqo7ICkgSEFOR1VMIFNZTExBQkxFIEREWU9HUworQjY4NDtCNjg0OzExMDQgMTE2RCAxMUFCO0I2ODQ7MTEwNCAxMTZEIDExQUI7ICMgKOuahDsg65qEOyDhhIThha3hhqs7IOuahDsg4YSE4YWt4YarOyApIEhBTkdVTCBTWUxMQUJMRSBERFlPTgorQjY4NTtCNjg1OzExMDQgMTE2RCAxMUFDO0I2ODU7MTEwNCAxMTZEIDExQUM7ICMgKOuahTsg65qFOyDhhIThha3hhqw7IOuahTsg4YSE4YWt4YasOyApIEhBTkdVTCBTWUxMQUJMRSBERFlPTkoKK0I2ODY7QjY4NjsxMTA0IDExNkQgMTFBRDtCNjg2OzExMDQgMTE2RCAxMUFEOyAjICjrmoY7IOuahjsg4YSE4YWt4YatOyDrmoY7IOGEhOGFreGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRERZT05ICitCNjg3O0I2ODc7MTEwNCAxMTZEIDExQUU7QjY4NzsxMTA0IDExNkQgMTFBRTsgIyAo65qHOyDrmoc7IOGEhOGFreGGrjsg65qHOyDhhIThha3hhq47ICkgSEFOR1VMIFNZTExBQkxFIEREWU9ECitCNjg4O0I2ODg7MTEwNCAxMTZEIDExQUY7QjY4ODsxMTA0IDExNkQgMTFBRjsgIyAo65qIOyDrmog7IOGEhOGFreGGrzsg65qIOyDhhIThha3hhq87ICkgSEFOR1VMIFNZTExBQkxFIEREWU9MCitCNjg5O0I2ODk7MTEwNCAxMTZEIDExQjA7QjY4OTsxMTA0IDExNkQgMTFCMDsgIyAo65qJOyDrmok7IOGEhOGFreGGsDsg65qJOyDhhIThha3hhrA7ICkgSEFOR1VMIFNZTExBQkxFIEREWU9MRworQjY4QTtCNjhBOzExMDQgMTE2RCAxMUIxO0I2OEE7MTEwNCAxMTZEIDExQjE7ICMgKOuaijsg65qKOyDhhIThha3hhrE7IOuaijsg4YSE4YWt4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBERFlPTE0KK0I2OEI7QjY4QjsxMTA0IDExNkQgMTFCMjtCNjhCOzExMDQgMTE2RCAxMUIyOyAjICjrmos7IOuaizsg4YSE4YWt4YayOyDrmos7IOGEhOGFreGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgRERZT0xCCitCNjhDO0I2OEM7MTEwNCAxMTZEIDExQjM7QjY4QzsxMTA0IDExNkQgMTFCMzsgIyAo65qMOyDrmow7IOGEhOGFreGGszsg65qMOyDhhIThha3hhrM7ICkgSEFOR1VMIFNZTExBQkxFIEREWU9MUworQjY4RDtCNjhEOzExMDQgMTE2RCAxMUI0O0I2OEQ7MTEwNCAxMTZEIDExQjQ7ICMgKOuajTsg65qNOyDhhIThha3hhrQ7IOuajTsg4YSE4YWt4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBERFlPTFQKK0I2OEU7QjY4RTsxMTA0IDExNkQgMTFCNTtCNjhFOzExMDQgMTE2RCAxMUI1OyAjICjrmo47IOuajjsg4YSE4YWt4Ya1OyDrmo47IOGEhOGFreGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgRERZT0xQCitCNjhGO0I2OEY7MTEwNCAxMTZEIDExQjY7QjY4RjsxMTA0IDExNkQgMTFCNjsgIyAo65qPOyDrmo87IOGEhOGFreGGtjsg65qPOyDhhIThha3hhrY7ICkgSEFOR1VMIFNZTExBQkxFIEREWU9MSAorQjY5MDtCNjkwOzExMDQgMTE2RCAxMUI3O0I2OTA7MTEwNCAxMTZEIDExQjc7ICMgKOuakDsg65qQOyDhhIThha3hhrc7IOuakDsg4YSE4YWt4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBERFlPTQorQjY5MTtCNjkxOzExMDQgMTE2RCAxMUI4O0I2OTE7MTEwNCAxMTZEIDExQjg7ICMgKOuakTsg65qROyDhhIThha3hhrg7IOuakTsg4YSE4YWt4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBERFlPQgorQjY5MjtCNjkyOzExMDQgMTE2RCAxMUI5O0I2OTI7MTEwNCAxMTZEIDExQjk7ICMgKOuakjsg65qSOyDhhIThha3hhrk7IOuakjsg4YSE4YWt4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBERFlPQlMKK0I2OTM7QjY5MzsxMTA0IDExNkQgMTFCQTtCNjkzOzExMDQgMTE2RCAxMUJBOyAjICjrmpM7IOuakzsg4YSE4YWt4Ya6OyDrmpM7IOGEhOGFreGGujsgKSBIQU5HVUwgU1lMTEFCTEUgRERZT1MKK0I2OTQ7QjY5NDsxMTA0IDExNkQgMTFCQjtCNjk0OzExMDQgMTE2RCAxMUJCOyAjICjrmpQ7IOualDsg4YSE4YWt4Ya7OyDrmpQ7IOGEhOGFreGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgRERZT1NTCitCNjk1O0I2OTU7MTEwNCAxMTZEIDExQkM7QjY5NTsxMTA0IDExNkQgMTFCQzsgIyAo65qVOyDrmpU7IOGEhOGFreGGvDsg65qVOyDhhIThha3hhrw7ICkgSEFOR1VMIFNZTExBQkxFIEREWU9ORworQjY5NjtCNjk2OzExMDQgMTE2RCAxMUJEO0I2OTY7MTEwNCAxMTZEIDExQkQ7ICMgKOualjsg65qWOyDhhIThha3hhr07IOualjsg4YSE4YWt4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBERFlPSgorQjY5NztCNjk3OzExMDQgMTE2RCAxMUJFO0I2OTc7MTEwNCAxMTZEIDExQkU7ICMgKOualzsg65qXOyDhhIThha3hhr47IOualzsg4YSE4YWt4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBERFlPQworQjY5ODtCNjk4OzExMDQgMTE2RCAxMUJGO0I2OTg7MTEwNCAxMTZEIDExQkY7ICMgKOuamDsg65qYOyDhhIThha3hhr87IOuamDsg4YSE4YWt4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBERFlPSworQjY5OTtCNjk5OzExMDQgMTE2RCAxMUMwO0I2OTk7MTEwNCAxMTZEIDExQzA7ICMgKOuamTsg65qZOyDhhIThha3hh4A7IOuamTsg4YSE4YWt4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBERFlPVAorQjY5QTtCNjlBOzExMDQgMTE2RCAxMUMxO0I2OUE7MTEwNCAxMTZEIDExQzE7ICMgKOuamjsg65qaOyDhhIThha3hh4E7IOuamjsg4YSE4YWt4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBERFlPUAorQjY5QjtCNjlCOzExMDQgMTE2RCAxMUMyO0I2OUI7MTEwNCAxMTZEIDExQzI7ICMgKOuamzsg65qbOyDhhIThha3hh4I7IOuamzsg4YSE4YWt4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBERFlPSAorQjY5QztCNjlDOzExMDQgMTE2RTtCNjlDOzExMDQgMTE2RTsgIyAo65qcOyDrmpw7IOGEhOGFrjsg65qcOyDhhIThha47ICkgSEFOR1VMIFNZTExBQkxFIEREVQorQjY5RDtCNjlEOzExMDQgMTE2RSAxMUE4O0I2OUQ7MTEwNCAxMTZFIDExQTg7ICMgKOuanTsg65qdOyDhhIThha7hhqg7IOuanTsg4YSE4YWu4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBERFVHCitCNjlFO0I2OUU7MTEwNCAxMTZFIDExQTk7QjY5RTsxMTA0IDExNkUgMTFBOTsgIyAo65qeOyDrmp47IOGEhOGFruGGqTsg65qeOyDhhIThha7hhqk7ICkgSEFOR1VMIFNZTExBQkxFIEREVUdHCitCNjlGO0I2OUY7MTEwNCAxMTZFIDExQUE7QjY5RjsxMTA0IDExNkUgMTFBQTsgIyAo65qfOyDrmp87IOGEhOGFruGGqjsg65qfOyDhhIThha7hhqo7ICkgSEFOR1VMIFNZTExBQkxFIEREVUdTCitCNkEwO0I2QTA7MTEwNCAxMTZFIDExQUI7QjZBMDsxMTA0IDExNkUgMTFBQjsgIyAo65qgOyDrmqA7IOGEhOGFruGGqzsg65qgOyDhhIThha7hhqs7ICkgSEFOR1VMIFNZTExBQkxFIEREVU4KK0I2QTE7QjZBMTsxMTA0IDExNkUgMTFBQztCNkExOzExMDQgMTE2RSAxMUFDOyAjICjrmqE7IOuaoTsg4YSE4YWu4YasOyDrmqE7IOGEhOGFruGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgRERVTkoKK0I2QTI7QjZBMjsxMTA0IDExNkUgMTFBRDtCNkEyOzExMDQgMTE2RSAxMUFEOyAjICjrmqI7IOuaojsg4YSE4YWu4YatOyDrmqI7IOGEhOGFruGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRERVTkgKK0I2QTM7QjZBMzsxMTA0IDExNkUgMTFBRTtCNkEzOzExMDQgMTE2RSAxMUFFOyAjICjrmqM7IOuaozsg4YSE4YWu4YauOyDrmqM7IOGEhOGFruGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgRERVRAorQjZBNDtCNkE0OzExMDQgMTE2RSAxMUFGO0I2QTQ7MTEwNCAxMTZFIDExQUY7ICMgKOuapDsg65qkOyDhhIThha7hhq87IOuapDsg4YSE4YWu4YavOyApIEhBTkdVTCBTWUxMQUJMRSBERFVMCitCNkE1O0I2QTU7MTEwNCAxMTZFIDExQjA7QjZBNTsxMTA0IDExNkUgMTFCMDsgIyAo65qlOyDrmqU7IOGEhOGFruGGsDsg65qlOyDhhIThha7hhrA7ICkgSEFOR1VMIFNZTExBQkxFIEREVUxHCitCNkE2O0I2QTY7MTEwNCAxMTZFIDExQjE7QjZBNjsxMTA0IDExNkUgMTFCMTsgIyAo65qmOyDrmqY7IOGEhOGFruGGsTsg65qmOyDhhIThha7hhrE7ICkgSEFOR1VMIFNZTExBQkxFIEREVUxNCitCNkE3O0I2QTc7MTEwNCAxMTZFIDExQjI7QjZBNzsxMTA0IDExNkUgMTFCMjsgIyAo65qnOyDrmqc7IOGEhOGFruGGsjsg65qnOyDhhIThha7hhrI7ICkgSEFOR1VMIFNZTExBQkxFIEREVUxCCitCNkE4O0I2QTg7MTEwNCAxMTZFIDExQjM7QjZBODsxMTA0IDExNkUgMTFCMzsgIyAo65qoOyDrmqg7IOGEhOGFruGGszsg65qoOyDhhIThha7hhrM7ICkgSEFOR1VMIFNZTExBQkxFIEREVUxTCitCNkE5O0I2QTk7MTEwNCAxMTZFIDExQjQ7QjZBOTsxMTA0IDExNkUgMTFCNDsgIyAo65qpOyDrmqk7IOGEhOGFruGGtDsg65qpOyDhhIThha7hhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEREVUxUCitCNkFBO0I2QUE7MTEwNCAxMTZFIDExQjU7QjZBQTsxMTA0IDExNkUgMTFCNTsgIyAo65qqOyDrmqo7IOGEhOGFruGGtTsg65qqOyDhhIThha7hhrU7ICkgSEFOR1VMIFNZTExBQkxFIEREVUxQCitCNkFCO0I2QUI7MTEwNCAxMTZFIDExQjY7QjZBQjsxMTA0IDExNkUgMTFCNjsgIyAo65qrOyDrmqs7IOGEhOGFruGGtjsg65qrOyDhhIThha7hhrY7ICkgSEFOR1VMIFNZTExBQkxFIEREVUxICitCNkFDO0I2QUM7MTEwNCAxMTZFIDExQjc7QjZBQzsxMTA0IDExNkUgMTFCNzsgIyAo65qsOyDrmqw7IOGEhOGFruGGtzsg65qsOyDhhIThha7hhrc7ICkgSEFOR1VMIFNZTExBQkxFIEREVU0KK0I2QUQ7QjZBRDsxMTA0IDExNkUgMTFCODtCNkFEOzExMDQgMTE2RSAxMUI4OyAjICjrmq07IOuarTsg4YSE4YWu4Ya4OyDrmq07IOGEhOGFruGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgRERVQgorQjZBRTtCNkFFOzExMDQgMTE2RSAxMUI5O0I2QUU7MTEwNCAxMTZFIDExQjk7ICMgKOuarjsg65quOyDhhIThha7hhrk7IOuarjsg4YSE4YWu4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBERFVCUworQjZBRjtCNkFGOzExMDQgMTE2RSAxMUJBO0I2QUY7MTEwNCAxMTZFIDExQkE7ICMgKOuarzsg65qvOyDhhIThha7hhro7IOuarzsg4YSE4YWu4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBERFVTCitCNkIwO0I2QjA7MTEwNCAxMTZFIDExQkI7QjZCMDsxMTA0IDExNkUgMTFCQjsgIyAo65qwOyDrmrA7IOGEhOGFruGGuzsg65qwOyDhhIThha7hhrs7ICkgSEFOR1VMIFNZTExBQkxFIEREVVNTCitCNkIxO0I2QjE7MTEwNCAxMTZFIDExQkM7QjZCMTsxMTA0IDExNkUgMTFCQzsgIyAo65qxOyDrmrE7IOGEhOGFruGGvDsg65qxOyDhhIThha7hhrw7ICkgSEFOR1VMIFNZTExBQkxFIEREVU5HCitCNkIyO0I2QjI7MTEwNCAxMTZFIDExQkQ7QjZCMjsxMTA0IDExNkUgMTFCRDsgIyAo65qyOyDrmrI7IOGEhOGFruGGvTsg65qyOyDhhIThha7hhr07ICkgSEFOR1VMIFNZTExBQkxFIEREVUoKK0I2QjM7QjZCMzsxMTA0IDExNkUgMTFCRTtCNkIzOzExMDQgMTE2RSAxMUJFOyAjICjrmrM7IOuaszsg4YSE4YWu4Ya+OyDrmrM7IOGEhOGFruGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgRERVQworQjZCNDtCNkI0OzExMDQgMTE2RSAxMUJGO0I2QjQ7MTEwNCAxMTZFIDExQkY7ICMgKOuatDsg65q0OyDhhIThha7hhr87IOuatDsg4YSE4YWu4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBERFVLCitCNkI1O0I2QjU7MTEwNCAxMTZFIDExQzA7QjZCNTsxMTA0IDExNkUgMTFDMDsgIyAo65q1OyDrmrU7IOGEhOGFruGHgDsg65q1OyDhhIThha7hh4A7ICkgSEFOR1VMIFNZTExBQkxFIEREVVQKK0I2QjY7QjZCNjsxMTA0IDExNkUgMTFDMTtCNkI2OzExMDQgMTE2RSAxMUMxOyAjICjrmrY7IOuatjsg4YSE4YWu4YeBOyDrmrY7IOGEhOGFruGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgRERVUAorQjZCNztCNkI3OzExMDQgMTE2RSAxMUMyO0I2Qjc7MTEwNCAxMTZFIDExQzI7ICMgKOuatzsg65q3OyDhhIThha7hh4I7IOuatzsg4YSE4YWu4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBERFVICitCNkI4O0I2Qjg7MTEwNCAxMTZGO0I2Qjg7MTEwNCAxMTZGOyAjICjrmrg7IOuauDsg4YSE4YWvOyDrmrg7IOGEhOGFrzsgKSBIQU5HVUwgU1lMTEFCTEUgRERXRU8KK0I2Qjk7QjZCOTsxMTA0IDExNkYgMTFBODtCNkI5OzExMDQgMTE2RiAxMUE4OyAjICjrmrk7IOuauTsg4YSE4YWv4YaoOyDrmrk7IOGEhOGFr+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRERXRU9HCitCNkJBO0I2QkE7MTEwNCAxMTZGIDExQTk7QjZCQTsxMTA0IDExNkYgMTFBOTsgIyAo65q6OyDrmro7IOGEhOGFr+GGqTsg65q6OyDhhIThha/hhqk7ICkgSEFOR1VMIFNZTExBQkxFIEREV0VPR0cKK0I2QkI7QjZCQjsxMTA0IDExNkYgMTFBQTtCNkJCOzExMDQgMTE2RiAxMUFBOyAjICjrmrs7IOuauzsg4YSE4YWv4YaqOyDrmrs7IOGEhOGFr+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgRERXRU9HUworQjZCQztCNkJDOzExMDQgMTE2RiAxMUFCO0I2QkM7MTEwNCAxMTZGIDExQUI7ICMgKOuavDsg65q8OyDhhIThha/hhqs7IOuavDsg4YSE4YWv4YarOyApIEhBTkdVTCBTWUxMQUJMRSBERFdFT04KK0I2QkQ7QjZCRDsxMTA0IDExNkYgMTFBQztCNkJEOzExMDQgMTE2RiAxMUFDOyAjICjrmr07IOuavTsg4YSE4YWv4YasOyDrmr07IOGEhOGFr+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgRERXRU9OSgorQjZCRTtCNkJFOzExMDQgMTE2RiAxMUFEO0I2QkU7MTEwNCAxMTZGIDExQUQ7ICMgKOuavjsg65q+OyDhhIThha/hhq07IOuavjsg4YSE4YWv4YatOyApIEhBTkdVTCBTWUxMQUJMRSBERFdFT05ICitCNkJGO0I2QkY7MTEwNCAxMTZGIDExQUU7QjZCRjsxMTA0IDExNkYgMTFBRTsgIyAo65q/OyDrmr87IOGEhOGFr+GGrjsg65q/OyDhhIThha/hhq47ICkgSEFOR1VMIFNZTExBQkxFIEREV0VPRAorQjZDMDtCNkMwOzExMDQgMTE2RiAxMUFGO0I2QzA7MTEwNCAxMTZGIDExQUY7ICMgKOubgDsg65uAOyDhhIThha/hhq87IOubgDsg4YSE4YWv4YavOyApIEhBTkdVTCBTWUxMQUJMRSBERFdFT0wKK0I2QzE7QjZDMTsxMTA0IDExNkYgMTFCMDtCNkMxOzExMDQgMTE2RiAxMUIwOyAjICjrm4E7IOubgTsg4YSE4YWv4YawOyDrm4E7IOGEhOGFr+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgRERXRU9MRworQjZDMjtCNkMyOzExMDQgMTE2RiAxMUIxO0I2QzI7MTEwNCAxMTZGIDExQjE7ICMgKOubgjsg65uCOyDhhIThha/hhrE7IOubgjsg4YSE4YWv4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBERFdFT0xNCitCNkMzO0I2QzM7MTEwNCAxMTZGIDExQjI7QjZDMzsxMTA0IDExNkYgMTFCMjsgIyAo65uDOyDrm4M7IOGEhOGFr+GGsjsg65uDOyDhhIThha/hhrI7ICkgSEFOR1VMIFNZTExBQkxFIEREV0VPTEIKK0I2QzQ7QjZDNDsxMTA0IDExNkYgMTFCMztCNkM0OzExMDQgMTE2RiAxMUIzOyAjICjrm4Q7IOubhDsg4YSE4YWv4YazOyDrm4Q7IOGEhOGFr+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgRERXRU9MUworQjZDNTtCNkM1OzExMDQgMTE2RiAxMUI0O0I2QzU7MTEwNCAxMTZGIDExQjQ7ICMgKOubhTsg65uFOyDhhIThha/hhrQ7IOubhTsg4YSE4YWv4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBERFdFT0xUCitCNkM2O0I2QzY7MTEwNCAxMTZGIDExQjU7QjZDNjsxMTA0IDExNkYgMTFCNTsgIyAo65uGOyDrm4Y7IOGEhOGFr+GGtTsg65uGOyDhhIThha/hhrU7ICkgSEFOR1VMIFNZTExBQkxFIEREV0VPTFAKK0I2Qzc7QjZDNzsxMTA0IDExNkYgMTFCNjtCNkM3OzExMDQgMTE2RiAxMUI2OyAjICjrm4c7IOubhzsg4YSE4YWv4Ya2OyDrm4c7IOGEhOGFr+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgRERXRU9MSAorQjZDODtCNkM4OzExMDQgMTE2RiAxMUI3O0I2Qzg7MTEwNCAxMTZGIDExQjc7ICMgKOubiDsg65uIOyDhhIThha/hhrc7IOubiDsg4YSE4YWv4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBERFdFT00KK0I2Qzk7QjZDOTsxMTA0IDExNkYgMTFCODtCNkM5OzExMDQgMTE2RiAxMUI4OyAjICjrm4k7IOubiTsg4YSE4YWv4Ya4OyDrm4k7IOGEhOGFr+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgRERXRU9CCitCNkNBO0I2Q0E7MTEwNCAxMTZGIDExQjk7QjZDQTsxMTA0IDExNkYgMTFCOTsgIyAo65uKOyDrm4o7IOGEhOGFr+GGuTsg65uKOyDhhIThha/hhrk7ICkgSEFOR1VMIFNZTExBQkxFIEREV0VPQlMKK0I2Q0I7QjZDQjsxMTA0IDExNkYgMTFCQTtCNkNCOzExMDQgMTE2RiAxMUJBOyAjICjrm4s7IOubizsg4YSE4YWv4Ya6OyDrm4s7IOGEhOGFr+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgRERXRU9TCitCNkNDO0I2Q0M7MTEwNCAxMTZGIDExQkI7QjZDQzsxMTA0IDExNkYgMTFCQjsgIyAo65uMOyDrm4w7IOGEhOGFr+GGuzsg65uMOyDhhIThha/hhrs7ICkgSEFOR1VMIFNZTExBQkxFIEREV0VPU1MKK0I2Q0Q7QjZDRDsxMTA0IDExNkYgMTFCQztCNkNEOzExMDQgMTE2RiAxMUJDOyAjICjrm407IOubjTsg4YSE4YWv4Ya8OyDrm407IOGEhOGFr+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgRERXRU9ORworQjZDRTtCNkNFOzExMDQgMTE2RiAxMUJEO0I2Q0U7MTEwNCAxMTZGIDExQkQ7ICMgKOubjjsg65uOOyDhhIThha/hhr07IOubjjsg4YSE4YWv4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBERFdFT0oKK0I2Q0Y7QjZDRjsxMTA0IDExNkYgMTFCRTtCNkNGOzExMDQgMTE2RiAxMUJFOyAjICjrm487IOubjzsg4YSE4YWv4Ya+OyDrm487IOGEhOGFr+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgRERXRU9DCitCNkQwO0I2RDA7MTEwNCAxMTZGIDExQkY7QjZEMDsxMTA0IDExNkYgMTFCRjsgIyAo65uQOyDrm5A7IOGEhOGFr+GGvzsg65uQOyDhhIThha/hhr87ICkgSEFOR1VMIFNZTExBQkxFIEREV0VPSworQjZEMTtCNkQxOzExMDQgMTE2RiAxMUMwO0I2RDE7MTEwNCAxMTZGIDExQzA7ICMgKOubkTsg65uROyDhhIThha/hh4A7IOubkTsg4YSE4YWv4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBERFdFT1QKK0I2RDI7QjZEMjsxMTA0IDExNkYgMTFDMTtCNkQyOzExMDQgMTE2RiAxMUMxOyAjICjrm5I7IOubkjsg4YSE4YWv4YeBOyDrm5I7IOGEhOGFr+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgRERXRU9QCitCNkQzO0I2RDM7MTEwNCAxMTZGIDExQzI7QjZEMzsxMTA0IDExNkYgMTFDMjsgIyAo65uTOyDrm5M7IOGEhOGFr+GHgjsg65uTOyDhhIThha/hh4I7ICkgSEFOR1VMIFNZTExBQkxFIEREV0VPSAorQjZENDtCNkQ0OzExMDQgMTE3MDtCNkQ0OzExMDQgMTE3MDsgIyAo65uUOyDrm5Q7IOGEhOGFsDsg65uUOyDhhIThhbA7ICkgSEFOR1VMIFNZTExBQkxFIEREV0UKK0I2RDU7QjZENTsxMTA0IDExNzAgMTFBODtCNkQ1OzExMDQgMTE3MCAxMUE4OyAjICjrm5U7IOublTsg4YSE4YWw4YaoOyDrm5U7IOGEhOGFsOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRERXRUcKK0I2RDY7QjZENjsxMTA0IDExNzAgMTFBOTtCNkQ2OzExMDQgMTE3MCAxMUE5OyAjICjrm5Y7IOubljsg4YSE4YWw4YapOyDrm5Y7IOGEhOGFsOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgRERXRUdHCitCNkQ3O0I2RDc7MTEwNCAxMTcwIDExQUE7QjZENzsxMTA0IDExNzAgMTFBQTsgIyAo65uXOyDrm5c7IOGEhOGFsOGGqjsg65uXOyDhhIThhbDhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEREV0VHUworQjZEODtCNkQ4OzExMDQgMTE3MCAxMUFCO0I2RDg7MTEwNCAxMTcwIDExQUI7ICMgKOubmDsg65uYOyDhhIThhbDhhqs7IOubmDsg4YSE4YWw4YarOyApIEhBTkdVTCBTWUxMQUJMRSBERFdFTgorQjZEOTtCNkQ5OzExMDQgMTE3MCAxMUFDO0I2RDk7MTEwNCAxMTcwIDExQUM7ICMgKOubmTsg65uZOyDhhIThhbDhhqw7IOubmTsg4YSE4YWw4YasOyApIEhBTkdVTCBTWUxMQUJMRSBERFdFTkoKK0I2REE7QjZEQTsxMTA0IDExNzAgMTFBRDtCNkRBOzExMDQgMTE3MCAxMUFEOyAjICjrm5o7IOubmjsg4YSE4YWw4YatOyDrm5o7IOGEhOGFsOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRERXRU5ICitCNkRCO0I2REI7MTEwNCAxMTcwIDExQUU7QjZEQjsxMTA0IDExNzAgMTFBRTsgIyAo65ubOyDrm5s7IOGEhOGFsOGGrjsg65ubOyDhhIThhbDhhq47ICkgSEFOR1VMIFNZTExBQkxFIEREV0VECitCNkRDO0I2REM7MTEwNCAxMTcwIDExQUY7QjZEQzsxMTA0IDExNzAgMTFBRjsgIyAo65ucOyDrm5w7IOGEhOGFsOGGrzsg65ucOyDhhIThhbDhhq87ICkgSEFOR1VMIFNZTExBQkxFIEREV0VMCitCNkREO0I2REQ7MTEwNCAxMTcwIDExQjA7QjZERDsxMTA0IDExNzAgMTFCMDsgIyAo65udOyDrm507IOGEhOGFsOGGsDsg65udOyDhhIThhbDhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEREV0VMRworQjZERTtCNkRFOzExMDQgMTE3MCAxMUIxO0I2REU7MTEwNCAxMTcwIDExQjE7ICMgKOubnjsg65ueOyDhhIThhbDhhrE7IOubnjsg4YSE4YWw4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBERFdFTE0KK0I2REY7QjZERjsxMTA0IDExNzAgMTFCMjtCNkRGOzExMDQgMTE3MCAxMUIyOyAjICjrm587IOubnzsg4YSE4YWw4YayOyDrm587IOGEhOGFsOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgRERXRUxCCitCNkUwO0I2RTA7MTEwNCAxMTcwIDExQjM7QjZFMDsxMTA0IDExNzAgMTFCMzsgIyAo65ugOyDrm6A7IOGEhOGFsOGGszsg65ugOyDhhIThhbDhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEREV0VMUworQjZFMTtCNkUxOzExMDQgMTE3MCAxMUI0O0I2RTE7MTEwNCAxMTcwIDExQjQ7ICMgKOuboTsg65uhOyDhhIThhbDhhrQ7IOuboTsg4YSE4YWw4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBERFdFTFQKK0I2RTI7QjZFMjsxMTA0IDExNzAgMTFCNTtCNkUyOzExMDQgMTE3MCAxMUI1OyAjICjrm6I7IOubojsg4YSE4YWw4Ya1OyDrm6I7IOGEhOGFsOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgRERXRUxQCitCNkUzO0I2RTM7MTEwNCAxMTcwIDExQjY7QjZFMzsxMTA0IDExNzAgMTFCNjsgIyAo65ujOyDrm6M7IOGEhOGFsOGGtjsg65ujOyDhhIThhbDhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEREV0VMSAorQjZFNDtCNkU0OzExMDQgMTE3MCAxMUI3O0I2RTQ7MTEwNCAxMTcwIDExQjc7ICMgKOubpDsg65ukOyDhhIThhbDhhrc7IOubpDsg4YSE4YWw4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBERFdFTQorQjZFNTtCNkU1OzExMDQgMTE3MCAxMUI4O0I2RTU7MTEwNCAxMTcwIDExQjg7ICMgKOubpTsg65ulOyDhhIThhbDhhrg7IOubpTsg4YSE4YWw4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBERFdFQgorQjZFNjtCNkU2OzExMDQgMTE3MCAxMUI5O0I2RTY7MTEwNCAxMTcwIDExQjk7ICMgKOubpjsg65umOyDhhIThhbDhhrk7IOubpjsg4YSE4YWw4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBERFdFQlMKK0I2RTc7QjZFNzsxMTA0IDExNzAgMTFCQTtCNkU3OzExMDQgMTE3MCAxMUJBOyAjICjrm6c7IOubpzsg4YSE4YWw4Ya6OyDrm6c7IOGEhOGFsOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgRERXRVMKK0I2RTg7QjZFODsxMTA0IDExNzAgMTFCQjtCNkU4OzExMDQgMTE3MCAxMUJCOyAjICjrm6g7IOubqDsg4YSE4YWw4Ya7OyDrm6g7IOGEhOGFsOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgRERXRVNTCitCNkU5O0I2RTk7MTEwNCAxMTcwIDExQkM7QjZFOTsxMTA0IDExNzAgMTFCQzsgIyAo65upOyDrm6k7IOGEhOGFsOGGvDsg65upOyDhhIThhbDhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEREV0VORworQjZFQTtCNkVBOzExMDQgMTE3MCAxMUJEO0I2RUE7MTEwNCAxMTcwIDExQkQ7ICMgKOubqjsg65uqOyDhhIThhbDhhr07IOubqjsg4YSE4YWw4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBERFdFSgorQjZFQjtCNkVCOzExMDQgMTE3MCAxMUJFO0I2RUI7MTEwNCAxMTcwIDExQkU7ICMgKOubqzsg65urOyDhhIThhbDhhr47IOubqzsg4YSE4YWw4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBERFdFQworQjZFQztCNkVDOzExMDQgMTE3MCAxMUJGO0I2RUM7MTEwNCAxMTcwIDExQkY7ICMgKOubrDsg65usOyDhhIThhbDhhr87IOubrDsg4YSE4YWw4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBERFdFSworQjZFRDtCNkVEOzExMDQgMTE3MCAxMUMwO0I2RUQ7MTEwNCAxMTcwIDExQzA7ICMgKOubrTsg65utOyDhhIThhbDhh4A7IOubrTsg4YSE4YWw4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBERFdFVAorQjZFRTtCNkVFOzExMDQgMTE3MCAxMUMxO0I2RUU7MTEwNCAxMTcwIDExQzE7ICMgKOubrjsg65uuOyDhhIThhbDhh4E7IOubrjsg4YSE4YWw4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBERFdFUAorQjZFRjtCNkVGOzExMDQgMTE3MCAxMUMyO0I2RUY7MTEwNCAxMTcwIDExQzI7ICMgKOubrzsg65uvOyDhhIThhbDhh4I7IOubrzsg4YSE4YWw4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBERFdFSAorQjZGMDtCNkYwOzExMDQgMTE3MTtCNkYwOzExMDQgMTE3MTsgIyAo65uwOyDrm7A7IOGEhOGFsTsg65uwOyDhhIThhbE7ICkgSEFOR1VMIFNZTExBQkxFIEREV0kKK0I2RjE7QjZGMTsxMTA0IDExNzEgMTFBODtCNkYxOzExMDQgMTE3MSAxMUE4OyAjICjrm7E7IOubsTsg4YSE4YWx4YaoOyDrm7E7IOGEhOGFseGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRERXSUcKK0I2RjI7QjZGMjsxMTA0IDExNzEgMTFBOTtCNkYyOzExMDQgMTE3MSAxMUE5OyAjICjrm7I7IOubsjsg4YSE4YWx4YapOyDrm7I7IOGEhOGFseGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgRERXSUdHCitCNkYzO0I2RjM7MTEwNCAxMTcxIDExQUE7QjZGMzsxMTA0IDExNzEgMTFBQTsgIyAo65uzOyDrm7M7IOGEhOGFseGGqjsg65uzOyDhhIThhbHhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEREV0lHUworQjZGNDtCNkY0OzExMDQgMTE3MSAxMUFCO0I2RjQ7MTEwNCAxMTcxIDExQUI7ICMgKOubtDsg65u0OyDhhIThhbHhhqs7IOubtDsg4YSE4YWx4YarOyApIEhBTkdVTCBTWUxMQUJMRSBERFdJTgorQjZGNTtCNkY1OzExMDQgMTE3MSAxMUFDO0I2RjU7MTEwNCAxMTcxIDExQUM7ICMgKOubtTsg65u1OyDhhIThhbHhhqw7IOubtTsg4YSE4YWx4YasOyApIEhBTkdVTCBTWUxMQUJMRSBERFdJTkoKK0I2RjY7QjZGNjsxMTA0IDExNzEgMTFBRDtCNkY2OzExMDQgMTE3MSAxMUFEOyAjICjrm7Y7IOubtjsg4YSE4YWx4YatOyDrm7Y7IOGEhOGFseGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRERXSU5ICitCNkY3O0I2Rjc7MTEwNCAxMTcxIDExQUU7QjZGNzsxMTA0IDExNzEgMTFBRTsgIyAo65u3OyDrm7c7IOGEhOGFseGGrjsg65u3OyDhhIThhbHhhq47ICkgSEFOR1VMIFNZTExBQkxFIEREV0lECitCNkY4O0I2Rjg7MTEwNCAxMTcxIDExQUY7QjZGODsxMTA0IDExNzEgMTFBRjsgIyAo65u4OyDrm7g7IOGEhOGFseGGrzsg65u4OyDhhIThhbHhhq87ICkgSEFOR1VMIFNZTExBQkxFIEREV0lMCitCNkY5O0I2Rjk7MTEwNCAxMTcxIDExQjA7QjZGOTsxMTA0IDExNzEgMTFCMDsgIyAo65u5OyDrm7k7IOGEhOGFseGGsDsg65u5OyDhhIThhbHhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEREV0lMRworQjZGQTtCNkZBOzExMDQgMTE3MSAxMUIxO0I2RkE7MTEwNCAxMTcxIDExQjE7ICMgKOubujsg65u6OyDhhIThhbHhhrE7IOubujsg4YSE4YWx4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBERFdJTE0KK0I2RkI7QjZGQjsxMTA0IDExNzEgMTFCMjtCNkZCOzExMDQgMTE3MSAxMUIyOyAjICjrm7s7IOubuzsg4YSE4YWx4YayOyDrm7s7IOGEhOGFseGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgRERXSUxCCitCNkZDO0I2RkM7MTEwNCAxMTcxIDExQjM7QjZGQzsxMTA0IDExNzEgMTFCMzsgIyAo65u8OyDrm7w7IOGEhOGFseGGszsg65u8OyDhhIThhbHhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEREV0lMUworQjZGRDtCNkZEOzExMDQgMTE3MSAxMUI0O0I2RkQ7MTEwNCAxMTcxIDExQjQ7ICMgKOubvTsg65u9OyDhhIThhbHhhrQ7IOubvTsg4YSE4YWx4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBERFdJTFQKK0I2RkU7QjZGRTsxMTA0IDExNzEgMTFCNTtCNkZFOzExMDQgMTE3MSAxMUI1OyAjICjrm747IOubvjsg4YSE4YWx4Ya1OyDrm747IOGEhOGFseGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgRERXSUxQCitCNkZGO0I2RkY7MTEwNCAxMTcxIDExQjY7QjZGRjsxMTA0IDExNzEgMTFCNjsgIyAo65u/OyDrm787IOGEhOGFseGGtjsg65u/OyDhhIThhbHhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEREV0lMSAorQjcwMDtCNzAwOzExMDQgMTE3MSAxMUI3O0I3MDA7MTEwNCAxMTcxIDExQjc7ICMgKOucgDsg65yAOyDhhIThhbHhhrc7IOucgDsg4YSE4YWx4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBERFdJTQorQjcwMTtCNzAxOzExMDQgMTE3MSAxMUI4O0I3MDE7MTEwNCAxMTcxIDExQjg7ICMgKOucgTsg65yBOyDhhIThhbHhhrg7IOucgTsg4YSE4YWx4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBERFdJQgorQjcwMjtCNzAyOzExMDQgMTE3MSAxMUI5O0I3MDI7MTEwNCAxMTcxIDExQjk7ICMgKOucgjsg65yCOyDhhIThhbHhhrk7IOucgjsg4YSE4YWx4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBERFdJQlMKK0I3MDM7QjcwMzsxMTA0IDExNzEgMTFCQTtCNzAzOzExMDQgMTE3MSAxMUJBOyAjICjrnIM7IOucgzsg4YSE4YWx4Ya6OyDrnIM7IOGEhOGFseGGujsgKSBIQU5HVUwgU1lMTEFCTEUgRERXSVMKK0I3MDQ7QjcwNDsxMTA0IDExNzEgMTFCQjtCNzA0OzExMDQgMTE3MSAxMUJCOyAjICjrnIQ7IOuchDsg4YSE4YWx4Ya7OyDrnIQ7IOGEhOGFseGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgRERXSVNTCitCNzA1O0I3MDU7MTEwNCAxMTcxIDExQkM7QjcwNTsxMTA0IDExNzEgMTFCQzsgIyAo65yFOyDrnIU7IOGEhOGFseGGvDsg65yFOyDhhIThhbHhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEREV0lORworQjcwNjtCNzA2OzExMDQgMTE3MSAxMUJEO0I3MDY7MTEwNCAxMTcxIDExQkQ7ICMgKOuchjsg65yGOyDhhIThhbHhhr07IOuchjsg4YSE4YWx4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBERFdJSgorQjcwNztCNzA3OzExMDQgMTE3MSAxMUJFO0I3MDc7MTEwNCAxMTcxIDExQkU7ICMgKOuchzsg65yHOyDhhIThhbHhhr47IOuchzsg4YSE4YWx4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBERFdJQworQjcwODtCNzA4OzExMDQgMTE3MSAxMUJGO0I3MDg7MTEwNCAxMTcxIDExQkY7ICMgKOuciDsg65yIOyDhhIThhbHhhr87IOuciDsg4YSE4YWx4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBERFdJSworQjcwOTtCNzA5OzExMDQgMTE3MSAxMUMwO0I3MDk7MTEwNCAxMTcxIDExQzA7ICMgKOuciTsg65yJOyDhhIThhbHhh4A7IOuciTsg4YSE4YWx4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBERFdJVAorQjcwQTtCNzBBOzExMDQgMTE3MSAxMUMxO0I3MEE7MTEwNCAxMTcxIDExQzE7ICMgKOucijsg65yKOyDhhIThhbHhh4E7IOucijsg4YSE4YWx4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBERFdJUAorQjcwQjtCNzBCOzExMDQgMTE3MSAxMUMyO0I3MEI7MTEwNCAxMTcxIDExQzI7ICMgKOucizsg65yLOyDhhIThhbHhh4I7IOucizsg4YSE4YWx4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBERFdJSAorQjcwQztCNzBDOzExMDQgMTE3MjtCNzBDOzExMDQgMTE3MjsgIyAo65yMOyDrnIw7IOGEhOGFsjsg65yMOyDhhIThhbI7ICkgSEFOR1VMIFNZTExBQkxFIEREWVUKK0I3MEQ7QjcwRDsxMTA0IDExNzIgMTFBODtCNzBEOzExMDQgMTE3MiAxMUE4OyAjICjrnI07IOucjTsg4YSE4YWy4YaoOyDrnI07IOGEhOGFsuGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRERZVUcKK0I3MEU7QjcwRTsxMTA0IDExNzIgMTFBOTtCNzBFOzExMDQgMTE3MiAxMUE5OyAjICjrnI47IOucjjsg4YSE4YWy4YapOyDrnI47IOGEhOGFsuGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgRERZVUdHCitCNzBGO0I3MEY7MTEwNCAxMTcyIDExQUE7QjcwRjsxMTA0IDExNzIgMTFBQTsgIyAo65yPOyDrnI87IOGEhOGFsuGGqjsg65yPOyDhhIThhbLhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEREWVVHUworQjcxMDtCNzEwOzExMDQgMTE3MiAxMUFCO0I3MTA7MTEwNCAxMTcyIDExQUI7ICMgKOuckDsg65yQOyDhhIThhbLhhqs7IOuckDsg4YSE4YWy4YarOyApIEhBTkdVTCBTWUxMQUJMRSBERFlVTgorQjcxMTtCNzExOzExMDQgMTE3MiAxMUFDO0I3MTE7MTEwNCAxMTcyIDExQUM7ICMgKOuckTsg65yROyDhhIThhbLhhqw7IOuckTsg4YSE4YWy4YasOyApIEhBTkdVTCBTWUxMQUJMRSBERFlVTkoKK0I3MTI7QjcxMjsxMTA0IDExNzIgMTFBRDtCNzEyOzExMDQgMTE3MiAxMUFEOyAjICjrnJI7IOuckjsg4YSE4YWy4YatOyDrnJI7IOGEhOGFsuGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRERZVU5ICitCNzEzO0I3MTM7MTEwNCAxMTcyIDExQUU7QjcxMzsxMTA0IDExNzIgMTFBRTsgIyAo65yTOyDrnJM7IOGEhOGFsuGGrjsg65yTOyDhhIThhbLhhq47ICkgSEFOR1VMIFNZTExBQkxFIEREWVVECitCNzE0O0I3MTQ7MTEwNCAxMTcyIDExQUY7QjcxNDsxMTA0IDExNzIgMTFBRjsgIyAo65yUOyDrnJQ7IOGEhOGFsuGGrzsg65yUOyDhhIThhbLhhq87ICkgSEFOR1VMIFNZTExBQkxFIEREWVVMCitCNzE1O0I3MTU7MTEwNCAxMTcyIDExQjA7QjcxNTsxMTA0IDExNzIgMTFCMDsgIyAo65yVOyDrnJU7IOGEhOGFsuGGsDsg65yVOyDhhIThhbLhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEREWVVMRworQjcxNjtCNzE2OzExMDQgMTE3MiAxMUIxO0I3MTY7MTEwNCAxMTcyIDExQjE7ICMgKOucljsg65yWOyDhhIThhbLhhrE7IOucljsg4YSE4YWy4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBERFlVTE0KK0I3MTc7QjcxNzsxMTA0IDExNzIgMTFCMjtCNzE3OzExMDQgMTE3MiAxMUIyOyAjICjrnJc7IOuclzsg4YSE4YWy4YayOyDrnJc7IOGEhOGFsuGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgRERZVUxCCitCNzE4O0I3MTg7MTEwNCAxMTcyIDExQjM7QjcxODsxMTA0IDExNzIgMTFCMzsgIyAo65yYOyDrnJg7IOGEhOGFsuGGszsg65yYOyDhhIThhbLhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEREWVVMUworQjcxOTtCNzE5OzExMDQgMTE3MiAxMUI0O0I3MTk7MTEwNCAxMTcyIDExQjQ7ICMgKOucmTsg65yZOyDhhIThhbLhhrQ7IOucmTsg4YSE4YWy4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBERFlVTFQKK0I3MUE7QjcxQTsxMTA0IDExNzIgMTFCNTtCNzFBOzExMDQgMTE3MiAxMUI1OyAjICjrnJo7IOucmjsg4YSE4YWy4Ya1OyDrnJo7IOGEhOGFsuGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgRERZVUxQCitCNzFCO0I3MUI7MTEwNCAxMTcyIDExQjY7QjcxQjsxMTA0IDExNzIgMTFCNjsgIyAo65ybOyDrnJs7IOGEhOGFsuGGtjsg65ybOyDhhIThhbLhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEREWVVMSAorQjcxQztCNzFDOzExMDQgMTE3MiAxMUI3O0I3MUM7MTEwNCAxMTcyIDExQjc7ICMgKOucnDsg65ycOyDhhIThhbLhhrc7IOucnDsg4YSE4YWy4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBERFlVTQorQjcxRDtCNzFEOzExMDQgMTE3MiAxMUI4O0I3MUQ7MTEwNCAxMTcyIDExQjg7ICMgKOucnTsg65ydOyDhhIThhbLhhrg7IOucnTsg4YSE4YWy4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBERFlVQgorQjcxRTtCNzFFOzExMDQgMTE3MiAxMUI5O0I3MUU7MTEwNCAxMTcyIDExQjk7ICMgKOucnjsg65yeOyDhhIThhbLhhrk7IOucnjsg4YSE4YWy4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBERFlVQlMKK0I3MUY7QjcxRjsxMTA0IDExNzIgMTFCQTtCNzFGOzExMDQgMTE3MiAxMUJBOyAjICjrnJ87IOucnzsg4YSE4YWy4Ya6OyDrnJ87IOGEhOGFsuGGujsgKSBIQU5HVUwgU1lMTEFCTEUgRERZVVMKK0I3MjA7QjcyMDsxMTA0IDExNzIgMTFCQjtCNzIwOzExMDQgMTE3MiAxMUJCOyAjICjrnKA7IOucoDsg4YSE4YWy4Ya7OyDrnKA7IOGEhOGFsuGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgRERZVVNTCitCNzIxO0I3MjE7MTEwNCAxMTcyIDExQkM7QjcyMTsxMTA0IDExNzIgMTFCQzsgIyAo65yhOyDrnKE7IOGEhOGFsuGGvDsg65yhOyDhhIThhbLhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEREWVVORworQjcyMjtCNzIyOzExMDQgMTE3MiAxMUJEO0I3MjI7MTEwNCAxMTcyIDExQkQ7ICMgKOucojsg65yiOyDhhIThhbLhhr07IOucojsg4YSE4YWy4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBERFlVSgorQjcyMztCNzIzOzExMDQgMTE3MiAxMUJFO0I3MjM7MTEwNCAxMTcyIDExQkU7ICMgKOucozsg65yjOyDhhIThhbLhhr47IOucozsg4YSE4YWy4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBERFlVQworQjcyNDtCNzI0OzExMDQgMTE3MiAxMUJGO0I3MjQ7MTEwNCAxMTcyIDExQkY7ICMgKOucpDsg65ykOyDhhIThhbLhhr87IOucpDsg4YSE4YWy4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBERFlVSworQjcyNTtCNzI1OzExMDQgMTE3MiAxMUMwO0I3MjU7MTEwNCAxMTcyIDExQzA7ICMgKOucpTsg65ylOyDhhIThhbLhh4A7IOucpTsg4YSE4YWy4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBERFlVVAorQjcyNjtCNzI2OzExMDQgMTE3MiAxMUMxO0I3MjY7MTEwNCAxMTcyIDExQzE7ICMgKOucpjsg65ymOyDhhIThhbLhh4E7IOucpjsg4YSE4YWy4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBERFlVUAorQjcyNztCNzI3OzExMDQgMTE3MiAxMUMyO0I3Mjc7MTEwNCAxMTcyIDExQzI7ICMgKOucpzsg65ynOyDhhIThhbLhh4I7IOucpzsg4YSE4YWy4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBERFlVSAorQjcyODtCNzI4OzExMDQgMTE3MztCNzI4OzExMDQgMTE3MzsgIyAo65yoOyDrnKg7IOGEhOGFszsg65yoOyDhhIThhbM7ICkgSEFOR1VMIFNZTExBQkxFIERERVUKK0I3Mjk7QjcyOTsxMTA0IDExNzMgMTFBODtCNzI5OzExMDQgMTE3MyAxMUE4OyAjICjrnKk7IOucqTsg4YSE4YWz4YaoOyDrnKk7IOGEhOGFs+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRERFVUcKK0I3MkE7QjcyQTsxMTA0IDExNzMgMTFBOTtCNzJBOzExMDQgMTE3MyAxMUE5OyAjICjrnKo7IOucqjsg4YSE4YWz4YapOyDrnKo7IOGEhOGFs+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgRERFVUdHCitCNzJCO0I3MkI7MTEwNCAxMTczIDExQUE7QjcyQjsxMTA0IDExNzMgMTFBQTsgIyAo65yrOyDrnKs7IOGEhOGFs+GGqjsg65yrOyDhhIThhbPhhqo7ICkgSEFOR1VMIFNZTExBQkxFIERERVVHUworQjcyQztCNzJDOzExMDQgMTE3MyAxMUFCO0I3MkM7MTEwNCAxMTczIDExQUI7ICMgKOucrDsg65ysOyDhhIThhbPhhqs7IOucrDsg4YSE4YWz4YarOyApIEhBTkdVTCBTWUxMQUJMRSBEREVVTgorQjcyRDtCNzJEOzExMDQgMTE3MyAxMUFDO0I3MkQ7MTEwNCAxMTczIDExQUM7ICMgKOucrTsg65ytOyDhhIThhbPhhqw7IOucrTsg4YSE4YWz4YasOyApIEhBTkdVTCBTWUxMQUJMRSBEREVVTkoKK0I3MkU7QjcyRTsxMTA0IDExNzMgMTFBRDtCNzJFOzExMDQgMTE3MyAxMUFEOyAjICjrnK47IOucrjsg4YSE4YWz4YatOyDrnK47IOGEhOGFs+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRERFVU5ICitCNzJGO0I3MkY7MTEwNCAxMTczIDExQUU7QjcyRjsxMTA0IDExNzMgMTFBRTsgIyAo65yvOyDrnK87IOGEhOGFs+GGrjsg65yvOyDhhIThhbPhhq47ICkgSEFOR1VMIFNZTExBQkxFIERERVVECitCNzMwO0I3MzA7MTEwNCAxMTczIDExQUY7QjczMDsxMTA0IDExNzMgMTFBRjsgIyAo65ywOyDrnLA7IOGEhOGFs+GGrzsg65ywOyDhhIThhbPhhq87ICkgSEFOR1VMIFNZTExBQkxFIERERVVMCitCNzMxO0I3MzE7MTEwNCAxMTczIDExQjA7QjczMTsxMTA0IDExNzMgMTFCMDsgIyAo65yxOyDrnLE7IOGEhOGFs+GGsDsg65yxOyDhhIThhbPhhrA7ICkgSEFOR1VMIFNZTExBQkxFIERERVVMRworQjczMjtCNzMyOzExMDQgMTE3MyAxMUIxO0I3MzI7MTEwNCAxMTczIDExQjE7ICMgKOucsjsg65yyOyDhhIThhbPhhrE7IOucsjsg4YSE4YWz4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBEREVVTE0KK0I3MzM7QjczMzsxMTA0IDExNzMgMTFCMjtCNzMzOzExMDQgMTE3MyAxMUIyOyAjICjrnLM7IOucszsg4YSE4YWz4YayOyDrnLM7IOGEhOGFs+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgRERFVUxCCitCNzM0O0I3MzQ7MTEwNCAxMTczIDExQjM7QjczNDsxMTA0IDExNzMgMTFCMzsgIyAo65y0OyDrnLQ7IOGEhOGFs+GGszsg65y0OyDhhIThhbPhhrM7ICkgSEFOR1VMIFNZTExBQkxFIERERVVMUworQjczNTtCNzM1OzExMDQgMTE3MyAxMUI0O0I3MzU7MTEwNCAxMTczIDExQjQ7ICMgKOuctTsg65y1OyDhhIThhbPhhrQ7IOuctTsg4YSE4YWz4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBEREVVTFQKK0I3MzY7QjczNjsxMTA0IDExNzMgMTFCNTtCNzM2OzExMDQgMTE3MyAxMUI1OyAjICjrnLY7IOuctjsg4YSE4YWz4Ya1OyDrnLY7IOGEhOGFs+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgRERFVUxQCitCNzM3O0I3Mzc7MTEwNCAxMTczIDExQjY7QjczNzsxMTA0IDExNzMgMTFCNjsgIyAo65y3OyDrnLc7IOGEhOGFs+GGtjsg65y3OyDhhIThhbPhhrY7ICkgSEFOR1VMIFNZTExBQkxFIERERVVMSAorQjczODtCNzM4OzExMDQgMTE3MyAxMUI3O0I3Mzg7MTEwNCAxMTczIDExQjc7ICMgKOucuDsg65y4OyDhhIThhbPhhrc7IOucuDsg4YSE4YWz4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBEREVVTQorQjczOTtCNzM5OzExMDQgMTE3MyAxMUI4O0I3Mzk7MTEwNCAxMTczIDExQjg7ICMgKOucuTsg65y5OyDhhIThhbPhhrg7IOucuTsg4YSE4YWz4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBEREVVQgorQjczQTtCNzNBOzExMDQgMTE3MyAxMUI5O0I3M0E7MTEwNCAxMTczIDExQjk7ICMgKOucujsg65y6OyDhhIThhbPhhrk7IOucujsg4YSE4YWz4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBEREVVQlMKK0I3M0I7QjczQjsxMTA0IDExNzMgMTFCQTtCNzNCOzExMDQgMTE3MyAxMUJBOyAjICjrnLs7IOucuzsg4YSE4YWz4Ya6OyDrnLs7IOGEhOGFs+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgRERFVVMKK0I3M0M7QjczQzsxMTA0IDExNzMgMTFCQjtCNzNDOzExMDQgMTE3MyAxMUJCOyAjICjrnLw7IOucvDsg4YSE4YWz4Ya7OyDrnLw7IOGEhOGFs+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgRERFVVNTCitCNzNEO0I3M0Q7MTEwNCAxMTczIDExQkM7QjczRDsxMTA0IDExNzMgMTFCQzsgIyAo65y9OyDrnL07IOGEhOGFs+GGvDsg65y9OyDhhIThhbPhhrw7ICkgSEFOR1VMIFNZTExBQkxFIERERVVORworQjczRTtCNzNFOzExMDQgMTE3MyAxMUJEO0I3M0U7MTEwNCAxMTczIDExQkQ7ICMgKOucvjsg65y+OyDhhIThhbPhhr07IOucvjsg4YSE4YWz4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBEREVVSgorQjczRjtCNzNGOzExMDQgMTE3MyAxMUJFO0I3M0Y7MTEwNCAxMTczIDExQkU7ICMgKOucvzsg65y/OyDhhIThhbPhhr47IOucvzsg4YSE4YWz4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBEREVVQworQjc0MDtCNzQwOzExMDQgMTE3MyAxMUJGO0I3NDA7MTEwNCAxMTczIDExQkY7ICMgKOudgDsg652AOyDhhIThhbPhhr87IOudgDsg4YSE4YWz4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBEREVVSworQjc0MTtCNzQxOzExMDQgMTE3MyAxMUMwO0I3NDE7MTEwNCAxMTczIDExQzA7ICMgKOudgTsg652BOyDhhIThhbPhh4A7IOudgTsg4YSE4YWz4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBEREVVVAorQjc0MjtCNzQyOzExMDQgMTE3MyAxMUMxO0I3NDI7MTEwNCAxMTczIDExQzE7ICMgKOudgjsg652COyDhhIThhbPhh4E7IOudgjsg4YSE4YWz4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBEREVVUAorQjc0MztCNzQzOzExMDQgMTE3MyAxMUMyO0I3NDM7MTEwNCAxMTczIDExQzI7ICMgKOudgzsg652DOyDhhIThhbPhh4I7IOudgzsg4YSE4YWz4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBEREVVSAorQjc0NDtCNzQ0OzExMDQgMTE3NDtCNzQ0OzExMDQgMTE3NDsgIyAo652EOyDrnYQ7IOGEhOGFtDsg652EOyDhhIThhbQ7ICkgSEFOR1VMIFNZTExBQkxFIEREWUkKK0I3NDU7Qjc0NTsxMTA0IDExNzQgMTFBODtCNzQ1OzExMDQgMTE3NCAxMUE4OyAjICjrnYU7IOudhTsg4YSE4YW04YaoOyDrnYU7IOGEhOGFtOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRERZSUcKK0I3NDY7Qjc0NjsxMTA0IDExNzQgMTFBOTtCNzQ2OzExMDQgMTE3NCAxMUE5OyAjICjrnYY7IOudhjsg4YSE4YW04YapOyDrnYY7IOGEhOGFtOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgRERZSUdHCitCNzQ3O0I3NDc7MTEwNCAxMTc0IDExQUE7Qjc0NzsxMTA0IDExNzQgMTFBQTsgIyAo652HOyDrnYc7IOGEhOGFtOGGqjsg652HOyDhhIThhbThhqo7ICkgSEFOR1VMIFNZTExBQkxFIEREWUlHUworQjc0ODtCNzQ4OzExMDQgMTE3NCAxMUFCO0I3NDg7MTEwNCAxMTc0IDExQUI7ICMgKOudiDsg652IOyDhhIThhbThhqs7IOudiDsg4YSE4YW04YarOyApIEhBTkdVTCBTWUxMQUJMRSBERFlJTgorQjc0OTtCNzQ5OzExMDQgMTE3NCAxMUFDO0I3NDk7MTEwNCAxMTc0IDExQUM7ICMgKOudiTsg652JOyDhhIThhbThhqw7IOudiTsg4YSE4YW04YasOyApIEhBTkdVTCBTWUxMQUJMRSBERFlJTkoKK0I3NEE7Qjc0QTsxMTA0IDExNzQgMTFBRDtCNzRBOzExMDQgMTE3NCAxMUFEOyAjICjrnYo7IOudijsg4YSE4YW04YatOyDrnYo7IOGEhOGFtOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRERZSU5ICitCNzRCO0I3NEI7MTEwNCAxMTc0IDExQUU7Qjc0QjsxMTA0IDExNzQgMTFBRTsgIyAo652LOyDrnYs7IOGEhOGFtOGGrjsg652LOyDhhIThhbThhq47ICkgSEFOR1VMIFNZTExBQkxFIEREWUlECitCNzRDO0I3NEM7MTEwNCAxMTc0IDExQUY7Qjc0QzsxMTA0IDExNzQgMTFBRjsgIyAo652MOyDrnYw7IOGEhOGFtOGGrzsg652MOyDhhIThhbThhq87ICkgSEFOR1VMIFNZTExBQkxFIEREWUlMCitCNzREO0I3NEQ7MTEwNCAxMTc0IDExQjA7Qjc0RDsxMTA0IDExNzQgMTFCMDsgIyAo652NOyDrnY07IOGEhOGFtOGGsDsg652NOyDhhIThhbThhrA7ICkgSEFOR1VMIFNZTExBQkxFIEREWUlMRworQjc0RTtCNzRFOzExMDQgMTE3NCAxMUIxO0I3NEU7MTEwNCAxMTc0IDExQjE7ICMgKOudjjsg652OOyDhhIThhbThhrE7IOudjjsg4YSE4YW04YaxOyApIEhBTkdVTCBTWUxMQUJMRSBERFlJTE0KK0I3NEY7Qjc0RjsxMTA0IDExNzQgMTFCMjtCNzRGOzExMDQgMTE3NCAxMUIyOyAjICjrnY87IOudjzsg4YSE4YW04YayOyDrnY87IOGEhOGFtOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgRERZSUxCCitCNzUwO0I3NTA7MTEwNCAxMTc0IDExQjM7Qjc1MDsxMTA0IDExNzQgMTFCMzsgIyAo652QOyDrnZA7IOGEhOGFtOGGszsg652QOyDhhIThhbThhrM7ICkgSEFOR1VMIFNZTExBQkxFIEREWUlMUworQjc1MTtCNzUxOzExMDQgMTE3NCAxMUI0O0I3NTE7MTEwNCAxMTc0IDExQjQ7ICMgKOudkTsg652ROyDhhIThhbThhrQ7IOudkTsg4YSE4YW04Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBERFlJTFQKK0I3NTI7Qjc1MjsxMTA0IDExNzQgMTFCNTtCNzUyOzExMDQgMTE3NCAxMUI1OyAjICjrnZI7IOudkjsg4YSE4YW04Ya1OyDrnZI7IOGEhOGFtOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgRERZSUxQCitCNzUzO0I3NTM7MTEwNCAxMTc0IDExQjY7Qjc1MzsxMTA0IDExNzQgMTFCNjsgIyAo652TOyDrnZM7IOGEhOGFtOGGtjsg652TOyDhhIThhbThhrY7ICkgSEFOR1VMIFNZTExBQkxFIEREWUlMSAorQjc1NDtCNzU0OzExMDQgMTE3NCAxMUI3O0I3NTQ7MTEwNCAxMTc0IDExQjc7ICMgKOudlDsg652UOyDhhIThhbThhrc7IOudlDsg4YSE4YW04Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBERFlJTQorQjc1NTtCNzU1OzExMDQgMTE3NCAxMUI4O0I3NTU7MTEwNCAxMTc0IDExQjg7ICMgKOudlTsg652VOyDhhIThhbThhrg7IOudlTsg4YSE4YW04Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBERFlJQgorQjc1NjtCNzU2OzExMDQgMTE3NCAxMUI5O0I3NTY7MTEwNCAxMTc0IDExQjk7ICMgKOudljsg652WOyDhhIThhbThhrk7IOudljsg4YSE4YW04Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBERFlJQlMKK0I3NTc7Qjc1NzsxMTA0IDExNzQgMTFCQTtCNzU3OzExMDQgMTE3NCAxMUJBOyAjICjrnZc7IOudlzsg4YSE4YW04Ya6OyDrnZc7IOGEhOGFtOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgRERZSVMKK0I3NTg7Qjc1ODsxMTA0IDExNzQgMTFCQjtCNzU4OzExMDQgMTE3NCAxMUJCOyAjICjrnZg7IOudmDsg4YSE4YW04Ya7OyDrnZg7IOGEhOGFtOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgRERZSVNTCitCNzU5O0I3NTk7MTEwNCAxMTc0IDExQkM7Qjc1OTsxMTA0IDExNzQgMTFCQzsgIyAo652ZOyDrnZk7IOGEhOGFtOGGvDsg652ZOyDhhIThhbThhrw7ICkgSEFOR1VMIFNZTExBQkxFIEREWUlORworQjc1QTtCNzVBOzExMDQgMTE3NCAxMUJEO0I3NUE7MTEwNCAxMTc0IDExQkQ7ICMgKOudmjsg652aOyDhhIThhbThhr07IOudmjsg4YSE4YW04Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBERFlJSgorQjc1QjtCNzVCOzExMDQgMTE3NCAxMUJFO0I3NUI7MTEwNCAxMTc0IDExQkU7ICMgKOudmzsg652bOyDhhIThhbThhr47IOudmzsg4YSE4YW04Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBERFlJQworQjc1QztCNzVDOzExMDQgMTE3NCAxMUJGO0I3NUM7MTEwNCAxMTc0IDExQkY7ICMgKOudnDsg652cOyDhhIThhbThhr87IOudnDsg4YSE4YW04Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBERFlJSworQjc1RDtCNzVEOzExMDQgMTE3NCAxMUMwO0I3NUQ7MTEwNCAxMTc0IDExQzA7ICMgKOudnTsg652dOyDhhIThhbThh4A7IOudnTsg4YSE4YW04YeAOyApIEhBTkdVTCBTWUxMQUJMRSBERFlJVAorQjc1RTtCNzVFOzExMDQgMTE3NCAxMUMxO0I3NUU7MTEwNCAxMTc0IDExQzE7ICMgKOudnjsg652eOyDhhIThhbThh4E7IOudnjsg4YSE4YW04YeBOyApIEhBTkdVTCBTWUxMQUJMRSBERFlJUAorQjc1RjtCNzVGOzExMDQgMTE3NCAxMUMyO0I3NUY7MTEwNCAxMTc0IDExQzI7ICMgKOudnzsg652fOyDhhIThhbThh4I7IOudnzsg4YSE4YW04YeCOyApIEhBTkdVTCBTWUxMQUJMRSBERFlJSAorQjc2MDtCNzYwOzExMDQgMTE3NTtCNzYwOzExMDQgMTE3NTsgIyAo652gOyDrnaA7IOGEhOGFtTsg652gOyDhhIThhbU7ICkgSEFOR1VMIFNZTExBQkxFIERESQorQjc2MTtCNzYxOzExMDQgMTE3NSAxMUE4O0I3NjE7MTEwNCAxMTc1IDExQTg7ICMgKOudoTsg652hOyDhhIThhbXhhqg7IOudoTsg4YSE4YW14YaoOyApIEhBTkdVTCBTWUxMQUJMRSBERElHCitCNzYyO0I3NjI7MTEwNCAxMTc1IDExQTk7Qjc2MjsxMTA0IDExNzUgMTFBOTsgIyAo652iOyDrnaI7IOGEhOGFteGGqTsg652iOyDhhIThhbXhhqk7ICkgSEFOR1VMIFNZTExBQkxFIERESUdHCitCNzYzO0I3NjM7MTEwNCAxMTc1IDExQUE7Qjc2MzsxMTA0IDExNzUgMTFBQTsgIyAo652jOyDrnaM7IOGEhOGFteGGqjsg652jOyDhhIThhbXhhqo7ICkgSEFOR1VMIFNZTExBQkxFIERESUdTCitCNzY0O0I3NjQ7MTEwNCAxMTc1IDExQUI7Qjc2NDsxMTA0IDExNzUgMTFBQjsgIyAo652kOyDrnaQ7IOGEhOGFteGGqzsg652kOyDhhIThhbXhhqs7ICkgSEFOR1VMIFNZTExBQkxFIERESU4KK0I3NjU7Qjc2NTsxMTA0IDExNzUgMTFBQztCNzY1OzExMDQgMTE3NSAxMUFDOyAjICjrnaU7IOudpTsg4YSE4YW14YasOyDrnaU7IOGEhOGFteGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgRERJTkoKK0I3NjY7Qjc2NjsxMTA0IDExNzUgMTFBRDtCNzY2OzExMDQgMTE3NSAxMUFEOyAjICjrnaY7IOudpjsg4YSE4YW14YatOyDrnaY7IOGEhOGFteGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRERJTkgKK0I3Njc7Qjc2NzsxMTA0IDExNzUgMTFBRTtCNzY3OzExMDQgMTE3NSAxMUFFOyAjICjrnac7IOudpzsg4YSE4YW14YauOyDrnac7IOGEhOGFteGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgRERJRAorQjc2ODtCNzY4OzExMDQgMTE3NSAxMUFGO0I3Njg7MTEwNCAxMTc1IDExQUY7ICMgKOudqDsg652oOyDhhIThhbXhhq87IOudqDsg4YSE4YW14YavOyApIEhBTkdVTCBTWUxMQUJMRSBERElMCitCNzY5O0I3Njk7MTEwNCAxMTc1IDExQjA7Qjc2OTsxMTA0IDExNzUgMTFCMDsgIyAo652pOyDrnak7IOGEhOGFteGGsDsg652pOyDhhIThhbXhhrA7ICkgSEFOR1VMIFNZTExBQkxFIERESUxHCitCNzZBO0I3NkE7MTEwNCAxMTc1IDExQjE7Qjc2QTsxMTA0IDExNzUgMTFCMTsgIyAo652qOyDrnao7IOGEhOGFteGGsTsg652qOyDhhIThhbXhhrE7ICkgSEFOR1VMIFNZTExBQkxFIERESUxNCitCNzZCO0I3NkI7MTEwNCAxMTc1IDExQjI7Qjc2QjsxMTA0IDExNzUgMTFCMjsgIyAo652rOyDrnas7IOGEhOGFteGGsjsg652rOyDhhIThhbXhhrI7ICkgSEFOR1VMIFNZTExBQkxFIERESUxCCitCNzZDO0I3NkM7MTEwNCAxMTc1IDExQjM7Qjc2QzsxMTA0IDExNzUgMTFCMzsgIyAo652sOyDrnaw7IOGEhOGFteGGszsg652sOyDhhIThhbXhhrM7ICkgSEFOR1VMIFNZTExBQkxFIERESUxTCitCNzZEO0I3NkQ7MTEwNCAxMTc1IDExQjQ7Qjc2RDsxMTA0IDExNzUgMTFCNDsgIyAo652tOyDrna07IOGEhOGFteGGtDsg652tOyDhhIThhbXhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIERESUxUCitCNzZFO0I3NkU7MTEwNCAxMTc1IDExQjU7Qjc2RTsxMTA0IDExNzUgMTFCNTsgIyAo652uOyDrna47IOGEhOGFteGGtTsg652uOyDhhIThhbXhhrU7ICkgSEFOR1VMIFNZTExBQkxFIERESUxQCitCNzZGO0I3NkY7MTEwNCAxMTc1IDExQjY7Qjc2RjsxMTA0IDExNzUgMTFCNjsgIyAo652vOyDrna87IOGEhOGFteGGtjsg652vOyDhhIThhbXhhrY7ICkgSEFOR1VMIFNZTExBQkxFIERESUxICitCNzcwO0I3NzA7MTEwNCAxMTc1IDExQjc7Qjc3MDsxMTA0IDExNzUgMTFCNzsgIyAo652wOyDrnbA7IOGEhOGFteGGtzsg652wOyDhhIThhbXhhrc7ICkgSEFOR1VMIFNZTExBQkxFIERESU0KK0I3NzE7Qjc3MTsxMTA0IDExNzUgMTFCODtCNzcxOzExMDQgMTE3NSAxMUI4OyAjICjrnbE7IOudsTsg4YSE4YW14Ya4OyDrnbE7IOGEhOGFteGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgRERJQgorQjc3MjtCNzcyOzExMDQgMTE3NSAxMUI5O0I3NzI7MTEwNCAxMTc1IDExQjk7ICMgKOudsjsg652yOyDhhIThhbXhhrk7IOudsjsg4YSE4YW14Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBERElCUworQjc3MztCNzczOzExMDQgMTE3NSAxMUJBO0I3NzM7MTEwNCAxMTc1IDExQkE7ICMgKOudszsg652zOyDhhIThhbXhhro7IOudszsg4YSE4YW14Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBERElTCitCNzc0O0I3NzQ7MTEwNCAxMTc1IDExQkI7Qjc3NDsxMTA0IDExNzUgMTFCQjsgIyAo6520OyDrnbQ7IOGEhOGFteGGuzsg6520OyDhhIThhbXhhrs7ICkgSEFOR1VMIFNZTExBQkxFIERESVNTCitCNzc1O0I3NzU7MTEwNCAxMTc1IDExQkM7Qjc3NTsxMTA0IDExNzUgMTFCQzsgIyAo6521OyDrnbU7IOGEhOGFteGGvDsg6521OyDhhIThhbXhhrw7ICkgSEFOR1VMIFNZTExBQkxFIERESU5HCitCNzc2O0I3NzY7MTEwNCAxMTc1IDExQkQ7Qjc3NjsxMTA0IDExNzUgMTFCRDsgIyAo6522OyDrnbY7IOGEhOGFteGGvTsg6522OyDhhIThhbXhhr07ICkgSEFOR1VMIFNZTExBQkxFIERESUoKK0I3Nzc7Qjc3NzsxMTA0IDExNzUgMTFCRTtCNzc3OzExMDQgMTE3NSAxMUJFOyAjICjrnbc7IOudtzsg4YSE4YW14Ya+OyDrnbc7IOGEhOGFteGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgRERJQworQjc3ODtCNzc4OzExMDQgMTE3NSAxMUJGO0I3Nzg7MTEwNCAxMTc1IDExQkY7ICMgKOuduDsg6524OyDhhIThhbXhhr87IOuduDsg4YSE4YW14Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBERElLCitCNzc5O0I3Nzk7MTEwNCAxMTc1IDExQzA7Qjc3OTsxMTA0IDExNzUgMTFDMDsgIyAo6525OyDrnbk7IOGEhOGFteGHgDsg6525OyDhhIThhbXhh4A7ICkgSEFOR1VMIFNZTExBQkxFIERESVQKK0I3N0E7Qjc3QTsxMTA0IDExNzUgMTFDMTtCNzdBOzExMDQgMTE3NSAxMUMxOyAjICjrnbo7IOudujsg4YSE4YW14YeBOyDrnbo7IOGEhOGFteGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgRERJUAorQjc3QjtCNzdCOzExMDQgMTE3NSAxMUMyO0I3N0I7MTEwNCAxMTc1IDExQzI7ICMgKOuduzsg6527OyDhhIThhbXhh4I7IOuduzsg4YSE4YW14YeCOyApIEhBTkdVTCBTWUxMQUJMRSBERElICitCNzdDO0I3N0M7MTEwNSAxMTYxO0I3N0M7MTEwNSAxMTYxOyAjICjrnbw7IOudvDsg4YSF4YWhOyDrnbw7IOGEheGFoTsgKSBIQU5HVUwgU1lMTEFCTEUgUkEKK0I3N0Q7Qjc3RDsxMTA1IDExNjEgMTFBODtCNzdEOzExMDUgMTE2MSAxMUE4OyAjICjrnb07IOudvTsg4YSF4YWh4YaoOyDrnb07IOGEheGFoeGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgUkFHCitCNzdFO0I3N0U7MTEwNSAxMTYxIDExQTk7Qjc3RTsxMTA1IDExNjEgMTFBOTsgIyAo652+OyDrnb47IOGEheGFoeGGqTsg652+OyDhhIXhhaHhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFJBR0cKK0I3N0Y7Qjc3RjsxMTA1IDExNjEgMTFBQTtCNzdGOzExMDUgMTE2MSAxMUFBOyAjICjrnb87IOudvzsg4YSF4YWh4YaqOyDrnb87IOGEheGFoeGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgUkFHUworQjc4MDtCNzgwOzExMDUgMTE2MSAxMUFCO0I3ODA7MTEwNSAxMTYxIDExQUI7ICMgKOuegDsg656AOyDhhIXhhaHhhqs7IOuegDsg4YSF4YWh4YarOyApIEhBTkdVTCBTWUxMQUJMRSBSQU4KK0I3ODE7Qjc4MTsxMTA1IDExNjEgMTFBQztCNzgxOzExMDUgMTE2MSAxMUFDOyAjICjrnoE7IOuegTsg4YSF4YWh4YasOyDrnoE7IOGEheGFoeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgUkFOSgorQjc4MjtCNzgyOzExMDUgMTE2MSAxMUFEO0I3ODI7MTEwNSAxMTYxIDExQUQ7ICMgKOuegjsg656COyDhhIXhhaHhhq07IOuegjsg4YSF4YWh4YatOyApIEhBTkdVTCBTWUxMQUJMRSBSQU5ICitCNzgzO0I3ODM7MTEwNSAxMTYxIDExQUU7Qjc4MzsxMTA1IDExNjEgMTFBRTsgIyAo656DOyDrnoM7IOGEheGFoeGGrjsg656DOyDhhIXhhaHhhq47ICkgSEFOR1VMIFNZTExBQkxFIFJBRAorQjc4NDtCNzg0OzExMDUgMTE2MSAxMUFGO0I3ODQ7MTEwNSAxMTYxIDExQUY7ICMgKOuehDsg656EOyDhhIXhhaHhhq87IOuehDsg4YSF4YWh4YavOyApIEhBTkdVTCBTWUxMQUJMRSBSQUwKK0I3ODU7Qjc4NTsxMTA1IDExNjEgMTFCMDtCNzg1OzExMDUgMTE2MSAxMUIwOyAjICjrnoU7IOuehTsg4YSF4YWh4YawOyDrnoU7IOGEheGFoeGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgUkFMRworQjc4NjtCNzg2OzExMDUgMTE2MSAxMUIxO0I3ODY7MTEwNSAxMTYxIDExQjE7ICMgKOuehjsg656GOyDhhIXhhaHhhrE7IOuehjsg4YSF4YWh4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBSQUxNCitCNzg3O0I3ODc7MTEwNSAxMTYxIDExQjI7Qjc4NzsxMTA1IDExNjEgMTFCMjsgIyAo656HOyDrnoc7IOGEheGFoeGGsjsg656HOyDhhIXhhaHhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFJBTEIKK0I3ODg7Qjc4ODsxMTA1IDExNjEgMTFCMztCNzg4OzExMDUgMTE2MSAxMUIzOyAjICjrnog7IOueiDsg4YSF4YWh4YazOyDrnog7IOGEheGFoeGGszsgKSBIQU5HVUwgU1lMTEFCTEUgUkFMUworQjc4OTtCNzg5OzExMDUgMTE2MSAxMUI0O0I3ODk7MTEwNSAxMTYxIDExQjQ7ICMgKOueiTsg656JOyDhhIXhhaHhhrQ7IOueiTsg4YSF4YWh4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBSQUxUCitCNzhBO0I3OEE7MTEwNSAxMTYxIDExQjU7Qjc4QTsxMTA1IDExNjEgMTFCNTsgIyAo656KOyDrnoo7IOGEheGFoeGGtTsg656KOyDhhIXhhaHhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFJBTFAKK0I3OEI7Qjc4QjsxMTA1IDExNjEgMTFCNjtCNzhCOzExMDUgMTE2MSAxMUI2OyAjICjrnos7IOueizsg4YSF4YWh4Ya2OyDrnos7IOGEheGFoeGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgUkFMSAorQjc4QztCNzhDOzExMDUgMTE2MSAxMUI3O0I3OEM7MTEwNSAxMTYxIDExQjc7ICMgKOuejDsg656MOyDhhIXhhaHhhrc7IOuejDsg4YSF4YWh4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBSQU0KK0I3OEQ7Qjc4RDsxMTA1IDExNjEgMTFCODtCNzhEOzExMDUgMTE2MSAxMUI4OyAjICjrno07IOuejTsg4YSF4YWh4Ya4OyDrno07IOGEheGFoeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgUkFCCitCNzhFO0I3OEU7MTEwNSAxMTYxIDExQjk7Qjc4RTsxMTA1IDExNjEgMTFCOTsgIyAo656OOyDrno47IOGEheGFoeGGuTsg656OOyDhhIXhhaHhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFJBQlMKK0I3OEY7Qjc4RjsxMTA1IDExNjEgMTFCQTtCNzhGOzExMDUgMTE2MSAxMUJBOyAjICjrno87IOuejzsg4YSF4YWh4Ya6OyDrno87IOGEheGFoeGGujsgKSBIQU5HVUwgU1lMTEFCTEUgUkFTCitCNzkwO0I3OTA7MTEwNSAxMTYxIDExQkI7Qjc5MDsxMTA1IDExNjEgMTFCQjsgIyAo656QOyDrnpA7IOGEheGFoeGGuzsg656QOyDhhIXhhaHhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFJBU1MKK0I3OTE7Qjc5MTsxMTA1IDExNjEgMTFCQztCNzkxOzExMDUgMTE2MSAxMUJDOyAjICjrnpE7IOuekTsg4YSF4YWh4Ya8OyDrnpE7IOGEheGFoeGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgUkFORworQjc5MjtCNzkyOzExMDUgMTE2MSAxMUJEO0I3OTI7MTEwNSAxMTYxIDExQkQ7ICMgKOuekjsg656SOyDhhIXhhaHhhr07IOuekjsg4YSF4YWh4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBSQUoKK0I3OTM7Qjc5MzsxMTA1IDExNjEgMTFCRTtCNzkzOzExMDUgMTE2MSAxMUJFOyAjICjrnpM7IOuekzsg4YSF4YWh4Ya+OyDrnpM7IOGEheGFoeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgUkFDCitCNzk0O0I3OTQ7MTEwNSAxMTYxIDExQkY7Qjc5NDsxMTA1IDExNjEgMTFCRjsgIyAo656UOyDrnpQ7IOGEheGFoeGGvzsg656UOyDhhIXhhaHhhr87ICkgSEFOR1VMIFNZTExBQkxFIFJBSworQjc5NTtCNzk1OzExMDUgMTE2MSAxMUMwO0I3OTU7MTEwNSAxMTYxIDExQzA7ICMgKOuelTsg656VOyDhhIXhhaHhh4A7IOuelTsg4YSF4YWh4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBSQVQKK0I3OTY7Qjc5NjsxMTA1IDExNjEgMTFDMTtCNzk2OzExMDUgMTE2MSAxMUMxOyAjICjrnpY7IOueljsg4YSF4YWh4YeBOyDrnpY7IOGEheGFoeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgUkFQCitCNzk3O0I3OTc7MTEwNSAxMTYxIDExQzI7Qjc5NzsxMTA1IDExNjEgMTFDMjsgIyAo656XOyDrnpc7IOGEheGFoeGHgjsg656XOyDhhIXhhaHhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFJBSAorQjc5ODtCNzk4OzExMDUgMTE2MjtCNzk4OzExMDUgMTE2MjsgIyAo656YOyDrnpg7IOGEheGFojsg656YOyDhhIXhhaI7ICkgSEFOR1VMIFNZTExBQkxFIFJBRQorQjc5OTtCNzk5OzExMDUgMTE2MiAxMUE4O0I3OTk7MTEwNSAxMTYyIDExQTg7ICMgKOuemTsg656ZOyDhhIXhhaLhhqg7IOuemTsg4YSF4YWi4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBSQUVHCitCNzlBO0I3OUE7MTEwNSAxMTYyIDExQTk7Qjc5QTsxMTA1IDExNjIgMTFBOTsgIyAo656aOyDrnpo7IOGEheGFouGGqTsg656aOyDhhIXhhaLhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFJBRUdHCitCNzlCO0I3OUI7MTEwNSAxMTYyIDExQUE7Qjc5QjsxMTA1IDExNjIgMTFBQTsgIyAo656bOyDrnps7IOGEheGFouGGqjsg656bOyDhhIXhhaLhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFJBRUdTCitCNzlDO0I3OUM7MTEwNSAxMTYyIDExQUI7Qjc5QzsxMTA1IDExNjIgMTFBQjsgIyAo656cOyDrnpw7IOGEheGFouGGqzsg656cOyDhhIXhhaLhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFJBRU4KK0I3OUQ7Qjc5RDsxMTA1IDExNjIgMTFBQztCNzlEOzExMDUgMTE2MiAxMUFDOyAjICjrnp07IOuenTsg4YSF4YWi4YasOyDrnp07IOGEheGFouGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgUkFFTkoKK0I3OUU7Qjc5RTsxMTA1IDExNjIgMTFBRDtCNzlFOzExMDUgMTE2MiAxMUFEOyAjICjrnp47IOuenjsg4YSF4YWi4YatOyDrnp47IOGEheGFouGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgUkFFTkgKK0I3OUY7Qjc5RjsxMTA1IDExNjIgMTFBRTtCNzlGOzExMDUgMTE2MiAxMUFFOyAjICjrnp87IOuenzsg4YSF4YWi4YauOyDrnp87IOGEheGFouGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgUkFFRAorQjdBMDtCN0EwOzExMDUgMTE2MiAxMUFGO0I3QTA7MTEwNSAxMTYyIDExQUY7ICMgKOueoDsg656gOyDhhIXhhaLhhq87IOueoDsg4YSF4YWi4YavOyApIEhBTkdVTCBTWUxMQUJMRSBSQUVMCitCN0ExO0I3QTE7MTEwNSAxMTYyIDExQjA7QjdBMTsxMTA1IDExNjIgMTFCMDsgIyAo656hOyDrnqE7IOGEheGFouGGsDsg656hOyDhhIXhhaLhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFJBRUxHCitCN0EyO0I3QTI7MTEwNSAxMTYyIDExQjE7QjdBMjsxMTA1IDExNjIgMTFCMTsgIyAo656iOyDrnqI7IOGEheGFouGGsTsg656iOyDhhIXhhaLhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFJBRUxNCitCN0EzO0I3QTM7MTEwNSAxMTYyIDExQjI7QjdBMzsxMTA1IDExNjIgMTFCMjsgIyAo656jOyDrnqM7IOGEheGFouGGsjsg656jOyDhhIXhhaLhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFJBRUxCCitCN0E0O0I3QTQ7MTEwNSAxMTYyIDExQjM7QjdBNDsxMTA1IDExNjIgMTFCMzsgIyAo656kOyDrnqQ7IOGEheGFouGGszsg656kOyDhhIXhhaLhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFJBRUxTCitCN0E1O0I3QTU7MTEwNSAxMTYyIDExQjQ7QjdBNTsxMTA1IDExNjIgMTFCNDsgIyAo656lOyDrnqU7IOGEheGFouGGtDsg656lOyDhhIXhhaLhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFJBRUxUCitCN0E2O0I3QTY7MTEwNSAxMTYyIDExQjU7QjdBNjsxMTA1IDExNjIgMTFCNTsgIyAo656mOyDrnqY7IOGEheGFouGGtTsg656mOyDhhIXhhaLhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFJBRUxQCitCN0E3O0I3QTc7MTEwNSAxMTYyIDExQjY7QjdBNzsxMTA1IDExNjIgMTFCNjsgIyAo656nOyDrnqc7IOGEheGFouGGtjsg656nOyDhhIXhhaLhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFJBRUxICitCN0E4O0I3QTg7MTEwNSAxMTYyIDExQjc7QjdBODsxMTA1IDExNjIgMTFCNzsgIyAo656oOyDrnqg7IOGEheGFouGGtzsg656oOyDhhIXhhaLhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFJBRU0KK0I3QTk7QjdBOTsxMTA1IDExNjIgMTFCODtCN0E5OzExMDUgMTE2MiAxMUI4OyAjICjrnqk7IOueqTsg4YSF4YWi4Ya4OyDrnqk7IOGEheGFouGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgUkFFQgorQjdBQTtCN0FBOzExMDUgMTE2MiAxMUI5O0I3QUE7MTEwNSAxMTYyIDExQjk7ICMgKOueqjsg656qOyDhhIXhhaLhhrk7IOueqjsg4YSF4YWi4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBSQUVCUworQjdBQjtCN0FCOzExMDUgMTE2MiAxMUJBO0I3QUI7MTEwNSAxMTYyIDExQkE7ICMgKOueqzsg656rOyDhhIXhhaLhhro7IOueqzsg4YSF4YWi4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBSQUVTCitCN0FDO0I3QUM7MTEwNSAxMTYyIDExQkI7QjdBQzsxMTA1IDExNjIgMTFCQjsgIyAo656sOyDrnqw7IOGEheGFouGGuzsg656sOyDhhIXhhaLhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFJBRVNTCitCN0FEO0I3QUQ7MTEwNSAxMTYyIDExQkM7QjdBRDsxMTA1IDExNjIgMTFCQzsgIyAo656tOyDrnq07IOGEheGFouGGvDsg656tOyDhhIXhhaLhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFJBRU5HCitCN0FFO0I3QUU7MTEwNSAxMTYyIDExQkQ7QjdBRTsxMTA1IDExNjIgMTFCRDsgIyAo656uOyDrnq47IOGEheGFouGGvTsg656uOyDhhIXhhaLhhr07ICkgSEFOR1VMIFNZTExBQkxFIFJBRUoKK0I3QUY7QjdBRjsxMTA1IDExNjIgMTFCRTtCN0FGOzExMDUgMTE2MiAxMUJFOyAjICjrnq87IOuerzsg4YSF4YWi4Ya+OyDrnq87IOGEheGFouGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgUkFFQworQjdCMDtCN0IwOzExMDUgMTE2MiAxMUJGO0I3QjA7MTEwNSAxMTYyIDExQkY7ICMgKOuesDsg656wOyDhhIXhhaLhhr87IOuesDsg4YSF4YWi4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBSQUVLCitCN0IxO0I3QjE7MTEwNSAxMTYyIDExQzA7QjdCMTsxMTA1IDExNjIgMTFDMDsgIyAo656xOyDrnrE7IOGEheGFouGHgDsg656xOyDhhIXhhaLhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFJBRVQKK0I3QjI7QjdCMjsxMTA1IDExNjIgMTFDMTtCN0IyOzExMDUgMTE2MiAxMUMxOyAjICjrnrI7IOuesjsg4YSF4YWi4YeBOyDrnrI7IOGEheGFouGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgUkFFUAorQjdCMztCN0IzOzExMDUgMTE2MiAxMUMyO0I3QjM7MTEwNSAxMTYyIDExQzI7ICMgKOueszsg656zOyDhhIXhhaLhh4I7IOueszsg4YSF4YWi4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBSQUVICitCN0I0O0I3QjQ7MTEwNSAxMTYzO0I3QjQ7MTEwNSAxMTYzOyAjICjrnrQ7IOuetDsg4YSF4YWjOyDrnrQ7IOGEheGFozsgKSBIQU5HVUwgU1lMTEFCTEUgUllBCitCN0I1O0I3QjU7MTEwNSAxMTYzIDExQTg7QjdCNTsxMTA1IDExNjMgMTFBODsgIyAo6561OyDrnrU7IOGEheGFo+GGqDsg6561OyDhhIXhhaPhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFJZQUcKK0I3QjY7QjdCNjsxMTA1IDExNjMgMTFBOTtCN0I2OzExMDUgMTE2MyAxMUE5OyAjICjrnrY7IOuetjsg4YSF4YWj4YapOyDrnrY7IOGEheGFo+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgUllBR0cKK0I3Qjc7QjdCNzsxMTA1IDExNjMgMTFBQTtCN0I3OzExMDUgMTE2MyAxMUFBOyAjICjrnrc7IOuetzsg4YSF4YWj4YaqOyDrnrc7IOGEheGFo+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgUllBR1MKK0I3Qjg7QjdCODsxMTA1IDExNjMgMTFBQjtCN0I4OzExMDUgMTE2MyAxMUFCOyAjICjrnrg7IOueuDsg4YSF4YWj4YarOyDrnrg7IOGEheGFo+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgUllBTgorQjdCOTtCN0I5OzExMDUgMTE2MyAxMUFDO0I3Qjk7MTEwNSAxMTYzIDExQUM7ICMgKOueuTsg6565OyDhhIXhhaPhhqw7IOueuTsg4YSF4YWj4YasOyApIEhBTkdVTCBTWUxMQUJMRSBSWUFOSgorQjdCQTtCN0JBOzExMDUgMTE2MyAxMUFEO0I3QkE7MTEwNSAxMTYzIDExQUQ7ICMgKOueujsg6566OyDhhIXhhaPhhq07IOueujsg4YSF4YWj4YatOyApIEhBTkdVTCBTWUxMQUJMRSBSWUFOSAorQjdCQjtCN0JCOzExMDUgMTE2MyAxMUFFO0I3QkI7MTEwNSAxMTYzIDExQUU7ICMgKOueuzsg6567OyDhhIXhhaPhhq47IOueuzsg4YSF4YWj4YauOyApIEhBTkdVTCBTWUxMQUJMRSBSWUFECitCN0JDO0I3QkM7MTEwNSAxMTYzIDExQUY7QjdCQzsxMTA1IDExNjMgMTFBRjsgIyAo6568OyDrnrw7IOGEheGFo+GGrzsg6568OyDhhIXhhaPhhq87ICkgSEFOR1VMIFNZTExBQkxFIFJZQUwKK0I3QkQ7QjdCRDsxMTA1IDExNjMgMTFCMDtCN0JEOzExMDUgMTE2MyAxMUIwOyAjICjrnr07IOuevTsg4YSF4YWj4YawOyDrnr07IOGEheGFo+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgUllBTEcKK0I3QkU7QjdCRTsxMTA1IDExNjMgMTFCMTtCN0JFOzExMDUgMTE2MyAxMUIxOyAjICjrnr47IOuevjsg4YSF4YWj4YaxOyDrnr47IOGEheGFo+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgUllBTE0KK0I3QkY7QjdCRjsxMTA1IDExNjMgMTFCMjtCN0JGOzExMDUgMTE2MyAxMUIyOyAjICjrnr87IOuevzsg4YSF4YWj4YayOyDrnr87IOGEheGFo+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgUllBTEIKK0I3QzA7QjdDMDsxMTA1IDExNjMgMTFCMztCN0MwOzExMDUgMTE2MyAxMUIzOyAjICjrn4A7IOufgDsg4YSF4YWj4YazOyDrn4A7IOGEheGFo+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgUllBTFMKK0I3QzE7QjdDMTsxMTA1IDExNjMgMTFCNDtCN0MxOzExMDUgMTE2MyAxMUI0OyAjICjrn4E7IOufgTsg4YSF4YWj4Ya0OyDrn4E7IOGEheGFo+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgUllBTFQKK0I3QzI7QjdDMjsxMTA1IDExNjMgMTFCNTtCN0MyOzExMDUgMTE2MyAxMUI1OyAjICjrn4I7IOufgjsg4YSF4YWj4Ya1OyDrn4I7IOGEheGFo+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgUllBTFAKK0I3QzM7QjdDMzsxMTA1IDExNjMgMTFCNjtCN0MzOzExMDUgMTE2MyAxMUI2OyAjICjrn4M7IOufgzsg4YSF4YWj4Ya2OyDrn4M7IOGEheGFo+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgUllBTEgKK0I3QzQ7QjdDNDsxMTA1IDExNjMgMTFCNztCN0M0OzExMDUgMTE2MyAxMUI3OyAjICjrn4Q7IOufhDsg4YSF4YWj4Ya3OyDrn4Q7IOGEheGFo+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgUllBTQorQjdDNTtCN0M1OzExMDUgMTE2MyAxMUI4O0I3QzU7MTEwNSAxMTYzIDExQjg7ICMgKOufhTsg65+FOyDhhIXhhaPhhrg7IOufhTsg4YSF4YWj4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBSWUFCCitCN0M2O0I3QzY7MTEwNSAxMTYzIDExQjk7QjdDNjsxMTA1IDExNjMgMTFCOTsgIyAo65+GOyDrn4Y7IOGEheGFo+GGuTsg65+GOyDhhIXhhaPhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFJZQUJTCitCN0M3O0I3Qzc7MTEwNSAxMTYzIDExQkE7QjdDNzsxMTA1IDExNjMgMTFCQTsgIyAo65+HOyDrn4c7IOGEheGFo+GGujsg65+HOyDhhIXhhaPhhro7ICkgSEFOR1VMIFNZTExBQkxFIFJZQVMKK0I3Qzg7QjdDODsxMTA1IDExNjMgMTFCQjtCN0M4OzExMDUgMTE2MyAxMUJCOyAjICjrn4g7IOufiDsg4YSF4YWj4Ya7OyDrn4g7IOGEheGFo+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgUllBU1MKK0I3Qzk7QjdDOTsxMTA1IDExNjMgMTFCQztCN0M5OzExMDUgMTE2MyAxMUJDOyAjICjrn4k7IOufiTsg4YSF4YWj4Ya8OyDrn4k7IOGEheGFo+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgUllBTkcKK0I3Q0E7QjdDQTsxMTA1IDExNjMgMTFCRDtCN0NBOzExMDUgMTE2MyAxMUJEOyAjICjrn4o7IOufijsg4YSF4YWj4Ya9OyDrn4o7IOGEheGFo+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgUllBSgorQjdDQjtCN0NCOzExMDUgMTE2MyAxMUJFO0I3Q0I7MTEwNSAxMTYzIDExQkU7ICMgKOufizsg65+LOyDhhIXhhaPhhr47IOufizsg4YSF4YWj4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBSWUFDCitCN0NDO0I3Q0M7MTEwNSAxMTYzIDExQkY7QjdDQzsxMTA1IDExNjMgMTFCRjsgIyAo65+MOyDrn4w7IOGEheGFo+GGvzsg65+MOyDhhIXhhaPhhr87ICkgSEFOR1VMIFNZTExBQkxFIFJZQUsKK0I3Q0Q7QjdDRDsxMTA1IDExNjMgMTFDMDtCN0NEOzExMDUgMTE2MyAxMUMwOyAjICjrn407IOufjTsg4YSF4YWj4YeAOyDrn407IOGEheGFo+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgUllBVAorQjdDRTtCN0NFOzExMDUgMTE2MyAxMUMxO0I3Q0U7MTEwNSAxMTYzIDExQzE7ICMgKOufjjsg65+OOyDhhIXhhaPhh4E7IOufjjsg4YSF4YWj4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBSWUFQCitCN0NGO0I3Q0Y7MTEwNSAxMTYzIDExQzI7QjdDRjsxMTA1IDExNjMgMTFDMjsgIyAo65+POyDrn487IOGEheGFo+GHgjsg65+POyDhhIXhhaPhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFJZQUgKK0I3RDA7QjdEMDsxMTA1IDExNjQ7QjdEMDsxMTA1IDExNjQ7ICMgKOufkDsg65+QOyDhhIXhhaQ7IOufkDsg4YSF4YWkOyApIEhBTkdVTCBTWUxMQUJMRSBSWUFFCitCN0QxO0I3RDE7MTEwNSAxMTY0IDExQTg7QjdEMTsxMTA1IDExNjQgMTFBODsgIyAo65+ROyDrn5E7IOGEheGFpOGGqDsg65+ROyDhhIXhhaThhqg7ICkgSEFOR1VMIFNZTExBQkxFIFJZQUVHCitCN0QyO0I3RDI7MTEwNSAxMTY0IDExQTk7QjdEMjsxMTA1IDExNjQgMTFBOTsgIyAo65+SOyDrn5I7IOGEheGFpOGGqTsg65+SOyDhhIXhhaThhqk7ICkgSEFOR1VMIFNZTExBQkxFIFJZQUVHRworQjdEMztCN0QzOzExMDUgMTE2NCAxMUFBO0I3RDM7MTEwNSAxMTY0IDExQUE7ICMgKOufkzsg65+TOyDhhIXhhaThhqo7IOufkzsg4YSF4YWk4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBSWUFFR1MKK0I3RDQ7QjdENDsxMTA1IDExNjQgMTFBQjtCN0Q0OzExMDUgMTE2NCAxMUFCOyAjICjrn5Q7IOuflDsg4YSF4YWk4YarOyDrn5Q7IOGEheGFpOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgUllBRU4KK0I3RDU7QjdENTsxMTA1IDExNjQgMTFBQztCN0Q1OzExMDUgMTE2NCAxMUFDOyAjICjrn5U7IOuflTsg4YSF4YWk4YasOyDrn5U7IOGEheGFpOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgUllBRU5KCitCN0Q2O0I3RDY7MTEwNSAxMTY0IDExQUQ7QjdENjsxMTA1IDExNjQgMTFBRDsgIyAo65+WOyDrn5Y7IOGEheGFpOGGrTsg65+WOyDhhIXhhaThhq07ICkgSEFOR1VMIFNZTExBQkxFIFJZQUVOSAorQjdENztCN0Q3OzExMDUgMTE2NCAxMUFFO0I3RDc7MTEwNSAxMTY0IDExQUU7ICMgKOuflzsg65+XOyDhhIXhhaThhq47IOuflzsg4YSF4YWk4YauOyApIEhBTkdVTCBTWUxMQUJMRSBSWUFFRAorQjdEODtCN0Q4OzExMDUgMTE2NCAxMUFGO0I3RDg7MTEwNSAxMTY0IDExQUY7ICMgKOufmDsg65+YOyDhhIXhhaThhq87IOufmDsg4YSF4YWk4YavOyApIEhBTkdVTCBTWUxMQUJMRSBSWUFFTAorQjdEOTtCN0Q5OzExMDUgMTE2NCAxMUIwO0I3RDk7MTEwNSAxMTY0IDExQjA7ICMgKOufmTsg65+ZOyDhhIXhhaThhrA7IOufmTsg4YSF4YWk4YawOyApIEhBTkdVTCBTWUxMQUJMRSBSWUFFTEcKK0I3REE7QjdEQTsxMTA1IDExNjQgMTFCMTtCN0RBOzExMDUgMTE2NCAxMUIxOyAjICjrn5o7IOufmjsg4YSF4YWk4YaxOyDrn5o7IOGEheGFpOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgUllBRUxNCitCN0RCO0I3REI7MTEwNSAxMTY0IDExQjI7QjdEQjsxMTA1IDExNjQgMTFCMjsgIyAo65+bOyDrn5s7IOGEheGFpOGGsjsg65+bOyDhhIXhhaThhrI7ICkgSEFOR1VMIFNZTExBQkxFIFJZQUVMQgorQjdEQztCN0RDOzExMDUgMTE2NCAxMUIzO0I3REM7MTEwNSAxMTY0IDExQjM7ICMgKOufnDsg65+cOyDhhIXhhaThhrM7IOufnDsg4YSF4YWk4YazOyApIEhBTkdVTCBTWUxMQUJMRSBSWUFFTFMKK0I3REQ7QjdERDsxMTA1IDExNjQgMTFCNDtCN0REOzExMDUgMTE2NCAxMUI0OyAjICjrn507IOufnTsg4YSF4YWk4Ya0OyDrn507IOGEheGFpOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgUllBRUxUCitCN0RFO0I3REU7MTEwNSAxMTY0IDExQjU7QjdERTsxMTA1IDExNjQgMTFCNTsgIyAo65+eOyDrn547IOGEheGFpOGGtTsg65+eOyDhhIXhhaThhrU7ICkgSEFOR1VMIFNZTExBQkxFIFJZQUVMUAorQjdERjtCN0RGOzExMDUgMTE2NCAxMUI2O0I3REY7MTEwNSAxMTY0IDExQjY7ICMgKOufnzsg65+fOyDhhIXhhaThhrY7IOufnzsg4YSF4YWk4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBSWUFFTEgKK0I3RTA7QjdFMDsxMTA1IDExNjQgMTFCNztCN0UwOzExMDUgMTE2NCAxMUI3OyAjICjrn6A7IOufoDsg4YSF4YWk4Ya3OyDrn6A7IOGEheGFpOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgUllBRU0KK0I3RTE7QjdFMTsxMTA1IDExNjQgMTFCODtCN0UxOzExMDUgMTE2NCAxMUI4OyAjICjrn6E7IOufoTsg4YSF4YWk4Ya4OyDrn6E7IOGEheGFpOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgUllBRUIKK0I3RTI7QjdFMjsxMTA1IDExNjQgMTFCOTtCN0UyOzExMDUgMTE2NCAxMUI5OyAjICjrn6I7IOufojsg4YSF4YWk4Ya5OyDrn6I7IOGEheGFpOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgUllBRUJTCitCN0UzO0I3RTM7MTEwNSAxMTY0IDExQkE7QjdFMzsxMTA1IDExNjQgMTFCQTsgIyAo65+jOyDrn6M7IOGEheGFpOGGujsg65+jOyDhhIXhhaThhro7ICkgSEFOR1VMIFNZTExBQkxFIFJZQUVTCitCN0U0O0I3RTQ7MTEwNSAxMTY0IDExQkI7QjdFNDsxMTA1IDExNjQgMTFCQjsgIyAo65+kOyDrn6Q7IOGEheGFpOGGuzsg65+kOyDhhIXhhaThhrs7ICkgSEFOR1VMIFNZTExBQkxFIFJZQUVTUworQjdFNTtCN0U1OzExMDUgMTE2NCAxMUJDO0I3RTU7MTEwNSAxMTY0IDExQkM7ICMgKOufpTsg65+lOyDhhIXhhaThhrw7IOufpTsg4YSF4YWk4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBSWUFFTkcKK0I3RTY7QjdFNjsxMTA1IDExNjQgMTFCRDtCN0U2OzExMDUgMTE2NCAxMUJEOyAjICjrn6Y7IOufpjsg4YSF4YWk4Ya9OyDrn6Y7IOGEheGFpOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgUllBRUoKK0I3RTc7QjdFNzsxMTA1IDExNjQgMTFCRTtCN0U3OzExMDUgMTE2NCAxMUJFOyAjICjrn6c7IOufpzsg4YSF4YWk4Ya+OyDrn6c7IOGEheGFpOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgUllBRUMKK0I3RTg7QjdFODsxMTA1IDExNjQgMTFCRjtCN0U4OzExMDUgMTE2NCAxMUJGOyAjICjrn6g7IOufqDsg4YSF4YWk4Ya/OyDrn6g7IOGEheGFpOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgUllBRUsKK0I3RTk7QjdFOTsxMTA1IDExNjQgMTFDMDtCN0U5OzExMDUgMTE2NCAxMUMwOyAjICjrn6k7IOufqTsg4YSF4YWk4YeAOyDrn6k7IOGEheGFpOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgUllBRVQKK0I3RUE7QjdFQTsxMTA1IDExNjQgMTFDMTtCN0VBOzExMDUgMTE2NCAxMUMxOyAjICjrn6o7IOufqjsg4YSF4YWk4YeBOyDrn6o7IOGEheGFpOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgUllBRVAKK0I3RUI7QjdFQjsxMTA1IDExNjQgMTFDMjtCN0VCOzExMDUgMTE2NCAxMUMyOyAjICjrn6s7IOufqzsg4YSF4YWk4YeCOyDrn6s7IOGEheGFpOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgUllBRUgKK0I3RUM7QjdFQzsxMTA1IDExNjU7QjdFQzsxMTA1IDExNjU7ICMgKOufrDsg65+sOyDhhIXhhaU7IOufrDsg4YSF4YWlOyApIEhBTkdVTCBTWUxMQUJMRSBSRU8KK0I3RUQ7QjdFRDsxMTA1IDExNjUgMTFBODtCN0VEOzExMDUgMTE2NSAxMUE4OyAjICjrn607IOufrTsg4YSF4YWl4YaoOyDrn607IOGEheGFpeGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgUkVPRworQjdFRTtCN0VFOzExMDUgMTE2NSAxMUE5O0I3RUU7MTEwNSAxMTY1IDExQTk7ICMgKOufrjsg65+uOyDhhIXhhaXhhqk7IOufrjsg4YSF4YWl4YapOyApIEhBTkdVTCBTWUxMQUJMRSBSRU9HRworQjdFRjtCN0VGOzExMDUgMTE2NSAxMUFBO0I3RUY7MTEwNSAxMTY1IDExQUE7ICMgKOufrzsg65+vOyDhhIXhhaXhhqo7IOufrzsg4YSF4YWl4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBSRU9HUworQjdGMDtCN0YwOzExMDUgMTE2NSAxMUFCO0I3RjA7MTEwNSAxMTY1IDExQUI7ICMgKOufsDsg65+wOyDhhIXhhaXhhqs7IOufsDsg4YSF4YWl4YarOyApIEhBTkdVTCBTWUxMQUJMRSBSRU9OCitCN0YxO0I3RjE7MTEwNSAxMTY1IDExQUM7QjdGMTsxMTA1IDExNjUgMTFBQzsgIyAo65+xOyDrn7E7IOGEheGFpeGGrDsg65+xOyDhhIXhhaXhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFJFT05KCitCN0YyO0I3RjI7MTEwNSAxMTY1IDExQUQ7QjdGMjsxMTA1IDExNjUgMTFBRDsgIyAo65+yOyDrn7I7IOGEheGFpeGGrTsg65+yOyDhhIXhhaXhhq07ICkgSEFOR1VMIFNZTExBQkxFIFJFT05ICitCN0YzO0I3RjM7MTEwNSAxMTY1IDExQUU7QjdGMzsxMTA1IDExNjUgMTFBRTsgIyAo65+zOyDrn7M7IOGEheGFpeGGrjsg65+zOyDhhIXhhaXhhq47ICkgSEFOR1VMIFNZTExBQkxFIFJFT0QKK0I3RjQ7QjdGNDsxMTA1IDExNjUgMTFBRjtCN0Y0OzExMDUgMTE2NSAxMUFGOyAjICjrn7Q7IOuftDsg4YSF4YWl4YavOyDrn7Q7IOGEheGFpeGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgUkVPTAorQjdGNTtCN0Y1OzExMDUgMTE2NSAxMUIwO0I3RjU7MTEwNSAxMTY1IDExQjA7ICMgKOuftTsg65+1OyDhhIXhhaXhhrA7IOuftTsg4YSF4YWl4YawOyApIEhBTkdVTCBTWUxMQUJMRSBSRU9MRworQjdGNjtCN0Y2OzExMDUgMTE2NSAxMUIxO0I3RjY7MTEwNSAxMTY1IDExQjE7ICMgKOuftjsg65+2OyDhhIXhhaXhhrE7IOuftjsg4YSF4YWl4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBSRU9MTQorQjdGNztCN0Y3OzExMDUgMTE2NSAxMUIyO0I3Rjc7MTEwNSAxMTY1IDExQjI7ICMgKOuftzsg65+3OyDhhIXhhaXhhrI7IOuftzsg4YSF4YWl4YayOyApIEhBTkdVTCBTWUxMQUJMRSBSRU9MQgorQjdGODtCN0Y4OzExMDUgMTE2NSAxMUIzO0I3Rjg7MTEwNSAxMTY1IDExQjM7ICMgKOufuDsg65+4OyDhhIXhhaXhhrM7IOufuDsg4YSF4YWl4YazOyApIEhBTkdVTCBTWUxMQUJMRSBSRU9MUworQjdGOTtCN0Y5OzExMDUgMTE2NSAxMUI0O0I3Rjk7MTEwNSAxMTY1IDExQjQ7ICMgKOufuTsg65+5OyDhhIXhhaXhhrQ7IOufuTsg4YSF4YWl4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBSRU9MVAorQjdGQTtCN0ZBOzExMDUgMTE2NSAxMUI1O0I3RkE7MTEwNSAxMTY1IDExQjU7ICMgKOufujsg65+6OyDhhIXhhaXhhrU7IOufujsg4YSF4YWl4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBSRU9MUAorQjdGQjtCN0ZCOzExMDUgMTE2NSAxMUI2O0I3RkI7MTEwNSAxMTY1IDExQjY7ICMgKOufuzsg65+7OyDhhIXhhaXhhrY7IOufuzsg4YSF4YWl4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBSRU9MSAorQjdGQztCN0ZDOzExMDUgMTE2NSAxMUI3O0I3RkM7MTEwNSAxMTY1IDExQjc7ICMgKOufvDsg65+8OyDhhIXhhaXhhrc7IOufvDsg4YSF4YWl4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBSRU9NCitCN0ZEO0I3RkQ7MTEwNSAxMTY1IDExQjg7QjdGRDsxMTA1IDExNjUgMTFCODsgIyAo65+9OyDrn707IOGEheGFpeGGuDsg65+9OyDhhIXhhaXhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFJFT0IKK0I3RkU7QjdGRTsxMTA1IDExNjUgMTFCOTtCN0ZFOzExMDUgMTE2NSAxMUI5OyAjICjrn747IOufvjsg4YSF4YWl4Ya5OyDrn747IOGEheGFpeGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgUkVPQlMKK0I3RkY7QjdGRjsxMTA1IDExNjUgMTFCQTtCN0ZGOzExMDUgMTE2NSAxMUJBOyAjICjrn787IOufvzsg4YSF4YWl4Ya6OyDrn787IOGEheGFpeGGujsgKSBIQU5HVUwgU1lMTEFCTEUgUkVPUworQjgwMDtCODAwOzExMDUgMTE2NSAxMUJCO0I4MDA7MTEwNSAxMTY1IDExQkI7ICMgKOuggDsg66CAOyDhhIXhhaXhhrs7IOuggDsg4YSF4YWl4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBSRU9TUworQjgwMTtCODAxOzExMDUgMTE2NSAxMUJDO0I4MDE7MTEwNSAxMTY1IDExQkM7ICMgKOuggTsg66CBOyDhhIXhhaXhhrw7IOuggTsg4YSF4YWl4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBSRU9ORworQjgwMjtCODAyOzExMDUgMTE2NSAxMUJEO0I4MDI7MTEwNSAxMTY1IDExQkQ7ICMgKOuggjsg66CCOyDhhIXhhaXhhr07IOuggjsg4YSF4YWl4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBSRU9KCitCODAzO0I4MDM7MTEwNSAxMTY1IDExQkU7QjgwMzsxMTA1IDExNjUgMTFCRTsgIyAo66CDOyDroIM7IOGEheGFpeGGvjsg66CDOyDhhIXhhaXhhr47ICkgSEFOR1VMIFNZTExBQkxFIFJFT0MKK0I4MDQ7QjgwNDsxMTA1IDExNjUgMTFCRjtCODA0OzExMDUgMTE2NSAxMUJGOyAjICjroIQ7IOughDsg4YSF4YWl4Ya/OyDroIQ7IOGEheGFpeGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgUkVPSworQjgwNTtCODA1OzExMDUgMTE2NSAxMUMwO0I4MDU7MTEwNSAxMTY1IDExQzA7ICMgKOughTsg66CFOyDhhIXhhaXhh4A7IOughTsg4YSF4YWl4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBSRU9UCitCODA2O0I4MDY7MTEwNSAxMTY1IDExQzE7QjgwNjsxMTA1IDExNjUgMTFDMTsgIyAo66CGOyDroIY7IOGEheGFpeGHgTsg66CGOyDhhIXhhaXhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFJFT1AKK0I4MDc7QjgwNzsxMTA1IDExNjUgMTFDMjtCODA3OzExMDUgMTE2NSAxMUMyOyAjICjroIc7IOughzsg4YSF4YWl4YeCOyDroIc7IOGEheGFpeGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgUkVPSAorQjgwODtCODA4OzExMDUgMTE2NjtCODA4OzExMDUgMTE2NjsgIyAo66CIOyDroIg7IOGEheGFpjsg66CIOyDhhIXhhaY7ICkgSEFOR1VMIFNZTExBQkxFIFJFCitCODA5O0I4MDk7MTEwNSAxMTY2IDExQTg7QjgwOTsxMTA1IDExNjYgMTFBODsgIyAo66CJOyDroIk7IOGEheGFpuGGqDsg66CJOyDhhIXhhabhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFJFRworQjgwQTtCODBBOzExMDUgMTE2NiAxMUE5O0I4MEE7MTEwNSAxMTY2IDExQTk7ICMgKOugijsg66CKOyDhhIXhhabhhqk7IOugijsg4YSF4YWm4YapOyApIEhBTkdVTCBTWUxMQUJMRSBSRUdHCitCODBCO0I4MEI7MTEwNSAxMTY2IDExQUE7QjgwQjsxMTA1IDExNjYgMTFBQTsgIyAo66CLOyDroIs7IOGEheGFpuGGqjsg66CLOyDhhIXhhabhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFJFR1MKK0I4MEM7QjgwQzsxMTA1IDExNjYgMTFBQjtCODBDOzExMDUgMTE2NiAxMUFCOyAjICjroIw7IOugjDsg4YSF4YWm4YarOyDroIw7IOGEheGFpuGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgUkVOCitCODBEO0I4MEQ7MTEwNSAxMTY2IDExQUM7QjgwRDsxMTA1IDExNjYgMTFBQzsgIyAo66CNOyDroI07IOGEheGFpuGGrDsg66CNOyDhhIXhhabhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFJFTkoKK0I4MEU7QjgwRTsxMTA1IDExNjYgMTFBRDtCODBFOzExMDUgMTE2NiAxMUFEOyAjICjroI47IOugjjsg4YSF4YWm4YatOyDroI47IOGEheGFpuGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgUkVOSAorQjgwRjtCODBGOzExMDUgMTE2NiAxMUFFO0I4MEY7MTEwNSAxMTY2IDExQUU7ICMgKOugjzsg66CPOyDhhIXhhabhhq47IOugjzsg4YSF4YWm4YauOyApIEhBTkdVTCBTWUxMQUJMRSBSRUQKK0I4MTA7QjgxMDsxMTA1IDExNjYgMTFBRjtCODEwOzExMDUgMTE2NiAxMUFGOyAjICjroJA7IOugkDsg4YSF4YWm4YavOyDroJA7IOGEheGFpuGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgUkVMCitCODExO0I4MTE7MTEwNSAxMTY2IDExQjA7QjgxMTsxMTA1IDExNjYgMTFCMDsgIyAo66CROyDroJE7IOGEheGFpuGGsDsg66CROyDhhIXhhabhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFJFTEcKK0I4MTI7QjgxMjsxMTA1IDExNjYgMTFCMTtCODEyOzExMDUgMTE2NiAxMUIxOyAjICjroJI7IOugkjsg4YSF4YWm4YaxOyDroJI7IOGEheGFpuGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgUkVMTQorQjgxMztCODEzOzExMDUgMTE2NiAxMUIyO0I4MTM7MTEwNSAxMTY2IDExQjI7ICMgKOugkzsg66CTOyDhhIXhhabhhrI7IOugkzsg4YSF4YWm4YayOyApIEhBTkdVTCBTWUxMQUJMRSBSRUxCCitCODE0O0I4MTQ7MTEwNSAxMTY2IDExQjM7QjgxNDsxMTA1IDExNjYgMTFCMzsgIyAo66CUOyDroJQ7IOGEheGFpuGGszsg66CUOyDhhIXhhabhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFJFTFMKK0I4MTU7QjgxNTsxMTA1IDExNjYgMTFCNDtCODE1OzExMDUgMTE2NiAxMUI0OyAjICjroJU7IOuglTsg4YSF4YWm4Ya0OyDroJU7IOGEheGFpuGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgUkVMVAorQjgxNjtCODE2OzExMDUgMTE2NiAxMUI1O0I4MTY7MTEwNSAxMTY2IDExQjU7ICMgKOugljsg66CWOyDhhIXhhabhhrU7IOugljsg4YSF4YWm4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBSRUxQCitCODE3O0I4MTc7MTEwNSAxMTY2IDExQjY7QjgxNzsxMTA1IDExNjYgMTFCNjsgIyAo66CXOyDroJc7IOGEheGFpuGGtjsg66CXOyDhhIXhhabhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFJFTEgKK0I4MTg7QjgxODsxMTA1IDExNjYgMTFCNztCODE4OzExMDUgMTE2NiAxMUI3OyAjICjroJg7IOugmDsg4YSF4YWm4Ya3OyDroJg7IOGEheGFpuGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgUkVNCitCODE5O0I4MTk7MTEwNSAxMTY2IDExQjg7QjgxOTsxMTA1IDExNjYgMTFCODsgIyAo66CZOyDroJk7IOGEheGFpuGGuDsg66CZOyDhhIXhhabhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFJFQgorQjgxQTtCODFBOzExMDUgMTE2NiAxMUI5O0I4MUE7MTEwNSAxMTY2IDExQjk7ICMgKOugmjsg66CaOyDhhIXhhabhhrk7IOugmjsg4YSF4YWm4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBSRUJTCitCODFCO0I4MUI7MTEwNSAxMTY2IDExQkE7QjgxQjsxMTA1IDExNjYgMTFCQTsgIyAo66CbOyDroJs7IOGEheGFpuGGujsg66CbOyDhhIXhhabhhro7ICkgSEFOR1VMIFNZTExBQkxFIFJFUworQjgxQztCODFDOzExMDUgMTE2NiAxMUJCO0I4MUM7MTEwNSAxMTY2IDExQkI7ICMgKOugnDsg66CcOyDhhIXhhabhhrs7IOugnDsg4YSF4YWm4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBSRVNTCitCODFEO0I4MUQ7MTEwNSAxMTY2IDExQkM7QjgxRDsxMTA1IDExNjYgMTFCQzsgIyAo66CdOyDroJ07IOGEheGFpuGGvDsg66CdOyDhhIXhhabhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFJFTkcKK0I4MUU7QjgxRTsxMTA1IDExNjYgMTFCRDtCODFFOzExMDUgMTE2NiAxMUJEOyAjICjroJ47IOugnjsg4YSF4YWm4Ya9OyDroJ47IOGEheGFpuGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgUkVKCitCODFGO0I4MUY7MTEwNSAxMTY2IDExQkU7QjgxRjsxMTA1IDExNjYgMTFCRTsgIyAo66CfOyDroJ87IOGEheGFpuGGvjsg66CfOyDhhIXhhabhhr47ICkgSEFOR1VMIFNZTExBQkxFIFJFQworQjgyMDtCODIwOzExMDUgMTE2NiAxMUJGO0I4MjA7MTEwNSAxMTY2IDExQkY7ICMgKOugoDsg66CgOyDhhIXhhabhhr87IOugoDsg4YSF4YWm4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBSRUsKK0I4MjE7QjgyMTsxMTA1IDExNjYgMTFDMDtCODIxOzExMDUgMTE2NiAxMUMwOyAjICjroKE7IOugoTsg4YSF4YWm4YeAOyDroKE7IOGEheGFpuGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgUkVUCitCODIyO0I4MjI7MTEwNSAxMTY2IDExQzE7QjgyMjsxMTA1IDExNjYgMTFDMTsgIyAo66CiOyDroKI7IOGEheGFpuGHgTsg66CiOyDhhIXhhabhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFJFUAorQjgyMztCODIzOzExMDUgMTE2NiAxMUMyO0I4MjM7MTEwNSAxMTY2IDExQzI7ICMgKOugozsg66CjOyDhhIXhhabhh4I7IOugozsg4YSF4YWm4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBSRUgKK0I4MjQ7QjgyNDsxMTA1IDExNjc7QjgyNDsxMTA1IDExNjc7ICMgKOugpDsg66CkOyDhhIXhhac7IOugpDsg4YSF4YWnOyApIEhBTkdVTCBTWUxMQUJMRSBSWUVPCitCODI1O0I4MjU7MTEwNSAxMTY3IDExQTg7QjgyNTsxMTA1IDExNjcgMTFBODsgIyAo66ClOyDroKU7IOGEheGFp+GGqDsg66ClOyDhhIXhhafhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFJZRU9HCitCODI2O0I4MjY7MTEwNSAxMTY3IDExQTk7QjgyNjsxMTA1IDExNjcgMTFBOTsgIyAo66CmOyDroKY7IOGEheGFp+GGqTsg66CmOyDhhIXhhafhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFJZRU9HRworQjgyNztCODI3OzExMDUgMTE2NyAxMUFBO0I4Mjc7MTEwNSAxMTY3IDExQUE7ICMgKOugpzsg66CnOyDhhIXhhafhhqo7IOugpzsg4YSF4YWn4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBSWUVPR1MKK0I4Mjg7QjgyODsxMTA1IDExNjcgMTFBQjtCODI4OzExMDUgMTE2NyAxMUFCOyAjICjroKg7IOugqDsg4YSF4YWn4YarOyDroKg7IOGEheGFp+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgUllFT04KK0I4Mjk7QjgyOTsxMTA1IDExNjcgMTFBQztCODI5OzExMDUgMTE2NyAxMUFDOyAjICjroKk7IOugqTsg4YSF4YWn4YasOyDroKk7IOGEheGFp+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgUllFT05KCitCODJBO0I4MkE7MTEwNSAxMTY3IDExQUQ7QjgyQTsxMTA1IDExNjcgMTFBRDsgIyAo66CqOyDroKo7IOGEheGFp+GGrTsg66CqOyDhhIXhhafhhq07ICkgSEFOR1VMIFNZTExBQkxFIFJZRU9OSAorQjgyQjtCODJCOzExMDUgMTE2NyAxMUFFO0I4MkI7MTEwNSAxMTY3IDExQUU7ICMgKOugqzsg66CrOyDhhIXhhafhhq47IOugqzsg4YSF4YWn4YauOyApIEhBTkdVTCBTWUxMQUJMRSBSWUVPRAorQjgyQztCODJDOzExMDUgMTE2NyAxMUFGO0I4MkM7MTEwNSAxMTY3IDExQUY7ICMgKOugrDsg66CsOyDhhIXhhafhhq87IOugrDsg4YSF4YWn4YavOyApIEhBTkdVTCBTWUxMQUJMRSBSWUVPTAorQjgyRDtCODJEOzExMDUgMTE2NyAxMUIwO0I4MkQ7MTEwNSAxMTY3IDExQjA7ICMgKOugrTsg66CtOyDhhIXhhafhhrA7IOugrTsg4YSF4YWn4YawOyApIEhBTkdVTCBTWUxMQUJMRSBSWUVPTEcKK0I4MkU7QjgyRTsxMTA1IDExNjcgMTFCMTtCODJFOzExMDUgMTE2NyAxMUIxOyAjICjroK47IOugrjsg4YSF4YWn4YaxOyDroK47IOGEheGFp+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgUllFT0xNCitCODJGO0I4MkY7MTEwNSAxMTY3IDExQjI7QjgyRjsxMTA1IDExNjcgMTFCMjsgIyAo66CvOyDroK87IOGEheGFp+GGsjsg66CvOyDhhIXhhafhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFJZRU9MQgorQjgzMDtCODMwOzExMDUgMTE2NyAxMUIzO0I4MzA7MTEwNSAxMTY3IDExQjM7ICMgKOugsDsg66CwOyDhhIXhhafhhrM7IOugsDsg4YSF4YWn4YazOyApIEhBTkdVTCBTWUxMQUJMRSBSWUVPTFMKK0I4MzE7QjgzMTsxMTA1IDExNjcgMTFCNDtCODMxOzExMDUgMTE2NyAxMUI0OyAjICjroLE7IOugsTsg4YSF4YWn4Ya0OyDroLE7IOGEheGFp+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgUllFT0xUCitCODMyO0I4MzI7MTEwNSAxMTY3IDExQjU7QjgzMjsxMTA1IDExNjcgMTFCNTsgIyAo66CyOyDroLI7IOGEheGFp+GGtTsg66CyOyDhhIXhhafhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFJZRU9MUAorQjgzMztCODMzOzExMDUgMTE2NyAxMUI2O0I4MzM7MTEwNSAxMTY3IDExQjY7ICMgKOugszsg66CzOyDhhIXhhafhhrY7IOugszsg4YSF4YWn4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBSWUVPTEgKK0I4MzQ7QjgzNDsxMTA1IDExNjcgMTFCNztCODM0OzExMDUgMTE2NyAxMUI3OyAjICjroLQ7IOugtDsg4YSF4YWn4Ya3OyDroLQ7IOGEheGFp+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgUllFT00KK0I4MzU7QjgzNTsxMTA1IDExNjcgMTFCODtCODM1OzExMDUgMTE2NyAxMUI4OyAjICjroLU7IOugtTsg4YSF4YWn4Ya4OyDroLU7IOGEheGFp+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgUllFT0IKK0I4MzY7QjgzNjsxMTA1IDExNjcgMTFCOTtCODM2OzExMDUgMTE2NyAxMUI5OyAjICjroLY7IOugtjsg4YSF4YWn4Ya5OyDroLY7IOGEheGFp+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgUllFT0JTCitCODM3O0I4Mzc7MTEwNSAxMTY3IDExQkE7QjgzNzsxMTA1IDExNjcgMTFCQTsgIyAo66C3OyDroLc7IOGEheGFp+GGujsg66C3OyDhhIXhhafhhro7ICkgSEFOR1VMIFNZTExBQkxFIFJZRU9TCitCODM4O0I4Mzg7MTEwNSAxMTY3IDExQkI7QjgzODsxMTA1IDExNjcgMTFCQjsgIyAo66C4OyDroLg7IOGEheGFp+GGuzsg66C4OyDhhIXhhafhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFJZRU9TUworQjgzOTtCODM5OzExMDUgMTE2NyAxMUJDO0I4Mzk7MTEwNSAxMTY3IDExQkM7ICMgKOuguTsg66C5OyDhhIXhhafhhrw7IOuguTsg4YSF4YWn4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBSWUVPTkcKK0I4M0E7QjgzQTsxMTA1IDExNjcgMTFCRDtCODNBOzExMDUgMTE2NyAxMUJEOyAjICjroLo7IOugujsg4YSF4YWn4Ya9OyDroLo7IOGEheGFp+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgUllFT0oKK0I4M0I7QjgzQjsxMTA1IDExNjcgMTFCRTtCODNCOzExMDUgMTE2NyAxMUJFOyAjICjroLs7IOuguzsg4YSF4YWn4Ya+OyDroLs7IOGEheGFp+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgUllFT0MKK0I4M0M7QjgzQzsxMTA1IDExNjcgMTFCRjtCODNDOzExMDUgMTE2NyAxMUJGOyAjICjroLw7IOugvDsg4YSF4YWn4Ya/OyDroLw7IOGEheGFp+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgUllFT0sKK0I4M0Q7QjgzRDsxMTA1IDExNjcgMTFDMDtCODNEOzExMDUgMTE2NyAxMUMwOyAjICjroL07IOugvTsg4YSF4YWn4YeAOyDroL07IOGEheGFp+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgUllFT1QKK0I4M0U7QjgzRTsxMTA1IDExNjcgMTFDMTtCODNFOzExMDUgMTE2NyAxMUMxOyAjICjroL47IOugvjsg4YSF4YWn4YeBOyDroL47IOGEheGFp+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgUllFT1AKK0I4M0Y7QjgzRjsxMTA1IDExNjcgMTFDMjtCODNGOzExMDUgMTE2NyAxMUMyOyAjICjroL87IOugvzsg4YSF4YWn4YeCOyDroL87IOGEheGFp+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgUllFT0gKK0I4NDA7Qjg0MDsxMTA1IDExNjg7Qjg0MDsxMTA1IDExNjg7ICMgKOuhgDsg66GAOyDhhIXhhag7IOuhgDsg4YSF4YWoOyApIEhBTkdVTCBTWUxMQUJMRSBSWUUKK0I4NDE7Qjg0MTsxMTA1IDExNjggMTFBODtCODQxOzExMDUgMTE2OCAxMUE4OyAjICjroYE7IOuhgTsg4YSF4YWo4YaoOyDroYE7IOGEheGFqOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgUllFRworQjg0MjtCODQyOzExMDUgMTE2OCAxMUE5O0I4NDI7MTEwNSAxMTY4IDExQTk7ICMgKOuhgjsg66GCOyDhhIXhhajhhqk7IOuhgjsg4YSF4YWo4YapOyApIEhBTkdVTCBTWUxMQUJMRSBSWUVHRworQjg0MztCODQzOzExMDUgMTE2OCAxMUFBO0I4NDM7MTEwNSAxMTY4IDExQUE7ICMgKOuhgzsg66GDOyDhhIXhhajhhqo7IOuhgzsg4YSF4YWo4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBSWUVHUworQjg0NDtCODQ0OzExMDUgMTE2OCAxMUFCO0I4NDQ7MTEwNSAxMTY4IDExQUI7ICMgKOuhhDsg66GEOyDhhIXhhajhhqs7IOuhhDsg4YSF4YWo4YarOyApIEhBTkdVTCBTWUxMQUJMRSBSWUVOCitCODQ1O0I4NDU7MTEwNSAxMTY4IDExQUM7Qjg0NTsxMTA1IDExNjggMTFBQzsgIyAo66GFOyDroYU7IOGEheGFqOGGrDsg66GFOyDhhIXhhajhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFJZRU5KCitCODQ2O0I4NDY7MTEwNSAxMTY4IDExQUQ7Qjg0NjsxMTA1IDExNjggMTFBRDsgIyAo66GGOyDroYY7IOGEheGFqOGGrTsg66GGOyDhhIXhhajhhq07ICkgSEFOR1VMIFNZTExBQkxFIFJZRU5ICitCODQ3O0I4NDc7MTEwNSAxMTY4IDExQUU7Qjg0NzsxMTA1IDExNjggMTFBRTsgIyAo66GHOyDroYc7IOGEheGFqOGGrjsg66GHOyDhhIXhhajhhq47ICkgSEFOR1VMIFNZTExBQkxFIFJZRUQKK0I4NDg7Qjg0ODsxMTA1IDExNjggMTFBRjtCODQ4OzExMDUgMTE2OCAxMUFGOyAjICjroYg7IOuhiDsg4YSF4YWo4YavOyDroYg7IOGEheGFqOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgUllFTAorQjg0OTtCODQ5OzExMDUgMTE2OCAxMUIwO0I4NDk7MTEwNSAxMTY4IDExQjA7ICMgKOuhiTsg66GJOyDhhIXhhajhhrA7IOuhiTsg4YSF4YWo4YawOyApIEhBTkdVTCBTWUxMQUJMRSBSWUVMRworQjg0QTtCODRBOzExMDUgMTE2OCAxMUIxO0I4NEE7MTEwNSAxMTY4IDExQjE7ICMgKOuhijsg66GKOyDhhIXhhajhhrE7IOuhijsg4YSF4YWo4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBSWUVMTQorQjg0QjtCODRCOzExMDUgMTE2OCAxMUIyO0I4NEI7MTEwNSAxMTY4IDExQjI7ICMgKOuhizsg66GLOyDhhIXhhajhhrI7IOuhizsg4YSF4YWo4YayOyApIEhBTkdVTCBTWUxMQUJMRSBSWUVMQgorQjg0QztCODRDOzExMDUgMTE2OCAxMUIzO0I4NEM7MTEwNSAxMTY4IDExQjM7ICMgKOuhjDsg66GMOyDhhIXhhajhhrM7IOuhjDsg4YSF4YWo4YazOyApIEhBTkdVTCBTWUxMQUJMRSBSWUVMUworQjg0RDtCODREOzExMDUgMTE2OCAxMUI0O0I4NEQ7MTEwNSAxMTY4IDExQjQ7ICMgKOuhjTsg66GNOyDhhIXhhajhhrQ7IOuhjTsg4YSF4YWo4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBSWUVMVAorQjg0RTtCODRFOzExMDUgMTE2OCAxMUI1O0I4NEU7MTEwNSAxMTY4IDExQjU7ICMgKOuhjjsg66GOOyDhhIXhhajhhrU7IOuhjjsg4YSF4YWo4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBSWUVMUAorQjg0RjtCODRGOzExMDUgMTE2OCAxMUI2O0I4NEY7MTEwNSAxMTY4IDExQjY7ICMgKOuhjzsg66GPOyDhhIXhhajhhrY7IOuhjzsg4YSF4YWo4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBSWUVMSAorQjg1MDtCODUwOzExMDUgMTE2OCAxMUI3O0I4NTA7MTEwNSAxMTY4IDExQjc7ICMgKOuhkDsg66GQOyDhhIXhhajhhrc7IOuhkDsg4YSF4YWo4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBSWUVNCitCODUxO0I4NTE7MTEwNSAxMTY4IDExQjg7Qjg1MTsxMTA1IDExNjggMTFCODsgIyAo66GROyDroZE7IOGEheGFqOGGuDsg66GROyDhhIXhhajhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFJZRUIKK0I4NTI7Qjg1MjsxMTA1IDExNjggMTFCOTtCODUyOzExMDUgMTE2OCAxMUI5OyAjICjroZI7IOuhkjsg4YSF4YWo4Ya5OyDroZI7IOGEheGFqOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgUllFQlMKK0I4NTM7Qjg1MzsxMTA1IDExNjggMTFCQTtCODUzOzExMDUgMTE2OCAxMUJBOyAjICjroZM7IOuhkzsg4YSF4YWo4Ya6OyDroZM7IOGEheGFqOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgUllFUworQjg1NDtCODU0OzExMDUgMTE2OCAxMUJCO0I4NTQ7MTEwNSAxMTY4IDExQkI7ICMgKOuhlDsg66GUOyDhhIXhhajhhrs7IOuhlDsg4YSF4YWo4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBSWUVTUworQjg1NTtCODU1OzExMDUgMTE2OCAxMUJDO0I4NTU7MTEwNSAxMTY4IDExQkM7ICMgKOuhlTsg66GVOyDhhIXhhajhhrw7IOuhlTsg4YSF4YWo4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBSWUVORworQjg1NjtCODU2OzExMDUgMTE2OCAxMUJEO0I4NTY7MTEwNSAxMTY4IDExQkQ7ICMgKOuhljsg66GWOyDhhIXhhajhhr07IOuhljsg4YSF4YWo4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBSWUVKCitCODU3O0I4NTc7MTEwNSAxMTY4IDExQkU7Qjg1NzsxMTA1IDExNjggMTFCRTsgIyAo66GXOyDroZc7IOGEheGFqOGGvjsg66GXOyDhhIXhhajhhr47ICkgSEFOR1VMIFNZTExBQkxFIFJZRUMKK0I4NTg7Qjg1ODsxMTA1IDExNjggMTFCRjtCODU4OzExMDUgMTE2OCAxMUJGOyAjICjroZg7IOuhmDsg4YSF4YWo4Ya/OyDroZg7IOGEheGFqOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgUllFSworQjg1OTtCODU5OzExMDUgMTE2OCAxMUMwO0I4NTk7MTEwNSAxMTY4IDExQzA7ICMgKOuhmTsg66GZOyDhhIXhhajhh4A7IOuhmTsg4YSF4YWo4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBSWUVUCitCODVBO0I4NUE7MTEwNSAxMTY4IDExQzE7Qjg1QTsxMTA1IDExNjggMTFDMTsgIyAo66GaOyDroZo7IOGEheGFqOGHgTsg66GaOyDhhIXhhajhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFJZRVAKK0I4NUI7Qjg1QjsxMTA1IDExNjggMTFDMjtCODVCOzExMDUgMTE2OCAxMUMyOyAjICjroZs7IOuhmzsg4YSF4YWo4YeCOyDroZs7IOGEheGFqOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgUllFSAorQjg1QztCODVDOzExMDUgMTE2OTtCODVDOzExMDUgMTE2OTsgIyAo66GcOyDroZw7IOGEheGFqTsg66GcOyDhhIXhhak7ICkgSEFOR1VMIFNZTExBQkxFIFJPCitCODVEO0I4NUQ7MTEwNSAxMTY5IDExQTg7Qjg1RDsxMTA1IDExNjkgMTFBODsgIyAo66GdOyDroZ07IOGEheGFqeGGqDsg66GdOyDhhIXhhanhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFJPRworQjg1RTtCODVFOzExMDUgMTE2OSAxMUE5O0I4NUU7MTEwNSAxMTY5IDExQTk7ICMgKOuhnjsg66GeOyDhhIXhhanhhqk7IOuhnjsg4YSF4YWp4YapOyApIEhBTkdVTCBTWUxMQUJMRSBST0dHCitCODVGO0I4NUY7MTEwNSAxMTY5IDExQUE7Qjg1RjsxMTA1IDExNjkgMTFBQTsgIyAo66GfOyDroZ87IOGEheGFqeGGqjsg66GfOyDhhIXhhanhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFJPR1MKK0I4NjA7Qjg2MDsxMTA1IDExNjkgMTFBQjtCODYwOzExMDUgMTE2OSAxMUFCOyAjICjroaA7IOuhoDsg4YSF4YWp4YarOyDroaA7IOGEheGFqeGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgUk9OCitCODYxO0I4NjE7MTEwNSAxMTY5IDExQUM7Qjg2MTsxMTA1IDExNjkgMTFBQzsgIyAo66GhOyDroaE7IOGEheGFqeGGrDsg66GhOyDhhIXhhanhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFJPTkoKK0I4NjI7Qjg2MjsxMTA1IDExNjkgMTFBRDtCODYyOzExMDUgMTE2OSAxMUFEOyAjICjroaI7IOuhojsg4YSF4YWp4YatOyDroaI7IOGEheGFqeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgUk9OSAorQjg2MztCODYzOzExMDUgMTE2OSAxMUFFO0I4NjM7MTEwNSAxMTY5IDExQUU7ICMgKOuhozsg66GjOyDhhIXhhanhhq47IOuhozsg4YSF4YWp4YauOyApIEhBTkdVTCBTWUxMQUJMRSBST0QKK0I4NjQ7Qjg2NDsxMTA1IDExNjkgMTFBRjtCODY0OzExMDUgMTE2OSAxMUFGOyAjICjroaQ7IOuhpDsg4YSF4YWp4YavOyDroaQ7IOGEheGFqeGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgUk9MCitCODY1O0I4NjU7MTEwNSAxMTY5IDExQjA7Qjg2NTsxMTA1IDExNjkgMTFCMDsgIyAo66GlOyDroaU7IOGEheGFqeGGsDsg66GlOyDhhIXhhanhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFJPTEcKK0I4NjY7Qjg2NjsxMTA1IDExNjkgMTFCMTtCODY2OzExMDUgMTE2OSAxMUIxOyAjICjroaY7IOuhpjsg4YSF4YWp4YaxOyDroaY7IOGEheGFqeGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgUk9MTQorQjg2NztCODY3OzExMDUgMTE2OSAxMUIyO0I4Njc7MTEwNSAxMTY5IDExQjI7ICMgKOuhpzsg66GnOyDhhIXhhanhhrI7IOuhpzsg4YSF4YWp4YayOyApIEhBTkdVTCBTWUxMQUJMRSBST0xCCitCODY4O0I4Njg7MTEwNSAxMTY5IDExQjM7Qjg2ODsxMTA1IDExNjkgMTFCMzsgIyAo66GoOyDroag7IOGEheGFqeGGszsg66GoOyDhhIXhhanhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFJPTFMKK0I4Njk7Qjg2OTsxMTA1IDExNjkgMTFCNDtCODY5OzExMDUgMTE2OSAxMUI0OyAjICjroak7IOuhqTsg4YSF4YWp4Ya0OyDroak7IOGEheGFqeGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgUk9MVAorQjg2QTtCODZBOzExMDUgMTE2OSAxMUI1O0I4NkE7MTEwNSAxMTY5IDExQjU7ICMgKOuhqjsg66GqOyDhhIXhhanhhrU7IOuhqjsg4YSF4YWp4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBST0xQCitCODZCO0I4NkI7MTEwNSAxMTY5IDExQjY7Qjg2QjsxMTA1IDExNjkgMTFCNjsgIyAo66GrOyDroas7IOGEheGFqeGGtjsg66GrOyDhhIXhhanhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFJPTEgKK0I4NkM7Qjg2QzsxMTA1IDExNjkgMTFCNztCODZDOzExMDUgMTE2OSAxMUI3OyAjICjroaw7IOuhrDsg4YSF4YWp4Ya3OyDroaw7IOGEheGFqeGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgUk9NCitCODZEO0I4NkQ7MTEwNSAxMTY5IDExQjg7Qjg2RDsxMTA1IDExNjkgMTFCODsgIyAo66GtOyDroa07IOGEheGFqeGGuDsg66GtOyDhhIXhhanhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFJPQgorQjg2RTtCODZFOzExMDUgMTE2OSAxMUI5O0I4NkU7MTEwNSAxMTY5IDExQjk7ICMgKOuhrjsg66GuOyDhhIXhhanhhrk7IOuhrjsg4YSF4YWp4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBST0JTCitCODZGO0I4NkY7MTEwNSAxMTY5IDExQkE7Qjg2RjsxMTA1IDExNjkgMTFCQTsgIyAo66GvOyDroa87IOGEheGFqeGGujsg66GvOyDhhIXhhanhhro7ICkgSEFOR1VMIFNZTExBQkxFIFJPUworQjg3MDtCODcwOzExMDUgMTE2OSAxMUJCO0I4NzA7MTEwNSAxMTY5IDExQkI7ICMgKOuhsDsg66GwOyDhhIXhhanhhrs7IOuhsDsg4YSF4YWp4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBST1NTCitCODcxO0I4NzE7MTEwNSAxMTY5IDExQkM7Qjg3MTsxMTA1IDExNjkgMTFCQzsgIyAo66GxOyDrobE7IOGEheGFqeGGvDsg66GxOyDhhIXhhanhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFJPTkcKK0I4NzI7Qjg3MjsxMTA1IDExNjkgMTFCRDtCODcyOzExMDUgMTE2OSAxMUJEOyAjICjrobI7IOuhsjsg4YSF4YWp4Ya9OyDrobI7IOGEheGFqeGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgUk9KCitCODczO0I4NzM7MTEwNSAxMTY5IDExQkU7Qjg3MzsxMTA1IDExNjkgMTFCRTsgIyAo66GzOyDrobM7IOGEheGFqeGGvjsg66GzOyDhhIXhhanhhr47ICkgSEFOR1VMIFNZTExBQkxFIFJPQworQjg3NDtCODc0OzExMDUgMTE2OSAxMUJGO0I4NzQ7MTEwNSAxMTY5IDExQkY7ICMgKOuhtDsg66G0OyDhhIXhhanhhr87IOuhtDsg4YSF4YWp4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBST0sKK0I4NzU7Qjg3NTsxMTA1IDExNjkgMTFDMDtCODc1OzExMDUgMTE2OSAxMUMwOyAjICjrobU7IOuhtTsg4YSF4YWp4YeAOyDrobU7IOGEheGFqeGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgUk9UCitCODc2O0I4NzY7MTEwNSAxMTY5IDExQzE7Qjg3NjsxMTA1IDExNjkgMTFDMTsgIyAo66G2OyDrobY7IOGEheGFqeGHgTsg66G2OyDhhIXhhanhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFJPUAorQjg3NztCODc3OzExMDUgMTE2OSAxMUMyO0I4Nzc7MTEwNSAxMTY5IDExQzI7ICMgKOuhtzsg66G3OyDhhIXhhanhh4I7IOuhtzsg4YSF4YWp4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBST0gKK0I4Nzg7Qjg3ODsxMTA1IDExNkE7Qjg3ODsxMTA1IDExNkE7ICMgKOuhuDsg66G4OyDhhIXhhao7IOuhuDsg4YSF4YWqOyApIEhBTkdVTCBTWUxMQUJMRSBSV0EKK0I4Nzk7Qjg3OTsxMTA1IDExNkEgMTFBODtCODc5OzExMDUgMTE2QSAxMUE4OyAjICjrobk7IOuhuTsg4YSF4YWq4YaoOyDrobk7IOGEheGFquGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgUldBRworQjg3QTtCODdBOzExMDUgMTE2QSAxMUE5O0I4N0E7MTEwNSAxMTZBIDExQTk7ICMgKOuhujsg66G6OyDhhIXhharhhqk7IOuhujsg4YSF4YWq4YapOyApIEhBTkdVTCBTWUxMQUJMRSBSV0FHRworQjg3QjtCODdCOzExMDUgMTE2QSAxMUFBO0I4N0I7MTEwNSAxMTZBIDExQUE7ICMgKOuhuzsg66G7OyDhhIXhharhhqo7IOuhuzsg4YSF4YWq4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBSV0FHUworQjg3QztCODdDOzExMDUgMTE2QSAxMUFCO0I4N0M7MTEwNSAxMTZBIDExQUI7ICMgKOuhvDsg66G8OyDhhIXhharhhqs7IOuhvDsg4YSF4YWq4YarOyApIEhBTkdVTCBTWUxMQUJMRSBSV0FOCitCODdEO0I4N0Q7MTEwNSAxMTZBIDExQUM7Qjg3RDsxMTA1IDExNkEgMTFBQzsgIyAo66G9OyDrob07IOGEheGFquGGrDsg66G9OyDhhIXhharhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFJXQU5KCitCODdFO0I4N0U7MTEwNSAxMTZBIDExQUQ7Qjg3RTsxMTA1IDExNkEgMTFBRDsgIyAo66G+OyDrob47IOGEheGFquGGrTsg66G+OyDhhIXhharhhq07ICkgSEFOR1VMIFNZTExBQkxFIFJXQU5ICitCODdGO0I4N0Y7MTEwNSAxMTZBIDExQUU7Qjg3RjsxMTA1IDExNkEgMTFBRTsgIyAo66G/OyDrob87IOGEheGFquGGrjsg66G/OyDhhIXhharhhq47ICkgSEFOR1VMIFNZTExBQkxFIFJXQUQKK0I4ODA7Qjg4MDsxMTA1IDExNkEgMTFBRjtCODgwOzExMDUgMTE2QSAxMUFGOyAjICjrooA7IOuigDsg4YSF4YWq4YavOyDrooA7IOGEheGFquGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgUldBTAorQjg4MTtCODgxOzExMDUgMTE2QSAxMUIwO0I4ODE7MTEwNSAxMTZBIDExQjA7ICMgKOuigTsg66KBOyDhhIXhharhhrA7IOuigTsg4YSF4YWq4YawOyApIEhBTkdVTCBTWUxMQUJMRSBSV0FMRworQjg4MjtCODgyOzExMDUgMTE2QSAxMUIxO0I4ODI7MTEwNSAxMTZBIDExQjE7ICMgKOuigjsg66KCOyDhhIXhharhhrE7IOuigjsg4YSF4YWq4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBSV0FMTQorQjg4MztCODgzOzExMDUgMTE2QSAxMUIyO0I4ODM7MTEwNSAxMTZBIDExQjI7ICMgKOuigzsg66KDOyDhhIXhharhhrI7IOuigzsg4YSF4YWq4YayOyApIEhBTkdVTCBTWUxMQUJMRSBSV0FMQgorQjg4NDtCODg0OzExMDUgMTE2QSAxMUIzO0I4ODQ7MTEwNSAxMTZBIDExQjM7ICMgKOuihDsg66KEOyDhhIXhharhhrM7IOuihDsg4YSF4YWq4YazOyApIEhBTkdVTCBTWUxMQUJMRSBSV0FMUworQjg4NTtCODg1OzExMDUgMTE2QSAxMUI0O0I4ODU7MTEwNSAxMTZBIDExQjQ7ICMgKOuihTsg66KFOyDhhIXhharhhrQ7IOuihTsg4YSF4YWq4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBSV0FMVAorQjg4NjtCODg2OzExMDUgMTE2QSAxMUI1O0I4ODY7MTEwNSAxMTZBIDExQjU7ICMgKOuihjsg66KGOyDhhIXhharhhrU7IOuihjsg4YSF4YWq4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBSV0FMUAorQjg4NztCODg3OzExMDUgMTE2QSAxMUI2O0I4ODc7MTEwNSAxMTZBIDExQjY7ICMgKOuihzsg66KHOyDhhIXhharhhrY7IOuihzsg4YSF4YWq4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBSV0FMSAorQjg4ODtCODg4OzExMDUgMTE2QSAxMUI3O0I4ODg7MTEwNSAxMTZBIDExQjc7ICMgKOuiiDsg66KIOyDhhIXhharhhrc7IOuiiDsg4YSF4YWq4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBSV0FNCitCODg5O0I4ODk7MTEwNSAxMTZBIDExQjg7Qjg4OTsxMTA1IDExNkEgMTFCODsgIyAo66KJOyDrook7IOGEheGFquGGuDsg66KJOyDhhIXhharhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFJXQUIKK0I4OEE7Qjg4QTsxMTA1IDExNkEgMTFCOTtCODhBOzExMDUgMTE2QSAxMUI5OyAjICjrooo7IOuiijsg4YSF4YWq4Ya5OyDrooo7IOGEheGFquGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgUldBQlMKK0I4OEI7Qjg4QjsxMTA1IDExNkEgMTFCQTtCODhCOzExMDUgMTE2QSAxMUJBOyAjICjroos7IOuiizsg4YSF4YWq4Ya6OyDroos7IOGEheGFquGGujsgKSBIQU5HVUwgU1lMTEFCTEUgUldBUworQjg4QztCODhDOzExMDUgMTE2QSAxMUJCO0I4OEM7MTEwNSAxMTZBIDExQkI7ICMgKOuijDsg66KMOyDhhIXhharhhrs7IOuijDsg4YSF4YWq4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBSV0FTUworQjg4RDtCODhEOzExMDUgMTE2QSAxMUJDO0I4OEQ7MTEwNSAxMTZBIDExQkM7ICMgKOuijTsg66KNOyDhhIXhharhhrw7IOuijTsg4YSF4YWq4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBSV0FORworQjg4RTtCODhFOzExMDUgMTE2QSAxMUJEO0I4OEU7MTEwNSAxMTZBIDExQkQ7ICMgKOuijjsg66KOOyDhhIXhharhhr07IOuijjsg4YSF4YWq4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBSV0FKCitCODhGO0I4OEY7MTEwNSAxMTZBIDExQkU7Qjg4RjsxMTA1IDExNkEgMTFCRTsgIyAo66KPOyDroo87IOGEheGFquGGvjsg66KPOyDhhIXhharhhr47ICkgSEFOR1VMIFNZTExBQkxFIFJXQUMKK0I4OTA7Qjg5MDsxMTA1IDExNkEgMTFCRjtCODkwOzExMDUgMTE2QSAxMUJGOyAjICjropA7IOuikDsg4YSF4YWq4Ya/OyDropA7IOGEheGFquGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgUldBSworQjg5MTtCODkxOzExMDUgMTE2QSAxMUMwO0I4OTE7MTEwNSAxMTZBIDExQzA7ICMgKOuikTsg66KROyDhhIXhharhh4A7IOuikTsg4YSF4YWq4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBSV0FUCitCODkyO0I4OTI7MTEwNSAxMTZBIDExQzE7Qjg5MjsxMTA1IDExNkEgMTFDMTsgIyAo66KSOyDropI7IOGEheGFquGHgTsg66KSOyDhhIXhharhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFJXQVAKK0I4OTM7Qjg5MzsxMTA1IDExNkEgMTFDMjtCODkzOzExMDUgMTE2QSAxMUMyOyAjICjropM7IOuikzsg4YSF4YWq4YeCOyDropM7IOGEheGFquGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgUldBSAorQjg5NDtCODk0OzExMDUgMTE2QjtCODk0OzExMDUgMTE2QjsgIyAo66KUOyDropQ7IOGEheGFqzsg66KUOyDhhIXhhas7ICkgSEFOR1VMIFNZTExBQkxFIFJXQUUKK0I4OTU7Qjg5NTsxMTA1IDExNkIgMTFBODtCODk1OzExMDUgMTE2QiAxMUE4OyAjICjropU7IOuilTsg4YSF4YWr4YaoOyDropU7IOGEheGFq+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgUldBRUcKK0I4OTY7Qjg5NjsxMTA1IDExNkIgMTFBOTtCODk2OzExMDUgMTE2QiAxMUE5OyAjICjropY7IOuiljsg4YSF4YWr4YapOyDropY7IOGEheGFq+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgUldBRUdHCitCODk3O0I4OTc7MTEwNSAxMTZCIDExQUE7Qjg5NzsxMTA1IDExNkIgMTFBQTsgIyAo66KXOyDropc7IOGEheGFq+GGqjsg66KXOyDhhIXhhavhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFJXQUVHUworQjg5ODtCODk4OzExMDUgMTE2QiAxMUFCO0I4OTg7MTEwNSAxMTZCIDExQUI7ICMgKOuimDsg66KYOyDhhIXhhavhhqs7IOuimDsg4YSF4YWr4YarOyApIEhBTkdVTCBTWUxMQUJMRSBSV0FFTgorQjg5OTtCODk5OzExMDUgMTE2QiAxMUFDO0I4OTk7MTEwNSAxMTZCIDExQUM7ICMgKOuimTsg66KZOyDhhIXhhavhhqw7IOuimTsg4YSF4YWr4YasOyApIEhBTkdVTCBTWUxMQUJMRSBSV0FFTkoKK0I4OUE7Qjg5QTsxMTA1IDExNkIgMTFBRDtCODlBOzExMDUgMTE2QiAxMUFEOyAjICjropo7IOuimjsg4YSF4YWr4YatOyDropo7IOGEheGFq+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgUldBRU5ICitCODlCO0I4OUI7MTEwNSAxMTZCIDExQUU7Qjg5QjsxMTA1IDExNkIgMTFBRTsgIyAo66KbOyDrops7IOGEheGFq+GGrjsg66KbOyDhhIXhhavhhq47ICkgSEFOR1VMIFNZTExBQkxFIFJXQUVECitCODlDO0I4OUM7MTEwNSAxMTZCIDExQUY7Qjg5QzsxMTA1IDExNkIgMTFBRjsgIyAo66KcOyDropw7IOGEheGFq+GGrzsg66KcOyDhhIXhhavhhq87ICkgSEFOR1VMIFNZTExBQkxFIFJXQUVMCitCODlEO0I4OUQ7MTEwNSAxMTZCIDExQjA7Qjg5RDsxMTA1IDExNkIgMTFCMDsgIyAo66KdOyDrop07IOGEheGFq+GGsDsg66KdOyDhhIXhhavhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFJXQUVMRworQjg5RTtCODlFOzExMDUgMTE2QiAxMUIxO0I4OUU7MTEwNSAxMTZCIDExQjE7ICMgKOuinjsg66KeOyDhhIXhhavhhrE7IOuinjsg4YSF4YWr4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBSV0FFTE0KK0I4OUY7Qjg5RjsxMTA1IDExNkIgMTFCMjtCODlGOzExMDUgMTE2QiAxMUIyOyAjICjrop87IOuinzsg4YSF4YWr4YayOyDrop87IOGEheGFq+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgUldBRUxCCitCOEEwO0I4QTA7MTEwNSAxMTZCIDExQjM7QjhBMDsxMTA1IDExNkIgMTFCMzsgIyAo66KgOyDroqA7IOGEheGFq+GGszsg66KgOyDhhIXhhavhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFJXQUVMUworQjhBMTtCOEExOzExMDUgMTE2QiAxMUI0O0I4QTE7MTEwNSAxMTZCIDExQjQ7ICMgKOuioTsg66KhOyDhhIXhhavhhrQ7IOuioTsg4YSF4YWr4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBSV0FFTFQKK0I4QTI7QjhBMjsxMTA1IDExNkIgMTFCNTtCOEEyOzExMDUgMTE2QiAxMUI1OyAjICjroqI7IOuiojsg4YSF4YWr4Ya1OyDroqI7IOGEheGFq+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgUldBRUxQCitCOEEzO0I4QTM7MTEwNSAxMTZCIDExQjY7QjhBMzsxMTA1IDExNkIgMTFCNjsgIyAo66KjOyDroqM7IOGEheGFq+GGtjsg66KjOyDhhIXhhavhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFJXQUVMSAorQjhBNDtCOEE0OzExMDUgMTE2QiAxMUI3O0I4QTQ7MTEwNSAxMTZCIDExQjc7ICMgKOuipDsg66KkOyDhhIXhhavhhrc7IOuipDsg4YSF4YWr4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBSV0FFTQorQjhBNTtCOEE1OzExMDUgMTE2QiAxMUI4O0I4QTU7MTEwNSAxMTZCIDExQjg7ICMgKOuipTsg66KlOyDhhIXhhavhhrg7IOuipTsg4YSF4YWr4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBSV0FFQgorQjhBNjtCOEE2OzExMDUgMTE2QiAxMUI5O0I4QTY7MTEwNSAxMTZCIDExQjk7ICMgKOuipjsg66KmOyDhhIXhhavhhrk7IOuipjsg4YSF4YWr4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBSV0FFQlMKK0I4QTc7QjhBNzsxMTA1IDExNkIgMTFCQTtCOEE3OzExMDUgMTE2QiAxMUJBOyAjICjroqc7IOuipzsg4YSF4YWr4Ya6OyDroqc7IOGEheGFq+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgUldBRVMKK0I4QTg7QjhBODsxMTA1IDExNkIgMTFCQjtCOEE4OzExMDUgMTE2QiAxMUJCOyAjICjroqg7IOuiqDsg4YSF4YWr4Ya7OyDroqg7IOGEheGFq+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgUldBRVNTCitCOEE5O0I4QTk7MTEwNSAxMTZCIDExQkM7QjhBOTsxMTA1IDExNkIgMTFCQzsgIyAo66KpOyDroqk7IOGEheGFq+GGvDsg66KpOyDhhIXhhavhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFJXQUVORworQjhBQTtCOEFBOzExMDUgMTE2QiAxMUJEO0I4QUE7MTEwNSAxMTZCIDExQkQ7ICMgKOuiqjsg66KqOyDhhIXhhavhhr07IOuiqjsg4YSF4YWr4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBSV0FFSgorQjhBQjtCOEFCOzExMDUgMTE2QiAxMUJFO0I4QUI7MTEwNSAxMTZCIDExQkU7ICMgKOuiqzsg66KrOyDhhIXhhavhhr47IOuiqzsg4YSF4YWr4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBSV0FFQworQjhBQztCOEFDOzExMDUgMTE2QiAxMUJGO0I4QUM7MTEwNSAxMTZCIDExQkY7ICMgKOuirDsg66KsOyDhhIXhhavhhr87IOuirDsg4YSF4YWr4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBSV0FFSworQjhBRDtCOEFEOzExMDUgMTE2QiAxMUMwO0I4QUQ7MTEwNSAxMTZCIDExQzA7ICMgKOuirTsg66KtOyDhhIXhhavhh4A7IOuirTsg4YSF4YWr4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBSV0FFVAorQjhBRTtCOEFFOzExMDUgMTE2QiAxMUMxO0I4QUU7MTEwNSAxMTZCIDExQzE7ICMgKOuirjsg66KuOyDhhIXhhavhh4E7IOuirjsg4YSF4YWr4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBSV0FFUAorQjhBRjtCOEFGOzExMDUgMTE2QiAxMUMyO0I4QUY7MTEwNSAxMTZCIDExQzI7ICMgKOuirzsg66KvOyDhhIXhhavhh4I7IOuirzsg4YSF4YWr4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBSV0FFSAorQjhCMDtCOEIwOzExMDUgMTE2QztCOEIwOzExMDUgMTE2QzsgIyAo66KwOyDrorA7IOGEheGFrDsg66KwOyDhhIXhhaw7ICkgSEFOR1VMIFNZTExBQkxFIFJPRQorQjhCMTtCOEIxOzExMDUgMTE2QyAxMUE4O0I4QjE7MTEwNSAxMTZDIDExQTg7ICMgKOuisTsg66KxOyDhhIXhhazhhqg7IOuisTsg4YSF4YWs4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBST0VHCitCOEIyO0I4QjI7MTEwNSAxMTZDIDExQTk7QjhCMjsxMTA1IDExNkMgMTFBOTsgIyAo66KyOyDrorI7IOGEheGFrOGGqTsg66KyOyDhhIXhhazhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFJPRUdHCitCOEIzO0I4QjM7MTEwNSAxMTZDIDExQUE7QjhCMzsxMTA1IDExNkMgMTFBQTsgIyAo66KzOyDrorM7IOGEheGFrOGGqjsg66KzOyDhhIXhhazhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFJPRUdTCitCOEI0O0I4QjQ7MTEwNSAxMTZDIDExQUI7QjhCNDsxMTA1IDExNkMgMTFBQjsgIyAo66K0OyDrorQ7IOGEheGFrOGGqzsg66K0OyDhhIXhhazhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFJPRU4KK0I4QjU7QjhCNTsxMTA1IDExNkMgMTFBQztCOEI1OzExMDUgMTE2QyAxMUFDOyAjICjrorU7IOuitTsg4YSF4YWs4YasOyDrorU7IOGEheGFrOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgUk9FTkoKK0I4QjY7QjhCNjsxMTA1IDExNkMgMTFBRDtCOEI2OzExMDUgMTE2QyAxMUFEOyAjICjrorY7IOuitjsg4YSF4YWs4YatOyDrorY7IOGEheGFrOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgUk9FTkgKK0I4Qjc7QjhCNzsxMTA1IDExNkMgMTFBRTtCOEI3OzExMDUgMTE2QyAxMUFFOyAjICjrorc7IOuitzsg4YSF4YWs4YauOyDrorc7IOGEheGFrOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgUk9FRAorQjhCODtCOEI4OzExMDUgMTE2QyAxMUFGO0I4Qjg7MTEwNSAxMTZDIDExQUY7ICMgKOuiuDsg66K4OyDhhIXhhazhhq87IOuiuDsg4YSF4YWs4YavOyApIEhBTkdVTCBTWUxMQUJMRSBST0VMCitCOEI5O0I4Qjk7MTEwNSAxMTZDIDExQjA7QjhCOTsxMTA1IDExNkMgMTFCMDsgIyAo66K5OyDrork7IOGEheGFrOGGsDsg66K5OyDhhIXhhazhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFJPRUxHCitCOEJBO0I4QkE7MTEwNSAxMTZDIDExQjE7QjhCQTsxMTA1IDExNkMgMTFCMTsgIyAo66K6OyDroro7IOGEheGFrOGGsTsg66K6OyDhhIXhhazhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFJPRUxNCitCOEJCO0I4QkI7MTEwNSAxMTZDIDExQjI7QjhCQjsxMTA1IDExNkMgMTFCMjsgIyAo66K7OyDrors7IOGEheGFrOGGsjsg66K7OyDhhIXhhazhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFJPRUxCCitCOEJDO0I4QkM7MTEwNSAxMTZDIDExQjM7QjhCQzsxMTA1IDExNkMgMTFCMzsgIyAo66K8OyDrorw7IOGEheGFrOGGszsg66K8OyDhhIXhhazhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFJPRUxTCitCOEJEO0I4QkQ7MTEwNSAxMTZDIDExQjQ7QjhCRDsxMTA1IDExNkMgMTFCNDsgIyAo66K9OyDror07IOGEheGFrOGGtDsg66K9OyDhhIXhhazhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFJPRUxUCitCOEJFO0I4QkU7MTEwNSAxMTZDIDExQjU7QjhCRTsxMTA1IDExNkMgMTFCNTsgIyAo66K+OyDror47IOGEheGFrOGGtTsg66K+OyDhhIXhhazhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFJPRUxQCitCOEJGO0I4QkY7MTEwNSAxMTZDIDExQjY7QjhCRjsxMTA1IDExNkMgMTFCNjsgIyAo66K/OyDror87IOGEheGFrOGGtjsg66K/OyDhhIXhhazhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFJPRUxICitCOEMwO0I4QzA7MTEwNSAxMTZDIDExQjc7QjhDMDsxMTA1IDExNkMgMTFCNzsgIyAo66OAOyDro4A7IOGEheGFrOGGtzsg66OAOyDhhIXhhazhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFJPRU0KK0I4QzE7QjhDMTsxMTA1IDExNkMgMTFCODtCOEMxOzExMDUgMTE2QyAxMUI4OyAjICjro4E7IOujgTsg4YSF4YWs4Ya4OyDro4E7IOGEheGFrOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgUk9FQgorQjhDMjtCOEMyOzExMDUgMTE2QyAxMUI5O0I4QzI7MTEwNSAxMTZDIDExQjk7ICMgKOujgjsg66OCOyDhhIXhhazhhrk7IOujgjsg4YSF4YWs4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBST0VCUworQjhDMztCOEMzOzExMDUgMTE2QyAxMUJBO0I4QzM7MTEwNSAxMTZDIDExQkE7ICMgKOujgzsg66ODOyDhhIXhhazhhro7IOujgzsg4YSF4YWs4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBST0VTCitCOEM0O0I4QzQ7MTEwNSAxMTZDIDExQkI7QjhDNDsxMTA1IDExNkMgMTFCQjsgIyAo66OEOyDro4Q7IOGEheGFrOGGuzsg66OEOyDhhIXhhazhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFJPRVNTCitCOEM1O0I4QzU7MTEwNSAxMTZDIDExQkM7QjhDNTsxMTA1IDExNkMgMTFCQzsgIyAo66OFOyDro4U7IOGEheGFrOGGvDsg66OFOyDhhIXhhazhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFJPRU5HCitCOEM2O0I4QzY7MTEwNSAxMTZDIDExQkQ7QjhDNjsxMTA1IDExNkMgMTFCRDsgIyAo66OGOyDro4Y7IOGEheGFrOGGvTsg66OGOyDhhIXhhazhhr07ICkgSEFOR1VMIFNZTExBQkxFIFJPRUoKK0I4Qzc7QjhDNzsxMTA1IDExNkMgMTFCRTtCOEM3OzExMDUgMTE2QyAxMUJFOyAjICjro4c7IOujhzsg4YSF4YWs4Ya+OyDro4c7IOGEheGFrOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgUk9FQworQjhDODtCOEM4OzExMDUgMTE2QyAxMUJGO0I4Qzg7MTEwNSAxMTZDIDExQkY7ICMgKOujiDsg66OIOyDhhIXhhazhhr87IOujiDsg4YSF4YWs4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBST0VLCitCOEM5O0I4Qzk7MTEwNSAxMTZDIDExQzA7QjhDOTsxMTA1IDExNkMgMTFDMDsgIyAo66OJOyDro4k7IOGEheGFrOGHgDsg66OJOyDhhIXhhazhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFJPRVQKK0I4Q0E7QjhDQTsxMTA1IDExNkMgMTFDMTtCOENBOzExMDUgMTE2QyAxMUMxOyAjICjro4o7IOujijsg4YSF4YWs4YeBOyDro4o7IOGEheGFrOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgUk9FUAorQjhDQjtCOENCOzExMDUgMTE2QyAxMUMyO0I4Q0I7MTEwNSAxMTZDIDExQzI7ICMgKOujizsg66OLOyDhhIXhhazhh4I7IOujizsg4YSF4YWs4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBST0VICitCOENDO0I4Q0M7MTEwNSAxMTZEO0I4Q0M7MTEwNSAxMTZEOyAjICjro4w7IOujjDsg4YSF4YWtOyDro4w7IOGEheGFrTsgKSBIQU5HVUwgU1lMTEFCTEUgUllPCitCOENEO0I4Q0Q7MTEwNSAxMTZEIDExQTg7QjhDRDsxMTA1IDExNkQgMTFBODsgIyAo66ONOyDro407IOGEheGFreGGqDsg66ONOyDhhIXhha3hhqg7ICkgSEFOR1VMIFNZTExBQkxFIFJZT0cKK0I4Q0U7QjhDRTsxMTA1IDExNkQgMTFBOTtCOENFOzExMDUgMTE2RCAxMUE5OyAjICjro447IOujjjsg4YSF4YWt4YapOyDro447IOGEheGFreGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgUllPR0cKK0I4Q0Y7QjhDRjsxMTA1IDExNkQgMTFBQTtCOENGOzExMDUgMTE2RCAxMUFBOyAjICjro487IOujjzsg4YSF4YWt4YaqOyDro487IOGEheGFreGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgUllPR1MKK0I4RDA7QjhEMDsxMTA1IDExNkQgMTFBQjtCOEQwOzExMDUgMTE2RCAxMUFCOyAjICjro5A7IOujkDsg4YSF4YWt4YarOyDro5A7IOGEheGFreGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgUllPTgorQjhEMTtCOEQxOzExMDUgMTE2RCAxMUFDO0I4RDE7MTEwNSAxMTZEIDExQUM7ICMgKOujkTsg66OROyDhhIXhha3hhqw7IOujkTsg4YSF4YWt4YasOyApIEhBTkdVTCBTWUxMQUJMRSBSWU9OSgorQjhEMjtCOEQyOzExMDUgMTE2RCAxMUFEO0I4RDI7MTEwNSAxMTZEIDExQUQ7ICMgKOujkjsg66OSOyDhhIXhha3hhq07IOujkjsg4YSF4YWt4YatOyApIEhBTkdVTCBTWUxMQUJMRSBSWU9OSAorQjhEMztCOEQzOzExMDUgMTE2RCAxMUFFO0I4RDM7MTEwNSAxMTZEIDExQUU7ICMgKOujkzsg66OTOyDhhIXhha3hhq47IOujkzsg4YSF4YWt4YauOyApIEhBTkdVTCBTWUxMQUJMRSBSWU9ECitCOEQ0O0I4RDQ7MTEwNSAxMTZEIDExQUY7QjhENDsxMTA1IDExNkQgMTFBRjsgIyAo66OUOyDro5Q7IOGEheGFreGGrzsg66OUOyDhhIXhha3hhq87ICkgSEFOR1VMIFNZTExBQkxFIFJZT0wKK0I4RDU7QjhENTsxMTA1IDExNkQgMTFCMDtCOEQ1OzExMDUgMTE2RCAxMUIwOyAjICjro5U7IOujlTsg4YSF4YWt4YawOyDro5U7IOGEheGFreGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgUllPTEcKK0I4RDY7QjhENjsxMTA1IDExNkQgMTFCMTtCOEQ2OzExMDUgMTE2RCAxMUIxOyAjICjro5Y7IOujljsg4YSF4YWt4YaxOyDro5Y7IOGEheGFreGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgUllPTE0KK0I4RDc7QjhENzsxMTA1IDExNkQgMTFCMjtCOEQ3OzExMDUgMTE2RCAxMUIyOyAjICjro5c7IOujlzsg4YSF4YWt4YayOyDro5c7IOGEheGFreGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgUllPTEIKK0I4RDg7QjhEODsxMTA1IDExNkQgMTFCMztCOEQ4OzExMDUgMTE2RCAxMUIzOyAjICjro5g7IOujmDsg4YSF4YWt4YazOyDro5g7IOGEheGFreGGszsgKSBIQU5HVUwgU1lMTEFCTEUgUllPTFMKK0I4RDk7QjhEOTsxMTA1IDExNkQgMTFCNDtCOEQ5OzExMDUgMTE2RCAxMUI0OyAjICjro5k7IOujmTsg4YSF4YWt4Ya0OyDro5k7IOGEheGFreGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgUllPTFQKK0I4REE7QjhEQTsxMTA1IDExNkQgMTFCNTtCOERBOzExMDUgMTE2RCAxMUI1OyAjICjro5o7IOujmjsg4YSF4YWt4Ya1OyDro5o7IOGEheGFreGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgUllPTFAKK0I4REI7QjhEQjsxMTA1IDExNkQgMTFCNjtCOERCOzExMDUgMTE2RCAxMUI2OyAjICjro5s7IOujmzsg4YSF4YWt4Ya2OyDro5s7IOGEheGFreGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgUllPTEgKK0I4REM7QjhEQzsxMTA1IDExNkQgMTFCNztCOERDOzExMDUgMTE2RCAxMUI3OyAjICjro5w7IOujnDsg4YSF4YWt4Ya3OyDro5w7IOGEheGFreGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgUllPTQorQjhERDtCOEREOzExMDUgMTE2RCAxMUI4O0I4REQ7MTEwNSAxMTZEIDExQjg7ICMgKOujnTsg66OdOyDhhIXhha3hhrg7IOujnTsg4YSF4YWt4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBSWU9CCitCOERFO0I4REU7MTEwNSAxMTZEIDExQjk7QjhERTsxMTA1IDExNkQgMTFCOTsgIyAo66OeOyDro547IOGEheGFreGGuTsg66OeOyDhhIXhha3hhrk7ICkgSEFOR1VMIFNZTExBQkxFIFJZT0JTCitCOERGO0I4REY7MTEwNSAxMTZEIDExQkE7QjhERjsxMTA1IDExNkQgMTFCQTsgIyAo66OfOyDro587IOGEheGFreGGujsg66OfOyDhhIXhha3hhro7ICkgSEFOR1VMIFNZTExBQkxFIFJZT1MKK0I4RTA7QjhFMDsxMTA1IDExNkQgMTFCQjtCOEUwOzExMDUgMTE2RCAxMUJCOyAjICjro6A7IOujoDsg4YSF4YWt4Ya7OyDro6A7IOGEheGFreGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgUllPU1MKK0I4RTE7QjhFMTsxMTA1IDExNkQgMTFCQztCOEUxOzExMDUgMTE2RCAxMUJDOyAjICjro6E7IOujoTsg4YSF4YWt4Ya8OyDro6E7IOGEheGFreGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgUllPTkcKK0I4RTI7QjhFMjsxMTA1IDExNkQgMTFCRDtCOEUyOzExMDUgMTE2RCAxMUJEOyAjICjro6I7IOujojsg4YSF4YWt4Ya9OyDro6I7IOGEheGFreGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgUllPSgorQjhFMztCOEUzOzExMDUgMTE2RCAxMUJFO0I4RTM7MTEwNSAxMTZEIDExQkU7ICMgKOujozsg66OjOyDhhIXhha3hhr47IOujozsg4YSF4YWt4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBSWU9DCitCOEU0O0I4RTQ7MTEwNSAxMTZEIDExQkY7QjhFNDsxMTA1IDExNkQgMTFCRjsgIyAo66OkOyDro6Q7IOGEheGFreGGvzsg66OkOyDhhIXhha3hhr87ICkgSEFOR1VMIFNZTExBQkxFIFJZT0sKK0I4RTU7QjhFNTsxMTA1IDExNkQgMTFDMDtCOEU1OzExMDUgMTE2RCAxMUMwOyAjICjro6U7IOujpTsg4YSF4YWt4YeAOyDro6U7IOGEheGFreGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgUllPVAorQjhFNjtCOEU2OzExMDUgMTE2RCAxMUMxO0I4RTY7MTEwNSAxMTZEIDExQzE7ICMgKOujpjsg66OmOyDhhIXhha3hh4E7IOujpjsg4YSF4YWt4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBSWU9QCitCOEU3O0I4RTc7MTEwNSAxMTZEIDExQzI7QjhFNzsxMTA1IDExNkQgMTFDMjsgIyAo66OnOyDro6c7IOGEheGFreGHgjsg66OnOyDhhIXhha3hh4I7ICkgSEFOR1VMIFNZTExBQkxFIFJZT0gKK0I4RTg7QjhFODsxMTA1IDExNkU7QjhFODsxMTA1IDExNkU7ICMgKOujqDsg66OoOyDhhIXhha47IOujqDsg4YSF4YWuOyApIEhBTkdVTCBTWUxMQUJMRSBSVQorQjhFOTtCOEU5OzExMDUgMTE2RSAxMUE4O0I4RTk7MTEwNSAxMTZFIDExQTg7ICMgKOujqTsg66OpOyDhhIXhha7hhqg7IOujqTsg4YSF4YWu4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBSVUcKK0I4RUE7QjhFQTsxMTA1IDExNkUgMTFBOTtCOEVBOzExMDUgMTE2RSAxMUE5OyAjICjro6o7IOujqjsg4YSF4YWu4YapOyDro6o7IOGEheGFruGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgUlVHRworQjhFQjtCOEVCOzExMDUgMTE2RSAxMUFBO0I4RUI7MTEwNSAxMTZFIDExQUE7ICMgKOujqzsg66OrOyDhhIXhha7hhqo7IOujqzsg4YSF4YWu4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBSVUdTCitCOEVDO0I4RUM7MTEwNSAxMTZFIDExQUI7QjhFQzsxMTA1IDExNkUgMTFBQjsgIyAo66OsOyDro6w7IOGEheGFruGGqzsg66OsOyDhhIXhha7hhqs7ICkgSEFOR1VMIFNZTExBQkxFIFJVTgorQjhFRDtCOEVEOzExMDUgMTE2RSAxMUFDO0I4RUQ7MTEwNSAxMTZFIDExQUM7ICMgKOujrTsg66OtOyDhhIXhha7hhqw7IOujrTsg4YSF4YWu4YasOyApIEhBTkdVTCBTWUxMQUJMRSBSVU5KCitCOEVFO0I4RUU7MTEwNSAxMTZFIDExQUQ7QjhFRTsxMTA1IDExNkUgMTFBRDsgIyAo66OuOyDro647IOGEheGFruGGrTsg66OuOyDhhIXhha7hhq07ICkgSEFOR1VMIFNZTExBQkxFIFJVTkgKK0I4RUY7QjhFRjsxMTA1IDExNkUgMTFBRTtCOEVGOzExMDUgMTE2RSAxMUFFOyAjICjro687IOujrzsg4YSF4YWu4YauOyDro687IOGEheGFruGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgUlVECitCOEYwO0I4RjA7MTEwNSAxMTZFIDExQUY7QjhGMDsxMTA1IDExNkUgMTFBRjsgIyAo66OwOyDro7A7IOGEheGFruGGrzsg66OwOyDhhIXhha7hhq87ICkgSEFOR1VMIFNZTExBQkxFIFJVTAorQjhGMTtCOEYxOzExMDUgMTE2RSAxMUIwO0I4RjE7MTEwNSAxMTZFIDExQjA7ICMgKOujsTsg66OxOyDhhIXhha7hhrA7IOujsTsg4YSF4YWu4YawOyApIEhBTkdVTCBTWUxMQUJMRSBSVUxHCitCOEYyO0I4RjI7MTEwNSAxMTZFIDExQjE7QjhGMjsxMTA1IDExNkUgMTFCMTsgIyAo66OyOyDro7I7IOGEheGFruGGsTsg66OyOyDhhIXhha7hhrE7ICkgSEFOR1VMIFNZTExBQkxFIFJVTE0KK0I4RjM7QjhGMzsxMTA1IDExNkUgMTFCMjtCOEYzOzExMDUgMTE2RSAxMUIyOyAjICjro7M7IOujszsg4YSF4YWu4YayOyDro7M7IOGEheGFruGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgUlVMQgorQjhGNDtCOEY0OzExMDUgMTE2RSAxMUIzO0I4RjQ7MTEwNSAxMTZFIDExQjM7ICMgKOujtDsg66O0OyDhhIXhha7hhrM7IOujtDsg4YSF4YWu4YazOyApIEhBTkdVTCBTWUxMQUJMRSBSVUxTCitCOEY1O0I4RjU7MTEwNSAxMTZFIDExQjQ7QjhGNTsxMTA1IDExNkUgMTFCNDsgIyAo66O1OyDro7U7IOGEheGFruGGtDsg66O1OyDhhIXhha7hhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFJVTFQKK0I4RjY7QjhGNjsxMTA1IDExNkUgMTFCNTtCOEY2OzExMDUgMTE2RSAxMUI1OyAjICjro7Y7IOujtjsg4YSF4YWu4Ya1OyDro7Y7IOGEheGFruGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgUlVMUAorQjhGNztCOEY3OzExMDUgMTE2RSAxMUI2O0I4Rjc7MTEwNSAxMTZFIDExQjY7ICMgKOujtzsg66O3OyDhhIXhha7hhrY7IOujtzsg4YSF4YWu4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBSVUxICitCOEY4O0I4Rjg7MTEwNSAxMTZFIDExQjc7QjhGODsxMTA1IDExNkUgMTFCNzsgIyAo66O4OyDro7g7IOGEheGFruGGtzsg66O4OyDhhIXhha7hhrc7ICkgSEFOR1VMIFNZTExBQkxFIFJVTQorQjhGOTtCOEY5OzExMDUgMTE2RSAxMUI4O0I4Rjk7MTEwNSAxMTZFIDExQjg7ICMgKOujuTsg66O5OyDhhIXhha7hhrg7IOujuTsg4YSF4YWu4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBSVUIKK0I4RkE7QjhGQTsxMTA1IDExNkUgMTFCOTtCOEZBOzExMDUgMTE2RSAxMUI5OyAjICjro7o7IOujujsg4YSF4YWu4Ya5OyDro7o7IOGEheGFruGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgUlVCUworQjhGQjtCOEZCOzExMDUgMTE2RSAxMUJBO0I4RkI7MTEwNSAxMTZFIDExQkE7ICMgKOujuzsg66O7OyDhhIXhha7hhro7IOujuzsg4YSF4YWu4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBSVVMKK0I4RkM7QjhGQzsxMTA1IDExNkUgMTFCQjtCOEZDOzExMDUgMTE2RSAxMUJCOyAjICjro7w7IOujvDsg4YSF4YWu4Ya7OyDro7w7IOGEheGFruGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgUlVTUworQjhGRDtCOEZEOzExMDUgMTE2RSAxMUJDO0I4RkQ7MTEwNSAxMTZFIDExQkM7ICMgKOujvTsg66O9OyDhhIXhha7hhrw7IOujvTsg4YSF4YWu4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBSVU5HCitCOEZFO0I4RkU7MTEwNSAxMTZFIDExQkQ7QjhGRTsxMTA1IDExNkUgMTFCRDsgIyAo66O+OyDro747IOGEheGFruGGvTsg66O+OyDhhIXhha7hhr07ICkgSEFOR1VMIFNZTExBQkxFIFJVSgorQjhGRjtCOEZGOzExMDUgMTE2RSAxMUJFO0I4RkY7MTEwNSAxMTZFIDExQkU7ICMgKOujvzsg66O/OyDhhIXhha7hhr47IOujvzsg4YSF4YWu4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBSVUMKK0I5MDA7QjkwMDsxMTA1IDExNkUgMTFCRjtCOTAwOzExMDUgMTE2RSAxMUJGOyAjICjrpIA7IOukgDsg4YSF4YWu4Ya/OyDrpIA7IOGEheGFruGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgUlVLCitCOTAxO0I5MDE7MTEwNSAxMTZFIDExQzA7QjkwMTsxMTA1IDExNkUgMTFDMDsgIyAo66SBOyDrpIE7IOGEheGFruGHgDsg66SBOyDhhIXhha7hh4A7ICkgSEFOR1VMIFNZTExBQkxFIFJVVAorQjkwMjtCOTAyOzExMDUgMTE2RSAxMUMxO0I5MDI7MTEwNSAxMTZFIDExQzE7ICMgKOukgjsg66SCOyDhhIXhha7hh4E7IOukgjsg4YSF4YWu4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBSVVAKK0I5MDM7QjkwMzsxMTA1IDExNkUgMTFDMjtCOTAzOzExMDUgMTE2RSAxMUMyOyAjICjrpIM7IOukgzsg4YSF4YWu4YeCOyDrpIM7IOGEheGFruGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgUlVICitCOTA0O0I5MDQ7MTEwNSAxMTZGO0I5MDQ7MTEwNSAxMTZGOyAjICjrpIQ7IOukhDsg4YSF4YWvOyDrpIQ7IOGEheGFrzsgKSBIQU5HVUwgU1lMTEFCTEUgUldFTworQjkwNTtCOTA1OzExMDUgMTE2RiAxMUE4O0I5MDU7MTEwNSAxMTZGIDExQTg7ICMgKOukhTsg66SFOyDhhIXhha/hhqg7IOukhTsg4YSF4YWv4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBSV0VPRworQjkwNjtCOTA2OzExMDUgMTE2RiAxMUE5O0I5MDY7MTEwNSAxMTZGIDExQTk7ICMgKOukhjsg66SGOyDhhIXhha/hhqk7IOukhjsg4YSF4YWv4YapOyApIEhBTkdVTCBTWUxMQUJMRSBSV0VPR0cKK0I5MDc7QjkwNzsxMTA1IDExNkYgMTFBQTtCOTA3OzExMDUgMTE2RiAxMUFBOyAjICjrpIc7IOukhzsg4YSF4YWv4YaqOyDrpIc7IOGEheGFr+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgUldFT0dTCitCOTA4O0I5MDg7MTEwNSAxMTZGIDExQUI7QjkwODsxMTA1IDExNkYgMTFBQjsgIyAo66SIOyDrpIg7IOGEheGFr+GGqzsg66SIOyDhhIXhha/hhqs7ICkgSEFOR1VMIFNZTExBQkxFIFJXRU9OCitCOTA5O0I5MDk7MTEwNSAxMTZGIDExQUM7QjkwOTsxMTA1IDExNkYgMTFBQzsgIyAo66SJOyDrpIk7IOGEheGFr+GGrDsg66SJOyDhhIXhha/hhqw7ICkgSEFOR1VMIFNZTExBQkxFIFJXRU9OSgorQjkwQTtCOTBBOzExMDUgMTE2RiAxMUFEO0I5MEE7MTEwNSAxMTZGIDExQUQ7ICMgKOukijsg66SKOyDhhIXhha/hhq07IOukijsg4YSF4YWv4YatOyApIEhBTkdVTCBTWUxMQUJMRSBSV0VPTkgKK0I5MEI7QjkwQjsxMTA1IDExNkYgMTFBRTtCOTBCOzExMDUgMTE2RiAxMUFFOyAjICjrpIs7IOukizsg4YSF4YWv4YauOyDrpIs7IOGEheGFr+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgUldFT0QKK0I5MEM7QjkwQzsxMTA1IDExNkYgMTFBRjtCOTBDOzExMDUgMTE2RiAxMUFGOyAjICjrpIw7IOukjDsg4YSF4YWv4YavOyDrpIw7IOGEheGFr+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgUldFT0wKK0I5MEQ7QjkwRDsxMTA1IDExNkYgMTFCMDtCOTBEOzExMDUgMTE2RiAxMUIwOyAjICjrpI07IOukjTsg4YSF4YWv4YawOyDrpI07IOGEheGFr+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgUldFT0xHCitCOTBFO0I5MEU7MTEwNSAxMTZGIDExQjE7QjkwRTsxMTA1IDExNkYgMTFCMTsgIyAo66SOOyDrpI47IOGEheGFr+GGsTsg66SOOyDhhIXhha/hhrE7ICkgSEFOR1VMIFNZTExBQkxFIFJXRU9MTQorQjkwRjtCOTBGOzExMDUgMTE2RiAxMUIyO0I5MEY7MTEwNSAxMTZGIDExQjI7ICMgKOukjzsg66SPOyDhhIXhha/hhrI7IOukjzsg4YSF4YWv4YayOyApIEhBTkdVTCBTWUxMQUJMRSBSV0VPTEIKK0I5MTA7QjkxMDsxMTA1IDExNkYgMTFCMztCOTEwOzExMDUgMTE2RiAxMUIzOyAjICjrpJA7IOukkDsg4YSF4YWv4YazOyDrpJA7IOGEheGFr+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgUldFT0xTCitCOTExO0I5MTE7MTEwNSAxMTZGIDExQjQ7QjkxMTsxMTA1IDExNkYgMTFCNDsgIyAo66SROyDrpJE7IOGEheGFr+GGtDsg66SROyDhhIXhha/hhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFJXRU9MVAorQjkxMjtCOTEyOzExMDUgMTE2RiAxMUI1O0I5MTI7MTEwNSAxMTZGIDExQjU7ICMgKOukkjsg66SSOyDhhIXhha/hhrU7IOukkjsg4YSF4YWv4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBSV0VPTFAKK0I5MTM7QjkxMzsxMTA1IDExNkYgMTFCNjtCOTEzOzExMDUgMTE2RiAxMUI2OyAjICjrpJM7IOukkzsg4YSF4YWv4Ya2OyDrpJM7IOGEheGFr+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgUldFT0xICitCOTE0O0I5MTQ7MTEwNSAxMTZGIDExQjc7QjkxNDsxMTA1IDExNkYgMTFCNzsgIyAo66SUOyDrpJQ7IOGEheGFr+GGtzsg66SUOyDhhIXhha/hhrc7ICkgSEFOR1VMIFNZTExBQkxFIFJXRU9NCitCOTE1O0I5MTU7MTEwNSAxMTZGIDExQjg7QjkxNTsxMTA1IDExNkYgMTFCODsgIyAo66SVOyDrpJU7IOGEheGFr+GGuDsg66SVOyDhhIXhha/hhrg7ICkgSEFOR1VMIFNZTExBQkxFIFJXRU9CCitCOTE2O0I5MTY7MTEwNSAxMTZGIDExQjk7QjkxNjsxMTA1IDExNkYgMTFCOTsgIyAo66SWOyDrpJY7IOGEheGFr+GGuTsg66SWOyDhhIXhha/hhrk7ICkgSEFOR1VMIFNZTExBQkxFIFJXRU9CUworQjkxNztCOTE3OzExMDUgMTE2RiAxMUJBO0I5MTc7MTEwNSAxMTZGIDExQkE7ICMgKOuklzsg66SXOyDhhIXhha/hhro7IOuklzsg4YSF4YWv4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBSV0VPUworQjkxODtCOTE4OzExMDUgMTE2RiAxMUJCO0I5MTg7MTEwNSAxMTZGIDExQkI7ICMgKOukmDsg66SYOyDhhIXhha/hhrs7IOukmDsg4YSF4YWv4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBSV0VPU1MKK0I5MTk7QjkxOTsxMTA1IDExNkYgMTFCQztCOTE5OzExMDUgMTE2RiAxMUJDOyAjICjrpJk7IOukmTsg4YSF4YWv4Ya8OyDrpJk7IOGEheGFr+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgUldFT05HCitCOTFBO0I5MUE7MTEwNSAxMTZGIDExQkQ7QjkxQTsxMTA1IDExNkYgMTFCRDsgIyAo66SaOyDrpJo7IOGEheGFr+GGvTsg66SaOyDhhIXhha/hhr07ICkgSEFOR1VMIFNZTExBQkxFIFJXRU9KCitCOTFCO0I5MUI7MTEwNSAxMTZGIDExQkU7QjkxQjsxMTA1IDExNkYgMTFCRTsgIyAo66SbOyDrpJs7IOGEheGFr+GGvjsg66SbOyDhhIXhha/hhr47ICkgSEFOR1VMIFNZTExBQkxFIFJXRU9DCitCOTFDO0I5MUM7MTEwNSAxMTZGIDExQkY7QjkxQzsxMTA1IDExNkYgMTFCRjsgIyAo66ScOyDrpJw7IOGEheGFr+GGvzsg66ScOyDhhIXhha/hhr87ICkgSEFOR1VMIFNZTExBQkxFIFJXRU9LCitCOTFEO0I5MUQ7MTEwNSAxMTZGIDExQzA7QjkxRDsxMTA1IDExNkYgMTFDMDsgIyAo66SdOyDrpJ07IOGEheGFr+GHgDsg66SdOyDhhIXhha/hh4A7ICkgSEFOR1VMIFNZTExBQkxFIFJXRU9UCitCOTFFO0I5MUU7MTEwNSAxMTZGIDExQzE7QjkxRTsxMTA1IDExNkYgMTFDMTsgIyAo66SeOyDrpJ47IOGEheGFr+GHgTsg66SeOyDhhIXhha/hh4E7ICkgSEFOR1VMIFNZTExBQkxFIFJXRU9QCitCOTFGO0I5MUY7MTEwNSAxMTZGIDExQzI7QjkxRjsxMTA1IDExNkYgMTFDMjsgIyAo66SfOyDrpJ87IOGEheGFr+GHgjsg66SfOyDhhIXhha/hh4I7ICkgSEFOR1VMIFNZTExBQkxFIFJXRU9ICitCOTIwO0I5MjA7MTEwNSAxMTcwO0I5MjA7MTEwNSAxMTcwOyAjICjrpKA7IOukoDsg4YSF4YWwOyDrpKA7IOGEheGFsDsgKSBIQU5HVUwgU1lMTEFCTEUgUldFCitCOTIxO0I5MjE7MTEwNSAxMTcwIDExQTg7QjkyMTsxMTA1IDExNzAgMTFBODsgIyAo66ShOyDrpKE7IOGEheGFsOGGqDsg66ShOyDhhIXhhbDhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFJXRUcKK0I5MjI7QjkyMjsxMTA1IDExNzAgMTFBOTtCOTIyOzExMDUgMTE3MCAxMUE5OyAjICjrpKI7IOukojsg4YSF4YWw4YapOyDrpKI7IOGEheGFsOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgUldFR0cKK0I5MjM7QjkyMzsxMTA1IDExNzAgMTFBQTtCOTIzOzExMDUgMTE3MCAxMUFBOyAjICjrpKM7IOukozsg4YSF4YWw4YaqOyDrpKM7IOGEheGFsOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgUldFR1MKK0I5MjQ7QjkyNDsxMTA1IDExNzAgMTFBQjtCOTI0OzExMDUgMTE3MCAxMUFCOyAjICjrpKQ7IOukpDsg4YSF4YWw4YarOyDrpKQ7IOGEheGFsOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgUldFTgorQjkyNTtCOTI1OzExMDUgMTE3MCAxMUFDO0I5MjU7MTEwNSAxMTcwIDExQUM7ICMgKOukpTsg66SlOyDhhIXhhbDhhqw7IOukpTsg4YSF4YWw4YasOyApIEhBTkdVTCBTWUxMQUJMRSBSV0VOSgorQjkyNjtCOTI2OzExMDUgMTE3MCAxMUFEO0I5MjY7MTEwNSAxMTcwIDExQUQ7ICMgKOukpjsg66SmOyDhhIXhhbDhhq07IOukpjsg4YSF4YWw4YatOyApIEhBTkdVTCBTWUxMQUJMRSBSV0VOSAorQjkyNztCOTI3OzExMDUgMTE3MCAxMUFFO0I5Mjc7MTEwNSAxMTcwIDExQUU7ICMgKOukpzsg66SnOyDhhIXhhbDhhq47IOukpzsg4YSF4YWw4YauOyApIEhBTkdVTCBTWUxMQUJMRSBSV0VECitCOTI4O0I5Mjg7MTEwNSAxMTcwIDExQUY7QjkyODsxMTA1IDExNzAgMTFBRjsgIyAo66SoOyDrpKg7IOGEheGFsOGGrzsg66SoOyDhhIXhhbDhhq87ICkgSEFOR1VMIFNZTExBQkxFIFJXRUwKK0I5Mjk7QjkyOTsxMTA1IDExNzAgMTFCMDtCOTI5OzExMDUgMTE3MCAxMUIwOyAjICjrpKk7IOukqTsg4YSF4YWw4YawOyDrpKk7IOGEheGFsOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgUldFTEcKK0I5MkE7QjkyQTsxMTA1IDExNzAgMTFCMTtCOTJBOzExMDUgMTE3MCAxMUIxOyAjICjrpKo7IOukqjsg4YSF4YWw4YaxOyDrpKo7IOGEheGFsOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgUldFTE0KK0I5MkI7QjkyQjsxMTA1IDExNzAgMTFCMjtCOTJCOzExMDUgMTE3MCAxMUIyOyAjICjrpKs7IOukqzsg4YSF4YWw4YayOyDrpKs7IOGEheGFsOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgUldFTEIKK0I5MkM7QjkyQzsxMTA1IDExNzAgMTFCMztCOTJDOzExMDUgMTE3MCAxMUIzOyAjICjrpKw7IOukrDsg4YSF4YWw4YazOyDrpKw7IOGEheGFsOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgUldFTFMKK0I5MkQ7QjkyRDsxMTA1IDExNzAgMTFCNDtCOTJEOzExMDUgMTE3MCAxMUI0OyAjICjrpK07IOukrTsg4YSF4YWw4Ya0OyDrpK07IOGEheGFsOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgUldFTFQKK0I5MkU7QjkyRTsxMTA1IDExNzAgMTFCNTtCOTJFOzExMDUgMTE3MCAxMUI1OyAjICjrpK47IOukrjsg4YSF4YWw4Ya1OyDrpK47IOGEheGFsOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgUldFTFAKK0I5MkY7QjkyRjsxMTA1IDExNzAgMTFCNjtCOTJGOzExMDUgMTE3MCAxMUI2OyAjICjrpK87IOukrzsg4YSF4YWw4Ya2OyDrpK87IOGEheGFsOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgUldFTEgKK0I5MzA7QjkzMDsxMTA1IDExNzAgMTFCNztCOTMwOzExMDUgMTE3MCAxMUI3OyAjICjrpLA7IOuksDsg4YSF4YWw4Ya3OyDrpLA7IOGEheGFsOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgUldFTQorQjkzMTtCOTMxOzExMDUgMTE3MCAxMUI4O0I5MzE7MTEwNSAxMTcwIDExQjg7ICMgKOuksTsg66SxOyDhhIXhhbDhhrg7IOuksTsg4YSF4YWw4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBSV0VCCitCOTMyO0I5MzI7MTEwNSAxMTcwIDExQjk7QjkzMjsxMTA1IDExNzAgMTFCOTsgIyAo66SyOyDrpLI7IOGEheGFsOGGuTsg66SyOyDhhIXhhbDhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFJXRUJTCitCOTMzO0I5MzM7MTEwNSAxMTcwIDExQkE7QjkzMzsxMTA1IDExNzAgMTFCQTsgIyAo66SzOyDrpLM7IOGEheGFsOGGujsg66SzOyDhhIXhhbDhhro7ICkgSEFOR1VMIFNZTExBQkxFIFJXRVMKK0I5MzQ7QjkzNDsxMTA1IDExNzAgMTFCQjtCOTM0OzExMDUgMTE3MCAxMUJCOyAjICjrpLQ7IOuktDsg4YSF4YWw4Ya7OyDrpLQ7IOGEheGFsOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgUldFU1MKK0I5MzU7QjkzNTsxMTA1IDExNzAgMTFCQztCOTM1OzExMDUgMTE3MCAxMUJDOyAjICjrpLU7IOuktTsg4YSF4YWw4Ya8OyDrpLU7IOGEheGFsOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgUldFTkcKK0I5MzY7QjkzNjsxMTA1IDExNzAgMTFCRDtCOTM2OzExMDUgMTE3MCAxMUJEOyAjICjrpLY7IOuktjsg4YSF4YWw4Ya9OyDrpLY7IOGEheGFsOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgUldFSgorQjkzNztCOTM3OzExMDUgMTE3MCAxMUJFO0I5Mzc7MTEwNSAxMTcwIDExQkU7ICMgKOuktzsg66S3OyDhhIXhhbDhhr47IOuktzsg4YSF4YWw4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBSV0VDCitCOTM4O0I5Mzg7MTEwNSAxMTcwIDExQkY7QjkzODsxMTA1IDExNzAgMTFCRjsgIyAo66S4OyDrpLg7IOGEheGFsOGGvzsg66S4OyDhhIXhhbDhhr87ICkgSEFOR1VMIFNZTExBQkxFIFJXRUsKK0I5Mzk7QjkzOTsxMTA1IDExNzAgMTFDMDtCOTM5OzExMDUgMTE3MCAxMUMwOyAjICjrpLk7IOukuTsg4YSF4YWw4YeAOyDrpLk7IOGEheGFsOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgUldFVAorQjkzQTtCOTNBOzExMDUgMTE3MCAxMUMxO0I5M0E7MTEwNSAxMTcwIDExQzE7ICMgKOukujsg66S6OyDhhIXhhbDhh4E7IOukujsg4YSF4YWw4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBSV0VQCitCOTNCO0I5M0I7MTEwNSAxMTcwIDExQzI7QjkzQjsxMTA1IDExNzAgMTFDMjsgIyAo66S7OyDrpLs7IOGEheGFsOGHgjsg66S7OyDhhIXhhbDhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFJXRUgKK0I5M0M7QjkzQzsxMTA1IDExNzE7QjkzQzsxMTA1IDExNzE7ICMgKOukvDsg66S8OyDhhIXhhbE7IOukvDsg4YSF4YWxOyApIEhBTkdVTCBTWUxMQUJMRSBSV0kKK0I5M0Q7QjkzRDsxMTA1IDExNzEgMTFBODtCOTNEOzExMDUgMTE3MSAxMUE4OyAjICjrpL07IOukvTsg4YSF4YWx4YaoOyDrpL07IOGEheGFseGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgUldJRworQjkzRTtCOTNFOzExMDUgMTE3MSAxMUE5O0I5M0U7MTEwNSAxMTcxIDExQTk7ICMgKOukvjsg66S+OyDhhIXhhbHhhqk7IOukvjsg4YSF4YWx4YapOyApIEhBTkdVTCBTWUxMQUJMRSBSV0lHRworQjkzRjtCOTNGOzExMDUgMTE3MSAxMUFBO0I5M0Y7MTEwNSAxMTcxIDExQUE7ICMgKOukvzsg66S/OyDhhIXhhbHhhqo7IOukvzsg4YSF4YWx4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBSV0lHUworQjk0MDtCOTQwOzExMDUgMTE3MSAxMUFCO0I5NDA7MTEwNSAxMTcxIDExQUI7ICMgKOulgDsg66WAOyDhhIXhhbHhhqs7IOulgDsg4YSF4YWx4YarOyApIEhBTkdVTCBTWUxMQUJMRSBSV0lOCitCOTQxO0I5NDE7MTEwNSAxMTcxIDExQUM7Qjk0MTsxMTA1IDExNzEgMTFBQzsgIyAo66WBOyDrpYE7IOGEheGFseGGrDsg66WBOyDhhIXhhbHhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFJXSU5KCitCOTQyO0I5NDI7MTEwNSAxMTcxIDExQUQ7Qjk0MjsxMTA1IDExNzEgMTFBRDsgIyAo66WCOyDrpYI7IOGEheGFseGGrTsg66WCOyDhhIXhhbHhhq07ICkgSEFOR1VMIFNZTExBQkxFIFJXSU5ICitCOTQzO0I5NDM7MTEwNSAxMTcxIDExQUU7Qjk0MzsxMTA1IDExNzEgMTFBRTsgIyAo66WDOyDrpYM7IOGEheGFseGGrjsg66WDOyDhhIXhhbHhhq47ICkgSEFOR1VMIFNZTExBQkxFIFJXSUQKK0I5NDQ7Qjk0NDsxMTA1IDExNzEgMTFBRjtCOTQ0OzExMDUgMTE3MSAxMUFGOyAjICjrpYQ7IOulhDsg4YSF4YWx4YavOyDrpYQ7IOGEheGFseGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgUldJTAorQjk0NTtCOTQ1OzExMDUgMTE3MSAxMUIwO0I5NDU7MTEwNSAxMTcxIDExQjA7ICMgKOulhTsg66WFOyDhhIXhhbHhhrA7IOulhTsg4YSF4YWx4YawOyApIEhBTkdVTCBTWUxMQUJMRSBSV0lMRworQjk0NjtCOTQ2OzExMDUgMTE3MSAxMUIxO0I5NDY7MTEwNSAxMTcxIDExQjE7ICMgKOulhjsg66WGOyDhhIXhhbHhhrE7IOulhjsg4YSF4YWx4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBSV0lMTQorQjk0NztCOTQ3OzExMDUgMTE3MSAxMUIyO0I5NDc7MTEwNSAxMTcxIDExQjI7ICMgKOulhzsg66WHOyDhhIXhhbHhhrI7IOulhzsg4YSF4YWx4YayOyApIEhBTkdVTCBTWUxMQUJMRSBSV0lMQgorQjk0ODtCOTQ4OzExMDUgMTE3MSAxMUIzO0I5NDg7MTEwNSAxMTcxIDExQjM7ICMgKOuliDsg66WIOyDhhIXhhbHhhrM7IOuliDsg4YSF4YWx4YazOyApIEhBTkdVTCBTWUxMQUJMRSBSV0lMUworQjk0OTtCOTQ5OzExMDUgMTE3MSAxMUI0O0I5NDk7MTEwNSAxMTcxIDExQjQ7ICMgKOuliTsg66WJOyDhhIXhhbHhhrQ7IOuliTsg4YSF4YWx4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBSV0lMVAorQjk0QTtCOTRBOzExMDUgMTE3MSAxMUI1O0I5NEE7MTEwNSAxMTcxIDExQjU7ICMgKOulijsg66WKOyDhhIXhhbHhhrU7IOulijsg4YSF4YWx4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBSV0lMUAorQjk0QjtCOTRCOzExMDUgMTE3MSAxMUI2O0I5NEI7MTEwNSAxMTcxIDExQjY7ICMgKOulizsg66WLOyDhhIXhhbHhhrY7IOulizsg4YSF4YWx4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBSV0lMSAorQjk0QztCOTRDOzExMDUgMTE3MSAxMUI3O0I5NEM7MTEwNSAxMTcxIDExQjc7ICMgKOuljDsg66WMOyDhhIXhhbHhhrc7IOuljDsg4YSF4YWx4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBSV0lNCitCOTREO0I5NEQ7MTEwNSAxMTcxIDExQjg7Qjk0RDsxMTA1IDExNzEgMTFCODsgIyAo66WNOyDrpY07IOGEheGFseGGuDsg66WNOyDhhIXhhbHhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFJXSUIKK0I5NEU7Qjk0RTsxMTA1IDExNzEgMTFCOTtCOTRFOzExMDUgMTE3MSAxMUI5OyAjICjrpY47IOuljjsg4YSF4YWx4Ya5OyDrpY47IOGEheGFseGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgUldJQlMKK0I5NEY7Qjk0RjsxMTA1IDExNzEgMTFCQTtCOTRGOzExMDUgMTE3MSAxMUJBOyAjICjrpY87IOuljzsg4YSF4YWx4Ya6OyDrpY87IOGEheGFseGGujsgKSBIQU5HVUwgU1lMTEFCTEUgUldJUworQjk1MDtCOTUwOzExMDUgMTE3MSAxMUJCO0I5NTA7MTEwNSAxMTcxIDExQkI7ICMgKOulkDsg66WQOyDhhIXhhbHhhrs7IOulkDsg4YSF4YWx4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBSV0lTUworQjk1MTtCOTUxOzExMDUgMTE3MSAxMUJDO0I5NTE7MTEwNSAxMTcxIDExQkM7ICMgKOulkTsg66WROyDhhIXhhbHhhrw7IOulkTsg4YSF4YWx4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBSV0lORworQjk1MjtCOTUyOzExMDUgMTE3MSAxMUJEO0I5NTI7MTEwNSAxMTcxIDExQkQ7ICMgKOulkjsg66WSOyDhhIXhhbHhhr07IOulkjsg4YSF4YWx4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBSV0lKCitCOTUzO0I5NTM7MTEwNSAxMTcxIDExQkU7Qjk1MzsxMTA1IDExNzEgMTFCRTsgIyAo66WTOyDrpZM7IOGEheGFseGGvjsg66WTOyDhhIXhhbHhhr47ICkgSEFOR1VMIFNZTExBQkxFIFJXSUMKK0I5NTQ7Qjk1NDsxMTA1IDExNzEgMTFCRjtCOTU0OzExMDUgMTE3MSAxMUJGOyAjICjrpZQ7IOullDsg4YSF4YWx4Ya/OyDrpZQ7IOGEheGFseGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgUldJSworQjk1NTtCOTU1OzExMDUgMTE3MSAxMUMwO0I5NTU7MTEwNSAxMTcxIDExQzA7ICMgKOullTsg66WVOyDhhIXhhbHhh4A7IOullTsg4YSF4YWx4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBSV0lUCitCOTU2O0I5NTY7MTEwNSAxMTcxIDExQzE7Qjk1NjsxMTA1IDExNzEgMTFDMTsgIyAo66WWOyDrpZY7IOGEheGFseGHgTsg66WWOyDhhIXhhbHhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFJXSVAKK0I5NTc7Qjk1NzsxMTA1IDExNzEgMTFDMjtCOTU3OzExMDUgMTE3MSAxMUMyOyAjICjrpZc7IOullzsg4YSF4YWx4YeCOyDrpZc7IOGEheGFseGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgUldJSAorQjk1ODtCOTU4OzExMDUgMTE3MjtCOTU4OzExMDUgMTE3MjsgIyAo66WYOyDrpZg7IOGEheGFsjsg66WYOyDhhIXhhbI7ICkgSEFOR1VMIFNZTExBQkxFIFJZVQorQjk1OTtCOTU5OzExMDUgMTE3MiAxMUE4O0I5NTk7MTEwNSAxMTcyIDExQTg7ICMgKOulmTsg66WZOyDhhIXhhbLhhqg7IOulmTsg4YSF4YWy4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBSWVVHCitCOTVBO0I5NUE7MTEwNSAxMTcyIDExQTk7Qjk1QTsxMTA1IDExNzIgMTFBOTsgIyAo66WaOyDrpZo7IOGEheGFsuGGqTsg66WaOyDhhIXhhbLhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFJZVUdHCitCOTVCO0I5NUI7MTEwNSAxMTcyIDExQUE7Qjk1QjsxMTA1IDExNzIgMTFBQTsgIyAo66WbOyDrpZs7IOGEheGFsuGGqjsg66WbOyDhhIXhhbLhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFJZVUdTCitCOTVDO0I5NUM7MTEwNSAxMTcyIDExQUI7Qjk1QzsxMTA1IDExNzIgMTFBQjsgIyAo66WcOyDrpZw7IOGEheGFsuGGqzsg66WcOyDhhIXhhbLhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFJZVU4KK0I5NUQ7Qjk1RDsxMTA1IDExNzIgMTFBQztCOTVEOzExMDUgMTE3MiAxMUFDOyAjICjrpZ07IOulnTsg4YSF4YWy4YasOyDrpZ07IOGEheGFsuGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgUllVTkoKK0I5NUU7Qjk1RTsxMTA1IDExNzIgMTFBRDtCOTVFOzExMDUgMTE3MiAxMUFEOyAjICjrpZ47IOulnjsg4YSF4YWy4YatOyDrpZ47IOGEheGFsuGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgUllVTkgKK0I5NUY7Qjk1RjsxMTA1IDExNzIgMTFBRTtCOTVGOzExMDUgMTE3MiAxMUFFOyAjICjrpZ87IOulnzsg4YSF4YWy4YauOyDrpZ87IOGEheGFsuGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgUllVRAorQjk2MDtCOTYwOzExMDUgMTE3MiAxMUFGO0I5NjA7MTEwNSAxMTcyIDExQUY7ICMgKOuloDsg66WgOyDhhIXhhbLhhq87IOuloDsg4YSF4YWy4YavOyApIEhBTkdVTCBTWUxMQUJMRSBSWVVMCitCOTYxO0I5NjE7MTEwNSAxMTcyIDExQjA7Qjk2MTsxMTA1IDExNzIgMTFCMDsgIyAo66WhOyDrpaE7IOGEheGFsuGGsDsg66WhOyDhhIXhhbLhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFJZVUxHCitCOTYyO0I5NjI7MTEwNSAxMTcyIDExQjE7Qjk2MjsxMTA1IDExNzIgMTFCMTsgIyAo66WiOyDrpaI7IOGEheGFsuGGsTsg66WiOyDhhIXhhbLhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFJZVUxNCitCOTYzO0I5NjM7MTEwNSAxMTcyIDExQjI7Qjk2MzsxMTA1IDExNzIgMTFCMjsgIyAo66WjOyDrpaM7IOGEheGFsuGGsjsg66WjOyDhhIXhhbLhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFJZVUxCCitCOTY0O0I5NjQ7MTEwNSAxMTcyIDExQjM7Qjk2NDsxMTA1IDExNzIgMTFCMzsgIyAo66WkOyDrpaQ7IOGEheGFsuGGszsg66WkOyDhhIXhhbLhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFJZVUxTCitCOTY1O0I5NjU7MTEwNSAxMTcyIDExQjQ7Qjk2NTsxMTA1IDExNzIgMTFCNDsgIyAo66WlOyDrpaU7IOGEheGFsuGGtDsg66WlOyDhhIXhhbLhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFJZVUxUCitCOTY2O0I5NjY7MTEwNSAxMTcyIDExQjU7Qjk2NjsxMTA1IDExNzIgMTFCNTsgIyAo66WmOyDrpaY7IOGEheGFsuGGtTsg66WmOyDhhIXhhbLhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFJZVUxQCitCOTY3O0I5Njc7MTEwNSAxMTcyIDExQjY7Qjk2NzsxMTA1IDExNzIgMTFCNjsgIyAo66WnOyDrpac7IOGEheGFsuGGtjsg66WnOyDhhIXhhbLhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFJZVUxICitCOTY4O0I5Njg7MTEwNSAxMTcyIDExQjc7Qjk2ODsxMTA1IDExNzIgMTFCNzsgIyAo66WoOyDrpag7IOGEheGFsuGGtzsg66WoOyDhhIXhhbLhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFJZVU0KK0I5Njk7Qjk2OTsxMTA1IDExNzIgMTFCODtCOTY5OzExMDUgMTE3MiAxMUI4OyAjICjrpak7IOulqTsg4YSF4YWy4Ya4OyDrpak7IOGEheGFsuGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgUllVQgorQjk2QTtCOTZBOzExMDUgMTE3MiAxMUI5O0I5NkE7MTEwNSAxMTcyIDExQjk7ICMgKOulqjsg66WqOyDhhIXhhbLhhrk7IOulqjsg4YSF4YWy4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBSWVVCUworQjk2QjtCOTZCOzExMDUgMTE3MiAxMUJBO0I5NkI7MTEwNSAxMTcyIDExQkE7ICMgKOulqzsg66WrOyDhhIXhhbLhhro7IOulqzsg4YSF4YWy4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBSWVVTCitCOTZDO0I5NkM7MTEwNSAxMTcyIDExQkI7Qjk2QzsxMTA1IDExNzIgMTFCQjsgIyAo66WsOyDrpaw7IOGEheGFsuGGuzsg66WsOyDhhIXhhbLhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFJZVVNTCitCOTZEO0I5NkQ7MTEwNSAxMTcyIDExQkM7Qjk2RDsxMTA1IDExNzIgMTFCQzsgIyAo66WtOyDrpa07IOGEheGFsuGGvDsg66WtOyDhhIXhhbLhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFJZVU5HCitCOTZFO0I5NkU7MTEwNSAxMTcyIDExQkQ7Qjk2RTsxMTA1IDExNzIgMTFCRDsgIyAo66WuOyDrpa47IOGEheGFsuGGvTsg66WuOyDhhIXhhbLhhr07ICkgSEFOR1VMIFNZTExBQkxFIFJZVUoKK0I5NkY7Qjk2RjsxMTA1IDExNzIgMTFCRTtCOTZGOzExMDUgMTE3MiAxMUJFOyAjICjrpa87IOulrzsg4YSF4YWy4Ya+OyDrpa87IOGEheGFsuGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgUllVQworQjk3MDtCOTcwOzExMDUgMTE3MiAxMUJGO0I5NzA7MTEwNSAxMTcyIDExQkY7ICMgKOulsDsg66WwOyDhhIXhhbLhhr87IOulsDsg4YSF4YWy4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBSWVVLCitCOTcxO0I5NzE7MTEwNSAxMTcyIDExQzA7Qjk3MTsxMTA1IDExNzIgMTFDMDsgIyAo66WxOyDrpbE7IOGEheGFsuGHgDsg66WxOyDhhIXhhbLhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFJZVVQKK0I5NzI7Qjk3MjsxMTA1IDExNzIgMTFDMTtCOTcyOzExMDUgMTE3MiAxMUMxOyAjICjrpbI7IOulsjsg4YSF4YWy4YeBOyDrpbI7IOGEheGFsuGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgUllVUAorQjk3MztCOTczOzExMDUgMTE3MiAxMUMyO0I5NzM7MTEwNSAxMTcyIDExQzI7ICMgKOulszsg66WzOyDhhIXhhbLhh4I7IOulszsg4YSF4YWy4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBSWVVICitCOTc0O0I5NzQ7MTEwNSAxMTczO0I5NzQ7MTEwNSAxMTczOyAjICjrpbQ7IOultDsg4YSF4YWzOyDrpbQ7IOGEheGFszsgKSBIQU5HVUwgU1lMTEFCTEUgUkVVCitCOTc1O0I5NzU7MTEwNSAxMTczIDExQTg7Qjk3NTsxMTA1IDExNzMgMTFBODsgIyAo66W1OyDrpbU7IOGEheGFs+GGqDsg66W1OyDhhIXhhbPhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFJFVUcKK0I5NzY7Qjk3NjsxMTA1IDExNzMgMTFBOTtCOTc2OzExMDUgMTE3MyAxMUE5OyAjICjrpbY7IOultjsg4YSF4YWz4YapOyDrpbY7IOGEheGFs+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgUkVVR0cKK0I5Nzc7Qjk3NzsxMTA1IDExNzMgMTFBQTtCOTc3OzExMDUgMTE3MyAxMUFBOyAjICjrpbc7IOultzsg4YSF4YWz4YaqOyDrpbc7IOGEheGFs+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgUkVVR1MKK0I5Nzg7Qjk3ODsxMTA1IDExNzMgMTFBQjtCOTc4OzExMDUgMTE3MyAxMUFCOyAjICjrpbg7IOuluDsg4YSF4YWz4YarOyDrpbg7IOGEheGFs+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgUkVVTgorQjk3OTtCOTc5OzExMDUgMTE3MyAxMUFDO0I5Nzk7MTEwNSAxMTczIDExQUM7ICMgKOuluTsg66W5OyDhhIXhhbPhhqw7IOuluTsg4YSF4YWz4YasOyApIEhBTkdVTCBTWUxMQUJMRSBSRVVOSgorQjk3QTtCOTdBOzExMDUgMTE3MyAxMUFEO0I5N0E7MTEwNSAxMTczIDExQUQ7ICMgKOulujsg66W6OyDhhIXhhbPhhq07IOulujsg4YSF4YWz4YatOyApIEhBTkdVTCBTWUxMQUJMRSBSRVVOSAorQjk3QjtCOTdCOzExMDUgMTE3MyAxMUFFO0I5N0I7MTEwNSAxMTczIDExQUU7ICMgKOuluzsg66W7OyDhhIXhhbPhhq47IOuluzsg4YSF4YWz4YauOyApIEhBTkdVTCBTWUxMQUJMRSBSRVVECitCOTdDO0I5N0M7MTEwNSAxMTczIDExQUY7Qjk3QzsxMTA1IDExNzMgMTFBRjsgIyAo66W8OyDrpbw7IOGEheGFs+GGrzsg66W8OyDhhIXhhbPhhq87ICkgSEFOR1VMIFNZTExBQkxFIFJFVUwKK0I5N0Q7Qjk3RDsxMTA1IDExNzMgMTFCMDtCOTdEOzExMDUgMTE3MyAxMUIwOyAjICjrpb07IOulvTsg4YSF4YWz4YawOyDrpb07IOGEheGFs+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgUkVVTEcKK0I5N0U7Qjk3RTsxMTA1IDExNzMgMTFCMTtCOTdFOzExMDUgMTE3MyAxMUIxOyAjICjrpb47IOulvjsg4YSF4YWz4YaxOyDrpb47IOGEheGFs+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgUkVVTE0KK0I5N0Y7Qjk3RjsxMTA1IDExNzMgMTFCMjtCOTdGOzExMDUgMTE3MyAxMUIyOyAjICjrpb87IOulvzsg4YSF4YWz4YayOyDrpb87IOGEheGFs+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgUkVVTEIKK0I5ODA7Qjk4MDsxMTA1IDExNzMgMTFCMztCOTgwOzExMDUgMTE3MyAxMUIzOyAjICjrpoA7IOumgDsg4YSF4YWz4YazOyDrpoA7IOGEheGFs+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgUkVVTFMKK0I5ODE7Qjk4MTsxMTA1IDExNzMgMTFCNDtCOTgxOzExMDUgMTE3MyAxMUI0OyAjICjrpoE7IOumgTsg4YSF4YWz4Ya0OyDrpoE7IOGEheGFs+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgUkVVTFQKK0I5ODI7Qjk4MjsxMTA1IDExNzMgMTFCNTtCOTgyOzExMDUgMTE3MyAxMUI1OyAjICjrpoI7IOumgjsg4YSF4YWz4Ya1OyDrpoI7IOGEheGFs+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgUkVVTFAKK0I5ODM7Qjk4MzsxMTA1IDExNzMgMTFCNjtCOTgzOzExMDUgMTE3MyAxMUI2OyAjICjrpoM7IOumgzsg4YSF4YWz4Ya2OyDrpoM7IOGEheGFs+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgUkVVTEgKK0I5ODQ7Qjk4NDsxMTA1IDExNzMgMTFCNztCOTg0OzExMDUgMTE3MyAxMUI3OyAjICjrpoQ7IOumhDsg4YSF4YWz4Ya3OyDrpoQ7IOGEheGFs+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgUkVVTQorQjk4NTtCOTg1OzExMDUgMTE3MyAxMUI4O0I5ODU7MTEwNSAxMTczIDExQjg7ICMgKOumhTsg66aFOyDhhIXhhbPhhrg7IOumhTsg4YSF4YWz4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBSRVVCCitCOTg2O0I5ODY7MTEwNSAxMTczIDExQjk7Qjk4NjsxMTA1IDExNzMgMTFCOTsgIyAo66aGOyDrpoY7IOGEheGFs+GGuTsg66aGOyDhhIXhhbPhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFJFVUJTCitCOTg3O0I5ODc7MTEwNSAxMTczIDExQkE7Qjk4NzsxMTA1IDExNzMgMTFCQTsgIyAo66aHOyDrpoc7IOGEheGFs+GGujsg66aHOyDhhIXhhbPhhro7ICkgSEFOR1VMIFNZTExBQkxFIFJFVVMKK0I5ODg7Qjk4ODsxMTA1IDExNzMgMTFCQjtCOTg4OzExMDUgMTE3MyAxMUJCOyAjICjrpog7IOumiDsg4YSF4YWz4Ya7OyDrpog7IOGEheGFs+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgUkVVU1MKK0I5ODk7Qjk4OTsxMTA1IDExNzMgMTFCQztCOTg5OzExMDUgMTE3MyAxMUJDOyAjICjrpok7IOumiTsg4YSF4YWz4Ya8OyDrpok7IOGEheGFs+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgUkVVTkcKK0I5OEE7Qjk4QTsxMTA1IDExNzMgMTFCRDtCOThBOzExMDUgMTE3MyAxMUJEOyAjICjrpoo7IOumijsg4YSF4YWz4Ya9OyDrpoo7IOGEheGFs+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgUkVVSgorQjk4QjtCOThCOzExMDUgMTE3MyAxMUJFO0I5OEI7MTEwNSAxMTczIDExQkU7ICMgKOumizsg66aLOyDhhIXhhbPhhr47IOumizsg4YSF4YWz4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBSRVVDCitCOThDO0I5OEM7MTEwNSAxMTczIDExQkY7Qjk4QzsxMTA1IDExNzMgMTFCRjsgIyAo66aMOyDrpow7IOGEheGFs+GGvzsg66aMOyDhhIXhhbPhhr87ICkgSEFOR1VMIFNZTExBQkxFIFJFVUsKK0I5OEQ7Qjk4RDsxMTA1IDExNzMgMTFDMDtCOThEOzExMDUgMTE3MyAxMUMwOyAjICjrpo07IOumjTsg4YSF4YWz4YeAOyDrpo07IOGEheGFs+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgUkVVVAorQjk4RTtCOThFOzExMDUgMTE3MyAxMUMxO0I5OEU7MTEwNSAxMTczIDExQzE7ICMgKOumjjsg66aOOyDhhIXhhbPhh4E7IOumjjsg4YSF4YWz4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBSRVVQCitCOThGO0I5OEY7MTEwNSAxMTczIDExQzI7Qjk4RjsxMTA1IDExNzMgMTFDMjsgIyAo66aPOyDrpo87IOGEheGFs+GHgjsg66aPOyDhhIXhhbPhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFJFVUgKK0I5OTA7Qjk5MDsxMTA1IDExNzQ7Qjk5MDsxMTA1IDExNzQ7ICMgKOumkDsg66aQOyDhhIXhhbQ7IOumkDsg4YSF4YW0OyApIEhBTkdVTCBTWUxMQUJMRSBSWUkKK0I5OTE7Qjk5MTsxMTA1IDExNzQgMTFBODtCOTkxOzExMDUgMTE3NCAxMUE4OyAjICjrppE7IOumkTsg4YSF4YW04YaoOyDrppE7IOGEheGFtOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgUllJRworQjk5MjtCOTkyOzExMDUgMTE3NCAxMUE5O0I5OTI7MTEwNSAxMTc0IDExQTk7ICMgKOumkjsg66aSOyDhhIXhhbThhqk7IOumkjsg4YSF4YW04YapOyApIEhBTkdVTCBTWUxMQUJMRSBSWUlHRworQjk5MztCOTkzOzExMDUgMTE3NCAxMUFBO0I5OTM7MTEwNSAxMTc0IDExQUE7ICMgKOumkzsg66aTOyDhhIXhhbThhqo7IOumkzsg4YSF4YW04YaqOyApIEhBTkdVTCBTWUxMQUJMRSBSWUlHUworQjk5NDtCOTk0OzExMDUgMTE3NCAxMUFCO0I5OTQ7MTEwNSAxMTc0IDExQUI7ICMgKOumlDsg66aUOyDhhIXhhbThhqs7IOumlDsg4YSF4YW04YarOyApIEhBTkdVTCBTWUxMQUJMRSBSWUlOCitCOTk1O0I5OTU7MTEwNSAxMTc0IDExQUM7Qjk5NTsxMTA1IDExNzQgMTFBQzsgIyAo66aVOyDrppU7IOGEheGFtOGGrDsg66aVOyDhhIXhhbThhqw7ICkgSEFOR1VMIFNZTExBQkxFIFJZSU5KCitCOTk2O0I5OTY7MTEwNSAxMTc0IDExQUQ7Qjk5NjsxMTA1IDExNzQgMTFBRDsgIyAo66aWOyDrppY7IOGEheGFtOGGrTsg66aWOyDhhIXhhbThhq07ICkgSEFOR1VMIFNZTExBQkxFIFJZSU5ICitCOTk3O0I5OTc7MTEwNSAxMTc0IDExQUU7Qjk5NzsxMTA1IDExNzQgMTFBRTsgIyAo66aXOyDrppc7IOGEheGFtOGGrjsg66aXOyDhhIXhhbThhq47ICkgSEFOR1VMIFNZTExBQkxFIFJZSUQKK0I5OTg7Qjk5ODsxMTA1IDExNzQgMTFBRjtCOTk4OzExMDUgMTE3NCAxMUFGOyAjICjrppg7IOummDsg4YSF4YW04YavOyDrppg7IOGEheGFtOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgUllJTAorQjk5OTtCOTk5OzExMDUgMTE3NCAxMUIwO0I5OTk7MTEwNSAxMTc0IDExQjA7ICMgKOummTsg66aZOyDhhIXhhbThhrA7IOummTsg4YSF4YW04YawOyApIEhBTkdVTCBTWUxMQUJMRSBSWUlMRworQjk5QTtCOTlBOzExMDUgMTE3NCAxMUIxO0I5OUE7MTEwNSAxMTc0IDExQjE7ICMgKOummjsg66aaOyDhhIXhhbThhrE7IOummjsg4YSF4YW04YaxOyApIEhBTkdVTCBTWUxMQUJMRSBSWUlMTQorQjk5QjtCOTlCOzExMDUgMTE3NCAxMUIyO0I5OUI7MTEwNSAxMTc0IDExQjI7ICMgKOummzsg66abOyDhhIXhhbThhrI7IOummzsg4YSF4YW04YayOyApIEhBTkdVTCBTWUxMQUJMRSBSWUlMQgorQjk5QztCOTlDOzExMDUgMTE3NCAxMUIzO0I5OUM7MTEwNSAxMTc0IDExQjM7ICMgKOumnDsg66acOyDhhIXhhbThhrM7IOumnDsg4YSF4YW04YazOyApIEhBTkdVTCBTWUxMQUJMRSBSWUlMUworQjk5RDtCOTlEOzExMDUgMTE3NCAxMUI0O0I5OUQ7MTEwNSAxMTc0IDExQjQ7ICMgKOumnTsg66adOyDhhIXhhbThhrQ7IOumnTsg4YSF4YW04Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBSWUlMVAorQjk5RTtCOTlFOzExMDUgMTE3NCAxMUI1O0I5OUU7MTEwNSAxMTc0IDExQjU7ICMgKOumnjsg66aeOyDhhIXhhbThhrU7IOumnjsg4YSF4YW04Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBSWUlMUAorQjk5RjtCOTlGOzExMDUgMTE3NCAxMUI2O0I5OUY7MTEwNSAxMTc0IDExQjY7ICMgKOumnzsg66afOyDhhIXhhbThhrY7IOumnzsg4YSF4YW04Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBSWUlMSAorQjlBMDtCOUEwOzExMDUgMTE3NCAxMUI3O0I5QTA7MTEwNSAxMTc0IDExQjc7ICMgKOumoDsg66agOyDhhIXhhbThhrc7IOumoDsg4YSF4YW04Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBSWUlNCitCOUExO0I5QTE7MTEwNSAxMTc0IDExQjg7QjlBMTsxMTA1IDExNzQgMTFCODsgIyAo66ahOyDrpqE7IOGEheGFtOGGuDsg66ahOyDhhIXhhbThhrg7ICkgSEFOR1VMIFNZTExBQkxFIFJZSUIKK0I5QTI7QjlBMjsxMTA1IDExNzQgMTFCOTtCOUEyOzExMDUgMTE3NCAxMUI5OyAjICjrpqI7IOumojsg4YSF4YW04Ya5OyDrpqI7IOGEheGFtOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgUllJQlMKK0I5QTM7QjlBMzsxMTA1IDExNzQgMTFCQTtCOUEzOzExMDUgMTE3NCAxMUJBOyAjICjrpqM7IOumozsg4YSF4YW04Ya6OyDrpqM7IOGEheGFtOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgUllJUworQjlBNDtCOUE0OzExMDUgMTE3NCAxMUJCO0I5QTQ7MTEwNSAxMTc0IDExQkI7ICMgKOumpDsg66akOyDhhIXhhbThhrs7IOumpDsg4YSF4YW04Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBSWUlTUworQjlBNTtCOUE1OzExMDUgMTE3NCAxMUJDO0I5QTU7MTEwNSAxMTc0IDExQkM7ICMgKOumpTsg66alOyDhhIXhhbThhrw7IOumpTsg4YSF4YW04Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBSWUlORworQjlBNjtCOUE2OzExMDUgMTE3NCAxMUJEO0I5QTY7MTEwNSAxMTc0IDExQkQ7ICMgKOumpjsg66amOyDhhIXhhbThhr07IOumpjsg4YSF4YW04Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBSWUlKCitCOUE3O0I5QTc7MTEwNSAxMTc0IDExQkU7QjlBNzsxMTA1IDExNzQgMTFCRTsgIyAo66anOyDrpqc7IOGEheGFtOGGvjsg66anOyDhhIXhhbThhr47ICkgSEFOR1VMIFNZTExBQkxFIFJZSUMKK0I5QTg7QjlBODsxMTA1IDExNzQgMTFCRjtCOUE4OzExMDUgMTE3NCAxMUJGOyAjICjrpqg7IOumqDsg4YSF4YW04Ya/OyDrpqg7IOGEheGFtOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgUllJSworQjlBOTtCOUE5OzExMDUgMTE3NCAxMUMwO0I5QTk7MTEwNSAxMTc0IDExQzA7ICMgKOumqTsg66apOyDhhIXhhbThh4A7IOumqTsg4YSF4YW04YeAOyApIEhBTkdVTCBTWUxMQUJMRSBSWUlUCitCOUFBO0I5QUE7MTEwNSAxMTc0IDExQzE7QjlBQTsxMTA1IDExNzQgMTFDMTsgIyAo66aqOyDrpqo7IOGEheGFtOGHgTsg66aqOyDhhIXhhbThh4E7ICkgSEFOR1VMIFNZTExBQkxFIFJZSVAKK0I5QUI7QjlBQjsxMTA1IDExNzQgMTFDMjtCOUFCOzExMDUgMTE3NCAxMUMyOyAjICjrpqs7IOumqzsg4YSF4YW04YeCOyDrpqs7IOGEheGFtOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgUllJSAorQjlBQztCOUFDOzExMDUgMTE3NTtCOUFDOzExMDUgMTE3NTsgIyAo66asOyDrpqw7IOGEheGFtTsg66asOyDhhIXhhbU7ICkgSEFOR1VMIFNZTExBQkxFIFJJCitCOUFEO0I5QUQ7MTEwNSAxMTc1IDExQTg7QjlBRDsxMTA1IDExNzUgMTFBODsgIyAo66atOyDrpq07IOGEheGFteGGqDsg66atOyDhhIXhhbXhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFJJRworQjlBRTtCOUFFOzExMDUgMTE3NSAxMUE5O0I5QUU7MTEwNSAxMTc1IDExQTk7ICMgKOumrjsg66auOyDhhIXhhbXhhqk7IOumrjsg4YSF4YW14YapOyApIEhBTkdVTCBTWUxMQUJMRSBSSUdHCitCOUFGO0I5QUY7MTEwNSAxMTc1IDExQUE7QjlBRjsxMTA1IDExNzUgMTFBQTsgIyAo66avOyDrpq87IOGEheGFteGGqjsg66avOyDhhIXhhbXhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFJJR1MKK0I5QjA7QjlCMDsxMTA1IDExNzUgMTFBQjtCOUIwOzExMDUgMTE3NSAxMUFCOyAjICjrprA7IOumsDsg4YSF4YW14YarOyDrprA7IOGEheGFteGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgUklOCitCOUIxO0I5QjE7MTEwNSAxMTc1IDExQUM7QjlCMTsxMTA1IDExNzUgMTFBQzsgIyAo66axOyDrprE7IOGEheGFteGGrDsg66axOyDhhIXhhbXhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFJJTkoKK0I5QjI7QjlCMjsxMTA1IDExNzUgMTFBRDtCOUIyOzExMDUgMTE3NSAxMUFEOyAjICjrprI7IOumsjsg4YSF4YW14YatOyDrprI7IOGEheGFteGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgUklOSAorQjlCMztCOUIzOzExMDUgMTE3NSAxMUFFO0I5QjM7MTEwNSAxMTc1IDExQUU7ICMgKOumszsg66azOyDhhIXhhbXhhq47IOumszsg4YSF4YW14YauOyApIEhBTkdVTCBTWUxMQUJMRSBSSUQKK0I5QjQ7QjlCNDsxMTA1IDExNzUgMTFBRjtCOUI0OzExMDUgMTE3NSAxMUFGOyAjICjrprQ7IOumtDsg4YSF4YW14YavOyDrprQ7IOGEheGFteGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgUklMCitCOUI1O0I5QjU7MTEwNSAxMTc1IDExQjA7QjlCNTsxMTA1IDExNzUgMTFCMDsgIyAo66a1OyDrprU7IOGEheGFteGGsDsg66a1OyDhhIXhhbXhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFJJTEcKK0I5QjY7QjlCNjsxMTA1IDExNzUgMTFCMTtCOUI2OzExMDUgMTE3NSAxMUIxOyAjICjrprY7IOumtjsg4YSF4YW14YaxOyDrprY7IOGEheGFteGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgUklMTQorQjlCNztCOUI3OzExMDUgMTE3NSAxMUIyO0I5Qjc7MTEwNSAxMTc1IDExQjI7ICMgKOumtzsg66a3OyDhhIXhhbXhhrI7IOumtzsg4YSF4YW14YayOyApIEhBTkdVTCBTWUxMQUJMRSBSSUxCCitCOUI4O0I5Qjg7MTEwNSAxMTc1IDExQjM7QjlCODsxMTA1IDExNzUgMTFCMzsgIyAo66a4OyDrprg7IOGEheGFteGGszsg66a4OyDhhIXhhbXhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFJJTFMKK0I5Qjk7QjlCOTsxMTA1IDExNzUgMTFCNDtCOUI5OzExMDUgMTE3NSAxMUI0OyAjICjrprk7IOumuTsg4YSF4YW14Ya0OyDrprk7IOGEheGFteGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgUklMVAorQjlCQTtCOUJBOzExMDUgMTE3NSAxMUI1O0I5QkE7MTEwNSAxMTc1IDExQjU7ICMgKOumujsg66a6OyDhhIXhhbXhhrU7IOumujsg4YSF4YW14Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBSSUxQCitCOUJCO0I5QkI7MTEwNSAxMTc1IDExQjY7QjlCQjsxMTA1IDExNzUgMTFCNjsgIyAo66a7OyDrprs7IOGEheGFteGGtjsg66a7OyDhhIXhhbXhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFJJTEgKK0I5QkM7QjlCQzsxMTA1IDExNzUgMTFCNztCOUJDOzExMDUgMTE3NSAxMUI3OyAjICjrprw7IOumvDsg4YSF4YW14Ya3OyDrprw7IOGEheGFteGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgUklNCitCOUJEO0I5QkQ7MTEwNSAxMTc1IDExQjg7QjlCRDsxMTA1IDExNzUgMTFCODsgIyAo66a9OyDrpr07IOGEheGFteGGuDsg66a9OyDhhIXhhbXhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFJJQgorQjlCRTtCOUJFOzExMDUgMTE3NSAxMUI5O0I5QkU7MTEwNSAxMTc1IDExQjk7ICMgKOumvjsg66a+OyDhhIXhhbXhhrk7IOumvjsg4YSF4YW14Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBSSUJTCitCOUJGO0I5QkY7MTEwNSAxMTc1IDExQkE7QjlCRjsxMTA1IDExNzUgMTFCQTsgIyAo66a/OyDrpr87IOGEheGFteGGujsg66a/OyDhhIXhhbXhhro7ICkgSEFOR1VMIFNZTExBQkxFIFJJUworQjlDMDtCOUMwOzExMDUgMTE3NSAxMUJCO0I5QzA7MTEwNSAxMTc1IDExQkI7ICMgKOungDsg66eAOyDhhIXhhbXhhrs7IOungDsg4YSF4YW14Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBSSVNTCitCOUMxO0I5QzE7MTEwNSAxMTc1IDExQkM7QjlDMTsxMTA1IDExNzUgMTFCQzsgIyAo66eBOyDrp4E7IOGEheGFteGGvDsg66eBOyDhhIXhhbXhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFJJTkcKK0I5QzI7QjlDMjsxMTA1IDExNzUgMTFCRDtCOUMyOzExMDUgMTE3NSAxMUJEOyAjICjrp4I7IOungjsg4YSF4YW14Ya9OyDrp4I7IOGEheGFteGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgUklKCitCOUMzO0I5QzM7MTEwNSAxMTc1IDExQkU7QjlDMzsxMTA1IDExNzUgMTFCRTsgIyAo66eDOyDrp4M7IOGEheGFteGGvjsg66eDOyDhhIXhhbXhhr47ICkgSEFOR1VMIFNZTExBQkxFIFJJQworQjlDNDtCOUM0OzExMDUgMTE3NSAxMUJGO0I5QzQ7MTEwNSAxMTc1IDExQkY7ICMgKOunhDsg66eEOyDhhIXhhbXhhr87IOunhDsg4YSF4YW14Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBSSUsKK0I5QzU7QjlDNTsxMTA1IDExNzUgMTFDMDtCOUM1OzExMDUgMTE3NSAxMUMwOyAjICjrp4U7IOunhTsg4YSF4YW14YeAOyDrp4U7IOGEheGFteGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgUklUCitCOUM2O0I5QzY7MTEwNSAxMTc1IDExQzE7QjlDNjsxMTA1IDExNzUgMTFDMTsgIyAo66eGOyDrp4Y7IOGEheGFteGHgTsg66eGOyDhhIXhhbXhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFJJUAorQjlDNztCOUM3OzExMDUgMTE3NSAxMUMyO0I5Qzc7MTEwNSAxMTc1IDExQzI7ICMgKOunhzsg66eHOyDhhIXhhbXhh4I7IOunhzsg4YSF4YW14YeCOyApIEhBTkdVTCBTWUxMQUJMRSBSSUgKK0I5Qzg7QjlDODsxMTA2IDExNjE7QjlDODsxMTA2IDExNjE7ICMgKOuniDsg66eIOyDhhIbhhaE7IOuniDsg4YSG4YWhOyApIEhBTkdVTCBTWUxMQUJMRSBNQQorQjlDOTtCOUM5OzExMDYgMTE2MSAxMUE4O0I5Qzk7MTEwNiAxMTYxIDExQTg7ICMgKOuniTsg66eJOyDhhIbhhaHhhqg7IOuniTsg4YSG4YWh4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBNQUcKK0I5Q0E7QjlDQTsxMTA2IDExNjEgMTFBOTtCOUNBOzExMDYgMTE2MSAxMUE5OyAjICjrp4o7IOunijsg4YSG4YWh4YapOyDrp4o7IOGEhuGFoeGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgTUFHRworQjlDQjtCOUNCOzExMDYgMTE2MSAxMUFBO0I5Q0I7MTEwNiAxMTYxIDExQUE7ICMgKOunizsg66eLOyDhhIbhhaHhhqo7IOunizsg4YSG4YWh4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBNQUdTCitCOUNDO0I5Q0M7MTEwNiAxMTYxIDExQUI7QjlDQzsxMTA2IDExNjEgMTFBQjsgIyAo66eMOyDrp4w7IOGEhuGFoeGGqzsg66eMOyDhhIbhhaHhhqs7ICkgSEFOR1VMIFNZTExBQkxFIE1BTgorQjlDRDtCOUNEOzExMDYgMTE2MSAxMUFDO0I5Q0Q7MTEwNiAxMTYxIDExQUM7ICMgKOunjTsg66eNOyDhhIbhhaHhhqw7IOunjTsg4YSG4YWh4YasOyApIEhBTkdVTCBTWUxMQUJMRSBNQU5KCitCOUNFO0I5Q0U7MTEwNiAxMTYxIDExQUQ7QjlDRTsxMTA2IDExNjEgMTFBRDsgIyAo66eOOyDrp447IOGEhuGFoeGGrTsg66eOOyDhhIbhhaHhhq07ICkgSEFOR1VMIFNZTExBQkxFIE1BTkgKK0I5Q0Y7QjlDRjsxMTA2IDExNjEgMTFBRTtCOUNGOzExMDYgMTE2MSAxMUFFOyAjICjrp487IOunjzsg4YSG4YWh4YauOyDrp487IOGEhuGFoeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgTUFECitCOUQwO0I5RDA7MTEwNiAxMTYxIDExQUY7QjlEMDsxMTA2IDExNjEgMTFBRjsgIyAo66eQOyDrp5A7IOGEhuGFoeGGrzsg66eQOyDhhIbhhaHhhq87ICkgSEFOR1VMIFNZTExBQkxFIE1BTAorQjlEMTtCOUQxOzExMDYgMTE2MSAxMUIwO0I5RDE7MTEwNiAxMTYxIDExQjA7ICMgKOunkTsg66eROyDhhIbhhaHhhrA7IOunkTsg4YSG4YWh4YawOyApIEhBTkdVTCBTWUxMQUJMRSBNQUxHCitCOUQyO0I5RDI7MTEwNiAxMTYxIDExQjE7QjlEMjsxMTA2IDExNjEgMTFCMTsgIyAo66eSOyDrp5I7IOGEhuGFoeGGsTsg66eSOyDhhIbhhaHhhrE7ICkgSEFOR1VMIFNZTExBQkxFIE1BTE0KK0I5RDM7QjlEMzsxMTA2IDExNjEgMTFCMjtCOUQzOzExMDYgMTE2MSAxMUIyOyAjICjrp5M7IOunkzsg4YSG4YWh4YayOyDrp5M7IOGEhuGFoeGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgTUFMQgorQjlENDtCOUQ0OzExMDYgMTE2MSAxMUIzO0I5RDQ7MTEwNiAxMTYxIDExQjM7ICMgKOunlDsg66eUOyDhhIbhhaHhhrM7IOunlDsg4YSG4YWh4YazOyApIEhBTkdVTCBTWUxMQUJMRSBNQUxTCitCOUQ1O0I5RDU7MTEwNiAxMTYxIDExQjQ7QjlENTsxMTA2IDExNjEgMTFCNDsgIyAo66eVOyDrp5U7IOGEhuGFoeGGtDsg66eVOyDhhIbhhaHhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIE1BTFQKK0I5RDY7QjlENjsxMTA2IDExNjEgMTFCNTtCOUQ2OzExMDYgMTE2MSAxMUI1OyAjICjrp5Y7IOunljsg4YSG4YWh4Ya1OyDrp5Y7IOGEhuGFoeGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgTUFMUAorQjlENztCOUQ3OzExMDYgMTE2MSAxMUI2O0I5RDc7MTEwNiAxMTYxIDExQjY7ICMgKOunlzsg66eXOyDhhIbhhaHhhrY7IOunlzsg4YSG4YWh4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBNQUxICitCOUQ4O0I5RDg7MTEwNiAxMTYxIDExQjc7QjlEODsxMTA2IDExNjEgMTFCNzsgIyAo66eYOyDrp5g7IOGEhuGFoeGGtzsg66eYOyDhhIbhhaHhhrc7ICkgSEFOR1VMIFNZTExBQkxFIE1BTQorQjlEOTtCOUQ5OzExMDYgMTE2MSAxMUI4O0I5RDk7MTEwNiAxMTYxIDExQjg7ICMgKOunmTsg66eZOyDhhIbhhaHhhrg7IOunmTsg4YSG4YWh4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBNQUIKK0I5REE7QjlEQTsxMTA2IDExNjEgMTFCOTtCOURBOzExMDYgMTE2MSAxMUI5OyAjICjrp5o7IOunmjsg4YSG4YWh4Ya5OyDrp5o7IOGEhuGFoeGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgTUFCUworQjlEQjtCOURCOzExMDYgMTE2MSAxMUJBO0I5REI7MTEwNiAxMTYxIDExQkE7ICMgKOunmzsg66ebOyDhhIbhhaHhhro7IOunmzsg4YSG4YWh4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBNQVMKK0I5REM7QjlEQzsxMTA2IDExNjEgMTFCQjtCOURDOzExMDYgMTE2MSAxMUJCOyAjICjrp5w7IOunnDsg4YSG4YWh4Ya7OyDrp5w7IOGEhuGFoeGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgTUFTUworQjlERDtCOUREOzExMDYgMTE2MSAxMUJDO0I5REQ7MTEwNiAxMTYxIDExQkM7ICMgKOunnTsg66edOyDhhIbhhaHhhrw7IOunnTsg4YSG4YWh4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBNQU5HCitCOURFO0I5REU7MTEwNiAxMTYxIDExQkQ7QjlERTsxMTA2IDExNjEgMTFCRDsgIyAo66eeOyDrp547IOGEhuGFoeGGvTsg66eeOyDhhIbhhaHhhr07ICkgSEFOR1VMIFNZTExBQkxFIE1BSgorQjlERjtCOURGOzExMDYgMTE2MSAxMUJFO0I5REY7MTEwNiAxMTYxIDExQkU7ICMgKOunnzsg66efOyDhhIbhhaHhhr47IOunnzsg4YSG4YWh4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBNQUMKK0I5RTA7QjlFMDsxMTA2IDExNjEgMTFCRjtCOUUwOzExMDYgMTE2MSAxMUJGOyAjICjrp6A7IOunoDsg4YSG4YWh4Ya/OyDrp6A7IOGEhuGFoeGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgTUFLCitCOUUxO0I5RTE7MTEwNiAxMTYxIDExQzA7QjlFMTsxMTA2IDExNjEgMTFDMDsgIyAo66ehOyDrp6E7IOGEhuGFoeGHgDsg66ehOyDhhIbhhaHhh4A7ICkgSEFOR1VMIFNZTExBQkxFIE1BVAorQjlFMjtCOUUyOzExMDYgMTE2MSAxMUMxO0I5RTI7MTEwNiAxMTYxIDExQzE7ICMgKOunojsg66eiOyDhhIbhhaHhh4E7IOunojsg4YSG4YWh4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBNQVAKK0I5RTM7QjlFMzsxMTA2IDExNjEgMTFDMjtCOUUzOzExMDYgMTE2MSAxMUMyOyAjICjrp6M7IOunozsg4YSG4YWh4YeCOyDrp6M7IOGEhuGFoeGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgTUFICitCOUU0O0I5RTQ7MTEwNiAxMTYyO0I5RTQ7MTEwNiAxMTYyOyAjICjrp6Q7IOunpDsg4YSG4YWiOyDrp6Q7IOGEhuGFojsgKSBIQU5HVUwgU1lMTEFCTEUgTUFFCitCOUU1O0I5RTU7MTEwNiAxMTYyIDExQTg7QjlFNTsxMTA2IDExNjIgMTFBODsgIyAo66elOyDrp6U7IOGEhuGFouGGqDsg66elOyDhhIbhhaLhhqg7ICkgSEFOR1VMIFNZTExBQkxFIE1BRUcKK0I5RTY7QjlFNjsxMTA2IDExNjIgMTFBOTtCOUU2OzExMDYgMTE2MiAxMUE5OyAjICjrp6Y7IOunpjsg4YSG4YWi4YapOyDrp6Y7IOGEhuGFouGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgTUFFR0cKK0I5RTc7QjlFNzsxMTA2IDExNjIgMTFBQTtCOUU3OzExMDYgMTE2MiAxMUFBOyAjICjrp6c7IOunpzsg4YSG4YWi4YaqOyDrp6c7IOGEhuGFouGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgTUFFR1MKK0I5RTg7QjlFODsxMTA2IDExNjIgMTFBQjtCOUU4OzExMDYgMTE2MiAxMUFCOyAjICjrp6g7IOunqDsg4YSG4YWi4YarOyDrp6g7IOGEhuGFouGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgTUFFTgorQjlFOTtCOUU5OzExMDYgMTE2MiAxMUFDO0I5RTk7MTEwNiAxMTYyIDExQUM7ICMgKOunqTsg66epOyDhhIbhhaLhhqw7IOunqTsg4YSG4YWi4YasOyApIEhBTkdVTCBTWUxMQUJMRSBNQUVOSgorQjlFQTtCOUVBOzExMDYgMTE2MiAxMUFEO0I5RUE7MTEwNiAxMTYyIDExQUQ7ICMgKOunqjsg66eqOyDhhIbhhaLhhq07IOunqjsg4YSG4YWi4YatOyApIEhBTkdVTCBTWUxMQUJMRSBNQUVOSAorQjlFQjtCOUVCOzExMDYgMTE2MiAxMUFFO0I5RUI7MTEwNiAxMTYyIDExQUU7ICMgKOunqzsg66erOyDhhIbhhaLhhq47IOunqzsg4YSG4YWi4YauOyApIEhBTkdVTCBTWUxMQUJMRSBNQUVECitCOUVDO0I5RUM7MTEwNiAxMTYyIDExQUY7QjlFQzsxMTA2IDExNjIgMTFBRjsgIyAo66esOyDrp6w7IOGEhuGFouGGrzsg66esOyDhhIbhhaLhhq87ICkgSEFOR1VMIFNZTExBQkxFIE1BRUwKK0I5RUQ7QjlFRDsxMTA2IDExNjIgMTFCMDtCOUVEOzExMDYgMTE2MiAxMUIwOyAjICjrp607IOunrTsg4YSG4YWi4YawOyDrp607IOGEhuGFouGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgTUFFTEcKK0I5RUU7QjlFRTsxMTA2IDExNjIgMTFCMTtCOUVFOzExMDYgMTE2MiAxMUIxOyAjICjrp647IOunrjsg4YSG4YWi4YaxOyDrp647IOGEhuGFouGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgTUFFTE0KK0I5RUY7QjlFRjsxMTA2IDExNjIgMTFCMjtCOUVGOzExMDYgMTE2MiAxMUIyOyAjICjrp687IOunrzsg4YSG4YWi4YayOyDrp687IOGEhuGFouGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgTUFFTEIKK0I5RjA7QjlGMDsxMTA2IDExNjIgMTFCMztCOUYwOzExMDYgMTE2MiAxMUIzOyAjICjrp7A7IOunsDsg4YSG4YWi4YazOyDrp7A7IOGEhuGFouGGszsgKSBIQU5HVUwgU1lMTEFCTEUgTUFFTFMKK0I5RjE7QjlGMTsxMTA2IDExNjIgMTFCNDtCOUYxOzExMDYgMTE2MiAxMUI0OyAjICjrp7E7IOunsTsg4YSG4YWi4Ya0OyDrp7E7IOGEhuGFouGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgTUFFTFQKK0I5RjI7QjlGMjsxMTA2IDExNjIgMTFCNTtCOUYyOzExMDYgMTE2MiAxMUI1OyAjICjrp7I7IOunsjsg4YSG4YWi4Ya1OyDrp7I7IOGEhuGFouGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgTUFFTFAKK0I5RjM7QjlGMzsxMTA2IDExNjIgMTFCNjtCOUYzOzExMDYgMTE2MiAxMUI2OyAjICjrp7M7IOunszsg4YSG4YWi4Ya2OyDrp7M7IOGEhuGFouGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgTUFFTEgKK0I5RjQ7QjlGNDsxMTA2IDExNjIgMTFCNztCOUY0OzExMDYgMTE2MiAxMUI3OyAjICjrp7Q7IOuntDsg4YSG4YWi4Ya3OyDrp7Q7IOGEhuGFouGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgTUFFTQorQjlGNTtCOUY1OzExMDYgMTE2MiAxMUI4O0I5RjU7MTEwNiAxMTYyIDExQjg7ICMgKOuntTsg66e1OyDhhIbhhaLhhrg7IOuntTsg4YSG4YWi4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBNQUVCCitCOUY2O0I5RjY7MTEwNiAxMTYyIDExQjk7QjlGNjsxMTA2IDExNjIgMTFCOTsgIyAo66e2OyDrp7Y7IOGEhuGFouGGuTsg66e2OyDhhIbhhaLhhrk7ICkgSEFOR1VMIFNZTExBQkxFIE1BRUJTCitCOUY3O0I5Rjc7MTEwNiAxMTYyIDExQkE7QjlGNzsxMTA2IDExNjIgMTFCQTsgIyAo66e3OyDrp7c7IOGEhuGFouGGujsg66e3OyDhhIbhhaLhhro7ICkgSEFOR1VMIFNZTExBQkxFIE1BRVMKK0I5Rjg7QjlGODsxMTA2IDExNjIgMTFCQjtCOUY4OzExMDYgMTE2MiAxMUJCOyAjICjrp7g7IOunuDsg4YSG4YWi4Ya7OyDrp7g7IOGEhuGFouGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgTUFFU1MKK0I5Rjk7QjlGOTsxMTA2IDExNjIgMTFCQztCOUY5OzExMDYgMTE2MiAxMUJDOyAjICjrp7k7IOunuTsg4YSG4YWi4Ya8OyDrp7k7IOGEhuGFouGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgTUFFTkcKK0I5RkE7QjlGQTsxMTA2IDExNjIgMTFCRDtCOUZBOzExMDYgMTE2MiAxMUJEOyAjICjrp7o7IOunujsg4YSG4YWi4Ya9OyDrp7o7IOGEhuGFouGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgTUFFSgorQjlGQjtCOUZCOzExMDYgMTE2MiAxMUJFO0I5RkI7MTEwNiAxMTYyIDExQkU7ICMgKOunuzsg66e7OyDhhIbhhaLhhr47IOunuzsg4YSG4YWi4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBNQUVDCitCOUZDO0I5RkM7MTEwNiAxMTYyIDExQkY7QjlGQzsxMTA2IDExNjIgMTFCRjsgIyAo66e8OyDrp7w7IOGEhuGFouGGvzsg66e8OyDhhIbhhaLhhr87ICkgSEFOR1VMIFNZTExBQkxFIE1BRUsKK0I5RkQ7QjlGRDsxMTA2IDExNjIgMTFDMDtCOUZEOzExMDYgMTE2MiAxMUMwOyAjICjrp707IOunvTsg4YSG4YWi4YeAOyDrp707IOGEhuGFouGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgTUFFVAorQjlGRTtCOUZFOzExMDYgMTE2MiAxMUMxO0I5RkU7MTEwNiAxMTYyIDExQzE7ICMgKOunvjsg66e+OyDhhIbhhaLhh4E7IOunvjsg4YSG4YWi4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBNQUVQCitCOUZGO0I5RkY7MTEwNiAxMTYyIDExQzI7QjlGRjsxMTA2IDExNjIgMTFDMjsgIyAo66e/OyDrp787IOGEhuGFouGHgjsg66e/OyDhhIbhhaLhh4I7ICkgSEFOR1VMIFNZTExBQkxFIE1BRUgKK0JBMDA7QkEwMDsxMTA2IDExNjM7QkEwMDsxMTA2IDExNjM7ICMgKOuogDsg66iAOyDhhIbhhaM7IOuogDsg4YSG4YWjOyApIEhBTkdVTCBTWUxMQUJMRSBNWUEKK0JBMDE7QkEwMTsxMTA2IDExNjMgMTFBODtCQTAxOzExMDYgMTE2MyAxMUE4OyAjICjrqIE7IOuogTsg4YSG4YWj4YaoOyDrqIE7IOGEhuGFo+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgTVlBRworQkEwMjtCQTAyOzExMDYgMTE2MyAxMUE5O0JBMDI7MTEwNiAxMTYzIDExQTk7ICMgKOuogjsg66iCOyDhhIbhhaPhhqk7IOuogjsg4YSG4YWj4YapOyApIEhBTkdVTCBTWUxMQUJMRSBNWUFHRworQkEwMztCQTAzOzExMDYgMTE2MyAxMUFBO0JBMDM7MTEwNiAxMTYzIDExQUE7ICMgKOuogzsg66iDOyDhhIbhhaPhhqo7IOuogzsg4YSG4YWj4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBNWUFHUworQkEwNDtCQTA0OzExMDYgMTE2MyAxMUFCO0JBMDQ7MTEwNiAxMTYzIDExQUI7ICMgKOuohDsg66iEOyDhhIbhhaPhhqs7IOuohDsg4YSG4YWj4YarOyApIEhBTkdVTCBTWUxMQUJMRSBNWUFOCitCQTA1O0JBMDU7MTEwNiAxMTYzIDExQUM7QkEwNTsxMTA2IDExNjMgMTFBQzsgIyAo66iFOyDrqIU7IOGEhuGFo+GGrDsg66iFOyDhhIbhhaPhhqw7ICkgSEFOR1VMIFNZTExBQkxFIE1ZQU5KCitCQTA2O0JBMDY7MTEwNiAxMTYzIDExQUQ7QkEwNjsxMTA2IDExNjMgMTFBRDsgIyAo66iGOyDrqIY7IOGEhuGFo+GGrTsg66iGOyDhhIbhhaPhhq07ICkgSEFOR1VMIFNZTExBQkxFIE1ZQU5ICitCQTA3O0JBMDc7MTEwNiAxMTYzIDExQUU7QkEwNzsxMTA2IDExNjMgMTFBRTsgIyAo66iHOyDrqIc7IOGEhuGFo+GGrjsg66iHOyDhhIbhhaPhhq47ICkgSEFOR1VMIFNZTExBQkxFIE1ZQUQKK0JBMDg7QkEwODsxMTA2IDExNjMgMTFBRjtCQTA4OzExMDYgMTE2MyAxMUFGOyAjICjrqIg7IOuoiDsg4YSG4YWj4YavOyDrqIg7IOGEhuGFo+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgTVlBTAorQkEwOTtCQTA5OzExMDYgMTE2MyAxMUIwO0JBMDk7MTEwNiAxMTYzIDExQjA7ICMgKOuoiTsg66iJOyDhhIbhhaPhhrA7IOuoiTsg4YSG4YWj4YawOyApIEhBTkdVTCBTWUxMQUJMRSBNWUFMRworQkEwQTtCQTBBOzExMDYgMTE2MyAxMUIxO0JBMEE7MTEwNiAxMTYzIDExQjE7ICMgKOuoijsg66iKOyDhhIbhhaPhhrE7IOuoijsg4YSG4YWj4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBNWUFMTQorQkEwQjtCQTBCOzExMDYgMTE2MyAxMUIyO0JBMEI7MTEwNiAxMTYzIDExQjI7ICMgKOuoizsg66iLOyDhhIbhhaPhhrI7IOuoizsg4YSG4YWj4YayOyApIEhBTkdVTCBTWUxMQUJMRSBNWUFMQgorQkEwQztCQTBDOzExMDYgMTE2MyAxMUIzO0JBMEM7MTEwNiAxMTYzIDExQjM7ICMgKOuojDsg66iMOyDhhIbhhaPhhrM7IOuojDsg4YSG4YWj4YazOyApIEhBTkdVTCBTWUxMQUJMRSBNWUFMUworQkEwRDtCQTBEOzExMDYgMTE2MyAxMUI0O0JBMEQ7MTEwNiAxMTYzIDExQjQ7ICMgKOuojTsg66iNOyDhhIbhhaPhhrQ7IOuojTsg4YSG4YWj4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBNWUFMVAorQkEwRTtCQTBFOzExMDYgMTE2MyAxMUI1O0JBMEU7MTEwNiAxMTYzIDExQjU7ICMgKOuojjsg66iOOyDhhIbhhaPhhrU7IOuojjsg4YSG4YWj4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBNWUFMUAorQkEwRjtCQTBGOzExMDYgMTE2MyAxMUI2O0JBMEY7MTEwNiAxMTYzIDExQjY7ICMgKOuojzsg66iPOyDhhIbhhaPhhrY7IOuojzsg4YSG4YWj4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBNWUFMSAorQkExMDtCQTEwOzExMDYgMTE2MyAxMUI3O0JBMTA7MTEwNiAxMTYzIDExQjc7ICMgKOuokDsg66iQOyDhhIbhhaPhhrc7IOuokDsg4YSG4YWj4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBNWUFNCitCQTExO0JBMTE7MTEwNiAxMTYzIDExQjg7QkExMTsxMTA2IDExNjMgMTFCODsgIyAo66iROyDrqJE7IOGEhuGFo+GGuDsg66iROyDhhIbhhaPhhrg7ICkgSEFOR1VMIFNZTExBQkxFIE1ZQUIKK0JBMTI7QkExMjsxMTA2IDExNjMgMTFCOTtCQTEyOzExMDYgMTE2MyAxMUI5OyAjICjrqJI7IOuokjsg4YSG4YWj4Ya5OyDrqJI7IOGEhuGFo+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgTVlBQlMKK0JBMTM7QkExMzsxMTA2IDExNjMgMTFCQTtCQTEzOzExMDYgMTE2MyAxMUJBOyAjICjrqJM7IOuokzsg4YSG4YWj4Ya6OyDrqJM7IOGEhuGFo+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgTVlBUworQkExNDtCQTE0OzExMDYgMTE2MyAxMUJCO0JBMTQ7MTEwNiAxMTYzIDExQkI7ICMgKOuolDsg66iUOyDhhIbhhaPhhrs7IOuolDsg4YSG4YWj4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBNWUFTUworQkExNTtCQTE1OzExMDYgMTE2MyAxMUJDO0JBMTU7MTEwNiAxMTYzIDExQkM7ICMgKOuolTsg66iVOyDhhIbhhaPhhrw7IOuolTsg4YSG4YWj4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBNWUFORworQkExNjtCQTE2OzExMDYgMTE2MyAxMUJEO0JBMTY7MTEwNiAxMTYzIDExQkQ7ICMgKOuoljsg66iWOyDhhIbhhaPhhr07IOuoljsg4YSG4YWj4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBNWUFKCitCQTE3O0JBMTc7MTEwNiAxMTYzIDExQkU7QkExNzsxMTA2IDExNjMgMTFCRTsgIyAo66iXOyDrqJc7IOGEhuGFo+GGvjsg66iXOyDhhIbhhaPhhr47ICkgSEFOR1VMIFNZTExBQkxFIE1ZQUMKK0JBMTg7QkExODsxMTA2IDExNjMgMTFCRjtCQTE4OzExMDYgMTE2MyAxMUJGOyAjICjrqJg7IOuomDsg4YSG4YWj4Ya/OyDrqJg7IOGEhuGFo+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgTVlBSworQkExOTtCQTE5OzExMDYgMTE2MyAxMUMwO0JBMTk7MTEwNiAxMTYzIDExQzA7ICMgKOuomTsg66iZOyDhhIbhhaPhh4A7IOuomTsg4YSG4YWj4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBNWUFUCitCQTFBO0JBMUE7MTEwNiAxMTYzIDExQzE7QkExQTsxMTA2IDExNjMgMTFDMTsgIyAo66iaOyDrqJo7IOGEhuGFo+GHgTsg66iaOyDhhIbhhaPhh4E7ICkgSEFOR1VMIFNZTExBQkxFIE1ZQVAKK0JBMUI7QkExQjsxMTA2IDExNjMgMTFDMjtCQTFCOzExMDYgMTE2MyAxMUMyOyAjICjrqJs7IOuomzsg4YSG4YWj4YeCOyDrqJs7IOGEhuGFo+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgTVlBSAorQkExQztCQTFDOzExMDYgMTE2NDtCQTFDOzExMDYgMTE2NDsgIyAo66icOyDrqJw7IOGEhuGFpDsg66icOyDhhIbhhaQ7ICkgSEFOR1VMIFNZTExBQkxFIE1ZQUUKK0JBMUQ7QkExRDsxMTA2IDExNjQgMTFBODtCQTFEOzExMDYgMTE2NCAxMUE4OyAjICjrqJ07IOuonTsg4YSG4YWk4YaoOyDrqJ07IOGEhuGFpOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgTVlBRUcKK0JBMUU7QkExRTsxMTA2IDExNjQgMTFBOTtCQTFFOzExMDYgMTE2NCAxMUE5OyAjICjrqJ47IOuonjsg4YSG4YWk4YapOyDrqJ47IOGEhuGFpOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgTVlBRUdHCitCQTFGO0JBMUY7MTEwNiAxMTY0IDExQUE7QkExRjsxMTA2IDExNjQgMTFBQTsgIyAo66ifOyDrqJ87IOGEhuGFpOGGqjsg66ifOyDhhIbhhaThhqo7ICkgSEFOR1VMIFNZTExBQkxFIE1ZQUVHUworQkEyMDtCQTIwOzExMDYgMTE2NCAxMUFCO0JBMjA7MTEwNiAxMTY0IDExQUI7ICMgKOuooDsg66igOyDhhIbhhaThhqs7IOuooDsg4YSG4YWk4YarOyApIEhBTkdVTCBTWUxMQUJMRSBNWUFFTgorQkEyMTtCQTIxOzExMDYgMTE2NCAxMUFDO0JBMjE7MTEwNiAxMTY0IDExQUM7ICMgKOuooTsg66ihOyDhhIbhhaThhqw7IOuooTsg4YSG4YWk4YasOyApIEhBTkdVTCBTWUxMQUJMRSBNWUFFTkoKK0JBMjI7QkEyMjsxMTA2IDExNjQgMTFBRDtCQTIyOzExMDYgMTE2NCAxMUFEOyAjICjrqKI7IOuoojsg4YSG4YWk4YatOyDrqKI7IOGEhuGFpOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgTVlBRU5ICitCQTIzO0JBMjM7MTEwNiAxMTY0IDExQUU7QkEyMzsxMTA2IDExNjQgMTFBRTsgIyAo66ijOyDrqKM7IOGEhuGFpOGGrjsg66ijOyDhhIbhhaThhq47ICkgSEFOR1VMIFNZTExBQkxFIE1ZQUVECitCQTI0O0JBMjQ7MTEwNiAxMTY0IDExQUY7QkEyNDsxMTA2IDExNjQgMTFBRjsgIyAo66ikOyDrqKQ7IOGEhuGFpOGGrzsg66ikOyDhhIbhhaThhq87ICkgSEFOR1VMIFNZTExBQkxFIE1ZQUVMCitCQTI1O0JBMjU7MTEwNiAxMTY0IDExQjA7QkEyNTsxMTA2IDExNjQgMTFCMDsgIyAo66ilOyDrqKU7IOGEhuGFpOGGsDsg66ilOyDhhIbhhaThhrA7ICkgSEFOR1VMIFNZTExBQkxFIE1ZQUVMRworQkEyNjtCQTI2OzExMDYgMTE2NCAxMUIxO0JBMjY7MTEwNiAxMTY0IDExQjE7ICMgKOuopjsg66imOyDhhIbhhaThhrE7IOuopjsg4YSG4YWk4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBNWUFFTE0KK0JBMjc7QkEyNzsxMTA2IDExNjQgMTFCMjtCQTI3OzExMDYgMTE2NCAxMUIyOyAjICjrqKc7IOuopzsg4YSG4YWk4YayOyDrqKc7IOGEhuGFpOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgTVlBRUxCCitCQTI4O0JBMjg7MTEwNiAxMTY0IDExQjM7QkEyODsxMTA2IDExNjQgMTFCMzsgIyAo66ioOyDrqKg7IOGEhuGFpOGGszsg66ioOyDhhIbhhaThhrM7ICkgSEFOR1VMIFNZTExBQkxFIE1ZQUVMUworQkEyOTtCQTI5OzExMDYgMTE2NCAxMUI0O0JBMjk7MTEwNiAxMTY0IDExQjQ7ICMgKOuoqTsg66ipOyDhhIbhhaThhrQ7IOuoqTsg4YSG4YWk4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBNWUFFTFQKK0JBMkE7QkEyQTsxMTA2IDExNjQgMTFCNTtCQTJBOzExMDYgMTE2NCAxMUI1OyAjICjrqKo7IOuoqjsg4YSG4YWk4Ya1OyDrqKo7IOGEhuGFpOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgTVlBRUxQCitCQTJCO0JBMkI7MTEwNiAxMTY0IDExQjY7QkEyQjsxMTA2IDExNjQgMTFCNjsgIyAo66irOyDrqKs7IOGEhuGFpOGGtjsg66irOyDhhIbhhaThhrY7ICkgSEFOR1VMIFNZTExBQkxFIE1ZQUVMSAorQkEyQztCQTJDOzExMDYgMTE2NCAxMUI3O0JBMkM7MTEwNiAxMTY0IDExQjc7ICMgKOuorDsg66isOyDhhIbhhaThhrc7IOuorDsg4YSG4YWk4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBNWUFFTQorQkEyRDtCQTJEOzExMDYgMTE2NCAxMUI4O0JBMkQ7MTEwNiAxMTY0IDExQjg7ICMgKOuorTsg66itOyDhhIbhhaThhrg7IOuorTsg4YSG4YWk4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBNWUFFQgorQkEyRTtCQTJFOzExMDYgMTE2NCAxMUI5O0JBMkU7MTEwNiAxMTY0IDExQjk7ICMgKOuorjsg66iuOyDhhIbhhaThhrk7IOuorjsg4YSG4YWk4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBNWUFFQlMKK0JBMkY7QkEyRjsxMTA2IDExNjQgMTFCQTtCQTJGOzExMDYgMTE2NCAxMUJBOyAjICjrqK87IOuorzsg4YSG4YWk4Ya6OyDrqK87IOGEhuGFpOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgTVlBRVMKK0JBMzA7QkEzMDsxMTA2IDExNjQgMTFCQjtCQTMwOzExMDYgMTE2NCAxMUJCOyAjICjrqLA7IOuosDsg4YSG4YWk4Ya7OyDrqLA7IOGEhuGFpOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgTVlBRVNTCitCQTMxO0JBMzE7MTEwNiAxMTY0IDExQkM7QkEzMTsxMTA2IDExNjQgMTFCQzsgIyAo66ixOyDrqLE7IOGEhuGFpOGGvDsg66ixOyDhhIbhhaThhrw7ICkgSEFOR1VMIFNZTExBQkxFIE1ZQUVORworQkEzMjtCQTMyOzExMDYgMTE2NCAxMUJEO0JBMzI7MTEwNiAxMTY0IDExQkQ7ICMgKOuosjsg66iyOyDhhIbhhaThhr07IOuosjsg4YSG4YWk4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBNWUFFSgorQkEzMztCQTMzOzExMDYgMTE2NCAxMUJFO0JBMzM7MTEwNiAxMTY0IDExQkU7ICMgKOuoszsg66izOyDhhIbhhaThhr47IOuoszsg4YSG4YWk4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBNWUFFQworQkEzNDtCQTM0OzExMDYgMTE2NCAxMUJGO0JBMzQ7MTEwNiAxMTY0IDExQkY7ICMgKOuotDsg66i0OyDhhIbhhaThhr87IOuotDsg4YSG4YWk4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBNWUFFSworQkEzNTtCQTM1OzExMDYgMTE2NCAxMUMwO0JBMzU7MTEwNiAxMTY0IDExQzA7ICMgKOuotTsg66i1OyDhhIbhhaThh4A7IOuotTsg4YSG4YWk4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBNWUFFVAorQkEzNjtCQTM2OzExMDYgMTE2NCAxMUMxO0JBMzY7MTEwNiAxMTY0IDExQzE7ICMgKOuotjsg66i2OyDhhIbhhaThh4E7IOuotjsg4YSG4YWk4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBNWUFFUAorQkEzNztCQTM3OzExMDYgMTE2NCAxMUMyO0JBMzc7MTEwNiAxMTY0IDExQzI7ICMgKOuotzsg66i3OyDhhIbhhaThh4I7IOuotzsg4YSG4YWk4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBNWUFFSAorQkEzODtCQTM4OzExMDYgMTE2NTtCQTM4OzExMDYgMTE2NTsgIyAo66i4OyDrqLg7IOGEhuGFpTsg66i4OyDhhIbhhaU7ICkgSEFOR1VMIFNZTExBQkxFIE1FTworQkEzOTtCQTM5OzExMDYgMTE2NSAxMUE4O0JBMzk7MTEwNiAxMTY1IDExQTg7ICMgKOuouTsg66i5OyDhhIbhhaXhhqg7IOuouTsg4YSG4YWl4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBNRU9HCitCQTNBO0JBM0E7MTEwNiAxMTY1IDExQTk7QkEzQTsxMTA2IDExNjUgMTFBOTsgIyAo66i6OyDrqLo7IOGEhuGFpeGGqTsg66i6OyDhhIbhhaXhhqk7ICkgSEFOR1VMIFNZTExBQkxFIE1FT0dHCitCQTNCO0JBM0I7MTEwNiAxMTY1IDExQUE7QkEzQjsxMTA2IDExNjUgMTFBQTsgIyAo66i7OyDrqLs7IOGEhuGFpeGGqjsg66i7OyDhhIbhhaXhhqo7ICkgSEFOR1VMIFNZTExBQkxFIE1FT0dTCitCQTNDO0JBM0M7MTEwNiAxMTY1IDExQUI7QkEzQzsxMTA2IDExNjUgMTFBQjsgIyAo66i8OyDrqLw7IOGEhuGFpeGGqzsg66i8OyDhhIbhhaXhhqs7ICkgSEFOR1VMIFNZTExBQkxFIE1FT04KK0JBM0Q7QkEzRDsxMTA2IDExNjUgMTFBQztCQTNEOzExMDYgMTE2NSAxMUFDOyAjICjrqL07IOuovTsg4YSG4YWl4YasOyDrqL07IOGEhuGFpeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgTUVPTkoKK0JBM0U7QkEzRTsxMTA2IDExNjUgMTFBRDtCQTNFOzExMDYgMTE2NSAxMUFEOyAjICjrqL47IOuovjsg4YSG4YWl4YatOyDrqL47IOGEhuGFpeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgTUVPTkgKK0JBM0Y7QkEzRjsxMTA2IDExNjUgMTFBRTtCQTNGOzExMDYgMTE2NSAxMUFFOyAjICjrqL87IOuovzsg4YSG4YWl4YauOyDrqL87IOGEhuGFpeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgTUVPRAorQkE0MDtCQTQwOzExMDYgMTE2NSAxMUFGO0JBNDA7MTEwNiAxMTY1IDExQUY7ICMgKOupgDsg66mAOyDhhIbhhaXhhq87IOupgDsg4YSG4YWl4YavOyApIEhBTkdVTCBTWUxMQUJMRSBNRU9MCitCQTQxO0JBNDE7MTEwNiAxMTY1IDExQjA7QkE0MTsxMTA2IDExNjUgMTFCMDsgIyAo66mBOyDrqYE7IOGEhuGFpeGGsDsg66mBOyDhhIbhhaXhhrA7ICkgSEFOR1VMIFNZTExBQkxFIE1FT0xHCitCQTQyO0JBNDI7MTEwNiAxMTY1IDExQjE7QkE0MjsxMTA2IDExNjUgMTFCMTsgIyAo66mCOyDrqYI7IOGEhuGFpeGGsTsg66mCOyDhhIbhhaXhhrE7ICkgSEFOR1VMIFNZTExBQkxFIE1FT0xNCitCQTQzO0JBNDM7MTEwNiAxMTY1IDExQjI7QkE0MzsxMTA2IDExNjUgMTFCMjsgIyAo66mDOyDrqYM7IOGEhuGFpeGGsjsg66mDOyDhhIbhhaXhhrI7ICkgSEFOR1VMIFNZTExBQkxFIE1FT0xCCitCQTQ0O0JBNDQ7MTEwNiAxMTY1IDExQjM7QkE0NDsxMTA2IDExNjUgMTFCMzsgIyAo66mEOyDrqYQ7IOGEhuGFpeGGszsg66mEOyDhhIbhhaXhhrM7ICkgSEFOR1VMIFNZTExBQkxFIE1FT0xTCitCQTQ1O0JBNDU7MTEwNiAxMTY1IDExQjQ7QkE0NTsxMTA2IDExNjUgMTFCNDsgIyAo66mFOyDrqYU7IOGEhuGFpeGGtDsg66mFOyDhhIbhhaXhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIE1FT0xUCitCQTQ2O0JBNDY7MTEwNiAxMTY1IDExQjU7QkE0NjsxMTA2IDExNjUgMTFCNTsgIyAo66mGOyDrqYY7IOGEhuGFpeGGtTsg66mGOyDhhIbhhaXhhrU7ICkgSEFOR1VMIFNZTExBQkxFIE1FT0xQCitCQTQ3O0JBNDc7MTEwNiAxMTY1IDExQjY7QkE0NzsxMTA2IDExNjUgMTFCNjsgIyAo66mHOyDrqYc7IOGEhuGFpeGGtjsg66mHOyDhhIbhhaXhhrY7ICkgSEFOR1VMIFNZTExBQkxFIE1FT0xICitCQTQ4O0JBNDg7MTEwNiAxMTY1IDExQjc7QkE0ODsxMTA2IDExNjUgMTFCNzsgIyAo66mIOyDrqYg7IOGEhuGFpeGGtzsg66mIOyDhhIbhhaXhhrc7ICkgSEFOR1VMIFNZTExBQkxFIE1FT00KK0JBNDk7QkE0OTsxMTA2IDExNjUgMTFCODtCQTQ5OzExMDYgMTE2NSAxMUI4OyAjICjrqYk7IOupiTsg4YSG4YWl4Ya4OyDrqYk7IOGEhuGFpeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgTUVPQgorQkE0QTtCQTRBOzExMDYgMTE2NSAxMUI5O0JBNEE7MTEwNiAxMTY1IDExQjk7ICMgKOupijsg66mKOyDhhIbhhaXhhrk7IOupijsg4YSG4YWl4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBNRU9CUworQkE0QjtCQTRCOzExMDYgMTE2NSAxMUJBO0JBNEI7MTEwNiAxMTY1IDExQkE7ICMgKOupizsg66mLOyDhhIbhhaXhhro7IOupizsg4YSG4YWl4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBNRU9TCitCQTRDO0JBNEM7MTEwNiAxMTY1IDExQkI7QkE0QzsxMTA2IDExNjUgMTFCQjsgIyAo66mMOyDrqYw7IOGEhuGFpeGGuzsg66mMOyDhhIbhhaXhhrs7ICkgSEFOR1VMIFNZTExBQkxFIE1FT1NTCitCQTREO0JBNEQ7MTEwNiAxMTY1IDExQkM7QkE0RDsxMTA2IDExNjUgMTFCQzsgIyAo66mNOyDrqY07IOGEhuGFpeGGvDsg66mNOyDhhIbhhaXhhrw7ICkgSEFOR1VMIFNZTExBQkxFIE1FT05HCitCQTRFO0JBNEU7MTEwNiAxMTY1IDExQkQ7QkE0RTsxMTA2IDExNjUgMTFCRDsgIyAo66mOOyDrqY47IOGEhuGFpeGGvTsg66mOOyDhhIbhhaXhhr07ICkgSEFOR1VMIFNZTExBQkxFIE1FT0oKK0JBNEY7QkE0RjsxMTA2IDExNjUgMTFCRTtCQTRGOzExMDYgMTE2NSAxMUJFOyAjICjrqY87IOupjzsg4YSG4YWl4Ya+OyDrqY87IOGEhuGFpeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgTUVPQworQkE1MDtCQTUwOzExMDYgMTE2NSAxMUJGO0JBNTA7MTEwNiAxMTY1IDExQkY7ICMgKOupkDsg66mQOyDhhIbhhaXhhr87IOupkDsg4YSG4YWl4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBNRU9LCitCQTUxO0JBNTE7MTEwNiAxMTY1IDExQzA7QkE1MTsxMTA2IDExNjUgMTFDMDsgIyAo66mROyDrqZE7IOGEhuGFpeGHgDsg66mROyDhhIbhhaXhh4A7ICkgSEFOR1VMIFNZTExBQkxFIE1FT1QKK0JBNTI7QkE1MjsxMTA2IDExNjUgMTFDMTtCQTUyOzExMDYgMTE2NSAxMUMxOyAjICjrqZI7IOupkjsg4YSG4YWl4YeBOyDrqZI7IOGEhuGFpeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgTUVPUAorQkE1MztCQTUzOzExMDYgMTE2NSAxMUMyO0JBNTM7MTEwNiAxMTY1IDExQzI7ICMgKOupkzsg66mTOyDhhIbhhaXhh4I7IOupkzsg4YSG4YWl4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBNRU9ICitCQTU0O0JBNTQ7MTEwNiAxMTY2O0JBNTQ7MTEwNiAxMTY2OyAjICjrqZQ7IOuplDsg4YSG4YWmOyDrqZQ7IOGEhuGFpjsgKSBIQU5HVUwgU1lMTEFCTEUgTUUKK0JBNTU7QkE1NTsxMTA2IDExNjYgMTFBODtCQTU1OzExMDYgMTE2NiAxMUE4OyAjICjrqZU7IOuplTsg4YSG4YWm4YaoOyDrqZU7IOGEhuGFpuGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgTUVHCitCQTU2O0JBNTY7MTEwNiAxMTY2IDExQTk7QkE1NjsxMTA2IDExNjYgMTFBOTsgIyAo66mWOyDrqZY7IOGEhuGFpuGGqTsg66mWOyDhhIbhhabhhqk7ICkgSEFOR1VMIFNZTExBQkxFIE1FR0cKK0JBNTc7QkE1NzsxMTA2IDExNjYgMTFBQTtCQTU3OzExMDYgMTE2NiAxMUFBOyAjICjrqZc7IOuplzsg4YSG4YWm4YaqOyDrqZc7IOGEhuGFpuGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgTUVHUworQkE1ODtCQTU4OzExMDYgMTE2NiAxMUFCO0JBNTg7MTEwNiAxMTY2IDExQUI7ICMgKOupmDsg66mYOyDhhIbhhabhhqs7IOupmDsg4YSG4YWm4YarOyApIEhBTkdVTCBTWUxMQUJMRSBNRU4KK0JBNTk7QkE1OTsxMTA2IDExNjYgMTFBQztCQTU5OzExMDYgMTE2NiAxMUFDOyAjICjrqZk7IOupmTsg4YSG4YWm4YasOyDrqZk7IOGEhuGFpuGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgTUVOSgorQkE1QTtCQTVBOzExMDYgMTE2NiAxMUFEO0JBNUE7MTEwNiAxMTY2IDExQUQ7ICMgKOupmjsg66maOyDhhIbhhabhhq07IOupmjsg4YSG4YWm4YatOyApIEhBTkdVTCBTWUxMQUJMRSBNRU5ICitCQTVCO0JBNUI7MTEwNiAxMTY2IDExQUU7QkE1QjsxMTA2IDExNjYgMTFBRTsgIyAo66mbOyDrqZs7IOGEhuGFpuGGrjsg66mbOyDhhIbhhabhhq47ICkgSEFOR1VMIFNZTExBQkxFIE1FRAorQkE1QztCQTVDOzExMDYgMTE2NiAxMUFGO0JBNUM7MTEwNiAxMTY2IDExQUY7ICMgKOupnDsg66mcOyDhhIbhhabhhq87IOupnDsg4YSG4YWm4YavOyApIEhBTkdVTCBTWUxMQUJMRSBNRUwKK0JBNUQ7QkE1RDsxMTA2IDExNjYgMTFCMDtCQTVEOzExMDYgMTE2NiAxMUIwOyAjICjrqZ07IOupnTsg4YSG4YWm4YawOyDrqZ07IOGEhuGFpuGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgTUVMRworQkE1RTtCQTVFOzExMDYgMTE2NiAxMUIxO0JBNUU7MTEwNiAxMTY2IDExQjE7ICMgKOupnjsg66meOyDhhIbhhabhhrE7IOupnjsg4YSG4YWm4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBNRUxNCitCQTVGO0JBNUY7MTEwNiAxMTY2IDExQjI7QkE1RjsxMTA2IDExNjYgMTFCMjsgIyAo66mfOyDrqZ87IOGEhuGFpuGGsjsg66mfOyDhhIbhhabhhrI7ICkgSEFOR1VMIFNZTExBQkxFIE1FTEIKK0JBNjA7QkE2MDsxMTA2IDExNjYgMTFCMztCQTYwOzExMDYgMTE2NiAxMUIzOyAjICjrqaA7IOupoDsg4YSG4YWm4YazOyDrqaA7IOGEhuGFpuGGszsgKSBIQU5HVUwgU1lMTEFCTEUgTUVMUworQkE2MTtCQTYxOzExMDYgMTE2NiAxMUI0O0JBNjE7MTEwNiAxMTY2IDExQjQ7ICMgKOupoTsg66mhOyDhhIbhhabhhrQ7IOupoTsg4YSG4YWm4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBNRUxUCitCQTYyO0JBNjI7MTEwNiAxMTY2IDExQjU7QkE2MjsxMTA2IDExNjYgMTFCNTsgIyAo66miOyDrqaI7IOGEhuGFpuGGtTsg66miOyDhhIbhhabhhrU7ICkgSEFOR1VMIFNZTExBQkxFIE1FTFAKK0JBNjM7QkE2MzsxMTA2IDExNjYgMTFCNjtCQTYzOzExMDYgMTE2NiAxMUI2OyAjICjrqaM7IOupozsg4YSG4YWm4Ya2OyDrqaM7IOGEhuGFpuGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgTUVMSAorQkE2NDtCQTY0OzExMDYgMTE2NiAxMUI3O0JBNjQ7MTEwNiAxMTY2IDExQjc7ICMgKOuppDsg66mkOyDhhIbhhabhhrc7IOuppDsg4YSG4YWm4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBNRU0KK0JBNjU7QkE2NTsxMTA2IDExNjYgMTFCODtCQTY1OzExMDYgMTE2NiAxMUI4OyAjICjrqaU7IOuppTsg4YSG4YWm4Ya4OyDrqaU7IOGEhuGFpuGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgTUVCCitCQTY2O0JBNjY7MTEwNiAxMTY2IDExQjk7QkE2NjsxMTA2IDExNjYgMTFCOTsgIyAo66mmOyDrqaY7IOGEhuGFpuGGuTsg66mmOyDhhIbhhabhhrk7ICkgSEFOR1VMIFNZTExBQkxFIE1FQlMKK0JBNjc7QkE2NzsxMTA2IDExNjYgMTFCQTtCQTY3OzExMDYgMTE2NiAxMUJBOyAjICjrqac7IOuppzsg4YSG4YWm4Ya6OyDrqac7IOGEhuGFpuGGujsgKSBIQU5HVUwgU1lMTEFCTEUgTUVTCitCQTY4O0JBNjg7MTEwNiAxMTY2IDExQkI7QkE2ODsxMTA2IDExNjYgMTFCQjsgIyAo66moOyDrqag7IOGEhuGFpuGGuzsg66moOyDhhIbhhabhhrs7ICkgSEFOR1VMIFNZTExBQkxFIE1FU1MKK0JBNjk7QkE2OTsxMTA2IDExNjYgMTFCQztCQTY5OzExMDYgMTE2NiAxMUJDOyAjICjrqak7IOupqTsg4YSG4YWm4Ya8OyDrqak7IOGEhuGFpuGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgTUVORworQkE2QTtCQTZBOzExMDYgMTE2NiAxMUJEO0JBNkE7MTEwNiAxMTY2IDExQkQ7ICMgKOupqjsg66mqOyDhhIbhhabhhr07IOupqjsg4YSG4YWm4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBNRUoKK0JBNkI7QkE2QjsxMTA2IDExNjYgMTFCRTtCQTZCOzExMDYgMTE2NiAxMUJFOyAjICjrqas7IOupqzsg4YSG4YWm4Ya+OyDrqas7IOGEhuGFpuGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgTUVDCitCQTZDO0JBNkM7MTEwNiAxMTY2IDExQkY7QkE2QzsxMTA2IDExNjYgMTFCRjsgIyAo66msOyDrqaw7IOGEhuGFpuGGvzsg66msOyDhhIbhhabhhr87ICkgSEFOR1VMIFNZTExBQkxFIE1FSworQkE2RDtCQTZEOzExMDYgMTE2NiAxMUMwO0JBNkQ7MTEwNiAxMTY2IDExQzA7ICMgKOuprTsg66mtOyDhhIbhhabhh4A7IOuprTsg4YSG4YWm4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBNRVQKK0JBNkU7QkE2RTsxMTA2IDExNjYgMTFDMTtCQTZFOzExMDYgMTE2NiAxMUMxOyAjICjrqa47IOuprjsg4YSG4YWm4YeBOyDrqa47IOGEhuGFpuGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgTUVQCitCQTZGO0JBNkY7MTEwNiAxMTY2IDExQzI7QkE2RjsxMTA2IDExNjYgMTFDMjsgIyAo66mvOyDrqa87IOGEhuGFpuGHgjsg66mvOyDhhIbhhabhh4I7ICkgSEFOR1VMIFNZTExBQkxFIE1FSAorQkE3MDtCQTcwOzExMDYgMTE2NztCQTcwOzExMDYgMTE2NzsgIyAo66mwOyDrqbA7IOGEhuGFpzsg66mwOyDhhIbhhac7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRU8KK0JBNzE7QkE3MTsxMTA2IDExNjcgMTFBODtCQTcxOzExMDYgMTE2NyAxMUE4OyAjICjrqbE7IOupsTsg4YSG4YWn4YaoOyDrqbE7IOGEhuGFp+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgTVlFT0cKK0JBNzI7QkE3MjsxMTA2IDExNjcgMTFBOTtCQTcyOzExMDYgMTE2NyAxMUE5OyAjICjrqbI7IOupsjsg4YSG4YWn4YapOyDrqbI7IOGEhuGFp+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgTVlFT0dHCitCQTczO0JBNzM7MTEwNiAxMTY3IDExQUE7QkE3MzsxMTA2IDExNjcgMTFBQTsgIyAo66mzOyDrqbM7IOGEhuGFp+GGqjsg66mzOyDhhIbhhafhhqo7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRU9HUworQkE3NDtCQTc0OzExMDYgMTE2NyAxMUFCO0JBNzQ7MTEwNiAxMTY3IDExQUI7ICMgKOuptDsg66m0OyDhhIbhhafhhqs7IOuptDsg4YSG4YWn4YarOyApIEhBTkdVTCBTWUxMQUJMRSBNWUVPTgorQkE3NTtCQTc1OzExMDYgMTE2NyAxMUFDO0JBNzU7MTEwNiAxMTY3IDExQUM7ICMgKOuptTsg66m1OyDhhIbhhafhhqw7IOuptTsg4YSG4YWn4YasOyApIEhBTkdVTCBTWUxMQUJMRSBNWUVPTkoKK0JBNzY7QkE3NjsxMTA2IDExNjcgMTFBRDtCQTc2OzExMDYgMTE2NyAxMUFEOyAjICjrqbY7IOuptjsg4YSG4YWn4YatOyDrqbY7IOGEhuGFp+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgTVlFT05ICitCQTc3O0JBNzc7MTEwNiAxMTY3IDExQUU7QkE3NzsxMTA2IDExNjcgMTFBRTsgIyAo66m3OyDrqbc7IOGEhuGFp+GGrjsg66m3OyDhhIbhhafhhq47ICkgSEFOR1VMIFNZTExBQkxFIE1ZRU9ECitCQTc4O0JBNzg7MTEwNiAxMTY3IDExQUY7QkE3ODsxMTA2IDExNjcgMTFBRjsgIyAo66m4OyDrqbg7IOGEhuGFp+GGrzsg66m4OyDhhIbhhafhhq87ICkgSEFOR1VMIFNZTExBQkxFIE1ZRU9MCitCQTc5O0JBNzk7MTEwNiAxMTY3IDExQjA7QkE3OTsxMTA2IDExNjcgMTFCMDsgIyAo66m5OyDrqbk7IOGEhuGFp+GGsDsg66m5OyDhhIbhhafhhrA7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRU9MRworQkE3QTtCQTdBOzExMDYgMTE2NyAxMUIxO0JBN0E7MTEwNiAxMTY3IDExQjE7ICMgKOupujsg66m6OyDhhIbhhafhhrE7IOupujsg4YSG4YWn4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBNWUVPTE0KK0JBN0I7QkE3QjsxMTA2IDExNjcgMTFCMjtCQTdCOzExMDYgMTE2NyAxMUIyOyAjICjrqbs7IOupuzsg4YSG4YWn4YayOyDrqbs7IOGEhuGFp+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgTVlFT0xCCitCQTdDO0JBN0M7MTEwNiAxMTY3IDExQjM7QkE3QzsxMTA2IDExNjcgMTFCMzsgIyAo66m8OyDrqbw7IOGEhuGFp+GGszsg66m8OyDhhIbhhafhhrM7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRU9MUworQkE3RDtCQTdEOzExMDYgMTE2NyAxMUI0O0JBN0Q7MTEwNiAxMTY3IDExQjQ7ICMgKOupvTsg66m9OyDhhIbhhafhhrQ7IOupvTsg4YSG4YWn4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBNWUVPTFQKK0JBN0U7QkE3RTsxMTA2IDExNjcgMTFCNTtCQTdFOzExMDYgMTE2NyAxMUI1OyAjICjrqb47IOupvjsg4YSG4YWn4Ya1OyDrqb47IOGEhuGFp+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgTVlFT0xQCitCQTdGO0JBN0Y7MTEwNiAxMTY3IDExQjY7QkE3RjsxMTA2IDExNjcgMTFCNjsgIyAo66m/OyDrqb87IOGEhuGFp+GGtjsg66m/OyDhhIbhhafhhrY7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRU9MSAorQkE4MDtCQTgwOzExMDYgMTE2NyAxMUI3O0JBODA7MTEwNiAxMTY3IDExQjc7ICMgKOuqgDsg66qAOyDhhIbhhafhhrc7IOuqgDsg4YSG4YWn4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBNWUVPTQorQkE4MTtCQTgxOzExMDYgMTE2NyAxMUI4O0JBODE7MTEwNiAxMTY3IDExQjg7ICMgKOuqgTsg66qBOyDhhIbhhafhhrg7IOuqgTsg4YSG4YWn4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBNWUVPQgorQkE4MjtCQTgyOzExMDYgMTE2NyAxMUI5O0JBODI7MTEwNiAxMTY3IDExQjk7ICMgKOuqgjsg66qCOyDhhIbhhafhhrk7IOuqgjsg4YSG4YWn4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBNWUVPQlMKK0JBODM7QkE4MzsxMTA2IDExNjcgMTFCQTtCQTgzOzExMDYgMTE2NyAxMUJBOyAjICjrqoM7IOuqgzsg4YSG4YWn4Ya6OyDrqoM7IOGEhuGFp+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgTVlFT1MKK0JBODQ7QkE4NDsxMTA2IDExNjcgMTFCQjtCQTg0OzExMDYgMTE2NyAxMUJCOyAjICjrqoQ7IOuqhDsg4YSG4YWn4Ya7OyDrqoQ7IOGEhuGFp+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgTVlFT1NTCitCQTg1O0JBODU7MTEwNiAxMTY3IDExQkM7QkE4NTsxMTA2IDExNjcgMTFCQzsgIyAo66qFOyDrqoU7IOGEhuGFp+GGvDsg66qFOyDhhIbhhafhhrw7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRU9ORworQkE4NjtCQTg2OzExMDYgMTE2NyAxMUJEO0JBODY7MTEwNiAxMTY3IDExQkQ7ICMgKOuqhjsg66qGOyDhhIbhhafhhr07IOuqhjsg4YSG4YWn4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBNWUVPSgorQkE4NztCQTg3OzExMDYgMTE2NyAxMUJFO0JBODc7MTEwNiAxMTY3IDExQkU7ICMgKOuqhzsg66qHOyDhhIbhhafhhr47IOuqhzsg4YSG4YWn4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBNWUVPQworQkE4ODtCQTg4OzExMDYgMTE2NyAxMUJGO0JBODg7MTEwNiAxMTY3IDExQkY7ICMgKOuqiDsg66qIOyDhhIbhhafhhr87IOuqiDsg4YSG4YWn4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBNWUVPSworQkE4OTtCQTg5OzExMDYgMTE2NyAxMUMwO0JBODk7MTEwNiAxMTY3IDExQzA7ICMgKOuqiTsg66qJOyDhhIbhhafhh4A7IOuqiTsg4YSG4YWn4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBNWUVPVAorQkE4QTtCQThBOzExMDYgMTE2NyAxMUMxO0JBOEE7MTEwNiAxMTY3IDExQzE7ICMgKOuqijsg66qKOyDhhIbhhafhh4E7IOuqijsg4YSG4YWn4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBNWUVPUAorQkE4QjtCQThCOzExMDYgMTE2NyAxMUMyO0JBOEI7MTEwNiAxMTY3IDExQzI7ICMgKOuqizsg66qLOyDhhIbhhafhh4I7IOuqizsg4YSG4YWn4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBNWUVPSAorQkE4QztCQThDOzExMDYgMTE2ODtCQThDOzExMDYgMTE2ODsgIyAo66qMOyDrqow7IOGEhuGFqDsg66qMOyDhhIbhhag7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRQorQkE4RDtCQThEOzExMDYgMTE2OCAxMUE4O0JBOEQ7MTEwNiAxMTY4IDExQTg7ICMgKOuqjTsg66qNOyDhhIbhhajhhqg7IOuqjTsg4YSG4YWo4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBNWUVHCitCQThFO0JBOEU7MTEwNiAxMTY4IDExQTk7QkE4RTsxMTA2IDExNjggMTFBOTsgIyAo66qOOyDrqo47IOGEhuGFqOGGqTsg66qOOyDhhIbhhajhhqk7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRUdHCitCQThGO0JBOEY7MTEwNiAxMTY4IDExQUE7QkE4RjsxMTA2IDExNjggMTFBQTsgIyAo66qPOyDrqo87IOGEhuGFqOGGqjsg66qPOyDhhIbhhajhhqo7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRUdTCitCQTkwO0JBOTA7MTEwNiAxMTY4IDExQUI7QkE5MDsxMTA2IDExNjggMTFBQjsgIyAo66qQOyDrqpA7IOGEhuGFqOGGqzsg66qQOyDhhIbhhajhhqs7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRU4KK0JBOTE7QkE5MTsxMTA2IDExNjggMTFBQztCQTkxOzExMDYgMTE2OCAxMUFDOyAjICjrqpE7IOuqkTsg4YSG4YWo4YasOyDrqpE7IOGEhuGFqOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgTVlFTkoKK0JBOTI7QkE5MjsxMTA2IDExNjggMTFBRDtCQTkyOzExMDYgMTE2OCAxMUFEOyAjICjrqpI7IOuqkjsg4YSG4YWo4YatOyDrqpI7IOGEhuGFqOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgTVlFTkgKK0JBOTM7QkE5MzsxMTA2IDExNjggMTFBRTtCQTkzOzExMDYgMTE2OCAxMUFFOyAjICjrqpM7IOuqkzsg4YSG4YWo4YauOyDrqpM7IOGEhuGFqOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgTVlFRAorQkE5NDtCQTk0OzExMDYgMTE2OCAxMUFGO0JBOTQ7MTEwNiAxMTY4IDExQUY7ICMgKOuqlDsg66qUOyDhhIbhhajhhq87IOuqlDsg4YSG4YWo4YavOyApIEhBTkdVTCBTWUxMQUJMRSBNWUVMCitCQTk1O0JBOTU7MTEwNiAxMTY4IDExQjA7QkE5NTsxMTA2IDExNjggMTFCMDsgIyAo66qVOyDrqpU7IOGEhuGFqOGGsDsg66qVOyDhhIbhhajhhrA7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRUxHCitCQTk2O0JBOTY7MTEwNiAxMTY4IDExQjE7QkE5NjsxMTA2IDExNjggMTFCMTsgIyAo66qWOyDrqpY7IOGEhuGFqOGGsTsg66qWOyDhhIbhhajhhrE7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRUxNCitCQTk3O0JBOTc7MTEwNiAxMTY4IDExQjI7QkE5NzsxMTA2IDExNjggMTFCMjsgIyAo66qXOyDrqpc7IOGEhuGFqOGGsjsg66qXOyDhhIbhhajhhrI7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRUxCCitCQTk4O0JBOTg7MTEwNiAxMTY4IDExQjM7QkE5ODsxMTA2IDExNjggMTFCMzsgIyAo66qYOyDrqpg7IOGEhuGFqOGGszsg66qYOyDhhIbhhajhhrM7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRUxTCitCQTk5O0JBOTk7MTEwNiAxMTY4IDExQjQ7QkE5OTsxMTA2IDExNjggMTFCNDsgIyAo66qZOyDrqpk7IOGEhuGFqOGGtDsg66qZOyDhhIbhhajhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRUxUCitCQTlBO0JBOUE7MTEwNiAxMTY4IDExQjU7QkE5QTsxMTA2IDExNjggMTFCNTsgIyAo66qaOyDrqpo7IOGEhuGFqOGGtTsg66qaOyDhhIbhhajhhrU7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRUxQCitCQTlCO0JBOUI7MTEwNiAxMTY4IDExQjY7QkE5QjsxMTA2IDExNjggMTFCNjsgIyAo66qbOyDrqps7IOGEhuGFqOGGtjsg66qbOyDhhIbhhajhhrY7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRUxICitCQTlDO0JBOUM7MTEwNiAxMTY4IDExQjc7QkE5QzsxMTA2IDExNjggMTFCNzsgIyAo66qcOyDrqpw7IOGEhuGFqOGGtzsg66qcOyDhhIbhhajhhrc7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRU0KK0JBOUQ7QkE5RDsxMTA2IDExNjggMTFCODtCQTlEOzExMDYgMTE2OCAxMUI4OyAjICjrqp07IOuqnTsg4YSG4YWo4Ya4OyDrqp07IOGEhuGFqOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgTVlFQgorQkE5RTtCQTlFOzExMDYgMTE2OCAxMUI5O0JBOUU7MTEwNiAxMTY4IDExQjk7ICMgKOuqnjsg66qeOyDhhIbhhajhhrk7IOuqnjsg4YSG4YWo4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBNWUVCUworQkE5RjtCQTlGOzExMDYgMTE2OCAxMUJBO0JBOUY7MTEwNiAxMTY4IDExQkE7ICMgKOuqnzsg66qfOyDhhIbhhajhhro7IOuqnzsg4YSG4YWo4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBNWUVTCitCQUEwO0JBQTA7MTEwNiAxMTY4IDExQkI7QkFBMDsxMTA2IDExNjggMTFCQjsgIyAo66qgOyDrqqA7IOGEhuGFqOGGuzsg66qgOyDhhIbhhajhhrs7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRVNTCitCQUExO0JBQTE7MTEwNiAxMTY4IDExQkM7QkFBMTsxMTA2IDExNjggMTFCQzsgIyAo66qhOyDrqqE7IOGEhuGFqOGGvDsg66qhOyDhhIbhhajhhrw7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRU5HCitCQUEyO0JBQTI7MTEwNiAxMTY4IDExQkQ7QkFBMjsxMTA2IDExNjggMTFCRDsgIyAo66qiOyDrqqI7IOGEhuGFqOGGvTsg66qiOyDhhIbhhajhhr07ICkgSEFOR1VMIFNZTExBQkxFIE1ZRUoKK0JBQTM7QkFBMzsxMTA2IDExNjggMTFCRTtCQUEzOzExMDYgMTE2OCAxMUJFOyAjICjrqqM7IOuqozsg4YSG4YWo4Ya+OyDrqqM7IOGEhuGFqOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgTVlFQworQkFBNDtCQUE0OzExMDYgMTE2OCAxMUJGO0JBQTQ7MTEwNiAxMTY4IDExQkY7ICMgKOuqpDsg66qkOyDhhIbhhajhhr87IOuqpDsg4YSG4YWo4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBNWUVLCitCQUE1O0JBQTU7MTEwNiAxMTY4IDExQzA7QkFBNTsxMTA2IDExNjggMTFDMDsgIyAo66qlOyDrqqU7IOGEhuGFqOGHgDsg66qlOyDhhIbhhajhh4A7ICkgSEFOR1VMIFNZTExBQkxFIE1ZRVQKK0JBQTY7QkFBNjsxMTA2IDExNjggMTFDMTtCQUE2OzExMDYgMTE2OCAxMUMxOyAjICjrqqY7IOuqpjsg4YSG4YWo4YeBOyDrqqY7IOGEhuGFqOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgTVlFUAorQkFBNztCQUE3OzExMDYgMTE2OCAxMUMyO0JBQTc7MTEwNiAxMTY4IDExQzI7ICMgKOuqpzsg66qnOyDhhIbhhajhh4I7IOuqpzsg4YSG4YWo4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBNWUVICitCQUE4O0JBQTg7MTEwNiAxMTY5O0JBQTg7MTEwNiAxMTY5OyAjICjrqqg7IOuqqDsg4YSG4YWpOyDrqqg7IOGEhuGFqTsgKSBIQU5HVUwgU1lMTEFCTEUgTU8KK0JBQTk7QkFBOTsxMTA2IDExNjkgMTFBODtCQUE5OzExMDYgMTE2OSAxMUE4OyAjICjrqqk7IOuqqTsg4YSG4YWp4YaoOyDrqqk7IOGEhuGFqeGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgTU9HCitCQUFBO0JBQUE7MTEwNiAxMTY5IDExQTk7QkFBQTsxMTA2IDExNjkgMTFBOTsgIyAo66qqOyDrqqo7IOGEhuGFqeGGqTsg66qqOyDhhIbhhanhhqk7ICkgSEFOR1VMIFNZTExBQkxFIE1PR0cKK0JBQUI7QkFBQjsxMTA2IDExNjkgMTFBQTtCQUFCOzExMDYgMTE2OSAxMUFBOyAjICjrqqs7IOuqqzsg4YSG4YWp4YaqOyDrqqs7IOGEhuGFqeGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgTU9HUworQkFBQztCQUFDOzExMDYgMTE2OSAxMUFCO0JBQUM7MTEwNiAxMTY5IDExQUI7ICMgKOuqrDsg66qsOyDhhIbhhanhhqs7IOuqrDsg4YSG4YWp4YarOyApIEhBTkdVTCBTWUxMQUJMRSBNT04KK0JBQUQ7QkFBRDsxMTA2IDExNjkgMTFBQztCQUFEOzExMDYgMTE2OSAxMUFDOyAjICjrqq07IOuqrTsg4YSG4YWp4YasOyDrqq07IOGEhuGFqeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgTU9OSgorQkFBRTtCQUFFOzExMDYgMTE2OSAxMUFEO0JBQUU7MTEwNiAxMTY5IDExQUQ7ICMgKOuqrjsg66quOyDhhIbhhanhhq07IOuqrjsg4YSG4YWp4YatOyApIEhBTkdVTCBTWUxMQUJMRSBNT05ICitCQUFGO0JBQUY7MTEwNiAxMTY5IDExQUU7QkFBRjsxMTA2IDExNjkgMTFBRTsgIyAo66qvOyDrqq87IOGEhuGFqeGGrjsg66qvOyDhhIbhhanhhq47ICkgSEFOR1VMIFNZTExBQkxFIE1PRAorQkFCMDtCQUIwOzExMDYgMTE2OSAxMUFGO0JBQjA7MTEwNiAxMTY5IDExQUY7ICMgKOuqsDsg66qwOyDhhIbhhanhhq87IOuqsDsg4YSG4YWp4YavOyApIEhBTkdVTCBTWUxMQUJMRSBNT0wKK0JBQjE7QkFCMTsxMTA2IDExNjkgMTFCMDtCQUIxOzExMDYgMTE2OSAxMUIwOyAjICjrqrE7IOuqsTsg4YSG4YWp4YawOyDrqrE7IOGEhuGFqeGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgTU9MRworQkFCMjtCQUIyOzExMDYgMTE2OSAxMUIxO0JBQjI7MTEwNiAxMTY5IDExQjE7ICMgKOuqsjsg66qyOyDhhIbhhanhhrE7IOuqsjsg4YSG4YWp4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBNT0xNCitCQUIzO0JBQjM7MTEwNiAxMTY5IDExQjI7QkFCMzsxMTA2IDExNjkgMTFCMjsgIyAo66qzOyDrqrM7IOGEhuGFqeGGsjsg66qzOyDhhIbhhanhhrI7ICkgSEFOR1VMIFNZTExBQkxFIE1PTEIKK0JBQjQ7QkFCNDsxMTA2IDExNjkgMTFCMztCQUI0OzExMDYgMTE2OSAxMUIzOyAjICjrqrQ7IOuqtDsg4YSG4YWp4YazOyDrqrQ7IOGEhuGFqeGGszsgKSBIQU5HVUwgU1lMTEFCTEUgTU9MUworQkFCNTtCQUI1OzExMDYgMTE2OSAxMUI0O0JBQjU7MTEwNiAxMTY5IDExQjQ7ICMgKOuqtTsg66q1OyDhhIbhhanhhrQ7IOuqtTsg4YSG4YWp4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBNT0xUCitCQUI2O0JBQjY7MTEwNiAxMTY5IDExQjU7QkFCNjsxMTA2IDExNjkgMTFCNTsgIyAo66q2OyDrqrY7IOGEhuGFqeGGtTsg66q2OyDhhIbhhanhhrU7ICkgSEFOR1VMIFNZTExBQkxFIE1PTFAKK0JBQjc7QkFCNzsxMTA2IDExNjkgMTFCNjtCQUI3OzExMDYgMTE2OSAxMUI2OyAjICjrqrc7IOuqtzsg4YSG4YWp4Ya2OyDrqrc7IOGEhuGFqeGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgTU9MSAorQkFCODtCQUI4OzExMDYgMTE2OSAxMUI3O0JBQjg7MTEwNiAxMTY5IDExQjc7ICMgKOuquDsg66q4OyDhhIbhhanhhrc7IOuquDsg4YSG4YWp4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBNT00KK0JBQjk7QkFCOTsxMTA2IDExNjkgMTFCODtCQUI5OzExMDYgMTE2OSAxMUI4OyAjICjrqrk7IOuquTsg4YSG4YWp4Ya4OyDrqrk7IOGEhuGFqeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgTU9CCitCQUJBO0JBQkE7MTEwNiAxMTY5IDExQjk7QkFCQTsxMTA2IDExNjkgMTFCOTsgIyAo66q6OyDrqro7IOGEhuGFqeGGuTsg66q6OyDhhIbhhanhhrk7ICkgSEFOR1VMIFNZTExBQkxFIE1PQlMKK0JBQkI7QkFCQjsxMTA2IDExNjkgMTFCQTtCQUJCOzExMDYgMTE2OSAxMUJBOyAjICjrqrs7IOuquzsg4YSG4YWp4Ya6OyDrqrs7IOGEhuGFqeGGujsgKSBIQU5HVUwgU1lMTEFCTEUgTU9TCitCQUJDO0JBQkM7MTEwNiAxMTY5IDExQkI7QkFCQzsxMTA2IDExNjkgMTFCQjsgIyAo66q8OyDrqrw7IOGEhuGFqeGGuzsg66q8OyDhhIbhhanhhrs7ICkgSEFOR1VMIFNZTExBQkxFIE1PU1MKK0JBQkQ7QkFCRDsxMTA2IDExNjkgMTFCQztCQUJEOzExMDYgMTE2OSAxMUJDOyAjICjrqr07IOuqvTsg4YSG4YWp4Ya8OyDrqr07IOGEhuGFqeGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgTU9ORworQkFCRTtCQUJFOzExMDYgMTE2OSAxMUJEO0JBQkU7MTEwNiAxMTY5IDExQkQ7ICMgKOuqvjsg66q+OyDhhIbhhanhhr07IOuqvjsg4YSG4YWp4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBNT0oKK0JBQkY7QkFCRjsxMTA2IDExNjkgMTFCRTtCQUJGOzExMDYgMTE2OSAxMUJFOyAjICjrqr87IOuqvzsg4YSG4YWp4Ya+OyDrqr87IOGEhuGFqeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgTU9DCitCQUMwO0JBQzA7MTEwNiAxMTY5IDExQkY7QkFDMDsxMTA2IDExNjkgMTFCRjsgIyAo66uAOyDrq4A7IOGEhuGFqeGGvzsg66uAOyDhhIbhhanhhr87ICkgSEFOR1VMIFNZTExBQkxFIE1PSworQkFDMTtCQUMxOzExMDYgMTE2OSAxMUMwO0JBQzE7MTEwNiAxMTY5IDExQzA7ICMgKOurgTsg66uBOyDhhIbhhanhh4A7IOurgTsg4YSG4YWp4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBNT1QKK0JBQzI7QkFDMjsxMTA2IDExNjkgMTFDMTtCQUMyOzExMDYgMTE2OSAxMUMxOyAjICjrq4I7IOurgjsg4YSG4YWp4YeBOyDrq4I7IOGEhuGFqeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgTU9QCitCQUMzO0JBQzM7MTEwNiAxMTY5IDExQzI7QkFDMzsxMTA2IDExNjkgMTFDMjsgIyAo66uDOyDrq4M7IOGEhuGFqeGHgjsg66uDOyDhhIbhhanhh4I7ICkgSEFOR1VMIFNZTExBQkxFIE1PSAorQkFDNDtCQUM0OzExMDYgMTE2QTtCQUM0OzExMDYgMTE2QTsgIyAo66uEOyDrq4Q7IOGEhuGFqjsg66uEOyDhhIbhhao7ICkgSEFOR1VMIFNZTExBQkxFIE1XQQorQkFDNTtCQUM1OzExMDYgMTE2QSAxMUE4O0JBQzU7MTEwNiAxMTZBIDExQTg7ICMgKOurhTsg66uFOyDhhIbhharhhqg7IOurhTsg4YSG4YWq4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBNV0FHCitCQUM2O0JBQzY7MTEwNiAxMTZBIDExQTk7QkFDNjsxMTA2IDExNkEgMTFBOTsgIyAo66uGOyDrq4Y7IOGEhuGFquGGqTsg66uGOyDhhIbhharhhqk7ICkgSEFOR1VMIFNZTExBQkxFIE1XQUdHCitCQUM3O0JBQzc7MTEwNiAxMTZBIDExQUE7QkFDNzsxMTA2IDExNkEgMTFBQTsgIyAo66uHOyDrq4c7IOGEhuGFquGGqjsg66uHOyDhhIbhharhhqo7ICkgSEFOR1VMIFNZTExBQkxFIE1XQUdTCitCQUM4O0JBQzg7MTEwNiAxMTZBIDExQUI7QkFDODsxMTA2IDExNkEgMTFBQjsgIyAo66uIOyDrq4g7IOGEhuGFquGGqzsg66uIOyDhhIbhharhhqs7ICkgSEFOR1VMIFNZTExBQkxFIE1XQU4KK0JBQzk7QkFDOTsxMTA2IDExNkEgMTFBQztCQUM5OzExMDYgMTE2QSAxMUFDOyAjICjrq4k7IOuriTsg4YSG4YWq4YasOyDrq4k7IOGEhuGFquGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgTVdBTkoKK0JBQ0E7QkFDQTsxMTA2IDExNkEgMTFBRDtCQUNBOzExMDYgMTE2QSAxMUFEOyAjICjrq4o7IOurijsg4YSG4YWq4YatOyDrq4o7IOGEhuGFquGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgTVdBTkgKK0JBQ0I7QkFDQjsxMTA2IDExNkEgMTFBRTtCQUNCOzExMDYgMTE2QSAxMUFFOyAjICjrq4s7IOurizsg4YSG4YWq4YauOyDrq4s7IOGEhuGFquGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgTVdBRAorQkFDQztCQUNDOzExMDYgMTE2QSAxMUFGO0JBQ0M7MTEwNiAxMTZBIDExQUY7ICMgKOurjDsg66uMOyDhhIbhharhhq87IOurjDsg4YSG4YWq4YavOyApIEhBTkdVTCBTWUxMQUJMRSBNV0FMCitCQUNEO0JBQ0Q7MTEwNiAxMTZBIDExQjA7QkFDRDsxMTA2IDExNkEgMTFCMDsgIyAo66uNOyDrq407IOGEhuGFquGGsDsg66uNOyDhhIbhharhhrA7ICkgSEFOR1VMIFNZTExBQkxFIE1XQUxHCitCQUNFO0JBQ0U7MTEwNiAxMTZBIDExQjE7QkFDRTsxMTA2IDExNkEgMTFCMTsgIyAo66uOOyDrq447IOGEhuGFquGGsTsg66uOOyDhhIbhharhhrE7ICkgSEFOR1VMIFNZTExBQkxFIE1XQUxNCitCQUNGO0JBQ0Y7MTEwNiAxMTZBIDExQjI7QkFDRjsxMTA2IDExNkEgMTFCMjsgIyAo66uPOyDrq487IOGEhuGFquGGsjsg66uPOyDhhIbhharhhrI7ICkgSEFOR1VMIFNZTExBQkxFIE1XQUxCCitCQUQwO0JBRDA7MTEwNiAxMTZBIDExQjM7QkFEMDsxMTA2IDExNkEgMTFCMzsgIyAo66uQOyDrq5A7IOGEhuGFquGGszsg66uQOyDhhIbhharhhrM7ICkgSEFOR1VMIFNZTExBQkxFIE1XQUxTCitCQUQxO0JBRDE7MTEwNiAxMTZBIDExQjQ7QkFEMTsxMTA2IDExNkEgMTFCNDsgIyAo66uROyDrq5E7IOGEhuGFquGGtDsg66uROyDhhIbhharhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIE1XQUxUCitCQUQyO0JBRDI7MTEwNiAxMTZBIDExQjU7QkFEMjsxMTA2IDExNkEgMTFCNTsgIyAo66uSOyDrq5I7IOGEhuGFquGGtTsg66uSOyDhhIbhharhhrU7ICkgSEFOR1VMIFNZTExBQkxFIE1XQUxQCitCQUQzO0JBRDM7MTEwNiAxMTZBIDExQjY7QkFEMzsxMTA2IDExNkEgMTFCNjsgIyAo66uTOyDrq5M7IOGEhuGFquGGtjsg66uTOyDhhIbhharhhrY7ICkgSEFOR1VMIFNZTExBQkxFIE1XQUxICitCQUQ0O0JBRDQ7MTEwNiAxMTZBIDExQjc7QkFENDsxMTA2IDExNkEgMTFCNzsgIyAo66uUOyDrq5Q7IOGEhuGFquGGtzsg66uUOyDhhIbhharhhrc7ICkgSEFOR1VMIFNZTExBQkxFIE1XQU0KK0JBRDU7QkFENTsxMTA2IDExNkEgMTFCODtCQUQ1OzExMDYgMTE2QSAxMUI4OyAjICjrq5U7IOurlTsg4YSG4YWq4Ya4OyDrq5U7IOGEhuGFquGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgTVdBQgorQkFENjtCQUQ2OzExMDYgMTE2QSAxMUI5O0JBRDY7MTEwNiAxMTZBIDExQjk7ICMgKOurljsg66uWOyDhhIbhharhhrk7IOurljsg4YSG4YWq4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBNV0FCUworQkFENztCQUQ3OzExMDYgMTE2QSAxMUJBO0JBRDc7MTEwNiAxMTZBIDExQkE7ICMgKOurlzsg66uXOyDhhIbhharhhro7IOurlzsg4YSG4YWq4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBNV0FTCitCQUQ4O0JBRDg7MTEwNiAxMTZBIDExQkI7QkFEODsxMTA2IDExNkEgMTFCQjsgIyAo66uYOyDrq5g7IOGEhuGFquGGuzsg66uYOyDhhIbhharhhrs7ICkgSEFOR1VMIFNZTExBQkxFIE1XQVNTCitCQUQ5O0JBRDk7MTEwNiAxMTZBIDExQkM7QkFEOTsxMTA2IDExNkEgMTFCQzsgIyAo66uZOyDrq5k7IOGEhuGFquGGvDsg66uZOyDhhIbhharhhrw7ICkgSEFOR1VMIFNZTExBQkxFIE1XQU5HCitCQURBO0JBREE7MTEwNiAxMTZBIDExQkQ7QkFEQTsxMTA2IDExNkEgMTFCRDsgIyAo66uaOyDrq5o7IOGEhuGFquGGvTsg66uaOyDhhIbhharhhr07ICkgSEFOR1VMIFNZTExBQkxFIE1XQUoKK0JBREI7QkFEQjsxMTA2IDExNkEgMTFCRTtCQURCOzExMDYgMTE2QSAxMUJFOyAjICjrq5s7IOurmzsg4YSG4YWq4Ya+OyDrq5s7IOGEhuGFquGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgTVdBQworQkFEQztCQURDOzExMDYgMTE2QSAxMUJGO0JBREM7MTEwNiAxMTZBIDExQkY7ICMgKOurnDsg66ucOyDhhIbhharhhr87IOurnDsg4YSG4YWq4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBNV0FLCitCQUREO0JBREQ7MTEwNiAxMTZBIDExQzA7QkFERDsxMTA2IDExNkEgMTFDMDsgIyAo66udOyDrq507IOGEhuGFquGHgDsg66udOyDhhIbhharhh4A7ICkgSEFOR1VMIFNZTExBQkxFIE1XQVQKK0JBREU7QkFERTsxMTA2IDExNkEgMTFDMTtCQURFOzExMDYgMTE2QSAxMUMxOyAjICjrq547IOurnjsg4YSG4YWq4YeBOyDrq547IOGEhuGFquGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgTVdBUAorQkFERjtCQURGOzExMDYgMTE2QSAxMUMyO0JBREY7MTEwNiAxMTZBIDExQzI7ICMgKOurnzsg66ufOyDhhIbhharhh4I7IOurnzsg4YSG4YWq4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBNV0FICitCQUUwO0JBRTA7MTEwNiAxMTZCO0JBRTA7MTEwNiAxMTZCOyAjICjrq6A7IOuroDsg4YSG4YWrOyDrq6A7IOGEhuGFqzsgKSBIQU5HVUwgU1lMTEFCTEUgTVdBRQorQkFFMTtCQUUxOzExMDYgMTE2QiAxMUE4O0JBRTE7MTEwNiAxMTZCIDExQTg7ICMgKOuroTsg66uhOyDhhIbhhavhhqg7IOuroTsg4YSG4YWr4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBNV0FFRworQkFFMjtCQUUyOzExMDYgMTE2QiAxMUE5O0JBRTI7MTEwNiAxMTZCIDExQTk7ICMgKOurojsg66uiOyDhhIbhhavhhqk7IOurojsg4YSG4YWr4YapOyApIEhBTkdVTCBTWUxMQUJMRSBNV0FFR0cKK0JBRTM7QkFFMzsxMTA2IDExNkIgMTFBQTtCQUUzOzExMDYgMTE2QiAxMUFBOyAjICjrq6M7IOurozsg4YSG4YWr4YaqOyDrq6M7IOGEhuGFq+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgTVdBRUdTCitCQUU0O0JBRTQ7MTEwNiAxMTZCIDExQUI7QkFFNDsxMTA2IDExNkIgMTFBQjsgIyAo66ukOyDrq6Q7IOGEhuGFq+GGqzsg66ukOyDhhIbhhavhhqs7ICkgSEFOR1VMIFNZTExBQkxFIE1XQUVOCitCQUU1O0JBRTU7MTEwNiAxMTZCIDExQUM7QkFFNTsxMTA2IDExNkIgMTFBQzsgIyAo66ulOyDrq6U7IOGEhuGFq+GGrDsg66ulOyDhhIbhhavhhqw7ICkgSEFOR1VMIFNZTExBQkxFIE1XQUVOSgorQkFFNjtCQUU2OzExMDYgMTE2QiAxMUFEO0JBRTY7MTEwNiAxMTZCIDExQUQ7ICMgKOurpjsg66umOyDhhIbhhavhhq07IOurpjsg4YSG4YWr4YatOyApIEhBTkdVTCBTWUxMQUJMRSBNV0FFTkgKK0JBRTc7QkFFNzsxMTA2IDExNkIgMTFBRTtCQUU3OzExMDYgMTE2QiAxMUFFOyAjICjrq6c7IOurpzsg4YSG4YWr4YauOyDrq6c7IOGEhuGFq+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgTVdBRUQKK0JBRTg7QkFFODsxMTA2IDExNkIgMTFBRjtCQUU4OzExMDYgMTE2QiAxMUFGOyAjICjrq6g7IOurqDsg4YSG4YWr4YavOyDrq6g7IOGEhuGFq+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgTVdBRUwKK0JBRTk7QkFFOTsxMTA2IDExNkIgMTFCMDtCQUU5OzExMDYgMTE2QiAxMUIwOyAjICjrq6k7IOurqTsg4YSG4YWr4YawOyDrq6k7IOGEhuGFq+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgTVdBRUxHCitCQUVBO0JBRUE7MTEwNiAxMTZCIDExQjE7QkFFQTsxMTA2IDExNkIgMTFCMTsgIyAo66uqOyDrq6o7IOGEhuGFq+GGsTsg66uqOyDhhIbhhavhhrE7ICkgSEFOR1VMIFNZTExBQkxFIE1XQUVMTQorQkFFQjtCQUVCOzExMDYgMTE2QiAxMUIyO0JBRUI7MTEwNiAxMTZCIDExQjI7ICMgKOurqzsg66urOyDhhIbhhavhhrI7IOurqzsg4YSG4YWr4YayOyApIEhBTkdVTCBTWUxMQUJMRSBNV0FFTEIKK0JBRUM7QkFFQzsxMTA2IDExNkIgMTFCMztCQUVDOzExMDYgMTE2QiAxMUIzOyAjICjrq6w7IOurrDsg4YSG4YWr4YazOyDrq6w7IOGEhuGFq+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgTVdBRUxTCitCQUVEO0JBRUQ7MTEwNiAxMTZCIDExQjQ7QkFFRDsxMTA2IDExNkIgMTFCNDsgIyAo66utOyDrq607IOGEhuGFq+GGtDsg66utOyDhhIbhhavhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIE1XQUVMVAorQkFFRTtCQUVFOzExMDYgMTE2QiAxMUI1O0JBRUU7MTEwNiAxMTZCIDExQjU7ICMgKOurrjsg66uuOyDhhIbhhavhhrU7IOurrjsg4YSG4YWr4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBNV0FFTFAKK0JBRUY7QkFFRjsxMTA2IDExNkIgMTFCNjtCQUVGOzExMDYgMTE2QiAxMUI2OyAjICjrq687IOurrzsg4YSG4YWr4Ya2OyDrq687IOGEhuGFq+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgTVdBRUxICitCQUYwO0JBRjA7MTEwNiAxMTZCIDExQjc7QkFGMDsxMTA2IDExNkIgMTFCNzsgIyAo66uwOyDrq7A7IOGEhuGFq+GGtzsg66uwOyDhhIbhhavhhrc7ICkgSEFOR1VMIFNZTExBQkxFIE1XQUVNCitCQUYxO0JBRjE7MTEwNiAxMTZCIDExQjg7QkFGMTsxMTA2IDExNkIgMTFCODsgIyAo66uxOyDrq7E7IOGEhuGFq+GGuDsg66uxOyDhhIbhhavhhrg7ICkgSEFOR1VMIFNZTExBQkxFIE1XQUVCCitCQUYyO0JBRjI7MTEwNiAxMTZCIDExQjk7QkFGMjsxMTA2IDExNkIgMTFCOTsgIyAo66uyOyDrq7I7IOGEhuGFq+GGuTsg66uyOyDhhIbhhavhhrk7ICkgSEFOR1VMIFNZTExBQkxFIE1XQUVCUworQkFGMztCQUYzOzExMDYgMTE2QiAxMUJBO0JBRjM7MTEwNiAxMTZCIDExQkE7ICMgKOurszsg66uzOyDhhIbhhavhhro7IOurszsg4YSG4YWr4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBNV0FFUworQkFGNDtCQUY0OzExMDYgMTE2QiAxMUJCO0JBRjQ7MTEwNiAxMTZCIDExQkI7ICMgKOurtDsg66u0OyDhhIbhhavhhrs7IOurtDsg4YSG4YWr4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBNV0FFU1MKK0JBRjU7QkFGNTsxMTA2IDExNkIgMTFCQztCQUY1OzExMDYgMTE2QiAxMUJDOyAjICjrq7U7IOurtTsg4YSG4YWr4Ya8OyDrq7U7IOGEhuGFq+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgTVdBRU5HCitCQUY2O0JBRjY7MTEwNiAxMTZCIDExQkQ7QkFGNjsxMTA2IDExNkIgMTFCRDsgIyAo66u2OyDrq7Y7IOGEhuGFq+GGvTsg66u2OyDhhIbhhavhhr07ICkgSEFOR1VMIFNZTExBQkxFIE1XQUVKCitCQUY3O0JBRjc7MTEwNiAxMTZCIDExQkU7QkFGNzsxMTA2IDExNkIgMTFCRTsgIyAo66u3OyDrq7c7IOGEhuGFq+GGvjsg66u3OyDhhIbhhavhhr47ICkgSEFOR1VMIFNZTExBQkxFIE1XQUVDCitCQUY4O0JBRjg7MTEwNiAxMTZCIDExQkY7QkFGODsxMTA2IDExNkIgMTFCRjsgIyAo66u4OyDrq7g7IOGEhuGFq+GGvzsg66u4OyDhhIbhhavhhr87ICkgSEFOR1VMIFNZTExBQkxFIE1XQUVLCitCQUY5O0JBRjk7MTEwNiAxMTZCIDExQzA7QkFGOTsxMTA2IDExNkIgMTFDMDsgIyAo66u5OyDrq7k7IOGEhuGFq+GHgDsg66u5OyDhhIbhhavhh4A7ICkgSEFOR1VMIFNZTExBQkxFIE1XQUVUCitCQUZBO0JBRkE7MTEwNiAxMTZCIDExQzE7QkFGQTsxMTA2IDExNkIgMTFDMTsgIyAo66u6OyDrq7o7IOGEhuGFq+GHgTsg66u6OyDhhIbhhavhh4E7ICkgSEFOR1VMIFNZTExBQkxFIE1XQUVQCitCQUZCO0JBRkI7MTEwNiAxMTZCIDExQzI7QkFGQjsxMTA2IDExNkIgMTFDMjsgIyAo66u7OyDrq7s7IOGEhuGFq+GHgjsg66u7OyDhhIbhhavhh4I7ICkgSEFOR1VMIFNZTExBQkxFIE1XQUVICitCQUZDO0JBRkM7MTEwNiAxMTZDO0JBRkM7MTEwNiAxMTZDOyAjICjrq7w7IOurvDsg4YSG4YWsOyDrq7w7IOGEhuGFrDsgKSBIQU5HVUwgU1lMTEFCTEUgTU9FCitCQUZEO0JBRkQ7MTEwNiAxMTZDIDExQTg7QkFGRDsxMTA2IDExNkMgMTFBODsgIyAo66u9OyDrq707IOGEhuGFrOGGqDsg66u9OyDhhIbhhazhhqg7ICkgSEFOR1VMIFNZTExBQkxFIE1PRUcKK0JBRkU7QkFGRTsxMTA2IDExNkMgMTFBOTtCQUZFOzExMDYgMTE2QyAxMUE5OyAjICjrq747IOurvjsg4YSG4YWs4YapOyDrq747IOGEhuGFrOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgTU9FR0cKK0JBRkY7QkFGRjsxMTA2IDExNkMgMTFBQTtCQUZGOzExMDYgMTE2QyAxMUFBOyAjICjrq787IOurvzsg4YSG4YWs4YaqOyDrq787IOGEhuGFrOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgTU9FR1MKK0JCMDA7QkIwMDsxMTA2IDExNkMgMTFBQjtCQjAwOzExMDYgMTE2QyAxMUFCOyAjICjrrIA7IOusgDsg4YSG4YWs4YarOyDrrIA7IOGEhuGFrOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgTU9FTgorQkIwMTtCQjAxOzExMDYgMTE2QyAxMUFDO0JCMDE7MTEwNiAxMTZDIDExQUM7ICMgKOusgTsg66yBOyDhhIbhhazhhqw7IOusgTsg4YSG4YWs4YasOyApIEhBTkdVTCBTWUxMQUJMRSBNT0VOSgorQkIwMjtCQjAyOzExMDYgMTE2QyAxMUFEO0JCMDI7MTEwNiAxMTZDIDExQUQ7ICMgKOusgjsg66yCOyDhhIbhhazhhq07IOusgjsg4YSG4YWs4YatOyApIEhBTkdVTCBTWUxMQUJMRSBNT0VOSAorQkIwMztCQjAzOzExMDYgMTE2QyAxMUFFO0JCMDM7MTEwNiAxMTZDIDExQUU7ICMgKOusgzsg66yDOyDhhIbhhazhhq47IOusgzsg4YSG4YWs4YauOyApIEhBTkdVTCBTWUxMQUJMRSBNT0VECitCQjA0O0JCMDQ7MTEwNiAxMTZDIDExQUY7QkIwNDsxMTA2IDExNkMgMTFBRjsgIyAo66yEOyDrrIQ7IOGEhuGFrOGGrzsg66yEOyDhhIbhhazhhq87ICkgSEFOR1VMIFNZTExBQkxFIE1PRUwKK0JCMDU7QkIwNTsxMTA2IDExNkMgMTFCMDtCQjA1OzExMDYgMTE2QyAxMUIwOyAjICjrrIU7IOushTsg4YSG4YWs4YawOyDrrIU7IOGEhuGFrOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgTU9FTEcKK0JCMDY7QkIwNjsxMTA2IDExNkMgMTFCMTtCQjA2OzExMDYgMTE2QyAxMUIxOyAjICjrrIY7IOushjsg4YSG4YWs4YaxOyDrrIY7IOGEhuGFrOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgTU9FTE0KK0JCMDc7QkIwNzsxMTA2IDExNkMgMTFCMjtCQjA3OzExMDYgMTE2QyAxMUIyOyAjICjrrIc7IOushzsg4YSG4YWs4YayOyDrrIc7IOGEhuGFrOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgTU9FTEIKK0JCMDg7QkIwODsxMTA2IDExNkMgMTFCMztCQjA4OzExMDYgMTE2QyAxMUIzOyAjICjrrIg7IOusiDsg4YSG4YWs4YazOyDrrIg7IOGEhuGFrOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgTU9FTFMKK0JCMDk7QkIwOTsxMTA2IDExNkMgMTFCNDtCQjA5OzExMDYgMTE2QyAxMUI0OyAjICjrrIk7IOusiTsg4YSG4YWs4Ya0OyDrrIk7IOGEhuGFrOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgTU9FTFQKK0JCMEE7QkIwQTsxMTA2IDExNkMgMTFCNTtCQjBBOzExMDYgMTE2QyAxMUI1OyAjICjrrIo7IOusijsg4YSG4YWs4Ya1OyDrrIo7IOGEhuGFrOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgTU9FTFAKK0JCMEI7QkIwQjsxMTA2IDExNkMgMTFCNjtCQjBCOzExMDYgMTE2QyAxMUI2OyAjICjrrIs7IOusizsg4YSG4YWs4Ya2OyDrrIs7IOGEhuGFrOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgTU9FTEgKK0JCMEM7QkIwQzsxMTA2IDExNkMgMTFCNztCQjBDOzExMDYgMTE2QyAxMUI3OyAjICjrrIw7IOusjDsg4YSG4YWs4Ya3OyDrrIw7IOGEhuGFrOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgTU9FTQorQkIwRDtCQjBEOzExMDYgMTE2QyAxMUI4O0JCMEQ7MTEwNiAxMTZDIDExQjg7ICMgKOusjTsg66yNOyDhhIbhhazhhrg7IOusjTsg4YSG4YWs4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBNT0VCCitCQjBFO0JCMEU7MTEwNiAxMTZDIDExQjk7QkIwRTsxMTA2IDExNkMgMTFCOTsgIyAo66yOOyDrrI47IOGEhuGFrOGGuTsg66yOOyDhhIbhhazhhrk7ICkgSEFOR1VMIFNZTExBQkxFIE1PRUJTCitCQjBGO0JCMEY7MTEwNiAxMTZDIDExQkE7QkIwRjsxMTA2IDExNkMgMTFCQTsgIyAo66yPOyDrrI87IOGEhuGFrOGGujsg66yPOyDhhIbhhazhhro7ICkgSEFOR1VMIFNZTExBQkxFIE1PRVMKK0JCMTA7QkIxMDsxMTA2IDExNkMgMTFCQjtCQjEwOzExMDYgMTE2QyAxMUJCOyAjICjrrJA7IOuskDsg4YSG4YWs4Ya7OyDrrJA7IOGEhuGFrOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgTU9FU1MKK0JCMTE7QkIxMTsxMTA2IDExNkMgMTFCQztCQjExOzExMDYgMTE2QyAxMUJDOyAjICjrrJE7IOuskTsg4YSG4YWs4Ya8OyDrrJE7IOGEhuGFrOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgTU9FTkcKK0JCMTI7QkIxMjsxMTA2IDExNkMgMTFCRDtCQjEyOzExMDYgMTE2QyAxMUJEOyAjICjrrJI7IOuskjsg4YSG4YWs4Ya9OyDrrJI7IOGEhuGFrOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgTU9FSgorQkIxMztCQjEzOzExMDYgMTE2QyAxMUJFO0JCMTM7MTEwNiAxMTZDIDExQkU7ICMgKOuskzsg66yTOyDhhIbhhazhhr47IOuskzsg4YSG4YWs4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBNT0VDCitCQjE0O0JCMTQ7MTEwNiAxMTZDIDExQkY7QkIxNDsxMTA2IDExNkMgMTFCRjsgIyAo66yUOyDrrJQ7IOGEhuGFrOGGvzsg66yUOyDhhIbhhazhhr87ICkgSEFOR1VMIFNZTExBQkxFIE1PRUsKK0JCMTU7QkIxNTsxMTA2IDExNkMgMTFDMDtCQjE1OzExMDYgMTE2QyAxMUMwOyAjICjrrJU7IOuslTsg4YSG4YWs4YeAOyDrrJU7IOGEhuGFrOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgTU9FVAorQkIxNjtCQjE2OzExMDYgMTE2QyAxMUMxO0JCMTY7MTEwNiAxMTZDIDExQzE7ICMgKOusljsg66yWOyDhhIbhhazhh4E7IOusljsg4YSG4YWs4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBNT0VQCitCQjE3O0JCMTc7MTEwNiAxMTZDIDExQzI7QkIxNzsxMTA2IDExNkMgMTFDMjsgIyAo66yXOyDrrJc7IOGEhuGFrOGHgjsg66yXOyDhhIbhhazhh4I7ICkgSEFOR1VMIFNZTExBQkxFIE1PRUgKK0JCMTg7QkIxODsxMTA2IDExNkQ7QkIxODsxMTA2IDExNkQ7ICMgKOusmDsg66yYOyDhhIbhha07IOusmDsg4YSG4YWtOyApIEhBTkdVTCBTWUxMQUJMRSBNWU8KK0JCMTk7QkIxOTsxMTA2IDExNkQgMTFBODtCQjE5OzExMDYgMTE2RCAxMUE4OyAjICjrrJk7IOusmTsg4YSG4YWt4YaoOyDrrJk7IOGEhuGFreGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgTVlPRworQkIxQTtCQjFBOzExMDYgMTE2RCAxMUE5O0JCMUE7MTEwNiAxMTZEIDExQTk7ICMgKOusmjsg66yaOyDhhIbhha3hhqk7IOusmjsg4YSG4YWt4YapOyApIEhBTkdVTCBTWUxMQUJMRSBNWU9HRworQkIxQjtCQjFCOzExMDYgMTE2RCAxMUFBO0JCMUI7MTEwNiAxMTZEIDExQUE7ICMgKOusmzsg66ybOyDhhIbhha3hhqo7IOusmzsg4YSG4YWt4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBNWU9HUworQkIxQztCQjFDOzExMDYgMTE2RCAxMUFCO0JCMUM7MTEwNiAxMTZEIDExQUI7ICMgKOusnDsg66ycOyDhhIbhha3hhqs7IOusnDsg4YSG4YWt4YarOyApIEhBTkdVTCBTWUxMQUJMRSBNWU9OCitCQjFEO0JCMUQ7MTEwNiAxMTZEIDExQUM7QkIxRDsxMTA2IDExNkQgMTFBQzsgIyAo66ydOyDrrJ07IOGEhuGFreGGrDsg66ydOyDhhIbhha3hhqw7ICkgSEFOR1VMIFNZTExBQkxFIE1ZT05KCitCQjFFO0JCMUU7MTEwNiAxMTZEIDExQUQ7QkIxRTsxMTA2IDExNkQgMTFBRDsgIyAo66yeOyDrrJ47IOGEhuGFreGGrTsg66yeOyDhhIbhha3hhq07ICkgSEFOR1VMIFNZTExBQkxFIE1ZT05ICitCQjFGO0JCMUY7MTEwNiAxMTZEIDExQUU7QkIxRjsxMTA2IDExNkQgMTFBRTsgIyAo66yfOyDrrJ87IOGEhuGFreGGrjsg66yfOyDhhIbhha3hhq47ICkgSEFOR1VMIFNZTExBQkxFIE1ZT0QKK0JCMjA7QkIyMDsxMTA2IDExNkQgMTFBRjtCQjIwOzExMDYgMTE2RCAxMUFGOyAjICjrrKA7IOusoDsg4YSG4YWt4YavOyDrrKA7IOGEhuGFreGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgTVlPTAorQkIyMTtCQjIxOzExMDYgMTE2RCAxMUIwO0JCMjE7MTEwNiAxMTZEIDExQjA7ICMgKOusoTsg66yhOyDhhIbhha3hhrA7IOusoTsg4YSG4YWt4YawOyApIEhBTkdVTCBTWUxMQUJMRSBNWU9MRworQkIyMjtCQjIyOzExMDYgMTE2RCAxMUIxO0JCMjI7MTEwNiAxMTZEIDExQjE7ICMgKOusojsg66yiOyDhhIbhha3hhrE7IOusojsg4YSG4YWt4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBNWU9MTQorQkIyMztCQjIzOzExMDYgMTE2RCAxMUIyO0JCMjM7MTEwNiAxMTZEIDExQjI7ICMgKOusozsg66yjOyDhhIbhha3hhrI7IOusozsg4YSG4YWt4YayOyApIEhBTkdVTCBTWUxMQUJMRSBNWU9MQgorQkIyNDtCQjI0OzExMDYgMTE2RCAxMUIzO0JCMjQ7MTEwNiAxMTZEIDExQjM7ICMgKOuspDsg66ykOyDhhIbhha3hhrM7IOuspDsg4YSG4YWt4YazOyApIEhBTkdVTCBTWUxMQUJMRSBNWU9MUworQkIyNTtCQjI1OzExMDYgMTE2RCAxMUI0O0JCMjU7MTEwNiAxMTZEIDExQjQ7ICMgKOuspTsg66ylOyDhhIbhha3hhrQ7IOuspTsg4YSG4YWt4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBNWU9MVAorQkIyNjtCQjI2OzExMDYgMTE2RCAxMUI1O0JCMjY7MTEwNiAxMTZEIDExQjU7ICMgKOuspjsg66ymOyDhhIbhha3hhrU7IOuspjsg4YSG4YWt4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBNWU9MUAorQkIyNztCQjI3OzExMDYgMTE2RCAxMUI2O0JCMjc7MTEwNiAxMTZEIDExQjY7ICMgKOuspzsg66ynOyDhhIbhha3hhrY7IOuspzsg4YSG4YWt4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBNWU9MSAorQkIyODtCQjI4OzExMDYgMTE2RCAxMUI3O0JCMjg7MTEwNiAxMTZEIDExQjc7ICMgKOusqDsg66yoOyDhhIbhha3hhrc7IOusqDsg4YSG4YWt4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBNWU9NCitCQjI5O0JCMjk7MTEwNiAxMTZEIDExQjg7QkIyOTsxMTA2IDExNkQgMTFCODsgIyAo66ypOyDrrKk7IOGEhuGFreGGuDsg66ypOyDhhIbhha3hhrg7ICkgSEFOR1VMIFNZTExBQkxFIE1ZT0IKK0JCMkE7QkIyQTsxMTA2IDExNkQgMTFCOTtCQjJBOzExMDYgMTE2RCAxMUI5OyAjICjrrKo7IOusqjsg4YSG4YWt4Ya5OyDrrKo7IOGEhuGFreGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgTVlPQlMKK0JCMkI7QkIyQjsxMTA2IDExNkQgMTFCQTtCQjJCOzExMDYgMTE2RCAxMUJBOyAjICjrrKs7IOusqzsg4YSG4YWt4Ya6OyDrrKs7IOGEhuGFreGGujsgKSBIQU5HVUwgU1lMTEFCTEUgTVlPUworQkIyQztCQjJDOzExMDYgMTE2RCAxMUJCO0JCMkM7MTEwNiAxMTZEIDExQkI7ICMgKOusrDsg66ysOyDhhIbhha3hhrs7IOusrDsg4YSG4YWt4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBNWU9TUworQkIyRDtCQjJEOzExMDYgMTE2RCAxMUJDO0JCMkQ7MTEwNiAxMTZEIDExQkM7ICMgKOusrTsg66ytOyDhhIbhha3hhrw7IOusrTsg4YSG4YWt4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBNWU9ORworQkIyRTtCQjJFOzExMDYgMTE2RCAxMUJEO0JCMkU7MTEwNiAxMTZEIDExQkQ7ICMgKOusrjsg66yuOyDhhIbhha3hhr07IOusrjsg4YSG4YWt4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBNWU9KCitCQjJGO0JCMkY7MTEwNiAxMTZEIDExQkU7QkIyRjsxMTA2IDExNkQgMTFCRTsgIyAo66yvOyDrrK87IOGEhuGFreGGvjsg66yvOyDhhIbhha3hhr47ICkgSEFOR1VMIFNZTExBQkxFIE1ZT0MKK0JCMzA7QkIzMDsxMTA2IDExNkQgMTFCRjtCQjMwOzExMDYgMTE2RCAxMUJGOyAjICjrrLA7IOussDsg4YSG4YWt4Ya/OyDrrLA7IOGEhuGFreGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgTVlPSworQkIzMTtCQjMxOzExMDYgMTE2RCAxMUMwO0JCMzE7MTEwNiAxMTZEIDExQzA7ICMgKOussTsg66yxOyDhhIbhha3hh4A7IOussTsg4YSG4YWt4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBNWU9UCitCQjMyO0JCMzI7MTEwNiAxMTZEIDExQzE7QkIzMjsxMTA2IDExNkQgMTFDMTsgIyAo66yyOyDrrLI7IOGEhuGFreGHgTsg66yyOyDhhIbhha3hh4E7ICkgSEFOR1VMIFNZTExBQkxFIE1ZT1AKK0JCMzM7QkIzMzsxMTA2IDExNkQgMTFDMjtCQjMzOzExMDYgMTE2RCAxMUMyOyAjICjrrLM7IOusszsg4YSG4YWt4YeCOyDrrLM7IOGEhuGFreGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgTVlPSAorQkIzNDtCQjM0OzExMDYgMTE2RTtCQjM0OzExMDYgMTE2RTsgIyAo66y0OyDrrLQ7IOGEhuGFrjsg66y0OyDhhIbhha47ICkgSEFOR1VMIFNZTExBQkxFIE1VCitCQjM1O0JCMzU7MTEwNiAxMTZFIDExQTg7QkIzNTsxMTA2IDExNkUgMTFBODsgIyAo66y1OyDrrLU7IOGEhuGFruGGqDsg66y1OyDhhIbhha7hhqg7ICkgSEFOR1VMIFNZTExBQkxFIE1VRworQkIzNjtCQjM2OzExMDYgMTE2RSAxMUE5O0JCMzY7MTEwNiAxMTZFIDExQTk7ICMgKOustjsg66y2OyDhhIbhha7hhqk7IOustjsg4YSG4YWu4YapOyApIEhBTkdVTCBTWUxMQUJMRSBNVUdHCitCQjM3O0JCMzc7MTEwNiAxMTZFIDExQUE7QkIzNzsxMTA2IDExNkUgMTFBQTsgIyAo66y3OyDrrLc7IOGEhuGFruGGqjsg66y3OyDhhIbhha7hhqo7ICkgSEFOR1VMIFNZTExBQkxFIE1VR1MKK0JCMzg7QkIzODsxMTA2IDExNkUgMTFBQjtCQjM4OzExMDYgMTE2RSAxMUFCOyAjICjrrLg7IOusuDsg4YSG4YWu4YarOyDrrLg7IOGEhuGFruGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgTVVOCitCQjM5O0JCMzk7MTEwNiAxMTZFIDExQUM7QkIzOTsxMTA2IDExNkUgMTFBQzsgIyAo66y5OyDrrLk7IOGEhuGFruGGrDsg66y5OyDhhIbhha7hhqw7ICkgSEFOR1VMIFNZTExBQkxFIE1VTkoKK0JCM0E7QkIzQTsxMTA2IDExNkUgMTFBRDtCQjNBOzExMDYgMTE2RSAxMUFEOyAjICjrrLo7IOusujsg4YSG4YWu4YatOyDrrLo7IOGEhuGFruGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgTVVOSAorQkIzQjtCQjNCOzExMDYgMTE2RSAxMUFFO0JCM0I7MTEwNiAxMTZFIDExQUU7ICMgKOusuzsg66y7OyDhhIbhha7hhq47IOusuzsg4YSG4YWu4YauOyApIEhBTkdVTCBTWUxMQUJMRSBNVUQKK0JCM0M7QkIzQzsxMTA2IDExNkUgMTFBRjtCQjNDOzExMDYgMTE2RSAxMUFGOyAjICjrrLw7IOusvDsg4YSG4YWu4YavOyDrrLw7IOGEhuGFruGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgTVVMCitCQjNEO0JCM0Q7MTEwNiAxMTZFIDExQjA7QkIzRDsxMTA2IDExNkUgMTFCMDsgIyAo66y9OyDrrL07IOGEhuGFruGGsDsg66y9OyDhhIbhha7hhrA7ICkgSEFOR1VMIFNZTExBQkxFIE1VTEcKK0JCM0U7QkIzRTsxMTA2IDExNkUgMTFCMTtCQjNFOzExMDYgMTE2RSAxMUIxOyAjICjrrL47IOusvjsg4YSG4YWu4YaxOyDrrL47IOGEhuGFruGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgTVVMTQorQkIzRjtCQjNGOzExMDYgMTE2RSAxMUIyO0JCM0Y7MTEwNiAxMTZFIDExQjI7ICMgKOusvzsg66y/OyDhhIbhha7hhrI7IOusvzsg4YSG4YWu4YayOyApIEhBTkdVTCBTWUxMQUJMRSBNVUxCCitCQjQwO0JCNDA7MTEwNiAxMTZFIDExQjM7QkI0MDsxMTA2IDExNkUgMTFCMzsgIyAo662AOyDrrYA7IOGEhuGFruGGszsg662AOyDhhIbhha7hhrM7ICkgSEFOR1VMIFNZTExBQkxFIE1VTFMKK0JCNDE7QkI0MTsxMTA2IDExNkUgMTFCNDtCQjQxOzExMDYgMTE2RSAxMUI0OyAjICjrrYE7IOutgTsg4YSG4YWu4Ya0OyDrrYE7IOGEhuGFruGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgTVVMVAorQkI0MjtCQjQyOzExMDYgMTE2RSAxMUI1O0JCNDI7MTEwNiAxMTZFIDExQjU7ICMgKOutgjsg662COyDhhIbhha7hhrU7IOutgjsg4YSG4YWu4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBNVUxQCitCQjQzO0JCNDM7MTEwNiAxMTZFIDExQjY7QkI0MzsxMTA2IDExNkUgMTFCNjsgIyAo662DOyDrrYM7IOGEhuGFruGGtjsg662DOyDhhIbhha7hhrY7ICkgSEFOR1VMIFNZTExBQkxFIE1VTEgKK0JCNDQ7QkI0NDsxMTA2IDExNkUgMTFCNztCQjQ0OzExMDYgMTE2RSAxMUI3OyAjICjrrYQ7IOuthDsg4YSG4YWu4Ya3OyDrrYQ7IOGEhuGFruGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgTVVNCitCQjQ1O0JCNDU7MTEwNiAxMTZFIDExQjg7QkI0NTsxMTA2IDExNkUgMTFCODsgIyAo662FOyDrrYU7IOGEhuGFruGGuDsg662FOyDhhIbhha7hhrg7ICkgSEFOR1VMIFNZTExBQkxFIE1VQgorQkI0NjtCQjQ2OzExMDYgMTE2RSAxMUI5O0JCNDY7MTEwNiAxMTZFIDExQjk7ICMgKOuthjsg662GOyDhhIbhha7hhrk7IOuthjsg4YSG4YWu4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBNVUJTCitCQjQ3O0JCNDc7MTEwNiAxMTZFIDExQkE7QkI0NzsxMTA2IDExNkUgMTFCQTsgIyAo662HOyDrrYc7IOGEhuGFruGGujsg662HOyDhhIbhha7hhro7ICkgSEFOR1VMIFNZTExBQkxFIE1VUworQkI0ODtCQjQ4OzExMDYgMTE2RSAxMUJCO0JCNDg7MTEwNiAxMTZFIDExQkI7ICMgKOutiDsg662IOyDhhIbhha7hhrs7IOutiDsg4YSG4YWu4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBNVVNTCitCQjQ5O0JCNDk7MTEwNiAxMTZFIDExQkM7QkI0OTsxMTA2IDExNkUgMTFCQzsgIyAo662JOyDrrYk7IOGEhuGFruGGvDsg662JOyDhhIbhha7hhrw7ICkgSEFOR1VMIFNZTExBQkxFIE1VTkcKK0JCNEE7QkI0QTsxMTA2IDExNkUgMTFCRDtCQjRBOzExMDYgMTE2RSAxMUJEOyAjICjrrYo7IOutijsg4YSG4YWu4Ya9OyDrrYo7IOGEhuGFruGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgTVVKCitCQjRCO0JCNEI7MTEwNiAxMTZFIDExQkU7QkI0QjsxMTA2IDExNkUgMTFCRTsgIyAo662LOyDrrYs7IOGEhuGFruGGvjsg662LOyDhhIbhha7hhr47ICkgSEFOR1VMIFNZTExBQkxFIE1VQworQkI0QztCQjRDOzExMDYgMTE2RSAxMUJGO0JCNEM7MTEwNiAxMTZFIDExQkY7ICMgKOutjDsg662MOyDhhIbhha7hhr87IOutjDsg4YSG4YWu4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBNVUsKK0JCNEQ7QkI0RDsxMTA2IDExNkUgMTFDMDtCQjREOzExMDYgMTE2RSAxMUMwOyAjICjrrY07IOutjTsg4YSG4YWu4YeAOyDrrY07IOGEhuGFruGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgTVVUCitCQjRFO0JCNEU7MTEwNiAxMTZFIDExQzE7QkI0RTsxMTA2IDExNkUgMTFDMTsgIyAo662OOyDrrY47IOGEhuGFruGHgTsg662OOyDhhIbhha7hh4E7ICkgSEFOR1VMIFNZTExBQkxFIE1VUAorQkI0RjtCQjRGOzExMDYgMTE2RSAxMUMyO0JCNEY7MTEwNiAxMTZFIDExQzI7ICMgKOutjzsg662POyDhhIbhha7hh4I7IOutjzsg4YSG4YWu4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBNVUgKK0JCNTA7QkI1MDsxMTA2IDExNkY7QkI1MDsxMTA2IDExNkY7ICMgKOutkDsg662QOyDhhIbhha87IOutkDsg4YSG4YWvOyApIEhBTkdVTCBTWUxMQUJMRSBNV0VPCitCQjUxO0JCNTE7MTEwNiAxMTZGIDExQTg7QkI1MTsxMTA2IDExNkYgMTFBODsgIyAo662ROyDrrZE7IOGEhuGFr+GGqDsg662ROyDhhIbhha/hhqg7ICkgSEFOR1VMIFNZTExBQkxFIE1XRU9HCitCQjUyO0JCNTI7MTEwNiAxMTZGIDExQTk7QkI1MjsxMTA2IDExNkYgMTFBOTsgIyAo662SOyDrrZI7IOGEhuGFr+GGqTsg662SOyDhhIbhha/hhqk7ICkgSEFOR1VMIFNZTExBQkxFIE1XRU9HRworQkI1MztCQjUzOzExMDYgMTE2RiAxMUFBO0JCNTM7MTEwNiAxMTZGIDExQUE7ICMgKOutkzsg662TOyDhhIbhha/hhqo7IOutkzsg4YSG4YWv4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBNV0VPR1MKK0JCNTQ7QkI1NDsxMTA2IDExNkYgMTFBQjtCQjU0OzExMDYgMTE2RiAxMUFCOyAjICjrrZQ7IOutlDsg4YSG4YWv4YarOyDrrZQ7IOGEhuGFr+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgTVdFT04KK0JCNTU7QkI1NTsxMTA2IDExNkYgMTFBQztCQjU1OzExMDYgMTE2RiAxMUFDOyAjICjrrZU7IOutlTsg4YSG4YWv4YasOyDrrZU7IOGEhuGFr+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgTVdFT05KCitCQjU2O0JCNTY7MTEwNiAxMTZGIDExQUQ7QkI1NjsxMTA2IDExNkYgMTFBRDsgIyAo662WOyDrrZY7IOGEhuGFr+GGrTsg662WOyDhhIbhha/hhq07ICkgSEFOR1VMIFNZTExBQkxFIE1XRU9OSAorQkI1NztCQjU3OzExMDYgMTE2RiAxMUFFO0JCNTc7MTEwNiAxMTZGIDExQUU7ICMgKOutlzsg662XOyDhhIbhha/hhq47IOutlzsg4YSG4YWv4YauOyApIEhBTkdVTCBTWUxMQUJMRSBNV0VPRAorQkI1ODtCQjU4OzExMDYgMTE2RiAxMUFGO0JCNTg7MTEwNiAxMTZGIDExQUY7ICMgKOutmDsg662YOyDhhIbhha/hhq87IOutmDsg4YSG4YWv4YavOyApIEhBTkdVTCBTWUxMQUJMRSBNV0VPTAorQkI1OTtCQjU5OzExMDYgMTE2RiAxMUIwO0JCNTk7MTEwNiAxMTZGIDExQjA7ICMgKOutmTsg662ZOyDhhIbhha/hhrA7IOutmTsg4YSG4YWv4YawOyApIEhBTkdVTCBTWUxMQUJMRSBNV0VPTEcKK0JCNUE7QkI1QTsxMTA2IDExNkYgMTFCMTtCQjVBOzExMDYgMTE2RiAxMUIxOyAjICjrrZo7IOutmjsg4YSG4YWv4YaxOyDrrZo7IOGEhuGFr+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgTVdFT0xNCitCQjVCO0JCNUI7MTEwNiAxMTZGIDExQjI7QkI1QjsxMTA2IDExNkYgMTFCMjsgIyAo662bOyDrrZs7IOGEhuGFr+GGsjsg662bOyDhhIbhha/hhrI7ICkgSEFOR1VMIFNZTExBQkxFIE1XRU9MQgorQkI1QztCQjVDOzExMDYgMTE2RiAxMUIzO0JCNUM7MTEwNiAxMTZGIDExQjM7ICMgKOutnDsg662cOyDhhIbhha/hhrM7IOutnDsg4YSG4YWv4YazOyApIEhBTkdVTCBTWUxMQUJMRSBNV0VPTFMKK0JCNUQ7QkI1RDsxMTA2IDExNkYgMTFCNDtCQjVEOzExMDYgMTE2RiAxMUI0OyAjICjrrZ07IOutnTsg4YSG4YWv4Ya0OyDrrZ07IOGEhuGFr+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgTVdFT0xUCitCQjVFO0JCNUU7MTEwNiAxMTZGIDExQjU7QkI1RTsxMTA2IDExNkYgMTFCNTsgIyAo662eOyDrrZ47IOGEhuGFr+GGtTsg662eOyDhhIbhha/hhrU7ICkgSEFOR1VMIFNZTExBQkxFIE1XRU9MUAorQkI1RjtCQjVGOzExMDYgMTE2RiAxMUI2O0JCNUY7MTEwNiAxMTZGIDExQjY7ICMgKOutnzsg662fOyDhhIbhha/hhrY7IOutnzsg4YSG4YWv4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBNV0VPTEgKK0JCNjA7QkI2MDsxMTA2IDExNkYgMTFCNztCQjYwOzExMDYgMTE2RiAxMUI3OyAjICjrraA7IOutoDsg4YSG4YWv4Ya3OyDrraA7IOGEhuGFr+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgTVdFT00KK0JCNjE7QkI2MTsxMTA2IDExNkYgMTFCODtCQjYxOzExMDYgMTE2RiAxMUI4OyAjICjrraE7IOutoTsg4YSG4YWv4Ya4OyDrraE7IOGEhuGFr+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgTVdFT0IKK0JCNjI7QkI2MjsxMTA2IDExNkYgMTFCOTtCQjYyOzExMDYgMTE2RiAxMUI5OyAjICjrraI7IOutojsg4YSG4YWv4Ya5OyDrraI7IOGEhuGFr+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgTVdFT0JTCitCQjYzO0JCNjM7MTEwNiAxMTZGIDExQkE7QkI2MzsxMTA2IDExNkYgMTFCQTsgIyAo662jOyDrraM7IOGEhuGFr+GGujsg662jOyDhhIbhha/hhro7ICkgSEFOR1VMIFNZTExBQkxFIE1XRU9TCitCQjY0O0JCNjQ7MTEwNiAxMTZGIDExQkI7QkI2NDsxMTA2IDExNkYgMTFCQjsgIyAo662kOyDrraQ7IOGEhuGFr+GGuzsg662kOyDhhIbhha/hhrs7ICkgSEFOR1VMIFNZTExBQkxFIE1XRU9TUworQkI2NTtCQjY1OzExMDYgMTE2RiAxMUJDO0JCNjU7MTEwNiAxMTZGIDExQkM7ICMgKOutpTsg662lOyDhhIbhha/hhrw7IOutpTsg4YSG4YWv4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBNV0VPTkcKK0JCNjY7QkI2NjsxMTA2IDExNkYgMTFCRDtCQjY2OzExMDYgMTE2RiAxMUJEOyAjICjrraY7IOutpjsg4YSG4YWv4Ya9OyDrraY7IOGEhuGFr+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgTVdFT0oKK0JCNjc7QkI2NzsxMTA2IDExNkYgMTFCRTtCQjY3OzExMDYgMTE2RiAxMUJFOyAjICjrrac7IOutpzsg4YSG4YWv4Ya+OyDrrac7IOGEhuGFr+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgTVdFT0MKK0JCNjg7QkI2ODsxMTA2IDExNkYgMTFCRjtCQjY4OzExMDYgMTE2RiAxMUJGOyAjICjrrag7IOutqDsg4YSG4YWv4Ya/OyDrrag7IOGEhuGFr+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgTVdFT0sKK0JCNjk7QkI2OTsxMTA2IDExNkYgMTFDMDtCQjY5OzExMDYgMTE2RiAxMUMwOyAjICjrrak7IOutqTsg4YSG4YWv4YeAOyDrrak7IOGEhuGFr+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgTVdFT1QKK0JCNkE7QkI2QTsxMTA2IDExNkYgMTFDMTtCQjZBOzExMDYgMTE2RiAxMUMxOyAjICjrrao7IOutqjsg4YSG4YWv4YeBOyDrrao7IOGEhuGFr+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgTVdFT1AKK0JCNkI7QkI2QjsxMTA2IDExNkYgMTFDMjtCQjZCOzExMDYgMTE2RiAxMUMyOyAjICjrras7IOutqzsg4YSG4YWv4YeCOyDrras7IOGEhuGFr+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgTVdFT0gKK0JCNkM7QkI2QzsxMTA2IDExNzA7QkI2QzsxMTA2IDExNzA7ICMgKOutrDsg662sOyDhhIbhhbA7IOutrDsg4YSG4YWwOyApIEhBTkdVTCBTWUxMQUJMRSBNV0UKK0JCNkQ7QkI2RDsxMTA2IDExNzAgMTFBODtCQjZEOzExMDYgMTE3MCAxMUE4OyAjICjrra07IOutrTsg4YSG4YWw4YaoOyDrra07IOGEhuGFsOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgTVdFRworQkI2RTtCQjZFOzExMDYgMTE3MCAxMUE5O0JCNkU7MTEwNiAxMTcwIDExQTk7ICMgKOutrjsg662uOyDhhIbhhbDhhqk7IOutrjsg4YSG4YWw4YapOyApIEhBTkdVTCBTWUxMQUJMRSBNV0VHRworQkI2RjtCQjZGOzExMDYgMTE3MCAxMUFBO0JCNkY7MTEwNiAxMTcwIDExQUE7ICMgKOutrzsg662vOyDhhIbhhbDhhqo7IOutrzsg4YSG4YWw4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBNV0VHUworQkI3MDtCQjcwOzExMDYgMTE3MCAxMUFCO0JCNzA7MTEwNiAxMTcwIDExQUI7ICMgKOutsDsg662wOyDhhIbhhbDhhqs7IOutsDsg4YSG4YWw4YarOyApIEhBTkdVTCBTWUxMQUJMRSBNV0VOCitCQjcxO0JCNzE7MTEwNiAxMTcwIDExQUM7QkI3MTsxMTA2IDExNzAgMTFBQzsgIyAo662xOyDrrbE7IOGEhuGFsOGGrDsg662xOyDhhIbhhbDhhqw7ICkgSEFOR1VMIFNZTExBQkxFIE1XRU5KCitCQjcyO0JCNzI7MTEwNiAxMTcwIDExQUQ7QkI3MjsxMTA2IDExNzAgMTFBRDsgIyAo662yOyDrrbI7IOGEhuGFsOGGrTsg662yOyDhhIbhhbDhhq07ICkgSEFOR1VMIFNZTExBQkxFIE1XRU5ICitCQjczO0JCNzM7MTEwNiAxMTcwIDExQUU7QkI3MzsxMTA2IDExNzAgMTFBRTsgIyAo662zOyDrrbM7IOGEhuGFsOGGrjsg662zOyDhhIbhhbDhhq47ICkgSEFOR1VMIFNZTExBQkxFIE1XRUQKK0JCNzQ7QkI3NDsxMTA2IDExNzAgMTFBRjtCQjc0OzExMDYgMTE3MCAxMUFGOyAjICjrrbQ7IOuttDsg4YSG4YWw4YavOyDrrbQ7IOGEhuGFsOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgTVdFTAorQkI3NTtCQjc1OzExMDYgMTE3MCAxMUIwO0JCNzU7MTEwNiAxMTcwIDExQjA7ICMgKOuttTsg6621OyDhhIbhhbDhhrA7IOuttTsg4YSG4YWw4YawOyApIEhBTkdVTCBTWUxMQUJMRSBNV0VMRworQkI3NjtCQjc2OzExMDYgMTE3MCAxMUIxO0JCNzY7MTEwNiAxMTcwIDExQjE7ICMgKOuttjsg6622OyDhhIbhhbDhhrE7IOuttjsg4YSG4YWw4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBNV0VMTQorQkI3NztCQjc3OzExMDYgMTE3MCAxMUIyO0JCNzc7MTEwNiAxMTcwIDExQjI7ICMgKOuttzsg6623OyDhhIbhhbDhhrI7IOuttzsg4YSG4YWw4YayOyApIEhBTkdVTCBTWUxMQUJMRSBNV0VMQgorQkI3ODtCQjc4OzExMDYgMTE3MCAxMUIzO0JCNzg7MTEwNiAxMTcwIDExQjM7ICMgKOutuDsg6624OyDhhIbhhbDhhrM7IOutuDsg4YSG4YWw4YazOyApIEhBTkdVTCBTWUxMQUJMRSBNV0VMUworQkI3OTtCQjc5OzExMDYgMTE3MCAxMUI0O0JCNzk7MTEwNiAxMTcwIDExQjQ7ICMgKOutuTsg6625OyDhhIbhhbDhhrQ7IOutuTsg4YSG4YWw4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBNV0VMVAorQkI3QTtCQjdBOzExMDYgMTE3MCAxMUI1O0JCN0E7MTEwNiAxMTcwIDExQjU7ICMgKOutujsg6626OyDhhIbhhbDhhrU7IOutujsg4YSG4YWw4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBNV0VMUAorQkI3QjtCQjdCOzExMDYgMTE3MCAxMUI2O0JCN0I7MTEwNiAxMTcwIDExQjY7ICMgKOutuzsg6627OyDhhIbhhbDhhrY7IOutuzsg4YSG4YWw4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBNV0VMSAorQkI3QztCQjdDOzExMDYgMTE3MCAxMUI3O0JCN0M7MTEwNiAxMTcwIDExQjc7ICMgKOutvDsg6628OyDhhIbhhbDhhrc7IOutvDsg4YSG4YWw4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBNV0VNCitCQjdEO0JCN0Q7MTEwNiAxMTcwIDExQjg7QkI3RDsxMTA2IDExNzAgMTFCODsgIyAo6629OyDrrb07IOGEhuGFsOGGuDsg6629OyDhhIbhhbDhhrg7ICkgSEFOR1VMIFNZTExBQkxFIE1XRUIKK0JCN0U7QkI3RTsxMTA2IDExNzAgMTFCOTtCQjdFOzExMDYgMTE3MCAxMUI5OyAjICjrrb47IOutvjsg4YSG4YWw4Ya5OyDrrb47IOGEhuGFsOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgTVdFQlMKK0JCN0Y7QkI3RjsxMTA2IDExNzAgMTFCQTtCQjdGOzExMDYgMTE3MCAxMUJBOyAjICjrrb87IOutvzsg4YSG4YWw4Ya6OyDrrb87IOGEhuGFsOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgTVdFUworQkI4MDtCQjgwOzExMDYgMTE3MCAxMUJCO0JCODA7MTEwNiAxMTcwIDExQkI7ICMgKOuugDsg666AOyDhhIbhhbDhhrs7IOuugDsg4YSG4YWw4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBNV0VTUworQkI4MTtCQjgxOzExMDYgMTE3MCAxMUJDO0JCODE7MTEwNiAxMTcwIDExQkM7ICMgKOuugTsg666BOyDhhIbhhbDhhrw7IOuugTsg4YSG4YWw4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBNV0VORworQkI4MjtCQjgyOzExMDYgMTE3MCAxMUJEO0JCODI7MTEwNiAxMTcwIDExQkQ7ICMgKOuugjsg666COyDhhIbhhbDhhr07IOuugjsg4YSG4YWw4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBNV0VKCitCQjgzO0JCODM7MTEwNiAxMTcwIDExQkU7QkI4MzsxMTA2IDExNzAgMTFCRTsgIyAo666DOyDrroM7IOGEhuGFsOGGvjsg666DOyDhhIbhhbDhhr47ICkgSEFOR1VMIFNZTExBQkxFIE1XRUMKK0JCODQ7QkI4NDsxMTA2IDExNzAgMTFCRjtCQjg0OzExMDYgMTE3MCAxMUJGOyAjICjrroQ7IOuuhDsg4YSG4YWw4Ya/OyDrroQ7IOGEhuGFsOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgTVdFSworQkI4NTtCQjg1OzExMDYgMTE3MCAxMUMwO0JCODU7MTEwNiAxMTcwIDExQzA7ICMgKOuuhTsg666FOyDhhIbhhbDhh4A7IOuuhTsg4YSG4YWw4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBNV0VUCitCQjg2O0JCODY7MTEwNiAxMTcwIDExQzE7QkI4NjsxMTA2IDExNzAgMTFDMTsgIyAo666GOyDrroY7IOGEhuGFsOGHgTsg666GOyDhhIbhhbDhh4E7ICkgSEFOR1VMIFNZTExBQkxFIE1XRVAKK0JCODc7QkI4NzsxMTA2IDExNzAgMTFDMjtCQjg3OzExMDYgMTE3MCAxMUMyOyAjICjrroc7IOuuhzsg4YSG4YWw4YeCOyDrroc7IOGEhuGFsOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgTVdFSAorQkI4ODtCQjg4OzExMDYgMTE3MTtCQjg4OzExMDYgMTE3MTsgIyAo666IOyDrrog7IOGEhuGFsTsg666IOyDhhIbhhbE7ICkgSEFOR1VMIFNZTExBQkxFIE1XSQorQkI4OTtCQjg5OzExMDYgMTE3MSAxMUE4O0JCODk7MTEwNiAxMTcxIDExQTg7ICMgKOuuiTsg666JOyDhhIbhhbHhhqg7IOuuiTsg4YSG4YWx4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBNV0lHCitCQjhBO0JCOEE7MTEwNiAxMTcxIDExQTk7QkI4QTsxMTA2IDExNzEgMTFBOTsgIyAo666KOyDrroo7IOGEhuGFseGGqTsg666KOyDhhIbhhbHhhqk7ICkgSEFOR1VMIFNZTExBQkxFIE1XSUdHCitCQjhCO0JCOEI7MTEwNiAxMTcxIDExQUE7QkI4QjsxMTA2IDExNzEgMTFBQTsgIyAo666LOyDrros7IOGEhuGFseGGqjsg666LOyDhhIbhhbHhhqo7ICkgSEFOR1VMIFNZTExBQkxFIE1XSUdTCitCQjhDO0JCOEM7MTEwNiAxMTcxIDExQUI7QkI4QzsxMTA2IDExNzEgMTFBQjsgIyAo666MOyDrrow7IOGEhuGFseGGqzsg666MOyDhhIbhhbHhhqs7ICkgSEFOR1VMIFNZTExBQkxFIE1XSU4KK0JCOEQ7QkI4RDsxMTA2IDExNzEgMTFBQztCQjhEOzExMDYgMTE3MSAxMUFDOyAjICjrro07IOuujTsg4YSG4YWx4YasOyDrro07IOGEhuGFseGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgTVdJTkoKK0JCOEU7QkI4RTsxMTA2IDExNzEgMTFBRDtCQjhFOzExMDYgMTE3MSAxMUFEOyAjICjrro47IOuujjsg4YSG4YWx4YatOyDrro47IOGEhuGFseGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgTVdJTkgKK0JCOEY7QkI4RjsxMTA2IDExNzEgMTFBRTtCQjhGOzExMDYgMTE3MSAxMUFFOyAjICjrro87IOuujzsg4YSG4YWx4YauOyDrro87IOGEhuGFseGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgTVdJRAorQkI5MDtCQjkwOzExMDYgMTE3MSAxMUFGO0JCOTA7MTEwNiAxMTcxIDExQUY7ICMgKOuukDsg666QOyDhhIbhhbHhhq87IOuukDsg4YSG4YWx4YavOyApIEhBTkdVTCBTWUxMQUJMRSBNV0lMCitCQjkxO0JCOTE7MTEwNiAxMTcxIDExQjA7QkI5MTsxMTA2IDExNzEgMTFCMDsgIyAo666ROyDrrpE7IOGEhuGFseGGsDsg666ROyDhhIbhhbHhhrA7ICkgSEFOR1VMIFNZTExBQkxFIE1XSUxHCitCQjkyO0JCOTI7MTEwNiAxMTcxIDExQjE7QkI5MjsxMTA2IDExNzEgMTFCMTsgIyAo666SOyDrrpI7IOGEhuGFseGGsTsg666SOyDhhIbhhbHhhrE7ICkgSEFOR1VMIFNZTExBQkxFIE1XSUxNCitCQjkzO0JCOTM7MTEwNiAxMTcxIDExQjI7QkI5MzsxMTA2IDExNzEgMTFCMjsgIyAo666TOyDrrpM7IOGEhuGFseGGsjsg666TOyDhhIbhhbHhhrI7ICkgSEFOR1VMIFNZTExBQkxFIE1XSUxCCitCQjk0O0JCOTQ7MTEwNiAxMTcxIDExQjM7QkI5NDsxMTA2IDExNzEgMTFCMzsgIyAo666UOyDrrpQ7IOGEhuGFseGGszsg666UOyDhhIbhhbHhhrM7ICkgSEFOR1VMIFNZTExBQkxFIE1XSUxTCitCQjk1O0JCOTU7MTEwNiAxMTcxIDExQjQ7QkI5NTsxMTA2IDExNzEgMTFCNDsgIyAo666VOyDrrpU7IOGEhuGFseGGtDsg666VOyDhhIbhhbHhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIE1XSUxUCitCQjk2O0JCOTY7MTEwNiAxMTcxIDExQjU7QkI5NjsxMTA2IDExNzEgMTFCNTsgIyAo666WOyDrrpY7IOGEhuGFseGGtTsg666WOyDhhIbhhbHhhrU7ICkgSEFOR1VMIFNZTExBQkxFIE1XSUxQCitCQjk3O0JCOTc7MTEwNiAxMTcxIDExQjY7QkI5NzsxMTA2IDExNzEgMTFCNjsgIyAo666XOyDrrpc7IOGEhuGFseGGtjsg666XOyDhhIbhhbHhhrY7ICkgSEFOR1VMIFNZTExBQkxFIE1XSUxICitCQjk4O0JCOTg7MTEwNiAxMTcxIDExQjc7QkI5ODsxMTA2IDExNzEgMTFCNzsgIyAo666YOyDrrpg7IOGEhuGFseGGtzsg666YOyDhhIbhhbHhhrc7ICkgSEFOR1VMIFNZTExBQkxFIE1XSU0KK0JCOTk7QkI5OTsxMTA2IDExNzEgMTFCODtCQjk5OzExMDYgMTE3MSAxMUI4OyAjICjrrpk7IOuumTsg4YSG4YWx4Ya4OyDrrpk7IOGEhuGFseGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgTVdJQgorQkI5QTtCQjlBOzExMDYgMTE3MSAxMUI5O0JCOUE7MTEwNiAxMTcxIDExQjk7ICMgKOuumjsg666aOyDhhIbhhbHhhrk7IOuumjsg4YSG4YWx4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBNV0lCUworQkI5QjtCQjlCOzExMDYgMTE3MSAxMUJBO0JCOUI7MTEwNiAxMTcxIDExQkE7ICMgKOuumzsg666bOyDhhIbhhbHhhro7IOuumzsg4YSG4YWx4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBNV0lTCitCQjlDO0JCOUM7MTEwNiAxMTcxIDExQkI7QkI5QzsxMTA2IDExNzEgMTFCQjsgIyAo666cOyDrrpw7IOGEhuGFseGGuzsg666cOyDhhIbhhbHhhrs7ICkgSEFOR1VMIFNZTExBQkxFIE1XSVNTCitCQjlEO0JCOUQ7MTEwNiAxMTcxIDExQkM7QkI5RDsxMTA2IDExNzEgMTFCQzsgIyAo666dOyDrrp07IOGEhuGFseGGvDsg666dOyDhhIbhhbHhhrw7ICkgSEFOR1VMIFNZTExBQkxFIE1XSU5HCitCQjlFO0JCOUU7MTEwNiAxMTcxIDExQkQ7QkI5RTsxMTA2IDExNzEgMTFCRDsgIyAo666eOyDrrp47IOGEhuGFseGGvTsg666eOyDhhIbhhbHhhr07ICkgSEFOR1VMIFNZTExBQkxFIE1XSUoKK0JCOUY7QkI5RjsxMTA2IDExNzEgMTFCRTtCQjlGOzExMDYgMTE3MSAxMUJFOyAjICjrrp87IOuunzsg4YSG4YWx4Ya+OyDrrp87IOGEhuGFseGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgTVdJQworQkJBMDtCQkEwOzExMDYgMTE3MSAxMUJGO0JCQTA7MTEwNiAxMTcxIDExQkY7ICMgKOuuoDsg666gOyDhhIbhhbHhhr87IOuuoDsg4YSG4YWx4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBNV0lLCitCQkExO0JCQTE7MTEwNiAxMTcxIDExQzA7QkJBMTsxMTA2IDExNzEgMTFDMDsgIyAo666hOyDrrqE7IOGEhuGFseGHgDsg666hOyDhhIbhhbHhh4A7ICkgSEFOR1VMIFNZTExBQkxFIE1XSVQKK0JCQTI7QkJBMjsxMTA2IDExNzEgMTFDMTtCQkEyOzExMDYgMTE3MSAxMUMxOyAjICjrrqI7IOuuojsg4YSG4YWx4YeBOyDrrqI7IOGEhuGFseGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgTVdJUAorQkJBMztCQkEzOzExMDYgMTE3MSAxMUMyO0JCQTM7MTEwNiAxMTcxIDExQzI7ICMgKOuuozsg666jOyDhhIbhhbHhh4I7IOuuozsg4YSG4YWx4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBNV0lICitCQkE0O0JCQTQ7MTEwNiAxMTcyO0JCQTQ7MTEwNiAxMTcyOyAjICjrrqQ7IOuupDsg4YSG4YWyOyDrrqQ7IOGEhuGFsjsgKSBIQU5HVUwgU1lMTEFCTEUgTVlVCitCQkE1O0JCQTU7MTEwNiAxMTcyIDExQTg7QkJBNTsxMTA2IDExNzIgMTFBODsgIyAo666lOyDrrqU7IOGEhuGFsuGGqDsg666lOyDhhIbhhbLhhqg7ICkgSEFOR1VMIFNZTExBQkxFIE1ZVUcKK0JCQTY7QkJBNjsxMTA2IDExNzIgMTFBOTtCQkE2OzExMDYgMTE3MiAxMUE5OyAjICjrrqY7IOuupjsg4YSG4YWy4YapOyDrrqY7IOGEhuGFsuGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgTVlVR0cKK0JCQTc7QkJBNzsxMTA2IDExNzIgMTFBQTtCQkE3OzExMDYgMTE3MiAxMUFBOyAjICjrrqc7IOuupzsg4YSG4YWy4YaqOyDrrqc7IOGEhuGFsuGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgTVlVR1MKK0JCQTg7QkJBODsxMTA2IDExNzIgMTFBQjtCQkE4OzExMDYgMTE3MiAxMUFCOyAjICjrrqg7IOuuqDsg4YSG4YWy4YarOyDrrqg7IOGEhuGFsuGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgTVlVTgorQkJBOTtCQkE5OzExMDYgMTE3MiAxMUFDO0JCQTk7MTEwNiAxMTcyIDExQUM7ICMgKOuuqTsg666pOyDhhIbhhbLhhqw7IOuuqTsg4YSG4YWy4YasOyApIEhBTkdVTCBTWUxMQUJMRSBNWVVOSgorQkJBQTtCQkFBOzExMDYgMTE3MiAxMUFEO0JCQUE7MTEwNiAxMTcyIDExQUQ7ICMgKOuuqjsg666qOyDhhIbhhbLhhq07IOuuqjsg4YSG4YWy4YatOyApIEhBTkdVTCBTWUxMQUJMRSBNWVVOSAorQkJBQjtCQkFCOzExMDYgMTE3MiAxMUFFO0JCQUI7MTEwNiAxMTcyIDExQUU7ICMgKOuuqzsg666rOyDhhIbhhbLhhq47IOuuqzsg4YSG4YWy4YauOyApIEhBTkdVTCBTWUxMQUJMRSBNWVVECitCQkFDO0JCQUM7MTEwNiAxMTcyIDExQUY7QkJBQzsxMTA2IDExNzIgMTFBRjsgIyAo666sOyDrrqw7IOGEhuGFsuGGrzsg666sOyDhhIbhhbLhhq87ICkgSEFOR1VMIFNZTExBQkxFIE1ZVUwKK0JCQUQ7QkJBRDsxMTA2IDExNzIgMTFCMDtCQkFEOzExMDYgMTE3MiAxMUIwOyAjICjrrq07IOuurTsg4YSG4YWy4YawOyDrrq07IOGEhuGFsuGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgTVlVTEcKK0JCQUU7QkJBRTsxMTA2IDExNzIgMTFCMTtCQkFFOzExMDYgMTE3MiAxMUIxOyAjICjrrq47IOuurjsg4YSG4YWy4YaxOyDrrq47IOGEhuGFsuGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgTVlVTE0KK0JCQUY7QkJBRjsxMTA2IDExNzIgMTFCMjtCQkFGOzExMDYgMTE3MiAxMUIyOyAjICjrrq87IOuurzsg4YSG4YWy4YayOyDrrq87IOGEhuGFsuGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgTVlVTEIKK0JCQjA7QkJCMDsxMTA2IDExNzIgMTFCMztCQkIwOzExMDYgMTE3MiAxMUIzOyAjICjrrrA7IOuusDsg4YSG4YWy4YazOyDrrrA7IOGEhuGFsuGGszsgKSBIQU5HVUwgU1lMTEFCTEUgTVlVTFMKK0JCQjE7QkJCMTsxMTA2IDExNzIgMTFCNDtCQkIxOzExMDYgMTE3MiAxMUI0OyAjICjrrrE7IOuusTsg4YSG4YWy4Ya0OyDrrrE7IOGEhuGFsuGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgTVlVTFQKK0JCQjI7QkJCMjsxMTA2IDExNzIgMTFCNTtCQkIyOzExMDYgMTE3MiAxMUI1OyAjICjrrrI7IOuusjsg4YSG4YWy4Ya1OyDrrrI7IOGEhuGFsuGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgTVlVTFAKK0JCQjM7QkJCMzsxMTA2IDExNzIgMTFCNjtCQkIzOzExMDYgMTE3MiAxMUI2OyAjICjrrrM7IOuuszsg4YSG4YWy4Ya2OyDrrrM7IOGEhuGFsuGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgTVlVTEgKK0JCQjQ7QkJCNDsxMTA2IDExNzIgMTFCNztCQkI0OzExMDYgMTE3MiAxMUI3OyAjICjrrrQ7IOuutDsg4YSG4YWy4Ya3OyDrrrQ7IOGEhuGFsuGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgTVlVTQorQkJCNTtCQkI1OzExMDYgMTE3MiAxMUI4O0JCQjU7MTEwNiAxMTcyIDExQjg7ICMgKOuutTsg6661OyDhhIbhhbLhhrg7IOuutTsg4YSG4YWy4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBNWVVCCitCQkI2O0JCQjY7MTEwNiAxMTcyIDExQjk7QkJCNjsxMTA2IDExNzIgMTFCOTsgIyAo6662OyDrrrY7IOGEhuGFsuGGuTsg6662OyDhhIbhhbLhhrk7ICkgSEFOR1VMIFNZTExBQkxFIE1ZVUJTCitCQkI3O0JCQjc7MTEwNiAxMTcyIDExQkE7QkJCNzsxMTA2IDExNzIgMTFCQTsgIyAo6663OyDrrrc7IOGEhuGFsuGGujsg6663OyDhhIbhhbLhhro7ICkgSEFOR1VMIFNZTExBQkxFIE1ZVVMKK0JCQjg7QkJCODsxMTA2IDExNzIgMTFCQjtCQkI4OzExMDYgMTE3MiAxMUJCOyAjICjrrrg7IOuuuDsg4YSG4YWy4Ya7OyDrrrg7IOGEhuGFsuGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgTVlVU1MKK0JCQjk7QkJCOTsxMTA2IDExNzIgMTFCQztCQkI5OzExMDYgMTE3MiAxMUJDOyAjICjrrrk7IOuuuTsg4YSG4YWy4Ya8OyDrrrk7IOGEhuGFsuGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgTVlVTkcKK0JCQkE7QkJCQTsxMTA2IDExNzIgMTFCRDtCQkJBOzExMDYgMTE3MiAxMUJEOyAjICjrrro7IOuuujsg4YSG4YWy4Ya9OyDrrro7IOGEhuGFsuGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgTVlVSgorQkJCQjtCQkJCOzExMDYgMTE3MiAxMUJFO0JCQkI7MTEwNiAxMTcyIDExQkU7ICMgKOuuuzsg6667OyDhhIbhhbLhhr47IOuuuzsg4YSG4YWy4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBNWVVDCitCQkJDO0JCQkM7MTEwNiAxMTcyIDExQkY7QkJCQzsxMTA2IDExNzIgMTFCRjsgIyAo6668OyDrrrw7IOGEhuGFsuGGvzsg6668OyDhhIbhhbLhhr87ICkgSEFOR1VMIFNZTExBQkxFIE1ZVUsKK0JCQkQ7QkJCRDsxMTA2IDExNzIgMTFDMDtCQkJEOzExMDYgMTE3MiAxMUMwOyAjICjrrr07IOuuvTsg4YSG4YWy4YeAOyDrrr07IOGEhuGFsuGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgTVlVVAorQkJCRTtCQkJFOzExMDYgMTE3MiAxMUMxO0JCQkU7MTEwNiAxMTcyIDExQzE7ICMgKOuuvjsg666+OyDhhIbhhbLhh4E7IOuuvjsg4YSG4YWy4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBNWVVQCitCQkJGO0JCQkY7MTEwNiAxMTcyIDExQzI7QkJCRjsxMTA2IDExNzIgMTFDMjsgIyAo666/OyDrrr87IOGEhuGFsuGHgjsg666/OyDhhIbhhbLhh4I7ICkgSEFOR1VMIFNZTExBQkxFIE1ZVUgKK0JCQzA7QkJDMDsxMTA2IDExNzM7QkJDMDsxMTA2IDExNzM7ICMgKOuvgDsg66+AOyDhhIbhhbM7IOuvgDsg4YSG4YWzOyApIEhBTkdVTCBTWUxMQUJMRSBNRVUKK0JCQzE7QkJDMTsxMTA2IDExNzMgMTFBODtCQkMxOzExMDYgMTE3MyAxMUE4OyAjICjrr4E7IOuvgTsg4YSG4YWz4YaoOyDrr4E7IOGEhuGFs+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgTUVVRworQkJDMjtCQkMyOzExMDYgMTE3MyAxMUE5O0JCQzI7MTEwNiAxMTczIDExQTk7ICMgKOuvgjsg66+COyDhhIbhhbPhhqk7IOuvgjsg4YSG4YWz4YapOyApIEhBTkdVTCBTWUxMQUJMRSBNRVVHRworQkJDMztCQkMzOzExMDYgMTE3MyAxMUFBO0JCQzM7MTEwNiAxMTczIDExQUE7ICMgKOuvgzsg66+DOyDhhIbhhbPhhqo7IOuvgzsg4YSG4YWz4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBNRVVHUworQkJDNDtCQkM0OzExMDYgMTE3MyAxMUFCO0JCQzQ7MTEwNiAxMTczIDExQUI7ICMgKOuvhDsg66+EOyDhhIbhhbPhhqs7IOuvhDsg4YSG4YWz4YarOyApIEhBTkdVTCBTWUxMQUJMRSBNRVVOCitCQkM1O0JCQzU7MTEwNiAxMTczIDExQUM7QkJDNTsxMTA2IDExNzMgMTFBQzsgIyAo66+FOyDrr4U7IOGEhuGFs+GGrDsg66+FOyDhhIbhhbPhhqw7ICkgSEFOR1VMIFNZTExBQkxFIE1FVU5KCitCQkM2O0JCQzY7MTEwNiAxMTczIDExQUQ7QkJDNjsxMTA2IDExNzMgMTFBRDsgIyAo66+GOyDrr4Y7IOGEhuGFs+GGrTsg66+GOyDhhIbhhbPhhq07ICkgSEFOR1VMIFNZTExBQkxFIE1FVU5ICitCQkM3O0JCQzc7MTEwNiAxMTczIDExQUU7QkJDNzsxMTA2IDExNzMgMTFBRTsgIyAo66+HOyDrr4c7IOGEhuGFs+GGrjsg66+HOyDhhIbhhbPhhq47ICkgSEFOR1VMIFNZTExBQkxFIE1FVUQKK0JCQzg7QkJDODsxMTA2IDExNzMgMTFBRjtCQkM4OzExMDYgMTE3MyAxMUFGOyAjICjrr4g7IOuviDsg4YSG4YWz4YavOyDrr4g7IOGEhuGFs+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgTUVVTAorQkJDOTtCQkM5OzExMDYgMTE3MyAxMUIwO0JCQzk7MTEwNiAxMTczIDExQjA7ICMgKOuviTsg66+JOyDhhIbhhbPhhrA7IOuviTsg4YSG4YWz4YawOyApIEhBTkdVTCBTWUxMQUJMRSBNRVVMRworQkJDQTtCQkNBOzExMDYgMTE3MyAxMUIxO0JCQ0E7MTEwNiAxMTczIDExQjE7ICMgKOuvijsg66+KOyDhhIbhhbPhhrE7IOuvijsg4YSG4YWz4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBNRVVMTQorQkJDQjtCQkNCOzExMDYgMTE3MyAxMUIyO0JCQ0I7MTEwNiAxMTczIDExQjI7ICMgKOuvizsg66+LOyDhhIbhhbPhhrI7IOuvizsg4YSG4YWz4YayOyApIEhBTkdVTCBTWUxMQUJMRSBNRVVMQgorQkJDQztCQkNDOzExMDYgMTE3MyAxMUIzO0JCQ0M7MTEwNiAxMTczIDExQjM7ICMgKOuvjDsg66+MOyDhhIbhhbPhhrM7IOuvjDsg4YSG4YWz4YazOyApIEhBTkdVTCBTWUxMQUJMRSBNRVVMUworQkJDRDtCQkNEOzExMDYgMTE3MyAxMUI0O0JCQ0Q7MTEwNiAxMTczIDExQjQ7ICMgKOuvjTsg66+NOyDhhIbhhbPhhrQ7IOuvjTsg4YSG4YWz4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBNRVVMVAorQkJDRTtCQkNFOzExMDYgMTE3MyAxMUI1O0JCQ0U7MTEwNiAxMTczIDExQjU7ICMgKOuvjjsg66+OOyDhhIbhhbPhhrU7IOuvjjsg4YSG4YWz4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBNRVVMUAorQkJDRjtCQkNGOzExMDYgMTE3MyAxMUI2O0JCQ0Y7MTEwNiAxMTczIDExQjY7ICMgKOuvjzsg66+POyDhhIbhhbPhhrY7IOuvjzsg4YSG4YWz4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBNRVVMSAorQkJEMDtCQkQwOzExMDYgMTE3MyAxMUI3O0JCRDA7MTEwNiAxMTczIDExQjc7ICMgKOuvkDsg66+QOyDhhIbhhbPhhrc7IOuvkDsg4YSG4YWz4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBNRVVNCitCQkQxO0JCRDE7MTEwNiAxMTczIDExQjg7QkJEMTsxMTA2IDExNzMgMTFCODsgIyAo66+ROyDrr5E7IOGEhuGFs+GGuDsg66+ROyDhhIbhhbPhhrg7ICkgSEFOR1VMIFNZTExBQkxFIE1FVUIKK0JCRDI7QkJEMjsxMTA2IDExNzMgMTFCOTtCQkQyOzExMDYgMTE3MyAxMUI5OyAjICjrr5I7IOuvkjsg4YSG4YWz4Ya5OyDrr5I7IOGEhuGFs+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgTUVVQlMKK0JCRDM7QkJEMzsxMTA2IDExNzMgMTFCQTtCQkQzOzExMDYgMTE3MyAxMUJBOyAjICjrr5M7IOuvkzsg4YSG4YWz4Ya6OyDrr5M7IOGEhuGFs+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgTUVVUworQkJENDtCQkQ0OzExMDYgMTE3MyAxMUJCO0JCRDQ7MTEwNiAxMTczIDExQkI7ICMgKOuvlDsg66+UOyDhhIbhhbPhhrs7IOuvlDsg4YSG4YWz4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBNRVVTUworQkJENTtCQkQ1OzExMDYgMTE3MyAxMUJDO0JCRDU7MTEwNiAxMTczIDExQkM7ICMgKOuvlTsg66+VOyDhhIbhhbPhhrw7IOuvlTsg4YSG4YWz4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBNRVVORworQkJENjtCQkQ2OzExMDYgMTE3MyAxMUJEO0JCRDY7MTEwNiAxMTczIDExQkQ7ICMgKOuvljsg66+WOyDhhIbhhbPhhr07IOuvljsg4YSG4YWz4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBNRVVKCitCQkQ3O0JCRDc7MTEwNiAxMTczIDExQkU7QkJENzsxMTA2IDExNzMgMTFCRTsgIyAo66+XOyDrr5c7IOGEhuGFs+GGvjsg66+XOyDhhIbhhbPhhr47ICkgSEFOR1VMIFNZTExBQkxFIE1FVUMKK0JCRDg7QkJEODsxMTA2IDExNzMgMTFCRjtCQkQ4OzExMDYgMTE3MyAxMUJGOyAjICjrr5g7IOuvmDsg4YSG4YWz4Ya/OyDrr5g7IOGEhuGFs+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgTUVVSworQkJEOTtCQkQ5OzExMDYgMTE3MyAxMUMwO0JCRDk7MTEwNiAxMTczIDExQzA7ICMgKOuvmTsg66+ZOyDhhIbhhbPhh4A7IOuvmTsg4YSG4YWz4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBNRVVUCitCQkRBO0JCREE7MTEwNiAxMTczIDExQzE7QkJEQTsxMTA2IDExNzMgMTFDMTsgIyAo66+aOyDrr5o7IOGEhuGFs+GHgTsg66+aOyDhhIbhhbPhh4E7ICkgSEFOR1VMIFNZTExBQkxFIE1FVVAKK0JCREI7QkJEQjsxMTA2IDExNzMgMTFDMjtCQkRCOzExMDYgMTE3MyAxMUMyOyAjICjrr5s7IOuvmzsg4YSG4YWz4YeCOyDrr5s7IOGEhuGFs+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgTUVVSAorQkJEQztCQkRDOzExMDYgMTE3NDtCQkRDOzExMDYgMTE3NDsgIyAo66+cOyDrr5w7IOGEhuGFtDsg66+cOyDhhIbhhbQ7ICkgSEFOR1VMIFNZTExBQkxFIE1ZSQorQkJERDtCQkREOzExMDYgMTE3NCAxMUE4O0JCREQ7MTEwNiAxMTc0IDExQTg7ICMgKOuvnTsg66+dOyDhhIbhhbThhqg7IOuvnTsg4YSG4YW04YaoOyApIEhBTkdVTCBTWUxMQUJMRSBNWUlHCitCQkRFO0JCREU7MTEwNiAxMTc0IDExQTk7QkJERTsxMTA2IDExNzQgMTFBOTsgIyAo66+eOyDrr547IOGEhuGFtOGGqTsg66+eOyDhhIbhhbThhqk7ICkgSEFOR1VMIFNZTExBQkxFIE1ZSUdHCitCQkRGO0JCREY7MTEwNiAxMTc0IDExQUE7QkJERjsxMTA2IDExNzQgMTFBQTsgIyAo66+fOyDrr587IOGEhuGFtOGGqjsg66+fOyDhhIbhhbThhqo7ICkgSEFOR1VMIFNZTExBQkxFIE1ZSUdTCitCQkUwO0JCRTA7MTEwNiAxMTc0IDExQUI7QkJFMDsxMTA2IDExNzQgMTFBQjsgIyAo66+gOyDrr6A7IOGEhuGFtOGGqzsg66+gOyDhhIbhhbThhqs7ICkgSEFOR1VMIFNZTExBQkxFIE1ZSU4KK0JCRTE7QkJFMTsxMTA2IDExNzQgMTFBQztCQkUxOzExMDYgMTE3NCAxMUFDOyAjICjrr6E7IOuvoTsg4YSG4YW04YasOyDrr6E7IOGEhuGFtOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgTVlJTkoKK0JCRTI7QkJFMjsxMTA2IDExNzQgMTFBRDtCQkUyOzExMDYgMTE3NCAxMUFEOyAjICjrr6I7IOuvojsg4YSG4YW04YatOyDrr6I7IOGEhuGFtOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgTVlJTkgKK0JCRTM7QkJFMzsxMTA2IDExNzQgMTFBRTtCQkUzOzExMDYgMTE3NCAxMUFFOyAjICjrr6M7IOuvozsg4YSG4YW04YauOyDrr6M7IOGEhuGFtOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgTVlJRAorQkJFNDtCQkU0OzExMDYgMTE3NCAxMUFGO0JCRTQ7MTEwNiAxMTc0IDExQUY7ICMgKOuvpDsg66+kOyDhhIbhhbThhq87IOuvpDsg4YSG4YW04YavOyApIEhBTkdVTCBTWUxMQUJMRSBNWUlMCitCQkU1O0JCRTU7MTEwNiAxMTc0IDExQjA7QkJFNTsxMTA2IDExNzQgMTFCMDsgIyAo66+lOyDrr6U7IOGEhuGFtOGGsDsg66+lOyDhhIbhhbThhrA7ICkgSEFOR1VMIFNZTExBQkxFIE1ZSUxHCitCQkU2O0JCRTY7MTEwNiAxMTc0IDExQjE7QkJFNjsxMTA2IDExNzQgMTFCMTsgIyAo66+mOyDrr6Y7IOGEhuGFtOGGsTsg66+mOyDhhIbhhbThhrE7ICkgSEFOR1VMIFNZTExBQkxFIE1ZSUxNCitCQkU3O0JCRTc7MTEwNiAxMTc0IDExQjI7QkJFNzsxMTA2IDExNzQgMTFCMjsgIyAo66+nOyDrr6c7IOGEhuGFtOGGsjsg66+nOyDhhIbhhbThhrI7ICkgSEFOR1VMIFNZTExBQkxFIE1ZSUxCCitCQkU4O0JCRTg7MTEwNiAxMTc0IDExQjM7QkJFODsxMTA2IDExNzQgMTFCMzsgIyAo66+oOyDrr6g7IOGEhuGFtOGGszsg66+oOyDhhIbhhbThhrM7ICkgSEFOR1VMIFNZTExBQkxFIE1ZSUxTCitCQkU5O0JCRTk7MTEwNiAxMTc0IDExQjQ7QkJFOTsxMTA2IDExNzQgMTFCNDsgIyAo66+pOyDrr6k7IOGEhuGFtOGGtDsg66+pOyDhhIbhhbThhrQ7ICkgSEFOR1VMIFNZTExBQkxFIE1ZSUxUCitCQkVBO0JCRUE7MTEwNiAxMTc0IDExQjU7QkJFQTsxMTA2IDExNzQgMTFCNTsgIyAo66+qOyDrr6o7IOGEhuGFtOGGtTsg66+qOyDhhIbhhbThhrU7ICkgSEFOR1VMIFNZTExBQkxFIE1ZSUxQCitCQkVCO0JCRUI7MTEwNiAxMTc0IDExQjY7QkJFQjsxMTA2IDExNzQgMTFCNjsgIyAo66+rOyDrr6s7IOGEhuGFtOGGtjsg66+rOyDhhIbhhbThhrY7ICkgSEFOR1VMIFNZTExBQkxFIE1ZSUxICitCQkVDO0JCRUM7MTEwNiAxMTc0IDExQjc7QkJFQzsxMTA2IDExNzQgMTFCNzsgIyAo66+sOyDrr6w7IOGEhuGFtOGGtzsg66+sOyDhhIbhhbThhrc7ICkgSEFOR1VMIFNZTExBQkxFIE1ZSU0KK0JCRUQ7QkJFRDsxMTA2IDExNzQgMTFCODtCQkVEOzExMDYgMTE3NCAxMUI4OyAjICjrr607IOuvrTsg4YSG4YW04Ya4OyDrr607IOGEhuGFtOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgTVlJQgorQkJFRTtCQkVFOzExMDYgMTE3NCAxMUI5O0JCRUU7MTEwNiAxMTc0IDExQjk7ICMgKOuvrjsg66+uOyDhhIbhhbThhrk7IOuvrjsg4YSG4YW04Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBNWUlCUworQkJFRjtCQkVGOzExMDYgMTE3NCAxMUJBO0JCRUY7MTEwNiAxMTc0IDExQkE7ICMgKOuvrzsg66+vOyDhhIbhhbThhro7IOuvrzsg4YSG4YW04Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBNWUlTCitCQkYwO0JCRjA7MTEwNiAxMTc0IDExQkI7QkJGMDsxMTA2IDExNzQgMTFCQjsgIyAo66+wOyDrr7A7IOGEhuGFtOGGuzsg66+wOyDhhIbhhbThhrs7ICkgSEFOR1VMIFNZTExBQkxFIE1ZSVNTCitCQkYxO0JCRjE7MTEwNiAxMTc0IDExQkM7QkJGMTsxMTA2IDExNzQgMTFCQzsgIyAo66+xOyDrr7E7IOGEhuGFtOGGvDsg66+xOyDhhIbhhbThhrw7ICkgSEFOR1VMIFNZTExBQkxFIE1ZSU5HCitCQkYyO0JCRjI7MTEwNiAxMTc0IDExQkQ7QkJGMjsxMTA2IDExNzQgMTFCRDsgIyAo66+yOyDrr7I7IOGEhuGFtOGGvTsg66+yOyDhhIbhhbThhr07ICkgSEFOR1VMIFNZTExBQkxFIE1ZSUoKK0JCRjM7QkJGMzsxMTA2IDExNzQgMTFCRTtCQkYzOzExMDYgMTE3NCAxMUJFOyAjICjrr7M7IOuvszsg4YSG4YW04Ya+OyDrr7M7IOGEhuGFtOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgTVlJQworQkJGNDtCQkY0OzExMDYgMTE3NCAxMUJGO0JCRjQ7MTEwNiAxMTc0IDExQkY7ICMgKOuvtDsg66+0OyDhhIbhhbThhr87IOuvtDsg4YSG4YW04Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBNWUlLCitCQkY1O0JCRjU7MTEwNiAxMTc0IDExQzA7QkJGNTsxMTA2IDExNzQgMTFDMDsgIyAo66+1OyDrr7U7IOGEhuGFtOGHgDsg66+1OyDhhIbhhbThh4A7ICkgSEFOR1VMIFNZTExBQkxFIE1ZSVQKK0JCRjY7QkJGNjsxMTA2IDExNzQgMTFDMTtCQkY2OzExMDYgMTE3NCAxMUMxOyAjICjrr7Y7IOuvtjsg4YSG4YW04YeBOyDrr7Y7IOGEhuGFtOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgTVlJUAorQkJGNztCQkY3OzExMDYgMTE3NCAxMUMyO0JCRjc7MTEwNiAxMTc0IDExQzI7ICMgKOuvtzsg66+3OyDhhIbhhbThh4I7IOuvtzsg4YSG4YW04YeCOyApIEhBTkdVTCBTWUxMQUJMRSBNWUlICitCQkY4O0JCRjg7MTEwNiAxMTc1O0JCRjg7MTEwNiAxMTc1OyAjICjrr7g7IOuvuDsg4YSG4YW1OyDrr7g7IOGEhuGFtTsgKSBIQU5HVUwgU1lMTEFCTEUgTUkKK0JCRjk7QkJGOTsxMTA2IDExNzUgMTFBODtCQkY5OzExMDYgMTE3NSAxMUE4OyAjICjrr7k7IOuvuTsg4YSG4YW14YaoOyDrr7k7IOGEhuGFteGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgTUlHCitCQkZBO0JCRkE7MTEwNiAxMTc1IDExQTk7QkJGQTsxMTA2IDExNzUgMTFBOTsgIyAo66+6OyDrr7o7IOGEhuGFteGGqTsg66+6OyDhhIbhhbXhhqk7ICkgSEFOR1VMIFNZTExBQkxFIE1JR0cKK0JCRkI7QkJGQjsxMTA2IDExNzUgMTFBQTtCQkZCOzExMDYgMTE3NSAxMUFBOyAjICjrr7s7IOuvuzsg4YSG4YW14YaqOyDrr7s7IOGEhuGFteGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgTUlHUworQkJGQztCQkZDOzExMDYgMTE3NSAxMUFCO0JCRkM7MTEwNiAxMTc1IDExQUI7ICMgKOuvvDsg66+8OyDhhIbhhbXhhqs7IOuvvDsg4YSG4YW14YarOyApIEhBTkdVTCBTWUxMQUJMRSBNSU4KK0JCRkQ7QkJGRDsxMTA2IDExNzUgMTFBQztCQkZEOzExMDYgMTE3NSAxMUFDOyAjICjrr707IOuvvTsg4YSG4YW14YasOyDrr707IOGEhuGFteGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgTUlOSgorQkJGRTtCQkZFOzExMDYgMTE3NSAxMUFEO0JCRkU7MTEwNiAxMTc1IDExQUQ7ICMgKOuvvjsg66++OyDhhIbhhbXhhq07IOuvvjsg4YSG4YW14YatOyApIEhBTkdVTCBTWUxMQUJMRSBNSU5ICitCQkZGO0JCRkY7MTEwNiAxMTc1IDExQUU7QkJGRjsxMTA2IDExNzUgMTFBRTsgIyAo66+/OyDrr787IOGEhuGFteGGrjsg66+/OyDhhIbhhbXhhq47ICkgSEFOR1VMIFNZTExBQkxFIE1JRAorQkMwMDtCQzAwOzExMDYgMTE3NSAxMUFGO0JDMDA7MTEwNiAxMTc1IDExQUY7ICMgKOuwgDsg67CAOyDhhIbhhbXhhq87IOuwgDsg4YSG4YW14YavOyApIEhBTkdVTCBTWUxMQUJMRSBNSUwKK0JDMDE7QkMwMTsxMTA2IDExNzUgMTFCMDtCQzAxOzExMDYgMTE3NSAxMUIwOyAjICjrsIE7IOuwgTsg4YSG4YW14YawOyDrsIE7IOGEhuGFteGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgTUlMRworQkMwMjtCQzAyOzExMDYgMTE3NSAxMUIxO0JDMDI7MTEwNiAxMTc1IDExQjE7ICMgKOuwgjsg67CCOyDhhIbhhbXhhrE7IOuwgjsg4YSG4YW14YaxOyApIEhBTkdVTCBTWUxMQUJMRSBNSUxNCitCQzAzO0JDMDM7MTEwNiAxMTc1IDExQjI7QkMwMzsxMTA2IDExNzUgMTFCMjsgIyAo67CDOyDrsIM7IOGEhuGFteGGsjsg67CDOyDhhIbhhbXhhrI7ICkgSEFOR1VMIFNZTExBQkxFIE1JTEIKK0JDMDQ7QkMwNDsxMTA2IDExNzUgMTFCMztCQzA0OzExMDYgMTE3NSAxMUIzOyAjICjrsIQ7IOuwhDsg4YSG4YW14YazOyDrsIQ7IOGEhuGFteGGszsgKSBIQU5HVUwgU1lMTEFCTEUgTUlMUworQkMwNTtCQzA1OzExMDYgMTE3NSAxMUI0O0JDMDU7MTEwNiAxMTc1IDExQjQ7ICMgKOuwhTsg67CFOyDhhIbhhbXhhrQ7IOuwhTsg4YSG4YW14Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBNSUxUCitCQzA2O0JDMDY7MTEwNiAxMTc1IDExQjU7QkMwNjsxMTA2IDExNzUgMTFCNTsgIyAo67CGOyDrsIY7IOGEhuGFteGGtTsg67CGOyDhhIbhhbXhhrU7ICkgSEFOR1VMIFNZTExBQkxFIE1JTFAKK0JDMDc7QkMwNzsxMTA2IDExNzUgMTFCNjtCQzA3OzExMDYgMTE3NSAxMUI2OyAjICjrsIc7IOuwhzsg4YSG4YW14Ya2OyDrsIc7IOGEhuGFteGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgTUlMSAorQkMwODtCQzA4OzExMDYgMTE3NSAxMUI3O0JDMDg7MTEwNiAxMTc1IDExQjc7ICMgKOuwiDsg67CIOyDhhIbhhbXhhrc7IOuwiDsg4YSG4YW14Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBNSU0KK0JDMDk7QkMwOTsxMTA2IDExNzUgMTFCODtCQzA5OzExMDYgMTE3NSAxMUI4OyAjICjrsIk7IOuwiTsg4YSG4YW14Ya4OyDrsIk7IOGEhuGFteGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgTUlCCitCQzBBO0JDMEE7MTEwNiAxMTc1IDExQjk7QkMwQTsxMTA2IDExNzUgMTFCOTsgIyAo67CKOyDrsIo7IOGEhuGFteGGuTsg67CKOyDhhIbhhbXhhrk7ICkgSEFOR1VMIFNZTExBQkxFIE1JQlMKK0JDMEI7QkMwQjsxMTA2IDExNzUgMTFCQTtCQzBCOzExMDYgMTE3NSAxMUJBOyAjICjrsIs7IOuwizsg4YSG4YW14Ya6OyDrsIs7IOGEhuGFteGGujsgKSBIQU5HVUwgU1lMTEFCTEUgTUlTCitCQzBDO0JDMEM7MTEwNiAxMTc1IDExQkI7QkMwQzsxMTA2IDExNzUgMTFCQjsgIyAo67CMOyDrsIw7IOGEhuGFteGGuzsg67CMOyDhhIbhhbXhhrs7ICkgSEFOR1VMIFNZTExBQkxFIE1JU1MKK0JDMEQ7QkMwRDsxMTA2IDExNzUgMTFCQztCQzBEOzExMDYgMTE3NSAxMUJDOyAjICjrsI07IOuwjTsg4YSG4YW14Ya8OyDrsI07IOGEhuGFteGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgTUlORworQkMwRTtCQzBFOzExMDYgMTE3NSAxMUJEO0JDMEU7MTEwNiAxMTc1IDExQkQ7ICMgKOuwjjsg67COOyDhhIbhhbXhhr07IOuwjjsg4YSG4YW14Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBNSUoKK0JDMEY7QkMwRjsxMTA2IDExNzUgMTFCRTtCQzBGOzExMDYgMTE3NSAxMUJFOyAjICjrsI87IOuwjzsg4YSG4YW14Ya+OyDrsI87IOGEhuGFteGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgTUlDCitCQzEwO0JDMTA7MTEwNiAxMTc1IDExQkY7QkMxMDsxMTA2IDExNzUgMTFCRjsgIyAo67CQOyDrsJA7IOGEhuGFteGGvzsg67CQOyDhhIbhhbXhhr87ICkgSEFOR1VMIFNZTExBQkxFIE1JSworQkMxMTtCQzExOzExMDYgMTE3NSAxMUMwO0JDMTE7MTEwNiAxMTc1IDExQzA7ICMgKOuwkTsg67CROyDhhIbhhbXhh4A7IOuwkTsg4YSG4YW14YeAOyApIEhBTkdVTCBTWUxMQUJMRSBNSVQKK0JDMTI7QkMxMjsxMTA2IDExNzUgMTFDMTtCQzEyOzExMDYgMTE3NSAxMUMxOyAjICjrsJI7IOuwkjsg4YSG4YW14YeBOyDrsJI7IOGEhuGFteGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgTUlQCitCQzEzO0JDMTM7MTEwNiAxMTc1IDExQzI7QkMxMzsxMTA2IDExNzUgMTFDMjsgIyAo67CTOyDrsJM7IOGEhuGFteGHgjsg67CTOyDhhIbhhbXhh4I7ICkgSEFOR1VMIFNZTExBQkxFIE1JSAorQkMxNDtCQzE0OzExMDcgMTE2MTtCQzE0OzExMDcgMTE2MTsgIyAo67CUOyDrsJQ7IOGEh+GFoTsg67CUOyDhhIfhhaE7ICkgSEFOR1VMIFNZTExBQkxFIEJBCitCQzE1O0JDMTU7MTEwNyAxMTYxIDExQTg7QkMxNTsxMTA3IDExNjEgMTFBODsgIyAo67CVOyDrsJU7IOGEh+GFoeGGqDsg67CVOyDhhIfhhaHhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEJBRworQkMxNjtCQzE2OzExMDcgMTE2MSAxMUE5O0JDMTY7MTEwNyAxMTYxIDExQTk7ICMgKOuwljsg67CWOyDhhIfhhaHhhqk7IOuwljsg4YSH4YWh4YapOyApIEhBTkdVTCBTWUxMQUJMRSBCQUdHCitCQzE3O0JDMTc7MTEwNyAxMTYxIDExQUE7QkMxNzsxMTA3IDExNjEgMTFBQTsgIyAo67CXOyDrsJc7IOGEh+GFoeGGqjsg67CXOyDhhIfhhaHhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEJBR1MKK0JDMTg7QkMxODsxMTA3IDExNjEgMTFBQjtCQzE4OzExMDcgMTE2MSAxMUFCOyAjICjrsJg7IOuwmDsg4YSH4YWh4YarOyDrsJg7IOGEh+GFoeGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQkFOCitCQzE5O0JDMTk7MTEwNyAxMTYxIDExQUM7QkMxOTsxMTA3IDExNjEgMTFBQzsgIyAo67CZOyDrsJk7IOGEh+GFoeGGrDsg67CZOyDhhIfhhaHhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEJBTkoKK0JDMUE7QkMxQTsxMTA3IDExNjEgMTFBRDtCQzFBOzExMDcgMTE2MSAxMUFEOyAjICjrsJo7IOuwmjsg4YSH4YWh4YatOyDrsJo7IOGEh+GFoeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgQkFOSAorQkMxQjtCQzFCOzExMDcgMTE2MSAxMUFFO0JDMUI7MTEwNyAxMTYxIDExQUU7ICMgKOuwmzsg67CbOyDhhIfhhaHhhq47IOuwmzsg4YSH4YWh4YauOyApIEhBTkdVTCBTWUxMQUJMRSBCQUQKK0JDMUM7QkMxQzsxMTA3IDExNjEgMTFBRjtCQzFDOzExMDcgMTE2MSAxMUFGOyAjICjrsJw7IOuwnDsg4YSH4YWh4YavOyDrsJw7IOGEh+GFoeGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQkFMCitCQzFEO0JDMUQ7MTEwNyAxMTYxIDExQjA7QkMxRDsxMTA3IDExNjEgMTFCMDsgIyAo67CdOyDrsJ07IOGEh+GFoeGGsDsg67CdOyDhhIfhhaHhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEJBTEcKK0JDMUU7QkMxRTsxMTA3IDExNjEgMTFCMTtCQzFFOzExMDcgMTE2MSAxMUIxOyAjICjrsJ47IOuwnjsg4YSH4YWh4YaxOyDrsJ47IOGEh+GFoeGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQkFMTQorQkMxRjtCQzFGOzExMDcgMTE2MSAxMUIyO0JDMUY7MTEwNyAxMTYxIDExQjI7ICMgKOuwnzsg67CfOyDhhIfhhaHhhrI7IOuwnzsg4YSH4YWh4YayOyApIEhBTkdVTCBTWUxMQUJMRSBCQUxCCitCQzIwO0JDMjA7MTEwNyAxMTYxIDExQjM7QkMyMDsxMTA3IDExNjEgMTFCMzsgIyAo67CgOyDrsKA7IOGEh+GFoeGGszsg67CgOyDhhIfhhaHhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEJBTFMKK0JDMjE7QkMyMTsxMTA3IDExNjEgMTFCNDtCQzIxOzExMDcgMTE2MSAxMUI0OyAjICjrsKE7IOuwoTsg4YSH4YWh4Ya0OyDrsKE7IOGEh+GFoeGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQkFMVAorQkMyMjtCQzIyOzExMDcgMTE2MSAxMUI1O0JDMjI7MTEwNyAxMTYxIDExQjU7ICMgKOuwojsg67CiOyDhhIfhhaHhhrU7IOuwojsg4YSH4YWh4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBCQUxQCitCQzIzO0JDMjM7MTEwNyAxMTYxIDExQjY7QkMyMzsxMTA3IDExNjEgMTFCNjsgIyAo67CjOyDrsKM7IOGEh+GFoeGGtjsg67CjOyDhhIfhhaHhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEJBTEgKK0JDMjQ7QkMyNDsxMTA3IDExNjEgMTFCNztCQzI0OzExMDcgMTE2MSAxMUI3OyAjICjrsKQ7IOuwpDsg4YSH4YWh4Ya3OyDrsKQ7IOGEh+GFoeGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQkFNCitCQzI1O0JDMjU7MTEwNyAxMTYxIDExQjg7QkMyNTsxMTA3IDExNjEgMTFCODsgIyAo67ClOyDrsKU7IOGEh+GFoeGGuDsg67ClOyDhhIfhhaHhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEJBQgorQkMyNjtCQzI2OzExMDcgMTE2MSAxMUI5O0JDMjY7MTEwNyAxMTYxIDExQjk7ICMgKOuwpjsg67CmOyDhhIfhhaHhhrk7IOuwpjsg4YSH4YWh4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBCQUJTCitCQzI3O0JDMjc7MTEwNyAxMTYxIDExQkE7QkMyNzsxMTA3IDExNjEgMTFCQTsgIyAo67CnOyDrsKc7IOGEh+GFoeGGujsg67CnOyDhhIfhhaHhhro7ICkgSEFOR1VMIFNZTExBQkxFIEJBUworQkMyODtCQzI4OzExMDcgMTE2MSAxMUJCO0JDMjg7MTEwNyAxMTYxIDExQkI7ICMgKOuwqDsg67CoOyDhhIfhhaHhhrs7IOuwqDsg4YSH4YWh4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBCQVNTCitCQzI5O0JDMjk7MTEwNyAxMTYxIDExQkM7QkMyOTsxMTA3IDExNjEgMTFCQzsgIyAo67CpOyDrsKk7IOGEh+GFoeGGvDsg67CpOyDhhIfhhaHhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEJBTkcKK0JDMkE7QkMyQTsxMTA3IDExNjEgMTFCRDtCQzJBOzExMDcgMTE2MSAxMUJEOyAjICjrsKo7IOuwqjsg4YSH4YWh4Ya9OyDrsKo7IOGEh+GFoeGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQkFKCitCQzJCO0JDMkI7MTEwNyAxMTYxIDExQkU7QkMyQjsxMTA3IDExNjEgMTFCRTsgIyAo67CrOyDrsKs7IOGEh+GFoeGGvjsg67CrOyDhhIfhhaHhhr47ICkgSEFOR1VMIFNZTExBQkxFIEJBQworQkMyQztCQzJDOzExMDcgMTE2MSAxMUJGO0JDMkM7MTEwNyAxMTYxIDExQkY7ICMgKOuwrDsg67CsOyDhhIfhhaHhhr87IOuwrDsg4YSH4YWh4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBCQUsKK0JDMkQ7QkMyRDsxMTA3IDExNjEgMTFDMDtCQzJEOzExMDcgMTE2MSAxMUMwOyAjICjrsK07IOuwrTsg4YSH4YWh4YeAOyDrsK07IOGEh+GFoeGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQkFUCitCQzJFO0JDMkU7MTEwNyAxMTYxIDExQzE7QkMyRTsxMTA3IDExNjEgMTFDMTsgIyAo67CuOyDrsK47IOGEh+GFoeGHgTsg67CuOyDhhIfhhaHhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEJBUAorQkMyRjtCQzJGOzExMDcgMTE2MSAxMUMyO0JDMkY7MTEwNyAxMTYxIDExQzI7ICMgKOuwrzsg67CvOyDhhIfhhaHhh4I7IOuwrzsg4YSH4YWh4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBCQUgKK0JDMzA7QkMzMDsxMTA3IDExNjI7QkMzMDsxMTA3IDExNjI7ICMgKOuwsDsg67CwOyDhhIfhhaI7IOuwsDsg4YSH4YWiOyApIEhBTkdVTCBTWUxMQUJMRSBCQUUKK0JDMzE7QkMzMTsxMTA3IDExNjIgMTFBODtCQzMxOzExMDcgMTE2MiAxMUE4OyAjICjrsLE7IOuwsTsg4YSH4YWi4YaoOyDrsLE7IOGEh+GFouGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgQkFFRworQkMzMjtCQzMyOzExMDcgMTE2MiAxMUE5O0JDMzI7MTEwNyAxMTYyIDExQTk7ICMgKOuwsjsg67CyOyDhhIfhhaLhhqk7IOuwsjsg4YSH4YWi4YapOyApIEhBTkdVTCBTWUxMQUJMRSBCQUVHRworQkMzMztCQzMzOzExMDcgMTE2MiAxMUFBO0JDMzM7MTEwNyAxMTYyIDExQUE7ICMgKOuwszsg67CzOyDhhIfhhaLhhqo7IOuwszsg4YSH4YWi4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBCQUVHUworQkMzNDtCQzM0OzExMDcgMTE2MiAxMUFCO0JDMzQ7MTEwNyAxMTYyIDExQUI7ICMgKOuwtDsg67C0OyDhhIfhhaLhhqs7IOuwtDsg4YSH4YWi4YarOyApIEhBTkdVTCBTWUxMQUJMRSBCQUVOCitCQzM1O0JDMzU7MTEwNyAxMTYyIDExQUM7QkMzNTsxMTA3IDExNjIgMTFBQzsgIyAo67C1OyDrsLU7IOGEh+GFouGGrDsg67C1OyDhhIfhhaLhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEJBRU5KCitCQzM2O0JDMzY7MTEwNyAxMTYyIDExQUQ7QkMzNjsxMTA3IDExNjIgMTFBRDsgIyAo67C2OyDrsLY7IOGEh+GFouGGrTsg67C2OyDhhIfhhaLhhq07ICkgSEFOR1VMIFNZTExBQkxFIEJBRU5ICitCQzM3O0JDMzc7MTEwNyAxMTYyIDExQUU7QkMzNzsxMTA3IDExNjIgMTFBRTsgIyAo67C3OyDrsLc7IOGEh+GFouGGrjsg67C3OyDhhIfhhaLhhq47ICkgSEFOR1VMIFNZTExBQkxFIEJBRUQKK0JDMzg7QkMzODsxMTA3IDExNjIgMTFBRjtCQzM4OzExMDcgMTE2MiAxMUFGOyAjICjrsLg7IOuwuDsg4YSH4YWi4YavOyDrsLg7IOGEh+GFouGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQkFFTAorQkMzOTtCQzM5OzExMDcgMTE2MiAxMUIwO0JDMzk7MTEwNyAxMTYyIDExQjA7ICMgKOuwuTsg67C5OyDhhIfhhaLhhrA7IOuwuTsg4YSH4YWi4YawOyApIEhBTkdVTCBTWUxMQUJMRSBCQUVMRworQkMzQTtCQzNBOzExMDcgMTE2MiAxMUIxO0JDM0E7MTEwNyAxMTYyIDExQjE7ICMgKOuwujsg67C6OyDhhIfhhaLhhrE7IOuwujsg4YSH4YWi4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBCQUVMTQorQkMzQjtCQzNCOzExMDcgMTE2MiAxMUIyO0JDM0I7MTEwNyAxMTYyIDExQjI7ICMgKOuwuzsg67C7OyDhhIfhhaLhhrI7IOuwuzsg4YSH4YWi4YayOyApIEhBTkdVTCBTWUxMQUJMRSBCQUVMQgorQkMzQztCQzNDOzExMDcgMTE2MiAxMUIzO0JDM0M7MTEwNyAxMTYyIDExQjM7ICMgKOuwvDsg67C8OyDhhIfhhaLhhrM7IOuwvDsg4YSH4YWi4YazOyApIEhBTkdVTCBTWUxMQUJMRSBCQUVMUworQkMzRDtCQzNEOzExMDcgMTE2MiAxMUI0O0JDM0Q7MTEwNyAxMTYyIDExQjQ7ICMgKOuwvTsg67C9OyDhhIfhhaLhhrQ7IOuwvTsg4YSH4YWi4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBCQUVMVAorQkMzRTtCQzNFOzExMDcgMTE2MiAxMUI1O0JDM0U7MTEwNyAxMTYyIDExQjU7ICMgKOuwvjsg67C+OyDhhIfhhaLhhrU7IOuwvjsg4YSH4YWi4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBCQUVMUAorQkMzRjtCQzNGOzExMDcgMTE2MiAxMUI2O0JDM0Y7MTEwNyAxMTYyIDExQjY7ICMgKOuwvzsg67C/OyDhhIfhhaLhhrY7IOuwvzsg4YSH4YWi4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBCQUVMSAorQkM0MDtCQzQwOzExMDcgMTE2MiAxMUI3O0JDNDA7MTEwNyAxMTYyIDExQjc7ICMgKOuxgDsg67GAOyDhhIfhhaLhhrc7IOuxgDsg4YSH4YWi4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBCQUVNCitCQzQxO0JDNDE7MTEwNyAxMTYyIDExQjg7QkM0MTsxMTA3IDExNjIgMTFCODsgIyAo67GBOyDrsYE7IOGEh+GFouGGuDsg67GBOyDhhIfhhaLhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEJBRUIKK0JDNDI7QkM0MjsxMTA3IDExNjIgMTFCOTtCQzQyOzExMDcgMTE2MiAxMUI5OyAjICjrsYI7IOuxgjsg4YSH4YWi4Ya5OyDrsYI7IOGEh+GFouGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQkFFQlMKK0JDNDM7QkM0MzsxMTA3IDExNjIgMTFCQTtCQzQzOzExMDcgMTE2MiAxMUJBOyAjICjrsYM7IOuxgzsg4YSH4YWi4Ya6OyDrsYM7IOGEh+GFouGGujsgKSBIQU5HVUwgU1lMTEFCTEUgQkFFUworQkM0NDtCQzQ0OzExMDcgMTE2MiAxMUJCO0JDNDQ7MTEwNyAxMTYyIDExQkI7ICMgKOuxhDsg67GEOyDhhIfhhaLhhrs7IOuxhDsg4YSH4YWi4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBCQUVTUworQkM0NTtCQzQ1OzExMDcgMTE2MiAxMUJDO0JDNDU7MTEwNyAxMTYyIDExQkM7ICMgKOuxhTsg67GFOyDhhIfhhaLhhrw7IOuxhTsg4YSH4YWi4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBCQUVORworQkM0NjtCQzQ2OzExMDcgMTE2MiAxMUJEO0JDNDY7MTEwNyAxMTYyIDExQkQ7ICMgKOuxhjsg67GGOyDhhIfhhaLhhr07IOuxhjsg4YSH4YWi4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBCQUVKCitCQzQ3O0JDNDc7MTEwNyAxMTYyIDExQkU7QkM0NzsxMTA3IDExNjIgMTFCRTsgIyAo67GHOyDrsYc7IOGEh+GFouGGvjsg67GHOyDhhIfhhaLhhr47ICkgSEFOR1VMIFNZTExBQkxFIEJBRUMKK0JDNDg7QkM0ODsxMTA3IDExNjIgMTFCRjtCQzQ4OzExMDcgMTE2MiAxMUJGOyAjICjrsYg7IOuxiDsg4YSH4YWi4Ya/OyDrsYg7IOGEh+GFouGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQkFFSworQkM0OTtCQzQ5OzExMDcgMTE2MiAxMUMwO0JDNDk7MTEwNyAxMTYyIDExQzA7ICMgKOuxiTsg67GJOyDhhIfhhaLhh4A7IOuxiTsg4YSH4YWi4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBCQUVUCitCQzRBO0JDNEE7MTEwNyAxMTYyIDExQzE7QkM0QTsxMTA3IDExNjIgMTFDMTsgIyAo67GKOyDrsYo7IOGEh+GFouGHgTsg67GKOyDhhIfhhaLhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEJBRVAKK0JDNEI7QkM0QjsxMTA3IDExNjIgMTFDMjtCQzRCOzExMDcgMTE2MiAxMUMyOyAjICjrsYs7IOuxizsg4YSH4YWi4YeCOyDrsYs7IOGEh+GFouGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQkFFSAorQkM0QztCQzRDOzExMDcgMTE2MztCQzRDOzExMDcgMTE2MzsgIyAo67GMOyDrsYw7IOGEh+GFozsg67GMOyDhhIfhhaM7ICkgSEFOR1VMIFNZTExBQkxFIEJZQQorQkM0RDtCQzREOzExMDcgMTE2MyAxMUE4O0JDNEQ7MTEwNyAxMTYzIDExQTg7ICMgKOuxjTsg67GNOyDhhIfhhaPhhqg7IOuxjTsg4YSH4YWj4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCWUFHCitCQzRFO0JDNEU7MTEwNyAxMTYzIDExQTk7QkM0RTsxMTA3IDExNjMgMTFBOTsgIyAo67GOOyDrsY47IOGEh+GFo+GGqTsg67GOOyDhhIfhhaPhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEJZQUdHCitCQzRGO0JDNEY7MTEwNyAxMTYzIDExQUE7QkM0RjsxMTA3IDExNjMgMTFBQTsgIyAo67GPOyDrsY87IOGEh+GFo+GGqjsg67GPOyDhhIfhhaPhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEJZQUdTCitCQzUwO0JDNTA7MTEwNyAxMTYzIDExQUI7QkM1MDsxMTA3IDExNjMgMTFBQjsgIyAo67GQOyDrsZA7IOGEh+GFo+GGqzsg67GQOyDhhIfhhaPhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJZQU4KK0JDNTE7QkM1MTsxMTA3IDExNjMgMTFBQztCQzUxOzExMDcgMTE2MyAxMUFDOyAjICjrsZE7IOuxkTsg4YSH4YWj4YasOyDrsZE7IOGEh+GFo+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgQllBTkoKK0JDNTI7QkM1MjsxMTA3IDExNjMgMTFBRDtCQzUyOzExMDcgMTE2MyAxMUFEOyAjICjrsZI7IOuxkjsg4YSH4YWj4YatOyDrsZI7IOGEh+GFo+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgQllBTkgKK0JDNTM7QkM1MzsxMTA3IDExNjMgMTFBRTtCQzUzOzExMDcgMTE2MyAxMUFFOyAjICjrsZM7IOuxkzsg4YSH4YWj4YauOyDrsZM7IOGEh+GFo+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQllBRAorQkM1NDtCQzU0OzExMDcgMTE2MyAxMUFGO0JDNTQ7MTEwNyAxMTYzIDExQUY7ICMgKOuxlDsg67GUOyDhhIfhhaPhhq87IOuxlDsg4YSH4YWj4YavOyApIEhBTkdVTCBTWUxMQUJMRSBCWUFMCitCQzU1O0JDNTU7MTEwNyAxMTYzIDExQjA7QkM1NTsxMTA3IDExNjMgMTFCMDsgIyAo67GVOyDrsZU7IOGEh+GFo+GGsDsg67GVOyDhhIfhhaPhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEJZQUxHCitCQzU2O0JDNTY7MTEwNyAxMTYzIDExQjE7QkM1NjsxMTA3IDExNjMgMTFCMTsgIyAo67GWOyDrsZY7IOGEh+GFo+GGsTsg67GWOyDhhIfhhaPhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJZQUxNCitCQzU3O0JDNTc7MTEwNyAxMTYzIDExQjI7QkM1NzsxMTA3IDExNjMgMTFCMjsgIyAo67GXOyDrsZc7IOGEh+GFo+GGsjsg67GXOyDhhIfhhaPhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEJZQUxCCitCQzU4O0JDNTg7MTEwNyAxMTYzIDExQjM7QkM1ODsxMTA3IDExNjMgMTFCMzsgIyAo67GYOyDrsZg7IOGEh+GFo+GGszsg67GYOyDhhIfhhaPhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEJZQUxTCitCQzU5O0JDNTk7MTEwNyAxMTYzIDExQjQ7QkM1OTsxMTA3IDExNjMgMTFCNDsgIyAo67GZOyDrsZk7IOGEh+GFo+GGtDsg67GZOyDhhIfhhaPhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJZQUxUCitCQzVBO0JDNUE7MTEwNyAxMTYzIDExQjU7QkM1QTsxMTA3IDExNjMgMTFCNTsgIyAo67GaOyDrsZo7IOGEh+GFo+GGtTsg67GaOyDhhIfhhaPhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEJZQUxQCitCQzVCO0JDNUI7MTEwNyAxMTYzIDExQjY7QkM1QjsxMTA3IDExNjMgMTFCNjsgIyAo67GbOyDrsZs7IOGEh+GFo+GGtjsg67GbOyDhhIfhhaPhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEJZQUxICitCQzVDO0JDNUM7MTEwNyAxMTYzIDExQjc7QkM1QzsxMTA3IDExNjMgMTFCNzsgIyAo67GcOyDrsZw7IOGEh+GFo+GGtzsg67GcOyDhhIfhhaPhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJZQU0KK0JDNUQ7QkM1RDsxMTA3IDExNjMgMTFCODtCQzVEOzExMDcgMTE2MyAxMUI4OyAjICjrsZ07IOuxnTsg4YSH4YWj4Ya4OyDrsZ07IOGEh+GFo+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgQllBQgorQkM1RTtCQzVFOzExMDcgMTE2MyAxMUI5O0JDNUU7MTEwNyAxMTYzIDExQjk7ICMgKOuxnjsg67GeOyDhhIfhhaPhhrk7IOuxnjsg4YSH4YWj4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBCWUFCUworQkM1RjtCQzVGOzExMDcgMTE2MyAxMUJBO0JDNUY7MTEwNyAxMTYzIDExQkE7ICMgKOuxnzsg67GfOyDhhIfhhaPhhro7IOuxnzsg4YSH4YWj4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCWUFTCitCQzYwO0JDNjA7MTEwNyAxMTYzIDExQkI7QkM2MDsxMTA3IDExNjMgMTFCQjsgIyAo67GgOyDrsaA7IOGEh+GFo+GGuzsg67GgOyDhhIfhhaPhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEJZQVNTCitCQzYxO0JDNjE7MTEwNyAxMTYzIDExQkM7QkM2MTsxMTA3IDExNjMgMTFCQzsgIyAo67GhOyDrsaE7IOGEh+GFo+GGvDsg67GhOyDhhIfhhaPhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEJZQU5HCitCQzYyO0JDNjI7MTEwNyAxMTYzIDExQkQ7QkM2MjsxMTA3IDExNjMgMTFCRDsgIyAo67GiOyDrsaI7IOGEh+GFo+GGvTsg67GiOyDhhIfhhaPhhr07ICkgSEFOR1VMIFNZTExBQkxFIEJZQUoKK0JDNjM7QkM2MzsxMTA3IDExNjMgMTFCRTtCQzYzOzExMDcgMTE2MyAxMUJFOyAjICjrsaM7IOuxozsg4YSH4YWj4Ya+OyDrsaM7IOGEh+GFo+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgQllBQworQkM2NDtCQzY0OzExMDcgMTE2MyAxMUJGO0JDNjQ7MTEwNyAxMTYzIDExQkY7ICMgKOuxpDsg67GkOyDhhIfhhaPhhr87IOuxpDsg4YSH4YWj4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBCWUFLCitCQzY1O0JDNjU7MTEwNyAxMTYzIDExQzA7QkM2NTsxMTA3IDExNjMgMTFDMDsgIyAo67GlOyDrsaU7IOGEh+GFo+GHgDsg67GlOyDhhIfhhaPhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJZQVQKK0JDNjY7QkM2NjsxMTA3IDExNjMgMTFDMTtCQzY2OzExMDcgMTE2MyAxMUMxOyAjICjrsaY7IOuxpjsg4YSH4YWj4YeBOyDrsaY7IOGEh+GFo+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgQllBUAorQkM2NztCQzY3OzExMDcgMTE2MyAxMUMyO0JDNjc7MTEwNyAxMTYzIDExQzI7ICMgKOuxpzsg67GnOyDhhIfhhaPhh4I7IOuxpzsg4YSH4YWj4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBCWUFICitCQzY4O0JDNjg7MTEwNyAxMTY0O0JDNjg7MTEwNyAxMTY0OyAjICjrsag7IOuxqDsg4YSH4YWkOyDrsag7IOGEh+GFpDsgKSBIQU5HVUwgU1lMTEFCTEUgQllBRQorQkM2OTtCQzY5OzExMDcgMTE2NCAxMUE4O0JDNjk7MTEwNyAxMTY0IDExQTg7ICMgKOuxqTsg67GpOyDhhIfhhaThhqg7IOuxqTsg4YSH4YWk4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCWUFFRworQkM2QTtCQzZBOzExMDcgMTE2NCAxMUE5O0JDNkE7MTEwNyAxMTY0IDExQTk7ICMgKOuxqjsg67GqOyDhhIfhhaThhqk7IOuxqjsg4YSH4YWk4YapOyApIEhBTkdVTCBTWUxMQUJMRSBCWUFFR0cKK0JDNkI7QkM2QjsxMTA3IDExNjQgMTFBQTtCQzZCOzExMDcgMTE2NCAxMUFBOyAjICjrsas7IOuxqzsg4YSH4YWk4YaqOyDrsas7IOGEh+GFpOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQllBRUdTCitCQzZDO0JDNkM7MTEwNyAxMTY0IDExQUI7QkM2QzsxMTA3IDExNjQgMTFBQjsgIyAo67GsOyDrsaw7IOGEh+GFpOGGqzsg67GsOyDhhIfhhaThhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJZQUVOCitCQzZEO0JDNkQ7MTEwNyAxMTY0IDExQUM7QkM2RDsxMTA3IDExNjQgMTFBQzsgIyAo67GtOyDrsa07IOGEh+GFpOGGrDsg67GtOyDhhIfhhaThhqw7ICkgSEFOR1VMIFNZTExBQkxFIEJZQUVOSgorQkM2RTtCQzZFOzExMDcgMTE2NCAxMUFEO0JDNkU7MTEwNyAxMTY0IDExQUQ7ICMgKOuxrjsg67GuOyDhhIfhhaThhq07IOuxrjsg4YSH4YWk4YatOyApIEhBTkdVTCBTWUxMQUJMRSBCWUFFTkgKK0JDNkY7QkM2RjsxMTA3IDExNjQgMTFBRTtCQzZGOzExMDcgMTE2NCAxMUFFOyAjICjrsa87IOuxrzsg4YSH4YWk4YauOyDrsa87IOGEh+GFpOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQllBRUQKK0JDNzA7QkM3MDsxMTA3IDExNjQgMTFBRjtCQzcwOzExMDcgMTE2NCAxMUFGOyAjICjrsbA7IOuxsDsg4YSH4YWk4YavOyDrsbA7IOGEh+GFpOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQllBRUwKK0JDNzE7QkM3MTsxMTA3IDExNjQgMTFCMDtCQzcxOzExMDcgMTE2NCAxMUIwOyAjICjrsbE7IOuxsTsg4YSH4YWk4YawOyDrsbE7IOGEh+GFpOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQllBRUxHCitCQzcyO0JDNzI7MTEwNyAxMTY0IDExQjE7QkM3MjsxMTA3IDExNjQgMTFCMTsgIyAo67GyOyDrsbI7IOGEh+GFpOGGsTsg67GyOyDhhIfhhaThhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJZQUVMTQorQkM3MztCQzczOzExMDcgMTE2NCAxMUIyO0JDNzM7MTEwNyAxMTY0IDExQjI7ICMgKOuxszsg67GzOyDhhIfhhaThhrI7IOuxszsg4YSH4YWk4YayOyApIEhBTkdVTCBTWUxMQUJMRSBCWUFFTEIKK0JDNzQ7QkM3NDsxMTA3IDExNjQgMTFCMztCQzc0OzExMDcgMTE2NCAxMUIzOyAjICjrsbQ7IOuxtDsg4YSH4YWk4YazOyDrsbQ7IOGEh+GFpOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQllBRUxTCitCQzc1O0JDNzU7MTEwNyAxMTY0IDExQjQ7QkM3NTsxMTA3IDExNjQgMTFCNDsgIyAo67G1OyDrsbU7IOGEh+GFpOGGtDsg67G1OyDhhIfhhaThhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJZQUVMVAorQkM3NjtCQzc2OzExMDcgMTE2NCAxMUI1O0JDNzY7MTEwNyAxMTY0IDExQjU7ICMgKOuxtjsg67G2OyDhhIfhhaThhrU7IOuxtjsg4YSH4YWk4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBCWUFFTFAKK0JDNzc7QkM3NzsxMTA3IDExNjQgMTFCNjtCQzc3OzExMDcgMTE2NCAxMUI2OyAjICjrsbc7IOuxtzsg4YSH4YWk4Ya2OyDrsbc7IOGEh+GFpOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQllBRUxICitCQzc4O0JDNzg7MTEwNyAxMTY0IDExQjc7QkM3ODsxMTA3IDExNjQgMTFCNzsgIyAo67G4OyDrsbg7IOGEh+GFpOGGtzsg67G4OyDhhIfhhaThhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJZQUVNCitCQzc5O0JDNzk7MTEwNyAxMTY0IDExQjg7QkM3OTsxMTA3IDExNjQgMTFCODsgIyAo67G5OyDrsbk7IOGEh+GFpOGGuDsg67G5OyDhhIfhhaThhrg7ICkgSEFOR1VMIFNZTExBQkxFIEJZQUVCCitCQzdBO0JDN0E7MTEwNyAxMTY0IDExQjk7QkM3QTsxMTA3IDExNjQgMTFCOTsgIyAo67G6OyDrsbo7IOGEh+GFpOGGuTsg67G6OyDhhIfhhaThhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJZQUVCUworQkM3QjtCQzdCOzExMDcgMTE2NCAxMUJBO0JDN0I7MTEwNyAxMTY0IDExQkE7ICMgKOuxuzsg67G7OyDhhIfhhaThhro7IOuxuzsg4YSH4YWk4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCWUFFUworQkM3QztCQzdDOzExMDcgMTE2NCAxMUJCO0JDN0M7MTEwNyAxMTY0IDExQkI7ICMgKOuxvDsg67G8OyDhhIfhhaThhrs7IOuxvDsg4YSH4YWk4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBCWUFFU1MKK0JDN0Q7QkM3RDsxMTA3IDExNjQgMTFCQztCQzdEOzExMDcgMTE2NCAxMUJDOyAjICjrsb07IOuxvTsg4YSH4YWk4Ya8OyDrsb07IOGEh+GFpOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQllBRU5HCitCQzdFO0JDN0U7MTEwNyAxMTY0IDExQkQ7QkM3RTsxMTA3IDExNjQgMTFCRDsgIyAo67G+OyDrsb47IOGEh+GFpOGGvTsg67G+OyDhhIfhhaThhr07ICkgSEFOR1VMIFNZTExBQkxFIEJZQUVKCitCQzdGO0JDN0Y7MTEwNyAxMTY0IDExQkU7QkM3RjsxMTA3IDExNjQgMTFCRTsgIyAo67G/OyDrsb87IOGEh+GFpOGGvjsg67G/OyDhhIfhhaThhr47ICkgSEFOR1VMIFNZTExBQkxFIEJZQUVDCitCQzgwO0JDODA7MTEwNyAxMTY0IDExQkY7QkM4MDsxMTA3IDExNjQgMTFCRjsgIyAo67KAOyDrsoA7IOGEh+GFpOGGvzsg67KAOyDhhIfhhaThhr87ICkgSEFOR1VMIFNZTExBQkxFIEJZQUVLCitCQzgxO0JDODE7MTEwNyAxMTY0IDExQzA7QkM4MTsxMTA3IDExNjQgMTFDMDsgIyAo67KBOyDrsoE7IOGEh+GFpOGHgDsg67KBOyDhhIfhhaThh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJZQUVUCitCQzgyO0JDODI7MTEwNyAxMTY0IDExQzE7QkM4MjsxMTA3IDExNjQgMTFDMTsgIyAo67KCOyDrsoI7IOGEh+GFpOGHgTsg67KCOyDhhIfhhaThh4E7ICkgSEFOR1VMIFNZTExBQkxFIEJZQUVQCitCQzgzO0JDODM7MTEwNyAxMTY0IDExQzI7QkM4MzsxMTA3IDExNjQgMTFDMjsgIyAo67KDOyDrsoM7IOGEh+GFpOGHgjsg67KDOyDhhIfhhaThh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJZQUVICitCQzg0O0JDODQ7MTEwNyAxMTY1O0JDODQ7MTEwNyAxMTY1OyAjICjrsoQ7IOuyhDsg4YSH4YWlOyDrsoQ7IOGEh+GFpTsgKSBIQU5HVUwgU1lMTEFCTEUgQkVPCitCQzg1O0JDODU7MTEwNyAxMTY1IDExQTg7QkM4NTsxMTA3IDExNjUgMTFBODsgIyAo67KFOyDrsoU7IOGEh+GFpeGGqDsg67KFOyDhhIfhhaXhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEJFT0cKK0JDODY7QkM4NjsxMTA3IDExNjUgMTFBOTtCQzg2OzExMDcgMTE2NSAxMUE5OyAjICjrsoY7IOuyhjsg4YSH4YWl4YapOyDrsoY7IOGEh+GFpeGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQkVPR0cKK0JDODc7QkM4NzsxMTA3IDExNjUgMTFBQTtCQzg3OzExMDcgMTE2NSAxMUFBOyAjICjrsoc7IOuyhzsg4YSH4YWl4YaqOyDrsoc7IOGEh+GFpeGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQkVPR1MKK0JDODg7QkM4ODsxMTA3IDExNjUgMTFBQjtCQzg4OzExMDcgMTE2NSAxMUFCOyAjICjrsog7IOuyiDsg4YSH4YWl4YarOyDrsog7IOGEh+GFpeGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQkVPTgorQkM4OTtCQzg5OzExMDcgMTE2NSAxMUFDO0JDODk7MTEwNyAxMTY1IDExQUM7ICMgKOuyiTsg67KJOyDhhIfhhaXhhqw7IOuyiTsg4YSH4YWl4YasOyApIEhBTkdVTCBTWUxMQUJMRSBCRU9OSgorQkM4QTtCQzhBOzExMDcgMTE2NSAxMUFEO0JDOEE7MTEwNyAxMTY1IDExQUQ7ICMgKOuyijsg67KKOyDhhIfhhaXhhq07IOuyijsg4YSH4YWl4YatOyApIEhBTkdVTCBTWUxMQUJMRSBCRU9OSAorQkM4QjtCQzhCOzExMDcgMTE2NSAxMUFFO0JDOEI7MTEwNyAxMTY1IDExQUU7ICMgKOuyizsg67KLOyDhhIfhhaXhhq47IOuyizsg4YSH4YWl4YauOyApIEhBTkdVTCBTWUxMQUJMRSBCRU9ECitCQzhDO0JDOEM7MTEwNyAxMTY1IDExQUY7QkM4QzsxMTA3IDExNjUgMTFBRjsgIyAo67KMOyDrsow7IOGEh+GFpeGGrzsg67KMOyDhhIfhhaXhhq87ICkgSEFOR1VMIFNZTExBQkxFIEJFT0wKK0JDOEQ7QkM4RDsxMTA3IDExNjUgMTFCMDtCQzhEOzExMDcgMTE2NSAxMUIwOyAjICjrso07IOuyjTsg4YSH4YWl4YawOyDrso07IOGEh+GFpeGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQkVPTEcKK0JDOEU7QkM4RTsxMTA3IDExNjUgMTFCMTtCQzhFOzExMDcgMTE2NSAxMUIxOyAjICjrso47IOuyjjsg4YSH4YWl4YaxOyDrso47IOGEh+GFpeGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQkVPTE0KK0JDOEY7QkM4RjsxMTA3IDExNjUgMTFCMjtCQzhGOzExMDcgMTE2NSAxMUIyOyAjICjrso87IOuyjzsg4YSH4YWl4YayOyDrso87IOGEh+GFpeGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQkVPTEIKK0JDOTA7QkM5MDsxMTA3IDExNjUgMTFCMztCQzkwOzExMDcgMTE2NSAxMUIzOyAjICjrspA7IOuykDsg4YSH4YWl4YazOyDrspA7IOGEh+GFpeGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQkVPTFMKK0JDOTE7QkM5MTsxMTA3IDExNjUgMTFCNDtCQzkxOzExMDcgMTE2NSAxMUI0OyAjICjrspE7IOuykTsg4YSH4YWl4Ya0OyDrspE7IOGEh+GFpeGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQkVPTFQKK0JDOTI7QkM5MjsxMTA3IDExNjUgMTFCNTtCQzkyOzExMDcgMTE2NSAxMUI1OyAjICjrspI7IOuykjsg4YSH4YWl4Ya1OyDrspI7IOGEh+GFpeGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQkVPTFAKK0JDOTM7QkM5MzsxMTA3IDExNjUgMTFCNjtCQzkzOzExMDcgMTE2NSAxMUI2OyAjICjrspM7IOuykzsg4YSH4YWl4Ya2OyDrspM7IOGEh+GFpeGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQkVPTEgKK0JDOTQ7QkM5NDsxMTA3IDExNjUgMTFCNztCQzk0OzExMDcgMTE2NSAxMUI3OyAjICjrspQ7IOuylDsg4YSH4YWl4Ya3OyDrspQ7IOGEh+GFpeGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQkVPTQorQkM5NTtCQzk1OzExMDcgMTE2NSAxMUI4O0JDOTU7MTEwNyAxMTY1IDExQjg7ICMgKOuylTsg67KVOyDhhIfhhaXhhrg7IOuylTsg4YSH4YWl4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBCRU9CCitCQzk2O0JDOTY7MTEwNyAxMTY1IDExQjk7QkM5NjsxMTA3IDExNjUgMTFCOTsgIyAo67KWOyDrspY7IOGEh+GFpeGGuTsg67KWOyDhhIfhhaXhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJFT0JTCitCQzk3O0JDOTc7MTEwNyAxMTY1IDExQkE7QkM5NzsxMTA3IDExNjUgMTFCQTsgIyAo67KXOyDrspc7IOGEh+GFpeGGujsg67KXOyDhhIfhhaXhhro7ICkgSEFOR1VMIFNZTExBQkxFIEJFT1MKK0JDOTg7QkM5ODsxMTA3IDExNjUgMTFCQjtCQzk4OzExMDcgMTE2NSAxMUJCOyAjICjrspg7IOuymDsg4YSH4YWl4Ya7OyDrspg7IOGEh+GFpeGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQkVPU1MKK0JDOTk7QkM5OTsxMTA3IDExNjUgMTFCQztCQzk5OzExMDcgMTE2NSAxMUJDOyAjICjrspk7IOuymTsg4YSH4YWl4Ya8OyDrspk7IOGEh+GFpeGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQkVPTkcKK0JDOUE7QkM5QTsxMTA3IDExNjUgMTFCRDtCQzlBOzExMDcgMTE2NSAxMUJEOyAjICjrspo7IOuymjsg4YSH4YWl4Ya9OyDrspo7IOGEh+GFpeGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQkVPSgorQkM5QjtCQzlCOzExMDcgMTE2NSAxMUJFO0JDOUI7MTEwNyAxMTY1IDExQkU7ICMgKOuymzsg67KbOyDhhIfhhaXhhr47IOuymzsg4YSH4YWl4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBCRU9DCitCQzlDO0JDOUM7MTEwNyAxMTY1IDExQkY7QkM5QzsxMTA3IDExNjUgMTFCRjsgIyAo67KcOyDrspw7IOGEh+GFpeGGvzsg67KcOyDhhIfhhaXhhr87ICkgSEFOR1VMIFNZTExBQkxFIEJFT0sKK0JDOUQ7QkM5RDsxMTA3IDExNjUgMTFDMDtCQzlEOzExMDcgMTE2NSAxMUMwOyAjICjrsp07IOuynTsg4YSH4YWl4YeAOyDrsp07IOGEh+GFpeGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQkVPVAorQkM5RTtCQzlFOzExMDcgMTE2NSAxMUMxO0JDOUU7MTEwNyAxMTY1IDExQzE7ICMgKOuynjsg67KeOyDhhIfhhaXhh4E7IOuynjsg4YSH4YWl4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBCRU9QCitCQzlGO0JDOUY7MTEwNyAxMTY1IDExQzI7QkM5RjsxMTA3IDExNjUgMTFDMjsgIyAo67KfOyDrsp87IOGEh+GFpeGHgjsg67KfOyDhhIfhhaXhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJFT0gKK0JDQTA7QkNBMDsxMTA3IDExNjY7QkNBMDsxMTA3IDExNjY7ICMgKOuyoDsg67KgOyDhhIfhhaY7IOuyoDsg4YSH4YWmOyApIEhBTkdVTCBTWUxMQUJMRSBCRQorQkNBMTtCQ0ExOzExMDcgMTE2NiAxMUE4O0JDQTE7MTEwNyAxMTY2IDExQTg7ICMgKOuyoTsg67KhOyDhhIfhhabhhqg7IOuyoTsg4YSH4YWm4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCRUcKK0JDQTI7QkNBMjsxMTA3IDExNjYgMTFBOTtCQ0EyOzExMDcgMTE2NiAxMUE5OyAjICjrsqI7IOuyojsg4YSH4YWm4YapOyDrsqI7IOGEh+GFpuGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQkVHRworQkNBMztCQ0EzOzExMDcgMTE2NiAxMUFBO0JDQTM7MTEwNyAxMTY2IDExQUE7ICMgKOuyozsg67KjOyDhhIfhhabhhqo7IOuyozsg4YSH4YWm4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBCRUdTCitCQ0E0O0JDQTQ7MTEwNyAxMTY2IDExQUI7QkNBNDsxMTA3IDExNjYgMTFBQjsgIyAo67KkOyDrsqQ7IOGEh+GFpuGGqzsg67KkOyDhhIfhhabhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJFTgorQkNBNTtCQ0E1OzExMDcgMTE2NiAxMUFDO0JDQTU7MTEwNyAxMTY2IDExQUM7ICMgKOuypTsg67KlOyDhhIfhhabhhqw7IOuypTsg4YSH4YWm4YasOyApIEhBTkdVTCBTWUxMQUJMRSBCRU5KCitCQ0E2O0JDQTY7MTEwNyAxMTY2IDExQUQ7QkNBNjsxMTA3IDExNjYgMTFBRDsgIyAo67KmOyDrsqY7IOGEh+GFpuGGrTsg67KmOyDhhIfhhabhhq07ICkgSEFOR1VMIFNZTExBQkxFIEJFTkgKK0JDQTc7QkNBNzsxMTA3IDExNjYgMTFBRTtCQ0E3OzExMDcgMTE2NiAxMUFFOyAjICjrsqc7IOuypzsg4YSH4YWm4YauOyDrsqc7IOGEh+GFpuGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQkVECitCQ0E4O0JDQTg7MTEwNyAxMTY2IDExQUY7QkNBODsxMTA3IDExNjYgMTFBRjsgIyAo67KoOyDrsqg7IOGEh+GFpuGGrzsg67KoOyDhhIfhhabhhq87ICkgSEFOR1VMIFNZTExBQkxFIEJFTAorQkNBOTtCQ0E5OzExMDcgMTE2NiAxMUIwO0JDQTk7MTEwNyAxMTY2IDExQjA7ICMgKOuyqTsg67KpOyDhhIfhhabhhrA7IOuyqTsg4YSH4YWm4YawOyApIEhBTkdVTCBTWUxMQUJMRSBCRUxHCitCQ0FBO0JDQUE7MTEwNyAxMTY2IDExQjE7QkNBQTsxMTA3IDExNjYgMTFCMTsgIyAo67KqOyDrsqo7IOGEh+GFpuGGsTsg67KqOyDhhIfhhabhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJFTE0KK0JDQUI7QkNBQjsxMTA3IDExNjYgMTFCMjtCQ0FCOzExMDcgMTE2NiAxMUIyOyAjICjrsqs7IOuyqzsg4YSH4YWm4YayOyDrsqs7IOGEh+GFpuGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQkVMQgorQkNBQztCQ0FDOzExMDcgMTE2NiAxMUIzO0JDQUM7MTEwNyAxMTY2IDExQjM7ICMgKOuyrDsg67KsOyDhhIfhhabhhrM7IOuyrDsg4YSH4YWm4YazOyApIEhBTkdVTCBTWUxMQUJMRSBCRUxTCitCQ0FEO0JDQUQ7MTEwNyAxMTY2IDExQjQ7QkNBRDsxMTA3IDExNjYgMTFCNDsgIyAo67KtOyDrsq07IOGEh+GFpuGGtDsg67KtOyDhhIfhhabhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJFTFQKK0JDQUU7QkNBRTsxMTA3IDExNjYgMTFCNTtCQ0FFOzExMDcgMTE2NiAxMUI1OyAjICjrsq47IOuyrjsg4YSH4YWm4Ya1OyDrsq47IOGEh+GFpuGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQkVMUAorQkNBRjtCQ0FGOzExMDcgMTE2NiAxMUI2O0JDQUY7MTEwNyAxMTY2IDExQjY7ICMgKOuyrzsg67KvOyDhhIfhhabhhrY7IOuyrzsg4YSH4YWm4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBCRUxICitCQ0IwO0JDQjA7MTEwNyAxMTY2IDExQjc7QkNCMDsxMTA3IDExNjYgMTFCNzsgIyAo67KwOyDrsrA7IOGEh+GFpuGGtzsg67KwOyDhhIfhhabhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJFTQorQkNCMTtCQ0IxOzExMDcgMTE2NiAxMUI4O0JDQjE7MTEwNyAxMTY2IDExQjg7ICMgKOuysTsg67KxOyDhhIfhhabhhrg7IOuysTsg4YSH4YWm4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBCRUIKK0JDQjI7QkNCMjsxMTA3IDExNjYgMTFCOTtCQ0IyOzExMDcgMTE2NiAxMUI5OyAjICjrsrI7IOuysjsg4YSH4YWm4Ya5OyDrsrI7IOGEh+GFpuGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQkVCUworQkNCMztCQ0IzOzExMDcgMTE2NiAxMUJBO0JDQjM7MTEwNyAxMTY2IDExQkE7ICMgKOuyszsg67KzOyDhhIfhhabhhro7IOuyszsg4YSH4YWm4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCRVMKK0JDQjQ7QkNCNDsxMTA3IDExNjYgMTFCQjtCQ0I0OzExMDcgMTE2NiAxMUJCOyAjICjrsrQ7IOuytDsg4YSH4YWm4Ya7OyDrsrQ7IOGEh+GFpuGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQkVTUworQkNCNTtCQ0I1OzExMDcgMTE2NiAxMUJDO0JDQjU7MTEwNyAxMTY2IDExQkM7ICMgKOuytTsg67K1OyDhhIfhhabhhrw7IOuytTsg4YSH4YWm4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBCRU5HCitCQ0I2O0JDQjY7MTEwNyAxMTY2IDExQkQ7QkNCNjsxMTA3IDExNjYgMTFCRDsgIyAo67K2OyDrsrY7IOGEh+GFpuGGvTsg67K2OyDhhIfhhabhhr07ICkgSEFOR1VMIFNZTExBQkxFIEJFSgorQkNCNztCQ0I3OzExMDcgMTE2NiAxMUJFO0JDQjc7MTEwNyAxMTY2IDExQkU7ICMgKOuytzsg67K3OyDhhIfhhabhhr47IOuytzsg4YSH4YWm4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBCRUMKK0JDQjg7QkNCODsxMTA3IDExNjYgMTFCRjtCQ0I4OzExMDcgMTE2NiAxMUJGOyAjICjrsrg7IOuyuDsg4YSH4YWm4Ya/OyDrsrg7IOGEh+GFpuGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQkVLCitCQ0I5O0JDQjk7MTEwNyAxMTY2IDExQzA7QkNCOTsxMTA3IDExNjYgMTFDMDsgIyAo67K5OyDrsrk7IOGEh+GFpuGHgDsg67K5OyDhhIfhhabhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJFVAorQkNCQTtCQ0JBOzExMDcgMTE2NiAxMUMxO0JDQkE7MTEwNyAxMTY2IDExQzE7ICMgKOuyujsg67K6OyDhhIfhhabhh4E7IOuyujsg4YSH4YWm4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBCRVAKK0JDQkI7QkNCQjsxMTA3IDExNjYgMTFDMjtCQ0JCOzExMDcgMTE2NiAxMUMyOyAjICjrsrs7IOuyuzsg4YSH4YWm4YeCOyDrsrs7IOGEh+GFpuGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQkVICitCQ0JDO0JDQkM7MTEwNyAxMTY3O0JDQkM7MTEwNyAxMTY3OyAjICjrsrw7IOuyvDsg4YSH4YWnOyDrsrw7IOGEh+GFpzsgKSBIQU5HVUwgU1lMTEFCTEUgQllFTworQkNCRDtCQ0JEOzExMDcgMTE2NyAxMUE4O0JDQkQ7MTEwNyAxMTY3IDExQTg7ICMgKOuyvTsg67K9OyDhhIfhhafhhqg7IOuyvTsg4YSH4YWn4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCWUVPRworQkNCRTtCQ0JFOzExMDcgMTE2NyAxMUE5O0JDQkU7MTEwNyAxMTY3IDExQTk7ICMgKOuyvjsg67K+OyDhhIfhhafhhqk7IOuyvjsg4YSH4YWn4YapOyApIEhBTkdVTCBTWUxMQUJMRSBCWUVPR0cKK0JDQkY7QkNCRjsxMTA3IDExNjcgMTFBQTtCQ0JGOzExMDcgMTE2NyAxMUFBOyAjICjrsr87IOuyvzsg4YSH4YWn4YaqOyDrsr87IOGEh+GFp+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQllFT0dTCitCQ0MwO0JDQzA7MTEwNyAxMTY3IDExQUI7QkNDMDsxMTA3IDExNjcgMTFBQjsgIyAo67OAOyDrs4A7IOGEh+GFp+GGqzsg67OAOyDhhIfhhafhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJZRU9OCitCQ0MxO0JDQzE7MTEwNyAxMTY3IDExQUM7QkNDMTsxMTA3IDExNjcgMTFBQzsgIyAo67OBOyDrs4E7IOGEh+GFp+GGrDsg67OBOyDhhIfhhafhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEJZRU9OSgorQkNDMjtCQ0MyOzExMDcgMTE2NyAxMUFEO0JDQzI7MTEwNyAxMTY3IDExQUQ7ICMgKOuzgjsg67OCOyDhhIfhhafhhq07IOuzgjsg4YSH4YWn4YatOyApIEhBTkdVTCBTWUxMQUJMRSBCWUVPTkgKK0JDQzM7QkNDMzsxMTA3IDExNjcgMTFBRTtCQ0MzOzExMDcgMTE2NyAxMUFFOyAjICjrs4M7IOuzgzsg4YSH4YWn4YauOyDrs4M7IOGEh+GFp+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQllFT0QKK0JDQzQ7QkNDNDsxMTA3IDExNjcgMTFBRjtCQ0M0OzExMDcgMTE2NyAxMUFGOyAjICjrs4Q7IOuzhDsg4YSH4YWn4YavOyDrs4Q7IOGEh+GFp+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQllFT0wKK0JDQzU7QkNDNTsxMTA3IDExNjcgMTFCMDtCQ0M1OzExMDcgMTE2NyAxMUIwOyAjICjrs4U7IOuzhTsg4YSH4YWn4YawOyDrs4U7IOGEh+GFp+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQllFT0xHCitCQ0M2O0JDQzY7MTEwNyAxMTY3IDExQjE7QkNDNjsxMTA3IDExNjcgMTFCMTsgIyAo67OGOyDrs4Y7IOGEh+GFp+GGsTsg67OGOyDhhIfhhafhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJZRU9MTQorQkNDNztCQ0M3OzExMDcgMTE2NyAxMUIyO0JDQzc7MTEwNyAxMTY3IDExQjI7ICMgKOuzhzsg67OHOyDhhIfhhafhhrI7IOuzhzsg4YSH4YWn4YayOyApIEhBTkdVTCBTWUxMQUJMRSBCWUVPTEIKK0JDQzg7QkNDODsxMTA3IDExNjcgMTFCMztCQ0M4OzExMDcgMTE2NyAxMUIzOyAjICjrs4g7IOuziDsg4YSH4YWn4YazOyDrs4g7IOGEh+GFp+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgQllFT0xTCitCQ0M5O0JDQzk7MTEwNyAxMTY3IDExQjQ7QkNDOTsxMTA3IDExNjcgMTFCNDsgIyAo67OJOyDrs4k7IOGEh+GFp+GGtDsg67OJOyDhhIfhhafhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJZRU9MVAorQkNDQTtCQ0NBOzExMDcgMTE2NyAxMUI1O0JDQ0E7MTEwNyAxMTY3IDExQjU7ICMgKOuzijsg67OKOyDhhIfhhafhhrU7IOuzijsg4YSH4YWn4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBCWUVPTFAKK0JDQ0I7QkNDQjsxMTA3IDExNjcgMTFCNjtCQ0NCOzExMDcgMTE2NyAxMUI2OyAjICjrs4s7IOuzizsg4YSH4YWn4Ya2OyDrs4s7IOGEh+GFp+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQllFT0xICitCQ0NDO0JDQ0M7MTEwNyAxMTY3IDExQjc7QkNDQzsxMTA3IDExNjcgMTFCNzsgIyAo67OMOyDrs4w7IOGEh+GFp+GGtzsg67OMOyDhhIfhhafhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJZRU9NCitCQ0NEO0JDQ0Q7MTEwNyAxMTY3IDExQjg7QkNDRDsxMTA3IDExNjcgMTFCODsgIyAo67ONOyDrs407IOGEh+GFp+GGuDsg67ONOyDhhIfhhafhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEJZRU9CCitCQ0NFO0JDQ0U7MTEwNyAxMTY3IDExQjk7QkNDRTsxMTA3IDExNjcgMTFCOTsgIyAo67OOOyDrs447IOGEh+GFp+GGuTsg67OOOyDhhIfhhafhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJZRU9CUworQkNDRjtCQ0NGOzExMDcgMTE2NyAxMUJBO0JDQ0Y7MTEwNyAxMTY3IDExQkE7ICMgKOuzjzsg67OPOyDhhIfhhafhhro7IOuzjzsg4YSH4YWn4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCWUVPUworQkNEMDtCQ0QwOzExMDcgMTE2NyAxMUJCO0JDRDA7MTEwNyAxMTY3IDExQkI7ICMgKOuzkDsg67OQOyDhhIfhhafhhrs7IOuzkDsg4YSH4YWn4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBCWUVPU1MKK0JDRDE7QkNEMTsxMTA3IDExNjcgMTFCQztCQ0QxOzExMDcgMTE2NyAxMUJDOyAjICjrs5E7IOuzkTsg4YSH4YWn4Ya8OyDrs5E7IOGEh+GFp+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQllFT05HCitCQ0QyO0JDRDI7MTEwNyAxMTY3IDExQkQ7QkNEMjsxMTA3IDExNjcgMTFCRDsgIyAo67OSOyDrs5I7IOGEh+GFp+GGvTsg67OSOyDhhIfhhafhhr07ICkgSEFOR1VMIFNZTExBQkxFIEJZRU9KCitCQ0QzO0JDRDM7MTEwNyAxMTY3IDExQkU7QkNEMzsxMTA3IDExNjcgMTFCRTsgIyAo67OTOyDrs5M7IOGEh+GFp+GGvjsg67OTOyDhhIfhhafhhr47ICkgSEFOR1VMIFNZTExBQkxFIEJZRU9DCitCQ0Q0O0JDRDQ7MTEwNyAxMTY3IDExQkY7QkNENDsxMTA3IDExNjcgMTFCRjsgIyAo67OUOyDrs5Q7IOGEh+GFp+GGvzsg67OUOyDhhIfhhafhhr87ICkgSEFOR1VMIFNZTExBQkxFIEJZRU9LCitCQ0Q1O0JDRDU7MTEwNyAxMTY3IDExQzA7QkNENTsxMTA3IDExNjcgMTFDMDsgIyAo67OVOyDrs5U7IOGEh+GFp+GHgDsg67OVOyDhhIfhhafhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJZRU9UCitCQ0Q2O0JDRDY7MTEwNyAxMTY3IDExQzE7QkNENjsxMTA3IDExNjcgMTFDMTsgIyAo67OWOyDrs5Y7IOGEh+GFp+GHgTsg67OWOyDhhIfhhafhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEJZRU9QCitCQ0Q3O0JDRDc7MTEwNyAxMTY3IDExQzI7QkNENzsxMTA3IDExNjcgMTFDMjsgIyAo67OXOyDrs5c7IOGEh+GFp+GHgjsg67OXOyDhhIfhhafhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJZRU9ICitCQ0Q4O0JDRDg7MTEwNyAxMTY4O0JDRDg7MTEwNyAxMTY4OyAjICjrs5g7IOuzmDsg4YSH4YWoOyDrs5g7IOGEh+GFqDsgKSBIQU5HVUwgU1lMTEFCTEUgQllFCitCQ0Q5O0JDRDk7MTEwNyAxMTY4IDExQTg7QkNEOTsxMTA3IDExNjggMTFBODsgIyAo67OZOyDrs5k7IOGEh+GFqOGGqDsg67OZOyDhhIfhhajhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEJZRUcKK0JDREE7QkNEQTsxMTA3IDExNjggMTFBOTtCQ0RBOzExMDcgMTE2OCAxMUE5OyAjICjrs5o7IOuzmjsg4YSH4YWo4YapOyDrs5o7IOGEh+GFqOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQllFR0cKK0JDREI7QkNEQjsxMTA3IDExNjggMTFBQTtCQ0RCOzExMDcgMTE2OCAxMUFBOyAjICjrs5s7IOuzmzsg4YSH4YWo4YaqOyDrs5s7IOGEh+GFqOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQllFR1MKK0JDREM7QkNEQzsxMTA3IDExNjggMTFBQjtCQ0RDOzExMDcgMTE2OCAxMUFCOyAjICjrs5w7IOuznDsg4YSH4YWo4YarOyDrs5w7IOGEh+GFqOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQllFTgorQkNERDtCQ0REOzExMDcgMTE2OCAxMUFDO0JDREQ7MTEwNyAxMTY4IDExQUM7ICMgKOuznTsg67OdOyDhhIfhhajhhqw7IOuznTsg4YSH4YWo4YasOyApIEhBTkdVTCBTWUxMQUJMRSBCWUVOSgorQkNERTtCQ0RFOzExMDcgMTE2OCAxMUFEO0JDREU7MTEwNyAxMTY4IDExQUQ7ICMgKOuznjsg67OeOyDhhIfhhajhhq07IOuznjsg4YSH4YWo4YatOyApIEhBTkdVTCBTWUxMQUJMRSBCWUVOSAorQkNERjtCQ0RGOzExMDcgMTE2OCAxMUFFO0JDREY7MTEwNyAxMTY4IDExQUU7ICMgKOuznzsg67OfOyDhhIfhhajhhq47IOuznzsg4YSH4YWo4YauOyApIEhBTkdVTCBTWUxMQUJMRSBCWUVECitCQ0UwO0JDRTA7MTEwNyAxMTY4IDExQUY7QkNFMDsxMTA3IDExNjggMTFBRjsgIyAo67OgOyDrs6A7IOGEh+GFqOGGrzsg67OgOyDhhIfhhajhhq87ICkgSEFOR1VMIFNZTExBQkxFIEJZRUwKK0JDRTE7QkNFMTsxMTA3IDExNjggMTFCMDtCQ0UxOzExMDcgMTE2OCAxMUIwOyAjICjrs6E7IOuzoTsg4YSH4YWo4YawOyDrs6E7IOGEh+GFqOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQllFTEcKK0JDRTI7QkNFMjsxMTA3IDExNjggMTFCMTtCQ0UyOzExMDcgMTE2OCAxMUIxOyAjICjrs6I7IOuzojsg4YSH4YWo4YaxOyDrs6I7IOGEh+GFqOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQllFTE0KK0JDRTM7QkNFMzsxMTA3IDExNjggMTFCMjtCQ0UzOzExMDcgMTE2OCAxMUIyOyAjICjrs6M7IOuzozsg4YSH4YWo4YayOyDrs6M7IOGEh+GFqOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQllFTEIKK0JDRTQ7QkNFNDsxMTA3IDExNjggMTFCMztCQ0U0OzExMDcgMTE2OCAxMUIzOyAjICjrs6Q7IOuzpDsg4YSH4YWo4YazOyDrs6Q7IOGEh+GFqOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQllFTFMKK0JDRTU7QkNFNTsxMTA3IDExNjggMTFCNDtCQ0U1OzExMDcgMTE2OCAxMUI0OyAjICjrs6U7IOuzpTsg4YSH4YWo4Ya0OyDrs6U7IOGEh+GFqOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQllFTFQKK0JDRTY7QkNFNjsxMTA3IDExNjggMTFCNTtCQ0U2OzExMDcgMTE2OCAxMUI1OyAjICjrs6Y7IOuzpjsg4YSH4YWo4Ya1OyDrs6Y7IOGEh+GFqOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQllFTFAKK0JDRTc7QkNFNzsxMTA3IDExNjggMTFCNjtCQ0U3OzExMDcgMTE2OCAxMUI2OyAjICjrs6c7IOuzpzsg4YSH4YWo4Ya2OyDrs6c7IOGEh+GFqOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQllFTEgKK0JDRTg7QkNFODsxMTA3IDExNjggMTFCNztCQ0U4OzExMDcgMTE2OCAxMUI3OyAjICjrs6g7IOuzqDsg4YSH4YWo4Ya3OyDrs6g7IOGEh+GFqOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQllFTQorQkNFOTtCQ0U5OzExMDcgMTE2OCAxMUI4O0JDRTk7MTEwNyAxMTY4IDExQjg7ICMgKOuzqTsg67OpOyDhhIfhhajhhrg7IOuzqTsg4YSH4YWo4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBCWUVCCitCQ0VBO0JDRUE7MTEwNyAxMTY4IDExQjk7QkNFQTsxMTA3IDExNjggMTFCOTsgIyAo67OqOyDrs6o7IOGEh+GFqOGGuTsg67OqOyDhhIfhhajhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJZRUJTCitCQ0VCO0JDRUI7MTEwNyAxMTY4IDExQkE7QkNFQjsxMTA3IDExNjggMTFCQTsgIyAo67OrOyDrs6s7IOGEh+GFqOGGujsg67OrOyDhhIfhhajhhro7ICkgSEFOR1VMIFNZTExBQkxFIEJZRVMKK0JDRUM7QkNFQzsxMTA3IDExNjggMTFCQjtCQ0VDOzExMDcgMTE2OCAxMUJCOyAjICjrs6w7IOuzrDsg4YSH4YWo4Ya7OyDrs6w7IOGEh+GFqOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQllFU1MKK0JDRUQ7QkNFRDsxMTA3IDExNjggMTFCQztCQ0VEOzExMDcgMTE2OCAxMUJDOyAjICjrs607IOuzrTsg4YSH4YWo4Ya8OyDrs607IOGEh+GFqOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQllFTkcKK0JDRUU7QkNFRTsxMTA3IDExNjggMTFCRDtCQ0VFOzExMDcgMTE2OCAxMUJEOyAjICjrs647IOuzrjsg4YSH4YWo4Ya9OyDrs647IOGEh+GFqOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQllFSgorQkNFRjtCQ0VGOzExMDcgMTE2OCAxMUJFO0JDRUY7MTEwNyAxMTY4IDExQkU7ICMgKOuzrzsg67OvOyDhhIfhhajhhr47IOuzrzsg4YSH4YWo4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBCWUVDCitCQ0YwO0JDRjA7MTEwNyAxMTY4IDExQkY7QkNGMDsxMTA3IDExNjggMTFCRjsgIyAo67OwOyDrs7A7IOGEh+GFqOGGvzsg67OwOyDhhIfhhajhhr87ICkgSEFOR1VMIFNZTExBQkxFIEJZRUsKK0JDRjE7QkNGMTsxMTA3IDExNjggMTFDMDtCQ0YxOzExMDcgMTE2OCAxMUMwOyAjICjrs7E7IOuzsTsg4YSH4YWo4YeAOyDrs7E7IOGEh+GFqOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQllFVAorQkNGMjtCQ0YyOzExMDcgMTE2OCAxMUMxO0JDRjI7MTEwNyAxMTY4IDExQzE7ICMgKOuzsjsg67OyOyDhhIfhhajhh4E7IOuzsjsg4YSH4YWo4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBCWUVQCitCQ0YzO0JDRjM7MTEwNyAxMTY4IDExQzI7QkNGMzsxMTA3IDExNjggMTFDMjsgIyAo67OzOyDrs7M7IOGEh+GFqOGHgjsg67OzOyDhhIfhhajhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJZRUgKK0JDRjQ7QkNGNDsxMTA3IDExNjk7QkNGNDsxMTA3IDExNjk7ICMgKOuztDsg67O0OyDhhIfhhak7IOuztDsg4YSH4YWpOyApIEhBTkdVTCBTWUxMQUJMRSBCTworQkNGNTtCQ0Y1OzExMDcgMTE2OSAxMUE4O0JDRjU7MTEwNyAxMTY5IDExQTg7ICMgKOuztTsg67O1OyDhhIfhhanhhqg7IOuztTsg4YSH4YWp4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCT0cKK0JDRjY7QkNGNjsxMTA3IDExNjkgMTFBOTtCQ0Y2OzExMDcgMTE2OSAxMUE5OyAjICjrs7Y7IOuztjsg4YSH4YWp4YapOyDrs7Y7IOGEh+GFqeGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQk9HRworQkNGNztCQ0Y3OzExMDcgMTE2OSAxMUFBO0JDRjc7MTEwNyAxMTY5IDExQUE7ICMgKOuztzsg67O3OyDhhIfhhanhhqo7IOuztzsg4YSH4YWp4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBCT0dTCitCQ0Y4O0JDRjg7MTEwNyAxMTY5IDExQUI7QkNGODsxMTA3IDExNjkgMTFBQjsgIyAo67O4OyDrs7g7IOGEh+GFqeGGqzsg67O4OyDhhIfhhanhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJPTgorQkNGOTtCQ0Y5OzExMDcgMTE2OSAxMUFDO0JDRjk7MTEwNyAxMTY5IDExQUM7ICMgKOuzuTsg67O5OyDhhIfhhanhhqw7IOuzuTsg4YSH4YWp4YasOyApIEhBTkdVTCBTWUxMQUJMRSBCT05KCitCQ0ZBO0JDRkE7MTEwNyAxMTY5IDExQUQ7QkNGQTsxMTA3IDExNjkgMTFBRDsgIyAo67O6OyDrs7o7IOGEh+GFqeGGrTsg67O6OyDhhIfhhanhhq07ICkgSEFOR1VMIFNZTExBQkxFIEJPTkgKK0JDRkI7QkNGQjsxMTA3IDExNjkgMTFBRTtCQ0ZCOzExMDcgMTE2OSAxMUFFOyAjICjrs7s7IOuzuzsg4YSH4YWp4YauOyDrs7s7IOGEh+GFqeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQk9ECitCQ0ZDO0JDRkM7MTEwNyAxMTY5IDExQUY7QkNGQzsxMTA3IDExNjkgMTFBRjsgIyAo67O8OyDrs7w7IOGEh+GFqeGGrzsg67O8OyDhhIfhhanhhq87ICkgSEFOR1VMIFNZTExBQkxFIEJPTAorQkNGRDtCQ0ZEOzExMDcgMTE2OSAxMUIwO0JDRkQ7MTEwNyAxMTY5IDExQjA7ICMgKOuzvTsg67O9OyDhhIfhhanhhrA7IOuzvTsg4YSH4YWp4YawOyApIEhBTkdVTCBTWUxMQUJMRSBCT0xHCitCQ0ZFO0JDRkU7MTEwNyAxMTY5IDExQjE7QkNGRTsxMTA3IDExNjkgMTFCMTsgIyAo67O+OyDrs747IOGEh+GFqeGGsTsg67O+OyDhhIfhhanhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJPTE0KK0JDRkY7QkNGRjsxMTA3IDExNjkgMTFCMjtCQ0ZGOzExMDcgMTE2OSAxMUIyOyAjICjrs787IOuzvzsg4YSH4YWp4YayOyDrs787IOGEh+GFqeGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQk9MQgorQkQwMDtCRDAwOzExMDcgMTE2OSAxMUIzO0JEMDA7MTEwNyAxMTY5IDExQjM7ICMgKOu0gDsg67SAOyDhhIfhhanhhrM7IOu0gDsg4YSH4YWp4YazOyApIEhBTkdVTCBTWUxMQUJMRSBCT0xTCitCRDAxO0JEMDE7MTEwNyAxMTY5IDExQjQ7QkQwMTsxMTA3IDExNjkgMTFCNDsgIyAo67SBOyDrtIE7IOGEh+GFqeGGtDsg67SBOyDhhIfhhanhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJPTFQKK0JEMDI7QkQwMjsxMTA3IDExNjkgMTFCNTtCRDAyOzExMDcgMTE2OSAxMUI1OyAjICjrtII7IOu0gjsg4YSH4YWp4Ya1OyDrtII7IOGEh+GFqeGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQk9MUAorQkQwMztCRDAzOzExMDcgMTE2OSAxMUI2O0JEMDM7MTEwNyAxMTY5IDExQjY7ICMgKOu0gzsg67SDOyDhhIfhhanhhrY7IOu0gzsg4YSH4YWp4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBCT0xICitCRDA0O0JEMDQ7MTEwNyAxMTY5IDExQjc7QkQwNDsxMTA3IDExNjkgMTFCNzsgIyAo67SEOyDrtIQ7IOGEh+GFqeGGtzsg67SEOyDhhIfhhanhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJPTQorQkQwNTtCRDA1OzExMDcgMTE2OSAxMUI4O0JEMDU7MTEwNyAxMTY5IDExQjg7ICMgKOu0hTsg67SFOyDhhIfhhanhhrg7IOu0hTsg4YSH4YWp4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBCT0IKK0JEMDY7QkQwNjsxMTA3IDExNjkgMTFCOTtCRDA2OzExMDcgMTE2OSAxMUI5OyAjICjrtIY7IOu0hjsg4YSH4YWp4Ya5OyDrtIY7IOGEh+GFqeGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQk9CUworQkQwNztCRDA3OzExMDcgMTE2OSAxMUJBO0JEMDc7MTEwNyAxMTY5IDExQkE7ICMgKOu0hzsg67SHOyDhhIfhhanhhro7IOu0hzsg4YSH4YWp4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCT1MKK0JEMDg7QkQwODsxMTA3IDExNjkgMTFCQjtCRDA4OzExMDcgMTE2OSAxMUJCOyAjICjrtIg7IOu0iDsg4YSH4YWp4Ya7OyDrtIg7IOGEh+GFqeGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQk9TUworQkQwOTtCRDA5OzExMDcgMTE2OSAxMUJDO0JEMDk7MTEwNyAxMTY5IDExQkM7ICMgKOu0iTsg67SJOyDhhIfhhanhhrw7IOu0iTsg4YSH4YWp4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBCT05HCitCRDBBO0JEMEE7MTEwNyAxMTY5IDExQkQ7QkQwQTsxMTA3IDExNjkgMTFCRDsgIyAo67SKOyDrtIo7IOGEh+GFqeGGvTsg67SKOyDhhIfhhanhhr07ICkgSEFOR1VMIFNZTExBQkxFIEJPSgorQkQwQjtCRDBCOzExMDcgMTE2OSAxMUJFO0JEMEI7MTEwNyAxMTY5IDExQkU7ICMgKOu0izsg67SLOyDhhIfhhanhhr47IOu0izsg4YSH4YWp4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBCT0MKK0JEMEM7QkQwQzsxMTA3IDExNjkgMTFCRjtCRDBDOzExMDcgMTE2OSAxMUJGOyAjICjrtIw7IOu0jDsg4YSH4YWp4Ya/OyDrtIw7IOGEh+GFqeGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQk9LCitCRDBEO0JEMEQ7MTEwNyAxMTY5IDExQzA7QkQwRDsxMTA3IDExNjkgMTFDMDsgIyAo67SNOyDrtI07IOGEh+GFqeGHgDsg67SNOyDhhIfhhanhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJPVAorQkQwRTtCRDBFOzExMDcgMTE2OSAxMUMxO0JEMEU7MTEwNyAxMTY5IDExQzE7ICMgKOu0jjsg67SOOyDhhIfhhanhh4E7IOu0jjsg4YSH4YWp4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBCT1AKK0JEMEY7QkQwRjsxMTA3IDExNjkgMTFDMjtCRDBGOzExMDcgMTE2OSAxMUMyOyAjICjrtI87IOu0jzsg4YSH4YWp4YeCOyDrtI87IOGEh+GFqeGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQk9ICitCRDEwO0JEMTA7MTEwNyAxMTZBO0JEMTA7MTEwNyAxMTZBOyAjICjrtJA7IOu0kDsg4YSH4YWqOyDrtJA7IOGEh+GFqjsgKSBIQU5HVUwgU1lMTEFCTEUgQldBCitCRDExO0JEMTE7MTEwNyAxMTZBIDExQTg7QkQxMTsxMTA3IDExNkEgMTFBODsgIyAo67SROyDrtJE7IOGEh+GFquGGqDsg67SROyDhhIfhharhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEJXQUcKK0JEMTI7QkQxMjsxMTA3IDExNkEgMTFBOTtCRDEyOzExMDcgMTE2QSAxMUE5OyAjICjrtJI7IOu0kjsg4YSH4YWq4YapOyDrtJI7IOGEh+GFquGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQldBR0cKK0JEMTM7QkQxMzsxMTA3IDExNkEgMTFBQTtCRDEzOzExMDcgMTE2QSAxMUFBOyAjICjrtJM7IOu0kzsg4YSH4YWq4YaqOyDrtJM7IOGEh+GFquGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQldBR1MKK0JEMTQ7QkQxNDsxMTA3IDExNkEgMTFBQjtCRDE0OzExMDcgMTE2QSAxMUFCOyAjICjrtJQ7IOu0lDsg4YSH4YWq4YarOyDrtJQ7IOGEh+GFquGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQldBTgorQkQxNTtCRDE1OzExMDcgMTE2QSAxMUFDO0JEMTU7MTEwNyAxMTZBIDExQUM7ICMgKOu0lTsg67SVOyDhhIfhharhhqw7IOu0lTsg4YSH4YWq4YasOyApIEhBTkdVTCBTWUxMQUJMRSBCV0FOSgorQkQxNjtCRDE2OzExMDcgMTE2QSAxMUFEO0JEMTY7MTEwNyAxMTZBIDExQUQ7ICMgKOu0ljsg67SWOyDhhIfhharhhq07IOu0ljsg4YSH4YWq4YatOyApIEhBTkdVTCBTWUxMQUJMRSBCV0FOSAorQkQxNztCRDE3OzExMDcgMTE2QSAxMUFFO0JEMTc7MTEwNyAxMTZBIDExQUU7ICMgKOu0lzsg67SXOyDhhIfhharhhq47IOu0lzsg4YSH4YWq4YauOyApIEhBTkdVTCBTWUxMQUJMRSBCV0FECitCRDE4O0JEMTg7MTEwNyAxMTZBIDExQUY7QkQxODsxMTA3IDExNkEgMTFBRjsgIyAo67SYOyDrtJg7IOGEh+GFquGGrzsg67SYOyDhhIfhharhhq87ICkgSEFOR1VMIFNZTExBQkxFIEJXQUwKK0JEMTk7QkQxOTsxMTA3IDExNkEgMTFCMDtCRDE5OzExMDcgMTE2QSAxMUIwOyAjICjrtJk7IOu0mTsg4YSH4YWq4YawOyDrtJk7IOGEh+GFquGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQldBTEcKK0JEMUE7QkQxQTsxMTA3IDExNkEgMTFCMTtCRDFBOzExMDcgMTE2QSAxMUIxOyAjICjrtJo7IOu0mjsg4YSH4YWq4YaxOyDrtJo7IOGEh+GFquGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQldBTE0KK0JEMUI7QkQxQjsxMTA3IDExNkEgMTFCMjtCRDFCOzExMDcgMTE2QSAxMUIyOyAjICjrtJs7IOu0mzsg4YSH4YWq4YayOyDrtJs7IOGEh+GFquGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQldBTEIKK0JEMUM7QkQxQzsxMTA3IDExNkEgMTFCMztCRDFDOzExMDcgMTE2QSAxMUIzOyAjICjrtJw7IOu0nDsg4YSH4YWq4YazOyDrtJw7IOGEh+GFquGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQldBTFMKK0JEMUQ7QkQxRDsxMTA3IDExNkEgMTFCNDtCRDFEOzExMDcgMTE2QSAxMUI0OyAjICjrtJ07IOu0nTsg4YSH4YWq4Ya0OyDrtJ07IOGEh+GFquGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQldBTFQKK0JEMUU7QkQxRTsxMTA3IDExNkEgMTFCNTtCRDFFOzExMDcgMTE2QSAxMUI1OyAjICjrtJ47IOu0njsg4YSH4YWq4Ya1OyDrtJ47IOGEh+GFquGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQldBTFAKK0JEMUY7QkQxRjsxMTA3IDExNkEgMTFCNjtCRDFGOzExMDcgMTE2QSAxMUI2OyAjICjrtJ87IOu0nzsg4YSH4YWq4Ya2OyDrtJ87IOGEh+GFquGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQldBTEgKK0JEMjA7QkQyMDsxMTA3IDExNkEgMTFCNztCRDIwOzExMDcgMTE2QSAxMUI3OyAjICjrtKA7IOu0oDsg4YSH4YWq4Ya3OyDrtKA7IOGEh+GFquGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQldBTQorQkQyMTtCRDIxOzExMDcgMTE2QSAxMUI4O0JEMjE7MTEwNyAxMTZBIDExQjg7ICMgKOu0oTsg67ShOyDhhIfhharhhrg7IOu0oTsg4YSH4YWq4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBCV0FCCitCRDIyO0JEMjI7MTEwNyAxMTZBIDExQjk7QkQyMjsxMTA3IDExNkEgMTFCOTsgIyAo67SiOyDrtKI7IOGEh+GFquGGuTsg67SiOyDhhIfhharhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJXQUJTCitCRDIzO0JEMjM7MTEwNyAxMTZBIDExQkE7QkQyMzsxMTA3IDExNkEgMTFCQTsgIyAo67SjOyDrtKM7IOGEh+GFquGGujsg67SjOyDhhIfhharhhro7ICkgSEFOR1VMIFNZTExBQkxFIEJXQVMKK0JEMjQ7QkQyNDsxMTA3IDExNkEgMTFCQjtCRDI0OzExMDcgMTE2QSAxMUJCOyAjICjrtKQ7IOu0pDsg4YSH4YWq4Ya7OyDrtKQ7IOGEh+GFquGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQldBU1MKK0JEMjU7QkQyNTsxMTA3IDExNkEgMTFCQztCRDI1OzExMDcgMTE2QSAxMUJDOyAjICjrtKU7IOu0pTsg4YSH4YWq4Ya8OyDrtKU7IOGEh+GFquGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQldBTkcKK0JEMjY7QkQyNjsxMTA3IDExNkEgMTFCRDtCRDI2OzExMDcgMTE2QSAxMUJEOyAjICjrtKY7IOu0pjsg4YSH4YWq4Ya9OyDrtKY7IOGEh+GFquGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQldBSgorQkQyNztCRDI3OzExMDcgMTE2QSAxMUJFO0JEMjc7MTEwNyAxMTZBIDExQkU7ICMgKOu0pzsg67SnOyDhhIfhharhhr47IOu0pzsg4YSH4YWq4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBCV0FDCitCRDI4O0JEMjg7MTEwNyAxMTZBIDExQkY7QkQyODsxMTA3IDExNkEgMTFCRjsgIyAo67SoOyDrtKg7IOGEh+GFquGGvzsg67SoOyDhhIfhharhhr87ICkgSEFOR1VMIFNZTExBQkxFIEJXQUsKK0JEMjk7QkQyOTsxMTA3IDExNkEgMTFDMDtCRDI5OzExMDcgMTE2QSAxMUMwOyAjICjrtKk7IOu0qTsg4YSH4YWq4YeAOyDrtKk7IOGEh+GFquGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQldBVAorQkQyQTtCRDJBOzExMDcgMTE2QSAxMUMxO0JEMkE7MTEwNyAxMTZBIDExQzE7ICMgKOu0qjsg67SqOyDhhIfhharhh4E7IOu0qjsg4YSH4YWq4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBCV0FQCitCRDJCO0JEMkI7MTEwNyAxMTZBIDExQzI7QkQyQjsxMTA3IDExNkEgMTFDMjsgIyAo67SrOyDrtKs7IOGEh+GFquGHgjsg67SrOyDhhIfhharhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJXQUgKK0JEMkM7QkQyQzsxMTA3IDExNkI7QkQyQzsxMTA3IDExNkI7ICMgKOu0rDsg67SsOyDhhIfhhas7IOu0rDsg4YSH4YWrOyApIEhBTkdVTCBTWUxMQUJMRSBCV0FFCitCRDJEO0JEMkQ7MTEwNyAxMTZCIDExQTg7QkQyRDsxMTA3IDExNkIgMTFBODsgIyAo67StOyDrtK07IOGEh+GFq+GGqDsg67StOyDhhIfhhavhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEJXQUVHCitCRDJFO0JEMkU7MTEwNyAxMTZCIDExQTk7QkQyRTsxMTA3IDExNkIgMTFBOTsgIyAo67SuOyDrtK47IOGEh+GFq+GGqTsg67SuOyDhhIfhhavhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEJXQUVHRworQkQyRjtCRDJGOzExMDcgMTE2QiAxMUFBO0JEMkY7MTEwNyAxMTZCIDExQUE7ICMgKOu0rzsg67SvOyDhhIfhhavhhqo7IOu0rzsg4YSH4YWr4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBCV0FFR1MKK0JEMzA7QkQzMDsxMTA3IDExNkIgMTFBQjtCRDMwOzExMDcgMTE2QiAxMUFCOyAjICjrtLA7IOu0sDsg4YSH4YWr4YarOyDrtLA7IOGEh+GFq+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQldBRU4KK0JEMzE7QkQzMTsxMTA3IDExNkIgMTFBQztCRDMxOzExMDcgMTE2QiAxMUFDOyAjICjrtLE7IOu0sTsg4YSH4YWr4YasOyDrtLE7IOGEh+GFq+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgQldBRU5KCitCRDMyO0JEMzI7MTEwNyAxMTZCIDExQUQ7QkQzMjsxMTA3IDExNkIgMTFBRDsgIyAo67SyOyDrtLI7IOGEh+GFq+GGrTsg67SyOyDhhIfhhavhhq07ICkgSEFOR1VMIFNZTExBQkxFIEJXQUVOSAorQkQzMztCRDMzOzExMDcgMTE2QiAxMUFFO0JEMzM7MTEwNyAxMTZCIDExQUU7ICMgKOu0szsg67SzOyDhhIfhhavhhq47IOu0szsg4YSH4YWr4YauOyApIEhBTkdVTCBTWUxMQUJMRSBCV0FFRAorQkQzNDtCRDM0OzExMDcgMTE2QiAxMUFGO0JEMzQ7MTEwNyAxMTZCIDExQUY7ICMgKOu0tDsg67S0OyDhhIfhhavhhq87IOu0tDsg4YSH4YWr4YavOyApIEhBTkdVTCBTWUxMQUJMRSBCV0FFTAorQkQzNTtCRDM1OzExMDcgMTE2QiAxMUIwO0JEMzU7MTEwNyAxMTZCIDExQjA7ICMgKOu0tTsg67S1OyDhhIfhhavhhrA7IOu0tTsg4YSH4YWr4YawOyApIEhBTkdVTCBTWUxMQUJMRSBCV0FFTEcKK0JEMzY7QkQzNjsxMTA3IDExNkIgMTFCMTtCRDM2OzExMDcgMTE2QiAxMUIxOyAjICjrtLY7IOu0tjsg4YSH4YWr4YaxOyDrtLY7IOGEh+GFq+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQldBRUxNCitCRDM3O0JEMzc7MTEwNyAxMTZCIDExQjI7QkQzNzsxMTA3IDExNkIgMTFCMjsgIyAo67S3OyDrtLc7IOGEh+GFq+GGsjsg67S3OyDhhIfhhavhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEJXQUVMQgorQkQzODtCRDM4OzExMDcgMTE2QiAxMUIzO0JEMzg7MTEwNyAxMTZCIDExQjM7ICMgKOu0uDsg67S4OyDhhIfhhavhhrM7IOu0uDsg4YSH4YWr4YazOyApIEhBTkdVTCBTWUxMQUJMRSBCV0FFTFMKK0JEMzk7QkQzOTsxMTA3IDExNkIgMTFCNDtCRDM5OzExMDcgMTE2QiAxMUI0OyAjICjrtLk7IOu0uTsg4YSH4YWr4Ya0OyDrtLk7IOGEh+GFq+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQldBRUxUCitCRDNBO0JEM0E7MTEwNyAxMTZCIDExQjU7QkQzQTsxMTA3IDExNkIgMTFCNTsgIyAo67S6OyDrtLo7IOGEh+GFq+GGtTsg67S6OyDhhIfhhavhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEJXQUVMUAorQkQzQjtCRDNCOzExMDcgMTE2QiAxMUI2O0JEM0I7MTEwNyAxMTZCIDExQjY7ICMgKOu0uzsg67S7OyDhhIfhhavhhrY7IOu0uzsg4YSH4YWr4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBCV0FFTEgKK0JEM0M7QkQzQzsxMTA3IDExNkIgMTFCNztCRDNDOzExMDcgMTE2QiAxMUI3OyAjICjrtLw7IOu0vDsg4YSH4YWr4Ya3OyDrtLw7IOGEh+GFq+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQldBRU0KK0JEM0Q7QkQzRDsxMTA3IDExNkIgMTFCODtCRDNEOzExMDcgMTE2QiAxMUI4OyAjICjrtL07IOu0vTsg4YSH4YWr4Ya4OyDrtL07IOGEh+GFq+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgQldBRUIKK0JEM0U7QkQzRTsxMTA3IDExNkIgMTFCOTtCRDNFOzExMDcgMTE2QiAxMUI5OyAjICjrtL47IOu0vjsg4YSH4YWr4Ya5OyDrtL47IOGEh+GFq+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQldBRUJTCitCRDNGO0JEM0Y7MTEwNyAxMTZCIDExQkE7QkQzRjsxMTA3IDExNkIgMTFCQTsgIyAo67S/OyDrtL87IOGEh+GFq+GGujsg67S/OyDhhIfhhavhhro7ICkgSEFOR1VMIFNZTExBQkxFIEJXQUVTCitCRDQwO0JENDA7MTEwNyAxMTZCIDExQkI7QkQ0MDsxMTA3IDExNkIgMTFCQjsgIyAo67WAOyDrtYA7IOGEh+GFq+GGuzsg67WAOyDhhIfhhavhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEJXQUVTUworQkQ0MTtCRDQxOzExMDcgMTE2QiAxMUJDO0JENDE7MTEwNyAxMTZCIDExQkM7ICMgKOu1gTsg67WBOyDhhIfhhavhhrw7IOu1gTsg4YSH4YWr4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBCV0FFTkcKK0JENDI7QkQ0MjsxMTA3IDExNkIgMTFCRDtCRDQyOzExMDcgMTE2QiAxMUJEOyAjICjrtYI7IOu1gjsg4YSH4YWr4Ya9OyDrtYI7IOGEh+GFq+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQldBRUoKK0JENDM7QkQ0MzsxMTA3IDExNkIgMTFCRTtCRDQzOzExMDcgMTE2QiAxMUJFOyAjICjrtYM7IOu1gzsg4YSH4YWr4Ya+OyDrtYM7IOGEh+GFq+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgQldBRUMKK0JENDQ7QkQ0NDsxMTA3IDExNkIgMTFCRjtCRDQ0OzExMDcgMTE2QiAxMUJGOyAjICjrtYQ7IOu1hDsg4YSH4YWr4Ya/OyDrtYQ7IOGEh+GFq+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQldBRUsKK0JENDU7QkQ0NTsxMTA3IDExNkIgMTFDMDtCRDQ1OzExMDcgMTE2QiAxMUMwOyAjICjrtYU7IOu1hTsg4YSH4YWr4YeAOyDrtYU7IOGEh+GFq+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQldBRVQKK0JENDY7QkQ0NjsxMTA3IDExNkIgMTFDMTtCRDQ2OzExMDcgMTE2QiAxMUMxOyAjICjrtYY7IOu1hjsg4YSH4YWr4YeBOyDrtYY7IOGEh+GFq+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgQldBRVAKK0JENDc7QkQ0NzsxMTA3IDExNkIgMTFDMjtCRDQ3OzExMDcgMTE2QiAxMUMyOyAjICjrtYc7IOu1hzsg4YSH4YWr4YeCOyDrtYc7IOGEh+GFq+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQldBRUgKK0JENDg7QkQ0ODsxMTA3IDExNkM7QkQ0ODsxMTA3IDExNkM7ICMgKOu1iDsg67WIOyDhhIfhhaw7IOu1iDsg4YSH4YWsOyApIEhBTkdVTCBTWUxMQUJMRSBCT0UKK0JENDk7QkQ0OTsxMTA3IDExNkMgMTFBODtCRDQ5OzExMDcgMTE2QyAxMUE4OyAjICjrtYk7IOu1iTsg4YSH4YWs4YaoOyDrtYk7IOGEh+GFrOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgQk9FRworQkQ0QTtCRDRBOzExMDcgMTE2QyAxMUE5O0JENEE7MTEwNyAxMTZDIDExQTk7ICMgKOu1ijsg67WKOyDhhIfhhazhhqk7IOu1ijsg4YSH4YWs4YapOyApIEhBTkdVTCBTWUxMQUJMRSBCT0VHRworQkQ0QjtCRDRCOzExMDcgMTE2QyAxMUFBO0JENEI7MTEwNyAxMTZDIDExQUE7ICMgKOu1izsg67WLOyDhhIfhhazhhqo7IOu1izsg4YSH4YWs4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBCT0VHUworQkQ0QztCRDRDOzExMDcgMTE2QyAxMUFCO0JENEM7MTEwNyAxMTZDIDExQUI7ICMgKOu1jDsg67WMOyDhhIfhhazhhqs7IOu1jDsg4YSH4YWs4YarOyApIEhBTkdVTCBTWUxMQUJMRSBCT0VOCitCRDREO0JENEQ7MTEwNyAxMTZDIDExQUM7QkQ0RDsxMTA3IDExNkMgMTFBQzsgIyAo67WNOyDrtY07IOGEh+GFrOGGrDsg67WNOyDhhIfhhazhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEJPRU5KCitCRDRFO0JENEU7MTEwNyAxMTZDIDExQUQ7QkQ0RTsxMTA3IDExNkMgMTFBRDsgIyAo67WOOyDrtY47IOGEh+GFrOGGrTsg67WOOyDhhIfhhazhhq07ICkgSEFOR1VMIFNZTExBQkxFIEJPRU5ICitCRDRGO0JENEY7MTEwNyAxMTZDIDExQUU7QkQ0RjsxMTA3IDExNkMgMTFBRTsgIyAo67WPOyDrtY87IOGEh+GFrOGGrjsg67WPOyDhhIfhhazhhq47ICkgSEFOR1VMIFNZTExBQkxFIEJPRUQKK0JENTA7QkQ1MDsxMTA3IDExNkMgMTFBRjtCRDUwOzExMDcgMTE2QyAxMUFGOyAjICjrtZA7IOu1kDsg4YSH4YWs4YavOyDrtZA7IOGEh+GFrOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQk9FTAorQkQ1MTtCRDUxOzExMDcgMTE2QyAxMUIwO0JENTE7MTEwNyAxMTZDIDExQjA7ICMgKOu1kTsg67WROyDhhIfhhazhhrA7IOu1kTsg4YSH4YWs4YawOyApIEhBTkdVTCBTWUxMQUJMRSBCT0VMRworQkQ1MjtCRDUyOzExMDcgMTE2QyAxMUIxO0JENTI7MTEwNyAxMTZDIDExQjE7ICMgKOu1kjsg67WSOyDhhIfhhazhhrE7IOu1kjsg4YSH4YWs4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBCT0VMTQorQkQ1MztCRDUzOzExMDcgMTE2QyAxMUIyO0JENTM7MTEwNyAxMTZDIDExQjI7ICMgKOu1kzsg67WTOyDhhIfhhazhhrI7IOu1kzsg4YSH4YWs4YayOyApIEhBTkdVTCBTWUxMQUJMRSBCT0VMQgorQkQ1NDtCRDU0OzExMDcgMTE2QyAxMUIzO0JENTQ7MTEwNyAxMTZDIDExQjM7ICMgKOu1lDsg67WUOyDhhIfhhazhhrM7IOu1lDsg4YSH4YWs4YazOyApIEhBTkdVTCBTWUxMQUJMRSBCT0VMUworQkQ1NTtCRDU1OzExMDcgMTE2QyAxMUI0O0JENTU7MTEwNyAxMTZDIDExQjQ7ICMgKOu1lTsg67WVOyDhhIfhhazhhrQ7IOu1lTsg4YSH4YWs4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBCT0VMVAorQkQ1NjtCRDU2OzExMDcgMTE2QyAxMUI1O0JENTY7MTEwNyAxMTZDIDExQjU7ICMgKOu1ljsg67WWOyDhhIfhhazhhrU7IOu1ljsg4YSH4YWs4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBCT0VMUAorQkQ1NztCRDU3OzExMDcgMTE2QyAxMUI2O0JENTc7MTEwNyAxMTZDIDExQjY7ICMgKOu1lzsg67WXOyDhhIfhhazhhrY7IOu1lzsg4YSH4YWs4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBCT0VMSAorQkQ1ODtCRDU4OzExMDcgMTE2QyAxMUI3O0JENTg7MTEwNyAxMTZDIDExQjc7ICMgKOu1mDsg67WYOyDhhIfhhazhhrc7IOu1mDsg4YSH4YWs4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBCT0VNCitCRDU5O0JENTk7MTEwNyAxMTZDIDExQjg7QkQ1OTsxMTA3IDExNkMgMTFCODsgIyAo67WZOyDrtZk7IOGEh+GFrOGGuDsg67WZOyDhhIfhhazhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEJPRUIKK0JENUE7QkQ1QTsxMTA3IDExNkMgMTFCOTtCRDVBOzExMDcgMTE2QyAxMUI5OyAjICjrtZo7IOu1mjsg4YSH4YWs4Ya5OyDrtZo7IOGEh+GFrOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQk9FQlMKK0JENUI7QkQ1QjsxMTA3IDExNkMgMTFCQTtCRDVCOzExMDcgMTE2QyAxMUJBOyAjICjrtZs7IOu1mzsg4YSH4YWs4Ya6OyDrtZs7IOGEh+GFrOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgQk9FUworQkQ1QztCRDVDOzExMDcgMTE2QyAxMUJCO0JENUM7MTEwNyAxMTZDIDExQkI7ICMgKOu1nDsg67WcOyDhhIfhhazhhrs7IOu1nDsg4YSH4YWs4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBCT0VTUworQkQ1RDtCRDVEOzExMDcgMTE2QyAxMUJDO0JENUQ7MTEwNyAxMTZDIDExQkM7ICMgKOu1nTsg67WdOyDhhIfhhazhhrw7IOu1nTsg4YSH4YWs4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBCT0VORworQkQ1RTtCRDVFOzExMDcgMTE2QyAxMUJEO0JENUU7MTEwNyAxMTZDIDExQkQ7ICMgKOu1njsg67WeOyDhhIfhhazhhr07IOu1njsg4YSH4YWs4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBCT0VKCitCRDVGO0JENUY7MTEwNyAxMTZDIDExQkU7QkQ1RjsxMTA3IDExNkMgMTFCRTsgIyAo67WfOyDrtZ87IOGEh+GFrOGGvjsg67WfOyDhhIfhhazhhr47ICkgSEFOR1VMIFNZTExBQkxFIEJPRUMKK0JENjA7QkQ2MDsxMTA3IDExNkMgMTFCRjtCRDYwOzExMDcgMTE2QyAxMUJGOyAjICjrtaA7IOu1oDsg4YSH4YWs4Ya/OyDrtaA7IOGEh+GFrOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQk9FSworQkQ2MTtCRDYxOzExMDcgMTE2QyAxMUMwO0JENjE7MTEwNyAxMTZDIDExQzA7ICMgKOu1oTsg67WhOyDhhIfhhazhh4A7IOu1oTsg4YSH4YWs4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBCT0VUCitCRDYyO0JENjI7MTEwNyAxMTZDIDExQzE7QkQ2MjsxMTA3IDExNkMgMTFDMTsgIyAo67WiOyDrtaI7IOGEh+GFrOGHgTsg67WiOyDhhIfhhazhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEJPRVAKK0JENjM7QkQ2MzsxMTA3IDExNkMgMTFDMjtCRDYzOzExMDcgMTE2QyAxMUMyOyAjICjrtaM7IOu1ozsg4YSH4YWs4YeCOyDrtaM7IOGEh+GFrOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQk9FSAorQkQ2NDtCRDY0OzExMDcgMTE2RDtCRDY0OzExMDcgMTE2RDsgIyAo67WkOyDrtaQ7IOGEh+GFrTsg67WkOyDhhIfhha07ICkgSEFOR1VMIFNZTExBQkxFIEJZTworQkQ2NTtCRDY1OzExMDcgMTE2RCAxMUE4O0JENjU7MTEwNyAxMTZEIDExQTg7ICMgKOu1pTsg67WlOyDhhIfhha3hhqg7IOu1pTsg4YSH4YWt4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCWU9HCitCRDY2O0JENjY7MTEwNyAxMTZEIDExQTk7QkQ2NjsxMTA3IDExNkQgMTFBOTsgIyAo67WmOyDrtaY7IOGEh+GFreGGqTsg67WmOyDhhIfhha3hhqk7ICkgSEFOR1VMIFNZTExBQkxFIEJZT0dHCitCRDY3O0JENjc7MTEwNyAxMTZEIDExQUE7QkQ2NzsxMTA3IDExNkQgMTFBQTsgIyAo67WnOyDrtac7IOGEh+GFreGGqjsg67WnOyDhhIfhha3hhqo7ICkgSEFOR1VMIFNZTExBQkxFIEJZT0dTCitCRDY4O0JENjg7MTEwNyAxMTZEIDExQUI7QkQ2ODsxMTA3IDExNkQgMTFBQjsgIyAo67WoOyDrtag7IOGEh+GFreGGqzsg67WoOyDhhIfhha3hhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJZT04KK0JENjk7QkQ2OTsxMTA3IDExNkQgMTFBQztCRDY5OzExMDcgMTE2RCAxMUFDOyAjICjrtak7IOu1qTsg4YSH4YWt4YasOyDrtak7IOGEh+GFreGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgQllPTkoKK0JENkE7QkQ2QTsxMTA3IDExNkQgMTFBRDtCRDZBOzExMDcgMTE2RCAxMUFEOyAjICjrtao7IOu1qjsg4YSH4YWt4YatOyDrtao7IOGEh+GFreGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgQllPTkgKK0JENkI7QkQ2QjsxMTA3IDExNkQgMTFBRTtCRDZCOzExMDcgMTE2RCAxMUFFOyAjICjrtas7IOu1qzsg4YSH4YWt4YauOyDrtas7IOGEh+GFreGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQllPRAorQkQ2QztCRDZDOzExMDcgMTE2RCAxMUFGO0JENkM7MTEwNyAxMTZEIDExQUY7ICMgKOu1rDsg67WsOyDhhIfhha3hhq87IOu1rDsg4YSH4YWt4YavOyApIEhBTkdVTCBTWUxMQUJMRSBCWU9MCitCRDZEO0JENkQ7MTEwNyAxMTZEIDExQjA7QkQ2RDsxMTA3IDExNkQgMTFCMDsgIyAo67WtOyDrta07IOGEh+GFreGGsDsg67WtOyDhhIfhha3hhrA7ICkgSEFOR1VMIFNZTExBQkxFIEJZT0xHCitCRDZFO0JENkU7MTEwNyAxMTZEIDExQjE7QkQ2RTsxMTA3IDExNkQgMTFCMTsgIyAo67WuOyDrta47IOGEh+GFreGGsTsg67WuOyDhhIfhha3hhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJZT0xNCitCRDZGO0JENkY7MTEwNyAxMTZEIDExQjI7QkQ2RjsxMTA3IDExNkQgMTFCMjsgIyAo67WvOyDrta87IOGEh+GFreGGsjsg67WvOyDhhIfhha3hhrI7ICkgSEFOR1VMIFNZTExBQkxFIEJZT0xCCitCRDcwO0JENzA7MTEwNyAxMTZEIDExQjM7QkQ3MDsxMTA3IDExNkQgMTFCMzsgIyAo67WwOyDrtbA7IOGEh+GFreGGszsg67WwOyDhhIfhha3hhrM7ICkgSEFOR1VMIFNZTExBQkxFIEJZT0xTCitCRDcxO0JENzE7MTEwNyAxMTZEIDExQjQ7QkQ3MTsxMTA3IDExNkQgMTFCNDsgIyAo67WxOyDrtbE7IOGEh+GFreGGtDsg67WxOyDhhIfhha3hhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJZT0xUCitCRDcyO0JENzI7MTEwNyAxMTZEIDExQjU7QkQ3MjsxMTA3IDExNkQgMTFCNTsgIyAo67WyOyDrtbI7IOGEh+GFreGGtTsg67WyOyDhhIfhha3hhrU7ICkgSEFOR1VMIFNZTExBQkxFIEJZT0xQCitCRDczO0JENzM7MTEwNyAxMTZEIDExQjY7QkQ3MzsxMTA3IDExNkQgMTFCNjsgIyAo67WzOyDrtbM7IOGEh+GFreGGtjsg67WzOyDhhIfhha3hhrY7ICkgSEFOR1VMIFNZTExBQkxFIEJZT0xICitCRDc0O0JENzQ7MTEwNyAxMTZEIDExQjc7QkQ3NDsxMTA3IDExNkQgMTFCNzsgIyAo67W0OyDrtbQ7IOGEh+GFreGGtzsg67W0OyDhhIfhha3hhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJZT00KK0JENzU7QkQ3NTsxMTA3IDExNkQgMTFCODtCRDc1OzExMDcgMTE2RCAxMUI4OyAjICjrtbU7IOu1tTsg4YSH4YWt4Ya4OyDrtbU7IOGEh+GFreGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgQllPQgorQkQ3NjtCRDc2OzExMDcgMTE2RCAxMUI5O0JENzY7MTEwNyAxMTZEIDExQjk7ICMgKOu1tjsg67W2OyDhhIfhha3hhrk7IOu1tjsg4YSH4YWt4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBCWU9CUworQkQ3NztCRDc3OzExMDcgMTE2RCAxMUJBO0JENzc7MTEwNyAxMTZEIDExQkE7ICMgKOu1tzsg67W3OyDhhIfhha3hhro7IOu1tzsg4YSH4YWt4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCWU9TCitCRDc4O0JENzg7MTEwNyAxMTZEIDExQkI7QkQ3ODsxMTA3IDExNkQgMTFCQjsgIyAo67W4OyDrtbg7IOGEh+GFreGGuzsg67W4OyDhhIfhha3hhrs7ICkgSEFOR1VMIFNZTExBQkxFIEJZT1NTCitCRDc5O0JENzk7MTEwNyAxMTZEIDExQkM7QkQ3OTsxMTA3IDExNkQgMTFCQzsgIyAo67W5OyDrtbk7IOGEh+GFreGGvDsg67W5OyDhhIfhha3hhrw7ICkgSEFOR1VMIFNZTExBQkxFIEJZT05HCitCRDdBO0JEN0E7MTEwNyAxMTZEIDExQkQ7QkQ3QTsxMTA3IDExNkQgMTFCRDsgIyAo67W6OyDrtbo7IOGEh+GFreGGvTsg67W6OyDhhIfhha3hhr07ICkgSEFOR1VMIFNZTExBQkxFIEJZT0oKK0JEN0I7QkQ3QjsxMTA3IDExNkQgMTFCRTtCRDdCOzExMDcgMTE2RCAxMUJFOyAjICjrtbs7IOu1uzsg4YSH4YWt4Ya+OyDrtbs7IOGEh+GFreGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgQllPQworQkQ3QztCRDdDOzExMDcgMTE2RCAxMUJGO0JEN0M7MTEwNyAxMTZEIDExQkY7ICMgKOu1vDsg67W8OyDhhIfhha3hhr87IOu1vDsg4YSH4YWt4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBCWU9LCitCRDdEO0JEN0Q7MTEwNyAxMTZEIDExQzA7QkQ3RDsxMTA3IDExNkQgMTFDMDsgIyAo67W9OyDrtb07IOGEh+GFreGHgDsg67W9OyDhhIfhha3hh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJZT1QKK0JEN0U7QkQ3RTsxMTA3IDExNkQgMTFDMTtCRDdFOzExMDcgMTE2RCAxMUMxOyAjICjrtb47IOu1vjsg4YSH4YWt4YeBOyDrtb47IOGEh+GFreGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgQllPUAorQkQ3RjtCRDdGOzExMDcgMTE2RCAxMUMyO0JEN0Y7MTEwNyAxMTZEIDExQzI7ICMgKOu1vzsg67W/OyDhhIfhha3hh4I7IOu1vzsg4YSH4YWt4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBCWU9ICitCRDgwO0JEODA7MTEwNyAxMTZFO0JEODA7MTEwNyAxMTZFOyAjICjrtoA7IOu2gDsg4YSH4YWuOyDrtoA7IOGEh+GFrjsgKSBIQU5HVUwgU1lMTEFCTEUgQlUKK0JEODE7QkQ4MTsxMTA3IDExNkUgMTFBODtCRDgxOzExMDcgMTE2RSAxMUE4OyAjICjrtoE7IOu2gTsg4YSH4YWu4YaoOyDrtoE7IOGEh+GFruGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgQlVHCitCRDgyO0JEODI7MTEwNyAxMTZFIDExQTk7QkQ4MjsxMTA3IDExNkUgMTFBOTsgIyAo67aCOyDrtoI7IOGEh+GFruGGqTsg67aCOyDhhIfhha7hhqk7ICkgSEFOR1VMIFNZTExBQkxFIEJVR0cKK0JEODM7QkQ4MzsxMTA3IDExNkUgMTFBQTtCRDgzOzExMDcgMTE2RSAxMUFBOyAjICjrtoM7IOu2gzsg4YSH4YWu4YaqOyDrtoM7IOGEh+GFruGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQlVHUworQkQ4NDtCRDg0OzExMDcgMTE2RSAxMUFCO0JEODQ7MTEwNyAxMTZFIDExQUI7ICMgKOu2hDsg67aEOyDhhIfhha7hhqs7IOu2hDsg4YSH4YWu4YarOyApIEhBTkdVTCBTWUxMQUJMRSBCVU4KK0JEODU7QkQ4NTsxMTA3IDExNkUgMTFBQztCRDg1OzExMDcgMTE2RSAxMUFDOyAjICjrtoU7IOu2hTsg4YSH4YWu4YasOyDrtoU7IOGEh+GFruGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgQlVOSgorQkQ4NjtCRDg2OzExMDcgMTE2RSAxMUFEO0JEODY7MTEwNyAxMTZFIDExQUQ7ICMgKOu2hjsg67aGOyDhhIfhha7hhq07IOu2hjsg4YSH4YWu4YatOyApIEhBTkdVTCBTWUxMQUJMRSBCVU5ICitCRDg3O0JEODc7MTEwNyAxMTZFIDExQUU7QkQ4NzsxMTA3IDExNkUgMTFBRTsgIyAo67aHOyDrtoc7IOGEh+GFruGGrjsg67aHOyDhhIfhha7hhq47ICkgSEFOR1VMIFNZTExBQkxFIEJVRAorQkQ4ODtCRDg4OzExMDcgMTE2RSAxMUFGO0JEODg7MTEwNyAxMTZFIDExQUY7ICMgKOu2iDsg67aIOyDhhIfhha7hhq87IOu2iDsg4YSH4YWu4YavOyApIEhBTkdVTCBTWUxMQUJMRSBCVUwKK0JEODk7QkQ4OTsxMTA3IDExNkUgMTFCMDtCRDg5OzExMDcgMTE2RSAxMUIwOyAjICjrtok7IOu2iTsg4YSH4YWu4YawOyDrtok7IOGEh+GFruGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQlVMRworQkQ4QTtCRDhBOzExMDcgMTE2RSAxMUIxO0JEOEE7MTEwNyAxMTZFIDExQjE7ICMgKOu2ijsg67aKOyDhhIfhha7hhrE7IOu2ijsg4YSH4YWu4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBCVUxNCitCRDhCO0JEOEI7MTEwNyAxMTZFIDExQjI7QkQ4QjsxMTA3IDExNkUgMTFCMjsgIyAo67aLOyDrtos7IOGEh+GFruGGsjsg67aLOyDhhIfhha7hhrI7ICkgSEFOR1VMIFNZTExBQkxFIEJVTEIKK0JEOEM7QkQ4QzsxMTA3IDExNkUgMTFCMztCRDhDOzExMDcgMTE2RSAxMUIzOyAjICjrtow7IOu2jDsg4YSH4YWu4YazOyDrtow7IOGEh+GFruGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQlVMUworQkQ4RDtCRDhEOzExMDcgMTE2RSAxMUI0O0JEOEQ7MTEwNyAxMTZFIDExQjQ7ICMgKOu2jTsg67aNOyDhhIfhha7hhrQ7IOu2jTsg4YSH4YWu4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBCVUxUCitCRDhFO0JEOEU7MTEwNyAxMTZFIDExQjU7QkQ4RTsxMTA3IDExNkUgMTFCNTsgIyAo67aOOyDrto47IOGEh+GFruGGtTsg67aOOyDhhIfhha7hhrU7ICkgSEFOR1VMIFNZTExBQkxFIEJVTFAKK0JEOEY7QkQ4RjsxMTA3IDExNkUgMTFCNjtCRDhGOzExMDcgMTE2RSAxMUI2OyAjICjrto87IOu2jzsg4YSH4YWu4Ya2OyDrto87IOGEh+GFruGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQlVMSAorQkQ5MDtCRDkwOzExMDcgMTE2RSAxMUI3O0JEOTA7MTEwNyAxMTZFIDExQjc7ICMgKOu2kDsg67aQOyDhhIfhha7hhrc7IOu2kDsg4YSH4YWu4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBCVU0KK0JEOTE7QkQ5MTsxMTA3IDExNkUgMTFCODtCRDkxOzExMDcgMTE2RSAxMUI4OyAjICjrtpE7IOu2kTsg4YSH4YWu4Ya4OyDrtpE7IOGEh+GFruGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgQlVCCitCRDkyO0JEOTI7MTEwNyAxMTZFIDExQjk7QkQ5MjsxMTA3IDExNkUgMTFCOTsgIyAo67aSOyDrtpI7IOGEh+GFruGGuTsg67aSOyDhhIfhha7hhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJVQlMKK0JEOTM7QkQ5MzsxMTA3IDExNkUgMTFCQTtCRDkzOzExMDcgMTE2RSAxMUJBOyAjICjrtpM7IOu2kzsg4YSH4YWu4Ya6OyDrtpM7IOGEh+GFruGGujsgKSBIQU5HVUwgU1lMTEFCTEUgQlVTCitCRDk0O0JEOTQ7MTEwNyAxMTZFIDExQkI7QkQ5NDsxMTA3IDExNkUgMTFCQjsgIyAo67aUOyDrtpQ7IOGEh+GFruGGuzsg67aUOyDhhIfhha7hhrs7ICkgSEFOR1VMIFNZTExBQkxFIEJVU1MKK0JEOTU7QkQ5NTsxMTA3IDExNkUgMTFCQztCRDk1OzExMDcgMTE2RSAxMUJDOyAjICjrtpU7IOu2lTsg4YSH4YWu4Ya8OyDrtpU7IOGEh+GFruGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQlVORworQkQ5NjtCRDk2OzExMDcgMTE2RSAxMUJEO0JEOTY7MTEwNyAxMTZFIDExQkQ7ICMgKOu2ljsg67aWOyDhhIfhha7hhr07IOu2ljsg4YSH4YWu4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBCVUoKK0JEOTc7QkQ5NzsxMTA3IDExNkUgMTFCRTtCRDk3OzExMDcgMTE2RSAxMUJFOyAjICjrtpc7IOu2lzsg4YSH4YWu4Ya+OyDrtpc7IOGEh+GFruGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgQlVDCitCRDk4O0JEOTg7MTEwNyAxMTZFIDExQkY7QkQ5ODsxMTA3IDExNkUgMTFCRjsgIyAo67aYOyDrtpg7IOGEh+GFruGGvzsg67aYOyDhhIfhha7hhr87ICkgSEFOR1VMIFNZTExBQkxFIEJVSworQkQ5OTtCRDk5OzExMDcgMTE2RSAxMUMwO0JEOTk7MTEwNyAxMTZFIDExQzA7ICMgKOu2mTsg67aZOyDhhIfhha7hh4A7IOu2mTsg4YSH4YWu4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBCVVQKK0JEOUE7QkQ5QTsxMTA3IDExNkUgMTFDMTtCRDlBOzExMDcgMTE2RSAxMUMxOyAjICjrtpo7IOu2mjsg4YSH4YWu4YeBOyDrtpo7IOGEh+GFruGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgQlVQCitCRDlCO0JEOUI7MTEwNyAxMTZFIDExQzI7QkQ5QjsxMTA3IDExNkUgMTFDMjsgIyAo67abOyDrtps7IOGEh+GFruGHgjsg67abOyDhhIfhha7hh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJVSAorQkQ5QztCRDlDOzExMDcgMTE2RjtCRDlDOzExMDcgMTE2RjsgIyAo67acOyDrtpw7IOGEh+GFrzsg67acOyDhhIfhha87ICkgSEFOR1VMIFNZTExBQkxFIEJXRU8KK0JEOUQ7QkQ5RDsxMTA3IDExNkYgMTFBODtCRDlEOzExMDcgMTE2RiAxMUE4OyAjICjrtp07IOu2nTsg4YSH4YWv4YaoOyDrtp07IOGEh+GFr+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgQldFT0cKK0JEOUU7QkQ5RTsxMTA3IDExNkYgMTFBOTtCRDlFOzExMDcgMTE2RiAxMUE5OyAjICjrtp47IOu2njsg4YSH4YWv4YapOyDrtp47IOGEh+GFr+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQldFT0dHCitCRDlGO0JEOUY7MTEwNyAxMTZGIDExQUE7QkQ5RjsxMTA3IDExNkYgMTFBQTsgIyAo67afOyDrtp87IOGEh+GFr+GGqjsg67afOyDhhIfhha/hhqo7ICkgSEFOR1VMIFNZTExBQkxFIEJXRU9HUworQkRBMDtCREEwOzExMDcgMTE2RiAxMUFCO0JEQTA7MTEwNyAxMTZGIDExQUI7ICMgKOu2oDsg67agOyDhhIfhha/hhqs7IOu2oDsg4YSH4YWv4YarOyApIEhBTkdVTCBTWUxMQUJMRSBCV0VPTgorQkRBMTtCREExOzExMDcgMTE2RiAxMUFDO0JEQTE7MTEwNyAxMTZGIDExQUM7ICMgKOu2oTsg67ahOyDhhIfhha/hhqw7IOu2oTsg4YSH4YWv4YasOyApIEhBTkdVTCBTWUxMQUJMRSBCV0VPTkoKK0JEQTI7QkRBMjsxMTA3IDExNkYgMTFBRDtCREEyOzExMDcgMTE2RiAxMUFEOyAjICjrtqI7IOu2ojsg4YSH4YWv4YatOyDrtqI7IOGEh+GFr+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgQldFT05ICitCREEzO0JEQTM7MTEwNyAxMTZGIDExQUU7QkRBMzsxMTA3IDExNkYgMTFBRTsgIyAo67ajOyDrtqM7IOGEh+GFr+GGrjsg67ajOyDhhIfhha/hhq47ICkgSEFOR1VMIFNZTExBQkxFIEJXRU9ECitCREE0O0JEQTQ7MTEwNyAxMTZGIDExQUY7QkRBNDsxMTA3IDExNkYgMTFBRjsgIyAo67akOyDrtqQ7IOGEh+GFr+GGrzsg67akOyDhhIfhha/hhq87ICkgSEFOR1VMIFNZTExBQkxFIEJXRU9MCitCREE1O0JEQTU7MTEwNyAxMTZGIDExQjA7QkRBNTsxMTA3IDExNkYgMTFCMDsgIyAo67alOyDrtqU7IOGEh+GFr+GGsDsg67alOyDhhIfhha/hhrA7ICkgSEFOR1VMIFNZTExBQkxFIEJXRU9MRworQkRBNjtCREE2OzExMDcgMTE2RiAxMUIxO0JEQTY7MTEwNyAxMTZGIDExQjE7ICMgKOu2pjsg67amOyDhhIfhha/hhrE7IOu2pjsg4YSH4YWv4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBCV0VPTE0KK0JEQTc7QkRBNzsxMTA3IDExNkYgMTFCMjtCREE3OzExMDcgMTE2RiAxMUIyOyAjICjrtqc7IOu2pzsg4YSH4YWv4YayOyDrtqc7IOGEh+GFr+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQldFT0xCCitCREE4O0JEQTg7MTEwNyAxMTZGIDExQjM7QkRBODsxMTA3IDExNkYgMTFCMzsgIyAo67aoOyDrtqg7IOGEh+GFr+GGszsg67aoOyDhhIfhha/hhrM7ICkgSEFOR1VMIFNZTExBQkxFIEJXRU9MUworQkRBOTtCREE5OzExMDcgMTE2RiAxMUI0O0JEQTk7MTEwNyAxMTZGIDExQjQ7ICMgKOu2qTsg67apOyDhhIfhha/hhrQ7IOu2qTsg4YSH4YWv4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBCV0VPTFQKK0JEQUE7QkRBQTsxMTA3IDExNkYgMTFCNTtCREFBOzExMDcgMTE2RiAxMUI1OyAjICjrtqo7IOu2qjsg4YSH4YWv4Ya1OyDrtqo7IOGEh+GFr+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQldFT0xQCitCREFCO0JEQUI7MTEwNyAxMTZGIDExQjY7QkRBQjsxMTA3IDExNkYgMTFCNjsgIyAo67arOyDrtqs7IOGEh+GFr+GGtjsg67arOyDhhIfhha/hhrY7ICkgSEFOR1VMIFNZTExBQkxFIEJXRU9MSAorQkRBQztCREFDOzExMDcgMTE2RiAxMUI3O0JEQUM7MTEwNyAxMTZGIDExQjc7ICMgKOu2rDsg67asOyDhhIfhha/hhrc7IOu2rDsg4YSH4YWv4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBCV0VPTQorQkRBRDtCREFEOzExMDcgMTE2RiAxMUI4O0JEQUQ7MTEwNyAxMTZGIDExQjg7ICMgKOu2rTsg67atOyDhhIfhha/hhrg7IOu2rTsg4YSH4YWv4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBCV0VPQgorQkRBRTtCREFFOzExMDcgMTE2RiAxMUI5O0JEQUU7MTEwNyAxMTZGIDExQjk7ICMgKOu2rjsg67auOyDhhIfhha/hhrk7IOu2rjsg4YSH4YWv4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBCV0VPQlMKK0JEQUY7QkRBRjsxMTA3IDExNkYgMTFCQTtCREFGOzExMDcgMTE2RiAxMUJBOyAjICjrtq87IOu2rzsg4YSH4YWv4Ya6OyDrtq87IOGEh+GFr+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgQldFT1MKK0JEQjA7QkRCMDsxMTA3IDExNkYgMTFCQjtCREIwOzExMDcgMTE2RiAxMUJCOyAjICjrtrA7IOu2sDsg4YSH4YWv4Ya7OyDrtrA7IOGEh+GFr+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQldFT1NTCitCREIxO0JEQjE7MTEwNyAxMTZGIDExQkM7QkRCMTsxMTA3IDExNkYgMTFCQzsgIyAo67axOyDrtrE7IOGEh+GFr+GGvDsg67axOyDhhIfhha/hhrw7ICkgSEFOR1VMIFNZTExBQkxFIEJXRU9ORworQkRCMjtCREIyOzExMDcgMTE2RiAxMUJEO0JEQjI7MTEwNyAxMTZGIDExQkQ7ICMgKOu2sjsg67ayOyDhhIfhha/hhr07IOu2sjsg4YSH4YWv4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBCV0VPSgorQkRCMztCREIzOzExMDcgMTE2RiAxMUJFO0JEQjM7MTEwNyAxMTZGIDExQkU7ICMgKOu2szsg67azOyDhhIfhha/hhr47IOu2szsg4YSH4YWv4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBCV0VPQworQkRCNDtCREI0OzExMDcgMTE2RiAxMUJGO0JEQjQ7MTEwNyAxMTZGIDExQkY7ICMgKOu2tDsg67a0OyDhhIfhha/hhr87IOu2tDsg4YSH4YWv4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBCV0VPSworQkRCNTtCREI1OzExMDcgMTE2RiAxMUMwO0JEQjU7MTEwNyAxMTZGIDExQzA7ICMgKOu2tTsg67a1OyDhhIfhha/hh4A7IOu2tTsg4YSH4YWv4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBCV0VPVAorQkRCNjtCREI2OzExMDcgMTE2RiAxMUMxO0JEQjY7MTEwNyAxMTZGIDExQzE7ICMgKOu2tjsg67a2OyDhhIfhha/hh4E7IOu2tjsg4YSH4YWv4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBCV0VPUAorQkRCNztCREI3OzExMDcgMTE2RiAxMUMyO0JEQjc7MTEwNyAxMTZGIDExQzI7ICMgKOu2tzsg67a3OyDhhIfhha/hh4I7IOu2tzsg4YSH4YWv4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBCV0VPSAorQkRCODtCREI4OzExMDcgMTE3MDtCREI4OzExMDcgMTE3MDsgIyAo67a4OyDrtrg7IOGEh+GFsDsg67a4OyDhhIfhhbA7ICkgSEFOR1VMIFNZTExBQkxFIEJXRQorQkRCOTtCREI5OzExMDcgMTE3MCAxMUE4O0JEQjk7MTEwNyAxMTcwIDExQTg7ICMgKOu2uTsg67a5OyDhhIfhhbDhhqg7IOu2uTsg4YSH4YWw4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCV0VHCitCREJBO0JEQkE7MTEwNyAxMTcwIDExQTk7QkRCQTsxMTA3IDExNzAgMTFBOTsgIyAo67a6OyDrtro7IOGEh+GFsOGGqTsg67a6OyDhhIfhhbDhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEJXRUdHCitCREJCO0JEQkI7MTEwNyAxMTcwIDExQUE7QkRCQjsxMTA3IDExNzAgMTFBQTsgIyAo67a7OyDrtrs7IOGEh+GFsOGGqjsg67a7OyDhhIfhhbDhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEJXRUdTCitCREJDO0JEQkM7MTEwNyAxMTcwIDExQUI7QkRCQzsxMTA3IDExNzAgMTFBQjsgIyAo67a8OyDrtrw7IOGEh+GFsOGGqzsg67a8OyDhhIfhhbDhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJXRU4KK0JEQkQ7QkRCRDsxMTA3IDExNzAgMTFBQztCREJEOzExMDcgMTE3MCAxMUFDOyAjICjrtr07IOu2vTsg4YSH4YWw4YasOyDrtr07IOGEh+GFsOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgQldFTkoKK0JEQkU7QkRCRTsxMTA3IDExNzAgMTFBRDtCREJFOzExMDcgMTE3MCAxMUFEOyAjICjrtr47IOu2vjsg4YSH4YWw4YatOyDrtr47IOGEh+GFsOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgQldFTkgKK0JEQkY7QkRCRjsxMTA3IDExNzAgMTFBRTtCREJGOzExMDcgMTE3MCAxMUFFOyAjICjrtr87IOu2vzsg4YSH4YWw4YauOyDrtr87IOGEh+GFsOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQldFRAorQkRDMDtCREMwOzExMDcgMTE3MCAxMUFGO0JEQzA7MTEwNyAxMTcwIDExQUY7ICMgKOu3gDsg67eAOyDhhIfhhbDhhq87IOu3gDsg4YSH4YWw4YavOyApIEhBTkdVTCBTWUxMQUJMRSBCV0VMCitCREMxO0JEQzE7MTEwNyAxMTcwIDExQjA7QkRDMTsxMTA3IDExNzAgMTFCMDsgIyAo67eBOyDrt4E7IOGEh+GFsOGGsDsg67eBOyDhhIfhhbDhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEJXRUxHCitCREMyO0JEQzI7MTEwNyAxMTcwIDExQjE7QkRDMjsxMTA3IDExNzAgMTFCMTsgIyAo67eCOyDrt4I7IOGEh+GFsOGGsTsg67eCOyDhhIfhhbDhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJXRUxNCitCREMzO0JEQzM7MTEwNyAxMTcwIDExQjI7QkRDMzsxMTA3IDExNzAgMTFCMjsgIyAo67eDOyDrt4M7IOGEh+GFsOGGsjsg67eDOyDhhIfhhbDhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEJXRUxCCitCREM0O0JEQzQ7MTEwNyAxMTcwIDExQjM7QkRDNDsxMTA3IDExNzAgMTFCMzsgIyAo67eEOyDrt4Q7IOGEh+GFsOGGszsg67eEOyDhhIfhhbDhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEJXRUxTCitCREM1O0JEQzU7MTEwNyAxMTcwIDExQjQ7QkRDNTsxMTA3IDExNzAgMTFCNDsgIyAo67eFOyDrt4U7IOGEh+GFsOGGtDsg67eFOyDhhIfhhbDhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJXRUxUCitCREM2O0JEQzY7MTEwNyAxMTcwIDExQjU7QkRDNjsxMTA3IDExNzAgMTFCNTsgIyAo67eGOyDrt4Y7IOGEh+GFsOGGtTsg67eGOyDhhIfhhbDhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEJXRUxQCitCREM3O0JEQzc7MTEwNyAxMTcwIDExQjY7QkRDNzsxMTA3IDExNzAgMTFCNjsgIyAo67eHOyDrt4c7IOGEh+GFsOGGtjsg67eHOyDhhIfhhbDhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEJXRUxICitCREM4O0JEQzg7MTEwNyAxMTcwIDExQjc7QkRDODsxMTA3IDExNzAgMTFCNzsgIyAo67eIOyDrt4g7IOGEh+GFsOGGtzsg67eIOyDhhIfhhbDhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJXRU0KK0JEQzk7QkRDOTsxMTA3IDExNzAgMTFCODtCREM5OzExMDcgMTE3MCAxMUI4OyAjICjrt4k7IOu3iTsg4YSH4YWw4Ya4OyDrt4k7IOGEh+GFsOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgQldFQgorQkRDQTtCRENBOzExMDcgMTE3MCAxMUI5O0JEQ0E7MTEwNyAxMTcwIDExQjk7ICMgKOu3ijsg67eKOyDhhIfhhbDhhrk7IOu3ijsg4YSH4YWw4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBCV0VCUworQkRDQjtCRENCOzExMDcgMTE3MCAxMUJBO0JEQ0I7MTEwNyAxMTcwIDExQkE7ICMgKOu3izsg67eLOyDhhIfhhbDhhro7IOu3izsg4YSH4YWw4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCV0VTCitCRENDO0JEQ0M7MTEwNyAxMTcwIDExQkI7QkRDQzsxMTA3IDExNzAgMTFCQjsgIyAo67eMOyDrt4w7IOGEh+GFsOGGuzsg67eMOyDhhIfhhbDhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEJXRVNTCitCRENEO0JEQ0Q7MTEwNyAxMTcwIDExQkM7QkRDRDsxMTA3IDExNzAgMTFCQzsgIyAo67eNOyDrt407IOGEh+GFsOGGvDsg67eNOyDhhIfhhbDhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEJXRU5HCitCRENFO0JEQ0U7MTEwNyAxMTcwIDExQkQ7QkRDRTsxMTA3IDExNzAgMTFCRDsgIyAo67eOOyDrt447IOGEh+GFsOGGvTsg67eOOyDhhIfhhbDhhr07ICkgSEFOR1VMIFNZTExBQkxFIEJXRUoKK0JEQ0Y7QkRDRjsxMTA3IDExNzAgMTFCRTtCRENGOzExMDcgMTE3MCAxMUJFOyAjICjrt487IOu3jzsg4YSH4YWw4Ya+OyDrt487IOGEh+GFsOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgQldFQworQkREMDtCREQwOzExMDcgMTE3MCAxMUJGO0JERDA7MTEwNyAxMTcwIDExQkY7ICMgKOu3kDsg67eQOyDhhIfhhbDhhr87IOu3kDsg4YSH4YWw4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBCV0VLCitCREQxO0JERDE7MTEwNyAxMTcwIDExQzA7QkREMTsxMTA3IDExNzAgMTFDMDsgIyAo67eROyDrt5E7IOGEh+GFsOGHgDsg67eROyDhhIfhhbDhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJXRVQKK0JERDI7QkREMjsxMTA3IDExNzAgMTFDMTtCREQyOzExMDcgMTE3MCAxMUMxOyAjICjrt5I7IOu3kjsg4YSH4YWw4YeBOyDrt5I7IOGEh+GFsOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgQldFUAorQkREMztCREQzOzExMDcgMTE3MCAxMUMyO0JERDM7MTEwNyAxMTcwIDExQzI7ICMgKOu3kzsg67eTOyDhhIfhhbDhh4I7IOu3kzsg4YSH4YWw4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBCV0VICitCREQ0O0JERDQ7MTEwNyAxMTcxO0JERDQ7MTEwNyAxMTcxOyAjICjrt5Q7IOu3lDsg4YSH4YWxOyDrt5Q7IOGEh+GFsTsgKSBIQU5HVUwgU1lMTEFCTEUgQldJCitCREQ1O0JERDU7MTEwNyAxMTcxIDExQTg7QkRENTsxMTA3IDExNzEgMTFBODsgIyAo67eVOyDrt5U7IOGEh+GFseGGqDsg67eVOyDhhIfhhbHhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEJXSUcKK0JERDY7QkRENjsxMTA3IDExNzEgMTFBOTtCREQ2OzExMDcgMTE3MSAxMUE5OyAjICjrt5Y7IOu3ljsg4YSH4YWx4YapOyDrt5Y7IOGEh+GFseGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQldJR0cKK0JERDc7QkRENzsxMTA3IDExNzEgMTFBQTtCREQ3OzExMDcgMTE3MSAxMUFBOyAjICjrt5c7IOu3lzsg4YSH4YWx4YaqOyDrt5c7IOGEh+GFseGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQldJR1MKK0JERDg7QkREODsxMTA3IDExNzEgMTFBQjtCREQ4OzExMDcgMTE3MSAxMUFCOyAjICjrt5g7IOu3mDsg4YSH4YWx4YarOyDrt5g7IOGEh+GFseGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQldJTgorQkREOTtCREQ5OzExMDcgMTE3MSAxMUFDO0JERDk7MTEwNyAxMTcxIDExQUM7ICMgKOu3mTsg67eZOyDhhIfhhbHhhqw7IOu3mTsg4YSH4YWx4YasOyApIEhBTkdVTCBTWUxMQUJMRSBCV0lOSgorQkREQTtCRERBOzExMDcgMTE3MSAxMUFEO0JEREE7MTEwNyAxMTcxIDExQUQ7ICMgKOu3mjsg67eaOyDhhIfhhbHhhq07IOu3mjsg4YSH4YWx4YatOyApIEhBTkdVTCBTWUxMQUJMRSBCV0lOSAorQkREQjtCRERCOzExMDcgMTE3MSAxMUFFO0JEREI7MTEwNyAxMTcxIDExQUU7ICMgKOu3mzsg67ebOyDhhIfhhbHhhq47IOu3mzsg4YSH4YWx4YauOyApIEhBTkdVTCBTWUxMQUJMRSBCV0lECitCRERDO0JEREM7MTEwNyAxMTcxIDExQUY7QkREQzsxMTA3IDExNzEgMTFBRjsgIyAo67ecOyDrt5w7IOGEh+GFseGGrzsg67ecOyDhhIfhhbHhhq87ICkgSEFOR1VMIFNZTExBQkxFIEJXSUwKK0JEREQ7QkRERDsxMTA3IDExNzEgMTFCMDtCREREOzExMDcgMTE3MSAxMUIwOyAjICjrt507IOu3nTsg4YSH4YWx4YawOyDrt507IOGEh+GFseGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQldJTEcKK0JEREU7QkRERTsxMTA3IDExNzEgMTFCMTtCRERFOzExMDcgMTE3MSAxMUIxOyAjICjrt547IOu3njsg4YSH4YWx4YaxOyDrt547IOGEh+GFseGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQldJTE0KK0JEREY7QkRERjsxMTA3IDExNzEgMTFCMjtCRERGOzExMDcgMTE3MSAxMUIyOyAjICjrt587IOu3nzsg4YSH4YWx4YayOyDrt587IOGEh+GFseGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQldJTEIKK0JERTA7QkRFMDsxMTA3IDExNzEgMTFCMztCREUwOzExMDcgMTE3MSAxMUIzOyAjICjrt6A7IOu3oDsg4YSH4YWx4YazOyDrt6A7IOGEh+GFseGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQldJTFMKK0JERTE7QkRFMTsxMTA3IDExNzEgMTFCNDtCREUxOzExMDcgMTE3MSAxMUI0OyAjICjrt6E7IOu3oTsg4YSH4YWx4Ya0OyDrt6E7IOGEh+GFseGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQldJTFQKK0JERTI7QkRFMjsxMTA3IDExNzEgMTFCNTtCREUyOzExMDcgMTE3MSAxMUI1OyAjICjrt6I7IOu3ojsg4YSH4YWx4Ya1OyDrt6I7IOGEh+GFseGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQldJTFAKK0JERTM7QkRFMzsxMTA3IDExNzEgMTFCNjtCREUzOzExMDcgMTE3MSAxMUI2OyAjICjrt6M7IOu3ozsg4YSH4YWx4Ya2OyDrt6M7IOGEh+GFseGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQldJTEgKK0JERTQ7QkRFNDsxMTA3IDExNzEgMTFCNztCREU0OzExMDcgMTE3MSAxMUI3OyAjICjrt6Q7IOu3pDsg4YSH4YWx4Ya3OyDrt6Q7IOGEh+GFseGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQldJTQorQkRFNTtCREU1OzExMDcgMTE3MSAxMUI4O0JERTU7MTEwNyAxMTcxIDExQjg7ICMgKOu3pTsg67elOyDhhIfhhbHhhrg7IOu3pTsg4YSH4YWx4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBCV0lCCitCREU2O0JERTY7MTEwNyAxMTcxIDExQjk7QkRFNjsxMTA3IDExNzEgMTFCOTsgIyAo67emOyDrt6Y7IOGEh+GFseGGuTsg67emOyDhhIfhhbHhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJXSUJTCitCREU3O0JERTc7MTEwNyAxMTcxIDExQkE7QkRFNzsxMTA3IDExNzEgMTFCQTsgIyAo67enOyDrt6c7IOGEh+GFseGGujsg67enOyDhhIfhhbHhhro7ICkgSEFOR1VMIFNZTExBQkxFIEJXSVMKK0JERTg7QkRFODsxMTA3IDExNzEgMTFCQjtCREU4OzExMDcgMTE3MSAxMUJCOyAjICjrt6g7IOu3qDsg4YSH4YWx4Ya7OyDrt6g7IOGEh+GFseGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQldJU1MKK0JERTk7QkRFOTsxMTA3IDExNzEgMTFCQztCREU5OzExMDcgMTE3MSAxMUJDOyAjICjrt6k7IOu3qTsg4YSH4YWx4Ya8OyDrt6k7IOGEh+GFseGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQldJTkcKK0JERUE7QkRFQTsxMTA3IDExNzEgMTFCRDtCREVBOzExMDcgMTE3MSAxMUJEOyAjICjrt6o7IOu3qjsg4YSH4YWx4Ya9OyDrt6o7IOGEh+GFseGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQldJSgorQkRFQjtCREVCOzExMDcgMTE3MSAxMUJFO0JERUI7MTEwNyAxMTcxIDExQkU7ICMgKOu3qzsg67erOyDhhIfhhbHhhr47IOu3qzsg4YSH4YWx4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBCV0lDCitCREVDO0JERUM7MTEwNyAxMTcxIDExQkY7QkRFQzsxMTA3IDExNzEgMTFCRjsgIyAo67esOyDrt6w7IOGEh+GFseGGvzsg67esOyDhhIfhhbHhhr87ICkgSEFOR1VMIFNZTExBQkxFIEJXSUsKK0JERUQ7QkRFRDsxMTA3IDExNzEgMTFDMDtCREVEOzExMDcgMTE3MSAxMUMwOyAjICjrt607IOu3rTsg4YSH4YWx4YeAOyDrt607IOGEh+GFseGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQldJVAorQkRFRTtCREVFOzExMDcgMTE3MSAxMUMxO0JERUU7MTEwNyAxMTcxIDExQzE7ICMgKOu3rjsg67euOyDhhIfhhbHhh4E7IOu3rjsg4YSH4YWx4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBCV0lQCitCREVGO0JERUY7MTEwNyAxMTcxIDExQzI7QkRFRjsxMTA3IDExNzEgMTFDMjsgIyAo67evOyDrt687IOGEh+GFseGHgjsg67evOyDhhIfhhbHhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJXSUgKK0JERjA7QkRGMDsxMTA3IDExNzI7QkRGMDsxMTA3IDExNzI7ICMgKOu3sDsg67ewOyDhhIfhhbI7IOu3sDsg4YSH4YWyOyApIEhBTkdVTCBTWUxMQUJMRSBCWVUKK0JERjE7QkRGMTsxMTA3IDExNzIgMTFBODtCREYxOzExMDcgMTE3MiAxMUE4OyAjICjrt7E7IOu3sTsg4YSH4YWy4YaoOyDrt7E7IOGEh+GFsuGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgQllVRworQkRGMjtCREYyOzExMDcgMTE3MiAxMUE5O0JERjI7MTEwNyAxMTcyIDExQTk7ICMgKOu3sjsg67eyOyDhhIfhhbLhhqk7IOu3sjsg4YSH4YWy4YapOyApIEhBTkdVTCBTWUxMQUJMRSBCWVVHRworQkRGMztCREYzOzExMDcgMTE3MiAxMUFBO0JERjM7MTEwNyAxMTcyIDExQUE7ICMgKOu3szsg67ezOyDhhIfhhbLhhqo7IOu3szsg4YSH4YWy4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBCWVVHUworQkRGNDtCREY0OzExMDcgMTE3MiAxMUFCO0JERjQ7MTEwNyAxMTcyIDExQUI7ICMgKOu3tDsg67e0OyDhhIfhhbLhhqs7IOu3tDsg4YSH4YWy4YarOyApIEhBTkdVTCBTWUxMQUJMRSBCWVVOCitCREY1O0JERjU7MTEwNyAxMTcyIDExQUM7QkRGNTsxMTA3IDExNzIgMTFBQzsgIyAo67e1OyDrt7U7IOGEh+GFsuGGrDsg67e1OyDhhIfhhbLhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEJZVU5KCitCREY2O0JERjY7MTEwNyAxMTcyIDExQUQ7QkRGNjsxMTA3IDExNzIgMTFBRDsgIyAo67e2OyDrt7Y7IOGEh+GFsuGGrTsg67e2OyDhhIfhhbLhhq07ICkgSEFOR1VMIFNZTExBQkxFIEJZVU5ICitCREY3O0JERjc7MTEwNyAxMTcyIDExQUU7QkRGNzsxMTA3IDExNzIgMTFBRTsgIyAo67e3OyDrt7c7IOGEh+GFsuGGrjsg67e3OyDhhIfhhbLhhq47ICkgSEFOR1VMIFNZTExBQkxFIEJZVUQKK0JERjg7QkRGODsxMTA3IDExNzIgMTFBRjtCREY4OzExMDcgMTE3MiAxMUFGOyAjICjrt7g7IOu3uDsg4YSH4YWy4YavOyDrt7g7IOGEh+GFsuGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQllVTAorQkRGOTtCREY5OzExMDcgMTE3MiAxMUIwO0JERjk7MTEwNyAxMTcyIDExQjA7ICMgKOu3uTsg67e5OyDhhIfhhbLhhrA7IOu3uTsg4YSH4YWy4YawOyApIEhBTkdVTCBTWUxMQUJMRSBCWVVMRworQkRGQTtCREZBOzExMDcgMTE3MiAxMUIxO0JERkE7MTEwNyAxMTcyIDExQjE7ICMgKOu3ujsg67e6OyDhhIfhhbLhhrE7IOu3ujsg4YSH4YWy4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBCWVVMTQorQkRGQjtCREZCOzExMDcgMTE3MiAxMUIyO0JERkI7MTEwNyAxMTcyIDExQjI7ICMgKOu3uzsg67e7OyDhhIfhhbLhhrI7IOu3uzsg4YSH4YWy4YayOyApIEhBTkdVTCBTWUxMQUJMRSBCWVVMQgorQkRGQztCREZDOzExMDcgMTE3MiAxMUIzO0JERkM7MTEwNyAxMTcyIDExQjM7ICMgKOu3vDsg67e8OyDhhIfhhbLhhrM7IOu3vDsg4YSH4YWy4YazOyApIEhBTkdVTCBTWUxMQUJMRSBCWVVMUworQkRGRDtCREZEOzExMDcgMTE3MiAxMUI0O0JERkQ7MTEwNyAxMTcyIDExQjQ7ICMgKOu3vTsg67e9OyDhhIfhhbLhhrQ7IOu3vTsg4YSH4YWy4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBCWVVMVAorQkRGRTtCREZFOzExMDcgMTE3MiAxMUI1O0JERkU7MTEwNyAxMTcyIDExQjU7ICMgKOu3vjsg67e+OyDhhIfhhbLhhrU7IOu3vjsg4YSH4YWy4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBCWVVMUAorQkRGRjtCREZGOzExMDcgMTE3MiAxMUI2O0JERkY7MTEwNyAxMTcyIDExQjY7ICMgKOu3vzsg67e/OyDhhIfhhbLhhrY7IOu3vzsg4YSH4YWy4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBCWVVMSAorQkUwMDtCRTAwOzExMDcgMTE3MiAxMUI3O0JFMDA7MTEwNyAxMTcyIDExQjc7ICMgKOu4gDsg67iAOyDhhIfhhbLhhrc7IOu4gDsg4YSH4YWy4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBCWVVNCitCRTAxO0JFMDE7MTEwNyAxMTcyIDExQjg7QkUwMTsxMTA3IDExNzIgMTFCODsgIyAo67iBOyDruIE7IOGEh+GFsuGGuDsg67iBOyDhhIfhhbLhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEJZVUIKK0JFMDI7QkUwMjsxMTA3IDExNzIgMTFCOTtCRTAyOzExMDcgMTE3MiAxMUI5OyAjICjruII7IOu4gjsg4YSH4YWy4Ya5OyDruII7IOGEh+GFsuGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQllVQlMKK0JFMDM7QkUwMzsxMTA3IDExNzIgMTFCQTtCRTAzOzExMDcgMTE3MiAxMUJBOyAjICjruIM7IOu4gzsg4YSH4YWy4Ya6OyDruIM7IOGEh+GFsuGGujsgKSBIQU5HVUwgU1lMTEFCTEUgQllVUworQkUwNDtCRTA0OzExMDcgMTE3MiAxMUJCO0JFMDQ7MTEwNyAxMTcyIDExQkI7ICMgKOu4hDsg67iEOyDhhIfhhbLhhrs7IOu4hDsg4YSH4YWy4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBCWVVTUworQkUwNTtCRTA1OzExMDcgMTE3MiAxMUJDO0JFMDU7MTEwNyAxMTcyIDExQkM7ICMgKOu4hTsg67iFOyDhhIfhhbLhhrw7IOu4hTsg4YSH4YWy4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBCWVVORworQkUwNjtCRTA2OzExMDcgMTE3MiAxMUJEO0JFMDY7MTEwNyAxMTcyIDExQkQ7ICMgKOu4hjsg67iGOyDhhIfhhbLhhr07IOu4hjsg4YSH4YWy4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBCWVVKCitCRTA3O0JFMDc7MTEwNyAxMTcyIDExQkU7QkUwNzsxMTA3IDExNzIgMTFCRTsgIyAo67iHOyDruIc7IOGEh+GFsuGGvjsg67iHOyDhhIfhhbLhhr47ICkgSEFOR1VMIFNZTExBQkxFIEJZVUMKK0JFMDg7QkUwODsxMTA3IDExNzIgMTFCRjtCRTA4OzExMDcgMTE3MiAxMUJGOyAjICjruIg7IOu4iDsg4YSH4YWy4Ya/OyDruIg7IOGEh+GFsuGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQllVSworQkUwOTtCRTA5OzExMDcgMTE3MiAxMUMwO0JFMDk7MTEwNyAxMTcyIDExQzA7ICMgKOu4iTsg67iJOyDhhIfhhbLhh4A7IOu4iTsg4YSH4YWy4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBCWVVUCitCRTBBO0JFMEE7MTEwNyAxMTcyIDExQzE7QkUwQTsxMTA3IDExNzIgMTFDMTsgIyAo67iKOyDruIo7IOGEh+GFsuGHgTsg67iKOyDhhIfhhbLhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEJZVVAKK0JFMEI7QkUwQjsxMTA3IDExNzIgMTFDMjtCRTBCOzExMDcgMTE3MiAxMUMyOyAjICjruIs7IOu4izsg4YSH4YWy4YeCOyDruIs7IOGEh+GFsuGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQllVSAorQkUwQztCRTBDOzExMDcgMTE3MztCRTBDOzExMDcgMTE3MzsgIyAo67iMOyDruIw7IOGEh+GFszsg67iMOyDhhIfhhbM7ICkgSEFOR1VMIFNZTExBQkxFIEJFVQorQkUwRDtCRTBEOzExMDcgMTE3MyAxMUE4O0JFMEQ7MTEwNyAxMTczIDExQTg7ICMgKOu4jTsg67iNOyDhhIfhhbPhhqg7IOu4jTsg4YSH4YWz4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCRVVHCitCRTBFO0JFMEU7MTEwNyAxMTczIDExQTk7QkUwRTsxMTA3IDExNzMgMTFBOTsgIyAo67iOOyDruI47IOGEh+GFs+GGqTsg67iOOyDhhIfhhbPhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEJFVUdHCitCRTBGO0JFMEY7MTEwNyAxMTczIDExQUE7QkUwRjsxMTA3IDExNzMgMTFBQTsgIyAo67iPOyDruI87IOGEh+GFs+GGqjsg67iPOyDhhIfhhbPhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEJFVUdTCitCRTEwO0JFMTA7MTEwNyAxMTczIDExQUI7QkUxMDsxMTA3IDExNzMgMTFBQjsgIyAo67iQOyDruJA7IOGEh+GFs+GGqzsg67iQOyDhhIfhhbPhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJFVU4KK0JFMTE7QkUxMTsxMTA3IDExNzMgMTFBQztCRTExOzExMDcgMTE3MyAxMUFDOyAjICjruJE7IOu4kTsg4YSH4YWz4YasOyDruJE7IOGEh+GFs+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgQkVVTkoKK0JFMTI7QkUxMjsxMTA3IDExNzMgMTFBRDtCRTEyOzExMDcgMTE3MyAxMUFEOyAjICjruJI7IOu4kjsg4YSH4YWz4YatOyDruJI7IOGEh+GFs+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgQkVVTkgKK0JFMTM7QkUxMzsxMTA3IDExNzMgMTFBRTtCRTEzOzExMDcgMTE3MyAxMUFFOyAjICjruJM7IOu4kzsg4YSH4YWz4YauOyDruJM7IOGEh+GFs+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQkVVRAorQkUxNDtCRTE0OzExMDcgMTE3MyAxMUFGO0JFMTQ7MTEwNyAxMTczIDExQUY7ICMgKOu4lDsg67iUOyDhhIfhhbPhhq87IOu4lDsg4YSH4YWz4YavOyApIEhBTkdVTCBTWUxMQUJMRSBCRVVMCitCRTE1O0JFMTU7MTEwNyAxMTczIDExQjA7QkUxNTsxMTA3IDExNzMgMTFCMDsgIyAo67iVOyDruJU7IOGEh+GFs+GGsDsg67iVOyDhhIfhhbPhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEJFVUxHCitCRTE2O0JFMTY7MTEwNyAxMTczIDExQjE7QkUxNjsxMTA3IDExNzMgMTFCMTsgIyAo67iWOyDruJY7IOGEh+GFs+GGsTsg67iWOyDhhIfhhbPhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJFVUxNCitCRTE3O0JFMTc7MTEwNyAxMTczIDExQjI7QkUxNzsxMTA3IDExNzMgMTFCMjsgIyAo67iXOyDruJc7IOGEh+GFs+GGsjsg67iXOyDhhIfhhbPhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEJFVUxCCitCRTE4O0JFMTg7MTEwNyAxMTczIDExQjM7QkUxODsxMTA3IDExNzMgMTFCMzsgIyAo67iYOyDruJg7IOGEh+GFs+GGszsg67iYOyDhhIfhhbPhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEJFVUxTCitCRTE5O0JFMTk7MTEwNyAxMTczIDExQjQ7QkUxOTsxMTA3IDExNzMgMTFCNDsgIyAo67iZOyDruJk7IOGEh+GFs+GGtDsg67iZOyDhhIfhhbPhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJFVUxUCitCRTFBO0JFMUE7MTEwNyAxMTczIDExQjU7QkUxQTsxMTA3IDExNzMgMTFCNTsgIyAo67iaOyDruJo7IOGEh+GFs+GGtTsg67iaOyDhhIfhhbPhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEJFVUxQCitCRTFCO0JFMUI7MTEwNyAxMTczIDExQjY7QkUxQjsxMTA3IDExNzMgMTFCNjsgIyAo67ibOyDruJs7IOGEh+GFs+GGtjsg67ibOyDhhIfhhbPhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEJFVUxICitCRTFDO0JFMUM7MTEwNyAxMTczIDExQjc7QkUxQzsxMTA3IDExNzMgMTFCNzsgIyAo67icOyDruJw7IOGEh+GFs+GGtzsg67icOyDhhIfhhbPhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJFVU0KK0JFMUQ7QkUxRDsxMTA3IDExNzMgMTFCODtCRTFEOzExMDcgMTE3MyAxMUI4OyAjICjruJ07IOu4nTsg4YSH4YWz4Ya4OyDruJ07IOGEh+GFs+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgQkVVQgorQkUxRTtCRTFFOzExMDcgMTE3MyAxMUI5O0JFMUU7MTEwNyAxMTczIDExQjk7ICMgKOu4njsg67ieOyDhhIfhhbPhhrk7IOu4njsg4YSH4YWz4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBCRVVCUworQkUxRjtCRTFGOzExMDcgMTE3MyAxMUJBO0JFMUY7MTEwNyAxMTczIDExQkE7ICMgKOu4nzsg67ifOyDhhIfhhbPhhro7IOu4nzsg4YSH4YWz4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCRVVTCitCRTIwO0JFMjA7MTEwNyAxMTczIDExQkI7QkUyMDsxMTA3IDExNzMgMTFCQjsgIyAo67igOyDruKA7IOGEh+GFs+GGuzsg67igOyDhhIfhhbPhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEJFVVNTCitCRTIxO0JFMjE7MTEwNyAxMTczIDExQkM7QkUyMTsxMTA3IDExNzMgMTFCQzsgIyAo67ihOyDruKE7IOGEh+GFs+GGvDsg67ihOyDhhIfhhbPhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEJFVU5HCitCRTIyO0JFMjI7MTEwNyAxMTczIDExQkQ7QkUyMjsxMTA3IDExNzMgMTFCRDsgIyAo67iiOyDruKI7IOGEh+GFs+GGvTsg67iiOyDhhIfhhbPhhr07ICkgSEFOR1VMIFNZTExBQkxFIEJFVUoKK0JFMjM7QkUyMzsxMTA3IDExNzMgMTFCRTtCRTIzOzExMDcgMTE3MyAxMUJFOyAjICjruKM7IOu4ozsg4YSH4YWz4Ya+OyDruKM7IOGEh+GFs+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgQkVVQworQkUyNDtCRTI0OzExMDcgMTE3MyAxMUJGO0JFMjQ7MTEwNyAxMTczIDExQkY7ICMgKOu4pDsg67ikOyDhhIfhhbPhhr87IOu4pDsg4YSH4YWz4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBCRVVLCitCRTI1O0JFMjU7MTEwNyAxMTczIDExQzA7QkUyNTsxMTA3IDExNzMgMTFDMDsgIyAo67ilOyDruKU7IOGEh+GFs+GHgDsg67ilOyDhhIfhhbPhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJFVVQKK0JFMjY7QkUyNjsxMTA3IDExNzMgMTFDMTtCRTI2OzExMDcgMTE3MyAxMUMxOyAjICjruKY7IOu4pjsg4YSH4YWz4YeBOyDruKY7IOGEh+GFs+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgQkVVUAorQkUyNztCRTI3OzExMDcgMTE3MyAxMUMyO0JFMjc7MTEwNyAxMTczIDExQzI7ICMgKOu4pzsg67inOyDhhIfhhbPhh4I7IOu4pzsg4YSH4YWz4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBCRVVICitCRTI4O0JFMjg7MTEwNyAxMTc0O0JFMjg7MTEwNyAxMTc0OyAjICjruKg7IOu4qDsg4YSH4YW0OyDruKg7IOGEh+GFtDsgKSBIQU5HVUwgU1lMTEFCTEUgQllJCitCRTI5O0JFMjk7MTEwNyAxMTc0IDExQTg7QkUyOTsxMTA3IDExNzQgMTFBODsgIyAo67ipOyDruKk7IOGEh+GFtOGGqDsg67ipOyDhhIfhhbThhqg7ICkgSEFOR1VMIFNZTExBQkxFIEJZSUcKK0JFMkE7QkUyQTsxMTA3IDExNzQgMTFBOTtCRTJBOzExMDcgMTE3NCAxMUE5OyAjICjruKo7IOu4qjsg4YSH4YW04YapOyDruKo7IOGEh+GFtOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQllJR0cKK0JFMkI7QkUyQjsxMTA3IDExNzQgMTFBQTtCRTJCOzExMDcgMTE3NCAxMUFBOyAjICjruKs7IOu4qzsg4YSH4YW04YaqOyDruKs7IOGEh+GFtOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQllJR1MKK0JFMkM7QkUyQzsxMTA3IDExNzQgMTFBQjtCRTJDOzExMDcgMTE3NCAxMUFCOyAjICjruKw7IOu4rDsg4YSH4YW04YarOyDruKw7IOGEh+GFtOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQllJTgorQkUyRDtCRTJEOzExMDcgMTE3NCAxMUFDO0JFMkQ7MTEwNyAxMTc0IDExQUM7ICMgKOu4rTsg67itOyDhhIfhhbThhqw7IOu4rTsg4YSH4YW04YasOyApIEhBTkdVTCBTWUxMQUJMRSBCWUlOSgorQkUyRTtCRTJFOzExMDcgMTE3NCAxMUFEO0JFMkU7MTEwNyAxMTc0IDExQUQ7ICMgKOu4rjsg67iuOyDhhIfhhbThhq07IOu4rjsg4YSH4YW04YatOyApIEhBTkdVTCBTWUxMQUJMRSBCWUlOSAorQkUyRjtCRTJGOzExMDcgMTE3NCAxMUFFO0JFMkY7MTEwNyAxMTc0IDExQUU7ICMgKOu4rzsg67ivOyDhhIfhhbThhq47IOu4rzsg4YSH4YW04YauOyApIEhBTkdVTCBTWUxMQUJMRSBCWUlECitCRTMwO0JFMzA7MTEwNyAxMTc0IDExQUY7QkUzMDsxMTA3IDExNzQgMTFBRjsgIyAo67iwOyDruLA7IOGEh+GFtOGGrzsg67iwOyDhhIfhhbThhq87ICkgSEFOR1VMIFNZTExBQkxFIEJZSUwKK0JFMzE7QkUzMTsxMTA3IDExNzQgMTFCMDtCRTMxOzExMDcgMTE3NCAxMUIwOyAjICjruLE7IOu4sTsg4YSH4YW04YawOyDruLE7IOGEh+GFtOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQllJTEcKK0JFMzI7QkUzMjsxMTA3IDExNzQgMTFCMTtCRTMyOzExMDcgMTE3NCAxMUIxOyAjICjruLI7IOu4sjsg4YSH4YW04YaxOyDruLI7IOGEh+GFtOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQllJTE0KK0JFMzM7QkUzMzsxMTA3IDExNzQgMTFCMjtCRTMzOzExMDcgMTE3NCAxMUIyOyAjICjruLM7IOu4szsg4YSH4YW04YayOyDruLM7IOGEh+GFtOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQllJTEIKK0JFMzQ7QkUzNDsxMTA3IDExNzQgMTFCMztCRTM0OzExMDcgMTE3NCAxMUIzOyAjICjruLQ7IOu4tDsg4YSH4YW04YazOyDruLQ7IOGEh+GFtOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQllJTFMKK0JFMzU7QkUzNTsxMTA3IDExNzQgMTFCNDtCRTM1OzExMDcgMTE3NCAxMUI0OyAjICjruLU7IOu4tTsg4YSH4YW04Ya0OyDruLU7IOGEh+GFtOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQllJTFQKK0JFMzY7QkUzNjsxMTA3IDExNzQgMTFCNTtCRTM2OzExMDcgMTE3NCAxMUI1OyAjICjruLY7IOu4tjsg4YSH4YW04Ya1OyDruLY7IOGEh+GFtOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQllJTFAKK0JFMzc7QkUzNzsxMTA3IDExNzQgMTFCNjtCRTM3OzExMDcgMTE3NCAxMUI2OyAjICjruLc7IOu4tzsg4YSH4YW04Ya2OyDruLc7IOGEh+GFtOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQllJTEgKK0JFMzg7QkUzODsxMTA3IDExNzQgMTFCNztCRTM4OzExMDcgMTE3NCAxMUI3OyAjICjruLg7IOu4uDsg4YSH4YW04Ya3OyDruLg7IOGEh+GFtOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQllJTQorQkUzOTtCRTM5OzExMDcgMTE3NCAxMUI4O0JFMzk7MTEwNyAxMTc0IDExQjg7ICMgKOu4uTsg67i5OyDhhIfhhbThhrg7IOu4uTsg4YSH4YW04Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBCWUlCCitCRTNBO0JFM0E7MTEwNyAxMTc0IDExQjk7QkUzQTsxMTA3IDExNzQgMTFCOTsgIyAo67i6OyDruLo7IOGEh+GFtOGGuTsg67i6OyDhhIfhhbThhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJZSUJTCitCRTNCO0JFM0I7MTEwNyAxMTc0IDExQkE7QkUzQjsxMTA3IDExNzQgMTFCQTsgIyAo67i7OyDruLs7IOGEh+GFtOGGujsg67i7OyDhhIfhhbThhro7ICkgSEFOR1VMIFNZTExBQkxFIEJZSVMKK0JFM0M7QkUzQzsxMTA3IDExNzQgMTFCQjtCRTNDOzExMDcgMTE3NCAxMUJCOyAjICjruLw7IOu4vDsg4YSH4YW04Ya7OyDruLw7IOGEh+GFtOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQllJU1MKK0JFM0Q7QkUzRDsxMTA3IDExNzQgMTFCQztCRTNEOzExMDcgMTE3NCAxMUJDOyAjICjruL07IOu4vTsg4YSH4YW04Ya8OyDruL07IOGEh+GFtOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQllJTkcKK0JFM0U7QkUzRTsxMTA3IDExNzQgMTFCRDtCRTNFOzExMDcgMTE3NCAxMUJEOyAjICjruL47IOu4vjsg4YSH4YW04Ya9OyDruL47IOGEh+GFtOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQllJSgorQkUzRjtCRTNGOzExMDcgMTE3NCAxMUJFO0JFM0Y7MTEwNyAxMTc0IDExQkU7ICMgKOu4vzsg67i/OyDhhIfhhbThhr47IOu4vzsg4YSH4YW04Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBCWUlDCitCRTQwO0JFNDA7MTEwNyAxMTc0IDExQkY7QkU0MDsxMTA3IDExNzQgMTFCRjsgIyAo67mAOyDruYA7IOGEh+GFtOGGvzsg67mAOyDhhIfhhbThhr87ICkgSEFOR1VMIFNZTExBQkxFIEJZSUsKK0JFNDE7QkU0MTsxMTA3IDExNzQgMTFDMDtCRTQxOzExMDcgMTE3NCAxMUMwOyAjICjruYE7IOu5gTsg4YSH4YW04YeAOyDruYE7IOGEh+GFtOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQllJVAorQkU0MjtCRTQyOzExMDcgMTE3NCAxMUMxO0JFNDI7MTEwNyAxMTc0IDExQzE7ICMgKOu5gjsg67mCOyDhhIfhhbThh4E7IOu5gjsg4YSH4YW04YeBOyApIEhBTkdVTCBTWUxMQUJMRSBCWUlQCitCRTQzO0JFNDM7MTEwNyAxMTc0IDExQzI7QkU0MzsxMTA3IDExNzQgMTFDMjsgIyAo67mDOyDruYM7IOGEh+GFtOGHgjsg67mDOyDhhIfhhbThh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJZSUgKK0JFNDQ7QkU0NDsxMTA3IDExNzU7QkU0NDsxMTA3IDExNzU7ICMgKOu5hDsg67mEOyDhhIfhhbU7IOu5hDsg4YSH4YW1OyApIEhBTkdVTCBTWUxMQUJMRSBCSQorQkU0NTtCRTQ1OzExMDcgMTE3NSAxMUE4O0JFNDU7MTEwNyAxMTc1IDExQTg7ICMgKOu5hTsg67mFOyDhhIfhhbXhhqg7IOu5hTsg4YSH4YW14YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCSUcKK0JFNDY7QkU0NjsxMTA3IDExNzUgMTFBOTtCRTQ2OzExMDcgMTE3NSAxMUE5OyAjICjruYY7IOu5hjsg4YSH4YW14YapOyDruYY7IOGEh+GFteGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQklHRworQkU0NztCRTQ3OzExMDcgMTE3NSAxMUFBO0JFNDc7MTEwNyAxMTc1IDExQUE7ICMgKOu5hzsg67mHOyDhhIfhhbXhhqo7IOu5hzsg4YSH4YW14YaqOyApIEhBTkdVTCBTWUxMQUJMRSBCSUdTCitCRTQ4O0JFNDg7MTEwNyAxMTc1IDExQUI7QkU0ODsxMTA3IDExNzUgMTFBQjsgIyAo67mIOyDruYg7IOGEh+GFteGGqzsg67mIOyDhhIfhhbXhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJJTgorQkU0OTtCRTQ5OzExMDcgMTE3NSAxMUFDO0JFNDk7MTEwNyAxMTc1IDExQUM7ICMgKOu5iTsg67mJOyDhhIfhhbXhhqw7IOu5iTsg4YSH4YW14YasOyApIEhBTkdVTCBTWUxMQUJMRSBCSU5KCitCRTRBO0JFNEE7MTEwNyAxMTc1IDExQUQ7QkU0QTsxMTA3IDExNzUgMTFBRDsgIyAo67mKOyDruYo7IOGEh+GFteGGrTsg67mKOyDhhIfhhbXhhq07ICkgSEFOR1VMIFNZTExBQkxFIEJJTkgKK0JFNEI7QkU0QjsxMTA3IDExNzUgMTFBRTtCRTRCOzExMDcgMTE3NSAxMUFFOyAjICjruYs7IOu5izsg4YSH4YW14YauOyDruYs7IOGEh+GFteGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQklECitCRTRDO0JFNEM7MTEwNyAxMTc1IDExQUY7QkU0QzsxMTA3IDExNzUgMTFBRjsgIyAo67mMOyDruYw7IOGEh+GFteGGrzsg67mMOyDhhIfhhbXhhq87ICkgSEFOR1VMIFNZTExBQkxFIEJJTAorQkU0RDtCRTREOzExMDcgMTE3NSAxMUIwO0JFNEQ7MTEwNyAxMTc1IDExQjA7ICMgKOu5jTsg67mNOyDhhIfhhbXhhrA7IOu5jTsg4YSH4YW14YawOyApIEhBTkdVTCBTWUxMQUJMRSBCSUxHCitCRTRFO0JFNEU7MTEwNyAxMTc1IDExQjE7QkU0RTsxMTA3IDExNzUgMTFCMTsgIyAo67mOOyDruY47IOGEh+GFteGGsTsg67mOOyDhhIfhhbXhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJJTE0KK0JFNEY7QkU0RjsxMTA3IDExNzUgMTFCMjtCRTRGOzExMDcgMTE3NSAxMUIyOyAjICjruY87IOu5jzsg4YSH4YW14YayOyDruY87IOGEh+GFteGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQklMQgorQkU1MDtCRTUwOzExMDcgMTE3NSAxMUIzO0JFNTA7MTEwNyAxMTc1IDExQjM7ICMgKOu5kDsg67mQOyDhhIfhhbXhhrM7IOu5kDsg4YSH4YW14YazOyApIEhBTkdVTCBTWUxMQUJMRSBCSUxTCitCRTUxO0JFNTE7MTEwNyAxMTc1IDExQjQ7QkU1MTsxMTA3IDExNzUgMTFCNDsgIyAo67mROyDruZE7IOGEh+GFteGGtDsg67mROyDhhIfhhbXhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJJTFQKK0JFNTI7QkU1MjsxMTA3IDExNzUgMTFCNTtCRTUyOzExMDcgMTE3NSAxMUI1OyAjICjruZI7IOu5kjsg4YSH4YW14Ya1OyDruZI7IOGEh+GFteGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQklMUAorQkU1MztCRTUzOzExMDcgMTE3NSAxMUI2O0JFNTM7MTEwNyAxMTc1IDExQjY7ICMgKOu5kzsg67mTOyDhhIfhhbXhhrY7IOu5kzsg4YSH4YW14Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBCSUxICitCRTU0O0JFNTQ7MTEwNyAxMTc1IDExQjc7QkU1NDsxMTA3IDExNzUgMTFCNzsgIyAo67mUOyDruZQ7IOGEh+GFteGGtzsg67mUOyDhhIfhhbXhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJJTQorQkU1NTtCRTU1OzExMDcgMTE3NSAxMUI4O0JFNTU7MTEwNyAxMTc1IDExQjg7ICMgKOu5lTsg67mVOyDhhIfhhbXhhrg7IOu5lTsg4YSH4YW14Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBCSUIKK0JFNTY7QkU1NjsxMTA3IDExNzUgMTFCOTtCRTU2OzExMDcgMTE3NSAxMUI5OyAjICjruZY7IOu5ljsg4YSH4YW14Ya5OyDruZY7IOGEh+GFteGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQklCUworQkU1NztCRTU3OzExMDcgMTE3NSAxMUJBO0JFNTc7MTEwNyAxMTc1IDExQkE7ICMgKOu5lzsg67mXOyDhhIfhhbXhhro7IOu5lzsg4YSH4YW14Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCSVMKK0JFNTg7QkU1ODsxMTA3IDExNzUgMTFCQjtCRTU4OzExMDcgMTE3NSAxMUJCOyAjICjruZg7IOu5mDsg4YSH4YW14Ya7OyDruZg7IOGEh+GFteGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQklTUworQkU1OTtCRTU5OzExMDcgMTE3NSAxMUJDO0JFNTk7MTEwNyAxMTc1IDExQkM7ICMgKOu5mTsg67mZOyDhhIfhhbXhhrw7IOu5mTsg4YSH4YW14Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBCSU5HCitCRTVBO0JFNUE7MTEwNyAxMTc1IDExQkQ7QkU1QTsxMTA3IDExNzUgMTFCRDsgIyAo67maOyDruZo7IOGEh+GFteGGvTsg67maOyDhhIfhhbXhhr07ICkgSEFOR1VMIFNZTExBQkxFIEJJSgorQkU1QjtCRTVCOzExMDcgMTE3NSAxMUJFO0JFNUI7MTEwNyAxMTc1IDExQkU7ICMgKOu5mzsg67mbOyDhhIfhhbXhhr47IOu5mzsg4YSH4YW14Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBCSUMKK0JFNUM7QkU1QzsxMTA3IDExNzUgMTFCRjtCRTVDOzExMDcgMTE3NSAxMUJGOyAjICjruZw7IOu5nDsg4YSH4YW14Ya/OyDruZw7IOGEh+GFteGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQklLCitCRTVEO0JFNUQ7MTEwNyAxMTc1IDExQzA7QkU1RDsxMTA3IDExNzUgMTFDMDsgIyAo67mdOyDruZ07IOGEh+GFteGHgDsg67mdOyDhhIfhhbXhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJJVAorQkU1RTtCRTVFOzExMDcgMTE3NSAxMUMxO0JFNUU7MTEwNyAxMTc1IDExQzE7ICMgKOu5njsg67meOyDhhIfhhbXhh4E7IOu5njsg4YSH4YW14YeBOyApIEhBTkdVTCBTWUxMQUJMRSBCSVAKK0JFNUY7QkU1RjsxMTA3IDExNzUgMTFDMjtCRTVGOzExMDcgMTE3NSAxMUMyOyAjICjruZ87IOu5nzsg4YSH4YW14YeCOyDruZ87IOGEh+GFteGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQklICitCRTYwO0JFNjA7MTEwOCAxMTYxO0JFNjA7MTEwOCAxMTYxOyAjICjruaA7IOu5oDsg4YSI4YWhOyDruaA7IOGEiOGFoTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBCitCRTYxO0JFNjE7MTEwOCAxMTYxIDExQTg7QkU2MTsxMTA4IDExNjEgMTFBODsgIyAo67mhOyDruaE7IOGEiOGFoeGGqDsg67mhOyDhhIjhhaHhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEJCQUcKK0JFNjI7QkU2MjsxMTA4IDExNjEgMTFBOTtCRTYyOzExMDggMTE2MSAxMUE5OyAjICjruaI7IOu5ojsg4YSI4YWh4YapOyDruaI7IOGEiOGFoeGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBR0cKK0JFNjM7QkU2MzsxMTA4IDExNjEgMTFBQTtCRTYzOzExMDggMTE2MSAxMUFBOyAjICjruaM7IOu5ozsg4YSI4YWh4YaqOyDruaM7IOGEiOGFoeGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBR1MKK0JFNjQ7QkU2NDsxMTA4IDExNjEgMTFBQjtCRTY0OzExMDggMTE2MSAxMUFCOyAjICjruaQ7IOu5pDsg4YSI4YWh4YarOyDruaQ7IOGEiOGFoeGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBTgorQkU2NTtCRTY1OzExMDggMTE2MSAxMUFDO0JFNjU7MTEwOCAxMTYxIDExQUM7ICMgKOu5pTsg67mlOyDhhIjhhaHhhqw7IOu5pTsg4YSI4YWh4YasOyApIEhBTkdVTCBTWUxMQUJMRSBCQkFOSgorQkU2NjtCRTY2OzExMDggMTE2MSAxMUFEO0JFNjY7MTEwOCAxMTYxIDExQUQ7ICMgKOu5pjsg67mmOyDhhIjhhaHhhq07IOu5pjsg4YSI4YWh4YatOyApIEhBTkdVTCBTWUxMQUJMRSBCQkFOSAorQkU2NztCRTY3OzExMDggMTE2MSAxMUFFO0JFNjc7MTEwOCAxMTYxIDExQUU7ICMgKOu5pzsg67mnOyDhhIjhhaHhhq47IOu5pzsg4YSI4YWh4YauOyApIEhBTkdVTCBTWUxMQUJMRSBCQkFECitCRTY4O0JFNjg7MTEwOCAxMTYxIDExQUY7QkU2ODsxMTA4IDExNjEgMTFBRjsgIyAo67moOyDruag7IOGEiOGFoeGGrzsg67moOyDhhIjhhaHhhq87ICkgSEFOR1VMIFNZTExBQkxFIEJCQUwKK0JFNjk7QkU2OTsxMTA4IDExNjEgMTFCMDtCRTY5OzExMDggMTE2MSAxMUIwOyAjICjruak7IOu5qTsg4YSI4YWh4YawOyDruak7IOGEiOGFoeGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBTEcKK0JFNkE7QkU2QTsxMTA4IDExNjEgMTFCMTtCRTZBOzExMDggMTE2MSAxMUIxOyAjICjruao7IOu5qjsg4YSI4YWh4YaxOyDruao7IOGEiOGFoeGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBTE0KK0JFNkI7QkU2QjsxMTA4IDExNjEgMTFCMjtCRTZCOzExMDggMTE2MSAxMUIyOyAjICjruas7IOu5qzsg4YSI4YWh4YayOyDruas7IOGEiOGFoeGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBTEIKK0JFNkM7QkU2QzsxMTA4IDExNjEgMTFCMztCRTZDOzExMDggMTE2MSAxMUIzOyAjICjruaw7IOu5rDsg4YSI4YWh4YazOyDruaw7IOGEiOGFoeGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBTFMKK0JFNkQ7QkU2RDsxMTA4IDExNjEgMTFCNDtCRTZEOzExMDggMTE2MSAxMUI0OyAjICjrua07IOu5rTsg4YSI4YWh4Ya0OyDrua07IOGEiOGFoeGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBTFQKK0JFNkU7QkU2RTsxMTA4IDExNjEgMTFCNTtCRTZFOzExMDggMTE2MSAxMUI1OyAjICjrua47IOu5rjsg4YSI4YWh4Ya1OyDrua47IOGEiOGFoeGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBTFAKK0JFNkY7QkU2RjsxMTA4IDExNjEgMTFCNjtCRTZGOzExMDggMTE2MSAxMUI2OyAjICjrua87IOu5rzsg4YSI4YWh4Ya2OyDrua87IOGEiOGFoeGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBTEgKK0JFNzA7QkU3MDsxMTA4IDExNjEgMTFCNztCRTcwOzExMDggMTE2MSAxMUI3OyAjICjrubA7IOu5sDsg4YSI4YWh4Ya3OyDrubA7IOGEiOGFoeGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBTQorQkU3MTtCRTcxOzExMDggMTE2MSAxMUI4O0JFNzE7MTEwOCAxMTYxIDExQjg7ICMgKOu5sTsg67mxOyDhhIjhhaHhhrg7IOu5sTsg4YSI4YWh4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBCQkFCCitCRTcyO0JFNzI7MTEwOCAxMTYxIDExQjk7QkU3MjsxMTA4IDExNjEgMTFCOTsgIyAo67myOyDrubI7IOGEiOGFoeGGuTsg67myOyDhhIjhhaHhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJCQUJTCitCRTczO0JFNzM7MTEwOCAxMTYxIDExQkE7QkU3MzsxMTA4IDExNjEgMTFCQTsgIyAo67mzOyDrubM7IOGEiOGFoeGGujsg67mzOyDhhIjhhaHhhro7ICkgSEFOR1VMIFNZTExBQkxFIEJCQVMKK0JFNzQ7QkU3NDsxMTA4IDExNjEgMTFCQjtCRTc0OzExMDggMTE2MSAxMUJCOyAjICjrubQ7IOu5tDsg4YSI4YWh4Ya7OyDrubQ7IOGEiOGFoeGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBU1MKK0JFNzU7QkU3NTsxMTA4IDExNjEgMTFCQztCRTc1OzExMDggMTE2MSAxMUJDOyAjICjrubU7IOu5tTsg4YSI4YWh4Ya8OyDrubU7IOGEiOGFoeGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBTkcKK0JFNzY7QkU3NjsxMTA4IDExNjEgMTFCRDtCRTc2OzExMDggMTE2MSAxMUJEOyAjICjrubY7IOu5tjsg4YSI4YWh4Ya9OyDrubY7IOGEiOGFoeGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBSgorQkU3NztCRTc3OzExMDggMTE2MSAxMUJFO0JFNzc7MTEwOCAxMTYxIDExQkU7ICMgKOu5tzsg67m3OyDhhIjhhaHhhr47IOu5tzsg4YSI4YWh4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBCQkFDCitCRTc4O0JFNzg7MTEwOCAxMTYxIDExQkY7QkU3ODsxMTA4IDExNjEgMTFCRjsgIyAo67m4OyDrubg7IOGEiOGFoeGGvzsg67m4OyDhhIjhhaHhhr87ICkgSEFOR1VMIFNZTExBQkxFIEJCQUsKK0JFNzk7QkU3OTsxMTA4IDExNjEgMTFDMDtCRTc5OzExMDggMTE2MSAxMUMwOyAjICjrubk7IOu5uTsg4YSI4YWh4YeAOyDrubk7IOGEiOGFoeGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBVAorQkU3QTtCRTdBOzExMDggMTE2MSAxMUMxO0JFN0E7MTEwOCAxMTYxIDExQzE7ICMgKOu5ujsg67m6OyDhhIjhhaHhh4E7IOu5ujsg4YSI4YWh4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBCQkFQCitCRTdCO0JFN0I7MTEwOCAxMTYxIDExQzI7QkU3QjsxMTA4IDExNjEgMTFDMjsgIyAo67m7OyDrubs7IOGEiOGFoeGHgjsg67m7OyDhhIjhhaHhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJCQUgKK0JFN0M7QkU3QzsxMTA4IDExNjI7QkU3QzsxMTA4IDExNjI7ICMgKOu5vDsg67m8OyDhhIjhhaI7IOu5vDsg4YSI4YWiOyApIEhBTkdVTCBTWUxMQUJMRSBCQkFFCitCRTdEO0JFN0Q7MTEwOCAxMTYyIDExQTg7QkU3RDsxMTA4IDExNjIgMTFBODsgIyAo67m9OyDrub07IOGEiOGFouGGqDsg67m9OyDhhIjhhaLhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEJCQUVHCitCRTdFO0JFN0U7MTEwOCAxMTYyIDExQTk7QkU3RTsxMTA4IDExNjIgMTFBOTsgIyAo67m+OyDrub47IOGEiOGFouGGqTsg67m+OyDhhIjhhaLhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEJCQUVHRworQkU3RjtCRTdGOzExMDggMTE2MiAxMUFBO0JFN0Y7MTEwOCAxMTYyIDExQUE7ICMgKOu5vzsg67m/OyDhhIjhhaLhhqo7IOu5vzsg4YSI4YWi4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBCQkFFR1MKK0JFODA7QkU4MDsxMTA4IDExNjIgMTFBQjtCRTgwOzExMDggMTE2MiAxMUFCOyAjICjruoA7IOu6gDsg4YSI4YWi4YarOyDruoA7IOGEiOGFouGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBRU4KK0JFODE7QkU4MTsxMTA4IDExNjIgMTFBQztCRTgxOzExMDggMTE2MiAxMUFDOyAjICjruoE7IOu6gTsg4YSI4YWi4YasOyDruoE7IOGEiOGFouGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBRU5KCitCRTgyO0JFODI7MTEwOCAxMTYyIDExQUQ7QkU4MjsxMTA4IDExNjIgMTFBRDsgIyAo67qCOyDruoI7IOGEiOGFouGGrTsg67qCOyDhhIjhhaLhhq07ICkgSEFOR1VMIFNZTExBQkxFIEJCQUVOSAorQkU4MztCRTgzOzExMDggMTE2MiAxMUFFO0JFODM7MTEwOCAxMTYyIDExQUU7ICMgKOu6gzsg67qDOyDhhIjhhaLhhq47IOu6gzsg4YSI4YWi4YauOyApIEhBTkdVTCBTWUxMQUJMRSBCQkFFRAorQkU4NDtCRTg0OzExMDggMTE2MiAxMUFGO0JFODQ7MTEwOCAxMTYyIDExQUY7ICMgKOu6hDsg67qEOyDhhIjhhaLhhq87IOu6hDsg4YSI4YWi4YavOyApIEhBTkdVTCBTWUxMQUJMRSBCQkFFTAorQkU4NTtCRTg1OzExMDggMTE2MiAxMUIwO0JFODU7MTEwOCAxMTYyIDExQjA7ICMgKOu6hTsg67qFOyDhhIjhhaLhhrA7IOu6hTsg4YSI4YWi4YawOyApIEhBTkdVTCBTWUxMQUJMRSBCQkFFTEcKK0JFODY7QkU4NjsxMTA4IDExNjIgMTFCMTtCRTg2OzExMDggMTE2MiAxMUIxOyAjICjruoY7IOu6hjsg4YSI4YWi4YaxOyDruoY7IOGEiOGFouGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBRUxNCitCRTg3O0JFODc7MTEwOCAxMTYyIDExQjI7QkU4NzsxMTA4IDExNjIgMTFCMjsgIyAo67qHOyDruoc7IOGEiOGFouGGsjsg67qHOyDhhIjhhaLhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEJCQUVMQgorQkU4ODtCRTg4OzExMDggMTE2MiAxMUIzO0JFODg7MTEwOCAxMTYyIDExQjM7ICMgKOu6iDsg67qIOyDhhIjhhaLhhrM7IOu6iDsg4YSI4YWi4YazOyApIEhBTkdVTCBTWUxMQUJMRSBCQkFFTFMKK0JFODk7QkU4OTsxMTA4IDExNjIgMTFCNDtCRTg5OzExMDggMTE2MiAxMUI0OyAjICjruok7IOu6iTsg4YSI4YWi4Ya0OyDruok7IOGEiOGFouGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBRUxUCitCRThBO0JFOEE7MTEwOCAxMTYyIDExQjU7QkU4QTsxMTA4IDExNjIgMTFCNTsgIyAo67qKOyDruoo7IOGEiOGFouGGtTsg67qKOyDhhIjhhaLhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEJCQUVMUAorQkU4QjtCRThCOzExMDggMTE2MiAxMUI2O0JFOEI7MTEwOCAxMTYyIDExQjY7ICMgKOu6izsg67qLOyDhhIjhhaLhhrY7IOu6izsg4YSI4YWi4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBCQkFFTEgKK0JFOEM7QkU4QzsxMTA4IDExNjIgMTFCNztCRThDOzExMDggMTE2MiAxMUI3OyAjICjruow7IOu6jDsg4YSI4YWi4Ya3OyDruow7IOGEiOGFouGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBRU0KK0JFOEQ7QkU4RDsxMTA4IDExNjIgMTFCODtCRThEOzExMDggMTE2MiAxMUI4OyAjICjruo07IOu6jTsg4YSI4YWi4Ya4OyDruo07IOGEiOGFouGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBRUIKK0JFOEU7QkU4RTsxMTA4IDExNjIgMTFCOTtCRThFOzExMDggMTE2MiAxMUI5OyAjICjruo47IOu6jjsg4YSI4YWi4Ya5OyDruo47IOGEiOGFouGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBRUJTCitCRThGO0JFOEY7MTEwOCAxMTYyIDExQkE7QkU4RjsxMTA4IDExNjIgMTFCQTsgIyAo67qPOyDruo87IOGEiOGFouGGujsg67qPOyDhhIjhhaLhhro7ICkgSEFOR1VMIFNZTExBQkxFIEJCQUVTCitCRTkwO0JFOTA7MTEwOCAxMTYyIDExQkI7QkU5MDsxMTA4IDExNjIgMTFCQjsgIyAo67qQOyDrupA7IOGEiOGFouGGuzsg67qQOyDhhIjhhaLhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEJCQUVTUworQkU5MTtCRTkxOzExMDggMTE2MiAxMUJDO0JFOTE7MTEwOCAxMTYyIDExQkM7ICMgKOu6kTsg67qROyDhhIjhhaLhhrw7IOu6kTsg4YSI4YWi4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBCQkFFTkcKK0JFOTI7QkU5MjsxMTA4IDExNjIgMTFCRDtCRTkyOzExMDggMTE2MiAxMUJEOyAjICjrupI7IOu6kjsg4YSI4YWi4Ya9OyDrupI7IOGEiOGFouGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBRUoKK0JFOTM7QkU5MzsxMTA4IDExNjIgMTFCRTtCRTkzOzExMDggMTE2MiAxMUJFOyAjICjrupM7IOu6kzsg4YSI4YWi4Ya+OyDrupM7IOGEiOGFouGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBRUMKK0JFOTQ7QkU5NDsxMTA4IDExNjIgMTFCRjtCRTk0OzExMDggMTE2MiAxMUJGOyAjICjrupQ7IOu6lDsg4YSI4YWi4Ya/OyDrupQ7IOGEiOGFouGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBRUsKK0JFOTU7QkU5NTsxMTA4IDExNjIgMTFDMDtCRTk1OzExMDggMTE2MiAxMUMwOyAjICjrupU7IOu6lTsg4YSI4YWi4YeAOyDrupU7IOGEiOGFouGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBRVQKK0JFOTY7QkU5NjsxMTA4IDExNjIgMTFDMTtCRTk2OzExMDggMTE2MiAxMUMxOyAjICjrupY7IOu6ljsg4YSI4YWi4YeBOyDrupY7IOGEiOGFouGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBRVAKK0JFOTc7QkU5NzsxMTA4IDExNjIgMTFDMjtCRTk3OzExMDggMTE2MiAxMUMyOyAjICjrupc7IOu6lzsg4YSI4YWi4YeCOyDrupc7IOGEiOGFouGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJBRUgKK0JFOTg7QkU5ODsxMTA4IDExNjM7QkU5ODsxMTA4IDExNjM7ICMgKOu6mDsg67qYOyDhhIjhhaM7IOu6mDsg4YSI4YWjOyApIEhBTkdVTCBTWUxMQUJMRSBCQllBCitCRTk5O0JFOTk7MTEwOCAxMTYzIDExQTg7QkU5OTsxMTA4IDExNjMgMTFBODsgIyAo67qZOyDrupk7IOGEiOGFo+GGqDsg67qZOyDhhIjhhaPhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUFHCitCRTlBO0JFOUE7MTEwOCAxMTYzIDExQTk7QkU5QTsxMTA4IDExNjMgMTFBOTsgIyAo67qaOyDrupo7IOGEiOGFo+GGqTsg67qaOyDhhIjhhaPhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUFHRworQkU5QjtCRTlCOzExMDggMTE2MyAxMUFBO0JFOUI7MTEwOCAxMTYzIDExQUE7ICMgKOu6mzsg67qbOyDhhIjhhaPhhqo7IOu6mzsg4YSI4YWj4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBCQllBR1MKK0JFOUM7QkU5QzsxMTA4IDExNjMgMTFBQjtCRTlDOzExMDggMTE2MyAxMUFCOyAjICjrupw7IOu6nDsg4YSI4YWj4YarOyDrupw7IOGEiOGFo+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQU4KK0JFOUQ7QkU5RDsxMTA4IDExNjMgMTFBQztCRTlEOzExMDggMTE2MyAxMUFDOyAjICjrup07IOu6nTsg4YSI4YWj4YasOyDrup07IOGEiOGFo+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQU5KCitCRTlFO0JFOUU7MTEwOCAxMTYzIDExQUQ7QkU5RTsxMTA4IDExNjMgMTFBRDsgIyAo67qeOyDrup47IOGEiOGFo+GGrTsg67qeOyDhhIjhhaPhhq07ICkgSEFOR1VMIFNZTExBQkxFIEJCWUFOSAorQkU5RjtCRTlGOzExMDggMTE2MyAxMUFFO0JFOUY7MTEwOCAxMTYzIDExQUU7ICMgKOu6nzsg67qfOyDhhIjhhaPhhq47IOu6nzsg4YSI4YWj4YauOyApIEhBTkdVTCBTWUxMQUJMRSBCQllBRAorQkVBMDtCRUEwOzExMDggMTE2MyAxMUFGO0JFQTA7MTEwOCAxMTYzIDExQUY7ICMgKOu6oDsg67qgOyDhhIjhhaPhhq87IOu6oDsg4YSI4YWj4YavOyApIEhBTkdVTCBTWUxMQUJMRSBCQllBTAorQkVBMTtCRUExOzExMDggMTE2MyAxMUIwO0JFQTE7MTEwOCAxMTYzIDExQjA7ICMgKOu6oTsg67qhOyDhhIjhhaPhhrA7IOu6oTsg4YSI4YWj4YawOyApIEhBTkdVTCBTWUxMQUJMRSBCQllBTEcKK0JFQTI7QkVBMjsxMTA4IDExNjMgMTFCMTtCRUEyOzExMDggMTE2MyAxMUIxOyAjICjruqI7IOu6ojsg4YSI4YWj4YaxOyDruqI7IOGEiOGFo+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQUxNCitCRUEzO0JFQTM7MTEwOCAxMTYzIDExQjI7QkVBMzsxMTA4IDExNjMgMTFCMjsgIyAo67qjOyDruqM7IOGEiOGFo+GGsjsg67qjOyDhhIjhhaPhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUFMQgorQkVBNDtCRUE0OzExMDggMTE2MyAxMUIzO0JFQTQ7MTEwOCAxMTYzIDExQjM7ICMgKOu6pDsg67qkOyDhhIjhhaPhhrM7IOu6pDsg4YSI4YWj4YazOyApIEhBTkdVTCBTWUxMQUJMRSBCQllBTFMKK0JFQTU7QkVBNTsxMTA4IDExNjMgMTFCNDtCRUE1OzExMDggMTE2MyAxMUI0OyAjICjruqU7IOu6pTsg4YSI4YWj4Ya0OyDruqU7IOGEiOGFo+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQUxUCitCRUE2O0JFQTY7MTEwOCAxMTYzIDExQjU7QkVBNjsxMTA4IDExNjMgMTFCNTsgIyAo67qmOyDruqY7IOGEiOGFo+GGtTsg67qmOyDhhIjhhaPhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUFMUAorQkVBNztCRUE3OzExMDggMTE2MyAxMUI2O0JFQTc7MTEwOCAxMTYzIDExQjY7ICMgKOu6pzsg67qnOyDhhIjhhaPhhrY7IOu6pzsg4YSI4YWj4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBCQllBTEgKK0JFQTg7QkVBODsxMTA4IDExNjMgMTFCNztCRUE4OzExMDggMTE2MyAxMUI3OyAjICjruqg7IOu6qDsg4YSI4YWj4Ya3OyDruqg7IOGEiOGFo+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQU0KK0JFQTk7QkVBOTsxMTA4IDExNjMgMTFCODtCRUE5OzExMDggMTE2MyAxMUI4OyAjICjruqk7IOu6qTsg4YSI4YWj4Ya4OyDruqk7IOGEiOGFo+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQUIKK0JFQUE7QkVBQTsxMTA4IDExNjMgMTFCOTtCRUFBOzExMDggMTE2MyAxMUI5OyAjICjruqo7IOu6qjsg4YSI4YWj4Ya5OyDruqo7IOGEiOGFo+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQUJTCitCRUFCO0JFQUI7MTEwOCAxMTYzIDExQkE7QkVBQjsxMTA4IDExNjMgMTFCQTsgIyAo67qrOyDruqs7IOGEiOGFo+GGujsg67qrOyDhhIjhhaPhhro7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUFTCitCRUFDO0JFQUM7MTEwOCAxMTYzIDExQkI7QkVBQzsxMTA4IDExNjMgMTFCQjsgIyAo67qsOyDruqw7IOGEiOGFo+GGuzsg67qsOyDhhIjhhaPhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUFTUworQkVBRDtCRUFEOzExMDggMTE2MyAxMUJDO0JFQUQ7MTEwOCAxMTYzIDExQkM7ICMgKOu6rTsg67qtOyDhhIjhhaPhhrw7IOu6rTsg4YSI4YWj4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBCQllBTkcKK0JFQUU7QkVBRTsxMTA4IDExNjMgMTFCRDtCRUFFOzExMDggMTE2MyAxMUJEOyAjICjruq47IOu6rjsg4YSI4YWj4Ya9OyDruq47IOGEiOGFo+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQUoKK0JFQUY7QkVBRjsxMTA4IDExNjMgMTFCRTtCRUFGOzExMDggMTE2MyAxMUJFOyAjICjruq87IOu6rzsg4YSI4YWj4Ya+OyDruq87IOGEiOGFo+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQUMKK0JFQjA7QkVCMDsxMTA4IDExNjMgMTFCRjtCRUIwOzExMDggMTE2MyAxMUJGOyAjICjrurA7IOu6sDsg4YSI4YWj4Ya/OyDrurA7IOGEiOGFo+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQUsKK0JFQjE7QkVCMTsxMTA4IDExNjMgMTFDMDtCRUIxOzExMDggMTE2MyAxMUMwOyAjICjrurE7IOu6sTsg4YSI4YWj4YeAOyDrurE7IOGEiOGFo+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQVQKK0JFQjI7QkVCMjsxMTA4IDExNjMgMTFDMTtCRUIyOzExMDggMTE2MyAxMUMxOyAjICjrurI7IOu6sjsg4YSI4YWj4YeBOyDrurI7IOGEiOGFo+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQVAKK0JFQjM7QkVCMzsxMTA4IDExNjMgMTFDMjtCRUIzOzExMDggMTE2MyAxMUMyOyAjICjrurM7IOu6szsg4YSI4YWj4YeCOyDrurM7IOGEiOGFo+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQUgKK0JFQjQ7QkVCNDsxMTA4IDExNjQ7QkVCNDsxMTA4IDExNjQ7ICMgKOu6tDsg67q0OyDhhIjhhaQ7IOu6tDsg4YSI4YWkOyApIEhBTkdVTCBTWUxMQUJMRSBCQllBRQorQkVCNTtCRUI1OzExMDggMTE2NCAxMUE4O0JFQjU7MTEwOCAxMTY0IDExQTg7ICMgKOu6tTsg67q1OyDhhIjhhaThhqg7IOu6tTsg4YSI4YWk4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCQllBRUcKK0JFQjY7QkVCNjsxMTA4IDExNjQgMTFBOTtCRUI2OzExMDggMTE2NCAxMUE5OyAjICjrurY7IOu6tjsg4YSI4YWk4YapOyDrurY7IOGEiOGFpOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQUVHRworQkVCNztCRUI3OzExMDggMTE2NCAxMUFBO0JFQjc7MTEwOCAxMTY0IDExQUE7ICMgKOu6tzsg67q3OyDhhIjhhaThhqo7IOu6tzsg4YSI4YWk4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBCQllBRUdTCitCRUI4O0JFQjg7MTEwOCAxMTY0IDExQUI7QkVCODsxMTA4IDExNjQgMTFBQjsgIyAo67q4OyDrurg7IOGEiOGFpOGGqzsg67q4OyDhhIjhhaThhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUFFTgorQkVCOTtCRUI5OzExMDggMTE2NCAxMUFDO0JFQjk7MTEwOCAxMTY0IDExQUM7ICMgKOu6uTsg67q5OyDhhIjhhaThhqw7IOu6uTsg4YSI4YWk4YasOyApIEhBTkdVTCBTWUxMQUJMRSBCQllBRU5KCitCRUJBO0JFQkE7MTEwOCAxMTY0IDExQUQ7QkVCQTsxMTA4IDExNjQgMTFBRDsgIyAo67q6OyDruro7IOGEiOGFpOGGrTsg67q6OyDhhIjhhaThhq07ICkgSEFOR1VMIFNZTExBQkxFIEJCWUFFTkgKK0JFQkI7QkVCQjsxMTA4IDExNjQgMTFBRTtCRUJCOzExMDggMTE2NCAxMUFFOyAjICjrurs7IOu6uzsg4YSI4YWk4YauOyDrurs7IOGEiOGFpOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQUVECitCRUJDO0JFQkM7MTEwOCAxMTY0IDExQUY7QkVCQzsxMTA4IDExNjQgMTFBRjsgIyAo67q8OyDrurw7IOGEiOGFpOGGrzsg67q8OyDhhIjhhaThhq87ICkgSEFOR1VMIFNZTExBQkxFIEJCWUFFTAorQkVCRDtCRUJEOzExMDggMTE2NCAxMUIwO0JFQkQ7MTEwOCAxMTY0IDExQjA7ICMgKOu6vTsg67q9OyDhhIjhhaThhrA7IOu6vTsg4YSI4YWk4YawOyApIEhBTkdVTCBTWUxMQUJMRSBCQllBRUxHCitCRUJFO0JFQkU7MTEwOCAxMTY0IDExQjE7QkVCRTsxMTA4IDExNjQgMTFCMTsgIyAo67q+OyDrur47IOGEiOGFpOGGsTsg67q+OyDhhIjhhaThhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUFFTE0KK0JFQkY7QkVCRjsxMTA4IDExNjQgMTFCMjtCRUJGOzExMDggMTE2NCAxMUIyOyAjICjrur87IOu6vzsg4YSI4YWk4YayOyDrur87IOGEiOGFpOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQUVMQgorQkVDMDtCRUMwOzExMDggMTE2NCAxMUIzO0JFQzA7MTEwOCAxMTY0IDExQjM7ICMgKOu7gDsg67uAOyDhhIjhhaThhrM7IOu7gDsg4YSI4YWk4YazOyApIEhBTkdVTCBTWUxMQUJMRSBCQllBRUxTCitCRUMxO0JFQzE7MTEwOCAxMTY0IDExQjQ7QkVDMTsxMTA4IDExNjQgMTFCNDsgIyAo67uBOyDru4E7IOGEiOGFpOGGtDsg67uBOyDhhIjhhaThhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUFFTFQKK0JFQzI7QkVDMjsxMTA4IDExNjQgMTFCNTtCRUMyOzExMDggMTE2NCAxMUI1OyAjICjru4I7IOu7gjsg4YSI4YWk4Ya1OyDru4I7IOGEiOGFpOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQUVMUAorQkVDMztCRUMzOzExMDggMTE2NCAxMUI2O0JFQzM7MTEwOCAxMTY0IDExQjY7ICMgKOu7gzsg67uDOyDhhIjhhaThhrY7IOu7gzsg4YSI4YWk4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBCQllBRUxICitCRUM0O0JFQzQ7MTEwOCAxMTY0IDExQjc7QkVDNDsxMTA4IDExNjQgMTFCNzsgIyAo67uEOyDru4Q7IOGEiOGFpOGGtzsg67uEOyDhhIjhhaThhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUFFTQorQkVDNTtCRUM1OzExMDggMTE2NCAxMUI4O0JFQzU7MTEwOCAxMTY0IDExQjg7ICMgKOu7hTsg67uFOyDhhIjhhaThhrg7IOu7hTsg4YSI4YWk4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBCQllBRUIKK0JFQzY7QkVDNjsxMTA4IDExNjQgMTFCOTtCRUM2OzExMDggMTE2NCAxMUI5OyAjICjru4Y7IOu7hjsg4YSI4YWk4Ya5OyDru4Y7IOGEiOGFpOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQUVCUworQkVDNztCRUM3OzExMDggMTE2NCAxMUJBO0JFQzc7MTEwOCAxMTY0IDExQkE7ICMgKOu7hzsg67uHOyDhhIjhhaThhro7IOu7hzsg4YSI4YWk4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCQllBRVMKK0JFQzg7QkVDODsxMTA4IDExNjQgMTFCQjtCRUM4OzExMDggMTE2NCAxMUJCOyAjICjru4g7IOu7iDsg4YSI4YWk4Ya7OyDru4g7IOGEiOGFpOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQUVTUworQkVDOTtCRUM5OzExMDggMTE2NCAxMUJDO0JFQzk7MTEwOCAxMTY0IDExQkM7ICMgKOu7iTsg67uJOyDhhIjhhaThhrw7IOu7iTsg4YSI4YWk4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBCQllBRU5HCitCRUNBO0JFQ0E7MTEwOCAxMTY0IDExQkQ7QkVDQTsxMTA4IDExNjQgMTFCRDsgIyAo67uKOyDru4o7IOGEiOGFpOGGvTsg67uKOyDhhIjhhaThhr07ICkgSEFOR1VMIFNZTExBQkxFIEJCWUFFSgorQkVDQjtCRUNCOzExMDggMTE2NCAxMUJFO0JFQ0I7MTEwOCAxMTY0IDExQkU7ICMgKOu7izsg67uLOyDhhIjhhaThhr47IOu7izsg4YSI4YWk4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBCQllBRUMKK0JFQ0M7QkVDQzsxMTA4IDExNjQgMTFCRjtCRUNDOzExMDggMTE2NCAxMUJGOyAjICjru4w7IOu7jDsg4YSI4YWk4Ya/OyDru4w7IOGEiOGFpOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQUVLCitCRUNEO0JFQ0Q7MTEwOCAxMTY0IDExQzA7QkVDRDsxMTA4IDExNjQgMTFDMDsgIyAo67uNOyDru407IOGEiOGFpOGHgDsg67uNOyDhhIjhhaThh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUFFVAorQkVDRTtCRUNFOzExMDggMTE2NCAxMUMxO0JFQ0U7MTEwOCAxMTY0IDExQzE7ICMgKOu7jjsg67uOOyDhhIjhhaThh4E7IOu7jjsg4YSI4YWk4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBCQllBRVAKK0JFQ0Y7QkVDRjsxMTA4IDExNjQgMTFDMjtCRUNGOzExMDggMTE2NCAxMUMyOyAjICjru487IOu7jzsg4YSI4YWk4YeCOyDru487IOGEiOGFpOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZQUVICitCRUQwO0JFRDA7MTEwOCAxMTY1O0JFRDA7MTEwOCAxMTY1OyAjICjru5A7IOu7kDsg4YSI4YWlOyDru5A7IOGEiOGFpTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFTworQkVEMTtCRUQxOzExMDggMTE2NSAxMUE4O0JFRDE7MTEwOCAxMTY1IDExQTg7ICMgKOu7kTsg67uROyDhhIjhhaXhhqg7IOu7kTsg4YSI4YWl4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCQkVPRworQkVEMjtCRUQyOzExMDggMTE2NSAxMUE5O0JFRDI7MTEwOCAxMTY1IDExQTk7ICMgKOu7kjsg67uSOyDhhIjhhaXhhqk7IOu7kjsg4YSI4YWl4YapOyApIEhBTkdVTCBTWUxMQUJMRSBCQkVPR0cKK0JFRDM7QkVEMzsxMTA4IDExNjUgMTFBQTtCRUQzOzExMDggMTE2NSAxMUFBOyAjICjru5M7IOu7kzsg4YSI4YWl4YaqOyDru5M7IOGEiOGFpeGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFT0dTCitCRUQ0O0JFRDQ7MTEwOCAxMTY1IDExQUI7QkVENDsxMTA4IDExNjUgMTFBQjsgIyAo67uUOyDru5Q7IOGEiOGFpeGGqzsg67uUOyDhhIjhhaXhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJCRU9OCitCRUQ1O0JFRDU7MTEwOCAxMTY1IDExQUM7QkVENTsxMTA4IDExNjUgMTFBQzsgIyAo67uVOyDru5U7IOGEiOGFpeGGrDsg67uVOyDhhIjhhaXhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEJCRU9OSgorQkVENjtCRUQ2OzExMDggMTE2NSAxMUFEO0JFRDY7MTEwOCAxMTY1IDExQUQ7ICMgKOu7ljsg67uWOyDhhIjhhaXhhq07IOu7ljsg4YSI4YWl4YatOyApIEhBTkdVTCBTWUxMQUJMRSBCQkVPTkgKK0JFRDc7QkVENzsxMTA4IDExNjUgMTFBRTtCRUQ3OzExMDggMTE2NSAxMUFFOyAjICjru5c7IOu7lzsg4YSI4YWl4YauOyDru5c7IOGEiOGFpeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFT0QKK0JFRDg7QkVEODsxMTA4IDExNjUgMTFBRjtCRUQ4OzExMDggMTE2NSAxMUFGOyAjICjru5g7IOu7mDsg4YSI4YWl4YavOyDru5g7IOGEiOGFpeGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFT0wKK0JFRDk7QkVEOTsxMTA4IDExNjUgMTFCMDtCRUQ5OzExMDggMTE2NSAxMUIwOyAjICjru5k7IOu7mTsg4YSI4YWl4YawOyDru5k7IOGEiOGFpeGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFT0xHCitCRURBO0JFREE7MTEwOCAxMTY1IDExQjE7QkVEQTsxMTA4IDExNjUgMTFCMTsgIyAo67uaOyDru5o7IOGEiOGFpeGGsTsg67uaOyDhhIjhhaXhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJCRU9MTQorQkVEQjtCRURCOzExMDggMTE2NSAxMUIyO0JFREI7MTEwOCAxMTY1IDExQjI7ICMgKOu7mzsg67ubOyDhhIjhhaXhhrI7IOu7mzsg4YSI4YWl4YayOyApIEhBTkdVTCBTWUxMQUJMRSBCQkVPTEIKK0JFREM7QkVEQzsxMTA4IDExNjUgMTFCMztCRURDOzExMDggMTE2NSAxMUIzOyAjICjru5w7IOu7nDsg4YSI4YWl4YazOyDru5w7IOGEiOGFpeGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFT0xTCitCRUREO0JFREQ7MTEwOCAxMTY1IDExQjQ7QkVERDsxMTA4IDExNjUgMTFCNDsgIyAo67udOyDru507IOGEiOGFpeGGtDsg67udOyDhhIjhhaXhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJCRU9MVAorQkVERTtCRURFOzExMDggMTE2NSAxMUI1O0JFREU7MTEwOCAxMTY1IDExQjU7ICMgKOu7njsg67ueOyDhhIjhhaXhhrU7IOu7njsg4YSI4YWl4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBCQkVPTFAKK0JFREY7QkVERjsxMTA4IDExNjUgMTFCNjtCRURGOzExMDggMTE2NSAxMUI2OyAjICjru587IOu7nzsg4YSI4YWl4Ya2OyDru587IOGEiOGFpeGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFT0xICitCRUUwO0JFRTA7MTEwOCAxMTY1IDExQjc7QkVFMDsxMTA4IDExNjUgMTFCNzsgIyAo67ugOyDru6A7IOGEiOGFpeGGtzsg67ugOyDhhIjhhaXhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJCRU9NCitCRUUxO0JFRTE7MTEwOCAxMTY1IDExQjg7QkVFMTsxMTA4IDExNjUgMTFCODsgIyAo67uhOyDru6E7IOGEiOGFpeGGuDsg67uhOyDhhIjhhaXhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEJCRU9CCitCRUUyO0JFRTI7MTEwOCAxMTY1IDExQjk7QkVFMjsxMTA4IDExNjUgMTFCOTsgIyAo67uiOyDru6I7IOGEiOGFpeGGuTsg67uiOyDhhIjhhaXhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJCRU9CUworQkVFMztCRUUzOzExMDggMTE2NSAxMUJBO0JFRTM7MTEwOCAxMTY1IDExQkE7ICMgKOu7ozsg67ujOyDhhIjhhaXhhro7IOu7ozsg4YSI4YWl4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCQkVPUworQkVFNDtCRUU0OzExMDggMTE2NSAxMUJCO0JFRTQ7MTEwOCAxMTY1IDExQkI7ICMgKOu7pDsg67ukOyDhhIjhhaXhhrs7IOu7pDsg4YSI4YWl4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBCQkVPU1MKK0JFRTU7QkVFNTsxMTA4IDExNjUgMTFCQztCRUU1OzExMDggMTE2NSAxMUJDOyAjICjru6U7IOu7pTsg4YSI4YWl4Ya8OyDru6U7IOGEiOGFpeGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFT05HCitCRUU2O0JFRTY7MTEwOCAxMTY1IDExQkQ7QkVFNjsxMTA4IDExNjUgMTFCRDsgIyAo67umOyDru6Y7IOGEiOGFpeGGvTsg67umOyDhhIjhhaXhhr07ICkgSEFOR1VMIFNZTExBQkxFIEJCRU9KCitCRUU3O0JFRTc7MTEwOCAxMTY1IDExQkU7QkVFNzsxMTA4IDExNjUgMTFCRTsgIyAo67unOyDru6c7IOGEiOGFpeGGvjsg67unOyDhhIjhhaXhhr47ICkgSEFOR1VMIFNZTExBQkxFIEJCRU9DCitCRUU4O0JFRTg7MTEwOCAxMTY1IDExQkY7QkVFODsxMTA4IDExNjUgMTFCRjsgIyAo67uoOyDru6g7IOGEiOGFpeGGvzsg67uoOyDhhIjhhaXhhr87ICkgSEFOR1VMIFNZTExBQkxFIEJCRU9LCitCRUU5O0JFRTk7MTEwOCAxMTY1IDExQzA7QkVFOTsxMTA4IDExNjUgMTFDMDsgIyAo67upOyDru6k7IOGEiOGFpeGHgDsg67upOyDhhIjhhaXhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJCRU9UCitCRUVBO0JFRUE7MTEwOCAxMTY1IDExQzE7QkVFQTsxMTA4IDExNjUgMTFDMTsgIyAo67uqOyDru6o7IOGEiOGFpeGHgTsg67uqOyDhhIjhhaXhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEJCRU9QCitCRUVCO0JFRUI7MTEwOCAxMTY1IDExQzI7QkVFQjsxMTA4IDExNjUgMTFDMjsgIyAo67urOyDru6s7IOGEiOGFpeGHgjsg67urOyDhhIjhhaXhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJCRU9ICitCRUVDO0JFRUM7MTEwOCAxMTY2O0JFRUM7MTEwOCAxMTY2OyAjICjru6w7IOu7rDsg4YSI4YWmOyDru6w7IOGEiOGFpjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFCitCRUVEO0JFRUQ7MTEwOCAxMTY2IDExQTg7QkVFRDsxMTA4IDExNjYgMTFBODsgIyAo67utOyDru607IOGEiOGFpuGGqDsg67utOyDhhIjhhabhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEJCRUcKK0JFRUU7QkVFRTsxMTA4IDExNjYgMTFBOTtCRUVFOzExMDggMTE2NiAxMUE5OyAjICjru647IOu7rjsg4YSI4YWm4YapOyDru647IOGEiOGFpuGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFR0cKK0JFRUY7QkVFRjsxMTA4IDExNjYgMTFBQTtCRUVGOzExMDggMTE2NiAxMUFBOyAjICjru687IOu7rzsg4YSI4YWm4YaqOyDru687IOGEiOGFpuGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFR1MKK0JFRjA7QkVGMDsxMTA4IDExNjYgMTFBQjtCRUYwOzExMDggMTE2NiAxMUFCOyAjICjru7A7IOu7sDsg4YSI4YWm4YarOyDru7A7IOGEiOGFpuGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFTgorQkVGMTtCRUYxOzExMDggMTE2NiAxMUFDO0JFRjE7MTEwOCAxMTY2IDExQUM7ICMgKOu7sTsg67uxOyDhhIjhhabhhqw7IOu7sTsg4YSI4YWm4YasOyApIEhBTkdVTCBTWUxMQUJMRSBCQkVOSgorQkVGMjtCRUYyOzExMDggMTE2NiAxMUFEO0JFRjI7MTEwOCAxMTY2IDExQUQ7ICMgKOu7sjsg67uyOyDhhIjhhabhhq07IOu7sjsg4YSI4YWm4YatOyApIEhBTkdVTCBTWUxMQUJMRSBCQkVOSAorQkVGMztCRUYzOzExMDggMTE2NiAxMUFFO0JFRjM7MTEwOCAxMTY2IDExQUU7ICMgKOu7szsg67uzOyDhhIjhhabhhq47IOu7szsg4YSI4YWm4YauOyApIEhBTkdVTCBTWUxMQUJMRSBCQkVECitCRUY0O0JFRjQ7MTEwOCAxMTY2IDExQUY7QkVGNDsxMTA4IDExNjYgMTFBRjsgIyAo67u0OyDru7Q7IOGEiOGFpuGGrzsg67u0OyDhhIjhhabhhq87ICkgSEFOR1VMIFNZTExBQkxFIEJCRUwKK0JFRjU7QkVGNTsxMTA4IDExNjYgMTFCMDtCRUY1OzExMDggMTE2NiAxMUIwOyAjICjru7U7IOu7tTsg4YSI4YWm4YawOyDru7U7IOGEiOGFpuGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFTEcKK0JFRjY7QkVGNjsxMTA4IDExNjYgMTFCMTtCRUY2OzExMDggMTE2NiAxMUIxOyAjICjru7Y7IOu7tjsg4YSI4YWm4YaxOyDru7Y7IOGEiOGFpuGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFTE0KK0JFRjc7QkVGNzsxMTA4IDExNjYgMTFCMjtCRUY3OzExMDggMTE2NiAxMUIyOyAjICjru7c7IOu7tzsg4YSI4YWm4YayOyDru7c7IOGEiOGFpuGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFTEIKK0JFRjg7QkVGODsxMTA4IDExNjYgMTFCMztCRUY4OzExMDggMTE2NiAxMUIzOyAjICjru7g7IOu7uDsg4YSI4YWm4YazOyDru7g7IOGEiOGFpuGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFTFMKK0JFRjk7QkVGOTsxMTA4IDExNjYgMTFCNDtCRUY5OzExMDggMTE2NiAxMUI0OyAjICjru7k7IOu7uTsg4YSI4YWm4Ya0OyDru7k7IOGEiOGFpuGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFTFQKK0JFRkE7QkVGQTsxMTA4IDExNjYgMTFCNTtCRUZBOzExMDggMTE2NiAxMUI1OyAjICjru7o7IOu7ujsg4YSI4YWm4Ya1OyDru7o7IOGEiOGFpuGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFTFAKK0JFRkI7QkVGQjsxMTA4IDExNjYgMTFCNjtCRUZCOzExMDggMTE2NiAxMUI2OyAjICjru7s7IOu7uzsg4YSI4YWm4Ya2OyDru7s7IOGEiOGFpuGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFTEgKK0JFRkM7QkVGQzsxMTA4IDExNjYgMTFCNztCRUZDOzExMDggMTE2NiAxMUI3OyAjICjru7w7IOu7vDsg4YSI4YWm4Ya3OyDru7w7IOGEiOGFpuGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFTQorQkVGRDtCRUZEOzExMDggMTE2NiAxMUI4O0JFRkQ7MTEwOCAxMTY2IDExQjg7ICMgKOu7vTsg67u9OyDhhIjhhabhhrg7IOu7vTsg4YSI4YWm4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBCQkVCCitCRUZFO0JFRkU7MTEwOCAxMTY2IDExQjk7QkVGRTsxMTA4IDExNjYgMTFCOTsgIyAo67u+OyDru747IOGEiOGFpuGGuTsg67u+OyDhhIjhhabhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJCRUJTCitCRUZGO0JFRkY7MTEwOCAxMTY2IDExQkE7QkVGRjsxMTA4IDExNjYgMTFCQTsgIyAo67u/OyDru787IOGEiOGFpuGGujsg67u/OyDhhIjhhabhhro7ICkgSEFOR1VMIFNZTExBQkxFIEJCRVMKK0JGMDA7QkYwMDsxMTA4IDExNjYgMTFCQjtCRjAwOzExMDggMTE2NiAxMUJCOyAjICjrvIA7IOu8gDsg4YSI4YWm4Ya7OyDrvIA7IOGEiOGFpuGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFU1MKK0JGMDE7QkYwMTsxMTA4IDExNjYgMTFCQztCRjAxOzExMDggMTE2NiAxMUJDOyAjICjrvIE7IOu8gTsg4YSI4YWm4Ya8OyDrvIE7IOGEiOGFpuGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFTkcKK0JGMDI7QkYwMjsxMTA4IDExNjYgMTFCRDtCRjAyOzExMDggMTE2NiAxMUJEOyAjICjrvII7IOu8gjsg4YSI4YWm4Ya9OyDrvII7IOGEiOGFpuGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFSgorQkYwMztCRjAzOzExMDggMTE2NiAxMUJFO0JGMDM7MTEwOCAxMTY2IDExQkU7ICMgKOu8gzsg67yDOyDhhIjhhabhhr47IOu8gzsg4YSI4YWm4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBCQkVDCitCRjA0O0JGMDQ7MTEwOCAxMTY2IDExQkY7QkYwNDsxMTA4IDExNjYgMTFCRjsgIyAo67yEOyDrvIQ7IOGEiOGFpuGGvzsg67yEOyDhhIjhhabhhr87ICkgSEFOR1VMIFNZTExBQkxFIEJCRUsKK0JGMDU7QkYwNTsxMTA4IDExNjYgMTFDMDtCRjA1OzExMDggMTE2NiAxMUMwOyAjICjrvIU7IOu8hTsg4YSI4YWm4YeAOyDrvIU7IOGEiOGFpuGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFVAorQkYwNjtCRjA2OzExMDggMTE2NiAxMUMxO0JGMDY7MTEwOCAxMTY2IDExQzE7ICMgKOu8hjsg67yGOyDhhIjhhabhh4E7IOu8hjsg4YSI4YWm4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBCQkVQCitCRjA3O0JGMDc7MTEwOCAxMTY2IDExQzI7QkYwNzsxMTA4IDExNjYgMTFDMjsgIyAo67yHOyDrvIc7IOGEiOGFpuGHgjsg67yHOyDhhIjhhabhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJCRUgKK0JGMDg7QkYwODsxMTA4IDExNjc7QkYwODsxMTA4IDExNjc7ICMgKOu8iDsg67yIOyDhhIjhhac7IOu8iDsg4YSI4YWnOyApIEhBTkdVTCBTWUxMQUJMRSBCQllFTworQkYwOTtCRjA5OzExMDggMTE2NyAxMUE4O0JGMDk7MTEwOCAxMTY3IDExQTg7ICMgKOu8iTsg67yJOyDhhIjhhafhhqg7IOu8iTsg4YSI4YWn4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCQllFT0cKK0JGMEE7QkYwQTsxMTA4IDExNjcgMTFBOTtCRjBBOzExMDggMTE2NyAxMUE5OyAjICjrvIo7IOu8ijsg4YSI4YWn4YapOyDrvIo7IOGEiOGFp+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZRU9HRworQkYwQjtCRjBCOzExMDggMTE2NyAxMUFBO0JGMEI7MTEwOCAxMTY3IDExQUE7ICMgKOu8izsg67yLOyDhhIjhhafhhqo7IOu8izsg4YSI4YWn4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBCQllFT0dTCitCRjBDO0JGMEM7MTEwOCAxMTY3IDExQUI7QkYwQzsxMTA4IDExNjcgMTFBQjsgIyAo67yMOyDrvIw7IOGEiOGFp+GGqzsg67yMOyDhhIjhhafhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVPTgorQkYwRDtCRjBEOzExMDggMTE2NyAxMUFDO0JGMEQ7MTEwOCAxMTY3IDExQUM7ICMgKOu8jTsg67yNOyDhhIjhhafhhqw7IOu8jTsg4YSI4YWn4YasOyApIEhBTkdVTCBTWUxMQUJMRSBCQllFT05KCitCRjBFO0JGMEU7MTEwOCAxMTY3IDExQUQ7QkYwRTsxMTA4IDExNjcgMTFBRDsgIyAo67yOOyDrvI47IOGEiOGFp+GGrTsg67yOOyDhhIjhhafhhq07ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVPTkgKK0JGMEY7QkYwRjsxMTA4IDExNjcgMTFBRTtCRjBGOzExMDggMTE2NyAxMUFFOyAjICjrvI87IOu8jzsg4YSI4YWn4YauOyDrvI87IOGEiOGFp+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZRU9ECitCRjEwO0JGMTA7MTEwOCAxMTY3IDExQUY7QkYxMDsxMTA4IDExNjcgMTFBRjsgIyAo67yQOyDrvJA7IOGEiOGFp+GGrzsg67yQOyDhhIjhhafhhq87ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVPTAorQkYxMTtCRjExOzExMDggMTE2NyAxMUIwO0JGMTE7MTEwOCAxMTY3IDExQjA7ICMgKOu8kTsg67yROyDhhIjhhafhhrA7IOu8kTsg4YSI4YWn4YawOyApIEhBTkdVTCBTWUxMQUJMRSBCQllFT0xHCitCRjEyO0JGMTI7MTEwOCAxMTY3IDExQjE7QkYxMjsxMTA4IDExNjcgMTFCMTsgIyAo67ySOyDrvJI7IOGEiOGFp+GGsTsg67ySOyDhhIjhhafhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVPTE0KK0JGMTM7QkYxMzsxMTA4IDExNjcgMTFCMjtCRjEzOzExMDggMTE2NyAxMUIyOyAjICjrvJM7IOu8kzsg4YSI4YWn4YayOyDrvJM7IOGEiOGFp+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZRU9MQgorQkYxNDtCRjE0OzExMDggMTE2NyAxMUIzO0JGMTQ7MTEwOCAxMTY3IDExQjM7ICMgKOu8lDsg67yUOyDhhIjhhafhhrM7IOu8lDsg4YSI4YWn4YazOyApIEhBTkdVTCBTWUxMQUJMRSBCQllFT0xTCitCRjE1O0JGMTU7MTEwOCAxMTY3IDExQjQ7QkYxNTsxMTA4IDExNjcgMTFCNDsgIyAo67yVOyDrvJU7IOGEiOGFp+GGtDsg67yVOyDhhIjhhafhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVPTFQKK0JGMTY7QkYxNjsxMTA4IDExNjcgMTFCNTtCRjE2OzExMDggMTE2NyAxMUI1OyAjICjrvJY7IOu8ljsg4YSI4YWn4Ya1OyDrvJY7IOGEiOGFp+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZRU9MUAorQkYxNztCRjE3OzExMDggMTE2NyAxMUI2O0JGMTc7MTEwOCAxMTY3IDExQjY7ICMgKOu8lzsg67yXOyDhhIjhhafhhrY7IOu8lzsg4YSI4YWn4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBCQllFT0xICitCRjE4O0JGMTg7MTEwOCAxMTY3IDExQjc7QkYxODsxMTA4IDExNjcgMTFCNzsgIyAo67yYOyDrvJg7IOGEiOGFp+GGtzsg67yYOyDhhIjhhafhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVPTQorQkYxOTtCRjE5OzExMDggMTE2NyAxMUI4O0JGMTk7MTEwOCAxMTY3IDExQjg7ICMgKOu8mTsg67yZOyDhhIjhhafhhrg7IOu8mTsg4YSI4YWn4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBCQllFT0IKK0JGMUE7QkYxQTsxMTA4IDExNjcgMTFCOTtCRjFBOzExMDggMTE2NyAxMUI5OyAjICjrvJo7IOu8mjsg4YSI4YWn4Ya5OyDrvJo7IOGEiOGFp+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZRU9CUworQkYxQjtCRjFCOzExMDggMTE2NyAxMUJBO0JGMUI7MTEwOCAxMTY3IDExQkE7ICMgKOu8mzsg67ybOyDhhIjhhafhhro7IOu8mzsg4YSI4YWn4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCQllFT1MKK0JGMUM7QkYxQzsxMTA4IDExNjcgMTFCQjtCRjFDOzExMDggMTE2NyAxMUJCOyAjICjrvJw7IOu8nDsg4YSI4YWn4Ya7OyDrvJw7IOGEiOGFp+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZRU9TUworQkYxRDtCRjFEOzExMDggMTE2NyAxMUJDO0JGMUQ7MTEwOCAxMTY3IDExQkM7ICMgKOu8nTsg67ydOyDhhIjhhafhhrw7IOu8nTsg4YSI4YWn4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBCQllFT05HCitCRjFFO0JGMUU7MTEwOCAxMTY3IDExQkQ7QkYxRTsxMTA4IDExNjcgMTFCRDsgIyAo67yeOyDrvJ47IOGEiOGFp+GGvTsg67yeOyDhhIjhhafhhr07ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVPSgorQkYxRjtCRjFGOzExMDggMTE2NyAxMUJFO0JGMUY7MTEwOCAxMTY3IDExQkU7ICMgKOu8nzsg67yfOyDhhIjhhafhhr47IOu8nzsg4YSI4YWn4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBCQllFT0MKK0JGMjA7QkYyMDsxMTA4IDExNjcgMTFCRjtCRjIwOzExMDggMTE2NyAxMUJGOyAjICjrvKA7IOu8oDsg4YSI4YWn4Ya/OyDrvKA7IOGEiOGFp+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZRU9LCitCRjIxO0JGMjE7MTEwOCAxMTY3IDExQzA7QkYyMTsxMTA4IDExNjcgMTFDMDsgIyAo67yhOyDrvKE7IOGEiOGFp+GHgDsg67yhOyDhhIjhhafhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVPVAorQkYyMjtCRjIyOzExMDggMTE2NyAxMUMxO0JGMjI7MTEwOCAxMTY3IDExQzE7ICMgKOu8ojsg67yiOyDhhIjhhafhh4E7IOu8ojsg4YSI4YWn4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBCQllFT1AKK0JGMjM7QkYyMzsxMTA4IDExNjcgMTFDMjtCRjIzOzExMDggMTE2NyAxMUMyOyAjICjrvKM7IOu8ozsg4YSI4YWn4YeCOyDrvKM7IOGEiOGFp+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZRU9ICitCRjI0O0JGMjQ7MTEwOCAxMTY4O0JGMjQ7MTEwOCAxMTY4OyAjICjrvKQ7IOu8pDsg4YSI4YWoOyDrvKQ7IOGEiOGFqDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZRQorQkYyNTtCRjI1OzExMDggMTE2OCAxMUE4O0JGMjU7MTEwOCAxMTY4IDExQTg7ICMgKOu8pTsg67ylOyDhhIjhhajhhqg7IOu8pTsg4YSI4YWo4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCQllFRworQkYyNjtCRjI2OzExMDggMTE2OCAxMUE5O0JGMjY7MTEwOCAxMTY4IDExQTk7ICMgKOu8pjsg67ymOyDhhIjhhajhhqk7IOu8pjsg4YSI4YWo4YapOyApIEhBTkdVTCBTWUxMQUJMRSBCQllFR0cKK0JGMjc7QkYyNzsxMTA4IDExNjggMTFBQTtCRjI3OzExMDggMTE2OCAxMUFBOyAjICjrvKc7IOu8pzsg4YSI4YWo4YaqOyDrvKc7IOGEiOGFqOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZRUdTCitCRjI4O0JGMjg7MTEwOCAxMTY4IDExQUI7QkYyODsxMTA4IDExNjggMTFBQjsgIyAo67yoOyDrvKg7IOGEiOGFqOGGqzsg67yoOyDhhIjhhajhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVOCitCRjI5O0JGMjk7MTEwOCAxMTY4IDExQUM7QkYyOTsxMTA4IDExNjggMTFBQzsgIyAo67ypOyDrvKk7IOGEiOGFqOGGrDsg67ypOyDhhIjhhajhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVOSgorQkYyQTtCRjJBOzExMDggMTE2OCAxMUFEO0JGMkE7MTEwOCAxMTY4IDExQUQ7ICMgKOu8qjsg67yqOyDhhIjhhajhhq07IOu8qjsg4YSI4YWo4YatOyApIEhBTkdVTCBTWUxMQUJMRSBCQllFTkgKK0JGMkI7QkYyQjsxMTA4IDExNjggMTFBRTtCRjJCOzExMDggMTE2OCAxMUFFOyAjICjrvKs7IOu8qzsg4YSI4YWo4YauOyDrvKs7IOGEiOGFqOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZRUQKK0JGMkM7QkYyQzsxMTA4IDExNjggMTFBRjtCRjJDOzExMDggMTE2OCAxMUFGOyAjICjrvKw7IOu8rDsg4YSI4YWo4YavOyDrvKw7IOGEiOGFqOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZRUwKK0JGMkQ7QkYyRDsxMTA4IDExNjggMTFCMDtCRjJEOzExMDggMTE2OCAxMUIwOyAjICjrvK07IOu8rTsg4YSI4YWo4YawOyDrvK07IOGEiOGFqOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZRUxHCitCRjJFO0JGMkU7MTEwOCAxMTY4IDExQjE7QkYyRTsxMTA4IDExNjggMTFCMTsgIyAo67yuOyDrvK47IOGEiOGFqOGGsTsg67yuOyDhhIjhhajhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVMTQorQkYyRjtCRjJGOzExMDggMTE2OCAxMUIyO0JGMkY7MTEwOCAxMTY4IDExQjI7ICMgKOu8rzsg67yvOyDhhIjhhajhhrI7IOu8rzsg4YSI4YWo4YayOyApIEhBTkdVTCBTWUxMQUJMRSBCQllFTEIKK0JGMzA7QkYzMDsxMTA4IDExNjggMTFCMztCRjMwOzExMDggMTE2OCAxMUIzOyAjICjrvLA7IOu8sDsg4YSI4YWo4YazOyDrvLA7IOGEiOGFqOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZRUxTCitCRjMxO0JGMzE7MTEwOCAxMTY4IDExQjQ7QkYzMTsxMTA4IDExNjggMTFCNDsgIyAo67yxOyDrvLE7IOGEiOGFqOGGtDsg67yxOyDhhIjhhajhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVMVAorQkYzMjtCRjMyOzExMDggMTE2OCAxMUI1O0JGMzI7MTEwOCAxMTY4IDExQjU7ICMgKOu8sjsg67yyOyDhhIjhhajhhrU7IOu8sjsg4YSI4YWo4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBCQllFTFAKK0JGMzM7QkYzMzsxMTA4IDExNjggMTFCNjtCRjMzOzExMDggMTE2OCAxMUI2OyAjICjrvLM7IOu8szsg4YSI4YWo4Ya2OyDrvLM7IOGEiOGFqOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZRUxICitCRjM0O0JGMzQ7MTEwOCAxMTY4IDExQjc7QkYzNDsxMTA4IDExNjggMTFCNzsgIyAo67y0OyDrvLQ7IOGEiOGFqOGGtzsg67y0OyDhhIjhhajhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVNCitCRjM1O0JGMzU7MTEwOCAxMTY4IDExQjg7QkYzNTsxMTA4IDExNjggMTFCODsgIyAo67y1OyDrvLU7IOGEiOGFqOGGuDsg67y1OyDhhIjhhajhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVCCitCRjM2O0JGMzY7MTEwOCAxMTY4IDExQjk7QkYzNjsxMTA4IDExNjggMTFCOTsgIyAo67y2OyDrvLY7IOGEiOGFqOGGuTsg67y2OyDhhIjhhajhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVCUworQkYzNztCRjM3OzExMDggMTE2OCAxMUJBO0JGMzc7MTEwOCAxMTY4IDExQkE7ICMgKOu8tzsg67y3OyDhhIjhhajhhro7IOu8tzsg4YSI4YWo4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCQllFUworQkYzODtCRjM4OzExMDggMTE2OCAxMUJCO0JGMzg7MTEwOCAxMTY4IDExQkI7ICMgKOu8uDsg67y4OyDhhIjhhajhhrs7IOu8uDsg4YSI4YWo4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBCQllFU1MKK0JGMzk7QkYzOTsxMTA4IDExNjggMTFCQztCRjM5OzExMDggMTE2OCAxMUJDOyAjICjrvLk7IOu8uTsg4YSI4YWo4Ya8OyDrvLk7IOGEiOGFqOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZRU5HCitCRjNBO0JGM0E7MTEwOCAxMTY4IDExQkQ7QkYzQTsxMTA4IDExNjggMTFCRDsgIyAo67y6OyDrvLo7IOGEiOGFqOGGvTsg67y6OyDhhIjhhajhhr07ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVKCitCRjNCO0JGM0I7MTEwOCAxMTY4IDExQkU7QkYzQjsxMTA4IDExNjggMTFCRTsgIyAo67y7OyDrvLs7IOGEiOGFqOGGvjsg67y7OyDhhIjhhajhhr47ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVDCitCRjNDO0JGM0M7MTEwOCAxMTY4IDExQkY7QkYzQzsxMTA4IDExNjggMTFCRjsgIyAo67y8OyDrvLw7IOGEiOGFqOGGvzsg67y8OyDhhIjhhajhhr87ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVLCitCRjNEO0JGM0Q7MTEwOCAxMTY4IDExQzA7QkYzRDsxMTA4IDExNjggMTFDMDsgIyAo67y9OyDrvL07IOGEiOGFqOGHgDsg67y9OyDhhIjhhajhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVUCitCRjNFO0JGM0U7MTEwOCAxMTY4IDExQzE7QkYzRTsxMTA4IDExNjggMTFDMTsgIyAo67y+OyDrvL47IOGEiOGFqOGHgTsg67y+OyDhhIjhhajhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVQCitCRjNGO0JGM0Y7MTEwOCAxMTY4IDExQzI7QkYzRjsxMTA4IDExNjggMTFDMjsgIyAo67y/OyDrvL87IOGEiOGFqOGHgjsg67y/OyDhhIjhhajhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUVICitCRjQwO0JGNDA7MTEwOCAxMTY5O0JGNDA7MTEwOCAxMTY5OyAjICjrvYA7IOu9gDsg4YSI4YWpOyDrvYA7IOGEiOGFqTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPCitCRjQxO0JGNDE7MTEwOCAxMTY5IDExQTg7QkY0MTsxMTA4IDExNjkgMTFBODsgIyAo672BOyDrvYE7IOGEiOGFqeGGqDsg672BOyDhhIjhhanhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEJCT0cKK0JGNDI7QkY0MjsxMTA4IDExNjkgMTFBOTtCRjQyOzExMDggMTE2OSAxMUE5OyAjICjrvYI7IOu9gjsg4YSI4YWp4YapOyDrvYI7IOGEiOGFqeGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPR0cKK0JGNDM7QkY0MzsxMTA4IDExNjkgMTFBQTtCRjQzOzExMDggMTE2OSAxMUFBOyAjICjrvYM7IOu9gzsg4YSI4YWp4YaqOyDrvYM7IOGEiOGFqeGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPR1MKK0JGNDQ7QkY0NDsxMTA4IDExNjkgMTFBQjtCRjQ0OzExMDggMTE2OSAxMUFCOyAjICjrvYQ7IOu9hDsg4YSI4YWp4YarOyDrvYQ7IOGEiOGFqeGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPTgorQkY0NTtCRjQ1OzExMDggMTE2OSAxMUFDO0JGNDU7MTEwOCAxMTY5IDExQUM7ICMgKOu9hTsg672FOyDhhIjhhanhhqw7IOu9hTsg4YSI4YWp4YasOyApIEhBTkdVTCBTWUxMQUJMRSBCQk9OSgorQkY0NjtCRjQ2OzExMDggMTE2OSAxMUFEO0JGNDY7MTEwOCAxMTY5IDExQUQ7ICMgKOu9hjsg672GOyDhhIjhhanhhq07IOu9hjsg4YSI4YWp4YatOyApIEhBTkdVTCBTWUxMQUJMRSBCQk9OSAorQkY0NztCRjQ3OzExMDggMTE2OSAxMUFFO0JGNDc7MTEwOCAxMTY5IDExQUU7ICMgKOu9hzsg672HOyDhhIjhhanhhq47IOu9hzsg4YSI4YWp4YauOyApIEhBTkdVTCBTWUxMQUJMRSBCQk9ECitCRjQ4O0JGNDg7MTEwOCAxMTY5IDExQUY7QkY0ODsxMTA4IDExNjkgMTFBRjsgIyAo672IOyDrvYg7IOGEiOGFqeGGrzsg672IOyDhhIjhhanhhq87ICkgSEFOR1VMIFNZTExBQkxFIEJCT0wKK0JGNDk7QkY0OTsxMTA4IDExNjkgMTFCMDtCRjQ5OzExMDggMTE2OSAxMUIwOyAjICjrvYk7IOu9iTsg4YSI4YWp4YawOyDrvYk7IOGEiOGFqeGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPTEcKK0JGNEE7QkY0QTsxMTA4IDExNjkgMTFCMTtCRjRBOzExMDggMTE2OSAxMUIxOyAjICjrvYo7IOu9ijsg4YSI4YWp4YaxOyDrvYo7IOGEiOGFqeGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPTE0KK0JGNEI7QkY0QjsxMTA4IDExNjkgMTFCMjtCRjRCOzExMDggMTE2OSAxMUIyOyAjICjrvYs7IOu9izsg4YSI4YWp4YayOyDrvYs7IOGEiOGFqeGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPTEIKK0JGNEM7QkY0QzsxMTA4IDExNjkgMTFCMztCRjRDOzExMDggMTE2OSAxMUIzOyAjICjrvYw7IOu9jDsg4YSI4YWp4YazOyDrvYw7IOGEiOGFqeGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPTFMKK0JGNEQ7QkY0RDsxMTA4IDExNjkgMTFCNDtCRjREOzExMDggMTE2OSAxMUI0OyAjICjrvY07IOu9jTsg4YSI4YWp4Ya0OyDrvY07IOGEiOGFqeGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPTFQKK0JGNEU7QkY0RTsxMTA4IDExNjkgMTFCNTtCRjRFOzExMDggMTE2OSAxMUI1OyAjICjrvY47IOu9jjsg4YSI4YWp4Ya1OyDrvY47IOGEiOGFqeGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPTFAKK0JGNEY7QkY0RjsxMTA4IDExNjkgMTFCNjtCRjRGOzExMDggMTE2OSAxMUI2OyAjICjrvY87IOu9jzsg4YSI4YWp4Ya2OyDrvY87IOGEiOGFqeGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPTEgKK0JGNTA7QkY1MDsxMTA4IDExNjkgMTFCNztCRjUwOzExMDggMTE2OSAxMUI3OyAjICjrvZA7IOu9kDsg4YSI4YWp4Ya3OyDrvZA7IOGEiOGFqeGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPTQorQkY1MTtCRjUxOzExMDggMTE2OSAxMUI4O0JGNTE7MTEwOCAxMTY5IDExQjg7ICMgKOu9kTsg672ROyDhhIjhhanhhrg7IOu9kTsg4YSI4YWp4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBCQk9CCitCRjUyO0JGNTI7MTEwOCAxMTY5IDExQjk7QkY1MjsxMTA4IDExNjkgMTFCOTsgIyAo672SOyDrvZI7IOGEiOGFqeGGuTsg672SOyDhhIjhhanhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJCT0JTCitCRjUzO0JGNTM7MTEwOCAxMTY5IDExQkE7QkY1MzsxMTA4IDExNjkgMTFCQTsgIyAo672TOyDrvZM7IOGEiOGFqeGGujsg672TOyDhhIjhhanhhro7ICkgSEFOR1VMIFNZTExBQkxFIEJCT1MKK0JGNTQ7QkY1NDsxMTA4IDExNjkgMTFCQjtCRjU0OzExMDggMTE2OSAxMUJCOyAjICjrvZQ7IOu9lDsg4YSI4YWp4Ya7OyDrvZQ7IOGEiOGFqeGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPU1MKK0JGNTU7QkY1NTsxMTA4IDExNjkgMTFCQztCRjU1OzExMDggMTE2OSAxMUJDOyAjICjrvZU7IOu9lTsg4YSI4YWp4Ya8OyDrvZU7IOGEiOGFqeGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPTkcKK0JGNTY7QkY1NjsxMTA4IDExNjkgMTFCRDtCRjU2OzExMDggMTE2OSAxMUJEOyAjICjrvZY7IOu9ljsg4YSI4YWp4Ya9OyDrvZY7IOGEiOGFqeGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPSgorQkY1NztCRjU3OzExMDggMTE2OSAxMUJFO0JGNTc7MTEwOCAxMTY5IDExQkU7ICMgKOu9lzsg672XOyDhhIjhhanhhr47IOu9lzsg4YSI4YWp4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBCQk9DCitCRjU4O0JGNTg7MTEwOCAxMTY5IDExQkY7QkY1ODsxMTA4IDExNjkgMTFCRjsgIyAo672YOyDrvZg7IOGEiOGFqeGGvzsg672YOyDhhIjhhanhhr87ICkgSEFOR1VMIFNZTExBQkxFIEJCT0sKK0JGNTk7QkY1OTsxMTA4IDExNjkgMTFDMDtCRjU5OzExMDggMTE2OSAxMUMwOyAjICjrvZk7IOu9mTsg4YSI4YWp4YeAOyDrvZk7IOGEiOGFqeGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPVAorQkY1QTtCRjVBOzExMDggMTE2OSAxMUMxO0JGNUE7MTEwOCAxMTY5IDExQzE7ICMgKOu9mjsg672aOyDhhIjhhanhh4E7IOu9mjsg4YSI4YWp4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBCQk9QCitCRjVCO0JGNUI7MTEwOCAxMTY5IDExQzI7QkY1QjsxMTA4IDExNjkgMTFDMjsgIyAo672bOyDrvZs7IOGEiOGFqeGHgjsg672bOyDhhIjhhanhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJCT0gKK0JGNUM7QkY1QzsxMTA4IDExNkE7QkY1QzsxMTA4IDExNkE7ICMgKOu9nDsg672cOyDhhIjhhao7IOu9nDsg4YSI4YWqOyApIEhBTkdVTCBTWUxMQUJMRSBCQldBCitCRjVEO0JGNUQ7MTEwOCAxMTZBIDExQTg7QkY1RDsxMTA4IDExNkEgMTFBODsgIyAo672dOyDrvZ07IOGEiOGFquGGqDsg672dOyDhhIjhharhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0FHCitCRjVFO0JGNUU7MTEwOCAxMTZBIDExQTk7QkY1RTsxMTA4IDExNkEgMTFBOTsgIyAo672eOyDrvZ47IOGEiOGFquGGqTsg672eOyDhhIjhharhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0FHRworQkY1RjtCRjVGOzExMDggMTE2QSAxMUFBO0JGNUY7MTEwOCAxMTZBIDExQUE7ICMgKOu9nzsg672fOyDhhIjhharhhqo7IOu9nzsg4YSI4YWq4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBCQldBR1MKK0JGNjA7QkY2MDsxMTA4IDExNkEgMTFBQjtCRjYwOzExMDggMTE2QSAxMUFCOyAjICjrvaA7IOu9oDsg4YSI4YWq4YarOyDrvaA7IOGEiOGFquGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQU4KK0JGNjE7QkY2MTsxMTA4IDExNkEgMTFBQztCRjYxOzExMDggMTE2QSAxMUFDOyAjICjrvaE7IOu9oTsg4YSI4YWq4YasOyDrvaE7IOGEiOGFquGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQU5KCitCRjYyO0JGNjI7MTEwOCAxMTZBIDExQUQ7QkY2MjsxMTA4IDExNkEgMTFBRDsgIyAo672iOyDrvaI7IOGEiOGFquGGrTsg672iOyDhhIjhharhhq07ICkgSEFOR1VMIFNZTExBQkxFIEJCV0FOSAorQkY2MztCRjYzOzExMDggMTE2QSAxMUFFO0JGNjM7MTEwOCAxMTZBIDExQUU7ICMgKOu9ozsg672jOyDhhIjhharhhq47IOu9ozsg4YSI4YWq4YauOyApIEhBTkdVTCBTWUxMQUJMRSBCQldBRAorQkY2NDtCRjY0OzExMDggMTE2QSAxMUFGO0JGNjQ7MTEwOCAxMTZBIDExQUY7ICMgKOu9pDsg672kOyDhhIjhharhhq87IOu9pDsg4YSI4YWq4YavOyApIEhBTkdVTCBTWUxMQUJMRSBCQldBTAorQkY2NTtCRjY1OzExMDggMTE2QSAxMUIwO0JGNjU7MTEwOCAxMTZBIDExQjA7ICMgKOu9pTsg672lOyDhhIjhharhhrA7IOu9pTsg4YSI4YWq4YawOyApIEhBTkdVTCBTWUxMQUJMRSBCQldBTEcKK0JGNjY7QkY2NjsxMTA4IDExNkEgMTFCMTtCRjY2OzExMDggMTE2QSAxMUIxOyAjICjrvaY7IOu9pjsg4YSI4YWq4YaxOyDrvaY7IOGEiOGFquGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQUxNCitCRjY3O0JGNjc7MTEwOCAxMTZBIDExQjI7QkY2NzsxMTA4IDExNkEgMTFCMjsgIyAo672nOyDrvac7IOGEiOGFquGGsjsg672nOyDhhIjhharhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0FMQgorQkY2ODtCRjY4OzExMDggMTE2QSAxMUIzO0JGNjg7MTEwOCAxMTZBIDExQjM7ICMgKOu9qDsg672oOyDhhIjhharhhrM7IOu9qDsg4YSI4YWq4YazOyApIEhBTkdVTCBTWUxMQUJMRSBCQldBTFMKK0JGNjk7QkY2OTsxMTA4IDExNkEgMTFCNDtCRjY5OzExMDggMTE2QSAxMUI0OyAjICjrvak7IOu9qTsg4YSI4YWq4Ya0OyDrvak7IOGEiOGFquGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQUxUCitCRjZBO0JGNkE7MTEwOCAxMTZBIDExQjU7QkY2QTsxMTA4IDExNkEgMTFCNTsgIyAo672qOyDrvao7IOGEiOGFquGGtTsg672qOyDhhIjhharhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0FMUAorQkY2QjtCRjZCOzExMDggMTE2QSAxMUI2O0JGNkI7MTEwOCAxMTZBIDExQjY7ICMgKOu9qzsg672rOyDhhIjhharhhrY7IOu9qzsg4YSI4YWq4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBCQldBTEgKK0JGNkM7QkY2QzsxMTA4IDExNkEgMTFCNztCRjZDOzExMDggMTE2QSAxMUI3OyAjICjrvaw7IOu9rDsg4YSI4YWq4Ya3OyDrvaw7IOGEiOGFquGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQU0KK0JGNkQ7QkY2RDsxMTA4IDExNkEgMTFCODtCRjZEOzExMDggMTE2QSAxMUI4OyAjICjrva07IOu9rTsg4YSI4YWq4Ya4OyDrva07IOGEiOGFquGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQUIKK0JGNkU7QkY2RTsxMTA4IDExNkEgMTFCOTtCRjZFOzExMDggMTE2QSAxMUI5OyAjICjrva47IOu9rjsg4YSI4YWq4Ya5OyDrva47IOGEiOGFquGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQUJTCitCRjZGO0JGNkY7MTEwOCAxMTZBIDExQkE7QkY2RjsxMTA4IDExNkEgMTFCQTsgIyAo672vOyDrva87IOGEiOGFquGGujsg672vOyDhhIjhharhhro7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0FTCitCRjcwO0JGNzA7MTEwOCAxMTZBIDExQkI7QkY3MDsxMTA4IDExNkEgMTFCQjsgIyAo672wOyDrvbA7IOGEiOGFquGGuzsg672wOyDhhIjhharhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0FTUworQkY3MTtCRjcxOzExMDggMTE2QSAxMUJDO0JGNzE7MTEwOCAxMTZBIDExQkM7ICMgKOu9sTsg672xOyDhhIjhharhhrw7IOu9sTsg4YSI4YWq4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBCQldBTkcKK0JGNzI7QkY3MjsxMTA4IDExNkEgMTFCRDtCRjcyOzExMDggMTE2QSAxMUJEOyAjICjrvbI7IOu9sjsg4YSI4YWq4Ya9OyDrvbI7IOGEiOGFquGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQUoKK0JGNzM7QkY3MzsxMTA4IDExNkEgMTFCRTtCRjczOzExMDggMTE2QSAxMUJFOyAjICjrvbM7IOu9szsg4YSI4YWq4Ya+OyDrvbM7IOGEiOGFquGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQUMKK0JGNzQ7QkY3NDsxMTA4IDExNkEgMTFCRjtCRjc0OzExMDggMTE2QSAxMUJGOyAjICjrvbQ7IOu9tDsg4YSI4YWq4Ya/OyDrvbQ7IOGEiOGFquGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQUsKK0JGNzU7QkY3NTsxMTA4IDExNkEgMTFDMDtCRjc1OzExMDggMTE2QSAxMUMwOyAjICjrvbU7IOu9tTsg4YSI4YWq4YeAOyDrvbU7IOGEiOGFquGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQVQKK0JGNzY7QkY3NjsxMTA4IDExNkEgMTFDMTtCRjc2OzExMDggMTE2QSAxMUMxOyAjICjrvbY7IOu9tjsg4YSI4YWq4YeBOyDrvbY7IOGEiOGFquGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQVAKK0JGNzc7QkY3NzsxMTA4IDExNkEgMTFDMjtCRjc3OzExMDggMTE2QSAxMUMyOyAjICjrvbc7IOu9tzsg4YSI4YWq4YeCOyDrvbc7IOGEiOGFquGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQUgKK0JGNzg7QkY3ODsxMTA4IDExNkI7QkY3ODsxMTA4IDExNkI7ICMgKOu9uDsg6724OyDhhIjhhas7IOu9uDsg4YSI4YWrOyApIEhBTkdVTCBTWUxMQUJMRSBCQldBRQorQkY3OTtCRjc5OzExMDggMTE2QiAxMUE4O0JGNzk7MTEwOCAxMTZCIDExQTg7ICMgKOu9uTsg6725OyDhhIjhhavhhqg7IOu9uTsg4YSI4YWr4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCQldBRUcKK0JGN0E7QkY3QTsxMTA4IDExNkIgMTFBOTtCRjdBOzExMDggMTE2QiAxMUE5OyAjICjrvbo7IOu9ujsg4YSI4YWr4YapOyDrvbo7IOGEiOGFq+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQUVHRworQkY3QjtCRjdCOzExMDggMTE2QiAxMUFBO0JGN0I7MTEwOCAxMTZCIDExQUE7ICMgKOu9uzsg6727OyDhhIjhhavhhqo7IOu9uzsg4YSI4YWr4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBCQldBRUdTCitCRjdDO0JGN0M7MTEwOCAxMTZCIDExQUI7QkY3QzsxMTA4IDExNkIgMTFBQjsgIyAo6728OyDrvbw7IOGEiOGFq+GGqzsg6728OyDhhIjhhavhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0FFTgorQkY3RDtCRjdEOzExMDggMTE2QiAxMUFDO0JGN0Q7MTEwOCAxMTZCIDExQUM7ICMgKOu9vTsg6729OyDhhIjhhavhhqw7IOu9vTsg4YSI4YWr4YasOyApIEhBTkdVTCBTWUxMQUJMRSBCQldBRU5KCitCRjdFO0JGN0U7MTEwOCAxMTZCIDExQUQ7QkY3RTsxMTA4IDExNkIgMTFBRDsgIyAo672+OyDrvb47IOGEiOGFq+GGrTsg672+OyDhhIjhhavhhq07ICkgSEFOR1VMIFNZTExBQkxFIEJCV0FFTkgKK0JGN0Y7QkY3RjsxMTA4IDExNkIgMTFBRTtCRjdGOzExMDggMTE2QiAxMUFFOyAjICjrvb87IOu9vzsg4YSI4YWr4YauOyDrvb87IOGEiOGFq+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQUVECitCRjgwO0JGODA7MTEwOCAxMTZCIDExQUY7QkY4MDsxMTA4IDExNkIgMTFBRjsgIyAo676AOyDrvoA7IOGEiOGFq+GGrzsg676AOyDhhIjhhavhhq87ICkgSEFOR1VMIFNZTExBQkxFIEJCV0FFTAorQkY4MTtCRjgxOzExMDggMTE2QiAxMUIwO0JGODE7MTEwOCAxMTZCIDExQjA7ICMgKOu+gTsg676BOyDhhIjhhavhhrA7IOu+gTsg4YSI4YWr4YawOyApIEhBTkdVTCBTWUxMQUJMRSBCQldBRUxHCitCRjgyO0JGODI7MTEwOCAxMTZCIDExQjE7QkY4MjsxMTA4IDExNkIgMTFCMTsgIyAo676COyDrvoI7IOGEiOGFq+GGsTsg676COyDhhIjhhavhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0FFTE0KK0JGODM7QkY4MzsxMTA4IDExNkIgMTFCMjtCRjgzOzExMDggMTE2QiAxMUIyOyAjICjrvoM7IOu+gzsg4YSI4YWr4YayOyDrvoM7IOGEiOGFq+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQUVMQgorQkY4NDtCRjg0OzExMDggMTE2QiAxMUIzO0JGODQ7MTEwOCAxMTZCIDExQjM7ICMgKOu+hDsg676EOyDhhIjhhavhhrM7IOu+hDsg4YSI4YWr4YazOyApIEhBTkdVTCBTWUxMQUJMRSBCQldBRUxTCitCRjg1O0JGODU7MTEwOCAxMTZCIDExQjQ7QkY4NTsxMTA4IDExNkIgMTFCNDsgIyAo676FOyDrvoU7IOGEiOGFq+GGtDsg676FOyDhhIjhhavhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0FFTFQKK0JGODY7QkY4NjsxMTA4IDExNkIgMTFCNTtCRjg2OzExMDggMTE2QiAxMUI1OyAjICjrvoY7IOu+hjsg4YSI4YWr4Ya1OyDrvoY7IOGEiOGFq+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQUVMUAorQkY4NztCRjg3OzExMDggMTE2QiAxMUI2O0JGODc7MTEwOCAxMTZCIDExQjY7ICMgKOu+hzsg676HOyDhhIjhhavhhrY7IOu+hzsg4YSI4YWr4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBCQldBRUxICitCRjg4O0JGODg7MTEwOCAxMTZCIDExQjc7QkY4ODsxMTA4IDExNkIgMTFCNzsgIyAo676IOyDrvog7IOGEiOGFq+GGtzsg676IOyDhhIjhhavhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0FFTQorQkY4OTtCRjg5OzExMDggMTE2QiAxMUI4O0JGODk7MTEwOCAxMTZCIDExQjg7ICMgKOu+iTsg676JOyDhhIjhhavhhrg7IOu+iTsg4YSI4YWr4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBCQldBRUIKK0JGOEE7QkY4QTsxMTA4IDExNkIgMTFCOTtCRjhBOzExMDggMTE2QiAxMUI5OyAjICjrvoo7IOu+ijsg4YSI4YWr4Ya5OyDrvoo7IOGEiOGFq+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQUVCUworQkY4QjtCRjhCOzExMDggMTE2QiAxMUJBO0JGOEI7MTEwOCAxMTZCIDExQkE7ICMgKOu+izsg676LOyDhhIjhhavhhro7IOu+izsg4YSI4YWr4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCQldBRVMKK0JGOEM7QkY4QzsxMTA4IDExNkIgMTFCQjtCRjhDOzExMDggMTE2QiAxMUJCOyAjICjrvow7IOu+jDsg4YSI4YWr4Ya7OyDrvow7IOGEiOGFq+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQUVTUworQkY4RDtCRjhEOzExMDggMTE2QiAxMUJDO0JGOEQ7MTEwOCAxMTZCIDExQkM7ICMgKOu+jTsg676NOyDhhIjhhavhhrw7IOu+jTsg4YSI4YWr4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBCQldBRU5HCitCRjhFO0JGOEU7MTEwOCAxMTZCIDExQkQ7QkY4RTsxMTA4IDExNkIgMTFCRDsgIyAo676OOyDrvo47IOGEiOGFq+GGvTsg676OOyDhhIjhhavhhr07ICkgSEFOR1VMIFNZTExBQkxFIEJCV0FFSgorQkY4RjtCRjhGOzExMDggMTE2QiAxMUJFO0JGOEY7MTEwOCAxMTZCIDExQkU7ICMgKOu+jzsg676POyDhhIjhhavhhr47IOu+jzsg4YSI4YWr4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBCQldBRUMKK0JGOTA7QkY5MDsxMTA4IDExNkIgMTFCRjtCRjkwOzExMDggMTE2QiAxMUJGOyAjICjrvpA7IOu+kDsg4YSI4YWr4Ya/OyDrvpA7IOGEiOGFq+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQUVLCitCRjkxO0JGOTE7MTEwOCAxMTZCIDExQzA7QkY5MTsxMTA4IDExNkIgMTFDMDsgIyAo676ROyDrvpE7IOGEiOGFq+GHgDsg676ROyDhhIjhhavhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0FFVAorQkY5MjtCRjkyOzExMDggMTE2QiAxMUMxO0JGOTI7MTEwOCAxMTZCIDExQzE7ICMgKOu+kjsg676SOyDhhIjhhavhh4E7IOu+kjsg4YSI4YWr4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBCQldBRVAKK0JGOTM7QkY5MzsxMTA4IDExNkIgMTFDMjtCRjkzOzExMDggMTE2QiAxMUMyOyAjICjrvpM7IOu+kzsg4YSI4YWr4YeCOyDrvpM7IOGEiOGFq+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXQUVICitCRjk0O0JGOTQ7MTEwOCAxMTZDO0JGOTQ7MTEwOCAxMTZDOyAjICjrvpQ7IOu+lDsg4YSI4YWsOyDrvpQ7IOGEiOGFrDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPRQorQkY5NTtCRjk1OzExMDggMTE2QyAxMUE4O0JGOTU7MTEwOCAxMTZDIDExQTg7ICMgKOu+lTsg676VOyDhhIjhhazhhqg7IOu+lTsg4YSI4YWs4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCQk9FRworQkY5NjtCRjk2OzExMDggMTE2QyAxMUE5O0JGOTY7MTEwOCAxMTZDIDExQTk7ICMgKOu+ljsg676WOyDhhIjhhazhhqk7IOu+ljsg4YSI4YWs4YapOyApIEhBTkdVTCBTWUxMQUJMRSBCQk9FR0cKK0JGOTc7QkY5NzsxMTA4IDExNkMgMTFBQTtCRjk3OzExMDggMTE2QyAxMUFBOyAjICjrvpc7IOu+lzsg4YSI4YWs4YaqOyDrvpc7IOGEiOGFrOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPRUdTCitCRjk4O0JGOTg7MTEwOCAxMTZDIDExQUI7QkY5ODsxMTA4IDExNkMgMTFBQjsgIyAo676YOyDrvpg7IOGEiOGFrOGGqzsg676YOyDhhIjhhazhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJCT0VOCitCRjk5O0JGOTk7MTEwOCAxMTZDIDExQUM7QkY5OTsxMTA4IDExNkMgMTFBQzsgIyAo676ZOyDrvpk7IOGEiOGFrOGGrDsg676ZOyDhhIjhhazhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEJCT0VOSgorQkY5QTtCRjlBOzExMDggMTE2QyAxMUFEO0JGOUE7MTEwOCAxMTZDIDExQUQ7ICMgKOu+mjsg676aOyDhhIjhhazhhq07IOu+mjsg4YSI4YWs4YatOyApIEhBTkdVTCBTWUxMQUJMRSBCQk9FTkgKK0JGOUI7QkY5QjsxMTA4IDExNkMgMTFBRTtCRjlCOzExMDggMTE2QyAxMUFFOyAjICjrvps7IOu+mzsg4YSI4YWs4YauOyDrvps7IOGEiOGFrOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPRUQKK0JGOUM7QkY5QzsxMTA4IDExNkMgMTFBRjtCRjlDOzExMDggMTE2QyAxMUFGOyAjICjrvpw7IOu+nDsg4YSI4YWs4YavOyDrvpw7IOGEiOGFrOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPRUwKK0JGOUQ7QkY5RDsxMTA4IDExNkMgMTFCMDtCRjlEOzExMDggMTE2QyAxMUIwOyAjICjrvp07IOu+nTsg4YSI4YWs4YawOyDrvp07IOGEiOGFrOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPRUxHCitCRjlFO0JGOUU7MTEwOCAxMTZDIDExQjE7QkY5RTsxMTA4IDExNkMgMTFCMTsgIyAo676eOyDrvp47IOGEiOGFrOGGsTsg676eOyDhhIjhhazhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJCT0VMTQorQkY5RjtCRjlGOzExMDggMTE2QyAxMUIyO0JGOUY7MTEwOCAxMTZDIDExQjI7ICMgKOu+nzsg676fOyDhhIjhhazhhrI7IOu+nzsg4YSI4YWs4YayOyApIEhBTkdVTCBTWUxMQUJMRSBCQk9FTEIKK0JGQTA7QkZBMDsxMTA4IDExNkMgMTFCMztCRkEwOzExMDggMTE2QyAxMUIzOyAjICjrvqA7IOu+oDsg4YSI4YWs4YazOyDrvqA7IOGEiOGFrOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPRUxTCitCRkExO0JGQTE7MTEwOCAxMTZDIDExQjQ7QkZBMTsxMTA4IDExNkMgMTFCNDsgIyAo676hOyDrvqE7IOGEiOGFrOGGtDsg676hOyDhhIjhhazhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJCT0VMVAorQkZBMjtCRkEyOzExMDggMTE2QyAxMUI1O0JGQTI7MTEwOCAxMTZDIDExQjU7ICMgKOu+ojsg676iOyDhhIjhhazhhrU7IOu+ojsg4YSI4YWs4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBCQk9FTFAKK0JGQTM7QkZBMzsxMTA4IDExNkMgMTFCNjtCRkEzOzExMDggMTE2QyAxMUI2OyAjICjrvqM7IOu+ozsg4YSI4YWs4Ya2OyDrvqM7IOGEiOGFrOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPRUxICitCRkE0O0JGQTQ7MTEwOCAxMTZDIDExQjc7QkZBNDsxMTA4IDExNkMgMTFCNzsgIyAo676kOyDrvqQ7IOGEiOGFrOGGtzsg676kOyDhhIjhhazhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJCT0VNCitCRkE1O0JGQTU7MTEwOCAxMTZDIDExQjg7QkZBNTsxMTA4IDExNkMgMTFCODsgIyAo676lOyDrvqU7IOGEiOGFrOGGuDsg676lOyDhhIjhhazhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEJCT0VCCitCRkE2O0JGQTY7MTEwOCAxMTZDIDExQjk7QkZBNjsxMTA4IDExNkMgMTFCOTsgIyAo676mOyDrvqY7IOGEiOGFrOGGuTsg676mOyDhhIjhhazhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJCT0VCUworQkZBNztCRkE3OzExMDggMTE2QyAxMUJBO0JGQTc7MTEwOCAxMTZDIDExQkE7ICMgKOu+pzsg676nOyDhhIjhhazhhro7IOu+pzsg4YSI4YWs4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCQk9FUworQkZBODtCRkE4OzExMDggMTE2QyAxMUJCO0JGQTg7MTEwOCAxMTZDIDExQkI7ICMgKOu+qDsg676oOyDhhIjhhazhhrs7IOu+qDsg4YSI4YWs4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBCQk9FU1MKK0JGQTk7QkZBOTsxMTA4IDExNkMgMTFCQztCRkE5OzExMDggMTE2QyAxMUJDOyAjICjrvqk7IOu+qTsg4YSI4YWs4Ya8OyDrvqk7IOGEiOGFrOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJPRU5HCitCRkFBO0JGQUE7MTEwOCAxMTZDIDExQkQ7QkZBQTsxMTA4IDExNkMgMTFCRDsgIyAo676qOyDrvqo7IOGEiOGFrOGGvTsg676qOyDhhIjhhazhhr07ICkgSEFOR1VMIFNZTExBQkxFIEJCT0VKCitCRkFCO0JGQUI7MTEwOCAxMTZDIDExQkU7QkZBQjsxMTA4IDExNkMgMTFCRTsgIyAo676rOyDrvqs7IOGEiOGFrOGGvjsg676rOyDhhIjhhazhhr47ICkgSEFOR1VMIFNZTExBQkxFIEJCT0VDCitCRkFDO0JGQUM7MTEwOCAxMTZDIDExQkY7QkZBQzsxMTA4IDExNkMgMTFCRjsgIyAo676sOyDrvqw7IOGEiOGFrOGGvzsg676sOyDhhIjhhazhhr87ICkgSEFOR1VMIFNZTExBQkxFIEJCT0VLCitCRkFEO0JGQUQ7MTEwOCAxMTZDIDExQzA7QkZBRDsxMTA4IDExNkMgMTFDMDsgIyAo676tOyDrvq07IOGEiOGFrOGHgDsg676tOyDhhIjhhazhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJCT0VUCitCRkFFO0JGQUU7MTEwOCAxMTZDIDExQzE7QkZBRTsxMTA4IDExNkMgMTFDMTsgIyAo676uOyDrvq47IOGEiOGFrOGHgTsg676uOyDhhIjhhazhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEJCT0VQCitCRkFGO0JGQUY7MTEwOCAxMTZDIDExQzI7QkZBRjsxMTA4IDExNkMgMTFDMjsgIyAo676vOyDrvq87IOGEiOGFrOGHgjsg676vOyDhhIjhhazhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJCT0VICitCRkIwO0JGQjA7MTEwOCAxMTZEO0JGQjA7MTEwOCAxMTZEOyAjICjrvrA7IOu+sDsg4YSI4YWtOyDrvrA7IOGEiOGFrTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZTworQkZCMTtCRkIxOzExMDggMTE2RCAxMUE4O0JGQjE7MTEwOCAxMTZEIDExQTg7ICMgKOu+sTsg676xOyDhhIjhha3hhqg7IOu+sTsg4YSI4YWt4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCQllPRworQkZCMjtCRkIyOzExMDggMTE2RCAxMUE5O0JGQjI7MTEwOCAxMTZEIDExQTk7ICMgKOu+sjsg676yOyDhhIjhha3hhqk7IOu+sjsg4YSI4YWt4YapOyApIEhBTkdVTCBTWUxMQUJMRSBCQllPR0cKK0JGQjM7QkZCMzsxMTA4IDExNkQgMTFBQTtCRkIzOzExMDggMTE2RCAxMUFBOyAjICjrvrM7IOu+szsg4YSI4YWt4YaqOyDrvrM7IOGEiOGFreGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZT0dTCitCRkI0O0JGQjQ7MTEwOCAxMTZEIDExQUI7QkZCNDsxMTA4IDExNkQgMTFBQjsgIyAo6760OyDrvrQ7IOGEiOGFreGGqzsg6760OyDhhIjhha3hhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJCWU9OCitCRkI1O0JGQjU7MTEwOCAxMTZEIDExQUM7QkZCNTsxMTA4IDExNkQgMTFBQzsgIyAo6761OyDrvrU7IOGEiOGFreGGrDsg6761OyDhhIjhha3hhqw7ICkgSEFOR1VMIFNZTExBQkxFIEJCWU9OSgorQkZCNjtCRkI2OzExMDggMTE2RCAxMUFEO0JGQjY7MTEwOCAxMTZEIDExQUQ7ICMgKOu+tjsg6762OyDhhIjhha3hhq07IOu+tjsg4YSI4YWt4YatOyApIEhBTkdVTCBTWUxMQUJMRSBCQllPTkgKK0JGQjc7QkZCNzsxMTA4IDExNkQgMTFBRTtCRkI3OzExMDggMTE2RCAxMUFFOyAjICjrvrc7IOu+tzsg4YSI4YWt4YauOyDrvrc7IOGEiOGFreGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZT0QKK0JGQjg7QkZCODsxMTA4IDExNkQgMTFBRjtCRkI4OzExMDggMTE2RCAxMUFGOyAjICjrvrg7IOu+uDsg4YSI4YWt4YavOyDrvrg7IOGEiOGFreGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZT0wKK0JGQjk7QkZCOTsxMTA4IDExNkQgMTFCMDtCRkI5OzExMDggMTE2RCAxMUIwOyAjICjrvrk7IOu+uTsg4YSI4YWt4YawOyDrvrk7IOGEiOGFreGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZT0xHCitCRkJBO0JGQkE7MTEwOCAxMTZEIDExQjE7QkZCQTsxMTA4IDExNkQgMTFCMTsgIyAo6766OyDrvro7IOGEiOGFreGGsTsg6766OyDhhIjhha3hhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJCWU9MTQorQkZCQjtCRkJCOzExMDggMTE2RCAxMUIyO0JGQkI7MTEwOCAxMTZEIDExQjI7ICMgKOu+uzsg6767OyDhhIjhha3hhrI7IOu+uzsg4YSI4YWt4YayOyApIEhBTkdVTCBTWUxMQUJMRSBCQllPTEIKK0JGQkM7QkZCQzsxMTA4IDExNkQgMTFCMztCRkJDOzExMDggMTE2RCAxMUIzOyAjICjrvrw7IOu+vDsg4YSI4YWt4YazOyDrvrw7IOGEiOGFreGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZT0xTCitCRkJEO0JGQkQ7MTEwOCAxMTZEIDExQjQ7QkZCRDsxMTA4IDExNkQgMTFCNDsgIyAo6769OyDrvr07IOGEiOGFreGGtDsg6769OyDhhIjhha3hhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJCWU9MVAorQkZCRTtCRkJFOzExMDggMTE2RCAxMUI1O0JGQkU7MTEwOCAxMTZEIDExQjU7ICMgKOu+vjsg676+OyDhhIjhha3hhrU7IOu+vjsg4YSI4YWt4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBCQllPTFAKK0JGQkY7QkZCRjsxMTA4IDExNkQgMTFCNjtCRkJGOzExMDggMTE2RCAxMUI2OyAjICjrvr87IOu+vzsg4YSI4YWt4Ya2OyDrvr87IOGEiOGFreGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZT0xICitCRkMwO0JGQzA7MTEwOCAxMTZEIDExQjc7QkZDMDsxMTA4IDExNkQgMTFCNzsgIyAo67+AOyDrv4A7IOGEiOGFreGGtzsg67+AOyDhhIjhha3hhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJCWU9NCitCRkMxO0JGQzE7MTEwOCAxMTZEIDExQjg7QkZDMTsxMTA4IDExNkQgMTFCODsgIyAo67+BOyDrv4E7IOGEiOGFreGGuDsg67+BOyDhhIjhha3hhrg7ICkgSEFOR1VMIFNZTExBQkxFIEJCWU9CCitCRkMyO0JGQzI7MTEwOCAxMTZEIDExQjk7QkZDMjsxMTA4IDExNkQgMTFCOTsgIyAo67+COyDrv4I7IOGEiOGFreGGuTsg67+COyDhhIjhha3hhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJCWU9CUworQkZDMztCRkMzOzExMDggMTE2RCAxMUJBO0JGQzM7MTEwOCAxMTZEIDExQkE7ICMgKOu/gzsg67+DOyDhhIjhha3hhro7IOu/gzsg4YSI4YWt4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCQllPUworQkZDNDtCRkM0OzExMDggMTE2RCAxMUJCO0JGQzQ7MTEwOCAxMTZEIDExQkI7ICMgKOu/hDsg67+EOyDhhIjhha3hhrs7IOu/hDsg4YSI4YWt4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBCQllPU1MKK0JGQzU7QkZDNTsxMTA4IDExNkQgMTFCQztCRkM1OzExMDggMTE2RCAxMUJDOyAjICjrv4U7IOu/hTsg4YSI4YWt4Ya8OyDrv4U7IOGEiOGFreGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZT05HCitCRkM2O0JGQzY7MTEwOCAxMTZEIDExQkQ7QkZDNjsxMTA4IDExNkQgMTFCRDsgIyAo67+GOyDrv4Y7IOGEiOGFreGGvTsg67+GOyDhhIjhha3hhr07ICkgSEFOR1VMIFNZTExBQkxFIEJCWU9KCitCRkM3O0JGQzc7MTEwOCAxMTZEIDExQkU7QkZDNzsxMTA4IDExNkQgMTFCRTsgIyAo67+HOyDrv4c7IOGEiOGFreGGvjsg67+HOyDhhIjhha3hhr47ICkgSEFOR1VMIFNZTExBQkxFIEJCWU9DCitCRkM4O0JGQzg7MTEwOCAxMTZEIDExQkY7QkZDODsxMTA4IDExNkQgMTFCRjsgIyAo67+IOyDrv4g7IOGEiOGFreGGvzsg67+IOyDhhIjhha3hhr87ICkgSEFOR1VMIFNZTExBQkxFIEJCWU9LCitCRkM5O0JGQzk7MTEwOCAxMTZEIDExQzA7QkZDOTsxMTA4IDExNkQgMTFDMDsgIyAo67+JOyDrv4k7IOGEiOGFreGHgDsg67+JOyDhhIjhha3hh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJCWU9UCitCRkNBO0JGQ0E7MTEwOCAxMTZEIDExQzE7QkZDQTsxMTA4IDExNkQgMTFDMTsgIyAo67+KOyDrv4o7IOGEiOGFreGHgTsg67+KOyDhhIjhha3hh4E7ICkgSEFOR1VMIFNZTExBQkxFIEJCWU9QCitCRkNCO0JGQ0I7MTEwOCAxMTZEIDExQzI7QkZDQjsxMTA4IDExNkQgMTFDMjsgIyAo67+LOyDrv4s7IOGEiOGFreGHgjsg67+LOyDhhIjhha3hh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJCWU9ICitCRkNDO0JGQ0M7MTEwOCAxMTZFO0JGQ0M7MTEwOCAxMTZFOyAjICjrv4w7IOu/jDsg4YSI4YWuOyDrv4w7IOGEiOGFrjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJVCitCRkNEO0JGQ0Q7MTEwOCAxMTZFIDExQTg7QkZDRDsxMTA4IDExNkUgMTFBODsgIyAo67+NOyDrv407IOGEiOGFruGGqDsg67+NOyDhhIjhha7hhqg7ICkgSEFOR1VMIFNZTExBQkxFIEJCVUcKK0JGQ0U7QkZDRTsxMTA4IDExNkUgMTFBOTtCRkNFOzExMDggMTE2RSAxMUE5OyAjICjrv447IOu/jjsg4YSI4YWu4YapOyDrv447IOGEiOGFruGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJVR0cKK0JGQ0Y7QkZDRjsxMTA4IDExNkUgMTFBQTtCRkNGOzExMDggMTE2RSAxMUFBOyAjICjrv487IOu/jzsg4YSI4YWu4YaqOyDrv487IOGEiOGFruGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJVR1MKK0JGRDA7QkZEMDsxMTA4IDExNkUgMTFBQjtCRkQwOzExMDggMTE2RSAxMUFCOyAjICjrv5A7IOu/kDsg4YSI4YWu4YarOyDrv5A7IOGEiOGFruGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJVTgorQkZEMTtCRkQxOzExMDggMTE2RSAxMUFDO0JGRDE7MTEwOCAxMTZFIDExQUM7ICMgKOu/kTsg67+ROyDhhIjhha7hhqw7IOu/kTsg4YSI4YWu4YasOyApIEhBTkdVTCBTWUxMQUJMRSBCQlVOSgorQkZEMjtCRkQyOzExMDggMTE2RSAxMUFEO0JGRDI7MTEwOCAxMTZFIDExQUQ7ICMgKOu/kjsg67+SOyDhhIjhha7hhq07IOu/kjsg4YSI4YWu4YatOyApIEhBTkdVTCBTWUxMQUJMRSBCQlVOSAorQkZEMztCRkQzOzExMDggMTE2RSAxMUFFO0JGRDM7MTEwOCAxMTZFIDExQUU7ICMgKOu/kzsg67+TOyDhhIjhha7hhq47IOu/kzsg4YSI4YWu4YauOyApIEhBTkdVTCBTWUxMQUJMRSBCQlVECitCRkQ0O0JGRDQ7MTEwOCAxMTZFIDExQUY7QkZENDsxMTA4IDExNkUgMTFBRjsgIyAo67+UOyDrv5Q7IOGEiOGFruGGrzsg67+UOyDhhIjhha7hhq87ICkgSEFOR1VMIFNZTExBQkxFIEJCVUwKK0JGRDU7QkZENTsxMTA4IDExNkUgMTFCMDtCRkQ1OzExMDggMTE2RSAxMUIwOyAjICjrv5U7IOu/lTsg4YSI4YWu4YawOyDrv5U7IOGEiOGFruGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJVTEcKK0JGRDY7QkZENjsxMTA4IDExNkUgMTFCMTtCRkQ2OzExMDggMTE2RSAxMUIxOyAjICjrv5Y7IOu/ljsg4YSI4YWu4YaxOyDrv5Y7IOGEiOGFruGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJVTE0KK0JGRDc7QkZENzsxMTA4IDExNkUgMTFCMjtCRkQ3OzExMDggMTE2RSAxMUIyOyAjICjrv5c7IOu/lzsg4YSI4YWu4YayOyDrv5c7IOGEiOGFruGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJVTEIKK0JGRDg7QkZEODsxMTA4IDExNkUgMTFCMztCRkQ4OzExMDggMTE2RSAxMUIzOyAjICjrv5g7IOu/mDsg4YSI4YWu4YazOyDrv5g7IOGEiOGFruGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQkJVTFMKK0JGRDk7QkZEOTsxMTA4IDExNkUgMTFCNDtCRkQ5OzExMDggMTE2RSAxMUI0OyAjICjrv5k7IOu/mTsg4YSI4YWu4Ya0OyDrv5k7IOGEiOGFruGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJVTFQKK0JGREE7QkZEQTsxMTA4IDExNkUgMTFCNTtCRkRBOzExMDggMTE2RSAxMUI1OyAjICjrv5o7IOu/mjsg4YSI4YWu4Ya1OyDrv5o7IOGEiOGFruGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJVTFAKK0JGREI7QkZEQjsxMTA4IDExNkUgMTFCNjtCRkRCOzExMDggMTE2RSAxMUI2OyAjICjrv5s7IOu/mzsg4YSI4YWu4Ya2OyDrv5s7IOGEiOGFruGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJVTEgKK0JGREM7QkZEQzsxMTA4IDExNkUgMTFCNztCRkRDOzExMDggMTE2RSAxMUI3OyAjICjrv5w7IOu/nDsg4YSI4YWu4Ya3OyDrv5w7IOGEiOGFruGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJVTQorQkZERDtCRkREOzExMDggMTE2RSAxMUI4O0JGREQ7MTEwOCAxMTZFIDExQjg7ICMgKOu/nTsg67+dOyDhhIjhha7hhrg7IOu/nTsg4YSI4YWu4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBCQlVCCitCRkRFO0JGREU7MTEwOCAxMTZFIDExQjk7QkZERTsxMTA4IDExNkUgMTFCOTsgIyAo67+eOyDrv547IOGEiOGFruGGuTsg67+eOyDhhIjhha7hhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJCVUJTCitCRkRGO0JGREY7MTEwOCAxMTZFIDExQkE7QkZERjsxMTA4IDExNkUgMTFCQTsgIyAo67+fOyDrv587IOGEiOGFruGGujsg67+fOyDhhIjhha7hhro7ICkgSEFOR1VMIFNZTExBQkxFIEJCVVMKK0JGRTA7QkZFMDsxMTA4IDExNkUgMTFCQjtCRkUwOzExMDggMTE2RSAxMUJCOyAjICjrv6A7IOu/oDsg4YSI4YWu4Ya7OyDrv6A7IOGEiOGFruGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJVU1MKK0JGRTE7QkZFMTsxMTA4IDExNkUgMTFCQztCRkUxOzExMDggMTE2RSAxMUJDOyAjICjrv6E7IOu/oTsg4YSI4YWu4Ya8OyDrv6E7IOGEiOGFruGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJVTkcKK0JGRTI7QkZFMjsxMTA4IDExNkUgMTFCRDtCRkUyOzExMDggMTE2RSAxMUJEOyAjICjrv6I7IOu/ojsg4YSI4YWu4Ya9OyDrv6I7IOGEiOGFruGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJVSgorQkZFMztCRkUzOzExMDggMTE2RSAxMUJFO0JGRTM7MTEwOCAxMTZFIDExQkU7ICMgKOu/ozsg67+jOyDhhIjhha7hhr47IOu/ozsg4YSI4YWu4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBCQlVDCitCRkU0O0JGRTQ7MTEwOCAxMTZFIDExQkY7QkZFNDsxMTA4IDExNkUgMTFCRjsgIyAo67+kOyDrv6Q7IOGEiOGFruGGvzsg67+kOyDhhIjhha7hhr87ICkgSEFOR1VMIFNZTExBQkxFIEJCVUsKK0JGRTU7QkZFNTsxMTA4IDExNkUgMTFDMDtCRkU1OzExMDggMTE2RSAxMUMwOyAjICjrv6U7IOu/pTsg4YSI4YWu4YeAOyDrv6U7IOGEiOGFruGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJVVAorQkZFNjtCRkU2OzExMDggMTE2RSAxMUMxO0JGRTY7MTEwOCAxMTZFIDExQzE7ICMgKOu/pjsg67+mOyDhhIjhha7hh4E7IOu/pjsg4YSI4YWu4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBCQlVQCitCRkU3O0JGRTc7MTEwOCAxMTZFIDExQzI7QkZFNzsxMTA4IDExNkUgMTFDMjsgIyAo67+nOyDrv6c7IOGEiOGFruGHgjsg67+nOyDhhIjhha7hh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJCVUgKK0JGRTg7QkZFODsxMTA4IDExNkY7QkZFODsxMTA4IDExNkY7ICMgKOu/qDsg67+oOyDhhIjhha87IOu/qDsg4YSI4YWvOyApIEhBTkdVTCBTWUxMQUJMRSBCQldFTworQkZFOTtCRkU5OzExMDggMTE2RiAxMUE4O0JGRTk7MTEwOCAxMTZGIDExQTg7ICMgKOu/qTsg67+pOyDhhIjhha/hhqg7IOu/qTsg4YSI4YWv4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCQldFT0cKK0JGRUE7QkZFQTsxMTA4IDExNkYgMTFBOTtCRkVBOzExMDggMTE2RiAxMUE5OyAjICjrv6o7IOu/qjsg4YSI4YWv4YapOyDrv6o7IOGEiOGFr+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXRU9HRworQkZFQjtCRkVCOzExMDggMTE2RiAxMUFBO0JGRUI7MTEwOCAxMTZGIDExQUE7ICMgKOu/qzsg67+rOyDhhIjhha/hhqo7IOu/qzsg4YSI4YWv4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBCQldFT0dTCitCRkVDO0JGRUM7MTEwOCAxMTZGIDExQUI7QkZFQzsxMTA4IDExNkYgMTFBQjsgIyAo67+sOyDrv6w7IOGEiOGFr+GGqzsg67+sOyDhhIjhha/hhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VPTgorQkZFRDtCRkVEOzExMDggMTE2RiAxMUFDO0JGRUQ7MTEwOCAxMTZGIDExQUM7ICMgKOu/rTsg67+tOyDhhIjhha/hhqw7IOu/rTsg4YSI4YWv4YasOyApIEhBTkdVTCBTWUxMQUJMRSBCQldFT05KCitCRkVFO0JGRUU7MTEwOCAxMTZGIDExQUQ7QkZFRTsxMTA4IDExNkYgMTFBRDsgIyAo67+uOyDrv647IOGEiOGFr+GGrTsg67+uOyDhhIjhha/hhq07ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VPTkgKK0JGRUY7QkZFRjsxMTA4IDExNkYgMTFBRTtCRkVGOzExMDggMTE2RiAxMUFFOyAjICjrv687IOu/rzsg4YSI4YWv4YauOyDrv687IOGEiOGFr+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXRU9ECitCRkYwO0JGRjA7MTEwOCAxMTZGIDExQUY7QkZGMDsxMTA4IDExNkYgMTFBRjsgIyAo67+wOyDrv7A7IOGEiOGFr+GGrzsg67+wOyDhhIjhha/hhq87ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VPTAorQkZGMTtCRkYxOzExMDggMTE2RiAxMUIwO0JGRjE7MTEwOCAxMTZGIDExQjA7ICMgKOu/sTsg67+xOyDhhIjhha/hhrA7IOu/sTsg4YSI4YWv4YawOyApIEhBTkdVTCBTWUxMQUJMRSBCQldFT0xHCitCRkYyO0JGRjI7MTEwOCAxMTZGIDExQjE7QkZGMjsxMTA4IDExNkYgMTFCMTsgIyAo67+yOyDrv7I7IOGEiOGFr+GGsTsg67+yOyDhhIjhha/hhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VPTE0KK0JGRjM7QkZGMzsxMTA4IDExNkYgMTFCMjtCRkYzOzExMDggMTE2RiAxMUIyOyAjICjrv7M7IOu/szsg4YSI4YWv4YayOyDrv7M7IOGEiOGFr+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXRU9MQgorQkZGNDtCRkY0OzExMDggMTE2RiAxMUIzO0JGRjQ7MTEwOCAxMTZGIDExQjM7ICMgKOu/tDsg67+0OyDhhIjhha/hhrM7IOu/tDsg4YSI4YWv4YazOyApIEhBTkdVTCBTWUxMQUJMRSBCQldFT0xTCitCRkY1O0JGRjU7MTEwOCAxMTZGIDExQjQ7QkZGNTsxMTA4IDExNkYgMTFCNDsgIyAo67+1OyDrv7U7IOGEiOGFr+GGtDsg67+1OyDhhIjhha/hhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VPTFQKK0JGRjY7QkZGNjsxMTA4IDExNkYgMTFCNTtCRkY2OzExMDggMTE2RiAxMUI1OyAjICjrv7Y7IOu/tjsg4YSI4YWv4Ya1OyDrv7Y7IOGEiOGFr+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXRU9MUAorQkZGNztCRkY3OzExMDggMTE2RiAxMUI2O0JGRjc7MTEwOCAxMTZGIDExQjY7ICMgKOu/tzsg67+3OyDhhIjhha/hhrY7IOu/tzsg4YSI4YWv4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBCQldFT0xICitCRkY4O0JGRjg7MTEwOCAxMTZGIDExQjc7QkZGODsxMTA4IDExNkYgMTFCNzsgIyAo67+4OyDrv7g7IOGEiOGFr+GGtzsg67+4OyDhhIjhha/hhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VPTQorQkZGOTtCRkY5OzExMDggMTE2RiAxMUI4O0JGRjk7MTEwOCAxMTZGIDExQjg7ICMgKOu/uTsg67+5OyDhhIjhha/hhrg7IOu/uTsg4YSI4YWv4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBCQldFT0IKK0JGRkE7QkZGQTsxMTA4IDExNkYgMTFCOTtCRkZBOzExMDggMTE2RiAxMUI5OyAjICjrv7o7IOu/ujsg4YSI4YWv4Ya5OyDrv7o7IOGEiOGFr+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXRU9CUworQkZGQjtCRkZCOzExMDggMTE2RiAxMUJBO0JGRkI7MTEwOCAxMTZGIDExQkE7ICMgKOu/uzsg67+7OyDhhIjhha/hhro7IOu/uzsg4YSI4YWv4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCQldFT1MKK0JGRkM7QkZGQzsxMTA4IDExNkYgMTFCQjtCRkZDOzExMDggMTE2RiAxMUJCOyAjICjrv7w7IOu/vDsg4YSI4YWv4Ya7OyDrv7w7IOGEiOGFr+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXRU9TUworQkZGRDtCRkZEOzExMDggMTE2RiAxMUJDO0JGRkQ7MTEwOCAxMTZGIDExQkM7ICMgKOu/vTsg67+9OyDhhIjhha/hhrw7IOu/vTsg4YSI4YWv4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBCQldFT05HCitCRkZFO0JGRkU7MTEwOCAxMTZGIDExQkQ7QkZGRTsxMTA4IDExNkYgMTFCRDsgIyAo67++OyDrv747IOGEiOGFr+GGvTsg67++OyDhhIjhha/hhr07ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VPSgorQkZGRjtCRkZGOzExMDggMTE2RiAxMUJFO0JGRkY7MTEwOCAxMTZGIDExQkU7ICMgKOu/vzsg67+/OyDhhIjhha/hhr47IOu/vzsg4YSI4YWv4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBCQldFT0MKK0MwMDA7QzAwMDsxMTA4IDExNkYgMTFCRjtDMDAwOzExMDggMTE2RiAxMUJGOyAjICjsgIA7IOyAgDsg4YSI4YWv4Ya/OyDsgIA7IOGEiOGFr+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXRU9LCitDMDAxO0MwMDE7MTEwOCAxMTZGIDExQzA7QzAwMTsxMTA4IDExNkYgMTFDMDsgIyAo7ICBOyDsgIE7IOGEiOGFr+GHgDsg7ICBOyDhhIjhha/hh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VPVAorQzAwMjtDMDAyOzExMDggMTE2RiAxMUMxO0MwMDI7MTEwOCAxMTZGIDExQzE7ICMgKOyAgjsg7ICCOyDhhIjhha/hh4E7IOyAgjsg4YSI4YWv4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBCQldFT1AKK0MwMDM7QzAwMzsxMTA4IDExNkYgMTFDMjtDMDAzOzExMDggMTE2RiAxMUMyOyAjICjsgIM7IOyAgzsg4YSI4YWv4YeCOyDsgIM7IOGEiOGFr+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXRU9ICitDMDA0O0MwMDQ7MTEwOCAxMTcwO0MwMDQ7MTEwOCAxMTcwOyAjICjsgIQ7IOyAhDsg4YSI4YWwOyDsgIQ7IOGEiOGFsDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXRQorQzAwNTtDMDA1OzExMDggMTE3MCAxMUE4O0MwMDU7MTEwOCAxMTcwIDExQTg7ICMgKOyAhTsg7ICFOyDhhIjhhbDhhqg7IOyAhTsg4YSI4YWw4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCQldFRworQzAwNjtDMDA2OzExMDggMTE3MCAxMUE5O0MwMDY7MTEwOCAxMTcwIDExQTk7ICMgKOyAhjsg7ICGOyDhhIjhhbDhhqk7IOyAhjsg4YSI4YWw4YapOyApIEhBTkdVTCBTWUxMQUJMRSBCQldFR0cKK0MwMDc7QzAwNzsxMTA4IDExNzAgMTFBQTtDMDA3OzExMDggMTE3MCAxMUFBOyAjICjsgIc7IOyAhzsg4YSI4YWw4YaqOyDsgIc7IOGEiOGFsOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXRUdTCitDMDA4O0MwMDg7MTEwOCAxMTcwIDExQUI7QzAwODsxMTA4IDExNzAgMTFBQjsgIyAo7ICIOyDsgIg7IOGEiOGFsOGGqzsg7ICIOyDhhIjhhbDhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VOCitDMDA5O0MwMDk7MTEwOCAxMTcwIDExQUM7QzAwOTsxMTA4IDExNzAgMTFBQzsgIyAo7ICJOyDsgIk7IOGEiOGFsOGGrDsg7ICJOyDhhIjhhbDhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VOSgorQzAwQTtDMDBBOzExMDggMTE3MCAxMUFEO0MwMEE7MTEwOCAxMTcwIDExQUQ7ICMgKOyAijsg7ICKOyDhhIjhhbDhhq07IOyAijsg4YSI4YWw4YatOyApIEhBTkdVTCBTWUxMQUJMRSBCQldFTkgKK0MwMEI7QzAwQjsxMTA4IDExNzAgMTFBRTtDMDBCOzExMDggMTE3MCAxMUFFOyAjICjsgIs7IOyAizsg4YSI4YWw4YauOyDsgIs7IOGEiOGFsOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXRUQKK0MwMEM7QzAwQzsxMTA4IDExNzAgMTFBRjtDMDBDOzExMDggMTE3MCAxMUFGOyAjICjsgIw7IOyAjDsg4YSI4YWw4YavOyDsgIw7IOGEiOGFsOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXRUwKK0MwMEQ7QzAwRDsxMTA4IDExNzAgMTFCMDtDMDBEOzExMDggMTE3MCAxMUIwOyAjICjsgI07IOyAjTsg4YSI4YWw4YawOyDsgI07IOGEiOGFsOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXRUxHCitDMDBFO0MwMEU7MTEwOCAxMTcwIDExQjE7QzAwRTsxMTA4IDExNzAgMTFCMTsgIyAo7ICOOyDsgI47IOGEiOGFsOGGsTsg7ICOOyDhhIjhhbDhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VMTQorQzAwRjtDMDBGOzExMDggMTE3MCAxMUIyO0MwMEY7MTEwOCAxMTcwIDExQjI7ICMgKOyAjzsg7ICPOyDhhIjhhbDhhrI7IOyAjzsg4YSI4YWw4YayOyApIEhBTkdVTCBTWUxMQUJMRSBCQldFTEIKK0MwMTA7QzAxMDsxMTA4IDExNzAgMTFCMztDMDEwOzExMDggMTE3MCAxMUIzOyAjICjsgJA7IOyAkDsg4YSI4YWw4YazOyDsgJA7IOGEiOGFsOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXRUxTCitDMDExO0MwMTE7MTEwOCAxMTcwIDExQjQ7QzAxMTsxMTA4IDExNzAgMTFCNDsgIyAo7ICROyDsgJE7IOGEiOGFsOGGtDsg7ICROyDhhIjhhbDhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VMVAorQzAxMjtDMDEyOzExMDggMTE3MCAxMUI1O0MwMTI7MTEwOCAxMTcwIDExQjU7ICMgKOyAkjsg7ICSOyDhhIjhhbDhhrU7IOyAkjsg4YSI4YWw4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBCQldFTFAKK0MwMTM7QzAxMzsxMTA4IDExNzAgMTFCNjtDMDEzOzExMDggMTE3MCAxMUI2OyAjICjsgJM7IOyAkzsg4YSI4YWw4Ya2OyDsgJM7IOGEiOGFsOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXRUxICitDMDE0O0MwMTQ7MTEwOCAxMTcwIDExQjc7QzAxNDsxMTA4IDExNzAgMTFCNzsgIyAo7ICUOyDsgJQ7IOGEiOGFsOGGtzsg7ICUOyDhhIjhhbDhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VNCitDMDE1O0MwMTU7MTEwOCAxMTcwIDExQjg7QzAxNTsxMTA4IDExNzAgMTFCODsgIyAo7ICVOyDsgJU7IOGEiOGFsOGGuDsg7ICVOyDhhIjhhbDhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VCCitDMDE2O0MwMTY7MTEwOCAxMTcwIDExQjk7QzAxNjsxMTA4IDExNzAgMTFCOTsgIyAo7ICWOyDsgJY7IOGEiOGFsOGGuTsg7ICWOyDhhIjhhbDhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VCUworQzAxNztDMDE3OzExMDggMTE3MCAxMUJBO0MwMTc7MTEwOCAxMTcwIDExQkE7ICMgKOyAlzsg7ICXOyDhhIjhhbDhhro7IOyAlzsg4YSI4YWw4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCQldFUworQzAxODtDMDE4OzExMDggMTE3MCAxMUJCO0MwMTg7MTEwOCAxMTcwIDExQkI7ICMgKOyAmDsg7ICYOyDhhIjhhbDhhrs7IOyAmDsg4YSI4YWw4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBCQldFU1MKK0MwMTk7QzAxOTsxMTA4IDExNzAgMTFCQztDMDE5OzExMDggMTE3MCAxMUJDOyAjICjsgJk7IOyAmTsg4YSI4YWw4Ya8OyDsgJk7IOGEiOGFsOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXRU5HCitDMDFBO0MwMUE7MTEwOCAxMTcwIDExQkQ7QzAxQTsxMTA4IDExNzAgMTFCRDsgIyAo7ICaOyDsgJo7IOGEiOGFsOGGvTsg7ICaOyDhhIjhhbDhhr07ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VKCitDMDFCO0MwMUI7MTEwOCAxMTcwIDExQkU7QzAxQjsxMTA4IDExNzAgMTFCRTsgIyAo7ICbOyDsgJs7IOGEiOGFsOGGvjsg7ICbOyDhhIjhhbDhhr47ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VDCitDMDFDO0MwMUM7MTEwOCAxMTcwIDExQkY7QzAxQzsxMTA4IDExNzAgMTFCRjsgIyAo7ICcOyDsgJw7IOGEiOGFsOGGvzsg7ICcOyDhhIjhhbDhhr87ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VLCitDMDFEO0MwMUQ7MTEwOCAxMTcwIDExQzA7QzAxRDsxMTA4IDExNzAgMTFDMDsgIyAo7ICdOyDsgJ07IOGEiOGFsOGHgDsg7ICdOyDhhIjhhbDhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VUCitDMDFFO0MwMUU7MTEwOCAxMTcwIDExQzE7QzAxRTsxMTA4IDExNzAgMTFDMTsgIyAo7ICeOyDsgJ47IOGEiOGFsOGHgTsg7ICeOyDhhIjhhbDhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VQCitDMDFGO0MwMUY7MTEwOCAxMTcwIDExQzI7QzAxRjsxMTA4IDExNzAgMTFDMjsgIyAo7ICfOyDsgJ87IOGEiOGFsOGHgjsg7ICfOyDhhIjhhbDhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0VICitDMDIwO0MwMjA7MTEwOCAxMTcxO0MwMjA7MTEwOCAxMTcxOyAjICjsgKA7IOyAoDsg4YSI4YWxOyDsgKA7IOGEiOGFsTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXSQorQzAyMTtDMDIxOzExMDggMTE3MSAxMUE4O0MwMjE7MTEwOCAxMTcxIDExQTg7ICMgKOyAoTsg7IChOyDhhIjhhbHhhqg7IOyAoTsg4YSI4YWx4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCQldJRworQzAyMjtDMDIyOzExMDggMTE3MSAxMUE5O0MwMjI7MTEwOCAxMTcxIDExQTk7ICMgKOyAojsg7ICiOyDhhIjhhbHhhqk7IOyAojsg4YSI4YWx4YapOyApIEhBTkdVTCBTWUxMQUJMRSBCQldJR0cKK0MwMjM7QzAyMzsxMTA4IDExNzEgMTFBQTtDMDIzOzExMDggMTE3MSAxMUFBOyAjICjsgKM7IOyAozsg4YSI4YWx4YaqOyDsgKM7IOGEiOGFseGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXSUdTCitDMDI0O0MwMjQ7MTEwOCAxMTcxIDExQUI7QzAyNDsxMTA4IDExNzEgMTFBQjsgIyAo7ICkOyDsgKQ7IOGEiOGFseGGqzsg7ICkOyDhhIjhhbHhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0lOCitDMDI1O0MwMjU7MTEwOCAxMTcxIDExQUM7QzAyNTsxMTA4IDExNzEgMTFBQzsgIyAo7IClOyDsgKU7IOGEiOGFseGGrDsg7IClOyDhhIjhhbHhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0lOSgorQzAyNjtDMDI2OzExMDggMTE3MSAxMUFEO0MwMjY7MTEwOCAxMTcxIDExQUQ7ICMgKOyApjsg7ICmOyDhhIjhhbHhhq07IOyApjsg4YSI4YWx4YatOyApIEhBTkdVTCBTWUxMQUJMRSBCQldJTkgKK0MwMjc7QzAyNzsxMTA4IDExNzEgMTFBRTtDMDI3OzExMDggMTE3MSAxMUFFOyAjICjsgKc7IOyApzsg4YSI4YWx4YauOyDsgKc7IOGEiOGFseGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXSUQKK0MwMjg7QzAyODsxMTA4IDExNzEgMTFBRjtDMDI4OzExMDggMTE3MSAxMUFGOyAjICjsgKg7IOyAqDsg4YSI4YWx4YavOyDsgKg7IOGEiOGFseGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXSUwKK0MwMjk7QzAyOTsxMTA4IDExNzEgMTFCMDtDMDI5OzExMDggMTE3MSAxMUIwOyAjICjsgKk7IOyAqTsg4YSI4YWx4YawOyDsgKk7IOGEiOGFseGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXSUxHCitDMDJBO0MwMkE7MTEwOCAxMTcxIDExQjE7QzAyQTsxMTA4IDExNzEgMTFCMTsgIyAo7ICqOyDsgKo7IOGEiOGFseGGsTsg7ICqOyDhhIjhhbHhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0lMTQorQzAyQjtDMDJCOzExMDggMTE3MSAxMUIyO0MwMkI7MTEwOCAxMTcxIDExQjI7ICMgKOyAqzsg7ICrOyDhhIjhhbHhhrI7IOyAqzsg4YSI4YWx4YayOyApIEhBTkdVTCBTWUxMQUJMRSBCQldJTEIKK0MwMkM7QzAyQzsxMTA4IDExNzEgMTFCMztDMDJDOzExMDggMTE3MSAxMUIzOyAjICjsgKw7IOyArDsg4YSI4YWx4YazOyDsgKw7IOGEiOGFseGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXSUxTCitDMDJEO0MwMkQ7MTEwOCAxMTcxIDExQjQ7QzAyRDsxMTA4IDExNzEgMTFCNDsgIyAo7ICtOyDsgK07IOGEiOGFseGGtDsg7ICtOyDhhIjhhbHhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0lMVAorQzAyRTtDMDJFOzExMDggMTE3MSAxMUI1O0MwMkU7MTEwOCAxMTcxIDExQjU7ICMgKOyArjsg7ICuOyDhhIjhhbHhhrU7IOyArjsg4YSI4YWx4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBCQldJTFAKK0MwMkY7QzAyRjsxMTA4IDExNzEgMTFCNjtDMDJGOzExMDggMTE3MSAxMUI2OyAjICjsgK87IOyArzsg4YSI4YWx4Ya2OyDsgK87IOGEiOGFseGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXSUxICitDMDMwO0MwMzA7MTEwOCAxMTcxIDExQjc7QzAzMDsxMTA4IDExNzEgMTFCNzsgIyAo7ICwOyDsgLA7IOGEiOGFseGGtzsg7ICwOyDhhIjhhbHhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0lNCitDMDMxO0MwMzE7MTEwOCAxMTcxIDExQjg7QzAzMTsxMTA4IDExNzEgMTFCODsgIyAo7ICxOyDsgLE7IOGEiOGFseGGuDsg7ICxOyDhhIjhhbHhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0lCCitDMDMyO0MwMzI7MTEwOCAxMTcxIDExQjk7QzAzMjsxMTA4IDExNzEgMTFCOTsgIyAo7ICyOyDsgLI7IOGEiOGFseGGuTsg7ICyOyDhhIjhhbHhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0lCUworQzAzMztDMDMzOzExMDggMTE3MSAxMUJBO0MwMzM7MTEwOCAxMTcxIDExQkE7ICMgKOyAszsg7ICzOyDhhIjhhbHhhro7IOyAszsg4YSI4YWx4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCQldJUworQzAzNDtDMDM0OzExMDggMTE3MSAxMUJCO0MwMzQ7MTEwOCAxMTcxIDExQkI7ICMgKOyAtDsg7IC0OyDhhIjhhbHhhrs7IOyAtDsg4YSI4YWx4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBCQldJU1MKK0MwMzU7QzAzNTsxMTA4IDExNzEgMTFCQztDMDM1OzExMDggMTE3MSAxMUJDOyAjICjsgLU7IOyAtTsg4YSI4YWx4Ya8OyDsgLU7IOGEiOGFseGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJXSU5HCitDMDM2O0MwMzY7MTEwOCAxMTcxIDExQkQ7QzAzNjsxMTA4IDExNzEgMTFCRDsgIyAo7IC2OyDsgLY7IOGEiOGFseGGvTsg7IC2OyDhhIjhhbHhhr07ICkgSEFOR1VMIFNZTExBQkxFIEJCV0lKCitDMDM3O0MwMzc7MTEwOCAxMTcxIDExQkU7QzAzNzsxMTA4IDExNzEgMTFCRTsgIyAo7IC3OyDsgLc7IOGEiOGFseGGvjsg7IC3OyDhhIjhhbHhhr47ICkgSEFOR1VMIFNZTExBQkxFIEJCV0lDCitDMDM4O0MwMzg7MTEwOCAxMTcxIDExQkY7QzAzODsxMTA4IDExNzEgMTFCRjsgIyAo7IC4OyDsgLg7IOGEiOGFseGGvzsg7IC4OyDhhIjhhbHhhr87ICkgSEFOR1VMIFNZTExBQkxFIEJCV0lLCitDMDM5O0MwMzk7MTEwOCAxMTcxIDExQzA7QzAzOTsxMTA4IDExNzEgMTFDMDsgIyAo7IC5OyDsgLk7IOGEiOGFseGHgDsg7IC5OyDhhIjhhbHhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0lUCitDMDNBO0MwM0E7MTEwOCAxMTcxIDExQzE7QzAzQTsxMTA4IDExNzEgMTFDMTsgIyAo7IC6OyDsgLo7IOGEiOGFseGHgTsg7IC6OyDhhIjhhbHhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0lQCitDMDNCO0MwM0I7MTEwOCAxMTcxIDExQzI7QzAzQjsxMTA4IDExNzEgMTFDMjsgIyAo7IC7OyDsgLs7IOGEiOGFseGHgjsg7IC7OyDhhIjhhbHhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJCV0lICitDMDNDO0MwM0M7MTEwOCAxMTcyO0MwM0M7MTEwOCAxMTcyOyAjICjsgLw7IOyAvDsg4YSI4YWyOyDsgLw7IOGEiOGFsjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZVQorQzAzRDtDMDNEOzExMDggMTE3MiAxMUE4O0MwM0Q7MTEwOCAxMTcyIDExQTg7ICMgKOyAvTsg7IC9OyDhhIjhhbLhhqg7IOyAvTsg4YSI4YWy4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCQllVRworQzAzRTtDMDNFOzExMDggMTE3MiAxMUE5O0MwM0U7MTEwOCAxMTcyIDExQTk7ICMgKOyAvjsg7IC+OyDhhIjhhbLhhqk7IOyAvjsg4YSI4YWy4YapOyApIEhBTkdVTCBTWUxMQUJMRSBCQllVR0cKK0MwM0Y7QzAzRjsxMTA4IDExNzIgMTFBQTtDMDNGOzExMDggMTE3MiAxMUFBOyAjICjsgL87IOyAvzsg4YSI4YWy4YaqOyDsgL87IOGEiOGFsuGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZVUdTCitDMDQwO0MwNDA7MTEwOCAxMTcyIDExQUI7QzA0MDsxMTA4IDExNzIgMTFBQjsgIyAo7IGAOyDsgYA7IOGEiOGFsuGGqzsg7IGAOyDhhIjhhbLhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJCWVVOCitDMDQxO0MwNDE7MTEwOCAxMTcyIDExQUM7QzA0MTsxMTA4IDExNzIgMTFBQzsgIyAo7IGBOyDsgYE7IOGEiOGFsuGGrDsg7IGBOyDhhIjhhbLhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEJCWVVOSgorQzA0MjtDMDQyOzExMDggMTE3MiAxMUFEO0MwNDI7MTEwOCAxMTcyIDExQUQ7ICMgKOyBgjsg7IGCOyDhhIjhhbLhhq07IOyBgjsg4YSI4YWy4YatOyApIEhBTkdVTCBTWUxMQUJMRSBCQllVTkgKK0MwNDM7QzA0MzsxMTA4IDExNzIgMTFBRTtDMDQzOzExMDggMTE3MiAxMUFFOyAjICjsgYM7IOyBgzsg4YSI4YWy4YauOyDsgYM7IOGEiOGFsuGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZVUQKK0MwNDQ7QzA0NDsxMTA4IDExNzIgMTFBRjtDMDQ0OzExMDggMTE3MiAxMUFGOyAjICjsgYQ7IOyBhDsg4YSI4YWy4YavOyDsgYQ7IOGEiOGFsuGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZVUwKK0MwNDU7QzA0NTsxMTA4IDExNzIgMTFCMDtDMDQ1OzExMDggMTE3MiAxMUIwOyAjICjsgYU7IOyBhTsg4YSI4YWy4YawOyDsgYU7IOGEiOGFsuGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZVUxHCitDMDQ2O0MwNDY7MTEwOCAxMTcyIDExQjE7QzA0NjsxMTA4IDExNzIgMTFCMTsgIyAo7IGGOyDsgYY7IOGEiOGFsuGGsTsg7IGGOyDhhIjhhbLhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJCWVVMTQorQzA0NztDMDQ3OzExMDggMTE3MiAxMUIyO0MwNDc7MTEwOCAxMTcyIDExQjI7ICMgKOyBhzsg7IGHOyDhhIjhhbLhhrI7IOyBhzsg4YSI4YWy4YayOyApIEhBTkdVTCBTWUxMQUJMRSBCQllVTEIKK0MwNDg7QzA0ODsxMTA4IDExNzIgMTFCMztDMDQ4OzExMDggMTE3MiAxMUIzOyAjICjsgYg7IOyBiDsg4YSI4YWy4YazOyDsgYg7IOGEiOGFsuGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZVUxTCitDMDQ5O0MwNDk7MTEwOCAxMTcyIDExQjQ7QzA0OTsxMTA4IDExNzIgMTFCNDsgIyAo7IGJOyDsgYk7IOGEiOGFsuGGtDsg7IGJOyDhhIjhhbLhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJCWVVMVAorQzA0QTtDMDRBOzExMDggMTE3MiAxMUI1O0MwNEE7MTEwOCAxMTcyIDExQjU7ICMgKOyBijsg7IGKOyDhhIjhhbLhhrU7IOyBijsg4YSI4YWy4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBCQllVTFAKK0MwNEI7QzA0QjsxMTA4IDExNzIgMTFCNjtDMDRCOzExMDggMTE3MiAxMUI2OyAjICjsgYs7IOyBizsg4YSI4YWy4Ya2OyDsgYs7IOGEiOGFsuGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZVUxICitDMDRDO0MwNEM7MTEwOCAxMTcyIDExQjc7QzA0QzsxMTA4IDExNzIgMTFCNzsgIyAo7IGMOyDsgYw7IOGEiOGFsuGGtzsg7IGMOyDhhIjhhbLhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJCWVVNCitDMDREO0MwNEQ7MTEwOCAxMTcyIDExQjg7QzA0RDsxMTA4IDExNzIgMTFCODsgIyAo7IGNOyDsgY07IOGEiOGFsuGGuDsg7IGNOyDhhIjhhbLhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEJCWVVCCitDMDRFO0MwNEU7MTEwOCAxMTcyIDExQjk7QzA0RTsxMTA4IDExNzIgMTFCOTsgIyAo7IGOOyDsgY47IOGEiOGFsuGGuTsg7IGOOyDhhIjhhbLhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJCWVVCUworQzA0RjtDMDRGOzExMDggMTE3MiAxMUJBO0MwNEY7MTEwOCAxMTcyIDExQkE7ICMgKOyBjzsg7IGPOyDhhIjhhbLhhro7IOyBjzsg4YSI4YWy4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCQllVUworQzA1MDtDMDUwOzExMDggMTE3MiAxMUJCO0MwNTA7MTEwOCAxMTcyIDExQkI7ICMgKOyBkDsg7IGQOyDhhIjhhbLhhrs7IOyBkDsg4YSI4YWy4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBCQllVU1MKK0MwNTE7QzA1MTsxMTA4IDExNzIgMTFCQztDMDUxOzExMDggMTE3MiAxMUJDOyAjICjsgZE7IOyBkTsg4YSI4YWy4Ya8OyDsgZE7IOGEiOGFsuGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZVU5HCitDMDUyO0MwNTI7MTEwOCAxMTcyIDExQkQ7QzA1MjsxMTA4IDExNzIgMTFCRDsgIyAo7IGSOyDsgZI7IOGEiOGFsuGGvTsg7IGSOyDhhIjhhbLhhr07ICkgSEFOR1VMIFNZTExBQkxFIEJCWVVKCitDMDUzO0MwNTM7MTEwOCAxMTcyIDExQkU7QzA1MzsxMTA4IDExNzIgMTFCRTsgIyAo7IGTOyDsgZM7IOGEiOGFsuGGvjsg7IGTOyDhhIjhhbLhhr47ICkgSEFOR1VMIFNZTExBQkxFIEJCWVVDCitDMDU0O0MwNTQ7MTEwOCAxMTcyIDExQkY7QzA1NDsxMTA4IDExNzIgMTFCRjsgIyAo7IGUOyDsgZQ7IOGEiOGFsuGGvzsg7IGUOyDhhIjhhbLhhr87ICkgSEFOR1VMIFNZTExBQkxFIEJCWVVLCitDMDU1O0MwNTU7MTEwOCAxMTcyIDExQzA7QzA1NTsxMTA4IDExNzIgMTFDMDsgIyAo7IGVOyDsgZU7IOGEiOGFsuGHgDsg7IGVOyDhhIjhhbLhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJCWVVUCitDMDU2O0MwNTY7MTEwOCAxMTcyIDExQzE7QzA1NjsxMTA4IDExNzIgMTFDMTsgIyAo7IGWOyDsgZY7IOGEiOGFsuGHgTsg7IGWOyDhhIjhhbLhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEJCWVVQCitDMDU3O0MwNTc7MTEwOCAxMTcyIDExQzI7QzA1NzsxMTA4IDExNzIgMTFDMjsgIyAo7IGXOyDsgZc7IOGEiOGFsuGHgjsg7IGXOyDhhIjhhbLhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJCWVVICitDMDU4O0MwNTg7MTEwOCAxMTczO0MwNTg7MTEwOCAxMTczOyAjICjsgZg7IOyBmDsg4YSI4YWzOyDsgZg7IOGEiOGFszsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFVQorQzA1OTtDMDU5OzExMDggMTE3MyAxMUE4O0MwNTk7MTEwOCAxMTczIDExQTg7ICMgKOyBmTsg7IGZOyDhhIjhhbPhhqg7IOyBmTsg4YSI4YWz4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCQkVVRworQzA1QTtDMDVBOzExMDggMTE3MyAxMUE5O0MwNUE7MTEwOCAxMTczIDExQTk7ICMgKOyBmjsg7IGaOyDhhIjhhbPhhqk7IOyBmjsg4YSI4YWz4YapOyApIEhBTkdVTCBTWUxMQUJMRSBCQkVVR0cKK0MwNUI7QzA1QjsxMTA4IDExNzMgMTFBQTtDMDVCOzExMDggMTE3MyAxMUFBOyAjICjsgZs7IOyBmzsg4YSI4YWz4YaqOyDsgZs7IOGEiOGFs+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFVUdTCitDMDVDO0MwNUM7MTEwOCAxMTczIDExQUI7QzA1QzsxMTA4IDExNzMgMTFBQjsgIyAo7IGcOyDsgZw7IOGEiOGFs+GGqzsg7IGcOyDhhIjhhbPhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJCRVVOCitDMDVEO0MwNUQ7MTEwOCAxMTczIDExQUM7QzA1RDsxMTA4IDExNzMgMTFBQzsgIyAo7IGdOyDsgZ07IOGEiOGFs+GGrDsg7IGdOyDhhIjhhbPhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEJCRVVOSgorQzA1RTtDMDVFOzExMDggMTE3MyAxMUFEO0MwNUU7MTEwOCAxMTczIDExQUQ7ICMgKOyBnjsg7IGeOyDhhIjhhbPhhq07IOyBnjsg4YSI4YWz4YatOyApIEhBTkdVTCBTWUxMQUJMRSBCQkVVTkgKK0MwNUY7QzA1RjsxMTA4IDExNzMgMTFBRTtDMDVGOzExMDggMTE3MyAxMUFFOyAjICjsgZ87IOyBnzsg4YSI4YWz4YauOyDsgZ87IOGEiOGFs+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFVUQKK0MwNjA7QzA2MDsxMTA4IDExNzMgMTFBRjtDMDYwOzExMDggMTE3MyAxMUFGOyAjICjsgaA7IOyBoDsg4YSI4YWz4YavOyDsgaA7IOGEiOGFs+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFVUwKK0MwNjE7QzA2MTsxMTA4IDExNzMgMTFCMDtDMDYxOzExMDggMTE3MyAxMUIwOyAjICjsgaE7IOyBoTsg4YSI4YWz4YawOyDsgaE7IOGEiOGFs+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFVUxHCitDMDYyO0MwNjI7MTEwOCAxMTczIDExQjE7QzA2MjsxMTA4IDExNzMgMTFCMTsgIyAo7IGiOyDsgaI7IOGEiOGFs+GGsTsg7IGiOyDhhIjhhbPhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJCRVVMTQorQzA2MztDMDYzOzExMDggMTE3MyAxMUIyO0MwNjM7MTEwOCAxMTczIDExQjI7ICMgKOyBozsg7IGjOyDhhIjhhbPhhrI7IOyBozsg4YSI4YWz4YayOyApIEhBTkdVTCBTWUxMQUJMRSBCQkVVTEIKK0MwNjQ7QzA2NDsxMTA4IDExNzMgMTFCMztDMDY0OzExMDggMTE3MyAxMUIzOyAjICjsgaQ7IOyBpDsg4YSI4YWz4YazOyDsgaQ7IOGEiOGFs+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFVUxTCitDMDY1O0MwNjU7MTEwOCAxMTczIDExQjQ7QzA2NTsxMTA4IDExNzMgMTFCNDsgIyAo7IGlOyDsgaU7IOGEiOGFs+GGtDsg7IGlOyDhhIjhhbPhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJCRVVMVAorQzA2NjtDMDY2OzExMDggMTE3MyAxMUI1O0MwNjY7MTEwOCAxMTczIDExQjU7ICMgKOyBpjsg7IGmOyDhhIjhhbPhhrU7IOyBpjsg4YSI4YWz4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBCQkVVTFAKK0MwNjc7QzA2NzsxMTA4IDExNzMgMTFCNjtDMDY3OzExMDggMTE3MyAxMUI2OyAjICjsgac7IOyBpzsg4YSI4YWz4Ya2OyDsgac7IOGEiOGFs+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFVUxICitDMDY4O0MwNjg7MTEwOCAxMTczIDExQjc7QzA2ODsxMTA4IDExNzMgMTFCNzsgIyAo7IGoOyDsgag7IOGEiOGFs+GGtzsg7IGoOyDhhIjhhbPhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJCRVVNCitDMDY5O0MwNjk7MTEwOCAxMTczIDExQjg7QzA2OTsxMTA4IDExNzMgMTFCODsgIyAo7IGpOyDsgak7IOGEiOGFs+GGuDsg7IGpOyDhhIjhhbPhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEJCRVVCCitDMDZBO0MwNkE7MTEwOCAxMTczIDExQjk7QzA2QTsxMTA4IDExNzMgMTFCOTsgIyAo7IGqOyDsgao7IOGEiOGFs+GGuTsg7IGqOyDhhIjhhbPhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJCRVVCUworQzA2QjtDMDZCOzExMDggMTE3MyAxMUJBO0MwNkI7MTEwOCAxMTczIDExQkE7ICMgKOyBqzsg7IGrOyDhhIjhhbPhhro7IOyBqzsg4YSI4YWz4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCQkVVUworQzA2QztDMDZDOzExMDggMTE3MyAxMUJCO0MwNkM7MTEwOCAxMTczIDExQkI7ICMgKOyBrDsg7IGsOyDhhIjhhbPhhrs7IOyBrDsg4YSI4YWz4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBCQkVVU1MKK0MwNkQ7QzA2RDsxMTA4IDExNzMgMTFCQztDMDZEOzExMDggMTE3MyAxMUJDOyAjICjsga07IOyBrTsg4YSI4YWz4Ya8OyDsga07IOGEiOGFs+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJFVU5HCitDMDZFO0MwNkU7MTEwOCAxMTczIDExQkQ7QzA2RTsxMTA4IDExNzMgMTFCRDsgIyAo7IGuOyDsga47IOGEiOGFs+GGvTsg7IGuOyDhhIjhhbPhhr07ICkgSEFOR1VMIFNZTExBQkxFIEJCRVVKCitDMDZGO0MwNkY7MTEwOCAxMTczIDExQkU7QzA2RjsxMTA4IDExNzMgMTFCRTsgIyAo7IGvOyDsga87IOGEiOGFs+GGvjsg7IGvOyDhhIjhhbPhhr47ICkgSEFOR1VMIFNZTExBQkxFIEJCRVVDCitDMDcwO0MwNzA7MTEwOCAxMTczIDExQkY7QzA3MDsxMTA4IDExNzMgMTFCRjsgIyAo7IGwOyDsgbA7IOGEiOGFs+GGvzsg7IGwOyDhhIjhhbPhhr87ICkgSEFOR1VMIFNZTExBQkxFIEJCRVVLCitDMDcxO0MwNzE7MTEwOCAxMTczIDExQzA7QzA3MTsxMTA4IDExNzMgMTFDMDsgIyAo7IGxOyDsgbE7IOGEiOGFs+GHgDsg7IGxOyDhhIjhhbPhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJCRVVUCitDMDcyO0MwNzI7MTEwOCAxMTczIDExQzE7QzA3MjsxMTA4IDExNzMgMTFDMTsgIyAo7IGyOyDsgbI7IOGEiOGFs+GHgTsg7IGyOyDhhIjhhbPhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEJCRVVQCitDMDczO0MwNzM7MTEwOCAxMTczIDExQzI7QzA3MzsxMTA4IDExNzMgMTFDMjsgIyAo7IGzOyDsgbM7IOGEiOGFs+GHgjsg7IGzOyDhhIjhhbPhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJCRVVICitDMDc0O0MwNzQ7MTEwOCAxMTc0O0MwNzQ7MTEwOCAxMTc0OyAjICjsgbQ7IOyBtDsg4YSI4YW0OyDsgbQ7IOGEiOGFtDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZSQorQzA3NTtDMDc1OzExMDggMTE3NCAxMUE4O0MwNzU7MTEwOCAxMTc0IDExQTg7ICMgKOyBtTsg7IG1OyDhhIjhhbThhqg7IOyBtTsg4YSI4YW04YaoOyApIEhBTkdVTCBTWUxMQUJMRSBCQllJRworQzA3NjtDMDc2OzExMDggMTE3NCAxMUE5O0MwNzY7MTEwOCAxMTc0IDExQTk7ICMgKOyBtjsg7IG2OyDhhIjhhbThhqk7IOyBtjsg4YSI4YW04YapOyApIEhBTkdVTCBTWUxMQUJMRSBCQllJR0cKK0MwNzc7QzA3NzsxMTA4IDExNzQgMTFBQTtDMDc3OzExMDggMTE3NCAxMUFBOyAjICjsgbc7IOyBtzsg4YSI4YW04YaqOyDsgbc7IOGEiOGFtOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZSUdTCitDMDc4O0MwNzg7MTEwOCAxMTc0IDExQUI7QzA3ODsxMTA4IDExNzQgMTFBQjsgIyAo7IG4OyDsgbg7IOGEiOGFtOGGqzsg7IG4OyDhhIjhhbThhqs7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUlOCitDMDc5O0MwNzk7MTEwOCAxMTc0IDExQUM7QzA3OTsxMTA4IDExNzQgMTFBQzsgIyAo7IG5OyDsgbk7IOGEiOGFtOGGrDsg7IG5OyDhhIjhhbThhqw7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUlOSgorQzA3QTtDMDdBOzExMDggMTE3NCAxMUFEO0MwN0E7MTEwOCAxMTc0IDExQUQ7ICMgKOyBujsg7IG6OyDhhIjhhbThhq07IOyBujsg4YSI4YW04YatOyApIEhBTkdVTCBTWUxMQUJMRSBCQllJTkgKK0MwN0I7QzA3QjsxMTA4IDExNzQgMTFBRTtDMDdCOzExMDggMTE3NCAxMUFFOyAjICjsgbs7IOyBuzsg4YSI4YW04YauOyDsgbs7IOGEiOGFtOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZSUQKK0MwN0M7QzA3QzsxMTA4IDExNzQgMTFBRjtDMDdDOzExMDggMTE3NCAxMUFGOyAjICjsgbw7IOyBvDsg4YSI4YW04YavOyDsgbw7IOGEiOGFtOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZSUwKK0MwN0Q7QzA3RDsxMTA4IDExNzQgMTFCMDtDMDdEOzExMDggMTE3NCAxMUIwOyAjICjsgb07IOyBvTsg4YSI4YW04YawOyDsgb07IOGEiOGFtOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZSUxHCitDMDdFO0MwN0U7MTEwOCAxMTc0IDExQjE7QzA3RTsxMTA4IDExNzQgMTFCMTsgIyAo7IG+OyDsgb47IOGEiOGFtOGGsTsg7IG+OyDhhIjhhbThhrE7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUlMTQorQzA3RjtDMDdGOzExMDggMTE3NCAxMUIyO0MwN0Y7MTEwOCAxMTc0IDExQjI7ICMgKOyBvzsg7IG/OyDhhIjhhbThhrI7IOyBvzsg4YSI4YW04YayOyApIEhBTkdVTCBTWUxMQUJMRSBCQllJTEIKK0MwODA7QzA4MDsxMTA4IDExNzQgMTFCMztDMDgwOzExMDggMTE3NCAxMUIzOyAjICjsgoA7IOyCgDsg4YSI4YW04YazOyDsgoA7IOGEiOGFtOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZSUxTCitDMDgxO0MwODE7MTEwOCAxMTc0IDExQjQ7QzA4MTsxMTA4IDExNzQgMTFCNDsgIyAo7IKBOyDsgoE7IOGEiOGFtOGGtDsg7IKBOyDhhIjhhbThhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUlMVAorQzA4MjtDMDgyOzExMDggMTE3NCAxMUI1O0MwODI7MTEwOCAxMTc0IDExQjU7ICMgKOyCgjsg7IKCOyDhhIjhhbThhrU7IOyCgjsg4YSI4YW04Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBCQllJTFAKK0MwODM7QzA4MzsxMTA4IDExNzQgMTFCNjtDMDgzOzExMDggMTE3NCAxMUI2OyAjICjsgoM7IOyCgzsg4YSI4YW04Ya2OyDsgoM7IOGEiOGFtOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZSUxICitDMDg0O0MwODQ7MTEwOCAxMTc0IDExQjc7QzA4NDsxMTA4IDExNzQgMTFCNzsgIyAo7IKEOyDsgoQ7IOGEiOGFtOGGtzsg7IKEOyDhhIjhhbThhrc7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUlNCitDMDg1O0MwODU7MTEwOCAxMTc0IDExQjg7QzA4NTsxMTA4IDExNzQgMTFCODsgIyAo7IKFOyDsgoU7IOGEiOGFtOGGuDsg7IKFOyDhhIjhhbThhrg7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUlCCitDMDg2O0MwODY7MTEwOCAxMTc0IDExQjk7QzA4NjsxMTA4IDExNzQgMTFCOTsgIyAo7IKGOyDsgoY7IOGEiOGFtOGGuTsg7IKGOyDhhIjhhbThhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUlCUworQzA4NztDMDg3OzExMDggMTE3NCAxMUJBO0MwODc7MTEwOCAxMTc0IDExQkE7ICMgKOyChzsg7IKHOyDhhIjhhbThhro7IOyChzsg4YSI4YW04Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBCQllJUworQzA4ODtDMDg4OzExMDggMTE3NCAxMUJCO0MwODg7MTEwOCAxMTc0IDExQkI7ICMgKOyCiDsg7IKIOyDhhIjhhbThhrs7IOyCiDsg4YSI4YW04Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBCQllJU1MKK0MwODk7QzA4OTsxMTA4IDExNzQgMTFCQztDMDg5OzExMDggMTE3NCAxMUJDOyAjICjsgok7IOyCiTsg4YSI4YW04Ya8OyDsgok7IOGEiOGFtOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJZSU5HCitDMDhBO0MwOEE7MTEwOCAxMTc0IDExQkQ7QzA4QTsxMTA4IDExNzQgMTFCRDsgIyAo7IKKOyDsgoo7IOGEiOGFtOGGvTsg7IKKOyDhhIjhhbThhr07ICkgSEFOR1VMIFNZTExBQkxFIEJCWUlKCitDMDhCO0MwOEI7MTEwOCAxMTc0IDExQkU7QzA4QjsxMTA4IDExNzQgMTFCRTsgIyAo7IKLOyDsgos7IOGEiOGFtOGGvjsg7IKLOyDhhIjhhbThhr47ICkgSEFOR1VMIFNZTExBQkxFIEJCWUlDCitDMDhDO0MwOEM7MTEwOCAxMTc0IDExQkY7QzA4QzsxMTA4IDExNzQgMTFCRjsgIyAo7IKMOyDsgow7IOGEiOGFtOGGvzsg7IKMOyDhhIjhhbThhr87ICkgSEFOR1VMIFNZTExBQkxFIEJCWUlLCitDMDhEO0MwOEQ7MTEwOCAxMTc0IDExQzA7QzA4RDsxMTA4IDExNzQgMTFDMDsgIyAo7IKNOyDsgo07IOGEiOGFtOGHgDsg7IKNOyDhhIjhhbThh4A7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUlUCitDMDhFO0MwOEU7MTEwOCAxMTc0IDExQzE7QzA4RTsxMTA4IDExNzQgMTFDMTsgIyAo7IKOOyDsgo47IOGEiOGFtOGHgTsg7IKOOyDhhIjhhbThh4E7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUlQCitDMDhGO0MwOEY7MTEwOCAxMTc0IDExQzI7QzA4RjsxMTA4IDExNzQgMTFDMjsgIyAo7IKPOyDsgo87IOGEiOGFtOGHgjsg7IKPOyDhhIjhhbThh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJCWUlICitDMDkwO0MwOTA7MTEwOCAxMTc1O0MwOTA7MTEwOCAxMTc1OyAjICjsgpA7IOyCkDsg4YSI4YW1OyDsgpA7IOGEiOGFtTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJJCitDMDkxO0MwOTE7MTEwOCAxMTc1IDExQTg7QzA5MTsxMTA4IDExNzUgMTFBODsgIyAo7IKROyDsgpE7IOGEiOGFteGGqDsg7IKROyDhhIjhhbXhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEJCSUcKK0MwOTI7QzA5MjsxMTA4IDExNzUgMTFBOTtDMDkyOzExMDggMTE3NSAxMUE5OyAjICjsgpI7IOyCkjsg4YSI4YW14YapOyDsgpI7IOGEiOGFteGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJJR0cKK0MwOTM7QzA5MzsxMTA4IDExNzUgMTFBQTtDMDkzOzExMDggMTE3NSAxMUFBOyAjICjsgpM7IOyCkzsg4YSI4YW14YaqOyDsgpM7IOGEiOGFteGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJJR1MKK0MwOTQ7QzA5NDsxMTA4IDExNzUgMTFBQjtDMDk0OzExMDggMTE3NSAxMUFCOyAjICjsgpQ7IOyClDsg4YSI4YW14YarOyDsgpQ7IOGEiOGFteGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJJTgorQzA5NTtDMDk1OzExMDggMTE3NSAxMUFDO0MwOTU7MTEwOCAxMTc1IDExQUM7ICMgKOyClTsg7IKVOyDhhIjhhbXhhqw7IOyClTsg4YSI4YW14YasOyApIEhBTkdVTCBTWUxMQUJMRSBCQklOSgorQzA5NjtDMDk2OzExMDggMTE3NSAxMUFEO0MwOTY7MTEwOCAxMTc1IDExQUQ7ICMgKOyCljsg7IKWOyDhhIjhhbXhhq07IOyCljsg4YSI4YW14YatOyApIEhBTkdVTCBTWUxMQUJMRSBCQklOSAorQzA5NztDMDk3OzExMDggMTE3NSAxMUFFO0MwOTc7MTEwOCAxMTc1IDExQUU7ICMgKOyClzsg7IKXOyDhhIjhhbXhhq47IOyClzsg4YSI4YW14YauOyApIEhBTkdVTCBTWUxMQUJMRSBCQklECitDMDk4O0MwOTg7MTEwOCAxMTc1IDExQUY7QzA5ODsxMTA4IDExNzUgMTFBRjsgIyAo7IKYOyDsgpg7IOGEiOGFteGGrzsg7IKYOyDhhIjhhbXhhq87ICkgSEFOR1VMIFNZTExBQkxFIEJCSUwKK0MwOTk7QzA5OTsxMTA4IDExNzUgMTFCMDtDMDk5OzExMDggMTE3NSAxMUIwOyAjICjsgpk7IOyCmTsg4YSI4YW14YawOyDsgpk7IOGEiOGFteGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJJTEcKK0MwOUE7QzA5QTsxMTA4IDExNzUgMTFCMTtDMDlBOzExMDggMTE3NSAxMUIxOyAjICjsgpo7IOyCmjsg4YSI4YW14YaxOyDsgpo7IOGEiOGFteGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJJTE0KK0MwOUI7QzA5QjsxMTA4IDExNzUgMTFCMjtDMDlCOzExMDggMTE3NSAxMUIyOyAjICjsgps7IOyCmzsg4YSI4YW14YayOyDsgps7IOGEiOGFteGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJJTEIKK0MwOUM7QzA5QzsxMTA4IDExNzUgMTFCMztDMDlDOzExMDggMTE3NSAxMUIzOyAjICjsgpw7IOyCnDsg4YSI4YW14YazOyDsgpw7IOGEiOGFteGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQkJJTFMKK0MwOUQ7QzA5RDsxMTA4IDExNzUgMTFCNDtDMDlEOzExMDggMTE3NSAxMUI0OyAjICjsgp07IOyCnTsg4YSI4YW14Ya0OyDsgp07IOGEiOGFteGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJJTFQKK0MwOUU7QzA5RTsxMTA4IDExNzUgMTFCNTtDMDlFOzExMDggMTE3NSAxMUI1OyAjICjsgp47IOyCnjsg4YSI4YW14Ya1OyDsgp47IOGEiOGFteGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJJTFAKK0MwOUY7QzA5RjsxMTA4IDExNzUgMTFCNjtDMDlGOzExMDggMTE3NSAxMUI2OyAjICjsgp87IOyCnzsg4YSI4YW14Ya2OyDsgp87IOGEiOGFteGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQkJJTEgKK0MwQTA7QzBBMDsxMTA4IDExNzUgMTFCNztDMEEwOzExMDggMTE3NSAxMUI3OyAjICjsgqA7IOyCoDsg4YSI4YW14Ya3OyDsgqA7IOGEiOGFteGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJJTQorQzBBMTtDMEExOzExMDggMTE3NSAxMUI4O0MwQTE7MTEwOCAxMTc1IDExQjg7ICMgKOyCoTsg7IKhOyDhhIjhhbXhhrg7IOyCoTsg4YSI4YW14Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBCQklCCitDMEEyO0MwQTI7MTEwOCAxMTc1IDExQjk7QzBBMjsxMTA4IDExNzUgMTFCOTsgIyAo7IKiOyDsgqI7IOGEiOGFteGGuTsg7IKiOyDhhIjhhbXhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEJCSUJTCitDMEEzO0MwQTM7MTEwOCAxMTc1IDExQkE7QzBBMzsxMTA4IDExNzUgMTFCQTsgIyAo7IKjOyDsgqM7IOGEiOGFteGGujsg7IKjOyDhhIjhhbXhhro7ICkgSEFOR1VMIFNZTExBQkxFIEJCSVMKK0MwQTQ7QzBBNDsxMTA4IDExNzUgMTFCQjtDMEE0OzExMDggMTE3NSAxMUJCOyAjICjsgqQ7IOyCpDsg4YSI4YW14Ya7OyDsgqQ7IOGEiOGFteGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQkJJU1MKK0MwQTU7QzBBNTsxMTA4IDExNzUgMTFCQztDMEE1OzExMDggMTE3NSAxMUJDOyAjICjsgqU7IOyCpTsg4YSI4YW14Ya8OyDsgqU7IOGEiOGFteGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJJTkcKK0MwQTY7QzBBNjsxMTA4IDExNzUgMTFCRDtDMEE2OzExMDggMTE3NSAxMUJEOyAjICjsgqY7IOyCpjsg4YSI4YW14Ya9OyDsgqY7IOGEiOGFteGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQkJJSgorQzBBNztDMEE3OzExMDggMTE3NSAxMUJFO0MwQTc7MTEwOCAxMTc1IDExQkU7ICMgKOyCpzsg7IKnOyDhhIjhhbXhhr47IOyCpzsg4YSI4YW14Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBCQklDCitDMEE4O0MwQTg7MTEwOCAxMTc1IDExQkY7QzBBODsxMTA4IDExNzUgMTFCRjsgIyAo7IKoOyDsgqg7IOGEiOGFteGGvzsg7IKoOyDhhIjhhbXhhr87ICkgSEFOR1VMIFNZTExBQkxFIEJCSUsKK0MwQTk7QzBBOTsxMTA4IDExNzUgMTFDMDtDMEE5OzExMDggMTE3NSAxMUMwOyAjICjsgqk7IOyCqTsg4YSI4YW14YeAOyDsgqk7IOGEiOGFteGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQkJJVAorQzBBQTtDMEFBOzExMDggMTE3NSAxMUMxO0MwQUE7MTEwOCAxMTc1IDExQzE7ICMgKOyCqjsg7IKqOyDhhIjhhbXhh4E7IOyCqjsg4YSI4YW14YeBOyApIEhBTkdVTCBTWUxMQUJMRSBCQklQCitDMEFCO0MwQUI7MTEwOCAxMTc1IDExQzI7QzBBQjsxMTA4IDExNzUgMTFDMjsgIyAo7IKrOyDsgqs7IOGEiOGFteGHgjsg7IKrOyDhhIjhhbXhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEJCSUgKK0MwQUM7QzBBQzsxMTA5IDExNjE7QzBBQzsxMTA5IDExNjE7ICMgKOyCrDsg7IKsOyDhhInhhaE7IOyCrDsg4YSJ4YWhOyApIEhBTkdVTCBTWUxMQUJMRSBTQQorQzBBRDtDMEFEOzExMDkgMTE2MSAxMUE4O0MwQUQ7MTEwOSAxMTYxIDExQTg7ICMgKOyCrTsg7IKtOyDhhInhhaHhhqg7IOyCrTsg4YSJ4YWh4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBTQUcKK0MwQUU7QzBBRTsxMTA5IDExNjEgMTFBOTtDMEFFOzExMDkgMTE2MSAxMUE5OyAjICjsgq47IOyCrjsg4YSJ4YWh4YapOyDsgq47IOGEieGFoeGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgU0FHRworQzBBRjtDMEFGOzExMDkgMTE2MSAxMUFBO0MwQUY7MTEwOSAxMTYxIDExQUE7ICMgKOyCrzsg7IKvOyDhhInhhaHhhqo7IOyCrzsg4YSJ4YWh4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBTQUdTCitDMEIwO0MwQjA7MTEwOSAxMTYxIDExQUI7QzBCMDsxMTA5IDExNjEgMTFBQjsgIyAo7IKwOyDsgrA7IOGEieGFoeGGqzsg7IKwOyDhhInhhaHhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFNBTgorQzBCMTtDMEIxOzExMDkgMTE2MSAxMUFDO0MwQjE7MTEwOSAxMTYxIDExQUM7ICMgKOyCsTsg7IKxOyDhhInhhaHhhqw7IOyCsTsg4YSJ4YWh4YasOyApIEhBTkdVTCBTWUxMQUJMRSBTQU5KCitDMEIyO0MwQjI7MTEwOSAxMTYxIDExQUQ7QzBCMjsxMTA5IDExNjEgMTFBRDsgIyAo7IKyOyDsgrI7IOGEieGFoeGGrTsg7IKyOyDhhInhhaHhhq07ICkgSEFOR1VMIFNZTExBQkxFIFNBTkgKK0MwQjM7QzBCMzsxMTA5IDExNjEgMTFBRTtDMEIzOzExMDkgMTE2MSAxMUFFOyAjICjsgrM7IOyCszsg4YSJ4YWh4YauOyDsgrM7IOGEieGFoeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgU0FECitDMEI0O0MwQjQ7MTEwOSAxMTYxIDExQUY7QzBCNDsxMTA5IDExNjEgMTFBRjsgIyAo7IK0OyDsgrQ7IOGEieGFoeGGrzsg7IK0OyDhhInhhaHhhq87ICkgSEFOR1VMIFNZTExBQkxFIFNBTAorQzBCNTtDMEI1OzExMDkgMTE2MSAxMUIwO0MwQjU7MTEwOSAxMTYxIDExQjA7ICMgKOyCtTsg7IK1OyDhhInhhaHhhrA7IOyCtTsg4YSJ4YWh4YawOyApIEhBTkdVTCBTWUxMQUJMRSBTQUxHCitDMEI2O0MwQjY7MTEwOSAxMTYxIDExQjE7QzBCNjsxMTA5IDExNjEgMTFCMTsgIyAo7IK2OyDsgrY7IOGEieGFoeGGsTsg7IK2OyDhhInhhaHhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFNBTE0KK0MwQjc7QzBCNzsxMTA5IDExNjEgMTFCMjtDMEI3OzExMDkgMTE2MSAxMUIyOyAjICjsgrc7IOyCtzsg4YSJ4YWh4YayOyDsgrc7IOGEieGFoeGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgU0FMQgorQzBCODtDMEI4OzExMDkgMTE2MSAxMUIzO0MwQjg7MTEwOSAxMTYxIDExQjM7ICMgKOyCuDsg7IK4OyDhhInhhaHhhrM7IOyCuDsg4YSJ4YWh4YazOyApIEhBTkdVTCBTWUxMQUJMRSBTQUxTCitDMEI5O0MwQjk7MTEwOSAxMTYxIDExQjQ7QzBCOTsxMTA5IDExNjEgMTFCNDsgIyAo7IK5OyDsgrk7IOGEieGFoeGGtDsg7IK5OyDhhInhhaHhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFNBTFQKK0MwQkE7QzBCQTsxMTA5IDExNjEgMTFCNTtDMEJBOzExMDkgMTE2MSAxMUI1OyAjICjsgro7IOyCujsg4YSJ4YWh4Ya1OyDsgro7IOGEieGFoeGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgU0FMUAorQzBCQjtDMEJCOzExMDkgMTE2MSAxMUI2O0MwQkI7MTEwOSAxMTYxIDExQjY7ICMgKOyCuzsg7IK7OyDhhInhhaHhhrY7IOyCuzsg4YSJ4YWh4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBTQUxICitDMEJDO0MwQkM7MTEwOSAxMTYxIDExQjc7QzBCQzsxMTA5IDExNjEgMTFCNzsgIyAo7IK8OyDsgrw7IOGEieGFoeGGtzsg7IK8OyDhhInhhaHhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFNBTQorQzBCRDtDMEJEOzExMDkgMTE2MSAxMUI4O0MwQkQ7MTEwOSAxMTYxIDExQjg7ICMgKOyCvTsg7IK9OyDhhInhhaHhhrg7IOyCvTsg4YSJ4YWh4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBTQUIKK0MwQkU7QzBCRTsxMTA5IDExNjEgMTFCOTtDMEJFOzExMDkgMTE2MSAxMUI5OyAjICjsgr47IOyCvjsg4YSJ4YWh4Ya5OyDsgr47IOGEieGFoeGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgU0FCUworQzBCRjtDMEJGOzExMDkgMTE2MSAxMUJBO0MwQkY7MTEwOSAxMTYxIDExQkE7ICMgKOyCvzsg7IK/OyDhhInhhaHhhro7IOyCvzsg4YSJ4YWh4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBTQVMKK0MwQzA7QzBDMDsxMTA5IDExNjEgMTFCQjtDMEMwOzExMDkgMTE2MSAxMUJCOyAjICjsg4A7IOyDgDsg4YSJ4YWh4Ya7OyDsg4A7IOGEieGFoeGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgU0FTUworQzBDMTtDMEMxOzExMDkgMTE2MSAxMUJDO0MwQzE7MTEwOSAxMTYxIDExQkM7ICMgKOyDgTsg7IOBOyDhhInhhaHhhrw7IOyDgTsg4YSJ4YWh4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBTQU5HCitDMEMyO0MwQzI7MTEwOSAxMTYxIDExQkQ7QzBDMjsxMTA5IDExNjEgMTFCRDsgIyAo7IOCOyDsg4I7IOGEieGFoeGGvTsg7IOCOyDhhInhhaHhhr07ICkgSEFOR1VMIFNZTExBQkxFIFNBSgorQzBDMztDMEMzOzExMDkgMTE2MSAxMUJFO0MwQzM7MTEwOSAxMTYxIDExQkU7ICMgKOyDgzsg7IODOyDhhInhhaHhhr47IOyDgzsg4YSJ4YWh4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBTQUMKK0MwQzQ7QzBDNDsxMTA5IDExNjEgMTFCRjtDMEM0OzExMDkgMTE2MSAxMUJGOyAjICjsg4Q7IOyDhDsg4YSJ4YWh4Ya/OyDsg4Q7IOGEieGFoeGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgU0FLCitDMEM1O0MwQzU7MTEwOSAxMTYxIDExQzA7QzBDNTsxMTA5IDExNjEgMTFDMDsgIyAo7IOFOyDsg4U7IOGEieGFoeGHgDsg7IOFOyDhhInhhaHhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFNBVAorQzBDNjtDMEM2OzExMDkgMTE2MSAxMUMxO0MwQzY7MTEwOSAxMTYxIDExQzE7ICMgKOyDhjsg7IOGOyDhhInhhaHhh4E7IOyDhjsg4YSJ4YWh4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBTQVAKK0MwQzc7QzBDNzsxMTA5IDExNjEgMTFDMjtDMEM3OzExMDkgMTE2MSAxMUMyOyAjICjsg4c7IOyDhzsg4YSJ4YWh4YeCOyDsg4c7IOGEieGFoeGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgU0FICitDMEM4O0MwQzg7MTEwOSAxMTYyO0MwQzg7MTEwOSAxMTYyOyAjICjsg4g7IOyDiDsg4YSJ4YWiOyDsg4g7IOGEieGFojsgKSBIQU5HVUwgU1lMTEFCTEUgU0FFCitDMEM5O0MwQzk7MTEwOSAxMTYyIDExQTg7QzBDOTsxMTA5IDExNjIgMTFBODsgIyAo7IOJOyDsg4k7IOGEieGFouGGqDsg7IOJOyDhhInhhaLhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFNBRUcKK0MwQ0E7QzBDQTsxMTA5IDExNjIgMTFBOTtDMENBOzExMDkgMTE2MiAxMUE5OyAjICjsg4o7IOyDijsg4YSJ4YWi4YapOyDsg4o7IOGEieGFouGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgU0FFR0cKK0MwQ0I7QzBDQjsxMTA5IDExNjIgMTFBQTtDMENCOzExMDkgMTE2MiAxMUFBOyAjICjsg4s7IOyDizsg4YSJ4YWi4YaqOyDsg4s7IOGEieGFouGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgU0FFR1MKK0MwQ0M7QzBDQzsxMTA5IDExNjIgMTFBQjtDMENDOzExMDkgMTE2MiAxMUFCOyAjICjsg4w7IOyDjDsg4YSJ4YWi4YarOyDsg4w7IOGEieGFouGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgU0FFTgorQzBDRDtDMENEOzExMDkgMTE2MiAxMUFDO0MwQ0Q7MTEwOSAxMTYyIDExQUM7ICMgKOyDjTsg7IONOyDhhInhhaLhhqw7IOyDjTsg4YSJ4YWi4YasOyApIEhBTkdVTCBTWUxMQUJMRSBTQUVOSgorQzBDRTtDMENFOzExMDkgMTE2MiAxMUFEO0MwQ0U7MTEwOSAxMTYyIDExQUQ7ICMgKOyDjjsg7IOOOyDhhInhhaLhhq07IOyDjjsg4YSJ4YWi4YatOyApIEhBTkdVTCBTWUxMQUJMRSBTQUVOSAorQzBDRjtDMENGOzExMDkgMTE2MiAxMUFFO0MwQ0Y7MTEwOSAxMTYyIDExQUU7ICMgKOyDjzsg7IOPOyDhhInhhaLhhq47IOyDjzsg4YSJ4YWi4YauOyApIEhBTkdVTCBTWUxMQUJMRSBTQUVECitDMEQwO0MwRDA7MTEwOSAxMTYyIDExQUY7QzBEMDsxMTA5IDExNjIgMTFBRjsgIyAo7IOQOyDsg5A7IOGEieGFouGGrzsg7IOQOyDhhInhhaLhhq87ICkgSEFOR1VMIFNZTExBQkxFIFNBRUwKK0MwRDE7QzBEMTsxMTA5IDExNjIgMTFCMDtDMEQxOzExMDkgMTE2MiAxMUIwOyAjICjsg5E7IOyDkTsg4YSJ4YWi4YawOyDsg5E7IOGEieGFouGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgU0FFTEcKK0MwRDI7QzBEMjsxMTA5IDExNjIgMTFCMTtDMEQyOzExMDkgMTE2MiAxMUIxOyAjICjsg5I7IOyDkjsg4YSJ4YWi4YaxOyDsg5I7IOGEieGFouGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgU0FFTE0KK0MwRDM7QzBEMzsxMTA5IDExNjIgMTFCMjtDMEQzOzExMDkgMTE2MiAxMUIyOyAjICjsg5M7IOyDkzsg4YSJ4YWi4YayOyDsg5M7IOGEieGFouGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgU0FFTEIKK0MwRDQ7QzBENDsxMTA5IDExNjIgMTFCMztDMEQ0OzExMDkgMTE2MiAxMUIzOyAjICjsg5Q7IOyDlDsg4YSJ4YWi4YazOyDsg5Q7IOGEieGFouGGszsgKSBIQU5HVUwgU1lMTEFCTEUgU0FFTFMKK0MwRDU7QzBENTsxMTA5IDExNjIgMTFCNDtDMEQ1OzExMDkgMTE2MiAxMUI0OyAjICjsg5U7IOyDlTsg4YSJ4YWi4Ya0OyDsg5U7IOGEieGFouGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgU0FFTFQKK0MwRDY7QzBENjsxMTA5IDExNjIgMTFCNTtDMEQ2OzExMDkgMTE2MiAxMUI1OyAjICjsg5Y7IOyDljsg4YSJ4YWi4Ya1OyDsg5Y7IOGEieGFouGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgU0FFTFAKK0MwRDc7QzBENzsxMTA5IDExNjIgMTFCNjtDMEQ3OzExMDkgMTE2MiAxMUI2OyAjICjsg5c7IOyDlzsg4YSJ4YWi4Ya2OyDsg5c7IOGEieGFouGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgU0FFTEgKK0MwRDg7QzBEODsxMTA5IDExNjIgMTFCNztDMEQ4OzExMDkgMTE2MiAxMUI3OyAjICjsg5g7IOyDmDsg4YSJ4YWi4Ya3OyDsg5g7IOGEieGFouGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgU0FFTQorQzBEOTtDMEQ5OzExMDkgMTE2MiAxMUI4O0MwRDk7MTEwOSAxMTYyIDExQjg7ICMgKOyDmTsg7IOZOyDhhInhhaLhhrg7IOyDmTsg4YSJ4YWi4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBTQUVCCitDMERBO0MwREE7MTEwOSAxMTYyIDExQjk7QzBEQTsxMTA5IDExNjIgMTFCOTsgIyAo7IOaOyDsg5o7IOGEieGFouGGuTsg7IOaOyDhhInhhaLhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFNBRUJTCitDMERCO0MwREI7MTEwOSAxMTYyIDExQkE7QzBEQjsxMTA5IDExNjIgMTFCQTsgIyAo7IObOyDsg5s7IOGEieGFouGGujsg7IObOyDhhInhhaLhhro7ICkgSEFOR1VMIFNZTExBQkxFIFNBRVMKK0MwREM7QzBEQzsxMTA5IDExNjIgMTFCQjtDMERDOzExMDkgMTE2MiAxMUJCOyAjICjsg5w7IOyDnDsg4YSJ4YWi4Ya7OyDsg5w7IOGEieGFouGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgU0FFU1MKK0MwREQ7QzBERDsxMTA5IDExNjIgMTFCQztDMEREOzExMDkgMTE2MiAxMUJDOyAjICjsg507IOyDnTsg4YSJ4YWi4Ya8OyDsg507IOGEieGFouGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgU0FFTkcKK0MwREU7QzBERTsxMTA5IDExNjIgMTFCRDtDMERFOzExMDkgMTE2MiAxMUJEOyAjICjsg547IOyDnjsg4YSJ4YWi4Ya9OyDsg547IOGEieGFouGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgU0FFSgorQzBERjtDMERGOzExMDkgMTE2MiAxMUJFO0MwREY7MTEwOSAxMTYyIDExQkU7ICMgKOyDnzsg7IOfOyDhhInhhaLhhr47IOyDnzsg4YSJ4YWi4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBTQUVDCitDMEUwO0MwRTA7MTEwOSAxMTYyIDExQkY7QzBFMDsxMTA5IDExNjIgMTFCRjsgIyAo7IOgOyDsg6A7IOGEieGFouGGvzsg7IOgOyDhhInhhaLhhr87ICkgSEFOR1VMIFNZTExBQkxFIFNBRUsKK0MwRTE7QzBFMTsxMTA5IDExNjIgMTFDMDtDMEUxOzExMDkgMTE2MiAxMUMwOyAjICjsg6E7IOyDoTsg4YSJ4YWi4YeAOyDsg6E7IOGEieGFouGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgU0FFVAorQzBFMjtDMEUyOzExMDkgMTE2MiAxMUMxO0MwRTI7MTEwOSAxMTYyIDExQzE7ICMgKOyDojsg7IOiOyDhhInhhaLhh4E7IOyDojsg4YSJ4YWi4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBTQUVQCitDMEUzO0MwRTM7MTEwOSAxMTYyIDExQzI7QzBFMzsxMTA5IDExNjIgMTFDMjsgIyAo7IOjOyDsg6M7IOGEieGFouGHgjsg7IOjOyDhhInhhaLhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFNBRUgKK0MwRTQ7QzBFNDsxMTA5IDExNjM7QzBFNDsxMTA5IDExNjM7ICMgKOyDpDsg7IOkOyDhhInhhaM7IOyDpDsg4YSJ4YWjOyApIEhBTkdVTCBTWUxMQUJMRSBTWUEKK0MwRTU7QzBFNTsxMTA5IDExNjMgMTFBODtDMEU1OzExMDkgMTE2MyAxMUE4OyAjICjsg6U7IOyDpTsg4YSJ4YWj4YaoOyDsg6U7IOGEieGFo+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU1lBRworQzBFNjtDMEU2OzExMDkgMTE2MyAxMUE5O0MwRTY7MTEwOSAxMTYzIDExQTk7ICMgKOyDpjsg7IOmOyDhhInhhaPhhqk7IOyDpjsg4YSJ4YWj4YapOyApIEhBTkdVTCBTWUxMQUJMRSBTWUFHRworQzBFNztDMEU3OzExMDkgMTE2MyAxMUFBO0MwRTc7MTEwOSAxMTYzIDExQUE7ICMgKOyDpzsg7IOnOyDhhInhhaPhhqo7IOyDpzsg4YSJ4YWj4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBTWUFHUworQzBFODtDMEU4OzExMDkgMTE2MyAxMUFCO0MwRTg7MTEwOSAxMTYzIDExQUI7ICMgKOyDqDsg7IOoOyDhhInhhaPhhqs7IOyDqDsg4YSJ4YWj4YarOyApIEhBTkdVTCBTWUxMQUJMRSBTWUFOCitDMEU5O0MwRTk7MTEwOSAxMTYzIDExQUM7QzBFOTsxMTA5IDExNjMgMTFBQzsgIyAo7IOpOyDsg6k7IOGEieGFo+GGrDsg7IOpOyDhhInhhaPhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFNZQU5KCitDMEVBO0MwRUE7MTEwOSAxMTYzIDExQUQ7QzBFQTsxMTA5IDExNjMgMTFBRDsgIyAo7IOqOyDsg6o7IOGEieGFo+GGrTsg7IOqOyDhhInhhaPhhq07ICkgSEFOR1VMIFNZTExBQkxFIFNZQU5ICitDMEVCO0MwRUI7MTEwOSAxMTYzIDExQUU7QzBFQjsxMTA5IDExNjMgMTFBRTsgIyAo7IOrOyDsg6s7IOGEieGFo+GGrjsg7IOrOyDhhInhhaPhhq47ICkgSEFOR1VMIFNZTExBQkxFIFNZQUQKK0MwRUM7QzBFQzsxMTA5IDExNjMgMTFBRjtDMEVDOzExMDkgMTE2MyAxMUFGOyAjICjsg6w7IOyDrDsg4YSJ4YWj4YavOyDsg6w7IOGEieGFo+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgU1lBTAorQzBFRDtDMEVEOzExMDkgMTE2MyAxMUIwO0MwRUQ7MTEwOSAxMTYzIDExQjA7ICMgKOyDrTsg7IOtOyDhhInhhaPhhrA7IOyDrTsg4YSJ4YWj4YawOyApIEhBTkdVTCBTWUxMQUJMRSBTWUFMRworQzBFRTtDMEVFOzExMDkgMTE2MyAxMUIxO0MwRUU7MTEwOSAxMTYzIDExQjE7ICMgKOyDrjsg7IOuOyDhhInhhaPhhrE7IOyDrjsg4YSJ4YWj4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTWUFMTQorQzBFRjtDMEVGOzExMDkgMTE2MyAxMUIyO0MwRUY7MTEwOSAxMTYzIDExQjI7ICMgKOyDrzsg7IOvOyDhhInhhaPhhrI7IOyDrzsg4YSJ4YWj4YayOyApIEhBTkdVTCBTWUxMQUJMRSBTWUFMQgorQzBGMDtDMEYwOzExMDkgMTE2MyAxMUIzO0MwRjA7MTEwOSAxMTYzIDExQjM7ICMgKOyDsDsg7IOwOyDhhInhhaPhhrM7IOyDsDsg4YSJ4YWj4YazOyApIEhBTkdVTCBTWUxMQUJMRSBTWUFMUworQzBGMTtDMEYxOzExMDkgMTE2MyAxMUI0O0MwRjE7MTEwOSAxMTYzIDExQjQ7ICMgKOyDsTsg7IOxOyDhhInhhaPhhrQ7IOyDsTsg4YSJ4YWj4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTWUFMVAorQzBGMjtDMEYyOzExMDkgMTE2MyAxMUI1O0MwRjI7MTEwOSAxMTYzIDExQjU7ICMgKOyDsjsg7IOyOyDhhInhhaPhhrU7IOyDsjsg4YSJ4YWj4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBTWUFMUAorQzBGMztDMEYzOzExMDkgMTE2MyAxMUI2O0MwRjM7MTEwOSAxMTYzIDExQjY7ICMgKOyDszsg7IOzOyDhhInhhaPhhrY7IOyDszsg4YSJ4YWj4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBTWUFMSAorQzBGNDtDMEY0OzExMDkgMTE2MyAxMUI3O0MwRjQ7MTEwOSAxMTYzIDExQjc7ICMgKOyDtDsg7IO0OyDhhInhhaPhhrc7IOyDtDsg4YSJ4YWj4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTWUFNCitDMEY1O0MwRjU7MTEwOSAxMTYzIDExQjg7QzBGNTsxMTA5IDExNjMgMTFCODsgIyAo7IO1OyDsg7U7IOGEieGFo+GGuDsg7IO1OyDhhInhhaPhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFNZQUIKK0MwRjY7QzBGNjsxMTA5IDExNjMgMTFCOTtDMEY2OzExMDkgMTE2MyAxMUI5OyAjICjsg7Y7IOyDtjsg4YSJ4YWj4Ya5OyDsg7Y7IOGEieGFo+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgU1lBQlMKK0MwRjc7QzBGNzsxMTA5IDExNjMgMTFCQTtDMEY3OzExMDkgMTE2MyAxMUJBOyAjICjsg7c7IOyDtzsg4YSJ4YWj4Ya6OyDsg7c7IOGEieGFo+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgU1lBUworQzBGODtDMEY4OzExMDkgMTE2MyAxMUJCO0MwRjg7MTEwOSAxMTYzIDExQkI7ICMgKOyDuDsg7IO4OyDhhInhhaPhhrs7IOyDuDsg4YSJ4YWj4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBTWUFTUworQzBGOTtDMEY5OzExMDkgMTE2MyAxMUJDO0MwRjk7MTEwOSAxMTYzIDExQkM7ICMgKOyDuTsg7IO5OyDhhInhhaPhhrw7IOyDuTsg4YSJ4YWj4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBTWUFORworQzBGQTtDMEZBOzExMDkgMTE2MyAxMUJEO0MwRkE7MTEwOSAxMTYzIDExQkQ7ICMgKOyDujsg7IO6OyDhhInhhaPhhr07IOyDujsg4YSJ4YWj4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTWUFKCitDMEZCO0MwRkI7MTEwOSAxMTYzIDExQkU7QzBGQjsxMTA5IDExNjMgMTFCRTsgIyAo7IO7OyDsg7s7IOGEieGFo+GGvjsg7IO7OyDhhInhhaPhhr47ICkgSEFOR1VMIFNZTExBQkxFIFNZQUMKK0MwRkM7QzBGQzsxMTA5IDExNjMgMTFCRjtDMEZDOzExMDkgMTE2MyAxMUJGOyAjICjsg7w7IOyDvDsg4YSJ4YWj4Ya/OyDsg7w7IOGEieGFo+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgU1lBSworQzBGRDtDMEZEOzExMDkgMTE2MyAxMUMwO0MwRkQ7MTEwOSAxMTYzIDExQzA7ICMgKOyDvTsg7IO9OyDhhInhhaPhh4A7IOyDvTsg4YSJ4YWj4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTWUFUCitDMEZFO0MwRkU7MTEwOSAxMTYzIDExQzE7QzBGRTsxMTA5IDExNjMgMTFDMTsgIyAo7IO+OyDsg747IOGEieGFo+GHgTsg7IO+OyDhhInhhaPhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFNZQVAKK0MwRkY7QzBGRjsxMTA5IDExNjMgMTFDMjtDMEZGOzExMDkgMTE2MyAxMUMyOyAjICjsg787IOyDvzsg4YSJ4YWj4YeCOyDsg787IOGEieGFo+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgU1lBSAorQzEwMDtDMTAwOzExMDkgMTE2NDtDMTAwOzExMDkgMTE2NDsgIyAo7ISAOyDshIA7IOGEieGFpDsg7ISAOyDhhInhhaQ7ICkgSEFOR1VMIFNZTExBQkxFIFNZQUUKK0MxMDE7QzEwMTsxMTA5IDExNjQgMTFBODtDMTAxOzExMDkgMTE2NCAxMUE4OyAjICjshIE7IOyEgTsg4YSJ4YWk4YaoOyDshIE7IOGEieGFpOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU1lBRUcKK0MxMDI7QzEwMjsxMTA5IDExNjQgMTFBOTtDMTAyOzExMDkgMTE2NCAxMUE5OyAjICjshII7IOyEgjsg4YSJ4YWk4YapOyDshII7IOGEieGFpOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgU1lBRUdHCitDMTAzO0MxMDM7MTEwOSAxMTY0IDExQUE7QzEwMzsxMTA5IDExNjQgMTFBQTsgIyAo7ISDOyDshIM7IOGEieGFpOGGqjsg7ISDOyDhhInhhaThhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNZQUVHUworQzEwNDtDMTA0OzExMDkgMTE2NCAxMUFCO0MxMDQ7MTEwOSAxMTY0IDExQUI7ICMgKOyEhDsg7ISEOyDhhInhhaThhqs7IOyEhDsg4YSJ4YWk4YarOyApIEhBTkdVTCBTWUxMQUJMRSBTWUFFTgorQzEwNTtDMTA1OzExMDkgMTE2NCAxMUFDO0MxMDU7MTEwOSAxMTY0IDExQUM7ICMgKOyEhTsg7ISFOyDhhInhhaThhqw7IOyEhTsg4YSJ4YWk4YasOyApIEhBTkdVTCBTWUxMQUJMRSBTWUFFTkoKK0MxMDY7QzEwNjsxMTA5IDExNjQgMTFBRDtDMTA2OzExMDkgMTE2NCAxMUFEOyAjICjshIY7IOyEhjsg4YSJ4YWk4YatOyDshIY7IOGEieGFpOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1lBRU5ICitDMTA3O0MxMDc7MTEwOSAxMTY0IDExQUU7QzEwNzsxMTA5IDExNjQgMTFBRTsgIyAo7ISHOyDshIc7IOGEieGFpOGGrjsg7ISHOyDhhInhhaThhq47ICkgSEFOR1VMIFNZTExBQkxFIFNZQUVECitDMTA4O0MxMDg7MTEwOSAxMTY0IDExQUY7QzEwODsxMTA5IDExNjQgMTFBRjsgIyAo7ISIOyDshIg7IOGEieGFpOGGrzsg7ISIOyDhhInhhaThhq87ICkgSEFOR1VMIFNZTExBQkxFIFNZQUVMCitDMTA5O0MxMDk7MTEwOSAxMTY0IDExQjA7QzEwOTsxMTA5IDExNjQgMTFCMDsgIyAo7ISJOyDshIk7IOGEieGFpOGGsDsg7ISJOyDhhInhhaThhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNZQUVMRworQzEwQTtDMTBBOzExMDkgMTE2NCAxMUIxO0MxMEE7MTEwOSAxMTY0IDExQjE7ICMgKOyEijsg7ISKOyDhhInhhaThhrE7IOyEijsg4YSJ4YWk4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTWUFFTE0KK0MxMEI7QzEwQjsxMTA5IDExNjQgMTFCMjtDMTBCOzExMDkgMTE2NCAxMUIyOyAjICjshIs7IOyEizsg4YSJ4YWk4YayOyDshIs7IOGEieGFpOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgU1lBRUxCCitDMTBDO0MxMEM7MTEwOSAxMTY0IDExQjM7QzEwQzsxMTA5IDExNjQgMTFCMzsgIyAo7ISMOyDshIw7IOGEieGFpOGGszsg7ISMOyDhhInhhaThhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNZQUVMUworQzEwRDtDMTBEOzExMDkgMTE2NCAxMUI0O0MxMEQ7MTEwOSAxMTY0IDExQjQ7ICMgKOyEjTsg7ISNOyDhhInhhaThhrQ7IOyEjTsg4YSJ4YWk4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTWUFFTFQKK0MxMEU7QzEwRTsxMTA5IDExNjQgMTFCNTtDMTBFOzExMDkgMTE2NCAxMUI1OyAjICjshI47IOyEjjsg4YSJ4YWk4Ya1OyDshI47IOGEieGFpOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgU1lBRUxQCitDMTBGO0MxMEY7MTEwOSAxMTY0IDExQjY7QzEwRjsxMTA5IDExNjQgMTFCNjsgIyAo7ISPOyDshI87IOGEieGFpOGGtjsg7ISPOyDhhInhhaThhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNZQUVMSAorQzExMDtDMTEwOzExMDkgMTE2NCAxMUI3O0MxMTA7MTEwOSAxMTY0IDExQjc7ICMgKOyEkDsg7ISQOyDhhInhhaThhrc7IOyEkDsg4YSJ4YWk4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTWUFFTQorQzExMTtDMTExOzExMDkgMTE2NCAxMUI4O0MxMTE7MTEwOSAxMTY0IDExQjg7ICMgKOyEkTsg7ISROyDhhInhhaThhrg7IOyEkTsg4YSJ4YWk4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBTWUFFQgorQzExMjtDMTEyOzExMDkgMTE2NCAxMUI5O0MxMTI7MTEwOSAxMTY0IDExQjk7ICMgKOyEkjsg7ISSOyDhhInhhaThhrk7IOyEkjsg4YSJ4YWk4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTWUFFQlMKK0MxMTM7QzExMzsxMTA5IDExNjQgMTFCQTtDMTEzOzExMDkgMTE2NCAxMUJBOyAjICjshJM7IOyEkzsg4YSJ4YWk4Ya6OyDshJM7IOGEieGFpOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgU1lBRVMKK0MxMTQ7QzExNDsxMTA5IDExNjQgMTFCQjtDMTE0OzExMDkgMTE2NCAxMUJCOyAjICjshJQ7IOyElDsg4YSJ4YWk4Ya7OyDshJQ7IOGEieGFpOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgU1lBRVNTCitDMTE1O0MxMTU7MTEwOSAxMTY0IDExQkM7QzExNTsxMTA5IDExNjQgMTFCQzsgIyAo7ISVOyDshJU7IOGEieGFpOGGvDsg7ISVOyDhhInhhaThhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNZQUVORworQzExNjtDMTE2OzExMDkgMTE2NCAxMUJEO0MxMTY7MTEwOSAxMTY0IDExQkQ7ICMgKOyEljsg7ISWOyDhhInhhaThhr07IOyEljsg4YSJ4YWk4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTWUFFSgorQzExNztDMTE3OzExMDkgMTE2NCAxMUJFO0MxMTc7MTEwOSAxMTY0IDExQkU7ICMgKOyElzsg7ISXOyDhhInhhaThhr47IOyElzsg4YSJ4YWk4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBTWUFFQworQzExODtDMTE4OzExMDkgMTE2NCAxMUJGO0MxMTg7MTEwOSAxMTY0IDExQkY7ICMgKOyEmDsg7ISYOyDhhInhhaThhr87IOyEmDsg4YSJ4YWk4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTWUFFSworQzExOTtDMTE5OzExMDkgMTE2NCAxMUMwO0MxMTk7MTEwOSAxMTY0IDExQzA7ICMgKOyEmTsg7ISZOyDhhInhhaThh4A7IOyEmTsg4YSJ4YWk4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTWUFFVAorQzExQTtDMTFBOzExMDkgMTE2NCAxMUMxO0MxMUE7MTEwOSAxMTY0IDExQzE7ICMgKOyEmjsg7ISaOyDhhInhhaThh4E7IOyEmjsg4YSJ4YWk4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBTWUFFUAorQzExQjtDMTFCOzExMDkgMTE2NCAxMUMyO0MxMUI7MTEwOSAxMTY0IDExQzI7ICMgKOyEmzsg7ISbOyDhhInhhaThh4I7IOyEmzsg4YSJ4YWk4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTWUFFSAorQzExQztDMTFDOzExMDkgMTE2NTtDMTFDOzExMDkgMTE2NTsgIyAo7IScOyDshJw7IOGEieGFpTsg7IScOyDhhInhhaU7ICkgSEFOR1VMIFNZTExBQkxFIFNFTworQzExRDtDMTFEOzExMDkgMTE2NSAxMUE4O0MxMUQ7MTEwOSAxMTY1IDExQTg7ICMgKOyEnTsg7ISdOyDhhInhhaXhhqg7IOyEnTsg4YSJ4YWl4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBTRU9HCitDMTFFO0MxMUU7MTEwOSAxMTY1IDExQTk7QzExRTsxMTA5IDExNjUgMTFBOTsgIyAo7ISeOyDshJ47IOGEieGFpeGGqTsg7ISeOyDhhInhhaXhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFNFT0dHCitDMTFGO0MxMUY7MTEwOSAxMTY1IDExQUE7QzExRjsxMTA5IDExNjUgMTFBQTsgIyAo7ISfOyDshJ87IOGEieGFpeGGqjsg7ISfOyDhhInhhaXhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNFT0dTCitDMTIwO0MxMjA7MTEwOSAxMTY1IDExQUI7QzEyMDsxMTA5IDExNjUgMTFBQjsgIyAo7ISgOyDshKA7IOGEieGFpeGGqzsg7ISgOyDhhInhhaXhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFNFT04KK0MxMjE7QzEyMTsxMTA5IDExNjUgMTFBQztDMTIxOzExMDkgMTE2NSAxMUFDOyAjICjshKE7IOyEoTsg4YSJ4YWl4YasOyDshKE7IOGEieGFpeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgU0VPTkoKK0MxMjI7QzEyMjsxMTA5IDExNjUgMTFBRDtDMTIyOzExMDkgMTE2NSAxMUFEOyAjICjshKI7IOyEojsg4YSJ4YWl4YatOyDshKI7IOGEieGFpeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU0VPTkgKK0MxMjM7QzEyMzsxMTA5IDExNjUgMTFBRTtDMTIzOzExMDkgMTE2NSAxMUFFOyAjICjshKM7IOyEozsg4YSJ4YWl4YauOyDshKM7IOGEieGFpeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgU0VPRAorQzEyNDtDMTI0OzExMDkgMTE2NSAxMUFGO0MxMjQ7MTEwOSAxMTY1IDExQUY7ICMgKOyEpDsg7ISkOyDhhInhhaXhhq87IOyEpDsg4YSJ4YWl4YavOyApIEhBTkdVTCBTWUxMQUJMRSBTRU9MCitDMTI1O0MxMjU7MTEwOSAxMTY1IDExQjA7QzEyNTsxMTA5IDExNjUgMTFCMDsgIyAo7ISlOyDshKU7IOGEieGFpeGGsDsg7ISlOyDhhInhhaXhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNFT0xHCitDMTI2O0MxMjY7MTEwOSAxMTY1IDExQjE7QzEyNjsxMTA5IDExNjUgMTFCMTsgIyAo7ISmOyDshKY7IOGEieGFpeGGsTsg7ISmOyDhhInhhaXhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFNFT0xNCitDMTI3O0MxMjc7MTEwOSAxMTY1IDExQjI7QzEyNzsxMTA5IDExNjUgMTFCMjsgIyAo7ISnOyDshKc7IOGEieGFpeGGsjsg7ISnOyDhhInhhaXhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFNFT0xCCitDMTI4O0MxMjg7MTEwOSAxMTY1IDExQjM7QzEyODsxMTA5IDExNjUgMTFCMzsgIyAo7ISoOyDshKg7IOGEieGFpeGGszsg7ISoOyDhhInhhaXhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNFT0xTCitDMTI5O0MxMjk7MTEwOSAxMTY1IDExQjQ7QzEyOTsxMTA5IDExNjUgMTFCNDsgIyAo7ISpOyDshKk7IOGEieGFpeGGtDsg7ISpOyDhhInhhaXhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFNFT0xUCitDMTJBO0MxMkE7MTEwOSAxMTY1IDExQjU7QzEyQTsxMTA5IDExNjUgMTFCNTsgIyAo7ISqOyDshKo7IOGEieGFpeGGtTsg7ISqOyDhhInhhaXhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFNFT0xQCitDMTJCO0MxMkI7MTEwOSAxMTY1IDExQjY7QzEyQjsxMTA5IDExNjUgMTFCNjsgIyAo7ISrOyDshKs7IOGEieGFpeGGtjsg7ISrOyDhhInhhaXhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNFT0xICitDMTJDO0MxMkM7MTEwOSAxMTY1IDExQjc7QzEyQzsxMTA5IDExNjUgMTFCNzsgIyAo7ISsOyDshKw7IOGEieGFpeGGtzsg7ISsOyDhhInhhaXhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFNFT00KK0MxMkQ7QzEyRDsxMTA5IDExNjUgMTFCODtDMTJEOzExMDkgMTE2NSAxMUI4OyAjICjshK07IOyErTsg4YSJ4YWl4Ya4OyDshK07IOGEieGFpeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgU0VPQgorQzEyRTtDMTJFOzExMDkgMTE2NSAxMUI5O0MxMkU7MTEwOSAxMTY1IDExQjk7ICMgKOyErjsg7ISuOyDhhInhhaXhhrk7IOyErjsg4YSJ4YWl4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTRU9CUworQzEyRjtDMTJGOzExMDkgMTE2NSAxMUJBO0MxMkY7MTEwOSAxMTY1IDExQkE7ICMgKOyErzsg7ISvOyDhhInhhaXhhro7IOyErzsg4YSJ4YWl4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBTRU9TCitDMTMwO0MxMzA7MTEwOSAxMTY1IDExQkI7QzEzMDsxMTA5IDExNjUgMTFCQjsgIyAo7ISwOyDshLA7IOGEieGFpeGGuzsg7ISwOyDhhInhhaXhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFNFT1NTCitDMTMxO0MxMzE7MTEwOSAxMTY1IDExQkM7QzEzMTsxMTA5IDExNjUgMTFCQzsgIyAo7ISxOyDshLE7IOGEieGFpeGGvDsg7ISxOyDhhInhhaXhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNFT05HCitDMTMyO0MxMzI7MTEwOSAxMTY1IDExQkQ7QzEzMjsxMTA5IDExNjUgMTFCRDsgIyAo7ISyOyDshLI7IOGEieGFpeGGvTsg7ISyOyDhhInhhaXhhr07ICkgSEFOR1VMIFNZTExBQkxFIFNFT0oKK0MxMzM7QzEzMzsxMTA5IDExNjUgMTFCRTtDMTMzOzExMDkgMTE2NSAxMUJFOyAjICjshLM7IOyEszsg4YSJ4YWl4Ya+OyDshLM7IOGEieGFpeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgU0VPQworQzEzNDtDMTM0OzExMDkgMTE2NSAxMUJGO0MxMzQ7MTEwOSAxMTY1IDExQkY7ICMgKOyEtDsg7IS0OyDhhInhhaXhhr87IOyEtDsg4YSJ4YWl4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTRU9LCitDMTM1O0MxMzU7MTEwOSAxMTY1IDExQzA7QzEzNTsxMTA5IDExNjUgMTFDMDsgIyAo7IS1OyDshLU7IOGEieGFpeGHgDsg7IS1OyDhhInhhaXhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFNFT1QKK0MxMzY7QzEzNjsxMTA5IDExNjUgMTFDMTtDMTM2OzExMDkgMTE2NSAxMUMxOyAjICjshLY7IOyEtjsg4YSJ4YWl4YeBOyDshLY7IOGEieGFpeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgU0VPUAorQzEzNztDMTM3OzExMDkgMTE2NSAxMUMyO0MxMzc7MTEwOSAxMTY1IDExQzI7ICMgKOyEtzsg7IS3OyDhhInhhaXhh4I7IOyEtzsg4YSJ4YWl4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTRU9ICitDMTM4O0MxMzg7MTEwOSAxMTY2O0MxMzg7MTEwOSAxMTY2OyAjICjshLg7IOyEuDsg4YSJ4YWmOyDshLg7IOGEieGFpjsgKSBIQU5HVUwgU1lMTEFCTEUgU0UKK0MxMzk7QzEzOTsxMTA5IDExNjYgMTFBODtDMTM5OzExMDkgMTE2NiAxMUE4OyAjICjshLk7IOyEuTsg4YSJ4YWm4YaoOyDshLk7IOGEieGFpuGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU0VHCitDMTNBO0MxM0E7MTEwOSAxMTY2IDExQTk7QzEzQTsxMTA5IDExNjYgMTFBOTsgIyAo7IS6OyDshLo7IOGEieGFpuGGqTsg7IS6OyDhhInhhabhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFNFR0cKK0MxM0I7QzEzQjsxMTA5IDExNjYgMTFBQTtDMTNCOzExMDkgMTE2NiAxMUFBOyAjICjshLs7IOyEuzsg4YSJ4YWm4YaqOyDshLs7IOGEieGFpuGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgU0VHUworQzEzQztDMTNDOzExMDkgMTE2NiAxMUFCO0MxM0M7MTEwOSAxMTY2IDExQUI7ICMgKOyEvDsg7IS8OyDhhInhhabhhqs7IOyEvDsg4YSJ4YWm4YarOyApIEhBTkdVTCBTWUxMQUJMRSBTRU4KK0MxM0Q7QzEzRDsxMTA5IDExNjYgMTFBQztDMTNEOzExMDkgMTE2NiAxMUFDOyAjICjshL07IOyEvTsg4YSJ4YWm4YasOyDshL07IOGEieGFpuGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgU0VOSgorQzEzRTtDMTNFOzExMDkgMTE2NiAxMUFEO0MxM0U7MTEwOSAxMTY2IDExQUQ7ICMgKOyEvjsg7IS+OyDhhInhhabhhq07IOyEvjsg4YSJ4YWm4YatOyApIEhBTkdVTCBTWUxMQUJMRSBTRU5ICitDMTNGO0MxM0Y7MTEwOSAxMTY2IDExQUU7QzEzRjsxMTA5IDExNjYgMTFBRTsgIyAo7IS/OyDshL87IOGEieGFpuGGrjsg7IS/OyDhhInhhabhhq47ICkgSEFOR1VMIFNZTExBQkxFIFNFRAorQzE0MDtDMTQwOzExMDkgMTE2NiAxMUFGO0MxNDA7MTEwOSAxMTY2IDExQUY7ICMgKOyFgDsg7IWAOyDhhInhhabhhq87IOyFgDsg4YSJ4YWm4YavOyApIEhBTkdVTCBTWUxMQUJMRSBTRUwKK0MxNDE7QzE0MTsxMTA5IDExNjYgMTFCMDtDMTQxOzExMDkgMTE2NiAxMUIwOyAjICjshYE7IOyFgTsg4YSJ4YWm4YawOyDshYE7IOGEieGFpuGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgU0VMRworQzE0MjtDMTQyOzExMDkgMTE2NiAxMUIxO0MxNDI7MTEwOSAxMTY2IDExQjE7ICMgKOyFgjsg7IWCOyDhhInhhabhhrE7IOyFgjsg4YSJ4YWm4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTRUxNCitDMTQzO0MxNDM7MTEwOSAxMTY2IDExQjI7QzE0MzsxMTA5IDExNjYgMTFCMjsgIyAo7IWDOyDshYM7IOGEieGFpuGGsjsg7IWDOyDhhInhhabhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFNFTEIKK0MxNDQ7QzE0NDsxMTA5IDExNjYgMTFCMztDMTQ0OzExMDkgMTE2NiAxMUIzOyAjICjshYQ7IOyFhDsg4YSJ4YWm4YazOyDshYQ7IOGEieGFpuGGszsgKSBIQU5HVUwgU1lMTEFCTEUgU0VMUworQzE0NTtDMTQ1OzExMDkgMTE2NiAxMUI0O0MxNDU7MTEwOSAxMTY2IDExQjQ7ICMgKOyFhTsg7IWFOyDhhInhhabhhrQ7IOyFhTsg4YSJ4YWm4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTRUxUCitDMTQ2O0MxNDY7MTEwOSAxMTY2IDExQjU7QzE0NjsxMTA5IDExNjYgMTFCNTsgIyAo7IWGOyDshYY7IOGEieGFpuGGtTsg7IWGOyDhhInhhabhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFNFTFAKK0MxNDc7QzE0NzsxMTA5IDExNjYgMTFCNjtDMTQ3OzExMDkgMTE2NiAxMUI2OyAjICjshYc7IOyFhzsg4YSJ4YWm4Ya2OyDshYc7IOGEieGFpuGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgU0VMSAorQzE0ODtDMTQ4OzExMDkgMTE2NiAxMUI3O0MxNDg7MTEwOSAxMTY2IDExQjc7ICMgKOyFiDsg7IWIOyDhhInhhabhhrc7IOyFiDsg4YSJ4YWm4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTRU0KK0MxNDk7QzE0OTsxMTA5IDExNjYgMTFCODtDMTQ5OzExMDkgMTE2NiAxMUI4OyAjICjshYk7IOyFiTsg4YSJ4YWm4Ya4OyDshYk7IOGEieGFpuGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgU0VCCitDMTRBO0MxNEE7MTEwOSAxMTY2IDExQjk7QzE0QTsxMTA5IDExNjYgMTFCOTsgIyAo7IWKOyDshYo7IOGEieGFpuGGuTsg7IWKOyDhhInhhabhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFNFQlMKK0MxNEI7QzE0QjsxMTA5IDExNjYgMTFCQTtDMTRCOzExMDkgMTE2NiAxMUJBOyAjICjshYs7IOyFizsg4YSJ4YWm4Ya6OyDshYs7IOGEieGFpuGGujsgKSBIQU5HVUwgU1lMTEFCTEUgU0VTCitDMTRDO0MxNEM7MTEwOSAxMTY2IDExQkI7QzE0QzsxMTA5IDExNjYgMTFCQjsgIyAo7IWMOyDshYw7IOGEieGFpuGGuzsg7IWMOyDhhInhhabhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFNFU1MKK0MxNEQ7QzE0RDsxMTA5IDExNjYgMTFCQztDMTREOzExMDkgMTE2NiAxMUJDOyAjICjshY07IOyFjTsg4YSJ4YWm4Ya8OyDshY07IOGEieGFpuGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgU0VORworQzE0RTtDMTRFOzExMDkgMTE2NiAxMUJEO0MxNEU7MTEwOSAxMTY2IDExQkQ7ICMgKOyFjjsg7IWOOyDhhInhhabhhr07IOyFjjsg4YSJ4YWm4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTRUoKK0MxNEY7QzE0RjsxMTA5IDExNjYgMTFCRTtDMTRGOzExMDkgMTE2NiAxMUJFOyAjICjshY87IOyFjzsg4YSJ4YWm4Ya+OyDshY87IOGEieGFpuGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgU0VDCitDMTUwO0MxNTA7MTEwOSAxMTY2IDExQkY7QzE1MDsxMTA5IDExNjYgMTFCRjsgIyAo7IWQOyDshZA7IOGEieGFpuGGvzsg7IWQOyDhhInhhabhhr87ICkgSEFOR1VMIFNZTExBQkxFIFNFSworQzE1MTtDMTUxOzExMDkgMTE2NiAxMUMwO0MxNTE7MTEwOSAxMTY2IDExQzA7ICMgKOyFkTsg7IWROyDhhInhhabhh4A7IOyFkTsg4YSJ4YWm4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTRVQKK0MxNTI7QzE1MjsxMTA5IDExNjYgMTFDMTtDMTUyOzExMDkgMTE2NiAxMUMxOyAjICjshZI7IOyFkjsg4YSJ4YWm4YeBOyDshZI7IOGEieGFpuGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgU0VQCitDMTUzO0MxNTM7MTEwOSAxMTY2IDExQzI7QzE1MzsxMTA5IDExNjYgMTFDMjsgIyAo7IWTOyDshZM7IOGEieGFpuGHgjsg7IWTOyDhhInhhabhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFNFSAorQzE1NDtDMTU0OzExMDkgMTE2NztDMTU0OzExMDkgMTE2NzsgIyAo7IWUOyDshZQ7IOGEieGFpzsg7IWUOyDhhInhhac7ICkgSEFOR1VMIFNZTExBQkxFIFNZRU8KK0MxNTU7QzE1NTsxMTA5IDExNjcgMTFBODtDMTU1OzExMDkgMTE2NyAxMUE4OyAjICjshZU7IOyFlTsg4YSJ4YWn4YaoOyDshZU7IOGEieGFp+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU1lFT0cKK0MxNTY7QzE1NjsxMTA5IDExNjcgMTFBOTtDMTU2OzExMDkgMTE2NyAxMUE5OyAjICjshZY7IOyFljsg4YSJ4YWn4YapOyDshZY7IOGEieGFp+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgU1lFT0dHCitDMTU3O0MxNTc7MTEwOSAxMTY3IDExQUE7QzE1NzsxMTA5IDExNjcgMTFBQTsgIyAo7IWXOyDshZc7IOGEieGFp+GGqjsg7IWXOyDhhInhhafhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNZRU9HUworQzE1ODtDMTU4OzExMDkgMTE2NyAxMUFCO0MxNTg7MTEwOSAxMTY3IDExQUI7ICMgKOyFmDsg7IWYOyDhhInhhafhhqs7IOyFmDsg4YSJ4YWn4YarOyApIEhBTkdVTCBTWUxMQUJMRSBTWUVPTgorQzE1OTtDMTU5OzExMDkgMTE2NyAxMUFDO0MxNTk7MTEwOSAxMTY3IDExQUM7ICMgKOyFmTsg7IWZOyDhhInhhafhhqw7IOyFmTsg4YSJ4YWn4YasOyApIEhBTkdVTCBTWUxMQUJMRSBTWUVPTkoKK0MxNUE7QzE1QTsxMTA5IDExNjcgMTFBRDtDMTVBOzExMDkgMTE2NyAxMUFEOyAjICjshZo7IOyFmjsg4YSJ4YWn4YatOyDshZo7IOGEieGFp+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1lFT05ICitDMTVCO0MxNUI7MTEwOSAxMTY3IDExQUU7QzE1QjsxMTA5IDExNjcgMTFBRTsgIyAo7IWbOyDshZs7IOGEieGFp+GGrjsg7IWbOyDhhInhhafhhq47ICkgSEFOR1VMIFNZTExBQkxFIFNZRU9ECitDMTVDO0MxNUM7MTEwOSAxMTY3IDExQUY7QzE1QzsxMTA5IDExNjcgMTFBRjsgIyAo7IWcOyDshZw7IOGEieGFp+GGrzsg7IWcOyDhhInhhafhhq87ICkgSEFOR1VMIFNZTExBQkxFIFNZRU9MCitDMTVEO0MxNUQ7MTEwOSAxMTY3IDExQjA7QzE1RDsxMTA5IDExNjcgMTFCMDsgIyAo7IWdOyDshZ07IOGEieGFp+GGsDsg7IWdOyDhhInhhafhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNZRU9MRworQzE1RTtDMTVFOzExMDkgMTE2NyAxMUIxO0MxNUU7MTEwOSAxMTY3IDExQjE7ICMgKOyFnjsg7IWeOyDhhInhhafhhrE7IOyFnjsg4YSJ4YWn4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTWUVPTE0KK0MxNUY7QzE1RjsxMTA5IDExNjcgMTFCMjtDMTVGOzExMDkgMTE2NyAxMUIyOyAjICjshZ87IOyFnzsg4YSJ4YWn4YayOyDshZ87IOGEieGFp+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgU1lFT0xCCitDMTYwO0MxNjA7MTEwOSAxMTY3IDExQjM7QzE2MDsxMTA5IDExNjcgMTFCMzsgIyAo7IWgOyDshaA7IOGEieGFp+GGszsg7IWgOyDhhInhhafhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNZRU9MUworQzE2MTtDMTYxOzExMDkgMTE2NyAxMUI0O0MxNjE7MTEwOSAxMTY3IDExQjQ7ICMgKOyFoTsg7IWhOyDhhInhhafhhrQ7IOyFoTsg4YSJ4YWn4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTWUVPTFQKK0MxNjI7QzE2MjsxMTA5IDExNjcgMTFCNTtDMTYyOzExMDkgMTE2NyAxMUI1OyAjICjshaI7IOyFojsg4YSJ4YWn4Ya1OyDshaI7IOGEieGFp+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgU1lFT0xQCitDMTYzO0MxNjM7MTEwOSAxMTY3IDExQjY7QzE2MzsxMTA5IDExNjcgMTFCNjsgIyAo7IWjOyDshaM7IOGEieGFp+GGtjsg7IWjOyDhhInhhafhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNZRU9MSAorQzE2NDtDMTY0OzExMDkgMTE2NyAxMUI3O0MxNjQ7MTEwOSAxMTY3IDExQjc7ICMgKOyFpDsg7IWkOyDhhInhhafhhrc7IOyFpDsg4YSJ4YWn4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTWUVPTQorQzE2NTtDMTY1OzExMDkgMTE2NyAxMUI4O0MxNjU7MTEwOSAxMTY3IDExQjg7ICMgKOyFpTsg7IWlOyDhhInhhafhhrg7IOyFpTsg4YSJ4YWn4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBTWUVPQgorQzE2NjtDMTY2OzExMDkgMTE2NyAxMUI5O0MxNjY7MTEwOSAxMTY3IDExQjk7ICMgKOyFpjsg7IWmOyDhhInhhafhhrk7IOyFpjsg4YSJ4YWn4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTWUVPQlMKK0MxNjc7QzE2NzsxMTA5IDExNjcgMTFCQTtDMTY3OzExMDkgMTE2NyAxMUJBOyAjICjshac7IOyFpzsg4YSJ4YWn4Ya6OyDshac7IOGEieGFp+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgU1lFT1MKK0MxNjg7QzE2ODsxMTA5IDExNjcgMTFCQjtDMTY4OzExMDkgMTE2NyAxMUJCOyAjICjshag7IOyFqDsg4YSJ4YWn4Ya7OyDshag7IOGEieGFp+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgU1lFT1NTCitDMTY5O0MxNjk7MTEwOSAxMTY3IDExQkM7QzE2OTsxMTA5IDExNjcgMTFCQzsgIyAo7IWpOyDshak7IOGEieGFp+GGvDsg7IWpOyDhhInhhafhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNZRU9ORworQzE2QTtDMTZBOzExMDkgMTE2NyAxMUJEO0MxNkE7MTEwOSAxMTY3IDExQkQ7ICMgKOyFqjsg7IWqOyDhhInhhafhhr07IOyFqjsg4YSJ4YWn4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTWUVPSgorQzE2QjtDMTZCOzExMDkgMTE2NyAxMUJFO0MxNkI7MTEwOSAxMTY3IDExQkU7ICMgKOyFqzsg7IWrOyDhhInhhafhhr47IOyFqzsg4YSJ4YWn4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBTWUVPQworQzE2QztDMTZDOzExMDkgMTE2NyAxMUJGO0MxNkM7MTEwOSAxMTY3IDExQkY7ICMgKOyFrDsg7IWsOyDhhInhhafhhr87IOyFrDsg4YSJ4YWn4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTWUVPSworQzE2RDtDMTZEOzExMDkgMTE2NyAxMUMwO0MxNkQ7MTEwOSAxMTY3IDExQzA7ICMgKOyFrTsg7IWtOyDhhInhhafhh4A7IOyFrTsg4YSJ4YWn4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTWUVPVAorQzE2RTtDMTZFOzExMDkgMTE2NyAxMUMxO0MxNkU7MTEwOSAxMTY3IDExQzE7ICMgKOyFrjsg7IWuOyDhhInhhafhh4E7IOyFrjsg4YSJ4YWn4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBTWUVPUAorQzE2RjtDMTZGOzExMDkgMTE2NyAxMUMyO0MxNkY7MTEwOSAxMTY3IDExQzI7ICMgKOyFrzsg7IWvOyDhhInhhafhh4I7IOyFrzsg4YSJ4YWn4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTWUVPSAorQzE3MDtDMTcwOzExMDkgMTE2ODtDMTcwOzExMDkgMTE2ODsgIyAo7IWwOyDshbA7IOGEieGFqDsg7IWwOyDhhInhhag7ICkgSEFOR1VMIFNZTExBQkxFIFNZRQorQzE3MTtDMTcxOzExMDkgMTE2OCAxMUE4O0MxNzE7MTEwOSAxMTY4IDExQTg7ICMgKOyFsTsg7IWxOyDhhInhhajhhqg7IOyFsTsg4YSJ4YWo4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBTWUVHCitDMTcyO0MxNzI7MTEwOSAxMTY4IDExQTk7QzE3MjsxMTA5IDExNjggMTFBOTsgIyAo7IWyOyDshbI7IOGEieGFqOGGqTsg7IWyOyDhhInhhajhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFNZRUdHCitDMTczO0MxNzM7MTEwOSAxMTY4IDExQUE7QzE3MzsxMTA5IDExNjggMTFBQTsgIyAo7IWzOyDshbM7IOGEieGFqOGGqjsg7IWzOyDhhInhhajhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNZRUdTCitDMTc0O0MxNzQ7MTEwOSAxMTY4IDExQUI7QzE3NDsxMTA5IDExNjggMTFBQjsgIyAo7IW0OyDshbQ7IOGEieGFqOGGqzsg7IW0OyDhhInhhajhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFNZRU4KK0MxNzU7QzE3NTsxMTA5IDExNjggMTFBQztDMTc1OzExMDkgMTE2OCAxMUFDOyAjICjshbU7IOyFtTsg4YSJ4YWo4YasOyDshbU7IOGEieGFqOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgU1lFTkoKK0MxNzY7QzE3NjsxMTA5IDExNjggMTFBRDtDMTc2OzExMDkgMTE2OCAxMUFEOyAjICjshbY7IOyFtjsg4YSJ4YWo4YatOyDshbY7IOGEieGFqOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1lFTkgKK0MxNzc7QzE3NzsxMTA5IDExNjggMTFBRTtDMTc3OzExMDkgMTE2OCAxMUFFOyAjICjshbc7IOyFtzsg4YSJ4YWo4YauOyDshbc7IOGEieGFqOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgU1lFRAorQzE3ODtDMTc4OzExMDkgMTE2OCAxMUFGO0MxNzg7MTEwOSAxMTY4IDExQUY7ICMgKOyFuDsg7IW4OyDhhInhhajhhq87IOyFuDsg4YSJ4YWo4YavOyApIEhBTkdVTCBTWUxMQUJMRSBTWUVMCitDMTc5O0MxNzk7MTEwOSAxMTY4IDExQjA7QzE3OTsxMTA5IDExNjggMTFCMDsgIyAo7IW5OyDshbk7IOGEieGFqOGGsDsg7IW5OyDhhInhhajhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNZRUxHCitDMTdBO0MxN0E7MTEwOSAxMTY4IDExQjE7QzE3QTsxMTA5IDExNjggMTFCMTsgIyAo7IW6OyDshbo7IOGEieGFqOGGsTsg7IW6OyDhhInhhajhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFNZRUxNCitDMTdCO0MxN0I7MTEwOSAxMTY4IDExQjI7QzE3QjsxMTA5IDExNjggMTFCMjsgIyAo7IW7OyDshbs7IOGEieGFqOGGsjsg7IW7OyDhhInhhajhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFNZRUxCCitDMTdDO0MxN0M7MTEwOSAxMTY4IDExQjM7QzE3QzsxMTA5IDExNjggMTFCMzsgIyAo7IW8OyDshbw7IOGEieGFqOGGszsg7IW8OyDhhInhhajhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNZRUxTCitDMTdEO0MxN0Q7MTEwOSAxMTY4IDExQjQ7QzE3RDsxMTA5IDExNjggMTFCNDsgIyAo7IW9OyDshb07IOGEieGFqOGGtDsg7IW9OyDhhInhhajhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFNZRUxUCitDMTdFO0MxN0U7MTEwOSAxMTY4IDExQjU7QzE3RTsxMTA5IDExNjggMTFCNTsgIyAo7IW+OyDshb47IOGEieGFqOGGtTsg7IW+OyDhhInhhajhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFNZRUxQCitDMTdGO0MxN0Y7MTEwOSAxMTY4IDExQjY7QzE3RjsxMTA5IDExNjggMTFCNjsgIyAo7IW/OyDshb87IOGEieGFqOGGtjsg7IW/OyDhhInhhajhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNZRUxICitDMTgwO0MxODA7MTEwOSAxMTY4IDExQjc7QzE4MDsxMTA5IDExNjggMTFCNzsgIyAo7IaAOyDshoA7IOGEieGFqOGGtzsg7IaAOyDhhInhhajhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFNZRU0KK0MxODE7QzE4MTsxMTA5IDExNjggMTFCODtDMTgxOzExMDkgMTE2OCAxMUI4OyAjICjshoE7IOyGgTsg4YSJ4YWo4Ya4OyDshoE7IOGEieGFqOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgU1lFQgorQzE4MjtDMTgyOzExMDkgMTE2OCAxMUI5O0MxODI7MTEwOSAxMTY4IDExQjk7ICMgKOyGgjsg7IaCOyDhhInhhajhhrk7IOyGgjsg4YSJ4YWo4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTWUVCUworQzE4MztDMTgzOzExMDkgMTE2OCAxMUJBO0MxODM7MTEwOSAxMTY4IDExQkE7ICMgKOyGgzsg7IaDOyDhhInhhajhhro7IOyGgzsg4YSJ4YWo4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBTWUVTCitDMTg0O0MxODQ7MTEwOSAxMTY4IDExQkI7QzE4NDsxMTA5IDExNjggMTFCQjsgIyAo7IaEOyDshoQ7IOGEieGFqOGGuzsg7IaEOyDhhInhhajhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFNZRVNTCitDMTg1O0MxODU7MTEwOSAxMTY4IDExQkM7QzE4NTsxMTA5IDExNjggMTFCQzsgIyAo7IaFOyDshoU7IOGEieGFqOGGvDsg7IaFOyDhhInhhajhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNZRU5HCitDMTg2O0MxODY7MTEwOSAxMTY4IDExQkQ7QzE4NjsxMTA5IDExNjggMTFCRDsgIyAo7IaGOyDshoY7IOGEieGFqOGGvTsg7IaGOyDhhInhhajhhr07ICkgSEFOR1VMIFNZTExBQkxFIFNZRUoKK0MxODc7QzE4NzsxMTA5IDExNjggMTFCRTtDMTg3OzExMDkgMTE2OCAxMUJFOyAjICjshoc7IOyGhzsg4YSJ4YWo4Ya+OyDshoc7IOGEieGFqOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgU1lFQworQzE4ODtDMTg4OzExMDkgMTE2OCAxMUJGO0MxODg7MTEwOSAxMTY4IDExQkY7ICMgKOyGiDsg7IaIOyDhhInhhajhhr87IOyGiDsg4YSJ4YWo4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTWUVLCitDMTg5O0MxODk7MTEwOSAxMTY4IDExQzA7QzE4OTsxMTA5IDExNjggMTFDMDsgIyAo7IaJOyDshok7IOGEieGFqOGHgDsg7IaJOyDhhInhhajhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFNZRVQKK0MxOEE7QzE4QTsxMTA5IDExNjggMTFDMTtDMThBOzExMDkgMTE2OCAxMUMxOyAjICjshoo7IOyGijsg4YSJ4YWo4YeBOyDshoo7IOGEieGFqOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgU1lFUAorQzE4QjtDMThCOzExMDkgMTE2OCAxMUMyO0MxOEI7MTEwOSAxMTY4IDExQzI7ICMgKOyGizsg7IaLOyDhhInhhajhh4I7IOyGizsg4YSJ4YWo4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTWUVICitDMThDO0MxOEM7MTEwOSAxMTY5O0MxOEM7MTEwOSAxMTY5OyAjICjshow7IOyGjDsg4YSJ4YWpOyDshow7IOGEieGFqTsgKSBIQU5HVUwgU1lMTEFCTEUgU08KK0MxOEQ7QzE4RDsxMTA5IDExNjkgMTFBODtDMThEOzExMDkgMTE2OSAxMUE4OyAjICjsho07IOyGjTsg4YSJ4YWp4YaoOyDsho07IOGEieGFqeGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU09HCitDMThFO0MxOEU7MTEwOSAxMTY5IDExQTk7QzE4RTsxMTA5IDExNjkgMTFBOTsgIyAo7IaOOyDsho47IOGEieGFqeGGqTsg7IaOOyDhhInhhanhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFNPR0cKK0MxOEY7QzE4RjsxMTA5IDExNjkgMTFBQTtDMThGOzExMDkgMTE2OSAxMUFBOyAjICjsho87IOyGjzsg4YSJ4YWp4YaqOyDsho87IOGEieGFqeGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgU09HUworQzE5MDtDMTkwOzExMDkgMTE2OSAxMUFCO0MxOTA7MTEwOSAxMTY5IDExQUI7ICMgKOyGkDsg7IaQOyDhhInhhanhhqs7IOyGkDsg4YSJ4YWp4YarOyApIEhBTkdVTCBTWUxMQUJMRSBTT04KK0MxOTE7QzE5MTsxMTA5IDExNjkgMTFBQztDMTkxOzExMDkgMTE2OSAxMUFDOyAjICjshpE7IOyGkTsg4YSJ4YWp4YasOyDshpE7IOGEieGFqeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgU09OSgorQzE5MjtDMTkyOzExMDkgMTE2OSAxMUFEO0MxOTI7MTEwOSAxMTY5IDExQUQ7ICMgKOyGkjsg7IaSOyDhhInhhanhhq07IOyGkjsg4YSJ4YWp4YatOyApIEhBTkdVTCBTWUxMQUJMRSBTT05ICitDMTkzO0MxOTM7MTEwOSAxMTY5IDExQUU7QzE5MzsxMTA5IDExNjkgMTFBRTsgIyAo7IaTOyDshpM7IOGEieGFqeGGrjsg7IaTOyDhhInhhanhhq47ICkgSEFOR1VMIFNZTExBQkxFIFNPRAorQzE5NDtDMTk0OzExMDkgMTE2OSAxMUFGO0MxOTQ7MTEwOSAxMTY5IDExQUY7ICMgKOyGlDsg7IaUOyDhhInhhanhhq87IOyGlDsg4YSJ4YWp4YavOyApIEhBTkdVTCBTWUxMQUJMRSBTT0wKK0MxOTU7QzE5NTsxMTA5IDExNjkgMTFCMDtDMTk1OzExMDkgMTE2OSAxMUIwOyAjICjshpU7IOyGlTsg4YSJ4YWp4YawOyDshpU7IOGEieGFqeGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgU09MRworQzE5NjtDMTk2OzExMDkgMTE2OSAxMUIxO0MxOTY7MTEwOSAxMTY5IDExQjE7ICMgKOyGljsg7IaWOyDhhInhhanhhrE7IOyGljsg4YSJ4YWp4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTT0xNCitDMTk3O0MxOTc7MTEwOSAxMTY5IDExQjI7QzE5NzsxMTA5IDExNjkgMTFCMjsgIyAo7IaXOyDshpc7IOGEieGFqeGGsjsg7IaXOyDhhInhhanhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFNPTEIKK0MxOTg7QzE5ODsxMTA5IDExNjkgMTFCMztDMTk4OzExMDkgMTE2OSAxMUIzOyAjICjshpg7IOyGmDsg4YSJ4YWp4YazOyDshpg7IOGEieGFqeGGszsgKSBIQU5HVUwgU1lMTEFCTEUgU09MUworQzE5OTtDMTk5OzExMDkgMTE2OSAxMUI0O0MxOTk7MTEwOSAxMTY5IDExQjQ7ICMgKOyGmTsg7IaZOyDhhInhhanhhrQ7IOyGmTsg4YSJ4YWp4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTT0xUCitDMTlBO0MxOUE7MTEwOSAxMTY5IDExQjU7QzE5QTsxMTA5IDExNjkgMTFCNTsgIyAo7IaaOyDshpo7IOGEieGFqeGGtTsg7IaaOyDhhInhhanhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFNPTFAKK0MxOUI7QzE5QjsxMTA5IDExNjkgMTFCNjtDMTlCOzExMDkgMTE2OSAxMUI2OyAjICjshps7IOyGmzsg4YSJ4YWp4Ya2OyDshps7IOGEieGFqeGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgU09MSAorQzE5QztDMTlDOzExMDkgMTE2OSAxMUI3O0MxOUM7MTEwOSAxMTY5IDExQjc7ICMgKOyGnDsg7IacOyDhhInhhanhhrc7IOyGnDsg4YSJ4YWp4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTT00KK0MxOUQ7QzE5RDsxMTA5IDExNjkgMTFCODtDMTlEOzExMDkgMTE2OSAxMUI4OyAjICjshp07IOyGnTsg4YSJ4YWp4Ya4OyDshp07IOGEieGFqeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgU09CCitDMTlFO0MxOUU7MTEwOSAxMTY5IDExQjk7QzE5RTsxMTA5IDExNjkgMTFCOTsgIyAo7IaeOyDshp47IOGEieGFqeGGuTsg7IaeOyDhhInhhanhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFNPQlMKK0MxOUY7QzE5RjsxMTA5IDExNjkgMTFCQTtDMTlGOzExMDkgMTE2OSAxMUJBOyAjICjshp87IOyGnzsg4YSJ4YWp4Ya6OyDshp87IOGEieGFqeGGujsgKSBIQU5HVUwgU1lMTEFCTEUgU09TCitDMUEwO0MxQTA7MTEwOSAxMTY5IDExQkI7QzFBMDsxMTA5IDExNjkgMTFCQjsgIyAo7IagOyDshqA7IOGEieGFqeGGuzsg7IagOyDhhInhhanhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFNPU1MKK0MxQTE7QzFBMTsxMTA5IDExNjkgMTFCQztDMUExOzExMDkgMTE2OSAxMUJDOyAjICjshqE7IOyGoTsg4YSJ4YWp4Ya8OyDshqE7IOGEieGFqeGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgU09ORworQzFBMjtDMUEyOzExMDkgMTE2OSAxMUJEO0MxQTI7MTEwOSAxMTY5IDExQkQ7ICMgKOyGojsg7IaiOyDhhInhhanhhr07IOyGojsg4YSJ4YWp4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTT0oKK0MxQTM7QzFBMzsxMTA5IDExNjkgMTFCRTtDMUEzOzExMDkgMTE2OSAxMUJFOyAjICjshqM7IOyGozsg4YSJ4YWp4Ya+OyDshqM7IOGEieGFqeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgU09DCitDMUE0O0MxQTQ7MTEwOSAxMTY5IDExQkY7QzFBNDsxMTA5IDExNjkgMTFCRjsgIyAo7IakOyDshqQ7IOGEieGFqeGGvzsg7IakOyDhhInhhanhhr87ICkgSEFOR1VMIFNZTExBQkxFIFNPSworQzFBNTtDMUE1OzExMDkgMTE2OSAxMUMwO0MxQTU7MTEwOSAxMTY5IDExQzA7ICMgKOyGpTsg7IalOyDhhInhhanhh4A7IOyGpTsg4YSJ4YWp4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTT1QKK0MxQTY7QzFBNjsxMTA5IDExNjkgMTFDMTtDMUE2OzExMDkgMTE2OSAxMUMxOyAjICjshqY7IOyGpjsg4YSJ4YWp4YeBOyDshqY7IOGEieGFqeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgU09QCitDMUE3O0MxQTc7MTEwOSAxMTY5IDExQzI7QzFBNzsxMTA5IDExNjkgMTFDMjsgIyAo7IanOyDshqc7IOGEieGFqeGHgjsg7IanOyDhhInhhanhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFNPSAorQzFBODtDMUE4OzExMDkgMTE2QTtDMUE4OzExMDkgMTE2QTsgIyAo7IaoOyDshqg7IOGEieGFqjsg7IaoOyDhhInhhao7ICkgSEFOR1VMIFNZTExBQkxFIFNXQQorQzFBOTtDMUE5OzExMDkgMTE2QSAxMUE4O0MxQTk7MTEwOSAxMTZBIDExQTg7ICMgKOyGqTsg7IapOyDhhInhharhhqg7IOyGqTsg4YSJ4YWq4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBTV0FHCitDMUFBO0MxQUE7MTEwOSAxMTZBIDExQTk7QzFBQTsxMTA5IDExNkEgMTFBOTsgIyAo7IaqOyDshqo7IOGEieGFquGGqTsg7IaqOyDhhInhharhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFNXQUdHCitDMUFCO0MxQUI7MTEwOSAxMTZBIDExQUE7QzFBQjsxMTA5IDExNkEgMTFBQTsgIyAo7IarOyDshqs7IOGEieGFquGGqjsg7IarOyDhhInhharhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNXQUdTCitDMUFDO0MxQUM7MTEwOSAxMTZBIDExQUI7QzFBQzsxMTA5IDExNkEgMTFBQjsgIyAo7IasOyDshqw7IOGEieGFquGGqzsg7IasOyDhhInhharhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFNXQU4KK0MxQUQ7QzFBRDsxMTA5IDExNkEgMTFBQztDMUFEOzExMDkgMTE2QSAxMUFDOyAjICjshq07IOyGrTsg4YSJ4YWq4YasOyDshq07IOGEieGFquGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgU1dBTkoKK0MxQUU7QzFBRTsxMTA5IDExNkEgMTFBRDtDMUFFOzExMDkgMTE2QSAxMUFEOyAjICjshq47IOyGrjsg4YSJ4YWq4YatOyDshq47IOGEieGFquGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1dBTkgKK0MxQUY7QzFBRjsxMTA5IDExNkEgMTFBRTtDMUFGOzExMDkgMTE2QSAxMUFFOyAjICjshq87IOyGrzsg4YSJ4YWq4YauOyDshq87IOGEieGFquGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgU1dBRAorQzFCMDtDMUIwOzExMDkgMTE2QSAxMUFGO0MxQjA7MTEwOSAxMTZBIDExQUY7ICMgKOyGsDsg7IawOyDhhInhharhhq87IOyGsDsg4YSJ4YWq4YavOyApIEhBTkdVTCBTWUxMQUJMRSBTV0FMCitDMUIxO0MxQjE7MTEwOSAxMTZBIDExQjA7QzFCMTsxMTA5IDExNkEgMTFCMDsgIyAo7IaxOyDshrE7IOGEieGFquGGsDsg7IaxOyDhhInhharhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNXQUxHCitDMUIyO0MxQjI7MTEwOSAxMTZBIDExQjE7QzFCMjsxMTA5IDExNkEgMTFCMTsgIyAo7IayOyDshrI7IOGEieGFquGGsTsg7IayOyDhhInhharhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFNXQUxNCitDMUIzO0MxQjM7MTEwOSAxMTZBIDExQjI7QzFCMzsxMTA5IDExNkEgMTFCMjsgIyAo7IazOyDshrM7IOGEieGFquGGsjsg7IazOyDhhInhharhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFNXQUxCCitDMUI0O0MxQjQ7MTEwOSAxMTZBIDExQjM7QzFCNDsxMTA5IDExNkEgMTFCMzsgIyAo7Ia0OyDshrQ7IOGEieGFquGGszsg7Ia0OyDhhInhharhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNXQUxTCitDMUI1O0MxQjU7MTEwOSAxMTZBIDExQjQ7QzFCNTsxMTA5IDExNkEgMTFCNDsgIyAo7Ia1OyDshrU7IOGEieGFquGGtDsg7Ia1OyDhhInhharhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFNXQUxUCitDMUI2O0MxQjY7MTEwOSAxMTZBIDExQjU7QzFCNjsxMTA5IDExNkEgMTFCNTsgIyAo7Ia2OyDshrY7IOGEieGFquGGtTsg7Ia2OyDhhInhharhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFNXQUxQCitDMUI3O0MxQjc7MTEwOSAxMTZBIDExQjY7QzFCNzsxMTA5IDExNkEgMTFCNjsgIyAo7Ia3OyDshrc7IOGEieGFquGGtjsg7Ia3OyDhhInhharhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNXQUxICitDMUI4O0MxQjg7MTEwOSAxMTZBIDExQjc7QzFCODsxMTA5IDExNkEgMTFCNzsgIyAo7Ia4OyDshrg7IOGEieGFquGGtzsg7Ia4OyDhhInhharhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFNXQU0KK0MxQjk7QzFCOTsxMTA5IDExNkEgMTFCODtDMUI5OzExMDkgMTE2QSAxMUI4OyAjICjshrk7IOyGuTsg4YSJ4YWq4Ya4OyDshrk7IOGEieGFquGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgU1dBQgorQzFCQTtDMUJBOzExMDkgMTE2QSAxMUI5O0MxQkE7MTEwOSAxMTZBIDExQjk7ICMgKOyGujsg7Ia6OyDhhInhharhhrk7IOyGujsg4YSJ4YWq4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTV0FCUworQzFCQjtDMUJCOzExMDkgMTE2QSAxMUJBO0MxQkI7MTEwOSAxMTZBIDExQkE7ICMgKOyGuzsg7Ia7OyDhhInhharhhro7IOyGuzsg4YSJ4YWq4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBTV0FTCitDMUJDO0MxQkM7MTEwOSAxMTZBIDExQkI7QzFCQzsxMTA5IDExNkEgMTFCQjsgIyAo7Ia8OyDshrw7IOGEieGFquGGuzsg7Ia8OyDhhInhharhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFNXQVNTCitDMUJEO0MxQkQ7MTEwOSAxMTZBIDExQkM7QzFCRDsxMTA5IDExNkEgMTFCQzsgIyAo7Ia9OyDshr07IOGEieGFquGGvDsg7Ia9OyDhhInhharhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNXQU5HCitDMUJFO0MxQkU7MTEwOSAxMTZBIDExQkQ7QzFCRTsxMTA5IDExNkEgMTFCRDsgIyAo7Ia+OyDshr47IOGEieGFquGGvTsg7Ia+OyDhhInhharhhr07ICkgSEFOR1VMIFNZTExBQkxFIFNXQUoKK0MxQkY7QzFCRjsxMTA5IDExNkEgMTFCRTtDMUJGOzExMDkgMTE2QSAxMUJFOyAjICjshr87IOyGvzsg4YSJ4YWq4Ya+OyDshr87IOGEieGFquGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgU1dBQworQzFDMDtDMUMwOzExMDkgMTE2QSAxMUJGO0MxQzA7MTEwOSAxMTZBIDExQkY7ICMgKOyHgDsg7IeAOyDhhInhharhhr87IOyHgDsg4YSJ4YWq4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTV0FLCitDMUMxO0MxQzE7MTEwOSAxMTZBIDExQzA7QzFDMTsxMTA5IDExNkEgMTFDMDsgIyAo7IeBOyDsh4E7IOGEieGFquGHgDsg7IeBOyDhhInhharhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFNXQVQKK0MxQzI7QzFDMjsxMTA5IDExNkEgMTFDMTtDMUMyOzExMDkgMTE2QSAxMUMxOyAjICjsh4I7IOyHgjsg4YSJ4YWq4YeBOyDsh4I7IOGEieGFquGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgU1dBUAorQzFDMztDMUMzOzExMDkgMTE2QSAxMUMyO0MxQzM7MTEwOSAxMTZBIDExQzI7ICMgKOyHgzsg7IeDOyDhhInhharhh4I7IOyHgzsg4YSJ4YWq4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTV0FICitDMUM0O0MxQzQ7MTEwOSAxMTZCO0MxQzQ7MTEwOSAxMTZCOyAjICjsh4Q7IOyHhDsg4YSJ4YWrOyDsh4Q7IOGEieGFqzsgKSBIQU5HVUwgU1lMTEFCTEUgU1dBRQorQzFDNTtDMUM1OzExMDkgMTE2QiAxMUE4O0MxQzU7MTEwOSAxMTZCIDExQTg7ICMgKOyHhTsg7IeFOyDhhInhhavhhqg7IOyHhTsg4YSJ4YWr4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBTV0FFRworQzFDNjtDMUM2OzExMDkgMTE2QiAxMUE5O0MxQzY7MTEwOSAxMTZCIDExQTk7ICMgKOyHhjsg7IeGOyDhhInhhavhhqk7IOyHhjsg4YSJ4YWr4YapOyApIEhBTkdVTCBTWUxMQUJMRSBTV0FFR0cKK0MxQzc7QzFDNzsxMTA5IDExNkIgMTFBQTtDMUM3OzExMDkgMTE2QiAxMUFBOyAjICjsh4c7IOyHhzsg4YSJ4YWr4YaqOyDsh4c7IOGEieGFq+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgU1dBRUdTCitDMUM4O0MxQzg7MTEwOSAxMTZCIDExQUI7QzFDODsxMTA5IDExNkIgMTFBQjsgIyAo7IeIOyDsh4g7IOGEieGFq+GGqzsg7IeIOyDhhInhhavhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFNXQUVOCitDMUM5O0MxQzk7MTEwOSAxMTZCIDExQUM7QzFDOTsxMTA5IDExNkIgMTFBQzsgIyAo7IeJOyDsh4k7IOGEieGFq+GGrDsg7IeJOyDhhInhhavhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFNXQUVOSgorQzFDQTtDMUNBOzExMDkgMTE2QiAxMUFEO0MxQ0E7MTEwOSAxMTZCIDExQUQ7ICMgKOyHijsg7IeKOyDhhInhhavhhq07IOyHijsg4YSJ4YWr4YatOyApIEhBTkdVTCBTWUxMQUJMRSBTV0FFTkgKK0MxQ0I7QzFDQjsxMTA5IDExNkIgMTFBRTtDMUNCOzExMDkgMTE2QiAxMUFFOyAjICjsh4s7IOyHizsg4YSJ4YWr4YauOyDsh4s7IOGEieGFq+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgU1dBRUQKK0MxQ0M7QzFDQzsxMTA5IDExNkIgMTFBRjtDMUNDOzExMDkgMTE2QiAxMUFGOyAjICjsh4w7IOyHjDsg4YSJ4YWr4YavOyDsh4w7IOGEieGFq+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgU1dBRUwKK0MxQ0Q7QzFDRDsxMTA5IDExNkIgMTFCMDtDMUNEOzExMDkgMTE2QiAxMUIwOyAjICjsh407IOyHjTsg4YSJ4YWr4YawOyDsh407IOGEieGFq+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgU1dBRUxHCitDMUNFO0MxQ0U7MTEwOSAxMTZCIDExQjE7QzFDRTsxMTA5IDExNkIgMTFCMTsgIyAo7IeOOyDsh447IOGEieGFq+GGsTsg7IeOOyDhhInhhavhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFNXQUVMTQorQzFDRjtDMUNGOzExMDkgMTE2QiAxMUIyO0MxQ0Y7MTEwOSAxMTZCIDExQjI7ICMgKOyHjzsg7IePOyDhhInhhavhhrI7IOyHjzsg4YSJ4YWr4YayOyApIEhBTkdVTCBTWUxMQUJMRSBTV0FFTEIKK0MxRDA7QzFEMDsxMTA5IDExNkIgMTFCMztDMUQwOzExMDkgMTE2QiAxMUIzOyAjICjsh5A7IOyHkDsg4YSJ4YWr4YazOyDsh5A7IOGEieGFq+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgU1dBRUxTCitDMUQxO0MxRDE7MTEwOSAxMTZCIDExQjQ7QzFEMTsxMTA5IDExNkIgMTFCNDsgIyAo7IeROyDsh5E7IOGEieGFq+GGtDsg7IeROyDhhInhhavhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFNXQUVMVAorQzFEMjtDMUQyOzExMDkgMTE2QiAxMUI1O0MxRDI7MTEwOSAxMTZCIDExQjU7ICMgKOyHkjsg7IeSOyDhhInhhavhhrU7IOyHkjsg4YSJ4YWr4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBTV0FFTFAKK0MxRDM7QzFEMzsxMTA5IDExNkIgMTFCNjtDMUQzOzExMDkgMTE2QiAxMUI2OyAjICjsh5M7IOyHkzsg4YSJ4YWr4Ya2OyDsh5M7IOGEieGFq+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgU1dBRUxICitDMUQ0O0MxRDQ7MTEwOSAxMTZCIDExQjc7QzFENDsxMTA5IDExNkIgMTFCNzsgIyAo7IeUOyDsh5Q7IOGEieGFq+GGtzsg7IeUOyDhhInhhavhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFNXQUVNCitDMUQ1O0MxRDU7MTEwOSAxMTZCIDExQjg7QzFENTsxMTA5IDExNkIgMTFCODsgIyAo7IeVOyDsh5U7IOGEieGFq+GGuDsg7IeVOyDhhInhhavhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFNXQUVCCitDMUQ2O0MxRDY7MTEwOSAxMTZCIDExQjk7QzFENjsxMTA5IDExNkIgMTFCOTsgIyAo7IeWOyDsh5Y7IOGEieGFq+GGuTsg7IeWOyDhhInhhavhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFNXQUVCUworQzFENztDMUQ3OzExMDkgMTE2QiAxMUJBO0MxRDc7MTEwOSAxMTZCIDExQkE7ICMgKOyHlzsg7IeXOyDhhInhhavhhro7IOyHlzsg4YSJ4YWr4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBTV0FFUworQzFEODtDMUQ4OzExMDkgMTE2QiAxMUJCO0MxRDg7MTEwOSAxMTZCIDExQkI7ICMgKOyHmDsg7IeYOyDhhInhhavhhrs7IOyHmDsg4YSJ4YWr4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBTV0FFU1MKK0MxRDk7QzFEOTsxMTA5IDExNkIgMTFCQztDMUQ5OzExMDkgMTE2QiAxMUJDOyAjICjsh5k7IOyHmTsg4YSJ4YWr4Ya8OyDsh5k7IOGEieGFq+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgU1dBRU5HCitDMURBO0MxREE7MTEwOSAxMTZCIDExQkQ7QzFEQTsxMTA5IDExNkIgMTFCRDsgIyAo7IeaOyDsh5o7IOGEieGFq+GGvTsg7IeaOyDhhInhhavhhr07ICkgSEFOR1VMIFNZTExBQkxFIFNXQUVKCitDMURCO0MxREI7MTEwOSAxMTZCIDExQkU7QzFEQjsxMTA5IDExNkIgMTFCRTsgIyAo7IebOyDsh5s7IOGEieGFq+GGvjsg7IebOyDhhInhhavhhr47ICkgSEFOR1VMIFNZTExBQkxFIFNXQUVDCitDMURDO0MxREM7MTEwOSAxMTZCIDExQkY7QzFEQzsxMTA5IDExNkIgMTFCRjsgIyAo7IecOyDsh5w7IOGEieGFq+GGvzsg7IecOyDhhInhhavhhr87ICkgSEFOR1VMIFNZTExBQkxFIFNXQUVLCitDMUREO0MxREQ7MTEwOSAxMTZCIDExQzA7QzFERDsxMTA5IDExNkIgMTFDMDsgIyAo7IedOyDsh507IOGEieGFq+GHgDsg7IedOyDhhInhhavhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFNXQUVUCitDMURFO0MxREU7MTEwOSAxMTZCIDExQzE7QzFERTsxMTA5IDExNkIgMTFDMTsgIyAo7IeeOyDsh547IOGEieGFq+GHgTsg7IeeOyDhhInhhavhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFNXQUVQCitDMURGO0MxREY7MTEwOSAxMTZCIDExQzI7QzFERjsxMTA5IDExNkIgMTFDMjsgIyAo7IefOyDsh587IOGEieGFq+GHgjsg7IefOyDhhInhhavhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFNXQUVICitDMUUwO0MxRTA7MTEwOSAxMTZDO0MxRTA7MTEwOSAxMTZDOyAjICjsh6A7IOyHoDsg4YSJ4YWsOyDsh6A7IOGEieGFrDsgKSBIQU5HVUwgU1lMTEFCTEUgU09FCitDMUUxO0MxRTE7MTEwOSAxMTZDIDExQTg7QzFFMTsxMTA5IDExNkMgMTFBODsgIyAo7IehOyDsh6E7IOGEieGFrOGGqDsg7IehOyDhhInhhazhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFNPRUcKK0MxRTI7QzFFMjsxMTA5IDExNkMgMTFBOTtDMUUyOzExMDkgMTE2QyAxMUE5OyAjICjsh6I7IOyHojsg4YSJ4YWs4YapOyDsh6I7IOGEieGFrOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgU09FR0cKK0MxRTM7QzFFMzsxMTA5IDExNkMgMTFBQTtDMUUzOzExMDkgMTE2QyAxMUFBOyAjICjsh6M7IOyHozsg4YSJ4YWs4YaqOyDsh6M7IOGEieGFrOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgU09FR1MKK0MxRTQ7QzFFNDsxMTA5IDExNkMgMTFBQjtDMUU0OzExMDkgMTE2QyAxMUFCOyAjICjsh6Q7IOyHpDsg4YSJ4YWs4YarOyDsh6Q7IOGEieGFrOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgU09FTgorQzFFNTtDMUU1OzExMDkgMTE2QyAxMUFDO0MxRTU7MTEwOSAxMTZDIDExQUM7ICMgKOyHpTsg7IelOyDhhInhhazhhqw7IOyHpTsg4YSJ4YWs4YasOyApIEhBTkdVTCBTWUxMQUJMRSBTT0VOSgorQzFFNjtDMUU2OzExMDkgMTE2QyAxMUFEO0MxRTY7MTEwOSAxMTZDIDExQUQ7ICMgKOyHpjsg7IemOyDhhInhhazhhq07IOyHpjsg4YSJ4YWs4YatOyApIEhBTkdVTCBTWUxMQUJMRSBTT0VOSAorQzFFNztDMUU3OzExMDkgMTE2QyAxMUFFO0MxRTc7MTEwOSAxMTZDIDExQUU7ICMgKOyHpzsg7IenOyDhhInhhazhhq47IOyHpzsg4YSJ4YWs4YauOyApIEhBTkdVTCBTWUxMQUJMRSBTT0VECitDMUU4O0MxRTg7MTEwOSAxMTZDIDExQUY7QzFFODsxMTA5IDExNkMgMTFBRjsgIyAo7IeoOyDsh6g7IOGEieGFrOGGrzsg7IeoOyDhhInhhazhhq87ICkgSEFOR1VMIFNZTExBQkxFIFNPRUwKK0MxRTk7QzFFOTsxMTA5IDExNkMgMTFCMDtDMUU5OzExMDkgMTE2QyAxMUIwOyAjICjsh6k7IOyHqTsg4YSJ4YWs4YawOyDsh6k7IOGEieGFrOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgU09FTEcKK0MxRUE7QzFFQTsxMTA5IDExNkMgMTFCMTtDMUVBOzExMDkgMTE2QyAxMUIxOyAjICjsh6o7IOyHqjsg4YSJ4YWs4YaxOyDsh6o7IOGEieGFrOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgU09FTE0KK0MxRUI7QzFFQjsxMTA5IDExNkMgMTFCMjtDMUVCOzExMDkgMTE2QyAxMUIyOyAjICjsh6s7IOyHqzsg4YSJ4YWs4YayOyDsh6s7IOGEieGFrOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgU09FTEIKK0MxRUM7QzFFQzsxMTA5IDExNkMgMTFCMztDMUVDOzExMDkgMTE2QyAxMUIzOyAjICjsh6w7IOyHrDsg4YSJ4YWs4YazOyDsh6w7IOGEieGFrOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgU09FTFMKK0MxRUQ7QzFFRDsxMTA5IDExNkMgMTFCNDtDMUVEOzExMDkgMTE2QyAxMUI0OyAjICjsh607IOyHrTsg4YSJ4YWs4Ya0OyDsh607IOGEieGFrOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgU09FTFQKK0MxRUU7QzFFRTsxMTA5IDExNkMgMTFCNTtDMUVFOzExMDkgMTE2QyAxMUI1OyAjICjsh647IOyHrjsg4YSJ4YWs4Ya1OyDsh647IOGEieGFrOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgU09FTFAKK0MxRUY7QzFFRjsxMTA5IDExNkMgMTFCNjtDMUVGOzExMDkgMTE2QyAxMUI2OyAjICjsh687IOyHrzsg4YSJ4YWs4Ya2OyDsh687IOGEieGFrOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgU09FTEgKK0MxRjA7QzFGMDsxMTA5IDExNkMgMTFCNztDMUYwOzExMDkgMTE2QyAxMUI3OyAjICjsh7A7IOyHsDsg4YSJ4YWs4Ya3OyDsh7A7IOGEieGFrOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgU09FTQorQzFGMTtDMUYxOzExMDkgMTE2QyAxMUI4O0MxRjE7MTEwOSAxMTZDIDExQjg7ICMgKOyHsTsg7IexOyDhhInhhazhhrg7IOyHsTsg4YSJ4YWs4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBTT0VCCitDMUYyO0MxRjI7MTEwOSAxMTZDIDExQjk7QzFGMjsxMTA5IDExNkMgMTFCOTsgIyAo7IeyOyDsh7I7IOGEieGFrOGGuTsg7IeyOyDhhInhhazhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFNPRUJTCitDMUYzO0MxRjM7MTEwOSAxMTZDIDExQkE7QzFGMzsxMTA5IDExNkMgMTFCQTsgIyAo7IezOyDsh7M7IOGEieGFrOGGujsg7IezOyDhhInhhazhhro7ICkgSEFOR1VMIFNZTExBQkxFIFNPRVMKK0MxRjQ7QzFGNDsxMTA5IDExNkMgMTFCQjtDMUY0OzExMDkgMTE2QyAxMUJCOyAjICjsh7Q7IOyHtDsg4YSJ4YWs4Ya7OyDsh7Q7IOGEieGFrOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgU09FU1MKK0MxRjU7QzFGNTsxMTA5IDExNkMgMTFCQztDMUY1OzExMDkgMTE2QyAxMUJDOyAjICjsh7U7IOyHtTsg4YSJ4YWs4Ya8OyDsh7U7IOGEieGFrOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgU09FTkcKK0MxRjY7QzFGNjsxMTA5IDExNkMgMTFCRDtDMUY2OzExMDkgMTE2QyAxMUJEOyAjICjsh7Y7IOyHtjsg4YSJ4YWs4Ya9OyDsh7Y7IOGEieGFrOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgU09FSgorQzFGNztDMUY3OzExMDkgMTE2QyAxMUJFO0MxRjc7MTEwOSAxMTZDIDExQkU7ICMgKOyHtzsg7Ie3OyDhhInhhazhhr47IOyHtzsg4YSJ4YWs4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBTT0VDCitDMUY4O0MxRjg7MTEwOSAxMTZDIDExQkY7QzFGODsxMTA5IDExNkMgMTFCRjsgIyAo7Ie4OyDsh7g7IOGEieGFrOGGvzsg7Ie4OyDhhInhhazhhr87ICkgSEFOR1VMIFNZTExBQkxFIFNPRUsKK0MxRjk7QzFGOTsxMTA5IDExNkMgMTFDMDtDMUY5OzExMDkgMTE2QyAxMUMwOyAjICjsh7k7IOyHuTsg4YSJ4YWs4YeAOyDsh7k7IOGEieGFrOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgU09FVAorQzFGQTtDMUZBOzExMDkgMTE2QyAxMUMxO0MxRkE7MTEwOSAxMTZDIDExQzE7ICMgKOyHujsg7Ie6OyDhhInhhazhh4E7IOyHujsg4YSJ4YWs4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBTT0VQCitDMUZCO0MxRkI7MTEwOSAxMTZDIDExQzI7QzFGQjsxMTA5IDExNkMgMTFDMjsgIyAo7Ie7OyDsh7s7IOGEieGFrOGHgjsg7Ie7OyDhhInhhazhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFNPRUgKK0MxRkM7QzFGQzsxMTA5IDExNkQ7QzFGQzsxMTA5IDExNkQ7ICMgKOyHvDsg7Ie8OyDhhInhha07IOyHvDsg4YSJ4YWtOyApIEhBTkdVTCBTWUxMQUJMRSBTWU8KK0MxRkQ7QzFGRDsxMTA5IDExNkQgMTFBODtDMUZEOzExMDkgMTE2RCAxMUE4OyAjICjsh707IOyHvTsg4YSJ4YWt4YaoOyDsh707IOGEieGFreGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU1lPRworQzFGRTtDMUZFOzExMDkgMTE2RCAxMUE5O0MxRkU7MTEwOSAxMTZEIDExQTk7ICMgKOyHvjsg7Ie+OyDhhInhha3hhqk7IOyHvjsg4YSJ4YWt4YapOyApIEhBTkdVTCBTWUxMQUJMRSBTWU9HRworQzFGRjtDMUZGOzExMDkgMTE2RCAxMUFBO0MxRkY7MTEwOSAxMTZEIDExQUE7ICMgKOyHvzsg7Ie/OyDhhInhha3hhqo7IOyHvzsg4YSJ4YWt4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBTWU9HUworQzIwMDtDMjAwOzExMDkgMTE2RCAxMUFCO0MyMDA7MTEwOSAxMTZEIDExQUI7ICMgKOyIgDsg7IiAOyDhhInhha3hhqs7IOyIgDsg4YSJ4YWt4YarOyApIEhBTkdVTCBTWUxMQUJMRSBTWU9OCitDMjAxO0MyMDE7MTEwOSAxMTZEIDExQUM7QzIwMTsxMTA5IDExNkQgMTFBQzsgIyAo7IiBOyDsiIE7IOGEieGFreGGrDsg7IiBOyDhhInhha3hhqw7ICkgSEFOR1VMIFNZTExBQkxFIFNZT05KCitDMjAyO0MyMDI7MTEwOSAxMTZEIDExQUQ7QzIwMjsxMTA5IDExNkQgMTFBRDsgIyAo7IiCOyDsiII7IOGEieGFreGGrTsg7IiCOyDhhInhha3hhq07ICkgSEFOR1VMIFNZTExBQkxFIFNZT05ICitDMjAzO0MyMDM7MTEwOSAxMTZEIDExQUU7QzIwMzsxMTA5IDExNkQgMTFBRTsgIyAo7IiDOyDsiIM7IOGEieGFreGGrjsg7IiDOyDhhInhha3hhq47ICkgSEFOR1VMIFNZTExBQkxFIFNZT0QKK0MyMDQ7QzIwNDsxMTA5IDExNkQgMTFBRjtDMjA0OzExMDkgMTE2RCAxMUFGOyAjICjsiIQ7IOyIhDsg4YSJ4YWt4YavOyDsiIQ7IOGEieGFreGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgU1lPTAorQzIwNTtDMjA1OzExMDkgMTE2RCAxMUIwO0MyMDU7MTEwOSAxMTZEIDExQjA7ICMgKOyIhTsg7IiFOyDhhInhha3hhrA7IOyIhTsg4YSJ4YWt4YawOyApIEhBTkdVTCBTWUxMQUJMRSBTWU9MRworQzIwNjtDMjA2OzExMDkgMTE2RCAxMUIxO0MyMDY7MTEwOSAxMTZEIDExQjE7ICMgKOyIhjsg7IiGOyDhhInhha3hhrE7IOyIhjsg4YSJ4YWt4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTWU9MTQorQzIwNztDMjA3OzExMDkgMTE2RCAxMUIyO0MyMDc7MTEwOSAxMTZEIDExQjI7ICMgKOyIhzsg7IiHOyDhhInhha3hhrI7IOyIhzsg4YSJ4YWt4YayOyApIEhBTkdVTCBTWUxMQUJMRSBTWU9MQgorQzIwODtDMjA4OzExMDkgMTE2RCAxMUIzO0MyMDg7MTEwOSAxMTZEIDExQjM7ICMgKOyIiDsg7IiIOyDhhInhha3hhrM7IOyIiDsg4YSJ4YWt4YazOyApIEhBTkdVTCBTWUxMQUJMRSBTWU9MUworQzIwOTtDMjA5OzExMDkgMTE2RCAxMUI0O0MyMDk7MTEwOSAxMTZEIDExQjQ7ICMgKOyIiTsg7IiJOyDhhInhha3hhrQ7IOyIiTsg4YSJ4YWt4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTWU9MVAorQzIwQTtDMjBBOzExMDkgMTE2RCAxMUI1O0MyMEE7MTEwOSAxMTZEIDExQjU7ICMgKOyIijsg7IiKOyDhhInhha3hhrU7IOyIijsg4YSJ4YWt4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBTWU9MUAorQzIwQjtDMjBCOzExMDkgMTE2RCAxMUI2O0MyMEI7MTEwOSAxMTZEIDExQjY7ICMgKOyIizsg7IiLOyDhhInhha3hhrY7IOyIizsg4YSJ4YWt4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBTWU9MSAorQzIwQztDMjBDOzExMDkgMTE2RCAxMUI3O0MyMEM7MTEwOSAxMTZEIDExQjc7ICMgKOyIjDsg7IiMOyDhhInhha3hhrc7IOyIjDsg4YSJ4YWt4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTWU9NCitDMjBEO0MyMEQ7MTEwOSAxMTZEIDExQjg7QzIwRDsxMTA5IDExNkQgMTFCODsgIyAo7IiNOyDsiI07IOGEieGFreGGuDsg7IiNOyDhhInhha3hhrg7ICkgSEFOR1VMIFNZTExBQkxFIFNZT0IKK0MyMEU7QzIwRTsxMTA5IDExNkQgMTFCOTtDMjBFOzExMDkgMTE2RCAxMUI5OyAjICjsiI47IOyIjjsg4YSJ4YWt4Ya5OyDsiI47IOGEieGFreGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgU1lPQlMKK0MyMEY7QzIwRjsxMTA5IDExNkQgMTFCQTtDMjBGOzExMDkgMTE2RCAxMUJBOyAjICjsiI87IOyIjzsg4YSJ4YWt4Ya6OyDsiI87IOGEieGFreGGujsgKSBIQU5HVUwgU1lMTEFCTEUgU1lPUworQzIxMDtDMjEwOzExMDkgMTE2RCAxMUJCO0MyMTA7MTEwOSAxMTZEIDExQkI7ICMgKOyIkDsg7IiQOyDhhInhha3hhrs7IOyIkDsg4YSJ4YWt4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBTWU9TUworQzIxMTtDMjExOzExMDkgMTE2RCAxMUJDO0MyMTE7MTEwOSAxMTZEIDExQkM7ICMgKOyIkTsg7IiROyDhhInhha3hhrw7IOyIkTsg4YSJ4YWt4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBTWU9ORworQzIxMjtDMjEyOzExMDkgMTE2RCAxMUJEO0MyMTI7MTEwOSAxMTZEIDExQkQ7ICMgKOyIkjsg7IiSOyDhhInhha3hhr07IOyIkjsg4YSJ4YWt4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTWU9KCitDMjEzO0MyMTM7MTEwOSAxMTZEIDExQkU7QzIxMzsxMTA5IDExNkQgMTFCRTsgIyAo7IiTOyDsiJM7IOGEieGFreGGvjsg7IiTOyDhhInhha3hhr47ICkgSEFOR1VMIFNZTExBQkxFIFNZT0MKK0MyMTQ7QzIxNDsxMTA5IDExNkQgMTFCRjtDMjE0OzExMDkgMTE2RCAxMUJGOyAjICjsiJQ7IOyIlDsg4YSJ4YWt4Ya/OyDsiJQ7IOGEieGFreGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgU1lPSworQzIxNTtDMjE1OzExMDkgMTE2RCAxMUMwO0MyMTU7MTEwOSAxMTZEIDExQzA7ICMgKOyIlTsg7IiVOyDhhInhha3hh4A7IOyIlTsg4YSJ4YWt4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTWU9UCitDMjE2O0MyMTY7MTEwOSAxMTZEIDExQzE7QzIxNjsxMTA5IDExNkQgMTFDMTsgIyAo7IiWOyDsiJY7IOGEieGFreGHgTsg7IiWOyDhhInhha3hh4E7ICkgSEFOR1VMIFNZTExBQkxFIFNZT1AKK0MyMTc7QzIxNzsxMTA5IDExNkQgMTFDMjtDMjE3OzExMDkgMTE2RCAxMUMyOyAjICjsiJc7IOyIlzsg4YSJ4YWt4YeCOyDsiJc7IOGEieGFreGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgU1lPSAorQzIxODtDMjE4OzExMDkgMTE2RTtDMjE4OzExMDkgMTE2RTsgIyAo7IiYOyDsiJg7IOGEieGFrjsg7IiYOyDhhInhha47ICkgSEFOR1VMIFNZTExBQkxFIFNVCitDMjE5O0MyMTk7MTEwOSAxMTZFIDExQTg7QzIxOTsxMTA5IDExNkUgMTFBODsgIyAo7IiZOyDsiJk7IOGEieGFruGGqDsg7IiZOyDhhInhha7hhqg7ICkgSEFOR1VMIFNZTExBQkxFIFNVRworQzIxQTtDMjFBOzExMDkgMTE2RSAxMUE5O0MyMUE7MTEwOSAxMTZFIDExQTk7ICMgKOyImjsg7IiaOyDhhInhha7hhqk7IOyImjsg4YSJ4YWu4YapOyApIEhBTkdVTCBTWUxMQUJMRSBTVUdHCitDMjFCO0MyMUI7MTEwOSAxMTZFIDExQUE7QzIxQjsxMTA5IDExNkUgMTFBQTsgIyAo7IibOyDsiJs7IOGEieGFruGGqjsg7IibOyDhhInhha7hhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNVR1MKK0MyMUM7QzIxQzsxMTA5IDExNkUgMTFBQjtDMjFDOzExMDkgMTE2RSAxMUFCOyAjICjsiJw7IOyInDsg4YSJ4YWu4YarOyDsiJw7IOGEieGFruGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgU1VOCitDMjFEO0MyMUQ7MTEwOSAxMTZFIDExQUM7QzIxRDsxMTA5IDExNkUgMTFBQzsgIyAo7IidOyDsiJ07IOGEieGFruGGrDsg7IidOyDhhInhha7hhqw7ICkgSEFOR1VMIFNZTExBQkxFIFNVTkoKK0MyMUU7QzIxRTsxMTA5IDExNkUgMTFBRDtDMjFFOzExMDkgMTE2RSAxMUFEOyAjICjsiJ47IOyInjsg4YSJ4YWu4YatOyDsiJ47IOGEieGFruGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1VOSAorQzIxRjtDMjFGOzExMDkgMTE2RSAxMUFFO0MyMUY7MTEwOSAxMTZFIDExQUU7ICMgKOyInzsg7IifOyDhhInhha7hhq47IOyInzsg4YSJ4YWu4YauOyApIEhBTkdVTCBTWUxMQUJMRSBTVUQKK0MyMjA7QzIyMDsxMTA5IDExNkUgMTFBRjtDMjIwOzExMDkgMTE2RSAxMUFGOyAjICjsiKA7IOyIoDsg4YSJ4YWu4YavOyDsiKA7IOGEieGFruGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgU1VMCitDMjIxO0MyMjE7MTEwOSAxMTZFIDExQjA7QzIyMTsxMTA5IDExNkUgMTFCMDsgIyAo7IihOyDsiKE7IOGEieGFruGGsDsg7IihOyDhhInhha7hhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNVTEcKK0MyMjI7QzIyMjsxMTA5IDExNkUgMTFCMTtDMjIyOzExMDkgMTE2RSAxMUIxOyAjICjsiKI7IOyIojsg4YSJ4YWu4YaxOyDsiKI7IOGEieGFruGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgU1VMTQorQzIyMztDMjIzOzExMDkgMTE2RSAxMUIyO0MyMjM7MTEwOSAxMTZFIDExQjI7ICMgKOyIozsg7IijOyDhhInhha7hhrI7IOyIozsg4YSJ4YWu4YayOyApIEhBTkdVTCBTWUxMQUJMRSBTVUxCCitDMjI0O0MyMjQ7MTEwOSAxMTZFIDExQjM7QzIyNDsxMTA5IDExNkUgMTFCMzsgIyAo7IikOyDsiKQ7IOGEieGFruGGszsg7IikOyDhhInhha7hhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNVTFMKK0MyMjU7QzIyNTsxMTA5IDExNkUgMTFCNDtDMjI1OzExMDkgMTE2RSAxMUI0OyAjICjsiKU7IOyIpTsg4YSJ4YWu4Ya0OyDsiKU7IOGEieGFruGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgU1VMVAorQzIyNjtDMjI2OzExMDkgMTE2RSAxMUI1O0MyMjY7MTEwOSAxMTZFIDExQjU7ICMgKOyIpjsg7IimOyDhhInhha7hhrU7IOyIpjsg4YSJ4YWu4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBTVUxQCitDMjI3O0MyMjc7MTEwOSAxMTZFIDExQjY7QzIyNzsxMTA5IDExNkUgMTFCNjsgIyAo7IinOyDsiKc7IOGEieGFruGGtjsg7IinOyDhhInhha7hhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNVTEgKK0MyMjg7QzIyODsxMTA5IDExNkUgMTFCNztDMjI4OzExMDkgMTE2RSAxMUI3OyAjICjsiKg7IOyIqDsg4YSJ4YWu4Ya3OyDsiKg7IOGEieGFruGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgU1VNCitDMjI5O0MyMjk7MTEwOSAxMTZFIDExQjg7QzIyOTsxMTA5IDExNkUgMTFCODsgIyAo7IipOyDsiKk7IOGEieGFruGGuDsg7IipOyDhhInhha7hhrg7ICkgSEFOR1VMIFNZTExBQkxFIFNVQgorQzIyQTtDMjJBOzExMDkgMTE2RSAxMUI5O0MyMkE7MTEwOSAxMTZFIDExQjk7ICMgKOyIqjsg7IiqOyDhhInhha7hhrk7IOyIqjsg4YSJ4YWu4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTVUJTCitDMjJCO0MyMkI7MTEwOSAxMTZFIDExQkE7QzIyQjsxMTA5IDExNkUgMTFCQTsgIyAo7IirOyDsiKs7IOGEieGFruGGujsg7IirOyDhhInhha7hhro7ICkgSEFOR1VMIFNZTExBQkxFIFNVUworQzIyQztDMjJDOzExMDkgMTE2RSAxMUJCO0MyMkM7MTEwOSAxMTZFIDExQkI7ICMgKOyIrDsg7IisOyDhhInhha7hhrs7IOyIrDsg4YSJ4YWu4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBTVVNTCitDMjJEO0MyMkQ7MTEwOSAxMTZFIDExQkM7QzIyRDsxMTA5IDExNkUgMTFCQzsgIyAo7IitOyDsiK07IOGEieGFruGGvDsg7IitOyDhhInhha7hhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNVTkcKK0MyMkU7QzIyRTsxMTA5IDExNkUgMTFCRDtDMjJFOzExMDkgMTE2RSAxMUJEOyAjICjsiK47IOyIrjsg4YSJ4YWu4Ya9OyDsiK47IOGEieGFruGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgU1VKCitDMjJGO0MyMkY7MTEwOSAxMTZFIDExQkU7QzIyRjsxMTA5IDExNkUgMTFCRTsgIyAo7IivOyDsiK87IOGEieGFruGGvjsg7IivOyDhhInhha7hhr47ICkgSEFOR1VMIFNZTExBQkxFIFNVQworQzIzMDtDMjMwOzExMDkgMTE2RSAxMUJGO0MyMzA7MTEwOSAxMTZFIDExQkY7ICMgKOyIsDsg7IiwOyDhhInhha7hhr87IOyIsDsg4YSJ4YWu4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTVUsKK0MyMzE7QzIzMTsxMTA5IDExNkUgMTFDMDtDMjMxOzExMDkgMTE2RSAxMUMwOyAjICjsiLE7IOyIsTsg4YSJ4YWu4YeAOyDsiLE7IOGEieGFruGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgU1VUCitDMjMyO0MyMzI7MTEwOSAxMTZFIDExQzE7QzIzMjsxMTA5IDExNkUgMTFDMTsgIyAo7IiyOyDsiLI7IOGEieGFruGHgTsg7IiyOyDhhInhha7hh4E7ICkgSEFOR1VMIFNZTExBQkxFIFNVUAorQzIzMztDMjMzOzExMDkgMTE2RSAxMUMyO0MyMzM7MTEwOSAxMTZFIDExQzI7ICMgKOyIszsg7IizOyDhhInhha7hh4I7IOyIszsg4YSJ4YWu4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTVUgKK0MyMzQ7QzIzNDsxMTA5IDExNkY7QzIzNDsxMTA5IDExNkY7ICMgKOyItDsg7Ii0OyDhhInhha87IOyItDsg4YSJ4YWvOyApIEhBTkdVTCBTWUxMQUJMRSBTV0VPCitDMjM1O0MyMzU7MTEwOSAxMTZGIDExQTg7QzIzNTsxMTA5IDExNkYgMTFBODsgIyAo7Ii1OyDsiLU7IOGEieGFr+GGqDsg7Ii1OyDhhInhha/hhqg7ICkgSEFOR1VMIFNZTExBQkxFIFNXRU9HCitDMjM2O0MyMzY7MTEwOSAxMTZGIDExQTk7QzIzNjsxMTA5IDExNkYgMTFBOTsgIyAo7Ii2OyDsiLY7IOGEieGFr+GGqTsg7Ii2OyDhhInhha/hhqk7ICkgSEFOR1VMIFNZTExBQkxFIFNXRU9HRworQzIzNztDMjM3OzExMDkgMTE2RiAxMUFBO0MyMzc7MTEwOSAxMTZGIDExQUE7ICMgKOyItzsg7Ii3OyDhhInhha/hhqo7IOyItzsg4YSJ4YWv4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBTV0VPR1MKK0MyMzg7QzIzODsxMTA5IDExNkYgMTFBQjtDMjM4OzExMDkgMTE2RiAxMUFCOyAjICjsiLg7IOyIuDsg4YSJ4YWv4YarOyDsiLg7IOGEieGFr+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgU1dFT04KK0MyMzk7QzIzOTsxMTA5IDExNkYgMTFBQztDMjM5OzExMDkgMTE2RiAxMUFDOyAjICjsiLk7IOyIuTsg4YSJ4YWv4YasOyDsiLk7IOGEieGFr+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgU1dFT05KCitDMjNBO0MyM0E7MTEwOSAxMTZGIDExQUQ7QzIzQTsxMTA5IDExNkYgMTFBRDsgIyAo7Ii6OyDsiLo7IOGEieGFr+GGrTsg7Ii6OyDhhInhha/hhq07ICkgSEFOR1VMIFNZTExBQkxFIFNXRU9OSAorQzIzQjtDMjNCOzExMDkgMTE2RiAxMUFFO0MyM0I7MTEwOSAxMTZGIDExQUU7ICMgKOyIuzsg7Ii7OyDhhInhha/hhq47IOyIuzsg4YSJ4YWv4YauOyApIEhBTkdVTCBTWUxMQUJMRSBTV0VPRAorQzIzQztDMjNDOzExMDkgMTE2RiAxMUFGO0MyM0M7MTEwOSAxMTZGIDExQUY7ICMgKOyIvDsg7Ii8OyDhhInhha/hhq87IOyIvDsg4YSJ4YWv4YavOyApIEhBTkdVTCBTWUxMQUJMRSBTV0VPTAorQzIzRDtDMjNEOzExMDkgMTE2RiAxMUIwO0MyM0Q7MTEwOSAxMTZGIDExQjA7ICMgKOyIvTsg7Ii9OyDhhInhha/hhrA7IOyIvTsg4YSJ4YWv4YawOyApIEhBTkdVTCBTWUxMQUJMRSBTV0VPTEcKK0MyM0U7QzIzRTsxMTA5IDExNkYgMTFCMTtDMjNFOzExMDkgMTE2RiAxMUIxOyAjICjsiL47IOyIvjsg4YSJ4YWv4YaxOyDsiL47IOGEieGFr+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgU1dFT0xNCitDMjNGO0MyM0Y7MTEwOSAxMTZGIDExQjI7QzIzRjsxMTA5IDExNkYgMTFCMjsgIyAo7Ii/OyDsiL87IOGEieGFr+GGsjsg7Ii/OyDhhInhha/hhrI7ICkgSEFOR1VMIFNZTExBQkxFIFNXRU9MQgorQzI0MDtDMjQwOzExMDkgMTE2RiAxMUIzO0MyNDA7MTEwOSAxMTZGIDExQjM7ICMgKOyJgDsg7ImAOyDhhInhha/hhrM7IOyJgDsg4YSJ4YWv4YazOyApIEhBTkdVTCBTWUxMQUJMRSBTV0VPTFMKK0MyNDE7QzI0MTsxMTA5IDExNkYgMTFCNDtDMjQxOzExMDkgMTE2RiAxMUI0OyAjICjsiYE7IOyJgTsg4YSJ4YWv4Ya0OyDsiYE7IOGEieGFr+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgU1dFT0xUCitDMjQyO0MyNDI7MTEwOSAxMTZGIDExQjU7QzI0MjsxMTA5IDExNkYgMTFCNTsgIyAo7ImCOyDsiYI7IOGEieGFr+GGtTsg7ImCOyDhhInhha/hhrU7ICkgSEFOR1VMIFNZTExBQkxFIFNXRU9MUAorQzI0MztDMjQzOzExMDkgMTE2RiAxMUI2O0MyNDM7MTEwOSAxMTZGIDExQjY7ICMgKOyJgzsg7ImDOyDhhInhha/hhrY7IOyJgzsg4YSJ4YWv4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBTV0VPTEgKK0MyNDQ7QzI0NDsxMTA5IDExNkYgMTFCNztDMjQ0OzExMDkgMTE2RiAxMUI3OyAjICjsiYQ7IOyJhDsg4YSJ4YWv4Ya3OyDsiYQ7IOGEieGFr+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgU1dFT00KK0MyNDU7QzI0NTsxMTA5IDExNkYgMTFCODtDMjQ1OzExMDkgMTE2RiAxMUI4OyAjICjsiYU7IOyJhTsg4YSJ4YWv4Ya4OyDsiYU7IOGEieGFr+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgU1dFT0IKK0MyNDY7QzI0NjsxMTA5IDExNkYgMTFCOTtDMjQ2OzExMDkgMTE2RiAxMUI5OyAjICjsiYY7IOyJhjsg4YSJ4YWv4Ya5OyDsiYY7IOGEieGFr+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgU1dFT0JTCitDMjQ3O0MyNDc7MTEwOSAxMTZGIDExQkE7QzI0NzsxMTA5IDExNkYgMTFCQTsgIyAo7ImHOyDsiYc7IOGEieGFr+GGujsg7ImHOyDhhInhha/hhro7ICkgSEFOR1VMIFNZTExBQkxFIFNXRU9TCitDMjQ4O0MyNDg7MTEwOSAxMTZGIDExQkI7QzI0ODsxMTA5IDExNkYgMTFCQjsgIyAo7ImIOyDsiYg7IOGEieGFr+GGuzsg7ImIOyDhhInhha/hhrs7ICkgSEFOR1VMIFNZTExBQkxFIFNXRU9TUworQzI0OTtDMjQ5OzExMDkgMTE2RiAxMUJDO0MyNDk7MTEwOSAxMTZGIDExQkM7ICMgKOyJiTsg7ImJOyDhhInhha/hhrw7IOyJiTsg4YSJ4YWv4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBTV0VPTkcKK0MyNEE7QzI0QTsxMTA5IDExNkYgMTFCRDtDMjRBOzExMDkgMTE2RiAxMUJEOyAjICjsiYo7IOyJijsg4YSJ4YWv4Ya9OyDsiYo7IOGEieGFr+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgU1dFT0oKK0MyNEI7QzI0QjsxMTA5IDExNkYgMTFCRTtDMjRCOzExMDkgMTE2RiAxMUJFOyAjICjsiYs7IOyJizsg4YSJ4YWv4Ya+OyDsiYs7IOGEieGFr+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgU1dFT0MKK0MyNEM7QzI0QzsxMTA5IDExNkYgMTFCRjtDMjRDOzExMDkgMTE2RiAxMUJGOyAjICjsiYw7IOyJjDsg4YSJ4YWv4Ya/OyDsiYw7IOGEieGFr+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgU1dFT0sKK0MyNEQ7QzI0RDsxMTA5IDExNkYgMTFDMDtDMjREOzExMDkgMTE2RiAxMUMwOyAjICjsiY07IOyJjTsg4YSJ4YWv4YeAOyDsiY07IOGEieGFr+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgU1dFT1QKK0MyNEU7QzI0RTsxMTA5IDExNkYgMTFDMTtDMjRFOzExMDkgMTE2RiAxMUMxOyAjICjsiY47IOyJjjsg4YSJ4YWv4YeBOyDsiY47IOGEieGFr+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgU1dFT1AKK0MyNEY7QzI0RjsxMTA5IDExNkYgMTFDMjtDMjRGOzExMDkgMTE2RiAxMUMyOyAjICjsiY87IOyJjzsg4YSJ4YWv4YeCOyDsiY87IOGEieGFr+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgU1dFT0gKK0MyNTA7QzI1MDsxMTA5IDExNzA7QzI1MDsxMTA5IDExNzA7ICMgKOyJkDsg7ImQOyDhhInhhbA7IOyJkDsg4YSJ4YWwOyApIEhBTkdVTCBTWUxMQUJMRSBTV0UKK0MyNTE7QzI1MTsxMTA5IDExNzAgMTFBODtDMjUxOzExMDkgMTE3MCAxMUE4OyAjICjsiZE7IOyJkTsg4YSJ4YWw4YaoOyDsiZE7IOGEieGFsOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU1dFRworQzI1MjtDMjUyOzExMDkgMTE3MCAxMUE5O0MyNTI7MTEwOSAxMTcwIDExQTk7ICMgKOyJkjsg7ImSOyDhhInhhbDhhqk7IOyJkjsg4YSJ4YWw4YapOyApIEhBTkdVTCBTWUxMQUJMRSBTV0VHRworQzI1MztDMjUzOzExMDkgMTE3MCAxMUFBO0MyNTM7MTEwOSAxMTcwIDExQUE7ICMgKOyJkzsg7ImTOyDhhInhhbDhhqo7IOyJkzsg4YSJ4YWw4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBTV0VHUworQzI1NDtDMjU0OzExMDkgMTE3MCAxMUFCO0MyNTQ7MTEwOSAxMTcwIDExQUI7ICMgKOyJlDsg7ImUOyDhhInhhbDhhqs7IOyJlDsg4YSJ4YWw4YarOyApIEhBTkdVTCBTWUxMQUJMRSBTV0VOCitDMjU1O0MyNTU7MTEwOSAxMTcwIDExQUM7QzI1NTsxMTA5IDExNzAgMTFBQzsgIyAo7ImVOyDsiZU7IOGEieGFsOGGrDsg7ImVOyDhhInhhbDhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFNXRU5KCitDMjU2O0MyNTY7MTEwOSAxMTcwIDExQUQ7QzI1NjsxMTA5IDExNzAgMTFBRDsgIyAo7ImWOyDsiZY7IOGEieGFsOGGrTsg7ImWOyDhhInhhbDhhq07ICkgSEFOR1VMIFNZTExBQkxFIFNXRU5ICitDMjU3O0MyNTc7MTEwOSAxMTcwIDExQUU7QzI1NzsxMTA5IDExNzAgMTFBRTsgIyAo7ImXOyDsiZc7IOGEieGFsOGGrjsg7ImXOyDhhInhhbDhhq47ICkgSEFOR1VMIFNZTExBQkxFIFNXRUQKK0MyNTg7QzI1ODsxMTA5IDExNzAgMTFBRjtDMjU4OzExMDkgMTE3MCAxMUFGOyAjICjsiZg7IOyJmDsg4YSJ4YWw4YavOyDsiZg7IOGEieGFsOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgU1dFTAorQzI1OTtDMjU5OzExMDkgMTE3MCAxMUIwO0MyNTk7MTEwOSAxMTcwIDExQjA7ICMgKOyJmTsg7ImZOyDhhInhhbDhhrA7IOyJmTsg4YSJ4YWw4YawOyApIEhBTkdVTCBTWUxMQUJMRSBTV0VMRworQzI1QTtDMjVBOzExMDkgMTE3MCAxMUIxO0MyNUE7MTEwOSAxMTcwIDExQjE7ICMgKOyJmjsg7ImaOyDhhInhhbDhhrE7IOyJmjsg4YSJ4YWw4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTV0VMTQorQzI1QjtDMjVCOzExMDkgMTE3MCAxMUIyO0MyNUI7MTEwOSAxMTcwIDExQjI7ICMgKOyJmzsg7ImbOyDhhInhhbDhhrI7IOyJmzsg4YSJ4YWw4YayOyApIEhBTkdVTCBTWUxMQUJMRSBTV0VMQgorQzI1QztDMjVDOzExMDkgMTE3MCAxMUIzO0MyNUM7MTEwOSAxMTcwIDExQjM7ICMgKOyJnDsg7ImcOyDhhInhhbDhhrM7IOyJnDsg4YSJ4YWw4YazOyApIEhBTkdVTCBTWUxMQUJMRSBTV0VMUworQzI1RDtDMjVEOzExMDkgMTE3MCAxMUI0O0MyNUQ7MTEwOSAxMTcwIDExQjQ7ICMgKOyJnTsg7ImdOyDhhInhhbDhhrQ7IOyJnTsg4YSJ4YWw4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTV0VMVAorQzI1RTtDMjVFOzExMDkgMTE3MCAxMUI1O0MyNUU7MTEwOSAxMTcwIDExQjU7ICMgKOyJnjsg7ImeOyDhhInhhbDhhrU7IOyJnjsg4YSJ4YWw4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBTV0VMUAorQzI1RjtDMjVGOzExMDkgMTE3MCAxMUI2O0MyNUY7MTEwOSAxMTcwIDExQjY7ICMgKOyJnzsg7ImfOyDhhInhhbDhhrY7IOyJnzsg4YSJ4YWw4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBTV0VMSAorQzI2MDtDMjYwOzExMDkgMTE3MCAxMUI3O0MyNjA7MTEwOSAxMTcwIDExQjc7ICMgKOyJoDsg7ImgOyDhhInhhbDhhrc7IOyJoDsg4YSJ4YWw4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTV0VNCitDMjYxO0MyNjE7MTEwOSAxMTcwIDExQjg7QzI2MTsxMTA5IDExNzAgMTFCODsgIyAo7ImhOyDsiaE7IOGEieGFsOGGuDsg7ImhOyDhhInhhbDhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFNXRUIKK0MyNjI7QzI2MjsxMTA5IDExNzAgMTFCOTtDMjYyOzExMDkgMTE3MCAxMUI5OyAjICjsiaI7IOyJojsg4YSJ4YWw4Ya5OyDsiaI7IOGEieGFsOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgU1dFQlMKK0MyNjM7QzI2MzsxMTA5IDExNzAgMTFCQTtDMjYzOzExMDkgMTE3MCAxMUJBOyAjICjsiaM7IOyJozsg4YSJ4YWw4Ya6OyDsiaM7IOGEieGFsOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgU1dFUworQzI2NDtDMjY0OzExMDkgMTE3MCAxMUJCO0MyNjQ7MTEwOSAxMTcwIDExQkI7ICMgKOyJpDsg7ImkOyDhhInhhbDhhrs7IOyJpDsg4YSJ4YWw4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBTV0VTUworQzI2NTtDMjY1OzExMDkgMTE3MCAxMUJDO0MyNjU7MTEwOSAxMTcwIDExQkM7ICMgKOyJpTsg7ImlOyDhhInhhbDhhrw7IOyJpTsg4YSJ4YWw4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBTV0VORworQzI2NjtDMjY2OzExMDkgMTE3MCAxMUJEO0MyNjY7MTEwOSAxMTcwIDExQkQ7ICMgKOyJpjsg7ImmOyDhhInhhbDhhr07IOyJpjsg4YSJ4YWw4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTV0VKCitDMjY3O0MyNjc7MTEwOSAxMTcwIDExQkU7QzI2NzsxMTA5IDExNzAgMTFCRTsgIyAo7ImnOyDsiac7IOGEieGFsOGGvjsg7ImnOyDhhInhhbDhhr47ICkgSEFOR1VMIFNZTExBQkxFIFNXRUMKK0MyNjg7QzI2ODsxMTA5IDExNzAgMTFCRjtDMjY4OzExMDkgMTE3MCAxMUJGOyAjICjsiag7IOyJqDsg4YSJ4YWw4Ya/OyDsiag7IOGEieGFsOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgU1dFSworQzI2OTtDMjY5OzExMDkgMTE3MCAxMUMwO0MyNjk7MTEwOSAxMTcwIDExQzA7ICMgKOyJqTsg7ImpOyDhhInhhbDhh4A7IOyJqTsg4YSJ4YWw4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTV0VUCitDMjZBO0MyNkE7MTEwOSAxMTcwIDExQzE7QzI2QTsxMTA5IDExNzAgMTFDMTsgIyAo7ImqOyDsiao7IOGEieGFsOGHgTsg7ImqOyDhhInhhbDhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFNXRVAKK0MyNkI7QzI2QjsxMTA5IDExNzAgMTFDMjtDMjZCOzExMDkgMTE3MCAxMUMyOyAjICjsias7IOyJqzsg4YSJ4YWw4YeCOyDsias7IOGEieGFsOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgU1dFSAorQzI2QztDMjZDOzExMDkgMTE3MTtDMjZDOzExMDkgMTE3MTsgIyAo7ImsOyDsiaw7IOGEieGFsTsg7ImsOyDhhInhhbE7ICkgSEFOR1VMIFNZTExBQkxFIFNXSQorQzI2RDtDMjZEOzExMDkgMTE3MSAxMUE4O0MyNkQ7MTEwOSAxMTcxIDExQTg7ICMgKOyJrTsg7ImtOyDhhInhhbHhhqg7IOyJrTsg4YSJ4YWx4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBTV0lHCitDMjZFO0MyNkU7MTEwOSAxMTcxIDExQTk7QzI2RTsxMTA5IDExNzEgMTFBOTsgIyAo7ImuOyDsia47IOGEieGFseGGqTsg7ImuOyDhhInhhbHhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFNXSUdHCitDMjZGO0MyNkY7MTEwOSAxMTcxIDExQUE7QzI2RjsxMTA5IDExNzEgMTFBQTsgIyAo7ImvOyDsia87IOGEieGFseGGqjsg7ImvOyDhhInhhbHhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNXSUdTCitDMjcwO0MyNzA7MTEwOSAxMTcxIDExQUI7QzI3MDsxMTA5IDExNzEgMTFBQjsgIyAo7ImwOyDsibA7IOGEieGFseGGqzsg7ImwOyDhhInhhbHhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFNXSU4KK0MyNzE7QzI3MTsxMTA5IDExNzEgMTFBQztDMjcxOzExMDkgMTE3MSAxMUFDOyAjICjsibE7IOyJsTsg4YSJ4YWx4YasOyDsibE7IOGEieGFseGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgU1dJTkoKK0MyNzI7QzI3MjsxMTA5IDExNzEgMTFBRDtDMjcyOzExMDkgMTE3MSAxMUFEOyAjICjsibI7IOyJsjsg4YSJ4YWx4YatOyDsibI7IOGEieGFseGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1dJTkgKK0MyNzM7QzI3MzsxMTA5IDExNzEgMTFBRTtDMjczOzExMDkgMTE3MSAxMUFFOyAjICjsibM7IOyJszsg4YSJ4YWx4YauOyDsibM7IOGEieGFseGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgU1dJRAorQzI3NDtDMjc0OzExMDkgMTE3MSAxMUFGO0MyNzQ7MTEwOSAxMTcxIDExQUY7ICMgKOyJtDsg7Im0OyDhhInhhbHhhq87IOyJtDsg4YSJ4YWx4YavOyApIEhBTkdVTCBTWUxMQUJMRSBTV0lMCitDMjc1O0MyNzU7MTEwOSAxMTcxIDExQjA7QzI3NTsxMTA5IDExNzEgMTFCMDsgIyAo7Im1OyDsibU7IOGEieGFseGGsDsg7Im1OyDhhInhhbHhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNXSUxHCitDMjc2O0MyNzY7MTEwOSAxMTcxIDExQjE7QzI3NjsxMTA5IDExNzEgMTFCMTsgIyAo7Im2OyDsibY7IOGEieGFseGGsTsg7Im2OyDhhInhhbHhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFNXSUxNCitDMjc3O0MyNzc7MTEwOSAxMTcxIDExQjI7QzI3NzsxMTA5IDExNzEgMTFCMjsgIyAo7Im3OyDsibc7IOGEieGFseGGsjsg7Im3OyDhhInhhbHhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFNXSUxCCitDMjc4O0MyNzg7MTEwOSAxMTcxIDExQjM7QzI3ODsxMTA5IDExNzEgMTFCMzsgIyAo7Im4OyDsibg7IOGEieGFseGGszsg7Im4OyDhhInhhbHhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNXSUxTCitDMjc5O0MyNzk7MTEwOSAxMTcxIDExQjQ7QzI3OTsxMTA5IDExNzEgMTFCNDsgIyAo7Im5OyDsibk7IOGEieGFseGGtDsg7Im5OyDhhInhhbHhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFNXSUxUCitDMjdBO0MyN0E7MTEwOSAxMTcxIDExQjU7QzI3QTsxMTA5IDExNzEgMTFCNTsgIyAo7Im6OyDsibo7IOGEieGFseGGtTsg7Im6OyDhhInhhbHhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFNXSUxQCitDMjdCO0MyN0I7MTEwOSAxMTcxIDExQjY7QzI3QjsxMTA5IDExNzEgMTFCNjsgIyAo7Im7OyDsibs7IOGEieGFseGGtjsg7Im7OyDhhInhhbHhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNXSUxICitDMjdDO0MyN0M7MTEwOSAxMTcxIDExQjc7QzI3QzsxMTA5IDExNzEgMTFCNzsgIyAo7Im8OyDsibw7IOGEieGFseGGtzsg7Im8OyDhhInhhbHhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFNXSU0KK0MyN0Q7QzI3RDsxMTA5IDExNzEgMTFCODtDMjdEOzExMDkgMTE3MSAxMUI4OyAjICjsib07IOyJvTsg4YSJ4YWx4Ya4OyDsib07IOGEieGFseGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgU1dJQgorQzI3RTtDMjdFOzExMDkgMTE3MSAxMUI5O0MyN0U7MTEwOSAxMTcxIDExQjk7ICMgKOyJvjsg7Im+OyDhhInhhbHhhrk7IOyJvjsg4YSJ4YWx4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTV0lCUworQzI3RjtDMjdGOzExMDkgMTE3MSAxMUJBO0MyN0Y7MTEwOSAxMTcxIDExQkE7ICMgKOyJvzsg7Im/OyDhhInhhbHhhro7IOyJvzsg4YSJ4YWx4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBTV0lTCitDMjgwO0MyODA7MTEwOSAxMTcxIDExQkI7QzI4MDsxMTA5IDExNzEgMTFCQjsgIyAo7IqAOyDsioA7IOGEieGFseGGuzsg7IqAOyDhhInhhbHhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFNXSVNTCitDMjgxO0MyODE7MTEwOSAxMTcxIDExQkM7QzI4MTsxMTA5IDExNzEgMTFCQzsgIyAo7IqBOyDsioE7IOGEieGFseGGvDsg7IqBOyDhhInhhbHhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNXSU5HCitDMjgyO0MyODI7MTEwOSAxMTcxIDExQkQ7QzI4MjsxMTA5IDExNzEgMTFCRDsgIyAo7IqCOyDsioI7IOGEieGFseGGvTsg7IqCOyDhhInhhbHhhr07ICkgSEFOR1VMIFNZTExBQkxFIFNXSUoKK0MyODM7QzI4MzsxMTA5IDExNzEgMTFCRTtDMjgzOzExMDkgMTE3MSAxMUJFOyAjICjsioM7IOyKgzsg4YSJ4YWx4Ya+OyDsioM7IOGEieGFseGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgU1dJQworQzI4NDtDMjg0OzExMDkgMTE3MSAxMUJGO0MyODQ7MTEwOSAxMTcxIDExQkY7ICMgKOyKhDsg7IqEOyDhhInhhbHhhr87IOyKhDsg4YSJ4YWx4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTV0lLCitDMjg1O0MyODU7MTEwOSAxMTcxIDExQzA7QzI4NTsxMTA5IDExNzEgMTFDMDsgIyAo7IqFOyDsioU7IOGEieGFseGHgDsg7IqFOyDhhInhhbHhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFNXSVQKK0MyODY7QzI4NjsxMTA5IDExNzEgMTFDMTtDMjg2OzExMDkgMTE3MSAxMUMxOyAjICjsioY7IOyKhjsg4YSJ4YWx4YeBOyDsioY7IOGEieGFseGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgU1dJUAorQzI4NztDMjg3OzExMDkgMTE3MSAxMUMyO0MyODc7MTEwOSAxMTcxIDExQzI7ICMgKOyKhzsg7IqHOyDhhInhhbHhh4I7IOyKhzsg4YSJ4YWx4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTV0lICitDMjg4O0MyODg7MTEwOSAxMTcyO0MyODg7MTEwOSAxMTcyOyAjICjsiog7IOyKiDsg4YSJ4YWyOyDsiog7IOGEieGFsjsgKSBIQU5HVUwgU1lMTEFCTEUgU1lVCitDMjg5O0MyODk7MTEwOSAxMTcyIDExQTg7QzI4OTsxMTA5IDExNzIgMTFBODsgIyAo7IqJOyDsiok7IOGEieGFsuGGqDsg7IqJOyDhhInhhbLhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFNZVUcKK0MyOEE7QzI4QTsxMTA5IDExNzIgMTFBOTtDMjhBOzExMDkgMTE3MiAxMUE5OyAjICjsioo7IOyKijsg4YSJ4YWy4YapOyDsioo7IOGEieGFsuGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgU1lVR0cKK0MyOEI7QzI4QjsxMTA5IDExNzIgMTFBQTtDMjhCOzExMDkgMTE3MiAxMUFBOyAjICjsios7IOyKizsg4YSJ4YWy4YaqOyDsios7IOGEieGFsuGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgU1lVR1MKK0MyOEM7QzI4QzsxMTA5IDExNzIgMTFBQjtDMjhDOzExMDkgMTE3MiAxMUFCOyAjICjsiow7IOyKjDsg4YSJ4YWy4YarOyDsiow7IOGEieGFsuGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgU1lVTgorQzI4RDtDMjhEOzExMDkgMTE3MiAxMUFDO0MyOEQ7MTEwOSAxMTcyIDExQUM7ICMgKOyKjTsg7IqNOyDhhInhhbLhhqw7IOyKjTsg4YSJ4YWy4YasOyApIEhBTkdVTCBTWUxMQUJMRSBTWVVOSgorQzI4RTtDMjhFOzExMDkgMTE3MiAxMUFEO0MyOEU7MTEwOSAxMTcyIDExQUQ7ICMgKOyKjjsg7IqOOyDhhInhhbLhhq07IOyKjjsg4YSJ4YWy4YatOyApIEhBTkdVTCBTWUxMQUJMRSBTWVVOSAorQzI4RjtDMjhGOzExMDkgMTE3MiAxMUFFO0MyOEY7MTEwOSAxMTcyIDExQUU7ICMgKOyKjzsg7IqPOyDhhInhhbLhhq47IOyKjzsg4YSJ4YWy4YauOyApIEhBTkdVTCBTWUxMQUJMRSBTWVVECitDMjkwO0MyOTA7MTEwOSAxMTcyIDExQUY7QzI5MDsxMTA5IDExNzIgMTFBRjsgIyAo7IqQOyDsipA7IOGEieGFsuGGrzsg7IqQOyDhhInhhbLhhq87ICkgSEFOR1VMIFNZTExBQkxFIFNZVUwKK0MyOTE7QzI5MTsxMTA5IDExNzIgMTFCMDtDMjkxOzExMDkgMTE3MiAxMUIwOyAjICjsipE7IOyKkTsg4YSJ4YWy4YawOyDsipE7IOGEieGFsuGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgU1lVTEcKK0MyOTI7QzI5MjsxMTA5IDExNzIgMTFCMTtDMjkyOzExMDkgMTE3MiAxMUIxOyAjICjsipI7IOyKkjsg4YSJ4YWy4YaxOyDsipI7IOGEieGFsuGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgU1lVTE0KK0MyOTM7QzI5MzsxMTA5IDExNzIgMTFCMjtDMjkzOzExMDkgMTE3MiAxMUIyOyAjICjsipM7IOyKkzsg4YSJ4YWy4YayOyDsipM7IOGEieGFsuGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgU1lVTEIKK0MyOTQ7QzI5NDsxMTA5IDExNzIgMTFCMztDMjk0OzExMDkgMTE3MiAxMUIzOyAjICjsipQ7IOyKlDsg4YSJ4YWy4YazOyDsipQ7IOGEieGFsuGGszsgKSBIQU5HVUwgU1lMTEFCTEUgU1lVTFMKK0MyOTU7QzI5NTsxMTA5IDExNzIgMTFCNDtDMjk1OzExMDkgMTE3MiAxMUI0OyAjICjsipU7IOyKlTsg4YSJ4YWy4Ya0OyDsipU7IOGEieGFsuGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgU1lVTFQKK0MyOTY7QzI5NjsxMTA5IDExNzIgMTFCNTtDMjk2OzExMDkgMTE3MiAxMUI1OyAjICjsipY7IOyKljsg4YSJ4YWy4Ya1OyDsipY7IOGEieGFsuGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgU1lVTFAKK0MyOTc7QzI5NzsxMTA5IDExNzIgMTFCNjtDMjk3OzExMDkgMTE3MiAxMUI2OyAjICjsipc7IOyKlzsg4YSJ4YWy4Ya2OyDsipc7IOGEieGFsuGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgU1lVTEgKK0MyOTg7QzI5ODsxMTA5IDExNzIgMTFCNztDMjk4OzExMDkgMTE3MiAxMUI3OyAjICjsipg7IOyKmDsg4YSJ4YWy4Ya3OyDsipg7IOGEieGFsuGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgU1lVTQorQzI5OTtDMjk5OzExMDkgMTE3MiAxMUI4O0MyOTk7MTEwOSAxMTcyIDExQjg7ICMgKOyKmTsg7IqZOyDhhInhhbLhhrg7IOyKmTsg4YSJ4YWy4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBTWVVCCitDMjlBO0MyOUE7MTEwOSAxMTcyIDExQjk7QzI5QTsxMTA5IDExNzIgMTFCOTsgIyAo7IqaOyDsipo7IOGEieGFsuGGuTsg7IqaOyDhhInhhbLhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFNZVUJTCitDMjlCO0MyOUI7MTEwOSAxMTcyIDExQkE7QzI5QjsxMTA5IDExNzIgMTFCQTsgIyAo7IqbOyDsips7IOGEieGFsuGGujsg7IqbOyDhhInhhbLhhro7ICkgSEFOR1VMIFNZTExBQkxFIFNZVVMKK0MyOUM7QzI5QzsxMTA5IDExNzIgMTFCQjtDMjlDOzExMDkgMTE3MiAxMUJCOyAjICjsipw7IOyKnDsg4YSJ4YWy4Ya7OyDsipw7IOGEieGFsuGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgU1lVU1MKK0MyOUQ7QzI5RDsxMTA5IDExNzIgMTFCQztDMjlEOzExMDkgMTE3MiAxMUJDOyAjICjsip07IOyKnTsg4YSJ4YWy4Ya8OyDsip07IOGEieGFsuGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgU1lVTkcKK0MyOUU7QzI5RTsxMTA5IDExNzIgMTFCRDtDMjlFOzExMDkgMTE3MiAxMUJEOyAjICjsip47IOyKnjsg4YSJ4YWy4Ya9OyDsip47IOGEieGFsuGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgU1lVSgorQzI5RjtDMjlGOzExMDkgMTE3MiAxMUJFO0MyOUY7MTEwOSAxMTcyIDExQkU7ICMgKOyKnzsg7IqfOyDhhInhhbLhhr47IOyKnzsg4YSJ4YWy4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBTWVVDCitDMkEwO0MyQTA7MTEwOSAxMTcyIDExQkY7QzJBMDsxMTA5IDExNzIgMTFCRjsgIyAo7IqgOyDsiqA7IOGEieGFsuGGvzsg7IqgOyDhhInhhbLhhr87ICkgSEFOR1VMIFNZTExBQkxFIFNZVUsKK0MyQTE7QzJBMTsxMTA5IDExNzIgMTFDMDtDMkExOzExMDkgMTE3MiAxMUMwOyAjICjsiqE7IOyKoTsg4YSJ4YWy4YeAOyDsiqE7IOGEieGFsuGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgU1lVVAorQzJBMjtDMkEyOzExMDkgMTE3MiAxMUMxO0MyQTI7MTEwOSAxMTcyIDExQzE7ICMgKOyKojsg7IqiOyDhhInhhbLhh4E7IOyKojsg4YSJ4YWy4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBTWVVQCitDMkEzO0MyQTM7MTEwOSAxMTcyIDExQzI7QzJBMzsxMTA5IDExNzIgMTFDMjsgIyAo7IqjOyDsiqM7IOGEieGFsuGHgjsg7IqjOyDhhInhhbLhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFNZVUgKK0MyQTQ7QzJBNDsxMTA5IDExNzM7QzJBNDsxMTA5IDExNzM7ICMgKOyKpDsg7IqkOyDhhInhhbM7IOyKpDsg4YSJ4YWzOyApIEhBTkdVTCBTWUxMQUJMRSBTRVUKK0MyQTU7QzJBNTsxMTA5IDExNzMgMTFBODtDMkE1OzExMDkgMTE3MyAxMUE4OyAjICjsiqU7IOyKpTsg4YSJ4YWz4YaoOyDsiqU7IOGEieGFs+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU0VVRworQzJBNjtDMkE2OzExMDkgMTE3MyAxMUE5O0MyQTY7MTEwOSAxMTczIDExQTk7ICMgKOyKpjsg7IqmOyDhhInhhbPhhqk7IOyKpjsg4YSJ4YWz4YapOyApIEhBTkdVTCBTWUxMQUJMRSBTRVVHRworQzJBNztDMkE3OzExMDkgMTE3MyAxMUFBO0MyQTc7MTEwOSAxMTczIDExQUE7ICMgKOyKpzsg7IqnOyDhhInhhbPhhqo7IOyKpzsg4YSJ4YWz4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBTRVVHUworQzJBODtDMkE4OzExMDkgMTE3MyAxMUFCO0MyQTg7MTEwOSAxMTczIDExQUI7ICMgKOyKqDsg7IqoOyDhhInhhbPhhqs7IOyKqDsg4YSJ4YWz4YarOyApIEhBTkdVTCBTWUxMQUJMRSBTRVVOCitDMkE5O0MyQTk7MTEwOSAxMTczIDExQUM7QzJBOTsxMTA5IDExNzMgMTFBQzsgIyAo7IqpOyDsiqk7IOGEieGFs+GGrDsg7IqpOyDhhInhhbPhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFNFVU5KCitDMkFBO0MyQUE7MTEwOSAxMTczIDExQUQ7QzJBQTsxMTA5IDExNzMgMTFBRDsgIyAo7IqqOyDsiqo7IOGEieGFs+GGrTsg7IqqOyDhhInhhbPhhq07ICkgSEFOR1VMIFNZTExBQkxFIFNFVU5ICitDMkFCO0MyQUI7MTEwOSAxMTczIDExQUU7QzJBQjsxMTA5IDExNzMgMTFBRTsgIyAo7IqrOyDsiqs7IOGEieGFs+GGrjsg7IqrOyDhhInhhbPhhq47ICkgSEFOR1VMIFNZTExBQkxFIFNFVUQKK0MyQUM7QzJBQzsxMTA5IDExNzMgMTFBRjtDMkFDOzExMDkgMTE3MyAxMUFGOyAjICjsiqw7IOyKrDsg4YSJ4YWz4YavOyDsiqw7IOGEieGFs+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgU0VVTAorQzJBRDtDMkFEOzExMDkgMTE3MyAxMUIwO0MyQUQ7MTEwOSAxMTczIDExQjA7ICMgKOyKrTsg7IqtOyDhhInhhbPhhrA7IOyKrTsg4YSJ4YWz4YawOyApIEhBTkdVTCBTWUxMQUJMRSBTRVVMRworQzJBRTtDMkFFOzExMDkgMTE3MyAxMUIxO0MyQUU7MTEwOSAxMTczIDExQjE7ICMgKOyKrjsg7IquOyDhhInhhbPhhrE7IOyKrjsg4YSJ4YWz4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTRVVMTQorQzJBRjtDMkFGOzExMDkgMTE3MyAxMUIyO0MyQUY7MTEwOSAxMTczIDExQjI7ICMgKOyKrzsg7IqvOyDhhInhhbPhhrI7IOyKrzsg4YSJ4YWz4YayOyApIEhBTkdVTCBTWUxMQUJMRSBTRVVMQgorQzJCMDtDMkIwOzExMDkgMTE3MyAxMUIzO0MyQjA7MTEwOSAxMTczIDExQjM7ICMgKOyKsDsg7IqwOyDhhInhhbPhhrM7IOyKsDsg4YSJ4YWz4YazOyApIEhBTkdVTCBTWUxMQUJMRSBTRVVMUworQzJCMTtDMkIxOzExMDkgMTE3MyAxMUI0O0MyQjE7MTEwOSAxMTczIDExQjQ7ICMgKOyKsTsg7IqxOyDhhInhhbPhhrQ7IOyKsTsg4YSJ4YWz4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTRVVMVAorQzJCMjtDMkIyOzExMDkgMTE3MyAxMUI1O0MyQjI7MTEwOSAxMTczIDExQjU7ICMgKOyKsjsg7IqyOyDhhInhhbPhhrU7IOyKsjsg4YSJ4YWz4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBTRVVMUAorQzJCMztDMkIzOzExMDkgMTE3MyAxMUI2O0MyQjM7MTEwOSAxMTczIDExQjY7ICMgKOyKszsg7IqzOyDhhInhhbPhhrY7IOyKszsg4YSJ4YWz4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBTRVVMSAorQzJCNDtDMkI0OzExMDkgMTE3MyAxMUI3O0MyQjQ7MTEwOSAxMTczIDExQjc7ICMgKOyKtDsg7Iq0OyDhhInhhbPhhrc7IOyKtDsg4YSJ4YWz4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTRVVNCitDMkI1O0MyQjU7MTEwOSAxMTczIDExQjg7QzJCNTsxMTA5IDExNzMgMTFCODsgIyAo7Iq1OyDsirU7IOGEieGFs+GGuDsg7Iq1OyDhhInhhbPhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFNFVUIKK0MyQjY7QzJCNjsxMTA5IDExNzMgMTFCOTtDMkI2OzExMDkgMTE3MyAxMUI5OyAjICjsirY7IOyKtjsg4YSJ4YWz4Ya5OyDsirY7IOGEieGFs+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgU0VVQlMKK0MyQjc7QzJCNzsxMTA5IDExNzMgMTFCQTtDMkI3OzExMDkgMTE3MyAxMUJBOyAjICjsirc7IOyKtzsg4YSJ4YWz4Ya6OyDsirc7IOGEieGFs+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgU0VVUworQzJCODtDMkI4OzExMDkgMTE3MyAxMUJCO0MyQjg7MTEwOSAxMTczIDExQkI7ICMgKOyKuDsg7Iq4OyDhhInhhbPhhrs7IOyKuDsg4YSJ4YWz4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBTRVVTUworQzJCOTtDMkI5OzExMDkgMTE3MyAxMUJDO0MyQjk7MTEwOSAxMTczIDExQkM7ICMgKOyKuTsg7Iq5OyDhhInhhbPhhrw7IOyKuTsg4YSJ4YWz4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBTRVVORworQzJCQTtDMkJBOzExMDkgMTE3MyAxMUJEO0MyQkE7MTEwOSAxMTczIDExQkQ7ICMgKOyKujsg7Iq6OyDhhInhhbPhhr07IOyKujsg4YSJ4YWz4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTRVVKCitDMkJCO0MyQkI7MTEwOSAxMTczIDExQkU7QzJCQjsxMTA5IDExNzMgMTFCRTsgIyAo7Iq7OyDsirs7IOGEieGFs+GGvjsg7Iq7OyDhhInhhbPhhr47ICkgSEFOR1VMIFNZTExBQkxFIFNFVUMKK0MyQkM7QzJCQzsxMTA5IDExNzMgMTFCRjtDMkJDOzExMDkgMTE3MyAxMUJGOyAjICjsirw7IOyKvDsg4YSJ4YWz4Ya/OyDsirw7IOGEieGFs+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgU0VVSworQzJCRDtDMkJEOzExMDkgMTE3MyAxMUMwO0MyQkQ7MTEwOSAxMTczIDExQzA7ICMgKOyKvTsg7Iq9OyDhhInhhbPhh4A7IOyKvTsg4YSJ4YWz4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTRVVUCitDMkJFO0MyQkU7MTEwOSAxMTczIDExQzE7QzJCRTsxMTA5IDExNzMgMTFDMTsgIyAo7Iq+OyDsir47IOGEieGFs+GHgTsg7Iq+OyDhhInhhbPhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFNFVVAKK0MyQkY7QzJCRjsxMTA5IDExNzMgMTFDMjtDMkJGOzExMDkgMTE3MyAxMUMyOyAjICjsir87IOyKvzsg4YSJ4YWz4YeCOyDsir87IOGEieGFs+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgU0VVSAorQzJDMDtDMkMwOzExMDkgMTE3NDtDMkMwOzExMDkgMTE3NDsgIyAo7IuAOyDsi4A7IOGEieGFtDsg7IuAOyDhhInhhbQ7ICkgSEFOR1VMIFNZTExBQkxFIFNZSQorQzJDMTtDMkMxOzExMDkgMTE3NCAxMUE4O0MyQzE7MTEwOSAxMTc0IDExQTg7ICMgKOyLgTsg7IuBOyDhhInhhbThhqg7IOyLgTsg4YSJ4YW04YaoOyApIEhBTkdVTCBTWUxMQUJMRSBTWUlHCitDMkMyO0MyQzI7MTEwOSAxMTc0IDExQTk7QzJDMjsxMTA5IDExNzQgMTFBOTsgIyAo7IuCOyDsi4I7IOGEieGFtOGGqTsg7IuCOyDhhInhhbThhqk7ICkgSEFOR1VMIFNZTExBQkxFIFNZSUdHCitDMkMzO0MyQzM7MTEwOSAxMTc0IDExQUE7QzJDMzsxMTA5IDExNzQgMTFBQTsgIyAo7IuDOyDsi4M7IOGEieGFtOGGqjsg7IuDOyDhhInhhbThhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNZSUdTCitDMkM0O0MyQzQ7MTEwOSAxMTc0IDExQUI7QzJDNDsxMTA5IDExNzQgMTFBQjsgIyAo7IuEOyDsi4Q7IOGEieGFtOGGqzsg7IuEOyDhhInhhbThhqs7ICkgSEFOR1VMIFNZTExBQkxFIFNZSU4KK0MyQzU7QzJDNTsxMTA5IDExNzQgMTFBQztDMkM1OzExMDkgMTE3NCAxMUFDOyAjICjsi4U7IOyLhTsg4YSJ4YW04YasOyDsi4U7IOGEieGFtOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgU1lJTkoKK0MyQzY7QzJDNjsxMTA5IDExNzQgMTFBRDtDMkM2OzExMDkgMTE3NCAxMUFEOyAjICjsi4Y7IOyLhjsg4YSJ4YW04YatOyDsi4Y7IOGEieGFtOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1lJTkgKK0MyQzc7QzJDNzsxMTA5IDExNzQgMTFBRTtDMkM3OzExMDkgMTE3NCAxMUFFOyAjICjsi4c7IOyLhzsg4YSJ4YW04YauOyDsi4c7IOGEieGFtOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgU1lJRAorQzJDODtDMkM4OzExMDkgMTE3NCAxMUFGO0MyQzg7MTEwOSAxMTc0IDExQUY7ICMgKOyLiDsg7IuIOyDhhInhhbThhq87IOyLiDsg4YSJ4YW04YavOyApIEhBTkdVTCBTWUxMQUJMRSBTWUlMCitDMkM5O0MyQzk7MTEwOSAxMTc0IDExQjA7QzJDOTsxMTA5IDExNzQgMTFCMDsgIyAo7IuJOyDsi4k7IOGEieGFtOGGsDsg7IuJOyDhhInhhbThhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNZSUxHCitDMkNBO0MyQ0E7MTEwOSAxMTc0IDExQjE7QzJDQTsxMTA5IDExNzQgMTFCMTsgIyAo7IuKOyDsi4o7IOGEieGFtOGGsTsg7IuKOyDhhInhhbThhrE7ICkgSEFOR1VMIFNZTExBQkxFIFNZSUxNCitDMkNCO0MyQ0I7MTEwOSAxMTc0IDExQjI7QzJDQjsxMTA5IDExNzQgMTFCMjsgIyAo7IuLOyDsi4s7IOGEieGFtOGGsjsg7IuLOyDhhInhhbThhrI7ICkgSEFOR1VMIFNZTExBQkxFIFNZSUxCCitDMkNDO0MyQ0M7MTEwOSAxMTc0IDExQjM7QzJDQzsxMTA5IDExNzQgMTFCMzsgIyAo7IuMOyDsi4w7IOGEieGFtOGGszsg7IuMOyDhhInhhbThhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNZSUxTCitDMkNEO0MyQ0Q7MTEwOSAxMTc0IDExQjQ7QzJDRDsxMTA5IDExNzQgMTFCNDsgIyAo7IuNOyDsi407IOGEieGFtOGGtDsg7IuNOyDhhInhhbThhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFNZSUxUCitDMkNFO0MyQ0U7MTEwOSAxMTc0IDExQjU7QzJDRTsxMTA5IDExNzQgMTFCNTsgIyAo7IuOOyDsi447IOGEieGFtOGGtTsg7IuOOyDhhInhhbThhrU7ICkgSEFOR1VMIFNZTExBQkxFIFNZSUxQCitDMkNGO0MyQ0Y7MTEwOSAxMTc0IDExQjY7QzJDRjsxMTA5IDExNzQgMTFCNjsgIyAo7IuPOyDsi487IOGEieGFtOGGtjsg7IuPOyDhhInhhbThhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNZSUxICitDMkQwO0MyRDA7MTEwOSAxMTc0IDExQjc7QzJEMDsxMTA5IDExNzQgMTFCNzsgIyAo7IuQOyDsi5A7IOGEieGFtOGGtzsg7IuQOyDhhInhhbThhrc7ICkgSEFOR1VMIFNZTExBQkxFIFNZSU0KK0MyRDE7QzJEMTsxMTA5IDExNzQgMTFCODtDMkQxOzExMDkgMTE3NCAxMUI4OyAjICjsi5E7IOyLkTsg4YSJ4YW04Ya4OyDsi5E7IOGEieGFtOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgU1lJQgorQzJEMjtDMkQyOzExMDkgMTE3NCAxMUI5O0MyRDI7MTEwOSAxMTc0IDExQjk7ICMgKOyLkjsg7IuSOyDhhInhhbThhrk7IOyLkjsg4YSJ4YW04Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTWUlCUworQzJEMztDMkQzOzExMDkgMTE3NCAxMUJBO0MyRDM7MTEwOSAxMTc0IDExQkE7ICMgKOyLkzsg7IuTOyDhhInhhbThhro7IOyLkzsg4YSJ4YW04Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBTWUlTCitDMkQ0O0MyRDQ7MTEwOSAxMTc0IDExQkI7QzJENDsxMTA5IDExNzQgMTFCQjsgIyAo7IuUOyDsi5Q7IOGEieGFtOGGuzsg7IuUOyDhhInhhbThhrs7ICkgSEFOR1VMIFNZTExBQkxFIFNZSVNTCitDMkQ1O0MyRDU7MTEwOSAxMTc0IDExQkM7QzJENTsxMTA5IDExNzQgMTFCQzsgIyAo7IuVOyDsi5U7IOGEieGFtOGGvDsg7IuVOyDhhInhhbThhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNZSU5HCitDMkQ2O0MyRDY7MTEwOSAxMTc0IDExQkQ7QzJENjsxMTA5IDExNzQgMTFCRDsgIyAo7IuWOyDsi5Y7IOGEieGFtOGGvTsg7IuWOyDhhInhhbThhr07ICkgSEFOR1VMIFNZTExBQkxFIFNZSUoKK0MyRDc7QzJENzsxMTA5IDExNzQgMTFCRTtDMkQ3OzExMDkgMTE3NCAxMUJFOyAjICjsi5c7IOyLlzsg4YSJ4YW04Ya+OyDsi5c7IOGEieGFtOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgU1lJQworQzJEODtDMkQ4OzExMDkgMTE3NCAxMUJGO0MyRDg7MTEwOSAxMTc0IDExQkY7ICMgKOyLmDsg7IuYOyDhhInhhbThhr87IOyLmDsg4YSJ4YW04Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTWUlLCitDMkQ5O0MyRDk7MTEwOSAxMTc0IDExQzA7QzJEOTsxMTA5IDExNzQgMTFDMDsgIyAo7IuZOyDsi5k7IOGEieGFtOGHgDsg7IuZOyDhhInhhbThh4A7ICkgSEFOR1VMIFNZTExBQkxFIFNZSVQKK0MyREE7QzJEQTsxMTA5IDExNzQgMTFDMTtDMkRBOzExMDkgMTE3NCAxMUMxOyAjICjsi5o7IOyLmjsg4YSJ4YW04YeBOyDsi5o7IOGEieGFtOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgU1lJUAorQzJEQjtDMkRCOzExMDkgMTE3NCAxMUMyO0MyREI7MTEwOSAxMTc0IDExQzI7ICMgKOyLmzsg7IubOyDhhInhhbThh4I7IOyLmzsg4YSJ4YW04YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTWUlICitDMkRDO0MyREM7MTEwOSAxMTc1O0MyREM7MTEwOSAxMTc1OyAjICjsi5w7IOyLnDsg4YSJ4YW1OyDsi5w7IOGEieGFtTsgKSBIQU5HVUwgU1lMTEFCTEUgU0kKK0MyREQ7QzJERDsxMTA5IDExNzUgMTFBODtDMkREOzExMDkgMTE3NSAxMUE4OyAjICjsi507IOyLnTsg4YSJ4YW14YaoOyDsi507IOGEieGFteGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU0lHCitDMkRFO0MyREU7MTEwOSAxMTc1IDExQTk7QzJERTsxMTA5IDExNzUgMTFBOTsgIyAo7IueOyDsi547IOGEieGFteGGqTsg7IueOyDhhInhhbXhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFNJR0cKK0MyREY7QzJERjsxMTA5IDExNzUgMTFBQTtDMkRGOzExMDkgMTE3NSAxMUFBOyAjICjsi587IOyLnzsg4YSJ4YW14YaqOyDsi587IOGEieGFteGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgU0lHUworQzJFMDtDMkUwOzExMDkgMTE3NSAxMUFCO0MyRTA7MTEwOSAxMTc1IDExQUI7ICMgKOyLoDsg7IugOyDhhInhhbXhhqs7IOyLoDsg4YSJ4YW14YarOyApIEhBTkdVTCBTWUxMQUJMRSBTSU4KK0MyRTE7QzJFMTsxMTA5IDExNzUgMTFBQztDMkUxOzExMDkgMTE3NSAxMUFDOyAjICjsi6E7IOyLoTsg4YSJ4YW14YasOyDsi6E7IOGEieGFteGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgU0lOSgorQzJFMjtDMkUyOzExMDkgMTE3NSAxMUFEO0MyRTI7MTEwOSAxMTc1IDExQUQ7ICMgKOyLojsg7IuiOyDhhInhhbXhhq07IOyLojsg4YSJ4YW14YatOyApIEhBTkdVTCBTWUxMQUJMRSBTSU5ICitDMkUzO0MyRTM7MTEwOSAxMTc1IDExQUU7QzJFMzsxMTA5IDExNzUgMTFBRTsgIyAo7IujOyDsi6M7IOGEieGFteGGrjsg7IujOyDhhInhhbXhhq47ICkgSEFOR1VMIFNZTExBQkxFIFNJRAorQzJFNDtDMkU0OzExMDkgMTE3NSAxMUFGO0MyRTQ7MTEwOSAxMTc1IDExQUY7ICMgKOyLpDsg7IukOyDhhInhhbXhhq87IOyLpDsg4YSJ4YW14YavOyApIEhBTkdVTCBTWUxMQUJMRSBTSUwKK0MyRTU7QzJFNTsxMTA5IDExNzUgMTFCMDtDMkU1OzExMDkgMTE3NSAxMUIwOyAjICjsi6U7IOyLpTsg4YSJ4YW14YawOyDsi6U7IOGEieGFteGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgU0lMRworQzJFNjtDMkU2OzExMDkgMTE3NSAxMUIxO0MyRTY7MTEwOSAxMTc1IDExQjE7ICMgKOyLpjsg7IumOyDhhInhhbXhhrE7IOyLpjsg4YSJ4YW14YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTSUxNCitDMkU3O0MyRTc7MTEwOSAxMTc1IDExQjI7QzJFNzsxMTA5IDExNzUgMTFCMjsgIyAo7IunOyDsi6c7IOGEieGFteGGsjsg7IunOyDhhInhhbXhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFNJTEIKK0MyRTg7QzJFODsxMTA5IDExNzUgMTFCMztDMkU4OzExMDkgMTE3NSAxMUIzOyAjICjsi6g7IOyLqDsg4YSJ4YW14YazOyDsi6g7IOGEieGFteGGszsgKSBIQU5HVUwgU1lMTEFCTEUgU0lMUworQzJFOTtDMkU5OzExMDkgMTE3NSAxMUI0O0MyRTk7MTEwOSAxMTc1IDExQjQ7ICMgKOyLqTsg7IupOyDhhInhhbXhhrQ7IOyLqTsg4YSJ4YW14Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTSUxUCitDMkVBO0MyRUE7MTEwOSAxMTc1IDExQjU7QzJFQTsxMTA5IDExNzUgMTFCNTsgIyAo7IuqOyDsi6o7IOGEieGFteGGtTsg7IuqOyDhhInhhbXhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFNJTFAKK0MyRUI7QzJFQjsxMTA5IDExNzUgMTFCNjtDMkVCOzExMDkgMTE3NSAxMUI2OyAjICjsi6s7IOyLqzsg4YSJ4YW14Ya2OyDsi6s7IOGEieGFteGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgU0lMSAorQzJFQztDMkVDOzExMDkgMTE3NSAxMUI3O0MyRUM7MTEwOSAxMTc1IDExQjc7ICMgKOyLrDsg7IusOyDhhInhhbXhhrc7IOyLrDsg4YSJ4YW14Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTSU0KK0MyRUQ7QzJFRDsxMTA5IDExNzUgMTFCODtDMkVEOzExMDkgMTE3NSAxMUI4OyAjICjsi607IOyLrTsg4YSJ4YW14Ya4OyDsi607IOGEieGFteGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgU0lCCitDMkVFO0MyRUU7MTEwOSAxMTc1IDExQjk7QzJFRTsxMTA5IDExNzUgMTFCOTsgIyAo7IuuOyDsi647IOGEieGFteGGuTsg7IuuOyDhhInhhbXhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFNJQlMKK0MyRUY7QzJFRjsxMTA5IDExNzUgMTFCQTtDMkVGOzExMDkgMTE3NSAxMUJBOyAjICjsi687IOyLrzsg4YSJ4YW14Ya6OyDsi687IOGEieGFteGGujsgKSBIQU5HVUwgU1lMTEFCTEUgU0lTCitDMkYwO0MyRjA7MTEwOSAxMTc1IDExQkI7QzJGMDsxMTA5IDExNzUgMTFCQjsgIyAo7IuwOyDsi7A7IOGEieGFteGGuzsg7IuwOyDhhInhhbXhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFNJU1MKK0MyRjE7QzJGMTsxMTA5IDExNzUgMTFCQztDMkYxOzExMDkgMTE3NSAxMUJDOyAjICjsi7E7IOyLsTsg4YSJ4YW14Ya8OyDsi7E7IOGEieGFteGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgU0lORworQzJGMjtDMkYyOzExMDkgMTE3NSAxMUJEO0MyRjI7MTEwOSAxMTc1IDExQkQ7ICMgKOyLsjsg7IuyOyDhhInhhbXhhr07IOyLsjsg4YSJ4YW14Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTSUoKK0MyRjM7QzJGMzsxMTA5IDExNzUgMTFCRTtDMkYzOzExMDkgMTE3NSAxMUJFOyAjICjsi7M7IOyLszsg4YSJ4YW14Ya+OyDsi7M7IOGEieGFteGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgU0lDCitDMkY0O0MyRjQ7MTEwOSAxMTc1IDExQkY7QzJGNDsxMTA5IDExNzUgMTFCRjsgIyAo7Iu0OyDsi7Q7IOGEieGFteGGvzsg7Iu0OyDhhInhhbXhhr87ICkgSEFOR1VMIFNZTExBQkxFIFNJSworQzJGNTtDMkY1OzExMDkgMTE3NSAxMUMwO0MyRjU7MTEwOSAxMTc1IDExQzA7ICMgKOyLtTsg7Iu1OyDhhInhhbXhh4A7IOyLtTsg4YSJ4YW14YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTSVQKK0MyRjY7QzJGNjsxMTA5IDExNzUgMTFDMTtDMkY2OzExMDkgMTE3NSAxMUMxOyAjICjsi7Y7IOyLtjsg4YSJ4YW14YeBOyDsi7Y7IOGEieGFteGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgU0lQCitDMkY3O0MyRjc7MTEwOSAxMTc1IDExQzI7QzJGNzsxMTA5IDExNzUgMTFDMjsgIyAo7Iu3OyDsi7c7IOGEieGFteGHgjsg7Iu3OyDhhInhhbXhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFNJSAorQzJGODtDMkY4OzExMEEgMTE2MTtDMkY4OzExMEEgMTE2MTsgIyAo7Iu4OyDsi7g7IOGEiuGFoTsg7Iu4OyDhhIrhhaE7ICkgSEFOR1VMIFNZTExBQkxFIFNTQQorQzJGOTtDMkY5OzExMEEgMTE2MSAxMUE4O0MyRjk7MTEwQSAxMTYxIDExQTg7ICMgKOyLuTsg7Iu5OyDhhIrhhaHhhqg7IOyLuTsg4YSK4YWh4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBTU0FHCitDMkZBO0MyRkE7MTEwQSAxMTYxIDExQTk7QzJGQTsxMTBBIDExNjEgMTFBOTsgIyAo7Iu6OyDsi7o7IOGEiuGFoeGGqTsg7Iu6OyDhhIrhhaHhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFNTQUdHCitDMkZCO0MyRkI7MTEwQSAxMTYxIDExQUE7QzJGQjsxMTBBIDExNjEgMTFBQTsgIyAo7Iu7OyDsi7s7IOGEiuGFoeGGqjsg7Iu7OyDhhIrhhaHhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNTQUdTCitDMkZDO0MyRkM7MTEwQSAxMTYxIDExQUI7QzJGQzsxMTBBIDExNjEgMTFBQjsgIyAo7Iu8OyDsi7w7IOGEiuGFoeGGqzsg7Iu8OyDhhIrhhaHhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFNTQU4KK0MyRkQ7QzJGRDsxMTBBIDExNjEgMTFBQztDMkZEOzExMEEgMTE2MSAxMUFDOyAjICjsi707IOyLvTsg4YSK4YWh4YasOyDsi707IOGEiuGFoeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NBTkoKK0MyRkU7QzJGRTsxMTBBIDExNjEgMTFBRDtDMkZFOzExMEEgMTE2MSAxMUFEOyAjICjsi747IOyLvjsg4YSK4YWh4YatOyDsi747IOGEiuGFoeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NBTkgKK0MyRkY7QzJGRjsxMTBBIDExNjEgMTFBRTtDMkZGOzExMEEgMTE2MSAxMUFFOyAjICjsi787IOyLvzsg4YSK4YWh4YauOyDsi787IOGEiuGFoeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NBRAorQzMwMDtDMzAwOzExMEEgMTE2MSAxMUFGO0MzMDA7MTEwQSAxMTYxIDExQUY7ICMgKOyMgDsg7IyAOyDhhIrhhaHhhq87IOyMgDsg4YSK4YWh4YavOyApIEhBTkdVTCBTWUxMQUJMRSBTU0FMCitDMzAxO0MzMDE7MTEwQSAxMTYxIDExQjA7QzMwMTsxMTBBIDExNjEgMTFCMDsgIyAo7IyBOyDsjIE7IOGEiuGFoeGGsDsg7IyBOyDhhIrhhaHhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNTQUxHCitDMzAyO0MzMDI7MTEwQSAxMTYxIDExQjE7QzMwMjsxMTBBIDExNjEgMTFCMTsgIyAo7IyCOyDsjII7IOGEiuGFoeGGsTsg7IyCOyDhhIrhhaHhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFNTQUxNCitDMzAzO0MzMDM7MTEwQSAxMTYxIDExQjI7QzMwMzsxMTBBIDExNjEgMTFCMjsgIyAo7IyDOyDsjIM7IOGEiuGFoeGGsjsg7IyDOyDhhIrhhaHhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFNTQUxCCitDMzA0O0MzMDQ7MTEwQSAxMTYxIDExQjM7QzMwNDsxMTBBIDExNjEgMTFCMzsgIyAo7IyEOyDsjIQ7IOGEiuGFoeGGszsg7IyEOyDhhIrhhaHhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNTQUxTCitDMzA1O0MzMDU7MTEwQSAxMTYxIDExQjQ7QzMwNTsxMTBBIDExNjEgMTFCNDsgIyAo7IyFOyDsjIU7IOGEiuGFoeGGtDsg7IyFOyDhhIrhhaHhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFNTQUxUCitDMzA2O0MzMDY7MTEwQSAxMTYxIDExQjU7QzMwNjsxMTBBIDExNjEgMTFCNTsgIyAo7IyGOyDsjIY7IOGEiuGFoeGGtTsg7IyGOyDhhIrhhaHhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFNTQUxQCitDMzA3O0MzMDc7MTEwQSAxMTYxIDExQjY7QzMwNzsxMTBBIDExNjEgMTFCNjsgIyAo7IyHOyDsjIc7IOGEiuGFoeGGtjsg7IyHOyDhhIrhhaHhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNTQUxICitDMzA4O0MzMDg7MTEwQSAxMTYxIDExQjc7QzMwODsxMTBBIDExNjEgMTFCNzsgIyAo7IyIOyDsjIg7IOGEiuGFoeGGtzsg7IyIOyDhhIrhhaHhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFNTQU0KK0MzMDk7QzMwOTsxMTBBIDExNjEgMTFCODtDMzA5OzExMEEgMTE2MSAxMUI4OyAjICjsjIk7IOyMiTsg4YSK4YWh4Ya4OyDsjIk7IOGEiuGFoeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NBQgorQzMwQTtDMzBBOzExMEEgMTE2MSAxMUI5O0MzMEE7MTEwQSAxMTYxIDExQjk7ICMgKOyMijsg7IyKOyDhhIrhhaHhhrk7IOyMijsg4YSK4YWh4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTU0FCUworQzMwQjtDMzBCOzExMEEgMTE2MSAxMUJBO0MzMEI7MTEwQSAxMTYxIDExQkE7ICMgKOyMizsg7IyLOyDhhIrhhaHhhro7IOyMizsg4YSK4YWh4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBTU0FTCitDMzBDO0MzMEM7MTEwQSAxMTYxIDExQkI7QzMwQzsxMTBBIDExNjEgMTFCQjsgIyAo7IyMOyDsjIw7IOGEiuGFoeGGuzsg7IyMOyDhhIrhhaHhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFNTQVNTCitDMzBEO0MzMEQ7MTEwQSAxMTYxIDExQkM7QzMwRDsxMTBBIDExNjEgMTFCQzsgIyAo7IyNOyDsjI07IOGEiuGFoeGGvDsg7IyNOyDhhIrhhaHhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNTQU5HCitDMzBFO0MzMEU7MTEwQSAxMTYxIDExQkQ7QzMwRTsxMTBBIDExNjEgMTFCRDsgIyAo7IyOOyDsjI47IOGEiuGFoeGGvTsg7IyOOyDhhIrhhaHhhr07ICkgSEFOR1VMIFNZTExBQkxFIFNTQUoKK0MzMEY7QzMwRjsxMTBBIDExNjEgMTFCRTtDMzBGOzExMEEgMTE2MSAxMUJFOyAjICjsjI87IOyMjzsg4YSK4YWh4Ya+OyDsjI87IOGEiuGFoeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NBQworQzMxMDtDMzEwOzExMEEgMTE2MSAxMUJGO0MzMTA7MTEwQSAxMTYxIDExQkY7ICMgKOyMkDsg7IyQOyDhhIrhhaHhhr87IOyMkDsg4YSK4YWh4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTU0FLCitDMzExO0MzMTE7MTEwQSAxMTYxIDExQzA7QzMxMTsxMTBBIDExNjEgMTFDMDsgIyAo7IyROyDsjJE7IOGEiuGFoeGHgDsg7IyROyDhhIrhhaHhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFNTQVQKK0MzMTI7QzMxMjsxMTBBIDExNjEgMTFDMTtDMzEyOzExMEEgMTE2MSAxMUMxOyAjICjsjJI7IOyMkjsg4YSK4YWh4YeBOyDsjJI7IOGEiuGFoeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NBUAorQzMxMztDMzEzOzExMEEgMTE2MSAxMUMyO0MzMTM7MTEwQSAxMTYxIDExQzI7ICMgKOyMkzsg7IyTOyDhhIrhhaHhh4I7IOyMkzsg4YSK4YWh4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTU0FICitDMzE0O0MzMTQ7MTEwQSAxMTYyO0MzMTQ7MTEwQSAxMTYyOyAjICjsjJQ7IOyMlDsg4YSK4YWiOyDsjJQ7IOGEiuGFojsgKSBIQU5HVUwgU1lMTEFCTEUgU1NBRQorQzMxNTtDMzE1OzExMEEgMTE2MiAxMUE4O0MzMTU7MTEwQSAxMTYyIDExQTg7ICMgKOyMlTsg7IyVOyDhhIrhhaLhhqg7IOyMlTsg4YSK4YWi4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBTU0FFRworQzMxNjtDMzE2OzExMEEgMTE2MiAxMUE5O0MzMTY7MTEwQSAxMTYyIDExQTk7ICMgKOyMljsg7IyWOyDhhIrhhaLhhqk7IOyMljsg4YSK4YWi4YapOyApIEhBTkdVTCBTWUxMQUJMRSBTU0FFR0cKK0MzMTc7QzMxNzsxMTBBIDExNjIgMTFBQTtDMzE3OzExMEEgMTE2MiAxMUFBOyAjICjsjJc7IOyMlzsg4YSK4YWi4YaqOyDsjJc7IOGEiuGFouGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NBRUdTCitDMzE4O0MzMTg7MTEwQSAxMTYyIDExQUI7QzMxODsxMTBBIDExNjIgMTFBQjsgIyAo7IyYOyDsjJg7IOGEiuGFouGGqzsg7IyYOyDhhIrhhaLhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFNTQUVOCitDMzE5O0MzMTk7MTEwQSAxMTYyIDExQUM7QzMxOTsxMTBBIDExNjIgMTFBQzsgIyAo7IyZOyDsjJk7IOGEiuGFouGGrDsg7IyZOyDhhIrhhaLhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFNTQUVOSgorQzMxQTtDMzFBOzExMEEgMTE2MiAxMUFEO0MzMUE7MTEwQSAxMTYyIDExQUQ7ICMgKOyMmjsg7IyaOyDhhIrhhaLhhq07IOyMmjsg4YSK4YWi4YatOyApIEhBTkdVTCBTWUxMQUJMRSBTU0FFTkgKK0MzMUI7QzMxQjsxMTBBIDExNjIgMTFBRTtDMzFCOzExMEEgMTE2MiAxMUFFOyAjICjsjJs7IOyMmzsg4YSK4YWi4YauOyDsjJs7IOGEiuGFouGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NBRUQKK0MzMUM7QzMxQzsxMTBBIDExNjIgMTFBRjtDMzFDOzExMEEgMTE2MiAxMUFGOyAjICjsjJw7IOyMnDsg4YSK4YWi4YavOyDsjJw7IOGEiuGFouGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgU1NBRUwKK0MzMUQ7QzMxRDsxMTBBIDExNjIgMTFCMDtDMzFEOzExMEEgMTE2MiAxMUIwOyAjICjsjJ07IOyMnTsg4YSK4YWi4YawOyDsjJ07IOGEiuGFouGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NBRUxHCitDMzFFO0MzMUU7MTEwQSAxMTYyIDExQjE7QzMxRTsxMTBBIDExNjIgMTFCMTsgIyAo7IyeOyDsjJ47IOGEiuGFouGGsTsg7IyeOyDhhIrhhaLhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFNTQUVMTQorQzMxRjtDMzFGOzExMEEgMTE2MiAxMUIyO0MzMUY7MTEwQSAxMTYyIDExQjI7ICMgKOyMnzsg7IyfOyDhhIrhhaLhhrI7IOyMnzsg4YSK4YWi4YayOyApIEhBTkdVTCBTWUxMQUJMRSBTU0FFTEIKK0MzMjA7QzMyMDsxMTBBIDExNjIgMTFCMztDMzIwOzExMEEgMTE2MiAxMUIzOyAjICjsjKA7IOyMoDsg4YSK4YWi4YazOyDsjKA7IOGEiuGFouGGszsgKSBIQU5HVUwgU1lMTEFCTEUgU1NBRUxTCitDMzIxO0MzMjE7MTEwQSAxMTYyIDExQjQ7QzMyMTsxMTBBIDExNjIgMTFCNDsgIyAo7IyhOyDsjKE7IOGEiuGFouGGtDsg7IyhOyDhhIrhhaLhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFNTQUVMVAorQzMyMjtDMzIyOzExMEEgMTE2MiAxMUI1O0MzMjI7MTEwQSAxMTYyIDExQjU7ICMgKOyMojsg7IyiOyDhhIrhhaLhhrU7IOyMojsg4YSK4YWi4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBTU0FFTFAKK0MzMjM7QzMyMzsxMTBBIDExNjIgMTFCNjtDMzIzOzExMEEgMTE2MiAxMUI2OyAjICjsjKM7IOyMozsg4YSK4YWi4Ya2OyDsjKM7IOGEiuGFouGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NBRUxICitDMzI0O0MzMjQ7MTEwQSAxMTYyIDExQjc7QzMyNDsxMTBBIDExNjIgMTFCNzsgIyAo7IykOyDsjKQ7IOGEiuGFouGGtzsg7IykOyDhhIrhhaLhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFNTQUVNCitDMzI1O0MzMjU7MTEwQSAxMTYyIDExQjg7QzMyNTsxMTBBIDExNjIgMTFCODsgIyAo7IylOyDsjKU7IOGEiuGFouGGuDsg7IylOyDhhIrhhaLhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFNTQUVCCitDMzI2O0MzMjY7MTEwQSAxMTYyIDExQjk7QzMyNjsxMTBBIDExNjIgMTFCOTsgIyAo7IymOyDsjKY7IOGEiuGFouGGuTsg7IymOyDhhIrhhaLhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFNTQUVCUworQzMyNztDMzI3OzExMEEgMTE2MiAxMUJBO0MzMjc7MTEwQSAxMTYyIDExQkE7ICMgKOyMpzsg7IynOyDhhIrhhaLhhro7IOyMpzsg4YSK4YWi4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBTU0FFUworQzMyODtDMzI4OzExMEEgMTE2MiAxMUJCO0MzMjg7MTEwQSAxMTYyIDExQkI7ICMgKOyMqDsg7IyoOyDhhIrhhaLhhrs7IOyMqDsg4YSK4YWi4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBTU0FFU1MKK0MzMjk7QzMyOTsxMTBBIDExNjIgMTFCQztDMzI5OzExMEEgMTE2MiAxMUJDOyAjICjsjKk7IOyMqTsg4YSK4YWi4Ya8OyDsjKk7IOGEiuGFouGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NBRU5HCitDMzJBO0MzMkE7MTEwQSAxMTYyIDExQkQ7QzMyQTsxMTBBIDExNjIgMTFCRDsgIyAo7IyqOyDsjKo7IOGEiuGFouGGvTsg7IyqOyDhhIrhhaLhhr07ICkgSEFOR1VMIFNZTExBQkxFIFNTQUVKCitDMzJCO0MzMkI7MTEwQSAxMTYyIDExQkU7QzMyQjsxMTBBIDExNjIgMTFCRTsgIyAo7IyrOyDsjKs7IOGEiuGFouGGvjsg7IyrOyDhhIrhhaLhhr47ICkgSEFOR1VMIFNZTExBQkxFIFNTQUVDCitDMzJDO0MzMkM7MTEwQSAxMTYyIDExQkY7QzMyQzsxMTBBIDExNjIgMTFCRjsgIyAo7IysOyDsjKw7IOGEiuGFouGGvzsg7IysOyDhhIrhhaLhhr87ICkgSEFOR1VMIFNZTExBQkxFIFNTQUVLCitDMzJEO0MzMkQ7MTEwQSAxMTYyIDExQzA7QzMyRDsxMTBBIDExNjIgMTFDMDsgIyAo7IytOyDsjK07IOGEiuGFouGHgDsg7IytOyDhhIrhhaLhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFNTQUVUCitDMzJFO0MzMkU7MTEwQSAxMTYyIDExQzE7QzMyRTsxMTBBIDExNjIgMTFDMTsgIyAo7IyuOyDsjK47IOGEiuGFouGHgTsg7IyuOyDhhIrhhaLhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFNTQUVQCitDMzJGO0MzMkY7MTEwQSAxMTYyIDExQzI7QzMyRjsxMTBBIDExNjIgMTFDMjsgIyAo7IyvOyDsjK87IOGEiuGFouGHgjsg7IyvOyDhhIrhhaLhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFNTQUVICitDMzMwO0MzMzA7MTEwQSAxMTYzO0MzMzA7MTEwQSAxMTYzOyAjICjsjLA7IOyMsDsg4YSK4YWjOyDsjLA7IOGEiuGFozsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZQQorQzMzMTtDMzMxOzExMEEgMTE2MyAxMUE4O0MzMzE7MTEwQSAxMTYzIDExQTg7ICMgKOyMsTsg7IyxOyDhhIrhhaPhhqg7IOyMsTsg4YSK4YWj4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lBRworQzMzMjtDMzMyOzExMEEgMTE2MyAxMUE5O0MzMzI7MTEwQSAxMTYzIDExQTk7ICMgKOyMsjsg7IyyOyDhhIrhhaPhhqk7IOyMsjsg4YSK4YWj4YapOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lBR0cKK0MzMzM7QzMzMzsxMTBBIDExNjMgMTFBQTtDMzMzOzExMEEgMTE2MyAxMUFBOyAjICjsjLM7IOyMszsg4YSK4YWj4YaqOyDsjLM7IOGEiuGFo+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZQUdTCitDMzM0O0MzMzQ7MTEwQSAxMTYzIDExQUI7QzMzNDsxMTBBIDExNjMgMTFBQjsgIyAo7Iy0OyDsjLQ7IOGEiuGFo+GGqzsg7Iy0OyDhhIrhhaPhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFOCitDMzM1O0MzMzU7MTEwQSAxMTYzIDExQUM7QzMzNTsxMTBBIDExNjMgMTFBQzsgIyAo7Iy1OyDsjLU7IOGEiuGFo+GGrDsg7Iy1OyDhhIrhhaPhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFOSgorQzMzNjtDMzM2OzExMEEgMTE2MyAxMUFEO0MzMzY7MTEwQSAxMTYzIDExQUQ7ICMgKOyMtjsg7Iy2OyDhhIrhhaPhhq07IOyMtjsg4YSK4YWj4YatOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lBTkgKK0MzMzc7QzMzNzsxMTBBIDExNjMgMTFBRTtDMzM3OzExMEEgMTE2MyAxMUFFOyAjICjsjLc7IOyMtzsg4YSK4YWj4YauOyDsjLc7IOGEiuGFo+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZQUQKK0MzMzg7QzMzODsxMTBBIDExNjMgMTFBRjtDMzM4OzExMEEgMTE2MyAxMUFGOyAjICjsjLg7IOyMuDsg4YSK4YWj4YavOyDsjLg7IOGEiuGFo+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZQUwKK0MzMzk7QzMzOTsxMTBBIDExNjMgMTFCMDtDMzM5OzExMEEgMTE2MyAxMUIwOyAjICjsjLk7IOyMuTsg4YSK4YWj4YawOyDsjLk7IOGEiuGFo+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZQUxHCitDMzNBO0MzM0E7MTEwQSAxMTYzIDExQjE7QzMzQTsxMTBBIDExNjMgMTFCMTsgIyAo7Iy6OyDsjLo7IOGEiuGFo+GGsTsg7Iy6OyDhhIrhhaPhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFMTQorQzMzQjtDMzNCOzExMEEgMTE2MyAxMUIyO0MzM0I7MTEwQSAxMTYzIDExQjI7ICMgKOyMuzsg7Iy7OyDhhIrhhaPhhrI7IOyMuzsg4YSK4YWj4YayOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lBTEIKK0MzM0M7QzMzQzsxMTBBIDExNjMgMTFCMztDMzNDOzExMEEgMTE2MyAxMUIzOyAjICjsjLw7IOyMvDsg4YSK4YWj4YazOyDsjLw7IOGEiuGFo+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZQUxTCitDMzNEO0MzM0Q7MTEwQSAxMTYzIDExQjQ7QzMzRDsxMTBBIDExNjMgMTFCNDsgIyAo7Iy9OyDsjL07IOGEiuGFo+GGtDsg7Iy9OyDhhIrhhaPhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFMVAorQzMzRTtDMzNFOzExMEEgMTE2MyAxMUI1O0MzM0U7MTEwQSAxMTYzIDExQjU7ICMgKOyMvjsg7Iy+OyDhhIrhhaPhhrU7IOyMvjsg4YSK4YWj4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lBTFAKK0MzM0Y7QzMzRjsxMTBBIDExNjMgMTFCNjtDMzNGOzExMEEgMTE2MyAxMUI2OyAjICjsjL87IOyMvzsg4YSK4YWj4Ya2OyDsjL87IOGEiuGFo+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZQUxICitDMzQwO0MzNDA7MTEwQSAxMTYzIDExQjc7QzM0MDsxMTBBIDExNjMgMTFCNzsgIyAo7I2AOyDsjYA7IOGEiuGFo+GGtzsg7I2AOyDhhIrhhaPhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFNCitDMzQxO0MzNDE7MTEwQSAxMTYzIDExQjg7QzM0MTsxMTBBIDExNjMgMTFCODsgIyAo7I2BOyDsjYE7IOGEiuGFo+GGuDsg7I2BOyDhhIrhhaPhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFCCitDMzQyO0MzNDI7MTEwQSAxMTYzIDExQjk7QzM0MjsxMTBBIDExNjMgMTFCOTsgIyAo7I2COyDsjYI7IOGEiuGFo+GGuTsg7I2COyDhhIrhhaPhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFCUworQzM0MztDMzQzOzExMEEgMTE2MyAxMUJBO0MzNDM7MTEwQSAxMTYzIDExQkE7ICMgKOyNgzsg7I2DOyDhhIrhhaPhhro7IOyNgzsg4YSK4YWj4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lBUworQzM0NDtDMzQ0OzExMEEgMTE2MyAxMUJCO0MzNDQ7MTEwQSAxMTYzIDExQkI7ICMgKOyNhDsg7I2EOyDhhIrhhaPhhrs7IOyNhDsg4YSK4YWj4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lBU1MKK0MzNDU7QzM0NTsxMTBBIDExNjMgMTFCQztDMzQ1OzExMEEgMTE2MyAxMUJDOyAjICjsjYU7IOyNhTsg4YSK4YWj4Ya8OyDsjYU7IOGEiuGFo+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZQU5HCitDMzQ2O0MzNDY7MTEwQSAxMTYzIDExQkQ7QzM0NjsxMTBBIDExNjMgMTFCRDsgIyAo7I2GOyDsjYY7IOGEiuGFo+GGvTsg7I2GOyDhhIrhhaPhhr07ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFKCitDMzQ3O0MzNDc7MTEwQSAxMTYzIDExQkU7QzM0NzsxMTBBIDExNjMgMTFCRTsgIyAo7I2HOyDsjYc7IOGEiuGFo+GGvjsg7I2HOyDhhIrhhaPhhr47ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFDCitDMzQ4O0MzNDg7MTEwQSAxMTYzIDExQkY7QzM0ODsxMTBBIDExNjMgMTFCRjsgIyAo7I2IOyDsjYg7IOGEiuGFo+GGvzsg7I2IOyDhhIrhhaPhhr87ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFLCitDMzQ5O0MzNDk7MTEwQSAxMTYzIDExQzA7QzM0OTsxMTBBIDExNjMgMTFDMDsgIyAo7I2JOyDsjYk7IOGEiuGFo+GHgDsg7I2JOyDhhIrhhaPhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFUCitDMzRBO0MzNEE7MTEwQSAxMTYzIDExQzE7QzM0QTsxMTBBIDExNjMgMTFDMTsgIyAo7I2KOyDsjYo7IOGEiuGFo+GHgTsg7I2KOyDhhIrhhaPhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFQCitDMzRCO0MzNEI7MTEwQSAxMTYzIDExQzI7QzM0QjsxMTBBIDExNjMgMTFDMjsgIyAo7I2LOyDsjYs7IOGEiuGFo+GHgjsg7I2LOyDhhIrhhaPhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFICitDMzRDO0MzNEM7MTEwQSAxMTY0O0MzNEM7MTEwQSAxMTY0OyAjICjsjYw7IOyNjDsg4YSK4YWkOyDsjYw7IOGEiuGFpDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZQUUKK0MzNEQ7QzM0RDsxMTBBIDExNjQgMTFBODtDMzREOzExMEEgMTE2NCAxMUE4OyAjICjsjY07IOyNjTsg4YSK4YWk4YaoOyDsjY07IOGEiuGFpOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZQUVHCitDMzRFO0MzNEU7MTEwQSAxMTY0IDExQTk7QzM0RTsxMTBBIDExNjQgMTFBOTsgIyAo7I2OOyDsjY47IOGEiuGFpOGGqTsg7I2OOyDhhIrhhaThhqk7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFFR0cKK0MzNEY7QzM0RjsxMTBBIDExNjQgMTFBQTtDMzRGOzExMEEgMTE2NCAxMUFBOyAjICjsjY87IOyNjzsg4YSK4YWk4YaqOyDsjY87IOGEiuGFpOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZQUVHUworQzM1MDtDMzUwOzExMEEgMTE2NCAxMUFCO0MzNTA7MTEwQSAxMTY0IDExQUI7ICMgKOyNkDsg7I2QOyDhhIrhhaThhqs7IOyNkDsg4YSK4YWk4YarOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lBRU4KK0MzNTE7QzM1MTsxMTBBIDExNjQgMTFBQztDMzUxOzExMEEgMTE2NCAxMUFDOyAjICjsjZE7IOyNkTsg4YSK4YWk4YasOyDsjZE7IOGEiuGFpOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZQUVOSgorQzM1MjtDMzUyOzExMEEgMTE2NCAxMUFEO0MzNTI7MTEwQSAxMTY0IDExQUQ7ICMgKOyNkjsg7I2SOyDhhIrhhaThhq07IOyNkjsg4YSK4YWk4YatOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lBRU5ICitDMzUzO0MzNTM7MTEwQSAxMTY0IDExQUU7QzM1MzsxMTBBIDExNjQgMTFBRTsgIyAo7I2TOyDsjZM7IOGEiuGFpOGGrjsg7I2TOyDhhIrhhaThhq47ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFFRAorQzM1NDtDMzU0OzExMEEgMTE2NCAxMUFGO0MzNTQ7MTEwQSAxMTY0IDExQUY7ICMgKOyNlDsg7I2UOyDhhIrhhaThhq87IOyNlDsg4YSK4YWk4YavOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lBRUwKK0MzNTU7QzM1NTsxMTBBIDExNjQgMTFCMDtDMzU1OzExMEEgMTE2NCAxMUIwOyAjICjsjZU7IOyNlTsg4YSK4YWk4YawOyDsjZU7IOGEiuGFpOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZQUVMRworQzM1NjtDMzU2OzExMEEgMTE2NCAxMUIxO0MzNTY7MTEwQSAxMTY0IDExQjE7ICMgKOyNljsg7I2WOyDhhIrhhaThhrE7IOyNljsg4YSK4YWk4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lBRUxNCitDMzU3O0MzNTc7MTEwQSAxMTY0IDExQjI7QzM1NzsxMTBBIDExNjQgMTFCMjsgIyAo7I2XOyDsjZc7IOGEiuGFpOGGsjsg7I2XOyDhhIrhhaThhrI7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFFTEIKK0MzNTg7QzM1ODsxMTBBIDExNjQgMTFCMztDMzU4OzExMEEgMTE2NCAxMUIzOyAjICjsjZg7IOyNmDsg4YSK4YWk4YazOyDsjZg7IOGEiuGFpOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZQUVMUworQzM1OTtDMzU5OzExMEEgMTE2NCAxMUI0O0MzNTk7MTEwQSAxMTY0IDExQjQ7ICMgKOyNmTsg7I2ZOyDhhIrhhaThhrQ7IOyNmTsg4YSK4YWk4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lBRUxUCitDMzVBO0MzNUE7MTEwQSAxMTY0IDExQjU7QzM1QTsxMTBBIDExNjQgMTFCNTsgIyAo7I2aOyDsjZo7IOGEiuGFpOGGtTsg7I2aOyDhhIrhhaThhrU7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFFTFAKK0MzNUI7QzM1QjsxMTBBIDExNjQgMTFCNjtDMzVCOzExMEEgMTE2NCAxMUI2OyAjICjsjZs7IOyNmzsg4YSK4YWk4Ya2OyDsjZs7IOGEiuGFpOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZQUVMSAorQzM1QztDMzVDOzExMEEgMTE2NCAxMUI3O0MzNUM7MTEwQSAxMTY0IDExQjc7ICMgKOyNnDsg7I2cOyDhhIrhhaThhrc7IOyNnDsg4YSK4YWk4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lBRU0KK0MzNUQ7QzM1RDsxMTBBIDExNjQgMTFCODtDMzVEOzExMEEgMTE2NCAxMUI4OyAjICjsjZ07IOyNnTsg4YSK4YWk4Ya4OyDsjZ07IOGEiuGFpOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZQUVCCitDMzVFO0MzNUU7MTEwQSAxMTY0IDExQjk7QzM1RTsxMTBBIDExNjQgMTFCOTsgIyAo7I2eOyDsjZ47IOGEiuGFpOGGuTsg7I2eOyDhhIrhhaThhrk7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFFQlMKK0MzNUY7QzM1RjsxMTBBIDExNjQgMTFCQTtDMzVGOzExMEEgMTE2NCAxMUJBOyAjICjsjZ87IOyNnzsg4YSK4YWk4Ya6OyDsjZ87IOGEiuGFpOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZQUVTCitDMzYwO0MzNjA7MTEwQSAxMTY0IDExQkI7QzM2MDsxMTBBIDExNjQgMTFCQjsgIyAo7I2gOyDsjaA7IOGEiuGFpOGGuzsg7I2gOyDhhIrhhaThhrs7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFFU1MKK0MzNjE7QzM2MTsxMTBBIDExNjQgMTFCQztDMzYxOzExMEEgMTE2NCAxMUJDOyAjICjsjaE7IOyNoTsg4YSK4YWk4Ya8OyDsjaE7IOGEiuGFpOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZQUVORworQzM2MjtDMzYyOzExMEEgMTE2NCAxMUJEO0MzNjI7MTEwQSAxMTY0IDExQkQ7ICMgKOyNojsg7I2iOyDhhIrhhaThhr07IOyNojsg4YSK4YWk4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lBRUoKK0MzNjM7QzM2MzsxMTBBIDExNjQgMTFCRTtDMzYzOzExMEEgMTE2NCAxMUJFOyAjICjsjaM7IOyNozsg4YSK4YWk4Ya+OyDsjaM7IOGEiuGFpOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZQUVDCitDMzY0O0MzNjQ7MTEwQSAxMTY0IDExQkY7QzM2NDsxMTBBIDExNjQgMTFCRjsgIyAo7I2kOyDsjaQ7IOGEiuGFpOGGvzsg7I2kOyDhhIrhhaThhr87ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFFSworQzM2NTtDMzY1OzExMEEgMTE2NCAxMUMwO0MzNjU7MTEwQSAxMTY0IDExQzA7ICMgKOyNpTsg7I2lOyDhhIrhhaThh4A7IOyNpTsg4YSK4YWk4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lBRVQKK0MzNjY7QzM2NjsxMTBBIDExNjQgMTFDMTtDMzY2OzExMEEgMTE2NCAxMUMxOyAjICjsjaY7IOyNpjsg4YSK4YWk4YeBOyDsjaY7IOGEiuGFpOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZQUVQCitDMzY3O0MzNjc7MTEwQSAxMTY0IDExQzI7QzM2NzsxMTBBIDExNjQgMTFDMjsgIyAo7I2nOyDsjac7IOGEiuGFpOGHgjsg7I2nOyDhhIrhhaThh4I7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUFFSAorQzM2ODtDMzY4OzExMEEgMTE2NTtDMzY4OzExMEEgMTE2NTsgIyAo7I2oOyDsjag7IOGEiuGFpTsg7I2oOyDhhIrhhaU7ICkgSEFOR1VMIFNZTExBQkxFIFNTRU8KK0MzNjk7QzM2OTsxMTBBIDExNjUgMTFBODtDMzY5OzExMEEgMTE2NSAxMUE4OyAjICjsjak7IOyNqTsg4YSK4YWl4YaoOyDsjak7IOGEiuGFpeGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NFT0cKK0MzNkE7QzM2QTsxMTBBIDExNjUgMTFBOTtDMzZBOzExMEEgMTE2NSAxMUE5OyAjICjsjao7IOyNqjsg4YSK4YWl4YapOyDsjao7IOGEiuGFpeGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NFT0dHCitDMzZCO0MzNkI7MTEwQSAxMTY1IDExQUE7QzM2QjsxMTBBIDExNjUgMTFBQTsgIyAo7I2rOyDsjas7IOGEiuGFpeGGqjsg7I2rOyDhhIrhhaXhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNTRU9HUworQzM2QztDMzZDOzExMEEgMTE2NSAxMUFCO0MzNkM7MTEwQSAxMTY1IDExQUI7ICMgKOyNrDsg7I2sOyDhhIrhhaXhhqs7IOyNrDsg4YSK4YWl4YarOyApIEhBTkdVTCBTWUxMQUJMRSBTU0VPTgorQzM2RDtDMzZEOzExMEEgMTE2NSAxMUFDO0MzNkQ7MTEwQSAxMTY1IDExQUM7ICMgKOyNrTsg7I2tOyDhhIrhhaXhhqw7IOyNrTsg4YSK4YWl4YasOyApIEhBTkdVTCBTWUxMQUJMRSBTU0VPTkoKK0MzNkU7QzM2RTsxMTBBIDExNjUgMTFBRDtDMzZFOzExMEEgMTE2NSAxMUFEOyAjICjsja47IOyNrjsg4YSK4YWl4YatOyDsja47IOGEiuGFpeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NFT05ICitDMzZGO0MzNkY7MTEwQSAxMTY1IDExQUU7QzM2RjsxMTBBIDExNjUgMTFBRTsgIyAo7I2vOyDsja87IOGEiuGFpeGGrjsg7I2vOyDhhIrhhaXhhq47ICkgSEFOR1VMIFNZTExBQkxFIFNTRU9ECitDMzcwO0MzNzA7MTEwQSAxMTY1IDExQUY7QzM3MDsxMTBBIDExNjUgMTFBRjsgIyAo7I2wOyDsjbA7IOGEiuGFpeGGrzsg7I2wOyDhhIrhhaXhhq87ICkgSEFOR1VMIFNZTExBQkxFIFNTRU9MCitDMzcxO0MzNzE7MTEwQSAxMTY1IDExQjA7QzM3MTsxMTBBIDExNjUgMTFCMDsgIyAo7I2xOyDsjbE7IOGEiuGFpeGGsDsg7I2xOyDhhIrhhaXhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNTRU9MRworQzM3MjtDMzcyOzExMEEgMTE2NSAxMUIxO0MzNzI7MTEwQSAxMTY1IDExQjE7ICMgKOyNsjsg7I2yOyDhhIrhhaXhhrE7IOyNsjsg4YSK4YWl4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTU0VPTE0KK0MzNzM7QzM3MzsxMTBBIDExNjUgMTFCMjtDMzczOzExMEEgMTE2NSAxMUIyOyAjICjsjbM7IOyNszsg4YSK4YWl4YayOyDsjbM7IOGEiuGFpeGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NFT0xCCitDMzc0O0MzNzQ7MTEwQSAxMTY1IDExQjM7QzM3NDsxMTBBIDExNjUgMTFCMzsgIyAo7I20OyDsjbQ7IOGEiuGFpeGGszsg7I20OyDhhIrhhaXhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNTRU9MUworQzM3NTtDMzc1OzExMEEgMTE2NSAxMUI0O0MzNzU7MTEwQSAxMTY1IDExQjQ7ICMgKOyNtTsg7I21OyDhhIrhhaXhhrQ7IOyNtTsg4YSK4YWl4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTU0VPTFQKK0MzNzY7QzM3NjsxMTBBIDExNjUgMTFCNTtDMzc2OzExMEEgMTE2NSAxMUI1OyAjICjsjbY7IOyNtjsg4YSK4YWl4Ya1OyDsjbY7IOGEiuGFpeGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NFT0xQCitDMzc3O0MzNzc7MTEwQSAxMTY1IDExQjY7QzM3NzsxMTBBIDExNjUgMTFCNjsgIyAo7I23OyDsjbc7IOGEiuGFpeGGtjsg7I23OyDhhIrhhaXhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNTRU9MSAorQzM3ODtDMzc4OzExMEEgMTE2NSAxMUI3O0MzNzg7MTEwQSAxMTY1IDExQjc7ICMgKOyNuDsg7I24OyDhhIrhhaXhhrc7IOyNuDsg4YSK4YWl4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTU0VPTQorQzM3OTtDMzc5OzExMEEgMTE2NSAxMUI4O0MzNzk7MTEwQSAxMTY1IDExQjg7ICMgKOyNuTsg7I25OyDhhIrhhaXhhrg7IOyNuTsg4YSK4YWl4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBTU0VPQgorQzM3QTtDMzdBOzExMEEgMTE2NSAxMUI5O0MzN0E7MTEwQSAxMTY1IDExQjk7ICMgKOyNujsg7I26OyDhhIrhhaXhhrk7IOyNujsg4YSK4YWl4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTU0VPQlMKK0MzN0I7QzM3QjsxMTBBIDExNjUgMTFCQTtDMzdCOzExMEEgMTE2NSAxMUJBOyAjICjsjbs7IOyNuzsg4YSK4YWl4Ya6OyDsjbs7IOGEiuGFpeGGujsgKSBIQU5HVUwgU1lMTEFCTEUgU1NFT1MKK0MzN0M7QzM3QzsxMTBBIDExNjUgMTFCQjtDMzdDOzExMEEgMTE2NSAxMUJCOyAjICjsjbw7IOyNvDsg4YSK4YWl4Ya7OyDsjbw7IOGEiuGFpeGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgU1NFT1NTCitDMzdEO0MzN0Q7MTEwQSAxMTY1IDExQkM7QzM3RDsxMTBBIDExNjUgMTFCQzsgIyAo7I29OyDsjb07IOGEiuGFpeGGvDsg7I29OyDhhIrhhaXhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNTRU9ORworQzM3RTtDMzdFOzExMEEgMTE2NSAxMUJEO0MzN0U7MTEwQSAxMTY1IDExQkQ7ICMgKOyNvjsg7I2+OyDhhIrhhaXhhr07IOyNvjsg4YSK4YWl4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTU0VPSgorQzM3RjtDMzdGOzExMEEgMTE2NSAxMUJFO0MzN0Y7MTEwQSAxMTY1IDExQkU7ICMgKOyNvzsg7I2/OyDhhIrhhaXhhr47IOyNvzsg4YSK4YWl4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBTU0VPQworQzM4MDtDMzgwOzExMEEgMTE2NSAxMUJGO0MzODA7MTEwQSAxMTY1IDExQkY7ICMgKOyOgDsg7I6AOyDhhIrhhaXhhr87IOyOgDsg4YSK4YWl4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTU0VPSworQzM4MTtDMzgxOzExMEEgMTE2NSAxMUMwO0MzODE7MTEwQSAxMTY1IDExQzA7ICMgKOyOgTsg7I6BOyDhhIrhhaXhh4A7IOyOgTsg4YSK4YWl4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTU0VPVAorQzM4MjtDMzgyOzExMEEgMTE2NSAxMUMxO0MzODI7MTEwQSAxMTY1IDExQzE7ICMgKOyOgjsg7I6COyDhhIrhhaXhh4E7IOyOgjsg4YSK4YWl4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBTU0VPUAorQzM4MztDMzgzOzExMEEgMTE2NSAxMUMyO0MzODM7MTEwQSAxMTY1IDExQzI7ICMgKOyOgzsg7I6DOyDhhIrhhaXhh4I7IOyOgzsg4YSK4YWl4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTU0VPSAorQzM4NDtDMzg0OzExMEEgMTE2NjtDMzg0OzExMEEgMTE2NjsgIyAo7I6EOyDsjoQ7IOGEiuGFpjsg7I6EOyDhhIrhhaY7ICkgSEFOR1VMIFNZTExBQkxFIFNTRQorQzM4NTtDMzg1OzExMEEgMTE2NiAxMUE4O0MzODU7MTEwQSAxMTY2IDExQTg7ICMgKOyOhTsg7I6FOyDhhIrhhabhhqg7IOyOhTsg4YSK4YWm4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBTU0VHCitDMzg2O0MzODY7MTEwQSAxMTY2IDExQTk7QzM4NjsxMTBBIDExNjYgMTFBOTsgIyAo7I6GOyDsjoY7IOGEiuGFpuGGqTsg7I6GOyDhhIrhhabhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFNTRUdHCitDMzg3O0MzODc7MTEwQSAxMTY2IDExQUE7QzM4NzsxMTBBIDExNjYgMTFBQTsgIyAo7I6HOyDsjoc7IOGEiuGFpuGGqjsg7I6HOyDhhIrhhabhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNTRUdTCitDMzg4O0MzODg7MTEwQSAxMTY2IDExQUI7QzM4ODsxMTBBIDExNjYgMTFBQjsgIyAo7I6IOyDsjog7IOGEiuGFpuGGqzsg7I6IOyDhhIrhhabhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFNTRU4KK0MzODk7QzM4OTsxMTBBIDExNjYgMTFBQztDMzg5OzExMEEgMTE2NiAxMUFDOyAjICjsjok7IOyOiTsg4YSK4YWm4YasOyDsjok7IOGEiuGFpuGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NFTkoKK0MzOEE7QzM4QTsxMTBBIDExNjYgMTFBRDtDMzhBOzExMEEgMTE2NiAxMUFEOyAjICjsjoo7IOyOijsg4YSK4YWm4YatOyDsjoo7IOGEiuGFpuGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NFTkgKK0MzOEI7QzM4QjsxMTBBIDExNjYgMTFBRTtDMzhCOzExMEEgMTE2NiAxMUFFOyAjICjsjos7IOyOizsg4YSK4YWm4YauOyDsjos7IOGEiuGFpuGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NFRAorQzM4QztDMzhDOzExMEEgMTE2NiAxMUFGO0MzOEM7MTEwQSAxMTY2IDExQUY7ICMgKOyOjDsg7I6MOyDhhIrhhabhhq87IOyOjDsg4YSK4YWm4YavOyApIEhBTkdVTCBTWUxMQUJMRSBTU0VMCitDMzhEO0MzOEQ7MTEwQSAxMTY2IDExQjA7QzM4RDsxMTBBIDExNjYgMTFCMDsgIyAo7I6NOyDsjo07IOGEiuGFpuGGsDsg7I6NOyDhhIrhhabhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNTRUxHCitDMzhFO0MzOEU7MTEwQSAxMTY2IDExQjE7QzM4RTsxMTBBIDExNjYgMTFCMTsgIyAo7I6OOyDsjo47IOGEiuGFpuGGsTsg7I6OOyDhhIrhhabhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFNTRUxNCitDMzhGO0MzOEY7MTEwQSAxMTY2IDExQjI7QzM4RjsxMTBBIDExNjYgMTFCMjsgIyAo7I6POyDsjo87IOGEiuGFpuGGsjsg7I6POyDhhIrhhabhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFNTRUxCCitDMzkwO0MzOTA7MTEwQSAxMTY2IDExQjM7QzM5MDsxMTBBIDExNjYgMTFCMzsgIyAo7I6QOyDsjpA7IOGEiuGFpuGGszsg7I6QOyDhhIrhhabhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNTRUxTCitDMzkxO0MzOTE7MTEwQSAxMTY2IDExQjQ7QzM5MTsxMTBBIDExNjYgMTFCNDsgIyAo7I6ROyDsjpE7IOGEiuGFpuGGtDsg7I6ROyDhhIrhhabhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFNTRUxUCitDMzkyO0MzOTI7MTEwQSAxMTY2IDExQjU7QzM5MjsxMTBBIDExNjYgMTFCNTsgIyAo7I6SOyDsjpI7IOGEiuGFpuGGtTsg7I6SOyDhhIrhhabhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFNTRUxQCitDMzkzO0MzOTM7MTEwQSAxMTY2IDExQjY7QzM5MzsxMTBBIDExNjYgMTFCNjsgIyAo7I6TOyDsjpM7IOGEiuGFpuGGtjsg7I6TOyDhhIrhhabhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNTRUxICitDMzk0O0MzOTQ7MTEwQSAxMTY2IDExQjc7QzM5NDsxMTBBIDExNjYgMTFCNzsgIyAo7I6UOyDsjpQ7IOGEiuGFpuGGtzsg7I6UOyDhhIrhhabhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFNTRU0KK0MzOTU7QzM5NTsxMTBBIDExNjYgMTFCODtDMzk1OzExMEEgMTE2NiAxMUI4OyAjICjsjpU7IOyOlTsg4YSK4YWm4Ya4OyDsjpU7IOGEiuGFpuGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NFQgorQzM5NjtDMzk2OzExMEEgMTE2NiAxMUI5O0MzOTY7MTEwQSAxMTY2IDExQjk7ICMgKOyOljsg7I6WOyDhhIrhhabhhrk7IOyOljsg4YSK4YWm4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTU0VCUworQzM5NztDMzk3OzExMEEgMTE2NiAxMUJBO0MzOTc7MTEwQSAxMTY2IDExQkE7ICMgKOyOlzsg7I6XOyDhhIrhhabhhro7IOyOlzsg4YSK4YWm4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBTU0VTCitDMzk4O0MzOTg7MTEwQSAxMTY2IDExQkI7QzM5ODsxMTBBIDExNjYgMTFCQjsgIyAo7I6YOyDsjpg7IOGEiuGFpuGGuzsg7I6YOyDhhIrhhabhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFNTRVNTCitDMzk5O0MzOTk7MTEwQSAxMTY2IDExQkM7QzM5OTsxMTBBIDExNjYgMTFCQzsgIyAo7I6ZOyDsjpk7IOGEiuGFpuGGvDsg7I6ZOyDhhIrhhabhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNTRU5HCitDMzlBO0MzOUE7MTEwQSAxMTY2IDExQkQ7QzM5QTsxMTBBIDExNjYgMTFCRDsgIyAo7I6aOyDsjpo7IOGEiuGFpuGGvTsg7I6aOyDhhIrhhabhhr07ICkgSEFOR1VMIFNZTExBQkxFIFNTRUoKK0MzOUI7QzM5QjsxMTBBIDExNjYgMTFCRTtDMzlCOzExMEEgMTE2NiAxMUJFOyAjICjsjps7IOyOmzsg4YSK4YWm4Ya+OyDsjps7IOGEiuGFpuGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NFQworQzM5QztDMzlDOzExMEEgMTE2NiAxMUJGO0MzOUM7MTEwQSAxMTY2IDExQkY7ICMgKOyOnDsg7I6cOyDhhIrhhabhhr87IOyOnDsg4YSK4YWm4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTU0VLCitDMzlEO0MzOUQ7MTEwQSAxMTY2IDExQzA7QzM5RDsxMTBBIDExNjYgMTFDMDsgIyAo7I6dOyDsjp07IOGEiuGFpuGHgDsg7I6dOyDhhIrhhabhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFNTRVQKK0MzOUU7QzM5RTsxMTBBIDExNjYgMTFDMTtDMzlFOzExMEEgMTE2NiAxMUMxOyAjICjsjp47IOyOnjsg4YSK4YWm4YeBOyDsjp47IOGEiuGFpuGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NFUAorQzM5RjtDMzlGOzExMEEgMTE2NiAxMUMyO0MzOUY7MTEwQSAxMTY2IDExQzI7ICMgKOyOnzsg7I6fOyDhhIrhhabhh4I7IOyOnzsg4YSK4YWm4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTU0VICitDM0EwO0MzQTA7MTEwQSAxMTY3O0MzQTA7MTEwQSAxMTY3OyAjICjsjqA7IOyOoDsg4YSK4YWnOyDsjqA7IOGEiuGFpzsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZRU8KK0MzQTE7QzNBMTsxMTBBIDExNjcgMTFBODtDM0ExOzExMEEgMTE2NyAxMUE4OyAjICjsjqE7IOyOoTsg4YSK4YWn4YaoOyDsjqE7IOGEiuGFp+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZRU9HCitDM0EyO0MzQTI7MTEwQSAxMTY3IDExQTk7QzNBMjsxMTBBIDExNjcgMTFBOTsgIyAo7I6iOyDsjqI7IOGEiuGFp+GGqTsg7I6iOyDhhIrhhafhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUVPR0cKK0MzQTM7QzNBMzsxMTBBIDExNjcgMTFBQTtDM0EzOzExMEEgMTE2NyAxMUFBOyAjICjsjqM7IOyOozsg4YSK4YWn4YaqOyDsjqM7IOGEiuGFp+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZRU9HUworQzNBNDtDM0E0OzExMEEgMTE2NyAxMUFCO0MzQTQ7MTEwQSAxMTY3IDExQUI7ICMgKOyOpDsg7I6kOyDhhIrhhafhhqs7IOyOpDsg4YSK4YWn4YarOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFT04KK0MzQTU7QzNBNTsxMTBBIDExNjcgMTFBQztDM0E1OzExMEEgMTE2NyAxMUFDOyAjICjsjqU7IOyOpTsg4YSK4YWn4YasOyDsjqU7IOGEiuGFp+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZRU9OSgorQzNBNjtDM0E2OzExMEEgMTE2NyAxMUFEO0MzQTY7MTEwQSAxMTY3IDExQUQ7ICMgKOyOpjsg7I6mOyDhhIrhhafhhq07IOyOpjsg4YSK4YWn4YatOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFT05ICitDM0E3O0MzQTc7MTEwQSAxMTY3IDExQUU7QzNBNzsxMTBBIDExNjcgMTFBRTsgIyAo7I6nOyDsjqc7IOGEiuGFp+GGrjsg7I6nOyDhhIrhhafhhq47ICkgSEFOR1VMIFNZTExBQkxFIFNTWUVPRAorQzNBODtDM0E4OzExMEEgMTE2NyAxMUFGO0MzQTg7MTEwQSAxMTY3IDExQUY7ICMgKOyOqDsg7I6oOyDhhIrhhafhhq87IOyOqDsg4YSK4YWn4YavOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFT0wKK0MzQTk7QzNBOTsxMTBBIDExNjcgMTFCMDtDM0E5OzExMEEgMTE2NyAxMUIwOyAjICjsjqk7IOyOqTsg4YSK4YWn4YawOyDsjqk7IOGEiuGFp+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZRU9MRworQzNBQTtDM0FBOzExMEEgMTE2NyAxMUIxO0MzQUE7MTEwQSAxMTY3IDExQjE7ICMgKOyOqjsg7I6qOyDhhIrhhafhhrE7IOyOqjsg4YSK4YWn4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFT0xNCitDM0FCO0MzQUI7MTEwQSAxMTY3IDExQjI7QzNBQjsxMTBBIDExNjcgMTFCMjsgIyAo7I6rOyDsjqs7IOGEiuGFp+GGsjsg7I6rOyDhhIrhhafhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUVPTEIKK0MzQUM7QzNBQzsxMTBBIDExNjcgMTFCMztDM0FDOzExMEEgMTE2NyAxMUIzOyAjICjsjqw7IOyOrDsg4YSK4YWn4YazOyDsjqw7IOGEiuGFp+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZRU9MUworQzNBRDtDM0FEOzExMEEgMTE2NyAxMUI0O0MzQUQ7MTEwQSAxMTY3IDExQjQ7ICMgKOyOrTsg7I6tOyDhhIrhhafhhrQ7IOyOrTsg4YSK4YWn4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFT0xUCitDM0FFO0MzQUU7MTEwQSAxMTY3IDExQjU7QzNBRTsxMTBBIDExNjcgMTFCNTsgIyAo7I6uOyDsjq47IOGEiuGFp+GGtTsg7I6uOyDhhIrhhafhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUVPTFAKK0MzQUY7QzNBRjsxMTBBIDExNjcgMTFCNjtDM0FGOzExMEEgMTE2NyAxMUI2OyAjICjsjq87IOyOrzsg4YSK4YWn4Ya2OyDsjq87IOGEiuGFp+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZRU9MSAorQzNCMDtDM0IwOzExMEEgMTE2NyAxMUI3O0MzQjA7MTEwQSAxMTY3IDExQjc7ICMgKOyOsDsg7I6wOyDhhIrhhafhhrc7IOyOsDsg4YSK4YWn4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFT00KK0MzQjE7QzNCMTsxMTBBIDExNjcgMTFCODtDM0IxOzExMEEgMTE2NyAxMUI4OyAjICjsjrE7IOyOsTsg4YSK4YWn4Ya4OyDsjrE7IOGEiuGFp+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZRU9CCitDM0IyO0MzQjI7MTEwQSAxMTY3IDExQjk7QzNCMjsxMTBBIDExNjcgMTFCOTsgIyAo7I6yOyDsjrI7IOGEiuGFp+GGuTsg7I6yOyDhhIrhhafhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUVPQlMKK0MzQjM7QzNCMzsxMTBBIDExNjcgMTFCQTtDM0IzOzExMEEgMTE2NyAxMUJBOyAjICjsjrM7IOyOszsg4YSK4YWn4Ya6OyDsjrM7IOGEiuGFp+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZRU9TCitDM0I0O0MzQjQ7MTEwQSAxMTY3IDExQkI7QzNCNDsxMTBBIDExNjcgMTFCQjsgIyAo7I60OyDsjrQ7IOGEiuGFp+GGuzsg7I60OyDhhIrhhafhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUVPU1MKK0MzQjU7QzNCNTsxMTBBIDExNjcgMTFCQztDM0I1OzExMEEgMTE2NyAxMUJDOyAjICjsjrU7IOyOtTsg4YSK4YWn4Ya8OyDsjrU7IOGEiuGFp+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZRU9ORworQzNCNjtDM0I2OzExMEEgMTE2NyAxMUJEO0MzQjY7MTEwQSAxMTY3IDExQkQ7ICMgKOyOtjsg7I62OyDhhIrhhafhhr07IOyOtjsg4YSK4YWn4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFT0oKK0MzQjc7QzNCNzsxMTBBIDExNjcgMTFCRTtDM0I3OzExMEEgMTE2NyAxMUJFOyAjICjsjrc7IOyOtzsg4YSK4YWn4Ya+OyDsjrc7IOGEiuGFp+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZRU9DCitDM0I4O0MzQjg7MTEwQSAxMTY3IDExQkY7QzNCODsxMTBBIDExNjcgMTFCRjsgIyAo7I64OyDsjrg7IOGEiuGFp+GGvzsg7I64OyDhhIrhhafhhr87ICkgSEFOR1VMIFNZTExBQkxFIFNTWUVPSworQzNCOTtDM0I5OzExMEEgMTE2NyAxMUMwO0MzQjk7MTEwQSAxMTY3IDExQzA7ICMgKOyOuTsg7I65OyDhhIrhhafhh4A7IOyOuTsg4YSK4YWn4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFT1QKK0MzQkE7QzNCQTsxMTBBIDExNjcgMTFDMTtDM0JBOzExMEEgMTE2NyAxMUMxOyAjICjsjro7IOyOujsg4YSK4YWn4YeBOyDsjro7IOGEiuGFp+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZRU9QCitDM0JCO0MzQkI7MTEwQSAxMTY3IDExQzI7QzNCQjsxMTBBIDExNjcgMTFDMjsgIyAo7I67OyDsjrs7IOGEiuGFp+GHgjsg7I67OyDhhIrhhafhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUVPSAorQzNCQztDM0JDOzExMEEgMTE2ODtDM0JDOzExMEEgMTE2ODsgIyAo7I68OyDsjrw7IOGEiuGFqDsg7I68OyDhhIrhhag7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUUKK0MzQkQ7QzNCRDsxMTBBIDExNjggMTFBODtDM0JEOzExMEEgMTE2OCAxMUE4OyAjICjsjr07IOyOvTsg4YSK4YWo4YaoOyDsjr07IOGEiuGFqOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZRUcKK0MzQkU7QzNCRTsxMTBBIDExNjggMTFBOTtDM0JFOzExMEEgMTE2OCAxMUE5OyAjICjsjr47IOyOvjsg4YSK4YWo4YapOyDsjr47IOGEiuGFqOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZRUdHCitDM0JGO0MzQkY7MTEwQSAxMTY4IDExQUE7QzNCRjsxMTBBIDExNjggMTFBQTsgIyAo7I6/OyDsjr87IOGEiuGFqOGGqjsg7I6/OyDhhIrhhajhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUVHUworQzNDMDtDM0MwOzExMEEgMTE2OCAxMUFCO0MzQzA7MTEwQSAxMTY4IDExQUI7ICMgKOyPgDsg7I+AOyDhhIrhhajhhqs7IOyPgDsg4YSK4YWo4YarOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFTgorQzNDMTtDM0MxOzExMEEgMTE2OCAxMUFDO0MzQzE7MTEwQSAxMTY4IDExQUM7ICMgKOyPgTsg7I+BOyDhhIrhhajhhqw7IOyPgTsg4YSK4YWo4YasOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFTkoKK0MzQzI7QzNDMjsxMTBBIDExNjggMTFBRDtDM0MyOzExMEEgMTE2OCAxMUFEOyAjICjsj4I7IOyPgjsg4YSK4YWo4YatOyDsj4I7IOGEiuGFqOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZRU5ICitDM0MzO0MzQzM7MTEwQSAxMTY4IDExQUU7QzNDMzsxMTBBIDExNjggMTFBRTsgIyAo7I+DOyDsj4M7IOGEiuGFqOGGrjsg7I+DOyDhhIrhhajhhq47ICkgSEFOR1VMIFNZTExBQkxFIFNTWUVECitDM0M0O0MzQzQ7MTEwQSAxMTY4IDExQUY7QzNDNDsxMTBBIDExNjggMTFBRjsgIyAo7I+EOyDsj4Q7IOGEiuGFqOGGrzsg7I+EOyDhhIrhhajhhq87ICkgSEFOR1VMIFNZTExBQkxFIFNTWUVMCitDM0M1O0MzQzU7MTEwQSAxMTY4IDExQjA7QzNDNTsxMTBBIDExNjggMTFCMDsgIyAo7I+FOyDsj4U7IOGEiuGFqOGGsDsg7I+FOyDhhIrhhajhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUVMRworQzNDNjtDM0M2OzExMEEgMTE2OCAxMUIxO0MzQzY7MTEwQSAxMTY4IDExQjE7ICMgKOyPhjsg7I+GOyDhhIrhhajhhrE7IOyPhjsg4YSK4YWo4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFTE0KK0MzQzc7QzNDNzsxMTBBIDExNjggMTFCMjtDM0M3OzExMEEgMTE2OCAxMUIyOyAjICjsj4c7IOyPhzsg4YSK4YWo4YayOyDsj4c7IOGEiuGFqOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZRUxCCitDM0M4O0MzQzg7MTEwQSAxMTY4IDExQjM7QzNDODsxMTBBIDExNjggMTFCMzsgIyAo7I+IOyDsj4g7IOGEiuGFqOGGszsg7I+IOyDhhIrhhajhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUVMUworQzNDOTtDM0M5OzExMEEgMTE2OCAxMUI0O0MzQzk7MTEwQSAxMTY4IDExQjQ7ICMgKOyPiTsg7I+JOyDhhIrhhajhhrQ7IOyPiTsg4YSK4YWo4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFTFQKK0MzQ0E7QzNDQTsxMTBBIDExNjggMTFCNTtDM0NBOzExMEEgMTE2OCAxMUI1OyAjICjsj4o7IOyPijsg4YSK4YWo4Ya1OyDsj4o7IOGEiuGFqOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZRUxQCitDM0NCO0MzQ0I7MTEwQSAxMTY4IDExQjY7QzNDQjsxMTBBIDExNjggMTFCNjsgIyAo7I+LOyDsj4s7IOGEiuGFqOGGtjsg7I+LOyDhhIrhhajhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUVMSAorQzNDQztDM0NDOzExMEEgMTE2OCAxMUI3O0MzQ0M7MTEwQSAxMTY4IDExQjc7ICMgKOyPjDsg7I+MOyDhhIrhhajhhrc7IOyPjDsg4YSK4YWo4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFTQorQzNDRDtDM0NEOzExMEEgMTE2OCAxMUI4O0MzQ0Q7MTEwQSAxMTY4IDExQjg7ICMgKOyPjTsg7I+NOyDhhIrhhajhhrg7IOyPjTsg4YSK4YWo4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFQgorQzNDRTtDM0NFOzExMEEgMTE2OCAxMUI5O0MzQ0U7MTEwQSAxMTY4IDExQjk7ICMgKOyPjjsg7I+OOyDhhIrhhajhhrk7IOyPjjsg4YSK4YWo4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFQlMKK0MzQ0Y7QzNDRjsxMTBBIDExNjggMTFCQTtDM0NGOzExMEEgMTE2OCAxMUJBOyAjICjsj487IOyPjzsg4YSK4YWo4Ya6OyDsj487IOGEiuGFqOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZRVMKK0MzRDA7QzNEMDsxMTBBIDExNjggMTFCQjtDM0QwOzExMEEgMTE2OCAxMUJCOyAjICjsj5A7IOyPkDsg4YSK4YWo4Ya7OyDsj5A7IOGEiuGFqOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZRVNTCitDM0QxO0MzRDE7MTEwQSAxMTY4IDExQkM7QzNEMTsxMTBBIDExNjggMTFCQzsgIyAo7I+ROyDsj5E7IOGEiuGFqOGGvDsg7I+ROyDhhIrhhajhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUVORworQzNEMjtDM0QyOzExMEEgMTE2OCAxMUJEO0MzRDI7MTEwQSAxMTY4IDExQkQ7ICMgKOyPkjsg7I+SOyDhhIrhhajhhr07IOyPkjsg4YSK4YWo4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFSgorQzNEMztDM0QzOzExMEEgMTE2OCAxMUJFO0MzRDM7MTEwQSAxMTY4IDExQkU7ICMgKOyPkzsg7I+TOyDhhIrhhajhhr47IOyPkzsg4YSK4YWo4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFQworQzNENDtDM0Q0OzExMEEgMTE2OCAxMUJGO0MzRDQ7MTEwQSAxMTY4IDExQkY7ICMgKOyPlDsg7I+UOyDhhIrhhajhhr87IOyPlDsg4YSK4YWo4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFSworQzNENTtDM0Q1OzExMEEgMTE2OCAxMUMwO0MzRDU7MTEwQSAxMTY4IDExQzA7ICMgKOyPlTsg7I+VOyDhhIrhhajhh4A7IOyPlTsg4YSK4YWo4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFVAorQzNENjtDM0Q2OzExMEEgMTE2OCAxMUMxO0MzRDY7MTEwQSAxMTY4IDExQzE7ICMgKOyPljsg7I+WOyDhhIrhhajhh4E7IOyPljsg4YSK4YWo4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFUAorQzNENztDM0Q3OzExMEEgMTE2OCAxMUMyO0MzRDc7MTEwQSAxMTY4IDExQzI7ICMgKOyPlzsg7I+XOyDhhIrhhajhh4I7IOyPlzsg4YSK4YWo4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lFSAorQzNEODtDM0Q4OzExMEEgMTE2OTtDM0Q4OzExMEEgMTE2OTsgIyAo7I+YOyDsj5g7IOGEiuGFqTsg7I+YOyDhhIrhhak7ICkgSEFOR1VMIFNZTExBQkxFIFNTTworQzNEOTtDM0Q5OzExMEEgMTE2OSAxMUE4O0MzRDk7MTEwQSAxMTY5IDExQTg7ICMgKOyPmTsg7I+ZOyDhhIrhhanhhqg7IOyPmTsg4YSK4YWp4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBTU09HCitDM0RBO0MzREE7MTEwQSAxMTY5IDExQTk7QzNEQTsxMTBBIDExNjkgMTFBOTsgIyAo7I+aOyDsj5o7IOGEiuGFqeGGqTsg7I+aOyDhhIrhhanhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFNTT0dHCitDM0RCO0MzREI7MTEwQSAxMTY5IDExQUE7QzNEQjsxMTBBIDExNjkgMTFBQTsgIyAo7I+bOyDsj5s7IOGEiuGFqeGGqjsg7I+bOyDhhIrhhanhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNTT0dTCitDM0RDO0MzREM7MTEwQSAxMTY5IDExQUI7QzNEQzsxMTBBIDExNjkgMTFBQjsgIyAo7I+cOyDsj5w7IOGEiuGFqeGGqzsg7I+cOyDhhIrhhanhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFNTT04KK0MzREQ7QzNERDsxMTBBIDExNjkgMTFBQztDM0REOzExMEEgMTE2OSAxMUFDOyAjICjsj507IOyPnTsg4YSK4YWp4YasOyDsj507IOGEiuGFqeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NPTkoKK0MzREU7QzNERTsxMTBBIDExNjkgMTFBRDtDM0RFOzExMEEgMTE2OSAxMUFEOyAjICjsj547IOyPnjsg4YSK4YWp4YatOyDsj547IOGEiuGFqeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NPTkgKK0MzREY7QzNERjsxMTBBIDExNjkgMTFBRTtDM0RGOzExMEEgMTE2OSAxMUFFOyAjICjsj587IOyPnzsg4YSK4YWp4YauOyDsj587IOGEiuGFqeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NPRAorQzNFMDtDM0UwOzExMEEgMTE2OSAxMUFGO0MzRTA7MTEwQSAxMTY5IDExQUY7ICMgKOyPoDsg7I+gOyDhhIrhhanhhq87IOyPoDsg4YSK4YWp4YavOyApIEhBTkdVTCBTWUxMQUJMRSBTU09MCitDM0UxO0MzRTE7MTEwQSAxMTY5IDExQjA7QzNFMTsxMTBBIDExNjkgMTFCMDsgIyAo7I+hOyDsj6E7IOGEiuGFqeGGsDsg7I+hOyDhhIrhhanhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNTT0xHCitDM0UyO0MzRTI7MTEwQSAxMTY5IDExQjE7QzNFMjsxMTBBIDExNjkgMTFCMTsgIyAo7I+iOyDsj6I7IOGEiuGFqeGGsTsg7I+iOyDhhIrhhanhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFNTT0xNCitDM0UzO0MzRTM7MTEwQSAxMTY5IDExQjI7QzNFMzsxMTBBIDExNjkgMTFCMjsgIyAo7I+jOyDsj6M7IOGEiuGFqeGGsjsg7I+jOyDhhIrhhanhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFNTT0xCCitDM0U0O0MzRTQ7MTEwQSAxMTY5IDExQjM7QzNFNDsxMTBBIDExNjkgMTFCMzsgIyAo7I+kOyDsj6Q7IOGEiuGFqeGGszsg7I+kOyDhhIrhhanhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNTT0xTCitDM0U1O0MzRTU7MTEwQSAxMTY5IDExQjQ7QzNFNTsxMTBBIDExNjkgMTFCNDsgIyAo7I+lOyDsj6U7IOGEiuGFqeGGtDsg7I+lOyDhhIrhhanhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFNTT0xUCitDM0U2O0MzRTY7MTEwQSAxMTY5IDExQjU7QzNFNjsxMTBBIDExNjkgMTFCNTsgIyAo7I+mOyDsj6Y7IOGEiuGFqeGGtTsg7I+mOyDhhIrhhanhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFNTT0xQCitDM0U3O0MzRTc7MTEwQSAxMTY5IDExQjY7QzNFNzsxMTBBIDExNjkgMTFCNjsgIyAo7I+nOyDsj6c7IOGEiuGFqeGGtjsg7I+nOyDhhIrhhanhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNTT0xICitDM0U4O0MzRTg7MTEwQSAxMTY5IDExQjc7QzNFODsxMTBBIDExNjkgMTFCNzsgIyAo7I+oOyDsj6g7IOGEiuGFqeGGtzsg7I+oOyDhhIrhhanhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFNTT00KK0MzRTk7QzNFOTsxMTBBIDExNjkgMTFCODtDM0U5OzExMEEgMTE2OSAxMUI4OyAjICjsj6k7IOyPqTsg4YSK4YWp4Ya4OyDsj6k7IOGEiuGFqeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NPQgorQzNFQTtDM0VBOzExMEEgMTE2OSAxMUI5O0MzRUE7MTEwQSAxMTY5IDExQjk7ICMgKOyPqjsg7I+qOyDhhIrhhanhhrk7IOyPqjsg4YSK4YWp4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTU09CUworQzNFQjtDM0VCOzExMEEgMTE2OSAxMUJBO0MzRUI7MTEwQSAxMTY5IDExQkE7ICMgKOyPqzsg7I+rOyDhhIrhhanhhro7IOyPqzsg4YSK4YWp4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBTU09TCitDM0VDO0MzRUM7MTEwQSAxMTY5IDExQkI7QzNFQzsxMTBBIDExNjkgMTFCQjsgIyAo7I+sOyDsj6w7IOGEiuGFqeGGuzsg7I+sOyDhhIrhhanhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFNTT1NTCitDM0VEO0MzRUQ7MTEwQSAxMTY5IDExQkM7QzNFRDsxMTBBIDExNjkgMTFCQzsgIyAo7I+tOyDsj607IOGEiuGFqeGGvDsg7I+tOyDhhIrhhanhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNTT05HCitDM0VFO0MzRUU7MTEwQSAxMTY5IDExQkQ7QzNFRTsxMTBBIDExNjkgMTFCRDsgIyAo7I+uOyDsj647IOGEiuGFqeGGvTsg7I+uOyDhhIrhhanhhr07ICkgSEFOR1VMIFNZTExBQkxFIFNTT0oKK0MzRUY7QzNFRjsxMTBBIDExNjkgMTFCRTtDM0VGOzExMEEgMTE2OSAxMUJFOyAjICjsj687IOyPrzsg4YSK4YWp4Ya+OyDsj687IOGEiuGFqeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NPQworQzNGMDtDM0YwOzExMEEgMTE2OSAxMUJGO0MzRjA7MTEwQSAxMTY5IDExQkY7ICMgKOyPsDsg7I+wOyDhhIrhhanhhr87IOyPsDsg4YSK4YWp4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTU09LCitDM0YxO0MzRjE7MTEwQSAxMTY5IDExQzA7QzNGMTsxMTBBIDExNjkgMTFDMDsgIyAo7I+xOyDsj7E7IOGEiuGFqeGHgDsg7I+xOyDhhIrhhanhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFNTT1QKK0MzRjI7QzNGMjsxMTBBIDExNjkgMTFDMTtDM0YyOzExMEEgMTE2OSAxMUMxOyAjICjsj7I7IOyPsjsg4YSK4YWp4YeBOyDsj7I7IOGEiuGFqeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NPUAorQzNGMztDM0YzOzExMEEgMTE2OSAxMUMyO0MzRjM7MTEwQSAxMTY5IDExQzI7ICMgKOyPszsg7I+zOyDhhIrhhanhh4I7IOyPszsg4YSK4YWp4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTU09ICitDM0Y0O0MzRjQ7MTEwQSAxMTZBO0MzRjQ7MTEwQSAxMTZBOyAjICjsj7Q7IOyPtDsg4YSK4YWqOyDsj7Q7IOGEiuGFqjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXQQorQzNGNTtDM0Y1OzExMEEgMTE2QSAxMUE4O0MzRjU7MTEwQSAxMTZBIDExQTg7ICMgKOyPtTsg7I+1OyDhhIrhharhhqg7IOyPtTsg4YSK4YWq4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dBRworQzNGNjtDM0Y2OzExMEEgMTE2QSAxMUE5O0MzRjY7MTEwQSAxMTZBIDExQTk7ICMgKOyPtjsg7I+2OyDhhIrhharhhqk7IOyPtjsg4YSK4YWq4YapOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dBR0cKK0MzRjc7QzNGNzsxMTBBIDExNkEgMTFBQTtDM0Y3OzExMEEgMTE2QSAxMUFBOyAjICjsj7c7IOyPtzsg4YSK4YWq4YaqOyDsj7c7IOGEiuGFquGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXQUdTCitDM0Y4O0MzRjg7MTEwQSAxMTZBIDExQUI7QzNGODsxMTBBIDExNkEgMTFBQjsgIyAo7I+4OyDsj7g7IOGEiuGFquGGqzsg7I+4OyDhhIrhharhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FOCitDM0Y5O0MzRjk7MTEwQSAxMTZBIDExQUM7QzNGOTsxMTBBIDExNkEgMTFBQzsgIyAo7I+5OyDsj7k7IOGEiuGFquGGrDsg7I+5OyDhhIrhharhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FOSgorQzNGQTtDM0ZBOzExMEEgMTE2QSAxMUFEO0MzRkE7MTEwQSAxMTZBIDExQUQ7ICMgKOyPujsg7I+6OyDhhIrhharhhq07IOyPujsg4YSK4YWq4YatOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dBTkgKK0MzRkI7QzNGQjsxMTBBIDExNkEgMTFBRTtDM0ZCOzExMEEgMTE2QSAxMUFFOyAjICjsj7s7IOyPuzsg4YSK4YWq4YauOyDsj7s7IOGEiuGFquGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXQUQKK0MzRkM7QzNGQzsxMTBBIDExNkEgMTFBRjtDM0ZDOzExMEEgMTE2QSAxMUFGOyAjICjsj7w7IOyPvDsg4YSK4YWq4YavOyDsj7w7IOGEiuGFquGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXQUwKK0MzRkQ7QzNGRDsxMTBBIDExNkEgMTFCMDtDM0ZEOzExMEEgMTE2QSAxMUIwOyAjICjsj707IOyPvTsg4YSK4YWq4YawOyDsj707IOGEiuGFquGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXQUxHCitDM0ZFO0MzRkU7MTEwQSAxMTZBIDExQjE7QzNGRTsxMTBBIDExNkEgMTFCMTsgIyAo7I++OyDsj747IOGEiuGFquGGsTsg7I++OyDhhIrhharhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FMTQorQzNGRjtDM0ZGOzExMEEgMTE2QSAxMUIyO0MzRkY7MTEwQSAxMTZBIDExQjI7ICMgKOyPvzsg7I+/OyDhhIrhharhhrI7IOyPvzsg4YSK4YWq4YayOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dBTEIKK0M0MDA7QzQwMDsxMTBBIDExNkEgMTFCMztDNDAwOzExMEEgMTE2QSAxMUIzOyAjICjskIA7IOyQgDsg4YSK4YWq4YazOyDskIA7IOGEiuGFquGGszsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXQUxTCitDNDAxO0M0MDE7MTEwQSAxMTZBIDExQjQ7QzQwMTsxMTBBIDExNkEgMTFCNDsgIyAo7JCBOyDskIE7IOGEiuGFquGGtDsg7JCBOyDhhIrhharhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FMVAorQzQwMjtDNDAyOzExMEEgMTE2QSAxMUI1O0M0MDI7MTEwQSAxMTZBIDExQjU7ICMgKOyQgjsg7JCCOyDhhIrhharhhrU7IOyQgjsg4YSK4YWq4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dBTFAKK0M0MDM7QzQwMzsxMTBBIDExNkEgMTFCNjtDNDAzOzExMEEgMTE2QSAxMUI2OyAjICjskIM7IOyQgzsg4YSK4YWq4Ya2OyDskIM7IOGEiuGFquGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXQUxICitDNDA0O0M0MDQ7MTEwQSAxMTZBIDExQjc7QzQwNDsxMTBBIDExNkEgMTFCNzsgIyAo7JCEOyDskIQ7IOGEiuGFquGGtzsg7JCEOyDhhIrhharhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FNCitDNDA1O0M0MDU7MTEwQSAxMTZBIDExQjg7QzQwNTsxMTBBIDExNkEgMTFCODsgIyAo7JCFOyDskIU7IOGEiuGFquGGuDsg7JCFOyDhhIrhharhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FCCitDNDA2O0M0MDY7MTEwQSAxMTZBIDExQjk7QzQwNjsxMTBBIDExNkEgMTFCOTsgIyAo7JCGOyDskIY7IOGEiuGFquGGuTsg7JCGOyDhhIrhharhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FCUworQzQwNztDNDA3OzExMEEgMTE2QSAxMUJBO0M0MDc7MTEwQSAxMTZBIDExQkE7ICMgKOyQhzsg7JCHOyDhhIrhharhhro7IOyQhzsg4YSK4YWq4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dBUworQzQwODtDNDA4OzExMEEgMTE2QSAxMUJCO0M0MDg7MTEwQSAxMTZBIDExQkI7ICMgKOyQiDsg7JCIOyDhhIrhharhhrs7IOyQiDsg4YSK4YWq4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dBU1MKK0M0MDk7QzQwOTsxMTBBIDExNkEgMTFCQztDNDA5OzExMEEgMTE2QSAxMUJDOyAjICjskIk7IOyQiTsg4YSK4YWq4Ya8OyDskIk7IOGEiuGFquGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXQU5HCitDNDBBO0M0MEE7MTEwQSAxMTZBIDExQkQ7QzQwQTsxMTBBIDExNkEgMTFCRDsgIyAo7JCKOyDskIo7IOGEiuGFquGGvTsg7JCKOyDhhIrhharhhr07ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FKCitDNDBCO0M0MEI7MTEwQSAxMTZBIDExQkU7QzQwQjsxMTBBIDExNkEgMTFCRTsgIyAo7JCLOyDskIs7IOGEiuGFquGGvjsg7JCLOyDhhIrhharhhr47ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FDCitDNDBDO0M0MEM7MTEwQSAxMTZBIDExQkY7QzQwQzsxMTBBIDExNkEgMTFCRjsgIyAo7JCMOyDskIw7IOGEiuGFquGGvzsg7JCMOyDhhIrhharhhr87ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FLCitDNDBEO0M0MEQ7MTEwQSAxMTZBIDExQzA7QzQwRDsxMTBBIDExNkEgMTFDMDsgIyAo7JCNOyDskI07IOGEiuGFquGHgDsg7JCNOyDhhIrhharhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FUCitDNDBFO0M0MEU7MTEwQSAxMTZBIDExQzE7QzQwRTsxMTBBIDExNkEgMTFDMTsgIyAo7JCOOyDskI47IOGEiuGFquGHgTsg7JCOOyDhhIrhharhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FQCitDNDBGO0M0MEY7MTEwQSAxMTZBIDExQzI7QzQwRjsxMTBBIDExNkEgMTFDMjsgIyAo7JCPOyDskI87IOGEiuGFquGHgjsg7JCPOyDhhIrhharhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FICitDNDEwO0M0MTA7MTEwQSAxMTZCO0M0MTA7MTEwQSAxMTZCOyAjICjskJA7IOyQkDsg4YSK4YWrOyDskJA7IOGEiuGFqzsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXQUUKK0M0MTE7QzQxMTsxMTBBIDExNkIgMTFBODtDNDExOzExMEEgMTE2QiAxMUE4OyAjICjskJE7IOyQkTsg4YSK4YWr4YaoOyDskJE7IOGEiuGFq+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXQUVHCitDNDEyO0M0MTI7MTEwQSAxMTZCIDExQTk7QzQxMjsxMTBBIDExNkIgMTFBOTsgIyAo7JCSOyDskJI7IOGEiuGFq+GGqTsg7JCSOyDhhIrhhavhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FFR0cKK0M0MTM7QzQxMzsxMTBBIDExNkIgMTFBQTtDNDEzOzExMEEgMTE2QiAxMUFBOyAjICjskJM7IOyQkzsg4YSK4YWr4YaqOyDskJM7IOGEiuGFq+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXQUVHUworQzQxNDtDNDE0OzExMEEgMTE2QiAxMUFCO0M0MTQ7MTEwQSAxMTZCIDExQUI7ICMgKOyQlDsg7JCUOyDhhIrhhavhhqs7IOyQlDsg4YSK4YWr4YarOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dBRU4KK0M0MTU7QzQxNTsxMTBBIDExNkIgMTFBQztDNDE1OzExMEEgMTE2QiAxMUFDOyAjICjskJU7IOyQlTsg4YSK4YWr4YasOyDskJU7IOGEiuGFq+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXQUVOSgorQzQxNjtDNDE2OzExMEEgMTE2QiAxMUFEO0M0MTY7MTEwQSAxMTZCIDExQUQ7ICMgKOyQljsg7JCWOyDhhIrhhavhhq07IOyQljsg4YSK4YWr4YatOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dBRU5ICitDNDE3O0M0MTc7MTEwQSAxMTZCIDExQUU7QzQxNzsxMTBBIDExNkIgMTFBRTsgIyAo7JCXOyDskJc7IOGEiuGFq+GGrjsg7JCXOyDhhIrhhavhhq47ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FFRAorQzQxODtDNDE4OzExMEEgMTE2QiAxMUFGO0M0MTg7MTEwQSAxMTZCIDExQUY7ICMgKOyQmDsg7JCYOyDhhIrhhavhhq87IOyQmDsg4YSK4YWr4YavOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dBRUwKK0M0MTk7QzQxOTsxMTBBIDExNkIgMTFCMDtDNDE5OzExMEEgMTE2QiAxMUIwOyAjICjskJk7IOyQmTsg4YSK4YWr4YawOyDskJk7IOGEiuGFq+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXQUVMRworQzQxQTtDNDFBOzExMEEgMTE2QiAxMUIxO0M0MUE7MTEwQSAxMTZCIDExQjE7ICMgKOyQmjsg7JCaOyDhhIrhhavhhrE7IOyQmjsg4YSK4YWr4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dBRUxNCitDNDFCO0M0MUI7MTEwQSAxMTZCIDExQjI7QzQxQjsxMTBBIDExNkIgMTFCMjsgIyAo7JCbOyDskJs7IOGEiuGFq+GGsjsg7JCbOyDhhIrhhavhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FFTEIKK0M0MUM7QzQxQzsxMTBBIDExNkIgMTFCMztDNDFDOzExMEEgMTE2QiAxMUIzOyAjICjskJw7IOyQnDsg4YSK4YWr4YazOyDskJw7IOGEiuGFq+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXQUVMUworQzQxRDtDNDFEOzExMEEgMTE2QiAxMUI0O0M0MUQ7MTEwQSAxMTZCIDExQjQ7ICMgKOyQnTsg7JCdOyDhhIrhhavhhrQ7IOyQnTsg4YSK4YWr4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dBRUxUCitDNDFFO0M0MUU7MTEwQSAxMTZCIDExQjU7QzQxRTsxMTBBIDExNkIgMTFCNTsgIyAo7JCeOyDskJ47IOGEiuGFq+GGtTsg7JCeOyDhhIrhhavhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FFTFAKK0M0MUY7QzQxRjsxMTBBIDExNkIgMTFCNjtDNDFGOzExMEEgMTE2QiAxMUI2OyAjICjskJ87IOyQnzsg4YSK4YWr4Ya2OyDskJ87IOGEiuGFq+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXQUVMSAorQzQyMDtDNDIwOzExMEEgMTE2QiAxMUI3O0M0MjA7MTEwQSAxMTZCIDExQjc7ICMgKOyQoDsg7JCgOyDhhIrhhavhhrc7IOyQoDsg4YSK4YWr4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dBRU0KK0M0MjE7QzQyMTsxMTBBIDExNkIgMTFCODtDNDIxOzExMEEgMTE2QiAxMUI4OyAjICjskKE7IOyQoTsg4YSK4YWr4Ya4OyDskKE7IOGEiuGFq+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXQUVCCitDNDIyO0M0MjI7MTEwQSAxMTZCIDExQjk7QzQyMjsxMTBBIDExNkIgMTFCOTsgIyAo7JCiOyDskKI7IOGEiuGFq+GGuTsg7JCiOyDhhIrhhavhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FFQlMKK0M0MjM7QzQyMzsxMTBBIDExNkIgMTFCQTtDNDIzOzExMEEgMTE2QiAxMUJBOyAjICjskKM7IOyQozsg4YSK4YWr4Ya6OyDskKM7IOGEiuGFq+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXQUVTCitDNDI0O0M0MjQ7MTEwQSAxMTZCIDExQkI7QzQyNDsxMTBBIDExNkIgMTFCQjsgIyAo7JCkOyDskKQ7IOGEiuGFq+GGuzsg7JCkOyDhhIrhhavhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FFU1MKK0M0MjU7QzQyNTsxMTBBIDExNkIgMTFCQztDNDI1OzExMEEgMTE2QiAxMUJDOyAjICjskKU7IOyQpTsg4YSK4YWr4Ya8OyDskKU7IOGEiuGFq+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXQUVORworQzQyNjtDNDI2OzExMEEgMTE2QiAxMUJEO0M0MjY7MTEwQSAxMTZCIDExQkQ7ICMgKOyQpjsg7JCmOyDhhIrhhavhhr07IOyQpjsg4YSK4YWr4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dBRUoKK0M0Mjc7QzQyNzsxMTBBIDExNkIgMTFCRTtDNDI3OzExMEEgMTE2QiAxMUJFOyAjICjskKc7IOyQpzsg4YSK4YWr4Ya+OyDskKc7IOGEiuGFq+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXQUVDCitDNDI4O0M0Mjg7MTEwQSAxMTZCIDExQkY7QzQyODsxMTBBIDExNkIgMTFCRjsgIyAo7JCoOyDskKg7IOGEiuGFq+GGvzsg7JCoOyDhhIrhhavhhr87ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FFSworQzQyOTtDNDI5OzExMEEgMTE2QiAxMUMwO0M0Mjk7MTEwQSAxMTZCIDExQzA7ICMgKOyQqTsg7JCpOyDhhIrhhavhh4A7IOyQqTsg4YSK4YWr4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dBRVQKK0M0MkE7QzQyQTsxMTBBIDExNkIgMTFDMTtDNDJBOzExMEEgMTE2QiAxMUMxOyAjICjskKo7IOyQqjsg4YSK4YWr4YeBOyDskKo7IOGEiuGFq+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXQUVQCitDNDJCO0M0MkI7MTEwQSAxMTZCIDExQzI7QzQyQjsxMTBBIDExNkIgMTFDMjsgIyAo7JCrOyDskKs7IOGEiuGFq+GHgjsg7JCrOyDhhIrhhavhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0FFSAorQzQyQztDNDJDOzExMEEgMTE2QztDNDJDOzExMEEgMTE2QzsgIyAo7JCsOyDskKw7IOGEiuGFrDsg7JCsOyDhhIrhhaw7ICkgSEFOR1VMIFNZTExBQkxFIFNTT0UKK0M0MkQ7QzQyRDsxMTBBIDExNkMgMTFBODtDNDJEOzExMEEgMTE2QyAxMUE4OyAjICjskK07IOyQrTsg4YSK4YWs4YaoOyDskK07IOGEiuGFrOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NPRUcKK0M0MkU7QzQyRTsxMTBBIDExNkMgMTFBOTtDNDJFOzExMEEgMTE2QyAxMUE5OyAjICjskK47IOyQrjsg4YSK4YWs4YapOyDskK47IOGEiuGFrOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NPRUdHCitDNDJGO0M0MkY7MTEwQSAxMTZDIDExQUE7QzQyRjsxMTBBIDExNkMgMTFBQTsgIyAo7JCvOyDskK87IOGEiuGFrOGGqjsg7JCvOyDhhIrhhazhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNTT0VHUworQzQzMDtDNDMwOzExMEEgMTE2QyAxMUFCO0M0MzA7MTEwQSAxMTZDIDExQUI7ICMgKOyQsDsg7JCwOyDhhIrhhazhhqs7IOyQsDsg4YSK4YWs4YarOyApIEhBTkdVTCBTWUxMQUJMRSBTU09FTgorQzQzMTtDNDMxOzExMEEgMTE2QyAxMUFDO0M0MzE7MTEwQSAxMTZDIDExQUM7ICMgKOyQsTsg7JCxOyDhhIrhhazhhqw7IOyQsTsg4YSK4YWs4YasOyApIEhBTkdVTCBTWUxMQUJMRSBTU09FTkoKK0M0MzI7QzQzMjsxMTBBIDExNkMgMTFBRDtDNDMyOzExMEEgMTE2QyAxMUFEOyAjICjskLI7IOyQsjsg4YSK4YWs4YatOyDskLI7IOGEiuGFrOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NPRU5ICitDNDMzO0M0MzM7MTEwQSAxMTZDIDExQUU7QzQzMzsxMTBBIDExNkMgMTFBRTsgIyAo7JCzOyDskLM7IOGEiuGFrOGGrjsg7JCzOyDhhIrhhazhhq47ICkgSEFOR1VMIFNZTExBQkxFIFNTT0VECitDNDM0O0M0MzQ7MTEwQSAxMTZDIDExQUY7QzQzNDsxMTBBIDExNkMgMTFBRjsgIyAo7JC0OyDskLQ7IOGEiuGFrOGGrzsg7JC0OyDhhIrhhazhhq87ICkgSEFOR1VMIFNZTExBQkxFIFNTT0VMCitDNDM1O0M0MzU7MTEwQSAxMTZDIDExQjA7QzQzNTsxMTBBIDExNkMgMTFCMDsgIyAo7JC1OyDskLU7IOGEiuGFrOGGsDsg7JC1OyDhhIrhhazhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNTT0VMRworQzQzNjtDNDM2OzExMEEgMTE2QyAxMUIxO0M0MzY7MTEwQSAxMTZDIDExQjE7ICMgKOyQtjsg7JC2OyDhhIrhhazhhrE7IOyQtjsg4YSK4YWs4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTU09FTE0KK0M0Mzc7QzQzNzsxMTBBIDExNkMgMTFCMjtDNDM3OzExMEEgMTE2QyAxMUIyOyAjICjskLc7IOyQtzsg4YSK4YWs4YayOyDskLc7IOGEiuGFrOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NPRUxCCitDNDM4O0M0Mzg7MTEwQSAxMTZDIDExQjM7QzQzODsxMTBBIDExNkMgMTFCMzsgIyAo7JC4OyDskLg7IOGEiuGFrOGGszsg7JC4OyDhhIrhhazhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNTT0VMUworQzQzOTtDNDM5OzExMEEgMTE2QyAxMUI0O0M0Mzk7MTEwQSAxMTZDIDExQjQ7ICMgKOyQuTsg7JC5OyDhhIrhhazhhrQ7IOyQuTsg4YSK4YWs4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTU09FTFQKK0M0M0E7QzQzQTsxMTBBIDExNkMgMTFCNTtDNDNBOzExMEEgMTE2QyAxMUI1OyAjICjskLo7IOyQujsg4YSK4YWs4Ya1OyDskLo7IOGEiuGFrOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NPRUxQCitDNDNCO0M0M0I7MTEwQSAxMTZDIDExQjY7QzQzQjsxMTBBIDExNkMgMTFCNjsgIyAo7JC7OyDskLs7IOGEiuGFrOGGtjsg7JC7OyDhhIrhhazhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNTT0VMSAorQzQzQztDNDNDOzExMEEgMTE2QyAxMUI3O0M0M0M7MTEwQSAxMTZDIDExQjc7ICMgKOyQvDsg7JC8OyDhhIrhhazhhrc7IOyQvDsg4YSK4YWs4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTU09FTQorQzQzRDtDNDNEOzExMEEgMTE2QyAxMUI4O0M0M0Q7MTEwQSAxMTZDIDExQjg7ICMgKOyQvTsg7JC9OyDhhIrhhazhhrg7IOyQvTsg4YSK4YWs4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBTU09FQgorQzQzRTtDNDNFOzExMEEgMTE2QyAxMUI5O0M0M0U7MTEwQSAxMTZDIDExQjk7ICMgKOyQvjsg7JC+OyDhhIrhhazhhrk7IOyQvjsg4YSK4YWs4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTU09FQlMKK0M0M0Y7QzQzRjsxMTBBIDExNkMgMTFCQTtDNDNGOzExMEEgMTE2QyAxMUJBOyAjICjskL87IOyQvzsg4YSK4YWs4Ya6OyDskL87IOGEiuGFrOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgU1NPRVMKK0M0NDA7QzQ0MDsxMTBBIDExNkMgMTFCQjtDNDQwOzExMEEgMTE2QyAxMUJCOyAjICjskYA7IOyRgDsg4YSK4YWs4Ya7OyDskYA7IOGEiuGFrOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgU1NPRVNTCitDNDQxO0M0NDE7MTEwQSAxMTZDIDExQkM7QzQ0MTsxMTBBIDExNkMgMTFCQzsgIyAo7JGBOyDskYE7IOGEiuGFrOGGvDsg7JGBOyDhhIrhhazhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNTT0VORworQzQ0MjtDNDQyOzExMEEgMTE2QyAxMUJEO0M0NDI7MTEwQSAxMTZDIDExQkQ7ICMgKOyRgjsg7JGCOyDhhIrhhazhhr07IOyRgjsg4YSK4YWs4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTU09FSgorQzQ0MztDNDQzOzExMEEgMTE2QyAxMUJFO0M0NDM7MTEwQSAxMTZDIDExQkU7ICMgKOyRgzsg7JGDOyDhhIrhhazhhr47IOyRgzsg4YSK4YWs4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBTU09FQworQzQ0NDtDNDQ0OzExMEEgMTE2QyAxMUJGO0M0NDQ7MTEwQSAxMTZDIDExQkY7ICMgKOyRhDsg7JGEOyDhhIrhhazhhr87IOyRhDsg4YSK4YWs4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTU09FSworQzQ0NTtDNDQ1OzExMEEgMTE2QyAxMUMwO0M0NDU7MTEwQSAxMTZDIDExQzA7ICMgKOyRhTsg7JGFOyDhhIrhhazhh4A7IOyRhTsg4YSK4YWs4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTU09FVAorQzQ0NjtDNDQ2OzExMEEgMTE2QyAxMUMxO0M0NDY7MTEwQSAxMTZDIDExQzE7ICMgKOyRhjsg7JGGOyDhhIrhhazhh4E7IOyRhjsg4YSK4YWs4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBTU09FUAorQzQ0NztDNDQ3OzExMEEgMTE2QyAxMUMyO0M0NDc7MTEwQSAxMTZDIDExQzI7ICMgKOyRhzsg7JGHOyDhhIrhhazhh4I7IOyRhzsg4YSK4YWs4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTU09FSAorQzQ0ODtDNDQ4OzExMEEgMTE2RDtDNDQ4OzExMEEgMTE2RDsgIyAo7JGIOyDskYg7IOGEiuGFrTsg7JGIOyDhhIrhha07ICkgSEFOR1VMIFNZTExBQkxFIFNTWU8KK0M0NDk7QzQ0OTsxMTBBIDExNkQgMTFBODtDNDQ5OzExMEEgMTE2RCAxMUE4OyAjICjskYk7IOyRiTsg4YSK4YWt4YaoOyDskYk7IOGEiuGFreGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZT0cKK0M0NEE7QzQ0QTsxMTBBIDExNkQgMTFBOTtDNDRBOzExMEEgMTE2RCAxMUE5OyAjICjskYo7IOyRijsg4YSK4YWt4YapOyDskYo7IOGEiuGFreGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZT0dHCitDNDRCO0M0NEI7MTEwQSAxMTZEIDExQUE7QzQ0QjsxMTBBIDExNkQgMTFBQTsgIyAo7JGLOyDskYs7IOGEiuGFreGGqjsg7JGLOyDhhIrhha3hhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNTWU9HUworQzQ0QztDNDRDOzExMEEgMTE2RCAxMUFCO0M0NEM7MTEwQSAxMTZEIDExQUI7ICMgKOyRjDsg7JGMOyDhhIrhha3hhqs7IOyRjDsg4YSK4YWt4YarOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lPTgorQzQ0RDtDNDREOzExMEEgMTE2RCAxMUFDO0M0NEQ7MTEwQSAxMTZEIDExQUM7ICMgKOyRjTsg7JGNOyDhhIrhha3hhqw7IOyRjTsg4YSK4YWt4YasOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lPTkoKK0M0NEU7QzQ0RTsxMTBBIDExNkQgMTFBRDtDNDRFOzExMEEgMTE2RCAxMUFEOyAjICjskY47IOyRjjsg4YSK4YWt4YatOyDskY47IOGEiuGFreGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZT05ICitDNDRGO0M0NEY7MTEwQSAxMTZEIDExQUU7QzQ0RjsxMTBBIDExNkQgMTFBRTsgIyAo7JGPOyDskY87IOGEiuGFreGGrjsg7JGPOyDhhIrhha3hhq47ICkgSEFOR1VMIFNZTExBQkxFIFNTWU9ECitDNDUwO0M0NTA7MTEwQSAxMTZEIDExQUY7QzQ1MDsxMTBBIDExNkQgMTFBRjsgIyAo7JGQOyDskZA7IOGEiuGFreGGrzsg7JGQOyDhhIrhha3hhq87ICkgSEFOR1VMIFNZTExBQkxFIFNTWU9MCitDNDUxO0M0NTE7MTEwQSAxMTZEIDExQjA7QzQ1MTsxMTBBIDExNkQgMTFCMDsgIyAo7JGROyDskZE7IOGEiuGFreGGsDsg7JGROyDhhIrhha3hhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNTWU9MRworQzQ1MjtDNDUyOzExMEEgMTE2RCAxMUIxO0M0NTI7MTEwQSAxMTZEIDExQjE7ICMgKOyRkjsg7JGSOyDhhIrhha3hhrE7IOyRkjsg4YSK4YWt4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lPTE0KK0M0NTM7QzQ1MzsxMTBBIDExNkQgMTFCMjtDNDUzOzExMEEgMTE2RCAxMUIyOyAjICjskZM7IOyRkzsg4YSK4YWt4YayOyDskZM7IOGEiuGFreGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZT0xCCitDNDU0O0M0NTQ7MTEwQSAxMTZEIDExQjM7QzQ1NDsxMTBBIDExNkQgMTFCMzsgIyAo7JGUOyDskZQ7IOGEiuGFreGGszsg7JGUOyDhhIrhha3hhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNTWU9MUworQzQ1NTtDNDU1OzExMEEgMTE2RCAxMUI0O0M0NTU7MTEwQSAxMTZEIDExQjQ7ICMgKOyRlTsg7JGVOyDhhIrhha3hhrQ7IOyRlTsg4YSK4YWt4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lPTFQKK0M0NTY7QzQ1NjsxMTBBIDExNkQgMTFCNTtDNDU2OzExMEEgMTE2RCAxMUI1OyAjICjskZY7IOyRljsg4YSK4YWt4Ya1OyDskZY7IOGEiuGFreGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZT0xQCitDNDU3O0M0NTc7MTEwQSAxMTZEIDExQjY7QzQ1NzsxMTBBIDExNkQgMTFCNjsgIyAo7JGXOyDskZc7IOGEiuGFreGGtjsg7JGXOyDhhIrhha3hhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNTWU9MSAorQzQ1ODtDNDU4OzExMEEgMTE2RCAxMUI3O0M0NTg7MTEwQSAxMTZEIDExQjc7ICMgKOyRmDsg7JGYOyDhhIrhha3hhrc7IOyRmDsg4YSK4YWt4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lPTQorQzQ1OTtDNDU5OzExMEEgMTE2RCAxMUI4O0M0NTk7MTEwQSAxMTZEIDExQjg7ICMgKOyRmTsg7JGZOyDhhIrhha3hhrg7IOyRmTsg4YSK4YWt4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lPQgorQzQ1QTtDNDVBOzExMEEgMTE2RCAxMUI5O0M0NUE7MTEwQSAxMTZEIDExQjk7ICMgKOyRmjsg7JGaOyDhhIrhha3hhrk7IOyRmjsg4YSK4YWt4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lPQlMKK0M0NUI7QzQ1QjsxMTBBIDExNkQgMTFCQTtDNDVCOzExMEEgMTE2RCAxMUJBOyAjICjskZs7IOyRmzsg4YSK4YWt4Ya6OyDskZs7IOGEiuGFreGGujsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZT1MKK0M0NUM7QzQ1QzsxMTBBIDExNkQgMTFCQjtDNDVDOzExMEEgMTE2RCAxMUJCOyAjICjskZw7IOyRnDsg4YSK4YWt4Ya7OyDskZw7IOGEiuGFreGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZT1NTCitDNDVEO0M0NUQ7MTEwQSAxMTZEIDExQkM7QzQ1RDsxMTBBIDExNkQgMTFCQzsgIyAo7JGdOyDskZ07IOGEiuGFreGGvDsg7JGdOyDhhIrhha3hhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNTWU9ORworQzQ1RTtDNDVFOzExMEEgMTE2RCAxMUJEO0M0NUU7MTEwQSAxMTZEIDExQkQ7ICMgKOyRnjsg7JGeOyDhhIrhha3hhr07IOyRnjsg4YSK4YWt4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lPSgorQzQ1RjtDNDVGOzExMEEgMTE2RCAxMUJFO0M0NUY7MTEwQSAxMTZEIDExQkU7ICMgKOyRnzsg7JGfOyDhhIrhha3hhr47IOyRnzsg4YSK4YWt4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lPQworQzQ2MDtDNDYwOzExMEEgMTE2RCAxMUJGO0M0NjA7MTEwQSAxMTZEIDExQkY7ICMgKOyRoDsg7JGgOyDhhIrhha3hhr87IOyRoDsg4YSK4YWt4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lPSworQzQ2MTtDNDYxOzExMEEgMTE2RCAxMUMwO0M0NjE7MTEwQSAxMTZEIDExQzA7ICMgKOyRoTsg7JGhOyDhhIrhha3hh4A7IOyRoTsg4YSK4YWt4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lPVAorQzQ2MjtDNDYyOzExMEEgMTE2RCAxMUMxO0M0NjI7MTEwQSAxMTZEIDExQzE7ICMgKOyRojsg7JGiOyDhhIrhha3hh4E7IOyRojsg4YSK4YWt4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lPUAorQzQ2MztDNDYzOzExMEEgMTE2RCAxMUMyO0M0NjM7MTEwQSAxMTZEIDExQzI7ICMgKOyRozsg7JGjOyDhhIrhha3hh4I7IOyRozsg4YSK4YWt4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lPSAorQzQ2NDtDNDY0OzExMEEgMTE2RTtDNDY0OzExMEEgMTE2RTsgIyAo7JGkOyDskaQ7IOGEiuGFrjsg7JGkOyDhhIrhha47ICkgSEFOR1VMIFNZTExBQkxFIFNTVQorQzQ2NTtDNDY1OzExMEEgMTE2RSAxMUE4O0M0NjU7MTEwQSAxMTZFIDExQTg7ICMgKOyRpTsg7JGlOyDhhIrhha7hhqg7IOyRpTsg4YSK4YWu4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBTU1VHCitDNDY2O0M0NjY7MTEwQSAxMTZFIDExQTk7QzQ2NjsxMTBBIDExNkUgMTFBOTsgIyAo7JGmOyDskaY7IOGEiuGFruGGqTsg7JGmOyDhhIrhha7hhqk7ICkgSEFOR1VMIFNZTExBQkxFIFNTVUdHCitDNDY3O0M0Njc7MTEwQSAxMTZFIDExQUE7QzQ2NzsxMTBBIDExNkUgMTFBQTsgIyAo7JGnOyDskac7IOGEiuGFruGGqjsg7JGnOyDhhIrhha7hhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNTVUdTCitDNDY4O0M0Njg7MTEwQSAxMTZFIDExQUI7QzQ2ODsxMTBBIDExNkUgMTFBQjsgIyAo7JGoOyDskag7IOGEiuGFruGGqzsg7JGoOyDhhIrhha7hhqs7ICkgSEFOR1VMIFNZTExBQkxFIFNTVU4KK0M0Njk7QzQ2OTsxMTBBIDExNkUgMTFBQztDNDY5OzExMEEgMTE2RSAxMUFDOyAjICjskak7IOyRqTsg4YSK4YWu4YasOyDskak7IOGEiuGFruGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NVTkoKK0M0NkE7QzQ2QTsxMTBBIDExNkUgMTFBRDtDNDZBOzExMEEgMTE2RSAxMUFEOyAjICjskao7IOyRqjsg4YSK4YWu4YatOyDskao7IOGEiuGFruGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NVTkgKK0M0NkI7QzQ2QjsxMTBBIDExNkUgMTFBRTtDNDZCOzExMEEgMTE2RSAxMUFFOyAjICjskas7IOyRqzsg4YSK4YWu4YauOyDskas7IOGEiuGFruGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NVRAorQzQ2QztDNDZDOzExMEEgMTE2RSAxMUFGO0M0NkM7MTEwQSAxMTZFIDExQUY7ICMgKOyRrDsg7JGsOyDhhIrhha7hhq87IOyRrDsg4YSK4YWu4YavOyApIEhBTkdVTCBTWUxMQUJMRSBTU1VMCitDNDZEO0M0NkQ7MTEwQSAxMTZFIDExQjA7QzQ2RDsxMTBBIDExNkUgMTFCMDsgIyAo7JGtOyDska07IOGEiuGFruGGsDsg7JGtOyDhhIrhha7hhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNTVUxHCitDNDZFO0M0NkU7MTEwQSAxMTZFIDExQjE7QzQ2RTsxMTBBIDExNkUgMTFCMTsgIyAo7JGuOyDska47IOGEiuGFruGGsTsg7JGuOyDhhIrhha7hhrE7ICkgSEFOR1VMIFNZTExBQkxFIFNTVUxNCitDNDZGO0M0NkY7MTEwQSAxMTZFIDExQjI7QzQ2RjsxMTBBIDExNkUgMTFCMjsgIyAo7JGvOyDska87IOGEiuGFruGGsjsg7JGvOyDhhIrhha7hhrI7ICkgSEFOR1VMIFNZTExBQkxFIFNTVUxCCitDNDcwO0M0NzA7MTEwQSAxMTZFIDExQjM7QzQ3MDsxMTBBIDExNkUgMTFCMzsgIyAo7JGwOyDskbA7IOGEiuGFruGGszsg7JGwOyDhhIrhha7hhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNTVUxTCitDNDcxO0M0NzE7MTEwQSAxMTZFIDExQjQ7QzQ3MTsxMTBBIDExNkUgMTFCNDsgIyAo7JGxOyDskbE7IOGEiuGFruGGtDsg7JGxOyDhhIrhha7hhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFNTVUxUCitDNDcyO0M0NzI7MTEwQSAxMTZFIDExQjU7QzQ3MjsxMTBBIDExNkUgMTFCNTsgIyAo7JGyOyDskbI7IOGEiuGFruGGtTsg7JGyOyDhhIrhha7hhrU7ICkgSEFOR1VMIFNZTExBQkxFIFNTVUxQCitDNDczO0M0NzM7MTEwQSAxMTZFIDExQjY7QzQ3MzsxMTBBIDExNkUgMTFCNjsgIyAo7JGzOyDskbM7IOGEiuGFruGGtjsg7JGzOyDhhIrhha7hhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNTVUxICitDNDc0O0M0NzQ7MTEwQSAxMTZFIDExQjc7QzQ3NDsxMTBBIDExNkUgMTFCNzsgIyAo7JG0OyDskbQ7IOGEiuGFruGGtzsg7JG0OyDhhIrhha7hhrc7ICkgSEFOR1VMIFNZTExBQkxFIFNTVU0KK0M0NzU7QzQ3NTsxMTBBIDExNkUgMTFCODtDNDc1OzExMEEgMTE2RSAxMUI4OyAjICjskbU7IOyRtTsg4YSK4YWu4Ya4OyDskbU7IOGEiuGFruGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NVQgorQzQ3NjtDNDc2OzExMEEgMTE2RSAxMUI5O0M0NzY7MTEwQSAxMTZFIDExQjk7ICMgKOyRtjsg7JG2OyDhhIrhha7hhrk7IOyRtjsg4YSK4YWu4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTU1VCUworQzQ3NztDNDc3OzExMEEgMTE2RSAxMUJBO0M0Nzc7MTEwQSAxMTZFIDExQkE7ICMgKOyRtzsg7JG3OyDhhIrhha7hhro7IOyRtzsg4YSK4YWu4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBTU1VTCitDNDc4O0M0Nzg7MTEwQSAxMTZFIDExQkI7QzQ3ODsxMTBBIDExNkUgMTFCQjsgIyAo7JG4OyDskbg7IOGEiuGFruGGuzsg7JG4OyDhhIrhha7hhrs7ICkgSEFOR1VMIFNZTExBQkxFIFNTVVNTCitDNDc5O0M0Nzk7MTEwQSAxMTZFIDExQkM7QzQ3OTsxMTBBIDExNkUgMTFCQzsgIyAo7JG5OyDskbk7IOGEiuGFruGGvDsg7JG5OyDhhIrhha7hhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNTVU5HCitDNDdBO0M0N0E7MTEwQSAxMTZFIDExQkQ7QzQ3QTsxMTBBIDExNkUgMTFCRDsgIyAo7JG6OyDskbo7IOGEiuGFruGGvTsg7JG6OyDhhIrhha7hhr07ICkgSEFOR1VMIFNZTExBQkxFIFNTVUoKK0M0N0I7QzQ3QjsxMTBBIDExNkUgMTFCRTtDNDdCOzExMEEgMTE2RSAxMUJFOyAjICjskbs7IOyRuzsg4YSK4YWu4Ya+OyDskbs7IOGEiuGFruGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NVQworQzQ3QztDNDdDOzExMEEgMTE2RSAxMUJGO0M0N0M7MTEwQSAxMTZFIDExQkY7ICMgKOyRvDsg7JG8OyDhhIrhha7hhr87IOyRvDsg4YSK4YWu4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTU1VLCitDNDdEO0M0N0Q7MTEwQSAxMTZFIDExQzA7QzQ3RDsxMTBBIDExNkUgMTFDMDsgIyAo7JG9OyDskb07IOGEiuGFruGHgDsg7JG9OyDhhIrhha7hh4A7ICkgSEFOR1VMIFNZTExBQkxFIFNTVVQKK0M0N0U7QzQ3RTsxMTBBIDExNkUgMTFDMTtDNDdFOzExMEEgMTE2RSAxMUMxOyAjICjskb47IOyRvjsg4YSK4YWu4YeBOyDskb47IOGEiuGFruGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NVUAorQzQ3RjtDNDdGOzExMEEgMTE2RSAxMUMyO0M0N0Y7MTEwQSAxMTZFIDExQzI7ICMgKOyRvzsg7JG/OyDhhIrhha7hh4I7IOyRvzsg4YSK4YWu4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTU1VICitDNDgwO0M0ODA7MTEwQSAxMTZGO0M0ODA7MTEwQSAxMTZGOyAjICjskoA7IOySgDsg4YSK4YWvOyDskoA7IOGEiuGFrzsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXRU8KK0M0ODE7QzQ4MTsxMTBBIDExNkYgMTFBODtDNDgxOzExMEEgMTE2RiAxMUE4OyAjICjskoE7IOySgTsg4YSK4YWv4YaoOyDskoE7IOGEiuGFr+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXRU9HCitDNDgyO0M0ODI7MTEwQSAxMTZGIDExQTk7QzQ4MjsxMTBBIDExNkYgMTFBOTsgIyAo7JKCOyDskoI7IOGEiuGFr+GGqTsg7JKCOyDhhIrhha/hhqk7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0VPR0cKK0M0ODM7QzQ4MzsxMTBBIDExNkYgMTFBQTtDNDgzOzExMEEgMTE2RiAxMUFBOyAjICjskoM7IOySgzsg4YSK4YWv4YaqOyDskoM7IOGEiuGFr+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXRU9HUworQzQ4NDtDNDg0OzExMEEgMTE2RiAxMUFCO0M0ODQ7MTEwQSAxMTZGIDExQUI7ICMgKOyShDsg7JKEOyDhhIrhha/hhqs7IOyShDsg4YSK4YWv4YarOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFT04KK0M0ODU7QzQ4NTsxMTBBIDExNkYgMTFBQztDNDg1OzExMEEgMTE2RiAxMUFDOyAjICjskoU7IOyShTsg4YSK4YWv4YasOyDskoU7IOGEiuGFr+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXRU9OSgorQzQ4NjtDNDg2OzExMEEgMTE2RiAxMUFEO0M0ODY7MTEwQSAxMTZGIDExQUQ7ICMgKOyShjsg7JKGOyDhhIrhha/hhq07IOyShjsg4YSK4YWv4YatOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFT05ICitDNDg3O0M0ODc7MTEwQSAxMTZGIDExQUU7QzQ4NzsxMTBBIDExNkYgMTFBRTsgIyAo7JKHOyDskoc7IOGEiuGFr+GGrjsg7JKHOyDhhIrhha/hhq47ICkgSEFOR1VMIFNZTExBQkxFIFNTV0VPRAorQzQ4ODtDNDg4OzExMEEgMTE2RiAxMUFGO0M0ODg7MTEwQSAxMTZGIDExQUY7ICMgKOySiDsg7JKIOyDhhIrhha/hhq87IOySiDsg4YSK4YWv4YavOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFT0wKK0M0ODk7QzQ4OTsxMTBBIDExNkYgMTFCMDtDNDg5OzExMEEgMTE2RiAxMUIwOyAjICjskok7IOySiTsg4YSK4YWv4YawOyDskok7IOGEiuGFr+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXRU9MRworQzQ4QTtDNDhBOzExMEEgMTE2RiAxMUIxO0M0OEE7MTEwQSAxMTZGIDExQjE7ICMgKOySijsg7JKKOyDhhIrhha/hhrE7IOySijsg4YSK4YWv4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFT0xNCitDNDhCO0M0OEI7MTEwQSAxMTZGIDExQjI7QzQ4QjsxMTBBIDExNkYgMTFCMjsgIyAo7JKLOyDskos7IOGEiuGFr+GGsjsg7JKLOyDhhIrhha/hhrI7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0VPTEIKK0M0OEM7QzQ4QzsxMTBBIDExNkYgMTFCMztDNDhDOzExMEEgMTE2RiAxMUIzOyAjICjskow7IOySjDsg4YSK4YWv4YazOyDskow7IOGEiuGFr+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXRU9MUworQzQ4RDtDNDhEOzExMEEgMTE2RiAxMUI0O0M0OEQ7MTEwQSAxMTZGIDExQjQ7ICMgKOySjTsg7JKNOyDhhIrhha/hhrQ7IOySjTsg4YSK4YWv4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFT0xUCitDNDhFO0M0OEU7MTEwQSAxMTZGIDExQjU7QzQ4RTsxMTBBIDExNkYgMTFCNTsgIyAo7JKOOyDsko47IOGEiuGFr+GGtTsg7JKOOyDhhIrhha/hhrU7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0VPTFAKK0M0OEY7QzQ4RjsxMTBBIDExNkYgMTFCNjtDNDhGOzExMEEgMTE2RiAxMUI2OyAjICjsko87IOySjzsg4YSK4YWv4Ya2OyDsko87IOGEiuGFr+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXRU9MSAorQzQ5MDtDNDkwOzExMEEgMTE2RiAxMUI3O0M0OTA7MTEwQSAxMTZGIDExQjc7ICMgKOySkDsg7JKQOyDhhIrhha/hhrc7IOySkDsg4YSK4YWv4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFT00KK0M0OTE7QzQ5MTsxMTBBIDExNkYgMTFCODtDNDkxOzExMEEgMTE2RiAxMUI4OyAjICjskpE7IOySkTsg4YSK4YWv4Ya4OyDskpE7IOGEiuGFr+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXRU9CCitDNDkyO0M0OTI7MTEwQSAxMTZGIDExQjk7QzQ5MjsxMTBBIDExNkYgMTFCOTsgIyAo7JKSOyDskpI7IOGEiuGFr+GGuTsg7JKSOyDhhIrhha/hhrk7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0VPQlMKK0M0OTM7QzQ5MzsxMTBBIDExNkYgMTFCQTtDNDkzOzExMEEgMTE2RiAxMUJBOyAjICjskpM7IOySkzsg4YSK4YWv4Ya6OyDskpM7IOGEiuGFr+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXRU9TCitDNDk0O0M0OTQ7MTEwQSAxMTZGIDExQkI7QzQ5NDsxMTBBIDExNkYgMTFCQjsgIyAo7JKUOyDskpQ7IOGEiuGFr+GGuzsg7JKUOyDhhIrhha/hhrs7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0VPU1MKK0M0OTU7QzQ5NTsxMTBBIDExNkYgMTFCQztDNDk1OzExMEEgMTE2RiAxMUJDOyAjICjskpU7IOySlTsg4YSK4YWv4Ya8OyDskpU7IOGEiuGFr+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXRU9ORworQzQ5NjtDNDk2OzExMEEgMTE2RiAxMUJEO0M0OTY7MTEwQSAxMTZGIDExQkQ7ICMgKOySljsg7JKWOyDhhIrhha/hhr07IOySljsg4YSK4YWv4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFT0oKK0M0OTc7QzQ5NzsxMTBBIDExNkYgMTFCRTtDNDk3OzExMEEgMTE2RiAxMUJFOyAjICjskpc7IOySlzsg4YSK4YWv4Ya+OyDskpc7IOGEiuGFr+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXRU9DCitDNDk4O0M0OTg7MTEwQSAxMTZGIDExQkY7QzQ5ODsxMTBBIDExNkYgMTFCRjsgIyAo7JKYOyDskpg7IOGEiuGFr+GGvzsg7JKYOyDhhIrhha/hhr87ICkgSEFOR1VMIFNZTExBQkxFIFNTV0VPSworQzQ5OTtDNDk5OzExMEEgMTE2RiAxMUMwO0M0OTk7MTEwQSAxMTZGIDExQzA7ICMgKOySmTsg7JKZOyDhhIrhha/hh4A7IOySmTsg4YSK4YWv4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFT1QKK0M0OUE7QzQ5QTsxMTBBIDExNkYgMTFDMTtDNDlBOzExMEEgMTE2RiAxMUMxOyAjICjskpo7IOySmjsg4YSK4YWv4YeBOyDskpo7IOGEiuGFr+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXRU9QCitDNDlCO0M0OUI7MTEwQSAxMTZGIDExQzI7QzQ5QjsxMTBBIDExNkYgMTFDMjsgIyAo7JKbOyDskps7IOGEiuGFr+GHgjsg7JKbOyDhhIrhha/hh4I7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0VPSAorQzQ5QztDNDlDOzExMEEgMTE3MDtDNDlDOzExMEEgMTE3MDsgIyAo7JKcOyDskpw7IOGEiuGFsDsg7JKcOyDhhIrhhbA7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0UKK0M0OUQ7QzQ5RDsxMTBBIDExNzAgMTFBODtDNDlEOzExMEEgMTE3MCAxMUE4OyAjICjskp07IOySnTsg4YSK4YWw4YaoOyDskp07IOGEiuGFsOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXRUcKK0M0OUU7QzQ5RTsxMTBBIDExNzAgMTFBOTtDNDlFOzExMEEgMTE3MCAxMUE5OyAjICjskp47IOySnjsg4YSK4YWw4YapOyDskp47IOGEiuGFsOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXRUdHCitDNDlGO0M0OUY7MTEwQSAxMTcwIDExQUE7QzQ5RjsxMTBBIDExNzAgMTFBQTsgIyAo7JKfOyDskp87IOGEiuGFsOGGqjsg7JKfOyDhhIrhhbDhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0VHUworQzRBMDtDNEEwOzExMEEgMTE3MCAxMUFCO0M0QTA7MTEwQSAxMTcwIDExQUI7ICMgKOySoDsg7JKgOyDhhIrhhbDhhqs7IOySoDsg4YSK4YWw4YarOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFTgorQzRBMTtDNEExOzExMEEgMTE3MCAxMUFDO0M0QTE7MTEwQSAxMTcwIDExQUM7ICMgKOySoTsg7JKhOyDhhIrhhbDhhqw7IOySoTsg4YSK4YWw4YasOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFTkoKK0M0QTI7QzRBMjsxMTBBIDExNzAgMTFBRDtDNEEyOzExMEEgMTE3MCAxMUFEOyAjICjskqI7IOySojsg4YSK4YWw4YatOyDskqI7IOGEiuGFsOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXRU5ICitDNEEzO0M0QTM7MTEwQSAxMTcwIDExQUU7QzRBMzsxMTBBIDExNzAgMTFBRTsgIyAo7JKjOyDskqM7IOGEiuGFsOGGrjsg7JKjOyDhhIrhhbDhhq47ICkgSEFOR1VMIFNZTExBQkxFIFNTV0VECitDNEE0O0M0QTQ7MTEwQSAxMTcwIDExQUY7QzRBNDsxMTBBIDExNzAgMTFBRjsgIyAo7JKkOyDskqQ7IOGEiuGFsOGGrzsg7JKkOyDhhIrhhbDhhq87ICkgSEFOR1VMIFNZTExBQkxFIFNTV0VMCitDNEE1O0M0QTU7MTEwQSAxMTcwIDExQjA7QzRBNTsxMTBBIDExNzAgMTFCMDsgIyAo7JKlOyDskqU7IOGEiuGFsOGGsDsg7JKlOyDhhIrhhbDhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0VMRworQzRBNjtDNEE2OzExMEEgMTE3MCAxMUIxO0M0QTY7MTEwQSAxMTcwIDExQjE7ICMgKOySpjsg7JKmOyDhhIrhhbDhhrE7IOySpjsg4YSK4YWw4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFTE0KK0M0QTc7QzRBNzsxMTBBIDExNzAgMTFCMjtDNEE3OzExMEEgMTE3MCAxMUIyOyAjICjskqc7IOySpzsg4YSK4YWw4YayOyDskqc7IOGEiuGFsOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXRUxCCitDNEE4O0M0QTg7MTEwQSAxMTcwIDExQjM7QzRBODsxMTBBIDExNzAgMTFCMzsgIyAo7JKoOyDskqg7IOGEiuGFsOGGszsg7JKoOyDhhIrhhbDhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0VMUworQzRBOTtDNEE5OzExMEEgMTE3MCAxMUI0O0M0QTk7MTEwQSAxMTcwIDExQjQ7ICMgKOySqTsg7JKpOyDhhIrhhbDhhrQ7IOySqTsg4YSK4YWw4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFTFQKK0M0QUE7QzRBQTsxMTBBIDExNzAgMTFCNTtDNEFBOzExMEEgMTE3MCAxMUI1OyAjICjskqo7IOySqjsg4YSK4YWw4Ya1OyDskqo7IOGEiuGFsOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXRUxQCitDNEFCO0M0QUI7MTEwQSAxMTcwIDExQjY7QzRBQjsxMTBBIDExNzAgMTFCNjsgIyAo7JKrOyDskqs7IOGEiuGFsOGGtjsg7JKrOyDhhIrhhbDhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0VMSAorQzRBQztDNEFDOzExMEEgMTE3MCAxMUI3O0M0QUM7MTEwQSAxMTcwIDExQjc7ICMgKOySrDsg7JKsOyDhhIrhhbDhhrc7IOySrDsg4YSK4YWw4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFTQorQzRBRDtDNEFEOzExMEEgMTE3MCAxMUI4O0M0QUQ7MTEwQSAxMTcwIDExQjg7ICMgKOySrTsg7JKtOyDhhIrhhbDhhrg7IOySrTsg4YSK4YWw4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFQgorQzRBRTtDNEFFOzExMEEgMTE3MCAxMUI5O0M0QUU7MTEwQSAxMTcwIDExQjk7ICMgKOySrjsg7JKuOyDhhIrhhbDhhrk7IOySrjsg4YSK4YWw4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFQlMKK0M0QUY7QzRBRjsxMTBBIDExNzAgMTFCQTtDNEFGOzExMEEgMTE3MCAxMUJBOyAjICjskq87IOySrzsg4YSK4YWw4Ya6OyDskq87IOGEiuGFsOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXRVMKK0M0QjA7QzRCMDsxMTBBIDExNzAgMTFCQjtDNEIwOzExMEEgMTE3MCAxMUJCOyAjICjskrA7IOySsDsg4YSK4YWw4Ya7OyDskrA7IOGEiuGFsOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXRVNTCitDNEIxO0M0QjE7MTEwQSAxMTcwIDExQkM7QzRCMTsxMTBBIDExNzAgMTFCQzsgIyAo7JKxOyDskrE7IOGEiuGFsOGGvDsg7JKxOyDhhIrhhbDhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0VORworQzRCMjtDNEIyOzExMEEgMTE3MCAxMUJEO0M0QjI7MTEwQSAxMTcwIDExQkQ7ICMgKOySsjsg7JKyOyDhhIrhhbDhhr07IOySsjsg4YSK4YWw4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFSgorQzRCMztDNEIzOzExMEEgMTE3MCAxMUJFO0M0QjM7MTEwQSAxMTcwIDExQkU7ICMgKOySszsg7JKzOyDhhIrhhbDhhr47IOySszsg4YSK4YWw4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFQworQzRCNDtDNEI0OzExMEEgMTE3MCAxMUJGO0M0QjQ7MTEwQSAxMTcwIDExQkY7ICMgKOyStDsg7JK0OyDhhIrhhbDhhr87IOyStDsg4YSK4YWw4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFSworQzRCNTtDNEI1OzExMEEgMTE3MCAxMUMwO0M0QjU7MTEwQSAxMTcwIDExQzA7ICMgKOyStTsg7JK1OyDhhIrhhbDhh4A7IOyStTsg4YSK4YWw4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFVAorQzRCNjtDNEI2OzExMEEgMTE3MCAxMUMxO0M0QjY7MTEwQSAxMTcwIDExQzE7ICMgKOyStjsg7JK2OyDhhIrhhbDhh4E7IOyStjsg4YSK4YWw4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFUAorQzRCNztDNEI3OzExMEEgMTE3MCAxMUMyO0M0Qjc7MTEwQSAxMTcwIDExQzI7ICMgKOyStzsg7JK3OyDhhIrhhbDhh4I7IOyStzsg4YSK4YWw4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dFSAorQzRCODtDNEI4OzExMEEgMTE3MTtDNEI4OzExMEEgMTE3MTsgIyAo7JK4OyDskrg7IOGEiuGFsTsg7JK4OyDhhIrhhbE7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0kKK0M0Qjk7QzRCOTsxMTBBIDExNzEgMTFBODtDNEI5OzExMEEgMTE3MSAxMUE4OyAjICjskrk7IOySuTsg4YSK4YWx4YaoOyDskrk7IOGEiuGFseGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXSUcKK0M0QkE7QzRCQTsxMTBBIDExNzEgMTFBOTtDNEJBOzExMEEgMTE3MSAxMUE5OyAjICjskro7IOySujsg4YSK4YWx4YapOyDskro7IOGEiuGFseGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXSUdHCitDNEJCO0M0QkI7MTEwQSAxMTcxIDExQUE7QzRCQjsxMTBBIDExNzEgMTFBQTsgIyAo7JK7OyDskrs7IOGEiuGFseGGqjsg7JK7OyDhhIrhhbHhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0lHUworQzRCQztDNEJDOzExMEEgMTE3MSAxMUFCO0M0QkM7MTEwQSAxMTcxIDExQUI7ICMgKOySvDsg7JK8OyDhhIrhhbHhhqs7IOySvDsg4YSK4YWx4YarOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dJTgorQzRCRDtDNEJEOzExMEEgMTE3MSAxMUFDO0M0QkQ7MTEwQSAxMTcxIDExQUM7ICMgKOySvTsg7JK9OyDhhIrhhbHhhqw7IOySvTsg4YSK4YWx4YasOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dJTkoKK0M0QkU7QzRCRTsxMTBBIDExNzEgMTFBRDtDNEJFOzExMEEgMTE3MSAxMUFEOyAjICjskr47IOySvjsg4YSK4YWx4YatOyDskr47IOGEiuGFseGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXSU5ICitDNEJGO0M0QkY7MTEwQSAxMTcxIDExQUU7QzRCRjsxMTBBIDExNzEgMTFBRTsgIyAo7JK/OyDskr87IOGEiuGFseGGrjsg7JK/OyDhhIrhhbHhhq47ICkgSEFOR1VMIFNZTExBQkxFIFNTV0lECitDNEMwO0M0QzA7MTEwQSAxMTcxIDExQUY7QzRDMDsxMTBBIDExNzEgMTFBRjsgIyAo7JOAOyDsk4A7IOGEiuGFseGGrzsg7JOAOyDhhIrhhbHhhq87ICkgSEFOR1VMIFNZTExBQkxFIFNTV0lMCitDNEMxO0M0QzE7MTEwQSAxMTcxIDExQjA7QzRDMTsxMTBBIDExNzEgMTFCMDsgIyAo7JOBOyDsk4E7IOGEiuGFseGGsDsg7JOBOyDhhIrhhbHhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0lMRworQzRDMjtDNEMyOzExMEEgMTE3MSAxMUIxO0M0QzI7MTEwQSAxMTcxIDExQjE7ICMgKOyTgjsg7JOCOyDhhIrhhbHhhrE7IOyTgjsg4YSK4YWx4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dJTE0KK0M0QzM7QzRDMzsxMTBBIDExNzEgMTFCMjtDNEMzOzExMEEgMTE3MSAxMUIyOyAjICjsk4M7IOyTgzsg4YSK4YWx4YayOyDsk4M7IOGEiuGFseGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXSUxCCitDNEM0O0M0QzQ7MTEwQSAxMTcxIDExQjM7QzRDNDsxMTBBIDExNzEgMTFCMzsgIyAo7JOEOyDsk4Q7IOGEiuGFseGGszsg7JOEOyDhhIrhhbHhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0lMUworQzRDNTtDNEM1OzExMEEgMTE3MSAxMUI0O0M0QzU7MTEwQSAxMTcxIDExQjQ7ICMgKOyThTsg7JOFOyDhhIrhhbHhhrQ7IOyThTsg4YSK4YWx4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dJTFQKK0M0QzY7QzRDNjsxMTBBIDExNzEgMTFCNTtDNEM2OzExMEEgMTE3MSAxMUI1OyAjICjsk4Y7IOyThjsg4YSK4YWx4Ya1OyDsk4Y7IOGEiuGFseGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXSUxQCitDNEM3O0M0Qzc7MTEwQSAxMTcxIDExQjY7QzRDNzsxMTBBIDExNzEgMTFCNjsgIyAo7JOHOyDsk4c7IOGEiuGFseGGtjsg7JOHOyDhhIrhhbHhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0lMSAorQzRDODtDNEM4OzExMEEgMTE3MSAxMUI3O0M0Qzg7MTEwQSAxMTcxIDExQjc7ICMgKOyTiDsg7JOIOyDhhIrhhbHhhrc7IOyTiDsg4YSK4YWx4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dJTQorQzRDOTtDNEM5OzExMEEgMTE3MSAxMUI4O0M0Qzk7MTEwQSAxMTcxIDExQjg7ICMgKOyTiTsg7JOJOyDhhIrhhbHhhrg7IOyTiTsg4YSK4YWx4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dJQgorQzRDQTtDNENBOzExMEEgMTE3MSAxMUI5O0M0Q0E7MTEwQSAxMTcxIDExQjk7ICMgKOyTijsg7JOKOyDhhIrhhbHhhrk7IOyTijsg4YSK4YWx4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dJQlMKK0M0Q0I7QzRDQjsxMTBBIDExNzEgMTFCQTtDNENCOzExMEEgMTE3MSAxMUJBOyAjICjsk4s7IOyTizsg4YSK4YWx4Ya6OyDsk4s7IOGEiuGFseGGujsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXSVMKK0M0Q0M7QzRDQzsxMTBBIDExNzEgMTFCQjtDNENDOzExMEEgMTE3MSAxMUJCOyAjICjsk4w7IOyTjDsg4YSK4YWx4Ya7OyDsk4w7IOGEiuGFseGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgU1NXSVNTCitDNENEO0M0Q0Q7MTEwQSAxMTcxIDExQkM7QzRDRDsxMTBBIDExNzEgMTFCQzsgIyAo7JONOyDsk407IOGEiuGFseGGvDsg7JONOyDhhIrhhbHhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNTV0lORworQzRDRTtDNENFOzExMEEgMTE3MSAxMUJEO0M0Q0U7MTEwQSAxMTcxIDExQkQ7ICMgKOyTjjsg7JOOOyDhhIrhhbHhhr07IOyTjjsg4YSK4YWx4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dJSgorQzRDRjtDNENGOzExMEEgMTE3MSAxMUJFO0M0Q0Y7MTEwQSAxMTcxIDExQkU7ICMgKOyTjzsg7JOPOyDhhIrhhbHhhr47IOyTjzsg4YSK4YWx4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dJQworQzREMDtDNEQwOzExMEEgMTE3MSAxMUJGO0M0RDA7MTEwQSAxMTcxIDExQkY7ICMgKOyTkDsg7JOQOyDhhIrhhbHhhr87IOyTkDsg4YSK4YWx4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTU1dJSworQzREMTtDNEQxOzExMEEgMTE3MSAxMUMwO0M0RDE7MTEwQSAxMTcxIDExQzA7ICMgKOyTkTsg7JOROyDhhIrhhbHhh4A7IOyTkTsg4YSK4YWx4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dJVAorQzREMjtDNEQyOzExMEEgMTE3MSAxMUMxO0M0RDI7MTEwQSAxMTcxIDExQzE7ICMgKOyTkjsg7JOSOyDhhIrhhbHhh4E7IOyTkjsg4YSK4YWx4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dJUAorQzREMztDNEQzOzExMEEgMTE3MSAxMUMyO0M0RDM7MTEwQSAxMTcxIDExQzI7ICMgKOyTkzsg7JOTOyDhhIrhhbHhh4I7IOyTkzsg4YSK4YWx4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTU1dJSAorQzRENDtDNEQ0OzExMEEgMTE3MjtDNEQ0OzExMEEgMTE3MjsgIyAo7JOUOyDsk5Q7IOGEiuGFsjsg7JOUOyDhhIrhhbI7ICkgSEFOR1VMIFNZTExBQkxFIFNTWVUKK0M0RDU7QzRENTsxMTBBIDExNzIgMTFBODtDNEQ1OzExMEEgMTE3MiAxMUE4OyAjICjsk5U7IOyTlTsg4YSK4YWy4YaoOyDsk5U7IOGEiuGFsuGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZVUcKK0M0RDY7QzRENjsxMTBBIDExNzIgMTFBOTtDNEQ2OzExMEEgMTE3MiAxMUE5OyAjICjsk5Y7IOyTljsg4YSK4YWy4YapOyDsk5Y7IOGEiuGFsuGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZVUdHCitDNEQ3O0M0RDc7MTEwQSAxMTcyIDExQUE7QzRENzsxMTBBIDExNzIgMTFBQTsgIyAo7JOXOyDsk5c7IOGEiuGFsuGGqjsg7JOXOyDhhIrhhbLhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNTWVVHUworQzREODtDNEQ4OzExMEEgMTE3MiAxMUFCO0M0RDg7MTEwQSAxMTcyIDExQUI7ICMgKOyTmDsg7JOYOyDhhIrhhbLhhqs7IOyTmDsg4YSK4YWy4YarOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lVTgorQzREOTtDNEQ5OzExMEEgMTE3MiAxMUFDO0M0RDk7MTEwQSAxMTcyIDExQUM7ICMgKOyTmTsg7JOZOyDhhIrhhbLhhqw7IOyTmTsg4YSK4YWy4YasOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lVTkoKK0M0REE7QzREQTsxMTBBIDExNzIgMTFBRDtDNERBOzExMEEgMTE3MiAxMUFEOyAjICjsk5o7IOyTmjsg4YSK4YWy4YatOyDsk5o7IOGEiuGFsuGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZVU5ICitDNERCO0M0REI7MTEwQSAxMTcyIDExQUU7QzREQjsxMTBBIDExNzIgMTFBRTsgIyAo7JObOyDsk5s7IOGEiuGFsuGGrjsg7JObOyDhhIrhhbLhhq47ICkgSEFOR1VMIFNZTExBQkxFIFNTWVVECitDNERDO0M0REM7MTEwQSAxMTcyIDExQUY7QzREQzsxMTBBIDExNzIgMTFBRjsgIyAo7JOcOyDsk5w7IOGEiuGFsuGGrzsg7JOcOyDhhIrhhbLhhq87ICkgSEFOR1VMIFNZTExBQkxFIFNTWVVMCitDNEREO0M0REQ7MTEwQSAxMTcyIDExQjA7QzRERDsxMTBBIDExNzIgMTFCMDsgIyAo7JOdOyDsk507IOGEiuGFsuGGsDsg7JOdOyDhhIrhhbLhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNTWVVMRworQzRERTtDNERFOzExMEEgMTE3MiAxMUIxO0M0REU7MTEwQSAxMTcyIDExQjE7ICMgKOyTnjsg7JOeOyDhhIrhhbLhhrE7IOyTnjsg4YSK4YWy4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lVTE0KK0M0REY7QzRERjsxMTBBIDExNzIgMTFCMjtDNERGOzExMEEgMTE3MiAxMUIyOyAjICjsk587IOyTnzsg4YSK4YWy4YayOyDsk587IOGEiuGFsuGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZVUxCCitDNEUwO0M0RTA7MTEwQSAxMTcyIDExQjM7QzRFMDsxMTBBIDExNzIgMTFCMzsgIyAo7JOgOyDsk6A7IOGEiuGFsuGGszsg7JOgOyDhhIrhhbLhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNTWVVMUworQzRFMTtDNEUxOzExMEEgMTE3MiAxMUI0O0M0RTE7MTEwQSAxMTcyIDExQjQ7ICMgKOyToTsg7JOhOyDhhIrhhbLhhrQ7IOyToTsg4YSK4YWy4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lVTFQKK0M0RTI7QzRFMjsxMTBBIDExNzIgMTFCNTtDNEUyOzExMEEgMTE3MiAxMUI1OyAjICjsk6I7IOyTojsg4YSK4YWy4Ya1OyDsk6I7IOGEiuGFsuGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZVUxQCitDNEUzO0M0RTM7MTEwQSAxMTcyIDExQjY7QzRFMzsxMTBBIDExNzIgMTFCNjsgIyAo7JOjOyDsk6M7IOGEiuGFsuGGtjsg7JOjOyDhhIrhhbLhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNTWVVMSAorQzRFNDtDNEU0OzExMEEgMTE3MiAxMUI3O0M0RTQ7MTEwQSAxMTcyIDExQjc7ICMgKOyTpDsg7JOkOyDhhIrhhbLhhrc7IOyTpDsg4YSK4YWy4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lVTQorQzRFNTtDNEU1OzExMEEgMTE3MiAxMUI4O0M0RTU7MTEwQSAxMTcyIDExQjg7ICMgKOyTpTsg7JOlOyDhhIrhhbLhhrg7IOyTpTsg4YSK4YWy4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lVQgorQzRFNjtDNEU2OzExMEEgMTE3MiAxMUI5O0M0RTY7MTEwQSAxMTcyIDExQjk7ICMgKOyTpjsg7JOmOyDhhIrhhbLhhrk7IOyTpjsg4YSK4YWy4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lVQlMKK0M0RTc7QzRFNzsxMTBBIDExNzIgMTFCQTtDNEU3OzExMEEgMTE3MiAxMUJBOyAjICjsk6c7IOyTpzsg4YSK4YWy4Ya6OyDsk6c7IOGEiuGFsuGGujsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZVVMKK0M0RTg7QzRFODsxMTBBIDExNzIgMTFCQjtDNEU4OzExMEEgMTE3MiAxMUJCOyAjICjsk6g7IOyTqDsg4YSK4YWy4Ya7OyDsk6g7IOGEiuGFsuGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZVVNTCitDNEU5O0M0RTk7MTEwQSAxMTcyIDExQkM7QzRFOTsxMTBBIDExNzIgMTFCQzsgIyAo7JOpOyDsk6k7IOGEiuGFsuGGvDsg7JOpOyDhhIrhhbLhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNTWVVORworQzRFQTtDNEVBOzExMEEgMTE3MiAxMUJEO0M0RUE7MTEwQSAxMTcyIDExQkQ7ICMgKOyTqjsg7JOqOyDhhIrhhbLhhr07IOyTqjsg4YSK4YWy4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lVSgorQzRFQjtDNEVCOzExMEEgMTE3MiAxMUJFO0M0RUI7MTEwQSAxMTcyIDExQkU7ICMgKOyTqzsg7JOrOyDhhIrhhbLhhr47IOyTqzsg4YSK4YWy4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lVQworQzRFQztDNEVDOzExMEEgMTE3MiAxMUJGO0M0RUM7MTEwQSAxMTcyIDExQkY7ICMgKOyTrDsg7JOsOyDhhIrhhbLhhr87IOyTrDsg4YSK4YWy4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lVSworQzRFRDtDNEVEOzExMEEgMTE3MiAxMUMwO0M0RUQ7MTEwQSAxMTcyIDExQzA7ICMgKOyTrTsg7JOtOyDhhIrhhbLhh4A7IOyTrTsg4YSK4YWy4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lVVAorQzRFRTtDNEVFOzExMEEgMTE3MiAxMUMxO0M0RUU7MTEwQSAxMTcyIDExQzE7ICMgKOyTrjsg7JOuOyDhhIrhhbLhh4E7IOyTrjsg4YSK4YWy4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lVUAorQzRFRjtDNEVGOzExMEEgMTE3MiAxMUMyO0M0RUY7MTEwQSAxMTcyIDExQzI7ICMgKOyTrzsg7JOvOyDhhIrhhbLhh4I7IOyTrzsg4YSK4YWy4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lVSAorQzRGMDtDNEYwOzExMEEgMTE3MztDNEYwOzExMEEgMTE3MzsgIyAo7JOwOyDsk7A7IOGEiuGFszsg7JOwOyDhhIrhhbM7ICkgSEFOR1VMIFNZTExBQkxFIFNTRVUKK0M0RjE7QzRGMTsxMTBBIDExNzMgMTFBODtDNEYxOzExMEEgMTE3MyAxMUE4OyAjICjsk7E7IOyTsTsg4YSK4YWz4YaoOyDsk7E7IOGEiuGFs+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NFVUcKK0M0RjI7QzRGMjsxMTBBIDExNzMgMTFBOTtDNEYyOzExMEEgMTE3MyAxMUE5OyAjICjsk7I7IOyTsjsg4YSK4YWz4YapOyDsk7I7IOGEiuGFs+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NFVUdHCitDNEYzO0M0RjM7MTEwQSAxMTczIDExQUE7QzRGMzsxMTBBIDExNzMgMTFBQTsgIyAo7JOzOyDsk7M7IOGEiuGFs+GGqjsg7JOzOyDhhIrhhbPhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNTRVVHUworQzRGNDtDNEY0OzExMEEgMTE3MyAxMUFCO0M0RjQ7MTEwQSAxMTczIDExQUI7ICMgKOyTtDsg7JO0OyDhhIrhhbPhhqs7IOyTtDsg4YSK4YWz4YarOyApIEhBTkdVTCBTWUxMQUJMRSBTU0VVTgorQzRGNTtDNEY1OzExMEEgMTE3MyAxMUFDO0M0RjU7MTEwQSAxMTczIDExQUM7ICMgKOyTtTsg7JO1OyDhhIrhhbPhhqw7IOyTtTsg4YSK4YWz4YasOyApIEhBTkdVTCBTWUxMQUJMRSBTU0VVTkoKK0M0RjY7QzRGNjsxMTBBIDExNzMgMTFBRDtDNEY2OzExMEEgMTE3MyAxMUFEOyAjICjsk7Y7IOyTtjsg4YSK4YWz4YatOyDsk7Y7IOGEiuGFs+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NFVU5ICitDNEY3O0M0Rjc7MTEwQSAxMTczIDExQUU7QzRGNzsxMTBBIDExNzMgMTFBRTsgIyAo7JO3OyDsk7c7IOGEiuGFs+GGrjsg7JO3OyDhhIrhhbPhhq47ICkgSEFOR1VMIFNZTExBQkxFIFNTRVVECitDNEY4O0M0Rjg7MTEwQSAxMTczIDExQUY7QzRGODsxMTBBIDExNzMgMTFBRjsgIyAo7JO4OyDsk7g7IOGEiuGFs+GGrzsg7JO4OyDhhIrhhbPhhq87ICkgSEFOR1VMIFNZTExBQkxFIFNTRVVMCitDNEY5O0M0Rjk7MTEwQSAxMTczIDExQjA7QzRGOTsxMTBBIDExNzMgMTFCMDsgIyAo7JO5OyDsk7k7IOGEiuGFs+GGsDsg7JO5OyDhhIrhhbPhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNTRVVMRworQzRGQTtDNEZBOzExMEEgMTE3MyAxMUIxO0M0RkE7MTEwQSAxMTczIDExQjE7ICMgKOyTujsg7JO6OyDhhIrhhbPhhrE7IOyTujsg4YSK4YWz4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTU0VVTE0KK0M0RkI7QzRGQjsxMTBBIDExNzMgMTFCMjtDNEZCOzExMEEgMTE3MyAxMUIyOyAjICjsk7s7IOyTuzsg4YSK4YWz4YayOyDsk7s7IOGEiuGFs+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NFVUxCCitDNEZDO0M0RkM7MTEwQSAxMTczIDExQjM7QzRGQzsxMTBBIDExNzMgMTFCMzsgIyAo7JO8OyDsk7w7IOGEiuGFs+GGszsg7JO8OyDhhIrhhbPhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNTRVVMUworQzRGRDtDNEZEOzExMEEgMTE3MyAxMUI0O0M0RkQ7MTEwQSAxMTczIDExQjQ7ICMgKOyTvTsg7JO9OyDhhIrhhbPhhrQ7IOyTvTsg4YSK4YWz4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTU0VVTFQKK0M0RkU7QzRGRTsxMTBBIDExNzMgMTFCNTtDNEZFOzExMEEgMTE3MyAxMUI1OyAjICjsk747IOyTvjsg4YSK4YWz4Ya1OyDsk747IOGEiuGFs+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NFVUxQCitDNEZGO0M0RkY7MTEwQSAxMTczIDExQjY7QzRGRjsxMTBBIDExNzMgMTFCNjsgIyAo7JO/OyDsk787IOGEiuGFs+GGtjsg7JO/OyDhhIrhhbPhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNTRVVMSAorQzUwMDtDNTAwOzExMEEgMTE3MyAxMUI3O0M1MDA7MTEwQSAxMTczIDExQjc7ICMgKOyUgDsg7JSAOyDhhIrhhbPhhrc7IOyUgDsg4YSK4YWz4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTU0VVTQorQzUwMTtDNTAxOzExMEEgMTE3MyAxMUI4O0M1MDE7MTEwQSAxMTczIDExQjg7ICMgKOyUgTsg7JSBOyDhhIrhhbPhhrg7IOyUgTsg4YSK4YWz4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBTU0VVQgorQzUwMjtDNTAyOzExMEEgMTE3MyAxMUI5O0M1MDI7MTEwQSAxMTczIDExQjk7ICMgKOyUgjsg7JSCOyDhhIrhhbPhhrk7IOyUgjsg4YSK4YWz4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTU0VVQlMKK0M1MDM7QzUwMzsxMTBBIDExNzMgMTFCQTtDNTAzOzExMEEgMTE3MyAxMUJBOyAjICjslIM7IOyUgzsg4YSK4YWz4Ya6OyDslIM7IOGEiuGFs+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgU1NFVVMKK0M1MDQ7QzUwNDsxMTBBIDExNzMgMTFCQjtDNTA0OzExMEEgMTE3MyAxMUJCOyAjICjslIQ7IOyUhDsg4YSK4YWz4Ya7OyDslIQ7IOGEiuGFs+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgU1NFVVNTCitDNTA1O0M1MDU7MTEwQSAxMTczIDExQkM7QzUwNTsxMTBBIDExNzMgMTFCQzsgIyAo7JSFOyDslIU7IOGEiuGFs+GGvDsg7JSFOyDhhIrhhbPhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNTRVVORworQzUwNjtDNTA2OzExMEEgMTE3MyAxMUJEO0M1MDY7MTEwQSAxMTczIDExQkQ7ICMgKOyUhjsg7JSGOyDhhIrhhbPhhr07IOyUhjsg4YSK4YWz4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTU0VVSgorQzUwNztDNTA3OzExMEEgMTE3MyAxMUJFO0M1MDc7MTEwQSAxMTczIDExQkU7ICMgKOyUhzsg7JSHOyDhhIrhhbPhhr47IOyUhzsg4YSK4YWz4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBTU0VVQworQzUwODtDNTA4OzExMEEgMTE3MyAxMUJGO0M1MDg7MTEwQSAxMTczIDExQkY7ICMgKOyUiDsg7JSIOyDhhIrhhbPhhr87IOyUiDsg4YSK4YWz4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTU0VVSworQzUwOTtDNTA5OzExMEEgMTE3MyAxMUMwO0M1MDk7MTEwQSAxMTczIDExQzA7ICMgKOyUiTsg7JSJOyDhhIrhhbPhh4A7IOyUiTsg4YSK4YWz4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTU0VVVAorQzUwQTtDNTBBOzExMEEgMTE3MyAxMUMxO0M1MEE7MTEwQSAxMTczIDExQzE7ICMgKOyUijsg7JSKOyDhhIrhhbPhh4E7IOyUijsg4YSK4YWz4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBTU0VVUAorQzUwQjtDNTBCOzExMEEgMTE3MyAxMUMyO0M1MEI7MTEwQSAxMTczIDExQzI7ICMgKOyUizsg7JSLOyDhhIrhhbPhh4I7IOyUizsg4YSK4YWz4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTU0VVSAorQzUwQztDNTBDOzExMEEgMTE3NDtDNTBDOzExMEEgMTE3NDsgIyAo7JSMOyDslIw7IOGEiuGFtDsg7JSMOyDhhIrhhbQ7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUkKK0M1MEQ7QzUwRDsxMTBBIDExNzQgMTFBODtDNTBEOzExMEEgMTE3NCAxMUE4OyAjICjslI07IOyUjTsg4YSK4YW04YaoOyDslI07IOGEiuGFtOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZSUcKK0M1MEU7QzUwRTsxMTBBIDExNzQgMTFBOTtDNTBFOzExMEEgMTE3NCAxMUE5OyAjICjslI47IOyUjjsg4YSK4YW04YapOyDslI47IOGEiuGFtOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZSUdHCitDNTBGO0M1MEY7MTEwQSAxMTc0IDExQUE7QzUwRjsxMTBBIDExNzQgMTFBQTsgIyAo7JSPOyDslI87IOGEiuGFtOGGqjsg7JSPOyDhhIrhhbThhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUlHUworQzUxMDtDNTEwOzExMEEgMTE3NCAxMUFCO0M1MTA7MTEwQSAxMTc0IDExQUI7ICMgKOyUkDsg7JSQOyDhhIrhhbThhqs7IOyUkDsg4YSK4YW04YarOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lJTgorQzUxMTtDNTExOzExMEEgMTE3NCAxMUFDO0M1MTE7MTEwQSAxMTc0IDExQUM7ICMgKOyUkTsg7JSROyDhhIrhhbThhqw7IOyUkTsg4YSK4YW04YasOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lJTkoKK0M1MTI7QzUxMjsxMTBBIDExNzQgMTFBRDtDNTEyOzExMEEgMTE3NCAxMUFEOyAjICjslJI7IOyUkjsg4YSK4YW04YatOyDslJI7IOGEiuGFtOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZSU5ICitDNTEzO0M1MTM7MTEwQSAxMTc0IDExQUU7QzUxMzsxMTBBIDExNzQgMTFBRTsgIyAo7JSTOyDslJM7IOGEiuGFtOGGrjsg7JSTOyDhhIrhhbThhq47ICkgSEFOR1VMIFNZTExBQkxFIFNTWUlECitDNTE0O0M1MTQ7MTEwQSAxMTc0IDExQUY7QzUxNDsxMTBBIDExNzQgMTFBRjsgIyAo7JSUOyDslJQ7IOGEiuGFtOGGrzsg7JSUOyDhhIrhhbThhq87ICkgSEFOR1VMIFNZTExBQkxFIFNTWUlMCitDNTE1O0M1MTU7MTEwQSAxMTc0IDExQjA7QzUxNTsxMTBBIDExNzQgMTFCMDsgIyAo7JSVOyDslJU7IOGEiuGFtOGGsDsg7JSVOyDhhIrhhbThhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUlMRworQzUxNjtDNTE2OzExMEEgMTE3NCAxMUIxO0M1MTY7MTEwQSAxMTc0IDExQjE7ICMgKOyUljsg7JSWOyDhhIrhhbThhrE7IOyUljsg4YSK4YW04YaxOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lJTE0KK0M1MTc7QzUxNzsxMTBBIDExNzQgMTFCMjtDNTE3OzExMEEgMTE3NCAxMUIyOyAjICjslJc7IOyUlzsg4YSK4YW04YayOyDslJc7IOGEiuGFtOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZSUxCCitDNTE4O0M1MTg7MTEwQSAxMTc0IDExQjM7QzUxODsxMTBBIDExNzQgMTFCMzsgIyAo7JSYOyDslJg7IOGEiuGFtOGGszsg7JSYOyDhhIrhhbThhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUlMUworQzUxOTtDNTE5OzExMEEgMTE3NCAxMUI0O0M1MTk7MTEwQSAxMTc0IDExQjQ7ICMgKOyUmTsg7JSZOyDhhIrhhbThhrQ7IOyUmTsg4YSK4YW04Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lJTFQKK0M1MUE7QzUxQTsxMTBBIDExNzQgMTFCNTtDNTFBOzExMEEgMTE3NCAxMUI1OyAjICjslJo7IOyUmjsg4YSK4YW04Ya1OyDslJo7IOGEiuGFtOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZSUxQCitDNTFCO0M1MUI7MTEwQSAxMTc0IDExQjY7QzUxQjsxMTBBIDExNzQgMTFCNjsgIyAo7JSbOyDslJs7IOGEiuGFtOGGtjsg7JSbOyDhhIrhhbThhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUlMSAorQzUxQztDNTFDOzExMEEgMTE3NCAxMUI3O0M1MUM7MTEwQSAxMTc0IDExQjc7ICMgKOyUnDsg7JScOyDhhIrhhbThhrc7IOyUnDsg4YSK4YW04Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lJTQorQzUxRDtDNTFEOzExMEEgMTE3NCAxMUI4O0M1MUQ7MTEwQSAxMTc0IDExQjg7ICMgKOyUnTsg7JSdOyDhhIrhhbThhrg7IOyUnTsg4YSK4YW04Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lJQgorQzUxRTtDNTFFOzExMEEgMTE3NCAxMUI5O0M1MUU7MTEwQSAxMTc0IDExQjk7ICMgKOyUnjsg7JSeOyDhhIrhhbThhrk7IOyUnjsg4YSK4YW04Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lJQlMKK0M1MUY7QzUxRjsxMTBBIDExNzQgMTFCQTtDNTFGOzExMEEgMTE3NCAxMUJBOyAjICjslJ87IOyUnzsg4YSK4YW04Ya6OyDslJ87IOGEiuGFtOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZSVMKK0M1MjA7QzUyMDsxMTBBIDExNzQgMTFCQjtDNTIwOzExMEEgMTE3NCAxMUJCOyAjICjslKA7IOyUoDsg4YSK4YW04Ya7OyDslKA7IOGEiuGFtOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgU1NZSVNTCitDNTIxO0M1MjE7MTEwQSAxMTc0IDExQkM7QzUyMTsxMTBBIDExNzQgMTFCQzsgIyAo7JShOyDslKE7IOGEiuGFtOGGvDsg7JShOyDhhIrhhbThhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNTWUlORworQzUyMjtDNTIyOzExMEEgMTE3NCAxMUJEO0M1MjI7MTEwQSAxMTc0IDExQkQ7ICMgKOyUojsg7JSiOyDhhIrhhbThhr07IOyUojsg4YSK4YW04Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lJSgorQzUyMztDNTIzOzExMEEgMTE3NCAxMUJFO0M1MjM7MTEwQSAxMTc0IDExQkU7ICMgKOyUozsg7JSjOyDhhIrhhbThhr47IOyUozsg4YSK4YW04Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lJQworQzUyNDtDNTI0OzExMEEgMTE3NCAxMUJGO0M1MjQ7MTEwQSAxMTc0IDExQkY7ICMgKOyUpDsg7JSkOyDhhIrhhbThhr87IOyUpDsg4YSK4YW04Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTU1lJSworQzUyNTtDNTI1OzExMEEgMTE3NCAxMUMwO0M1MjU7MTEwQSAxMTc0IDExQzA7ICMgKOyUpTsg7JSlOyDhhIrhhbThh4A7IOyUpTsg4YSK4YW04YeAOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lJVAorQzUyNjtDNTI2OzExMEEgMTE3NCAxMUMxO0M1MjY7MTEwQSAxMTc0IDExQzE7ICMgKOyUpjsg7JSmOyDhhIrhhbThh4E7IOyUpjsg4YSK4YW04YeBOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lJUAorQzUyNztDNTI3OzExMEEgMTE3NCAxMUMyO0M1Mjc7MTEwQSAxMTc0IDExQzI7ICMgKOyUpzsg7JSnOyDhhIrhhbThh4I7IOyUpzsg4YSK4YW04YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTU1lJSAorQzUyODtDNTI4OzExMEEgMTE3NTtDNTI4OzExMEEgMTE3NTsgIyAo7JSoOyDslKg7IOGEiuGFtTsg7JSoOyDhhIrhhbU7ICkgSEFOR1VMIFNZTExBQkxFIFNTSQorQzUyOTtDNTI5OzExMEEgMTE3NSAxMUE4O0M1Mjk7MTEwQSAxMTc1IDExQTg7ICMgKOyUqTsg7JSpOyDhhIrhhbXhhqg7IOyUqTsg4YSK4YW14YaoOyApIEhBTkdVTCBTWUxMQUJMRSBTU0lHCitDNTJBO0M1MkE7MTEwQSAxMTc1IDExQTk7QzUyQTsxMTBBIDExNzUgMTFBOTsgIyAo7JSqOyDslKo7IOGEiuGFteGGqTsg7JSqOyDhhIrhhbXhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFNTSUdHCitDNTJCO0M1MkI7MTEwQSAxMTc1IDExQUE7QzUyQjsxMTBBIDExNzUgMTFBQTsgIyAo7JSrOyDslKs7IOGEiuGFteGGqjsg7JSrOyDhhIrhhbXhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFNTSUdTCitDNTJDO0M1MkM7MTEwQSAxMTc1IDExQUI7QzUyQzsxMTBBIDExNzUgMTFBQjsgIyAo7JSsOyDslKw7IOGEiuGFteGGqzsg7JSsOyDhhIrhhbXhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFNTSU4KK0M1MkQ7QzUyRDsxMTBBIDExNzUgMTFBQztDNTJEOzExMEEgMTE3NSAxMUFDOyAjICjslK07IOyUrTsg4YSK4YW14YasOyDslK07IOGEiuGFteGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NJTkoKK0M1MkU7QzUyRTsxMTBBIDExNzUgMTFBRDtDNTJFOzExMEEgMTE3NSAxMUFEOyAjICjslK47IOyUrjsg4YSK4YW14YatOyDslK47IOGEiuGFteGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NJTkgKK0M1MkY7QzUyRjsxMTBBIDExNzUgMTFBRTtDNTJGOzExMEEgMTE3NSAxMUFFOyAjICjslK87IOyUrzsg4YSK4YW14YauOyDslK87IOGEiuGFteGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NJRAorQzUzMDtDNTMwOzExMEEgMTE3NSAxMUFGO0M1MzA7MTEwQSAxMTc1IDExQUY7ICMgKOyUsDsg7JSwOyDhhIrhhbXhhq87IOyUsDsg4YSK4YW14YavOyApIEhBTkdVTCBTWUxMQUJMRSBTU0lMCitDNTMxO0M1MzE7MTEwQSAxMTc1IDExQjA7QzUzMTsxMTBBIDExNzUgMTFCMDsgIyAo7JSxOyDslLE7IOGEiuGFteGGsDsg7JSxOyDhhIrhhbXhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFNTSUxHCitDNTMyO0M1MzI7MTEwQSAxMTc1IDExQjE7QzUzMjsxMTBBIDExNzUgMTFCMTsgIyAo7JSyOyDslLI7IOGEiuGFteGGsTsg7JSyOyDhhIrhhbXhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFNTSUxNCitDNTMzO0M1MzM7MTEwQSAxMTc1IDExQjI7QzUzMzsxMTBBIDExNzUgMTFCMjsgIyAo7JSzOyDslLM7IOGEiuGFteGGsjsg7JSzOyDhhIrhhbXhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFNTSUxCCitDNTM0O0M1MzQ7MTEwQSAxMTc1IDExQjM7QzUzNDsxMTBBIDExNzUgMTFCMzsgIyAo7JS0OyDslLQ7IOGEiuGFteGGszsg7JS0OyDhhIrhhbXhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFNTSUxTCitDNTM1O0M1MzU7MTEwQSAxMTc1IDExQjQ7QzUzNTsxMTBBIDExNzUgMTFCNDsgIyAo7JS1OyDslLU7IOGEiuGFteGGtDsg7JS1OyDhhIrhhbXhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFNTSUxUCitDNTM2O0M1MzY7MTEwQSAxMTc1IDExQjU7QzUzNjsxMTBBIDExNzUgMTFCNTsgIyAo7JS2OyDslLY7IOGEiuGFteGGtTsg7JS2OyDhhIrhhbXhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFNTSUxQCitDNTM3O0M1Mzc7MTEwQSAxMTc1IDExQjY7QzUzNzsxMTBBIDExNzUgMTFCNjsgIyAo7JS3OyDslLc7IOGEiuGFteGGtjsg7JS3OyDhhIrhhbXhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFNTSUxICitDNTM4O0M1Mzg7MTEwQSAxMTc1IDExQjc7QzUzODsxMTBBIDExNzUgMTFCNzsgIyAo7JS4OyDslLg7IOGEiuGFteGGtzsg7JS4OyDhhIrhhbXhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFNTSU0KK0M1Mzk7QzUzOTsxMTBBIDExNzUgMTFCODtDNTM5OzExMEEgMTE3NSAxMUI4OyAjICjslLk7IOyUuTsg4YSK4YW14Ya4OyDslLk7IOGEiuGFteGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgU1NJQgorQzUzQTtDNTNBOzExMEEgMTE3NSAxMUI5O0M1M0E7MTEwQSAxMTc1IDExQjk7ICMgKOyUujsg7JS6OyDhhIrhhbXhhrk7IOyUujsg4YSK4YW14Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBTU0lCUworQzUzQjtDNTNCOzExMEEgMTE3NSAxMUJBO0M1M0I7MTEwQSAxMTc1IDExQkE7ICMgKOyUuzsg7JS7OyDhhIrhhbXhhro7IOyUuzsg4YSK4YW14Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBTU0lTCitDNTNDO0M1M0M7MTEwQSAxMTc1IDExQkI7QzUzQzsxMTBBIDExNzUgMTFCQjsgIyAo7JS8OyDslLw7IOGEiuGFteGGuzsg7JS8OyDhhIrhhbXhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFNTSVNTCitDNTNEO0M1M0Q7MTEwQSAxMTc1IDExQkM7QzUzRDsxMTBBIDExNzUgMTFCQzsgIyAo7JS9OyDslL07IOGEiuGFteGGvDsg7JS9OyDhhIrhhbXhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFNTSU5HCitDNTNFO0M1M0U7MTEwQSAxMTc1IDExQkQ7QzUzRTsxMTBBIDExNzUgMTFCRDsgIyAo7JS+OyDslL47IOGEiuGFteGGvTsg7JS+OyDhhIrhhbXhhr07ICkgSEFOR1VMIFNZTExBQkxFIFNTSUoKK0M1M0Y7QzUzRjsxMTBBIDExNzUgMTFCRTtDNTNGOzExMEEgMTE3NSAxMUJFOyAjICjslL87IOyUvzsg4YSK4YW14Ya+OyDslL87IOGEiuGFteGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgU1NJQworQzU0MDtDNTQwOzExMEEgMTE3NSAxMUJGO0M1NDA7MTEwQSAxMTc1IDExQkY7ICMgKOyVgDsg7JWAOyDhhIrhhbXhhr87IOyVgDsg4YSK4YW14Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBTU0lLCitDNTQxO0M1NDE7MTEwQSAxMTc1IDExQzA7QzU0MTsxMTBBIDExNzUgMTFDMDsgIyAo7JWBOyDslYE7IOGEiuGFteGHgDsg7JWBOyDhhIrhhbXhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFNTSVQKK0M1NDI7QzU0MjsxMTBBIDExNzUgMTFDMTtDNTQyOzExMEEgMTE3NSAxMUMxOyAjICjslYI7IOyVgjsg4YSK4YW14YeBOyDslYI7IOGEiuGFteGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgU1NJUAorQzU0MztDNTQzOzExMEEgMTE3NSAxMUMyO0M1NDM7MTEwQSAxMTc1IDExQzI7ICMgKOyVgzsg7JWDOyDhhIrhhbXhh4I7IOyVgzsg4YSK4YW14YeCOyApIEhBTkdVTCBTWUxMQUJMRSBTU0lICitDNTQ0O0M1NDQ7MTEwQiAxMTYxO0M1NDQ7MTEwQiAxMTYxOyAjICjslYQ7IOyVhDsg4YSL4YWhOyDslYQ7IOGEi+GFoTsgKSBIQU5HVUwgU1lMTEFCTEUgQQorQzU0NTtDNTQ1OzExMEIgMTE2MSAxMUE4O0M1NDU7MTEwQiAxMTYxIDExQTg7ICMgKOyVhTsg7JWFOyDhhIvhhaHhhqg7IOyVhTsg4YSL4YWh4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBBRworQzU0NjtDNTQ2OzExMEIgMTE2MSAxMUE5O0M1NDY7MTEwQiAxMTYxIDExQTk7ICMgKOyVhjsg7JWGOyDhhIvhhaHhhqk7IOyVhjsg4YSL4YWh4YapOyApIEhBTkdVTCBTWUxMQUJMRSBBR0cKK0M1NDc7QzU0NzsxMTBCIDExNjEgMTFBQTtDNTQ3OzExMEIgMTE2MSAxMUFBOyAjICjslYc7IOyVhzsg4YSL4YWh4YaqOyDslYc7IOGEi+GFoeGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQUdTCitDNTQ4O0M1NDg7MTEwQiAxMTYxIDExQUI7QzU0ODsxMTBCIDExNjEgMTFBQjsgIyAo7JWIOyDslYg7IOGEi+GFoeGGqzsg7JWIOyDhhIvhhaHhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEFOCitDNTQ5O0M1NDk7MTEwQiAxMTYxIDExQUM7QzU0OTsxMTBCIDExNjEgMTFBQzsgIyAo7JWJOyDslYk7IOGEi+GFoeGGrDsg7JWJOyDhhIvhhaHhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEFOSgorQzU0QTtDNTRBOzExMEIgMTE2MSAxMUFEO0M1NEE7MTEwQiAxMTYxIDExQUQ7ICMgKOyVijsg7JWKOyDhhIvhhaHhhq07IOyVijsg4YSL4YWh4YatOyApIEhBTkdVTCBTWUxMQUJMRSBBTkgKK0M1NEI7QzU0QjsxMTBCIDExNjEgMTFBRTtDNTRCOzExMEIgMTE2MSAxMUFFOyAjICjslYs7IOyVizsg4YSL4YWh4YauOyDslYs7IOGEi+GFoeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQUQKK0M1NEM7QzU0QzsxMTBCIDExNjEgMTFBRjtDNTRDOzExMEIgMTE2MSAxMUFGOyAjICjslYw7IOyVjDsg4YSL4YWh4YavOyDslYw7IOGEi+GFoeGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQUwKK0M1NEQ7QzU0RDsxMTBCIDExNjEgMTFCMDtDNTREOzExMEIgMTE2MSAxMUIwOyAjICjslY07IOyVjTsg4YSL4YWh4YawOyDslY07IOGEi+GFoeGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQUxHCitDNTRFO0M1NEU7MTEwQiAxMTYxIDExQjE7QzU0RTsxMTBCIDExNjEgMTFCMTsgIyAo7JWOOyDslY47IOGEi+GFoeGGsTsg7JWOOyDhhIvhhaHhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEFMTQorQzU0RjtDNTRGOzExMEIgMTE2MSAxMUIyO0M1NEY7MTEwQiAxMTYxIDExQjI7ICMgKOyVjzsg7JWPOyDhhIvhhaHhhrI7IOyVjzsg4YSL4YWh4YayOyApIEhBTkdVTCBTWUxMQUJMRSBBTEIKK0M1NTA7QzU1MDsxMTBCIDExNjEgMTFCMztDNTUwOzExMEIgMTE2MSAxMUIzOyAjICjslZA7IOyVkDsg4YSL4YWh4YazOyDslZA7IOGEi+GFoeGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQUxTCitDNTUxO0M1NTE7MTEwQiAxMTYxIDExQjQ7QzU1MTsxMTBCIDExNjEgMTFCNDsgIyAo7JWROyDslZE7IOGEi+GFoeGGtDsg7JWROyDhhIvhhaHhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEFMVAorQzU1MjtDNTUyOzExMEIgMTE2MSAxMUI1O0M1NTI7MTEwQiAxMTYxIDExQjU7ICMgKOyVkjsg7JWSOyDhhIvhhaHhhrU7IOyVkjsg4YSL4YWh4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBBTFAKK0M1NTM7QzU1MzsxMTBCIDExNjEgMTFCNjtDNTUzOzExMEIgMTE2MSAxMUI2OyAjICjslZM7IOyVkzsg4YSL4YWh4Ya2OyDslZM7IOGEi+GFoeGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQUxICitDNTU0O0M1NTQ7MTEwQiAxMTYxIDExQjc7QzU1NDsxMTBCIDExNjEgMTFCNzsgIyAo7JWUOyDslZQ7IOGEi+GFoeGGtzsg7JWUOyDhhIvhhaHhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEFNCitDNTU1O0M1NTU7MTEwQiAxMTYxIDExQjg7QzU1NTsxMTBCIDExNjEgMTFCODsgIyAo7JWVOyDslZU7IOGEi+GFoeGGuDsg7JWVOyDhhIvhhaHhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEFCCitDNTU2O0M1NTY7MTEwQiAxMTYxIDExQjk7QzU1NjsxMTBCIDExNjEgMTFCOTsgIyAo7JWWOyDslZY7IOGEi+GFoeGGuTsg7JWWOyDhhIvhhaHhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEFCUworQzU1NztDNTU3OzExMEIgMTE2MSAxMUJBO0M1NTc7MTEwQiAxMTYxIDExQkE7ICMgKOyVlzsg7JWXOyDhhIvhhaHhhro7IOyVlzsg4YSL4YWh4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBBUworQzU1ODtDNTU4OzExMEIgMTE2MSAxMUJCO0M1NTg7MTEwQiAxMTYxIDExQkI7ICMgKOyVmDsg7JWYOyDhhIvhhaHhhrs7IOyVmDsg4YSL4YWh4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBBU1MKK0M1NTk7QzU1OTsxMTBCIDExNjEgMTFCQztDNTU5OzExMEIgMTE2MSAxMUJDOyAjICjslZk7IOyVmTsg4YSL4YWh4Ya8OyDslZk7IOGEi+GFoeGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQU5HCitDNTVBO0M1NUE7MTEwQiAxMTYxIDExQkQ7QzU1QTsxMTBCIDExNjEgMTFCRDsgIyAo7JWaOyDslZo7IOGEi+GFoeGGvTsg7JWaOyDhhIvhhaHhhr07ICkgSEFOR1VMIFNZTExBQkxFIEFKCitDNTVCO0M1NUI7MTEwQiAxMTYxIDExQkU7QzU1QjsxMTBCIDExNjEgMTFCRTsgIyAo7JWbOyDslZs7IOGEi+GFoeGGvjsg7JWbOyDhhIvhhaHhhr47ICkgSEFOR1VMIFNZTExBQkxFIEFDCitDNTVDO0M1NUM7MTEwQiAxMTYxIDExQkY7QzU1QzsxMTBCIDExNjEgMTFCRjsgIyAo7JWcOyDslZw7IOGEi+GFoeGGvzsg7JWcOyDhhIvhhaHhhr87ICkgSEFOR1VMIFNZTExBQkxFIEFLCitDNTVEO0M1NUQ7MTEwQiAxMTYxIDExQzA7QzU1RDsxMTBCIDExNjEgMTFDMDsgIyAo7JWdOyDslZ07IOGEi+GFoeGHgDsg7JWdOyDhhIvhhaHhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEFUCitDNTVFO0M1NUU7MTEwQiAxMTYxIDExQzE7QzU1RTsxMTBCIDExNjEgMTFDMTsgIyAo7JWeOyDslZ47IOGEi+GFoeGHgTsg7JWeOyDhhIvhhaHhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEFQCitDNTVGO0M1NUY7MTEwQiAxMTYxIDExQzI7QzU1RjsxMTBCIDExNjEgMTFDMjsgIyAo7JWfOyDslZ87IOGEi+GFoeGHgjsg7JWfOyDhhIvhhaHhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEFICitDNTYwO0M1NjA7MTEwQiAxMTYyO0M1NjA7MTEwQiAxMTYyOyAjICjslaA7IOyVoDsg4YSL4YWiOyDslaA7IOGEi+GFojsgKSBIQU5HVUwgU1lMTEFCTEUgQUUKK0M1NjE7QzU2MTsxMTBCIDExNjIgMTFBODtDNTYxOzExMEIgMTE2MiAxMUE4OyAjICjslaE7IOyVoTsg4YSL4YWi4YaoOyDslaE7IOGEi+GFouGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgQUVHCitDNTYyO0M1NjI7MTEwQiAxMTYyIDExQTk7QzU2MjsxMTBCIDExNjIgMTFBOTsgIyAo7JWiOyDslaI7IOGEi+GFouGGqTsg7JWiOyDhhIvhhaLhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEFFR0cKK0M1NjM7QzU2MzsxMTBCIDExNjIgMTFBQTtDNTYzOzExMEIgMTE2MiAxMUFBOyAjICjslaM7IOyVozsg4YSL4YWi4YaqOyDslaM7IOGEi+GFouGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQUVHUworQzU2NDtDNTY0OzExMEIgMTE2MiAxMUFCO0M1NjQ7MTEwQiAxMTYyIDExQUI7ICMgKOyVpDsg7JWkOyDhhIvhhaLhhqs7IOyVpDsg4YSL4YWi4YarOyApIEhBTkdVTCBTWUxMQUJMRSBBRU4KK0M1NjU7QzU2NTsxMTBCIDExNjIgMTFBQztDNTY1OzExMEIgMTE2MiAxMUFDOyAjICjslaU7IOyVpTsg4YSL4YWi4YasOyDslaU7IOGEi+GFouGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgQUVOSgorQzU2NjtDNTY2OzExMEIgMTE2MiAxMUFEO0M1NjY7MTEwQiAxMTYyIDExQUQ7ICMgKOyVpjsg7JWmOyDhhIvhhaLhhq07IOyVpjsg4YSL4YWi4YatOyApIEhBTkdVTCBTWUxMQUJMRSBBRU5ICitDNTY3O0M1Njc7MTEwQiAxMTYyIDExQUU7QzU2NzsxMTBCIDExNjIgMTFBRTsgIyAo7JWnOyDslac7IOGEi+GFouGGrjsg7JWnOyDhhIvhhaLhhq47ICkgSEFOR1VMIFNZTExBQkxFIEFFRAorQzU2ODtDNTY4OzExMEIgMTE2MiAxMUFGO0M1Njg7MTEwQiAxMTYyIDExQUY7ICMgKOyVqDsg7JWoOyDhhIvhhaLhhq87IOyVqDsg4YSL4YWi4YavOyApIEhBTkdVTCBTWUxMQUJMRSBBRUwKK0M1Njk7QzU2OTsxMTBCIDExNjIgMTFCMDtDNTY5OzExMEIgMTE2MiAxMUIwOyAjICjslak7IOyVqTsg4YSL4YWi4YawOyDslak7IOGEi+GFouGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQUVMRworQzU2QTtDNTZBOzExMEIgMTE2MiAxMUIxO0M1NkE7MTEwQiAxMTYyIDExQjE7ICMgKOyVqjsg7JWqOyDhhIvhhaLhhrE7IOyVqjsg4YSL4YWi4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBBRUxNCitDNTZCO0M1NkI7MTEwQiAxMTYyIDExQjI7QzU2QjsxMTBCIDExNjIgMTFCMjsgIyAo7JWrOyDslas7IOGEi+GFouGGsjsg7JWrOyDhhIvhhaLhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEFFTEIKK0M1NkM7QzU2QzsxMTBCIDExNjIgMTFCMztDNTZDOzExMEIgMTE2MiAxMUIzOyAjICjslaw7IOyVrDsg4YSL4YWi4YazOyDslaw7IOGEi+GFouGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQUVMUworQzU2RDtDNTZEOzExMEIgMTE2MiAxMUI0O0M1NkQ7MTEwQiAxMTYyIDExQjQ7ICMgKOyVrTsg7JWtOyDhhIvhhaLhhrQ7IOyVrTsg4YSL4YWi4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBBRUxUCitDNTZFO0M1NkU7MTEwQiAxMTYyIDExQjU7QzU2RTsxMTBCIDExNjIgMTFCNTsgIyAo7JWuOyDsla47IOGEi+GFouGGtTsg7JWuOyDhhIvhhaLhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEFFTFAKK0M1NkY7QzU2RjsxMTBCIDExNjIgMTFCNjtDNTZGOzExMEIgMTE2MiAxMUI2OyAjICjsla87IOyVrzsg4YSL4YWi4Ya2OyDsla87IOGEi+GFouGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQUVMSAorQzU3MDtDNTcwOzExMEIgMTE2MiAxMUI3O0M1NzA7MTEwQiAxMTYyIDExQjc7ICMgKOyVsDsg7JWwOyDhhIvhhaLhhrc7IOyVsDsg4YSL4YWi4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBBRU0KK0M1NzE7QzU3MTsxMTBCIDExNjIgMTFCODtDNTcxOzExMEIgMTE2MiAxMUI4OyAjICjslbE7IOyVsTsg4YSL4YWi4Ya4OyDslbE7IOGEi+GFouGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgQUVCCitDNTcyO0M1NzI7MTEwQiAxMTYyIDExQjk7QzU3MjsxMTBCIDExNjIgMTFCOTsgIyAo7JWyOyDslbI7IOGEi+GFouGGuTsg7JWyOyDhhIvhhaLhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEFFQlMKK0M1NzM7QzU3MzsxMTBCIDExNjIgMTFCQTtDNTczOzExMEIgMTE2MiAxMUJBOyAjICjslbM7IOyVszsg4YSL4YWi4Ya6OyDslbM7IOGEi+GFouGGujsgKSBIQU5HVUwgU1lMTEFCTEUgQUVTCitDNTc0O0M1NzQ7MTEwQiAxMTYyIDExQkI7QzU3NDsxMTBCIDExNjIgMTFCQjsgIyAo7JW0OyDslbQ7IOGEi+GFouGGuzsg7JW0OyDhhIvhhaLhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEFFU1MKK0M1NzU7QzU3NTsxMTBCIDExNjIgMTFCQztDNTc1OzExMEIgMTE2MiAxMUJDOyAjICjslbU7IOyVtTsg4YSL4YWi4Ya8OyDslbU7IOGEi+GFouGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQUVORworQzU3NjtDNTc2OzExMEIgMTE2MiAxMUJEO0M1NzY7MTEwQiAxMTYyIDExQkQ7ICMgKOyVtjsg7JW2OyDhhIvhhaLhhr07IOyVtjsg4YSL4YWi4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBBRUoKK0M1Nzc7QzU3NzsxMTBCIDExNjIgMTFCRTtDNTc3OzExMEIgMTE2MiAxMUJFOyAjICjslbc7IOyVtzsg4YSL4YWi4Ya+OyDslbc7IOGEi+GFouGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgQUVDCitDNTc4O0M1Nzg7MTEwQiAxMTYyIDExQkY7QzU3ODsxMTBCIDExNjIgMTFCRjsgIyAo7JW4OyDslbg7IOGEi+GFouGGvzsg7JW4OyDhhIvhhaLhhr87ICkgSEFOR1VMIFNZTExBQkxFIEFFSworQzU3OTtDNTc5OzExMEIgMTE2MiAxMUMwO0M1Nzk7MTEwQiAxMTYyIDExQzA7ICMgKOyVuTsg7JW5OyDhhIvhhaLhh4A7IOyVuTsg4YSL4YWi4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBBRVQKK0M1N0E7QzU3QTsxMTBCIDExNjIgMTFDMTtDNTdBOzExMEIgMTE2MiAxMUMxOyAjICjslbo7IOyVujsg4YSL4YWi4YeBOyDslbo7IOGEi+GFouGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgQUVQCitDNTdCO0M1N0I7MTEwQiAxMTYyIDExQzI7QzU3QjsxMTBCIDExNjIgMTFDMjsgIyAo7JW7OyDslbs7IOGEi+GFouGHgjsg7JW7OyDhhIvhhaLhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEFFSAorQzU3QztDNTdDOzExMEIgMTE2MztDNTdDOzExMEIgMTE2MzsgIyAo7JW8OyDslbw7IOGEi+GFozsg7JW8OyDhhIvhhaM7ICkgSEFOR1VMIFNZTExBQkxFIFlBCitDNTdEO0M1N0Q7MTEwQiAxMTYzIDExQTg7QzU3RDsxMTBCIDExNjMgMTFBODsgIyAo7JW9OyDslb07IOGEi+GFo+GGqDsg7JW9OyDhhIvhhaPhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFlBRworQzU3RTtDNTdFOzExMEIgMTE2MyAxMUE5O0M1N0U7MTEwQiAxMTYzIDExQTk7ICMgKOyVvjsg7JW+OyDhhIvhhaPhhqk7IOyVvjsg4YSL4YWj4YapOyApIEhBTkdVTCBTWUxMQUJMRSBZQUdHCitDNTdGO0M1N0Y7MTEwQiAxMTYzIDExQUE7QzU3RjsxMTBCIDExNjMgMTFBQTsgIyAo7JW/OyDslb87IOGEi+GFo+GGqjsg7JW/OyDhhIvhhaPhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFlBR1MKK0M1ODA7QzU4MDsxMTBCIDExNjMgMTFBQjtDNTgwOzExMEIgMTE2MyAxMUFCOyAjICjsloA7IOyWgDsg4YSL4YWj4YarOyDsloA7IOGEi+GFo+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgWUFOCitDNTgxO0M1ODE7MTEwQiAxMTYzIDExQUM7QzU4MTsxMTBCIDExNjMgMTFBQzsgIyAo7JaBOyDsloE7IOGEi+GFo+GGrDsg7JaBOyDhhIvhhaPhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFlBTkoKK0M1ODI7QzU4MjsxMTBCIDExNjMgMTFBRDtDNTgyOzExMEIgMTE2MyAxMUFEOyAjICjsloI7IOyWgjsg4YSL4YWj4YatOyDsloI7IOGEi+GFo+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgWUFOSAorQzU4MztDNTgzOzExMEIgMTE2MyAxMUFFO0M1ODM7MTEwQiAxMTYzIDExQUU7ICMgKOyWgzsg7JaDOyDhhIvhhaPhhq47IOyWgzsg4YSL4YWj4YauOyApIEhBTkdVTCBTWUxMQUJMRSBZQUQKK0M1ODQ7QzU4NDsxMTBCIDExNjMgMTFBRjtDNTg0OzExMEIgMTE2MyAxMUFGOyAjICjsloQ7IOyWhDsg4YSL4YWj4YavOyDsloQ7IOGEi+GFo+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgWUFMCitDNTg1O0M1ODU7MTEwQiAxMTYzIDExQjA7QzU4NTsxMTBCIDExNjMgMTFCMDsgIyAo7JaFOyDsloU7IOGEi+GFo+GGsDsg7JaFOyDhhIvhhaPhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFlBTEcKK0M1ODY7QzU4NjsxMTBCIDExNjMgMTFCMTtDNTg2OzExMEIgMTE2MyAxMUIxOyAjICjsloY7IOyWhjsg4YSL4YWj4YaxOyDsloY7IOGEi+GFo+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgWUFMTQorQzU4NztDNTg3OzExMEIgMTE2MyAxMUIyO0M1ODc7MTEwQiAxMTYzIDExQjI7ICMgKOyWhzsg7JaHOyDhhIvhhaPhhrI7IOyWhzsg4YSL4YWj4YayOyApIEhBTkdVTCBTWUxMQUJMRSBZQUxCCitDNTg4O0M1ODg7MTEwQiAxMTYzIDExQjM7QzU4ODsxMTBCIDExNjMgMTFCMzsgIyAo7JaIOyDslog7IOGEi+GFo+GGszsg7JaIOyDhhIvhhaPhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFlBTFMKK0M1ODk7QzU4OTsxMTBCIDExNjMgMTFCNDtDNTg5OzExMEIgMTE2MyAxMUI0OyAjICjslok7IOyWiTsg4YSL4YWj4Ya0OyDslok7IOGEi+GFo+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgWUFMVAorQzU4QTtDNThBOzExMEIgMTE2MyAxMUI1O0M1OEE7MTEwQiAxMTYzIDExQjU7ICMgKOyWijsg7JaKOyDhhIvhhaPhhrU7IOyWijsg4YSL4YWj4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBZQUxQCitDNThCO0M1OEI7MTEwQiAxMTYzIDExQjY7QzU4QjsxMTBCIDExNjMgMTFCNjsgIyAo7JaLOyDslos7IOGEi+GFo+GGtjsg7JaLOyDhhIvhhaPhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFlBTEgKK0M1OEM7QzU4QzsxMTBCIDExNjMgMTFCNztDNThDOzExMEIgMTE2MyAxMUI3OyAjICjslow7IOyWjDsg4YSL4YWj4Ya3OyDslow7IOGEi+GFo+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgWUFNCitDNThEO0M1OEQ7MTEwQiAxMTYzIDExQjg7QzU4RDsxMTBCIDExNjMgMTFCODsgIyAo7JaNOyDslo07IOGEi+GFo+GGuDsg7JaNOyDhhIvhhaPhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFlBQgorQzU4RTtDNThFOzExMEIgMTE2MyAxMUI5O0M1OEU7MTEwQiAxMTYzIDExQjk7ICMgKOyWjjsg7JaOOyDhhIvhhaPhhrk7IOyWjjsg4YSL4YWj4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBZQUJTCitDNThGO0M1OEY7MTEwQiAxMTYzIDExQkE7QzU4RjsxMTBCIDExNjMgMTFCQTsgIyAo7JaPOyDslo87IOGEi+GFo+GGujsg7JaPOyDhhIvhhaPhhro7ICkgSEFOR1VMIFNZTExBQkxFIFlBUworQzU5MDtDNTkwOzExMEIgMTE2MyAxMUJCO0M1OTA7MTEwQiAxMTYzIDExQkI7ICMgKOyWkDsg7JaQOyDhhIvhhaPhhrs7IOyWkDsg4YSL4YWj4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBZQVNTCitDNTkxO0M1OTE7MTEwQiAxMTYzIDExQkM7QzU5MTsxMTBCIDExNjMgMTFCQzsgIyAo7JaROyDslpE7IOGEi+GFo+GGvDsg7JaROyDhhIvhhaPhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFlBTkcKK0M1OTI7QzU5MjsxMTBCIDExNjMgMTFCRDtDNTkyOzExMEIgMTE2MyAxMUJEOyAjICjslpI7IOyWkjsg4YSL4YWj4Ya9OyDslpI7IOGEi+GFo+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgWUFKCitDNTkzO0M1OTM7MTEwQiAxMTYzIDExQkU7QzU5MzsxMTBCIDExNjMgMTFCRTsgIyAo7JaTOyDslpM7IOGEi+GFo+GGvjsg7JaTOyDhhIvhhaPhhr47ICkgSEFOR1VMIFNZTExBQkxFIFlBQworQzU5NDtDNTk0OzExMEIgMTE2MyAxMUJGO0M1OTQ7MTEwQiAxMTYzIDExQkY7ICMgKOyWlDsg7JaUOyDhhIvhhaPhhr87IOyWlDsg4YSL4YWj4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBZQUsKK0M1OTU7QzU5NTsxMTBCIDExNjMgMTFDMDtDNTk1OzExMEIgMTE2MyAxMUMwOyAjICjslpU7IOyWlTsg4YSL4YWj4YeAOyDslpU7IOGEi+GFo+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgWUFUCitDNTk2O0M1OTY7MTEwQiAxMTYzIDExQzE7QzU5NjsxMTBCIDExNjMgMTFDMTsgIyAo7JaWOyDslpY7IOGEi+GFo+GHgTsg7JaWOyDhhIvhhaPhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFlBUAorQzU5NztDNTk3OzExMEIgMTE2MyAxMUMyO0M1OTc7MTEwQiAxMTYzIDExQzI7ICMgKOyWlzsg7JaXOyDhhIvhhaPhh4I7IOyWlzsg4YSL4YWj4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBZQUgKK0M1OTg7QzU5ODsxMTBCIDExNjQ7QzU5ODsxMTBCIDExNjQ7ICMgKOyWmDsg7JaYOyDhhIvhhaQ7IOyWmDsg4YSL4YWkOyApIEhBTkdVTCBTWUxMQUJMRSBZQUUKK0M1OTk7QzU5OTsxMTBCIDExNjQgMTFBODtDNTk5OzExMEIgMTE2NCAxMUE4OyAjICjslpk7IOyWmTsg4YSL4YWk4YaoOyDslpk7IOGEi+GFpOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgWUFFRworQzU5QTtDNTlBOzExMEIgMTE2NCAxMUE5O0M1OUE7MTEwQiAxMTY0IDExQTk7ICMgKOyWmjsg7JaaOyDhhIvhhaThhqk7IOyWmjsg4YSL4YWk4YapOyApIEhBTkdVTCBTWUxMQUJMRSBZQUVHRworQzU5QjtDNTlCOzExMEIgMTE2NCAxMUFBO0M1OUI7MTEwQiAxMTY0IDExQUE7ICMgKOyWmzsg7JabOyDhhIvhhaThhqo7IOyWmzsg4YSL4YWk4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBZQUVHUworQzU5QztDNTlDOzExMEIgMTE2NCAxMUFCO0M1OUM7MTEwQiAxMTY0IDExQUI7ICMgKOyWnDsg7JacOyDhhIvhhaThhqs7IOyWnDsg4YSL4YWk4YarOyApIEhBTkdVTCBTWUxMQUJMRSBZQUVOCitDNTlEO0M1OUQ7MTEwQiAxMTY0IDExQUM7QzU5RDsxMTBCIDExNjQgMTFBQzsgIyAo7JadOyDslp07IOGEi+GFpOGGrDsg7JadOyDhhIvhhaThhqw7ICkgSEFOR1VMIFNZTExBQkxFIFlBRU5KCitDNTlFO0M1OUU7MTEwQiAxMTY0IDExQUQ7QzU5RTsxMTBCIDExNjQgMTFBRDsgIyAo7JaeOyDslp47IOGEi+GFpOGGrTsg7JaeOyDhhIvhhaThhq07ICkgSEFOR1VMIFNZTExBQkxFIFlBRU5ICitDNTlGO0M1OUY7MTEwQiAxMTY0IDExQUU7QzU5RjsxMTBCIDExNjQgMTFBRTsgIyAo7JafOyDslp87IOGEi+GFpOGGrjsg7JafOyDhhIvhhaThhq47ICkgSEFOR1VMIFNZTExBQkxFIFlBRUQKK0M1QTA7QzVBMDsxMTBCIDExNjQgMTFBRjtDNUEwOzExMEIgMTE2NCAxMUFGOyAjICjslqA7IOyWoDsg4YSL4YWk4YavOyDslqA7IOGEi+GFpOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgWUFFTAorQzVBMTtDNUExOzExMEIgMTE2NCAxMUIwO0M1QTE7MTEwQiAxMTY0IDExQjA7ICMgKOyWoTsg7JahOyDhhIvhhaThhrA7IOyWoTsg4YSL4YWk4YawOyApIEhBTkdVTCBTWUxMQUJMRSBZQUVMRworQzVBMjtDNUEyOzExMEIgMTE2NCAxMUIxO0M1QTI7MTEwQiAxMTY0IDExQjE7ICMgKOyWojsg7JaiOyDhhIvhhaThhrE7IOyWojsg4YSL4YWk4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBZQUVMTQorQzVBMztDNUEzOzExMEIgMTE2NCAxMUIyO0M1QTM7MTEwQiAxMTY0IDExQjI7ICMgKOyWozsg7JajOyDhhIvhhaThhrI7IOyWozsg4YSL4YWk4YayOyApIEhBTkdVTCBTWUxMQUJMRSBZQUVMQgorQzVBNDtDNUE0OzExMEIgMTE2NCAxMUIzO0M1QTQ7MTEwQiAxMTY0IDExQjM7ICMgKOyWpDsg7JakOyDhhIvhhaThhrM7IOyWpDsg4YSL4YWk4YazOyApIEhBTkdVTCBTWUxMQUJMRSBZQUVMUworQzVBNTtDNUE1OzExMEIgMTE2NCAxMUI0O0M1QTU7MTEwQiAxMTY0IDExQjQ7ICMgKOyWpTsg7JalOyDhhIvhhaThhrQ7IOyWpTsg4YSL4YWk4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBZQUVMVAorQzVBNjtDNUE2OzExMEIgMTE2NCAxMUI1O0M1QTY7MTEwQiAxMTY0IDExQjU7ICMgKOyWpjsg7JamOyDhhIvhhaThhrU7IOyWpjsg4YSL4YWk4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBZQUVMUAorQzVBNztDNUE3OzExMEIgMTE2NCAxMUI2O0M1QTc7MTEwQiAxMTY0IDExQjY7ICMgKOyWpzsg7JanOyDhhIvhhaThhrY7IOyWpzsg4YSL4YWk4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBZQUVMSAorQzVBODtDNUE4OzExMEIgMTE2NCAxMUI3O0M1QTg7MTEwQiAxMTY0IDExQjc7ICMgKOyWqDsg7JaoOyDhhIvhhaThhrc7IOyWqDsg4YSL4YWk4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBZQUVNCitDNUE5O0M1QTk7MTEwQiAxMTY0IDExQjg7QzVBOTsxMTBCIDExNjQgMTFCODsgIyAo7JapOyDslqk7IOGEi+GFpOGGuDsg7JapOyDhhIvhhaThhrg7ICkgSEFOR1VMIFNZTExBQkxFIFlBRUIKK0M1QUE7QzVBQTsxMTBCIDExNjQgMTFCOTtDNUFBOzExMEIgMTE2NCAxMUI5OyAjICjslqo7IOyWqjsg4YSL4YWk4Ya5OyDslqo7IOGEi+GFpOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgWUFFQlMKK0M1QUI7QzVBQjsxMTBCIDExNjQgMTFCQTtDNUFCOzExMEIgMTE2NCAxMUJBOyAjICjslqs7IOyWqzsg4YSL4YWk4Ya6OyDslqs7IOGEi+GFpOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgWUFFUworQzVBQztDNUFDOzExMEIgMTE2NCAxMUJCO0M1QUM7MTEwQiAxMTY0IDExQkI7ICMgKOyWrDsg7JasOyDhhIvhhaThhrs7IOyWrDsg4YSL4YWk4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBZQUVTUworQzVBRDtDNUFEOzExMEIgMTE2NCAxMUJDO0M1QUQ7MTEwQiAxMTY0IDExQkM7ICMgKOyWrTsg7JatOyDhhIvhhaThhrw7IOyWrTsg4YSL4YWk4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBZQUVORworQzVBRTtDNUFFOzExMEIgMTE2NCAxMUJEO0M1QUU7MTEwQiAxMTY0IDExQkQ7ICMgKOyWrjsg7JauOyDhhIvhhaThhr07IOyWrjsg4YSL4YWk4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBZQUVKCitDNUFGO0M1QUY7MTEwQiAxMTY0IDExQkU7QzVBRjsxMTBCIDExNjQgMTFCRTsgIyAo7JavOyDslq87IOGEi+GFpOGGvjsg7JavOyDhhIvhhaThhr47ICkgSEFOR1VMIFNZTExBQkxFIFlBRUMKK0M1QjA7QzVCMDsxMTBCIDExNjQgMTFCRjtDNUIwOzExMEIgMTE2NCAxMUJGOyAjICjslrA7IOyWsDsg4YSL4YWk4Ya/OyDslrA7IOGEi+GFpOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgWUFFSworQzVCMTtDNUIxOzExMEIgMTE2NCAxMUMwO0M1QjE7MTEwQiAxMTY0IDExQzA7ICMgKOyWsTsg7JaxOyDhhIvhhaThh4A7IOyWsTsg4YSL4YWk4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBZQUVUCitDNUIyO0M1QjI7MTEwQiAxMTY0IDExQzE7QzVCMjsxMTBCIDExNjQgMTFDMTsgIyAo7JayOyDslrI7IOGEi+GFpOGHgTsg7JayOyDhhIvhhaThh4E7ICkgSEFOR1VMIFNZTExBQkxFIFlBRVAKK0M1QjM7QzVCMzsxMTBCIDExNjQgMTFDMjtDNUIzOzExMEIgMTE2NCAxMUMyOyAjICjslrM7IOyWszsg4YSL4YWk4YeCOyDslrM7IOGEi+GFpOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgWUFFSAorQzVCNDtDNUI0OzExMEIgMTE2NTtDNUI0OzExMEIgMTE2NTsgIyAo7Ja0OyDslrQ7IOGEi+GFpTsg7Ja0OyDhhIvhhaU7ICkgSEFOR1VMIFNZTExBQkxFIEVPCitDNUI1O0M1QjU7MTEwQiAxMTY1IDExQTg7QzVCNTsxMTBCIDExNjUgMTFBODsgIyAo7Ja1OyDslrU7IOGEi+GFpeGGqDsg7Ja1OyDhhIvhhaXhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEVPRworQzVCNjtDNUI2OzExMEIgMTE2NSAxMUE5O0M1QjY7MTEwQiAxMTY1IDExQTk7ICMgKOyWtjsg7Ja2OyDhhIvhhaXhhqk7IOyWtjsg4YSL4YWl4YapOyApIEhBTkdVTCBTWUxMQUJMRSBFT0dHCitDNUI3O0M1Qjc7MTEwQiAxMTY1IDExQUE7QzVCNzsxMTBCIDExNjUgMTFBQTsgIyAo7Ja3OyDslrc7IOGEi+GFpeGGqjsg7Ja3OyDhhIvhhaXhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEVPR1MKK0M1Qjg7QzVCODsxMTBCIDExNjUgMTFBQjtDNUI4OzExMEIgMTE2NSAxMUFCOyAjICjslrg7IOyWuDsg4YSL4YWl4YarOyDslrg7IOGEi+GFpeGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgRU9OCitDNUI5O0M1Qjk7MTEwQiAxMTY1IDExQUM7QzVCOTsxMTBCIDExNjUgMTFBQzsgIyAo7Ja5OyDslrk7IOGEi+GFpeGGrDsg7Ja5OyDhhIvhhaXhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEVPTkoKK0M1QkE7QzVCQTsxMTBCIDExNjUgMTFBRDtDNUJBOzExMEIgMTE2NSAxMUFEOyAjICjslro7IOyWujsg4YSL4YWl4YatOyDslro7IOGEi+GFpeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgRU9OSAorQzVCQjtDNUJCOzExMEIgMTE2NSAxMUFFO0M1QkI7MTEwQiAxMTY1IDExQUU7ICMgKOyWuzsg7Ja7OyDhhIvhhaXhhq47IOyWuzsg4YSL4YWl4YauOyApIEhBTkdVTCBTWUxMQUJMRSBFT0QKK0M1QkM7QzVCQzsxMTBCIDExNjUgMTFBRjtDNUJDOzExMEIgMTE2NSAxMUFGOyAjICjslrw7IOyWvDsg4YSL4YWl4YavOyDslrw7IOGEi+GFpeGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgRU9MCitDNUJEO0M1QkQ7MTEwQiAxMTY1IDExQjA7QzVCRDsxMTBCIDExNjUgMTFCMDsgIyAo7Ja9OyDslr07IOGEi+GFpeGGsDsg7Ja9OyDhhIvhhaXhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEVPTEcKK0M1QkU7QzVCRTsxMTBCIDExNjUgMTFCMTtDNUJFOzExMEIgMTE2NSAxMUIxOyAjICjslr47IOyWvjsg4YSL4YWl4YaxOyDslr47IOGEi+GFpeGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgRU9MTQorQzVCRjtDNUJGOzExMEIgMTE2NSAxMUIyO0M1QkY7MTEwQiAxMTY1IDExQjI7ICMgKOyWvzsg7Ja/OyDhhIvhhaXhhrI7IOyWvzsg4YSL4YWl4YayOyApIEhBTkdVTCBTWUxMQUJMRSBFT0xCCitDNUMwO0M1QzA7MTEwQiAxMTY1IDExQjM7QzVDMDsxMTBCIDExNjUgMTFCMzsgIyAo7JeAOyDsl4A7IOGEi+GFpeGGszsg7JeAOyDhhIvhhaXhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEVPTFMKK0M1QzE7QzVDMTsxMTBCIDExNjUgMTFCNDtDNUMxOzExMEIgMTE2NSAxMUI0OyAjICjsl4E7IOyXgTsg4YSL4YWl4Ya0OyDsl4E7IOGEi+GFpeGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgRU9MVAorQzVDMjtDNUMyOzExMEIgMTE2NSAxMUI1O0M1QzI7MTEwQiAxMTY1IDExQjU7ICMgKOyXgjsg7JeCOyDhhIvhhaXhhrU7IOyXgjsg4YSL4YWl4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBFT0xQCitDNUMzO0M1QzM7MTEwQiAxMTY1IDExQjY7QzVDMzsxMTBCIDExNjUgMTFCNjsgIyAo7JeDOyDsl4M7IOGEi+GFpeGGtjsg7JeDOyDhhIvhhaXhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEVPTEgKK0M1QzQ7QzVDNDsxMTBCIDExNjUgMTFCNztDNUM0OzExMEIgMTE2NSAxMUI3OyAjICjsl4Q7IOyXhDsg4YSL4YWl4Ya3OyDsl4Q7IOGEi+GFpeGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgRU9NCitDNUM1O0M1QzU7MTEwQiAxMTY1IDExQjg7QzVDNTsxMTBCIDExNjUgMTFCODsgIyAo7JeFOyDsl4U7IOGEi+GFpeGGuDsg7JeFOyDhhIvhhaXhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEVPQgorQzVDNjtDNUM2OzExMEIgMTE2NSAxMUI5O0M1QzY7MTEwQiAxMTY1IDExQjk7ICMgKOyXhjsg7JeGOyDhhIvhhaXhhrk7IOyXhjsg4YSL4YWl4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBFT0JTCitDNUM3O0M1Qzc7MTEwQiAxMTY1IDExQkE7QzVDNzsxMTBCIDExNjUgMTFCQTsgIyAo7JeHOyDsl4c7IOGEi+GFpeGGujsg7JeHOyDhhIvhhaXhhro7ICkgSEFOR1VMIFNZTExBQkxFIEVPUworQzVDODtDNUM4OzExMEIgMTE2NSAxMUJCO0M1Qzg7MTEwQiAxMTY1IDExQkI7ICMgKOyXiDsg7JeIOyDhhIvhhaXhhrs7IOyXiDsg4YSL4YWl4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBFT1NTCitDNUM5O0M1Qzk7MTEwQiAxMTY1IDExQkM7QzVDOTsxMTBCIDExNjUgMTFCQzsgIyAo7JeJOyDsl4k7IOGEi+GFpeGGvDsg7JeJOyDhhIvhhaXhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEVPTkcKK0M1Q0E7QzVDQTsxMTBCIDExNjUgMTFCRDtDNUNBOzExMEIgMTE2NSAxMUJEOyAjICjsl4o7IOyXijsg4YSL4YWl4Ya9OyDsl4o7IOGEi+GFpeGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgRU9KCitDNUNCO0M1Q0I7MTEwQiAxMTY1IDExQkU7QzVDQjsxMTBCIDExNjUgMTFCRTsgIyAo7JeLOyDsl4s7IOGEi+GFpeGGvjsg7JeLOyDhhIvhhaXhhr47ICkgSEFOR1VMIFNZTExBQkxFIEVPQworQzVDQztDNUNDOzExMEIgMTE2NSAxMUJGO0M1Q0M7MTEwQiAxMTY1IDExQkY7ICMgKOyXjDsg7JeMOyDhhIvhhaXhhr87IOyXjDsg4YSL4YWl4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBFT0sKK0M1Q0Q7QzVDRDsxMTBCIDExNjUgMTFDMDtDNUNEOzExMEIgMTE2NSAxMUMwOyAjICjsl407IOyXjTsg4YSL4YWl4YeAOyDsl407IOGEi+GFpeGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgRU9UCitDNUNFO0M1Q0U7MTEwQiAxMTY1IDExQzE7QzVDRTsxMTBCIDExNjUgMTFDMTsgIyAo7JeOOyDsl447IOGEi+GFpeGHgTsg7JeOOyDhhIvhhaXhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEVPUAorQzVDRjtDNUNGOzExMEIgMTE2NSAxMUMyO0M1Q0Y7MTEwQiAxMTY1IDExQzI7ICMgKOyXjzsg7JePOyDhhIvhhaXhh4I7IOyXjzsg4YSL4YWl4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBFT0gKK0M1RDA7QzVEMDsxMTBCIDExNjY7QzVEMDsxMTBCIDExNjY7ICMgKOyXkDsg7JeQOyDhhIvhhaY7IOyXkDsg4YSL4YWmOyApIEhBTkdVTCBTWUxMQUJMRSBFCitDNUQxO0M1RDE7MTEwQiAxMTY2IDExQTg7QzVEMTsxMTBCIDExNjYgMTFBODsgIyAo7JeROyDsl5E7IOGEi+GFpuGGqDsg7JeROyDhhIvhhabhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEVHCitDNUQyO0M1RDI7MTEwQiAxMTY2IDExQTk7QzVEMjsxMTBCIDExNjYgMTFBOTsgIyAo7JeSOyDsl5I7IOGEi+GFpuGGqTsg7JeSOyDhhIvhhabhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEVHRworQzVEMztDNUQzOzExMEIgMTE2NiAxMUFBO0M1RDM7MTEwQiAxMTY2IDExQUE7ICMgKOyXkzsg7JeTOyDhhIvhhabhhqo7IOyXkzsg4YSL4YWm4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBFR1MKK0M1RDQ7QzVENDsxMTBCIDExNjYgMTFBQjtDNUQ0OzExMEIgMTE2NiAxMUFCOyAjICjsl5Q7IOyXlDsg4YSL4YWm4YarOyDsl5Q7IOGEi+GFpuGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgRU4KK0M1RDU7QzVENTsxMTBCIDExNjYgMTFBQztDNUQ1OzExMEIgMTE2NiAxMUFDOyAjICjsl5U7IOyXlTsg4YSL4YWm4YasOyDsl5U7IOGEi+GFpuGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgRU5KCitDNUQ2O0M1RDY7MTEwQiAxMTY2IDExQUQ7QzVENjsxMTBCIDExNjYgMTFBRDsgIyAo7JeWOyDsl5Y7IOGEi+GFpuGGrTsg7JeWOyDhhIvhhabhhq07ICkgSEFOR1VMIFNZTExBQkxFIEVOSAorQzVENztDNUQ3OzExMEIgMTE2NiAxMUFFO0M1RDc7MTEwQiAxMTY2IDExQUU7ICMgKOyXlzsg7JeXOyDhhIvhhabhhq47IOyXlzsg4YSL4YWm4YauOyApIEhBTkdVTCBTWUxMQUJMRSBFRAorQzVEODtDNUQ4OzExMEIgMTE2NiAxMUFGO0M1RDg7MTEwQiAxMTY2IDExQUY7ICMgKOyXmDsg7JeYOyDhhIvhhabhhq87IOyXmDsg4YSL4YWm4YavOyApIEhBTkdVTCBTWUxMQUJMRSBFTAorQzVEOTtDNUQ5OzExMEIgMTE2NiAxMUIwO0M1RDk7MTEwQiAxMTY2IDExQjA7ICMgKOyXmTsg7JeZOyDhhIvhhabhhrA7IOyXmTsg4YSL4YWm4YawOyApIEhBTkdVTCBTWUxMQUJMRSBFTEcKK0M1REE7QzVEQTsxMTBCIDExNjYgMTFCMTtDNURBOzExMEIgMTE2NiAxMUIxOyAjICjsl5o7IOyXmjsg4YSL4YWm4YaxOyDsl5o7IOGEi+GFpuGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgRUxNCitDNURCO0M1REI7MTEwQiAxMTY2IDExQjI7QzVEQjsxMTBCIDExNjYgMTFCMjsgIyAo7JebOyDsl5s7IOGEi+GFpuGGsjsg7JebOyDhhIvhhabhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEVMQgorQzVEQztDNURDOzExMEIgMTE2NiAxMUIzO0M1REM7MTEwQiAxMTY2IDExQjM7ICMgKOyXnDsg7JecOyDhhIvhhabhhrM7IOyXnDsg4YSL4YWm4YazOyApIEhBTkdVTCBTWUxMQUJMRSBFTFMKK0M1REQ7QzVERDsxMTBCIDExNjYgMTFCNDtDNUREOzExMEIgMTE2NiAxMUI0OyAjICjsl507IOyXnTsg4YSL4YWm4Ya0OyDsl507IOGEi+GFpuGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgRUxUCitDNURFO0M1REU7MTEwQiAxMTY2IDExQjU7QzVERTsxMTBCIDExNjYgMTFCNTsgIyAo7JeeOyDsl547IOGEi+GFpuGGtTsg7JeeOyDhhIvhhabhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEVMUAorQzVERjtDNURGOzExMEIgMTE2NiAxMUI2O0M1REY7MTEwQiAxMTY2IDExQjY7ICMgKOyXnzsg7JefOyDhhIvhhabhhrY7IOyXnzsg4YSL4YWm4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBFTEgKK0M1RTA7QzVFMDsxMTBCIDExNjYgMTFCNztDNUUwOzExMEIgMTE2NiAxMUI3OyAjICjsl6A7IOyXoDsg4YSL4YWm4Ya3OyDsl6A7IOGEi+GFpuGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgRU0KK0M1RTE7QzVFMTsxMTBCIDExNjYgMTFCODtDNUUxOzExMEIgMTE2NiAxMUI4OyAjICjsl6E7IOyXoTsg4YSL4YWm4Ya4OyDsl6E7IOGEi+GFpuGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgRUIKK0M1RTI7QzVFMjsxMTBCIDExNjYgMTFCOTtDNUUyOzExMEIgMTE2NiAxMUI5OyAjICjsl6I7IOyXojsg4YSL4YWm4Ya5OyDsl6I7IOGEi+GFpuGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgRUJTCitDNUUzO0M1RTM7MTEwQiAxMTY2IDExQkE7QzVFMzsxMTBCIDExNjYgMTFCQTsgIyAo7JejOyDsl6M7IOGEi+GFpuGGujsg7JejOyDhhIvhhabhhro7ICkgSEFOR1VMIFNZTExBQkxFIEVTCitDNUU0O0M1RTQ7MTEwQiAxMTY2IDExQkI7QzVFNDsxMTBCIDExNjYgMTFCQjsgIyAo7JekOyDsl6Q7IOGEi+GFpuGGuzsg7JekOyDhhIvhhabhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEVTUworQzVFNTtDNUU1OzExMEIgMTE2NiAxMUJDO0M1RTU7MTEwQiAxMTY2IDExQkM7ICMgKOyXpTsg7JelOyDhhIvhhabhhrw7IOyXpTsg4YSL4YWm4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBFTkcKK0M1RTY7QzVFNjsxMTBCIDExNjYgMTFCRDtDNUU2OzExMEIgMTE2NiAxMUJEOyAjICjsl6Y7IOyXpjsg4YSL4YWm4Ya9OyDsl6Y7IOGEi+GFpuGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgRUoKK0M1RTc7QzVFNzsxMTBCIDExNjYgMTFCRTtDNUU3OzExMEIgMTE2NiAxMUJFOyAjICjsl6c7IOyXpzsg4YSL4YWm4Ya+OyDsl6c7IOGEi+GFpuGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgRUMKK0M1RTg7QzVFODsxMTBCIDExNjYgMTFCRjtDNUU4OzExMEIgMTE2NiAxMUJGOyAjICjsl6g7IOyXqDsg4YSL4YWm4Ya/OyDsl6g7IOGEi+GFpuGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgRUsKK0M1RTk7QzVFOTsxMTBCIDExNjYgMTFDMDtDNUU5OzExMEIgMTE2NiAxMUMwOyAjICjsl6k7IOyXqTsg4YSL4YWm4YeAOyDsl6k7IOGEi+GFpuGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgRVQKK0M1RUE7QzVFQTsxMTBCIDExNjYgMTFDMTtDNUVBOzExMEIgMTE2NiAxMUMxOyAjICjsl6o7IOyXqjsg4YSL4YWm4YeBOyDsl6o7IOGEi+GFpuGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgRVAKK0M1RUI7QzVFQjsxMTBCIDExNjYgMTFDMjtDNUVCOzExMEIgMTE2NiAxMUMyOyAjICjsl6s7IOyXqzsg4YSL4YWm4YeCOyDsl6s7IOGEi+GFpuGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgRUgKK0M1RUM7QzVFQzsxMTBCIDExNjc7QzVFQzsxMTBCIDExNjc7ICMgKOyXrDsg7JesOyDhhIvhhac7IOyXrDsg4YSL4YWnOyApIEhBTkdVTCBTWUxMQUJMRSBZRU8KK0M1RUQ7QzVFRDsxMTBCIDExNjcgMTFBODtDNUVEOzExMEIgMTE2NyAxMUE4OyAjICjsl607IOyXrTsg4YSL4YWn4YaoOyDsl607IOGEi+GFp+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgWUVPRworQzVFRTtDNUVFOzExMEIgMTE2NyAxMUE5O0M1RUU7MTEwQiAxMTY3IDExQTk7ICMgKOyXrjsg7JeuOyDhhIvhhafhhqk7IOyXrjsg4YSL4YWn4YapOyApIEhBTkdVTCBTWUxMQUJMRSBZRU9HRworQzVFRjtDNUVGOzExMEIgMTE2NyAxMUFBO0M1RUY7MTEwQiAxMTY3IDExQUE7ICMgKOyXrzsg7JevOyDhhIvhhafhhqo7IOyXrzsg4YSL4YWn4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBZRU9HUworQzVGMDtDNUYwOzExMEIgMTE2NyAxMUFCO0M1RjA7MTEwQiAxMTY3IDExQUI7ICMgKOyXsDsg7JewOyDhhIvhhafhhqs7IOyXsDsg4YSL4YWn4YarOyApIEhBTkdVTCBTWUxMQUJMRSBZRU9OCitDNUYxO0M1RjE7MTEwQiAxMTY3IDExQUM7QzVGMTsxMTBCIDExNjcgMTFBQzsgIyAo7JexOyDsl7E7IOGEi+GFp+GGrDsg7JexOyDhhIvhhafhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFlFT05KCitDNUYyO0M1RjI7MTEwQiAxMTY3IDExQUQ7QzVGMjsxMTBCIDExNjcgMTFBRDsgIyAo7JeyOyDsl7I7IOGEi+GFp+GGrTsg7JeyOyDhhIvhhafhhq07ICkgSEFOR1VMIFNZTExBQkxFIFlFT05ICitDNUYzO0M1RjM7MTEwQiAxMTY3IDExQUU7QzVGMzsxMTBCIDExNjcgMTFBRTsgIyAo7JezOyDsl7M7IOGEi+GFp+GGrjsg7JezOyDhhIvhhafhhq47ICkgSEFOR1VMIFNZTExBQkxFIFlFT0QKK0M1RjQ7QzVGNDsxMTBCIDExNjcgMTFBRjtDNUY0OzExMEIgMTE2NyAxMUFGOyAjICjsl7Q7IOyXtDsg4YSL4YWn4YavOyDsl7Q7IOGEi+GFp+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgWUVPTAorQzVGNTtDNUY1OzExMEIgMTE2NyAxMUIwO0M1RjU7MTEwQiAxMTY3IDExQjA7ICMgKOyXtTsg7Je1OyDhhIvhhafhhrA7IOyXtTsg4YSL4YWn4YawOyApIEhBTkdVTCBTWUxMQUJMRSBZRU9MRworQzVGNjtDNUY2OzExMEIgMTE2NyAxMUIxO0M1RjY7MTEwQiAxMTY3IDExQjE7ICMgKOyXtjsg7Je2OyDhhIvhhafhhrE7IOyXtjsg4YSL4YWn4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBZRU9MTQorQzVGNztDNUY3OzExMEIgMTE2NyAxMUIyO0M1Rjc7MTEwQiAxMTY3IDExQjI7ICMgKOyXtzsg7Je3OyDhhIvhhafhhrI7IOyXtzsg4YSL4YWn4YayOyApIEhBTkdVTCBTWUxMQUJMRSBZRU9MQgorQzVGODtDNUY4OzExMEIgMTE2NyAxMUIzO0M1Rjg7MTEwQiAxMTY3IDExQjM7ICMgKOyXuDsg7Je4OyDhhIvhhafhhrM7IOyXuDsg4YSL4YWn4YazOyApIEhBTkdVTCBTWUxMQUJMRSBZRU9MUworQzVGOTtDNUY5OzExMEIgMTE2NyAxMUI0O0M1Rjk7MTEwQiAxMTY3IDExQjQ7ICMgKOyXuTsg7Je5OyDhhIvhhafhhrQ7IOyXuTsg4YSL4YWn4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBZRU9MVAorQzVGQTtDNUZBOzExMEIgMTE2NyAxMUI1O0M1RkE7MTEwQiAxMTY3IDExQjU7ICMgKOyXujsg7Je6OyDhhIvhhafhhrU7IOyXujsg4YSL4YWn4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBZRU9MUAorQzVGQjtDNUZCOzExMEIgMTE2NyAxMUI2O0M1RkI7MTEwQiAxMTY3IDExQjY7ICMgKOyXuzsg7Je7OyDhhIvhhafhhrY7IOyXuzsg4YSL4YWn4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBZRU9MSAorQzVGQztDNUZDOzExMEIgMTE2NyAxMUI3O0M1RkM7MTEwQiAxMTY3IDExQjc7ICMgKOyXvDsg7Je8OyDhhIvhhafhhrc7IOyXvDsg4YSL4YWn4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBZRU9NCitDNUZEO0M1RkQ7MTEwQiAxMTY3IDExQjg7QzVGRDsxMTBCIDExNjcgMTFCODsgIyAo7Je9OyDsl707IOGEi+GFp+GGuDsg7Je9OyDhhIvhhafhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFlFT0IKK0M1RkU7QzVGRTsxMTBCIDExNjcgMTFCOTtDNUZFOzExMEIgMTE2NyAxMUI5OyAjICjsl747IOyXvjsg4YSL4YWn4Ya5OyDsl747IOGEi+GFp+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgWUVPQlMKK0M1RkY7QzVGRjsxMTBCIDExNjcgMTFCQTtDNUZGOzExMEIgMTE2NyAxMUJBOyAjICjsl787IOyXvzsg4YSL4YWn4Ya6OyDsl787IOGEi+GFp+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgWUVPUworQzYwMDtDNjAwOzExMEIgMTE2NyAxMUJCO0M2MDA7MTEwQiAxMTY3IDExQkI7ICMgKOyYgDsg7JiAOyDhhIvhhafhhrs7IOyYgDsg4YSL4YWn4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBZRU9TUworQzYwMTtDNjAxOzExMEIgMTE2NyAxMUJDO0M2MDE7MTEwQiAxMTY3IDExQkM7ICMgKOyYgTsg7JiBOyDhhIvhhafhhrw7IOyYgTsg4YSL4YWn4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBZRU9ORworQzYwMjtDNjAyOzExMEIgMTE2NyAxMUJEO0M2MDI7MTEwQiAxMTY3IDExQkQ7ICMgKOyYgjsg7JiCOyDhhIvhhafhhr07IOyYgjsg4YSL4YWn4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBZRU9KCitDNjAzO0M2MDM7MTEwQiAxMTY3IDExQkU7QzYwMzsxMTBCIDExNjcgMTFCRTsgIyAo7JiDOyDsmIM7IOGEi+GFp+GGvjsg7JiDOyDhhIvhhafhhr47ICkgSEFOR1VMIFNZTExBQkxFIFlFT0MKK0M2MDQ7QzYwNDsxMTBCIDExNjcgMTFCRjtDNjA0OzExMEIgMTE2NyAxMUJGOyAjICjsmIQ7IOyYhDsg4YSL4YWn4Ya/OyDsmIQ7IOGEi+GFp+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgWUVPSworQzYwNTtDNjA1OzExMEIgMTE2NyAxMUMwO0M2MDU7MTEwQiAxMTY3IDExQzA7ICMgKOyYhTsg7JiFOyDhhIvhhafhh4A7IOyYhTsg4YSL4YWn4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBZRU9UCitDNjA2O0M2MDY7MTEwQiAxMTY3IDExQzE7QzYwNjsxMTBCIDExNjcgMTFDMTsgIyAo7JiGOyDsmIY7IOGEi+GFp+GHgTsg7JiGOyDhhIvhhafhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFlFT1AKK0M2MDc7QzYwNzsxMTBCIDExNjcgMTFDMjtDNjA3OzExMEIgMTE2NyAxMUMyOyAjICjsmIc7IOyYhzsg4YSL4YWn4YeCOyDsmIc7IOGEi+GFp+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgWUVPSAorQzYwODtDNjA4OzExMEIgMTE2ODtDNjA4OzExMEIgMTE2ODsgIyAo7JiIOyDsmIg7IOGEi+GFqDsg7JiIOyDhhIvhhag7ICkgSEFOR1VMIFNZTExBQkxFIFlFCitDNjA5O0M2MDk7MTEwQiAxMTY4IDExQTg7QzYwOTsxMTBCIDExNjggMTFBODsgIyAo7JiJOyDsmIk7IOGEi+GFqOGGqDsg7JiJOyDhhIvhhajhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFlFRworQzYwQTtDNjBBOzExMEIgMTE2OCAxMUE5O0M2MEE7MTEwQiAxMTY4IDExQTk7ICMgKOyYijsg7JiKOyDhhIvhhajhhqk7IOyYijsg4YSL4YWo4YapOyApIEhBTkdVTCBTWUxMQUJMRSBZRUdHCitDNjBCO0M2MEI7MTEwQiAxMTY4IDExQUE7QzYwQjsxMTBCIDExNjggMTFBQTsgIyAo7JiLOyDsmIs7IOGEi+GFqOGGqjsg7JiLOyDhhIvhhajhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFlFR1MKK0M2MEM7QzYwQzsxMTBCIDExNjggMTFBQjtDNjBDOzExMEIgMTE2OCAxMUFCOyAjICjsmIw7IOyYjDsg4YSL4YWo4YarOyDsmIw7IOGEi+GFqOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgWUVOCitDNjBEO0M2MEQ7MTEwQiAxMTY4IDExQUM7QzYwRDsxMTBCIDExNjggMTFBQzsgIyAo7JiNOyDsmI07IOGEi+GFqOGGrDsg7JiNOyDhhIvhhajhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFlFTkoKK0M2MEU7QzYwRTsxMTBCIDExNjggMTFBRDtDNjBFOzExMEIgMTE2OCAxMUFEOyAjICjsmI47IOyYjjsg4YSL4YWo4YatOyDsmI47IOGEi+GFqOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgWUVOSAorQzYwRjtDNjBGOzExMEIgMTE2OCAxMUFFO0M2MEY7MTEwQiAxMTY4IDExQUU7ICMgKOyYjzsg7JiPOyDhhIvhhajhhq47IOyYjzsg4YSL4YWo4YauOyApIEhBTkdVTCBTWUxMQUJMRSBZRUQKK0M2MTA7QzYxMDsxMTBCIDExNjggMTFBRjtDNjEwOzExMEIgMTE2OCAxMUFGOyAjICjsmJA7IOyYkDsg4YSL4YWo4YavOyDsmJA7IOGEi+GFqOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgWUVMCitDNjExO0M2MTE7MTEwQiAxMTY4IDExQjA7QzYxMTsxMTBCIDExNjggMTFCMDsgIyAo7JiROyDsmJE7IOGEi+GFqOGGsDsg7JiROyDhhIvhhajhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFlFTEcKK0M2MTI7QzYxMjsxMTBCIDExNjggMTFCMTtDNjEyOzExMEIgMTE2OCAxMUIxOyAjICjsmJI7IOyYkjsg4YSL4YWo4YaxOyDsmJI7IOGEi+GFqOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgWUVMTQorQzYxMztDNjEzOzExMEIgMTE2OCAxMUIyO0M2MTM7MTEwQiAxMTY4IDExQjI7ICMgKOyYkzsg7JiTOyDhhIvhhajhhrI7IOyYkzsg4YSL4YWo4YayOyApIEhBTkdVTCBTWUxMQUJMRSBZRUxCCitDNjE0O0M2MTQ7MTEwQiAxMTY4IDExQjM7QzYxNDsxMTBCIDExNjggMTFCMzsgIyAo7JiUOyDsmJQ7IOGEi+GFqOGGszsg7JiUOyDhhIvhhajhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFlFTFMKK0M2MTU7QzYxNTsxMTBCIDExNjggMTFCNDtDNjE1OzExMEIgMTE2OCAxMUI0OyAjICjsmJU7IOyYlTsg4YSL4YWo4Ya0OyDsmJU7IOGEi+GFqOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgWUVMVAorQzYxNjtDNjE2OzExMEIgMTE2OCAxMUI1O0M2MTY7MTEwQiAxMTY4IDExQjU7ICMgKOyYljsg7JiWOyDhhIvhhajhhrU7IOyYljsg4YSL4YWo4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBZRUxQCitDNjE3O0M2MTc7MTEwQiAxMTY4IDExQjY7QzYxNzsxMTBCIDExNjggMTFCNjsgIyAo7JiXOyDsmJc7IOGEi+GFqOGGtjsg7JiXOyDhhIvhhajhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFlFTEgKK0M2MTg7QzYxODsxMTBCIDExNjggMTFCNztDNjE4OzExMEIgMTE2OCAxMUI3OyAjICjsmJg7IOyYmDsg4YSL4YWo4Ya3OyDsmJg7IOGEi+GFqOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgWUVNCitDNjE5O0M2MTk7MTEwQiAxMTY4IDExQjg7QzYxOTsxMTBCIDExNjggMTFCODsgIyAo7JiZOyDsmJk7IOGEi+GFqOGGuDsg7JiZOyDhhIvhhajhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFlFQgorQzYxQTtDNjFBOzExMEIgMTE2OCAxMUI5O0M2MUE7MTEwQiAxMTY4IDExQjk7ICMgKOyYmjsg7JiaOyDhhIvhhajhhrk7IOyYmjsg4YSL4YWo4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBZRUJTCitDNjFCO0M2MUI7MTEwQiAxMTY4IDExQkE7QzYxQjsxMTBCIDExNjggMTFCQTsgIyAo7JibOyDsmJs7IOGEi+GFqOGGujsg7JibOyDhhIvhhajhhro7ICkgSEFOR1VMIFNZTExBQkxFIFlFUworQzYxQztDNjFDOzExMEIgMTE2OCAxMUJCO0M2MUM7MTEwQiAxMTY4IDExQkI7ICMgKOyYnDsg7JicOyDhhIvhhajhhrs7IOyYnDsg4YSL4YWo4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBZRVNTCitDNjFEO0M2MUQ7MTEwQiAxMTY4IDExQkM7QzYxRDsxMTBCIDExNjggMTFCQzsgIyAo7JidOyDsmJ07IOGEi+GFqOGGvDsg7JidOyDhhIvhhajhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFlFTkcKK0M2MUU7QzYxRTsxMTBCIDExNjggMTFCRDtDNjFFOzExMEIgMTE2OCAxMUJEOyAjICjsmJ47IOyYnjsg4YSL4YWo4Ya9OyDsmJ47IOGEi+GFqOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgWUVKCitDNjFGO0M2MUY7MTEwQiAxMTY4IDExQkU7QzYxRjsxMTBCIDExNjggMTFCRTsgIyAo7JifOyDsmJ87IOGEi+GFqOGGvjsg7JifOyDhhIvhhajhhr47ICkgSEFOR1VMIFNZTExBQkxFIFlFQworQzYyMDtDNjIwOzExMEIgMTE2OCAxMUJGO0M2MjA7MTEwQiAxMTY4IDExQkY7ICMgKOyYoDsg7JigOyDhhIvhhajhhr87IOyYoDsg4YSL4YWo4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBZRUsKK0M2MjE7QzYyMTsxMTBCIDExNjggMTFDMDtDNjIxOzExMEIgMTE2OCAxMUMwOyAjICjsmKE7IOyYoTsg4YSL4YWo4YeAOyDsmKE7IOGEi+GFqOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgWUVUCitDNjIyO0M2MjI7MTEwQiAxMTY4IDExQzE7QzYyMjsxMTBCIDExNjggMTFDMTsgIyAo7JiiOyDsmKI7IOGEi+GFqOGHgTsg7JiiOyDhhIvhhajhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFlFUAorQzYyMztDNjIzOzExMEIgMTE2OCAxMUMyO0M2MjM7MTEwQiAxMTY4IDExQzI7ICMgKOyYozsg7JijOyDhhIvhhajhh4I7IOyYozsg4YSL4YWo4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBZRUgKK0M2MjQ7QzYyNDsxMTBCIDExNjk7QzYyNDsxMTBCIDExNjk7ICMgKOyYpDsg7JikOyDhhIvhhak7IOyYpDsg4YSL4YWpOyApIEhBTkdVTCBTWUxMQUJMRSBPCitDNjI1O0M2MjU7MTEwQiAxMTY5IDExQTg7QzYyNTsxMTBCIDExNjkgMTFBODsgIyAo7JilOyDsmKU7IOGEi+GFqeGGqDsg7JilOyDhhIvhhanhhqg7ICkgSEFOR1VMIFNZTExBQkxFIE9HCitDNjI2O0M2MjY7MTEwQiAxMTY5IDExQTk7QzYyNjsxMTBCIDExNjkgMTFBOTsgIyAo7JimOyDsmKY7IOGEi+GFqeGGqTsg7JimOyDhhIvhhanhhqk7ICkgSEFOR1VMIFNZTExBQkxFIE9HRworQzYyNztDNjI3OzExMEIgMTE2OSAxMUFBO0M2Mjc7MTEwQiAxMTY5IDExQUE7ICMgKOyYpzsg7JinOyDhhIvhhanhhqo7IOyYpzsg4YSL4YWp4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBPR1MKK0M2Mjg7QzYyODsxMTBCIDExNjkgMTFBQjtDNjI4OzExMEIgMTE2OSAxMUFCOyAjICjsmKg7IOyYqDsg4YSL4YWp4YarOyDsmKg7IOGEi+GFqeGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgT04KK0M2Mjk7QzYyOTsxMTBCIDExNjkgMTFBQztDNjI5OzExMEIgMTE2OSAxMUFDOyAjICjsmKk7IOyYqTsg4YSL4YWp4YasOyDsmKk7IOGEi+GFqeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgT05KCitDNjJBO0M2MkE7MTEwQiAxMTY5IDExQUQ7QzYyQTsxMTBCIDExNjkgMTFBRDsgIyAo7JiqOyDsmKo7IOGEi+GFqeGGrTsg7JiqOyDhhIvhhanhhq07ICkgSEFOR1VMIFNZTExBQkxFIE9OSAorQzYyQjtDNjJCOzExMEIgMTE2OSAxMUFFO0M2MkI7MTEwQiAxMTY5IDExQUU7ICMgKOyYqzsg7JirOyDhhIvhhanhhq47IOyYqzsg4YSL4YWp4YauOyApIEhBTkdVTCBTWUxMQUJMRSBPRAorQzYyQztDNjJDOzExMEIgMTE2OSAxMUFGO0M2MkM7MTEwQiAxMTY5IDExQUY7ICMgKOyYrDsg7JisOyDhhIvhhanhhq87IOyYrDsg4YSL4YWp4YavOyApIEhBTkdVTCBTWUxMQUJMRSBPTAorQzYyRDtDNjJEOzExMEIgMTE2OSAxMUIwO0M2MkQ7MTEwQiAxMTY5IDExQjA7ICMgKOyYrTsg7JitOyDhhIvhhanhhrA7IOyYrTsg4YSL4YWp4YawOyApIEhBTkdVTCBTWUxMQUJMRSBPTEcKK0M2MkU7QzYyRTsxMTBCIDExNjkgMTFCMTtDNjJFOzExMEIgMTE2OSAxMUIxOyAjICjsmK47IOyYrjsg4YSL4YWp4YaxOyDsmK47IOGEi+GFqeGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgT0xNCitDNjJGO0M2MkY7MTEwQiAxMTY5IDExQjI7QzYyRjsxMTBCIDExNjkgMTFCMjsgIyAo7JivOyDsmK87IOGEi+GFqeGGsjsg7JivOyDhhIvhhanhhrI7ICkgSEFOR1VMIFNZTExBQkxFIE9MQgorQzYzMDtDNjMwOzExMEIgMTE2OSAxMUIzO0M2MzA7MTEwQiAxMTY5IDExQjM7ICMgKOyYsDsg7JiwOyDhhIvhhanhhrM7IOyYsDsg4YSL4YWp4YazOyApIEhBTkdVTCBTWUxMQUJMRSBPTFMKK0M2MzE7QzYzMTsxMTBCIDExNjkgMTFCNDtDNjMxOzExMEIgMTE2OSAxMUI0OyAjICjsmLE7IOyYsTsg4YSL4YWp4Ya0OyDsmLE7IOGEi+GFqeGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgT0xUCitDNjMyO0M2MzI7MTEwQiAxMTY5IDExQjU7QzYzMjsxMTBCIDExNjkgMTFCNTsgIyAo7JiyOyDsmLI7IOGEi+GFqeGGtTsg7JiyOyDhhIvhhanhhrU7ICkgSEFOR1VMIFNZTExBQkxFIE9MUAorQzYzMztDNjMzOzExMEIgMTE2OSAxMUI2O0M2MzM7MTEwQiAxMTY5IDExQjY7ICMgKOyYszsg7JizOyDhhIvhhanhhrY7IOyYszsg4YSL4YWp4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBPTEgKK0M2MzQ7QzYzNDsxMTBCIDExNjkgMTFCNztDNjM0OzExMEIgMTE2OSAxMUI3OyAjICjsmLQ7IOyYtDsg4YSL4YWp4Ya3OyDsmLQ7IOGEi+GFqeGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgT00KK0M2MzU7QzYzNTsxMTBCIDExNjkgMTFCODtDNjM1OzExMEIgMTE2OSAxMUI4OyAjICjsmLU7IOyYtTsg4YSL4YWp4Ya4OyDsmLU7IOGEi+GFqeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgT0IKK0M2MzY7QzYzNjsxMTBCIDExNjkgMTFCOTtDNjM2OzExMEIgMTE2OSAxMUI5OyAjICjsmLY7IOyYtjsg4YSL4YWp4Ya5OyDsmLY7IOGEi+GFqeGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgT0JTCitDNjM3O0M2Mzc7MTEwQiAxMTY5IDExQkE7QzYzNzsxMTBCIDExNjkgMTFCQTsgIyAo7Ji3OyDsmLc7IOGEi+GFqeGGujsg7Ji3OyDhhIvhhanhhro7ICkgSEFOR1VMIFNZTExBQkxFIE9TCitDNjM4O0M2Mzg7MTEwQiAxMTY5IDExQkI7QzYzODsxMTBCIDExNjkgMTFCQjsgIyAo7Ji4OyDsmLg7IOGEi+GFqeGGuzsg7Ji4OyDhhIvhhanhhrs7ICkgSEFOR1VMIFNZTExBQkxFIE9TUworQzYzOTtDNjM5OzExMEIgMTE2OSAxMUJDO0M2Mzk7MTEwQiAxMTY5IDExQkM7ICMgKOyYuTsg7Ji5OyDhhIvhhanhhrw7IOyYuTsg4YSL4YWp4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBPTkcKK0M2M0E7QzYzQTsxMTBCIDExNjkgMTFCRDtDNjNBOzExMEIgMTE2OSAxMUJEOyAjICjsmLo7IOyYujsg4YSL4YWp4Ya9OyDsmLo7IOGEi+GFqeGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgT0oKK0M2M0I7QzYzQjsxMTBCIDExNjkgMTFCRTtDNjNCOzExMEIgMTE2OSAxMUJFOyAjICjsmLs7IOyYuzsg4YSL4YWp4Ya+OyDsmLs7IOGEi+GFqeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgT0MKK0M2M0M7QzYzQzsxMTBCIDExNjkgMTFCRjtDNjNDOzExMEIgMTE2OSAxMUJGOyAjICjsmLw7IOyYvDsg4YSL4YWp4Ya/OyDsmLw7IOGEi+GFqeGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgT0sKK0M2M0Q7QzYzRDsxMTBCIDExNjkgMTFDMDtDNjNEOzExMEIgMTE2OSAxMUMwOyAjICjsmL07IOyYvTsg4YSL4YWp4YeAOyDsmL07IOGEi+GFqeGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgT1QKK0M2M0U7QzYzRTsxMTBCIDExNjkgMTFDMTtDNjNFOzExMEIgMTE2OSAxMUMxOyAjICjsmL47IOyYvjsg4YSL4YWp4YeBOyDsmL47IOGEi+GFqeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgT1AKK0M2M0Y7QzYzRjsxMTBCIDExNjkgMTFDMjtDNjNGOzExMEIgMTE2OSAxMUMyOyAjICjsmL87IOyYvzsg4YSL4YWp4YeCOyDsmL87IOGEi+GFqeGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgT0gKK0M2NDA7QzY0MDsxMTBCIDExNkE7QzY0MDsxMTBCIDExNkE7ICMgKOyZgDsg7JmAOyDhhIvhhao7IOyZgDsg4YSL4YWqOyApIEhBTkdVTCBTWUxMQUJMRSBXQQorQzY0MTtDNjQxOzExMEIgMTE2QSAxMUE4O0M2NDE7MTEwQiAxMTZBIDExQTg7ICMgKOyZgTsg7JmBOyDhhIvhharhhqg7IOyZgTsg4YSL4YWq4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBXQUcKK0M2NDI7QzY0MjsxMTBCIDExNkEgMTFBOTtDNjQyOzExMEIgMTE2QSAxMUE5OyAjICjsmYI7IOyZgjsg4YSL4YWq4YapOyDsmYI7IOGEi+GFquGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgV0FHRworQzY0MztDNjQzOzExMEIgMTE2QSAxMUFBO0M2NDM7MTEwQiAxMTZBIDExQUE7ICMgKOyZgzsg7JmDOyDhhIvhharhhqo7IOyZgzsg4YSL4YWq4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBXQUdTCitDNjQ0O0M2NDQ7MTEwQiAxMTZBIDExQUI7QzY0NDsxMTBCIDExNkEgMTFBQjsgIyAo7JmEOyDsmYQ7IOGEi+GFquGGqzsg7JmEOyDhhIvhharhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFdBTgorQzY0NTtDNjQ1OzExMEIgMTE2QSAxMUFDO0M2NDU7MTEwQiAxMTZBIDExQUM7ICMgKOyZhTsg7JmFOyDhhIvhharhhqw7IOyZhTsg4YSL4YWq4YasOyApIEhBTkdVTCBTWUxMQUJMRSBXQU5KCitDNjQ2O0M2NDY7MTEwQiAxMTZBIDExQUQ7QzY0NjsxMTBCIDExNkEgMTFBRDsgIyAo7JmGOyDsmYY7IOGEi+GFquGGrTsg7JmGOyDhhIvhharhhq07ICkgSEFOR1VMIFNZTExBQkxFIFdBTkgKK0M2NDc7QzY0NzsxMTBCIDExNkEgMTFBRTtDNjQ3OzExMEIgMTE2QSAxMUFFOyAjICjsmYc7IOyZhzsg4YSL4YWq4YauOyDsmYc7IOGEi+GFquGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgV0FECitDNjQ4O0M2NDg7MTEwQiAxMTZBIDExQUY7QzY0ODsxMTBCIDExNkEgMTFBRjsgIyAo7JmIOyDsmYg7IOGEi+GFquGGrzsg7JmIOyDhhIvhharhhq87ICkgSEFOR1VMIFNZTExBQkxFIFdBTAorQzY0OTtDNjQ5OzExMEIgMTE2QSAxMUIwO0M2NDk7MTEwQiAxMTZBIDExQjA7ICMgKOyZiTsg7JmJOyDhhIvhharhhrA7IOyZiTsg4YSL4YWq4YawOyApIEhBTkdVTCBTWUxMQUJMRSBXQUxHCitDNjRBO0M2NEE7MTEwQiAxMTZBIDExQjE7QzY0QTsxMTBCIDExNkEgMTFCMTsgIyAo7JmKOyDsmYo7IOGEi+GFquGGsTsg7JmKOyDhhIvhharhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFdBTE0KK0M2NEI7QzY0QjsxMTBCIDExNkEgMTFCMjtDNjRCOzExMEIgMTE2QSAxMUIyOyAjICjsmYs7IOyZizsg4YSL4YWq4YayOyDsmYs7IOGEi+GFquGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgV0FMQgorQzY0QztDNjRDOzExMEIgMTE2QSAxMUIzO0M2NEM7MTEwQiAxMTZBIDExQjM7ICMgKOyZjDsg7JmMOyDhhIvhharhhrM7IOyZjDsg4YSL4YWq4YazOyApIEhBTkdVTCBTWUxMQUJMRSBXQUxTCitDNjREO0M2NEQ7MTEwQiAxMTZBIDExQjQ7QzY0RDsxMTBCIDExNkEgMTFCNDsgIyAo7JmNOyDsmY07IOGEi+GFquGGtDsg7JmNOyDhhIvhharhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFdBTFQKK0M2NEU7QzY0RTsxMTBCIDExNkEgMTFCNTtDNjRFOzExMEIgMTE2QSAxMUI1OyAjICjsmY47IOyZjjsg4YSL4YWq4Ya1OyDsmY47IOGEi+GFquGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgV0FMUAorQzY0RjtDNjRGOzExMEIgMTE2QSAxMUI2O0M2NEY7MTEwQiAxMTZBIDExQjY7ICMgKOyZjzsg7JmPOyDhhIvhharhhrY7IOyZjzsg4YSL4YWq4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBXQUxICitDNjUwO0M2NTA7MTEwQiAxMTZBIDExQjc7QzY1MDsxMTBCIDExNkEgMTFCNzsgIyAo7JmQOyDsmZA7IOGEi+GFquGGtzsg7JmQOyDhhIvhharhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFdBTQorQzY1MTtDNjUxOzExMEIgMTE2QSAxMUI4O0M2NTE7MTEwQiAxMTZBIDExQjg7ICMgKOyZkTsg7JmROyDhhIvhharhhrg7IOyZkTsg4YSL4YWq4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBXQUIKK0M2NTI7QzY1MjsxMTBCIDExNkEgMTFCOTtDNjUyOzExMEIgMTE2QSAxMUI5OyAjICjsmZI7IOyZkjsg4YSL4YWq4Ya5OyDsmZI7IOGEi+GFquGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgV0FCUworQzY1MztDNjUzOzExMEIgMTE2QSAxMUJBO0M2NTM7MTEwQiAxMTZBIDExQkE7ICMgKOyZkzsg7JmTOyDhhIvhharhhro7IOyZkzsg4YSL4YWq4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBXQVMKK0M2NTQ7QzY1NDsxMTBCIDExNkEgMTFCQjtDNjU0OzExMEIgMTE2QSAxMUJCOyAjICjsmZQ7IOyZlDsg4YSL4YWq4Ya7OyDsmZQ7IOGEi+GFquGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgV0FTUworQzY1NTtDNjU1OzExMEIgMTE2QSAxMUJDO0M2NTU7MTEwQiAxMTZBIDExQkM7ICMgKOyZlTsg7JmVOyDhhIvhharhhrw7IOyZlTsg4YSL4YWq4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBXQU5HCitDNjU2O0M2NTY7MTEwQiAxMTZBIDExQkQ7QzY1NjsxMTBCIDExNkEgMTFCRDsgIyAo7JmWOyDsmZY7IOGEi+GFquGGvTsg7JmWOyDhhIvhharhhr07ICkgSEFOR1VMIFNZTExBQkxFIFdBSgorQzY1NztDNjU3OzExMEIgMTE2QSAxMUJFO0M2NTc7MTEwQiAxMTZBIDExQkU7ICMgKOyZlzsg7JmXOyDhhIvhharhhr47IOyZlzsg4YSL4YWq4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBXQUMKK0M2NTg7QzY1ODsxMTBCIDExNkEgMTFCRjtDNjU4OzExMEIgMTE2QSAxMUJGOyAjICjsmZg7IOyZmDsg4YSL4YWq4Ya/OyDsmZg7IOGEi+GFquGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgV0FLCitDNjU5O0M2NTk7MTEwQiAxMTZBIDExQzA7QzY1OTsxMTBCIDExNkEgMTFDMDsgIyAo7JmZOyDsmZk7IOGEi+GFquGHgDsg7JmZOyDhhIvhharhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFdBVAorQzY1QTtDNjVBOzExMEIgMTE2QSAxMUMxO0M2NUE7MTEwQiAxMTZBIDExQzE7ICMgKOyZmjsg7JmaOyDhhIvhharhh4E7IOyZmjsg4YSL4YWq4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBXQVAKK0M2NUI7QzY1QjsxMTBCIDExNkEgMTFDMjtDNjVCOzExMEIgMTE2QSAxMUMyOyAjICjsmZs7IOyZmzsg4YSL4YWq4YeCOyDsmZs7IOGEi+GFquGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgV0FICitDNjVDO0M2NUM7MTEwQiAxMTZCO0M2NUM7MTEwQiAxMTZCOyAjICjsmZw7IOyZnDsg4YSL4YWrOyDsmZw7IOGEi+GFqzsgKSBIQU5HVUwgU1lMTEFCTEUgV0FFCitDNjVEO0M2NUQ7MTEwQiAxMTZCIDExQTg7QzY1RDsxMTBCIDExNkIgMTFBODsgIyAo7JmdOyDsmZ07IOGEi+GFq+GGqDsg7JmdOyDhhIvhhavhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFdBRUcKK0M2NUU7QzY1RTsxMTBCIDExNkIgMTFBOTtDNjVFOzExMEIgMTE2QiAxMUE5OyAjICjsmZ47IOyZnjsg4YSL4YWr4YapOyDsmZ47IOGEi+GFq+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgV0FFR0cKK0M2NUY7QzY1RjsxMTBCIDExNkIgMTFBQTtDNjVGOzExMEIgMTE2QiAxMUFBOyAjICjsmZ87IOyZnzsg4YSL4YWr4YaqOyDsmZ87IOGEi+GFq+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgV0FFR1MKK0M2NjA7QzY2MDsxMTBCIDExNkIgMTFBQjtDNjYwOzExMEIgMTE2QiAxMUFCOyAjICjsmaA7IOyZoDsg4YSL4YWr4YarOyDsmaA7IOGEi+GFq+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgV0FFTgorQzY2MTtDNjYxOzExMEIgMTE2QiAxMUFDO0M2NjE7MTEwQiAxMTZCIDExQUM7ICMgKOyZoTsg7JmhOyDhhIvhhavhhqw7IOyZoTsg4YSL4YWr4YasOyApIEhBTkdVTCBTWUxMQUJMRSBXQUVOSgorQzY2MjtDNjYyOzExMEIgMTE2QiAxMUFEO0M2NjI7MTEwQiAxMTZCIDExQUQ7ICMgKOyZojsg7JmiOyDhhIvhhavhhq07IOyZojsg4YSL4YWr4YatOyApIEhBTkdVTCBTWUxMQUJMRSBXQUVOSAorQzY2MztDNjYzOzExMEIgMTE2QiAxMUFFO0M2NjM7MTEwQiAxMTZCIDExQUU7ICMgKOyZozsg7JmjOyDhhIvhhavhhq47IOyZozsg4YSL4YWr4YauOyApIEhBTkdVTCBTWUxMQUJMRSBXQUVECitDNjY0O0M2NjQ7MTEwQiAxMTZCIDExQUY7QzY2NDsxMTBCIDExNkIgMTFBRjsgIyAo7JmkOyDsmaQ7IOGEi+GFq+GGrzsg7JmkOyDhhIvhhavhhq87ICkgSEFOR1VMIFNZTExBQkxFIFdBRUwKK0M2NjU7QzY2NTsxMTBCIDExNkIgMTFCMDtDNjY1OzExMEIgMTE2QiAxMUIwOyAjICjsmaU7IOyZpTsg4YSL4YWr4YawOyDsmaU7IOGEi+GFq+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgV0FFTEcKK0M2NjY7QzY2NjsxMTBCIDExNkIgMTFCMTtDNjY2OzExMEIgMTE2QiAxMUIxOyAjICjsmaY7IOyZpjsg4YSL4YWr4YaxOyDsmaY7IOGEi+GFq+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgV0FFTE0KK0M2Njc7QzY2NzsxMTBCIDExNkIgMTFCMjtDNjY3OzExMEIgMTE2QiAxMUIyOyAjICjsmac7IOyZpzsg4YSL4YWr4YayOyDsmac7IOGEi+GFq+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgV0FFTEIKK0M2Njg7QzY2ODsxMTBCIDExNkIgMTFCMztDNjY4OzExMEIgMTE2QiAxMUIzOyAjICjsmag7IOyZqDsg4YSL4YWr4YazOyDsmag7IOGEi+GFq+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgV0FFTFMKK0M2Njk7QzY2OTsxMTBCIDExNkIgMTFCNDtDNjY5OzExMEIgMTE2QiAxMUI0OyAjICjsmak7IOyZqTsg4YSL4YWr4Ya0OyDsmak7IOGEi+GFq+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgV0FFTFQKK0M2NkE7QzY2QTsxMTBCIDExNkIgMTFCNTtDNjZBOzExMEIgMTE2QiAxMUI1OyAjICjsmao7IOyZqjsg4YSL4YWr4Ya1OyDsmao7IOGEi+GFq+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgV0FFTFAKK0M2NkI7QzY2QjsxMTBCIDExNkIgMTFCNjtDNjZCOzExMEIgMTE2QiAxMUI2OyAjICjsmas7IOyZqzsg4YSL4YWr4Ya2OyDsmas7IOGEi+GFq+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgV0FFTEgKK0M2NkM7QzY2QzsxMTBCIDExNkIgMTFCNztDNjZDOzExMEIgMTE2QiAxMUI3OyAjICjsmaw7IOyZrDsg4YSL4YWr4Ya3OyDsmaw7IOGEi+GFq+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgV0FFTQorQzY2RDtDNjZEOzExMEIgMTE2QiAxMUI4O0M2NkQ7MTEwQiAxMTZCIDExQjg7ICMgKOyZrTsg7JmtOyDhhIvhhavhhrg7IOyZrTsg4YSL4YWr4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBXQUVCCitDNjZFO0M2NkU7MTEwQiAxMTZCIDExQjk7QzY2RTsxMTBCIDExNkIgMTFCOTsgIyAo7JmuOyDsma47IOGEi+GFq+GGuTsg7JmuOyDhhIvhhavhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFdBRUJTCitDNjZGO0M2NkY7MTEwQiAxMTZCIDExQkE7QzY2RjsxMTBCIDExNkIgMTFCQTsgIyAo7JmvOyDsma87IOGEi+GFq+GGujsg7JmvOyDhhIvhhavhhro7ICkgSEFOR1VMIFNZTExBQkxFIFdBRVMKK0M2NzA7QzY3MDsxMTBCIDExNkIgMTFCQjtDNjcwOzExMEIgMTE2QiAxMUJCOyAjICjsmbA7IOyZsDsg4YSL4YWr4Ya7OyDsmbA7IOGEi+GFq+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgV0FFU1MKK0M2NzE7QzY3MTsxMTBCIDExNkIgMTFCQztDNjcxOzExMEIgMTE2QiAxMUJDOyAjICjsmbE7IOyZsTsg4YSL4YWr4Ya8OyDsmbE7IOGEi+GFq+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgV0FFTkcKK0M2NzI7QzY3MjsxMTBCIDExNkIgMTFCRDtDNjcyOzExMEIgMTE2QiAxMUJEOyAjICjsmbI7IOyZsjsg4YSL4YWr4Ya9OyDsmbI7IOGEi+GFq+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgV0FFSgorQzY3MztDNjczOzExMEIgMTE2QiAxMUJFO0M2NzM7MTEwQiAxMTZCIDExQkU7ICMgKOyZszsg7JmzOyDhhIvhhavhhr47IOyZszsg4YSL4YWr4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBXQUVDCitDNjc0O0M2NzQ7MTEwQiAxMTZCIDExQkY7QzY3NDsxMTBCIDExNkIgMTFCRjsgIyAo7Jm0OyDsmbQ7IOGEi+GFq+GGvzsg7Jm0OyDhhIvhhavhhr87ICkgSEFOR1VMIFNZTExBQkxFIFdBRUsKK0M2NzU7QzY3NTsxMTBCIDExNkIgMTFDMDtDNjc1OzExMEIgMTE2QiAxMUMwOyAjICjsmbU7IOyZtTsg4YSL4YWr4YeAOyDsmbU7IOGEi+GFq+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgV0FFVAorQzY3NjtDNjc2OzExMEIgMTE2QiAxMUMxO0M2NzY7MTEwQiAxMTZCIDExQzE7ICMgKOyZtjsg7Jm2OyDhhIvhhavhh4E7IOyZtjsg4YSL4YWr4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBXQUVQCitDNjc3O0M2Nzc7MTEwQiAxMTZCIDExQzI7QzY3NzsxMTBCIDExNkIgMTFDMjsgIyAo7Jm3OyDsmbc7IOGEi+GFq+GHgjsg7Jm3OyDhhIvhhavhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFdBRUgKK0M2Nzg7QzY3ODsxMTBCIDExNkM7QzY3ODsxMTBCIDExNkM7ICMgKOyZuDsg7Jm4OyDhhIvhhaw7IOyZuDsg4YSL4YWsOyApIEhBTkdVTCBTWUxMQUJMRSBPRQorQzY3OTtDNjc5OzExMEIgMTE2QyAxMUE4O0M2Nzk7MTEwQiAxMTZDIDExQTg7ICMgKOyZuTsg7Jm5OyDhhIvhhazhhqg7IOyZuTsg4YSL4YWs4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBPRUcKK0M2N0E7QzY3QTsxMTBCIDExNkMgMTFBOTtDNjdBOzExMEIgMTE2QyAxMUE5OyAjICjsmbo7IOyZujsg4YSL4YWs4YapOyDsmbo7IOGEi+GFrOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgT0VHRworQzY3QjtDNjdCOzExMEIgMTE2QyAxMUFBO0M2N0I7MTEwQiAxMTZDIDExQUE7ICMgKOyZuzsg7Jm7OyDhhIvhhazhhqo7IOyZuzsg4YSL4YWs4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBPRUdTCitDNjdDO0M2N0M7MTEwQiAxMTZDIDExQUI7QzY3QzsxMTBCIDExNkMgMTFBQjsgIyAo7Jm8OyDsmbw7IOGEi+GFrOGGqzsg7Jm8OyDhhIvhhazhhqs7ICkgSEFOR1VMIFNZTExBQkxFIE9FTgorQzY3RDtDNjdEOzExMEIgMTE2QyAxMUFDO0M2N0Q7MTEwQiAxMTZDIDExQUM7ICMgKOyZvTsg7Jm9OyDhhIvhhazhhqw7IOyZvTsg4YSL4YWs4YasOyApIEhBTkdVTCBTWUxMQUJMRSBPRU5KCitDNjdFO0M2N0U7MTEwQiAxMTZDIDExQUQ7QzY3RTsxMTBCIDExNkMgMTFBRDsgIyAo7Jm+OyDsmb47IOGEi+GFrOGGrTsg7Jm+OyDhhIvhhazhhq07ICkgSEFOR1VMIFNZTExBQkxFIE9FTkgKK0M2N0Y7QzY3RjsxMTBCIDExNkMgMTFBRTtDNjdGOzExMEIgMTE2QyAxMUFFOyAjICjsmb87IOyZvzsg4YSL4YWs4YauOyDsmb87IOGEi+GFrOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgT0VECitDNjgwO0M2ODA7MTEwQiAxMTZDIDExQUY7QzY4MDsxMTBCIDExNkMgMTFBRjsgIyAo7JqAOyDsmoA7IOGEi+GFrOGGrzsg7JqAOyDhhIvhhazhhq87ICkgSEFOR1VMIFNZTExBQkxFIE9FTAorQzY4MTtDNjgxOzExMEIgMTE2QyAxMUIwO0M2ODE7MTEwQiAxMTZDIDExQjA7ICMgKOyagTsg7JqBOyDhhIvhhazhhrA7IOyagTsg4YSL4YWs4YawOyApIEhBTkdVTCBTWUxMQUJMRSBPRUxHCitDNjgyO0M2ODI7MTEwQiAxMTZDIDExQjE7QzY4MjsxMTBCIDExNkMgMTFCMTsgIyAo7JqCOyDsmoI7IOGEi+GFrOGGsTsg7JqCOyDhhIvhhazhhrE7ICkgSEFOR1VMIFNZTExBQkxFIE9FTE0KK0M2ODM7QzY4MzsxMTBCIDExNkMgMTFCMjtDNjgzOzExMEIgMTE2QyAxMUIyOyAjICjsmoM7IOyagzsg4YSL4YWs4YayOyDsmoM7IOGEi+GFrOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgT0VMQgorQzY4NDtDNjg0OzExMEIgMTE2QyAxMUIzO0M2ODQ7MTEwQiAxMTZDIDExQjM7ICMgKOyahDsg7JqEOyDhhIvhhazhhrM7IOyahDsg4YSL4YWs4YazOyApIEhBTkdVTCBTWUxMQUJMRSBPRUxTCitDNjg1O0M2ODU7MTEwQiAxMTZDIDExQjQ7QzY4NTsxMTBCIDExNkMgMTFCNDsgIyAo7JqFOyDsmoU7IOGEi+GFrOGGtDsg7JqFOyDhhIvhhazhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIE9FTFQKK0M2ODY7QzY4NjsxMTBCIDExNkMgMTFCNTtDNjg2OzExMEIgMTE2QyAxMUI1OyAjICjsmoY7IOyahjsg4YSL4YWs4Ya1OyDsmoY7IOGEi+GFrOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgT0VMUAorQzY4NztDNjg3OzExMEIgMTE2QyAxMUI2O0M2ODc7MTEwQiAxMTZDIDExQjY7ICMgKOyahzsg7JqHOyDhhIvhhazhhrY7IOyahzsg4YSL4YWs4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBPRUxICitDNjg4O0M2ODg7MTEwQiAxMTZDIDExQjc7QzY4ODsxMTBCIDExNkMgMTFCNzsgIyAo7JqIOyDsmog7IOGEi+GFrOGGtzsg7JqIOyDhhIvhhazhhrc7ICkgSEFOR1VMIFNZTExBQkxFIE9FTQorQzY4OTtDNjg5OzExMEIgMTE2QyAxMUI4O0M2ODk7MTEwQiAxMTZDIDExQjg7ICMgKOyaiTsg7JqJOyDhhIvhhazhhrg7IOyaiTsg4YSL4YWs4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBPRUIKK0M2OEE7QzY4QTsxMTBCIDExNkMgMTFCOTtDNjhBOzExMEIgMTE2QyAxMUI5OyAjICjsmoo7IOyaijsg4YSL4YWs4Ya5OyDsmoo7IOGEi+GFrOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgT0VCUworQzY4QjtDNjhCOzExMEIgMTE2QyAxMUJBO0M2OEI7MTEwQiAxMTZDIDExQkE7ICMgKOyaizsg7JqLOyDhhIvhhazhhro7IOyaizsg4YSL4YWs4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBPRVMKK0M2OEM7QzY4QzsxMTBCIDExNkMgMTFCQjtDNjhDOzExMEIgMTE2QyAxMUJCOyAjICjsmow7IOyajDsg4YSL4YWs4Ya7OyDsmow7IOGEi+GFrOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgT0VTUworQzY4RDtDNjhEOzExMEIgMTE2QyAxMUJDO0M2OEQ7MTEwQiAxMTZDIDExQkM7ICMgKOyajTsg7JqNOyDhhIvhhazhhrw7IOyajTsg4YSL4YWs4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBPRU5HCitDNjhFO0M2OEU7MTEwQiAxMTZDIDExQkQ7QzY4RTsxMTBCIDExNkMgMTFCRDsgIyAo7JqOOyDsmo47IOGEi+GFrOGGvTsg7JqOOyDhhIvhhazhhr07ICkgSEFOR1VMIFNZTExBQkxFIE9FSgorQzY4RjtDNjhGOzExMEIgMTE2QyAxMUJFO0M2OEY7MTEwQiAxMTZDIDExQkU7ICMgKOyajzsg7JqPOyDhhIvhhazhhr47IOyajzsg4YSL4YWs4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBPRUMKK0M2OTA7QzY5MDsxMTBCIDExNkMgMTFCRjtDNjkwOzExMEIgMTE2QyAxMUJGOyAjICjsmpA7IOyakDsg4YSL4YWs4Ya/OyDsmpA7IOGEi+GFrOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgT0VLCitDNjkxO0M2OTE7MTEwQiAxMTZDIDExQzA7QzY5MTsxMTBCIDExNkMgMTFDMDsgIyAo7JqROyDsmpE7IOGEi+GFrOGHgDsg7JqROyDhhIvhhazhh4A7ICkgSEFOR1VMIFNZTExBQkxFIE9FVAorQzY5MjtDNjkyOzExMEIgMTE2QyAxMUMxO0M2OTI7MTEwQiAxMTZDIDExQzE7ICMgKOyakjsg7JqSOyDhhIvhhazhh4E7IOyakjsg4YSL4YWs4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBPRVAKK0M2OTM7QzY5MzsxMTBCIDExNkMgMTFDMjtDNjkzOzExMEIgMTE2QyAxMUMyOyAjICjsmpM7IOyakzsg4YSL4YWs4YeCOyDsmpM7IOGEi+GFrOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgT0VICitDNjk0O0M2OTQ7MTEwQiAxMTZEO0M2OTQ7MTEwQiAxMTZEOyAjICjsmpQ7IOyalDsg4YSL4YWtOyDsmpQ7IOGEi+GFrTsgKSBIQU5HVUwgU1lMTEFCTEUgWU8KK0M2OTU7QzY5NTsxMTBCIDExNkQgMTFBODtDNjk1OzExMEIgMTE2RCAxMUE4OyAjICjsmpU7IOyalTsg4YSL4YWt4YaoOyDsmpU7IOGEi+GFreGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgWU9HCitDNjk2O0M2OTY7MTEwQiAxMTZEIDExQTk7QzY5NjsxMTBCIDExNkQgMTFBOTsgIyAo7JqWOyDsmpY7IOGEi+GFreGGqTsg7JqWOyDhhIvhha3hhqk7ICkgSEFOR1VMIFNZTExBQkxFIFlPR0cKK0M2OTc7QzY5NzsxMTBCIDExNkQgMTFBQTtDNjk3OzExMEIgMTE2RCAxMUFBOyAjICjsmpc7IOyalzsg4YSL4YWt4YaqOyDsmpc7IOGEi+GFreGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgWU9HUworQzY5ODtDNjk4OzExMEIgMTE2RCAxMUFCO0M2OTg7MTEwQiAxMTZEIDExQUI7ICMgKOyamDsg7JqYOyDhhIvhha3hhqs7IOyamDsg4YSL4YWt4YarOyApIEhBTkdVTCBTWUxMQUJMRSBZT04KK0M2OTk7QzY5OTsxMTBCIDExNkQgMTFBQztDNjk5OzExMEIgMTE2RCAxMUFDOyAjICjsmpk7IOyamTsg4YSL4YWt4YasOyDsmpk7IOGEi+GFreGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgWU9OSgorQzY5QTtDNjlBOzExMEIgMTE2RCAxMUFEO0M2OUE7MTEwQiAxMTZEIDExQUQ7ICMgKOyamjsg7JqaOyDhhIvhha3hhq07IOyamjsg4YSL4YWt4YatOyApIEhBTkdVTCBTWUxMQUJMRSBZT05ICitDNjlCO0M2OUI7MTEwQiAxMTZEIDExQUU7QzY5QjsxMTBCIDExNkQgMTFBRTsgIyAo7JqbOyDsmps7IOGEi+GFreGGrjsg7JqbOyDhhIvhha3hhq47ICkgSEFOR1VMIFNZTExBQkxFIFlPRAorQzY5QztDNjlDOzExMEIgMTE2RCAxMUFGO0M2OUM7MTEwQiAxMTZEIDExQUY7ICMgKOyanDsg7JqcOyDhhIvhha3hhq87IOyanDsg4YSL4YWt4YavOyApIEhBTkdVTCBTWUxMQUJMRSBZT0wKK0M2OUQ7QzY5RDsxMTBCIDExNkQgMTFCMDtDNjlEOzExMEIgMTE2RCAxMUIwOyAjICjsmp07IOyanTsg4YSL4YWt4YawOyDsmp07IOGEi+GFreGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgWU9MRworQzY5RTtDNjlFOzExMEIgMTE2RCAxMUIxO0M2OUU7MTEwQiAxMTZEIDExQjE7ICMgKOyanjsg7JqeOyDhhIvhha3hhrE7IOyanjsg4YSL4YWt4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBZT0xNCitDNjlGO0M2OUY7MTEwQiAxMTZEIDExQjI7QzY5RjsxMTBCIDExNkQgMTFCMjsgIyAo7JqfOyDsmp87IOGEi+GFreGGsjsg7JqfOyDhhIvhha3hhrI7ICkgSEFOR1VMIFNZTExBQkxFIFlPTEIKK0M2QTA7QzZBMDsxMTBCIDExNkQgMTFCMztDNkEwOzExMEIgMTE2RCAxMUIzOyAjICjsmqA7IOyaoDsg4YSL4YWt4YazOyDsmqA7IOGEi+GFreGGszsgKSBIQU5HVUwgU1lMTEFCTEUgWU9MUworQzZBMTtDNkExOzExMEIgMTE2RCAxMUI0O0M2QTE7MTEwQiAxMTZEIDExQjQ7ICMgKOyaoTsg7JqhOyDhhIvhha3hhrQ7IOyaoTsg4YSL4YWt4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBZT0xUCitDNkEyO0M2QTI7MTEwQiAxMTZEIDExQjU7QzZBMjsxMTBCIDExNkQgMTFCNTsgIyAo7JqiOyDsmqI7IOGEi+GFreGGtTsg7JqiOyDhhIvhha3hhrU7ICkgSEFOR1VMIFNZTExBQkxFIFlPTFAKK0M2QTM7QzZBMzsxMTBCIDExNkQgMTFCNjtDNkEzOzExMEIgMTE2RCAxMUI2OyAjICjsmqM7IOyaozsg4YSL4YWt4Ya2OyDsmqM7IOGEi+GFreGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgWU9MSAorQzZBNDtDNkE0OzExMEIgMTE2RCAxMUI3O0M2QTQ7MTEwQiAxMTZEIDExQjc7ICMgKOyapDsg7JqkOyDhhIvhha3hhrc7IOyapDsg4YSL4YWt4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBZT00KK0M2QTU7QzZBNTsxMTBCIDExNkQgMTFCODtDNkE1OzExMEIgMTE2RCAxMUI4OyAjICjsmqU7IOyapTsg4YSL4YWt4Ya4OyDsmqU7IOGEi+GFreGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgWU9CCitDNkE2O0M2QTY7MTEwQiAxMTZEIDExQjk7QzZBNjsxMTBCIDExNkQgMTFCOTsgIyAo7JqmOyDsmqY7IOGEi+GFreGGuTsg7JqmOyDhhIvhha3hhrk7ICkgSEFOR1VMIFNZTExBQkxFIFlPQlMKK0M2QTc7QzZBNzsxMTBCIDExNkQgMTFCQTtDNkE3OzExMEIgMTE2RCAxMUJBOyAjICjsmqc7IOyapzsg4YSL4YWt4Ya6OyDsmqc7IOGEi+GFreGGujsgKSBIQU5HVUwgU1lMTEFCTEUgWU9TCitDNkE4O0M2QTg7MTEwQiAxMTZEIDExQkI7QzZBODsxMTBCIDExNkQgMTFCQjsgIyAo7JqoOyDsmqg7IOGEi+GFreGGuzsg7JqoOyDhhIvhha3hhrs7ICkgSEFOR1VMIFNZTExBQkxFIFlPU1MKK0M2QTk7QzZBOTsxMTBCIDExNkQgMTFCQztDNkE5OzExMEIgMTE2RCAxMUJDOyAjICjsmqk7IOyaqTsg4YSL4YWt4Ya8OyDsmqk7IOGEi+GFreGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgWU9ORworQzZBQTtDNkFBOzExMEIgMTE2RCAxMUJEO0M2QUE7MTEwQiAxMTZEIDExQkQ7ICMgKOyaqjsg7JqqOyDhhIvhha3hhr07IOyaqjsg4YSL4YWt4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBZT0oKK0M2QUI7QzZBQjsxMTBCIDExNkQgMTFCRTtDNkFCOzExMEIgMTE2RCAxMUJFOyAjICjsmqs7IOyaqzsg4YSL4YWt4Ya+OyDsmqs7IOGEi+GFreGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgWU9DCitDNkFDO0M2QUM7MTEwQiAxMTZEIDExQkY7QzZBQzsxMTBCIDExNkQgMTFCRjsgIyAo7JqsOyDsmqw7IOGEi+GFreGGvzsg7JqsOyDhhIvhha3hhr87ICkgSEFOR1VMIFNZTExBQkxFIFlPSworQzZBRDtDNkFEOzExMEIgMTE2RCAxMUMwO0M2QUQ7MTEwQiAxMTZEIDExQzA7ICMgKOyarTsg7JqtOyDhhIvhha3hh4A7IOyarTsg4YSL4YWt4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBZT1QKK0M2QUU7QzZBRTsxMTBCIDExNkQgMTFDMTtDNkFFOzExMEIgMTE2RCAxMUMxOyAjICjsmq47IOyarjsg4YSL4YWt4YeBOyDsmq47IOGEi+GFreGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgWU9QCitDNkFGO0M2QUY7MTEwQiAxMTZEIDExQzI7QzZBRjsxMTBCIDExNkQgMTFDMjsgIyAo7JqvOyDsmq87IOGEi+GFreGHgjsg7JqvOyDhhIvhha3hh4I7ICkgSEFOR1VMIFNZTExBQkxFIFlPSAorQzZCMDtDNkIwOzExMEIgMTE2RTtDNkIwOzExMEIgMTE2RTsgIyAo7JqwOyDsmrA7IOGEi+GFrjsg7JqwOyDhhIvhha47ICkgSEFOR1VMIFNZTExBQkxFIFUKK0M2QjE7QzZCMTsxMTBCIDExNkUgMTFBODtDNkIxOzExMEIgMTE2RSAxMUE4OyAjICjsmrE7IOyasTsg4YSL4YWu4YaoOyDsmrE7IOGEi+GFruGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgVUcKK0M2QjI7QzZCMjsxMTBCIDExNkUgMTFBOTtDNkIyOzExMEIgMTE2RSAxMUE5OyAjICjsmrI7IOyasjsg4YSL4YWu4YapOyDsmrI7IOGEi+GFruGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgVUdHCitDNkIzO0M2QjM7MTEwQiAxMTZFIDExQUE7QzZCMzsxMTBCIDExNkUgMTFBQTsgIyAo7JqzOyDsmrM7IOGEi+GFruGGqjsg7JqzOyDhhIvhha7hhqo7ICkgSEFOR1VMIFNZTExBQkxFIFVHUworQzZCNDtDNkI0OzExMEIgMTE2RSAxMUFCO0M2QjQ7MTEwQiAxMTZFIDExQUI7ICMgKOyatDsg7Jq0OyDhhIvhha7hhqs7IOyatDsg4YSL4YWu4YarOyApIEhBTkdVTCBTWUxMQUJMRSBVTgorQzZCNTtDNkI1OzExMEIgMTE2RSAxMUFDO0M2QjU7MTEwQiAxMTZFIDExQUM7ICMgKOyatTsg7Jq1OyDhhIvhha7hhqw7IOyatTsg4YSL4YWu4YasOyApIEhBTkdVTCBTWUxMQUJMRSBVTkoKK0M2QjY7QzZCNjsxMTBCIDExNkUgMTFBRDtDNkI2OzExMEIgMTE2RSAxMUFEOyAjICjsmrY7IOyatjsg4YSL4YWu4YatOyDsmrY7IOGEi+GFruGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgVU5ICitDNkI3O0M2Qjc7MTEwQiAxMTZFIDExQUU7QzZCNzsxMTBCIDExNkUgMTFBRTsgIyAo7Jq3OyDsmrc7IOGEi+GFruGGrjsg7Jq3OyDhhIvhha7hhq47ICkgSEFOR1VMIFNZTExBQkxFIFVECitDNkI4O0M2Qjg7MTEwQiAxMTZFIDExQUY7QzZCODsxMTBCIDExNkUgMTFBRjsgIyAo7Jq4OyDsmrg7IOGEi+GFruGGrzsg7Jq4OyDhhIvhha7hhq87ICkgSEFOR1VMIFNZTExBQkxFIFVMCitDNkI5O0M2Qjk7MTEwQiAxMTZFIDExQjA7QzZCOTsxMTBCIDExNkUgMTFCMDsgIyAo7Jq5OyDsmrk7IOGEi+GFruGGsDsg7Jq5OyDhhIvhha7hhrA7ICkgSEFOR1VMIFNZTExBQkxFIFVMRworQzZCQTtDNkJBOzExMEIgMTE2RSAxMUIxO0M2QkE7MTEwQiAxMTZFIDExQjE7ICMgKOyaujsg7Jq6OyDhhIvhha7hhrE7IOyaujsg4YSL4YWu4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBVTE0KK0M2QkI7QzZCQjsxMTBCIDExNkUgMTFCMjtDNkJCOzExMEIgMTE2RSAxMUIyOyAjICjsmrs7IOyauzsg4YSL4YWu4YayOyDsmrs7IOGEi+GFruGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgVUxCCitDNkJDO0M2QkM7MTEwQiAxMTZFIDExQjM7QzZCQzsxMTBCIDExNkUgMTFCMzsgIyAo7Jq8OyDsmrw7IOGEi+GFruGGszsg7Jq8OyDhhIvhha7hhrM7ICkgSEFOR1VMIFNZTExBQkxFIFVMUworQzZCRDtDNkJEOzExMEIgMTE2RSAxMUI0O0M2QkQ7MTEwQiAxMTZFIDExQjQ7ICMgKOyavTsg7Jq9OyDhhIvhha7hhrQ7IOyavTsg4YSL4YWu4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBVTFQKK0M2QkU7QzZCRTsxMTBCIDExNkUgMTFCNTtDNkJFOzExMEIgMTE2RSAxMUI1OyAjICjsmr47IOyavjsg4YSL4YWu4Ya1OyDsmr47IOGEi+GFruGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgVUxQCitDNkJGO0M2QkY7MTEwQiAxMTZFIDExQjY7QzZCRjsxMTBCIDExNkUgMTFCNjsgIyAo7Jq/OyDsmr87IOGEi+GFruGGtjsg7Jq/OyDhhIvhha7hhrY7ICkgSEFOR1VMIFNZTExBQkxFIFVMSAorQzZDMDtDNkMwOzExMEIgMTE2RSAxMUI3O0M2QzA7MTEwQiAxMTZFIDExQjc7ICMgKOybgDsg7JuAOyDhhIvhha7hhrc7IOybgDsg4YSL4YWu4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBVTQorQzZDMTtDNkMxOzExMEIgMTE2RSAxMUI4O0M2QzE7MTEwQiAxMTZFIDExQjg7ICMgKOybgTsg7JuBOyDhhIvhha7hhrg7IOybgTsg4YSL4YWu4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBVQgorQzZDMjtDNkMyOzExMEIgMTE2RSAxMUI5O0M2QzI7MTEwQiAxMTZFIDExQjk7ICMgKOybgjsg7JuCOyDhhIvhha7hhrk7IOybgjsg4YSL4YWu4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBVQlMKK0M2QzM7QzZDMzsxMTBCIDExNkUgMTFCQTtDNkMzOzExMEIgMTE2RSAxMUJBOyAjICjsm4M7IOybgzsg4YSL4YWu4Ya6OyDsm4M7IOGEi+GFruGGujsgKSBIQU5HVUwgU1lMTEFCTEUgVVMKK0M2QzQ7QzZDNDsxMTBCIDExNkUgMTFCQjtDNkM0OzExMEIgMTE2RSAxMUJCOyAjICjsm4Q7IOybhDsg4YSL4YWu4Ya7OyDsm4Q7IOGEi+GFruGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgVVNTCitDNkM1O0M2QzU7MTEwQiAxMTZFIDExQkM7QzZDNTsxMTBCIDExNkUgMTFCQzsgIyAo7JuFOyDsm4U7IOGEi+GFruGGvDsg7JuFOyDhhIvhha7hhrw7ICkgSEFOR1VMIFNZTExBQkxFIFVORworQzZDNjtDNkM2OzExMEIgMTE2RSAxMUJEO0M2QzY7MTEwQiAxMTZFIDExQkQ7ICMgKOybhjsg7JuGOyDhhIvhha7hhr07IOybhjsg4YSL4YWu4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBVSgorQzZDNztDNkM3OzExMEIgMTE2RSAxMUJFO0M2Qzc7MTEwQiAxMTZFIDExQkU7ICMgKOybhzsg7JuHOyDhhIvhha7hhr47IOybhzsg4YSL4YWu4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBVQworQzZDODtDNkM4OzExMEIgMTE2RSAxMUJGO0M2Qzg7MTEwQiAxMTZFIDExQkY7ICMgKOybiDsg7JuIOyDhhIvhha7hhr87IOybiDsg4YSL4YWu4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBVSworQzZDOTtDNkM5OzExMEIgMTE2RSAxMUMwO0M2Qzk7MTEwQiAxMTZFIDExQzA7ICMgKOybiTsg7JuJOyDhhIvhha7hh4A7IOybiTsg4YSL4YWu4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBVVAorQzZDQTtDNkNBOzExMEIgMTE2RSAxMUMxO0M2Q0E7MTEwQiAxMTZFIDExQzE7ICMgKOybijsg7JuKOyDhhIvhha7hh4E7IOybijsg4YSL4YWu4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBVUAorQzZDQjtDNkNCOzExMEIgMTE2RSAxMUMyO0M2Q0I7MTEwQiAxMTZFIDExQzI7ICMgKOybizsg7JuLOyDhhIvhha7hh4I7IOybizsg4YSL4YWu4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBVSAorQzZDQztDNkNDOzExMEIgMTE2RjtDNkNDOzExMEIgMTE2RjsgIyAo7JuMOyDsm4w7IOGEi+GFrzsg7JuMOyDhhIvhha87ICkgSEFOR1VMIFNZTExBQkxFIFdFTworQzZDRDtDNkNEOzExMEIgMTE2RiAxMUE4O0M2Q0Q7MTEwQiAxMTZGIDExQTg7ICMgKOybjTsg7JuNOyDhhIvhha/hhqg7IOybjTsg4YSL4YWv4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBXRU9HCitDNkNFO0M2Q0U7MTEwQiAxMTZGIDExQTk7QzZDRTsxMTBCIDExNkYgMTFBOTsgIyAo7JuOOyDsm447IOGEi+GFr+GGqTsg7JuOOyDhhIvhha/hhqk7ICkgSEFOR1VMIFNZTExBQkxFIFdFT0dHCitDNkNGO0M2Q0Y7MTEwQiAxMTZGIDExQUE7QzZDRjsxMTBCIDExNkYgMTFBQTsgIyAo7JuPOyDsm487IOGEi+GFr+GGqjsg7JuPOyDhhIvhha/hhqo7ICkgSEFOR1VMIFNZTExBQkxFIFdFT0dTCitDNkQwO0M2RDA7MTEwQiAxMTZGIDExQUI7QzZEMDsxMTBCIDExNkYgMTFBQjsgIyAo7JuQOyDsm5A7IOGEi+GFr+GGqzsg7JuQOyDhhIvhha/hhqs7ICkgSEFOR1VMIFNZTExBQkxFIFdFT04KK0M2RDE7QzZEMTsxMTBCIDExNkYgMTFBQztDNkQxOzExMEIgMTE2RiAxMUFDOyAjICjsm5E7IOybkTsg4YSL4YWv4YasOyDsm5E7IOGEi+GFr+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgV0VPTkoKK0M2RDI7QzZEMjsxMTBCIDExNkYgMTFBRDtDNkQyOzExMEIgMTE2RiAxMUFEOyAjICjsm5I7IOybkjsg4YSL4YWv4YatOyDsm5I7IOGEi+GFr+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgV0VPTkgKK0M2RDM7QzZEMzsxMTBCIDExNkYgMTFBRTtDNkQzOzExMEIgMTE2RiAxMUFFOyAjICjsm5M7IOybkzsg4YSL4YWv4YauOyDsm5M7IOGEi+GFr+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgV0VPRAorQzZENDtDNkQ0OzExMEIgMTE2RiAxMUFGO0M2RDQ7MTEwQiAxMTZGIDExQUY7ICMgKOyblDsg7JuUOyDhhIvhha/hhq87IOyblDsg4YSL4YWv4YavOyApIEhBTkdVTCBTWUxMQUJMRSBXRU9MCitDNkQ1O0M2RDU7MTEwQiAxMTZGIDExQjA7QzZENTsxMTBCIDExNkYgMTFCMDsgIyAo7JuVOyDsm5U7IOGEi+GFr+GGsDsg7JuVOyDhhIvhha/hhrA7ICkgSEFOR1VMIFNZTExBQkxFIFdFT0xHCitDNkQ2O0M2RDY7MTEwQiAxMTZGIDExQjE7QzZENjsxMTBCIDExNkYgMTFCMTsgIyAo7JuWOyDsm5Y7IOGEi+GFr+GGsTsg7JuWOyDhhIvhha/hhrE7ICkgSEFOR1VMIFNZTExBQkxFIFdFT0xNCitDNkQ3O0M2RDc7MTEwQiAxMTZGIDExQjI7QzZENzsxMTBCIDExNkYgMTFCMjsgIyAo7JuXOyDsm5c7IOGEi+GFr+GGsjsg7JuXOyDhhIvhha/hhrI7ICkgSEFOR1VMIFNZTExBQkxFIFdFT0xCCitDNkQ4O0M2RDg7MTEwQiAxMTZGIDExQjM7QzZEODsxMTBCIDExNkYgMTFCMzsgIyAo7JuYOyDsm5g7IOGEi+GFr+GGszsg7JuYOyDhhIvhha/hhrM7ICkgSEFOR1VMIFNZTExBQkxFIFdFT0xTCitDNkQ5O0M2RDk7MTEwQiAxMTZGIDExQjQ7QzZEOTsxMTBCIDExNkYgMTFCNDsgIyAo7JuZOyDsm5k7IOGEi+GFr+GGtDsg7JuZOyDhhIvhha/hhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFdFT0xUCitDNkRBO0M2REE7MTEwQiAxMTZGIDExQjU7QzZEQTsxMTBCIDExNkYgMTFCNTsgIyAo7JuaOyDsm5o7IOGEi+GFr+GGtTsg7JuaOyDhhIvhha/hhrU7ICkgSEFOR1VMIFNZTExBQkxFIFdFT0xQCitDNkRCO0M2REI7MTEwQiAxMTZGIDExQjY7QzZEQjsxMTBCIDExNkYgMTFCNjsgIyAo7JubOyDsm5s7IOGEi+GFr+GGtjsg7JubOyDhhIvhha/hhrY7ICkgSEFOR1VMIFNZTExBQkxFIFdFT0xICitDNkRDO0M2REM7MTEwQiAxMTZGIDExQjc7QzZEQzsxMTBCIDExNkYgMTFCNzsgIyAo7JucOyDsm5w7IOGEi+GFr+GGtzsg7JucOyDhhIvhha/hhrc7ICkgSEFOR1VMIFNZTExBQkxFIFdFT00KK0M2REQ7QzZERDsxMTBCIDExNkYgMTFCODtDNkREOzExMEIgMTE2RiAxMUI4OyAjICjsm507IOybnTsg4YSL4YWv4Ya4OyDsm507IOGEi+GFr+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgV0VPQgorQzZERTtDNkRFOzExMEIgMTE2RiAxMUI5O0M2REU7MTEwQiAxMTZGIDExQjk7ICMgKOybnjsg7JueOyDhhIvhha/hhrk7IOybnjsg4YSL4YWv4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBXRU9CUworQzZERjtDNkRGOzExMEIgMTE2RiAxMUJBO0M2REY7MTEwQiAxMTZGIDExQkE7ICMgKOybnzsg7JufOyDhhIvhha/hhro7IOybnzsg4YSL4YWv4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBXRU9TCitDNkUwO0M2RTA7MTEwQiAxMTZGIDExQkI7QzZFMDsxMTBCIDExNkYgMTFCQjsgIyAo7JugOyDsm6A7IOGEi+GFr+GGuzsg7JugOyDhhIvhha/hhrs7ICkgSEFOR1VMIFNZTExBQkxFIFdFT1NTCitDNkUxO0M2RTE7MTEwQiAxMTZGIDExQkM7QzZFMTsxMTBCIDExNkYgMTFCQzsgIyAo7JuhOyDsm6E7IOGEi+GFr+GGvDsg7JuhOyDhhIvhha/hhrw7ICkgSEFOR1VMIFNZTExBQkxFIFdFT05HCitDNkUyO0M2RTI7MTEwQiAxMTZGIDExQkQ7QzZFMjsxMTBCIDExNkYgMTFCRDsgIyAo7JuiOyDsm6I7IOGEi+GFr+GGvTsg7JuiOyDhhIvhha/hhr07ICkgSEFOR1VMIFNZTExBQkxFIFdFT0oKK0M2RTM7QzZFMzsxMTBCIDExNkYgMTFCRTtDNkUzOzExMEIgMTE2RiAxMUJFOyAjICjsm6M7IOybozsg4YSL4YWv4Ya+OyDsm6M7IOGEi+GFr+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgV0VPQworQzZFNDtDNkU0OzExMEIgMTE2RiAxMUJGO0M2RTQ7MTEwQiAxMTZGIDExQkY7ICMgKOybpDsg7JukOyDhhIvhha/hhr87IOybpDsg4YSL4YWv4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBXRU9LCitDNkU1O0M2RTU7MTEwQiAxMTZGIDExQzA7QzZFNTsxMTBCIDExNkYgMTFDMDsgIyAo7JulOyDsm6U7IOGEi+GFr+GHgDsg7JulOyDhhIvhha/hh4A7ICkgSEFOR1VMIFNZTExBQkxFIFdFT1QKK0M2RTY7QzZFNjsxMTBCIDExNkYgMTFDMTtDNkU2OzExMEIgMTE2RiAxMUMxOyAjICjsm6Y7IOybpjsg4YSL4YWv4YeBOyDsm6Y7IOGEi+GFr+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgV0VPUAorQzZFNztDNkU3OzExMEIgMTE2RiAxMUMyO0M2RTc7MTEwQiAxMTZGIDExQzI7ICMgKOybpzsg7JunOyDhhIvhha/hh4I7IOybpzsg4YSL4YWv4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBXRU9ICitDNkU4O0M2RTg7MTEwQiAxMTcwO0M2RTg7MTEwQiAxMTcwOyAjICjsm6g7IOybqDsg4YSL4YWwOyDsm6g7IOGEi+GFsDsgKSBIQU5HVUwgU1lMTEFCTEUgV0UKK0M2RTk7QzZFOTsxMTBCIDExNzAgMTFBODtDNkU5OzExMEIgMTE3MCAxMUE4OyAjICjsm6k7IOybqTsg4YSL4YWw4YaoOyDsm6k7IOGEi+GFsOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgV0VHCitDNkVBO0M2RUE7MTEwQiAxMTcwIDExQTk7QzZFQTsxMTBCIDExNzAgMTFBOTsgIyAo7JuqOyDsm6o7IOGEi+GFsOGGqTsg7JuqOyDhhIvhhbDhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFdFR0cKK0M2RUI7QzZFQjsxMTBCIDExNzAgMTFBQTtDNkVCOzExMEIgMTE3MCAxMUFBOyAjICjsm6s7IOybqzsg4YSL4YWw4YaqOyDsm6s7IOGEi+GFsOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgV0VHUworQzZFQztDNkVDOzExMEIgMTE3MCAxMUFCO0M2RUM7MTEwQiAxMTcwIDExQUI7ICMgKOybrDsg7JusOyDhhIvhhbDhhqs7IOybrDsg4YSL4YWw4YarOyApIEhBTkdVTCBTWUxMQUJMRSBXRU4KK0M2RUQ7QzZFRDsxMTBCIDExNzAgMTFBQztDNkVEOzExMEIgMTE3MCAxMUFDOyAjICjsm607IOybrTsg4YSL4YWw4YasOyDsm607IOGEi+GFsOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgV0VOSgorQzZFRTtDNkVFOzExMEIgMTE3MCAxMUFEO0M2RUU7MTEwQiAxMTcwIDExQUQ7ICMgKOybrjsg7JuuOyDhhIvhhbDhhq07IOybrjsg4YSL4YWw4YatOyApIEhBTkdVTCBTWUxMQUJMRSBXRU5ICitDNkVGO0M2RUY7MTEwQiAxMTcwIDExQUU7QzZFRjsxMTBCIDExNzAgMTFBRTsgIyAo7JuvOyDsm687IOGEi+GFsOGGrjsg7JuvOyDhhIvhhbDhhq47ICkgSEFOR1VMIFNZTExBQkxFIFdFRAorQzZGMDtDNkYwOzExMEIgMTE3MCAxMUFGO0M2RjA7MTEwQiAxMTcwIDExQUY7ICMgKOybsDsg7JuwOyDhhIvhhbDhhq87IOybsDsg4YSL4YWw4YavOyApIEhBTkdVTCBTWUxMQUJMRSBXRUwKK0M2RjE7QzZGMTsxMTBCIDExNzAgMTFCMDtDNkYxOzExMEIgMTE3MCAxMUIwOyAjICjsm7E7IOybsTsg4YSL4YWw4YawOyDsm7E7IOGEi+GFsOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgV0VMRworQzZGMjtDNkYyOzExMEIgMTE3MCAxMUIxO0M2RjI7MTEwQiAxMTcwIDExQjE7ICMgKOybsjsg7JuyOyDhhIvhhbDhhrE7IOybsjsg4YSL4YWw4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBXRUxNCitDNkYzO0M2RjM7MTEwQiAxMTcwIDExQjI7QzZGMzsxMTBCIDExNzAgMTFCMjsgIyAo7JuzOyDsm7M7IOGEi+GFsOGGsjsg7JuzOyDhhIvhhbDhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFdFTEIKK0M2RjQ7QzZGNDsxMTBCIDExNzAgMTFCMztDNkY0OzExMEIgMTE3MCAxMUIzOyAjICjsm7Q7IOybtDsg4YSL4YWw4YazOyDsm7Q7IOGEi+GFsOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgV0VMUworQzZGNTtDNkY1OzExMEIgMTE3MCAxMUI0O0M2RjU7MTEwQiAxMTcwIDExQjQ7ICMgKOybtTsg7Ju1OyDhhIvhhbDhhrQ7IOybtTsg4YSL4YWw4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBXRUxUCitDNkY2O0M2RjY7MTEwQiAxMTcwIDExQjU7QzZGNjsxMTBCIDExNzAgMTFCNTsgIyAo7Ju2OyDsm7Y7IOGEi+GFsOGGtTsg7Ju2OyDhhIvhhbDhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFdFTFAKK0M2Rjc7QzZGNzsxMTBCIDExNzAgMTFCNjtDNkY3OzExMEIgMTE3MCAxMUI2OyAjICjsm7c7IOybtzsg4YSL4YWw4Ya2OyDsm7c7IOGEi+GFsOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgV0VMSAorQzZGODtDNkY4OzExMEIgMTE3MCAxMUI3O0M2Rjg7MTEwQiAxMTcwIDExQjc7ICMgKOybuDsg7Ju4OyDhhIvhhbDhhrc7IOybuDsg4YSL4YWw4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBXRU0KK0M2Rjk7QzZGOTsxMTBCIDExNzAgMTFCODtDNkY5OzExMEIgMTE3MCAxMUI4OyAjICjsm7k7IOybuTsg4YSL4YWw4Ya4OyDsm7k7IOGEi+GFsOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgV0VCCitDNkZBO0M2RkE7MTEwQiAxMTcwIDExQjk7QzZGQTsxMTBCIDExNzAgMTFCOTsgIyAo7Ju6OyDsm7o7IOGEi+GFsOGGuTsg7Ju6OyDhhIvhhbDhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFdFQlMKK0M2RkI7QzZGQjsxMTBCIDExNzAgMTFCQTtDNkZCOzExMEIgMTE3MCAxMUJBOyAjICjsm7s7IOybuzsg4YSL4YWw4Ya6OyDsm7s7IOGEi+GFsOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgV0VTCitDNkZDO0M2RkM7MTEwQiAxMTcwIDExQkI7QzZGQzsxMTBCIDExNzAgMTFCQjsgIyAo7Ju8OyDsm7w7IOGEi+GFsOGGuzsg7Ju8OyDhhIvhhbDhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFdFU1MKK0M2RkQ7QzZGRDsxMTBCIDExNzAgMTFCQztDNkZEOzExMEIgMTE3MCAxMUJDOyAjICjsm707IOybvTsg4YSL4YWw4Ya8OyDsm707IOGEi+GFsOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgV0VORworQzZGRTtDNkZFOzExMEIgMTE3MCAxMUJEO0M2RkU7MTEwQiAxMTcwIDExQkQ7ICMgKOybvjsg7Ju+OyDhhIvhhbDhhr07IOybvjsg4YSL4YWw4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBXRUoKK0M2RkY7QzZGRjsxMTBCIDExNzAgMTFCRTtDNkZGOzExMEIgMTE3MCAxMUJFOyAjICjsm787IOybvzsg4YSL4YWw4Ya+OyDsm787IOGEi+GFsOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgV0VDCitDNzAwO0M3MDA7MTEwQiAxMTcwIDExQkY7QzcwMDsxMTBCIDExNzAgMTFCRjsgIyAo7JyAOyDsnIA7IOGEi+GFsOGGvzsg7JyAOyDhhIvhhbDhhr87ICkgSEFOR1VMIFNZTExBQkxFIFdFSworQzcwMTtDNzAxOzExMEIgMTE3MCAxMUMwO0M3MDE7MTEwQiAxMTcwIDExQzA7ICMgKOycgTsg7JyBOyDhhIvhhbDhh4A7IOycgTsg4YSL4YWw4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBXRVQKK0M3MDI7QzcwMjsxMTBCIDExNzAgMTFDMTtDNzAyOzExMEIgMTE3MCAxMUMxOyAjICjsnII7IOycgjsg4YSL4YWw4YeBOyDsnII7IOGEi+GFsOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgV0VQCitDNzAzO0M3MDM7MTEwQiAxMTcwIDExQzI7QzcwMzsxMTBCIDExNzAgMTFDMjsgIyAo7JyDOyDsnIM7IOGEi+GFsOGHgjsg7JyDOyDhhIvhhbDhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFdFSAorQzcwNDtDNzA0OzExMEIgMTE3MTtDNzA0OzExMEIgMTE3MTsgIyAo7JyEOyDsnIQ7IOGEi+GFsTsg7JyEOyDhhIvhhbE7ICkgSEFOR1VMIFNZTExBQkxFIFdJCitDNzA1O0M3MDU7MTEwQiAxMTcxIDExQTg7QzcwNTsxMTBCIDExNzEgMTFBODsgIyAo7JyFOyDsnIU7IOGEi+GFseGGqDsg7JyFOyDhhIvhhbHhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFdJRworQzcwNjtDNzA2OzExMEIgMTE3MSAxMUE5O0M3MDY7MTEwQiAxMTcxIDExQTk7ICMgKOychjsg7JyGOyDhhIvhhbHhhqk7IOychjsg4YSL4YWx4YapOyApIEhBTkdVTCBTWUxMQUJMRSBXSUdHCitDNzA3O0M3MDc7MTEwQiAxMTcxIDExQUE7QzcwNzsxMTBCIDExNzEgMTFBQTsgIyAo7JyHOyDsnIc7IOGEi+GFseGGqjsg7JyHOyDhhIvhhbHhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFdJR1MKK0M3MDg7QzcwODsxMTBCIDExNzEgMTFBQjtDNzA4OzExMEIgMTE3MSAxMUFCOyAjICjsnIg7IOyciDsg4YSL4YWx4YarOyDsnIg7IOGEi+GFseGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgV0lOCitDNzA5O0M3MDk7MTEwQiAxMTcxIDExQUM7QzcwOTsxMTBCIDExNzEgMTFBQzsgIyAo7JyJOyDsnIk7IOGEi+GFseGGrDsg7JyJOyDhhIvhhbHhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFdJTkoKK0M3MEE7QzcwQTsxMTBCIDExNzEgMTFBRDtDNzBBOzExMEIgMTE3MSAxMUFEOyAjICjsnIo7IOycijsg4YSL4YWx4YatOyDsnIo7IOGEi+GFseGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgV0lOSAorQzcwQjtDNzBCOzExMEIgMTE3MSAxMUFFO0M3MEI7MTEwQiAxMTcxIDExQUU7ICMgKOycizsg7JyLOyDhhIvhhbHhhq47IOycizsg4YSL4YWx4YauOyApIEhBTkdVTCBTWUxMQUJMRSBXSUQKK0M3MEM7QzcwQzsxMTBCIDExNzEgMTFBRjtDNzBDOzExMEIgMTE3MSAxMUFGOyAjICjsnIw7IOycjDsg4YSL4YWx4YavOyDsnIw7IOGEi+GFseGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgV0lMCitDNzBEO0M3MEQ7MTEwQiAxMTcxIDExQjA7QzcwRDsxMTBCIDExNzEgMTFCMDsgIyAo7JyNOyDsnI07IOGEi+GFseGGsDsg7JyNOyDhhIvhhbHhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFdJTEcKK0M3MEU7QzcwRTsxMTBCIDExNzEgMTFCMTtDNzBFOzExMEIgMTE3MSAxMUIxOyAjICjsnI47IOycjjsg4YSL4YWx4YaxOyDsnI47IOGEi+GFseGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgV0lMTQorQzcwRjtDNzBGOzExMEIgMTE3MSAxMUIyO0M3MEY7MTEwQiAxMTcxIDExQjI7ICMgKOycjzsg7JyPOyDhhIvhhbHhhrI7IOycjzsg4YSL4YWx4YayOyApIEhBTkdVTCBTWUxMQUJMRSBXSUxCCitDNzEwO0M3MTA7MTEwQiAxMTcxIDExQjM7QzcxMDsxMTBCIDExNzEgMTFCMzsgIyAo7JyQOyDsnJA7IOGEi+GFseGGszsg7JyQOyDhhIvhhbHhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFdJTFMKK0M3MTE7QzcxMTsxMTBCIDExNzEgMTFCNDtDNzExOzExMEIgMTE3MSAxMUI0OyAjICjsnJE7IOyckTsg4YSL4YWx4Ya0OyDsnJE7IOGEi+GFseGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgV0lMVAorQzcxMjtDNzEyOzExMEIgMTE3MSAxMUI1O0M3MTI7MTEwQiAxMTcxIDExQjU7ICMgKOyckjsg7JySOyDhhIvhhbHhhrU7IOyckjsg4YSL4YWx4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBXSUxQCitDNzEzO0M3MTM7MTEwQiAxMTcxIDExQjY7QzcxMzsxMTBCIDExNzEgMTFCNjsgIyAo7JyTOyDsnJM7IOGEi+GFseGGtjsg7JyTOyDhhIvhhbHhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFdJTEgKK0M3MTQ7QzcxNDsxMTBCIDExNzEgMTFCNztDNzE0OzExMEIgMTE3MSAxMUI3OyAjICjsnJQ7IOyclDsg4YSL4YWx4Ya3OyDsnJQ7IOGEi+GFseGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgV0lNCitDNzE1O0M3MTU7MTEwQiAxMTcxIDExQjg7QzcxNTsxMTBCIDExNzEgMTFCODsgIyAo7JyVOyDsnJU7IOGEi+GFseGGuDsg7JyVOyDhhIvhhbHhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFdJQgorQzcxNjtDNzE2OzExMEIgMTE3MSAxMUI5O0M3MTY7MTEwQiAxMTcxIDExQjk7ICMgKOycljsg7JyWOyDhhIvhhbHhhrk7IOycljsg4YSL4YWx4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBXSUJTCitDNzE3O0M3MTc7MTEwQiAxMTcxIDExQkE7QzcxNzsxMTBCIDExNzEgMTFCQTsgIyAo7JyXOyDsnJc7IOGEi+GFseGGujsg7JyXOyDhhIvhhbHhhro7ICkgSEFOR1VMIFNZTExBQkxFIFdJUworQzcxODtDNzE4OzExMEIgMTE3MSAxMUJCO0M3MTg7MTEwQiAxMTcxIDExQkI7ICMgKOycmDsg7JyYOyDhhIvhhbHhhrs7IOycmDsg4YSL4YWx4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBXSVNTCitDNzE5O0M3MTk7MTEwQiAxMTcxIDExQkM7QzcxOTsxMTBCIDExNzEgMTFCQzsgIyAo7JyZOyDsnJk7IOGEi+GFseGGvDsg7JyZOyDhhIvhhbHhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFdJTkcKK0M3MUE7QzcxQTsxMTBCIDExNzEgMTFCRDtDNzFBOzExMEIgMTE3MSAxMUJEOyAjICjsnJo7IOycmjsg4YSL4YWx4Ya9OyDsnJo7IOGEi+GFseGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgV0lKCitDNzFCO0M3MUI7MTEwQiAxMTcxIDExQkU7QzcxQjsxMTBCIDExNzEgMTFCRTsgIyAo7JybOyDsnJs7IOGEi+GFseGGvjsg7JybOyDhhIvhhbHhhr47ICkgSEFOR1VMIFNZTExBQkxFIFdJQworQzcxQztDNzFDOzExMEIgMTE3MSAxMUJGO0M3MUM7MTEwQiAxMTcxIDExQkY7ICMgKOycnDsg7JycOyDhhIvhhbHhhr87IOycnDsg4YSL4YWx4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBXSUsKK0M3MUQ7QzcxRDsxMTBCIDExNzEgMTFDMDtDNzFEOzExMEIgMTE3MSAxMUMwOyAjICjsnJ07IOycnTsg4YSL4YWx4YeAOyDsnJ07IOGEi+GFseGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgV0lUCitDNzFFO0M3MUU7MTEwQiAxMTcxIDExQzE7QzcxRTsxMTBCIDExNzEgMTFDMTsgIyAo7JyeOyDsnJ47IOGEi+GFseGHgTsg7JyeOyDhhIvhhbHhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFdJUAorQzcxRjtDNzFGOzExMEIgMTE3MSAxMUMyO0M3MUY7MTEwQiAxMTcxIDExQzI7ICMgKOycnzsg7JyfOyDhhIvhhbHhh4I7IOycnzsg4YSL4YWx4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBXSUgKK0M3MjA7QzcyMDsxMTBCIDExNzI7QzcyMDsxMTBCIDExNzI7ICMgKOycoDsg7JygOyDhhIvhhbI7IOycoDsg4YSL4YWyOyApIEhBTkdVTCBTWUxMQUJMRSBZVQorQzcyMTtDNzIxOzExMEIgMTE3MiAxMUE4O0M3MjE7MTEwQiAxMTcyIDExQTg7ICMgKOycoTsg7JyhOyDhhIvhhbLhhqg7IOycoTsg4YSL4YWy4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBZVUcKK0M3MjI7QzcyMjsxMTBCIDExNzIgMTFBOTtDNzIyOzExMEIgMTE3MiAxMUE5OyAjICjsnKI7IOycojsg4YSL4YWy4YapOyDsnKI7IOGEi+GFsuGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgWVVHRworQzcyMztDNzIzOzExMEIgMTE3MiAxMUFBO0M3MjM7MTEwQiAxMTcyIDExQUE7ICMgKOycozsg7JyjOyDhhIvhhbLhhqo7IOycozsg4YSL4YWy4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBZVUdTCitDNzI0O0M3MjQ7MTEwQiAxMTcyIDExQUI7QzcyNDsxMTBCIDExNzIgMTFBQjsgIyAo7JykOyDsnKQ7IOGEi+GFsuGGqzsg7JykOyDhhIvhhbLhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFlVTgorQzcyNTtDNzI1OzExMEIgMTE3MiAxMUFDO0M3MjU7MTEwQiAxMTcyIDExQUM7ICMgKOycpTsg7JylOyDhhIvhhbLhhqw7IOycpTsg4YSL4YWy4YasOyApIEhBTkdVTCBTWUxMQUJMRSBZVU5KCitDNzI2O0M3MjY7MTEwQiAxMTcyIDExQUQ7QzcyNjsxMTBCIDExNzIgMTFBRDsgIyAo7JymOyDsnKY7IOGEi+GFsuGGrTsg7JymOyDhhIvhhbLhhq07ICkgSEFOR1VMIFNZTExBQkxFIFlVTkgKK0M3Mjc7QzcyNzsxMTBCIDExNzIgMTFBRTtDNzI3OzExMEIgMTE3MiAxMUFFOyAjICjsnKc7IOycpzsg4YSL4YWy4YauOyDsnKc7IOGEi+GFsuGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgWVVECitDNzI4O0M3Mjg7MTEwQiAxMTcyIDExQUY7QzcyODsxMTBCIDExNzIgMTFBRjsgIyAo7JyoOyDsnKg7IOGEi+GFsuGGrzsg7JyoOyDhhIvhhbLhhq87ICkgSEFOR1VMIFNZTExBQkxFIFlVTAorQzcyOTtDNzI5OzExMEIgMTE3MiAxMUIwO0M3Mjk7MTEwQiAxMTcyIDExQjA7ICMgKOycqTsg7JypOyDhhIvhhbLhhrA7IOycqTsg4YSL4YWy4YawOyApIEhBTkdVTCBTWUxMQUJMRSBZVUxHCitDNzJBO0M3MkE7MTEwQiAxMTcyIDExQjE7QzcyQTsxMTBCIDExNzIgMTFCMTsgIyAo7JyqOyDsnKo7IOGEi+GFsuGGsTsg7JyqOyDhhIvhhbLhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFlVTE0KK0M3MkI7QzcyQjsxMTBCIDExNzIgMTFCMjtDNzJCOzExMEIgMTE3MiAxMUIyOyAjICjsnKs7IOycqzsg4YSL4YWy4YayOyDsnKs7IOGEi+GFsuGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgWVVMQgorQzcyQztDNzJDOzExMEIgMTE3MiAxMUIzO0M3MkM7MTEwQiAxMTcyIDExQjM7ICMgKOycrDsg7JysOyDhhIvhhbLhhrM7IOycrDsg4YSL4YWy4YazOyApIEhBTkdVTCBTWUxMQUJMRSBZVUxTCitDNzJEO0M3MkQ7MTEwQiAxMTcyIDExQjQ7QzcyRDsxMTBCIDExNzIgMTFCNDsgIyAo7JytOyDsnK07IOGEi+GFsuGGtDsg7JytOyDhhIvhhbLhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFlVTFQKK0M3MkU7QzcyRTsxMTBCIDExNzIgMTFCNTtDNzJFOzExMEIgMTE3MiAxMUI1OyAjICjsnK47IOycrjsg4YSL4YWy4Ya1OyDsnK47IOGEi+GFsuGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgWVVMUAorQzcyRjtDNzJGOzExMEIgMTE3MiAxMUI2O0M3MkY7MTEwQiAxMTcyIDExQjY7ICMgKOycrzsg7JyvOyDhhIvhhbLhhrY7IOycrzsg4YSL4YWy4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBZVUxICitDNzMwO0M3MzA7MTEwQiAxMTcyIDExQjc7QzczMDsxMTBCIDExNzIgMTFCNzsgIyAo7JywOyDsnLA7IOGEi+GFsuGGtzsg7JywOyDhhIvhhbLhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFlVTQorQzczMTtDNzMxOzExMEIgMTE3MiAxMUI4O0M3MzE7MTEwQiAxMTcyIDExQjg7ICMgKOycsTsg7JyxOyDhhIvhhbLhhrg7IOycsTsg4YSL4YWy4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBZVUIKK0M3MzI7QzczMjsxMTBCIDExNzIgMTFCOTtDNzMyOzExMEIgMTE3MiAxMUI5OyAjICjsnLI7IOycsjsg4YSL4YWy4Ya5OyDsnLI7IOGEi+GFsuGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgWVVCUworQzczMztDNzMzOzExMEIgMTE3MiAxMUJBO0M3MzM7MTEwQiAxMTcyIDExQkE7ICMgKOycszsg7JyzOyDhhIvhhbLhhro7IOycszsg4YSL4YWy4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBZVVMKK0M3MzQ7QzczNDsxMTBCIDExNzIgMTFCQjtDNzM0OzExMEIgMTE3MiAxMUJCOyAjICjsnLQ7IOyctDsg4YSL4YWy4Ya7OyDsnLQ7IOGEi+GFsuGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgWVVTUworQzczNTtDNzM1OzExMEIgMTE3MiAxMUJDO0M3MzU7MTEwQiAxMTcyIDExQkM7ICMgKOyctTsg7Jy1OyDhhIvhhbLhhrw7IOyctTsg4YSL4YWy4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBZVU5HCitDNzM2O0M3MzY7MTEwQiAxMTcyIDExQkQ7QzczNjsxMTBCIDExNzIgMTFCRDsgIyAo7Jy2OyDsnLY7IOGEi+GFsuGGvTsg7Jy2OyDhhIvhhbLhhr07ICkgSEFOR1VMIFNZTExBQkxFIFlVSgorQzczNztDNzM3OzExMEIgMTE3MiAxMUJFO0M3Mzc7MTEwQiAxMTcyIDExQkU7ICMgKOyctzsg7Jy3OyDhhIvhhbLhhr47IOyctzsg4YSL4YWy4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBZVUMKK0M3Mzg7QzczODsxMTBCIDExNzIgMTFCRjtDNzM4OzExMEIgMTE3MiAxMUJGOyAjICjsnLg7IOycuDsg4YSL4YWy4Ya/OyDsnLg7IOGEi+GFsuGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgWVVLCitDNzM5O0M3Mzk7MTEwQiAxMTcyIDExQzA7QzczOTsxMTBCIDExNzIgMTFDMDsgIyAo7Jy5OyDsnLk7IOGEi+GFsuGHgDsg7Jy5OyDhhIvhhbLhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFlVVAorQzczQTtDNzNBOzExMEIgMTE3MiAxMUMxO0M3M0E7MTEwQiAxMTcyIDExQzE7ICMgKOycujsg7Jy6OyDhhIvhhbLhh4E7IOycujsg4YSL4YWy4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBZVVAKK0M3M0I7QzczQjsxMTBCIDExNzIgMTFDMjtDNzNCOzExMEIgMTE3MiAxMUMyOyAjICjsnLs7IOycuzsg4YSL4YWy4YeCOyDsnLs7IOGEi+GFsuGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgWVVICitDNzNDO0M3M0M7MTEwQiAxMTczO0M3M0M7MTEwQiAxMTczOyAjICjsnLw7IOycvDsg4YSL4YWzOyDsnLw7IOGEi+GFszsgKSBIQU5HVUwgU1lMTEFCTEUgRVUKK0M3M0Q7QzczRDsxMTBCIDExNzMgMTFBODtDNzNEOzExMEIgMTE3MyAxMUE4OyAjICjsnL07IOycvTsg4YSL4YWz4YaoOyDsnL07IOGEi+GFs+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgRVVHCitDNzNFO0M3M0U7MTEwQiAxMTczIDExQTk7QzczRTsxMTBCIDExNzMgMTFBOTsgIyAo7Jy+OyDsnL47IOGEi+GFs+GGqTsg7Jy+OyDhhIvhhbPhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEVVR0cKK0M3M0Y7QzczRjsxMTBCIDExNzMgMTFBQTtDNzNGOzExMEIgMTE3MyAxMUFBOyAjICjsnL87IOycvzsg4YSL4YWz4YaqOyDsnL87IOGEi+GFs+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgRVVHUworQzc0MDtDNzQwOzExMEIgMTE3MyAxMUFCO0M3NDA7MTEwQiAxMTczIDExQUI7ICMgKOydgDsg7J2AOyDhhIvhhbPhhqs7IOydgDsg4YSL4YWz4YarOyApIEhBTkdVTCBTWUxMQUJMRSBFVU4KK0M3NDE7Qzc0MTsxMTBCIDExNzMgMTFBQztDNzQxOzExMEIgMTE3MyAxMUFDOyAjICjsnYE7IOydgTsg4YSL4YWz4YasOyDsnYE7IOGEi+GFs+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgRVVOSgorQzc0MjtDNzQyOzExMEIgMTE3MyAxMUFEO0M3NDI7MTEwQiAxMTczIDExQUQ7ICMgKOydgjsg7J2COyDhhIvhhbPhhq07IOydgjsg4YSL4YWz4YatOyApIEhBTkdVTCBTWUxMQUJMRSBFVU5ICitDNzQzO0M3NDM7MTEwQiAxMTczIDExQUU7Qzc0MzsxMTBCIDExNzMgMTFBRTsgIyAo7J2DOyDsnYM7IOGEi+GFs+GGrjsg7J2DOyDhhIvhhbPhhq47ICkgSEFOR1VMIFNZTExBQkxFIEVVRAorQzc0NDtDNzQ0OzExMEIgMTE3MyAxMUFGO0M3NDQ7MTEwQiAxMTczIDExQUY7ICMgKOydhDsg7J2EOyDhhIvhhbPhhq87IOydhDsg4YSL4YWz4YavOyApIEhBTkdVTCBTWUxMQUJMRSBFVUwKK0M3NDU7Qzc0NTsxMTBCIDExNzMgMTFCMDtDNzQ1OzExMEIgMTE3MyAxMUIwOyAjICjsnYU7IOydhTsg4YSL4YWz4YawOyDsnYU7IOGEi+GFs+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgRVVMRworQzc0NjtDNzQ2OzExMEIgMTE3MyAxMUIxO0M3NDY7MTEwQiAxMTczIDExQjE7ICMgKOydhjsg7J2GOyDhhIvhhbPhhrE7IOydhjsg4YSL4YWz4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBFVUxNCitDNzQ3O0M3NDc7MTEwQiAxMTczIDExQjI7Qzc0NzsxMTBCIDExNzMgMTFCMjsgIyAo7J2HOyDsnYc7IOGEi+GFs+GGsjsg7J2HOyDhhIvhhbPhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEVVTEIKK0M3NDg7Qzc0ODsxMTBCIDExNzMgMTFCMztDNzQ4OzExMEIgMTE3MyAxMUIzOyAjICjsnYg7IOydiDsg4YSL4YWz4YazOyDsnYg7IOGEi+GFs+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgRVVMUworQzc0OTtDNzQ5OzExMEIgMTE3MyAxMUI0O0M3NDk7MTEwQiAxMTczIDExQjQ7ICMgKOydiTsg7J2JOyDhhIvhhbPhhrQ7IOydiTsg4YSL4YWz4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBFVUxUCitDNzRBO0M3NEE7MTEwQiAxMTczIDExQjU7Qzc0QTsxMTBCIDExNzMgMTFCNTsgIyAo7J2KOyDsnYo7IOGEi+GFs+GGtTsg7J2KOyDhhIvhhbPhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEVVTFAKK0M3NEI7Qzc0QjsxMTBCIDExNzMgMTFCNjtDNzRCOzExMEIgMTE3MyAxMUI2OyAjICjsnYs7IOydizsg4YSL4YWz4Ya2OyDsnYs7IOGEi+GFs+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgRVVMSAorQzc0QztDNzRDOzExMEIgMTE3MyAxMUI3O0M3NEM7MTEwQiAxMTczIDExQjc7ICMgKOydjDsg7J2MOyDhhIvhhbPhhrc7IOydjDsg4YSL4YWz4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBFVU0KK0M3NEQ7Qzc0RDsxMTBCIDExNzMgMTFCODtDNzREOzExMEIgMTE3MyAxMUI4OyAjICjsnY07IOydjTsg4YSL4YWz4Ya4OyDsnY07IOGEi+GFs+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgRVVCCitDNzRFO0M3NEU7MTEwQiAxMTczIDExQjk7Qzc0RTsxMTBCIDExNzMgMTFCOTsgIyAo7J2OOyDsnY47IOGEi+GFs+GGuTsg7J2OOyDhhIvhhbPhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEVVQlMKK0M3NEY7Qzc0RjsxMTBCIDExNzMgMTFCQTtDNzRGOzExMEIgMTE3MyAxMUJBOyAjICjsnY87IOydjzsg4YSL4YWz4Ya6OyDsnY87IOGEi+GFs+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgRVVTCitDNzUwO0M3NTA7MTEwQiAxMTczIDExQkI7Qzc1MDsxMTBCIDExNzMgMTFCQjsgIyAo7J2QOyDsnZA7IOGEi+GFs+GGuzsg7J2QOyDhhIvhhbPhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEVVU1MKK0M3NTE7Qzc1MTsxMTBCIDExNzMgMTFCQztDNzUxOzExMEIgMTE3MyAxMUJDOyAjICjsnZE7IOydkTsg4YSL4YWz4Ya8OyDsnZE7IOGEi+GFs+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgRVVORworQzc1MjtDNzUyOzExMEIgMTE3MyAxMUJEO0M3NTI7MTEwQiAxMTczIDExQkQ7ICMgKOydkjsg7J2SOyDhhIvhhbPhhr07IOydkjsg4YSL4YWz4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBFVUoKK0M3NTM7Qzc1MzsxMTBCIDExNzMgMTFCRTtDNzUzOzExMEIgMTE3MyAxMUJFOyAjICjsnZM7IOydkzsg4YSL4YWz4Ya+OyDsnZM7IOGEi+GFs+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgRVVDCitDNzU0O0M3NTQ7MTEwQiAxMTczIDExQkY7Qzc1NDsxMTBCIDExNzMgMTFCRjsgIyAo7J2UOyDsnZQ7IOGEi+GFs+GGvzsg7J2UOyDhhIvhhbPhhr87ICkgSEFOR1VMIFNZTExBQkxFIEVVSworQzc1NTtDNzU1OzExMEIgMTE3MyAxMUMwO0M3NTU7MTEwQiAxMTczIDExQzA7ICMgKOydlTsg7J2VOyDhhIvhhbPhh4A7IOydlTsg4YSL4YWz4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBFVVQKK0M3NTY7Qzc1NjsxMTBCIDExNzMgMTFDMTtDNzU2OzExMEIgMTE3MyAxMUMxOyAjICjsnZY7IOydljsg4YSL4YWz4YeBOyDsnZY7IOGEi+GFs+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgRVVQCitDNzU3O0M3NTc7MTEwQiAxMTczIDExQzI7Qzc1NzsxMTBCIDExNzMgMTFDMjsgIyAo7J2XOyDsnZc7IOGEi+GFs+GHgjsg7J2XOyDhhIvhhbPhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEVVSAorQzc1ODtDNzU4OzExMEIgMTE3NDtDNzU4OzExMEIgMTE3NDsgIyAo7J2YOyDsnZg7IOGEi+GFtDsg7J2YOyDhhIvhhbQ7ICkgSEFOR1VMIFNZTExBQkxFIFlJCitDNzU5O0M3NTk7MTEwQiAxMTc0IDExQTg7Qzc1OTsxMTBCIDExNzQgMTFBODsgIyAo7J2ZOyDsnZk7IOGEi+GFtOGGqDsg7J2ZOyDhhIvhhbThhqg7ICkgSEFOR1VMIFNZTExBQkxFIFlJRworQzc1QTtDNzVBOzExMEIgMTE3NCAxMUE5O0M3NUE7MTEwQiAxMTc0IDExQTk7ICMgKOydmjsg7J2aOyDhhIvhhbThhqk7IOydmjsg4YSL4YW04YapOyApIEhBTkdVTCBTWUxMQUJMRSBZSUdHCitDNzVCO0M3NUI7MTEwQiAxMTc0IDExQUE7Qzc1QjsxMTBCIDExNzQgMTFBQTsgIyAo7J2bOyDsnZs7IOGEi+GFtOGGqjsg7J2bOyDhhIvhhbThhqo7ICkgSEFOR1VMIFNZTExBQkxFIFlJR1MKK0M3NUM7Qzc1QzsxMTBCIDExNzQgMTFBQjtDNzVDOzExMEIgMTE3NCAxMUFCOyAjICjsnZw7IOydnDsg4YSL4YW04YarOyDsnZw7IOGEi+GFtOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgWUlOCitDNzVEO0M3NUQ7MTEwQiAxMTc0IDExQUM7Qzc1RDsxMTBCIDExNzQgMTFBQzsgIyAo7J2dOyDsnZ07IOGEi+GFtOGGrDsg7J2dOyDhhIvhhbThhqw7ICkgSEFOR1VMIFNZTExBQkxFIFlJTkoKK0M3NUU7Qzc1RTsxMTBCIDExNzQgMTFBRDtDNzVFOzExMEIgMTE3NCAxMUFEOyAjICjsnZ47IOydnjsg4YSL4YW04YatOyDsnZ47IOGEi+GFtOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgWUlOSAorQzc1RjtDNzVGOzExMEIgMTE3NCAxMUFFO0M3NUY7MTEwQiAxMTc0IDExQUU7ICMgKOydnzsg7J2fOyDhhIvhhbThhq47IOydnzsg4YSL4YW04YauOyApIEhBTkdVTCBTWUxMQUJMRSBZSUQKK0M3NjA7Qzc2MDsxMTBCIDExNzQgMTFBRjtDNzYwOzExMEIgMTE3NCAxMUFGOyAjICjsnaA7IOydoDsg4YSL4YW04YavOyDsnaA7IOGEi+GFtOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgWUlMCitDNzYxO0M3NjE7MTEwQiAxMTc0IDExQjA7Qzc2MTsxMTBCIDExNzQgMTFCMDsgIyAo7J2hOyDsnaE7IOGEi+GFtOGGsDsg7J2hOyDhhIvhhbThhrA7ICkgSEFOR1VMIFNZTExBQkxFIFlJTEcKK0M3NjI7Qzc2MjsxMTBCIDExNzQgMTFCMTtDNzYyOzExMEIgMTE3NCAxMUIxOyAjICjsnaI7IOydojsg4YSL4YW04YaxOyDsnaI7IOGEi+GFtOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgWUlMTQorQzc2MztDNzYzOzExMEIgMTE3NCAxMUIyO0M3NjM7MTEwQiAxMTc0IDExQjI7ICMgKOydozsg7J2jOyDhhIvhhbThhrI7IOydozsg4YSL4YW04YayOyApIEhBTkdVTCBTWUxMQUJMRSBZSUxCCitDNzY0O0M3NjQ7MTEwQiAxMTc0IDExQjM7Qzc2NDsxMTBCIDExNzQgMTFCMzsgIyAo7J2kOyDsnaQ7IOGEi+GFtOGGszsg7J2kOyDhhIvhhbThhrM7ICkgSEFOR1VMIFNZTExBQkxFIFlJTFMKK0M3NjU7Qzc2NTsxMTBCIDExNzQgMTFCNDtDNzY1OzExMEIgMTE3NCAxMUI0OyAjICjsnaU7IOydpTsg4YSL4YW04Ya0OyDsnaU7IOGEi+GFtOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgWUlMVAorQzc2NjtDNzY2OzExMEIgMTE3NCAxMUI1O0M3NjY7MTEwQiAxMTc0IDExQjU7ICMgKOydpjsg7J2mOyDhhIvhhbThhrU7IOydpjsg4YSL4YW04Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBZSUxQCitDNzY3O0M3Njc7MTEwQiAxMTc0IDExQjY7Qzc2NzsxMTBCIDExNzQgMTFCNjsgIyAo7J2nOyDsnac7IOGEi+GFtOGGtjsg7J2nOyDhhIvhhbThhrY7ICkgSEFOR1VMIFNZTExBQkxFIFlJTEgKK0M3Njg7Qzc2ODsxMTBCIDExNzQgMTFCNztDNzY4OzExMEIgMTE3NCAxMUI3OyAjICjsnag7IOydqDsg4YSL4YW04Ya3OyDsnag7IOGEi+GFtOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgWUlNCitDNzY5O0M3Njk7MTEwQiAxMTc0IDExQjg7Qzc2OTsxMTBCIDExNzQgMTFCODsgIyAo7J2pOyDsnak7IOGEi+GFtOGGuDsg7J2pOyDhhIvhhbThhrg7ICkgSEFOR1VMIFNZTExBQkxFIFlJQgorQzc2QTtDNzZBOzExMEIgMTE3NCAxMUI5O0M3NkE7MTEwQiAxMTc0IDExQjk7ICMgKOydqjsg7J2qOyDhhIvhhbThhrk7IOydqjsg4YSL4YW04Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBZSUJTCitDNzZCO0M3NkI7MTEwQiAxMTc0IDExQkE7Qzc2QjsxMTBCIDExNzQgMTFCQTsgIyAo7J2rOyDsnas7IOGEi+GFtOGGujsg7J2rOyDhhIvhhbThhro7ICkgSEFOR1VMIFNZTExBQkxFIFlJUworQzc2QztDNzZDOzExMEIgMTE3NCAxMUJCO0M3NkM7MTEwQiAxMTc0IDExQkI7ICMgKOydrDsg7J2sOyDhhIvhhbThhrs7IOydrDsg4YSL4YW04Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBZSVNTCitDNzZEO0M3NkQ7MTEwQiAxMTc0IDExQkM7Qzc2RDsxMTBCIDExNzQgMTFCQzsgIyAo7J2tOyDsna07IOGEi+GFtOGGvDsg7J2tOyDhhIvhhbThhrw7ICkgSEFOR1VMIFNZTExBQkxFIFlJTkcKK0M3NkU7Qzc2RTsxMTBCIDExNzQgMTFCRDtDNzZFOzExMEIgMTE3NCAxMUJEOyAjICjsna47IOydrjsg4YSL4YW04Ya9OyDsna47IOGEi+GFtOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgWUlKCitDNzZGO0M3NkY7MTEwQiAxMTc0IDExQkU7Qzc2RjsxMTBCIDExNzQgMTFCRTsgIyAo7J2vOyDsna87IOGEi+GFtOGGvjsg7J2vOyDhhIvhhbThhr47ICkgSEFOR1VMIFNZTExBQkxFIFlJQworQzc3MDtDNzcwOzExMEIgMTE3NCAxMUJGO0M3NzA7MTEwQiAxMTc0IDExQkY7ICMgKOydsDsg7J2wOyDhhIvhhbThhr87IOydsDsg4YSL4YW04Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBZSUsKK0M3NzE7Qzc3MTsxMTBCIDExNzQgMTFDMDtDNzcxOzExMEIgMTE3NCAxMUMwOyAjICjsnbE7IOydsTsg4YSL4YW04YeAOyDsnbE7IOGEi+GFtOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgWUlUCitDNzcyO0M3NzI7MTEwQiAxMTc0IDExQzE7Qzc3MjsxMTBCIDExNzQgMTFDMTsgIyAo7J2yOyDsnbI7IOGEi+GFtOGHgTsg7J2yOyDhhIvhhbThh4E7ICkgSEFOR1VMIFNZTExBQkxFIFlJUAorQzc3MztDNzczOzExMEIgMTE3NCAxMUMyO0M3NzM7MTEwQiAxMTc0IDExQzI7ICMgKOydszsg7J2zOyDhhIvhhbThh4I7IOydszsg4YSL4YW04YeCOyApIEhBTkdVTCBTWUxMQUJMRSBZSUgKK0M3NzQ7Qzc3NDsxMTBCIDExNzU7Qzc3NDsxMTBCIDExNzU7ICMgKOydtDsg7J20OyDhhIvhhbU7IOydtDsg4YSL4YW1OyApIEhBTkdVTCBTWUxMQUJMRSBJCitDNzc1O0M3NzU7MTEwQiAxMTc1IDExQTg7Qzc3NTsxMTBCIDExNzUgMTFBODsgIyAo7J21OyDsnbU7IOGEi+GFteGGqDsg7J21OyDhhIvhhbXhhqg7ICkgSEFOR1VMIFNZTExBQkxFIElHCitDNzc2O0M3NzY7MTEwQiAxMTc1IDExQTk7Qzc3NjsxMTBCIDExNzUgMTFBOTsgIyAo7J22OyDsnbY7IOGEi+GFteGGqTsg7J22OyDhhIvhhbXhhqk7ICkgSEFOR1VMIFNZTExBQkxFIElHRworQzc3NztDNzc3OzExMEIgMTE3NSAxMUFBO0M3Nzc7MTEwQiAxMTc1IDExQUE7ICMgKOydtzsg7J23OyDhhIvhhbXhhqo7IOydtzsg4YSL4YW14YaqOyApIEhBTkdVTCBTWUxMQUJMRSBJR1MKK0M3Nzg7Qzc3ODsxMTBCIDExNzUgMTFBQjtDNzc4OzExMEIgMTE3NSAxMUFCOyAjICjsnbg7IOyduDsg4YSL4YW14YarOyDsnbg7IOGEi+GFteGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgSU4KK0M3Nzk7Qzc3OTsxMTBCIDExNzUgMTFBQztDNzc5OzExMEIgMTE3NSAxMUFDOyAjICjsnbk7IOyduTsg4YSL4YW14YasOyDsnbk7IOGEi+GFteGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSU5KCitDNzdBO0M3N0E7MTEwQiAxMTc1IDExQUQ7Qzc3QTsxMTBCIDExNzUgMTFBRDsgIyAo7J26OyDsnbo7IOGEi+GFteGGrTsg7J26OyDhhIvhhbXhhq07ICkgSEFOR1VMIFNZTExBQkxFIElOSAorQzc3QjtDNzdCOzExMEIgMTE3NSAxMUFFO0M3N0I7MTEwQiAxMTc1IDExQUU7ICMgKOyduzsg7J27OyDhhIvhhbXhhq47IOyduzsg4YSL4YW14YauOyApIEhBTkdVTCBTWUxMQUJMRSBJRAorQzc3QztDNzdDOzExMEIgMTE3NSAxMUFGO0M3N0M7MTEwQiAxMTc1IDExQUY7ICMgKOydvDsg7J28OyDhhIvhhbXhhq87IOydvDsg4YSL4YW14YavOyApIEhBTkdVTCBTWUxMQUJMRSBJTAorQzc3RDtDNzdEOzExMEIgMTE3NSAxMUIwO0M3N0Q7MTEwQiAxMTc1IDExQjA7ICMgKOydvTsg7J29OyDhhIvhhbXhhrA7IOydvTsg4YSL4YW14YawOyApIEhBTkdVTCBTWUxMQUJMRSBJTEcKK0M3N0U7Qzc3RTsxMTBCIDExNzUgMTFCMTtDNzdFOzExMEIgMTE3NSAxMUIxOyAjICjsnb47IOydvjsg4YSL4YW14YaxOyDsnb47IOGEi+GFteGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgSUxNCitDNzdGO0M3N0Y7MTEwQiAxMTc1IDExQjI7Qzc3RjsxMTBCIDExNzUgMTFCMjsgIyAo7J2/OyDsnb87IOGEi+GFteGGsjsg7J2/OyDhhIvhhbXhhrI7ICkgSEFOR1VMIFNZTExBQkxFIElMQgorQzc4MDtDNzgwOzExMEIgMTE3NSAxMUIzO0M3ODA7MTEwQiAxMTc1IDExQjM7ICMgKOyegDsg7J6AOyDhhIvhhbXhhrM7IOyegDsg4YSL4YW14YazOyApIEhBTkdVTCBTWUxMQUJMRSBJTFMKK0M3ODE7Qzc4MTsxMTBCIDExNzUgMTFCNDtDNzgxOzExMEIgMTE3NSAxMUI0OyAjICjsnoE7IOyegTsg4YSL4YW14Ya0OyDsnoE7IOGEi+GFteGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgSUxUCitDNzgyO0M3ODI7MTEwQiAxMTc1IDExQjU7Qzc4MjsxMTBCIDExNzUgMTFCNTsgIyAo7J6COyDsnoI7IOGEi+GFteGGtTsg7J6COyDhhIvhhbXhhrU7ICkgSEFOR1VMIFNZTExBQkxFIElMUAorQzc4MztDNzgzOzExMEIgMTE3NSAxMUI2O0M3ODM7MTEwQiAxMTc1IDExQjY7ICMgKOyegzsg7J6DOyDhhIvhhbXhhrY7IOyegzsg4YSL4YW14Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBJTEgKK0M3ODQ7Qzc4NDsxMTBCIDExNzUgMTFCNztDNzg0OzExMEIgMTE3NSAxMUI3OyAjICjsnoQ7IOyehDsg4YSL4YW14Ya3OyDsnoQ7IOGEi+GFteGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgSU0KK0M3ODU7Qzc4NTsxMTBCIDExNzUgMTFCODtDNzg1OzExMEIgMTE3NSAxMUI4OyAjICjsnoU7IOyehTsg4YSL4YW14Ya4OyDsnoU7IOGEi+GFteGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSUIKK0M3ODY7Qzc4NjsxMTBCIDExNzUgMTFCOTtDNzg2OzExMEIgMTE3NSAxMUI5OyAjICjsnoY7IOyehjsg4YSL4YW14Ya5OyDsnoY7IOGEi+GFteGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgSUJTCitDNzg3O0M3ODc7MTEwQiAxMTc1IDExQkE7Qzc4NzsxMTBCIDExNzUgMTFCQTsgIyAo7J6HOyDsnoc7IOGEi+GFteGGujsg7J6HOyDhhIvhhbXhhro7ICkgSEFOR1VMIFNZTExBQkxFIElTCitDNzg4O0M3ODg7MTEwQiAxMTc1IDExQkI7Qzc4ODsxMTBCIDExNzUgMTFCQjsgIyAo7J6IOyDsnog7IOGEi+GFteGGuzsg7J6IOyDhhIvhhbXhhrs7ICkgSEFOR1VMIFNZTExBQkxFIElTUworQzc4OTtDNzg5OzExMEIgMTE3NSAxMUJDO0M3ODk7MTEwQiAxMTc1IDExQkM7ICMgKOyeiTsg7J6JOyDhhIvhhbXhhrw7IOyeiTsg4YSL4YW14Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBJTkcKK0M3OEE7Qzc4QTsxMTBCIDExNzUgMTFCRDtDNzhBOzExMEIgMTE3NSAxMUJEOyAjICjsnoo7IOyeijsg4YSL4YW14Ya9OyDsnoo7IOGEi+GFteGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgSUoKK0M3OEI7Qzc4QjsxMTBCIDExNzUgMTFCRTtDNzhCOzExMEIgMTE3NSAxMUJFOyAjICjsnos7IOyeizsg4YSL4YW14Ya+OyDsnos7IOGEi+GFteGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSUMKK0M3OEM7Qzc4QzsxMTBCIDExNzUgMTFCRjtDNzhDOzExMEIgMTE3NSAxMUJGOyAjICjsnow7IOyejDsg4YSL4YW14Ya/OyDsnow7IOGEi+GFteGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgSUsKK0M3OEQ7Qzc4RDsxMTBCIDExNzUgMTFDMDtDNzhEOzExMEIgMTE3NSAxMUMwOyAjICjsno07IOyejTsg4YSL4YW14YeAOyDsno07IOGEi+GFteGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgSVQKK0M3OEU7Qzc4RTsxMTBCIDExNzUgMTFDMTtDNzhFOzExMEIgMTE3NSAxMUMxOyAjICjsno47IOyejjsg4YSL4YW14YeBOyDsno47IOGEi+GFteGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSVAKK0M3OEY7Qzc4RjsxMTBCIDExNzUgMTFDMjtDNzhGOzExMEIgMTE3NSAxMUMyOyAjICjsno87IOyejzsg4YSL4YW14YeCOyDsno87IOGEi+GFteGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgSUgKK0M3OTA7Qzc5MDsxMTBDIDExNjE7Qzc5MDsxMTBDIDExNjE7ICMgKOyekDsg7J6QOyDhhIzhhaE7IOyekDsg4YSM4YWhOyApIEhBTkdVTCBTWUxMQUJMRSBKQQorQzc5MTtDNzkxOzExMEMgMTE2MSAxMUE4O0M3OTE7MTEwQyAxMTYxIDExQTg7ICMgKOyekTsg7J6ROyDhhIzhhaHhhqg7IOyekTsg4YSM4YWh4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBKQUcKK0M3OTI7Qzc5MjsxMTBDIDExNjEgMTFBOTtDNzkyOzExMEMgMTE2MSAxMUE5OyAjICjsnpI7IOyekjsg4YSM4YWh4YapOyDsnpI7IOGEjOGFoeGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSkFHRworQzc5MztDNzkzOzExMEMgMTE2MSAxMUFBO0M3OTM7MTEwQyAxMTYxIDExQUE7ICMgKOyekzsg7J6TOyDhhIzhhaHhhqo7IOyekzsg4YSM4YWh4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBKQUdTCitDNzk0O0M3OTQ7MTEwQyAxMTYxIDExQUI7Qzc5NDsxMTBDIDExNjEgMTFBQjsgIyAo7J6UOyDsnpQ7IOGEjOGFoeGGqzsg7J6UOyDhhIzhhaHhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEpBTgorQzc5NTtDNzk1OzExMEMgMTE2MSAxMUFDO0M3OTU7MTEwQyAxMTYxIDExQUM7ICMgKOyelTsg7J6VOyDhhIzhhaHhhqw7IOyelTsg4YSM4YWh4YasOyApIEhBTkdVTCBTWUxMQUJMRSBKQU5KCitDNzk2O0M3OTY7MTEwQyAxMTYxIDExQUQ7Qzc5NjsxMTBDIDExNjEgMTFBRDsgIyAo7J6WOyDsnpY7IOGEjOGFoeGGrTsg7J6WOyDhhIzhhaHhhq07ICkgSEFOR1VMIFNZTExBQkxFIEpBTkgKK0M3OTc7Qzc5NzsxMTBDIDExNjEgMTFBRTtDNzk3OzExMEMgMTE2MSAxMUFFOyAjICjsnpc7IOyelzsg4YSM4YWh4YauOyDsnpc7IOGEjOGFoeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSkFECitDNzk4O0M3OTg7MTEwQyAxMTYxIDExQUY7Qzc5ODsxMTBDIDExNjEgMTFBRjsgIyAo7J6YOyDsnpg7IOGEjOGFoeGGrzsg7J6YOyDhhIzhhaHhhq87ICkgSEFOR1VMIFNZTExBQkxFIEpBTAorQzc5OTtDNzk5OzExMEMgMTE2MSAxMUIwO0M3OTk7MTEwQyAxMTYxIDExQjA7ICMgKOyemTsg7J6ZOyDhhIzhhaHhhrA7IOyemTsg4YSM4YWh4YawOyApIEhBTkdVTCBTWUxMQUJMRSBKQUxHCitDNzlBO0M3OUE7MTEwQyAxMTYxIDExQjE7Qzc5QTsxMTBDIDExNjEgMTFCMTsgIyAo7J6aOyDsnpo7IOGEjOGFoeGGsTsg7J6aOyDhhIzhhaHhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEpBTE0KK0M3OUI7Qzc5QjsxMTBDIDExNjEgMTFCMjtDNzlCOzExMEMgMTE2MSAxMUIyOyAjICjsnps7IOyemzsg4YSM4YWh4YayOyDsnps7IOGEjOGFoeGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSkFMQgorQzc5QztDNzlDOzExMEMgMTE2MSAxMUIzO0M3OUM7MTEwQyAxMTYxIDExQjM7ICMgKOyenDsg7J6cOyDhhIzhhaHhhrM7IOyenDsg4YSM4YWh4YazOyApIEhBTkdVTCBTWUxMQUJMRSBKQUxTCitDNzlEO0M3OUQ7MTEwQyAxMTYxIDExQjQ7Qzc5RDsxMTBDIDExNjEgMTFCNDsgIyAo7J6dOyDsnp07IOGEjOGFoeGGtDsg7J6dOyDhhIzhhaHhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEpBTFQKK0M3OUU7Qzc5RTsxMTBDIDExNjEgMTFCNTtDNzlFOzExMEMgMTE2MSAxMUI1OyAjICjsnp47IOyenjsg4YSM4YWh4Ya1OyDsnp47IOGEjOGFoeGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSkFMUAorQzc5RjtDNzlGOzExMEMgMTE2MSAxMUI2O0M3OUY7MTEwQyAxMTYxIDExQjY7ICMgKOyenzsg7J6fOyDhhIzhhaHhhrY7IOyenzsg4YSM4YWh4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBKQUxICitDN0EwO0M3QTA7MTEwQyAxMTYxIDExQjc7QzdBMDsxMTBDIDExNjEgMTFCNzsgIyAo7J6gOyDsnqA7IOGEjOGFoeGGtzsg7J6gOyDhhIzhhaHhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEpBTQorQzdBMTtDN0ExOzExMEMgMTE2MSAxMUI4O0M3QTE7MTEwQyAxMTYxIDExQjg7ICMgKOyeoTsg7J6hOyDhhIzhhaHhhrg7IOyeoTsg4YSM4YWh4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBKQUIKK0M3QTI7QzdBMjsxMTBDIDExNjEgMTFCOTtDN0EyOzExMEMgMTE2MSAxMUI5OyAjICjsnqI7IOyeojsg4YSM4YWh4Ya5OyDsnqI7IOGEjOGFoeGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgSkFCUworQzdBMztDN0EzOzExMEMgMTE2MSAxMUJBO0M3QTM7MTEwQyAxMTYxIDExQkE7ICMgKOyeozsg7J6jOyDhhIzhhaHhhro7IOyeozsg4YSM4YWh4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBKQVMKK0M3QTQ7QzdBNDsxMTBDIDExNjEgMTFCQjtDN0E0OzExMEMgMTE2MSAxMUJCOyAjICjsnqQ7IOyepDsg4YSM4YWh4Ya7OyDsnqQ7IOGEjOGFoeGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSkFTUworQzdBNTtDN0E1OzExMEMgMTE2MSAxMUJDO0M3QTU7MTEwQyAxMTYxIDExQkM7ICMgKOyepTsg7J6lOyDhhIzhhaHhhrw7IOyepTsg4YSM4YWh4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBKQU5HCitDN0E2O0M3QTY7MTEwQyAxMTYxIDExQkQ7QzdBNjsxMTBDIDExNjEgMTFCRDsgIyAo7J6mOyDsnqY7IOGEjOGFoeGGvTsg7J6mOyDhhIzhhaHhhr07ICkgSEFOR1VMIFNZTExBQkxFIEpBSgorQzdBNztDN0E3OzExMEMgMTE2MSAxMUJFO0M3QTc7MTEwQyAxMTYxIDExQkU7ICMgKOyepzsg7J6nOyDhhIzhhaHhhr47IOyepzsg4YSM4YWh4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBKQUMKK0M3QTg7QzdBODsxMTBDIDExNjEgMTFCRjtDN0E4OzExMEMgMTE2MSAxMUJGOyAjICjsnqg7IOyeqDsg4YSM4YWh4Ya/OyDsnqg7IOGEjOGFoeGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgSkFLCitDN0E5O0M3QTk7MTEwQyAxMTYxIDExQzA7QzdBOTsxMTBDIDExNjEgMTFDMDsgIyAo7J6pOyDsnqk7IOGEjOGFoeGHgDsg7J6pOyDhhIzhhaHhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEpBVAorQzdBQTtDN0FBOzExMEMgMTE2MSAxMUMxO0M3QUE7MTEwQyAxMTYxIDExQzE7ICMgKOyeqjsg7J6qOyDhhIzhhaHhh4E7IOyeqjsg4YSM4YWh4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBKQVAKK0M3QUI7QzdBQjsxMTBDIDExNjEgMTFDMjtDN0FCOzExMEMgMTE2MSAxMUMyOyAjICjsnqs7IOyeqzsg4YSM4YWh4YeCOyDsnqs7IOGEjOGFoeGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgSkFICitDN0FDO0M3QUM7MTEwQyAxMTYyO0M3QUM7MTEwQyAxMTYyOyAjICjsnqw7IOyerDsg4YSM4YWiOyDsnqw7IOGEjOGFojsgKSBIQU5HVUwgU1lMTEFCTEUgSkFFCitDN0FEO0M3QUQ7MTEwQyAxMTYyIDExQTg7QzdBRDsxMTBDIDExNjIgMTFBODsgIyAo7J6tOyDsnq07IOGEjOGFouGGqDsg7J6tOyDhhIzhhaLhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEpBRUcKK0M3QUU7QzdBRTsxMTBDIDExNjIgMTFBOTtDN0FFOzExMEMgMTE2MiAxMUE5OyAjICjsnq47IOyerjsg4YSM4YWi4YapOyDsnq47IOGEjOGFouGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSkFFR0cKK0M3QUY7QzdBRjsxMTBDIDExNjIgMTFBQTtDN0FGOzExMEMgMTE2MiAxMUFBOyAjICjsnq87IOyerzsg4YSM4YWi4YaqOyDsnq87IOGEjOGFouGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSkFFR1MKK0M3QjA7QzdCMDsxMTBDIDExNjIgMTFBQjtDN0IwOzExMEMgMTE2MiAxMUFCOyAjICjsnrA7IOyesDsg4YSM4YWi4YarOyDsnrA7IOGEjOGFouGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgSkFFTgorQzdCMTtDN0IxOzExMEMgMTE2MiAxMUFDO0M3QjE7MTEwQyAxMTYyIDExQUM7ICMgKOyesTsg7J6xOyDhhIzhhaLhhqw7IOyesTsg4YSM4YWi4YasOyApIEhBTkdVTCBTWUxMQUJMRSBKQUVOSgorQzdCMjtDN0IyOzExMEMgMTE2MiAxMUFEO0M3QjI7MTEwQyAxMTYyIDExQUQ7ICMgKOyesjsg7J6yOyDhhIzhhaLhhq07IOyesjsg4YSM4YWi4YatOyApIEhBTkdVTCBTWUxMQUJMRSBKQUVOSAorQzdCMztDN0IzOzExMEMgMTE2MiAxMUFFO0M3QjM7MTEwQyAxMTYyIDExQUU7ICMgKOyeszsg7J6zOyDhhIzhhaLhhq47IOyeszsg4YSM4YWi4YauOyApIEhBTkdVTCBTWUxMQUJMRSBKQUVECitDN0I0O0M3QjQ7MTEwQyAxMTYyIDExQUY7QzdCNDsxMTBDIDExNjIgMTFBRjsgIyAo7J60OyDsnrQ7IOGEjOGFouGGrzsg7J60OyDhhIzhhaLhhq87ICkgSEFOR1VMIFNZTExBQkxFIEpBRUwKK0M3QjU7QzdCNTsxMTBDIDExNjIgMTFCMDtDN0I1OzExMEMgMTE2MiAxMUIwOyAjICjsnrU7IOyetTsg4YSM4YWi4YawOyDsnrU7IOGEjOGFouGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSkFFTEcKK0M3QjY7QzdCNjsxMTBDIDExNjIgMTFCMTtDN0I2OzExMEMgMTE2MiAxMUIxOyAjICjsnrY7IOyetjsg4YSM4YWi4YaxOyDsnrY7IOGEjOGFouGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgSkFFTE0KK0M3Qjc7QzdCNzsxMTBDIDExNjIgMTFCMjtDN0I3OzExMEMgMTE2MiAxMUIyOyAjICjsnrc7IOyetzsg4YSM4YWi4YayOyDsnrc7IOGEjOGFouGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSkFFTEIKK0M3Qjg7QzdCODsxMTBDIDExNjIgMTFCMztDN0I4OzExMEMgMTE2MiAxMUIzOyAjICjsnrg7IOyeuDsg4YSM4YWi4YazOyDsnrg7IOGEjOGFouGGszsgKSBIQU5HVUwgU1lMTEFCTEUgSkFFTFMKK0M3Qjk7QzdCOTsxMTBDIDExNjIgMTFCNDtDN0I5OzExMEMgMTE2MiAxMUI0OyAjICjsnrk7IOyeuTsg4YSM4YWi4Ya0OyDsnrk7IOGEjOGFouGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgSkFFTFQKK0M3QkE7QzdCQTsxMTBDIDExNjIgMTFCNTtDN0JBOzExMEMgMTE2MiAxMUI1OyAjICjsnro7IOyeujsg4YSM4YWi4Ya1OyDsnro7IOGEjOGFouGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSkFFTFAKK0M3QkI7QzdCQjsxMTBDIDExNjIgMTFCNjtDN0JCOzExMEMgMTE2MiAxMUI2OyAjICjsnrs7IOyeuzsg4YSM4YWi4Ya2OyDsnrs7IOGEjOGFouGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSkFFTEgKK0M3QkM7QzdCQzsxMTBDIDExNjIgMTFCNztDN0JDOzExMEMgMTE2MiAxMUI3OyAjICjsnrw7IOyevDsg4YSM4YWi4Ya3OyDsnrw7IOGEjOGFouGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgSkFFTQorQzdCRDtDN0JEOzExMEMgMTE2MiAxMUI4O0M3QkQ7MTEwQyAxMTYyIDExQjg7ICMgKOyevTsg7J69OyDhhIzhhaLhhrg7IOyevTsg4YSM4YWi4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBKQUVCCitDN0JFO0M3QkU7MTEwQyAxMTYyIDExQjk7QzdCRTsxMTBDIDExNjIgMTFCOTsgIyAo7J6+OyDsnr47IOGEjOGFouGGuTsg7J6+OyDhhIzhhaLhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEpBRUJTCitDN0JGO0M3QkY7MTEwQyAxMTYyIDExQkE7QzdCRjsxMTBDIDExNjIgMTFCQTsgIyAo7J6/OyDsnr87IOGEjOGFouGGujsg7J6/OyDhhIzhhaLhhro7ICkgSEFOR1VMIFNZTExBQkxFIEpBRVMKK0M3QzA7QzdDMDsxMTBDIDExNjIgMTFCQjtDN0MwOzExMEMgMTE2MiAxMUJCOyAjICjsn4A7IOyfgDsg4YSM4YWi4Ya7OyDsn4A7IOGEjOGFouGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSkFFU1MKK0M3QzE7QzdDMTsxMTBDIDExNjIgMTFCQztDN0MxOzExMEMgMTE2MiAxMUJDOyAjICjsn4E7IOyfgTsg4YSM4YWi4Ya8OyDsn4E7IOGEjOGFouGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSkFFTkcKK0M3QzI7QzdDMjsxMTBDIDExNjIgMTFCRDtDN0MyOzExMEMgMTE2MiAxMUJEOyAjICjsn4I7IOyfgjsg4YSM4YWi4Ya9OyDsn4I7IOGEjOGFouGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgSkFFSgorQzdDMztDN0MzOzExMEMgMTE2MiAxMUJFO0M3QzM7MTEwQyAxMTYyIDExQkU7ICMgKOyfgzsg7J+DOyDhhIzhhaLhhr47IOyfgzsg4YSM4YWi4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBKQUVDCitDN0M0O0M3QzQ7MTEwQyAxMTYyIDExQkY7QzdDNDsxMTBDIDExNjIgMTFCRjsgIyAo7J+EOyDsn4Q7IOGEjOGFouGGvzsg7J+EOyDhhIzhhaLhhr87ICkgSEFOR1VMIFNZTExBQkxFIEpBRUsKK0M3QzU7QzdDNTsxMTBDIDExNjIgMTFDMDtDN0M1OzExMEMgMTE2MiAxMUMwOyAjICjsn4U7IOyfhTsg4YSM4YWi4YeAOyDsn4U7IOGEjOGFouGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgSkFFVAorQzdDNjtDN0M2OzExMEMgMTE2MiAxMUMxO0M3QzY7MTEwQyAxMTYyIDExQzE7ICMgKOyfhjsg7J+GOyDhhIzhhaLhh4E7IOyfhjsg4YSM4YWi4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBKQUVQCitDN0M3O0M3Qzc7MTEwQyAxMTYyIDExQzI7QzdDNzsxMTBDIDExNjIgMTFDMjsgIyAo7J+HOyDsn4c7IOGEjOGFouGHgjsg7J+HOyDhhIzhhaLhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEpBRUgKK0M3Qzg7QzdDODsxMTBDIDExNjM7QzdDODsxMTBDIDExNjM7ICMgKOyfiDsg7J+IOyDhhIzhhaM7IOyfiDsg4YSM4YWjOyApIEhBTkdVTCBTWUxMQUJMRSBKWUEKK0M3Qzk7QzdDOTsxMTBDIDExNjMgMTFBODtDN0M5OzExMEMgMTE2MyAxMUE4OyAjICjsn4k7IOyfiTsg4YSM4YWj4YaoOyDsn4k7IOGEjOGFo+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSllBRworQzdDQTtDN0NBOzExMEMgMTE2MyAxMUE5O0M3Q0E7MTEwQyAxMTYzIDExQTk7ICMgKOyfijsg7J+KOyDhhIzhhaPhhqk7IOyfijsg4YSM4YWj4YapOyApIEhBTkdVTCBTWUxMQUJMRSBKWUFHRworQzdDQjtDN0NCOzExMEMgMTE2MyAxMUFBO0M3Q0I7MTEwQyAxMTYzIDExQUE7ICMgKOyfizsg7J+LOyDhhIzhhaPhhqo7IOyfizsg4YSM4YWj4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBKWUFHUworQzdDQztDN0NDOzExMEMgMTE2MyAxMUFCO0M3Q0M7MTEwQyAxMTYzIDExQUI7ICMgKOyfjDsg7J+MOyDhhIzhhaPhhqs7IOyfjDsg4YSM4YWj4YarOyApIEhBTkdVTCBTWUxMQUJMRSBKWUFOCitDN0NEO0M3Q0Q7MTEwQyAxMTYzIDExQUM7QzdDRDsxMTBDIDExNjMgMTFBQzsgIyAo7J+NOyDsn407IOGEjOGFo+GGrDsg7J+NOyDhhIzhhaPhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEpZQU5KCitDN0NFO0M3Q0U7MTEwQyAxMTYzIDExQUQ7QzdDRTsxMTBDIDExNjMgMTFBRDsgIyAo7J+OOyDsn447IOGEjOGFo+GGrTsg7J+OOyDhhIzhhaPhhq07ICkgSEFOR1VMIFNZTExBQkxFIEpZQU5ICitDN0NGO0M3Q0Y7MTEwQyAxMTYzIDExQUU7QzdDRjsxMTBDIDExNjMgMTFBRTsgIyAo7J+POyDsn487IOGEjOGFo+GGrjsg7J+POyDhhIzhhaPhhq47ICkgSEFOR1VMIFNZTExBQkxFIEpZQUQKK0M3RDA7QzdEMDsxMTBDIDExNjMgMTFBRjtDN0QwOzExMEMgMTE2MyAxMUFGOyAjICjsn5A7IOyfkDsg4YSM4YWj4YavOyDsn5A7IOGEjOGFo+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgSllBTAorQzdEMTtDN0QxOzExMEMgMTE2MyAxMUIwO0M3RDE7MTEwQyAxMTYzIDExQjA7ICMgKOyfkTsg7J+ROyDhhIzhhaPhhrA7IOyfkTsg4YSM4YWj4YawOyApIEhBTkdVTCBTWUxMQUJMRSBKWUFMRworQzdEMjtDN0QyOzExMEMgMTE2MyAxMUIxO0M3RDI7MTEwQyAxMTYzIDExQjE7ICMgKOyfkjsg7J+SOyDhhIzhhaPhhrE7IOyfkjsg4YSM4YWj4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKWUFMTQorQzdEMztDN0QzOzExMEMgMTE2MyAxMUIyO0M3RDM7MTEwQyAxMTYzIDExQjI7ICMgKOyfkzsg7J+TOyDhhIzhhaPhhrI7IOyfkzsg4YSM4YWj4YayOyApIEhBTkdVTCBTWUxMQUJMRSBKWUFMQgorQzdENDtDN0Q0OzExMEMgMTE2MyAxMUIzO0M3RDQ7MTEwQyAxMTYzIDExQjM7ICMgKOyflDsg7J+UOyDhhIzhhaPhhrM7IOyflDsg4YSM4YWj4YazOyApIEhBTkdVTCBTWUxMQUJMRSBKWUFMUworQzdENTtDN0Q1OzExMEMgMTE2MyAxMUI0O0M3RDU7MTEwQyAxMTYzIDExQjQ7ICMgKOyflTsg7J+VOyDhhIzhhaPhhrQ7IOyflTsg4YSM4YWj4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKWUFMVAorQzdENjtDN0Q2OzExMEMgMTE2MyAxMUI1O0M3RDY7MTEwQyAxMTYzIDExQjU7ICMgKOyfljsg7J+WOyDhhIzhhaPhhrU7IOyfljsg4YSM4YWj4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBKWUFMUAorQzdENztDN0Q3OzExMEMgMTE2MyAxMUI2O0M3RDc7MTEwQyAxMTYzIDExQjY7ICMgKOyflzsg7J+XOyDhhIzhhaPhhrY7IOyflzsg4YSM4YWj4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBKWUFMSAorQzdEODtDN0Q4OzExMEMgMTE2MyAxMUI3O0M3RDg7MTEwQyAxMTYzIDExQjc7ICMgKOyfmDsg7J+YOyDhhIzhhaPhhrc7IOyfmDsg4YSM4YWj4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKWUFNCitDN0Q5O0M3RDk7MTEwQyAxMTYzIDExQjg7QzdEOTsxMTBDIDExNjMgMTFCODsgIyAo7J+ZOyDsn5k7IOGEjOGFo+GGuDsg7J+ZOyDhhIzhhaPhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEpZQUIKK0M3REE7QzdEQTsxMTBDIDExNjMgMTFCOTtDN0RBOzExMEMgMTE2MyAxMUI5OyAjICjsn5o7IOyfmjsg4YSM4YWj4Ya5OyDsn5o7IOGEjOGFo+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgSllBQlMKK0M3REI7QzdEQjsxMTBDIDExNjMgMTFCQTtDN0RCOzExMEMgMTE2MyAxMUJBOyAjICjsn5s7IOyfmzsg4YSM4YWj4Ya6OyDsn5s7IOGEjOGFo+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgSllBUworQzdEQztDN0RDOzExMEMgMTE2MyAxMUJCO0M3REM7MTEwQyAxMTYzIDExQkI7ICMgKOyfnDsg7J+cOyDhhIzhhaPhhrs7IOyfnDsg4YSM4YWj4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBKWUFTUworQzdERDtDN0REOzExMEMgMTE2MyAxMUJDO0M3REQ7MTEwQyAxMTYzIDExQkM7ICMgKOyfnTsg7J+dOyDhhIzhhaPhhrw7IOyfnTsg4YSM4YWj4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBKWUFORworQzdERTtDN0RFOzExMEMgMTE2MyAxMUJEO0M3REU7MTEwQyAxMTYzIDExQkQ7ICMgKOyfnjsg7J+eOyDhhIzhhaPhhr07IOyfnjsg4YSM4YWj4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKWUFKCitDN0RGO0M3REY7MTEwQyAxMTYzIDExQkU7QzdERjsxMTBDIDExNjMgMTFCRTsgIyAo7J+fOyDsn587IOGEjOGFo+GGvjsg7J+fOyDhhIzhhaPhhr47ICkgSEFOR1VMIFNZTExBQkxFIEpZQUMKK0M3RTA7QzdFMDsxMTBDIDExNjMgMTFCRjtDN0UwOzExMEMgMTE2MyAxMUJGOyAjICjsn6A7IOyfoDsg4YSM4YWj4Ya/OyDsn6A7IOGEjOGFo+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgSllBSworQzdFMTtDN0UxOzExMEMgMTE2MyAxMUMwO0M3RTE7MTEwQyAxMTYzIDExQzA7ICMgKOyfoTsg7J+hOyDhhIzhhaPhh4A7IOyfoTsg4YSM4YWj4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKWUFUCitDN0UyO0M3RTI7MTEwQyAxMTYzIDExQzE7QzdFMjsxMTBDIDExNjMgMTFDMTsgIyAo7J+iOyDsn6I7IOGEjOGFo+GHgTsg7J+iOyDhhIzhhaPhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEpZQVAKK0M3RTM7QzdFMzsxMTBDIDExNjMgMTFDMjtDN0UzOzExMEMgMTE2MyAxMUMyOyAjICjsn6M7IOyfozsg4YSM4YWj4YeCOyDsn6M7IOGEjOGFo+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgSllBSAorQzdFNDtDN0U0OzExMEMgMTE2NDtDN0U0OzExMEMgMTE2NDsgIyAo7J+kOyDsn6Q7IOGEjOGFpDsg7J+kOyDhhIzhhaQ7ICkgSEFOR1VMIFNZTExBQkxFIEpZQUUKK0M3RTU7QzdFNTsxMTBDIDExNjQgMTFBODtDN0U1OzExMEMgMTE2NCAxMUE4OyAjICjsn6U7IOyfpTsg4YSM4YWk4YaoOyDsn6U7IOGEjOGFpOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSllBRUcKK0M3RTY7QzdFNjsxMTBDIDExNjQgMTFBOTtDN0U2OzExMEMgMTE2NCAxMUE5OyAjICjsn6Y7IOyfpjsg4YSM4YWk4YapOyDsn6Y7IOGEjOGFpOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSllBRUdHCitDN0U3O0M3RTc7MTEwQyAxMTY0IDExQUE7QzdFNzsxMTBDIDExNjQgMTFBQTsgIyAo7J+nOyDsn6c7IOGEjOGFpOGGqjsg7J+nOyDhhIzhhaThhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpZQUVHUworQzdFODtDN0U4OzExMEMgMTE2NCAxMUFCO0M3RTg7MTEwQyAxMTY0IDExQUI7ICMgKOyfqDsg7J+oOyDhhIzhhaThhqs7IOyfqDsg4YSM4YWk4YarOyApIEhBTkdVTCBTWUxMQUJMRSBKWUFFTgorQzdFOTtDN0U5OzExMEMgMTE2NCAxMUFDO0M3RTk7MTEwQyAxMTY0IDExQUM7ICMgKOyfqTsg7J+pOyDhhIzhhaThhqw7IOyfqTsg4YSM4YWk4YasOyApIEhBTkdVTCBTWUxMQUJMRSBKWUFFTkoKK0M3RUE7QzdFQTsxMTBDIDExNjQgMTFBRDtDN0VBOzExMEMgMTE2NCAxMUFEOyAjICjsn6o7IOyfqjsg4YSM4YWk4YatOyDsn6o7IOGEjOGFpOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSllBRU5ICitDN0VCO0M3RUI7MTEwQyAxMTY0IDExQUU7QzdFQjsxMTBDIDExNjQgMTFBRTsgIyAo7J+rOyDsn6s7IOGEjOGFpOGGrjsg7J+rOyDhhIzhhaThhq47ICkgSEFOR1VMIFNZTExBQkxFIEpZQUVECitDN0VDO0M3RUM7MTEwQyAxMTY0IDExQUY7QzdFQzsxMTBDIDExNjQgMTFBRjsgIyAo7J+sOyDsn6w7IOGEjOGFpOGGrzsg7J+sOyDhhIzhhaThhq87ICkgSEFOR1VMIFNZTExBQkxFIEpZQUVMCitDN0VEO0M3RUQ7MTEwQyAxMTY0IDExQjA7QzdFRDsxMTBDIDExNjQgMTFCMDsgIyAo7J+tOyDsn607IOGEjOGFpOGGsDsg7J+tOyDhhIzhhaThhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpZQUVMRworQzdFRTtDN0VFOzExMEMgMTE2NCAxMUIxO0M3RUU7MTEwQyAxMTY0IDExQjE7ICMgKOyfrjsg7J+uOyDhhIzhhaThhrE7IOyfrjsg4YSM4YWk4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKWUFFTE0KK0M3RUY7QzdFRjsxMTBDIDExNjQgMTFCMjtDN0VGOzExMEMgMTE2NCAxMUIyOyAjICjsn687IOyfrzsg4YSM4YWk4YayOyDsn687IOGEjOGFpOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSllBRUxCCitDN0YwO0M3RjA7MTEwQyAxMTY0IDExQjM7QzdGMDsxMTBDIDExNjQgMTFCMzsgIyAo7J+wOyDsn7A7IOGEjOGFpOGGszsg7J+wOyDhhIzhhaThhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpZQUVMUworQzdGMTtDN0YxOzExMEMgMTE2NCAxMUI0O0M3RjE7MTEwQyAxMTY0IDExQjQ7ICMgKOyfsTsg7J+xOyDhhIzhhaThhrQ7IOyfsTsg4YSM4YWk4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKWUFFTFQKK0M3RjI7QzdGMjsxMTBDIDExNjQgMTFCNTtDN0YyOzExMEMgMTE2NCAxMUI1OyAjICjsn7I7IOyfsjsg4YSM4YWk4Ya1OyDsn7I7IOGEjOGFpOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSllBRUxQCitDN0YzO0M3RjM7MTEwQyAxMTY0IDExQjY7QzdGMzsxMTBDIDExNjQgMTFCNjsgIyAo7J+zOyDsn7M7IOGEjOGFpOGGtjsg7J+zOyDhhIzhhaThhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpZQUVMSAorQzdGNDtDN0Y0OzExMEMgMTE2NCAxMUI3O0M3RjQ7MTEwQyAxMTY0IDExQjc7ICMgKOyftDsg7J+0OyDhhIzhhaThhrc7IOyftDsg4YSM4YWk4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKWUFFTQorQzdGNTtDN0Y1OzExMEMgMTE2NCAxMUI4O0M3RjU7MTEwQyAxMTY0IDExQjg7ICMgKOyftTsg7J+1OyDhhIzhhaThhrg7IOyftTsg4YSM4YWk4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBKWUFFQgorQzdGNjtDN0Y2OzExMEMgMTE2NCAxMUI5O0M3RjY7MTEwQyAxMTY0IDExQjk7ICMgKOyftjsg7J+2OyDhhIzhhaThhrk7IOyftjsg4YSM4YWk4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKWUFFQlMKK0M3Rjc7QzdGNzsxMTBDIDExNjQgMTFCQTtDN0Y3OzExMEMgMTE2NCAxMUJBOyAjICjsn7c7IOyftzsg4YSM4YWk4Ya6OyDsn7c7IOGEjOGFpOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSllBRVMKK0M3Rjg7QzdGODsxMTBDIDExNjQgMTFCQjtDN0Y4OzExMEMgMTE2NCAxMUJCOyAjICjsn7g7IOyfuDsg4YSM4YWk4Ya7OyDsn7g7IOGEjOGFpOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSllBRVNTCitDN0Y5O0M3Rjk7MTEwQyAxMTY0IDExQkM7QzdGOTsxMTBDIDExNjQgMTFCQzsgIyAo7J+5OyDsn7k7IOGEjOGFpOGGvDsg7J+5OyDhhIzhhaThhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpZQUVORworQzdGQTtDN0ZBOzExMEMgMTE2NCAxMUJEO0M3RkE7MTEwQyAxMTY0IDExQkQ7ICMgKOyfujsg7J+6OyDhhIzhhaThhr07IOyfujsg4YSM4YWk4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKWUFFSgorQzdGQjtDN0ZCOzExMEMgMTE2NCAxMUJFO0M3RkI7MTEwQyAxMTY0IDExQkU7ICMgKOyfuzsg7J+7OyDhhIzhhaThhr47IOyfuzsg4YSM4YWk4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBKWUFFQworQzdGQztDN0ZDOzExMEMgMTE2NCAxMUJGO0M3RkM7MTEwQyAxMTY0IDExQkY7ICMgKOyfvDsg7J+8OyDhhIzhhaThhr87IOyfvDsg4YSM4YWk4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKWUFFSworQzdGRDtDN0ZEOzExMEMgMTE2NCAxMUMwO0M3RkQ7MTEwQyAxMTY0IDExQzA7ICMgKOyfvTsg7J+9OyDhhIzhhaThh4A7IOyfvTsg4YSM4YWk4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKWUFFVAorQzdGRTtDN0ZFOzExMEMgMTE2NCAxMUMxO0M3RkU7MTEwQyAxMTY0IDExQzE7ICMgKOyfvjsg7J++OyDhhIzhhaThh4E7IOyfvjsg4YSM4YWk4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBKWUFFUAorQzdGRjtDN0ZGOzExMEMgMTE2NCAxMUMyO0M3RkY7MTEwQyAxMTY0IDExQzI7ICMgKOyfvzsg7J+/OyDhhIzhhaThh4I7IOyfvzsg4YSM4YWk4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKWUFFSAorQzgwMDtDODAwOzExMEMgMTE2NTtDODAwOzExMEMgMTE2NTsgIyAo7KCAOyDsoIA7IOGEjOGFpTsg7KCAOyDhhIzhhaU7ICkgSEFOR1VMIFNZTExBQkxFIEpFTworQzgwMTtDODAxOzExMEMgMTE2NSAxMUE4O0M4MDE7MTEwQyAxMTY1IDExQTg7ICMgKOyggTsg7KCBOyDhhIzhhaXhhqg7IOyggTsg4YSM4YWl4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBKRU9HCitDODAyO0M4MDI7MTEwQyAxMTY1IDExQTk7QzgwMjsxMTBDIDExNjUgMTFBOTsgIyAo7KCCOyDsoII7IOGEjOGFpeGGqTsg7KCCOyDhhIzhhaXhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEpFT0dHCitDODAzO0M4MDM7MTEwQyAxMTY1IDExQUE7QzgwMzsxMTBDIDExNjUgMTFBQTsgIyAo7KCDOyDsoIM7IOGEjOGFpeGGqjsg7KCDOyDhhIzhhaXhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpFT0dTCitDODA0O0M4MDQ7MTEwQyAxMTY1IDExQUI7QzgwNDsxMTBDIDExNjUgMTFBQjsgIyAo7KCEOyDsoIQ7IOGEjOGFpeGGqzsg7KCEOyDhhIzhhaXhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEpFT04KK0M4MDU7QzgwNTsxMTBDIDExNjUgMTFBQztDODA1OzExMEMgMTE2NSAxMUFDOyAjICjsoIU7IOyghTsg4YSM4YWl4YasOyDsoIU7IOGEjOGFpeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSkVPTkoKK0M4MDY7QzgwNjsxMTBDIDExNjUgMTFBRDtDODA2OzExMEMgMTE2NSAxMUFEOyAjICjsoIY7IOyghjsg4YSM4YWl4YatOyDsoIY7IOGEjOGFpeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSkVPTkgKK0M4MDc7QzgwNzsxMTBDIDExNjUgMTFBRTtDODA3OzExMEMgMTE2NSAxMUFFOyAjICjsoIc7IOyghzsg4YSM4YWl4YauOyDsoIc7IOGEjOGFpeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSkVPRAorQzgwODtDODA4OzExMEMgMTE2NSAxMUFGO0M4MDg7MTEwQyAxMTY1IDExQUY7ICMgKOygiDsg7KCIOyDhhIzhhaXhhq87IOygiDsg4YSM4YWl4YavOyApIEhBTkdVTCBTWUxMQUJMRSBKRU9MCitDODA5O0M4MDk7MTEwQyAxMTY1IDExQjA7QzgwOTsxMTBDIDExNjUgMTFCMDsgIyAo7KCJOyDsoIk7IOGEjOGFpeGGsDsg7KCJOyDhhIzhhaXhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpFT0xHCitDODBBO0M4MEE7MTEwQyAxMTY1IDExQjE7QzgwQTsxMTBDIDExNjUgMTFCMTsgIyAo7KCKOyDsoIo7IOGEjOGFpeGGsTsg7KCKOyDhhIzhhaXhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEpFT0xNCitDODBCO0M4MEI7MTEwQyAxMTY1IDExQjI7QzgwQjsxMTBDIDExNjUgMTFCMjsgIyAo7KCLOyDsoIs7IOGEjOGFpeGGsjsg7KCLOyDhhIzhhaXhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEpFT0xCCitDODBDO0M4MEM7MTEwQyAxMTY1IDExQjM7QzgwQzsxMTBDIDExNjUgMTFCMzsgIyAo7KCMOyDsoIw7IOGEjOGFpeGGszsg7KCMOyDhhIzhhaXhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpFT0xTCitDODBEO0M4MEQ7MTEwQyAxMTY1IDExQjQ7QzgwRDsxMTBDIDExNjUgMTFCNDsgIyAo7KCNOyDsoI07IOGEjOGFpeGGtDsg7KCNOyDhhIzhhaXhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEpFT0xUCitDODBFO0M4MEU7MTEwQyAxMTY1IDExQjU7QzgwRTsxMTBDIDExNjUgMTFCNTsgIyAo7KCOOyDsoI47IOGEjOGFpeGGtTsg7KCOOyDhhIzhhaXhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEpFT0xQCitDODBGO0M4MEY7MTEwQyAxMTY1IDExQjY7QzgwRjsxMTBDIDExNjUgMTFCNjsgIyAo7KCPOyDsoI87IOGEjOGFpeGGtjsg7KCPOyDhhIzhhaXhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpFT0xICitDODEwO0M4MTA7MTEwQyAxMTY1IDExQjc7QzgxMDsxMTBDIDExNjUgMTFCNzsgIyAo7KCQOyDsoJA7IOGEjOGFpeGGtzsg7KCQOyDhhIzhhaXhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEpFT00KK0M4MTE7QzgxMTsxMTBDIDExNjUgMTFCODtDODExOzExMEMgMTE2NSAxMUI4OyAjICjsoJE7IOygkTsg4YSM4YWl4Ya4OyDsoJE7IOGEjOGFpeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSkVPQgorQzgxMjtDODEyOzExMEMgMTE2NSAxMUI5O0M4MTI7MTEwQyAxMTY1IDExQjk7ICMgKOygkjsg7KCSOyDhhIzhhaXhhrk7IOygkjsg4YSM4YWl4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKRU9CUworQzgxMztDODEzOzExMEMgMTE2NSAxMUJBO0M4MTM7MTEwQyAxMTY1IDExQkE7ICMgKOygkzsg7KCTOyDhhIzhhaXhhro7IOygkzsg4YSM4YWl4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBKRU9TCitDODE0O0M4MTQ7MTEwQyAxMTY1IDExQkI7QzgxNDsxMTBDIDExNjUgMTFCQjsgIyAo7KCUOyDsoJQ7IOGEjOGFpeGGuzsg7KCUOyDhhIzhhaXhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEpFT1NTCitDODE1O0M4MTU7MTEwQyAxMTY1IDExQkM7QzgxNTsxMTBDIDExNjUgMTFCQzsgIyAo7KCVOyDsoJU7IOGEjOGFpeGGvDsg7KCVOyDhhIzhhaXhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpFT05HCitDODE2O0M4MTY7MTEwQyAxMTY1IDExQkQ7QzgxNjsxMTBDIDExNjUgMTFCRDsgIyAo7KCWOyDsoJY7IOGEjOGFpeGGvTsg7KCWOyDhhIzhhaXhhr07ICkgSEFOR1VMIFNZTExBQkxFIEpFT0oKK0M4MTc7QzgxNzsxMTBDIDExNjUgMTFCRTtDODE3OzExMEMgMTE2NSAxMUJFOyAjICjsoJc7IOyglzsg4YSM4YWl4Ya+OyDsoJc7IOGEjOGFpeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSkVPQworQzgxODtDODE4OzExMEMgMTE2NSAxMUJGO0M4MTg7MTEwQyAxMTY1IDExQkY7ICMgKOygmDsg7KCYOyDhhIzhhaXhhr87IOygmDsg4YSM4YWl4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKRU9LCitDODE5O0M4MTk7MTEwQyAxMTY1IDExQzA7QzgxOTsxMTBDIDExNjUgMTFDMDsgIyAo7KCZOyDsoJk7IOGEjOGFpeGHgDsg7KCZOyDhhIzhhaXhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEpFT1QKK0M4MUE7QzgxQTsxMTBDIDExNjUgMTFDMTtDODFBOzExMEMgMTE2NSAxMUMxOyAjICjsoJo7IOygmjsg4YSM4YWl4YeBOyDsoJo7IOGEjOGFpeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSkVPUAorQzgxQjtDODFCOzExMEMgMTE2NSAxMUMyO0M4MUI7MTEwQyAxMTY1IDExQzI7ICMgKOygmzsg7KCbOyDhhIzhhaXhh4I7IOygmzsg4YSM4YWl4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKRU9ICitDODFDO0M4MUM7MTEwQyAxMTY2O0M4MUM7MTEwQyAxMTY2OyAjICjsoJw7IOygnDsg4YSM4YWmOyDsoJw7IOGEjOGFpjsgKSBIQU5HVUwgU1lMTEFCTEUgSkUKK0M4MUQ7QzgxRDsxMTBDIDExNjYgMTFBODtDODFEOzExMEMgMTE2NiAxMUE4OyAjICjsoJ07IOygnTsg4YSM4YWm4YaoOyDsoJ07IOGEjOGFpuGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSkVHCitDODFFO0M4MUU7MTEwQyAxMTY2IDExQTk7QzgxRTsxMTBDIDExNjYgMTFBOTsgIyAo7KCeOyDsoJ47IOGEjOGFpuGGqTsg7KCeOyDhhIzhhabhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEpFR0cKK0M4MUY7QzgxRjsxMTBDIDExNjYgMTFBQTtDODFGOzExMEMgMTE2NiAxMUFBOyAjICjsoJ87IOygnzsg4YSM4YWm4YaqOyDsoJ87IOGEjOGFpuGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSkVHUworQzgyMDtDODIwOzExMEMgMTE2NiAxMUFCO0M4MjA7MTEwQyAxMTY2IDExQUI7ICMgKOygoDsg7KCgOyDhhIzhhabhhqs7IOygoDsg4YSM4YWm4YarOyApIEhBTkdVTCBTWUxMQUJMRSBKRU4KK0M4MjE7QzgyMTsxMTBDIDExNjYgMTFBQztDODIxOzExMEMgMTE2NiAxMUFDOyAjICjsoKE7IOygoTsg4YSM4YWm4YasOyDsoKE7IOGEjOGFpuGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSkVOSgorQzgyMjtDODIyOzExMEMgMTE2NiAxMUFEO0M4MjI7MTEwQyAxMTY2IDExQUQ7ICMgKOygojsg7KCiOyDhhIzhhabhhq07IOygojsg4YSM4YWm4YatOyApIEhBTkdVTCBTWUxMQUJMRSBKRU5ICitDODIzO0M4MjM7MTEwQyAxMTY2IDExQUU7QzgyMzsxMTBDIDExNjYgMTFBRTsgIyAo7KCjOyDsoKM7IOGEjOGFpuGGrjsg7KCjOyDhhIzhhabhhq47ICkgSEFOR1VMIFNZTExBQkxFIEpFRAorQzgyNDtDODI0OzExMEMgMTE2NiAxMUFGO0M4MjQ7MTEwQyAxMTY2IDExQUY7ICMgKOygpDsg7KCkOyDhhIzhhabhhq87IOygpDsg4YSM4YWm4YavOyApIEhBTkdVTCBTWUxMQUJMRSBKRUwKK0M4MjU7QzgyNTsxMTBDIDExNjYgMTFCMDtDODI1OzExMEMgMTE2NiAxMUIwOyAjICjsoKU7IOygpTsg4YSM4YWm4YawOyDsoKU7IOGEjOGFpuGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSkVMRworQzgyNjtDODI2OzExMEMgMTE2NiAxMUIxO0M4MjY7MTEwQyAxMTY2IDExQjE7ICMgKOygpjsg7KCmOyDhhIzhhabhhrE7IOygpjsg4YSM4YWm4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKRUxNCitDODI3O0M4Mjc7MTEwQyAxMTY2IDExQjI7QzgyNzsxMTBDIDExNjYgMTFCMjsgIyAo7KCnOyDsoKc7IOGEjOGFpuGGsjsg7KCnOyDhhIzhhabhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEpFTEIKK0M4Mjg7QzgyODsxMTBDIDExNjYgMTFCMztDODI4OzExMEMgMTE2NiAxMUIzOyAjICjsoKg7IOygqDsg4YSM4YWm4YazOyDsoKg7IOGEjOGFpuGGszsgKSBIQU5HVUwgU1lMTEFCTEUgSkVMUworQzgyOTtDODI5OzExMEMgMTE2NiAxMUI0O0M4Mjk7MTEwQyAxMTY2IDExQjQ7ICMgKOygqTsg7KCpOyDhhIzhhabhhrQ7IOygqTsg4YSM4YWm4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKRUxUCitDODJBO0M4MkE7MTEwQyAxMTY2IDExQjU7QzgyQTsxMTBDIDExNjYgMTFCNTsgIyAo7KCqOyDsoKo7IOGEjOGFpuGGtTsg7KCqOyDhhIzhhabhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEpFTFAKK0M4MkI7QzgyQjsxMTBDIDExNjYgMTFCNjtDODJCOzExMEMgMTE2NiAxMUI2OyAjICjsoKs7IOygqzsg4YSM4YWm4Ya2OyDsoKs7IOGEjOGFpuGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSkVMSAorQzgyQztDODJDOzExMEMgMTE2NiAxMUI3O0M4MkM7MTEwQyAxMTY2IDExQjc7ICMgKOygrDsg7KCsOyDhhIzhhabhhrc7IOygrDsg4YSM4YWm4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKRU0KK0M4MkQ7QzgyRDsxMTBDIDExNjYgMTFCODtDODJEOzExMEMgMTE2NiAxMUI4OyAjICjsoK07IOygrTsg4YSM4YWm4Ya4OyDsoK07IOGEjOGFpuGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSkVCCitDODJFO0M4MkU7MTEwQyAxMTY2IDExQjk7QzgyRTsxMTBDIDExNjYgMTFCOTsgIyAo7KCuOyDsoK47IOGEjOGFpuGGuTsg7KCuOyDhhIzhhabhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEpFQlMKK0M4MkY7QzgyRjsxMTBDIDExNjYgMTFCQTtDODJGOzExMEMgMTE2NiAxMUJBOyAjICjsoK87IOygrzsg4YSM4YWm4Ya6OyDsoK87IOGEjOGFpuGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSkVTCitDODMwO0M4MzA7MTEwQyAxMTY2IDExQkI7QzgzMDsxMTBDIDExNjYgMTFCQjsgIyAo7KCwOyDsoLA7IOGEjOGFpuGGuzsg7KCwOyDhhIzhhabhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEpFU1MKK0M4MzE7QzgzMTsxMTBDIDExNjYgMTFCQztDODMxOzExMEMgMTE2NiAxMUJDOyAjICjsoLE7IOygsTsg4YSM4YWm4Ya8OyDsoLE7IOGEjOGFpuGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSkVORworQzgzMjtDODMyOzExMEMgMTE2NiAxMUJEO0M4MzI7MTEwQyAxMTY2IDExQkQ7ICMgKOygsjsg7KCyOyDhhIzhhabhhr07IOygsjsg4YSM4YWm4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKRUoKK0M4MzM7QzgzMzsxMTBDIDExNjYgMTFCRTtDODMzOzExMEMgMTE2NiAxMUJFOyAjICjsoLM7IOygszsg4YSM4YWm4Ya+OyDsoLM7IOGEjOGFpuGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSkVDCitDODM0O0M4MzQ7MTEwQyAxMTY2IDExQkY7QzgzNDsxMTBDIDExNjYgMTFCRjsgIyAo7KC0OyDsoLQ7IOGEjOGFpuGGvzsg7KC0OyDhhIzhhabhhr87ICkgSEFOR1VMIFNZTExBQkxFIEpFSworQzgzNTtDODM1OzExMEMgMTE2NiAxMUMwO0M4MzU7MTEwQyAxMTY2IDExQzA7ICMgKOygtTsg7KC1OyDhhIzhhabhh4A7IOygtTsg4YSM4YWm4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKRVQKK0M4MzY7QzgzNjsxMTBDIDExNjYgMTFDMTtDODM2OzExMEMgMTE2NiAxMUMxOyAjICjsoLY7IOygtjsg4YSM4YWm4YeBOyDsoLY7IOGEjOGFpuGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSkVQCitDODM3O0M4Mzc7MTEwQyAxMTY2IDExQzI7QzgzNzsxMTBDIDExNjYgMTFDMjsgIyAo7KC3OyDsoLc7IOGEjOGFpuGHgjsg7KC3OyDhhIzhhabhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEpFSAorQzgzODtDODM4OzExMEMgMTE2NztDODM4OzExMEMgMTE2NzsgIyAo7KC4OyDsoLg7IOGEjOGFpzsg7KC4OyDhhIzhhac7ICkgSEFOR1VMIFNZTExBQkxFIEpZRU8KK0M4Mzk7QzgzOTsxMTBDIDExNjcgMTFBODtDODM5OzExMEMgMTE2NyAxMUE4OyAjICjsoLk7IOyguTsg4YSM4YWn4YaoOyDsoLk7IOGEjOGFp+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSllFT0cKK0M4M0E7QzgzQTsxMTBDIDExNjcgMTFBOTtDODNBOzExMEMgMTE2NyAxMUE5OyAjICjsoLo7IOygujsg4YSM4YWn4YapOyDsoLo7IOGEjOGFp+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSllFT0dHCitDODNCO0M4M0I7MTEwQyAxMTY3IDExQUE7QzgzQjsxMTBDIDExNjcgMTFBQTsgIyAo7KC7OyDsoLs7IOGEjOGFp+GGqjsg7KC7OyDhhIzhhafhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpZRU9HUworQzgzQztDODNDOzExMEMgMTE2NyAxMUFCO0M4M0M7MTEwQyAxMTY3IDExQUI7ICMgKOygvDsg7KC8OyDhhIzhhafhhqs7IOygvDsg4YSM4YWn4YarOyApIEhBTkdVTCBTWUxMQUJMRSBKWUVPTgorQzgzRDtDODNEOzExMEMgMTE2NyAxMUFDO0M4M0Q7MTEwQyAxMTY3IDExQUM7ICMgKOygvTsg7KC9OyDhhIzhhafhhqw7IOygvTsg4YSM4YWn4YasOyApIEhBTkdVTCBTWUxMQUJMRSBKWUVPTkoKK0M4M0U7QzgzRTsxMTBDIDExNjcgMTFBRDtDODNFOzExMEMgMTE2NyAxMUFEOyAjICjsoL47IOygvjsg4YSM4YWn4YatOyDsoL47IOGEjOGFp+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSllFT05ICitDODNGO0M4M0Y7MTEwQyAxMTY3IDExQUU7QzgzRjsxMTBDIDExNjcgMTFBRTsgIyAo7KC/OyDsoL87IOGEjOGFp+GGrjsg7KC/OyDhhIzhhafhhq47ICkgSEFOR1VMIFNZTExBQkxFIEpZRU9ECitDODQwO0M4NDA7MTEwQyAxMTY3IDExQUY7Qzg0MDsxMTBDIDExNjcgMTFBRjsgIyAo7KGAOyDsoYA7IOGEjOGFp+GGrzsg7KGAOyDhhIzhhafhhq87ICkgSEFOR1VMIFNZTExBQkxFIEpZRU9MCitDODQxO0M4NDE7MTEwQyAxMTY3IDExQjA7Qzg0MTsxMTBDIDExNjcgMTFCMDsgIyAo7KGBOyDsoYE7IOGEjOGFp+GGsDsg7KGBOyDhhIzhhafhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpZRU9MRworQzg0MjtDODQyOzExMEMgMTE2NyAxMUIxO0M4NDI7MTEwQyAxMTY3IDExQjE7ICMgKOyhgjsg7KGCOyDhhIzhhafhhrE7IOyhgjsg4YSM4YWn4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKWUVPTE0KK0M4NDM7Qzg0MzsxMTBDIDExNjcgMTFCMjtDODQzOzExMEMgMTE2NyAxMUIyOyAjICjsoYM7IOyhgzsg4YSM4YWn4YayOyDsoYM7IOGEjOGFp+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSllFT0xCCitDODQ0O0M4NDQ7MTEwQyAxMTY3IDExQjM7Qzg0NDsxMTBDIDExNjcgMTFCMzsgIyAo7KGEOyDsoYQ7IOGEjOGFp+GGszsg7KGEOyDhhIzhhafhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpZRU9MUworQzg0NTtDODQ1OzExMEMgMTE2NyAxMUI0O0M4NDU7MTEwQyAxMTY3IDExQjQ7ICMgKOyhhTsg7KGFOyDhhIzhhafhhrQ7IOyhhTsg4YSM4YWn4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKWUVPTFQKK0M4NDY7Qzg0NjsxMTBDIDExNjcgMTFCNTtDODQ2OzExMEMgMTE2NyAxMUI1OyAjICjsoYY7IOyhhjsg4YSM4YWn4Ya1OyDsoYY7IOGEjOGFp+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSllFT0xQCitDODQ3O0M4NDc7MTEwQyAxMTY3IDExQjY7Qzg0NzsxMTBDIDExNjcgMTFCNjsgIyAo7KGHOyDsoYc7IOGEjOGFp+GGtjsg7KGHOyDhhIzhhafhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpZRU9MSAorQzg0ODtDODQ4OzExMEMgMTE2NyAxMUI3O0M4NDg7MTEwQyAxMTY3IDExQjc7ICMgKOyhiDsg7KGIOyDhhIzhhafhhrc7IOyhiDsg4YSM4YWn4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKWUVPTQorQzg0OTtDODQ5OzExMEMgMTE2NyAxMUI4O0M4NDk7MTEwQyAxMTY3IDExQjg7ICMgKOyhiTsg7KGJOyDhhIzhhafhhrg7IOyhiTsg4YSM4YWn4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBKWUVPQgorQzg0QTtDODRBOzExMEMgMTE2NyAxMUI5O0M4NEE7MTEwQyAxMTY3IDExQjk7ICMgKOyhijsg7KGKOyDhhIzhhafhhrk7IOyhijsg4YSM4YWn4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKWUVPQlMKK0M4NEI7Qzg0QjsxMTBDIDExNjcgMTFCQTtDODRCOzExMEMgMTE2NyAxMUJBOyAjICjsoYs7IOyhizsg4YSM4YWn4Ya6OyDsoYs7IOGEjOGFp+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgSllFT1MKK0M4NEM7Qzg0QzsxMTBDIDExNjcgMTFCQjtDODRDOzExMEMgMTE2NyAxMUJCOyAjICjsoYw7IOyhjDsg4YSM4YWn4Ya7OyDsoYw7IOGEjOGFp+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSllFT1NTCitDODREO0M4NEQ7MTEwQyAxMTY3IDExQkM7Qzg0RDsxMTBDIDExNjcgMTFCQzsgIyAo7KGNOyDsoY07IOGEjOGFp+GGvDsg7KGNOyDhhIzhhafhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpZRU9ORworQzg0RTtDODRFOzExMEMgMTE2NyAxMUJEO0M4NEU7MTEwQyAxMTY3IDExQkQ7ICMgKOyhjjsg7KGOOyDhhIzhhafhhr07IOyhjjsg4YSM4YWn4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKWUVPSgorQzg0RjtDODRGOzExMEMgMTE2NyAxMUJFO0M4NEY7MTEwQyAxMTY3IDExQkU7ICMgKOyhjzsg7KGPOyDhhIzhhafhhr47IOyhjzsg4YSM4YWn4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBKWUVPQworQzg1MDtDODUwOzExMEMgMTE2NyAxMUJGO0M4NTA7MTEwQyAxMTY3IDExQkY7ICMgKOyhkDsg7KGQOyDhhIzhhafhhr87IOyhkDsg4YSM4YWn4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKWUVPSworQzg1MTtDODUxOzExMEMgMTE2NyAxMUMwO0M4NTE7MTEwQyAxMTY3IDExQzA7ICMgKOyhkTsg7KGROyDhhIzhhafhh4A7IOyhkTsg4YSM4YWn4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKWUVPVAorQzg1MjtDODUyOzExMEMgMTE2NyAxMUMxO0M4NTI7MTEwQyAxMTY3IDExQzE7ICMgKOyhkjsg7KGSOyDhhIzhhafhh4E7IOyhkjsg4YSM4YWn4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBKWUVPUAorQzg1MztDODUzOzExMEMgMTE2NyAxMUMyO0M4NTM7MTEwQyAxMTY3IDExQzI7ICMgKOyhkzsg7KGTOyDhhIzhhafhh4I7IOyhkzsg4YSM4YWn4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKWUVPSAorQzg1NDtDODU0OzExMEMgMTE2ODtDODU0OzExMEMgMTE2ODsgIyAo7KGUOyDsoZQ7IOGEjOGFqDsg7KGUOyDhhIzhhag7ICkgSEFOR1VMIFNZTExBQkxFIEpZRQorQzg1NTtDODU1OzExMEMgMTE2OCAxMUE4O0M4NTU7MTEwQyAxMTY4IDExQTg7ICMgKOyhlTsg7KGVOyDhhIzhhajhhqg7IOyhlTsg4YSM4YWo4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBKWUVHCitDODU2O0M4NTY7MTEwQyAxMTY4IDExQTk7Qzg1NjsxMTBDIDExNjggMTFBOTsgIyAo7KGWOyDsoZY7IOGEjOGFqOGGqTsg7KGWOyDhhIzhhajhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEpZRUdHCitDODU3O0M4NTc7MTEwQyAxMTY4IDExQUE7Qzg1NzsxMTBDIDExNjggMTFBQTsgIyAo7KGXOyDsoZc7IOGEjOGFqOGGqjsg7KGXOyDhhIzhhajhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpZRUdTCitDODU4O0M4NTg7MTEwQyAxMTY4IDExQUI7Qzg1ODsxMTBDIDExNjggMTFBQjsgIyAo7KGYOyDsoZg7IOGEjOGFqOGGqzsg7KGYOyDhhIzhhajhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEpZRU4KK0M4NTk7Qzg1OTsxMTBDIDExNjggMTFBQztDODU5OzExMEMgMTE2OCAxMUFDOyAjICjsoZk7IOyhmTsg4YSM4YWo4YasOyDsoZk7IOGEjOGFqOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSllFTkoKK0M4NUE7Qzg1QTsxMTBDIDExNjggMTFBRDtDODVBOzExMEMgMTE2OCAxMUFEOyAjICjsoZo7IOyhmjsg4YSM4YWo4YatOyDsoZo7IOGEjOGFqOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSllFTkgKK0M4NUI7Qzg1QjsxMTBDIDExNjggMTFBRTtDODVCOzExMEMgMTE2OCAxMUFFOyAjICjsoZs7IOyhmzsg4YSM4YWo4YauOyDsoZs7IOGEjOGFqOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSllFRAorQzg1QztDODVDOzExMEMgMTE2OCAxMUFGO0M4NUM7MTEwQyAxMTY4IDExQUY7ICMgKOyhnDsg7KGcOyDhhIzhhajhhq87IOyhnDsg4YSM4YWo4YavOyApIEhBTkdVTCBTWUxMQUJMRSBKWUVMCitDODVEO0M4NUQ7MTEwQyAxMTY4IDExQjA7Qzg1RDsxMTBDIDExNjggMTFCMDsgIyAo7KGdOyDsoZ07IOGEjOGFqOGGsDsg7KGdOyDhhIzhhajhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpZRUxHCitDODVFO0M4NUU7MTEwQyAxMTY4IDExQjE7Qzg1RTsxMTBDIDExNjggMTFCMTsgIyAo7KGeOyDsoZ47IOGEjOGFqOGGsTsg7KGeOyDhhIzhhajhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEpZRUxNCitDODVGO0M4NUY7MTEwQyAxMTY4IDExQjI7Qzg1RjsxMTBDIDExNjggMTFCMjsgIyAo7KGfOyDsoZ87IOGEjOGFqOGGsjsg7KGfOyDhhIzhhajhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEpZRUxCCitDODYwO0M4NjA7MTEwQyAxMTY4IDExQjM7Qzg2MDsxMTBDIDExNjggMTFCMzsgIyAo7KGgOyDsoaA7IOGEjOGFqOGGszsg7KGgOyDhhIzhhajhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpZRUxTCitDODYxO0M4NjE7MTEwQyAxMTY4IDExQjQ7Qzg2MTsxMTBDIDExNjggMTFCNDsgIyAo7KGhOyDsoaE7IOGEjOGFqOGGtDsg7KGhOyDhhIzhhajhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEpZRUxUCitDODYyO0M4NjI7MTEwQyAxMTY4IDExQjU7Qzg2MjsxMTBDIDExNjggMTFCNTsgIyAo7KGiOyDsoaI7IOGEjOGFqOGGtTsg7KGiOyDhhIzhhajhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEpZRUxQCitDODYzO0M4NjM7MTEwQyAxMTY4IDExQjY7Qzg2MzsxMTBDIDExNjggMTFCNjsgIyAo7KGjOyDsoaM7IOGEjOGFqOGGtjsg7KGjOyDhhIzhhajhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpZRUxICitDODY0O0M4NjQ7MTEwQyAxMTY4IDExQjc7Qzg2NDsxMTBDIDExNjggMTFCNzsgIyAo7KGkOyDsoaQ7IOGEjOGFqOGGtzsg7KGkOyDhhIzhhajhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEpZRU0KK0M4NjU7Qzg2NTsxMTBDIDExNjggMTFCODtDODY1OzExMEMgMTE2OCAxMUI4OyAjICjsoaU7IOyhpTsg4YSM4YWo4Ya4OyDsoaU7IOGEjOGFqOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSllFQgorQzg2NjtDODY2OzExMEMgMTE2OCAxMUI5O0M4NjY7MTEwQyAxMTY4IDExQjk7ICMgKOyhpjsg7KGmOyDhhIzhhajhhrk7IOyhpjsg4YSM4YWo4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKWUVCUworQzg2NztDODY3OzExMEMgMTE2OCAxMUJBO0M4Njc7MTEwQyAxMTY4IDExQkE7ICMgKOyhpzsg7KGnOyDhhIzhhajhhro7IOyhpzsg4YSM4YWo4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBKWUVTCitDODY4O0M4Njg7MTEwQyAxMTY4IDExQkI7Qzg2ODsxMTBDIDExNjggMTFCQjsgIyAo7KGoOyDsoag7IOGEjOGFqOGGuzsg7KGoOyDhhIzhhajhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEpZRVNTCitDODY5O0M4Njk7MTEwQyAxMTY4IDExQkM7Qzg2OTsxMTBDIDExNjggMTFCQzsgIyAo7KGpOyDsoak7IOGEjOGFqOGGvDsg7KGpOyDhhIzhhajhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpZRU5HCitDODZBO0M4NkE7MTEwQyAxMTY4IDExQkQ7Qzg2QTsxMTBDIDExNjggMTFCRDsgIyAo7KGqOyDsoao7IOGEjOGFqOGGvTsg7KGqOyDhhIzhhajhhr07ICkgSEFOR1VMIFNZTExBQkxFIEpZRUoKK0M4NkI7Qzg2QjsxMTBDIDExNjggMTFCRTtDODZCOzExMEMgMTE2OCAxMUJFOyAjICjsoas7IOyhqzsg4YSM4YWo4Ya+OyDsoas7IOGEjOGFqOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSllFQworQzg2QztDODZDOzExMEMgMTE2OCAxMUJGO0M4NkM7MTEwQyAxMTY4IDExQkY7ICMgKOyhrDsg7KGsOyDhhIzhhajhhr87IOyhrDsg4YSM4YWo4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKWUVLCitDODZEO0M4NkQ7MTEwQyAxMTY4IDExQzA7Qzg2RDsxMTBDIDExNjggMTFDMDsgIyAo7KGtOyDsoa07IOGEjOGFqOGHgDsg7KGtOyDhhIzhhajhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEpZRVQKK0M4NkU7Qzg2RTsxMTBDIDExNjggMTFDMTtDODZFOzExMEMgMTE2OCAxMUMxOyAjICjsoa47IOyhrjsg4YSM4YWo4YeBOyDsoa47IOGEjOGFqOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSllFUAorQzg2RjtDODZGOzExMEMgMTE2OCAxMUMyO0M4NkY7MTEwQyAxMTY4IDExQzI7ICMgKOyhrzsg7KGvOyDhhIzhhajhh4I7IOyhrzsg4YSM4YWo4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKWUVICitDODcwO0M4NzA7MTEwQyAxMTY5O0M4NzA7MTEwQyAxMTY5OyAjICjsobA7IOyhsDsg4YSM4YWpOyDsobA7IOGEjOGFqTsgKSBIQU5HVUwgU1lMTEFCTEUgSk8KK0M4NzE7Qzg3MTsxMTBDIDExNjkgMTFBODtDODcxOzExMEMgMTE2OSAxMUE4OyAjICjsobE7IOyhsTsg4YSM4YWp4YaoOyDsobE7IOGEjOGFqeGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSk9HCitDODcyO0M4NzI7MTEwQyAxMTY5IDExQTk7Qzg3MjsxMTBDIDExNjkgMTFBOTsgIyAo7KGyOyDsobI7IOGEjOGFqeGGqTsg7KGyOyDhhIzhhanhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEpPR0cKK0M4NzM7Qzg3MzsxMTBDIDExNjkgMTFBQTtDODczOzExMEMgMTE2OSAxMUFBOyAjICjsobM7IOyhszsg4YSM4YWp4YaqOyDsobM7IOGEjOGFqeGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSk9HUworQzg3NDtDODc0OzExMEMgMTE2OSAxMUFCO0M4NzQ7MTEwQyAxMTY5IDExQUI7ICMgKOyhtDsg7KG0OyDhhIzhhanhhqs7IOyhtDsg4YSM4YWp4YarOyApIEhBTkdVTCBTWUxMQUJMRSBKT04KK0M4NzU7Qzg3NTsxMTBDIDExNjkgMTFBQztDODc1OzExMEMgMTE2OSAxMUFDOyAjICjsobU7IOyhtTsg4YSM4YWp4YasOyDsobU7IOGEjOGFqeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSk9OSgorQzg3NjtDODc2OzExMEMgMTE2OSAxMUFEO0M4NzY7MTEwQyAxMTY5IDExQUQ7ICMgKOyhtjsg7KG2OyDhhIzhhanhhq07IOyhtjsg4YSM4YWp4YatOyApIEhBTkdVTCBTWUxMQUJMRSBKT05ICitDODc3O0M4Nzc7MTEwQyAxMTY5IDExQUU7Qzg3NzsxMTBDIDExNjkgMTFBRTsgIyAo7KG3OyDsobc7IOGEjOGFqeGGrjsg7KG3OyDhhIzhhanhhq47ICkgSEFOR1VMIFNZTExBQkxFIEpPRAorQzg3ODtDODc4OzExMEMgMTE2OSAxMUFGO0M4Nzg7MTEwQyAxMTY5IDExQUY7ICMgKOyhuDsg7KG4OyDhhIzhhanhhq87IOyhuDsg4YSM4YWp4YavOyApIEhBTkdVTCBTWUxMQUJMRSBKT0wKK0M4Nzk7Qzg3OTsxMTBDIDExNjkgMTFCMDtDODc5OzExMEMgMTE2OSAxMUIwOyAjICjsobk7IOyhuTsg4YSM4YWp4YawOyDsobk7IOGEjOGFqeGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSk9MRworQzg3QTtDODdBOzExMEMgMTE2OSAxMUIxO0M4N0E7MTEwQyAxMTY5IDExQjE7ICMgKOyhujsg7KG6OyDhhIzhhanhhrE7IOyhujsg4YSM4YWp4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKT0xNCitDODdCO0M4N0I7MTEwQyAxMTY5IDExQjI7Qzg3QjsxMTBDIDExNjkgMTFCMjsgIyAo7KG7OyDsobs7IOGEjOGFqeGGsjsg7KG7OyDhhIzhhanhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEpPTEIKK0M4N0M7Qzg3QzsxMTBDIDExNjkgMTFCMztDODdDOzExMEMgMTE2OSAxMUIzOyAjICjsobw7IOyhvDsg4YSM4YWp4YazOyDsobw7IOGEjOGFqeGGszsgKSBIQU5HVUwgU1lMTEFCTEUgSk9MUworQzg3RDtDODdEOzExMEMgMTE2OSAxMUI0O0M4N0Q7MTEwQyAxMTY5IDExQjQ7ICMgKOyhvTsg7KG9OyDhhIzhhanhhrQ7IOyhvTsg4YSM4YWp4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKT0xUCitDODdFO0M4N0U7MTEwQyAxMTY5IDExQjU7Qzg3RTsxMTBDIDExNjkgMTFCNTsgIyAo7KG+OyDsob47IOGEjOGFqeGGtTsg7KG+OyDhhIzhhanhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEpPTFAKK0M4N0Y7Qzg3RjsxMTBDIDExNjkgMTFCNjtDODdGOzExMEMgMTE2OSAxMUI2OyAjICjsob87IOyhvzsg4YSM4YWp4Ya2OyDsob87IOGEjOGFqeGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSk9MSAorQzg4MDtDODgwOzExMEMgMTE2OSAxMUI3O0M4ODA7MTEwQyAxMTY5IDExQjc7ICMgKOyigDsg7KKAOyDhhIzhhanhhrc7IOyigDsg4YSM4YWp4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKT00KK0M4ODE7Qzg4MTsxMTBDIDExNjkgMTFCODtDODgxOzExMEMgMTE2OSAxMUI4OyAjICjsooE7IOyigTsg4YSM4YWp4Ya4OyDsooE7IOGEjOGFqeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSk9CCitDODgyO0M4ODI7MTEwQyAxMTY5IDExQjk7Qzg4MjsxMTBDIDExNjkgMTFCOTsgIyAo7KKCOyDsooI7IOGEjOGFqeGGuTsg7KKCOyDhhIzhhanhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEpPQlMKK0M4ODM7Qzg4MzsxMTBDIDExNjkgMTFCQTtDODgzOzExMEMgMTE2OSAxMUJBOyAjICjsooM7IOyigzsg4YSM4YWp4Ya6OyDsooM7IOGEjOGFqeGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSk9TCitDODg0O0M4ODQ7MTEwQyAxMTY5IDExQkI7Qzg4NDsxMTBDIDExNjkgMTFCQjsgIyAo7KKEOyDsooQ7IOGEjOGFqeGGuzsg7KKEOyDhhIzhhanhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEpPU1MKK0M4ODU7Qzg4NTsxMTBDIDExNjkgMTFCQztDODg1OzExMEMgMTE2OSAxMUJDOyAjICjsooU7IOyihTsg4YSM4YWp4Ya8OyDsooU7IOGEjOGFqeGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSk9ORworQzg4NjtDODg2OzExMEMgMTE2OSAxMUJEO0M4ODY7MTEwQyAxMTY5IDExQkQ7ICMgKOyihjsg7KKGOyDhhIzhhanhhr07IOyihjsg4YSM4YWp4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKT0oKK0M4ODc7Qzg4NzsxMTBDIDExNjkgMTFCRTtDODg3OzExMEMgMTE2OSAxMUJFOyAjICjsooc7IOyihzsg4YSM4YWp4Ya+OyDsooc7IOGEjOGFqeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSk9DCitDODg4O0M4ODg7MTEwQyAxMTY5IDExQkY7Qzg4ODsxMTBDIDExNjkgMTFCRjsgIyAo7KKIOyDsoog7IOGEjOGFqeGGvzsg7KKIOyDhhIzhhanhhr87ICkgSEFOR1VMIFNZTExBQkxFIEpPSworQzg4OTtDODg5OzExMEMgMTE2OSAxMUMwO0M4ODk7MTEwQyAxMTY5IDExQzA7ICMgKOyiiTsg7KKJOyDhhIzhhanhh4A7IOyiiTsg4YSM4YWp4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKT1QKK0M4OEE7Qzg4QTsxMTBDIDExNjkgMTFDMTtDODhBOzExMEMgMTE2OSAxMUMxOyAjICjsooo7IOyiijsg4YSM4YWp4YeBOyDsooo7IOGEjOGFqeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSk9QCitDODhCO0M4OEI7MTEwQyAxMTY5IDExQzI7Qzg4QjsxMTBDIDExNjkgMTFDMjsgIyAo7KKLOyDsoos7IOGEjOGFqeGHgjsg7KKLOyDhhIzhhanhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEpPSAorQzg4QztDODhDOzExMEMgMTE2QTtDODhDOzExMEMgMTE2QTsgIyAo7KKMOyDsoow7IOGEjOGFqjsg7KKMOyDhhIzhhao7ICkgSEFOR1VMIFNZTExBQkxFIEpXQQorQzg4RDtDODhEOzExMEMgMTE2QSAxMUE4O0M4OEQ7MTEwQyAxMTZBIDExQTg7ICMgKOyijTsg7KKNOyDhhIzhharhhqg7IOyijTsg4YSM4YWq4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBKV0FHCitDODhFO0M4OEU7MTEwQyAxMTZBIDExQTk7Qzg4RTsxMTBDIDExNkEgMTFBOTsgIyAo7KKOOyDsoo47IOGEjOGFquGGqTsg7KKOOyDhhIzhharhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEpXQUdHCitDODhGO0M4OEY7MTEwQyAxMTZBIDExQUE7Qzg4RjsxMTBDIDExNkEgMTFBQTsgIyAo7KKPOyDsoo87IOGEjOGFquGGqjsg7KKPOyDhhIzhharhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpXQUdTCitDODkwO0M4OTA7MTEwQyAxMTZBIDExQUI7Qzg5MDsxMTBDIDExNkEgMTFBQjsgIyAo7KKQOyDsopA7IOGEjOGFquGGqzsg7KKQOyDhhIzhharhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEpXQU4KK0M4OTE7Qzg5MTsxMTBDIDExNkEgMTFBQztDODkxOzExMEMgMTE2QSAxMUFDOyAjICjsopE7IOyikTsg4YSM4YWq4YasOyDsopE7IOGEjOGFquGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSldBTkoKK0M4OTI7Qzg5MjsxMTBDIDExNkEgMTFBRDtDODkyOzExMEMgMTE2QSAxMUFEOyAjICjsopI7IOyikjsg4YSM4YWq4YatOyDsopI7IOGEjOGFquGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSldBTkgKK0M4OTM7Qzg5MzsxMTBDIDExNkEgMTFBRTtDODkzOzExMEMgMTE2QSAxMUFFOyAjICjsopM7IOyikzsg4YSM4YWq4YauOyDsopM7IOGEjOGFquGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSldBRAorQzg5NDtDODk0OzExMEMgMTE2QSAxMUFGO0M4OTQ7MTEwQyAxMTZBIDExQUY7ICMgKOyilDsg7KKUOyDhhIzhharhhq87IOyilDsg4YSM4YWq4YavOyApIEhBTkdVTCBTWUxMQUJMRSBKV0FMCitDODk1O0M4OTU7MTEwQyAxMTZBIDExQjA7Qzg5NTsxMTBDIDExNkEgMTFCMDsgIyAo7KKVOyDsopU7IOGEjOGFquGGsDsg7KKVOyDhhIzhharhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpXQUxHCitDODk2O0M4OTY7MTEwQyAxMTZBIDExQjE7Qzg5NjsxMTBDIDExNkEgMTFCMTsgIyAo7KKWOyDsopY7IOGEjOGFquGGsTsg7KKWOyDhhIzhharhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEpXQUxNCitDODk3O0M4OTc7MTEwQyAxMTZBIDExQjI7Qzg5NzsxMTBDIDExNkEgMTFCMjsgIyAo7KKXOyDsopc7IOGEjOGFquGGsjsg7KKXOyDhhIzhharhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEpXQUxCCitDODk4O0M4OTg7MTEwQyAxMTZBIDExQjM7Qzg5ODsxMTBDIDExNkEgMTFCMzsgIyAo7KKYOyDsopg7IOGEjOGFquGGszsg7KKYOyDhhIzhharhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpXQUxTCitDODk5O0M4OTk7MTEwQyAxMTZBIDExQjQ7Qzg5OTsxMTBDIDExNkEgMTFCNDsgIyAo7KKZOyDsopk7IOGEjOGFquGGtDsg7KKZOyDhhIzhharhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEpXQUxUCitDODlBO0M4OUE7MTEwQyAxMTZBIDExQjU7Qzg5QTsxMTBDIDExNkEgMTFCNTsgIyAo7KKaOyDsopo7IOGEjOGFquGGtTsg7KKaOyDhhIzhharhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEpXQUxQCitDODlCO0M4OUI7MTEwQyAxMTZBIDExQjY7Qzg5QjsxMTBDIDExNkEgMTFCNjsgIyAo7KKbOyDsops7IOGEjOGFquGGtjsg7KKbOyDhhIzhharhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpXQUxICitDODlDO0M4OUM7MTEwQyAxMTZBIDExQjc7Qzg5QzsxMTBDIDExNkEgMTFCNzsgIyAo7KKcOyDsopw7IOGEjOGFquGGtzsg7KKcOyDhhIzhharhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEpXQU0KK0M4OUQ7Qzg5RDsxMTBDIDExNkEgMTFCODtDODlEOzExMEMgMTE2QSAxMUI4OyAjICjsop07IOyinTsg4YSM4YWq4Ya4OyDsop07IOGEjOGFquGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSldBQgorQzg5RTtDODlFOzExMEMgMTE2QSAxMUI5O0M4OUU7MTEwQyAxMTZBIDExQjk7ICMgKOyinjsg7KKeOyDhhIzhharhhrk7IOyinjsg4YSM4YWq4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKV0FCUworQzg5RjtDODlGOzExMEMgMTE2QSAxMUJBO0M4OUY7MTEwQyAxMTZBIDExQkE7ICMgKOyinzsg7KKfOyDhhIzhharhhro7IOyinzsg4YSM4YWq4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBKV0FTCitDOEEwO0M4QTA7MTEwQyAxMTZBIDExQkI7QzhBMDsxMTBDIDExNkEgMTFCQjsgIyAo7KKgOyDsoqA7IOGEjOGFquGGuzsg7KKgOyDhhIzhharhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEpXQVNTCitDOEExO0M4QTE7MTEwQyAxMTZBIDExQkM7QzhBMTsxMTBDIDExNkEgMTFCQzsgIyAo7KKhOyDsoqE7IOGEjOGFquGGvDsg7KKhOyDhhIzhharhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpXQU5HCitDOEEyO0M4QTI7MTEwQyAxMTZBIDExQkQ7QzhBMjsxMTBDIDExNkEgMTFCRDsgIyAo7KKiOyDsoqI7IOGEjOGFquGGvTsg7KKiOyDhhIzhharhhr07ICkgSEFOR1VMIFNZTExBQkxFIEpXQUoKK0M4QTM7QzhBMzsxMTBDIDExNkEgMTFCRTtDOEEzOzExMEMgMTE2QSAxMUJFOyAjICjsoqM7IOyiozsg4YSM4YWq4Ya+OyDsoqM7IOGEjOGFquGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSldBQworQzhBNDtDOEE0OzExMEMgMTE2QSAxMUJGO0M4QTQ7MTEwQyAxMTZBIDExQkY7ICMgKOyipDsg7KKkOyDhhIzhharhhr87IOyipDsg4YSM4YWq4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKV0FLCitDOEE1O0M4QTU7MTEwQyAxMTZBIDExQzA7QzhBNTsxMTBDIDExNkEgMTFDMDsgIyAo7KKlOyDsoqU7IOGEjOGFquGHgDsg7KKlOyDhhIzhharhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEpXQVQKK0M4QTY7QzhBNjsxMTBDIDExNkEgMTFDMTtDOEE2OzExMEMgMTE2QSAxMUMxOyAjICjsoqY7IOyipjsg4YSM4YWq4YeBOyDsoqY7IOGEjOGFquGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSldBUAorQzhBNztDOEE3OzExMEMgMTE2QSAxMUMyO0M4QTc7MTEwQyAxMTZBIDExQzI7ICMgKOyipzsg7KKnOyDhhIzhharhh4I7IOyipzsg4YSM4YWq4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKV0FICitDOEE4O0M4QTg7MTEwQyAxMTZCO0M4QTg7MTEwQyAxMTZCOyAjICjsoqg7IOyiqDsg4YSM4YWrOyDsoqg7IOGEjOGFqzsgKSBIQU5HVUwgU1lMTEFCTEUgSldBRQorQzhBOTtDOEE5OzExMEMgMTE2QiAxMUE4O0M4QTk7MTEwQyAxMTZCIDExQTg7ICMgKOyiqTsg7KKpOyDhhIzhhavhhqg7IOyiqTsg4YSM4YWr4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBKV0FFRworQzhBQTtDOEFBOzExMEMgMTE2QiAxMUE5O0M4QUE7MTEwQyAxMTZCIDExQTk7ICMgKOyiqjsg7KKqOyDhhIzhhavhhqk7IOyiqjsg4YSM4YWr4YapOyApIEhBTkdVTCBTWUxMQUJMRSBKV0FFR0cKK0M4QUI7QzhBQjsxMTBDIDExNkIgMTFBQTtDOEFCOzExMEMgMTE2QiAxMUFBOyAjICjsoqs7IOyiqzsg4YSM4YWr4YaqOyDsoqs7IOGEjOGFq+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSldBRUdTCitDOEFDO0M4QUM7MTEwQyAxMTZCIDExQUI7QzhBQzsxMTBDIDExNkIgMTFBQjsgIyAo7KKsOyDsoqw7IOGEjOGFq+GGqzsg7KKsOyDhhIzhhavhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEpXQUVOCitDOEFEO0M4QUQ7MTEwQyAxMTZCIDExQUM7QzhBRDsxMTBDIDExNkIgMTFBQzsgIyAo7KKtOyDsoq07IOGEjOGFq+GGrDsg7KKtOyDhhIzhhavhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEpXQUVOSgorQzhBRTtDOEFFOzExMEMgMTE2QiAxMUFEO0M4QUU7MTEwQyAxMTZCIDExQUQ7ICMgKOyirjsg7KKuOyDhhIzhhavhhq07IOyirjsg4YSM4YWr4YatOyApIEhBTkdVTCBTWUxMQUJMRSBKV0FFTkgKK0M4QUY7QzhBRjsxMTBDIDExNkIgMTFBRTtDOEFGOzExMEMgMTE2QiAxMUFFOyAjICjsoq87IOyirzsg4YSM4YWr4YauOyDsoq87IOGEjOGFq+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSldBRUQKK0M4QjA7QzhCMDsxMTBDIDExNkIgMTFBRjtDOEIwOzExMEMgMTE2QiAxMUFGOyAjICjsorA7IOyisDsg4YSM4YWr4YavOyDsorA7IOGEjOGFq+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgSldBRUwKK0M4QjE7QzhCMTsxMTBDIDExNkIgMTFCMDtDOEIxOzExMEMgMTE2QiAxMUIwOyAjICjsorE7IOyisTsg4YSM4YWr4YawOyDsorE7IOGEjOGFq+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSldBRUxHCitDOEIyO0M4QjI7MTEwQyAxMTZCIDExQjE7QzhCMjsxMTBDIDExNkIgMTFCMTsgIyAo7KKyOyDsorI7IOGEjOGFq+GGsTsg7KKyOyDhhIzhhavhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEpXQUVMTQorQzhCMztDOEIzOzExMEMgMTE2QiAxMUIyO0M4QjM7MTEwQyAxMTZCIDExQjI7ICMgKOyiszsg7KKzOyDhhIzhhavhhrI7IOyiszsg4YSM4YWr4YayOyApIEhBTkdVTCBTWUxMQUJMRSBKV0FFTEIKK0M4QjQ7QzhCNDsxMTBDIDExNkIgMTFCMztDOEI0OzExMEMgMTE2QiAxMUIzOyAjICjsorQ7IOyitDsg4YSM4YWr4YazOyDsorQ7IOGEjOGFq+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgSldBRUxTCitDOEI1O0M4QjU7MTEwQyAxMTZCIDExQjQ7QzhCNTsxMTBDIDExNkIgMTFCNDsgIyAo7KK1OyDsorU7IOGEjOGFq+GGtDsg7KK1OyDhhIzhhavhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEpXQUVMVAorQzhCNjtDOEI2OzExMEMgMTE2QiAxMUI1O0M4QjY7MTEwQyAxMTZCIDExQjU7ICMgKOyitjsg7KK2OyDhhIzhhavhhrU7IOyitjsg4YSM4YWr4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBKV0FFTFAKK0M4Qjc7QzhCNzsxMTBDIDExNkIgMTFCNjtDOEI3OzExMEMgMTE2QiAxMUI2OyAjICjsorc7IOyitzsg4YSM4YWr4Ya2OyDsorc7IOGEjOGFq+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSldBRUxICitDOEI4O0M4Qjg7MTEwQyAxMTZCIDExQjc7QzhCODsxMTBDIDExNkIgMTFCNzsgIyAo7KK4OyDsorg7IOGEjOGFq+GGtzsg7KK4OyDhhIzhhavhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEpXQUVNCitDOEI5O0M4Qjk7MTEwQyAxMTZCIDExQjg7QzhCOTsxMTBDIDExNkIgMTFCODsgIyAo7KK5OyDsork7IOGEjOGFq+GGuDsg7KK5OyDhhIzhhavhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEpXQUVCCitDOEJBO0M4QkE7MTEwQyAxMTZCIDExQjk7QzhCQTsxMTBDIDExNkIgMTFCOTsgIyAo7KK6OyDsoro7IOGEjOGFq+GGuTsg7KK6OyDhhIzhhavhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEpXQUVCUworQzhCQjtDOEJCOzExMEMgMTE2QiAxMUJBO0M4QkI7MTEwQyAxMTZCIDExQkE7ICMgKOyiuzsg7KK7OyDhhIzhhavhhro7IOyiuzsg4YSM4YWr4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBKV0FFUworQzhCQztDOEJDOzExMEMgMTE2QiAxMUJCO0M4QkM7MTEwQyAxMTZCIDExQkI7ICMgKOyivDsg7KK8OyDhhIzhhavhhrs7IOyivDsg4YSM4YWr4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBKV0FFU1MKK0M4QkQ7QzhCRDsxMTBDIDExNkIgMTFCQztDOEJEOzExMEMgMTE2QiAxMUJDOyAjICjsor07IOyivTsg4YSM4YWr4Ya8OyDsor07IOGEjOGFq+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSldBRU5HCitDOEJFO0M4QkU7MTEwQyAxMTZCIDExQkQ7QzhCRTsxMTBDIDExNkIgMTFCRDsgIyAo7KK+OyDsor47IOGEjOGFq+GGvTsg7KK+OyDhhIzhhavhhr07ICkgSEFOR1VMIFNZTExBQkxFIEpXQUVKCitDOEJGO0M4QkY7MTEwQyAxMTZCIDExQkU7QzhCRjsxMTBDIDExNkIgMTFCRTsgIyAo7KK/OyDsor87IOGEjOGFq+GGvjsg7KK/OyDhhIzhhavhhr47ICkgSEFOR1VMIFNZTExBQkxFIEpXQUVDCitDOEMwO0M4QzA7MTEwQyAxMTZCIDExQkY7QzhDMDsxMTBDIDExNkIgMTFCRjsgIyAo7KOAOyDso4A7IOGEjOGFq+GGvzsg7KOAOyDhhIzhhavhhr87ICkgSEFOR1VMIFNZTExBQkxFIEpXQUVLCitDOEMxO0M4QzE7MTEwQyAxMTZCIDExQzA7QzhDMTsxMTBDIDExNkIgMTFDMDsgIyAo7KOBOyDso4E7IOGEjOGFq+GHgDsg7KOBOyDhhIzhhavhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEpXQUVUCitDOEMyO0M4QzI7MTEwQyAxMTZCIDExQzE7QzhDMjsxMTBDIDExNkIgMTFDMTsgIyAo7KOCOyDso4I7IOGEjOGFq+GHgTsg7KOCOyDhhIzhhavhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEpXQUVQCitDOEMzO0M4QzM7MTEwQyAxMTZCIDExQzI7QzhDMzsxMTBDIDExNkIgMTFDMjsgIyAo7KODOyDso4M7IOGEjOGFq+GHgjsg7KODOyDhhIzhhavhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEpXQUVICitDOEM0O0M4QzQ7MTEwQyAxMTZDO0M4QzQ7MTEwQyAxMTZDOyAjICjso4Q7IOyjhDsg4YSM4YWsOyDso4Q7IOGEjOGFrDsgKSBIQU5HVUwgU1lMTEFCTEUgSk9FCitDOEM1O0M4QzU7MTEwQyAxMTZDIDExQTg7QzhDNTsxMTBDIDExNkMgMTFBODsgIyAo7KOFOyDso4U7IOGEjOGFrOGGqDsg7KOFOyDhhIzhhazhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEpPRUcKK0M4QzY7QzhDNjsxMTBDIDExNkMgMTFBOTtDOEM2OzExMEMgMTE2QyAxMUE5OyAjICjso4Y7IOyjhjsg4YSM4YWs4YapOyDso4Y7IOGEjOGFrOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSk9FR0cKK0M4Qzc7QzhDNzsxMTBDIDExNkMgMTFBQTtDOEM3OzExMEMgMTE2QyAxMUFBOyAjICjso4c7IOyjhzsg4YSM4YWs4YaqOyDso4c7IOGEjOGFrOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSk9FR1MKK0M4Qzg7QzhDODsxMTBDIDExNkMgMTFBQjtDOEM4OzExMEMgMTE2QyAxMUFCOyAjICjso4g7IOyjiDsg4YSM4YWs4YarOyDso4g7IOGEjOGFrOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgSk9FTgorQzhDOTtDOEM5OzExMEMgMTE2QyAxMUFDO0M4Qzk7MTEwQyAxMTZDIDExQUM7ICMgKOyjiTsg7KOJOyDhhIzhhazhhqw7IOyjiTsg4YSM4YWs4YasOyApIEhBTkdVTCBTWUxMQUJMRSBKT0VOSgorQzhDQTtDOENBOzExMEMgMTE2QyAxMUFEO0M4Q0E7MTEwQyAxMTZDIDExQUQ7ICMgKOyjijsg7KOKOyDhhIzhhazhhq07IOyjijsg4YSM4YWs4YatOyApIEhBTkdVTCBTWUxMQUJMRSBKT0VOSAorQzhDQjtDOENCOzExMEMgMTE2QyAxMUFFO0M4Q0I7MTEwQyAxMTZDIDExQUU7ICMgKOyjizsg7KOLOyDhhIzhhazhhq47IOyjizsg4YSM4YWs4YauOyApIEhBTkdVTCBTWUxMQUJMRSBKT0VECitDOENDO0M4Q0M7MTEwQyAxMTZDIDExQUY7QzhDQzsxMTBDIDExNkMgMTFBRjsgIyAo7KOMOyDso4w7IOGEjOGFrOGGrzsg7KOMOyDhhIzhhazhhq87ICkgSEFOR1VMIFNZTExBQkxFIEpPRUwKK0M4Q0Q7QzhDRDsxMTBDIDExNkMgMTFCMDtDOENEOzExMEMgMTE2QyAxMUIwOyAjICjso407IOyjjTsg4YSM4YWs4YawOyDso407IOGEjOGFrOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSk9FTEcKK0M4Q0U7QzhDRTsxMTBDIDExNkMgMTFCMTtDOENFOzExMEMgMTE2QyAxMUIxOyAjICjso447IOyjjjsg4YSM4YWs4YaxOyDso447IOGEjOGFrOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgSk9FTE0KK0M4Q0Y7QzhDRjsxMTBDIDExNkMgMTFCMjtDOENGOzExMEMgMTE2QyAxMUIyOyAjICjso487IOyjjzsg4YSM4YWs4YayOyDso487IOGEjOGFrOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSk9FTEIKK0M4RDA7QzhEMDsxMTBDIDExNkMgMTFCMztDOEQwOzExMEMgMTE2QyAxMUIzOyAjICjso5A7IOyjkDsg4YSM4YWs4YazOyDso5A7IOGEjOGFrOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgSk9FTFMKK0M4RDE7QzhEMTsxMTBDIDExNkMgMTFCNDtDOEQxOzExMEMgMTE2QyAxMUI0OyAjICjso5E7IOyjkTsg4YSM4YWs4Ya0OyDso5E7IOGEjOGFrOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgSk9FTFQKK0M4RDI7QzhEMjsxMTBDIDExNkMgMTFCNTtDOEQyOzExMEMgMTE2QyAxMUI1OyAjICjso5I7IOyjkjsg4YSM4YWs4Ya1OyDso5I7IOGEjOGFrOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSk9FTFAKK0M4RDM7QzhEMzsxMTBDIDExNkMgMTFCNjtDOEQzOzExMEMgMTE2QyAxMUI2OyAjICjso5M7IOyjkzsg4YSM4YWs4Ya2OyDso5M7IOGEjOGFrOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSk9FTEgKK0M4RDQ7QzhENDsxMTBDIDExNkMgMTFCNztDOEQ0OzExMEMgMTE2QyAxMUI3OyAjICjso5Q7IOyjlDsg4YSM4YWs4Ya3OyDso5Q7IOGEjOGFrOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgSk9FTQorQzhENTtDOEQ1OzExMEMgMTE2QyAxMUI4O0M4RDU7MTEwQyAxMTZDIDExQjg7ICMgKOyjlTsg7KOVOyDhhIzhhazhhrg7IOyjlTsg4YSM4YWs4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBKT0VCCitDOEQ2O0M4RDY7MTEwQyAxMTZDIDExQjk7QzhENjsxMTBDIDExNkMgMTFCOTsgIyAo7KOWOyDso5Y7IOGEjOGFrOGGuTsg7KOWOyDhhIzhhazhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEpPRUJTCitDOEQ3O0M4RDc7MTEwQyAxMTZDIDExQkE7QzhENzsxMTBDIDExNkMgMTFCQTsgIyAo7KOXOyDso5c7IOGEjOGFrOGGujsg7KOXOyDhhIzhhazhhro7ICkgSEFOR1VMIFNZTExBQkxFIEpPRVMKK0M4RDg7QzhEODsxMTBDIDExNkMgMTFCQjtDOEQ4OzExMEMgMTE2QyAxMUJCOyAjICjso5g7IOyjmDsg4YSM4YWs4Ya7OyDso5g7IOGEjOGFrOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSk9FU1MKK0M4RDk7QzhEOTsxMTBDIDExNkMgMTFCQztDOEQ5OzExMEMgMTE2QyAxMUJDOyAjICjso5k7IOyjmTsg4YSM4YWs4Ya8OyDso5k7IOGEjOGFrOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSk9FTkcKK0M4REE7QzhEQTsxMTBDIDExNkMgMTFCRDtDOERBOzExMEMgMTE2QyAxMUJEOyAjICjso5o7IOyjmjsg4YSM4YWs4Ya9OyDso5o7IOGEjOGFrOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgSk9FSgorQzhEQjtDOERCOzExMEMgMTE2QyAxMUJFO0M4REI7MTEwQyAxMTZDIDExQkU7ICMgKOyjmzsg7KObOyDhhIzhhazhhr47IOyjmzsg4YSM4YWs4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBKT0VDCitDOERDO0M4REM7MTEwQyAxMTZDIDExQkY7QzhEQzsxMTBDIDExNkMgMTFCRjsgIyAo7KOcOyDso5w7IOGEjOGFrOGGvzsg7KOcOyDhhIzhhazhhr87ICkgSEFOR1VMIFNZTExBQkxFIEpPRUsKK0M4REQ7QzhERDsxMTBDIDExNkMgMTFDMDtDOEREOzExMEMgMTE2QyAxMUMwOyAjICjso507IOyjnTsg4YSM4YWs4YeAOyDso507IOGEjOGFrOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgSk9FVAorQzhERTtDOERFOzExMEMgMTE2QyAxMUMxO0M4REU7MTEwQyAxMTZDIDExQzE7ICMgKOyjnjsg7KOeOyDhhIzhhazhh4E7IOyjnjsg4YSM4YWs4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBKT0VQCitDOERGO0M4REY7MTEwQyAxMTZDIDExQzI7QzhERjsxMTBDIDExNkMgMTFDMjsgIyAo7KOfOyDso587IOGEjOGFrOGHgjsg7KOfOyDhhIzhhazhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEpPRUgKK0M4RTA7QzhFMDsxMTBDIDExNkQ7QzhFMDsxMTBDIDExNkQ7ICMgKOyjoDsg7KOgOyDhhIzhha07IOyjoDsg4YSM4YWtOyApIEhBTkdVTCBTWUxMQUJMRSBKWU8KK0M4RTE7QzhFMTsxMTBDIDExNkQgMTFBODtDOEUxOzExMEMgMTE2RCAxMUE4OyAjICjso6E7IOyjoTsg4YSM4YWt4YaoOyDso6E7IOGEjOGFreGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSllPRworQzhFMjtDOEUyOzExMEMgMTE2RCAxMUE5O0M4RTI7MTEwQyAxMTZEIDExQTk7ICMgKOyjojsg7KOiOyDhhIzhha3hhqk7IOyjojsg4YSM4YWt4YapOyApIEhBTkdVTCBTWUxMQUJMRSBKWU9HRworQzhFMztDOEUzOzExMEMgMTE2RCAxMUFBO0M4RTM7MTEwQyAxMTZEIDExQUE7ICMgKOyjozsg7KOjOyDhhIzhha3hhqo7IOyjozsg4YSM4YWt4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBKWU9HUworQzhFNDtDOEU0OzExMEMgMTE2RCAxMUFCO0M4RTQ7MTEwQyAxMTZEIDExQUI7ICMgKOyjpDsg7KOkOyDhhIzhha3hhqs7IOyjpDsg4YSM4YWt4YarOyApIEhBTkdVTCBTWUxMQUJMRSBKWU9OCitDOEU1O0M4RTU7MTEwQyAxMTZEIDExQUM7QzhFNTsxMTBDIDExNkQgMTFBQzsgIyAo7KOlOyDso6U7IOGEjOGFreGGrDsg7KOlOyDhhIzhha3hhqw7ICkgSEFOR1VMIFNZTExBQkxFIEpZT05KCitDOEU2O0M4RTY7MTEwQyAxMTZEIDExQUQ7QzhFNjsxMTBDIDExNkQgMTFBRDsgIyAo7KOmOyDso6Y7IOGEjOGFreGGrTsg7KOmOyDhhIzhha3hhq07ICkgSEFOR1VMIFNZTExBQkxFIEpZT05ICitDOEU3O0M4RTc7MTEwQyAxMTZEIDExQUU7QzhFNzsxMTBDIDExNkQgMTFBRTsgIyAo7KOnOyDso6c7IOGEjOGFreGGrjsg7KOnOyDhhIzhha3hhq47ICkgSEFOR1VMIFNZTExBQkxFIEpZT0QKK0M4RTg7QzhFODsxMTBDIDExNkQgMTFBRjtDOEU4OzExMEMgMTE2RCAxMUFGOyAjICjso6g7IOyjqDsg4YSM4YWt4YavOyDso6g7IOGEjOGFreGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgSllPTAorQzhFOTtDOEU5OzExMEMgMTE2RCAxMUIwO0M4RTk7MTEwQyAxMTZEIDExQjA7ICMgKOyjqTsg7KOpOyDhhIzhha3hhrA7IOyjqTsg4YSM4YWt4YawOyApIEhBTkdVTCBTWUxMQUJMRSBKWU9MRworQzhFQTtDOEVBOzExMEMgMTE2RCAxMUIxO0M4RUE7MTEwQyAxMTZEIDExQjE7ICMgKOyjqjsg7KOqOyDhhIzhha3hhrE7IOyjqjsg4YSM4YWt4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKWU9MTQorQzhFQjtDOEVCOzExMEMgMTE2RCAxMUIyO0M4RUI7MTEwQyAxMTZEIDExQjI7ICMgKOyjqzsg7KOrOyDhhIzhha3hhrI7IOyjqzsg4YSM4YWt4YayOyApIEhBTkdVTCBTWUxMQUJMRSBKWU9MQgorQzhFQztDOEVDOzExMEMgMTE2RCAxMUIzO0M4RUM7MTEwQyAxMTZEIDExQjM7ICMgKOyjrDsg7KOsOyDhhIzhha3hhrM7IOyjrDsg4YSM4YWt4YazOyApIEhBTkdVTCBTWUxMQUJMRSBKWU9MUworQzhFRDtDOEVEOzExMEMgMTE2RCAxMUI0O0M4RUQ7MTEwQyAxMTZEIDExQjQ7ICMgKOyjrTsg7KOtOyDhhIzhha3hhrQ7IOyjrTsg4YSM4YWt4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKWU9MVAorQzhFRTtDOEVFOzExMEMgMTE2RCAxMUI1O0M4RUU7MTEwQyAxMTZEIDExQjU7ICMgKOyjrjsg7KOuOyDhhIzhha3hhrU7IOyjrjsg4YSM4YWt4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBKWU9MUAorQzhFRjtDOEVGOzExMEMgMTE2RCAxMUI2O0M4RUY7MTEwQyAxMTZEIDExQjY7ICMgKOyjrzsg7KOvOyDhhIzhha3hhrY7IOyjrzsg4YSM4YWt4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBKWU9MSAorQzhGMDtDOEYwOzExMEMgMTE2RCAxMUI3O0M4RjA7MTEwQyAxMTZEIDExQjc7ICMgKOyjsDsg7KOwOyDhhIzhha3hhrc7IOyjsDsg4YSM4YWt4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKWU9NCitDOEYxO0M4RjE7MTEwQyAxMTZEIDExQjg7QzhGMTsxMTBDIDExNkQgMTFCODsgIyAo7KOxOyDso7E7IOGEjOGFreGGuDsg7KOxOyDhhIzhha3hhrg7ICkgSEFOR1VMIFNZTExBQkxFIEpZT0IKK0M4RjI7QzhGMjsxMTBDIDExNkQgMTFCOTtDOEYyOzExMEMgMTE2RCAxMUI5OyAjICjso7I7IOyjsjsg4YSM4YWt4Ya5OyDso7I7IOGEjOGFreGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgSllPQlMKK0M4RjM7QzhGMzsxMTBDIDExNkQgMTFCQTtDOEYzOzExMEMgMTE2RCAxMUJBOyAjICjso7M7IOyjszsg4YSM4YWt4Ya6OyDso7M7IOGEjOGFreGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSllPUworQzhGNDtDOEY0OzExMEMgMTE2RCAxMUJCO0M4RjQ7MTEwQyAxMTZEIDExQkI7ICMgKOyjtDsg7KO0OyDhhIzhha3hhrs7IOyjtDsg4YSM4YWt4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBKWU9TUworQzhGNTtDOEY1OzExMEMgMTE2RCAxMUJDO0M4RjU7MTEwQyAxMTZEIDExQkM7ICMgKOyjtTsg7KO1OyDhhIzhha3hhrw7IOyjtTsg4YSM4YWt4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBKWU9ORworQzhGNjtDOEY2OzExMEMgMTE2RCAxMUJEO0M4RjY7MTEwQyAxMTZEIDExQkQ7ICMgKOyjtjsg7KO2OyDhhIzhha3hhr07IOyjtjsg4YSM4YWt4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKWU9KCitDOEY3O0M4Rjc7MTEwQyAxMTZEIDExQkU7QzhGNzsxMTBDIDExNkQgMTFCRTsgIyAo7KO3OyDso7c7IOGEjOGFreGGvjsg7KO3OyDhhIzhha3hhr47ICkgSEFOR1VMIFNZTExBQkxFIEpZT0MKK0M4Rjg7QzhGODsxMTBDIDExNkQgMTFCRjtDOEY4OzExMEMgMTE2RCAxMUJGOyAjICjso7g7IOyjuDsg4YSM4YWt4Ya/OyDso7g7IOGEjOGFreGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgSllPSworQzhGOTtDOEY5OzExMEMgMTE2RCAxMUMwO0M4Rjk7MTEwQyAxMTZEIDExQzA7ICMgKOyjuTsg7KO5OyDhhIzhha3hh4A7IOyjuTsg4YSM4YWt4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKWU9UCitDOEZBO0M4RkE7MTEwQyAxMTZEIDExQzE7QzhGQTsxMTBDIDExNkQgMTFDMTsgIyAo7KO6OyDso7o7IOGEjOGFreGHgTsg7KO6OyDhhIzhha3hh4E7ICkgSEFOR1VMIFNZTExBQkxFIEpZT1AKK0M4RkI7QzhGQjsxMTBDIDExNkQgMTFDMjtDOEZCOzExMEMgMTE2RCAxMUMyOyAjICjso7s7IOyjuzsg4YSM4YWt4YeCOyDso7s7IOGEjOGFreGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgSllPSAorQzhGQztDOEZDOzExMEMgMTE2RTtDOEZDOzExMEMgMTE2RTsgIyAo7KO8OyDso7w7IOGEjOGFrjsg7KO8OyDhhIzhha47ICkgSEFOR1VMIFNZTExBQkxFIEpVCitDOEZEO0M4RkQ7MTEwQyAxMTZFIDExQTg7QzhGRDsxMTBDIDExNkUgMTFBODsgIyAo7KO9OyDso707IOGEjOGFruGGqDsg7KO9OyDhhIzhha7hhqg7ICkgSEFOR1VMIFNZTExBQkxFIEpVRworQzhGRTtDOEZFOzExMEMgMTE2RSAxMUE5O0M4RkU7MTEwQyAxMTZFIDExQTk7ICMgKOyjvjsg7KO+OyDhhIzhha7hhqk7IOyjvjsg4YSM4YWu4YapOyApIEhBTkdVTCBTWUxMQUJMRSBKVUdHCitDOEZGO0M4RkY7MTEwQyAxMTZFIDExQUE7QzhGRjsxMTBDIDExNkUgMTFBQTsgIyAo7KO/OyDso787IOGEjOGFruGGqjsg7KO/OyDhhIzhha7hhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpVR1MKK0M5MDA7QzkwMDsxMTBDIDExNkUgMTFBQjtDOTAwOzExMEMgMTE2RSAxMUFCOyAjICjspIA7IOykgDsg4YSM4YWu4YarOyDspIA7IOGEjOGFruGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgSlVOCitDOTAxO0M5MDE7MTEwQyAxMTZFIDExQUM7QzkwMTsxMTBDIDExNkUgMTFBQzsgIyAo7KSBOyDspIE7IOGEjOGFruGGrDsg7KSBOyDhhIzhha7hhqw7ICkgSEFOR1VMIFNZTExBQkxFIEpVTkoKK0M5MDI7QzkwMjsxMTBDIDExNkUgMTFBRDtDOTAyOzExMEMgMTE2RSAxMUFEOyAjICjspII7IOykgjsg4YSM4YWu4YatOyDspII7IOGEjOGFruGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSlVOSAorQzkwMztDOTAzOzExMEMgMTE2RSAxMUFFO0M5MDM7MTEwQyAxMTZFIDExQUU7ICMgKOykgzsg7KSDOyDhhIzhha7hhq47IOykgzsg4YSM4YWu4YauOyApIEhBTkdVTCBTWUxMQUJMRSBKVUQKK0M5MDQ7QzkwNDsxMTBDIDExNkUgMTFBRjtDOTA0OzExMEMgMTE2RSAxMUFGOyAjICjspIQ7IOykhDsg4YSM4YWu4YavOyDspIQ7IOGEjOGFruGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgSlVMCitDOTA1O0M5MDU7MTEwQyAxMTZFIDExQjA7QzkwNTsxMTBDIDExNkUgMTFCMDsgIyAo7KSFOyDspIU7IOGEjOGFruGGsDsg7KSFOyDhhIzhha7hhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpVTEcKK0M5MDY7QzkwNjsxMTBDIDExNkUgMTFCMTtDOTA2OzExMEMgMTE2RSAxMUIxOyAjICjspIY7IOykhjsg4YSM4YWu4YaxOyDspIY7IOGEjOGFruGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgSlVMTQorQzkwNztDOTA3OzExMEMgMTE2RSAxMUIyO0M5MDc7MTEwQyAxMTZFIDExQjI7ICMgKOykhzsg7KSHOyDhhIzhha7hhrI7IOykhzsg4YSM4YWu4YayOyApIEhBTkdVTCBTWUxMQUJMRSBKVUxCCitDOTA4O0M5MDg7MTEwQyAxMTZFIDExQjM7QzkwODsxMTBDIDExNkUgMTFCMzsgIyAo7KSIOyDspIg7IOGEjOGFruGGszsg7KSIOyDhhIzhha7hhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpVTFMKK0M5MDk7QzkwOTsxMTBDIDExNkUgMTFCNDtDOTA5OzExMEMgMTE2RSAxMUI0OyAjICjspIk7IOykiTsg4YSM4YWu4Ya0OyDspIk7IOGEjOGFruGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgSlVMVAorQzkwQTtDOTBBOzExMEMgMTE2RSAxMUI1O0M5MEE7MTEwQyAxMTZFIDExQjU7ICMgKOykijsg7KSKOyDhhIzhha7hhrU7IOykijsg4YSM4YWu4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBKVUxQCitDOTBCO0M5MEI7MTEwQyAxMTZFIDExQjY7QzkwQjsxMTBDIDExNkUgMTFCNjsgIyAo7KSLOyDspIs7IOGEjOGFruGGtjsg7KSLOyDhhIzhha7hhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpVTEgKK0M5MEM7QzkwQzsxMTBDIDExNkUgMTFCNztDOTBDOzExMEMgMTE2RSAxMUI3OyAjICjspIw7IOykjDsg4YSM4YWu4Ya3OyDspIw7IOGEjOGFruGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgSlVNCitDOTBEO0M5MEQ7MTEwQyAxMTZFIDExQjg7QzkwRDsxMTBDIDExNkUgMTFCODsgIyAo7KSNOyDspI07IOGEjOGFruGGuDsg7KSNOyDhhIzhha7hhrg7ICkgSEFOR1VMIFNZTExBQkxFIEpVQgorQzkwRTtDOTBFOzExMEMgMTE2RSAxMUI5O0M5MEU7MTEwQyAxMTZFIDExQjk7ICMgKOykjjsg7KSOOyDhhIzhha7hhrk7IOykjjsg4YSM4YWu4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKVUJTCitDOTBGO0M5MEY7MTEwQyAxMTZFIDExQkE7QzkwRjsxMTBDIDExNkUgMTFCQTsgIyAo7KSPOyDspI87IOGEjOGFruGGujsg7KSPOyDhhIzhha7hhro7ICkgSEFOR1VMIFNZTExBQkxFIEpVUworQzkxMDtDOTEwOzExMEMgMTE2RSAxMUJCO0M5MTA7MTEwQyAxMTZFIDExQkI7ICMgKOykkDsg7KSQOyDhhIzhha7hhrs7IOykkDsg4YSM4YWu4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBKVVNTCitDOTExO0M5MTE7MTEwQyAxMTZFIDExQkM7QzkxMTsxMTBDIDExNkUgMTFCQzsgIyAo7KSROyDspJE7IOGEjOGFruGGvDsg7KSROyDhhIzhha7hhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpVTkcKK0M5MTI7QzkxMjsxMTBDIDExNkUgMTFCRDtDOTEyOzExMEMgMTE2RSAxMUJEOyAjICjspJI7IOykkjsg4YSM4YWu4Ya9OyDspJI7IOGEjOGFruGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgSlVKCitDOTEzO0M5MTM7MTEwQyAxMTZFIDExQkU7QzkxMzsxMTBDIDExNkUgMTFCRTsgIyAo7KSTOyDspJM7IOGEjOGFruGGvjsg7KSTOyDhhIzhha7hhr47ICkgSEFOR1VMIFNZTExBQkxFIEpVQworQzkxNDtDOTE0OzExMEMgMTE2RSAxMUJGO0M5MTQ7MTEwQyAxMTZFIDExQkY7ICMgKOyklDsg7KSUOyDhhIzhha7hhr87IOyklDsg4YSM4YWu4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKVUsKK0M5MTU7QzkxNTsxMTBDIDExNkUgMTFDMDtDOTE1OzExMEMgMTE2RSAxMUMwOyAjICjspJU7IOyklTsg4YSM4YWu4YeAOyDspJU7IOGEjOGFruGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgSlVUCitDOTE2O0M5MTY7MTEwQyAxMTZFIDExQzE7QzkxNjsxMTBDIDExNkUgMTFDMTsgIyAo7KSWOyDspJY7IOGEjOGFruGHgTsg7KSWOyDhhIzhha7hh4E7ICkgSEFOR1VMIFNZTExBQkxFIEpVUAorQzkxNztDOTE3OzExMEMgMTE2RSAxMUMyO0M5MTc7MTEwQyAxMTZFIDExQzI7ICMgKOyklzsg7KSXOyDhhIzhha7hh4I7IOyklzsg4YSM4YWu4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKVUgKK0M5MTg7QzkxODsxMTBDIDExNkY7QzkxODsxMTBDIDExNkY7ICMgKOykmDsg7KSYOyDhhIzhha87IOykmDsg4YSM4YWvOyApIEhBTkdVTCBTWUxMQUJMRSBKV0VPCitDOTE5O0M5MTk7MTEwQyAxMTZGIDExQTg7QzkxOTsxMTBDIDExNkYgMTFBODsgIyAo7KSZOyDspJk7IOGEjOGFr+GGqDsg7KSZOyDhhIzhha/hhqg7ICkgSEFOR1VMIFNZTExBQkxFIEpXRU9HCitDOTFBO0M5MUE7MTEwQyAxMTZGIDExQTk7QzkxQTsxMTBDIDExNkYgMTFBOTsgIyAo7KSaOyDspJo7IOGEjOGFr+GGqTsg7KSaOyDhhIzhha/hhqk7ICkgSEFOR1VMIFNZTExBQkxFIEpXRU9HRworQzkxQjtDOTFCOzExMEMgMTE2RiAxMUFBO0M5MUI7MTEwQyAxMTZGIDExQUE7ICMgKOykmzsg7KSbOyDhhIzhha/hhqo7IOykmzsg4YSM4YWv4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBKV0VPR1MKK0M5MUM7QzkxQzsxMTBDIDExNkYgMTFBQjtDOTFDOzExMEMgMTE2RiAxMUFCOyAjICjspJw7IOyknDsg4YSM4YWv4YarOyDspJw7IOGEjOGFr+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgSldFT04KK0M5MUQ7QzkxRDsxMTBDIDExNkYgMTFBQztDOTFEOzExMEMgMTE2RiAxMUFDOyAjICjspJ07IOyknTsg4YSM4YWv4YasOyDspJ07IOGEjOGFr+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSldFT05KCitDOTFFO0M5MUU7MTEwQyAxMTZGIDExQUQ7QzkxRTsxMTBDIDExNkYgMTFBRDsgIyAo7KSeOyDspJ47IOGEjOGFr+GGrTsg7KSeOyDhhIzhha/hhq07ICkgSEFOR1VMIFNZTExBQkxFIEpXRU9OSAorQzkxRjtDOTFGOzExMEMgMTE2RiAxMUFFO0M5MUY7MTEwQyAxMTZGIDExQUU7ICMgKOyknzsg7KSfOyDhhIzhha/hhq47IOyknzsg4YSM4YWv4YauOyApIEhBTkdVTCBTWUxMQUJMRSBKV0VPRAorQzkyMDtDOTIwOzExMEMgMTE2RiAxMUFGO0M5MjA7MTEwQyAxMTZGIDExQUY7ICMgKOykoDsg7KSgOyDhhIzhha/hhq87IOykoDsg4YSM4YWv4YavOyApIEhBTkdVTCBTWUxMQUJMRSBKV0VPTAorQzkyMTtDOTIxOzExMEMgMTE2RiAxMUIwO0M5MjE7MTEwQyAxMTZGIDExQjA7ICMgKOykoTsg7KShOyDhhIzhha/hhrA7IOykoTsg4YSM4YWv4YawOyApIEhBTkdVTCBTWUxMQUJMRSBKV0VPTEcKK0M5MjI7QzkyMjsxMTBDIDExNkYgMTFCMTtDOTIyOzExMEMgMTE2RiAxMUIxOyAjICjspKI7IOykojsg4YSM4YWv4YaxOyDspKI7IOGEjOGFr+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgSldFT0xNCitDOTIzO0M5MjM7MTEwQyAxMTZGIDExQjI7QzkyMzsxMTBDIDExNkYgMTFCMjsgIyAo7KSjOyDspKM7IOGEjOGFr+GGsjsg7KSjOyDhhIzhha/hhrI7ICkgSEFOR1VMIFNZTExBQkxFIEpXRU9MQgorQzkyNDtDOTI0OzExMEMgMTE2RiAxMUIzO0M5MjQ7MTEwQyAxMTZGIDExQjM7ICMgKOykpDsg7KSkOyDhhIzhha/hhrM7IOykpDsg4YSM4YWv4YazOyApIEhBTkdVTCBTWUxMQUJMRSBKV0VPTFMKK0M5MjU7QzkyNTsxMTBDIDExNkYgMTFCNDtDOTI1OzExMEMgMTE2RiAxMUI0OyAjICjspKU7IOykpTsg4YSM4YWv4Ya0OyDspKU7IOGEjOGFr+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgSldFT0xUCitDOTI2O0M5MjY7MTEwQyAxMTZGIDExQjU7QzkyNjsxMTBDIDExNkYgMTFCNTsgIyAo7KSmOyDspKY7IOGEjOGFr+GGtTsg7KSmOyDhhIzhha/hhrU7ICkgSEFOR1VMIFNZTExBQkxFIEpXRU9MUAorQzkyNztDOTI3OzExMEMgMTE2RiAxMUI2O0M5Mjc7MTEwQyAxMTZGIDExQjY7ICMgKOykpzsg7KSnOyDhhIzhha/hhrY7IOykpzsg4YSM4YWv4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBKV0VPTEgKK0M5Mjg7QzkyODsxMTBDIDExNkYgMTFCNztDOTI4OzExMEMgMTE2RiAxMUI3OyAjICjspKg7IOykqDsg4YSM4YWv4Ya3OyDspKg7IOGEjOGFr+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgSldFT00KK0M5Mjk7QzkyOTsxMTBDIDExNkYgMTFCODtDOTI5OzExMEMgMTE2RiAxMUI4OyAjICjspKk7IOykqTsg4YSM4YWv4Ya4OyDspKk7IOGEjOGFr+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSldFT0IKK0M5MkE7QzkyQTsxMTBDIDExNkYgMTFCOTtDOTJBOzExMEMgMTE2RiAxMUI5OyAjICjspKo7IOykqjsg4YSM4YWv4Ya5OyDspKo7IOGEjOGFr+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgSldFT0JTCitDOTJCO0M5MkI7MTEwQyAxMTZGIDExQkE7QzkyQjsxMTBDIDExNkYgMTFCQTsgIyAo7KSrOyDspKs7IOGEjOGFr+GGujsg7KSrOyDhhIzhha/hhro7ICkgSEFOR1VMIFNZTExBQkxFIEpXRU9TCitDOTJDO0M5MkM7MTEwQyAxMTZGIDExQkI7QzkyQzsxMTBDIDExNkYgMTFCQjsgIyAo7KSsOyDspKw7IOGEjOGFr+GGuzsg7KSsOyDhhIzhha/hhrs7ICkgSEFOR1VMIFNZTExBQkxFIEpXRU9TUworQzkyRDtDOTJEOzExMEMgMTE2RiAxMUJDO0M5MkQ7MTEwQyAxMTZGIDExQkM7ICMgKOykrTsg7KStOyDhhIzhha/hhrw7IOykrTsg4YSM4YWv4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBKV0VPTkcKK0M5MkU7QzkyRTsxMTBDIDExNkYgMTFCRDtDOTJFOzExMEMgMTE2RiAxMUJEOyAjICjspK47IOykrjsg4YSM4YWv4Ya9OyDspK47IOGEjOGFr+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgSldFT0oKK0M5MkY7QzkyRjsxMTBDIDExNkYgMTFCRTtDOTJGOzExMEMgMTE2RiAxMUJFOyAjICjspK87IOykrzsg4YSM4YWv4Ya+OyDspK87IOGEjOGFr+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSldFT0MKK0M5MzA7QzkzMDsxMTBDIDExNkYgMTFCRjtDOTMwOzExMEMgMTE2RiAxMUJGOyAjICjspLA7IOyksDsg4YSM4YWv4Ya/OyDspLA7IOGEjOGFr+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgSldFT0sKK0M5MzE7QzkzMTsxMTBDIDExNkYgMTFDMDtDOTMxOzExMEMgMTE2RiAxMUMwOyAjICjspLE7IOyksTsg4YSM4YWv4YeAOyDspLE7IOGEjOGFr+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgSldFT1QKK0M5MzI7QzkzMjsxMTBDIDExNkYgMTFDMTtDOTMyOzExMEMgMTE2RiAxMUMxOyAjICjspLI7IOyksjsg4YSM4YWv4YeBOyDspLI7IOGEjOGFr+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSldFT1AKK0M5MzM7QzkzMzsxMTBDIDExNkYgMTFDMjtDOTMzOzExMEMgMTE2RiAxMUMyOyAjICjspLM7IOykszsg4YSM4YWv4YeCOyDspLM7IOGEjOGFr+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgSldFT0gKK0M5MzQ7QzkzNDsxMTBDIDExNzA7QzkzNDsxMTBDIDExNzA7ICMgKOyktDsg7KS0OyDhhIzhhbA7IOyktDsg4YSM4YWwOyApIEhBTkdVTCBTWUxMQUJMRSBKV0UKK0M5MzU7QzkzNTsxMTBDIDExNzAgMTFBODtDOTM1OzExMEMgMTE3MCAxMUE4OyAjICjspLU7IOyktTsg4YSM4YWw4YaoOyDspLU7IOGEjOGFsOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSldFRworQzkzNjtDOTM2OzExMEMgMTE3MCAxMUE5O0M5MzY7MTEwQyAxMTcwIDExQTk7ICMgKOyktjsg7KS2OyDhhIzhhbDhhqk7IOyktjsg4YSM4YWw4YapOyApIEhBTkdVTCBTWUxMQUJMRSBKV0VHRworQzkzNztDOTM3OzExMEMgMTE3MCAxMUFBO0M5Mzc7MTEwQyAxMTcwIDExQUE7ICMgKOyktzsg7KS3OyDhhIzhhbDhhqo7IOyktzsg4YSM4YWw4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBKV0VHUworQzkzODtDOTM4OzExMEMgMTE3MCAxMUFCO0M5Mzg7MTEwQyAxMTcwIDExQUI7ICMgKOykuDsg7KS4OyDhhIzhhbDhhqs7IOykuDsg4YSM4YWw4YarOyApIEhBTkdVTCBTWUxMQUJMRSBKV0VOCitDOTM5O0M5Mzk7MTEwQyAxMTcwIDExQUM7QzkzOTsxMTBDIDExNzAgMTFBQzsgIyAo7KS5OyDspLk7IOGEjOGFsOGGrDsg7KS5OyDhhIzhhbDhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEpXRU5KCitDOTNBO0M5M0E7MTEwQyAxMTcwIDExQUQ7QzkzQTsxMTBDIDExNzAgMTFBRDsgIyAo7KS6OyDspLo7IOGEjOGFsOGGrTsg7KS6OyDhhIzhhbDhhq07ICkgSEFOR1VMIFNZTExBQkxFIEpXRU5ICitDOTNCO0M5M0I7MTEwQyAxMTcwIDExQUU7QzkzQjsxMTBDIDExNzAgMTFBRTsgIyAo7KS7OyDspLs7IOGEjOGFsOGGrjsg7KS7OyDhhIzhhbDhhq47ICkgSEFOR1VMIFNZTExBQkxFIEpXRUQKK0M5M0M7QzkzQzsxMTBDIDExNzAgMTFBRjtDOTNDOzExMEMgMTE3MCAxMUFGOyAjICjspLw7IOykvDsg4YSM4YWw4YavOyDspLw7IOGEjOGFsOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgSldFTAorQzkzRDtDOTNEOzExMEMgMTE3MCAxMUIwO0M5M0Q7MTEwQyAxMTcwIDExQjA7ICMgKOykvTsg7KS9OyDhhIzhhbDhhrA7IOykvTsg4YSM4YWw4YawOyApIEhBTkdVTCBTWUxMQUJMRSBKV0VMRworQzkzRTtDOTNFOzExMEMgMTE3MCAxMUIxO0M5M0U7MTEwQyAxMTcwIDExQjE7ICMgKOykvjsg7KS+OyDhhIzhhbDhhrE7IOykvjsg4YSM4YWw4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKV0VMTQorQzkzRjtDOTNGOzExMEMgMTE3MCAxMUIyO0M5M0Y7MTEwQyAxMTcwIDExQjI7ICMgKOykvzsg7KS/OyDhhIzhhbDhhrI7IOykvzsg4YSM4YWw4YayOyApIEhBTkdVTCBTWUxMQUJMRSBKV0VMQgorQzk0MDtDOTQwOzExMEMgMTE3MCAxMUIzO0M5NDA7MTEwQyAxMTcwIDExQjM7ICMgKOylgDsg7KWAOyDhhIzhhbDhhrM7IOylgDsg4YSM4YWw4YazOyApIEhBTkdVTCBTWUxMQUJMRSBKV0VMUworQzk0MTtDOTQxOzExMEMgMTE3MCAxMUI0O0M5NDE7MTEwQyAxMTcwIDExQjQ7ICMgKOylgTsg7KWBOyDhhIzhhbDhhrQ7IOylgTsg4YSM4YWw4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKV0VMVAorQzk0MjtDOTQyOzExMEMgMTE3MCAxMUI1O0M5NDI7MTEwQyAxMTcwIDExQjU7ICMgKOylgjsg7KWCOyDhhIzhhbDhhrU7IOylgjsg4YSM4YWw4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBKV0VMUAorQzk0MztDOTQzOzExMEMgMTE3MCAxMUI2O0M5NDM7MTEwQyAxMTcwIDExQjY7ICMgKOylgzsg7KWDOyDhhIzhhbDhhrY7IOylgzsg4YSM4YWw4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBKV0VMSAorQzk0NDtDOTQ0OzExMEMgMTE3MCAxMUI3O0M5NDQ7MTEwQyAxMTcwIDExQjc7ICMgKOylhDsg7KWEOyDhhIzhhbDhhrc7IOylhDsg4YSM4YWw4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKV0VNCitDOTQ1O0M5NDU7MTEwQyAxMTcwIDExQjg7Qzk0NTsxMTBDIDExNzAgMTFCODsgIyAo7KWFOyDspYU7IOGEjOGFsOGGuDsg7KWFOyDhhIzhhbDhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEpXRUIKK0M5NDY7Qzk0NjsxMTBDIDExNzAgMTFCOTtDOTQ2OzExMEMgMTE3MCAxMUI5OyAjICjspYY7IOylhjsg4YSM4YWw4Ya5OyDspYY7IOGEjOGFsOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgSldFQlMKK0M5NDc7Qzk0NzsxMTBDIDExNzAgMTFCQTtDOTQ3OzExMEMgMTE3MCAxMUJBOyAjICjspYc7IOylhzsg4YSM4YWw4Ya6OyDspYc7IOGEjOGFsOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSldFUworQzk0ODtDOTQ4OzExMEMgMTE3MCAxMUJCO0M5NDg7MTEwQyAxMTcwIDExQkI7ICMgKOyliDsg7KWIOyDhhIzhhbDhhrs7IOyliDsg4YSM4YWw4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBKV0VTUworQzk0OTtDOTQ5OzExMEMgMTE3MCAxMUJDO0M5NDk7MTEwQyAxMTcwIDExQkM7ICMgKOyliTsg7KWJOyDhhIzhhbDhhrw7IOyliTsg4YSM4YWw4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBKV0VORworQzk0QTtDOTRBOzExMEMgMTE3MCAxMUJEO0M5NEE7MTEwQyAxMTcwIDExQkQ7ICMgKOylijsg7KWKOyDhhIzhhbDhhr07IOylijsg4YSM4YWw4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKV0VKCitDOTRCO0M5NEI7MTEwQyAxMTcwIDExQkU7Qzk0QjsxMTBDIDExNzAgMTFCRTsgIyAo7KWLOyDspYs7IOGEjOGFsOGGvjsg7KWLOyDhhIzhhbDhhr47ICkgSEFOR1VMIFNZTExBQkxFIEpXRUMKK0M5NEM7Qzk0QzsxMTBDIDExNzAgMTFCRjtDOTRDOzExMEMgMTE3MCAxMUJGOyAjICjspYw7IOyljDsg4YSM4YWw4Ya/OyDspYw7IOGEjOGFsOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgSldFSworQzk0RDtDOTREOzExMEMgMTE3MCAxMUMwO0M5NEQ7MTEwQyAxMTcwIDExQzA7ICMgKOyljTsg7KWNOyDhhIzhhbDhh4A7IOyljTsg4YSM4YWw4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKV0VUCitDOTRFO0M5NEU7MTEwQyAxMTcwIDExQzE7Qzk0RTsxMTBDIDExNzAgMTFDMTsgIyAo7KWOOyDspY47IOGEjOGFsOGHgTsg7KWOOyDhhIzhhbDhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEpXRVAKK0M5NEY7Qzk0RjsxMTBDIDExNzAgMTFDMjtDOTRGOzExMEMgMTE3MCAxMUMyOyAjICjspY87IOyljzsg4YSM4YWw4YeCOyDspY87IOGEjOGFsOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgSldFSAorQzk1MDtDOTUwOzExMEMgMTE3MTtDOTUwOzExMEMgMTE3MTsgIyAo7KWQOyDspZA7IOGEjOGFsTsg7KWQOyDhhIzhhbE7ICkgSEFOR1VMIFNZTExBQkxFIEpXSQorQzk1MTtDOTUxOzExMEMgMTE3MSAxMUE4O0M5NTE7MTEwQyAxMTcxIDExQTg7ICMgKOylkTsg7KWROyDhhIzhhbHhhqg7IOylkTsg4YSM4YWx4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBKV0lHCitDOTUyO0M5NTI7MTEwQyAxMTcxIDExQTk7Qzk1MjsxMTBDIDExNzEgMTFBOTsgIyAo7KWSOyDspZI7IOGEjOGFseGGqTsg7KWSOyDhhIzhhbHhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEpXSUdHCitDOTUzO0M5NTM7MTEwQyAxMTcxIDExQUE7Qzk1MzsxMTBDIDExNzEgMTFBQTsgIyAo7KWTOyDspZM7IOGEjOGFseGGqjsg7KWTOyDhhIzhhbHhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpXSUdTCitDOTU0O0M5NTQ7MTEwQyAxMTcxIDExQUI7Qzk1NDsxMTBDIDExNzEgMTFBQjsgIyAo7KWUOyDspZQ7IOGEjOGFseGGqzsg7KWUOyDhhIzhhbHhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEpXSU4KK0M5NTU7Qzk1NTsxMTBDIDExNzEgMTFBQztDOTU1OzExMEMgMTE3MSAxMUFDOyAjICjspZU7IOyllTsg4YSM4YWx4YasOyDspZU7IOGEjOGFseGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSldJTkoKK0M5NTY7Qzk1NjsxMTBDIDExNzEgMTFBRDtDOTU2OzExMEMgMTE3MSAxMUFEOyAjICjspZY7IOylljsg4YSM4YWx4YatOyDspZY7IOGEjOGFseGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSldJTkgKK0M5NTc7Qzk1NzsxMTBDIDExNzEgMTFBRTtDOTU3OzExMEMgMTE3MSAxMUFFOyAjICjspZc7IOyllzsg4YSM4YWx4YauOyDspZc7IOGEjOGFseGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSldJRAorQzk1ODtDOTU4OzExMEMgMTE3MSAxMUFGO0M5NTg7MTEwQyAxMTcxIDExQUY7ICMgKOylmDsg7KWYOyDhhIzhhbHhhq87IOylmDsg4YSM4YWx4YavOyApIEhBTkdVTCBTWUxMQUJMRSBKV0lMCitDOTU5O0M5NTk7MTEwQyAxMTcxIDExQjA7Qzk1OTsxMTBDIDExNzEgMTFCMDsgIyAo7KWZOyDspZk7IOGEjOGFseGGsDsg7KWZOyDhhIzhhbHhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpXSUxHCitDOTVBO0M5NUE7MTEwQyAxMTcxIDExQjE7Qzk1QTsxMTBDIDExNzEgMTFCMTsgIyAo7KWaOyDspZo7IOGEjOGFseGGsTsg7KWaOyDhhIzhhbHhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEpXSUxNCitDOTVCO0M5NUI7MTEwQyAxMTcxIDExQjI7Qzk1QjsxMTBDIDExNzEgMTFCMjsgIyAo7KWbOyDspZs7IOGEjOGFseGGsjsg7KWbOyDhhIzhhbHhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEpXSUxCCitDOTVDO0M5NUM7MTEwQyAxMTcxIDExQjM7Qzk1QzsxMTBDIDExNzEgMTFCMzsgIyAo7KWcOyDspZw7IOGEjOGFseGGszsg7KWcOyDhhIzhhbHhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpXSUxTCitDOTVEO0M5NUQ7MTEwQyAxMTcxIDExQjQ7Qzk1RDsxMTBDIDExNzEgMTFCNDsgIyAo7KWdOyDspZ07IOGEjOGFseGGtDsg7KWdOyDhhIzhhbHhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEpXSUxUCitDOTVFO0M5NUU7MTEwQyAxMTcxIDExQjU7Qzk1RTsxMTBDIDExNzEgMTFCNTsgIyAo7KWeOyDspZ47IOGEjOGFseGGtTsg7KWeOyDhhIzhhbHhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEpXSUxQCitDOTVGO0M5NUY7MTEwQyAxMTcxIDExQjY7Qzk1RjsxMTBDIDExNzEgMTFCNjsgIyAo7KWfOyDspZ87IOGEjOGFseGGtjsg7KWfOyDhhIzhhbHhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpXSUxICitDOTYwO0M5NjA7MTEwQyAxMTcxIDExQjc7Qzk2MDsxMTBDIDExNzEgMTFCNzsgIyAo7KWgOyDspaA7IOGEjOGFseGGtzsg7KWgOyDhhIzhhbHhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEpXSU0KK0M5NjE7Qzk2MTsxMTBDIDExNzEgMTFCODtDOTYxOzExMEMgMTE3MSAxMUI4OyAjICjspaE7IOyloTsg4YSM4YWx4Ya4OyDspaE7IOGEjOGFseGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSldJQgorQzk2MjtDOTYyOzExMEMgMTE3MSAxMUI5O0M5NjI7MTEwQyAxMTcxIDExQjk7ICMgKOylojsg7KWiOyDhhIzhhbHhhrk7IOylojsg4YSM4YWx4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKV0lCUworQzk2MztDOTYzOzExMEMgMTE3MSAxMUJBO0M5NjM7MTEwQyAxMTcxIDExQkE7ICMgKOylozsg7KWjOyDhhIzhhbHhhro7IOylozsg4YSM4YWx4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBKV0lTCitDOTY0O0M5NjQ7MTEwQyAxMTcxIDExQkI7Qzk2NDsxMTBDIDExNzEgMTFCQjsgIyAo7KWkOyDspaQ7IOGEjOGFseGGuzsg7KWkOyDhhIzhhbHhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEpXSVNTCitDOTY1O0M5NjU7MTEwQyAxMTcxIDExQkM7Qzk2NTsxMTBDIDExNzEgMTFCQzsgIyAo7KWlOyDspaU7IOGEjOGFseGGvDsg7KWlOyDhhIzhhbHhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpXSU5HCitDOTY2O0M5NjY7MTEwQyAxMTcxIDExQkQ7Qzk2NjsxMTBDIDExNzEgMTFCRDsgIyAo7KWmOyDspaY7IOGEjOGFseGGvTsg7KWmOyDhhIzhhbHhhr07ICkgSEFOR1VMIFNZTExBQkxFIEpXSUoKK0M5Njc7Qzk2NzsxMTBDIDExNzEgMTFCRTtDOTY3OzExMEMgMTE3MSAxMUJFOyAjICjspac7IOylpzsg4YSM4YWx4Ya+OyDspac7IOGEjOGFseGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSldJQworQzk2ODtDOTY4OzExMEMgMTE3MSAxMUJGO0M5Njg7MTEwQyAxMTcxIDExQkY7ICMgKOylqDsg7KWoOyDhhIzhhbHhhr87IOylqDsg4YSM4YWx4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKV0lLCitDOTY5O0M5Njk7MTEwQyAxMTcxIDExQzA7Qzk2OTsxMTBDIDExNzEgMTFDMDsgIyAo7KWpOyDspak7IOGEjOGFseGHgDsg7KWpOyDhhIzhhbHhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEpXSVQKK0M5NkE7Qzk2QTsxMTBDIDExNzEgMTFDMTtDOTZBOzExMEMgMTE3MSAxMUMxOyAjICjspao7IOylqjsg4YSM4YWx4YeBOyDspao7IOGEjOGFseGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSldJUAorQzk2QjtDOTZCOzExMEMgMTE3MSAxMUMyO0M5NkI7MTEwQyAxMTcxIDExQzI7ICMgKOylqzsg7KWrOyDhhIzhhbHhh4I7IOylqzsg4YSM4YWx4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKV0lICitDOTZDO0M5NkM7MTEwQyAxMTcyO0M5NkM7MTEwQyAxMTcyOyAjICjspaw7IOylrDsg4YSM4YWyOyDspaw7IOGEjOGFsjsgKSBIQU5HVUwgU1lMTEFCTEUgSllVCitDOTZEO0M5NkQ7MTEwQyAxMTcyIDExQTg7Qzk2RDsxMTBDIDExNzIgMTFBODsgIyAo7KWtOyDspa07IOGEjOGFsuGGqDsg7KWtOyDhhIzhhbLhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEpZVUcKK0M5NkU7Qzk2RTsxMTBDIDExNzIgMTFBOTtDOTZFOzExMEMgMTE3MiAxMUE5OyAjICjspa47IOylrjsg4YSM4YWy4YapOyDspa47IOGEjOGFsuGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSllVR0cKK0M5NkY7Qzk2RjsxMTBDIDExNzIgMTFBQTtDOTZGOzExMEMgMTE3MiAxMUFBOyAjICjspa87IOylrzsg4YSM4YWy4YaqOyDspa87IOGEjOGFsuGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSllVR1MKK0M5NzA7Qzk3MDsxMTBDIDExNzIgMTFBQjtDOTcwOzExMEMgMTE3MiAxMUFCOyAjICjspbA7IOylsDsg4YSM4YWy4YarOyDspbA7IOGEjOGFsuGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgSllVTgorQzk3MTtDOTcxOzExMEMgMTE3MiAxMUFDO0M5NzE7MTEwQyAxMTcyIDExQUM7ICMgKOylsTsg7KWxOyDhhIzhhbLhhqw7IOylsTsg4YSM4YWy4YasOyApIEhBTkdVTCBTWUxMQUJMRSBKWVVOSgorQzk3MjtDOTcyOzExMEMgMTE3MiAxMUFEO0M5NzI7MTEwQyAxMTcyIDExQUQ7ICMgKOylsjsg7KWyOyDhhIzhhbLhhq07IOylsjsg4YSM4YWy4YatOyApIEhBTkdVTCBTWUxMQUJMRSBKWVVOSAorQzk3MztDOTczOzExMEMgMTE3MiAxMUFFO0M5NzM7MTEwQyAxMTcyIDExQUU7ICMgKOylszsg7KWzOyDhhIzhhbLhhq47IOylszsg4YSM4YWy4YauOyApIEhBTkdVTCBTWUxMQUJMRSBKWVVECitDOTc0O0M5NzQ7MTEwQyAxMTcyIDExQUY7Qzk3NDsxMTBDIDExNzIgMTFBRjsgIyAo7KW0OyDspbQ7IOGEjOGFsuGGrzsg7KW0OyDhhIzhhbLhhq87ICkgSEFOR1VMIFNZTExBQkxFIEpZVUwKK0M5NzU7Qzk3NTsxMTBDIDExNzIgMTFCMDtDOTc1OzExMEMgMTE3MiAxMUIwOyAjICjspbU7IOyltTsg4YSM4YWy4YawOyDspbU7IOGEjOGFsuGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSllVTEcKK0M5NzY7Qzk3NjsxMTBDIDExNzIgMTFCMTtDOTc2OzExMEMgMTE3MiAxMUIxOyAjICjspbY7IOyltjsg4YSM4YWy4YaxOyDspbY7IOGEjOGFsuGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgSllVTE0KK0M5Nzc7Qzk3NzsxMTBDIDExNzIgMTFCMjtDOTc3OzExMEMgMTE3MiAxMUIyOyAjICjspbc7IOyltzsg4YSM4YWy4YayOyDspbc7IOGEjOGFsuGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSllVTEIKK0M5Nzg7Qzk3ODsxMTBDIDExNzIgMTFCMztDOTc4OzExMEMgMTE3MiAxMUIzOyAjICjspbg7IOyluDsg4YSM4YWy4YazOyDspbg7IOGEjOGFsuGGszsgKSBIQU5HVUwgU1lMTEFCTEUgSllVTFMKK0M5Nzk7Qzk3OTsxMTBDIDExNzIgMTFCNDtDOTc5OzExMEMgMTE3MiAxMUI0OyAjICjspbk7IOyluTsg4YSM4YWy4Ya0OyDspbk7IOGEjOGFsuGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgSllVTFQKK0M5N0E7Qzk3QTsxMTBDIDExNzIgMTFCNTtDOTdBOzExMEMgMTE3MiAxMUI1OyAjICjspbo7IOylujsg4YSM4YWy4Ya1OyDspbo7IOGEjOGFsuGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSllVTFAKK0M5N0I7Qzk3QjsxMTBDIDExNzIgMTFCNjtDOTdCOzExMEMgMTE3MiAxMUI2OyAjICjspbs7IOyluzsg4YSM4YWy4Ya2OyDspbs7IOGEjOGFsuGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSllVTEgKK0M5N0M7Qzk3QzsxMTBDIDExNzIgMTFCNztDOTdDOzExMEMgMTE3MiAxMUI3OyAjICjspbw7IOylvDsg4YSM4YWy4Ya3OyDspbw7IOGEjOGFsuGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgSllVTQorQzk3RDtDOTdEOzExMEMgMTE3MiAxMUI4O0M5N0Q7MTEwQyAxMTcyIDExQjg7ICMgKOylvTsg7KW9OyDhhIzhhbLhhrg7IOylvTsg4YSM4YWy4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBKWVVCCitDOTdFO0M5N0U7MTEwQyAxMTcyIDExQjk7Qzk3RTsxMTBDIDExNzIgMTFCOTsgIyAo7KW+OyDspb47IOGEjOGFsuGGuTsg7KW+OyDhhIzhhbLhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEpZVUJTCitDOTdGO0M5N0Y7MTEwQyAxMTcyIDExQkE7Qzk3RjsxMTBDIDExNzIgMTFCQTsgIyAo7KW/OyDspb87IOGEjOGFsuGGujsg7KW/OyDhhIzhhbLhhro7ICkgSEFOR1VMIFNZTExBQkxFIEpZVVMKK0M5ODA7Qzk4MDsxMTBDIDExNzIgMTFCQjtDOTgwOzExMEMgMTE3MiAxMUJCOyAjICjspoA7IOymgDsg4YSM4YWy4Ya7OyDspoA7IOGEjOGFsuGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSllVU1MKK0M5ODE7Qzk4MTsxMTBDIDExNzIgMTFCQztDOTgxOzExMEMgMTE3MiAxMUJDOyAjICjspoE7IOymgTsg4YSM4YWy4Ya8OyDspoE7IOGEjOGFsuGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSllVTkcKK0M5ODI7Qzk4MjsxMTBDIDExNzIgMTFCRDtDOTgyOzExMEMgMTE3MiAxMUJEOyAjICjspoI7IOymgjsg4YSM4YWy4Ya9OyDspoI7IOGEjOGFsuGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgSllVSgorQzk4MztDOTgzOzExMEMgMTE3MiAxMUJFO0M5ODM7MTEwQyAxMTcyIDExQkU7ICMgKOymgzsg7KaDOyDhhIzhhbLhhr47IOymgzsg4YSM4YWy4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBKWVVDCitDOTg0O0M5ODQ7MTEwQyAxMTcyIDExQkY7Qzk4NDsxMTBDIDExNzIgMTFCRjsgIyAo7KaEOyDspoQ7IOGEjOGFsuGGvzsg7KaEOyDhhIzhhbLhhr87ICkgSEFOR1VMIFNZTExBQkxFIEpZVUsKK0M5ODU7Qzk4NTsxMTBDIDExNzIgMTFDMDtDOTg1OzExMEMgMTE3MiAxMUMwOyAjICjspoU7IOymhTsg4YSM4YWy4YeAOyDspoU7IOGEjOGFsuGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgSllVVAorQzk4NjtDOTg2OzExMEMgMTE3MiAxMUMxO0M5ODY7MTEwQyAxMTcyIDExQzE7ICMgKOymhjsg7KaGOyDhhIzhhbLhh4E7IOymhjsg4YSM4YWy4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBKWVVQCitDOTg3O0M5ODc7MTEwQyAxMTcyIDExQzI7Qzk4NzsxMTBDIDExNzIgMTFDMjsgIyAo7KaHOyDspoc7IOGEjOGFsuGHgjsg7KaHOyDhhIzhhbLhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEpZVUgKK0M5ODg7Qzk4ODsxMTBDIDExNzM7Qzk4ODsxMTBDIDExNzM7ICMgKOymiDsg7KaIOyDhhIzhhbM7IOymiDsg4YSM4YWzOyApIEhBTkdVTCBTWUxMQUJMRSBKRVUKK0M5ODk7Qzk4OTsxMTBDIDExNzMgMTFBODtDOTg5OzExMEMgMTE3MyAxMUE4OyAjICjspok7IOymiTsg4YSM4YWz4YaoOyDspok7IOGEjOGFs+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSkVVRworQzk4QTtDOThBOzExMEMgMTE3MyAxMUE5O0M5OEE7MTEwQyAxMTczIDExQTk7ICMgKOymijsg7KaKOyDhhIzhhbPhhqk7IOymijsg4YSM4YWz4YapOyApIEhBTkdVTCBTWUxMQUJMRSBKRVVHRworQzk4QjtDOThCOzExMEMgMTE3MyAxMUFBO0M5OEI7MTEwQyAxMTczIDExQUE7ICMgKOymizsg7KaLOyDhhIzhhbPhhqo7IOymizsg4YSM4YWz4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBKRVVHUworQzk4QztDOThDOzExMEMgMTE3MyAxMUFCO0M5OEM7MTEwQyAxMTczIDExQUI7ICMgKOymjDsg7KaMOyDhhIzhhbPhhqs7IOymjDsg4YSM4YWz4YarOyApIEhBTkdVTCBTWUxMQUJMRSBKRVVOCitDOThEO0M5OEQ7MTEwQyAxMTczIDExQUM7Qzk4RDsxMTBDIDExNzMgMTFBQzsgIyAo7KaNOyDspo07IOGEjOGFs+GGrDsg7KaNOyDhhIzhhbPhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEpFVU5KCitDOThFO0M5OEU7MTEwQyAxMTczIDExQUQ7Qzk4RTsxMTBDIDExNzMgMTFBRDsgIyAo7KaOOyDspo47IOGEjOGFs+GGrTsg7KaOOyDhhIzhhbPhhq07ICkgSEFOR1VMIFNZTExBQkxFIEpFVU5ICitDOThGO0M5OEY7MTEwQyAxMTczIDExQUU7Qzk4RjsxMTBDIDExNzMgMTFBRTsgIyAo7KaPOyDspo87IOGEjOGFs+GGrjsg7KaPOyDhhIzhhbPhhq47ICkgSEFOR1VMIFNZTExBQkxFIEpFVUQKK0M5OTA7Qzk5MDsxMTBDIDExNzMgMTFBRjtDOTkwOzExMEMgMTE3MyAxMUFGOyAjICjsppA7IOymkDsg4YSM4YWz4YavOyDsppA7IOGEjOGFs+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgSkVVTAorQzk5MTtDOTkxOzExMEMgMTE3MyAxMUIwO0M5OTE7MTEwQyAxMTczIDExQjA7ICMgKOymkTsg7KaROyDhhIzhhbPhhrA7IOymkTsg4YSM4YWz4YawOyApIEhBTkdVTCBTWUxMQUJMRSBKRVVMRworQzk5MjtDOTkyOzExMEMgMTE3MyAxMUIxO0M5OTI7MTEwQyAxMTczIDExQjE7ICMgKOymkjsg7KaSOyDhhIzhhbPhhrE7IOymkjsg4YSM4YWz4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKRVVMTQorQzk5MztDOTkzOzExMEMgMTE3MyAxMUIyO0M5OTM7MTEwQyAxMTczIDExQjI7ICMgKOymkzsg7KaTOyDhhIzhhbPhhrI7IOymkzsg4YSM4YWz4YayOyApIEhBTkdVTCBTWUxMQUJMRSBKRVVMQgorQzk5NDtDOTk0OzExMEMgMTE3MyAxMUIzO0M5OTQ7MTEwQyAxMTczIDExQjM7ICMgKOymlDsg7KaUOyDhhIzhhbPhhrM7IOymlDsg4YSM4YWz4YazOyApIEhBTkdVTCBTWUxMQUJMRSBKRVVMUworQzk5NTtDOTk1OzExMEMgMTE3MyAxMUI0O0M5OTU7MTEwQyAxMTczIDExQjQ7ICMgKOymlTsg7KaVOyDhhIzhhbPhhrQ7IOymlTsg4YSM4YWz4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKRVVMVAorQzk5NjtDOTk2OzExMEMgMTE3MyAxMUI1O0M5OTY7MTEwQyAxMTczIDExQjU7ICMgKOymljsg7KaWOyDhhIzhhbPhhrU7IOymljsg4YSM4YWz4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBKRVVMUAorQzk5NztDOTk3OzExMEMgMTE3MyAxMUI2O0M5OTc7MTEwQyAxMTczIDExQjY7ICMgKOymlzsg7KaXOyDhhIzhhbPhhrY7IOymlzsg4YSM4YWz4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBKRVVMSAorQzk5ODtDOTk4OzExMEMgMTE3MyAxMUI3O0M5OTg7MTEwQyAxMTczIDExQjc7ICMgKOymmDsg7KaYOyDhhIzhhbPhhrc7IOymmDsg4YSM4YWz4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKRVVNCitDOTk5O0M5OTk7MTEwQyAxMTczIDExQjg7Qzk5OTsxMTBDIDExNzMgMTFCODsgIyAo7KaZOyDsppk7IOGEjOGFs+GGuDsg7KaZOyDhhIzhhbPhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEpFVUIKK0M5OUE7Qzk5QTsxMTBDIDExNzMgMTFCOTtDOTlBOzExMEMgMTE3MyAxMUI5OyAjICjsppo7IOymmjsg4YSM4YWz4Ya5OyDsppo7IOGEjOGFs+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgSkVVQlMKK0M5OUI7Qzk5QjsxMTBDIDExNzMgMTFCQTtDOTlCOzExMEMgMTE3MyAxMUJBOyAjICjspps7IOymmzsg4YSM4YWz4Ya6OyDspps7IOGEjOGFs+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgSkVVUworQzk5QztDOTlDOzExMEMgMTE3MyAxMUJCO0M5OUM7MTEwQyAxMTczIDExQkI7ICMgKOymnDsg7KacOyDhhIzhhbPhhrs7IOymnDsg4YSM4YWz4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBKRVVTUworQzk5RDtDOTlEOzExMEMgMTE3MyAxMUJDO0M5OUQ7MTEwQyAxMTczIDExQkM7ICMgKOymnTsg7KadOyDhhIzhhbPhhrw7IOymnTsg4YSM4YWz4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBKRVVORworQzk5RTtDOTlFOzExMEMgMTE3MyAxMUJEO0M5OUU7MTEwQyAxMTczIDExQkQ7ICMgKOymnjsg7KaeOyDhhIzhhbPhhr07IOymnjsg4YSM4YWz4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKRVVKCitDOTlGO0M5OUY7MTEwQyAxMTczIDExQkU7Qzk5RjsxMTBDIDExNzMgMTFCRTsgIyAo7KafOyDspp87IOGEjOGFs+GGvjsg7KafOyDhhIzhhbPhhr47ICkgSEFOR1VMIFNZTExBQkxFIEpFVUMKK0M5QTA7QzlBMDsxMTBDIDExNzMgMTFCRjtDOUEwOzExMEMgMTE3MyAxMUJGOyAjICjspqA7IOymoDsg4YSM4YWz4Ya/OyDspqA7IOGEjOGFs+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgSkVVSworQzlBMTtDOUExOzExMEMgMTE3MyAxMUMwO0M5QTE7MTEwQyAxMTczIDExQzA7ICMgKOymoTsg7KahOyDhhIzhhbPhh4A7IOymoTsg4YSM4YWz4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKRVVUCitDOUEyO0M5QTI7MTEwQyAxMTczIDExQzE7QzlBMjsxMTBDIDExNzMgMTFDMTsgIyAo7KaiOyDspqI7IOGEjOGFs+GHgTsg7KaiOyDhhIzhhbPhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEpFVVAKK0M5QTM7QzlBMzsxMTBDIDExNzMgMTFDMjtDOUEzOzExMEMgMTE3MyAxMUMyOyAjICjspqM7IOymozsg4YSM4YWz4YeCOyDspqM7IOGEjOGFs+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgSkVVSAorQzlBNDtDOUE0OzExMEMgMTE3NDtDOUE0OzExMEMgMTE3NDsgIyAo7KakOyDspqQ7IOGEjOGFtDsg7KakOyDhhIzhhbQ7ICkgSEFOR1VMIFNZTExBQkxFIEpZSQorQzlBNTtDOUE1OzExMEMgMTE3NCAxMUE4O0M5QTU7MTEwQyAxMTc0IDExQTg7ICMgKOympTsg7KalOyDhhIzhhbThhqg7IOympTsg4YSM4YW04YaoOyApIEhBTkdVTCBTWUxMQUJMRSBKWUlHCitDOUE2O0M5QTY7MTEwQyAxMTc0IDExQTk7QzlBNjsxMTBDIDExNzQgMTFBOTsgIyAo7KamOyDspqY7IOGEjOGFtOGGqTsg7KamOyDhhIzhhbThhqk7ICkgSEFOR1VMIFNZTExBQkxFIEpZSUdHCitDOUE3O0M5QTc7MTEwQyAxMTc0IDExQUE7QzlBNzsxMTBDIDExNzQgMTFBQTsgIyAo7KanOyDspqc7IOGEjOGFtOGGqjsg7KanOyDhhIzhhbThhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpZSUdTCitDOUE4O0M5QTg7MTEwQyAxMTc0IDExQUI7QzlBODsxMTBDIDExNzQgMTFBQjsgIyAo7KaoOyDspqg7IOGEjOGFtOGGqzsg7KaoOyDhhIzhhbThhqs7ICkgSEFOR1VMIFNZTExBQkxFIEpZSU4KK0M5QTk7QzlBOTsxMTBDIDExNzQgMTFBQztDOUE5OzExMEMgMTE3NCAxMUFDOyAjICjspqk7IOymqTsg4YSM4YW04YasOyDspqk7IOGEjOGFtOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSllJTkoKK0M5QUE7QzlBQTsxMTBDIDExNzQgMTFBRDtDOUFBOzExMEMgMTE3NCAxMUFEOyAjICjspqo7IOymqjsg4YSM4YW04YatOyDspqo7IOGEjOGFtOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSllJTkgKK0M5QUI7QzlBQjsxMTBDIDExNzQgMTFBRTtDOUFCOzExMEMgMTE3NCAxMUFFOyAjICjspqs7IOymqzsg4YSM4YW04YauOyDspqs7IOGEjOGFtOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSllJRAorQzlBQztDOUFDOzExMEMgMTE3NCAxMUFGO0M5QUM7MTEwQyAxMTc0IDExQUY7ICMgKOymrDsg7KasOyDhhIzhhbThhq87IOymrDsg4YSM4YW04YavOyApIEhBTkdVTCBTWUxMQUJMRSBKWUlMCitDOUFEO0M5QUQ7MTEwQyAxMTc0IDExQjA7QzlBRDsxMTBDIDExNzQgMTFCMDsgIyAo7KatOyDspq07IOGEjOGFtOGGsDsg7KatOyDhhIzhhbThhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpZSUxHCitDOUFFO0M5QUU7MTEwQyAxMTc0IDExQjE7QzlBRTsxMTBDIDExNzQgMTFCMTsgIyAo7KauOyDspq47IOGEjOGFtOGGsTsg7KauOyDhhIzhhbThhrE7ICkgSEFOR1VMIFNZTExBQkxFIEpZSUxNCitDOUFGO0M5QUY7MTEwQyAxMTc0IDExQjI7QzlBRjsxMTBDIDExNzQgMTFCMjsgIyAo7KavOyDspq87IOGEjOGFtOGGsjsg7KavOyDhhIzhhbThhrI7ICkgSEFOR1VMIFNZTExBQkxFIEpZSUxCCitDOUIwO0M5QjA7MTEwQyAxMTc0IDExQjM7QzlCMDsxMTBDIDExNzQgMTFCMzsgIyAo7KawOyDsprA7IOGEjOGFtOGGszsg7KawOyDhhIzhhbThhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpZSUxTCitDOUIxO0M5QjE7MTEwQyAxMTc0IDExQjQ7QzlCMTsxMTBDIDExNzQgMTFCNDsgIyAo7KaxOyDsprE7IOGEjOGFtOGGtDsg7KaxOyDhhIzhhbThhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEpZSUxUCitDOUIyO0M5QjI7MTEwQyAxMTc0IDExQjU7QzlCMjsxMTBDIDExNzQgMTFCNTsgIyAo7KayOyDsprI7IOGEjOGFtOGGtTsg7KayOyDhhIzhhbThhrU7ICkgSEFOR1VMIFNZTExBQkxFIEpZSUxQCitDOUIzO0M5QjM7MTEwQyAxMTc0IDExQjY7QzlCMzsxMTBDIDExNzQgMTFCNjsgIyAo7KazOyDsprM7IOGEjOGFtOGGtjsg7KazOyDhhIzhhbThhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpZSUxICitDOUI0O0M5QjQ7MTEwQyAxMTc0IDExQjc7QzlCNDsxMTBDIDExNzQgMTFCNzsgIyAo7Ka0OyDsprQ7IOGEjOGFtOGGtzsg7Ka0OyDhhIzhhbThhrc7ICkgSEFOR1VMIFNZTExBQkxFIEpZSU0KK0M5QjU7QzlCNTsxMTBDIDExNzQgMTFCODtDOUI1OzExMEMgMTE3NCAxMUI4OyAjICjsprU7IOymtTsg4YSM4YW04Ya4OyDsprU7IOGEjOGFtOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSllJQgorQzlCNjtDOUI2OzExMEMgMTE3NCAxMUI5O0M5QjY7MTEwQyAxMTc0IDExQjk7ICMgKOymtjsg7Ka2OyDhhIzhhbThhrk7IOymtjsg4YSM4YW04Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKWUlCUworQzlCNztDOUI3OzExMEMgMTE3NCAxMUJBO0M5Qjc7MTEwQyAxMTc0IDExQkE7ICMgKOymtzsg7Ka3OyDhhIzhhbThhro7IOymtzsg4YSM4YW04Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBKWUlTCitDOUI4O0M5Qjg7MTEwQyAxMTc0IDExQkI7QzlCODsxMTBDIDExNzQgMTFCQjsgIyAo7Ka4OyDsprg7IOGEjOGFtOGGuzsg7Ka4OyDhhIzhhbThhrs7ICkgSEFOR1VMIFNZTExBQkxFIEpZSVNTCitDOUI5O0M5Qjk7MTEwQyAxMTc0IDExQkM7QzlCOTsxMTBDIDExNzQgMTFCQzsgIyAo7Ka5OyDsprk7IOGEjOGFtOGGvDsg7Ka5OyDhhIzhhbThhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpZSU5HCitDOUJBO0M5QkE7MTEwQyAxMTc0IDExQkQ7QzlCQTsxMTBDIDExNzQgMTFCRDsgIyAo7Ka6OyDspro7IOGEjOGFtOGGvTsg7Ka6OyDhhIzhhbThhr07ICkgSEFOR1VMIFNZTExBQkxFIEpZSUoKK0M5QkI7QzlCQjsxMTBDIDExNzQgMTFCRTtDOUJCOzExMEMgMTE3NCAxMUJFOyAjICjsprs7IOymuzsg4YSM4YW04Ya+OyDsprs7IOGEjOGFtOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSllJQworQzlCQztDOUJDOzExMEMgMTE3NCAxMUJGO0M5QkM7MTEwQyAxMTc0IDExQkY7ICMgKOymvDsg7Ka8OyDhhIzhhbThhr87IOymvDsg4YSM4YW04Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKWUlLCitDOUJEO0M5QkQ7MTEwQyAxMTc0IDExQzA7QzlCRDsxMTBDIDExNzQgMTFDMDsgIyAo7Ka9OyDspr07IOGEjOGFtOGHgDsg7Ka9OyDhhIzhhbThh4A7ICkgSEFOR1VMIFNZTExBQkxFIEpZSVQKK0M5QkU7QzlCRTsxMTBDIDExNzQgMTFDMTtDOUJFOzExMEMgMTE3NCAxMUMxOyAjICjspr47IOymvjsg4YSM4YW04YeBOyDspr47IOGEjOGFtOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSllJUAorQzlCRjtDOUJGOzExMEMgMTE3NCAxMUMyO0M5QkY7MTEwQyAxMTc0IDExQzI7ICMgKOymvzsg7Ka/OyDhhIzhhbThh4I7IOymvzsg4YSM4YW04YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKWUlICitDOUMwO0M5QzA7MTEwQyAxMTc1O0M5QzA7MTEwQyAxMTc1OyAjICjsp4A7IOyngDsg4YSM4YW1OyDsp4A7IOGEjOGFtTsgKSBIQU5HVUwgU1lMTEFCTEUgSkkKK0M5QzE7QzlDMTsxMTBDIDExNzUgMTFBODtDOUMxOzExMEMgMTE3NSAxMUE4OyAjICjsp4E7IOyngTsg4YSM4YW14YaoOyDsp4E7IOGEjOGFteGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSklHCitDOUMyO0M5QzI7MTEwQyAxMTc1IDExQTk7QzlDMjsxMTBDIDExNzUgMTFBOTsgIyAo7KeCOyDsp4I7IOGEjOGFteGGqTsg7KeCOyDhhIzhhbXhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEpJR0cKK0M5QzM7QzlDMzsxMTBDIDExNzUgMTFBQTtDOUMzOzExMEMgMTE3NSAxMUFBOyAjICjsp4M7IOyngzsg4YSM4YW14YaqOyDsp4M7IOGEjOGFteGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSklHUworQzlDNDtDOUM0OzExMEMgMTE3NSAxMUFCO0M5QzQ7MTEwQyAxMTc1IDExQUI7ICMgKOynhDsg7KeEOyDhhIzhhbXhhqs7IOynhDsg4YSM4YW14YarOyApIEhBTkdVTCBTWUxMQUJMRSBKSU4KK0M5QzU7QzlDNTsxMTBDIDExNzUgMTFBQztDOUM1OzExMEMgMTE3NSAxMUFDOyAjICjsp4U7IOynhTsg4YSM4YW14YasOyDsp4U7IOGEjOGFteGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSklOSgorQzlDNjtDOUM2OzExMEMgMTE3NSAxMUFEO0M5QzY7MTEwQyAxMTc1IDExQUQ7ICMgKOynhjsg7KeGOyDhhIzhhbXhhq07IOynhjsg4YSM4YW14YatOyApIEhBTkdVTCBTWUxMQUJMRSBKSU5ICitDOUM3O0M5Qzc7MTEwQyAxMTc1IDExQUU7QzlDNzsxMTBDIDExNzUgMTFBRTsgIyAo7KeHOyDsp4c7IOGEjOGFteGGrjsg7KeHOyDhhIzhhbXhhq47ICkgSEFOR1VMIFNZTExBQkxFIEpJRAorQzlDODtDOUM4OzExMEMgMTE3NSAxMUFGO0M5Qzg7MTEwQyAxMTc1IDExQUY7ICMgKOyniDsg7KeIOyDhhIzhhbXhhq87IOyniDsg4YSM4YW14YavOyApIEhBTkdVTCBTWUxMQUJMRSBKSUwKK0M5Qzk7QzlDOTsxMTBDIDExNzUgMTFCMDtDOUM5OzExMEMgMTE3NSAxMUIwOyAjICjsp4k7IOyniTsg4YSM4YW14YawOyDsp4k7IOGEjOGFteGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSklMRworQzlDQTtDOUNBOzExMEMgMTE3NSAxMUIxO0M5Q0E7MTEwQyAxMTc1IDExQjE7ICMgKOynijsg7KeKOyDhhIzhhbXhhrE7IOynijsg4YSM4YW14YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKSUxNCitDOUNCO0M5Q0I7MTEwQyAxMTc1IDExQjI7QzlDQjsxMTBDIDExNzUgMTFCMjsgIyAo7KeLOyDsp4s7IOGEjOGFteGGsjsg7KeLOyDhhIzhhbXhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEpJTEIKK0M5Q0M7QzlDQzsxMTBDIDExNzUgMTFCMztDOUNDOzExMEMgMTE3NSAxMUIzOyAjICjsp4w7IOynjDsg4YSM4YW14YazOyDsp4w7IOGEjOGFteGGszsgKSBIQU5HVUwgU1lMTEFCTEUgSklMUworQzlDRDtDOUNEOzExMEMgMTE3NSAxMUI0O0M5Q0Q7MTEwQyAxMTc1IDExQjQ7ICMgKOynjTsg7KeNOyDhhIzhhbXhhrQ7IOynjTsg4YSM4YW14Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKSUxUCitDOUNFO0M5Q0U7MTEwQyAxMTc1IDExQjU7QzlDRTsxMTBDIDExNzUgMTFCNTsgIyAo7KeOOyDsp447IOGEjOGFteGGtTsg7KeOOyDhhIzhhbXhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEpJTFAKK0M5Q0Y7QzlDRjsxMTBDIDExNzUgMTFCNjtDOUNGOzExMEMgMTE3NSAxMUI2OyAjICjsp487IOynjzsg4YSM4YW14Ya2OyDsp487IOGEjOGFteGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSklMSAorQzlEMDtDOUQwOzExMEMgMTE3NSAxMUI3O0M5RDA7MTEwQyAxMTc1IDExQjc7ICMgKOynkDsg7KeQOyDhhIzhhbXhhrc7IOynkDsg4YSM4YW14Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKSU0KK0M5RDE7QzlEMTsxMTBDIDExNzUgMTFCODtDOUQxOzExMEMgMTE3NSAxMUI4OyAjICjsp5E7IOynkTsg4YSM4YW14Ya4OyDsp5E7IOGEjOGFteGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSklCCitDOUQyO0M5RDI7MTEwQyAxMTc1IDExQjk7QzlEMjsxMTBDIDExNzUgMTFCOTsgIyAo7KeSOyDsp5I7IOGEjOGFteGGuTsg7KeSOyDhhIzhhbXhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEpJQlMKK0M5RDM7QzlEMzsxMTBDIDExNzUgMTFCQTtDOUQzOzExMEMgMTE3NSAxMUJBOyAjICjsp5M7IOynkzsg4YSM4YW14Ya6OyDsp5M7IOGEjOGFteGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSklTCitDOUQ0O0M5RDQ7MTEwQyAxMTc1IDExQkI7QzlENDsxMTBDIDExNzUgMTFCQjsgIyAo7KeUOyDsp5Q7IOGEjOGFteGGuzsg7KeUOyDhhIzhhbXhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEpJU1MKK0M5RDU7QzlENTsxMTBDIDExNzUgMTFCQztDOUQ1OzExMEMgMTE3NSAxMUJDOyAjICjsp5U7IOynlTsg4YSM4YW14Ya8OyDsp5U7IOGEjOGFteGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSklORworQzlENjtDOUQ2OzExMEMgMTE3NSAxMUJEO0M5RDY7MTEwQyAxMTc1IDExQkQ7ICMgKOynljsg7KeWOyDhhIzhhbXhhr07IOynljsg4YSM4YW14Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKSUoKK0M5RDc7QzlENzsxMTBDIDExNzUgMTFCRTtDOUQ3OzExMEMgMTE3NSAxMUJFOyAjICjsp5c7IOynlzsg4YSM4YW14Ya+OyDsp5c7IOGEjOGFteGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSklDCitDOUQ4O0M5RDg7MTEwQyAxMTc1IDExQkY7QzlEODsxMTBDIDExNzUgMTFCRjsgIyAo7KeYOyDsp5g7IOGEjOGFteGGvzsg7KeYOyDhhIzhhbXhhr87ICkgSEFOR1VMIFNZTExBQkxFIEpJSworQzlEOTtDOUQ5OzExMEMgMTE3NSAxMUMwO0M5RDk7MTEwQyAxMTc1IDExQzA7ICMgKOynmTsg7KeZOyDhhIzhhbXhh4A7IOynmTsg4YSM4YW14YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKSVQKK0M5REE7QzlEQTsxMTBDIDExNzUgMTFDMTtDOURBOzExMEMgMTE3NSAxMUMxOyAjICjsp5o7IOynmjsg4YSM4YW14YeBOyDsp5o7IOGEjOGFteGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSklQCitDOURCO0M5REI7MTEwQyAxMTc1IDExQzI7QzlEQjsxMTBDIDExNzUgMTFDMjsgIyAo7KebOyDsp5s7IOGEjOGFteGHgjsg7KebOyDhhIzhhbXhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEpJSAorQzlEQztDOURDOzExMEQgMTE2MTtDOURDOzExMEQgMTE2MTsgIyAo7KecOyDsp5w7IOGEjeGFoTsg7KecOyDhhI3hhaE7ICkgSEFOR1VMIFNZTExBQkxFIEpKQQorQzlERDtDOUREOzExMEQgMTE2MSAxMUE4O0M5REQ7MTEwRCAxMTYxIDExQTg7ICMgKOynnTsg7KedOyDhhI3hhaHhhqg7IOynnTsg4YSN4YWh4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBKSkFHCitDOURFO0M5REU7MTEwRCAxMTYxIDExQTk7QzlERTsxMTBEIDExNjEgMTFBOTsgIyAo7KeeOyDsp547IOGEjeGFoeGGqTsg7KeeOyDhhI3hhaHhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEpKQUdHCitDOURGO0M5REY7MTEwRCAxMTYxIDExQUE7QzlERjsxMTBEIDExNjEgMTFBQTsgIyAo7KefOyDsp587IOGEjeGFoeGGqjsg7KefOyDhhI3hhaHhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpKQUdTCitDOUUwO0M5RTA7MTEwRCAxMTYxIDExQUI7QzlFMDsxMTBEIDExNjEgMTFBQjsgIyAo7KegOyDsp6A7IOGEjeGFoeGGqzsg7KegOyDhhI3hhaHhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEpKQU4KK0M5RTE7QzlFMTsxMTBEIDExNjEgMTFBQztDOUUxOzExMEQgMTE2MSAxMUFDOyAjICjsp6E7IOynoTsg4YSN4YWh4YasOyDsp6E7IOGEjeGFoeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpBTkoKK0M5RTI7QzlFMjsxMTBEIDExNjEgMTFBRDtDOUUyOzExMEQgMTE2MSAxMUFEOyAjICjsp6I7IOynojsg4YSN4YWh4YatOyDsp6I7IOGEjeGFoeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpBTkgKK0M5RTM7QzlFMzsxMTBEIDExNjEgMTFBRTtDOUUzOzExMEQgMTE2MSAxMUFFOyAjICjsp6M7IOynozsg4YSN4YWh4YauOyDsp6M7IOGEjeGFoeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpBRAorQzlFNDtDOUU0OzExMEQgMTE2MSAxMUFGO0M5RTQ7MTEwRCAxMTYxIDExQUY7ICMgKOynpDsg7KekOyDhhI3hhaHhhq87IOynpDsg4YSN4YWh4YavOyApIEhBTkdVTCBTWUxMQUJMRSBKSkFMCitDOUU1O0M5RTU7MTEwRCAxMTYxIDExQjA7QzlFNTsxMTBEIDExNjEgMTFCMDsgIyAo7KelOyDsp6U7IOGEjeGFoeGGsDsg7KelOyDhhI3hhaHhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpKQUxHCitDOUU2O0M5RTY7MTEwRCAxMTYxIDExQjE7QzlFNjsxMTBEIDExNjEgMTFCMTsgIyAo7KemOyDsp6Y7IOGEjeGFoeGGsTsg7KemOyDhhI3hhaHhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEpKQUxNCitDOUU3O0M5RTc7MTEwRCAxMTYxIDExQjI7QzlFNzsxMTBEIDExNjEgMTFCMjsgIyAo7KenOyDsp6c7IOGEjeGFoeGGsjsg7KenOyDhhI3hhaHhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEpKQUxCCitDOUU4O0M5RTg7MTEwRCAxMTYxIDExQjM7QzlFODsxMTBEIDExNjEgMTFCMzsgIyAo7KeoOyDsp6g7IOGEjeGFoeGGszsg7KeoOyDhhI3hhaHhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpKQUxTCitDOUU5O0M5RTk7MTEwRCAxMTYxIDExQjQ7QzlFOTsxMTBEIDExNjEgMTFCNDsgIyAo7KepOyDsp6k7IOGEjeGFoeGGtDsg7KepOyDhhI3hhaHhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEpKQUxUCitDOUVBO0M5RUE7MTEwRCAxMTYxIDExQjU7QzlFQTsxMTBEIDExNjEgMTFCNTsgIyAo7KeqOyDsp6o7IOGEjeGFoeGGtTsg7KeqOyDhhI3hhaHhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEpKQUxQCitDOUVCO0M5RUI7MTEwRCAxMTYxIDExQjY7QzlFQjsxMTBEIDExNjEgMTFCNjsgIyAo7KerOyDsp6s7IOGEjeGFoeGGtjsg7KerOyDhhI3hhaHhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpKQUxICitDOUVDO0M5RUM7MTEwRCAxMTYxIDExQjc7QzlFQzsxMTBEIDExNjEgMTFCNzsgIyAo7KesOyDsp6w7IOGEjeGFoeGGtzsg7KesOyDhhI3hhaHhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEpKQU0KK0M5RUQ7QzlFRDsxMTBEIDExNjEgMTFCODtDOUVEOzExMEQgMTE2MSAxMUI4OyAjICjsp607IOynrTsg4YSN4YWh4Ya4OyDsp607IOGEjeGFoeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpBQgorQzlFRTtDOUVFOzExMEQgMTE2MSAxMUI5O0M5RUU7MTEwRCAxMTYxIDExQjk7ICMgKOynrjsg7KeuOyDhhI3hhaHhhrk7IOynrjsg4YSN4YWh4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKSkFCUworQzlFRjtDOUVGOzExMEQgMTE2MSAxMUJBO0M5RUY7MTEwRCAxMTYxIDExQkE7ICMgKOynrzsg7KevOyDhhI3hhaHhhro7IOynrzsg4YSN4YWh4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBKSkFTCitDOUYwO0M5RjA7MTEwRCAxMTYxIDExQkI7QzlGMDsxMTBEIDExNjEgMTFCQjsgIyAo7KewOyDsp7A7IOGEjeGFoeGGuzsg7KewOyDhhI3hhaHhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEpKQVNTCitDOUYxO0M5RjE7MTEwRCAxMTYxIDExQkM7QzlGMTsxMTBEIDExNjEgMTFCQzsgIyAo7KexOyDsp7E7IOGEjeGFoeGGvDsg7KexOyDhhI3hhaHhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpKQU5HCitDOUYyO0M5RjI7MTEwRCAxMTYxIDExQkQ7QzlGMjsxMTBEIDExNjEgMTFCRDsgIyAo7KeyOyDsp7I7IOGEjeGFoeGGvTsg7KeyOyDhhI3hhaHhhr07ICkgSEFOR1VMIFNZTExBQkxFIEpKQUoKK0M5RjM7QzlGMzsxMTBEIDExNjEgMTFCRTtDOUYzOzExMEQgMTE2MSAxMUJFOyAjICjsp7M7IOynszsg4YSN4YWh4Ya+OyDsp7M7IOGEjeGFoeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpBQworQzlGNDtDOUY0OzExMEQgMTE2MSAxMUJGO0M5RjQ7MTEwRCAxMTYxIDExQkY7ICMgKOyntDsg7Ke0OyDhhI3hhaHhhr87IOyntDsg4YSN4YWh4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKSkFLCitDOUY1O0M5RjU7MTEwRCAxMTYxIDExQzA7QzlGNTsxMTBEIDExNjEgMTFDMDsgIyAo7Ke1OyDsp7U7IOGEjeGFoeGHgDsg7Ke1OyDhhI3hhaHhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEpKQVQKK0M5RjY7QzlGNjsxMTBEIDExNjEgMTFDMTtDOUY2OzExMEQgMTE2MSAxMUMxOyAjICjsp7Y7IOyntjsg4YSN4YWh4YeBOyDsp7Y7IOGEjeGFoeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpBUAorQzlGNztDOUY3OzExMEQgMTE2MSAxMUMyO0M5Rjc7MTEwRCAxMTYxIDExQzI7ICMgKOyntzsg7Ke3OyDhhI3hhaHhh4I7IOyntzsg4YSN4YWh4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKSkFICitDOUY4O0M5Rjg7MTEwRCAxMTYyO0M5Rjg7MTEwRCAxMTYyOyAjICjsp7g7IOynuDsg4YSN4YWiOyDsp7g7IOGEjeGFojsgKSBIQU5HVUwgU1lMTEFCTEUgSkpBRQorQzlGOTtDOUY5OzExMEQgMTE2MiAxMUE4O0M5Rjk7MTEwRCAxMTYyIDExQTg7ICMgKOynuTsg7Ke5OyDhhI3hhaLhhqg7IOynuTsg4YSN4YWi4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBKSkFFRworQzlGQTtDOUZBOzExMEQgMTE2MiAxMUE5O0M5RkE7MTEwRCAxMTYyIDExQTk7ICMgKOynujsg7Ke6OyDhhI3hhaLhhqk7IOynujsg4YSN4YWi4YapOyApIEhBTkdVTCBTWUxMQUJMRSBKSkFFR0cKK0M5RkI7QzlGQjsxMTBEIDExNjIgMTFBQTtDOUZCOzExMEQgMTE2MiAxMUFBOyAjICjsp7s7IOynuzsg4YSN4YWi4YaqOyDsp7s7IOGEjeGFouGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpBRUdTCitDOUZDO0M5RkM7MTEwRCAxMTYyIDExQUI7QzlGQzsxMTBEIDExNjIgMTFBQjsgIyAo7Ke8OyDsp7w7IOGEjeGFouGGqzsg7Ke8OyDhhI3hhaLhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEpKQUVOCitDOUZEO0M5RkQ7MTEwRCAxMTYyIDExQUM7QzlGRDsxMTBEIDExNjIgMTFBQzsgIyAo7Ke9OyDsp707IOGEjeGFouGGrDsg7Ke9OyDhhI3hhaLhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEpKQUVOSgorQzlGRTtDOUZFOzExMEQgMTE2MiAxMUFEO0M5RkU7MTEwRCAxMTYyIDExQUQ7ICMgKOynvjsg7Ke+OyDhhI3hhaLhhq07IOynvjsg4YSN4YWi4YatOyApIEhBTkdVTCBTWUxMQUJMRSBKSkFFTkgKK0M5RkY7QzlGRjsxMTBEIDExNjIgMTFBRTtDOUZGOzExMEQgMTE2MiAxMUFFOyAjICjsp787IOynvzsg4YSN4YWi4YauOyDsp787IOGEjeGFouGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpBRUQKK0NBMDA7Q0EwMDsxMTBEIDExNjIgMTFBRjtDQTAwOzExMEQgMTE2MiAxMUFGOyAjICjsqIA7IOyogDsg4YSN4YWi4YavOyDsqIA7IOGEjeGFouGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgSkpBRUwKK0NBMDE7Q0EwMTsxMTBEIDExNjIgMTFCMDtDQTAxOzExMEQgMTE2MiAxMUIwOyAjICjsqIE7IOyogTsg4YSN4YWi4YawOyDsqIE7IOGEjeGFouGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpBRUxHCitDQTAyO0NBMDI7MTEwRCAxMTYyIDExQjE7Q0EwMjsxMTBEIDExNjIgMTFCMTsgIyAo7KiCOyDsqII7IOGEjeGFouGGsTsg7KiCOyDhhI3hhaLhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEpKQUVMTQorQ0EwMztDQTAzOzExMEQgMTE2MiAxMUIyO0NBMDM7MTEwRCAxMTYyIDExQjI7ICMgKOyogzsg7KiDOyDhhI3hhaLhhrI7IOyogzsg4YSN4YWi4YayOyApIEhBTkdVTCBTWUxMQUJMRSBKSkFFTEIKK0NBMDQ7Q0EwNDsxMTBEIDExNjIgMTFCMztDQTA0OzExMEQgMTE2MiAxMUIzOyAjICjsqIQ7IOyohDsg4YSN4YWi4YazOyDsqIQ7IOGEjeGFouGGszsgKSBIQU5HVUwgU1lMTEFCTEUgSkpBRUxTCitDQTA1O0NBMDU7MTEwRCAxMTYyIDExQjQ7Q0EwNTsxMTBEIDExNjIgMTFCNDsgIyAo7KiFOyDsqIU7IOGEjeGFouGGtDsg7KiFOyDhhI3hhaLhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEpKQUVMVAorQ0EwNjtDQTA2OzExMEQgMTE2MiAxMUI1O0NBMDY7MTEwRCAxMTYyIDExQjU7ICMgKOyohjsg7KiGOyDhhI3hhaLhhrU7IOyohjsg4YSN4YWi4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBKSkFFTFAKK0NBMDc7Q0EwNzsxMTBEIDExNjIgMTFCNjtDQTA3OzExMEQgMTE2MiAxMUI2OyAjICjsqIc7IOyohzsg4YSN4YWi4Ya2OyDsqIc7IOGEjeGFouGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpBRUxICitDQTA4O0NBMDg7MTEwRCAxMTYyIDExQjc7Q0EwODsxMTBEIDExNjIgMTFCNzsgIyAo7KiIOyDsqIg7IOGEjeGFouGGtzsg7KiIOyDhhI3hhaLhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEpKQUVNCitDQTA5O0NBMDk7MTEwRCAxMTYyIDExQjg7Q0EwOTsxMTBEIDExNjIgMTFCODsgIyAo7KiJOyDsqIk7IOGEjeGFouGGuDsg7KiJOyDhhI3hhaLhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEpKQUVCCitDQTBBO0NBMEE7MTEwRCAxMTYyIDExQjk7Q0EwQTsxMTBEIDExNjIgMTFCOTsgIyAo7KiKOyDsqIo7IOGEjeGFouGGuTsg7KiKOyDhhI3hhaLhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEpKQUVCUworQ0EwQjtDQTBCOzExMEQgMTE2MiAxMUJBO0NBMEI7MTEwRCAxMTYyIDExQkE7ICMgKOyoizsg7KiLOyDhhI3hhaLhhro7IOyoizsg4YSN4YWi4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBKSkFFUworQ0EwQztDQTBDOzExMEQgMTE2MiAxMUJCO0NBMEM7MTEwRCAxMTYyIDExQkI7ICMgKOyojDsg7KiMOyDhhI3hhaLhhrs7IOyojDsg4YSN4YWi4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBKSkFFU1MKK0NBMEQ7Q0EwRDsxMTBEIDExNjIgMTFCQztDQTBEOzExMEQgMTE2MiAxMUJDOyAjICjsqI07IOyojTsg4YSN4YWi4Ya8OyDsqI07IOGEjeGFouGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpBRU5HCitDQTBFO0NBMEU7MTEwRCAxMTYyIDExQkQ7Q0EwRTsxMTBEIDExNjIgMTFCRDsgIyAo7KiOOyDsqI47IOGEjeGFouGGvTsg7KiOOyDhhI3hhaLhhr07ICkgSEFOR1VMIFNZTExBQkxFIEpKQUVKCitDQTBGO0NBMEY7MTEwRCAxMTYyIDExQkU7Q0EwRjsxMTBEIDExNjIgMTFCRTsgIyAo7KiPOyDsqI87IOGEjeGFouGGvjsg7KiPOyDhhI3hhaLhhr47ICkgSEFOR1VMIFNZTExBQkxFIEpKQUVDCitDQTEwO0NBMTA7MTEwRCAxMTYyIDExQkY7Q0ExMDsxMTBEIDExNjIgMTFCRjsgIyAo7KiQOyDsqJA7IOGEjeGFouGGvzsg7KiQOyDhhI3hhaLhhr87ICkgSEFOR1VMIFNZTExBQkxFIEpKQUVLCitDQTExO0NBMTE7MTEwRCAxMTYyIDExQzA7Q0ExMTsxMTBEIDExNjIgMTFDMDsgIyAo7KiROyDsqJE7IOGEjeGFouGHgDsg7KiROyDhhI3hhaLhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEpKQUVUCitDQTEyO0NBMTI7MTEwRCAxMTYyIDExQzE7Q0ExMjsxMTBEIDExNjIgMTFDMTsgIyAo7KiSOyDsqJI7IOGEjeGFouGHgTsg7KiSOyDhhI3hhaLhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEpKQUVQCitDQTEzO0NBMTM7MTEwRCAxMTYyIDExQzI7Q0ExMzsxMTBEIDExNjIgMTFDMjsgIyAo7KiTOyDsqJM7IOGEjeGFouGHgjsg7KiTOyDhhI3hhaLhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEpKQUVICitDQTE0O0NBMTQ7MTEwRCAxMTYzO0NBMTQ7MTEwRCAxMTYzOyAjICjsqJQ7IOyolDsg4YSN4YWjOyDsqJQ7IOGEjeGFozsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZQQorQ0ExNTtDQTE1OzExMEQgMTE2MyAxMUE4O0NBMTU7MTEwRCAxMTYzIDExQTg7ICMgKOyolTsg7KiVOyDhhI3hhaPhhqg7IOyolTsg4YSN4YWj4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBKSllBRworQ0ExNjtDQTE2OzExMEQgMTE2MyAxMUE5O0NBMTY7MTEwRCAxMTYzIDExQTk7ICMgKOyoljsg7KiWOyDhhI3hhaPhhqk7IOyoljsg4YSN4YWj4YapOyApIEhBTkdVTCBTWUxMQUJMRSBKSllBR0cKK0NBMTc7Q0ExNzsxMTBEIDExNjMgMTFBQTtDQTE3OzExMEQgMTE2MyAxMUFBOyAjICjsqJc7IOyolzsg4YSN4YWj4YaqOyDsqJc7IOGEjeGFo+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZQUdTCitDQTE4O0NBMTg7MTEwRCAxMTYzIDExQUI7Q0ExODsxMTBEIDExNjMgMTFBQjsgIyAo7KiYOyDsqJg7IOGEjeGFo+GGqzsg7KiYOyDhhI3hhaPhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFOCitDQTE5O0NBMTk7MTEwRCAxMTYzIDExQUM7Q0ExOTsxMTBEIDExNjMgMTFBQzsgIyAo7KiZOyDsqJk7IOGEjeGFo+GGrDsg7KiZOyDhhI3hhaPhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFOSgorQ0ExQTtDQTFBOzExMEQgMTE2MyAxMUFEO0NBMUE7MTEwRCAxMTYzIDExQUQ7ICMgKOyomjsg7KiaOyDhhI3hhaPhhq07IOyomjsg4YSN4YWj4YatOyApIEhBTkdVTCBTWUxMQUJMRSBKSllBTkgKK0NBMUI7Q0ExQjsxMTBEIDExNjMgMTFBRTtDQTFCOzExMEQgMTE2MyAxMUFFOyAjICjsqJs7IOyomzsg4YSN4YWj4YauOyDsqJs7IOGEjeGFo+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZQUQKK0NBMUM7Q0ExQzsxMTBEIDExNjMgMTFBRjtDQTFDOzExMEQgMTE2MyAxMUFGOyAjICjsqJw7IOyonDsg4YSN4YWj4YavOyDsqJw7IOGEjeGFo+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZQUwKK0NBMUQ7Q0ExRDsxMTBEIDExNjMgMTFCMDtDQTFEOzExMEQgMTE2MyAxMUIwOyAjICjsqJ07IOyonTsg4YSN4YWj4YawOyDsqJ07IOGEjeGFo+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZQUxHCitDQTFFO0NBMUU7MTEwRCAxMTYzIDExQjE7Q0ExRTsxMTBEIDExNjMgMTFCMTsgIyAo7KieOyDsqJ47IOGEjeGFo+GGsTsg7KieOyDhhI3hhaPhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFMTQorQ0ExRjtDQTFGOzExMEQgMTE2MyAxMUIyO0NBMUY7MTEwRCAxMTYzIDExQjI7ICMgKOyonzsg7KifOyDhhI3hhaPhhrI7IOyonzsg4YSN4YWj4YayOyApIEhBTkdVTCBTWUxMQUJMRSBKSllBTEIKK0NBMjA7Q0EyMDsxMTBEIDExNjMgMTFCMztDQTIwOzExMEQgMTE2MyAxMUIzOyAjICjsqKA7IOyooDsg4YSN4YWj4YazOyDsqKA7IOGEjeGFo+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZQUxTCitDQTIxO0NBMjE7MTEwRCAxMTYzIDExQjQ7Q0EyMTsxMTBEIDExNjMgMTFCNDsgIyAo7KihOyDsqKE7IOGEjeGFo+GGtDsg7KihOyDhhI3hhaPhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFMVAorQ0EyMjtDQTIyOzExMEQgMTE2MyAxMUI1O0NBMjI7MTEwRCAxMTYzIDExQjU7ICMgKOyoojsg7KiiOyDhhI3hhaPhhrU7IOyoojsg4YSN4YWj4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBKSllBTFAKK0NBMjM7Q0EyMzsxMTBEIDExNjMgMTFCNjtDQTIzOzExMEQgMTE2MyAxMUI2OyAjICjsqKM7IOyoozsg4YSN4YWj4Ya2OyDsqKM7IOGEjeGFo+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZQUxICitDQTI0O0NBMjQ7MTEwRCAxMTYzIDExQjc7Q0EyNDsxMTBEIDExNjMgMTFCNzsgIyAo7KikOyDsqKQ7IOGEjeGFo+GGtzsg7KikOyDhhI3hhaPhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFNCitDQTI1O0NBMjU7MTEwRCAxMTYzIDExQjg7Q0EyNTsxMTBEIDExNjMgMTFCODsgIyAo7KilOyDsqKU7IOGEjeGFo+GGuDsg7KilOyDhhI3hhaPhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFCCitDQTI2O0NBMjY7MTEwRCAxMTYzIDExQjk7Q0EyNjsxMTBEIDExNjMgMTFCOTsgIyAo7KimOyDsqKY7IOGEjeGFo+GGuTsg7KimOyDhhI3hhaPhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFCUworQ0EyNztDQTI3OzExMEQgMTE2MyAxMUJBO0NBMjc7MTEwRCAxMTYzIDExQkE7ICMgKOyopzsg7KinOyDhhI3hhaPhhro7IOyopzsg4YSN4YWj4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBKSllBUworQ0EyODtDQTI4OzExMEQgMTE2MyAxMUJCO0NBMjg7MTEwRCAxMTYzIDExQkI7ICMgKOyoqDsg7KioOyDhhI3hhaPhhrs7IOyoqDsg4YSN4YWj4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBKSllBU1MKK0NBMjk7Q0EyOTsxMTBEIDExNjMgMTFCQztDQTI5OzExMEQgMTE2MyAxMUJDOyAjICjsqKk7IOyoqTsg4YSN4YWj4Ya8OyDsqKk7IOGEjeGFo+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZQU5HCitDQTJBO0NBMkE7MTEwRCAxMTYzIDExQkQ7Q0EyQTsxMTBEIDExNjMgMTFCRDsgIyAo7KiqOyDsqKo7IOGEjeGFo+GGvTsg7KiqOyDhhI3hhaPhhr07ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFKCitDQTJCO0NBMkI7MTEwRCAxMTYzIDExQkU7Q0EyQjsxMTBEIDExNjMgMTFCRTsgIyAo7KirOyDsqKs7IOGEjeGFo+GGvjsg7KirOyDhhI3hhaPhhr47ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFDCitDQTJDO0NBMkM7MTEwRCAxMTYzIDExQkY7Q0EyQzsxMTBEIDExNjMgMTFCRjsgIyAo7KisOyDsqKw7IOGEjeGFo+GGvzsg7KisOyDhhI3hhaPhhr87ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFLCitDQTJEO0NBMkQ7MTEwRCAxMTYzIDExQzA7Q0EyRDsxMTBEIDExNjMgMTFDMDsgIyAo7KitOyDsqK07IOGEjeGFo+GHgDsg7KitOyDhhI3hhaPhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFUCitDQTJFO0NBMkU7MTEwRCAxMTYzIDExQzE7Q0EyRTsxMTBEIDExNjMgMTFDMTsgIyAo7KiuOyDsqK47IOGEjeGFo+GHgTsg7KiuOyDhhI3hhaPhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFQCitDQTJGO0NBMkY7MTEwRCAxMTYzIDExQzI7Q0EyRjsxMTBEIDExNjMgMTFDMjsgIyAo7KivOyDsqK87IOGEjeGFo+GHgjsg7KivOyDhhI3hhaPhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFICitDQTMwO0NBMzA7MTEwRCAxMTY0O0NBMzA7MTEwRCAxMTY0OyAjICjsqLA7IOyosDsg4YSN4YWkOyDsqLA7IOGEjeGFpDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZQUUKK0NBMzE7Q0EzMTsxMTBEIDExNjQgMTFBODtDQTMxOzExMEQgMTE2NCAxMUE4OyAjICjsqLE7IOyosTsg4YSN4YWk4YaoOyDsqLE7IOGEjeGFpOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZQUVHCitDQTMyO0NBMzI7MTEwRCAxMTY0IDExQTk7Q0EzMjsxMTBEIDExNjQgMTFBOTsgIyAo7KiyOyDsqLI7IOGEjeGFpOGGqTsg7KiyOyDhhI3hhaThhqk7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFFR0cKK0NBMzM7Q0EzMzsxMTBEIDExNjQgMTFBQTtDQTMzOzExMEQgMTE2NCAxMUFBOyAjICjsqLM7IOyoszsg4YSN4YWk4YaqOyDsqLM7IOGEjeGFpOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZQUVHUworQ0EzNDtDQTM0OzExMEQgMTE2NCAxMUFCO0NBMzQ7MTEwRCAxMTY0IDExQUI7ICMgKOyotDsg7Ki0OyDhhI3hhaThhqs7IOyotDsg4YSN4YWk4YarOyApIEhBTkdVTCBTWUxMQUJMRSBKSllBRU4KK0NBMzU7Q0EzNTsxMTBEIDExNjQgMTFBQztDQTM1OzExMEQgMTE2NCAxMUFDOyAjICjsqLU7IOyotTsg4YSN4YWk4YasOyDsqLU7IOGEjeGFpOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZQUVOSgorQ0EzNjtDQTM2OzExMEQgMTE2NCAxMUFEO0NBMzY7MTEwRCAxMTY0IDExQUQ7ICMgKOyotjsg7Ki2OyDhhI3hhaThhq07IOyotjsg4YSN4YWk4YatOyApIEhBTkdVTCBTWUxMQUJMRSBKSllBRU5ICitDQTM3O0NBMzc7MTEwRCAxMTY0IDExQUU7Q0EzNzsxMTBEIDExNjQgMTFBRTsgIyAo7Ki3OyDsqLc7IOGEjeGFpOGGrjsg7Ki3OyDhhI3hhaThhq47ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFFRAorQ0EzODtDQTM4OzExMEQgMTE2NCAxMUFGO0NBMzg7MTEwRCAxMTY0IDExQUY7ICMgKOyouDsg7Ki4OyDhhI3hhaThhq87IOyouDsg4YSN4YWk4YavOyApIEhBTkdVTCBTWUxMQUJMRSBKSllBRUwKK0NBMzk7Q0EzOTsxMTBEIDExNjQgMTFCMDtDQTM5OzExMEQgMTE2NCAxMUIwOyAjICjsqLk7IOyouTsg4YSN4YWk4YawOyDsqLk7IOGEjeGFpOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZQUVMRworQ0EzQTtDQTNBOzExMEQgMTE2NCAxMUIxO0NBM0E7MTEwRCAxMTY0IDExQjE7ICMgKOyoujsg7Ki6OyDhhI3hhaThhrE7IOyoujsg4YSN4YWk4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKSllBRUxNCitDQTNCO0NBM0I7MTEwRCAxMTY0IDExQjI7Q0EzQjsxMTBEIDExNjQgMTFCMjsgIyAo7Ki7OyDsqLs7IOGEjeGFpOGGsjsg7Ki7OyDhhI3hhaThhrI7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFFTEIKK0NBM0M7Q0EzQzsxMTBEIDExNjQgMTFCMztDQTNDOzExMEQgMTE2NCAxMUIzOyAjICjsqLw7IOyovDsg4YSN4YWk4YazOyDsqLw7IOGEjeGFpOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZQUVMUworQ0EzRDtDQTNEOzExMEQgMTE2NCAxMUI0O0NBM0Q7MTEwRCAxMTY0IDExQjQ7ICMgKOyovTsg7Ki9OyDhhI3hhaThhrQ7IOyovTsg4YSN4YWk4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKSllBRUxUCitDQTNFO0NBM0U7MTEwRCAxMTY0IDExQjU7Q0EzRTsxMTBEIDExNjQgMTFCNTsgIyAo7Ki+OyDsqL47IOGEjeGFpOGGtTsg7Ki+OyDhhI3hhaThhrU7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFFTFAKK0NBM0Y7Q0EzRjsxMTBEIDExNjQgMTFCNjtDQTNGOzExMEQgMTE2NCAxMUI2OyAjICjsqL87IOyovzsg4YSN4YWk4Ya2OyDsqL87IOGEjeGFpOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZQUVMSAorQ0E0MDtDQTQwOzExMEQgMTE2NCAxMUI3O0NBNDA7MTEwRCAxMTY0IDExQjc7ICMgKOypgDsg7KmAOyDhhI3hhaThhrc7IOypgDsg4YSN4YWk4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKSllBRU0KK0NBNDE7Q0E0MTsxMTBEIDExNjQgMTFCODtDQTQxOzExMEQgMTE2NCAxMUI4OyAjICjsqYE7IOypgTsg4YSN4YWk4Ya4OyDsqYE7IOGEjeGFpOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZQUVCCitDQTQyO0NBNDI7MTEwRCAxMTY0IDExQjk7Q0E0MjsxMTBEIDExNjQgMTFCOTsgIyAo7KmCOyDsqYI7IOGEjeGFpOGGuTsg7KmCOyDhhI3hhaThhrk7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFFQlMKK0NBNDM7Q0E0MzsxMTBEIDExNjQgMTFCQTtDQTQzOzExMEQgMTE2NCAxMUJBOyAjICjsqYM7IOypgzsg4YSN4YWk4Ya6OyDsqYM7IOGEjeGFpOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZQUVTCitDQTQ0O0NBNDQ7MTEwRCAxMTY0IDExQkI7Q0E0NDsxMTBEIDExNjQgMTFCQjsgIyAo7KmEOyDsqYQ7IOGEjeGFpOGGuzsg7KmEOyDhhI3hhaThhrs7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFFU1MKK0NBNDU7Q0E0NTsxMTBEIDExNjQgMTFCQztDQTQ1OzExMEQgMTE2NCAxMUJDOyAjICjsqYU7IOyphTsg4YSN4YWk4Ya8OyDsqYU7IOGEjeGFpOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZQUVORworQ0E0NjtDQTQ2OzExMEQgMTE2NCAxMUJEO0NBNDY7MTEwRCAxMTY0IDExQkQ7ICMgKOyphjsg7KmGOyDhhI3hhaThhr07IOyphjsg4YSN4YWk4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKSllBRUoKK0NBNDc7Q0E0NzsxMTBEIDExNjQgMTFCRTtDQTQ3OzExMEQgMTE2NCAxMUJFOyAjICjsqYc7IOyphzsg4YSN4YWk4Ya+OyDsqYc7IOGEjeGFpOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZQUVDCitDQTQ4O0NBNDg7MTEwRCAxMTY0IDExQkY7Q0E0ODsxMTBEIDExNjQgMTFCRjsgIyAo7KmIOyDsqYg7IOGEjeGFpOGGvzsg7KmIOyDhhI3hhaThhr87ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFFSworQ0E0OTtDQTQ5OzExMEQgMTE2NCAxMUMwO0NBNDk7MTEwRCAxMTY0IDExQzA7ICMgKOypiTsg7KmJOyDhhI3hhaThh4A7IOypiTsg4YSN4YWk4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKSllBRVQKK0NBNEE7Q0E0QTsxMTBEIDExNjQgMTFDMTtDQTRBOzExMEQgMTE2NCAxMUMxOyAjICjsqYo7IOypijsg4YSN4YWk4YeBOyDsqYo7IOGEjeGFpOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZQUVQCitDQTRCO0NBNEI7MTEwRCAxMTY0IDExQzI7Q0E0QjsxMTBEIDExNjQgMTFDMjsgIyAo7KmLOyDsqYs7IOGEjeGFpOGHgjsg7KmLOyDhhI3hhaThh4I7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUFFSAorQ0E0QztDQTRDOzExMEQgMTE2NTtDQTRDOzExMEQgMTE2NTsgIyAo7KmMOyDsqYw7IOGEjeGFpTsg7KmMOyDhhI3hhaU7ICkgSEFOR1VMIFNZTExBQkxFIEpKRU8KK0NBNEQ7Q0E0RDsxMTBEIDExNjUgMTFBODtDQTREOzExMEQgMTE2NSAxMUE4OyAjICjsqY07IOypjTsg4YSN4YWl4YaoOyDsqY07IOGEjeGFpeGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpFT0cKK0NBNEU7Q0E0RTsxMTBEIDExNjUgMTFBOTtDQTRFOzExMEQgMTE2NSAxMUE5OyAjICjsqY47IOypjjsg4YSN4YWl4YapOyDsqY47IOGEjeGFpeGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpFT0dHCitDQTRGO0NBNEY7MTEwRCAxMTY1IDExQUE7Q0E0RjsxMTBEIDExNjUgMTFBQTsgIyAo7KmPOyDsqY87IOGEjeGFpeGGqjsg7KmPOyDhhI3hhaXhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpKRU9HUworQ0E1MDtDQTUwOzExMEQgMTE2NSAxMUFCO0NBNTA7MTEwRCAxMTY1IDExQUI7ICMgKOypkDsg7KmQOyDhhI3hhaXhhqs7IOypkDsg4YSN4YWl4YarOyApIEhBTkdVTCBTWUxMQUJMRSBKSkVPTgorQ0E1MTtDQTUxOzExMEQgMTE2NSAxMUFDO0NBNTE7MTEwRCAxMTY1IDExQUM7ICMgKOypkTsg7KmROyDhhI3hhaXhhqw7IOypkTsg4YSN4YWl4YasOyApIEhBTkdVTCBTWUxMQUJMRSBKSkVPTkoKK0NBNTI7Q0E1MjsxMTBEIDExNjUgMTFBRDtDQTUyOzExMEQgMTE2NSAxMUFEOyAjICjsqZI7IOypkjsg4YSN4YWl4YatOyDsqZI7IOGEjeGFpeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpFT05ICitDQTUzO0NBNTM7MTEwRCAxMTY1IDExQUU7Q0E1MzsxMTBEIDExNjUgMTFBRTsgIyAo7KmTOyDsqZM7IOGEjeGFpeGGrjsg7KmTOyDhhI3hhaXhhq47ICkgSEFOR1VMIFNZTExBQkxFIEpKRU9ECitDQTU0O0NBNTQ7MTEwRCAxMTY1IDExQUY7Q0E1NDsxMTBEIDExNjUgMTFBRjsgIyAo7KmUOyDsqZQ7IOGEjeGFpeGGrzsg7KmUOyDhhI3hhaXhhq87ICkgSEFOR1VMIFNZTExBQkxFIEpKRU9MCitDQTU1O0NBNTU7MTEwRCAxMTY1IDExQjA7Q0E1NTsxMTBEIDExNjUgMTFCMDsgIyAo7KmVOyDsqZU7IOGEjeGFpeGGsDsg7KmVOyDhhI3hhaXhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpKRU9MRworQ0E1NjtDQTU2OzExMEQgMTE2NSAxMUIxO0NBNTY7MTEwRCAxMTY1IDExQjE7ICMgKOypljsg7KmWOyDhhI3hhaXhhrE7IOypljsg4YSN4YWl4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKSkVPTE0KK0NBNTc7Q0E1NzsxMTBEIDExNjUgMTFCMjtDQTU3OzExMEQgMTE2NSAxMUIyOyAjICjsqZc7IOyplzsg4YSN4YWl4YayOyDsqZc7IOGEjeGFpeGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpFT0xCCitDQTU4O0NBNTg7MTEwRCAxMTY1IDExQjM7Q0E1ODsxMTBEIDExNjUgMTFCMzsgIyAo7KmYOyDsqZg7IOGEjeGFpeGGszsg7KmYOyDhhI3hhaXhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpKRU9MUworQ0E1OTtDQTU5OzExMEQgMTE2NSAxMUI0O0NBNTk7MTEwRCAxMTY1IDExQjQ7ICMgKOypmTsg7KmZOyDhhI3hhaXhhrQ7IOypmTsg4YSN4YWl4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKSkVPTFQKK0NBNUE7Q0E1QTsxMTBEIDExNjUgMTFCNTtDQTVBOzExMEQgMTE2NSAxMUI1OyAjICjsqZo7IOypmjsg4YSN4YWl4Ya1OyDsqZo7IOGEjeGFpeGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpFT0xQCitDQTVCO0NBNUI7MTEwRCAxMTY1IDExQjY7Q0E1QjsxMTBEIDExNjUgMTFCNjsgIyAo7KmbOyDsqZs7IOGEjeGFpeGGtjsg7KmbOyDhhI3hhaXhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpKRU9MSAorQ0E1QztDQTVDOzExMEQgMTE2NSAxMUI3O0NBNUM7MTEwRCAxMTY1IDExQjc7ICMgKOypnDsg7KmcOyDhhI3hhaXhhrc7IOypnDsg4YSN4YWl4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKSkVPTQorQ0E1RDtDQTVEOzExMEQgMTE2NSAxMUI4O0NBNUQ7MTEwRCAxMTY1IDExQjg7ICMgKOypnTsg7KmdOyDhhI3hhaXhhrg7IOypnTsg4YSN4YWl4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBKSkVPQgorQ0E1RTtDQTVFOzExMEQgMTE2NSAxMUI5O0NBNUU7MTEwRCAxMTY1IDExQjk7ICMgKOypnjsg7KmeOyDhhI3hhaXhhrk7IOypnjsg4YSN4YWl4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKSkVPQlMKK0NBNUY7Q0E1RjsxMTBEIDExNjUgMTFCQTtDQTVGOzExMEQgMTE2NSAxMUJBOyAjICjsqZ87IOypnzsg4YSN4YWl4Ya6OyDsqZ87IOGEjeGFpeGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSkpFT1MKK0NBNjA7Q0E2MDsxMTBEIDExNjUgMTFCQjtDQTYwOzExMEQgMTE2NSAxMUJCOyAjICjsqaA7IOypoDsg4YSN4YWl4Ya7OyDsqaA7IOGEjeGFpeGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSkpFT1NTCitDQTYxO0NBNjE7MTEwRCAxMTY1IDExQkM7Q0E2MTsxMTBEIDExNjUgMTFCQzsgIyAo7KmhOyDsqaE7IOGEjeGFpeGGvDsg7KmhOyDhhI3hhaXhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpKRU9ORworQ0E2MjtDQTYyOzExMEQgMTE2NSAxMUJEO0NBNjI7MTEwRCAxMTY1IDExQkQ7ICMgKOypojsg7KmiOyDhhI3hhaXhhr07IOypojsg4YSN4YWl4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKSkVPSgorQ0E2MztDQTYzOzExMEQgMTE2NSAxMUJFO0NBNjM7MTEwRCAxMTY1IDExQkU7ICMgKOypozsg7KmjOyDhhI3hhaXhhr47IOypozsg4YSN4YWl4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBKSkVPQworQ0E2NDtDQTY0OzExMEQgMTE2NSAxMUJGO0NBNjQ7MTEwRCAxMTY1IDExQkY7ICMgKOyppDsg7KmkOyDhhI3hhaXhhr87IOyppDsg4YSN4YWl4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKSkVPSworQ0E2NTtDQTY1OzExMEQgMTE2NSAxMUMwO0NBNjU7MTEwRCAxMTY1IDExQzA7ICMgKOyppTsg7KmlOyDhhI3hhaXhh4A7IOyppTsg4YSN4YWl4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKSkVPVAorQ0E2NjtDQTY2OzExMEQgMTE2NSAxMUMxO0NBNjY7MTEwRCAxMTY1IDExQzE7ICMgKOyppjsg7KmmOyDhhI3hhaXhh4E7IOyppjsg4YSN4YWl4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBKSkVPUAorQ0E2NztDQTY3OzExMEQgMTE2NSAxMUMyO0NBNjc7MTEwRCAxMTY1IDExQzI7ICMgKOyppzsg7KmnOyDhhI3hhaXhh4I7IOyppzsg4YSN4YWl4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKSkVPSAorQ0E2ODtDQTY4OzExMEQgMTE2NjtDQTY4OzExMEQgMTE2NjsgIyAo7KmoOyDsqag7IOGEjeGFpjsg7KmoOyDhhI3hhaY7ICkgSEFOR1VMIFNZTExBQkxFIEpKRQorQ0E2OTtDQTY5OzExMEQgMTE2NiAxMUE4O0NBNjk7MTEwRCAxMTY2IDExQTg7ICMgKOypqTsg7KmpOyDhhI3hhabhhqg7IOypqTsg4YSN4YWm4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBKSkVHCitDQTZBO0NBNkE7MTEwRCAxMTY2IDExQTk7Q0E2QTsxMTBEIDExNjYgMTFBOTsgIyAo7KmqOyDsqao7IOGEjeGFpuGGqTsg7KmqOyDhhI3hhabhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEpKRUdHCitDQTZCO0NBNkI7MTEwRCAxMTY2IDExQUE7Q0E2QjsxMTBEIDExNjYgMTFBQTsgIyAo7KmrOyDsqas7IOGEjeGFpuGGqjsg7KmrOyDhhI3hhabhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpKRUdTCitDQTZDO0NBNkM7MTEwRCAxMTY2IDExQUI7Q0E2QzsxMTBEIDExNjYgMTFBQjsgIyAo7KmsOyDsqaw7IOGEjeGFpuGGqzsg7KmsOyDhhI3hhabhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEpKRU4KK0NBNkQ7Q0E2RDsxMTBEIDExNjYgMTFBQztDQTZEOzExMEQgMTE2NiAxMUFDOyAjICjsqa07IOyprTsg4YSN4YWm4YasOyDsqa07IOGEjeGFpuGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpFTkoKK0NBNkU7Q0E2RTsxMTBEIDExNjYgMTFBRDtDQTZFOzExMEQgMTE2NiAxMUFEOyAjICjsqa47IOyprjsg4YSN4YWm4YatOyDsqa47IOGEjeGFpuGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpFTkgKK0NBNkY7Q0E2RjsxMTBEIDExNjYgMTFBRTtDQTZGOzExMEQgMTE2NiAxMUFFOyAjICjsqa87IOyprzsg4YSN4YWm4YauOyDsqa87IOGEjeGFpuGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpFRAorQ0E3MDtDQTcwOzExMEQgMTE2NiAxMUFGO0NBNzA7MTEwRCAxMTY2IDExQUY7ICMgKOypsDsg7KmwOyDhhI3hhabhhq87IOypsDsg4YSN4YWm4YavOyApIEhBTkdVTCBTWUxMQUJMRSBKSkVMCitDQTcxO0NBNzE7MTEwRCAxMTY2IDExQjA7Q0E3MTsxMTBEIDExNjYgMTFCMDsgIyAo7KmxOyDsqbE7IOGEjeGFpuGGsDsg7KmxOyDhhI3hhabhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpKRUxHCitDQTcyO0NBNzI7MTEwRCAxMTY2IDExQjE7Q0E3MjsxMTBEIDExNjYgMTFCMTsgIyAo7KmyOyDsqbI7IOGEjeGFpuGGsTsg7KmyOyDhhI3hhabhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEpKRUxNCitDQTczO0NBNzM7MTEwRCAxMTY2IDExQjI7Q0E3MzsxMTBEIDExNjYgMTFCMjsgIyAo7KmzOyDsqbM7IOGEjeGFpuGGsjsg7KmzOyDhhI3hhabhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEpKRUxCCitDQTc0O0NBNzQ7MTEwRCAxMTY2IDExQjM7Q0E3NDsxMTBEIDExNjYgMTFCMzsgIyAo7Km0OyDsqbQ7IOGEjeGFpuGGszsg7Km0OyDhhI3hhabhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpKRUxTCitDQTc1O0NBNzU7MTEwRCAxMTY2IDExQjQ7Q0E3NTsxMTBEIDExNjYgMTFCNDsgIyAo7Km1OyDsqbU7IOGEjeGFpuGGtDsg7Km1OyDhhI3hhabhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEpKRUxUCitDQTc2O0NBNzY7MTEwRCAxMTY2IDExQjU7Q0E3NjsxMTBEIDExNjYgMTFCNTsgIyAo7Km2OyDsqbY7IOGEjeGFpuGGtTsg7Km2OyDhhI3hhabhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEpKRUxQCitDQTc3O0NBNzc7MTEwRCAxMTY2IDExQjY7Q0E3NzsxMTBEIDExNjYgMTFCNjsgIyAo7Km3OyDsqbc7IOGEjeGFpuGGtjsg7Km3OyDhhI3hhabhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpKRUxICitDQTc4O0NBNzg7MTEwRCAxMTY2IDExQjc7Q0E3ODsxMTBEIDExNjYgMTFCNzsgIyAo7Km4OyDsqbg7IOGEjeGFpuGGtzsg7Km4OyDhhI3hhabhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEpKRU0KK0NBNzk7Q0E3OTsxMTBEIDExNjYgMTFCODtDQTc5OzExMEQgMTE2NiAxMUI4OyAjICjsqbk7IOypuTsg4YSN4YWm4Ya4OyDsqbk7IOGEjeGFpuGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpFQgorQ0E3QTtDQTdBOzExMEQgMTE2NiAxMUI5O0NBN0E7MTEwRCAxMTY2IDExQjk7ICMgKOypujsg7Km6OyDhhI3hhabhhrk7IOypujsg4YSN4YWm4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKSkVCUworQ0E3QjtDQTdCOzExMEQgMTE2NiAxMUJBO0NBN0I7MTEwRCAxMTY2IDExQkE7ICMgKOypuzsg7Km7OyDhhI3hhabhhro7IOypuzsg4YSN4YWm4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBKSkVTCitDQTdDO0NBN0M7MTEwRCAxMTY2IDExQkI7Q0E3QzsxMTBEIDExNjYgMTFCQjsgIyAo7Km8OyDsqbw7IOGEjeGFpuGGuzsg7Km8OyDhhI3hhabhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEpKRVNTCitDQTdEO0NBN0Q7MTEwRCAxMTY2IDExQkM7Q0E3RDsxMTBEIDExNjYgMTFCQzsgIyAo7Km9OyDsqb07IOGEjeGFpuGGvDsg7Km9OyDhhI3hhabhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpKRU5HCitDQTdFO0NBN0U7MTEwRCAxMTY2IDExQkQ7Q0E3RTsxMTBEIDExNjYgMTFCRDsgIyAo7Km+OyDsqb47IOGEjeGFpuGGvTsg7Km+OyDhhI3hhabhhr07ICkgSEFOR1VMIFNZTExBQkxFIEpKRUoKK0NBN0Y7Q0E3RjsxMTBEIDExNjYgMTFCRTtDQTdGOzExMEQgMTE2NiAxMUJFOyAjICjsqb87IOypvzsg4YSN4YWm4Ya+OyDsqb87IOGEjeGFpuGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpFQworQ0E4MDtDQTgwOzExMEQgMTE2NiAxMUJGO0NBODA7MTEwRCAxMTY2IDExQkY7ICMgKOyqgDsg7KqAOyDhhI3hhabhhr87IOyqgDsg4YSN4YWm4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKSkVLCitDQTgxO0NBODE7MTEwRCAxMTY2IDExQzA7Q0E4MTsxMTBEIDExNjYgMTFDMDsgIyAo7KqBOyDsqoE7IOGEjeGFpuGHgDsg7KqBOyDhhI3hhabhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEpKRVQKK0NBODI7Q0E4MjsxMTBEIDExNjYgMTFDMTtDQTgyOzExMEQgMTE2NiAxMUMxOyAjICjsqoI7IOyqgjsg4YSN4YWm4YeBOyDsqoI7IOGEjeGFpuGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpFUAorQ0E4MztDQTgzOzExMEQgMTE2NiAxMUMyO0NBODM7MTEwRCAxMTY2IDExQzI7ICMgKOyqgzsg7KqDOyDhhI3hhabhh4I7IOyqgzsg4YSN4YWm4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKSkVICitDQTg0O0NBODQ7MTEwRCAxMTY3O0NBODQ7MTEwRCAxMTY3OyAjICjsqoQ7IOyqhDsg4YSN4YWnOyDsqoQ7IOGEjeGFpzsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZRU8KK0NBODU7Q0E4NTsxMTBEIDExNjcgMTFBODtDQTg1OzExMEQgMTE2NyAxMUE4OyAjICjsqoU7IOyqhTsg4YSN4YWn4YaoOyDsqoU7IOGEjeGFp+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZRU9HCitDQTg2O0NBODY7MTEwRCAxMTY3IDExQTk7Q0E4NjsxMTBEIDExNjcgMTFBOTsgIyAo7KqGOyDsqoY7IOGEjeGFp+GGqTsg7KqGOyDhhI3hhafhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUVPR0cKK0NBODc7Q0E4NzsxMTBEIDExNjcgMTFBQTtDQTg3OzExMEQgMTE2NyAxMUFBOyAjICjsqoc7IOyqhzsg4YSN4YWn4YaqOyDsqoc7IOGEjeGFp+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZRU9HUworQ0E4ODtDQTg4OzExMEQgMTE2NyAxMUFCO0NBODg7MTEwRCAxMTY3IDExQUI7ICMgKOyqiDsg7KqIOyDhhI3hhafhhqs7IOyqiDsg4YSN4YWn4YarOyApIEhBTkdVTCBTWUxMQUJMRSBKSllFT04KK0NBODk7Q0E4OTsxMTBEIDExNjcgMTFBQztDQTg5OzExMEQgMTE2NyAxMUFDOyAjICjsqok7IOyqiTsg4YSN4YWn4YasOyDsqok7IOGEjeGFp+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZRU9OSgorQ0E4QTtDQThBOzExMEQgMTE2NyAxMUFEO0NBOEE7MTEwRCAxMTY3IDExQUQ7ICMgKOyqijsg7KqKOyDhhI3hhafhhq07IOyqijsg4YSN4YWn4YatOyApIEhBTkdVTCBTWUxMQUJMRSBKSllFT05ICitDQThCO0NBOEI7MTEwRCAxMTY3IDExQUU7Q0E4QjsxMTBEIDExNjcgMTFBRTsgIyAo7KqLOyDsqos7IOGEjeGFp+GGrjsg7KqLOyDhhI3hhafhhq47ICkgSEFOR1VMIFNZTExBQkxFIEpKWUVPRAorQ0E4QztDQThDOzExMEQgMTE2NyAxMUFGO0NBOEM7MTEwRCAxMTY3IDExQUY7ICMgKOyqjDsg7KqMOyDhhI3hhafhhq87IOyqjDsg4YSN4YWn4YavOyApIEhBTkdVTCBTWUxMQUJMRSBKSllFT0wKK0NBOEQ7Q0E4RDsxMTBEIDExNjcgMTFCMDtDQThEOzExMEQgMTE2NyAxMUIwOyAjICjsqo07IOyqjTsg4YSN4YWn4YawOyDsqo07IOGEjeGFp+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZRU9MRworQ0E4RTtDQThFOzExMEQgMTE2NyAxMUIxO0NBOEU7MTEwRCAxMTY3IDExQjE7ICMgKOyqjjsg7KqOOyDhhI3hhafhhrE7IOyqjjsg4YSN4YWn4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKSllFT0xNCitDQThGO0NBOEY7MTEwRCAxMTY3IDExQjI7Q0E4RjsxMTBEIDExNjcgMTFCMjsgIyAo7KqPOyDsqo87IOGEjeGFp+GGsjsg7KqPOyDhhI3hhafhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUVPTEIKK0NBOTA7Q0E5MDsxMTBEIDExNjcgMTFCMztDQTkwOzExMEQgMTE2NyAxMUIzOyAjICjsqpA7IOyqkDsg4YSN4YWn4YazOyDsqpA7IOGEjeGFp+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZRU9MUworQ0E5MTtDQTkxOzExMEQgMTE2NyAxMUI0O0NBOTE7MTEwRCAxMTY3IDExQjQ7ICMgKOyqkTsg7KqROyDhhI3hhafhhrQ7IOyqkTsg4YSN4YWn4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKSllFT0xUCitDQTkyO0NBOTI7MTEwRCAxMTY3IDExQjU7Q0E5MjsxMTBEIDExNjcgMTFCNTsgIyAo7KqSOyDsqpI7IOGEjeGFp+GGtTsg7KqSOyDhhI3hhafhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUVPTFAKK0NBOTM7Q0E5MzsxMTBEIDExNjcgMTFCNjtDQTkzOzExMEQgMTE2NyAxMUI2OyAjICjsqpM7IOyqkzsg4YSN4YWn4Ya2OyDsqpM7IOGEjeGFp+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZRU9MSAorQ0E5NDtDQTk0OzExMEQgMTE2NyAxMUI3O0NBOTQ7MTEwRCAxMTY3IDExQjc7ICMgKOyqlDsg7KqUOyDhhI3hhafhhrc7IOyqlDsg4YSN4YWn4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKSllFT00KK0NBOTU7Q0E5NTsxMTBEIDExNjcgMTFCODtDQTk1OzExMEQgMTE2NyAxMUI4OyAjICjsqpU7IOyqlTsg4YSN4YWn4Ya4OyDsqpU7IOGEjeGFp+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZRU9CCitDQTk2O0NBOTY7MTEwRCAxMTY3IDExQjk7Q0E5NjsxMTBEIDExNjcgMTFCOTsgIyAo7KqWOyDsqpY7IOGEjeGFp+GGuTsg7KqWOyDhhI3hhafhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUVPQlMKK0NBOTc7Q0E5NzsxMTBEIDExNjcgMTFCQTtDQTk3OzExMEQgMTE2NyAxMUJBOyAjICjsqpc7IOyqlzsg4YSN4YWn4Ya6OyDsqpc7IOGEjeGFp+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZRU9TCitDQTk4O0NBOTg7MTEwRCAxMTY3IDExQkI7Q0E5ODsxMTBEIDExNjcgMTFCQjsgIyAo7KqYOyDsqpg7IOGEjeGFp+GGuzsg7KqYOyDhhI3hhafhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUVPU1MKK0NBOTk7Q0E5OTsxMTBEIDExNjcgMTFCQztDQTk5OzExMEQgMTE2NyAxMUJDOyAjICjsqpk7IOyqmTsg4YSN4YWn4Ya8OyDsqpk7IOGEjeGFp+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZRU9ORworQ0E5QTtDQTlBOzExMEQgMTE2NyAxMUJEO0NBOUE7MTEwRCAxMTY3IDExQkQ7ICMgKOyqmjsg7KqaOyDhhI3hhafhhr07IOyqmjsg4YSN4YWn4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKSllFT0oKK0NBOUI7Q0E5QjsxMTBEIDExNjcgMTFCRTtDQTlCOzExMEQgMTE2NyAxMUJFOyAjICjsqps7IOyqmzsg4YSN4YWn4Ya+OyDsqps7IOGEjeGFp+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZRU9DCitDQTlDO0NBOUM7MTEwRCAxMTY3IDExQkY7Q0E5QzsxMTBEIDExNjcgMTFCRjsgIyAo7KqcOyDsqpw7IOGEjeGFp+GGvzsg7KqcOyDhhI3hhafhhr87ICkgSEFOR1VMIFNZTExBQkxFIEpKWUVPSworQ0E5RDtDQTlEOzExMEQgMTE2NyAxMUMwO0NBOUQ7MTEwRCAxMTY3IDExQzA7ICMgKOyqnTsg7KqdOyDhhI3hhafhh4A7IOyqnTsg4YSN4YWn4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKSllFT1QKK0NBOUU7Q0E5RTsxMTBEIDExNjcgMTFDMTtDQTlFOzExMEQgMTE2NyAxMUMxOyAjICjsqp47IOyqnjsg4YSN4YWn4YeBOyDsqp47IOGEjeGFp+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZRU9QCitDQTlGO0NBOUY7MTEwRCAxMTY3IDExQzI7Q0E5RjsxMTBEIDExNjcgMTFDMjsgIyAo7KqfOyDsqp87IOGEjeGFp+GHgjsg7KqfOyDhhI3hhafhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUVPSAorQ0FBMDtDQUEwOzExMEQgMTE2ODtDQUEwOzExMEQgMTE2ODsgIyAo7KqgOyDsqqA7IOGEjeGFqDsg7KqgOyDhhI3hhag7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUUKK0NBQTE7Q0FBMTsxMTBEIDExNjggMTFBODtDQUExOzExMEQgMTE2OCAxMUE4OyAjICjsqqE7IOyqoTsg4YSN4YWo4YaoOyDsqqE7IOGEjeGFqOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZRUcKK0NBQTI7Q0FBMjsxMTBEIDExNjggMTFBOTtDQUEyOzExMEQgMTE2OCAxMUE5OyAjICjsqqI7IOyqojsg4YSN4YWo4YapOyDsqqI7IOGEjeGFqOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZRUdHCitDQUEzO0NBQTM7MTEwRCAxMTY4IDExQUE7Q0FBMzsxMTBEIDExNjggMTFBQTsgIyAo7KqjOyDsqqM7IOGEjeGFqOGGqjsg7KqjOyDhhI3hhajhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUVHUworQ0FBNDtDQUE0OzExMEQgMTE2OCAxMUFCO0NBQTQ7MTEwRCAxMTY4IDExQUI7ICMgKOyqpDsg7KqkOyDhhI3hhajhhqs7IOyqpDsg4YSN4YWo4YarOyApIEhBTkdVTCBTWUxMQUJMRSBKSllFTgorQ0FBNTtDQUE1OzExMEQgMTE2OCAxMUFDO0NBQTU7MTEwRCAxMTY4IDExQUM7ICMgKOyqpTsg7KqlOyDhhI3hhajhhqw7IOyqpTsg4YSN4YWo4YasOyApIEhBTkdVTCBTWUxMQUJMRSBKSllFTkoKK0NBQTY7Q0FBNjsxMTBEIDExNjggMTFBRDtDQUE2OzExMEQgMTE2OCAxMUFEOyAjICjsqqY7IOyqpjsg4YSN4YWo4YatOyDsqqY7IOGEjeGFqOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZRU5ICitDQUE3O0NBQTc7MTEwRCAxMTY4IDExQUU7Q0FBNzsxMTBEIDExNjggMTFBRTsgIyAo7KqnOyDsqqc7IOGEjeGFqOGGrjsg7KqnOyDhhI3hhajhhq47ICkgSEFOR1VMIFNZTExBQkxFIEpKWUVECitDQUE4O0NBQTg7MTEwRCAxMTY4IDExQUY7Q0FBODsxMTBEIDExNjggMTFBRjsgIyAo7KqoOyDsqqg7IOGEjeGFqOGGrzsg7KqoOyDhhI3hhajhhq87ICkgSEFOR1VMIFNZTExBQkxFIEpKWUVMCitDQUE5O0NBQTk7MTEwRCAxMTY4IDExQjA7Q0FBOTsxMTBEIDExNjggMTFCMDsgIyAo7KqpOyDsqqk7IOGEjeGFqOGGsDsg7KqpOyDhhI3hhajhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUVMRworQ0FBQTtDQUFBOzExMEQgMTE2OCAxMUIxO0NBQUE7MTEwRCAxMTY4IDExQjE7ICMgKOyqqjsg7KqqOyDhhI3hhajhhrE7IOyqqjsg4YSN4YWo4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKSllFTE0KK0NBQUI7Q0FBQjsxMTBEIDExNjggMTFCMjtDQUFCOzExMEQgMTE2OCAxMUIyOyAjICjsqqs7IOyqqzsg4YSN4YWo4YayOyDsqqs7IOGEjeGFqOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZRUxCCitDQUFDO0NBQUM7MTEwRCAxMTY4IDExQjM7Q0FBQzsxMTBEIDExNjggMTFCMzsgIyAo7KqsOyDsqqw7IOGEjeGFqOGGszsg7KqsOyDhhI3hhajhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUVMUworQ0FBRDtDQUFEOzExMEQgMTE2OCAxMUI0O0NBQUQ7MTEwRCAxMTY4IDExQjQ7ICMgKOyqrTsg7KqtOyDhhI3hhajhhrQ7IOyqrTsg4YSN4YWo4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKSllFTFQKK0NBQUU7Q0FBRTsxMTBEIDExNjggMTFCNTtDQUFFOzExMEQgMTE2OCAxMUI1OyAjICjsqq47IOyqrjsg4YSN4YWo4Ya1OyDsqq47IOGEjeGFqOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZRUxQCitDQUFGO0NBQUY7MTEwRCAxMTY4IDExQjY7Q0FBRjsxMTBEIDExNjggMTFCNjsgIyAo7KqvOyDsqq87IOGEjeGFqOGGtjsg7KqvOyDhhI3hhajhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUVMSAorQ0FCMDtDQUIwOzExMEQgMTE2OCAxMUI3O0NBQjA7MTEwRCAxMTY4IDExQjc7ICMgKOyqsDsg7KqwOyDhhI3hhajhhrc7IOyqsDsg4YSN4YWo4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKSllFTQorQ0FCMTtDQUIxOzExMEQgMTE2OCAxMUI4O0NBQjE7MTEwRCAxMTY4IDExQjg7ICMgKOyqsTsg7KqxOyDhhI3hhajhhrg7IOyqsTsg4YSN4YWo4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBKSllFQgorQ0FCMjtDQUIyOzExMEQgMTE2OCAxMUI5O0NBQjI7MTEwRCAxMTY4IDExQjk7ICMgKOyqsjsg7KqyOyDhhI3hhajhhrk7IOyqsjsg4YSN4YWo4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKSllFQlMKK0NBQjM7Q0FCMzsxMTBEIDExNjggMTFCQTtDQUIzOzExMEQgMTE2OCAxMUJBOyAjICjsqrM7IOyqszsg4YSN4YWo4Ya6OyDsqrM7IOGEjeGFqOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZRVMKK0NBQjQ7Q0FCNDsxMTBEIDExNjggMTFCQjtDQUI0OzExMEQgMTE2OCAxMUJCOyAjICjsqrQ7IOyqtDsg4YSN4YWo4Ya7OyDsqrQ7IOGEjeGFqOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZRVNTCitDQUI1O0NBQjU7MTEwRCAxMTY4IDExQkM7Q0FCNTsxMTBEIDExNjggMTFCQzsgIyAo7Kq1OyDsqrU7IOGEjeGFqOGGvDsg7Kq1OyDhhI3hhajhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUVORworQ0FCNjtDQUI2OzExMEQgMTE2OCAxMUJEO0NBQjY7MTEwRCAxMTY4IDExQkQ7ICMgKOyqtjsg7Kq2OyDhhI3hhajhhr07IOyqtjsg4YSN4YWo4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKSllFSgorQ0FCNztDQUI3OzExMEQgMTE2OCAxMUJFO0NBQjc7MTEwRCAxMTY4IDExQkU7ICMgKOyqtzsg7Kq3OyDhhI3hhajhhr47IOyqtzsg4YSN4YWo4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBKSllFQworQ0FCODtDQUI4OzExMEQgMTE2OCAxMUJGO0NBQjg7MTEwRCAxMTY4IDExQkY7ICMgKOyquDsg7Kq4OyDhhI3hhajhhr87IOyquDsg4YSN4YWo4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKSllFSworQ0FCOTtDQUI5OzExMEQgMTE2OCAxMUMwO0NBQjk7MTEwRCAxMTY4IDExQzA7ICMgKOyquTsg7Kq5OyDhhI3hhajhh4A7IOyquTsg4YSN4YWo4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKSllFVAorQ0FCQTtDQUJBOzExMEQgMTE2OCAxMUMxO0NBQkE7MTEwRCAxMTY4IDExQzE7ICMgKOyqujsg7Kq6OyDhhI3hhajhh4E7IOyqujsg4YSN4YWo4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBKSllFUAorQ0FCQjtDQUJCOzExMEQgMTE2OCAxMUMyO0NBQkI7MTEwRCAxMTY4IDExQzI7ICMgKOyquzsg7Kq7OyDhhI3hhajhh4I7IOyquzsg4YSN4YWo4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKSllFSAorQ0FCQztDQUJDOzExMEQgMTE2OTtDQUJDOzExMEQgMTE2OTsgIyAo7Kq8OyDsqrw7IOGEjeGFqTsg7Kq8OyDhhI3hhak7ICkgSEFOR1VMIFNZTExBQkxFIEpKTworQ0FCRDtDQUJEOzExMEQgMTE2OSAxMUE4O0NBQkQ7MTEwRCAxMTY5IDExQTg7ICMgKOyqvTsg7Kq9OyDhhI3hhanhhqg7IOyqvTsg4YSN4YWp4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBKSk9HCitDQUJFO0NBQkU7MTEwRCAxMTY5IDExQTk7Q0FCRTsxMTBEIDExNjkgMTFBOTsgIyAo7Kq+OyDsqr47IOGEjeGFqeGGqTsg7Kq+OyDhhI3hhanhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEpKT0dHCitDQUJGO0NBQkY7MTEwRCAxMTY5IDExQUE7Q0FCRjsxMTBEIDExNjkgMTFBQTsgIyAo7Kq/OyDsqr87IOGEjeGFqeGGqjsg7Kq/OyDhhI3hhanhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpKT0dTCitDQUMwO0NBQzA7MTEwRCAxMTY5IDExQUI7Q0FDMDsxMTBEIDExNjkgMTFBQjsgIyAo7KuAOyDsq4A7IOGEjeGFqeGGqzsg7KuAOyDhhI3hhanhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEpKT04KK0NBQzE7Q0FDMTsxMTBEIDExNjkgMTFBQztDQUMxOzExMEQgMTE2OSAxMUFDOyAjICjsq4E7IOyrgTsg4YSN4YWp4YasOyDsq4E7IOGEjeGFqeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpPTkoKK0NBQzI7Q0FDMjsxMTBEIDExNjkgMTFBRDtDQUMyOzExMEQgMTE2OSAxMUFEOyAjICjsq4I7IOyrgjsg4YSN4YWp4YatOyDsq4I7IOGEjeGFqeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpPTkgKK0NBQzM7Q0FDMzsxMTBEIDExNjkgMTFBRTtDQUMzOzExMEQgMTE2OSAxMUFFOyAjICjsq4M7IOyrgzsg4YSN4YWp4YauOyDsq4M7IOGEjeGFqeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpPRAorQ0FDNDtDQUM0OzExMEQgMTE2OSAxMUFGO0NBQzQ7MTEwRCAxMTY5IDExQUY7ICMgKOyrhDsg7KuEOyDhhI3hhanhhq87IOyrhDsg4YSN4YWp4YavOyApIEhBTkdVTCBTWUxMQUJMRSBKSk9MCitDQUM1O0NBQzU7MTEwRCAxMTY5IDExQjA7Q0FDNTsxMTBEIDExNjkgMTFCMDsgIyAo7KuFOyDsq4U7IOGEjeGFqeGGsDsg7KuFOyDhhI3hhanhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpKT0xHCitDQUM2O0NBQzY7MTEwRCAxMTY5IDExQjE7Q0FDNjsxMTBEIDExNjkgMTFCMTsgIyAo7KuGOyDsq4Y7IOGEjeGFqeGGsTsg7KuGOyDhhI3hhanhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEpKT0xNCitDQUM3O0NBQzc7MTEwRCAxMTY5IDExQjI7Q0FDNzsxMTBEIDExNjkgMTFCMjsgIyAo7KuHOyDsq4c7IOGEjeGFqeGGsjsg7KuHOyDhhI3hhanhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEpKT0xCCitDQUM4O0NBQzg7MTEwRCAxMTY5IDExQjM7Q0FDODsxMTBEIDExNjkgMTFCMzsgIyAo7KuIOyDsq4g7IOGEjeGFqeGGszsg7KuIOyDhhI3hhanhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpKT0xTCitDQUM5O0NBQzk7MTEwRCAxMTY5IDExQjQ7Q0FDOTsxMTBEIDExNjkgMTFCNDsgIyAo7KuJOyDsq4k7IOGEjeGFqeGGtDsg7KuJOyDhhI3hhanhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEpKT0xUCitDQUNBO0NBQ0E7MTEwRCAxMTY5IDExQjU7Q0FDQTsxMTBEIDExNjkgMTFCNTsgIyAo7KuKOyDsq4o7IOGEjeGFqeGGtTsg7KuKOyDhhI3hhanhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEpKT0xQCitDQUNCO0NBQ0I7MTEwRCAxMTY5IDExQjY7Q0FDQjsxMTBEIDExNjkgMTFCNjsgIyAo7KuLOyDsq4s7IOGEjeGFqeGGtjsg7KuLOyDhhI3hhanhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpKT0xICitDQUNDO0NBQ0M7MTEwRCAxMTY5IDExQjc7Q0FDQzsxMTBEIDExNjkgMTFCNzsgIyAo7KuMOyDsq4w7IOGEjeGFqeGGtzsg7KuMOyDhhI3hhanhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEpKT00KK0NBQ0Q7Q0FDRDsxMTBEIDExNjkgMTFCODtDQUNEOzExMEQgMTE2OSAxMUI4OyAjICjsq407IOyrjTsg4YSN4YWp4Ya4OyDsq407IOGEjeGFqeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpPQgorQ0FDRTtDQUNFOzExMEQgMTE2OSAxMUI5O0NBQ0U7MTEwRCAxMTY5IDExQjk7ICMgKOyrjjsg7KuOOyDhhI3hhanhhrk7IOyrjjsg4YSN4YWp4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKSk9CUworQ0FDRjtDQUNGOzExMEQgMTE2OSAxMUJBO0NBQ0Y7MTEwRCAxMTY5IDExQkE7ICMgKOyrjzsg7KuPOyDhhI3hhanhhro7IOyrjzsg4YSN4YWp4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBKSk9TCitDQUQwO0NBRDA7MTEwRCAxMTY5IDExQkI7Q0FEMDsxMTBEIDExNjkgMTFCQjsgIyAo7KuQOyDsq5A7IOGEjeGFqeGGuzsg7KuQOyDhhI3hhanhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEpKT1NTCitDQUQxO0NBRDE7MTEwRCAxMTY5IDExQkM7Q0FEMTsxMTBEIDExNjkgMTFCQzsgIyAo7KuROyDsq5E7IOGEjeGFqeGGvDsg7KuROyDhhI3hhanhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpKT05HCitDQUQyO0NBRDI7MTEwRCAxMTY5IDExQkQ7Q0FEMjsxMTBEIDExNjkgMTFCRDsgIyAo7KuSOyDsq5I7IOGEjeGFqeGGvTsg7KuSOyDhhI3hhanhhr07ICkgSEFOR1VMIFNZTExBQkxFIEpKT0oKK0NBRDM7Q0FEMzsxMTBEIDExNjkgMTFCRTtDQUQzOzExMEQgMTE2OSAxMUJFOyAjICjsq5M7IOyrkzsg4YSN4YWp4Ya+OyDsq5M7IOGEjeGFqeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpPQworQ0FENDtDQUQ0OzExMEQgMTE2OSAxMUJGO0NBRDQ7MTEwRCAxMTY5IDExQkY7ICMgKOyrlDsg7KuUOyDhhI3hhanhhr87IOyrlDsg4YSN4YWp4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKSk9LCitDQUQ1O0NBRDU7MTEwRCAxMTY5IDExQzA7Q0FENTsxMTBEIDExNjkgMTFDMDsgIyAo7KuVOyDsq5U7IOGEjeGFqeGHgDsg7KuVOyDhhI3hhanhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEpKT1QKK0NBRDY7Q0FENjsxMTBEIDExNjkgMTFDMTtDQUQ2OzExMEQgMTE2OSAxMUMxOyAjICjsq5Y7IOyrljsg4YSN4YWp4YeBOyDsq5Y7IOGEjeGFqeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpPUAorQ0FENztDQUQ3OzExMEQgMTE2OSAxMUMyO0NBRDc7MTEwRCAxMTY5IDExQzI7ICMgKOyrlzsg7KuXOyDhhI3hhanhh4I7IOyrlzsg4YSN4YWp4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKSk9ICitDQUQ4O0NBRDg7MTEwRCAxMTZBO0NBRDg7MTEwRCAxMTZBOyAjICjsq5g7IOyrmDsg4YSN4YWqOyDsq5g7IOGEjeGFqjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXQQorQ0FEOTtDQUQ5OzExMEQgMTE2QSAxMUE4O0NBRDk7MTEwRCAxMTZBIDExQTg7ICMgKOyrmTsg7KuZOyDhhI3hharhhqg7IOyrmTsg4YSN4YWq4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBKSldBRworQ0FEQTtDQURBOzExMEQgMTE2QSAxMUE5O0NBREE7MTEwRCAxMTZBIDExQTk7ICMgKOyrmjsg7KuaOyDhhI3hharhhqk7IOyrmjsg4YSN4YWq4YapOyApIEhBTkdVTCBTWUxMQUJMRSBKSldBR0cKK0NBREI7Q0FEQjsxMTBEIDExNkEgMTFBQTtDQURCOzExMEQgMTE2QSAxMUFBOyAjICjsq5s7IOyrmzsg4YSN4YWq4YaqOyDsq5s7IOGEjeGFquGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXQUdTCitDQURDO0NBREM7MTEwRCAxMTZBIDExQUI7Q0FEQzsxMTBEIDExNkEgMTFBQjsgIyAo7KucOyDsq5w7IOGEjeGFquGGqzsg7KucOyDhhI3hharhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FOCitDQUREO0NBREQ7MTEwRCAxMTZBIDExQUM7Q0FERDsxMTBEIDExNkEgMTFBQzsgIyAo7KudOyDsq507IOGEjeGFquGGrDsg7KudOyDhhI3hharhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FOSgorQ0FERTtDQURFOzExMEQgMTE2QSAxMUFEO0NBREU7MTEwRCAxMTZBIDExQUQ7ICMgKOyrnjsg7KueOyDhhI3hharhhq07IOyrnjsg4YSN4YWq4YatOyApIEhBTkdVTCBTWUxMQUJMRSBKSldBTkgKK0NBREY7Q0FERjsxMTBEIDExNkEgMTFBRTtDQURGOzExMEQgMTE2QSAxMUFFOyAjICjsq587IOyrnzsg4YSN4YWq4YauOyDsq587IOGEjeGFquGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXQUQKK0NBRTA7Q0FFMDsxMTBEIDExNkEgMTFBRjtDQUUwOzExMEQgMTE2QSAxMUFGOyAjICjsq6A7IOyroDsg4YSN4YWq4YavOyDsq6A7IOGEjeGFquGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXQUwKK0NBRTE7Q0FFMTsxMTBEIDExNkEgMTFCMDtDQUUxOzExMEQgMTE2QSAxMUIwOyAjICjsq6E7IOyroTsg4YSN4YWq4YawOyDsq6E7IOGEjeGFquGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXQUxHCitDQUUyO0NBRTI7MTEwRCAxMTZBIDExQjE7Q0FFMjsxMTBEIDExNkEgMTFCMTsgIyAo7KuiOyDsq6I7IOGEjeGFquGGsTsg7KuiOyDhhI3hharhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FMTQorQ0FFMztDQUUzOzExMEQgMTE2QSAxMUIyO0NBRTM7MTEwRCAxMTZBIDExQjI7ICMgKOyrozsg7KujOyDhhI3hharhhrI7IOyrozsg4YSN4YWq4YayOyApIEhBTkdVTCBTWUxMQUJMRSBKSldBTEIKK0NBRTQ7Q0FFNDsxMTBEIDExNkEgMTFCMztDQUU0OzExMEQgMTE2QSAxMUIzOyAjICjsq6Q7IOyrpDsg4YSN4YWq4YazOyDsq6Q7IOGEjeGFquGGszsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXQUxTCitDQUU1O0NBRTU7MTEwRCAxMTZBIDExQjQ7Q0FFNTsxMTBEIDExNkEgMTFCNDsgIyAo7KulOyDsq6U7IOGEjeGFquGGtDsg7KulOyDhhI3hharhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FMVAorQ0FFNjtDQUU2OzExMEQgMTE2QSAxMUI1O0NBRTY7MTEwRCAxMTZBIDExQjU7ICMgKOyrpjsg7KumOyDhhI3hharhhrU7IOyrpjsg4YSN4YWq4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBKSldBTFAKK0NBRTc7Q0FFNzsxMTBEIDExNkEgMTFCNjtDQUU3OzExMEQgMTE2QSAxMUI2OyAjICjsq6c7IOyrpzsg4YSN4YWq4Ya2OyDsq6c7IOGEjeGFquGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXQUxICitDQUU4O0NBRTg7MTEwRCAxMTZBIDExQjc7Q0FFODsxMTBEIDExNkEgMTFCNzsgIyAo7KuoOyDsq6g7IOGEjeGFquGGtzsg7KuoOyDhhI3hharhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FNCitDQUU5O0NBRTk7MTEwRCAxMTZBIDExQjg7Q0FFOTsxMTBEIDExNkEgMTFCODsgIyAo7KupOyDsq6k7IOGEjeGFquGGuDsg7KupOyDhhI3hharhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FCCitDQUVBO0NBRUE7MTEwRCAxMTZBIDExQjk7Q0FFQTsxMTBEIDExNkEgMTFCOTsgIyAo7KuqOyDsq6o7IOGEjeGFquGGuTsg7KuqOyDhhI3hharhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FCUworQ0FFQjtDQUVCOzExMEQgMTE2QSAxMUJBO0NBRUI7MTEwRCAxMTZBIDExQkE7ICMgKOyrqzsg7KurOyDhhI3hharhhro7IOyrqzsg4YSN4YWq4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBKSldBUworQ0FFQztDQUVDOzExMEQgMTE2QSAxMUJCO0NBRUM7MTEwRCAxMTZBIDExQkI7ICMgKOyrrDsg7KusOyDhhI3hharhhrs7IOyrrDsg4YSN4YWq4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBKSldBU1MKK0NBRUQ7Q0FFRDsxMTBEIDExNkEgMTFCQztDQUVEOzExMEQgMTE2QSAxMUJDOyAjICjsq607IOyrrTsg4YSN4YWq4Ya8OyDsq607IOGEjeGFquGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXQU5HCitDQUVFO0NBRUU7MTEwRCAxMTZBIDExQkQ7Q0FFRTsxMTBEIDExNkEgMTFCRDsgIyAo7KuuOyDsq647IOGEjeGFquGGvTsg7KuuOyDhhI3hharhhr07ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FKCitDQUVGO0NBRUY7MTEwRCAxMTZBIDExQkU7Q0FFRjsxMTBEIDExNkEgMTFCRTsgIyAo7KuvOyDsq687IOGEjeGFquGGvjsg7KuvOyDhhI3hharhhr47ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FDCitDQUYwO0NBRjA7MTEwRCAxMTZBIDExQkY7Q0FGMDsxMTBEIDExNkEgMTFCRjsgIyAo7KuwOyDsq7A7IOGEjeGFquGGvzsg7KuwOyDhhI3hharhhr87ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FLCitDQUYxO0NBRjE7MTEwRCAxMTZBIDExQzA7Q0FGMTsxMTBEIDExNkEgMTFDMDsgIyAo7KuxOyDsq7E7IOGEjeGFquGHgDsg7KuxOyDhhI3hharhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FUCitDQUYyO0NBRjI7MTEwRCAxMTZBIDExQzE7Q0FGMjsxMTBEIDExNkEgMTFDMTsgIyAo7KuyOyDsq7I7IOGEjeGFquGHgTsg7KuyOyDhhI3hharhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FQCitDQUYzO0NBRjM7MTEwRCAxMTZBIDExQzI7Q0FGMzsxMTBEIDExNkEgMTFDMjsgIyAo7KuzOyDsq7M7IOGEjeGFquGHgjsg7KuzOyDhhI3hharhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FICitDQUY0O0NBRjQ7MTEwRCAxMTZCO0NBRjQ7MTEwRCAxMTZCOyAjICjsq7Q7IOyrtDsg4YSN4YWrOyDsq7Q7IOGEjeGFqzsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXQUUKK0NBRjU7Q0FGNTsxMTBEIDExNkIgMTFBODtDQUY1OzExMEQgMTE2QiAxMUE4OyAjICjsq7U7IOyrtTsg4YSN4YWr4YaoOyDsq7U7IOGEjeGFq+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXQUVHCitDQUY2O0NBRjY7MTEwRCAxMTZCIDExQTk7Q0FGNjsxMTBEIDExNkIgMTFBOTsgIyAo7Ku2OyDsq7Y7IOGEjeGFq+GGqTsg7Ku2OyDhhI3hhavhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FFR0cKK0NBRjc7Q0FGNzsxMTBEIDExNkIgMTFBQTtDQUY3OzExMEQgMTE2QiAxMUFBOyAjICjsq7c7IOyrtzsg4YSN4YWr4YaqOyDsq7c7IOGEjeGFq+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXQUVHUworQ0FGODtDQUY4OzExMEQgMTE2QiAxMUFCO0NBRjg7MTEwRCAxMTZCIDExQUI7ICMgKOyruDsg7Ku4OyDhhI3hhavhhqs7IOyruDsg4YSN4YWr4YarOyApIEhBTkdVTCBTWUxMQUJMRSBKSldBRU4KK0NBRjk7Q0FGOTsxMTBEIDExNkIgMTFBQztDQUY5OzExMEQgMTE2QiAxMUFDOyAjICjsq7k7IOyruTsg4YSN4YWr4YasOyDsq7k7IOGEjeGFq+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXQUVOSgorQ0FGQTtDQUZBOzExMEQgMTE2QiAxMUFEO0NBRkE7MTEwRCAxMTZCIDExQUQ7ICMgKOyrujsg7Ku6OyDhhI3hhavhhq07IOyrujsg4YSN4YWr4YatOyApIEhBTkdVTCBTWUxMQUJMRSBKSldBRU5ICitDQUZCO0NBRkI7MTEwRCAxMTZCIDExQUU7Q0FGQjsxMTBEIDExNkIgMTFBRTsgIyAo7Ku7OyDsq7s7IOGEjeGFq+GGrjsg7Ku7OyDhhI3hhavhhq47ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FFRAorQ0FGQztDQUZDOzExMEQgMTE2QiAxMUFGO0NBRkM7MTEwRCAxMTZCIDExQUY7ICMgKOyrvDsg7Ku8OyDhhI3hhavhhq87IOyrvDsg4YSN4YWr4YavOyApIEhBTkdVTCBTWUxMQUJMRSBKSldBRUwKK0NBRkQ7Q0FGRDsxMTBEIDExNkIgMTFCMDtDQUZEOzExMEQgMTE2QiAxMUIwOyAjICjsq707IOyrvTsg4YSN4YWr4YawOyDsq707IOGEjeGFq+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXQUVMRworQ0FGRTtDQUZFOzExMEQgMTE2QiAxMUIxO0NBRkU7MTEwRCAxMTZCIDExQjE7ICMgKOyrvjsg7Ku+OyDhhI3hhavhhrE7IOyrvjsg4YSN4YWr4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKSldBRUxNCitDQUZGO0NBRkY7MTEwRCAxMTZCIDExQjI7Q0FGRjsxMTBEIDExNkIgMTFCMjsgIyAo7Ku/OyDsq787IOGEjeGFq+GGsjsg7Ku/OyDhhI3hhavhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FFTEIKK0NCMDA7Q0IwMDsxMTBEIDExNkIgMTFCMztDQjAwOzExMEQgMTE2QiAxMUIzOyAjICjsrIA7IOysgDsg4YSN4YWr4YazOyDsrIA7IOGEjeGFq+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXQUVMUworQ0IwMTtDQjAxOzExMEQgMTE2QiAxMUI0O0NCMDE7MTEwRCAxMTZCIDExQjQ7ICMgKOysgTsg7KyBOyDhhI3hhavhhrQ7IOysgTsg4YSN4YWr4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKSldBRUxUCitDQjAyO0NCMDI7MTEwRCAxMTZCIDExQjU7Q0IwMjsxMTBEIDExNkIgMTFCNTsgIyAo7KyCOyDsrII7IOGEjeGFq+GGtTsg7KyCOyDhhI3hhavhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FFTFAKK0NCMDM7Q0IwMzsxMTBEIDExNkIgMTFCNjtDQjAzOzExMEQgMTE2QiAxMUI2OyAjICjsrIM7IOysgzsg4YSN4YWr4Ya2OyDsrIM7IOGEjeGFq+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXQUVMSAorQ0IwNDtDQjA0OzExMEQgMTE2QiAxMUI3O0NCMDQ7MTEwRCAxMTZCIDExQjc7ICMgKOyshDsg7KyEOyDhhI3hhavhhrc7IOyshDsg4YSN4YWr4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKSldBRU0KK0NCMDU7Q0IwNTsxMTBEIDExNkIgMTFCODtDQjA1OzExMEQgMTE2QiAxMUI4OyAjICjsrIU7IOyshTsg4YSN4YWr4Ya4OyDsrIU7IOGEjeGFq+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXQUVCCitDQjA2O0NCMDY7MTEwRCAxMTZCIDExQjk7Q0IwNjsxMTBEIDExNkIgMTFCOTsgIyAo7KyGOyDsrIY7IOGEjeGFq+GGuTsg7KyGOyDhhI3hhavhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FFQlMKK0NCMDc7Q0IwNzsxMTBEIDExNkIgMTFCQTtDQjA3OzExMEQgMTE2QiAxMUJBOyAjICjsrIc7IOyshzsg4YSN4YWr4Ya6OyDsrIc7IOGEjeGFq+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXQUVTCitDQjA4O0NCMDg7MTEwRCAxMTZCIDExQkI7Q0IwODsxMTBEIDExNkIgMTFCQjsgIyAo7KyIOyDsrIg7IOGEjeGFq+GGuzsg7KyIOyDhhI3hhavhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FFU1MKK0NCMDk7Q0IwOTsxMTBEIDExNkIgMTFCQztDQjA5OzExMEQgMTE2QiAxMUJDOyAjICjsrIk7IOysiTsg4YSN4YWr4Ya8OyDsrIk7IOGEjeGFq+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXQUVORworQ0IwQTtDQjBBOzExMEQgMTE2QiAxMUJEO0NCMEE7MTEwRCAxMTZCIDExQkQ7ICMgKOysijsg7KyKOyDhhI3hhavhhr07IOysijsg4YSN4YWr4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKSldBRUoKK0NCMEI7Q0IwQjsxMTBEIDExNkIgMTFCRTtDQjBCOzExMEQgMTE2QiAxMUJFOyAjICjsrIs7IOysizsg4YSN4YWr4Ya+OyDsrIs7IOGEjeGFq+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXQUVDCitDQjBDO0NCMEM7MTEwRCAxMTZCIDExQkY7Q0IwQzsxMTBEIDExNkIgMTFCRjsgIyAo7KyMOyDsrIw7IOGEjeGFq+GGvzsg7KyMOyDhhI3hhavhhr87ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FFSworQ0IwRDtDQjBEOzExMEQgMTE2QiAxMUMwO0NCMEQ7MTEwRCAxMTZCIDExQzA7ICMgKOysjTsg7KyNOyDhhI3hhavhh4A7IOysjTsg4YSN4YWr4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKSldBRVQKK0NCMEU7Q0IwRTsxMTBEIDExNkIgMTFDMTtDQjBFOzExMEQgMTE2QiAxMUMxOyAjICjsrI47IOysjjsg4YSN4YWr4YeBOyDsrI47IOGEjeGFq+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXQUVQCitDQjBGO0NCMEY7MTEwRCAxMTZCIDExQzI7Q0IwRjsxMTBEIDExNkIgMTFDMjsgIyAo7KyPOyDsrI87IOGEjeGFq+GHgjsg7KyPOyDhhI3hhavhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0FFSAorQ0IxMDtDQjEwOzExMEQgMTE2QztDQjEwOzExMEQgMTE2QzsgIyAo7KyQOyDsrJA7IOGEjeGFrDsg7KyQOyDhhI3hhaw7ICkgSEFOR1VMIFNZTExBQkxFIEpKT0UKK0NCMTE7Q0IxMTsxMTBEIDExNkMgMTFBODtDQjExOzExMEQgMTE2QyAxMUE4OyAjICjsrJE7IOyskTsg4YSN4YWs4YaoOyDsrJE7IOGEjeGFrOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpPRUcKK0NCMTI7Q0IxMjsxMTBEIDExNkMgMTFBOTtDQjEyOzExMEQgMTE2QyAxMUE5OyAjICjsrJI7IOyskjsg4YSN4YWs4YapOyDsrJI7IOGEjeGFrOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpPRUdHCitDQjEzO0NCMTM7MTEwRCAxMTZDIDExQUE7Q0IxMzsxMTBEIDExNkMgMTFBQTsgIyAo7KyTOyDsrJM7IOGEjeGFrOGGqjsg7KyTOyDhhI3hhazhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpKT0VHUworQ0IxNDtDQjE0OzExMEQgMTE2QyAxMUFCO0NCMTQ7MTEwRCAxMTZDIDExQUI7ICMgKOyslDsg7KyUOyDhhI3hhazhhqs7IOyslDsg4YSN4YWs4YarOyApIEhBTkdVTCBTWUxMQUJMRSBKSk9FTgorQ0IxNTtDQjE1OzExMEQgMTE2QyAxMUFDO0NCMTU7MTEwRCAxMTZDIDExQUM7ICMgKOyslTsg7KyVOyDhhI3hhazhhqw7IOyslTsg4YSN4YWs4YasOyApIEhBTkdVTCBTWUxMQUJMRSBKSk9FTkoKK0NCMTY7Q0IxNjsxMTBEIDExNkMgMTFBRDtDQjE2OzExMEQgMTE2QyAxMUFEOyAjICjsrJY7IOysljsg4YSN4YWs4YatOyDsrJY7IOGEjeGFrOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpPRU5ICitDQjE3O0NCMTc7MTEwRCAxMTZDIDExQUU7Q0IxNzsxMTBEIDExNkMgMTFBRTsgIyAo7KyXOyDsrJc7IOGEjeGFrOGGrjsg7KyXOyDhhI3hhazhhq47ICkgSEFOR1VMIFNZTExBQkxFIEpKT0VECitDQjE4O0NCMTg7MTEwRCAxMTZDIDExQUY7Q0IxODsxMTBEIDExNkMgMTFBRjsgIyAo7KyYOyDsrJg7IOGEjeGFrOGGrzsg7KyYOyDhhI3hhazhhq87ICkgSEFOR1VMIFNZTExBQkxFIEpKT0VMCitDQjE5O0NCMTk7MTEwRCAxMTZDIDExQjA7Q0IxOTsxMTBEIDExNkMgMTFCMDsgIyAo7KyZOyDsrJk7IOGEjeGFrOGGsDsg7KyZOyDhhI3hhazhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpKT0VMRworQ0IxQTtDQjFBOzExMEQgMTE2QyAxMUIxO0NCMUE7MTEwRCAxMTZDIDExQjE7ICMgKOysmjsg7KyaOyDhhI3hhazhhrE7IOysmjsg4YSN4YWs4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKSk9FTE0KK0NCMUI7Q0IxQjsxMTBEIDExNkMgMTFCMjtDQjFCOzExMEQgMTE2QyAxMUIyOyAjICjsrJs7IOysmzsg4YSN4YWs4YayOyDsrJs7IOGEjeGFrOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpPRUxCCitDQjFDO0NCMUM7MTEwRCAxMTZDIDExQjM7Q0IxQzsxMTBEIDExNkMgMTFCMzsgIyAo7KycOyDsrJw7IOGEjeGFrOGGszsg7KycOyDhhI3hhazhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpKT0VMUworQ0IxRDtDQjFEOzExMEQgMTE2QyAxMUI0O0NCMUQ7MTEwRCAxMTZDIDExQjQ7ICMgKOysnTsg7KydOyDhhI3hhazhhrQ7IOysnTsg4YSN4YWs4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKSk9FTFQKK0NCMUU7Q0IxRTsxMTBEIDExNkMgMTFCNTtDQjFFOzExMEQgMTE2QyAxMUI1OyAjICjsrJ47IOysnjsg4YSN4YWs4Ya1OyDsrJ47IOGEjeGFrOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpPRUxQCitDQjFGO0NCMUY7MTEwRCAxMTZDIDExQjY7Q0IxRjsxMTBEIDExNkMgMTFCNjsgIyAo7KyfOyDsrJ87IOGEjeGFrOGGtjsg7KyfOyDhhI3hhazhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpKT0VMSAorQ0IyMDtDQjIwOzExMEQgMTE2QyAxMUI3O0NCMjA7MTEwRCAxMTZDIDExQjc7ICMgKOysoDsg7KygOyDhhI3hhazhhrc7IOysoDsg4YSN4YWs4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKSk9FTQorQ0IyMTtDQjIxOzExMEQgMTE2QyAxMUI4O0NCMjE7MTEwRCAxMTZDIDExQjg7ICMgKOysoTsg7KyhOyDhhI3hhazhhrg7IOysoTsg4YSN4YWs4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBKSk9FQgorQ0IyMjtDQjIyOzExMEQgMTE2QyAxMUI5O0NCMjI7MTEwRCAxMTZDIDExQjk7ICMgKOysojsg7KyiOyDhhI3hhazhhrk7IOysojsg4YSN4YWs4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKSk9FQlMKK0NCMjM7Q0IyMzsxMTBEIDExNkMgMTFCQTtDQjIzOzExMEQgMTE2QyAxMUJBOyAjICjsrKM7IOysozsg4YSN4YWs4Ya6OyDsrKM7IOGEjeGFrOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSkpPRVMKK0NCMjQ7Q0IyNDsxMTBEIDExNkMgMTFCQjtDQjI0OzExMEQgMTE2QyAxMUJCOyAjICjsrKQ7IOyspDsg4YSN4YWs4Ya7OyDsrKQ7IOGEjeGFrOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSkpPRVNTCitDQjI1O0NCMjU7MTEwRCAxMTZDIDExQkM7Q0IyNTsxMTBEIDExNkMgMTFCQzsgIyAo7KylOyDsrKU7IOGEjeGFrOGGvDsg7KylOyDhhI3hhazhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpKT0VORworQ0IyNjtDQjI2OzExMEQgMTE2QyAxMUJEO0NCMjY7MTEwRCAxMTZDIDExQkQ7ICMgKOyspjsg7KymOyDhhI3hhazhhr07IOyspjsg4YSN4YWs4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKSk9FSgorQ0IyNztDQjI3OzExMEQgMTE2QyAxMUJFO0NCMjc7MTEwRCAxMTZDIDExQkU7ICMgKOyspzsg7KynOyDhhI3hhazhhr47IOyspzsg4YSN4YWs4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBKSk9FQworQ0IyODtDQjI4OzExMEQgMTE2QyAxMUJGO0NCMjg7MTEwRCAxMTZDIDExQkY7ICMgKOysqDsg7KyoOyDhhI3hhazhhr87IOysqDsg4YSN4YWs4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKSk9FSworQ0IyOTtDQjI5OzExMEQgMTE2QyAxMUMwO0NCMjk7MTEwRCAxMTZDIDExQzA7ICMgKOysqTsg7KypOyDhhI3hhazhh4A7IOysqTsg4YSN4YWs4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKSk9FVAorQ0IyQTtDQjJBOzExMEQgMTE2QyAxMUMxO0NCMkE7MTEwRCAxMTZDIDExQzE7ICMgKOysqjsg7KyqOyDhhI3hhazhh4E7IOysqjsg4YSN4YWs4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBKSk9FUAorQ0IyQjtDQjJCOzExMEQgMTE2QyAxMUMyO0NCMkI7MTEwRCAxMTZDIDExQzI7ICMgKOysqzsg7KyrOyDhhI3hhazhh4I7IOysqzsg4YSN4YWs4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKSk9FSAorQ0IyQztDQjJDOzExMEQgMTE2RDtDQjJDOzExMEQgMTE2RDsgIyAo7KysOyDsrKw7IOGEjeGFrTsg7KysOyDhhI3hha07ICkgSEFOR1VMIFNZTExBQkxFIEpKWU8KK0NCMkQ7Q0IyRDsxMTBEIDExNkQgMTFBODtDQjJEOzExMEQgMTE2RCAxMUE4OyAjICjsrK07IOysrTsg4YSN4YWt4YaoOyDsrK07IOGEjeGFreGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZT0cKK0NCMkU7Q0IyRTsxMTBEIDExNkQgMTFBOTtDQjJFOzExMEQgMTE2RCAxMUE5OyAjICjsrK47IOysrjsg4YSN4YWt4YapOyDsrK47IOGEjeGFreGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZT0dHCitDQjJGO0NCMkY7MTEwRCAxMTZEIDExQUE7Q0IyRjsxMTBEIDExNkQgMTFBQTsgIyAo7KyvOyDsrK87IOGEjeGFreGGqjsg7KyvOyDhhI3hha3hhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpKWU9HUworQ0IzMDtDQjMwOzExMEQgMTE2RCAxMUFCO0NCMzA7MTEwRCAxMTZEIDExQUI7ICMgKOyssDsg7KywOyDhhI3hha3hhqs7IOyssDsg4YSN4YWt4YarOyApIEhBTkdVTCBTWUxMQUJMRSBKSllPTgorQ0IzMTtDQjMxOzExMEQgMTE2RCAxMUFDO0NCMzE7MTEwRCAxMTZEIDExQUM7ICMgKOyssTsg7KyxOyDhhI3hha3hhqw7IOyssTsg4YSN4YWt4YasOyApIEhBTkdVTCBTWUxMQUJMRSBKSllPTkoKK0NCMzI7Q0IzMjsxMTBEIDExNkQgMTFBRDtDQjMyOzExMEQgMTE2RCAxMUFEOyAjICjsrLI7IOyssjsg4YSN4YWt4YatOyDsrLI7IOGEjeGFreGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZT05ICitDQjMzO0NCMzM7MTEwRCAxMTZEIDExQUU7Q0IzMzsxMTBEIDExNkQgMTFBRTsgIyAo7KyzOyDsrLM7IOGEjeGFreGGrjsg7KyzOyDhhI3hha3hhq47ICkgSEFOR1VMIFNZTExBQkxFIEpKWU9ECitDQjM0O0NCMzQ7MTEwRCAxMTZEIDExQUY7Q0IzNDsxMTBEIDExNkQgMTFBRjsgIyAo7Ky0OyDsrLQ7IOGEjeGFreGGrzsg7Ky0OyDhhI3hha3hhq87ICkgSEFOR1VMIFNZTExBQkxFIEpKWU9MCitDQjM1O0NCMzU7MTEwRCAxMTZEIDExQjA7Q0IzNTsxMTBEIDExNkQgMTFCMDsgIyAo7Ky1OyDsrLU7IOGEjeGFreGGsDsg7Ky1OyDhhI3hha3hhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpKWU9MRworQ0IzNjtDQjM2OzExMEQgMTE2RCAxMUIxO0NCMzY7MTEwRCAxMTZEIDExQjE7ICMgKOystjsg7Ky2OyDhhI3hha3hhrE7IOystjsg4YSN4YWt4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKSllPTE0KK0NCMzc7Q0IzNzsxMTBEIDExNkQgMTFCMjtDQjM3OzExMEQgMTE2RCAxMUIyOyAjICjsrLc7IOystzsg4YSN4YWt4YayOyDsrLc7IOGEjeGFreGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZT0xCCitDQjM4O0NCMzg7MTEwRCAxMTZEIDExQjM7Q0IzODsxMTBEIDExNkQgMTFCMzsgIyAo7Ky4OyDsrLg7IOGEjeGFreGGszsg7Ky4OyDhhI3hha3hhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpKWU9MUworQ0IzOTtDQjM5OzExMEQgMTE2RCAxMUI0O0NCMzk7MTEwRCAxMTZEIDExQjQ7ICMgKOysuTsg7Ky5OyDhhI3hha3hhrQ7IOysuTsg4YSN4YWt4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKSllPTFQKK0NCM0E7Q0IzQTsxMTBEIDExNkQgMTFCNTtDQjNBOzExMEQgMTE2RCAxMUI1OyAjICjsrLo7IOysujsg4YSN4YWt4Ya1OyDsrLo7IOGEjeGFreGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZT0xQCitDQjNCO0NCM0I7MTEwRCAxMTZEIDExQjY7Q0IzQjsxMTBEIDExNkQgMTFCNjsgIyAo7Ky7OyDsrLs7IOGEjeGFreGGtjsg7Ky7OyDhhI3hha3hhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpKWU9MSAorQ0IzQztDQjNDOzExMEQgMTE2RCAxMUI3O0NCM0M7MTEwRCAxMTZEIDExQjc7ICMgKOysvDsg7Ky8OyDhhI3hha3hhrc7IOysvDsg4YSN4YWt4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKSllPTQorQ0IzRDtDQjNEOzExMEQgMTE2RCAxMUI4O0NCM0Q7MTEwRCAxMTZEIDExQjg7ICMgKOysvTsg7Ky9OyDhhI3hha3hhrg7IOysvTsg4YSN4YWt4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBKSllPQgorQ0IzRTtDQjNFOzExMEQgMTE2RCAxMUI5O0NCM0U7MTEwRCAxMTZEIDExQjk7ICMgKOysvjsg7Ky+OyDhhI3hha3hhrk7IOysvjsg4YSN4YWt4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKSllPQlMKK0NCM0Y7Q0IzRjsxMTBEIDExNkQgMTFCQTtDQjNGOzExMEQgMTE2RCAxMUJBOyAjICjsrL87IOysvzsg4YSN4YWt4Ya6OyDsrL87IOGEjeGFreGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZT1MKK0NCNDA7Q0I0MDsxMTBEIDExNkQgMTFCQjtDQjQwOzExMEQgMTE2RCAxMUJCOyAjICjsrYA7IOytgDsg4YSN4YWt4Ya7OyDsrYA7IOGEjeGFreGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZT1NTCitDQjQxO0NCNDE7MTEwRCAxMTZEIDExQkM7Q0I0MTsxMTBEIDExNkQgMTFCQzsgIyAo7K2BOyDsrYE7IOGEjeGFreGGvDsg7K2BOyDhhI3hha3hhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpKWU9ORworQ0I0MjtDQjQyOzExMEQgMTE2RCAxMUJEO0NCNDI7MTEwRCAxMTZEIDExQkQ7ICMgKOytgjsg7K2COyDhhI3hha3hhr07IOytgjsg4YSN4YWt4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKSllPSgorQ0I0MztDQjQzOzExMEQgMTE2RCAxMUJFO0NCNDM7MTEwRCAxMTZEIDExQkU7ICMgKOytgzsg7K2DOyDhhI3hha3hhr47IOytgzsg4YSN4YWt4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBKSllPQworQ0I0NDtDQjQ0OzExMEQgMTE2RCAxMUJGO0NCNDQ7MTEwRCAxMTZEIDExQkY7ICMgKOythDsg7K2EOyDhhI3hha3hhr87IOythDsg4YSN4YWt4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKSllPSworQ0I0NTtDQjQ1OzExMEQgMTE2RCAxMUMwO0NCNDU7MTEwRCAxMTZEIDExQzA7ICMgKOythTsg7K2FOyDhhI3hha3hh4A7IOythTsg4YSN4YWt4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKSllPVAorQ0I0NjtDQjQ2OzExMEQgMTE2RCAxMUMxO0NCNDY7MTEwRCAxMTZEIDExQzE7ICMgKOythjsg7K2GOyDhhI3hha3hh4E7IOythjsg4YSN4YWt4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBKSllPUAorQ0I0NztDQjQ3OzExMEQgMTE2RCAxMUMyO0NCNDc7MTEwRCAxMTZEIDExQzI7ICMgKOythzsg7K2HOyDhhI3hha3hh4I7IOythzsg4YSN4YWt4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKSllPSAorQ0I0ODtDQjQ4OzExMEQgMTE2RTtDQjQ4OzExMEQgMTE2RTsgIyAo7K2IOyDsrYg7IOGEjeGFrjsg7K2IOyDhhI3hha47ICkgSEFOR1VMIFNZTExBQkxFIEpKVQorQ0I0OTtDQjQ5OzExMEQgMTE2RSAxMUE4O0NCNDk7MTEwRCAxMTZFIDExQTg7ICMgKOytiTsg7K2JOyDhhI3hha7hhqg7IOytiTsg4YSN4YWu4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBKSlVHCitDQjRBO0NCNEE7MTEwRCAxMTZFIDExQTk7Q0I0QTsxMTBEIDExNkUgMTFBOTsgIyAo7K2KOyDsrYo7IOGEjeGFruGGqTsg7K2KOyDhhI3hha7hhqk7ICkgSEFOR1VMIFNZTExBQkxFIEpKVUdHCitDQjRCO0NCNEI7MTEwRCAxMTZFIDExQUE7Q0I0QjsxMTBEIDExNkUgMTFBQTsgIyAo7K2LOyDsrYs7IOGEjeGFruGGqjsg7K2LOyDhhI3hha7hhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpKVUdTCitDQjRDO0NCNEM7MTEwRCAxMTZFIDExQUI7Q0I0QzsxMTBEIDExNkUgMTFBQjsgIyAo7K2MOyDsrYw7IOGEjeGFruGGqzsg7K2MOyDhhI3hha7hhqs7ICkgSEFOR1VMIFNZTExBQkxFIEpKVU4KK0NCNEQ7Q0I0RDsxMTBEIDExNkUgMTFBQztDQjREOzExMEQgMTE2RSAxMUFDOyAjICjsrY07IOytjTsg4YSN4YWu4YasOyDsrY07IOGEjeGFruGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpVTkoKK0NCNEU7Q0I0RTsxMTBEIDExNkUgMTFBRDtDQjRFOzExMEQgMTE2RSAxMUFEOyAjICjsrY47IOytjjsg4YSN4YWu4YatOyDsrY47IOGEjeGFruGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpVTkgKK0NCNEY7Q0I0RjsxMTBEIDExNkUgMTFBRTtDQjRGOzExMEQgMTE2RSAxMUFFOyAjICjsrY87IOytjzsg4YSN4YWu4YauOyDsrY87IOGEjeGFruGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpVRAorQ0I1MDtDQjUwOzExMEQgMTE2RSAxMUFGO0NCNTA7MTEwRCAxMTZFIDExQUY7ICMgKOytkDsg7K2QOyDhhI3hha7hhq87IOytkDsg4YSN4YWu4YavOyApIEhBTkdVTCBTWUxMQUJMRSBKSlVMCitDQjUxO0NCNTE7MTEwRCAxMTZFIDExQjA7Q0I1MTsxMTBEIDExNkUgMTFCMDsgIyAo7K2ROyDsrZE7IOGEjeGFruGGsDsg7K2ROyDhhI3hha7hhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpKVUxHCitDQjUyO0NCNTI7MTEwRCAxMTZFIDExQjE7Q0I1MjsxMTBEIDExNkUgMTFCMTsgIyAo7K2SOyDsrZI7IOGEjeGFruGGsTsg7K2SOyDhhI3hha7hhrE7ICkgSEFOR1VMIFNZTExBQkxFIEpKVUxNCitDQjUzO0NCNTM7MTEwRCAxMTZFIDExQjI7Q0I1MzsxMTBEIDExNkUgMTFCMjsgIyAo7K2TOyDsrZM7IOGEjeGFruGGsjsg7K2TOyDhhI3hha7hhrI7ICkgSEFOR1VMIFNZTExBQkxFIEpKVUxCCitDQjU0O0NCNTQ7MTEwRCAxMTZFIDExQjM7Q0I1NDsxMTBEIDExNkUgMTFCMzsgIyAo7K2UOyDsrZQ7IOGEjeGFruGGszsg7K2UOyDhhI3hha7hhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpKVUxTCitDQjU1O0NCNTU7MTEwRCAxMTZFIDExQjQ7Q0I1NTsxMTBEIDExNkUgMTFCNDsgIyAo7K2VOyDsrZU7IOGEjeGFruGGtDsg7K2VOyDhhI3hha7hhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEpKVUxUCitDQjU2O0NCNTY7MTEwRCAxMTZFIDExQjU7Q0I1NjsxMTBEIDExNkUgMTFCNTsgIyAo7K2WOyDsrZY7IOGEjeGFruGGtTsg7K2WOyDhhI3hha7hhrU7ICkgSEFOR1VMIFNZTExBQkxFIEpKVUxQCitDQjU3O0NCNTc7MTEwRCAxMTZFIDExQjY7Q0I1NzsxMTBEIDExNkUgMTFCNjsgIyAo7K2XOyDsrZc7IOGEjeGFruGGtjsg7K2XOyDhhI3hha7hhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpKVUxICitDQjU4O0NCNTg7MTEwRCAxMTZFIDExQjc7Q0I1ODsxMTBEIDExNkUgMTFCNzsgIyAo7K2YOyDsrZg7IOGEjeGFruGGtzsg7K2YOyDhhI3hha7hhrc7ICkgSEFOR1VMIFNZTExBQkxFIEpKVU0KK0NCNTk7Q0I1OTsxMTBEIDExNkUgMTFCODtDQjU5OzExMEQgMTE2RSAxMUI4OyAjICjsrZk7IOytmTsg4YSN4YWu4Ya4OyDsrZk7IOGEjeGFruGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpVQgorQ0I1QTtDQjVBOzExMEQgMTE2RSAxMUI5O0NCNUE7MTEwRCAxMTZFIDExQjk7ICMgKOytmjsg7K2aOyDhhI3hha7hhrk7IOytmjsg4YSN4YWu4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKSlVCUworQ0I1QjtDQjVCOzExMEQgMTE2RSAxMUJBO0NCNUI7MTEwRCAxMTZFIDExQkE7ICMgKOytmzsg7K2bOyDhhI3hha7hhro7IOytmzsg4YSN4YWu4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBKSlVTCitDQjVDO0NCNUM7MTEwRCAxMTZFIDExQkI7Q0I1QzsxMTBEIDExNkUgMTFCQjsgIyAo7K2cOyDsrZw7IOGEjeGFruGGuzsg7K2cOyDhhI3hha7hhrs7ICkgSEFOR1VMIFNZTExBQkxFIEpKVVNTCitDQjVEO0NCNUQ7MTEwRCAxMTZFIDExQkM7Q0I1RDsxMTBEIDExNkUgMTFCQzsgIyAo7K2dOyDsrZ07IOGEjeGFruGGvDsg7K2dOyDhhI3hha7hhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpKVU5HCitDQjVFO0NCNUU7MTEwRCAxMTZFIDExQkQ7Q0I1RTsxMTBEIDExNkUgMTFCRDsgIyAo7K2eOyDsrZ47IOGEjeGFruGGvTsg7K2eOyDhhI3hha7hhr07ICkgSEFOR1VMIFNZTExBQkxFIEpKVUoKK0NCNUY7Q0I1RjsxMTBEIDExNkUgMTFCRTtDQjVGOzExMEQgMTE2RSAxMUJFOyAjICjsrZ87IOytnzsg4YSN4YWu4Ya+OyDsrZ87IOGEjeGFruGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpVQworQ0I2MDtDQjYwOzExMEQgMTE2RSAxMUJGO0NCNjA7MTEwRCAxMTZFIDExQkY7ICMgKOytoDsg7K2gOyDhhI3hha7hhr87IOytoDsg4YSN4YWu4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKSlVLCitDQjYxO0NCNjE7MTEwRCAxMTZFIDExQzA7Q0I2MTsxMTBEIDExNkUgMTFDMDsgIyAo7K2hOyDsraE7IOGEjeGFruGHgDsg7K2hOyDhhI3hha7hh4A7ICkgSEFOR1VMIFNZTExBQkxFIEpKVVQKK0NCNjI7Q0I2MjsxMTBEIDExNkUgMTFDMTtDQjYyOzExMEQgMTE2RSAxMUMxOyAjICjsraI7IOytojsg4YSN4YWu4YeBOyDsraI7IOGEjeGFruGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpVUAorQ0I2MztDQjYzOzExMEQgMTE2RSAxMUMyO0NCNjM7MTEwRCAxMTZFIDExQzI7ICMgKOytozsg7K2jOyDhhI3hha7hh4I7IOytozsg4YSN4YWu4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKSlVICitDQjY0O0NCNjQ7MTEwRCAxMTZGO0NCNjQ7MTEwRCAxMTZGOyAjICjsraQ7IOytpDsg4YSN4YWvOyDsraQ7IOGEjeGFrzsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXRU8KK0NCNjU7Q0I2NTsxMTBEIDExNkYgMTFBODtDQjY1OzExMEQgMTE2RiAxMUE4OyAjICjsraU7IOytpTsg4YSN4YWv4YaoOyDsraU7IOGEjeGFr+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXRU9HCitDQjY2O0NCNjY7MTEwRCAxMTZGIDExQTk7Q0I2NjsxMTBEIDExNkYgMTFBOTsgIyAo7K2mOyDsraY7IOGEjeGFr+GGqTsg7K2mOyDhhI3hha/hhqk7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0VPR0cKK0NCNjc7Q0I2NzsxMTBEIDExNkYgMTFBQTtDQjY3OzExMEQgMTE2RiAxMUFBOyAjICjsrac7IOytpzsg4YSN4YWv4YaqOyDsrac7IOGEjeGFr+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXRU9HUworQ0I2ODtDQjY4OzExMEQgMTE2RiAxMUFCO0NCNjg7MTEwRCAxMTZGIDExQUI7ICMgKOytqDsg7K2oOyDhhI3hha/hhqs7IOytqDsg4YSN4YWv4YarOyApIEhBTkdVTCBTWUxMQUJMRSBKSldFT04KK0NCNjk7Q0I2OTsxMTBEIDExNkYgMTFBQztDQjY5OzExMEQgMTE2RiAxMUFDOyAjICjsrak7IOytqTsg4YSN4YWv4YasOyDsrak7IOGEjeGFr+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXRU9OSgorQ0I2QTtDQjZBOzExMEQgMTE2RiAxMUFEO0NCNkE7MTEwRCAxMTZGIDExQUQ7ICMgKOytqjsg7K2qOyDhhI3hha/hhq07IOytqjsg4YSN4YWv4YatOyApIEhBTkdVTCBTWUxMQUJMRSBKSldFT05ICitDQjZCO0NCNkI7MTEwRCAxMTZGIDExQUU7Q0I2QjsxMTBEIDExNkYgMTFBRTsgIyAo7K2rOyDsras7IOGEjeGFr+GGrjsg7K2rOyDhhI3hha/hhq47ICkgSEFOR1VMIFNZTExBQkxFIEpKV0VPRAorQ0I2QztDQjZDOzExMEQgMTE2RiAxMUFGO0NCNkM7MTEwRCAxMTZGIDExQUY7ICMgKOytrDsg7K2sOyDhhI3hha/hhq87IOytrDsg4YSN4YWv4YavOyApIEhBTkdVTCBTWUxMQUJMRSBKSldFT0wKK0NCNkQ7Q0I2RDsxMTBEIDExNkYgMTFCMDtDQjZEOzExMEQgMTE2RiAxMUIwOyAjICjsra07IOytrTsg4YSN4YWv4YawOyDsra07IOGEjeGFr+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXRU9MRworQ0I2RTtDQjZFOzExMEQgMTE2RiAxMUIxO0NCNkU7MTEwRCAxMTZGIDExQjE7ICMgKOytrjsg7K2uOyDhhI3hha/hhrE7IOytrjsg4YSN4YWv4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKSldFT0xNCitDQjZGO0NCNkY7MTEwRCAxMTZGIDExQjI7Q0I2RjsxMTBEIDExNkYgMTFCMjsgIyAo7K2vOyDsra87IOGEjeGFr+GGsjsg7K2vOyDhhI3hha/hhrI7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0VPTEIKK0NCNzA7Q0I3MDsxMTBEIDExNkYgMTFCMztDQjcwOzExMEQgMTE2RiAxMUIzOyAjICjsrbA7IOytsDsg4YSN4YWv4YazOyDsrbA7IOGEjeGFr+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXRU9MUworQ0I3MTtDQjcxOzExMEQgMTE2RiAxMUI0O0NCNzE7MTEwRCAxMTZGIDExQjQ7ICMgKOytsTsg7K2xOyDhhI3hha/hhrQ7IOytsTsg4YSN4YWv4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKSldFT0xUCitDQjcyO0NCNzI7MTEwRCAxMTZGIDExQjU7Q0I3MjsxMTBEIDExNkYgMTFCNTsgIyAo7K2yOyDsrbI7IOGEjeGFr+GGtTsg7K2yOyDhhI3hha/hhrU7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0VPTFAKK0NCNzM7Q0I3MzsxMTBEIDExNkYgMTFCNjtDQjczOzExMEQgMTE2RiAxMUI2OyAjICjsrbM7IOytszsg4YSN4YWv4Ya2OyDsrbM7IOGEjeGFr+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXRU9MSAorQ0I3NDtDQjc0OzExMEQgMTE2RiAxMUI3O0NCNzQ7MTEwRCAxMTZGIDExQjc7ICMgKOyttDsg7K20OyDhhI3hha/hhrc7IOyttDsg4YSN4YWv4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKSldFT00KK0NCNzU7Q0I3NTsxMTBEIDExNkYgMTFCODtDQjc1OzExMEQgMTE2RiAxMUI4OyAjICjsrbU7IOyttTsg4YSN4YWv4Ya4OyDsrbU7IOGEjeGFr+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXRU9CCitDQjc2O0NCNzY7MTEwRCAxMTZGIDExQjk7Q0I3NjsxMTBEIDExNkYgMTFCOTsgIyAo7K22OyDsrbY7IOGEjeGFr+GGuTsg7K22OyDhhI3hha/hhrk7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0VPQlMKK0NCNzc7Q0I3NzsxMTBEIDExNkYgMTFCQTtDQjc3OzExMEQgMTE2RiAxMUJBOyAjICjsrbc7IOyttzsg4YSN4YWv4Ya6OyDsrbc7IOGEjeGFr+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXRU9TCitDQjc4O0NCNzg7MTEwRCAxMTZGIDExQkI7Q0I3ODsxMTBEIDExNkYgMTFCQjsgIyAo7K24OyDsrbg7IOGEjeGFr+GGuzsg7K24OyDhhI3hha/hhrs7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0VPU1MKK0NCNzk7Q0I3OTsxMTBEIDExNkYgMTFCQztDQjc5OzExMEQgMTE2RiAxMUJDOyAjICjsrbk7IOytuTsg4YSN4YWv4Ya8OyDsrbk7IOGEjeGFr+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXRU9ORworQ0I3QTtDQjdBOzExMEQgMTE2RiAxMUJEO0NCN0E7MTEwRCAxMTZGIDExQkQ7ICMgKOytujsg7K26OyDhhI3hha/hhr07IOytujsg4YSN4YWv4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKSldFT0oKK0NCN0I7Q0I3QjsxMTBEIDExNkYgMTFCRTtDQjdCOzExMEQgMTE2RiAxMUJFOyAjICjsrbs7IOytuzsg4YSN4YWv4Ya+OyDsrbs7IOGEjeGFr+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXRU9DCitDQjdDO0NCN0M7MTEwRCAxMTZGIDExQkY7Q0I3QzsxMTBEIDExNkYgMTFCRjsgIyAo7K28OyDsrbw7IOGEjeGFr+GGvzsg7K28OyDhhI3hha/hhr87ICkgSEFOR1VMIFNZTExBQkxFIEpKV0VPSworQ0I3RDtDQjdEOzExMEQgMTE2RiAxMUMwO0NCN0Q7MTEwRCAxMTZGIDExQzA7ICMgKOytvTsg7K29OyDhhI3hha/hh4A7IOytvTsg4YSN4YWv4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKSldFT1QKK0NCN0U7Q0I3RTsxMTBEIDExNkYgMTFDMTtDQjdFOzExMEQgMTE2RiAxMUMxOyAjICjsrb47IOytvjsg4YSN4YWv4YeBOyDsrb47IOGEjeGFr+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXRU9QCitDQjdGO0NCN0Y7MTEwRCAxMTZGIDExQzI7Q0I3RjsxMTBEIDExNkYgMTFDMjsgIyAo7K2/OyDsrb87IOGEjeGFr+GHgjsg7K2/OyDhhI3hha/hh4I7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0VPSAorQ0I4MDtDQjgwOzExMEQgMTE3MDtDQjgwOzExMEQgMTE3MDsgIyAo7K6AOyDsroA7IOGEjeGFsDsg7K6AOyDhhI3hhbA7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0UKK0NCODE7Q0I4MTsxMTBEIDExNzAgMTFBODtDQjgxOzExMEQgMTE3MCAxMUE4OyAjICjsroE7IOyugTsg4YSN4YWw4YaoOyDsroE7IOGEjeGFsOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXRUcKK0NCODI7Q0I4MjsxMTBEIDExNzAgMTFBOTtDQjgyOzExMEQgMTE3MCAxMUE5OyAjICjsroI7IOyugjsg4YSN4YWw4YapOyDsroI7IOGEjeGFsOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXRUdHCitDQjgzO0NCODM7MTEwRCAxMTcwIDExQUE7Q0I4MzsxMTBEIDExNzAgMTFBQTsgIyAo7K6DOyDsroM7IOGEjeGFsOGGqjsg7K6DOyDhhI3hhbDhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0VHUworQ0I4NDtDQjg0OzExMEQgMTE3MCAxMUFCO0NCODQ7MTEwRCAxMTcwIDExQUI7ICMgKOyuhDsg7K6EOyDhhI3hhbDhhqs7IOyuhDsg4YSN4YWw4YarOyApIEhBTkdVTCBTWUxMQUJMRSBKSldFTgorQ0I4NTtDQjg1OzExMEQgMTE3MCAxMUFDO0NCODU7MTEwRCAxMTcwIDExQUM7ICMgKOyuhTsg7K6FOyDhhI3hhbDhhqw7IOyuhTsg4YSN4YWw4YasOyApIEhBTkdVTCBTWUxMQUJMRSBKSldFTkoKK0NCODY7Q0I4NjsxMTBEIDExNzAgMTFBRDtDQjg2OzExMEQgMTE3MCAxMUFEOyAjICjsroY7IOyuhjsg4YSN4YWw4YatOyDsroY7IOGEjeGFsOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXRU5ICitDQjg3O0NCODc7MTEwRCAxMTcwIDExQUU7Q0I4NzsxMTBEIDExNzAgMTFBRTsgIyAo7K6HOyDsroc7IOGEjeGFsOGGrjsg7K6HOyDhhI3hhbDhhq47ICkgSEFOR1VMIFNZTExBQkxFIEpKV0VECitDQjg4O0NCODg7MTEwRCAxMTcwIDExQUY7Q0I4ODsxMTBEIDExNzAgMTFBRjsgIyAo7K6IOyDsrog7IOGEjeGFsOGGrzsg7K6IOyDhhI3hhbDhhq87ICkgSEFOR1VMIFNZTExBQkxFIEpKV0VMCitDQjg5O0NCODk7MTEwRCAxMTcwIDExQjA7Q0I4OTsxMTBEIDExNzAgMTFCMDsgIyAo7K6JOyDsrok7IOGEjeGFsOGGsDsg7K6JOyDhhI3hhbDhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0VMRworQ0I4QTtDQjhBOzExMEQgMTE3MCAxMUIxO0NCOEE7MTEwRCAxMTcwIDExQjE7ICMgKOyuijsg7K6KOyDhhI3hhbDhhrE7IOyuijsg4YSN4YWw4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKSldFTE0KK0NCOEI7Q0I4QjsxMTBEIDExNzAgMTFCMjtDQjhCOzExMEQgMTE3MCAxMUIyOyAjICjsros7IOyuizsg4YSN4YWw4YayOyDsros7IOGEjeGFsOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXRUxCCitDQjhDO0NCOEM7MTEwRCAxMTcwIDExQjM7Q0I4QzsxMTBEIDExNzAgMTFCMzsgIyAo7K6MOyDsrow7IOGEjeGFsOGGszsg7K6MOyDhhI3hhbDhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0VMUworQ0I4RDtDQjhEOzExMEQgMTE3MCAxMUI0O0NCOEQ7MTEwRCAxMTcwIDExQjQ7ICMgKOyujTsg7K6NOyDhhI3hhbDhhrQ7IOyujTsg4YSN4YWw4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKSldFTFQKK0NCOEU7Q0I4RTsxMTBEIDExNzAgMTFCNTtDQjhFOzExMEQgMTE3MCAxMUI1OyAjICjsro47IOyujjsg4YSN4YWw4Ya1OyDsro47IOGEjeGFsOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXRUxQCitDQjhGO0NCOEY7MTEwRCAxMTcwIDExQjY7Q0I4RjsxMTBEIDExNzAgMTFCNjsgIyAo7K6POyDsro87IOGEjeGFsOGGtjsg7K6POyDhhI3hhbDhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0VMSAorQ0I5MDtDQjkwOzExMEQgMTE3MCAxMUI3O0NCOTA7MTEwRCAxMTcwIDExQjc7ICMgKOyukDsg7K6QOyDhhI3hhbDhhrc7IOyukDsg4YSN4YWw4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKSldFTQorQ0I5MTtDQjkxOzExMEQgMTE3MCAxMUI4O0NCOTE7MTEwRCAxMTcwIDExQjg7ICMgKOyukTsg7K6ROyDhhI3hhbDhhrg7IOyukTsg4YSN4YWw4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBKSldFQgorQ0I5MjtDQjkyOzExMEQgMTE3MCAxMUI5O0NCOTI7MTEwRCAxMTcwIDExQjk7ICMgKOyukjsg7K6SOyDhhI3hhbDhhrk7IOyukjsg4YSN4YWw4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKSldFQlMKK0NCOTM7Q0I5MzsxMTBEIDExNzAgMTFCQTtDQjkzOzExMEQgMTE3MCAxMUJBOyAjICjsrpM7IOyukzsg4YSN4YWw4Ya6OyDsrpM7IOGEjeGFsOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXRVMKK0NCOTQ7Q0I5NDsxMTBEIDExNzAgMTFCQjtDQjk0OzExMEQgMTE3MCAxMUJCOyAjICjsrpQ7IOyulDsg4YSN4YWw4Ya7OyDsrpQ7IOGEjeGFsOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXRVNTCitDQjk1O0NCOTU7MTEwRCAxMTcwIDExQkM7Q0I5NTsxMTBEIDExNzAgMTFCQzsgIyAo7K6VOyDsrpU7IOGEjeGFsOGGvDsg7K6VOyDhhI3hhbDhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0VORworQ0I5NjtDQjk2OzExMEQgMTE3MCAxMUJEO0NCOTY7MTEwRCAxMTcwIDExQkQ7ICMgKOyuljsg7K6WOyDhhI3hhbDhhr07IOyuljsg4YSN4YWw4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKSldFSgorQ0I5NztDQjk3OzExMEQgMTE3MCAxMUJFO0NCOTc7MTEwRCAxMTcwIDExQkU7ICMgKOyulzsg7K6XOyDhhI3hhbDhhr47IOyulzsg4YSN4YWw4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBKSldFQworQ0I5ODtDQjk4OzExMEQgMTE3MCAxMUJGO0NCOTg7MTEwRCAxMTcwIDExQkY7ICMgKOyumDsg7K6YOyDhhI3hhbDhhr87IOyumDsg4YSN4YWw4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKSldFSworQ0I5OTtDQjk5OzExMEQgMTE3MCAxMUMwO0NCOTk7MTEwRCAxMTcwIDExQzA7ICMgKOyumTsg7K6ZOyDhhI3hhbDhh4A7IOyumTsg4YSN4YWw4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKSldFVAorQ0I5QTtDQjlBOzExMEQgMTE3MCAxMUMxO0NCOUE7MTEwRCAxMTcwIDExQzE7ICMgKOyumjsg7K6aOyDhhI3hhbDhh4E7IOyumjsg4YSN4YWw4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBKSldFUAorQ0I5QjtDQjlCOzExMEQgMTE3MCAxMUMyO0NCOUI7MTEwRCAxMTcwIDExQzI7ICMgKOyumzsg7K6bOyDhhI3hhbDhh4I7IOyumzsg4YSN4YWw4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKSldFSAorQ0I5QztDQjlDOzExMEQgMTE3MTtDQjlDOzExMEQgMTE3MTsgIyAo7K6cOyDsrpw7IOGEjeGFsTsg7K6cOyDhhI3hhbE7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0kKK0NCOUQ7Q0I5RDsxMTBEIDExNzEgMTFBODtDQjlEOzExMEQgMTE3MSAxMUE4OyAjICjsrp07IOyunTsg4YSN4YWx4YaoOyDsrp07IOGEjeGFseGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXSUcKK0NCOUU7Q0I5RTsxMTBEIDExNzEgMTFBOTtDQjlFOzExMEQgMTE3MSAxMUE5OyAjICjsrp47IOyunjsg4YSN4YWx4YapOyDsrp47IOGEjeGFseGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXSUdHCitDQjlGO0NCOUY7MTEwRCAxMTcxIDExQUE7Q0I5RjsxMTBEIDExNzEgMTFBQTsgIyAo7K6fOyDsrp87IOGEjeGFseGGqjsg7K6fOyDhhI3hhbHhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0lHUworQ0JBMDtDQkEwOzExMEQgMTE3MSAxMUFCO0NCQTA7MTEwRCAxMTcxIDExQUI7ICMgKOyuoDsg7K6gOyDhhI3hhbHhhqs7IOyuoDsg4YSN4YWx4YarOyApIEhBTkdVTCBTWUxMQUJMRSBKSldJTgorQ0JBMTtDQkExOzExMEQgMTE3MSAxMUFDO0NCQTE7MTEwRCAxMTcxIDExQUM7ICMgKOyuoTsg7K6hOyDhhI3hhbHhhqw7IOyuoTsg4YSN4YWx4YasOyApIEhBTkdVTCBTWUxMQUJMRSBKSldJTkoKK0NCQTI7Q0JBMjsxMTBEIDExNzEgMTFBRDtDQkEyOzExMEQgMTE3MSAxMUFEOyAjICjsrqI7IOyuojsg4YSN4YWx4YatOyDsrqI7IOGEjeGFseGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXSU5ICitDQkEzO0NCQTM7MTEwRCAxMTcxIDExQUU7Q0JBMzsxMTBEIDExNzEgMTFBRTsgIyAo7K6jOyDsrqM7IOGEjeGFseGGrjsg7K6jOyDhhI3hhbHhhq47ICkgSEFOR1VMIFNZTExBQkxFIEpKV0lECitDQkE0O0NCQTQ7MTEwRCAxMTcxIDExQUY7Q0JBNDsxMTBEIDExNzEgMTFBRjsgIyAo7K6kOyDsrqQ7IOGEjeGFseGGrzsg7K6kOyDhhI3hhbHhhq87ICkgSEFOR1VMIFNZTExBQkxFIEpKV0lMCitDQkE1O0NCQTU7MTEwRCAxMTcxIDExQjA7Q0JBNTsxMTBEIDExNzEgMTFCMDsgIyAo7K6lOyDsrqU7IOGEjeGFseGGsDsg7K6lOyDhhI3hhbHhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0lMRworQ0JBNjtDQkE2OzExMEQgMTE3MSAxMUIxO0NCQTY7MTEwRCAxMTcxIDExQjE7ICMgKOyupjsg7K6mOyDhhI3hhbHhhrE7IOyupjsg4YSN4YWx4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKSldJTE0KK0NCQTc7Q0JBNzsxMTBEIDExNzEgMTFCMjtDQkE3OzExMEQgMTE3MSAxMUIyOyAjICjsrqc7IOyupzsg4YSN4YWx4YayOyDsrqc7IOGEjeGFseGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXSUxCCitDQkE4O0NCQTg7MTEwRCAxMTcxIDExQjM7Q0JBODsxMTBEIDExNzEgMTFCMzsgIyAo7K6oOyDsrqg7IOGEjeGFseGGszsg7K6oOyDhhI3hhbHhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0lMUworQ0JBOTtDQkE5OzExMEQgMTE3MSAxMUI0O0NCQTk7MTEwRCAxMTcxIDExQjQ7ICMgKOyuqTsg7K6pOyDhhI3hhbHhhrQ7IOyuqTsg4YSN4YWx4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKSldJTFQKK0NCQUE7Q0JBQTsxMTBEIDExNzEgMTFCNTtDQkFBOzExMEQgMTE3MSAxMUI1OyAjICjsrqo7IOyuqjsg4YSN4YWx4Ya1OyDsrqo7IOGEjeGFseGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXSUxQCitDQkFCO0NCQUI7MTEwRCAxMTcxIDExQjY7Q0JBQjsxMTBEIDExNzEgMTFCNjsgIyAo7K6rOyDsrqs7IOGEjeGFseGGtjsg7K6rOyDhhI3hhbHhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0lMSAorQ0JBQztDQkFDOzExMEQgMTE3MSAxMUI3O0NCQUM7MTEwRCAxMTcxIDExQjc7ICMgKOyurDsg7K6sOyDhhI3hhbHhhrc7IOyurDsg4YSN4YWx4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKSldJTQorQ0JBRDtDQkFEOzExMEQgMTE3MSAxMUI4O0NCQUQ7MTEwRCAxMTcxIDExQjg7ICMgKOyurTsg7K6tOyDhhI3hhbHhhrg7IOyurTsg4YSN4YWx4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBKSldJQgorQ0JBRTtDQkFFOzExMEQgMTE3MSAxMUI5O0NCQUU7MTEwRCAxMTcxIDExQjk7ICMgKOyurjsg7K6uOyDhhI3hhbHhhrk7IOyurjsg4YSN4YWx4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKSldJQlMKK0NCQUY7Q0JBRjsxMTBEIDExNzEgMTFCQTtDQkFGOzExMEQgMTE3MSAxMUJBOyAjICjsrq87IOyurzsg4YSN4YWx4Ya6OyDsrq87IOGEjeGFseGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXSVMKK0NCQjA7Q0JCMDsxMTBEIDExNzEgMTFCQjtDQkIwOzExMEQgMTE3MSAxMUJCOyAjICjsrrA7IOyusDsg4YSN4YWx4Ya7OyDsrrA7IOGEjeGFseGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSkpXSVNTCitDQkIxO0NCQjE7MTEwRCAxMTcxIDExQkM7Q0JCMTsxMTBEIDExNzEgMTFCQzsgIyAo7K6xOyDsrrE7IOGEjeGFseGGvDsg7K6xOyDhhI3hhbHhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpKV0lORworQ0JCMjtDQkIyOzExMEQgMTE3MSAxMUJEO0NCQjI7MTEwRCAxMTcxIDExQkQ7ICMgKOyusjsg7K6yOyDhhI3hhbHhhr07IOyusjsg4YSN4YWx4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKSldJSgorQ0JCMztDQkIzOzExMEQgMTE3MSAxMUJFO0NCQjM7MTEwRCAxMTcxIDExQkU7ICMgKOyuszsg7K6zOyDhhI3hhbHhhr47IOyuszsg4YSN4YWx4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBKSldJQworQ0JCNDtDQkI0OzExMEQgMTE3MSAxMUJGO0NCQjQ7MTEwRCAxMTcxIDExQkY7ICMgKOyutDsg7K60OyDhhI3hhbHhhr87IOyutDsg4YSN4YWx4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKSldJSworQ0JCNTtDQkI1OzExMEQgMTE3MSAxMUMwO0NCQjU7MTEwRCAxMTcxIDExQzA7ICMgKOyutTsg7K61OyDhhI3hhbHhh4A7IOyutTsg4YSN4YWx4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKSldJVAorQ0JCNjtDQkI2OzExMEQgMTE3MSAxMUMxO0NCQjY7MTEwRCAxMTcxIDExQzE7ICMgKOyutjsg7K62OyDhhI3hhbHhh4E7IOyutjsg4YSN4YWx4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBKSldJUAorQ0JCNztDQkI3OzExMEQgMTE3MSAxMUMyO0NCQjc7MTEwRCAxMTcxIDExQzI7ICMgKOyutzsg7K63OyDhhI3hhbHhh4I7IOyutzsg4YSN4YWx4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKSldJSAorQ0JCODtDQkI4OzExMEQgMTE3MjtDQkI4OzExMEQgMTE3MjsgIyAo7K64OyDsrrg7IOGEjeGFsjsg7K64OyDhhI3hhbI7ICkgSEFOR1VMIFNZTExBQkxFIEpKWVUKK0NCQjk7Q0JCOTsxMTBEIDExNzIgMTFBODtDQkI5OzExMEQgMTE3MiAxMUE4OyAjICjsrrk7IOyuuTsg4YSN4YWy4YaoOyDsrrk7IOGEjeGFsuGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZVUcKK0NCQkE7Q0JCQTsxMTBEIDExNzIgMTFBOTtDQkJBOzExMEQgMTE3MiAxMUE5OyAjICjsrro7IOyuujsg4YSN4YWy4YapOyDsrro7IOGEjeGFsuGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZVUdHCitDQkJCO0NCQkI7MTEwRCAxMTcyIDExQUE7Q0JCQjsxMTBEIDExNzIgMTFBQTsgIyAo7K67OyDsrrs7IOGEjeGFsuGGqjsg7K67OyDhhI3hhbLhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpKWVVHUworQ0JCQztDQkJDOzExMEQgMTE3MiAxMUFCO0NCQkM7MTEwRCAxMTcyIDExQUI7ICMgKOyuvDsg7K68OyDhhI3hhbLhhqs7IOyuvDsg4YSN4YWy4YarOyApIEhBTkdVTCBTWUxMQUJMRSBKSllVTgorQ0JCRDtDQkJEOzExMEQgMTE3MiAxMUFDO0NCQkQ7MTEwRCAxMTcyIDExQUM7ICMgKOyuvTsg7K69OyDhhI3hhbLhhqw7IOyuvTsg4YSN4YWy4YasOyApIEhBTkdVTCBTWUxMQUJMRSBKSllVTkoKK0NCQkU7Q0JCRTsxMTBEIDExNzIgMTFBRDtDQkJFOzExMEQgMTE3MiAxMUFEOyAjICjsrr47IOyuvjsg4YSN4YWy4YatOyDsrr47IOGEjeGFsuGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZVU5ICitDQkJGO0NCQkY7MTEwRCAxMTcyIDExQUU7Q0JCRjsxMTBEIDExNzIgMTFBRTsgIyAo7K6/OyDsrr87IOGEjeGFsuGGrjsg7K6/OyDhhI3hhbLhhq47ICkgSEFOR1VMIFNZTExBQkxFIEpKWVVECitDQkMwO0NCQzA7MTEwRCAxMTcyIDExQUY7Q0JDMDsxMTBEIDExNzIgMTFBRjsgIyAo7K+AOyDsr4A7IOGEjeGFsuGGrzsg7K+AOyDhhI3hhbLhhq87ICkgSEFOR1VMIFNZTExBQkxFIEpKWVVMCitDQkMxO0NCQzE7MTEwRCAxMTcyIDExQjA7Q0JDMTsxMTBEIDExNzIgMTFCMDsgIyAo7K+BOyDsr4E7IOGEjeGFsuGGsDsg7K+BOyDhhI3hhbLhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpKWVVMRworQ0JDMjtDQkMyOzExMEQgMTE3MiAxMUIxO0NCQzI7MTEwRCAxMTcyIDExQjE7ICMgKOyvgjsg7K+COyDhhI3hhbLhhrE7IOyvgjsg4YSN4YWy4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKSllVTE0KK0NCQzM7Q0JDMzsxMTBEIDExNzIgMTFCMjtDQkMzOzExMEQgMTE3MiAxMUIyOyAjICjsr4M7IOyvgzsg4YSN4YWy4YayOyDsr4M7IOGEjeGFsuGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZVUxCCitDQkM0O0NCQzQ7MTEwRCAxMTcyIDExQjM7Q0JDNDsxMTBEIDExNzIgMTFCMzsgIyAo7K+EOyDsr4Q7IOGEjeGFsuGGszsg7K+EOyDhhI3hhbLhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpKWVVMUworQ0JDNTtDQkM1OzExMEQgMTE3MiAxMUI0O0NCQzU7MTEwRCAxMTcyIDExQjQ7ICMgKOyvhTsg7K+FOyDhhI3hhbLhhrQ7IOyvhTsg4YSN4YWy4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKSllVTFQKK0NCQzY7Q0JDNjsxMTBEIDExNzIgMTFCNTtDQkM2OzExMEQgMTE3MiAxMUI1OyAjICjsr4Y7IOyvhjsg4YSN4YWy4Ya1OyDsr4Y7IOGEjeGFsuGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZVUxQCitDQkM3O0NCQzc7MTEwRCAxMTcyIDExQjY7Q0JDNzsxMTBEIDExNzIgMTFCNjsgIyAo7K+HOyDsr4c7IOGEjeGFsuGGtjsg7K+HOyDhhI3hhbLhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpKWVVMSAorQ0JDODtDQkM4OzExMEQgMTE3MiAxMUI3O0NCQzg7MTEwRCAxMTcyIDExQjc7ICMgKOyviDsg7K+IOyDhhI3hhbLhhrc7IOyviDsg4YSN4YWy4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKSllVTQorQ0JDOTtDQkM5OzExMEQgMTE3MiAxMUI4O0NCQzk7MTEwRCAxMTcyIDExQjg7ICMgKOyviTsg7K+JOyDhhI3hhbLhhrg7IOyviTsg4YSN4YWy4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBKSllVQgorQ0JDQTtDQkNBOzExMEQgMTE3MiAxMUI5O0NCQ0E7MTEwRCAxMTcyIDExQjk7ICMgKOyvijsg7K+KOyDhhI3hhbLhhrk7IOyvijsg4YSN4YWy4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKSllVQlMKK0NCQ0I7Q0JDQjsxMTBEIDExNzIgMTFCQTtDQkNCOzExMEQgMTE3MiAxMUJBOyAjICjsr4s7IOyvizsg4YSN4YWy4Ya6OyDsr4s7IOGEjeGFsuGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZVVMKK0NCQ0M7Q0JDQzsxMTBEIDExNzIgMTFCQjtDQkNDOzExMEQgMTE3MiAxMUJCOyAjICjsr4w7IOyvjDsg4YSN4YWy4Ya7OyDsr4w7IOGEjeGFsuGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZVVNTCitDQkNEO0NCQ0Q7MTEwRCAxMTcyIDExQkM7Q0JDRDsxMTBEIDExNzIgMTFCQzsgIyAo7K+NOyDsr407IOGEjeGFsuGGvDsg7K+NOyDhhI3hhbLhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpKWVVORworQ0JDRTtDQkNFOzExMEQgMTE3MiAxMUJEO0NCQ0U7MTEwRCAxMTcyIDExQkQ7ICMgKOyvjjsg7K+OOyDhhI3hhbLhhr07IOyvjjsg4YSN4YWy4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKSllVSgorQ0JDRjtDQkNGOzExMEQgMTE3MiAxMUJFO0NCQ0Y7MTEwRCAxMTcyIDExQkU7ICMgKOyvjzsg7K+POyDhhI3hhbLhhr47IOyvjzsg4YSN4YWy4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBKSllVQworQ0JEMDtDQkQwOzExMEQgMTE3MiAxMUJGO0NCRDA7MTEwRCAxMTcyIDExQkY7ICMgKOyvkDsg7K+QOyDhhI3hhbLhhr87IOyvkDsg4YSN4YWy4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKSllVSworQ0JEMTtDQkQxOzExMEQgMTE3MiAxMUMwO0NCRDE7MTEwRCAxMTcyIDExQzA7ICMgKOyvkTsg7K+ROyDhhI3hhbLhh4A7IOyvkTsg4YSN4YWy4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKSllVVAorQ0JEMjtDQkQyOzExMEQgMTE3MiAxMUMxO0NCRDI7MTEwRCAxMTcyIDExQzE7ICMgKOyvkjsg7K+SOyDhhI3hhbLhh4E7IOyvkjsg4YSN4YWy4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBKSllVUAorQ0JEMztDQkQzOzExMEQgMTE3MiAxMUMyO0NCRDM7MTEwRCAxMTcyIDExQzI7ICMgKOyvkzsg7K+TOyDhhI3hhbLhh4I7IOyvkzsg4YSN4YWy4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKSllVSAorQ0JENDtDQkQ0OzExMEQgMTE3MztDQkQ0OzExMEQgMTE3MzsgIyAo7K+UOyDsr5Q7IOGEjeGFszsg7K+UOyDhhI3hhbM7ICkgSEFOR1VMIFNZTExBQkxFIEpKRVUKK0NCRDU7Q0JENTsxMTBEIDExNzMgMTFBODtDQkQ1OzExMEQgMTE3MyAxMUE4OyAjICjsr5U7IOyvlTsg4YSN4YWz4YaoOyDsr5U7IOGEjeGFs+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpFVUcKK0NCRDY7Q0JENjsxMTBEIDExNzMgMTFBOTtDQkQ2OzExMEQgMTE3MyAxMUE5OyAjICjsr5Y7IOyvljsg4YSN4YWz4YapOyDsr5Y7IOGEjeGFs+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpFVUdHCitDQkQ3O0NCRDc7MTEwRCAxMTczIDExQUE7Q0JENzsxMTBEIDExNzMgMTFBQTsgIyAo7K+XOyDsr5c7IOGEjeGFs+GGqjsg7K+XOyDhhI3hhbPhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpKRVVHUworQ0JEODtDQkQ4OzExMEQgMTE3MyAxMUFCO0NCRDg7MTEwRCAxMTczIDExQUI7ICMgKOyvmDsg7K+YOyDhhI3hhbPhhqs7IOyvmDsg4YSN4YWz4YarOyApIEhBTkdVTCBTWUxMQUJMRSBKSkVVTgorQ0JEOTtDQkQ5OzExMEQgMTE3MyAxMUFDO0NCRDk7MTEwRCAxMTczIDExQUM7ICMgKOyvmTsg7K+ZOyDhhI3hhbPhhqw7IOyvmTsg4YSN4YWz4YasOyApIEhBTkdVTCBTWUxMQUJMRSBKSkVVTkoKK0NCREE7Q0JEQTsxMTBEIDExNzMgMTFBRDtDQkRBOzExMEQgMTE3MyAxMUFEOyAjICjsr5o7IOyvmjsg4YSN4YWz4YatOyDsr5o7IOGEjeGFs+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpFVU5ICitDQkRCO0NCREI7MTEwRCAxMTczIDExQUU7Q0JEQjsxMTBEIDExNzMgMTFBRTsgIyAo7K+bOyDsr5s7IOGEjeGFs+GGrjsg7K+bOyDhhI3hhbPhhq47ICkgSEFOR1VMIFNZTExBQkxFIEpKRVVECitDQkRDO0NCREM7MTEwRCAxMTczIDExQUY7Q0JEQzsxMTBEIDExNzMgMTFBRjsgIyAo7K+cOyDsr5w7IOGEjeGFs+GGrzsg7K+cOyDhhI3hhbPhhq87ICkgSEFOR1VMIFNZTExBQkxFIEpKRVVMCitDQkREO0NCREQ7MTEwRCAxMTczIDExQjA7Q0JERDsxMTBEIDExNzMgMTFCMDsgIyAo7K+dOyDsr507IOGEjeGFs+GGsDsg7K+dOyDhhI3hhbPhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpKRVVMRworQ0JERTtDQkRFOzExMEQgMTE3MyAxMUIxO0NCREU7MTEwRCAxMTczIDExQjE7ICMgKOyvnjsg7K+eOyDhhI3hhbPhhrE7IOyvnjsg4YSN4YWz4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKSkVVTE0KK0NCREY7Q0JERjsxMTBEIDExNzMgMTFCMjtDQkRGOzExMEQgMTE3MyAxMUIyOyAjICjsr587IOyvnzsg4YSN4YWz4YayOyDsr587IOGEjeGFs+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpFVUxCCitDQkUwO0NCRTA7MTEwRCAxMTczIDExQjM7Q0JFMDsxMTBEIDExNzMgMTFCMzsgIyAo7K+gOyDsr6A7IOGEjeGFs+GGszsg7K+gOyDhhI3hhbPhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpKRVVMUworQ0JFMTtDQkUxOzExMEQgMTE3MyAxMUI0O0NCRTE7MTEwRCAxMTczIDExQjQ7ICMgKOyvoTsg7K+hOyDhhI3hhbPhhrQ7IOyvoTsg4YSN4YWz4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKSkVVTFQKK0NCRTI7Q0JFMjsxMTBEIDExNzMgMTFCNTtDQkUyOzExMEQgMTE3MyAxMUI1OyAjICjsr6I7IOyvojsg4YSN4YWz4Ya1OyDsr6I7IOGEjeGFs+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpFVUxQCitDQkUzO0NCRTM7MTEwRCAxMTczIDExQjY7Q0JFMzsxMTBEIDExNzMgMTFCNjsgIyAo7K+jOyDsr6M7IOGEjeGFs+GGtjsg7K+jOyDhhI3hhbPhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpKRVVMSAorQ0JFNDtDQkU0OzExMEQgMTE3MyAxMUI3O0NCRTQ7MTEwRCAxMTczIDExQjc7ICMgKOyvpDsg7K+kOyDhhI3hhbPhhrc7IOyvpDsg4YSN4YWz4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKSkVVTQorQ0JFNTtDQkU1OzExMEQgMTE3MyAxMUI4O0NCRTU7MTEwRCAxMTczIDExQjg7ICMgKOyvpTsg7K+lOyDhhI3hhbPhhrg7IOyvpTsg4YSN4YWz4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBKSkVVQgorQ0JFNjtDQkU2OzExMEQgMTE3MyAxMUI5O0NCRTY7MTEwRCAxMTczIDExQjk7ICMgKOyvpjsg7K+mOyDhhI3hhbPhhrk7IOyvpjsg4YSN4YWz4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKSkVVQlMKK0NCRTc7Q0JFNzsxMTBEIDExNzMgMTFCQTtDQkU3OzExMEQgMTE3MyAxMUJBOyAjICjsr6c7IOyvpzsg4YSN4YWz4Ya6OyDsr6c7IOGEjeGFs+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgSkpFVVMKK0NCRTg7Q0JFODsxMTBEIDExNzMgMTFCQjtDQkU4OzExMEQgMTE3MyAxMUJCOyAjICjsr6g7IOyvqDsg4YSN4YWz4Ya7OyDsr6g7IOGEjeGFs+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSkpFVVNTCitDQkU5O0NCRTk7MTEwRCAxMTczIDExQkM7Q0JFOTsxMTBEIDExNzMgMTFCQzsgIyAo7K+pOyDsr6k7IOGEjeGFs+GGvDsg7K+pOyDhhI3hhbPhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpKRVVORworQ0JFQTtDQkVBOzExMEQgMTE3MyAxMUJEO0NCRUE7MTEwRCAxMTczIDExQkQ7ICMgKOyvqjsg7K+qOyDhhI3hhbPhhr07IOyvqjsg4YSN4YWz4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKSkVVSgorQ0JFQjtDQkVCOzExMEQgMTE3MyAxMUJFO0NCRUI7MTEwRCAxMTczIDExQkU7ICMgKOyvqzsg7K+rOyDhhI3hhbPhhr47IOyvqzsg4YSN4YWz4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBKSkVVQworQ0JFQztDQkVDOzExMEQgMTE3MyAxMUJGO0NCRUM7MTEwRCAxMTczIDExQkY7ICMgKOyvrDsg7K+sOyDhhI3hhbPhhr87IOyvrDsg4YSN4YWz4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKSkVVSworQ0JFRDtDQkVEOzExMEQgMTE3MyAxMUMwO0NCRUQ7MTEwRCAxMTczIDExQzA7ICMgKOyvrTsg7K+tOyDhhI3hhbPhh4A7IOyvrTsg4YSN4YWz4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKSkVVVAorQ0JFRTtDQkVFOzExMEQgMTE3MyAxMUMxO0NCRUU7MTEwRCAxMTczIDExQzE7ICMgKOyvrjsg7K+uOyDhhI3hhbPhh4E7IOyvrjsg4YSN4YWz4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBKSkVVUAorQ0JFRjtDQkVGOzExMEQgMTE3MyAxMUMyO0NCRUY7MTEwRCAxMTczIDExQzI7ICMgKOyvrzsg7K+vOyDhhI3hhbPhh4I7IOyvrzsg4YSN4YWz4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKSkVVSAorQ0JGMDtDQkYwOzExMEQgMTE3NDtDQkYwOzExMEQgMTE3NDsgIyAo7K+wOyDsr7A7IOGEjeGFtDsg7K+wOyDhhI3hhbQ7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUkKK0NCRjE7Q0JGMTsxMTBEIDExNzQgMTFBODtDQkYxOzExMEQgMTE3NCAxMUE4OyAjICjsr7E7IOyvsTsg4YSN4YW04YaoOyDsr7E7IOGEjeGFtOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZSUcKK0NCRjI7Q0JGMjsxMTBEIDExNzQgMTFBOTtDQkYyOzExMEQgMTE3NCAxMUE5OyAjICjsr7I7IOyvsjsg4YSN4YW04YapOyDsr7I7IOGEjeGFtOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZSUdHCitDQkYzO0NCRjM7MTEwRCAxMTc0IDExQUE7Q0JGMzsxMTBEIDExNzQgMTFBQTsgIyAo7K+zOyDsr7M7IOGEjeGFtOGGqjsg7K+zOyDhhI3hhbThhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUlHUworQ0JGNDtDQkY0OzExMEQgMTE3NCAxMUFCO0NCRjQ7MTEwRCAxMTc0IDExQUI7ICMgKOyvtDsg7K+0OyDhhI3hhbThhqs7IOyvtDsg4YSN4YW04YarOyApIEhBTkdVTCBTWUxMQUJMRSBKSllJTgorQ0JGNTtDQkY1OzExMEQgMTE3NCAxMUFDO0NCRjU7MTEwRCAxMTc0IDExQUM7ICMgKOyvtTsg7K+1OyDhhI3hhbThhqw7IOyvtTsg4YSN4YW04YasOyApIEhBTkdVTCBTWUxMQUJMRSBKSllJTkoKK0NCRjY7Q0JGNjsxMTBEIDExNzQgMTFBRDtDQkY2OzExMEQgMTE3NCAxMUFEOyAjICjsr7Y7IOyvtjsg4YSN4YW04YatOyDsr7Y7IOGEjeGFtOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZSU5ICitDQkY3O0NCRjc7MTEwRCAxMTc0IDExQUU7Q0JGNzsxMTBEIDExNzQgMTFBRTsgIyAo7K+3OyDsr7c7IOGEjeGFtOGGrjsg7K+3OyDhhI3hhbThhq47ICkgSEFOR1VMIFNZTExBQkxFIEpKWUlECitDQkY4O0NCRjg7MTEwRCAxMTc0IDExQUY7Q0JGODsxMTBEIDExNzQgMTFBRjsgIyAo7K+4OyDsr7g7IOGEjeGFtOGGrzsg7K+4OyDhhI3hhbThhq87ICkgSEFOR1VMIFNZTExBQkxFIEpKWUlMCitDQkY5O0NCRjk7MTEwRCAxMTc0IDExQjA7Q0JGOTsxMTBEIDExNzQgMTFCMDsgIyAo7K+5OyDsr7k7IOGEjeGFtOGGsDsg7K+5OyDhhI3hhbThhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUlMRworQ0JGQTtDQkZBOzExMEQgMTE3NCAxMUIxO0NCRkE7MTEwRCAxMTc0IDExQjE7ICMgKOyvujsg7K+6OyDhhI3hhbThhrE7IOyvujsg4YSN4YW04YaxOyApIEhBTkdVTCBTWUxMQUJMRSBKSllJTE0KK0NCRkI7Q0JGQjsxMTBEIDExNzQgMTFCMjtDQkZCOzExMEQgMTE3NCAxMUIyOyAjICjsr7s7IOyvuzsg4YSN4YW04YayOyDsr7s7IOGEjeGFtOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZSUxCCitDQkZDO0NCRkM7MTEwRCAxMTc0IDExQjM7Q0JGQzsxMTBEIDExNzQgMTFCMzsgIyAo7K+8OyDsr7w7IOGEjeGFtOGGszsg7K+8OyDhhI3hhbThhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUlMUworQ0JGRDtDQkZEOzExMEQgMTE3NCAxMUI0O0NCRkQ7MTEwRCAxMTc0IDExQjQ7ICMgKOyvvTsg7K+9OyDhhI3hhbThhrQ7IOyvvTsg4YSN4YW04Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBKSllJTFQKK0NCRkU7Q0JGRTsxMTBEIDExNzQgMTFCNTtDQkZFOzExMEQgMTE3NCAxMUI1OyAjICjsr747IOyvvjsg4YSN4YW04Ya1OyDsr747IOGEjeGFtOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZSUxQCitDQkZGO0NCRkY7MTEwRCAxMTc0IDExQjY7Q0JGRjsxMTBEIDExNzQgMTFCNjsgIyAo7K+/OyDsr787IOGEjeGFtOGGtjsg7K+/OyDhhI3hhbThhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUlMSAorQ0MwMDtDQzAwOzExMEQgMTE3NCAxMUI3O0NDMDA7MTEwRCAxMTc0IDExQjc7ICMgKOywgDsg7LCAOyDhhI3hhbThhrc7IOywgDsg4YSN4YW04Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBKSllJTQorQ0MwMTtDQzAxOzExMEQgMTE3NCAxMUI4O0NDMDE7MTEwRCAxMTc0IDExQjg7ICMgKOywgTsg7LCBOyDhhI3hhbThhrg7IOywgTsg4YSN4YW04Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBKSllJQgorQ0MwMjtDQzAyOzExMEQgMTE3NCAxMUI5O0NDMDI7MTEwRCAxMTc0IDExQjk7ICMgKOywgjsg7LCCOyDhhI3hhbThhrk7IOywgjsg4YSN4YW04Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKSllJQlMKK0NDMDM7Q0MwMzsxMTBEIDExNzQgMTFCQTtDQzAzOzExMEQgMTE3NCAxMUJBOyAjICjssIM7IOywgzsg4YSN4YW04Ya6OyDssIM7IOGEjeGFtOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZSVMKK0NDMDQ7Q0MwNDsxMTBEIDExNzQgMTFCQjtDQzA0OzExMEQgMTE3NCAxMUJCOyAjICjssIQ7IOywhDsg4YSN4YW04Ya7OyDssIQ7IOGEjeGFtOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSkpZSVNTCitDQzA1O0NDMDU7MTEwRCAxMTc0IDExQkM7Q0MwNTsxMTBEIDExNzQgMTFCQzsgIyAo7LCFOyDssIU7IOGEjeGFtOGGvDsg7LCFOyDhhI3hhbThhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpKWUlORworQ0MwNjtDQzA2OzExMEQgMTE3NCAxMUJEO0NDMDY7MTEwRCAxMTc0IDExQkQ7ICMgKOywhjsg7LCGOyDhhI3hhbThhr07IOywhjsg4YSN4YW04Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBKSllJSgorQ0MwNztDQzA3OzExMEQgMTE3NCAxMUJFO0NDMDc7MTEwRCAxMTc0IDExQkU7ICMgKOywhzsg7LCHOyDhhI3hhbThhr47IOywhzsg4YSN4YW04Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBKSllJQworQ0MwODtDQzA4OzExMEQgMTE3NCAxMUJGO0NDMDg7MTEwRCAxMTc0IDExQkY7ICMgKOywiDsg7LCIOyDhhI3hhbThhr87IOywiDsg4YSN4YW04Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKSllJSworQ0MwOTtDQzA5OzExMEQgMTE3NCAxMUMwO0NDMDk7MTEwRCAxMTc0IDExQzA7ICMgKOywiTsg7LCJOyDhhI3hhbThh4A7IOywiTsg4YSN4YW04YeAOyApIEhBTkdVTCBTWUxMQUJMRSBKSllJVAorQ0MwQTtDQzBBOzExMEQgMTE3NCAxMUMxO0NDMEE7MTEwRCAxMTc0IDExQzE7ICMgKOywijsg7LCKOyDhhI3hhbThh4E7IOywijsg4YSN4YW04YeBOyApIEhBTkdVTCBTWUxMQUJMRSBKSllJUAorQ0MwQjtDQzBCOzExMEQgMTE3NCAxMUMyO0NDMEI7MTEwRCAxMTc0IDExQzI7ICMgKOywizsg7LCLOyDhhI3hhbThh4I7IOywizsg4YSN4YW04YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKSllJSAorQ0MwQztDQzBDOzExMEQgMTE3NTtDQzBDOzExMEQgMTE3NTsgIyAo7LCMOyDssIw7IOGEjeGFtTsg7LCMOyDhhI3hhbU7ICkgSEFOR1VMIFNZTExBQkxFIEpKSQorQ0MwRDtDQzBEOzExMEQgMTE3NSAxMUE4O0NDMEQ7MTEwRCAxMTc1IDExQTg7ICMgKOywjTsg7LCNOyDhhI3hhbXhhqg7IOywjTsg4YSN4YW14YaoOyApIEhBTkdVTCBTWUxMQUJMRSBKSklHCitDQzBFO0NDMEU7MTEwRCAxMTc1IDExQTk7Q0MwRTsxMTBEIDExNzUgMTFBOTsgIyAo7LCOOyDssI47IOGEjeGFteGGqTsg7LCOOyDhhI3hhbXhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEpKSUdHCitDQzBGO0NDMEY7MTEwRCAxMTc1IDExQUE7Q0MwRjsxMTBEIDExNzUgMTFBQTsgIyAo7LCPOyDssI87IOGEjeGFteGGqjsg7LCPOyDhhI3hhbXhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEpKSUdTCitDQzEwO0NDMTA7MTEwRCAxMTc1IDExQUI7Q0MxMDsxMTBEIDExNzUgMTFBQjsgIyAo7LCQOyDssJA7IOGEjeGFteGGqzsg7LCQOyDhhI3hhbXhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEpKSU4KK0NDMTE7Q0MxMTsxMTBEIDExNzUgMTFBQztDQzExOzExMEQgMTE3NSAxMUFDOyAjICjssJE7IOywkTsg4YSN4YW14YasOyDssJE7IOGEjeGFteGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpJTkoKK0NDMTI7Q0MxMjsxMTBEIDExNzUgMTFBRDtDQzEyOzExMEQgMTE3NSAxMUFEOyAjICjssJI7IOywkjsg4YSN4YW14YatOyDssJI7IOGEjeGFteGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpJTkgKK0NDMTM7Q0MxMzsxMTBEIDExNzUgMTFBRTtDQzEzOzExMEQgMTE3NSAxMUFFOyAjICjssJM7IOywkzsg4YSN4YW14YauOyDssJM7IOGEjeGFteGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpJRAorQ0MxNDtDQzE0OzExMEQgMTE3NSAxMUFGO0NDMTQ7MTEwRCAxMTc1IDExQUY7ICMgKOywlDsg7LCUOyDhhI3hhbXhhq87IOywlDsg4YSN4YW14YavOyApIEhBTkdVTCBTWUxMQUJMRSBKSklMCitDQzE1O0NDMTU7MTEwRCAxMTc1IDExQjA7Q0MxNTsxMTBEIDExNzUgMTFCMDsgIyAo7LCVOyDssJU7IOGEjeGFteGGsDsg7LCVOyDhhI3hhbXhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEpKSUxHCitDQzE2O0NDMTY7MTEwRCAxMTc1IDExQjE7Q0MxNjsxMTBEIDExNzUgMTFCMTsgIyAo7LCWOyDssJY7IOGEjeGFteGGsTsg7LCWOyDhhI3hhbXhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEpKSUxNCitDQzE3O0NDMTc7MTEwRCAxMTc1IDExQjI7Q0MxNzsxMTBEIDExNzUgMTFCMjsgIyAo7LCXOyDssJc7IOGEjeGFteGGsjsg7LCXOyDhhI3hhbXhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEpKSUxCCitDQzE4O0NDMTg7MTEwRCAxMTc1IDExQjM7Q0MxODsxMTBEIDExNzUgMTFCMzsgIyAo7LCYOyDssJg7IOGEjeGFteGGszsg7LCYOyDhhI3hhbXhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEpKSUxTCitDQzE5O0NDMTk7MTEwRCAxMTc1IDExQjQ7Q0MxOTsxMTBEIDExNzUgMTFCNDsgIyAo7LCZOyDssJk7IOGEjeGFteGGtDsg7LCZOyDhhI3hhbXhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEpKSUxUCitDQzFBO0NDMUE7MTEwRCAxMTc1IDExQjU7Q0MxQTsxMTBEIDExNzUgMTFCNTsgIyAo7LCaOyDssJo7IOGEjeGFteGGtTsg7LCaOyDhhI3hhbXhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEpKSUxQCitDQzFCO0NDMUI7MTEwRCAxMTc1IDExQjY7Q0MxQjsxMTBEIDExNzUgMTFCNjsgIyAo7LCbOyDssJs7IOGEjeGFteGGtjsg7LCbOyDhhI3hhbXhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEpKSUxICitDQzFDO0NDMUM7MTEwRCAxMTc1IDExQjc7Q0MxQzsxMTBEIDExNzUgMTFCNzsgIyAo7LCcOyDssJw7IOGEjeGFteGGtzsg7LCcOyDhhI3hhbXhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEpKSU0KK0NDMUQ7Q0MxRDsxMTBEIDExNzUgMTFCODtDQzFEOzExMEQgMTE3NSAxMUI4OyAjICjssJ07IOywnTsg4YSN4YW14Ya4OyDssJ07IOGEjeGFteGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSkpJQgorQ0MxRTtDQzFFOzExMEQgMTE3NSAxMUI5O0NDMUU7MTEwRCAxMTc1IDExQjk7ICMgKOywnjsg7LCeOyDhhI3hhbXhhrk7IOywnjsg4YSN4YW14Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBKSklCUworQ0MxRjtDQzFGOzExMEQgMTE3NSAxMUJBO0NDMUY7MTEwRCAxMTc1IDExQkE7ICMgKOywnzsg7LCfOyDhhI3hhbXhhro7IOywnzsg4YSN4YW14Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBKSklTCitDQzIwO0NDMjA7MTEwRCAxMTc1IDExQkI7Q0MyMDsxMTBEIDExNzUgMTFCQjsgIyAo7LCgOyDssKA7IOGEjeGFteGGuzsg7LCgOyDhhI3hhbXhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEpKSVNTCitDQzIxO0NDMjE7MTEwRCAxMTc1IDExQkM7Q0MyMTsxMTBEIDExNzUgMTFCQzsgIyAo7LChOyDssKE7IOGEjeGFteGGvDsg7LChOyDhhI3hhbXhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEpKSU5HCitDQzIyO0NDMjI7MTEwRCAxMTc1IDExQkQ7Q0MyMjsxMTBEIDExNzUgMTFCRDsgIyAo7LCiOyDssKI7IOGEjeGFteGGvTsg7LCiOyDhhI3hhbXhhr07ICkgSEFOR1VMIFNZTExBQkxFIEpKSUoKK0NDMjM7Q0MyMzsxMTBEIDExNzUgMTFCRTtDQzIzOzExMEQgMTE3NSAxMUJFOyAjICjssKM7IOywozsg4YSN4YW14Ya+OyDssKM7IOGEjeGFteGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSkpJQworQ0MyNDtDQzI0OzExMEQgMTE3NSAxMUJGO0NDMjQ7MTEwRCAxMTc1IDExQkY7ICMgKOywpDsg7LCkOyDhhI3hhbXhhr87IOywpDsg4YSN4YW14Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBKSklLCitDQzI1O0NDMjU7MTEwRCAxMTc1IDExQzA7Q0MyNTsxMTBEIDExNzUgMTFDMDsgIyAo7LClOyDssKU7IOGEjeGFteGHgDsg7LClOyDhhI3hhbXhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEpKSVQKK0NDMjY7Q0MyNjsxMTBEIDExNzUgMTFDMTtDQzI2OzExMEQgMTE3NSAxMUMxOyAjICjssKY7IOywpjsg4YSN4YW14YeBOyDssKY7IOGEjeGFteGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSkpJUAorQ0MyNztDQzI3OzExMEQgMTE3NSAxMUMyO0NDMjc7MTEwRCAxMTc1IDExQzI7ICMgKOywpzsg7LCnOyDhhI3hhbXhh4I7IOywpzsg4YSN4YW14YeCOyApIEhBTkdVTCBTWUxMQUJMRSBKSklICitDQzI4O0NDMjg7MTEwRSAxMTYxO0NDMjg7MTEwRSAxMTYxOyAjICjssKg7IOywqDsg4YSO4YWhOyDssKg7IOGEjuGFoTsgKSBIQU5HVUwgU1lMTEFCTEUgQ0EKK0NDMjk7Q0MyOTsxMTBFIDExNjEgMTFBODtDQzI5OzExMEUgMTE2MSAxMUE4OyAjICjssKk7IOywqTsg4YSO4YWh4YaoOyDssKk7IOGEjuGFoeGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgQ0FHCitDQzJBO0NDMkE7MTEwRSAxMTYxIDExQTk7Q0MyQTsxMTBFIDExNjEgMTFBOTsgIyAo7LCqOyDssKo7IOGEjuGFoeGGqTsg7LCqOyDhhI7hhaHhhqk7ICkgSEFOR1VMIFNZTExBQkxFIENBR0cKK0NDMkI7Q0MyQjsxMTBFIDExNjEgMTFBQTtDQzJCOzExMEUgMTE2MSAxMUFBOyAjICjssKs7IOywqzsg4YSO4YWh4YaqOyDssKs7IOGEjuGFoeGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQ0FHUworQ0MyQztDQzJDOzExMEUgMTE2MSAxMUFCO0NDMkM7MTEwRSAxMTYxIDExQUI7ICMgKOywrDsg7LCsOyDhhI7hhaHhhqs7IOywrDsg4YSO4YWh4YarOyApIEhBTkdVTCBTWUxMQUJMRSBDQU4KK0NDMkQ7Q0MyRDsxMTBFIDExNjEgMTFBQztDQzJEOzExMEUgMTE2MSAxMUFDOyAjICjssK07IOywrTsg4YSO4YWh4YasOyDssK07IOGEjuGFoeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgQ0FOSgorQ0MyRTtDQzJFOzExMEUgMTE2MSAxMUFEO0NDMkU7MTEwRSAxMTYxIDExQUQ7ICMgKOywrjsg7LCuOyDhhI7hhaHhhq07IOywrjsg4YSO4YWh4YatOyApIEhBTkdVTCBTWUxMQUJMRSBDQU5ICitDQzJGO0NDMkY7MTEwRSAxMTYxIDExQUU7Q0MyRjsxMTBFIDExNjEgMTFBRTsgIyAo7LCvOyDssK87IOGEjuGFoeGGrjsg7LCvOyDhhI7hhaHhhq47ICkgSEFOR1VMIFNZTExBQkxFIENBRAorQ0MzMDtDQzMwOzExMEUgMTE2MSAxMUFGO0NDMzA7MTEwRSAxMTYxIDExQUY7ICMgKOywsDsg7LCwOyDhhI7hhaHhhq87IOywsDsg4YSO4YWh4YavOyApIEhBTkdVTCBTWUxMQUJMRSBDQUwKK0NDMzE7Q0MzMTsxMTBFIDExNjEgMTFCMDtDQzMxOzExMEUgMTE2MSAxMUIwOyAjICjssLE7IOywsTsg4YSO4YWh4YawOyDssLE7IOGEjuGFoeGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQ0FMRworQ0MzMjtDQzMyOzExMEUgMTE2MSAxMUIxO0NDMzI7MTEwRSAxMTYxIDExQjE7ICMgKOywsjsg7LCyOyDhhI7hhaHhhrE7IOywsjsg4YSO4YWh4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBDQUxNCitDQzMzO0NDMzM7MTEwRSAxMTYxIDExQjI7Q0MzMzsxMTBFIDExNjEgMTFCMjsgIyAo7LCzOyDssLM7IOGEjuGFoeGGsjsg7LCzOyDhhI7hhaHhhrI7ICkgSEFOR1VMIFNZTExBQkxFIENBTEIKK0NDMzQ7Q0MzNDsxMTBFIDExNjEgMTFCMztDQzM0OzExMEUgMTE2MSAxMUIzOyAjICjssLQ7IOywtDsg4YSO4YWh4YazOyDssLQ7IOGEjuGFoeGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQ0FMUworQ0MzNTtDQzM1OzExMEUgMTE2MSAxMUI0O0NDMzU7MTEwRSAxMTYxIDExQjQ7ICMgKOywtTsg7LC1OyDhhI7hhaHhhrQ7IOywtTsg4YSO4YWh4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBDQUxUCitDQzM2O0NDMzY7MTEwRSAxMTYxIDExQjU7Q0MzNjsxMTBFIDExNjEgMTFCNTsgIyAo7LC2OyDssLY7IOGEjuGFoeGGtTsg7LC2OyDhhI7hhaHhhrU7ICkgSEFOR1VMIFNZTExBQkxFIENBTFAKK0NDMzc7Q0MzNzsxMTBFIDExNjEgMTFCNjtDQzM3OzExMEUgMTE2MSAxMUI2OyAjICjssLc7IOywtzsg4YSO4YWh4Ya2OyDssLc7IOGEjuGFoeGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQ0FMSAorQ0MzODtDQzM4OzExMEUgMTE2MSAxMUI3O0NDMzg7MTEwRSAxMTYxIDExQjc7ICMgKOywuDsg7LC4OyDhhI7hhaHhhrc7IOywuDsg4YSO4YWh4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBDQU0KK0NDMzk7Q0MzOTsxMTBFIDExNjEgMTFCODtDQzM5OzExMEUgMTE2MSAxMUI4OyAjICjssLk7IOywuTsg4YSO4YWh4Ya4OyDssLk7IOGEjuGFoeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgQ0FCCitDQzNBO0NDM0E7MTEwRSAxMTYxIDExQjk7Q0MzQTsxMTBFIDExNjEgMTFCOTsgIyAo7LC6OyDssLo7IOGEjuGFoeGGuTsg7LC6OyDhhI7hhaHhhrk7ICkgSEFOR1VMIFNZTExBQkxFIENBQlMKK0NDM0I7Q0MzQjsxMTBFIDExNjEgMTFCQTtDQzNCOzExMEUgMTE2MSAxMUJBOyAjICjssLs7IOywuzsg4YSO4YWh4Ya6OyDssLs7IOGEjuGFoeGGujsgKSBIQU5HVUwgU1lMTEFCTEUgQ0FTCitDQzNDO0NDM0M7MTEwRSAxMTYxIDExQkI7Q0MzQzsxMTBFIDExNjEgMTFCQjsgIyAo7LC8OyDssLw7IOGEjuGFoeGGuzsg7LC8OyDhhI7hhaHhhrs7ICkgSEFOR1VMIFNZTExBQkxFIENBU1MKK0NDM0Q7Q0MzRDsxMTBFIDExNjEgMTFCQztDQzNEOzExMEUgMTE2MSAxMUJDOyAjICjssL07IOywvTsg4YSO4YWh4Ya8OyDssL07IOGEjuGFoeGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQ0FORworQ0MzRTtDQzNFOzExMEUgMTE2MSAxMUJEO0NDM0U7MTEwRSAxMTYxIDExQkQ7ICMgKOywvjsg7LC+OyDhhI7hhaHhhr07IOywvjsg4YSO4YWh4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBDQUoKK0NDM0Y7Q0MzRjsxMTBFIDExNjEgMTFCRTtDQzNGOzExMEUgMTE2MSAxMUJFOyAjICjssL87IOywvzsg4YSO4YWh4Ya+OyDssL87IOGEjuGFoeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgQ0FDCitDQzQwO0NDNDA7MTEwRSAxMTYxIDExQkY7Q0M0MDsxMTBFIDExNjEgMTFCRjsgIyAo7LGAOyDssYA7IOGEjuGFoeGGvzsg7LGAOyDhhI7hhaHhhr87ICkgSEFOR1VMIFNZTExBQkxFIENBSworQ0M0MTtDQzQxOzExMEUgMTE2MSAxMUMwO0NDNDE7MTEwRSAxMTYxIDExQzA7ICMgKOyxgTsg7LGBOyDhhI7hhaHhh4A7IOyxgTsg4YSO4YWh4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBDQVQKK0NDNDI7Q0M0MjsxMTBFIDExNjEgMTFDMTtDQzQyOzExMEUgMTE2MSAxMUMxOyAjICjssYI7IOyxgjsg4YSO4YWh4YeBOyDssYI7IOGEjuGFoeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgQ0FQCitDQzQzO0NDNDM7MTEwRSAxMTYxIDExQzI7Q0M0MzsxMTBFIDExNjEgMTFDMjsgIyAo7LGDOyDssYM7IOGEjuGFoeGHgjsg7LGDOyDhhI7hhaHhh4I7ICkgSEFOR1VMIFNZTExBQkxFIENBSAorQ0M0NDtDQzQ0OzExMEUgMTE2MjtDQzQ0OzExMEUgMTE2MjsgIyAo7LGEOyDssYQ7IOGEjuGFojsg7LGEOyDhhI7hhaI7ICkgSEFOR1VMIFNZTExBQkxFIENBRQorQ0M0NTtDQzQ1OzExMEUgMTE2MiAxMUE4O0NDNDU7MTEwRSAxMTYyIDExQTg7ICMgKOyxhTsg7LGFOyDhhI7hhaLhhqg7IOyxhTsg4YSO4YWi4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBDQUVHCitDQzQ2O0NDNDY7MTEwRSAxMTYyIDExQTk7Q0M0NjsxMTBFIDExNjIgMTFBOTsgIyAo7LGGOyDssYY7IOGEjuGFouGGqTsg7LGGOyDhhI7hhaLhhqk7ICkgSEFOR1VMIFNZTExBQkxFIENBRUdHCitDQzQ3O0NDNDc7MTEwRSAxMTYyIDExQUE7Q0M0NzsxMTBFIDExNjIgMTFBQTsgIyAo7LGHOyDssYc7IOGEjuGFouGGqjsg7LGHOyDhhI7hhaLhhqo7ICkgSEFOR1VMIFNZTExBQkxFIENBRUdTCitDQzQ4O0NDNDg7MTEwRSAxMTYyIDExQUI7Q0M0ODsxMTBFIDExNjIgMTFBQjsgIyAo7LGIOyDssYg7IOGEjuGFouGGqzsg7LGIOyDhhI7hhaLhhqs7ICkgSEFOR1VMIFNZTExBQkxFIENBRU4KK0NDNDk7Q0M0OTsxMTBFIDExNjIgMTFBQztDQzQ5OzExMEUgMTE2MiAxMUFDOyAjICjssYk7IOyxiTsg4YSO4YWi4YasOyDssYk7IOGEjuGFouGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgQ0FFTkoKK0NDNEE7Q0M0QTsxMTBFIDExNjIgMTFBRDtDQzRBOzExMEUgMTE2MiAxMUFEOyAjICjssYo7IOyxijsg4YSO4YWi4YatOyDssYo7IOGEjuGFouGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgQ0FFTkgKK0NDNEI7Q0M0QjsxMTBFIDExNjIgMTFBRTtDQzRCOzExMEUgMTE2MiAxMUFFOyAjICjssYs7IOyxizsg4YSO4YWi4YauOyDssYs7IOGEjuGFouGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQ0FFRAorQ0M0QztDQzRDOzExMEUgMTE2MiAxMUFGO0NDNEM7MTEwRSAxMTYyIDExQUY7ICMgKOyxjDsg7LGMOyDhhI7hhaLhhq87IOyxjDsg4YSO4YWi4YavOyApIEhBTkdVTCBTWUxMQUJMRSBDQUVMCitDQzREO0NDNEQ7MTEwRSAxMTYyIDExQjA7Q0M0RDsxMTBFIDExNjIgMTFCMDsgIyAo7LGNOyDssY07IOGEjuGFouGGsDsg7LGNOyDhhI7hhaLhhrA7ICkgSEFOR1VMIFNZTExBQkxFIENBRUxHCitDQzRFO0NDNEU7MTEwRSAxMTYyIDExQjE7Q0M0RTsxMTBFIDExNjIgMTFCMTsgIyAo7LGOOyDssY47IOGEjuGFouGGsTsg7LGOOyDhhI7hhaLhhrE7ICkgSEFOR1VMIFNZTExBQkxFIENBRUxNCitDQzRGO0NDNEY7MTEwRSAxMTYyIDExQjI7Q0M0RjsxMTBFIDExNjIgMTFCMjsgIyAo7LGPOyDssY87IOGEjuGFouGGsjsg7LGPOyDhhI7hhaLhhrI7ICkgSEFOR1VMIFNZTExBQkxFIENBRUxCCitDQzUwO0NDNTA7MTEwRSAxMTYyIDExQjM7Q0M1MDsxMTBFIDExNjIgMTFCMzsgIyAo7LGQOyDssZA7IOGEjuGFouGGszsg7LGQOyDhhI7hhaLhhrM7ICkgSEFOR1VMIFNZTExBQkxFIENBRUxTCitDQzUxO0NDNTE7MTEwRSAxMTYyIDExQjQ7Q0M1MTsxMTBFIDExNjIgMTFCNDsgIyAo7LGROyDssZE7IOGEjuGFouGGtDsg7LGROyDhhI7hhaLhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIENBRUxUCitDQzUyO0NDNTI7MTEwRSAxMTYyIDExQjU7Q0M1MjsxMTBFIDExNjIgMTFCNTsgIyAo7LGSOyDssZI7IOGEjuGFouGGtTsg7LGSOyDhhI7hhaLhhrU7ICkgSEFOR1VMIFNZTExBQkxFIENBRUxQCitDQzUzO0NDNTM7MTEwRSAxMTYyIDExQjY7Q0M1MzsxMTBFIDExNjIgMTFCNjsgIyAo7LGTOyDssZM7IOGEjuGFouGGtjsg7LGTOyDhhI7hhaLhhrY7ICkgSEFOR1VMIFNZTExBQkxFIENBRUxICitDQzU0O0NDNTQ7MTEwRSAxMTYyIDExQjc7Q0M1NDsxMTBFIDExNjIgMTFCNzsgIyAo7LGUOyDssZQ7IOGEjuGFouGGtzsg7LGUOyDhhI7hhaLhhrc7ICkgSEFOR1VMIFNZTExBQkxFIENBRU0KK0NDNTU7Q0M1NTsxMTBFIDExNjIgMTFCODtDQzU1OzExMEUgMTE2MiAxMUI4OyAjICjssZU7IOyxlTsg4YSO4YWi4Ya4OyDssZU7IOGEjuGFouGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgQ0FFQgorQ0M1NjtDQzU2OzExMEUgMTE2MiAxMUI5O0NDNTY7MTEwRSAxMTYyIDExQjk7ICMgKOyxljsg7LGWOyDhhI7hhaLhhrk7IOyxljsg4YSO4YWi4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBDQUVCUworQ0M1NztDQzU3OzExMEUgMTE2MiAxMUJBO0NDNTc7MTEwRSAxMTYyIDExQkE7ICMgKOyxlzsg7LGXOyDhhI7hhaLhhro7IOyxlzsg4YSO4YWi4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBDQUVTCitDQzU4O0NDNTg7MTEwRSAxMTYyIDExQkI7Q0M1ODsxMTBFIDExNjIgMTFCQjsgIyAo7LGYOyDssZg7IOGEjuGFouGGuzsg7LGYOyDhhI7hhaLhhrs7ICkgSEFOR1VMIFNZTExBQkxFIENBRVNTCitDQzU5O0NDNTk7MTEwRSAxMTYyIDExQkM7Q0M1OTsxMTBFIDExNjIgMTFCQzsgIyAo7LGZOyDssZk7IOGEjuGFouGGvDsg7LGZOyDhhI7hhaLhhrw7ICkgSEFOR1VMIFNZTExBQkxFIENBRU5HCitDQzVBO0NDNUE7MTEwRSAxMTYyIDExQkQ7Q0M1QTsxMTBFIDExNjIgMTFCRDsgIyAo7LGaOyDssZo7IOGEjuGFouGGvTsg7LGaOyDhhI7hhaLhhr07ICkgSEFOR1VMIFNZTExBQkxFIENBRUoKK0NDNUI7Q0M1QjsxMTBFIDExNjIgMTFCRTtDQzVCOzExMEUgMTE2MiAxMUJFOyAjICjssZs7IOyxmzsg4YSO4YWi4Ya+OyDssZs7IOGEjuGFouGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgQ0FFQworQ0M1QztDQzVDOzExMEUgMTE2MiAxMUJGO0NDNUM7MTEwRSAxMTYyIDExQkY7ICMgKOyxnDsg7LGcOyDhhI7hhaLhhr87IOyxnDsg4YSO4YWi4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBDQUVLCitDQzVEO0NDNUQ7MTEwRSAxMTYyIDExQzA7Q0M1RDsxMTBFIDExNjIgMTFDMDsgIyAo7LGdOyDssZ07IOGEjuGFouGHgDsg7LGdOyDhhI7hhaLhh4A7ICkgSEFOR1VMIFNZTExBQkxFIENBRVQKK0NDNUU7Q0M1RTsxMTBFIDExNjIgMTFDMTtDQzVFOzExMEUgMTE2MiAxMUMxOyAjICjssZ47IOyxnjsg4YSO4YWi4YeBOyDssZ47IOGEjuGFouGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgQ0FFUAorQ0M1RjtDQzVGOzExMEUgMTE2MiAxMUMyO0NDNUY7MTEwRSAxMTYyIDExQzI7ICMgKOyxnzsg7LGfOyDhhI7hhaLhh4I7IOyxnzsg4YSO4YWi4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBDQUVICitDQzYwO0NDNjA7MTEwRSAxMTYzO0NDNjA7MTEwRSAxMTYzOyAjICjssaA7IOyxoDsg4YSO4YWjOyDssaA7IOGEjuGFozsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBCitDQzYxO0NDNjE7MTEwRSAxMTYzIDExQTg7Q0M2MTsxMTBFIDExNjMgMTFBODsgIyAo7LGhOyDssaE7IOGEjuGFo+GGqDsg7LGhOyDhhI7hhaPhhqg7ICkgSEFOR1VMIFNZTExBQkxFIENZQUcKK0NDNjI7Q0M2MjsxMTBFIDExNjMgMTFBOTtDQzYyOzExMEUgMTE2MyAxMUE5OyAjICjssaI7IOyxojsg4YSO4YWj4YapOyDssaI7IOGEjuGFo+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBR0cKK0NDNjM7Q0M2MzsxMTBFIDExNjMgMTFBQTtDQzYzOzExMEUgMTE2MyAxMUFBOyAjICjssaM7IOyxozsg4YSO4YWj4YaqOyDssaM7IOGEjuGFo+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBR1MKK0NDNjQ7Q0M2NDsxMTBFIDExNjMgMTFBQjtDQzY0OzExMEUgMTE2MyAxMUFCOyAjICjssaQ7IOyxpDsg4YSO4YWj4YarOyDssaQ7IOGEjuGFo+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBTgorQ0M2NTtDQzY1OzExMEUgMTE2MyAxMUFDO0NDNjU7MTEwRSAxMTYzIDExQUM7ICMgKOyxpTsg7LGlOyDhhI7hhaPhhqw7IOyxpTsg4YSO4YWj4YasOyApIEhBTkdVTCBTWUxMQUJMRSBDWUFOSgorQ0M2NjtDQzY2OzExMEUgMTE2MyAxMUFEO0NDNjY7MTEwRSAxMTYzIDExQUQ7ICMgKOyxpjsg7LGmOyDhhI7hhaPhhq07IOyxpjsg4YSO4YWj4YatOyApIEhBTkdVTCBTWUxMQUJMRSBDWUFOSAorQ0M2NztDQzY3OzExMEUgMTE2MyAxMUFFO0NDNjc7MTEwRSAxMTYzIDExQUU7ICMgKOyxpzsg7LGnOyDhhI7hhaPhhq47IOyxpzsg4YSO4YWj4YauOyApIEhBTkdVTCBTWUxMQUJMRSBDWUFECitDQzY4O0NDNjg7MTEwRSAxMTYzIDExQUY7Q0M2ODsxMTBFIDExNjMgMTFBRjsgIyAo7LGoOyDssag7IOGEjuGFo+GGrzsg7LGoOyDhhI7hhaPhhq87ICkgSEFOR1VMIFNZTExBQkxFIENZQUwKK0NDNjk7Q0M2OTsxMTBFIDExNjMgMTFCMDtDQzY5OzExMEUgMTE2MyAxMUIwOyAjICjssak7IOyxqTsg4YSO4YWj4YawOyDssak7IOGEjuGFo+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBTEcKK0NDNkE7Q0M2QTsxMTBFIDExNjMgMTFCMTtDQzZBOzExMEUgMTE2MyAxMUIxOyAjICjssao7IOyxqjsg4YSO4YWj4YaxOyDssao7IOGEjuGFo+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBTE0KK0NDNkI7Q0M2QjsxMTBFIDExNjMgMTFCMjtDQzZCOzExMEUgMTE2MyAxMUIyOyAjICjssas7IOyxqzsg4YSO4YWj4YayOyDssas7IOGEjuGFo+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBTEIKK0NDNkM7Q0M2QzsxMTBFIDExNjMgMTFCMztDQzZDOzExMEUgMTE2MyAxMUIzOyAjICjssaw7IOyxrDsg4YSO4YWj4YazOyDssaw7IOGEjuGFo+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBTFMKK0NDNkQ7Q0M2RDsxMTBFIDExNjMgMTFCNDtDQzZEOzExMEUgMTE2MyAxMUI0OyAjICjssa07IOyxrTsg4YSO4YWj4Ya0OyDssa07IOGEjuGFo+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBTFQKK0NDNkU7Q0M2RTsxMTBFIDExNjMgMTFCNTtDQzZFOzExMEUgMTE2MyAxMUI1OyAjICjssa47IOyxrjsg4YSO4YWj4Ya1OyDssa47IOGEjuGFo+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBTFAKK0NDNkY7Q0M2RjsxMTBFIDExNjMgMTFCNjtDQzZGOzExMEUgMTE2MyAxMUI2OyAjICjssa87IOyxrzsg4YSO4YWj4Ya2OyDssa87IOGEjuGFo+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBTEgKK0NDNzA7Q0M3MDsxMTBFIDExNjMgMTFCNztDQzcwOzExMEUgMTE2MyAxMUI3OyAjICjssbA7IOyxsDsg4YSO4YWj4Ya3OyDssbA7IOGEjuGFo+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBTQorQ0M3MTtDQzcxOzExMEUgMTE2MyAxMUI4O0NDNzE7MTEwRSAxMTYzIDExQjg7ICMgKOyxsTsg7LGxOyDhhI7hhaPhhrg7IOyxsTsg4YSO4YWj4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBDWUFCCitDQzcyO0NDNzI7MTEwRSAxMTYzIDExQjk7Q0M3MjsxMTBFIDExNjMgMTFCOTsgIyAo7LGyOyDssbI7IOGEjuGFo+GGuTsg7LGyOyDhhI7hhaPhhrk7ICkgSEFOR1VMIFNZTExBQkxFIENZQUJTCitDQzczO0NDNzM7MTEwRSAxMTYzIDExQkE7Q0M3MzsxMTBFIDExNjMgMTFCQTsgIyAo7LGzOyDssbM7IOGEjuGFo+GGujsg7LGzOyDhhI7hhaPhhro7ICkgSEFOR1VMIFNZTExBQkxFIENZQVMKK0NDNzQ7Q0M3NDsxMTBFIDExNjMgMTFCQjtDQzc0OzExMEUgMTE2MyAxMUJCOyAjICjssbQ7IOyxtDsg4YSO4YWj4Ya7OyDssbQ7IOGEjuGFo+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBU1MKK0NDNzU7Q0M3NTsxMTBFIDExNjMgMTFCQztDQzc1OzExMEUgMTE2MyAxMUJDOyAjICjssbU7IOyxtTsg4YSO4YWj4Ya8OyDssbU7IOGEjuGFo+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBTkcKK0NDNzY7Q0M3NjsxMTBFIDExNjMgMTFCRDtDQzc2OzExMEUgMTE2MyAxMUJEOyAjICjssbY7IOyxtjsg4YSO4YWj4Ya9OyDssbY7IOGEjuGFo+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBSgorQ0M3NztDQzc3OzExMEUgMTE2MyAxMUJFO0NDNzc7MTEwRSAxMTYzIDExQkU7ICMgKOyxtzsg7LG3OyDhhI7hhaPhhr47IOyxtzsg4YSO4YWj4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBDWUFDCitDQzc4O0NDNzg7MTEwRSAxMTYzIDExQkY7Q0M3ODsxMTBFIDExNjMgMTFCRjsgIyAo7LG4OyDssbg7IOGEjuGFo+GGvzsg7LG4OyDhhI7hhaPhhr87ICkgSEFOR1VMIFNZTExBQkxFIENZQUsKK0NDNzk7Q0M3OTsxMTBFIDExNjMgMTFDMDtDQzc5OzExMEUgMTE2MyAxMUMwOyAjICjssbk7IOyxuTsg4YSO4YWj4YeAOyDssbk7IOGEjuGFo+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBVAorQ0M3QTtDQzdBOzExMEUgMTE2MyAxMUMxO0NDN0E7MTEwRSAxMTYzIDExQzE7ICMgKOyxujsg7LG6OyDhhI7hhaPhh4E7IOyxujsg4YSO4YWj4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBDWUFQCitDQzdCO0NDN0I7MTEwRSAxMTYzIDExQzI7Q0M3QjsxMTBFIDExNjMgMTFDMjsgIyAo7LG7OyDssbs7IOGEjuGFo+GHgjsg7LG7OyDhhI7hhaPhh4I7ICkgSEFOR1VMIFNZTExBQkxFIENZQUgKK0NDN0M7Q0M3QzsxMTBFIDExNjQ7Q0M3QzsxMTBFIDExNjQ7ICMgKOyxvDsg7LG8OyDhhI7hhaQ7IOyxvDsg4YSO4YWkOyApIEhBTkdVTCBTWUxMQUJMRSBDWUFFCitDQzdEO0NDN0Q7MTEwRSAxMTY0IDExQTg7Q0M3RDsxMTBFIDExNjQgMTFBODsgIyAo7LG9OyDssb07IOGEjuGFpOGGqDsg7LG9OyDhhI7hhaThhqg7ICkgSEFOR1VMIFNZTExBQkxFIENZQUVHCitDQzdFO0NDN0U7MTEwRSAxMTY0IDExQTk7Q0M3RTsxMTBFIDExNjQgMTFBOTsgIyAo7LG+OyDssb47IOGEjuGFpOGGqTsg7LG+OyDhhI7hhaThhqk7ICkgSEFOR1VMIFNZTExBQkxFIENZQUVHRworQ0M3RjtDQzdGOzExMEUgMTE2NCAxMUFBO0NDN0Y7MTEwRSAxMTY0IDExQUE7ICMgKOyxvzsg7LG/OyDhhI7hhaThhqo7IOyxvzsg4YSO4YWk4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBDWUFFR1MKK0NDODA7Q0M4MDsxMTBFIDExNjQgMTFBQjtDQzgwOzExMEUgMTE2NCAxMUFCOyAjICjssoA7IOyygDsg4YSO4YWk4YarOyDssoA7IOGEjuGFpOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBRU4KK0NDODE7Q0M4MTsxMTBFIDExNjQgMTFBQztDQzgxOzExMEUgMTE2NCAxMUFDOyAjICjssoE7IOyygTsg4YSO4YWk4YasOyDssoE7IOGEjuGFpOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBRU5KCitDQzgyO0NDODI7MTEwRSAxMTY0IDExQUQ7Q0M4MjsxMTBFIDExNjQgMTFBRDsgIyAo7LKCOyDssoI7IOGEjuGFpOGGrTsg7LKCOyDhhI7hhaThhq07ICkgSEFOR1VMIFNZTExBQkxFIENZQUVOSAorQ0M4MztDQzgzOzExMEUgMTE2NCAxMUFFO0NDODM7MTEwRSAxMTY0IDExQUU7ICMgKOyygzsg7LKDOyDhhI7hhaThhq47IOyygzsg4YSO4YWk4YauOyApIEhBTkdVTCBTWUxMQUJMRSBDWUFFRAorQ0M4NDtDQzg0OzExMEUgMTE2NCAxMUFGO0NDODQ7MTEwRSAxMTY0IDExQUY7ICMgKOyyhDsg7LKEOyDhhI7hhaThhq87IOyyhDsg4YSO4YWk4YavOyApIEhBTkdVTCBTWUxMQUJMRSBDWUFFTAorQ0M4NTtDQzg1OzExMEUgMTE2NCAxMUIwO0NDODU7MTEwRSAxMTY0IDExQjA7ICMgKOyyhTsg7LKFOyDhhI7hhaThhrA7IOyyhTsg4YSO4YWk4YawOyApIEhBTkdVTCBTWUxMQUJMRSBDWUFFTEcKK0NDODY7Q0M4NjsxMTBFIDExNjQgMTFCMTtDQzg2OzExMEUgMTE2NCAxMUIxOyAjICjssoY7IOyyhjsg4YSO4YWk4YaxOyDssoY7IOGEjuGFpOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBRUxNCitDQzg3O0NDODc7MTEwRSAxMTY0IDExQjI7Q0M4NzsxMTBFIDExNjQgMTFCMjsgIyAo7LKHOyDssoc7IOGEjuGFpOGGsjsg7LKHOyDhhI7hhaThhrI7ICkgSEFOR1VMIFNZTExBQkxFIENZQUVMQgorQ0M4ODtDQzg4OzExMEUgMTE2NCAxMUIzO0NDODg7MTEwRSAxMTY0IDExQjM7ICMgKOyyiDsg7LKIOyDhhI7hhaThhrM7IOyyiDsg4YSO4YWk4YazOyApIEhBTkdVTCBTWUxMQUJMRSBDWUFFTFMKK0NDODk7Q0M4OTsxMTBFIDExNjQgMTFCNDtDQzg5OzExMEUgMTE2NCAxMUI0OyAjICjssok7IOyyiTsg4YSO4YWk4Ya0OyDssok7IOGEjuGFpOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBRUxUCitDQzhBO0NDOEE7MTEwRSAxMTY0IDExQjU7Q0M4QTsxMTBFIDExNjQgMTFCNTsgIyAo7LKKOyDssoo7IOGEjuGFpOGGtTsg7LKKOyDhhI7hhaThhrU7ICkgSEFOR1VMIFNZTExBQkxFIENZQUVMUAorQ0M4QjtDQzhCOzExMEUgMTE2NCAxMUI2O0NDOEI7MTEwRSAxMTY0IDExQjY7ICMgKOyyizsg7LKLOyDhhI7hhaThhrY7IOyyizsg4YSO4YWk4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBDWUFFTEgKK0NDOEM7Q0M4QzsxMTBFIDExNjQgMTFCNztDQzhDOzExMEUgMTE2NCAxMUI3OyAjICjssow7IOyyjDsg4YSO4YWk4Ya3OyDssow7IOGEjuGFpOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBRU0KK0NDOEQ7Q0M4RDsxMTBFIDExNjQgMTFCODtDQzhEOzExMEUgMTE2NCAxMUI4OyAjICjsso07IOyyjTsg4YSO4YWk4Ya4OyDsso07IOGEjuGFpOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBRUIKK0NDOEU7Q0M4RTsxMTBFIDExNjQgMTFCOTtDQzhFOzExMEUgMTE2NCAxMUI5OyAjICjsso47IOyyjjsg4YSO4YWk4Ya5OyDsso47IOGEjuGFpOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBRUJTCitDQzhGO0NDOEY7MTEwRSAxMTY0IDExQkE7Q0M4RjsxMTBFIDExNjQgMTFCQTsgIyAo7LKPOyDsso87IOGEjuGFpOGGujsg7LKPOyDhhI7hhaThhro7ICkgSEFOR1VMIFNZTExBQkxFIENZQUVTCitDQzkwO0NDOTA7MTEwRSAxMTY0IDExQkI7Q0M5MDsxMTBFIDExNjQgMTFCQjsgIyAo7LKQOyDsspA7IOGEjuGFpOGGuzsg7LKQOyDhhI7hhaThhrs7ICkgSEFOR1VMIFNZTExBQkxFIENZQUVTUworQ0M5MTtDQzkxOzExMEUgMTE2NCAxMUJDO0NDOTE7MTEwRSAxMTY0IDExQkM7ICMgKOyykTsg7LKROyDhhI7hhaThhrw7IOyykTsg4YSO4YWk4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBDWUFFTkcKK0NDOTI7Q0M5MjsxMTBFIDExNjQgMTFCRDtDQzkyOzExMEUgMTE2NCAxMUJEOyAjICjsspI7IOyykjsg4YSO4YWk4Ya9OyDsspI7IOGEjuGFpOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBRUoKK0NDOTM7Q0M5MzsxMTBFIDExNjQgMTFCRTtDQzkzOzExMEUgMTE2NCAxMUJFOyAjICjsspM7IOyykzsg4YSO4YWk4Ya+OyDsspM7IOGEjuGFpOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBRUMKK0NDOTQ7Q0M5NDsxMTBFIDExNjQgMTFCRjtDQzk0OzExMEUgMTE2NCAxMUJGOyAjICjsspQ7IOyylDsg4YSO4YWk4Ya/OyDsspQ7IOGEjuGFpOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBRUsKK0NDOTU7Q0M5NTsxMTBFIDExNjQgMTFDMDtDQzk1OzExMEUgMTE2NCAxMUMwOyAjICjsspU7IOyylTsg4YSO4YWk4YeAOyDsspU7IOGEjuGFpOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBRVQKK0NDOTY7Q0M5NjsxMTBFIDExNjQgMTFDMTtDQzk2OzExMEUgMTE2NCAxMUMxOyAjICjsspY7IOyyljsg4YSO4YWk4YeBOyDsspY7IOGEjuGFpOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBRVAKK0NDOTc7Q0M5NzsxMTBFIDExNjQgMTFDMjtDQzk3OzExMEUgMTE2NCAxMUMyOyAjICjsspc7IOyylzsg4YSO4YWk4YeCOyDsspc7IOGEjuGFpOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lBRUgKK0NDOTg7Q0M5ODsxMTBFIDExNjU7Q0M5ODsxMTBFIDExNjU7ICMgKOyymDsg7LKYOyDhhI7hhaU7IOyymDsg4YSO4YWlOyApIEhBTkdVTCBTWUxMQUJMRSBDRU8KK0NDOTk7Q0M5OTsxMTBFIDExNjUgMTFBODtDQzk5OzExMEUgMTE2NSAxMUE4OyAjICjsspk7IOyymTsg4YSO4YWl4YaoOyDsspk7IOGEjuGFpeGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VPRworQ0M5QTtDQzlBOzExMEUgMTE2NSAxMUE5O0NDOUE7MTEwRSAxMTY1IDExQTk7ICMgKOyymjsg7LKaOyDhhI7hhaXhhqk7IOyymjsg4YSO4YWl4YapOyApIEhBTkdVTCBTWUxMQUJMRSBDRU9HRworQ0M5QjtDQzlCOzExMEUgMTE2NSAxMUFBO0NDOUI7MTEwRSAxMTY1IDExQUE7ICMgKOyymzsg7LKbOyDhhI7hhaXhhqo7IOyymzsg4YSO4YWl4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBDRU9HUworQ0M5QztDQzlDOzExMEUgMTE2NSAxMUFCO0NDOUM7MTEwRSAxMTY1IDExQUI7ICMgKOyynDsg7LKcOyDhhI7hhaXhhqs7IOyynDsg4YSO4YWl4YarOyApIEhBTkdVTCBTWUxMQUJMRSBDRU9OCitDQzlEO0NDOUQ7MTEwRSAxMTY1IDExQUM7Q0M5RDsxMTBFIDExNjUgMTFBQzsgIyAo7LKdOyDssp07IOGEjuGFpeGGrDsg7LKdOyDhhI7hhaXhhqw7ICkgSEFOR1VMIFNZTExBQkxFIENFT05KCitDQzlFO0NDOUU7MTEwRSAxMTY1IDExQUQ7Q0M5RTsxMTBFIDExNjUgMTFBRDsgIyAo7LKeOyDssp47IOGEjuGFpeGGrTsg7LKeOyDhhI7hhaXhhq07ICkgSEFOR1VMIFNZTExBQkxFIENFT05ICitDQzlGO0NDOUY7MTEwRSAxMTY1IDExQUU7Q0M5RjsxMTBFIDExNjUgMTFBRTsgIyAo7LKfOyDssp87IOGEjuGFpeGGrjsg7LKfOyDhhI7hhaXhhq47ICkgSEFOR1VMIFNZTExBQkxFIENFT0QKK0NDQTA7Q0NBMDsxMTBFIDExNjUgMTFBRjtDQ0EwOzExMEUgMTE2NSAxMUFGOyAjICjssqA7IOyyoDsg4YSO4YWl4YavOyDssqA7IOGEjuGFpeGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VPTAorQ0NBMTtDQ0ExOzExMEUgMTE2NSAxMUIwO0NDQTE7MTEwRSAxMTY1IDExQjA7ICMgKOyyoTsg7LKhOyDhhI7hhaXhhrA7IOyyoTsg4YSO4YWl4YawOyApIEhBTkdVTCBTWUxMQUJMRSBDRU9MRworQ0NBMjtDQ0EyOzExMEUgMTE2NSAxMUIxO0NDQTI7MTEwRSAxMTY1IDExQjE7ICMgKOyyojsg7LKiOyDhhI7hhaXhhrE7IOyyojsg4YSO4YWl4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBDRU9MTQorQ0NBMztDQ0EzOzExMEUgMTE2NSAxMUIyO0NDQTM7MTEwRSAxMTY1IDExQjI7ICMgKOyyozsg7LKjOyDhhI7hhaXhhrI7IOyyozsg4YSO4YWl4YayOyApIEhBTkdVTCBTWUxMQUJMRSBDRU9MQgorQ0NBNDtDQ0E0OzExMEUgMTE2NSAxMUIzO0NDQTQ7MTEwRSAxMTY1IDExQjM7ICMgKOyypDsg7LKkOyDhhI7hhaXhhrM7IOyypDsg4YSO4YWl4YazOyApIEhBTkdVTCBTWUxMQUJMRSBDRU9MUworQ0NBNTtDQ0E1OzExMEUgMTE2NSAxMUI0O0NDQTU7MTEwRSAxMTY1IDExQjQ7ICMgKOyypTsg7LKlOyDhhI7hhaXhhrQ7IOyypTsg4YSO4YWl4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBDRU9MVAorQ0NBNjtDQ0E2OzExMEUgMTE2NSAxMUI1O0NDQTY7MTEwRSAxMTY1IDExQjU7ICMgKOyypjsg7LKmOyDhhI7hhaXhhrU7IOyypjsg4YSO4YWl4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBDRU9MUAorQ0NBNztDQ0E3OzExMEUgMTE2NSAxMUI2O0NDQTc7MTEwRSAxMTY1IDExQjY7ICMgKOyypzsg7LKnOyDhhI7hhaXhhrY7IOyypzsg4YSO4YWl4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBDRU9MSAorQ0NBODtDQ0E4OzExMEUgMTE2NSAxMUI3O0NDQTg7MTEwRSAxMTY1IDExQjc7ICMgKOyyqDsg7LKoOyDhhI7hhaXhhrc7IOyyqDsg4YSO4YWl4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBDRU9NCitDQ0E5O0NDQTk7MTEwRSAxMTY1IDExQjg7Q0NBOTsxMTBFIDExNjUgMTFCODsgIyAo7LKpOyDssqk7IOGEjuGFpeGGuDsg7LKpOyDhhI7hhaXhhrg7ICkgSEFOR1VMIFNZTExBQkxFIENFT0IKK0NDQUE7Q0NBQTsxMTBFIDExNjUgMTFCOTtDQ0FBOzExMEUgMTE2NSAxMUI5OyAjICjssqo7IOyyqjsg4YSO4YWl4Ya5OyDssqo7IOGEjuGFpeGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VPQlMKK0NDQUI7Q0NBQjsxMTBFIDExNjUgMTFCQTtDQ0FCOzExMEUgMTE2NSAxMUJBOyAjICjssqs7IOyyqzsg4YSO4YWl4Ya6OyDssqs7IOGEjuGFpeGGujsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VPUworQ0NBQztDQ0FDOzExMEUgMTE2NSAxMUJCO0NDQUM7MTEwRSAxMTY1IDExQkI7ICMgKOyyrDsg7LKsOyDhhI7hhaXhhrs7IOyyrDsg4YSO4YWl4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBDRU9TUworQ0NBRDtDQ0FEOzExMEUgMTE2NSAxMUJDO0NDQUQ7MTEwRSAxMTY1IDExQkM7ICMgKOyyrTsg7LKtOyDhhI7hhaXhhrw7IOyyrTsg4YSO4YWl4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBDRU9ORworQ0NBRTtDQ0FFOzExMEUgMTE2NSAxMUJEO0NDQUU7MTEwRSAxMTY1IDExQkQ7ICMgKOyyrjsg7LKuOyDhhI7hhaXhhr07IOyyrjsg4YSO4YWl4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBDRU9KCitDQ0FGO0NDQUY7MTEwRSAxMTY1IDExQkU7Q0NBRjsxMTBFIDExNjUgMTFCRTsgIyAo7LKvOyDssq87IOGEjuGFpeGGvjsg7LKvOyDhhI7hhaXhhr47ICkgSEFOR1VMIFNZTExBQkxFIENFT0MKK0NDQjA7Q0NCMDsxMTBFIDExNjUgMTFCRjtDQ0IwOzExMEUgMTE2NSAxMUJGOyAjICjssrA7IOyysDsg4YSO4YWl4Ya/OyDssrA7IOGEjuGFpeGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VPSworQ0NCMTtDQ0IxOzExMEUgMTE2NSAxMUMwO0NDQjE7MTEwRSAxMTY1IDExQzA7ICMgKOyysTsg7LKxOyDhhI7hhaXhh4A7IOyysTsg4YSO4YWl4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBDRU9UCitDQ0IyO0NDQjI7MTEwRSAxMTY1IDExQzE7Q0NCMjsxMTBFIDExNjUgMTFDMTsgIyAo7LKyOyDssrI7IOGEjuGFpeGHgTsg7LKyOyDhhI7hhaXhh4E7ICkgSEFOR1VMIFNZTExBQkxFIENFT1AKK0NDQjM7Q0NCMzsxMTBFIDExNjUgMTFDMjtDQ0IzOzExMEUgMTE2NSAxMUMyOyAjICjssrM7IOyyszsg4YSO4YWl4YeCOyDssrM7IOGEjuGFpeGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VPSAorQ0NCNDtDQ0I0OzExMEUgMTE2NjtDQ0I0OzExMEUgMTE2NjsgIyAo7LK0OyDssrQ7IOGEjuGFpjsg7LK0OyDhhI7hhaY7ICkgSEFOR1VMIFNZTExBQkxFIENFCitDQ0I1O0NDQjU7MTEwRSAxMTY2IDExQTg7Q0NCNTsxMTBFIDExNjYgMTFBODsgIyAo7LK1OyDssrU7IOGEjuGFpuGGqDsg7LK1OyDhhI7hhabhhqg7ICkgSEFOR1VMIFNZTExBQkxFIENFRworQ0NCNjtDQ0I2OzExMEUgMTE2NiAxMUE5O0NDQjY7MTEwRSAxMTY2IDExQTk7ICMgKOyytjsg7LK2OyDhhI7hhabhhqk7IOyytjsg4YSO4YWm4YapOyApIEhBTkdVTCBTWUxMQUJMRSBDRUdHCitDQ0I3O0NDQjc7MTEwRSAxMTY2IDExQUE7Q0NCNzsxMTBFIDExNjYgMTFBQTsgIyAo7LK3OyDssrc7IOGEjuGFpuGGqjsg7LK3OyDhhI7hhabhhqo7ICkgSEFOR1VMIFNZTExBQkxFIENFR1MKK0NDQjg7Q0NCODsxMTBFIDExNjYgMTFBQjtDQ0I4OzExMEUgMTE2NiAxMUFCOyAjICjssrg7IOyyuDsg4YSO4YWm4YarOyDssrg7IOGEjuGFpuGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VOCitDQ0I5O0NDQjk7MTEwRSAxMTY2IDExQUM7Q0NCOTsxMTBFIDExNjYgMTFBQzsgIyAo7LK5OyDssrk7IOGEjuGFpuGGrDsg7LK5OyDhhI7hhabhhqw7ICkgSEFOR1VMIFNZTExBQkxFIENFTkoKK0NDQkE7Q0NCQTsxMTBFIDExNjYgMTFBRDtDQ0JBOzExMEUgMTE2NiAxMUFEOyAjICjssro7IOyyujsg4YSO4YWm4YatOyDssro7IOGEjuGFpuGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VOSAorQ0NCQjtDQ0JCOzExMEUgMTE2NiAxMUFFO0NDQkI7MTEwRSAxMTY2IDExQUU7ICMgKOyyuzsg7LK7OyDhhI7hhabhhq47IOyyuzsg4YSO4YWm4YauOyApIEhBTkdVTCBTWUxMQUJMRSBDRUQKK0NDQkM7Q0NCQzsxMTBFIDExNjYgMTFBRjtDQ0JDOzExMEUgMTE2NiAxMUFGOyAjICjssrw7IOyyvDsg4YSO4YWm4YavOyDssrw7IOGEjuGFpuGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VMCitDQ0JEO0NDQkQ7MTEwRSAxMTY2IDExQjA7Q0NCRDsxMTBFIDExNjYgMTFCMDsgIyAo7LK9OyDssr07IOGEjuGFpuGGsDsg7LK9OyDhhI7hhabhhrA7ICkgSEFOR1VMIFNZTExBQkxFIENFTEcKK0NDQkU7Q0NCRTsxMTBFIDExNjYgMTFCMTtDQ0JFOzExMEUgMTE2NiAxMUIxOyAjICjssr47IOyyvjsg4YSO4YWm4YaxOyDssr47IOGEjuGFpuGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VMTQorQ0NCRjtDQ0JGOzExMEUgMTE2NiAxMUIyO0NDQkY7MTEwRSAxMTY2IDExQjI7ICMgKOyyvzsg7LK/OyDhhI7hhabhhrI7IOyyvzsg4YSO4YWm4YayOyApIEhBTkdVTCBTWUxMQUJMRSBDRUxCCitDQ0MwO0NDQzA7MTEwRSAxMTY2IDExQjM7Q0NDMDsxMTBFIDExNjYgMTFCMzsgIyAo7LOAOyDss4A7IOGEjuGFpuGGszsg7LOAOyDhhI7hhabhhrM7ICkgSEFOR1VMIFNZTExBQkxFIENFTFMKK0NDQzE7Q0NDMTsxMTBFIDExNjYgMTFCNDtDQ0MxOzExMEUgMTE2NiAxMUI0OyAjICjss4E7IOyzgTsg4YSO4YWm4Ya0OyDss4E7IOGEjuGFpuGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VMVAorQ0NDMjtDQ0MyOzExMEUgMTE2NiAxMUI1O0NDQzI7MTEwRSAxMTY2IDExQjU7ICMgKOyzgjsg7LOCOyDhhI7hhabhhrU7IOyzgjsg4YSO4YWm4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBDRUxQCitDQ0MzO0NDQzM7MTEwRSAxMTY2IDExQjY7Q0NDMzsxMTBFIDExNjYgMTFCNjsgIyAo7LODOyDss4M7IOGEjuGFpuGGtjsg7LODOyDhhI7hhabhhrY7ICkgSEFOR1VMIFNZTExBQkxFIENFTEgKK0NDQzQ7Q0NDNDsxMTBFIDExNjYgMTFCNztDQ0M0OzExMEUgMTE2NiAxMUI3OyAjICjss4Q7IOyzhDsg4YSO4YWm4Ya3OyDss4Q7IOGEjuGFpuGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VNCitDQ0M1O0NDQzU7MTEwRSAxMTY2IDExQjg7Q0NDNTsxMTBFIDExNjYgMTFCODsgIyAo7LOFOyDss4U7IOGEjuGFpuGGuDsg7LOFOyDhhI7hhabhhrg7ICkgSEFOR1VMIFNZTExBQkxFIENFQgorQ0NDNjtDQ0M2OzExMEUgMTE2NiAxMUI5O0NDQzY7MTEwRSAxMTY2IDExQjk7ICMgKOyzhjsg7LOGOyDhhI7hhabhhrk7IOyzhjsg4YSO4YWm4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBDRUJTCitDQ0M3O0NDQzc7MTEwRSAxMTY2IDExQkE7Q0NDNzsxMTBFIDExNjYgMTFCQTsgIyAo7LOHOyDss4c7IOGEjuGFpuGGujsg7LOHOyDhhI7hhabhhro7ICkgSEFOR1VMIFNZTExBQkxFIENFUworQ0NDODtDQ0M4OzExMEUgMTE2NiAxMUJCO0NDQzg7MTEwRSAxMTY2IDExQkI7ICMgKOyziDsg7LOIOyDhhI7hhabhhrs7IOyziDsg4YSO4YWm4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBDRVNTCitDQ0M5O0NDQzk7MTEwRSAxMTY2IDExQkM7Q0NDOTsxMTBFIDExNjYgMTFCQzsgIyAo7LOJOyDss4k7IOGEjuGFpuGGvDsg7LOJOyDhhI7hhabhhrw7ICkgSEFOR1VMIFNZTExBQkxFIENFTkcKK0NDQ0E7Q0NDQTsxMTBFIDExNjYgMTFCRDtDQ0NBOzExMEUgMTE2NiAxMUJEOyAjICjss4o7IOyzijsg4YSO4YWm4Ya9OyDss4o7IOGEjuGFpuGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VKCitDQ0NCO0NDQ0I7MTEwRSAxMTY2IDExQkU7Q0NDQjsxMTBFIDExNjYgMTFCRTsgIyAo7LOLOyDss4s7IOGEjuGFpuGGvjsg7LOLOyDhhI7hhabhhr47ICkgSEFOR1VMIFNZTExBQkxFIENFQworQ0NDQztDQ0NDOzExMEUgMTE2NiAxMUJGO0NDQ0M7MTEwRSAxMTY2IDExQkY7ICMgKOyzjDsg7LOMOyDhhI7hhabhhr87IOyzjDsg4YSO4YWm4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBDRUsKK0NDQ0Q7Q0NDRDsxMTBFIDExNjYgMTFDMDtDQ0NEOzExMEUgMTE2NiAxMUMwOyAjICjss407IOyzjTsg4YSO4YWm4YeAOyDss407IOGEjuGFpuGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VUCitDQ0NFO0NDQ0U7MTEwRSAxMTY2IDExQzE7Q0NDRTsxMTBFIDExNjYgMTFDMTsgIyAo7LOOOyDss447IOGEjuGFpuGHgTsg7LOOOyDhhI7hhabhh4E7ICkgSEFOR1VMIFNZTExBQkxFIENFUAorQ0NDRjtDQ0NGOzExMEUgMTE2NiAxMUMyO0NDQ0Y7MTEwRSAxMTY2IDExQzI7ICMgKOyzjzsg7LOPOyDhhI7hhabhh4I7IOyzjzsg4YSO4YWm4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBDRUgKK0NDRDA7Q0NEMDsxMTBFIDExNjc7Q0NEMDsxMTBFIDExNjc7ICMgKOyzkDsg7LOQOyDhhI7hhac7IOyzkDsg4YSO4YWnOyApIEhBTkdVTCBTWUxMQUJMRSBDWUVPCitDQ0QxO0NDRDE7MTEwRSAxMTY3IDExQTg7Q0NEMTsxMTBFIDExNjcgMTFBODsgIyAo7LOROyDss5E7IOGEjuGFp+GGqDsg7LOROyDhhI7hhafhhqg7ICkgSEFOR1VMIFNZTExBQkxFIENZRU9HCitDQ0QyO0NDRDI7MTEwRSAxMTY3IDExQTk7Q0NEMjsxMTBFIDExNjcgMTFBOTsgIyAo7LOSOyDss5I7IOGEjuGFp+GGqTsg7LOSOyDhhI7hhafhhqk7ICkgSEFOR1VMIFNZTExBQkxFIENZRU9HRworQ0NEMztDQ0QzOzExMEUgMTE2NyAxMUFBO0NDRDM7MTEwRSAxMTY3IDExQUE7ICMgKOyzkzsg7LOTOyDhhI7hhafhhqo7IOyzkzsg4YSO4YWn4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBDWUVPR1MKK0NDRDQ7Q0NENDsxMTBFIDExNjcgMTFBQjtDQ0Q0OzExMEUgMTE2NyAxMUFCOyAjICjss5Q7IOyzlDsg4YSO4YWn4YarOyDss5Q7IOGEjuGFp+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lFT04KK0NDRDU7Q0NENTsxMTBFIDExNjcgMTFBQztDQ0Q1OzExMEUgMTE2NyAxMUFDOyAjICjss5U7IOyzlTsg4YSO4YWn4YasOyDss5U7IOGEjuGFp+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lFT05KCitDQ0Q2O0NDRDY7MTEwRSAxMTY3IDExQUQ7Q0NENjsxMTBFIDExNjcgMTFBRDsgIyAo7LOWOyDss5Y7IOGEjuGFp+GGrTsg7LOWOyDhhI7hhafhhq07ICkgSEFOR1VMIFNZTExBQkxFIENZRU9OSAorQ0NENztDQ0Q3OzExMEUgMTE2NyAxMUFFO0NDRDc7MTEwRSAxMTY3IDExQUU7ICMgKOyzlzsg7LOXOyDhhI7hhafhhq47IOyzlzsg4YSO4YWn4YauOyApIEhBTkdVTCBTWUxMQUJMRSBDWUVPRAorQ0NEODtDQ0Q4OzExMEUgMTE2NyAxMUFGO0NDRDg7MTEwRSAxMTY3IDExQUY7ICMgKOyzmDsg7LOYOyDhhI7hhafhhq87IOyzmDsg4YSO4YWn4YavOyApIEhBTkdVTCBTWUxMQUJMRSBDWUVPTAorQ0NEOTtDQ0Q5OzExMEUgMTE2NyAxMUIwO0NDRDk7MTEwRSAxMTY3IDExQjA7ICMgKOyzmTsg7LOZOyDhhI7hhafhhrA7IOyzmTsg4YSO4YWn4YawOyApIEhBTkdVTCBTWUxMQUJMRSBDWUVPTEcKK0NDREE7Q0NEQTsxMTBFIDExNjcgMTFCMTtDQ0RBOzExMEUgMTE2NyAxMUIxOyAjICjss5o7IOyzmjsg4YSO4YWn4YaxOyDss5o7IOGEjuGFp+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lFT0xNCitDQ0RCO0NDREI7MTEwRSAxMTY3IDExQjI7Q0NEQjsxMTBFIDExNjcgMTFCMjsgIyAo7LObOyDss5s7IOGEjuGFp+GGsjsg7LObOyDhhI7hhafhhrI7ICkgSEFOR1VMIFNZTExBQkxFIENZRU9MQgorQ0NEQztDQ0RDOzExMEUgMTE2NyAxMUIzO0NDREM7MTEwRSAxMTY3IDExQjM7ICMgKOyznDsg7LOcOyDhhI7hhafhhrM7IOyznDsg4YSO4YWn4YazOyApIEhBTkdVTCBTWUxMQUJMRSBDWUVPTFMKK0NDREQ7Q0NERDsxMTBFIDExNjcgMTFCNDtDQ0REOzExMEUgMTE2NyAxMUI0OyAjICjss507IOyznTsg4YSO4YWn4Ya0OyDss507IOGEjuGFp+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lFT0xUCitDQ0RFO0NDREU7MTEwRSAxMTY3IDExQjU7Q0NERTsxMTBFIDExNjcgMTFCNTsgIyAo7LOeOyDss547IOGEjuGFp+GGtTsg7LOeOyDhhI7hhafhhrU7ICkgSEFOR1VMIFNZTExBQkxFIENZRU9MUAorQ0NERjtDQ0RGOzExMEUgMTE2NyAxMUI2O0NDREY7MTEwRSAxMTY3IDExQjY7ICMgKOyznzsg7LOfOyDhhI7hhafhhrY7IOyznzsg4YSO4YWn4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBDWUVPTEgKK0NDRTA7Q0NFMDsxMTBFIDExNjcgMTFCNztDQ0UwOzExMEUgMTE2NyAxMUI3OyAjICjss6A7IOyzoDsg4YSO4YWn4Ya3OyDss6A7IOGEjuGFp+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lFT00KK0NDRTE7Q0NFMTsxMTBFIDExNjcgMTFCODtDQ0UxOzExMEUgMTE2NyAxMUI4OyAjICjss6E7IOyzoTsg4YSO4YWn4Ya4OyDss6E7IOGEjuGFp+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lFT0IKK0NDRTI7Q0NFMjsxMTBFIDExNjcgMTFCOTtDQ0UyOzExMEUgMTE2NyAxMUI5OyAjICjss6I7IOyzojsg4YSO4YWn4Ya5OyDss6I7IOGEjuGFp+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lFT0JTCitDQ0UzO0NDRTM7MTEwRSAxMTY3IDExQkE7Q0NFMzsxMTBFIDExNjcgMTFCQTsgIyAo7LOjOyDss6M7IOGEjuGFp+GGujsg7LOjOyDhhI7hhafhhro7ICkgSEFOR1VMIFNZTExBQkxFIENZRU9TCitDQ0U0O0NDRTQ7MTEwRSAxMTY3IDExQkI7Q0NFNDsxMTBFIDExNjcgMTFCQjsgIyAo7LOkOyDss6Q7IOGEjuGFp+GGuzsg7LOkOyDhhI7hhafhhrs7ICkgSEFOR1VMIFNZTExBQkxFIENZRU9TUworQ0NFNTtDQ0U1OzExMEUgMTE2NyAxMUJDO0NDRTU7MTEwRSAxMTY3IDExQkM7ICMgKOyzpTsg7LOlOyDhhI7hhafhhrw7IOyzpTsg4YSO4YWn4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBDWUVPTkcKK0NDRTY7Q0NFNjsxMTBFIDExNjcgMTFCRDtDQ0U2OzExMEUgMTE2NyAxMUJEOyAjICjss6Y7IOyzpjsg4YSO4YWn4Ya9OyDss6Y7IOGEjuGFp+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lFT0oKK0NDRTc7Q0NFNzsxMTBFIDExNjcgMTFCRTtDQ0U3OzExMEUgMTE2NyAxMUJFOyAjICjss6c7IOyzpzsg4YSO4YWn4Ya+OyDss6c7IOGEjuGFp+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lFT0MKK0NDRTg7Q0NFODsxMTBFIDExNjcgMTFCRjtDQ0U4OzExMEUgMTE2NyAxMUJGOyAjICjss6g7IOyzqDsg4YSO4YWn4Ya/OyDss6g7IOGEjuGFp+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lFT0sKK0NDRTk7Q0NFOTsxMTBFIDExNjcgMTFDMDtDQ0U5OzExMEUgMTE2NyAxMUMwOyAjICjss6k7IOyzqTsg4YSO4YWn4YeAOyDss6k7IOGEjuGFp+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lFT1QKK0NDRUE7Q0NFQTsxMTBFIDExNjcgMTFDMTtDQ0VBOzExMEUgMTE2NyAxMUMxOyAjICjss6o7IOyzqjsg4YSO4YWn4YeBOyDss6o7IOGEjuGFp+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lFT1AKK0NDRUI7Q0NFQjsxMTBFIDExNjcgMTFDMjtDQ0VCOzExMEUgMTE2NyAxMUMyOyAjICjss6s7IOyzqzsg4YSO4YWn4YeCOyDss6s7IOGEjuGFp+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lFT0gKK0NDRUM7Q0NFQzsxMTBFIDExNjg7Q0NFQzsxMTBFIDExNjg7ICMgKOyzrDsg7LOsOyDhhI7hhag7IOyzrDsg4YSO4YWoOyApIEhBTkdVTCBTWUxMQUJMRSBDWUUKK0NDRUQ7Q0NFRDsxMTBFIDExNjggMTFBODtDQ0VEOzExMEUgMTE2OCAxMUE4OyAjICjss607IOyzrTsg4YSO4YWo4YaoOyDss607IOGEjuGFqOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lFRworQ0NFRTtDQ0VFOzExMEUgMTE2OCAxMUE5O0NDRUU7MTEwRSAxMTY4IDExQTk7ICMgKOyzrjsg7LOuOyDhhI7hhajhhqk7IOyzrjsg4YSO4YWo4YapOyApIEhBTkdVTCBTWUxMQUJMRSBDWUVHRworQ0NFRjtDQ0VGOzExMEUgMTE2OCAxMUFBO0NDRUY7MTEwRSAxMTY4IDExQUE7ICMgKOyzrzsg7LOvOyDhhI7hhajhhqo7IOyzrzsg4YSO4YWo4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBDWUVHUworQ0NGMDtDQ0YwOzExMEUgMTE2OCAxMUFCO0NDRjA7MTEwRSAxMTY4IDExQUI7ICMgKOyzsDsg7LOwOyDhhI7hhajhhqs7IOyzsDsg4YSO4YWo4YarOyApIEhBTkdVTCBTWUxMQUJMRSBDWUVOCitDQ0YxO0NDRjE7MTEwRSAxMTY4IDExQUM7Q0NGMTsxMTBFIDExNjggMTFBQzsgIyAo7LOxOyDss7E7IOGEjuGFqOGGrDsg7LOxOyDhhI7hhajhhqw7ICkgSEFOR1VMIFNZTExBQkxFIENZRU5KCitDQ0YyO0NDRjI7MTEwRSAxMTY4IDExQUQ7Q0NGMjsxMTBFIDExNjggMTFBRDsgIyAo7LOyOyDss7I7IOGEjuGFqOGGrTsg7LOyOyDhhI7hhajhhq07ICkgSEFOR1VMIFNZTExBQkxFIENZRU5ICitDQ0YzO0NDRjM7MTEwRSAxMTY4IDExQUU7Q0NGMzsxMTBFIDExNjggMTFBRTsgIyAo7LOzOyDss7M7IOGEjuGFqOGGrjsg7LOzOyDhhI7hhajhhq47ICkgSEFOR1VMIFNZTExBQkxFIENZRUQKK0NDRjQ7Q0NGNDsxMTBFIDExNjggMTFBRjtDQ0Y0OzExMEUgMTE2OCAxMUFGOyAjICjss7Q7IOyztDsg4YSO4YWo4YavOyDss7Q7IOGEjuGFqOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lFTAorQ0NGNTtDQ0Y1OzExMEUgMTE2OCAxMUIwO0NDRjU7MTEwRSAxMTY4IDExQjA7ICMgKOyztTsg7LO1OyDhhI7hhajhhrA7IOyztTsg4YSO4YWo4YawOyApIEhBTkdVTCBTWUxMQUJMRSBDWUVMRworQ0NGNjtDQ0Y2OzExMEUgMTE2OCAxMUIxO0NDRjY7MTEwRSAxMTY4IDExQjE7ICMgKOyztjsg7LO2OyDhhI7hhajhhrE7IOyztjsg4YSO4YWo4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBDWUVMTQorQ0NGNztDQ0Y3OzExMEUgMTE2OCAxMUIyO0NDRjc7MTEwRSAxMTY4IDExQjI7ICMgKOyztzsg7LO3OyDhhI7hhajhhrI7IOyztzsg4YSO4YWo4YayOyApIEhBTkdVTCBTWUxMQUJMRSBDWUVMQgorQ0NGODtDQ0Y4OzExMEUgMTE2OCAxMUIzO0NDRjg7MTEwRSAxMTY4IDExQjM7ICMgKOyzuDsg7LO4OyDhhI7hhajhhrM7IOyzuDsg4YSO4YWo4YazOyApIEhBTkdVTCBTWUxMQUJMRSBDWUVMUworQ0NGOTtDQ0Y5OzExMEUgMTE2OCAxMUI0O0NDRjk7MTEwRSAxMTY4IDExQjQ7ICMgKOyzuTsg7LO5OyDhhI7hhajhhrQ7IOyzuTsg4YSO4YWo4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBDWUVMVAorQ0NGQTtDQ0ZBOzExMEUgMTE2OCAxMUI1O0NDRkE7MTEwRSAxMTY4IDExQjU7ICMgKOyzujsg7LO6OyDhhI7hhajhhrU7IOyzujsg4YSO4YWo4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBDWUVMUAorQ0NGQjtDQ0ZCOzExMEUgMTE2OCAxMUI2O0NDRkI7MTEwRSAxMTY4IDExQjY7ICMgKOyzuzsg7LO7OyDhhI7hhajhhrY7IOyzuzsg4YSO4YWo4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBDWUVMSAorQ0NGQztDQ0ZDOzExMEUgMTE2OCAxMUI3O0NDRkM7MTEwRSAxMTY4IDExQjc7ICMgKOyzvDsg7LO8OyDhhI7hhajhhrc7IOyzvDsg4YSO4YWo4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBDWUVNCitDQ0ZEO0NDRkQ7MTEwRSAxMTY4IDExQjg7Q0NGRDsxMTBFIDExNjggMTFCODsgIyAo7LO9OyDss707IOGEjuGFqOGGuDsg7LO9OyDhhI7hhajhhrg7ICkgSEFOR1VMIFNZTExBQkxFIENZRUIKK0NDRkU7Q0NGRTsxMTBFIDExNjggMTFCOTtDQ0ZFOzExMEUgMTE2OCAxMUI5OyAjICjss747IOyzvjsg4YSO4YWo4Ya5OyDss747IOGEjuGFqOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lFQlMKK0NDRkY7Q0NGRjsxMTBFIDExNjggMTFCQTtDQ0ZGOzExMEUgMTE2OCAxMUJBOyAjICjss787IOyzvzsg4YSO4YWo4Ya6OyDss787IOGEjuGFqOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lFUworQ0QwMDtDRDAwOzExMEUgMTE2OCAxMUJCO0NEMDA7MTEwRSAxMTY4IDExQkI7ICMgKOy0gDsg7LSAOyDhhI7hhajhhrs7IOy0gDsg4YSO4YWo4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBDWUVTUworQ0QwMTtDRDAxOzExMEUgMTE2OCAxMUJDO0NEMDE7MTEwRSAxMTY4IDExQkM7ICMgKOy0gTsg7LSBOyDhhI7hhajhhrw7IOy0gTsg4YSO4YWo4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBDWUVORworQ0QwMjtDRDAyOzExMEUgMTE2OCAxMUJEO0NEMDI7MTEwRSAxMTY4IDExQkQ7ICMgKOy0gjsg7LSCOyDhhI7hhajhhr07IOy0gjsg4YSO4YWo4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBDWUVKCitDRDAzO0NEMDM7MTEwRSAxMTY4IDExQkU7Q0QwMzsxMTBFIDExNjggMTFCRTsgIyAo7LSDOyDstIM7IOGEjuGFqOGGvjsg7LSDOyDhhI7hhajhhr47ICkgSEFOR1VMIFNZTExBQkxFIENZRUMKK0NEMDQ7Q0QwNDsxMTBFIDExNjggMTFCRjtDRDA0OzExMEUgMTE2OCAxMUJGOyAjICjstIQ7IOy0hDsg4YSO4YWo4Ya/OyDstIQ7IOGEjuGFqOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lFSworQ0QwNTtDRDA1OzExMEUgMTE2OCAxMUMwO0NEMDU7MTEwRSAxMTY4IDExQzA7ICMgKOy0hTsg7LSFOyDhhI7hhajhh4A7IOy0hTsg4YSO4YWo4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBDWUVUCitDRDA2O0NEMDY7MTEwRSAxMTY4IDExQzE7Q0QwNjsxMTBFIDExNjggMTFDMTsgIyAo7LSGOyDstIY7IOGEjuGFqOGHgTsg7LSGOyDhhI7hhajhh4E7ICkgSEFOR1VMIFNZTExBQkxFIENZRVAKK0NEMDc7Q0QwNzsxMTBFIDExNjggMTFDMjtDRDA3OzExMEUgMTE2OCAxMUMyOyAjICjstIc7IOy0hzsg4YSO4YWo4YeCOyDstIc7IOGEjuGFqOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lFSAorQ0QwODtDRDA4OzExMEUgMTE2OTtDRDA4OzExMEUgMTE2OTsgIyAo7LSIOyDstIg7IOGEjuGFqTsg7LSIOyDhhI7hhak7ICkgSEFOR1VMIFNZTExBQkxFIENPCitDRDA5O0NEMDk7MTEwRSAxMTY5IDExQTg7Q0QwOTsxMTBFIDExNjkgMTFBODsgIyAo7LSJOyDstIk7IOGEjuGFqeGGqDsg7LSJOyDhhI7hhanhhqg7ICkgSEFOR1VMIFNZTExBQkxFIENPRworQ0QwQTtDRDBBOzExMEUgMTE2OSAxMUE5O0NEMEE7MTEwRSAxMTY5IDExQTk7ICMgKOy0ijsg7LSKOyDhhI7hhanhhqk7IOy0ijsg4YSO4YWp4YapOyApIEhBTkdVTCBTWUxMQUJMRSBDT0dHCitDRDBCO0NEMEI7MTEwRSAxMTY5IDExQUE7Q0QwQjsxMTBFIDExNjkgMTFBQTsgIyAo7LSLOyDstIs7IOGEjuGFqeGGqjsg7LSLOyDhhI7hhanhhqo7ICkgSEFOR1VMIFNZTExBQkxFIENPR1MKK0NEMEM7Q0QwQzsxMTBFIDExNjkgMTFBQjtDRDBDOzExMEUgMTE2OSAxMUFCOyAjICjstIw7IOy0jDsg4YSO4YWp4YarOyDstIw7IOGEjuGFqeGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQ09OCitDRDBEO0NEMEQ7MTEwRSAxMTY5IDExQUM7Q0QwRDsxMTBFIDExNjkgMTFBQzsgIyAo7LSNOyDstI07IOGEjuGFqeGGrDsg7LSNOyDhhI7hhanhhqw7ICkgSEFOR1VMIFNZTExBQkxFIENPTkoKK0NEMEU7Q0QwRTsxMTBFIDExNjkgMTFBRDtDRDBFOzExMEUgMTE2OSAxMUFEOyAjICjstI47IOy0jjsg4YSO4YWp4YatOyDstI47IOGEjuGFqeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgQ09OSAorQ0QwRjtDRDBGOzExMEUgMTE2OSAxMUFFO0NEMEY7MTEwRSAxMTY5IDExQUU7ICMgKOy0jzsg7LSPOyDhhI7hhanhhq47IOy0jzsg4YSO4YWp4YauOyApIEhBTkdVTCBTWUxMQUJMRSBDT0QKK0NEMTA7Q0QxMDsxMTBFIDExNjkgMTFBRjtDRDEwOzExMEUgMTE2OSAxMUFGOyAjICjstJA7IOy0kDsg4YSO4YWp4YavOyDstJA7IOGEjuGFqeGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQ09MCitDRDExO0NEMTE7MTEwRSAxMTY5IDExQjA7Q0QxMTsxMTBFIDExNjkgMTFCMDsgIyAo7LSROyDstJE7IOGEjuGFqeGGsDsg7LSROyDhhI7hhanhhrA7ICkgSEFOR1VMIFNZTExBQkxFIENPTEcKK0NEMTI7Q0QxMjsxMTBFIDExNjkgMTFCMTtDRDEyOzExMEUgMTE2OSAxMUIxOyAjICjstJI7IOy0kjsg4YSO4YWp4YaxOyDstJI7IOGEjuGFqeGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQ09MTQorQ0QxMztDRDEzOzExMEUgMTE2OSAxMUIyO0NEMTM7MTEwRSAxMTY5IDExQjI7ICMgKOy0kzsg7LSTOyDhhI7hhanhhrI7IOy0kzsg4YSO4YWp4YayOyApIEhBTkdVTCBTWUxMQUJMRSBDT0xCCitDRDE0O0NEMTQ7MTEwRSAxMTY5IDExQjM7Q0QxNDsxMTBFIDExNjkgMTFCMzsgIyAo7LSUOyDstJQ7IOGEjuGFqeGGszsg7LSUOyDhhI7hhanhhrM7ICkgSEFOR1VMIFNZTExBQkxFIENPTFMKK0NEMTU7Q0QxNTsxMTBFIDExNjkgMTFCNDtDRDE1OzExMEUgMTE2OSAxMUI0OyAjICjstJU7IOy0lTsg4YSO4YWp4Ya0OyDstJU7IOGEjuGFqeGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQ09MVAorQ0QxNjtDRDE2OzExMEUgMTE2OSAxMUI1O0NEMTY7MTEwRSAxMTY5IDExQjU7ICMgKOy0ljsg7LSWOyDhhI7hhanhhrU7IOy0ljsg4YSO4YWp4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBDT0xQCitDRDE3O0NEMTc7MTEwRSAxMTY5IDExQjY7Q0QxNzsxMTBFIDExNjkgMTFCNjsgIyAo7LSXOyDstJc7IOGEjuGFqeGGtjsg7LSXOyDhhI7hhanhhrY7ICkgSEFOR1VMIFNZTExBQkxFIENPTEgKK0NEMTg7Q0QxODsxMTBFIDExNjkgMTFCNztDRDE4OzExMEUgMTE2OSAxMUI3OyAjICjstJg7IOy0mDsg4YSO4YWp4Ya3OyDstJg7IOGEjuGFqeGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQ09NCitDRDE5O0NEMTk7MTEwRSAxMTY5IDExQjg7Q0QxOTsxMTBFIDExNjkgMTFCODsgIyAo7LSZOyDstJk7IOGEjuGFqeGGuDsg7LSZOyDhhI7hhanhhrg7ICkgSEFOR1VMIFNZTExBQkxFIENPQgorQ0QxQTtDRDFBOzExMEUgMTE2OSAxMUI5O0NEMUE7MTEwRSAxMTY5IDExQjk7ICMgKOy0mjsg7LSaOyDhhI7hhanhhrk7IOy0mjsg4YSO4YWp4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBDT0JTCitDRDFCO0NEMUI7MTEwRSAxMTY5IDExQkE7Q0QxQjsxMTBFIDExNjkgMTFCQTsgIyAo7LSbOyDstJs7IOGEjuGFqeGGujsg7LSbOyDhhI7hhanhhro7ICkgSEFOR1VMIFNZTExBQkxFIENPUworQ0QxQztDRDFDOzExMEUgMTE2OSAxMUJCO0NEMUM7MTEwRSAxMTY5IDExQkI7ICMgKOy0nDsg7LScOyDhhI7hhanhhrs7IOy0nDsg4YSO4YWp4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBDT1NTCitDRDFEO0NEMUQ7MTEwRSAxMTY5IDExQkM7Q0QxRDsxMTBFIDExNjkgMTFCQzsgIyAo7LSdOyDstJ07IOGEjuGFqeGGvDsg7LSdOyDhhI7hhanhhrw7ICkgSEFOR1VMIFNZTExBQkxFIENPTkcKK0NEMUU7Q0QxRTsxMTBFIDExNjkgMTFCRDtDRDFFOzExMEUgMTE2OSAxMUJEOyAjICjstJ47IOy0njsg4YSO4YWp4Ya9OyDstJ47IOGEjuGFqeGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQ09KCitDRDFGO0NEMUY7MTEwRSAxMTY5IDExQkU7Q0QxRjsxMTBFIDExNjkgMTFCRTsgIyAo7LSfOyDstJ87IOGEjuGFqeGGvjsg7LSfOyDhhI7hhanhhr47ICkgSEFOR1VMIFNZTExBQkxFIENPQworQ0QyMDtDRDIwOzExMEUgMTE2OSAxMUJGO0NEMjA7MTEwRSAxMTY5IDExQkY7ICMgKOy0oDsg7LSgOyDhhI7hhanhhr87IOy0oDsg4YSO4YWp4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBDT0sKK0NEMjE7Q0QyMTsxMTBFIDExNjkgMTFDMDtDRDIxOzExMEUgMTE2OSAxMUMwOyAjICjstKE7IOy0oTsg4YSO4YWp4YeAOyDstKE7IOGEjuGFqeGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQ09UCitDRDIyO0NEMjI7MTEwRSAxMTY5IDExQzE7Q0QyMjsxMTBFIDExNjkgMTFDMTsgIyAo7LSiOyDstKI7IOGEjuGFqeGHgTsg7LSiOyDhhI7hhanhh4E7ICkgSEFOR1VMIFNZTExBQkxFIENPUAorQ0QyMztDRDIzOzExMEUgMTE2OSAxMUMyO0NEMjM7MTEwRSAxMTY5IDExQzI7ICMgKOy0ozsg7LSjOyDhhI7hhanhh4I7IOy0ozsg4YSO4YWp4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBDT0gKK0NEMjQ7Q0QyNDsxMTBFIDExNkE7Q0QyNDsxMTBFIDExNkE7ICMgKOy0pDsg7LSkOyDhhI7hhao7IOy0pDsg4YSO4YWqOyApIEhBTkdVTCBTWUxMQUJMRSBDV0EKK0NEMjU7Q0QyNTsxMTBFIDExNkEgMTFBODtDRDI1OzExMEUgMTE2QSAxMUE4OyAjICjstKU7IOy0pTsg4YSO4YWq4YaoOyDstKU7IOGEjuGFquGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dBRworQ0QyNjtDRDI2OzExMEUgMTE2QSAxMUE5O0NEMjY7MTEwRSAxMTZBIDExQTk7ICMgKOy0pjsg7LSmOyDhhI7hharhhqk7IOy0pjsg4YSO4YWq4YapOyApIEhBTkdVTCBTWUxMQUJMRSBDV0FHRworQ0QyNztDRDI3OzExMEUgMTE2QSAxMUFBO0NEMjc7MTEwRSAxMTZBIDExQUE7ICMgKOy0pzsg7LSnOyDhhI7hharhhqo7IOy0pzsg4YSO4YWq4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBDV0FHUworQ0QyODtDRDI4OzExMEUgMTE2QSAxMUFCO0NEMjg7MTEwRSAxMTZBIDExQUI7ICMgKOy0qDsg7LSoOyDhhI7hharhhqs7IOy0qDsg4YSO4YWq4YarOyApIEhBTkdVTCBTWUxMQUJMRSBDV0FOCitDRDI5O0NEMjk7MTEwRSAxMTZBIDExQUM7Q0QyOTsxMTBFIDExNkEgMTFBQzsgIyAo7LSpOyDstKk7IOGEjuGFquGGrDsg7LSpOyDhhI7hharhhqw7ICkgSEFOR1VMIFNZTExBQkxFIENXQU5KCitDRDJBO0NEMkE7MTEwRSAxMTZBIDExQUQ7Q0QyQTsxMTBFIDExNkEgMTFBRDsgIyAo7LSqOyDstKo7IOGEjuGFquGGrTsg7LSqOyDhhI7hharhhq07ICkgSEFOR1VMIFNZTExBQkxFIENXQU5ICitDRDJCO0NEMkI7MTEwRSAxMTZBIDExQUU7Q0QyQjsxMTBFIDExNkEgMTFBRTsgIyAo7LSrOyDstKs7IOGEjuGFquGGrjsg7LSrOyDhhI7hharhhq47ICkgSEFOR1VMIFNZTExBQkxFIENXQUQKK0NEMkM7Q0QyQzsxMTBFIDExNkEgMTFBRjtDRDJDOzExMEUgMTE2QSAxMUFGOyAjICjstKw7IOy0rDsg4YSO4YWq4YavOyDstKw7IOGEjuGFquGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dBTAorQ0QyRDtDRDJEOzExMEUgMTE2QSAxMUIwO0NEMkQ7MTEwRSAxMTZBIDExQjA7ICMgKOy0rTsg7LStOyDhhI7hharhhrA7IOy0rTsg4YSO4YWq4YawOyApIEhBTkdVTCBTWUxMQUJMRSBDV0FMRworQ0QyRTtDRDJFOzExMEUgMTE2QSAxMUIxO0NEMkU7MTEwRSAxMTZBIDExQjE7ICMgKOy0rjsg7LSuOyDhhI7hharhhrE7IOy0rjsg4YSO4YWq4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBDV0FMTQorQ0QyRjtDRDJGOzExMEUgMTE2QSAxMUIyO0NEMkY7MTEwRSAxMTZBIDExQjI7ICMgKOy0rzsg7LSvOyDhhI7hharhhrI7IOy0rzsg4YSO4YWq4YayOyApIEhBTkdVTCBTWUxMQUJMRSBDV0FMQgorQ0QzMDtDRDMwOzExMEUgMTE2QSAxMUIzO0NEMzA7MTEwRSAxMTZBIDExQjM7ICMgKOy0sDsg7LSwOyDhhI7hharhhrM7IOy0sDsg4YSO4YWq4YazOyApIEhBTkdVTCBTWUxMQUJMRSBDV0FMUworQ0QzMTtDRDMxOzExMEUgMTE2QSAxMUI0O0NEMzE7MTEwRSAxMTZBIDExQjQ7ICMgKOy0sTsg7LSxOyDhhI7hharhhrQ7IOy0sTsg4YSO4YWq4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBDV0FMVAorQ0QzMjtDRDMyOzExMEUgMTE2QSAxMUI1O0NEMzI7MTEwRSAxMTZBIDExQjU7ICMgKOy0sjsg7LSyOyDhhI7hharhhrU7IOy0sjsg4YSO4YWq4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBDV0FMUAorQ0QzMztDRDMzOzExMEUgMTE2QSAxMUI2O0NEMzM7MTEwRSAxMTZBIDExQjY7ICMgKOy0szsg7LSzOyDhhI7hharhhrY7IOy0szsg4YSO4YWq4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBDV0FMSAorQ0QzNDtDRDM0OzExMEUgMTE2QSAxMUI3O0NEMzQ7MTEwRSAxMTZBIDExQjc7ICMgKOy0tDsg7LS0OyDhhI7hharhhrc7IOy0tDsg4YSO4YWq4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBDV0FNCitDRDM1O0NEMzU7MTEwRSAxMTZBIDExQjg7Q0QzNTsxMTBFIDExNkEgMTFCODsgIyAo7LS1OyDstLU7IOGEjuGFquGGuDsg7LS1OyDhhI7hharhhrg7ICkgSEFOR1VMIFNZTExBQkxFIENXQUIKK0NEMzY7Q0QzNjsxMTBFIDExNkEgMTFCOTtDRDM2OzExMEUgMTE2QSAxMUI5OyAjICjstLY7IOy0tjsg4YSO4YWq4Ya5OyDstLY7IOGEjuGFquGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dBQlMKK0NEMzc7Q0QzNzsxMTBFIDExNkEgMTFCQTtDRDM3OzExMEUgMTE2QSAxMUJBOyAjICjstLc7IOy0tzsg4YSO4YWq4Ya6OyDstLc7IOGEjuGFquGGujsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dBUworQ0QzODtDRDM4OzExMEUgMTE2QSAxMUJCO0NEMzg7MTEwRSAxMTZBIDExQkI7ICMgKOy0uDsg7LS4OyDhhI7hharhhrs7IOy0uDsg4YSO4YWq4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBDV0FTUworQ0QzOTtDRDM5OzExMEUgMTE2QSAxMUJDO0NEMzk7MTEwRSAxMTZBIDExQkM7ICMgKOy0uTsg7LS5OyDhhI7hharhhrw7IOy0uTsg4YSO4YWq4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBDV0FORworQ0QzQTtDRDNBOzExMEUgMTE2QSAxMUJEO0NEM0E7MTEwRSAxMTZBIDExQkQ7ICMgKOy0ujsg7LS6OyDhhI7hharhhr07IOy0ujsg4YSO4YWq4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBDV0FKCitDRDNCO0NEM0I7MTEwRSAxMTZBIDExQkU7Q0QzQjsxMTBFIDExNkEgMTFCRTsgIyAo7LS7OyDstLs7IOGEjuGFquGGvjsg7LS7OyDhhI7hharhhr47ICkgSEFOR1VMIFNZTExBQkxFIENXQUMKK0NEM0M7Q0QzQzsxMTBFIDExNkEgMTFCRjtDRDNDOzExMEUgMTE2QSAxMUJGOyAjICjstLw7IOy0vDsg4YSO4YWq4Ya/OyDstLw7IOGEjuGFquGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dBSworQ0QzRDtDRDNEOzExMEUgMTE2QSAxMUMwO0NEM0Q7MTEwRSAxMTZBIDExQzA7ICMgKOy0vTsg7LS9OyDhhI7hharhh4A7IOy0vTsg4YSO4YWq4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBDV0FUCitDRDNFO0NEM0U7MTEwRSAxMTZBIDExQzE7Q0QzRTsxMTBFIDExNkEgMTFDMTsgIyAo7LS+OyDstL47IOGEjuGFquGHgTsg7LS+OyDhhI7hharhh4E7ICkgSEFOR1VMIFNZTExBQkxFIENXQVAKK0NEM0Y7Q0QzRjsxMTBFIDExNkEgMTFDMjtDRDNGOzExMEUgMTE2QSAxMUMyOyAjICjstL87IOy0vzsg4YSO4YWq4YeCOyDstL87IOGEjuGFquGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dBSAorQ0Q0MDtDRDQwOzExMEUgMTE2QjtDRDQwOzExMEUgMTE2QjsgIyAo7LWAOyDstYA7IOGEjuGFqzsg7LWAOyDhhI7hhas7ICkgSEFOR1VMIFNZTExBQkxFIENXQUUKK0NENDE7Q0Q0MTsxMTBFIDExNkIgMTFBODtDRDQxOzExMEUgMTE2QiAxMUE4OyAjICjstYE7IOy1gTsg4YSO4YWr4YaoOyDstYE7IOGEjuGFq+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dBRUcKK0NENDI7Q0Q0MjsxMTBFIDExNkIgMTFBOTtDRDQyOzExMEUgMTE2QiAxMUE5OyAjICjstYI7IOy1gjsg4YSO4YWr4YapOyDstYI7IOGEjuGFq+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dBRUdHCitDRDQzO0NENDM7MTEwRSAxMTZCIDExQUE7Q0Q0MzsxMTBFIDExNkIgMTFBQTsgIyAo7LWDOyDstYM7IOGEjuGFq+GGqjsg7LWDOyDhhI7hhavhhqo7ICkgSEFOR1VMIFNZTExBQkxFIENXQUVHUworQ0Q0NDtDRDQ0OzExMEUgMTE2QiAxMUFCO0NENDQ7MTEwRSAxMTZCIDExQUI7ICMgKOy1hDsg7LWEOyDhhI7hhavhhqs7IOy1hDsg4YSO4YWr4YarOyApIEhBTkdVTCBTWUxMQUJMRSBDV0FFTgorQ0Q0NTtDRDQ1OzExMEUgMTE2QiAxMUFDO0NENDU7MTEwRSAxMTZCIDExQUM7ICMgKOy1hTsg7LWFOyDhhI7hhavhhqw7IOy1hTsg4YSO4YWr4YasOyApIEhBTkdVTCBTWUxMQUJMRSBDV0FFTkoKK0NENDY7Q0Q0NjsxMTBFIDExNkIgMTFBRDtDRDQ2OzExMEUgMTE2QiAxMUFEOyAjICjstYY7IOy1hjsg4YSO4YWr4YatOyDstYY7IOGEjuGFq+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dBRU5ICitDRDQ3O0NENDc7MTEwRSAxMTZCIDExQUU7Q0Q0NzsxMTBFIDExNkIgMTFBRTsgIyAo7LWHOyDstYc7IOGEjuGFq+GGrjsg7LWHOyDhhI7hhavhhq47ICkgSEFOR1VMIFNZTExBQkxFIENXQUVECitDRDQ4O0NENDg7MTEwRSAxMTZCIDExQUY7Q0Q0ODsxMTBFIDExNkIgMTFBRjsgIyAo7LWIOyDstYg7IOGEjuGFq+GGrzsg7LWIOyDhhI7hhavhhq87ICkgSEFOR1VMIFNZTExBQkxFIENXQUVMCitDRDQ5O0NENDk7MTEwRSAxMTZCIDExQjA7Q0Q0OTsxMTBFIDExNkIgMTFCMDsgIyAo7LWJOyDstYk7IOGEjuGFq+GGsDsg7LWJOyDhhI7hhavhhrA7ICkgSEFOR1VMIFNZTExBQkxFIENXQUVMRworQ0Q0QTtDRDRBOzExMEUgMTE2QiAxMUIxO0NENEE7MTEwRSAxMTZCIDExQjE7ICMgKOy1ijsg7LWKOyDhhI7hhavhhrE7IOy1ijsg4YSO4YWr4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBDV0FFTE0KK0NENEI7Q0Q0QjsxMTBFIDExNkIgMTFCMjtDRDRCOzExMEUgMTE2QiAxMUIyOyAjICjstYs7IOy1izsg4YSO4YWr4YayOyDstYs7IOGEjuGFq+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dBRUxCCitDRDRDO0NENEM7MTEwRSAxMTZCIDExQjM7Q0Q0QzsxMTBFIDExNkIgMTFCMzsgIyAo7LWMOyDstYw7IOGEjuGFq+GGszsg7LWMOyDhhI7hhavhhrM7ICkgSEFOR1VMIFNZTExBQkxFIENXQUVMUworQ0Q0RDtDRDREOzExMEUgMTE2QiAxMUI0O0NENEQ7MTEwRSAxMTZCIDExQjQ7ICMgKOy1jTsg7LWNOyDhhI7hhavhhrQ7IOy1jTsg4YSO4YWr4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBDV0FFTFQKK0NENEU7Q0Q0RTsxMTBFIDExNkIgMTFCNTtDRDRFOzExMEUgMTE2QiAxMUI1OyAjICjstY47IOy1jjsg4YSO4YWr4Ya1OyDstY47IOGEjuGFq+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dBRUxQCitDRDRGO0NENEY7MTEwRSAxMTZCIDExQjY7Q0Q0RjsxMTBFIDExNkIgMTFCNjsgIyAo7LWPOyDstY87IOGEjuGFq+GGtjsg7LWPOyDhhI7hhavhhrY7ICkgSEFOR1VMIFNZTExBQkxFIENXQUVMSAorQ0Q1MDtDRDUwOzExMEUgMTE2QiAxMUI3O0NENTA7MTEwRSAxMTZCIDExQjc7ICMgKOy1kDsg7LWQOyDhhI7hhavhhrc7IOy1kDsg4YSO4YWr4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBDV0FFTQorQ0Q1MTtDRDUxOzExMEUgMTE2QiAxMUI4O0NENTE7MTEwRSAxMTZCIDExQjg7ICMgKOy1kTsg7LWROyDhhI7hhavhhrg7IOy1kTsg4YSO4YWr4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBDV0FFQgorQ0Q1MjtDRDUyOzExMEUgMTE2QiAxMUI5O0NENTI7MTEwRSAxMTZCIDExQjk7ICMgKOy1kjsg7LWSOyDhhI7hhavhhrk7IOy1kjsg4YSO4YWr4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBDV0FFQlMKK0NENTM7Q0Q1MzsxMTBFIDExNkIgMTFCQTtDRDUzOzExMEUgMTE2QiAxMUJBOyAjICjstZM7IOy1kzsg4YSO4YWr4Ya6OyDstZM7IOGEjuGFq+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dBRVMKK0NENTQ7Q0Q1NDsxMTBFIDExNkIgMTFCQjtDRDU0OzExMEUgMTE2QiAxMUJCOyAjICjstZQ7IOy1lDsg4YSO4YWr4Ya7OyDstZQ7IOGEjuGFq+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dBRVNTCitDRDU1O0NENTU7MTEwRSAxMTZCIDExQkM7Q0Q1NTsxMTBFIDExNkIgMTFCQzsgIyAo7LWVOyDstZU7IOGEjuGFq+GGvDsg7LWVOyDhhI7hhavhhrw7ICkgSEFOR1VMIFNZTExBQkxFIENXQUVORworQ0Q1NjtDRDU2OzExMEUgMTE2QiAxMUJEO0NENTY7MTEwRSAxMTZCIDExQkQ7ICMgKOy1ljsg7LWWOyDhhI7hhavhhr07IOy1ljsg4YSO4YWr4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBDV0FFSgorQ0Q1NztDRDU3OzExMEUgMTE2QiAxMUJFO0NENTc7MTEwRSAxMTZCIDExQkU7ICMgKOy1lzsg7LWXOyDhhI7hhavhhr47IOy1lzsg4YSO4YWr4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBDV0FFQworQ0Q1ODtDRDU4OzExMEUgMTE2QiAxMUJGO0NENTg7MTEwRSAxMTZCIDExQkY7ICMgKOy1mDsg7LWYOyDhhI7hhavhhr87IOy1mDsg4YSO4YWr4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBDV0FFSworQ0Q1OTtDRDU5OzExMEUgMTE2QiAxMUMwO0NENTk7MTEwRSAxMTZCIDExQzA7ICMgKOy1mTsg7LWZOyDhhI7hhavhh4A7IOy1mTsg4YSO4YWr4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBDV0FFVAorQ0Q1QTtDRDVBOzExMEUgMTE2QiAxMUMxO0NENUE7MTEwRSAxMTZCIDExQzE7ICMgKOy1mjsg7LWaOyDhhI7hhavhh4E7IOy1mjsg4YSO4YWr4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBDV0FFUAorQ0Q1QjtDRDVCOzExMEUgMTE2QiAxMUMyO0NENUI7MTEwRSAxMTZCIDExQzI7ICMgKOy1mzsg7LWbOyDhhI7hhavhh4I7IOy1mzsg4YSO4YWr4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBDV0FFSAorQ0Q1QztDRDVDOzExMEUgMTE2QztDRDVDOzExMEUgMTE2QzsgIyAo7LWcOyDstZw7IOGEjuGFrDsg7LWcOyDhhI7hhaw7ICkgSEFOR1VMIFNZTExBQkxFIENPRQorQ0Q1RDtDRDVEOzExMEUgMTE2QyAxMUE4O0NENUQ7MTEwRSAxMTZDIDExQTg7ICMgKOy1nTsg7LWdOyDhhI7hhazhhqg7IOy1nTsg4YSO4YWs4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBDT0VHCitDRDVFO0NENUU7MTEwRSAxMTZDIDExQTk7Q0Q1RTsxMTBFIDExNkMgMTFBOTsgIyAo7LWeOyDstZ47IOGEjuGFrOGGqTsg7LWeOyDhhI7hhazhhqk7ICkgSEFOR1VMIFNZTExBQkxFIENPRUdHCitDRDVGO0NENUY7MTEwRSAxMTZDIDExQUE7Q0Q1RjsxMTBFIDExNkMgMTFBQTsgIyAo7LWfOyDstZ87IOGEjuGFrOGGqjsg7LWfOyDhhI7hhazhhqo7ICkgSEFOR1VMIFNZTExBQkxFIENPRUdTCitDRDYwO0NENjA7MTEwRSAxMTZDIDExQUI7Q0Q2MDsxMTBFIDExNkMgMTFBQjsgIyAo7LWgOyDstaA7IOGEjuGFrOGGqzsg7LWgOyDhhI7hhazhhqs7ICkgSEFOR1VMIFNZTExBQkxFIENPRU4KK0NENjE7Q0Q2MTsxMTBFIDExNkMgMTFBQztDRDYxOzExMEUgMTE2QyAxMUFDOyAjICjstaE7IOy1oTsg4YSO4YWs4YasOyDstaE7IOGEjuGFrOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgQ09FTkoKK0NENjI7Q0Q2MjsxMTBFIDExNkMgMTFBRDtDRDYyOzExMEUgMTE2QyAxMUFEOyAjICjstaI7IOy1ojsg4YSO4YWs4YatOyDstaI7IOGEjuGFrOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgQ09FTkgKK0NENjM7Q0Q2MzsxMTBFIDExNkMgMTFBRTtDRDYzOzExMEUgMTE2QyAxMUFFOyAjICjstaM7IOy1ozsg4YSO4YWs4YauOyDstaM7IOGEjuGFrOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQ09FRAorQ0Q2NDtDRDY0OzExMEUgMTE2QyAxMUFGO0NENjQ7MTEwRSAxMTZDIDExQUY7ICMgKOy1pDsg7LWkOyDhhI7hhazhhq87IOy1pDsg4YSO4YWs4YavOyApIEhBTkdVTCBTWUxMQUJMRSBDT0VMCitDRDY1O0NENjU7MTEwRSAxMTZDIDExQjA7Q0Q2NTsxMTBFIDExNkMgMTFCMDsgIyAo7LWlOyDstaU7IOGEjuGFrOGGsDsg7LWlOyDhhI7hhazhhrA7ICkgSEFOR1VMIFNZTExBQkxFIENPRUxHCitDRDY2O0NENjY7MTEwRSAxMTZDIDExQjE7Q0Q2NjsxMTBFIDExNkMgMTFCMTsgIyAo7LWmOyDstaY7IOGEjuGFrOGGsTsg7LWmOyDhhI7hhazhhrE7ICkgSEFOR1VMIFNZTExBQkxFIENPRUxNCitDRDY3O0NENjc7MTEwRSAxMTZDIDExQjI7Q0Q2NzsxMTBFIDExNkMgMTFCMjsgIyAo7LWnOyDstac7IOGEjuGFrOGGsjsg7LWnOyDhhI7hhazhhrI7ICkgSEFOR1VMIFNZTExBQkxFIENPRUxCCitDRDY4O0NENjg7MTEwRSAxMTZDIDExQjM7Q0Q2ODsxMTBFIDExNkMgMTFCMzsgIyAo7LWoOyDstag7IOGEjuGFrOGGszsg7LWoOyDhhI7hhazhhrM7ICkgSEFOR1VMIFNZTExBQkxFIENPRUxTCitDRDY5O0NENjk7MTEwRSAxMTZDIDExQjQ7Q0Q2OTsxMTBFIDExNkMgMTFCNDsgIyAo7LWpOyDstak7IOGEjuGFrOGGtDsg7LWpOyDhhI7hhazhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIENPRUxUCitDRDZBO0NENkE7MTEwRSAxMTZDIDExQjU7Q0Q2QTsxMTBFIDExNkMgMTFCNTsgIyAo7LWqOyDstao7IOGEjuGFrOGGtTsg7LWqOyDhhI7hhazhhrU7ICkgSEFOR1VMIFNZTExBQkxFIENPRUxQCitDRDZCO0NENkI7MTEwRSAxMTZDIDExQjY7Q0Q2QjsxMTBFIDExNkMgMTFCNjsgIyAo7LWrOyDstas7IOGEjuGFrOGGtjsg7LWrOyDhhI7hhazhhrY7ICkgSEFOR1VMIFNZTExBQkxFIENPRUxICitDRDZDO0NENkM7MTEwRSAxMTZDIDExQjc7Q0Q2QzsxMTBFIDExNkMgMTFCNzsgIyAo7LWsOyDstaw7IOGEjuGFrOGGtzsg7LWsOyDhhI7hhazhhrc7ICkgSEFOR1VMIFNZTExBQkxFIENPRU0KK0NENkQ7Q0Q2RDsxMTBFIDExNkMgMTFCODtDRDZEOzExMEUgMTE2QyAxMUI4OyAjICjsta07IOy1rTsg4YSO4YWs4Ya4OyDsta07IOGEjuGFrOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgQ09FQgorQ0Q2RTtDRDZFOzExMEUgMTE2QyAxMUI5O0NENkU7MTEwRSAxMTZDIDExQjk7ICMgKOy1rjsg7LWuOyDhhI7hhazhhrk7IOy1rjsg4YSO4YWs4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBDT0VCUworQ0Q2RjtDRDZGOzExMEUgMTE2QyAxMUJBO0NENkY7MTEwRSAxMTZDIDExQkE7ICMgKOy1rzsg7LWvOyDhhI7hhazhhro7IOy1rzsg4YSO4YWs4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBDT0VTCitDRDcwO0NENzA7MTEwRSAxMTZDIDExQkI7Q0Q3MDsxMTBFIDExNkMgMTFCQjsgIyAo7LWwOyDstbA7IOGEjuGFrOGGuzsg7LWwOyDhhI7hhazhhrs7ICkgSEFOR1VMIFNZTExBQkxFIENPRVNTCitDRDcxO0NENzE7MTEwRSAxMTZDIDExQkM7Q0Q3MTsxMTBFIDExNkMgMTFCQzsgIyAo7LWxOyDstbE7IOGEjuGFrOGGvDsg7LWxOyDhhI7hhazhhrw7ICkgSEFOR1VMIFNZTExBQkxFIENPRU5HCitDRDcyO0NENzI7MTEwRSAxMTZDIDExQkQ7Q0Q3MjsxMTBFIDExNkMgMTFCRDsgIyAo7LWyOyDstbI7IOGEjuGFrOGGvTsg7LWyOyDhhI7hhazhhr07ICkgSEFOR1VMIFNZTExBQkxFIENPRUoKK0NENzM7Q0Q3MzsxMTBFIDExNkMgMTFCRTtDRDczOzExMEUgMTE2QyAxMUJFOyAjICjstbM7IOy1szsg4YSO4YWs4Ya+OyDstbM7IOGEjuGFrOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgQ09FQworQ0Q3NDtDRDc0OzExMEUgMTE2QyAxMUJGO0NENzQ7MTEwRSAxMTZDIDExQkY7ICMgKOy1tDsg7LW0OyDhhI7hhazhhr87IOy1tDsg4YSO4YWs4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBDT0VLCitDRDc1O0NENzU7MTEwRSAxMTZDIDExQzA7Q0Q3NTsxMTBFIDExNkMgMTFDMDsgIyAo7LW1OyDstbU7IOGEjuGFrOGHgDsg7LW1OyDhhI7hhazhh4A7ICkgSEFOR1VMIFNZTExBQkxFIENPRVQKK0NENzY7Q0Q3NjsxMTBFIDExNkMgMTFDMTtDRDc2OzExMEUgMTE2QyAxMUMxOyAjICjstbY7IOy1tjsg4YSO4YWs4YeBOyDstbY7IOGEjuGFrOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgQ09FUAorQ0Q3NztDRDc3OzExMEUgMTE2QyAxMUMyO0NENzc7MTEwRSAxMTZDIDExQzI7ICMgKOy1tzsg7LW3OyDhhI7hhazhh4I7IOy1tzsg4YSO4YWs4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBDT0VICitDRDc4O0NENzg7MTEwRSAxMTZEO0NENzg7MTEwRSAxMTZEOyAjICjstbg7IOy1uDsg4YSO4YWtOyDstbg7IOGEjuGFrTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lPCitDRDc5O0NENzk7MTEwRSAxMTZEIDExQTg7Q0Q3OTsxMTBFIDExNkQgMTFBODsgIyAo7LW5OyDstbk7IOGEjuGFreGGqDsg7LW5OyDhhI7hha3hhqg7ICkgSEFOR1VMIFNZTExBQkxFIENZT0cKK0NEN0E7Q0Q3QTsxMTBFIDExNkQgMTFBOTtDRDdBOzExMEUgMTE2RCAxMUE5OyAjICjstbo7IOy1ujsg4YSO4YWt4YapOyDstbo7IOGEjuGFreGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lPR0cKK0NEN0I7Q0Q3QjsxMTBFIDExNkQgMTFBQTtDRDdCOzExMEUgMTE2RCAxMUFBOyAjICjstbs7IOy1uzsg4YSO4YWt4YaqOyDstbs7IOGEjuGFreGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lPR1MKK0NEN0M7Q0Q3QzsxMTBFIDExNkQgMTFBQjtDRDdDOzExMEUgMTE2RCAxMUFCOyAjICjstbw7IOy1vDsg4YSO4YWt4YarOyDstbw7IOGEjuGFreGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lPTgorQ0Q3RDtDRDdEOzExMEUgMTE2RCAxMUFDO0NEN0Q7MTEwRSAxMTZEIDExQUM7ICMgKOy1vTsg7LW9OyDhhI7hha3hhqw7IOy1vTsg4YSO4YWt4YasOyApIEhBTkdVTCBTWUxMQUJMRSBDWU9OSgorQ0Q3RTtDRDdFOzExMEUgMTE2RCAxMUFEO0NEN0U7MTEwRSAxMTZEIDExQUQ7ICMgKOy1vjsg7LW+OyDhhI7hha3hhq07IOy1vjsg4YSO4YWt4YatOyApIEhBTkdVTCBTWUxMQUJMRSBDWU9OSAorQ0Q3RjtDRDdGOzExMEUgMTE2RCAxMUFFO0NEN0Y7MTEwRSAxMTZEIDExQUU7ICMgKOy1vzsg7LW/OyDhhI7hha3hhq47IOy1vzsg4YSO4YWt4YauOyApIEhBTkdVTCBTWUxMQUJMRSBDWU9ECitDRDgwO0NEODA7MTEwRSAxMTZEIDExQUY7Q0Q4MDsxMTBFIDExNkQgMTFBRjsgIyAo7LaAOyDstoA7IOGEjuGFreGGrzsg7LaAOyDhhI7hha3hhq87ICkgSEFOR1VMIFNZTExBQkxFIENZT0wKK0NEODE7Q0Q4MTsxMTBFIDExNkQgMTFCMDtDRDgxOzExMEUgMTE2RCAxMUIwOyAjICjstoE7IOy2gTsg4YSO4YWt4YawOyDstoE7IOGEjuGFreGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lPTEcKK0NEODI7Q0Q4MjsxMTBFIDExNkQgMTFCMTtDRDgyOzExMEUgMTE2RCAxMUIxOyAjICjstoI7IOy2gjsg4YSO4YWt4YaxOyDstoI7IOGEjuGFreGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lPTE0KK0NEODM7Q0Q4MzsxMTBFIDExNkQgMTFCMjtDRDgzOzExMEUgMTE2RCAxMUIyOyAjICjstoM7IOy2gzsg4YSO4YWt4YayOyDstoM7IOGEjuGFreGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lPTEIKK0NEODQ7Q0Q4NDsxMTBFIDExNkQgMTFCMztDRDg0OzExMEUgMTE2RCAxMUIzOyAjICjstoQ7IOy2hDsg4YSO4YWt4YazOyDstoQ7IOGEjuGFreGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lPTFMKK0NEODU7Q0Q4NTsxMTBFIDExNkQgMTFCNDtDRDg1OzExMEUgMTE2RCAxMUI0OyAjICjstoU7IOy2hTsg4YSO4YWt4Ya0OyDstoU7IOGEjuGFreGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lPTFQKK0NEODY7Q0Q4NjsxMTBFIDExNkQgMTFCNTtDRDg2OzExMEUgMTE2RCAxMUI1OyAjICjstoY7IOy2hjsg4YSO4YWt4Ya1OyDstoY7IOGEjuGFreGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lPTFAKK0NEODc7Q0Q4NzsxMTBFIDExNkQgMTFCNjtDRDg3OzExMEUgMTE2RCAxMUI2OyAjICjstoc7IOy2hzsg4YSO4YWt4Ya2OyDstoc7IOGEjuGFreGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lPTEgKK0NEODg7Q0Q4ODsxMTBFIDExNkQgMTFCNztDRDg4OzExMEUgMTE2RCAxMUI3OyAjICjstog7IOy2iDsg4YSO4YWt4Ya3OyDstog7IOGEjuGFreGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lPTQorQ0Q4OTtDRDg5OzExMEUgMTE2RCAxMUI4O0NEODk7MTEwRSAxMTZEIDExQjg7ICMgKOy2iTsg7LaJOyDhhI7hha3hhrg7IOy2iTsg4YSO4YWt4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBDWU9CCitDRDhBO0NEOEE7MTEwRSAxMTZEIDExQjk7Q0Q4QTsxMTBFIDExNkQgMTFCOTsgIyAo7LaKOyDstoo7IOGEjuGFreGGuTsg7LaKOyDhhI7hha3hhrk7ICkgSEFOR1VMIFNZTExBQkxFIENZT0JTCitDRDhCO0NEOEI7MTEwRSAxMTZEIDExQkE7Q0Q4QjsxMTBFIDExNkQgMTFCQTsgIyAo7LaLOyDstos7IOGEjuGFreGGujsg7LaLOyDhhI7hha3hhro7ICkgSEFOR1VMIFNZTExBQkxFIENZT1MKK0NEOEM7Q0Q4QzsxMTBFIDExNkQgMTFCQjtDRDhDOzExMEUgMTE2RCAxMUJCOyAjICjstow7IOy2jDsg4YSO4YWt4Ya7OyDstow7IOGEjuGFreGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lPU1MKK0NEOEQ7Q0Q4RDsxMTBFIDExNkQgMTFCQztDRDhEOzExMEUgMTE2RCAxMUJDOyAjICjsto07IOy2jTsg4YSO4YWt4Ya8OyDsto07IOGEjuGFreGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lPTkcKK0NEOEU7Q0Q4RTsxMTBFIDExNkQgMTFCRDtDRDhFOzExMEUgMTE2RCAxMUJEOyAjICjsto47IOy2jjsg4YSO4YWt4Ya9OyDsto47IOGEjuGFreGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lPSgorQ0Q4RjtDRDhGOzExMEUgMTE2RCAxMUJFO0NEOEY7MTEwRSAxMTZEIDExQkU7ICMgKOy2jzsg7LaPOyDhhI7hha3hhr47IOy2jzsg4YSO4YWt4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBDWU9DCitDRDkwO0NEOTA7MTEwRSAxMTZEIDExQkY7Q0Q5MDsxMTBFIDExNkQgMTFCRjsgIyAo7LaQOyDstpA7IOGEjuGFreGGvzsg7LaQOyDhhI7hha3hhr87ICkgSEFOR1VMIFNZTExBQkxFIENZT0sKK0NEOTE7Q0Q5MTsxMTBFIDExNkQgMTFDMDtDRDkxOzExMEUgMTE2RCAxMUMwOyAjICjstpE7IOy2kTsg4YSO4YWt4YeAOyDstpE7IOGEjuGFreGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lPVAorQ0Q5MjtDRDkyOzExMEUgMTE2RCAxMUMxO0NEOTI7MTEwRSAxMTZEIDExQzE7ICMgKOy2kjsg7LaSOyDhhI7hha3hh4E7IOy2kjsg4YSO4YWt4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBDWU9QCitDRDkzO0NEOTM7MTEwRSAxMTZEIDExQzI7Q0Q5MzsxMTBFIDExNkQgMTFDMjsgIyAo7LaTOyDstpM7IOGEjuGFreGHgjsg7LaTOyDhhI7hha3hh4I7ICkgSEFOR1VMIFNZTExBQkxFIENZT0gKK0NEOTQ7Q0Q5NDsxMTBFIDExNkU7Q0Q5NDsxMTBFIDExNkU7ICMgKOy2lDsg7LaUOyDhhI7hha47IOy2lDsg4YSO4YWuOyApIEhBTkdVTCBTWUxMQUJMRSBDVQorQ0Q5NTtDRDk1OzExMEUgMTE2RSAxMUE4O0NEOTU7MTEwRSAxMTZFIDExQTg7ICMgKOy2lTsg7LaVOyDhhI7hha7hhqg7IOy2lTsg4YSO4YWu4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBDVUcKK0NEOTY7Q0Q5NjsxMTBFIDExNkUgMTFBOTtDRDk2OzExMEUgMTE2RSAxMUE5OyAjICjstpY7IOy2ljsg4YSO4YWu4YapOyDstpY7IOGEjuGFruGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1VHRworQ0Q5NztDRDk3OzExMEUgMTE2RSAxMUFBO0NEOTc7MTEwRSAxMTZFIDExQUE7ICMgKOy2lzsg7LaXOyDhhI7hha7hhqo7IOy2lzsg4YSO4YWu4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBDVUdTCitDRDk4O0NEOTg7MTEwRSAxMTZFIDExQUI7Q0Q5ODsxMTBFIDExNkUgMTFBQjsgIyAo7LaYOyDstpg7IOGEjuGFruGGqzsg7LaYOyDhhI7hha7hhqs7ICkgSEFOR1VMIFNZTExBQkxFIENVTgorQ0Q5OTtDRDk5OzExMEUgMTE2RSAxMUFDO0NEOTk7MTEwRSAxMTZFIDExQUM7ICMgKOy2mTsg7LaZOyDhhI7hha7hhqw7IOy2mTsg4YSO4YWu4YasOyApIEhBTkdVTCBTWUxMQUJMRSBDVU5KCitDRDlBO0NEOUE7MTEwRSAxMTZFIDExQUQ7Q0Q5QTsxMTBFIDExNkUgMTFBRDsgIyAo7LaaOyDstpo7IOGEjuGFruGGrTsg7LaaOyDhhI7hha7hhq07ICkgSEFOR1VMIFNZTExBQkxFIENVTkgKK0NEOUI7Q0Q5QjsxMTBFIDExNkUgMTFBRTtDRDlCOzExMEUgMTE2RSAxMUFFOyAjICjstps7IOy2mzsg4YSO4YWu4YauOyDstps7IOGEjuGFruGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1VECitDRDlDO0NEOUM7MTEwRSAxMTZFIDExQUY7Q0Q5QzsxMTBFIDExNkUgMTFBRjsgIyAo7LacOyDstpw7IOGEjuGFruGGrzsg7LacOyDhhI7hha7hhq87ICkgSEFOR1VMIFNZTExBQkxFIENVTAorQ0Q5RDtDRDlEOzExMEUgMTE2RSAxMUIwO0NEOUQ7MTEwRSAxMTZFIDExQjA7ICMgKOy2nTsg7LadOyDhhI7hha7hhrA7IOy2nTsg4YSO4YWu4YawOyApIEhBTkdVTCBTWUxMQUJMRSBDVUxHCitDRDlFO0NEOUU7MTEwRSAxMTZFIDExQjE7Q0Q5RTsxMTBFIDExNkUgMTFCMTsgIyAo7LaeOyDstp47IOGEjuGFruGGsTsg7LaeOyDhhI7hha7hhrE7ICkgSEFOR1VMIFNZTExBQkxFIENVTE0KK0NEOUY7Q0Q5RjsxMTBFIDExNkUgMTFCMjtDRDlGOzExMEUgMTE2RSAxMUIyOyAjICjstp87IOy2nzsg4YSO4YWu4YayOyDstp87IOGEjuGFruGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1VMQgorQ0RBMDtDREEwOzExMEUgMTE2RSAxMUIzO0NEQTA7MTEwRSAxMTZFIDExQjM7ICMgKOy2oDsg7LagOyDhhI7hha7hhrM7IOy2oDsg4YSO4YWu4YazOyApIEhBTkdVTCBTWUxMQUJMRSBDVUxTCitDREExO0NEQTE7MTEwRSAxMTZFIDExQjQ7Q0RBMTsxMTBFIDExNkUgMTFCNDsgIyAo7LahOyDstqE7IOGEjuGFruGGtDsg7LahOyDhhI7hha7hhrQ7ICkgSEFOR1VMIFNZTExBQkxFIENVTFQKK0NEQTI7Q0RBMjsxMTBFIDExNkUgMTFCNTtDREEyOzExMEUgMTE2RSAxMUI1OyAjICjstqI7IOy2ojsg4YSO4YWu4Ya1OyDstqI7IOGEjuGFruGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1VMUAorQ0RBMztDREEzOzExMEUgMTE2RSAxMUI2O0NEQTM7MTEwRSAxMTZFIDExQjY7ICMgKOy2ozsg7LajOyDhhI7hha7hhrY7IOy2ozsg4YSO4YWu4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBDVUxICitDREE0O0NEQTQ7MTEwRSAxMTZFIDExQjc7Q0RBNDsxMTBFIDExNkUgMTFCNzsgIyAo7LakOyDstqQ7IOGEjuGFruGGtzsg7LakOyDhhI7hha7hhrc7ICkgSEFOR1VMIFNZTExBQkxFIENVTQorQ0RBNTtDREE1OzExMEUgMTE2RSAxMUI4O0NEQTU7MTEwRSAxMTZFIDExQjg7ICMgKOy2pTsg7LalOyDhhI7hha7hhrg7IOy2pTsg4YSO4YWu4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBDVUIKK0NEQTY7Q0RBNjsxMTBFIDExNkUgMTFCOTtDREE2OzExMEUgMTE2RSAxMUI5OyAjICjstqY7IOy2pjsg4YSO4YWu4Ya5OyDstqY7IOGEjuGFruGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1VCUworQ0RBNztDREE3OzExMEUgMTE2RSAxMUJBO0NEQTc7MTEwRSAxMTZFIDExQkE7ICMgKOy2pzsg7LanOyDhhI7hha7hhro7IOy2pzsg4YSO4YWu4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBDVVMKK0NEQTg7Q0RBODsxMTBFIDExNkUgMTFCQjtDREE4OzExMEUgMTE2RSAxMUJCOyAjICjstqg7IOy2qDsg4YSO4YWu4Ya7OyDstqg7IOGEjuGFruGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1VTUworQ0RBOTtDREE5OzExMEUgMTE2RSAxMUJDO0NEQTk7MTEwRSAxMTZFIDExQkM7ICMgKOy2qTsg7LapOyDhhI7hha7hhrw7IOy2qTsg4YSO4YWu4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBDVU5HCitDREFBO0NEQUE7MTEwRSAxMTZFIDExQkQ7Q0RBQTsxMTBFIDExNkUgMTFCRDsgIyAo7LaqOyDstqo7IOGEjuGFruGGvTsg7LaqOyDhhI7hha7hhr07ICkgSEFOR1VMIFNZTExBQkxFIENVSgorQ0RBQjtDREFCOzExMEUgMTE2RSAxMUJFO0NEQUI7MTEwRSAxMTZFIDExQkU7ICMgKOy2qzsg7LarOyDhhI7hha7hhr47IOy2qzsg4YSO4YWu4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBDVUMKK0NEQUM7Q0RBQzsxMTBFIDExNkUgMTFCRjtDREFDOzExMEUgMTE2RSAxMUJGOyAjICjstqw7IOy2rDsg4YSO4YWu4Ya/OyDstqw7IOGEjuGFruGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1VLCitDREFEO0NEQUQ7MTEwRSAxMTZFIDExQzA7Q0RBRDsxMTBFIDExNkUgMTFDMDsgIyAo7LatOyDstq07IOGEjuGFruGHgDsg7LatOyDhhI7hha7hh4A7ICkgSEFOR1VMIFNZTExBQkxFIENVVAorQ0RBRTtDREFFOzExMEUgMTE2RSAxMUMxO0NEQUU7MTEwRSAxMTZFIDExQzE7ICMgKOy2rjsg7LauOyDhhI7hha7hh4E7IOy2rjsg4YSO4YWu4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBDVVAKK0NEQUY7Q0RBRjsxMTBFIDExNkUgMTFDMjtDREFGOzExMEUgMTE2RSAxMUMyOyAjICjstq87IOy2rzsg4YSO4YWu4YeCOyDstq87IOGEjuGFruGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1VICitDREIwO0NEQjA7MTEwRSAxMTZGO0NEQjA7MTEwRSAxMTZGOyAjICjstrA7IOy2sDsg4YSO4YWvOyDstrA7IOGEjuGFrzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFTworQ0RCMTtDREIxOzExMEUgMTE2RiAxMUE4O0NEQjE7MTEwRSAxMTZGIDExQTg7ICMgKOy2sTsg7LaxOyDhhI7hha/hhqg7IOy2sTsg4YSO4YWv4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBDV0VPRworQ0RCMjtDREIyOzExMEUgMTE2RiAxMUE5O0NEQjI7MTEwRSAxMTZGIDExQTk7ICMgKOy2sjsg7LayOyDhhI7hha/hhqk7IOy2sjsg4YSO4YWv4YapOyApIEhBTkdVTCBTWUxMQUJMRSBDV0VPR0cKK0NEQjM7Q0RCMzsxMTBFIDExNkYgMTFBQTtDREIzOzExMEUgMTE2RiAxMUFBOyAjICjstrM7IOy2szsg4YSO4YWv4YaqOyDstrM7IOGEjuGFr+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFT0dTCitDREI0O0NEQjQ7MTEwRSAxMTZGIDExQUI7Q0RCNDsxMTBFIDExNkYgMTFBQjsgIyAo7La0OyDstrQ7IOGEjuGFr+GGqzsg7La0OyDhhI7hha/hhqs7ICkgSEFOR1VMIFNZTExBQkxFIENXRU9OCitDREI1O0NEQjU7MTEwRSAxMTZGIDExQUM7Q0RCNTsxMTBFIDExNkYgMTFBQzsgIyAo7La1OyDstrU7IOGEjuGFr+GGrDsg7La1OyDhhI7hha/hhqw7ICkgSEFOR1VMIFNZTExBQkxFIENXRU9OSgorQ0RCNjtDREI2OzExMEUgMTE2RiAxMUFEO0NEQjY7MTEwRSAxMTZGIDExQUQ7ICMgKOy2tjsg7La2OyDhhI7hha/hhq07IOy2tjsg4YSO4YWv4YatOyApIEhBTkdVTCBTWUxMQUJMRSBDV0VPTkgKK0NEQjc7Q0RCNzsxMTBFIDExNkYgMTFBRTtDREI3OzExMEUgMTE2RiAxMUFFOyAjICjstrc7IOy2tzsg4YSO4YWv4YauOyDstrc7IOGEjuGFr+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFT0QKK0NEQjg7Q0RCODsxMTBFIDExNkYgMTFBRjtDREI4OzExMEUgMTE2RiAxMUFGOyAjICjstrg7IOy2uDsg4YSO4YWv4YavOyDstrg7IOGEjuGFr+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFT0wKK0NEQjk7Q0RCOTsxMTBFIDExNkYgMTFCMDtDREI5OzExMEUgMTE2RiAxMUIwOyAjICjstrk7IOy2uTsg4YSO4YWv4YawOyDstrk7IOGEjuGFr+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFT0xHCitDREJBO0NEQkE7MTEwRSAxMTZGIDExQjE7Q0RCQTsxMTBFIDExNkYgMTFCMTsgIyAo7La6OyDstro7IOGEjuGFr+GGsTsg7La6OyDhhI7hha/hhrE7ICkgSEFOR1VMIFNZTExBQkxFIENXRU9MTQorQ0RCQjtDREJCOzExMEUgMTE2RiAxMUIyO0NEQkI7MTEwRSAxMTZGIDExQjI7ICMgKOy2uzsg7La7OyDhhI7hha/hhrI7IOy2uzsg4YSO4YWv4YayOyApIEhBTkdVTCBTWUxMQUJMRSBDV0VPTEIKK0NEQkM7Q0RCQzsxMTBFIDExNkYgMTFCMztDREJDOzExMEUgMTE2RiAxMUIzOyAjICjstrw7IOy2vDsg4YSO4YWv4YazOyDstrw7IOGEjuGFr+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFT0xTCitDREJEO0NEQkQ7MTEwRSAxMTZGIDExQjQ7Q0RCRDsxMTBFIDExNkYgMTFCNDsgIyAo7La9OyDstr07IOGEjuGFr+GGtDsg7La9OyDhhI7hha/hhrQ7ICkgSEFOR1VMIFNZTExBQkxFIENXRU9MVAorQ0RCRTtDREJFOzExMEUgMTE2RiAxMUI1O0NEQkU7MTEwRSAxMTZGIDExQjU7ICMgKOy2vjsg7La+OyDhhI7hha/hhrU7IOy2vjsg4YSO4YWv4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBDV0VPTFAKK0NEQkY7Q0RCRjsxMTBFIDExNkYgMTFCNjtDREJGOzExMEUgMTE2RiAxMUI2OyAjICjstr87IOy2vzsg4YSO4YWv4Ya2OyDstr87IOGEjuGFr+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFT0xICitDREMwO0NEQzA7MTEwRSAxMTZGIDExQjc7Q0RDMDsxMTBFIDExNkYgMTFCNzsgIyAo7LeAOyDst4A7IOGEjuGFr+GGtzsg7LeAOyDhhI7hha/hhrc7ICkgSEFOR1VMIFNZTExBQkxFIENXRU9NCitDREMxO0NEQzE7MTEwRSAxMTZGIDExQjg7Q0RDMTsxMTBFIDExNkYgMTFCODsgIyAo7LeBOyDst4E7IOGEjuGFr+GGuDsg7LeBOyDhhI7hha/hhrg7ICkgSEFOR1VMIFNZTExBQkxFIENXRU9CCitDREMyO0NEQzI7MTEwRSAxMTZGIDExQjk7Q0RDMjsxMTBFIDExNkYgMTFCOTsgIyAo7LeCOyDst4I7IOGEjuGFr+GGuTsg7LeCOyDhhI7hha/hhrk7ICkgSEFOR1VMIFNZTExBQkxFIENXRU9CUworQ0RDMztDREMzOzExMEUgMTE2RiAxMUJBO0NEQzM7MTEwRSAxMTZGIDExQkE7ICMgKOy3gzsg7LeDOyDhhI7hha/hhro7IOy3gzsg4YSO4YWv4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBDV0VPUworQ0RDNDtDREM0OzExMEUgMTE2RiAxMUJCO0NEQzQ7MTEwRSAxMTZGIDExQkI7ICMgKOy3hDsg7LeEOyDhhI7hha/hhrs7IOy3hDsg4YSO4YWv4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBDV0VPU1MKK0NEQzU7Q0RDNTsxMTBFIDExNkYgMTFCQztDREM1OzExMEUgMTE2RiAxMUJDOyAjICjst4U7IOy3hTsg4YSO4YWv4Ya8OyDst4U7IOGEjuGFr+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFT05HCitDREM2O0NEQzY7MTEwRSAxMTZGIDExQkQ7Q0RDNjsxMTBFIDExNkYgMTFCRDsgIyAo7LeGOyDst4Y7IOGEjuGFr+GGvTsg7LeGOyDhhI7hha/hhr07ICkgSEFOR1VMIFNZTExBQkxFIENXRU9KCitDREM3O0NEQzc7MTEwRSAxMTZGIDExQkU7Q0RDNzsxMTBFIDExNkYgMTFCRTsgIyAo7LeHOyDst4c7IOGEjuGFr+GGvjsg7LeHOyDhhI7hha/hhr47ICkgSEFOR1VMIFNZTExBQkxFIENXRU9DCitDREM4O0NEQzg7MTEwRSAxMTZGIDExQkY7Q0RDODsxMTBFIDExNkYgMTFCRjsgIyAo7LeIOyDst4g7IOGEjuGFr+GGvzsg7LeIOyDhhI7hha/hhr87ICkgSEFOR1VMIFNZTExBQkxFIENXRU9LCitDREM5O0NEQzk7MTEwRSAxMTZGIDExQzA7Q0RDOTsxMTBFIDExNkYgMTFDMDsgIyAo7LeJOyDst4k7IOGEjuGFr+GHgDsg7LeJOyDhhI7hha/hh4A7ICkgSEFOR1VMIFNZTExBQkxFIENXRU9UCitDRENBO0NEQ0E7MTEwRSAxMTZGIDExQzE7Q0RDQTsxMTBFIDExNkYgMTFDMTsgIyAo7LeKOyDst4o7IOGEjuGFr+GHgTsg7LeKOyDhhI7hha/hh4E7ICkgSEFOR1VMIFNZTExBQkxFIENXRU9QCitDRENCO0NEQ0I7MTEwRSAxMTZGIDExQzI7Q0RDQjsxMTBFIDExNkYgMTFDMjsgIyAo7LeLOyDst4s7IOGEjuGFr+GHgjsg7LeLOyDhhI7hha/hh4I7ICkgSEFOR1VMIFNZTExBQkxFIENXRU9ICitDRENDO0NEQ0M7MTEwRSAxMTcwO0NEQ0M7MTEwRSAxMTcwOyAjICjst4w7IOy3jDsg4YSO4YWwOyDst4w7IOGEjuGFsDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFCitDRENEO0NEQ0Q7MTEwRSAxMTcwIDExQTg7Q0RDRDsxMTBFIDExNzAgMTFBODsgIyAo7LeNOyDst407IOGEjuGFsOGGqDsg7LeNOyDhhI7hhbDhhqg7ICkgSEFOR1VMIFNZTExBQkxFIENXRUcKK0NEQ0U7Q0RDRTsxMTBFIDExNzAgMTFBOTtDRENFOzExMEUgMTE3MCAxMUE5OyAjICjst447IOy3jjsg4YSO4YWw4YapOyDst447IOGEjuGFsOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFR0cKK0NEQ0Y7Q0RDRjsxMTBFIDExNzAgMTFBQTtDRENGOzExMEUgMTE3MCAxMUFBOyAjICjst487IOy3jzsg4YSO4YWw4YaqOyDst487IOGEjuGFsOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFR1MKK0NERDA7Q0REMDsxMTBFIDExNzAgMTFBQjtDREQwOzExMEUgMTE3MCAxMUFCOyAjICjst5A7IOy3kDsg4YSO4YWw4YarOyDst5A7IOGEjuGFsOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFTgorQ0REMTtDREQxOzExMEUgMTE3MCAxMUFDO0NERDE7MTEwRSAxMTcwIDExQUM7ICMgKOy3kTsg7LeROyDhhI7hhbDhhqw7IOy3kTsg4YSO4YWw4YasOyApIEhBTkdVTCBTWUxMQUJMRSBDV0VOSgorQ0REMjtDREQyOzExMEUgMTE3MCAxMUFEO0NERDI7MTEwRSAxMTcwIDExQUQ7ICMgKOy3kjsg7LeSOyDhhI7hhbDhhq07IOy3kjsg4YSO4YWw4YatOyApIEhBTkdVTCBTWUxMQUJMRSBDV0VOSAorQ0REMztDREQzOzExMEUgMTE3MCAxMUFFO0NERDM7MTEwRSAxMTcwIDExQUU7ICMgKOy3kzsg7LeTOyDhhI7hhbDhhq47IOy3kzsg4YSO4YWw4YauOyApIEhBTkdVTCBTWUxMQUJMRSBDV0VECitDREQ0O0NERDQ7MTEwRSAxMTcwIDExQUY7Q0RENDsxMTBFIDExNzAgMTFBRjsgIyAo7LeUOyDst5Q7IOGEjuGFsOGGrzsg7LeUOyDhhI7hhbDhhq87ICkgSEFOR1VMIFNZTExBQkxFIENXRUwKK0NERDU7Q0RENTsxMTBFIDExNzAgMTFCMDtDREQ1OzExMEUgMTE3MCAxMUIwOyAjICjst5U7IOy3lTsg4YSO4YWw4YawOyDst5U7IOGEjuGFsOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFTEcKK0NERDY7Q0RENjsxMTBFIDExNzAgMTFCMTtDREQ2OzExMEUgMTE3MCAxMUIxOyAjICjst5Y7IOy3ljsg4YSO4YWw4YaxOyDst5Y7IOGEjuGFsOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFTE0KK0NERDc7Q0RENzsxMTBFIDExNzAgMTFCMjtDREQ3OzExMEUgMTE3MCAxMUIyOyAjICjst5c7IOy3lzsg4YSO4YWw4YayOyDst5c7IOGEjuGFsOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFTEIKK0NERDg7Q0REODsxMTBFIDExNzAgMTFCMztDREQ4OzExMEUgMTE3MCAxMUIzOyAjICjst5g7IOy3mDsg4YSO4YWw4YazOyDst5g7IOGEjuGFsOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFTFMKK0NERDk7Q0REOTsxMTBFIDExNzAgMTFCNDtDREQ5OzExMEUgMTE3MCAxMUI0OyAjICjst5k7IOy3mTsg4YSO4YWw4Ya0OyDst5k7IOGEjuGFsOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFTFQKK0NEREE7Q0REQTsxMTBFIDExNzAgMTFCNTtDRERBOzExMEUgMTE3MCAxMUI1OyAjICjst5o7IOy3mjsg4YSO4YWw4Ya1OyDst5o7IOGEjuGFsOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFTFAKK0NEREI7Q0REQjsxMTBFIDExNzAgMTFCNjtDRERCOzExMEUgMTE3MCAxMUI2OyAjICjst5s7IOy3mzsg4YSO4YWw4Ya2OyDst5s7IOGEjuGFsOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFTEgKK0NEREM7Q0REQzsxMTBFIDExNzAgMTFCNztDRERDOzExMEUgMTE3MCAxMUI3OyAjICjst5w7IOy3nDsg4YSO4YWw4Ya3OyDst5w7IOGEjuGFsOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFTQorQ0RERDtDREREOzExMEUgMTE3MCAxMUI4O0NEREQ7MTEwRSAxMTcwIDExQjg7ICMgKOy3nTsg7LedOyDhhI7hhbDhhrg7IOy3nTsg4YSO4YWw4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBDV0VCCitDRERFO0NEREU7MTEwRSAxMTcwIDExQjk7Q0RERTsxMTBFIDExNzAgMTFCOTsgIyAo7LeeOyDst547IOGEjuGFsOGGuTsg7LeeOyDhhI7hhbDhhrk7ICkgSEFOR1VMIFNZTExBQkxFIENXRUJTCitDRERGO0NEREY7MTEwRSAxMTcwIDExQkE7Q0RERjsxMTBFIDExNzAgMTFCQTsgIyAo7LefOyDst587IOGEjuGFsOGGujsg7LefOyDhhI7hhbDhhro7ICkgSEFOR1VMIFNZTExBQkxFIENXRVMKK0NERTA7Q0RFMDsxMTBFIDExNzAgMTFCQjtDREUwOzExMEUgMTE3MCAxMUJCOyAjICjst6A7IOy3oDsg4YSO4YWw4Ya7OyDst6A7IOGEjuGFsOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFU1MKK0NERTE7Q0RFMTsxMTBFIDExNzAgMTFCQztDREUxOzExMEUgMTE3MCAxMUJDOyAjICjst6E7IOy3oTsg4YSO4YWw4Ya8OyDst6E7IOGEjuGFsOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFTkcKK0NERTI7Q0RFMjsxMTBFIDExNzAgMTFCRDtDREUyOzExMEUgMTE3MCAxMUJEOyAjICjst6I7IOy3ojsg4YSO4YWw4Ya9OyDst6I7IOGEjuGFsOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFSgorQ0RFMztDREUzOzExMEUgMTE3MCAxMUJFO0NERTM7MTEwRSAxMTcwIDExQkU7ICMgKOy3ozsg7LejOyDhhI7hhbDhhr47IOy3ozsg4YSO4YWw4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBDV0VDCitDREU0O0NERTQ7MTEwRSAxMTcwIDExQkY7Q0RFNDsxMTBFIDExNzAgMTFCRjsgIyAo7LekOyDst6Q7IOGEjuGFsOGGvzsg7LekOyDhhI7hhbDhhr87ICkgSEFOR1VMIFNZTExBQkxFIENXRUsKK0NERTU7Q0RFNTsxMTBFIDExNzAgMTFDMDtDREU1OzExMEUgMTE3MCAxMUMwOyAjICjst6U7IOy3pTsg4YSO4YWw4YeAOyDst6U7IOGEjuGFsOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dFVAorQ0RFNjtDREU2OzExMEUgMTE3MCAxMUMxO0NERTY7MTEwRSAxMTcwIDExQzE7ICMgKOy3pjsg7LemOyDhhI7hhbDhh4E7IOy3pjsg4YSO4YWw4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBDV0VQCitDREU3O0NERTc7MTEwRSAxMTcwIDExQzI7Q0RFNzsxMTBFIDExNzAgMTFDMjsgIyAo7LenOyDst6c7IOGEjuGFsOGHgjsg7LenOyDhhI7hhbDhh4I7ICkgSEFOR1VMIFNZTExBQkxFIENXRUgKK0NERTg7Q0RFODsxMTBFIDExNzE7Q0RFODsxMTBFIDExNzE7ICMgKOy3qDsg7LeoOyDhhI7hhbE7IOy3qDsg4YSO4YWxOyApIEhBTkdVTCBTWUxMQUJMRSBDV0kKK0NERTk7Q0RFOTsxMTBFIDExNzEgMTFBODtDREU5OzExMEUgMTE3MSAxMUE4OyAjICjst6k7IOy3qTsg4YSO4YWx4YaoOyDst6k7IOGEjuGFseGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dJRworQ0RFQTtDREVBOzExMEUgMTE3MSAxMUE5O0NERUE7MTEwRSAxMTcxIDExQTk7ICMgKOy3qjsg7LeqOyDhhI7hhbHhhqk7IOy3qjsg4YSO4YWx4YapOyApIEhBTkdVTCBTWUxMQUJMRSBDV0lHRworQ0RFQjtDREVCOzExMEUgMTE3MSAxMUFBO0NERUI7MTEwRSAxMTcxIDExQUE7ICMgKOy3qzsg7LerOyDhhI7hhbHhhqo7IOy3qzsg4YSO4YWx4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBDV0lHUworQ0RFQztDREVDOzExMEUgMTE3MSAxMUFCO0NERUM7MTEwRSAxMTcxIDExQUI7ICMgKOy3rDsg7LesOyDhhI7hhbHhhqs7IOy3rDsg4YSO4YWx4YarOyApIEhBTkdVTCBTWUxMQUJMRSBDV0lOCitDREVEO0NERUQ7MTEwRSAxMTcxIDExQUM7Q0RFRDsxMTBFIDExNzEgMTFBQzsgIyAo7LetOyDst607IOGEjuGFseGGrDsg7LetOyDhhI7hhbHhhqw7ICkgSEFOR1VMIFNZTExBQkxFIENXSU5KCitDREVFO0NERUU7MTEwRSAxMTcxIDExQUQ7Q0RFRTsxMTBFIDExNzEgMTFBRDsgIyAo7LeuOyDst647IOGEjuGFseGGrTsg7LeuOyDhhI7hhbHhhq07ICkgSEFOR1VMIFNZTExBQkxFIENXSU5ICitDREVGO0NERUY7MTEwRSAxMTcxIDExQUU7Q0RFRjsxMTBFIDExNzEgMTFBRTsgIyAo7LevOyDst687IOGEjuGFseGGrjsg7LevOyDhhI7hhbHhhq47ICkgSEFOR1VMIFNZTExBQkxFIENXSUQKK0NERjA7Q0RGMDsxMTBFIDExNzEgMTFBRjtDREYwOzExMEUgMTE3MSAxMUFGOyAjICjst7A7IOy3sDsg4YSO4YWx4YavOyDst7A7IOGEjuGFseGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dJTAorQ0RGMTtDREYxOzExMEUgMTE3MSAxMUIwO0NERjE7MTEwRSAxMTcxIDExQjA7ICMgKOy3sTsg7LexOyDhhI7hhbHhhrA7IOy3sTsg4YSO4YWx4YawOyApIEhBTkdVTCBTWUxMQUJMRSBDV0lMRworQ0RGMjtDREYyOzExMEUgMTE3MSAxMUIxO0NERjI7MTEwRSAxMTcxIDExQjE7ICMgKOy3sjsg7LeyOyDhhI7hhbHhhrE7IOy3sjsg4YSO4YWx4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBDV0lMTQorQ0RGMztDREYzOzExMEUgMTE3MSAxMUIyO0NERjM7MTEwRSAxMTcxIDExQjI7ICMgKOy3szsg7LezOyDhhI7hhbHhhrI7IOy3szsg4YSO4YWx4YayOyApIEhBTkdVTCBTWUxMQUJMRSBDV0lMQgorQ0RGNDtDREY0OzExMEUgMTE3MSAxMUIzO0NERjQ7MTEwRSAxMTcxIDExQjM7ICMgKOy3tDsg7Le0OyDhhI7hhbHhhrM7IOy3tDsg4YSO4YWx4YazOyApIEhBTkdVTCBTWUxMQUJMRSBDV0lMUworQ0RGNTtDREY1OzExMEUgMTE3MSAxMUI0O0NERjU7MTEwRSAxMTcxIDExQjQ7ICMgKOy3tTsg7Le1OyDhhI7hhbHhhrQ7IOy3tTsg4YSO4YWx4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBDV0lMVAorQ0RGNjtDREY2OzExMEUgMTE3MSAxMUI1O0NERjY7MTEwRSAxMTcxIDExQjU7ICMgKOy3tjsg7Le2OyDhhI7hhbHhhrU7IOy3tjsg4YSO4YWx4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBDV0lMUAorQ0RGNztDREY3OzExMEUgMTE3MSAxMUI2O0NERjc7MTEwRSAxMTcxIDExQjY7ICMgKOy3tzsg7Le3OyDhhI7hhbHhhrY7IOy3tzsg4YSO4YWx4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBDV0lMSAorQ0RGODtDREY4OzExMEUgMTE3MSAxMUI3O0NERjg7MTEwRSAxMTcxIDExQjc7ICMgKOy3uDsg7Le4OyDhhI7hhbHhhrc7IOy3uDsg4YSO4YWx4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBDV0lNCitDREY5O0NERjk7MTEwRSAxMTcxIDExQjg7Q0RGOTsxMTBFIDExNzEgMTFCODsgIyAo7Le5OyDst7k7IOGEjuGFseGGuDsg7Le5OyDhhI7hhbHhhrg7ICkgSEFOR1VMIFNZTExBQkxFIENXSUIKK0NERkE7Q0RGQTsxMTBFIDExNzEgMTFCOTtDREZBOzExMEUgMTE3MSAxMUI5OyAjICjst7o7IOy3ujsg4YSO4YWx4Ya5OyDst7o7IOGEjuGFseGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dJQlMKK0NERkI7Q0RGQjsxMTBFIDExNzEgMTFCQTtDREZCOzExMEUgMTE3MSAxMUJBOyAjICjst7s7IOy3uzsg4YSO4YWx4Ya6OyDst7s7IOGEjuGFseGGujsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dJUworQ0RGQztDREZDOzExMEUgMTE3MSAxMUJCO0NERkM7MTEwRSAxMTcxIDExQkI7ICMgKOy3vDsg7Le8OyDhhI7hhbHhhrs7IOy3vDsg4YSO4YWx4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBDV0lTUworQ0RGRDtDREZEOzExMEUgMTE3MSAxMUJDO0NERkQ7MTEwRSAxMTcxIDExQkM7ICMgKOy3vTsg7Le9OyDhhI7hhbHhhrw7IOy3vTsg4YSO4YWx4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBDV0lORworQ0RGRTtDREZFOzExMEUgMTE3MSAxMUJEO0NERkU7MTEwRSAxMTcxIDExQkQ7ICMgKOy3vjsg7Le+OyDhhI7hhbHhhr07IOy3vjsg4YSO4YWx4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBDV0lKCitDREZGO0NERkY7MTEwRSAxMTcxIDExQkU7Q0RGRjsxMTBFIDExNzEgMTFCRTsgIyAo7Le/OyDst787IOGEjuGFseGGvjsg7Le/OyDhhI7hhbHhhr47ICkgSEFOR1VMIFNZTExBQkxFIENXSUMKK0NFMDA7Q0UwMDsxMTBFIDExNzEgMTFCRjtDRTAwOzExMEUgMTE3MSAxMUJGOyAjICjsuIA7IOy4gDsg4YSO4YWx4Ya/OyDsuIA7IOGEjuGFseGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dJSworQ0UwMTtDRTAxOzExMEUgMTE3MSAxMUMwO0NFMDE7MTEwRSAxMTcxIDExQzA7ICMgKOy4gTsg7LiBOyDhhI7hhbHhh4A7IOy4gTsg4YSO4YWx4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBDV0lUCitDRTAyO0NFMDI7MTEwRSAxMTcxIDExQzE7Q0UwMjsxMTBFIDExNzEgMTFDMTsgIyAo7LiCOyDsuII7IOGEjuGFseGHgTsg7LiCOyDhhI7hhbHhh4E7ICkgSEFOR1VMIFNZTExBQkxFIENXSVAKK0NFMDM7Q0UwMzsxMTBFIDExNzEgMTFDMjtDRTAzOzExMEUgMTE3MSAxMUMyOyAjICjsuIM7IOy4gzsg4YSO4YWx4YeCOyDsuIM7IOGEjuGFseGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1dJSAorQ0UwNDtDRTA0OzExMEUgMTE3MjtDRTA0OzExMEUgMTE3MjsgIyAo7LiEOyDsuIQ7IOGEjuGFsjsg7LiEOyDhhI7hhbI7ICkgSEFOR1VMIFNZTExBQkxFIENZVQorQ0UwNTtDRTA1OzExMEUgMTE3MiAxMUE4O0NFMDU7MTEwRSAxMTcyIDExQTg7ICMgKOy4hTsg7LiFOyDhhI7hhbLhhqg7IOy4hTsg4YSO4YWy4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBDWVVHCitDRTA2O0NFMDY7MTEwRSAxMTcyIDExQTk7Q0UwNjsxMTBFIDExNzIgMTFBOTsgIyAo7LiGOyDsuIY7IOGEjuGFsuGGqTsg7LiGOyDhhI7hhbLhhqk7ICkgSEFOR1VMIFNZTExBQkxFIENZVUdHCitDRTA3O0NFMDc7MTEwRSAxMTcyIDExQUE7Q0UwNzsxMTBFIDExNzIgMTFBQTsgIyAo7LiHOyDsuIc7IOGEjuGFsuGGqjsg7LiHOyDhhI7hhbLhhqo7ICkgSEFOR1VMIFNZTExBQkxFIENZVUdTCitDRTA4O0NFMDg7MTEwRSAxMTcyIDExQUI7Q0UwODsxMTBFIDExNzIgMTFBQjsgIyAo7LiIOyDsuIg7IOGEjuGFsuGGqzsg7LiIOyDhhI7hhbLhhqs7ICkgSEFOR1VMIFNZTExBQkxFIENZVU4KK0NFMDk7Q0UwOTsxMTBFIDExNzIgMTFBQztDRTA5OzExMEUgMTE3MiAxMUFDOyAjICjsuIk7IOy4iTsg4YSO4YWy4YasOyDsuIk7IOGEjuGFsuGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lVTkoKK0NFMEE7Q0UwQTsxMTBFIDExNzIgMTFBRDtDRTBBOzExMEUgMTE3MiAxMUFEOyAjICjsuIo7IOy4ijsg4YSO4YWy4YatOyDsuIo7IOGEjuGFsuGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lVTkgKK0NFMEI7Q0UwQjsxMTBFIDExNzIgMTFBRTtDRTBCOzExMEUgMTE3MiAxMUFFOyAjICjsuIs7IOy4izsg4YSO4YWy4YauOyDsuIs7IOGEjuGFsuGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lVRAorQ0UwQztDRTBDOzExMEUgMTE3MiAxMUFGO0NFMEM7MTEwRSAxMTcyIDExQUY7ICMgKOy4jDsg7LiMOyDhhI7hhbLhhq87IOy4jDsg4YSO4YWy4YavOyApIEhBTkdVTCBTWUxMQUJMRSBDWVVMCitDRTBEO0NFMEQ7MTEwRSAxMTcyIDExQjA7Q0UwRDsxMTBFIDExNzIgMTFCMDsgIyAo7LiNOyDsuI07IOGEjuGFsuGGsDsg7LiNOyDhhI7hhbLhhrA7ICkgSEFOR1VMIFNZTExBQkxFIENZVUxHCitDRTBFO0NFMEU7MTEwRSAxMTcyIDExQjE7Q0UwRTsxMTBFIDExNzIgMTFCMTsgIyAo7LiOOyDsuI47IOGEjuGFsuGGsTsg7LiOOyDhhI7hhbLhhrE7ICkgSEFOR1VMIFNZTExBQkxFIENZVUxNCitDRTBGO0NFMEY7MTEwRSAxMTcyIDExQjI7Q0UwRjsxMTBFIDExNzIgMTFCMjsgIyAo7LiPOyDsuI87IOGEjuGFsuGGsjsg7LiPOyDhhI7hhbLhhrI7ICkgSEFOR1VMIFNZTExBQkxFIENZVUxCCitDRTEwO0NFMTA7MTEwRSAxMTcyIDExQjM7Q0UxMDsxMTBFIDExNzIgMTFCMzsgIyAo7LiQOyDsuJA7IOGEjuGFsuGGszsg7LiQOyDhhI7hhbLhhrM7ICkgSEFOR1VMIFNZTExBQkxFIENZVUxTCitDRTExO0NFMTE7MTEwRSAxMTcyIDExQjQ7Q0UxMTsxMTBFIDExNzIgMTFCNDsgIyAo7LiROyDsuJE7IOGEjuGFsuGGtDsg7LiROyDhhI7hhbLhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIENZVUxUCitDRTEyO0NFMTI7MTEwRSAxMTcyIDExQjU7Q0UxMjsxMTBFIDExNzIgMTFCNTsgIyAo7LiSOyDsuJI7IOGEjuGFsuGGtTsg7LiSOyDhhI7hhbLhhrU7ICkgSEFOR1VMIFNZTExBQkxFIENZVUxQCitDRTEzO0NFMTM7MTEwRSAxMTcyIDExQjY7Q0UxMzsxMTBFIDExNzIgMTFCNjsgIyAo7LiTOyDsuJM7IOGEjuGFsuGGtjsg7LiTOyDhhI7hhbLhhrY7ICkgSEFOR1VMIFNZTExBQkxFIENZVUxICitDRTE0O0NFMTQ7MTEwRSAxMTcyIDExQjc7Q0UxNDsxMTBFIDExNzIgMTFCNzsgIyAo7LiUOyDsuJQ7IOGEjuGFsuGGtzsg7LiUOyDhhI7hhbLhhrc7ICkgSEFOR1VMIFNZTExBQkxFIENZVU0KK0NFMTU7Q0UxNTsxMTBFIDExNzIgMTFCODtDRTE1OzExMEUgMTE3MiAxMUI4OyAjICjsuJU7IOy4lTsg4YSO4YWy4Ya4OyDsuJU7IOGEjuGFsuGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lVQgorQ0UxNjtDRTE2OzExMEUgMTE3MiAxMUI5O0NFMTY7MTEwRSAxMTcyIDExQjk7ICMgKOy4ljsg7LiWOyDhhI7hhbLhhrk7IOy4ljsg4YSO4YWy4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBDWVVCUworQ0UxNztDRTE3OzExMEUgMTE3MiAxMUJBO0NFMTc7MTEwRSAxMTcyIDExQkE7ICMgKOy4lzsg7LiXOyDhhI7hhbLhhro7IOy4lzsg4YSO4YWy4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBDWVVTCitDRTE4O0NFMTg7MTEwRSAxMTcyIDExQkI7Q0UxODsxMTBFIDExNzIgMTFCQjsgIyAo7LiYOyDsuJg7IOGEjuGFsuGGuzsg7LiYOyDhhI7hhbLhhrs7ICkgSEFOR1VMIFNZTExBQkxFIENZVVNTCitDRTE5O0NFMTk7MTEwRSAxMTcyIDExQkM7Q0UxOTsxMTBFIDExNzIgMTFCQzsgIyAo7LiZOyDsuJk7IOGEjuGFsuGGvDsg7LiZOyDhhI7hhbLhhrw7ICkgSEFOR1VMIFNZTExBQkxFIENZVU5HCitDRTFBO0NFMUE7MTEwRSAxMTcyIDExQkQ7Q0UxQTsxMTBFIDExNzIgMTFCRDsgIyAo7LiaOyDsuJo7IOGEjuGFsuGGvTsg7LiaOyDhhI7hhbLhhr07ICkgSEFOR1VMIFNZTExBQkxFIENZVUoKK0NFMUI7Q0UxQjsxMTBFIDExNzIgMTFCRTtDRTFCOzExMEUgMTE3MiAxMUJFOyAjICjsuJs7IOy4mzsg4YSO4YWy4Ya+OyDsuJs7IOGEjuGFsuGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lVQworQ0UxQztDRTFDOzExMEUgMTE3MiAxMUJGO0NFMUM7MTEwRSAxMTcyIDExQkY7ICMgKOy4nDsg7LicOyDhhI7hhbLhhr87IOy4nDsg4YSO4YWy4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBDWVVLCitDRTFEO0NFMUQ7MTEwRSAxMTcyIDExQzA7Q0UxRDsxMTBFIDExNzIgMTFDMDsgIyAo7LidOyDsuJ07IOGEjuGFsuGHgDsg7LidOyDhhI7hhbLhh4A7ICkgSEFOR1VMIFNZTExBQkxFIENZVVQKK0NFMUU7Q0UxRTsxMTBFIDExNzIgMTFDMTtDRTFFOzExMEUgMTE3MiAxMUMxOyAjICjsuJ47IOy4njsg4YSO4YWy4YeBOyDsuJ47IOGEjuGFsuGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lVUAorQ0UxRjtDRTFGOzExMEUgMTE3MiAxMUMyO0NFMUY7MTEwRSAxMTcyIDExQzI7ICMgKOy4nzsg7LifOyDhhI7hhbLhh4I7IOy4nzsg4YSO4YWy4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBDWVVICitDRTIwO0NFMjA7MTEwRSAxMTczO0NFMjA7MTEwRSAxMTczOyAjICjsuKA7IOy4oDsg4YSO4YWzOyDsuKA7IOGEjuGFszsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VVCitDRTIxO0NFMjE7MTEwRSAxMTczIDExQTg7Q0UyMTsxMTBFIDExNzMgMTFBODsgIyAo7LihOyDsuKE7IOGEjuGFs+GGqDsg7LihOyDhhI7hhbPhhqg7ICkgSEFOR1VMIFNZTExBQkxFIENFVUcKK0NFMjI7Q0UyMjsxMTBFIDExNzMgMTFBOTtDRTIyOzExMEUgMTE3MyAxMUE5OyAjICjsuKI7IOy4ojsg4YSO4YWz4YapOyDsuKI7IOGEjuGFs+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VVR0cKK0NFMjM7Q0UyMzsxMTBFIDExNzMgMTFBQTtDRTIzOzExMEUgMTE3MyAxMUFBOyAjICjsuKM7IOy4ozsg4YSO4YWz4YaqOyDsuKM7IOGEjuGFs+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VVR1MKK0NFMjQ7Q0UyNDsxMTBFIDExNzMgMTFBQjtDRTI0OzExMEUgMTE3MyAxMUFCOyAjICjsuKQ7IOy4pDsg4YSO4YWz4YarOyDsuKQ7IOGEjuGFs+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VVTgorQ0UyNTtDRTI1OzExMEUgMTE3MyAxMUFDO0NFMjU7MTEwRSAxMTczIDExQUM7ICMgKOy4pTsg7LilOyDhhI7hhbPhhqw7IOy4pTsg4YSO4YWz4YasOyApIEhBTkdVTCBTWUxMQUJMRSBDRVVOSgorQ0UyNjtDRTI2OzExMEUgMTE3MyAxMUFEO0NFMjY7MTEwRSAxMTczIDExQUQ7ICMgKOy4pjsg7LimOyDhhI7hhbPhhq07IOy4pjsg4YSO4YWz4YatOyApIEhBTkdVTCBTWUxMQUJMRSBDRVVOSAorQ0UyNztDRTI3OzExMEUgMTE3MyAxMUFFO0NFMjc7MTEwRSAxMTczIDExQUU7ICMgKOy4pzsg7LinOyDhhI7hhbPhhq47IOy4pzsg4YSO4YWz4YauOyApIEhBTkdVTCBTWUxMQUJMRSBDRVVECitDRTI4O0NFMjg7MTEwRSAxMTczIDExQUY7Q0UyODsxMTBFIDExNzMgMTFBRjsgIyAo7LioOyDsuKg7IOGEjuGFs+GGrzsg7LioOyDhhI7hhbPhhq87ICkgSEFOR1VMIFNZTExBQkxFIENFVUwKK0NFMjk7Q0UyOTsxMTBFIDExNzMgMTFCMDtDRTI5OzExMEUgMTE3MyAxMUIwOyAjICjsuKk7IOy4qTsg4YSO4YWz4YawOyDsuKk7IOGEjuGFs+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VVTEcKK0NFMkE7Q0UyQTsxMTBFIDExNzMgMTFCMTtDRTJBOzExMEUgMTE3MyAxMUIxOyAjICjsuKo7IOy4qjsg4YSO4YWz4YaxOyDsuKo7IOGEjuGFs+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VVTE0KK0NFMkI7Q0UyQjsxMTBFIDExNzMgMTFCMjtDRTJCOzExMEUgMTE3MyAxMUIyOyAjICjsuKs7IOy4qzsg4YSO4YWz4YayOyDsuKs7IOGEjuGFs+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VVTEIKK0NFMkM7Q0UyQzsxMTBFIDExNzMgMTFCMztDRTJDOzExMEUgMTE3MyAxMUIzOyAjICjsuKw7IOy4rDsg4YSO4YWz4YazOyDsuKw7IOGEjuGFs+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VVTFMKK0NFMkQ7Q0UyRDsxMTBFIDExNzMgMTFCNDtDRTJEOzExMEUgMTE3MyAxMUI0OyAjICjsuK07IOy4rTsg4YSO4YWz4Ya0OyDsuK07IOGEjuGFs+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VVTFQKK0NFMkU7Q0UyRTsxMTBFIDExNzMgMTFCNTtDRTJFOzExMEUgMTE3MyAxMUI1OyAjICjsuK47IOy4rjsg4YSO4YWz4Ya1OyDsuK47IOGEjuGFs+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VVTFAKK0NFMkY7Q0UyRjsxMTBFIDExNzMgMTFCNjtDRTJGOzExMEUgMTE3MyAxMUI2OyAjICjsuK87IOy4rzsg4YSO4YWz4Ya2OyDsuK87IOGEjuGFs+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VVTEgKK0NFMzA7Q0UzMDsxMTBFIDExNzMgMTFCNztDRTMwOzExMEUgMTE3MyAxMUI3OyAjICjsuLA7IOy4sDsg4YSO4YWz4Ya3OyDsuLA7IOGEjuGFs+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VVTQorQ0UzMTtDRTMxOzExMEUgMTE3MyAxMUI4O0NFMzE7MTEwRSAxMTczIDExQjg7ICMgKOy4sTsg7LixOyDhhI7hhbPhhrg7IOy4sTsg4YSO4YWz4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBDRVVCCitDRTMyO0NFMzI7MTEwRSAxMTczIDExQjk7Q0UzMjsxMTBFIDExNzMgMTFCOTsgIyAo7LiyOyDsuLI7IOGEjuGFs+GGuTsg7LiyOyDhhI7hhbPhhrk7ICkgSEFOR1VMIFNZTExBQkxFIENFVUJTCitDRTMzO0NFMzM7MTEwRSAxMTczIDExQkE7Q0UzMzsxMTBFIDExNzMgMTFCQTsgIyAo7LizOyDsuLM7IOGEjuGFs+GGujsg7LizOyDhhI7hhbPhhro7ICkgSEFOR1VMIFNZTExBQkxFIENFVVMKK0NFMzQ7Q0UzNDsxMTBFIDExNzMgMTFCQjtDRTM0OzExMEUgMTE3MyAxMUJCOyAjICjsuLQ7IOy4tDsg4YSO4YWz4Ya7OyDsuLQ7IOGEjuGFs+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VVU1MKK0NFMzU7Q0UzNTsxMTBFIDExNzMgMTFCQztDRTM1OzExMEUgMTE3MyAxMUJDOyAjICjsuLU7IOy4tTsg4YSO4YWz4Ya8OyDsuLU7IOGEjuGFs+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VVTkcKK0NFMzY7Q0UzNjsxMTBFIDExNzMgMTFCRDtDRTM2OzExMEUgMTE3MyAxMUJEOyAjICjsuLY7IOy4tjsg4YSO4YWz4Ya9OyDsuLY7IOGEjuGFs+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VVSgorQ0UzNztDRTM3OzExMEUgMTE3MyAxMUJFO0NFMzc7MTEwRSAxMTczIDExQkU7ICMgKOy4tzsg7Li3OyDhhI7hhbPhhr47IOy4tzsg4YSO4YWz4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBDRVVDCitDRTM4O0NFMzg7MTEwRSAxMTczIDExQkY7Q0UzODsxMTBFIDExNzMgMTFCRjsgIyAo7Li4OyDsuLg7IOGEjuGFs+GGvzsg7Li4OyDhhI7hhbPhhr87ICkgSEFOR1VMIFNZTExBQkxFIENFVUsKK0NFMzk7Q0UzOTsxMTBFIDExNzMgMTFDMDtDRTM5OzExMEUgMTE3MyAxMUMwOyAjICjsuLk7IOy4uTsg4YSO4YWz4YeAOyDsuLk7IOGEjuGFs+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQ0VVVAorQ0UzQTtDRTNBOzExMEUgMTE3MyAxMUMxO0NFM0E7MTEwRSAxMTczIDExQzE7ICMgKOy4ujsg7Li6OyDhhI7hhbPhh4E7IOy4ujsg4YSO4YWz4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBDRVVQCitDRTNCO0NFM0I7MTEwRSAxMTczIDExQzI7Q0UzQjsxMTBFIDExNzMgMTFDMjsgIyAo7Li7OyDsuLs7IOGEjuGFs+GHgjsg7Li7OyDhhI7hhbPhh4I7ICkgSEFOR1VMIFNZTExBQkxFIENFVUgKK0NFM0M7Q0UzQzsxMTBFIDExNzQ7Q0UzQzsxMTBFIDExNzQ7ICMgKOy4vDsg7Li8OyDhhI7hhbQ7IOy4vDsg4YSO4YW0OyApIEhBTkdVTCBTWUxMQUJMRSBDWUkKK0NFM0Q7Q0UzRDsxMTBFIDExNzQgMTFBODtDRTNEOzExMEUgMTE3NCAxMUE4OyAjICjsuL07IOy4vTsg4YSO4YW04YaoOyDsuL07IOGEjuGFtOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lJRworQ0UzRTtDRTNFOzExMEUgMTE3NCAxMUE5O0NFM0U7MTEwRSAxMTc0IDExQTk7ICMgKOy4vjsg7Li+OyDhhI7hhbThhqk7IOy4vjsg4YSO4YW04YapOyApIEhBTkdVTCBTWUxMQUJMRSBDWUlHRworQ0UzRjtDRTNGOzExMEUgMTE3NCAxMUFBO0NFM0Y7MTEwRSAxMTc0IDExQUE7ICMgKOy4vzsg7Li/OyDhhI7hhbThhqo7IOy4vzsg4YSO4YW04YaqOyApIEhBTkdVTCBTWUxMQUJMRSBDWUlHUworQ0U0MDtDRTQwOzExMEUgMTE3NCAxMUFCO0NFNDA7MTEwRSAxMTc0IDExQUI7ICMgKOy5gDsg7LmAOyDhhI7hhbThhqs7IOy5gDsg4YSO4YW04YarOyApIEhBTkdVTCBTWUxMQUJMRSBDWUlOCitDRTQxO0NFNDE7MTEwRSAxMTc0IDExQUM7Q0U0MTsxMTBFIDExNzQgMTFBQzsgIyAo7LmBOyDsuYE7IOGEjuGFtOGGrDsg7LmBOyDhhI7hhbThhqw7ICkgSEFOR1VMIFNZTExBQkxFIENZSU5KCitDRTQyO0NFNDI7MTEwRSAxMTc0IDExQUQ7Q0U0MjsxMTBFIDExNzQgMTFBRDsgIyAo7LmCOyDsuYI7IOGEjuGFtOGGrTsg7LmCOyDhhI7hhbThhq07ICkgSEFOR1VMIFNZTExBQkxFIENZSU5ICitDRTQzO0NFNDM7MTEwRSAxMTc0IDExQUU7Q0U0MzsxMTBFIDExNzQgMTFBRTsgIyAo7LmDOyDsuYM7IOGEjuGFtOGGrjsg7LmDOyDhhI7hhbThhq47ICkgSEFOR1VMIFNZTExBQkxFIENZSUQKK0NFNDQ7Q0U0NDsxMTBFIDExNzQgMTFBRjtDRTQ0OzExMEUgMTE3NCAxMUFGOyAjICjsuYQ7IOy5hDsg4YSO4YW04YavOyDsuYQ7IOGEjuGFtOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lJTAorQ0U0NTtDRTQ1OzExMEUgMTE3NCAxMUIwO0NFNDU7MTEwRSAxMTc0IDExQjA7ICMgKOy5hTsg7LmFOyDhhI7hhbThhrA7IOy5hTsg4YSO4YW04YawOyApIEhBTkdVTCBTWUxMQUJMRSBDWUlMRworQ0U0NjtDRTQ2OzExMEUgMTE3NCAxMUIxO0NFNDY7MTEwRSAxMTc0IDExQjE7ICMgKOy5hjsg7LmGOyDhhI7hhbThhrE7IOy5hjsg4YSO4YW04YaxOyApIEhBTkdVTCBTWUxMQUJMRSBDWUlMTQorQ0U0NztDRTQ3OzExMEUgMTE3NCAxMUIyO0NFNDc7MTEwRSAxMTc0IDExQjI7ICMgKOy5hzsg7LmHOyDhhI7hhbThhrI7IOy5hzsg4YSO4YW04YayOyApIEhBTkdVTCBTWUxMQUJMRSBDWUlMQgorQ0U0ODtDRTQ4OzExMEUgMTE3NCAxMUIzO0NFNDg7MTEwRSAxMTc0IDExQjM7ICMgKOy5iDsg7LmIOyDhhI7hhbThhrM7IOy5iDsg4YSO4YW04YazOyApIEhBTkdVTCBTWUxMQUJMRSBDWUlMUworQ0U0OTtDRTQ5OzExMEUgMTE3NCAxMUI0O0NFNDk7MTEwRSAxMTc0IDExQjQ7ICMgKOy5iTsg7LmJOyDhhI7hhbThhrQ7IOy5iTsg4YSO4YW04Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBDWUlMVAorQ0U0QTtDRTRBOzExMEUgMTE3NCAxMUI1O0NFNEE7MTEwRSAxMTc0IDExQjU7ICMgKOy5ijsg7LmKOyDhhI7hhbThhrU7IOy5ijsg4YSO4YW04Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBDWUlMUAorQ0U0QjtDRTRCOzExMEUgMTE3NCAxMUI2O0NFNEI7MTEwRSAxMTc0IDExQjY7ICMgKOy5izsg7LmLOyDhhI7hhbThhrY7IOy5izsg4YSO4YW04Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBDWUlMSAorQ0U0QztDRTRDOzExMEUgMTE3NCAxMUI3O0NFNEM7MTEwRSAxMTc0IDExQjc7ICMgKOy5jDsg7LmMOyDhhI7hhbThhrc7IOy5jDsg4YSO4YW04Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBDWUlNCitDRTREO0NFNEQ7MTEwRSAxMTc0IDExQjg7Q0U0RDsxMTBFIDExNzQgMTFCODsgIyAo7LmNOyDsuY07IOGEjuGFtOGGuDsg7LmNOyDhhI7hhbThhrg7ICkgSEFOR1VMIFNZTExBQkxFIENZSUIKK0NFNEU7Q0U0RTsxMTBFIDExNzQgMTFCOTtDRTRFOzExMEUgMTE3NCAxMUI5OyAjICjsuY47IOy5jjsg4YSO4YW04Ya5OyDsuY47IOGEjuGFtOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lJQlMKK0NFNEY7Q0U0RjsxMTBFIDExNzQgMTFCQTtDRTRGOzExMEUgMTE3NCAxMUJBOyAjICjsuY87IOy5jzsg4YSO4YW04Ya6OyDsuY87IOGEjuGFtOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lJUworQ0U1MDtDRTUwOzExMEUgMTE3NCAxMUJCO0NFNTA7MTEwRSAxMTc0IDExQkI7ICMgKOy5kDsg7LmQOyDhhI7hhbThhrs7IOy5kDsg4YSO4YW04Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBDWUlTUworQ0U1MTtDRTUxOzExMEUgMTE3NCAxMUJDO0NFNTE7MTEwRSAxMTc0IDExQkM7ICMgKOy5kTsg7LmROyDhhI7hhbThhrw7IOy5kTsg4YSO4YW04Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBDWUlORworQ0U1MjtDRTUyOzExMEUgMTE3NCAxMUJEO0NFNTI7MTEwRSAxMTc0IDExQkQ7ICMgKOy5kjsg7LmSOyDhhI7hhbThhr07IOy5kjsg4YSO4YW04Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBDWUlKCitDRTUzO0NFNTM7MTEwRSAxMTc0IDExQkU7Q0U1MzsxMTBFIDExNzQgMTFCRTsgIyAo7LmTOyDsuZM7IOGEjuGFtOGGvjsg7LmTOyDhhI7hhbThhr47ICkgSEFOR1VMIFNZTExBQkxFIENZSUMKK0NFNTQ7Q0U1NDsxMTBFIDExNzQgMTFCRjtDRTU0OzExMEUgMTE3NCAxMUJGOyAjICjsuZQ7IOy5lDsg4YSO4YW04Ya/OyDsuZQ7IOGEjuGFtOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lJSworQ0U1NTtDRTU1OzExMEUgMTE3NCAxMUMwO0NFNTU7MTEwRSAxMTc0IDExQzA7ICMgKOy5lTsg7LmVOyDhhI7hhbThh4A7IOy5lTsg4YSO4YW04YeAOyApIEhBTkdVTCBTWUxMQUJMRSBDWUlUCitDRTU2O0NFNTY7MTEwRSAxMTc0IDExQzE7Q0U1NjsxMTBFIDExNzQgMTFDMTsgIyAo7LmWOyDsuZY7IOGEjuGFtOGHgTsg7LmWOyDhhI7hhbThh4E7ICkgSEFOR1VMIFNZTExBQkxFIENZSVAKK0NFNTc7Q0U1NzsxMTBFIDExNzQgMTFDMjtDRTU3OzExMEUgMTE3NCAxMUMyOyAjICjsuZc7IOy5lzsg4YSO4YW04YeCOyDsuZc7IOGEjuGFtOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgQ1lJSAorQ0U1ODtDRTU4OzExMEUgMTE3NTtDRTU4OzExMEUgMTE3NTsgIyAo7LmYOyDsuZg7IOGEjuGFtTsg7LmYOyDhhI7hhbU7ICkgSEFOR1VMIFNZTExBQkxFIENJCitDRTU5O0NFNTk7MTEwRSAxMTc1IDExQTg7Q0U1OTsxMTBFIDExNzUgMTFBODsgIyAo7LmZOyDsuZk7IOGEjuGFteGGqDsg7LmZOyDhhI7hhbXhhqg7ICkgSEFOR1VMIFNZTExBQkxFIENJRworQ0U1QTtDRTVBOzExMEUgMTE3NSAxMUE5O0NFNUE7MTEwRSAxMTc1IDExQTk7ICMgKOy5mjsg7LmaOyDhhI7hhbXhhqk7IOy5mjsg4YSO4YW14YapOyApIEhBTkdVTCBTWUxMQUJMRSBDSUdHCitDRTVCO0NFNUI7MTEwRSAxMTc1IDExQUE7Q0U1QjsxMTBFIDExNzUgMTFBQTsgIyAo7LmbOyDsuZs7IOGEjuGFteGGqjsg7LmbOyDhhI7hhbXhhqo7ICkgSEFOR1VMIFNZTExBQkxFIENJR1MKK0NFNUM7Q0U1QzsxMTBFIDExNzUgMTFBQjtDRTVDOzExMEUgMTE3NSAxMUFCOyAjICjsuZw7IOy5nDsg4YSO4YW14YarOyDsuZw7IOGEjuGFteGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgQ0lOCitDRTVEO0NFNUQ7MTEwRSAxMTc1IDExQUM7Q0U1RDsxMTBFIDExNzUgMTFBQzsgIyAo7LmdOyDsuZ07IOGEjuGFteGGrDsg7LmdOyDhhI7hhbXhhqw7ICkgSEFOR1VMIFNZTExBQkxFIENJTkoKK0NFNUU7Q0U1RTsxMTBFIDExNzUgMTFBRDtDRTVFOzExMEUgMTE3NSAxMUFEOyAjICjsuZ47IOy5njsg4YSO4YW14YatOyDsuZ47IOGEjuGFteGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgQ0lOSAorQ0U1RjtDRTVGOzExMEUgMTE3NSAxMUFFO0NFNUY7MTEwRSAxMTc1IDExQUU7ICMgKOy5nzsg7LmfOyDhhI7hhbXhhq47IOy5nzsg4YSO4YW14YauOyApIEhBTkdVTCBTWUxMQUJMRSBDSUQKK0NFNjA7Q0U2MDsxMTBFIDExNzUgMTFBRjtDRTYwOzExMEUgMTE3NSAxMUFGOyAjICjsuaA7IOy5oDsg4YSO4YW14YavOyDsuaA7IOGEjuGFteGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgQ0lMCitDRTYxO0NFNjE7MTEwRSAxMTc1IDExQjA7Q0U2MTsxMTBFIDExNzUgMTFCMDsgIyAo7LmhOyDsuaE7IOGEjuGFteGGsDsg7LmhOyDhhI7hhbXhhrA7ICkgSEFOR1VMIFNZTExBQkxFIENJTEcKK0NFNjI7Q0U2MjsxMTBFIDExNzUgMTFCMTtDRTYyOzExMEUgMTE3NSAxMUIxOyAjICjsuaI7IOy5ojsg4YSO4YW14YaxOyDsuaI7IOGEjuGFteGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgQ0lMTQorQ0U2MztDRTYzOzExMEUgMTE3NSAxMUIyO0NFNjM7MTEwRSAxMTc1IDExQjI7ICMgKOy5ozsg7LmjOyDhhI7hhbXhhrI7IOy5ozsg4YSO4YW14YayOyApIEhBTkdVTCBTWUxMQUJMRSBDSUxCCitDRTY0O0NFNjQ7MTEwRSAxMTc1IDExQjM7Q0U2NDsxMTBFIDExNzUgMTFCMzsgIyAo7LmkOyDsuaQ7IOGEjuGFteGGszsg7LmkOyDhhI7hhbXhhrM7ICkgSEFOR1VMIFNZTExBQkxFIENJTFMKK0NFNjU7Q0U2NTsxMTBFIDExNzUgMTFCNDtDRTY1OzExMEUgMTE3NSAxMUI0OyAjICjsuaU7IOy5pTsg4YSO4YW14Ya0OyDsuaU7IOGEjuGFteGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgQ0lMVAorQ0U2NjtDRTY2OzExMEUgMTE3NSAxMUI1O0NFNjY7MTEwRSAxMTc1IDExQjU7ICMgKOy5pjsg7LmmOyDhhI7hhbXhhrU7IOy5pjsg4YSO4YW14Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBDSUxQCitDRTY3O0NFNjc7MTEwRSAxMTc1IDExQjY7Q0U2NzsxMTBFIDExNzUgMTFCNjsgIyAo7LmnOyDsuac7IOGEjuGFteGGtjsg7LmnOyDhhI7hhbXhhrY7ICkgSEFOR1VMIFNZTExBQkxFIENJTEgKK0NFNjg7Q0U2ODsxMTBFIDExNzUgMTFCNztDRTY4OzExMEUgMTE3NSAxMUI3OyAjICjsuag7IOy5qDsg4YSO4YW14Ya3OyDsuag7IOGEjuGFteGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgQ0lNCitDRTY5O0NFNjk7MTEwRSAxMTc1IDExQjg7Q0U2OTsxMTBFIDExNzUgMTFCODsgIyAo7LmpOyDsuak7IOGEjuGFteGGuDsg7LmpOyDhhI7hhbXhhrg7ICkgSEFOR1VMIFNZTExBQkxFIENJQgorQ0U2QTtDRTZBOzExMEUgMTE3NSAxMUI5O0NFNkE7MTEwRSAxMTc1IDExQjk7ICMgKOy5qjsg7LmqOyDhhI7hhbXhhrk7IOy5qjsg4YSO4YW14Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBDSUJTCitDRTZCO0NFNkI7MTEwRSAxMTc1IDExQkE7Q0U2QjsxMTBFIDExNzUgMTFCQTsgIyAo7LmrOyDsuas7IOGEjuGFteGGujsg7LmrOyDhhI7hhbXhhro7ICkgSEFOR1VMIFNZTExBQkxFIENJUworQ0U2QztDRTZDOzExMEUgMTE3NSAxMUJCO0NFNkM7MTEwRSAxMTc1IDExQkI7ICMgKOy5rDsg7LmsOyDhhI7hhbXhhrs7IOy5rDsg4YSO4YW14Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBDSVNTCitDRTZEO0NFNkQ7MTEwRSAxMTc1IDExQkM7Q0U2RDsxMTBFIDExNzUgMTFCQzsgIyAo7LmtOyDsua07IOGEjuGFteGGvDsg7LmtOyDhhI7hhbXhhrw7ICkgSEFOR1VMIFNZTExBQkxFIENJTkcKK0NFNkU7Q0U2RTsxMTBFIDExNzUgMTFCRDtDRTZFOzExMEUgMTE3NSAxMUJEOyAjICjsua47IOy5rjsg4YSO4YW14Ya9OyDsua47IOGEjuGFteGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgQ0lKCitDRTZGO0NFNkY7MTEwRSAxMTc1IDExQkU7Q0U2RjsxMTBFIDExNzUgMTFCRTsgIyAo7LmvOyDsua87IOGEjuGFteGGvjsg7LmvOyDhhI7hhbXhhr47ICkgSEFOR1VMIFNZTExBQkxFIENJQworQ0U3MDtDRTcwOzExMEUgMTE3NSAxMUJGO0NFNzA7MTEwRSAxMTc1IDExQkY7ICMgKOy5sDsg7LmwOyDhhI7hhbXhhr87IOy5sDsg4YSO4YW14Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBDSUsKK0NFNzE7Q0U3MTsxMTBFIDExNzUgMTFDMDtDRTcxOzExMEUgMTE3NSAxMUMwOyAjICjsubE7IOy5sTsg4YSO4YW14YeAOyDsubE7IOGEjuGFteGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgQ0lUCitDRTcyO0NFNzI7MTEwRSAxMTc1IDExQzE7Q0U3MjsxMTBFIDExNzUgMTFDMTsgIyAo7LmyOyDsubI7IOGEjuGFteGHgTsg7LmyOyDhhI7hhbXhh4E7ICkgSEFOR1VMIFNZTExBQkxFIENJUAorQ0U3MztDRTczOzExMEUgMTE3NSAxMUMyO0NFNzM7MTEwRSAxMTc1IDExQzI7ICMgKOy5szsg7LmzOyDhhI7hhbXhh4I7IOy5szsg4YSO4YW14YeCOyApIEhBTkdVTCBTWUxMQUJMRSBDSUgKK0NFNzQ7Q0U3NDsxMTBGIDExNjE7Q0U3NDsxMTBGIDExNjE7ICMgKOy5tDsg7Lm0OyDhhI/hhaE7IOy5tDsg4YSP4YWhOyApIEhBTkdVTCBTWUxMQUJMRSBLQQorQ0U3NTtDRTc1OzExMEYgMTE2MSAxMUE4O0NFNzU7MTEwRiAxMTYxIDExQTg7ICMgKOy5tTsg7Lm1OyDhhI/hhaHhhqg7IOy5tTsg4YSP4YWh4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBLQUcKK0NFNzY7Q0U3NjsxMTBGIDExNjEgMTFBOTtDRTc2OzExMEYgMTE2MSAxMUE5OyAjICjsubY7IOy5tjsg4YSP4YWh4YapOyDsubY7IOGEj+GFoeGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgS0FHRworQ0U3NztDRTc3OzExMEYgMTE2MSAxMUFBO0NFNzc7MTEwRiAxMTYxIDExQUE7ICMgKOy5tzsg7Lm3OyDhhI/hhaHhhqo7IOy5tzsg4YSP4YWh4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBLQUdTCitDRTc4O0NFNzg7MTEwRiAxMTYxIDExQUI7Q0U3ODsxMTBGIDExNjEgMTFBQjsgIyAo7Lm4OyDsubg7IOGEj+GFoeGGqzsg7Lm4OyDhhI/hhaHhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEtBTgorQ0U3OTtDRTc5OzExMEYgMTE2MSAxMUFDO0NFNzk7MTEwRiAxMTYxIDExQUM7ICMgKOy5uTsg7Lm5OyDhhI/hhaHhhqw7IOy5uTsg4YSP4YWh4YasOyApIEhBTkdVTCBTWUxMQUJMRSBLQU5KCitDRTdBO0NFN0E7MTEwRiAxMTYxIDExQUQ7Q0U3QTsxMTBGIDExNjEgMTFBRDsgIyAo7Lm6OyDsubo7IOGEj+GFoeGGrTsg7Lm6OyDhhI/hhaHhhq07ICkgSEFOR1VMIFNZTExBQkxFIEtBTkgKK0NFN0I7Q0U3QjsxMTBGIDExNjEgMTFBRTtDRTdCOzExMEYgMTE2MSAxMUFFOyAjICjsubs7IOy5uzsg4YSP4YWh4YauOyDsubs7IOGEj+GFoeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgS0FECitDRTdDO0NFN0M7MTEwRiAxMTYxIDExQUY7Q0U3QzsxMTBGIDExNjEgMTFBRjsgIyAo7Lm8OyDsubw7IOGEj+GFoeGGrzsg7Lm8OyDhhI/hhaHhhq87ICkgSEFOR1VMIFNZTExBQkxFIEtBTAorQ0U3RDtDRTdEOzExMEYgMTE2MSAxMUIwO0NFN0Q7MTEwRiAxMTYxIDExQjA7ICMgKOy5vTsg7Lm9OyDhhI/hhaHhhrA7IOy5vTsg4YSP4YWh4YawOyApIEhBTkdVTCBTWUxMQUJMRSBLQUxHCitDRTdFO0NFN0U7MTEwRiAxMTYxIDExQjE7Q0U3RTsxMTBGIDExNjEgMTFCMTsgIyAo7Lm+OyDsub47IOGEj+GFoeGGsTsg7Lm+OyDhhI/hhaHhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEtBTE0KK0NFN0Y7Q0U3RjsxMTBGIDExNjEgMTFCMjtDRTdGOzExMEYgMTE2MSAxMUIyOyAjICjsub87IOy5vzsg4YSP4YWh4YayOyDsub87IOGEj+GFoeGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgS0FMQgorQ0U4MDtDRTgwOzExMEYgMTE2MSAxMUIzO0NFODA7MTEwRiAxMTYxIDExQjM7ICMgKOy6gDsg7LqAOyDhhI/hhaHhhrM7IOy6gDsg4YSP4YWh4YazOyApIEhBTkdVTCBTWUxMQUJMRSBLQUxTCitDRTgxO0NFODE7MTEwRiAxMTYxIDExQjQ7Q0U4MTsxMTBGIDExNjEgMTFCNDsgIyAo7LqBOyDsuoE7IOGEj+GFoeGGtDsg7LqBOyDhhI/hhaHhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEtBTFQKK0NFODI7Q0U4MjsxMTBGIDExNjEgMTFCNTtDRTgyOzExMEYgMTE2MSAxMUI1OyAjICjsuoI7IOy6gjsg4YSP4YWh4Ya1OyDsuoI7IOGEj+GFoeGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgS0FMUAorQ0U4MztDRTgzOzExMEYgMTE2MSAxMUI2O0NFODM7MTEwRiAxMTYxIDExQjY7ICMgKOy6gzsg7LqDOyDhhI/hhaHhhrY7IOy6gzsg4YSP4YWh4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBLQUxICitDRTg0O0NFODQ7MTEwRiAxMTYxIDExQjc7Q0U4NDsxMTBGIDExNjEgMTFCNzsgIyAo7LqEOyDsuoQ7IOGEj+GFoeGGtzsg7LqEOyDhhI/hhaHhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEtBTQorQ0U4NTtDRTg1OzExMEYgMTE2MSAxMUI4O0NFODU7MTEwRiAxMTYxIDExQjg7ICMgKOy6hTsg7LqFOyDhhI/hhaHhhrg7IOy6hTsg4YSP4YWh4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBLQUIKK0NFODY7Q0U4NjsxMTBGIDExNjEgMTFCOTtDRTg2OzExMEYgMTE2MSAxMUI5OyAjICjsuoY7IOy6hjsg4YSP4YWh4Ya5OyDsuoY7IOGEj+GFoeGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgS0FCUworQ0U4NztDRTg3OzExMEYgMTE2MSAxMUJBO0NFODc7MTEwRiAxMTYxIDExQkE7ICMgKOy6hzsg7LqHOyDhhI/hhaHhhro7IOy6hzsg4YSP4YWh4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBLQVMKK0NFODg7Q0U4ODsxMTBGIDExNjEgMTFCQjtDRTg4OzExMEYgMTE2MSAxMUJCOyAjICjsuog7IOy6iDsg4YSP4YWh4Ya7OyDsuog7IOGEj+GFoeGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgS0FTUworQ0U4OTtDRTg5OzExMEYgMTE2MSAxMUJDO0NFODk7MTEwRiAxMTYxIDExQkM7ICMgKOy6iTsg7LqJOyDhhI/hhaHhhrw7IOy6iTsg4YSP4YWh4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBLQU5HCitDRThBO0NFOEE7MTEwRiAxMTYxIDExQkQ7Q0U4QTsxMTBGIDExNjEgMTFCRDsgIyAo7LqKOyDsuoo7IOGEj+GFoeGGvTsg7LqKOyDhhI/hhaHhhr07ICkgSEFOR1VMIFNZTExBQkxFIEtBSgorQ0U4QjtDRThCOzExMEYgMTE2MSAxMUJFO0NFOEI7MTEwRiAxMTYxIDExQkU7ICMgKOy6izsg7LqLOyDhhI/hhaHhhr47IOy6izsg4YSP4YWh4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBLQUMKK0NFOEM7Q0U4QzsxMTBGIDExNjEgMTFCRjtDRThDOzExMEYgMTE2MSAxMUJGOyAjICjsuow7IOy6jDsg4YSP4YWh4Ya/OyDsuow7IOGEj+GFoeGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgS0FLCitDRThEO0NFOEQ7MTEwRiAxMTYxIDExQzA7Q0U4RDsxMTBGIDExNjEgMTFDMDsgIyAo7LqNOyDsuo07IOGEj+GFoeGHgDsg7LqNOyDhhI/hhaHhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEtBVAorQ0U4RTtDRThFOzExMEYgMTE2MSAxMUMxO0NFOEU7MTEwRiAxMTYxIDExQzE7ICMgKOy6jjsg7LqOOyDhhI/hhaHhh4E7IOy6jjsg4YSP4YWh4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBLQVAKK0NFOEY7Q0U4RjsxMTBGIDExNjEgMTFDMjtDRThGOzExMEYgMTE2MSAxMUMyOyAjICjsuo87IOy6jzsg4YSP4YWh4YeCOyDsuo87IOGEj+GFoeGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgS0FICitDRTkwO0NFOTA7MTEwRiAxMTYyO0NFOTA7MTEwRiAxMTYyOyAjICjsupA7IOy6kDsg4YSP4YWiOyDsupA7IOGEj+GFojsgKSBIQU5HVUwgU1lMTEFCTEUgS0FFCitDRTkxO0NFOTE7MTEwRiAxMTYyIDExQTg7Q0U5MTsxMTBGIDExNjIgMTFBODsgIyAo7LqROyDsupE7IOGEj+GFouGGqDsg7LqROyDhhI/hhaLhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEtBRUcKK0NFOTI7Q0U5MjsxMTBGIDExNjIgMTFBOTtDRTkyOzExMEYgMTE2MiAxMUE5OyAjICjsupI7IOy6kjsg4YSP4YWi4YapOyDsupI7IOGEj+GFouGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgS0FFR0cKK0NFOTM7Q0U5MzsxMTBGIDExNjIgMTFBQTtDRTkzOzExMEYgMTE2MiAxMUFBOyAjICjsupM7IOy6kzsg4YSP4YWi4YaqOyDsupM7IOGEj+GFouGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgS0FFR1MKK0NFOTQ7Q0U5NDsxMTBGIDExNjIgMTFBQjtDRTk0OzExMEYgMTE2MiAxMUFCOyAjICjsupQ7IOy6lDsg4YSP4YWi4YarOyDsupQ7IOGEj+GFouGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgS0FFTgorQ0U5NTtDRTk1OzExMEYgMTE2MiAxMUFDO0NFOTU7MTEwRiAxMTYyIDExQUM7ICMgKOy6lTsg7LqVOyDhhI/hhaLhhqw7IOy6lTsg4YSP4YWi4YasOyApIEhBTkdVTCBTWUxMQUJMRSBLQUVOSgorQ0U5NjtDRTk2OzExMEYgMTE2MiAxMUFEO0NFOTY7MTEwRiAxMTYyIDExQUQ7ICMgKOy6ljsg7LqWOyDhhI/hhaLhhq07IOy6ljsg4YSP4YWi4YatOyApIEhBTkdVTCBTWUxMQUJMRSBLQUVOSAorQ0U5NztDRTk3OzExMEYgMTE2MiAxMUFFO0NFOTc7MTEwRiAxMTYyIDExQUU7ICMgKOy6lzsg7LqXOyDhhI/hhaLhhq47IOy6lzsg4YSP4YWi4YauOyApIEhBTkdVTCBTWUxMQUJMRSBLQUVECitDRTk4O0NFOTg7MTEwRiAxMTYyIDExQUY7Q0U5ODsxMTBGIDExNjIgMTFBRjsgIyAo7LqYOyDsupg7IOGEj+GFouGGrzsg7LqYOyDhhI/hhaLhhq87ICkgSEFOR1VMIFNZTExBQkxFIEtBRUwKK0NFOTk7Q0U5OTsxMTBGIDExNjIgMTFCMDtDRTk5OzExMEYgMTE2MiAxMUIwOyAjICjsupk7IOy6mTsg4YSP4YWi4YawOyDsupk7IOGEj+GFouGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgS0FFTEcKK0NFOUE7Q0U5QTsxMTBGIDExNjIgMTFCMTtDRTlBOzExMEYgMTE2MiAxMUIxOyAjICjsupo7IOy6mjsg4YSP4YWi4YaxOyDsupo7IOGEj+GFouGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgS0FFTE0KK0NFOUI7Q0U5QjsxMTBGIDExNjIgMTFCMjtDRTlCOzExMEYgMTE2MiAxMUIyOyAjICjsups7IOy6mzsg4YSP4YWi4YayOyDsups7IOGEj+GFouGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgS0FFTEIKK0NFOUM7Q0U5QzsxMTBGIDExNjIgMTFCMztDRTlDOzExMEYgMTE2MiAxMUIzOyAjICjsupw7IOy6nDsg4YSP4YWi4YazOyDsupw7IOGEj+GFouGGszsgKSBIQU5HVUwgU1lMTEFCTEUgS0FFTFMKK0NFOUQ7Q0U5RDsxMTBGIDExNjIgMTFCNDtDRTlEOzExMEYgMTE2MiAxMUI0OyAjICjsup07IOy6nTsg4YSP4YWi4Ya0OyDsup07IOGEj+GFouGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgS0FFTFQKK0NFOUU7Q0U5RTsxMTBGIDExNjIgMTFCNTtDRTlFOzExMEYgMTE2MiAxMUI1OyAjICjsup47IOy6njsg4YSP4YWi4Ya1OyDsup47IOGEj+GFouGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgS0FFTFAKK0NFOUY7Q0U5RjsxMTBGIDExNjIgMTFCNjtDRTlGOzExMEYgMTE2MiAxMUI2OyAjICjsup87IOy6nzsg4YSP4YWi4Ya2OyDsup87IOGEj+GFouGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgS0FFTEgKK0NFQTA7Q0VBMDsxMTBGIDExNjIgMTFCNztDRUEwOzExMEYgMTE2MiAxMUI3OyAjICjsuqA7IOy6oDsg4YSP4YWi4Ya3OyDsuqA7IOGEj+GFouGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgS0FFTQorQ0VBMTtDRUExOzExMEYgMTE2MiAxMUI4O0NFQTE7MTEwRiAxMTYyIDExQjg7ICMgKOy6oTsg7LqhOyDhhI/hhaLhhrg7IOy6oTsg4YSP4YWi4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBLQUVCCitDRUEyO0NFQTI7MTEwRiAxMTYyIDExQjk7Q0VBMjsxMTBGIDExNjIgMTFCOTsgIyAo7LqiOyDsuqI7IOGEj+GFouGGuTsg7LqiOyDhhI/hhaLhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEtBRUJTCitDRUEzO0NFQTM7MTEwRiAxMTYyIDExQkE7Q0VBMzsxMTBGIDExNjIgMTFCQTsgIyAo7LqjOyDsuqM7IOGEj+GFouGGujsg7LqjOyDhhI/hhaLhhro7ICkgSEFOR1VMIFNZTExBQkxFIEtBRVMKK0NFQTQ7Q0VBNDsxMTBGIDExNjIgMTFCQjtDRUE0OzExMEYgMTE2MiAxMUJCOyAjICjsuqQ7IOy6pDsg4YSP4YWi4Ya7OyDsuqQ7IOGEj+GFouGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgS0FFU1MKK0NFQTU7Q0VBNTsxMTBGIDExNjIgMTFCQztDRUE1OzExMEYgMTE2MiAxMUJDOyAjICjsuqU7IOy6pTsg4YSP4YWi4Ya8OyDsuqU7IOGEj+GFouGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgS0FFTkcKK0NFQTY7Q0VBNjsxMTBGIDExNjIgMTFCRDtDRUE2OzExMEYgMTE2MiAxMUJEOyAjICjsuqY7IOy6pjsg4YSP4YWi4Ya9OyDsuqY7IOGEj+GFouGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgS0FFSgorQ0VBNztDRUE3OzExMEYgMTE2MiAxMUJFO0NFQTc7MTEwRiAxMTYyIDExQkU7ICMgKOy6pzsg7LqnOyDhhI/hhaLhhr47IOy6pzsg4YSP4YWi4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBLQUVDCitDRUE4O0NFQTg7MTEwRiAxMTYyIDExQkY7Q0VBODsxMTBGIDExNjIgMTFCRjsgIyAo7LqoOyDsuqg7IOGEj+GFouGGvzsg7LqoOyDhhI/hhaLhhr87ICkgSEFOR1VMIFNZTExBQkxFIEtBRUsKK0NFQTk7Q0VBOTsxMTBGIDExNjIgMTFDMDtDRUE5OzExMEYgMTE2MiAxMUMwOyAjICjsuqk7IOy6qTsg4YSP4YWi4YeAOyDsuqk7IOGEj+GFouGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgS0FFVAorQ0VBQTtDRUFBOzExMEYgMTE2MiAxMUMxO0NFQUE7MTEwRiAxMTYyIDExQzE7ICMgKOy6qjsg7LqqOyDhhI/hhaLhh4E7IOy6qjsg4YSP4YWi4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBLQUVQCitDRUFCO0NFQUI7MTEwRiAxMTYyIDExQzI7Q0VBQjsxMTBGIDExNjIgMTFDMjsgIyAo7LqrOyDsuqs7IOGEj+GFouGHgjsg7LqrOyDhhI/hhaLhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEtBRUgKK0NFQUM7Q0VBQzsxMTBGIDExNjM7Q0VBQzsxMTBGIDExNjM7ICMgKOy6rDsg7LqsOyDhhI/hhaM7IOy6rDsg4YSP4YWjOyApIEhBTkdVTCBTWUxMQUJMRSBLWUEKK0NFQUQ7Q0VBRDsxMTBGIDExNjMgMTFBODtDRUFEOzExMEYgMTE2MyAxMUE4OyAjICjsuq07IOy6rTsg4YSP4YWj4YaoOyDsuq07IOGEj+GFo+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgS1lBRworQ0VBRTtDRUFFOzExMEYgMTE2MyAxMUE5O0NFQUU7MTEwRiAxMTYzIDExQTk7ICMgKOy6rjsg7LquOyDhhI/hhaPhhqk7IOy6rjsg4YSP4YWj4YapOyApIEhBTkdVTCBTWUxMQUJMRSBLWUFHRworQ0VBRjtDRUFGOzExMEYgMTE2MyAxMUFBO0NFQUY7MTEwRiAxMTYzIDExQUE7ICMgKOy6rzsg7LqvOyDhhI/hhaPhhqo7IOy6rzsg4YSP4YWj4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBLWUFHUworQ0VCMDtDRUIwOzExMEYgMTE2MyAxMUFCO0NFQjA7MTEwRiAxMTYzIDExQUI7ICMgKOy6sDsg7LqwOyDhhI/hhaPhhqs7IOy6sDsg4YSP4YWj4YarOyApIEhBTkdVTCBTWUxMQUJMRSBLWUFOCitDRUIxO0NFQjE7MTEwRiAxMTYzIDExQUM7Q0VCMTsxMTBGIDExNjMgMTFBQzsgIyAo7LqxOyDsurE7IOGEj+GFo+GGrDsg7LqxOyDhhI/hhaPhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEtZQU5KCitDRUIyO0NFQjI7MTEwRiAxMTYzIDExQUQ7Q0VCMjsxMTBGIDExNjMgMTFBRDsgIyAo7LqyOyDsurI7IOGEj+GFo+GGrTsg7LqyOyDhhI/hhaPhhq07ICkgSEFOR1VMIFNZTExBQkxFIEtZQU5ICitDRUIzO0NFQjM7MTEwRiAxMTYzIDExQUU7Q0VCMzsxMTBGIDExNjMgMTFBRTsgIyAo7LqzOyDsurM7IOGEj+GFo+GGrjsg7LqzOyDhhI/hhaPhhq47ICkgSEFOR1VMIFNZTExBQkxFIEtZQUQKK0NFQjQ7Q0VCNDsxMTBGIDExNjMgMTFBRjtDRUI0OzExMEYgMTE2MyAxMUFGOyAjICjsurQ7IOy6tDsg4YSP4YWj4YavOyDsurQ7IOGEj+GFo+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgS1lBTAorQ0VCNTtDRUI1OzExMEYgMTE2MyAxMUIwO0NFQjU7MTEwRiAxMTYzIDExQjA7ICMgKOy6tTsg7Lq1OyDhhI/hhaPhhrA7IOy6tTsg4YSP4YWj4YawOyApIEhBTkdVTCBTWUxMQUJMRSBLWUFMRworQ0VCNjtDRUI2OzExMEYgMTE2MyAxMUIxO0NFQjY7MTEwRiAxMTYzIDExQjE7ICMgKOy6tjsg7Lq2OyDhhI/hhaPhhrE7IOy6tjsg4YSP4YWj4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBLWUFMTQorQ0VCNztDRUI3OzExMEYgMTE2MyAxMUIyO0NFQjc7MTEwRiAxMTYzIDExQjI7ICMgKOy6tzsg7Lq3OyDhhI/hhaPhhrI7IOy6tzsg4YSP4YWj4YayOyApIEhBTkdVTCBTWUxMQUJMRSBLWUFMQgorQ0VCODtDRUI4OzExMEYgMTE2MyAxMUIzO0NFQjg7MTEwRiAxMTYzIDExQjM7ICMgKOy6uDsg7Lq4OyDhhI/hhaPhhrM7IOy6uDsg4YSP4YWj4YazOyApIEhBTkdVTCBTWUxMQUJMRSBLWUFMUworQ0VCOTtDRUI5OzExMEYgMTE2MyAxMUI0O0NFQjk7MTEwRiAxMTYzIDExQjQ7ICMgKOy6uTsg7Lq5OyDhhI/hhaPhhrQ7IOy6uTsg4YSP4YWj4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBLWUFMVAorQ0VCQTtDRUJBOzExMEYgMTE2MyAxMUI1O0NFQkE7MTEwRiAxMTYzIDExQjU7ICMgKOy6ujsg7Lq6OyDhhI/hhaPhhrU7IOy6ujsg4YSP4YWj4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBLWUFMUAorQ0VCQjtDRUJCOzExMEYgMTE2MyAxMUI2O0NFQkI7MTEwRiAxMTYzIDExQjY7ICMgKOy6uzsg7Lq7OyDhhI/hhaPhhrY7IOy6uzsg4YSP4YWj4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBLWUFMSAorQ0VCQztDRUJDOzExMEYgMTE2MyAxMUI3O0NFQkM7MTEwRiAxMTYzIDExQjc7ICMgKOy6vDsg7Lq8OyDhhI/hhaPhhrc7IOy6vDsg4YSP4YWj4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBLWUFNCitDRUJEO0NFQkQ7MTEwRiAxMTYzIDExQjg7Q0VCRDsxMTBGIDExNjMgMTFCODsgIyAo7Lq9OyDsur07IOGEj+GFo+GGuDsg7Lq9OyDhhI/hhaPhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEtZQUIKK0NFQkU7Q0VCRTsxMTBGIDExNjMgMTFCOTtDRUJFOzExMEYgMTE2MyAxMUI5OyAjICjsur47IOy6vjsg4YSP4YWj4Ya5OyDsur47IOGEj+GFo+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgS1lBQlMKK0NFQkY7Q0VCRjsxMTBGIDExNjMgMTFCQTtDRUJGOzExMEYgMTE2MyAxMUJBOyAjICjsur87IOy6vzsg4YSP4YWj4Ya6OyDsur87IOGEj+GFo+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgS1lBUworQ0VDMDtDRUMwOzExMEYgMTE2MyAxMUJCO0NFQzA7MTEwRiAxMTYzIDExQkI7ICMgKOy7gDsg7LuAOyDhhI/hhaPhhrs7IOy7gDsg4YSP4YWj4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBLWUFTUworQ0VDMTtDRUMxOzExMEYgMTE2MyAxMUJDO0NFQzE7MTEwRiAxMTYzIDExQkM7ICMgKOy7gTsg7LuBOyDhhI/hhaPhhrw7IOy7gTsg4YSP4YWj4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBLWUFORworQ0VDMjtDRUMyOzExMEYgMTE2MyAxMUJEO0NFQzI7MTEwRiAxMTYzIDExQkQ7ICMgKOy7gjsg7LuCOyDhhI/hhaPhhr07IOy7gjsg4YSP4YWj4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBLWUFKCitDRUMzO0NFQzM7MTEwRiAxMTYzIDExQkU7Q0VDMzsxMTBGIDExNjMgMTFCRTsgIyAo7LuDOyDsu4M7IOGEj+GFo+GGvjsg7LuDOyDhhI/hhaPhhr47ICkgSEFOR1VMIFNZTExBQkxFIEtZQUMKK0NFQzQ7Q0VDNDsxMTBGIDExNjMgMTFCRjtDRUM0OzExMEYgMTE2MyAxMUJGOyAjICjsu4Q7IOy7hDsg4YSP4YWj4Ya/OyDsu4Q7IOGEj+GFo+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgS1lBSworQ0VDNTtDRUM1OzExMEYgMTE2MyAxMUMwO0NFQzU7MTEwRiAxMTYzIDExQzA7ICMgKOy7hTsg7LuFOyDhhI/hhaPhh4A7IOy7hTsg4YSP4YWj4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBLWUFUCitDRUM2O0NFQzY7MTEwRiAxMTYzIDExQzE7Q0VDNjsxMTBGIDExNjMgMTFDMTsgIyAo7LuGOyDsu4Y7IOGEj+GFo+GHgTsg7LuGOyDhhI/hhaPhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEtZQVAKK0NFQzc7Q0VDNzsxMTBGIDExNjMgMTFDMjtDRUM3OzExMEYgMTE2MyAxMUMyOyAjICjsu4c7IOy7hzsg4YSP4YWj4YeCOyDsu4c7IOGEj+GFo+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgS1lBSAorQ0VDODtDRUM4OzExMEYgMTE2NDtDRUM4OzExMEYgMTE2NDsgIyAo7LuIOyDsu4g7IOGEj+GFpDsg7LuIOyDhhI/hhaQ7ICkgSEFOR1VMIFNZTExBQkxFIEtZQUUKK0NFQzk7Q0VDOTsxMTBGIDExNjQgMTFBODtDRUM5OzExMEYgMTE2NCAxMUE4OyAjICjsu4k7IOy7iTsg4YSP4YWk4YaoOyDsu4k7IOGEj+GFpOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgS1lBRUcKK0NFQ0E7Q0VDQTsxMTBGIDExNjQgMTFBOTtDRUNBOzExMEYgMTE2NCAxMUE5OyAjICjsu4o7IOy7ijsg4YSP4YWk4YapOyDsu4o7IOGEj+GFpOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgS1lBRUdHCitDRUNCO0NFQ0I7MTEwRiAxMTY0IDExQUE7Q0VDQjsxMTBGIDExNjQgMTFBQTsgIyAo7LuLOyDsu4s7IOGEj+GFpOGGqjsg7LuLOyDhhI/hhaThhqo7ICkgSEFOR1VMIFNZTExBQkxFIEtZQUVHUworQ0VDQztDRUNDOzExMEYgMTE2NCAxMUFCO0NFQ0M7MTEwRiAxMTY0IDExQUI7ICMgKOy7jDsg7LuMOyDhhI/hhaThhqs7IOy7jDsg4YSP4YWk4YarOyApIEhBTkdVTCBTWUxMQUJMRSBLWUFFTgorQ0VDRDtDRUNEOzExMEYgMTE2NCAxMUFDO0NFQ0Q7MTEwRiAxMTY0IDExQUM7ICMgKOy7jTsg7LuNOyDhhI/hhaThhqw7IOy7jTsg4YSP4YWk4YasOyApIEhBTkdVTCBTWUxMQUJMRSBLWUFFTkoKK0NFQ0U7Q0VDRTsxMTBGIDExNjQgMTFBRDtDRUNFOzExMEYgMTE2NCAxMUFEOyAjICjsu447IOy7jjsg4YSP4YWk4YatOyDsu447IOGEj+GFpOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgS1lBRU5ICitDRUNGO0NFQ0Y7MTEwRiAxMTY0IDExQUU7Q0VDRjsxMTBGIDExNjQgMTFBRTsgIyAo7LuPOyDsu487IOGEj+GFpOGGrjsg7LuPOyDhhI/hhaThhq47ICkgSEFOR1VMIFNZTExBQkxFIEtZQUVECitDRUQwO0NFRDA7MTEwRiAxMTY0IDExQUY7Q0VEMDsxMTBGIDExNjQgMTFBRjsgIyAo7LuQOyDsu5A7IOGEj+GFpOGGrzsg7LuQOyDhhI/hhaThhq87ICkgSEFOR1VMIFNZTExBQkxFIEtZQUVMCitDRUQxO0NFRDE7MTEwRiAxMTY0IDExQjA7Q0VEMTsxMTBGIDExNjQgMTFCMDsgIyAo7LuROyDsu5E7IOGEj+GFpOGGsDsg7LuROyDhhI/hhaThhrA7ICkgSEFOR1VMIFNZTExBQkxFIEtZQUVMRworQ0VEMjtDRUQyOzExMEYgMTE2NCAxMUIxO0NFRDI7MTEwRiAxMTY0IDExQjE7ICMgKOy7kjsg7LuSOyDhhI/hhaThhrE7IOy7kjsg4YSP4YWk4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBLWUFFTE0KK0NFRDM7Q0VEMzsxMTBGIDExNjQgMTFCMjtDRUQzOzExMEYgMTE2NCAxMUIyOyAjICjsu5M7IOy7kzsg4YSP4YWk4YayOyDsu5M7IOGEj+GFpOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgS1lBRUxCCitDRUQ0O0NFRDQ7MTEwRiAxMTY0IDExQjM7Q0VENDsxMTBGIDExNjQgMTFCMzsgIyAo7LuUOyDsu5Q7IOGEj+GFpOGGszsg7LuUOyDhhI/hhaThhrM7ICkgSEFOR1VMIFNZTExBQkxFIEtZQUVMUworQ0VENTtDRUQ1OzExMEYgMTE2NCAxMUI0O0NFRDU7MTEwRiAxMTY0IDExQjQ7ICMgKOy7lTsg7LuVOyDhhI/hhaThhrQ7IOy7lTsg4YSP4YWk4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBLWUFFTFQKK0NFRDY7Q0VENjsxMTBGIDExNjQgMTFCNTtDRUQ2OzExMEYgMTE2NCAxMUI1OyAjICjsu5Y7IOy7ljsg4YSP4YWk4Ya1OyDsu5Y7IOGEj+GFpOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgS1lBRUxQCitDRUQ3O0NFRDc7MTEwRiAxMTY0IDExQjY7Q0VENzsxMTBGIDExNjQgMTFCNjsgIyAo7LuXOyDsu5c7IOGEj+GFpOGGtjsg7LuXOyDhhI/hhaThhrY7ICkgSEFOR1VMIFNZTExBQkxFIEtZQUVMSAorQ0VEODtDRUQ4OzExMEYgMTE2NCAxMUI3O0NFRDg7MTEwRiAxMTY0IDExQjc7ICMgKOy7mDsg7LuYOyDhhI/hhaThhrc7IOy7mDsg4YSP4YWk4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBLWUFFTQorQ0VEOTtDRUQ5OzExMEYgMTE2NCAxMUI4O0NFRDk7MTEwRiAxMTY0IDExQjg7ICMgKOy7mTsg7LuZOyDhhI/hhaThhrg7IOy7mTsg4YSP4YWk4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBLWUFFQgorQ0VEQTtDRURBOzExMEYgMTE2NCAxMUI5O0NFREE7MTEwRiAxMTY0IDExQjk7ICMgKOy7mjsg7LuaOyDhhI/hhaThhrk7IOy7mjsg4YSP4YWk4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBLWUFFQlMKK0NFREI7Q0VEQjsxMTBGIDExNjQgMTFCQTtDRURCOzExMEYgMTE2NCAxMUJBOyAjICjsu5s7IOy7mzsg4YSP4YWk4Ya6OyDsu5s7IOGEj+GFpOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgS1lBRVMKK0NFREM7Q0VEQzsxMTBGIDExNjQgMTFCQjtDRURDOzExMEYgMTE2NCAxMUJCOyAjICjsu5w7IOy7nDsg4YSP4YWk4Ya7OyDsu5w7IOGEj+GFpOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgS1lBRVNTCitDRUREO0NFREQ7MTEwRiAxMTY0IDExQkM7Q0VERDsxMTBGIDExNjQgMTFCQzsgIyAo7LudOyDsu507IOGEj+GFpOGGvDsg7LudOyDhhI/hhaThhrw7ICkgSEFOR1VMIFNZTExBQkxFIEtZQUVORworQ0VERTtDRURFOzExMEYgMTE2NCAxMUJEO0NFREU7MTEwRiAxMTY0IDExQkQ7ICMgKOy7njsg7LueOyDhhI/hhaThhr07IOy7njsg4YSP4YWk4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBLWUFFSgorQ0VERjtDRURGOzExMEYgMTE2NCAxMUJFO0NFREY7MTEwRiAxMTY0IDExQkU7ICMgKOy7nzsg7LufOyDhhI/hhaThhr47IOy7nzsg4YSP4YWk4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBLWUFFQworQ0VFMDtDRUUwOzExMEYgMTE2NCAxMUJGO0NFRTA7MTEwRiAxMTY0IDExQkY7ICMgKOy7oDsg7LugOyDhhI/hhaThhr87IOy7oDsg4YSP4YWk4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBLWUFFSworQ0VFMTtDRUUxOzExMEYgMTE2NCAxMUMwO0NFRTE7MTEwRiAxMTY0IDExQzA7ICMgKOy7oTsg7LuhOyDhhI/hhaThh4A7IOy7oTsg4YSP4YWk4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBLWUFFVAorQ0VFMjtDRUUyOzExMEYgMTE2NCAxMUMxO0NFRTI7MTEwRiAxMTY0IDExQzE7ICMgKOy7ojsg7LuiOyDhhI/hhaThh4E7IOy7ojsg4YSP4YWk4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBLWUFFUAorQ0VFMztDRUUzOzExMEYgMTE2NCAxMUMyO0NFRTM7MTEwRiAxMTY0IDExQzI7ICMgKOy7ozsg7LujOyDhhI/hhaThh4I7IOy7ozsg4YSP4YWk4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBLWUFFSAorQ0VFNDtDRUU0OzExMEYgMTE2NTtDRUU0OzExMEYgMTE2NTsgIyAo7LukOyDsu6Q7IOGEj+GFpTsg7LukOyDhhI/hhaU7ICkgSEFOR1VMIFNZTExBQkxFIEtFTworQ0VFNTtDRUU1OzExMEYgMTE2NSAxMUE4O0NFRTU7MTEwRiAxMTY1IDExQTg7ICMgKOy7pTsg7LulOyDhhI/hhaXhhqg7IOy7pTsg4YSP4YWl4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBLRU9HCitDRUU2O0NFRTY7MTEwRiAxMTY1IDExQTk7Q0VFNjsxMTBGIDExNjUgMTFBOTsgIyAo7LumOyDsu6Y7IOGEj+GFpeGGqTsg7LumOyDhhI/hhaXhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEtFT0dHCitDRUU3O0NFRTc7MTEwRiAxMTY1IDExQUE7Q0VFNzsxMTBGIDExNjUgMTFBQTsgIyAo7LunOyDsu6c7IOGEj+GFpeGGqjsg7LunOyDhhI/hhaXhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEtFT0dTCitDRUU4O0NFRTg7MTEwRiAxMTY1IDExQUI7Q0VFODsxMTBGIDExNjUgMTFBQjsgIyAo7LuoOyDsu6g7IOGEj+GFpeGGqzsg7LuoOyDhhI/hhaXhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEtFT04KK0NFRTk7Q0VFOTsxMTBGIDExNjUgMTFBQztDRUU5OzExMEYgMTE2NSAxMUFDOyAjICjsu6k7IOy7qTsg4YSP4YWl4YasOyDsu6k7IOGEj+GFpeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgS0VPTkoKK0NFRUE7Q0VFQTsxMTBGIDExNjUgMTFBRDtDRUVBOzExMEYgMTE2NSAxMUFEOyAjICjsu6o7IOy7qjsg4YSP4YWl4YatOyDsu6o7IOGEj+GFpeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgS0VPTkgKK0NFRUI7Q0VFQjsxMTBGIDExNjUgMTFBRTtDRUVCOzExMEYgMTE2NSAxMUFFOyAjICjsu6s7IOy7qzsg4YSP4YWl4YauOyDsu6s7IOGEj+GFpeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgS0VPRAorQ0VFQztDRUVDOzExMEYgMTE2NSAxMUFGO0NFRUM7MTEwRiAxMTY1IDExQUY7ICMgKOy7rDsg7LusOyDhhI/hhaXhhq87IOy7rDsg4YSP4YWl4YavOyApIEhBTkdVTCBTWUxMQUJMRSBLRU9MCitDRUVEO0NFRUQ7MTEwRiAxMTY1IDExQjA7Q0VFRDsxMTBGIDExNjUgMTFCMDsgIyAo7LutOyDsu607IOGEj+GFpeGGsDsg7LutOyDhhI/hhaXhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEtFT0xHCitDRUVFO0NFRUU7MTEwRiAxMTY1IDExQjE7Q0VFRTsxMTBGIDExNjUgMTFCMTsgIyAo7LuuOyDsu647IOGEj+GFpeGGsTsg7LuuOyDhhI/hhaXhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEtFT0xNCitDRUVGO0NFRUY7MTEwRiAxMTY1IDExQjI7Q0VFRjsxMTBGIDExNjUgMTFCMjsgIyAo7LuvOyDsu687IOGEj+GFpeGGsjsg7LuvOyDhhI/hhaXhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEtFT0xCCitDRUYwO0NFRjA7MTEwRiAxMTY1IDExQjM7Q0VGMDsxMTBGIDExNjUgMTFCMzsgIyAo7LuwOyDsu7A7IOGEj+GFpeGGszsg7LuwOyDhhI/hhaXhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEtFT0xTCitDRUYxO0NFRjE7MTEwRiAxMTY1IDExQjQ7Q0VGMTsxMTBGIDExNjUgMTFCNDsgIyAo7LuxOyDsu7E7IOGEj+GFpeGGtDsg7LuxOyDhhI/hhaXhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEtFT0xUCitDRUYyO0NFRjI7MTEwRiAxMTY1IDExQjU7Q0VGMjsxMTBGIDExNjUgMTFCNTsgIyAo7LuyOyDsu7I7IOGEj+GFpeGGtTsg7LuyOyDhhI/hhaXhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEtFT0xQCitDRUYzO0NFRjM7MTEwRiAxMTY1IDExQjY7Q0VGMzsxMTBGIDExNjUgMTFCNjsgIyAo7LuzOyDsu7M7IOGEj+GFpeGGtjsg7LuzOyDhhI/hhaXhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEtFT0xICitDRUY0O0NFRjQ7MTEwRiAxMTY1IDExQjc7Q0VGNDsxMTBGIDExNjUgMTFCNzsgIyAo7Lu0OyDsu7Q7IOGEj+GFpeGGtzsg7Lu0OyDhhI/hhaXhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEtFT00KK0NFRjU7Q0VGNTsxMTBGIDExNjUgMTFCODtDRUY1OzExMEYgMTE2NSAxMUI4OyAjICjsu7U7IOy7tTsg4YSP4YWl4Ya4OyDsu7U7IOGEj+GFpeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgS0VPQgorQ0VGNjtDRUY2OzExMEYgMTE2NSAxMUI5O0NFRjY7MTEwRiAxMTY1IDExQjk7ICMgKOy7tjsg7Lu2OyDhhI/hhaXhhrk7IOy7tjsg4YSP4YWl4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBLRU9CUworQ0VGNztDRUY3OzExMEYgMTE2NSAxMUJBO0NFRjc7MTEwRiAxMTY1IDExQkE7ICMgKOy7tzsg7Lu3OyDhhI/hhaXhhro7IOy7tzsg4YSP4YWl4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBLRU9TCitDRUY4O0NFRjg7MTEwRiAxMTY1IDExQkI7Q0VGODsxMTBGIDExNjUgMTFCQjsgIyAo7Lu4OyDsu7g7IOGEj+GFpeGGuzsg7Lu4OyDhhI/hhaXhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEtFT1NTCitDRUY5O0NFRjk7MTEwRiAxMTY1IDExQkM7Q0VGOTsxMTBGIDExNjUgMTFCQzsgIyAo7Lu5OyDsu7k7IOGEj+GFpeGGvDsg7Lu5OyDhhI/hhaXhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEtFT05HCitDRUZBO0NFRkE7MTEwRiAxMTY1IDExQkQ7Q0VGQTsxMTBGIDExNjUgMTFCRDsgIyAo7Lu6OyDsu7o7IOGEj+GFpeGGvTsg7Lu6OyDhhI/hhaXhhr07ICkgSEFOR1VMIFNZTExBQkxFIEtFT0oKK0NFRkI7Q0VGQjsxMTBGIDExNjUgMTFCRTtDRUZCOzExMEYgMTE2NSAxMUJFOyAjICjsu7s7IOy7uzsg4YSP4YWl4Ya+OyDsu7s7IOGEj+GFpeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgS0VPQworQ0VGQztDRUZDOzExMEYgMTE2NSAxMUJGO0NFRkM7MTEwRiAxMTY1IDExQkY7ICMgKOy7vDsg7Lu8OyDhhI/hhaXhhr87IOy7vDsg4YSP4YWl4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBLRU9LCitDRUZEO0NFRkQ7MTEwRiAxMTY1IDExQzA7Q0VGRDsxMTBGIDExNjUgMTFDMDsgIyAo7Lu9OyDsu707IOGEj+GFpeGHgDsg7Lu9OyDhhI/hhaXhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEtFT1QKK0NFRkU7Q0VGRTsxMTBGIDExNjUgMTFDMTtDRUZFOzExMEYgMTE2NSAxMUMxOyAjICjsu747IOy7vjsg4YSP4YWl4YeBOyDsu747IOGEj+GFpeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgS0VPUAorQ0VGRjtDRUZGOzExMEYgMTE2NSAxMUMyO0NFRkY7MTEwRiAxMTY1IDExQzI7ICMgKOy7vzsg7Lu/OyDhhI/hhaXhh4I7IOy7vzsg4YSP4YWl4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBLRU9ICitDRjAwO0NGMDA7MTEwRiAxMTY2O0NGMDA7MTEwRiAxMTY2OyAjICjsvIA7IOy8gDsg4YSP4YWmOyDsvIA7IOGEj+GFpjsgKSBIQU5HVUwgU1lMTEFCTEUgS0UKK0NGMDE7Q0YwMTsxMTBGIDExNjYgMTFBODtDRjAxOzExMEYgMTE2NiAxMUE4OyAjICjsvIE7IOy8gTsg4YSP4YWm4YaoOyDsvIE7IOGEj+GFpuGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgS0VHCitDRjAyO0NGMDI7MTEwRiAxMTY2IDExQTk7Q0YwMjsxMTBGIDExNjYgMTFBOTsgIyAo7LyCOyDsvII7IOGEj+GFpuGGqTsg7LyCOyDhhI/hhabhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEtFR0cKK0NGMDM7Q0YwMzsxMTBGIDExNjYgMTFBQTtDRjAzOzExMEYgMTE2NiAxMUFBOyAjICjsvIM7IOy8gzsg4YSP4YWm4YaqOyDsvIM7IOGEj+GFpuGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgS0VHUworQ0YwNDtDRjA0OzExMEYgMTE2NiAxMUFCO0NGMDQ7MTEwRiAxMTY2IDExQUI7ICMgKOy8hDsg7LyEOyDhhI/hhabhhqs7IOy8hDsg4YSP4YWm4YarOyApIEhBTkdVTCBTWUxMQUJMRSBLRU4KK0NGMDU7Q0YwNTsxMTBGIDExNjYgMTFBQztDRjA1OzExMEYgMTE2NiAxMUFDOyAjICjsvIU7IOy8hTsg4YSP4YWm4YasOyDsvIU7IOGEj+GFpuGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgS0VOSgorQ0YwNjtDRjA2OzExMEYgMTE2NiAxMUFEO0NGMDY7MTEwRiAxMTY2IDExQUQ7ICMgKOy8hjsg7LyGOyDhhI/hhabhhq07IOy8hjsg4YSP4YWm4YatOyApIEhBTkdVTCBTWUxMQUJMRSBLRU5ICitDRjA3O0NGMDc7MTEwRiAxMTY2IDExQUU7Q0YwNzsxMTBGIDExNjYgMTFBRTsgIyAo7LyHOyDsvIc7IOGEj+GFpuGGrjsg7LyHOyDhhI/hhabhhq47ICkgSEFOR1VMIFNZTExBQkxFIEtFRAorQ0YwODtDRjA4OzExMEYgMTE2NiAxMUFGO0NGMDg7MTEwRiAxMTY2IDExQUY7ICMgKOy8iDsg7LyIOyDhhI/hhabhhq87IOy8iDsg4YSP4YWm4YavOyApIEhBTkdVTCBTWUxMQUJMRSBLRUwKK0NGMDk7Q0YwOTsxMTBGIDExNjYgMTFCMDtDRjA5OzExMEYgMTE2NiAxMUIwOyAjICjsvIk7IOy8iTsg4YSP4YWm4YawOyDsvIk7IOGEj+GFpuGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgS0VMRworQ0YwQTtDRjBBOzExMEYgMTE2NiAxMUIxO0NGMEE7MTEwRiAxMTY2IDExQjE7ICMgKOy8ijsg7LyKOyDhhI/hhabhhrE7IOy8ijsg4YSP4YWm4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBLRUxNCitDRjBCO0NGMEI7MTEwRiAxMTY2IDExQjI7Q0YwQjsxMTBGIDExNjYgMTFCMjsgIyAo7LyLOyDsvIs7IOGEj+GFpuGGsjsg7LyLOyDhhI/hhabhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEtFTEIKK0NGMEM7Q0YwQzsxMTBGIDExNjYgMTFCMztDRjBDOzExMEYgMTE2NiAxMUIzOyAjICjsvIw7IOy8jDsg4YSP4YWm4YazOyDsvIw7IOGEj+GFpuGGszsgKSBIQU5HVUwgU1lMTEFCTEUgS0VMUworQ0YwRDtDRjBEOzExMEYgMTE2NiAxMUI0O0NGMEQ7MTEwRiAxMTY2IDExQjQ7ICMgKOy8jTsg7LyNOyDhhI/hhabhhrQ7IOy8jTsg4YSP4YWm4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBLRUxUCitDRjBFO0NGMEU7MTEwRiAxMTY2IDExQjU7Q0YwRTsxMTBGIDExNjYgMTFCNTsgIyAo7LyOOyDsvI47IOGEj+GFpuGGtTsg7LyOOyDhhI/hhabhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEtFTFAKK0NGMEY7Q0YwRjsxMTBGIDExNjYgMTFCNjtDRjBGOzExMEYgMTE2NiAxMUI2OyAjICjsvI87IOy8jzsg4YSP4YWm4Ya2OyDsvI87IOGEj+GFpuGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgS0VMSAorQ0YxMDtDRjEwOzExMEYgMTE2NiAxMUI3O0NGMTA7MTEwRiAxMTY2IDExQjc7ICMgKOy8kDsg7LyQOyDhhI/hhabhhrc7IOy8kDsg4YSP4YWm4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBLRU0KK0NGMTE7Q0YxMTsxMTBGIDExNjYgMTFCODtDRjExOzExMEYgMTE2NiAxMUI4OyAjICjsvJE7IOy8kTsg4YSP4YWm4Ya4OyDsvJE7IOGEj+GFpuGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgS0VCCitDRjEyO0NGMTI7MTEwRiAxMTY2IDExQjk7Q0YxMjsxMTBGIDExNjYgMTFCOTsgIyAo7LySOyDsvJI7IOGEj+GFpuGGuTsg7LySOyDhhI/hhabhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEtFQlMKK0NGMTM7Q0YxMzsxMTBGIDExNjYgMTFCQTtDRjEzOzExMEYgMTE2NiAxMUJBOyAjICjsvJM7IOy8kzsg4YSP4YWm4Ya6OyDsvJM7IOGEj+GFpuGGujsgKSBIQU5HVUwgU1lMTEFCTEUgS0VTCitDRjE0O0NGMTQ7MTEwRiAxMTY2IDExQkI7Q0YxNDsxMTBGIDExNjYgMTFCQjsgIyAo7LyUOyDsvJQ7IOGEj+GFpuGGuzsg7LyUOyDhhI/hhabhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEtFU1MKK0NGMTU7Q0YxNTsxMTBGIDExNjYgMTFCQztDRjE1OzExMEYgMTE2NiAxMUJDOyAjICjsvJU7IOy8lTsg4YSP4YWm4Ya8OyDsvJU7IOGEj+GFpuGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgS0VORworQ0YxNjtDRjE2OzExMEYgMTE2NiAxMUJEO0NGMTY7MTEwRiAxMTY2IDExQkQ7ICMgKOy8ljsg7LyWOyDhhI/hhabhhr07IOy8ljsg4YSP4YWm4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBLRUoKK0NGMTc7Q0YxNzsxMTBGIDExNjYgMTFCRTtDRjE3OzExMEYgMTE2NiAxMUJFOyAjICjsvJc7IOy8lzsg4YSP4YWm4Ya+OyDsvJc7IOGEj+GFpuGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgS0VDCitDRjE4O0NGMTg7MTEwRiAxMTY2IDExQkY7Q0YxODsxMTBGIDExNjYgMTFCRjsgIyAo7LyYOyDsvJg7IOGEj+GFpuGGvzsg7LyYOyDhhI/hhabhhr87ICkgSEFOR1VMIFNZTExBQkxFIEtFSworQ0YxOTtDRjE5OzExMEYgMTE2NiAxMUMwO0NGMTk7MTEwRiAxMTY2IDExQzA7ICMgKOy8mTsg7LyZOyDhhI/hhabhh4A7IOy8mTsg4YSP4YWm4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBLRVQKK0NGMUE7Q0YxQTsxMTBGIDExNjYgMTFDMTtDRjFBOzExMEYgMTE2NiAxMUMxOyAjICjsvJo7IOy8mjsg4YSP4YWm4YeBOyDsvJo7IOGEj+GFpuGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgS0VQCitDRjFCO0NGMUI7MTEwRiAxMTY2IDExQzI7Q0YxQjsxMTBGIDExNjYgMTFDMjsgIyAo7LybOyDsvJs7IOGEj+GFpuGHgjsg7LybOyDhhI/hhabhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEtFSAorQ0YxQztDRjFDOzExMEYgMTE2NztDRjFDOzExMEYgMTE2NzsgIyAo7LycOyDsvJw7IOGEj+GFpzsg7LycOyDhhI/hhac7ICkgSEFOR1VMIFNZTExBQkxFIEtZRU8KK0NGMUQ7Q0YxRDsxMTBGIDExNjcgMTFBODtDRjFEOzExMEYgMTE2NyAxMUE4OyAjICjsvJ07IOy8nTsg4YSP4YWn4YaoOyDsvJ07IOGEj+GFp+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgS1lFT0cKK0NGMUU7Q0YxRTsxMTBGIDExNjcgMTFBOTtDRjFFOzExMEYgMTE2NyAxMUE5OyAjICjsvJ47IOy8njsg4YSP4YWn4YapOyDsvJ47IOGEj+GFp+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgS1lFT0dHCitDRjFGO0NGMUY7MTEwRiAxMTY3IDExQUE7Q0YxRjsxMTBGIDExNjcgMTFBQTsgIyAo7LyfOyDsvJ87IOGEj+GFp+GGqjsg7LyfOyDhhI/hhafhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEtZRU9HUworQ0YyMDtDRjIwOzExMEYgMTE2NyAxMUFCO0NGMjA7MTEwRiAxMTY3IDExQUI7ICMgKOy8oDsg7LygOyDhhI/hhafhhqs7IOy8oDsg4YSP4YWn4YarOyApIEhBTkdVTCBTWUxMQUJMRSBLWUVPTgorQ0YyMTtDRjIxOzExMEYgMTE2NyAxMUFDO0NGMjE7MTEwRiAxMTY3IDExQUM7ICMgKOy8oTsg7LyhOyDhhI/hhafhhqw7IOy8oTsg4YSP4YWn4YasOyApIEhBTkdVTCBTWUxMQUJMRSBLWUVPTkoKK0NGMjI7Q0YyMjsxMTBGIDExNjcgMTFBRDtDRjIyOzExMEYgMTE2NyAxMUFEOyAjICjsvKI7IOy8ojsg4YSP4YWn4YatOyDsvKI7IOGEj+GFp+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgS1lFT05ICitDRjIzO0NGMjM7MTEwRiAxMTY3IDExQUU7Q0YyMzsxMTBGIDExNjcgMTFBRTsgIyAo7LyjOyDsvKM7IOGEj+GFp+GGrjsg7LyjOyDhhI/hhafhhq47ICkgSEFOR1VMIFNZTExBQkxFIEtZRU9ECitDRjI0O0NGMjQ7MTEwRiAxMTY3IDExQUY7Q0YyNDsxMTBGIDExNjcgMTFBRjsgIyAo7LykOyDsvKQ7IOGEj+GFp+GGrzsg7LykOyDhhI/hhafhhq87ICkgSEFOR1VMIFNZTExBQkxFIEtZRU9MCitDRjI1O0NGMjU7MTEwRiAxMTY3IDExQjA7Q0YyNTsxMTBGIDExNjcgMTFCMDsgIyAo7LylOyDsvKU7IOGEj+GFp+GGsDsg7LylOyDhhI/hhafhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEtZRU9MRworQ0YyNjtDRjI2OzExMEYgMTE2NyAxMUIxO0NGMjY7MTEwRiAxMTY3IDExQjE7ICMgKOy8pjsg7LymOyDhhI/hhafhhrE7IOy8pjsg4YSP4YWn4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBLWUVPTE0KK0NGMjc7Q0YyNzsxMTBGIDExNjcgMTFCMjtDRjI3OzExMEYgMTE2NyAxMUIyOyAjICjsvKc7IOy8pzsg4YSP4YWn4YayOyDsvKc7IOGEj+GFp+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgS1lFT0xCCitDRjI4O0NGMjg7MTEwRiAxMTY3IDExQjM7Q0YyODsxMTBGIDExNjcgMTFCMzsgIyAo7LyoOyDsvKg7IOGEj+GFp+GGszsg7LyoOyDhhI/hhafhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEtZRU9MUworQ0YyOTtDRjI5OzExMEYgMTE2NyAxMUI0O0NGMjk7MTEwRiAxMTY3IDExQjQ7ICMgKOy8qTsg7LypOyDhhI/hhafhhrQ7IOy8qTsg4YSP4YWn4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBLWUVPTFQKK0NGMkE7Q0YyQTsxMTBGIDExNjcgMTFCNTtDRjJBOzExMEYgMTE2NyAxMUI1OyAjICjsvKo7IOy8qjsg4YSP4YWn4Ya1OyDsvKo7IOGEj+GFp+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgS1lFT0xQCitDRjJCO0NGMkI7MTEwRiAxMTY3IDExQjY7Q0YyQjsxMTBGIDExNjcgMTFCNjsgIyAo7LyrOyDsvKs7IOGEj+GFp+GGtjsg7LyrOyDhhI/hhafhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEtZRU9MSAorQ0YyQztDRjJDOzExMEYgMTE2NyAxMUI3O0NGMkM7MTEwRiAxMTY3IDExQjc7ICMgKOy8rDsg7LysOyDhhI/hhafhhrc7IOy8rDsg4YSP4YWn4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBLWUVPTQorQ0YyRDtDRjJEOzExMEYgMTE2NyAxMUI4O0NGMkQ7MTEwRiAxMTY3IDExQjg7ICMgKOy8rTsg7LytOyDhhI/hhafhhrg7IOy8rTsg4YSP4YWn4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBLWUVPQgorQ0YyRTtDRjJFOzExMEYgMTE2NyAxMUI5O0NGMkU7MTEwRiAxMTY3IDExQjk7ICMgKOy8rjsg7LyuOyDhhI/hhafhhrk7IOy8rjsg4YSP4YWn4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBLWUVPQlMKK0NGMkY7Q0YyRjsxMTBGIDExNjcgMTFCQTtDRjJGOzExMEYgMTE2NyAxMUJBOyAjICjsvK87IOy8rzsg4YSP4YWn4Ya6OyDsvK87IOGEj+GFp+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgS1lFT1MKK0NGMzA7Q0YzMDsxMTBGIDExNjcgMTFCQjtDRjMwOzExMEYgMTE2NyAxMUJCOyAjICjsvLA7IOy8sDsg4YSP4YWn4Ya7OyDsvLA7IOGEj+GFp+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgS1lFT1NTCitDRjMxO0NGMzE7MTEwRiAxMTY3IDExQkM7Q0YzMTsxMTBGIDExNjcgMTFCQzsgIyAo7LyxOyDsvLE7IOGEj+GFp+GGvDsg7LyxOyDhhI/hhafhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEtZRU9ORworQ0YzMjtDRjMyOzExMEYgMTE2NyAxMUJEO0NGMzI7MTEwRiAxMTY3IDExQkQ7ICMgKOy8sjsg7LyyOyDhhI/hhafhhr07IOy8sjsg4YSP4YWn4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBLWUVPSgorQ0YzMztDRjMzOzExMEYgMTE2NyAxMUJFO0NGMzM7MTEwRiAxMTY3IDExQkU7ICMgKOy8szsg7LyzOyDhhI/hhafhhr47IOy8szsg4YSP4YWn4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBLWUVPQworQ0YzNDtDRjM0OzExMEYgMTE2NyAxMUJGO0NGMzQ7MTEwRiAxMTY3IDExQkY7ICMgKOy8tDsg7Ly0OyDhhI/hhafhhr87IOy8tDsg4YSP4YWn4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBLWUVPSworQ0YzNTtDRjM1OzExMEYgMTE2NyAxMUMwO0NGMzU7MTEwRiAxMTY3IDExQzA7ICMgKOy8tTsg7Ly1OyDhhI/hhafhh4A7IOy8tTsg4YSP4YWn4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBLWUVPVAorQ0YzNjtDRjM2OzExMEYgMTE2NyAxMUMxO0NGMzY7MTEwRiAxMTY3IDExQzE7ICMgKOy8tjsg7Ly2OyDhhI/hhafhh4E7IOy8tjsg4YSP4YWn4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBLWUVPUAorQ0YzNztDRjM3OzExMEYgMTE2NyAxMUMyO0NGMzc7MTEwRiAxMTY3IDExQzI7ICMgKOy8tzsg7Ly3OyDhhI/hhafhh4I7IOy8tzsg4YSP4YWn4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBLWUVPSAorQ0YzODtDRjM4OzExMEYgMTE2ODtDRjM4OzExMEYgMTE2ODsgIyAo7Ly4OyDsvLg7IOGEj+GFqDsg7Ly4OyDhhI/hhag7ICkgSEFOR1VMIFNZTExBQkxFIEtZRQorQ0YzOTtDRjM5OzExMEYgMTE2OCAxMUE4O0NGMzk7MTEwRiAxMTY4IDExQTg7ICMgKOy8uTsg7Ly5OyDhhI/hhajhhqg7IOy8uTsg4YSP4YWo4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBLWUVHCitDRjNBO0NGM0E7MTEwRiAxMTY4IDExQTk7Q0YzQTsxMTBGIDExNjggMTFBOTsgIyAo7Ly6OyDsvLo7IOGEj+GFqOGGqTsg7Ly6OyDhhI/hhajhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEtZRUdHCitDRjNCO0NGM0I7MTEwRiAxMTY4IDExQUE7Q0YzQjsxMTBGIDExNjggMTFBQTsgIyAo7Ly7OyDsvLs7IOGEj+GFqOGGqjsg7Ly7OyDhhI/hhajhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEtZRUdTCitDRjNDO0NGM0M7MTEwRiAxMTY4IDExQUI7Q0YzQzsxMTBGIDExNjggMTFBQjsgIyAo7Ly8OyDsvLw7IOGEj+GFqOGGqzsg7Ly8OyDhhI/hhajhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEtZRU4KK0NGM0Q7Q0YzRDsxMTBGIDExNjggMTFBQztDRjNEOzExMEYgMTE2OCAxMUFDOyAjICjsvL07IOy8vTsg4YSP4YWo4YasOyDsvL07IOGEj+GFqOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgS1lFTkoKK0NGM0U7Q0YzRTsxMTBGIDExNjggMTFBRDtDRjNFOzExMEYgMTE2OCAxMUFEOyAjICjsvL47IOy8vjsg4YSP4YWo4YatOyDsvL47IOGEj+GFqOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgS1lFTkgKK0NGM0Y7Q0YzRjsxMTBGIDExNjggMTFBRTtDRjNGOzExMEYgMTE2OCAxMUFFOyAjICjsvL87IOy8vzsg4YSP4YWo4YauOyDsvL87IOGEj+GFqOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgS1lFRAorQ0Y0MDtDRjQwOzExMEYgMTE2OCAxMUFGO0NGNDA7MTEwRiAxMTY4IDExQUY7ICMgKOy9gDsg7L2AOyDhhI/hhajhhq87IOy9gDsg4YSP4YWo4YavOyApIEhBTkdVTCBTWUxMQUJMRSBLWUVMCitDRjQxO0NGNDE7MTEwRiAxMTY4IDExQjA7Q0Y0MTsxMTBGIDExNjggMTFCMDsgIyAo7L2BOyDsvYE7IOGEj+GFqOGGsDsg7L2BOyDhhI/hhajhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEtZRUxHCitDRjQyO0NGNDI7MTEwRiAxMTY4IDExQjE7Q0Y0MjsxMTBGIDExNjggMTFCMTsgIyAo7L2COyDsvYI7IOGEj+GFqOGGsTsg7L2COyDhhI/hhajhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEtZRUxNCitDRjQzO0NGNDM7MTEwRiAxMTY4IDExQjI7Q0Y0MzsxMTBGIDExNjggMTFCMjsgIyAo7L2DOyDsvYM7IOGEj+GFqOGGsjsg7L2DOyDhhI/hhajhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEtZRUxCCitDRjQ0O0NGNDQ7MTEwRiAxMTY4IDExQjM7Q0Y0NDsxMTBGIDExNjggMTFCMzsgIyAo7L2EOyDsvYQ7IOGEj+GFqOGGszsg7L2EOyDhhI/hhajhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEtZRUxTCitDRjQ1O0NGNDU7MTEwRiAxMTY4IDExQjQ7Q0Y0NTsxMTBGIDExNjggMTFCNDsgIyAo7L2FOyDsvYU7IOGEj+GFqOGGtDsg7L2FOyDhhI/hhajhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEtZRUxUCitDRjQ2O0NGNDY7MTEwRiAxMTY4IDExQjU7Q0Y0NjsxMTBGIDExNjggMTFCNTsgIyAo7L2GOyDsvYY7IOGEj+GFqOGGtTsg7L2GOyDhhI/hhajhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEtZRUxQCitDRjQ3O0NGNDc7MTEwRiAxMTY4IDExQjY7Q0Y0NzsxMTBGIDExNjggMTFCNjsgIyAo7L2HOyDsvYc7IOGEj+GFqOGGtjsg7L2HOyDhhI/hhajhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEtZRUxICitDRjQ4O0NGNDg7MTEwRiAxMTY4IDExQjc7Q0Y0ODsxMTBGIDExNjggMTFCNzsgIyAo7L2IOyDsvYg7IOGEj+GFqOGGtzsg7L2IOyDhhI/hhajhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEtZRU0KK0NGNDk7Q0Y0OTsxMTBGIDExNjggMTFCODtDRjQ5OzExMEYgMTE2OCAxMUI4OyAjICjsvYk7IOy9iTsg4YSP4YWo4Ya4OyDsvYk7IOGEj+GFqOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgS1lFQgorQ0Y0QTtDRjRBOzExMEYgMTE2OCAxMUI5O0NGNEE7MTEwRiAxMTY4IDExQjk7ICMgKOy9ijsg7L2KOyDhhI/hhajhhrk7IOy9ijsg4YSP4YWo4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBLWUVCUworQ0Y0QjtDRjRCOzExMEYgMTE2OCAxMUJBO0NGNEI7MTEwRiAxMTY4IDExQkE7ICMgKOy9izsg7L2LOyDhhI/hhajhhro7IOy9izsg4YSP4YWo4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBLWUVTCitDRjRDO0NGNEM7MTEwRiAxMTY4IDExQkI7Q0Y0QzsxMTBGIDExNjggMTFCQjsgIyAo7L2MOyDsvYw7IOGEj+GFqOGGuzsg7L2MOyDhhI/hhajhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEtZRVNTCitDRjREO0NGNEQ7MTEwRiAxMTY4IDExQkM7Q0Y0RDsxMTBGIDExNjggMTFCQzsgIyAo7L2NOyDsvY07IOGEj+GFqOGGvDsg7L2NOyDhhI/hhajhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEtZRU5HCitDRjRFO0NGNEU7MTEwRiAxMTY4IDExQkQ7Q0Y0RTsxMTBGIDExNjggMTFCRDsgIyAo7L2OOyDsvY47IOGEj+GFqOGGvTsg7L2OOyDhhI/hhajhhr07ICkgSEFOR1VMIFNZTExBQkxFIEtZRUoKK0NGNEY7Q0Y0RjsxMTBGIDExNjggMTFCRTtDRjRGOzExMEYgMTE2OCAxMUJFOyAjICjsvY87IOy9jzsg4YSP4YWo4Ya+OyDsvY87IOGEj+GFqOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgS1lFQworQ0Y1MDtDRjUwOzExMEYgMTE2OCAxMUJGO0NGNTA7MTEwRiAxMTY4IDExQkY7ICMgKOy9kDsg7L2QOyDhhI/hhajhhr87IOy9kDsg4YSP4YWo4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBLWUVLCitDRjUxO0NGNTE7MTEwRiAxMTY4IDExQzA7Q0Y1MTsxMTBGIDExNjggMTFDMDsgIyAo7L2ROyDsvZE7IOGEj+GFqOGHgDsg7L2ROyDhhI/hhajhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEtZRVQKK0NGNTI7Q0Y1MjsxMTBGIDExNjggMTFDMTtDRjUyOzExMEYgMTE2OCAxMUMxOyAjICjsvZI7IOy9kjsg4YSP4YWo4YeBOyDsvZI7IOGEj+GFqOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgS1lFUAorQ0Y1MztDRjUzOzExMEYgMTE2OCAxMUMyO0NGNTM7MTEwRiAxMTY4IDExQzI7ICMgKOy9kzsg7L2TOyDhhI/hhajhh4I7IOy9kzsg4YSP4YWo4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBLWUVICitDRjU0O0NGNTQ7MTEwRiAxMTY5O0NGNTQ7MTEwRiAxMTY5OyAjICjsvZQ7IOy9lDsg4YSP4YWpOyDsvZQ7IOGEj+GFqTsgKSBIQU5HVUwgU1lMTEFCTEUgS08KK0NGNTU7Q0Y1NTsxMTBGIDExNjkgMTFBODtDRjU1OzExMEYgMTE2OSAxMUE4OyAjICjsvZU7IOy9lTsg4YSP4YWp4YaoOyDsvZU7IOGEj+GFqeGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgS09HCitDRjU2O0NGNTY7MTEwRiAxMTY5IDExQTk7Q0Y1NjsxMTBGIDExNjkgMTFBOTsgIyAo7L2WOyDsvZY7IOGEj+GFqeGGqTsg7L2WOyDhhI/hhanhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEtPR0cKK0NGNTc7Q0Y1NzsxMTBGIDExNjkgMTFBQTtDRjU3OzExMEYgMTE2OSAxMUFBOyAjICjsvZc7IOy9lzsg4YSP4YWp4YaqOyDsvZc7IOGEj+GFqeGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgS09HUworQ0Y1ODtDRjU4OzExMEYgMTE2OSAxMUFCO0NGNTg7MTEwRiAxMTY5IDExQUI7ICMgKOy9mDsg7L2YOyDhhI/hhanhhqs7IOy9mDsg4YSP4YWp4YarOyApIEhBTkdVTCBTWUxMQUJMRSBLT04KK0NGNTk7Q0Y1OTsxMTBGIDExNjkgMTFBQztDRjU5OzExMEYgMTE2OSAxMUFDOyAjICjsvZk7IOy9mTsg4YSP4YWp4YasOyDsvZk7IOGEj+GFqeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgS09OSgorQ0Y1QTtDRjVBOzExMEYgMTE2OSAxMUFEO0NGNUE7MTEwRiAxMTY5IDExQUQ7ICMgKOy9mjsg7L2aOyDhhI/hhanhhq07IOy9mjsg4YSP4YWp4YatOyApIEhBTkdVTCBTWUxMQUJMRSBLT05ICitDRjVCO0NGNUI7MTEwRiAxMTY5IDExQUU7Q0Y1QjsxMTBGIDExNjkgMTFBRTsgIyAo7L2bOyDsvZs7IOGEj+GFqeGGrjsg7L2bOyDhhI/hhanhhq47ICkgSEFOR1VMIFNZTExBQkxFIEtPRAorQ0Y1QztDRjVDOzExMEYgMTE2OSAxMUFGO0NGNUM7MTEwRiAxMTY5IDExQUY7ICMgKOy9nDsg7L2cOyDhhI/hhanhhq87IOy9nDsg4YSP4YWp4YavOyApIEhBTkdVTCBTWUxMQUJMRSBLT0wKK0NGNUQ7Q0Y1RDsxMTBGIDExNjkgMTFCMDtDRjVEOzExMEYgMTE2OSAxMUIwOyAjICjsvZ07IOy9nTsg4YSP4YWp4YawOyDsvZ07IOGEj+GFqeGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgS09MRworQ0Y1RTtDRjVFOzExMEYgMTE2OSAxMUIxO0NGNUU7MTEwRiAxMTY5IDExQjE7ICMgKOy9njsg7L2eOyDhhI/hhanhhrE7IOy9njsg4YSP4YWp4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBLT0xNCitDRjVGO0NGNUY7MTEwRiAxMTY5IDExQjI7Q0Y1RjsxMTBGIDExNjkgMTFCMjsgIyAo7L2fOyDsvZ87IOGEj+GFqeGGsjsg7L2fOyDhhI/hhanhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEtPTEIKK0NGNjA7Q0Y2MDsxMTBGIDExNjkgMTFCMztDRjYwOzExMEYgMTE2OSAxMUIzOyAjICjsvaA7IOy9oDsg4YSP4YWp4YazOyDsvaA7IOGEj+GFqeGGszsgKSBIQU5HVUwgU1lMTEFCTEUgS09MUworQ0Y2MTtDRjYxOzExMEYgMTE2OSAxMUI0O0NGNjE7MTEwRiAxMTY5IDExQjQ7ICMgKOy9oTsg7L2hOyDhhI/hhanhhrQ7IOy9oTsg4YSP4YWp4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBLT0xUCitDRjYyO0NGNjI7MTEwRiAxMTY5IDExQjU7Q0Y2MjsxMTBGIDExNjkgMTFCNTsgIyAo7L2iOyDsvaI7IOGEj+GFqeGGtTsg7L2iOyDhhI/hhanhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEtPTFAKK0NGNjM7Q0Y2MzsxMTBGIDExNjkgMTFCNjtDRjYzOzExMEYgMTE2OSAxMUI2OyAjICjsvaM7IOy9ozsg4YSP4YWp4Ya2OyDsvaM7IOGEj+GFqeGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgS09MSAorQ0Y2NDtDRjY0OzExMEYgMTE2OSAxMUI3O0NGNjQ7MTEwRiAxMTY5IDExQjc7ICMgKOy9pDsg7L2kOyDhhI/hhanhhrc7IOy9pDsg4YSP4YWp4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBLT00KK0NGNjU7Q0Y2NTsxMTBGIDExNjkgMTFCODtDRjY1OzExMEYgMTE2OSAxMUI4OyAjICjsvaU7IOy9pTsg4YSP4YWp4Ya4OyDsvaU7IOGEj+GFqeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgS09CCitDRjY2O0NGNjY7MTEwRiAxMTY5IDExQjk7Q0Y2NjsxMTBGIDExNjkgMTFCOTsgIyAo7L2mOyDsvaY7IOGEj+GFqeGGuTsg7L2mOyDhhI/hhanhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEtPQlMKK0NGNjc7Q0Y2NzsxMTBGIDExNjkgMTFCQTtDRjY3OzExMEYgMTE2OSAxMUJBOyAjICjsvac7IOy9pzsg4YSP4YWp4Ya6OyDsvac7IOGEj+GFqeGGujsgKSBIQU5HVUwgU1lMTEFCTEUgS09TCitDRjY4O0NGNjg7MTEwRiAxMTY5IDExQkI7Q0Y2ODsxMTBGIDExNjkgMTFCQjsgIyAo7L2oOyDsvag7IOGEj+GFqeGGuzsg7L2oOyDhhI/hhanhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEtPU1MKK0NGNjk7Q0Y2OTsxMTBGIDExNjkgMTFCQztDRjY5OzExMEYgMTE2OSAxMUJDOyAjICjsvak7IOy9qTsg4YSP4YWp4Ya8OyDsvak7IOGEj+GFqeGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgS09ORworQ0Y2QTtDRjZBOzExMEYgMTE2OSAxMUJEO0NGNkE7MTEwRiAxMTY5IDExQkQ7ICMgKOy9qjsg7L2qOyDhhI/hhanhhr07IOy9qjsg4YSP4YWp4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBLT0oKK0NGNkI7Q0Y2QjsxMTBGIDExNjkgMTFCRTtDRjZCOzExMEYgMTE2OSAxMUJFOyAjICjsvas7IOy9qzsg4YSP4YWp4Ya+OyDsvas7IOGEj+GFqeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgS09DCitDRjZDO0NGNkM7MTEwRiAxMTY5IDExQkY7Q0Y2QzsxMTBGIDExNjkgMTFCRjsgIyAo7L2sOyDsvaw7IOGEj+GFqeGGvzsg7L2sOyDhhI/hhanhhr87ICkgSEFOR1VMIFNZTExBQkxFIEtPSworQ0Y2RDtDRjZEOzExMEYgMTE2OSAxMUMwO0NGNkQ7MTEwRiAxMTY5IDExQzA7ICMgKOy9rTsg7L2tOyDhhI/hhanhh4A7IOy9rTsg4YSP4YWp4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBLT1QKK0NGNkU7Q0Y2RTsxMTBGIDExNjkgMTFDMTtDRjZFOzExMEYgMTE2OSAxMUMxOyAjICjsva47IOy9rjsg4YSP4YWp4YeBOyDsva47IOGEj+GFqeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgS09QCitDRjZGO0NGNkY7MTEwRiAxMTY5IDExQzI7Q0Y2RjsxMTBGIDExNjkgMTFDMjsgIyAo7L2vOyDsva87IOGEj+GFqeGHgjsg7L2vOyDhhI/hhanhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEtPSAorQ0Y3MDtDRjcwOzExMEYgMTE2QTtDRjcwOzExMEYgMTE2QTsgIyAo7L2wOyDsvbA7IOGEj+GFqjsg7L2wOyDhhI/hhao7ICkgSEFOR1VMIFNZTExBQkxFIEtXQQorQ0Y3MTtDRjcxOzExMEYgMTE2QSAxMUE4O0NGNzE7MTEwRiAxMTZBIDExQTg7ICMgKOy9sTsg7L2xOyDhhI/hharhhqg7IOy9sTsg4YSP4YWq4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBLV0FHCitDRjcyO0NGNzI7MTEwRiAxMTZBIDExQTk7Q0Y3MjsxMTBGIDExNkEgMTFBOTsgIyAo7L2yOyDsvbI7IOGEj+GFquGGqTsg7L2yOyDhhI/hharhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEtXQUdHCitDRjczO0NGNzM7MTEwRiAxMTZBIDExQUE7Q0Y3MzsxMTBGIDExNkEgMTFBQTsgIyAo7L2zOyDsvbM7IOGEj+GFquGGqjsg7L2zOyDhhI/hharhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEtXQUdTCitDRjc0O0NGNzQ7MTEwRiAxMTZBIDExQUI7Q0Y3NDsxMTBGIDExNkEgMTFBQjsgIyAo7L20OyDsvbQ7IOGEj+GFquGGqzsg7L20OyDhhI/hharhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEtXQU4KK0NGNzU7Q0Y3NTsxMTBGIDExNkEgMTFBQztDRjc1OzExMEYgMTE2QSAxMUFDOyAjICjsvbU7IOy9tTsg4YSP4YWq4YasOyDsvbU7IOGEj+GFquGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgS1dBTkoKK0NGNzY7Q0Y3NjsxMTBGIDExNkEgMTFBRDtDRjc2OzExMEYgMTE2QSAxMUFEOyAjICjsvbY7IOy9tjsg4YSP4YWq4YatOyDsvbY7IOGEj+GFquGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgS1dBTkgKK0NGNzc7Q0Y3NzsxMTBGIDExNkEgMTFBRTtDRjc3OzExMEYgMTE2QSAxMUFFOyAjICjsvbc7IOy9tzsg4YSP4YWq4YauOyDsvbc7IOGEj+GFquGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgS1dBRAorQ0Y3ODtDRjc4OzExMEYgMTE2QSAxMUFGO0NGNzg7MTEwRiAxMTZBIDExQUY7ICMgKOy9uDsg7L24OyDhhI/hharhhq87IOy9uDsg4YSP4YWq4YavOyApIEhBTkdVTCBTWUxMQUJMRSBLV0FMCitDRjc5O0NGNzk7MTEwRiAxMTZBIDExQjA7Q0Y3OTsxMTBGIDExNkEgMTFCMDsgIyAo7L25OyDsvbk7IOGEj+GFquGGsDsg7L25OyDhhI/hharhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEtXQUxHCitDRjdBO0NGN0E7MTEwRiAxMTZBIDExQjE7Q0Y3QTsxMTBGIDExNkEgMTFCMTsgIyAo7L26OyDsvbo7IOGEj+GFquGGsTsg7L26OyDhhI/hharhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEtXQUxNCitDRjdCO0NGN0I7MTEwRiAxMTZBIDExQjI7Q0Y3QjsxMTBGIDExNkEgMTFCMjsgIyAo7L27OyDsvbs7IOGEj+GFquGGsjsg7L27OyDhhI/hharhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEtXQUxCCitDRjdDO0NGN0M7MTEwRiAxMTZBIDExQjM7Q0Y3QzsxMTBGIDExNkEgMTFCMzsgIyAo7L28OyDsvbw7IOGEj+GFquGGszsg7L28OyDhhI/hharhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEtXQUxTCitDRjdEO0NGN0Q7MTEwRiAxMTZBIDExQjQ7Q0Y3RDsxMTBGIDExNkEgMTFCNDsgIyAo7L29OyDsvb07IOGEj+GFquGGtDsg7L29OyDhhI/hharhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEtXQUxUCitDRjdFO0NGN0U7MTEwRiAxMTZBIDExQjU7Q0Y3RTsxMTBGIDExNkEgMTFCNTsgIyAo7L2+OyDsvb47IOGEj+GFquGGtTsg7L2+OyDhhI/hharhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEtXQUxQCitDRjdGO0NGN0Y7MTEwRiAxMTZBIDExQjY7Q0Y3RjsxMTBGIDExNkEgMTFCNjsgIyAo7L2/OyDsvb87IOGEj+GFquGGtjsg7L2/OyDhhI/hharhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEtXQUxICitDRjgwO0NGODA7MTEwRiAxMTZBIDExQjc7Q0Y4MDsxMTBGIDExNkEgMTFCNzsgIyAo7L6AOyDsvoA7IOGEj+GFquGGtzsg7L6AOyDhhI/hharhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEtXQU0KK0NGODE7Q0Y4MTsxMTBGIDExNkEgMTFCODtDRjgxOzExMEYgMTE2QSAxMUI4OyAjICjsvoE7IOy+gTsg4YSP4YWq4Ya4OyDsvoE7IOGEj+GFquGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgS1dBQgorQ0Y4MjtDRjgyOzExMEYgMTE2QSAxMUI5O0NGODI7MTEwRiAxMTZBIDExQjk7ICMgKOy+gjsg7L6COyDhhI/hharhhrk7IOy+gjsg4YSP4YWq4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBLV0FCUworQ0Y4MztDRjgzOzExMEYgMTE2QSAxMUJBO0NGODM7MTEwRiAxMTZBIDExQkE7ICMgKOy+gzsg7L6DOyDhhI/hharhhro7IOy+gzsg4YSP4YWq4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBLV0FTCitDRjg0O0NGODQ7MTEwRiAxMTZBIDExQkI7Q0Y4NDsxMTBGIDExNkEgMTFCQjsgIyAo7L6EOyDsvoQ7IOGEj+GFquGGuzsg7L6EOyDhhI/hharhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEtXQVNTCitDRjg1O0NGODU7MTEwRiAxMTZBIDExQkM7Q0Y4NTsxMTBGIDExNkEgMTFCQzsgIyAo7L6FOyDsvoU7IOGEj+GFquGGvDsg7L6FOyDhhI/hharhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEtXQU5HCitDRjg2O0NGODY7MTEwRiAxMTZBIDExQkQ7Q0Y4NjsxMTBGIDExNkEgMTFCRDsgIyAo7L6GOyDsvoY7IOGEj+GFquGGvTsg7L6GOyDhhI/hharhhr07ICkgSEFOR1VMIFNZTExBQkxFIEtXQUoKK0NGODc7Q0Y4NzsxMTBGIDExNkEgMTFCRTtDRjg3OzExMEYgMTE2QSAxMUJFOyAjICjsvoc7IOy+hzsg4YSP4YWq4Ya+OyDsvoc7IOGEj+GFquGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgS1dBQworQ0Y4ODtDRjg4OzExMEYgMTE2QSAxMUJGO0NGODg7MTEwRiAxMTZBIDExQkY7ICMgKOy+iDsg7L6IOyDhhI/hharhhr87IOy+iDsg4YSP4YWq4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBLV0FLCitDRjg5O0NGODk7MTEwRiAxMTZBIDExQzA7Q0Y4OTsxMTBGIDExNkEgMTFDMDsgIyAo7L6JOyDsvok7IOGEj+GFquGHgDsg7L6JOyDhhI/hharhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEtXQVQKK0NGOEE7Q0Y4QTsxMTBGIDExNkEgMTFDMTtDRjhBOzExMEYgMTE2QSAxMUMxOyAjICjsvoo7IOy+ijsg4YSP4YWq4YeBOyDsvoo7IOGEj+GFquGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgS1dBUAorQ0Y4QjtDRjhCOzExMEYgMTE2QSAxMUMyO0NGOEI7MTEwRiAxMTZBIDExQzI7ICMgKOy+izsg7L6LOyDhhI/hharhh4I7IOy+izsg4YSP4YWq4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBLV0FICitDRjhDO0NGOEM7MTEwRiAxMTZCO0NGOEM7MTEwRiAxMTZCOyAjICjsvow7IOy+jDsg4YSP4YWrOyDsvow7IOGEj+GFqzsgKSBIQU5HVUwgU1lMTEFCTEUgS1dBRQorQ0Y4RDtDRjhEOzExMEYgMTE2QiAxMUE4O0NGOEQ7MTEwRiAxMTZCIDExQTg7ICMgKOy+jTsg7L6NOyDhhI/hhavhhqg7IOy+jTsg4YSP4YWr4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBLV0FFRworQ0Y4RTtDRjhFOzExMEYgMTE2QiAxMUE5O0NGOEU7MTEwRiAxMTZCIDExQTk7ICMgKOy+jjsg7L6OOyDhhI/hhavhhqk7IOy+jjsg4YSP4YWr4YapOyApIEhBTkdVTCBTWUxMQUJMRSBLV0FFR0cKK0NGOEY7Q0Y4RjsxMTBGIDExNkIgMTFBQTtDRjhGOzExMEYgMTE2QiAxMUFBOyAjICjsvo87IOy+jzsg4YSP4YWr4YaqOyDsvo87IOGEj+GFq+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgS1dBRUdTCitDRjkwO0NGOTA7MTEwRiAxMTZCIDExQUI7Q0Y5MDsxMTBGIDExNkIgMTFBQjsgIyAo7L6QOyDsvpA7IOGEj+GFq+GGqzsg7L6QOyDhhI/hhavhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEtXQUVOCitDRjkxO0NGOTE7MTEwRiAxMTZCIDExQUM7Q0Y5MTsxMTBGIDExNkIgMTFBQzsgIyAo7L6ROyDsvpE7IOGEj+GFq+GGrDsg7L6ROyDhhI/hhavhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEtXQUVOSgorQ0Y5MjtDRjkyOzExMEYgMTE2QiAxMUFEO0NGOTI7MTEwRiAxMTZCIDExQUQ7ICMgKOy+kjsg7L6SOyDhhI/hhavhhq07IOy+kjsg4YSP4YWr4YatOyApIEhBTkdVTCBTWUxMQUJMRSBLV0FFTkgKK0NGOTM7Q0Y5MzsxMTBGIDExNkIgMTFBRTtDRjkzOzExMEYgMTE2QiAxMUFFOyAjICjsvpM7IOy+kzsg4YSP4YWr4YauOyDsvpM7IOGEj+GFq+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgS1dBRUQKK0NGOTQ7Q0Y5NDsxMTBGIDExNkIgMTFBRjtDRjk0OzExMEYgMTE2QiAxMUFGOyAjICjsvpQ7IOy+lDsg4YSP4YWr4YavOyDsvpQ7IOGEj+GFq+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgS1dBRUwKK0NGOTU7Q0Y5NTsxMTBGIDExNkIgMTFCMDtDRjk1OzExMEYgMTE2QiAxMUIwOyAjICjsvpU7IOy+lTsg4YSP4YWr4YawOyDsvpU7IOGEj+GFq+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgS1dBRUxHCitDRjk2O0NGOTY7MTEwRiAxMTZCIDExQjE7Q0Y5NjsxMTBGIDExNkIgMTFCMTsgIyAo7L6WOyDsvpY7IOGEj+GFq+GGsTsg7L6WOyDhhI/hhavhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEtXQUVMTQorQ0Y5NztDRjk3OzExMEYgMTE2QiAxMUIyO0NGOTc7MTEwRiAxMTZCIDExQjI7ICMgKOy+lzsg7L6XOyDhhI/hhavhhrI7IOy+lzsg4YSP4YWr4YayOyApIEhBTkdVTCBTWUxMQUJMRSBLV0FFTEIKK0NGOTg7Q0Y5ODsxMTBGIDExNkIgMTFCMztDRjk4OzExMEYgMTE2QiAxMUIzOyAjICjsvpg7IOy+mDsg4YSP4YWr4YazOyDsvpg7IOGEj+GFq+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgS1dBRUxTCitDRjk5O0NGOTk7MTEwRiAxMTZCIDExQjQ7Q0Y5OTsxMTBGIDExNkIgMTFCNDsgIyAo7L6ZOyDsvpk7IOGEj+GFq+GGtDsg7L6ZOyDhhI/hhavhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEtXQUVMVAorQ0Y5QTtDRjlBOzExMEYgMTE2QiAxMUI1O0NGOUE7MTEwRiAxMTZCIDExQjU7ICMgKOy+mjsg7L6aOyDhhI/hhavhhrU7IOy+mjsg4YSP4YWr4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBLV0FFTFAKK0NGOUI7Q0Y5QjsxMTBGIDExNkIgMTFCNjtDRjlCOzExMEYgMTE2QiAxMUI2OyAjICjsvps7IOy+mzsg4YSP4YWr4Ya2OyDsvps7IOGEj+GFq+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgS1dBRUxICitDRjlDO0NGOUM7MTEwRiAxMTZCIDExQjc7Q0Y5QzsxMTBGIDExNkIgMTFCNzsgIyAo7L6cOyDsvpw7IOGEj+GFq+GGtzsg7L6cOyDhhI/hhavhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEtXQUVNCitDRjlEO0NGOUQ7MTEwRiAxMTZCIDExQjg7Q0Y5RDsxMTBGIDExNkIgMTFCODsgIyAo7L6dOyDsvp07IOGEj+GFq+GGuDsg7L6dOyDhhI/hhavhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEtXQUVCCitDRjlFO0NGOUU7MTEwRiAxMTZCIDExQjk7Q0Y5RTsxMTBGIDExNkIgMTFCOTsgIyAo7L6eOyDsvp47IOGEj+GFq+GGuTsg7L6eOyDhhI/hhavhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEtXQUVCUworQ0Y5RjtDRjlGOzExMEYgMTE2QiAxMUJBO0NGOUY7MTEwRiAxMTZCIDExQkE7ICMgKOy+nzsg7L6fOyDhhI/hhavhhro7IOy+nzsg4YSP4YWr4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBLV0FFUworQ0ZBMDtDRkEwOzExMEYgMTE2QiAxMUJCO0NGQTA7MTEwRiAxMTZCIDExQkI7ICMgKOy+oDsg7L6gOyDhhI/hhavhhrs7IOy+oDsg4YSP4YWr4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBLV0FFU1MKK0NGQTE7Q0ZBMTsxMTBGIDExNkIgMTFCQztDRkExOzExMEYgMTE2QiAxMUJDOyAjICjsvqE7IOy+oTsg4YSP4YWr4Ya8OyDsvqE7IOGEj+GFq+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgS1dBRU5HCitDRkEyO0NGQTI7MTEwRiAxMTZCIDExQkQ7Q0ZBMjsxMTBGIDExNkIgMTFCRDsgIyAo7L6iOyDsvqI7IOGEj+GFq+GGvTsg7L6iOyDhhI/hhavhhr07ICkgSEFOR1VMIFNZTExBQkxFIEtXQUVKCitDRkEzO0NGQTM7MTEwRiAxMTZCIDExQkU7Q0ZBMzsxMTBGIDExNkIgMTFCRTsgIyAo7L6jOyDsvqM7IOGEj+GFq+GGvjsg7L6jOyDhhI/hhavhhr47ICkgSEFOR1VMIFNZTExBQkxFIEtXQUVDCitDRkE0O0NGQTQ7MTEwRiAxMTZCIDExQkY7Q0ZBNDsxMTBGIDExNkIgMTFCRjsgIyAo7L6kOyDsvqQ7IOGEj+GFq+GGvzsg7L6kOyDhhI/hhavhhr87ICkgSEFOR1VMIFNZTExBQkxFIEtXQUVLCitDRkE1O0NGQTU7MTEwRiAxMTZCIDExQzA7Q0ZBNTsxMTBGIDExNkIgMTFDMDsgIyAo7L6lOyDsvqU7IOGEj+GFq+GHgDsg7L6lOyDhhI/hhavhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEtXQUVUCitDRkE2O0NGQTY7MTEwRiAxMTZCIDExQzE7Q0ZBNjsxMTBGIDExNkIgMTFDMTsgIyAo7L6mOyDsvqY7IOGEj+GFq+GHgTsg7L6mOyDhhI/hhavhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEtXQUVQCitDRkE3O0NGQTc7MTEwRiAxMTZCIDExQzI7Q0ZBNzsxMTBGIDExNkIgMTFDMjsgIyAo7L6nOyDsvqc7IOGEj+GFq+GHgjsg7L6nOyDhhI/hhavhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEtXQUVICitDRkE4O0NGQTg7MTEwRiAxMTZDO0NGQTg7MTEwRiAxMTZDOyAjICjsvqg7IOy+qDsg4YSP4YWsOyDsvqg7IOGEj+GFrDsgKSBIQU5HVUwgU1lMTEFCTEUgS09FCitDRkE5O0NGQTk7MTEwRiAxMTZDIDExQTg7Q0ZBOTsxMTBGIDExNkMgMTFBODsgIyAo7L6pOyDsvqk7IOGEj+GFrOGGqDsg7L6pOyDhhI/hhazhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEtPRUcKK0NGQUE7Q0ZBQTsxMTBGIDExNkMgMTFBOTtDRkFBOzExMEYgMTE2QyAxMUE5OyAjICjsvqo7IOy+qjsg4YSP4YWs4YapOyDsvqo7IOGEj+GFrOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgS09FR0cKK0NGQUI7Q0ZBQjsxMTBGIDExNkMgMTFBQTtDRkFCOzExMEYgMTE2QyAxMUFBOyAjICjsvqs7IOy+qzsg4YSP4YWs4YaqOyDsvqs7IOGEj+GFrOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgS09FR1MKK0NGQUM7Q0ZBQzsxMTBGIDExNkMgMTFBQjtDRkFDOzExMEYgMTE2QyAxMUFCOyAjICjsvqw7IOy+rDsg4YSP4YWs4YarOyDsvqw7IOGEj+GFrOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgS09FTgorQ0ZBRDtDRkFEOzExMEYgMTE2QyAxMUFDO0NGQUQ7MTEwRiAxMTZDIDExQUM7ICMgKOy+rTsg7L6tOyDhhI/hhazhhqw7IOy+rTsg4YSP4YWs4YasOyApIEhBTkdVTCBTWUxMQUJMRSBLT0VOSgorQ0ZBRTtDRkFFOzExMEYgMTE2QyAxMUFEO0NGQUU7MTEwRiAxMTZDIDExQUQ7ICMgKOy+rjsg7L6uOyDhhI/hhazhhq07IOy+rjsg4YSP4YWs4YatOyApIEhBTkdVTCBTWUxMQUJMRSBLT0VOSAorQ0ZBRjtDRkFGOzExMEYgMTE2QyAxMUFFO0NGQUY7MTEwRiAxMTZDIDExQUU7ICMgKOy+rzsg7L6vOyDhhI/hhazhhq47IOy+rzsg4YSP4YWs4YauOyApIEhBTkdVTCBTWUxMQUJMRSBLT0VECitDRkIwO0NGQjA7MTEwRiAxMTZDIDExQUY7Q0ZCMDsxMTBGIDExNkMgMTFBRjsgIyAo7L6wOyDsvrA7IOGEj+GFrOGGrzsg7L6wOyDhhI/hhazhhq87ICkgSEFOR1VMIFNZTExBQkxFIEtPRUwKK0NGQjE7Q0ZCMTsxMTBGIDExNkMgMTFCMDtDRkIxOzExMEYgMTE2QyAxMUIwOyAjICjsvrE7IOy+sTsg4YSP4YWs4YawOyDsvrE7IOGEj+GFrOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgS09FTEcKK0NGQjI7Q0ZCMjsxMTBGIDExNkMgMTFCMTtDRkIyOzExMEYgMTE2QyAxMUIxOyAjICjsvrI7IOy+sjsg4YSP4YWs4YaxOyDsvrI7IOGEj+GFrOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgS09FTE0KK0NGQjM7Q0ZCMzsxMTBGIDExNkMgMTFCMjtDRkIzOzExMEYgMTE2QyAxMUIyOyAjICjsvrM7IOy+szsg4YSP4YWs4YayOyDsvrM7IOGEj+GFrOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgS09FTEIKK0NGQjQ7Q0ZCNDsxMTBGIDExNkMgMTFCMztDRkI0OzExMEYgMTE2QyAxMUIzOyAjICjsvrQ7IOy+tDsg4YSP4YWs4YazOyDsvrQ7IOGEj+GFrOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgS09FTFMKK0NGQjU7Q0ZCNTsxMTBGIDExNkMgMTFCNDtDRkI1OzExMEYgMTE2QyAxMUI0OyAjICjsvrU7IOy+tTsg4YSP4YWs4Ya0OyDsvrU7IOGEj+GFrOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgS09FTFQKK0NGQjY7Q0ZCNjsxMTBGIDExNkMgMTFCNTtDRkI2OzExMEYgMTE2QyAxMUI1OyAjICjsvrY7IOy+tjsg4YSP4YWs4Ya1OyDsvrY7IOGEj+GFrOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgS09FTFAKK0NGQjc7Q0ZCNzsxMTBGIDExNkMgMTFCNjtDRkI3OzExMEYgMTE2QyAxMUI2OyAjICjsvrc7IOy+tzsg4YSP4YWs4Ya2OyDsvrc7IOGEj+GFrOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgS09FTEgKK0NGQjg7Q0ZCODsxMTBGIDExNkMgMTFCNztDRkI4OzExMEYgMTE2QyAxMUI3OyAjICjsvrg7IOy+uDsg4YSP4YWs4Ya3OyDsvrg7IOGEj+GFrOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgS09FTQorQ0ZCOTtDRkI5OzExMEYgMTE2QyAxMUI4O0NGQjk7MTEwRiAxMTZDIDExQjg7ICMgKOy+uTsg7L65OyDhhI/hhazhhrg7IOy+uTsg4YSP4YWs4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBLT0VCCitDRkJBO0NGQkE7MTEwRiAxMTZDIDExQjk7Q0ZCQTsxMTBGIDExNkMgMTFCOTsgIyAo7L66OyDsvro7IOGEj+GFrOGGuTsg7L66OyDhhI/hhazhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEtPRUJTCitDRkJCO0NGQkI7MTEwRiAxMTZDIDExQkE7Q0ZCQjsxMTBGIDExNkMgMTFCQTsgIyAo7L67OyDsvrs7IOGEj+GFrOGGujsg7L67OyDhhI/hhazhhro7ICkgSEFOR1VMIFNZTExBQkxFIEtPRVMKK0NGQkM7Q0ZCQzsxMTBGIDExNkMgMTFCQjtDRkJDOzExMEYgMTE2QyAxMUJCOyAjICjsvrw7IOy+vDsg4YSP4YWs4Ya7OyDsvrw7IOGEj+GFrOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgS09FU1MKK0NGQkQ7Q0ZCRDsxMTBGIDExNkMgMTFCQztDRkJEOzExMEYgMTE2QyAxMUJDOyAjICjsvr07IOy+vTsg4YSP4YWs4Ya8OyDsvr07IOGEj+GFrOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgS09FTkcKK0NGQkU7Q0ZCRTsxMTBGIDExNkMgMTFCRDtDRkJFOzExMEYgMTE2QyAxMUJEOyAjICjsvr47IOy+vjsg4YSP4YWs4Ya9OyDsvr47IOGEj+GFrOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgS09FSgorQ0ZCRjtDRkJGOzExMEYgMTE2QyAxMUJFO0NGQkY7MTEwRiAxMTZDIDExQkU7ICMgKOy+vzsg7L6/OyDhhI/hhazhhr47IOy+vzsg4YSP4YWs4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBLT0VDCitDRkMwO0NGQzA7MTEwRiAxMTZDIDExQkY7Q0ZDMDsxMTBGIDExNkMgMTFCRjsgIyAo7L+AOyDsv4A7IOGEj+GFrOGGvzsg7L+AOyDhhI/hhazhhr87ICkgSEFOR1VMIFNZTExBQkxFIEtPRUsKK0NGQzE7Q0ZDMTsxMTBGIDExNkMgMTFDMDtDRkMxOzExMEYgMTE2QyAxMUMwOyAjICjsv4E7IOy/gTsg4YSP4YWs4YeAOyDsv4E7IOGEj+GFrOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgS09FVAorQ0ZDMjtDRkMyOzExMEYgMTE2QyAxMUMxO0NGQzI7MTEwRiAxMTZDIDExQzE7ICMgKOy/gjsg7L+COyDhhI/hhazhh4E7IOy/gjsg4YSP4YWs4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBLT0VQCitDRkMzO0NGQzM7MTEwRiAxMTZDIDExQzI7Q0ZDMzsxMTBGIDExNkMgMTFDMjsgIyAo7L+DOyDsv4M7IOGEj+GFrOGHgjsg7L+DOyDhhI/hhazhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEtPRUgKK0NGQzQ7Q0ZDNDsxMTBGIDExNkQ7Q0ZDNDsxMTBGIDExNkQ7ICMgKOy/hDsg7L+EOyDhhI/hha07IOy/hDsg4YSP4YWtOyApIEhBTkdVTCBTWUxMQUJMRSBLWU8KK0NGQzU7Q0ZDNTsxMTBGIDExNkQgMTFBODtDRkM1OzExMEYgMTE2RCAxMUE4OyAjICjsv4U7IOy/hTsg4YSP4YWt4YaoOyDsv4U7IOGEj+GFreGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgS1lPRworQ0ZDNjtDRkM2OzExMEYgMTE2RCAxMUE5O0NGQzY7MTEwRiAxMTZEIDExQTk7ICMgKOy/hjsg7L+GOyDhhI/hha3hhqk7IOy/hjsg4YSP4YWt4YapOyApIEhBTkdVTCBTWUxMQUJMRSBLWU9HRworQ0ZDNztDRkM3OzExMEYgMTE2RCAxMUFBO0NGQzc7MTEwRiAxMTZEIDExQUE7ICMgKOy/hzsg7L+HOyDhhI/hha3hhqo7IOy/hzsg4YSP4YWt4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBLWU9HUworQ0ZDODtDRkM4OzExMEYgMTE2RCAxMUFCO0NGQzg7MTEwRiAxMTZEIDExQUI7ICMgKOy/iDsg7L+IOyDhhI/hha3hhqs7IOy/iDsg4YSP4YWt4YarOyApIEhBTkdVTCBTWUxMQUJMRSBLWU9OCitDRkM5O0NGQzk7MTEwRiAxMTZEIDExQUM7Q0ZDOTsxMTBGIDExNkQgMTFBQzsgIyAo7L+JOyDsv4k7IOGEj+GFreGGrDsg7L+JOyDhhI/hha3hhqw7ICkgSEFOR1VMIFNZTExBQkxFIEtZT05KCitDRkNBO0NGQ0E7MTEwRiAxMTZEIDExQUQ7Q0ZDQTsxMTBGIDExNkQgMTFBRDsgIyAo7L+KOyDsv4o7IOGEj+GFreGGrTsg7L+KOyDhhI/hha3hhq07ICkgSEFOR1VMIFNZTExBQkxFIEtZT05ICitDRkNCO0NGQ0I7MTEwRiAxMTZEIDExQUU7Q0ZDQjsxMTBGIDExNkQgMTFBRTsgIyAo7L+LOyDsv4s7IOGEj+GFreGGrjsg7L+LOyDhhI/hha3hhq47ICkgSEFOR1VMIFNZTExBQkxFIEtZT0QKK0NGQ0M7Q0ZDQzsxMTBGIDExNkQgMTFBRjtDRkNDOzExMEYgMTE2RCAxMUFGOyAjICjsv4w7IOy/jDsg4YSP4YWt4YavOyDsv4w7IOGEj+GFreGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgS1lPTAorQ0ZDRDtDRkNEOzExMEYgMTE2RCAxMUIwO0NGQ0Q7MTEwRiAxMTZEIDExQjA7ICMgKOy/jTsg7L+NOyDhhI/hha3hhrA7IOy/jTsg4YSP4YWt4YawOyApIEhBTkdVTCBTWUxMQUJMRSBLWU9MRworQ0ZDRTtDRkNFOzExMEYgMTE2RCAxMUIxO0NGQ0U7MTEwRiAxMTZEIDExQjE7ICMgKOy/jjsg7L+OOyDhhI/hha3hhrE7IOy/jjsg4YSP4YWt4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBLWU9MTQorQ0ZDRjtDRkNGOzExMEYgMTE2RCAxMUIyO0NGQ0Y7MTEwRiAxMTZEIDExQjI7ICMgKOy/jzsg7L+POyDhhI/hha3hhrI7IOy/jzsg4YSP4YWt4YayOyApIEhBTkdVTCBTWUxMQUJMRSBLWU9MQgorQ0ZEMDtDRkQwOzExMEYgMTE2RCAxMUIzO0NGRDA7MTEwRiAxMTZEIDExQjM7ICMgKOy/kDsg7L+QOyDhhI/hha3hhrM7IOy/kDsg4YSP4YWt4YazOyApIEhBTkdVTCBTWUxMQUJMRSBLWU9MUworQ0ZEMTtDRkQxOzExMEYgMTE2RCAxMUI0O0NGRDE7MTEwRiAxMTZEIDExQjQ7ICMgKOy/kTsg7L+ROyDhhI/hha3hhrQ7IOy/kTsg4YSP4YWt4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBLWU9MVAorQ0ZEMjtDRkQyOzExMEYgMTE2RCAxMUI1O0NGRDI7MTEwRiAxMTZEIDExQjU7ICMgKOy/kjsg7L+SOyDhhI/hha3hhrU7IOy/kjsg4YSP4YWt4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBLWU9MUAorQ0ZEMztDRkQzOzExMEYgMTE2RCAxMUI2O0NGRDM7MTEwRiAxMTZEIDExQjY7ICMgKOy/kzsg7L+TOyDhhI/hha3hhrY7IOy/kzsg4YSP4YWt4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBLWU9MSAorQ0ZENDtDRkQ0OzExMEYgMTE2RCAxMUI3O0NGRDQ7MTEwRiAxMTZEIDExQjc7ICMgKOy/lDsg7L+UOyDhhI/hha3hhrc7IOy/lDsg4YSP4YWt4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBLWU9NCitDRkQ1O0NGRDU7MTEwRiAxMTZEIDExQjg7Q0ZENTsxMTBGIDExNkQgMTFCODsgIyAo7L+VOyDsv5U7IOGEj+GFreGGuDsg7L+VOyDhhI/hha3hhrg7ICkgSEFOR1VMIFNZTExBQkxFIEtZT0IKK0NGRDY7Q0ZENjsxMTBGIDExNkQgMTFCOTtDRkQ2OzExMEYgMTE2RCAxMUI5OyAjICjsv5Y7IOy/ljsg4YSP4YWt4Ya5OyDsv5Y7IOGEj+GFreGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgS1lPQlMKK0NGRDc7Q0ZENzsxMTBGIDExNkQgMTFCQTtDRkQ3OzExMEYgMTE2RCAxMUJBOyAjICjsv5c7IOy/lzsg4YSP4YWt4Ya6OyDsv5c7IOGEj+GFreGGujsgKSBIQU5HVUwgU1lMTEFCTEUgS1lPUworQ0ZEODtDRkQ4OzExMEYgMTE2RCAxMUJCO0NGRDg7MTEwRiAxMTZEIDExQkI7ICMgKOy/mDsg7L+YOyDhhI/hha3hhrs7IOy/mDsg4YSP4YWt4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBLWU9TUworQ0ZEOTtDRkQ5OzExMEYgMTE2RCAxMUJDO0NGRDk7MTEwRiAxMTZEIDExQkM7ICMgKOy/mTsg7L+ZOyDhhI/hha3hhrw7IOy/mTsg4YSP4YWt4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBLWU9ORworQ0ZEQTtDRkRBOzExMEYgMTE2RCAxMUJEO0NGREE7MTEwRiAxMTZEIDExQkQ7ICMgKOy/mjsg7L+aOyDhhI/hha3hhr07IOy/mjsg4YSP4YWt4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBLWU9KCitDRkRCO0NGREI7MTEwRiAxMTZEIDExQkU7Q0ZEQjsxMTBGIDExNkQgMTFCRTsgIyAo7L+bOyDsv5s7IOGEj+GFreGGvjsg7L+bOyDhhI/hha3hhr47ICkgSEFOR1VMIFNZTExBQkxFIEtZT0MKK0NGREM7Q0ZEQzsxMTBGIDExNkQgMTFCRjtDRkRDOzExMEYgMTE2RCAxMUJGOyAjICjsv5w7IOy/nDsg4YSP4YWt4Ya/OyDsv5w7IOGEj+GFreGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgS1lPSworQ0ZERDtDRkREOzExMEYgMTE2RCAxMUMwO0NGREQ7MTEwRiAxMTZEIDExQzA7ICMgKOy/nTsg7L+dOyDhhI/hha3hh4A7IOy/nTsg4YSP4YWt4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBLWU9UCitDRkRFO0NGREU7MTEwRiAxMTZEIDExQzE7Q0ZERTsxMTBGIDExNkQgMTFDMTsgIyAo7L+eOyDsv547IOGEj+GFreGHgTsg7L+eOyDhhI/hha3hh4E7ICkgSEFOR1VMIFNZTExBQkxFIEtZT1AKK0NGREY7Q0ZERjsxMTBGIDExNkQgMTFDMjtDRkRGOzExMEYgMTE2RCAxMUMyOyAjICjsv587IOy/nzsg4YSP4YWt4YeCOyDsv587IOGEj+GFreGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgS1lPSAorQ0ZFMDtDRkUwOzExMEYgMTE2RTtDRkUwOzExMEYgMTE2RTsgIyAo7L+gOyDsv6A7IOGEj+GFrjsg7L+gOyDhhI/hha47ICkgSEFOR1VMIFNZTExBQkxFIEtVCitDRkUxO0NGRTE7MTEwRiAxMTZFIDExQTg7Q0ZFMTsxMTBGIDExNkUgMTFBODsgIyAo7L+hOyDsv6E7IOGEj+GFruGGqDsg7L+hOyDhhI/hha7hhqg7ICkgSEFOR1VMIFNZTExBQkxFIEtVRworQ0ZFMjtDRkUyOzExMEYgMTE2RSAxMUE5O0NGRTI7MTEwRiAxMTZFIDExQTk7ICMgKOy/ojsg7L+iOyDhhI/hha7hhqk7IOy/ojsg4YSP4YWu4YapOyApIEhBTkdVTCBTWUxMQUJMRSBLVUdHCitDRkUzO0NGRTM7MTEwRiAxMTZFIDExQUE7Q0ZFMzsxMTBGIDExNkUgMTFBQTsgIyAo7L+jOyDsv6M7IOGEj+GFruGGqjsg7L+jOyDhhI/hha7hhqo7ICkgSEFOR1VMIFNZTExBQkxFIEtVR1MKK0NGRTQ7Q0ZFNDsxMTBGIDExNkUgMTFBQjtDRkU0OzExMEYgMTE2RSAxMUFCOyAjICjsv6Q7IOy/pDsg4YSP4YWu4YarOyDsv6Q7IOGEj+GFruGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgS1VOCitDRkU1O0NGRTU7MTEwRiAxMTZFIDExQUM7Q0ZFNTsxMTBGIDExNkUgMTFBQzsgIyAo7L+lOyDsv6U7IOGEj+GFruGGrDsg7L+lOyDhhI/hha7hhqw7ICkgSEFOR1VMIFNZTExBQkxFIEtVTkoKK0NGRTY7Q0ZFNjsxMTBGIDExNkUgMTFBRDtDRkU2OzExMEYgMTE2RSAxMUFEOyAjICjsv6Y7IOy/pjsg4YSP4YWu4YatOyDsv6Y7IOGEj+GFruGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgS1VOSAorQ0ZFNztDRkU3OzExMEYgMTE2RSAxMUFFO0NGRTc7MTEwRiAxMTZFIDExQUU7ICMgKOy/pzsg7L+nOyDhhI/hha7hhq47IOy/pzsg4YSP4YWu4YauOyApIEhBTkdVTCBTWUxMQUJMRSBLVUQKK0NGRTg7Q0ZFODsxMTBGIDExNkUgMTFBRjtDRkU4OzExMEYgMTE2RSAxMUFGOyAjICjsv6g7IOy/qDsg4YSP4YWu4YavOyDsv6g7IOGEj+GFruGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgS1VMCitDRkU5O0NGRTk7MTEwRiAxMTZFIDExQjA7Q0ZFOTsxMTBGIDExNkUgMTFCMDsgIyAo7L+pOyDsv6k7IOGEj+GFruGGsDsg7L+pOyDhhI/hha7hhrA7ICkgSEFOR1VMIFNZTExBQkxFIEtVTEcKK0NGRUE7Q0ZFQTsxMTBGIDExNkUgMTFCMTtDRkVBOzExMEYgMTE2RSAxMUIxOyAjICjsv6o7IOy/qjsg4YSP4YWu4YaxOyDsv6o7IOGEj+GFruGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgS1VMTQorQ0ZFQjtDRkVCOzExMEYgMTE2RSAxMUIyO0NGRUI7MTEwRiAxMTZFIDExQjI7ICMgKOy/qzsg7L+rOyDhhI/hha7hhrI7IOy/qzsg4YSP4YWu4YayOyApIEhBTkdVTCBTWUxMQUJMRSBLVUxCCitDRkVDO0NGRUM7MTEwRiAxMTZFIDExQjM7Q0ZFQzsxMTBGIDExNkUgMTFCMzsgIyAo7L+sOyDsv6w7IOGEj+GFruGGszsg7L+sOyDhhI/hha7hhrM7ICkgSEFOR1VMIFNZTExBQkxFIEtVTFMKK0NGRUQ7Q0ZFRDsxMTBGIDExNkUgMTFCNDtDRkVEOzExMEYgMTE2RSAxMUI0OyAjICjsv607IOy/rTsg4YSP4YWu4Ya0OyDsv607IOGEj+GFruGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgS1VMVAorQ0ZFRTtDRkVFOzExMEYgMTE2RSAxMUI1O0NGRUU7MTEwRiAxMTZFIDExQjU7ICMgKOy/rjsg7L+uOyDhhI/hha7hhrU7IOy/rjsg4YSP4YWu4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBLVUxQCitDRkVGO0NGRUY7MTEwRiAxMTZFIDExQjY7Q0ZFRjsxMTBGIDExNkUgMTFCNjsgIyAo7L+vOyDsv687IOGEj+GFruGGtjsg7L+vOyDhhI/hha7hhrY7ICkgSEFOR1VMIFNZTExBQkxFIEtVTEgKK0NGRjA7Q0ZGMDsxMTBGIDExNkUgMTFCNztDRkYwOzExMEYgMTE2RSAxMUI3OyAjICjsv7A7IOy/sDsg4YSP4YWu4Ya3OyDsv7A7IOGEj+GFruGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgS1VNCitDRkYxO0NGRjE7MTEwRiAxMTZFIDExQjg7Q0ZGMTsxMTBGIDExNkUgMTFCODsgIyAo7L+xOyDsv7E7IOGEj+GFruGGuDsg7L+xOyDhhI/hha7hhrg7ICkgSEFOR1VMIFNZTExBQkxFIEtVQgorQ0ZGMjtDRkYyOzExMEYgMTE2RSAxMUI5O0NGRjI7MTEwRiAxMTZFIDExQjk7ICMgKOy/sjsg7L+yOyDhhI/hha7hhrk7IOy/sjsg4YSP4YWu4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBLVUJTCitDRkYzO0NGRjM7MTEwRiAxMTZFIDExQkE7Q0ZGMzsxMTBGIDExNkUgMTFCQTsgIyAo7L+zOyDsv7M7IOGEj+GFruGGujsg7L+zOyDhhI/hha7hhro7ICkgSEFOR1VMIFNZTExBQkxFIEtVUworQ0ZGNDtDRkY0OzExMEYgMTE2RSAxMUJCO0NGRjQ7MTEwRiAxMTZFIDExQkI7ICMgKOy/tDsg7L+0OyDhhI/hha7hhrs7IOy/tDsg4YSP4YWu4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBLVVNTCitDRkY1O0NGRjU7MTEwRiAxMTZFIDExQkM7Q0ZGNTsxMTBGIDExNkUgMTFCQzsgIyAo7L+1OyDsv7U7IOGEj+GFruGGvDsg7L+1OyDhhI/hha7hhrw7ICkgSEFOR1VMIFNZTExBQkxFIEtVTkcKK0NGRjY7Q0ZGNjsxMTBGIDExNkUgMTFCRDtDRkY2OzExMEYgMTE2RSAxMUJEOyAjICjsv7Y7IOy/tjsg4YSP4YWu4Ya9OyDsv7Y7IOGEj+GFruGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgS1VKCitDRkY3O0NGRjc7MTEwRiAxMTZFIDExQkU7Q0ZGNzsxMTBGIDExNkUgMTFCRTsgIyAo7L+3OyDsv7c7IOGEj+GFruGGvjsg7L+3OyDhhI/hha7hhr47ICkgSEFOR1VMIFNZTExBQkxFIEtVQworQ0ZGODtDRkY4OzExMEYgMTE2RSAxMUJGO0NGRjg7MTEwRiAxMTZFIDExQkY7ICMgKOy/uDsg7L+4OyDhhI/hha7hhr87IOy/uDsg4YSP4YWu4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBLVUsKK0NGRjk7Q0ZGOTsxMTBGIDExNkUgMTFDMDtDRkY5OzExMEYgMTE2RSAxMUMwOyAjICjsv7k7IOy/uTsg4YSP4YWu4YeAOyDsv7k7IOGEj+GFruGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgS1VUCitDRkZBO0NGRkE7MTEwRiAxMTZFIDExQzE7Q0ZGQTsxMTBGIDExNkUgMTFDMTsgIyAo7L+6OyDsv7o7IOGEj+GFruGHgTsg7L+6OyDhhI/hha7hh4E7ICkgSEFOR1VMIFNZTExBQkxFIEtVUAorQ0ZGQjtDRkZCOzExMEYgMTE2RSAxMUMyO0NGRkI7MTEwRiAxMTZFIDExQzI7ICMgKOy/uzsg7L+7OyDhhI/hha7hh4I7IOy/uzsg4YSP4YWu4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBLVUgKK0NGRkM7Q0ZGQzsxMTBGIDExNkY7Q0ZGQzsxMTBGIDExNkY7ICMgKOy/vDsg7L+8OyDhhI/hha87IOy/vDsg4YSP4YWvOyApIEhBTkdVTCBTWUxMQUJMRSBLV0VPCitDRkZEO0NGRkQ7MTEwRiAxMTZGIDExQTg7Q0ZGRDsxMTBGIDExNkYgMTFBODsgIyAo7L+9OyDsv707IOGEj+GFr+GGqDsg7L+9OyDhhI/hha/hhqg7ICkgSEFOR1VMIFNZTExBQkxFIEtXRU9HCitDRkZFO0NGRkU7MTEwRiAxMTZGIDExQTk7Q0ZGRTsxMTBGIDExNkYgMTFBOTsgIyAo7L++OyDsv747IOGEj+GFr+GGqTsg7L++OyDhhI/hha/hhqk7ICkgSEFOR1VMIFNZTExBQkxFIEtXRU9HRworQ0ZGRjtDRkZGOzExMEYgMTE2RiAxMUFBO0NGRkY7MTEwRiAxMTZGIDExQUE7ICMgKOy/vzsg7L+/OyDhhI/hha/hhqo7IOy/vzsg4YSP4YWv4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBLV0VPR1MKK0QwMDA7RDAwMDsxMTBGIDExNkYgMTFBQjtEMDAwOzExMEYgMTE2RiAxMUFCOyAjICjtgIA7IO2AgDsg4YSP4YWv4YarOyDtgIA7IOGEj+GFr+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgS1dFT04KK0QwMDE7RDAwMTsxMTBGIDExNkYgMTFBQztEMDAxOzExMEYgMTE2RiAxMUFDOyAjICjtgIE7IO2AgTsg4YSP4YWv4YasOyDtgIE7IOGEj+GFr+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgS1dFT05KCitEMDAyO0QwMDI7MTEwRiAxMTZGIDExQUQ7RDAwMjsxMTBGIDExNkYgMTFBRDsgIyAo7YCCOyDtgII7IOGEj+GFr+GGrTsg7YCCOyDhhI/hha/hhq07ICkgSEFOR1VMIFNZTExBQkxFIEtXRU9OSAorRDAwMztEMDAzOzExMEYgMTE2RiAxMUFFO0QwMDM7MTEwRiAxMTZGIDExQUU7ICMgKO2Agzsg7YCDOyDhhI/hha/hhq47IO2Agzsg4YSP4YWv4YauOyApIEhBTkdVTCBTWUxMQUJMRSBLV0VPRAorRDAwNDtEMDA0OzExMEYgMTE2RiAxMUFGO0QwMDQ7MTEwRiAxMTZGIDExQUY7ICMgKO2AhDsg7YCEOyDhhI/hha/hhq87IO2AhDsg4YSP4YWv4YavOyApIEhBTkdVTCBTWUxMQUJMRSBLV0VPTAorRDAwNTtEMDA1OzExMEYgMTE2RiAxMUIwO0QwMDU7MTEwRiAxMTZGIDExQjA7ICMgKO2AhTsg7YCFOyDhhI/hha/hhrA7IO2AhTsg4YSP4YWv4YawOyApIEhBTkdVTCBTWUxMQUJMRSBLV0VPTEcKK0QwMDY7RDAwNjsxMTBGIDExNkYgMTFCMTtEMDA2OzExMEYgMTE2RiAxMUIxOyAjICjtgIY7IO2Ahjsg4YSP4YWv4YaxOyDtgIY7IOGEj+GFr+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgS1dFT0xNCitEMDA3O0QwMDc7MTEwRiAxMTZGIDExQjI7RDAwNzsxMTBGIDExNkYgMTFCMjsgIyAo7YCHOyDtgIc7IOGEj+GFr+GGsjsg7YCHOyDhhI/hha/hhrI7ICkgSEFOR1VMIFNZTExBQkxFIEtXRU9MQgorRDAwODtEMDA4OzExMEYgMTE2RiAxMUIzO0QwMDg7MTEwRiAxMTZGIDExQjM7ICMgKO2AiDsg7YCIOyDhhI/hha/hhrM7IO2AiDsg4YSP4YWv4YazOyApIEhBTkdVTCBTWUxMQUJMRSBLV0VPTFMKK0QwMDk7RDAwOTsxMTBGIDExNkYgMTFCNDtEMDA5OzExMEYgMTE2RiAxMUI0OyAjICjtgIk7IO2AiTsg4YSP4YWv4Ya0OyDtgIk7IOGEj+GFr+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgS1dFT0xUCitEMDBBO0QwMEE7MTEwRiAxMTZGIDExQjU7RDAwQTsxMTBGIDExNkYgMTFCNTsgIyAo7YCKOyDtgIo7IOGEj+GFr+GGtTsg7YCKOyDhhI/hha/hhrU7ICkgSEFOR1VMIFNZTExBQkxFIEtXRU9MUAorRDAwQjtEMDBCOzExMEYgMTE2RiAxMUI2O0QwMEI7MTEwRiAxMTZGIDExQjY7ICMgKO2Aizsg7YCLOyDhhI/hha/hhrY7IO2Aizsg4YSP4YWv4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBLV0VPTEgKK0QwMEM7RDAwQzsxMTBGIDExNkYgMTFCNztEMDBDOzExMEYgMTE2RiAxMUI3OyAjICjtgIw7IO2AjDsg4YSP4YWv4Ya3OyDtgIw7IOGEj+GFr+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgS1dFT00KK0QwMEQ7RDAwRDsxMTBGIDExNkYgMTFCODtEMDBEOzExMEYgMTE2RiAxMUI4OyAjICjtgI07IO2AjTsg4YSP4YWv4Ya4OyDtgI07IOGEj+GFr+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgS1dFT0IKK0QwMEU7RDAwRTsxMTBGIDExNkYgMTFCOTtEMDBFOzExMEYgMTE2RiAxMUI5OyAjICjtgI47IO2Ajjsg4YSP4YWv4Ya5OyDtgI47IOGEj+GFr+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgS1dFT0JTCitEMDBGO0QwMEY7MTEwRiAxMTZGIDExQkE7RDAwRjsxMTBGIDExNkYgMTFCQTsgIyAo7YCPOyDtgI87IOGEj+GFr+GGujsg7YCPOyDhhI/hha/hhro7ICkgSEFOR1VMIFNZTExBQkxFIEtXRU9TCitEMDEwO0QwMTA7MTEwRiAxMTZGIDExQkI7RDAxMDsxMTBGIDExNkYgMTFCQjsgIyAo7YCQOyDtgJA7IOGEj+GFr+GGuzsg7YCQOyDhhI/hha/hhrs7ICkgSEFOR1VMIFNZTExBQkxFIEtXRU9TUworRDAxMTtEMDExOzExMEYgMTE2RiAxMUJDO0QwMTE7MTEwRiAxMTZGIDExQkM7ICMgKO2AkTsg7YCROyDhhI/hha/hhrw7IO2AkTsg4YSP4YWv4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBLV0VPTkcKK0QwMTI7RDAxMjsxMTBGIDExNkYgMTFCRDtEMDEyOzExMEYgMTE2RiAxMUJEOyAjICjtgJI7IO2Akjsg4YSP4YWv4Ya9OyDtgJI7IOGEj+GFr+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgS1dFT0oKK0QwMTM7RDAxMzsxMTBGIDExNkYgMTFCRTtEMDEzOzExMEYgMTE2RiAxMUJFOyAjICjtgJM7IO2Akzsg4YSP4YWv4Ya+OyDtgJM7IOGEj+GFr+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgS1dFT0MKK0QwMTQ7RDAxNDsxMTBGIDExNkYgMTFCRjtEMDE0OzExMEYgMTE2RiAxMUJGOyAjICjtgJQ7IO2AlDsg4YSP4YWv4Ya/OyDtgJQ7IOGEj+GFr+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgS1dFT0sKK0QwMTU7RDAxNTsxMTBGIDExNkYgMTFDMDtEMDE1OzExMEYgMTE2RiAxMUMwOyAjICjtgJU7IO2AlTsg4YSP4YWv4YeAOyDtgJU7IOGEj+GFr+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgS1dFT1QKK0QwMTY7RDAxNjsxMTBGIDExNkYgMTFDMTtEMDE2OzExMEYgMTE2RiAxMUMxOyAjICjtgJY7IO2Aljsg4YSP4YWv4YeBOyDtgJY7IOGEj+GFr+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgS1dFT1AKK0QwMTc7RDAxNzsxMTBGIDExNkYgMTFDMjtEMDE3OzExMEYgMTE2RiAxMUMyOyAjICjtgJc7IO2Alzsg4YSP4YWv4YeCOyDtgJc7IOGEj+GFr+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgS1dFT0gKK0QwMTg7RDAxODsxMTBGIDExNzA7RDAxODsxMTBGIDExNzA7ICMgKO2AmDsg7YCYOyDhhI/hhbA7IO2AmDsg4YSP4YWwOyApIEhBTkdVTCBTWUxMQUJMRSBLV0UKK0QwMTk7RDAxOTsxMTBGIDExNzAgMTFBODtEMDE5OzExMEYgMTE3MCAxMUE4OyAjICjtgJk7IO2AmTsg4YSP4YWw4YaoOyDtgJk7IOGEj+GFsOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgS1dFRworRDAxQTtEMDFBOzExMEYgMTE3MCAxMUE5O0QwMUE7MTEwRiAxMTcwIDExQTk7ICMgKO2Amjsg7YCaOyDhhI/hhbDhhqk7IO2Amjsg4YSP4YWw4YapOyApIEhBTkdVTCBTWUxMQUJMRSBLV0VHRworRDAxQjtEMDFCOzExMEYgMTE3MCAxMUFBO0QwMUI7MTEwRiAxMTcwIDExQUE7ICMgKO2Amzsg7YCbOyDhhI/hhbDhhqo7IO2Amzsg4YSP4YWw4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBLV0VHUworRDAxQztEMDFDOzExMEYgMTE3MCAxMUFCO0QwMUM7MTEwRiAxMTcwIDExQUI7ICMgKO2AnDsg7YCcOyDhhI/hhbDhhqs7IO2AnDsg4YSP4YWw4YarOyApIEhBTkdVTCBTWUxMQUJMRSBLV0VOCitEMDFEO0QwMUQ7MTEwRiAxMTcwIDExQUM7RDAxRDsxMTBGIDExNzAgMTFBQzsgIyAo7YCdOyDtgJ07IOGEj+GFsOGGrDsg7YCdOyDhhI/hhbDhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEtXRU5KCitEMDFFO0QwMUU7MTEwRiAxMTcwIDExQUQ7RDAxRTsxMTBGIDExNzAgMTFBRDsgIyAo7YCeOyDtgJ47IOGEj+GFsOGGrTsg7YCeOyDhhI/hhbDhhq07ICkgSEFOR1VMIFNZTExBQkxFIEtXRU5ICitEMDFGO0QwMUY7MTEwRiAxMTcwIDExQUU7RDAxRjsxMTBGIDExNzAgMTFBRTsgIyAo7YCfOyDtgJ87IOGEj+GFsOGGrjsg7YCfOyDhhI/hhbDhhq47ICkgSEFOR1VMIFNZTExBQkxFIEtXRUQKK0QwMjA7RDAyMDsxMTBGIDExNzAgMTFBRjtEMDIwOzExMEYgMTE3MCAxMUFGOyAjICjtgKA7IO2AoDsg4YSP4YWw4YavOyDtgKA7IOGEj+GFsOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgS1dFTAorRDAyMTtEMDIxOzExMEYgMTE3MCAxMUIwO0QwMjE7MTEwRiAxMTcwIDExQjA7ICMgKO2AoTsg7YChOyDhhI/hhbDhhrA7IO2AoTsg4YSP4YWw4YawOyApIEhBTkdVTCBTWUxMQUJMRSBLV0VMRworRDAyMjtEMDIyOzExMEYgMTE3MCAxMUIxO0QwMjI7MTEwRiAxMTcwIDExQjE7ICMgKO2Aojsg7YCiOyDhhI/hhbDhhrE7IO2Aojsg4YSP4YWw4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBLV0VMTQorRDAyMztEMDIzOzExMEYgMTE3MCAxMUIyO0QwMjM7MTEwRiAxMTcwIDExQjI7ICMgKO2Aozsg7YCjOyDhhI/hhbDhhrI7IO2Aozsg4YSP4YWw4YayOyApIEhBTkdVTCBTWUxMQUJMRSBLV0VMQgorRDAyNDtEMDI0OzExMEYgMTE3MCAxMUIzO0QwMjQ7MTEwRiAxMTcwIDExQjM7ICMgKO2ApDsg7YCkOyDhhI/hhbDhhrM7IO2ApDsg4YSP4YWw4YazOyApIEhBTkdVTCBTWUxMQUJMRSBLV0VMUworRDAyNTtEMDI1OzExMEYgMTE3MCAxMUI0O0QwMjU7MTEwRiAxMTcwIDExQjQ7ICMgKO2ApTsg7YClOyDhhI/hhbDhhrQ7IO2ApTsg4YSP4YWw4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBLV0VMVAorRDAyNjtEMDI2OzExMEYgMTE3MCAxMUI1O0QwMjY7MTEwRiAxMTcwIDExQjU7ICMgKO2Apjsg7YCmOyDhhI/hhbDhhrU7IO2Apjsg4YSP4YWw4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBLV0VMUAorRDAyNztEMDI3OzExMEYgMTE3MCAxMUI2O0QwMjc7MTEwRiAxMTcwIDExQjY7ICMgKO2Apzsg7YCnOyDhhI/hhbDhhrY7IO2Apzsg4YSP4YWw4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBLV0VMSAorRDAyODtEMDI4OzExMEYgMTE3MCAxMUI3O0QwMjg7MTEwRiAxMTcwIDExQjc7ICMgKO2AqDsg7YCoOyDhhI/hhbDhhrc7IO2AqDsg4YSP4YWw4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBLV0VNCitEMDI5O0QwMjk7MTEwRiAxMTcwIDExQjg7RDAyOTsxMTBGIDExNzAgMTFCODsgIyAo7YCpOyDtgKk7IOGEj+GFsOGGuDsg7YCpOyDhhI/hhbDhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEtXRUIKK0QwMkE7RDAyQTsxMTBGIDExNzAgMTFCOTtEMDJBOzExMEYgMTE3MCAxMUI5OyAjICjtgKo7IO2Aqjsg4YSP4YWw4Ya5OyDtgKo7IOGEj+GFsOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgS1dFQlMKK0QwMkI7RDAyQjsxMTBGIDExNzAgMTFCQTtEMDJCOzExMEYgMTE3MCAxMUJBOyAjICjtgKs7IO2Aqzsg4YSP4YWw4Ya6OyDtgKs7IOGEj+GFsOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgS1dFUworRDAyQztEMDJDOzExMEYgMTE3MCAxMUJCO0QwMkM7MTEwRiAxMTcwIDExQkI7ICMgKO2ArDsg7YCsOyDhhI/hhbDhhrs7IO2ArDsg4YSP4YWw4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBLV0VTUworRDAyRDtEMDJEOzExMEYgMTE3MCAxMUJDO0QwMkQ7MTEwRiAxMTcwIDExQkM7ICMgKO2ArTsg7YCtOyDhhI/hhbDhhrw7IO2ArTsg4YSP4YWw4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBLV0VORworRDAyRTtEMDJFOzExMEYgMTE3MCAxMUJEO0QwMkU7MTEwRiAxMTcwIDExQkQ7ICMgKO2Arjsg7YCuOyDhhI/hhbDhhr07IO2Arjsg4YSP4YWw4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBLV0VKCitEMDJGO0QwMkY7MTEwRiAxMTcwIDExQkU7RDAyRjsxMTBGIDExNzAgMTFCRTsgIyAo7YCvOyDtgK87IOGEj+GFsOGGvjsg7YCvOyDhhI/hhbDhhr47ICkgSEFOR1VMIFNZTExBQkxFIEtXRUMKK0QwMzA7RDAzMDsxMTBGIDExNzAgMTFCRjtEMDMwOzExMEYgMTE3MCAxMUJGOyAjICjtgLA7IO2AsDsg4YSP4YWw4Ya/OyDtgLA7IOGEj+GFsOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgS1dFSworRDAzMTtEMDMxOzExMEYgMTE3MCAxMUMwO0QwMzE7MTEwRiAxMTcwIDExQzA7ICMgKO2AsTsg7YCxOyDhhI/hhbDhh4A7IO2AsTsg4YSP4YWw4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBLV0VUCitEMDMyO0QwMzI7MTEwRiAxMTcwIDExQzE7RDAzMjsxMTBGIDExNzAgMTFDMTsgIyAo7YCyOyDtgLI7IOGEj+GFsOGHgTsg7YCyOyDhhI/hhbDhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEtXRVAKK0QwMzM7RDAzMzsxMTBGIDExNzAgMTFDMjtEMDMzOzExMEYgMTE3MCAxMUMyOyAjICjtgLM7IO2Aszsg4YSP4YWw4YeCOyDtgLM7IOGEj+GFsOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgS1dFSAorRDAzNDtEMDM0OzExMEYgMTE3MTtEMDM0OzExMEYgMTE3MTsgIyAo7YC0OyDtgLQ7IOGEj+GFsTsg7YC0OyDhhI/hhbE7ICkgSEFOR1VMIFNZTExBQkxFIEtXSQorRDAzNTtEMDM1OzExMEYgMTE3MSAxMUE4O0QwMzU7MTEwRiAxMTcxIDExQTg7ICMgKO2AtTsg7YC1OyDhhI/hhbHhhqg7IO2AtTsg4YSP4YWx4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBLV0lHCitEMDM2O0QwMzY7MTEwRiAxMTcxIDExQTk7RDAzNjsxMTBGIDExNzEgMTFBOTsgIyAo7YC2OyDtgLY7IOGEj+GFseGGqTsg7YC2OyDhhI/hhbHhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEtXSUdHCitEMDM3O0QwMzc7MTEwRiAxMTcxIDExQUE7RDAzNzsxMTBGIDExNzEgMTFBQTsgIyAo7YC3OyDtgLc7IOGEj+GFseGGqjsg7YC3OyDhhI/hhbHhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEtXSUdTCitEMDM4O0QwMzg7MTEwRiAxMTcxIDExQUI7RDAzODsxMTBGIDExNzEgMTFBQjsgIyAo7YC4OyDtgLg7IOGEj+GFseGGqzsg7YC4OyDhhI/hhbHhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEtXSU4KK0QwMzk7RDAzOTsxMTBGIDExNzEgMTFBQztEMDM5OzExMEYgMTE3MSAxMUFDOyAjICjtgLk7IO2AuTsg4YSP4YWx4YasOyDtgLk7IOGEj+GFseGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgS1dJTkoKK0QwM0E7RDAzQTsxMTBGIDExNzEgMTFBRDtEMDNBOzExMEYgMTE3MSAxMUFEOyAjICjtgLo7IO2Aujsg4YSP4YWx4YatOyDtgLo7IOGEj+GFseGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgS1dJTkgKK0QwM0I7RDAzQjsxMTBGIDExNzEgMTFBRTtEMDNCOzExMEYgMTE3MSAxMUFFOyAjICjtgLs7IO2Auzsg4YSP4YWx4YauOyDtgLs7IOGEj+GFseGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgS1dJRAorRDAzQztEMDNDOzExMEYgMTE3MSAxMUFGO0QwM0M7MTEwRiAxMTcxIDExQUY7ICMgKO2AvDsg7YC8OyDhhI/hhbHhhq87IO2AvDsg4YSP4YWx4YavOyApIEhBTkdVTCBTWUxMQUJMRSBLV0lMCitEMDNEO0QwM0Q7MTEwRiAxMTcxIDExQjA7RDAzRDsxMTBGIDExNzEgMTFCMDsgIyAo7YC9OyDtgL07IOGEj+GFseGGsDsg7YC9OyDhhI/hhbHhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEtXSUxHCitEMDNFO0QwM0U7MTEwRiAxMTcxIDExQjE7RDAzRTsxMTBGIDExNzEgMTFCMTsgIyAo7YC+OyDtgL47IOGEj+GFseGGsTsg7YC+OyDhhI/hhbHhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEtXSUxNCitEMDNGO0QwM0Y7MTEwRiAxMTcxIDExQjI7RDAzRjsxMTBGIDExNzEgMTFCMjsgIyAo7YC/OyDtgL87IOGEj+GFseGGsjsg7YC/OyDhhI/hhbHhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEtXSUxCCitEMDQwO0QwNDA7MTEwRiAxMTcxIDExQjM7RDA0MDsxMTBGIDExNzEgMTFCMzsgIyAo7YGAOyDtgYA7IOGEj+GFseGGszsg7YGAOyDhhI/hhbHhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEtXSUxTCitEMDQxO0QwNDE7MTEwRiAxMTcxIDExQjQ7RDA0MTsxMTBGIDExNzEgMTFCNDsgIyAo7YGBOyDtgYE7IOGEj+GFseGGtDsg7YGBOyDhhI/hhbHhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEtXSUxUCitEMDQyO0QwNDI7MTEwRiAxMTcxIDExQjU7RDA0MjsxMTBGIDExNzEgMTFCNTsgIyAo7YGCOyDtgYI7IOGEj+GFseGGtTsg7YGCOyDhhI/hhbHhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEtXSUxQCitEMDQzO0QwNDM7MTEwRiAxMTcxIDExQjY7RDA0MzsxMTBGIDExNzEgMTFCNjsgIyAo7YGDOyDtgYM7IOGEj+GFseGGtjsg7YGDOyDhhI/hhbHhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEtXSUxICitEMDQ0O0QwNDQ7MTEwRiAxMTcxIDExQjc7RDA0NDsxMTBGIDExNzEgMTFCNzsgIyAo7YGEOyDtgYQ7IOGEj+GFseGGtzsg7YGEOyDhhI/hhbHhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEtXSU0KK0QwNDU7RDA0NTsxMTBGIDExNzEgMTFCODtEMDQ1OzExMEYgMTE3MSAxMUI4OyAjICjtgYU7IO2BhTsg4YSP4YWx4Ya4OyDtgYU7IOGEj+GFseGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgS1dJQgorRDA0NjtEMDQ2OzExMEYgMTE3MSAxMUI5O0QwNDY7MTEwRiAxMTcxIDExQjk7ICMgKO2Bhjsg7YGGOyDhhI/hhbHhhrk7IO2Bhjsg4YSP4YWx4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBLV0lCUworRDA0NztEMDQ3OzExMEYgMTE3MSAxMUJBO0QwNDc7MTEwRiAxMTcxIDExQkE7ICMgKO2Bhzsg7YGHOyDhhI/hhbHhhro7IO2Bhzsg4YSP4YWx4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBLV0lTCitEMDQ4O0QwNDg7MTEwRiAxMTcxIDExQkI7RDA0ODsxMTBGIDExNzEgMTFCQjsgIyAo7YGIOyDtgYg7IOGEj+GFseGGuzsg7YGIOyDhhI/hhbHhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEtXSVNTCitEMDQ5O0QwNDk7MTEwRiAxMTcxIDExQkM7RDA0OTsxMTBGIDExNzEgMTFCQzsgIyAo7YGJOyDtgYk7IOGEj+GFseGGvDsg7YGJOyDhhI/hhbHhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEtXSU5HCitEMDRBO0QwNEE7MTEwRiAxMTcxIDExQkQ7RDA0QTsxMTBGIDExNzEgMTFCRDsgIyAo7YGKOyDtgYo7IOGEj+GFseGGvTsg7YGKOyDhhI/hhbHhhr07ICkgSEFOR1VMIFNZTExBQkxFIEtXSUoKK0QwNEI7RDA0QjsxMTBGIDExNzEgMTFCRTtEMDRCOzExMEYgMTE3MSAxMUJFOyAjICjtgYs7IO2Bizsg4YSP4YWx4Ya+OyDtgYs7IOGEj+GFseGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgS1dJQworRDA0QztEMDRDOzExMEYgMTE3MSAxMUJGO0QwNEM7MTEwRiAxMTcxIDExQkY7ICMgKO2BjDsg7YGMOyDhhI/hhbHhhr87IO2BjDsg4YSP4YWx4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBLV0lLCitEMDREO0QwNEQ7MTEwRiAxMTcxIDExQzA7RDA0RDsxMTBGIDExNzEgMTFDMDsgIyAo7YGNOyDtgY07IOGEj+GFseGHgDsg7YGNOyDhhI/hhbHhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEtXSVQKK0QwNEU7RDA0RTsxMTBGIDExNzEgMTFDMTtEMDRFOzExMEYgMTE3MSAxMUMxOyAjICjtgY47IO2Bjjsg4YSP4YWx4YeBOyDtgY47IOGEj+GFseGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgS1dJUAorRDA0RjtEMDRGOzExMEYgMTE3MSAxMUMyO0QwNEY7MTEwRiAxMTcxIDExQzI7ICMgKO2Bjzsg7YGPOyDhhI/hhbHhh4I7IO2Bjzsg4YSP4YWx4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBLV0lICitEMDUwO0QwNTA7MTEwRiAxMTcyO0QwNTA7MTEwRiAxMTcyOyAjICjtgZA7IO2BkDsg4YSP4YWyOyDtgZA7IOGEj+GFsjsgKSBIQU5HVUwgU1lMTEFCTEUgS1lVCitEMDUxO0QwNTE7MTEwRiAxMTcyIDExQTg7RDA1MTsxMTBGIDExNzIgMTFBODsgIyAo7YGROyDtgZE7IOGEj+GFsuGGqDsg7YGROyDhhI/hhbLhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEtZVUcKK0QwNTI7RDA1MjsxMTBGIDExNzIgMTFBOTtEMDUyOzExMEYgMTE3MiAxMUE5OyAjICjtgZI7IO2Bkjsg4YSP4YWy4YapOyDtgZI7IOGEj+GFsuGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgS1lVR0cKK0QwNTM7RDA1MzsxMTBGIDExNzIgMTFBQTtEMDUzOzExMEYgMTE3MiAxMUFBOyAjICjtgZM7IO2Bkzsg4YSP4YWy4YaqOyDtgZM7IOGEj+GFsuGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgS1lVR1MKK0QwNTQ7RDA1NDsxMTBGIDExNzIgMTFBQjtEMDU0OzExMEYgMTE3MiAxMUFCOyAjICjtgZQ7IO2BlDsg4YSP4YWy4YarOyDtgZQ7IOGEj+GFsuGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgS1lVTgorRDA1NTtEMDU1OzExMEYgMTE3MiAxMUFDO0QwNTU7MTEwRiAxMTcyIDExQUM7ICMgKO2BlTsg7YGVOyDhhI/hhbLhhqw7IO2BlTsg4YSP4YWy4YasOyApIEhBTkdVTCBTWUxMQUJMRSBLWVVOSgorRDA1NjtEMDU2OzExMEYgMTE3MiAxMUFEO0QwNTY7MTEwRiAxMTcyIDExQUQ7ICMgKO2Bljsg7YGWOyDhhI/hhbLhhq07IO2Bljsg4YSP4YWy4YatOyApIEhBTkdVTCBTWUxMQUJMRSBLWVVOSAorRDA1NztEMDU3OzExMEYgMTE3MiAxMUFFO0QwNTc7MTEwRiAxMTcyIDExQUU7ICMgKO2Blzsg7YGXOyDhhI/hhbLhhq47IO2Blzsg4YSP4YWy4YauOyApIEhBTkdVTCBTWUxMQUJMRSBLWVVECitEMDU4O0QwNTg7MTEwRiAxMTcyIDExQUY7RDA1ODsxMTBGIDExNzIgMTFBRjsgIyAo7YGYOyDtgZg7IOGEj+GFsuGGrzsg7YGYOyDhhI/hhbLhhq87ICkgSEFOR1VMIFNZTExBQkxFIEtZVUwKK0QwNTk7RDA1OTsxMTBGIDExNzIgMTFCMDtEMDU5OzExMEYgMTE3MiAxMUIwOyAjICjtgZk7IO2BmTsg4YSP4YWy4YawOyDtgZk7IOGEj+GFsuGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgS1lVTEcKK0QwNUE7RDA1QTsxMTBGIDExNzIgMTFCMTtEMDVBOzExMEYgMTE3MiAxMUIxOyAjICjtgZo7IO2Bmjsg4YSP4YWy4YaxOyDtgZo7IOGEj+GFsuGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgS1lVTE0KK0QwNUI7RDA1QjsxMTBGIDExNzIgMTFCMjtEMDVCOzExMEYgMTE3MiAxMUIyOyAjICjtgZs7IO2Bmzsg4YSP4YWy4YayOyDtgZs7IOGEj+GFsuGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgS1lVTEIKK0QwNUM7RDA1QzsxMTBGIDExNzIgMTFCMztEMDVDOzExMEYgMTE3MiAxMUIzOyAjICjtgZw7IO2BnDsg4YSP4YWy4YazOyDtgZw7IOGEj+GFsuGGszsgKSBIQU5HVUwgU1lMTEFCTEUgS1lVTFMKK0QwNUQ7RDA1RDsxMTBGIDExNzIgMTFCNDtEMDVEOzExMEYgMTE3MiAxMUI0OyAjICjtgZ07IO2BnTsg4YSP4YWy4Ya0OyDtgZ07IOGEj+GFsuGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgS1lVTFQKK0QwNUU7RDA1RTsxMTBGIDExNzIgMTFCNTtEMDVFOzExMEYgMTE3MiAxMUI1OyAjICjtgZ47IO2Bnjsg4YSP4YWy4Ya1OyDtgZ47IOGEj+GFsuGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgS1lVTFAKK0QwNUY7RDA1RjsxMTBGIDExNzIgMTFCNjtEMDVGOzExMEYgMTE3MiAxMUI2OyAjICjtgZ87IO2Bnzsg4YSP4YWy4Ya2OyDtgZ87IOGEj+GFsuGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgS1lVTEgKK0QwNjA7RDA2MDsxMTBGIDExNzIgMTFCNztEMDYwOzExMEYgMTE3MiAxMUI3OyAjICjtgaA7IO2BoDsg4YSP4YWy4Ya3OyDtgaA7IOGEj+GFsuGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgS1lVTQorRDA2MTtEMDYxOzExMEYgMTE3MiAxMUI4O0QwNjE7MTEwRiAxMTcyIDExQjg7ICMgKO2BoTsg7YGhOyDhhI/hhbLhhrg7IO2BoTsg4YSP4YWy4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBLWVVCCitEMDYyO0QwNjI7MTEwRiAxMTcyIDExQjk7RDA2MjsxMTBGIDExNzIgMTFCOTsgIyAo7YGiOyDtgaI7IOGEj+GFsuGGuTsg7YGiOyDhhI/hhbLhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEtZVUJTCitEMDYzO0QwNjM7MTEwRiAxMTcyIDExQkE7RDA2MzsxMTBGIDExNzIgMTFCQTsgIyAo7YGjOyDtgaM7IOGEj+GFsuGGujsg7YGjOyDhhI/hhbLhhro7ICkgSEFOR1VMIFNZTExBQkxFIEtZVVMKK0QwNjQ7RDA2NDsxMTBGIDExNzIgMTFCQjtEMDY0OzExMEYgMTE3MiAxMUJCOyAjICjtgaQ7IO2BpDsg4YSP4YWy4Ya7OyDtgaQ7IOGEj+GFsuGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgS1lVU1MKK0QwNjU7RDA2NTsxMTBGIDExNzIgMTFCQztEMDY1OzExMEYgMTE3MiAxMUJDOyAjICjtgaU7IO2BpTsg4YSP4YWy4Ya8OyDtgaU7IOGEj+GFsuGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgS1lVTkcKK0QwNjY7RDA2NjsxMTBGIDExNzIgMTFCRDtEMDY2OzExMEYgMTE3MiAxMUJEOyAjICjtgaY7IO2Bpjsg4YSP4YWy4Ya9OyDtgaY7IOGEj+GFsuGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgS1lVSgorRDA2NztEMDY3OzExMEYgMTE3MiAxMUJFO0QwNjc7MTEwRiAxMTcyIDExQkU7ICMgKO2Bpzsg7YGnOyDhhI/hhbLhhr47IO2Bpzsg4YSP4YWy4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBLWVVDCitEMDY4O0QwNjg7MTEwRiAxMTcyIDExQkY7RDA2ODsxMTBGIDExNzIgMTFCRjsgIyAo7YGoOyDtgag7IOGEj+GFsuGGvzsg7YGoOyDhhI/hhbLhhr87ICkgSEFOR1VMIFNZTExBQkxFIEtZVUsKK0QwNjk7RDA2OTsxMTBGIDExNzIgMTFDMDtEMDY5OzExMEYgMTE3MiAxMUMwOyAjICjtgak7IO2BqTsg4YSP4YWy4YeAOyDtgak7IOGEj+GFsuGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgS1lVVAorRDA2QTtEMDZBOzExMEYgMTE3MiAxMUMxO0QwNkE7MTEwRiAxMTcyIDExQzE7ICMgKO2Bqjsg7YGqOyDhhI/hhbLhh4E7IO2Bqjsg4YSP4YWy4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBLWVVQCitEMDZCO0QwNkI7MTEwRiAxMTcyIDExQzI7RDA2QjsxMTBGIDExNzIgMTFDMjsgIyAo7YGrOyDtgas7IOGEj+GFsuGHgjsg7YGrOyDhhI/hhbLhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEtZVUgKK0QwNkM7RDA2QzsxMTBGIDExNzM7RDA2QzsxMTBGIDExNzM7ICMgKO2BrDsg7YGsOyDhhI/hhbM7IO2BrDsg4YSP4YWzOyApIEhBTkdVTCBTWUxMQUJMRSBLRVUKK0QwNkQ7RDA2RDsxMTBGIDExNzMgMTFBODtEMDZEOzExMEYgMTE3MyAxMUE4OyAjICjtga07IO2BrTsg4YSP4YWz4YaoOyDtga07IOGEj+GFs+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgS0VVRworRDA2RTtEMDZFOzExMEYgMTE3MyAxMUE5O0QwNkU7MTEwRiAxMTczIDExQTk7ICMgKO2Brjsg7YGuOyDhhI/hhbPhhqk7IO2Brjsg4YSP4YWz4YapOyApIEhBTkdVTCBTWUxMQUJMRSBLRVVHRworRDA2RjtEMDZGOzExMEYgMTE3MyAxMUFBO0QwNkY7MTEwRiAxMTczIDExQUE7ICMgKO2Brzsg7YGvOyDhhI/hhbPhhqo7IO2Brzsg4YSP4YWz4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBLRVVHUworRDA3MDtEMDcwOzExMEYgMTE3MyAxMUFCO0QwNzA7MTEwRiAxMTczIDExQUI7ICMgKO2BsDsg7YGwOyDhhI/hhbPhhqs7IO2BsDsg4YSP4YWz4YarOyApIEhBTkdVTCBTWUxMQUJMRSBLRVVOCitEMDcxO0QwNzE7MTEwRiAxMTczIDExQUM7RDA3MTsxMTBGIDExNzMgMTFBQzsgIyAo7YGxOyDtgbE7IOGEj+GFs+GGrDsg7YGxOyDhhI/hhbPhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEtFVU5KCitEMDcyO0QwNzI7MTEwRiAxMTczIDExQUQ7RDA3MjsxMTBGIDExNzMgMTFBRDsgIyAo7YGyOyDtgbI7IOGEj+GFs+GGrTsg7YGyOyDhhI/hhbPhhq07ICkgSEFOR1VMIFNZTExBQkxFIEtFVU5ICitEMDczO0QwNzM7MTEwRiAxMTczIDExQUU7RDA3MzsxMTBGIDExNzMgMTFBRTsgIyAo7YGzOyDtgbM7IOGEj+GFs+GGrjsg7YGzOyDhhI/hhbPhhq47ICkgSEFOR1VMIFNZTExBQkxFIEtFVUQKK0QwNzQ7RDA3NDsxMTBGIDExNzMgMTFBRjtEMDc0OzExMEYgMTE3MyAxMUFGOyAjICjtgbQ7IO2BtDsg4YSP4YWz4YavOyDtgbQ7IOGEj+GFs+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgS0VVTAorRDA3NTtEMDc1OzExMEYgMTE3MyAxMUIwO0QwNzU7MTEwRiAxMTczIDExQjA7ICMgKO2BtTsg7YG1OyDhhI/hhbPhhrA7IO2BtTsg4YSP4YWz4YawOyApIEhBTkdVTCBTWUxMQUJMRSBLRVVMRworRDA3NjtEMDc2OzExMEYgMTE3MyAxMUIxO0QwNzY7MTEwRiAxMTczIDExQjE7ICMgKO2Btjsg7YG2OyDhhI/hhbPhhrE7IO2Btjsg4YSP4YWz4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBLRVVMTQorRDA3NztEMDc3OzExMEYgMTE3MyAxMUIyO0QwNzc7MTEwRiAxMTczIDExQjI7ICMgKO2Btzsg7YG3OyDhhI/hhbPhhrI7IO2Btzsg4YSP4YWz4YayOyApIEhBTkdVTCBTWUxMQUJMRSBLRVVMQgorRDA3ODtEMDc4OzExMEYgMTE3MyAxMUIzO0QwNzg7MTEwRiAxMTczIDExQjM7ICMgKO2BuDsg7YG4OyDhhI/hhbPhhrM7IO2BuDsg4YSP4YWz4YazOyApIEhBTkdVTCBTWUxMQUJMRSBLRVVMUworRDA3OTtEMDc5OzExMEYgMTE3MyAxMUI0O0QwNzk7MTEwRiAxMTczIDExQjQ7ICMgKO2BuTsg7YG5OyDhhI/hhbPhhrQ7IO2BuTsg4YSP4YWz4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBLRVVMVAorRDA3QTtEMDdBOzExMEYgMTE3MyAxMUI1O0QwN0E7MTEwRiAxMTczIDExQjU7ICMgKO2Bujsg7YG6OyDhhI/hhbPhhrU7IO2Bujsg4YSP4YWz4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBLRVVMUAorRDA3QjtEMDdCOzExMEYgMTE3MyAxMUI2O0QwN0I7MTEwRiAxMTczIDExQjY7ICMgKO2Buzsg7YG7OyDhhI/hhbPhhrY7IO2Buzsg4YSP4YWz4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBLRVVMSAorRDA3QztEMDdDOzExMEYgMTE3MyAxMUI3O0QwN0M7MTEwRiAxMTczIDExQjc7ICMgKO2BvDsg7YG8OyDhhI/hhbPhhrc7IO2BvDsg4YSP4YWz4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBLRVVNCitEMDdEO0QwN0Q7MTEwRiAxMTczIDExQjg7RDA3RDsxMTBGIDExNzMgMTFCODsgIyAo7YG9OyDtgb07IOGEj+GFs+GGuDsg7YG9OyDhhI/hhbPhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEtFVUIKK0QwN0U7RDA3RTsxMTBGIDExNzMgMTFCOTtEMDdFOzExMEYgMTE3MyAxMUI5OyAjICjtgb47IO2Bvjsg4YSP4YWz4Ya5OyDtgb47IOGEj+GFs+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgS0VVQlMKK0QwN0Y7RDA3RjsxMTBGIDExNzMgMTFCQTtEMDdGOzExMEYgMTE3MyAxMUJBOyAjICjtgb87IO2Bvzsg4YSP4YWz4Ya6OyDtgb87IOGEj+GFs+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgS0VVUworRDA4MDtEMDgwOzExMEYgMTE3MyAxMUJCO0QwODA7MTEwRiAxMTczIDExQkI7ICMgKO2CgDsg7YKAOyDhhI/hhbPhhrs7IO2CgDsg4YSP4YWz4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBLRVVTUworRDA4MTtEMDgxOzExMEYgMTE3MyAxMUJDO0QwODE7MTEwRiAxMTczIDExQkM7ICMgKO2CgTsg7YKBOyDhhI/hhbPhhrw7IO2CgTsg4YSP4YWz4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBLRVVORworRDA4MjtEMDgyOzExMEYgMTE3MyAxMUJEO0QwODI7MTEwRiAxMTczIDExQkQ7ICMgKO2Cgjsg7YKCOyDhhI/hhbPhhr07IO2Cgjsg4YSP4YWz4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBLRVVKCitEMDgzO0QwODM7MTEwRiAxMTczIDExQkU7RDA4MzsxMTBGIDExNzMgMTFCRTsgIyAo7YKDOyDtgoM7IOGEj+GFs+GGvjsg7YKDOyDhhI/hhbPhhr47ICkgSEFOR1VMIFNZTExBQkxFIEtFVUMKK0QwODQ7RDA4NDsxMTBGIDExNzMgMTFCRjtEMDg0OzExMEYgMTE3MyAxMUJGOyAjICjtgoQ7IO2ChDsg4YSP4YWz4Ya/OyDtgoQ7IOGEj+GFs+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgS0VVSworRDA4NTtEMDg1OzExMEYgMTE3MyAxMUMwO0QwODU7MTEwRiAxMTczIDExQzA7ICMgKO2ChTsg7YKFOyDhhI/hhbPhh4A7IO2ChTsg4YSP4YWz4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBLRVVUCitEMDg2O0QwODY7MTEwRiAxMTczIDExQzE7RDA4NjsxMTBGIDExNzMgMTFDMTsgIyAo7YKGOyDtgoY7IOGEj+GFs+GHgTsg7YKGOyDhhI/hhbPhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEtFVVAKK0QwODc7RDA4NzsxMTBGIDExNzMgMTFDMjtEMDg3OzExMEYgMTE3MyAxMUMyOyAjICjtgoc7IO2Chzsg4YSP4YWz4YeCOyDtgoc7IOGEj+GFs+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgS0VVSAorRDA4ODtEMDg4OzExMEYgMTE3NDtEMDg4OzExMEYgMTE3NDsgIyAo7YKIOyDtgog7IOGEj+GFtDsg7YKIOyDhhI/hhbQ7ICkgSEFOR1VMIFNZTExBQkxFIEtZSQorRDA4OTtEMDg5OzExMEYgMTE3NCAxMUE4O0QwODk7MTEwRiAxMTc0IDExQTg7ICMgKO2CiTsg7YKJOyDhhI/hhbThhqg7IO2CiTsg4YSP4YW04YaoOyApIEhBTkdVTCBTWUxMQUJMRSBLWUlHCitEMDhBO0QwOEE7MTEwRiAxMTc0IDExQTk7RDA4QTsxMTBGIDExNzQgMTFBOTsgIyAo7YKKOyDtgoo7IOGEj+GFtOGGqTsg7YKKOyDhhI/hhbThhqk7ICkgSEFOR1VMIFNZTExBQkxFIEtZSUdHCitEMDhCO0QwOEI7MTEwRiAxMTc0IDExQUE7RDA4QjsxMTBGIDExNzQgMTFBQTsgIyAo7YKLOyDtgos7IOGEj+GFtOGGqjsg7YKLOyDhhI/hhbThhqo7ICkgSEFOR1VMIFNZTExBQkxFIEtZSUdTCitEMDhDO0QwOEM7MTEwRiAxMTc0IDExQUI7RDA4QzsxMTBGIDExNzQgMTFBQjsgIyAo7YKMOyDtgow7IOGEj+GFtOGGqzsg7YKMOyDhhI/hhbThhqs7ICkgSEFOR1VMIFNZTExBQkxFIEtZSU4KK0QwOEQ7RDA4RDsxMTBGIDExNzQgMTFBQztEMDhEOzExMEYgMTE3NCAxMUFDOyAjICjtgo07IO2CjTsg4YSP4YW04YasOyDtgo07IOGEj+GFtOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgS1lJTkoKK0QwOEU7RDA4RTsxMTBGIDExNzQgMTFBRDtEMDhFOzExMEYgMTE3NCAxMUFEOyAjICjtgo47IO2Cjjsg4YSP4YW04YatOyDtgo47IOGEj+GFtOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgS1lJTkgKK0QwOEY7RDA4RjsxMTBGIDExNzQgMTFBRTtEMDhGOzExMEYgMTE3NCAxMUFFOyAjICjtgo87IO2Cjzsg4YSP4YW04YauOyDtgo87IOGEj+GFtOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgS1lJRAorRDA5MDtEMDkwOzExMEYgMTE3NCAxMUFGO0QwOTA7MTEwRiAxMTc0IDExQUY7ICMgKO2CkDsg7YKQOyDhhI/hhbThhq87IO2CkDsg4YSP4YW04YavOyApIEhBTkdVTCBTWUxMQUJMRSBLWUlMCitEMDkxO0QwOTE7MTEwRiAxMTc0IDExQjA7RDA5MTsxMTBGIDExNzQgMTFCMDsgIyAo7YKROyDtgpE7IOGEj+GFtOGGsDsg7YKROyDhhI/hhbThhrA7ICkgSEFOR1VMIFNZTExBQkxFIEtZSUxHCitEMDkyO0QwOTI7MTEwRiAxMTc0IDExQjE7RDA5MjsxMTBGIDExNzQgMTFCMTsgIyAo7YKSOyDtgpI7IOGEj+GFtOGGsTsg7YKSOyDhhI/hhbThhrE7ICkgSEFOR1VMIFNZTExBQkxFIEtZSUxNCitEMDkzO0QwOTM7MTEwRiAxMTc0IDExQjI7RDA5MzsxMTBGIDExNzQgMTFCMjsgIyAo7YKTOyDtgpM7IOGEj+GFtOGGsjsg7YKTOyDhhI/hhbThhrI7ICkgSEFOR1VMIFNZTExBQkxFIEtZSUxCCitEMDk0O0QwOTQ7MTEwRiAxMTc0IDExQjM7RDA5NDsxMTBGIDExNzQgMTFCMzsgIyAo7YKUOyDtgpQ7IOGEj+GFtOGGszsg7YKUOyDhhI/hhbThhrM7ICkgSEFOR1VMIFNZTExBQkxFIEtZSUxTCitEMDk1O0QwOTU7MTEwRiAxMTc0IDExQjQ7RDA5NTsxMTBGIDExNzQgMTFCNDsgIyAo7YKVOyDtgpU7IOGEj+GFtOGGtDsg7YKVOyDhhI/hhbThhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEtZSUxUCitEMDk2O0QwOTY7MTEwRiAxMTc0IDExQjU7RDA5NjsxMTBGIDExNzQgMTFCNTsgIyAo7YKWOyDtgpY7IOGEj+GFtOGGtTsg7YKWOyDhhI/hhbThhrU7ICkgSEFOR1VMIFNZTExBQkxFIEtZSUxQCitEMDk3O0QwOTc7MTEwRiAxMTc0IDExQjY7RDA5NzsxMTBGIDExNzQgMTFCNjsgIyAo7YKXOyDtgpc7IOGEj+GFtOGGtjsg7YKXOyDhhI/hhbThhrY7ICkgSEFOR1VMIFNZTExBQkxFIEtZSUxICitEMDk4O0QwOTg7MTEwRiAxMTc0IDExQjc7RDA5ODsxMTBGIDExNzQgMTFCNzsgIyAo7YKYOyDtgpg7IOGEj+GFtOGGtzsg7YKYOyDhhI/hhbThhrc7ICkgSEFOR1VMIFNZTExBQkxFIEtZSU0KK0QwOTk7RDA5OTsxMTBGIDExNzQgMTFCODtEMDk5OzExMEYgMTE3NCAxMUI4OyAjICjtgpk7IO2CmTsg4YSP4YW04Ya4OyDtgpk7IOGEj+GFtOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgS1lJQgorRDA5QTtEMDlBOzExMEYgMTE3NCAxMUI5O0QwOUE7MTEwRiAxMTc0IDExQjk7ICMgKO2Cmjsg7YKaOyDhhI/hhbThhrk7IO2Cmjsg4YSP4YW04Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBLWUlCUworRDA5QjtEMDlCOzExMEYgMTE3NCAxMUJBO0QwOUI7MTEwRiAxMTc0IDExQkE7ICMgKO2Cmzsg7YKbOyDhhI/hhbThhro7IO2Cmzsg4YSP4YW04Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBLWUlTCitEMDlDO0QwOUM7MTEwRiAxMTc0IDExQkI7RDA5QzsxMTBGIDExNzQgMTFCQjsgIyAo7YKcOyDtgpw7IOGEj+GFtOGGuzsg7YKcOyDhhI/hhbThhrs7ICkgSEFOR1VMIFNZTExBQkxFIEtZSVNTCitEMDlEO0QwOUQ7MTEwRiAxMTc0IDExQkM7RDA5RDsxMTBGIDExNzQgMTFCQzsgIyAo7YKdOyDtgp07IOGEj+GFtOGGvDsg7YKdOyDhhI/hhbThhrw7ICkgSEFOR1VMIFNZTExBQkxFIEtZSU5HCitEMDlFO0QwOUU7MTEwRiAxMTc0IDExQkQ7RDA5RTsxMTBGIDExNzQgMTFCRDsgIyAo7YKeOyDtgp47IOGEj+GFtOGGvTsg7YKeOyDhhI/hhbThhr07ICkgSEFOR1VMIFNZTExBQkxFIEtZSUoKK0QwOUY7RDA5RjsxMTBGIDExNzQgMTFCRTtEMDlGOzExMEYgMTE3NCAxMUJFOyAjICjtgp87IO2Cnzsg4YSP4YW04Ya+OyDtgp87IOGEj+GFtOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgS1lJQworRDBBMDtEMEEwOzExMEYgMTE3NCAxMUJGO0QwQTA7MTEwRiAxMTc0IDExQkY7ICMgKO2CoDsg7YKgOyDhhI/hhbThhr87IO2CoDsg4YSP4YW04Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBLWUlLCitEMEExO0QwQTE7MTEwRiAxMTc0IDExQzA7RDBBMTsxMTBGIDExNzQgMTFDMDsgIyAo7YKhOyDtgqE7IOGEj+GFtOGHgDsg7YKhOyDhhI/hhbThh4A7ICkgSEFOR1VMIFNZTExBQkxFIEtZSVQKK0QwQTI7RDBBMjsxMTBGIDExNzQgMTFDMTtEMEEyOzExMEYgMTE3NCAxMUMxOyAjICjtgqI7IO2Cojsg4YSP4YW04YeBOyDtgqI7IOGEj+GFtOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgS1lJUAorRDBBMztEMEEzOzExMEYgMTE3NCAxMUMyO0QwQTM7MTEwRiAxMTc0IDExQzI7ICMgKO2Cozsg7YKjOyDhhI/hhbThh4I7IO2Cozsg4YSP4YW04YeCOyApIEhBTkdVTCBTWUxMQUJMRSBLWUlICitEMEE0O0QwQTQ7MTEwRiAxMTc1O0QwQTQ7MTEwRiAxMTc1OyAjICjtgqQ7IO2CpDsg4YSP4YW1OyDtgqQ7IOGEj+GFtTsgKSBIQU5HVUwgU1lMTEFCTEUgS0kKK0QwQTU7RDBBNTsxMTBGIDExNzUgMTFBODtEMEE1OzExMEYgMTE3NSAxMUE4OyAjICjtgqU7IO2CpTsg4YSP4YW14YaoOyDtgqU7IOGEj+GFteGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgS0lHCitEMEE2O0QwQTY7MTEwRiAxMTc1IDExQTk7RDBBNjsxMTBGIDExNzUgMTFBOTsgIyAo7YKmOyDtgqY7IOGEj+GFteGGqTsg7YKmOyDhhI/hhbXhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEtJR0cKK0QwQTc7RDBBNzsxMTBGIDExNzUgMTFBQTtEMEE3OzExMEYgMTE3NSAxMUFBOyAjICjtgqc7IO2Cpzsg4YSP4YW14YaqOyDtgqc7IOGEj+GFteGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgS0lHUworRDBBODtEMEE4OzExMEYgMTE3NSAxMUFCO0QwQTg7MTEwRiAxMTc1IDExQUI7ICMgKO2CqDsg7YKoOyDhhI/hhbXhhqs7IO2CqDsg4YSP4YW14YarOyApIEhBTkdVTCBTWUxMQUJMRSBLSU4KK0QwQTk7RDBBOTsxMTBGIDExNzUgMTFBQztEMEE5OzExMEYgMTE3NSAxMUFDOyAjICjtgqk7IO2CqTsg4YSP4YW14YasOyDtgqk7IOGEj+GFteGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgS0lOSgorRDBBQTtEMEFBOzExMEYgMTE3NSAxMUFEO0QwQUE7MTEwRiAxMTc1IDExQUQ7ICMgKO2Cqjsg7YKqOyDhhI/hhbXhhq07IO2Cqjsg4YSP4YW14YatOyApIEhBTkdVTCBTWUxMQUJMRSBLSU5ICitEMEFCO0QwQUI7MTEwRiAxMTc1IDExQUU7RDBBQjsxMTBGIDExNzUgMTFBRTsgIyAo7YKrOyDtgqs7IOGEj+GFteGGrjsg7YKrOyDhhI/hhbXhhq47ICkgSEFOR1VMIFNZTExBQkxFIEtJRAorRDBBQztEMEFDOzExMEYgMTE3NSAxMUFGO0QwQUM7MTEwRiAxMTc1IDExQUY7ICMgKO2CrDsg7YKsOyDhhI/hhbXhhq87IO2CrDsg4YSP4YW14YavOyApIEhBTkdVTCBTWUxMQUJMRSBLSUwKK0QwQUQ7RDBBRDsxMTBGIDExNzUgMTFCMDtEMEFEOzExMEYgMTE3NSAxMUIwOyAjICjtgq07IO2CrTsg4YSP4YW14YawOyDtgq07IOGEj+GFteGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgS0lMRworRDBBRTtEMEFFOzExMEYgMTE3NSAxMUIxO0QwQUU7MTEwRiAxMTc1IDExQjE7ICMgKO2Crjsg7YKuOyDhhI/hhbXhhrE7IO2Crjsg4YSP4YW14YaxOyApIEhBTkdVTCBTWUxMQUJMRSBLSUxNCitEMEFGO0QwQUY7MTEwRiAxMTc1IDExQjI7RDBBRjsxMTBGIDExNzUgMTFCMjsgIyAo7YKvOyDtgq87IOGEj+GFteGGsjsg7YKvOyDhhI/hhbXhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEtJTEIKK0QwQjA7RDBCMDsxMTBGIDExNzUgMTFCMztEMEIwOzExMEYgMTE3NSAxMUIzOyAjICjtgrA7IO2CsDsg4YSP4YW14YazOyDtgrA7IOGEj+GFteGGszsgKSBIQU5HVUwgU1lMTEFCTEUgS0lMUworRDBCMTtEMEIxOzExMEYgMTE3NSAxMUI0O0QwQjE7MTEwRiAxMTc1IDExQjQ7ICMgKO2CsTsg7YKxOyDhhI/hhbXhhrQ7IO2CsTsg4YSP4YW14Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBLSUxUCitEMEIyO0QwQjI7MTEwRiAxMTc1IDExQjU7RDBCMjsxMTBGIDExNzUgMTFCNTsgIyAo7YKyOyDtgrI7IOGEj+GFteGGtTsg7YKyOyDhhI/hhbXhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEtJTFAKK0QwQjM7RDBCMzsxMTBGIDExNzUgMTFCNjtEMEIzOzExMEYgMTE3NSAxMUI2OyAjICjtgrM7IO2Cszsg4YSP4YW14Ya2OyDtgrM7IOGEj+GFteGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgS0lMSAorRDBCNDtEMEI0OzExMEYgMTE3NSAxMUI3O0QwQjQ7MTEwRiAxMTc1IDExQjc7ICMgKO2CtDsg7YK0OyDhhI/hhbXhhrc7IO2CtDsg4YSP4YW14Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBLSU0KK0QwQjU7RDBCNTsxMTBGIDExNzUgMTFCODtEMEI1OzExMEYgMTE3NSAxMUI4OyAjICjtgrU7IO2CtTsg4YSP4YW14Ya4OyDtgrU7IOGEj+GFteGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgS0lCCitEMEI2O0QwQjY7MTEwRiAxMTc1IDExQjk7RDBCNjsxMTBGIDExNzUgMTFCOTsgIyAo7YK2OyDtgrY7IOGEj+GFteGGuTsg7YK2OyDhhI/hhbXhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEtJQlMKK0QwQjc7RDBCNzsxMTBGIDExNzUgMTFCQTtEMEI3OzExMEYgMTE3NSAxMUJBOyAjICjtgrc7IO2Ctzsg4YSP4YW14Ya6OyDtgrc7IOGEj+GFteGGujsgKSBIQU5HVUwgU1lMTEFCTEUgS0lTCitEMEI4O0QwQjg7MTEwRiAxMTc1IDExQkI7RDBCODsxMTBGIDExNzUgMTFCQjsgIyAo7YK4OyDtgrg7IOGEj+GFteGGuzsg7YK4OyDhhI/hhbXhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEtJU1MKK0QwQjk7RDBCOTsxMTBGIDExNzUgMTFCQztEMEI5OzExMEYgMTE3NSAxMUJDOyAjICjtgrk7IO2CuTsg4YSP4YW14Ya8OyDtgrk7IOGEj+GFteGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgS0lORworRDBCQTtEMEJBOzExMEYgMTE3NSAxMUJEO0QwQkE7MTEwRiAxMTc1IDExQkQ7ICMgKO2Cujsg7YK6OyDhhI/hhbXhhr07IO2Cujsg4YSP4YW14Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBLSUoKK0QwQkI7RDBCQjsxMTBGIDExNzUgMTFCRTtEMEJCOzExMEYgMTE3NSAxMUJFOyAjICjtgrs7IO2Cuzsg4YSP4YW14Ya+OyDtgrs7IOGEj+GFteGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgS0lDCitEMEJDO0QwQkM7MTEwRiAxMTc1IDExQkY7RDBCQzsxMTBGIDExNzUgMTFCRjsgIyAo7YK8OyDtgrw7IOGEj+GFteGGvzsg7YK8OyDhhI/hhbXhhr87ICkgSEFOR1VMIFNZTExBQkxFIEtJSworRDBCRDtEMEJEOzExMEYgMTE3NSAxMUMwO0QwQkQ7MTEwRiAxMTc1IDExQzA7ICMgKO2CvTsg7YK9OyDhhI/hhbXhh4A7IO2CvTsg4YSP4YW14YeAOyApIEhBTkdVTCBTWUxMQUJMRSBLSVQKK0QwQkU7RDBCRTsxMTBGIDExNzUgMTFDMTtEMEJFOzExMEYgMTE3NSAxMUMxOyAjICjtgr47IO2Cvjsg4YSP4YW14YeBOyDtgr47IOGEj+GFteGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgS0lQCitEMEJGO0QwQkY7MTEwRiAxMTc1IDExQzI7RDBCRjsxMTBGIDExNzUgMTFDMjsgIyAo7YK/OyDtgr87IOGEj+GFteGHgjsg7YK/OyDhhI/hhbXhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEtJSAorRDBDMDtEMEMwOzExMTAgMTE2MTtEMEMwOzExMTAgMTE2MTsgIyAo7YOAOyDtg4A7IOGEkOGFoTsg7YOAOyDhhJDhhaE7ICkgSEFOR1VMIFNZTExBQkxFIFRBCitEMEMxO0QwQzE7MTExMCAxMTYxIDExQTg7RDBDMTsxMTEwIDExNjEgMTFBODsgIyAo7YOBOyDtg4E7IOGEkOGFoeGGqDsg7YOBOyDhhJDhhaHhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFRBRworRDBDMjtEMEMyOzExMTAgMTE2MSAxMUE5O0QwQzI7MTExMCAxMTYxIDExQTk7ICMgKO2Dgjsg7YOCOyDhhJDhhaHhhqk7IO2Dgjsg4YSQ4YWh4YapOyApIEhBTkdVTCBTWUxMQUJMRSBUQUdHCitEMEMzO0QwQzM7MTExMCAxMTYxIDExQUE7RDBDMzsxMTEwIDExNjEgMTFBQTsgIyAo7YODOyDtg4M7IOGEkOGFoeGGqjsg7YODOyDhhJDhhaHhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFRBR1MKK0QwQzQ7RDBDNDsxMTEwIDExNjEgMTFBQjtEMEM0OzExMTAgMTE2MSAxMUFCOyAjICjtg4Q7IO2DhDsg4YSQ4YWh4YarOyDtg4Q7IOGEkOGFoeGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgVEFOCitEMEM1O0QwQzU7MTExMCAxMTYxIDExQUM7RDBDNTsxMTEwIDExNjEgMTFBQzsgIyAo7YOFOyDtg4U7IOGEkOGFoeGGrDsg7YOFOyDhhJDhhaHhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFRBTkoKK0QwQzY7RDBDNjsxMTEwIDExNjEgMTFBRDtEMEM2OzExMTAgMTE2MSAxMUFEOyAjICjtg4Y7IO2Dhjsg4YSQ4YWh4YatOyDtg4Y7IOGEkOGFoeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgVEFOSAorRDBDNztEMEM3OzExMTAgMTE2MSAxMUFFO0QwQzc7MTExMCAxMTYxIDExQUU7ICMgKO2Dhzsg7YOHOyDhhJDhhaHhhq47IO2Dhzsg4YSQ4YWh4YauOyApIEhBTkdVTCBTWUxMQUJMRSBUQUQKK0QwQzg7RDBDODsxMTEwIDExNjEgMTFBRjtEMEM4OzExMTAgMTE2MSAxMUFGOyAjICjtg4g7IO2DiDsg4YSQ4YWh4YavOyDtg4g7IOGEkOGFoeGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgVEFMCitEMEM5O0QwQzk7MTExMCAxMTYxIDExQjA7RDBDOTsxMTEwIDExNjEgMTFCMDsgIyAo7YOJOyDtg4k7IOGEkOGFoeGGsDsg7YOJOyDhhJDhhaHhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFRBTEcKK0QwQ0E7RDBDQTsxMTEwIDExNjEgMTFCMTtEMENBOzExMTAgMTE2MSAxMUIxOyAjICjtg4o7IO2Dijsg4YSQ4YWh4YaxOyDtg4o7IOGEkOGFoeGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgVEFMTQorRDBDQjtEMENCOzExMTAgMTE2MSAxMUIyO0QwQ0I7MTExMCAxMTYxIDExQjI7ICMgKO2Dizsg7YOLOyDhhJDhhaHhhrI7IO2Dizsg4YSQ4YWh4YayOyApIEhBTkdVTCBTWUxMQUJMRSBUQUxCCitEMENDO0QwQ0M7MTExMCAxMTYxIDExQjM7RDBDQzsxMTEwIDExNjEgMTFCMzsgIyAo7YOMOyDtg4w7IOGEkOGFoeGGszsg7YOMOyDhhJDhhaHhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFRBTFMKK0QwQ0Q7RDBDRDsxMTEwIDExNjEgMTFCNDtEMENEOzExMTAgMTE2MSAxMUI0OyAjICjtg407IO2DjTsg4YSQ4YWh4Ya0OyDtg407IOGEkOGFoeGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgVEFMVAorRDBDRTtEMENFOzExMTAgMTE2MSAxMUI1O0QwQ0U7MTExMCAxMTYxIDExQjU7ICMgKO2Djjsg7YOOOyDhhJDhhaHhhrU7IO2Djjsg4YSQ4YWh4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBUQUxQCitEMENGO0QwQ0Y7MTExMCAxMTYxIDExQjY7RDBDRjsxMTEwIDExNjEgMTFCNjsgIyAo7YOPOyDtg487IOGEkOGFoeGGtjsg7YOPOyDhhJDhhaHhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFRBTEgKK0QwRDA7RDBEMDsxMTEwIDExNjEgMTFCNztEMEQwOzExMTAgMTE2MSAxMUI3OyAjICjtg5A7IO2DkDsg4YSQ4YWh4Ya3OyDtg5A7IOGEkOGFoeGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgVEFNCitEMEQxO0QwRDE7MTExMCAxMTYxIDExQjg7RDBEMTsxMTEwIDExNjEgMTFCODsgIyAo7YOROyDtg5E7IOGEkOGFoeGGuDsg7YOROyDhhJDhhaHhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFRBQgorRDBEMjtEMEQyOzExMTAgMTE2MSAxMUI5O0QwRDI7MTExMCAxMTYxIDExQjk7ICMgKO2Dkjsg7YOSOyDhhJDhhaHhhrk7IO2Dkjsg4YSQ4YWh4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBUQUJTCitEMEQzO0QwRDM7MTExMCAxMTYxIDExQkE7RDBEMzsxMTEwIDExNjEgMTFCQTsgIyAo7YOTOyDtg5M7IOGEkOGFoeGGujsg7YOTOyDhhJDhhaHhhro7ICkgSEFOR1VMIFNZTExBQkxFIFRBUworRDBENDtEMEQ0OzExMTAgMTE2MSAxMUJCO0QwRDQ7MTExMCAxMTYxIDExQkI7ICMgKO2DlDsg7YOUOyDhhJDhhaHhhrs7IO2DlDsg4YSQ4YWh4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBUQVNTCitEMEQ1O0QwRDU7MTExMCAxMTYxIDExQkM7RDBENTsxMTEwIDExNjEgMTFCQzsgIyAo7YOVOyDtg5U7IOGEkOGFoeGGvDsg7YOVOyDhhJDhhaHhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFRBTkcKK0QwRDY7RDBENjsxMTEwIDExNjEgMTFCRDtEMEQ2OzExMTAgMTE2MSAxMUJEOyAjICjtg5Y7IO2Dljsg4YSQ4YWh4Ya9OyDtg5Y7IOGEkOGFoeGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgVEFKCitEMEQ3O0QwRDc7MTExMCAxMTYxIDExQkU7RDBENzsxMTEwIDExNjEgMTFCRTsgIyAo7YOXOyDtg5c7IOGEkOGFoeGGvjsg7YOXOyDhhJDhhaHhhr47ICkgSEFOR1VMIFNZTExBQkxFIFRBQworRDBEODtEMEQ4OzExMTAgMTE2MSAxMUJGO0QwRDg7MTExMCAxMTYxIDExQkY7ICMgKO2DmDsg7YOYOyDhhJDhhaHhhr87IO2DmDsg4YSQ4YWh4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBUQUsKK0QwRDk7RDBEOTsxMTEwIDExNjEgMTFDMDtEMEQ5OzExMTAgMTE2MSAxMUMwOyAjICjtg5k7IO2DmTsg4YSQ4YWh4YeAOyDtg5k7IOGEkOGFoeGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgVEFUCitEMERBO0QwREE7MTExMCAxMTYxIDExQzE7RDBEQTsxMTEwIDExNjEgMTFDMTsgIyAo7YOaOyDtg5o7IOGEkOGFoeGHgTsg7YOaOyDhhJDhhaHhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFRBUAorRDBEQjtEMERCOzExMTAgMTE2MSAxMUMyO0QwREI7MTExMCAxMTYxIDExQzI7ICMgKO2Dmzsg7YObOyDhhJDhhaHhh4I7IO2Dmzsg4YSQ4YWh4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBUQUgKK0QwREM7RDBEQzsxMTEwIDExNjI7RDBEQzsxMTEwIDExNjI7ICMgKO2DnDsg7YOcOyDhhJDhhaI7IO2DnDsg4YSQ4YWiOyApIEhBTkdVTCBTWUxMQUJMRSBUQUUKK0QwREQ7RDBERDsxMTEwIDExNjIgMTFBODtEMEREOzExMTAgMTE2MiAxMUE4OyAjICjtg507IO2DnTsg4YSQ4YWi4YaoOyDtg507IOGEkOGFouGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgVEFFRworRDBERTtEMERFOzExMTAgMTE2MiAxMUE5O0QwREU7MTExMCAxMTYyIDExQTk7ICMgKO2Dnjsg7YOeOyDhhJDhhaLhhqk7IO2Dnjsg4YSQ4YWi4YapOyApIEhBTkdVTCBTWUxMQUJMRSBUQUVHRworRDBERjtEMERGOzExMTAgMTE2MiAxMUFBO0QwREY7MTExMCAxMTYyIDExQUE7ICMgKO2Dnzsg7YOfOyDhhJDhhaLhhqo7IO2Dnzsg4YSQ4YWi4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBUQUVHUworRDBFMDtEMEUwOzExMTAgMTE2MiAxMUFCO0QwRTA7MTExMCAxMTYyIDExQUI7ICMgKO2DoDsg7YOgOyDhhJDhhaLhhqs7IO2DoDsg4YSQ4YWi4YarOyApIEhBTkdVTCBTWUxMQUJMRSBUQUVOCitEMEUxO0QwRTE7MTExMCAxMTYyIDExQUM7RDBFMTsxMTEwIDExNjIgMTFBQzsgIyAo7YOhOyDtg6E7IOGEkOGFouGGrDsg7YOhOyDhhJDhhaLhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFRBRU5KCitEMEUyO0QwRTI7MTExMCAxMTYyIDExQUQ7RDBFMjsxMTEwIDExNjIgMTFBRDsgIyAo7YOiOyDtg6I7IOGEkOGFouGGrTsg7YOiOyDhhJDhhaLhhq07ICkgSEFOR1VMIFNZTExBQkxFIFRBRU5ICitEMEUzO0QwRTM7MTExMCAxMTYyIDExQUU7RDBFMzsxMTEwIDExNjIgMTFBRTsgIyAo7YOjOyDtg6M7IOGEkOGFouGGrjsg7YOjOyDhhJDhhaLhhq47ICkgSEFOR1VMIFNZTExBQkxFIFRBRUQKK0QwRTQ7RDBFNDsxMTEwIDExNjIgMTFBRjtEMEU0OzExMTAgMTE2MiAxMUFGOyAjICjtg6Q7IO2DpDsg4YSQ4YWi4YavOyDtg6Q7IOGEkOGFouGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgVEFFTAorRDBFNTtEMEU1OzExMTAgMTE2MiAxMUIwO0QwRTU7MTExMCAxMTYyIDExQjA7ICMgKO2DpTsg7YOlOyDhhJDhhaLhhrA7IO2DpTsg4YSQ4YWi4YawOyApIEhBTkdVTCBTWUxMQUJMRSBUQUVMRworRDBFNjtEMEU2OzExMTAgMTE2MiAxMUIxO0QwRTY7MTExMCAxMTYyIDExQjE7ICMgKO2Dpjsg7YOmOyDhhJDhhaLhhrE7IO2Dpjsg4YSQ4YWi4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBUQUVMTQorRDBFNztEMEU3OzExMTAgMTE2MiAxMUIyO0QwRTc7MTExMCAxMTYyIDExQjI7ICMgKO2Dpzsg7YOnOyDhhJDhhaLhhrI7IO2Dpzsg4YSQ4YWi4YayOyApIEhBTkdVTCBTWUxMQUJMRSBUQUVMQgorRDBFODtEMEU4OzExMTAgMTE2MiAxMUIzO0QwRTg7MTExMCAxMTYyIDExQjM7ICMgKO2DqDsg7YOoOyDhhJDhhaLhhrM7IO2DqDsg4YSQ4YWi4YazOyApIEhBTkdVTCBTWUxMQUJMRSBUQUVMUworRDBFOTtEMEU5OzExMTAgMTE2MiAxMUI0O0QwRTk7MTExMCAxMTYyIDExQjQ7ICMgKO2DqTsg7YOpOyDhhJDhhaLhhrQ7IO2DqTsg4YSQ4YWi4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBUQUVMVAorRDBFQTtEMEVBOzExMTAgMTE2MiAxMUI1O0QwRUE7MTExMCAxMTYyIDExQjU7ICMgKO2Dqjsg7YOqOyDhhJDhhaLhhrU7IO2Dqjsg4YSQ4YWi4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBUQUVMUAorRDBFQjtEMEVCOzExMTAgMTE2MiAxMUI2O0QwRUI7MTExMCAxMTYyIDExQjY7ICMgKO2Dqzsg7YOrOyDhhJDhhaLhhrY7IO2Dqzsg4YSQ4YWi4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBUQUVMSAorRDBFQztEMEVDOzExMTAgMTE2MiAxMUI3O0QwRUM7MTExMCAxMTYyIDExQjc7ICMgKO2DrDsg7YOsOyDhhJDhhaLhhrc7IO2DrDsg4YSQ4YWi4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBUQUVNCitEMEVEO0QwRUQ7MTExMCAxMTYyIDExQjg7RDBFRDsxMTEwIDExNjIgMTFCODsgIyAo7YOtOyDtg607IOGEkOGFouGGuDsg7YOtOyDhhJDhhaLhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFRBRUIKK0QwRUU7RDBFRTsxMTEwIDExNjIgMTFCOTtEMEVFOzExMTAgMTE2MiAxMUI5OyAjICjtg647IO2Drjsg4YSQ4YWi4Ya5OyDtg647IOGEkOGFouGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgVEFFQlMKK0QwRUY7RDBFRjsxMTEwIDExNjIgMTFCQTtEMEVGOzExMTAgMTE2MiAxMUJBOyAjICjtg687IO2Drzsg4YSQ4YWi4Ya6OyDtg687IOGEkOGFouGGujsgKSBIQU5HVUwgU1lMTEFCTEUgVEFFUworRDBGMDtEMEYwOzExMTAgMTE2MiAxMUJCO0QwRjA7MTExMCAxMTYyIDExQkI7ICMgKO2DsDsg7YOwOyDhhJDhhaLhhrs7IO2DsDsg4YSQ4YWi4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBUQUVTUworRDBGMTtEMEYxOzExMTAgMTE2MiAxMUJDO0QwRjE7MTExMCAxMTYyIDExQkM7ICMgKO2DsTsg7YOxOyDhhJDhhaLhhrw7IO2DsTsg4YSQ4YWi4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBUQUVORworRDBGMjtEMEYyOzExMTAgMTE2MiAxMUJEO0QwRjI7MTExMCAxMTYyIDExQkQ7ICMgKO2Dsjsg7YOyOyDhhJDhhaLhhr07IO2Dsjsg4YSQ4YWi4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBUQUVKCitEMEYzO0QwRjM7MTExMCAxMTYyIDExQkU7RDBGMzsxMTEwIDExNjIgMTFCRTsgIyAo7YOzOyDtg7M7IOGEkOGFouGGvjsg7YOzOyDhhJDhhaLhhr47ICkgSEFOR1VMIFNZTExBQkxFIFRBRUMKK0QwRjQ7RDBGNDsxMTEwIDExNjIgMTFCRjtEMEY0OzExMTAgMTE2MiAxMUJGOyAjICjtg7Q7IO2DtDsg4YSQ4YWi4Ya/OyDtg7Q7IOGEkOGFouGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgVEFFSworRDBGNTtEMEY1OzExMTAgMTE2MiAxMUMwO0QwRjU7MTExMCAxMTYyIDExQzA7ICMgKO2DtTsg7YO1OyDhhJDhhaLhh4A7IO2DtTsg4YSQ4YWi4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBUQUVUCitEMEY2O0QwRjY7MTExMCAxMTYyIDExQzE7RDBGNjsxMTEwIDExNjIgMTFDMTsgIyAo7YO2OyDtg7Y7IOGEkOGFouGHgTsg7YO2OyDhhJDhhaLhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFRBRVAKK0QwRjc7RDBGNzsxMTEwIDExNjIgMTFDMjtEMEY3OzExMTAgMTE2MiAxMUMyOyAjICjtg7c7IO2Dtzsg4YSQ4YWi4YeCOyDtg7c7IOGEkOGFouGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgVEFFSAorRDBGODtEMEY4OzExMTAgMTE2MztEMEY4OzExMTAgMTE2MzsgIyAo7YO4OyDtg7g7IOGEkOGFozsg7YO4OyDhhJDhhaM7ICkgSEFOR1VMIFNZTExBQkxFIFRZQQorRDBGOTtEMEY5OzExMTAgMTE2MyAxMUE4O0QwRjk7MTExMCAxMTYzIDExQTg7ICMgKO2DuTsg7YO5OyDhhJDhhaPhhqg7IO2DuTsg4YSQ4YWj4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBUWUFHCitEMEZBO0QwRkE7MTExMCAxMTYzIDExQTk7RDBGQTsxMTEwIDExNjMgMTFBOTsgIyAo7YO6OyDtg7o7IOGEkOGFo+GGqTsg7YO6OyDhhJDhhaPhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFRZQUdHCitEMEZCO0QwRkI7MTExMCAxMTYzIDExQUE7RDBGQjsxMTEwIDExNjMgMTFBQTsgIyAo7YO7OyDtg7s7IOGEkOGFo+GGqjsg7YO7OyDhhJDhhaPhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFRZQUdTCitEMEZDO0QwRkM7MTExMCAxMTYzIDExQUI7RDBGQzsxMTEwIDExNjMgMTFBQjsgIyAo7YO8OyDtg7w7IOGEkOGFo+GGqzsg7YO8OyDhhJDhhaPhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFRZQU4KK0QwRkQ7RDBGRDsxMTEwIDExNjMgMTFBQztEMEZEOzExMTAgMTE2MyAxMUFDOyAjICjtg707IO2DvTsg4YSQ4YWj4YasOyDtg707IOGEkOGFo+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgVFlBTkoKK0QwRkU7RDBGRTsxMTEwIDExNjMgMTFBRDtEMEZFOzExMTAgMTE2MyAxMUFEOyAjICjtg747IO2Dvjsg4YSQ4YWj4YatOyDtg747IOGEkOGFo+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgVFlBTkgKK0QwRkY7RDBGRjsxMTEwIDExNjMgMTFBRTtEMEZGOzExMTAgMTE2MyAxMUFFOyAjICjtg787IO2Dvzsg4YSQ4YWj4YauOyDtg787IOGEkOGFo+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgVFlBRAorRDEwMDtEMTAwOzExMTAgMTE2MyAxMUFGO0QxMDA7MTExMCAxMTYzIDExQUY7ICMgKO2EgDsg7YSAOyDhhJDhhaPhhq87IO2EgDsg4YSQ4YWj4YavOyApIEhBTkdVTCBTWUxMQUJMRSBUWUFMCitEMTAxO0QxMDE7MTExMCAxMTYzIDExQjA7RDEwMTsxMTEwIDExNjMgMTFCMDsgIyAo7YSBOyDthIE7IOGEkOGFo+GGsDsg7YSBOyDhhJDhhaPhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFRZQUxHCitEMTAyO0QxMDI7MTExMCAxMTYzIDExQjE7RDEwMjsxMTEwIDExNjMgMTFCMTsgIyAo7YSCOyDthII7IOGEkOGFo+GGsTsg7YSCOyDhhJDhhaPhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFRZQUxNCitEMTAzO0QxMDM7MTExMCAxMTYzIDExQjI7RDEwMzsxMTEwIDExNjMgMTFCMjsgIyAo7YSDOyDthIM7IOGEkOGFo+GGsjsg7YSDOyDhhJDhhaPhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFRZQUxCCitEMTA0O0QxMDQ7MTExMCAxMTYzIDExQjM7RDEwNDsxMTEwIDExNjMgMTFCMzsgIyAo7YSEOyDthIQ7IOGEkOGFo+GGszsg7YSEOyDhhJDhhaPhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFRZQUxTCitEMTA1O0QxMDU7MTExMCAxMTYzIDExQjQ7RDEwNTsxMTEwIDExNjMgMTFCNDsgIyAo7YSFOyDthIU7IOGEkOGFo+GGtDsg7YSFOyDhhJDhhaPhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFRZQUxUCitEMTA2O0QxMDY7MTExMCAxMTYzIDExQjU7RDEwNjsxMTEwIDExNjMgMTFCNTsgIyAo7YSGOyDthIY7IOGEkOGFo+GGtTsg7YSGOyDhhJDhhaPhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFRZQUxQCitEMTA3O0QxMDc7MTExMCAxMTYzIDExQjY7RDEwNzsxMTEwIDExNjMgMTFCNjsgIyAo7YSHOyDthIc7IOGEkOGFo+GGtjsg7YSHOyDhhJDhhaPhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFRZQUxICitEMTA4O0QxMDg7MTExMCAxMTYzIDExQjc7RDEwODsxMTEwIDExNjMgMTFCNzsgIyAo7YSIOyDthIg7IOGEkOGFo+GGtzsg7YSIOyDhhJDhhaPhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFRZQU0KK0QxMDk7RDEwOTsxMTEwIDExNjMgMTFCODtEMTA5OzExMTAgMTE2MyAxMUI4OyAjICjthIk7IO2EiTsg4YSQ4YWj4Ya4OyDthIk7IOGEkOGFo+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgVFlBQgorRDEwQTtEMTBBOzExMTAgMTE2MyAxMUI5O0QxMEE7MTExMCAxMTYzIDExQjk7ICMgKO2Eijsg7YSKOyDhhJDhhaPhhrk7IO2Eijsg4YSQ4YWj4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBUWUFCUworRDEwQjtEMTBCOzExMTAgMTE2MyAxMUJBO0QxMEI7MTExMCAxMTYzIDExQkE7ICMgKO2Eizsg7YSLOyDhhJDhhaPhhro7IO2Eizsg4YSQ4YWj4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBUWUFTCitEMTBDO0QxMEM7MTExMCAxMTYzIDExQkI7RDEwQzsxMTEwIDExNjMgMTFCQjsgIyAo7YSMOyDthIw7IOGEkOGFo+GGuzsg7YSMOyDhhJDhhaPhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFRZQVNTCitEMTBEO0QxMEQ7MTExMCAxMTYzIDExQkM7RDEwRDsxMTEwIDExNjMgMTFCQzsgIyAo7YSNOyDthI07IOGEkOGFo+GGvDsg7YSNOyDhhJDhhaPhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFRZQU5HCitEMTBFO0QxMEU7MTExMCAxMTYzIDExQkQ7RDEwRTsxMTEwIDExNjMgMTFCRDsgIyAo7YSOOyDthI47IOGEkOGFo+GGvTsg7YSOOyDhhJDhhaPhhr07ICkgSEFOR1VMIFNZTExBQkxFIFRZQUoKK0QxMEY7RDEwRjsxMTEwIDExNjMgMTFCRTtEMTBGOzExMTAgMTE2MyAxMUJFOyAjICjthI87IO2Ejzsg4YSQ4YWj4Ya+OyDthI87IOGEkOGFo+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgVFlBQworRDExMDtEMTEwOzExMTAgMTE2MyAxMUJGO0QxMTA7MTExMCAxMTYzIDExQkY7ICMgKO2EkDsg7YSQOyDhhJDhhaPhhr87IO2EkDsg4YSQ4YWj4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBUWUFLCitEMTExO0QxMTE7MTExMCAxMTYzIDExQzA7RDExMTsxMTEwIDExNjMgMTFDMDsgIyAo7YSROyDthJE7IOGEkOGFo+GHgDsg7YSROyDhhJDhhaPhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFRZQVQKK0QxMTI7RDExMjsxMTEwIDExNjMgMTFDMTtEMTEyOzExMTAgMTE2MyAxMUMxOyAjICjthJI7IO2Ekjsg4YSQ4YWj4YeBOyDthJI7IOGEkOGFo+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgVFlBUAorRDExMztEMTEzOzExMTAgMTE2MyAxMUMyO0QxMTM7MTExMCAxMTYzIDExQzI7ICMgKO2Ekzsg7YSTOyDhhJDhhaPhh4I7IO2Ekzsg4YSQ4YWj4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBUWUFICitEMTE0O0QxMTQ7MTExMCAxMTY0O0QxMTQ7MTExMCAxMTY0OyAjICjthJQ7IO2ElDsg4YSQ4YWkOyDthJQ7IOGEkOGFpDsgKSBIQU5HVUwgU1lMTEFCTEUgVFlBRQorRDExNTtEMTE1OzExMTAgMTE2NCAxMUE4O0QxMTU7MTExMCAxMTY0IDExQTg7ICMgKO2ElTsg7YSVOyDhhJDhhaThhqg7IO2ElTsg4YSQ4YWk4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBUWUFFRworRDExNjtEMTE2OzExMTAgMTE2NCAxMUE5O0QxMTY7MTExMCAxMTY0IDExQTk7ICMgKO2Eljsg7YSWOyDhhJDhhaThhqk7IO2Eljsg4YSQ4YWk4YapOyApIEhBTkdVTCBTWUxMQUJMRSBUWUFFR0cKK0QxMTc7RDExNzsxMTEwIDExNjQgMTFBQTtEMTE3OzExMTAgMTE2NCAxMUFBOyAjICjthJc7IO2Elzsg4YSQ4YWk4YaqOyDthJc7IOGEkOGFpOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgVFlBRUdTCitEMTE4O0QxMTg7MTExMCAxMTY0IDExQUI7RDExODsxMTEwIDExNjQgMTFBQjsgIyAo7YSYOyDthJg7IOGEkOGFpOGGqzsg7YSYOyDhhJDhhaThhqs7ICkgSEFOR1VMIFNZTExBQkxFIFRZQUVOCitEMTE5O0QxMTk7MTExMCAxMTY0IDExQUM7RDExOTsxMTEwIDExNjQgMTFBQzsgIyAo7YSZOyDthJk7IOGEkOGFpOGGrDsg7YSZOyDhhJDhhaThhqw7ICkgSEFOR1VMIFNZTExBQkxFIFRZQUVOSgorRDExQTtEMTFBOzExMTAgMTE2NCAxMUFEO0QxMUE7MTExMCAxMTY0IDExQUQ7ICMgKO2Emjsg7YSaOyDhhJDhhaThhq07IO2Emjsg4YSQ4YWk4YatOyApIEhBTkdVTCBTWUxMQUJMRSBUWUFFTkgKK0QxMUI7RDExQjsxMTEwIDExNjQgMTFBRTtEMTFCOzExMTAgMTE2NCAxMUFFOyAjICjthJs7IO2Emzsg4YSQ4YWk4YauOyDthJs7IOGEkOGFpOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgVFlBRUQKK0QxMUM7RDExQzsxMTEwIDExNjQgMTFBRjtEMTFDOzExMTAgMTE2NCAxMUFGOyAjICjthJw7IO2EnDsg4YSQ4YWk4YavOyDthJw7IOGEkOGFpOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgVFlBRUwKK0QxMUQ7RDExRDsxMTEwIDExNjQgMTFCMDtEMTFEOzExMTAgMTE2NCAxMUIwOyAjICjthJ07IO2EnTsg4YSQ4YWk4YawOyDthJ07IOGEkOGFpOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgVFlBRUxHCitEMTFFO0QxMUU7MTExMCAxMTY0IDExQjE7RDExRTsxMTEwIDExNjQgMTFCMTsgIyAo7YSeOyDthJ47IOGEkOGFpOGGsTsg7YSeOyDhhJDhhaThhrE7ICkgSEFOR1VMIFNZTExBQkxFIFRZQUVMTQorRDExRjtEMTFGOzExMTAgMTE2NCAxMUIyO0QxMUY7MTExMCAxMTY0IDExQjI7ICMgKO2Enzsg7YSfOyDhhJDhhaThhrI7IO2Enzsg4YSQ4YWk4YayOyApIEhBTkdVTCBTWUxMQUJMRSBUWUFFTEIKK0QxMjA7RDEyMDsxMTEwIDExNjQgMTFCMztEMTIwOzExMTAgMTE2NCAxMUIzOyAjICjthKA7IO2EoDsg4YSQ4YWk4YazOyDthKA7IOGEkOGFpOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgVFlBRUxTCitEMTIxO0QxMjE7MTExMCAxMTY0IDExQjQ7RDEyMTsxMTEwIDExNjQgMTFCNDsgIyAo7YShOyDthKE7IOGEkOGFpOGGtDsg7YShOyDhhJDhhaThhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFRZQUVMVAorRDEyMjtEMTIyOzExMTAgMTE2NCAxMUI1O0QxMjI7MTExMCAxMTY0IDExQjU7ICMgKO2Eojsg7YSiOyDhhJDhhaThhrU7IO2Eojsg4YSQ4YWk4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBUWUFFTFAKK0QxMjM7RDEyMzsxMTEwIDExNjQgMTFCNjtEMTIzOzExMTAgMTE2NCAxMUI2OyAjICjthKM7IO2Eozsg4YSQ4YWk4Ya2OyDthKM7IOGEkOGFpOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgVFlBRUxICitEMTI0O0QxMjQ7MTExMCAxMTY0IDExQjc7RDEyNDsxMTEwIDExNjQgMTFCNzsgIyAo7YSkOyDthKQ7IOGEkOGFpOGGtzsg7YSkOyDhhJDhhaThhrc7ICkgSEFOR1VMIFNZTExBQkxFIFRZQUVNCitEMTI1O0QxMjU7MTExMCAxMTY0IDExQjg7RDEyNTsxMTEwIDExNjQgMTFCODsgIyAo7YSlOyDthKU7IOGEkOGFpOGGuDsg7YSlOyDhhJDhhaThhrg7ICkgSEFOR1VMIFNZTExBQkxFIFRZQUVCCitEMTI2O0QxMjY7MTExMCAxMTY0IDExQjk7RDEyNjsxMTEwIDExNjQgMTFCOTsgIyAo7YSmOyDthKY7IOGEkOGFpOGGuTsg7YSmOyDhhJDhhaThhrk7ICkgSEFOR1VMIFNZTExBQkxFIFRZQUVCUworRDEyNztEMTI3OzExMTAgMTE2NCAxMUJBO0QxMjc7MTExMCAxMTY0IDExQkE7ICMgKO2Epzsg7YSnOyDhhJDhhaThhro7IO2Epzsg4YSQ4YWk4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBUWUFFUworRDEyODtEMTI4OzExMTAgMTE2NCAxMUJCO0QxMjg7MTExMCAxMTY0IDExQkI7ICMgKO2EqDsg7YSoOyDhhJDhhaThhrs7IO2EqDsg4YSQ4YWk4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBUWUFFU1MKK0QxMjk7RDEyOTsxMTEwIDExNjQgMTFCQztEMTI5OzExMTAgMTE2NCAxMUJDOyAjICjthKk7IO2EqTsg4YSQ4YWk4Ya8OyDthKk7IOGEkOGFpOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgVFlBRU5HCitEMTJBO0QxMkE7MTExMCAxMTY0IDExQkQ7RDEyQTsxMTEwIDExNjQgMTFCRDsgIyAo7YSqOyDthKo7IOGEkOGFpOGGvTsg7YSqOyDhhJDhhaThhr07ICkgSEFOR1VMIFNZTExBQkxFIFRZQUVKCitEMTJCO0QxMkI7MTExMCAxMTY0IDExQkU7RDEyQjsxMTEwIDExNjQgMTFCRTsgIyAo7YSrOyDthKs7IOGEkOGFpOGGvjsg7YSrOyDhhJDhhaThhr47ICkgSEFOR1VMIFNZTExBQkxFIFRZQUVDCitEMTJDO0QxMkM7MTExMCAxMTY0IDExQkY7RDEyQzsxMTEwIDExNjQgMTFCRjsgIyAo7YSsOyDthKw7IOGEkOGFpOGGvzsg7YSsOyDhhJDhhaThhr87ICkgSEFOR1VMIFNZTExBQkxFIFRZQUVLCitEMTJEO0QxMkQ7MTExMCAxMTY0IDExQzA7RDEyRDsxMTEwIDExNjQgMTFDMDsgIyAo7YStOyDthK07IOGEkOGFpOGHgDsg7YStOyDhhJDhhaThh4A7ICkgSEFOR1VMIFNZTExBQkxFIFRZQUVUCitEMTJFO0QxMkU7MTExMCAxMTY0IDExQzE7RDEyRTsxMTEwIDExNjQgMTFDMTsgIyAo7YSuOyDthK47IOGEkOGFpOGHgTsg7YSuOyDhhJDhhaThh4E7ICkgSEFOR1VMIFNZTExBQkxFIFRZQUVQCitEMTJGO0QxMkY7MTExMCAxMTY0IDExQzI7RDEyRjsxMTEwIDExNjQgMTFDMjsgIyAo7YSvOyDthK87IOGEkOGFpOGHgjsg7YSvOyDhhJDhhaThh4I7ICkgSEFOR1VMIFNZTExBQkxFIFRZQUVICitEMTMwO0QxMzA7MTExMCAxMTY1O0QxMzA7MTExMCAxMTY1OyAjICjthLA7IO2EsDsg4YSQ4YWlOyDthLA7IOGEkOGFpTsgKSBIQU5HVUwgU1lMTEFCTEUgVEVPCitEMTMxO0QxMzE7MTExMCAxMTY1IDExQTg7RDEzMTsxMTEwIDExNjUgMTFBODsgIyAo7YSxOyDthLE7IOGEkOGFpeGGqDsg7YSxOyDhhJDhhaXhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFRFT0cKK0QxMzI7RDEzMjsxMTEwIDExNjUgMTFBOTtEMTMyOzExMTAgMTE2NSAxMUE5OyAjICjthLI7IO2Esjsg4YSQ4YWl4YapOyDthLI7IOGEkOGFpeGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgVEVPR0cKK0QxMzM7RDEzMzsxMTEwIDExNjUgMTFBQTtEMTMzOzExMTAgMTE2NSAxMUFBOyAjICjthLM7IO2Eszsg4YSQ4YWl4YaqOyDthLM7IOGEkOGFpeGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgVEVPR1MKK0QxMzQ7RDEzNDsxMTEwIDExNjUgMTFBQjtEMTM0OzExMTAgMTE2NSAxMUFCOyAjICjthLQ7IO2EtDsg4YSQ4YWl4YarOyDthLQ7IOGEkOGFpeGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgVEVPTgorRDEzNTtEMTM1OzExMTAgMTE2NSAxMUFDO0QxMzU7MTExMCAxMTY1IDExQUM7ICMgKO2EtTsg7YS1OyDhhJDhhaXhhqw7IO2EtTsg4YSQ4YWl4YasOyApIEhBTkdVTCBTWUxMQUJMRSBURU9OSgorRDEzNjtEMTM2OzExMTAgMTE2NSAxMUFEO0QxMzY7MTExMCAxMTY1IDExQUQ7ICMgKO2Etjsg7YS2OyDhhJDhhaXhhq07IO2Etjsg4YSQ4YWl4YatOyApIEhBTkdVTCBTWUxMQUJMRSBURU9OSAorRDEzNztEMTM3OzExMTAgMTE2NSAxMUFFO0QxMzc7MTExMCAxMTY1IDExQUU7ICMgKO2Etzsg7YS3OyDhhJDhhaXhhq47IO2Etzsg4YSQ4YWl4YauOyApIEhBTkdVTCBTWUxMQUJMRSBURU9ECitEMTM4O0QxMzg7MTExMCAxMTY1IDExQUY7RDEzODsxMTEwIDExNjUgMTFBRjsgIyAo7YS4OyDthLg7IOGEkOGFpeGGrzsg7YS4OyDhhJDhhaXhhq87ICkgSEFOR1VMIFNZTExBQkxFIFRFT0wKK0QxMzk7RDEzOTsxMTEwIDExNjUgMTFCMDtEMTM5OzExMTAgMTE2NSAxMUIwOyAjICjthLk7IO2EuTsg4YSQ4YWl4YawOyDthLk7IOGEkOGFpeGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgVEVPTEcKK0QxM0E7RDEzQTsxMTEwIDExNjUgMTFCMTtEMTNBOzExMTAgMTE2NSAxMUIxOyAjICjthLo7IO2Eujsg4YSQ4YWl4YaxOyDthLo7IOGEkOGFpeGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgVEVPTE0KK0QxM0I7RDEzQjsxMTEwIDExNjUgMTFCMjtEMTNCOzExMTAgMTE2NSAxMUIyOyAjICjthLs7IO2Euzsg4YSQ4YWl4YayOyDthLs7IOGEkOGFpeGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgVEVPTEIKK0QxM0M7RDEzQzsxMTEwIDExNjUgMTFCMztEMTNDOzExMTAgMTE2NSAxMUIzOyAjICjthLw7IO2EvDsg4YSQ4YWl4YazOyDthLw7IOGEkOGFpeGGszsgKSBIQU5HVUwgU1lMTEFCTEUgVEVPTFMKK0QxM0Q7RDEzRDsxMTEwIDExNjUgMTFCNDtEMTNEOzExMTAgMTE2NSAxMUI0OyAjICjthL07IO2EvTsg4YSQ4YWl4Ya0OyDthL07IOGEkOGFpeGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgVEVPTFQKK0QxM0U7RDEzRTsxMTEwIDExNjUgMTFCNTtEMTNFOzExMTAgMTE2NSAxMUI1OyAjICjthL47IO2Evjsg4YSQ4YWl4Ya1OyDthL47IOGEkOGFpeGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgVEVPTFAKK0QxM0Y7RDEzRjsxMTEwIDExNjUgMTFCNjtEMTNGOzExMTAgMTE2NSAxMUI2OyAjICjthL87IO2Evzsg4YSQ4YWl4Ya2OyDthL87IOGEkOGFpeGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgVEVPTEgKK0QxNDA7RDE0MDsxMTEwIDExNjUgMTFCNztEMTQwOzExMTAgMTE2NSAxMUI3OyAjICjthYA7IO2FgDsg4YSQ4YWl4Ya3OyDthYA7IOGEkOGFpeGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgVEVPTQorRDE0MTtEMTQxOzExMTAgMTE2NSAxMUI4O0QxNDE7MTExMCAxMTY1IDExQjg7ICMgKO2FgTsg7YWBOyDhhJDhhaXhhrg7IO2FgTsg4YSQ4YWl4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBURU9CCitEMTQyO0QxNDI7MTExMCAxMTY1IDExQjk7RDE0MjsxMTEwIDExNjUgMTFCOTsgIyAo7YWCOyDthYI7IOGEkOGFpeGGuTsg7YWCOyDhhJDhhaXhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFRFT0JTCitEMTQzO0QxNDM7MTExMCAxMTY1IDExQkE7RDE0MzsxMTEwIDExNjUgMTFCQTsgIyAo7YWDOyDthYM7IOGEkOGFpeGGujsg7YWDOyDhhJDhhaXhhro7ICkgSEFOR1VMIFNZTExBQkxFIFRFT1MKK0QxNDQ7RDE0NDsxMTEwIDExNjUgMTFCQjtEMTQ0OzExMTAgMTE2NSAxMUJCOyAjICjthYQ7IO2FhDsg4YSQ4YWl4Ya7OyDthYQ7IOGEkOGFpeGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgVEVPU1MKK0QxNDU7RDE0NTsxMTEwIDExNjUgMTFCQztEMTQ1OzExMTAgMTE2NSAxMUJDOyAjICjthYU7IO2FhTsg4YSQ4YWl4Ya8OyDthYU7IOGEkOGFpeGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgVEVPTkcKK0QxNDY7RDE0NjsxMTEwIDExNjUgMTFCRDtEMTQ2OzExMTAgMTE2NSAxMUJEOyAjICjthYY7IO2Fhjsg4YSQ4YWl4Ya9OyDthYY7IOGEkOGFpeGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgVEVPSgorRDE0NztEMTQ3OzExMTAgMTE2NSAxMUJFO0QxNDc7MTExMCAxMTY1IDExQkU7ICMgKO2Fhzsg7YWHOyDhhJDhhaXhhr47IO2Fhzsg4YSQ4YWl4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBURU9DCitEMTQ4O0QxNDg7MTExMCAxMTY1IDExQkY7RDE0ODsxMTEwIDExNjUgMTFCRjsgIyAo7YWIOyDthYg7IOGEkOGFpeGGvzsg7YWIOyDhhJDhhaXhhr87ICkgSEFOR1VMIFNZTExBQkxFIFRFT0sKK0QxNDk7RDE0OTsxMTEwIDExNjUgMTFDMDtEMTQ5OzExMTAgMTE2NSAxMUMwOyAjICjthYk7IO2FiTsg4YSQ4YWl4YeAOyDthYk7IOGEkOGFpeGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgVEVPVAorRDE0QTtEMTRBOzExMTAgMTE2NSAxMUMxO0QxNEE7MTExMCAxMTY1IDExQzE7ICMgKO2Fijsg7YWKOyDhhJDhhaXhh4E7IO2Fijsg4YSQ4YWl4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBURU9QCitEMTRCO0QxNEI7MTExMCAxMTY1IDExQzI7RDE0QjsxMTEwIDExNjUgMTFDMjsgIyAo7YWLOyDthYs7IOGEkOGFpeGHgjsg7YWLOyDhhJDhhaXhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFRFT0gKK0QxNEM7RDE0QzsxMTEwIDExNjY7RDE0QzsxMTEwIDExNjY7ICMgKO2FjDsg7YWMOyDhhJDhhaY7IO2FjDsg4YSQ4YWmOyApIEhBTkdVTCBTWUxMQUJMRSBURQorRDE0RDtEMTREOzExMTAgMTE2NiAxMUE4O0QxNEQ7MTExMCAxMTY2IDExQTg7ICMgKO2FjTsg7YWNOyDhhJDhhabhhqg7IO2FjTsg4YSQ4YWm4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBURUcKK0QxNEU7RDE0RTsxMTEwIDExNjYgMTFBOTtEMTRFOzExMTAgMTE2NiAxMUE5OyAjICjthY47IO2Fjjsg4YSQ4YWm4YapOyDthY47IOGEkOGFpuGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgVEVHRworRDE0RjtEMTRGOzExMTAgMTE2NiAxMUFBO0QxNEY7MTExMCAxMTY2IDExQUE7ICMgKO2Fjzsg7YWPOyDhhJDhhabhhqo7IO2Fjzsg4YSQ4YWm4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBURUdTCitEMTUwO0QxNTA7MTExMCAxMTY2IDExQUI7RDE1MDsxMTEwIDExNjYgMTFBQjsgIyAo7YWQOyDthZA7IOGEkOGFpuGGqzsg7YWQOyDhhJDhhabhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFRFTgorRDE1MTtEMTUxOzExMTAgMTE2NiAxMUFDO0QxNTE7MTExMCAxMTY2IDExQUM7ICMgKO2FkTsg7YWROyDhhJDhhabhhqw7IO2FkTsg4YSQ4YWm4YasOyApIEhBTkdVTCBTWUxMQUJMRSBURU5KCitEMTUyO0QxNTI7MTExMCAxMTY2IDExQUQ7RDE1MjsxMTEwIDExNjYgMTFBRDsgIyAo7YWSOyDthZI7IOGEkOGFpuGGrTsg7YWSOyDhhJDhhabhhq07ICkgSEFOR1VMIFNZTExBQkxFIFRFTkgKK0QxNTM7RDE1MzsxMTEwIDExNjYgMTFBRTtEMTUzOzExMTAgMTE2NiAxMUFFOyAjICjthZM7IO2Fkzsg4YSQ4YWm4YauOyDthZM7IOGEkOGFpuGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgVEVECitEMTU0O0QxNTQ7MTExMCAxMTY2IDExQUY7RDE1NDsxMTEwIDExNjYgMTFBRjsgIyAo7YWUOyDthZQ7IOGEkOGFpuGGrzsg7YWUOyDhhJDhhabhhq87ICkgSEFOR1VMIFNZTExBQkxFIFRFTAorRDE1NTtEMTU1OzExMTAgMTE2NiAxMUIwO0QxNTU7MTExMCAxMTY2IDExQjA7ICMgKO2FlTsg7YWVOyDhhJDhhabhhrA7IO2FlTsg4YSQ4YWm4YawOyApIEhBTkdVTCBTWUxMQUJMRSBURUxHCitEMTU2O0QxNTY7MTExMCAxMTY2IDExQjE7RDE1NjsxMTEwIDExNjYgMTFCMTsgIyAo7YWWOyDthZY7IOGEkOGFpuGGsTsg7YWWOyDhhJDhhabhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFRFTE0KK0QxNTc7RDE1NzsxMTEwIDExNjYgMTFCMjtEMTU3OzExMTAgMTE2NiAxMUIyOyAjICjthZc7IO2Flzsg4YSQ4YWm4YayOyDthZc7IOGEkOGFpuGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgVEVMQgorRDE1ODtEMTU4OzExMTAgMTE2NiAxMUIzO0QxNTg7MTExMCAxMTY2IDExQjM7ICMgKO2FmDsg7YWYOyDhhJDhhabhhrM7IO2FmDsg4YSQ4YWm4YazOyApIEhBTkdVTCBTWUxMQUJMRSBURUxTCitEMTU5O0QxNTk7MTExMCAxMTY2IDExQjQ7RDE1OTsxMTEwIDExNjYgMTFCNDsgIyAo7YWZOyDthZk7IOGEkOGFpuGGtDsg7YWZOyDhhJDhhabhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFRFTFQKK0QxNUE7RDE1QTsxMTEwIDExNjYgMTFCNTtEMTVBOzExMTAgMTE2NiAxMUI1OyAjICjthZo7IO2Fmjsg4YSQ4YWm4Ya1OyDthZo7IOGEkOGFpuGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgVEVMUAorRDE1QjtEMTVCOzExMTAgMTE2NiAxMUI2O0QxNUI7MTExMCAxMTY2IDExQjY7ICMgKO2Fmzsg7YWbOyDhhJDhhabhhrY7IO2Fmzsg4YSQ4YWm4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBURUxICitEMTVDO0QxNUM7MTExMCAxMTY2IDExQjc7RDE1QzsxMTEwIDExNjYgMTFCNzsgIyAo7YWcOyDthZw7IOGEkOGFpuGGtzsg7YWcOyDhhJDhhabhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFRFTQorRDE1RDtEMTVEOzExMTAgMTE2NiAxMUI4O0QxNUQ7MTExMCAxMTY2IDExQjg7ICMgKO2FnTsg7YWdOyDhhJDhhabhhrg7IO2FnTsg4YSQ4YWm4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBURUIKK0QxNUU7RDE1RTsxMTEwIDExNjYgMTFCOTtEMTVFOzExMTAgMTE2NiAxMUI5OyAjICjthZ47IO2Fnjsg4YSQ4YWm4Ya5OyDthZ47IOGEkOGFpuGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgVEVCUworRDE1RjtEMTVGOzExMTAgMTE2NiAxMUJBO0QxNUY7MTExMCAxMTY2IDExQkE7ICMgKO2Fnzsg7YWfOyDhhJDhhabhhro7IO2Fnzsg4YSQ4YWm4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBURVMKK0QxNjA7RDE2MDsxMTEwIDExNjYgMTFCQjtEMTYwOzExMTAgMTE2NiAxMUJCOyAjICjthaA7IO2FoDsg4YSQ4YWm4Ya7OyDthaA7IOGEkOGFpuGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgVEVTUworRDE2MTtEMTYxOzExMTAgMTE2NiAxMUJDO0QxNjE7MTExMCAxMTY2IDExQkM7ICMgKO2FoTsg7YWhOyDhhJDhhabhhrw7IO2FoTsg4YSQ4YWm4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBURU5HCitEMTYyO0QxNjI7MTExMCAxMTY2IDExQkQ7RDE2MjsxMTEwIDExNjYgMTFCRDsgIyAo7YWiOyDthaI7IOGEkOGFpuGGvTsg7YWiOyDhhJDhhabhhr07ICkgSEFOR1VMIFNZTExBQkxFIFRFSgorRDE2MztEMTYzOzExMTAgMTE2NiAxMUJFO0QxNjM7MTExMCAxMTY2IDExQkU7ICMgKO2Fozsg7YWjOyDhhJDhhabhhr47IO2Fozsg4YSQ4YWm4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBURUMKK0QxNjQ7RDE2NDsxMTEwIDExNjYgMTFCRjtEMTY0OzExMTAgMTE2NiAxMUJGOyAjICjthaQ7IO2FpDsg4YSQ4YWm4Ya/OyDthaQ7IOGEkOGFpuGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgVEVLCitEMTY1O0QxNjU7MTExMCAxMTY2IDExQzA7RDE2NTsxMTEwIDExNjYgMTFDMDsgIyAo7YWlOyDthaU7IOGEkOGFpuGHgDsg7YWlOyDhhJDhhabhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFRFVAorRDE2NjtEMTY2OzExMTAgMTE2NiAxMUMxO0QxNjY7MTExMCAxMTY2IDExQzE7ICMgKO2Fpjsg7YWmOyDhhJDhhabhh4E7IO2Fpjsg4YSQ4YWm4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBURVAKK0QxNjc7RDE2NzsxMTEwIDExNjYgMTFDMjtEMTY3OzExMTAgMTE2NiAxMUMyOyAjICjthac7IO2Fpzsg4YSQ4YWm4YeCOyDthac7IOGEkOGFpuGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgVEVICitEMTY4O0QxNjg7MTExMCAxMTY3O0QxNjg7MTExMCAxMTY3OyAjICjthag7IO2FqDsg4YSQ4YWnOyDthag7IOGEkOGFpzsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFTworRDE2OTtEMTY5OzExMTAgMTE2NyAxMUE4O0QxNjk7MTExMCAxMTY3IDExQTg7ICMgKO2FqTsg7YWpOyDhhJDhhafhhqg7IO2FqTsg4YSQ4YWn4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBUWUVPRworRDE2QTtEMTZBOzExMTAgMTE2NyAxMUE5O0QxNkE7MTExMCAxMTY3IDExQTk7ICMgKO2Fqjsg7YWqOyDhhJDhhafhhqk7IO2Fqjsg4YSQ4YWn4YapOyApIEhBTkdVTCBTWUxMQUJMRSBUWUVPR0cKK0QxNkI7RDE2QjsxMTEwIDExNjcgMTFBQTtEMTZCOzExMTAgMTE2NyAxMUFBOyAjICjthas7IO2Fqzsg4YSQ4YWn4YaqOyDthas7IOGEkOGFp+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFT0dTCitEMTZDO0QxNkM7MTExMCAxMTY3IDExQUI7RDE2QzsxMTEwIDExNjcgMTFBQjsgIyAo7YWsOyDthaw7IOGEkOGFp+GGqzsg7YWsOyDhhJDhhafhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFRZRU9OCitEMTZEO0QxNkQ7MTExMCAxMTY3IDExQUM7RDE2RDsxMTEwIDExNjcgMTFBQzsgIyAo7YWtOyDtha07IOGEkOGFp+GGrDsg7YWtOyDhhJDhhafhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFRZRU9OSgorRDE2RTtEMTZFOzExMTAgMTE2NyAxMUFEO0QxNkU7MTExMCAxMTY3IDExQUQ7ICMgKO2Frjsg7YWuOyDhhJDhhafhhq07IO2Frjsg4YSQ4YWn4YatOyApIEhBTkdVTCBTWUxMQUJMRSBUWUVPTkgKK0QxNkY7RDE2RjsxMTEwIDExNjcgMTFBRTtEMTZGOzExMTAgMTE2NyAxMUFFOyAjICjtha87IO2Frzsg4YSQ4YWn4YauOyDtha87IOGEkOGFp+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFT0QKK0QxNzA7RDE3MDsxMTEwIDExNjcgMTFBRjtEMTcwOzExMTAgMTE2NyAxMUFGOyAjICjthbA7IO2FsDsg4YSQ4YWn4YavOyDthbA7IOGEkOGFp+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFT0wKK0QxNzE7RDE3MTsxMTEwIDExNjcgMTFCMDtEMTcxOzExMTAgMTE2NyAxMUIwOyAjICjthbE7IO2FsTsg4YSQ4YWn4YawOyDthbE7IOGEkOGFp+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFT0xHCitEMTcyO0QxNzI7MTExMCAxMTY3IDExQjE7RDE3MjsxMTEwIDExNjcgMTFCMTsgIyAo7YWyOyDthbI7IOGEkOGFp+GGsTsg7YWyOyDhhJDhhafhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFRZRU9MTQorRDE3MztEMTczOzExMTAgMTE2NyAxMUIyO0QxNzM7MTExMCAxMTY3IDExQjI7ICMgKO2Fszsg7YWzOyDhhJDhhafhhrI7IO2Fszsg4YSQ4YWn4YayOyApIEhBTkdVTCBTWUxMQUJMRSBUWUVPTEIKK0QxNzQ7RDE3NDsxMTEwIDExNjcgMTFCMztEMTc0OzExMTAgMTE2NyAxMUIzOyAjICjthbQ7IO2FtDsg4YSQ4YWn4YazOyDthbQ7IOGEkOGFp+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFT0xTCitEMTc1O0QxNzU7MTExMCAxMTY3IDExQjQ7RDE3NTsxMTEwIDExNjcgMTFCNDsgIyAo7YW1OyDthbU7IOGEkOGFp+GGtDsg7YW1OyDhhJDhhafhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFRZRU9MVAorRDE3NjtEMTc2OzExMTAgMTE2NyAxMUI1O0QxNzY7MTExMCAxMTY3IDExQjU7ICMgKO2Ftjsg7YW2OyDhhJDhhafhhrU7IO2Ftjsg4YSQ4YWn4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBUWUVPTFAKK0QxNzc7RDE3NzsxMTEwIDExNjcgMTFCNjtEMTc3OzExMTAgMTE2NyAxMUI2OyAjICjthbc7IO2Ftzsg4YSQ4YWn4Ya2OyDthbc7IOGEkOGFp+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFT0xICitEMTc4O0QxNzg7MTExMCAxMTY3IDExQjc7RDE3ODsxMTEwIDExNjcgMTFCNzsgIyAo7YW4OyDthbg7IOGEkOGFp+GGtzsg7YW4OyDhhJDhhafhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFRZRU9NCitEMTc5O0QxNzk7MTExMCAxMTY3IDExQjg7RDE3OTsxMTEwIDExNjcgMTFCODsgIyAo7YW5OyDthbk7IOGEkOGFp+GGuDsg7YW5OyDhhJDhhafhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFRZRU9CCitEMTdBO0QxN0E7MTExMCAxMTY3IDExQjk7RDE3QTsxMTEwIDExNjcgMTFCOTsgIyAo7YW6OyDthbo7IOGEkOGFp+GGuTsg7YW6OyDhhJDhhafhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFRZRU9CUworRDE3QjtEMTdCOzExMTAgMTE2NyAxMUJBO0QxN0I7MTExMCAxMTY3IDExQkE7ICMgKO2Fuzsg7YW7OyDhhJDhhafhhro7IO2Fuzsg4YSQ4YWn4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBUWUVPUworRDE3QztEMTdDOzExMTAgMTE2NyAxMUJCO0QxN0M7MTExMCAxMTY3IDExQkI7ICMgKO2FvDsg7YW8OyDhhJDhhafhhrs7IO2FvDsg4YSQ4YWn4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBUWUVPU1MKK0QxN0Q7RDE3RDsxMTEwIDExNjcgMTFCQztEMTdEOzExMTAgMTE2NyAxMUJDOyAjICjthb07IO2FvTsg4YSQ4YWn4Ya8OyDthb07IOGEkOGFp+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFT05HCitEMTdFO0QxN0U7MTExMCAxMTY3IDExQkQ7RDE3RTsxMTEwIDExNjcgMTFCRDsgIyAo7YW+OyDthb47IOGEkOGFp+GGvTsg7YW+OyDhhJDhhafhhr07ICkgSEFOR1VMIFNZTExBQkxFIFRZRU9KCitEMTdGO0QxN0Y7MTExMCAxMTY3IDExQkU7RDE3RjsxMTEwIDExNjcgMTFCRTsgIyAo7YW/OyDthb87IOGEkOGFp+GGvjsg7YW/OyDhhJDhhafhhr47ICkgSEFOR1VMIFNZTExBQkxFIFRZRU9DCitEMTgwO0QxODA7MTExMCAxMTY3IDExQkY7RDE4MDsxMTEwIDExNjcgMTFCRjsgIyAo7YaAOyDthoA7IOGEkOGFp+GGvzsg7YaAOyDhhJDhhafhhr87ICkgSEFOR1VMIFNZTExBQkxFIFRZRU9LCitEMTgxO0QxODE7MTExMCAxMTY3IDExQzA7RDE4MTsxMTEwIDExNjcgMTFDMDsgIyAo7YaBOyDthoE7IOGEkOGFp+GHgDsg7YaBOyDhhJDhhafhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFRZRU9UCitEMTgyO0QxODI7MTExMCAxMTY3IDExQzE7RDE4MjsxMTEwIDExNjcgMTFDMTsgIyAo7YaCOyDthoI7IOGEkOGFp+GHgTsg7YaCOyDhhJDhhafhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFRZRU9QCitEMTgzO0QxODM7MTExMCAxMTY3IDExQzI7RDE4MzsxMTEwIDExNjcgMTFDMjsgIyAo7YaDOyDthoM7IOGEkOGFp+GHgjsg7YaDOyDhhJDhhafhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFRZRU9ICitEMTg0O0QxODQ7MTExMCAxMTY4O0QxODQ7MTExMCAxMTY4OyAjICjthoQ7IO2GhDsg4YSQ4YWoOyDthoQ7IOGEkOGFqDsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFCitEMTg1O0QxODU7MTExMCAxMTY4IDExQTg7RDE4NTsxMTEwIDExNjggMTFBODsgIyAo7YaFOyDthoU7IOGEkOGFqOGGqDsg7YaFOyDhhJDhhajhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFRZRUcKK0QxODY7RDE4NjsxMTEwIDExNjggMTFBOTtEMTg2OzExMTAgMTE2OCAxMUE5OyAjICjthoY7IO2Ghjsg4YSQ4YWo4YapOyDthoY7IOGEkOGFqOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFR0cKK0QxODc7RDE4NzsxMTEwIDExNjggMTFBQTtEMTg3OzExMTAgMTE2OCAxMUFBOyAjICjthoc7IO2Ghzsg4YSQ4YWo4YaqOyDthoc7IOGEkOGFqOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFR1MKK0QxODg7RDE4ODsxMTEwIDExNjggMTFBQjtEMTg4OzExMTAgMTE2OCAxMUFCOyAjICjthog7IO2GiDsg4YSQ4YWo4YarOyDthog7IOGEkOGFqOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFTgorRDE4OTtEMTg5OzExMTAgMTE2OCAxMUFDO0QxODk7MTExMCAxMTY4IDExQUM7ICMgKO2GiTsg7YaJOyDhhJDhhajhhqw7IO2GiTsg4YSQ4YWo4YasOyApIEhBTkdVTCBTWUxMQUJMRSBUWUVOSgorRDE4QTtEMThBOzExMTAgMTE2OCAxMUFEO0QxOEE7MTExMCAxMTY4IDExQUQ7ICMgKO2Gijsg7YaKOyDhhJDhhajhhq07IO2Gijsg4YSQ4YWo4YatOyApIEhBTkdVTCBTWUxMQUJMRSBUWUVOSAorRDE4QjtEMThCOzExMTAgMTE2OCAxMUFFO0QxOEI7MTExMCAxMTY4IDExQUU7ICMgKO2Gizsg7YaLOyDhhJDhhajhhq47IO2Gizsg4YSQ4YWo4YauOyApIEhBTkdVTCBTWUxMQUJMRSBUWUVECitEMThDO0QxOEM7MTExMCAxMTY4IDExQUY7RDE4QzsxMTEwIDExNjggMTFBRjsgIyAo7YaMOyDthow7IOGEkOGFqOGGrzsg7YaMOyDhhJDhhajhhq87ICkgSEFOR1VMIFNZTExBQkxFIFRZRUwKK0QxOEQ7RDE4RDsxMTEwIDExNjggMTFCMDtEMThEOzExMTAgMTE2OCAxMUIwOyAjICjtho07IO2GjTsg4YSQ4YWo4YawOyDtho07IOGEkOGFqOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFTEcKK0QxOEU7RDE4RTsxMTEwIDExNjggMTFCMTtEMThFOzExMTAgMTE2OCAxMUIxOyAjICjtho47IO2Gjjsg4YSQ4YWo4YaxOyDtho47IOGEkOGFqOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFTE0KK0QxOEY7RDE4RjsxMTEwIDExNjggMTFCMjtEMThGOzExMTAgMTE2OCAxMUIyOyAjICjtho87IO2Gjzsg4YSQ4YWo4YayOyDtho87IOGEkOGFqOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFTEIKK0QxOTA7RDE5MDsxMTEwIDExNjggMTFCMztEMTkwOzExMTAgMTE2OCAxMUIzOyAjICjthpA7IO2GkDsg4YSQ4YWo4YazOyDthpA7IOGEkOGFqOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFTFMKK0QxOTE7RDE5MTsxMTEwIDExNjggMTFCNDtEMTkxOzExMTAgMTE2OCAxMUI0OyAjICjthpE7IO2GkTsg4YSQ4YWo4Ya0OyDthpE7IOGEkOGFqOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFTFQKK0QxOTI7RDE5MjsxMTEwIDExNjggMTFCNTtEMTkyOzExMTAgMTE2OCAxMUI1OyAjICjthpI7IO2Gkjsg4YSQ4YWo4Ya1OyDthpI7IOGEkOGFqOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFTFAKK0QxOTM7RDE5MzsxMTEwIDExNjggMTFCNjtEMTkzOzExMTAgMTE2OCAxMUI2OyAjICjthpM7IO2Gkzsg4YSQ4YWo4Ya2OyDthpM7IOGEkOGFqOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFTEgKK0QxOTQ7RDE5NDsxMTEwIDExNjggMTFCNztEMTk0OzExMTAgMTE2OCAxMUI3OyAjICjthpQ7IO2GlDsg4YSQ4YWo4Ya3OyDthpQ7IOGEkOGFqOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFTQorRDE5NTtEMTk1OzExMTAgMTE2OCAxMUI4O0QxOTU7MTExMCAxMTY4IDExQjg7ICMgKO2GlTsg7YaVOyDhhJDhhajhhrg7IO2GlTsg4YSQ4YWo4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBUWUVCCitEMTk2O0QxOTY7MTExMCAxMTY4IDExQjk7RDE5NjsxMTEwIDExNjggMTFCOTsgIyAo7YaWOyDthpY7IOGEkOGFqOGGuTsg7YaWOyDhhJDhhajhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFRZRUJTCitEMTk3O0QxOTc7MTExMCAxMTY4IDExQkE7RDE5NzsxMTEwIDExNjggMTFCQTsgIyAo7YaXOyDthpc7IOGEkOGFqOGGujsg7YaXOyDhhJDhhajhhro7ICkgSEFOR1VMIFNZTExBQkxFIFRZRVMKK0QxOTg7RDE5ODsxMTEwIDExNjggMTFCQjtEMTk4OzExMTAgMTE2OCAxMUJCOyAjICjthpg7IO2GmDsg4YSQ4YWo4Ya7OyDthpg7IOGEkOGFqOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFU1MKK0QxOTk7RDE5OTsxMTEwIDExNjggMTFCQztEMTk5OzExMTAgMTE2OCAxMUJDOyAjICjthpk7IO2GmTsg4YSQ4YWo4Ya8OyDthpk7IOGEkOGFqOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFTkcKK0QxOUE7RDE5QTsxMTEwIDExNjggMTFCRDtEMTlBOzExMTAgMTE2OCAxMUJEOyAjICjthpo7IO2Gmjsg4YSQ4YWo4Ya9OyDthpo7IOGEkOGFqOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFSgorRDE5QjtEMTlCOzExMTAgMTE2OCAxMUJFO0QxOUI7MTExMCAxMTY4IDExQkU7ICMgKO2Gmzsg7YabOyDhhJDhhajhhr47IO2Gmzsg4YSQ4YWo4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBUWUVDCitEMTlDO0QxOUM7MTExMCAxMTY4IDExQkY7RDE5QzsxMTEwIDExNjggMTFCRjsgIyAo7YacOyDthpw7IOGEkOGFqOGGvzsg7YacOyDhhJDhhajhhr87ICkgSEFOR1VMIFNZTExBQkxFIFRZRUsKK0QxOUQ7RDE5RDsxMTEwIDExNjggMTFDMDtEMTlEOzExMTAgMTE2OCAxMUMwOyAjICjthp07IO2GnTsg4YSQ4YWo4YeAOyDthp07IOGEkOGFqOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgVFlFVAorRDE5RTtEMTlFOzExMTAgMTE2OCAxMUMxO0QxOUU7MTExMCAxMTY4IDExQzE7ICMgKO2Gnjsg7YaeOyDhhJDhhajhh4E7IO2Gnjsg4YSQ4YWo4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBUWUVQCitEMTlGO0QxOUY7MTExMCAxMTY4IDExQzI7RDE5RjsxMTEwIDExNjggMTFDMjsgIyAo7YafOyDthp87IOGEkOGFqOGHgjsg7YafOyDhhJDhhajhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFRZRUgKK0QxQTA7RDFBMDsxMTEwIDExNjk7RDFBMDsxMTEwIDExNjk7ICMgKO2GoDsg7YagOyDhhJDhhak7IO2GoDsg4YSQ4YWpOyApIEhBTkdVTCBTWUxMQUJMRSBUTworRDFBMTtEMUExOzExMTAgMTE2OSAxMUE4O0QxQTE7MTExMCAxMTY5IDExQTg7ICMgKO2GoTsg7YahOyDhhJDhhanhhqg7IO2GoTsg4YSQ4YWp4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBUT0cKK0QxQTI7RDFBMjsxMTEwIDExNjkgMTFBOTtEMUEyOzExMTAgMTE2OSAxMUE5OyAjICjthqI7IO2Gojsg4YSQ4YWp4YapOyDthqI7IOGEkOGFqeGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgVE9HRworRDFBMztEMUEzOzExMTAgMTE2OSAxMUFBO0QxQTM7MTExMCAxMTY5IDExQUE7ICMgKO2Gozsg7YajOyDhhJDhhanhhqo7IO2Gozsg4YSQ4YWp4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBUT0dTCitEMUE0O0QxQTQ7MTExMCAxMTY5IDExQUI7RDFBNDsxMTEwIDExNjkgMTFBQjsgIyAo7YakOyDthqQ7IOGEkOGFqeGGqzsg7YakOyDhhJDhhanhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFRPTgorRDFBNTtEMUE1OzExMTAgMTE2OSAxMUFDO0QxQTU7MTExMCAxMTY5IDExQUM7ICMgKO2GpTsg7YalOyDhhJDhhanhhqw7IO2GpTsg4YSQ4YWp4YasOyApIEhBTkdVTCBTWUxMQUJMRSBUT05KCitEMUE2O0QxQTY7MTExMCAxMTY5IDExQUQ7RDFBNjsxMTEwIDExNjkgMTFBRDsgIyAo7YamOyDthqY7IOGEkOGFqeGGrTsg7YamOyDhhJDhhanhhq07ICkgSEFOR1VMIFNZTExBQkxFIFRPTkgKK0QxQTc7RDFBNzsxMTEwIDExNjkgMTFBRTtEMUE3OzExMTAgMTE2OSAxMUFFOyAjICjthqc7IO2Gpzsg4YSQ4YWp4YauOyDthqc7IOGEkOGFqeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgVE9ECitEMUE4O0QxQTg7MTExMCAxMTY5IDExQUY7RDFBODsxMTEwIDExNjkgMTFBRjsgIyAo7YaoOyDthqg7IOGEkOGFqeGGrzsg7YaoOyDhhJDhhanhhq87ICkgSEFOR1VMIFNZTExBQkxFIFRPTAorRDFBOTtEMUE5OzExMTAgMTE2OSAxMUIwO0QxQTk7MTExMCAxMTY5IDExQjA7ICMgKO2GqTsg7YapOyDhhJDhhanhhrA7IO2GqTsg4YSQ4YWp4YawOyApIEhBTkdVTCBTWUxMQUJMRSBUT0xHCitEMUFBO0QxQUE7MTExMCAxMTY5IDExQjE7RDFBQTsxMTEwIDExNjkgMTFCMTsgIyAo7YaqOyDthqo7IOGEkOGFqeGGsTsg7YaqOyDhhJDhhanhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFRPTE0KK0QxQUI7RDFBQjsxMTEwIDExNjkgMTFCMjtEMUFCOzExMTAgMTE2OSAxMUIyOyAjICjthqs7IO2Gqzsg4YSQ4YWp4YayOyDthqs7IOGEkOGFqeGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgVE9MQgorRDFBQztEMUFDOzExMTAgMTE2OSAxMUIzO0QxQUM7MTExMCAxMTY5IDExQjM7ICMgKO2GrDsg7YasOyDhhJDhhanhhrM7IO2GrDsg4YSQ4YWp4YazOyApIEhBTkdVTCBTWUxMQUJMRSBUT0xTCitEMUFEO0QxQUQ7MTExMCAxMTY5IDExQjQ7RDFBRDsxMTEwIDExNjkgMTFCNDsgIyAo7YatOyDthq07IOGEkOGFqeGGtDsg7YatOyDhhJDhhanhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFRPTFQKK0QxQUU7RDFBRTsxMTEwIDExNjkgMTFCNTtEMUFFOzExMTAgMTE2OSAxMUI1OyAjICjthq47IO2Grjsg4YSQ4YWp4Ya1OyDthq47IOGEkOGFqeGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgVE9MUAorRDFBRjtEMUFGOzExMTAgMTE2OSAxMUI2O0QxQUY7MTExMCAxMTY5IDExQjY7ICMgKO2Grzsg7YavOyDhhJDhhanhhrY7IO2Grzsg4YSQ4YWp4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBUT0xICitEMUIwO0QxQjA7MTExMCAxMTY5IDExQjc7RDFCMDsxMTEwIDExNjkgMTFCNzsgIyAo7YawOyDthrA7IOGEkOGFqeGGtzsg7YawOyDhhJDhhanhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFRPTQorRDFCMTtEMUIxOzExMTAgMTE2OSAxMUI4O0QxQjE7MTExMCAxMTY5IDExQjg7ICMgKO2GsTsg7YaxOyDhhJDhhanhhrg7IO2GsTsg4YSQ4YWp4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBUT0IKK0QxQjI7RDFCMjsxMTEwIDExNjkgMTFCOTtEMUIyOzExMTAgMTE2OSAxMUI5OyAjICjthrI7IO2Gsjsg4YSQ4YWp4Ya5OyDthrI7IOGEkOGFqeGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgVE9CUworRDFCMztEMUIzOzExMTAgMTE2OSAxMUJBO0QxQjM7MTExMCAxMTY5IDExQkE7ICMgKO2Gszsg7YazOyDhhJDhhanhhro7IO2Gszsg4YSQ4YWp4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBUT1MKK0QxQjQ7RDFCNDsxMTEwIDExNjkgMTFCQjtEMUI0OzExMTAgMTE2OSAxMUJCOyAjICjthrQ7IO2GtDsg4YSQ4YWp4Ya7OyDthrQ7IOGEkOGFqeGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgVE9TUworRDFCNTtEMUI1OzExMTAgMTE2OSAxMUJDO0QxQjU7MTExMCAxMTY5IDExQkM7ICMgKO2GtTsg7Ya1OyDhhJDhhanhhrw7IO2GtTsg4YSQ4YWp4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBUT05HCitEMUI2O0QxQjY7MTExMCAxMTY5IDExQkQ7RDFCNjsxMTEwIDExNjkgMTFCRDsgIyAo7Ya2OyDthrY7IOGEkOGFqeGGvTsg7Ya2OyDhhJDhhanhhr07ICkgSEFOR1VMIFNZTExBQkxFIFRPSgorRDFCNztEMUI3OzExMTAgMTE2OSAxMUJFO0QxQjc7MTExMCAxMTY5IDExQkU7ICMgKO2Gtzsg7Ya3OyDhhJDhhanhhr47IO2Gtzsg4YSQ4YWp4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBUT0MKK0QxQjg7RDFCODsxMTEwIDExNjkgMTFCRjtEMUI4OzExMTAgMTE2OSAxMUJGOyAjICjthrg7IO2GuDsg4YSQ4YWp4Ya/OyDthrg7IOGEkOGFqeGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgVE9LCitEMUI5O0QxQjk7MTExMCAxMTY5IDExQzA7RDFCOTsxMTEwIDExNjkgMTFDMDsgIyAo7Ya5OyDthrk7IOGEkOGFqeGHgDsg7Ya5OyDhhJDhhanhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFRPVAorRDFCQTtEMUJBOzExMTAgMTE2OSAxMUMxO0QxQkE7MTExMCAxMTY5IDExQzE7ICMgKO2Gujsg7Ya6OyDhhJDhhanhh4E7IO2Gujsg4YSQ4YWp4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBUT1AKK0QxQkI7RDFCQjsxMTEwIDExNjkgMTFDMjtEMUJCOzExMTAgMTE2OSAxMUMyOyAjICjthrs7IO2Guzsg4YSQ4YWp4YeCOyDthrs7IOGEkOGFqeGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgVE9ICitEMUJDO0QxQkM7MTExMCAxMTZBO0QxQkM7MTExMCAxMTZBOyAjICjthrw7IO2GvDsg4YSQ4YWqOyDthrw7IOGEkOGFqjsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBCitEMUJEO0QxQkQ7MTExMCAxMTZBIDExQTg7RDFCRDsxMTEwIDExNkEgMTFBODsgIyAo7Ya9OyDthr07IOGEkOGFquGGqDsg7Ya9OyDhhJDhharhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFRXQUcKK0QxQkU7RDFCRTsxMTEwIDExNkEgMTFBOTtEMUJFOzExMTAgMTE2QSAxMUE5OyAjICjthr47IO2Gvjsg4YSQ4YWq4YapOyDthr47IOGEkOGFquGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBR0cKK0QxQkY7RDFCRjsxMTEwIDExNkEgMTFBQTtEMUJGOzExMTAgMTE2QSAxMUFBOyAjICjthr87IO2Gvzsg4YSQ4YWq4YaqOyDthr87IOGEkOGFquGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBR1MKK0QxQzA7RDFDMDsxMTEwIDExNkEgMTFBQjtEMUMwOzExMTAgMTE2QSAxMUFCOyAjICjth4A7IO2HgDsg4YSQ4YWq4YarOyDth4A7IOGEkOGFquGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBTgorRDFDMTtEMUMxOzExMTAgMTE2QSAxMUFDO0QxQzE7MTExMCAxMTZBIDExQUM7ICMgKO2HgTsg7YeBOyDhhJDhharhhqw7IO2HgTsg4YSQ4YWq4YasOyApIEhBTkdVTCBTWUxMQUJMRSBUV0FOSgorRDFDMjtEMUMyOzExMTAgMTE2QSAxMUFEO0QxQzI7MTExMCAxMTZBIDExQUQ7ICMgKO2Hgjsg7YeCOyDhhJDhharhhq07IO2Hgjsg4YSQ4YWq4YatOyApIEhBTkdVTCBTWUxMQUJMRSBUV0FOSAorRDFDMztEMUMzOzExMTAgMTE2QSAxMUFFO0QxQzM7MTExMCAxMTZBIDExQUU7ICMgKO2Hgzsg7YeDOyDhhJDhharhhq47IO2Hgzsg4YSQ4YWq4YauOyApIEhBTkdVTCBTWUxMQUJMRSBUV0FECitEMUM0O0QxQzQ7MTExMCAxMTZBIDExQUY7RDFDNDsxMTEwIDExNkEgMTFBRjsgIyAo7YeEOyDth4Q7IOGEkOGFquGGrzsg7YeEOyDhhJDhharhhq87ICkgSEFOR1VMIFNZTExBQkxFIFRXQUwKK0QxQzU7RDFDNTsxMTEwIDExNkEgMTFCMDtEMUM1OzExMTAgMTE2QSAxMUIwOyAjICjth4U7IO2HhTsg4YSQ4YWq4YawOyDth4U7IOGEkOGFquGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBTEcKK0QxQzY7RDFDNjsxMTEwIDExNkEgMTFCMTtEMUM2OzExMTAgMTE2QSAxMUIxOyAjICjth4Y7IO2Hhjsg4YSQ4YWq4YaxOyDth4Y7IOGEkOGFquGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBTE0KK0QxQzc7RDFDNzsxMTEwIDExNkEgMTFCMjtEMUM3OzExMTAgMTE2QSAxMUIyOyAjICjth4c7IO2Hhzsg4YSQ4YWq4YayOyDth4c7IOGEkOGFquGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBTEIKK0QxQzg7RDFDODsxMTEwIDExNkEgMTFCMztEMUM4OzExMTAgMTE2QSAxMUIzOyAjICjth4g7IO2HiDsg4YSQ4YWq4YazOyDth4g7IOGEkOGFquGGszsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBTFMKK0QxQzk7RDFDOTsxMTEwIDExNkEgMTFCNDtEMUM5OzExMTAgMTE2QSAxMUI0OyAjICjth4k7IO2HiTsg4YSQ4YWq4Ya0OyDth4k7IOGEkOGFquGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBTFQKK0QxQ0E7RDFDQTsxMTEwIDExNkEgMTFCNTtEMUNBOzExMTAgMTE2QSAxMUI1OyAjICjth4o7IO2Hijsg4YSQ4YWq4Ya1OyDth4o7IOGEkOGFquGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBTFAKK0QxQ0I7RDFDQjsxMTEwIDExNkEgMTFCNjtEMUNCOzExMTAgMTE2QSAxMUI2OyAjICjth4s7IO2Hizsg4YSQ4YWq4Ya2OyDth4s7IOGEkOGFquGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBTEgKK0QxQ0M7RDFDQzsxMTEwIDExNkEgMTFCNztEMUNDOzExMTAgMTE2QSAxMUI3OyAjICjth4w7IO2HjDsg4YSQ4YWq4Ya3OyDth4w7IOGEkOGFquGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBTQorRDFDRDtEMUNEOzExMTAgMTE2QSAxMUI4O0QxQ0Q7MTExMCAxMTZBIDExQjg7ICMgKO2HjTsg7YeNOyDhhJDhharhhrg7IO2HjTsg4YSQ4YWq4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBUV0FCCitEMUNFO0QxQ0U7MTExMCAxMTZBIDExQjk7RDFDRTsxMTEwIDExNkEgMTFCOTsgIyAo7YeOOyDth447IOGEkOGFquGGuTsg7YeOOyDhhJDhharhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFRXQUJTCitEMUNGO0QxQ0Y7MTExMCAxMTZBIDExQkE7RDFDRjsxMTEwIDExNkEgMTFCQTsgIyAo7YePOyDth487IOGEkOGFquGGujsg7YePOyDhhJDhharhhro7ICkgSEFOR1VMIFNZTExBQkxFIFRXQVMKK0QxRDA7RDFEMDsxMTEwIDExNkEgMTFCQjtEMUQwOzExMTAgMTE2QSAxMUJCOyAjICjth5A7IO2HkDsg4YSQ4YWq4Ya7OyDth5A7IOGEkOGFquGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBU1MKK0QxRDE7RDFEMTsxMTEwIDExNkEgMTFCQztEMUQxOzExMTAgMTE2QSAxMUJDOyAjICjth5E7IO2HkTsg4YSQ4YWq4Ya8OyDth5E7IOGEkOGFquGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBTkcKK0QxRDI7RDFEMjsxMTEwIDExNkEgMTFCRDtEMUQyOzExMTAgMTE2QSAxMUJEOyAjICjth5I7IO2Hkjsg4YSQ4YWq4Ya9OyDth5I7IOGEkOGFquGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBSgorRDFEMztEMUQzOzExMTAgMTE2QSAxMUJFO0QxRDM7MTExMCAxMTZBIDExQkU7ICMgKO2Hkzsg7YeTOyDhhJDhharhhr47IO2Hkzsg4YSQ4YWq4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBUV0FDCitEMUQ0O0QxRDQ7MTExMCAxMTZBIDExQkY7RDFENDsxMTEwIDExNkEgMTFCRjsgIyAo7YeUOyDth5Q7IOGEkOGFquGGvzsg7YeUOyDhhJDhharhhr87ICkgSEFOR1VMIFNZTExBQkxFIFRXQUsKK0QxRDU7RDFENTsxMTEwIDExNkEgMTFDMDtEMUQ1OzExMTAgMTE2QSAxMUMwOyAjICjth5U7IO2HlTsg4YSQ4YWq4YeAOyDth5U7IOGEkOGFquGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBVAorRDFENjtEMUQ2OzExMTAgMTE2QSAxMUMxO0QxRDY7MTExMCAxMTZBIDExQzE7ICMgKO2Hljsg7YeWOyDhhJDhharhh4E7IO2Hljsg4YSQ4YWq4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBUV0FQCitEMUQ3O0QxRDc7MTExMCAxMTZBIDExQzI7RDFENzsxMTEwIDExNkEgMTFDMjsgIyAo7YeXOyDth5c7IOGEkOGFquGHgjsg7YeXOyDhhJDhharhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFRXQUgKK0QxRDg7RDFEODsxMTEwIDExNkI7RDFEODsxMTEwIDExNkI7ICMgKO2HmDsg7YeYOyDhhJDhhas7IO2HmDsg4YSQ4YWrOyApIEhBTkdVTCBTWUxMQUJMRSBUV0FFCitEMUQ5O0QxRDk7MTExMCAxMTZCIDExQTg7RDFEOTsxMTEwIDExNkIgMTFBODsgIyAo7YeZOyDth5k7IOGEkOGFq+GGqDsg7YeZOyDhhJDhhavhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFRXQUVHCitEMURBO0QxREE7MTExMCAxMTZCIDExQTk7RDFEQTsxMTEwIDExNkIgMTFBOTsgIyAo7YeaOyDth5o7IOGEkOGFq+GGqTsg7YeaOyDhhJDhhavhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFRXQUVHRworRDFEQjtEMURCOzExMTAgMTE2QiAxMUFBO0QxREI7MTExMCAxMTZCIDExQUE7ICMgKO2Hmzsg7YebOyDhhJDhhavhhqo7IO2Hmzsg4YSQ4YWr4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBUV0FFR1MKK0QxREM7RDFEQzsxMTEwIDExNkIgMTFBQjtEMURDOzExMTAgMTE2QiAxMUFCOyAjICjth5w7IO2HnDsg4YSQ4YWr4YarOyDth5w7IOGEkOGFq+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBRU4KK0QxREQ7RDFERDsxMTEwIDExNkIgMTFBQztEMUREOzExMTAgMTE2QiAxMUFDOyAjICjth507IO2HnTsg4YSQ4YWr4YasOyDth507IOGEkOGFq+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBRU5KCitEMURFO0QxREU7MTExMCAxMTZCIDExQUQ7RDFERTsxMTEwIDExNkIgMTFBRDsgIyAo7YeeOyDth547IOGEkOGFq+GGrTsg7YeeOyDhhJDhhavhhq07ICkgSEFOR1VMIFNZTExBQkxFIFRXQUVOSAorRDFERjtEMURGOzExMTAgMTE2QiAxMUFFO0QxREY7MTExMCAxMTZCIDExQUU7ICMgKO2Hnzsg7YefOyDhhJDhhavhhq47IO2Hnzsg4YSQ4YWr4YauOyApIEhBTkdVTCBTWUxMQUJMRSBUV0FFRAorRDFFMDtEMUUwOzExMTAgMTE2QiAxMUFGO0QxRTA7MTExMCAxMTZCIDExQUY7ICMgKO2HoDsg7YegOyDhhJDhhavhhq87IO2HoDsg4YSQ4YWr4YavOyApIEhBTkdVTCBTWUxMQUJMRSBUV0FFTAorRDFFMTtEMUUxOzExMTAgMTE2QiAxMUIwO0QxRTE7MTExMCAxMTZCIDExQjA7ICMgKO2HoTsg7YehOyDhhJDhhavhhrA7IO2HoTsg4YSQ4YWr4YawOyApIEhBTkdVTCBTWUxMQUJMRSBUV0FFTEcKK0QxRTI7RDFFMjsxMTEwIDExNkIgMTFCMTtEMUUyOzExMTAgMTE2QiAxMUIxOyAjICjth6I7IO2Hojsg4YSQ4YWr4YaxOyDth6I7IOGEkOGFq+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBRUxNCitEMUUzO0QxRTM7MTExMCAxMTZCIDExQjI7RDFFMzsxMTEwIDExNkIgMTFCMjsgIyAo7YejOyDth6M7IOGEkOGFq+GGsjsg7YejOyDhhJDhhavhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFRXQUVMQgorRDFFNDtEMUU0OzExMTAgMTE2QiAxMUIzO0QxRTQ7MTExMCAxMTZCIDExQjM7ICMgKO2HpDsg7YekOyDhhJDhhavhhrM7IO2HpDsg4YSQ4YWr4YazOyApIEhBTkdVTCBTWUxMQUJMRSBUV0FFTFMKK0QxRTU7RDFFNTsxMTEwIDExNkIgMTFCNDtEMUU1OzExMTAgMTE2QiAxMUI0OyAjICjth6U7IO2HpTsg4YSQ4YWr4Ya0OyDth6U7IOGEkOGFq+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBRUxUCitEMUU2O0QxRTY7MTExMCAxMTZCIDExQjU7RDFFNjsxMTEwIDExNkIgMTFCNTsgIyAo7YemOyDth6Y7IOGEkOGFq+GGtTsg7YemOyDhhJDhhavhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFRXQUVMUAorRDFFNztEMUU3OzExMTAgMTE2QiAxMUI2O0QxRTc7MTExMCAxMTZCIDExQjY7ICMgKO2Hpzsg7YenOyDhhJDhhavhhrY7IO2Hpzsg4YSQ4YWr4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBUV0FFTEgKK0QxRTg7RDFFODsxMTEwIDExNkIgMTFCNztEMUU4OzExMTAgMTE2QiAxMUI3OyAjICjth6g7IO2HqDsg4YSQ4YWr4Ya3OyDth6g7IOGEkOGFq+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBRU0KK0QxRTk7RDFFOTsxMTEwIDExNkIgMTFCODtEMUU5OzExMTAgMTE2QiAxMUI4OyAjICjth6k7IO2HqTsg4YSQ4YWr4Ya4OyDth6k7IOGEkOGFq+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBRUIKK0QxRUE7RDFFQTsxMTEwIDExNkIgMTFCOTtEMUVBOzExMTAgMTE2QiAxMUI5OyAjICjth6o7IO2Hqjsg4YSQ4YWr4Ya5OyDth6o7IOGEkOGFq+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBRUJTCitEMUVCO0QxRUI7MTExMCAxMTZCIDExQkE7RDFFQjsxMTEwIDExNkIgMTFCQTsgIyAo7YerOyDth6s7IOGEkOGFq+GGujsg7YerOyDhhJDhhavhhro7ICkgSEFOR1VMIFNZTExBQkxFIFRXQUVTCitEMUVDO0QxRUM7MTExMCAxMTZCIDExQkI7RDFFQzsxMTEwIDExNkIgMTFCQjsgIyAo7YesOyDth6w7IOGEkOGFq+GGuzsg7YesOyDhhJDhhavhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFRXQUVTUworRDFFRDtEMUVEOzExMTAgMTE2QiAxMUJDO0QxRUQ7MTExMCAxMTZCIDExQkM7ICMgKO2HrTsg7YetOyDhhJDhhavhhrw7IO2HrTsg4YSQ4YWr4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBUV0FFTkcKK0QxRUU7RDFFRTsxMTEwIDExNkIgMTFCRDtEMUVFOzExMTAgMTE2QiAxMUJEOyAjICjth647IO2Hrjsg4YSQ4YWr4Ya9OyDth647IOGEkOGFq+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBRUoKK0QxRUY7RDFFRjsxMTEwIDExNkIgMTFCRTtEMUVGOzExMTAgMTE2QiAxMUJFOyAjICjth687IO2Hrzsg4YSQ4YWr4Ya+OyDth687IOGEkOGFq+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBRUMKK0QxRjA7RDFGMDsxMTEwIDExNkIgMTFCRjtEMUYwOzExMTAgMTE2QiAxMUJGOyAjICjth7A7IO2HsDsg4YSQ4YWr4Ya/OyDth7A7IOGEkOGFq+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBRUsKK0QxRjE7RDFGMTsxMTEwIDExNkIgMTFDMDtEMUYxOzExMTAgMTE2QiAxMUMwOyAjICjth7E7IO2HsTsg4YSQ4YWr4YeAOyDth7E7IOGEkOGFq+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBRVQKK0QxRjI7RDFGMjsxMTEwIDExNkIgMTFDMTtEMUYyOzExMTAgMTE2QiAxMUMxOyAjICjth7I7IO2Hsjsg4YSQ4YWr4YeBOyDth7I7IOGEkOGFq+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBRVAKK0QxRjM7RDFGMzsxMTEwIDExNkIgMTFDMjtEMUYzOzExMTAgMTE2QiAxMUMyOyAjICjth7M7IO2Hszsg4YSQ4YWr4YeCOyDth7M7IOGEkOGFq+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgVFdBRUgKK0QxRjQ7RDFGNDsxMTEwIDExNkM7RDFGNDsxMTEwIDExNkM7ICMgKO2HtDsg7Ye0OyDhhJDhhaw7IO2HtDsg4YSQ4YWsOyApIEhBTkdVTCBTWUxMQUJMRSBUT0UKK0QxRjU7RDFGNTsxMTEwIDExNkMgMTFBODtEMUY1OzExMTAgMTE2QyAxMUE4OyAjICjth7U7IO2HtTsg4YSQ4YWs4YaoOyDth7U7IOGEkOGFrOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgVE9FRworRDFGNjtEMUY2OzExMTAgMTE2QyAxMUE5O0QxRjY7MTExMCAxMTZDIDExQTk7ICMgKO2Htjsg7Ye2OyDhhJDhhazhhqk7IO2Htjsg4YSQ4YWs4YapOyApIEhBTkdVTCBTWUxMQUJMRSBUT0VHRworRDFGNztEMUY3OzExMTAgMTE2QyAxMUFBO0QxRjc7MTExMCAxMTZDIDExQUE7ICMgKO2Htzsg7Ye3OyDhhJDhhazhhqo7IO2Htzsg4YSQ4YWs4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBUT0VHUworRDFGODtEMUY4OzExMTAgMTE2QyAxMUFCO0QxRjg7MTExMCAxMTZDIDExQUI7ICMgKO2HuDsg7Ye4OyDhhJDhhazhhqs7IO2HuDsg4YSQ4YWs4YarOyApIEhBTkdVTCBTWUxMQUJMRSBUT0VOCitEMUY5O0QxRjk7MTExMCAxMTZDIDExQUM7RDFGOTsxMTEwIDExNkMgMTFBQzsgIyAo7Ye5OyDth7k7IOGEkOGFrOGGrDsg7Ye5OyDhhJDhhazhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFRPRU5KCitEMUZBO0QxRkE7MTExMCAxMTZDIDExQUQ7RDFGQTsxMTEwIDExNkMgMTFBRDsgIyAo7Ye6OyDth7o7IOGEkOGFrOGGrTsg7Ye6OyDhhJDhhazhhq07ICkgSEFOR1VMIFNZTExBQkxFIFRPRU5ICitEMUZCO0QxRkI7MTExMCAxMTZDIDExQUU7RDFGQjsxMTEwIDExNkMgMTFBRTsgIyAo7Ye7OyDth7s7IOGEkOGFrOGGrjsg7Ye7OyDhhJDhhazhhq47ICkgSEFOR1VMIFNZTExBQkxFIFRPRUQKK0QxRkM7RDFGQzsxMTEwIDExNkMgMTFBRjtEMUZDOzExMTAgMTE2QyAxMUFGOyAjICjth7w7IO2HvDsg4YSQ4YWs4YavOyDth7w7IOGEkOGFrOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgVE9FTAorRDFGRDtEMUZEOzExMTAgMTE2QyAxMUIwO0QxRkQ7MTExMCAxMTZDIDExQjA7ICMgKO2HvTsg7Ye9OyDhhJDhhazhhrA7IO2HvTsg4YSQ4YWs4YawOyApIEhBTkdVTCBTWUxMQUJMRSBUT0VMRworRDFGRTtEMUZFOzExMTAgMTE2QyAxMUIxO0QxRkU7MTExMCAxMTZDIDExQjE7ICMgKO2Hvjsg7Ye+OyDhhJDhhazhhrE7IO2Hvjsg4YSQ4YWs4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBUT0VMTQorRDFGRjtEMUZGOzExMTAgMTE2QyAxMUIyO0QxRkY7MTExMCAxMTZDIDExQjI7ICMgKO2Hvzsg7Ye/OyDhhJDhhazhhrI7IO2Hvzsg4YSQ4YWs4YayOyApIEhBTkdVTCBTWUxMQUJMRSBUT0VMQgorRDIwMDtEMjAwOzExMTAgMTE2QyAxMUIzO0QyMDA7MTExMCAxMTZDIDExQjM7ICMgKO2IgDsg7YiAOyDhhJDhhazhhrM7IO2IgDsg4YSQ4YWs4YazOyApIEhBTkdVTCBTWUxMQUJMRSBUT0VMUworRDIwMTtEMjAxOzExMTAgMTE2QyAxMUI0O0QyMDE7MTExMCAxMTZDIDExQjQ7ICMgKO2IgTsg7YiBOyDhhJDhhazhhrQ7IO2IgTsg4YSQ4YWs4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBUT0VMVAorRDIwMjtEMjAyOzExMTAgMTE2QyAxMUI1O0QyMDI7MTExMCAxMTZDIDExQjU7ICMgKO2Igjsg7YiCOyDhhJDhhazhhrU7IO2Igjsg4YSQ4YWs4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBUT0VMUAorRDIwMztEMjAzOzExMTAgMTE2QyAxMUI2O0QyMDM7MTExMCAxMTZDIDExQjY7ICMgKO2Igzsg7YiDOyDhhJDhhazhhrY7IO2Igzsg4YSQ4YWs4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBUT0VMSAorRDIwNDtEMjA0OzExMTAgMTE2QyAxMUI3O0QyMDQ7MTExMCAxMTZDIDExQjc7ICMgKO2IhDsg7YiEOyDhhJDhhazhhrc7IO2IhDsg4YSQ4YWs4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBUT0VNCitEMjA1O0QyMDU7MTExMCAxMTZDIDExQjg7RDIwNTsxMTEwIDExNkMgMTFCODsgIyAo7YiFOyDtiIU7IOGEkOGFrOGGuDsg7YiFOyDhhJDhhazhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFRPRUIKK0QyMDY7RDIwNjsxMTEwIDExNkMgMTFCOTtEMjA2OzExMTAgMTE2QyAxMUI5OyAjICjtiIY7IO2Ihjsg4YSQ4YWs4Ya5OyDtiIY7IOGEkOGFrOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgVE9FQlMKK0QyMDc7RDIwNzsxMTEwIDExNkMgMTFCQTtEMjA3OzExMTAgMTE2QyAxMUJBOyAjICjtiIc7IO2Ihzsg4YSQ4YWs4Ya6OyDtiIc7IOGEkOGFrOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgVE9FUworRDIwODtEMjA4OzExMTAgMTE2QyAxMUJCO0QyMDg7MTExMCAxMTZDIDExQkI7ICMgKO2IiDsg7YiIOyDhhJDhhazhhrs7IO2IiDsg4YSQ4YWs4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBUT0VTUworRDIwOTtEMjA5OzExMTAgMTE2QyAxMUJDO0QyMDk7MTExMCAxMTZDIDExQkM7ICMgKO2IiTsg7YiJOyDhhJDhhazhhrw7IO2IiTsg4YSQ4YWs4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBUT0VORworRDIwQTtEMjBBOzExMTAgMTE2QyAxMUJEO0QyMEE7MTExMCAxMTZDIDExQkQ7ICMgKO2Iijsg7YiKOyDhhJDhhazhhr07IO2Iijsg4YSQ4YWs4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBUT0VKCitEMjBCO0QyMEI7MTExMCAxMTZDIDExQkU7RDIwQjsxMTEwIDExNkMgMTFCRTsgIyAo7YiLOyDtiIs7IOGEkOGFrOGGvjsg7YiLOyDhhJDhhazhhr47ICkgSEFOR1VMIFNZTExBQkxFIFRPRUMKK0QyMEM7RDIwQzsxMTEwIDExNkMgMTFCRjtEMjBDOzExMTAgMTE2QyAxMUJGOyAjICjtiIw7IO2IjDsg4YSQ4YWs4Ya/OyDtiIw7IOGEkOGFrOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgVE9FSworRDIwRDtEMjBEOzExMTAgMTE2QyAxMUMwO0QyMEQ7MTExMCAxMTZDIDExQzA7ICMgKO2IjTsg7YiNOyDhhJDhhazhh4A7IO2IjTsg4YSQ4YWs4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBUT0VUCitEMjBFO0QyMEU7MTExMCAxMTZDIDExQzE7RDIwRTsxMTEwIDExNkMgMTFDMTsgIyAo7YiOOyDtiI47IOGEkOGFrOGHgTsg7YiOOyDhhJDhhazhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFRPRVAKK0QyMEY7RDIwRjsxMTEwIDExNkMgMTFDMjtEMjBGOzExMTAgMTE2QyAxMUMyOyAjICjtiI87IO2Ijzsg4YSQ4YWs4YeCOyDtiI87IOGEkOGFrOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgVE9FSAorRDIxMDtEMjEwOzExMTAgMTE2RDtEMjEwOzExMTAgMTE2RDsgIyAo7YiQOyDtiJA7IOGEkOGFrTsg7YiQOyDhhJDhha07ICkgSEFOR1VMIFNZTExBQkxFIFRZTworRDIxMTtEMjExOzExMTAgMTE2RCAxMUE4O0QyMTE7MTExMCAxMTZEIDExQTg7ICMgKO2IkTsg7YiROyDhhJDhha3hhqg7IO2IkTsg4YSQ4YWt4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBUWU9HCitEMjEyO0QyMTI7MTExMCAxMTZEIDExQTk7RDIxMjsxMTEwIDExNkQgMTFBOTsgIyAo7YiSOyDtiJI7IOGEkOGFreGGqTsg7YiSOyDhhJDhha3hhqk7ICkgSEFOR1VMIFNZTExBQkxFIFRZT0dHCitEMjEzO0QyMTM7MTExMCAxMTZEIDExQUE7RDIxMzsxMTEwIDExNkQgMTFBQTsgIyAo7YiTOyDtiJM7IOGEkOGFreGGqjsg7YiTOyDhhJDhha3hhqo7ICkgSEFOR1VMIFNZTExBQkxFIFRZT0dTCitEMjE0O0QyMTQ7MTExMCAxMTZEIDExQUI7RDIxNDsxMTEwIDExNkQgMTFBQjsgIyAo7YiUOyDtiJQ7IOGEkOGFreGGqzsg7YiUOyDhhJDhha3hhqs7ICkgSEFOR1VMIFNZTExBQkxFIFRZT04KK0QyMTU7RDIxNTsxMTEwIDExNkQgMTFBQztEMjE1OzExMTAgMTE2RCAxMUFDOyAjICjtiJU7IO2IlTsg4YSQ4YWt4YasOyDtiJU7IOGEkOGFreGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgVFlPTkoKK0QyMTY7RDIxNjsxMTEwIDExNkQgMTFBRDtEMjE2OzExMTAgMTE2RCAxMUFEOyAjICjtiJY7IO2Iljsg4YSQ4YWt4YatOyDtiJY7IOGEkOGFreGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgVFlPTkgKK0QyMTc7RDIxNzsxMTEwIDExNkQgMTFBRTtEMjE3OzExMTAgMTE2RCAxMUFFOyAjICjtiJc7IO2Ilzsg4YSQ4YWt4YauOyDtiJc7IOGEkOGFreGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgVFlPRAorRDIxODtEMjE4OzExMTAgMTE2RCAxMUFGO0QyMTg7MTExMCAxMTZEIDExQUY7ICMgKO2ImDsg7YiYOyDhhJDhha3hhq87IO2ImDsg4YSQ4YWt4YavOyApIEhBTkdVTCBTWUxMQUJMRSBUWU9MCitEMjE5O0QyMTk7MTExMCAxMTZEIDExQjA7RDIxOTsxMTEwIDExNkQgMTFCMDsgIyAo7YiZOyDtiJk7IOGEkOGFreGGsDsg7YiZOyDhhJDhha3hhrA7ICkgSEFOR1VMIFNZTExBQkxFIFRZT0xHCitEMjFBO0QyMUE7MTExMCAxMTZEIDExQjE7RDIxQTsxMTEwIDExNkQgMTFCMTsgIyAo7YiaOyDtiJo7IOGEkOGFreGGsTsg7YiaOyDhhJDhha3hhrE7ICkgSEFOR1VMIFNZTExBQkxFIFRZT0xNCitEMjFCO0QyMUI7MTExMCAxMTZEIDExQjI7RDIxQjsxMTEwIDExNkQgMTFCMjsgIyAo7YibOyDtiJs7IOGEkOGFreGGsjsg7YibOyDhhJDhha3hhrI7ICkgSEFOR1VMIFNZTExBQkxFIFRZT0xCCitEMjFDO0QyMUM7MTExMCAxMTZEIDExQjM7RDIxQzsxMTEwIDExNkQgMTFCMzsgIyAo7YicOyDtiJw7IOGEkOGFreGGszsg7YicOyDhhJDhha3hhrM7ICkgSEFOR1VMIFNZTExBQkxFIFRZT0xTCitEMjFEO0QyMUQ7MTExMCAxMTZEIDExQjQ7RDIxRDsxMTEwIDExNkQgMTFCNDsgIyAo7YidOyDtiJ07IOGEkOGFreGGtDsg7YidOyDhhJDhha3hhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFRZT0xUCitEMjFFO0QyMUU7MTExMCAxMTZEIDExQjU7RDIxRTsxMTEwIDExNkQgMTFCNTsgIyAo7YieOyDtiJ47IOGEkOGFreGGtTsg7YieOyDhhJDhha3hhrU7ICkgSEFOR1VMIFNZTExBQkxFIFRZT0xQCitEMjFGO0QyMUY7MTExMCAxMTZEIDExQjY7RDIxRjsxMTEwIDExNkQgMTFCNjsgIyAo7YifOyDtiJ87IOGEkOGFreGGtjsg7YifOyDhhJDhha3hhrY7ICkgSEFOR1VMIFNZTExBQkxFIFRZT0xICitEMjIwO0QyMjA7MTExMCAxMTZEIDExQjc7RDIyMDsxMTEwIDExNkQgMTFCNzsgIyAo7YigOyDtiKA7IOGEkOGFreGGtzsg7YigOyDhhJDhha3hhrc7ICkgSEFOR1VMIFNZTExBQkxFIFRZT00KK0QyMjE7RDIyMTsxMTEwIDExNkQgMTFCODtEMjIxOzExMTAgMTE2RCAxMUI4OyAjICjtiKE7IO2IoTsg4YSQ4YWt4Ya4OyDtiKE7IOGEkOGFreGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgVFlPQgorRDIyMjtEMjIyOzExMTAgMTE2RCAxMUI5O0QyMjI7MTExMCAxMTZEIDExQjk7ICMgKO2Iojsg7YiiOyDhhJDhha3hhrk7IO2Iojsg4YSQ4YWt4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBUWU9CUworRDIyMztEMjIzOzExMTAgMTE2RCAxMUJBO0QyMjM7MTExMCAxMTZEIDExQkE7ICMgKO2Iozsg7YijOyDhhJDhha3hhro7IO2Iozsg4YSQ4YWt4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBUWU9TCitEMjI0O0QyMjQ7MTExMCAxMTZEIDExQkI7RDIyNDsxMTEwIDExNkQgMTFCQjsgIyAo7YikOyDtiKQ7IOGEkOGFreGGuzsg7YikOyDhhJDhha3hhrs7ICkgSEFOR1VMIFNZTExBQkxFIFRZT1NTCitEMjI1O0QyMjU7MTExMCAxMTZEIDExQkM7RDIyNTsxMTEwIDExNkQgMTFCQzsgIyAo7YilOyDtiKU7IOGEkOGFreGGvDsg7YilOyDhhJDhha3hhrw7ICkgSEFOR1VMIFNZTExBQkxFIFRZT05HCitEMjI2O0QyMjY7MTExMCAxMTZEIDExQkQ7RDIyNjsxMTEwIDExNkQgMTFCRDsgIyAo7YimOyDtiKY7IOGEkOGFreGGvTsg7YimOyDhhJDhha3hhr07ICkgSEFOR1VMIFNZTExBQkxFIFRZT0oKK0QyMjc7RDIyNzsxMTEwIDExNkQgMTFCRTtEMjI3OzExMTAgMTE2RCAxMUJFOyAjICjtiKc7IO2Ipzsg4YSQ4YWt4Ya+OyDtiKc7IOGEkOGFreGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgVFlPQworRDIyODtEMjI4OzExMTAgMTE2RCAxMUJGO0QyMjg7MTExMCAxMTZEIDExQkY7ICMgKO2IqDsg7YioOyDhhJDhha3hhr87IO2IqDsg4YSQ4YWt4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBUWU9LCitEMjI5O0QyMjk7MTExMCAxMTZEIDExQzA7RDIyOTsxMTEwIDExNkQgMTFDMDsgIyAo7YipOyDtiKk7IOGEkOGFreGHgDsg7YipOyDhhJDhha3hh4A7ICkgSEFOR1VMIFNZTExBQkxFIFRZT1QKK0QyMkE7RDIyQTsxMTEwIDExNkQgMTFDMTtEMjJBOzExMTAgMTE2RCAxMUMxOyAjICjtiKo7IO2Iqjsg4YSQ4YWt4YeBOyDtiKo7IOGEkOGFreGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgVFlPUAorRDIyQjtEMjJCOzExMTAgMTE2RCAxMUMyO0QyMkI7MTExMCAxMTZEIDExQzI7ICMgKO2Iqzsg7YirOyDhhJDhha3hh4I7IO2Iqzsg4YSQ4YWt4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBUWU9ICitEMjJDO0QyMkM7MTExMCAxMTZFO0QyMkM7MTExMCAxMTZFOyAjICjtiKw7IO2IrDsg4YSQ4YWuOyDtiKw7IOGEkOGFrjsgKSBIQU5HVUwgU1lMTEFCTEUgVFUKK0QyMkQ7RDIyRDsxMTEwIDExNkUgMTFBODtEMjJEOzExMTAgMTE2RSAxMUE4OyAjICjtiK07IO2IrTsg4YSQ4YWu4YaoOyDtiK07IOGEkOGFruGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgVFVHCitEMjJFO0QyMkU7MTExMCAxMTZFIDExQTk7RDIyRTsxMTEwIDExNkUgMTFBOTsgIyAo7YiuOyDtiK47IOGEkOGFruGGqTsg7YiuOyDhhJDhha7hhqk7ICkgSEFOR1VMIFNZTExBQkxFIFRVR0cKK0QyMkY7RDIyRjsxMTEwIDExNkUgMTFBQTtEMjJGOzExMTAgMTE2RSAxMUFBOyAjICjtiK87IO2Irzsg4YSQ4YWu4YaqOyDtiK87IOGEkOGFruGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgVFVHUworRDIzMDtEMjMwOzExMTAgMTE2RSAxMUFCO0QyMzA7MTExMCAxMTZFIDExQUI7ICMgKO2IsDsg7YiwOyDhhJDhha7hhqs7IO2IsDsg4YSQ4YWu4YarOyApIEhBTkdVTCBTWUxMQUJMRSBUVU4KK0QyMzE7RDIzMTsxMTEwIDExNkUgMTFBQztEMjMxOzExMTAgMTE2RSAxMUFDOyAjICjtiLE7IO2IsTsg4YSQ4YWu4YasOyDtiLE7IOGEkOGFruGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgVFVOSgorRDIzMjtEMjMyOzExMTAgMTE2RSAxMUFEO0QyMzI7MTExMCAxMTZFIDExQUQ7ICMgKO2Isjsg7YiyOyDhhJDhha7hhq07IO2Isjsg4YSQ4YWu4YatOyApIEhBTkdVTCBTWUxMQUJMRSBUVU5ICitEMjMzO0QyMzM7MTExMCAxMTZFIDExQUU7RDIzMzsxMTEwIDExNkUgMTFBRTsgIyAo7YizOyDtiLM7IOGEkOGFruGGrjsg7YizOyDhhJDhha7hhq47ICkgSEFOR1VMIFNZTExBQkxFIFRVRAorRDIzNDtEMjM0OzExMTAgMTE2RSAxMUFGO0QyMzQ7MTExMCAxMTZFIDExQUY7ICMgKO2ItDsg7Yi0OyDhhJDhha7hhq87IO2ItDsg4YSQ4YWu4YavOyApIEhBTkdVTCBTWUxMQUJMRSBUVUwKK0QyMzU7RDIzNTsxMTEwIDExNkUgMTFCMDtEMjM1OzExMTAgMTE2RSAxMUIwOyAjICjtiLU7IO2ItTsg4YSQ4YWu4YawOyDtiLU7IOGEkOGFruGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgVFVMRworRDIzNjtEMjM2OzExMTAgMTE2RSAxMUIxO0QyMzY7MTExMCAxMTZFIDExQjE7ICMgKO2Itjsg7Yi2OyDhhJDhha7hhrE7IO2Itjsg4YSQ4YWu4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBUVUxNCitEMjM3O0QyMzc7MTExMCAxMTZFIDExQjI7RDIzNzsxMTEwIDExNkUgMTFCMjsgIyAo7Yi3OyDtiLc7IOGEkOGFruGGsjsg7Yi3OyDhhJDhha7hhrI7ICkgSEFOR1VMIFNZTExBQkxFIFRVTEIKK0QyMzg7RDIzODsxMTEwIDExNkUgMTFCMztEMjM4OzExMTAgMTE2RSAxMUIzOyAjICjtiLg7IO2IuDsg4YSQ4YWu4YazOyDtiLg7IOGEkOGFruGGszsgKSBIQU5HVUwgU1lMTEFCTEUgVFVMUworRDIzOTtEMjM5OzExMTAgMTE2RSAxMUI0O0QyMzk7MTExMCAxMTZFIDExQjQ7ICMgKO2IuTsg7Yi5OyDhhJDhha7hhrQ7IO2IuTsg4YSQ4YWu4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBUVUxUCitEMjNBO0QyM0E7MTExMCAxMTZFIDExQjU7RDIzQTsxMTEwIDExNkUgMTFCNTsgIyAo7Yi6OyDtiLo7IOGEkOGFruGGtTsg7Yi6OyDhhJDhha7hhrU7ICkgSEFOR1VMIFNZTExBQkxFIFRVTFAKK0QyM0I7RDIzQjsxMTEwIDExNkUgMTFCNjtEMjNCOzExMTAgMTE2RSAxMUI2OyAjICjtiLs7IO2Iuzsg4YSQ4YWu4Ya2OyDtiLs7IOGEkOGFruGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgVFVMSAorRDIzQztEMjNDOzExMTAgMTE2RSAxMUI3O0QyM0M7MTExMCAxMTZFIDExQjc7ICMgKO2IvDsg7Yi8OyDhhJDhha7hhrc7IO2IvDsg4YSQ4YWu4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBUVU0KK0QyM0Q7RDIzRDsxMTEwIDExNkUgMTFCODtEMjNEOzExMTAgMTE2RSAxMUI4OyAjICjtiL07IO2IvTsg4YSQ4YWu4Ya4OyDtiL07IOGEkOGFruGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgVFVCCitEMjNFO0QyM0U7MTExMCAxMTZFIDExQjk7RDIzRTsxMTEwIDExNkUgMTFCOTsgIyAo7Yi+OyDtiL47IOGEkOGFruGGuTsg7Yi+OyDhhJDhha7hhrk7ICkgSEFOR1VMIFNZTExBQkxFIFRVQlMKK0QyM0Y7RDIzRjsxMTEwIDExNkUgMTFCQTtEMjNGOzExMTAgMTE2RSAxMUJBOyAjICjtiL87IO2Ivzsg4YSQ4YWu4Ya6OyDtiL87IOGEkOGFruGGujsgKSBIQU5HVUwgU1lMTEFCTEUgVFVTCitEMjQwO0QyNDA7MTExMCAxMTZFIDExQkI7RDI0MDsxMTEwIDExNkUgMTFCQjsgIyAo7YmAOyDtiYA7IOGEkOGFruGGuzsg7YmAOyDhhJDhha7hhrs7ICkgSEFOR1VMIFNZTExBQkxFIFRVU1MKK0QyNDE7RDI0MTsxMTEwIDExNkUgMTFCQztEMjQxOzExMTAgMTE2RSAxMUJDOyAjICjtiYE7IO2JgTsg4YSQ4YWu4Ya8OyDtiYE7IOGEkOGFruGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgVFVORworRDI0MjtEMjQyOzExMTAgMTE2RSAxMUJEO0QyNDI7MTExMCAxMTZFIDExQkQ7ICMgKO2Jgjsg7YmCOyDhhJDhha7hhr07IO2Jgjsg4YSQ4YWu4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBUVUoKK0QyNDM7RDI0MzsxMTEwIDExNkUgMTFCRTtEMjQzOzExMTAgMTE2RSAxMUJFOyAjICjtiYM7IO2Jgzsg4YSQ4YWu4Ya+OyDtiYM7IOGEkOGFruGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgVFVDCitEMjQ0O0QyNDQ7MTExMCAxMTZFIDExQkY7RDI0NDsxMTEwIDExNkUgMTFCRjsgIyAo7YmEOyDtiYQ7IOGEkOGFruGGvzsg7YmEOyDhhJDhha7hhr87ICkgSEFOR1VMIFNZTExBQkxFIFRVSworRDI0NTtEMjQ1OzExMTAgMTE2RSAxMUMwO0QyNDU7MTExMCAxMTZFIDExQzA7ICMgKO2JhTsg7YmFOyDhhJDhha7hh4A7IO2JhTsg4YSQ4YWu4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBUVVQKK0QyNDY7RDI0NjsxMTEwIDExNkUgMTFDMTtEMjQ2OzExMTAgMTE2RSAxMUMxOyAjICjtiYY7IO2Jhjsg4YSQ4YWu4YeBOyDtiYY7IOGEkOGFruGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgVFVQCitEMjQ3O0QyNDc7MTExMCAxMTZFIDExQzI7RDI0NzsxMTEwIDExNkUgMTFDMjsgIyAo7YmHOyDtiYc7IOGEkOGFruGHgjsg7YmHOyDhhJDhha7hh4I7ICkgSEFOR1VMIFNZTExBQkxFIFRVSAorRDI0ODtEMjQ4OzExMTAgMTE2RjtEMjQ4OzExMTAgMTE2RjsgIyAo7YmIOyDtiYg7IOGEkOGFrzsg7YmIOyDhhJDhha87ICkgSEFOR1VMIFNZTExBQkxFIFRXRU8KK0QyNDk7RDI0OTsxMTEwIDExNkYgMTFBODtEMjQ5OzExMTAgMTE2RiAxMUE4OyAjICjtiYk7IO2JiTsg4YSQ4YWv4YaoOyDtiYk7IOGEkOGFr+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgVFdFT0cKK0QyNEE7RDI0QTsxMTEwIDExNkYgMTFBOTtEMjRBOzExMTAgMTE2RiAxMUE5OyAjICjtiYo7IO2Jijsg4YSQ4YWv4YapOyDtiYo7IOGEkOGFr+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgVFdFT0dHCitEMjRCO0QyNEI7MTExMCAxMTZGIDExQUE7RDI0QjsxMTEwIDExNkYgMTFBQTsgIyAo7YmLOyDtiYs7IOGEkOGFr+GGqjsg7YmLOyDhhJDhha/hhqo7ICkgSEFOR1VMIFNZTExBQkxFIFRXRU9HUworRDI0QztEMjRDOzExMTAgMTE2RiAxMUFCO0QyNEM7MTExMCAxMTZGIDExQUI7ICMgKO2JjDsg7YmMOyDhhJDhha/hhqs7IO2JjDsg4YSQ4YWv4YarOyApIEhBTkdVTCBTWUxMQUJMRSBUV0VPTgorRDI0RDtEMjREOzExMTAgMTE2RiAxMUFDO0QyNEQ7MTExMCAxMTZGIDExQUM7ICMgKO2JjTsg7YmNOyDhhJDhha/hhqw7IO2JjTsg4YSQ4YWv4YasOyApIEhBTkdVTCBTWUxMQUJMRSBUV0VPTkoKK0QyNEU7RDI0RTsxMTEwIDExNkYgMTFBRDtEMjRFOzExMTAgMTE2RiAxMUFEOyAjICjtiY47IO2Jjjsg4YSQ4YWv4YatOyDtiY47IOGEkOGFr+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgVFdFT05ICitEMjRGO0QyNEY7MTExMCAxMTZGIDExQUU7RDI0RjsxMTEwIDExNkYgMTFBRTsgIyAo7YmPOyDtiY87IOGEkOGFr+GGrjsg7YmPOyDhhJDhha/hhq47ICkgSEFOR1VMIFNZTExBQkxFIFRXRU9ECitEMjUwO0QyNTA7MTExMCAxMTZGIDExQUY7RDI1MDsxMTEwIDExNkYgMTFBRjsgIyAo7YmQOyDtiZA7IOGEkOGFr+GGrzsg7YmQOyDhhJDhha/hhq87ICkgSEFOR1VMIFNZTExBQkxFIFRXRU9MCitEMjUxO0QyNTE7MTExMCAxMTZGIDExQjA7RDI1MTsxMTEwIDExNkYgMTFCMDsgIyAo7YmROyDtiZE7IOGEkOGFr+GGsDsg7YmROyDhhJDhha/hhrA7ICkgSEFOR1VMIFNZTExBQkxFIFRXRU9MRworRDI1MjtEMjUyOzExMTAgMTE2RiAxMUIxO0QyNTI7MTExMCAxMTZGIDExQjE7ICMgKO2Jkjsg7YmSOyDhhJDhha/hhrE7IO2Jkjsg4YSQ4YWv4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBUV0VPTE0KK0QyNTM7RDI1MzsxMTEwIDExNkYgMTFCMjtEMjUzOzExMTAgMTE2RiAxMUIyOyAjICjtiZM7IO2Jkzsg4YSQ4YWv4YayOyDtiZM7IOGEkOGFr+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgVFdFT0xCCitEMjU0O0QyNTQ7MTExMCAxMTZGIDExQjM7RDI1NDsxMTEwIDExNkYgMTFCMzsgIyAo7YmUOyDtiZQ7IOGEkOGFr+GGszsg7YmUOyDhhJDhha/hhrM7ICkgSEFOR1VMIFNZTExBQkxFIFRXRU9MUworRDI1NTtEMjU1OzExMTAgMTE2RiAxMUI0O0QyNTU7MTExMCAxMTZGIDExQjQ7ICMgKO2JlTsg7YmVOyDhhJDhha/hhrQ7IO2JlTsg4YSQ4YWv4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBUV0VPTFQKK0QyNTY7RDI1NjsxMTEwIDExNkYgMTFCNTtEMjU2OzExMTAgMTE2RiAxMUI1OyAjICjtiZY7IO2Jljsg4YSQ4YWv4Ya1OyDtiZY7IOGEkOGFr+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgVFdFT0xQCitEMjU3O0QyNTc7MTExMCAxMTZGIDExQjY7RDI1NzsxMTEwIDExNkYgMTFCNjsgIyAo7YmXOyDtiZc7IOGEkOGFr+GGtjsg7YmXOyDhhJDhha/hhrY7ICkgSEFOR1VMIFNZTExBQkxFIFRXRU9MSAorRDI1ODtEMjU4OzExMTAgMTE2RiAxMUI3O0QyNTg7MTExMCAxMTZGIDExQjc7ICMgKO2JmDsg7YmYOyDhhJDhha/hhrc7IO2JmDsg4YSQ4YWv4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBUV0VPTQorRDI1OTtEMjU5OzExMTAgMTE2RiAxMUI4O0QyNTk7MTExMCAxMTZGIDExQjg7ICMgKO2JmTsg7YmZOyDhhJDhha/hhrg7IO2JmTsg4YSQ4YWv4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBUV0VPQgorRDI1QTtEMjVBOzExMTAgMTE2RiAxMUI5O0QyNUE7MTExMCAxMTZGIDExQjk7ICMgKO2Jmjsg7YmaOyDhhJDhha/hhrk7IO2Jmjsg4YSQ4YWv4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBUV0VPQlMKK0QyNUI7RDI1QjsxMTEwIDExNkYgMTFCQTtEMjVCOzExMTAgMTE2RiAxMUJBOyAjICjtiZs7IO2Jmzsg4YSQ4YWv4Ya6OyDtiZs7IOGEkOGFr+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgVFdFT1MKK0QyNUM7RDI1QzsxMTEwIDExNkYgMTFCQjtEMjVDOzExMTAgMTE2RiAxMUJCOyAjICjtiZw7IO2JnDsg4YSQ4YWv4Ya7OyDtiZw7IOGEkOGFr+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgVFdFT1NTCitEMjVEO0QyNUQ7MTExMCAxMTZGIDExQkM7RDI1RDsxMTEwIDExNkYgMTFCQzsgIyAo7YmdOyDtiZ07IOGEkOGFr+GGvDsg7YmdOyDhhJDhha/hhrw7ICkgSEFOR1VMIFNZTExBQkxFIFRXRU9ORworRDI1RTtEMjVFOzExMTAgMTE2RiAxMUJEO0QyNUU7MTExMCAxMTZGIDExQkQ7ICMgKO2Jnjsg7YmeOyDhhJDhha/hhr07IO2Jnjsg4YSQ4YWv4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBUV0VPSgorRDI1RjtEMjVGOzExMTAgMTE2RiAxMUJFO0QyNUY7MTExMCAxMTZGIDExQkU7ICMgKO2Jnzsg7YmfOyDhhJDhha/hhr47IO2Jnzsg4YSQ4YWv4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBUV0VPQworRDI2MDtEMjYwOzExMTAgMTE2RiAxMUJGO0QyNjA7MTExMCAxMTZGIDExQkY7ICMgKO2JoDsg7YmgOyDhhJDhha/hhr87IO2JoDsg4YSQ4YWv4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBUV0VPSworRDI2MTtEMjYxOzExMTAgMTE2RiAxMUMwO0QyNjE7MTExMCAxMTZGIDExQzA7ICMgKO2JoTsg7YmhOyDhhJDhha/hh4A7IO2JoTsg4YSQ4YWv4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBUV0VPVAorRDI2MjtEMjYyOzExMTAgMTE2RiAxMUMxO0QyNjI7MTExMCAxMTZGIDExQzE7ICMgKO2Jojsg7YmiOyDhhJDhha/hh4E7IO2Jojsg4YSQ4YWv4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBUV0VPUAorRDI2MztEMjYzOzExMTAgMTE2RiAxMUMyO0QyNjM7MTExMCAxMTZGIDExQzI7ICMgKO2Jozsg7YmjOyDhhJDhha/hh4I7IO2Jozsg4YSQ4YWv4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBUV0VPSAorRDI2NDtEMjY0OzExMTAgMTE3MDtEMjY0OzExMTAgMTE3MDsgIyAo7YmkOyDtiaQ7IOGEkOGFsDsg7YmkOyDhhJDhhbA7ICkgSEFOR1VMIFNZTExBQkxFIFRXRQorRDI2NTtEMjY1OzExMTAgMTE3MCAxMUE4O0QyNjU7MTExMCAxMTcwIDExQTg7ICMgKO2JpTsg7YmlOyDhhJDhhbDhhqg7IO2JpTsg4YSQ4YWw4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBUV0VHCitEMjY2O0QyNjY7MTExMCAxMTcwIDExQTk7RDI2NjsxMTEwIDExNzAgMTFBOTsgIyAo7YmmOyDtiaY7IOGEkOGFsOGGqTsg7YmmOyDhhJDhhbDhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFRXRUdHCitEMjY3O0QyNjc7MTExMCAxMTcwIDExQUE7RDI2NzsxMTEwIDExNzAgMTFBQTsgIyAo7YmnOyDtiac7IOGEkOGFsOGGqjsg7YmnOyDhhJDhhbDhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFRXRUdTCitEMjY4O0QyNjg7MTExMCAxMTcwIDExQUI7RDI2ODsxMTEwIDExNzAgMTFBQjsgIyAo7YmoOyDtiag7IOGEkOGFsOGGqzsg7YmoOyDhhJDhhbDhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFRXRU4KK0QyNjk7RDI2OTsxMTEwIDExNzAgMTFBQztEMjY5OzExMTAgMTE3MCAxMUFDOyAjICjtiak7IO2JqTsg4YSQ4YWw4YasOyDtiak7IOGEkOGFsOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgVFdFTkoKK0QyNkE7RDI2QTsxMTEwIDExNzAgMTFBRDtEMjZBOzExMTAgMTE3MCAxMUFEOyAjICjtiao7IO2Jqjsg4YSQ4YWw4YatOyDtiao7IOGEkOGFsOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgVFdFTkgKK0QyNkI7RDI2QjsxMTEwIDExNzAgMTFBRTtEMjZCOzExMTAgMTE3MCAxMUFFOyAjICjtias7IO2Jqzsg4YSQ4YWw4YauOyDtias7IOGEkOGFsOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgVFdFRAorRDI2QztEMjZDOzExMTAgMTE3MCAxMUFGO0QyNkM7MTExMCAxMTcwIDExQUY7ICMgKO2JrDsg7YmsOyDhhJDhhbDhhq87IO2JrDsg4YSQ4YWw4YavOyApIEhBTkdVTCBTWUxMQUJMRSBUV0VMCitEMjZEO0QyNkQ7MTExMCAxMTcwIDExQjA7RDI2RDsxMTEwIDExNzAgMTFCMDsgIyAo7YmtOyDtia07IOGEkOGFsOGGsDsg7YmtOyDhhJDhhbDhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFRXRUxHCitEMjZFO0QyNkU7MTExMCAxMTcwIDExQjE7RDI2RTsxMTEwIDExNzAgMTFCMTsgIyAo7YmuOyDtia47IOGEkOGFsOGGsTsg7YmuOyDhhJDhhbDhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFRXRUxNCitEMjZGO0QyNkY7MTExMCAxMTcwIDExQjI7RDI2RjsxMTEwIDExNzAgMTFCMjsgIyAo7YmvOyDtia87IOGEkOGFsOGGsjsg7YmvOyDhhJDhhbDhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFRXRUxCCitEMjcwO0QyNzA7MTExMCAxMTcwIDExQjM7RDI3MDsxMTEwIDExNzAgMTFCMzsgIyAo7YmwOyDtibA7IOGEkOGFsOGGszsg7YmwOyDhhJDhhbDhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFRXRUxTCitEMjcxO0QyNzE7MTExMCAxMTcwIDExQjQ7RDI3MTsxMTEwIDExNzAgMTFCNDsgIyAo7YmxOyDtibE7IOGEkOGFsOGGtDsg7YmxOyDhhJDhhbDhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFRXRUxUCitEMjcyO0QyNzI7MTExMCAxMTcwIDExQjU7RDI3MjsxMTEwIDExNzAgMTFCNTsgIyAo7YmyOyDtibI7IOGEkOGFsOGGtTsg7YmyOyDhhJDhhbDhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFRXRUxQCitEMjczO0QyNzM7MTExMCAxMTcwIDExQjY7RDI3MzsxMTEwIDExNzAgMTFCNjsgIyAo7YmzOyDtibM7IOGEkOGFsOGGtjsg7YmzOyDhhJDhhbDhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFRXRUxICitEMjc0O0QyNzQ7MTExMCAxMTcwIDExQjc7RDI3NDsxMTEwIDExNzAgMTFCNzsgIyAo7Ym0OyDtibQ7IOGEkOGFsOGGtzsg7Ym0OyDhhJDhhbDhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFRXRU0KK0QyNzU7RDI3NTsxMTEwIDExNzAgMTFCODtEMjc1OzExMTAgMTE3MCAxMUI4OyAjICjtibU7IO2JtTsg4YSQ4YWw4Ya4OyDtibU7IOGEkOGFsOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgVFdFQgorRDI3NjtEMjc2OzExMTAgMTE3MCAxMUI5O0QyNzY7MTExMCAxMTcwIDExQjk7ICMgKO2Jtjsg7Ym2OyDhhJDhhbDhhrk7IO2Jtjsg4YSQ4YWw4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBUV0VCUworRDI3NztEMjc3OzExMTAgMTE3MCAxMUJBO0QyNzc7MTExMCAxMTcwIDExQkE7ICMgKO2Jtzsg7Ym3OyDhhJDhhbDhhro7IO2Jtzsg4YSQ4YWw4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBUV0VTCitEMjc4O0QyNzg7MTExMCAxMTcwIDExQkI7RDI3ODsxMTEwIDExNzAgMTFCQjsgIyAo7Ym4OyDtibg7IOGEkOGFsOGGuzsg7Ym4OyDhhJDhhbDhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFRXRVNTCitEMjc5O0QyNzk7MTExMCAxMTcwIDExQkM7RDI3OTsxMTEwIDExNzAgMTFCQzsgIyAo7Ym5OyDtibk7IOGEkOGFsOGGvDsg7Ym5OyDhhJDhhbDhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFRXRU5HCitEMjdBO0QyN0E7MTExMCAxMTcwIDExQkQ7RDI3QTsxMTEwIDExNzAgMTFCRDsgIyAo7Ym6OyDtibo7IOGEkOGFsOGGvTsg7Ym6OyDhhJDhhbDhhr07ICkgSEFOR1VMIFNZTExBQkxFIFRXRUoKK0QyN0I7RDI3QjsxMTEwIDExNzAgMTFCRTtEMjdCOzExMTAgMTE3MCAxMUJFOyAjICjtibs7IO2Juzsg4YSQ4YWw4Ya+OyDtibs7IOGEkOGFsOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgVFdFQworRDI3QztEMjdDOzExMTAgMTE3MCAxMUJGO0QyN0M7MTExMCAxMTcwIDExQkY7ICMgKO2JvDsg7Ym8OyDhhJDhhbDhhr87IO2JvDsg4YSQ4YWw4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBUV0VLCitEMjdEO0QyN0Q7MTExMCAxMTcwIDExQzA7RDI3RDsxMTEwIDExNzAgMTFDMDsgIyAo7Ym9OyDtib07IOGEkOGFsOGHgDsg7Ym9OyDhhJDhhbDhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFRXRVQKK0QyN0U7RDI3RTsxMTEwIDExNzAgMTFDMTtEMjdFOzExMTAgMTE3MCAxMUMxOyAjICjtib47IO2Jvjsg4YSQ4YWw4YeBOyDtib47IOGEkOGFsOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgVFdFUAorRDI3RjtEMjdGOzExMTAgMTE3MCAxMUMyO0QyN0Y7MTExMCAxMTcwIDExQzI7ICMgKO2Jvzsg7Ym/OyDhhJDhhbDhh4I7IO2Jvzsg4YSQ4YWw4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBUV0VICitEMjgwO0QyODA7MTExMCAxMTcxO0QyODA7MTExMCAxMTcxOyAjICjtioA7IO2KgDsg4YSQ4YWxOyDtioA7IOGEkOGFsTsgKSBIQU5HVUwgU1lMTEFCTEUgVFdJCitEMjgxO0QyODE7MTExMCAxMTcxIDExQTg7RDI4MTsxMTEwIDExNzEgMTFBODsgIyAo7YqBOyDtioE7IOGEkOGFseGGqDsg7YqBOyDhhJDhhbHhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFRXSUcKK0QyODI7RDI4MjsxMTEwIDExNzEgMTFBOTtEMjgyOzExMTAgMTE3MSAxMUE5OyAjICjtioI7IO2Kgjsg4YSQ4YWx4YapOyDtioI7IOGEkOGFseGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgVFdJR0cKK0QyODM7RDI4MzsxMTEwIDExNzEgMTFBQTtEMjgzOzExMTAgMTE3MSAxMUFBOyAjICjtioM7IO2Kgzsg4YSQ4YWx4YaqOyDtioM7IOGEkOGFseGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgVFdJR1MKK0QyODQ7RDI4NDsxMTEwIDExNzEgMTFBQjtEMjg0OzExMTAgMTE3MSAxMUFCOyAjICjtioQ7IO2KhDsg4YSQ4YWx4YarOyDtioQ7IOGEkOGFseGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgVFdJTgorRDI4NTtEMjg1OzExMTAgMTE3MSAxMUFDO0QyODU7MTExMCAxMTcxIDExQUM7ICMgKO2KhTsg7YqFOyDhhJDhhbHhhqw7IO2KhTsg4YSQ4YWx4YasOyApIEhBTkdVTCBTWUxMQUJMRSBUV0lOSgorRDI4NjtEMjg2OzExMTAgMTE3MSAxMUFEO0QyODY7MTExMCAxMTcxIDExQUQ7ICMgKO2Khjsg7YqGOyDhhJDhhbHhhq07IO2Khjsg4YSQ4YWx4YatOyApIEhBTkdVTCBTWUxMQUJMRSBUV0lOSAorRDI4NztEMjg3OzExMTAgMTE3MSAxMUFFO0QyODc7MTExMCAxMTcxIDExQUU7ICMgKO2Khzsg7YqHOyDhhJDhhbHhhq47IO2Khzsg4YSQ4YWx4YauOyApIEhBTkdVTCBTWUxMQUJMRSBUV0lECitEMjg4O0QyODg7MTExMCAxMTcxIDExQUY7RDI4ODsxMTEwIDExNzEgMTFBRjsgIyAo7YqIOyDtiog7IOGEkOGFseGGrzsg7YqIOyDhhJDhhbHhhq87ICkgSEFOR1VMIFNZTExBQkxFIFRXSUwKK0QyODk7RDI4OTsxMTEwIDExNzEgMTFCMDtEMjg5OzExMTAgMTE3MSAxMUIwOyAjICjtiok7IO2KiTsg4YSQ4YWx4YawOyDtiok7IOGEkOGFseGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgVFdJTEcKK0QyOEE7RDI4QTsxMTEwIDExNzEgMTFCMTtEMjhBOzExMTAgMTE3MSAxMUIxOyAjICjtioo7IO2Kijsg4YSQ4YWx4YaxOyDtioo7IOGEkOGFseGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgVFdJTE0KK0QyOEI7RDI4QjsxMTEwIDExNzEgMTFCMjtEMjhCOzExMTAgMTE3MSAxMUIyOyAjICjtios7IO2Kizsg4YSQ4YWx4YayOyDtios7IOGEkOGFseGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgVFdJTEIKK0QyOEM7RDI4QzsxMTEwIDExNzEgMTFCMztEMjhDOzExMTAgMTE3MSAxMUIzOyAjICjtiow7IO2KjDsg4YSQ4YWx4YazOyDtiow7IOGEkOGFseGGszsgKSBIQU5HVUwgU1lMTEFCTEUgVFdJTFMKK0QyOEQ7RDI4RDsxMTEwIDExNzEgMTFCNDtEMjhEOzExMTAgMTE3MSAxMUI0OyAjICjtio07IO2KjTsg4YSQ4YWx4Ya0OyDtio07IOGEkOGFseGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgVFdJTFQKK0QyOEU7RDI4RTsxMTEwIDExNzEgMTFCNTtEMjhFOzExMTAgMTE3MSAxMUI1OyAjICjtio47IO2Kjjsg4YSQ4YWx4Ya1OyDtio47IOGEkOGFseGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgVFdJTFAKK0QyOEY7RDI4RjsxMTEwIDExNzEgMTFCNjtEMjhGOzExMTAgMTE3MSAxMUI2OyAjICjtio87IO2Kjzsg4YSQ4YWx4Ya2OyDtio87IOGEkOGFseGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgVFdJTEgKK0QyOTA7RDI5MDsxMTEwIDExNzEgMTFCNztEMjkwOzExMTAgMTE3MSAxMUI3OyAjICjtipA7IO2KkDsg4YSQ4YWx4Ya3OyDtipA7IOGEkOGFseGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgVFdJTQorRDI5MTtEMjkxOzExMTAgMTE3MSAxMUI4O0QyOTE7MTExMCAxMTcxIDExQjg7ICMgKO2KkTsg7YqROyDhhJDhhbHhhrg7IO2KkTsg4YSQ4YWx4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBUV0lCCitEMjkyO0QyOTI7MTExMCAxMTcxIDExQjk7RDI5MjsxMTEwIDExNzEgMTFCOTsgIyAo7YqSOyDtipI7IOGEkOGFseGGuTsg7YqSOyDhhJDhhbHhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFRXSUJTCitEMjkzO0QyOTM7MTExMCAxMTcxIDExQkE7RDI5MzsxMTEwIDExNzEgMTFCQTsgIyAo7YqTOyDtipM7IOGEkOGFseGGujsg7YqTOyDhhJDhhbHhhro7ICkgSEFOR1VMIFNZTExBQkxFIFRXSVMKK0QyOTQ7RDI5NDsxMTEwIDExNzEgMTFCQjtEMjk0OzExMTAgMTE3MSAxMUJCOyAjICjtipQ7IO2KlDsg4YSQ4YWx4Ya7OyDtipQ7IOGEkOGFseGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgVFdJU1MKK0QyOTU7RDI5NTsxMTEwIDExNzEgMTFCQztEMjk1OzExMTAgMTE3MSAxMUJDOyAjICjtipU7IO2KlTsg4YSQ4YWx4Ya8OyDtipU7IOGEkOGFseGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgVFdJTkcKK0QyOTY7RDI5NjsxMTEwIDExNzEgMTFCRDtEMjk2OzExMTAgMTE3MSAxMUJEOyAjICjtipY7IO2Kljsg4YSQ4YWx4Ya9OyDtipY7IOGEkOGFseGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgVFdJSgorRDI5NztEMjk3OzExMTAgMTE3MSAxMUJFO0QyOTc7MTExMCAxMTcxIDExQkU7ICMgKO2Klzsg7YqXOyDhhJDhhbHhhr47IO2Klzsg4YSQ4YWx4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBUV0lDCitEMjk4O0QyOTg7MTExMCAxMTcxIDExQkY7RDI5ODsxMTEwIDExNzEgMTFCRjsgIyAo7YqYOyDtipg7IOGEkOGFseGGvzsg7YqYOyDhhJDhhbHhhr87ICkgSEFOR1VMIFNZTExBQkxFIFRXSUsKK0QyOTk7RDI5OTsxMTEwIDExNzEgMTFDMDtEMjk5OzExMTAgMTE3MSAxMUMwOyAjICjtipk7IO2KmTsg4YSQ4YWx4YeAOyDtipk7IOGEkOGFseGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgVFdJVAorRDI5QTtEMjlBOzExMTAgMTE3MSAxMUMxO0QyOUE7MTExMCAxMTcxIDExQzE7ICMgKO2Kmjsg7YqaOyDhhJDhhbHhh4E7IO2Kmjsg4YSQ4YWx4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBUV0lQCitEMjlCO0QyOUI7MTExMCAxMTcxIDExQzI7RDI5QjsxMTEwIDExNzEgMTFDMjsgIyAo7YqbOyDtips7IOGEkOGFseGHgjsg7YqbOyDhhJDhhbHhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFRXSUgKK0QyOUM7RDI5QzsxMTEwIDExNzI7RDI5QzsxMTEwIDExNzI7ICMgKO2KnDsg7YqcOyDhhJDhhbI7IO2KnDsg4YSQ4YWyOyApIEhBTkdVTCBTWUxMQUJMRSBUWVUKK0QyOUQ7RDI5RDsxMTEwIDExNzIgMTFBODtEMjlEOzExMTAgMTE3MiAxMUE4OyAjICjtip07IO2KnTsg4YSQ4YWy4YaoOyDtip07IOGEkOGFsuGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgVFlVRworRDI5RTtEMjlFOzExMTAgMTE3MiAxMUE5O0QyOUU7MTExMCAxMTcyIDExQTk7ICMgKO2Knjsg7YqeOyDhhJDhhbLhhqk7IO2Knjsg4YSQ4YWy4YapOyApIEhBTkdVTCBTWUxMQUJMRSBUWVVHRworRDI5RjtEMjlGOzExMTAgMTE3MiAxMUFBO0QyOUY7MTExMCAxMTcyIDExQUE7ICMgKO2Knzsg7YqfOyDhhJDhhbLhhqo7IO2Knzsg4YSQ4YWy4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBUWVVHUworRDJBMDtEMkEwOzExMTAgMTE3MiAxMUFCO0QyQTA7MTExMCAxMTcyIDExQUI7ICMgKO2KoDsg7YqgOyDhhJDhhbLhhqs7IO2KoDsg4YSQ4YWy4YarOyApIEhBTkdVTCBTWUxMQUJMRSBUWVVOCitEMkExO0QyQTE7MTExMCAxMTcyIDExQUM7RDJBMTsxMTEwIDExNzIgMTFBQzsgIyAo7YqhOyDtiqE7IOGEkOGFsuGGrDsg7YqhOyDhhJDhhbLhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFRZVU5KCitEMkEyO0QyQTI7MTExMCAxMTcyIDExQUQ7RDJBMjsxMTEwIDExNzIgMTFBRDsgIyAo7YqiOyDtiqI7IOGEkOGFsuGGrTsg7YqiOyDhhJDhhbLhhq07ICkgSEFOR1VMIFNZTExBQkxFIFRZVU5ICitEMkEzO0QyQTM7MTExMCAxMTcyIDExQUU7RDJBMzsxMTEwIDExNzIgMTFBRTsgIyAo7YqjOyDtiqM7IOGEkOGFsuGGrjsg7YqjOyDhhJDhhbLhhq47ICkgSEFOR1VMIFNZTExBQkxFIFRZVUQKK0QyQTQ7RDJBNDsxMTEwIDExNzIgMTFBRjtEMkE0OzExMTAgMTE3MiAxMUFGOyAjICjtiqQ7IO2KpDsg4YSQ4YWy4YavOyDtiqQ7IOGEkOGFsuGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgVFlVTAorRDJBNTtEMkE1OzExMTAgMTE3MiAxMUIwO0QyQTU7MTExMCAxMTcyIDExQjA7ICMgKO2KpTsg7YqlOyDhhJDhhbLhhrA7IO2KpTsg4YSQ4YWy4YawOyApIEhBTkdVTCBTWUxMQUJMRSBUWVVMRworRDJBNjtEMkE2OzExMTAgMTE3MiAxMUIxO0QyQTY7MTExMCAxMTcyIDExQjE7ICMgKO2Kpjsg7YqmOyDhhJDhhbLhhrE7IO2Kpjsg4YSQ4YWy4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBUWVVMTQorRDJBNztEMkE3OzExMTAgMTE3MiAxMUIyO0QyQTc7MTExMCAxMTcyIDExQjI7ICMgKO2Kpzsg7YqnOyDhhJDhhbLhhrI7IO2Kpzsg4YSQ4YWy4YayOyApIEhBTkdVTCBTWUxMQUJMRSBUWVVMQgorRDJBODtEMkE4OzExMTAgMTE3MiAxMUIzO0QyQTg7MTExMCAxMTcyIDExQjM7ICMgKO2KqDsg7YqoOyDhhJDhhbLhhrM7IO2KqDsg4YSQ4YWy4YazOyApIEhBTkdVTCBTWUxMQUJMRSBUWVVMUworRDJBOTtEMkE5OzExMTAgMTE3MiAxMUI0O0QyQTk7MTExMCAxMTcyIDExQjQ7ICMgKO2KqTsg7YqpOyDhhJDhhbLhhrQ7IO2KqTsg4YSQ4YWy4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBUWVVMVAorRDJBQTtEMkFBOzExMTAgMTE3MiAxMUI1O0QyQUE7MTExMCAxMTcyIDExQjU7ICMgKO2Kqjsg7YqqOyDhhJDhhbLhhrU7IO2Kqjsg4YSQ4YWy4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBUWVVMUAorRDJBQjtEMkFCOzExMTAgMTE3MiAxMUI2O0QyQUI7MTExMCAxMTcyIDExQjY7ICMgKO2Kqzsg7YqrOyDhhJDhhbLhhrY7IO2Kqzsg4YSQ4YWy4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBUWVVMSAorRDJBQztEMkFDOzExMTAgMTE3MiAxMUI3O0QyQUM7MTExMCAxMTcyIDExQjc7ICMgKO2KrDsg7YqsOyDhhJDhhbLhhrc7IO2KrDsg4YSQ4YWy4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBUWVVNCitEMkFEO0QyQUQ7MTExMCAxMTcyIDExQjg7RDJBRDsxMTEwIDExNzIgMTFCODsgIyAo7YqtOyDtiq07IOGEkOGFsuGGuDsg7YqtOyDhhJDhhbLhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFRZVUIKK0QyQUU7RDJBRTsxMTEwIDExNzIgMTFCOTtEMkFFOzExMTAgMTE3MiAxMUI5OyAjICjtiq47IO2Krjsg4YSQ4YWy4Ya5OyDtiq47IOGEkOGFsuGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgVFlVQlMKK0QyQUY7RDJBRjsxMTEwIDExNzIgMTFCQTtEMkFGOzExMTAgMTE3MiAxMUJBOyAjICjtiq87IO2Krzsg4YSQ4YWy4Ya6OyDtiq87IOGEkOGFsuGGujsgKSBIQU5HVUwgU1lMTEFCTEUgVFlVUworRDJCMDtEMkIwOzExMTAgMTE3MiAxMUJCO0QyQjA7MTExMCAxMTcyIDExQkI7ICMgKO2KsDsg7YqwOyDhhJDhhbLhhrs7IO2KsDsg4YSQ4YWy4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBUWVVTUworRDJCMTtEMkIxOzExMTAgMTE3MiAxMUJDO0QyQjE7MTExMCAxMTcyIDExQkM7ICMgKO2KsTsg7YqxOyDhhJDhhbLhhrw7IO2KsTsg4YSQ4YWy4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBUWVVORworRDJCMjtEMkIyOzExMTAgMTE3MiAxMUJEO0QyQjI7MTExMCAxMTcyIDExQkQ7ICMgKO2Ksjsg7YqyOyDhhJDhhbLhhr07IO2Ksjsg4YSQ4YWy4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBUWVVKCitEMkIzO0QyQjM7MTExMCAxMTcyIDExQkU7RDJCMzsxMTEwIDExNzIgMTFCRTsgIyAo7YqzOyDtirM7IOGEkOGFsuGGvjsg7YqzOyDhhJDhhbLhhr47ICkgSEFOR1VMIFNZTExBQkxFIFRZVUMKK0QyQjQ7RDJCNDsxMTEwIDExNzIgMTFCRjtEMkI0OzExMTAgMTE3MiAxMUJGOyAjICjtirQ7IO2KtDsg4YSQ4YWy4Ya/OyDtirQ7IOGEkOGFsuGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgVFlVSworRDJCNTtEMkI1OzExMTAgMTE3MiAxMUMwO0QyQjU7MTExMCAxMTcyIDExQzA7ICMgKO2KtTsg7Yq1OyDhhJDhhbLhh4A7IO2KtTsg4YSQ4YWy4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBUWVVUCitEMkI2O0QyQjY7MTExMCAxMTcyIDExQzE7RDJCNjsxMTEwIDExNzIgMTFDMTsgIyAo7Yq2OyDtirY7IOGEkOGFsuGHgTsg7Yq2OyDhhJDhhbLhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFRZVVAKK0QyQjc7RDJCNzsxMTEwIDExNzIgMTFDMjtEMkI3OzExMTAgMTE3MiAxMUMyOyAjICjtirc7IO2Ktzsg4YSQ4YWy4YeCOyDtirc7IOGEkOGFsuGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgVFlVSAorRDJCODtEMkI4OzExMTAgMTE3MztEMkI4OzExMTAgMTE3MzsgIyAo7Yq4OyDtirg7IOGEkOGFszsg7Yq4OyDhhJDhhbM7ICkgSEFOR1VMIFNZTExBQkxFIFRFVQorRDJCOTtEMkI5OzExMTAgMTE3MyAxMUE4O0QyQjk7MTExMCAxMTczIDExQTg7ICMgKO2KuTsg7Yq5OyDhhJDhhbPhhqg7IO2KuTsg4YSQ4YWz4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBURVVHCitEMkJBO0QyQkE7MTExMCAxMTczIDExQTk7RDJCQTsxMTEwIDExNzMgMTFBOTsgIyAo7Yq6OyDtiro7IOGEkOGFs+GGqTsg7Yq6OyDhhJDhhbPhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFRFVUdHCitEMkJCO0QyQkI7MTExMCAxMTczIDExQUE7RDJCQjsxMTEwIDExNzMgMTFBQTsgIyAo7Yq7OyDtirs7IOGEkOGFs+GGqjsg7Yq7OyDhhJDhhbPhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFRFVUdTCitEMkJDO0QyQkM7MTExMCAxMTczIDExQUI7RDJCQzsxMTEwIDExNzMgMTFBQjsgIyAo7Yq8OyDtirw7IOGEkOGFs+GGqzsg7Yq8OyDhhJDhhbPhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFRFVU4KK0QyQkQ7RDJCRDsxMTEwIDExNzMgMTFBQztEMkJEOzExMTAgMTE3MyAxMUFDOyAjICjtir07IO2KvTsg4YSQ4YWz4YasOyDtir07IOGEkOGFs+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgVEVVTkoKK0QyQkU7RDJCRTsxMTEwIDExNzMgMTFBRDtEMkJFOzExMTAgMTE3MyAxMUFEOyAjICjtir47IO2Kvjsg4YSQ4YWz4YatOyDtir47IOGEkOGFs+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgVEVVTkgKK0QyQkY7RDJCRjsxMTEwIDExNzMgMTFBRTtEMkJGOzExMTAgMTE3MyAxMUFFOyAjICjtir87IO2Kvzsg4YSQ4YWz4YauOyDtir87IOGEkOGFs+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgVEVVRAorRDJDMDtEMkMwOzExMTAgMTE3MyAxMUFGO0QyQzA7MTExMCAxMTczIDExQUY7ICMgKO2LgDsg7YuAOyDhhJDhhbPhhq87IO2LgDsg4YSQ4YWz4YavOyApIEhBTkdVTCBTWUxMQUJMRSBURVVMCitEMkMxO0QyQzE7MTExMCAxMTczIDExQjA7RDJDMTsxMTEwIDExNzMgMTFCMDsgIyAo7YuBOyDti4E7IOGEkOGFs+GGsDsg7YuBOyDhhJDhhbPhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFRFVUxHCitEMkMyO0QyQzI7MTExMCAxMTczIDExQjE7RDJDMjsxMTEwIDExNzMgMTFCMTsgIyAo7YuCOyDti4I7IOGEkOGFs+GGsTsg7YuCOyDhhJDhhbPhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFRFVUxNCitEMkMzO0QyQzM7MTExMCAxMTczIDExQjI7RDJDMzsxMTEwIDExNzMgMTFCMjsgIyAo7YuDOyDti4M7IOGEkOGFs+GGsjsg7YuDOyDhhJDhhbPhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFRFVUxCCitEMkM0O0QyQzQ7MTExMCAxMTczIDExQjM7RDJDNDsxMTEwIDExNzMgMTFCMzsgIyAo7YuEOyDti4Q7IOGEkOGFs+GGszsg7YuEOyDhhJDhhbPhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFRFVUxTCitEMkM1O0QyQzU7MTExMCAxMTczIDExQjQ7RDJDNTsxMTEwIDExNzMgMTFCNDsgIyAo7YuFOyDti4U7IOGEkOGFs+GGtDsg7YuFOyDhhJDhhbPhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFRFVUxUCitEMkM2O0QyQzY7MTExMCAxMTczIDExQjU7RDJDNjsxMTEwIDExNzMgMTFCNTsgIyAo7YuGOyDti4Y7IOGEkOGFs+GGtTsg7YuGOyDhhJDhhbPhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFRFVUxQCitEMkM3O0QyQzc7MTExMCAxMTczIDExQjY7RDJDNzsxMTEwIDExNzMgMTFCNjsgIyAo7YuHOyDti4c7IOGEkOGFs+GGtjsg7YuHOyDhhJDhhbPhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFRFVUxICitEMkM4O0QyQzg7MTExMCAxMTczIDExQjc7RDJDODsxMTEwIDExNzMgMTFCNzsgIyAo7YuIOyDti4g7IOGEkOGFs+GGtzsg7YuIOyDhhJDhhbPhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFRFVU0KK0QyQzk7RDJDOTsxMTEwIDExNzMgMTFCODtEMkM5OzExMTAgMTE3MyAxMUI4OyAjICjti4k7IO2LiTsg4YSQ4YWz4Ya4OyDti4k7IOGEkOGFs+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgVEVVQgorRDJDQTtEMkNBOzExMTAgMTE3MyAxMUI5O0QyQ0E7MTExMCAxMTczIDExQjk7ICMgKO2Lijsg7YuKOyDhhJDhhbPhhrk7IO2Lijsg4YSQ4YWz4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBURVVCUworRDJDQjtEMkNCOzExMTAgMTE3MyAxMUJBO0QyQ0I7MTExMCAxMTczIDExQkE7ICMgKO2Lizsg7YuLOyDhhJDhhbPhhro7IO2Lizsg4YSQ4YWz4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBURVVTCitEMkNDO0QyQ0M7MTExMCAxMTczIDExQkI7RDJDQzsxMTEwIDExNzMgMTFCQjsgIyAo7YuMOyDti4w7IOGEkOGFs+GGuzsg7YuMOyDhhJDhhbPhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFRFVVNTCitEMkNEO0QyQ0Q7MTExMCAxMTczIDExQkM7RDJDRDsxMTEwIDExNzMgMTFCQzsgIyAo7YuNOyDti407IOGEkOGFs+GGvDsg7YuNOyDhhJDhhbPhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFRFVU5HCitEMkNFO0QyQ0U7MTExMCAxMTczIDExQkQ7RDJDRTsxMTEwIDExNzMgMTFCRDsgIyAo7YuOOyDti447IOGEkOGFs+GGvTsg7YuOOyDhhJDhhbPhhr07ICkgSEFOR1VMIFNZTExBQkxFIFRFVUoKK0QyQ0Y7RDJDRjsxMTEwIDExNzMgMTFCRTtEMkNGOzExMTAgMTE3MyAxMUJFOyAjICjti487IO2Ljzsg4YSQ4YWz4Ya+OyDti487IOGEkOGFs+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgVEVVQworRDJEMDtEMkQwOzExMTAgMTE3MyAxMUJGO0QyRDA7MTExMCAxMTczIDExQkY7ICMgKO2LkDsg7YuQOyDhhJDhhbPhhr87IO2LkDsg4YSQ4YWz4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBURVVLCitEMkQxO0QyRDE7MTExMCAxMTczIDExQzA7RDJEMTsxMTEwIDExNzMgMTFDMDsgIyAo7YuROyDti5E7IOGEkOGFs+GHgDsg7YuROyDhhJDhhbPhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFRFVVQKK0QyRDI7RDJEMjsxMTEwIDExNzMgMTFDMTtEMkQyOzExMTAgMTE3MyAxMUMxOyAjICjti5I7IO2Lkjsg4YSQ4YWz4YeBOyDti5I7IOGEkOGFs+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgVEVVUAorRDJEMztEMkQzOzExMTAgMTE3MyAxMUMyO0QyRDM7MTExMCAxMTczIDExQzI7ICMgKO2Lkzsg7YuTOyDhhJDhhbPhh4I7IO2Lkzsg4YSQ4YWz4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBURVVICitEMkQ0O0QyRDQ7MTExMCAxMTc0O0QyRDQ7MTExMCAxMTc0OyAjICjti5Q7IO2LlDsg4YSQ4YW0OyDti5Q7IOGEkOGFtDsgKSBIQU5HVUwgU1lMTEFCTEUgVFlJCitEMkQ1O0QyRDU7MTExMCAxMTc0IDExQTg7RDJENTsxMTEwIDExNzQgMTFBODsgIyAo7YuVOyDti5U7IOGEkOGFtOGGqDsg7YuVOyDhhJDhhbThhqg7ICkgSEFOR1VMIFNZTExBQkxFIFRZSUcKK0QyRDY7RDJENjsxMTEwIDExNzQgMTFBOTtEMkQ2OzExMTAgMTE3NCAxMUE5OyAjICjti5Y7IO2Lljsg4YSQ4YW04YapOyDti5Y7IOGEkOGFtOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgVFlJR0cKK0QyRDc7RDJENzsxMTEwIDExNzQgMTFBQTtEMkQ3OzExMTAgMTE3NCAxMUFBOyAjICjti5c7IO2Llzsg4YSQ4YW04YaqOyDti5c7IOGEkOGFtOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgVFlJR1MKK0QyRDg7RDJEODsxMTEwIDExNzQgMTFBQjtEMkQ4OzExMTAgMTE3NCAxMUFCOyAjICjti5g7IO2LmDsg4YSQ4YW04YarOyDti5g7IOGEkOGFtOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgVFlJTgorRDJEOTtEMkQ5OzExMTAgMTE3NCAxMUFDO0QyRDk7MTExMCAxMTc0IDExQUM7ICMgKO2LmTsg7YuZOyDhhJDhhbThhqw7IO2LmTsg4YSQ4YW04YasOyApIEhBTkdVTCBTWUxMQUJMRSBUWUlOSgorRDJEQTtEMkRBOzExMTAgMTE3NCAxMUFEO0QyREE7MTExMCAxMTc0IDExQUQ7ICMgKO2Lmjsg7YuaOyDhhJDhhbThhq07IO2Lmjsg4YSQ4YW04YatOyApIEhBTkdVTCBTWUxMQUJMRSBUWUlOSAorRDJEQjtEMkRCOzExMTAgMTE3NCAxMUFFO0QyREI7MTExMCAxMTc0IDExQUU7ICMgKO2Lmzsg7YubOyDhhJDhhbThhq47IO2Lmzsg4YSQ4YW04YauOyApIEhBTkdVTCBTWUxMQUJMRSBUWUlECitEMkRDO0QyREM7MTExMCAxMTc0IDExQUY7RDJEQzsxMTEwIDExNzQgMTFBRjsgIyAo7YucOyDti5w7IOGEkOGFtOGGrzsg7YucOyDhhJDhhbThhq87ICkgSEFOR1VMIFNZTExBQkxFIFRZSUwKK0QyREQ7RDJERDsxMTEwIDExNzQgMTFCMDtEMkREOzExMTAgMTE3NCAxMUIwOyAjICjti507IO2LnTsg4YSQ4YW04YawOyDti507IOGEkOGFtOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgVFlJTEcKK0QyREU7RDJERTsxMTEwIDExNzQgMTFCMTtEMkRFOzExMTAgMTE3NCAxMUIxOyAjICjti547IO2Lnjsg4YSQ4YW04YaxOyDti547IOGEkOGFtOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgVFlJTE0KK0QyREY7RDJERjsxMTEwIDExNzQgMTFCMjtEMkRGOzExMTAgMTE3NCAxMUIyOyAjICjti587IO2Lnzsg4YSQ4YW04YayOyDti587IOGEkOGFtOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgVFlJTEIKK0QyRTA7RDJFMDsxMTEwIDExNzQgMTFCMztEMkUwOzExMTAgMTE3NCAxMUIzOyAjICjti6A7IO2LoDsg4YSQ4YW04YazOyDti6A7IOGEkOGFtOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgVFlJTFMKK0QyRTE7RDJFMTsxMTEwIDExNzQgMTFCNDtEMkUxOzExMTAgMTE3NCAxMUI0OyAjICjti6E7IO2LoTsg4YSQ4YW04Ya0OyDti6E7IOGEkOGFtOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgVFlJTFQKK0QyRTI7RDJFMjsxMTEwIDExNzQgMTFCNTtEMkUyOzExMTAgMTE3NCAxMUI1OyAjICjti6I7IO2Lojsg4YSQ4YW04Ya1OyDti6I7IOGEkOGFtOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgVFlJTFAKK0QyRTM7RDJFMzsxMTEwIDExNzQgMTFCNjtEMkUzOzExMTAgMTE3NCAxMUI2OyAjICjti6M7IO2Lozsg4YSQ4YW04Ya2OyDti6M7IOGEkOGFtOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgVFlJTEgKK0QyRTQ7RDJFNDsxMTEwIDExNzQgMTFCNztEMkU0OzExMTAgMTE3NCAxMUI3OyAjICjti6Q7IO2LpDsg4YSQ4YW04Ya3OyDti6Q7IOGEkOGFtOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgVFlJTQorRDJFNTtEMkU1OzExMTAgMTE3NCAxMUI4O0QyRTU7MTExMCAxMTc0IDExQjg7ICMgKO2LpTsg7YulOyDhhJDhhbThhrg7IO2LpTsg4YSQ4YW04Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBUWUlCCitEMkU2O0QyRTY7MTExMCAxMTc0IDExQjk7RDJFNjsxMTEwIDExNzQgMTFCOTsgIyAo7YumOyDti6Y7IOGEkOGFtOGGuTsg7YumOyDhhJDhhbThhrk7ICkgSEFOR1VMIFNZTExBQkxFIFRZSUJTCitEMkU3O0QyRTc7MTExMCAxMTc0IDExQkE7RDJFNzsxMTEwIDExNzQgMTFCQTsgIyAo7YunOyDti6c7IOGEkOGFtOGGujsg7YunOyDhhJDhhbThhro7ICkgSEFOR1VMIFNZTExBQkxFIFRZSVMKK0QyRTg7RDJFODsxMTEwIDExNzQgMTFCQjtEMkU4OzExMTAgMTE3NCAxMUJCOyAjICjti6g7IO2LqDsg4YSQ4YW04Ya7OyDti6g7IOGEkOGFtOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgVFlJU1MKK0QyRTk7RDJFOTsxMTEwIDExNzQgMTFCQztEMkU5OzExMTAgMTE3NCAxMUJDOyAjICjti6k7IO2LqTsg4YSQ4YW04Ya8OyDti6k7IOGEkOGFtOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgVFlJTkcKK0QyRUE7RDJFQTsxMTEwIDExNzQgMTFCRDtEMkVBOzExMTAgMTE3NCAxMUJEOyAjICjti6o7IO2Lqjsg4YSQ4YW04Ya9OyDti6o7IOGEkOGFtOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgVFlJSgorRDJFQjtEMkVCOzExMTAgMTE3NCAxMUJFO0QyRUI7MTExMCAxMTc0IDExQkU7ICMgKO2Lqzsg7YurOyDhhJDhhbThhr47IO2Lqzsg4YSQ4YW04Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBUWUlDCitEMkVDO0QyRUM7MTExMCAxMTc0IDExQkY7RDJFQzsxMTEwIDExNzQgMTFCRjsgIyAo7YusOyDti6w7IOGEkOGFtOGGvzsg7YusOyDhhJDhhbThhr87ICkgSEFOR1VMIFNZTExBQkxFIFRZSUsKK0QyRUQ7RDJFRDsxMTEwIDExNzQgMTFDMDtEMkVEOzExMTAgMTE3NCAxMUMwOyAjICjti607IO2LrTsg4YSQ4YW04YeAOyDti607IOGEkOGFtOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgVFlJVAorRDJFRTtEMkVFOzExMTAgMTE3NCAxMUMxO0QyRUU7MTExMCAxMTc0IDExQzE7ICMgKO2Lrjsg7YuuOyDhhJDhhbThh4E7IO2Lrjsg4YSQ4YW04YeBOyApIEhBTkdVTCBTWUxMQUJMRSBUWUlQCitEMkVGO0QyRUY7MTExMCAxMTc0IDExQzI7RDJFRjsxMTEwIDExNzQgMTFDMjsgIyAo7YuvOyDti687IOGEkOGFtOGHgjsg7YuvOyDhhJDhhbThh4I7ICkgSEFOR1VMIFNZTExBQkxFIFRZSUgKK0QyRjA7RDJGMDsxMTEwIDExNzU7RDJGMDsxMTEwIDExNzU7ICMgKO2LsDsg7YuwOyDhhJDhhbU7IO2LsDsg4YSQ4YW1OyApIEhBTkdVTCBTWUxMQUJMRSBUSQorRDJGMTtEMkYxOzExMTAgMTE3NSAxMUE4O0QyRjE7MTExMCAxMTc1IDExQTg7ICMgKO2LsTsg7YuxOyDhhJDhhbXhhqg7IO2LsTsg4YSQ4YW14YaoOyApIEhBTkdVTCBTWUxMQUJMRSBUSUcKK0QyRjI7RDJGMjsxMTEwIDExNzUgMTFBOTtEMkYyOzExMTAgMTE3NSAxMUE5OyAjICjti7I7IO2Lsjsg4YSQ4YW14YapOyDti7I7IOGEkOGFteGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgVElHRworRDJGMztEMkYzOzExMTAgMTE3NSAxMUFBO0QyRjM7MTExMCAxMTc1IDExQUE7ICMgKO2Lszsg7YuzOyDhhJDhhbXhhqo7IO2Lszsg4YSQ4YW14YaqOyApIEhBTkdVTCBTWUxMQUJMRSBUSUdTCitEMkY0O0QyRjQ7MTExMCAxMTc1IDExQUI7RDJGNDsxMTEwIDExNzUgMTFBQjsgIyAo7Yu0OyDti7Q7IOGEkOGFteGGqzsg7Yu0OyDhhJDhhbXhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFRJTgorRDJGNTtEMkY1OzExMTAgMTE3NSAxMUFDO0QyRjU7MTExMCAxMTc1IDExQUM7ICMgKO2LtTsg7Yu1OyDhhJDhhbXhhqw7IO2LtTsg4YSQ4YW14YasOyApIEhBTkdVTCBTWUxMQUJMRSBUSU5KCitEMkY2O0QyRjY7MTExMCAxMTc1IDExQUQ7RDJGNjsxMTEwIDExNzUgMTFBRDsgIyAo7Yu2OyDti7Y7IOGEkOGFteGGrTsg7Yu2OyDhhJDhhbXhhq07ICkgSEFOR1VMIFNZTExBQkxFIFRJTkgKK0QyRjc7RDJGNzsxMTEwIDExNzUgMTFBRTtEMkY3OzExMTAgMTE3NSAxMUFFOyAjICjti7c7IO2Ltzsg4YSQ4YW14YauOyDti7c7IOGEkOGFteGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgVElECitEMkY4O0QyRjg7MTExMCAxMTc1IDExQUY7RDJGODsxMTEwIDExNzUgMTFBRjsgIyAo7Yu4OyDti7g7IOGEkOGFteGGrzsg7Yu4OyDhhJDhhbXhhq87ICkgSEFOR1VMIFNZTExBQkxFIFRJTAorRDJGOTtEMkY5OzExMTAgMTE3NSAxMUIwO0QyRjk7MTExMCAxMTc1IDExQjA7ICMgKO2LuTsg7Yu5OyDhhJDhhbXhhrA7IO2LuTsg4YSQ4YW14YawOyApIEhBTkdVTCBTWUxMQUJMRSBUSUxHCitEMkZBO0QyRkE7MTExMCAxMTc1IDExQjE7RDJGQTsxMTEwIDExNzUgMTFCMTsgIyAo7Yu6OyDti7o7IOGEkOGFteGGsTsg7Yu6OyDhhJDhhbXhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFRJTE0KK0QyRkI7RDJGQjsxMTEwIDExNzUgMTFCMjtEMkZCOzExMTAgMTE3NSAxMUIyOyAjICjti7s7IO2Luzsg4YSQ4YW14YayOyDti7s7IOGEkOGFteGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgVElMQgorRDJGQztEMkZDOzExMTAgMTE3NSAxMUIzO0QyRkM7MTExMCAxMTc1IDExQjM7ICMgKO2LvDsg7Yu8OyDhhJDhhbXhhrM7IO2LvDsg4YSQ4YW14YazOyApIEhBTkdVTCBTWUxMQUJMRSBUSUxTCitEMkZEO0QyRkQ7MTExMCAxMTc1IDExQjQ7RDJGRDsxMTEwIDExNzUgMTFCNDsgIyAo7Yu9OyDti707IOGEkOGFteGGtDsg7Yu9OyDhhJDhhbXhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFRJTFQKK0QyRkU7RDJGRTsxMTEwIDExNzUgMTFCNTtEMkZFOzExMTAgMTE3NSAxMUI1OyAjICjti747IO2Lvjsg4YSQ4YW14Ya1OyDti747IOGEkOGFteGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgVElMUAorRDJGRjtEMkZGOzExMTAgMTE3NSAxMUI2O0QyRkY7MTExMCAxMTc1IDExQjY7ICMgKO2Lvzsg7Yu/OyDhhJDhhbXhhrY7IO2Lvzsg4YSQ4YW14Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBUSUxICitEMzAwO0QzMDA7MTExMCAxMTc1IDExQjc7RDMwMDsxMTEwIDExNzUgMTFCNzsgIyAo7YyAOyDtjIA7IOGEkOGFteGGtzsg7YyAOyDhhJDhhbXhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFRJTQorRDMwMTtEMzAxOzExMTAgMTE3NSAxMUI4O0QzMDE7MTExMCAxMTc1IDExQjg7ICMgKO2MgTsg7YyBOyDhhJDhhbXhhrg7IO2MgTsg4YSQ4YW14Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBUSUIKK0QzMDI7RDMwMjsxMTEwIDExNzUgMTFCOTtEMzAyOzExMTAgMTE3NSAxMUI5OyAjICjtjII7IO2Mgjsg4YSQ4YW14Ya5OyDtjII7IOGEkOGFteGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgVElCUworRDMwMztEMzAzOzExMTAgMTE3NSAxMUJBO0QzMDM7MTExMCAxMTc1IDExQkE7ICMgKO2Mgzsg7YyDOyDhhJDhhbXhhro7IO2Mgzsg4YSQ4YW14Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBUSVMKK0QzMDQ7RDMwNDsxMTEwIDExNzUgMTFCQjtEMzA0OzExMTAgMTE3NSAxMUJCOyAjICjtjIQ7IO2MhDsg4YSQ4YW14Ya7OyDtjIQ7IOGEkOGFteGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgVElTUworRDMwNTtEMzA1OzExMTAgMTE3NSAxMUJDO0QzMDU7MTExMCAxMTc1IDExQkM7ICMgKO2MhTsg7YyFOyDhhJDhhbXhhrw7IO2MhTsg4YSQ4YW14Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBUSU5HCitEMzA2O0QzMDY7MTExMCAxMTc1IDExQkQ7RDMwNjsxMTEwIDExNzUgMTFCRDsgIyAo7YyGOyDtjIY7IOGEkOGFteGGvTsg7YyGOyDhhJDhhbXhhr07ICkgSEFOR1VMIFNZTExBQkxFIFRJSgorRDMwNztEMzA3OzExMTAgMTE3NSAxMUJFO0QzMDc7MTExMCAxMTc1IDExQkU7ICMgKO2Mhzsg7YyHOyDhhJDhhbXhhr47IO2Mhzsg4YSQ4YW14Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBUSUMKK0QzMDg7RDMwODsxMTEwIDExNzUgMTFCRjtEMzA4OzExMTAgMTE3NSAxMUJGOyAjICjtjIg7IO2MiDsg4YSQ4YW14Ya/OyDtjIg7IOGEkOGFteGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgVElLCitEMzA5O0QzMDk7MTExMCAxMTc1IDExQzA7RDMwOTsxMTEwIDExNzUgMTFDMDsgIyAo7YyJOyDtjIk7IOGEkOGFteGHgDsg7YyJOyDhhJDhhbXhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFRJVAorRDMwQTtEMzBBOzExMTAgMTE3NSAxMUMxO0QzMEE7MTExMCAxMTc1IDExQzE7ICMgKO2Mijsg7YyKOyDhhJDhhbXhh4E7IO2Mijsg4YSQ4YW14YeBOyApIEhBTkdVTCBTWUxMQUJMRSBUSVAKK0QzMEI7RDMwQjsxMTEwIDExNzUgMTFDMjtEMzBCOzExMTAgMTE3NSAxMUMyOyAjICjtjIs7IO2Mizsg4YSQ4YW14YeCOyDtjIs7IOGEkOGFteGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgVElICitEMzBDO0QzMEM7MTExMSAxMTYxO0QzMEM7MTExMSAxMTYxOyAjICjtjIw7IO2MjDsg4YSR4YWhOyDtjIw7IOGEkeGFoTsgKSBIQU5HVUwgU1lMTEFCTEUgUEEKK0QzMEQ7RDMwRDsxMTExIDExNjEgMTFBODtEMzBEOzExMTEgMTE2MSAxMUE4OyAjICjtjI07IO2MjTsg4YSR4YWh4YaoOyDtjI07IOGEkeGFoeGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgUEFHCitEMzBFO0QzMEU7MTExMSAxMTYxIDExQTk7RDMwRTsxMTExIDExNjEgMTFBOTsgIyAo7YyOOyDtjI47IOGEkeGFoeGGqTsg7YyOOyDhhJHhhaHhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFBBR0cKK0QzMEY7RDMwRjsxMTExIDExNjEgMTFBQTtEMzBGOzExMTEgMTE2MSAxMUFBOyAjICjtjI87IO2Mjzsg4YSR4YWh4YaqOyDtjI87IOGEkeGFoeGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgUEFHUworRDMxMDtEMzEwOzExMTEgMTE2MSAxMUFCO0QzMTA7MTExMSAxMTYxIDExQUI7ICMgKO2MkDsg7YyQOyDhhJHhhaHhhqs7IO2MkDsg4YSR4YWh4YarOyApIEhBTkdVTCBTWUxMQUJMRSBQQU4KK0QzMTE7RDMxMTsxMTExIDExNjEgMTFBQztEMzExOzExMTEgMTE2MSAxMUFDOyAjICjtjJE7IO2MkTsg4YSR4YWh4YasOyDtjJE7IOGEkeGFoeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgUEFOSgorRDMxMjtEMzEyOzExMTEgMTE2MSAxMUFEO0QzMTI7MTExMSAxMTYxIDExQUQ7ICMgKO2Mkjsg7YySOyDhhJHhhaHhhq07IO2Mkjsg4YSR4YWh4YatOyApIEhBTkdVTCBTWUxMQUJMRSBQQU5ICitEMzEzO0QzMTM7MTExMSAxMTYxIDExQUU7RDMxMzsxMTExIDExNjEgMTFBRTsgIyAo7YyTOyDtjJM7IOGEkeGFoeGGrjsg7YyTOyDhhJHhhaHhhq47ICkgSEFOR1VMIFNZTExBQkxFIFBBRAorRDMxNDtEMzE0OzExMTEgMTE2MSAxMUFGO0QzMTQ7MTExMSAxMTYxIDExQUY7ICMgKO2MlDsg7YyUOyDhhJHhhaHhhq87IO2MlDsg4YSR4YWh4YavOyApIEhBTkdVTCBTWUxMQUJMRSBQQUwKK0QzMTU7RDMxNTsxMTExIDExNjEgMTFCMDtEMzE1OzExMTEgMTE2MSAxMUIwOyAjICjtjJU7IO2MlTsg4YSR4YWh4YawOyDtjJU7IOGEkeGFoeGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgUEFMRworRDMxNjtEMzE2OzExMTEgMTE2MSAxMUIxO0QzMTY7MTExMSAxMTYxIDExQjE7ICMgKO2Mljsg7YyWOyDhhJHhhaHhhrE7IO2Mljsg4YSR4YWh4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBQQUxNCitEMzE3O0QzMTc7MTExMSAxMTYxIDExQjI7RDMxNzsxMTExIDExNjEgMTFCMjsgIyAo7YyXOyDtjJc7IOGEkeGFoeGGsjsg7YyXOyDhhJHhhaHhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFBBTEIKK0QzMTg7RDMxODsxMTExIDExNjEgMTFCMztEMzE4OzExMTEgMTE2MSAxMUIzOyAjICjtjJg7IO2MmDsg4YSR4YWh4YazOyDtjJg7IOGEkeGFoeGGszsgKSBIQU5HVUwgU1lMTEFCTEUgUEFMUworRDMxOTtEMzE5OzExMTEgMTE2MSAxMUI0O0QzMTk7MTExMSAxMTYxIDExQjQ7ICMgKO2MmTsg7YyZOyDhhJHhhaHhhrQ7IO2MmTsg4YSR4YWh4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBQQUxUCitEMzFBO0QzMUE7MTExMSAxMTYxIDExQjU7RDMxQTsxMTExIDExNjEgMTFCNTsgIyAo7YyaOyDtjJo7IOGEkeGFoeGGtTsg7YyaOyDhhJHhhaHhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFBBTFAKK0QzMUI7RDMxQjsxMTExIDExNjEgMTFCNjtEMzFCOzExMTEgMTE2MSAxMUI2OyAjICjtjJs7IO2Mmzsg4YSR4YWh4Ya2OyDtjJs7IOGEkeGFoeGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgUEFMSAorRDMxQztEMzFDOzExMTEgMTE2MSAxMUI3O0QzMUM7MTExMSAxMTYxIDExQjc7ICMgKO2MnDsg7YycOyDhhJHhhaHhhrc7IO2MnDsg4YSR4YWh4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBQQU0KK0QzMUQ7RDMxRDsxMTExIDExNjEgMTFCODtEMzFEOzExMTEgMTE2MSAxMUI4OyAjICjtjJ07IO2MnTsg4YSR4YWh4Ya4OyDtjJ07IOGEkeGFoeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgUEFCCitEMzFFO0QzMUU7MTExMSAxMTYxIDExQjk7RDMxRTsxMTExIDExNjEgMTFCOTsgIyAo7YyeOyDtjJ47IOGEkeGFoeGGuTsg7YyeOyDhhJHhhaHhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFBBQlMKK0QzMUY7RDMxRjsxMTExIDExNjEgMTFCQTtEMzFGOzExMTEgMTE2MSAxMUJBOyAjICjtjJ87IO2Mnzsg4YSR4YWh4Ya6OyDtjJ87IOGEkeGFoeGGujsgKSBIQU5HVUwgU1lMTEFCTEUgUEFTCitEMzIwO0QzMjA7MTExMSAxMTYxIDExQkI7RDMyMDsxMTExIDExNjEgMTFCQjsgIyAo7YygOyDtjKA7IOGEkeGFoeGGuzsg7YygOyDhhJHhhaHhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFBBU1MKK0QzMjE7RDMyMTsxMTExIDExNjEgMTFCQztEMzIxOzExMTEgMTE2MSAxMUJDOyAjICjtjKE7IO2MoTsg4YSR4YWh4Ya8OyDtjKE7IOGEkeGFoeGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgUEFORworRDMyMjtEMzIyOzExMTEgMTE2MSAxMUJEO0QzMjI7MTExMSAxMTYxIDExQkQ7ICMgKO2Mojsg7YyiOyDhhJHhhaHhhr07IO2Mojsg4YSR4YWh4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBQQUoKK0QzMjM7RDMyMzsxMTExIDExNjEgMTFCRTtEMzIzOzExMTEgMTE2MSAxMUJFOyAjICjtjKM7IO2Mozsg4YSR4YWh4Ya+OyDtjKM7IOGEkeGFoeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgUEFDCitEMzI0O0QzMjQ7MTExMSAxMTYxIDExQkY7RDMyNDsxMTExIDExNjEgMTFCRjsgIyAo7YykOyDtjKQ7IOGEkeGFoeGGvzsg7YykOyDhhJHhhaHhhr87ICkgSEFOR1VMIFNZTExBQkxFIFBBSworRDMyNTtEMzI1OzExMTEgMTE2MSAxMUMwO0QzMjU7MTExMSAxMTYxIDExQzA7ICMgKO2MpTsg7YylOyDhhJHhhaHhh4A7IO2MpTsg4YSR4YWh4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBQQVQKK0QzMjY7RDMyNjsxMTExIDExNjEgMTFDMTtEMzI2OzExMTEgMTE2MSAxMUMxOyAjICjtjKY7IO2Mpjsg4YSR4YWh4YeBOyDtjKY7IOGEkeGFoeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgUEFQCitEMzI3O0QzMjc7MTExMSAxMTYxIDExQzI7RDMyNzsxMTExIDExNjEgMTFDMjsgIyAo7YynOyDtjKc7IOGEkeGFoeGHgjsg7YynOyDhhJHhhaHhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFBBSAorRDMyODtEMzI4OzExMTEgMTE2MjtEMzI4OzExMTEgMTE2MjsgIyAo7YyoOyDtjKg7IOGEkeGFojsg7YyoOyDhhJHhhaI7ICkgSEFOR1VMIFNZTExBQkxFIFBBRQorRDMyOTtEMzI5OzExMTEgMTE2MiAxMUE4O0QzMjk7MTExMSAxMTYyIDExQTg7ICMgKO2MqTsg7YypOyDhhJHhhaLhhqg7IO2MqTsg4YSR4YWi4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBQQUVHCitEMzJBO0QzMkE7MTExMSAxMTYyIDExQTk7RDMyQTsxMTExIDExNjIgMTFBOTsgIyAo7YyqOyDtjKo7IOGEkeGFouGGqTsg7YyqOyDhhJHhhaLhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFBBRUdHCitEMzJCO0QzMkI7MTExMSAxMTYyIDExQUE7RDMyQjsxMTExIDExNjIgMTFBQTsgIyAo7YyrOyDtjKs7IOGEkeGFouGGqjsg7YyrOyDhhJHhhaLhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFBBRUdTCitEMzJDO0QzMkM7MTExMSAxMTYyIDExQUI7RDMyQzsxMTExIDExNjIgMTFBQjsgIyAo7YysOyDtjKw7IOGEkeGFouGGqzsg7YysOyDhhJHhhaLhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFBBRU4KK0QzMkQ7RDMyRDsxMTExIDExNjIgMTFBQztEMzJEOzExMTEgMTE2MiAxMUFDOyAjICjtjK07IO2MrTsg4YSR4YWi4YasOyDtjK07IOGEkeGFouGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgUEFFTkoKK0QzMkU7RDMyRTsxMTExIDExNjIgMTFBRDtEMzJFOzExMTEgMTE2MiAxMUFEOyAjICjtjK47IO2Mrjsg4YSR4YWi4YatOyDtjK47IOGEkeGFouGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgUEFFTkgKK0QzMkY7RDMyRjsxMTExIDExNjIgMTFBRTtEMzJGOzExMTEgMTE2MiAxMUFFOyAjICjtjK87IO2Mrzsg4YSR4YWi4YauOyDtjK87IOGEkeGFouGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgUEFFRAorRDMzMDtEMzMwOzExMTEgMTE2MiAxMUFGO0QzMzA7MTExMSAxMTYyIDExQUY7ICMgKO2MsDsg7YywOyDhhJHhhaLhhq87IO2MsDsg4YSR4YWi4YavOyApIEhBTkdVTCBTWUxMQUJMRSBQQUVMCitEMzMxO0QzMzE7MTExMSAxMTYyIDExQjA7RDMzMTsxMTExIDExNjIgMTFCMDsgIyAo7YyxOyDtjLE7IOGEkeGFouGGsDsg7YyxOyDhhJHhhaLhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFBBRUxHCitEMzMyO0QzMzI7MTExMSAxMTYyIDExQjE7RDMzMjsxMTExIDExNjIgMTFCMTsgIyAo7YyyOyDtjLI7IOGEkeGFouGGsTsg7YyyOyDhhJHhhaLhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFBBRUxNCitEMzMzO0QzMzM7MTExMSAxMTYyIDExQjI7RDMzMzsxMTExIDExNjIgMTFCMjsgIyAo7YyzOyDtjLM7IOGEkeGFouGGsjsg7YyzOyDhhJHhhaLhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFBBRUxCCitEMzM0O0QzMzQ7MTExMSAxMTYyIDExQjM7RDMzNDsxMTExIDExNjIgMTFCMzsgIyAo7Yy0OyDtjLQ7IOGEkeGFouGGszsg7Yy0OyDhhJHhhaLhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFBBRUxTCitEMzM1O0QzMzU7MTExMSAxMTYyIDExQjQ7RDMzNTsxMTExIDExNjIgMTFCNDsgIyAo7Yy1OyDtjLU7IOGEkeGFouGGtDsg7Yy1OyDhhJHhhaLhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFBBRUxUCitEMzM2O0QzMzY7MTExMSAxMTYyIDExQjU7RDMzNjsxMTExIDExNjIgMTFCNTsgIyAo7Yy2OyDtjLY7IOGEkeGFouGGtTsg7Yy2OyDhhJHhhaLhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFBBRUxQCitEMzM3O0QzMzc7MTExMSAxMTYyIDExQjY7RDMzNzsxMTExIDExNjIgMTFCNjsgIyAo7Yy3OyDtjLc7IOGEkeGFouGGtjsg7Yy3OyDhhJHhhaLhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFBBRUxICitEMzM4O0QzMzg7MTExMSAxMTYyIDExQjc7RDMzODsxMTExIDExNjIgMTFCNzsgIyAo7Yy4OyDtjLg7IOGEkeGFouGGtzsg7Yy4OyDhhJHhhaLhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFBBRU0KK0QzMzk7RDMzOTsxMTExIDExNjIgMTFCODtEMzM5OzExMTEgMTE2MiAxMUI4OyAjICjtjLk7IO2MuTsg4YSR4YWi4Ya4OyDtjLk7IOGEkeGFouGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgUEFFQgorRDMzQTtEMzNBOzExMTEgMTE2MiAxMUI5O0QzM0E7MTExMSAxMTYyIDExQjk7ICMgKO2Mujsg7Yy6OyDhhJHhhaLhhrk7IO2Mujsg4YSR4YWi4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBQQUVCUworRDMzQjtEMzNCOzExMTEgMTE2MiAxMUJBO0QzM0I7MTExMSAxMTYyIDExQkE7ICMgKO2Muzsg7Yy7OyDhhJHhhaLhhro7IO2Muzsg4YSR4YWi4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBQQUVTCitEMzNDO0QzM0M7MTExMSAxMTYyIDExQkI7RDMzQzsxMTExIDExNjIgMTFCQjsgIyAo7Yy8OyDtjLw7IOGEkeGFouGGuzsg7Yy8OyDhhJHhhaLhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFBBRVNTCitEMzNEO0QzM0Q7MTExMSAxMTYyIDExQkM7RDMzRDsxMTExIDExNjIgMTFCQzsgIyAo7Yy9OyDtjL07IOGEkeGFouGGvDsg7Yy9OyDhhJHhhaLhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFBBRU5HCitEMzNFO0QzM0U7MTExMSAxMTYyIDExQkQ7RDMzRTsxMTExIDExNjIgMTFCRDsgIyAo7Yy+OyDtjL47IOGEkeGFouGGvTsg7Yy+OyDhhJHhhaLhhr07ICkgSEFOR1VMIFNZTExBQkxFIFBBRUoKK0QzM0Y7RDMzRjsxMTExIDExNjIgMTFCRTtEMzNGOzExMTEgMTE2MiAxMUJFOyAjICjtjL87IO2Mvzsg4YSR4YWi4Ya+OyDtjL87IOGEkeGFouGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgUEFFQworRDM0MDtEMzQwOzExMTEgMTE2MiAxMUJGO0QzNDA7MTExMSAxMTYyIDExQkY7ICMgKO2NgDsg7Y2AOyDhhJHhhaLhhr87IO2NgDsg4YSR4YWi4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBQQUVLCitEMzQxO0QzNDE7MTExMSAxMTYyIDExQzA7RDM0MTsxMTExIDExNjIgMTFDMDsgIyAo7Y2BOyDtjYE7IOGEkeGFouGHgDsg7Y2BOyDhhJHhhaLhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFBBRVQKK0QzNDI7RDM0MjsxMTExIDExNjIgMTFDMTtEMzQyOzExMTEgMTE2MiAxMUMxOyAjICjtjYI7IO2Ngjsg4YSR4YWi4YeBOyDtjYI7IOGEkeGFouGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgUEFFUAorRDM0MztEMzQzOzExMTEgMTE2MiAxMUMyO0QzNDM7MTExMSAxMTYyIDExQzI7ICMgKO2Ngzsg7Y2DOyDhhJHhhaLhh4I7IO2Ngzsg4YSR4YWi4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBQQUVICitEMzQ0O0QzNDQ7MTExMSAxMTYzO0QzNDQ7MTExMSAxMTYzOyAjICjtjYQ7IO2NhDsg4YSR4YWjOyDtjYQ7IOGEkeGFozsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBCitEMzQ1O0QzNDU7MTExMSAxMTYzIDExQTg7RDM0NTsxMTExIDExNjMgMTFBODsgIyAo7Y2FOyDtjYU7IOGEkeGFo+GGqDsg7Y2FOyDhhJHhhaPhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFBZQUcKK0QzNDY7RDM0NjsxMTExIDExNjMgMTFBOTtEMzQ2OzExMTEgMTE2MyAxMUE5OyAjICjtjYY7IO2Nhjsg4YSR4YWj4YapOyDtjYY7IOGEkeGFo+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBR0cKK0QzNDc7RDM0NzsxMTExIDExNjMgMTFBQTtEMzQ3OzExMTEgMTE2MyAxMUFBOyAjICjtjYc7IO2Nhzsg4YSR4YWj4YaqOyDtjYc7IOGEkeGFo+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBR1MKK0QzNDg7RDM0ODsxMTExIDExNjMgMTFBQjtEMzQ4OzExMTEgMTE2MyAxMUFCOyAjICjtjYg7IO2NiDsg4YSR4YWj4YarOyDtjYg7IOGEkeGFo+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBTgorRDM0OTtEMzQ5OzExMTEgMTE2MyAxMUFDO0QzNDk7MTExMSAxMTYzIDExQUM7ICMgKO2NiTsg7Y2JOyDhhJHhhaPhhqw7IO2NiTsg4YSR4YWj4YasOyApIEhBTkdVTCBTWUxMQUJMRSBQWUFOSgorRDM0QTtEMzRBOzExMTEgMTE2MyAxMUFEO0QzNEE7MTExMSAxMTYzIDExQUQ7ICMgKO2Nijsg7Y2KOyDhhJHhhaPhhq07IO2Nijsg4YSR4YWj4YatOyApIEhBTkdVTCBTWUxMQUJMRSBQWUFOSAorRDM0QjtEMzRCOzExMTEgMTE2MyAxMUFFO0QzNEI7MTExMSAxMTYzIDExQUU7ICMgKO2Nizsg7Y2LOyDhhJHhhaPhhq47IO2Nizsg4YSR4YWj4YauOyApIEhBTkdVTCBTWUxMQUJMRSBQWUFECitEMzRDO0QzNEM7MTExMSAxMTYzIDExQUY7RDM0QzsxMTExIDExNjMgMTFBRjsgIyAo7Y2MOyDtjYw7IOGEkeGFo+GGrzsg7Y2MOyDhhJHhhaPhhq87ICkgSEFOR1VMIFNZTExBQkxFIFBZQUwKK0QzNEQ7RDM0RDsxMTExIDExNjMgMTFCMDtEMzREOzExMTEgMTE2MyAxMUIwOyAjICjtjY07IO2NjTsg4YSR4YWj4YawOyDtjY07IOGEkeGFo+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBTEcKK0QzNEU7RDM0RTsxMTExIDExNjMgMTFCMTtEMzRFOzExMTEgMTE2MyAxMUIxOyAjICjtjY47IO2Njjsg4YSR4YWj4YaxOyDtjY47IOGEkeGFo+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBTE0KK0QzNEY7RDM0RjsxMTExIDExNjMgMTFCMjtEMzRGOzExMTEgMTE2MyAxMUIyOyAjICjtjY87IO2Njzsg4YSR4YWj4YayOyDtjY87IOGEkeGFo+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBTEIKK0QzNTA7RDM1MDsxMTExIDExNjMgMTFCMztEMzUwOzExMTEgMTE2MyAxMUIzOyAjICjtjZA7IO2NkDsg4YSR4YWj4YazOyDtjZA7IOGEkeGFo+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBTFMKK0QzNTE7RDM1MTsxMTExIDExNjMgMTFCNDtEMzUxOzExMTEgMTE2MyAxMUI0OyAjICjtjZE7IO2NkTsg4YSR4YWj4Ya0OyDtjZE7IOGEkeGFo+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBTFQKK0QzNTI7RDM1MjsxMTExIDExNjMgMTFCNTtEMzUyOzExMTEgMTE2MyAxMUI1OyAjICjtjZI7IO2Nkjsg4YSR4YWj4Ya1OyDtjZI7IOGEkeGFo+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBTFAKK0QzNTM7RDM1MzsxMTExIDExNjMgMTFCNjtEMzUzOzExMTEgMTE2MyAxMUI2OyAjICjtjZM7IO2Nkzsg4YSR4YWj4Ya2OyDtjZM7IOGEkeGFo+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBTEgKK0QzNTQ7RDM1NDsxMTExIDExNjMgMTFCNztEMzU0OzExMTEgMTE2MyAxMUI3OyAjICjtjZQ7IO2NlDsg4YSR4YWj4Ya3OyDtjZQ7IOGEkeGFo+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBTQorRDM1NTtEMzU1OzExMTEgMTE2MyAxMUI4O0QzNTU7MTExMSAxMTYzIDExQjg7ICMgKO2NlTsg7Y2VOyDhhJHhhaPhhrg7IO2NlTsg4YSR4YWj4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBQWUFCCitEMzU2O0QzNTY7MTExMSAxMTYzIDExQjk7RDM1NjsxMTExIDExNjMgMTFCOTsgIyAo7Y2WOyDtjZY7IOGEkeGFo+GGuTsg7Y2WOyDhhJHhhaPhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFBZQUJTCitEMzU3O0QzNTc7MTExMSAxMTYzIDExQkE7RDM1NzsxMTExIDExNjMgMTFCQTsgIyAo7Y2XOyDtjZc7IOGEkeGFo+GGujsg7Y2XOyDhhJHhhaPhhro7ICkgSEFOR1VMIFNZTExBQkxFIFBZQVMKK0QzNTg7RDM1ODsxMTExIDExNjMgMTFCQjtEMzU4OzExMTEgMTE2MyAxMUJCOyAjICjtjZg7IO2NmDsg4YSR4YWj4Ya7OyDtjZg7IOGEkeGFo+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBU1MKK0QzNTk7RDM1OTsxMTExIDExNjMgMTFCQztEMzU5OzExMTEgMTE2MyAxMUJDOyAjICjtjZk7IO2NmTsg4YSR4YWj4Ya8OyDtjZk7IOGEkeGFo+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBTkcKK0QzNUE7RDM1QTsxMTExIDExNjMgMTFCRDtEMzVBOzExMTEgMTE2MyAxMUJEOyAjICjtjZo7IO2Nmjsg4YSR4YWj4Ya9OyDtjZo7IOGEkeGFo+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBSgorRDM1QjtEMzVCOzExMTEgMTE2MyAxMUJFO0QzNUI7MTExMSAxMTYzIDExQkU7ICMgKO2Nmzsg7Y2bOyDhhJHhhaPhhr47IO2Nmzsg4YSR4YWj4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBQWUFDCitEMzVDO0QzNUM7MTExMSAxMTYzIDExQkY7RDM1QzsxMTExIDExNjMgMTFCRjsgIyAo7Y2cOyDtjZw7IOGEkeGFo+GGvzsg7Y2cOyDhhJHhhaPhhr87ICkgSEFOR1VMIFNZTExBQkxFIFBZQUsKK0QzNUQ7RDM1RDsxMTExIDExNjMgMTFDMDtEMzVEOzExMTEgMTE2MyAxMUMwOyAjICjtjZ07IO2NnTsg4YSR4YWj4YeAOyDtjZ07IOGEkeGFo+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBVAorRDM1RTtEMzVFOzExMTEgMTE2MyAxMUMxO0QzNUU7MTExMSAxMTYzIDExQzE7ICMgKO2Nnjsg7Y2eOyDhhJHhhaPhh4E7IO2Nnjsg4YSR4YWj4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBQWUFQCitEMzVGO0QzNUY7MTExMSAxMTYzIDExQzI7RDM1RjsxMTExIDExNjMgMTFDMjsgIyAo7Y2fOyDtjZ87IOGEkeGFo+GHgjsg7Y2fOyDhhJHhhaPhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFBZQUgKK0QzNjA7RDM2MDsxMTExIDExNjQ7RDM2MDsxMTExIDExNjQ7ICMgKO2NoDsg7Y2gOyDhhJHhhaQ7IO2NoDsg4YSR4YWkOyApIEhBTkdVTCBTWUxMQUJMRSBQWUFFCitEMzYxO0QzNjE7MTExMSAxMTY0IDExQTg7RDM2MTsxMTExIDExNjQgMTFBODsgIyAo7Y2hOyDtjaE7IOGEkeGFpOGGqDsg7Y2hOyDhhJHhhaThhqg7ICkgSEFOR1VMIFNZTExBQkxFIFBZQUVHCitEMzYyO0QzNjI7MTExMSAxMTY0IDExQTk7RDM2MjsxMTExIDExNjQgMTFBOTsgIyAo7Y2iOyDtjaI7IOGEkeGFpOGGqTsg7Y2iOyDhhJHhhaThhqk7ICkgSEFOR1VMIFNZTExBQkxFIFBZQUVHRworRDM2MztEMzYzOzExMTEgMTE2NCAxMUFBO0QzNjM7MTExMSAxMTY0IDExQUE7ICMgKO2Nozsg7Y2jOyDhhJHhhaThhqo7IO2Nozsg4YSR4YWk4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBQWUFFR1MKK0QzNjQ7RDM2NDsxMTExIDExNjQgMTFBQjtEMzY0OzExMTEgMTE2NCAxMUFCOyAjICjtjaQ7IO2NpDsg4YSR4YWk4YarOyDtjaQ7IOGEkeGFpOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBRU4KK0QzNjU7RDM2NTsxMTExIDExNjQgMTFBQztEMzY1OzExMTEgMTE2NCAxMUFDOyAjICjtjaU7IO2NpTsg4YSR4YWk4YasOyDtjaU7IOGEkeGFpOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBRU5KCitEMzY2O0QzNjY7MTExMSAxMTY0IDExQUQ7RDM2NjsxMTExIDExNjQgMTFBRDsgIyAo7Y2mOyDtjaY7IOGEkeGFpOGGrTsg7Y2mOyDhhJHhhaThhq07ICkgSEFOR1VMIFNZTExBQkxFIFBZQUVOSAorRDM2NztEMzY3OzExMTEgMTE2NCAxMUFFO0QzNjc7MTExMSAxMTY0IDExQUU7ICMgKO2Npzsg7Y2nOyDhhJHhhaThhq47IO2Npzsg4YSR4YWk4YauOyApIEhBTkdVTCBTWUxMQUJMRSBQWUFFRAorRDM2ODtEMzY4OzExMTEgMTE2NCAxMUFGO0QzNjg7MTExMSAxMTY0IDExQUY7ICMgKO2NqDsg7Y2oOyDhhJHhhaThhq87IO2NqDsg4YSR4YWk4YavOyApIEhBTkdVTCBTWUxMQUJMRSBQWUFFTAorRDM2OTtEMzY5OzExMTEgMTE2NCAxMUIwO0QzNjk7MTExMSAxMTY0IDExQjA7ICMgKO2NqTsg7Y2pOyDhhJHhhaThhrA7IO2NqTsg4YSR4YWk4YawOyApIEhBTkdVTCBTWUxMQUJMRSBQWUFFTEcKK0QzNkE7RDM2QTsxMTExIDExNjQgMTFCMTtEMzZBOzExMTEgMTE2NCAxMUIxOyAjICjtjao7IO2Nqjsg4YSR4YWk4YaxOyDtjao7IOGEkeGFpOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBRUxNCitEMzZCO0QzNkI7MTExMSAxMTY0IDExQjI7RDM2QjsxMTExIDExNjQgMTFCMjsgIyAo7Y2rOyDtjas7IOGEkeGFpOGGsjsg7Y2rOyDhhJHhhaThhrI7ICkgSEFOR1VMIFNZTExBQkxFIFBZQUVMQgorRDM2QztEMzZDOzExMTEgMTE2NCAxMUIzO0QzNkM7MTExMSAxMTY0IDExQjM7ICMgKO2NrDsg7Y2sOyDhhJHhhaThhrM7IO2NrDsg4YSR4YWk4YazOyApIEhBTkdVTCBTWUxMQUJMRSBQWUFFTFMKK0QzNkQ7RDM2RDsxMTExIDExNjQgMTFCNDtEMzZEOzExMTEgMTE2NCAxMUI0OyAjICjtja07IO2NrTsg4YSR4YWk4Ya0OyDtja07IOGEkeGFpOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBRUxUCitEMzZFO0QzNkU7MTExMSAxMTY0IDExQjU7RDM2RTsxMTExIDExNjQgMTFCNTsgIyAo7Y2uOyDtja47IOGEkeGFpOGGtTsg7Y2uOyDhhJHhhaThhrU7ICkgSEFOR1VMIFNZTExBQkxFIFBZQUVMUAorRDM2RjtEMzZGOzExMTEgMTE2NCAxMUI2O0QzNkY7MTExMSAxMTY0IDExQjY7ICMgKO2Nrzsg7Y2vOyDhhJHhhaThhrY7IO2Nrzsg4YSR4YWk4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBQWUFFTEgKK0QzNzA7RDM3MDsxMTExIDExNjQgMTFCNztEMzcwOzExMTEgMTE2NCAxMUI3OyAjICjtjbA7IO2NsDsg4YSR4YWk4Ya3OyDtjbA7IOGEkeGFpOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBRU0KK0QzNzE7RDM3MTsxMTExIDExNjQgMTFCODtEMzcxOzExMTEgMTE2NCAxMUI4OyAjICjtjbE7IO2NsTsg4YSR4YWk4Ya4OyDtjbE7IOGEkeGFpOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBRUIKK0QzNzI7RDM3MjsxMTExIDExNjQgMTFCOTtEMzcyOzExMTEgMTE2NCAxMUI5OyAjICjtjbI7IO2Nsjsg4YSR4YWk4Ya5OyDtjbI7IOGEkeGFpOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBRUJTCitEMzczO0QzNzM7MTExMSAxMTY0IDExQkE7RDM3MzsxMTExIDExNjQgMTFCQTsgIyAo7Y2zOyDtjbM7IOGEkeGFpOGGujsg7Y2zOyDhhJHhhaThhro7ICkgSEFOR1VMIFNZTExBQkxFIFBZQUVTCitEMzc0O0QzNzQ7MTExMSAxMTY0IDExQkI7RDM3NDsxMTExIDExNjQgMTFCQjsgIyAo7Y20OyDtjbQ7IOGEkeGFpOGGuzsg7Y20OyDhhJHhhaThhrs7ICkgSEFOR1VMIFNZTExBQkxFIFBZQUVTUworRDM3NTtEMzc1OzExMTEgMTE2NCAxMUJDO0QzNzU7MTExMSAxMTY0IDExQkM7ICMgKO2NtTsg7Y21OyDhhJHhhaThhrw7IO2NtTsg4YSR4YWk4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBQWUFFTkcKK0QzNzY7RDM3NjsxMTExIDExNjQgMTFCRDtEMzc2OzExMTEgMTE2NCAxMUJEOyAjICjtjbY7IO2Ntjsg4YSR4YWk4Ya9OyDtjbY7IOGEkeGFpOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBRUoKK0QzNzc7RDM3NzsxMTExIDExNjQgMTFCRTtEMzc3OzExMTEgMTE2NCAxMUJFOyAjICjtjbc7IO2Ntzsg4YSR4YWk4Ya+OyDtjbc7IOGEkeGFpOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBRUMKK0QzNzg7RDM3ODsxMTExIDExNjQgMTFCRjtEMzc4OzExMTEgMTE2NCAxMUJGOyAjICjtjbg7IO2NuDsg4YSR4YWk4Ya/OyDtjbg7IOGEkeGFpOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBRUsKK0QzNzk7RDM3OTsxMTExIDExNjQgMTFDMDtEMzc5OzExMTEgMTE2NCAxMUMwOyAjICjtjbk7IO2NuTsg4YSR4YWk4YeAOyDtjbk7IOGEkeGFpOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBRVQKK0QzN0E7RDM3QTsxMTExIDExNjQgMTFDMTtEMzdBOzExMTEgMTE2NCAxMUMxOyAjICjtjbo7IO2Nujsg4YSR4YWk4YeBOyDtjbo7IOGEkeGFpOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBRVAKK0QzN0I7RDM3QjsxMTExIDExNjQgMTFDMjtEMzdCOzExMTEgMTE2NCAxMUMyOyAjICjtjbs7IO2Nuzsg4YSR4YWk4YeCOyDtjbs7IOGEkeGFpOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgUFlBRUgKK0QzN0M7RDM3QzsxMTExIDExNjU7RDM3QzsxMTExIDExNjU7ICMgKO2NvDsg7Y28OyDhhJHhhaU7IO2NvDsg4YSR4YWlOyApIEhBTkdVTCBTWUxMQUJMRSBQRU8KK0QzN0Q7RDM3RDsxMTExIDExNjUgMTFBODtEMzdEOzExMTEgMTE2NSAxMUE4OyAjICjtjb07IO2NvTsg4YSR4YWl4YaoOyDtjb07IOGEkeGFpeGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgUEVPRworRDM3RTtEMzdFOzExMTEgMTE2NSAxMUE5O0QzN0U7MTExMSAxMTY1IDExQTk7ICMgKO2Nvjsg7Y2+OyDhhJHhhaXhhqk7IO2Nvjsg4YSR4YWl4YapOyApIEhBTkdVTCBTWUxMQUJMRSBQRU9HRworRDM3RjtEMzdGOzExMTEgMTE2NSAxMUFBO0QzN0Y7MTExMSAxMTY1IDExQUE7ICMgKO2Nvzsg7Y2/OyDhhJHhhaXhhqo7IO2Nvzsg4YSR4YWl4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBQRU9HUworRDM4MDtEMzgwOzExMTEgMTE2NSAxMUFCO0QzODA7MTExMSAxMTY1IDExQUI7ICMgKO2OgDsg7Y6AOyDhhJHhhaXhhqs7IO2OgDsg4YSR4YWl4YarOyApIEhBTkdVTCBTWUxMQUJMRSBQRU9OCitEMzgxO0QzODE7MTExMSAxMTY1IDExQUM7RDM4MTsxMTExIDExNjUgMTFBQzsgIyAo7Y6BOyDtjoE7IOGEkeGFpeGGrDsg7Y6BOyDhhJHhhaXhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFBFT05KCitEMzgyO0QzODI7MTExMSAxMTY1IDExQUQ7RDM4MjsxMTExIDExNjUgMTFBRDsgIyAo7Y6COyDtjoI7IOGEkeGFpeGGrTsg7Y6COyDhhJHhhaXhhq07ICkgSEFOR1VMIFNZTExBQkxFIFBFT05ICitEMzgzO0QzODM7MTExMSAxMTY1IDExQUU7RDM4MzsxMTExIDExNjUgMTFBRTsgIyAo7Y6DOyDtjoM7IOGEkeGFpeGGrjsg7Y6DOyDhhJHhhaXhhq47ICkgSEFOR1VMIFNZTExBQkxFIFBFT0QKK0QzODQ7RDM4NDsxMTExIDExNjUgMTFBRjtEMzg0OzExMTEgMTE2NSAxMUFGOyAjICjtjoQ7IO2OhDsg4YSR4YWl4YavOyDtjoQ7IOGEkeGFpeGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgUEVPTAorRDM4NTtEMzg1OzExMTEgMTE2NSAxMUIwO0QzODU7MTExMSAxMTY1IDExQjA7ICMgKO2OhTsg7Y6FOyDhhJHhhaXhhrA7IO2OhTsg4YSR4YWl4YawOyApIEhBTkdVTCBTWUxMQUJMRSBQRU9MRworRDM4NjtEMzg2OzExMTEgMTE2NSAxMUIxO0QzODY7MTExMSAxMTY1IDExQjE7ICMgKO2Ohjsg7Y6GOyDhhJHhhaXhhrE7IO2Ohjsg4YSR4YWl4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBQRU9MTQorRDM4NztEMzg3OzExMTEgMTE2NSAxMUIyO0QzODc7MTExMSAxMTY1IDExQjI7ICMgKO2Ohzsg7Y6HOyDhhJHhhaXhhrI7IO2Ohzsg4YSR4YWl4YayOyApIEhBTkdVTCBTWUxMQUJMRSBQRU9MQgorRDM4ODtEMzg4OzExMTEgMTE2NSAxMUIzO0QzODg7MTExMSAxMTY1IDExQjM7ICMgKO2OiDsg7Y6IOyDhhJHhhaXhhrM7IO2OiDsg4YSR4YWl4YazOyApIEhBTkdVTCBTWUxMQUJMRSBQRU9MUworRDM4OTtEMzg5OzExMTEgMTE2NSAxMUI0O0QzODk7MTExMSAxMTY1IDExQjQ7ICMgKO2OiTsg7Y6JOyDhhJHhhaXhhrQ7IO2OiTsg4YSR4YWl4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBQRU9MVAorRDM4QTtEMzhBOzExMTEgMTE2NSAxMUI1O0QzOEE7MTExMSAxMTY1IDExQjU7ICMgKO2Oijsg7Y6KOyDhhJHhhaXhhrU7IO2Oijsg4YSR4YWl4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBQRU9MUAorRDM4QjtEMzhCOzExMTEgMTE2NSAxMUI2O0QzOEI7MTExMSAxMTY1IDExQjY7ICMgKO2Oizsg7Y6LOyDhhJHhhaXhhrY7IO2Oizsg4YSR4YWl4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBQRU9MSAorRDM4QztEMzhDOzExMTEgMTE2NSAxMUI3O0QzOEM7MTExMSAxMTY1IDExQjc7ICMgKO2OjDsg7Y6MOyDhhJHhhaXhhrc7IO2OjDsg4YSR4YWl4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBQRU9NCitEMzhEO0QzOEQ7MTExMSAxMTY1IDExQjg7RDM4RDsxMTExIDExNjUgMTFCODsgIyAo7Y6NOyDtjo07IOGEkeGFpeGGuDsg7Y6NOyDhhJHhhaXhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFBFT0IKK0QzOEU7RDM4RTsxMTExIDExNjUgMTFCOTtEMzhFOzExMTEgMTE2NSAxMUI5OyAjICjtjo47IO2Ojjsg4YSR4YWl4Ya5OyDtjo47IOGEkeGFpeGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgUEVPQlMKK0QzOEY7RDM4RjsxMTExIDExNjUgMTFCQTtEMzhGOzExMTEgMTE2NSAxMUJBOyAjICjtjo87IO2Ojzsg4YSR4YWl4Ya6OyDtjo87IOGEkeGFpeGGujsgKSBIQU5HVUwgU1lMTEFCTEUgUEVPUworRDM5MDtEMzkwOzExMTEgMTE2NSAxMUJCO0QzOTA7MTExMSAxMTY1IDExQkI7ICMgKO2OkDsg7Y6QOyDhhJHhhaXhhrs7IO2OkDsg4YSR4YWl4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBQRU9TUworRDM5MTtEMzkxOzExMTEgMTE2NSAxMUJDO0QzOTE7MTExMSAxMTY1IDExQkM7ICMgKO2OkTsg7Y6ROyDhhJHhhaXhhrw7IO2OkTsg4YSR4YWl4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBQRU9ORworRDM5MjtEMzkyOzExMTEgMTE2NSAxMUJEO0QzOTI7MTExMSAxMTY1IDExQkQ7ICMgKO2Okjsg7Y6SOyDhhJHhhaXhhr07IO2Okjsg4YSR4YWl4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBQRU9KCitEMzkzO0QzOTM7MTExMSAxMTY1IDExQkU7RDM5MzsxMTExIDExNjUgMTFCRTsgIyAo7Y6TOyDtjpM7IOGEkeGFpeGGvjsg7Y6TOyDhhJHhhaXhhr47ICkgSEFOR1VMIFNZTExBQkxFIFBFT0MKK0QzOTQ7RDM5NDsxMTExIDExNjUgMTFCRjtEMzk0OzExMTEgMTE2NSAxMUJGOyAjICjtjpQ7IO2OlDsg4YSR4YWl4Ya/OyDtjpQ7IOGEkeGFpeGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgUEVPSworRDM5NTtEMzk1OzExMTEgMTE2NSAxMUMwO0QzOTU7MTExMSAxMTY1IDExQzA7ICMgKO2OlTsg7Y6VOyDhhJHhhaXhh4A7IO2OlTsg4YSR4YWl4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBQRU9UCitEMzk2O0QzOTY7MTExMSAxMTY1IDExQzE7RDM5NjsxMTExIDExNjUgMTFDMTsgIyAo7Y6WOyDtjpY7IOGEkeGFpeGHgTsg7Y6WOyDhhJHhhaXhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFBFT1AKK0QzOTc7RDM5NzsxMTExIDExNjUgMTFDMjtEMzk3OzExMTEgMTE2NSAxMUMyOyAjICjtjpc7IO2Olzsg4YSR4YWl4YeCOyDtjpc7IOGEkeGFpeGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgUEVPSAorRDM5ODtEMzk4OzExMTEgMTE2NjtEMzk4OzExMTEgMTE2NjsgIyAo7Y6YOyDtjpg7IOGEkeGFpjsg7Y6YOyDhhJHhhaY7ICkgSEFOR1VMIFNZTExBQkxFIFBFCitEMzk5O0QzOTk7MTExMSAxMTY2IDExQTg7RDM5OTsxMTExIDExNjYgMTFBODsgIyAo7Y6ZOyDtjpk7IOGEkeGFpuGGqDsg7Y6ZOyDhhJHhhabhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFBFRworRDM5QTtEMzlBOzExMTEgMTE2NiAxMUE5O0QzOUE7MTExMSAxMTY2IDExQTk7ICMgKO2Omjsg7Y6aOyDhhJHhhabhhqk7IO2Omjsg4YSR4YWm4YapOyApIEhBTkdVTCBTWUxMQUJMRSBQRUdHCitEMzlCO0QzOUI7MTExMSAxMTY2IDExQUE7RDM5QjsxMTExIDExNjYgMTFBQTsgIyAo7Y6bOyDtjps7IOGEkeGFpuGGqjsg7Y6bOyDhhJHhhabhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFBFR1MKK0QzOUM7RDM5QzsxMTExIDExNjYgMTFBQjtEMzlDOzExMTEgMTE2NiAxMUFCOyAjICjtjpw7IO2OnDsg4YSR4YWm4YarOyDtjpw7IOGEkeGFpuGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgUEVOCitEMzlEO0QzOUQ7MTExMSAxMTY2IDExQUM7RDM5RDsxMTExIDExNjYgMTFBQzsgIyAo7Y6dOyDtjp07IOGEkeGFpuGGrDsg7Y6dOyDhhJHhhabhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFBFTkoKK0QzOUU7RDM5RTsxMTExIDExNjYgMTFBRDtEMzlFOzExMTEgMTE2NiAxMUFEOyAjICjtjp47IO2Onjsg4YSR4YWm4YatOyDtjp47IOGEkeGFpuGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgUEVOSAorRDM5RjtEMzlGOzExMTEgMTE2NiAxMUFFO0QzOUY7MTExMSAxMTY2IDExQUU7ICMgKO2Onzsg7Y6fOyDhhJHhhabhhq47IO2Onzsg4YSR4YWm4YauOyApIEhBTkdVTCBTWUxMQUJMRSBQRUQKK0QzQTA7RDNBMDsxMTExIDExNjYgMTFBRjtEM0EwOzExMTEgMTE2NiAxMUFGOyAjICjtjqA7IO2OoDsg4YSR4YWm4YavOyDtjqA7IOGEkeGFpuGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgUEVMCitEM0ExO0QzQTE7MTExMSAxMTY2IDExQjA7RDNBMTsxMTExIDExNjYgMTFCMDsgIyAo7Y6hOyDtjqE7IOGEkeGFpuGGsDsg7Y6hOyDhhJHhhabhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFBFTEcKK0QzQTI7RDNBMjsxMTExIDExNjYgMTFCMTtEM0EyOzExMTEgMTE2NiAxMUIxOyAjICjtjqI7IO2Oojsg4YSR4YWm4YaxOyDtjqI7IOGEkeGFpuGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgUEVMTQorRDNBMztEM0EzOzExMTEgMTE2NiAxMUIyO0QzQTM7MTExMSAxMTY2IDExQjI7ICMgKO2Oozsg7Y6jOyDhhJHhhabhhrI7IO2Oozsg4YSR4YWm4YayOyApIEhBTkdVTCBTWUxMQUJMRSBQRUxCCitEM0E0O0QzQTQ7MTExMSAxMTY2IDExQjM7RDNBNDsxMTExIDExNjYgMTFCMzsgIyAo7Y6kOyDtjqQ7IOGEkeGFpuGGszsg7Y6kOyDhhJHhhabhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFBFTFMKK0QzQTU7RDNBNTsxMTExIDExNjYgMTFCNDtEM0E1OzExMTEgMTE2NiAxMUI0OyAjICjtjqU7IO2OpTsg4YSR4YWm4Ya0OyDtjqU7IOGEkeGFpuGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgUEVMVAorRDNBNjtEM0E2OzExMTEgMTE2NiAxMUI1O0QzQTY7MTExMSAxMTY2IDExQjU7ICMgKO2Opjsg7Y6mOyDhhJHhhabhhrU7IO2Opjsg4YSR4YWm4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBQRUxQCitEM0E3O0QzQTc7MTExMSAxMTY2IDExQjY7RDNBNzsxMTExIDExNjYgMTFCNjsgIyAo7Y6nOyDtjqc7IOGEkeGFpuGGtjsg7Y6nOyDhhJHhhabhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFBFTEgKK0QzQTg7RDNBODsxMTExIDExNjYgMTFCNztEM0E4OzExMTEgMTE2NiAxMUI3OyAjICjtjqg7IO2OqDsg4YSR4YWm4Ya3OyDtjqg7IOGEkeGFpuGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgUEVNCitEM0E5O0QzQTk7MTExMSAxMTY2IDExQjg7RDNBOTsxMTExIDExNjYgMTFCODsgIyAo7Y6pOyDtjqk7IOGEkeGFpuGGuDsg7Y6pOyDhhJHhhabhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFBFQgorRDNBQTtEM0FBOzExMTEgMTE2NiAxMUI5O0QzQUE7MTExMSAxMTY2IDExQjk7ICMgKO2Oqjsg7Y6qOyDhhJHhhabhhrk7IO2Oqjsg4YSR4YWm4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBQRUJTCitEM0FCO0QzQUI7MTExMSAxMTY2IDExQkE7RDNBQjsxMTExIDExNjYgMTFCQTsgIyAo7Y6rOyDtjqs7IOGEkeGFpuGGujsg7Y6rOyDhhJHhhabhhro7ICkgSEFOR1VMIFNZTExBQkxFIFBFUworRDNBQztEM0FDOzExMTEgMTE2NiAxMUJCO0QzQUM7MTExMSAxMTY2IDExQkI7ICMgKO2OrDsg7Y6sOyDhhJHhhabhhrs7IO2OrDsg4YSR4YWm4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBQRVNTCitEM0FEO0QzQUQ7MTExMSAxMTY2IDExQkM7RDNBRDsxMTExIDExNjYgMTFCQzsgIyAo7Y6tOyDtjq07IOGEkeGFpuGGvDsg7Y6tOyDhhJHhhabhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFBFTkcKK0QzQUU7RDNBRTsxMTExIDExNjYgMTFCRDtEM0FFOzExMTEgMTE2NiAxMUJEOyAjICjtjq47IO2Orjsg4YSR4YWm4Ya9OyDtjq47IOGEkeGFpuGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgUEVKCitEM0FGO0QzQUY7MTExMSAxMTY2IDExQkU7RDNBRjsxMTExIDExNjYgMTFCRTsgIyAo7Y6vOyDtjq87IOGEkeGFpuGGvjsg7Y6vOyDhhJHhhabhhr47ICkgSEFOR1VMIFNZTExBQkxFIFBFQworRDNCMDtEM0IwOzExMTEgMTE2NiAxMUJGO0QzQjA7MTExMSAxMTY2IDExQkY7ICMgKO2OsDsg7Y6wOyDhhJHhhabhhr87IO2OsDsg4YSR4YWm4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBQRUsKK0QzQjE7RDNCMTsxMTExIDExNjYgMTFDMDtEM0IxOzExMTEgMTE2NiAxMUMwOyAjICjtjrE7IO2OsTsg4YSR4YWm4YeAOyDtjrE7IOGEkeGFpuGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgUEVUCitEM0IyO0QzQjI7MTExMSAxMTY2IDExQzE7RDNCMjsxMTExIDExNjYgMTFDMTsgIyAo7Y6yOyDtjrI7IOGEkeGFpuGHgTsg7Y6yOyDhhJHhhabhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFBFUAorRDNCMztEM0IzOzExMTEgMTE2NiAxMUMyO0QzQjM7MTExMSAxMTY2IDExQzI7ICMgKO2Oszsg7Y6zOyDhhJHhhabhh4I7IO2Oszsg4YSR4YWm4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBQRUgKK0QzQjQ7RDNCNDsxMTExIDExNjc7RDNCNDsxMTExIDExNjc7ICMgKO2OtDsg7Y60OyDhhJHhhac7IO2OtDsg4YSR4YWnOyApIEhBTkdVTCBTWUxMQUJMRSBQWUVPCitEM0I1O0QzQjU7MTExMSAxMTY3IDExQTg7RDNCNTsxMTExIDExNjcgMTFBODsgIyAo7Y61OyDtjrU7IOGEkeGFp+GGqDsg7Y61OyDhhJHhhafhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFBZRU9HCitEM0I2O0QzQjY7MTExMSAxMTY3IDExQTk7RDNCNjsxMTExIDExNjcgMTFBOTsgIyAo7Y62OyDtjrY7IOGEkeGFp+GGqTsg7Y62OyDhhJHhhafhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFBZRU9HRworRDNCNztEM0I3OzExMTEgMTE2NyAxMUFBO0QzQjc7MTExMSAxMTY3IDExQUE7ICMgKO2Otzsg7Y63OyDhhJHhhafhhqo7IO2Otzsg4YSR4YWn4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBQWUVPR1MKK0QzQjg7RDNCODsxMTExIDExNjcgMTFBQjtEM0I4OzExMTEgMTE2NyAxMUFCOyAjICjtjrg7IO2OuDsg4YSR4YWn4YarOyDtjrg7IOGEkeGFp+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgUFlFT04KK0QzQjk7RDNCOTsxMTExIDExNjcgMTFBQztEM0I5OzExMTEgMTE2NyAxMUFDOyAjICjtjrk7IO2OuTsg4YSR4YWn4YasOyDtjrk7IOGEkeGFp+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgUFlFT05KCitEM0JBO0QzQkE7MTExMSAxMTY3IDExQUQ7RDNCQTsxMTExIDExNjcgMTFBRDsgIyAo7Y66OyDtjro7IOGEkeGFp+GGrTsg7Y66OyDhhJHhhafhhq07ICkgSEFOR1VMIFNZTExBQkxFIFBZRU9OSAorRDNCQjtEM0JCOzExMTEgMTE2NyAxMUFFO0QzQkI7MTExMSAxMTY3IDExQUU7ICMgKO2Ouzsg7Y67OyDhhJHhhafhhq47IO2Ouzsg4YSR4YWn4YauOyApIEhBTkdVTCBTWUxMQUJMRSBQWUVPRAorRDNCQztEM0JDOzExMTEgMTE2NyAxMUFGO0QzQkM7MTExMSAxMTY3IDExQUY7ICMgKO2OvDsg7Y68OyDhhJHhhafhhq87IO2OvDsg4YSR4YWn4YavOyApIEhBTkdVTCBTWUxMQUJMRSBQWUVPTAorRDNCRDtEM0JEOzExMTEgMTE2NyAxMUIwO0QzQkQ7MTExMSAxMTY3IDExQjA7ICMgKO2OvTsg7Y69OyDhhJHhhafhhrA7IO2OvTsg4YSR4YWn4YawOyApIEhBTkdVTCBTWUxMQUJMRSBQWUVPTEcKK0QzQkU7RDNCRTsxMTExIDExNjcgMTFCMTtEM0JFOzExMTEgMTE2NyAxMUIxOyAjICjtjr47IO2Ovjsg4YSR4YWn4YaxOyDtjr47IOGEkeGFp+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlFT0xNCitEM0JGO0QzQkY7MTExMSAxMTY3IDExQjI7RDNCRjsxMTExIDExNjcgMTFCMjsgIyAo7Y6/OyDtjr87IOGEkeGFp+GGsjsg7Y6/OyDhhJHhhafhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFBZRU9MQgorRDNDMDtEM0MwOzExMTEgMTE2NyAxMUIzO0QzQzA7MTExMSAxMTY3IDExQjM7ICMgKO2PgDsg7Y+AOyDhhJHhhafhhrM7IO2PgDsg4YSR4YWn4YazOyApIEhBTkdVTCBTWUxMQUJMRSBQWUVPTFMKK0QzQzE7RDNDMTsxMTExIDExNjcgMTFCNDtEM0MxOzExMTEgMTE2NyAxMUI0OyAjICjtj4E7IO2PgTsg4YSR4YWn4Ya0OyDtj4E7IOGEkeGFp+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgUFlFT0xUCitEM0MyO0QzQzI7MTExMSAxMTY3IDExQjU7RDNDMjsxMTExIDExNjcgMTFCNTsgIyAo7Y+COyDtj4I7IOGEkeGFp+GGtTsg7Y+COyDhhJHhhafhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFBZRU9MUAorRDNDMztEM0MzOzExMTEgMTE2NyAxMUI2O0QzQzM7MTExMSAxMTY3IDExQjY7ICMgKO2Pgzsg7Y+DOyDhhJHhhafhhrY7IO2Pgzsg4YSR4YWn4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBQWUVPTEgKK0QzQzQ7RDNDNDsxMTExIDExNjcgMTFCNztEM0M0OzExMTEgMTE2NyAxMUI3OyAjICjtj4Q7IO2PhDsg4YSR4YWn4Ya3OyDtj4Q7IOGEkeGFp+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgUFlFT00KK0QzQzU7RDNDNTsxMTExIDExNjcgMTFCODtEM0M1OzExMTEgMTE2NyAxMUI4OyAjICjtj4U7IO2PhTsg4YSR4YWn4Ya4OyDtj4U7IOGEkeGFp+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgUFlFT0IKK0QzQzY7RDNDNjsxMTExIDExNjcgMTFCOTtEM0M2OzExMTEgMTE2NyAxMUI5OyAjICjtj4Y7IO2Phjsg4YSR4YWn4Ya5OyDtj4Y7IOGEkeGFp+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlFT0JTCitEM0M3O0QzQzc7MTExMSAxMTY3IDExQkE7RDNDNzsxMTExIDExNjcgMTFCQTsgIyAo7Y+HOyDtj4c7IOGEkeGFp+GGujsg7Y+HOyDhhJHhhafhhro7ICkgSEFOR1VMIFNZTExBQkxFIFBZRU9TCitEM0M4O0QzQzg7MTExMSAxMTY3IDExQkI7RDNDODsxMTExIDExNjcgMTFCQjsgIyAo7Y+IOyDtj4g7IOGEkeGFp+GGuzsg7Y+IOyDhhJHhhafhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFBZRU9TUworRDNDOTtEM0M5OzExMTEgMTE2NyAxMUJDO0QzQzk7MTExMSAxMTY3IDExQkM7ICMgKO2PiTsg7Y+JOyDhhJHhhafhhrw7IO2PiTsg4YSR4YWn4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBQWUVPTkcKK0QzQ0E7RDNDQTsxMTExIDExNjcgMTFCRDtEM0NBOzExMTEgMTE2NyAxMUJEOyAjICjtj4o7IO2Pijsg4YSR4YWn4Ya9OyDtj4o7IOGEkeGFp+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlFT0oKK0QzQ0I7RDNDQjsxMTExIDExNjcgMTFCRTtEM0NCOzExMTEgMTE2NyAxMUJFOyAjICjtj4s7IO2Pizsg4YSR4YWn4Ya+OyDtj4s7IOGEkeGFp+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgUFlFT0MKK0QzQ0M7RDNDQzsxMTExIDExNjcgMTFCRjtEM0NDOzExMTEgMTE2NyAxMUJGOyAjICjtj4w7IO2PjDsg4YSR4YWn4Ya/OyDtj4w7IOGEkeGFp+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgUFlFT0sKK0QzQ0Q7RDNDRDsxMTExIDExNjcgMTFDMDtEM0NEOzExMTEgMTE2NyAxMUMwOyAjICjtj407IO2PjTsg4YSR4YWn4YeAOyDtj407IOGEkeGFp+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgUFlFT1QKK0QzQ0U7RDNDRTsxMTExIDExNjcgMTFDMTtEM0NFOzExMTEgMTE2NyAxMUMxOyAjICjtj447IO2Pjjsg4YSR4YWn4YeBOyDtj447IOGEkeGFp+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlFT1AKK0QzQ0Y7RDNDRjsxMTExIDExNjcgMTFDMjtEM0NGOzExMTEgMTE2NyAxMUMyOyAjICjtj487IO2Pjzsg4YSR4YWn4YeCOyDtj487IOGEkeGFp+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgUFlFT0gKK0QzRDA7RDNEMDsxMTExIDExNjg7RDNEMDsxMTExIDExNjg7ICMgKO2PkDsg7Y+QOyDhhJHhhag7IO2PkDsg4YSR4YWoOyApIEhBTkdVTCBTWUxMQUJMRSBQWUUKK0QzRDE7RDNEMTsxMTExIDExNjggMTFBODtEM0QxOzExMTEgMTE2OCAxMUE4OyAjICjtj5E7IO2PkTsg4YSR4YWo4YaoOyDtj5E7IOGEkeGFqOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgUFlFRworRDNEMjtEM0QyOzExMTEgMTE2OCAxMUE5O0QzRDI7MTExMSAxMTY4IDExQTk7ICMgKO2Pkjsg7Y+SOyDhhJHhhajhhqk7IO2Pkjsg4YSR4YWo4YapOyApIEhBTkdVTCBTWUxMQUJMRSBQWUVHRworRDNEMztEM0QzOzExMTEgMTE2OCAxMUFBO0QzRDM7MTExMSAxMTY4IDExQUE7ICMgKO2Pkzsg7Y+TOyDhhJHhhajhhqo7IO2Pkzsg4YSR4YWo4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBQWUVHUworRDNENDtEM0Q0OzExMTEgMTE2OCAxMUFCO0QzRDQ7MTExMSAxMTY4IDExQUI7ICMgKO2PlDsg7Y+UOyDhhJHhhajhhqs7IO2PlDsg4YSR4YWo4YarOyApIEhBTkdVTCBTWUxMQUJMRSBQWUVOCitEM0Q1O0QzRDU7MTExMSAxMTY4IDExQUM7RDNENTsxMTExIDExNjggMTFBQzsgIyAo7Y+VOyDtj5U7IOGEkeGFqOGGrDsg7Y+VOyDhhJHhhajhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFBZRU5KCitEM0Q2O0QzRDY7MTExMSAxMTY4IDExQUQ7RDNENjsxMTExIDExNjggMTFBRDsgIyAo7Y+WOyDtj5Y7IOGEkeGFqOGGrTsg7Y+WOyDhhJHhhajhhq07ICkgSEFOR1VMIFNZTExBQkxFIFBZRU5ICitEM0Q3O0QzRDc7MTExMSAxMTY4IDExQUU7RDNENzsxMTExIDExNjggMTFBRTsgIyAo7Y+XOyDtj5c7IOGEkeGFqOGGrjsg7Y+XOyDhhJHhhajhhq47ICkgSEFOR1VMIFNZTExBQkxFIFBZRUQKK0QzRDg7RDNEODsxMTExIDExNjggMTFBRjtEM0Q4OzExMTEgMTE2OCAxMUFGOyAjICjtj5g7IO2PmDsg4YSR4YWo4YavOyDtj5g7IOGEkeGFqOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgUFlFTAorRDNEOTtEM0Q5OzExMTEgMTE2OCAxMUIwO0QzRDk7MTExMSAxMTY4IDExQjA7ICMgKO2PmTsg7Y+ZOyDhhJHhhajhhrA7IO2PmTsg4YSR4YWo4YawOyApIEhBTkdVTCBTWUxMQUJMRSBQWUVMRworRDNEQTtEM0RBOzExMTEgMTE2OCAxMUIxO0QzREE7MTExMSAxMTY4IDExQjE7ICMgKO2Pmjsg7Y+aOyDhhJHhhajhhrE7IO2Pmjsg4YSR4YWo4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBQWUVMTQorRDNEQjtEM0RCOzExMTEgMTE2OCAxMUIyO0QzREI7MTExMSAxMTY4IDExQjI7ICMgKO2Pmzsg7Y+bOyDhhJHhhajhhrI7IO2Pmzsg4YSR4YWo4YayOyApIEhBTkdVTCBTWUxMQUJMRSBQWUVMQgorRDNEQztEM0RDOzExMTEgMTE2OCAxMUIzO0QzREM7MTExMSAxMTY4IDExQjM7ICMgKO2PnDsg7Y+cOyDhhJHhhajhhrM7IO2PnDsg4YSR4YWo4YazOyApIEhBTkdVTCBTWUxMQUJMRSBQWUVMUworRDNERDtEM0REOzExMTEgMTE2OCAxMUI0O0QzREQ7MTExMSAxMTY4IDExQjQ7ICMgKO2PnTsg7Y+dOyDhhJHhhajhhrQ7IO2PnTsg4YSR4YWo4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBQWUVMVAorRDNERTtEM0RFOzExMTEgMTE2OCAxMUI1O0QzREU7MTExMSAxMTY4IDExQjU7ICMgKO2Pnjsg7Y+eOyDhhJHhhajhhrU7IO2Pnjsg4YSR4YWo4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBQWUVMUAorRDNERjtEM0RGOzExMTEgMTE2OCAxMUI2O0QzREY7MTExMSAxMTY4IDExQjY7ICMgKO2Pnzsg7Y+fOyDhhJHhhajhhrY7IO2Pnzsg4YSR4YWo4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBQWUVMSAorRDNFMDtEM0UwOzExMTEgMTE2OCAxMUI3O0QzRTA7MTExMSAxMTY4IDExQjc7ICMgKO2PoDsg7Y+gOyDhhJHhhajhhrc7IO2PoDsg4YSR4YWo4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBQWUVNCitEM0UxO0QzRTE7MTExMSAxMTY4IDExQjg7RDNFMTsxMTExIDExNjggMTFCODsgIyAo7Y+hOyDtj6E7IOGEkeGFqOGGuDsg7Y+hOyDhhJHhhajhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFBZRUIKK0QzRTI7RDNFMjsxMTExIDExNjggMTFCOTtEM0UyOzExMTEgMTE2OCAxMUI5OyAjICjtj6I7IO2Pojsg4YSR4YWo4Ya5OyDtj6I7IOGEkeGFqOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlFQlMKK0QzRTM7RDNFMzsxMTExIDExNjggMTFCQTtEM0UzOzExMTEgMTE2OCAxMUJBOyAjICjtj6M7IO2Pozsg4YSR4YWo4Ya6OyDtj6M7IOGEkeGFqOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgUFlFUworRDNFNDtEM0U0OzExMTEgMTE2OCAxMUJCO0QzRTQ7MTExMSAxMTY4IDExQkI7ICMgKO2PpDsg7Y+kOyDhhJHhhajhhrs7IO2PpDsg4YSR4YWo4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBQWUVTUworRDNFNTtEM0U1OzExMTEgMTE2OCAxMUJDO0QzRTU7MTExMSAxMTY4IDExQkM7ICMgKO2PpTsg7Y+lOyDhhJHhhajhhrw7IO2PpTsg4YSR4YWo4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBQWUVORworRDNFNjtEM0U2OzExMTEgMTE2OCAxMUJEO0QzRTY7MTExMSAxMTY4IDExQkQ7ICMgKO2Ppjsg7Y+mOyDhhJHhhajhhr07IO2Ppjsg4YSR4YWo4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBQWUVKCitEM0U3O0QzRTc7MTExMSAxMTY4IDExQkU7RDNFNzsxMTExIDExNjggMTFCRTsgIyAo7Y+nOyDtj6c7IOGEkeGFqOGGvjsg7Y+nOyDhhJHhhajhhr47ICkgSEFOR1VMIFNZTExBQkxFIFBZRUMKK0QzRTg7RDNFODsxMTExIDExNjggMTFCRjtEM0U4OzExMTEgMTE2OCAxMUJGOyAjICjtj6g7IO2PqDsg4YSR4YWo4Ya/OyDtj6g7IOGEkeGFqOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgUFlFSworRDNFOTtEM0U5OzExMTEgMTE2OCAxMUMwO0QzRTk7MTExMSAxMTY4IDExQzA7ICMgKO2PqTsg7Y+pOyDhhJHhhajhh4A7IO2PqTsg4YSR4YWo4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBQWUVUCitEM0VBO0QzRUE7MTExMSAxMTY4IDExQzE7RDNFQTsxMTExIDExNjggMTFDMTsgIyAo7Y+qOyDtj6o7IOGEkeGFqOGHgTsg7Y+qOyDhhJHhhajhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFBZRVAKK0QzRUI7RDNFQjsxMTExIDExNjggMTFDMjtEM0VCOzExMTEgMTE2OCAxMUMyOyAjICjtj6s7IO2Pqzsg4YSR4YWo4YeCOyDtj6s7IOGEkeGFqOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgUFlFSAorRDNFQztEM0VDOzExMTEgMTE2OTtEM0VDOzExMTEgMTE2OTsgIyAo7Y+sOyDtj6w7IOGEkeGFqTsg7Y+sOyDhhJHhhak7ICkgSEFOR1VMIFNZTExBQkxFIFBPCitEM0VEO0QzRUQ7MTExMSAxMTY5IDExQTg7RDNFRDsxMTExIDExNjkgMTFBODsgIyAo7Y+tOyDtj607IOGEkeGFqeGGqDsg7Y+tOyDhhJHhhanhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFBPRworRDNFRTtEM0VFOzExMTEgMTE2OSAxMUE5O0QzRUU7MTExMSAxMTY5IDExQTk7ICMgKO2Prjsg7Y+uOyDhhJHhhanhhqk7IO2Prjsg4YSR4YWp4YapOyApIEhBTkdVTCBTWUxMQUJMRSBQT0dHCitEM0VGO0QzRUY7MTExMSAxMTY5IDExQUE7RDNFRjsxMTExIDExNjkgMTFBQTsgIyAo7Y+vOyDtj687IOGEkeGFqeGGqjsg7Y+vOyDhhJHhhanhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFBPR1MKK0QzRjA7RDNGMDsxMTExIDExNjkgMTFBQjtEM0YwOzExMTEgMTE2OSAxMUFCOyAjICjtj7A7IO2PsDsg4YSR4YWp4YarOyDtj7A7IOGEkeGFqeGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgUE9OCitEM0YxO0QzRjE7MTExMSAxMTY5IDExQUM7RDNGMTsxMTExIDExNjkgMTFBQzsgIyAo7Y+xOyDtj7E7IOGEkeGFqeGGrDsg7Y+xOyDhhJHhhanhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFBPTkoKK0QzRjI7RDNGMjsxMTExIDExNjkgMTFBRDtEM0YyOzExMTEgMTE2OSAxMUFEOyAjICjtj7I7IO2Psjsg4YSR4YWp4YatOyDtj7I7IOGEkeGFqeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgUE9OSAorRDNGMztEM0YzOzExMTEgMTE2OSAxMUFFO0QzRjM7MTExMSAxMTY5IDExQUU7ICMgKO2Pszsg7Y+zOyDhhJHhhanhhq47IO2Pszsg4YSR4YWp4YauOyApIEhBTkdVTCBTWUxMQUJMRSBQT0QKK0QzRjQ7RDNGNDsxMTExIDExNjkgMTFBRjtEM0Y0OzExMTEgMTE2OSAxMUFGOyAjICjtj7Q7IO2PtDsg4YSR4YWp4YavOyDtj7Q7IOGEkeGFqeGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgUE9MCitEM0Y1O0QzRjU7MTExMSAxMTY5IDExQjA7RDNGNTsxMTExIDExNjkgMTFCMDsgIyAo7Y+1OyDtj7U7IOGEkeGFqeGGsDsg7Y+1OyDhhJHhhanhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFBPTEcKK0QzRjY7RDNGNjsxMTExIDExNjkgMTFCMTtEM0Y2OzExMTEgMTE2OSAxMUIxOyAjICjtj7Y7IO2Ptjsg4YSR4YWp4YaxOyDtj7Y7IOGEkeGFqeGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgUE9MTQorRDNGNztEM0Y3OzExMTEgMTE2OSAxMUIyO0QzRjc7MTExMSAxMTY5IDExQjI7ICMgKO2Ptzsg7Y+3OyDhhJHhhanhhrI7IO2Ptzsg4YSR4YWp4YayOyApIEhBTkdVTCBTWUxMQUJMRSBQT0xCCitEM0Y4O0QzRjg7MTExMSAxMTY5IDExQjM7RDNGODsxMTExIDExNjkgMTFCMzsgIyAo7Y+4OyDtj7g7IOGEkeGFqeGGszsg7Y+4OyDhhJHhhanhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFBPTFMKK0QzRjk7RDNGOTsxMTExIDExNjkgMTFCNDtEM0Y5OzExMTEgMTE2OSAxMUI0OyAjICjtj7k7IO2PuTsg4YSR4YWp4Ya0OyDtj7k7IOGEkeGFqeGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgUE9MVAorRDNGQTtEM0ZBOzExMTEgMTE2OSAxMUI1O0QzRkE7MTExMSAxMTY5IDExQjU7ICMgKO2Pujsg7Y+6OyDhhJHhhanhhrU7IO2Pujsg4YSR4YWp4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBQT0xQCitEM0ZCO0QzRkI7MTExMSAxMTY5IDExQjY7RDNGQjsxMTExIDExNjkgMTFCNjsgIyAo7Y+7OyDtj7s7IOGEkeGFqeGGtjsg7Y+7OyDhhJHhhanhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFBPTEgKK0QzRkM7RDNGQzsxMTExIDExNjkgMTFCNztEM0ZDOzExMTEgMTE2OSAxMUI3OyAjICjtj7w7IO2PvDsg4YSR4YWp4Ya3OyDtj7w7IOGEkeGFqeGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgUE9NCitEM0ZEO0QzRkQ7MTExMSAxMTY5IDExQjg7RDNGRDsxMTExIDExNjkgMTFCODsgIyAo7Y+9OyDtj707IOGEkeGFqeGGuDsg7Y+9OyDhhJHhhanhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFBPQgorRDNGRTtEM0ZFOzExMTEgMTE2OSAxMUI5O0QzRkU7MTExMSAxMTY5IDExQjk7ICMgKO2Pvjsg7Y++OyDhhJHhhanhhrk7IO2Pvjsg4YSR4YWp4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBQT0JTCitEM0ZGO0QzRkY7MTExMSAxMTY5IDExQkE7RDNGRjsxMTExIDExNjkgMTFCQTsgIyAo7Y+/OyDtj787IOGEkeGFqeGGujsg7Y+/OyDhhJHhhanhhro7ICkgSEFOR1VMIFNZTExBQkxFIFBPUworRDQwMDtENDAwOzExMTEgMTE2OSAxMUJCO0Q0MDA7MTExMSAxMTY5IDExQkI7ICMgKO2QgDsg7ZCAOyDhhJHhhanhhrs7IO2QgDsg4YSR4YWp4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBQT1NTCitENDAxO0Q0MDE7MTExMSAxMTY5IDExQkM7RDQwMTsxMTExIDExNjkgMTFCQzsgIyAo7ZCBOyDtkIE7IOGEkeGFqeGGvDsg7ZCBOyDhhJHhhanhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFBPTkcKK0Q0MDI7RDQwMjsxMTExIDExNjkgMTFCRDtENDAyOzExMTEgMTE2OSAxMUJEOyAjICjtkII7IO2Qgjsg4YSR4YWp4Ya9OyDtkII7IOGEkeGFqeGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgUE9KCitENDAzO0Q0MDM7MTExMSAxMTY5IDExQkU7RDQwMzsxMTExIDExNjkgMTFCRTsgIyAo7ZCDOyDtkIM7IOGEkeGFqeGGvjsg7ZCDOyDhhJHhhanhhr47ICkgSEFOR1VMIFNZTExBQkxFIFBPQworRDQwNDtENDA0OzExMTEgMTE2OSAxMUJGO0Q0MDQ7MTExMSAxMTY5IDExQkY7ICMgKO2QhDsg7ZCEOyDhhJHhhanhhr87IO2QhDsg4YSR4YWp4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBQT0sKK0Q0MDU7RDQwNTsxMTExIDExNjkgMTFDMDtENDA1OzExMTEgMTE2OSAxMUMwOyAjICjtkIU7IO2QhTsg4YSR4YWp4YeAOyDtkIU7IOGEkeGFqeGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgUE9UCitENDA2O0Q0MDY7MTExMSAxMTY5IDExQzE7RDQwNjsxMTExIDExNjkgMTFDMTsgIyAo7ZCGOyDtkIY7IOGEkeGFqeGHgTsg7ZCGOyDhhJHhhanhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFBPUAorRDQwNztENDA3OzExMTEgMTE2OSAxMUMyO0Q0MDc7MTExMSAxMTY5IDExQzI7ICMgKO2Qhzsg7ZCHOyDhhJHhhanhh4I7IO2Qhzsg4YSR4YWp4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBQT0gKK0Q0MDg7RDQwODsxMTExIDExNkE7RDQwODsxMTExIDExNkE7ICMgKO2QiDsg7ZCIOyDhhJHhhao7IO2QiDsg4YSR4YWqOyApIEhBTkdVTCBTWUxMQUJMRSBQV0EKK0Q0MDk7RDQwOTsxMTExIDExNkEgMTFBODtENDA5OzExMTEgMTE2QSAxMUE4OyAjICjtkIk7IO2QiTsg4YSR4YWq4YaoOyDtkIk7IOGEkeGFquGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgUFdBRworRDQwQTtENDBBOzExMTEgMTE2QSAxMUE5O0Q0MEE7MTExMSAxMTZBIDExQTk7ICMgKO2Qijsg7ZCKOyDhhJHhharhhqk7IO2Qijsg4YSR4YWq4YapOyApIEhBTkdVTCBTWUxMQUJMRSBQV0FHRworRDQwQjtENDBCOzExMTEgMTE2QSAxMUFBO0Q0MEI7MTExMSAxMTZBIDExQUE7ICMgKO2Qizsg7ZCLOyDhhJHhharhhqo7IO2Qizsg4YSR4YWq4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBQV0FHUworRDQwQztENDBDOzExMTEgMTE2QSAxMUFCO0Q0MEM7MTExMSAxMTZBIDExQUI7ICMgKO2QjDsg7ZCMOyDhhJHhharhhqs7IO2QjDsg4YSR4YWq4YarOyApIEhBTkdVTCBTWUxMQUJMRSBQV0FOCitENDBEO0Q0MEQ7MTExMSAxMTZBIDExQUM7RDQwRDsxMTExIDExNkEgMTFBQzsgIyAo7ZCNOyDtkI07IOGEkeGFquGGrDsg7ZCNOyDhhJHhharhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFBXQU5KCitENDBFO0Q0MEU7MTExMSAxMTZBIDExQUQ7RDQwRTsxMTExIDExNkEgMTFBRDsgIyAo7ZCOOyDtkI47IOGEkeGFquGGrTsg7ZCOOyDhhJHhharhhq07ICkgSEFOR1VMIFNZTExBQkxFIFBXQU5ICitENDBGO0Q0MEY7MTExMSAxMTZBIDExQUU7RDQwRjsxMTExIDExNkEgMTFBRTsgIyAo7ZCPOyDtkI87IOGEkeGFquGGrjsg7ZCPOyDhhJHhharhhq47ICkgSEFOR1VMIFNZTExBQkxFIFBXQUQKK0Q0MTA7RDQxMDsxMTExIDExNkEgMTFBRjtENDEwOzExMTEgMTE2QSAxMUFGOyAjICjtkJA7IO2QkDsg4YSR4YWq4YavOyDtkJA7IOGEkeGFquGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgUFdBTAorRDQxMTtENDExOzExMTEgMTE2QSAxMUIwO0Q0MTE7MTExMSAxMTZBIDExQjA7ICMgKO2QkTsg7ZCROyDhhJHhharhhrA7IO2QkTsg4YSR4YWq4YawOyApIEhBTkdVTCBTWUxMQUJMRSBQV0FMRworRDQxMjtENDEyOzExMTEgMTE2QSAxMUIxO0Q0MTI7MTExMSAxMTZBIDExQjE7ICMgKO2Qkjsg7ZCSOyDhhJHhharhhrE7IO2Qkjsg4YSR4YWq4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBQV0FMTQorRDQxMztENDEzOzExMTEgMTE2QSAxMUIyO0Q0MTM7MTExMSAxMTZBIDExQjI7ICMgKO2Qkzsg7ZCTOyDhhJHhharhhrI7IO2Qkzsg4YSR4YWq4YayOyApIEhBTkdVTCBTWUxMQUJMRSBQV0FMQgorRDQxNDtENDE0OzExMTEgMTE2QSAxMUIzO0Q0MTQ7MTExMSAxMTZBIDExQjM7ICMgKO2QlDsg7ZCUOyDhhJHhharhhrM7IO2QlDsg4YSR4YWq4YazOyApIEhBTkdVTCBTWUxMQUJMRSBQV0FMUworRDQxNTtENDE1OzExMTEgMTE2QSAxMUI0O0Q0MTU7MTExMSAxMTZBIDExQjQ7ICMgKO2QlTsg7ZCVOyDhhJHhharhhrQ7IO2QlTsg4YSR4YWq4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBQV0FMVAorRDQxNjtENDE2OzExMTEgMTE2QSAxMUI1O0Q0MTY7MTExMSAxMTZBIDExQjU7ICMgKO2Qljsg7ZCWOyDhhJHhharhhrU7IO2Qljsg4YSR4YWq4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBQV0FMUAorRDQxNztENDE3OzExMTEgMTE2QSAxMUI2O0Q0MTc7MTExMSAxMTZBIDExQjY7ICMgKO2Qlzsg7ZCXOyDhhJHhharhhrY7IO2Qlzsg4YSR4YWq4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBQV0FMSAorRDQxODtENDE4OzExMTEgMTE2QSAxMUI3O0Q0MTg7MTExMSAxMTZBIDExQjc7ICMgKO2QmDsg7ZCYOyDhhJHhharhhrc7IO2QmDsg4YSR4YWq4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBQV0FNCitENDE5O0Q0MTk7MTExMSAxMTZBIDExQjg7RDQxOTsxMTExIDExNkEgMTFCODsgIyAo7ZCZOyDtkJk7IOGEkeGFquGGuDsg7ZCZOyDhhJHhharhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFBXQUIKK0Q0MUE7RDQxQTsxMTExIDExNkEgMTFCOTtENDFBOzExMTEgMTE2QSAxMUI5OyAjICjtkJo7IO2Qmjsg4YSR4YWq4Ya5OyDtkJo7IOGEkeGFquGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgUFdBQlMKK0Q0MUI7RDQxQjsxMTExIDExNkEgMTFCQTtENDFCOzExMTEgMTE2QSAxMUJBOyAjICjtkJs7IO2Qmzsg4YSR4YWq4Ya6OyDtkJs7IOGEkeGFquGGujsgKSBIQU5HVUwgU1lMTEFCTEUgUFdBUworRDQxQztENDFDOzExMTEgMTE2QSAxMUJCO0Q0MUM7MTExMSAxMTZBIDExQkI7ICMgKO2QnDsg7ZCcOyDhhJHhharhhrs7IO2QnDsg4YSR4YWq4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBQV0FTUworRDQxRDtENDFEOzExMTEgMTE2QSAxMUJDO0Q0MUQ7MTExMSAxMTZBIDExQkM7ICMgKO2QnTsg7ZCdOyDhhJHhharhhrw7IO2QnTsg4YSR4YWq4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBQV0FORworRDQxRTtENDFFOzExMTEgMTE2QSAxMUJEO0Q0MUU7MTExMSAxMTZBIDExQkQ7ICMgKO2Qnjsg7ZCeOyDhhJHhharhhr07IO2Qnjsg4YSR4YWq4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBQV0FKCitENDFGO0Q0MUY7MTExMSAxMTZBIDExQkU7RDQxRjsxMTExIDExNkEgMTFCRTsgIyAo7ZCfOyDtkJ87IOGEkeGFquGGvjsg7ZCfOyDhhJHhharhhr47ICkgSEFOR1VMIFNZTExBQkxFIFBXQUMKK0Q0MjA7RDQyMDsxMTExIDExNkEgMTFCRjtENDIwOzExMTEgMTE2QSAxMUJGOyAjICjtkKA7IO2QoDsg4YSR4YWq4Ya/OyDtkKA7IOGEkeGFquGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgUFdBSworRDQyMTtENDIxOzExMTEgMTE2QSAxMUMwO0Q0MjE7MTExMSAxMTZBIDExQzA7ICMgKO2QoTsg7ZChOyDhhJHhharhh4A7IO2QoTsg4YSR4YWq4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBQV0FUCitENDIyO0Q0MjI7MTExMSAxMTZBIDExQzE7RDQyMjsxMTExIDExNkEgMTFDMTsgIyAo7ZCiOyDtkKI7IOGEkeGFquGHgTsg7ZCiOyDhhJHhharhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFBXQVAKK0Q0MjM7RDQyMzsxMTExIDExNkEgMTFDMjtENDIzOzExMTEgMTE2QSAxMUMyOyAjICjtkKM7IO2Qozsg4YSR4YWq4YeCOyDtkKM7IOGEkeGFquGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgUFdBSAorRDQyNDtENDI0OzExMTEgMTE2QjtENDI0OzExMTEgMTE2QjsgIyAo7ZCkOyDtkKQ7IOGEkeGFqzsg7ZCkOyDhhJHhhas7ICkgSEFOR1VMIFNZTExBQkxFIFBXQUUKK0Q0MjU7RDQyNTsxMTExIDExNkIgMTFBODtENDI1OzExMTEgMTE2QiAxMUE4OyAjICjtkKU7IO2QpTsg4YSR4YWr4YaoOyDtkKU7IOGEkeGFq+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgUFdBRUcKK0Q0MjY7RDQyNjsxMTExIDExNkIgMTFBOTtENDI2OzExMTEgMTE2QiAxMUE5OyAjICjtkKY7IO2Qpjsg4YSR4YWr4YapOyDtkKY7IOGEkeGFq+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgUFdBRUdHCitENDI3O0Q0Mjc7MTExMSAxMTZCIDExQUE7RDQyNzsxMTExIDExNkIgMTFBQTsgIyAo7ZCnOyDtkKc7IOGEkeGFq+GGqjsg7ZCnOyDhhJHhhavhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFBXQUVHUworRDQyODtENDI4OzExMTEgMTE2QiAxMUFCO0Q0Mjg7MTExMSAxMTZCIDExQUI7ICMgKO2QqDsg7ZCoOyDhhJHhhavhhqs7IO2QqDsg4YSR4YWr4YarOyApIEhBTkdVTCBTWUxMQUJMRSBQV0FFTgorRDQyOTtENDI5OzExMTEgMTE2QiAxMUFDO0Q0Mjk7MTExMSAxMTZCIDExQUM7ICMgKO2QqTsg7ZCpOyDhhJHhhavhhqw7IO2QqTsg4YSR4YWr4YasOyApIEhBTkdVTCBTWUxMQUJMRSBQV0FFTkoKK0Q0MkE7RDQyQTsxMTExIDExNkIgMTFBRDtENDJBOzExMTEgMTE2QiAxMUFEOyAjICjtkKo7IO2Qqjsg4YSR4YWr4YatOyDtkKo7IOGEkeGFq+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgUFdBRU5ICitENDJCO0Q0MkI7MTExMSAxMTZCIDExQUU7RDQyQjsxMTExIDExNkIgMTFBRTsgIyAo7ZCrOyDtkKs7IOGEkeGFq+GGrjsg7ZCrOyDhhJHhhavhhq47ICkgSEFOR1VMIFNZTExBQkxFIFBXQUVECitENDJDO0Q0MkM7MTExMSAxMTZCIDExQUY7RDQyQzsxMTExIDExNkIgMTFBRjsgIyAo7ZCsOyDtkKw7IOGEkeGFq+GGrzsg7ZCsOyDhhJHhhavhhq87ICkgSEFOR1VMIFNZTExBQkxFIFBXQUVMCitENDJEO0Q0MkQ7MTExMSAxMTZCIDExQjA7RDQyRDsxMTExIDExNkIgMTFCMDsgIyAo7ZCtOyDtkK07IOGEkeGFq+GGsDsg7ZCtOyDhhJHhhavhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFBXQUVMRworRDQyRTtENDJFOzExMTEgMTE2QiAxMUIxO0Q0MkU7MTExMSAxMTZCIDExQjE7ICMgKO2Qrjsg7ZCuOyDhhJHhhavhhrE7IO2Qrjsg4YSR4YWr4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBQV0FFTE0KK0Q0MkY7RDQyRjsxMTExIDExNkIgMTFCMjtENDJGOzExMTEgMTE2QiAxMUIyOyAjICjtkK87IO2Qrzsg4YSR4YWr4YayOyDtkK87IOGEkeGFq+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgUFdBRUxCCitENDMwO0Q0MzA7MTExMSAxMTZCIDExQjM7RDQzMDsxMTExIDExNkIgMTFCMzsgIyAo7ZCwOyDtkLA7IOGEkeGFq+GGszsg7ZCwOyDhhJHhhavhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFBXQUVMUworRDQzMTtENDMxOzExMTEgMTE2QiAxMUI0O0Q0MzE7MTExMSAxMTZCIDExQjQ7ICMgKO2QsTsg7ZCxOyDhhJHhhavhhrQ7IO2QsTsg4YSR4YWr4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBQV0FFTFQKK0Q0MzI7RDQzMjsxMTExIDExNkIgMTFCNTtENDMyOzExMTEgMTE2QiAxMUI1OyAjICjtkLI7IO2Qsjsg4YSR4YWr4Ya1OyDtkLI7IOGEkeGFq+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgUFdBRUxQCitENDMzO0Q0MzM7MTExMSAxMTZCIDExQjY7RDQzMzsxMTExIDExNkIgMTFCNjsgIyAo7ZCzOyDtkLM7IOGEkeGFq+GGtjsg7ZCzOyDhhJHhhavhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFBXQUVMSAorRDQzNDtENDM0OzExMTEgMTE2QiAxMUI3O0Q0MzQ7MTExMSAxMTZCIDExQjc7ICMgKO2QtDsg7ZC0OyDhhJHhhavhhrc7IO2QtDsg4YSR4YWr4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBQV0FFTQorRDQzNTtENDM1OzExMTEgMTE2QiAxMUI4O0Q0MzU7MTExMSAxMTZCIDExQjg7ICMgKO2QtTsg7ZC1OyDhhJHhhavhhrg7IO2QtTsg4YSR4YWr4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBQV0FFQgorRDQzNjtENDM2OzExMTEgMTE2QiAxMUI5O0Q0MzY7MTExMSAxMTZCIDExQjk7ICMgKO2Qtjsg7ZC2OyDhhJHhhavhhrk7IO2Qtjsg4YSR4YWr4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBQV0FFQlMKK0Q0Mzc7RDQzNzsxMTExIDExNkIgMTFCQTtENDM3OzExMTEgMTE2QiAxMUJBOyAjICjtkLc7IO2Qtzsg4YSR4YWr4Ya6OyDtkLc7IOGEkeGFq+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgUFdBRVMKK0Q0Mzg7RDQzODsxMTExIDExNkIgMTFCQjtENDM4OzExMTEgMTE2QiAxMUJCOyAjICjtkLg7IO2QuDsg4YSR4YWr4Ya7OyDtkLg7IOGEkeGFq+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgUFdBRVNTCitENDM5O0Q0Mzk7MTExMSAxMTZCIDExQkM7RDQzOTsxMTExIDExNkIgMTFCQzsgIyAo7ZC5OyDtkLk7IOGEkeGFq+GGvDsg7ZC5OyDhhJHhhavhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFBXQUVORworRDQzQTtENDNBOzExMTEgMTE2QiAxMUJEO0Q0M0E7MTExMSAxMTZCIDExQkQ7ICMgKO2Qujsg7ZC6OyDhhJHhhavhhr07IO2Qujsg4YSR4YWr4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBQV0FFSgorRDQzQjtENDNCOzExMTEgMTE2QiAxMUJFO0Q0M0I7MTExMSAxMTZCIDExQkU7ICMgKO2Quzsg7ZC7OyDhhJHhhavhhr47IO2Quzsg4YSR4YWr4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBQV0FFQworRDQzQztENDNDOzExMTEgMTE2QiAxMUJGO0Q0M0M7MTExMSAxMTZCIDExQkY7ICMgKO2QvDsg7ZC8OyDhhJHhhavhhr87IO2QvDsg4YSR4YWr4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBQV0FFSworRDQzRDtENDNEOzExMTEgMTE2QiAxMUMwO0Q0M0Q7MTExMSAxMTZCIDExQzA7ICMgKO2QvTsg7ZC9OyDhhJHhhavhh4A7IO2QvTsg4YSR4YWr4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBQV0FFVAorRDQzRTtENDNFOzExMTEgMTE2QiAxMUMxO0Q0M0U7MTExMSAxMTZCIDExQzE7ICMgKO2Qvjsg7ZC+OyDhhJHhhavhh4E7IO2Qvjsg4YSR4YWr4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBQV0FFUAorRDQzRjtENDNGOzExMTEgMTE2QiAxMUMyO0Q0M0Y7MTExMSAxMTZCIDExQzI7ICMgKO2Qvzsg7ZC/OyDhhJHhhavhh4I7IO2Qvzsg4YSR4YWr4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBQV0FFSAorRDQ0MDtENDQwOzExMTEgMTE2QztENDQwOzExMTEgMTE2QzsgIyAo7ZGAOyDtkYA7IOGEkeGFrDsg7ZGAOyDhhJHhhaw7ICkgSEFOR1VMIFNZTExBQkxFIFBPRQorRDQ0MTtENDQxOzExMTEgMTE2QyAxMUE4O0Q0NDE7MTExMSAxMTZDIDExQTg7ICMgKO2RgTsg7ZGBOyDhhJHhhazhhqg7IO2RgTsg4YSR4YWs4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBQT0VHCitENDQyO0Q0NDI7MTExMSAxMTZDIDExQTk7RDQ0MjsxMTExIDExNkMgMTFBOTsgIyAo7ZGCOyDtkYI7IOGEkeGFrOGGqTsg7ZGCOyDhhJHhhazhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFBPRUdHCitENDQzO0Q0NDM7MTExMSAxMTZDIDExQUE7RDQ0MzsxMTExIDExNkMgMTFBQTsgIyAo7ZGDOyDtkYM7IOGEkeGFrOGGqjsg7ZGDOyDhhJHhhazhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFBPRUdTCitENDQ0O0Q0NDQ7MTExMSAxMTZDIDExQUI7RDQ0NDsxMTExIDExNkMgMTFBQjsgIyAo7ZGEOyDtkYQ7IOGEkeGFrOGGqzsg7ZGEOyDhhJHhhazhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFBPRU4KK0Q0NDU7RDQ0NTsxMTExIDExNkMgMTFBQztENDQ1OzExMTEgMTE2QyAxMUFDOyAjICjtkYU7IO2RhTsg4YSR4YWs4YasOyDtkYU7IOGEkeGFrOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgUE9FTkoKK0Q0NDY7RDQ0NjsxMTExIDExNkMgMTFBRDtENDQ2OzExMTEgMTE2QyAxMUFEOyAjICjtkYY7IO2Rhjsg4YSR4YWs4YatOyDtkYY7IOGEkeGFrOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgUE9FTkgKK0Q0NDc7RDQ0NzsxMTExIDExNkMgMTFBRTtENDQ3OzExMTEgMTE2QyAxMUFFOyAjICjtkYc7IO2Rhzsg4YSR4YWs4YauOyDtkYc7IOGEkeGFrOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgUE9FRAorRDQ0ODtENDQ4OzExMTEgMTE2QyAxMUFGO0Q0NDg7MTExMSAxMTZDIDExQUY7ICMgKO2RiDsg7ZGIOyDhhJHhhazhhq87IO2RiDsg4YSR4YWs4YavOyApIEhBTkdVTCBTWUxMQUJMRSBQT0VMCitENDQ5O0Q0NDk7MTExMSAxMTZDIDExQjA7RDQ0OTsxMTExIDExNkMgMTFCMDsgIyAo7ZGJOyDtkYk7IOGEkeGFrOGGsDsg7ZGJOyDhhJHhhazhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFBPRUxHCitENDRBO0Q0NEE7MTExMSAxMTZDIDExQjE7RDQ0QTsxMTExIDExNkMgMTFCMTsgIyAo7ZGKOyDtkYo7IOGEkeGFrOGGsTsg7ZGKOyDhhJHhhazhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFBPRUxNCitENDRCO0Q0NEI7MTExMSAxMTZDIDExQjI7RDQ0QjsxMTExIDExNkMgMTFCMjsgIyAo7ZGLOyDtkYs7IOGEkeGFrOGGsjsg7ZGLOyDhhJHhhazhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFBPRUxCCitENDRDO0Q0NEM7MTExMSAxMTZDIDExQjM7RDQ0QzsxMTExIDExNkMgMTFCMzsgIyAo7ZGMOyDtkYw7IOGEkeGFrOGGszsg7ZGMOyDhhJHhhazhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFBPRUxTCitENDREO0Q0NEQ7MTExMSAxMTZDIDExQjQ7RDQ0RDsxMTExIDExNkMgMTFCNDsgIyAo7ZGNOyDtkY07IOGEkeGFrOGGtDsg7ZGNOyDhhJHhhazhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFBPRUxUCitENDRFO0Q0NEU7MTExMSAxMTZDIDExQjU7RDQ0RTsxMTExIDExNkMgMTFCNTsgIyAo7ZGOOyDtkY47IOGEkeGFrOGGtTsg7ZGOOyDhhJHhhazhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFBPRUxQCitENDRGO0Q0NEY7MTExMSAxMTZDIDExQjY7RDQ0RjsxMTExIDExNkMgMTFCNjsgIyAo7ZGPOyDtkY87IOGEkeGFrOGGtjsg7ZGPOyDhhJHhhazhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFBPRUxICitENDUwO0Q0NTA7MTExMSAxMTZDIDExQjc7RDQ1MDsxMTExIDExNkMgMTFCNzsgIyAo7ZGQOyDtkZA7IOGEkeGFrOGGtzsg7ZGQOyDhhJHhhazhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFBPRU0KK0Q0NTE7RDQ1MTsxMTExIDExNkMgMTFCODtENDUxOzExMTEgMTE2QyAxMUI4OyAjICjtkZE7IO2RkTsg4YSR4YWs4Ya4OyDtkZE7IOGEkeGFrOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgUE9FQgorRDQ1MjtENDUyOzExMTEgMTE2QyAxMUI5O0Q0NTI7MTExMSAxMTZDIDExQjk7ICMgKO2Rkjsg7ZGSOyDhhJHhhazhhrk7IO2Rkjsg4YSR4YWs4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBQT0VCUworRDQ1MztENDUzOzExMTEgMTE2QyAxMUJBO0Q0NTM7MTExMSAxMTZDIDExQkE7ICMgKO2Rkzsg7ZGTOyDhhJHhhazhhro7IO2Rkzsg4YSR4YWs4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBQT0VTCitENDU0O0Q0NTQ7MTExMSAxMTZDIDExQkI7RDQ1NDsxMTExIDExNkMgMTFCQjsgIyAo7ZGUOyDtkZQ7IOGEkeGFrOGGuzsg7ZGUOyDhhJHhhazhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFBPRVNTCitENDU1O0Q0NTU7MTExMSAxMTZDIDExQkM7RDQ1NTsxMTExIDExNkMgMTFCQzsgIyAo7ZGVOyDtkZU7IOGEkeGFrOGGvDsg7ZGVOyDhhJHhhazhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFBPRU5HCitENDU2O0Q0NTY7MTExMSAxMTZDIDExQkQ7RDQ1NjsxMTExIDExNkMgMTFCRDsgIyAo7ZGWOyDtkZY7IOGEkeGFrOGGvTsg7ZGWOyDhhJHhhazhhr07ICkgSEFOR1VMIFNZTExBQkxFIFBPRUoKK0Q0NTc7RDQ1NzsxMTExIDExNkMgMTFCRTtENDU3OzExMTEgMTE2QyAxMUJFOyAjICjtkZc7IO2Rlzsg4YSR4YWs4Ya+OyDtkZc7IOGEkeGFrOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgUE9FQworRDQ1ODtENDU4OzExMTEgMTE2QyAxMUJGO0Q0NTg7MTExMSAxMTZDIDExQkY7ICMgKO2RmDsg7ZGYOyDhhJHhhazhhr87IO2RmDsg4YSR4YWs4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBQT0VLCitENDU5O0Q0NTk7MTExMSAxMTZDIDExQzA7RDQ1OTsxMTExIDExNkMgMTFDMDsgIyAo7ZGZOyDtkZk7IOGEkeGFrOGHgDsg7ZGZOyDhhJHhhazhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFBPRVQKK0Q0NUE7RDQ1QTsxMTExIDExNkMgMTFDMTtENDVBOzExMTEgMTE2QyAxMUMxOyAjICjtkZo7IO2Rmjsg4YSR4YWs4YeBOyDtkZo7IOGEkeGFrOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgUE9FUAorRDQ1QjtENDVCOzExMTEgMTE2QyAxMUMyO0Q0NUI7MTExMSAxMTZDIDExQzI7ICMgKO2Rmzsg7ZGbOyDhhJHhhazhh4I7IO2Rmzsg4YSR4YWs4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBQT0VICitENDVDO0Q0NUM7MTExMSAxMTZEO0Q0NUM7MTExMSAxMTZEOyAjICjtkZw7IO2RnDsg4YSR4YWtOyDtkZw7IOGEkeGFrTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlPCitENDVEO0Q0NUQ7MTExMSAxMTZEIDExQTg7RDQ1RDsxMTExIDExNkQgMTFBODsgIyAo7ZGdOyDtkZ07IOGEkeGFreGGqDsg7ZGdOyDhhJHhha3hhqg7ICkgSEFOR1VMIFNZTExBQkxFIFBZT0cKK0Q0NUU7RDQ1RTsxMTExIDExNkQgMTFBOTtENDVFOzExMTEgMTE2RCAxMUE5OyAjICjtkZ47IO2Rnjsg4YSR4YWt4YapOyDtkZ47IOGEkeGFreGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlPR0cKK0Q0NUY7RDQ1RjsxMTExIDExNkQgMTFBQTtENDVGOzExMTEgMTE2RCAxMUFBOyAjICjtkZ87IO2Rnzsg4YSR4YWt4YaqOyDtkZ87IOGEkeGFreGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgUFlPR1MKK0Q0NjA7RDQ2MDsxMTExIDExNkQgMTFBQjtENDYwOzExMTEgMTE2RCAxMUFCOyAjICjtkaA7IO2RoDsg4YSR4YWt4YarOyDtkaA7IOGEkeGFreGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgUFlPTgorRDQ2MTtENDYxOzExMTEgMTE2RCAxMUFDO0Q0NjE7MTExMSAxMTZEIDExQUM7ICMgKO2RoTsg7ZGhOyDhhJHhha3hhqw7IO2RoTsg4YSR4YWt4YasOyApIEhBTkdVTCBTWUxMQUJMRSBQWU9OSgorRDQ2MjtENDYyOzExMTEgMTE2RCAxMUFEO0Q0NjI7MTExMSAxMTZEIDExQUQ7ICMgKO2Rojsg7ZGiOyDhhJHhha3hhq07IO2Rojsg4YSR4YWt4YatOyApIEhBTkdVTCBTWUxMQUJMRSBQWU9OSAorRDQ2MztENDYzOzExMTEgMTE2RCAxMUFFO0Q0NjM7MTExMSAxMTZEIDExQUU7ICMgKO2Rozsg7ZGjOyDhhJHhha3hhq47IO2Rozsg4YSR4YWt4YauOyApIEhBTkdVTCBTWUxMQUJMRSBQWU9ECitENDY0O0Q0NjQ7MTExMSAxMTZEIDExQUY7RDQ2NDsxMTExIDExNkQgMTFBRjsgIyAo7ZGkOyDtkaQ7IOGEkeGFreGGrzsg7ZGkOyDhhJHhha3hhq87ICkgSEFOR1VMIFNZTExBQkxFIFBZT0wKK0Q0NjU7RDQ2NTsxMTExIDExNkQgMTFCMDtENDY1OzExMTEgMTE2RCAxMUIwOyAjICjtkaU7IO2RpTsg4YSR4YWt4YawOyDtkaU7IOGEkeGFreGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgUFlPTEcKK0Q0NjY7RDQ2NjsxMTExIDExNkQgMTFCMTtENDY2OzExMTEgMTE2RCAxMUIxOyAjICjtkaY7IO2Rpjsg4YSR4YWt4YaxOyDtkaY7IOGEkeGFreGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlPTE0KK0Q0Njc7RDQ2NzsxMTExIDExNkQgMTFCMjtENDY3OzExMTEgMTE2RCAxMUIyOyAjICjtkac7IO2Rpzsg4YSR4YWt4YayOyDtkac7IOGEkeGFreGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgUFlPTEIKK0Q0Njg7RDQ2ODsxMTExIDExNkQgMTFCMztENDY4OzExMTEgMTE2RCAxMUIzOyAjICjtkag7IO2RqDsg4YSR4YWt4YazOyDtkag7IOGEkeGFreGGszsgKSBIQU5HVUwgU1lMTEFCTEUgUFlPTFMKK0Q0Njk7RDQ2OTsxMTExIDExNkQgMTFCNDtENDY5OzExMTEgMTE2RCAxMUI0OyAjICjtkak7IO2RqTsg4YSR4YWt4Ya0OyDtkak7IOGEkeGFreGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgUFlPTFQKK0Q0NkE7RDQ2QTsxMTExIDExNkQgMTFCNTtENDZBOzExMTEgMTE2RCAxMUI1OyAjICjtkao7IO2Rqjsg4YSR4YWt4Ya1OyDtkao7IOGEkeGFreGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlPTFAKK0Q0NkI7RDQ2QjsxMTExIDExNkQgMTFCNjtENDZCOzExMTEgMTE2RCAxMUI2OyAjICjtkas7IO2Rqzsg4YSR4YWt4Ya2OyDtkas7IOGEkeGFreGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgUFlPTEgKK0Q0NkM7RDQ2QzsxMTExIDExNkQgMTFCNztENDZDOzExMTEgMTE2RCAxMUI3OyAjICjtkaw7IO2RrDsg4YSR4YWt4Ya3OyDtkaw7IOGEkeGFreGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgUFlPTQorRDQ2RDtENDZEOzExMTEgMTE2RCAxMUI4O0Q0NkQ7MTExMSAxMTZEIDExQjg7ICMgKO2RrTsg7ZGtOyDhhJHhha3hhrg7IO2RrTsg4YSR4YWt4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBQWU9CCitENDZFO0Q0NkU7MTExMSAxMTZEIDExQjk7RDQ2RTsxMTExIDExNkQgMTFCOTsgIyAo7ZGuOyDtka47IOGEkeGFreGGuTsg7ZGuOyDhhJHhha3hhrk7ICkgSEFOR1VMIFNZTExBQkxFIFBZT0JTCitENDZGO0Q0NkY7MTExMSAxMTZEIDExQkE7RDQ2RjsxMTExIDExNkQgMTFCQTsgIyAo7ZGvOyDtka87IOGEkeGFreGGujsg7ZGvOyDhhJHhha3hhro7ICkgSEFOR1VMIFNZTExBQkxFIFBZT1MKK0Q0NzA7RDQ3MDsxMTExIDExNkQgMTFCQjtENDcwOzExMTEgMTE2RCAxMUJCOyAjICjtkbA7IO2RsDsg4YSR4YWt4Ya7OyDtkbA7IOGEkeGFreGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgUFlPU1MKK0Q0NzE7RDQ3MTsxMTExIDExNkQgMTFCQztENDcxOzExMTEgMTE2RCAxMUJDOyAjICjtkbE7IO2RsTsg4YSR4YWt4Ya8OyDtkbE7IOGEkeGFreGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgUFlPTkcKK0Q0NzI7RDQ3MjsxMTExIDExNkQgMTFCRDtENDcyOzExMTEgMTE2RCAxMUJEOyAjICjtkbI7IO2Rsjsg4YSR4YWt4Ya9OyDtkbI7IOGEkeGFreGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlPSgorRDQ3MztENDczOzExMTEgMTE2RCAxMUJFO0Q0NzM7MTExMSAxMTZEIDExQkU7ICMgKO2Rszsg7ZGzOyDhhJHhha3hhr47IO2Rszsg4YSR4YWt4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBQWU9DCitENDc0O0Q0NzQ7MTExMSAxMTZEIDExQkY7RDQ3NDsxMTExIDExNkQgMTFCRjsgIyAo7ZG0OyDtkbQ7IOGEkeGFreGGvzsg7ZG0OyDhhJHhha3hhr87ICkgSEFOR1VMIFNZTExBQkxFIFBZT0sKK0Q0NzU7RDQ3NTsxMTExIDExNkQgMTFDMDtENDc1OzExMTEgMTE2RCAxMUMwOyAjICjtkbU7IO2RtTsg4YSR4YWt4YeAOyDtkbU7IOGEkeGFreGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgUFlPVAorRDQ3NjtENDc2OzExMTEgMTE2RCAxMUMxO0Q0NzY7MTExMSAxMTZEIDExQzE7ICMgKO2Rtjsg7ZG2OyDhhJHhha3hh4E7IO2Rtjsg4YSR4YWt4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBQWU9QCitENDc3O0Q0Nzc7MTExMSAxMTZEIDExQzI7RDQ3NzsxMTExIDExNkQgMTFDMjsgIyAo7ZG3OyDtkbc7IOGEkeGFreGHgjsg7ZG3OyDhhJHhha3hh4I7ICkgSEFOR1VMIFNZTExBQkxFIFBZT0gKK0Q0Nzg7RDQ3ODsxMTExIDExNkU7RDQ3ODsxMTExIDExNkU7ICMgKO2RuDsg7ZG4OyDhhJHhha47IO2RuDsg4YSR4YWuOyApIEhBTkdVTCBTWUxMQUJMRSBQVQorRDQ3OTtENDc5OzExMTEgMTE2RSAxMUE4O0Q0Nzk7MTExMSAxMTZFIDExQTg7ICMgKO2RuTsg7ZG5OyDhhJHhha7hhqg7IO2RuTsg4YSR4YWu4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBQVUcKK0Q0N0E7RDQ3QTsxMTExIDExNkUgMTFBOTtENDdBOzExMTEgMTE2RSAxMUE5OyAjICjtkbo7IO2Rujsg4YSR4YWu4YapOyDtkbo7IOGEkeGFruGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgUFVHRworRDQ3QjtENDdCOzExMTEgMTE2RSAxMUFBO0Q0N0I7MTExMSAxMTZFIDExQUE7ICMgKO2Ruzsg7ZG7OyDhhJHhha7hhqo7IO2Ruzsg4YSR4YWu4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBQVUdTCitENDdDO0Q0N0M7MTExMSAxMTZFIDExQUI7RDQ3QzsxMTExIDExNkUgMTFBQjsgIyAo7ZG8OyDtkbw7IOGEkeGFruGGqzsg7ZG8OyDhhJHhha7hhqs7ICkgSEFOR1VMIFNZTExBQkxFIFBVTgorRDQ3RDtENDdEOzExMTEgMTE2RSAxMUFDO0Q0N0Q7MTExMSAxMTZFIDExQUM7ICMgKO2RvTsg7ZG9OyDhhJHhha7hhqw7IO2RvTsg4YSR4YWu4YasOyApIEhBTkdVTCBTWUxMQUJMRSBQVU5KCitENDdFO0Q0N0U7MTExMSAxMTZFIDExQUQ7RDQ3RTsxMTExIDExNkUgMTFBRDsgIyAo7ZG+OyDtkb47IOGEkeGFruGGrTsg7ZG+OyDhhJHhha7hhq07ICkgSEFOR1VMIFNZTExBQkxFIFBVTkgKK0Q0N0Y7RDQ3RjsxMTExIDExNkUgMTFBRTtENDdGOzExMTEgMTE2RSAxMUFFOyAjICjtkb87IO2Rvzsg4YSR4YWu4YauOyDtkb87IOGEkeGFruGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgUFVECitENDgwO0Q0ODA7MTExMSAxMTZFIDExQUY7RDQ4MDsxMTExIDExNkUgMTFBRjsgIyAo7ZKAOyDtkoA7IOGEkeGFruGGrzsg7ZKAOyDhhJHhha7hhq87ICkgSEFOR1VMIFNZTExBQkxFIFBVTAorRDQ4MTtENDgxOzExMTEgMTE2RSAxMUIwO0Q0ODE7MTExMSAxMTZFIDExQjA7ICMgKO2SgTsg7ZKBOyDhhJHhha7hhrA7IO2SgTsg4YSR4YWu4YawOyApIEhBTkdVTCBTWUxMQUJMRSBQVUxHCitENDgyO0Q0ODI7MTExMSAxMTZFIDExQjE7RDQ4MjsxMTExIDExNkUgMTFCMTsgIyAo7ZKCOyDtkoI7IOGEkeGFruGGsTsg7ZKCOyDhhJHhha7hhrE7ICkgSEFOR1VMIFNZTExBQkxFIFBVTE0KK0Q0ODM7RDQ4MzsxMTExIDExNkUgMTFCMjtENDgzOzExMTEgMTE2RSAxMUIyOyAjICjtkoM7IO2Sgzsg4YSR4YWu4YayOyDtkoM7IOGEkeGFruGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgUFVMQgorRDQ4NDtENDg0OzExMTEgMTE2RSAxMUIzO0Q0ODQ7MTExMSAxMTZFIDExQjM7ICMgKO2ShDsg7ZKEOyDhhJHhha7hhrM7IO2ShDsg4YSR4YWu4YazOyApIEhBTkdVTCBTWUxMQUJMRSBQVUxTCitENDg1O0Q0ODU7MTExMSAxMTZFIDExQjQ7RDQ4NTsxMTExIDExNkUgMTFCNDsgIyAo7ZKFOyDtkoU7IOGEkeGFruGGtDsg7ZKFOyDhhJHhha7hhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFBVTFQKK0Q0ODY7RDQ4NjsxMTExIDExNkUgMTFCNTtENDg2OzExMTEgMTE2RSAxMUI1OyAjICjtkoY7IO2Shjsg4YSR4YWu4Ya1OyDtkoY7IOGEkeGFruGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgUFVMUAorRDQ4NztENDg3OzExMTEgMTE2RSAxMUI2O0Q0ODc7MTExMSAxMTZFIDExQjY7ICMgKO2Shzsg7ZKHOyDhhJHhha7hhrY7IO2Shzsg4YSR4YWu4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBQVUxICitENDg4O0Q0ODg7MTExMSAxMTZFIDExQjc7RDQ4ODsxMTExIDExNkUgMTFCNzsgIyAo7ZKIOyDtkog7IOGEkeGFruGGtzsg7ZKIOyDhhJHhha7hhrc7ICkgSEFOR1VMIFNZTExBQkxFIFBVTQorRDQ4OTtENDg5OzExMTEgMTE2RSAxMUI4O0Q0ODk7MTExMSAxMTZFIDExQjg7ICMgKO2SiTsg7ZKJOyDhhJHhha7hhrg7IO2SiTsg4YSR4YWu4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBQVUIKK0Q0OEE7RDQ4QTsxMTExIDExNkUgMTFCOTtENDhBOzExMTEgMTE2RSAxMUI5OyAjICjtkoo7IO2Sijsg4YSR4YWu4Ya5OyDtkoo7IOGEkeGFruGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgUFVCUworRDQ4QjtENDhCOzExMTEgMTE2RSAxMUJBO0Q0OEI7MTExMSAxMTZFIDExQkE7ICMgKO2Sizsg7ZKLOyDhhJHhha7hhro7IO2Sizsg4YSR4YWu4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBQVVMKK0Q0OEM7RDQ4QzsxMTExIDExNkUgMTFCQjtENDhDOzExMTEgMTE2RSAxMUJCOyAjICjtkow7IO2SjDsg4YSR4YWu4Ya7OyDtkow7IOGEkeGFruGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgUFVTUworRDQ4RDtENDhEOzExMTEgMTE2RSAxMUJDO0Q0OEQ7MTExMSAxMTZFIDExQkM7ICMgKO2SjTsg7ZKNOyDhhJHhha7hhrw7IO2SjTsg4YSR4YWu4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBQVU5HCitENDhFO0Q0OEU7MTExMSAxMTZFIDExQkQ7RDQ4RTsxMTExIDExNkUgMTFCRDsgIyAo7ZKOOyDtko47IOGEkeGFruGGvTsg7ZKOOyDhhJHhha7hhr07ICkgSEFOR1VMIFNZTExBQkxFIFBVSgorRDQ4RjtENDhGOzExMTEgMTE2RSAxMUJFO0Q0OEY7MTExMSAxMTZFIDExQkU7ICMgKO2Sjzsg7ZKPOyDhhJHhha7hhr47IO2Sjzsg4YSR4YWu4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBQVUMKK0Q0OTA7RDQ5MDsxMTExIDExNkUgMTFCRjtENDkwOzExMTEgMTE2RSAxMUJGOyAjICjtkpA7IO2SkDsg4YSR4YWu4Ya/OyDtkpA7IOGEkeGFruGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgUFVLCitENDkxO0Q0OTE7MTExMSAxMTZFIDExQzA7RDQ5MTsxMTExIDExNkUgMTFDMDsgIyAo7ZKROyDtkpE7IOGEkeGFruGHgDsg7ZKROyDhhJHhha7hh4A7ICkgSEFOR1VMIFNZTExBQkxFIFBVVAorRDQ5MjtENDkyOzExMTEgMTE2RSAxMUMxO0Q0OTI7MTExMSAxMTZFIDExQzE7ICMgKO2Skjsg7ZKSOyDhhJHhha7hh4E7IO2Skjsg4YSR4YWu4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBQVVAKK0Q0OTM7RDQ5MzsxMTExIDExNkUgMTFDMjtENDkzOzExMTEgMTE2RSAxMUMyOyAjICjtkpM7IO2Skzsg4YSR4YWu4YeCOyDtkpM7IOGEkeGFruGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgUFVICitENDk0O0Q0OTQ7MTExMSAxMTZGO0Q0OTQ7MTExMSAxMTZGOyAjICjtkpQ7IO2SlDsg4YSR4YWvOyDtkpQ7IOGEkeGFrzsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFTworRDQ5NTtENDk1OzExMTEgMTE2RiAxMUE4O0Q0OTU7MTExMSAxMTZGIDExQTg7ICMgKO2SlTsg7ZKVOyDhhJHhha/hhqg7IO2SlTsg4YSR4YWv4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBQV0VPRworRDQ5NjtENDk2OzExMTEgMTE2RiAxMUE5O0Q0OTY7MTExMSAxMTZGIDExQTk7ICMgKO2Sljsg7ZKWOyDhhJHhha/hhqk7IO2Sljsg4YSR4YWv4YapOyApIEhBTkdVTCBTWUxMQUJMRSBQV0VPR0cKK0Q0OTc7RDQ5NzsxMTExIDExNkYgMTFBQTtENDk3OzExMTEgMTE2RiAxMUFBOyAjICjtkpc7IO2Slzsg4YSR4YWv4YaqOyDtkpc7IOGEkeGFr+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFT0dTCitENDk4O0Q0OTg7MTExMSAxMTZGIDExQUI7RDQ5ODsxMTExIDExNkYgMTFBQjsgIyAo7ZKYOyDtkpg7IOGEkeGFr+GGqzsg7ZKYOyDhhJHhha/hhqs7ICkgSEFOR1VMIFNZTExBQkxFIFBXRU9OCitENDk5O0Q0OTk7MTExMSAxMTZGIDExQUM7RDQ5OTsxMTExIDExNkYgMTFBQzsgIyAo7ZKZOyDtkpk7IOGEkeGFr+GGrDsg7ZKZOyDhhJHhha/hhqw7ICkgSEFOR1VMIFNZTExBQkxFIFBXRU9OSgorRDQ5QTtENDlBOzExMTEgMTE2RiAxMUFEO0Q0OUE7MTExMSAxMTZGIDExQUQ7ICMgKO2Smjsg7ZKaOyDhhJHhha/hhq07IO2Smjsg4YSR4YWv4YatOyApIEhBTkdVTCBTWUxMQUJMRSBQV0VPTkgKK0Q0OUI7RDQ5QjsxMTExIDExNkYgMTFBRTtENDlCOzExMTEgMTE2RiAxMUFFOyAjICjtkps7IO2Smzsg4YSR4YWv4YauOyDtkps7IOGEkeGFr+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFT0QKK0Q0OUM7RDQ5QzsxMTExIDExNkYgMTFBRjtENDlDOzExMTEgMTE2RiAxMUFGOyAjICjtkpw7IO2SnDsg4YSR4YWv4YavOyDtkpw7IOGEkeGFr+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFT0wKK0Q0OUQ7RDQ5RDsxMTExIDExNkYgMTFCMDtENDlEOzExMTEgMTE2RiAxMUIwOyAjICjtkp07IO2SnTsg4YSR4YWv4YawOyDtkp07IOGEkeGFr+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFT0xHCitENDlFO0Q0OUU7MTExMSAxMTZGIDExQjE7RDQ5RTsxMTExIDExNkYgMTFCMTsgIyAo7ZKeOyDtkp47IOGEkeGFr+GGsTsg7ZKeOyDhhJHhha/hhrE7ICkgSEFOR1VMIFNZTExBQkxFIFBXRU9MTQorRDQ5RjtENDlGOzExMTEgMTE2RiAxMUIyO0Q0OUY7MTExMSAxMTZGIDExQjI7ICMgKO2Snzsg7ZKfOyDhhJHhha/hhrI7IO2Snzsg4YSR4YWv4YayOyApIEhBTkdVTCBTWUxMQUJMRSBQV0VPTEIKK0Q0QTA7RDRBMDsxMTExIDExNkYgMTFCMztENEEwOzExMTEgMTE2RiAxMUIzOyAjICjtkqA7IO2SoDsg4YSR4YWv4YazOyDtkqA7IOGEkeGFr+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFT0xTCitENEExO0Q0QTE7MTExMSAxMTZGIDExQjQ7RDRBMTsxMTExIDExNkYgMTFCNDsgIyAo7ZKhOyDtkqE7IOGEkeGFr+GGtDsg7ZKhOyDhhJHhha/hhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFBXRU9MVAorRDRBMjtENEEyOzExMTEgMTE2RiAxMUI1O0Q0QTI7MTExMSAxMTZGIDExQjU7ICMgKO2Sojsg7ZKiOyDhhJHhha/hhrU7IO2Sojsg4YSR4YWv4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBQV0VPTFAKK0Q0QTM7RDRBMzsxMTExIDExNkYgMTFCNjtENEEzOzExMTEgMTE2RiAxMUI2OyAjICjtkqM7IO2Sozsg4YSR4YWv4Ya2OyDtkqM7IOGEkeGFr+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFT0xICitENEE0O0Q0QTQ7MTExMSAxMTZGIDExQjc7RDRBNDsxMTExIDExNkYgMTFCNzsgIyAo7ZKkOyDtkqQ7IOGEkeGFr+GGtzsg7ZKkOyDhhJHhha/hhrc7ICkgSEFOR1VMIFNZTExBQkxFIFBXRU9NCitENEE1O0Q0QTU7MTExMSAxMTZGIDExQjg7RDRBNTsxMTExIDExNkYgMTFCODsgIyAo7ZKlOyDtkqU7IOGEkeGFr+GGuDsg7ZKlOyDhhJHhha/hhrg7ICkgSEFOR1VMIFNZTExBQkxFIFBXRU9CCitENEE2O0Q0QTY7MTExMSAxMTZGIDExQjk7RDRBNjsxMTExIDExNkYgMTFCOTsgIyAo7ZKmOyDtkqY7IOGEkeGFr+GGuTsg7ZKmOyDhhJHhha/hhrk7ICkgSEFOR1VMIFNZTExBQkxFIFBXRU9CUworRDRBNztENEE3OzExMTEgMTE2RiAxMUJBO0Q0QTc7MTExMSAxMTZGIDExQkE7ICMgKO2Spzsg7ZKnOyDhhJHhha/hhro7IO2Spzsg4YSR4YWv4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBQV0VPUworRDRBODtENEE4OzExMTEgMTE2RiAxMUJCO0Q0QTg7MTExMSAxMTZGIDExQkI7ICMgKO2SqDsg7ZKoOyDhhJHhha/hhrs7IO2SqDsg4YSR4YWv4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBQV0VPU1MKK0Q0QTk7RDRBOTsxMTExIDExNkYgMTFCQztENEE5OzExMTEgMTE2RiAxMUJDOyAjICjtkqk7IO2SqTsg4YSR4YWv4Ya8OyDtkqk7IOGEkeGFr+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFT05HCitENEFBO0Q0QUE7MTExMSAxMTZGIDExQkQ7RDRBQTsxMTExIDExNkYgMTFCRDsgIyAo7ZKqOyDtkqo7IOGEkeGFr+GGvTsg7ZKqOyDhhJHhha/hhr07ICkgSEFOR1VMIFNZTExBQkxFIFBXRU9KCitENEFCO0Q0QUI7MTExMSAxMTZGIDExQkU7RDRBQjsxMTExIDExNkYgMTFCRTsgIyAo7ZKrOyDtkqs7IOGEkeGFr+GGvjsg7ZKrOyDhhJHhha/hhr47ICkgSEFOR1VMIFNZTExBQkxFIFBXRU9DCitENEFDO0Q0QUM7MTExMSAxMTZGIDExQkY7RDRBQzsxMTExIDExNkYgMTFCRjsgIyAo7ZKsOyDtkqw7IOGEkeGFr+GGvzsg7ZKsOyDhhJHhha/hhr87ICkgSEFOR1VMIFNZTExBQkxFIFBXRU9LCitENEFEO0Q0QUQ7MTExMSAxMTZGIDExQzA7RDRBRDsxMTExIDExNkYgMTFDMDsgIyAo7ZKtOyDtkq07IOGEkeGFr+GHgDsg7ZKtOyDhhJHhha/hh4A7ICkgSEFOR1VMIFNZTExBQkxFIFBXRU9UCitENEFFO0Q0QUU7MTExMSAxMTZGIDExQzE7RDRBRTsxMTExIDExNkYgMTFDMTsgIyAo7ZKuOyDtkq47IOGEkeGFr+GHgTsg7ZKuOyDhhJHhha/hh4E7ICkgSEFOR1VMIFNZTExBQkxFIFBXRU9QCitENEFGO0Q0QUY7MTExMSAxMTZGIDExQzI7RDRBRjsxMTExIDExNkYgMTFDMjsgIyAo7ZKvOyDtkq87IOGEkeGFr+GHgjsg7ZKvOyDhhJHhha/hh4I7ICkgSEFOR1VMIFNZTExBQkxFIFBXRU9ICitENEIwO0Q0QjA7MTExMSAxMTcwO0Q0QjA7MTExMSAxMTcwOyAjICjtkrA7IO2SsDsg4YSR4YWwOyDtkrA7IOGEkeGFsDsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFCitENEIxO0Q0QjE7MTExMSAxMTcwIDExQTg7RDRCMTsxMTExIDExNzAgMTFBODsgIyAo7ZKxOyDtkrE7IOGEkeGFsOGGqDsg7ZKxOyDhhJHhhbDhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFBXRUcKK0Q0QjI7RDRCMjsxMTExIDExNzAgMTFBOTtENEIyOzExMTEgMTE3MCAxMUE5OyAjICjtkrI7IO2Ssjsg4YSR4YWw4YapOyDtkrI7IOGEkeGFsOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFR0cKK0Q0QjM7RDRCMzsxMTExIDExNzAgMTFBQTtENEIzOzExMTEgMTE3MCAxMUFBOyAjICjtkrM7IO2Sszsg4YSR4YWw4YaqOyDtkrM7IOGEkeGFsOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFR1MKK0Q0QjQ7RDRCNDsxMTExIDExNzAgMTFBQjtENEI0OzExMTEgMTE3MCAxMUFCOyAjICjtkrQ7IO2StDsg4YSR4YWw4YarOyDtkrQ7IOGEkeGFsOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFTgorRDRCNTtENEI1OzExMTEgMTE3MCAxMUFDO0Q0QjU7MTExMSAxMTcwIDExQUM7ICMgKO2StTsg7ZK1OyDhhJHhhbDhhqw7IO2StTsg4YSR4YWw4YasOyApIEhBTkdVTCBTWUxMQUJMRSBQV0VOSgorRDRCNjtENEI2OzExMTEgMTE3MCAxMUFEO0Q0QjY7MTExMSAxMTcwIDExQUQ7ICMgKO2Stjsg7ZK2OyDhhJHhhbDhhq07IO2Stjsg4YSR4YWw4YatOyApIEhBTkdVTCBTWUxMQUJMRSBQV0VOSAorRDRCNztENEI3OzExMTEgMTE3MCAxMUFFO0Q0Qjc7MTExMSAxMTcwIDExQUU7ICMgKO2Stzsg7ZK3OyDhhJHhhbDhhq47IO2Stzsg4YSR4YWw4YauOyApIEhBTkdVTCBTWUxMQUJMRSBQV0VECitENEI4O0Q0Qjg7MTExMSAxMTcwIDExQUY7RDRCODsxMTExIDExNzAgMTFBRjsgIyAo7ZK4OyDtkrg7IOGEkeGFsOGGrzsg7ZK4OyDhhJHhhbDhhq87ICkgSEFOR1VMIFNZTExBQkxFIFBXRUwKK0Q0Qjk7RDRCOTsxMTExIDExNzAgMTFCMDtENEI5OzExMTEgMTE3MCAxMUIwOyAjICjtkrk7IO2SuTsg4YSR4YWw4YawOyDtkrk7IOGEkeGFsOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFTEcKK0Q0QkE7RDRCQTsxMTExIDExNzAgMTFCMTtENEJBOzExMTEgMTE3MCAxMUIxOyAjICjtkro7IO2Sujsg4YSR4YWw4YaxOyDtkro7IOGEkeGFsOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFTE0KK0Q0QkI7RDRCQjsxMTExIDExNzAgMTFCMjtENEJCOzExMTEgMTE3MCAxMUIyOyAjICjtkrs7IO2Suzsg4YSR4YWw4YayOyDtkrs7IOGEkeGFsOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFTEIKK0Q0QkM7RDRCQzsxMTExIDExNzAgMTFCMztENEJDOzExMTEgMTE3MCAxMUIzOyAjICjtkrw7IO2SvDsg4YSR4YWw4YazOyDtkrw7IOGEkeGFsOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFTFMKK0Q0QkQ7RDRCRDsxMTExIDExNzAgMTFCNDtENEJEOzExMTEgMTE3MCAxMUI0OyAjICjtkr07IO2SvTsg4YSR4YWw4Ya0OyDtkr07IOGEkeGFsOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFTFQKK0Q0QkU7RDRCRTsxMTExIDExNzAgMTFCNTtENEJFOzExMTEgMTE3MCAxMUI1OyAjICjtkr47IO2Svjsg4YSR4YWw4Ya1OyDtkr47IOGEkeGFsOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFTFAKK0Q0QkY7RDRCRjsxMTExIDExNzAgMTFCNjtENEJGOzExMTEgMTE3MCAxMUI2OyAjICjtkr87IO2Svzsg4YSR4YWw4Ya2OyDtkr87IOGEkeGFsOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFTEgKK0Q0QzA7RDRDMDsxMTExIDExNzAgMTFCNztENEMwOzExMTEgMTE3MCAxMUI3OyAjICjtk4A7IO2TgDsg4YSR4YWw4Ya3OyDtk4A7IOGEkeGFsOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFTQorRDRDMTtENEMxOzExMTEgMTE3MCAxMUI4O0Q0QzE7MTExMSAxMTcwIDExQjg7ICMgKO2TgTsg7ZOBOyDhhJHhhbDhhrg7IO2TgTsg4YSR4YWw4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBQV0VCCitENEMyO0Q0QzI7MTExMSAxMTcwIDExQjk7RDRDMjsxMTExIDExNzAgMTFCOTsgIyAo7ZOCOyDtk4I7IOGEkeGFsOGGuTsg7ZOCOyDhhJHhhbDhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFBXRUJTCitENEMzO0Q0QzM7MTExMSAxMTcwIDExQkE7RDRDMzsxMTExIDExNzAgMTFCQTsgIyAo7ZODOyDtk4M7IOGEkeGFsOGGujsg7ZODOyDhhJHhhbDhhro7ICkgSEFOR1VMIFNZTExBQkxFIFBXRVMKK0Q0QzQ7RDRDNDsxMTExIDExNzAgMTFCQjtENEM0OzExMTEgMTE3MCAxMUJCOyAjICjtk4Q7IO2ThDsg4YSR4YWw4Ya7OyDtk4Q7IOGEkeGFsOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFU1MKK0Q0QzU7RDRDNTsxMTExIDExNzAgMTFCQztENEM1OzExMTEgMTE3MCAxMUJDOyAjICjtk4U7IO2ThTsg4YSR4YWw4Ya8OyDtk4U7IOGEkeGFsOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFTkcKK0Q0QzY7RDRDNjsxMTExIDExNzAgMTFCRDtENEM2OzExMTEgMTE3MCAxMUJEOyAjICjtk4Y7IO2Thjsg4YSR4YWw4Ya9OyDtk4Y7IOGEkeGFsOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFSgorRDRDNztENEM3OzExMTEgMTE3MCAxMUJFO0Q0Qzc7MTExMSAxMTcwIDExQkU7ICMgKO2Thzsg7ZOHOyDhhJHhhbDhhr47IO2Thzsg4YSR4YWw4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBQV0VDCitENEM4O0Q0Qzg7MTExMSAxMTcwIDExQkY7RDRDODsxMTExIDExNzAgMTFCRjsgIyAo7ZOIOyDtk4g7IOGEkeGFsOGGvzsg7ZOIOyDhhJHhhbDhhr87ICkgSEFOR1VMIFNZTExBQkxFIFBXRUsKK0Q0Qzk7RDRDOTsxMTExIDExNzAgMTFDMDtENEM5OzExMTEgMTE3MCAxMUMwOyAjICjtk4k7IO2TiTsg4YSR4YWw4YeAOyDtk4k7IOGEkeGFsOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgUFdFVAorRDRDQTtENENBOzExMTEgMTE3MCAxMUMxO0Q0Q0E7MTExMSAxMTcwIDExQzE7ICMgKO2Tijsg7ZOKOyDhhJHhhbDhh4E7IO2Tijsg4YSR4YWw4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBQV0VQCitENENCO0Q0Q0I7MTExMSAxMTcwIDExQzI7RDRDQjsxMTExIDExNzAgMTFDMjsgIyAo7ZOLOyDtk4s7IOGEkeGFsOGHgjsg7ZOLOyDhhJHhhbDhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFBXRUgKK0Q0Q0M7RDRDQzsxMTExIDExNzE7RDRDQzsxMTExIDExNzE7ICMgKO2TjDsg7ZOMOyDhhJHhhbE7IO2TjDsg4YSR4YWxOyApIEhBTkdVTCBTWUxMQUJMRSBQV0kKK0Q0Q0Q7RDRDRDsxMTExIDExNzEgMTFBODtENENEOzExMTEgMTE3MSAxMUE4OyAjICjtk407IO2TjTsg4YSR4YWx4YaoOyDtk407IOGEkeGFseGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgUFdJRworRDRDRTtENENFOzExMTEgMTE3MSAxMUE5O0Q0Q0U7MTExMSAxMTcxIDExQTk7ICMgKO2Tjjsg7ZOOOyDhhJHhhbHhhqk7IO2Tjjsg4YSR4YWx4YapOyApIEhBTkdVTCBTWUxMQUJMRSBQV0lHRworRDRDRjtENENGOzExMTEgMTE3MSAxMUFBO0Q0Q0Y7MTExMSAxMTcxIDExQUE7ICMgKO2Tjzsg7ZOPOyDhhJHhhbHhhqo7IO2Tjzsg4YSR4YWx4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBQV0lHUworRDREMDtENEQwOzExMTEgMTE3MSAxMUFCO0Q0RDA7MTExMSAxMTcxIDExQUI7ICMgKO2TkDsg7ZOQOyDhhJHhhbHhhqs7IO2TkDsg4YSR4YWx4YarOyApIEhBTkdVTCBTWUxMQUJMRSBQV0lOCitENEQxO0Q0RDE7MTExMSAxMTcxIDExQUM7RDREMTsxMTExIDExNzEgMTFBQzsgIyAo7ZOROyDtk5E7IOGEkeGFseGGrDsg7ZOROyDhhJHhhbHhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFBXSU5KCitENEQyO0Q0RDI7MTExMSAxMTcxIDExQUQ7RDREMjsxMTExIDExNzEgMTFBRDsgIyAo7ZOSOyDtk5I7IOGEkeGFseGGrTsg7ZOSOyDhhJHhhbHhhq07ICkgSEFOR1VMIFNZTExBQkxFIFBXSU5ICitENEQzO0Q0RDM7MTExMSAxMTcxIDExQUU7RDREMzsxMTExIDExNzEgMTFBRTsgIyAo7ZOTOyDtk5M7IOGEkeGFseGGrjsg7ZOTOyDhhJHhhbHhhq47ICkgSEFOR1VMIFNZTExBQkxFIFBXSUQKK0Q0RDQ7RDRENDsxMTExIDExNzEgMTFBRjtENEQ0OzExMTEgMTE3MSAxMUFGOyAjICjtk5Q7IO2TlDsg4YSR4YWx4YavOyDtk5Q7IOGEkeGFseGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgUFdJTAorRDRENTtENEQ1OzExMTEgMTE3MSAxMUIwO0Q0RDU7MTExMSAxMTcxIDExQjA7ICMgKO2TlTsg7ZOVOyDhhJHhhbHhhrA7IO2TlTsg4YSR4YWx4YawOyApIEhBTkdVTCBTWUxMQUJMRSBQV0lMRworRDRENjtENEQ2OzExMTEgMTE3MSAxMUIxO0Q0RDY7MTExMSAxMTcxIDExQjE7ICMgKO2Tljsg7ZOWOyDhhJHhhbHhhrE7IO2Tljsg4YSR4YWx4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBQV0lMTQorRDRENztENEQ3OzExMTEgMTE3MSAxMUIyO0Q0RDc7MTExMSAxMTcxIDExQjI7ICMgKO2Tlzsg7ZOXOyDhhJHhhbHhhrI7IO2Tlzsg4YSR4YWx4YayOyApIEhBTkdVTCBTWUxMQUJMRSBQV0lMQgorRDREODtENEQ4OzExMTEgMTE3MSAxMUIzO0Q0RDg7MTExMSAxMTcxIDExQjM7ICMgKO2TmDsg7ZOYOyDhhJHhhbHhhrM7IO2TmDsg4YSR4YWx4YazOyApIEhBTkdVTCBTWUxMQUJMRSBQV0lMUworRDREOTtENEQ5OzExMTEgMTE3MSAxMUI0O0Q0RDk7MTExMSAxMTcxIDExQjQ7ICMgKO2TmTsg7ZOZOyDhhJHhhbHhhrQ7IO2TmTsg4YSR4YWx4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBQV0lMVAorRDREQTtENERBOzExMTEgMTE3MSAxMUI1O0Q0REE7MTExMSAxMTcxIDExQjU7ICMgKO2Tmjsg7ZOaOyDhhJHhhbHhhrU7IO2Tmjsg4YSR4YWx4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBQV0lMUAorRDREQjtENERCOzExMTEgMTE3MSAxMUI2O0Q0REI7MTExMSAxMTcxIDExQjY7ICMgKO2Tmzsg7ZObOyDhhJHhhbHhhrY7IO2Tmzsg4YSR4YWx4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBQV0lMSAorRDREQztENERDOzExMTEgMTE3MSAxMUI3O0Q0REM7MTExMSAxMTcxIDExQjc7ICMgKO2TnDsg7ZOcOyDhhJHhhbHhhrc7IO2TnDsg4YSR4YWx4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBQV0lNCitENEREO0Q0REQ7MTExMSAxMTcxIDExQjg7RDRERDsxMTExIDExNzEgMTFCODsgIyAo7ZOdOyDtk507IOGEkeGFseGGuDsg7ZOdOyDhhJHhhbHhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFBXSUIKK0Q0REU7RDRERTsxMTExIDExNzEgMTFCOTtENERFOzExMTEgMTE3MSAxMUI5OyAjICjtk547IO2Tnjsg4YSR4YWx4Ya5OyDtk547IOGEkeGFseGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgUFdJQlMKK0Q0REY7RDRERjsxMTExIDExNzEgMTFCQTtENERGOzExMTEgMTE3MSAxMUJBOyAjICjtk587IO2Tnzsg4YSR4YWx4Ya6OyDtk587IOGEkeGFseGGujsgKSBIQU5HVUwgU1lMTEFCTEUgUFdJUworRDRFMDtENEUwOzExMTEgMTE3MSAxMUJCO0Q0RTA7MTExMSAxMTcxIDExQkI7ICMgKO2ToDsg7ZOgOyDhhJHhhbHhhrs7IO2ToDsg4YSR4YWx4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBQV0lTUworRDRFMTtENEUxOzExMTEgMTE3MSAxMUJDO0Q0RTE7MTExMSAxMTcxIDExQkM7ICMgKO2ToTsg7ZOhOyDhhJHhhbHhhrw7IO2ToTsg4YSR4YWx4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBQV0lORworRDRFMjtENEUyOzExMTEgMTE3MSAxMUJEO0Q0RTI7MTExMSAxMTcxIDExQkQ7ICMgKO2Tojsg7ZOiOyDhhJHhhbHhhr07IO2Tojsg4YSR4YWx4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBQV0lKCitENEUzO0Q0RTM7MTExMSAxMTcxIDExQkU7RDRFMzsxMTExIDExNzEgMTFCRTsgIyAo7ZOjOyDtk6M7IOGEkeGFseGGvjsg7ZOjOyDhhJHhhbHhhr47ICkgSEFOR1VMIFNZTExBQkxFIFBXSUMKK0Q0RTQ7RDRFNDsxMTExIDExNzEgMTFCRjtENEU0OzExMTEgMTE3MSAxMUJGOyAjICjtk6Q7IO2TpDsg4YSR4YWx4Ya/OyDtk6Q7IOGEkeGFseGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgUFdJSworRDRFNTtENEU1OzExMTEgMTE3MSAxMUMwO0Q0RTU7MTExMSAxMTcxIDExQzA7ICMgKO2TpTsg7ZOlOyDhhJHhhbHhh4A7IO2TpTsg4YSR4YWx4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBQV0lUCitENEU2O0Q0RTY7MTExMSAxMTcxIDExQzE7RDRFNjsxMTExIDExNzEgMTFDMTsgIyAo7ZOmOyDtk6Y7IOGEkeGFseGHgTsg7ZOmOyDhhJHhhbHhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFBXSVAKK0Q0RTc7RDRFNzsxMTExIDExNzEgMTFDMjtENEU3OzExMTEgMTE3MSAxMUMyOyAjICjtk6c7IO2Tpzsg4YSR4YWx4YeCOyDtk6c7IOGEkeGFseGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgUFdJSAorRDRFODtENEU4OzExMTEgMTE3MjtENEU4OzExMTEgMTE3MjsgIyAo7ZOoOyDtk6g7IOGEkeGFsjsg7ZOoOyDhhJHhhbI7ICkgSEFOR1VMIFNZTExBQkxFIFBZVQorRDRFOTtENEU5OzExMTEgMTE3MiAxMUE4O0Q0RTk7MTExMSAxMTcyIDExQTg7ICMgKO2TqTsg7ZOpOyDhhJHhhbLhhqg7IO2TqTsg4YSR4YWy4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBQWVVHCitENEVBO0Q0RUE7MTExMSAxMTcyIDExQTk7RDRFQTsxMTExIDExNzIgMTFBOTsgIyAo7ZOqOyDtk6o7IOGEkeGFsuGGqTsg7ZOqOyDhhJHhhbLhhqk7ICkgSEFOR1VMIFNZTExBQkxFIFBZVUdHCitENEVCO0Q0RUI7MTExMSAxMTcyIDExQUE7RDRFQjsxMTExIDExNzIgMTFBQTsgIyAo7ZOrOyDtk6s7IOGEkeGFsuGGqjsg7ZOrOyDhhJHhhbLhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFBZVUdTCitENEVDO0Q0RUM7MTExMSAxMTcyIDExQUI7RDRFQzsxMTExIDExNzIgMTFBQjsgIyAo7ZOsOyDtk6w7IOGEkeGFsuGGqzsg7ZOsOyDhhJHhhbLhhqs7ICkgSEFOR1VMIFNZTExBQkxFIFBZVU4KK0Q0RUQ7RDRFRDsxMTExIDExNzIgMTFBQztENEVEOzExMTEgMTE3MiAxMUFDOyAjICjtk607IO2TrTsg4YSR4YWy4YasOyDtk607IOGEkeGFsuGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgUFlVTkoKK0Q0RUU7RDRFRTsxMTExIDExNzIgMTFBRDtENEVFOzExMTEgMTE3MiAxMUFEOyAjICjtk647IO2Trjsg4YSR4YWy4YatOyDtk647IOGEkeGFsuGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlVTkgKK0Q0RUY7RDRFRjsxMTExIDExNzIgMTFBRTtENEVGOzExMTEgMTE3MiAxMUFFOyAjICjtk687IO2Trzsg4YSR4YWy4YauOyDtk687IOGEkeGFsuGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgUFlVRAorRDRGMDtENEYwOzExMTEgMTE3MiAxMUFGO0Q0RjA7MTExMSAxMTcyIDExQUY7ICMgKO2TsDsg7ZOwOyDhhJHhhbLhhq87IO2TsDsg4YSR4YWy4YavOyApIEhBTkdVTCBTWUxMQUJMRSBQWVVMCitENEYxO0Q0RjE7MTExMSAxMTcyIDExQjA7RDRGMTsxMTExIDExNzIgMTFCMDsgIyAo7ZOxOyDtk7E7IOGEkeGFsuGGsDsg7ZOxOyDhhJHhhbLhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFBZVUxHCitENEYyO0Q0RjI7MTExMSAxMTcyIDExQjE7RDRGMjsxMTExIDExNzIgMTFCMTsgIyAo7ZOyOyDtk7I7IOGEkeGFsuGGsTsg7ZOyOyDhhJHhhbLhhrE7ICkgSEFOR1VMIFNZTExBQkxFIFBZVUxNCitENEYzO0Q0RjM7MTExMSAxMTcyIDExQjI7RDRGMzsxMTExIDExNzIgMTFCMjsgIyAo7ZOzOyDtk7M7IOGEkeGFsuGGsjsg7ZOzOyDhhJHhhbLhhrI7ICkgSEFOR1VMIFNZTExBQkxFIFBZVUxCCitENEY0O0Q0RjQ7MTExMSAxMTcyIDExQjM7RDRGNDsxMTExIDExNzIgMTFCMzsgIyAo7ZO0OyDtk7Q7IOGEkeGFsuGGszsg7ZO0OyDhhJHhhbLhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFBZVUxTCitENEY1O0Q0RjU7MTExMSAxMTcyIDExQjQ7RDRGNTsxMTExIDExNzIgMTFCNDsgIyAo7ZO1OyDtk7U7IOGEkeGFsuGGtDsg7ZO1OyDhhJHhhbLhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIFBZVUxUCitENEY2O0Q0RjY7MTExMSAxMTcyIDExQjU7RDRGNjsxMTExIDExNzIgMTFCNTsgIyAo7ZO2OyDtk7Y7IOGEkeGFsuGGtTsg7ZO2OyDhhJHhhbLhhrU7ICkgSEFOR1VMIFNZTExBQkxFIFBZVUxQCitENEY3O0Q0Rjc7MTExMSAxMTcyIDExQjY7RDRGNzsxMTExIDExNzIgMTFCNjsgIyAo7ZO3OyDtk7c7IOGEkeGFsuGGtjsg7ZO3OyDhhJHhhbLhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFBZVUxICitENEY4O0Q0Rjg7MTExMSAxMTcyIDExQjc7RDRGODsxMTExIDExNzIgMTFCNzsgIyAo7ZO4OyDtk7g7IOGEkeGFsuGGtzsg7ZO4OyDhhJHhhbLhhrc7ICkgSEFOR1VMIFNZTExBQkxFIFBZVU0KK0Q0Rjk7RDRGOTsxMTExIDExNzIgMTFCODtENEY5OzExMTEgMTE3MiAxMUI4OyAjICjtk7k7IO2TuTsg4YSR4YWy4Ya4OyDtk7k7IOGEkeGFsuGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgUFlVQgorRDRGQTtENEZBOzExMTEgMTE3MiAxMUI5O0Q0RkE7MTExMSAxMTcyIDExQjk7ICMgKO2Tujsg7ZO6OyDhhJHhhbLhhrk7IO2Tujsg4YSR4YWy4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBQWVVCUworRDRGQjtENEZCOzExMTEgMTE3MiAxMUJBO0Q0RkI7MTExMSAxMTcyIDExQkE7ICMgKO2Tuzsg7ZO7OyDhhJHhhbLhhro7IO2Tuzsg4YSR4YWy4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBQWVVTCitENEZDO0Q0RkM7MTExMSAxMTcyIDExQkI7RDRGQzsxMTExIDExNzIgMTFCQjsgIyAo7ZO8OyDtk7w7IOGEkeGFsuGGuzsg7ZO8OyDhhJHhhbLhhrs7ICkgSEFOR1VMIFNZTExBQkxFIFBZVVNTCitENEZEO0Q0RkQ7MTExMSAxMTcyIDExQkM7RDRGRDsxMTExIDExNzIgMTFCQzsgIyAo7ZO9OyDtk707IOGEkeGFsuGGvDsg7ZO9OyDhhJHhhbLhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFBZVU5HCitENEZFO0Q0RkU7MTExMSAxMTcyIDExQkQ7RDRGRTsxMTExIDExNzIgMTFCRDsgIyAo7ZO+OyDtk747IOGEkeGFsuGGvTsg7ZO+OyDhhJHhhbLhhr07ICkgSEFOR1VMIFNZTExBQkxFIFBZVUoKK0Q0RkY7RDRGRjsxMTExIDExNzIgMTFCRTtENEZGOzExMTEgMTE3MiAxMUJFOyAjICjtk787IO2Tvzsg4YSR4YWy4Ya+OyDtk787IOGEkeGFsuGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgUFlVQworRDUwMDtENTAwOzExMTEgMTE3MiAxMUJGO0Q1MDA7MTExMSAxMTcyIDExQkY7ICMgKO2UgDsg7ZSAOyDhhJHhhbLhhr87IO2UgDsg4YSR4YWy4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBQWVVLCitENTAxO0Q1MDE7MTExMSAxMTcyIDExQzA7RDUwMTsxMTExIDExNzIgMTFDMDsgIyAo7ZSBOyDtlIE7IOGEkeGFsuGHgDsg7ZSBOyDhhJHhhbLhh4A7ICkgSEFOR1VMIFNZTExBQkxFIFBZVVQKK0Q1MDI7RDUwMjsxMTExIDExNzIgMTFDMTtENTAyOzExMTEgMTE3MiAxMUMxOyAjICjtlII7IO2Ugjsg4YSR4YWy4YeBOyDtlII7IOGEkeGFsuGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlVUAorRDUwMztENTAzOzExMTEgMTE3MiAxMUMyO0Q1MDM7MTExMSAxMTcyIDExQzI7ICMgKO2Ugzsg7ZSDOyDhhJHhhbLhh4I7IO2Ugzsg4YSR4YWy4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBQWVVICitENTA0O0Q1MDQ7MTExMSAxMTczO0Q1MDQ7MTExMSAxMTczOyAjICjtlIQ7IO2UhDsg4YSR4YWzOyDtlIQ7IOGEkeGFszsgKSBIQU5HVUwgU1lMTEFCTEUgUEVVCitENTA1O0Q1MDU7MTExMSAxMTczIDExQTg7RDUwNTsxMTExIDExNzMgMTFBODsgIyAo7ZSFOyDtlIU7IOGEkeGFs+GGqDsg7ZSFOyDhhJHhhbPhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFBFVUcKK0Q1MDY7RDUwNjsxMTExIDExNzMgMTFBOTtENTA2OzExMTEgMTE3MyAxMUE5OyAjICjtlIY7IO2Uhjsg4YSR4YWz4YapOyDtlIY7IOGEkeGFs+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgUEVVR0cKK0Q1MDc7RDUwNzsxMTExIDExNzMgMTFBQTtENTA3OzExMTEgMTE3MyAxMUFBOyAjICjtlIc7IO2Uhzsg4YSR4YWz4YaqOyDtlIc7IOGEkeGFs+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgUEVVR1MKK0Q1MDg7RDUwODsxMTExIDExNzMgMTFBQjtENTA4OzExMTEgMTE3MyAxMUFCOyAjICjtlIg7IO2UiDsg4YSR4YWz4YarOyDtlIg7IOGEkeGFs+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgUEVVTgorRDUwOTtENTA5OzExMTEgMTE3MyAxMUFDO0Q1MDk7MTExMSAxMTczIDExQUM7ICMgKO2UiTsg7ZSJOyDhhJHhhbPhhqw7IO2UiTsg4YSR4YWz4YasOyApIEhBTkdVTCBTWUxMQUJMRSBQRVVOSgorRDUwQTtENTBBOzExMTEgMTE3MyAxMUFEO0Q1MEE7MTExMSAxMTczIDExQUQ7ICMgKO2Uijsg7ZSKOyDhhJHhhbPhhq07IO2Uijsg4YSR4YWz4YatOyApIEhBTkdVTCBTWUxMQUJMRSBQRVVOSAorRDUwQjtENTBCOzExMTEgMTE3MyAxMUFFO0Q1MEI7MTExMSAxMTczIDExQUU7ICMgKO2Uizsg7ZSLOyDhhJHhhbPhhq47IO2Uizsg4YSR4YWz4YauOyApIEhBTkdVTCBTWUxMQUJMRSBQRVVECitENTBDO0Q1MEM7MTExMSAxMTczIDExQUY7RDUwQzsxMTExIDExNzMgMTFBRjsgIyAo7ZSMOyDtlIw7IOGEkeGFs+GGrzsg7ZSMOyDhhJHhhbPhhq87ICkgSEFOR1VMIFNZTExBQkxFIFBFVUwKK0Q1MEQ7RDUwRDsxMTExIDExNzMgMTFCMDtENTBEOzExMTEgMTE3MyAxMUIwOyAjICjtlI07IO2UjTsg4YSR4YWz4YawOyDtlI07IOGEkeGFs+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgUEVVTEcKK0Q1MEU7RDUwRTsxMTExIDExNzMgMTFCMTtENTBFOzExMTEgMTE3MyAxMUIxOyAjICjtlI47IO2Ujjsg4YSR4YWz4YaxOyDtlI47IOGEkeGFs+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgUEVVTE0KK0Q1MEY7RDUwRjsxMTExIDExNzMgMTFCMjtENTBGOzExMTEgMTE3MyAxMUIyOyAjICjtlI87IO2Ujzsg4YSR4YWz4YayOyDtlI87IOGEkeGFs+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgUEVVTEIKK0Q1MTA7RDUxMDsxMTExIDExNzMgMTFCMztENTEwOzExMTEgMTE3MyAxMUIzOyAjICjtlJA7IO2UkDsg4YSR4YWz4YazOyDtlJA7IOGEkeGFs+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgUEVVTFMKK0Q1MTE7RDUxMTsxMTExIDExNzMgMTFCNDtENTExOzExMTEgMTE3MyAxMUI0OyAjICjtlJE7IO2UkTsg4YSR4YWz4Ya0OyDtlJE7IOGEkeGFs+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgUEVVTFQKK0Q1MTI7RDUxMjsxMTExIDExNzMgMTFCNTtENTEyOzExMTEgMTE3MyAxMUI1OyAjICjtlJI7IO2Ukjsg4YSR4YWz4Ya1OyDtlJI7IOGEkeGFs+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgUEVVTFAKK0Q1MTM7RDUxMzsxMTExIDExNzMgMTFCNjtENTEzOzExMTEgMTE3MyAxMUI2OyAjICjtlJM7IO2Ukzsg4YSR4YWz4Ya2OyDtlJM7IOGEkeGFs+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgUEVVTEgKK0Q1MTQ7RDUxNDsxMTExIDExNzMgMTFCNztENTE0OzExMTEgMTE3MyAxMUI3OyAjICjtlJQ7IO2UlDsg4YSR4YWz4Ya3OyDtlJQ7IOGEkeGFs+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgUEVVTQorRDUxNTtENTE1OzExMTEgMTE3MyAxMUI4O0Q1MTU7MTExMSAxMTczIDExQjg7ICMgKO2UlTsg7ZSVOyDhhJHhhbPhhrg7IO2UlTsg4YSR4YWz4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBQRVVCCitENTE2O0Q1MTY7MTExMSAxMTczIDExQjk7RDUxNjsxMTExIDExNzMgMTFCOTsgIyAo7ZSWOyDtlJY7IOGEkeGFs+GGuTsg7ZSWOyDhhJHhhbPhhrk7ICkgSEFOR1VMIFNZTExBQkxFIFBFVUJTCitENTE3O0Q1MTc7MTExMSAxMTczIDExQkE7RDUxNzsxMTExIDExNzMgMTFCQTsgIyAo7ZSXOyDtlJc7IOGEkeGFs+GGujsg7ZSXOyDhhJHhhbPhhro7ICkgSEFOR1VMIFNZTExBQkxFIFBFVVMKK0Q1MTg7RDUxODsxMTExIDExNzMgMTFCQjtENTE4OzExMTEgMTE3MyAxMUJCOyAjICjtlJg7IO2UmDsg4YSR4YWz4Ya7OyDtlJg7IOGEkeGFs+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgUEVVU1MKK0Q1MTk7RDUxOTsxMTExIDExNzMgMTFCQztENTE5OzExMTEgMTE3MyAxMUJDOyAjICjtlJk7IO2UmTsg4YSR4YWz4Ya8OyDtlJk7IOGEkeGFs+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgUEVVTkcKK0Q1MUE7RDUxQTsxMTExIDExNzMgMTFCRDtENTFBOzExMTEgMTE3MyAxMUJEOyAjICjtlJo7IO2Umjsg4YSR4YWz4Ya9OyDtlJo7IOGEkeGFs+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgUEVVSgorRDUxQjtENTFCOzExMTEgMTE3MyAxMUJFO0Q1MUI7MTExMSAxMTczIDExQkU7ICMgKO2Umzsg7ZSbOyDhhJHhhbPhhr47IO2Umzsg4YSR4YWz4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBQRVVDCitENTFDO0Q1MUM7MTExMSAxMTczIDExQkY7RDUxQzsxMTExIDExNzMgMTFCRjsgIyAo7ZScOyDtlJw7IOGEkeGFs+GGvzsg7ZScOyDhhJHhhbPhhr87ICkgSEFOR1VMIFNZTExBQkxFIFBFVUsKK0Q1MUQ7RDUxRDsxMTExIDExNzMgMTFDMDtENTFEOzExMTEgMTE3MyAxMUMwOyAjICjtlJ07IO2UnTsg4YSR4YWz4YeAOyDtlJ07IOGEkeGFs+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgUEVVVAorRDUxRTtENTFFOzExMTEgMTE3MyAxMUMxO0Q1MUU7MTExMSAxMTczIDExQzE7ICMgKO2Unjsg7ZSeOyDhhJHhhbPhh4E7IO2Unjsg4YSR4YWz4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBQRVVQCitENTFGO0Q1MUY7MTExMSAxMTczIDExQzI7RDUxRjsxMTExIDExNzMgMTFDMjsgIyAo7ZSfOyDtlJ87IOGEkeGFs+GHgjsg7ZSfOyDhhJHhhbPhh4I7ICkgSEFOR1VMIFNZTExBQkxFIFBFVUgKK0Q1MjA7RDUyMDsxMTExIDExNzQ7RDUyMDsxMTExIDExNzQ7ICMgKO2UoDsg7ZSgOyDhhJHhhbQ7IO2UoDsg4YSR4YW0OyApIEhBTkdVTCBTWUxMQUJMRSBQWUkKK0Q1MjE7RDUyMTsxMTExIDExNzQgMTFBODtENTIxOzExMTEgMTE3NCAxMUE4OyAjICjtlKE7IO2UoTsg4YSR4YW04YaoOyDtlKE7IOGEkeGFtOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgUFlJRworRDUyMjtENTIyOzExMTEgMTE3NCAxMUE5O0Q1MjI7MTExMSAxMTc0IDExQTk7ICMgKO2Uojsg7ZSiOyDhhJHhhbThhqk7IO2Uojsg4YSR4YW04YapOyApIEhBTkdVTCBTWUxMQUJMRSBQWUlHRworRDUyMztENTIzOzExMTEgMTE3NCAxMUFBO0Q1MjM7MTExMSAxMTc0IDExQUE7ICMgKO2Uozsg7ZSjOyDhhJHhhbThhqo7IO2Uozsg4YSR4YW04YaqOyApIEhBTkdVTCBTWUxMQUJMRSBQWUlHUworRDUyNDtENTI0OzExMTEgMTE3NCAxMUFCO0Q1MjQ7MTExMSAxMTc0IDExQUI7ICMgKO2UpDsg7ZSkOyDhhJHhhbThhqs7IO2UpDsg4YSR4YW04YarOyApIEhBTkdVTCBTWUxMQUJMRSBQWUlOCitENTI1O0Q1MjU7MTExMSAxMTc0IDExQUM7RDUyNTsxMTExIDExNzQgMTFBQzsgIyAo7ZSlOyDtlKU7IOGEkeGFtOGGrDsg7ZSlOyDhhJHhhbThhqw7ICkgSEFOR1VMIFNZTExBQkxFIFBZSU5KCitENTI2O0Q1MjY7MTExMSAxMTc0IDExQUQ7RDUyNjsxMTExIDExNzQgMTFBRDsgIyAo7ZSmOyDtlKY7IOGEkeGFtOGGrTsg7ZSmOyDhhJHhhbThhq07ICkgSEFOR1VMIFNZTExBQkxFIFBZSU5ICitENTI3O0Q1Mjc7MTExMSAxMTc0IDExQUU7RDUyNzsxMTExIDExNzQgMTFBRTsgIyAo7ZSnOyDtlKc7IOGEkeGFtOGGrjsg7ZSnOyDhhJHhhbThhq47ICkgSEFOR1VMIFNZTExBQkxFIFBZSUQKK0Q1Mjg7RDUyODsxMTExIDExNzQgMTFBRjtENTI4OzExMTEgMTE3NCAxMUFGOyAjICjtlKg7IO2UqDsg4YSR4YW04YavOyDtlKg7IOGEkeGFtOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgUFlJTAorRDUyOTtENTI5OzExMTEgMTE3NCAxMUIwO0Q1Mjk7MTExMSAxMTc0IDExQjA7ICMgKO2UqTsg7ZSpOyDhhJHhhbThhrA7IO2UqTsg4YSR4YW04YawOyApIEhBTkdVTCBTWUxMQUJMRSBQWUlMRworRDUyQTtENTJBOzExMTEgMTE3NCAxMUIxO0Q1MkE7MTExMSAxMTc0IDExQjE7ICMgKO2Uqjsg7ZSqOyDhhJHhhbThhrE7IO2Uqjsg4YSR4YW04YaxOyApIEhBTkdVTCBTWUxMQUJMRSBQWUlMTQorRDUyQjtENTJCOzExMTEgMTE3NCAxMUIyO0Q1MkI7MTExMSAxMTc0IDExQjI7ICMgKO2Uqzsg7ZSrOyDhhJHhhbThhrI7IO2Uqzsg4YSR4YW04YayOyApIEhBTkdVTCBTWUxMQUJMRSBQWUlMQgorRDUyQztENTJDOzExMTEgMTE3NCAxMUIzO0Q1MkM7MTExMSAxMTc0IDExQjM7ICMgKO2UrDsg7ZSsOyDhhJHhhbThhrM7IO2UrDsg4YSR4YW04YazOyApIEhBTkdVTCBTWUxMQUJMRSBQWUlMUworRDUyRDtENTJEOzExMTEgMTE3NCAxMUI0O0Q1MkQ7MTExMSAxMTc0IDExQjQ7ICMgKO2UrTsg7ZStOyDhhJHhhbThhrQ7IO2UrTsg4YSR4YW04Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBQWUlMVAorRDUyRTtENTJFOzExMTEgMTE3NCAxMUI1O0Q1MkU7MTExMSAxMTc0IDExQjU7ICMgKO2Urjsg7ZSuOyDhhJHhhbThhrU7IO2Urjsg4YSR4YW04Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBQWUlMUAorRDUyRjtENTJGOzExMTEgMTE3NCAxMUI2O0Q1MkY7MTExMSAxMTc0IDExQjY7ICMgKO2Urzsg7ZSvOyDhhJHhhbThhrY7IO2Urzsg4YSR4YW04Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBQWUlMSAorRDUzMDtENTMwOzExMTEgMTE3NCAxMUI3O0Q1MzA7MTExMSAxMTc0IDExQjc7ICMgKO2UsDsg7ZSwOyDhhJHhhbThhrc7IO2UsDsg4YSR4YW04Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBQWUlNCitENTMxO0Q1MzE7MTExMSAxMTc0IDExQjg7RDUzMTsxMTExIDExNzQgMTFCODsgIyAo7ZSxOyDtlLE7IOGEkeGFtOGGuDsg7ZSxOyDhhJHhhbThhrg7ICkgSEFOR1VMIFNZTExBQkxFIFBZSUIKK0Q1MzI7RDUzMjsxMTExIDExNzQgMTFCOTtENTMyOzExMTEgMTE3NCAxMUI5OyAjICjtlLI7IO2Usjsg4YSR4YW04Ya5OyDtlLI7IOGEkeGFtOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgUFlJQlMKK0Q1MzM7RDUzMzsxMTExIDExNzQgMTFCQTtENTMzOzExMTEgMTE3NCAxMUJBOyAjICjtlLM7IO2Uszsg4YSR4YW04Ya6OyDtlLM7IOGEkeGFtOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgUFlJUworRDUzNDtENTM0OzExMTEgMTE3NCAxMUJCO0Q1MzQ7MTExMSAxMTc0IDExQkI7ICMgKO2UtDsg7ZS0OyDhhJHhhbThhrs7IO2UtDsg4YSR4YW04Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBQWUlTUworRDUzNTtENTM1OzExMTEgMTE3NCAxMUJDO0Q1MzU7MTExMSAxMTc0IDExQkM7ICMgKO2UtTsg7ZS1OyDhhJHhhbThhrw7IO2UtTsg4YSR4YW04Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBQWUlORworRDUzNjtENTM2OzExMTEgMTE3NCAxMUJEO0Q1MzY7MTExMSAxMTc0IDExQkQ7ICMgKO2Utjsg7ZS2OyDhhJHhhbThhr07IO2Utjsg4YSR4YW04Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBQWUlKCitENTM3O0Q1Mzc7MTExMSAxMTc0IDExQkU7RDUzNzsxMTExIDExNzQgMTFCRTsgIyAo7ZS3OyDtlLc7IOGEkeGFtOGGvjsg7ZS3OyDhhJHhhbThhr47ICkgSEFOR1VMIFNZTExBQkxFIFBZSUMKK0Q1Mzg7RDUzODsxMTExIDExNzQgMTFCRjtENTM4OzExMTEgMTE3NCAxMUJGOyAjICjtlLg7IO2UuDsg4YSR4YW04Ya/OyDtlLg7IOGEkeGFtOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgUFlJSworRDUzOTtENTM5OzExMTEgMTE3NCAxMUMwO0Q1Mzk7MTExMSAxMTc0IDExQzA7ICMgKO2UuTsg7ZS5OyDhhJHhhbThh4A7IO2UuTsg4YSR4YW04YeAOyApIEhBTkdVTCBTWUxMQUJMRSBQWUlUCitENTNBO0Q1M0E7MTExMSAxMTc0IDExQzE7RDUzQTsxMTExIDExNzQgMTFDMTsgIyAo7ZS6OyDtlLo7IOGEkeGFtOGHgTsg7ZS6OyDhhJHhhbThh4E7ICkgSEFOR1VMIFNZTExBQkxFIFBZSVAKK0Q1M0I7RDUzQjsxMTExIDExNzQgMTFDMjtENTNCOzExMTEgMTE3NCAxMUMyOyAjICjtlLs7IO2Uuzsg4YSR4YW04YeCOyDtlLs7IOGEkeGFtOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgUFlJSAorRDUzQztENTNDOzExMTEgMTE3NTtENTNDOzExMTEgMTE3NTsgIyAo7ZS8OyDtlLw7IOGEkeGFtTsg7ZS8OyDhhJHhhbU7ICkgSEFOR1VMIFNZTExBQkxFIFBJCitENTNEO0Q1M0Q7MTExMSAxMTc1IDExQTg7RDUzRDsxMTExIDExNzUgMTFBODsgIyAo7ZS9OyDtlL07IOGEkeGFteGGqDsg7ZS9OyDhhJHhhbXhhqg7ICkgSEFOR1VMIFNZTExBQkxFIFBJRworRDUzRTtENTNFOzExMTEgMTE3NSAxMUE5O0Q1M0U7MTExMSAxMTc1IDExQTk7ICMgKO2Uvjsg7ZS+OyDhhJHhhbXhhqk7IO2Uvjsg4YSR4YW14YapOyApIEhBTkdVTCBTWUxMQUJMRSBQSUdHCitENTNGO0Q1M0Y7MTExMSAxMTc1IDExQUE7RDUzRjsxMTExIDExNzUgMTFBQTsgIyAo7ZS/OyDtlL87IOGEkeGFteGGqjsg7ZS/OyDhhJHhhbXhhqo7ICkgSEFOR1VMIFNZTExBQkxFIFBJR1MKK0Q1NDA7RDU0MDsxMTExIDExNzUgMTFBQjtENTQwOzExMTEgMTE3NSAxMUFCOyAjICjtlYA7IO2VgDsg4YSR4YW14YarOyDtlYA7IOGEkeGFteGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgUElOCitENTQxO0Q1NDE7MTExMSAxMTc1IDExQUM7RDU0MTsxMTExIDExNzUgMTFBQzsgIyAo7ZWBOyDtlYE7IOGEkeGFteGGrDsg7ZWBOyDhhJHhhbXhhqw7ICkgSEFOR1VMIFNZTExBQkxFIFBJTkoKK0Q1NDI7RDU0MjsxMTExIDExNzUgMTFBRDtENTQyOzExMTEgMTE3NSAxMUFEOyAjICjtlYI7IO2Vgjsg4YSR4YW14YatOyDtlYI7IOGEkeGFteGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgUElOSAorRDU0MztENTQzOzExMTEgMTE3NSAxMUFFO0Q1NDM7MTExMSAxMTc1IDExQUU7ICMgKO2Vgzsg7ZWDOyDhhJHhhbXhhq47IO2Vgzsg4YSR4YW14YauOyApIEhBTkdVTCBTWUxMQUJMRSBQSUQKK0Q1NDQ7RDU0NDsxMTExIDExNzUgMTFBRjtENTQ0OzExMTEgMTE3NSAxMUFGOyAjICjtlYQ7IO2VhDsg4YSR4YW14YavOyDtlYQ7IOGEkeGFteGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgUElMCitENTQ1O0Q1NDU7MTExMSAxMTc1IDExQjA7RDU0NTsxMTExIDExNzUgMTFCMDsgIyAo7ZWFOyDtlYU7IOGEkeGFteGGsDsg7ZWFOyDhhJHhhbXhhrA7ICkgSEFOR1VMIFNZTExBQkxFIFBJTEcKK0Q1NDY7RDU0NjsxMTExIDExNzUgMTFCMTtENTQ2OzExMTEgMTE3NSAxMUIxOyAjICjtlYY7IO2Vhjsg4YSR4YW14YaxOyDtlYY7IOGEkeGFteGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgUElMTQorRDU0NztENTQ3OzExMTEgMTE3NSAxMUIyO0Q1NDc7MTExMSAxMTc1IDExQjI7ICMgKO2Vhzsg7ZWHOyDhhJHhhbXhhrI7IO2Vhzsg4YSR4YW14YayOyApIEhBTkdVTCBTWUxMQUJMRSBQSUxCCitENTQ4O0Q1NDg7MTExMSAxMTc1IDExQjM7RDU0ODsxMTExIDExNzUgMTFCMzsgIyAo7ZWIOyDtlYg7IOGEkeGFteGGszsg7ZWIOyDhhJHhhbXhhrM7ICkgSEFOR1VMIFNZTExBQkxFIFBJTFMKK0Q1NDk7RDU0OTsxMTExIDExNzUgMTFCNDtENTQ5OzExMTEgMTE3NSAxMUI0OyAjICjtlYk7IO2ViTsg4YSR4YW14Ya0OyDtlYk7IOGEkeGFteGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgUElMVAorRDU0QTtENTRBOzExMTEgMTE3NSAxMUI1O0Q1NEE7MTExMSAxMTc1IDExQjU7ICMgKO2Vijsg7ZWKOyDhhJHhhbXhhrU7IO2Vijsg4YSR4YW14Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBQSUxQCitENTRCO0Q1NEI7MTExMSAxMTc1IDExQjY7RDU0QjsxMTExIDExNzUgMTFCNjsgIyAo7ZWLOyDtlYs7IOGEkeGFteGGtjsg7ZWLOyDhhJHhhbXhhrY7ICkgSEFOR1VMIFNZTExBQkxFIFBJTEgKK0Q1NEM7RDU0QzsxMTExIDExNzUgMTFCNztENTRDOzExMTEgMTE3NSAxMUI3OyAjICjtlYw7IO2VjDsg4YSR4YW14Ya3OyDtlYw7IOGEkeGFteGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgUElNCitENTREO0Q1NEQ7MTExMSAxMTc1IDExQjg7RDU0RDsxMTExIDExNzUgMTFCODsgIyAo7ZWNOyDtlY07IOGEkeGFteGGuDsg7ZWNOyDhhJHhhbXhhrg7ICkgSEFOR1VMIFNZTExBQkxFIFBJQgorRDU0RTtENTRFOzExMTEgMTE3NSAxMUI5O0Q1NEU7MTExMSAxMTc1IDExQjk7ICMgKO2Vjjsg7ZWOOyDhhJHhhbXhhrk7IO2Vjjsg4YSR4YW14Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBQSUJTCitENTRGO0Q1NEY7MTExMSAxMTc1IDExQkE7RDU0RjsxMTExIDExNzUgMTFCQTsgIyAo7ZWPOyDtlY87IOGEkeGFteGGujsg7ZWPOyDhhJHhhbXhhro7ICkgSEFOR1VMIFNZTExBQkxFIFBJUworRDU1MDtENTUwOzExMTEgMTE3NSAxMUJCO0Q1NTA7MTExMSAxMTc1IDExQkI7ICMgKO2VkDsg7ZWQOyDhhJHhhbXhhrs7IO2VkDsg4YSR4YW14Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBQSVNTCitENTUxO0Q1NTE7MTExMSAxMTc1IDExQkM7RDU1MTsxMTExIDExNzUgMTFCQzsgIyAo7ZWROyDtlZE7IOGEkeGFteGGvDsg7ZWROyDhhJHhhbXhhrw7ICkgSEFOR1VMIFNZTExBQkxFIFBJTkcKK0Q1NTI7RDU1MjsxMTExIDExNzUgMTFCRDtENTUyOzExMTEgMTE3NSAxMUJEOyAjICjtlZI7IO2Vkjsg4YSR4YW14Ya9OyDtlZI7IOGEkeGFteGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgUElKCitENTUzO0Q1NTM7MTExMSAxMTc1IDExQkU7RDU1MzsxMTExIDExNzUgMTFCRTsgIyAo7ZWTOyDtlZM7IOGEkeGFteGGvjsg7ZWTOyDhhJHhhbXhhr47ICkgSEFOR1VMIFNZTExBQkxFIFBJQworRDU1NDtENTU0OzExMTEgMTE3NSAxMUJGO0Q1NTQ7MTExMSAxMTc1IDExQkY7ICMgKO2VlDsg7ZWUOyDhhJHhhbXhhr87IO2VlDsg4YSR4YW14Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBQSUsKK0Q1NTU7RDU1NTsxMTExIDExNzUgMTFDMDtENTU1OzExMTEgMTE3NSAxMUMwOyAjICjtlZU7IO2VlTsg4YSR4YW14YeAOyDtlZU7IOGEkeGFteGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgUElUCitENTU2O0Q1NTY7MTExMSAxMTc1IDExQzE7RDU1NjsxMTExIDExNzUgMTFDMTsgIyAo7ZWWOyDtlZY7IOGEkeGFteGHgTsg7ZWWOyDhhJHhhbXhh4E7ICkgSEFOR1VMIFNZTExBQkxFIFBJUAorRDU1NztENTU3OzExMTEgMTE3NSAxMUMyO0Q1NTc7MTExMSAxMTc1IDExQzI7ICMgKO2Vlzsg7ZWXOyDhhJHhhbXhh4I7IO2Vlzsg4YSR4YW14YeCOyApIEhBTkdVTCBTWUxMQUJMRSBQSUgKK0Q1NTg7RDU1ODsxMTEyIDExNjE7RDU1ODsxMTEyIDExNjE7ICMgKO2VmDsg7ZWYOyDhhJLhhaE7IO2VmDsg4YSS4YWhOyApIEhBTkdVTCBTWUxMQUJMRSBIQQorRDU1OTtENTU5OzExMTIgMTE2MSAxMUE4O0Q1NTk7MTExMiAxMTYxIDExQTg7ICMgKO2VmTsg7ZWZOyDhhJLhhaHhhqg7IO2VmTsg4YSS4YWh4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBIQUcKK0Q1NUE7RDU1QTsxMTEyIDExNjEgMTFBOTtENTVBOzExMTIgMTE2MSAxMUE5OyAjICjtlZo7IO2Vmjsg4YSS4YWh4YapOyDtlZo7IOGEkuGFoeGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSEFHRworRDU1QjtENTVCOzExMTIgMTE2MSAxMUFBO0Q1NUI7MTExMiAxMTYxIDExQUE7ICMgKO2Vmzsg7ZWbOyDhhJLhhaHhhqo7IO2Vmzsg4YSS4YWh4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBIQUdTCitENTVDO0Q1NUM7MTExMiAxMTYxIDExQUI7RDU1QzsxMTEyIDExNjEgMTFBQjsgIyAo7ZWcOyDtlZw7IOGEkuGFoeGGqzsg7ZWcOyDhhJLhhaHhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEhBTgorRDU1RDtENTVEOzExMTIgMTE2MSAxMUFDO0Q1NUQ7MTExMiAxMTYxIDExQUM7ICMgKO2VnTsg7ZWdOyDhhJLhhaHhhqw7IO2VnTsg4YSS4YWh4YasOyApIEhBTkdVTCBTWUxMQUJMRSBIQU5KCitENTVFO0Q1NUU7MTExMiAxMTYxIDExQUQ7RDU1RTsxMTEyIDExNjEgMTFBRDsgIyAo7ZWeOyDtlZ47IOGEkuGFoeGGrTsg7ZWeOyDhhJLhhaHhhq07ICkgSEFOR1VMIFNZTExBQkxFIEhBTkgKK0Q1NUY7RDU1RjsxMTEyIDExNjEgMTFBRTtENTVGOzExMTIgMTE2MSAxMUFFOyAjICjtlZ87IO2Vnzsg4YSS4YWh4YauOyDtlZ87IOGEkuGFoeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSEFECitENTYwO0Q1NjA7MTExMiAxMTYxIDExQUY7RDU2MDsxMTEyIDExNjEgMTFBRjsgIyAo7ZWgOyDtlaA7IOGEkuGFoeGGrzsg7ZWgOyDhhJLhhaHhhq87ICkgSEFOR1VMIFNZTExBQkxFIEhBTAorRDU2MTtENTYxOzExMTIgMTE2MSAxMUIwO0Q1NjE7MTExMiAxMTYxIDExQjA7ICMgKO2VoTsg7ZWhOyDhhJLhhaHhhrA7IO2VoTsg4YSS4YWh4YawOyApIEhBTkdVTCBTWUxMQUJMRSBIQUxHCitENTYyO0Q1NjI7MTExMiAxMTYxIDExQjE7RDU2MjsxMTEyIDExNjEgMTFCMTsgIyAo7ZWiOyDtlaI7IOGEkuGFoeGGsTsg7ZWiOyDhhJLhhaHhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEhBTE0KK0Q1NjM7RDU2MzsxMTEyIDExNjEgMTFCMjtENTYzOzExMTIgMTE2MSAxMUIyOyAjICjtlaM7IO2Vozsg4YSS4YWh4YayOyDtlaM7IOGEkuGFoeGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSEFMQgorRDU2NDtENTY0OzExMTIgMTE2MSAxMUIzO0Q1NjQ7MTExMiAxMTYxIDExQjM7ICMgKO2VpDsg7ZWkOyDhhJLhhaHhhrM7IO2VpDsg4YSS4YWh4YazOyApIEhBTkdVTCBTWUxMQUJMRSBIQUxTCitENTY1O0Q1NjU7MTExMiAxMTYxIDExQjQ7RDU2NTsxMTEyIDExNjEgMTFCNDsgIyAo7ZWlOyDtlaU7IOGEkuGFoeGGtDsg7ZWlOyDhhJLhhaHhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEhBTFQKK0Q1NjY7RDU2NjsxMTEyIDExNjEgMTFCNTtENTY2OzExMTIgMTE2MSAxMUI1OyAjICjtlaY7IO2Vpjsg4YSS4YWh4Ya1OyDtlaY7IOGEkuGFoeGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSEFMUAorRDU2NztENTY3OzExMTIgMTE2MSAxMUI2O0Q1Njc7MTExMiAxMTYxIDExQjY7ICMgKO2Vpzsg7ZWnOyDhhJLhhaHhhrY7IO2Vpzsg4YSS4YWh4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBIQUxICitENTY4O0Q1Njg7MTExMiAxMTYxIDExQjc7RDU2ODsxMTEyIDExNjEgMTFCNzsgIyAo7ZWoOyDtlag7IOGEkuGFoeGGtzsg7ZWoOyDhhJLhhaHhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEhBTQorRDU2OTtENTY5OzExMTIgMTE2MSAxMUI4O0Q1Njk7MTExMiAxMTYxIDExQjg7ICMgKO2VqTsg7ZWpOyDhhJLhhaHhhrg7IO2VqTsg4YSS4YWh4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBIQUIKK0Q1NkE7RDU2QTsxMTEyIDExNjEgMTFCOTtENTZBOzExMTIgMTE2MSAxMUI5OyAjICjtlao7IO2Vqjsg4YSS4YWh4Ya5OyDtlao7IOGEkuGFoeGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgSEFCUworRDU2QjtENTZCOzExMTIgMTE2MSAxMUJBO0Q1NkI7MTExMiAxMTYxIDExQkE7ICMgKO2Vqzsg7ZWrOyDhhJLhhaHhhro7IO2Vqzsg4YSS4YWh4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBIQVMKK0Q1NkM7RDU2QzsxMTEyIDExNjEgMTFCQjtENTZDOzExMTIgMTE2MSAxMUJCOyAjICjtlaw7IO2VrDsg4YSS4YWh4Ya7OyDtlaw7IOGEkuGFoeGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSEFTUworRDU2RDtENTZEOzExMTIgMTE2MSAxMUJDO0Q1NkQ7MTExMiAxMTYxIDExQkM7ICMgKO2VrTsg7ZWtOyDhhJLhhaHhhrw7IO2VrTsg4YSS4YWh4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBIQU5HCitENTZFO0Q1NkU7MTExMiAxMTYxIDExQkQ7RDU2RTsxMTEyIDExNjEgMTFCRDsgIyAo7ZWuOyDtla47IOGEkuGFoeGGvTsg7ZWuOyDhhJLhhaHhhr07ICkgSEFOR1VMIFNZTExBQkxFIEhBSgorRDU2RjtENTZGOzExMTIgMTE2MSAxMUJFO0Q1NkY7MTExMiAxMTYxIDExQkU7ICMgKO2Vrzsg7ZWvOyDhhJLhhaHhhr47IO2Vrzsg4YSS4YWh4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBIQUMKK0Q1NzA7RDU3MDsxMTEyIDExNjEgMTFCRjtENTcwOzExMTIgMTE2MSAxMUJGOyAjICjtlbA7IO2VsDsg4YSS4YWh4Ya/OyDtlbA7IOGEkuGFoeGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgSEFLCitENTcxO0Q1NzE7MTExMiAxMTYxIDExQzA7RDU3MTsxMTEyIDExNjEgMTFDMDsgIyAo7ZWxOyDtlbE7IOGEkuGFoeGHgDsg7ZWxOyDhhJLhhaHhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEhBVAorRDU3MjtENTcyOzExMTIgMTE2MSAxMUMxO0Q1NzI7MTExMiAxMTYxIDExQzE7ICMgKO2Vsjsg7ZWyOyDhhJLhhaHhh4E7IO2Vsjsg4YSS4YWh4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBIQVAKK0Q1NzM7RDU3MzsxMTEyIDExNjEgMTFDMjtENTczOzExMTIgMTE2MSAxMUMyOyAjICjtlbM7IO2Vszsg4YSS4YWh4YeCOyDtlbM7IOGEkuGFoeGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgSEFICitENTc0O0Q1NzQ7MTExMiAxMTYyO0Q1NzQ7MTExMiAxMTYyOyAjICjtlbQ7IO2VtDsg4YSS4YWiOyDtlbQ7IOGEkuGFojsgKSBIQU5HVUwgU1lMTEFCTEUgSEFFCitENTc1O0Q1NzU7MTExMiAxMTYyIDExQTg7RDU3NTsxMTEyIDExNjIgMTFBODsgIyAo7ZW1OyDtlbU7IOGEkuGFouGGqDsg7ZW1OyDhhJLhhaLhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEhBRUcKK0Q1NzY7RDU3NjsxMTEyIDExNjIgMTFBOTtENTc2OzExMTIgMTE2MiAxMUE5OyAjICjtlbY7IO2Vtjsg4YSS4YWi4YapOyDtlbY7IOGEkuGFouGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSEFFR0cKK0Q1Nzc7RDU3NzsxMTEyIDExNjIgMTFBQTtENTc3OzExMTIgMTE2MiAxMUFBOyAjICjtlbc7IO2Vtzsg4YSS4YWi4YaqOyDtlbc7IOGEkuGFouGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSEFFR1MKK0Q1Nzg7RDU3ODsxMTEyIDExNjIgMTFBQjtENTc4OzExMTIgMTE2MiAxMUFCOyAjICjtlbg7IO2VuDsg4YSS4YWi4YarOyDtlbg7IOGEkuGFouGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgSEFFTgorRDU3OTtENTc5OzExMTIgMTE2MiAxMUFDO0Q1Nzk7MTExMiAxMTYyIDExQUM7ICMgKO2VuTsg7ZW5OyDhhJLhhaLhhqw7IO2VuTsg4YSS4YWi4YasOyApIEhBTkdVTCBTWUxMQUJMRSBIQUVOSgorRDU3QTtENTdBOzExMTIgMTE2MiAxMUFEO0Q1N0E7MTExMiAxMTYyIDExQUQ7ICMgKO2Vujsg7ZW6OyDhhJLhhaLhhq07IO2Vujsg4YSS4YWi4YatOyApIEhBTkdVTCBTWUxMQUJMRSBIQUVOSAorRDU3QjtENTdCOzExMTIgMTE2MiAxMUFFO0Q1N0I7MTExMiAxMTYyIDExQUU7ICMgKO2Vuzsg7ZW7OyDhhJLhhaLhhq47IO2Vuzsg4YSS4YWi4YauOyApIEhBTkdVTCBTWUxMQUJMRSBIQUVECitENTdDO0Q1N0M7MTExMiAxMTYyIDExQUY7RDU3QzsxMTEyIDExNjIgMTFBRjsgIyAo7ZW8OyDtlbw7IOGEkuGFouGGrzsg7ZW8OyDhhJLhhaLhhq87ICkgSEFOR1VMIFNZTExBQkxFIEhBRUwKK0Q1N0Q7RDU3RDsxMTEyIDExNjIgMTFCMDtENTdEOzExMTIgMTE2MiAxMUIwOyAjICjtlb07IO2VvTsg4YSS4YWi4YawOyDtlb07IOGEkuGFouGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSEFFTEcKK0Q1N0U7RDU3RTsxMTEyIDExNjIgMTFCMTtENTdFOzExMTIgMTE2MiAxMUIxOyAjICjtlb47IO2Vvjsg4YSS4YWi4YaxOyDtlb47IOGEkuGFouGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgSEFFTE0KK0Q1N0Y7RDU3RjsxMTEyIDExNjIgMTFCMjtENTdGOzExMTIgMTE2MiAxMUIyOyAjICjtlb87IO2Vvzsg4YSS4YWi4YayOyDtlb87IOGEkuGFouGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSEFFTEIKK0Q1ODA7RDU4MDsxMTEyIDExNjIgMTFCMztENTgwOzExMTIgMTE2MiAxMUIzOyAjICjtloA7IO2WgDsg4YSS4YWi4YazOyDtloA7IOGEkuGFouGGszsgKSBIQU5HVUwgU1lMTEFCTEUgSEFFTFMKK0Q1ODE7RDU4MTsxMTEyIDExNjIgMTFCNDtENTgxOzExMTIgMTE2MiAxMUI0OyAjICjtloE7IO2WgTsg4YSS4YWi4Ya0OyDtloE7IOGEkuGFouGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgSEFFTFQKK0Q1ODI7RDU4MjsxMTEyIDExNjIgMTFCNTtENTgyOzExMTIgMTE2MiAxMUI1OyAjICjtloI7IO2Wgjsg4YSS4YWi4Ya1OyDtloI7IOGEkuGFouGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSEFFTFAKK0Q1ODM7RDU4MzsxMTEyIDExNjIgMTFCNjtENTgzOzExMTIgMTE2MiAxMUI2OyAjICjtloM7IO2Wgzsg4YSS4YWi4Ya2OyDtloM7IOGEkuGFouGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSEFFTEgKK0Q1ODQ7RDU4NDsxMTEyIDExNjIgMTFCNztENTg0OzExMTIgMTE2MiAxMUI3OyAjICjtloQ7IO2WhDsg4YSS4YWi4Ya3OyDtloQ7IOGEkuGFouGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgSEFFTQorRDU4NTtENTg1OzExMTIgMTE2MiAxMUI4O0Q1ODU7MTExMiAxMTYyIDExQjg7ICMgKO2WhTsg7ZaFOyDhhJLhhaLhhrg7IO2WhTsg4YSS4YWi4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBIQUVCCitENTg2O0Q1ODY7MTExMiAxMTYyIDExQjk7RDU4NjsxMTEyIDExNjIgMTFCOTsgIyAo7ZaGOyDtloY7IOGEkuGFouGGuTsg7ZaGOyDhhJLhhaLhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEhBRUJTCitENTg3O0Q1ODc7MTExMiAxMTYyIDExQkE7RDU4NzsxMTEyIDExNjIgMTFCQTsgIyAo7ZaHOyDtloc7IOGEkuGFouGGujsg7ZaHOyDhhJLhhaLhhro7ICkgSEFOR1VMIFNZTExBQkxFIEhBRVMKK0Q1ODg7RDU4ODsxMTEyIDExNjIgMTFCQjtENTg4OzExMTIgMTE2MiAxMUJCOyAjICjtlog7IO2WiDsg4YSS4YWi4Ya7OyDtlog7IOGEkuGFouGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSEFFU1MKK0Q1ODk7RDU4OTsxMTEyIDExNjIgMTFCQztENTg5OzExMTIgMTE2MiAxMUJDOyAjICjtlok7IO2WiTsg4YSS4YWi4Ya8OyDtlok7IOGEkuGFouGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSEFFTkcKK0Q1OEE7RDU4QTsxMTEyIDExNjIgMTFCRDtENThBOzExMTIgMTE2MiAxMUJEOyAjICjtloo7IO2Wijsg4YSS4YWi4Ya9OyDtloo7IOGEkuGFouGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgSEFFSgorRDU4QjtENThCOzExMTIgMTE2MiAxMUJFO0Q1OEI7MTExMiAxMTYyIDExQkU7ICMgKO2Wizsg7ZaLOyDhhJLhhaLhhr47IO2Wizsg4YSS4YWi4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBIQUVDCitENThDO0Q1OEM7MTExMiAxMTYyIDExQkY7RDU4QzsxMTEyIDExNjIgMTFCRjsgIyAo7ZaMOyDtlow7IOGEkuGFouGGvzsg7ZaMOyDhhJLhhaLhhr87ICkgSEFOR1VMIFNZTExBQkxFIEhBRUsKK0Q1OEQ7RDU4RDsxMTEyIDExNjIgMTFDMDtENThEOzExMTIgMTE2MiAxMUMwOyAjICjtlo07IO2WjTsg4YSS4YWi4YeAOyDtlo07IOGEkuGFouGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgSEFFVAorRDU4RTtENThFOzExMTIgMTE2MiAxMUMxO0Q1OEU7MTExMiAxMTYyIDExQzE7ICMgKO2Wjjsg7ZaOOyDhhJLhhaLhh4E7IO2Wjjsg4YSS4YWi4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBIQUVQCitENThGO0Q1OEY7MTExMiAxMTYyIDExQzI7RDU4RjsxMTEyIDExNjIgMTFDMjsgIyAo7ZaPOyDtlo87IOGEkuGFouGHgjsg7ZaPOyDhhJLhhaLhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEhBRUgKK0Q1OTA7RDU5MDsxMTEyIDExNjM7RDU5MDsxMTEyIDExNjM7ICMgKO2WkDsg7ZaQOyDhhJLhhaM7IO2WkDsg4YSS4YWjOyApIEhBTkdVTCBTWUxMQUJMRSBIWUEKK0Q1OTE7RDU5MTsxMTEyIDExNjMgMTFBODtENTkxOzExMTIgMTE2MyAxMUE4OyAjICjtlpE7IO2WkTsg4YSS4YWj4YaoOyDtlpE7IOGEkuGFo+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSFlBRworRDU5MjtENTkyOzExMTIgMTE2MyAxMUE5O0Q1OTI7MTExMiAxMTYzIDExQTk7ICMgKO2Wkjsg7ZaSOyDhhJLhhaPhhqk7IO2Wkjsg4YSS4YWj4YapOyApIEhBTkdVTCBTWUxMQUJMRSBIWUFHRworRDU5MztENTkzOzExMTIgMTE2MyAxMUFBO0Q1OTM7MTExMiAxMTYzIDExQUE7ICMgKO2Wkzsg7ZaTOyDhhJLhhaPhhqo7IO2Wkzsg4YSS4YWj4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBIWUFHUworRDU5NDtENTk0OzExMTIgMTE2MyAxMUFCO0Q1OTQ7MTExMiAxMTYzIDExQUI7ICMgKO2WlDsg7ZaUOyDhhJLhhaPhhqs7IO2WlDsg4YSS4YWj4YarOyApIEhBTkdVTCBTWUxMQUJMRSBIWUFOCitENTk1O0Q1OTU7MTExMiAxMTYzIDExQUM7RDU5NTsxMTEyIDExNjMgMTFBQzsgIyAo7ZaVOyDtlpU7IOGEkuGFo+GGrDsg7ZaVOyDhhJLhhaPhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEhZQU5KCitENTk2O0Q1OTY7MTExMiAxMTYzIDExQUQ7RDU5NjsxMTEyIDExNjMgMTFBRDsgIyAo7ZaWOyDtlpY7IOGEkuGFo+GGrTsg7ZaWOyDhhJLhhaPhhq07ICkgSEFOR1VMIFNZTExBQkxFIEhZQU5ICitENTk3O0Q1OTc7MTExMiAxMTYzIDExQUU7RDU5NzsxMTEyIDExNjMgMTFBRTsgIyAo7ZaXOyDtlpc7IOGEkuGFo+GGrjsg7ZaXOyDhhJLhhaPhhq47ICkgSEFOR1VMIFNZTExBQkxFIEhZQUQKK0Q1OTg7RDU5ODsxMTEyIDExNjMgMTFBRjtENTk4OzExMTIgMTE2MyAxMUFGOyAjICjtlpg7IO2WmDsg4YSS4YWj4YavOyDtlpg7IOGEkuGFo+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgSFlBTAorRDU5OTtENTk5OzExMTIgMTE2MyAxMUIwO0Q1OTk7MTExMiAxMTYzIDExQjA7ICMgKO2WmTsg7ZaZOyDhhJLhhaPhhrA7IO2WmTsg4YSS4YWj4YawOyApIEhBTkdVTCBTWUxMQUJMRSBIWUFMRworRDU5QTtENTlBOzExMTIgMTE2MyAxMUIxO0Q1OUE7MTExMiAxMTYzIDExQjE7ICMgKO2Wmjsg7ZaaOyDhhJLhhaPhhrE7IO2Wmjsg4YSS4YWj4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBIWUFMTQorRDU5QjtENTlCOzExMTIgMTE2MyAxMUIyO0Q1OUI7MTExMiAxMTYzIDExQjI7ICMgKO2Wmzsg7ZabOyDhhJLhhaPhhrI7IO2Wmzsg4YSS4YWj4YayOyApIEhBTkdVTCBTWUxMQUJMRSBIWUFMQgorRDU5QztENTlDOzExMTIgMTE2MyAxMUIzO0Q1OUM7MTExMiAxMTYzIDExQjM7ICMgKO2WnDsg7ZacOyDhhJLhhaPhhrM7IO2WnDsg4YSS4YWj4YazOyApIEhBTkdVTCBTWUxMQUJMRSBIWUFMUworRDU5RDtENTlEOzExMTIgMTE2MyAxMUI0O0Q1OUQ7MTExMiAxMTYzIDExQjQ7ICMgKO2WnTsg7ZadOyDhhJLhhaPhhrQ7IO2WnTsg4YSS4YWj4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBIWUFMVAorRDU5RTtENTlFOzExMTIgMTE2MyAxMUI1O0Q1OUU7MTExMiAxMTYzIDExQjU7ICMgKO2Wnjsg7ZaeOyDhhJLhhaPhhrU7IO2Wnjsg4YSS4YWj4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBIWUFMUAorRDU5RjtENTlGOzExMTIgMTE2MyAxMUI2O0Q1OUY7MTExMiAxMTYzIDExQjY7ICMgKO2Wnzsg7ZafOyDhhJLhhaPhhrY7IO2Wnzsg4YSS4YWj4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBIWUFMSAorRDVBMDtENUEwOzExMTIgMTE2MyAxMUI3O0Q1QTA7MTExMiAxMTYzIDExQjc7ICMgKO2WoDsg7ZagOyDhhJLhhaPhhrc7IO2WoDsg4YSS4YWj4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBIWUFNCitENUExO0Q1QTE7MTExMiAxMTYzIDExQjg7RDVBMTsxMTEyIDExNjMgMTFCODsgIyAo7ZahOyDtlqE7IOGEkuGFo+GGuDsg7ZahOyDhhJLhhaPhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEhZQUIKK0Q1QTI7RDVBMjsxMTEyIDExNjMgMTFCOTtENUEyOzExMTIgMTE2MyAxMUI5OyAjICjtlqI7IO2Wojsg4YSS4YWj4Ya5OyDtlqI7IOGEkuGFo+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgSFlBQlMKK0Q1QTM7RDVBMzsxMTEyIDExNjMgMTFCQTtENUEzOzExMTIgMTE2MyAxMUJBOyAjICjtlqM7IO2Wozsg4YSS4YWj4Ya6OyDtlqM7IOGEkuGFo+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgSFlBUworRDVBNDtENUE0OzExMTIgMTE2MyAxMUJCO0Q1QTQ7MTExMiAxMTYzIDExQkI7ICMgKO2WpDsg7ZakOyDhhJLhhaPhhrs7IO2WpDsg4YSS4YWj4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBIWUFTUworRDVBNTtENUE1OzExMTIgMTE2MyAxMUJDO0Q1QTU7MTExMiAxMTYzIDExQkM7ICMgKO2WpTsg7ZalOyDhhJLhhaPhhrw7IO2WpTsg4YSS4YWj4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBIWUFORworRDVBNjtENUE2OzExMTIgMTE2MyAxMUJEO0Q1QTY7MTExMiAxMTYzIDExQkQ7ICMgKO2Wpjsg7ZamOyDhhJLhhaPhhr07IO2Wpjsg4YSS4YWj4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBIWUFKCitENUE3O0Q1QTc7MTExMiAxMTYzIDExQkU7RDVBNzsxMTEyIDExNjMgMTFCRTsgIyAo7ZanOyDtlqc7IOGEkuGFo+GGvjsg7ZanOyDhhJLhhaPhhr47ICkgSEFOR1VMIFNZTExBQkxFIEhZQUMKK0Q1QTg7RDVBODsxMTEyIDExNjMgMTFCRjtENUE4OzExMTIgMTE2MyAxMUJGOyAjICjtlqg7IO2WqDsg4YSS4YWj4Ya/OyDtlqg7IOGEkuGFo+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgSFlBSworRDVBOTtENUE5OzExMTIgMTE2MyAxMUMwO0Q1QTk7MTExMiAxMTYzIDExQzA7ICMgKO2WqTsg7ZapOyDhhJLhhaPhh4A7IO2WqTsg4YSS4YWj4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBIWUFUCitENUFBO0Q1QUE7MTExMiAxMTYzIDExQzE7RDVBQTsxMTEyIDExNjMgMTFDMTsgIyAo7ZaqOyDtlqo7IOGEkuGFo+GHgTsg7ZaqOyDhhJLhhaPhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEhZQVAKK0Q1QUI7RDVBQjsxMTEyIDExNjMgMTFDMjtENUFCOzExMTIgMTE2MyAxMUMyOyAjICjtlqs7IO2Wqzsg4YSS4YWj4YeCOyDtlqs7IOGEkuGFo+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgSFlBSAorRDVBQztENUFDOzExMTIgMTE2NDtENUFDOzExMTIgMTE2NDsgIyAo7ZasOyDtlqw7IOGEkuGFpDsg7ZasOyDhhJLhhaQ7ICkgSEFOR1VMIFNZTExBQkxFIEhZQUUKK0Q1QUQ7RDVBRDsxMTEyIDExNjQgMTFBODtENUFEOzExMTIgMTE2NCAxMUE4OyAjICjtlq07IO2WrTsg4YSS4YWk4YaoOyDtlq07IOGEkuGFpOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSFlBRUcKK0Q1QUU7RDVBRTsxMTEyIDExNjQgMTFBOTtENUFFOzExMTIgMTE2NCAxMUE5OyAjICjtlq47IO2Wrjsg4YSS4YWk4YapOyDtlq47IOGEkuGFpOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSFlBRUdHCitENUFGO0Q1QUY7MTExMiAxMTY0IDExQUE7RDVBRjsxMTEyIDExNjQgMTFBQTsgIyAo7ZavOyDtlq87IOGEkuGFpOGGqjsg7ZavOyDhhJLhhaThhqo7ICkgSEFOR1VMIFNZTExBQkxFIEhZQUVHUworRDVCMDtENUIwOzExMTIgMTE2NCAxMUFCO0Q1QjA7MTExMiAxMTY0IDExQUI7ICMgKO2WsDsg7ZawOyDhhJLhhaThhqs7IO2WsDsg4YSS4YWk4YarOyApIEhBTkdVTCBTWUxMQUJMRSBIWUFFTgorRDVCMTtENUIxOzExMTIgMTE2NCAxMUFDO0Q1QjE7MTExMiAxMTY0IDExQUM7ICMgKO2WsTsg7ZaxOyDhhJLhhaThhqw7IO2WsTsg4YSS4YWk4YasOyApIEhBTkdVTCBTWUxMQUJMRSBIWUFFTkoKK0Q1QjI7RDVCMjsxMTEyIDExNjQgMTFBRDtENUIyOzExMTIgMTE2NCAxMUFEOyAjICjtlrI7IO2Wsjsg4YSS4YWk4YatOyDtlrI7IOGEkuGFpOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSFlBRU5ICitENUIzO0Q1QjM7MTExMiAxMTY0IDExQUU7RDVCMzsxMTEyIDExNjQgMTFBRTsgIyAo7ZazOyDtlrM7IOGEkuGFpOGGrjsg7ZazOyDhhJLhhaThhq47ICkgSEFOR1VMIFNZTExBQkxFIEhZQUVECitENUI0O0Q1QjQ7MTExMiAxMTY0IDExQUY7RDVCNDsxMTEyIDExNjQgMTFBRjsgIyAo7Za0OyDtlrQ7IOGEkuGFpOGGrzsg7Za0OyDhhJLhhaThhq87ICkgSEFOR1VMIFNZTExBQkxFIEhZQUVMCitENUI1O0Q1QjU7MTExMiAxMTY0IDExQjA7RDVCNTsxMTEyIDExNjQgMTFCMDsgIyAo7Za1OyDtlrU7IOGEkuGFpOGGsDsg7Za1OyDhhJLhhaThhrA7ICkgSEFOR1VMIFNZTExBQkxFIEhZQUVMRworRDVCNjtENUI2OzExMTIgMTE2NCAxMUIxO0Q1QjY7MTExMiAxMTY0IDExQjE7ICMgKO2Wtjsg7Za2OyDhhJLhhaThhrE7IO2Wtjsg4YSS4YWk4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBIWUFFTE0KK0Q1Qjc7RDVCNzsxMTEyIDExNjQgMTFCMjtENUI3OzExMTIgMTE2NCAxMUIyOyAjICjtlrc7IO2Wtzsg4YSS4YWk4YayOyDtlrc7IOGEkuGFpOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSFlBRUxCCitENUI4O0Q1Qjg7MTExMiAxMTY0IDExQjM7RDVCODsxMTEyIDExNjQgMTFCMzsgIyAo7Za4OyDtlrg7IOGEkuGFpOGGszsg7Za4OyDhhJLhhaThhrM7ICkgSEFOR1VMIFNZTExBQkxFIEhZQUVMUworRDVCOTtENUI5OzExMTIgMTE2NCAxMUI0O0Q1Qjk7MTExMiAxMTY0IDExQjQ7ICMgKO2WuTsg7Za5OyDhhJLhhaThhrQ7IO2WuTsg4YSS4YWk4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBIWUFFTFQKK0Q1QkE7RDVCQTsxMTEyIDExNjQgMTFCNTtENUJBOzExMTIgMTE2NCAxMUI1OyAjICjtlro7IO2Wujsg4YSS4YWk4Ya1OyDtlro7IOGEkuGFpOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSFlBRUxQCitENUJCO0Q1QkI7MTExMiAxMTY0IDExQjY7RDVCQjsxMTEyIDExNjQgMTFCNjsgIyAo7Za7OyDtlrs7IOGEkuGFpOGGtjsg7Za7OyDhhJLhhaThhrY7ICkgSEFOR1VMIFNZTExBQkxFIEhZQUVMSAorRDVCQztENUJDOzExMTIgMTE2NCAxMUI3O0Q1QkM7MTExMiAxMTY0IDExQjc7ICMgKO2WvDsg7Za8OyDhhJLhhaThhrc7IO2WvDsg4YSS4YWk4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBIWUFFTQorRDVCRDtENUJEOzExMTIgMTE2NCAxMUI4O0Q1QkQ7MTExMiAxMTY0IDExQjg7ICMgKO2WvTsg7Za9OyDhhJLhhaThhrg7IO2WvTsg4YSS4YWk4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBIWUFFQgorRDVCRTtENUJFOzExMTIgMTE2NCAxMUI5O0Q1QkU7MTExMiAxMTY0IDExQjk7ICMgKO2Wvjsg7Za+OyDhhJLhhaThhrk7IO2Wvjsg4YSS4YWk4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBIWUFFQlMKK0Q1QkY7RDVCRjsxMTEyIDExNjQgMTFCQTtENUJGOzExMTIgMTE2NCAxMUJBOyAjICjtlr87IO2Wvzsg4YSS4YWk4Ya6OyDtlr87IOGEkuGFpOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSFlBRVMKK0Q1QzA7RDVDMDsxMTEyIDExNjQgMTFCQjtENUMwOzExMTIgMTE2NCAxMUJCOyAjICjtl4A7IO2XgDsg4YSS4YWk4Ya7OyDtl4A7IOGEkuGFpOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSFlBRVNTCitENUMxO0Q1QzE7MTExMiAxMTY0IDExQkM7RDVDMTsxMTEyIDExNjQgMTFCQzsgIyAo7ZeBOyDtl4E7IOGEkuGFpOGGvDsg7ZeBOyDhhJLhhaThhrw7ICkgSEFOR1VMIFNZTExBQkxFIEhZQUVORworRDVDMjtENUMyOzExMTIgMTE2NCAxMUJEO0Q1QzI7MTExMiAxMTY0IDExQkQ7ICMgKO2Xgjsg7ZeCOyDhhJLhhaThhr07IO2Xgjsg4YSS4YWk4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBIWUFFSgorRDVDMztENUMzOzExMTIgMTE2NCAxMUJFO0Q1QzM7MTExMiAxMTY0IDExQkU7ICMgKO2Xgzsg7ZeDOyDhhJLhhaThhr47IO2Xgzsg4YSS4YWk4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBIWUFFQworRDVDNDtENUM0OzExMTIgMTE2NCAxMUJGO0Q1QzQ7MTExMiAxMTY0IDExQkY7ICMgKO2XhDsg7ZeEOyDhhJLhhaThhr87IO2XhDsg4YSS4YWk4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBIWUFFSworRDVDNTtENUM1OzExMTIgMTE2NCAxMUMwO0Q1QzU7MTExMiAxMTY0IDExQzA7ICMgKO2XhTsg7ZeFOyDhhJLhhaThh4A7IO2XhTsg4YSS4YWk4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBIWUFFVAorRDVDNjtENUM2OzExMTIgMTE2NCAxMUMxO0Q1QzY7MTExMiAxMTY0IDExQzE7ICMgKO2Xhjsg7ZeGOyDhhJLhhaThh4E7IO2Xhjsg4YSS4YWk4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBIWUFFUAorRDVDNztENUM3OzExMTIgMTE2NCAxMUMyO0Q1Qzc7MTExMiAxMTY0IDExQzI7ICMgKO2Xhzsg7ZeHOyDhhJLhhaThh4I7IO2Xhzsg4YSS4YWk4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBIWUFFSAorRDVDODtENUM4OzExMTIgMTE2NTtENUM4OzExMTIgMTE2NTsgIyAo7ZeIOyDtl4g7IOGEkuGFpTsg7ZeIOyDhhJLhhaU7ICkgSEFOR1VMIFNZTExBQkxFIEhFTworRDVDOTtENUM5OzExMTIgMTE2NSAxMUE4O0Q1Qzk7MTExMiAxMTY1IDExQTg7ICMgKO2XiTsg7ZeJOyDhhJLhhaXhhqg7IO2XiTsg4YSS4YWl4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBIRU9HCitENUNBO0Q1Q0E7MTExMiAxMTY1IDExQTk7RDVDQTsxMTEyIDExNjUgMTFBOTsgIyAo7ZeKOyDtl4o7IOGEkuGFpeGGqTsg7ZeKOyDhhJLhhaXhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEhFT0dHCitENUNCO0Q1Q0I7MTExMiAxMTY1IDExQUE7RDVDQjsxMTEyIDExNjUgMTFBQTsgIyAo7ZeLOyDtl4s7IOGEkuGFpeGGqjsg7ZeLOyDhhJLhhaXhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEhFT0dTCitENUNDO0Q1Q0M7MTExMiAxMTY1IDExQUI7RDVDQzsxMTEyIDExNjUgMTFBQjsgIyAo7ZeMOyDtl4w7IOGEkuGFpeGGqzsg7ZeMOyDhhJLhhaXhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEhFT04KK0Q1Q0Q7RDVDRDsxMTEyIDExNjUgMTFBQztENUNEOzExMTIgMTE2NSAxMUFDOyAjICjtl407IO2XjTsg4YSS4YWl4YasOyDtl407IOGEkuGFpeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSEVPTkoKK0Q1Q0U7RDVDRTsxMTEyIDExNjUgMTFBRDtENUNFOzExMTIgMTE2NSAxMUFEOyAjICjtl447IO2Xjjsg4YSS4YWl4YatOyDtl447IOGEkuGFpeGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSEVPTkgKK0Q1Q0Y7RDVDRjsxMTEyIDExNjUgMTFBRTtENUNGOzExMTIgMTE2NSAxMUFFOyAjICjtl487IO2Xjzsg4YSS4YWl4YauOyDtl487IOGEkuGFpeGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSEVPRAorRDVEMDtENUQwOzExMTIgMTE2NSAxMUFGO0Q1RDA7MTExMiAxMTY1IDExQUY7ICMgKO2XkDsg7ZeQOyDhhJLhhaXhhq87IO2XkDsg4YSS4YWl4YavOyApIEhBTkdVTCBTWUxMQUJMRSBIRU9MCitENUQxO0Q1RDE7MTExMiAxMTY1IDExQjA7RDVEMTsxMTEyIDExNjUgMTFCMDsgIyAo7ZeROyDtl5E7IOGEkuGFpeGGsDsg7ZeROyDhhJLhhaXhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEhFT0xHCitENUQyO0Q1RDI7MTExMiAxMTY1IDExQjE7RDVEMjsxMTEyIDExNjUgMTFCMTsgIyAo7ZeSOyDtl5I7IOGEkuGFpeGGsTsg7ZeSOyDhhJLhhaXhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEhFT0xNCitENUQzO0Q1RDM7MTExMiAxMTY1IDExQjI7RDVEMzsxMTEyIDExNjUgMTFCMjsgIyAo7ZeTOyDtl5M7IOGEkuGFpeGGsjsg7ZeTOyDhhJLhhaXhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEhFT0xCCitENUQ0O0Q1RDQ7MTExMiAxMTY1IDExQjM7RDVENDsxMTEyIDExNjUgMTFCMzsgIyAo7ZeUOyDtl5Q7IOGEkuGFpeGGszsg7ZeUOyDhhJLhhaXhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEhFT0xTCitENUQ1O0Q1RDU7MTExMiAxMTY1IDExQjQ7RDVENTsxMTEyIDExNjUgMTFCNDsgIyAo7ZeVOyDtl5U7IOGEkuGFpeGGtDsg7ZeVOyDhhJLhhaXhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEhFT0xUCitENUQ2O0Q1RDY7MTExMiAxMTY1IDExQjU7RDVENjsxMTEyIDExNjUgMTFCNTsgIyAo7ZeWOyDtl5Y7IOGEkuGFpeGGtTsg7ZeWOyDhhJLhhaXhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEhFT0xQCitENUQ3O0Q1RDc7MTExMiAxMTY1IDExQjY7RDVENzsxMTEyIDExNjUgMTFCNjsgIyAo7ZeXOyDtl5c7IOGEkuGFpeGGtjsg7ZeXOyDhhJLhhaXhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEhFT0xICitENUQ4O0Q1RDg7MTExMiAxMTY1IDExQjc7RDVEODsxMTEyIDExNjUgMTFCNzsgIyAo7ZeYOyDtl5g7IOGEkuGFpeGGtzsg7ZeYOyDhhJLhhaXhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEhFT00KK0Q1RDk7RDVEOTsxMTEyIDExNjUgMTFCODtENUQ5OzExMTIgMTE2NSAxMUI4OyAjICjtl5k7IO2XmTsg4YSS4YWl4Ya4OyDtl5k7IOGEkuGFpeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSEVPQgorRDVEQTtENURBOzExMTIgMTE2NSAxMUI5O0Q1REE7MTExMiAxMTY1IDExQjk7ICMgKO2Xmjsg7ZeaOyDhhJLhhaXhhrk7IO2Xmjsg4YSS4YWl4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBIRU9CUworRDVEQjtENURCOzExMTIgMTE2NSAxMUJBO0Q1REI7MTExMiAxMTY1IDExQkE7ICMgKO2Xmzsg7ZebOyDhhJLhhaXhhro7IO2Xmzsg4YSS4YWl4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBIRU9TCitENURDO0Q1REM7MTExMiAxMTY1IDExQkI7RDVEQzsxMTEyIDExNjUgMTFCQjsgIyAo7ZecOyDtl5w7IOGEkuGFpeGGuzsg7ZecOyDhhJLhhaXhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEhFT1NTCitENUREO0Q1REQ7MTExMiAxMTY1IDExQkM7RDVERDsxMTEyIDExNjUgMTFCQzsgIyAo7ZedOyDtl507IOGEkuGFpeGGvDsg7ZedOyDhhJLhhaXhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEhFT05HCitENURFO0Q1REU7MTExMiAxMTY1IDExQkQ7RDVERTsxMTEyIDExNjUgMTFCRDsgIyAo7ZeeOyDtl547IOGEkuGFpeGGvTsg7ZeeOyDhhJLhhaXhhr07ICkgSEFOR1VMIFNZTExBQkxFIEhFT0oKK0Q1REY7RDVERjsxMTEyIDExNjUgMTFCRTtENURGOzExMTIgMTE2NSAxMUJFOyAjICjtl587IO2Xnzsg4YSS4YWl4Ya+OyDtl587IOGEkuGFpeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSEVPQworRDVFMDtENUUwOzExMTIgMTE2NSAxMUJGO0Q1RTA7MTExMiAxMTY1IDExQkY7ICMgKO2XoDsg7ZegOyDhhJLhhaXhhr87IO2XoDsg4YSS4YWl4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBIRU9LCitENUUxO0Q1RTE7MTExMiAxMTY1IDExQzA7RDVFMTsxMTEyIDExNjUgMTFDMDsgIyAo7ZehOyDtl6E7IOGEkuGFpeGHgDsg7ZehOyDhhJLhhaXhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEhFT1QKK0Q1RTI7RDVFMjsxMTEyIDExNjUgMTFDMTtENUUyOzExMTIgMTE2NSAxMUMxOyAjICjtl6I7IO2Xojsg4YSS4YWl4YeBOyDtl6I7IOGEkuGFpeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSEVPUAorRDVFMztENUUzOzExMTIgMTE2NSAxMUMyO0Q1RTM7MTExMiAxMTY1IDExQzI7ICMgKO2Xozsg7ZejOyDhhJLhhaXhh4I7IO2Xozsg4YSS4YWl4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBIRU9ICitENUU0O0Q1RTQ7MTExMiAxMTY2O0Q1RTQ7MTExMiAxMTY2OyAjICjtl6Q7IO2XpDsg4YSS4YWmOyDtl6Q7IOGEkuGFpjsgKSBIQU5HVUwgU1lMTEFCTEUgSEUKK0Q1RTU7RDVFNTsxMTEyIDExNjYgMTFBODtENUU1OzExMTIgMTE2NiAxMUE4OyAjICjtl6U7IO2XpTsg4YSS4YWm4YaoOyDtl6U7IOGEkuGFpuGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSEVHCitENUU2O0Q1RTY7MTExMiAxMTY2IDExQTk7RDVFNjsxMTEyIDExNjYgMTFBOTsgIyAo7ZemOyDtl6Y7IOGEkuGFpuGGqTsg7ZemOyDhhJLhhabhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEhFR0cKK0Q1RTc7RDVFNzsxMTEyIDExNjYgMTFBQTtENUU3OzExMTIgMTE2NiAxMUFBOyAjICjtl6c7IO2Xpzsg4YSS4YWm4YaqOyDtl6c7IOGEkuGFpuGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSEVHUworRDVFODtENUU4OzExMTIgMTE2NiAxMUFCO0Q1RTg7MTExMiAxMTY2IDExQUI7ICMgKO2XqDsg7ZeoOyDhhJLhhabhhqs7IO2XqDsg4YSS4YWm4YarOyApIEhBTkdVTCBTWUxMQUJMRSBIRU4KK0Q1RTk7RDVFOTsxMTEyIDExNjYgMTFBQztENUU5OzExMTIgMTE2NiAxMUFDOyAjICjtl6k7IO2XqTsg4YSS4YWm4YasOyDtl6k7IOGEkuGFpuGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSEVOSgorRDVFQTtENUVBOzExMTIgMTE2NiAxMUFEO0Q1RUE7MTExMiAxMTY2IDExQUQ7ICMgKO2Xqjsg7ZeqOyDhhJLhhabhhq07IO2Xqjsg4YSS4YWm4YatOyApIEhBTkdVTCBTWUxMQUJMRSBIRU5ICitENUVCO0Q1RUI7MTExMiAxMTY2IDExQUU7RDVFQjsxMTEyIDExNjYgMTFBRTsgIyAo7ZerOyDtl6s7IOGEkuGFpuGGrjsg7ZerOyDhhJLhhabhhq47ICkgSEFOR1VMIFNZTExBQkxFIEhFRAorRDVFQztENUVDOzExMTIgMTE2NiAxMUFGO0Q1RUM7MTExMiAxMTY2IDExQUY7ICMgKO2XrDsg7ZesOyDhhJLhhabhhq87IO2XrDsg4YSS4YWm4YavOyApIEhBTkdVTCBTWUxMQUJMRSBIRUwKK0Q1RUQ7RDVFRDsxMTEyIDExNjYgMTFCMDtENUVEOzExMTIgMTE2NiAxMUIwOyAjICjtl607IO2XrTsg4YSS4YWm4YawOyDtl607IOGEkuGFpuGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSEVMRworRDVFRTtENUVFOzExMTIgMTE2NiAxMUIxO0Q1RUU7MTExMiAxMTY2IDExQjE7ICMgKO2Xrjsg7ZeuOyDhhJLhhabhhrE7IO2Xrjsg4YSS4YWm4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBIRUxNCitENUVGO0Q1RUY7MTExMiAxMTY2IDExQjI7RDVFRjsxMTEyIDExNjYgMTFCMjsgIyAo7ZevOyDtl687IOGEkuGFpuGGsjsg7ZevOyDhhJLhhabhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEhFTEIKK0Q1RjA7RDVGMDsxMTEyIDExNjYgMTFCMztENUYwOzExMTIgMTE2NiAxMUIzOyAjICjtl7A7IO2XsDsg4YSS4YWm4YazOyDtl7A7IOGEkuGFpuGGszsgKSBIQU5HVUwgU1lMTEFCTEUgSEVMUworRDVGMTtENUYxOzExMTIgMTE2NiAxMUI0O0Q1RjE7MTExMiAxMTY2IDExQjQ7ICMgKO2XsTsg7ZexOyDhhJLhhabhhrQ7IO2XsTsg4YSS4YWm4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBIRUxUCitENUYyO0Q1RjI7MTExMiAxMTY2IDExQjU7RDVGMjsxMTEyIDExNjYgMTFCNTsgIyAo7ZeyOyDtl7I7IOGEkuGFpuGGtTsg7ZeyOyDhhJLhhabhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEhFTFAKK0Q1RjM7RDVGMzsxMTEyIDExNjYgMTFCNjtENUYzOzExMTIgMTE2NiAxMUI2OyAjICjtl7M7IO2Xszsg4YSS4YWm4Ya2OyDtl7M7IOGEkuGFpuGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSEVMSAorRDVGNDtENUY0OzExMTIgMTE2NiAxMUI3O0Q1RjQ7MTExMiAxMTY2IDExQjc7ICMgKO2XtDsg7Ze0OyDhhJLhhabhhrc7IO2XtDsg4YSS4YWm4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBIRU0KK0Q1RjU7RDVGNTsxMTEyIDExNjYgMTFCODtENUY1OzExMTIgMTE2NiAxMUI4OyAjICjtl7U7IO2XtTsg4YSS4YWm4Ya4OyDtl7U7IOGEkuGFpuGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSEVCCitENUY2O0Q1RjY7MTExMiAxMTY2IDExQjk7RDVGNjsxMTEyIDExNjYgMTFCOTsgIyAo7Ze2OyDtl7Y7IOGEkuGFpuGGuTsg7Ze2OyDhhJLhhabhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEhFQlMKK0Q1Rjc7RDVGNzsxMTEyIDExNjYgMTFCQTtENUY3OzExMTIgMTE2NiAxMUJBOyAjICjtl7c7IO2Xtzsg4YSS4YWm4Ya6OyDtl7c7IOGEkuGFpuGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSEVTCitENUY4O0Q1Rjg7MTExMiAxMTY2IDExQkI7RDVGODsxMTEyIDExNjYgMTFCQjsgIyAo7Ze4OyDtl7g7IOGEkuGFpuGGuzsg7Ze4OyDhhJLhhabhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEhFU1MKK0Q1Rjk7RDVGOTsxMTEyIDExNjYgMTFCQztENUY5OzExMTIgMTE2NiAxMUJDOyAjICjtl7k7IO2XuTsg4YSS4YWm4Ya8OyDtl7k7IOGEkuGFpuGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSEVORworRDVGQTtENUZBOzExMTIgMTE2NiAxMUJEO0Q1RkE7MTExMiAxMTY2IDExQkQ7ICMgKO2Xujsg7Ze6OyDhhJLhhabhhr07IO2Xujsg4YSS4YWm4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBIRUoKK0Q1RkI7RDVGQjsxMTEyIDExNjYgMTFCRTtENUZCOzExMTIgMTE2NiAxMUJFOyAjICjtl7s7IO2Xuzsg4YSS4YWm4Ya+OyDtl7s7IOGEkuGFpuGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSEVDCitENUZDO0Q1RkM7MTExMiAxMTY2IDExQkY7RDVGQzsxMTEyIDExNjYgMTFCRjsgIyAo7Ze8OyDtl7w7IOGEkuGFpuGGvzsg7Ze8OyDhhJLhhabhhr87ICkgSEFOR1VMIFNZTExBQkxFIEhFSworRDVGRDtENUZEOzExMTIgMTE2NiAxMUMwO0Q1RkQ7MTExMiAxMTY2IDExQzA7ICMgKO2XvTsg7Ze9OyDhhJLhhabhh4A7IO2XvTsg4YSS4YWm4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBIRVQKK0Q1RkU7RDVGRTsxMTEyIDExNjYgMTFDMTtENUZFOzExMTIgMTE2NiAxMUMxOyAjICjtl747IO2Xvjsg4YSS4YWm4YeBOyDtl747IOGEkuGFpuGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSEVQCitENUZGO0Q1RkY7MTExMiAxMTY2IDExQzI7RDVGRjsxMTEyIDExNjYgMTFDMjsgIyAo7Ze/OyDtl787IOGEkuGFpuGHgjsg7Ze/OyDhhJLhhabhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEhFSAorRDYwMDtENjAwOzExMTIgMTE2NztENjAwOzExMTIgMTE2NzsgIyAo7ZiAOyDtmIA7IOGEkuGFpzsg7ZiAOyDhhJLhhac7ICkgSEFOR1VMIFNZTExBQkxFIEhZRU8KK0Q2MDE7RDYwMTsxMTEyIDExNjcgMTFBODtENjAxOzExMTIgMTE2NyAxMUE4OyAjICjtmIE7IO2YgTsg4YSS4YWn4YaoOyDtmIE7IOGEkuGFp+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSFlFT0cKK0Q2MDI7RDYwMjsxMTEyIDExNjcgMTFBOTtENjAyOzExMTIgMTE2NyAxMUE5OyAjICjtmII7IO2Ygjsg4YSS4YWn4YapOyDtmII7IOGEkuGFp+GGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSFlFT0dHCitENjAzO0Q2MDM7MTExMiAxMTY3IDExQUE7RDYwMzsxMTEyIDExNjcgMTFBQTsgIyAo7ZiDOyDtmIM7IOGEkuGFp+GGqjsg7ZiDOyDhhJLhhafhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEhZRU9HUworRDYwNDtENjA0OzExMTIgMTE2NyAxMUFCO0Q2MDQ7MTExMiAxMTY3IDExQUI7ICMgKO2YhDsg7ZiEOyDhhJLhhafhhqs7IO2YhDsg4YSS4YWn4YarOyApIEhBTkdVTCBTWUxMQUJMRSBIWUVPTgorRDYwNTtENjA1OzExMTIgMTE2NyAxMUFDO0Q2MDU7MTExMiAxMTY3IDExQUM7ICMgKO2YhTsg7ZiFOyDhhJLhhafhhqw7IO2YhTsg4YSS4YWn4YasOyApIEhBTkdVTCBTWUxMQUJMRSBIWUVPTkoKK0Q2MDY7RDYwNjsxMTEyIDExNjcgMTFBRDtENjA2OzExMTIgMTE2NyAxMUFEOyAjICjtmIY7IO2Yhjsg4YSS4YWn4YatOyDtmIY7IOGEkuGFp+GGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSFlFT05ICitENjA3O0Q2MDc7MTExMiAxMTY3IDExQUU7RDYwNzsxMTEyIDExNjcgMTFBRTsgIyAo7ZiHOyDtmIc7IOGEkuGFp+GGrjsg7ZiHOyDhhJLhhafhhq47ICkgSEFOR1VMIFNZTExBQkxFIEhZRU9ECitENjA4O0Q2MDg7MTExMiAxMTY3IDExQUY7RDYwODsxMTEyIDExNjcgMTFBRjsgIyAo7ZiIOyDtmIg7IOGEkuGFp+GGrzsg7ZiIOyDhhJLhhafhhq87ICkgSEFOR1VMIFNZTExBQkxFIEhZRU9MCitENjA5O0Q2MDk7MTExMiAxMTY3IDExQjA7RDYwOTsxMTEyIDExNjcgMTFCMDsgIyAo7ZiJOyDtmIk7IOGEkuGFp+GGsDsg7ZiJOyDhhJLhhafhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEhZRU9MRworRDYwQTtENjBBOzExMTIgMTE2NyAxMUIxO0Q2MEE7MTExMiAxMTY3IDExQjE7ICMgKO2Yijsg7ZiKOyDhhJLhhafhhrE7IO2Yijsg4YSS4YWn4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBIWUVPTE0KK0Q2MEI7RDYwQjsxMTEyIDExNjcgMTFCMjtENjBCOzExMTIgMTE2NyAxMUIyOyAjICjtmIs7IO2Yizsg4YSS4YWn4YayOyDtmIs7IOGEkuGFp+GGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSFlFT0xCCitENjBDO0Q2MEM7MTExMiAxMTY3IDExQjM7RDYwQzsxMTEyIDExNjcgMTFCMzsgIyAo7ZiMOyDtmIw7IOGEkuGFp+GGszsg7ZiMOyDhhJLhhafhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEhZRU9MUworRDYwRDtENjBEOzExMTIgMTE2NyAxMUI0O0Q2MEQ7MTExMiAxMTY3IDExQjQ7ICMgKO2YjTsg7ZiNOyDhhJLhhafhhrQ7IO2YjTsg4YSS4YWn4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBIWUVPTFQKK0Q2MEU7RDYwRTsxMTEyIDExNjcgMTFCNTtENjBFOzExMTIgMTE2NyAxMUI1OyAjICjtmI47IO2Yjjsg4YSS4YWn4Ya1OyDtmI47IOGEkuGFp+GGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSFlFT0xQCitENjBGO0Q2MEY7MTExMiAxMTY3IDExQjY7RDYwRjsxMTEyIDExNjcgMTFCNjsgIyAo7ZiPOyDtmI87IOGEkuGFp+GGtjsg7ZiPOyDhhJLhhafhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEhZRU9MSAorRDYxMDtENjEwOzExMTIgMTE2NyAxMUI3O0Q2MTA7MTExMiAxMTY3IDExQjc7ICMgKO2YkDsg7ZiQOyDhhJLhhafhhrc7IO2YkDsg4YSS4YWn4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBIWUVPTQorRDYxMTtENjExOzExMTIgMTE2NyAxMUI4O0Q2MTE7MTExMiAxMTY3IDExQjg7ICMgKO2YkTsg7ZiROyDhhJLhhafhhrg7IO2YkTsg4YSS4YWn4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBIWUVPQgorRDYxMjtENjEyOzExMTIgMTE2NyAxMUI5O0Q2MTI7MTExMiAxMTY3IDExQjk7ICMgKO2Ykjsg7ZiSOyDhhJLhhafhhrk7IO2Ykjsg4YSS4YWn4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBIWUVPQlMKK0Q2MTM7RDYxMzsxMTEyIDExNjcgMTFCQTtENjEzOzExMTIgMTE2NyAxMUJBOyAjICjtmJM7IO2Ykzsg4YSS4YWn4Ya6OyDtmJM7IOGEkuGFp+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgSFlFT1MKK0Q2MTQ7RDYxNDsxMTEyIDExNjcgMTFCQjtENjE0OzExMTIgMTE2NyAxMUJCOyAjICjtmJQ7IO2YlDsg4YSS4YWn4Ya7OyDtmJQ7IOGEkuGFp+GGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSFlFT1NTCitENjE1O0Q2MTU7MTExMiAxMTY3IDExQkM7RDYxNTsxMTEyIDExNjcgMTFCQzsgIyAo7ZiVOyDtmJU7IOGEkuGFp+GGvDsg7ZiVOyDhhJLhhafhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEhZRU9ORworRDYxNjtENjE2OzExMTIgMTE2NyAxMUJEO0Q2MTY7MTExMiAxMTY3IDExQkQ7ICMgKO2Yljsg7ZiWOyDhhJLhhafhhr07IO2Yljsg4YSS4YWn4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBIWUVPSgorRDYxNztENjE3OzExMTIgMTE2NyAxMUJFO0Q2MTc7MTExMiAxMTY3IDExQkU7ICMgKO2Ylzsg7ZiXOyDhhJLhhafhhr47IO2Ylzsg4YSS4YWn4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBIWUVPQworRDYxODtENjE4OzExMTIgMTE2NyAxMUJGO0Q2MTg7MTExMiAxMTY3IDExQkY7ICMgKO2YmDsg7ZiYOyDhhJLhhafhhr87IO2YmDsg4YSS4YWn4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBIWUVPSworRDYxOTtENjE5OzExMTIgMTE2NyAxMUMwO0Q2MTk7MTExMiAxMTY3IDExQzA7ICMgKO2YmTsg7ZiZOyDhhJLhhafhh4A7IO2YmTsg4YSS4YWn4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBIWUVPVAorRDYxQTtENjFBOzExMTIgMTE2NyAxMUMxO0Q2MUE7MTExMiAxMTY3IDExQzE7ICMgKO2Ymjsg7ZiaOyDhhJLhhafhh4E7IO2Ymjsg4YSS4YWn4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBIWUVPUAorRDYxQjtENjFCOzExMTIgMTE2NyAxMUMyO0Q2MUI7MTExMiAxMTY3IDExQzI7ICMgKO2Ymzsg7ZibOyDhhJLhhafhh4I7IO2Ymzsg4YSS4YWn4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBIWUVPSAorRDYxQztENjFDOzExMTIgMTE2ODtENjFDOzExMTIgMTE2ODsgIyAo7ZicOyDtmJw7IOGEkuGFqDsg7ZicOyDhhJLhhag7ICkgSEFOR1VMIFNZTExBQkxFIEhZRQorRDYxRDtENjFEOzExMTIgMTE2OCAxMUE4O0Q2MUQ7MTExMiAxMTY4IDExQTg7ICMgKO2YnTsg7ZidOyDhhJLhhajhhqg7IO2YnTsg4YSS4YWo4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBIWUVHCitENjFFO0Q2MUU7MTExMiAxMTY4IDExQTk7RDYxRTsxMTEyIDExNjggMTFBOTsgIyAo7ZieOyDtmJ47IOGEkuGFqOGGqTsg7ZieOyDhhJLhhajhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEhZRUdHCitENjFGO0Q2MUY7MTExMiAxMTY4IDExQUE7RDYxRjsxMTEyIDExNjggMTFBQTsgIyAo7ZifOyDtmJ87IOGEkuGFqOGGqjsg7ZifOyDhhJLhhajhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEhZRUdTCitENjIwO0Q2MjA7MTExMiAxMTY4IDExQUI7RDYyMDsxMTEyIDExNjggMTFBQjsgIyAo7ZigOyDtmKA7IOGEkuGFqOGGqzsg7ZigOyDhhJLhhajhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEhZRU4KK0Q2MjE7RDYyMTsxMTEyIDExNjggMTFBQztENjIxOzExMTIgMTE2OCAxMUFDOyAjICjtmKE7IO2YoTsg4YSS4YWo4YasOyDtmKE7IOGEkuGFqOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSFlFTkoKK0Q2MjI7RDYyMjsxMTEyIDExNjggMTFBRDtENjIyOzExMTIgMTE2OCAxMUFEOyAjICjtmKI7IO2Yojsg4YSS4YWo4YatOyDtmKI7IOGEkuGFqOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSFlFTkgKK0Q2MjM7RDYyMzsxMTEyIDExNjggMTFBRTtENjIzOzExMTIgMTE2OCAxMUFFOyAjICjtmKM7IO2Yozsg4YSS4YWo4YauOyDtmKM7IOGEkuGFqOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSFlFRAorRDYyNDtENjI0OzExMTIgMTE2OCAxMUFGO0Q2MjQ7MTExMiAxMTY4IDExQUY7ICMgKO2YpDsg7ZikOyDhhJLhhajhhq87IO2YpDsg4YSS4YWo4YavOyApIEhBTkdVTCBTWUxMQUJMRSBIWUVMCitENjI1O0Q2MjU7MTExMiAxMTY4IDExQjA7RDYyNTsxMTEyIDExNjggMTFCMDsgIyAo7ZilOyDtmKU7IOGEkuGFqOGGsDsg7ZilOyDhhJLhhajhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEhZRUxHCitENjI2O0Q2MjY7MTExMiAxMTY4IDExQjE7RDYyNjsxMTEyIDExNjggMTFCMTsgIyAo7ZimOyDtmKY7IOGEkuGFqOGGsTsg7ZimOyDhhJLhhajhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEhZRUxNCitENjI3O0Q2Mjc7MTExMiAxMTY4IDExQjI7RDYyNzsxMTEyIDExNjggMTFCMjsgIyAo7ZinOyDtmKc7IOGEkuGFqOGGsjsg7ZinOyDhhJLhhajhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEhZRUxCCitENjI4O0Q2Mjg7MTExMiAxMTY4IDExQjM7RDYyODsxMTEyIDExNjggMTFCMzsgIyAo7ZioOyDtmKg7IOGEkuGFqOGGszsg7ZioOyDhhJLhhajhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEhZRUxTCitENjI5O0Q2Mjk7MTExMiAxMTY4IDExQjQ7RDYyOTsxMTEyIDExNjggMTFCNDsgIyAo7ZipOyDtmKk7IOGEkuGFqOGGtDsg7ZipOyDhhJLhhajhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEhZRUxUCitENjJBO0Q2MkE7MTExMiAxMTY4IDExQjU7RDYyQTsxMTEyIDExNjggMTFCNTsgIyAo7ZiqOyDtmKo7IOGEkuGFqOGGtTsg7ZiqOyDhhJLhhajhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEhZRUxQCitENjJCO0Q2MkI7MTExMiAxMTY4IDExQjY7RDYyQjsxMTEyIDExNjggMTFCNjsgIyAo7ZirOyDtmKs7IOGEkuGFqOGGtjsg7ZirOyDhhJLhhajhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEhZRUxICitENjJDO0Q2MkM7MTExMiAxMTY4IDExQjc7RDYyQzsxMTEyIDExNjggMTFCNzsgIyAo7ZisOyDtmKw7IOGEkuGFqOGGtzsg7ZisOyDhhJLhhajhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEhZRU0KK0Q2MkQ7RDYyRDsxMTEyIDExNjggMTFCODtENjJEOzExMTIgMTE2OCAxMUI4OyAjICjtmK07IO2YrTsg4YSS4YWo4Ya4OyDtmK07IOGEkuGFqOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSFlFQgorRDYyRTtENjJFOzExMTIgMTE2OCAxMUI5O0Q2MkU7MTExMiAxMTY4IDExQjk7ICMgKO2Yrjsg7ZiuOyDhhJLhhajhhrk7IO2Yrjsg4YSS4YWo4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBIWUVCUworRDYyRjtENjJGOzExMTIgMTE2OCAxMUJBO0Q2MkY7MTExMiAxMTY4IDExQkE7ICMgKO2Yrzsg7ZivOyDhhJLhhajhhro7IO2Yrzsg4YSS4YWo4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBIWUVTCitENjMwO0Q2MzA7MTExMiAxMTY4IDExQkI7RDYzMDsxMTEyIDExNjggMTFCQjsgIyAo7ZiwOyDtmLA7IOGEkuGFqOGGuzsg7ZiwOyDhhJLhhajhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEhZRVNTCitENjMxO0Q2MzE7MTExMiAxMTY4IDExQkM7RDYzMTsxMTEyIDExNjggMTFCQzsgIyAo7ZixOyDtmLE7IOGEkuGFqOGGvDsg7ZixOyDhhJLhhajhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEhZRU5HCitENjMyO0Q2MzI7MTExMiAxMTY4IDExQkQ7RDYzMjsxMTEyIDExNjggMTFCRDsgIyAo7ZiyOyDtmLI7IOGEkuGFqOGGvTsg7ZiyOyDhhJLhhajhhr07ICkgSEFOR1VMIFNZTExBQkxFIEhZRUoKK0Q2MzM7RDYzMzsxMTEyIDExNjggMTFCRTtENjMzOzExMTIgMTE2OCAxMUJFOyAjICjtmLM7IO2Yszsg4YSS4YWo4Ya+OyDtmLM7IOGEkuGFqOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSFlFQworRDYzNDtENjM0OzExMTIgMTE2OCAxMUJGO0Q2MzQ7MTExMiAxMTY4IDExQkY7ICMgKO2YtDsg7Zi0OyDhhJLhhajhhr87IO2YtDsg4YSS4YWo4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBIWUVLCitENjM1O0Q2MzU7MTExMiAxMTY4IDExQzA7RDYzNTsxMTEyIDExNjggMTFDMDsgIyAo7Zi1OyDtmLU7IOGEkuGFqOGHgDsg7Zi1OyDhhJLhhajhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEhZRVQKK0Q2MzY7RDYzNjsxMTEyIDExNjggMTFDMTtENjM2OzExMTIgMTE2OCAxMUMxOyAjICjtmLY7IO2Ytjsg4YSS4YWo4YeBOyDtmLY7IOGEkuGFqOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSFlFUAorRDYzNztENjM3OzExMTIgMTE2OCAxMUMyO0Q2Mzc7MTExMiAxMTY4IDExQzI7ICMgKO2Ytzsg7Zi3OyDhhJLhhajhh4I7IO2Ytzsg4YSS4YWo4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBIWUVICitENjM4O0Q2Mzg7MTExMiAxMTY5O0Q2Mzg7MTExMiAxMTY5OyAjICjtmLg7IO2YuDsg4YSS4YWpOyDtmLg7IOGEkuGFqTsgKSBIQU5HVUwgU1lMTEFCTEUgSE8KK0Q2Mzk7RDYzOTsxMTEyIDExNjkgMTFBODtENjM5OzExMTIgMTE2OSAxMUE4OyAjICjtmLk7IO2YuTsg4YSS4YWp4YaoOyDtmLk7IOGEkuGFqeGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSE9HCitENjNBO0Q2M0E7MTExMiAxMTY5IDExQTk7RDYzQTsxMTEyIDExNjkgMTFBOTsgIyAo7Zi6OyDtmLo7IOGEkuGFqeGGqTsg7Zi6OyDhhJLhhanhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEhPR0cKK0Q2M0I7RDYzQjsxMTEyIDExNjkgMTFBQTtENjNCOzExMTIgMTE2OSAxMUFBOyAjICjtmLs7IO2Yuzsg4YSS4YWp4YaqOyDtmLs7IOGEkuGFqeGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSE9HUworRDYzQztENjNDOzExMTIgMTE2OSAxMUFCO0Q2M0M7MTExMiAxMTY5IDExQUI7ICMgKO2YvDsg7Zi8OyDhhJLhhanhhqs7IO2YvDsg4YSS4YWp4YarOyApIEhBTkdVTCBTWUxMQUJMRSBIT04KK0Q2M0Q7RDYzRDsxMTEyIDExNjkgMTFBQztENjNEOzExMTIgMTE2OSAxMUFDOyAjICjtmL07IO2YvTsg4YSS4YWp4YasOyDtmL07IOGEkuGFqeGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSE9OSgorRDYzRTtENjNFOzExMTIgMTE2OSAxMUFEO0Q2M0U7MTExMiAxMTY5IDExQUQ7ICMgKO2Yvjsg7Zi+OyDhhJLhhanhhq07IO2Yvjsg4YSS4YWp4YatOyApIEhBTkdVTCBTWUxMQUJMRSBIT05ICitENjNGO0Q2M0Y7MTExMiAxMTY5IDExQUU7RDYzRjsxMTEyIDExNjkgMTFBRTsgIyAo7Zi/OyDtmL87IOGEkuGFqeGGrjsg7Zi/OyDhhJLhhanhhq47ICkgSEFOR1VMIFNZTExBQkxFIEhPRAorRDY0MDtENjQwOzExMTIgMTE2OSAxMUFGO0Q2NDA7MTExMiAxMTY5IDExQUY7ICMgKO2ZgDsg7ZmAOyDhhJLhhanhhq87IO2ZgDsg4YSS4YWp4YavOyApIEhBTkdVTCBTWUxMQUJMRSBIT0wKK0Q2NDE7RDY0MTsxMTEyIDExNjkgMTFCMDtENjQxOzExMTIgMTE2OSAxMUIwOyAjICjtmYE7IO2ZgTsg4YSS4YWp4YawOyDtmYE7IOGEkuGFqeGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSE9MRworRDY0MjtENjQyOzExMTIgMTE2OSAxMUIxO0Q2NDI7MTExMiAxMTY5IDExQjE7ICMgKO2Zgjsg7ZmCOyDhhJLhhanhhrE7IO2Zgjsg4YSS4YWp4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBIT0xNCitENjQzO0Q2NDM7MTExMiAxMTY5IDExQjI7RDY0MzsxMTEyIDExNjkgMTFCMjsgIyAo7ZmDOyDtmYM7IOGEkuGFqeGGsjsg7ZmDOyDhhJLhhanhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEhPTEIKK0Q2NDQ7RDY0NDsxMTEyIDExNjkgMTFCMztENjQ0OzExMTIgMTE2OSAxMUIzOyAjICjtmYQ7IO2ZhDsg4YSS4YWp4YazOyDtmYQ7IOGEkuGFqeGGszsgKSBIQU5HVUwgU1lMTEFCTEUgSE9MUworRDY0NTtENjQ1OzExMTIgMTE2OSAxMUI0O0Q2NDU7MTExMiAxMTY5IDExQjQ7ICMgKO2ZhTsg7ZmFOyDhhJLhhanhhrQ7IO2ZhTsg4YSS4YWp4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBIT0xUCitENjQ2O0Q2NDY7MTExMiAxMTY5IDExQjU7RDY0NjsxMTEyIDExNjkgMTFCNTsgIyAo7ZmGOyDtmYY7IOGEkuGFqeGGtTsg7ZmGOyDhhJLhhanhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEhPTFAKK0Q2NDc7RDY0NzsxMTEyIDExNjkgMTFCNjtENjQ3OzExMTIgMTE2OSAxMUI2OyAjICjtmYc7IO2Zhzsg4YSS4YWp4Ya2OyDtmYc7IOGEkuGFqeGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSE9MSAorRDY0ODtENjQ4OzExMTIgMTE2OSAxMUI3O0Q2NDg7MTExMiAxMTY5IDExQjc7ICMgKO2ZiDsg7ZmIOyDhhJLhhanhhrc7IO2ZiDsg4YSS4YWp4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBIT00KK0Q2NDk7RDY0OTsxMTEyIDExNjkgMTFCODtENjQ5OzExMTIgMTE2OSAxMUI4OyAjICjtmYk7IO2ZiTsg4YSS4YWp4Ya4OyDtmYk7IOGEkuGFqeGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSE9CCitENjRBO0Q2NEE7MTExMiAxMTY5IDExQjk7RDY0QTsxMTEyIDExNjkgMTFCOTsgIyAo7ZmKOyDtmYo7IOGEkuGFqeGGuTsg7ZmKOyDhhJLhhanhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEhPQlMKK0Q2NEI7RDY0QjsxMTEyIDExNjkgMTFCQTtENjRCOzExMTIgMTE2OSAxMUJBOyAjICjtmYs7IO2Zizsg4YSS4YWp4Ya6OyDtmYs7IOGEkuGFqeGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSE9TCitENjRDO0Q2NEM7MTExMiAxMTY5IDExQkI7RDY0QzsxMTEyIDExNjkgMTFCQjsgIyAo7ZmMOyDtmYw7IOGEkuGFqeGGuzsg7ZmMOyDhhJLhhanhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEhPU1MKK0Q2NEQ7RDY0RDsxMTEyIDExNjkgMTFCQztENjREOzExMTIgMTE2OSAxMUJDOyAjICjtmY07IO2ZjTsg4YSS4YWp4Ya8OyDtmY07IOGEkuGFqeGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSE9ORworRDY0RTtENjRFOzExMTIgMTE2OSAxMUJEO0Q2NEU7MTExMiAxMTY5IDExQkQ7ICMgKO2Zjjsg7ZmOOyDhhJLhhanhhr07IO2Zjjsg4YSS4YWp4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBIT0oKK0Q2NEY7RDY0RjsxMTEyIDExNjkgMTFCRTtENjRGOzExMTIgMTE2OSAxMUJFOyAjICjtmY87IO2Zjzsg4YSS4YWp4Ya+OyDtmY87IOGEkuGFqeGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSE9DCitENjUwO0Q2NTA7MTExMiAxMTY5IDExQkY7RDY1MDsxMTEyIDExNjkgMTFCRjsgIyAo7ZmQOyDtmZA7IOGEkuGFqeGGvzsg7ZmQOyDhhJLhhanhhr87ICkgSEFOR1VMIFNZTExBQkxFIEhPSworRDY1MTtENjUxOzExMTIgMTE2OSAxMUMwO0Q2NTE7MTExMiAxMTY5IDExQzA7ICMgKO2ZkTsg7ZmROyDhhJLhhanhh4A7IO2ZkTsg4YSS4YWp4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBIT1QKK0Q2NTI7RDY1MjsxMTEyIDExNjkgMTFDMTtENjUyOzExMTIgMTE2OSAxMUMxOyAjICjtmZI7IO2Zkjsg4YSS4YWp4YeBOyDtmZI7IOGEkuGFqeGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSE9QCitENjUzO0Q2NTM7MTExMiAxMTY5IDExQzI7RDY1MzsxMTEyIDExNjkgMTFDMjsgIyAo7ZmTOyDtmZM7IOGEkuGFqeGHgjsg7ZmTOyDhhJLhhanhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEhPSAorRDY1NDtENjU0OzExMTIgMTE2QTtENjU0OzExMTIgMTE2QTsgIyAo7ZmUOyDtmZQ7IOGEkuGFqjsg7ZmUOyDhhJLhhao7ICkgSEFOR1VMIFNZTExBQkxFIEhXQQorRDY1NTtENjU1OzExMTIgMTE2QSAxMUE4O0Q2NTU7MTExMiAxMTZBIDExQTg7ICMgKO2ZlTsg7ZmVOyDhhJLhharhhqg7IO2ZlTsg4YSS4YWq4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBIV0FHCitENjU2O0Q2NTY7MTExMiAxMTZBIDExQTk7RDY1NjsxMTEyIDExNkEgMTFBOTsgIyAo7ZmWOyDtmZY7IOGEkuGFquGGqTsg7ZmWOyDhhJLhharhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEhXQUdHCitENjU3O0Q2NTc7MTExMiAxMTZBIDExQUE7RDY1NzsxMTEyIDExNkEgMTFBQTsgIyAo7ZmXOyDtmZc7IOGEkuGFquGGqjsg7ZmXOyDhhJLhharhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEhXQUdTCitENjU4O0Q2NTg7MTExMiAxMTZBIDExQUI7RDY1ODsxMTEyIDExNkEgMTFBQjsgIyAo7ZmYOyDtmZg7IOGEkuGFquGGqzsg7ZmYOyDhhJLhharhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEhXQU4KK0Q2NTk7RDY1OTsxMTEyIDExNkEgMTFBQztENjU5OzExMTIgMTE2QSAxMUFDOyAjICjtmZk7IO2ZmTsg4YSS4YWq4YasOyDtmZk7IOGEkuGFquGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSFdBTkoKK0Q2NUE7RDY1QTsxMTEyIDExNkEgMTFBRDtENjVBOzExMTIgMTE2QSAxMUFEOyAjICjtmZo7IO2Zmjsg4YSS4YWq4YatOyDtmZo7IOGEkuGFquGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSFdBTkgKK0Q2NUI7RDY1QjsxMTEyIDExNkEgMTFBRTtENjVCOzExMTIgMTE2QSAxMUFFOyAjICjtmZs7IO2Zmzsg4YSS4YWq4YauOyDtmZs7IOGEkuGFquGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSFdBRAorRDY1QztENjVDOzExMTIgMTE2QSAxMUFGO0Q2NUM7MTExMiAxMTZBIDExQUY7ICMgKO2ZnDsg7ZmcOyDhhJLhharhhq87IO2ZnDsg4YSS4YWq4YavOyApIEhBTkdVTCBTWUxMQUJMRSBIV0FMCitENjVEO0Q2NUQ7MTExMiAxMTZBIDExQjA7RDY1RDsxMTEyIDExNkEgMTFCMDsgIyAo7ZmdOyDtmZ07IOGEkuGFquGGsDsg7ZmdOyDhhJLhharhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEhXQUxHCitENjVFO0Q2NUU7MTExMiAxMTZBIDExQjE7RDY1RTsxMTEyIDExNkEgMTFCMTsgIyAo7ZmeOyDtmZ47IOGEkuGFquGGsTsg7ZmeOyDhhJLhharhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEhXQUxNCitENjVGO0Q2NUY7MTExMiAxMTZBIDExQjI7RDY1RjsxMTEyIDExNkEgMTFCMjsgIyAo7ZmfOyDtmZ87IOGEkuGFquGGsjsg7ZmfOyDhhJLhharhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEhXQUxCCitENjYwO0Q2NjA7MTExMiAxMTZBIDExQjM7RDY2MDsxMTEyIDExNkEgMTFCMzsgIyAo7ZmgOyDtmaA7IOGEkuGFquGGszsg7ZmgOyDhhJLhharhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEhXQUxTCitENjYxO0Q2NjE7MTExMiAxMTZBIDExQjQ7RDY2MTsxMTEyIDExNkEgMTFCNDsgIyAo7ZmhOyDtmaE7IOGEkuGFquGGtDsg7ZmhOyDhhJLhharhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEhXQUxUCitENjYyO0Q2NjI7MTExMiAxMTZBIDExQjU7RDY2MjsxMTEyIDExNkEgMTFCNTsgIyAo7ZmiOyDtmaI7IOGEkuGFquGGtTsg7ZmiOyDhhJLhharhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEhXQUxQCitENjYzO0Q2NjM7MTExMiAxMTZBIDExQjY7RDY2MzsxMTEyIDExNkEgMTFCNjsgIyAo7ZmjOyDtmaM7IOGEkuGFquGGtjsg7ZmjOyDhhJLhharhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEhXQUxICitENjY0O0Q2NjQ7MTExMiAxMTZBIDExQjc7RDY2NDsxMTEyIDExNkEgMTFCNzsgIyAo7ZmkOyDtmaQ7IOGEkuGFquGGtzsg7ZmkOyDhhJLhharhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEhXQU0KK0Q2NjU7RDY2NTsxMTEyIDExNkEgMTFCODtENjY1OzExMTIgMTE2QSAxMUI4OyAjICjtmaU7IO2ZpTsg4YSS4YWq4Ya4OyDtmaU7IOGEkuGFquGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSFdBQgorRDY2NjtENjY2OzExMTIgMTE2QSAxMUI5O0Q2NjY7MTExMiAxMTZBIDExQjk7ICMgKO2Zpjsg7ZmmOyDhhJLhharhhrk7IO2Zpjsg4YSS4YWq4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBIV0FCUworRDY2NztENjY3OzExMTIgMTE2QSAxMUJBO0Q2Njc7MTExMiAxMTZBIDExQkE7ICMgKO2Zpzsg7ZmnOyDhhJLhharhhro7IO2Zpzsg4YSS4YWq4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBIV0FTCitENjY4O0Q2Njg7MTExMiAxMTZBIDExQkI7RDY2ODsxMTEyIDExNkEgMTFCQjsgIyAo7ZmoOyDtmag7IOGEkuGFquGGuzsg7ZmoOyDhhJLhharhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEhXQVNTCitENjY5O0Q2Njk7MTExMiAxMTZBIDExQkM7RDY2OTsxMTEyIDExNkEgMTFCQzsgIyAo7ZmpOyDtmak7IOGEkuGFquGGvDsg7ZmpOyDhhJLhharhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEhXQU5HCitENjZBO0Q2NkE7MTExMiAxMTZBIDExQkQ7RDY2QTsxMTEyIDExNkEgMTFCRDsgIyAo7ZmqOyDtmao7IOGEkuGFquGGvTsg7ZmqOyDhhJLhharhhr07ICkgSEFOR1VMIFNZTExBQkxFIEhXQUoKK0Q2NkI7RDY2QjsxMTEyIDExNkEgMTFCRTtENjZCOzExMTIgMTE2QSAxMUJFOyAjICjtmas7IO2Zqzsg4YSS4YWq4Ya+OyDtmas7IOGEkuGFquGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSFdBQworRDY2QztENjZDOzExMTIgMTE2QSAxMUJGO0Q2NkM7MTExMiAxMTZBIDExQkY7ICMgKO2ZrDsg7ZmsOyDhhJLhharhhr87IO2ZrDsg4YSS4YWq4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBIV0FLCitENjZEO0Q2NkQ7MTExMiAxMTZBIDExQzA7RDY2RDsxMTEyIDExNkEgMTFDMDsgIyAo7ZmtOyDtma07IOGEkuGFquGHgDsg7ZmtOyDhhJLhharhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEhXQVQKK0Q2NkU7RDY2RTsxMTEyIDExNkEgMTFDMTtENjZFOzExMTIgMTE2QSAxMUMxOyAjICjtma47IO2Zrjsg4YSS4YWq4YeBOyDtma47IOGEkuGFquGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSFdBUAorRDY2RjtENjZGOzExMTIgMTE2QSAxMUMyO0Q2NkY7MTExMiAxMTZBIDExQzI7ICMgKO2Zrzsg7ZmvOyDhhJLhharhh4I7IO2Zrzsg4YSS4YWq4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBIV0FICitENjcwO0Q2NzA7MTExMiAxMTZCO0Q2NzA7MTExMiAxMTZCOyAjICjtmbA7IO2ZsDsg4YSS4YWrOyDtmbA7IOGEkuGFqzsgKSBIQU5HVUwgU1lMTEFCTEUgSFdBRQorRDY3MTtENjcxOzExMTIgMTE2QiAxMUE4O0Q2NzE7MTExMiAxMTZCIDExQTg7ICMgKO2ZsTsg7ZmxOyDhhJLhhavhhqg7IO2ZsTsg4YSS4YWr4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBIV0FFRworRDY3MjtENjcyOzExMTIgMTE2QiAxMUE5O0Q2NzI7MTExMiAxMTZCIDExQTk7ICMgKO2Zsjsg7ZmyOyDhhJLhhavhhqk7IO2Zsjsg4YSS4YWr4YapOyApIEhBTkdVTCBTWUxMQUJMRSBIV0FFR0cKK0Q2NzM7RDY3MzsxMTEyIDExNkIgMTFBQTtENjczOzExMTIgMTE2QiAxMUFBOyAjICjtmbM7IO2Zszsg4YSS4YWr4YaqOyDtmbM7IOGEkuGFq+GGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSFdBRUdTCitENjc0O0Q2NzQ7MTExMiAxMTZCIDExQUI7RDY3NDsxMTEyIDExNkIgMTFBQjsgIyAo7Zm0OyDtmbQ7IOGEkuGFq+GGqzsg7Zm0OyDhhJLhhavhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEhXQUVOCitENjc1O0Q2NzU7MTExMiAxMTZCIDExQUM7RDY3NTsxMTEyIDExNkIgMTFBQzsgIyAo7Zm1OyDtmbU7IOGEkuGFq+GGrDsg7Zm1OyDhhJLhhavhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEhXQUVOSgorRDY3NjtENjc2OzExMTIgMTE2QiAxMUFEO0Q2NzY7MTExMiAxMTZCIDExQUQ7ICMgKO2Ztjsg7Zm2OyDhhJLhhavhhq07IO2Ztjsg4YSS4YWr4YatOyApIEhBTkdVTCBTWUxMQUJMRSBIV0FFTkgKK0Q2Nzc7RDY3NzsxMTEyIDExNkIgMTFBRTtENjc3OzExMTIgMTE2QiAxMUFFOyAjICjtmbc7IO2Ztzsg4YSS4YWr4YauOyDtmbc7IOGEkuGFq+GGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSFdBRUQKK0Q2Nzg7RDY3ODsxMTEyIDExNkIgMTFBRjtENjc4OzExMTIgMTE2QiAxMUFGOyAjICjtmbg7IO2ZuDsg4YSS4YWr4YavOyDtmbg7IOGEkuGFq+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgSFdBRUwKK0Q2Nzk7RDY3OTsxMTEyIDExNkIgMTFCMDtENjc5OzExMTIgMTE2QiAxMUIwOyAjICjtmbk7IO2ZuTsg4YSS4YWr4YawOyDtmbk7IOGEkuGFq+GGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSFdBRUxHCitENjdBO0Q2N0E7MTExMiAxMTZCIDExQjE7RDY3QTsxMTEyIDExNkIgMTFCMTsgIyAo7Zm6OyDtmbo7IOGEkuGFq+GGsTsg7Zm6OyDhhJLhhavhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEhXQUVMTQorRDY3QjtENjdCOzExMTIgMTE2QiAxMUIyO0Q2N0I7MTExMiAxMTZCIDExQjI7ICMgKO2Zuzsg7Zm7OyDhhJLhhavhhrI7IO2Zuzsg4YSS4YWr4YayOyApIEhBTkdVTCBTWUxMQUJMRSBIV0FFTEIKK0Q2N0M7RDY3QzsxMTEyIDExNkIgMTFCMztENjdDOzExMTIgMTE2QiAxMUIzOyAjICjtmbw7IO2ZvDsg4YSS4YWr4YazOyDtmbw7IOGEkuGFq+GGszsgKSBIQU5HVUwgU1lMTEFCTEUgSFdBRUxTCitENjdEO0Q2N0Q7MTExMiAxMTZCIDExQjQ7RDY3RDsxMTEyIDExNkIgMTFCNDsgIyAo7Zm9OyDtmb07IOGEkuGFq+GGtDsg7Zm9OyDhhJLhhavhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEhXQUVMVAorRDY3RTtENjdFOzExMTIgMTE2QiAxMUI1O0Q2N0U7MTExMiAxMTZCIDExQjU7ICMgKO2Zvjsg7Zm+OyDhhJLhhavhhrU7IO2Zvjsg4YSS4YWr4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBIV0FFTFAKK0Q2N0Y7RDY3RjsxMTEyIDExNkIgMTFCNjtENjdGOzExMTIgMTE2QiAxMUI2OyAjICjtmb87IO2Zvzsg4YSS4YWr4Ya2OyDtmb87IOGEkuGFq+GGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSFdBRUxICitENjgwO0Q2ODA7MTExMiAxMTZCIDExQjc7RDY4MDsxMTEyIDExNkIgMTFCNzsgIyAo7ZqAOyDtmoA7IOGEkuGFq+GGtzsg7ZqAOyDhhJLhhavhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEhXQUVNCitENjgxO0Q2ODE7MTExMiAxMTZCIDExQjg7RDY4MTsxMTEyIDExNkIgMTFCODsgIyAo7ZqBOyDtmoE7IOGEkuGFq+GGuDsg7ZqBOyDhhJLhhavhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEhXQUVCCitENjgyO0Q2ODI7MTExMiAxMTZCIDExQjk7RDY4MjsxMTEyIDExNkIgMTFCOTsgIyAo7ZqCOyDtmoI7IOGEkuGFq+GGuTsg7ZqCOyDhhJLhhavhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEhXQUVCUworRDY4MztENjgzOzExMTIgMTE2QiAxMUJBO0Q2ODM7MTExMiAxMTZCIDExQkE7ICMgKO2agzsg7ZqDOyDhhJLhhavhhro7IO2agzsg4YSS4YWr4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBIV0FFUworRDY4NDtENjg0OzExMTIgMTE2QiAxMUJCO0Q2ODQ7MTExMiAxMTZCIDExQkI7ICMgKO2ahDsg7ZqEOyDhhJLhhavhhrs7IO2ahDsg4YSS4YWr4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBIV0FFU1MKK0Q2ODU7RDY4NTsxMTEyIDExNkIgMTFCQztENjg1OzExMTIgMTE2QiAxMUJDOyAjICjtmoU7IO2ahTsg4YSS4YWr4Ya8OyDtmoU7IOGEkuGFq+GGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSFdBRU5HCitENjg2O0Q2ODY7MTExMiAxMTZCIDExQkQ7RDY4NjsxMTEyIDExNkIgMTFCRDsgIyAo7ZqGOyDtmoY7IOGEkuGFq+GGvTsg7ZqGOyDhhJLhhavhhr07ICkgSEFOR1VMIFNZTExBQkxFIEhXQUVKCitENjg3O0Q2ODc7MTExMiAxMTZCIDExQkU7RDY4NzsxMTEyIDExNkIgMTFCRTsgIyAo7ZqHOyDtmoc7IOGEkuGFq+GGvjsg7ZqHOyDhhJLhhavhhr47ICkgSEFOR1VMIFNZTExBQkxFIEhXQUVDCitENjg4O0Q2ODg7MTExMiAxMTZCIDExQkY7RDY4ODsxMTEyIDExNkIgMTFCRjsgIyAo7ZqIOyDtmog7IOGEkuGFq+GGvzsg7ZqIOyDhhJLhhavhhr87ICkgSEFOR1VMIFNZTExBQkxFIEhXQUVLCitENjg5O0Q2ODk7MTExMiAxMTZCIDExQzA7RDY4OTsxMTEyIDExNkIgMTFDMDsgIyAo7ZqJOyDtmok7IOGEkuGFq+GHgDsg7ZqJOyDhhJLhhavhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEhXQUVUCitENjhBO0Q2OEE7MTExMiAxMTZCIDExQzE7RDY4QTsxMTEyIDExNkIgMTFDMTsgIyAo7ZqKOyDtmoo7IOGEkuGFq+GHgTsg7ZqKOyDhhJLhhavhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEhXQUVQCitENjhCO0Q2OEI7MTExMiAxMTZCIDExQzI7RDY4QjsxMTEyIDExNkIgMTFDMjsgIyAo7ZqLOyDtmos7IOGEkuGFq+GHgjsg7ZqLOyDhhJLhhavhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEhXQUVICitENjhDO0Q2OEM7MTExMiAxMTZDO0Q2OEM7MTExMiAxMTZDOyAjICjtmow7IO2ajDsg4YSS4YWsOyDtmow7IOGEkuGFrDsgKSBIQU5HVUwgU1lMTEFCTEUgSE9FCitENjhEO0Q2OEQ7MTExMiAxMTZDIDExQTg7RDY4RDsxMTEyIDExNkMgMTFBODsgIyAo7ZqNOyDtmo07IOGEkuGFrOGGqDsg7ZqNOyDhhJLhhazhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEhPRUcKK0Q2OEU7RDY4RTsxMTEyIDExNkMgMTFBOTtENjhFOzExMTIgMTE2QyAxMUE5OyAjICjtmo47IO2ajjsg4YSS4YWs4YapOyDtmo47IOGEkuGFrOGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSE9FR0cKK0Q2OEY7RDY4RjsxMTEyIDExNkMgMTFBQTtENjhGOzExMTIgMTE2QyAxMUFBOyAjICjtmo87IO2ajzsg4YSS4YWs4YaqOyDtmo87IOGEkuGFrOGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSE9FR1MKK0Q2OTA7RDY5MDsxMTEyIDExNkMgMTFBQjtENjkwOzExMTIgMTE2QyAxMUFCOyAjICjtmpA7IO2akDsg4YSS4YWs4YarOyDtmpA7IOGEkuGFrOGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgSE9FTgorRDY5MTtENjkxOzExMTIgMTE2QyAxMUFDO0Q2OTE7MTExMiAxMTZDIDExQUM7ICMgKO2akTsg7ZqROyDhhJLhhazhhqw7IO2akTsg4YSS4YWs4YasOyApIEhBTkdVTCBTWUxMQUJMRSBIT0VOSgorRDY5MjtENjkyOzExMTIgMTE2QyAxMUFEO0Q2OTI7MTExMiAxMTZDIDExQUQ7ICMgKO2akjsg7ZqSOyDhhJLhhazhhq07IO2akjsg4YSS4YWs4YatOyApIEhBTkdVTCBTWUxMQUJMRSBIT0VOSAorRDY5MztENjkzOzExMTIgMTE2QyAxMUFFO0Q2OTM7MTExMiAxMTZDIDExQUU7ICMgKO2akzsg7ZqTOyDhhJLhhazhhq47IO2akzsg4YSS4YWs4YauOyApIEhBTkdVTCBTWUxMQUJMRSBIT0VECitENjk0O0Q2OTQ7MTExMiAxMTZDIDExQUY7RDY5NDsxMTEyIDExNkMgMTFBRjsgIyAo7ZqUOyDtmpQ7IOGEkuGFrOGGrzsg7ZqUOyDhhJLhhazhhq87ICkgSEFOR1VMIFNZTExBQkxFIEhPRUwKK0Q2OTU7RDY5NTsxMTEyIDExNkMgMTFCMDtENjk1OzExMTIgMTE2QyAxMUIwOyAjICjtmpU7IO2alTsg4YSS4YWs4YawOyDtmpU7IOGEkuGFrOGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSE9FTEcKK0Q2OTY7RDY5NjsxMTEyIDExNkMgMTFCMTtENjk2OzExMTIgMTE2QyAxMUIxOyAjICjtmpY7IO2aljsg4YSS4YWs4YaxOyDtmpY7IOGEkuGFrOGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgSE9FTE0KK0Q2OTc7RDY5NzsxMTEyIDExNkMgMTFCMjtENjk3OzExMTIgMTE2QyAxMUIyOyAjICjtmpc7IO2alzsg4YSS4YWs4YayOyDtmpc7IOGEkuGFrOGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSE9FTEIKK0Q2OTg7RDY5ODsxMTEyIDExNkMgMTFCMztENjk4OzExMTIgMTE2QyAxMUIzOyAjICjtmpg7IO2amDsg4YSS4YWs4YazOyDtmpg7IOGEkuGFrOGGszsgKSBIQU5HVUwgU1lMTEFCTEUgSE9FTFMKK0Q2OTk7RDY5OTsxMTEyIDExNkMgMTFCNDtENjk5OzExMTIgMTE2QyAxMUI0OyAjICjtmpk7IO2amTsg4YSS4YWs4Ya0OyDtmpk7IOGEkuGFrOGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgSE9FTFQKK0Q2OUE7RDY5QTsxMTEyIDExNkMgMTFCNTtENjlBOzExMTIgMTE2QyAxMUI1OyAjICjtmpo7IO2amjsg4YSS4YWs4Ya1OyDtmpo7IOGEkuGFrOGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSE9FTFAKK0Q2OUI7RDY5QjsxMTEyIDExNkMgMTFCNjtENjlCOzExMTIgMTE2QyAxMUI2OyAjICjtmps7IO2amzsg4YSS4YWs4Ya2OyDtmps7IOGEkuGFrOGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSE9FTEgKK0Q2OUM7RDY5QzsxMTEyIDExNkMgMTFCNztENjlDOzExMTIgMTE2QyAxMUI3OyAjICjtmpw7IO2anDsg4YSS4YWs4Ya3OyDtmpw7IOGEkuGFrOGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgSE9FTQorRDY5RDtENjlEOzExMTIgMTE2QyAxMUI4O0Q2OUQ7MTExMiAxMTZDIDExQjg7ICMgKO2anTsg7ZqdOyDhhJLhhazhhrg7IO2anTsg4YSS4YWs4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBIT0VCCitENjlFO0Q2OUU7MTExMiAxMTZDIDExQjk7RDY5RTsxMTEyIDExNkMgMTFCOTsgIyAo7ZqeOyDtmp47IOGEkuGFrOGGuTsg7ZqeOyDhhJLhhazhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEhPRUJTCitENjlGO0Q2OUY7MTExMiAxMTZDIDExQkE7RDY5RjsxMTEyIDExNkMgMTFCQTsgIyAo7ZqfOyDtmp87IOGEkuGFrOGGujsg7ZqfOyDhhJLhhazhhro7ICkgSEFOR1VMIFNZTExBQkxFIEhPRVMKK0Q2QTA7RDZBMDsxMTEyIDExNkMgMTFCQjtENkEwOzExMTIgMTE2QyAxMUJCOyAjICjtmqA7IO2aoDsg4YSS4YWs4Ya7OyDtmqA7IOGEkuGFrOGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSE9FU1MKK0Q2QTE7RDZBMTsxMTEyIDExNkMgMTFCQztENkExOzExMTIgMTE2QyAxMUJDOyAjICjtmqE7IO2aoTsg4YSS4YWs4Ya8OyDtmqE7IOGEkuGFrOGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSE9FTkcKK0Q2QTI7RDZBMjsxMTEyIDExNkMgMTFCRDtENkEyOzExMTIgMTE2QyAxMUJEOyAjICjtmqI7IO2aojsg4YSS4YWs4Ya9OyDtmqI7IOGEkuGFrOGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgSE9FSgorRDZBMztENkEzOzExMTIgMTE2QyAxMUJFO0Q2QTM7MTExMiAxMTZDIDExQkU7ICMgKO2aozsg7ZqjOyDhhJLhhazhhr47IO2aozsg4YSS4YWs4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBIT0VDCitENkE0O0Q2QTQ7MTExMiAxMTZDIDExQkY7RDZBNDsxMTEyIDExNkMgMTFCRjsgIyAo7ZqkOyDtmqQ7IOGEkuGFrOGGvzsg7ZqkOyDhhJLhhazhhr87ICkgSEFOR1VMIFNZTExBQkxFIEhPRUsKK0Q2QTU7RDZBNTsxMTEyIDExNkMgMTFDMDtENkE1OzExMTIgMTE2QyAxMUMwOyAjICjtmqU7IO2apTsg4YSS4YWs4YeAOyDtmqU7IOGEkuGFrOGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgSE9FVAorRDZBNjtENkE2OzExMTIgMTE2QyAxMUMxO0Q2QTY7MTExMiAxMTZDIDExQzE7ICMgKO2apjsg7ZqmOyDhhJLhhazhh4E7IO2apjsg4YSS4YWs4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBIT0VQCitENkE3O0Q2QTc7MTExMiAxMTZDIDExQzI7RDZBNzsxMTEyIDExNkMgMTFDMjsgIyAo7ZqnOyDtmqc7IOGEkuGFrOGHgjsg7ZqnOyDhhJLhhazhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEhPRUgKK0Q2QTg7RDZBODsxMTEyIDExNkQ7RDZBODsxMTEyIDExNkQ7ICMgKO2aqDsg7ZqoOyDhhJLhha07IO2aqDsg4YSS4YWtOyApIEhBTkdVTCBTWUxMQUJMRSBIWU8KK0Q2QTk7RDZBOTsxMTEyIDExNkQgMTFBODtENkE5OzExMTIgMTE2RCAxMUE4OyAjICjtmqk7IO2aqTsg4YSS4YWt4YaoOyDtmqk7IOGEkuGFreGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSFlPRworRDZBQTtENkFBOzExMTIgMTE2RCAxMUE5O0Q2QUE7MTExMiAxMTZEIDExQTk7ICMgKO2aqjsg7ZqqOyDhhJLhha3hhqk7IO2aqjsg4YSS4YWt4YapOyApIEhBTkdVTCBTWUxMQUJMRSBIWU9HRworRDZBQjtENkFCOzExMTIgMTE2RCAxMUFBO0Q2QUI7MTExMiAxMTZEIDExQUE7ICMgKO2aqzsg7ZqrOyDhhJLhha3hhqo7IO2aqzsg4YSS4YWt4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBIWU9HUworRDZBQztENkFDOzExMTIgMTE2RCAxMUFCO0Q2QUM7MTExMiAxMTZEIDExQUI7ICMgKO2arDsg7ZqsOyDhhJLhha3hhqs7IO2arDsg4YSS4YWt4YarOyApIEhBTkdVTCBTWUxMQUJMRSBIWU9OCitENkFEO0Q2QUQ7MTExMiAxMTZEIDExQUM7RDZBRDsxMTEyIDExNkQgMTFBQzsgIyAo7ZqtOyDtmq07IOGEkuGFreGGrDsg7ZqtOyDhhJLhha3hhqw7ICkgSEFOR1VMIFNZTExBQkxFIEhZT05KCitENkFFO0Q2QUU7MTExMiAxMTZEIDExQUQ7RDZBRTsxMTEyIDExNkQgMTFBRDsgIyAo7ZquOyDtmq47IOGEkuGFreGGrTsg7ZquOyDhhJLhha3hhq07ICkgSEFOR1VMIFNZTExBQkxFIEhZT05ICitENkFGO0Q2QUY7MTExMiAxMTZEIDExQUU7RDZBRjsxMTEyIDExNkQgMTFBRTsgIyAo7ZqvOyDtmq87IOGEkuGFreGGrjsg7ZqvOyDhhJLhha3hhq47ICkgSEFOR1VMIFNZTExBQkxFIEhZT0QKK0Q2QjA7RDZCMDsxMTEyIDExNkQgMTFBRjtENkIwOzExMTIgMTE2RCAxMUFGOyAjICjtmrA7IO2asDsg4YSS4YWt4YavOyDtmrA7IOGEkuGFreGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgSFlPTAorRDZCMTtENkIxOzExMTIgMTE2RCAxMUIwO0Q2QjE7MTExMiAxMTZEIDExQjA7ICMgKO2asTsg7ZqxOyDhhJLhha3hhrA7IO2asTsg4YSS4YWt4YawOyApIEhBTkdVTCBTWUxMQUJMRSBIWU9MRworRDZCMjtENkIyOzExMTIgMTE2RCAxMUIxO0Q2QjI7MTExMiAxMTZEIDExQjE7ICMgKO2asjsg7ZqyOyDhhJLhha3hhrE7IO2asjsg4YSS4YWt4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBIWU9MTQorRDZCMztENkIzOzExMTIgMTE2RCAxMUIyO0Q2QjM7MTExMiAxMTZEIDExQjI7ICMgKO2aszsg7ZqzOyDhhJLhha3hhrI7IO2aszsg4YSS4YWt4YayOyApIEhBTkdVTCBTWUxMQUJMRSBIWU9MQgorRDZCNDtENkI0OzExMTIgMTE2RCAxMUIzO0Q2QjQ7MTExMiAxMTZEIDExQjM7ICMgKO2atDsg7Zq0OyDhhJLhha3hhrM7IO2atDsg4YSS4YWt4YazOyApIEhBTkdVTCBTWUxMQUJMRSBIWU9MUworRDZCNTtENkI1OzExMTIgMTE2RCAxMUI0O0Q2QjU7MTExMiAxMTZEIDExQjQ7ICMgKO2atTsg7Zq1OyDhhJLhha3hhrQ7IO2atTsg4YSS4YWt4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBIWU9MVAorRDZCNjtENkI2OzExMTIgMTE2RCAxMUI1O0Q2QjY7MTExMiAxMTZEIDExQjU7ICMgKO2atjsg7Zq2OyDhhJLhha3hhrU7IO2atjsg4YSS4YWt4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBIWU9MUAorRDZCNztENkI3OzExMTIgMTE2RCAxMUI2O0Q2Qjc7MTExMiAxMTZEIDExQjY7ICMgKO2atzsg7Zq3OyDhhJLhha3hhrY7IO2atzsg4YSS4YWt4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBIWU9MSAorRDZCODtENkI4OzExMTIgMTE2RCAxMUI3O0Q2Qjg7MTExMiAxMTZEIDExQjc7ICMgKO2auDsg7Zq4OyDhhJLhha3hhrc7IO2auDsg4YSS4YWt4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBIWU9NCitENkI5O0Q2Qjk7MTExMiAxMTZEIDExQjg7RDZCOTsxMTEyIDExNkQgMTFCODsgIyAo7Zq5OyDtmrk7IOGEkuGFreGGuDsg7Zq5OyDhhJLhha3hhrg7ICkgSEFOR1VMIFNZTExBQkxFIEhZT0IKK0Q2QkE7RDZCQTsxMTEyIDExNkQgMTFCOTtENkJBOzExMTIgMTE2RCAxMUI5OyAjICjtmro7IO2aujsg4YSS4YWt4Ya5OyDtmro7IOGEkuGFreGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgSFlPQlMKK0Q2QkI7RDZCQjsxMTEyIDExNkQgMTFCQTtENkJCOzExMTIgMTE2RCAxMUJBOyAjICjtmrs7IO2auzsg4YSS4YWt4Ya6OyDtmrs7IOGEkuGFreGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSFlPUworRDZCQztENkJDOzExMTIgMTE2RCAxMUJCO0Q2QkM7MTExMiAxMTZEIDExQkI7ICMgKO2avDsg7Zq8OyDhhJLhha3hhrs7IO2avDsg4YSS4YWt4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBIWU9TUworRDZCRDtENkJEOzExMTIgMTE2RCAxMUJDO0Q2QkQ7MTExMiAxMTZEIDExQkM7ICMgKO2avTsg7Zq9OyDhhJLhha3hhrw7IO2avTsg4YSS4YWt4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBIWU9ORworRDZCRTtENkJFOzExMTIgMTE2RCAxMUJEO0Q2QkU7MTExMiAxMTZEIDExQkQ7ICMgKO2avjsg7Zq+OyDhhJLhha3hhr07IO2avjsg4YSS4YWt4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBIWU9KCitENkJGO0Q2QkY7MTExMiAxMTZEIDExQkU7RDZCRjsxMTEyIDExNkQgMTFCRTsgIyAo7Zq/OyDtmr87IOGEkuGFreGGvjsg7Zq/OyDhhJLhha3hhr47ICkgSEFOR1VMIFNZTExBQkxFIEhZT0MKK0Q2QzA7RDZDMDsxMTEyIDExNkQgMTFCRjtENkMwOzExMTIgMTE2RCAxMUJGOyAjICjtm4A7IO2bgDsg4YSS4YWt4Ya/OyDtm4A7IOGEkuGFreGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgSFlPSworRDZDMTtENkMxOzExMTIgMTE2RCAxMUMwO0Q2QzE7MTExMiAxMTZEIDExQzA7ICMgKO2bgTsg7ZuBOyDhhJLhha3hh4A7IO2bgTsg4YSS4YWt4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBIWU9UCitENkMyO0Q2QzI7MTExMiAxMTZEIDExQzE7RDZDMjsxMTEyIDExNkQgMTFDMTsgIyAo7ZuCOyDtm4I7IOGEkuGFreGHgTsg7ZuCOyDhhJLhha3hh4E7ICkgSEFOR1VMIFNZTExBQkxFIEhZT1AKK0Q2QzM7RDZDMzsxMTEyIDExNkQgMTFDMjtENkMzOzExMTIgMTE2RCAxMUMyOyAjICjtm4M7IO2bgzsg4YSS4YWt4YeCOyDtm4M7IOGEkuGFreGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgSFlPSAorRDZDNDtENkM0OzExMTIgMTE2RTtENkM0OzExMTIgMTE2RTsgIyAo7ZuEOyDtm4Q7IOGEkuGFrjsg7ZuEOyDhhJLhha47ICkgSEFOR1VMIFNZTExBQkxFIEhVCitENkM1O0Q2QzU7MTExMiAxMTZFIDExQTg7RDZDNTsxMTEyIDExNkUgMTFBODsgIyAo7ZuFOyDtm4U7IOGEkuGFruGGqDsg7ZuFOyDhhJLhha7hhqg7ICkgSEFOR1VMIFNZTExBQkxFIEhVRworRDZDNjtENkM2OzExMTIgMTE2RSAxMUE5O0Q2QzY7MTExMiAxMTZFIDExQTk7ICMgKO2bhjsg7ZuGOyDhhJLhha7hhqk7IO2bhjsg4YSS4YWu4YapOyApIEhBTkdVTCBTWUxMQUJMRSBIVUdHCitENkM3O0Q2Qzc7MTExMiAxMTZFIDExQUE7RDZDNzsxMTEyIDExNkUgMTFBQTsgIyAo7ZuHOyDtm4c7IOGEkuGFruGGqjsg7ZuHOyDhhJLhha7hhqo7ICkgSEFOR1VMIFNZTExBQkxFIEhVR1MKK0Q2Qzg7RDZDODsxMTEyIDExNkUgMTFBQjtENkM4OzExMTIgMTE2RSAxMUFCOyAjICjtm4g7IO2biDsg4YSS4YWu4YarOyDtm4g7IOGEkuGFruGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgSFVOCitENkM5O0Q2Qzk7MTExMiAxMTZFIDExQUM7RDZDOTsxMTEyIDExNkUgMTFBQzsgIyAo7ZuJOyDtm4k7IOGEkuGFruGGrDsg7ZuJOyDhhJLhha7hhqw7ICkgSEFOR1VMIFNZTExBQkxFIEhVTkoKK0Q2Q0E7RDZDQTsxMTEyIDExNkUgMTFBRDtENkNBOzExMTIgMTE2RSAxMUFEOyAjICjtm4o7IO2bijsg4YSS4YWu4YatOyDtm4o7IOGEkuGFruGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSFVOSAorRDZDQjtENkNCOzExMTIgMTE2RSAxMUFFO0Q2Q0I7MTExMiAxMTZFIDExQUU7ICMgKO2bizsg7ZuLOyDhhJLhha7hhq47IO2bizsg4YSS4YWu4YauOyApIEhBTkdVTCBTWUxMQUJMRSBIVUQKK0Q2Q0M7RDZDQzsxMTEyIDExNkUgMTFBRjtENkNDOzExMTIgMTE2RSAxMUFGOyAjICjtm4w7IO2bjDsg4YSS4YWu4YavOyDtm4w7IOGEkuGFruGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgSFVMCitENkNEO0Q2Q0Q7MTExMiAxMTZFIDExQjA7RDZDRDsxMTEyIDExNkUgMTFCMDsgIyAo7ZuNOyDtm407IOGEkuGFruGGsDsg7ZuNOyDhhJLhha7hhrA7ICkgSEFOR1VMIFNZTExBQkxFIEhVTEcKK0Q2Q0U7RDZDRTsxMTEyIDExNkUgMTFCMTtENkNFOzExMTIgMTE2RSAxMUIxOyAjICjtm447IO2bjjsg4YSS4YWu4YaxOyDtm447IOGEkuGFruGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgSFVMTQorRDZDRjtENkNGOzExMTIgMTE2RSAxMUIyO0Q2Q0Y7MTExMiAxMTZFIDExQjI7ICMgKO2bjzsg7ZuPOyDhhJLhha7hhrI7IO2bjzsg4YSS4YWu4YayOyApIEhBTkdVTCBTWUxMQUJMRSBIVUxCCitENkQwO0Q2RDA7MTExMiAxMTZFIDExQjM7RDZEMDsxMTEyIDExNkUgMTFCMzsgIyAo7ZuQOyDtm5A7IOGEkuGFruGGszsg7ZuQOyDhhJLhha7hhrM7ICkgSEFOR1VMIFNZTExBQkxFIEhVTFMKK0Q2RDE7RDZEMTsxMTEyIDExNkUgMTFCNDtENkQxOzExMTIgMTE2RSAxMUI0OyAjICjtm5E7IO2bkTsg4YSS4YWu4Ya0OyDtm5E7IOGEkuGFruGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgSFVMVAorRDZEMjtENkQyOzExMTIgMTE2RSAxMUI1O0Q2RDI7MTExMiAxMTZFIDExQjU7ICMgKO2bkjsg7ZuSOyDhhJLhha7hhrU7IO2bkjsg4YSS4YWu4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBIVUxQCitENkQzO0Q2RDM7MTExMiAxMTZFIDExQjY7RDZEMzsxMTEyIDExNkUgMTFCNjsgIyAo7ZuTOyDtm5M7IOGEkuGFruGGtjsg7ZuTOyDhhJLhha7hhrY7ICkgSEFOR1VMIFNZTExBQkxFIEhVTEgKK0Q2RDQ7RDZENDsxMTEyIDExNkUgMTFCNztENkQ0OzExMTIgMTE2RSAxMUI3OyAjICjtm5Q7IO2blDsg4YSS4YWu4Ya3OyDtm5Q7IOGEkuGFruGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgSFVNCitENkQ1O0Q2RDU7MTExMiAxMTZFIDExQjg7RDZENTsxMTEyIDExNkUgMTFCODsgIyAo7ZuVOyDtm5U7IOGEkuGFruGGuDsg7ZuVOyDhhJLhha7hhrg7ICkgSEFOR1VMIFNZTExBQkxFIEhVQgorRDZENjtENkQ2OzExMTIgMTE2RSAxMUI5O0Q2RDY7MTExMiAxMTZFIDExQjk7ICMgKO2bljsg7ZuWOyDhhJLhha7hhrk7IO2bljsg4YSS4YWu4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBIVUJTCitENkQ3O0Q2RDc7MTExMiAxMTZFIDExQkE7RDZENzsxMTEyIDExNkUgMTFCQTsgIyAo7ZuXOyDtm5c7IOGEkuGFruGGujsg7ZuXOyDhhJLhha7hhro7ICkgSEFOR1VMIFNZTExBQkxFIEhVUworRDZEODtENkQ4OzExMTIgMTE2RSAxMUJCO0Q2RDg7MTExMiAxMTZFIDExQkI7ICMgKO2bmDsg7ZuYOyDhhJLhha7hhrs7IO2bmDsg4YSS4YWu4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBIVVNTCitENkQ5O0Q2RDk7MTExMiAxMTZFIDExQkM7RDZEOTsxMTEyIDExNkUgMTFCQzsgIyAo7ZuZOyDtm5k7IOGEkuGFruGGvDsg7ZuZOyDhhJLhha7hhrw7ICkgSEFOR1VMIFNZTExBQkxFIEhVTkcKK0Q2REE7RDZEQTsxMTEyIDExNkUgMTFCRDtENkRBOzExMTIgMTE2RSAxMUJEOyAjICjtm5o7IO2bmjsg4YSS4YWu4Ya9OyDtm5o7IOGEkuGFruGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgSFVKCitENkRCO0Q2REI7MTExMiAxMTZFIDExQkU7RDZEQjsxMTEyIDExNkUgMTFCRTsgIyAo7ZubOyDtm5s7IOGEkuGFruGGvjsg7ZubOyDhhJLhha7hhr47ICkgSEFOR1VMIFNZTExBQkxFIEhVQworRDZEQztENkRDOzExMTIgMTE2RSAxMUJGO0Q2REM7MTExMiAxMTZFIDExQkY7ICMgKO2bnDsg7ZucOyDhhJLhha7hhr87IO2bnDsg4YSS4YWu4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBIVUsKK0Q2REQ7RDZERDsxMTEyIDExNkUgMTFDMDtENkREOzExMTIgMTE2RSAxMUMwOyAjICjtm507IO2bnTsg4YSS4YWu4YeAOyDtm507IOGEkuGFruGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgSFVUCitENkRFO0Q2REU7MTExMiAxMTZFIDExQzE7RDZERTsxMTEyIDExNkUgMTFDMTsgIyAo7ZueOyDtm547IOGEkuGFruGHgTsg7ZueOyDhhJLhha7hh4E7ICkgSEFOR1VMIFNZTExBQkxFIEhVUAorRDZERjtENkRGOzExMTIgMTE2RSAxMUMyO0Q2REY7MTExMiAxMTZFIDExQzI7ICMgKO2bnzsg7ZufOyDhhJLhha7hh4I7IO2bnzsg4YSS4YWu4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBIVUgKK0Q2RTA7RDZFMDsxMTEyIDExNkY7RDZFMDsxMTEyIDExNkY7ICMgKO2boDsg7ZugOyDhhJLhha87IO2boDsg4YSS4YWvOyApIEhBTkdVTCBTWUxMQUJMRSBIV0VPCitENkUxO0Q2RTE7MTExMiAxMTZGIDExQTg7RDZFMTsxMTEyIDExNkYgMTFBODsgIyAo7ZuhOyDtm6E7IOGEkuGFr+GGqDsg7ZuhOyDhhJLhha/hhqg7ICkgSEFOR1VMIFNZTExBQkxFIEhXRU9HCitENkUyO0Q2RTI7MTExMiAxMTZGIDExQTk7RDZFMjsxMTEyIDExNkYgMTFBOTsgIyAo7ZuiOyDtm6I7IOGEkuGFr+GGqTsg7ZuiOyDhhJLhha/hhqk7ICkgSEFOR1VMIFNZTExBQkxFIEhXRU9HRworRDZFMztENkUzOzExMTIgMTE2RiAxMUFBO0Q2RTM7MTExMiAxMTZGIDExQUE7ICMgKO2bozsg7ZujOyDhhJLhha/hhqo7IO2bozsg4YSS4YWv4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBIV0VPR1MKK0Q2RTQ7RDZFNDsxMTEyIDExNkYgMTFBQjtENkU0OzExMTIgMTE2RiAxMUFCOyAjICjtm6Q7IO2bpDsg4YSS4YWv4YarOyDtm6Q7IOGEkuGFr+GGqzsgKSBIQU5HVUwgU1lMTEFCTEUgSFdFT04KK0Q2RTU7RDZFNTsxMTEyIDExNkYgMTFBQztENkU1OzExMTIgMTE2RiAxMUFDOyAjICjtm6U7IO2bpTsg4YSS4YWv4YasOyDtm6U7IOGEkuGFr+GGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSFdFT05KCitENkU2O0Q2RTY7MTExMiAxMTZGIDExQUQ7RDZFNjsxMTEyIDExNkYgMTFBRDsgIyAo7ZumOyDtm6Y7IOGEkuGFr+GGrTsg7ZumOyDhhJLhha/hhq07ICkgSEFOR1VMIFNZTExBQkxFIEhXRU9OSAorRDZFNztENkU3OzExMTIgMTE2RiAxMUFFO0Q2RTc7MTExMiAxMTZGIDExQUU7ICMgKO2bpzsg7ZunOyDhhJLhha/hhq47IO2bpzsg4YSS4YWv4YauOyApIEhBTkdVTCBTWUxMQUJMRSBIV0VPRAorRDZFODtENkU4OzExMTIgMTE2RiAxMUFGO0Q2RTg7MTExMiAxMTZGIDExQUY7ICMgKO2bqDsg7ZuoOyDhhJLhha/hhq87IO2bqDsg4YSS4YWv4YavOyApIEhBTkdVTCBTWUxMQUJMRSBIV0VPTAorRDZFOTtENkU5OzExMTIgMTE2RiAxMUIwO0Q2RTk7MTExMiAxMTZGIDExQjA7ICMgKO2bqTsg7ZupOyDhhJLhha/hhrA7IO2bqTsg4YSS4YWv4YawOyApIEhBTkdVTCBTWUxMQUJMRSBIV0VPTEcKK0Q2RUE7RDZFQTsxMTEyIDExNkYgMTFCMTtENkVBOzExMTIgMTE2RiAxMUIxOyAjICjtm6o7IO2bqjsg4YSS4YWv4YaxOyDtm6o7IOGEkuGFr+GGsTsgKSBIQU5HVUwgU1lMTEFCTEUgSFdFT0xNCitENkVCO0Q2RUI7MTExMiAxMTZGIDExQjI7RDZFQjsxMTEyIDExNkYgMTFCMjsgIyAo7ZurOyDtm6s7IOGEkuGFr+GGsjsg7ZurOyDhhJLhha/hhrI7ICkgSEFOR1VMIFNZTExBQkxFIEhXRU9MQgorRDZFQztENkVDOzExMTIgMTE2RiAxMUIzO0Q2RUM7MTExMiAxMTZGIDExQjM7ICMgKO2brDsg7ZusOyDhhJLhha/hhrM7IO2brDsg4YSS4YWv4YazOyApIEhBTkdVTCBTWUxMQUJMRSBIV0VPTFMKK0Q2RUQ7RDZFRDsxMTEyIDExNkYgMTFCNDtENkVEOzExMTIgMTE2RiAxMUI0OyAjICjtm607IO2brTsg4YSS4YWv4Ya0OyDtm607IOGEkuGFr+GGtDsgKSBIQU5HVUwgU1lMTEFCTEUgSFdFT0xUCitENkVFO0Q2RUU7MTExMiAxMTZGIDExQjU7RDZFRTsxMTEyIDExNkYgMTFCNTsgIyAo7ZuuOyDtm647IOGEkuGFr+GGtTsg7ZuuOyDhhJLhha/hhrU7ICkgSEFOR1VMIFNZTExBQkxFIEhXRU9MUAorRDZFRjtENkVGOzExMTIgMTE2RiAxMUI2O0Q2RUY7MTExMiAxMTZGIDExQjY7ICMgKO2brzsg7ZuvOyDhhJLhha/hhrY7IO2brzsg4YSS4YWv4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBIV0VPTEgKK0Q2RjA7RDZGMDsxMTEyIDExNkYgMTFCNztENkYwOzExMTIgMTE2RiAxMUI3OyAjICjtm7A7IO2bsDsg4YSS4YWv4Ya3OyDtm7A7IOGEkuGFr+GGtzsgKSBIQU5HVUwgU1lMTEFCTEUgSFdFT00KK0Q2RjE7RDZGMTsxMTEyIDExNkYgMTFCODtENkYxOzExMTIgMTE2RiAxMUI4OyAjICjtm7E7IO2bsTsg4YSS4YWv4Ya4OyDtm7E7IOGEkuGFr+GGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSFdFT0IKK0Q2RjI7RDZGMjsxMTEyIDExNkYgMTFCOTtENkYyOzExMTIgMTE2RiAxMUI5OyAjICjtm7I7IO2bsjsg4YSS4YWv4Ya5OyDtm7I7IOGEkuGFr+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgSFdFT0JTCitENkYzO0Q2RjM7MTExMiAxMTZGIDExQkE7RDZGMzsxMTEyIDExNkYgMTFCQTsgIyAo7ZuzOyDtm7M7IOGEkuGFr+GGujsg7ZuzOyDhhJLhha/hhro7ICkgSEFOR1VMIFNZTExBQkxFIEhXRU9TCitENkY0O0Q2RjQ7MTExMiAxMTZGIDExQkI7RDZGNDsxMTEyIDExNkYgMTFCQjsgIyAo7Zu0OyDtm7Q7IOGEkuGFr+GGuzsg7Zu0OyDhhJLhha/hhrs7ICkgSEFOR1VMIFNZTExBQkxFIEhXRU9TUworRDZGNTtENkY1OzExMTIgMTE2RiAxMUJDO0Q2RjU7MTExMiAxMTZGIDExQkM7ICMgKO2btTsg7Zu1OyDhhJLhha/hhrw7IO2btTsg4YSS4YWv4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBIV0VPTkcKK0Q2RjY7RDZGNjsxMTEyIDExNkYgMTFCRDtENkY2OzExMTIgMTE2RiAxMUJEOyAjICjtm7Y7IO2btjsg4YSS4YWv4Ya9OyDtm7Y7IOGEkuGFr+GGvTsgKSBIQU5HVUwgU1lMTEFCTEUgSFdFT0oKK0Q2Rjc7RDZGNzsxMTEyIDExNkYgMTFCRTtENkY3OzExMTIgMTE2RiAxMUJFOyAjICjtm7c7IO2btzsg4YSS4YWv4Ya+OyDtm7c7IOGEkuGFr+GGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSFdFT0MKK0Q2Rjg7RDZGODsxMTEyIDExNkYgMTFCRjtENkY4OzExMTIgMTE2RiAxMUJGOyAjICjtm7g7IO2buDsg4YSS4YWv4Ya/OyDtm7g7IOGEkuGFr+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgSFdFT0sKK0Q2Rjk7RDZGOTsxMTEyIDExNkYgMTFDMDtENkY5OzExMTIgMTE2RiAxMUMwOyAjICjtm7k7IO2buTsg4YSS4YWv4YeAOyDtm7k7IOGEkuGFr+GHgDsgKSBIQU5HVUwgU1lMTEFCTEUgSFdFT1QKK0Q2RkE7RDZGQTsxMTEyIDExNkYgMTFDMTtENkZBOzExMTIgMTE2RiAxMUMxOyAjICjtm7o7IO2bujsg4YSS4YWv4YeBOyDtm7o7IOGEkuGFr+GHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSFdFT1AKK0Q2RkI7RDZGQjsxMTEyIDExNkYgMTFDMjtENkZCOzExMTIgMTE2RiAxMUMyOyAjICjtm7s7IO2buzsg4YSS4YWv4YeCOyDtm7s7IOGEkuGFr+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgSFdFT0gKK0Q2RkM7RDZGQzsxMTEyIDExNzA7RDZGQzsxMTEyIDExNzA7ICMgKO2bvDsg7Zu8OyDhhJLhhbA7IO2bvDsg4YSS4YWwOyApIEhBTkdVTCBTWUxMQUJMRSBIV0UKK0Q2RkQ7RDZGRDsxMTEyIDExNzAgMTFBODtENkZEOzExMTIgMTE3MCAxMUE4OyAjICjtm707IO2bvTsg4YSS4YWw4YaoOyDtm707IOGEkuGFsOGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSFdFRworRDZGRTtENkZFOzExMTIgMTE3MCAxMUE5O0Q2RkU7MTExMiAxMTcwIDExQTk7ICMgKO2bvjsg7Zu+OyDhhJLhhbDhhqk7IO2bvjsg4YSS4YWw4YapOyApIEhBTkdVTCBTWUxMQUJMRSBIV0VHRworRDZGRjtENkZGOzExMTIgMTE3MCAxMUFBO0Q2RkY7MTExMiAxMTcwIDExQUE7ICMgKO2bvzsg7Zu/OyDhhJLhhbDhhqo7IO2bvzsg4YSS4YWw4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBIV0VHUworRDcwMDtENzAwOzExMTIgMTE3MCAxMUFCO0Q3MDA7MTExMiAxMTcwIDExQUI7ICMgKO2cgDsg7ZyAOyDhhJLhhbDhhqs7IO2cgDsg4YSS4YWw4YarOyApIEhBTkdVTCBTWUxMQUJMRSBIV0VOCitENzAxO0Q3MDE7MTExMiAxMTcwIDExQUM7RDcwMTsxMTEyIDExNzAgMTFBQzsgIyAo7ZyBOyDtnIE7IOGEkuGFsOGGrDsg7ZyBOyDhhJLhhbDhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEhXRU5KCitENzAyO0Q3MDI7MTExMiAxMTcwIDExQUQ7RDcwMjsxMTEyIDExNzAgMTFBRDsgIyAo7ZyCOyDtnII7IOGEkuGFsOGGrTsg7ZyCOyDhhJLhhbDhhq07ICkgSEFOR1VMIFNZTExBQkxFIEhXRU5ICitENzAzO0Q3MDM7MTExMiAxMTcwIDExQUU7RDcwMzsxMTEyIDExNzAgMTFBRTsgIyAo7ZyDOyDtnIM7IOGEkuGFsOGGrjsg7ZyDOyDhhJLhhbDhhq47ICkgSEFOR1VMIFNZTExBQkxFIEhXRUQKK0Q3MDQ7RDcwNDsxMTEyIDExNzAgMTFBRjtENzA0OzExMTIgMTE3MCAxMUFGOyAjICjtnIQ7IO2chDsg4YSS4YWw4YavOyDtnIQ7IOGEkuGFsOGGrzsgKSBIQU5HVUwgU1lMTEFCTEUgSFdFTAorRDcwNTtENzA1OzExMTIgMTE3MCAxMUIwO0Q3MDU7MTExMiAxMTcwIDExQjA7ICMgKO2chTsg7ZyFOyDhhJLhhbDhhrA7IO2chTsg4YSS4YWw4YawOyApIEhBTkdVTCBTWUxMQUJMRSBIV0VMRworRDcwNjtENzA2OzExMTIgMTE3MCAxMUIxO0Q3MDY7MTExMiAxMTcwIDExQjE7ICMgKO2chjsg7ZyGOyDhhJLhhbDhhrE7IO2chjsg4YSS4YWw4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBIV0VMTQorRDcwNztENzA3OzExMTIgMTE3MCAxMUIyO0Q3MDc7MTExMiAxMTcwIDExQjI7ICMgKO2chzsg7ZyHOyDhhJLhhbDhhrI7IO2chzsg4YSS4YWw4YayOyApIEhBTkdVTCBTWUxMQUJMRSBIV0VMQgorRDcwODtENzA4OzExMTIgMTE3MCAxMUIzO0Q3MDg7MTExMiAxMTcwIDExQjM7ICMgKO2ciDsg7ZyIOyDhhJLhhbDhhrM7IO2ciDsg4YSS4YWw4YazOyApIEhBTkdVTCBTWUxMQUJMRSBIV0VMUworRDcwOTtENzA5OzExMTIgMTE3MCAxMUI0O0Q3MDk7MTExMiAxMTcwIDExQjQ7ICMgKO2ciTsg7ZyJOyDhhJLhhbDhhrQ7IO2ciTsg4YSS4YWw4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBIV0VMVAorRDcwQTtENzBBOzExMTIgMTE3MCAxMUI1O0Q3MEE7MTExMiAxMTcwIDExQjU7ICMgKO2cijsg7ZyKOyDhhJLhhbDhhrU7IO2cijsg4YSS4YWw4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBIV0VMUAorRDcwQjtENzBCOzExMTIgMTE3MCAxMUI2O0Q3MEI7MTExMiAxMTcwIDExQjY7ICMgKO2cizsg7ZyLOyDhhJLhhbDhhrY7IO2cizsg4YSS4YWw4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBIV0VMSAorRDcwQztENzBDOzExMTIgMTE3MCAxMUI3O0Q3MEM7MTExMiAxMTcwIDExQjc7ICMgKO2cjDsg7ZyMOyDhhJLhhbDhhrc7IO2cjDsg4YSS4YWw4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBIV0VNCitENzBEO0Q3MEQ7MTExMiAxMTcwIDExQjg7RDcwRDsxMTEyIDExNzAgMTFCODsgIyAo7ZyNOyDtnI07IOGEkuGFsOGGuDsg7ZyNOyDhhJLhhbDhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEhXRUIKK0Q3MEU7RDcwRTsxMTEyIDExNzAgMTFCOTtENzBFOzExMTIgMTE3MCAxMUI5OyAjICjtnI47IO2cjjsg4YSS4YWw4Ya5OyDtnI47IOGEkuGFsOGGuTsgKSBIQU5HVUwgU1lMTEFCTEUgSFdFQlMKK0Q3MEY7RDcwRjsxMTEyIDExNzAgMTFCQTtENzBGOzExMTIgMTE3MCAxMUJBOyAjICjtnI87IO2cjzsg4YSS4YWw4Ya6OyDtnI87IOGEkuGFsOGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSFdFUworRDcxMDtENzEwOzExMTIgMTE3MCAxMUJCO0Q3MTA7MTExMiAxMTcwIDExQkI7ICMgKO2ckDsg7ZyQOyDhhJLhhbDhhrs7IO2ckDsg4YSS4YWw4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBIV0VTUworRDcxMTtENzExOzExMTIgMTE3MCAxMUJDO0Q3MTE7MTExMiAxMTcwIDExQkM7ICMgKO2ckTsg7ZyROyDhhJLhhbDhhrw7IO2ckTsg4YSS4YWw4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBIV0VORworRDcxMjtENzEyOzExMTIgMTE3MCAxMUJEO0Q3MTI7MTExMiAxMTcwIDExQkQ7ICMgKO2ckjsg7ZySOyDhhJLhhbDhhr07IO2ckjsg4YSS4YWw4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBIV0VKCitENzEzO0Q3MTM7MTExMiAxMTcwIDExQkU7RDcxMzsxMTEyIDExNzAgMTFCRTsgIyAo7ZyTOyDtnJM7IOGEkuGFsOGGvjsg7ZyTOyDhhJLhhbDhhr47ICkgSEFOR1VMIFNZTExBQkxFIEhXRUMKK0Q3MTQ7RDcxNDsxMTEyIDExNzAgMTFCRjtENzE0OzExMTIgMTE3MCAxMUJGOyAjICjtnJQ7IO2clDsg4YSS4YWw4Ya/OyDtnJQ7IOGEkuGFsOGGvzsgKSBIQU5HVUwgU1lMTEFCTEUgSFdFSworRDcxNTtENzE1OzExMTIgMTE3MCAxMUMwO0Q3MTU7MTExMiAxMTcwIDExQzA7ICMgKO2clTsg7ZyVOyDhhJLhhbDhh4A7IO2clTsg4YSS4YWw4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBIV0VUCitENzE2O0Q3MTY7MTExMiAxMTcwIDExQzE7RDcxNjsxMTEyIDExNzAgMTFDMTsgIyAo7ZyWOyDtnJY7IOGEkuGFsOGHgTsg7ZyWOyDhhJLhhbDhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEhXRVAKK0Q3MTc7RDcxNzsxMTEyIDExNzAgMTFDMjtENzE3OzExMTIgMTE3MCAxMUMyOyAjICjtnJc7IO2clzsg4YSS4YWw4YeCOyDtnJc7IOGEkuGFsOGHgjsgKSBIQU5HVUwgU1lMTEFCTEUgSFdFSAorRDcxODtENzE4OzExMTIgMTE3MTtENzE4OzExMTIgMTE3MTsgIyAo7ZyYOyDtnJg7IOGEkuGFsTsg7ZyYOyDhhJLhhbE7ICkgSEFOR1VMIFNZTExBQkxFIEhXSQorRDcxOTtENzE5OzExMTIgMTE3MSAxMUE4O0Q3MTk7MTExMiAxMTcxIDExQTg7ICMgKO2cmTsg7ZyZOyDhhJLhhbHhhqg7IO2cmTsg4YSS4YWx4YaoOyApIEhBTkdVTCBTWUxMQUJMRSBIV0lHCitENzFBO0Q3MUE7MTExMiAxMTcxIDExQTk7RDcxQTsxMTEyIDExNzEgMTFBOTsgIyAo7ZyaOyDtnJo7IOGEkuGFseGGqTsg7ZyaOyDhhJLhhbHhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEhXSUdHCitENzFCO0Q3MUI7MTExMiAxMTcxIDExQUE7RDcxQjsxMTEyIDExNzEgMTFBQTsgIyAo7ZybOyDtnJs7IOGEkuGFseGGqjsg7ZybOyDhhJLhhbHhhqo7ICkgSEFOR1VMIFNZTExBQkxFIEhXSUdTCitENzFDO0Q3MUM7MTExMiAxMTcxIDExQUI7RDcxQzsxMTEyIDExNzEgMTFBQjsgIyAo7ZycOyDtnJw7IOGEkuGFseGGqzsg7ZycOyDhhJLhhbHhhqs7ICkgSEFOR1VMIFNZTExBQkxFIEhXSU4KK0Q3MUQ7RDcxRDsxMTEyIDExNzEgMTFBQztENzFEOzExMTIgMTE3MSAxMUFDOyAjICjtnJ07IO2cnTsg4YSS4YWx4YasOyDtnJ07IOGEkuGFseGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSFdJTkoKK0Q3MUU7RDcxRTsxMTEyIDExNzEgMTFBRDtENzFFOzExMTIgMTE3MSAxMUFEOyAjICjtnJ47IO2cnjsg4YSS4YWx4YatOyDtnJ47IOGEkuGFseGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSFdJTkgKK0Q3MUY7RDcxRjsxMTEyIDExNzEgMTFBRTtENzFGOzExMTIgMTE3MSAxMUFFOyAjICjtnJ87IO2cnzsg4YSS4YWx4YauOyDtnJ87IOGEkuGFseGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSFdJRAorRDcyMDtENzIwOzExMTIgMTE3MSAxMUFGO0Q3MjA7MTExMiAxMTcxIDExQUY7ICMgKO2coDsg7ZygOyDhhJLhhbHhhq87IO2coDsg4YSS4YWx4YavOyApIEhBTkdVTCBTWUxMQUJMRSBIV0lMCitENzIxO0Q3MjE7MTExMiAxMTcxIDExQjA7RDcyMTsxMTEyIDExNzEgMTFCMDsgIyAo7ZyhOyDtnKE7IOGEkuGFseGGsDsg7ZyhOyDhhJLhhbHhhrA7ICkgSEFOR1VMIFNZTExBQkxFIEhXSUxHCitENzIyO0Q3MjI7MTExMiAxMTcxIDExQjE7RDcyMjsxMTEyIDExNzEgMTFCMTsgIyAo7ZyiOyDtnKI7IOGEkuGFseGGsTsg7ZyiOyDhhJLhhbHhhrE7ICkgSEFOR1VMIFNZTExBQkxFIEhXSUxNCitENzIzO0Q3MjM7MTExMiAxMTcxIDExQjI7RDcyMzsxMTEyIDExNzEgMTFCMjsgIyAo7ZyjOyDtnKM7IOGEkuGFseGGsjsg7ZyjOyDhhJLhhbHhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEhXSUxCCitENzI0O0Q3MjQ7MTExMiAxMTcxIDExQjM7RDcyNDsxMTEyIDExNzEgMTFCMzsgIyAo7ZykOyDtnKQ7IOGEkuGFseGGszsg7ZykOyDhhJLhhbHhhrM7ICkgSEFOR1VMIFNZTExBQkxFIEhXSUxTCitENzI1O0Q3MjU7MTExMiAxMTcxIDExQjQ7RDcyNTsxMTEyIDExNzEgMTFCNDsgIyAo7ZylOyDtnKU7IOGEkuGFseGGtDsg7ZylOyDhhJLhhbHhhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEhXSUxUCitENzI2O0Q3MjY7MTExMiAxMTcxIDExQjU7RDcyNjsxMTEyIDExNzEgMTFCNTsgIyAo7ZymOyDtnKY7IOGEkuGFseGGtTsg7ZymOyDhhJLhhbHhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEhXSUxQCitENzI3O0Q3Mjc7MTExMiAxMTcxIDExQjY7RDcyNzsxMTEyIDExNzEgMTFCNjsgIyAo7ZynOyDtnKc7IOGEkuGFseGGtjsg7ZynOyDhhJLhhbHhhrY7ICkgSEFOR1VMIFNZTExBQkxFIEhXSUxICitENzI4O0Q3Mjg7MTExMiAxMTcxIDExQjc7RDcyODsxMTEyIDExNzEgMTFCNzsgIyAo7ZyoOyDtnKg7IOGEkuGFseGGtzsg7ZyoOyDhhJLhhbHhhrc7ICkgSEFOR1VMIFNZTExBQkxFIEhXSU0KK0Q3Mjk7RDcyOTsxMTEyIDExNzEgMTFCODtENzI5OzExMTIgMTE3MSAxMUI4OyAjICjtnKk7IO2cqTsg4YSS4YWx4Ya4OyDtnKk7IOGEkuGFseGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSFdJQgorRDcyQTtENzJBOzExMTIgMTE3MSAxMUI5O0Q3MkE7MTExMiAxMTcxIDExQjk7ICMgKO2cqjsg7ZyqOyDhhJLhhbHhhrk7IO2cqjsg4YSS4YWx4Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBIV0lCUworRDcyQjtENzJCOzExMTIgMTE3MSAxMUJBO0Q3MkI7MTExMiAxMTcxIDExQkE7ICMgKO2cqzsg7ZyrOyDhhJLhhbHhhro7IO2cqzsg4YSS4YWx4Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBIV0lTCitENzJDO0Q3MkM7MTExMiAxMTcxIDExQkI7RDcyQzsxMTEyIDExNzEgMTFCQjsgIyAo7ZysOyDtnKw7IOGEkuGFseGGuzsg7ZysOyDhhJLhhbHhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEhXSVNTCitENzJEO0Q3MkQ7MTExMiAxMTcxIDExQkM7RDcyRDsxMTEyIDExNzEgMTFCQzsgIyAo7ZytOyDtnK07IOGEkuGFseGGvDsg7ZytOyDhhJLhhbHhhrw7ICkgSEFOR1VMIFNZTExBQkxFIEhXSU5HCitENzJFO0Q3MkU7MTExMiAxMTcxIDExQkQ7RDcyRTsxMTEyIDExNzEgMTFCRDsgIyAo7ZyuOyDtnK47IOGEkuGFseGGvTsg7ZyuOyDhhJLhhbHhhr07ICkgSEFOR1VMIFNZTExBQkxFIEhXSUoKK0Q3MkY7RDcyRjsxMTEyIDExNzEgMTFCRTtENzJGOzExMTIgMTE3MSAxMUJFOyAjICjtnK87IO2crzsg4YSS4YWx4Ya+OyDtnK87IOGEkuGFseGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSFdJQworRDczMDtENzMwOzExMTIgMTE3MSAxMUJGO0Q3MzA7MTExMiAxMTcxIDExQkY7ICMgKO2csDsg7ZywOyDhhJLhhbHhhr87IO2csDsg4YSS4YWx4Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBIV0lLCitENzMxO0Q3MzE7MTExMiAxMTcxIDExQzA7RDczMTsxMTEyIDExNzEgMTFDMDsgIyAo7ZyxOyDtnLE7IOGEkuGFseGHgDsg7ZyxOyDhhJLhhbHhh4A7ICkgSEFOR1VMIFNZTExBQkxFIEhXSVQKK0Q3MzI7RDczMjsxMTEyIDExNzEgMTFDMTtENzMyOzExMTIgMTE3MSAxMUMxOyAjICjtnLI7IO2csjsg4YSS4YWx4YeBOyDtnLI7IOGEkuGFseGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSFdJUAorRDczMztENzMzOzExMTIgMTE3MSAxMUMyO0Q3MzM7MTExMiAxMTcxIDExQzI7ICMgKO2cszsg7ZyzOyDhhJLhhbHhh4I7IO2cszsg4YSS4YWx4YeCOyApIEhBTkdVTCBTWUxMQUJMRSBIV0lICitENzM0O0Q3MzQ7MTExMiAxMTcyO0Q3MzQ7MTExMiAxMTcyOyAjICjtnLQ7IO2ctDsg4YSS4YWyOyDtnLQ7IOGEkuGFsjsgKSBIQU5HVUwgU1lMTEFCTEUgSFlVCitENzM1O0Q3MzU7MTExMiAxMTcyIDExQTg7RDczNTsxMTEyIDExNzIgMTFBODsgIyAo7Zy1OyDtnLU7IOGEkuGFsuGGqDsg7Zy1OyDhhJLhhbLhhqg7ICkgSEFOR1VMIFNZTExBQkxFIEhZVUcKK0Q3MzY7RDczNjsxMTEyIDExNzIgMTFBOTtENzM2OzExMTIgMTE3MiAxMUE5OyAjICjtnLY7IO2ctjsg4YSS4YWy4YapOyDtnLY7IOGEkuGFsuGGqTsgKSBIQU5HVUwgU1lMTEFCTEUgSFlVR0cKK0Q3Mzc7RDczNzsxMTEyIDExNzIgMTFBQTtENzM3OzExMTIgMTE3MiAxMUFBOyAjICjtnLc7IO2ctzsg4YSS4YWy4YaqOyDtnLc7IOGEkuGFsuGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSFlVR1MKK0Q3Mzg7RDczODsxMTEyIDExNzIgMTFBQjtENzM4OzExMTIgMTE3MiAxMUFCOyAjICjtnLg7IO2cuDsg4YSS4YWy4YarOyDtnLg7IOGEkuGFsuGGqzsgKSBIQU5HVUwgU1lMTEFCTEUgSFlVTgorRDczOTtENzM5OzExMTIgMTE3MiAxMUFDO0Q3Mzk7MTExMiAxMTcyIDExQUM7ICMgKO2cuTsg7Zy5OyDhhJLhhbLhhqw7IO2cuTsg4YSS4YWy4YasOyApIEhBTkdVTCBTWUxMQUJMRSBIWVVOSgorRDczQTtENzNBOzExMTIgMTE3MiAxMUFEO0Q3M0E7MTExMiAxMTcyIDExQUQ7ICMgKO2cujsg7Zy6OyDhhJLhhbLhhq07IO2cujsg4YSS4YWy4YatOyApIEhBTkdVTCBTWUxMQUJMRSBIWVVOSAorRDczQjtENzNCOzExMTIgMTE3MiAxMUFFO0Q3M0I7MTExMiAxMTcyIDExQUU7ICMgKO2cuzsg7Zy7OyDhhJLhhbLhhq47IO2cuzsg4YSS4YWy4YauOyApIEhBTkdVTCBTWUxMQUJMRSBIWVVECitENzNDO0Q3M0M7MTExMiAxMTcyIDExQUY7RDczQzsxMTEyIDExNzIgMTFBRjsgIyAo7Zy8OyDtnLw7IOGEkuGFsuGGrzsg7Zy8OyDhhJLhhbLhhq87ICkgSEFOR1VMIFNZTExBQkxFIEhZVUwKK0Q3M0Q7RDczRDsxMTEyIDExNzIgMTFCMDtENzNEOzExMTIgMTE3MiAxMUIwOyAjICjtnL07IO2cvTsg4YSS4YWy4YawOyDtnL07IOGEkuGFsuGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSFlVTEcKK0Q3M0U7RDczRTsxMTEyIDExNzIgMTFCMTtENzNFOzExMTIgMTE3MiAxMUIxOyAjICjtnL47IO2cvjsg4YSS4YWy4YaxOyDtnL47IOGEkuGFsuGGsTsgKSBIQU5HVUwgU1lMTEFCTEUgSFlVTE0KK0Q3M0Y7RDczRjsxMTEyIDExNzIgMTFCMjtENzNGOzExMTIgMTE3MiAxMUIyOyAjICjtnL87IO2cvzsg4YSS4YWy4YayOyDtnL87IOGEkuGFsuGGsjsgKSBIQU5HVUwgU1lMTEFCTEUgSFlVTEIKK0Q3NDA7RDc0MDsxMTEyIDExNzIgMTFCMztENzQwOzExMTIgMTE3MiAxMUIzOyAjICjtnYA7IO2dgDsg4YSS4YWy4YazOyDtnYA7IOGEkuGFsuGGszsgKSBIQU5HVUwgU1lMTEFCTEUgSFlVTFMKK0Q3NDE7RDc0MTsxMTEyIDExNzIgMTFCNDtENzQxOzExMTIgMTE3MiAxMUI0OyAjICjtnYE7IO2dgTsg4YSS4YWy4Ya0OyDtnYE7IOGEkuGFsuGGtDsgKSBIQU5HVUwgU1lMTEFCTEUgSFlVTFQKK0Q3NDI7RDc0MjsxMTEyIDExNzIgMTFCNTtENzQyOzExMTIgMTE3MiAxMUI1OyAjICjtnYI7IO2dgjsg4YSS4YWy4Ya1OyDtnYI7IOGEkuGFsuGGtTsgKSBIQU5HVUwgU1lMTEFCTEUgSFlVTFAKK0Q3NDM7RDc0MzsxMTEyIDExNzIgMTFCNjtENzQzOzExMTIgMTE3MiAxMUI2OyAjICjtnYM7IO2dgzsg4YSS4YWy4Ya2OyDtnYM7IOGEkuGFsuGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSFlVTEgKK0Q3NDQ7RDc0NDsxMTEyIDExNzIgMTFCNztENzQ0OzExMTIgMTE3MiAxMUI3OyAjICjtnYQ7IO2dhDsg4YSS4YWy4Ya3OyDtnYQ7IOGEkuGFsuGGtzsgKSBIQU5HVUwgU1lMTEFCTEUgSFlVTQorRDc0NTtENzQ1OzExMTIgMTE3MiAxMUI4O0Q3NDU7MTExMiAxMTcyIDExQjg7ICMgKO2dhTsg7Z2FOyDhhJLhhbLhhrg7IO2dhTsg4YSS4YWy4Ya4OyApIEhBTkdVTCBTWUxMQUJMRSBIWVVCCitENzQ2O0Q3NDY7MTExMiAxMTcyIDExQjk7RDc0NjsxMTEyIDExNzIgMTFCOTsgIyAo7Z2GOyDtnYY7IOGEkuGFsuGGuTsg7Z2GOyDhhJLhhbLhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEhZVUJTCitENzQ3O0Q3NDc7MTExMiAxMTcyIDExQkE7RDc0NzsxMTEyIDExNzIgMTFCQTsgIyAo7Z2HOyDtnYc7IOGEkuGFsuGGujsg7Z2HOyDhhJLhhbLhhro7ICkgSEFOR1VMIFNZTExBQkxFIEhZVVMKK0Q3NDg7RDc0ODsxMTEyIDExNzIgMTFCQjtENzQ4OzExMTIgMTE3MiAxMUJCOyAjICjtnYg7IO2diDsg4YSS4YWy4Ya7OyDtnYg7IOGEkuGFsuGGuzsgKSBIQU5HVUwgU1lMTEFCTEUgSFlVU1MKK0Q3NDk7RDc0OTsxMTEyIDExNzIgMTFCQztENzQ5OzExMTIgMTE3MiAxMUJDOyAjICjtnYk7IO2diTsg4YSS4YWy4Ya8OyDtnYk7IOGEkuGFsuGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSFlVTkcKK0Q3NEE7RDc0QTsxMTEyIDExNzIgMTFCRDtENzRBOzExMTIgMTE3MiAxMUJEOyAjICjtnYo7IO2dijsg4YSS4YWy4Ya9OyDtnYo7IOGEkuGFsuGGvTsgKSBIQU5HVUwgU1lMTEFCTEUgSFlVSgorRDc0QjtENzRCOzExMTIgMTE3MiAxMUJFO0Q3NEI7MTExMiAxMTcyIDExQkU7ICMgKO2dizsg7Z2LOyDhhJLhhbLhhr47IO2dizsg4YSS4YWy4Ya+OyApIEhBTkdVTCBTWUxMQUJMRSBIWVVDCitENzRDO0Q3NEM7MTExMiAxMTcyIDExQkY7RDc0QzsxMTEyIDExNzIgMTFCRjsgIyAo7Z2MOyDtnYw7IOGEkuGFsuGGvzsg7Z2MOyDhhJLhhbLhhr87ICkgSEFOR1VMIFNZTExBQkxFIEhZVUsKK0Q3NEQ7RDc0RDsxMTEyIDExNzIgMTFDMDtENzREOzExMTIgMTE3MiAxMUMwOyAjICjtnY07IO2djTsg4YSS4YWy4YeAOyDtnY07IOGEkuGFsuGHgDsgKSBIQU5HVUwgU1lMTEFCTEUgSFlVVAorRDc0RTtENzRFOzExMTIgMTE3MiAxMUMxO0Q3NEU7MTExMiAxMTcyIDExQzE7ICMgKO2djjsg7Z2OOyDhhJLhhbLhh4E7IO2djjsg4YSS4YWy4YeBOyApIEhBTkdVTCBTWUxMQUJMRSBIWVVQCitENzRGO0Q3NEY7MTExMiAxMTcyIDExQzI7RDc0RjsxMTEyIDExNzIgMTFDMjsgIyAo7Z2POyDtnY87IOGEkuGFsuGHgjsg7Z2POyDhhJLhhbLhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEhZVUgKK0Q3NTA7RDc1MDsxMTEyIDExNzM7RDc1MDsxMTEyIDExNzM7ICMgKO2dkDsg7Z2QOyDhhJLhhbM7IO2dkDsg4YSS4YWzOyApIEhBTkdVTCBTWUxMQUJMRSBIRVUKK0Q3NTE7RDc1MTsxMTEyIDExNzMgMTFBODtENzUxOzExMTIgMTE3MyAxMUE4OyAjICjtnZE7IO2dkTsg4YSS4YWz4YaoOyDtnZE7IOGEkuGFs+GGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSEVVRworRDc1MjtENzUyOzExMTIgMTE3MyAxMUE5O0Q3NTI7MTExMiAxMTczIDExQTk7ICMgKO2dkjsg7Z2SOyDhhJLhhbPhhqk7IO2dkjsg4YSS4YWz4YapOyApIEhBTkdVTCBTWUxMQUJMRSBIRVVHRworRDc1MztENzUzOzExMTIgMTE3MyAxMUFBO0Q3NTM7MTExMiAxMTczIDExQUE7ICMgKO2dkzsg7Z2TOyDhhJLhhbPhhqo7IO2dkzsg4YSS4YWz4YaqOyApIEhBTkdVTCBTWUxMQUJMRSBIRVVHUworRDc1NDtENzU0OzExMTIgMTE3MyAxMUFCO0Q3NTQ7MTExMiAxMTczIDExQUI7ICMgKO2dlDsg7Z2UOyDhhJLhhbPhhqs7IO2dlDsg4YSS4YWz4YarOyApIEhBTkdVTCBTWUxMQUJMRSBIRVVOCitENzU1O0Q3NTU7MTExMiAxMTczIDExQUM7RDc1NTsxMTEyIDExNzMgMTFBQzsgIyAo7Z2VOyDtnZU7IOGEkuGFs+GGrDsg7Z2VOyDhhJLhhbPhhqw7ICkgSEFOR1VMIFNZTExBQkxFIEhFVU5KCitENzU2O0Q3NTY7MTExMiAxMTczIDExQUQ7RDc1NjsxMTEyIDExNzMgMTFBRDsgIyAo7Z2WOyDtnZY7IOGEkuGFs+GGrTsg7Z2WOyDhhJLhhbPhhq07ICkgSEFOR1VMIFNZTExBQkxFIEhFVU5ICitENzU3O0Q3NTc7MTExMiAxMTczIDExQUU7RDc1NzsxMTEyIDExNzMgMTFBRTsgIyAo7Z2XOyDtnZc7IOGEkuGFs+GGrjsg7Z2XOyDhhJLhhbPhhq47ICkgSEFOR1VMIFNZTExBQkxFIEhFVUQKK0Q3NTg7RDc1ODsxMTEyIDExNzMgMTFBRjtENzU4OzExMTIgMTE3MyAxMUFGOyAjICjtnZg7IO2dmDsg4YSS4YWz4YavOyDtnZg7IOGEkuGFs+GGrzsgKSBIQU5HVUwgU1lMTEFCTEUgSEVVTAorRDc1OTtENzU5OzExMTIgMTE3MyAxMUIwO0Q3NTk7MTExMiAxMTczIDExQjA7ICMgKO2dmTsg7Z2ZOyDhhJLhhbPhhrA7IO2dmTsg4YSS4YWz4YawOyApIEhBTkdVTCBTWUxMQUJMRSBIRVVMRworRDc1QTtENzVBOzExMTIgMTE3MyAxMUIxO0Q3NUE7MTExMiAxMTczIDExQjE7ICMgKO2dmjsg7Z2aOyDhhJLhhbPhhrE7IO2dmjsg4YSS4YWz4YaxOyApIEhBTkdVTCBTWUxMQUJMRSBIRVVMTQorRDc1QjtENzVCOzExMTIgMTE3MyAxMUIyO0Q3NUI7MTExMiAxMTczIDExQjI7ICMgKO2dmzsg7Z2bOyDhhJLhhbPhhrI7IO2dmzsg4YSS4YWz4YayOyApIEhBTkdVTCBTWUxMQUJMRSBIRVVMQgorRDc1QztENzVDOzExMTIgMTE3MyAxMUIzO0Q3NUM7MTExMiAxMTczIDExQjM7ICMgKO2dnDsg7Z2cOyDhhJLhhbPhhrM7IO2dnDsg4YSS4YWz4YazOyApIEhBTkdVTCBTWUxMQUJMRSBIRVVMUworRDc1RDtENzVEOzExMTIgMTE3MyAxMUI0O0Q3NUQ7MTExMiAxMTczIDExQjQ7ICMgKO2dnTsg7Z2dOyDhhJLhhbPhhrQ7IO2dnTsg4YSS4YWz4Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBIRVVMVAorRDc1RTtENzVFOzExMTIgMTE3MyAxMUI1O0Q3NUU7MTExMiAxMTczIDExQjU7ICMgKO2dnjsg7Z2eOyDhhJLhhbPhhrU7IO2dnjsg4YSS4YWz4Ya1OyApIEhBTkdVTCBTWUxMQUJMRSBIRVVMUAorRDc1RjtENzVGOzExMTIgMTE3MyAxMUI2O0Q3NUY7MTExMiAxMTczIDExQjY7ICMgKO2dnzsg7Z2fOyDhhJLhhbPhhrY7IO2dnzsg4YSS4YWz4Ya2OyApIEhBTkdVTCBTWUxMQUJMRSBIRVVMSAorRDc2MDtENzYwOzExMTIgMTE3MyAxMUI3O0Q3NjA7MTExMiAxMTczIDExQjc7ICMgKO2doDsg7Z2gOyDhhJLhhbPhhrc7IO2doDsg4YSS4YWz4Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBIRVVNCitENzYxO0Q3NjE7MTExMiAxMTczIDExQjg7RDc2MTsxMTEyIDExNzMgMTFCODsgIyAo7Z2hOyDtnaE7IOGEkuGFs+GGuDsg7Z2hOyDhhJLhhbPhhrg7ICkgSEFOR1VMIFNZTExBQkxFIEhFVUIKK0Q3NjI7RDc2MjsxMTEyIDExNzMgMTFCOTtENzYyOzExMTIgMTE3MyAxMUI5OyAjICjtnaI7IO2dojsg4YSS4YWz4Ya5OyDtnaI7IOGEkuGFs+GGuTsgKSBIQU5HVUwgU1lMTEFCTEUgSEVVQlMKK0Q3NjM7RDc2MzsxMTEyIDExNzMgMTFCQTtENzYzOzExMTIgMTE3MyAxMUJBOyAjICjtnaM7IO2dozsg4YSS4YWz4Ya6OyDtnaM7IOGEkuGFs+GGujsgKSBIQU5HVUwgU1lMTEFCTEUgSEVVUworRDc2NDtENzY0OzExMTIgMTE3MyAxMUJCO0Q3NjQ7MTExMiAxMTczIDExQkI7ICMgKO2dpDsg7Z2kOyDhhJLhhbPhhrs7IO2dpDsg4YSS4YWz4Ya7OyApIEhBTkdVTCBTWUxMQUJMRSBIRVVTUworRDc2NTtENzY1OzExMTIgMTE3MyAxMUJDO0Q3NjU7MTExMiAxMTczIDExQkM7ICMgKO2dpTsg7Z2lOyDhhJLhhbPhhrw7IO2dpTsg4YSS4YWz4Ya8OyApIEhBTkdVTCBTWUxMQUJMRSBIRVVORworRDc2NjtENzY2OzExMTIgMTE3MyAxMUJEO0Q3NjY7MTExMiAxMTczIDExQkQ7ICMgKO2dpjsg7Z2mOyDhhJLhhbPhhr07IO2dpjsg4YSS4YWz4Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBIRVVKCitENzY3O0Q3Njc7MTExMiAxMTczIDExQkU7RDc2NzsxMTEyIDExNzMgMTFCRTsgIyAo7Z2nOyDtnac7IOGEkuGFs+GGvjsg7Z2nOyDhhJLhhbPhhr47ICkgSEFOR1VMIFNZTExBQkxFIEhFVUMKK0Q3Njg7RDc2ODsxMTEyIDExNzMgMTFCRjtENzY4OzExMTIgMTE3MyAxMUJGOyAjICjtnag7IO2dqDsg4YSS4YWz4Ya/OyDtnag7IOGEkuGFs+GGvzsgKSBIQU5HVUwgU1lMTEFCTEUgSEVVSworRDc2OTtENzY5OzExMTIgMTE3MyAxMUMwO0Q3Njk7MTExMiAxMTczIDExQzA7ICMgKO2dqTsg7Z2pOyDhhJLhhbPhh4A7IO2dqTsg4YSS4YWz4YeAOyApIEhBTkdVTCBTWUxMQUJMRSBIRVVUCitENzZBO0Q3NkE7MTExMiAxMTczIDExQzE7RDc2QTsxMTEyIDExNzMgMTFDMTsgIyAo7Z2qOyDtnao7IOGEkuGFs+GHgTsg7Z2qOyDhhJLhhbPhh4E7ICkgSEFOR1VMIFNZTExBQkxFIEhFVVAKK0Q3NkI7RDc2QjsxMTEyIDExNzMgMTFDMjtENzZCOzExMTIgMTE3MyAxMUMyOyAjICjtnas7IO2dqzsg4YSS4YWz4YeCOyDtnas7IOGEkuGFs+GHgjsgKSBIQU5HVUwgU1lMTEFCTEUgSEVVSAorRDc2QztENzZDOzExMTIgMTE3NDtENzZDOzExMTIgMTE3NDsgIyAo7Z2sOyDtnaw7IOGEkuGFtDsg7Z2sOyDhhJLhhbQ7ICkgSEFOR1VMIFNZTExBQkxFIEhZSQorRDc2RDtENzZEOzExMTIgMTE3NCAxMUE4O0Q3NkQ7MTExMiAxMTc0IDExQTg7ICMgKO2drTsg7Z2tOyDhhJLhhbThhqg7IO2drTsg4YSS4YW04YaoOyApIEhBTkdVTCBTWUxMQUJMRSBIWUlHCitENzZFO0Q3NkU7MTExMiAxMTc0IDExQTk7RDc2RTsxMTEyIDExNzQgMTFBOTsgIyAo7Z2uOyDtna47IOGEkuGFtOGGqTsg7Z2uOyDhhJLhhbThhqk7ICkgSEFOR1VMIFNZTExBQkxFIEhZSUdHCitENzZGO0Q3NkY7MTExMiAxMTc0IDExQUE7RDc2RjsxMTEyIDExNzQgMTFBQTsgIyAo7Z2vOyDtna87IOGEkuGFtOGGqjsg7Z2vOyDhhJLhhbThhqo7ICkgSEFOR1VMIFNZTExBQkxFIEhZSUdTCitENzcwO0Q3NzA7MTExMiAxMTc0IDExQUI7RDc3MDsxMTEyIDExNzQgMTFBQjsgIyAo7Z2wOyDtnbA7IOGEkuGFtOGGqzsg7Z2wOyDhhJLhhbThhqs7ICkgSEFOR1VMIFNZTExBQkxFIEhZSU4KK0Q3NzE7RDc3MTsxMTEyIDExNzQgMTFBQztENzcxOzExMTIgMTE3NCAxMUFDOyAjICjtnbE7IO2dsTsg4YSS4YW04YasOyDtnbE7IOGEkuGFtOGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSFlJTkoKK0Q3NzI7RDc3MjsxMTEyIDExNzQgMTFBRDtENzcyOzExMTIgMTE3NCAxMUFEOyAjICjtnbI7IO2dsjsg4YSS4YW04YatOyDtnbI7IOGEkuGFtOGGrTsgKSBIQU5HVUwgU1lMTEFCTEUgSFlJTkgKK0Q3NzM7RDc3MzsxMTEyIDExNzQgMTFBRTtENzczOzExMTIgMTE3NCAxMUFFOyAjICjtnbM7IO2dszsg4YSS4YW04YauOyDtnbM7IOGEkuGFtOGGrjsgKSBIQU5HVUwgU1lMTEFCTEUgSFlJRAorRDc3NDtENzc0OzExMTIgMTE3NCAxMUFGO0Q3NzQ7MTExMiAxMTc0IDExQUY7ICMgKO2dtDsg7Z20OyDhhJLhhbThhq87IO2dtDsg4YSS4YW04YavOyApIEhBTkdVTCBTWUxMQUJMRSBIWUlMCitENzc1O0Q3NzU7MTExMiAxMTc0IDExQjA7RDc3NTsxMTEyIDExNzQgMTFCMDsgIyAo7Z21OyDtnbU7IOGEkuGFtOGGsDsg7Z21OyDhhJLhhbThhrA7ICkgSEFOR1VMIFNZTExBQkxFIEhZSUxHCitENzc2O0Q3NzY7MTExMiAxMTc0IDExQjE7RDc3NjsxMTEyIDExNzQgMTFCMTsgIyAo7Z22OyDtnbY7IOGEkuGFtOGGsTsg7Z22OyDhhJLhhbThhrE7ICkgSEFOR1VMIFNZTExBQkxFIEhZSUxNCitENzc3O0Q3Nzc7MTExMiAxMTc0IDExQjI7RDc3NzsxMTEyIDExNzQgMTFCMjsgIyAo7Z23OyDtnbc7IOGEkuGFtOGGsjsg7Z23OyDhhJLhhbThhrI7ICkgSEFOR1VMIFNZTExBQkxFIEhZSUxCCitENzc4O0Q3Nzg7MTExMiAxMTc0IDExQjM7RDc3ODsxMTEyIDExNzQgMTFCMzsgIyAo7Z24OyDtnbg7IOGEkuGFtOGGszsg7Z24OyDhhJLhhbThhrM7ICkgSEFOR1VMIFNZTExBQkxFIEhZSUxTCitENzc5O0Q3Nzk7MTExMiAxMTc0IDExQjQ7RDc3OTsxMTEyIDExNzQgMTFCNDsgIyAo7Z25OyDtnbk7IOGEkuGFtOGGtDsg7Z25OyDhhJLhhbThhrQ7ICkgSEFOR1VMIFNZTExBQkxFIEhZSUxUCitENzdBO0Q3N0E7MTExMiAxMTc0IDExQjU7RDc3QTsxMTEyIDExNzQgMTFCNTsgIyAo7Z26OyDtnbo7IOGEkuGFtOGGtTsg7Z26OyDhhJLhhbThhrU7ICkgSEFOR1VMIFNZTExBQkxFIEhZSUxQCitENzdCO0Q3N0I7MTExMiAxMTc0IDExQjY7RDc3QjsxMTEyIDExNzQgMTFCNjsgIyAo7Z27OyDtnbs7IOGEkuGFtOGGtjsg7Z27OyDhhJLhhbThhrY7ICkgSEFOR1VMIFNZTExBQkxFIEhZSUxICitENzdDO0Q3N0M7MTExMiAxMTc0IDExQjc7RDc3QzsxMTEyIDExNzQgMTFCNzsgIyAo7Z28OyDtnbw7IOGEkuGFtOGGtzsg7Z28OyDhhJLhhbThhrc7ICkgSEFOR1VMIFNZTExBQkxFIEhZSU0KK0Q3N0Q7RDc3RDsxMTEyIDExNzQgMTFCODtENzdEOzExMTIgMTE3NCAxMUI4OyAjICjtnb07IO2dvTsg4YSS4YW04Ya4OyDtnb07IOGEkuGFtOGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSFlJQgorRDc3RTtENzdFOzExMTIgMTE3NCAxMUI5O0Q3N0U7MTExMiAxMTc0IDExQjk7ICMgKO2dvjsg7Z2+OyDhhJLhhbThhrk7IO2dvjsg4YSS4YW04Ya5OyApIEhBTkdVTCBTWUxMQUJMRSBIWUlCUworRDc3RjtENzdGOzExMTIgMTE3NCAxMUJBO0Q3N0Y7MTExMiAxMTc0IDExQkE7ICMgKO2dvzsg7Z2/OyDhhJLhhbThhro7IO2dvzsg4YSS4YW04Ya6OyApIEhBTkdVTCBTWUxMQUJMRSBIWUlTCitENzgwO0Q3ODA7MTExMiAxMTc0IDExQkI7RDc4MDsxMTEyIDExNzQgMTFCQjsgIyAo7Z6AOyDtnoA7IOGEkuGFtOGGuzsg7Z6AOyDhhJLhhbThhrs7ICkgSEFOR1VMIFNZTExBQkxFIEhZSVNTCitENzgxO0Q3ODE7MTExMiAxMTc0IDExQkM7RDc4MTsxMTEyIDExNzQgMTFCQzsgIyAo7Z6BOyDtnoE7IOGEkuGFtOGGvDsg7Z6BOyDhhJLhhbThhrw7ICkgSEFOR1VMIFNZTExBQkxFIEhZSU5HCitENzgyO0Q3ODI7MTExMiAxMTc0IDExQkQ7RDc4MjsxMTEyIDExNzQgMTFCRDsgIyAo7Z6COyDtnoI7IOGEkuGFtOGGvTsg7Z6COyDhhJLhhbThhr07ICkgSEFOR1VMIFNZTExBQkxFIEhZSUoKK0Q3ODM7RDc4MzsxMTEyIDExNzQgMTFCRTtENzgzOzExMTIgMTE3NCAxMUJFOyAjICjtnoM7IO2egzsg4YSS4YW04Ya+OyDtnoM7IOGEkuGFtOGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSFlJQworRDc4NDtENzg0OzExMTIgMTE3NCAxMUJGO0Q3ODQ7MTExMiAxMTc0IDExQkY7ICMgKO2ehDsg7Z6EOyDhhJLhhbThhr87IO2ehDsg4YSS4YW04Ya/OyApIEhBTkdVTCBTWUxMQUJMRSBIWUlLCitENzg1O0Q3ODU7MTExMiAxMTc0IDExQzA7RDc4NTsxMTEyIDExNzQgMTFDMDsgIyAo7Z6FOyDtnoU7IOGEkuGFtOGHgDsg7Z6FOyDhhJLhhbThh4A7ICkgSEFOR1VMIFNZTExBQkxFIEhZSVQKK0Q3ODY7RDc4NjsxMTEyIDExNzQgMTFDMTtENzg2OzExMTIgMTE3NCAxMUMxOyAjICjtnoY7IO2ehjsg4YSS4YW04YeBOyDtnoY7IOGEkuGFtOGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSFlJUAorRDc4NztENzg3OzExMTIgMTE3NCAxMUMyO0Q3ODc7MTExMiAxMTc0IDExQzI7ICMgKO2ehzsg7Z6HOyDhhJLhhbThh4I7IO2ehzsg4YSS4YW04YeCOyApIEhBTkdVTCBTWUxMQUJMRSBIWUlICitENzg4O0Q3ODg7MTExMiAxMTc1O0Q3ODg7MTExMiAxMTc1OyAjICjtnog7IO2eiDsg4YSS4YW1OyDtnog7IOGEkuGFtTsgKSBIQU5HVUwgU1lMTEFCTEUgSEkKK0Q3ODk7RDc4OTsxMTEyIDExNzUgMTFBODtENzg5OzExMTIgMTE3NSAxMUE4OyAjICjtnok7IO2eiTsg4YSS4YW14YaoOyDtnok7IOGEkuGFteGGqDsgKSBIQU5HVUwgU1lMTEFCTEUgSElHCitENzhBO0Q3OEE7MTExMiAxMTc1IDExQTk7RDc4QTsxMTEyIDExNzUgMTFBOTsgIyAo7Z6KOyDtnoo7IOGEkuGFteGGqTsg7Z6KOyDhhJLhhbXhhqk7ICkgSEFOR1VMIFNZTExBQkxFIEhJR0cKK0Q3OEI7RDc4QjsxMTEyIDExNzUgMTFBQTtENzhCOzExMTIgMTE3NSAxMUFBOyAjICjtnos7IO2eizsg4YSS4YW14YaqOyDtnos7IOGEkuGFteGGqjsgKSBIQU5HVUwgU1lMTEFCTEUgSElHUworRDc4QztENzhDOzExMTIgMTE3NSAxMUFCO0Q3OEM7MTExMiAxMTc1IDExQUI7ICMgKO2ejDsg7Z6MOyDhhJLhhbXhhqs7IO2ejDsg4YSS4YW14YarOyApIEhBTkdVTCBTWUxMQUJMRSBISU4KK0Q3OEQ7RDc4RDsxMTEyIDExNzUgMTFBQztENzhEOzExMTIgMTE3NSAxMUFDOyAjICjtno07IO2ejTsg4YSS4YW14YasOyDtno07IOGEkuGFteGGrDsgKSBIQU5HVUwgU1lMTEFCTEUgSElOSgorRDc4RTtENzhFOzExMTIgMTE3NSAxMUFEO0Q3OEU7MTExMiAxMTc1IDExQUQ7ICMgKO2ejjsg7Z6OOyDhhJLhhbXhhq07IO2ejjsg4YSS4YW14YatOyApIEhBTkdVTCBTWUxMQUJMRSBISU5ICitENzhGO0Q3OEY7MTExMiAxMTc1IDExQUU7RDc4RjsxMTEyIDExNzUgMTFBRTsgIyAo7Z6POyDtno87IOGEkuGFteGGrjsg7Z6POyDhhJLhhbXhhq47ICkgSEFOR1VMIFNZTExBQkxFIEhJRAorRDc5MDtENzkwOzExMTIgMTE3NSAxMUFGO0Q3OTA7MTExMiAxMTc1IDExQUY7ICMgKO2ekDsg7Z6QOyDhhJLhhbXhhq87IO2ekDsg4YSS4YW14YavOyApIEhBTkdVTCBTWUxMQUJMRSBISUwKK0Q3OTE7RDc5MTsxMTEyIDExNzUgMTFCMDtENzkxOzExMTIgMTE3NSAxMUIwOyAjICjtnpE7IO2ekTsg4YSS4YW14YawOyDtnpE7IOGEkuGFteGGsDsgKSBIQU5HVUwgU1lMTEFCTEUgSElMRworRDc5MjtENzkyOzExMTIgMTE3NSAxMUIxO0Q3OTI7MTExMiAxMTc1IDExQjE7ICMgKO2ekjsg7Z6SOyDhhJLhhbXhhrE7IO2ekjsg4YSS4YW14YaxOyApIEhBTkdVTCBTWUxMQUJMRSBISUxNCitENzkzO0Q3OTM7MTExMiAxMTc1IDExQjI7RDc5MzsxMTEyIDExNzUgMTFCMjsgIyAo7Z6TOyDtnpM7IOGEkuGFteGGsjsg7Z6TOyDhhJLhhbXhhrI7ICkgSEFOR1VMIFNZTExBQkxFIEhJTEIKK0Q3OTQ7RDc5NDsxMTEyIDExNzUgMTFCMztENzk0OzExMTIgMTE3NSAxMUIzOyAjICjtnpQ7IO2elDsg4YSS4YW14YazOyDtnpQ7IOGEkuGFteGGszsgKSBIQU5HVUwgU1lMTEFCTEUgSElMUworRDc5NTtENzk1OzExMTIgMTE3NSAxMUI0O0Q3OTU7MTExMiAxMTc1IDExQjQ7ICMgKO2elTsg7Z6VOyDhhJLhhbXhhrQ7IO2elTsg4YSS4YW14Ya0OyApIEhBTkdVTCBTWUxMQUJMRSBISUxUCitENzk2O0Q3OTY7MTExMiAxMTc1IDExQjU7RDc5NjsxMTEyIDExNzUgMTFCNTsgIyAo7Z6WOyDtnpY7IOGEkuGFteGGtTsg7Z6WOyDhhJLhhbXhhrU7ICkgSEFOR1VMIFNZTExBQkxFIEhJTFAKK0Q3OTc7RDc5NzsxMTEyIDExNzUgMTFCNjtENzk3OzExMTIgMTE3NSAxMUI2OyAjICjtnpc7IO2elzsg4YSS4YW14Ya2OyDtnpc7IOGEkuGFteGGtjsgKSBIQU5HVUwgU1lMTEFCTEUgSElMSAorRDc5ODtENzk4OzExMTIgMTE3NSAxMUI3O0Q3OTg7MTExMiAxMTc1IDExQjc7ICMgKO2emDsg7Z6YOyDhhJLhhbXhhrc7IO2emDsg4YSS4YW14Ya3OyApIEhBTkdVTCBTWUxMQUJMRSBISU0KK0Q3OTk7RDc5OTsxMTEyIDExNzUgMTFCODtENzk5OzExMTIgMTE3NSAxMUI4OyAjICjtnpk7IO2emTsg4YSS4YW14Ya4OyDtnpk7IOGEkuGFteGGuDsgKSBIQU5HVUwgU1lMTEFCTEUgSElCCitENzlBO0Q3OUE7MTExMiAxMTc1IDExQjk7RDc5QTsxMTEyIDExNzUgMTFCOTsgIyAo7Z6aOyDtnpo7IOGEkuGFteGGuTsg7Z6aOyDhhJLhhbXhhrk7ICkgSEFOR1VMIFNZTExBQkxFIEhJQlMKK0Q3OUI7RDc5QjsxMTEyIDExNzUgMTFCQTtENzlCOzExMTIgMTE3NSAxMUJBOyAjICjtnps7IO2emzsg4YSS4YW14Ya6OyDtnps7IOGEkuGFteGGujsgKSBIQU5HVUwgU1lMTEFCTEUgSElTCitENzlDO0Q3OUM7MTExMiAxMTc1IDExQkI7RDc5QzsxMTEyIDExNzUgMTFCQjsgIyAo7Z6cOyDtnpw7IOGEkuGFteGGuzsg7Z6cOyDhhJLhhbXhhrs7ICkgSEFOR1VMIFNZTExBQkxFIEhJU1MKK0Q3OUQ7RDc5RDsxMTEyIDExNzUgMTFCQztENzlEOzExMTIgMTE3NSAxMUJDOyAjICjtnp07IO2enTsg4YSS4YW14Ya8OyDtnp07IOGEkuGFteGGvDsgKSBIQU5HVUwgU1lMTEFCTEUgSElORworRDc5RTtENzlFOzExMTIgMTE3NSAxMUJEO0Q3OUU7MTExMiAxMTc1IDExQkQ7ICMgKO2enjsg7Z6eOyDhhJLhhbXhhr07IO2enjsg4YSS4YW14Ya9OyApIEhBTkdVTCBTWUxMQUJMRSBISUoKK0Q3OUY7RDc5RjsxMTEyIDExNzUgMTFCRTtENzlGOzExMTIgMTE3NSAxMUJFOyAjICjtnp87IO2enzsg4YSS4YW14Ya+OyDtnp87IOGEkuGFteGGvjsgKSBIQU5HVUwgU1lMTEFCTEUgSElDCitEN0EwO0Q3QTA7MTExMiAxMTc1IDExQkY7RDdBMDsxMTEyIDExNzUgMTFCRjsgIyAo7Z6gOyDtnqA7IOGEkuGFteGGvzsg7Z6gOyDhhJLhhbXhhr87ICkgSEFOR1VMIFNZTExBQkxFIEhJSworRDdBMTtEN0ExOzExMTIgMTE3NSAxMUMwO0Q3QTE7MTExMiAxMTc1IDExQzA7ICMgKO2eoTsg7Z6hOyDhhJLhhbXhh4A7IO2eoTsg4YSS4YW14YeAOyApIEhBTkdVTCBTWUxMQUJMRSBISVQKK0Q3QTI7RDdBMjsxMTEyIDExNzUgMTFDMTtEN0EyOzExMTIgMTE3NSAxMUMxOyAjICjtnqI7IO2eojsg4YSS4YW14YeBOyDtnqI7IOGEkuGFteGHgTsgKSBIQU5HVUwgU1lMTEFCTEUgSElQCitEN0EzO0Q3QTM7MTExMiAxMTc1IDExQzI7RDdBMzsxMTEyIDExNzUgMTFDMjsgIyAo7Z6jOyDtnqM7IOGEkuGFteGHgjsg7Z6jOyDhhJLhhbXhh4I7ICkgSEFOR1VMIFNZTExBQkxFIEhJSAorRjkwMDs4QzQ4OzhDNDg7OEM0ODs4QzQ4OyAjICjvpIA7IOixiDsg6LGIOyDosYg7IOixiDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwMAorRjkwMTs2NkY0OzY2RjQ7NjZGNDs2NkY0OyAjICjvpIE7IOabtDsg5pu0OyDmm7Q7IOabtDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwMQorRjkwMjs4RUNBOzhFQ0E7OEVDQTs4RUNBOyAjICjvpII7IOi7ijsg6LuKOyDou4o7IOi7ijsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwMgorRjkwMzs4Q0M4OzhDQzg7OENDODs4Q0M4OyAjICjvpIM7IOiziDsg6LOIOyDos4g7IOiziDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwMworRjkwNDs2RUQxOzZFRDE7NkVEMTs2RUQxOyAjICjvpIQ7IOa7kTsg5ruROyDmu5E7IOa7kTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwNAorRjkwNTs0RTMyOzRFMzI7NEUzMjs0RTMyOyAjICjvpIU7IOS4sjsg5LiyOyDkuLI7IOS4sjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwNQorRjkwNjs1M0U1OzUzRTU7NTNFNTs1M0U1OyAjICjvpIY7IOWPpTsg5Y+lOyDlj6U7IOWPpTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwNgorRjkwNzs5RjlDOzlGOUM7OUY5Qzs5RjlDOyAjICjvpIc7IOm+nDsg6b6cOyDpvpw7IOm+nDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwNworRjkwODs5RjlDOzlGOUM7OUY5Qzs5RjlDOyAjICjvpIg7IOm+nDsg6b6cOyDpvpw7IOm+nDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwOAorRjkwOTs1OTUxOzU5NTE7NTk1MTs1OTUxOyAjICjvpIk7IOWlkTsg5aWROyDlpZE7IOWlkTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwOQorRjkwQTs5MUQxOzkxRDE7OTFEMTs5MUQxOyAjICjvpIo7IOmHkTsg6YeROyDph5E7IOmHkTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwQQorRjkwQjs1NTg3OzU1ODc7NTU4Nzs1NTg3OyAjICjvpIs7IOWWhzsg5ZaHOyDlloc7IOWWhzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwQgorRjkwQzs1OTQ4OzU5NDg7NTk0ODs1OTQ4OyAjICjvpIw7IOWliDsg5aWIOyDlpYg7IOWliDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwQworRjkwRDs2MUY2OzYxRjY7NjFGNjs2MUY2OyAjICjvpI07IOaHtjsg5oe2OyDmh7Y7IOaHtjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwRAorRjkwRTs3NjY5Ozc2Njk7NzY2OTs3NjY5OyAjICjvpI47IOeZqTsg55mpOyDnmak7IOeZqTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwRQorRjkwRjs3Rjg1OzdGODU7N0Y4NTs3Rjg1OyAjICjvpI87IOe+hTsg576FOyDnvoU7IOe+hTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwRgorRjkxMDs4NjNGOzg2M0Y7ODYzRjs4NjNGOyAjICjvpJA7IOiYvzsg6Ji/OyDomL87IOiYvzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxMAorRjkxMTs4N0JBOzg3QkE7ODdCQTs4N0JBOyAjICjvpJE7IOieujsg6J66OyDonro7IOieujsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxMQorRjkxMjs4OEY4Ozg4Rjg7ODhGODs4OEY4OyAjICjvpJI7IOijuDsg6KO4OyDoo7g7IOijuDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxMgorRjkxMzs5MDhGOzkwOEY7OTA4Rjs5MDhGOyAjICjvpJM7IOmCjzsg6YKPOyDpgo87IOmCjzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxMworRjkxNDs2QTAyOzZBMDI7NkEwMjs2QTAyOyAjICjvpJQ7IOaogjsg5qiCOyDmqII7IOaogjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxNAorRjkxNTs2RDFCOzZEMUI7NkQxQjs2RDFCOyAjICjvpJU7IOa0mzsg5rSbOyDmtJs7IOa0mzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxNQorRjkxNjs3MEQ5OzcwRDk7NzBEOTs3MEQ5OyAjICjvpJY7IOeDmTsg54OZOyDng5k7IOeDmTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxNgorRjkxNzs3M0RFOzczREU7NzNERTs3M0RFOyAjICjvpJc7IOePnjsg54+eOyDnj547IOePnjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxNworRjkxODs4NDNEOzg0M0Q7ODQzRDs4NDNEOyAjICjvpJg7IOiQvTsg6JC9OyDokL07IOiQvTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxOAorRjkxOTs5MTZBOzkxNkE7OTE2QTs5MTZBOyAjICjvpJk7IOmFqjsg6YWqOyDphao7IOmFqjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxOQorRjkxQTs5OUYxOzk5RjE7OTlGMTs5OUYxOyAjICjvpJo7IOmnsTsg6aexOyDpp7E7IOmnsTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxQQorRjkxQjs0RTgyOzRFODI7NEU4Mjs0RTgyOyAjICjvpJs7IOS6gjsg5LqCOyDkuoI7IOS6gjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxQgorRjkxQzs1Mzc1OzUzNzU7NTM3NTs1Mzc1OyAjICjvpJw7IOWNtTsg5Y21OyDljbU7IOWNtTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxQworRjkxRDs2QjA0OzZCMDQ7NkIwNDs2QjA0OyAjICjvpJ07IOashDsg5qyEOyDmrIQ7IOashDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxRAorRjkxRTs3MjFCOzcyMUI7NzIxQjs3MjFCOyAjICjvpJ47IOeImzsg54ibOyDniJs7IOeImzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxRQorRjkxRjs4NjJEOzg2MkQ7ODYyRDs4NjJEOyAjICjvpJ87IOiYrTsg6JitOyDomK07IOiYrTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxRgorRjkyMDs5RTFFOzlFMUU7OUUxRTs5RTFFOyAjICjvpKA7IOm4njsg6bieOyDpuJ47IOm4njsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyMAorRjkyMTs1RDUwOzVENTA7NUQ1MDs1RDUwOyAjICjvpKE7IOW1kDsg5bWQOyDltZA7IOW1kDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyMQorRjkyMjs2RkVCOzZGRUI7NkZFQjs2RkVCOyAjICjvpKI7IOa/qzsg5r+rOyDmv6s7IOa/qzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyMgorRjkyMzs4NUNEOzg1Q0Q7ODVDRDs4NUNEOyAjICjvpKM7IOiXjTsg6JeNOyDol407IOiXjTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyMworRjkyNDs4OTY0Ozg5NjQ7ODk2NDs4OTY0OyAjICjvpKQ7IOilpDsg6KWkOyDopaQ7IOilpDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyNAorRjkyNTs2MkM5OzYyQzk7NjJDOTs2MkM5OyAjICjvpKU7IOaLiTsg5ouJOyDmi4k7IOaLiTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyNQorRjkyNjs4MUQ4OzgxRDg7ODFEODs4MUQ4OyAjICjvpKY7IOiHmDsg6IeYOyDoh5g7IOiHmDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyNgorRjkyNzs4ODFGOzg4MUY7ODgxRjs4ODFGOyAjICjvpKc7IOignzsg6KCfOyDooJ87IOignzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyNworRjkyODs1RUNBOzVFQ0E7NUVDQTs1RUNBOyAjICjvpKg7IOW7ijsg5buKOyDlu4o7IOW7ijsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyOAorRjkyOTs2NzE3OzY3MTc7NjcxNzs2NzE3OyAjICjvpKk7IOaclzsg5pyXOyDmnJc7IOaclzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyOQorRjkyQTs2RDZBOzZENkE7NkQ2QTs2RDZBOyAjICjvpKo7IOa1qjsg5rWqOyDmtao7IOa1qjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyQQorRjkyQjs3MkZDOzcyRkM7NzJGQzs3MkZDOyAjICjvpKs7IOeLvDsg54u8OyDni7w7IOeLvDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyQgorRjkyQzs5MENFOzkwQ0U7OTBDRTs5MENFOyAjICjvpKw7IOmDjjsg6YOOOyDpg447IOmDjjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyQworRjkyRDs0Rjg2OzRGODY7NEY4Njs0Rjg2OyAjICjvpK07IOS+hjsg5L6GOyDkvoY7IOS+hjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyRAorRjkyRTs1MUI3OzUxQjc7NTFCNzs1MUI3OyAjICjvpK47IOWGtzsg5Ya3OyDlhrc7IOWGtzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyRQorRjkyRjs1MkRFOzUyREU7NTJERTs1MkRFOyAjICjvpK87IOWLnjsg5YueOyDli547IOWLnjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyRgorRjkzMDs2NEM0OzY0QzQ7NjRDNDs2NEM0OyAjICjvpLA7IOaThDsg5pOEOyDmk4Q7IOaThDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzMAorRjkzMTs2QUQzOzZBRDM7NkFEMzs2QUQzOyAjICjvpLE7IOarkzsg5quTOyDmq5M7IOarkzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzMQorRjkzMjs3MjEwOzcyMTA7NzIxMDs3MjEwOyAjICjvpLI7IOeIkDsg54iQOyDniJA7IOeIkDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzMgorRjkzMzs3NkU3Ozc2RTc7NzZFNzs3NkU3OyAjICjvpLM7IOebpzsg55unOyDnm6c7IOebpzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzMworRjkzNDs4MDAxOzgwMDE7ODAwMTs4MDAxOyAjICjvpLQ7IOiAgTsg6ICBOyDogIE7IOiAgTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzNAorRjkzNTs4NjA2Ozg2MDY7ODYwNjs4NjA2OyAjICjvpLU7IOiYhjsg6JiGOyDomIY7IOiYhjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzNQorRjkzNjs4NjVDOzg2NUM7ODY1Qzs4NjVDOyAjICjvpLY7IOiZnDsg6JmcOyDomZw7IOiZnDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzNgorRjkzNzs4REVGOzhERUY7OERFRjs4REVGOyAjICjvpLc7IOi3rzsg6LevOyDot687IOi3rzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzNworRjkzODs5NzMyOzk3MzI7OTczMjs5NzMyOyAjICjvpLg7IOmcsjsg6ZyyOyDpnLI7IOmcsjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzOAorRjkzOTs5QjZGOzlCNkY7OUI2Rjs5QjZGOyAjICjvpLk7IOmtrzsg6a2vOyDpra87IOmtrzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzOQorRjkzQTs5REZBOzlERkE7OURGQTs5REZBOyAjICjvpLo7IOm3ujsg6be6OyDpt7o7IOm3ujsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzQQorRjkzQjs3ODhDOzc4OEM7Nzg4Qzs3ODhDOyAjICjvpLs7IOeijDsg56KMOyDnoow7IOeijDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzQgorRjkzQzs3OTdGOzc5N0Y7Nzk3Rjs3OTdGOyAjICjvpLw7IOelvzsg56W/OyDnpb87IOelvzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzQworRjkzRDs3REEwOzdEQTA7N0RBMDs3REEwOyAjICjvpL07IOe2oDsg57agOyDntqA7IOe2oDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzRAorRjkzRTs4M0M5OzgzQzk7ODNDOTs4M0M5OyAjICjvpL47IOiPiTsg6I+JOyDoj4k7IOiPiTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzRQorRjkzRjs5MzA0OzkzMDQ7OTMwNDs5MzA0OyAjICjvpL87IOmMhDsg6YyEOyDpjIQ7IOmMhDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzRgorRjk0MDs5RTdGOzlFN0Y7OUU3Rjs5RTdGOyAjICjvpYA7IOm5vzsg6bm/OyDpub87IOm5vzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0MAorRjk0MTs4QUQ2OzhBRDY7OEFENjs4QUQ2OyAjICjvpYE7IOirljsg6KuWOyDoq5Y7IOirljsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0MQorRjk0Mjs1OERGOzU4REY7NThERjs1OERGOyAjICjvpYI7IOWjnzsg5aOfOyDlo587IOWjnzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0MgorRjk0Mzs1RjA0OzVGMDQ7NUYwNDs1RjA0OyAjICjvpYM7IOW8hDsg5byEOyDlvIQ7IOW8hDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0MworRjk0NDs3QzYwOzdDNjA7N0M2MDs3QzYwOyAjICjvpYQ7IOexoDsg57GgOyDnsaA7IOexoDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0NAorRjk0NTs4MDdFOzgwN0U7ODA3RTs4MDdFOyAjICjvpYU7IOiBvjsg6IG+OyDogb47IOiBvjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0NQorRjk0Njs3MjYyOzcyNjI7NzI2Mjs3MjYyOyAjICjvpYY7IOeJojsg54miOyDniaI7IOeJojsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0NgorRjk0Nzs3OENBOzc4Q0E7NzhDQTs3OENBOyAjICjvpYc7IOejijsg56OKOyDno4o7IOejijsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0NworRjk0ODs4Q0MyOzhDQzI7OENDMjs4Q0MyOyAjICjvpYg7IOizgjsg6LOCOyDos4I7IOizgjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0OAorRjk0OTs5NkY3Ozk2Rjc7OTZGNzs5NkY3OyAjICjvpYk7IOmbtzsg6Zu3OyDpm7c7IOmbtzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0OQorRjk0QTs1OEQ4OzU4RDg7NThEODs1OEQ4OyAjICjvpYo7IOWjmDsg5aOYOyDlo5g7IOWjmDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0QQorRjk0Qjs1QzYyOzVDNjI7NUM2Mjs1QzYyOyAjICjvpYs7IOWxojsg5bGiOyDlsaI7IOWxojsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0QgorRjk0Qzs2QTEzOzZBMTM7NkExMzs2QTEzOyAjICjvpYw7IOaokzsg5qiTOyDmqJM7IOaokzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0QworRjk0RDs2RERBOzZEREE7NkREQTs2RERBOyAjICjvpY07IOa3mjsg5reaOyDmt5o7IOa3mjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0RAorRjk0RTs2RjBGOzZGMEY7NkYwRjs2RjBGOyAjICjvpY47IOa8jzsg5ryPOyDmvI87IOa8jzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0RQorRjk0Rjs3RDJGOzdEMkY7N0QyRjs3RDJGOyAjICjvpY87IOe0rzsg57SvOyDntK87IOe0rzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0RgorRjk1MDs3RTM3OzdFMzc7N0UzNzs3RTM3OyAjICjvpZA7IOe4tzsg57i3OyDnuLc7IOe4tzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1MAorRjk1MTs5NkZCOzk2RkI7OTZGQjs5NkZCOyAjICjvpZE7IOmbuzsg6Zu7OyDpm7s7IOmbuzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1MQorRjk1Mjs1MkQyOzUyRDI7NTJEMjs1MkQyOyAjICjvpZI7IOWLkjsg5YuSOyDli5I7IOWLkjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1MgorRjk1Mzs4MDhCOzgwOEI7ODA4Qjs4MDhCOyAjICjvpZM7IOiCizsg6IKLOyDogos7IOiCizsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1MworRjk1NDs1MURDOzUxREM7NTFEQzs1MURDOyAjICjvpZQ7IOWHnDsg5YecOyDlh5w7IOWHnDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1NAorRjk1NTs1MUNDOzUxQ0M7NTFDQzs1MUNDOyAjICjvpZU7IOWHjDsg5YeMOyDlh4w7IOWHjDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1NQorRjk1Njs3QTFDOzdBMUM7N0ExQzs3QTFDOyAjICjvpZY7IOeonDsg56icOyDnqJw7IOeonDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1NgorRjk1Nzs3REJFOzdEQkU7N0RCRTs3REJFOyAjICjvpZc7IOe2vjsg57a+OyDntr47IOe2vjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1NworRjk1ODs4M0YxOzgzRjE7ODNGMTs4M0YxOyAjICjvpZg7IOiPsTsg6I+xOyDoj7E7IOiPsTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1OAorRjk1OTs5Njc1Ozk2NzU7OTY3NTs5Njc1OyAjICjvpZk7IOmZtTsg6Zm1OyDpmbU7IOmZtTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1OQorRjk1QTs4QjgwOzhCODA7OEI4MDs4QjgwOyAjICjvpZo7IOiugDsg6K6AOyDoroA7IOiugDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1QQorRjk1Qjs2MkNGOzYyQ0Y7NjJDRjs2MkNGOyAjICjvpZs7IOaLjzsg5ouPOyDmi487IOaLjzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1QgorRjk1Qzs2QTAyOzZBMDI7NkEwMjs2QTAyOyAjICjvpZw7IOaogjsg5qiCOyDmqII7IOaogjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1QworRjk1RDs4QUZFOzhBRkU7OEFGRTs4QUZFOyAjICjvpZ07IOirvjsg6Ku+OyDoq747IOirvjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1RAorRjk1RTs0RTM5OzRFMzk7NEUzOTs0RTM5OyAjICjvpZ47IOS4uTsg5Li5OyDkuLk7IOS4uTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1RQorRjk1Rjs1QkU3OzVCRTc7NUJFNzs1QkU3OyAjICjvpZ87IOWvpzsg5a+nOyDlr6c7IOWvpzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1RgorRjk2MDs2MDEyOzYwMTI7NjAxMjs2MDEyOyAjICjvpaA7IOaAkjsg5oCSOyDmgJI7IOaAkjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2MAorRjk2MTs3Mzg3OzczODc7NzM4Nzs3Mzg3OyAjICjvpaE7IOeOhzsg546HOyDnjoc7IOeOhzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2MQorRjk2Mjs3NTcwOzc1NzA7NzU3MDs3NTcwOyAjICjvpaI7IOeVsDsg55WwOyDnlbA7IOeVsDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2MgorRjk2Mzs1MzE3OzUzMTc7NTMxNzs1MzE3OyAjICjvpaM7IOWMlzsg5YyXOyDljJc7IOWMlzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2MworRjk2NDs3OEZCOzc4RkI7NzhGQjs3OEZCOyAjICjvpaQ7IOejuzsg56O7OyDno7s7IOejuzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2NAorRjk2NTs0RkJGOzRGQkY7NEZCRjs0RkJGOyAjICjvpaU7IOS+vzsg5L6/OyDkvr87IOS+vzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2NQorRjk2Njs1RkE5OzVGQTk7NUZBOTs1RkE5OyAjICjvpaY7IOW+qTsg5b6pOyDlvqk7IOW+qTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2NgorRjk2Nzs0RTBEOzRFMEQ7NEUwRDs0RTBEOyAjICjvpac7IOS4jTsg5LiNOyDkuI07IOS4jTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2NworRjk2ODs2Q0NDOzZDQ0M7NkNDQzs2Q0NDOyAjICjvpag7IOazjDsg5rOMOyDms4w7IOazjDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2OAorRjk2OTs2NTc4OzY1Nzg7NjU3ODs2NTc4OyAjICjvpak7IOaVuDsg5pW4OyDmlbg7IOaVuDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2OQorRjk2QTs3RDIyOzdEMjI7N0QyMjs3RDIyOyAjICjvpao7IOe0ojsg57SiOyDntKI7IOe0ojsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2QQorRjk2Qjs1M0MzOzUzQzM7NTNDMzs1M0MzOyAjICjvpas7IOWPgzsg5Y+DOyDlj4M7IOWPgzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2QgorRjk2Qzs1ODVFOzU4NUU7NTg1RTs1ODVFOyAjICjvpaw7IOWhnjsg5aGeOyDloZ47IOWhnjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2QworRjk2RDs3NzAxOzc3MDE7NzcwMTs3NzAxOyAjICjvpa07IOecgTsg55yBOyDnnIE7IOecgTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2RAorRjk2RTs4NDQ5Ozg0NDk7ODQ0OTs4NDQ5OyAjICjvpa47IOiRiTsg6JGJOyDokYk7IOiRiTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2RQorRjk2Rjs4QUFBOzhBQUE7OEFBQTs4QUFBOyAjICjvpa87IOiqqjsg6KqqOyDoqqo7IOiqqjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2RgorRjk3MDs2QkJBOzZCQkE7NkJCQTs2QkJBOyAjICjvpbA7IOauujsg5q66OyDmrro7IOauujsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3MAorRjk3MTs4RkIwOzhGQjA7OEZCMDs4RkIwOyAjICjvpbE7IOi+sDsg6L6wOyDovrA7IOi+sDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3MQorRjk3Mjs2Qzg4OzZDODg7NkM4ODs2Qzg4OyAjICjvpbI7IOayiDsg5rKIOyDmsog7IOayiDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3MgorRjk3Mzs2MkZFOzYyRkU7NjJGRTs2MkZFOyAjICjvpbM7IOaLvjsg5ou+OyDmi747IOaLvjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3MworRjk3NDs4MkU1OzgyRTU7ODJFNTs4MkU1OyAjICjvpbQ7IOiLpTsg6IulOyDoi6U7IOiLpTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3NAorRjk3NTs2M0EwOzYzQTA7NjNBMDs2M0EwOyAjICjvpbU7IOaOoDsg5o6gOyDmjqA7IOaOoDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3NQorRjk3Njs3NTY1Ozc1NjU7NzU2NTs3NTY1OyAjICjvpbY7IOeVpTsg55WlOyDnlaU7IOeVpTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3NgorRjk3Nzs0RUFFOzRFQUU7NEVBRTs0RUFFOyAjICjvpbc7IOS6rjsg5LquOyDkuq47IOS6rjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3NworRjk3ODs1MTY5OzUxNjk7NTE2OTs1MTY5OyAjICjvpbg7IOWFqTsg5YWpOyDlhak7IOWFqTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3OAorRjk3OTs1MUM5OzUxQzk7NTFDOTs1MUM5OyAjICjvpbk7IOWHiTsg5YeJOyDlh4k7IOWHiTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3OQorRjk3QTs2ODgxOzY4ODE7Njg4MTs2ODgxOyAjICjvpbo7IOaigTsg5qKBOyDmooE7IOaigTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3QQorRjk3Qjs3Q0U3OzdDRTc7N0NFNzs3Q0U3OyAjICjvpbs7IOezpzsg57OnOyDns6c7IOezpzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3QgorRjk3Qzs4MjZGOzgyNkY7ODI2Rjs4MjZGOyAjICjvpbw7IOiJrzsg6ImvOyDoia87IOiJrzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3QworRjk3RDs4QUQyOzhBRDI7OEFEMjs4QUQyOyAjICjvpb07IOirkjsg6KuSOyDoq5I7IOirkjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3RAorRjk3RTs5MUNGOzkxQ0Y7OTFDRjs5MUNGOyAjICjvpb47IOmHjzsg6YePOyDph487IOmHjzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3RQorRjk3Rjs1MkY1OzUyRjU7NTJGNTs1MkY1OyAjICjvpb87IOWLtTsg5Yu1OyDli7U7IOWLtTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3RgorRjk4MDs1NDQyOzU0NDI7NTQ0Mjs1NDQyOyAjICjvpoA7IOWRgjsg5ZGCOyDlkYI7IOWRgjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4MAorRjk4MTs1OTczOzU5NzM7NTk3Mzs1OTczOyAjICjvpoE7IOWlszsg5aWzOyDlpbM7IOWlszsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4MQorRjk4Mjs1RUVDOzVFRUM7NUVFQzs1RUVDOyAjICjvpoI7IOW7rDsg5busOyDlu6w7IOW7rDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4MgorRjk4Mzs2NUM1OzY1QzU7NjVDNTs2NUM1OyAjICjvpoM7IOaXhTsg5peFOyDml4U7IOaXhTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4MworRjk4NDs2RkZFOzZGRkU7NkZGRTs2RkZFOyAjICjvpoQ7IOa/vjsg5r++OyDmv747IOa/vjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4NAorRjk4NTs3OTJBOzc5MkE7NzkyQTs3OTJBOyAjICjvpoU7IOekqjsg56SqOyDnpKo7IOekqjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4NQorRjk4Njs5NUFEOzk1QUQ7OTVBRDs5NUFEOyAjICjvpoY7IOmWrTsg6ZatOyDplq07IOmWrTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4NgorRjk4Nzs5QTZBOzlBNkE7OUE2QTs5QTZBOyAjICjvpoc7IOmpqjsg6amqOyDpqao7IOmpqjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4NworRjk4ODs5RTk3OzlFOTc7OUU5Nzs5RTk3OyAjICjvpog7IOm6lzsg6bqXOyDpupc7IOm6lzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4OAorRjk4OTs5RUNFOzlFQ0U7OUVDRTs5RUNFOyAjICjvpok7IOm7jjsg6buOOyDpu447IOm7jjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4OQorRjk4QTs1MjlCOzUyOUI7NTI5Qjs1MjlCOyAjICjvpoo7IOWKmzsg5YqbOyDlips7IOWKmzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4QQorRjk4Qjs2NkM2OzY2QzY7NjZDNjs2NkM2OyAjICjvpos7IOabhjsg5puGOyDmm4Y7IOabhjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4QgorRjk4Qzs2Qjc3OzZCNzc7NkI3Nzs2Qjc3OyAjICjvpow7IOattzsg5q23OyDmrbc7IOattzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4QworRjk4RDs4RjYyOzhGNjI7OEY2Mjs4RjYyOyAjICjvpo07IOi9ojsg6L2iOyDovaI7IOi9ojsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4RAorRjk4RTs1RTc0OzVFNzQ7NUU3NDs1RTc0OyAjICjvpo47IOW5tDsg5bm0OyDlubQ7IOW5tDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4RQorRjk4Rjs2MTkwOzYxOTA7NjE5MDs2MTkwOyAjICjvpo87IOaGkDsg5oaQOyDmhpA7IOaGkDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4RgorRjk5MDs2MjAwOzYyMDA7NjIwMDs2MjAwOyAjICjvppA7IOaIgDsg5oiAOyDmiIA7IOaIgDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5MAorRjk5MTs2NDlBOzY0OUE7NjQ5QTs2NDlBOyAjICjvppE7IOaSmjsg5pKaOyDmkpo7IOaSmjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5MQorRjk5Mjs2RjIzOzZGMjM7NkYyMzs2RjIzOyAjICjvppI7IOa8ozsg5ryjOyDmvKM7IOa8ozsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5MgorRjk5Mzs3MTQ5OzcxNDk7NzE0OTs3MTQ5OyAjICjvppM7IOeFiTsg54WJOyDnhYk7IOeFiTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5MworRjk5NDs3NDg5Ozc0ODk7NzQ4OTs3NDg5OyAjICjvppQ7IOeSiTsg55KJOyDnkok7IOeSiTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5NAorRjk5NTs3OUNBOzc5Q0E7NzlDQTs3OUNBOyAjICjvppU7IOenijsg56eKOyDnp4o7IOenijsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5NQorRjk5Njs3REY0OzdERjQ7N0RGNDs3REY0OyAjICjvppY7IOe3tDsg57e0OyDnt7Q7IOe3tDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5NgorRjk5Nzs4MDZGOzgwNkY7ODA2Rjs4MDZGOyAjICjvppc7IOiBrzsg6IGvOyDoga87IOiBrzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5NworRjk5ODs4RjI2OzhGMjY7OEYyNjs4RjI2OyAjICjvppg7IOi8pjsg6LymOyDovKY7IOi8pjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5OAorRjk5OTs4NEVFOzg0RUU7ODRFRTs4NEVFOyAjICjvppk7IOiTrjsg6JOuOyDok647IOiTrjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5OQorRjk5QTs5MDIzOzkwMjM7OTAyMzs5MDIzOyAjICjvppo7IOmAozsg6YCjOyDpgKM7IOmAozsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5QQorRjk5Qjs5MzRBOzkzNEE7OTM0QTs5MzRBOyAjICjvpps7IOmNijsg6Y2KOyDpjYo7IOmNijsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5QgorRjk5Qzs1MjE3OzUyMTc7NTIxNzs1MjE3OyAjICjvppw7IOWIlzsg5YiXOyDliJc7IOWIlzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5QworRjk5RDs1MkEzOzUyQTM7NTJBMzs1MkEzOyAjICjvpp07IOWKozsg5YqjOyDliqM7IOWKozsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5RAorRjk5RTs1NEJEOzU0QkQ7NTRCRDs1NEJEOyAjICjvpp47IOWSvTsg5ZK9OyDlkr07IOWSvTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5RQorRjk5Rjs3MEM4OzcwQzg7NzBDODs3MEM4OyAjICjvpp87IOeDiDsg54OIOyDng4g7IOeDiDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5RgorRjlBMDs4OEMyOzg4QzI7ODhDMjs4OEMyOyAjICjvpqA7IOijgjsg6KOCOyDoo4I7IOijgjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBMAorRjlBMTs4QUFBOzhBQUE7OEFBQTs4QUFBOyAjICjvpqE7IOiqqjsg6KqqOyDoqqo7IOiqqjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBMQorRjlBMjs1RUM5OzVFQzk7NUVDOTs1RUM5OyAjICjvpqI7IOW7iTsg5buJOyDlu4k7IOW7iTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBMgorRjlBMzs1RkY1OzVGRjU7NUZGNTs1RkY1OyAjICjvpqM7IOW/tTsg5b+1OyDlv7U7IOW/tTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBMworRjlBNDs2MzdCOzYzN0I7NjM3Qjs2MzdCOyAjICjvpqQ7IOaNuzsg5o27OyDmjbs7IOaNuzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBNAorRjlBNTs2QkFFOzZCQUU7NkJBRTs2QkFFOyAjICjvpqU7IOaurjsg5q6uOyDmrq47IOaurjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBNQorRjlBNjs3QzNFOzdDM0U7N0MzRTs3QzNFOyAjICjvpqY7IOewvjsg57C+OyDnsL47IOewvjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBNgorRjlBNzs3Mzc1OzczNzU7NzM3NTs3Mzc1OyAjICjvpqc7IOeNtTsg5421OyDnjbU7IOeNtTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBNworRjlBODs0RUU0OzRFRTQ7NEVFNDs0RUU0OyAjICjvpqg7IOS7pDsg5LukOyDku6Q7IOS7pDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBOAorRjlBOTs1NkY5OzU2Rjk7NTZGOTs1NkY5OyAjICjvpqk7IOWbuTsg5Zu5OyDlm7k7IOWbuTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBOQorRjlBQTs1QkU3OzVCRTc7NUJFNzs1QkU3OyAjICjvpqo7IOWvpzsg5a+nOyDlr6c7IOWvpzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBQQorRjlBQjs1REJBOzVEQkE7NURCQTs1REJBOyAjICjvpqs7IOW2ujsg5ba6OyDltro7IOW2ujsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBQgorRjlBQzs2MDFDOzYwMUM7NjAxQzs2MDFDOyAjICjvpqw7IOaAnDsg5oCcOyDmgJw7IOaAnDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBQworRjlBRDs3M0IyOzczQjI7NzNCMjs3M0IyOyAjICjvpq07IOeOsjsg546yOyDnjrI7IOeOsjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBRAorRjlBRTs3NDY5Ozc0Njk7NzQ2OTs3NDY5OyAjICjvpq47IOeRqTsg55GpOyDnkak7IOeRqTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBRQorRjlBRjs3RjlBOzdGOUE7N0Y5QTs3RjlBOyAjICjvpq87IOe+mjsg576aOyDnvpo7IOe+mjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBRgorRjlCMDs4MDQ2OzgwNDY7ODA0Njs4MDQ2OyAjICjvprA7IOiBhjsg6IGGOyDogYY7IOiBhjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCMAorRjlCMTs5MjM0OzkyMzQ7OTIzNDs5MjM0OyAjICjvprE7IOmItDsg6Yi0OyDpiLQ7IOmItDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCMQorRjlCMjs5NkY2Ozk2RjY7OTZGNjs5NkY2OyAjICjvprI7IOmbtjsg6Zu2OyDpm7Y7IOmbtjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCMgorRjlCMzs5NzQ4Ozk3NDg7OTc0ODs5NzQ4OyAjICjvprM7IOmdiDsg6Z2IOyDpnYg7IOmdiDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCMworRjlCNDs5ODE4Ozk4MTg7OTgxODs5ODE4OyAjICjvprQ7IOmgmDsg6aCYOyDpoJg7IOmgmDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCNAorRjlCNTs0RjhCOzRGOEI7NEY4Qjs0RjhCOyAjICjvprU7IOS+izsg5L6LOyDkvos7IOS+izsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCNQorRjlCNjs3OUFFOzc5QUU7NzlBRTs3OUFFOyAjICjvprY7IOemrjsg56auOyDnpq47IOemrjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCNgorRjlCNzs5MUI0OzkxQjQ7OTFCNDs5MUI0OyAjICjvprc7IOmGtDsg6Ya0OyDphrQ7IOmGtDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCNworRjlCODs5NkI4Ozk2Qjg7OTZCODs5NkI4OyAjICjvprg7IOmauDsg6Zq4OyDpmrg7IOmauDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCOAorRjlCOTs2MEUxOzYwRTE7NjBFMTs2MEUxOyAjICjvprk7IOaDoTsg5oOhOyDmg6E7IOaDoTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCOQorRjlCQTs0RTg2OzRFODY7NEU4Njs0RTg2OyAjICjvpro7IOS6hjsg5LqGOyDkuoY7IOS6hjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCQQorRjlCQjs1MERBOzUwREE7NTBEQTs1MERBOyAjICjvprs7IOWDmjsg5YOaOyDlg5o7IOWDmjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCQgorRjlCQzs1QkVFOzVCRUU7NUJFRTs1QkVFOyAjICjvprw7IOWvrjsg5a+uOyDlr647IOWvrjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCQworRjlCRDs1QzNGOzVDM0Y7NUMzRjs1QzNGOyAjICjvpr07IOWwvzsg5bC/OyDlsL87IOWwvzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCRAorRjlCRTs2NTk5OzY1OTk7NjU5OTs2NTk5OyAjICjvpr47IOaWmTsg5paZOyDmlpk7IOaWmTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCRQorRjlCRjs2QTAyOzZBMDI7NkEwMjs2QTAyOyAjICjvpr87IOaogjsg5qiCOyDmqII7IOaogjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCRgorRjlDMDs3MUNFOzcxQ0U7NzFDRTs3MUNFOyAjICjvp4A7IOeHjjsg54eOOyDnh447IOeHjjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDMAorRjlDMTs3NjQyOzc2NDI7NzY0Mjs3NjQyOyAjICjvp4E7IOeZgjsg55mCOyDnmYI7IOeZgjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDMQorRjlDMjs4NEZDOzg0RkM7ODRGQzs4NEZDOyAjICjvp4I7IOiTvDsg6JO8OyDok7w7IOiTvDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDMgorRjlDMzs5MDdDOzkwN0M7OTA3Qzs5MDdDOyAjICjvp4M7IOmBvDsg6YG8OyDpgbw7IOmBvDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDMworRjlDNDs5RjhEOzlGOEQ7OUY4RDs5RjhEOyAjICjvp4Q7IOm+jTsg6b6NOyDpvo07IOm+jTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDNAorRjlDNTs2Njg4OzY2ODg7NjY4ODs2Njg4OyAjICjvp4U7IOaaiDsg5pqIOyDmmog7IOaaiDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDNQorRjlDNjs5NjJFOzk2MkU7OTYyRTs5NjJFOyAjICjvp4Y7IOmYrjsg6ZiuOyDpmK47IOmYrjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDNgorRjlDNzs1Mjg5OzUyODk7NTI4OTs1Mjg5OyAjICjvp4c7IOWKiTsg5YqJOyDliok7IOWKiTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDNworRjlDODs2NzdCOzY3N0I7Njc3Qjs2NzdCOyAjICjvp4g7IOaduzsg5p27OyDmnbs7IOaduzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDOAorRjlDOTs2N0YzOzY3RjM7NjdGMzs2N0YzOyAjICjvp4k7IOafszsg5p+zOyDmn7M7IOafszsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDOQorRjlDQTs2RDQxOzZENDE7NkQ0MTs2RDQxOyAjICjvp4o7IOa1gTsg5rWBOyDmtYE7IOa1gTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDQQorRjlDQjs2RTlDOzZFOUM7NkU5Qzs2RTlDOyAjICjvp4s7IOa6nDsg5rqcOyDmupw7IOa6nDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDQgorRjlDQzs3NDA5Ozc0MDk7NzQwOTs3NDA5OyAjICjvp4w7IOeQiTsg55CJOyDnkIk7IOeQiTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDQworRjlDRDs3NTU5Ozc1NTk7NzU1OTs3NTU5OyAjICjvp407IOeVmTsg55WZOyDnlZk7IOeVmTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDRAorRjlDRTs3ODZCOzc4NkI7Nzg2Qjs3ODZCOyAjICjvp447IOehqzsg56GrOyDnoas7IOehqzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDRQorRjlDRjs3RDEwOzdEMTA7N0QxMDs3RDEwOyAjICjvp487IOe0kDsg57SQOyDntJA7IOe0kDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDRgorRjlEMDs5ODVFOzk4NUU7OTg1RTs5ODVFOyAjICjvp5A7IOmhnjsg6aGeOyDpoZ47IOmhnjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEMAorRjlEMTs1MTZEOzUxNkQ7NTE2RDs1MTZEOyAjICjvp5E7IOWFrTsg5YWtOyDlha07IOWFrTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEMQorRjlEMjs2MjJFOzYyMkU7NjIyRTs2MjJFOyAjICjvp5I7IOaIrjsg5oiuOyDmiK47IOaIrjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEMgorRjlEMzs5Njc4Ozk2Nzg7OTY3ODs5Njc4OyAjICjvp5M7IOmZuDsg6Zm4OyDpmbg7IOmZuDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEMworRjlENDs1MDJCOzUwMkI7NTAyQjs1MDJCOyAjICjvp5Q7IOWAqzsg5YCrOyDlgKs7IOWAqzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlENAorRjlENTs1RDE5OzVEMTk7NUQxOTs1RDE5OyAjICjvp5U7IOW0mTsg5bSZOyDltJk7IOW0mTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlENQorRjlENjs2REVBOzZERUE7NkRFQTs2REVBOyAjICjvp5Y7IOa3qjsg5reqOyDmt6o7IOa3qjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlENgorRjlENzs4RjJBOzhGMkE7OEYyQTs4RjJBOyAjICjvp5c7IOi8qjsg6LyqOyDovKo7IOi8qjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlENworRjlEODs1RjhCOzVGOEI7NUY4Qjs1RjhCOyAjICjvp5g7IOW+izsg5b6LOyDlvos7IOW+izsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEOAorRjlEOTs2MTQ0OzYxNDQ7NjE0NDs2MTQ0OyAjICjvp5k7IOaFhDsg5oWEOyDmhYQ7IOaFhDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEOQorRjlEQTs2ODE3OzY4MTc7NjgxNzs2ODE3OyAjICjvp5o7IOaglzsg5qCXOyDmoJc7IOaglzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEQQorRjlEQjs3Mzg3OzczODc7NzM4Nzs3Mzg3OyAjICjvp5s7IOeOhzsg546HOyDnjoc7IOeOhzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEQgorRjlEQzs5Njg2Ozk2ODY7OTY4Njs5Njg2OyAjICjvp5w7IOmahjsg6ZqGOyDpmoY7IOmahjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEQworRjlERDs1MjI5OzUyMjk7NTIyOTs1MjI5OyAjICjvp507IOWIqTsg5YipOyDliKk7IOWIqTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlERAorRjlERTs1NDBGOzU0MEY7NTQwRjs1NDBGOyAjICjvp547IOWQjzsg5ZCPOyDlkI87IOWQjzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlERQorRjlERjs1QzY1OzVDNjU7NUM2NTs1QzY1OyAjICjvp587IOWxpTsg5bGlOyDlsaU7IOWxpTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlERgorRjlFMDs2NjEzOzY2MTM7NjYxMzs2NjEzOyAjICjvp6A7IOaYkzsg5piTOyDmmJM7IOaYkzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFMAorRjlFMTs2NzRFOzY3NEU7Njc0RTs2NzRFOyAjICjvp6E7IOadjjsg5p2OOyDmnY47IOadjjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFMQorRjlFMjs2OEE4OzY4QTg7NjhBODs2OEE4OyAjICjvp6I7IOaiqDsg5qKoOyDmoqg7IOaiqDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFMgorRjlFMzs2Q0U1OzZDRTU7NkNFNTs2Q0U1OyAjICjvp6M7IOazpTsg5rOlOyDms6U7IOazpTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFMworRjlFNDs3NDA2Ozc0MDY7NzQwNjs3NDA2OyAjICjvp6Q7IOeQhjsg55CGOyDnkIY7IOeQhjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFNAorRjlFNTs3NUUyOzc1RTI7NzVFMjs3NUUyOyAjICjvp6U7IOeXojsg55eiOyDnl6I7IOeXojsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFNQorRjlFNjs3Rjc5OzdGNzk7N0Y3OTs3Rjc5OyAjICjvp6Y7IOe9uTsg5725OyDnvbk7IOe9uTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFNgorRjlFNzs4OENGOzg4Q0Y7ODhDRjs4OENGOyAjICjvp6c7IOijjzsg6KOPOyDoo487IOijjzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFNworRjlFODs4OEUxOzg4RTE7ODhFMTs4OEUxOyAjICjvp6g7IOijoTsg6KOhOyDoo6E7IOijoTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFOAorRjlFOTs5MUNDOzkxQ0M7OTFDQzs5MUNDOyAjICjvp6k7IOmHjDsg6YeMOyDph4w7IOmHjDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFOQorRjlFQTs5NkUyOzk2RTI7OTZFMjs5NkUyOyAjICjvp6o7IOmbojsg6ZuiOyDpm6I7IOmbojsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFQQorRjlFQjs1MzNGOzUzM0Y7NTMzRjs1MzNGOyAjICjvp6s7IOWMvzsg5Yy/OyDljL87IOWMvzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFQgorRjlFQzs2RUJBOzZFQkE7NkVCQTs2RUJBOyAjICjvp6w7IOa6ujsg5rq6OyDmuro7IOa6ujsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFQworRjlFRDs1NDFEOzU0MUQ7NTQxRDs1NDFEOyAjICjvp607IOWQnTsg5ZCdOyDlkJ07IOWQnTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFRAorRjlFRTs3MUQwOzcxRDA7NzFEMDs3MUQwOyAjICjvp647IOeHkDsg54eQOyDnh5A7IOeHkDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFRQorRjlFRjs3NDk4Ozc0OTg7NzQ5ODs3NDk4OyAjICjvp687IOeSmDsg55KYOyDnkpg7IOeSmDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFRgorRjlGMDs4NUZBOzg1RkE7ODVGQTs4NUZBOyAjICjvp7A7IOiXujsg6Je6OyDol7o7IOiXujsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGMAorRjlGMTs5NkEzOzk2QTM7OTZBMzs5NkEzOyAjICjvp7E7IOmaozsg6ZqjOyDpmqM7IOmaozsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGMQorRjlGMjs5QzU3OzlDNTc7OUM1Nzs5QzU3OyAjICjvp7I7IOmxlzsg6bGXOyDpsZc7IOmxlzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGMgorRjlGMzs5RTlGOzlFOUY7OUU5Rjs5RTlGOyAjICjvp7M7IOm6nzsg6bqfOyDpup87IOm6nzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGMworRjlGNDs2Nzk3OzY3OTc7Njc5Nzs2Nzk3OyAjICjvp7Q7IOaelzsg5p6XOyDmnpc7IOaelzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGNAorRjlGNTs2RENCOzZEQ0I7NkRDQjs2RENCOyAjICjvp7U7IOa3izsg5reLOyDmt4s7IOa3izsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGNQorRjlGNjs4MUU4OzgxRTg7ODFFODs4MUU4OyAjICjvp7Y7IOiHqDsg6IeoOyDoh6g7IOiHqDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGNgorRjlGNzs3QUNCOzdBQ0I7N0FDQjs3QUNCOyAjICjvp7c7IOerizsg56uLOyDnq4s7IOerizsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGNworRjlGODs3QjIwOzdCMjA7N0IyMDs3QjIwOyAjICjvp7g7IOesoDsg56ygOyDnrKA7IOesoDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGOAorRjlGOTs3QzkyOzdDOTI7N0M5Mjs3QzkyOyAjICjvp7k7IOeykjsg57KSOyDnspI7IOeykjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGOQorRjlGQTs3MkMwOzcyQzA7NzJDMDs3MkMwOyAjICjvp7o7IOeLgDsg54uAOyDni4A7IOeLgDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGQQorRjlGQjs3MDk5OzcwOTk7NzA5OTs3MDk5OyAjICjvp7s7IOeCmTsg54KZOyDngpk7IOeCmTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGQgorRjlGQzs4QjU4OzhCNTg7OEI1ODs4QjU4OyAjICjvp7w7IOitmDsg6K2YOyDorZg7IOitmDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGQworRjlGRDs0RUMwOzRFQzA7NEVDMDs0RUMwOyAjICjvp707IOS7gDsg5LuAOyDku4A7IOS7gDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGRAorRjlGRTs4MzM2OzgzMzY7ODMzNjs4MzM2OyAjICjvp747IOiMtjsg6Iy2OyDojLY7IOiMtjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGRQorRjlGRjs1MjNBOzUyM0E7NTIzQTs1MjNBOyAjICjvp787IOWIujsg5Yi6OyDliLo7IOWIujsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGRgorRkEwMDs1MjA3OzUyMDc7NTIwNzs1MjA3OyAjICjvqIA7IOWIhzsg5YiHOyDliIc7IOWIhzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwMAorRkEwMTs1RUE2OzVFQTY7NUVBNjs1RUE2OyAjICjvqIE7IOW6pjsg5bqmOyDluqY7IOW6pjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwMQorRkEwMjs2MkQzOzYyRDM7NjJEMzs2MkQzOyAjICjvqII7IOaLkzsg5ouTOyDmi5M7IOaLkzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwMgorRkEwMzs3Q0Q2OzdDRDY7N0NENjs3Q0Q2OyAjICjvqIM7IOezljsg57OWOyDns5Y7IOezljsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwMworRkEwNDs1Qjg1OzVCODU7NUI4NTs1Qjg1OyAjICjvqIQ7IOWuhTsg5a6FOyDlroU7IOWuhTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwNAorRkEwNTs2RDFFOzZEMUU7NkQxRTs2RDFFOyAjICjvqIU7IOa0njsg5rSeOyDmtJ47IOa0njsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwNQorRkEwNjs2NkI0OzY2QjQ7NjZCNDs2NkI0OyAjICjvqIY7IOaatDsg5pq0OyDmmrQ7IOaatDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwNgorRkEwNzs4RjNCOzhGM0I7OEYzQjs4RjNCOyAjICjvqIc7IOi8uzsg6Ly7OyDovLs7IOi8uzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwNworRkEwODs4ODRDOzg4NEM7ODg0Qzs4ODRDOyAjICjvqIg7IOihjDsg6KGMOyDooYw7IOihjDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwOAorRkEwOTs5NjREOzk2NEQ7OTY0RDs5NjREOyAjICjvqIk7IOmZjTsg6ZmNOyDpmY07IOmZjTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwOQorRkEwQTs4OThCOzg5OEI7ODk4Qjs4OThCOyAjICjvqIo7IOimizsg6KaLOyDopos7IOimizsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwQQorRkEwQjs1RUQzOzVFRDM7NUVEMzs1RUQzOyAjICjvqIs7IOW7kzsg5buTOyDlu5M7IOW7kzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwQgorRkEwQzs1MTQwOzUxNDA7NTE0MDs1MTQwOyAjICjvqIw7IOWFgDsg5YWAOyDlhYA7IOWFgDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwQworRkEwRDs1NUMwOzU1QzA7NTVDMDs1NUMwOyAjICjvqI07IOWXgDsg5ZeAOyDll4A7IOWXgDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwRAorRkExMDs1ODVBOzU4NUE7NTg1QTs1ODVBOyAjICjvqJA7IOWhmjsg5aGaOyDloZo7IOWhmjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExMAorRkExMjs2Njc0OzY2NzQ7NjY3NDs2Njc0OyAjICjvqJI7IOaZtDsg5pm0OyDmmbQ7IOaZtDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExMgorRkExNTs1MURFOzUxREU7NTFERTs1MURFOyAjICjvqJU7IOWHnjsg5YeeOyDlh547IOWHnjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExNQorRkExNjs3MzJBOzczMkE7NzMyQTs3MzJBOyAjICjvqJY7IOeMqjsg54yqOyDnjKo7IOeMqjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExNgorRkExNzs3NkNBOzc2Q0E7NzZDQTs3NkNBOyAjICjvqJc7IOebijsg55uKOyDnm4o7IOebijsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExNworRkExODs3OTNDOzc5M0M7NzkzQzs3OTNDOyAjICjvqJg7IOekvDsg56S8OyDnpLw7IOekvDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExOAorRkExOTs3OTVFOzc5NUU7Nzk1RTs3OTVFOyAjICjvqJk7IOelnjsg56WeOyDnpZ47IOelnjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExOQorRkExQTs3OTY1Ozc5NjU7Nzk2NTs3OTY1OyAjICjvqJo7IOelpTsg56WlOyDnpaU7IOelpTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExQQorRkExQjs3OThGOzc5OEY7Nzk4Rjs3OThGOyAjICjvqJs7IOemjzsg56aPOyDnpo87IOemjzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExQgorRkExQzs5NzU2Ozk3NTY7OTc1Njs5NzU2OyAjICjvqJw7IOmdljsg6Z2WOyDpnZY7IOmdljsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExQworRkExRDs3Q0JFOzdDQkU7N0NCRTs3Q0JFOyAjICjvqJ07IOeyvjsg57K+OyDnsr47IOeyvjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExRAorRkExRTs3RkJEOzdGQkQ7N0ZCRDs3RkJEOyAjICjvqJ47IOe+vTsg5769OyDnvr07IOe+vTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExRQorRkEyMDs4NjEyOzg2MTI7ODYxMjs4NjEyOyAjICjvqKA7IOiYkjsg6JiSOyDomJI7IOiYkjsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyMAorRkEyMjs4QUY4OzhBRjg7OEFGODs4QUY4OyAjICjvqKI7IOiruDsg6Ku4OyDoq7g7IOiruDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyMgorRkEyNTs5MDM4OzkwMzg7OTAzODs5MDM4OyAjICjvqKU7IOmAuDsg6YC4OyDpgLg7IOmAuDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyNQorRkEyNjs5MEZEOzkwRkQ7OTBGRDs5MEZEOyAjICjvqKY7IOmDvTsg6YO9OyDpg707IOmDvTsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyNgorRkEyQTs5OEVGOzk4RUY7OThFRjs5OEVGOyAjICjvqKo7IOmjrzsg6aOvOyDpo687IOmjrzsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyQQorRkEyQjs5OEZDOzk4RkM7OThGQzs5OEZDOyAjICjvqKs7IOmjvDsg6aO8OyDpo7w7IOmjvDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyQgorRkEyQzs5OTI4Ozk5Mjg7OTkyODs5OTI4OyAjICjvqKw7IOmkqDsg6aSoOyDppKg7IOmkqDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyQworRkEyRDs5REI0OzlEQjQ7OURCNDs5REI0OyAjICjvqK07IOm2tDsg6ba0OyDptrQ7IOm2tDsgKSBDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyRAorRkIwMDtGQjAwO0ZCMDA7MDA2NiAwMDY2OzAwNjYgMDA2NjsgIyAo76yAOyDvrIA7IO+sgDsgZmY7IGZmOyApIExBVElOIFNNQUxMIExJR0FUVVJFIEZGCitGQjAxO0ZCMDE7RkIwMTswMDY2IDAwNjk7MDA2NiAwMDY5OyAjICjvrIE7IO+sgTsg76yBOyBmaTsgZmk7ICkgTEFUSU4gU01BTEwgTElHQVRVUkUgRkkKK0ZCMDI7RkIwMjtGQjAyOzAwNjYgMDA2QzswMDY2IDAwNkM7ICMgKO+sgjsg76yCOyDvrII7IGZsOyBmbDsgKSBMQVRJTiBTTUFMTCBMSUdBVFVSRSBGTAorRkIwMztGQjAzO0ZCMDM7MDA2NiAwMDY2IDAwNjk7MDA2NiAwMDY2IDAwNjk7ICMgKO+sgzsg76yDOyDvrIM7IGZmaTsgZmZpOyApIExBVElOIFNNQUxMIExJR0FUVVJFIEZGSQorRkIwNDtGQjA0O0ZCMDQ7MDA2NiAwMDY2IDAwNkM7MDA2NiAwMDY2IDAwNkM7ICMgKO+shDsg76yEOyDvrIQ7IGZmbDsgZmZsOyApIExBVElOIFNNQUxMIExJR0FUVVJFIEZGTAorRkIwNTtGQjA1O0ZCMDU7MDA3MyAwMDc0OzAwNzMgMDA3NDsgIyAo76yFOyDvrIU7IO+shTsgc3Q7IHN0OyApIExBVElOIFNNQUxMIExJR0FUVVJFIExPTkcgUyBUCitGQjA2O0ZCMDY7RkIwNjswMDczIDAwNzQ7MDA3MyAwMDc0OyAjICjvrIY7IO+shjsg76yGOyBzdDsgc3Q7ICkgTEFUSU4gU01BTEwgTElHQVRVUkUgU1QKK0ZCMTM7RkIxMztGQjEzOzA1NzQgMDU3NjswNTc0IDA1NzY7ICMgKO+skzsg76yTOyDvrJM7INW01bY7INW01bY7ICkgQVJNRU5JQU4gU01BTEwgTElHQVRVUkUgTUVOIE5PVworRkIxNDtGQjE0O0ZCMTQ7MDU3NCAwNTY1OzA1NzQgMDU2NTsgIyAo76yUOyDvrJQ7IO+slDsg1bTVpTsg1bTVpTsgKSBBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBNRU4gRUNICitGQjE1O0ZCMTU7RkIxNTswNTc0IDA1NkI7MDU3NCAwNTZCOyAjICjvrJU7IO+slTsg76yVOyDVtNWrOyDVtNWrOyApIEFSTUVOSUFOIFNNQUxMIExJR0FUVVJFIE1FTiBJTkkKK0ZCMTY7RkIxNjtGQjE2OzA1N0UgMDU3NjswNTdFIDA1NzY7ICMgKO+sljsg76yWOyDvrJY7INW+1bY7INW+1bY7ICkgQVJNRU5JQU4gU01BTEwgTElHQVRVUkUgVkVXIE5PVworRkIxNztGQjE3O0ZCMTc7MDU3NCAwNTZEOzA1NzQgMDU2RDsgIyAo76yXOyDvrJc7IO+slzsg1bTVrTsg1bTVrTsgKSBBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBNRU4gWEVICitGQjFEO0ZCMUQ7MDVEOSAwNUI0O0ZCMUQ7MDVEOSAwNUI0OyAjICjvrJ07IO+snTsg15nil4zWtDsg76ydOyDXmeKXjNa0OyApIEhFQlJFVyBMRVRURVIgWU9EIFdJVEggSElSSVEKK0ZCMUY7MDVGMiAwNUI3OzA1RjIgMDVCNzswNUYyIDA1Qjc7MDVGMiAwNUI3OyAjICjvrJ87INey4peM1rc7INey4peM1rc7INey4peM1rc7INey4peM1rc7ICkgSEVCUkVXIExJR0FUVVJFIFlJRERJU0ggWU9EIFlPRCBQQVRBSAorRkIyMDtGQjIwO0ZCMjA7MDVFMjswNUUyOyAjICjvrKA7IO+soDsg76ygOyDXojsg16I7ICkgSEVCUkVXIExFVFRFUiBBTFRFUk5BVElWRSBBWUlOCitGQjIxO0ZCMjE7RkIyMTswNUQwOzA1RDA7ICMgKO+soTsg76yhOyDvrKE7INeQOyDXkDsgKSBIRUJSRVcgTEVUVEVSIFdJREUgQUxFRgorRkIyMjtGQjIyO0ZCMjI7MDVEMzswNUQzOyAjICjvrKI7IO+sojsg76yiOyDXkzsg15M7ICkgSEVCUkVXIExFVFRFUiBXSURFIERBTEVUCitGQjIzO0ZCMjM7RkIyMzswNUQ0OzA1RDQ7ICMgKO+sozsg76yjOyDvrKM7INeUOyDXlDsgKSBIRUJSRVcgTEVUVEVSIFdJREUgSEUKK0ZCMjQ7RkIyNDtGQjI0OzA1REI7MDVEQjsgIyAo76ykOyDvrKQ7IO+spDsg15s7INebOyApIEhFQlJFVyBMRVRURVIgV0lERSBLQUYKK0ZCMjU7RkIyNTtGQjI1OzA1REM7MDVEQzsgIyAo76ylOyDvrKU7IO+spTsg15w7INecOyApIEhFQlJFVyBMRVRURVIgV0lERSBMQU1FRAorRkIyNjtGQjI2O0ZCMjY7MDVERDswNUREOyAjICjvrKY7IO+spjsg76ymOyDXnTsg1507ICkgSEVCUkVXIExFVFRFUiBXSURFIEZJTkFMIE1FTQorRkIyNztGQjI3O0ZCMjc7MDVFODswNUU4OyAjICjvrKc7IO+spzsg76ynOyDXqDsg16g7ICkgSEVCUkVXIExFVFRFUiBXSURFIFJFU0gKK0ZCMjg7RkIyODtGQjI4OzA1RUE7MDVFQTsgIyAo76yoOyDvrKg7IO+sqDsg16o7INeqOyApIEhFQlJFVyBMRVRURVIgV0lERSBUQVYKK0ZCMjk7RkIyOTtGQjI5OzAwMkI7MDAyQjsgIyAo76ypOyDvrKk7IO+sqTsgKzsgKzsgKSBIRUJSRVcgTEVUVEVSIEFMVEVSTkFUSVZFIFBMVVMgU0lHTgorRkIyQTswNUU5IDA1QzE7MDVFOSAwNUMxOzA1RTkgMDVDMTswNUU5IDA1QzE7ICMgKO+sqjsg16nil4zXgTsg16nil4zXgTsg16nil4zXgTsg16nil4zXgTsgKSBIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBTSElOIERPVAorRkIyQjswNUU5IDA1QzI7MDVFOSAwNUMyOzA1RTkgMDVDMjswNUU5IDA1QzI7ICMgKO+sqzsg16nil4zXgjsg16nil4zXgjsg16nil4zXgjsg16nil4zXgjsgKSBIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBTSU4gRE9UCitGQjJDOzA1RTkgMDVCQyAwNUMxOzA1RTkgMDVCQyAwNUMxOzA1RTkgMDVCQyAwNUMxOzA1RTkgMDVCQyAwNUMxOyAjICjvrKw7INep4peM1rzil4zXgTsg16nil4zWvOKXjNeBOyDXqeKXjNa84peM14E7INep4peM1rzil4zXgTsgKSBIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBEQUdFU0ggQU5EIFNISU4gRE9UCitGQjJEOzA1RTkgMDVCQyAwNUMyOzA1RTkgMDVCQyAwNUMyOzA1RTkgMDVCQyAwNUMyOzA1RTkgMDVCQyAwNUMyOyAjICjvrK07INep4peM1rzil4zXgjsg16nil4zWvOKXjNeCOyDXqeKXjNa84peM14I7INep4peM1rzil4zXgjsgKSBIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBEQUdFU0ggQU5EIFNJTiBET1QKK0ZCMkU7MDVEMCAwNUI3OzA1RDAgMDVCNzswNUQwIDA1Qjc7MDVEMCAwNUI3OyAjICjvrK47INeQ4peM1rc7INeQ4peM1rc7INeQ4peM1rc7INeQ4peM1rc7ICkgSEVCUkVXIExFVFRFUiBBTEVGIFdJVEggUEFUQUgKK0ZCMkY7MDVEMCAwNUI4OzA1RDAgMDVCODswNUQwIDA1Qjg7MDVEMCAwNUI4OyAjICjvrK87INeQ4peM1rg7INeQ4peM1rg7INeQ4peM1rg7INeQ4peM1rg7ICkgSEVCUkVXIExFVFRFUiBBTEVGIFdJVEggUUFNQVRTCitGQjMwOzA1RDAgMDVCQzswNUQwIDA1QkM7MDVEMCAwNUJDOzA1RDAgMDVCQzsgIyAo76ywOyDXkOKXjNa8OyDXkOKXjNa8OyDXkOKXjNa8OyDXkOKXjNa8OyApIEhFQlJFVyBMRVRURVIgQUxFRiBXSVRIIE1BUElRCitGQjMxOzA1RDEgMDVCQzswNUQxIDA1QkM7MDVEMSAwNUJDOzA1RDEgMDVCQzsgIyAo76yxOyDXkeKXjNa8OyDXkeKXjNa8OyDXkeKXjNa8OyDXkeKXjNa8OyApIEhFQlJFVyBMRVRURVIgQkVUIFdJVEggREFHRVNICitGQjMyOzA1RDIgMDVCQzswNUQyIDA1QkM7MDVEMiAwNUJDOzA1RDIgMDVCQzsgIyAo76yyOyDXkuKXjNa8OyDXkuKXjNa8OyDXkuKXjNa8OyDXkuKXjNa8OyApIEhFQlJFVyBMRVRURVIgR0lNRUwgV0lUSCBEQUdFU0gKK0ZCMzM7MDVEMyAwNUJDOzA1RDMgMDVCQzswNUQzIDA1QkM7MDVEMyAwNUJDOyAjICjvrLM7INeT4peM1rw7INeT4peM1rw7INeT4peM1rw7INeT4peM1rw7ICkgSEVCUkVXIExFVFRFUiBEQUxFVCBXSVRIIERBR0VTSAorRkIzNDswNUQ0IDA1QkM7MDVENCAwNUJDOzA1RDQgMDVCQzswNUQ0IDA1QkM7ICMgKO+stDsg15Til4zWvDsg15Til4zWvDsg15Til4zWvDsg15Til4zWvDsgKSBIRUJSRVcgTEVUVEVSIEhFIFdJVEggTUFQSVEKK0ZCMzU7MDVENSAwNUJDOzA1RDUgMDVCQzswNUQ1IDA1QkM7MDVENSAwNUJDOyAjICjvrLU7INeV4peM1rw7INeV4peM1rw7INeV4peM1rw7INeV4peM1rw7ICkgSEVCUkVXIExFVFRFUiBWQVYgV0lUSCBEQUdFU0gKK0ZCMzY7MDVENiAwNUJDOzA1RDYgMDVCQzswNUQ2IDA1QkM7MDVENiAwNUJDOyAjICjvrLY7INeW4peM1rw7INeW4peM1rw7INeW4peM1rw7INeW4peM1rw7ICkgSEVCUkVXIExFVFRFUiBaQVlJTiBXSVRIIERBR0VTSAorRkIzODswNUQ4IDA1QkM7MDVEOCAwNUJDOzA1RDggMDVCQzswNUQ4IDA1QkM7ICMgKO+suDsg15jil4zWvDsg15jil4zWvDsg15jil4zWvDsg15jil4zWvDsgKSBIRUJSRVcgTEVUVEVSIFRFVCBXSVRIIERBR0VTSAorRkIzOTswNUQ5IDA1QkM7MDVEOSAwNUJDOzA1RDkgMDVCQzswNUQ5IDA1QkM7ICMgKO+suTsg15nil4zWvDsg15nil4zWvDsg15nil4zWvDsg15nil4zWvDsgKSBIRUJSRVcgTEVUVEVSIFlPRCBXSVRIIERBR0VTSAorRkIzQTswNURBIDA1QkM7MDVEQSAwNUJDOzA1REEgMDVCQzswNURBIDA1QkM7ICMgKO+sujsg15ril4zWvDsg15ril4zWvDsg15ril4zWvDsg15ril4zWvDsgKSBIRUJSRVcgTEVUVEVSIEZJTkFMIEtBRiBXSVRIIERBR0VTSAorRkIzQjswNURCIDA1QkM7MDVEQiAwNUJDOzA1REIgMDVCQzswNURCIDA1QkM7ICMgKO+suzsg15vil4zWvDsg15vil4zWvDsg15vil4zWvDsg15vil4zWvDsgKSBIRUJSRVcgTEVUVEVSIEtBRiBXSVRIIERBR0VTSAorRkIzQzswNURDIDA1QkM7MDVEQyAwNUJDOzA1REMgMDVCQzswNURDIDA1QkM7ICMgKO+svDsg15zil4zWvDsg15zil4zWvDsg15zil4zWvDsg15zil4zWvDsgKSBIRUJSRVcgTEVUVEVSIExBTUVEIFdJVEggREFHRVNICitGQjNFOzA1REUgMDVCQzswNURFIDA1QkM7MDVERSAwNUJDOzA1REUgMDVCQzsgIyAo76y+OyDXnuKXjNa8OyDXnuKXjNa8OyDXnuKXjNa8OyDXnuKXjNa8OyApIEhFQlJFVyBMRVRURVIgTUVNIFdJVEggREFHRVNICitGQjQwOzA1RTAgMDVCQzswNUUwIDA1QkM7MDVFMCAwNUJDOzA1RTAgMDVCQzsgIyAo762AOyDXoOKXjNa8OyDXoOKXjNa8OyDXoOKXjNa8OyDXoOKXjNa8OyApIEhFQlJFVyBMRVRURVIgTlVOIFdJVEggREFHRVNICitGQjQxOzA1RTEgMDVCQzswNUUxIDA1QkM7MDVFMSAwNUJDOzA1RTEgMDVCQzsgIyAo762BOyDXoeKXjNa8OyDXoeKXjNa8OyDXoeKXjNa8OyDXoeKXjNa8OyApIEhFQlJFVyBMRVRURVIgU0FNRUtIIFdJVEggREFHRVNICitGQjQzOzA1RTMgMDVCQzswNUUzIDA1QkM7MDVFMyAwNUJDOzA1RTMgMDVCQzsgIyAo762DOyDXo+KXjNa8OyDXo+KXjNa8OyDXo+KXjNa8OyDXo+KXjNa8OyApIEhFQlJFVyBMRVRURVIgRklOQUwgUEUgV0lUSCBEQUdFU0gKK0ZCNDQ7MDVFNCAwNUJDOzA1RTQgMDVCQzswNUU0IDA1QkM7MDVFNCAwNUJDOyAjICjvrYQ7INek4peM1rw7INek4peM1rw7INek4peM1rw7INek4peM1rw7ICkgSEVCUkVXIExFVFRFUiBQRSBXSVRIIERBR0VTSAorRkI0NjswNUU2IDA1QkM7MDVFNiAwNUJDOzA1RTYgMDVCQzswNUU2IDA1QkM7ICMgKO+thjsg16bil4zWvDsg16bil4zWvDsg16bil4zWvDsg16bil4zWvDsgKSBIRUJSRVcgTEVUVEVSIFRTQURJIFdJVEggREFHRVNICitGQjQ3OzA1RTcgMDVCQzswNUU3IDA1QkM7MDVFNyAwNUJDOzA1RTcgMDVCQzsgIyAo762HOyDXp+KXjNa8OyDXp+KXjNa8OyDXp+KXjNa8OyDXp+KXjNa8OyApIEhFQlJFVyBMRVRURVIgUU9GIFdJVEggREFHRVNICitGQjQ4OzA1RTggMDVCQzswNUU4IDA1QkM7MDVFOCAwNUJDOzA1RTggMDVCQzsgIyAo762IOyDXqOKXjNa8OyDXqOKXjNa8OyDXqOKXjNa8OyDXqOKXjNa8OyApIEhFQlJFVyBMRVRURVIgUkVTSCBXSVRIIERBR0VTSAorRkI0OTswNUU5IDA1QkM7MDVFOSAwNUJDOzA1RTkgMDVCQzswNUU5IDA1QkM7ICMgKO+tiTsg16nil4zWvDsg16nil4zWvDsg16nil4zWvDsg16nil4zWvDsgKSBIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBEQUdFU0gKK0ZCNEE7MDVFQSAwNUJDOzA1RUEgMDVCQzswNUVBIDA1QkM7MDVFQSAwNUJDOyAjICjvrYo7INeq4peM1rw7INeq4peM1rw7INeq4peM1rw7INeq4peM1rw7ICkgSEVCUkVXIExFVFRFUiBUQVYgV0lUSCBEQUdFU0gKK0ZCNEI7MDVENSAwNUI5OzA1RDUgMDVCOTswNUQ1IDA1Qjk7MDVENSAwNUI5OyAjICjvrYs7INeV4peM1rk7INeV4peM1rk7INeV4peM1rk7INeV4peM1rk7ICkgSEVCUkVXIExFVFRFUiBWQVYgV0lUSCBIT0xBTQorRkI0QzswNUQxIDA1QkY7MDVEMSAwNUJGOzA1RDEgMDVCRjswNUQxIDA1QkY7ICMgKO+tjDsg15Hil4zWvzsg15Hil4zWvzsg15Hil4zWvzsg15Hil4zWvzsgKSBIRUJSRVcgTEVUVEVSIEJFVCBXSVRIIFJBRkUKK0ZCNEQ7MDVEQiAwNUJGOzA1REIgMDVCRjswNURCIDA1QkY7MDVEQiAwNUJGOyAjICjvrY07INeb4peM1r87INeb4peM1r87INeb4peM1r87INeb4peM1r87ICkgSEVCUkVXIExFVFRFUiBLQUYgV0lUSCBSQUZFCitGQjRFOzA1RTQgMDVCRjswNUU0IDA1QkY7MDVFNCAwNUJGOzA1RTQgMDVCRjsgIyAo762OOyDXpOKXjNa/OyDXpOKXjNa/OyDXpOKXjNa/OyDXpOKXjNa/OyApIEhFQlJFVyBMRVRURVIgUEUgV0lUSCBSQUZFCitGQjRGO0ZCNEY7RkI0RjswNUQwIDA1REM7MDVEMCAwNURDOyAjICjvrY87IO+tjzsg762POyDXkNecOyDXkNecOyApIEhFQlJFVyBMSUdBVFVSRSBBTEVGIExBTUVECitGQjUwO0ZCNTA7RkI1MDswNjcxOzA2NzE7ICMgKO+tkDsg762QOyDvrZA7INmxOyDZsTsgKSBBUkFCSUMgTEVUVEVSIEFMRUYgV0FTTEEgSVNPTEFURUQgRk9STQorRkI1MTtGQjUxO0ZCNTE7MDY3MTswNjcxOyAjICjvrZE7IO+tkTsg762ROyDZsTsg2bE7ICkgQVJBQklDIExFVFRFUiBBTEVGIFdBU0xBIEZJTkFMIEZPUk0KK0ZCNTI7RkI1MjtGQjUyOzA2N0I7MDY3QjsgIyAo762SOyDvrZI7IO+tkjsg2bs7INm7OyApIEFSQUJJQyBMRVRURVIgQkVFSCBJU09MQVRFRCBGT1JNCitGQjUzO0ZCNTM7RkI1MzswNjdCOzA2N0I7ICMgKO+tkzsg762TOyDvrZM7INm7OyDZuzsgKSBBUkFCSUMgTEVUVEVSIEJFRUggRklOQUwgRk9STQorRkI1NDtGQjU0O0ZCNTQ7MDY3QjswNjdCOyAjICjvrZQ7IO+tlDsg762UOyDZuzsg2bs7ICkgQVJBQklDIExFVFRFUiBCRUVIIElOSVRJQUwgRk9STQorRkI1NTtGQjU1O0ZCNTU7MDY3QjswNjdCOyAjICjvrZU7IO+tlTsg762VOyDZuzsg2bs7ICkgQVJBQklDIExFVFRFUiBCRUVIIE1FRElBTCBGT1JNCitGQjU2O0ZCNTY7RkI1NjswNjdFOzA2N0U7ICMgKO+tljsg762WOyDvrZY7INm+OyDZvjsgKSBBUkFCSUMgTEVUVEVSIFBFSCBJU09MQVRFRCBGT1JNCitGQjU3O0ZCNTc7RkI1NzswNjdFOzA2N0U7ICMgKO+tlzsg762XOyDvrZc7INm+OyDZvjsgKSBBUkFCSUMgTEVUVEVSIFBFSCBGSU5BTCBGT1JNCitGQjU4O0ZCNTg7RkI1ODswNjdFOzA2N0U7ICMgKO+tmDsg762YOyDvrZg7INm+OyDZvjsgKSBBUkFCSUMgTEVUVEVSIFBFSCBJTklUSUFMIEZPUk0KK0ZCNTk7RkI1OTtGQjU5OzA2N0U7MDY3RTsgIyAo762ZOyDvrZk7IO+tmTsg2b47INm+OyApIEFSQUJJQyBMRVRURVIgUEVIIE1FRElBTCBGT1JNCitGQjVBO0ZCNUE7RkI1QTswNjgwOzA2ODA7ICMgKO+tmjsg762aOyDvrZo7INqAOyDagDsgKSBBUkFCSUMgTEVUVEVSIEJFSEVIIElTT0xBVEVEIEZPUk0KK0ZCNUI7RkI1QjtGQjVCOzA2ODA7MDY4MDsgIyAo762bOyDvrZs7IO+tmzsg2oA7INqAOyApIEFSQUJJQyBMRVRURVIgQkVIRUggRklOQUwgRk9STQorRkI1QztGQjVDO0ZCNUM7MDY4MDswNjgwOyAjICjvrZw7IO+tnDsg762cOyDagDsg2oA7ICkgQVJBQklDIExFVFRFUiBCRUhFSCBJTklUSUFMIEZPUk0KK0ZCNUQ7RkI1RDtGQjVEOzA2ODA7MDY4MDsgIyAo762dOyDvrZ07IO+tnTsg2oA7INqAOyApIEFSQUJJQyBMRVRURVIgQkVIRUggTUVESUFMIEZPUk0KK0ZCNUU7RkI1RTtGQjVFOzA2N0E7MDY3QTsgIyAo762eOyDvrZ47IO+tnjsg2bo7INm6OyApIEFSQUJJQyBMRVRURVIgVFRFSEVIIElTT0xBVEVEIEZPUk0KK0ZCNUY7RkI1RjtGQjVGOzA2N0E7MDY3QTsgIyAo762fOyDvrZ87IO+tnzsg2bo7INm6OyApIEFSQUJJQyBMRVRURVIgVFRFSEVIIEZJTkFMIEZPUk0KK0ZCNjA7RkI2MDtGQjYwOzA2N0E7MDY3QTsgIyAo762gOyDvraA7IO+toDsg2bo7INm6OyApIEFSQUJJQyBMRVRURVIgVFRFSEVIIElOSVRJQUwgRk9STQorRkI2MTtGQjYxO0ZCNjE7MDY3QTswNjdBOyAjICjvraE7IO+toTsg762hOyDZujsg2bo7ICkgQVJBQklDIExFVFRFUiBUVEVIRUggTUVESUFMIEZPUk0KK0ZCNjI7RkI2MjtGQjYyOzA2N0Y7MDY3RjsgIyAo762iOyDvraI7IO+tojsg2b87INm/OyApIEFSQUJJQyBMRVRURVIgVEVIRUggSVNPTEFURUQgRk9STQorRkI2MztGQjYzO0ZCNjM7MDY3RjswNjdGOyAjICjvraM7IO+tozsg762jOyDZvzsg2b87ICkgQVJBQklDIExFVFRFUiBURUhFSCBGSU5BTCBGT1JNCitGQjY0O0ZCNjQ7RkI2NDswNjdGOzA2N0Y7ICMgKO+tpDsg762kOyDvraQ7INm/OyDZvzsgKSBBUkFCSUMgTEVUVEVSIFRFSEVIIElOSVRJQUwgRk9STQorRkI2NTtGQjY1O0ZCNjU7MDY3RjswNjdGOyAjICjvraU7IO+tpTsg762lOyDZvzsg2b87ICkgQVJBQklDIExFVFRFUiBURUhFSCBNRURJQUwgRk9STQorRkI2NjtGQjY2O0ZCNjY7MDY3OTswNjc5OyAjICjvraY7IO+tpjsg762mOyDZuTsg2bk7ICkgQVJBQklDIExFVFRFUiBUVEVIIElTT0xBVEVEIEZPUk0KK0ZCNjc7RkI2NztGQjY3OzA2Nzk7MDY3OTsgIyAo762nOyDvrac7IO+tpzsg2bk7INm5OyApIEFSQUJJQyBMRVRURVIgVFRFSCBGSU5BTCBGT1JNCitGQjY4O0ZCNjg7RkI2ODswNjc5OzA2Nzk7ICMgKO+tqDsg762oOyDvrag7INm5OyDZuTsgKSBBUkFCSUMgTEVUVEVSIFRURUggSU5JVElBTCBGT1JNCitGQjY5O0ZCNjk7RkI2OTswNjc5OzA2Nzk7ICMgKO+tqTsg762pOyDvrak7INm5OyDZuTsgKSBBUkFCSUMgTEVUVEVSIFRURUggTUVESUFMIEZPUk0KK0ZCNkE7RkI2QTtGQjZBOzA2QTQ7MDZBNDsgIyAo762qOyDvrao7IO+tqjsg2qQ7INqkOyApIEFSQUJJQyBMRVRURVIgVkVIIElTT0xBVEVEIEZPUk0KK0ZCNkI7RkI2QjtGQjZCOzA2QTQ7MDZBNDsgIyAo762rOyDvras7IO+tqzsg2qQ7INqkOyApIEFSQUJJQyBMRVRURVIgVkVIIEZJTkFMIEZPUk0KK0ZCNkM7RkI2QztGQjZDOzA2QTQ7MDZBNDsgIyAo762sOyDvraw7IO+trDsg2qQ7INqkOyApIEFSQUJJQyBMRVRURVIgVkVIIElOSVRJQUwgRk9STQorRkI2RDtGQjZEO0ZCNkQ7MDZBNDswNkE0OyAjICjvra07IO+trTsg762tOyDapDsg2qQ7ICkgQVJBQklDIExFVFRFUiBWRUggTUVESUFMIEZPUk0KK0ZCNkU7RkI2RTtGQjZFOzA2QTY7MDZBNjsgIyAo762uOyDvra47IO+trjsg2qY7INqmOyApIEFSQUJJQyBMRVRURVIgUEVIRUggSVNPTEFURUQgRk9STQorRkI2RjtGQjZGO0ZCNkY7MDZBNjswNkE2OyAjICjvra87IO+trzsg762vOyDapjsg2qY7ICkgQVJBQklDIExFVFRFUiBQRUhFSCBGSU5BTCBGT1JNCitGQjcwO0ZCNzA7RkI3MDswNkE2OzA2QTY7ICMgKO+tsDsg762wOyDvrbA7INqmOyDapjsgKSBBUkFCSUMgTEVUVEVSIFBFSEVIIElOSVRJQUwgRk9STQorRkI3MTtGQjcxO0ZCNzE7MDZBNjswNkE2OyAjICjvrbE7IO+tsTsg762xOyDapjsg2qY7ICkgQVJBQklDIExFVFRFUiBQRUhFSCBNRURJQUwgRk9STQorRkI3MjtGQjcyO0ZCNzI7MDY4NDswNjg0OyAjICjvrbI7IO+tsjsg762yOyDahDsg2oQ7ICkgQVJBQklDIExFVFRFUiBEWUVIIElTT0xBVEVEIEZPUk0KK0ZCNzM7RkI3MztGQjczOzA2ODQ7MDY4NDsgIyAo762zOyDvrbM7IO+tszsg2oQ7INqEOyApIEFSQUJJQyBMRVRURVIgRFlFSCBGSU5BTCBGT1JNCitGQjc0O0ZCNzQ7RkI3NDswNjg0OzA2ODQ7ICMgKO+ttDsg7620OyDvrbQ7INqEOyDahDsgKSBBUkFCSUMgTEVUVEVSIERZRUggSU5JVElBTCBGT1JNCitGQjc1O0ZCNzU7RkI3NTswNjg0OzA2ODQ7ICMgKO+ttTsg7621OyDvrbU7INqEOyDahDsgKSBBUkFCSUMgTEVUVEVSIERZRUggTUVESUFMIEZPUk0KK0ZCNzY7RkI3NjtGQjc2OzA2ODM7MDY4MzsgIyAo7622OyDvrbY7IO+ttjsg2oM7INqDOyApIEFSQUJJQyBMRVRURVIgTllFSCBJU09MQVRFRCBGT1JNCitGQjc3O0ZCNzc7RkI3NzswNjgzOzA2ODM7ICMgKO+ttzsg7623OyDvrbc7INqDOyDagzsgKSBBUkFCSUMgTEVUVEVSIE5ZRUggRklOQUwgRk9STQorRkI3ODtGQjc4O0ZCNzg7MDY4MzswNjgzOyAjICjvrbg7IO+tuDsg7624OyDagzsg2oM7ICkgQVJBQklDIExFVFRFUiBOWUVIIElOSVRJQUwgRk9STQorRkI3OTtGQjc5O0ZCNzk7MDY4MzswNjgzOyAjICjvrbk7IO+tuTsg7625OyDagzsg2oM7ICkgQVJBQklDIExFVFRFUiBOWUVIIE1FRElBTCBGT1JNCitGQjdBO0ZCN0E7RkI3QTswNjg2OzA2ODY7ICMgKO+tujsg7626OyDvrbo7INqGOyDahjsgKSBBUkFCSUMgTEVUVEVSIFRDSEVIIElTT0xBVEVEIEZPUk0KK0ZCN0I7RkI3QjtGQjdCOzA2ODY7MDY4NjsgIyAo7627OyDvrbs7IO+tuzsg2oY7INqGOyApIEFSQUJJQyBMRVRURVIgVENIRUggRklOQUwgRk9STQorRkI3QztGQjdDO0ZCN0M7MDY4NjswNjg2OyAjICjvrbw7IO+tvDsg7628OyDahjsg2oY7ICkgQVJBQklDIExFVFRFUiBUQ0hFSCBJTklUSUFMIEZPUk0KK0ZCN0Q7RkI3RDtGQjdEOzA2ODY7MDY4NjsgIyAo7629OyDvrb07IO+tvTsg2oY7INqGOyApIEFSQUJJQyBMRVRURVIgVENIRUggTUVESUFMIEZPUk0KK0ZCN0U7RkI3RTtGQjdFOzA2ODc7MDY4NzsgIyAo762+OyDvrb47IO+tvjsg2oc7INqHOyApIEFSQUJJQyBMRVRURVIgVENIRUhFSCBJU09MQVRFRCBGT1JNCitGQjdGO0ZCN0Y7RkI3RjswNjg3OzA2ODc7ICMgKO+tvzsg762/OyDvrb87INqHOyDahzsgKSBBUkFCSUMgTEVUVEVSIFRDSEVIRUggRklOQUwgRk9STQorRkI4MDtGQjgwO0ZCODA7MDY4NzswNjg3OyAjICjvroA7IO+ugDsg766AOyDahzsg2oc7ICkgQVJBQklDIExFVFRFUiBUQ0hFSEVIIElOSVRJQUwgRk9STQorRkI4MTtGQjgxO0ZCODE7MDY4NzswNjg3OyAjICjvroE7IO+ugTsg766BOyDahzsg2oc7ICkgQVJBQklDIExFVFRFUiBUQ0hFSEVIIE1FRElBTCBGT1JNCitGQjgyO0ZCODI7RkI4MjswNjhEOzA2OEQ7ICMgKO+ugjsg766COyDvroI7INqNOyDajTsgKSBBUkFCSUMgTEVUVEVSIEREQUhBTCBJU09MQVRFRCBGT1JNCitGQjgzO0ZCODM7RkI4MzswNjhEOzA2OEQ7ICMgKO+ugzsg766DOyDvroM7INqNOyDajTsgKSBBUkFCSUMgTEVUVEVSIEREQUhBTCBGSU5BTCBGT1JNCitGQjg0O0ZCODQ7RkI4NDswNjhDOzA2OEM7ICMgKO+uhDsg766EOyDvroQ7INqMOyDajDsgKSBBUkFCSUMgTEVUVEVSIERBSEFMIElTT0xBVEVEIEZPUk0KK0ZCODU7RkI4NTtGQjg1OzA2OEM7MDY4QzsgIyAo766FOyDvroU7IO+uhTsg2ow7INqMOyApIEFSQUJJQyBMRVRURVIgREFIQUwgRklOQUwgRk9STQorRkI4NjtGQjg2O0ZCODY7MDY4RTswNjhFOyAjICjvroY7IO+uhjsg766GOyDajjsg2o47ICkgQVJBQklDIExFVFRFUiBEVUwgSVNPTEFURUQgRk9STQorRkI4NztGQjg3O0ZCODc7MDY4RTswNjhFOyAjICjvroc7IO+uhzsg766HOyDajjsg2o47ICkgQVJBQklDIExFVFRFUiBEVUwgRklOQUwgRk9STQorRkI4ODtGQjg4O0ZCODg7MDY4ODswNjg4OyAjICjvrog7IO+uiDsg766IOyDaiDsg2og7ICkgQVJBQklDIExFVFRFUiBEREFMIElTT0xBVEVEIEZPUk0KK0ZCODk7RkI4OTtGQjg5OzA2ODg7MDY4ODsgIyAo766JOyDvrok7IO+uiTsg2og7INqIOyApIEFSQUJJQyBMRVRURVIgRERBTCBGSU5BTCBGT1JNCitGQjhBO0ZCOEE7RkI4QTswNjk4OzA2OTg7ICMgKO+uijsg766KOyDvroo7INqYOyDamDsgKSBBUkFCSUMgTEVUVEVSIEpFSCBJU09MQVRFRCBGT1JNCitGQjhCO0ZCOEI7RkI4QjswNjk4OzA2OTg7ICMgKO+uizsg766LOyDvros7INqYOyDamDsgKSBBUkFCSUMgTEVUVEVSIEpFSCBGSU5BTCBGT1JNCitGQjhDO0ZCOEM7RkI4QzswNjkxOzA2OTE7ICMgKO+ujDsg766MOyDvrow7INqROyDakTsgKSBBUkFCSUMgTEVUVEVSIFJSRUggSVNPTEFURUQgRk9STQorRkI4RDtGQjhEO0ZCOEQ7MDY5MTswNjkxOyAjICjvro07IO+ujTsg766NOyDakTsg2pE7ICkgQVJBQklDIExFVFRFUiBSUkVIIEZJTkFMIEZPUk0KK0ZCOEU7RkI4RTtGQjhFOzA2QTk7MDZBOTsgIyAo766OOyDvro47IO+ujjsg2qk7INqpOyApIEFSQUJJQyBMRVRURVIgS0VIRUggSVNPTEFURUQgRk9STQorRkI4RjtGQjhGO0ZCOEY7MDZBOTswNkE5OyAjICjvro87IO+ujzsg766POyDaqTsg2qk7ICkgQVJBQklDIExFVFRFUiBLRUhFSCBGSU5BTCBGT1JNCitGQjkwO0ZCOTA7RkI5MDswNkE5OzA2QTk7ICMgKO+ukDsg766QOyDvrpA7INqpOyDaqTsgKSBBUkFCSUMgTEVUVEVSIEtFSEVIIElOSVRJQUwgRk9STQorRkI5MTtGQjkxO0ZCOTE7MDZBOTswNkE5OyAjICjvrpE7IO+ukTsg766ROyDaqTsg2qk7ICkgQVJBQklDIExFVFRFUiBLRUhFSCBNRURJQUwgRk9STQorRkI5MjtGQjkyO0ZCOTI7MDZBRjswNkFGOyAjICjvrpI7IO+ukjsg766SOyDarzsg2q87ICkgQVJBQklDIExFVFRFUiBHQUYgSVNPTEFURUQgRk9STQorRkI5MztGQjkzO0ZCOTM7MDZBRjswNkFGOyAjICjvrpM7IO+ukzsg766TOyDarzsg2q87ICkgQVJBQklDIExFVFRFUiBHQUYgRklOQUwgRk9STQorRkI5NDtGQjk0O0ZCOTQ7MDZBRjswNkFGOyAjICjvrpQ7IO+ulDsg766UOyDarzsg2q87ICkgQVJBQklDIExFVFRFUiBHQUYgSU5JVElBTCBGT1JNCitGQjk1O0ZCOTU7RkI5NTswNkFGOzA2QUY7ICMgKO+ulTsg766VOyDvrpU7INqvOyDarzsgKSBBUkFCSUMgTEVUVEVSIEdBRiBNRURJQUwgRk9STQorRkI5NjtGQjk2O0ZCOTY7MDZCMzswNkIzOyAjICjvrpY7IO+uljsg766WOyDaszsg2rM7ICkgQVJBQklDIExFVFRFUiBHVUVIIElTT0xBVEVEIEZPUk0KK0ZCOTc7RkI5NztGQjk3OzA2QjM7MDZCMzsgIyAo766XOyDvrpc7IO+ulzsg2rM7INqzOyApIEFSQUJJQyBMRVRURVIgR1VFSCBGSU5BTCBGT1JNCitGQjk4O0ZCOTg7RkI5ODswNkIzOzA2QjM7ICMgKO+umDsg766YOyDvrpg7INqzOyDaszsgKSBBUkFCSUMgTEVUVEVSIEdVRUggSU5JVElBTCBGT1JNCitGQjk5O0ZCOTk7RkI5OTswNkIzOzA2QjM7ICMgKO+umTsg766ZOyDvrpk7INqzOyDaszsgKSBBUkFCSUMgTEVUVEVSIEdVRUggTUVESUFMIEZPUk0KK0ZCOUE7RkI5QTtGQjlBOzA2QjE7MDZCMTsgIyAo766aOyDvrpo7IO+umjsg2rE7INqxOyApIEFSQUJJQyBMRVRURVIgTkdPRUggSVNPTEFURUQgRk9STQorRkI5QjtGQjlCO0ZCOUI7MDZCMTswNkIxOyAjICjvrps7IO+umzsg766bOyDasTsg2rE7ICkgQVJBQklDIExFVFRFUiBOR09FSCBGSU5BTCBGT1JNCitGQjlDO0ZCOUM7RkI5QzswNkIxOzA2QjE7ICMgKO+unDsg766cOyDvrpw7INqxOyDasTsgKSBBUkFCSUMgTEVUVEVSIE5HT0VIIElOSVRJQUwgRk9STQorRkI5RDtGQjlEO0ZCOUQ7MDZCMTswNkIxOyAjICjvrp07IO+unTsg766dOyDasTsg2rE7ICkgQVJBQklDIExFVFRFUiBOR09FSCBNRURJQUwgRk9STQorRkI5RTtGQjlFO0ZCOUU7MDZCQTswNkJBOyAjICjvrp47IO+unjsg766eOyDaujsg2ro7ICkgQVJBQklDIExFVFRFUiBOT09OIEdIVU5OQSBJU09MQVRFRCBGT1JNCitGQjlGO0ZCOUY7RkI5RjswNkJBOzA2QkE7ICMgKO+unzsg766fOyDvrp87INq6OyDaujsgKSBBUkFCSUMgTEVUVEVSIE5PT04gR0hVTk5BIEZJTkFMIEZPUk0KK0ZCQTA7RkJBMDtGQkEwOzA2QkI7MDZCQjsgIyAo766gOyDvrqA7IO+uoDsg2rs7INq7OyApIEFSQUJJQyBMRVRURVIgUk5PT04gSVNPTEFURUQgRk9STQorRkJBMTtGQkExO0ZCQTE7MDZCQjswNkJCOyAjICjvrqE7IO+uoTsg766hOyDauzsg2rs7ICkgQVJBQklDIExFVFRFUiBSTk9PTiBGSU5BTCBGT1JNCitGQkEyO0ZCQTI7RkJBMjswNkJCOzA2QkI7ICMgKO+uojsg766iOyDvrqI7INq7OyDauzsgKSBBUkFCSUMgTEVUVEVSIFJOT09OIElOSVRJQUwgRk9STQorRkJBMztGQkEzO0ZCQTM7MDZCQjswNkJCOyAjICjvrqM7IO+uozsg766jOyDauzsg2rs7ICkgQVJBQklDIExFVFRFUiBSTk9PTiBNRURJQUwgRk9STQorRkJBNDtGQkE0O0ZCQTQ7MDZDMDswNkQ1IDA2NTQ7ICMgKO+upDsg766kOyDvrqQ7INuAOyDbleKXjNmUOyApIEFSQUJJQyBMRVRURVIgSEVIIFdJVEggWUVIIEFCT1ZFIElTT0xBVEVEIEZPUk0KK0ZCQTU7RkJBNTtGQkE1OzA2QzA7MDZENSAwNjU0OyAjICjvrqU7IO+upTsg766lOyDbgDsg25Xil4zZlDsgKSBBUkFCSUMgTEVUVEVSIEhFSCBXSVRIIFlFSCBBQk9WRSBGSU5BTCBGT1JNCitGQkE2O0ZCQTY7RkJBNjswNkMxOzA2QzE7ICMgKO+upjsg766mOyDvrqY7INuBOyDbgTsgKSBBUkFCSUMgTEVUVEVSIEhFSCBHT0FMIElTT0xBVEVEIEZPUk0KK0ZCQTc7RkJBNztGQkE3OzA2QzE7MDZDMTsgIyAo766nOyDvrqc7IO+upzsg24E7INuBOyApIEFSQUJJQyBMRVRURVIgSEVIIEdPQUwgRklOQUwgRk9STQorRkJBODtGQkE4O0ZCQTg7MDZDMTswNkMxOyAjICjvrqg7IO+uqDsg766oOyDbgTsg24E7ICkgQVJBQklDIExFVFRFUiBIRUggR09BTCBJTklUSUFMIEZPUk0KK0ZCQTk7RkJBOTtGQkE5OzA2QzE7MDZDMTsgIyAo766pOyDvrqk7IO+uqTsg24E7INuBOyApIEFSQUJJQyBMRVRURVIgSEVIIEdPQUwgTUVESUFMIEZPUk0KK0ZCQUE7RkJBQTtGQkFBOzA2QkU7MDZCRTsgIyAo766qOyDvrqo7IO+uqjsg2r47INq+OyApIEFSQUJJQyBMRVRURVIgSEVIIERPQUNIQVNITUVFIElTT0xBVEVEIEZPUk0KK0ZCQUI7RkJBQjtGQkFCOzA2QkU7MDZCRTsgIyAo766rOyDvrqs7IO+uqzsg2r47INq+OyApIEFSQUJJQyBMRVRURVIgSEVIIERPQUNIQVNITUVFIEZJTkFMIEZPUk0KK0ZCQUM7RkJBQztGQkFDOzA2QkU7MDZCRTsgIyAo766sOyDvrqw7IO+urDsg2r47INq+OyApIEFSQUJJQyBMRVRURVIgSEVIIERPQUNIQVNITUVFIElOSVRJQUwgRk9STQorRkJBRDtGQkFEO0ZCQUQ7MDZCRTswNkJFOyAjICjvrq07IO+urTsg766tOyDavjsg2r47ICkgQVJBQklDIExFVFRFUiBIRUggRE9BQ0hBU0hNRUUgTUVESUFMIEZPUk0KK0ZCQUU7RkJBRTtGQkFFOzA2RDI7MDZEMjsgIyAo766uOyDvrq47IO+urjsg25I7INuSOyApIEFSQUJJQyBMRVRURVIgWUVIIEJBUlJFRSBJU09MQVRFRCBGT1JNCitGQkFGO0ZCQUY7RkJBRjswNkQyOzA2RDI7ICMgKO+urzsg766vOyDvrq87INuSOyDbkjsgKSBBUkFCSUMgTEVUVEVSIFlFSCBCQVJSRUUgRklOQUwgRk9STQorRkJCMDtGQkIwO0ZCQjA7MDZEMzswNkQyIDA2NTQ7ICMgKO+usDsg766wOyDvrrA7INuTOyDbkuKXjNmUOyApIEFSQUJJQyBMRVRURVIgWUVIIEJBUlJFRSBXSVRIIEhBTVpBIEFCT1ZFIElTT0xBVEVEIEZPUk0KK0ZCQjE7RkJCMTtGQkIxOzA2RDM7MDZEMiAwNjU0OyAjICjvrrE7IO+usTsg766xOyDbkzsg25Lil4zZlDsgKSBBUkFCSUMgTEVUVEVSIFlFSCBCQVJSRUUgV0lUSCBIQU1aQSBBQk9WRSBGSU5BTCBGT1JNCitGQkQzO0ZCRDM7RkJEMzswNkFEOzA2QUQ7ICMgKO+vkzsg76+TOyDvr5M7INqtOyDarTsgKSBBUkFCSUMgTEVUVEVSIE5HIElTT0xBVEVEIEZPUk0KK0ZCRDQ7RkJENDtGQkQ0OzA2QUQ7MDZBRDsgIyAo76+UOyDvr5Q7IO+vlDsg2q07INqtOyApIEFSQUJJQyBMRVRURVIgTkcgRklOQUwgRk9STQorRkJENTtGQkQ1O0ZCRDU7MDZBRDswNkFEOyAjICjvr5U7IO+vlTsg76+VOyDarTsg2q07ICkgQVJBQklDIExFVFRFUiBORyBJTklUSUFMIEZPUk0KK0ZCRDY7RkJENjtGQkQ2OzA2QUQ7MDZBRDsgIyAo76+WOyDvr5Y7IO+vljsg2q07INqtOyApIEFSQUJJQyBMRVRURVIgTkcgTUVESUFMIEZPUk0KK0ZCRDc7RkJENztGQkQ3OzA2Qzc7MDZDNzsgIyAo76+XOyDvr5c7IO+vlzsg24c7INuHOyApIEFSQUJJQyBMRVRURVIgVSBJU09MQVRFRCBGT1JNCitGQkQ4O0ZCRDg7RkJEODswNkM3OzA2Qzc7ICMgKO+vmDsg76+YOyDvr5g7INuHOyDbhzsgKSBBUkFCSUMgTEVUVEVSIFUgRklOQUwgRk9STQorRkJEOTtGQkQ5O0ZCRDk7MDZDNjswNkM2OyAjICjvr5k7IO+vmTsg76+ZOyDbhjsg24Y7ICkgQVJBQklDIExFVFRFUiBPRSBJU09MQVRFRCBGT1JNCitGQkRBO0ZCREE7RkJEQTswNkM2OzA2QzY7ICMgKO+vmjsg76+aOyDvr5o7INuGOyDbhjsgKSBBUkFCSUMgTEVUVEVSIE9FIEZJTkFMIEZPUk0KK0ZCREI7RkJEQjtGQkRCOzA2Qzg7MDZDODsgIyAo76+bOyDvr5s7IO+vmzsg24g7INuIOyApIEFSQUJJQyBMRVRURVIgWVUgSVNPTEFURUQgRk9STQorRkJEQztGQkRDO0ZCREM7MDZDODswNkM4OyAjICjvr5w7IO+vnDsg76+cOyDbiDsg24g7ICkgQVJBQklDIExFVFRFUiBZVSBGSU5BTCBGT1JNCitGQkREO0ZCREQ7RkJERDswNkM3IDA2NzQ7MDZDNyAwNjc0OyAjICjvr507IO+vnTsg76+dOyDbh9m0OyDbh9m0OyApIEFSQUJJQyBMRVRURVIgVSBXSVRIIEhBTVpBIEFCT1ZFIElTT0xBVEVEIEZPUk0KK0ZCREU7RkJERTtGQkRFOzA2Q0I7MDZDQjsgIyAo76+eOyDvr547IO+vnjsg24s7INuLOyApIEFSQUJJQyBMRVRURVIgVkUgSVNPTEFURUQgRk9STQorRkJERjtGQkRGO0ZCREY7MDZDQjswNkNCOyAjICjvr587IO+vnzsg76+fOyDbizsg24s7ICkgQVJBQklDIExFVFRFUiBWRSBGSU5BTCBGT1JNCitGQkUwO0ZCRTA7RkJFMDswNkM1OzA2QzU7ICMgKO+voDsg76+gOyDvr6A7INuFOyDbhTsgKSBBUkFCSUMgTEVUVEVSIEtJUkdISVogT0UgSVNPTEFURUQgRk9STQorRkJFMTtGQkUxO0ZCRTE7MDZDNTswNkM1OyAjICjvr6E7IO+voTsg76+hOyDbhTsg24U7ICkgQVJBQklDIExFVFRFUiBLSVJHSElaIE9FIEZJTkFMIEZPUk0KK0ZCRTI7RkJFMjtGQkUyOzA2Qzk7MDZDOTsgIyAo76+iOyDvr6I7IO+vojsg24k7INuJOyApIEFSQUJJQyBMRVRURVIgS0lSR0hJWiBZVSBJU09MQVRFRCBGT1JNCitGQkUzO0ZCRTM7RkJFMzswNkM5OzA2Qzk7ICMgKO+vozsg76+jOyDvr6M7INuJOyDbiTsgKSBBUkFCSUMgTEVUVEVSIEtJUkdISVogWVUgRklOQUwgRk9STQorRkJFNDtGQkU0O0ZCRTQ7MDZEMDswNkQwOyAjICjvr6Q7IO+vpDsg76+kOyDbkDsg25A7ICkgQVJBQklDIExFVFRFUiBFIElTT0xBVEVEIEZPUk0KK0ZCRTU7RkJFNTtGQkU1OzA2RDA7MDZEMDsgIyAo76+lOyDvr6U7IO+vpTsg25A7INuQOyApIEFSQUJJQyBMRVRURVIgRSBGSU5BTCBGT1JNCitGQkU2O0ZCRTY7RkJFNjswNkQwOzA2RDA7ICMgKO+vpjsg76+mOyDvr6Y7INuQOyDbkDsgKSBBUkFCSUMgTEVUVEVSIEUgSU5JVElBTCBGT1JNCitGQkU3O0ZCRTc7RkJFNzswNkQwOzA2RDA7ICMgKO+vpzsg76+nOyDvr6c7INuQOyDbkDsgKSBBUkFCSUMgTEVUVEVSIEUgTUVESUFMIEZPUk0KK0ZCRTg7RkJFODtGQkU4OzA2NDk7MDY0OTsgIyAo76+oOyDvr6g7IO+vqDsg2Yk7INmJOyApIEFSQUJJQyBMRVRURVIgVUlHSFVSIEtBWkFLSCBLSVJHSElaIEFMRUYgTUFLU1VSQSBJTklUSUFMIEZPUk0KK0ZCRTk7RkJFOTtGQkU5OzA2NDk7MDY0OTsgIyAo76+pOyDvr6k7IO+vqTsg2Yk7INmJOyApIEFSQUJJQyBMRVRURVIgVUlHSFVSIEtBWkFLSCBLSVJHSElaIEFMRUYgTUFLU1VSQSBNRURJQUwgRk9STQorRkJFQTtGQkVBO0ZCRUE7MDYyNiAwNjI3OzA2NEEgMDY1NCAwNjI3OyAjICjvr6o7IO+vqjsg76+qOyDYptinOyDZiuKXjNmU2Kc7ICkgQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUxFRiBJU09MQVRFRCBGT1JNCitGQkVCO0ZCRUI7RkJFQjswNjI2IDA2Mjc7MDY0QSAwNjU0IDA2Mjc7ICMgKO+vqzsg76+rOyDvr6s7INim2Kc7INmK4peM2ZTYpzsgKSBBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBTEVGIEZJTkFMIEZPUk0KK0ZCRUM7RkJFQztGQkVDOzA2MjYgMDZENTswNjRBIDA2NTQgMDZENTsgIyAo76+sOyDvr6w7IO+vrDsg2KbblTsg2Yril4zZlNuVOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFFIElTT0xBVEVEIEZPUk0KK0ZCRUQ7RkJFRDtGQkVEOzA2MjYgMDZENTswNjRBIDA2NTQgMDZENTsgIyAo76+tOyDvr607IO+vrTsg2KbblTsg2Yril4zZlNuVOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFFIEZJTkFMIEZPUk0KK0ZCRUU7RkJFRTtGQkVFOzA2MjYgMDY0ODswNjRBIDA2NTQgMDY0ODsgIyAo76+uOyDvr647IO+vrjsg2KbZiDsg2Yril4zZlNmIOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFdBVyBJU09MQVRFRCBGT1JNCitGQkVGO0ZCRUY7RkJFRjswNjI2IDA2NDg7MDY0QSAwNjU0IDA2NDg7ICMgKO+vrzsg76+vOyDvr687INim2Yg7INmK4peM2ZTZiDsgKSBBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBXQVcgRklOQUwgRk9STQorRkJGMDtGQkYwO0ZCRjA7MDYyNiAwNkM3OzA2NEEgMDY1NCAwNkM3OyAjICjvr7A7IO+vsDsg76+wOyDYptuHOyDZiuKXjNmU24c7ICkgQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggVSBJU09MQVRFRCBGT1JNCitGQkYxO0ZCRjE7RkJGMTswNjI2IDA2Qzc7MDY0QSAwNjU0IDA2Qzc7ICMgKO+vsTsg76+xOyDvr7E7INim24c7INmK4peM2ZTbhzsgKSBBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBVIEZJTkFMIEZPUk0KK0ZCRjI7RkJGMjtGQkYyOzA2MjYgMDZDNjswNjRBIDA2NTQgMDZDNjsgIyAo76+yOyDvr7I7IO+vsjsg2Kbbhjsg2Yril4zZlNuGOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIE9FIElTT0xBVEVEIEZPUk0KK0ZCRjM7RkJGMztGQkYzOzA2MjYgMDZDNjswNjRBIDA2NTQgMDZDNjsgIyAo76+zOyDvr7M7IO+vszsg2Kbbhjsg2Yril4zZlNuGOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIE9FIEZJTkFMIEZPUk0KK0ZCRjQ7RkJGNDtGQkY0OzA2MjYgMDZDODswNjRBIDA2NTQgMDZDODsgIyAo76+0OyDvr7Q7IO+vtDsg2KbbiDsg2Yril4zZlNuIOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFlVIElTT0xBVEVEIEZPUk0KK0ZCRjU7RkJGNTtGQkY1OzA2MjYgMDZDODswNjRBIDA2NTQgMDZDODsgIyAo76+1OyDvr7U7IO+vtTsg2KbbiDsg2Yril4zZlNuIOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFlVIEZJTkFMIEZPUk0KK0ZCRjY7RkJGNjtGQkY2OzA2MjYgMDZEMDswNjRBIDA2NTQgMDZEMDsgIyAo76+2OyDvr7Y7IO+vtjsg2KbbkDsg2Yril4zZlNuQOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEUgSVNPTEFURUQgRk9STQorRkJGNztGQkY3O0ZCRjc7MDYyNiAwNkQwOzA2NEEgMDY1NCAwNkQwOyAjICjvr7c7IO+vtzsg76+3OyDYptuQOyDZiuKXjNmU25A7ICkgQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggRSBGSU5BTCBGT1JNCitGQkY4O0ZCRjg7RkJGODswNjI2IDA2RDA7MDY0QSAwNjU0IDA2RDA7ICMgKO+vuDsg76+4OyDvr7g7INim25A7INmK4peM2ZTbkDsgKSBBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBFIElOSVRJQUwgRk9STQorRkJGOTtGQkY5O0ZCRjk7MDYyNiAwNjQ5OzA2NEEgMDY1NCAwNjQ5OyAjICjvr7k7IO+vuTsg76+5OyDYptmJOyDZiuKXjNmU2Yk7ICkgQVJBQklDIExJR0FUVVJFIFVJR0hVUiBLSVJHSElaIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk0KK0ZCRkE7RkJGQTtGQkZBOzA2MjYgMDY0OTswNjRBIDA2NTQgMDY0OTsgIyAo76+6OyDvr7o7IO+vujsg2KbZiTsg2Yril4zZlNmJOyApIEFSQUJJQyBMSUdBVFVSRSBVSUdIVVIgS0lSR0hJWiBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGQkZCO0ZCRkI7RkJGQjswNjI2IDA2NDk7MDY0QSAwNjU0IDA2NDk7ICMgKO+vuzsg76+7OyDvr7s7INim2Yk7INmK4peM2ZTZiTsgKSBBUkFCSUMgTElHQVRVUkUgVUlHSFVSIEtJUkdISVogWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBTEVGIE1BS1NVUkEgSU5JVElBTCBGT1JNCitGQkZDO0ZCRkM7RkJGQzswNkNDOzA2Q0M7ICMgKO+vvDsg76+8OyDvr7w7INuMOyDbjDsgKSBBUkFCSUMgTEVUVEVSIEZBUlNJIFlFSCBJU09MQVRFRCBGT1JNCitGQkZEO0ZCRkQ7RkJGRDswNkNDOzA2Q0M7ICMgKO+vvTsg76+9OyDvr707INuMOyDbjDsgKSBBUkFCSUMgTEVUVEVSIEZBUlNJIFlFSCBGSU5BTCBGT1JNCitGQkZFO0ZCRkU7RkJGRTswNkNDOzA2Q0M7ICMgKO+vvjsg76++OyDvr747INuMOyDbjDsgKSBBUkFCSUMgTEVUVEVSIEZBUlNJIFlFSCBJTklUSUFMIEZPUk0KK0ZCRkY7RkJGRjtGQkZGOzA2Q0M7MDZDQzsgIyAo76+/OyDvr787IO+vvzsg24w7INuMOyApIEFSQUJJQyBMRVRURVIgRkFSU0kgWUVIIE1FRElBTCBGT1JNCitGQzAwO0ZDMDA7RkMwMDswNjI2IDA2MkM7MDY0QSAwNjU0IDA2MkM7ICMgKO+wgDsg77CAOyDvsIA7INim2Kw7INmK4peM2ZTYrDsgKSBBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBKRUVNIElTT0xBVEVEIEZPUk0KK0ZDMDE7RkMwMTtGQzAxOzA2MjYgMDYyRDswNjRBIDA2NTQgMDYyRDsgIyAo77CBOyDvsIE7IO+wgTsg2KbYrTsg2Yril4zZlNitOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEhBSCBJU09MQVRFRCBGT1JNCitGQzAyO0ZDMDI7RkMwMjswNjI2IDA2NDU7MDY0QSAwNjU0IDA2NDU7ICMgKO+wgjsg77CCOyDvsII7INim2YU7INmK4peM2ZTZhTsgKSBBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBNRUVNIElTT0xBVEVEIEZPUk0KK0ZDMDM7RkMwMztGQzAzOzA2MjYgMDY0OTswNjRBIDA2NTQgMDY0OTsgIyAo77CDOyDvsIM7IO+wgzsg2KbZiTsg2Yril4zZlNmJOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGQzA0O0ZDMDQ7RkMwNDswNjI2IDA2NEE7MDY0QSAwNjU0IDA2NEE7ICMgKO+whDsg77CEOyDvsIQ7INim2Yo7INmK4peM2ZTZijsgKSBBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBZRUggSVNPTEFURUQgRk9STQorRkMwNTtGQzA1O0ZDMDU7MDYyOCAwNjJDOzA2MjggMDYyQzsgIyAo77CFOyDvsIU7IO+whTsg2KjYrDsg2KjYrDsgKSBBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNCitGQzA2O0ZDMDY7RkMwNjswNjI4IDA2MkQ7MDYyOCAwNjJEOyAjICjvsIY7IO+whjsg77CGOyDYqNitOyDYqNitOyApIEFSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBIQUggSVNPTEFURUQgRk9STQorRkMwNztGQzA3O0ZDMDc7MDYyOCAwNjJFOzA2MjggMDYyRTsgIyAo77CHOyDvsIc7IO+whzsg2KjYrjsg2KjYrjsgKSBBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNCitGQzA4O0ZDMDg7RkMwODswNjI4IDA2NDU7MDYyOCAwNjQ1OyAjICjvsIg7IO+wiDsg77CIOyDYqNmFOyDYqNmFOyApIEFSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk0KK0ZDMDk7RkMwOTtGQzA5OzA2MjggMDY0OTswNjI4IDA2NDk7ICMgKO+wiTsg77CJOyDvsIk7INio2Yk7INio2Yk7ICkgQVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGQzBBO0ZDMEE7RkMwQTswNjI4IDA2NEE7MDYyOCAwNjRBOyAjICjvsIo7IO+wijsg77CKOyDYqNmKOyDYqNmKOyApIEFSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBZRUggSVNPTEFURUQgRk9STQorRkMwQjtGQzBCO0ZDMEI7MDYyQSAwNjJDOzA2MkEgMDYyQzsgIyAo77CLOyDvsIs7IO+wizsg2KrYrDsg2KrYrDsgKSBBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNCitGQzBDO0ZDMEM7RkMwQzswNjJBIDA2MkQ7MDYyQSAwNjJEOyAjICjvsIw7IO+wjDsg77CMOyDYqtitOyDYqtitOyApIEFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBIQUggSVNPTEFURUQgRk9STQorRkMwRDtGQzBEO0ZDMEQ7MDYyQSAwNjJFOzA2MkEgMDYyRTsgIyAo77CNOyDvsI07IO+wjTsg2KrYrjsg2KrYrjsgKSBBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNCitGQzBFO0ZDMEU7RkMwRTswNjJBIDA2NDU7MDYyQSAwNjQ1OyAjICjvsI47IO+wjjsg77COOyDYqtmFOyDYqtmFOyApIEFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk0KK0ZDMEY7RkMwRjtGQzBGOzA2MkEgMDY0OTswNjJBIDA2NDk7ICMgKO+wjzsg77CPOyDvsI87INiq2Yk7INiq2Yk7ICkgQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGQzEwO0ZDMTA7RkMxMDswNjJBIDA2NEE7MDYyQSAwNjRBOyAjICjvsJA7IO+wkDsg77CQOyDYqtmKOyDYqtmKOyApIEFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBZRUggSVNPTEFURUQgRk9STQorRkMxMTtGQzExO0ZDMTE7MDYyQiAwNjJDOzA2MkIgMDYyQzsgIyAo77CROyDvsJE7IO+wkTsg2KvYrDsg2KvYrDsgKSBBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STQorRkMxMjtGQzEyO0ZDMTI7MDYyQiAwNjQ1OzA2MkIgMDY0NTsgIyAo77CSOyDvsJI7IO+wkjsg2KvZhTsg2KvZhTsgKSBBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STQorRkMxMztGQzEzO0ZDMTM7MDYyQiAwNjQ5OzA2MkIgMDY0OTsgIyAo77CTOyDvsJM7IO+wkzsg2KvZiTsg2KvZiTsgKSBBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGQzE0O0ZDMTQ7RkMxNDswNjJCIDA2NEE7MDYyQiAwNjRBOyAjICjvsJQ7IO+wlDsg77CUOyDYq9mKOyDYq9mKOyApIEFSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggWUVIIElTT0xBVEVEIEZPUk0KK0ZDMTU7RkMxNTtGQzE1OzA2MkMgMDYyRDswNjJDIDA2MkQ7ICMgKO+wlTsg77CVOyDvsJU7INis2K07INis2K07ICkgQVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBIQUggSVNPTEFURUQgRk9STQorRkMxNjtGQzE2O0ZDMTY7MDYyQyAwNjQ1OzA2MkMgMDY0NTsgIyAo77CWOyDvsJY7IO+wljsg2KzZhTsg2KzZhTsgKSBBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIE1FRU0gSVNPTEFURUQgRk9STQorRkMxNztGQzE3O0ZDMTc7MDYyRCAwNjJDOzA2MkQgMDYyQzsgIyAo77CXOyDvsJc7IO+wlzsg2K3YrDsg2K3YrDsgKSBBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNCitGQzE4O0ZDMTg7RkMxODswNjJEIDA2NDU7MDYyRCAwNjQ1OyAjICjvsJg7IO+wmDsg77CYOyDYrdmFOyDYrdmFOyApIEFSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk0KK0ZDMTk7RkMxOTtGQzE5OzA2MkUgMDYyQzswNjJFIDA2MkM7ICMgKO+wmTsg77CZOyDvsJk7INiu2Kw7INiu2Kw7ICkgQVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk0KK0ZDMUE7RkMxQTtGQzFBOzA2MkUgMDYyRDswNjJFIDA2MkQ7ICMgKO+wmjsg77CaOyDvsJo7INiu2K07INiu2K07ICkgQVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBIQUggSVNPTEFURUQgRk9STQorRkMxQjtGQzFCO0ZDMUI7MDYyRSAwNjQ1OzA2MkUgMDY0NTsgIyAo77CbOyDvsJs7IO+wmzsg2K7ZhTsg2K7ZhTsgKSBBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STQorRkMxQztGQzFDO0ZDMUM7MDYzMyAwNjJDOzA2MzMgMDYyQzsgIyAo77CcOyDvsJw7IO+wnDsg2LPYrDsg2LPYrDsgKSBBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEpFRU0gSVNPTEFURUQgRk9STQorRkMxRDtGQzFEO0ZDMUQ7MDYzMyAwNjJEOzA2MzMgMDYyRDsgIyAo77CdOyDvsJ07IO+wnTsg2LPYrTsg2LPYrTsgKSBBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEhBSCBJU09MQVRFRCBGT1JNCitGQzFFO0ZDMUU7RkMxRTswNjMzIDA2MkU7MDYzMyAwNjJFOyAjICjvsJ47IO+wnjsg77CeOyDYs9iuOyDYs9iuOyApIEFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNCitGQzFGO0ZDMUY7RkMxRjswNjMzIDA2NDU7MDYzMyAwNjQ1OyAjICjvsJ87IO+wnzsg77CfOyDYs9mFOyDYs9mFOyApIEFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNCitGQzIwO0ZDMjA7RkMyMDswNjM1IDA2MkQ7MDYzNSAwNjJEOyAjICjvsKA7IO+woDsg77CgOyDYtditOyDYtditOyApIEFSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBIQUggSVNPTEFURUQgRk9STQorRkMyMTtGQzIxO0ZDMjE7MDYzNSAwNjQ1OzA2MzUgMDY0NTsgIyAo77ChOyDvsKE7IO+woTsg2LXZhTsg2LXZhTsgKSBBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNCitGQzIyO0ZDMjI7RkMyMjswNjM2IDA2MkM7MDYzNiAwNjJDOyAjICjvsKI7IO+wojsg77CiOyDYttisOyDYttisOyApIEFSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBKRUVNIElTT0xBVEVEIEZPUk0KK0ZDMjM7RkMyMztGQzIzOzA2MzYgMDYyRDswNjM2IDA2MkQ7ICMgKO+wozsg77CjOyDvsKM7INi22K07INi22K07ICkgQVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNCitGQzI0O0ZDMjQ7RkMyNDswNjM2IDA2MkU7MDYzNiAwNjJFOyAjICjvsKQ7IO+wpDsg77CkOyDYttiuOyDYttiuOyApIEFSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBLSEFIIElTT0xBVEVEIEZPUk0KK0ZDMjU7RkMyNTtGQzI1OzA2MzYgMDY0NTswNjM2IDA2NDU7ICMgKO+wpTsg77ClOyDvsKU7INi22YU7INi22YU7ICkgQVJBQklDIExJR0FUVVJFIERBRCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STQorRkMyNjtGQzI2O0ZDMjY7MDYzNyAwNjJEOzA2MzcgMDYyRDsgIyAo77CmOyDvsKY7IO+wpjsg2LfYrTsg2LfYrTsgKSBBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggSEFIIElTT0xBVEVEIEZPUk0KK0ZDMjc7RkMyNztGQzI3OzA2MzcgMDY0NTswNjM3IDA2NDU7ICMgKO+wpzsg77CnOyDvsKc7INi32YU7INi32YU7ICkgQVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STQorRkMyODtGQzI4O0ZDMjg7MDYzOCAwNjQ1OzA2MzggMDY0NTsgIyAo77CoOyDvsKg7IO+wqDsg2LjZhTsg2LjZhTsgKSBBUkFCSUMgTElHQVRVUkUgWkFIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNCitGQzI5O0ZDMjk7RkMyOTswNjM5IDA2MkM7MDYzOSAwNjJDOyAjICjvsKk7IO+wqTsg77CpOyDYudisOyDYudisOyApIEFSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBKRUVNIElTT0xBVEVEIEZPUk0KK0ZDMkE7RkMyQTtGQzJBOzA2MzkgMDY0NTswNjM5IDA2NDU7ICMgKO+wqjsg77CqOyDvsKo7INi52YU7INi52YU7ICkgQVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIE1FRU0gSVNPTEFURUQgRk9STQorRkMyQjtGQzJCO0ZDMkI7MDYzQSAwNjJDOzA2M0EgMDYyQzsgIyAo77CrOyDvsKs7IO+wqzsg2LrYrDsg2LrYrDsgKSBBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBKRUVNIElTT0xBVEVEIEZPUk0KK0ZDMkM7RkMyQztGQzJDOzA2M0EgMDY0NTswNjNBIDA2NDU7ICMgKO+wrDsg77CsOyDvsKw7INi62YU7INi62YU7ICkgQVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNCitGQzJEO0ZDMkQ7RkMyRDswNjQxIDA2MkM7MDY0MSAwNjJDOyAjICjvsK07IO+wrTsg77CtOyDZgdisOyDZgdisOyApIEFSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk0KK0ZDMkU7RkMyRTtGQzJFOzA2NDEgMDYyRDswNjQxIDA2MkQ7ICMgKO+wrjsg77CuOyDvsK47INmB2K07INmB2K07ICkgQVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNCitGQzJGO0ZDMkY7RkMyRjswNjQxIDA2MkU7MDY0MSAwNjJFOyAjICjvsK87IO+wrzsg77CvOyDZgdiuOyDZgdiuOyApIEFSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBLSEFIIElTT0xBVEVEIEZPUk0KK0ZDMzA7RkMzMDtGQzMwOzA2NDEgMDY0NTswNjQxIDA2NDU7ICMgKO+wsDsg77CwOyDvsLA7INmB2YU7INmB2YU7ICkgQVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STQorRkMzMTtGQzMxO0ZDMzE7MDY0MSAwNjQ5OzA2NDEgMDY0OTsgIyAo77CxOyDvsLE7IO+wsTsg2YHZiTsg2YHZiTsgKSBBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk0KK0ZDMzI7RkMzMjtGQzMyOzA2NDEgMDY0QTswNjQxIDA2NEE7ICMgKO+wsjsg77CyOyDvsLI7INmB2Yo7INmB2Yo7ICkgQVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNCitGQzMzO0ZDMzM7RkMzMzswNjQyIDA2MkQ7MDY0MiAwNjJEOyAjICjvsLM7IO+wszsg77CzOyDZgtitOyDZgtitOyApIEFSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBIQUggSVNPTEFURUQgRk9STQorRkMzNDtGQzM0O0ZDMzQ7MDY0MiAwNjQ1OzA2NDIgMDY0NTsgIyAo77C0OyDvsLQ7IO+wtDsg2YLZhTsg2YLZhTsgKSBBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNCitGQzM1O0ZDMzU7RkMzNTswNjQyIDA2NDk7MDY0MiAwNjQ5OyAjICjvsLU7IO+wtTsg77C1OyDZgtmJOyDZgtmJOyApIEFSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STQorRkMzNjtGQzM2O0ZDMzY7MDY0MiAwNjRBOzA2NDIgMDY0QTsgIyAo77C2OyDvsLY7IO+wtjsg2YLZijsg2YLZijsgKSBBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggWUVIIElTT0xBVEVEIEZPUk0KK0ZDMzc7RkMzNztGQzM3OzA2NDMgMDYyNzswNjQzIDA2Mjc7ICMgKO+wtzsg77C3OyDvsLc7INmD2Kc7INmD2Kc7ICkgQVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEFMRUYgSVNPTEFURUQgRk9STQorRkMzODtGQzM4O0ZDMzg7MDY0MyAwNjJDOzA2NDMgMDYyQzsgIyAo77C4OyDvsLg7IO+wuDsg2YPYrDsg2YPYrDsgKSBBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNCitGQzM5O0ZDMzk7RkMzOTswNjQzIDA2MkQ7MDY0MyAwNjJEOyAjICjvsLk7IO+wuTsg77C5OyDZg9itOyDZg9itOyApIEFSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBIQUggSVNPTEFURUQgRk9STQorRkMzQTtGQzNBO0ZDM0E7MDY0MyAwNjJFOzA2NDMgMDYyRTsgIyAo77C6OyDvsLo7IO+wujsg2YPYrjsg2YPYrjsgKSBBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNCitGQzNCO0ZDM0I7RkMzQjswNjQzIDA2NDQ7MDY0MyAwNjQ0OyAjICjvsLs7IO+wuzsg77C7OyDZg9mEOyDZg9mEOyApIEFSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBMQU0gSVNPTEFURUQgRk9STQorRkMzQztGQzNDO0ZDM0M7MDY0MyAwNjQ1OzA2NDMgMDY0NTsgIyAo77C8OyDvsLw7IO+wvDsg2YPZhTsg2YPZhTsgKSBBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNCitGQzNEO0ZDM0Q7RkMzRDswNjQzIDA2NDk7MDY0MyAwNjQ5OyAjICjvsL07IO+wvTsg77C9OyDZg9mJOyDZg9mJOyApIEFSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STQorRkMzRTtGQzNFO0ZDM0U7MDY0MyAwNjRBOzA2NDMgMDY0QTsgIyAo77C+OyDvsL47IO+wvjsg2YPZijsg2YPZijsgKSBBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggWUVIIElTT0xBVEVEIEZPUk0KK0ZDM0Y7RkMzRjtGQzNGOzA2NDQgMDYyQzswNjQ0IDA2MkM7ICMgKO+wvzsg77C/OyDvsL87INmE2Kw7INmE2Kw7ICkgQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gSVNPTEFURUQgRk9STQorRkM0MDtGQzQwO0ZDNDA7MDY0NCAwNjJEOzA2NDQgMDYyRDsgIyAo77GAOyDvsYA7IO+xgDsg2YTYrTsg2YTYrTsgKSBBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSEFIIElTT0xBVEVEIEZPUk0KK0ZDNDE7RkM0MTtGQzQxOzA2NDQgMDYyRTswNjQ0IDA2MkU7ICMgKO+xgTsg77GBOyDvsYE7INmE2K47INmE2K47ICkgQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEtIQUggSVNPTEFURUQgRk9STQorRkM0MjtGQzQyO0ZDNDI7MDY0NCAwNjQ1OzA2NDQgMDY0NTsgIyAo77GCOyDvsYI7IO+xgjsg2YTZhTsg2YTZhTsgKSBBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNCitGQzQzO0ZDNDM7RkM0MzswNjQ0IDA2NDk7MDY0NCAwNjQ5OyAjICjvsYM7IO+xgzsg77GDOyDZhNmJOyDZhNmJOyApIEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STQorRkM0NDtGQzQ0O0ZDNDQ7MDY0NCAwNjRBOzA2NDQgMDY0QTsgIyAo77GEOyDvsYQ7IO+xhDsg2YTZijsg2YTZijsgKSBBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggWUVIIElTT0xBVEVEIEZPUk0KK0ZDNDU7RkM0NTtGQzQ1OzA2NDUgMDYyQzswNjQ1IDA2MkM7ICMgKO+xhTsg77GFOyDvsYU7INmF2Kw7INmF2Kw7ICkgQVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBKRUVNIElTT0xBVEVEIEZPUk0KK0ZDNDY7RkM0NjtGQzQ2OzA2NDUgMDYyRDswNjQ1IDA2MkQ7ICMgKO+xhjsg77GGOyDvsYY7INmF2K07INmF2K07ICkgQVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBIQUggSVNPTEFURUQgRk9STQorRkM0NztGQzQ3O0ZDNDc7MDY0NSAwNjJFOzA2NDUgMDYyRTsgIyAo77GHOyDvsYc7IO+xhzsg2YXYrjsg2YXYrjsgKSBBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEtIQUggSVNPTEFURUQgRk9STQorRkM0ODtGQzQ4O0ZDNDg7MDY0NSAwNjQ1OzA2NDUgMDY0NTsgIyAo77GIOyDvsYg7IO+xiDsg2YXZhTsg2YXZhTsgKSBBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIE1FRU0gSVNPTEFURUQgRk9STQorRkM0OTtGQzQ5O0ZDNDk7MDY0NSAwNjQ5OzA2NDUgMDY0OTsgIyAo77GJOyDvsYk7IO+xiTsg2YXZiTsg2YXZiTsgKSBBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGQzRBO0ZDNEE7RkM0QTswNjQ1IDA2NEE7MDY0NSAwNjRBOyAjICjvsYo7IO+xijsg77GKOyDZhdmKOyDZhdmKOyApIEFSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggWUVIIElTT0xBVEVEIEZPUk0KK0ZDNEI7RkM0QjtGQzRCOzA2NDYgMDYyQzswNjQ2IDA2MkM7ICMgKO+xizsg77GLOyDvsYs7INmG2Kw7INmG2Kw7ICkgQVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBKRUVNIElTT0xBVEVEIEZPUk0KK0ZDNEM7RkM0QztGQzRDOzA2NDYgMDYyRDswNjQ2IDA2MkQ7ICMgKO+xjDsg77GMOyDvsYw7INmG2K07INmG2K07ICkgQVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBIQUggSVNPTEFURUQgRk9STQorRkM0RDtGQzREO0ZDNEQ7MDY0NiAwNjJFOzA2NDYgMDYyRTsgIyAo77GNOyDvsY07IO+xjTsg2YbYrjsg2YbYrjsgKSBBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEtIQUggSVNPTEFURUQgRk9STQorRkM0RTtGQzRFO0ZDNEU7MDY0NiAwNjQ1OzA2NDYgMDY0NTsgIyAo77GOOyDvsY47IO+xjjsg2YbZhTsg2YbZhTsgKSBBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIE1FRU0gSVNPTEFURUQgRk9STQorRkM0RjtGQzRGO0ZDNEY7MDY0NiAwNjQ5OzA2NDYgMDY0OTsgIyAo77GPOyDvsY87IO+xjzsg2YbZiTsg2YbZiTsgKSBBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGQzUwO0ZDNTA7RkM1MDswNjQ2IDA2NEE7MDY0NiAwNjRBOyAjICjvsZA7IO+xkDsg77GQOyDZhtmKOyDZhtmKOyApIEFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggWUVIIElTT0xBVEVEIEZPUk0KK0ZDNTE7RkM1MTtGQzUxOzA2NDcgMDYyQzswNjQ3IDA2MkM7ICMgKO+xkTsg77GROyDvsZE7INmH2Kw7INmH2Kw7ICkgQVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STQorRkM1MjtGQzUyO0ZDNTI7MDY0NyAwNjQ1OzA2NDcgMDY0NTsgIyAo77GSOyDvsZI7IO+xkjsg2YfZhTsg2YfZhTsgKSBBUkFCSUMgTElHQVRVUkUgSEVIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNCitGQzUzO0ZDNTM7RkM1MzswNjQ3IDA2NDk7MDY0NyAwNjQ5OyAjICjvsZM7IO+xkzsg77GTOyDZh9mJOyDZh9mJOyApIEFSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STQorRkM1NDtGQzU0O0ZDNTQ7MDY0NyAwNjRBOzA2NDcgMDY0QTsgIyAo77GUOyDvsZQ7IO+xlDsg2YfZijsg2YfZijsgKSBBUkFCSUMgTElHQVRVUkUgSEVIIFdJVEggWUVIIElTT0xBVEVEIEZPUk0KK0ZDNTU7RkM1NTtGQzU1OzA2NEEgMDYyQzswNjRBIDA2MkM7ICMgKO+xlTsg77GVOyDvsZU7INmK2Kw7INmK2Kw7ICkgQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STQorRkM1NjtGQzU2O0ZDNTY7MDY0QSAwNjJEOzA2NEEgMDYyRDsgIyAo77GWOyDvsZY7IO+xljsg2YrYrTsg2YrYrTsgKSBBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFIIElTT0xBVEVEIEZPUk0KK0ZDNTc7RkM1NztGQzU3OzA2NEEgMDYyRTswNjRBIDA2MkU7ICMgKO+xlzsg77GXOyDvsZc7INmK2K47INmK2K47ICkgQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEtIQUggSVNPTEFURUQgRk9STQorRkM1ODtGQzU4O0ZDNTg7MDY0QSAwNjQ1OzA2NEEgMDY0NTsgIyAo77GYOyDvsZg7IO+xmDsg2YrZhTsg2YrZhTsgKSBBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNCitGQzU5O0ZDNTk7RkM1OTswNjRBIDA2NDk7MDY0QSAwNjQ5OyAjICjvsZk7IO+xmTsg77GZOyDZitmJOyDZitmJOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STQorRkM1QTtGQzVBO0ZDNUE7MDY0QSAwNjRBOzA2NEEgMDY0QTsgIyAo77GaOyDvsZo7IO+xmjsg2YrZijsg2YrZijsgKSBBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggWUVIIElTT0xBVEVEIEZPUk0KK0ZDNUI7RkM1QjtGQzVCOzA2MzAgMDY3MDswNjMwIDA2NzA7ICMgKO+xmzsg77GbOyDvsZs7INiw4peM2bA7INiw4peM2bA7ICkgQVJBQklDIExJR0FUVVJFIFRIQUwgV0lUSCBTVVBFUlNDUklQVCBBTEVGIElTT0xBVEVEIEZPUk0KK0ZDNUM7RkM1QztGQzVDOzA2MzEgMDY3MDswNjMxIDA2NzA7ICMgKO+xnDsg77GcOyDvsZw7INix4peM2bA7INix4peM2bA7ICkgQVJBQklDIExJR0FUVVJFIFJFSCBXSVRIIFNVUEVSU0NSSVBUIEFMRUYgSVNPTEFURUQgRk9STQorRkM1RDtGQzVEO0ZDNUQ7MDY0OSAwNjcwOzA2NDkgMDY3MDsgIyAo77GdOyDvsZ07IO+xnTsg2Ynil4zZsDsg2Ynil4zZsDsgKSBBUkFCSUMgTElHQVRVUkUgQUxFRiBNQUtTVVJBIFdJVEggU1VQRVJTQ1JJUFQgQUxFRiBJU09MQVRFRCBGT1JNCitGQzVFO0ZDNUU7RkM1RTswMDIwIDA2NEMgMDY1MTswMDIwIDA2NEMgMDY1MTsgIyAo77GeOyDvsZ47IO+xnjsgIOKXjNmM4peM2ZE7ICDil4zZjOKXjNmROyApIEFSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBEQU1NQVRBTiBJU09MQVRFRCBGT1JNCitGQzVGO0ZDNUY7RkM1RjswMDIwIDA2NEQgMDY1MTswMDIwIDA2NEQgMDY1MTsgIyAo77GfOyDvsZ87IO+xnzsgIOKXjNmN4peM2ZE7ICDil4zZjeKXjNmROyApIEFSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBLQVNSQVRBTiBJU09MQVRFRCBGT1JNCitGQzYwO0ZDNjA7RkM2MDswMDIwIDA2NEUgMDY1MTswMDIwIDA2NEUgMDY1MTsgIyAo77GgOyDvsaA7IO+xoDsgIOKXjNmO4peM2ZE7ICDil4zZjuKXjNmROyApIEFSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBGQVRIQSBJU09MQVRFRCBGT1JNCitGQzYxO0ZDNjE7RkM2MTswMDIwIDA2NEYgMDY1MTswMDIwIDA2NEYgMDY1MTsgIyAo77GhOyDvsaE7IO+xoTsgIOKXjNmP4peM2ZE7ICDil4zZj+KXjNmROyApIEFSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBEQU1NQSBJU09MQVRFRCBGT1JNCitGQzYyO0ZDNjI7RkM2MjswMDIwIDA2NTAgMDY1MTswMDIwIDA2NTAgMDY1MTsgIyAo77GiOyDvsaI7IO+xojsgIOKXjNmQ4peM2ZE7ICDil4zZkOKXjNmROyApIEFSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBLQVNSQSBJU09MQVRFRCBGT1JNCitGQzYzO0ZDNjM7RkM2MzswMDIwIDA2NTEgMDY3MDswMDIwIDA2NTEgMDY3MDsgIyAo77GjOyDvsaM7IO+xozsgIOKXjNmR4peM2bA7ICDil4zZkeKXjNmwOyApIEFSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBTVVBFUlNDUklQVCBBTEVGIElTT0xBVEVEIEZPUk0KK0ZDNjQ7RkM2NDtGQzY0OzA2MjYgMDYzMTswNjRBIDA2NTQgMDYzMTsgIyAo77GkOyDvsaQ7IO+xpDsg2KbYsTsg2Yril4zZlNixOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFJFSCBGSU5BTCBGT1JNCitGQzY1O0ZDNjU7RkM2NTswNjI2IDA2MzI7MDY0QSAwNjU0IDA2MzI7ICMgKO+xpTsg77GlOyDvsaU7INim2LI7INmK4peM2ZTYsjsgKSBBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBaQUlOIEZJTkFMIEZPUk0KK0ZDNjY7RkM2NjtGQzY2OzA2MjYgMDY0NTswNjRBIDA2NTQgMDY0NTsgIyAo77GmOyDvsaY7IO+xpjsg2KbZhTsg2Yril4zZlNmFOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIE1FRU0gRklOQUwgRk9STQorRkM2NztGQzY3O0ZDNjc7MDYyNiAwNjQ2OzA2NEEgMDY1NCAwNjQ2OyAjICjvsac7IO+xpzsg77GnOyDYptmGOyDZiuKXjNmU2YY7ICkgQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggTk9PTiBGSU5BTCBGT1JNCitGQzY4O0ZDNjg7RkM2ODswNjI2IDA2NDk7MDY0QSAwNjU0IDA2NDk7ICMgKO+xqDsg77GoOyDvsag7INim2Yk7INmK4peM2ZTZiTsgKSBBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkM2OTtGQzY5O0ZDNjk7MDYyNiAwNjRBOzA2NEEgMDY1NCAwNjRBOyAjICjvsak7IO+xqTsg77GpOyDYptmKOyDZiuKXjNmU2Yo7ICkgQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZDNkE7RkM2QTtGQzZBOzA2MjggMDYzMTswNjI4IDA2MzE7ICMgKO+xqjsg77GqOyDvsao7INio2LE7INio2LE7ICkgQVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIFJFSCBGSU5BTCBGT1JNCitGQzZCO0ZDNkI7RkM2QjswNjI4IDA2MzI7MDYyOCAwNjMyOyAjICjvsas7IO+xqzsg77GrOyDYqNiyOyDYqNiyOyApIEFSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBaQUlOIEZJTkFMIEZPUk0KK0ZDNkM7RkM2QztGQzZDOzA2MjggMDY0NTswNjI4IDA2NDU7ICMgKO+xrDsg77GsOyDvsaw7INio2YU7INio2YU7ICkgQVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIE1FRU0gRklOQUwgRk9STQorRkM2RDtGQzZEO0ZDNkQ7MDYyOCAwNjQ2OzA2MjggMDY0NjsgIyAo77GtOyDvsa07IO+xrTsg2KjZhjsg2KjZhjsgKSBBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggTk9PTiBGSU5BTCBGT1JNCitGQzZFO0ZDNkU7RkM2RTswNjI4IDA2NDk7MDYyOCAwNjQ5OyAjICjvsa47IO+xrjsg77GuOyDYqNmJOyDYqNmJOyApIEFSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkM2RjtGQzZGO0ZDNkY7MDYyOCAwNjRBOzA2MjggMDY0QTsgIyAo77GvOyDvsa87IO+xrzsg2KjZijsg2KjZijsgKSBBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZDNzA7RkM3MDtGQzcwOzA2MkEgMDYzMTswNjJBIDA2MzE7ICMgKO+xsDsg77GwOyDvsbA7INiq2LE7INiq2LE7ICkgQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIFJFSCBGSU5BTCBGT1JNCitGQzcxO0ZDNzE7RkM3MTswNjJBIDA2MzI7MDYyQSAwNjMyOyAjICjvsbE7IO+xsTsg77GxOyDYqtiyOyDYqtiyOyApIEFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBaQUlOIEZJTkFMIEZPUk0KK0ZDNzI7RkM3MjtGQzcyOzA2MkEgMDY0NTswNjJBIDA2NDU7ICMgKO+xsjsg77GyOyDvsbI7INiq2YU7INiq2YU7ICkgQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gRklOQUwgRk9STQorRkM3MztGQzczO0ZDNzM7MDYyQSAwNjQ2OzA2MkEgMDY0NjsgIyAo77GzOyDvsbM7IO+xszsg2KrZhjsg2KrZhjsgKSBBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTk9PTiBGSU5BTCBGT1JNCitGQzc0O0ZDNzQ7RkM3NDswNjJBIDA2NDk7MDYyQSAwNjQ5OyAjICjvsbQ7IO+xtDsg77G0OyDYqtmJOyDYqtmJOyApIEFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkM3NTtGQzc1O0ZDNzU7MDYyQSAwNjRBOzA2MkEgMDY0QTsgIyAo77G1OyDvsbU7IO+xtTsg2KrZijsg2KrZijsgKSBBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZDNzY7RkM3NjtGQzc2OzA2MkIgMDYzMTswNjJCIDA2MzE7ICMgKO+xtjsg77G2OyDvsbY7INir2LE7INir2LE7ICkgQVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBSRUggRklOQUwgRk9STQorRkM3NztGQzc3O0ZDNzc7MDYyQiAwNjMyOzA2MkIgMDYzMjsgIyAo77G3OyDvsbc7IO+xtzsg2KvYsjsg2KvYsjsgKSBBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIFpBSU4gRklOQUwgRk9STQorRkM3ODtGQzc4O0ZDNzg7MDYyQiAwNjQ1OzA2MkIgMDY0NTsgIyAo77G4OyDvsbg7IO+xuDsg2KvZhTsg2KvZhTsgKSBBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIE1FRU0gRklOQUwgRk9STQorRkM3OTtGQzc5O0ZDNzk7MDYyQiAwNjQ2OzA2MkIgMDY0NjsgIyAo77G5OyDvsbk7IO+xuTsg2KvZhjsg2KvZhjsgKSBBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIE5PT04gRklOQUwgRk9STQorRkM3QTtGQzdBO0ZDN0E7MDYyQiAwNjQ5OzA2MkIgMDY0OTsgIyAo77G6OyDvsbo7IO+xujsg2KvZiTsg2KvZiTsgKSBBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGQzdCO0ZDN0I7RkM3QjswNjJCIDA2NEE7MDYyQiAwNjRBOyAjICjvsbs7IO+xuzsg77G7OyDYq9mKOyDYq9mKOyApIEFSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZDN0M7RkM3QztGQzdDOzA2NDEgMDY0OTswNjQxIDA2NDk7ICMgKO+xvDsg77G8OyDvsbw7INmB2Yk7INmB2Yk7ICkgQVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGQzdEO0ZDN0Q7RkM3RDswNjQxIDA2NEE7MDY0MSAwNjRBOyAjICjvsb07IO+xvTsg77G9OyDZgdmKOyDZgdmKOyApIEFSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBZRUggRklOQUwgRk9STQorRkM3RTtGQzdFO0ZDN0U7MDY0MiAwNjQ5OzA2NDIgMDY0OTsgIyAo77G+OyDvsb47IO+xvjsg2YLZiTsg2YLZiTsgKSBBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZDN0Y7RkM3RjtGQzdGOzA2NDIgMDY0QTswNjQyIDA2NEE7ICMgKO+xvzsg77G/OyDvsb87INmC2Yo7INmC2Yo7ICkgQVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIFlFSCBGSU5BTCBGT1JNCitGQzgwO0ZDODA7RkM4MDswNjQzIDA2Mjc7MDY0MyAwNjI3OyAjICjvsoA7IO+ygDsg77KAOyDZg9inOyDZg9inOyApIEFSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBBTEVGIEZJTkFMIEZPUk0KK0ZDODE7RkM4MTtGQzgxOzA2NDMgMDY0NDswNjQzIDA2NDQ7ICMgKO+ygTsg77KBOyDvsoE7INmD2YQ7INmD2YQ7ICkgQVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIExBTSBGSU5BTCBGT1JNCitGQzgyO0ZDODI7RkM4MjswNjQzIDA2NDU7MDY0MyAwNjQ1OyAjICjvsoI7IO+ygjsg77KCOyDZg9mFOyDZg9mFOyApIEFSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBNRUVNIEZJTkFMIEZPUk0KK0ZDODM7RkM4MztGQzgzOzA2NDMgMDY0OTswNjQzIDA2NDk7ICMgKO+ygzsg77KDOyDvsoM7INmD2Yk7INmD2Yk7ICkgQVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGQzg0O0ZDODQ7RkM4NDswNjQzIDA2NEE7MDY0MyAwNjRBOyAjICjvsoQ7IO+yhDsg77KEOyDZg9mKOyDZg9mKOyApIEFSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBZRUggRklOQUwgRk9STQorRkM4NTtGQzg1O0ZDODU7MDY0NCAwNjQ1OzA2NDQgMDY0NTsgIyAo77KFOyDvsoU7IO+yhTsg2YTZhTsg2YTZhTsgKSBBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggTUVFTSBGSU5BTCBGT1JNCitGQzg2O0ZDODY7RkM4NjswNjQ0IDA2NDk7MDY0NCAwNjQ5OyAjICjvsoY7IO+yhjsg77KGOyDZhNmJOyDZhNmJOyApIEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkM4NztGQzg3O0ZDODc7MDY0NCAwNjRBOzA2NDQgMDY0QTsgIyAo77KHOyDvsoc7IO+yhzsg2YTZijsg2YTZijsgKSBBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZDODg7RkM4ODtGQzg4OzA2NDUgMDYyNzswNjQ1IDA2Mjc7ICMgKO+yiDsg77KIOyDvsog7INmF2Kc7INmF2Kc7ICkgQVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBBTEVGIEZJTkFMIEZPUk0KK0ZDODk7RkM4OTtGQzg5OzA2NDUgMDY0NTswNjQ1IDA2NDU7ICMgKO+yiTsg77KJOyDvsok7INmF2YU7INmF2YU7ICkgQVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk0KK0ZDOEE7RkM4QTtGQzhBOzA2NDYgMDYzMTswNjQ2IDA2MzE7ICMgKO+yijsg77KKOyDvsoo7INmG2LE7INmG2LE7ICkgQVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBSRUggRklOQUwgRk9STQorRkM4QjtGQzhCO0ZDOEI7MDY0NiAwNjMyOzA2NDYgMDYzMjsgIyAo77KLOyDvsos7IO+yizsg2YbYsjsg2YbYsjsgKSBBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIFpBSU4gRklOQUwgRk9STQorRkM4QztGQzhDO0ZDOEM7MDY0NiAwNjQ1OzA2NDYgMDY0NTsgIyAo77KMOyDvsow7IO+yjDsg2YbZhTsg2YbZhTsgKSBBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIE1FRU0gRklOQUwgRk9STQorRkM4RDtGQzhEO0ZDOEQ7MDY0NiAwNjQ2OzA2NDYgMDY0NjsgIyAo77KNOyDvso07IO+yjTsg2YbZhjsg2YbZhjsgKSBBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIE5PT04gRklOQUwgRk9STQorRkM4RTtGQzhFO0ZDOEU7MDY0NiAwNjQ5OzA2NDYgMDY0OTsgIyAo77KOOyDvso47IO+yjjsg2YbZiTsg2YbZiTsgKSBBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGQzhGO0ZDOEY7RkM4RjswNjQ2IDA2NEE7MDY0NiAwNjRBOyAjICjvso87IO+yjzsg77KPOyDZhtmKOyDZhtmKOyApIEFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZDOTA7RkM5MDtGQzkwOzA2NDkgMDY3MDswNjQ5IDA2NzA7ICMgKO+ykDsg77KQOyDvspA7INmJ4peM2bA7INmJ4peM2bA7ICkgQVJBQklDIExJR0FUVVJFIEFMRUYgTUFLU1VSQSBXSVRIIFNVUEVSU0NSSVBUIEFMRUYgRklOQUwgRk9STQorRkM5MTtGQzkxO0ZDOTE7MDY0QSAwNjMxOzA2NEEgMDYzMTsgIyAo77KROyDvspE7IO+ykTsg2YrYsTsg2YrYsTsgKSBBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggUkVIIEZJTkFMIEZPUk0KK0ZDOTI7RkM5MjtGQzkyOzA2NEEgMDYzMjswNjRBIDA2MzI7ICMgKO+ykjsg77KSOyDvspI7INmK2LI7INmK2LI7ICkgQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIFpBSU4gRklOQUwgRk9STQorRkM5MztGQzkzO0ZDOTM7MDY0QSAwNjQ1OzA2NEEgMDY0NTsgIyAo77KTOyDvspM7IO+ykzsg2YrZhTsg2YrZhTsgKSBBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggTUVFTSBGSU5BTCBGT1JNCitGQzk0O0ZDOTQ7RkM5NDswNjRBIDA2NDY7MDY0QSAwNjQ2OyAjICjvspQ7IO+ylDsg77KUOyDZitmGOyDZitmGOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBOT09OIEZJTkFMIEZPUk0KK0ZDOTU7RkM5NTtGQzk1OzA2NEEgMDY0OTswNjRBIDA2NDk7ICMgKO+ylTsg77KVOyDvspU7INmK2Yk7INmK2Yk7ICkgQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGQzk2O0ZDOTY7RkM5NjswNjRBIDA2NEE7MDY0QSAwNjRBOyAjICjvspY7IO+yljsg77KWOyDZitmKOyDZitmKOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBZRUggRklOQUwgRk9STQorRkM5NztGQzk3O0ZDOTc7MDYyNiAwNjJDOzA2NEEgMDY1NCAwNjJDOyAjICjvspc7IO+ylzsg77KXOyDYptisOyDZiuKXjNmU2Kw7ICkgQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZDOTg7RkM5ODtGQzk4OzA2MjYgMDYyRDswNjRBIDA2NTQgMDYyRDsgIyAo77KYOyDvspg7IO+ymDsg2KbYrTsg2Yril4zZlNitOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZDOTk7RkM5OTtGQzk5OzA2MjYgMDYyRTswNjRBIDA2NTQgMDYyRTsgIyAo77KZOyDvspk7IO+ymTsg2KbYrjsg2Yril4zZlNiuOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEtIQUggSU5JVElBTCBGT1JNCitGQzlBO0ZDOUE7RkM5QTswNjI2IDA2NDU7MDY0QSAwNjU0IDA2NDU7ICMgKO+ymjsg77KaOyDvspo7INim2YU7INmK4peM2ZTZhTsgKSBBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkM5QjtGQzlCO0ZDOUI7MDYyNiAwNjQ3OzA2NEEgMDY1NCAwNjQ3OyAjICjvsps7IO+ymzsg77KbOyDYptmHOyDZiuKXjNmU2Yc7ICkgQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggSEVIIElOSVRJQUwgRk9STQorRkM5QztGQzlDO0ZDOUM7MDYyOCAwNjJDOzA2MjggMDYyQzsgIyAo77KcOyDvspw7IO+ynDsg2KjYrDsg2KjYrDsgKSBBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZDOUQ7RkM5RDtGQzlEOzA2MjggMDYyRDswNjI4IDA2MkQ7ICMgKO+ynTsg77KdOyDvsp07INio2K07INio2K07ICkgQVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZDOUU7RkM5RTtGQzlFOzA2MjggMDYyRTswNjI4IDA2MkU7ICMgKO+ynjsg77KeOyDvsp47INio2K47INio2K47ICkgQVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEtIQUggSU5JVElBTCBGT1JNCitGQzlGO0ZDOUY7RkM5RjswNjI4IDA2NDU7MDYyOCAwNjQ1OyAjICjvsp87IO+ynzsg77KfOyDYqNmFOyDYqNmFOyApIEFSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkNBMDtGQ0EwO0ZDQTA7MDYyOCAwNjQ3OzA2MjggMDY0NzsgIyAo77KgOyDvsqA7IO+yoDsg2KjZhzsg2KjZhzsgKSBBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSEVIIElOSVRJQUwgRk9STQorRkNBMTtGQ0ExO0ZDQTE7MDYyQSAwNjJDOzA2MkEgMDYyQzsgIyAo77KhOyDvsqE7IO+yoTsg2KrYrDsg2KrYrDsgKSBBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZDQTI7RkNBMjtGQ0EyOzA2MkEgMDYyRDswNjJBIDA2MkQ7ICMgKO+yojsg77KiOyDvsqI7INiq2K07INiq2K07ICkgQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZDQTM7RkNBMztGQ0EzOzA2MkEgMDYyRTswNjJBIDA2MkU7ICMgKO+yozsg77KjOyDvsqM7INiq2K47INiq2K47ICkgQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEtIQUggSU5JVElBTCBGT1JNCitGQ0E0O0ZDQTQ7RkNBNDswNjJBIDA2NDU7MDYyQSAwNjQ1OyAjICjvsqQ7IO+ypDsg77KkOyDYqtmFOyDYqtmFOyApIEFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkNBNTtGQ0E1O0ZDQTU7MDYyQSAwNjQ3OzA2MkEgMDY0NzsgIyAo77KlOyDvsqU7IO+ypTsg2KrZhzsg2KrZhzsgKSBBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSEVIIElOSVRJQUwgRk9STQorRkNBNjtGQ0E2O0ZDQTY7MDYyQiAwNjQ1OzA2MkIgMDY0NTsgIyAo77KmOyDvsqY7IO+ypjsg2KvZhTsg2KvZhTsgKSBBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGQ0E3O0ZDQTc7RkNBNzswNjJDIDA2MkQ7MDYyQyAwNjJEOyAjICjvsqc7IO+ypzsg77KnOyDYrNitOyDYrNitOyApIEFSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STQorRkNBODtGQ0E4O0ZDQTg7MDYyQyAwNjQ1OzA2MkMgMDY0NTsgIyAo77KoOyDvsqg7IO+yqDsg2KzZhTsg2KzZhTsgKSBBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGQ0E5O0ZDQTk7RkNBOTswNjJEIDA2MkM7MDYyRCAwNjJDOyAjICjvsqk7IO+yqTsg77KpOyDYrdisOyDYrdisOyApIEFSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBKRUVNIElOSVRJQUwgRk9STQorRkNBQTtGQ0FBO0ZDQUE7MDYyRCAwNjQ1OzA2MkQgMDY0NTsgIyAo77KqOyDvsqo7IO+yqjsg2K3ZhTsg2K3ZhTsgKSBBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZDQUI7RkNBQjtGQ0FCOzA2MkUgMDYyQzswNjJFIDA2MkM7ICMgKO+yqzsg77KrOyDvsqs7INiu2Kw7INiu2Kw7ICkgQVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBKRUVNIElOSVRJQUwgRk9STQorRkNBQztGQ0FDO0ZDQUM7MDYyRSAwNjQ1OzA2MkUgMDY0NTsgIyAo77KsOyDvsqw7IO+yrDsg2K7ZhTsg2K7ZhTsgKSBBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGQ0FEO0ZDQUQ7RkNBRDswNjMzIDA2MkM7MDYzMyAwNjJDOyAjICjvsq07IO+yrTsg77KtOyDYs9isOyDYs9isOyApIEFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZDQUU7RkNBRTtGQ0FFOzA2MzMgMDYyRDswNjMzIDA2MkQ7ICMgKO+yrjsg77KuOyDvsq47INiz2K07INiz2K07ICkgQVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBIQUggSU5JVElBTCBGT1JNCitGQ0FGO0ZDQUY7RkNBRjswNjMzIDA2MkU7MDYzMyAwNjJFOyAjICjvsq87IO+yrzsg77KvOyDYs9iuOyDYs9iuOyApIEFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggS0hBSCBJTklUSUFMIEZPUk0KK0ZDQjA7RkNCMDtGQ0IwOzA2MzMgMDY0NTswNjMzIDA2NDU7ICMgKO+ysDsg77KwOyDvsrA7INiz2YU7INiz2YU7ICkgQVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkNCMTtGQ0IxO0ZDQjE7MDYzNSAwNjJEOzA2MzUgMDYyRDsgIyAo77KxOyDvsrE7IO+ysTsg2LXYrTsg2LXYrTsgKSBBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggSEFIIElOSVRJQUwgRk9STQorRkNCMjtGQ0IyO0ZDQjI7MDYzNSAwNjJFOzA2MzUgMDYyRTsgIyAo77KyOyDvsrI7IO+ysjsg2LXYrjsg2LXYrjsgKSBBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggS0hBSCBJTklUSUFMIEZPUk0KK0ZDQjM7RkNCMztGQ0IzOzA2MzUgMDY0NTswNjM1IDA2NDU7ICMgKO+yszsg77KzOyDvsrM7INi12YU7INi12YU7ICkgQVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGQ0I0O0ZDQjQ7RkNCNDswNjM2IDA2MkM7MDYzNiAwNjJDOyAjICjvsrQ7IO+ytDsg77K0OyDYttisOyDYttisOyApIEFSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBKRUVNIElOSVRJQUwgRk9STQorRkNCNTtGQ0I1O0ZDQjU7MDYzNiAwNjJEOzA2MzYgMDYyRDsgIyAo77K1OyDvsrU7IO+ytTsg2LbYrTsg2LbYrTsgKSBBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggSEFIIElOSVRJQUwgRk9STQorRkNCNjtGQ0I2O0ZDQjY7MDYzNiAwNjJFOzA2MzYgMDYyRTsgIyAo77K2OyDvsrY7IO+ytjsg2LbYrjsg2LbYrjsgKSBBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggS0hBSCBJTklUSUFMIEZPUk0KK0ZDQjc7RkNCNztGQ0I3OzA2MzYgMDY0NTswNjM2IDA2NDU7ICMgKO+ytzsg77K3OyDvsrc7INi22YU7INi22YU7ICkgQVJBQklDIExJR0FUVVJFIERBRCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGQ0I4O0ZDQjg7RkNCODswNjM3IDA2MkQ7MDYzNyAwNjJEOyAjICjvsrg7IO+yuDsg77K4OyDYt9itOyDYt9itOyApIEFSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBIQUggSU5JVElBTCBGT1JNCitGQ0I5O0ZDQjk7RkNCOTswNjM4IDA2NDU7MDYzOCAwNjQ1OyAjICjvsrk7IO+yuTsg77K5OyDYuNmFOyDYuNmFOyApIEFSQUJJQyBMSUdBVFVSRSBaQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkNCQTtGQ0JBO0ZDQkE7MDYzOSAwNjJDOzA2MzkgMDYyQzsgIyAo77K6OyDvsro7IO+yujsg2LnYrDsg2LnYrDsgKSBBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZDQkI7RkNCQjtGQ0JCOzA2MzkgMDY0NTswNjM5IDA2NDU7ICMgKO+yuzsg77K7OyDvsrs7INi52YU7INi52YU7ICkgQVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGQ0JDO0ZDQkM7RkNCQzswNjNBIDA2MkM7MDYzQSAwNjJDOyAjICjvsrw7IO+yvDsg77K8OyDYutisOyDYutisOyApIEFSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIEpFRU0gSU5JVElBTCBGT1JNCitGQ0JEO0ZDQkQ7RkNCRDswNjNBIDA2NDU7MDYzQSAwNjQ1OyAjICjvsr07IO+yvTsg77K9OyDYutmFOyDYutmFOyApIEFSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGQ0JFO0ZDQkU7RkNCRTswNjQxIDA2MkM7MDY0MSAwNjJDOyAjICjvsr47IO+yvjsg77K+OyDZgdisOyDZgdisOyApIEFSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBKRUVNIElOSVRJQUwgRk9STQorRkNCRjtGQ0JGO0ZDQkY7MDY0MSAwNjJEOzA2NDEgMDYyRDsgIyAo77K/OyDvsr87IO+yvzsg2YHYrTsg2YHYrTsgKSBBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggSEFIIElOSVRJQUwgRk9STQorRkNDMDtGQ0MwO0ZDQzA7MDY0MSAwNjJFOzA2NDEgMDYyRTsgIyAo77OAOyDvs4A7IO+zgDsg2YHYrjsg2YHYrjsgKSBBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggS0hBSCBJTklUSUFMIEZPUk0KK0ZDQzE7RkNDMTtGQ0MxOzA2NDEgMDY0NTswNjQxIDA2NDU7ICMgKO+zgTsg77OBOyDvs4E7INmB2YU7INmB2YU7ICkgQVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGQ0MyO0ZDQzI7RkNDMjswNjQyIDA2MkQ7MDY0MiAwNjJEOyAjICjvs4I7IO+zgjsg77OCOyDZgtitOyDZgtitOyApIEFSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBIQUggSU5JVElBTCBGT1JNCitGQ0MzO0ZDQzM7RkNDMzswNjQyIDA2NDU7MDY0MiAwNjQ1OyAjICjvs4M7IO+zgzsg77ODOyDZgtmFOyDZgtmFOyApIEFSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkNDNDtGQ0M0O0ZDQzQ7MDY0MyAwNjJDOzA2NDMgMDYyQzsgIyAo77OEOyDvs4Q7IO+zhDsg2YPYrDsg2YPYrDsgKSBBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZDQzU7RkNDNTtGQ0M1OzA2NDMgMDYyRDswNjQzIDA2MkQ7ICMgKO+zhTsg77OFOyDvs4U7INmD2K07INmD2K07ICkgQVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZDQzY7RkNDNjtGQ0M2OzA2NDMgMDYyRTswNjQzIDA2MkU7ICMgKO+zhjsg77OGOyDvs4Y7INmD2K47INmD2K47ICkgQVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEtIQUggSU5JVElBTCBGT1JNCitGQ0M3O0ZDQzc7RkNDNzswNjQzIDA2NDQ7MDY0MyAwNjQ0OyAjICjvs4c7IO+zhzsg77OHOyDZg9mEOyDZg9mEOyApIEFSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBMQU0gSU5JVElBTCBGT1JNCitGQ0M4O0ZDQzg7RkNDODswNjQzIDA2NDU7MDY0MyAwNjQ1OyAjICjvs4g7IO+ziDsg77OIOyDZg9mFOyDZg9mFOyApIEFSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkNDOTtGQ0M5O0ZDQzk7MDY0NCAwNjJDOzA2NDQgMDYyQzsgIyAo77OJOyDvs4k7IO+ziTsg2YTYrDsg2YTYrDsgKSBBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZDQ0E7RkNDQTtGQ0NBOzA2NDQgMDYyRDswNjQ0IDA2MkQ7ICMgKO+zijsg77OKOyDvs4o7INmE2K07INmE2K07ICkgQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZDQ0I7RkNDQjtGQ0NCOzA2NDQgMDYyRTswNjQ0IDA2MkU7ICMgKO+zizsg77OLOyDvs4s7INmE2K47INmE2K47ICkgQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEtIQUggSU5JVElBTCBGT1JNCitGQ0NDO0ZDQ0M7RkNDQzswNjQ0IDA2NDU7MDY0NCAwNjQ1OyAjICjvs4w7IO+zjDsg77OMOyDZhNmFOyDZhNmFOyApIEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkNDRDtGQ0NEO0ZDQ0Q7MDY0NCAwNjQ3OzA2NDQgMDY0NzsgIyAo77ONOyDvs407IO+zjTsg2YTZhzsg2YTZhzsgKSBBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSEVIIElOSVRJQUwgRk9STQorRkNDRTtGQ0NFO0ZDQ0U7MDY0NSAwNjJDOzA2NDUgMDYyQzsgIyAo77OOOyDvs447IO+zjjsg2YXYrDsg2YXYrDsgKSBBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEpFRU0gSU5JVElBTCBGT1JNCitGQ0NGO0ZDQ0Y7RkNDRjswNjQ1IDA2MkQ7MDY0NSAwNjJEOyAjICjvs487IO+zjzsg77OPOyDZhditOyDZhditOyApIEFSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STQorRkNEMDtGQ0QwO0ZDRDA7MDY0NSAwNjJFOzA2NDUgMDYyRTsgIyAo77OQOyDvs5A7IO+zkDsg2YXYrjsg2YXYrjsgKSBBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEtIQUggSU5JVElBTCBGT1JNCitGQ0QxO0ZDRDE7RkNEMTswNjQ1IDA2NDU7MDY0NSAwNjQ1OyAjICjvs5E7IO+zkTsg77OROyDZhdmFOyDZhdmFOyApIEFSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZDRDI7RkNEMjtGQ0QyOzA2NDYgMDYyQzswNjQ2IDA2MkM7ICMgKO+zkjsg77OSOyDvs5I7INmG2Kw7INmG2Kw7ICkgQVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBKRUVNIElOSVRJQUwgRk9STQorRkNEMztGQ0QzO0ZDRDM7MDY0NiAwNjJEOzA2NDYgMDYyRDsgIyAo77OTOyDvs5M7IO+zkzsg2YbYrTsg2YbYrTsgKSBBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZDRDQ7RkNENDtGQ0Q0OzA2NDYgMDYyRTswNjQ2IDA2MkU7ICMgKO+zlDsg77OUOyDvs5Q7INmG2K47INmG2K47ICkgQVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBLSEFIIElOSVRJQUwgRk9STQorRkNENTtGQ0Q1O0ZDRDU7MDY0NiAwNjQ1OzA2NDYgMDY0NTsgIyAo77OVOyDvs5U7IO+zlTsg2YbZhTsg2YbZhTsgKSBBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGQ0Q2O0ZDRDY7RkNENjswNjQ2IDA2NDc7MDY0NiAwNjQ3OyAjICjvs5Y7IO+zljsg77OWOyDZhtmHOyDZhtmHOyApIEFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEVIIElOSVRJQUwgRk9STQorRkNENztGQ0Q3O0ZDRDc7MDY0NyAwNjJDOzA2NDcgMDYyQzsgIyAo77OXOyDvs5c7IO+zlzsg2YfYrDsg2YfYrDsgKSBBUkFCSUMgTElHQVRVUkUgSEVIIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZDRDg7RkNEODtGQ0Q4OzA2NDcgMDY0NTswNjQ3IDA2NDU7ICMgKO+zmDsg77OYOyDvs5g7INmH2YU7INmH2YU7ICkgQVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGQ0Q5O0ZDRDk7RkNEOTswNjQ3IDA2NzA7MDY0NyAwNjcwOyAjICjvs5k7IO+zmTsg77OZOyDZh+KXjNmwOyDZh+KXjNmwOyApIEFSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBTVVBFUlNDUklQVCBBTEVGIElOSVRJQUwgRk9STQorRkNEQTtGQ0RBO0ZDREE7MDY0QSAwNjJDOzA2NEEgMDYyQzsgIyAo77OaOyDvs5o7IO+zmjsg2YrYrDsg2YrYrDsgKSBBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZDREI7RkNEQjtGQ0RCOzA2NEEgMDYyRDswNjRBIDA2MkQ7ICMgKO+zmzsg77ObOyDvs5s7INmK2K07INmK2K07ICkgQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZDREM7RkNEQztGQ0RDOzA2NEEgMDYyRTswNjRBIDA2MkU7ICMgKO+znDsg77OcOyDvs5w7INmK2K47INmK2K47ICkgQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEtIQUggSU5JVElBTCBGT1JNCitGQ0REO0ZDREQ7RkNERDswNjRBIDA2NDU7MDY0QSAwNjQ1OyAjICjvs507IO+znTsg77OdOyDZitmFOyDZitmFOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkNERTtGQ0RFO0ZDREU7MDY0QSAwNjQ3OzA2NEEgMDY0NzsgIyAo77OeOyDvs547IO+znjsg2YrZhzsg2YrZhzsgKSBBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEVIIElOSVRJQUwgRk9STQorRkNERjtGQ0RGO0ZDREY7MDYyNiAwNjQ1OzA2NEEgMDY1NCAwNjQ1OyAjICjvs587IO+znzsg77OfOyDYptmFOyDZiuKXjNmU2YU7ICkgQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggTUVFTSBNRURJQUwgRk9STQorRkNFMDtGQ0UwO0ZDRTA7MDYyNiAwNjQ3OzA2NEEgMDY1NCAwNjQ3OyAjICjvs6A7IO+zoDsg77OgOyDYptmHOyDZiuKXjNmU2Yc7ICkgQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggSEVIIE1FRElBTCBGT1JNCitGQ0UxO0ZDRTE7RkNFMTswNjI4IDA2NDU7MDYyOCAwNjQ1OyAjICjvs6E7IO+zoTsg77OhOyDYqNmFOyDYqNmFOyApIEFSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBNRUVNIE1FRElBTCBGT1JNCitGQ0UyO0ZDRTI7RkNFMjswNjI4IDA2NDc7MDYyOCAwNjQ3OyAjICjvs6I7IO+zojsg77OiOyDYqNmHOyDYqNmHOyApIEFSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBIRUggTUVESUFMIEZPUk0KK0ZDRTM7RkNFMztGQ0UzOzA2MkEgMDY0NTswNjJBIDA2NDU7ICMgKO+zozsg77OjOyDvs6M7INiq2YU7INiq2YU7ICkgQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gTUVESUFMIEZPUk0KK0ZDRTQ7RkNFNDtGQ0U0OzA2MkEgMDY0NzswNjJBIDA2NDc7ICMgKO+zpDsg77OkOyDvs6Q7INiq2Yc7INiq2Yc7ICkgQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEhFSCBNRURJQUwgRk9STQorRkNFNTtGQ0U1O0ZDRTU7MDYyQiAwNjQ1OzA2MkIgMDY0NTsgIyAo77OlOyDvs6U7IO+zpTsg2KvZhTsg2KvZhTsgKSBBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIE1FRU0gTUVESUFMIEZPUk0KK0ZDRTY7RkNFNjtGQ0U2OzA2MkIgMDY0NzswNjJCIDA2NDc7ICMgKO+zpjsg77OmOyDvs6Y7INir2Yc7INir2Yc7ICkgQVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBIRUggTUVESUFMIEZPUk0KK0ZDRTc7RkNFNztGQ0U3OzA2MzMgMDY0NTswNjMzIDA2NDU7ICMgKO+zpzsg77OnOyDvs6c7INiz2YU7INiz2YU7ICkgQVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBNRUVNIE1FRElBTCBGT1JNCitGQ0U4O0ZDRTg7RkNFODswNjMzIDA2NDc7MDYzMyAwNjQ3OyAjICjvs6g7IO+zqDsg77OoOyDYs9mHOyDYs9mHOyApIEFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSEVIIE1FRElBTCBGT1JNCitGQ0U5O0ZDRTk7RkNFOTswNjM0IDA2NDU7MDYzNCAwNjQ1OyAjICjvs6k7IO+zqTsg77OpOyDYtNmFOyDYtNmFOyApIEFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gTUVESUFMIEZPUk0KK0ZDRUE7RkNFQTtGQ0VBOzA2MzQgMDY0NzswNjM0IDA2NDc7ICMgKO+zqjsg77OqOyDvs6o7INi02Yc7INi02Yc7ICkgQVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEVIIE1FRElBTCBGT1JNCitGQ0VCO0ZDRUI7RkNFQjswNjQzIDA2NDQ7MDY0MyAwNjQ0OyAjICjvs6s7IO+zqzsg77OrOyDZg9mEOyDZg9mEOyApIEFSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBMQU0gTUVESUFMIEZPUk0KK0ZDRUM7RkNFQztGQ0VDOzA2NDMgMDY0NTswNjQzIDA2NDU7ICMgKO+zrDsg77OsOyDvs6w7INmD2YU7INmD2YU7ICkgQVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIE1FRU0gTUVESUFMIEZPUk0KK0ZDRUQ7RkNFRDtGQ0VEOzA2NDQgMDY0NTswNjQ0IDA2NDU7ICMgKO+zrTsg77OtOyDvs607INmE2YU7INmE2YU7ICkgQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIE1FRU0gTUVESUFMIEZPUk0KK0ZDRUU7RkNFRTtGQ0VFOzA2NDYgMDY0NTswNjQ2IDA2NDU7ICMgKO+zrjsg77OuOyDvs647INmG2YU7INmG2YU7ICkgQVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBNRUVNIE1FRElBTCBGT1JNCitGQ0VGO0ZDRUY7RkNFRjswNjQ2IDA2NDc7MDY0NiAwNjQ3OyAjICjvs687IO+zrzsg77OvOyDZhtmHOyDZhtmHOyApIEFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEVIIE1FRElBTCBGT1JNCitGQ0YwO0ZDRjA7RkNGMDswNjRBIDA2NDU7MDY0QSAwNjQ1OyAjICjvs7A7IO+zsDsg77OwOyDZitmFOyDZitmFOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIE1FRElBTCBGT1JNCitGQ0YxO0ZDRjE7RkNGMTswNjRBIDA2NDc7MDY0QSAwNjQ3OyAjICjvs7E7IO+zsTsg77OxOyDZitmHOyDZitmHOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIRUggTUVESUFMIEZPUk0KK0ZDRjI7RkNGMjtGQ0YyOzA2NDAgMDY0RSAwNjUxOzA2NDAgMDY0RSAwNjUxOyAjICjvs7I7IO+zsjsg77OyOyDZgOKXjNmO4peM2ZE7INmA4peM2Y7il4zZkTsgKSBBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggRkFUSEEgTUVESUFMIEZPUk0KK0ZDRjM7RkNGMztGQ0YzOzA2NDAgMDY0RiAwNjUxOzA2NDAgMDY0RiAwNjUxOyAjICjvs7M7IO+zszsg77OzOyDZgOKXjNmP4peM2ZE7INmA4peM2Y/il4zZkTsgKSBBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggREFNTUEgTUVESUFMIEZPUk0KK0ZDRjQ7RkNGNDtGQ0Y0OzA2NDAgMDY1MCAwNjUxOzA2NDAgMDY1MCAwNjUxOyAjICjvs7Q7IO+ztDsg77O0OyDZgOKXjNmQ4peM2ZE7INmA4peM2ZDil4zZkTsgKSBBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggS0FTUkEgTUVESUFMIEZPUk0KK0ZDRjU7RkNGNTtGQ0Y1OzA2MzcgMDY0OTswNjM3IDA2NDk7ICMgKO+ztTsg77O1OyDvs7U7INi32Yk7INi32Yk7ICkgQVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGQ0Y2O0ZDRjY7RkNGNjswNjM3IDA2NEE7MDYzNyAwNjRBOyAjICjvs7Y7IO+ztjsg77O2OyDYt9mKOyDYt9mKOyApIEFSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBZRUggSVNPTEFURUQgRk9STQorRkNGNztGQ0Y3O0ZDRjc7MDYzOSAwNjQ5OzA2MzkgMDY0OTsgIyAo77O3OyDvs7c7IO+ztzsg2LnZiTsg2LnZiTsgKSBBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk0KK0ZDRjg7RkNGODtGQ0Y4OzA2MzkgMDY0QTswNjM5IDA2NEE7ICMgKO+zuDsg77O4OyDvs7g7INi52Yo7INi52Yo7ICkgQVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIFlFSCBJU09MQVRFRCBGT1JNCitGQ0Y5O0ZDRjk7RkNGOTswNjNBIDA2NDk7MDYzQSAwNjQ5OyAjICjvs7k7IO+zuTsg77O5OyDYutmJOyDYutmJOyApIEFSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGQ0ZBO0ZDRkE7RkNGQTswNjNBIDA2NEE7MDYzQSAwNjRBOyAjICjvs7o7IO+zujsg77O6OyDYutmKOyDYutmKOyApIEFSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIFlFSCBJU09MQVRFRCBGT1JNCitGQ0ZCO0ZDRkI7RkNGQjswNjMzIDA2NDk7MDYzMyAwNjQ5OyAjICjvs7s7IO+zuzsg77O7OyDYs9mJOyDYs9mJOyApIEFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk0KK0ZDRkM7RkNGQztGQ0ZDOzA2MzMgMDY0QTswNjMzIDA2NEE7ICMgKO+zvDsg77O8OyDvs7w7INiz2Yo7INiz2Yo7ICkgQVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBZRUggSVNPTEFURUQgRk9STQorRkNGRDtGQ0ZEO0ZDRkQ7MDYzNCAwNjQ5OzA2MzQgMDY0OTsgIyAo77O9OyDvs707IO+zvTsg2LTZiTsg2LTZiTsgKSBBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STQorRkNGRTtGQ0ZFO0ZDRkU7MDYzNCAwNjRBOzA2MzQgMDY0QTsgIyAo77O+OyDvs747IO+zvjsg2LTZijsg2LTZijsgKSBBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBZRUggSVNPTEFURUQgRk9STQorRkNGRjtGQ0ZGO0ZDRkY7MDYyRCAwNjQ5OzA2MkQgMDY0OTsgIyAo77O/OyDvs787IO+zvzsg2K3ZiTsg2K3ZiTsgKSBBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk0KK0ZEMDA7RkQwMDtGRDAwOzA2MkQgMDY0QTswNjJEIDA2NEE7ICMgKO+0gDsg77SAOyDvtIA7INit2Yo7INit2Yo7ICkgQVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNCitGRDAxO0ZEMDE7RkQwMTswNjJDIDA2NDk7MDYyQyAwNjQ5OyAjICjvtIE7IO+0gTsg77SBOyDYrNmJOyDYrNmJOyApIEFSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk0KK0ZEMDI7RkQwMjtGRDAyOzA2MkMgMDY0QTswNjJDIDA2NEE7ICMgKO+0gjsg77SCOyDvtII7INis2Yo7INis2Yo7ICkgQVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBZRUggSVNPTEFURUQgRk9STQorRkQwMztGRDAzO0ZEMDM7MDYyRSAwNjQ5OzA2MkUgMDY0OTsgIyAo77SDOyDvtIM7IO+0gzsg2K7ZiTsg2K7ZiTsgKSBBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGRDA0O0ZEMDQ7RkQwNDswNjJFIDA2NEE7MDYyRSAwNjRBOyAjICjvtIQ7IO+0hDsg77SEOyDYrtmKOyDYrtmKOyApIEFSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggWUVIIElTT0xBVEVEIEZPUk0KK0ZEMDU7RkQwNTtGRDA1OzA2MzUgMDY0OTswNjM1IDA2NDk7ICMgKO+0hTsg77SFOyDvtIU7INi12Yk7INi12Yk7ICkgQVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNCitGRDA2O0ZEMDY7RkQwNjswNjM1IDA2NEE7MDYzNSAwNjRBOyAjICjvtIY7IO+0hjsg77SGOyDYtdmKOyDYtdmKOyApIEFSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBZRUggSVNPTEFURUQgRk9STQorRkQwNztGRDA3O0ZEMDc7MDYzNiAwNjQ5OzA2MzYgMDY0OTsgIyAo77SHOyDvtIc7IO+0hzsg2LbZiTsg2LbZiTsgKSBBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk0KK0ZEMDg7RkQwODtGRDA4OzA2MzYgMDY0QTswNjM2IDA2NEE7ICMgKO+0iDsg77SIOyDvtIg7INi22Yo7INi22Yo7ICkgQVJBQklDIExJR0FUVVJFIERBRCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNCitGRDA5O0ZEMDk7RkQwOTswNjM0IDA2MkM7MDYzNCAwNjJDOyAjICjvtIk7IO+0iTsg77SJOyDYtNisOyDYtNisOyApIEFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEpFRU0gSVNPTEFURUQgRk9STQorRkQwQTtGRDBBO0ZEMEE7MDYzNCAwNjJEOzA2MzQgMDYyRDsgIyAo77SKOyDvtIo7IO+0ijsg2LTYrTsg2LTYrTsgKSBBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIQUggSVNPTEFURUQgRk9STQorRkQwQjtGRDBCO0ZEMEI7MDYzNCAwNjJFOzA2MzQgMDYyRTsgIyAo77SLOyDvtIs7IO+0izsg2LTYrjsg2LTYrjsgKSBBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBLSEFIIElTT0xBVEVEIEZPUk0KK0ZEMEM7RkQwQztGRDBDOzA2MzQgMDY0NTswNjM0IDA2NDU7ICMgKO+0jDsg77SMOyDvtIw7INi02YU7INi02YU7ICkgQVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNCitGRDBEO0ZEMEQ7RkQwRDswNjM0IDA2MzE7MDYzNCAwNjMxOyAjICjvtI07IO+0jTsg77SNOyDYtNixOyDYtNixOyApIEFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIFJFSCBJU09MQVRFRCBGT1JNCitGRDBFO0ZEMEU7RkQwRTswNjMzIDA2MzE7MDYzMyAwNjMxOyAjICjvtI47IO+0jjsg77SOOyDYs9ixOyDYs9ixOyApIEFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggUkVIIElTT0xBVEVEIEZPUk0KK0ZEMEY7RkQwRjtGRDBGOzA2MzUgMDYzMTswNjM1IDA2MzE7ICMgKO+0jzsg77SPOyDvtI87INi12LE7INi12LE7ICkgQVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIFJFSCBJU09MQVRFRCBGT1JNCitGRDEwO0ZEMTA7RkQxMDswNjM2IDA2MzE7MDYzNiAwNjMxOyAjICjvtJA7IO+0kDsg77SQOyDYttixOyDYttixOyApIEFSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBSRUggSVNPTEFURUQgRk9STQorRkQxMTtGRDExO0ZEMTE7MDYzNyAwNjQ5OzA2MzcgMDY0OTsgIyAo77SROyDvtJE7IO+0kTsg2LfZiTsg2LfZiTsgKSBBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZEMTI7RkQxMjtGRDEyOzA2MzcgMDY0QTswNjM3IDA2NEE7ICMgKO+0kjsg77SSOyDvtJI7INi32Yo7INi32Yo7ICkgQVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIFlFSCBGSU5BTCBGT1JNCitGRDEzO0ZEMTM7RkQxMzswNjM5IDA2NDk7MDYzOSAwNjQ5OyAjICjvtJM7IO+0kzsg77STOyDYudmJOyDYudmJOyApIEFSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkQxNDtGRDE0O0ZEMTQ7MDYzOSAwNjRBOzA2MzkgMDY0QTsgIyAo77SUOyDvtJQ7IO+0lDsg2LnZijsg2LnZijsgKSBBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEMTU7RkQxNTtGRDE1OzA2M0EgMDY0OTswNjNBIDA2NDk7ICMgKO+0lTsg77SVOyDvtJU7INi62Yk7INi62Yk7ICkgQVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZEMTY7RkQxNjtGRDE2OzA2M0EgMDY0QTswNjNBIDA2NEE7ICMgKO+0ljsg77SWOyDvtJY7INi62Yo7INi62Yo7ICkgQVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEMTc7RkQxNztGRDE3OzA2MzMgMDY0OTswNjMzIDA2NDk7ICMgKO+0lzsg77SXOyDvtJc7INiz2Yk7INiz2Yk7ICkgQVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkQxODtGRDE4O0ZEMTg7MDYzMyAwNjRBOzA2MzMgMDY0QTsgIyAo77SYOyDvtJg7IO+0mDsg2LPZijsg2LPZijsgKSBBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIFlFSCBGSU5BTCBGT1JNCitGRDE5O0ZEMTk7RkQxOTswNjM0IDA2NDk7MDYzNCAwNjQ5OyAjICjvtJk7IO+0mTsg77SZOyDYtNmJOyDYtNmJOyApIEFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGRDFBO0ZEMUE7RkQxQTswNjM0IDA2NEE7MDYzNCAwNjRBOyAjICjvtJo7IO+0mjsg77SaOyDYtNmKOyDYtNmKOyApIEFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIFlFSCBGSU5BTCBGT1JNCitGRDFCO0ZEMUI7RkQxQjswNjJEIDA2NDk7MDYyRCAwNjQ5OyAjICjvtJs7IO+0mzsg77SbOyDYrdmJOyDYrdmJOyApIEFSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkQxQztGRDFDO0ZEMUM7MDYyRCAwNjRBOzA2MkQgMDY0QTsgIyAo77ScOyDvtJw7IO+0nDsg2K3Zijsg2K3ZijsgKSBBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEMUQ7RkQxRDtGRDFEOzA2MkMgMDY0OTswNjJDIDA2NDk7ICMgKO+0nTsg77SdOyDvtJ07INis2Yk7INis2Yk7ICkgQVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkQxRTtGRDFFO0ZEMUU7MDYyQyAwNjRBOzA2MkMgMDY0QTsgIyAo77SeOyDvtJ47IO+0njsg2KzZijsg2KzZijsgKSBBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNCitGRDFGO0ZEMUY7RkQxRjswNjJFIDA2NDk7MDYyRSAwNjQ5OyAjICjvtJ87IO+0nzsg77SfOyDYrtmJOyDYrtmJOyApIEFSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZEMjA7RkQyMDtGRDIwOzA2MkUgMDY0QTswNjJFIDA2NEE7ICMgKO+0oDsg77SgOyDvtKA7INiu2Yo7INiu2Yo7ICkgQVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBZRUggRklOQUwgRk9STQorRkQyMTtGRDIxO0ZEMjE7MDYzNSAwNjQ5OzA2MzUgMDY0OTsgIyAo77ShOyDvtKE7IO+0oTsg2LXZiTsg2LXZiTsgKSBBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZEMjI7RkQyMjtGRDIyOzA2MzUgMDY0QTswNjM1IDA2NEE7ICMgKO+0ojsg77SiOyDvtKI7INi12Yo7INi12Yo7ICkgQVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIFlFSCBGSU5BTCBGT1JNCitGRDIzO0ZEMjM7RkQyMzswNjM2IDA2NDk7MDYzNiAwNjQ5OyAjICjvtKM7IO+0ozsg77SjOyDYttmJOyDYttmJOyApIEFSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkQyNDtGRDI0O0ZEMjQ7MDYzNiAwNjRBOzA2MzYgMDY0QTsgIyAo77SkOyDvtKQ7IO+0pDsg2LbZijsg2LbZijsgKSBBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEMjU7RkQyNTtGRDI1OzA2MzQgMDYyQzswNjM0IDA2MkM7ICMgKO+0pTsg77SlOyDvtKU7INi02Kw7INi02Kw7ICkgQVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSkVFTSBGSU5BTCBGT1JNCitGRDI2O0ZEMjY7RkQyNjswNjM0IDA2MkQ7MDYzNCAwNjJEOyAjICjvtKY7IO+0pjsg77SmOyDYtNitOyDYtNitOyApIEFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhBSCBGSU5BTCBGT1JNCitGRDI3O0ZEMjc7RkQyNzswNjM0IDA2MkU7MDYzNCAwNjJFOyAjICjvtKc7IO+0pzsg77SnOyDYtNiuOyDYtNiuOyApIEFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEtIQUggRklOQUwgRk9STQorRkQyODtGRDI4O0ZEMjg7MDYzNCAwNjQ1OzA2MzQgMDY0NTsgIyAo77SoOyDvtKg7IO+0qDsg2LTZhTsg2LTZhTsgKSBBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIEZJTkFMIEZPUk0KK0ZEMjk7RkQyOTtGRDI5OzA2MzQgMDYzMTswNjM0IDA2MzE7ICMgKO+0qTsg77SpOyDvtKk7INi02LE7INi02LE7ICkgQVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggUkVIIEZJTkFMIEZPUk0KK0ZEMkE7RkQyQTtGRDJBOzA2MzMgMDYzMTswNjMzIDA2MzE7ICMgKO+0qjsg77SqOyDvtKo7INiz2LE7INiz2LE7ICkgQVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBSRUggRklOQUwgRk9STQorRkQyQjtGRDJCO0ZEMkI7MDYzNSAwNjMxOzA2MzUgMDYzMTsgIyAo77SrOyDvtKs7IO+0qzsg2LXYsTsg2LXYsTsgKSBBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggUkVIIEZJTkFMIEZPUk0KK0ZEMkM7RkQyQztGRDJDOzA2MzYgMDYzMTswNjM2IDA2MzE7ICMgKO+0rDsg77SsOyDvtKw7INi22LE7INi22LE7ICkgQVJBQklDIExJR0FUVVJFIERBRCBXSVRIIFJFSCBGSU5BTCBGT1JNCitGRDJEO0ZEMkQ7RkQyRDswNjM0IDA2MkM7MDYzNCAwNjJDOyAjICjvtK07IO+0rTsg77StOyDYtNisOyDYtNisOyApIEFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEpFRU0gSU5JVElBTCBGT1JNCitGRDJFO0ZEMkU7RkQyRTswNjM0IDA2MkQ7MDYzNCAwNjJEOyAjICjvtK47IO+0rjsg77SuOyDYtNitOyDYtNitOyApIEFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZEMkY7RkQyRjtGRDJGOzA2MzQgMDYyRTswNjM0IDA2MkU7ICMgKO+0rzsg77SvOyDvtK87INi02K47INi02K47ICkgQVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggS0hBSCBJTklUSUFMIEZPUk0KK0ZEMzA7RkQzMDtGRDMwOzA2MzQgMDY0NTswNjM0IDA2NDU7ICMgKO+0sDsg77SwOyDvtLA7INi02YU7INi02YU7ICkgQVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZEMzE7RkQzMTtGRDMxOzA2MzMgMDY0NzswNjMzIDA2NDc7ICMgKO+0sTsg77SxOyDvtLE7INiz2Yc7INiz2Yc7ICkgQVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBIRUggSU5JVElBTCBGT1JNCitGRDMyO0ZEMzI7RkQzMjswNjM0IDA2NDc7MDYzNCAwNjQ3OyAjICjvtLI7IO+0sjsg77SyOyDYtNmHOyDYtNmHOyApIEFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhFSCBJTklUSUFMIEZPUk0KK0ZEMzM7RkQzMztGRDMzOzA2MzcgMDY0NTswNjM3IDA2NDU7ICMgKO+0szsg77SzOyDvtLM7INi32YU7INi32YU7ICkgQVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGRDM0O0ZEMzQ7RkQzNDswNjMzIDA2MkM7MDYzMyAwNjJDOyAjICjvtLQ7IO+0tDsg77S0OyDYs9isOyDYs9isOyApIEFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSkVFTSBNRURJQUwgRk9STQorRkQzNTtGRDM1O0ZEMzU7MDYzMyAwNjJEOzA2MzMgMDYyRDsgIyAo77S1OyDvtLU7IO+0tTsg2LPYrTsg2LPYrTsgKSBBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEhBSCBNRURJQUwgRk9STQorRkQzNjtGRDM2O0ZEMzY7MDYzMyAwNjJFOzA2MzMgMDYyRTsgIyAo77S2OyDvtLY7IO+0tjsg2LPYrjsg2LPYrjsgKSBBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEtIQUggTUVESUFMIEZPUk0KK0ZEMzc7RkQzNztGRDM3OzA2MzQgMDYyQzswNjM0IDA2MkM7ICMgKO+0tzsg77S3OyDvtLc7INi02Kw7INi02Kw7ICkgQVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSkVFTSBNRURJQUwgRk9STQorRkQzODtGRDM4O0ZEMzg7MDYzNCAwNjJEOzA2MzQgMDYyRDsgIyAo77S4OyDvtLg7IO+0uDsg2LTYrTsg2LTYrTsgKSBBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIQUggTUVESUFMIEZPUk0KK0ZEMzk7RkQzOTtGRDM5OzA2MzQgMDYyRTswNjM0IDA2MkU7ICMgKO+0uTsg77S5OyDvtLk7INi02K47INi02K47ICkgQVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggS0hBSCBNRURJQUwgRk9STQorRkQzQTtGRDNBO0ZEM0E7MDYzNyAwNjQ1OzA2MzcgMDY0NTsgIyAo77S6OyDvtLo7IO+0ujsg2LfZhTsg2LfZhTsgKSBBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggTUVFTSBNRURJQUwgRk9STQorRkQzQjtGRDNCO0ZEM0I7MDYzOCAwNjQ1OzA2MzggMDY0NTsgIyAo77S7OyDvtLs7IO+0uzsg2LjZhTsg2LjZhTsgKSBBUkFCSUMgTElHQVRVUkUgWkFIIFdJVEggTUVFTSBNRURJQUwgRk9STQorRkQzQztGRDNDO0ZEM0M7MDYyNyAwNjRCOzA2MjcgMDY0QjsgIyAo77S8OyDvtLw7IO+0vDsg2Kfil4zZizsg2Kfil4zZizsgKSBBUkFCSUMgTElHQVRVUkUgQUxFRiBXSVRIIEZBVEhBVEFOIEZJTkFMIEZPUk0KK0ZEM0Q7RkQzRDtGRDNEOzA2MjcgMDY0QjswNjI3IDA2NEI7ICMgKO+0vTsg77S9OyDvtL07INin4peM2Ys7INin4peM2Ys7ICkgQVJBQklDIExJR0FUVVJFIEFMRUYgV0lUSCBGQVRIQVRBTiBJU09MQVRFRCBGT1JNCitGRDUwO0ZENTA7RkQ1MDswNjJBIDA2MkMgMDY0NTswNjJBIDA2MkMgMDY0NTsgIyAo77WQOyDvtZA7IO+1kDsg2KrYrNmFOyDYqtis2YU7ICkgQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEpFRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkQ1MTtGRDUxO0ZENTE7MDYyQSAwNjJEIDA2MkM7MDYyQSAwNjJEIDA2MkM7ICMgKO+1kTsg77WROyDvtZE7INiq2K3YrDsg2KrYrdisOyApIEFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBIQUggV0lUSCBKRUVNIEZJTkFMIEZPUk0KK0ZENTI7RkQ1MjtGRDUyOzA2MkEgMDYyRCAwNjJDOzA2MkEgMDYyRCAwNjJDOyAjICjvtZI7IO+1kjsg77WSOyDYqtit2Kw7INiq2K3YrDsgKSBBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSEFIIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZENTM7RkQ1MztGRDUzOzA2MkEgMDYyRCAwNjQ1OzA2MkEgMDYyRCAwNjQ1OyAjICjvtZM7IO+1kzsg77WTOyDYqtit2YU7INiq2K3ZhTsgKSBBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZENTQ7RkQ1NDtGRDU0OzA2MkEgMDYyRSAwNjQ1OzA2MkEgMDYyRSAwNjQ1OyAjICjvtZQ7IO+1lDsg77WUOyDYqtiu2YU7INiq2K7ZhTsgKSBBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGRDU1O0ZENTU7RkQ1NTswNjJBIDA2NDUgMDYyQzswNjJBIDA2NDUgMDYyQzsgIyAo77WVOyDvtZU7IO+1lTsg2KrZhdisOyDYqtmF2Kw7ICkgQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gV0lUSCBKRUVNIElOSVRJQUwgRk9STQorRkQ1NjtGRDU2O0ZENTY7MDYyQSAwNjQ1IDA2MkQ7MDYyQSAwNjQ1IDA2MkQ7ICMgKO+1ljsg77WWOyDvtZY7INiq2YXYrTsg2KrZhditOyApIEFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STQorRkQ1NztGRDU3O0ZENTc7MDYyQSAwNjQ1IDA2MkU7MDYyQSAwNjQ1IDA2MkU7ICMgKO+1lzsg77WXOyDvtZc7INiq2YXYrjsg2KrZhdiuOyApIEFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIFdJVEggS0hBSCBJTklUSUFMIEZPUk0KK0ZENTg7RkQ1ODtGRDU4OzA2MkMgMDY0NSAwNjJEOzA2MkMgMDY0NSAwNjJEOyAjICjvtZg7IO+1mDsg77WYOyDYrNmF2K07INis2YXYrTsgKSBBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIE1FRU0gV0lUSCBIQUggRklOQUwgRk9STQorRkQ1OTtGRDU5O0ZENTk7MDYyQyAwNjQ1IDA2MkQ7MDYyQyAwNjQ1IDA2MkQ7ICMgKO+1mTsg77WZOyDvtZk7INis2YXYrTsg2KzZhditOyApIEFSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZENUE7RkQ1QTtGRDVBOzA2MkQgMDY0NSAwNjRBOzA2MkQgMDY0NSAwNjRBOyAjICjvtZo7IO+1mjsg77WaOyDYrdmF2Yo7INit2YXZijsgKSBBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNCitGRDVCO0ZENUI7RkQ1QjswNjJEIDA2NDUgMDY0OTswNjJEIDA2NDUgMDY0OTsgIyAo77WbOyDvtZs7IO+1mzsg2K3ZhdmJOyDYrdmF2Yk7ICkgQVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIE1FRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkQ1QztGRDVDO0ZENUM7MDYzMyAwNjJEIDA2MkM7MDYzMyAwNjJEIDA2MkM7ICMgKO+1nDsg77WcOyDvtZw7INiz2K3YrDsg2LPYrdisOyApIEFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSEFIIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZENUQ7RkQ1RDtGRDVEOzA2MzMgMDYyQyAwNjJEOzA2MzMgMDYyQyAwNjJEOyAjICjvtZ07IO+1nTsg77WdOyDYs9is2K07INiz2KzYrTsgKSBBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEpFRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNCitGRDVFO0ZENUU7RkQ1RTswNjMzIDA2MkMgMDY0OTswNjMzIDA2MkMgMDY0OTsgIyAo77WeOyDvtZ47IO+1njsg2LPYrNmJOyDYs9is2Yk7ICkgQVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBKRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZENUY7RkQ1RjtGRDVGOzA2MzMgMDY0NSAwNjJEOzA2MzMgMDY0NSAwNjJEOyAjICjvtZ87IO+1nzsg77WfOyDYs9mF2K07INiz2YXYrTsgKSBBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gV0lUSCBIQUggRklOQUwgRk9STQorRkQ2MDtGRDYwO0ZENjA7MDYzMyAwNjQ1IDA2MkQ7MDYzMyAwNjQ1IDA2MkQ7ICMgKO+1oDsg77WgOyDvtaA7INiz2YXYrTsg2LPZhditOyApIEFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZENjE7RkQ2MTtGRDYxOzA2MzMgMDY0NSAwNjJDOzA2MzMgMDY0NSAwNjJDOyAjICjvtaE7IO+1oTsg77WhOyDYs9mF2Kw7INiz2YXYrDsgKSBBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gV0lUSCBKRUVNIElOSVRJQUwgRk9STQorRkQ2MjtGRDYyO0ZENjI7MDYzMyAwNjQ1IDA2NDU7MDYzMyAwNjQ1IDA2NDU7ICMgKO+1ojsg77WiOyDvtaI7INiz2YXZhTsg2LPZhdmFOyApIEFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STQorRkQ2MztGRDYzO0ZENjM7MDYzMyAwNjQ1IDA2NDU7MDYzMyAwNjQ1IDA2NDU7ICMgKO+1ozsg77WjOyDvtaM7INiz2YXZhTsg2LPZhdmFOyApIEFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGRDY0O0ZENjQ7RkQ2NDswNjM1IDA2MkQgMDYyRDswNjM1IDA2MkQgMDYyRDsgIyAo77WkOyDvtaQ7IO+1pDsg2LXYrditOyDYtdit2K07ICkgQVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEhBSCBXSVRIIEhBSCBGSU5BTCBGT1JNCitGRDY1O0ZENjU7RkQ2NTswNjM1IDA2MkQgMDYyRDswNjM1IDA2MkQgMDYyRDsgIyAo77WlOyDvtaU7IO+1pTsg2LXYrditOyDYtdit2K07ICkgQVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEhBSCBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZENjY7RkQ2NjtGRDY2OzA2MzUgMDY0NSAwNjQ1OzA2MzUgMDY0NSAwNjQ1OyAjICjvtaY7IO+1pjsg77WmOyDYtdmF2YU7INi12YXZhTsgKSBBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STQorRkQ2NztGRDY3O0ZENjc7MDYzNCAwNjJEIDA2NDU7MDYzNCAwNjJEIDA2NDU7ICMgKO+1pzsg77WnOyDvtac7INi02K3ZhTsg2LTYrdmFOyApIEFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhBSCBXSVRIIE1FRU0gRklOQUwgRk9STQorRkQ2ODtGRDY4O0ZENjg7MDYzNCAwNjJEIDA2NDU7MDYzNCAwNjJEIDA2NDU7ICMgKO+1qDsg77WoOyDvtag7INi02K3ZhTsg2LTYrdmFOyApIEFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGRDY5O0ZENjk7RkQ2OTswNjM0IDA2MkMgMDY0QTswNjM0IDA2MkMgMDY0QTsgIyAo77WpOyDvtak7IO+1qTsg2LTYrNmKOyDYtNis2Yo7ICkgQVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNCitGRDZBO0ZENkE7RkQ2QTswNjM0IDA2NDUgMDYyRTswNjM0IDA2NDUgMDYyRTsgIyAo77WqOyDvtao7IO+1qjsg2LTZhdiuOyDYtNmF2K47ICkgQVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggTUVFTSBXSVRIIEtIQUggRklOQUwgRk9STQorRkQ2QjtGRDZCO0ZENkI7MDYzNCAwNjQ1IDA2MkU7MDYzNCAwNjQ1IDA2MkU7ICMgKO+1qzsg77WrOyDvtas7INi02YXYrjsg2LTZhdiuOyApIEFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gV0lUSCBLSEFIIElOSVRJQUwgRk9STQorRkQ2QztGRDZDO0ZENkM7MDYzNCAwNjQ1IDA2NDU7MDYzNCAwNjQ1IDA2NDU7ICMgKO+1rDsg77WsOyDvtaw7INi02YXZhTsg2LTZhdmFOyApIEFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk0KK0ZENkQ7RkQ2RDtGRDZEOzA2MzQgMDY0NSAwNjQ1OzA2MzQgMDY0NSAwNjQ1OyAjICjvta07IO+1rTsg77WtOyDYtNmF2YU7INi02YXZhTsgKSBBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZENkU7RkQ2RTtGRDZFOzA2MzYgMDYyRCAwNjQ5OzA2MzYgMDYyRCAwNjQ5OyAjICjvta47IO+1rjsg77WuOyDYttit2Yk7INi22K3ZiTsgKSBBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggSEFIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZENkY7RkQ2RjtGRDZGOzA2MzYgMDYyRSAwNjQ1OzA2MzYgMDYyRSAwNjQ1OyAjICjvta87IO+1rzsg77WvOyDYttiu2YU7INi22K7ZhTsgKSBBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggS0hBSCBXSVRIIE1FRU0gRklOQUwgRk9STQorRkQ3MDtGRDcwO0ZENzA7MDYzNiAwNjJFIDA2NDU7MDYzNiAwNjJFIDA2NDU7ICMgKO+1sDsg77WwOyDvtbA7INi22K7ZhTsg2LbYrtmFOyApIEFSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBLSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZENzE7RkQ3MTtGRDcxOzA2MzcgMDY0NSAwNjJEOzA2MzcgMDY0NSAwNjJEOyAjICjvtbE7IO+1sTsg77WxOyDYt9mF2K07INi32YXYrTsgKSBBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggTUVFTSBXSVRIIEhBSCBGSU5BTCBGT1JNCitGRDcyO0ZENzI7RkQ3MjswNjM3IDA2NDUgMDYyRDswNjM3IDA2NDUgMDYyRDsgIyAo77WyOyDvtbI7IO+1sjsg2LfZhditOyDYt9mF2K07ICkgQVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNCitGRDczO0ZENzM7RkQ3MzswNjM3IDA2NDUgMDY0NTswNjM3IDA2NDUgMDY0NTsgIyAo77WzOyDvtbM7IO+1szsg2LfZhdmFOyDYt9mF2YU7ICkgQVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkQ3NDtGRDc0O0ZENzQ7MDYzNyAwNjQ1IDA2NEE7MDYzNyAwNjQ1IDA2NEE7ICMgKO+1tDsg77W0OyDvtbQ7INi32YXZijsg2LfZhdmKOyApIEFSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZENzU7RkQ3NTtGRDc1OzA2MzkgMDYyQyAwNjQ1OzA2MzkgMDYyQyAwNjQ1OyAjICjvtbU7IO+1tTsg77W1OyDYudis2YU7INi52KzZhTsgKSBBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggSkVFTSBXSVRIIE1FRU0gRklOQUwgRk9STQorRkQ3NjtGRDc2O0ZENzY7MDYzOSAwNjQ1IDA2NDU7MDYzOSAwNjQ1IDA2NDU7ICMgKO+1tjsg77W2OyDvtbY7INi52YXZhTsg2LnZhdmFOyApIEFSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNCitGRDc3O0ZENzc7RkQ3NzswNjM5IDA2NDUgMDY0NTswNjM5IDA2NDUgMDY0NTsgIyAo77W3OyDvtbc7IO+1tzsg2LnZhdmFOyDYudmF2YU7ICkgQVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkQ3ODtGRDc4O0ZENzg7MDYzOSAwNjQ1IDA2NDk7MDYzOSAwNjQ1IDA2NDk7ICMgKO+1uDsg77W4OyDvtbg7INi52YXZiTsg2LnZhdmJOyApIEFSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBNRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZENzk7RkQ3OTtGRDc5OzA2M0EgMDY0NSAwNjQ1OzA2M0EgMDY0NSAwNjQ1OyAjICjvtbk7IO+1uTsg77W5OyDYutmF2YU7INi62YXZhTsgKSBBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNCitGRDdBO0ZEN0E7RkQ3QTswNjNBIDA2NDUgMDY0QTswNjNBIDA2NDUgMDY0QTsgIyAo77W6OyDvtbo7IO+1ujsg2LrZhdmKOyDYutmF2Yo7ICkgQVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNCitGRDdCO0ZEN0I7RkQ3QjswNjNBIDA2NDUgMDY0OTswNjNBIDA2NDUgMDY0OTsgIyAo77W7OyDvtbs7IO+1uzsg2LrZhdmJOyDYutmF2Yk7ICkgQVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGRDdDO0ZEN0M7RkQ3QzswNjQxIDA2MkUgMDY0NTswNjQxIDA2MkUgMDY0NTsgIyAo77W8OyDvtbw7IO+1vDsg2YHYrtmFOyDZgdiu2YU7ICkgQVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEtIQUggV0lUSCBNRUVNIEZJTkFMIEZPUk0KK0ZEN0Q7RkQ3RDtGRDdEOzA2NDEgMDYyRSAwNjQ1OzA2NDEgMDYyRSAwNjQ1OyAjICjvtb07IO+1vTsg77W9OyDZgdiu2YU7INmB2K7ZhTsgKSBBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGRDdFO0ZEN0U7RkQ3RTswNjQyIDA2NDUgMDYyRDswNjQyIDA2NDUgMDYyRDsgIyAo77W+OyDvtb47IO+1vjsg2YLZhditOyDZgtmF2K07ICkgQVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIE1FRU0gV0lUSCBIQUggRklOQUwgRk9STQorRkQ3RjtGRDdGO0ZEN0Y7MDY0MiAwNjQ1IDA2NDU7MDY0MiAwNjQ1IDA2NDU7ICMgKO+1vzsg77W/OyDvtb87INmC2YXZhTsg2YLZhdmFOyApIEFSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNCitGRDgwO0ZEODA7RkQ4MDswNjQ0IDA2MkQgMDY0NTswNjQ0IDA2MkQgMDY0NTsgIyAo77aAOyDvtoA7IO+2gDsg2YTYrdmFOyDZhNit2YU7ICkgQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEhBSCBXSVRIIE1FRU0gRklOQUwgRk9STQorRkQ4MTtGRDgxO0ZEODE7MDY0NCAwNjJEIDA2NEE7MDY0NCAwNjJEIDA2NEE7ICMgKO+2gTsg77aBOyDvtoE7INmE2K3Zijsg2YTYrdmKOyApIEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STQorRkQ4MjtGRDgyO0ZEODI7MDY0NCAwNjJEIDA2NDk7MDY0NCAwNjJEIDA2NDk7ICMgKO+2gjsg77aCOyDvtoI7INmE2K3ZiTsg2YTYrdmJOyApIEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkQ4MztGRDgzO0ZEODM7MDY0NCAwNjJDIDA2MkM7MDY0NCAwNjJDIDA2MkM7ICMgKO+2gzsg77aDOyDvtoM7INmE2KzYrDsg2YTYrNisOyApIEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBKRUVNIFdJVEggSkVFTSBJTklUSUFMIEZPUk0KK0ZEODQ7RkQ4NDtGRDg0OzA2NDQgMDYyQyAwNjJDOzA2NDQgMDYyQyAwNjJDOyAjICjvtoQ7IO+2hDsg77aEOyDZhNis2Kw7INmE2KzYrDsgKSBBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSkVFTSBXSVRIIEpFRU0gRklOQUwgRk9STQorRkQ4NTtGRDg1O0ZEODU7MDY0NCAwNjJFIDA2NDU7MDY0NCAwNjJFIDA2NDU7ICMgKO+2hTsg77aFOyDvtoU7INmE2K7ZhTsg2YTYrtmFOyApIEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBLSEFIIFdJVEggTUVFTSBGSU5BTCBGT1JNCitGRDg2O0ZEODY7RkQ4NjswNjQ0IDA2MkUgMDY0NTswNjQ0IDA2MkUgMDY0NTsgIyAo77aGOyDvtoY7IO+2hjsg2YTYrtmFOyDZhNiu2YU7ICkgQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEtIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkQ4NztGRDg3O0ZEODc7MDY0NCAwNjQ1IDA2MkQ7MDY0NCAwNjQ1IDA2MkQ7ICMgKO+2hzsg77aHOyDvtoc7INmE2YXYrTsg2YTZhditOyApIEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIFdJVEggSEFIIEZJTkFMIEZPUk0KK0ZEODg7RkQ4ODtGRDg4OzA2NDQgMDY0NSAwNjJEOzA2NDQgMDY0NSAwNjJEOyAjICjvtog7IO+2iDsg77aIOyDZhNmF2K07INmE2YXYrTsgKSBBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZEODk7RkQ4OTtGRDg5OzA2NDUgMDYyRCAwNjJDOzA2NDUgMDYyRCAwNjJDOyAjICjvtok7IO+2iTsg77aJOyDZhdit2Kw7INmF2K3YrDsgKSBBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEhBSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNCitGRDhBO0ZEOEE7RkQ4QTswNjQ1IDA2MkQgMDY0NTswNjQ1IDA2MkQgMDY0NTsgIyAo77aKOyDvtoo7IO+2ijsg2YXYrdmFOyDZhdit2YU7ICkgQVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkQ4QjtGRDhCO0ZEOEI7MDY0NSAwNjJEIDA2NEE7MDY0NSAwNjJEIDA2NEE7ICMgKO+2izsg77aLOyDvtos7INmF2K3Zijsg2YXYrdmKOyApIEFSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEOEM7RkQ4QztGRDhDOzA2NDUgMDYyQyAwNjJEOzA2NDUgMDYyQyAwNjJEOyAjICjvtow7IO+2jDsg77aMOyDZhdis2K07INmF2KzYrTsgKSBBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEpFRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNCitGRDhEO0ZEOEQ7RkQ4RDswNjQ1IDA2MkMgMDY0NTswNjQ1IDA2MkMgMDY0NTsgIyAo77aNOyDvto07IO+2jTsg2YXYrNmFOyDZhdis2YU7ICkgQVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBKRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZEOEU7RkQ4RTtGRDhFOzA2NDUgMDYyRSAwNjJDOzA2NDUgMDYyRSAwNjJDOyAjICjvto47IO+2jjsg77aOOyDZhdiu2Kw7INmF2K7YrDsgKSBBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEtIQUggV0lUSCBKRUVNIElOSVRJQUwgRk9STQorRkQ4RjtGRDhGO0ZEOEY7MDY0NSAwNjJFIDA2NDU7MDY0NSAwNjJFIDA2NDU7ICMgKO+2jzsg77aPOyDvto87INmF2K7ZhTsg2YXYrtmFOyApIEFSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGRDkyO0ZEOTI7RkQ5MjswNjQ1IDA2MkMgMDYyRTswNjQ1IDA2MkMgMDYyRTsgIyAo77aSOyDvtpI7IO+2kjsg2YXYrNiuOyDZhdis2K47ICkgQVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBKRUVNIFdJVEggS0hBSCBJTklUSUFMIEZPUk0KK0ZEOTM7RkQ5MztGRDkzOzA2NDcgMDY0NSAwNjJDOzA2NDcgMDY0NSAwNjJDOyAjICjvtpM7IO+2kzsg77aTOyDZh9mF2Kw7INmH2YXYrDsgKSBBUkFCSUMgTElHQVRVUkUgSEVIIFdJVEggTUVFTSBXSVRIIEpFRU0gSU5JVElBTCBGT1JNCitGRDk0O0ZEOTQ7RkQ5NDswNjQ3IDA2NDUgMDY0NTswNjQ3IDA2NDUgMDY0NTsgIyAo77aUOyDvtpQ7IO+2lDsg2YfZhdmFOyDZh9mF2YU7ICkgQVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkQ5NTtGRDk1O0ZEOTU7MDY0NiAwNjJEIDA2NDU7MDY0NiAwNjJEIDA2NDU7ICMgKO+2lTsg77aVOyDvtpU7INmG2K3ZhTsg2YbYrdmFOyApIEFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZEOTY7RkQ5NjtGRDk2OzA2NDYgMDYyRCAwNjQ5OzA2NDYgMDYyRCAwNjQ5OyAjICjvtpY7IO+2ljsg77aWOyDZhtit2Yk7INmG2K3ZiTsgKSBBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEhBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGRDk3O0ZEOTc7RkQ5NzswNjQ2IDA2MkMgMDY0NTswNjQ2IDA2MkMgMDY0NTsgIyAo77aXOyDvtpc7IO+2lzsg2YbYrNmFOyDZhtis2YU7ICkgQVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBKRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNCitGRDk4O0ZEOTg7RkQ5ODswNjQ2IDA2MkMgMDY0NTswNjQ2IDA2MkMgMDY0NTsgIyAo77aYOyDvtpg7IO+2mDsg2YbYrNmFOyDZhtis2YU7ICkgQVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBKRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZEOTk7RkQ5OTtGRDk5OzA2NDYgMDYyQyAwNjQ5OzA2NDYgMDYyQyAwNjQ5OyAjICjvtpk7IO+2mTsg77aZOyDZhtis2Yk7INmG2KzZiTsgKSBBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkQ5QTtGRDlBO0ZEOUE7MDY0NiAwNjQ1IDA2NEE7MDY0NiAwNjQ1IDA2NEE7ICMgKO+2mjsg77aaOyDvtpo7INmG2YXZijsg2YbZhdmKOyApIEFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNCitGRDlCO0ZEOUI7RkQ5QjswNjQ2IDA2NDUgMDY0OTswNjQ2IDA2NDUgMDY0OTsgIyAo77abOyDvtps7IO+2mzsg2YbZhdmJOyDZhtmF2Yk7ICkgQVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBNRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZEOUM7RkQ5QztGRDlDOzA2NEEgMDY0NSAwNjQ1OzA2NEEgMDY0NSAwNjQ1OyAjICjvtpw7IO+2nDsg77acOyDZitmF2YU7INmK2YXZhTsgKSBBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STQorRkQ5RDtGRDlEO0ZEOUQ7MDY0QSAwNjQ1IDA2NDU7MDY0QSAwNjQ1IDA2NDU7ICMgKO+2nTsg77adOyDvtp07INmK2YXZhTsg2YrZhdmFOyApIEFSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZEOUU7RkQ5RTtGRDlFOzA2MjggMDYyRSAwNjRBOzA2MjggMDYyRSAwNjRBOyAjICjvtp47IO+2njsg77aeOyDYqNiu2Yo7INio2K7ZijsgKSBBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggS0hBSCBXSVRIIFlFSCBGSU5BTCBGT1JNCitGRDlGO0ZEOUY7RkQ5RjswNjJBIDA2MkMgMDY0QTswNjJBIDA2MkMgMDY0QTsgIyAo77afOyDvtp87IO+2nzsg2KrYrNmKOyDYqtis2Yo7ICkgQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STQorRkRBMDtGREEwO0ZEQTA7MDYyQSAwNjJDIDA2NDk7MDYyQSAwNjJDIDA2NDk7ICMgKO+2oDsg77agOyDvtqA7INiq2KzZiTsg2KrYrNmJOyApIEFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBKRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZEQTE7RkRBMTtGREExOzA2MkEgMDYyRSAwNjRBOzA2MkEgMDYyRSAwNjRBOyAjICjvtqE7IO+2oTsg77ahOyDYqtiu2Yo7INiq2K7ZijsgKSBBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggS0hBSCBXSVRIIFlFSCBGSU5BTCBGT1JNCitGREEyO0ZEQTI7RkRBMjswNjJBIDA2MkUgMDY0OTswNjJBIDA2MkUgMDY0OTsgIyAo77aiOyDvtqI7IO+2ojsg2KrYrtmJOyDYqtiu2Yk7ICkgQVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEtIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkRBMztGREEzO0ZEQTM7MDYyQSAwNjQ1IDA2NEE7MDYyQSAwNjQ1IDA2NEE7ICMgKO+2ozsg77ajOyDvtqM7INiq2YXZijsg2KrZhdmKOyApIEFSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEQTQ7RkRBNDtGREE0OzA2MkEgMDY0NSAwNjQ5OzA2MkEgMDY0NSAwNjQ5OyAjICjvtqQ7IO+2pDsg77akOyDYqtmF2Yk7INiq2YXZiTsgKSBBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGREE1O0ZEQTU7RkRBNTswNjJDIDA2NDUgMDY0QTswNjJDIDA2NDUgMDY0QTsgIyAo77alOyDvtqU7IO+2pTsg2KzZhdmKOyDYrNmF2Yo7ICkgQVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEQTY7RkRBNjtGREE2OzA2MkMgMDYyRCAwNjQ5OzA2MkMgMDYyRCAwNjQ5OyAjICjvtqY7IO+2pjsg77amOyDYrNit2Yk7INis2K3ZiTsgKSBBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIEhBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNCitGREE3O0ZEQTc7RkRBNzswNjJDIDA2NDUgMDY0OTswNjJDIDA2NDUgMDY0OTsgIyAo77anOyDvtqc7IO+2pzsg2KzZhdmJOyDYrNmF2Yk7ICkgQVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBNRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZEQTg7RkRBODtGREE4OzA2MzMgMDYyRSAwNjQ5OzA2MzMgMDYyRSAwNjQ5OyAjICjvtqg7IO+2qDsg77aoOyDYs9iu2Yk7INiz2K7ZiTsgKSBBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEtIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STQorRkRBOTtGREE5O0ZEQTk7MDYzNSAwNjJEIDA2NEE7MDYzNSAwNjJEIDA2NEE7ICMgKO+2qTsg77apOyDvtqk7INi12K3Zijsg2LXYrdmKOyApIEFSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STQorRkRBQTtGREFBO0ZEQUE7MDYzNCAwNjJEIDA2NEE7MDYzNCAwNjJEIDA2NEE7ICMgKO+2qjsg77aqOyDvtqo7INi02K3Zijsg2LTYrdmKOyApIEFSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNCitGREFCO0ZEQUI7RkRBQjswNjM2IDA2MkQgMDY0QTswNjM2IDA2MkQgMDY0QTsgIyAo77arOyDvtqs7IO+2qzsg2LbYrdmKOyDYttit2Yo7ICkgQVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNCitGREFDO0ZEQUM7RkRBQzswNjQ0IDA2MkMgMDY0QTswNjQ0IDA2MkMgMDY0QTsgIyAo77asOyDvtqw7IO+2rDsg2YTYrNmKOyDZhNis2Yo7ICkgQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STQorRkRBRDtGREFEO0ZEQUQ7MDY0NCAwNjQ1IDA2NEE7MDY0NCAwNjQ1IDA2NEE7ICMgKO+2rTsg77atOyDvtq07INmE2YXZijsg2YTZhdmKOyApIEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEQUU7RkRBRTtGREFFOzA2NEEgMDYyRCAwNjRBOzA2NEEgMDYyRCAwNjRBOyAjICjvtq47IO+2rjsg77auOyDZitit2Yo7INmK2K3ZijsgKSBBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEQUY7RkRBRjtGREFGOzA2NEEgMDYyQyAwNjRBOzA2NEEgMDYyQyAwNjRBOyAjICjvtq87IO+2rzsg77avOyDZitis2Yo7INmK2KzZijsgKSBBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNCitGREIwO0ZEQjA7RkRCMDswNjRBIDA2NDUgMDY0QTswNjRBIDA2NDUgMDY0QTsgIyAo77awOyDvtrA7IO+2sDsg2YrZhdmKOyDZitmF2Yo7ICkgQVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STQorRkRCMTtGREIxO0ZEQjE7MDY0NSAwNjQ1IDA2NEE7MDY0NSAwNjQ1IDA2NEE7ICMgKO+2sTsg77axOyDvtrE7INmF2YXZijsg2YXZhdmKOyApIEFSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNCitGREIyO0ZEQjI7RkRCMjswNjQyIDA2NDUgMDY0QTswNjQyIDA2NDUgMDY0QTsgIyAo77ayOyDvtrI7IO+2sjsg2YLZhdmKOyDZgtmF2Yo7ICkgQVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STQorRkRCMztGREIzO0ZEQjM7MDY0NiAwNjJEIDA2NEE7MDY0NiAwNjJEIDA2NEE7ICMgKO+2szsg77azOyDvtrM7INmG2K3Zijsg2YbYrdmKOyApIEFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZEQjQ7RkRCNDtGREI0OzA2NDIgMDY0NSAwNjJEOzA2NDIgMDY0NSAwNjJEOyAjICjvtrQ7IO+2tDsg77a0OyDZgtmF2K07INmC2YXYrTsgKSBBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZEQjU7RkRCNTtGREI1OzA2NDQgMDYyRCAwNjQ1OzA2NDQgMDYyRCAwNjQ1OyAjICjvtrU7IO+2tTsg77a1OyDZhNit2YU7INmE2K3ZhTsgKSBBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZEQjY7RkRCNjtGREI2OzA2MzkgMDY0NSAwNjRBOzA2MzkgMDY0NSAwNjRBOyAjICjvtrY7IO+2tjsg77a2OyDYudmF2Yo7INi52YXZijsgKSBBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNCitGREI3O0ZEQjc7RkRCNzswNjQzIDA2NDUgMDY0QTswNjQzIDA2NDUgMDY0QTsgIyAo77a3OyDvtrc7IO+2tzsg2YPZhdmKOyDZg9mF2Yo7ICkgQVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STQorRkRCODtGREI4O0ZEQjg7MDY0NiAwNjJDIDA2MkQ7MDY0NiAwNjJDIDA2MkQ7ICMgKO+2uDsg77a4OyDvtrg7INmG2KzYrTsg2YbYrNitOyApIEFSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSkVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk0KK0ZEQjk7RkRCOTtGREI5OzA2NDUgMDYyRSAwNjRBOzA2NDUgMDYyRSAwNjRBOyAjICjvtrk7IO+2uTsg77a5OyDZhdiu2Yo7INmF2K7ZijsgKSBBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEtIQUggV0lUSCBZRUggRklOQUwgRk9STQorRkRCQTtGREJBO0ZEQkE7MDY0NCAwNjJDIDA2NDU7MDY0NCAwNjJDIDA2NDU7ICMgKO+2ujsg77a6OyDvtro7INmE2KzZhTsg2YTYrNmFOyApIEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBKRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZEQkI7RkRCQjtGREJCOzA2NDMgMDY0NSAwNjQ1OzA2NDMgMDY0NSAwNjQ1OyAjICjvtrs7IO+2uzsg77a7OyDZg9mF2YU7INmD2YXZhTsgKSBBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STQorRkRCQztGREJDO0ZEQkM7MDY0NCAwNjJDIDA2NDU7MDY0NCAwNjJDIDA2NDU7ICMgKO+2vDsg77a8OyDvtrw7INmE2KzZhTsg2YTYrNmFOyApIEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBKRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNCitGREJEO0ZEQkQ7RkRCRDswNjQ2IDA2MkMgMDYyRDswNjQ2IDA2MkMgMDYyRDsgIyAo77a9OyDvtr07IO+2vTsg2YbYrNitOyDZhtis2K07ICkgQVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBKRUVNIFdJVEggSEFIIEZJTkFMIEZPUk0KK0ZEQkU7RkRCRTtGREJFOzA2MkMgMDYyRCAwNjRBOzA2MkMgMDYyRCAwNjRBOyAjICjvtr47IO+2vjsg77a+OyDYrNit2Yo7INis2K3ZijsgKSBBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNCitGREJGO0ZEQkY7RkRCRjswNjJEIDA2MkMgMDY0QTswNjJEIDA2MkMgMDY0QTsgIyAo77a/OyDvtr87IO+2vzsg2K3YrNmKOyDYrdis2Yo7ICkgQVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STQorRkRDMDtGREMwO0ZEQzA7MDY0NSAwNjJDIDA2NEE7MDY0NSAwNjJDIDA2NEE7ICMgKO+3gDsg77eAOyDvt4A7INmF2KzZijsg2YXYrNmKOyApIEFSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNCitGREMxO0ZEQzE7RkRDMTswNjQxIDA2NDUgMDY0QTswNjQxIDA2NDUgMDY0QTsgIyAo77eBOyDvt4E7IO+3gTsg2YHZhdmKOyDZgdmF2Yo7ICkgQVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STQorRkRDMjtGREMyO0ZEQzI7MDYyOCAwNjJEIDA2NEE7MDYyOCAwNjJEIDA2NEE7ICMgKO+3gjsg77eCOyDvt4I7INio2K3Zijsg2KjYrdmKOyApIEFSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STQorRkRDMztGREMzO0ZEQzM7MDY0MyAwNjQ1IDA2NDU7MDY0MyAwNjQ1IDA2NDU7ICMgKO+3gzsg77eDOyDvt4M7INmD2YXZhTsg2YPZhdmFOyApIEFSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk0KK0ZEQzQ7RkRDNDtGREM0OzA2MzkgMDYyQyAwNjQ1OzA2MzkgMDYyQyAwNjQ1OyAjICjvt4Q7IO+3hDsg77eEOyDYudis2YU7INi52KzZhTsgKSBBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggSkVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNCitGREM1O0ZEQzU7RkRDNTswNjM1IDA2NDUgMDY0NTswNjM1IDA2NDUgMDY0NTsgIyAo77eFOyDvt4U7IO+3hTsg2LXZhdmFOyDYtdmF2YU7ICkgQVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STQorRkRDNjtGREM2O0ZEQzY7MDYzMyAwNjJFIDA2NEE7MDYzMyAwNjJFIDA2NEE7ICMgKO+3hjsg77eGOyDvt4Y7INiz2K7Zijsg2LPYrtmKOyApIEFSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggS0hBSCBXSVRIIFlFSCBGSU5BTCBGT1JNCitGREM3O0ZEQzc7RkRDNzswNjQ2IDA2MkMgMDY0QTswNjQ2IDA2MkMgMDY0QTsgIyAo77eHOyDvt4c7IO+3hzsg2YbYrNmKOyDZhtis2Yo7ICkgQVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBKRUVNIFdJVEggWUVIIEZJTkFMIEZPUk0KK0ZERjA7RkRGMDtGREYwOzA2MzUgMDY0NCAwNkQyOzA2MzUgMDY0NCAwNkQyOyAjICjvt7A7IO+3sDsg77ewOyDYtdmE25I7INi12YTbkjsgKSBBUkFCSUMgTElHQVRVUkUgU0FMTEEgVVNFRCBBUyBLT1JBTklDIFNUT1AgU0lHTiBJU09MQVRFRCBGT1JNCitGREYxO0ZERjE7RkRGMTswNjQyIDA2NDQgMDZEMjswNjQyIDA2NDQgMDZEMjsgIyAo77exOyDvt7E7IO+3sTsg2YLZhNuSOyDZgtmE25I7ICkgQVJBQklDIExJR0FUVVJFIFFBTEEgVVNFRCBBUyBLT1JBTklDIFNUT1AgU0lHTiBJU09MQVRFRCBGT1JNCitGREYyO0ZERjI7RkRGMjswNjI3IDA2NDQgMDY0NCAwNjQ3OzA2MjcgMDY0NCAwNjQ0IDA2NDc7ICMgKO+3sjsg77eyOyDvt7I7INin2YTZhNmHOyDYp9mE2YTZhzsgKSBBUkFCSUMgTElHQVRVUkUgQUxMQUggSVNPTEFURUQgRk9STQorRkRGMztGREYzO0ZERjM7MDYyNyAwNjQzIDA2MjggMDYzMTswNjI3IDA2NDMgMDYyOCAwNjMxOyAjICjvt7M7IO+3szsg77ezOyDYp9mD2KjYsTsg2KfZg9io2LE7ICkgQVJBQklDIExJR0FUVVJFIEFLQkFSIElTT0xBVEVEIEZPUk0KK0ZERjQ7RkRGNDtGREY0OzA2NDUgMDYyRCAwNjQ1IDA2MkY7MDY0NSAwNjJEIDA2NDUgMDYyRjsgIyAo77e0OyDvt7Q7IO+3tDsg2YXYrdmF2K87INmF2K3ZhdivOyApIEFSQUJJQyBMSUdBVFVSRSBNT0hBTU1BRCBJU09MQVRFRCBGT1JNCitGREY1O0ZERjU7RkRGNTswNjM1IDA2NDQgMDYzOSAwNjQ1OzA2MzUgMDY0NCAwNjM5IDA2NDU7ICMgKO+3tTsg77e1OyDvt7U7INi12YTYudmFOyDYtdmE2LnZhTsgKSBBUkFCSUMgTElHQVRVUkUgU0FMQU0gSVNPTEFURUQgRk9STQorRkRGNjtGREY2O0ZERjY7MDYzMSAwNjMzIDA2NDggMDY0NDswNjMxIDA2MzMgMDY0OCAwNjQ0OyAjICjvt7Y7IO+3tjsg77e2OyDYsdiz2YjZhDsg2LHYs9mI2YQ7ICkgQVJBQklDIExJR0FUVVJFIFJBU09VTCBJU09MQVRFRCBGT1JNCitGREY3O0ZERjc7RkRGNzswNjM5IDA2NDQgMDY0QSAwNjQ3OzA2MzkgMDY0NCAwNjRBIDA2NDc7ICMgKO+3tzsg77e3OyDvt7c7INi52YTZitmHOyDYudmE2YrZhzsgKSBBUkFCSUMgTElHQVRVUkUgQUxBWUhFIElTT0xBVEVEIEZPUk0KK0ZERjg7RkRGODtGREY4OzA2NDggMDYzMyAwNjQ0IDA2NDU7MDY0OCAwNjMzIDA2NDQgMDY0NTsgIyAo77e4OyDvt7g7IO+3uDsg2YjYs9mE2YU7INmI2LPZhNmFOyApIEFSQUJJQyBMSUdBVFVSRSBXQVNBTExBTSBJU09MQVRFRCBGT1JNCitGREY5O0ZERjk7RkRGOTswNjM1IDA2NDQgMDY0OTswNjM1IDA2NDQgMDY0OTsgIyAo77e5OyDvt7k7IO+3uTsg2LXZhNmJOyDYtdmE2Yk7ICkgQVJBQklDIExJR0FUVVJFIFNBTExBIElTT0xBVEVEIEZPUk0KK0ZERkE7RkRGQTtGREZBOzA2MzUgMDY0NCAwNjQ5IDAwMjAgMDYyNyAwNjQ0IDA2NDQgMDY0NyAwMDIwIDA2MzkgMDY0NCAwNjRBIDA2NDcgMDAyMCAwNjQ4IDA2MzMgMDY0NCAwNjQ1OzA2MzUgMDY0NCAwNjQ5IDAwMjAgMDYyNyAwNjQ0IDA2NDQgMDY0NyAwMDIwIDA2MzkgMDY0NCAwNjRBIDA2NDcgMDAyMCAwNjQ4IDA2MzMgMDY0NCAwNjQ1OyAjICjvt7o7IO+3ujsg77e6OyDYtdmE2Ykg2KfZhNmE2Ycg2LnZhNmK2Ycg2YjYs9mE2YU7INi12YTZiSDYp9mE2YTZhyDYudmE2YrZhyDZiNiz2YTZhTsgKSBBUkFCSUMgTElHQVRVUkUgU0FMTEFMTEFIT1UgQUxBWUhFIFdBU0FMTEFNCitGREZCO0ZERkI7RkRGQjswNjJDIDA2NDQgMDAyMCAwNjJDIDA2NDQgMDYyNyAwNjQ0IDA2NDc7MDYyQyAwNjQ0IDAwMjAgMDYyQyAwNjQ0IDA2MjcgMDY0NCAwNjQ3OyAjICjvt7s7IO+3uzsg77e7OyDYrNmEINis2YTYp9mE2Yc7INis2YQg2KzZhNin2YTZhzsgKSBBUkFCSUMgTElHQVRVUkUgSkFMTEFKQUxBTE9VSE9VCitGRTMwO0ZFMzA7RkUzMDswMDJFIDAwMkU7MDAyRSAwMDJFOyAjICjvuLA7IO+4sDsg77iwOyAuLjsgLi47ICkgUFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFRXTyBET1QgTEVBREVSCitGRTMxO0ZFMzE7RkUzMTsyMDE0OzIwMTQ7ICMgKO+4sTsg77ixOyDvuLE7IOKAlDsg4oCUOyApIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBFTSBEQVNICitGRTMyO0ZFMzI7RkUzMjsyMDEzOzIwMTM7ICMgKO+4sjsg77iyOyDvuLI7IOKAkzsg4oCTOyApIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBFTiBEQVNICitGRTMzO0ZFMzM7RkUzMzswMDVGOzAwNUY7ICMgKO+4szsg77izOyDvuLM7IF87IF87ICkgUFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExPVyBMSU5FCitGRTM0O0ZFMzQ7RkUzNDswMDVGOzAwNUY7ICMgKO+4tDsg77i0OyDvuLQ7IF87IF87ICkgUFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFdBVlkgTE9XIExJTkUKK0ZFMzU7RkUzNTtGRTM1OzAwMjg7MDAyODsgIyAo77i1OyDvuLU7IO+4tTsgKDsgKDsgKSBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBQQVJFTlRIRVNJUworRkUzNjtGRTM2O0ZFMzY7MDAyOTswMDI5OyAjICjvuLY7IO+4tjsg77i2OyApOyApOyApIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBQQVJFTlRIRVNJUworRkUzNztGRTM3O0ZFMzc7MDA3QjswMDdCOyAjICjvuLc7IO+4tzsg77i3OyB7OyB7OyApIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIENVUkxZIEJSQUNLRVQKK0ZFMzg7RkUzODtGRTM4OzAwN0Q7MDA3RDsgIyAo77i4OyDvuLg7IO+4uDsgfTsgfTsgKSBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgQ1VSTFkgQlJBQ0tFVAorRkUzOTtGRTM5O0ZFMzk7MzAxNDszMDE0OyAjICjvuLk7IO+4uTsg77i5OyDjgJQ7IOOAlDsgKSBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUCitGRTNBO0ZFM0E7RkUzQTszMDE1OzMwMTU7ICMgKO+4ujsg77i6OyDvuLo7IOOAlTsg44CVOyApIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUCitGRTNCO0ZFM0I7RkUzQjszMDEwOzMwMTA7ICMgKO+4uzsg77i7OyDvuLs7IOOAkDsg44CQOyApIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIEJMQUNLIExFTlRJQ1VMQVIgQlJBQ0tFVAorRkUzQztGRTNDO0ZFM0M7MzAxMTszMDExOyAjICjvuLw7IO+4vDsg77i8OyDjgJE7IOOAkTsgKSBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUCitGRTNEO0ZFM0Q7RkUzRDszMDBBOzMwMEE7ICMgKO+4vTsg77i9OyDvuL07IOOAijsg44CKOyApIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIERPVUJMRSBBTkdMRSBCUkFDS0VUCitGRTNFO0ZFM0U7RkUzRTszMDBCOzMwMEI7ICMgKO+4vjsg77i+OyDvuL47IOOAizsg44CLOyApIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBET1VCTEUgQU5HTEUgQlJBQ0tFVAorRkUzRjtGRTNGO0ZFM0Y7MzAwODszMDA4OyAjICjvuL87IO+4vzsg77i/OyDjgIg7IOOAiDsgKSBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBBTkdMRSBCUkFDS0VUCitGRTQwO0ZFNDA7RkU0MDszMDA5OzMwMDk7ICMgKO+5gDsg77mAOyDvuYA7IOOAiTsg44CJOyApIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBBTkdMRSBCUkFDS0VUCitGRTQxO0ZFNDE7RkU0MTszMDBDOzMwMEM7ICMgKO+5gTsg77mBOyDvuYE7IOOAjDsg44CMOyApIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIENPUk5FUiBCUkFDS0VUCitGRTQyO0ZFNDI7RkU0MjszMDBEOzMwMEQ7ICMgKO+5gjsg77mCOyDvuYI7IOOAjTsg44CNOyApIFBSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBDT1JORVIgQlJBQ0tFVAorRkU0MztGRTQzO0ZFNDM7MzAwRTszMDBFOyAjICjvuYM7IO+5gzsg77mDOyDjgI47IOOAjjsgKSBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBXSElURSBDT1JORVIgQlJBQ0tFVAorRkU0NDtGRTQ0O0ZFNDQ7MzAwRjszMDBGOyAjICjvuYQ7IO+5hDsg77mEOyDjgI87IOOAjzsgKSBQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgV0hJVEUgQ09STkVSIEJSQUNLRVQKK0ZFNDk7RkU0OTtGRTQ5OzAwMjAgMDMwNTswMDIwIDAzMDU7ICMgKO+5iTsg77mJOyDvuYk7ICDil4zMhTsgIOKXjMyFOyApIERBU0hFRCBPVkVSTElORQorRkU0QTtGRTRBO0ZFNEE7MDAyMCAwMzA1OzAwMjAgMDMwNTsgIyAo77mKOyDvuYo7IO+5ijsgIOKXjMyFOyAg4peMzIU7ICkgQ0VOVFJFTElORSBPVkVSTElORQorRkU0QjtGRTRCO0ZFNEI7MDAyMCAwMzA1OzAwMjAgMDMwNTsgIyAo77mLOyDvuYs7IO+5izsgIOKXjMyFOyAg4peMzIU7ICkgV0FWWSBPVkVSTElORQorRkU0QztGRTRDO0ZFNEM7MDAyMCAwMzA1OzAwMjAgMDMwNTsgIyAo77mMOyDvuYw7IO+5jDsgIOKXjMyFOyAg4peMzIU7ICkgRE9VQkxFIFdBVlkgT1ZFUkxJTkUKK0ZFNEQ7RkU0RDtGRTREOzAwNUY7MDA1RjsgIyAo77mNOyDvuY07IO+5jTsgXzsgXzsgKSBEQVNIRUQgTE9XIExJTkUKK0ZFNEU7RkU0RTtGRTRFOzAwNUY7MDA1RjsgIyAo77mOOyDvuY47IO+5jjsgXzsgXzsgKSBDRU5UUkVMSU5FIExPVyBMSU5FCitGRTRGO0ZFNEY7RkU0RjswMDVGOzAwNUY7ICMgKO+5jzsg77mPOyDvuY87IF87IF87ICkgV0FWWSBMT1cgTElORQorRkU1MDtGRTUwO0ZFNTA7MDAyQzswMDJDOyAjICjvuZA7IO+5kDsg77mQOyAsOyAsOyApIFNNQUxMIENPTU1BCitGRTUxO0ZFNTE7RkU1MTszMDAxOzMwMDE7ICMgKO+5kTsg77mROyDvuZE7IOOAgTsg44CBOyApIFNNQUxMIElERU9HUkFQSElDIENPTU1BCitGRTUyO0ZFNTI7RkU1MjswMDJFOzAwMkU7ICMgKO+5kjsg77mSOyDvuZI7IC47IC47ICkgU01BTEwgRlVMTCBTVE9QCitGRTU0O0ZFNTQ7RkU1NDswMDNCOzAwM0I7ICMgKO+5lDsg77mUOyDvuZQ7IDs7IDs7ICkgU01BTEwgU0VNSUNPTE9OCitGRTU1O0ZFNTU7RkU1NTswMDNBOzAwM0E7ICMgKO+5lTsg77mVOyDvuZU7IDo7IDo7ICkgU01BTEwgQ09MT04KK0ZFNTY7RkU1NjtGRTU2OzAwM0Y7MDAzRjsgIyAo77mWOyDvuZY7IO+5ljsgPzsgPzsgKSBTTUFMTCBRVUVTVElPTiBNQVJLCitGRTU3O0ZFNTc7RkU1NzswMDIxOzAwMjE7ICMgKO+5lzsg77mXOyDvuZc7ICE7ICE7ICkgU01BTEwgRVhDTEFNQVRJT04gTUFSSworRkU1ODtGRTU4O0ZFNTg7MjAxNDsyMDE0OyAjICjvuZg7IO+5mDsg77mYOyDigJQ7IOKAlDsgKSBTTUFMTCBFTSBEQVNICitGRTU5O0ZFNTk7RkU1OTswMDI4OzAwMjg7ICMgKO+5mTsg77mZOyDvuZk7ICg7ICg7ICkgU01BTEwgTEVGVCBQQVJFTlRIRVNJUworRkU1QTtGRTVBO0ZFNUE7MDAyOTswMDI5OyAjICjvuZo7IO+5mjsg77maOyApOyApOyApIFNNQUxMIFJJR0hUIFBBUkVOVEhFU0lTCitGRTVCO0ZFNUI7RkU1QjswMDdCOzAwN0I7ICMgKO+5mzsg77mbOyDvuZs7IHs7IHs7ICkgU01BTEwgTEVGVCBDVVJMWSBCUkFDS0VUCitGRTVDO0ZFNUM7RkU1QzswMDdEOzAwN0Q7ICMgKO+5nDsg77mcOyDvuZw7IH07IH07ICkgU01BTEwgUklHSFQgQ1VSTFkgQlJBQ0tFVAorRkU1RDtGRTVEO0ZFNUQ7MzAxNDszMDE0OyAjICjvuZ07IO+5nTsg77mdOyDjgJQ7IOOAlDsgKSBTTUFMTCBMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQKK0ZFNUU7RkU1RTtGRTVFOzMwMTU7MzAxNTsgIyAo77meOyDvuZ47IO+5njsg44CVOyDjgJU7ICkgU01BTEwgUklHSFQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVAorRkU1RjtGRTVGO0ZFNUY7MDAyMzswMDIzOyAjICjvuZ87IO+5nzsg77mfOyAjOyAjOyApIFNNQUxMIE5VTUJFUiBTSUdOCitGRTYwO0ZFNjA7RkU2MDswMDI2OzAwMjY7ICMgKO+5oDsg77mgOyDvuaA7ICY7ICY7ICkgU01BTEwgQU1QRVJTQU5ECitGRTYxO0ZFNjE7RkU2MTswMDJBOzAwMkE7ICMgKO+5oTsg77mhOyDvuaE7ICo7ICo7ICkgU01BTEwgQVNURVJJU0sKK0ZFNjI7RkU2MjtGRTYyOzAwMkI7MDAyQjsgIyAo77miOyDvuaI7IO+5ojsgKzsgKzsgKSBTTUFMTCBQTFVTIFNJR04KK0ZFNjM7RkU2MztGRTYzOzAwMkQ7MDAyRDsgIyAo77mjOyDvuaM7IO+5ozsgLTsgLTsgKSBTTUFMTCBIWVBIRU4tTUlOVVMKK0ZFNjQ7RkU2NDtGRTY0OzAwM0M7MDAzQzsgIyAo77mkOyDvuaQ7IO+5pDsgPDsgPDsgKSBTTUFMTCBMRVNTLVRIQU4gU0lHTgorRkU2NTtGRTY1O0ZFNjU7MDAzRTswMDNFOyAjICjvuaU7IO+5pTsg77mlOyA+OyA+OyApIFNNQUxMIEdSRUFURVItVEhBTiBTSUdOCitGRTY2O0ZFNjY7RkU2NjswMDNEOzAwM0Q7ICMgKO+5pjsg77mmOyDvuaY7ID07ID07ICkgU01BTEwgRVFVQUxTIFNJR04KK0ZFNjg7RkU2ODtGRTY4OzAwNUM7MDA1QzsgIyAo77moOyDvuag7IO+5qDsgXDsgXDsgKSBTTUFMTCBSRVZFUlNFIFNPTElEVVMKK0ZFNjk7RkU2OTtGRTY5OzAwMjQ7MDAyNDsgIyAo77mpOyDvuak7IO+5qTsgJDsgJDsgKSBTTUFMTCBET0xMQVIgU0lHTgorRkU2QTtGRTZBO0ZFNkE7MDAyNTswMDI1OyAjICjvuao7IO+5qjsg77mqOyAlOyAlOyApIFNNQUxMIFBFUkNFTlQgU0lHTgorRkU2QjtGRTZCO0ZFNkI7MDA0MDswMDQwOyAjICjvuas7IO+5qzsg77mrOyBAOyBAOyApIFNNQUxMIENPTU1FUkNJQUwgQVQKK0ZFNzA7RkU3MDtGRTcwOzAwMjAgMDY0QjswMDIwIDA2NEI7ICMgKO+5sDsg77mwOyDvubA7ICDil4zZizsgIOKXjNmLOyApIEFSQUJJQyBGQVRIQVRBTiBJU09MQVRFRCBGT1JNCitGRTcxO0ZFNzE7RkU3MTswNjQwIDA2NEI7MDY0MCAwNjRCOyAjICjvubE7IO+5sTsg77mxOyDZgOKXjNmLOyDZgOKXjNmLOyApIEFSQUJJQyBUQVRXRUVMIFdJVEggRkFUSEFUQU4gQUJPVkUKK0ZFNzI7RkU3MjtGRTcyOzAwMjAgMDY0QzswMDIwIDA2NEM7ICMgKO+5sjsg77myOyDvubI7ICDil4zZjDsgIOKXjNmMOyApIEFSQUJJQyBEQU1NQVRBTiBJU09MQVRFRCBGT1JNCitGRTc0O0ZFNzQ7RkU3NDswMDIwIDA2NEQ7MDAyMCAwNjREOyAjICjvubQ7IO+5tDsg77m0OyAg4peM2Y07ICDil4zZjTsgKSBBUkFCSUMgS0FTUkFUQU4gSVNPTEFURUQgRk9STQorRkU3NjtGRTc2O0ZFNzY7MDAyMCAwNjRFOzAwMjAgMDY0RTsgIyAo77m2OyDvubY7IO+5tjsgIOKXjNmOOyAg4peM2Y47ICkgQVJBQklDIEZBVEhBIElTT0xBVEVEIEZPUk0KK0ZFNzc7RkU3NztGRTc3OzA2NDAgMDY0RTswNjQwIDA2NEU7ICMgKO+5tzsg77m3OyDvubc7INmA4peM2Y47INmA4peM2Y47ICkgQVJBQklDIEZBVEhBIE1FRElBTCBGT1JNCitGRTc4O0ZFNzg7RkU3ODswMDIwIDA2NEY7MDAyMCAwNjRGOyAjICjvubg7IO+5uDsg77m4OyAg4peM2Y87ICDil4zZjzsgKSBBUkFCSUMgREFNTUEgSVNPTEFURUQgRk9STQorRkU3OTtGRTc5O0ZFNzk7MDY0MCAwNjRGOzA2NDAgMDY0RjsgIyAo77m5OyDvubk7IO+5uTsg2YDil4zZjzsg2YDil4zZjzsgKSBBUkFCSUMgREFNTUEgTUVESUFMIEZPUk0KK0ZFN0E7RkU3QTtGRTdBOzAwMjAgMDY1MDswMDIwIDA2NTA7ICMgKO+5ujsg77m6OyDvubo7ICDil4zZkDsgIOKXjNmQOyApIEFSQUJJQyBLQVNSQSBJU09MQVRFRCBGT1JNCitGRTdCO0ZFN0I7RkU3QjswNjQwIDA2NTA7MDY0MCAwNjUwOyAjICjvubs7IO+5uzsg77m7OyDZgOKXjNmQOyDZgOKXjNmQOyApIEFSQUJJQyBLQVNSQSBNRURJQUwgRk9STQorRkU3QztGRTdDO0ZFN0M7MDAyMCAwNjUxOzAwMjAgMDY1MTsgIyAo77m8OyDvubw7IO+5vDsgIOKXjNmROyAg4peM2ZE7ICkgQVJBQklDIFNIQUREQSBJU09MQVRFRCBGT1JNCitGRTdEO0ZFN0Q7RkU3RDswNjQwIDA2NTE7MDY0MCAwNjUxOyAjICjvub07IO+5vTsg77m9OyDZgOKXjNmROyDZgOKXjNmROyApIEFSQUJJQyBTSEFEREEgTUVESUFMIEZPUk0KK0ZFN0U7RkU3RTtGRTdFOzAwMjAgMDY1MjswMDIwIDA2NTI7ICMgKO+5vjsg77m+OyDvub47ICDil4zZkjsgIOKXjNmSOyApIEFSQUJJQyBTVUtVTiBJU09MQVRFRCBGT1JNCitGRTdGO0ZFN0Y7RkU3RjswNjQwIDA2NTI7MDY0MCAwNjUyOyAjICjvub87IO+5vzsg77m/OyDZgOKXjNmSOyDZgOKXjNmSOyApIEFSQUJJQyBTVUtVTiBNRURJQUwgRk9STQorRkU4MDtGRTgwO0ZFODA7MDYyMTswNjIxOyAjICjvuoA7IO+6gDsg77qAOyDYoTsg2KE7ICkgQVJBQklDIExFVFRFUiBIQU1aQSBJU09MQVRFRCBGT1JNCitGRTgxO0ZFODE7RkU4MTswNjIyOzA2MjcgMDY1MzsgIyAo77qBOyDvuoE7IO+6gTsg2KI7INin4peM2ZM7ICkgQVJBQklDIExFVFRFUiBBTEVGIFdJVEggTUFEREEgQUJPVkUgSVNPTEFURUQgRk9STQorRkU4MjtGRTgyO0ZFODI7MDYyMjswNjI3IDA2NTM7ICMgKO+6gjsg77qCOyDvuoI7INiiOyDYp+KXjNmTOyApIEFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIE1BRERBIEFCT1ZFIEZJTkFMIEZPUk0KK0ZFODM7RkU4MztGRTgzOzA2MjM7MDYyNyAwNjU0OyAjICjvuoM7IO+6gzsg77qDOyDYozsg2Kfil4zZlDsgKSBBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBIQU1aQSBBQk9WRSBJU09MQVRFRCBGT1JNCitGRTg0O0ZFODQ7RkU4NDswNjIzOzA2MjcgMDY1NDsgIyAo77qEOyDvuoQ7IO+6hDsg2KM7INin4peM2ZQ7ICkgQVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STQorRkU4NTtGRTg1O0ZFODU7MDYyNDswNjQ4IDA2NTQ7ICMgKO+6hTsg77qFOyDvuoU7INikOyDZiOKXjNmUOyApIEFSQUJJQyBMRVRURVIgV0FXIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STQorRkU4NjtGRTg2O0ZFODY7MDYyNDswNjQ4IDA2NTQ7ICMgKO+6hjsg77qGOyDvuoY7INikOyDZiOKXjNmUOyApIEFSQUJJQyBMRVRURVIgV0FXIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STQorRkU4NztGRTg3O0ZFODc7MDYyNTswNjI3IDA2NTU7ICMgKO+6hzsg77qHOyDvuoc7INilOyDYp+KXjNmVOyApIEFSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEJFTE9XIElTT0xBVEVEIEZPUk0KK0ZFODg7RkU4ODtGRTg4OzA2MjU7MDYyNyAwNjU1OyAjICjvuog7IO+6iDsg77qIOyDYpTsg2Kfil4zZlTsgKSBBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBIQU1aQSBCRUxPVyBGSU5BTCBGT1JNCitGRTg5O0ZFODk7RkU4OTswNjI2OzA2NEEgMDY1NDsgIyAo77qJOyDvuok7IO+6iTsg2KY7INmK4peM2ZQ7ICkgQVJBQklDIExFVFRFUiBZRUggV0lUSCBIQU1aQSBBQk9WRSBJU09MQVRFRCBGT1JNCitGRThBO0ZFOEE7RkU4QTswNjI2OzA2NEEgMDY1NDsgIyAo77qKOyDvuoo7IO+6ijsg2KY7INmK4peM2ZQ7ICkgQVJBQklDIExFVFRFUiBZRUggV0lUSCBIQU1aQSBBQk9WRSBGSU5BTCBGT1JNCitGRThCO0ZFOEI7RkU4QjswNjI2OzA2NEEgMDY1NDsgIyAo77qLOyDvuos7IO+6izsg2KY7INmK4peM2ZQ7ICkgQVJBQklDIExFVFRFUiBZRUggV0lUSCBIQU1aQSBBQk9WRSBJTklUSUFMIEZPUk0KK0ZFOEM7RkU4QztGRThDOzA2MjY7MDY0QSAwNjU0OyAjICjvuow7IO+6jDsg77qMOyDYpjsg2Yril4zZlDsgKSBBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIE1FRElBTCBGT1JNCitGRThEO0ZFOEQ7RkU4RDswNjI3OzA2Mjc7ICMgKO+6jTsg77qNOyDvuo07INinOyDYpzsgKSBBUkFCSUMgTEVUVEVSIEFMRUYgSVNPTEFURUQgRk9STQorRkU4RTtGRThFO0ZFOEU7MDYyNzswNjI3OyAjICjvuo47IO+6jjsg77qOOyDYpzsg2Kc7ICkgQVJBQklDIExFVFRFUiBBTEVGIEZJTkFMIEZPUk0KK0ZFOEY7RkU4RjtGRThGOzA2Mjg7MDYyODsgIyAo77qPOyDvuo87IO+6jzsg2Kg7INioOyApIEFSQUJJQyBMRVRURVIgQkVIIElTT0xBVEVEIEZPUk0KK0ZFOTA7RkU5MDtGRTkwOzA2Mjg7MDYyODsgIyAo77qQOyDvupA7IO+6kDsg2Kg7INioOyApIEFSQUJJQyBMRVRURVIgQkVIIEZJTkFMIEZPUk0KK0ZFOTE7RkU5MTtGRTkxOzA2Mjg7MDYyODsgIyAo77qROyDvupE7IO+6kTsg2Kg7INioOyApIEFSQUJJQyBMRVRURVIgQkVIIElOSVRJQUwgRk9STQorRkU5MjtGRTkyO0ZFOTI7MDYyODswNjI4OyAjICjvupI7IO+6kjsg77qSOyDYqDsg2Kg7ICkgQVJBQklDIExFVFRFUiBCRUggTUVESUFMIEZPUk0KK0ZFOTM7RkU5MztGRTkzOzA2Mjk7MDYyOTsgIyAo77qTOyDvupM7IO+6kzsg2Kk7INipOyApIEFSQUJJQyBMRVRURVIgVEVIIE1BUkJVVEEgSVNPTEFURUQgRk9STQorRkU5NDtGRTk0O0ZFOTQ7MDYyOTswNjI5OyAjICjvupQ7IO+6lDsg77qUOyDYqTsg2Kk7ICkgQVJBQklDIExFVFRFUiBURUggTUFSQlVUQSBGSU5BTCBGT1JNCitGRTk1O0ZFOTU7RkU5NTswNjJBOzA2MkE7ICMgKO+6lTsg77qVOyDvupU7INiqOyDYqjsgKSBBUkFCSUMgTEVUVEVSIFRFSCBJU09MQVRFRCBGT1JNCitGRTk2O0ZFOTY7RkU5NjswNjJBOzA2MkE7ICMgKO+6ljsg77qWOyDvupY7INiqOyDYqjsgKSBBUkFCSUMgTEVUVEVSIFRFSCBGSU5BTCBGT1JNCitGRTk3O0ZFOTc7RkU5NzswNjJBOzA2MkE7ICMgKO+6lzsg77qXOyDvupc7INiqOyDYqjsgKSBBUkFCSUMgTEVUVEVSIFRFSCBJTklUSUFMIEZPUk0KK0ZFOTg7RkU5ODtGRTk4OzA2MkE7MDYyQTsgIyAo77qYOyDvupg7IO+6mDsg2Ko7INiqOyApIEFSQUJJQyBMRVRURVIgVEVIIE1FRElBTCBGT1JNCitGRTk5O0ZFOTk7RkU5OTswNjJCOzA2MkI7ICMgKO+6mTsg77qZOyDvupk7INirOyDYqzsgKSBBUkFCSUMgTEVUVEVSIFRIRUggSVNPTEFURUQgRk9STQorRkU5QTtGRTlBO0ZFOUE7MDYyQjswNjJCOyAjICjvupo7IO+6mjsg77qaOyDYqzsg2Ks7ICkgQVJBQklDIExFVFRFUiBUSEVIIEZJTkFMIEZPUk0KK0ZFOUI7RkU5QjtGRTlCOzA2MkI7MDYyQjsgIyAo77qbOyDvups7IO+6mzsg2Ks7INirOyApIEFSQUJJQyBMRVRURVIgVEhFSCBJTklUSUFMIEZPUk0KK0ZFOUM7RkU5QztGRTlDOzA2MkI7MDYyQjsgIyAo77qcOyDvupw7IO+6nDsg2Ks7INirOyApIEFSQUJJQyBMRVRURVIgVEhFSCBNRURJQUwgRk9STQorRkU5RDtGRTlEO0ZFOUQ7MDYyQzswNjJDOyAjICjvup07IO+6nTsg77qdOyDYrDsg2Kw7ICkgQVJBQklDIExFVFRFUiBKRUVNIElTT0xBVEVEIEZPUk0KK0ZFOUU7RkU5RTtGRTlFOzA2MkM7MDYyQzsgIyAo77qeOyDvup47IO+6njsg2Kw7INisOyApIEFSQUJJQyBMRVRURVIgSkVFTSBGSU5BTCBGT1JNCitGRTlGO0ZFOUY7RkU5RjswNjJDOzA2MkM7ICMgKO+6nzsg77qfOyDvup87INisOyDYrDsgKSBBUkFCSUMgTEVUVEVSIEpFRU0gSU5JVElBTCBGT1JNCitGRUEwO0ZFQTA7RkVBMDswNjJDOzA2MkM7ICMgKO+6oDsg77qgOyDvuqA7INisOyDYrDsgKSBBUkFCSUMgTEVUVEVSIEpFRU0gTUVESUFMIEZPUk0KK0ZFQTE7RkVBMTtGRUExOzA2MkQ7MDYyRDsgIyAo77qhOyDvuqE7IO+6oTsg2K07INitOyApIEFSQUJJQyBMRVRURVIgSEFIIElTT0xBVEVEIEZPUk0KK0ZFQTI7RkVBMjtGRUEyOzA2MkQ7MDYyRDsgIyAo77qiOyDvuqI7IO+6ojsg2K07INitOyApIEFSQUJJQyBMRVRURVIgSEFIIEZJTkFMIEZPUk0KK0ZFQTM7RkVBMztGRUEzOzA2MkQ7MDYyRDsgIyAo77qjOyDvuqM7IO+6ozsg2K07INitOyApIEFSQUJJQyBMRVRURVIgSEFIIElOSVRJQUwgRk9STQorRkVBNDtGRUE0O0ZFQTQ7MDYyRDswNjJEOyAjICjvuqQ7IO+6pDsg77qkOyDYrTsg2K07ICkgQVJBQklDIExFVFRFUiBIQUggTUVESUFMIEZPUk0KK0ZFQTU7RkVBNTtGRUE1OzA2MkU7MDYyRTsgIyAo77qlOyDvuqU7IO+6pTsg2K47INiuOyApIEFSQUJJQyBMRVRURVIgS0hBSCBJU09MQVRFRCBGT1JNCitGRUE2O0ZFQTY7RkVBNjswNjJFOzA2MkU7ICMgKO+6pjsg77qmOyDvuqY7INiuOyDYrjsgKSBBUkFCSUMgTEVUVEVSIEtIQUggRklOQUwgRk9STQorRkVBNztGRUE3O0ZFQTc7MDYyRTswNjJFOyAjICjvuqc7IO+6pzsg77qnOyDYrjsg2K47ICkgQVJBQklDIExFVFRFUiBLSEFIIElOSVRJQUwgRk9STQorRkVBODtGRUE4O0ZFQTg7MDYyRTswNjJFOyAjICjvuqg7IO+6qDsg77qoOyDYrjsg2K47ICkgQVJBQklDIExFVFRFUiBLSEFIIE1FRElBTCBGT1JNCitGRUE5O0ZFQTk7RkVBOTswNjJGOzA2MkY7ICMgKO+6qTsg77qpOyDvuqk7INivOyDYrzsgKSBBUkFCSUMgTEVUVEVSIERBTCBJU09MQVRFRCBGT1JNCitGRUFBO0ZFQUE7RkVBQTswNjJGOzA2MkY7ICMgKO+6qjsg77qqOyDvuqo7INivOyDYrzsgKSBBUkFCSUMgTEVUVEVSIERBTCBGSU5BTCBGT1JNCitGRUFCO0ZFQUI7RkVBQjswNjMwOzA2MzA7ICMgKO+6qzsg77qrOyDvuqs7INiwOyDYsDsgKSBBUkFCSUMgTEVUVEVSIFRIQUwgSVNPTEFURUQgRk9STQorRkVBQztGRUFDO0ZFQUM7MDYzMDswNjMwOyAjICjvuqw7IO+6rDsg77qsOyDYsDsg2LA7ICkgQVJBQklDIExFVFRFUiBUSEFMIEZJTkFMIEZPUk0KK0ZFQUQ7RkVBRDtGRUFEOzA2MzE7MDYzMTsgIyAo77qtOyDvuq07IO+6rTsg2LE7INixOyApIEFSQUJJQyBMRVRURVIgUkVIIElTT0xBVEVEIEZPUk0KK0ZFQUU7RkVBRTtGRUFFOzA2MzE7MDYzMTsgIyAo77quOyDvuq47IO+6rjsg2LE7INixOyApIEFSQUJJQyBMRVRURVIgUkVIIEZJTkFMIEZPUk0KK0ZFQUY7RkVBRjtGRUFGOzA2MzI7MDYzMjsgIyAo77qvOyDvuq87IO+6rzsg2LI7INiyOyApIEFSQUJJQyBMRVRURVIgWkFJTiBJU09MQVRFRCBGT1JNCitGRUIwO0ZFQjA7RkVCMDswNjMyOzA2MzI7ICMgKO+6sDsg77qwOyDvurA7INiyOyDYsjsgKSBBUkFCSUMgTEVUVEVSIFpBSU4gRklOQUwgRk9STQorRkVCMTtGRUIxO0ZFQjE7MDYzMzswNjMzOyAjICjvurE7IO+6sTsg77qxOyDYszsg2LM7ICkgQVJBQklDIExFVFRFUiBTRUVOIElTT0xBVEVEIEZPUk0KK0ZFQjI7RkVCMjtGRUIyOzA2MzM7MDYzMzsgIyAo77qyOyDvurI7IO+6sjsg2LM7INizOyApIEFSQUJJQyBMRVRURVIgU0VFTiBGSU5BTCBGT1JNCitGRUIzO0ZFQjM7RkVCMzswNjMzOzA2MzM7ICMgKO+6szsg77qzOyDvurM7INizOyDYszsgKSBBUkFCSUMgTEVUVEVSIFNFRU4gSU5JVElBTCBGT1JNCitGRUI0O0ZFQjQ7RkVCNDswNjMzOzA2MzM7ICMgKO+6tDsg77q0OyDvurQ7INizOyDYszsgKSBBUkFCSUMgTEVUVEVSIFNFRU4gTUVESUFMIEZPUk0KK0ZFQjU7RkVCNTtGRUI1OzA2MzQ7MDYzNDsgIyAo77q1OyDvurU7IO+6tTsg2LQ7INi0OyApIEFSQUJJQyBMRVRURVIgU0hFRU4gSVNPTEFURUQgRk9STQorRkVCNjtGRUI2O0ZFQjY7MDYzNDswNjM0OyAjICjvurY7IO+6tjsg77q2OyDYtDsg2LQ7ICkgQVJBQklDIExFVFRFUiBTSEVFTiBGSU5BTCBGT1JNCitGRUI3O0ZFQjc7RkVCNzswNjM0OzA2MzQ7ICMgKO+6tzsg77q3OyDvurc7INi0OyDYtDsgKSBBUkFCSUMgTEVUVEVSIFNIRUVOIElOSVRJQUwgRk9STQorRkVCODtGRUI4O0ZFQjg7MDYzNDswNjM0OyAjICjvurg7IO+6uDsg77q4OyDYtDsg2LQ7ICkgQVJBQklDIExFVFRFUiBTSEVFTiBNRURJQUwgRk9STQorRkVCOTtGRUI5O0ZFQjk7MDYzNTswNjM1OyAjICjvurk7IO+6uTsg77q5OyDYtTsg2LU7ICkgQVJBQklDIExFVFRFUiBTQUQgSVNPTEFURUQgRk9STQorRkVCQTtGRUJBO0ZFQkE7MDYzNTswNjM1OyAjICjvuro7IO+6ujsg77q6OyDYtTsg2LU7ICkgQVJBQklDIExFVFRFUiBTQUQgRklOQUwgRk9STQorRkVCQjtGRUJCO0ZFQkI7MDYzNTswNjM1OyAjICjvurs7IO+6uzsg77q7OyDYtTsg2LU7ICkgQVJBQklDIExFVFRFUiBTQUQgSU5JVElBTCBGT1JNCitGRUJDO0ZFQkM7RkVCQzswNjM1OzA2MzU7ICMgKO+6vDsg77q8OyDvurw7INi1OyDYtTsgKSBBUkFCSUMgTEVUVEVSIFNBRCBNRURJQUwgRk9STQorRkVCRDtGRUJEO0ZFQkQ7MDYzNjswNjM2OyAjICjvur07IO+6vTsg77q9OyDYtjsg2LY7ICkgQVJBQklDIExFVFRFUiBEQUQgSVNPTEFURUQgRk9STQorRkVCRTtGRUJFO0ZFQkU7MDYzNjswNjM2OyAjICjvur47IO+6vjsg77q+OyDYtjsg2LY7ICkgQVJBQklDIExFVFRFUiBEQUQgRklOQUwgRk9STQorRkVCRjtGRUJGO0ZFQkY7MDYzNjswNjM2OyAjICjvur87IO+6vzsg77q/OyDYtjsg2LY7ICkgQVJBQklDIExFVFRFUiBEQUQgSU5JVElBTCBGT1JNCitGRUMwO0ZFQzA7RkVDMDswNjM2OzA2MzY7ICMgKO+7gDsg77uAOyDvu4A7INi2OyDYtjsgKSBBUkFCSUMgTEVUVEVSIERBRCBNRURJQUwgRk9STQorRkVDMTtGRUMxO0ZFQzE7MDYzNzswNjM3OyAjICjvu4E7IO+7gTsg77uBOyDYtzsg2Lc7ICkgQVJBQklDIExFVFRFUiBUQUggSVNPTEFURUQgRk9STQorRkVDMjtGRUMyO0ZFQzI7MDYzNzswNjM3OyAjICjvu4I7IO+7gjsg77uCOyDYtzsg2Lc7ICkgQVJBQklDIExFVFRFUiBUQUggRklOQUwgRk9STQorRkVDMztGRUMzO0ZFQzM7MDYzNzswNjM3OyAjICjvu4M7IO+7gzsg77uDOyDYtzsg2Lc7ICkgQVJBQklDIExFVFRFUiBUQUggSU5JVElBTCBGT1JNCitGRUM0O0ZFQzQ7RkVDNDswNjM3OzA2Mzc7ICMgKO+7hDsg77uEOyDvu4Q7INi3OyDYtzsgKSBBUkFCSUMgTEVUVEVSIFRBSCBNRURJQUwgRk9STQorRkVDNTtGRUM1O0ZFQzU7MDYzODswNjM4OyAjICjvu4U7IO+7hTsg77uFOyDYuDsg2Lg7ICkgQVJBQklDIExFVFRFUiBaQUggSVNPTEFURUQgRk9STQorRkVDNjtGRUM2O0ZFQzY7MDYzODswNjM4OyAjICjvu4Y7IO+7hjsg77uGOyDYuDsg2Lg7ICkgQVJBQklDIExFVFRFUiBaQUggRklOQUwgRk9STQorRkVDNztGRUM3O0ZFQzc7MDYzODswNjM4OyAjICjvu4c7IO+7hzsg77uHOyDYuDsg2Lg7ICkgQVJBQklDIExFVFRFUiBaQUggSU5JVElBTCBGT1JNCitGRUM4O0ZFQzg7RkVDODswNjM4OzA2Mzg7ICMgKO+7iDsg77uIOyDvu4g7INi4OyDYuDsgKSBBUkFCSUMgTEVUVEVSIFpBSCBNRURJQUwgRk9STQorRkVDOTtGRUM5O0ZFQzk7MDYzOTswNjM5OyAjICjvu4k7IO+7iTsg77uJOyDYuTsg2Lk7ICkgQVJBQklDIExFVFRFUiBBSU4gSVNPTEFURUQgRk9STQorRkVDQTtGRUNBO0ZFQ0E7MDYzOTswNjM5OyAjICjvu4o7IO+7ijsg77uKOyDYuTsg2Lk7ICkgQVJBQklDIExFVFRFUiBBSU4gRklOQUwgRk9STQorRkVDQjtGRUNCO0ZFQ0I7MDYzOTswNjM5OyAjICjvu4s7IO+7izsg77uLOyDYuTsg2Lk7ICkgQVJBQklDIExFVFRFUiBBSU4gSU5JVElBTCBGT1JNCitGRUNDO0ZFQ0M7RkVDQzswNjM5OzA2Mzk7ICMgKO+7jDsg77uMOyDvu4w7INi5OyDYuTsgKSBBUkFCSUMgTEVUVEVSIEFJTiBNRURJQUwgRk9STQorRkVDRDtGRUNEO0ZFQ0Q7MDYzQTswNjNBOyAjICjvu407IO+7jTsg77uNOyDYujsg2Lo7ICkgQVJBQklDIExFVFRFUiBHSEFJTiBJU09MQVRFRCBGT1JNCitGRUNFO0ZFQ0U7RkVDRTswNjNBOzA2M0E7ICMgKO+7jjsg77uOOyDvu447INi6OyDYujsgKSBBUkFCSUMgTEVUVEVSIEdIQUlOIEZJTkFMIEZPUk0KK0ZFQ0Y7RkVDRjtGRUNGOzA2M0E7MDYzQTsgIyAo77uPOyDvu487IO+7jzsg2Lo7INi6OyApIEFSQUJJQyBMRVRURVIgR0hBSU4gSU5JVElBTCBGT1JNCitGRUQwO0ZFRDA7RkVEMDswNjNBOzA2M0E7ICMgKO+7kDsg77uQOyDvu5A7INi6OyDYujsgKSBBUkFCSUMgTEVUVEVSIEdIQUlOIE1FRElBTCBGT1JNCitGRUQxO0ZFRDE7RkVEMTswNjQxOzA2NDE7ICMgKO+7kTsg77uROyDvu5E7INmBOyDZgTsgKSBBUkFCSUMgTEVUVEVSIEZFSCBJU09MQVRFRCBGT1JNCitGRUQyO0ZFRDI7RkVEMjswNjQxOzA2NDE7ICMgKO+7kjsg77uSOyDvu5I7INmBOyDZgTsgKSBBUkFCSUMgTEVUVEVSIEZFSCBGSU5BTCBGT1JNCitGRUQzO0ZFRDM7RkVEMzswNjQxOzA2NDE7ICMgKO+7kzsg77uTOyDvu5M7INmBOyDZgTsgKSBBUkFCSUMgTEVUVEVSIEZFSCBJTklUSUFMIEZPUk0KK0ZFRDQ7RkVENDtGRUQ0OzA2NDE7MDY0MTsgIyAo77uUOyDvu5Q7IO+7lDsg2YE7INmBOyApIEFSQUJJQyBMRVRURVIgRkVIIE1FRElBTCBGT1JNCitGRUQ1O0ZFRDU7RkVENTswNjQyOzA2NDI7ICMgKO+7lTsg77uVOyDvu5U7INmCOyDZgjsgKSBBUkFCSUMgTEVUVEVSIFFBRiBJU09MQVRFRCBGT1JNCitGRUQ2O0ZFRDY7RkVENjswNjQyOzA2NDI7ICMgKO+7ljsg77uWOyDvu5Y7INmCOyDZgjsgKSBBUkFCSUMgTEVUVEVSIFFBRiBGSU5BTCBGT1JNCitGRUQ3O0ZFRDc7RkVENzswNjQyOzA2NDI7ICMgKO+7lzsg77uXOyDvu5c7INmCOyDZgjsgKSBBUkFCSUMgTEVUVEVSIFFBRiBJTklUSUFMIEZPUk0KK0ZFRDg7RkVEODtGRUQ4OzA2NDI7MDY0MjsgIyAo77uYOyDvu5g7IO+7mDsg2YI7INmCOyApIEFSQUJJQyBMRVRURVIgUUFGIE1FRElBTCBGT1JNCitGRUQ5O0ZFRDk7RkVEOTswNjQzOzA2NDM7ICMgKO+7mTsg77uZOyDvu5k7INmDOyDZgzsgKSBBUkFCSUMgTEVUVEVSIEtBRiBJU09MQVRFRCBGT1JNCitGRURBO0ZFREE7RkVEQTswNjQzOzA2NDM7ICMgKO+7mjsg77uaOyDvu5o7INmDOyDZgzsgKSBBUkFCSUMgTEVUVEVSIEtBRiBGSU5BTCBGT1JNCitGRURCO0ZFREI7RkVEQjswNjQzOzA2NDM7ICMgKO+7mzsg77ubOyDvu5s7INmDOyDZgzsgKSBBUkFCSUMgTEVUVEVSIEtBRiBJTklUSUFMIEZPUk0KK0ZFREM7RkVEQztGRURDOzA2NDM7MDY0MzsgIyAo77ucOyDvu5w7IO+7nDsg2YM7INmDOyApIEFSQUJJQyBMRVRURVIgS0FGIE1FRElBTCBGT1JNCitGRUREO0ZFREQ7RkVERDswNjQ0OzA2NDQ7ICMgKO+7nTsg77udOyDvu507INmEOyDZhDsgKSBBUkFCSUMgTEVUVEVSIExBTSBJU09MQVRFRCBGT1JNCitGRURFO0ZFREU7RkVERTswNjQ0OzA2NDQ7ICMgKO+7njsg77ueOyDvu547INmEOyDZhDsgKSBBUkFCSUMgTEVUVEVSIExBTSBGSU5BTCBGT1JNCitGRURGO0ZFREY7RkVERjswNjQ0OzA2NDQ7ICMgKO+7nzsg77ufOyDvu587INmEOyDZhDsgKSBBUkFCSUMgTEVUVEVSIExBTSBJTklUSUFMIEZPUk0KK0ZFRTA7RkVFMDtGRUUwOzA2NDQ7MDY0NDsgIyAo77ugOyDvu6A7IO+7oDsg2YQ7INmEOyApIEFSQUJJQyBMRVRURVIgTEFNIE1FRElBTCBGT1JNCitGRUUxO0ZFRTE7RkVFMTswNjQ1OzA2NDU7ICMgKO+7oTsg77uhOyDvu6E7INmFOyDZhTsgKSBBUkFCSUMgTEVUVEVSIE1FRU0gSVNPTEFURUQgRk9STQorRkVFMjtGRUUyO0ZFRTI7MDY0NTswNjQ1OyAjICjvu6I7IO+7ojsg77uiOyDZhTsg2YU7ICkgQVJBQklDIExFVFRFUiBNRUVNIEZJTkFMIEZPUk0KK0ZFRTM7RkVFMztGRUUzOzA2NDU7MDY0NTsgIyAo77ujOyDvu6M7IO+7ozsg2YU7INmFOyApIEFSQUJJQyBMRVRURVIgTUVFTSBJTklUSUFMIEZPUk0KK0ZFRTQ7RkVFNDtGRUU0OzA2NDU7MDY0NTsgIyAo77ukOyDvu6Q7IO+7pDsg2YU7INmFOyApIEFSQUJJQyBMRVRURVIgTUVFTSBNRURJQUwgRk9STQorRkVFNTtGRUU1O0ZFRTU7MDY0NjswNjQ2OyAjICjvu6U7IO+7pTsg77ulOyDZhjsg2YY7ICkgQVJBQklDIExFVFRFUiBOT09OIElTT0xBVEVEIEZPUk0KK0ZFRTY7RkVFNjtGRUU2OzA2NDY7MDY0NjsgIyAo77umOyDvu6Y7IO+7pjsg2YY7INmGOyApIEFSQUJJQyBMRVRURVIgTk9PTiBGSU5BTCBGT1JNCitGRUU3O0ZFRTc7RkVFNzswNjQ2OzA2NDY7ICMgKO+7pzsg77unOyDvu6c7INmGOyDZhjsgKSBBUkFCSUMgTEVUVEVSIE5PT04gSU5JVElBTCBGT1JNCitGRUU4O0ZFRTg7RkVFODswNjQ2OzA2NDY7ICMgKO+7qDsg77uoOyDvu6g7INmGOyDZhjsgKSBBUkFCSUMgTEVUVEVSIE5PT04gTUVESUFMIEZPUk0KK0ZFRTk7RkVFOTtGRUU5OzA2NDc7MDY0NzsgIyAo77upOyDvu6k7IO+7qTsg2Yc7INmHOyApIEFSQUJJQyBMRVRURVIgSEVIIElTT0xBVEVEIEZPUk0KK0ZFRUE7RkVFQTtGRUVBOzA2NDc7MDY0NzsgIyAo77uqOyDvu6o7IO+7qjsg2Yc7INmHOyApIEFSQUJJQyBMRVRURVIgSEVIIEZJTkFMIEZPUk0KK0ZFRUI7RkVFQjtGRUVCOzA2NDc7MDY0NzsgIyAo77urOyDvu6s7IO+7qzsg2Yc7INmHOyApIEFSQUJJQyBMRVRURVIgSEVIIElOSVRJQUwgRk9STQorRkVFQztGRUVDO0ZFRUM7MDY0NzswNjQ3OyAjICjvu6w7IO+7rDsg77usOyDZhzsg2Yc7ICkgQVJBQklDIExFVFRFUiBIRUggTUVESUFMIEZPUk0KK0ZFRUQ7RkVFRDtGRUVEOzA2NDg7MDY0ODsgIyAo77utOyDvu607IO+7rTsg2Yg7INmIOyApIEFSQUJJQyBMRVRURVIgV0FXIElTT0xBVEVEIEZPUk0KK0ZFRUU7RkVFRTtGRUVFOzA2NDg7MDY0ODsgIyAo77uuOyDvu647IO+7rjsg2Yg7INmIOyApIEFSQUJJQyBMRVRURVIgV0FXIEZJTkFMIEZPUk0KK0ZFRUY7RkVFRjtGRUVGOzA2NDk7MDY0OTsgIyAo77uvOyDvu687IO+7rzsg2Yk7INmJOyApIEFSQUJJQyBMRVRURVIgQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk0KK0ZFRjA7RkVGMDtGRUYwOzA2NDk7MDY0OTsgIyAo77uwOyDvu7A7IO+7sDsg2Yk7INmJOyApIEFSQUJJQyBMRVRURVIgQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk0KK0ZFRjE7RkVGMTtGRUYxOzA2NEE7MDY0QTsgIyAo77uxOyDvu7E7IO+7sTsg2Yo7INmKOyApIEFSQUJJQyBMRVRURVIgWUVIIElTT0xBVEVEIEZPUk0KK0ZFRjI7RkVGMjtGRUYyOzA2NEE7MDY0QTsgIyAo77uyOyDvu7I7IO+7sjsg2Yo7INmKOyApIEFSQUJJQyBMRVRURVIgWUVIIEZJTkFMIEZPUk0KK0ZFRjM7RkVGMztGRUYzOzA2NEE7MDY0QTsgIyAo77uzOyDvu7M7IO+7szsg2Yo7INmKOyApIEFSQUJJQyBMRVRURVIgWUVIIElOSVRJQUwgRk9STQorRkVGNDtGRUY0O0ZFRjQ7MDY0QTswNjRBOyAjICjvu7Q7IO+7tDsg77u0OyDZijsg2Yo7ICkgQVJBQklDIExFVFRFUiBZRUggTUVESUFMIEZPUk0KK0ZFRjU7RkVGNTtGRUY1OzA2NDQgMDYyMjswNjQ0IDA2MjcgMDY1MzsgIyAo77u1OyDvu7U7IO+7tTsg2YTYojsg2YTYp+KXjNmTOyApIEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggTUFEREEgQUJPVkUgSVNPTEFURUQgRk9STQorRkVGNjtGRUY2O0ZFRjY7MDY0NCAwNjIyOzA2NDQgMDYyNyAwNjUzOyAjICjvu7Y7IO+7tjsg77u2OyDZhNiiOyDZhNin4peM2ZM7ICkgQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgV0lUSCBNQUREQSBBQk9WRSBGSU5BTCBGT1JNCitGRUY3O0ZFRjc7RkVGNzswNjQ0IDA2MjM7MDY0NCAwNjI3IDA2NTQ7ICMgKO+7tzsg77u3OyDvu7c7INmE2KM7INmE2Kfil4zZlDsgKSBBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBXSVRIIEhBTVpBIEFCT1ZFIElTT0xBVEVEIEZPUk0KK0ZFRjg7RkVGODtGRUY4OzA2NDQgMDYyMzswNjQ0IDA2MjcgMDY1NDsgIyAo77u4OyDvu7g7IO+7uDsg2YTYozsg2YTYp+KXjNmUOyApIEFSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STQorRkVGOTtGRUY5O0ZFRjk7MDY0NCAwNjI1OzA2NDQgMDYyNyAwNjU1OyAjICjvu7k7IO+7uTsg77u5OyDZhNilOyDZhNin4peM2ZU7ICkgQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgV0lUSCBIQU1aQSBCRUxPVyBJU09MQVRFRCBGT1JNCitGRUZBO0ZFRkE7RkVGQTswNjQ0IDA2MjU7MDY0NCAwNjI3IDA2NTU7ICMgKO+7ujsg77u6OyDvu7o7INmE2KU7INmE2Kfil4zZlTsgKSBBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBXSVRIIEhBTVpBIEJFTE9XIEZJTkFMIEZPUk0KK0ZFRkI7RkVGQjtGRUZCOzA2NDQgMDYyNzswNjQ0IDA2Mjc7ICMgKO+7uzsg77u7OyDvu7s7INmE2Kc7INmE2Kc7ICkgQVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgSVNPTEFURUQgRk9STQorRkVGQztGRUZDO0ZFRkM7MDY0NCAwNjI3OzA2NDQgMDYyNzsgIyAo77u8OyDvu7w7IO+7vDsg2YTYpzsg2YTYpzsgKSBBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBGSU5BTCBGT1JNCitGRjAxO0ZGMDE7RkYwMTswMDIxOzAwMjE7ICMgKO+8gTsg77yBOyDvvIE7ICE7ICE7ICkgRlVMTFdJRFRIIEVYQ0xBTUFUSU9OIE1BUksKK0ZGMDI7RkYwMjtGRjAyOzAwMjI7MDAyMjsgIyAo77yCOyDvvII7IO+8gjsgIjsgIjsgKSBGVUxMV0lEVEggUVVPVEFUSU9OIE1BUksKK0ZGMDM7RkYwMztGRjAzOzAwMjM7MDAyMzsgIyAo77yDOyDvvIM7IO+8gzsgIzsgIzsgKSBGVUxMV0lEVEggTlVNQkVSIFNJR04KK0ZGMDQ7RkYwNDtGRjA0OzAwMjQ7MDAyNDsgIyAo77yEOyDvvIQ7IO+8hDsgJDsgJDsgKSBGVUxMV0lEVEggRE9MTEFSIFNJR04KK0ZGMDU7RkYwNTtGRjA1OzAwMjU7MDAyNTsgIyAo77yFOyDvvIU7IO+8hTsgJTsgJTsgKSBGVUxMV0lEVEggUEVSQ0VOVCBTSUdOCitGRjA2O0ZGMDY7RkYwNjswMDI2OzAwMjY7ICMgKO+8hjsg77yGOyDvvIY7ICY7ICY7ICkgRlVMTFdJRFRIIEFNUEVSU0FORAorRkYwNztGRjA3O0ZGMDc7MDAyNzswMDI3OyAjICjvvIc7IO+8hzsg77yHOyAnOyAnOyApIEZVTExXSURUSCBBUE9TVFJPUEhFCitGRjA4O0ZGMDg7RkYwODswMDI4OzAwMjg7ICMgKO+8iDsg77yIOyDvvIg7ICg7ICg7ICkgRlVMTFdJRFRIIExFRlQgUEFSRU5USEVTSVMKK0ZGMDk7RkYwOTtGRjA5OzAwMjk7MDAyOTsgIyAo77yJOyDvvIk7IO+8iTsgKTsgKTsgKSBGVUxMV0lEVEggUklHSFQgUEFSRU5USEVTSVMKK0ZGMEE7RkYwQTtGRjBBOzAwMkE7MDAyQTsgIyAo77yKOyDvvIo7IO+8ijsgKjsgKjsgKSBGVUxMV0lEVEggQVNURVJJU0sKK0ZGMEI7RkYwQjtGRjBCOzAwMkI7MDAyQjsgIyAo77yLOyDvvIs7IO+8izsgKzsgKzsgKSBGVUxMV0lEVEggUExVUyBTSUdOCitGRjBDO0ZGMEM7RkYwQzswMDJDOzAwMkM7ICMgKO+8jDsg77yMOyDvvIw7ICw7ICw7ICkgRlVMTFdJRFRIIENPTU1BCitGRjBEO0ZGMEQ7RkYwRDswMDJEOzAwMkQ7ICMgKO+8jTsg77yNOyDvvI07IC07IC07ICkgRlVMTFdJRFRIIEhZUEhFTi1NSU5VUworRkYwRTtGRjBFO0ZGMEU7MDAyRTswMDJFOyAjICjvvI47IO+8jjsg77yOOyAuOyAuOyApIEZVTExXSURUSCBGVUxMIFNUT1AKK0ZGMEY7RkYwRjtGRjBGOzAwMkY7MDAyRjsgIyAo77yPOyDvvI87IO+8jzsgLzsgLzsgKSBGVUxMV0lEVEggU09MSURVUworRkYxMDtGRjEwO0ZGMTA7MDAzMDswMDMwOyAjICjvvJA7IO+8kDsg77yQOyAwOyAwOyApIEZVTExXSURUSCBESUdJVCBaRVJPCitGRjExO0ZGMTE7RkYxMTswMDMxOzAwMzE7ICMgKO+8kTsg77yROyDvvJE7IDE7IDE7ICkgRlVMTFdJRFRIIERJR0lUIE9ORQorRkYxMjtGRjEyO0ZGMTI7MDAzMjswMDMyOyAjICjvvJI7IO+8kjsg77ySOyAyOyAyOyApIEZVTExXSURUSCBESUdJVCBUV08KK0ZGMTM7RkYxMztGRjEzOzAwMzM7MDAzMzsgIyAo77yTOyDvvJM7IO+8kzsgMzsgMzsgKSBGVUxMV0lEVEggRElHSVQgVEhSRUUKK0ZGMTQ7RkYxNDtGRjE0OzAwMzQ7MDAzNDsgIyAo77yUOyDvvJQ7IO+8lDsgNDsgNDsgKSBGVUxMV0lEVEggRElHSVQgRk9VUgorRkYxNTtGRjE1O0ZGMTU7MDAzNTswMDM1OyAjICjvvJU7IO+8lTsg77yVOyA1OyA1OyApIEZVTExXSURUSCBESUdJVCBGSVZFCitGRjE2O0ZGMTY7RkYxNjswMDM2OzAwMzY7ICMgKO+8ljsg77yWOyDvvJY7IDY7IDY7ICkgRlVMTFdJRFRIIERJR0lUIFNJWAorRkYxNztGRjE3O0ZGMTc7MDAzNzswMDM3OyAjICjvvJc7IO+8lzsg77yXOyA3OyA3OyApIEZVTExXSURUSCBESUdJVCBTRVZFTgorRkYxODtGRjE4O0ZGMTg7MDAzODswMDM4OyAjICjvvJg7IO+8mDsg77yYOyA4OyA4OyApIEZVTExXSURUSCBESUdJVCBFSUdIVAorRkYxOTtGRjE5O0ZGMTk7MDAzOTswMDM5OyAjICjvvJk7IO+8mTsg77yZOyA5OyA5OyApIEZVTExXSURUSCBESUdJVCBOSU5FCitGRjFBO0ZGMUE7RkYxQTswMDNBOzAwM0E7ICMgKO+8mjsg77yaOyDvvJo7IDo7IDo7ICkgRlVMTFdJRFRIIENPTE9OCitGRjFCO0ZGMUI7RkYxQjswMDNCOzAwM0I7ICMgKO+8mzsg77ybOyDvvJs7IDs7IDs7ICkgRlVMTFdJRFRIIFNFTUlDT0xPTgorRkYxQztGRjFDO0ZGMUM7MDAzQzswMDNDOyAjICjvvJw7IO+8nDsg77ycOyA8OyA8OyApIEZVTExXSURUSCBMRVNTLVRIQU4gU0lHTgorRkYxRDtGRjFEO0ZGMUQ7MDAzRDswMDNEOyAjICjvvJ07IO+8nTsg77ydOyA9OyA9OyApIEZVTExXSURUSCBFUVVBTFMgU0lHTgorRkYxRTtGRjFFO0ZGMUU7MDAzRTswMDNFOyAjICjvvJ47IO+8njsg77yeOyA+OyA+OyApIEZVTExXSURUSCBHUkVBVEVSLVRIQU4gU0lHTgorRkYxRjtGRjFGO0ZGMUY7MDAzRjswMDNGOyAjICjvvJ87IO+8nzsg77yfOyA/OyA/OyApIEZVTExXSURUSCBRVUVTVElPTiBNQVJLCitGRjIwO0ZGMjA7RkYyMDswMDQwOzAwNDA7ICMgKO+8oDsg77ygOyDvvKA7IEA7IEA7ICkgRlVMTFdJRFRIIENPTU1FUkNJQUwgQVQKK0ZGMjE7RkYyMTtGRjIxOzAwNDE7MDA0MTsgIyAo77yhOyDvvKE7IO+8oTsgQTsgQTsgKSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgQQorRkYyMjtGRjIyO0ZGMjI7MDA0MjswMDQyOyAjICjvvKI7IO+8ojsg77yiOyBCOyBCOyApIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBCCitGRjIzO0ZGMjM7RkYyMzswMDQzOzAwNDM7ICMgKO+8ozsg77yjOyDvvKM7IEM7IEM7ICkgRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEMKK0ZGMjQ7RkYyNDtGRjI0OzAwNDQ7MDA0NDsgIyAo77ykOyDvvKQ7IO+8pDsgRDsgRDsgKSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRAorRkYyNTtGRjI1O0ZGMjU7MDA0NTswMDQ1OyAjICjvvKU7IO+8pTsg77ylOyBFOyBFOyApIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBFCitGRjI2O0ZGMjY7RkYyNjswMDQ2OzAwNDY7ICMgKO+8pjsg77ymOyDvvKY7IEY7IEY7ICkgRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEYKK0ZGMjc7RkYyNztGRjI3OzAwNDc7MDA0NzsgIyAo77ynOyDvvKc7IO+8pzsgRzsgRzsgKSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRworRkYyODtGRjI4O0ZGMjg7MDA0ODswMDQ4OyAjICjvvKg7IO+8qDsg77yoOyBIOyBIOyApIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBICitGRjI5O0ZGMjk7RkYyOTswMDQ5OzAwNDk7ICMgKO+8qTsg77ypOyDvvKk7IEk7IEk7ICkgRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEkKK0ZGMkE7RkYyQTtGRjJBOzAwNEE7MDA0QTsgIyAo77yqOyDvvKo7IO+8qjsgSjsgSjsgKSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgSgorRkYyQjtGRjJCO0ZGMkI7MDA0QjswMDRCOyAjICjvvKs7IO+8qzsg77yrOyBLOyBLOyApIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBLCitGRjJDO0ZGMkM7RkYyQzswMDRDOzAwNEM7ICMgKO+8rDsg77ysOyDvvKw7IEw7IEw7ICkgRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEwKK0ZGMkQ7RkYyRDtGRjJEOzAwNEQ7MDA0RDsgIyAo77ytOyDvvK07IO+8rTsgTTsgTTsgKSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgTQorRkYyRTtGRjJFO0ZGMkU7MDA0RTswMDRFOyAjICjvvK47IO+8rjsg77yuOyBOOyBOOyApIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBOCitGRjJGO0ZGMkY7RkYyRjswMDRGOzAwNEY7ICMgKO+8rzsg77yvOyDvvK87IE87IE87ICkgRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIE8KK0ZGMzA7RkYzMDtGRjMwOzAwNTA7MDA1MDsgIyAo77ywOyDvvLA7IO+8sDsgUDsgUDsgKSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUAorRkYzMTtGRjMxO0ZGMzE7MDA1MTswMDUxOyAjICjvvLE7IO+8sTsg77yxOyBROyBROyApIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBRCitGRjMyO0ZGMzI7RkYzMjswMDUyOzAwNTI7ICMgKO+8sjsg77yyOyDvvLI7IFI7IFI7ICkgRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFIKK0ZGMzM7RkYzMztGRjMzOzAwNTM7MDA1MzsgIyAo77yzOyDvvLM7IO+8szsgUzsgUzsgKSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUworRkYzNDtGRjM0O0ZGMzQ7MDA1NDswMDU0OyAjICjvvLQ7IO+8tDsg77y0OyBUOyBUOyApIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBUCitGRjM1O0ZGMzU7RkYzNTswMDU1OzAwNTU7ICMgKO+8tTsg77y1OyDvvLU7IFU7IFU7ICkgRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFUKK0ZGMzY7RkYzNjtGRjM2OzAwNTY7MDA1NjsgIyAo77y2OyDvvLY7IO+8tjsgVjsgVjsgKSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgVgorRkYzNztGRjM3O0ZGMzc7MDA1NzswMDU3OyAjICjvvLc7IO+8tzsg77y3OyBXOyBXOyApIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBXCitGRjM4O0ZGMzg7RkYzODswMDU4OzAwNTg7ICMgKO+8uDsg77y4OyDvvLg7IFg7IFg7ICkgRlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFgKK0ZGMzk7RkYzOTtGRjM5OzAwNTk7MDA1OTsgIyAo77y5OyDvvLk7IO+8uTsgWTsgWTsgKSBGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgWQorRkYzQTtGRjNBO0ZGM0E7MDA1QTswMDVBOyAjICjvvLo7IO+8ujsg77y6OyBaOyBaOyApIEZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBaCitGRjNCO0ZGM0I7RkYzQjswMDVCOzAwNUI7ICMgKO+8uzsg77y7OyDvvLs7IFs7IFs7ICkgRlVMTFdJRFRIIExFRlQgU1FVQVJFIEJSQUNLRVQKK0ZGM0M7RkYzQztGRjNDOzAwNUM7MDA1QzsgIyAo77y8OyDvvLw7IO+8vDsgXDsgXDsgKSBGVUxMV0lEVEggUkVWRVJTRSBTT0xJRFVTCitGRjNEO0ZGM0Q7RkYzRDswMDVEOzAwNUQ7ICMgKO+8vTsg77y9OyDvvL07IF07IF07ICkgRlVMTFdJRFRIIFJJR0hUIFNRVUFSRSBCUkFDS0VUCitGRjNFO0ZGM0U7RkYzRTswMDVFOzAwNUU7ICMgKO+8vjsg77y+OyDvvL47IF47IF47ICkgRlVMTFdJRFRIIENJUkNVTUZMRVggQUNDRU5UCitGRjNGO0ZGM0Y7RkYzRjswMDVGOzAwNUY7ICMgKO+8vzsg77y/OyDvvL87IF87IF87ICkgRlVMTFdJRFRIIExPVyBMSU5FCitGRjQwO0ZGNDA7RkY0MDswMDYwOzAwNjA7ICMgKO+9gDsg772AOyDvvYA7IGA7IGA7ICkgRlVMTFdJRFRIIEdSQVZFIEFDQ0VOVAorRkY0MTtGRjQxO0ZGNDE7MDA2MTswMDYxOyAjICjvvYE7IO+9gTsg772BOyBhOyBhOyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgQQorRkY0MjtGRjQyO0ZGNDI7MDA2MjswMDYyOyAjICjvvYI7IO+9gjsg772COyBiOyBiOyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgQgorRkY0MztGRjQzO0ZGNDM7MDA2MzswMDYzOyAjICjvvYM7IO+9gzsg772DOyBjOyBjOyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgQworRkY0NDtGRjQ0O0ZGNDQ7MDA2NDswMDY0OyAjICjvvYQ7IO+9hDsg772EOyBkOyBkOyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgRAorRkY0NTtGRjQ1O0ZGNDU7MDA2NTswMDY1OyAjICjvvYU7IO+9hTsg772FOyBlOyBlOyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgRQorRkY0NjtGRjQ2O0ZGNDY7MDA2NjswMDY2OyAjICjvvYY7IO+9hjsg772GOyBmOyBmOyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgRgorRkY0NztGRjQ3O0ZGNDc7MDA2NzswMDY3OyAjICjvvYc7IO+9hzsg772HOyBnOyBnOyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgRworRkY0ODtGRjQ4O0ZGNDg7MDA2ODswMDY4OyAjICjvvYg7IO+9iDsg772IOyBoOyBoOyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgSAorRkY0OTtGRjQ5O0ZGNDk7MDA2OTswMDY5OyAjICjvvYk7IO+9iTsg772JOyBpOyBpOyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgSQorRkY0QTtGRjRBO0ZGNEE7MDA2QTswMDZBOyAjICjvvYo7IO+9ijsg772KOyBqOyBqOyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgSgorRkY0QjtGRjRCO0ZGNEI7MDA2QjswMDZCOyAjICjvvYs7IO+9izsg772LOyBrOyBrOyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgSworRkY0QztGRjRDO0ZGNEM7MDA2QzswMDZDOyAjICjvvYw7IO+9jDsg772MOyBsOyBsOyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgTAorRkY0RDtGRjREO0ZGNEQ7MDA2RDswMDZEOyAjICjvvY07IO+9jTsg772NOyBtOyBtOyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgTQorRkY0RTtGRjRFO0ZGNEU7MDA2RTswMDZFOyAjICjvvY47IO+9jjsg772OOyBuOyBuOyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgTgorRkY0RjtGRjRGO0ZGNEY7MDA2RjswMDZGOyAjICjvvY87IO+9jzsg772POyBvOyBvOyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgTworRkY1MDtGRjUwO0ZGNTA7MDA3MDswMDcwOyAjICjvvZA7IO+9kDsg772QOyBwOyBwOyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgUAorRkY1MTtGRjUxO0ZGNTE7MDA3MTswMDcxOyAjICjvvZE7IO+9kTsg772ROyBxOyBxOyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgUQorRkY1MjtGRjUyO0ZGNTI7MDA3MjswMDcyOyAjICjvvZI7IO+9kjsg772SOyByOyByOyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgUgorRkY1MztGRjUzO0ZGNTM7MDA3MzswMDczOyAjICjvvZM7IO+9kzsg772TOyBzOyBzOyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgUworRkY1NDtGRjU0O0ZGNTQ7MDA3NDswMDc0OyAjICjvvZQ7IO+9lDsg772UOyB0OyB0OyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgVAorRkY1NTtGRjU1O0ZGNTU7MDA3NTswMDc1OyAjICjvvZU7IO+9lTsg772VOyB1OyB1OyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgVQorRkY1NjtGRjU2O0ZGNTY7MDA3NjswMDc2OyAjICjvvZY7IO+9ljsg772WOyB2OyB2OyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgVgorRkY1NztGRjU3O0ZGNTc7MDA3NzswMDc3OyAjICjvvZc7IO+9lzsg772XOyB3OyB3OyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgVworRkY1ODtGRjU4O0ZGNTg7MDA3ODswMDc4OyAjICjvvZg7IO+9mDsg772YOyB4OyB4OyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgWAorRkY1OTtGRjU5O0ZGNTk7MDA3OTswMDc5OyAjICjvvZk7IO+9mTsg772ZOyB5OyB5OyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgWQorRkY1QTtGRjVBO0ZGNUE7MDA3QTswMDdBOyAjICjvvZo7IO+9mjsg772aOyB6OyB6OyApIEZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgWgorRkY1QjtGRjVCO0ZGNUI7MDA3QjswMDdCOyAjICjvvZs7IO+9mzsg772bOyB7OyB7OyApIEZVTExXSURUSCBMRUZUIENVUkxZIEJSQUNLRVQKK0ZGNUM7RkY1QztGRjVDOzAwN0M7MDA3QzsgIyAo772cOyDvvZw7IO+9nDsgfDsgfDsgKSBGVUxMV0lEVEggVkVSVElDQUwgTElORQorRkY1RDtGRjVEO0ZGNUQ7MDA3RDswMDdEOyAjICjvvZ07IO+9nTsg772dOyB9OyB9OyApIEZVTExXSURUSCBSSUdIVCBDVVJMWSBCUkFDS0VUCitGRjVFO0ZGNUU7RkY1RTswMDdFOzAwN0U7ICMgKO+9njsg772eOyDvvZ47IH47IH47ICkgRlVMTFdJRFRIIFRJTERFCitGRjYxO0ZGNjE7RkY2MTszMDAyOzMwMDI7ICMgKO+9oTsg772hOyDvvaE7IOOAgjsg44CCOyApIEhBTEZXSURUSCBJREVPR1JBUEhJQyBGVUxMIFNUT1AKK0ZGNjI7RkY2MjtGRjYyOzMwMEM7MzAwQzsgIyAo772iOyDvvaI7IO+9ojsg44CMOyDjgIw7ICkgSEFMRldJRFRIIExFRlQgQ09STkVSIEJSQUNLRVQKK0ZGNjM7RkY2MztGRjYzOzMwMEQ7MzAwRDsgIyAo772jOyDvvaM7IO+9ozsg44CNOyDjgI07ICkgSEFMRldJRFRIIFJJR0hUIENPUk5FUiBCUkFDS0VUCitGRjY0O0ZGNjQ7RkY2NDszMDAxOzMwMDE7ICMgKO+9pDsg772kOyDvvaQ7IOOAgTsg44CBOyApIEhBTEZXSURUSCBJREVPR1JBUEhJQyBDT01NQQorRkY2NTtGRjY1O0ZGNjU7MzBGQjszMEZCOyAjICjvvaU7IO+9pTsg772lOyDjg7s7IOODuzsgKSBIQUxGV0lEVEggS0FUQUtBTkEgTUlERExFIERPVAorRkY2NjtGRjY2O0ZGNjY7MzBGMjszMEYyOyAjICjvvaY7IO+9pjsg772mOyDjg7I7IOODsjsgKSBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFdPCitGRjY3O0ZGNjc7RkY2NzszMEExOzMwQTE7ICMgKO+9pzsg772nOyDvvac7IOOCoTsg44KhOyApIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgQQorRkY2ODtGRjY4O0ZGNjg7MzBBMzszMEEzOyAjICjvvag7IO+9qDsg772oOyDjgqM7IOOCozsgKSBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIEkKK0ZGNjk7RkY2OTtGRjY5OzMwQTU7MzBBNTsgIyAo772pOyDvvak7IO+9qTsg44KlOyDjgqU7ICkgSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBVCitGRjZBO0ZGNkE7RkY2QTszMEE3OzMwQTc7ICMgKO+9qjsg772qOyDvvao7IOOCpzsg44KnOyApIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgRQorRkY2QjtGRjZCO0ZGNkI7MzBBOTszMEE5OyAjICjvvas7IO+9qzsg772rOyDjgqk7IOOCqTsgKSBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIE8KK0ZGNkM7RkY2QztGRjZDOzMwRTM7MzBFMzsgIyAo772sOyDvvaw7IO+9rDsg44OjOyDjg6M7ICkgSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBZQQorRkY2RDtGRjZEO0ZGNkQ7MzBFNTszMEU1OyAjICjvva07IO+9rTsg772tOyDjg6U7IOODpTsgKSBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlVCitGRjZFO0ZGNkU7RkY2RTszMEU3OzMwRTc7ICMgKO+9rjsg772uOyDvva47IOODpzsg44OnOyApIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgWU8KK0ZGNkY7RkY2RjtGRjZGOzMwQzM7MzBDMzsgIyAo772vOyDvva87IO+9rzsg44ODOyDjg4M7ICkgSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBUVQorRkY3MDtGRjcwO0ZGNzA7MzBGQzszMEZDOyAjICjvvbA7IO+9sDsg772wOyDjg7w7IOODvDsgKSBIQUxGV0lEVEggS0FUQUtBTkEtSElSQUdBTkEgUFJPTE9OR0VEIFNPVU5EIE1BUksKK0ZGNzE7RkY3MTtGRjcxOzMwQTI7MzBBMjsgIyAo772xOyDvvbE7IO+9sTsg44KiOyDjgqI7ICkgSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBBCitGRjcyO0ZGNzI7RkY3MjszMEE0OzMwQTQ7ICMgKO+9sjsg772yOyDvvbI7IOOCpDsg44KkOyApIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgSQorRkY3MztGRjczO0ZGNzM7MzBBNjszMEE2OyAjICjvvbM7IO+9szsg772zOyDjgqY7IOOCpjsgKSBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFUKK0ZGNzQ7RkY3NDtGRjc0OzMwQTg7MzBBODsgIyAo7720OyDvvbQ7IO+9tDsg44KoOyDjgqg7ICkgSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBFCitGRjc1O0ZGNzU7RkY3NTszMEFBOzMwQUE7ICMgKO+9tTsg7721OyDvvbU7IOOCqjsg44KqOyApIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTworRkY3NjtGRjc2O0ZGNzY7MzBBQjszMEFCOyAjICjvvbY7IO+9tjsg7722OyDjgqs7IOOCqzsgKSBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtBCitGRjc3O0ZGNzc7RkY3NzszMEFEOzMwQUQ7ICMgKO+9tzsg7723OyDvvbc7IOOCrTsg44KtOyApIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgS0kKK0ZGNzg7RkY3ODtGRjc4OzMwQUY7MzBBRjsgIyAo7724OyDvvbg7IO+9uDsg44KvOyDjgq87ICkgSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBLVQorRkY3OTtGRjc5O0ZGNzk7MzBCMTszMEIxOyAjICjvvbk7IO+9uTsg7725OyDjgrE7IOOCsTsgKSBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtFCitGRjdBO0ZGN0E7RkY3QTszMEIzOzMwQjM7ICMgKO+9ujsg7726OyDvvbo7IOOCszsg44KzOyApIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgS08KK0ZGN0I7RkY3QjtGRjdCOzMwQjU7MzBCNTsgIyAo7727OyDvvbs7IO+9uzsg44K1OyDjgrU7ICkgSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTQQorRkY3QztGRjdDO0ZGN0M7MzBCNzszMEI3OyAjICjvvbw7IO+9vDsg7728OyDjgrc7IOOCtzsgKSBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNJCitGRjdEO0ZGN0Q7RkY3RDszMEI5OzMwQjk7ICMgKO+9vTsg7729OyDvvb07IOOCuTsg44K5OyApIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU1UKK0ZGN0U7RkY3RTtGRjdFOzMwQkI7MzBCQjsgIyAo772+OyDvvb47IO+9vjsg44K7OyDjgrs7ICkgSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTRQorRkY3RjtGRjdGO0ZGN0Y7MzBCRDszMEJEOyAjICjvvb87IO+9vzsg772/OyDjgr07IOOCvTsgKSBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNPCitGRjgwO0ZGODA7RkY4MDszMEJGOzMwQkY7ICMgKO++gDsg776AOyDvvoA7IOOCvzsg44K/OyApIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgVEEKK0ZGODE7RkY4MTtGRjgxOzMwQzE7MzBDMTsgIyAo776BOyDvvoE7IO++gTsg44OBOyDjg4E7ICkgSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBUSQorRkY4MjtGRjgyO0ZGODI7MzBDNDszMEM0OyAjICjvvoI7IO++gjsg776COyDjg4Q7IOODhDsgKSBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFRVCitGRjgzO0ZGODM7RkY4MzszMEM2OzMwQzY7ICMgKO++gzsg776DOyDvvoM7IOODhjsg44OGOyApIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgVEUKK0ZGODQ7RkY4NDtGRjg0OzMwQzg7MzBDODsgIyAo776EOyDvvoQ7IO++hDsg44OIOyDjg4g7ICkgSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBUTworRkY4NTtGRjg1O0ZGODU7MzBDQTszMENBOyAjICjvvoU7IO++hTsg776FOyDjg4o7IOODijsgKSBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5BCitGRjg2O0ZGODY7RkY4NjszMENCOzMwQ0I7ICMgKO++hjsg776GOyDvvoY7IOODizsg44OLOyApIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTkkKK0ZGODc7RkY4NztGRjg3OzMwQ0M7MzBDQzsgIyAo776HOyDvvoc7IO++hzsg44OMOyDjg4w7ICkgSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBOVQorRkY4ODtGRjg4O0ZGODg7MzBDRDszMENEOyAjICjvvog7IO++iDsg776IOyDjg407IOODjTsgKSBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5FCitGRjg5O0ZGODk7RkY4OTszMENFOzMwQ0U7ICMgKO++iTsg776JOyDvvok7IOODjjsg44OOOyApIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTk8KK0ZGOEE7RkY4QTtGRjhBOzMwQ0Y7MzBDRjsgIyAo776KOyDvvoo7IO++ijsg44OPOyDjg487ICkgSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBIQQorRkY4QjtGRjhCO0ZGOEI7MzBEMjszMEQyOyAjICjvvos7IO++izsg776LOyDjg5I7IOODkjsgKSBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEhJCitGRjhDO0ZGOEM7RkY4QzszMEQ1OzMwRDU7ICMgKO++jDsg776MOyDvvow7IOODlTsg44OVOyApIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgSFUKK0ZGOEQ7RkY4RDtGRjhEOzMwRDg7MzBEODsgIyAo776NOyDvvo07IO++jTsg44OYOyDjg5g7ICkgSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBIRQorRkY4RTtGRjhFO0ZGOEU7MzBEQjszMERCOyAjICjvvo47IO++jjsg776OOyDjg5s7IOODmzsgKSBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEhPCitGRjhGO0ZGOEY7RkY4RjszMERFOzMwREU7ICMgKO++jzsg776POyDvvo87IOODnjsg44OeOyApIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTUEKK0ZGOTA7RkY5MDtGRjkwOzMwREY7MzBERjsgIyAo776QOyDvvpA7IO++kDsg44OfOyDjg587ICkgSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBNSQorRkY5MTtGRjkxO0ZGOTE7MzBFMDszMEUwOyAjICjvvpE7IO++kTsg776ROyDjg6A7IOODoDsgKSBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE1VCitGRjkyO0ZGOTI7RkY5MjszMEUxOzMwRTE7ICMgKO++kjsg776SOyDvvpI7IOODoTsg44OhOyApIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTUUKK0ZGOTM7RkY5MztGRjkzOzMwRTI7MzBFMjsgIyAo776TOyDvvpM7IO++kzsg44OiOyDjg6I7ICkgSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBNTworRkY5NDtGRjk0O0ZGOTQ7MzBFNDszMEU0OyAjICjvvpQ7IO++lDsg776UOyDjg6Q7IOODpDsgKSBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFlBCitGRjk1O0ZGOTU7RkY5NTszMEU2OzMwRTY7ICMgKO++lTsg776VOyDvvpU7IOODpjsg44OmOyApIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgWVUKK0ZGOTY7RkY5NjtGRjk2OzMwRTg7MzBFODsgIyAo776WOyDvvpY7IO++ljsg44OoOyDjg6g7ICkgSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBZTworRkY5NztGRjk3O0ZGOTc7MzBFOTszMEU5OyAjICjvvpc7IO++lzsg776XOyDjg6k7IOODqTsgKSBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJBCitGRjk4O0ZGOTg7RkY5ODszMEVBOzMwRUE7ICMgKO++mDsg776YOyDvvpg7IOODqjsg44OqOyApIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgUkkKK0ZGOTk7RkY5OTtGRjk5OzMwRUI7MzBFQjsgIyAo776ZOyDvvpk7IO++mTsg44OrOyDjg6s7ICkgSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBSVQorRkY5QTtGRjlBO0ZGOUE7MzBFQzszMEVDOyAjICjvvpo7IO++mjsg776aOyDjg6w7IOODrDsgKSBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJFCitGRjlCO0ZGOUI7RkY5QjszMEVEOzMwRUQ7ICMgKO++mzsg776bOyDvvps7IOODrTsg44OtOyApIEhBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgUk8KK0ZGOUM7RkY5QztGRjlDOzMwRUY7MzBFRjsgIyAo776cOyDvvpw7IO++nDsg44OvOyDjg687ICkgSEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBXQQorRkY5RDtGRjlEO0ZGOUQ7MzBGMzszMEYzOyAjICjvvp07IO++nTsg776dOyDjg7M7IOODszsgKSBIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE4KK0ZGOUU7RkY5RTtGRjlFOzMwOTk7MzA5OTsgIyAo776eOyDvvp47IO++njsg4peM44KZOyDil4zjgpk7ICkgSEFMRldJRFRIIEtBVEFLQU5BIFZPSUNFRCBTT1VORCBNQVJLCitGRjlGO0ZGOUY7RkY5RjszMDlBOzMwOUE7ICMgKO++nzsg776fOyDvvp87IOKXjOOCmjsg4peM44KaOyApIEhBTEZXSURUSCBLQVRBS0FOQSBTRU1JLVZPSUNFRCBTT1VORCBNQVJLCitGRkEwO0ZGQTA7RkZBMDsxMTYwOzExNjA7ICMgKO++oDsg776gOyDvvqA7IOGFoDsg4YWgOyApIEhBTEZXSURUSCBIQU5HVUwgRklMTEVSCitGRkExO0ZGQTE7RkZBMTsxMTAwOzExMDA7ICMgKO++oTsg776hOyDvvqE7IOGEgDsg4YSAOyApIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEtJWUVPSworRkZBMjtGRkEyO0ZGQTI7MTEwMTsxMTAxOyAjICjvvqI7IO++ojsg776iOyDhhIE7IOGEgTsgKSBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FOR0tJWUVPSworRkZBMztGRkEzO0ZGQTM7MTFBQTsxMUFBOyAjICjvvqM7IO++ozsg776jOyDhhqo7IOGGqjsgKSBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBLSVlFT0stU0lPUworRkZBNDtGRkE0O0ZGQTQ7MTEwMjsxMTAyOyAjICjvvqQ7IO++pDsg776kOyDhhII7IOGEgjsgKSBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBOSUVVTgorRkZBNTtGRkE1O0ZGQTU7MTFBQzsxMUFDOyAjICjvvqU7IO++pTsg776lOyDhhqw7IOGGrDsgKSBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBOSUVVTi1DSUVVQworRkZBNjtGRkE2O0ZGQTY7MTFBRDsxMUFEOyAjICjvvqY7IO++pjsg776mOyDhhq07IOGGrTsgKSBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBOSUVVTi1ISUVVSAorRkZBNztGRkE3O0ZGQTc7MTEwMzsxMTAzOyAjICjvvqc7IO++pzsg776nOyDhhIM7IOGEgzsgKSBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBUSUtFVVQKK0ZGQTg7RkZBODtGRkE4OzExMDQ7MTEwNDsgIyAo776oOyDvvqg7IO++qDsg4YSEOyDhhIQ7ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkdUSUtFVVQKK0ZGQTk7RkZBOTtGRkE5OzExMDU7MTEwNTsgIyAo776pOyDvvqk7IO++qTsg4YSFOyDhhIU7ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwKK0ZGQUE7RkZBQTtGRkFBOzExQjA7MTFCMDsgIyAo776qOyDvvqo7IO++qjsg4YawOyDhhrA7ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwtS0lZRU9LCitGRkFCO0ZGQUI7RkZBQjsxMUIxOzExQjE7ICMgKO++qzsg776rOyDvvqs7IOGGsTsg4YaxOyApIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLU1JRVVNCitGRkFDO0ZGQUM7RkZBQzsxMUIyOzExQjI7ICMgKO++rDsg776sOyDvvqw7IOGGsjsg4YayOyApIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLVBJRVVQCitGRkFEO0ZGQUQ7RkZBRDsxMUIzOzExQjM7ICMgKO++rTsg776tOyDvvq07IOGGszsg4YazOyApIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLVNJT1MKK0ZGQUU7RkZBRTtGRkFFOzExQjQ7MTFCNDsgIyAo776uOyDvvq47IO++rjsg4Ya0OyDhhrQ7ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwtVEhJRVVUSAorRkZBRjtGRkFGO0ZGQUY7MTFCNTsxMUI1OyAjICjvvq87IO++rzsg776vOyDhhrU7IOGGtTsgKSBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTC1QSElFVVBICitGRkIwO0ZGQjA7RkZCMDsxMTFBOzExMUE7ICMgKO++sDsg776wOyDvvrA7IOGEmjsg4YSaOyApIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLUhJRVVICitGRkIxO0ZGQjE7RkZCMTsxMTA2OzExMDY7ICMgKO++sTsg776xOyDvvrE7IOGEhjsg4YSGOyApIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE1JRVVNCitGRkIyO0ZGQjI7RkZCMjsxMTA3OzExMDc7ICMgKO++sjsg776yOyDvvrI7IOGEhzsg4YSHOyApIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFBJRVVQCitGRkIzO0ZGQjM7RkZCMzsxMTA4OzExMDg7ICMgKO++szsg776zOyDvvrM7IOGEiDsg4YSIOyApIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HUElFVVAKK0ZGQjQ7RkZCNDtGRkI0OzExMjE7MTEyMTsgIyAo7760OyDvvrQ7IO++tDsg4YShOyDhhKE7ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUElFVVAtU0lPUworRkZCNTtGRkI1O0ZGQjU7MTEwOTsxMTA5OyAjICjvvrU7IO++tTsg7761OyDhhIk7IOGEiTsgKSBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTSU9TCitGRkI2O0ZGQjY7RkZCNjsxMTBBOzExMEE7ICMgKO++tjsg7762OyDvvrY7IOGEijsg4YSKOyApIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HU0lPUworRkZCNztGRkI3O0ZGQjc7MTEwQjsxMTBCOyAjICjvvrc7IO++tzsg7763OyDhhIs7IOGEizsgKSBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBJRVVORworRkZCODtGRkI4O0ZGQjg7MTEwQzsxMTBDOyAjICjvvrg7IO++uDsg7764OyDhhIw7IOGEjDsgKSBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBDSUVVQworRkZCOTtGRkI5O0ZGQjk7MTEwRDsxMTBEOyAjICjvvrk7IO++uTsg7765OyDhhI07IOGEjTsgKSBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FOR0NJRVVDCitGRkJBO0ZGQkE7RkZCQTsxMTBFOzExMEU7ICMgKO++ujsg7766OyDvvro7IOGEjjsg4YSOOyApIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIENISUVVQ0gKK0ZGQkI7RkZCQjtGRkJCOzExMEY7MTEwRjsgIyAo7767OyDvvrs7IO++uzsg4YSPOyDhhI87ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgS0hJRVVLSAorRkZCQztGRkJDO0ZGQkM7MTExMDsxMTEwOyAjICjvvrw7IO++vDsg7768OyDhhJA7IOGEkDsgKSBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBUSElFVVRICitGRkJEO0ZGQkQ7RkZCRDsxMTExOzExMTE7ICMgKO++vTsg7769OyDvvr07IOGEkTsg4YSROyApIEhBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFBISUVVUEgKK0ZGQkU7RkZCRTtGRkJFOzExMTI7MTExMjsgIyAo776+OyDvvr47IO++vjsg4YSSOyDhhJI7ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgSElFVUgKK0ZGQzI7RkZDMjtGRkMyOzExNjE7MTE2MTsgIyAo77+COyDvv4I7IO+/gjsg4YWhOyDhhaE7ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgQQorRkZDMztGRkMzO0ZGQzM7MTE2MjsxMTYyOyAjICjvv4M7IO+/gzsg77+DOyDhhaI7IOGFojsgKSBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBBRQorRkZDNDtGRkM0O0ZGQzQ7MTE2MzsxMTYzOyAjICjvv4Q7IO+/hDsg77+EOyDhhaM7IOGFozsgKSBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBZQQorRkZDNTtGRkM1O0ZGQzU7MTE2NDsxMTY0OyAjICjvv4U7IO+/hTsg77+FOyDhhaQ7IOGFpDsgKSBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBZQUUKK0ZGQzY7RkZDNjtGRkM2OzExNjU7MTE2NTsgIyAo77+GOyDvv4Y7IO+/hjsg4YWlOyDhhaU7ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgRU8KK0ZGQzc7RkZDNztGRkM3OzExNjY7MTE2NjsgIyAo77+HOyDvv4c7IO+/hzsg4YWmOyDhhaY7ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgRQorRkZDQTtGRkNBO0ZGQ0E7MTE2NzsxMTY3OyAjICjvv4o7IO+/ijsg77+KOyDhhac7IOGFpzsgKSBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBZRU8KK0ZGQ0I7RkZDQjtGRkNCOzExNjg7MTE2ODsgIyAo77+LOyDvv4s7IO+/izsg4YWoOyDhhag7ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUUKK0ZGQ0M7RkZDQztGRkNDOzExNjk7MTE2OTsgIyAo77+MOyDvv4w7IO+/jDsg4YWpOyDhhak7ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTworRkZDRDtGRkNEO0ZGQ0Q7MTE2QTsxMTZBOyAjICjvv407IO+/jTsg77+NOyDhhao7IOGFqjsgKSBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBXQQorRkZDRTtGRkNFO0ZGQ0U7MTE2QjsxMTZCOyAjICjvv447IO+/jjsg77+OOyDhhas7IOGFqzsgKSBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBXQUUKK0ZGQ0Y7RkZDRjtGRkNGOzExNkM7MTE2QzsgIyAo77+POyDvv487IO+/jzsg4YWsOyDhhaw7ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgT0UKK0ZGRDI7RkZEMjtGRkQyOzExNkQ7MTE2RDsgIyAo77+SOyDvv5I7IO+/kjsg4YWtOyDhha07ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWU8KK0ZGRDM7RkZEMztGRkQzOzExNkU7MTE2RTsgIyAo77+TOyDvv5M7IO+/kzsg4YWuOyDhha47ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgVQorRkZENDtGRkQ0O0ZGRDQ7MTE2RjsxMTZGOyAjICjvv5Q7IO+/lDsg77+UOyDhha87IOGFrzsgKSBIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBXRU8KK0ZGRDU7RkZENTtGRkQ1OzExNzA7MTE3MDsgIyAo77+VOyDvv5U7IO+/lTsg4YWwOyDhhbA7ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgV0UKK0ZGRDY7RkZENjtGRkQ2OzExNzE7MTE3MTsgIyAo77+WOyDvv5Y7IO+/ljsg4YWxOyDhhbE7ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgV0kKK0ZGRDc7RkZENztGRkQ3OzExNzI7MTE3MjsgIyAo77+XOyDvv5c7IO+/lzsg4YWyOyDhhbI7ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWVUKK0ZGREE7RkZEQTtGRkRBOzExNzM7MTE3MzsgIyAo77+aOyDvv5o7IO+/mjsg4YWzOyDhhbM7ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgRVUKK0ZGREI7RkZEQjtGRkRCOzExNzQ7MTE3NDsgIyAo77+bOyDvv5s7IO+/mzsg4YW0OyDhhbQ7ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUkKK0ZGREM7RkZEQztGRkRDOzExNzU7MTE3NTsgIyAo77+cOyDvv5w7IO+/nDsg4YW1OyDhhbU7ICkgSEFMRldJRFRIIEhBTkdVTCBMRVRURVIgSQorRkZFMDtGRkUwO0ZGRTA7MDBBMjswMEEyOyAjICjvv6A7IO+/oDsg77+gOyDCojsgwqI7ICkgRlVMTFdJRFRIIENFTlQgU0lHTgorRkZFMTtGRkUxO0ZGRTE7MDBBMzswMEEzOyAjICjvv6E7IO+/oTsg77+hOyDCozsgwqM7ICkgRlVMTFdJRFRIIFBPVU5EIFNJR04KK0ZGRTI7RkZFMjtGRkUyOzAwQUM7MDBBQzsgIyAo77+iOyDvv6I7IO+/ojsgwqw7IMKsOyApIEZVTExXSURUSCBOT1QgU0lHTgorRkZFMztGRkUzO0ZGRTM7MDAyMCAwMzA0OzAwMjAgMDMwNDsgIyAo77+jOyDvv6M7IO+/ozsgIOKXjMyEOyAg4peMzIQ7ICkgRlVMTFdJRFRIIE1BQ1JPTgorRkZFNDtGRkU0O0ZGRTQ7MDBBNjswMEE2OyAjICjvv6Q7IO+/pDsg77+kOyDCpjsgwqY7ICkgRlVMTFdJRFRIIEJST0tFTiBCQVIKK0ZGRTU7RkZFNTtGRkU1OzAwQTU7MDBBNTsgIyAo77+lOyDvv6U7IO+/pTsgwqU7IMKlOyApIEZVTExXSURUSCBZRU4gU0lHTgorRkZFNjtGRkU2O0ZGRTY7MjBBOTsyMEE5OyAjICjvv6Y7IO+/pjsg77+mOyDigqk7IOKCqTsgKSBGVUxMV0lEVEggV09OIFNJR04KK0ZGRTg7RkZFODtGRkU4OzI1MDI7MjUwMjsgIyAo77+oOyDvv6g7IO+/qDsg4pSCOyDilII7ICkgSEFMRldJRFRIIEZPUk1TIExJR0hUIFZFUlRJQ0FMCitGRkU5O0ZGRTk7RkZFOTsyMTkwOzIxOTA7ICMgKO+/qTsg77+pOyDvv6k7IOKGkDsg4oaQOyApIEhBTEZXSURUSCBMRUZUV0FSRFMgQVJST1cKK0ZGRUE7RkZFQTtGRkVBOzIxOTE7MjE5MTsgIyAo77+qOyDvv6o7IO+/qjsg4oaROyDihpE7ICkgSEFMRldJRFRIIFVQV0FSRFMgQVJST1cKK0ZGRUI7RkZFQjtGRkVCOzIxOTI7MjE5MjsgIyAo77+rOyDvv6s7IO+/qzsg4oaSOyDihpI7ICkgSEFMRldJRFRIIFJJR0hUV0FSRFMgQVJST1cKK0ZGRUM7RkZFQztGRkVDOzIxOTM7MjE5MzsgIyAo77+sOyDvv6w7IO+/rDsg4oaTOyDihpM7ICkgSEFMRldJRFRIIERPV05XQVJEUyBBUlJPVworRkZFRDtGRkVEO0ZGRUQ7MjVBMDsyNUEwOyAjICjvv607IO+/rTsg77+tOyDilqA7IOKWoDsgKSBIQUxGV0lEVEggQkxBQ0sgU1FVQVJFCitGRkVFO0ZGRUU7RkZFRTsyNUNCOzI1Q0I7ICMgKO+/rjsg77+uOyDvv647IOKXizsg4peLOyApIEhBTEZXSURUSCBXSElURSBDSVJDTEUKKyMKKyMgUGFydCAyOiBDYW5vbmljYWwgT3JkZXIgVGVzdAorIworMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzAwIDAwNjI7MDBFMCAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMDAgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjMyAYjsgw6Dil4zWruKXjMyA4peMzJViOyBh4peM1q7il4zMgOKXjMyA4peMzJViOyDDoOKXjNau4peMzIDil4zMlWI7IGHil4zWruKXjMyA4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMwMCAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwRTAgMDVBRSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzAwIDAzMTUgMDA2MjswMEUwIDA1QUUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zMgOKXjMyV4peMzIDil4zWrmI7IMOg4peM1q7il4zMgOKXjMyVYjsgYeKXjNau4peMzIDil4zMgOKXjMyVYjsgw6Dil4zWruKXjMyA4peMzJViOyBh4peM1q7il4zMgOKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzMDEgMDA2MjswMEUwIDA1QUUgMDMwMSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwMSAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzMDEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMDEgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peMzIFiOyDDoOKXjNau4peMzIHil4zMlWI7IGHil4zWruKXjMyA4peMzIHil4zMlWI7IMOg4peM1q7il4zMgeKXjMyVYjsgYeKXjNau4peMzIDil4zMgeKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBDT01CSU5JTkcgQUNVVEUgQUNDRU5ULCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzAxIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDBFMSAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAxIDAzMDAgMDMxNSAwMDYyOzAwRTEgMDVBRSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMSAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjMyB4peMzJXil4zMgOKXjNauYjsgw6Hil4zWruKXjMyA4peMzJViOyBh4peM1q7il4zMgeKXjMyA4peMzJViOyDDoeKXjNau4peMzIDil4zMlWI7IGHil4zWruKXjMyB4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBBQ1VURSBBQ0NFTlQsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDMwMiAwMDYyOzAwRTAgMDVBRSAwMzAyIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzAyIDAzMTUgMDA2MjswMEUwIDA1QUUgMDMwMiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwMiAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zMgmI7IMOg4peM1q7il4zMguKXjMyVYjsgYeKXjNau4peMzIDil4zMguKXjMyVYjsgw6Dil4zWruKXjMyC4peMzJViOyBh4peM1q7il4zMgOKXjMyC4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIENPTUJJTklORyBDSVJDVU1GTEVYIEFDQ0VOVCwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMwMiAwMzE1IDAzMDAgMDVBRSAwMDYyOzFFQTcgMDVBRSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDIgMDMwMCAwMzE1IDAwNjI7MUVBNyAwNUFFIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMiAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjMyC4peMzJXil4zMgOKXjNauYjsg4bqn4peM1q7il4zMlWI7IGHil4zWruKXjMyC4peMzIDil4zMlWI7IOG6p+KXjNau4peMzJViOyBh4peM1q7il4zMguKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ0lSQ1VNRkxFWCBBQ0NFTlQsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDMwMyAwMDYyOzAwRTAgMDVBRSAwMzAzIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzAzIDAzMTUgMDA2MjswMEUwIDA1QUUgMDMwMyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwMyAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zMg2I7IMOg4peM1q7il4zMg+KXjMyVYjsgYeKXjNau4peMzIDil4zMg+KXjMyVYjsgw6Dil4zWruKXjMyD4peMzJViOyBh4peM1q7il4zMgOKXjMyD4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIENPTUJJTklORyBUSUxERSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMwMyAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwRTMgMDVBRSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMyAwMzAwIDAzMTUgMDA2MjswMEUzIDA1QUUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDMgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zMg+KXjMyV4peMzIDil4zWrmI7IMOj4peM1q7il4zMgOKXjMyVYjsgYeKXjNau4peMzIPil4zMgOKXjMyVYjsgw6Pil4zWruKXjMyA4peMzJViOyBh4peM1q7il4zMg+KXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgVElMREUsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDMwNCAwMDYyOzAwRTAgMDVBRSAwMzA0IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzA0IDAzMTUgMDA2MjswMEUwIDA1QUUgMDMwNCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwNCAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zMhGI7IMOg4peM1q7il4zMhOKXjMyVYjsgYeKXjNau4peMzIDil4zMhOKXjMyVYjsgw6Dil4zWruKXjMyE4peMzJViOyBh4peM1q7il4zMgOKXjMyE4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIENPTUJJTklORyBNQUNST04sIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMDQgMDMxNSAwMzAwIDA1QUUgMDA2MjswMTAxIDA1QUUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDQgMDMwMCAwMzE1IDAwNjI7MDEwMSAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzA0IDAzMDAgMDMxNSAwMDYyOyAjIChh4peMzITil4zMleKXjMyA4peM1q5iOyDEgeKXjNau4peMzIDil4zMlWI7IGHil4zWruKXjMyE4peMzIDil4zMlWI7IMSB4peM1q7il4zMgOKXjMyVYjsgYeKXjNau4peMzITil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIE1BQ1JPTiwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzA1IDAwNjI7MDBFMCAwNUFFIDAzMDUgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMDUgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzA1IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzA1IDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjMyFYjsgw6Dil4zWruKXjMyF4peMzJViOyBh4peM1q7il4zMgOKXjMyF4peMzJViOyDDoOKXjNau4peMzIXil4zMlWI7IGHil4zWruKXjMyA4peMzIXil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQ09NQklOSU5HIE9WRVJMSU5FLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzA1IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDAzMDUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDUgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zMheKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjMyF4peMzIDil4zMlWI7IGHil4zWruKXjMyF4peMzIDil4zMlWI7IGHil4zWruKXjMyF4peMzIDil4zMlWI7IGHil4zWruKXjMyF4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBPVkVSTElORSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzA2IDAwNjI7MDBFMCAwNUFFIDAzMDYgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMDYgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzA2IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzA2IDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjMyGYjsgw6Dil4zWruKXjMyG4peMzJViOyBh4peM1q7il4zMgOKXjMyG4peMzJViOyDDoOKXjNau4peMzIbil4zMlWI7IGHil4zWruKXjMyA4peMzIbil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQ09NQklOSU5HIEJSRVZFLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzA2IDAzMTUgMDMwMCAwNUFFIDAwNjI7MUVCMSAwNUFFIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwNiAwMzAwIDAzMTUgMDA2MjsxRUIxIDA1QUUgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzA2IDAzMDAgMDMxNSAwMDYyOyAjIChh4peMzIbil4zMleKXjMyA4peM1q5iOyDhurHil4zWruKXjMyVYjsgYeKXjNau4peMzIbil4zMgOKXjMyVYjsg4bqx4peM1q7il4zMlWI7IGHil4zWruKXjMyG4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBCUkVWRSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzA3IDAwNjI7MDBFMCAwNUFFIDAzMDcgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMDcgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzA3IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzA3IDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjMyHYjsgw6Dil4zWruKXjMyH4peMzJViOyBh4peM1q7il4zMgOKXjMyH4peMzJViOyDDoOKXjNau4peMzIfil4zMlWI7IGHil4zWruKXjMyA4peMzIfil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQ09NQklOSU5HIERPVCBBQk9WRSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMwNyAwMzE1IDAzMDAgMDVBRSAwMDYyOzAyMjcgMDVBRSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwNyAwMzAwIDAzMTUgMDA2MjswMjI3IDA1QUUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDcgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zMh+KXjMyV4peMzIDil4zWrmI7IMin4peM1q7il4zMgOKXjMyVYjsgYeKXjNau4peMzIfil4zMgOKXjMyVYjsgyKfil4zWruKXjMyA4peMzJViOyBh4peM1q7il4zMh+KXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgRE9UIEFCT1ZFLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzMDggMDA2MjswMEUwIDA1QUUgMDMwOCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwOCAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzMDggMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMDggMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peMzIhiOyDDoOKXjNau4peMzIjil4zMlWI7IGHil4zWruKXjMyA4peMzIjil4zMlWI7IMOg4peM1q7il4zMiOKXjMyVYjsgYeKXjNau4peMzIDil4zMiOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBDT01CSU5JTkcgRElBRVJFU0lTLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzA4IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDBFNCAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzA4IDAzMDAgMDMxNSAwMDYyOzAwRTQgMDVBRSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwOCAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjMyI4peMzJXil4zMgOKXjNauYjsgw6Til4zWruKXjMyA4peMzJViOyBh4peM1q7il4zMiOKXjMyA4peMzJViOyDDpOKXjNau4peMzIDil4zMlWI7IGHil4zWruKXjMyI4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBESUFFUkVTSVMsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDMwOSAwMDYyOzAwRTAgMDVBRSAwMzA5IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzA5IDAzMTUgMDA2MjswMEUwIDA1QUUgMDMwOSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwOSAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zMiWI7IMOg4peM1q7il4zMieKXjMyVYjsgYeKXjNau4peMzIDil4zMieKXjMyVYjsgw6Dil4zWruKXjMyJ4peMzJViOyBh4peM1q7il4zMgOKXjMyJ4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIENPTUJJTklORyBIT09LIEFCT1ZFLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzA5IDAzMTUgMDMwMCAwNUFFIDAwNjI7MUVBMyAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzA5IDAzMDAgMDMxNSAwMDYyOzFFQTMgMDVBRSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwOSAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjMyJ4peMzJXil4zMgOKXjNauYjsg4bqj4peM1q7il4zMgOKXjMyVYjsgYeKXjNau4peMzInil4zMgOKXjMyVYjsg4bqj4peM1q7il4zMgOKXjMyVYjsgYeKXjNau4peMzInil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIEhPT0sgQUJPVkUsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDMwQSAwMDYyOzAwRTAgMDVBRSAwMzBBIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzBBIDAzMTUgMDA2MjswMEUwIDA1QUUgMDMwQSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwQSAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zMimI7IMOg4peM1q7il4zMiuKXjMyVYjsgYeKXjNau4peMzIDil4zMiuKXjMyVYjsgw6Dil4zWruKXjMyK4peMzJViOyBh4peM1q7il4zMgOKXjMyK4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIENPTUJJTklORyBSSU5HIEFCT1ZFLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzBBIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDBFNSAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzBBIDAzMDAgMDMxNSAwMDYyOzAwRTUgMDVBRSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwQSAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjMyK4peMzJXil4zMgOKXjNauYjsgw6Xil4zWruKXjMyA4peMzJViOyBh4peM1q7il4zMiuKXjMyA4peMzJViOyDDpeKXjNau4peMzIDil4zMlWI7IGHil4zWruKXjMyK4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBSSU5HIEFCT1ZFLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzMEIgMDA2MjswMEUwIDA1QUUgMDMwQiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwQiAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzMEIgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMEIgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peMzItiOyDDoOKXjNau4peMzIvil4zMlWI7IGHil4zWruKXjMyA4peMzIvil4zMlWI7IMOg4peM1q7il4zMi+KXjMyVYjsgYeKXjNau4peMzIDil4zMi+KXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBDT01CSU5JTkcgRE9VQkxFIEFDVVRFIEFDQ0VOVCwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMwQiAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwMzBCIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzBCIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzBCIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzBCIDAzMDAgMDMxNSAwMDYyOyAjIChh4peMzIvil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zMi+KXjMyA4peMzJViOyBh4peM1q7il4zMi+KXjMyA4peMzJViOyBh4peM1q7il4zMi+KXjMyA4peMzJViOyBh4peM1q7il4zMi+KXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgRE9VQkxFIEFDVVRFIEFDQ0VOVCwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzBDIDAwNjI7MDBFMCAwNUFFIDAzMEMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMEMgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzBDIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzBDIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjMyMYjsgw6Dil4zWruKXjMyM4peMzJViOyBh4peM1q7il4zMgOKXjMyM4peMzJViOyDDoOKXjNau4peMzIzil4zMlWI7IGHil4zWruKXjMyA4peMzIzil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQ09NQklOSU5HIENBUk9OLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzBDIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDFDRSAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzBDIDAzMDAgMDMxNSAwMDYyOzAxQ0UgMDVBRSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwQyAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjMyM4peMzJXil4zMgOKXjNauYjsgx47il4zWruKXjMyA4peMzJViOyBh4peM1q7il4zMjOKXjMyA4peMzJViOyDHjuKXjNau4peMzIDil4zMlWI7IGHil4zWruKXjMyM4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDQVJPTiwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzBEIDAwNjI7MDBFMCAwNUFFIDAzMEQgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMEQgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzBEIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzBEIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjMyNYjsgw6Dil4zWruKXjMyN4peMzJViOyBh4peM1q7il4zMgOKXjMyN4peMzJViOyDDoOKXjNau4peMzI3il4zMlWI7IGHil4zWruKXjMyA4peMzI3il4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQ09NQklOSU5HIFZFUlRJQ0FMIExJTkUgQUJPVkUsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMEQgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDMwRCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwRCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwRCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwRCAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjMyN4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peMzI3il4zMgOKXjMyVYjsgYeKXjNau4peMzI3il4zMgOKXjMyVYjsgYeKXjNau4peMzI3il4zMgOKXjMyVYjsgYeKXjNau4peMzI3il4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIFZFUlRJQ0FMIExJTkUgQUJPVkUsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDMwRSAwMDYyOzAwRTAgMDVBRSAwMzBFIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzBFIDAzMTUgMDA2MjswMEUwIDA1QUUgMDMwRSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwRSAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zMjmI7IMOg4peM1q7il4zMjuKXjMyVYjsgYeKXjNau4peMzIDil4zMjuKXjMyVYjsgw6Dil4zWruKXjMyO4peMzJViOyBh4peM1q7il4zMgOKXjMyO4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIENPTUJJTklORyBET1VCTEUgVkVSVElDQUwgTElORSBBQk9WRSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMwRSAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwMzBFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzBFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzBFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzBFIDAzMDAgMDMxNSAwMDYyOyAjIChh4peMzI7il4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zMjuKXjMyA4peMzJViOyBh4peM1q7il4zMjuKXjMyA4peMzJViOyBh4peM1q7il4zMjuKXjMyA4peMzJViOyBh4peM1q7il4zMjuKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgRE9VQkxFIFZFUlRJQ0FMIExJTkUgQUJPVkUsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDMwRiAwMDYyOzAwRTAgMDVBRSAwMzBGIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzBGIDAzMTUgMDA2MjswMEUwIDA1QUUgMDMwRiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwRiAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zMj2I7IMOg4peM1q7il4zMj+KXjMyVYjsgYeKXjNau4peMzIDil4zMj+KXjMyVYjsgw6Dil4zWruKXjMyP4peMzJViOyBh4peM1q7il4zMgOKXjMyP4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIENPTUJJTklORyBET1VCTEUgR1JBVkUgQUNDRU5ULCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzBGIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDIwMSAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzBGIDAzMDAgMDMxNSAwMDYyOzAyMDEgMDVBRSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwRiAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjMyP4peMzJXil4zMgOKXjNauYjsgyIHil4zWruKXjMyA4peMzJViOyBh4peM1q7il4zMj+KXjMyA4peMzJViOyDIgeKXjNau4peMzIDil4zMlWI7IGHil4zWruKXjMyP4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBET1VCTEUgR1JBVkUgQUNDRU5ULCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzMTAgMDA2MjswMEUwIDA1QUUgMDMxMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMxMCAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzMTAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMTAgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peMzJBiOyDDoOKXjNau4peMzJDil4zMlWI7IGHil4zWruKXjMyA4peMzJDil4zMlWI7IMOg4peM1q7il4zMkOKXjMyVYjsgYeKXjNau4peMzIDil4zMkOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBDT01CSU5JTkcgQ0FORFJBQklORFUsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTAgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDMxMCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMxMCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMxMCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMxMCAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjMyQ4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peMzJDil4zMgOKXjMyVYjsgYeKXjNau4peMzJDil4zMgOKXjMyVYjsgYeKXjNau4peMzJDil4zMgOKXjMyVYjsgYeKXjNau4peMzJDil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENBTkRSQUJJTkRVLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzMTEgMDA2MjswMEUwIDA1QUUgMDMxMSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMxMSAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzMTEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMTEgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peMzJFiOyDDoOKXjNau4peMzJHil4zMlWI7IGHil4zWruKXjMyA4peMzJHil4zMlWI7IMOg4peM1q7il4zMkeKXjMyVYjsgYeKXjNau4peMzIDil4zMkeKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBDT01CSU5JTkcgSU5WRVJURUQgQlJFVkUsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTEgMDMxNSAwMzAwIDA1QUUgMDA2MjswMjAzIDA1QUUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMTEgMDMwMCAwMzE1IDAwNjI7MDIwMyAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzExIDAzMDAgMDMxNSAwMDYyOyAjIChh4peMzJHil4zMleKXjMyA4peM1q5iOyDIg+KXjNau4peMzIDil4zMlWI7IGHil4zWruKXjMyR4peMzIDil4zMlWI7IMiD4peM1q7il4zMgOKXjMyVYjsgYeKXjNau4peMzJHil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIElOVkVSVEVEIEJSRVZFLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzMTIgMDA2MjswMEUwIDA1QUUgMDMxMiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMxMiAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzMTIgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMTIgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peMzJJiOyDDoOKXjNau4peMzJLil4zMlWI7IGHil4zWruKXjMyA4peMzJLil4zMlWI7IMOg4peM1q7il4zMkuKXjMyVYjsgYeKXjNau4peMzIDil4zMkuKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBDT01CSU5JTkcgVFVSTkVEIENPTU1BIEFCT1ZFLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzEyIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDAzMTIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMTIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMTIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMTIgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zMkuKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjMyS4peMzIDil4zMlWI7IGHil4zWruKXjMyS4peMzIDil4zMlWI7IGHil4zWruKXjMyS4peMzIDil4zMlWI7IGHil4zWruKXjMyS4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBUVVJORUQgQ09NTUEgQUJPVkUsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDMxMyAwMDYyOzAwRTAgMDVBRSAwMzEzIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzEzIDAzMTUgMDA2MjswMEUwIDA1QUUgMDMxMyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMxMyAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zMk2I7IMOg4peM1q7il4zMk+KXjMyVYjsgYeKXjNau4peMzIDil4zMk+KXjMyVYjsgw6Dil4zWruKXjMyT4peMzJViOyBh4peM1q7il4zMgOKXjMyT4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIENPTUJJTklORyBDT01NQSBBQk9WRSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxMyAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwMzEzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzEzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzEzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzEzIDAzMDAgMDMxNSAwMDYyOyAjIChh4peMzJPil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zMk+KXjMyA4peMzJViOyBh4peM1q7il4zMk+KXjMyA4peMzJViOyBh4peM1q7il4zMk+KXjMyA4peMzJViOyBh4peM1q7il4zMk+KXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDMxNCAwMDYyOzAwRTAgMDVBRSAwMzE0IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzE0IDAzMTUgMDA2MjswMEUwIDA1QUUgMDMxNCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMxNCAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zMlGI7IMOg4peM1q7il4zMlOKXjMyVYjsgYeKXjNau4peMzIDil4zMlOKXjMyVYjsgw6Dil4zWruKXjMyU4peMzJViOyBh4peM1q7il4zMgOKXjMyU4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIENPTUJJTklORyBSRVZFUlNFRCBDT01NQSBBQk9WRSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNCAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwMzE0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzE0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzE0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzE0IDAzMDAgMDMxNSAwMDYyOyAjIChh4peMzJTil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zMlOKXjMyA4peMzJViOyBh4peM1q7il4zMlOKXjMyA4peMzJViOyBh4peM1q7il4zMlOKXjMyA4peMzJViOyBh4peM1q7il4zMlOKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgUkVWRVJTRUQgQ09NTUEgQUJPVkUsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDM2MiAwMzE1IDAzMDAgMDMxNSAwMDYyOzAwRTAgMDMxNSAwMzE1IDAzNjIgMDA2MjswMDYxIDAzMDAgMDMxNSAwMzE1IDAzNjIgMDA2MjswMEUwIDAzMTUgMDMxNSAwMzYyIDAwNjI7MDA2MSAwMzAwIDAzMTUgMDMxNSAwMzYyIDAwNjI7ICMgKGHil4zNouKXjMyV4peMzIDil4zMlWI7IMOg4peMzJXil4zMleKXjM2iYjsgYeKXjMyA4peMzJXil4zMleKXjM2iYjsgw6Dil4zMleKXjMyV4peMzaJiOyBh4peMzIDil4zMleKXjMyV4peMzaJiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgRE9VQkxFIFJJR0hUV0FSRFMgQVJST1cgQkVMT1csIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzNjIgMDMxNSAwMzAwIDAwNjI7MDBFMCAwMzE1IDAzMTUgMDM2MiAwMDYyOzAwNjEgMDMwMCAwMzE1IDAzMTUgMDM2MiAwMDYyOzAwRTAgMDMxNSAwMzE1IDAzNjIgMDA2MjswMDYxIDAzMDAgMDMxNSAwMzE1IDAzNjIgMDA2MjsgIyAoYeKXjMyV4peMzaLil4zMleKXjMyAYjsgw6Dil4zMleKXjMyV4peMzaJiOyBh4peMzIDil4zMleKXjMyV4peMzaJiOyDDoOKXjMyV4peMzJXil4zNomI7IGHil4zMgOKXjMyV4peMzJXil4zNomI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIERPVUJMRSBSSUdIVFdBUkRTIEFSUk9XIEJFTE9XLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzMTYgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjNaa4peMzJbil4zjgKril4zMlmI7IGHil4zjgKril4zMluKXjMyW4peM1ppiOyBh4peM44Cq4peMzJbil4zMluKXjNaaYjsgYeKXjOOAquKXjMyW4peMzJbil4zWmmI7IGHil4zjgKril4zMluKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTYgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjMyW4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zMluKXjMyW4peM1ppiOyBh4peM44Cq4peMzJbil4zMluKXjNaaYjsgYeKXjOOAquKXjMyW4peMzJbil4zWmmI7IGHil4zjgKril4zMluKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzMTcgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE3IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE3IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE3IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE3IDA1OUEgMDA2MjsgIyAoYeKXjNaa4peMzJbil4zjgKril4zMl2I7IGHil4zjgKril4zMluKXjMyX4peM1ppiOyBh4peM44Cq4peMzJbil4zMl+KXjNaaYjsgYeKXjOOAquKXjMyW4peMzJfil4zWmmI7IGHil4zjgKril4zMluKXjMyX4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIENPTUJJTklORyBBQ1VURSBBQ0NFTlQgQkVMT1csIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTcgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDMxNyAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNyAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNyAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNyAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjMyX4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zMl+KXjMyW4peM1ppiOyBh4peM44Cq4peMzJfil4zMluKXjNaaYjsgYeKXjOOAquKXjMyX4peMzJbil4zWmmI7IGHil4zjgKril4zMl+KXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQUNVVEUgQUNDRU5UIEJFTE9XLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzMTggMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE4IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE4IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE4IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE4IDA1OUEgMDA2MjsgIyAoYeKXjNaa4peMzJbil4zjgKril4zMmGI7IGHil4zjgKril4zMluKXjMyY4peM1ppiOyBh4peM44Cq4peMzJbil4zMmOKXjNaaYjsgYeKXjOOAquKXjMyW4peMzJjil4zWmmI7IGHil4zjgKril4zMluKXjMyY4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIENPTUJJTklORyBMRUZUIFRBQ0sgQkVMT1csIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTggMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDMxOCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxOCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxOCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxOCAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjMyY4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zMmOKXjMyW4peM1ppiOyBh4peM44Cq4peMzJjil4zMluKXjNaaYjsgYeKXjOOAquKXjMyY4peMzJbil4zWmmI7IGHil4zjgKril4zMmOKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgTEVGVCBUQUNLIEJFTE9XLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzMTkgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE5IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE5IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE5IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzE5IDA1OUEgMDA2MjsgIyAoYeKXjNaa4peMzJbil4zjgKril4zMmWI7IGHil4zjgKril4zMluKXjMyZ4peM1ppiOyBh4peM44Cq4peMzJbil4zMmeKXjNaaYjsgYeKXjOOAquKXjMyW4peMzJnil4zWmmI7IGHil4zjgKril4zMluKXjMyZ4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIENPTUJJTklORyBSSUdIVCBUQUNLIEJFTE9XLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE5IDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzMTkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTkgMDMxNiAwNTlBIDAwNjI7ICMgKGHil4zMmeKXjNaa4peMzJbil4zjgKpiOyBh4peM44Cq4peMzJnil4zMluKXjNaaYjsgYeKXjOOAquKXjMyZ4peMzJbil4zWmmI7IGHil4zjgKril4zMmeKXjMyW4peM1ppiOyBh4peM44Cq4peMzJnil4zMluKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIFJJR0hUIFRBQ0sgQkVMT1csIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDM2MiAwMzE1IDAzMDAgMDMxQSAwMDYyOzAwRTAgMDMxNSAwMzFBIDAzNjIgMDA2MjswMDYxIDAzMDAgMDMxNSAwMzFBIDAzNjIgMDA2MjswMEUwIDAzMTUgMDMxQSAwMzYyIDAwNjI7MDA2MSAwMzAwIDAzMTUgMDMxQSAwMzYyIDAwNjI7ICMgKGHil4zNouKXjMyV4peMzIDil4zMmmI7IMOg4peMzJXil4zMmuKXjM2iYjsgYeKXjMyA4peMzJXil4zMmuKXjM2iYjsgw6Dil4zMleKXjMya4peMzaJiOyBh4peMzIDil4zMleKXjMya4peMzaJiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgRE9VQkxFIFJJR0hUV0FSRFMgQVJST1cgQkVMT1csIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgQ09NQklOSU5HIExFRlQgQU5HTEUgQUJPVkUsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMUEgMDM2MiAwMzE1IDAzMDAgMDA2MjswMEUwIDAzMUEgMDMxNSAwMzYyIDAwNjI7MDA2MSAwMzAwIDAzMUEgMDMxNSAwMzYyIDAwNjI7MDBFMCAwMzFBIDAzMTUgMDM2MiAwMDYyOzAwNjEgMDMwMCAwMzFBIDAzMTUgMDM2MiAwMDYyOyAjIChh4peMzJril4zNouKXjMyV4peMzIBiOyDDoOKXjMya4peMzJXil4zNomI7IGHil4zMgOKXjMya4peMzJXil4zNomI7IMOg4peMzJril4zMleKXjM2iYjsgYeKXjMyA4peMzJril4zMleKXjM2iYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIExFRlQgQU5HTEUgQUJPVkUsIENPTUJJTklORyBET1VCTEUgUklHSFRXQVJEUyBBUlJPVyBCRUxPVywgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAzMDJBIDAzMUIgMDMyMSAwMzFCIDAwNjI7MDA2MSAwMzIxIDAzMUIgMDMxQiAzMDJBIDAwNjI7MDA2MSAwMzIxIDAzMUIgMDMxQiAzMDJBIDAwNjI7MDA2MSAwMzIxIDAzMUIgMDMxQiAzMDJBIDAwNjI7MDA2MSAwMzIxIDAzMUIgMDMxQiAzMDJBIDAwNjI7ICMgKGHil4zjgKril4zMm+KXjMyh4peMzJtiOyBh4peMzKHil4zMm+KXjMyb4peM44CqYjsgYeKXjMyh4peMzJvil4zMm+KXjOOAqmI7IGHil4zMoeKXjMyb4peMzJvil4zjgKpiOyBh4peMzKHil4zMm+KXjMyb4peM44CqYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBDT01CSU5JTkcgSE9STiwgQ09NQklOSU5HIFBBTEFUQUxJWkVEIEhPT0sgQkVMT1csIENPTUJJTklORyBIT1JOLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzFCIDMwMkEgMDMxQiAwMzIxIDAwNjI7MDA2MSAwMzIxIDAzMUIgMDMxQiAzMDJBIDAwNjI7MDA2MSAwMzIxIDAzMUIgMDMxQiAzMDJBIDAwNjI7MDA2MSAwMzIxIDAzMUIgMDMxQiAzMDJBIDAwNjI7MDA2MSAwMzIxIDAzMUIgMDMxQiAzMDJBIDAwNjI7ICMgKGHil4zMm+KXjOOAquKXjMyb4peMzKFiOyBh4peMzKHil4zMm+KXjMyb4peM44CqYjsgYeKXjMyh4peMzJvil4zMm+KXjOOAqmI7IGHil4zMoeKXjMyb4peMzJvil4zjgKpiOyBh4peMzKHil4zMm+KXjMyb4peM44CqYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIEhPUk4sIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgQ09NQklOSU5HIEhPUk4sIENPTUJJTklORyBQQUxBVEFMSVpFRCBIT09LIEJFTE9XLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzFDIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxQyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxQyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxQyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxQyAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peMzJxiOyBh4peM44Cq4peMzJbil4zMnOKXjNaaYjsgYeKXjOOAquKXjMyW4peMzJzil4zWmmI7IGHil4zjgKril4zMluKXjMyc4peM1ppiOyBh4peM44Cq4peMzJbil4zMnOKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBDT01CSU5JTkcgTEVGVCBIQUxGIFJJTkcgQkVMT1csIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMUMgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDMxQyAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxQyAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxQyAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxQyAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjMyc4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zMnOKXjMyW4peM1ppiOyBh4peM44Cq4peMzJzil4zMluKXjNaaYjsgYeKXjOOAquKXjMyc4peMzJbil4zWmmI7IGHil4zjgKril4zMnOKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgTEVGVCBIQUxGIFJJTkcgQkVMT1csIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDMxRCAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMUQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMUQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMUQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMUQgMDU5QSAwMDYyOyAjIChh4peM1pril4zMluKXjOOAquKXjMydYjsgYeKXjOOAquKXjMyW4peMzJ3il4zWmmI7IGHil4zjgKril4zMluKXjMyd4peM1ppiOyBh4peM44Cq4peMzJbil4zMneKXjNaaYjsgYeKXjOOAquKXjMyW4peMzJ3il4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgQ09NQklOSU5HIFVQIFRBQ0sgQkVMT1csIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMUQgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDMxRCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxRCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxRCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxRCAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjMyd4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zMneKXjMyW4peM1ppiOyBh4peM44Cq4peMzJ3il4zMluKXjNaaYjsgYeKXjOOAquKXjMyd4peMzJbil4zWmmI7IGHil4zjgKril4zMneKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgVVAgVEFDSyBCRUxPVywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzFFIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxRSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxRSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxRSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxRSAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peMzJ5iOyBh4peM44Cq4peMzJbil4zMnuKXjNaaYjsgYeKXjOOAquKXjMyW4peMzJ7il4zWmmI7IGHil4zjgKril4zMluKXjMye4peM1ppiOyBh4peM44Cq4peMzJbil4zMnuKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBDT01CSU5JTkcgRE9XTiBUQUNLIEJFTE9XLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzFFIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzMUUgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMUUgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMUUgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMUUgMDMxNiAwNTlBIDAwNjI7ICMgKGHil4zMnuKXjNaa4peMzJbil4zjgKpiOyBh4peM44Cq4peMzJ7il4zMluKXjNaaYjsgYeKXjOOAquKXjMye4peMzJbil4zWmmI7IGHil4zjgKril4zMnuKXjMyW4peM1ppiOyBh4peM44Cq4peMzJ7il4zMluKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIERPV04gVEFDSyBCRUxPVywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzFGIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxRiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxRiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxRiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMxRiAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peMzJ9iOyBh4peM44Cq4peMzJbil4zMn+KXjNaaYjsgYeKXjOOAquKXjMyW4peMzJ/il4zWmmI7IGHil4zjgKril4zMluKXjMyf4peM1ppiOyBh4peM44Cq4peMzJbil4zMn+KXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBDT01CSU5JTkcgUExVUyBTSUdOIEJFTE9XLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzFGIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzMUYgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMUYgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMUYgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMUYgMDMxNiAwNTlBIDAwNjI7ICMgKGHil4zMn+KXjNaa4peMzJbil4zjgKpiOyBh4peM44Cq4peMzJ/il4zMluKXjNaaYjsgYeKXjOOAquKXjMyf4peMzJbil4zWmmI7IGHil4zjgKril4zMn+KXjMyW4peM1ppiOyBh4peM44Cq4peMzJ/il4zMluKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIFBMVVMgU0lHTiBCRUxPVywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzIwIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyMCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyMCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyMCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyMCAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peMzKBiOyBh4peM44Cq4peMzJbil4zMoOKXjNaaYjsgYeKXjOOAquKXjMyW4peMzKDil4zWmmI7IGHil4zjgKril4zMluKXjMyg4peM1ppiOyBh4peM44Cq4peMzJbil4zMoOKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBDT01CSU5JTkcgTUlOVVMgU0lHTiBCRUxPVywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMyMCAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwMzIwIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzIwIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzIwIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzIwIDAzMTYgMDU5QSAwMDYyOyAjIChh4peMzKDil4zWmuKXjMyW4peM44CqYjsgYeKXjOOAquKXjMyg4peMzJbil4zWmmI7IGHil4zjgKril4zMoOKXjMyW4peM1ppiOyBh4peM44Cq4peMzKDil4zMluKXjNaaYjsgYeKXjOOAquKXjMyg4peMzJbil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBNSU5VUyBTSUdOIEJFTE9XLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMUIgMDMyMSAwRjc0IDAzMjEgMDA2MjswMDYxIDBGNzQgMDMyMSAwMzIxIDAzMUIgMDA2MjswMDYxIDBGNzQgMDMyMSAwMzIxIDAzMUIgMDA2MjswMDYxIDBGNzQgMDMyMSAwMzIxIDAzMUIgMDA2MjswMDYxIDBGNzQgMDMyMSAwMzIxIDAzMUIgMDA2MjsgIyAoYeKXjMyb4peMzKHil4zgvbTil4zMoWI7IGHil4zgvbTil4zMoeKXjMyh4peMzJtiOyBh4peM4L204peMzKHil4zMoeKXjMybYjsgYeKXjOC9tOKXjMyh4peMzKHil4zMm2I7IGHil4zgvbTil4zMoeKXjMyh4peMzJtiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgSE9STiwgQ09NQklOSU5HIFBBTEFUQUxJWkVEIEhPT0sgQkVMT1csIFRJQkVUQU4gVk9XRUwgU0lHTiBVLCBDT01CSU5JTkcgUEFMQVRBTElaRUQgSE9PSyBCRUxPVywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMyMSAwMzFCIDAzMjEgMEY3NCAwMDYyOzAwNjEgMEY3NCAwMzIxIDAzMjEgMDMxQiAwMDYyOzAwNjEgMEY3NCAwMzIxIDAzMjEgMDMxQiAwMDYyOzAwNjEgMEY3NCAwMzIxIDAzMjEgMDMxQiAwMDYyOzAwNjEgMEY3NCAwMzIxIDAzMjEgMDMxQiAwMDYyOyAjIChh4peMzKHil4zMm+KXjMyh4peM4L20YjsgYeKXjOC9tOKXjMyh4peMzKHil4zMm2I7IGHil4zgvbTil4zMoeKXjMyh4peMzJtiOyBh4peM4L204peMzKHil4zMoeKXjMybYjsgYeKXjOC9tOKXjMyh4peMzKHil4zMm2I7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBQQUxBVEFMSVpFRCBIT09LIEJFTE9XLCBDT01CSU5JTkcgSE9STiwgQ09NQklOSU5HIFBBTEFUQUxJWkVEIEhPT0sgQkVMT1csIFRJQkVUQU4gVk9XRUwgU0lHTiBVLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzFCIDAzMjEgMEY3NCAwMzIyIDAwNjI7MDA2MSAwRjc0IDAzMjEgMDMyMiAwMzFCIDAwNjI7MDA2MSAwRjc0IDAzMjEgMDMyMiAwMzFCIDAwNjI7MDA2MSAwRjc0IDAzMjEgMDMyMiAwMzFCIDAwNjI7MDA2MSAwRjc0IDAzMjEgMDMyMiAwMzFCIDAwNjI7ICMgKGHil4zMm+KXjMyh4peM4L204peMzKJiOyBh4peM4L204peMzKHil4zMouKXjMybYjsgYeKXjOC9tOKXjMyh4peMzKLil4zMm2I7IGHil4zgvbTil4zMoeKXjMyi4peMzJtiOyBh4peM4L204peMzKHil4zMouKXjMybYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIEhPUk4sIENPTUJJTklORyBQQUxBVEFMSVpFRCBIT09LIEJFTE9XLCBUSUJFVEFOIFZPV0VMIFNJR04gVSwgQ09NQklOSU5HIFJFVFJPRkxFWCBIT09LIEJFTE9XLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzIyIDAzMUIgMDMyMSAwRjc0IDAwNjI7MDA2MSAwRjc0IDAzMjIgMDMyMSAwMzFCIDAwNjI7MDA2MSAwRjc0IDAzMjIgMDMyMSAwMzFCIDAwNjI7MDA2MSAwRjc0IDAzMjIgMDMyMSAwMzFCIDAwNjI7MDA2MSAwRjc0IDAzMjIgMDMyMSAwMzFCIDAwNjI7ICMgKGHil4zMouKXjMyb4peMzKHil4zgvbRiOyBh4peM4L204peMzKLil4zMoeKXjMybYjsgYeKXjOC9tOKXjMyi4peMzKHil4zMm2I7IGHil4zgvbTil4zMouKXjMyh4peMzJtiOyBh4peM4L204peMzKLil4zMoeKXjMybYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIFJFVFJPRkxFWCBIT09LIEJFTE9XLCBDT01CSU5JTkcgSE9STiwgQ09NQklOSU5HIFBBTEFUQUxJWkVEIEhPT0sgQkVMT1csIFRJQkVUQU4gVk9XRUwgU0lHTiBVLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzIzIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyMyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyMyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyMyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyMyAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peMzKNiOyBh4peM44Cq4peMzJbil4zMo+KXjNaaYjsgYeKXjOOAquKXjMyW4peMzKPil4zWmmI7IGHil4zjgKril4zMluKXjMyj4peM1ppiOyBh4peM44Cq4peMzJbil4zMo+KXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBDT01CSU5JTkcgRE9UIEJFTE9XLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzIzIDA1OUEgMDMxNiAzMDJBIDAwNjI7MUVBMSAzMDJBIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzIzIDAzMTYgMDU5QSAwMDYyOzFFQTEgMzAyQSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyMyAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjMyj4peM1pril4zMluKXjOOAqmI7IOG6oeKXjOOAquKXjMyW4peM1ppiOyBh4peM44Cq4peMzKPil4zMluKXjNaaYjsg4bqh4peM44Cq4peMzJbil4zWmmI7IGHil4zjgKril4zMo+KXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgRE9UIEJFTE9XLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzMjQgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzI0IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzI0IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzI0IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzI0IDA1OUEgMDA2MjsgIyAoYeKXjNaa4peMzJbil4zjgKril4zMpGI7IGHil4zjgKril4zMluKXjMyk4peM1ppiOyBh4peM44Cq4peMzJbil4zMpOKXjNaaYjsgYeKXjOOAquKXjMyW4peMzKTil4zWmmI7IGHil4zjgKril4zMluKXjMyk4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIENPTUJJTklORyBESUFFUkVTSVMgQkVMT1csIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMjQgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDMyNCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyNCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyNCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyNCAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjMyk4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zMpOKXjMyW4peM1ppiOyBh4peM44Cq4peMzKTil4zMluKXjNaaYjsgYeKXjOOAquKXjMyk4peMzJbil4zWmmI7IGHil4zjgKril4zMpOKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgRElBRVJFU0lTIEJFTE9XLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzMjUgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzI1IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzI1IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzI1IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzI1IDA1OUEgMDA2MjsgIyAoYeKXjNaa4peMzJbil4zjgKril4zMpWI7IGHil4zjgKril4zMluKXjMyl4peM1ppiOyBh4peM44Cq4peMzJbil4zMpeKXjNaaYjsgYeKXjOOAquKXjMyW4peMzKXil4zWmmI7IGHil4zjgKril4zMluKXjMyl4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIENPTUJJTklORyBSSU5HIEJFTE9XLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzI1IDA1OUEgMDMxNiAzMDJBIDAwNjI7MUUwMSAzMDJBIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzI1IDAzMTYgMDU5QSAwMDYyOzFFMDEgMzAyQSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyNSAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjMyl4peM1pril4zMluKXjOOAqmI7IOG4geKXjOOAquKXjMyW4peM1ppiOyBh4peM44Cq4peMzKXil4zMluKXjNaaYjsg4biB4peM44Cq4peMzJbil4zWmmI7IGHil4zjgKril4zMpeKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgUklORyBCRUxPVywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzI2IDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyNiAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peMzKZiOyBh4peM44Cq4peMzJbil4zMpuKXjNaaYjsgYeKXjOOAquKXjMyW4peMzKbil4zWmmI7IGHil4zjgKril4zMluKXjMym4peM1ppiOyBh4peM44Cq4peMzJbil4zMpuKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBDT01CSU5JTkcgQ09NTUEgQkVMT1csIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMjYgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDMyNiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyNiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyNiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyNiAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjMym4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zMpuKXjMyW4peM1ppiOyBh4peM44Cq4peMzKbil4zMluKXjNaaYjsgYeKXjOOAquKXjMym4peMzJbil4zWmmI7IGHil4zjgKril4zMpuKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQkVMT1csIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxQiAwMzIxIDBGNzQgMDMyNyAwMDYyOzAwNjEgMEY3NCAwMzIxIDAzMjcgMDMxQiAwMDYyOzAwNjEgMEY3NCAwMzIxIDAzMjcgMDMxQiAwMDYyOzAwNjEgMEY3NCAwMzIxIDAzMjcgMDMxQiAwMDYyOzAwNjEgMEY3NCAwMzIxIDAzMjcgMDMxQiAwMDYyOyAjIChh4peMzJvil4zMoeKXjOC9tOKXjMynYjsgYeKXjOC9tOKXjMyh4peMzKfil4zMm2I7IGHil4zgvbTil4zMoeKXjMyn4peMzJtiOyBh4peM4L204peMzKHil4zMp+KXjMybYjsgYeKXjOC9tOKXjMyh4peMzKfil4zMm2I7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBIT1JOLCBDT01CSU5JTkcgUEFMQVRBTElaRUQgSE9PSyBCRUxPVywgVElCRVRBTiBWT1dFTCBTSUdOIFUsIENPTUJJTklORyBDRURJTExBLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzI3IDAzMUIgMDMyMSAwRjc0IDAwNjI7MDA2MSAwRjc0IDAzMjcgMDMyMSAwMzFCIDAwNjI7MDA2MSAwRjc0IDAzMjcgMDMyMSAwMzFCIDAwNjI7MDA2MSAwRjc0IDAzMjcgMDMyMSAwMzFCIDAwNjI7MDA2MSAwRjc0IDAzMjcgMDMyMSAwMzFCIDAwNjI7ICMgKGHil4zMp+KXjMyb4peMzKHil4zgvbRiOyBh4peM4L204peMzKfil4zMoeKXjMybYjsgYeKXjOC9tOKXjMyn4peMzKHil4zMm2I7IGHil4zgvbTil4zMp+KXjMyh4peMzJtiOyBh4peM4L204peMzKfil4zMoeKXjMybYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENFRElMTEEsIENPTUJJTklORyBIT1JOLCBDT01CSU5JTkcgUEFMQVRBTElaRUQgSE9PSyBCRUxPVywgVElCRVRBTiBWT1dFTCBTSUdOIFUsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMUIgMDMyMSAwRjc0IDAzMjggMDA2MjswMDYxIDBGNzQgMDMyMSAwMzI4IDAzMUIgMDA2MjswMDYxIDBGNzQgMDMyMSAwMzI4IDAzMUIgMDA2MjswMDYxIDBGNzQgMDMyMSAwMzI4IDAzMUIgMDA2MjswMDYxIDBGNzQgMDMyMSAwMzI4IDAzMUIgMDA2MjsgIyAoYeKXjMyb4peMzKHil4zgvbTil4zMqGI7IGHil4zgvbTil4zMoeKXjMyo4peMzJtiOyBh4peM4L204peMzKHil4zMqOKXjMybYjsgYeKXjOC9tOKXjMyh4peMzKjil4zMm2I7IGHil4zgvbTil4zMoeKXjMyo4peMzJtiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgSE9STiwgQ09NQklOSU5HIFBBTEFUQUxJWkVEIEhPT0sgQkVMT1csIFRJQkVUQU4gVk9XRUwgU0lHTiBVLCBDT01CSU5JTkcgT0dPTkVLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzI4IDAzMUIgMDMyMSAwRjc0IDAwNjI7MDEwNSAwRjc0IDAzMjEgMDMxQiAwMDYyOzAwNjEgMEY3NCAwMzI4IDAzMjEgMDMxQiAwMDYyOzAxMDUgMEY3NCAwMzIxIDAzMUIgMDA2MjswMDYxIDBGNzQgMDMyOCAwMzIxIDAzMUIgMDA2MjsgIyAoYeKXjMyo4peMzJvil4zMoeKXjOC9tGI7IMSF4peM4L204peMzKHil4zMm2I7IGHil4zgvbTil4zMqOKXjMyh4peMzJtiOyDEheKXjOC9tOKXjMyh4peMzJtiOyBh4peM4L204peMzKjil4zMoeKXjMybYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIE9HT05FSywgQ09NQklOSU5HIEhPUk4sIENPTUJJTklORyBQQUxBVEFMSVpFRCBIT09LIEJFTE9XLCBUSUJFVEFOIFZPV0VMIFNJR04gVSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDMyOSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMjkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMjkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMjkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMjkgMDU5QSAwMDYyOyAjIChh4peM1pril4zMluKXjOOAquKXjMypYjsgYeKXjOOAquKXjMyW4peMzKnil4zWmmI7IGHil4zjgKril4zMluKXjMyp4peM1ppiOyBh4peM44Cq4peMzJbil4zMqeKXjNaaYjsgYeKXjOOAquKXjMyW4peMzKnil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgQ09NQklOSU5HIFZFUlRJQ0FMIExJTkUgQkVMT1csIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMjkgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDMyOSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyOSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyOSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyOSAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjMyp4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zMqeKXjMyW4peM1ppiOyBh4peM44Cq4peMzKnil4zMluKXjNaaYjsgYeKXjOOAquKXjMyp4peMzJbil4zWmmI7IGHil4zjgKril4zMqeKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgVkVSVElDQUwgTElORSBCRUxPVywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzJBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyQSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyQSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyQSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyQSAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peMzKpiOyBh4peM44Cq4peMzJbil4zMquKXjNaaYjsgYeKXjOOAquKXjMyW4peMzKril4zWmmI7IGHil4zjgKril4zMluKXjMyq4peM1ppiOyBh4peM44Cq4peMzJbil4zMquKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBDT01CSU5JTkcgQlJJREdFIEJFTE9XLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzJBIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzMkEgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMkEgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMkEgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMkEgMDMxNiAwNTlBIDAwNjI7ICMgKGHil4zMquKXjNaa4peMzJbil4zjgKpiOyBh4peM44Cq4peMzKril4zMluKXjNaaYjsgYeKXjOOAquKXjMyq4peMzJbil4zWmmI7IGHil4zjgKril4zMquKXjMyW4peM1ppiOyBh4peM44Cq4peMzKril4zMluKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIEJSSURHRSBCRUxPVywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzJCIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyQiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyQiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyQiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyQiAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peMzKtiOyBh4peM44Cq4peMzJbil4zMq+KXjNaaYjsgYeKXjOOAquKXjMyW4peMzKvil4zWmmI7IGHil4zjgKril4zMluKXjMyr4peM1ppiOyBh4peM44Cq4peMzJbil4zMq+KXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBDT01CSU5JTkcgSU5WRVJURUQgRE9VQkxFIEFSQ0ggQkVMT1csIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMkIgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDMyQiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyQiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyQiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyQiAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjMyr4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zMq+KXjMyW4peM1ppiOyBh4peM44Cq4peMzKvil4zMluKXjNaaYjsgYeKXjOOAquKXjMyr4peMzJbil4zWmmI7IGHil4zjgKril4zMq+KXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgSU5WRVJURUQgRE9VQkxFIEFSQ0ggQkVMT1csIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDMyQyAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMkMgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMkMgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMkMgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMkMgMDU5QSAwMDYyOyAjIChh4peM1pril4zMluKXjOOAquKXjMysYjsgYeKXjOOAquKXjMyW4peMzKzil4zWmmI7IGHil4zjgKril4zMluKXjMys4peM1ppiOyBh4peM44Cq4peMzJbil4zMrOKXjNaaYjsgYeKXjOOAquKXjMyW4peMzKzil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgQ09NQklOSU5HIENBUk9OIEJFTE9XLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzJDIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzMkMgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMkMgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMkMgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMkMgMDMxNiAwNTlBIDAwNjI7ICMgKGHil4zMrOKXjNaa4peMzJbil4zjgKpiOyBh4peM44Cq4peMzKzil4zMluKXjNaaYjsgYeKXjOOAquKXjMys4peMzJbil4zWmmI7IGHil4zjgKril4zMrOKXjMyW4peM1ppiOyBh4peM44Cq4peMzKzil4zMluKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENBUk9OIEJFTE9XLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzMkQgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzJEIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzJEIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzJEIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzJEIDA1OUEgMDA2MjsgIyAoYeKXjNaa4peMzJbil4zjgKril4zMrWI7IGHil4zjgKril4zMluKXjMyt4peM1ppiOyBh4peM44Cq4peMzJbil4zMreKXjNaaYjsgYeKXjOOAquKXjMyW4peMzK3il4zWmmI7IGHil4zjgKril4zMluKXjMyt4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIENPTUJJTklORyBDSVJDVU1GTEVYIEFDQ0VOVCBCRUxPVywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMyRCAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwMzJEIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzJEIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzJEIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzJEIDAzMTYgMDU5QSAwMDYyOyAjIChh4peMzK3il4zWmuKXjMyW4peM44CqYjsgYeKXjOOAquKXjMyt4peMzJbil4zWmmI7IGHil4zjgKril4zMreKXjMyW4peM1ppiOyBh4peM44Cq4peMzK3il4zMluKXjNaaYjsgYeKXjOOAquKXjMyt4peMzJbil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDSVJDVU1GTEVYIEFDQ0VOVCBCRUxPVywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzJFIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyRSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyRSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyRSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMyRSAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peMzK5iOyBh4peM44Cq4peMzJbil4zMruKXjNaaYjsgYeKXjOOAquKXjMyW4peMzK7il4zWmmI7IGHil4zjgKril4zMluKXjMyu4peM1ppiOyBh4peM44Cq4peMzJbil4zMruKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBDT01CSU5JTkcgQlJFVkUgQkVMT1csIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMkUgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDMyRSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyRSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyRSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMyRSAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjMyu4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zMruKXjMyW4peM1ppiOyBh4peM44Cq4peMzK7il4zMluKXjNaaYjsgYeKXjOOAquKXjMyu4peMzJbil4zWmmI7IGHil4zjgKril4zMruKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQlJFVkUgQkVMT1csIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDMyRiAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMkYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMkYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMkYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMkYgMDU5QSAwMDYyOyAjIChh4peM1pril4zMluKXjOOAquKXjMyvYjsgYeKXjOOAquKXjMyW4peMzK/il4zWmmI7IGHil4zjgKril4zMluKXjMyv4peM1ppiOyBh4peM44Cq4peMzJbil4zMr+KXjNaaYjsgYeKXjOOAquKXjMyW4peMzK/il4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgQ09NQklOSU5HIElOVkVSVEVEIEJSRVZFIEJFTE9XLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzJGIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzMkYgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMkYgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMkYgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMkYgMDMxNiAwNTlBIDAwNjI7ICMgKGHil4zMr+KXjNaa4peMzJbil4zjgKpiOyBh4peM44Cq4peMzK/il4zMluKXjNaaYjsgYeKXjOOAquKXjMyv4peMzJbil4zWmmI7IGHil4zjgKril4zMr+KXjMyW4peM1ppiOyBh4peM44Cq4peMzK/il4zMluKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIElOVkVSVEVEIEJSRVZFIEJFTE9XLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzMzAgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzMwIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzMwIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzMwIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzMwIDA1OUEgMDA2MjsgIyAoYeKXjNaa4peMzJbil4zjgKril4zMsGI7IGHil4zjgKril4zMluKXjMyw4peM1ppiOyBh4peM44Cq4peMzJbil4zMsOKXjNaaYjsgYeKXjOOAquKXjMyW4peMzLDil4zWmmI7IGHil4zjgKril4zMluKXjMyw4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIENPTUJJTklORyBUSUxERSBCRUxPVywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMzMCAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwMzMwIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzMwIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzMwIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzMwIDAzMTYgMDU5QSAwMDYyOyAjIChh4peMzLDil4zWmuKXjMyW4peM44CqYjsgYeKXjOOAquKXjMyw4peMzJbil4zWmmI7IGHil4zjgKril4zMsOKXjMyW4peM1ppiOyBh4peM44Cq4peMzLDil4zMluKXjNaaYjsgYeKXjOOAquKXjMyw4peMzJbil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBUSUxERSBCRUxPVywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzMxIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzMSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzMSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzMSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzMSAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peMzLFiOyBh4peM44Cq4peMzJbil4zMseKXjNaaYjsgYeKXjOOAquKXjMyW4peMzLHil4zWmmI7IGHil4zjgKril4zMluKXjMyx4peM1ppiOyBh4peM44Cq4peMzJbil4zMseKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBDT01CSU5JTkcgTUFDUk9OIEJFTE9XLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzMxIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzMzEgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMzEgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMzEgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMzEgMDMxNiAwNTlBIDAwNjI7ICMgKGHil4zMseKXjNaa4peMzJbil4zjgKpiOyBh4peM44Cq4peMzLHil4zMluKXjNaaYjsgYeKXjOOAquKXjMyx4peMzJbil4zWmmI7IGHil4zjgKril4zMseKXjMyW4peM1ppiOyBh4peM44Cq4peMzLHil4zMluKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIE1BQ1JPTiBCRUxPVywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzMyIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzMiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzMiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzMiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzMiAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peMzLJiOyBh4peM44Cq4peMzJbil4zMsuKXjNaaYjsgYeKXjOOAquKXjMyW4peMzLLil4zWmmI7IGHil4zjgKril4zMluKXjMyy4peM1ppiOyBh4peM44Cq4peMzJbil4zMsuKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBDT01CSU5JTkcgTE9XIExJTkUsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMzIgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDMzMiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMzMiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMzMiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMzMiAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjMyy4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zMsuKXjMyW4peM1ppiOyBh4peM44Cq4peMzLLil4zMluKXjNaaYjsgYeKXjOOAquKXjMyy4peMzJbil4zWmmI7IGHil4zjgKril4zMsuKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgTE9XIExJTkUsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDMzMyAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMzMgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMzMgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMzMgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzMzMgMDU5QSAwMDYyOyAjIChh4peM1pril4zMluKXjOOAquKXjMyzYjsgYeKXjOOAquKXjMyW4peMzLPil4zWmmI7IGHil4zjgKril4zMluKXjMyz4peM1ppiOyBh4peM44Cq4peMzJbil4zMs+KXjNaaYjsgYeKXjOOAquKXjMyW4peMzLPil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgQ09NQklOSU5HIERPVUJMRSBMT1cgTElORSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMzMyAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwMzMzIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzMzIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzMzIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzMzIDAzMTYgMDU5QSAwMDYyOyAjIChh4peMzLPil4zWmuKXjMyW4peM44CqYjsgYeKXjOOAquKXjMyz4peMzJbil4zWmmI7IGHil4zjgKril4zMs+KXjMyW4peM1ppiOyBh4peM44Cq4peMzLPil4zMluKXjNaaYjsgYeKXjOOAquKXjMyz4peMzJbil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBET1VCTEUgTE9XIExJTkUsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDkzQyAwMzM0IDAzMzQgMDA2MjswMDYxIDAzMzQgMDMzNCAwOTNDIDAwNjI7MDA2MSAwMzM0IDAzMzQgMDkzQyAwMDYyOzAwNjEgMDMzNCAwMzM0IDA5M0MgMDA2MjswMDYxIDAzMzQgMDMzNCAwOTNDIDAwNjI7ICMgKGHil4zgpLzil4zMtOKXjMy0YjsgYeKXjMy04peMzLTil4zgpLxiOyBh4peMzLTil4zMtOKXjOCkvGI7IGHil4zMtOKXjMy04peM4KS8YjsgYeKXjMy04peMzLTil4zgpLxiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBERVZBTkFHQVJJIFNJR04gTlVLVEEsIENPTUJJTklORyBUSUxERSBPVkVSTEFZLCBDT01CSU5JTkcgVElMREUgT1ZFUkxBWSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMzNCAwOTNDIDAzMzQgMDA2MjswMDYxIDAzMzQgMDMzNCAwOTNDIDAwNjI7MDA2MSAwMzM0IDAzMzQgMDkzQyAwMDYyOzAwNjEgMDMzNCAwMzM0IDA5M0MgMDA2MjswMDYxIDAzMzQgMDMzNCAwOTNDIDAwNjI7ICMgKGHil4zMtOKXjOCkvOKXjMy0YjsgYeKXjMy04peMzLTil4zgpLxiOyBh4peMzLTil4zMtOKXjOCkvGI7IGHil4zMtOKXjMy04peM4KS8YjsgYeKXjMy04peMzLTil4zgpLxiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgVElMREUgT1ZFUkxBWSwgREVWQU5BR0FSSSBTSUdOIE5VS1RBLCBDT01CSU5JTkcgVElMREUgT1ZFUkxBWSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDkzQyAwMzM0IDAzMzUgMDA2MjswMDYxIDAzMzQgMDMzNSAwOTNDIDAwNjI7MDA2MSAwMzM0IDAzMzUgMDkzQyAwMDYyOzAwNjEgMDMzNCAwMzM1IDA5M0MgMDA2MjswMDYxIDAzMzQgMDMzNSAwOTNDIDAwNjI7ICMgKGHil4zgpLzil4zMtOKXjMy1YjsgYeKXjMy04peMzLXil4zgpLxiOyBh4peMzLTil4zMteKXjOCkvGI7IGHil4zMtOKXjMy14peM4KS8YjsgYeKXjMy04peMzLXil4zgpLxiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBERVZBTkFHQVJJIFNJR04gTlVLVEEsIENPTUJJTklORyBUSUxERSBPVkVSTEFZLCBDT01CSU5JTkcgU0hPUlQgU1RST0tFIE9WRVJMQVksIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMzUgMDkzQyAwMzM0IDAwNjI7MDA2MSAwMzM1IDAzMzQgMDkzQyAwMDYyOzAwNjEgMDMzNSAwMzM0IDA5M0MgMDA2MjswMDYxIDAzMzUgMDMzNCAwOTNDIDAwNjI7MDA2MSAwMzM1IDAzMzQgMDkzQyAwMDYyOyAjIChh4peMzLXil4zgpLzil4zMtGI7IGHil4zMteKXjMy04peM4KS8YjsgYeKXjMy14peMzLTil4zgpLxiOyBh4peMzLXil4zMtOKXjOCkvGI7IGHil4zMteKXjMy04peM4KS8YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIFNIT1JUIFNUUk9LRSBPVkVSTEFZLCBERVZBTkFHQVJJIFNJR04gTlVLVEEsIENPTUJJTklORyBUSUxERSBPVkVSTEFZLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwOTNDIDAzMzQgMDMzNiAwMDYyOzAwNjEgMDMzNCAwMzM2IDA5M0MgMDA2MjswMDYxIDAzMzQgMDMzNiAwOTNDIDAwNjI7MDA2MSAwMzM0IDAzMzYgMDkzQyAwMDYyOzAwNjEgMDMzNCAwMzM2IDA5M0MgMDA2MjsgIyAoYeKXjOCkvOKXjMy04peMzLZiOyBh4peMzLTil4zMtuKXjOCkvGI7IGHil4zMtOKXjMy24peM4KS8YjsgYeKXjMy04peMzLbil4zgpLxiOyBh4peMzLTil4zMtuKXjOCkvGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIERFVkFOQUdBUkkgU0lHTiBOVUtUQSwgQ09NQklOSU5HIFRJTERFIE9WRVJMQVksIENPTUJJTklORyBMT05HIFNUUk9LRSBPVkVSTEFZLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzM2IDA5M0MgMDMzNCAwMDYyOzAwNjEgMDMzNiAwMzM0IDA5M0MgMDA2MjswMDYxIDAzMzYgMDMzNCAwOTNDIDAwNjI7MDA2MSAwMzM2IDAzMzQgMDkzQyAwMDYyOzAwNjEgMDMzNiAwMzM0IDA5M0MgMDA2MjsgIyAoYeKXjMy24peM4KS84peMzLRiOyBh4peMzLbil4zMtOKXjOCkvGI7IGHil4zMtuKXjMy04peM4KS8YjsgYeKXjMy24peMzLTil4zgpLxiOyBh4peMzLbil4zMtOKXjOCkvGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBMT05HIFNUUk9LRSBPVkVSTEFZLCBERVZBTkFHQVJJIFNJR04gTlVLVEEsIENPTUJJTklORyBUSUxERSBPVkVSTEFZLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwOTNDIDAzMzQgMDMzNyAwMDYyOzAwNjEgMDMzNCAwMzM3IDA5M0MgMDA2MjswMDYxIDAzMzQgMDMzNyAwOTNDIDAwNjI7MDA2MSAwMzM0IDAzMzcgMDkzQyAwMDYyOzAwNjEgMDMzNCAwMzM3IDA5M0MgMDA2MjsgIyAoYeKXjOCkvOKXjMy04peMzLdiOyBh4peMzLTil4zMt+KXjOCkvGI7IGHil4zMtOKXjMy34peM4KS8YjsgYeKXjMy04peMzLfil4zgpLxiOyBh4peMzLTil4zMt+KXjOCkvGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIERFVkFOQUdBUkkgU0lHTiBOVUtUQSwgQ09NQklOSU5HIFRJTERFIE9WRVJMQVksIENPTUJJTklORyBTSE9SVCBTT0xJRFVTIE9WRVJMQVksIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMzcgMDkzQyAwMzM0IDAwNjI7MDA2MSAwMzM3IDAzMzQgMDkzQyAwMDYyOzAwNjEgMDMzNyAwMzM0IDA5M0MgMDA2MjswMDYxIDAzMzcgMDMzNCAwOTNDIDAwNjI7MDA2MSAwMzM3IDAzMzQgMDkzQyAwMDYyOyAjIChh4peMzLfil4zgpLzil4zMtGI7IGHil4zMt+KXjMy04peM4KS8YjsgYeKXjMy34peMzLTil4zgpLxiOyBh4peMzLfil4zMtOKXjOCkvGI7IGHil4zMt+KXjMy04peM4KS8YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIFNIT1JUIFNPTElEVVMgT1ZFUkxBWSwgREVWQU5BR0FSSSBTSUdOIE5VS1RBLCBDT01CSU5JTkcgVElMREUgT1ZFUkxBWSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDkzQyAwMzM0IDAzMzggMDA2MjswMDYxIDAzMzQgMDMzOCAwOTNDIDAwNjI7MDA2MSAwMzM0IDAzMzggMDkzQyAwMDYyOzAwNjEgMDMzNCAwMzM4IDA5M0MgMDA2MjswMDYxIDAzMzQgMDMzOCAwOTNDIDAwNjI7ICMgKGHil4zgpLzil4zMtOKXjMy4YjsgYeKXjMy04peMzLjil4zgpLxiOyBh4peMzLTil4zMuOKXjOCkvGI7IGHil4zMtOKXjMy44peM4KS8YjsgYeKXjMy04peMzLjil4zgpLxiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBERVZBTkFHQVJJIFNJR04gTlVLVEEsIENPTUJJTklORyBUSUxERSBPVkVSTEFZLCBDT01CSU5JTkcgTE9ORyBTT0xJRFVTIE9WRVJMQVksIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMzggMDkzQyAwMzM0IDAwNjI7MDA2MSAwMzM4IDAzMzQgMDkzQyAwMDYyOzAwNjEgMDMzOCAwMzM0IDA5M0MgMDA2MjswMDYxIDAzMzggMDMzNCAwOTNDIDAwNjI7MDA2MSAwMzM4IDAzMzQgMDkzQyAwMDYyOyAjIChh4peMzLjil4zgpLzil4zMtGI7IGHil4zMuOKXjMy04peM4KS8YjsgYeKXjMy44peMzLTil4zgpLxiOyBh4peMzLjil4zMtOKXjOCkvGI7IGHil4zMuOKXjMy04peM4KS8YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIExPTkcgU09MSURVUyBPVkVSTEFZLCBERVZBTkFHQVJJIFNJR04gTlVLVEEsIENPTUJJTklORyBUSUxERSBPVkVSTEFZLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzM5IDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzOSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzOSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzOSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzOSAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peMzLliOyBh4peM44Cq4peMzJbil4zMueKXjNaaYjsgYeKXjOOAquKXjMyW4peMzLnil4zWmmI7IGHil4zjgKril4zMluKXjMy54peM1ppiOyBh4peM44Cq4peMzJbil4zMueKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBDT01CSU5JTkcgUklHSFQgSEFMRiBSSU5HIEJFTE9XLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzM5IDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzMzkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMzkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMzkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMzkgMDMxNiAwNTlBIDAwNjI7ICMgKGHil4zMueKXjNaa4peMzJbil4zjgKpiOyBh4peM44Cq4peMzLnil4zMluKXjNaaYjsgYeKXjOOAquKXjMy54peMzJbil4zWmmI7IGHil4zjgKril4zMueKXjMyW4peM1ppiOyBh4peM44Cq4peMzLnil4zMluKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIFJJR0hUIEhBTEYgUklORyBCRUxPVywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzNBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzQSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzQSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzQSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzQSAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peMzLpiOyBh4peM44Cq4peMzJbil4zMuuKXjNaaYjsgYeKXjOOAquKXjMyW4peMzLril4zWmmI7IGHil4zjgKril4zMluKXjMy64peM1ppiOyBh4peM44Cq4peMzJbil4zMuuKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBDT01CSU5JTkcgSU5WRVJURUQgQlJJREdFIEJFTE9XLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzNBIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzM0EgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzM0EgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzM0EgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzM0EgMDMxNiAwNTlBIDAwNjI7ICMgKGHil4zMuuKXjNaa4peMzJbil4zjgKpiOyBh4peM44Cq4peMzLril4zMluKXjNaaYjsgYeKXjOOAquKXjMy64peMzJbil4zWmmI7IGHil4zjgKril4zMuuKXjMyW4peM1ppiOyBh4peM44Cq4peMzLril4zMluKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIElOVkVSVEVEIEJSSURHRSBCRUxPVywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzNCIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzQiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzQiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzQiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzQiAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peMzLtiOyBh4peM44Cq4peMzJbil4zMu+KXjNaaYjsgYeKXjOOAquKXjMyW4peMzLvil4zWmmI7IGHil4zjgKril4zMluKXjMy74peM1ppiOyBh4peM44Cq4peMzJbil4zMu+KXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBDT01CSU5JTkcgU1FVQVJFIEJFTE9XLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzNCIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzM0IgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzM0IgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzM0IgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzM0IgMDMxNiAwNTlBIDAwNjI7ICMgKGHil4zMu+KXjNaa4peMzJbil4zjgKpiOyBh4peM44Cq4peMzLvil4zMluKXjNaaYjsgYeKXjOOAquKXjMy74peMzJbil4zWmmI7IGHil4zjgKril4zMu+KXjMyW4peM1ppiOyBh4peM44Cq4peMzLvil4zMluKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIFNRVUFSRSBCRUxPVywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzNDIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzQyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzQyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzQyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDMzQyAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peMzLxiOyBh4peM44Cq4peMzJbil4zMvOKXjNaaYjsgYeKXjOOAquKXjMyW4peMzLzil4zWmmI7IGHil4zjgKril4zMluKXjMy84peM1ppiOyBh4peM44Cq4peMzJbil4zMvOKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBDT01CSU5JTkcgU0VBR1VMTCBCRUxPVywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMzQyAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwMzNDIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzNDIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzNDIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzNDIDAzMTYgMDU5QSAwMDYyOyAjIChh4peMzLzil4zWmuKXjMyW4peM44CqYjsgYeKXjOOAquKXjMy84peMzJbil4zWmmI7IGHil4zjgKril4zMvOKXjMyW4peM1ppiOyBh4peM44Cq4peMzLzil4zMluKXjNaaYjsgYeKXjOOAquKXjMy84peMzJbil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBTRUFHVUxMIEJFTE9XLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzM0QgMDA2MjswMEUwIDA1QUUgMDMzRCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMzRCAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzM0QgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzM0QgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peMzL1iOyDDoOKXjNau4peMzL3il4zMlWI7IGHil4zWruKXjMyA4peMzL3il4zMlWI7IMOg4peM1q7il4zMveKXjMyVYjsgYeKXjNau4peMzIDil4zMveKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBDT01CSU5JTkcgWCBBQk9WRSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMzRCAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwMzNEIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzNEIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzNEIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzNEIDAzMDAgMDMxNSAwMDYyOyAjIChh4peMzL3il4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zMveKXjMyA4peMzJViOyBh4peM1q7il4zMveKXjMyA4peMzJViOyBh4peM1q7il4zMveKXjMyA4peMzJViOyBh4peM1q7il4zMveKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgWCBBQk9WRSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzNFIDAwNjI7MDBFMCAwNUFFIDAzM0UgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzM0UgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzNFIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzNFIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjMy+Yjsgw6Dil4zWruKXjMy+4peMzJViOyBh4peM1q7il4zMgOKXjMy+4peMzJViOyDDoOKXjNau4peMzL7il4zMlWI7IGHil4zWruKXjMyA4peMzL7il4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQ09NQklOSU5HIFZFUlRJQ0FMIFRJTERFLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzNFIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDAzM0UgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzM0UgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzM0UgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzM0UgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zMvuKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjMy+4peMzIDil4zMlWI7IGHil4zWruKXjMy+4peMzIDil4zMlWI7IGHil4zWruKXjMy+4peMzIDil4zMlWI7IGHil4zWruKXjMy+4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBWRVJUSUNBTCBUSUxERSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzNGIDAwNjI7MDBFMCAwNUFFIDAzM0YgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzM0YgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzNGIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzNGIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjMy/Yjsgw6Dil4zWruKXjMy/4peMzJViOyBh4peM1q7il4zMgOKXjMy/4peMzJViOyDDoOKXjNau4peMzL/il4zMlWI7IGHil4zWruKXjMyA4peMzL/il4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQ09NQklOSU5HIERPVUJMRSBPVkVSTElORSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMzRiAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwMzNGIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzNGIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzNGIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzNGIDAzMDAgMDMxNSAwMDYyOyAjIChh4peMzL/il4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zMv+KXjMyA4peMzJViOyBh4peM1q7il4zMv+KXjMyA4peMzJViOyBh4peM1q7il4zMv+KXjMyA4peMzJViOyBh4peM1q7il4zMv+KXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgRE9VQkxFIE9WRVJMSU5FLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzNDAgMDA2MjswMEUwIDA1QUUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwMCAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMDAgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peMzYBiOyDDoOKXjNau4peMzIDil4zMlWI7IGHil4zWruKXjMyA4peMzIDil4zMlWI7IMOg4peM1q7il4zMgOKXjMyVYjsgYeKXjNau4peMzIDil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBDT01CSU5JTkcgR1JBVkUgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzQwIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDBFMCAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMDAgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjM2A4peMzJXil4zMgOKXjNauYjsgw6Dil4zWruKXjMyA4peMzJViOyBh4peM1q7il4zMgOKXjMyA4peMzJViOyDDoOKXjNau4peMzIDil4zMlWI7IGHil4zWruKXjMyA4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBHUkFWRSBUT05FIE1BUkssIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDM0MSAwMDYyOzAwRTAgMDVBRSAwMzAxIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzAxIDAzMTUgMDA2MjswMEUwIDA1QUUgMDMwMSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwMSAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zNgWI7IMOg4peM1q7il4zMgeKXjMyVYjsgYeKXjNau4peMzIDil4zMgeKXjMyVYjsgw6Dil4zWruKXjMyB4peMzJViOyBh4peM1q7il4zMgOKXjMyB4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIENPTUJJTklORyBBQ1VURSBUT05FIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzNDEgMDMxNSAwMzAwIDA1QUUgMDA2MjswMEUxIDA1QUUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDEgMDMwMCAwMzE1IDAwNjI7MDBFMSAwNUFFIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAxIDAzMDAgMDMxNSAwMDYyOyAjIChh4peMzYHil4zMleKXjMyA4peM1q5iOyDDoeKXjNau4peMzIDil4zMlWI7IGHil4zWruKXjMyB4peMzIDil4zMlWI7IMOh4peM1q7il4zMgOKXjMyVYjsgYeKXjNau4peMzIHil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIEFDVVRFIFRPTkUgTUFSSywgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzQyIDAwNjI7MDBFMCAwNUFFIDAzNDIgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzNDIgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzQyIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzQyIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjM2CYjsgw6Dil4zWruKXjM2C4peMzJViOyBh4peM1q7il4zMgOKXjM2C4peMzJViOyDDoOKXjNau4peMzYLil4zMlWI7IGHil4zWruKXjMyA4peMzYLil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQ09NQklOSU5HIEdSRUVLIFBFUklTUE9NRU5JLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzQyIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDAzNDIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzNDIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzNDIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzNDIgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zNguKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjM2C4peMzIDil4zMlWI7IGHil4zWruKXjM2C4peMzIDil4zMlWI7IGHil4zWruKXjM2C4peMzIDil4zMlWI7IGHil4zWruKXjM2C4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBHUkVFSyBQRVJJU1BPTUVOSSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzQzIDAwNjI7MDBFMCAwNUFFIDAzMTMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMTMgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzEzIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzEzIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjM2DYjsgw6Dil4zWruKXjMyT4peMzJViOyBh4peM1q7il4zMgOKXjMyT4peMzJViOyDDoOKXjNau4peMzJPil4zMlWI7IGHil4zWruKXjMyA4peMzJPil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQ09NQklOSU5HIEdSRUVLIEtPUk9OSVMsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzNDMgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDMxMyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMxMyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMxMyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMxMyAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjM2D4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peMzJPil4zMgOKXjMyVYjsgYeKXjNau4peMzJPil4zMgOKXjMyVYjsgYeKXjNau4peMzJPil4zMgOKXjMyVYjsgYeKXjNau4peMzJPil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIEdSRUVLIEtPUk9OSVMsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDM0NCAwMDYyOzAwRTAgMDVBRSAwMzA4IDAzMDEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzMDggMDMwMSAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzMDggMDMwMSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDMwOCAwMzAxIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjM2EYjsgw6Dil4zWruKXjMyI4peMzIHil4zMlWI7IGHil4zWruKXjMyA4peMzIjil4zMgeKXjMyVYjsgw6Dil4zWruKXjMyI4peMzIHil4zMlWI7IGHil4zWruKXjMyA4peMzIjil4zMgeKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBDT01CSU5JTkcgR1JFRUsgRElBTFlUSUtBIFRPTk9TLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzQ0IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDBFNCAwNUFFIDAzMDEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDggMDMwMSAwMzAwIDAzMTUgMDA2MjswMEU0IDA1QUUgMDMwMSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwOCAwMzAxIDAzMDAgMDMxNSAwMDYyOyAjIChh4peMzYTil4zMleKXjMyA4peM1q5iOyDDpOKXjNau4peMzIHil4zMgOKXjMyVYjsgYeKXjNau4peMzIjil4zMgeKXjMyA4peMzJViOyDDpOKXjNau4peMzIHil4zMgOKXjMyVYjsgYeKXjNau4peMzIjil4zMgeKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgR1JFRUsgRElBTFlUSUtBIFRPTk9TLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzNDUgMDM2MCAwMzQ1IDAwNjI7MDA2MSAwMzYwIDAzNDUgMDM0NSAwMDYyOzAwNjEgMDM2MCAwMzQ1IDAzNDUgMDA2MjswMDYxIDAzNjAgMDM0NSAwMzQ1IDAwNjI7MDA2MSAwMzYwIDAzNDUgMDM0NSAwMDYyOyAjIChh4peMzYXil4zNoOKXjM2FYjsgYeKXjM2g4peMzYXil4zNhWI7IGHil4zNoOKXjM2F4peMzYViOyBh4peMzaDil4zNheKXjM2FYjsgYeKXjM2g4peMzYXil4zNhWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBHUkVFSyBZUE9HRUdSQU1NRU5JLCBDT01CSU5JTkcgRE9VQkxFIFRJTERFLCBDT01CSU5JTkcgR1JFRUsgWVBPR0VHUkFNTUVOSSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDM0NSAwMzQ1IDAzNjAgMDA2MjswMDYxIDAzNjAgMDM0NSAwMzQ1IDAwNjI7MDA2MSAwMzYwIDAzNDUgMDM0NSAwMDYyOzAwNjEgMDM2MCAwMzQ1IDAzNDUgMDA2MjswMDYxIDAzNjAgMDM0NSAwMzQ1IDAwNjI7ICMgKGHil4zNheKXjM2F4peMzaBiOyBh4peMzaDil4zNheKXjM2FYjsgYeKXjM2g4peMzYXil4zNhWI7IGHil4zNoOKXjM2F4peMzYViOyBh4peMzaDil4zNheKXjM2FYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIEdSRUVLIFlQT0dFR1JBTU1FTkksIENPTUJJTklORyBHUkVFSyBZUE9HRUdSQU1NRU5JLCBDT01CSU5JTkcgRE9VQkxFIFRJTERFLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzQ2IDAwNjI7MDBFMCAwNUFFIDAzNDYgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzNDYgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzQ2IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzQ2IDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjM2GYjsgw6Dil4zWruKXjM2G4peMzJViOyBh4peM1q7il4zMgOKXjM2G4peMzJViOyDDoOKXjNau4peMzYbil4zMlWI7IGHil4zWruKXjMyA4peMzYbil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQ09NQklOSU5HIEJSSURHRSBBQk9WRSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDM0NiAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwMzQ2IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzQ2IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzQ2IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzQ2IDAzMDAgMDMxNSAwMDYyOyAjIChh4peMzYbil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zNhuKXjMyA4peMzJViOyBh4peM1q7il4zNhuKXjMyA4peMzJViOyBh4peM1q7il4zNhuKXjMyA4peMzJViOyBh4peM1q7il4zNhuKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQlJJREdFIEFCT1ZFLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzNDcgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzQ3IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzQ3IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzQ3IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzQ3IDA1OUEgMDA2MjsgIyAoYeKXjNaa4peMzJbil4zjgKril4zNh2I7IGHil4zjgKril4zMluKXjM2H4peM1ppiOyBh4peM44Cq4peMzJbil4zNh+KXjNaaYjsgYeKXjOOAquKXjMyW4peMzYfil4zWmmI7IGHil4zjgKril4zMluKXjM2H4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIENPTUJJTklORyBFUVVBTFMgU0lHTiBCRUxPVywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDM0NyAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwMzQ3IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzQ3IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzQ3IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzQ3IDAzMTYgMDU5QSAwMDYyOyAjIChh4peMzYfil4zWmuKXjMyW4peM44CqYjsgYeKXjOOAquKXjM2H4peMzJbil4zWmmI7IGHil4zjgKril4zNh+KXjMyW4peM1ppiOyBh4peM44Cq4peMzYfil4zMluKXjNaaYjsgYeKXjOOAquKXjM2H4peMzJbil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBFUVVBTFMgU0lHTiBCRUxPVywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwMzQ4IDAwNjI7MDA2MSAzMDJBIDAzMTYgMDM0OCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDM0OCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDM0OCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDM0OCAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peMzYhiOyBh4peM44Cq4peMzJbil4zNiOKXjNaaYjsgYeKXjOOAquKXjMyW4peMzYjil4zWmmI7IGHil4zjgKril4zMluKXjM2I4peM1ppiOyBh4peM44Cq4peMzJbil4zNiOKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBDT01CSU5JTkcgRE9VQkxFIFZFUlRJQ0FMIExJTkUgQkVMT1csIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzNDggMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDM0OCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDM0OCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDM0OCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDM0OCAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjM2I4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zNiOKXjMyW4peM1ppiOyBh4peM44Cq4peMzYjil4zMluKXjNaaYjsgYeKXjOOAquKXjM2I4peMzJbil4zWmmI7IGHil4zjgKril4zNiOKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgRE9VQkxFIFZFUlRJQ0FMIExJTkUgQkVMT1csIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDM0OSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzNDkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzNDkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzNDkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzNDkgMDU5QSAwMDYyOyAjIChh4peM1pril4zMluKXjOOAquKXjM2JYjsgYeKXjOOAquKXjMyW4peMzYnil4zWmmI7IGHil4zjgKril4zMluKXjM2J4peM1ppiOyBh4peM44Cq4peMzJbil4zNieKXjNaaYjsgYeKXjOOAquKXjMyW4peMzYnil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgQ09NQklOSU5HIExFRlQgQU5HTEUgQkVMT1csIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzNDkgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDM0OSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDM0OSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDM0OSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDM0OSAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjM2J4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zNieKXjMyW4peM1ppiOyBh4peM44Cq4peMzYnil4zMluKXjNaaYjsgYeKXjOOAquKXjM2J4peMzJbil4zWmmI7IGHil4zjgKril4zNieKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgTEVGVCBBTkdMRSBCRUxPVywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzRBIDAwNjI7MDBFMCAwNUFFIDAzNEEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzNEEgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzRBIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzRBIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjM2KYjsgw6Dil4zWruKXjM2K4peMzJViOyBh4peM1q7il4zMgOKXjM2K4peMzJViOyDDoOKXjNau4peMzYril4zMlWI7IGHil4zWruKXjMyA4peMzYril4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQ09NQklOSU5HIE5PVCBUSUxERSBBQk9WRSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDM0QSAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwMzRBIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzRBIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzRBIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzRBIDAzMDAgMDMxNSAwMDYyOyAjIChh4peMzYril4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zNiuKXjMyA4peMzJViOyBh4peM1q7il4zNiuKXjMyA4peMzJViOyBh4peM1q7il4zNiuKXjMyA4peMzJViOyBh4peM1q7il4zNiuKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgTk9UIFRJTERFIEFCT1ZFLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDAzNEIgMDA2MjswMEUwIDA1QUUgMDM0QiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDM0QiAwMzE1IDAwNjI7MDBFMCAwNUFFIDAzNEIgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzNEIgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peMzYtiOyDDoOKXjNau4peMzYvil4zMlWI7IGHil4zWruKXjMyA4peMzYvil4zMlWI7IMOg4peM1q7il4zNi+KXjMyVYjsgYeKXjNau4peMzIDil4zNi+KXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBDT01CSU5JTkcgSE9NT1RIRVRJQyBBQk9WRSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDM0QiAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwMzRCIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzRCIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzRCIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzRCIDAzMDAgMDMxNSAwMDYyOyAjIChh4peMzYvil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zNi+KXjMyA4peMzJViOyBh4peM1q7il4zNi+KXjMyA4peMzJViOyBh4peM1q7il4zNi+KXjMyA4peMzJViOyBh4peM1q7il4zNi+KXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgSE9NT1RIRVRJQyBBQk9WRSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwMzRDIDAwNjI7MDBFMCAwNUFFIDAzNEMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDAzNEMgMDMxNSAwMDYyOzAwRTAgMDVBRSAwMzRDIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwMzRDIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjM2MYjsgw6Dil4zWruKXjM2M4peMzJViOyBh4peM1q7il4zMgOKXjM2M4peMzJViOyDDoOKXjNau4peMzYzil4zMlWI7IGHil4zWruKXjMyA4peMzYzil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQ09NQklOSU5HIEFMTU9TVCBFUVVBTCBUTyBBQk9WRSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDM0QyAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwMzRDIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzRDIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzRDIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzRDIDAzMDAgMDMxNSAwMDYyOyAjIChh4peMzYzil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zNjOKXjMyA4peMzJViOyBh4peM1q7il4zNjOKXjMyA4peMzJViOyBh4peM1q7il4zNjOKXjMyA4peMzJViOyBh4peM1q7il4zNjOKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQUxNT1NUIEVRVUFMIFRPIEFCT1ZFLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUEgMDMxNiAzMDJBIDAzNEQgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzREIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzREIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzREIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwMzREIDA1OUEgMDA2MjsgIyAoYeKXjNaa4peMzJbil4zjgKril4zNjWI7IGHil4zjgKril4zMluKXjM2N4peM1ppiOyBh4peM44Cq4peMzJbil4zNjeKXjNaaYjsgYeKXjOOAquKXjMyW4peMzY3il4zWmmI7IGHil4zjgKril4zMluKXjM2N4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIENPTUJJTklORyBMRUZUIFJJR0hUIEFSUk9XIEJFTE9XLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzREIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDAzNEQgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzNEQgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzNEQgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzNEQgMDMxNiAwNTlBIDAwNjI7ICMgKGHil4zNjeKXjNaa4peMzJbil4zjgKpiOyBh4peM44Cq4peMzY3il4zMluKXjNaaYjsgYeKXjOOAquKXjM2N4peMzJbil4zWmmI7IGHil4zjgKril4zNjeKXjMyW4peM1ppiOyBh4peM44Cq4peMzY3il4zMluKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIExFRlQgUklHSFQgQVJST1cgQkVMT1csIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDM0RSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzNEUgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzNEUgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzNEUgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDAzNEUgMDU5QSAwMDYyOyAjIChh4peM1pril4zMluKXjOOAquKXjM2OYjsgYeKXjOOAquKXjMyW4peMzY7il4zWmmI7IGHil4zjgKril4zMluKXjM2O4peM1ppiOyBh4peM44Cq4peMzJbil4zNjuKXjNaaYjsgYeKXjOOAquKXjMyW4peMzY7il4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgQ09NQklOSU5HIFVQV0FSRFMgQVJST1cgQkVMT1csIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzNEUgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDM0RSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDM0RSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDM0RSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDM0RSAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjM2O4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zNjuKXjMyW4peM1ppiOyBh4peM44Cq4peMzY7il4zMluKXjNaaYjsgYeKXjOOAquKXjM2O4peMzJbil4zWmmI7IGHil4zjgKril4zNjuKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgVVBXQVJEUyBBUlJPVyBCRUxPVywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzQ1IDAzNjAgMDM2MiAwMzYwIDAwNjI7MDA2MSAwMzYyIDAzNjAgMDM2MCAwMzQ1IDAwNjI7MDA2MSAwMzYyIDAzNjAgMDM2MCAwMzQ1IDAwNjI7MDA2MSAwMzYyIDAzNjAgMDM2MCAwMzQ1IDAwNjI7MDA2MSAwMzYyIDAzNjAgMDM2MCAwMzQ1IDAwNjI7ICMgKGHil4zNheKXjM2g4peMzaLil4zNoGI7IGHil4zNouKXjM2g4peMzaDil4zNhWI7IGHil4zNouKXjM2g4peMzaDil4zNhWI7IGHil4zNouKXjM2g4peMzaDil4zNhWI7IGHil4zNouKXjM2g4peMzaDil4zNhWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBHUkVFSyBZUE9HRUdSQU1NRU5JLCBDT01CSU5JTkcgRE9VQkxFIFRJTERFLCBDT01CSU5JTkcgRE9VQkxFIFJJR0hUV0FSRFMgQVJST1cgQkVMT1csIENPTUJJTklORyBET1VCTEUgVElMREUsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzNjAgMDM0NSAwMzYwIDAzNjIgMDA2MjswMDYxIDAzNjIgMDM2MCAwMzYwIDAzNDUgMDA2MjswMDYxIDAzNjIgMDM2MCAwMzYwIDAzNDUgMDA2MjswMDYxIDAzNjIgMDM2MCAwMzYwIDAzNDUgMDA2MjswMDYxIDAzNjIgMDM2MCAwMzYwIDAzNDUgMDA2MjsgIyAoYeKXjM2g4peMzYXil4zNoOKXjM2iYjsgYeKXjM2i4peMzaDil4zNoOKXjM2FYjsgYeKXjM2i4peMzaDil4zNoOKXjM2FYjsgYeKXjM2i4peMzaDil4zNoOKXjM2FYjsgYeKXjM2i4peMzaDil4zNoOKXjM2FYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIERPVUJMRSBUSUxERSwgQ09NQklOSU5HIEdSRUVLIFlQT0dFR1JBTU1FTkksIENPTUJJTklORyBET1VCTEUgVElMREUsIENPTUJJTklORyBET1VCTEUgUklHSFRXQVJEUyBBUlJPVyBCRUxPVywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDM0NSAwMzYwIDAzNjIgMDM2MSAwMDYyOzAwNjEgMDM2MiAwMzYwIDAzNjEgMDM0NSAwMDYyOzAwNjEgMDM2MiAwMzYwIDAzNjEgMDM0NSAwMDYyOzAwNjEgMDM2MiAwMzYwIDAzNjEgMDM0NSAwMDYyOzAwNjEgMDM2MiAwMzYwIDAzNjEgMDM0NSAwMDYyOyAjIChh4peMzYXil4zNoOKXjM2i4peMzaFiOyBh4peMzaLil4zNoOKXjM2h4peMzYViOyBh4peMzaLil4zNoOKXjM2h4peMzYViOyBh4peMzaLil4zNoOKXjM2h4peMzYViOyBh4peMzaLil4zNoOKXjM2h4peMzYViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgR1JFRUsgWVBPR0VHUkFNTUVOSSwgQ09NQklOSU5HIERPVUJMRSBUSUxERSwgQ09NQklOSU5HIERPVUJMRSBSSUdIVFdBUkRTIEFSUk9XIEJFTE9XLCBDT01CSU5JTkcgRE9VQkxFIElOVkVSVEVEIEJSRVZFLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzYxIDAzNDUgMDM2MCAwMzYyIDAwNjI7MDA2MSAwMzYyIDAzNjEgMDM2MCAwMzQ1IDAwNjI7MDA2MSAwMzYyIDAzNjEgMDM2MCAwMzQ1IDAwNjI7MDA2MSAwMzYyIDAzNjEgMDM2MCAwMzQ1IDAwNjI7MDA2MSAwMzYyIDAzNjEgMDM2MCAwMzQ1IDAwNjI7ICMgKGHil4zNoeKXjM2F4peMzaDil4zNomI7IGHil4zNouKXjM2h4peMzaDil4zNhWI7IGHil4zNouKXjM2h4peMzaDil4zNhWI7IGHil4zNouKXjM2h4peMzaDil4zNhWI7IGHil4zNouKXjM2h4peMzaDil4zNhWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBET1VCTEUgSU5WRVJURUQgQlJFVkUsIENPTUJJTklORyBHUkVFSyBZUE9HRUdSQU1NRU5JLCBDT01CSU5JTkcgRE9VQkxFIFRJTERFLCBDT01CSU5JTkcgRE9VQkxFIFJJR0hUV0FSRFMgQVJST1cgQkVMT1csIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzNjAgMDM2MiAwMzE1IDAzNjIgMDA2MjswMDYxIDAzMTUgMDM2MiAwMzYyIDAzNjAgMDA2MjswMDYxIDAzMTUgMDM2MiAwMzYyIDAzNjAgMDA2MjswMDYxIDAzMTUgMDM2MiAwMzYyIDAzNjAgMDA2MjswMDYxIDAzMTUgMDM2MiAwMzYyIDAzNjAgMDA2MjsgIyAoYeKXjM2g4peMzaLil4zMleKXjM2iYjsgYeKXjMyV4peMzaLil4zNouKXjM2gYjsgYeKXjMyV4peMzaLil4zNouKXjM2gYjsgYeKXjMyV4peMzaLil4zNouKXjM2gYjsgYeKXjMyV4peMzaLil4zNouKXjM2gYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIERPVUJMRSBUSUxERSwgQ09NQklOSU5HIERPVUJMRSBSSUdIVFdBUkRTIEFSUk9XIEJFTE9XLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBET1VCTEUgUklHSFRXQVJEUyBBUlJPVyBCRUxPVywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDM2MiAwMzYwIDAzNjIgMDMxNSAwMDYyOzAwNjEgMDMxNSAwMzYyIDAzNjIgMDM2MCAwMDYyOzAwNjEgMDMxNSAwMzYyIDAzNjIgMDM2MCAwMDYyOzAwNjEgMDMxNSAwMzYyIDAzNjIgMDM2MCAwMDYyOzAwNjEgMDMxNSAwMzYyIDAzNjIgMDM2MCAwMDYyOyAjIChh4peMzaLil4zNoOKXjM2i4peMzJViOyBh4peMzJXil4zNouKXjM2i4peMzaBiOyBh4peMzJXil4zNouKXjM2i4peMzaBiOyBh4peMzJXil4zNouKXjM2i4peMzaBiOyBh4peMzJXil4zNouKXjM2i4peMzaBiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgRE9VQkxFIFJJR0hUV0FSRFMgQVJST1cgQkVMT1csIENPTUJJTklORyBET1VCTEUgVElMREUsIENPTUJJTklORyBET1VCTEUgUklHSFRXQVJEUyBBUlJPVyBCRUxPVywgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNDgzIDAwNjI7MDBFMCAwNUFFIDA0ODMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA0ODMgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNDgzIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNDgzIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjNKDYjsgw6Dil4zWruKXjNKD4peMzJViOyBh4peM1q7il4zMgOKXjNKD4peMzJViOyDDoOKXjNau4peM0oPil4zMlWI7IGHil4zWruKXjMyA4peM0oPil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQ09NQklOSU5HIENZUklMTElDIFRJVExPLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNDgzIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA0ODMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA0ODMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA0ODMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA0ODMgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zSg+KXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjNKD4peMzIDil4zMlWI7IGHil4zWruKXjNKD4peMzIDil4zMlWI7IGHil4zWruKXjNKD4peMzIDil4zMlWI7IGHil4zWruKXjNKD4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDWVJJTExJQyBUSVRMTywgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNDg0IDAwNjI7MDBFMCAwNUFFIDA0ODQgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA0ODQgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNDg0IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNDg0IDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjNKEYjsgw6Dil4zWruKXjNKE4peMzJViOyBh4peM1q7il4zMgOKXjNKE4peMzJViOyDDoOKXjNau4peM0oTil4zMlWI7IGHil4zWruKXjMyA4peM0oTil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQ09NQklOSU5HIENZUklMTElDIFBBTEFUQUxJWkFUSU9OLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNDg0IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA0ODQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA0ODQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA0ODQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA0ODQgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zShOKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjNKE4peMzIDil4zMlWI7IGHil4zWruKXjNKE4peMzIDil4zMlWI7IGHil4zWruKXjNKE4peMzIDil4zMlWI7IGHil4zWruKXjNKE4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDWVJJTExJQyBQQUxBVEFMSVpBVElPTiwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNDg1IDAwNjI7MDBFMCAwNUFFIDA0ODUgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA0ODUgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNDg1IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNDg1IDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjNKFYjsgw6Dil4zWruKXjNKF4peMzJViOyBh4peM1q7il4zMgOKXjNKF4peMzJViOyDDoOKXjNau4peM0oXil4zMlWI7IGHil4zWruKXjMyA4peM0oXil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQ09NQklOSU5HIENZUklMTElDIERBU0lBIFBORVVNQVRBLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNDg1IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA0ODUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA0ODUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA0ODUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA0ODUgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zSheKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjNKF4peMzIDil4zMlWI7IGHil4zWruKXjNKF4peMzIDil4zMlWI7IGHil4zWruKXjNKF4peMzIDil4zMlWI7IGHil4zWruKXjNKF4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDWVJJTExJQyBEQVNJQSBQTkVVTUFUQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNDg2IDAwNjI7MDBFMCAwNUFFIDA0ODYgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA0ODYgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNDg2IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNDg2IDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjNKGYjsgw6Dil4zWruKXjNKG4peMzJViOyBh4peM1q7il4zMgOKXjNKG4peMzJViOyDDoOKXjNau4peM0obil4zMlWI7IGHil4zWruKXjMyA4peM0obil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQ09NQklOSU5HIENZUklMTElDIFBTSUxJIFBORVVNQVRBLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNDg2IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA0ODYgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA0ODYgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA0ODYgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA0ODYgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zShuKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjNKG4peMzIDil4zMlWI7IGHil4zWruKXjNKG4peMzIDil4zMlWI7IGHil4zWruKXjNKG4peMzIDil4zMlWI7IGHil4zWruKXjNKG4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDWVJJTExJQyBQU0lMSSBQTkVVTUFUQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwNTkxIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDU5MSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDU5MSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDU5MSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDU5MSAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peM1pFiOyBh4peM44Cq4peMzJbil4zWkeKXjNaaYjsgYeKXjOOAquKXjMyW4peM1pHil4zWmmI7IGHil4zjgKril4zMluKXjNaR4peM1ppiOyBh4peM44Cq4peMzJbil4zWkeKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBIRUJSRVcgQUNDRU5UIEVUTkFIVEEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OTEgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDU5MSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDU5MSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDU5MSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDU5MSAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjNaR4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zWkeKXjMyW4peM1ppiOyBh4peM44Cq4peM1pHil4zMluKXjNaaYjsgYeKXjOOAquKXjNaR4peMzJbil4zWmmI7IGHil4zjgKril4zWkeKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIEVUTkFIVEEsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDU5MiAwMDYyOzAwRTAgMDVBRSAwNTkyIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNTkyIDAzMTUgMDA2MjswMEUwIDA1QUUgMDU5MiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDU5MiAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zWkmI7IMOg4peM1q7il4zWkuKXjMyVYjsgYeKXjNau4peMzIDil4zWkuKXjMyVYjsgw6Dil4zWruKXjNaS4peMzJViOyBh4peM1q7il4zMgOKXjNaS4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIEhFQlJFVyBBQ0NFTlQgU0VHT0wsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OTIgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDU5MiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDU5MiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDU5MiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDU5MiAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjNaS4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM1pLil4zMgOKXjMyVYjsgYeKXjNau4peM1pLil4zMgOKXjMyVYjsgYeKXjNau4peM1pLil4zMgOKXjMyVYjsgYeKXjNau4peM1pLil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBTRUdPTCwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNTkzIDAwNjI7MDBFMCAwNUFFIDA1OTMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1OTMgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNTkzIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNTkzIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjNaTYjsgw6Dil4zWruKXjNaT4peMzJViOyBh4peM1q7il4zMgOKXjNaT4peMzJViOyDDoOKXjNau4peM1pPil4zMlWI7IGHil4zWruKXjMyA4peM1pPil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgSEVCUkVXIEFDQ0VOVCBTSEFMU0hFTEVULCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTkzIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA1OTMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTMgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zWk+KXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjNaT4peMzIDil4zMlWI7IGHil4zWruKXjNaT4peMzIDil4zMlWI7IGHil4zWruKXjNaT4peMzIDil4zMlWI7IGHil4zWruKXjNaT4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgU0hBTFNIRUxFVCwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNTk0IDAwNjI7MDBFMCAwNUFFIDA1OTQgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1OTQgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNTk0IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNTk0IDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjNaUYjsgw6Dil4zWruKXjNaU4peMzJViOyBh4peM1q7il4zMgOKXjNaU4peMzJViOyDDoOKXjNau4peM1pTil4zMlWI7IGHil4zWruKXjMyA4peM1pTil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgSEVCUkVXIEFDQ0VOVCBaQVFFRiBRQVRBTiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5NCAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNTk0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNTk0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNTk0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNTk0IDAzMDAgMDMxNSAwMDYyOyAjIChh4peM1pTil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zWlOKXjMyA4peMzJViOyBh4peM1q7il4zWlOKXjMyA4peMzJViOyBh4peM1q7il4zWlOKXjMyA4peMzJViOyBh4peM1q7il4zWlOKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFpBUUVGIFFBVEFOLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDA1OTUgMDA2MjswMEUwIDA1QUUgMDU5NSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDU5NSAwMzE1IDAwNjI7MDBFMCAwNUFFIDA1OTUgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1OTUgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM1pViOyDDoOKXjNau4peM1pXil4zMlWI7IGHil4zWruKXjMyA4peM1pXil4zMlWI7IMOg4peM1q7il4zWleKXjMyVYjsgYeKXjNau4peMzIDil4zWleKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBIRUJSRVcgQUNDRU5UIFpBUUVGIEdBRE9MLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTk1IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA1OTUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTUgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zWleKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjNaV4peMzIDil4zMlWI7IGHil4zWruKXjNaV4peMzIDil4zMlWI7IGHil4zWruKXjNaV4peMzIDil4zMlWI7IGHil4zWruKXjNaV4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgWkFRRUYgR0FET0wsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDU5NiAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1OTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1OTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1OTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1OTYgMDU5QSAwMDYyOyAjIChh4peM1pril4zMluKXjOOAquKXjNaWYjsgYeKXjOOAquKXjMyW4peM1pbil4zWmmI7IGHil4zjgKril4zMluKXjNaW4peM1ppiOyBh4peM44Cq4peMzJbil4zWluKXjNaaYjsgYeKXjOOAquKXjMyW4peM1pbil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgSEVCUkVXIEFDQ0VOVCBUSVBFSEEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OTYgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDU5NiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDU5NiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDU5NiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDU5NiAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjNaW4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zWluKXjMyW4peM1ppiOyBh4peM44Cq4peM1pbil4zMluKXjNaaYjsgYeKXjOOAquKXjNaW4peMzJbil4zWmmI7IGHil4zjgKril4zWluKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFRJUEVIQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNTk3IDAwNjI7MDBFMCAwNUFFIDA1OTcgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1OTcgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNTk3IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNTk3IDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjNaXYjsgw6Dil4zWruKXjNaX4peMzJViOyBh4peM1q7il4zMgOKXjNaX4peMzJViOyDDoOKXjNau4peM1pfil4zMlWI7IGHil4zWruKXjMyA4peM1pfil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgSEVCUkVXIEFDQ0VOVCBSRVZJQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5NyAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNTk3IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNTk3IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNTk3IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNTk3IDAzMDAgMDMxNSAwMDYyOyAjIChh4peM1pfil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zWl+KXjMyA4peMzJViOyBh4peM1q7il4zWl+KXjMyA4peMzJViOyBh4peM1q7il4zWl+KXjMyA4peMzJViOyBh4peM1q7il4zWl+KXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFJFVklBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDA1OTggMDA2MjswMEUwIDA1QUUgMDU5OCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDU5OCAwMzE1IDAwNjI7MDBFMCAwNUFFIDA1OTggMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1OTggMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM1phiOyDDoOKXjNau4peM1pjil4zMlWI7IGHil4zWruKXjMyA4peM1pjil4zMlWI7IMOg4peM1q7il4zWmOKXjMyVYjsgYeKXjNau4peMzIDil4zWmOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBIRUJSRVcgQUNDRU5UIFpBUlFBLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTk4IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA1OTggMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTggMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTggMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTggMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zWmOKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjNaY4peMzIDil4zMlWI7IGHil4zWruKXjNaY4peMzIDil4zMlWI7IGHil4zWruKXjNaY4peMzIDil4zMlWI7IGHil4zWruKXjNaY4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgWkFSUUEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDU5OSAwMDYyOzAwRTAgMDVBRSAwNTk5IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNTk5IDAzMTUgMDA2MjswMEUwIDA1QUUgMDU5OSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDU5OSAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zWmWI7IMOg4peM1q7il4zWmeKXjMyVYjsgYeKXjNau4peMzIDil4zWmeKXjMyVYjsgw6Dil4zWruKXjNaZ4peMzJViOyBh4peM1q7il4zMgOKXjNaZ4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIEhFQlJFVyBBQ0NFTlQgUEFTSFRBLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTk5IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA1OTkgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTkgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTkgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OTkgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zWmeKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjNaZ4peMzIDil4zMlWI7IGHil4zWruKXjNaZ4peMzIDil4zMlWI7IGHil4zWruKXjNaZ4peMzIDil4zMlWI7IGHil4zWruKXjNaZ4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgUEFTSFRBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDMwMkUgMDU5QSAwMzE2IDA1OUEgMDA2MjswMDYxIDAzMTYgMDU5QSAwNTlBIDMwMkUgMDA2MjswMDYxIDAzMTYgMDU5QSAwNTlBIDMwMkUgMDA2MjswMDYxIDAzMTYgMDU5QSAwNTlBIDMwMkUgMDA2MjswMDYxIDAzMTYgMDU5QSAwNTlBIDMwMkUgMDA2MjsgIyAoYeKXjOOAruKXjNaa4peMzJbil4zWmmI7IGHil4zMluKXjNaa4peM1pril4zjgK5iOyBh4peMzJbil4zWmuKXjNaa4peM44CuYjsgYeKXjMyW4peM1pril4zWmuKXjOOArmI7IGHil4zMluKXjNaa4peM1pril4zjgK5iOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIQU5HVUwgU0lOR0xFIERPVCBUT05FIE1BUkssIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUEgMzAyRSAwNTlBIDAzMTYgMDA2MjswMDYxIDAzMTYgMDU5QSAwNTlBIDMwMkUgMDA2MjswMDYxIDAzMTYgMDU5QSAwNTlBIDMwMkUgMDA2MjswMDYxIDAzMTYgMDU5QSAwNTlBIDMwMkUgMDA2MjswMDYxIDAzMTYgMDU5QSAwNTlBIDMwMkUgMDA2MjsgIyAoYeKXjNaa4peM44Cu4peM1pril4zMlmI7IGHil4zMluKXjNaa4peM1pril4zjgK5iOyBh4peMzJbil4zWmuKXjNaa4peM44CuYjsgYeKXjMyW4peM1pril4zWmuKXjOOArmI7IGHil4zMluKXjNaa4peM1pril4zjgK5iOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBIQU5HVUwgU0lOR0xFIERPVCBUT05FIE1BUkssIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUEgMDMxNiAzMDJBIDA1OUIgMDA2MjswMDYxIDMwMkEgMDMxNiAwNTlCIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNTlCIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNTlCIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNTlCIDA1OUEgMDA2MjsgIyAoYeKXjNaa4peMzJbil4zjgKril4zWm2I7IGHil4zjgKril4zMluKXjNab4peM1ppiOyBh4peM44Cq4peMzJbil4zWm+KXjNaaYjsgYeKXjOOAquKXjMyW4peM1pvil4zWmmI7IGHil4zjgKril4zMluKXjNab4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIEhFQlJFVyBBQ0NFTlQgVEVWSVIsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUIgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDU5QiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDU5QiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDU5QiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDU5QiAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjNab4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zWm+KXjMyW4peM1ppiOyBh4peM44Cq4peM1pvil4zMluKXjNaaYjsgYeKXjOOAquKXjNab4peMzJbil4zWmmI7IGHil4zjgKril4zWm+KXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFRFVklSLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDA1OUMgMDA2MjswMEUwIDA1QUUgMDU5QyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDU5QyAwMzE1IDAwNjI7MDBFMCAwNUFFIDA1OUMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1OUMgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM1pxiOyDDoOKXjNau4peM1pzil4zMlWI7IGHil4zWruKXjMyA4peM1pzil4zMlWI7IMOg4peM1q7il4zWnOKXjMyVYjsgYeKXjNau4peMzIDil4zWnOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBIRUJSRVcgQUNDRU5UIEdFUkVTSCwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5QyAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNTlDIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNTlDIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNTlDIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNTlDIDAzMDAgMDMxNSAwMDYyOyAjIChh4peM1pzil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zWnOKXjMyA4peMzJViOyBh4peM1q7il4zWnOKXjMyA4peMzJViOyBh4peM1q7il4zWnOKXjMyA4peMzJViOyBh4peM1q7il4zWnOKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIEdFUkVTSCwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNTlEIDAwNjI7MDBFMCAwNUFFIDA1OUQgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1OUQgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNTlEIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNTlEIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjNadYjsgw6Dil4zWruKXjNad4peMzJViOyBh4peM1q7il4zMgOKXjNad4peMzJViOyDDoOKXjNau4peM1p3il4zMlWI7IGHil4zWruKXjMyA4peM1p3il4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgSEVCUkVXIEFDQ0VOVCBHRVJFU0ggTVVRREFNLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlEIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA1OUQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OUQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OUQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1OUQgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zWneKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjNad4peMzIDil4zMlWI7IGHil4zWruKXjNad4peMzIDil4zMlWI7IGHil4zWruKXjNad4peMzIDil4zMlWI7IGHil4zWruKXjNad4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgR0VSRVNIIE1VUURBTSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNTlFIDAwNjI7MDBFMCAwNUFFIDA1OUUgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1OUUgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNTlFIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNTlFIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjNaeYjsgw6Dil4zWruKXjNae4peMzJViOyBh4peM1q7il4zMgOKXjNae4peMzJViOyDDoOKXjNau4peM1p7il4zMlWI7IGHil4zWruKXjMyA4peM1p7il4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgSEVCUkVXIEFDQ0VOVCBHRVJTSEFZSU0sIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUUgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDU5RSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDU5RSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDU5RSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDU5RSAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjNae4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM1p7il4zMgOKXjMyVYjsgYeKXjNau4peM1p7il4zMgOKXjMyVYjsgYeKXjNau4peM1p7il4zMgOKXjMyVYjsgYeKXjNau4peM1p7il4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBHRVJTSEFZSU0sIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDU5RiAwMDYyOzAwRTAgMDVBRSAwNTlGIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNTlGIDAzMTUgMDA2MjswMEUwIDA1QUUgMDU5RiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDU5RiAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zWn2I7IMOg4peM1q7il4zWn+KXjMyVYjsgYeKXjNau4peMzIDil4zWn+KXjMyVYjsgw6Dil4zWruKXjNaf4peMzJViOyBh4peM1q7il4zMgOKXjNaf4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIEhFQlJFVyBBQ0NFTlQgUUFSTkVZIFBBUkEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUYgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDU5RiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDU5RiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDU5RiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDU5RiAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjNaf4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM1p/il4zMgOKXjMyVYjsgYeKXjNau4peM1p/il4zMgOKXjMyVYjsgYeKXjNau4peM1p/il4zMgOKXjMyVYjsgYeKXjNau4peM1p/il4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBRQVJORVkgUEFSQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNUEwIDAwNjI7MDBFMCAwNUFFIDA1QTAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1QTAgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNUEwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNUEwIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjNagYjsgw6Dil4zWruKXjNag4peMzJViOyBh4peM1q7il4zMgOKXjNag4peMzJViOyDDoOKXjNau4peM1qDil4zMlWI7IGHil4zWruKXjMyA4peM1qDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgSEVCUkVXIEFDQ0VOVCBURUxJU0hBIEdFRE9MQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVBMCAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNUEwIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNUEwIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNUEwIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNUEwIDAzMDAgMDMxNSAwMDYyOyAjIChh4peM1qDil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zWoOKXjMyA4peMzJViOyBh4peM1q7il4zWoOKXjMyA4peMzJViOyBh4peM1q7il4zWoOKXjMyA4peMzJViOyBh4peM1q7il4zWoOKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFRFTElTSEEgR0VET0xBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDA1QTEgMDA2MjswMEUwIDA1QUUgMDVBMSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDVBMSAwMzE1IDAwNjI7MDBFMCAwNUFFIDA1QTEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1QTEgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM1qFiOyDDoOKXjNau4peM1qHil4zMlWI7IGHil4zWruKXjMyA4peM1qHil4zMlWI7IMOg4peM1q7il4zWoeKXjMyVYjsgYeKXjNau4peMzIDil4zWoeKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBIRUJSRVcgQUNDRU5UIFBBWkVSLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNUExIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA1QTEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QTEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QTEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QTEgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zWoeKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjNah4peMzIDil4zMlWI7IGHil4zWruKXjNah4peMzIDil4zMlWI7IGHil4zWruKXjNah4peMzIDil4zMlWI7IGHil4zWruKXjNah4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgUEFaRVIsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDVBMyAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QTMgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QTMgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QTMgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QTMgMDU5QSAwMDYyOyAjIChh4peM1pril4zMluKXjOOAquKXjNajYjsgYeKXjOOAquKXjMyW4peM1qPil4zWmmI7IGHil4zjgKril4zMluKXjNaj4peM1ppiOyBh4peM44Cq4peMzJbil4zWo+KXjNaaYjsgYeKXjOOAquKXjMyW4peM1qPil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgSEVCUkVXIEFDQ0VOVCBNVU5BSCwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVBMyAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwNUEzIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNUEzIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNUEzIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNUEzIDAzMTYgMDU5QSAwMDYyOyAjIChh4peM1qPil4zWmuKXjMyW4peM44CqYjsgYeKXjOOAquKXjNaj4peMzJbil4zWmmI7IGHil4zjgKril4zWo+KXjMyW4peM1ppiOyBh4peM44Cq4peM1qPil4zMluKXjNaaYjsgYeKXjOOAquKXjNaj4peMzJbil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgTVVOQUgsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDVBNCAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QTQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QTQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QTQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QTQgMDU5QSAwMDYyOyAjIChh4peM1pril4zMluKXjOOAquKXjNakYjsgYeKXjOOAquKXjMyW4peM1qTil4zWmmI7IGHil4zjgKril4zMluKXjNak4peM1ppiOyBh4peM44Cq4peMzJbil4zWpOKXjNaaYjsgYeKXjOOAquKXjMyW4peM1qTil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgSEVCUkVXIEFDQ0VOVCBNQUhBUEFLSCwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVBNCAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwNUE0IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNUE0IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNUE0IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNUE0IDAzMTYgMDU5QSAwMDYyOyAjIChh4peM1qTil4zWmuKXjMyW4peM44CqYjsgYeKXjOOAquKXjNak4peMzJbil4zWmmI7IGHil4zjgKril4zWpOKXjMyW4peM1ppiOyBh4peM44Cq4peM1qTil4zMluKXjNaaYjsgYeKXjOOAquKXjNak4peMzJbil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgTUFIQVBBS0gsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDVBNSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QTUgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QTUgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QTUgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QTUgMDU5QSAwMDYyOyAjIChh4peM1pril4zMluKXjOOAquKXjNalYjsgYeKXjOOAquKXjMyW4peM1qXil4zWmmI7IGHil4zjgKril4zMluKXjNal4peM1ppiOyBh4peM44Cq4peMzJbil4zWpeKXjNaaYjsgYeKXjOOAquKXjMyW4peM1qXil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgSEVCUkVXIEFDQ0VOVCBNRVJLSEEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QTUgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDVBNSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDVBNSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDVBNSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDVBNSAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjNal4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zWpeKXjMyW4peM1ppiOyBh4peM44Cq4peM1qXil4zMluKXjNaaYjsgYeKXjOOAquKXjNal4peMzJbil4zWmmI7IGHil4zjgKril4zWpeKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIE1FUktIQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwNUE2IDAwNjI7MDA2MSAzMDJBIDAzMTYgMDVBNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDVBNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDVBNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDVBNiAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peM1qZiOyBh4peM44Cq4peMzJbil4zWpuKXjNaaYjsgYeKXjOOAquKXjMyW4peM1qbil4zWmmI7IGHil4zjgKril4zMluKXjNam4peM1ppiOyBh4peM44Cq4peMzJbil4zWpuKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBIRUJSRVcgQUNDRU5UIE1FUktIQSBLRUZVTEEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QTYgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDVBNiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDVBNiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDVBNiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDVBNiAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjNam4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zWpuKXjMyW4peM1ppiOyBh4peM44Cq4peM1qbil4zMluKXjNaaYjsgYeKXjOOAquKXjNam4peMzJbil4zWmmI7IGHil4zjgKril4zWpuKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIE1FUktIQSBLRUZVTEEsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDVBNyAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QTcgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QTcgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QTcgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA1QTcgMDU5QSAwMDYyOyAjIChh4peM1pril4zMluKXjOOAquKXjNanYjsgYeKXjOOAquKXjMyW4peM1qfil4zWmmI7IGHil4zjgKril4zMluKXjNan4peM1ppiOyBh4peM44Cq4peMzJbil4zWp+KXjNaaYjsgYeKXjOOAquKXjMyW4peM1qfil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgSEVCUkVXIEFDQ0VOVCBEQVJHQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVBNyAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwNUE3IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNUE3IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNUE3IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNUE3IDAzMTYgMDU5QSAwMDYyOyAjIChh4peM1qfil4zWmuKXjMyW4peM44CqYjsgYeKXjOOAquKXjNan4peMzJbil4zWmmI7IGHil4zjgKril4zWp+KXjMyW4peM1ppiOyBh4peM44Cq4peM1qfil4zMluKXjNaaYjsgYeKXjOOAquKXjNan4peMzJbil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgREFSR0EsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDVBOCAwMDYyOzAwRTAgMDVBRSAwNUE4IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNUE4IDAzMTUgMDA2MjswMEUwIDA1QUUgMDVBOCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDVBOCAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zWqGI7IMOg4peM1q7il4zWqOKXjMyVYjsgYeKXjNau4peMzIDil4zWqOKXjMyVYjsgw6Dil4zWruKXjNao4peMzJViOyBh4peM1q7il4zMgOKXjNao4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIEhFQlJFVyBBQ0NFTlQgUUFETUEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QTggMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDVBOCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDVBOCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDVBOCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDVBOCAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjNao4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM1qjil4zMgOKXjMyVYjsgYeKXjNau4peM1qjil4zMgOKXjMyVYjsgYeKXjNau4peM1qjil4zMgOKXjMyVYjsgYeKXjNau4peM1qjil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBRQURNQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNUE5IDAwNjI7MDBFMCAwNUFFIDA1QTkgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1QTkgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNUE5IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNUE5IDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjNapYjsgw6Dil4zWruKXjNap4peMzJViOyBh4peM1q7il4zMgOKXjNap4peMzJViOyDDoOKXjNau4peM1qnil4zMlWI7IGHil4zWruKXjMyA4peM1qnil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgSEVCUkVXIEFDQ0VOVCBURUxJU0hBIFFFVEFOQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVBOSAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNUE5IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNUE5IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNUE5IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNUE5IDAzMDAgMDMxNSAwMDYyOyAjIChh4peM1qnil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zWqeKXjMyA4peMzJViOyBh4peM1q7il4zWqeKXjMyA4peMzJViOyBh4peM1q7il4zWqeKXjMyA4peMzJViOyBh4peM1q7il4zWqeKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFRFTElTSEEgUUVUQU5BLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUEgMDMxNiAzMDJBIDA1QUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNUFBIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNUFBIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNUFBIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNUFBIDA1OUEgMDA2MjsgIyAoYeKXjNaa4peMzJbil4zjgKril4zWqmI7IGHil4zjgKril4zMluKXjNaq4peM1ppiOyBh4peM44Cq4peMzJbil4zWquKXjNaaYjsgYeKXjOOAquKXjMyW4peM1qril4zWmmI7IGHil4zjgKril4zMluKXjNaq4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIEhFQlJFVyBBQ0NFTlQgWUVSQUggQkVOIFlPTU8sIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QUEgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDVBQSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDVBQSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDVBQSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDVBQSAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjNaq4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zWquKXjMyW4peM1ppiOyBh4peM44Cq4peM1qril4zMluKXjNaaYjsgYeKXjOOAquKXjNaq4peMzJbil4zWmmI7IGHil4zjgKril4zWquKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFlFUkFIIEJFTiBZT01PLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDA1QUIgMDA2MjswMEUwIDA1QUUgMDVBQiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDVBQiAwMzE1IDAwNjI7MDBFMCAwNUFFIDA1QUIgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1QUIgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM1qtiOyDDoOKXjNau4peM1qvil4zMlWI7IGHil4zWruKXjMyA4peM1qvil4zMlWI7IMOg4peM1q7il4zWq+KXjMyVYjsgYeKXjNau4peMzIDil4zWq+KXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBIRUJSRVcgQUNDRU5UIE9MRSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVBQiAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNUFCIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNUFCIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNUFCIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNUFCIDAzMDAgMDMxNSAwMDYyOyAjIChh4peM1qvil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zWq+KXjMyA4peMzJViOyBh4peM1q7il4zWq+KXjMyA4peMzJViOyBh4peM1q7il4zWq+KXjMyA4peMzJViOyBh4peM1q7il4zWq+KXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIE9MRSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNUFDIDAwNjI7MDBFMCAwNUFFIDA1QUMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1QUMgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNUFDIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNUFDIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjNasYjsgw6Dil4zWruKXjNas4peMzJViOyBh4peM1q7il4zMgOKXjNas4peMzJViOyDDoOKXjNau4peM1qzil4zMlWI7IGHil4zWruKXjMyA4peM1qzil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgSEVCUkVXIEFDQ0VOVCBJTFVZLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNUFDIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA1QUMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QUMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QUMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QUMgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zWrOKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjNas4peMzIDil4zMlWI7IGHil4zWruKXjNas4peMzIDil4zMlWI7IGHil4zWruKXjNas4peMzIDil4zMlWI7IGHil4zWruKXjNas4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgSUxVWSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAzMDJFIDA1OUEgMDMxNiAwNUFEIDAwNjI7MDA2MSAwMzE2IDA1OUEgMDVBRCAzMDJFIDAwNjI7MDA2MSAwMzE2IDA1OUEgMDVBRCAzMDJFIDAwNjI7MDA2MSAwMzE2IDA1OUEgMDVBRCAzMDJFIDAwNjI7MDA2MSAwMzE2IDA1OUEgMDVBRCAzMDJFIDAwNjI7ICMgKGHil4zjgK7il4zWmuKXjMyW4peM1q1iOyBh4peMzJbil4zWmuKXjNat4peM44CuYjsgYeKXjMyW4peM1pril4zWreKXjOOArmI7IGHil4zMluKXjNaa4peM1q3il4zjgK5iOyBh4peMzJbil4zWmuKXjNat4peM44CuYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEFOR1VMIFNJTkdMRSBET1QgVE9ORSBNQVJLLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBIRUJSRVcgQUNDRU5UIERFSEksIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QUQgMzAyRSAwNTlBIDAzMTYgMDA2MjswMDYxIDAzMTYgMDVBRCAwNTlBIDMwMkUgMDA2MjswMDYxIDAzMTYgMDVBRCAwNTlBIDMwMkUgMDA2MjswMDYxIDAzMTYgMDVBRCAwNTlBIDMwMkUgMDA2MjswMDYxIDAzMTYgMDVBRCAwNTlBIDMwMkUgMDA2MjsgIyAoYeKXjNat4peM44Cu4peM1pril4zMlmI7IGHil4zMluKXjNat4peM1pril4zjgK5iOyBh4peMzJbil4zWreKXjNaa4peM44CuYjsgYeKXjMyW4peM1q3il4zWmuKXjOOArmI7IGHil4zMluKXjNat4peM1pril4zjgK5iOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIERFSEksIEhBTkdVTCBTSU5HTEUgRE9UIFRPTkUgTUFSSywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMwMCAwNUFFIDMwMkUgMDVBRSAwMDYyOzAwRTAgMzAyRSAwNUFFIDA1QUUgMDA2MjswMDYxIDMwMkUgMDVBRSAwNUFFIDAzMDAgMDA2MjswMEUwIDMwMkUgMDVBRSAwNUFFIDAwNjI7MDA2MSAzMDJFIDA1QUUgMDVBRSAwMzAwIDAwNjI7ICMgKGHil4zMgOKXjNau4peM44Cu4peM1q5iOyDDoOKXjOOAruKXjNau4peM1q5iOyBh4peM44Cu4peM1q7il4zWruKXjMyAYjsgw6Dil4zjgK7il4zWruKXjNauYjsgYeKXjOOAruKXjNau4peM1q7il4zMgGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIEhBTkdVTCBTSU5HTEUgRE9UIFRPTkUgTUFSSywgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVBRSAwMzAwIDA1QUUgMzAyRSAwMDYyOzAwRTAgMzAyRSAwNUFFIDA1QUUgMDA2MjswMDYxIDMwMkUgMDVBRSAwNUFFIDAzMDAgMDA2MjswMEUwIDMwMkUgMDVBRSAwNUFFIDAwNjI7MDA2MSAzMDJFIDA1QUUgMDVBRSAwMzAwIDAwNjI7ICMgKGHil4zWruKXjMyA4peM1q7il4zjgK5iOyDDoOKXjOOAruKXjNau4peM1q5iOyBh4peM44Cu4peM1q7il4zWruKXjMyAYjsgw6Dil4zjgK7il4zWruKXjNauYjsgYeKXjOOAruKXjNau4peM1q7il4zMgGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIEhBTkdVTCBTSU5HTEUgRE9UIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDVBRiAwMDYyOzAwRTAgMDVBRSAwNUFGIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNUFGIDAzMTUgMDA2MjswMEUwIDA1QUUgMDVBRiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDVBRiAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zWr2I7IMOg4peM1q7il4zWr+KXjMyVYjsgYeKXjNau4peMzIDil4zWr+KXjMyVYjsgw6Dil4zWruKXjNav4peMzJViOyBh4peM1q7il4zMgOKXjNav4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIEhFQlJFVyBNQVJLIE1BU09SQSBDSVJDTEUsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QUYgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDVBRiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDVBRiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDVBRiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDVBRiAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjNav4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM1q/il4zMgOKXjMyVYjsgYeKXjNau4peM1q/il4zMgOKXjMyVYjsgYeKXjNau4peM1q/il4zMgOKXjMyVYjsgYeKXjNau4peM1q/il4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIE1BUksgTUFTT1JBIENJUkNMRSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNUIxIDA1QjAgMDk0RCAwNUIwIDAwNjI7MDA2MSAwOTREIDA1QjAgMDVCMCAwNUIxIDAwNjI7MDA2MSAwOTREIDA1QjAgMDVCMCAwNUIxIDAwNjI7MDA2MSAwOTREIDA1QjAgMDVCMCAwNUIxIDAwNjI7MDA2MSAwOTREIDA1QjAgMDVCMCAwNUIxIDAwNjI7ICMgKGHil4zWseKXjNaw4peM4KWN4peM1rBiOyBh4peM4KWN4peM1rDil4zWsOKXjNaxYjsgYeKXjOCljeKXjNaw4peM1rDil4zWsWI7IGHil4zgpY3il4zWsOKXjNaw4peM1rFiOyBh4peM4KWN4peM1rDil4zWsOKXjNaxYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIFBPSU5UIEhBVEFGIFNFR09MLCBIRUJSRVcgUE9JTlQgU0hFVkEsIERFVkFOQUdBUkkgU0lHTiBWSVJBTUEsIEhFQlJFVyBQT0lOVCBTSEVWQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVCMCAwNUIxIDA1QjAgMDk0RCAwMDYyOzAwNjEgMDk0RCAwNUIwIDA1QjAgMDVCMSAwMDYyOzAwNjEgMDk0RCAwNUIwIDA1QjAgMDVCMSAwMDYyOzAwNjEgMDk0RCAwNUIwIDA1QjAgMDVCMSAwMDYyOzAwNjEgMDk0RCAwNUIwIDA1QjAgMDVCMSAwMDYyOyAjIChh4peM1rDil4zWseKXjNaw4peM4KWNYjsgYeKXjOCljeKXjNaw4peM1rDil4zWsWI7IGHil4zgpY3il4zWsOKXjNaw4peM1rFiOyBh4peM4KWN4peM1rDil4zWsOKXjNaxYjsgYeKXjOCljeKXjNaw4peM1rDil4zWsWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBQT0lOVCBTSEVWQSwgSEVCUkVXIFBPSU5UIEhBVEFGIFNFR09MLCBIRUJSRVcgUE9JTlQgU0hFVkEsIERFVkFOQUdBUkkgU0lHTiBWSVJBTUEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QjIgMDVCMSAwNUIwIDA1QjEgMDA2MjswMDYxIDA1QjAgMDVCMSAwNUIxIDA1QjIgMDA2MjswMDYxIDA1QjAgMDVCMSAwNUIxIDA1QjIgMDA2MjswMDYxIDA1QjAgMDVCMSAwNUIxIDA1QjIgMDA2MjswMDYxIDA1QjAgMDVCMSAwNUIxIDA1QjIgMDA2MjsgIyAoYeKXjNay4peM1rHil4zWsOKXjNaxYjsgYeKXjNaw4peM1rHil4zWseKXjNayYjsgYeKXjNaw4peM1rHil4zWseKXjNayYjsgYeKXjNaw4peM1rHil4zWseKXjNayYjsgYeKXjNaw4peM1rHil4zWseKXjNayYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIFBPSU5UIEhBVEFGIFBBVEFILCBIRUJSRVcgUE9JTlQgSEFUQUYgU0VHT0wsIEhFQlJFVyBQT0lOVCBTSEVWQSwgSEVCUkVXIFBPSU5UIEhBVEFGIFNFR09MLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNUIxIDA1QjIgMDVCMSAwNUIwIDAwNjI7MDA2MSAwNUIwIDA1QjEgMDVCMSAwNUIyIDAwNjI7MDA2MSAwNUIwIDA1QjEgMDVCMSAwNUIyIDAwNjI7MDA2MSAwNUIwIDA1QjEgMDVCMSAwNUIyIDAwNjI7MDA2MSAwNUIwIDA1QjEgMDVCMSAwNUIyIDAwNjI7ICMgKGHil4zWseKXjNay4peM1rHil4zWsGI7IGHil4zWsOKXjNax4peM1rHil4zWsmI7IGHil4zWsOKXjNax4peM1rHil4zWsmI7IGHil4zWsOKXjNax4peM1rHil4zWsmI7IGHil4zWsOKXjNax4peM1rHil4zWsmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBQT0lOVCBIQVRBRiBTRUdPTCwgSEVCUkVXIFBPSU5UIEhBVEFGIFBBVEFILCBIRUJSRVcgUE9JTlQgSEFUQUYgU0VHT0wsIEhFQlJFVyBQT0lOVCBTSEVWQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVCMyAwNUIyIDA1QjEgMDVCMiAwMDYyOzAwNjEgMDVCMSAwNUIyIDA1QjIgMDVCMyAwMDYyOzAwNjEgMDVCMSAwNUIyIDA1QjIgMDVCMyAwMDYyOzAwNjEgMDVCMSAwNUIyIDA1QjIgMDVCMyAwMDYyOzAwNjEgMDVCMSAwNUIyIDA1QjIgMDVCMyAwMDYyOyAjIChh4peM1rPil4zWsuKXjNax4peM1rJiOyBh4peM1rHil4zWsuKXjNay4peM1rNiOyBh4peM1rHil4zWsuKXjNay4peM1rNiOyBh4peM1rHil4zWsuKXjNay4peM1rNiOyBh4peM1rHil4zWsuKXjNay4peM1rNiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgUE9JTlQgSEFUQUYgUUFNQVRTLCBIRUJSRVcgUE9JTlQgSEFUQUYgUEFUQUgsIEhFQlJFVyBQT0lOVCBIQVRBRiBTRUdPTCwgSEVCUkVXIFBPSU5UIEhBVEFGIFBBVEFILCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNUIyIDA1QjMgMDVCMiAwNUIxIDAwNjI7MDA2MSAwNUIxIDA1QjIgMDVCMiAwNUIzIDAwNjI7MDA2MSAwNUIxIDA1QjIgMDVCMiAwNUIzIDAwNjI7MDA2MSAwNUIxIDA1QjIgMDVCMiAwNUIzIDAwNjI7MDA2MSAwNUIxIDA1QjIgMDVCMiAwNUIzIDAwNjI7ICMgKGHil4zWsuKXjNaz4peM1rLil4zWsWI7IGHil4zWseKXjNay4peM1rLil4zWs2I7IGHil4zWseKXjNay4peM1rLil4zWs2I7IGHil4zWseKXjNay4peM1rLil4zWs2I7IGHil4zWseKXjNay4peM1rLil4zWs2I7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBQT0lOVCBIQVRBRiBQQVRBSCwgSEVCUkVXIFBPSU5UIEhBVEFGIFFBTUFUUywgSEVCUkVXIFBPSU5UIEhBVEFGIFBBVEFILCBIRUJSRVcgUE9JTlQgSEFUQUYgU0VHT0wsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QjQgMDVCMyAwNUIyIDA1QjMgMDA2MjswMDYxIDA1QjIgMDVCMyAwNUIzIDA1QjQgMDA2MjswMDYxIDA1QjIgMDVCMyAwNUIzIDA1QjQgMDA2MjswMDYxIDA1QjIgMDVCMyAwNUIzIDA1QjQgMDA2MjswMDYxIDA1QjIgMDVCMyAwNUIzIDA1QjQgMDA2MjsgIyAoYeKXjNa04peM1rPil4zWsuKXjNazYjsgYeKXjNay4peM1rPil4zWs+KXjNa0YjsgYeKXjNay4peM1rPil4zWs+KXjNa0YjsgYeKXjNay4peM1rPil4zWs+KXjNa0YjsgYeKXjNay4peM1rPil4zWs+KXjNa0YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIFBPSU5UIEhJUklRLCBIRUJSRVcgUE9JTlQgSEFUQUYgUUFNQVRTLCBIRUJSRVcgUE9JTlQgSEFUQUYgUEFUQUgsIEhFQlJFVyBQT0lOVCBIQVRBRiBRQU1BVFMsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QjMgMDVCNCAwNUIzIDA1QjIgMDA2MjswMDYxIDA1QjIgMDVCMyAwNUIzIDA1QjQgMDA2MjswMDYxIDA1QjIgMDVCMyAwNUIzIDA1QjQgMDA2MjswMDYxIDA1QjIgMDVCMyAwNUIzIDA1QjQgMDA2MjswMDYxIDA1QjIgMDVCMyAwNUIzIDA1QjQgMDA2MjsgIyAoYeKXjNaz4peM1rTil4zWs+KXjNayYjsgYeKXjNay4peM1rPil4zWs+KXjNa0YjsgYeKXjNay4peM1rPil4zWs+KXjNa0YjsgYeKXjNay4peM1rPil4zWs+KXjNa0YjsgYeKXjNay4peM1rPil4zWs+KXjNa0YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIFBPSU5UIEhBVEFGIFFBTUFUUywgSEVCUkVXIFBPSU5UIEhJUklRLCBIRUJSRVcgUE9JTlQgSEFUQUYgUUFNQVRTLCBIRUJSRVcgUE9JTlQgSEFUQUYgUEFUQUgsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QjUgMDVCNCAwNUIzIDA1QjQgMDA2MjswMDYxIDA1QjMgMDVCNCAwNUI0IDA1QjUgMDA2MjswMDYxIDA1QjMgMDVCNCAwNUI0IDA1QjUgMDA2MjswMDYxIDA1QjMgMDVCNCAwNUI0IDA1QjUgMDA2MjswMDYxIDA1QjMgMDVCNCAwNUI0IDA1QjUgMDA2MjsgIyAoYeKXjNa14peM1rTil4zWs+KXjNa0YjsgYeKXjNaz4peM1rTil4zWtOKXjNa1YjsgYeKXjNaz4peM1rTil4zWtOKXjNa1YjsgYeKXjNaz4peM1rTil4zWtOKXjNa1YjsgYeKXjNaz4peM1rTil4zWtOKXjNa1YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIFBPSU5UIFRTRVJFLCBIRUJSRVcgUE9JTlQgSElSSVEsIEhFQlJFVyBQT0lOVCBIQVRBRiBRQU1BVFMsIEhFQlJFVyBQT0lOVCBISVJJUSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVCNCAwNUI1IDA1QjQgMDVCMyAwMDYyOzAwNjEgMDVCMyAwNUI0IDA1QjQgMDVCNSAwMDYyOzAwNjEgMDVCMyAwNUI0IDA1QjQgMDVCNSAwMDYyOzAwNjEgMDVCMyAwNUI0IDA1QjQgMDVCNSAwMDYyOzAwNjEgMDVCMyAwNUI0IDA1QjQgMDVCNSAwMDYyOyAjIChh4peM1rTil4zWteKXjNa04peM1rNiOyBh4peM1rPil4zWtOKXjNa04peM1rViOyBh4peM1rPil4zWtOKXjNa04peM1rViOyBh4peM1rPil4zWtOKXjNa04peM1rViOyBh4peM1rPil4zWtOKXjNa04peM1rViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgUE9JTlQgSElSSVEsIEhFQlJFVyBQT0lOVCBUU0VSRSwgSEVCUkVXIFBPSU5UIEhJUklRLCBIRUJSRVcgUE9JTlQgSEFUQUYgUUFNQVRTLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNUI2IDA1QjUgMDVCNCAwNUI1IDAwNjI7MDA2MSAwNUI0IDA1QjUgMDVCNSAwNUI2IDAwNjI7MDA2MSAwNUI0IDA1QjUgMDVCNSAwNUI2IDAwNjI7MDA2MSAwNUI0IDA1QjUgMDVCNSAwNUI2IDAwNjI7MDA2MSAwNUI0IDA1QjUgMDVCNSAwNUI2IDAwNjI7ICMgKGHil4zWtuKXjNa14peM1rTil4zWtWI7IGHil4zWtOKXjNa14peM1rXil4zWtmI7IGHil4zWtOKXjNa14peM1rXil4zWtmI7IGHil4zWtOKXjNa14peM1rXil4zWtmI7IGHil4zWtOKXjNa14peM1rXil4zWtmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBQT0lOVCBTRUdPTCwgSEVCUkVXIFBPSU5UIFRTRVJFLCBIRUJSRVcgUE9JTlQgSElSSVEsIEhFQlJFVyBQT0lOVCBUU0VSRSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVCNSAwNUI2IDA1QjUgMDVCNCAwMDYyOzAwNjEgMDVCNCAwNUI1IDA1QjUgMDVCNiAwMDYyOzAwNjEgMDVCNCAwNUI1IDA1QjUgMDVCNiAwMDYyOzAwNjEgMDVCNCAwNUI1IDA1QjUgMDVCNiAwMDYyOzAwNjEgMDVCNCAwNUI1IDA1QjUgMDVCNiAwMDYyOyAjIChh4peM1rXil4zWtuKXjNa14peM1rRiOyBh4peM1rTil4zWteKXjNa14peM1rZiOyBh4peM1rTil4zWteKXjNa14peM1rZiOyBh4peM1rTil4zWteKXjNa14peM1rZiOyBh4peM1rTil4zWteKXjNa14peM1rZiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgUE9JTlQgVFNFUkUsIEhFQlJFVyBQT0lOVCBTRUdPTCwgSEVCUkVXIFBPSU5UIFRTRVJFLCBIRUJSRVcgUE9JTlQgSElSSVEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QjcgMDVCNiAwNUI1IDA1QjYgMDA2MjswMDYxIDA1QjUgMDVCNiAwNUI2IDA1QjcgMDA2MjswMDYxIDA1QjUgMDVCNiAwNUI2IDA1QjcgMDA2MjswMDYxIDA1QjUgMDVCNiAwNUI2IDA1QjcgMDA2MjswMDYxIDA1QjUgMDVCNiAwNUI2IDA1QjcgMDA2MjsgIyAoYeKXjNa34peM1rbil4zWteKXjNa2YjsgYeKXjNa14peM1rbil4zWtuKXjNa3YjsgYeKXjNa14peM1rbil4zWtuKXjNa3YjsgYeKXjNa14peM1rbil4zWtuKXjNa3YjsgYeKXjNa14peM1rbil4zWtuKXjNa3YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIFBPSU5UIFBBVEFILCBIRUJSRVcgUE9JTlQgU0VHT0wsIEhFQlJFVyBQT0lOVCBUU0VSRSwgSEVCUkVXIFBPSU5UIFNFR09MLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNUI2IDA1QjcgMDVCNiAwNUI1IDAwNjI7MDA2MSAwNUI1IDA1QjYgMDVCNiAwNUI3IDAwNjI7MDA2MSAwNUI1IDA1QjYgMDVCNiAwNUI3IDAwNjI7MDA2MSAwNUI1IDA1QjYgMDVCNiAwNUI3IDAwNjI7MDA2MSAwNUI1IDA1QjYgMDVCNiAwNUI3IDAwNjI7ICMgKGHil4zWtuKXjNa34peM1rbil4zWtWI7IGHil4zWteKXjNa24peM1rbil4zWt2I7IGHil4zWteKXjNa24peM1rbil4zWt2I7IGHil4zWteKXjNa24peM1rbil4zWt2I7IGHil4zWteKXjNa24peM1rbil4zWt2I7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBQT0lOVCBTRUdPTCwgSEVCUkVXIFBPSU5UIFBBVEFILCBIRUJSRVcgUE9JTlQgU0VHT0wsIEhFQlJFVyBQT0lOVCBUU0VSRSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVCOCAwNUI3IDA1QjYgMDVCNyAwMDYyOzAwNjEgMDVCNiAwNUI3IDA1QjcgMDVCOCAwMDYyOzAwNjEgMDVCNiAwNUI3IDA1QjcgMDVCOCAwMDYyOzAwNjEgMDVCNiAwNUI3IDA1QjcgMDVCOCAwMDYyOzAwNjEgMDVCNiAwNUI3IDA1QjcgMDVCOCAwMDYyOyAjIChh4peM1rjil4zWt+KXjNa24peM1rdiOyBh4peM1rbil4zWt+KXjNa34peM1rhiOyBh4peM1rbil4zWt+KXjNa34peM1rhiOyBh4peM1rbil4zWt+KXjNa34peM1rhiOyBh4peM1rbil4zWt+KXjNa34peM1rhiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgUE9JTlQgUUFNQVRTLCBIRUJSRVcgUE9JTlQgUEFUQUgsIEhFQlJFVyBQT0lOVCBTRUdPTCwgSEVCUkVXIFBPSU5UIFBBVEFILCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNUI3IDA1QjggMDVCNyAwNUI2IDAwNjI7MDA2MSAwNUI2IDA1QjcgMDVCNyAwNUI4IDAwNjI7MDA2MSAwNUI2IDA1QjcgMDVCNyAwNUI4IDAwNjI7MDA2MSAwNUI2IDA1QjcgMDVCNyAwNUI4IDAwNjI7MDA2MSAwNUI2IDA1QjcgMDVCNyAwNUI4IDAwNjI7ICMgKGHil4zWt+KXjNa44peM1rfil4zWtmI7IGHil4zWtuKXjNa34peM1rfil4zWuGI7IGHil4zWtuKXjNa34peM1rfil4zWuGI7IGHil4zWtuKXjNa34peM1rfil4zWuGI7IGHil4zWtuKXjNa34peM1rfil4zWuGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBQT0lOVCBQQVRBSCwgSEVCUkVXIFBPSU5UIFFBTUFUUywgSEVCUkVXIFBPSU5UIFBBVEFILCBIRUJSRVcgUE9JTlQgU0VHT0wsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QjkgMDVCOCAwNUI3IDA1QjggMDA2MjswMDYxIDA1QjcgMDVCOCAwNUI4IDA1QjkgMDA2MjswMDYxIDA1QjcgMDVCOCAwNUI4IDA1QjkgMDA2MjswMDYxIDA1QjcgMDVCOCAwNUI4IDA1QjkgMDA2MjswMDYxIDA1QjcgMDVCOCAwNUI4IDA1QjkgMDA2MjsgIyAoYeKXjNa54peM1rjil4zWt+KXjNa4YjsgYeKXjNa34peM1rjil4zWuOKXjNa5YjsgYeKXjNa34peM1rjil4zWuOKXjNa5YjsgYeKXjNa34peM1rjil4zWuOKXjNa5YjsgYeKXjNa34peM1rjil4zWuOKXjNa5YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIFBPSU5UIEhPTEFNLCBIRUJSRVcgUE9JTlQgUUFNQVRTLCBIRUJSRVcgUE9JTlQgUEFUQUgsIEhFQlJFVyBQT0lOVCBRQU1BVFMsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QjggMDVCOSAwNUI4IDA1QjcgMDA2MjswMDYxIDA1QjcgMDVCOCAwNUI4IDA1QjkgMDA2MjswMDYxIDA1QjcgMDVCOCAwNUI4IDA1QjkgMDA2MjswMDYxIDA1QjcgMDVCOCAwNUI4IDA1QjkgMDA2MjswMDYxIDA1QjcgMDVCOCAwNUI4IDA1QjkgMDA2MjsgIyAoYeKXjNa44peM1rnil4zWuOKXjNa3YjsgYeKXjNa34peM1rjil4zWuOKXjNa5YjsgYeKXjNa34peM1rjil4zWuOKXjNa5YjsgYeKXjNa34peM1rjil4zWuOKXjNa5YjsgYeKXjNa34peM1rjil4zWuOKXjNa5YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIFBPSU5UIFFBTUFUUywgSEVCUkVXIFBPSU5UIEhPTEFNLCBIRUJSRVcgUE9JTlQgUUFNQVRTLCBIRUJSRVcgUE9JTlQgUEFUQUgsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QkIgMDVCOSAwNUI4IDA1QjkgMDA2MjswMDYxIDA1QjggMDVCOSAwNUI5IDA1QkIgMDA2MjswMDYxIDA1QjggMDVCOSAwNUI5IDA1QkIgMDA2MjswMDYxIDA1QjggMDVCOSAwNUI5IDA1QkIgMDA2MjswMDYxIDA1QjggMDVCOSAwNUI5IDA1QkIgMDA2MjsgIyAoYeKXjNa74peM1rnil4zWuOKXjNa5YjsgYeKXjNa44peM1rnil4zWueKXjNa7YjsgYeKXjNa44peM1rnil4zWueKXjNa7YjsgYeKXjNa44peM1rnil4zWueKXjNa7YjsgYeKXjNa44peM1rnil4zWueKXjNa7YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIFBPSU5UIFFVQlVUUywgSEVCUkVXIFBPSU5UIEhPTEFNLCBIRUJSRVcgUE9JTlQgUUFNQVRTLCBIRUJSRVcgUE9JTlQgSE9MQU0sIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QjkgMDVCQiAwNUI5IDA1QjggMDA2MjswMDYxIDA1QjggMDVCOSAwNUI5IDA1QkIgMDA2MjswMDYxIDA1QjggMDVCOSAwNUI5IDA1QkIgMDA2MjswMDYxIDA1QjggMDVCOSAwNUI5IDA1QkIgMDA2MjswMDYxIDA1QjggMDVCOSAwNUI5IDA1QkIgMDA2MjsgIyAoYeKXjNa54peM1rvil4zWueKXjNa4YjsgYeKXjNa44peM1rnil4zWueKXjNa7YjsgYeKXjNa44peM1rnil4zWueKXjNa7YjsgYeKXjNa44peM1rnil4zWueKXjNa7YjsgYeKXjNa44peM1rnil4zWueKXjNa7YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIFBPSU5UIEhPTEFNLCBIRUJSRVcgUE9JTlQgUVVCVVRTLCBIRUJSRVcgUE9JTlQgSE9MQU0sIEhFQlJFVyBQT0lOVCBRQU1BVFMsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QkMgMDVCQiAwNUI5IDA1QkIgMDA2MjswMDYxIDA1QjkgMDVCQiAwNUJCIDA1QkMgMDA2MjswMDYxIDA1QjkgMDVCQiAwNUJCIDA1QkMgMDA2MjswMDYxIDA1QjkgMDVCQiAwNUJCIDA1QkMgMDA2MjswMDYxIDA1QjkgMDVCQiAwNUJCIDA1QkMgMDA2MjsgIyAoYeKXjNa84peM1rvil4zWueKXjNa7YjsgYeKXjNa54peM1rvil4zWu+KXjNa8YjsgYeKXjNa54peM1rvil4zWu+KXjNa8YjsgYeKXjNa54peM1rvil4zWu+KXjNa8YjsgYeKXjNa54peM1rvil4zWu+KXjNa8YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIFBPSU5UIERBR0VTSCBPUiBNQVBJUSwgSEVCUkVXIFBPSU5UIFFVQlVUUywgSEVCUkVXIFBPSU5UIEhPTEFNLCBIRUJSRVcgUE9JTlQgUVVCVVRTLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNUJCIDA1QkMgMDVCQiAwNUI5IDAwNjI7MDA2MSAwNUI5IDA1QkIgMDVCQiAwNUJDIDAwNjI7MDA2MSAwNUI5IDA1QkIgMDVCQiAwNUJDIDAwNjI7MDA2MSAwNUI5IDA1QkIgMDVCQiAwNUJDIDAwNjI7MDA2MSAwNUI5IDA1QkIgMDVCQiAwNUJDIDAwNjI7ICMgKGHil4zWu+KXjNa84peM1rvil4zWuWI7IGHil4zWueKXjNa74peM1rvil4zWvGI7IGHil4zWueKXjNa74peM1rvil4zWvGI7IGHil4zWueKXjNa74peM1rvil4zWvGI7IGHil4zWueKXjNa74peM1rvil4zWvGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBQT0lOVCBRVUJVVFMsIEhFQlJFVyBQT0lOVCBEQUdFU0ggT1IgTUFQSVEsIEhFQlJFVyBQT0lOVCBRVUJVVFMsIEhFQlJFVyBQT0lOVCBIT0xBTSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVCRCAwNUJDIDA1QkIgMDVCQyAwMDYyOzAwNjEgMDVCQiAwNUJDIDA1QkMgMDVCRCAwMDYyOzAwNjEgMDVCQiAwNUJDIDA1QkMgMDVCRCAwMDYyOzAwNjEgMDVCQiAwNUJDIDA1QkMgMDVCRCAwMDYyOzAwNjEgMDVCQiAwNUJDIDA1QkMgMDVCRCAwMDYyOyAjIChh4peM1r3il4zWvOKXjNa74peM1rxiOyBh4peM1rvil4zWvOKXjNa84peM1r1iOyBh4peM1rvil4zWvOKXjNa84peM1r1iOyBh4peM1rvil4zWvOKXjNa84peM1r1iOyBh4peM1rvil4zWvOKXjNa84peM1r1iOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgUE9JTlQgTUVURUcsIEhFQlJFVyBQT0lOVCBEQUdFU0ggT1IgTUFQSVEsIEhFQlJFVyBQT0lOVCBRVUJVVFMsIEhFQlJFVyBQT0lOVCBEQUdFU0ggT1IgTUFQSVEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QkMgMDVCRCAwNUJDIDA1QkIgMDA2MjswMDYxIDA1QkIgMDVCQyAwNUJDIDA1QkQgMDA2MjswMDYxIDA1QkIgMDVCQyAwNUJDIDA1QkQgMDA2MjswMDYxIDA1QkIgMDVCQyAwNUJDIDA1QkQgMDA2MjswMDYxIDA1QkIgMDVCQyAwNUJDIDA1QkQgMDA2MjsgIyAoYeKXjNa84peM1r3il4zWvOKXjNa7YjsgYeKXjNa74peM1rzil4zWvOKXjNa9YjsgYeKXjNa74peM1rzil4zWvOKXjNa9YjsgYeKXjNa74peM1rzil4zWvOKXjNa9YjsgYeKXjNa74peM1rzil4zWvOKXjNa9YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIFBPSU5UIERBR0VTSCBPUiBNQVBJUSwgSEVCUkVXIFBPSU5UIE1FVEVHLCBIRUJSRVcgUE9JTlQgREFHRVNIIE9SIE1BUElRLCBIRUJSRVcgUE9JTlQgUVVCVVRTLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNUJGIDA1QkQgMDVCQyAwNUJEIDAwNjI7MDA2MSAwNUJDIDA1QkQgMDVCRCAwNUJGIDAwNjI7MDA2MSAwNUJDIDA1QkQgMDVCRCAwNUJGIDAwNjI7MDA2MSAwNUJDIDA1QkQgMDVCRCAwNUJGIDAwNjI7MDA2MSAwNUJDIDA1QkQgMDVCRCAwNUJGIDAwNjI7ICMgKGHil4zWv+KXjNa94peM1rzil4zWvWI7IGHil4zWvOKXjNa94peM1r3il4zWv2I7IGHil4zWvOKXjNa94peM1r3il4zWv2I7IGHil4zWvOKXjNa94peM1r3il4zWv2I7IGHil4zWvOKXjNa94peM1r3il4zWv2I7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBQT0lOVCBSQUZFLCBIRUJSRVcgUE9JTlQgTUVURUcsIEhFQlJFVyBQT0lOVCBEQUdFU0ggT1IgTUFQSVEsIEhFQlJFVyBQT0lOVCBNRVRFRywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVCRCAwNUJGIDA1QkQgMDVCQyAwMDYyOzAwNjEgMDVCQyAwNUJEIDA1QkQgMDVCRiAwMDYyOzAwNjEgMDVCQyAwNUJEIDA1QkQgMDVCRiAwMDYyOzAwNjEgMDVCQyAwNUJEIDA1QkQgMDVCRiAwMDYyOzAwNjEgMDVCQyAwNUJEIDA1QkQgMDVCRiAwMDYyOyAjIChh4peM1r3il4zWv+KXjNa94peM1rxiOyBh4peM1rzil4zWveKXjNa94peM1r9iOyBh4peM1rzil4zWveKXjNa94peM1r9iOyBh4peM1rzil4zWveKXjNa94peM1r9iOyBh4peM1rzil4zWveKXjNa94peM1r9iOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgUE9JTlQgTUVURUcsIEhFQlJFVyBQT0lOVCBSQUZFLCBIRUJSRVcgUE9JTlQgTUVURUcsIEhFQlJFVyBQT0lOVCBEQUdFU0ggT1IgTUFQSVEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QzEgMDVCRiAwNUJEIDA1QkYgMDA2MjswMDYxIDA1QkQgMDVCRiAwNUJGIDA1QzEgMDA2MjswMDYxIDA1QkQgMDVCRiAwNUJGIDA1QzEgMDA2MjswMDYxIDA1QkQgMDVCRiAwNUJGIDA1QzEgMDA2MjswMDYxIDA1QkQgMDVCRiAwNUJGIDA1QzEgMDA2MjsgIyAoYeKXjNeB4peM1r/il4zWveKXjNa/YjsgYeKXjNa94peM1r/il4zWv+KXjNeBYjsgYeKXjNa94peM1r/il4zWv+KXjNeBYjsgYeKXjNa94peM1r/il4zWv+KXjNeBYjsgYeKXjNa94peM1r/il4zWv+KXjNeBYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIFBPSU5UIFNISU4gRE9ULCBIRUJSRVcgUE9JTlQgUkFGRSwgSEVCUkVXIFBPSU5UIE1FVEVHLCBIRUJSRVcgUE9JTlQgUkFGRSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVCRiAwNUMxIDA1QkYgMDVCRCAwMDYyOzAwNjEgMDVCRCAwNUJGIDA1QkYgMDVDMSAwMDYyOzAwNjEgMDVCRCAwNUJGIDA1QkYgMDVDMSAwMDYyOzAwNjEgMDVCRCAwNUJGIDA1QkYgMDVDMSAwMDYyOzAwNjEgMDVCRCAwNUJGIDA1QkYgMDVDMSAwMDYyOyAjIChh4peM1r/il4zXgeKXjNa/4peM1r1iOyBh4peM1r3il4zWv+KXjNa/4peM14FiOyBh4peM1r3il4zWv+KXjNa/4peM14FiOyBh4peM1r3il4zWv+KXjNa/4peM14FiOyBh4peM1r3il4zWv+KXjNa/4peM14FiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgUE9JTlQgUkFGRSwgSEVCUkVXIFBPSU5UIFNISU4gRE9ULCBIRUJSRVcgUE9JTlQgUkFGRSwgSEVCUkVXIFBPSU5UIE1FVEVHLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNUMyIDA1QzEgMDVCRiAwNUMxIDAwNjI7MDA2MSAwNUJGIDA1QzEgMDVDMSAwNUMyIDAwNjI7MDA2MSAwNUJGIDA1QzEgMDVDMSAwNUMyIDAwNjI7MDA2MSAwNUJGIDA1QzEgMDVDMSAwNUMyIDAwNjI7MDA2MSAwNUJGIDA1QzEgMDVDMSAwNUMyIDAwNjI7ICMgKGHil4zXguKXjNeB4peM1r/il4zXgWI7IGHil4zWv+KXjNeB4peM14Hil4zXgmI7IGHil4zWv+KXjNeB4peM14Hil4zXgmI7IGHil4zWv+KXjNeB4peM14Hil4zXgmI7IGHil4zWv+KXjNeB4peM14Hil4zXgmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBQT0lOVCBTSU4gRE9ULCBIRUJSRVcgUE9JTlQgU0hJTiBET1QsIEhFQlJFVyBQT0lOVCBSQUZFLCBIRUJSRVcgUE9JTlQgU0hJTiBET1QsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QzEgMDVDMiAwNUMxIDA1QkYgMDA2MjswMDYxIDA1QkYgMDVDMSAwNUMxIDA1QzIgMDA2MjswMDYxIDA1QkYgMDVDMSAwNUMxIDA1QzIgMDA2MjswMDYxIDA1QkYgMDVDMSAwNUMxIDA1QzIgMDA2MjswMDYxIDA1QkYgMDVDMSAwNUMxIDA1QzIgMDA2MjsgIyAoYeKXjNeB4peM14Lil4zXgeKXjNa/YjsgYeKXjNa/4peM14Hil4zXgeKXjNeCYjsgYeKXjNa/4peM14Hil4zXgeKXjNeCYjsgYeKXjNa/4peM14Hil4zXgeKXjNeCYjsgYeKXjNa/4peM14Hil4zXgeKXjNeCYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIFBPSU5UIFNISU4gRE9ULCBIRUJSRVcgUE9JTlQgU0lOIERPVCwgSEVCUkVXIFBPSU5UIFNISU4gRE9ULCBIRUJSRVcgUE9JTlQgUkFGRSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgRkIxRSAwNUMyIDA1QzEgMDVDMiAwMDYyOzAwNjEgMDVDMSAwNUMyIDA1QzIgRkIxRSAwMDYyOzAwNjEgMDVDMSAwNUMyIDA1QzIgRkIxRSAwMDYyOzAwNjEgMDVDMSAwNUMyIDA1QzIgRkIxRSAwMDYyOzAwNjEgMDVDMSAwNUMyIDA1QzIgRkIxRSAwMDYyOyAjIChh4peM76ye4peM14Lil4zXgeKXjNeCYjsgYeKXjNeB4peM14Lil4zXguKXjO+snmI7IGHil4zXgeKXjNeC4peM14Lil4zvrJ5iOyBh4peM14Hil4zXguKXjNeC4peM76yeYjsgYeKXjNeB4peM14Lil4zXguKXjO+snmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBQT0lOVCBKVURFTy1TUEFOSVNIIFZBUklLQSwgSEVCUkVXIFBPSU5UIFNJTiBET1QsIEhFQlJFVyBQT0lOVCBTSElOIERPVCwgSEVCUkVXIFBPSU5UIFNJTiBET1QsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QzIgRkIxRSAwNUMyIDA1QzEgMDA2MjswMDYxIDA1QzEgMDVDMiAwNUMyIEZCMUUgMDA2MjswMDYxIDA1QzEgMDVDMiAwNUMyIEZCMUUgMDA2MjswMDYxIDA1QzEgMDVDMiAwNUMyIEZCMUUgMDA2MjswMDYxIDA1QzEgMDVDMiAwNUMyIEZCMUUgMDA2MjsgIyAoYeKXjNeC4peM76ye4peM14Lil4zXgWI7IGHil4zXgeKXjNeC4peM14Lil4zvrJ5iOyBh4peM14Hil4zXguKXjNeC4peM76yeYjsgYeKXjNeB4peM14Lil4zXguKXjO+snmI7IGHil4zXgeKXjNeC4peM14Lil4zvrJ5iOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgUE9JTlQgU0lOIERPVCwgSEVCUkVXIFBPSU5UIEpVREVPLVNQQU5JU0ggVkFSSUtBLCBIRUJSRVcgUE9JTlQgU0lOIERPVCwgSEVCUkVXIFBPSU5UIFNISU4gRE9ULCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNUM0IDAwNjI7MDBFMCAwNUFFIDA1QzQgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA1QzQgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNUM0IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNUM0IDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjNeEYjsgw6Dil4zWruKXjNeE4peMzJViOyBh4peM1q7il4zMgOKXjNeE4peMzJViOyDDoOKXjNau4peM14Til4zMlWI7IGHil4zWruKXjMyA4peM14Til4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgSEVCUkVXIE1BUksgVVBQRVIgRE9ULCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNUM0IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA1QzQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QzQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QzQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA1QzQgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zXhOKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjNeE4peMzIDil4zMlWI7IGHil4zWruKXjNeE4peMzIDil4zMlWI7IGHil4zWruKXjNeE4peMzIDil4zMlWI7IGHil4zWruKXjNeE4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBNQVJLIFVQUEVSIERPVCwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNjRDIDA2NEIgRkIxRSAwNjRCIDAwNjI7MDA2MSBGQjFFIDA2NEIgMDY0QiAwNjRDIDAwNjI7MDA2MSBGQjFFIDA2NEIgMDY0QiAwNjRDIDAwNjI7MDA2MSBGQjFFIDA2NEIgMDY0QiAwNjRDIDAwNjI7MDA2MSBGQjFFIDA2NEIgMDY0QiAwNjRDIDAwNjI7ICMgKGHil4zZjOKXjNmL4peM76ye4peM2YtiOyBh4peM76ye4peM2Yvil4zZi+KXjNmMYjsgYeKXjO+snuKXjNmL4peM2Yvil4zZjGI7IGHil4zvrJ7il4zZi+KXjNmL4peM2YxiOyBh4peM76ye4peM2Yvil4zZi+KXjNmMYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQVJBQklDIERBTU1BVEFOLCBBUkFCSUMgRkFUSEFUQU4sIEhFQlJFVyBQT0lOVCBKVURFTy1TUEFOSVNIIFZBUklLQSwgQVJBQklDIEZBVEhBVEFOLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNjRCIDA2NEMgMDY0QiBGQjFFIDAwNjI7MDA2MSBGQjFFIDA2NEIgMDY0QiAwNjRDIDAwNjI7MDA2MSBGQjFFIDA2NEIgMDY0QiAwNjRDIDAwNjI7MDA2MSBGQjFFIDA2NEIgMDY0QiAwNjRDIDAwNjI7MDA2MSBGQjFFIDA2NEIgMDY0QiAwNjRDIDAwNjI7ICMgKGHil4zZi+KXjNmM4peM2Yvil4zvrJ5iOyBh4peM76ye4peM2Yvil4zZi+KXjNmMYjsgYeKXjO+snuKXjNmL4peM2Yvil4zZjGI7IGHil4zvrJ7il4zZi+KXjNmL4peM2YxiOyBh4peM76ye4peM2Yvil4zZi+KXjNmMYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQVJBQklDIEZBVEhBVEFOLCBBUkFCSUMgREFNTUFUQU4sIEFSQUJJQyBGQVRIQVRBTiwgSEVCUkVXIFBPSU5UIEpVREVPLVNQQU5JU0ggVkFSSUtBLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNjREIDA2NEMgMDY0QiAwNjRDIDAwNjI7MDA2MSAwNjRCIDA2NEMgMDY0QyAwNjREIDAwNjI7MDA2MSAwNjRCIDA2NEMgMDY0QyAwNjREIDAwNjI7MDA2MSAwNjRCIDA2NEMgMDY0QyAwNjREIDAwNjI7MDA2MSAwNjRCIDA2NEMgMDY0QyAwNjREIDAwNjI7ICMgKGHil4zZjeKXjNmM4peM2Yvil4zZjGI7IGHil4zZi+KXjNmM4peM2Yzil4zZjWI7IGHil4zZi+KXjNmM4peM2Yzil4zZjWI7IGHil4zZi+KXjNmM4peM2Yzil4zZjWI7IGHil4zZi+KXjNmM4peM2Yzil4zZjWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEFSQUJJQyBLQVNSQVRBTiwgQVJBQklDIERBTU1BVEFOLCBBUkFCSUMgRkFUSEFUQU4sIEFSQUJJQyBEQU1NQVRBTiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDY0QyAwNjREIDA2NEMgMDY0QiAwMDYyOzAwNjEgMDY0QiAwNjRDIDA2NEMgMDY0RCAwMDYyOzAwNjEgMDY0QiAwNjRDIDA2NEMgMDY0RCAwMDYyOzAwNjEgMDY0QiAwNjRDIDA2NEMgMDY0RCAwMDYyOzAwNjEgMDY0QiAwNjRDIDA2NEMgMDY0RCAwMDYyOyAjIChh4peM2Yzil4zZjeKXjNmM4peM2YtiOyBh4peM2Yvil4zZjOKXjNmM4peM2Y1iOyBh4peM2Yvil4zZjOKXjNmM4peM2Y1iOyBh4peM2Yvil4zZjOKXjNmM4peM2Y1iOyBh4peM2Yvil4zZjOKXjNmM4peM2Y1iOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBBUkFCSUMgREFNTUFUQU4sIEFSQUJJQyBLQVNSQVRBTiwgQVJBQklDIERBTU1BVEFOLCBBUkFCSUMgRkFUSEFUQU4sIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA2NEUgMDY0RCAwNjRDIDA2NEQgMDA2MjswMDYxIDA2NEMgMDY0RCAwNjREIDA2NEUgMDA2MjswMDYxIDA2NEMgMDY0RCAwNjREIDA2NEUgMDA2MjswMDYxIDA2NEMgMDY0RCAwNjREIDA2NEUgMDA2MjswMDYxIDA2NEMgMDY0RCAwNjREIDA2NEUgMDA2MjsgIyAoYeKXjNmO4peM2Y3il4zZjOKXjNmNYjsgYeKXjNmM4peM2Y3il4zZjeKXjNmOYjsgYeKXjNmM4peM2Y3il4zZjeKXjNmOYjsgYeKXjNmM4peM2Y3il4zZjeKXjNmOYjsgYeKXjNmM4peM2Y3il4zZjeKXjNmOYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQVJBQklDIEZBVEhBLCBBUkFCSUMgS0FTUkFUQU4sIEFSQUJJQyBEQU1NQVRBTiwgQVJBQklDIEtBU1JBVEFOLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNjREIDA2NEUgMDY0RCAwNjRDIDAwNjI7MDA2MSAwNjRDIDA2NEQgMDY0RCAwNjRFIDAwNjI7MDA2MSAwNjRDIDA2NEQgMDY0RCAwNjRFIDAwNjI7MDA2MSAwNjRDIDA2NEQgMDY0RCAwNjRFIDAwNjI7MDA2MSAwNjRDIDA2NEQgMDY0RCAwNjRFIDAwNjI7ICMgKGHil4zZjeKXjNmO4peM2Y3il4zZjGI7IGHil4zZjOKXjNmN4peM2Y3il4zZjmI7IGHil4zZjOKXjNmN4peM2Y3il4zZjmI7IGHil4zZjOKXjNmN4peM2Y3il4zZjmI7IGHil4zZjOKXjNmN4peM2Y3il4zZjmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEFSQUJJQyBLQVNSQVRBTiwgQVJBQklDIEZBVEhBLCBBUkFCSUMgS0FTUkFUQU4sIEFSQUJJQyBEQU1NQVRBTiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDY0RiAwNjRFIDA2NEQgMDY0RSAwMDYyOzAwNjEgMDY0RCAwNjRFIDA2NEUgMDY0RiAwMDYyOzAwNjEgMDY0RCAwNjRFIDA2NEUgMDY0RiAwMDYyOzAwNjEgMDY0RCAwNjRFIDA2NEUgMDY0RiAwMDYyOzAwNjEgMDY0RCAwNjRFIDA2NEUgMDY0RiAwMDYyOyAjIChh4peM2Y/il4zZjuKXjNmN4peM2Y5iOyBh4peM2Y3il4zZjuKXjNmO4peM2Y9iOyBh4peM2Y3il4zZjuKXjNmO4peM2Y9iOyBh4peM2Y3il4zZjuKXjNmO4peM2Y9iOyBh4peM2Y3il4zZjuKXjNmO4peM2Y9iOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBBUkFCSUMgREFNTUEsIEFSQUJJQyBGQVRIQSwgQVJBQklDIEtBU1JBVEFOLCBBUkFCSUMgRkFUSEEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA2NEUgMDY0RiAwNjRFIDA2NEQgMDA2MjswMDYxIDA2NEQgMDY0RSAwNjRFIDA2NEYgMDA2MjswMDYxIDA2NEQgMDY0RSAwNjRFIDA2NEYgMDA2MjswMDYxIDA2NEQgMDY0RSAwNjRFIDA2NEYgMDA2MjswMDYxIDA2NEQgMDY0RSAwNjRFIDA2NEYgMDA2MjsgIyAoYeKXjNmO4peM2Y/il4zZjuKXjNmNYjsgYeKXjNmN4peM2Y7il4zZjuKXjNmPYjsgYeKXjNmN4peM2Y7il4zZjuKXjNmPYjsgYeKXjNmN4peM2Y7il4zZjuKXjNmPYjsgYeKXjNmN4peM2Y7il4zZjuKXjNmPYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQVJBQklDIEZBVEhBLCBBUkFCSUMgREFNTUEsIEFSQUJJQyBGQVRIQSwgQVJBQklDIEtBU1JBVEFOLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNjUwIDA2NEYgMDY0RSAwNjRGIDAwNjI7MDA2MSAwNjRFIDA2NEYgMDY0RiAwNjUwIDAwNjI7MDA2MSAwNjRFIDA2NEYgMDY0RiAwNjUwIDAwNjI7MDA2MSAwNjRFIDA2NEYgMDY0RiAwNjUwIDAwNjI7MDA2MSAwNjRFIDA2NEYgMDY0RiAwNjUwIDAwNjI7ICMgKGHil4zZkOKXjNmP4peM2Y7il4zZj2I7IGHil4zZjuKXjNmP4peM2Y/il4zZkGI7IGHil4zZjuKXjNmP4peM2Y/il4zZkGI7IGHil4zZjuKXjNmP4peM2Y/il4zZkGI7IGHil4zZjuKXjNmP4peM2Y/il4zZkGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEFSQUJJQyBLQVNSQSwgQVJBQklDIERBTU1BLCBBUkFCSUMgRkFUSEEsIEFSQUJJQyBEQU1NQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDY0RiAwNjUwIDA2NEYgMDY0RSAwMDYyOzAwNjEgMDY0RSAwNjRGIDA2NEYgMDY1MCAwMDYyOzAwNjEgMDY0RSAwNjRGIDA2NEYgMDY1MCAwMDYyOzAwNjEgMDY0RSAwNjRGIDA2NEYgMDY1MCAwMDYyOzAwNjEgMDY0RSAwNjRGIDA2NEYgMDY1MCAwMDYyOyAjIChh4peM2Y/il4zZkOKXjNmP4peM2Y5iOyBh4peM2Y7il4zZj+KXjNmP4peM2ZBiOyBh4peM2Y7il4zZj+KXjNmP4peM2ZBiOyBh4peM2Y7il4zZj+KXjNmP4peM2ZBiOyBh4peM2Y7il4zZj+KXjNmP4peM2ZBiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBBUkFCSUMgREFNTUEsIEFSQUJJQyBLQVNSQSwgQVJBQklDIERBTU1BLCBBUkFCSUMgRkFUSEEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA2NTEgMDY1MCAwNjRGIDA2NTAgMDA2MjswMDYxIDA2NEYgMDY1MCAwNjUwIDA2NTEgMDA2MjswMDYxIDA2NEYgMDY1MCAwNjUwIDA2NTEgMDA2MjswMDYxIDA2NEYgMDY1MCAwNjUwIDA2NTEgMDA2MjswMDYxIDA2NEYgMDY1MCAwNjUwIDA2NTEgMDA2MjsgIyAoYeKXjNmR4peM2ZDil4zZj+KXjNmQYjsgYeKXjNmP4peM2ZDil4zZkOKXjNmRYjsgYeKXjNmP4peM2ZDil4zZkOKXjNmRYjsgYeKXjNmP4peM2ZDil4zZkOKXjNmRYjsgYeKXjNmP4peM2ZDil4zZkOKXjNmRYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQVJBQklDIFNIQUREQSwgQVJBQklDIEtBU1JBLCBBUkFCSUMgREFNTUEsIEFSQUJJQyBLQVNSQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDY1MCAwNjUxIDA2NTAgMDY0RiAwMDYyOzAwNjEgMDY0RiAwNjUwIDA2NTAgMDY1MSAwMDYyOzAwNjEgMDY0RiAwNjUwIDA2NTAgMDY1MSAwMDYyOzAwNjEgMDY0RiAwNjUwIDA2NTAgMDY1MSAwMDYyOzAwNjEgMDY0RiAwNjUwIDA2NTAgMDY1MSAwMDYyOyAjIChh4peM2ZDil4zZkeKXjNmQ4peM2Y9iOyBh4peM2Y/il4zZkOKXjNmQ4peM2ZFiOyBh4peM2Y/il4zZkOKXjNmQ4peM2ZFiOyBh4peM2Y/il4zZkOKXjNmQ4peM2ZFiOyBh4peM2Y/il4zZkOKXjNmQ4peM2ZFiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBBUkFCSUMgS0FTUkEsIEFSQUJJQyBTSEFEREEsIEFSQUJJQyBLQVNSQSwgQVJBQklDIERBTU1BLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNjUyIDA2NTEgMDY1MCAwNjUxIDAwNjI7MDA2MSAwNjUwIDA2NTEgMDY1MSAwNjUyIDAwNjI7MDA2MSAwNjUwIDA2NTEgMDY1MSAwNjUyIDAwNjI7MDA2MSAwNjUwIDA2NTEgMDY1MSAwNjUyIDAwNjI7MDA2MSAwNjUwIDA2NTEgMDY1MSAwNjUyIDAwNjI7ICMgKGHil4zZkuKXjNmR4peM2ZDil4zZkWI7IGHil4zZkOKXjNmR4peM2ZHil4zZkmI7IGHil4zZkOKXjNmR4peM2ZHil4zZkmI7IGHil4zZkOKXjNmR4peM2ZHil4zZkmI7IGHil4zZkOKXjNmR4peM2ZHil4zZkmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEFSQUJJQyBTVUtVTiwgQVJBQklDIFNIQUREQSwgQVJBQklDIEtBU1JBLCBBUkFCSUMgU0hBRERBLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNjUxIDA2NTIgMDY1MSAwNjUwIDAwNjI7MDA2MSAwNjUwIDA2NTEgMDY1MSAwNjUyIDAwNjI7MDA2MSAwNjUwIDA2NTEgMDY1MSAwNjUyIDAwNjI7MDA2MSAwNjUwIDA2NTEgMDY1MSAwNjUyIDAwNjI7MDA2MSAwNjUwIDA2NTEgMDY1MSAwNjUyIDAwNjI7ICMgKGHil4zZkeKXjNmS4peM2ZHil4zZkGI7IGHil4zZkOKXjNmR4peM2ZHil4zZkmI7IGHil4zZkOKXjNmR4peM2ZHil4zZkmI7IGHil4zZkOKXjNmR4peM2ZHil4zZkmI7IGHil4zZkOKXjNmR4peM2ZHil4zZkmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEFSQUJJQyBTSEFEREEsIEFSQUJJQyBTVUtVTiwgQVJBQklDIFNIQUREQSwgQVJBQklDIEtBU1JBLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNjcwIDA2NTIgMDY1MSAwNjUyIDAwNjI7MDA2MSAwNjUxIDA2NTIgMDY1MiAwNjcwIDAwNjI7MDA2MSAwNjUxIDA2NTIgMDY1MiAwNjcwIDAwNjI7MDA2MSAwNjUxIDA2NTIgMDY1MiAwNjcwIDAwNjI7MDA2MSAwNjUxIDA2NTIgMDY1MiAwNjcwIDAwNjI7ICMgKGHil4zZsOKXjNmS4peM2ZHil4zZkmI7IGHil4zZkeKXjNmS4peM2ZLil4zZsGI7IGHil4zZkeKXjNmS4peM2ZLil4zZsGI7IGHil4zZkeKXjNmS4peM2ZLil4zZsGI7IGHil4zZkeKXjNmS4peM2ZLil4zZsGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEFSQUJJQyBMRVRURVIgU1VQRVJTQ1JJUFQgQUxFRiwgQVJBQklDIFNVS1VOLCBBUkFCSUMgU0hBRERBLCBBUkFCSUMgU1VLVU4sIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA2NTIgMDY3MCAwNjUyIDA2NTEgMDA2MjswMDYxIDA2NTEgMDY1MiAwNjUyIDA2NzAgMDA2MjswMDYxIDA2NTEgMDY1MiAwNjUyIDA2NzAgMDA2MjswMDYxIDA2NTEgMDY1MiAwNjUyIDA2NzAgMDA2MjswMDYxIDA2NTEgMDY1MiAwNjUyIDA2NzAgMDA2MjsgIyAoYeKXjNmS4peM2bDil4zZkuKXjNmRYjsgYeKXjNmR4peM2ZLil4zZkuKXjNmwYjsgYeKXjNmR4peM2ZLil4zZkuKXjNmwYjsgYeKXjNmR4peM2ZLil4zZkuKXjNmwYjsgYeKXjNmR4peM2ZLil4zZkuKXjNmwYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQVJBQklDIFNVS1VOLCBBUkFCSUMgTEVUVEVSIFNVUEVSU0NSSVBUIEFMRUYsIEFSQUJJQyBTVUtVTiwgQVJBQklDIFNIQUREQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDY1MyAwMDYyOzAwRTAgMDVBRSAwNjUzIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNjUzIDAzMTUgMDA2MjswMEUwIDA1QUUgMDY1MyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDY1MyAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zZk2I7IMOg4peM1q7il4zZk+KXjMyVYjsgYeKXjNau4peMzIDil4zZk+KXjMyVYjsgw6Dil4zWruKXjNmT4peMzJViOyBh4peM1q7il4zMgOKXjNmT4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIEFSQUJJQyBNQUREQUggQUJPVkUsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA2NTMgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDY1MyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDY1MyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDY1MyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDY1MyAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjNmT4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM2ZPil4zMgOKXjMyVYjsgYeKXjNau4peM2ZPil4zMgOKXjMyVYjsgYeKXjNau4peM2ZPil4zMgOKXjMyVYjsgYeKXjNau4peM2ZPil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQVJBQklDIE1BRERBSCBBQk9WRSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNjU0IDAwNjI7MDBFMCAwNUFFIDA2NTQgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2NTQgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNjU0IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNjU0IDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjNmUYjsgw6Dil4zWruKXjNmU4peMzJViOyBh4peM1q7il4zMgOKXjNmU4peMzJViOyDDoOKXjNau4peM2ZTil4zMlWI7IGHil4zWruKXjMyA4peM2ZTil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQVJBQklDIEhBTVpBIEFCT1ZFLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNjU0IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA2NTQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2NTQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2NTQgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2NTQgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zZlOKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjNmU4peMzIDil4zMlWI7IGHil4zWruKXjNmU4peMzIDil4zMlWI7IGHil4zWruKXjNmU4peMzIDil4zMlWI7IGHil4zWruKXjNmU4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEFSQUJJQyBIQU1aQSBBQk9WRSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwNjU1IDAwNjI7MDA2MSAzMDJBIDAzMTYgMDY1NSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDY1NSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDY1NSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDY1NSAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peM2ZViOyBh4peM44Cq4peMzJbil4zZleKXjNaaYjsgYeKXjOOAquKXjMyW4peM2ZXil4zWmmI7IGHil4zjgKril4zMluKXjNmV4peM1ppiOyBh4peM44Cq4peMzJbil4zZleKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBBUkFCSUMgSEFNWkEgQkVMT1csIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA2NTUgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDY1NSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDY1NSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDY1NSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDY1NSAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjNmV4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zZleKXjMyW4peM1ppiOyBh4peM44Cq4peM2ZXil4zMluKXjNaaYjsgYeKXjOOAquKXjNmV4peMzJbil4zWmmI7IGHil4zjgKril4zZleKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBBUkFCSUMgSEFNWkEgQkVMT1csIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDcxMSAwNjcwIDA2NTIgMDY3MCAwMDYyOzAwNjEgMDY1MiAwNjcwIDA2NzAgMDcxMSAwMDYyOzAwNjEgMDY1MiAwNjcwIDA2NzAgMDcxMSAwMDYyOzAwNjEgMDY1MiAwNjcwIDA2NzAgMDcxMSAwMDYyOzAwNjEgMDY1MiAwNjcwIDA2NzAgMDcxMSAwMDYyOyAjIChh4peM3JHil4zZsOKXjNmS4peM2bBiOyBh4peM2ZLil4zZsOKXjNmw4peM3JFiOyBh4peM2ZLil4zZsOKXjNmw4peM3JFiOyBh4peM2ZLil4zZsOKXjNmw4peM3JFiOyBh4peM2ZLil4zZsOKXjNmw4peM3JFiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBTWVJJQUMgTEVUVEVSIFNVUEVSU0NSSVBUIEFMQVBILCBBUkFCSUMgTEVUVEVSIFNVUEVSU0NSSVBUIEFMRUYsIEFSQUJJQyBTVUtVTiwgQVJBQklDIExFVFRFUiBTVVBFUlNDUklQVCBBTEVGLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNjcwIDA3MTEgMDY3MCAwNjUyIDAwNjI7MDA2MSAwNjUyIDA2NzAgMDY3MCAwNzExIDAwNjI7MDA2MSAwNjUyIDA2NzAgMDY3MCAwNzExIDAwNjI7MDA2MSAwNjUyIDA2NzAgMDY3MCAwNzExIDAwNjI7MDA2MSAwNjUyIDA2NzAgMDY3MCAwNzExIDAwNjI7ICMgKGHil4zZsOKXjNyR4peM2bDil4zZkmI7IGHil4zZkuKXjNmw4peM2bDil4zckWI7IGHil4zZkuKXjNmw4peM2bDil4zckWI7IGHil4zZkuKXjNmw4peM2bDil4zckWI7IGHil4zZkuKXjNmw4peM2bDil4zckWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEFSQUJJQyBMRVRURVIgU1VQRVJTQ1JJUFQgQUxFRiwgU1lSSUFDIExFVFRFUiBTVVBFUlNDUklQVCBBTEFQSCwgQVJBQklDIExFVFRFUiBTVVBFUlNDUklQVCBBTEVGLCBBUkFCSUMgU1VLVU4sIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDA2RDYgMDA2MjswMEUwIDA1QUUgMDZENiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZENiAwMzE1IDAwNjI7MDBFMCAwNUFFIDA2RDYgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2RDYgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM25ZiOyDDoOKXjNau4peM25bil4zMlWI7IGHil4zWruKXjMyA4peM25bil4zMlWI7IMOg4peM1q7il4zbluKXjMyVYjsgYeKXjNau4peMzIDil4zbluKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBBUkFCSUMgU01BTEwgSElHSCBMSUdBVFVSRSBTQUQgV0lUSCBMQU0gV0lUSCBBTEVGIE1BS1NVUkEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA2RDYgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDZENiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZENiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZENiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZENiAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjNuW4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM25bil4zMgOKXjMyVYjsgYeKXjNau4peM25bil4zMgOKXjMyVYjsgYeKXjNau4peM25bil4zMgOKXjMyVYjsgYeKXjNau4peM25bil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQVJBQklDIFNNQUxMIEhJR0ggTElHQVRVUkUgU0FEIFdJVEggTEFNIFdJVEggQUxFRiBNQUtTVVJBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDA2RDcgMDA2MjswMEUwIDA1QUUgMDZENyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZENyAwMzE1IDAwNjI7MDBFMCAwNUFFIDA2RDcgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2RDcgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM25diOyDDoOKXjNau4peM25fil4zMlWI7IGHil4zWruKXjMyA4peM25fil4zMlWI7IMOg4peM1q7il4zbl+KXjMyVYjsgYeKXjNau4peMzIDil4zbl+KXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBBUkFCSUMgU01BTEwgSElHSCBMSUdBVFVSRSBRQUYgV0lUSCBMQU0gV0lUSCBBTEVGIE1BS1NVUkEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA2RDcgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDZENyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZENyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZENyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZENyAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjNuX4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM25fil4zMgOKXjMyVYjsgYeKXjNau4peM25fil4zMgOKXjMyVYjsgYeKXjNau4peM25fil4zMgOKXjMyVYjsgYeKXjNau4peM25fil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQVJBQklDIFNNQUxMIEhJR0ggTElHQVRVUkUgUUFGIFdJVEggTEFNIFdJVEggQUxFRiBNQUtTVVJBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDA2RDggMDA2MjswMEUwIDA1QUUgMDZEOCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZEOCAwMzE1IDAwNjI7MDBFMCAwNUFFIDA2RDggMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2RDggMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM25hiOyDDoOKXjNau4peM25jil4zMlWI7IGHil4zWruKXjMyA4peM25jil4zMlWI7IMOg4peM1q7il4zbmOKXjMyVYjsgYeKXjNau4peMzIDil4zbmOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBBUkFCSUMgU01BTEwgSElHSCBNRUVNIElOSVRJQUwgRk9STSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDZEOCAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNkQ4IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkQ4IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkQ4IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkQ4IDAzMDAgMDMxNSAwMDYyOyAjIChh4peM25jil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zbmOKXjMyA4peMzJViOyBh4peM1q7il4zbmOKXjMyA4peMzJViOyBh4peM1q7il4zbmOKXjMyA4peMzJViOyBh4peM1q7il4zbmOKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBBUkFCSUMgU01BTEwgSElHSCBNRUVNIElOSVRJQUwgRk9STSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNkQ5IDAwNjI7MDBFMCAwNUFFIDA2RDkgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2RDkgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNkQ5IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNkQ5IDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjNuZYjsgw6Dil4zWruKXjNuZ4peMzJViOyBh4peM1q7il4zMgOKXjNuZ4peMzJViOyDDoOKXjNau4peM25nil4zMlWI7IGHil4zWruKXjMyA4peM25nil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQVJBQklDIFNNQUxMIEhJR0ggTEFNIEFMRUYsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA2RDkgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDZEOSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZEOSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZEOSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZEOSAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjNuZ4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM25nil4zMgOKXjMyVYjsgYeKXjNau4peM25nil4zMgOKXjMyVYjsgYeKXjNau4peM25nil4zMgOKXjMyVYjsgYeKXjNau4peM25nil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQVJBQklDIFNNQUxMIEhJR0ggTEFNIEFMRUYsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDZEQSAwMDYyOzAwRTAgMDVBRSAwNkRBIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNkRBIDAzMTUgMDA2MjswMEUwIDA1QUUgMDZEQSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZEQSAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zbmmI7IMOg4peM1q7il4zbmuKXjMyVYjsgYeKXjNau4peMzIDil4zbmuKXjMyVYjsgw6Dil4zWruKXjNua4peMzJViOyBh4peM1q7il4zMgOKXjNua4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIEFSQUJJQyBTTUFMTCBISUdIIEpFRU0sIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA2REEgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDZEQSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZEQSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZEQSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZEQSAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjNua4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM25ril4zMgOKXjMyVYjsgYeKXjNau4peM25ril4zMgOKXjMyVYjsgYeKXjNau4peM25ril4zMgOKXjMyVYjsgYeKXjNau4peM25ril4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQVJBQklDIFNNQUxMIEhJR0ggSkVFTSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNkRCIDAwNjI7MDBFMCAwNUFFIDA2REIgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2REIgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNkRCIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNkRCIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjNubYjsgw6Dil4zWruKXjNub4peMzJViOyBh4peM1q7il4zMgOKXjNub4peMzJViOyDDoOKXjNau4peM25vil4zMlWI7IGHil4zWruKXjMyA4peM25vil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQVJBQklDIFNNQUxMIEhJR0ggVEhSRUUgRE9UUywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDZEQiAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNkRCIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkRCIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkRCIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkRCIDAzMDAgMDMxNSAwMDYyOyAjIChh4peM25vil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zbm+KXjMyA4peMzJViOyBh4peM1q7il4zbm+KXjMyA4peMzJViOyBh4peM1q7il4zbm+KXjMyA4peMzJViOyBh4peM1q7il4zbm+KXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBBUkFCSUMgU01BTEwgSElHSCBUSFJFRSBET1RTLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDA2REMgMDA2MjswMEUwIDA1QUUgMDZEQyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZEQyAwMzE1IDAwNjI7MDBFMCAwNUFFIDA2REMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2REMgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM25xiOyDDoOKXjNau4peM25zil4zMlWI7IGHil4zWruKXjMyA4peM25zil4zMlWI7IMOg4peM1q7il4zbnOKXjMyVYjsgYeKXjNau4peMzIDil4zbnOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBBUkFCSUMgU01BTEwgSElHSCBTRUVOLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNkRDIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA2REMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2REMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2REMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2REMgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zbnOKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjNuc4peMzIDil4zMlWI7IGHil4zWruKXjNuc4peMzIDil4zMlWI7IGHil4zWruKXjNuc4peMzIDil4zMlWI7IGHil4zWruKXjNuc4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEFSQUJJQyBTTUFMTCBISUdIIFNFRU4sIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDZERiAwMDYyOzAwRTAgMDVBRSAwNkRGIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNkRGIDAzMTUgMDA2MjswMEUwIDA1QUUgMDZERiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZERiAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zbn2I7IMOg4peM1q7il4zbn+KXjMyVYjsgYeKXjNau4peMzIDil4zbn+KXjMyVYjsgw6Dil4zWruKXjNuf4peMzJViOyBh4peM1q7il4zMgOKXjNuf4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIEFSQUJJQyBTTUFMTCBISUdIIFJPVU5ERUQgWkVSTywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDZERiAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNkRGIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkRGIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkRGIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkRGIDAzMDAgMDMxNSAwMDYyOyAjIChh4peM25/il4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zbn+KXjMyA4peMzJViOyBh4peM1q7il4zbn+KXjMyA4peMzJViOyBh4peM1q7il4zbn+KXjMyA4peMzJViOyBh4peM1q7il4zbn+KXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBBUkFCSUMgU01BTEwgSElHSCBST1VOREVEIFpFUk8sIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDZFMCAwMDYyOzAwRTAgMDVBRSAwNkUwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNkUwIDAzMTUgMDA2MjswMEUwIDA1QUUgMDZFMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZFMCAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zboGI7IMOg4peM1q7il4zboOKXjMyVYjsgYeKXjNau4peMzIDil4zboOKXjMyVYjsgw6Dil4zWruKXjNug4peMzJViOyBh4peM1q7il4zMgOKXjNug4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIEFSQUJJQyBTTUFMTCBISUdIIFVQUklHSFQgUkVDVEFOR1VMQVIgWkVSTywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDZFMCAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNkUwIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkUwIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkUwIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkUwIDAzMDAgMDMxNSAwMDYyOyAjIChh4peM26Dil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zboOKXjMyA4peMzJViOyBh4peM1q7il4zboOKXjMyA4peMzJViOyBh4peM1q7il4zboOKXjMyA4peMzJViOyBh4peM1q7il4zboOKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBBUkFCSUMgU01BTEwgSElHSCBVUFJJR0hUIFJFQ1RBTkdVTEFSIFpFUk8sIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDZFMSAwMDYyOzAwRTAgMDVBRSAwNkUxIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNkUxIDAzMTUgMDA2MjswMEUwIDA1QUUgMDZFMSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZFMSAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zboWI7IMOg4peM1q7il4zboeKXjMyVYjsgYeKXjNau4peMzIDil4zboeKXjMyVYjsgw6Dil4zWruKXjNuh4peMzJViOyBh4peM1q7il4zMgOKXjNuh4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIEFSQUJJQyBTTUFMTCBISUdIIERPVExFU1MgSEVBRCBPRiBLSEFILCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNkUxIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA2RTEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RTEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RTEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA2RTEgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zboeKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjNuh4peMzIDil4zMlWI7IGHil4zWruKXjNuh4peMzIDil4zMlWI7IGHil4zWruKXjNuh4peMzIDil4zMlWI7IGHil4zWruKXjNuh4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEFSQUJJQyBTTUFMTCBISUdIIERPVExFU1MgSEVBRCBPRiBLSEFILCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDA2RTIgMDA2MjswMEUwIDA1QUUgMDZFMiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZFMiAwMzE1IDAwNjI7MDBFMCAwNUFFIDA2RTIgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2RTIgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM26JiOyDDoOKXjNau4peM26Lil4zMlWI7IGHil4zWruKXjMyA4peM26Lil4zMlWI7IMOg4peM1q7il4zbouKXjMyVYjsgYeKXjNau4peMzIDil4zbouKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBBUkFCSUMgU01BTEwgSElHSCBNRUVNIElTT0xBVEVEIEZPUk0sIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA2RTIgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDZFMiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFMiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFMiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFMiAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjNui4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM26Lil4zMgOKXjMyVYjsgYeKXjNau4peM26Lil4zMgOKXjMyVYjsgYeKXjNau4peM26Lil4zMgOKXjMyVYjsgYeKXjNau4peM26Lil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQVJBQklDIFNNQUxMIEhJR0ggTUVFTSBJU09MQVRFRCBGT1JNLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUEgMDMxNiAzMDJBIDA2RTMgMDA2MjswMDYxIDMwMkEgMDMxNiAwNkUzIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNkUzIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNkUzIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNkUzIDA1OUEgMDA2MjsgIyAoYeKXjNaa4peMzJbil4zjgKril4zbo2I7IGHil4zjgKril4zMluKXjNuj4peM1ppiOyBh4peM44Cq4peMzJbil4zbo+KXjNaaYjsgYeKXjOOAquKXjMyW4peM26Pil4zWmmI7IGHil4zjgKril4zMluKXjNuj4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIEFSQUJJQyBTTUFMTCBMT1cgU0VFTiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDZFMyAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwNkUzIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNkUzIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNkUzIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNkUzIDAzMTYgMDU5QSAwMDYyOyAjIChh4peM26Pil4zWmuKXjMyW4peM44CqYjsgYeKXjOOAquKXjNuj4peMzJbil4zWmmI7IGHil4zjgKril4zbo+KXjMyW4peM1ppiOyBh4peM44Cq4peM26Pil4zMluKXjNaaYjsgYeKXjOOAquKXjNuj4peMzJbil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEFSQUJJQyBTTUFMTCBMT1cgU0VFTiwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNkU0IDAwNjI7MDBFMCAwNUFFIDA2RTQgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2RTQgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNkU0IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNkU0IDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjNukYjsgw6Dil4zWruKXjNuk4peMzJViOyBh4peM1q7il4zMgOKXjNuk4peMzJViOyDDoOKXjNau4peM26Til4zMlWI7IGHil4zWruKXjMyA4peM26Til4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQVJBQklDIFNNQUxMIEhJR0ggTUFEREEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA2RTQgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDZFNCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFNCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFNCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFNCAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjNuk4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM26Til4zMgOKXjMyVYjsgYeKXjNau4peM26Til4zMgOKXjMyVYjsgYeKXjNau4peM26Til4zMgOKXjMyVYjsgYeKXjNau4peM26Til4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQVJBQklDIFNNQUxMIEhJR0ggTUFEREEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDZFNyAwMDYyOzAwRTAgMDVBRSAwNkU3IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNkU3IDAzMTUgMDA2MjswMEUwIDA1QUUgMDZFNyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZFNyAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zbp2I7IMOg4peM1q7il4zbp+KXjMyVYjsgYeKXjNau4peMzIDil4zbp+KXjMyVYjsgw6Dil4zWruKXjNun4peMzJViOyBh4peM1q7il4zMgOKXjNun4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIEFSQUJJQyBTTUFMTCBISUdIIFlFSCwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDZFNyAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNkU3IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkU3IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkU3IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNkU3IDAzMDAgMDMxNSAwMDYyOyAjIChh4peM26fil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zbp+KXjMyA4peMzJViOyBh4peM1q7il4zbp+KXjMyA4peMzJViOyBh4peM1q7il4zbp+KXjMyA4peMzJViOyBh4peM1q7il4zbp+KXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBBUkFCSUMgU01BTEwgSElHSCBZRUgsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDZFOCAwMDYyOzAwRTAgMDVBRSAwNkU4IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNkU4IDAzMTUgMDA2MjswMEUwIDA1QUUgMDZFOCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZFOCAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zbqGI7IMOg4peM1q7il4zbqOKXjMyVYjsgYeKXjNau4peMzIDil4zbqOKXjMyVYjsgw6Dil4zWruKXjNuo4peMzJViOyBh4peM1q7il4zMgOKXjNuo4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIEFSQUJJQyBTTUFMTCBISUdIIE5PT04sIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA2RTggMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDZFOCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFOCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFOCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFOCAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjNuo4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM26jil4zMgOKXjMyVYjsgYeKXjNau4peM26jil4zMgOKXjMyVYjsgYeKXjNau4peM26jil4zMgOKXjMyVYjsgYeKXjNau4peM26jil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQVJBQklDIFNNQUxMIEhJR0ggTk9PTiwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwNkVBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDZFQSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDZFQSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDZFQSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDZFQSAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peM26piOyBh4peM44Cq4peMzJbil4zbquKXjNaaYjsgYeKXjOOAquKXjMyW4peM26ril4zWmmI7IGHil4zjgKril4zMluKXjNuq4peM1ppiOyBh4peM44Cq4peMzJbil4zbquKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBBUkFCSUMgRU1QVFkgQ0VOVFJFIExPVyBTVE9QLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNkVBIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDA2RUEgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA2RUEgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA2RUEgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA2RUEgMDMxNiAwNTlBIDAwNjI7ICMgKGHil4zbquKXjNaa4peMzJbil4zjgKpiOyBh4peM44Cq4peM26ril4zMluKXjNaaYjsgYeKXjOOAquKXjNuq4peMzJbil4zWmmI7IGHil4zjgKril4zbquKXjMyW4peM1ppiOyBh4peM44Cq4peM26ril4zMluKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQVJBQklDIEVNUFRZIENFTlRSRSBMT1cgU1RPUCwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNkVCIDAwNjI7MDBFMCAwNUFFIDA2RUIgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA2RUIgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNkVCIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNkVCIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjNurYjsgw6Dil4zWruKXjNur4peMzJViOyBh4peM1q7il4zMgOKXjNur4peMzJViOyDDoOKXjNau4peM26vil4zMlWI7IGHil4zWruKXjMyA4peM26vil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQVJBQklDIEVNUFRZIENFTlRSRSBISUdIIFNUT1AsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA2RUIgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDZFQiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFQiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFQiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFQiAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjNur4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM26vil4zMgOKXjMyVYjsgYeKXjNau4peM26vil4zMgOKXjMyVYjsgYeKXjNau4peM26vil4zMgOKXjMyVYjsgYeKXjNau4peM26vil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQVJBQklDIEVNUFRZIENFTlRSRSBISUdIIFNUT1AsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDZFQyAwMDYyOzAwRTAgMDVBRSAwNkVDIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNkVDIDAzMTUgMDA2MjswMEUwIDA1QUUgMDZFQyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDZFQyAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zbrGI7IMOg4peM1q7il4zbrOKXjMyVYjsgYeKXjNau4peMzIDil4zbrOKXjMyVYjsgw6Dil4zWruKXjNus4peMzJViOyBh4peM1q7il4zMgOKXjNus4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIEFSQUJJQyBST1VOREVEIEhJR0ggU1RPUCBXSVRIIEZJTExFRCBDRU5UUkUsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA2RUMgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDZFQyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFQyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFQyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDZFQyAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjNus4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM26zil4zMgOKXjMyVYjsgYeKXjNau4peM26zil4zMgOKXjMyVYjsgYeKXjNau4peM26zil4zMgOKXjMyVYjsgYeKXjNau4peM26zil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQVJBQklDIFJPVU5ERUQgSElHSCBTVE9QIFdJVEggRklMTEVEIENFTlRSRSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwNkVEIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDZFRCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDZFRCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDZFRCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDZFRCAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peM261iOyBh4peM44Cq4peMzJbil4zbreKXjNaaYjsgYeKXjOOAquKXjMyW4peM263il4zWmmI7IGHil4zjgKril4zMluKXjNut4peM1ppiOyBh4peM44Cq4peMzJbil4zbreKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBBUkFCSUMgU01BTEwgTE9XIE1FRU0sIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA2RUQgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDZFRCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDZFRCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDZFRCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDZFRCAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjNut4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zbreKXjMyW4peM1ppiOyBh4peM44Cq4peM263il4zMluKXjNaaYjsgYeKXjOOAquKXjNut4peMzJbil4zWmmI7IGHil4zjgKril4zbreKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBBUkFCSUMgU01BTEwgTE9XIE1FRU0sIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEM1NSAwNzExIDA2NzAgMDcxMSAwMDYyOzAwNjEgMDY3MCAwNzExIDA3MTEgMEM1NSAwMDYyOzAwNjEgMDY3MCAwNzExIDA3MTEgMEM1NSAwMDYyOzAwNjEgMDY3MCAwNzExIDA3MTEgMEM1NSAwMDYyOzAwNjEgMDY3MCAwNzExIDA3MTEgMEM1NSAwMDYyOyAjIChh4peM4LGV4peM3JHil4zZsOKXjNyRYjsgYeKXjNmw4peM3JHil4zckeKXjOCxlWI7IGHil4zZsOKXjNyR4peM3JHil4zgsZViOyBh4peM2bDil4zckeKXjNyR4peM4LGVYjsgYeKXjNmw4peM3JHil4zckeKXjOCxlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFRFTFVHVSBMRU5HVEggTUFSSywgU1lSSUFDIExFVFRFUiBTVVBFUlNDUklQVCBBTEFQSCwgQVJBQklDIExFVFRFUiBTVVBFUlNDUklQVCBBTEVGLCBTWVJJQUMgTEVUVEVSIFNVUEVSU0NSSVBUIEFMQVBILCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNzExIDBDNTUgMDcxMSAwNjcwIDAwNjI7MDA2MSAwNjcwIDA3MTEgMDcxMSAwQzU1IDAwNjI7MDA2MSAwNjcwIDA3MTEgMDcxMSAwQzU1IDAwNjI7MDA2MSAwNjcwIDA3MTEgMDcxMSAwQzU1IDAwNjI7MDA2MSAwNjcwIDA3MTEgMDcxMSAwQzU1IDAwNjI7ICMgKGHil4zckeKXjOCxleKXjNyR4peM2bBiOyBh4peM2bDil4zckeKXjNyR4peM4LGVYjsgYeKXjNmw4peM3JHil4zckeKXjOCxlWI7IGHil4zZsOKXjNyR4peM3JHil4zgsZViOyBh4peM2bDil4zckeKXjNyR4peM4LGVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgU1lSSUFDIExFVFRFUiBTVVBFUlNDUklQVCBBTEFQSCwgVEVMVUdVIExFTkdUSCBNQVJLLCBTWVJJQUMgTEVUVEVSIFNVUEVSU0NSSVBUIEFMQVBILCBBUkFCSUMgTEVUVEVSIFNVUEVSU0NSSVBUIEFMRUYsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDA3MzAgMDA2MjswMEUwIDA1QUUgMDczMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDczMCAwMzE1IDAwNjI7MDBFMCAwNUFFIDA3MzAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA3MzAgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM3LBiOyDDoOKXjNau4peM3LDil4zMlWI7IGHil4zWruKXjMyA4peM3LDil4zMlWI7IMOg4peM1q7il4zcsOKXjMyVYjsgYeKXjNau4peMzIDil4zcsOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBTWVJJQUMgUFRIQUhBIEFCT1ZFLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNzMwIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA3MzAgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3MzAgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3MzAgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3MzAgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zcsOKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjNyw4peMzIDil4zMlWI7IGHil4zWruKXjNyw4peMzIDil4zMlWI7IGHil4zWruKXjNyw4peMzIDil4zMlWI7IGHil4zWruKXjNyw4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFNZUklBQyBQVEhBSEEgQUJPVkUsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDczMSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3MzEgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3MzEgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3MzEgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3MzEgMDU5QSAwMDYyOyAjIChh4peM1pril4zMluKXjOOAquKXjNyxYjsgYeKXjOOAquKXjMyW4peM3LHil4zWmmI7IGHil4zjgKril4zMluKXjNyx4peM1ppiOyBh4peM44Cq4peMzJbil4zcseKXjNaaYjsgYeKXjOOAquKXjMyW4peM3LHil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgU1lSSUFDIFBUSEFIQSBCRUxPVywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDczMSAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwNzMxIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzMxIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzMxIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzMxIDAzMTYgMDU5QSAwMDYyOyAjIChh4peM3LHil4zWmuKXjMyW4peM44CqYjsgYeKXjOOAquKXjNyx4peMzJbil4zWmmI7IGHil4zjgKril4zcseKXjMyW4peM1ppiOyBh4peM44Cq4peM3LHil4zMluKXjNaaYjsgYeKXjOOAquKXjNyx4peMzJbil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFNZUklBQyBQVEhBSEEgQkVMT1csIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDczMiAwMDYyOzAwRTAgMDVBRSAwNzMyIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNzMyIDAzMTUgMDA2MjswMEUwIDA1QUUgMDczMiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDczMiAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zcsmI7IMOg4peM1q7il4zcsuKXjMyVYjsgYeKXjNau4peMzIDil4zcsuKXjMyVYjsgw6Dil4zWruKXjNyy4peMzJViOyBh4peM1q7il4zMgOKXjNyy4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIFNZUklBQyBQVEhBSEEgRE9UVEVELCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNzMyIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA3MzIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3MzIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3MzIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3MzIgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zcsuKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjNyy4peMzIDil4zMlWI7IGHil4zWruKXjNyy4peMzIDil4zMlWI7IGHil4zWruKXjNyy4peMzIDil4zMlWI7IGHil4zWruKXjNyy4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFNZUklBQyBQVEhBSEEgRE9UVEVELCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDA3MzMgMDA2MjswMEUwIDA1QUUgMDczMyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDczMyAwMzE1IDAwNjI7MDBFMCAwNUFFIDA3MzMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA3MzMgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM3LNiOyDDoOKXjNau4peM3LPil4zMlWI7IGHil4zWruKXjMyA4peM3LPil4zMlWI7IMOg4peM1q7il4zcs+KXjMyVYjsgYeKXjNau4peMzIDil4zcs+KXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBTWVJJQUMgWlFBUEhBIEFCT1ZFLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNzMzIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA3MzMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3MzMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3MzMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3MzMgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zcs+KXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjNyz4peMzIDil4zMlWI7IGHil4zWruKXjNyz4peMzIDil4zMlWI7IGHil4zWruKXjNyz4peMzIDil4zMlWI7IGHil4zWruKXjNyz4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFNZUklBQyBaUUFQSEEgQUJPVkUsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDczNCAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3MzQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3MzQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3MzQgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3MzQgMDU5QSAwMDYyOyAjIChh4peM1pril4zMluKXjOOAquKXjNy0YjsgYeKXjOOAquKXjMyW4peM3LTil4zWmmI7IGHil4zjgKril4zMluKXjNy04peM1ppiOyBh4peM44Cq4peMzJbil4zctOKXjNaaYjsgYeKXjOOAquKXjMyW4peM3LTil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgU1lSSUFDIFpRQVBIQSBCRUxPVywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDczNCAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwNzM0IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzM0IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzM0IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzM0IDAzMTYgMDU5QSAwMDYyOyAjIChh4peM3LTil4zWmuKXjMyW4peM44CqYjsgYeKXjOOAquKXjNy04peMzJbil4zWmmI7IGHil4zjgKril4zctOKXjMyW4peM1ppiOyBh4peM44Cq4peM3LTil4zMluKXjNaaYjsgYeKXjOOAquKXjNy04peMzJbil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFNZUklBQyBaUUFQSEEgQkVMT1csIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDczNSAwMDYyOzAwRTAgMDVBRSAwNzM1IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNzM1IDAzMTUgMDA2MjswMEUwIDA1QUUgMDczNSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDczNSAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zctWI7IMOg4peM1q7il4zcteKXjMyVYjsgYeKXjNau4peMzIDil4zcteKXjMyVYjsgw6Dil4zWruKXjNy14peMzJViOyBh4peM1q7il4zMgOKXjNy14peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIFNZUklBQyBaUUFQSEEgRE9UVEVELCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNzM1IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA3MzUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3MzUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3MzUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3MzUgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zcteKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjNy14peMzIDil4zMlWI7IGHil4zWruKXjNy14peMzIDil4zMlWI7IGHil4zWruKXjNy14peMzIDil4zMlWI7IGHil4zWruKXjNy14peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFNZUklBQyBaUUFQSEEgRE9UVEVELCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDA3MzYgMDA2MjswMEUwIDA1QUUgMDczNiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDczNiAwMzE1IDAwNjI7MDBFMCAwNUFFIDA3MzYgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA3MzYgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM3LZiOyDDoOKXjNau4peM3Lbil4zMlWI7IGHil4zWruKXjMyA4peM3Lbil4zMlWI7IMOg4peM1q7il4zctuKXjMyVYjsgYeKXjNau4peMzIDil4zctuKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBTWVJJQUMgUkJBU0EgQUJPVkUsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA3MzYgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDczNiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDczNiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDczNiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDczNiAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjNy24peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM3Lbil4zMgOKXjMyVYjsgYeKXjNau4peM3Lbil4zMgOKXjMyVYjsgYeKXjNau4peM3Lbil4zMgOKXjMyVYjsgYeKXjNau4peM3Lbil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgU1lSSUFDIFJCQVNBIEFCT1ZFLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUEgMDMxNiAzMDJBIDA3MzcgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzM3IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzM3IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzM3IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzM3IDA1OUEgMDA2MjsgIyAoYeKXjNaa4peMzJbil4zjgKril4zct2I7IGHil4zjgKril4zMluKXjNy34peM1ppiOyBh4peM44Cq4peMzJbil4zct+KXjNaaYjsgYeKXjOOAquKXjMyW4peM3Lfil4zWmmI7IGHil4zjgKril4zMluKXjNy34peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIFNZUklBQyBSQkFTQSBCRUxPVywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDczNyAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwNzM3IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzM3IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzM3IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzM3IDAzMTYgMDU5QSAwMDYyOyAjIChh4peM3Lfil4zWmuKXjMyW4peM44CqYjsgYeKXjOOAquKXjNy34peMzJbil4zWmmI7IGHil4zjgKril4zct+KXjMyW4peM1ppiOyBh4peM44Cq4peM3Lfil4zMluKXjNaaYjsgYeKXjOOAquKXjNy34peMzJbil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFNZUklBQyBSQkFTQSBCRUxPVywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwNzM4IDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczOCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczOCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczOCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczOCAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peM3LhiOyBh4peM44Cq4peMzJbil4zcuOKXjNaaYjsgYeKXjOOAquKXjMyW4peM3Ljil4zWmmI7IGHil4zjgKril4zMluKXjNy44peM1ppiOyBh4peM44Cq4peMzJbil4zcuOKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBTWVJJQUMgRE9UVEVEIFpMQU1BIEhPUklaT05UQUwsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA3MzggMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDczOCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDczOCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDczOCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDczOCAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjNy44peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zcuOKXjMyW4peM1ppiOyBh4peM44Cq4peM3Ljil4zMluKXjNaaYjsgYeKXjOOAquKXjNy44peMzJbil4zWmmI7IGHil4zjgKril4zcuOKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBTWVJJQUMgRE9UVEVEIFpMQU1BIEhPUklaT05UQUwsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMDczOSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3MzkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3MzkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3MzkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDA3MzkgMDU5QSAwMDYyOyAjIChh4peM1pril4zMluKXjOOAquKXjNy5YjsgYeKXjOOAquKXjMyW4peM3Lnil4zWmmI7IGHil4zjgKril4zMluKXjNy54peM1ppiOyBh4peM44Cq4peMzJbil4zcueKXjNaaYjsgYeKXjOOAquKXjMyW4peM3Lnil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgU1lSSUFDIERPVFRFRCBaTEFNQSBBTkdVTEFSLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNzM5IDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDA3MzkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3MzkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3MzkgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3MzkgMDMxNiAwNTlBIDAwNjI7ICMgKGHil4zcueKXjNaa4peMzJbil4zjgKpiOyBh4peM44Cq4peM3Lnil4zMluKXjNaaYjsgYeKXjOOAquKXjNy54peMzJbil4zWmmI7IGHil4zjgKril4zcueKXjMyW4peM1ppiOyBh4peM44Cq4peM3Lnil4zMluKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgU1lSSUFDIERPVFRFRCBaTEFNQSBBTkdVTEFSLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDA3M0EgMDA2MjswMEUwIDA1QUUgMDczQSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDczQSAwMzE1IDAwNjI7MDBFMCAwNUFFIDA3M0EgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA3M0EgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM3LpiOyDDoOKXjNau4peM3Lril4zMlWI7IGHil4zWruKXjMyA4peM3Lril4zMlWI7IMOg4peM1q7il4zcuuKXjMyVYjsgYeKXjNau4peMzIDil4zcuuKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBTWVJJQUMgSEJBU0EgQUJPVkUsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA3M0EgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDczQSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDczQSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDczQSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDczQSAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjNy64peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM3Lril4zMgOKXjMyVYjsgYeKXjNau4peM3Lril4zMgOKXjMyVYjsgYeKXjNau4peM3Lril4zMgOKXjMyVYjsgYeKXjNau4peM3Lril4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgU1lSSUFDIEhCQVNBIEFCT1ZFLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUEgMDMxNiAzMDJBIDA3M0IgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzNCIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzNCIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzNCIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzNCIDA1OUEgMDA2MjsgIyAoYeKXjNaa4peMzJbil4zjgKril4zcu2I7IGHil4zjgKril4zMluKXjNy74peM1ppiOyBh4peM44Cq4peMzJbil4zcu+KXjNaaYjsgYeKXjOOAquKXjMyW4peM3Lvil4zWmmI7IGHil4zjgKril4zMluKXjNy74peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIFNZUklBQyBIQkFTQSBCRUxPVywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDczQiAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwNzNCIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzNCIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzNCIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzNCIDAzMTYgMDU5QSAwMDYyOyAjIChh4peM3Lvil4zWmuKXjMyW4peM44CqYjsgYeKXjOOAquKXjNy74peMzJbil4zWmmI7IGHil4zjgKril4zcu+KXjMyW4peM1ppiOyBh4peM44Cq4peM3Lvil4zMluKXjNaaYjsgYeKXjOOAquKXjNy74peMzJbil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFNZUklBQyBIQkFTQSBCRUxPVywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwNzNDIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczQyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczQyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczQyAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczQyAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peM3LxiOyBh4peM44Cq4peMzJbil4zcvOKXjNaaYjsgYeKXjOOAquKXjMyW4peM3Lzil4zWmmI7IGHil4zjgKril4zMluKXjNy84peM1ppiOyBh4peM44Cq4peMzJbil4zcvOKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBTWVJJQUMgSEJBU0EtRVNBU0EgRE9UVEVELCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNzNDIDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDA3M0MgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3M0MgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3M0MgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3M0MgMDMxNiAwNTlBIDAwNjI7ICMgKGHil4zcvOKXjNaa4peMzJbil4zjgKpiOyBh4peM44Cq4peM3Lzil4zMluKXjNaaYjsgYeKXjOOAquKXjNy84peMzJbil4zWmmI7IGHil4zjgKril4zcvOKXjMyW4peM1ppiOyBh4peM44Cq4peM3Lzil4zMluKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgU1lSSUFDIEhCQVNBLUVTQVNBIERPVFRFRCwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNzNEIDAwNjI7MDBFMCAwNUFFIDA3M0QgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA3M0QgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNzNEIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNzNEIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjNy9Yjsgw6Dil4zWruKXjNy94peMzJViOyBh4peM1q7il4zMgOKXjNy94peMzJViOyDDoOKXjNau4peM3L3il4zMlWI7IGHil4zWruKXjMyA4peM3L3il4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgU1lSSUFDIEVTQVNBIEFCT1ZFLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNzNEIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA3M0QgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3M0QgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3M0QgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3M0QgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zcveKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjNy94peMzIDil4zMlWI7IGHil4zWruKXjNy94peMzIDil4zMlWI7IGHil4zWruKXjNy94peMzIDil4zMlWI7IGHil4zWruKXjNy94peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFNZUklBQyBFU0FTQSBBQk9WRSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwNzNFIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczRSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczRSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczRSAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDczRSAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peM3L5iOyBh4peM44Cq4peMzJbil4zcvuKXjNaaYjsgYeKXjOOAquKXjMyW4peM3L7il4zWmmI7IGHil4zjgKril4zMluKXjNy+4peM1ppiOyBh4peM44Cq4peMzJbil4zcvuKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBTWVJJQUMgRVNBU0EgQkVMT1csIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA3M0UgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDczRSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDczRSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDczRSAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDczRSAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjNy+4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zcvuKXjMyW4peM1ppiOyBh4peM44Cq4peM3L7il4zMluKXjNaaYjsgYeKXjOOAquKXjNy+4peMzJbil4zWmmI7IGHil4zjgKril4zcvuKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBTWVJJQUMgRVNBU0EgQkVMT1csIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDczRiAwMDYyOzAwRTAgMDVBRSAwNzNGIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNzNGIDAzMTUgMDA2MjswMEUwIDA1QUUgMDczRiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDczRiAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zcv2I7IMOg4peM1q7il4zcv+KXjMyVYjsgYeKXjNau4peMzIDil4zcv+KXjMyVYjsgw6Dil4zWruKXjNy/4peMzJViOyBh4peM1q7il4zMgOKXjNy/4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIFNZUklBQyBSV0FIQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDczRiAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNzNGIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNzNGIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNzNGIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNzNGIDAzMDAgMDMxNSAwMDYyOyAjIChh4peM3L/il4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zcv+KXjMyA4peMzJViOyBh4peM1q7il4zcv+KXjMyA4peMzJViOyBh4peM1q7il4zcv+KXjMyA4peMzJViOyBh4peM1q7il4zcv+KXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBTWVJJQUMgUldBSEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDc0MCAwMDYyOzAwRTAgMDVBRSAwNzQwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNzQwIDAzMTUgMDA2MjswMEUwIDA1QUUgMDc0MCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDc0MCAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zdgGI7IMOg4peM1q7il4zdgOKXjMyVYjsgYeKXjNau4peMzIDil4zdgOKXjMyVYjsgw6Dil4zWruKXjN2A4peMzJViOyBh4peM1q7il4zMgOKXjN2A4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIFNZUklBQyBGRU1JTklORSBET1QsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA3NDAgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDc0MCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDc0MCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDc0MCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDc0MCAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjN2A4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM3YDil4zMgOKXjMyVYjsgYeKXjNau4peM3YDil4zMgOKXjMyVYjsgYeKXjNau4peM3YDil4zMgOKXjMyVYjsgYeKXjNau4peM3YDil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgU1lSSUFDIEZFTUlOSU5FIERPVCwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNzQxIDAwNjI7MDBFMCAwNUFFIDA3NDEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA3NDEgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNzQxIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNzQxIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjN2BYjsgw6Dil4zWruKXjN2B4peMzJViOyBh4peM1q7il4zMgOKXjN2B4peMzJViOyDDoOKXjNau4peM3YHil4zMlWI7IGHil4zWruKXjMyA4peM3YHil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgU1lSSUFDIFFVU0hTSEFZQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDc0MSAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwNzQxIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNzQxIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNzQxIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwNzQxIDAzMDAgMDMxNSAwMDYyOyAjIChh4peM3YHil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zdgeKXjMyA4peMzJViOyBh4peM1q7il4zdgeKXjMyA4peMzJViOyBh4peM1q7il4zdgeKXjMyA4peMzJViOyBh4peM1q7il4zdgeKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBTWVJJQUMgUVVTSFNIQVlBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUEgMDMxNiAzMDJBIDA3NDIgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzQyIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzQyIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzQyIDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzQyIDA1OUEgMDA2MjsgIyAoYeKXjNaa4peMzJbil4zjgKril4zdgmI7IGHil4zjgKril4zMluKXjN2C4peM1ppiOyBh4peM44Cq4peMzJbil4zdguKXjNaaYjsgYeKXjOOAquKXjMyW4peM3YLil4zWmmI7IGHil4zjgKril4zMluKXjN2C4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIFNZUklBQyBSVUtLQUtIQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDc0MiAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwNzQyIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzQyIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzQyIDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwNzQyIDAzMTYgMDU5QSAwMDYyOyAjIChh4peM3YLil4zWmuKXjMyW4peM44CqYjsgYeKXjOOAquKXjN2C4peMzJbil4zWmmI7IGHil4zjgKril4zdguKXjMyW4peM1ppiOyBh4peM44Cq4peM3YLil4zMluKXjNaaYjsgYeKXjOOAquKXjN2C4peMzJbil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFNZUklBQyBSVUtLQUtIQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNzQzIDAwNjI7MDBFMCAwNUFFIDA3NDMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA3NDMgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNzQzIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNzQzIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjN2DYjsgw6Dil4zWruKXjN2D4peMzJViOyBh4peM1q7il4zMgOKXjN2D4peMzJViOyDDoOKXjNau4peM3YPil4zMlWI7IGHil4zWruKXjMyA4peM3YPil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgU1lSSUFDIFRXTyBWRVJUSUNBTCBET1RTIEFCT1ZFLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNzQzIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA3NDMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3NDMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3NDMgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3NDMgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zdg+KXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjN2D4peMzIDil4zMlWI7IGHil4zWruKXjN2D4peMzIDil4zMlWI7IGHil4zWruKXjN2D4peMzIDil4zMlWI7IGHil4zWruKXjN2D4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFNZUklBQyBUV08gVkVSVElDQUwgRE9UUyBBQk9WRSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwNzQ0IDAwNjI7MDA2MSAzMDJBIDAzMTYgMDc0NCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDc0NCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDc0NCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDc0NCAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peM3YRiOyBh4peM44Cq4peMzJbil4zdhOKXjNaaYjsgYeKXjOOAquKXjMyW4peM3YTil4zWmmI7IGHil4zjgKril4zMluKXjN2E4peM1ppiOyBh4peM44Cq4peMzJbil4zdhOKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBTWVJJQUMgVFdPIFZFUlRJQ0FMIERPVFMgQkVMT1csIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA3NDQgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDc0NCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDc0NCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDc0NCAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDc0NCAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjN2E4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zdhOKXjMyW4peM1ppiOyBh4peM44Cq4peM3YTil4zMluKXjNaaYjsgYeKXjOOAquKXjN2E4peMzJbil4zWmmI7IGHil4zjgKril4zdhOKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBTWVJJQUMgVFdPIFZFUlRJQ0FMIERPVFMgQkVMT1csIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDc0NSAwMDYyOzAwRTAgMDVBRSAwNzQ1IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNzQ1IDAzMTUgMDA2MjswMEUwIDA1QUUgMDc0NSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDc0NSAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zdhWI7IMOg4peM1q7il4zdheKXjMyVYjsgYeKXjNau4peMzIDil4zdheKXjMyVYjsgw6Dil4zWruKXjN2F4peMzJViOyBh4peM1q7il4zMgOKXjN2F4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIFNZUklBQyBUSFJFRSBET1RTIEFCT1ZFLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNzQ1IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA3NDUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3NDUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3NDUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3NDUgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zdheKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjN2F4peMzIDil4zMlWI7IGHil4zWruKXjN2F4peMzIDil4zMlWI7IGHil4zWruKXjN2F4peMzIDil4zMlWI7IGHil4zWruKXjN2F4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFNZUklBQyBUSFJFRSBET1RTIEFCT1ZFLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUEgMDMxNiAzMDJBIDA3NDYgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzQ2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzQ2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzQ2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwNzQ2IDA1OUEgMDA2MjsgIyAoYeKXjNaa4peMzJbil4zjgKril4zdhmI7IGHil4zjgKril4zMluKXjN2G4peM1ppiOyBh4peM44Cq4peMzJbil4zdhuKXjNaaYjsgYeKXjOOAquKXjMyW4peM3Ybil4zWmmI7IGHil4zjgKril4zMluKXjN2G4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIFNZUklBQyBUSFJFRSBET1RTIEJFTE9XLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNzQ2IDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDA3NDYgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3NDYgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3NDYgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3NDYgMDMxNiAwNTlBIDAwNjI7ICMgKGHil4zdhuKXjNaa4peMzJbil4zjgKpiOyBh4peM44Cq4peM3Ybil4zMluKXjNaaYjsgYeKXjOOAquKXjN2G4peMzJbil4zWmmI7IGHil4zjgKril4zdhuKXjMyW4peM1ppiOyBh4peM44Cq4peM3Ybil4zMluKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgU1lSSUFDIFRIUkVFIERPVFMgQkVMT1csIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDc0NyAwMDYyOzAwRTAgMDVBRSAwNzQ3IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNzQ3IDAzMTUgMDA2MjswMEUwIDA1QUUgMDc0NyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDc0NyAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zdh2I7IMOg4peM1q7il4zdh+KXjMyVYjsgYeKXjNau4peMzIDil4zdh+KXjMyVYjsgw6Dil4zWruKXjN2H4peMzJViOyBh4peM1q7il4zMgOKXjN2H4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIFNZUklBQyBPQkxJUVVFIExJTkUgQUJPVkUsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA3NDcgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDc0NyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDc0NyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDc0NyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDc0NyAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjN2H4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM3Yfil4zMgOKXjMyVYjsgYeKXjNau4peM3Yfil4zMgOKXjMyVYjsgYeKXjNau4peM3Yfil4zMgOKXjMyVYjsgYeKXjNau4peM3Yfil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgU1lSSUFDIE9CTElRVUUgTElORSBBQk9WRSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwNzQ4IDAwNjI7MDA2MSAzMDJBIDAzMTYgMDc0OCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDc0OCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDc0OCAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDc0OCAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peM3YhiOyBh4peM44Cq4peMzJbil4zdiOKXjNaaYjsgYeKXjOOAquKXjMyW4peM3Yjil4zWmmI7IGHil4zjgKril4zMluKXjN2I4peM1ppiOyBh4peM44Cq4peMzJbil4zdiOKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBTWVJJQUMgT0JMSVFVRSBMSU5FIEJFTE9XLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNzQ4IDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDA3NDggMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3NDggMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3NDggMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDA3NDggMDMxNiAwNTlBIDAwNjI7ICMgKGHil4zdiOKXjNaa4peMzJbil4zjgKpiOyBh4peM44Cq4peM3Yjil4zMluKXjNaaYjsgYeKXjOOAquKXjN2I4peMzJbil4zWmmI7IGHil4zjgKril4zdiOKXjMyW4peM1ppiOyBh4peM44Cq4peM3Yjil4zMluKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgU1lSSUFDIE9CTElRVUUgTElORSBCRUxPVywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNzQ5IDAwNjI7MDBFMCAwNUFFIDA3NDkgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA3NDkgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNzQ5IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNzQ5IDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjN2JYjsgw6Dil4zWruKXjN2J4peMzJViOyBh4peM1q7il4zMgOKXjN2J4peMzJViOyDDoOKXjNau4peM3Ynil4zMlWI7IGHil4zWruKXjMyA4peM3Ynil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgU1lSSUFDIE1VU0lDLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNzQ5IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDA3NDkgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3NDkgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3NDkgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDA3NDkgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zdieKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjN2J4peMzIDil4zMlWI7IGHil4zWruKXjN2J4peMzIDil4zMlWI7IGHil4zWruKXjN2J4peMzIDil4zMlWI7IGHil4zWruKXjN2J4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFNZUklBQyBNVVNJQywgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwNzRBIDAwNjI7MDBFMCAwNUFFIDA3NEEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA3NEEgMDMxNSAwMDYyOzAwRTAgMDVBRSAwNzRBIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwNzRBIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjN2KYjsgw6Dil4zWruKXjN2K4peMzJViOyBh4peM1q7il4zMgOKXjN2K4peMzJViOyDDoOKXjNau4peM3Yril4zMlWI7IGHil4zWruKXjMyA4peM3Yril4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgU1lSSUFDIEJBUlJFS0gsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA3NEEgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDc0QSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDc0QSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDc0QSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDc0QSAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjN2K4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM3Yril4zMgOKXjMyVYjsgYeKXjNau4peM3Yril4zMgOKXjMyVYjsgYeKXjNau4peM3Yril4zMgOKXjMyVYjsgYeKXjNau4peM3Yril4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgU1lSSUFDIEJBUlJFS0gsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMzA5OSAwOTNDIDAzMzQgMDkzQyAwMDYyOzAwNjEgMDMzNCAwOTNDIDA5M0MgMzA5OSAwMDYyOzAwNjEgMDMzNCAwOTNDIDA5M0MgMzA5OSAwMDYyOzAwNjEgMDMzNCAwOTNDIDA5M0MgMzA5OSAwMDYyOzAwNjEgMDMzNCAwOTNDIDA5M0MgMzA5OSAwMDYyOyAjIChh4peM44KZ4peM4KS84peMzLTil4zgpLxiOyBh4peMzLTil4zgpLzil4zgpLzil4zjgpliOyBh4peMzLTil4zgpLzil4zgpLzil4zjgpliOyBh4peMzLTil4zgpLzil4zgpLzil4zjgpliOyBh4peMzLTil4zgpLzil4zgpLzil4zjgpliOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgS0FUQUtBTkEtSElSQUdBTkEgVk9JQ0VEIFNPVU5EIE1BUkssIERFVkFOQUdBUkkgU0lHTiBOVUtUQSwgQ09NQklOSU5HIFRJTERFIE9WRVJMQVksIERFVkFOQUdBUkkgU0lHTiBOVUtUQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDkzQyAzMDk5IDA5M0MgMDMzNCAwMDYyOzAwNjEgMDMzNCAwOTNDIDA5M0MgMzA5OSAwMDYyOzAwNjEgMDMzNCAwOTNDIDA5M0MgMzA5OSAwMDYyOzAwNjEgMDMzNCAwOTNDIDA5M0MgMzA5OSAwMDYyOzAwNjEgMDMzNCAwOTNDIDA5M0MgMzA5OSAwMDYyOyAjIChh4peM4KS84peM44KZ4peM4KS84peMzLRiOyBh4peMzLTil4zgpLzil4zgpLzil4zjgpliOyBh4peMzLTil4zgpLzil4zgpLzil4zjgpliOyBh4peMzLTil4zgpLzil4zgpLzil4zjgpliOyBh4peMzLTil4zgpLzil4zgpLzil4zjgpliOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBERVZBTkFHQVJJIFNJR04gTlVLVEEsIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSywgREVWQU5BR0FSSSBTSUdOIE5VS1RBLCBDT01CSU5JTkcgVElMREUgT1ZFUkxBWSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVCMCAwOTREIDMwOTkgMDk0RCAwMDYyOzAwNjEgMzA5OSAwOTREIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDA5NEQgMDVCMCAwMDYyOyAjIChh4peM1rDil4zgpY3il4zjgpnil4zgpY1iOyBh4peM44KZ4peM4KWN4peM4KWN4peM1rBiOyBh4peM44KZ4peM4KWN4peM4KWN4peM1rBiOyBh4peM44KZ4peM4KWN4peM4KWN4peM1rBiOyBh4peM44KZ4peM4KWN4peM4KWN4peM1rBiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgUE9JTlQgU0hFVkEsIERFVkFOQUdBUkkgU0lHTiBWSVJBTUEsIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSywgREVWQU5BR0FSSSBTSUdOIFZJUkFNQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDk0RCAwNUIwIDA5NEQgMzA5OSAwMDYyOzAwNjEgMzA5OSAwOTREIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDA5NEQgMDVCMCAwMDYyOyAjIChh4peM4KWN4peM1rDil4zgpY3il4zjgpliOyBh4peM44KZ4peM4KWN4peM4KWN4peM1rBiOyBh4peM44KZ4peM4KWN4peM4KWN4peM1rBiOyBh4peM44KZ4peM4KWN4peM4KWN4peM1rBiOyBh4peM44KZ4peM4KWN4peM4KWN4peM1rBiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBERVZBTkFHQVJJIFNJR04gVklSQU1BLCBIRUJSRVcgUE9JTlQgU0hFVkEsIERFVkFOQUdBUkkgU0lHTiBWSVJBTUEsIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDk1MSAwMDYyOzAwRTAgMDVBRSAwOTUxIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwOTUxIDAzMTUgMDA2MjswMEUwIDA1QUUgMDk1MSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDk1MSAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zgpZFiOyDDoOKXjNau4peM4KWR4peMzJViOyBh4peM1q7il4zMgOKXjOClkeKXjMyVYjsgw6Dil4zWruKXjOClkeKXjMyVYjsgYeKXjNau4peMzIDil4zgpZHil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgREVWQU5BR0FSSSBTVFJFU1MgU0lHTiBVREFUVEEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA5NTEgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDk1MSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDk1MSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDk1MSAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDk1MSAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjOClkeKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjOClkeKXjMyA4peMzJViOyBh4peM1q7il4zgpZHil4zMgOKXjMyVYjsgYeKXjNau4peM4KWR4peMzIDil4zMlWI7IGHil4zWruKXjOClkeKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBERVZBTkFHQVJJIFNUUkVTUyBTSUdOIFVEQVRUQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNTlBIDAzMTYgMzAyQSAwOTUyIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDk1MiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDk1MiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDk1MiAwNTlBIDAwNjI7MDA2MSAzMDJBIDAzMTYgMDk1MiAwNTlBIDAwNjI7ICMgKGHil4zWmuKXjMyW4peM44Cq4peM4KWSYjsgYeKXjOOAquKXjMyW4peM4KWS4peM1ppiOyBh4peM44Cq4peMzJbil4zgpZLil4zWmmI7IGHil4zjgKril4zMluKXjOClkuKXjNaaYjsgYeKXjOOAquKXjMyW4peM4KWS4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIERFVkFOQUdBUkkgU1RSRVNTIFNJR04gQU5VREFUVEEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA5NTIgMDU5QSAwMzE2IDMwMkEgMDA2MjswMDYxIDMwMkEgMDk1MiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDk1MiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDk1MiAwMzE2IDA1OUEgMDA2MjswMDYxIDMwMkEgMDk1MiAwMzE2IDA1OUEgMDA2MjsgIyAoYeKXjOClkuKXjNaa4peMzJbil4zjgKpiOyBh4peM44Cq4peM4KWS4peMzJbil4zWmmI7IGHil4zjgKril4zgpZLil4zMluKXjNaaYjsgYeKXjOOAquKXjOClkuKXjMyW4peM1ppiOyBh4peM44Cq4peM4KWS4peMzJbil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIERFVkFOQUdBUkkgU1RSRVNTIFNJR04gQU5VREFUVEEsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMDk1MyAwMDYyOzAwRTAgMDVBRSAwOTUzIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwOTUzIDAzMTUgMDA2MjswMEUwIDA1QUUgMDk1MyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMDk1MyAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zgpZNiOyDDoOKXjNau4peM4KWT4peMzJViOyBh4peM1q7il4zMgOKXjOClk+KXjMyVYjsgw6Dil4zWruKXjOClk+KXjMyVYjsgYeKXjNau4peMzIDil4zgpZPil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgREVWQU5BR0FSSSBHUkFWRSBBQ0NFTlQsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA5NTMgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMDk1MyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDk1MyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDk1MyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDk1MyAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjOClk+KXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjOClk+KXjMyA4peMzJViOyBh4peM1q7il4zgpZPil4zMgOKXjMyVYjsgYeKXjNau4peM4KWT4peMzIDil4zMlWI7IGHil4zWruKXjOClk+KXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBERVZBTkFHQVJJIEdSQVZFIEFDQ0VOVCwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAwOTU0IDAwNjI7MDBFMCAwNUFFIDA5NTQgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDA5NTQgMDMxNSAwMDYyOzAwRTAgMDVBRSAwOTU0IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwOTU0IDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjOCllGI7IMOg4peM1q7il4zgpZTil4zMlWI7IGHil4zWruKXjMyA4peM4KWU4peMzJViOyDDoOKXjNau4peM4KWU4peMzJViOyBh4peM1q7il4zMgOKXjOCllOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBERVZBTkFHQVJJIEFDVVRFIEFDQ0VOVCwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDk1NCAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwOTU0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwOTU0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwOTU0IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwOTU0IDAzMDAgMDMxNSAwMDYyOyAjIChh4peM4KWU4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM4KWU4peMzIDil4zMlWI7IGHil4zWruKXjOCllOKXjMyA4peMzJViOyBh4peM1q7il4zgpZTil4zMgOKXjMyVYjsgYeKXjNau4peM4KWU4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIERFVkFOQUdBUkkgQUNVVEUgQUNDRU5ULCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDMwOTkgMDkzQyAwMzM0IDA5QkMgMDA2MjswMDYxIDAzMzQgMDkzQyAwOUJDIDMwOTkgMDA2MjswMDYxIDAzMzQgMDkzQyAwOUJDIDMwOTkgMDA2MjswMDYxIDAzMzQgMDkzQyAwOUJDIDMwOTkgMDA2MjswMDYxIDAzMzQgMDkzQyAwOUJDIDMwOTkgMDA2MjsgIyAoYeKXjOOCmeKXjOCkvOKXjMy04peM4Ka8YjsgYeKXjMy04peM4KS84peM4Ka84peM44KZYjsgYeKXjMy04peM4KS84peM4Ka84peM44KZYjsgYeKXjMy04peM4KS84peM4Ka84peM44KZYjsgYeKXjMy04peM4KS84peM4Ka84peM44KZYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFZPSUNFRCBTT1VORCBNQVJLLCBERVZBTkFHQVJJIFNJR04gTlVLVEEsIENPTUJJTklORyBUSUxERSBPVkVSTEFZLCBCRU5HQUxJIFNJR04gTlVLVEEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA5QkMgMzA5OSAwOTNDIDAzMzQgMDA2MjswMDYxIDAzMzQgMDlCQyAwOTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMDlCQyAwOTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMDlCQyAwOTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMDlCQyAwOTNDIDMwOTkgMDA2MjsgIyAoYeKXjOCmvOKXjOOCmeKXjOCkvOKXjMy0YjsgYeKXjMy04peM4Ka84peM4KS84peM44KZYjsgYeKXjMy04peM4Ka84peM4KS84peM44KZYjsgYeKXjMy04peM4Ka84peM4KS84peM44KZYjsgYeKXjMy04peM4Ka84peM4KS84peM44KZYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQkVOR0FMSSBTSUdOIE5VS1RBLCBDT01CSU5JTkcgS0FUQUtBTkEtSElSQUdBTkEgVk9JQ0VEIFNPVU5EIE1BUkssIERFVkFOQUdBUkkgU0lHTiBOVUtUQSwgQ09NQklOSU5HIFRJTERFIE9WRVJMQVksIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QjAgMDk0RCAzMDk5IDA5Q0QgMDA2MjswMDYxIDMwOTkgMDk0RCAwOUNEIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwOUNEIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwOUNEIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwOUNEIDA1QjAgMDA2MjsgIyAoYeKXjNaw4peM4KWN4peM44KZ4peM4KeNYjsgYeKXjOOCmeKXjOCljeKXjOCnjeKXjNawYjsgYeKXjOOCmeKXjOCljeKXjOCnjeKXjNawYjsgYeKXjOOCmeKXjOCljeKXjOCnjeKXjNawYjsgYeKXjOOCmeKXjOCljeKXjOCnjeKXjNawYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIFBPSU5UIFNIRVZBLCBERVZBTkFHQVJJIFNJR04gVklSQU1BLCBDT01CSU5JTkcgS0FUQUtBTkEtSElSQUdBTkEgVk9JQ0VEIFNPVU5EIE1BUkssIEJFTkdBTEkgU0lHTiBWSVJBTUEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA5Q0QgMDVCMCAwOTREIDMwOTkgMDA2MjswMDYxIDMwOTkgMDlDRCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMDlDRCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMDlDRCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMDlDRCAwOTREIDA1QjAgMDA2MjsgIyAoYeKXjOCnjeKXjNaw4peM4KWN4peM44KZYjsgYeKXjOOCmeKXjOCnjeKXjOCljeKXjNawYjsgYeKXjOOCmeKXjOCnjeKXjOCljeKXjNawYjsgYeKXjOOCmeKXjOCnjeKXjOCljeKXjNawYjsgYeKXjOOCmeKXjOCnjeKXjOCljeKXjNawYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQkVOR0FMSSBTSUdOIFZJUkFNQSwgSEVCUkVXIFBPSU5UIFNIRVZBLCBERVZBTkFHQVJJIFNJR04gVklSQU1BLCBDT01CSU5JTkcgS0FUQUtBTkEtSElSQUdBTkEgVk9JQ0VEIFNPVU5EIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDMwOTkgMDkzQyAwMzM0IDBBM0MgMDA2MjswMDYxIDAzMzQgMDkzQyAwQTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMDkzQyAwQTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMDkzQyAwQTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMDkzQyAwQTNDIDMwOTkgMDA2MjsgIyAoYeKXjOOCmeKXjOCkvOKXjMy04peM4Ki8YjsgYeKXjMy04peM4KS84peM4Ki84peM44KZYjsgYeKXjMy04peM4KS84peM4Ki84peM44KZYjsgYeKXjMy04peM4KS84peM4Ki84peM44KZYjsgYeKXjMy04peM4KS84peM4Ki84peM44KZYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFZPSUNFRCBTT1VORCBNQVJLLCBERVZBTkFHQVJJIFNJR04gTlVLVEEsIENPTUJJTklORyBUSUxERSBPVkVSTEFZLCBHVVJNVUtISSBTSUdOIE5VS1RBLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwQTNDIDMwOTkgMDkzQyAwMzM0IDAwNjI7MDA2MSAwMzM0IDBBM0MgMDkzQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDBBM0MgMDkzQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDBBM0MgMDkzQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDBBM0MgMDkzQyAzMDk5IDAwNjI7ICMgKGHil4zgqLzil4zjgpnil4zgpLzil4zMtGI7IGHil4zMtOKXjOCovOKXjOCkvOKXjOOCmWI7IGHil4zMtOKXjOCovOKXjOCkvOKXjOOCmWI7IGHil4zMtOKXjOCovOKXjOCkvOKXjOOCmWI7IGHil4zMtOKXjOCovOKXjOCkvOKXjOOCmWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEdVUk1VS0hJIFNJR04gTlVLVEEsIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSywgREVWQU5BR0FSSSBTSUdOIE5VS1RBLCBDT01CSU5JTkcgVElMREUgT1ZFUkxBWSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVCMCAwOTREIDMwOTkgMEE0RCAwMDYyOzAwNjEgMzA5OSAwOTREIDBBNEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDBBNEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDBBNEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDBBNEQgMDVCMCAwMDYyOyAjIChh4peM1rDil4zgpY3il4zjgpnil4zgqY1iOyBh4peM44KZ4peM4KWN4peM4KmN4peM1rBiOyBh4peM44KZ4peM4KWN4peM4KmN4peM1rBiOyBh4peM44KZ4peM4KWN4peM4KmN4peM1rBiOyBh4peM44KZ4peM4KWN4peM4KmN4peM1rBiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgUE9JTlQgU0hFVkEsIERFVkFOQUdBUkkgU0lHTiBWSVJBTUEsIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSywgR1VSTVVLSEkgU0lHTiBWSVJBTUEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDBBNEQgMDVCMCAwOTREIDMwOTkgMDA2MjswMDYxIDMwOTkgMEE0RCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMEE0RCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMEE0RCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMEE0RCAwOTREIDA1QjAgMDA2MjsgIyAoYeKXjOCpjeKXjNaw4peM4KWN4peM44KZYjsgYeKXjOOCmeKXjOCpjeKXjOCljeKXjNawYjsgYeKXjOOCmeKXjOCpjeKXjOCljeKXjNawYjsgYeKXjOOCmeKXjOCpjeKXjOCljeKXjNawYjsgYeKXjOOCmeKXjOCpjeKXjOCljeKXjNawYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgR1VSTVVLSEkgU0lHTiBWSVJBTUEsIEhFQlJFVyBQT0lOVCBTSEVWQSwgREVWQU5BR0FSSSBTSUdOIFZJUkFNQSwgQ09NQklOSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFZPSUNFRCBTT1VORCBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAzMDk5IDA5M0MgMDMzNCAwQUJDIDAwNjI7MDA2MSAwMzM0IDA5M0MgMEFCQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDA5M0MgMEFCQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDA5M0MgMEFCQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDA5M0MgMEFCQyAzMDk5IDAwNjI7ICMgKGHil4zjgpnil4zgpLzil4zMtOKXjOCqvGI7IGHil4zMtOKXjOCkvOKXjOCqvOKXjOOCmWI7IGHil4zMtOKXjOCkvOKXjOCqvOKXjOOCmWI7IGHil4zMtOKXjOCkvOKXjOCqvOKXjOOCmWI7IGHil4zMtOKXjOCkvOKXjOCqvOKXjOOCmWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSywgREVWQU5BR0FSSSBTSUdOIE5VS1RBLCBDT01CSU5JTkcgVElMREUgT1ZFUkxBWSwgR1VKQVJBVEkgU0lHTiBOVUtUQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEFCQyAzMDk5IDA5M0MgMDMzNCAwMDYyOzAwNjEgMDMzNCAwQUJDIDA5M0MgMzA5OSAwMDYyOzAwNjEgMDMzNCAwQUJDIDA5M0MgMzA5OSAwMDYyOzAwNjEgMDMzNCAwQUJDIDA5M0MgMzA5OSAwMDYyOzAwNjEgMDMzNCAwQUJDIDA5M0MgMzA5OSAwMDYyOyAjIChh4peM4Kq84peM44KZ4peM4KS84peMzLRiOyBh4peMzLTil4zgqrzil4zgpLzil4zjgpliOyBh4peMzLTil4zgqrzil4zgpLzil4zjgpliOyBh4peMzLTil4zgqrzil4zgpLzil4zjgpliOyBh4peMzLTil4zgqrzil4zgpLzil4zjgpliOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBHVUpBUkFUSSBTSUdOIE5VS1RBLCBDT01CSU5JTkcgS0FUQUtBTkEtSElSQUdBTkEgVk9JQ0VEIFNPVU5EIE1BUkssIERFVkFOQUdBUkkgU0lHTiBOVUtUQSwgQ09NQklOSU5HIFRJTERFIE9WRVJMQVksIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QjAgMDk0RCAzMDk5IDBBQ0QgMDA2MjswMDYxIDMwOTkgMDk0RCAwQUNEIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwQUNEIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwQUNEIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwQUNEIDA1QjAgMDA2MjsgIyAoYeKXjNaw4peM4KWN4peM44KZ4peM4KuNYjsgYeKXjOOCmeKXjOCljeKXjOCrjeKXjNawYjsgYeKXjOOCmeKXjOCljeKXjOCrjeKXjNawYjsgYeKXjOOCmeKXjOCljeKXjOCrjeKXjNawYjsgYeKXjOOCmeKXjOCljeKXjOCrjeKXjNawYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIFBPSU5UIFNIRVZBLCBERVZBTkFHQVJJIFNJR04gVklSQU1BLCBDT01CSU5JTkcgS0FUQUtBTkEtSElSQUdBTkEgVk9JQ0VEIFNPVU5EIE1BUkssIEdVSkFSQVRJIFNJR04gVklSQU1BLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwQUNEIDA1QjAgMDk0RCAzMDk5IDAwNjI7MDA2MSAzMDk5IDBBQ0QgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBBQ0QgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBBQ0QgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBBQ0QgMDk0RCAwNUIwIDAwNjI7ICMgKGHil4zgq43il4zWsOKXjOCljeKXjOOCmWI7IGHil4zjgpnil4zgq43il4zgpY3il4zWsGI7IGHil4zjgpnil4zgq43il4zgpY3il4zWsGI7IGHil4zjgpnil4zgq43il4zgpY3il4zWsGI7IGHil4zjgpnil4zgq43il4zgpY3il4zWsGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEdVSkFSQVRJIFNJR04gVklSQU1BLCBIRUJSRVcgUE9JTlQgU0hFVkEsIERFVkFOQUdBUkkgU0lHTiBWSVJBTUEsIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMzA5OSAwOTNDIDAzMzQgMEIzQyAwMDYyOzAwNjEgMDMzNCAwOTNDIDBCM0MgMzA5OSAwMDYyOzAwNjEgMDMzNCAwOTNDIDBCM0MgMzA5OSAwMDYyOzAwNjEgMDMzNCAwOTNDIDBCM0MgMzA5OSAwMDYyOzAwNjEgMDMzNCAwOTNDIDBCM0MgMzA5OSAwMDYyOyAjIChh4peM44KZ4peM4KS84peMzLTil4zgrLxiOyBh4peMzLTil4zgpLzil4zgrLzil4zjgpliOyBh4peMzLTil4zgpLzil4zgrLzil4zjgpliOyBh4peMzLTil4zgpLzil4zgrLzil4zjgpliOyBh4peMzLTil4zgpLzil4zgrLzil4zjgpliOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgS0FUQUtBTkEtSElSQUdBTkEgVk9JQ0VEIFNPVU5EIE1BUkssIERFVkFOQUdBUkkgU0lHTiBOVUtUQSwgQ09NQklOSU5HIFRJTERFIE9WRVJMQVksIE9SSVlBIFNJR04gTlVLVEEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDBCM0MgMzA5OSAwOTNDIDAzMzQgMDA2MjswMDYxIDAzMzQgMEIzQyAwOTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMEIzQyAwOTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMEIzQyAwOTNDIDMwOTkgMDA2MjswMDYxIDAzMzQgMEIzQyAwOTNDIDMwOTkgMDA2MjsgIyAoYeKXjOCsvOKXjOOCmeKXjOCkvOKXjMy0YjsgYeKXjMy04peM4Ky84peM4KS84peM44KZYjsgYeKXjMy04peM4Ky84peM4KS84peM44KZYjsgYeKXjMy04peM4Ky84peM4KS84peM44KZYjsgYeKXjMy04peM4Ky84peM4KS84peM44KZYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgT1JJWUEgU0lHTiBOVUtUQSwgQ09NQklOSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFZPSUNFRCBTT1VORCBNQVJLLCBERVZBTkFHQVJJIFNJR04gTlVLVEEsIENPTUJJTklORyBUSUxERSBPVkVSTEFZLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNUIwIDA5NEQgMzA5OSAwQjREIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEI0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEI0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEI0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEI0RCAwNUIwIDAwNjI7ICMgKGHil4zWsOKXjOCljeKXjOOCmeKXjOCtjWI7IGHil4zjgpnil4zgpY3il4zgrY3il4zWsGI7IGHil4zjgpnil4zgpY3il4zgrY3il4zWsGI7IGHil4zjgpnil4zgpY3il4zgrY3il4zWsGI7IGHil4zjgpnil4zgpY3il4zgrY3il4zWsGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBQT0lOVCBTSEVWQSwgREVWQU5BR0FSSSBTSUdOIFZJUkFNQSwgQ09NQklOSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFZPSUNFRCBTT1VORCBNQVJLLCBPUklZQSBTSUdOIFZJUkFNQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEI0RCAwNUIwIDA5NEQgMzA5OSAwMDYyOzAwNjEgMzA5OSAwQjREIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwQjREIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwQjREIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwQjREIDA5NEQgMDVCMCAwMDYyOyAjIChh4peM4K2N4peM1rDil4zgpY3il4zjgpliOyBh4peM44KZ4peM4K2N4peM4KWN4peM1rBiOyBh4peM44KZ4peM4K2N4peM4KWN4peM1rBiOyBh4peM44KZ4peM4K2N4peM4KWN4peM1rBiOyBh4peM44KZ4peM4K2N4peM4KWN4peM1rBiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBPUklZQSBTSUdOIFZJUkFNQSwgSEVCUkVXIFBPSU5UIFNIRVZBLCBERVZBTkFHQVJJIFNJR04gVklSQU1BLCBDT01CSU5JTkcgS0FUQUtBTkEtSElSQUdBTkEgVk9JQ0VEIFNPVU5EIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QjAgMDk0RCAzMDk5IDBCQ0QgMDA2MjswMDYxIDMwOTkgMDk0RCAwQkNEIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwQkNEIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwQkNEIDA1QjAgMDA2MjswMDYxIDMwOTkgMDk0RCAwQkNEIDA1QjAgMDA2MjsgIyAoYeKXjNaw4peM4KWN4peM44KZ4peM4K+NYjsgYeKXjOOCmeKXjOCljeKXjOCvjeKXjNawYjsgYeKXjOOCmeKXjOCljeKXjOCvjeKXjNawYjsgYeKXjOOCmeKXjOCljeKXjOCvjeKXjNawYjsgYeKXjOOCmeKXjOCljeKXjOCvjeKXjNawYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIFBPSU5UIFNIRVZBLCBERVZBTkFHQVJJIFNJR04gVklSQU1BLCBDT01CSU5JTkcgS0FUQUtBTkEtSElSQUdBTkEgVk9JQ0VEIFNPVU5EIE1BUkssIFRBTUlMIFNJR04gVklSQU1BLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwQkNEIDA1QjAgMDk0RCAzMDk5IDAwNjI7MDA2MSAzMDk5IDBCQ0QgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBCQ0QgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBCQ0QgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBCQ0QgMDk0RCAwNUIwIDAwNjI7ICMgKGHil4zgr43il4zWsOKXjOCljeKXjOOCmWI7IGHil4zjgpnil4zgr43il4zgpY3il4zWsGI7IGHil4zjgpnil4zgr43il4zgpY3il4zWsGI7IGHil4zjgpnil4zgr43il4zgpY3il4zWsGI7IGHil4zjgpnil4zgr43il4zgpY3il4zWsGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFRBTUlMIFNJR04gVklSQU1BLCBIRUJSRVcgUE9JTlQgU0hFVkEsIERFVkFOQUdBUkkgU0lHTiBWSVJBTUEsIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVCMCAwOTREIDMwOTkgMEM0RCAwMDYyOzAwNjEgMzA5OSAwOTREIDBDNEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDBDNEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDBDNEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDBDNEQgMDVCMCAwMDYyOyAjIChh4peM1rDil4zgpY3il4zjgpnil4zgsY1iOyBh4peM44KZ4peM4KWN4peM4LGN4peM1rBiOyBh4peM44KZ4peM4KWN4peM4LGN4peM1rBiOyBh4peM44KZ4peM4KWN4peM4LGN4peM1rBiOyBh4peM44KZ4peM4KWN4peM4LGN4peM1rBiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgUE9JTlQgU0hFVkEsIERFVkFOQUdBUkkgU0lHTiBWSVJBTUEsIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSywgVEVMVUdVIFNJR04gVklSQU1BLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwQzREIDA1QjAgMDk0RCAzMDk5IDAwNjI7MDA2MSAzMDk5IDBDNEQgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBDNEQgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBDNEQgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBDNEQgMDk0RCAwNUIwIDAwNjI7ICMgKGHil4zgsY3il4zWsOKXjOCljeKXjOOCmWI7IGHil4zjgpnil4zgsY3il4zgpY3il4zWsGI7IGHil4zjgpnil4zgsY3il4zgpY3il4zWsGI7IGHil4zjgpnil4zgsY3il4zgpY3il4zWsGI7IGHil4zjgpnil4zgsY3il4zgpY3il4zWsGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFRFTFVHVSBTSUdOIFZJUkFNQSwgSEVCUkVXIFBPSU5UIFNIRVZBLCBERVZBTkFHQVJJIFNJR04gVklSQU1BLCBDT01CSU5JTkcgS0FUQUtBTkEtSElSQUdBTkEgVk9JQ0VEIFNPVU5EIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDBDNTYgMEM1NSAwNzExIDBDNTUgMDA2MjswMDYxIDA3MTEgMEM1NSAwQzU1IDBDNTYgMDA2MjswMDYxIDA3MTEgMEM1NSAwQzU1IDBDNTYgMDA2MjswMDYxIDA3MTEgMEM1NSAwQzU1IDBDNTYgMDA2MjswMDYxIDA3MTEgMEM1NSAwQzU1IDBDNTYgMDA2MjsgIyAoYeKXjOCxluKXjOCxleKXjNyR4peM4LGVYjsgYeKXjNyR4peM4LGV4peM4LGV4peM4LGWYjsgYeKXjNyR4peM4LGV4peM4LGV4peM4LGWYjsgYeKXjNyR4peM4LGV4peM4LGV4peM4LGWYjsgYeKXjNyR4peM4LGV4peM4LGV4peM4LGWYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgVEVMVUdVIEFJIExFTkdUSCBNQVJLLCBURUxVR1UgTEVOR1RIIE1BUkssIFNZUklBQyBMRVRURVIgU1VQRVJTQ1JJUFQgQUxBUEgsIFRFTFVHVSBMRU5HVEggTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEM1NSAwQzU2IDBDNTUgMDcxMSAwMDYyOzAwNjEgMDcxMSAwQzU1IDBDNTUgMEM1NiAwMDYyOzAwNjEgMDcxMSAwQzU1IDBDNTUgMEM1NiAwMDYyOzAwNjEgMDcxMSAwQzU1IDBDNTUgMEM1NiAwMDYyOzAwNjEgMDcxMSAwQzU1IDBDNTUgMEM1NiAwMDYyOyAjIChh4peM4LGV4peM4LGW4peM4LGV4peM3JFiOyBh4peM3JHil4zgsZXil4zgsZXil4zgsZZiOyBh4peM3JHil4zgsZXil4zgsZXil4zgsZZiOyBh4peM3JHil4zgsZXil4zgsZXil4zgsZZiOyBh4peM3JHil4zgsZXil4zgsZXil4zgsZZiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBURUxVR1UgTEVOR1RIIE1BUkssIFRFTFVHVSBBSSBMRU5HVEggTUFSSywgVEVMVUdVIExFTkdUSCBNQVJLLCBTWVJJQUMgTEVUVEVSIFNVUEVSU0NSSVBUIEFMQVBILCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwRTM4IDBDNTYgMEM1NSAwQzU2IDAwNjI7MDA2MSAwQzU1IDBDNTYgMEM1NiAwRTM4IDAwNjI7MDA2MSAwQzU1IDBDNTYgMEM1NiAwRTM4IDAwNjI7MDA2MSAwQzU1IDBDNTYgMEM1NiAwRTM4IDAwNjI7MDA2MSAwQzU1IDBDNTYgMEM1NiAwRTM4IDAwNjI7ICMgKGHil4zguLjil4zgsZbil4zgsZXil4zgsZZiOyBh4peM4LGV4peM4LGW4peM4LGW4peM4Li4YjsgYeKXjOCxleKXjOCxluKXjOCxluKXjOC4uGI7IGHil4zgsZXil4zgsZbil4zgsZbil4zguLhiOyBh4peM4LGV4peM4LGW4peM4LGW4peM4Li4YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgVEhBSSBDSEFSQUNURVIgU0FSQSBVLCBURUxVR1UgQUkgTEVOR1RIIE1BUkssIFRFTFVHVSBMRU5HVEggTUFSSywgVEVMVUdVIEFJIExFTkdUSCBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwQzU2IDBFMzggMEM1NiAwQzU1IDAwNjI7MDA2MSAwQzU1IDBDNTYgMEM1NiAwRTM4IDAwNjI7MDA2MSAwQzU1IDBDNTYgMEM1NiAwRTM4IDAwNjI7MDA2MSAwQzU1IDBDNTYgMEM1NiAwRTM4IDAwNjI7MDA2MSAwQzU1IDBDNTYgMEM1NiAwRTM4IDAwNjI7ICMgKGHil4zgsZbil4zguLjil4zgsZbil4zgsZViOyBh4peM4LGV4peM4LGW4peM4LGW4peM4Li4YjsgYeKXjOCxleKXjOCxluKXjOCxluKXjOC4uGI7IGHil4zgsZXil4zgsZbil4zgsZbil4zguLhiOyBh4peM4LGV4peM4LGW4peM4LGW4peM4Li4YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgVEVMVUdVIEFJIExFTkdUSCBNQVJLLCBUSEFJIENIQVJBQ1RFUiBTQVJBIFUsIFRFTFVHVSBBSSBMRU5HVEggTUFSSywgVEVMVUdVIExFTkdUSCBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNUIwIDA5NEQgMzA5OSAwQ0NEIDAwNjI7MDA2MSAzMDk5IDA5NEQgMENDRCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMENDRCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMENDRCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMENDRCAwNUIwIDAwNjI7ICMgKGHil4zWsOKXjOCljeKXjOOCmeKXjOCzjWI7IGHil4zjgpnil4zgpY3il4zgs43il4zWsGI7IGHil4zjgpnil4zgpY3il4zgs43il4zWsGI7IGHil4zjgpnil4zgpY3il4zgs43il4zWsGI7IGHil4zjgpnil4zgpY3il4zgs43il4zWsGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBQT0lOVCBTSEVWQSwgREVWQU5BR0FSSSBTSUdOIFZJUkFNQSwgQ09NQklOSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFZPSUNFRCBTT1VORCBNQVJLLCBLQU5OQURBIFNJR04gVklSQU1BLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwQ0NEIDA1QjAgMDk0RCAzMDk5IDAwNjI7MDA2MSAzMDk5IDBDQ0QgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBDQ0QgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBDQ0QgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBDQ0QgMDk0RCAwNUIwIDAwNjI7ICMgKGHil4zgs43il4zWsOKXjOCljeKXjOOCmWI7IGHil4zjgpnil4zgs43il4zgpY3il4zWsGI7IGHil4zjgpnil4zgs43il4zgpY3il4zWsGI7IGHil4zjgpnil4zgs43il4zgpY3il4zWsGI7IGHil4zjgpnil4zgs43il4zgpY3il4zWsGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEtBTk5BREEgU0lHTiBWSVJBTUEsIEhFQlJFVyBQT0lOVCBTSEVWQSwgREVWQU5BR0FSSSBTSUdOIFZJUkFNQSwgQ09NQklOSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFZPSUNFRCBTT1VORCBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNUIwIDA5NEQgMzA5OSAwRDREIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEQ0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEQ0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEQ0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEQ0RCAwNUIwIDAwNjI7ICMgKGHil4zWsOKXjOCljeKXjOOCmeKXjOC1jWI7IGHil4zjgpnil4zgpY3il4zgtY3il4zWsGI7IGHil4zjgpnil4zgpY3il4zgtY3il4zWsGI7IGHil4zjgpnil4zgpY3il4zgtY3il4zWsGI7IGHil4zjgpnil4zgpY3il4zgtY3il4zWsGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBQT0lOVCBTSEVWQSwgREVWQU5BR0FSSSBTSUdOIFZJUkFNQSwgQ09NQklOSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFZPSUNFRCBTT1VORCBNQVJLLCBNQUxBWUFMQU0gU0lHTiBWSVJBTUEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDBENEQgMDVCMCAwOTREIDMwOTkgMDA2MjswMDYxIDMwOTkgMEQ0RCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMEQ0RCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMEQ0RCAwOTREIDA1QjAgMDA2MjswMDYxIDMwOTkgMEQ0RCAwOTREIDA1QjAgMDA2MjsgIyAoYeKXjOC1jeKXjNaw4peM4KWN4peM44KZYjsgYeKXjOOCmeKXjOC1jeKXjOCljeKXjNawYjsgYeKXjOOCmeKXjOC1jeKXjOCljeKXjNawYjsgYeKXjOOCmeKXjOC1jeKXjOCljeKXjNawYjsgYeKXjOOCmeKXjOC1jeKXjOCljeKXjNawYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgTUFMQVlBTEFNIFNJR04gVklSQU1BLCBIRUJSRVcgUE9JTlQgU0hFVkEsIERFVkFOQUdBUkkgU0lHTiBWSVJBTUEsIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVCMCAwOTREIDMwOTkgMERDQSAwMDYyOzAwNjEgMzA5OSAwOTREIDBEQ0EgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDBEQ0EgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDBEQ0EgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDBEQ0EgMDVCMCAwMDYyOyAjIChh4peM1rDil4zgpY3il4zjgpnil4zgt4piOyBh4peM44KZ4peM4KWN4peM4LeK4peM1rBiOyBh4peM44KZ4peM4KWN4peM4LeK4peM1rBiOyBh4peM44KZ4peM4KWN4peM4LeK4peM1rBiOyBh4peM44KZ4peM4KWN4peM4LeK4peM1rBiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgUE9JTlQgU0hFVkEsIERFVkFOQUdBUkkgU0lHTiBWSVJBTUEsIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSywgU0lOSEFMQSBTSUdOIEFMLUxBS1VOQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMERDQSAwNUIwIDA5NEQgMzA5OSAwMDYyOzAwNjEgMzA5OSAwRENBIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwRENBIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwRENBIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwRENBIDA5NEQgMDVCMCAwMDYyOyAjIChh4peM4LeK4peM1rDil4zgpY3il4zjgpliOyBh4peM44KZ4peM4LeK4peM4KWN4peM1rBiOyBh4peM44KZ4peM4LeK4peM4KWN4peM1rBiOyBh4peM44KZ4peM4LeK4peM4KWN4peM1rBiOyBh4peM44KZ4peM4LeK4peM4KWN4peM1rBiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBTSU5IQUxBIFNJR04gQUwtTEFLVU5BLCBIRUJSRVcgUE9JTlQgU0hFVkEsIERFVkFOQUdBUkkgU0lHTiBWSVJBTUEsIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEU0OCAwRTM4IDBDNTYgMEUzOCAwMDYyOzAwNjEgMEM1NiAwRTM4IDBFMzggMEU0OCAwMDYyOzAwNjEgMEM1NiAwRTM4IDBFMzggMEU0OCAwMDYyOzAwNjEgMEM1NiAwRTM4IDBFMzggMEU0OCAwMDYyOzAwNjEgMEM1NiAwRTM4IDBFMzggMEU0OCAwMDYyOyAjIChh4peM4LmI4peM4Li44peM4LGW4peM4Li4YjsgYeKXjOCxluKXjOC4uOKXjOC4uOKXjOC5iGI7IGHil4zgsZbil4zguLjil4zguLjil4zguYhiOyBh4peM4LGW4peM4Li44peM4Li44peM4LmIYjsgYeKXjOCxluKXjOC4uOKXjOC4uOKXjOC5iGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFRIQUkgQ0hBUkFDVEVSIE1BSSBFSywgVEhBSSBDSEFSQUNURVIgU0FSQSBVLCBURUxVR1UgQUkgTEVOR1RIIE1BUkssIFRIQUkgQ0hBUkFDVEVSIFNBUkEgVSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEUzOCAwRTQ4IDBFMzggMEM1NiAwMDYyOzAwNjEgMEM1NiAwRTM4IDBFMzggMEU0OCAwMDYyOzAwNjEgMEM1NiAwRTM4IDBFMzggMEU0OCAwMDYyOzAwNjEgMEM1NiAwRTM4IDBFMzggMEU0OCAwMDYyOzAwNjEgMEM1NiAwRTM4IDBFMzggMEU0OCAwMDYyOyAjIChh4peM4Li44peM4LmI4peM4Li44peM4LGWYjsgYeKXjOCxluKXjOC4uOKXjOC4uOKXjOC5iGI7IGHil4zgsZbil4zguLjil4zguLjil4zguYhiOyBh4peM4LGW4peM4Li44peM4Li44peM4LmIYjsgYeKXjOCxluKXjOC4uOKXjOC4uOKXjOC5iGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFRIQUkgQ0hBUkFDVEVSIFNBUkEgVSwgVEhBSSBDSEFSQUNURVIgTUFJIEVLLCBUSEFJIENIQVJBQ1RFUiBTQVJBIFUsIFRFTFVHVSBBSSBMRU5HVEggTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEU0OCAwRTM4IDBDNTYgMEUzOSAwMDYyOzAwNjEgMEM1NiAwRTM4IDBFMzkgMEU0OCAwMDYyOzAwNjEgMEM1NiAwRTM4IDBFMzkgMEU0OCAwMDYyOzAwNjEgMEM1NiAwRTM4IDBFMzkgMEU0OCAwMDYyOzAwNjEgMEM1NiAwRTM4IDBFMzkgMEU0OCAwMDYyOyAjIChh4peM4LmI4peM4Li44peM4LGW4peM4Li5YjsgYeKXjOCxluKXjOC4uOKXjOC4ueKXjOC5iGI7IGHil4zgsZbil4zguLjil4zguLnil4zguYhiOyBh4peM4LGW4peM4Li44peM4Li54peM4LmIYjsgYeKXjOCxluKXjOC4uOKXjOC4ueKXjOC5iGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFRIQUkgQ0hBUkFDVEVSIE1BSSBFSywgVEhBSSBDSEFSQUNURVIgU0FSQSBVLCBURUxVR1UgQUkgTEVOR1RIIE1BUkssIFRIQUkgQ0hBUkFDVEVSIFNBUkEgVVUsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDBFMzkgMEU0OCAwRTM4IDBDNTYgMDA2MjswMDYxIDBDNTYgMEUzOSAwRTM4IDBFNDggMDA2MjswMDYxIDBDNTYgMEUzOSAwRTM4IDBFNDggMDA2MjswMDYxIDBDNTYgMEUzOSAwRTM4IDBFNDggMDA2MjswMDYxIDBDNTYgMEUzOSAwRTM4IDBFNDggMDA2MjsgIyAoYeKXjOC4ueKXjOC5iOKXjOC4uOKXjOCxlmI7IGHil4zgsZbil4zguLnil4zguLjil4zguYhiOyBh4peM4LGW4peM4Li54peM4Li44peM4LmIYjsgYeKXjOCxluKXjOC4ueKXjOC4uOKXjOC5iGI7IGHil4zgsZbil4zguLnil4zguLjil4zguYhiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBUSEFJIENIQVJBQ1RFUiBTQVJBIFVVLCBUSEFJIENIQVJBQ1RFUiBNQUkgRUssIFRIQUkgQ0hBUkFDVEVSIFNBUkEgVSwgVEVMVUdVIEFJIExFTkdUSCBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNUIwIDA5NEQgMzA5OSAwRTNBIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEUzQSAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEUzQSAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEUzQSAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEUzQSAwNUIwIDAwNjI7ICMgKGHil4zWsOKXjOCljeKXjOOCmeKXjOC4umI7IGHil4zjgpnil4zgpY3il4zguLril4zWsGI7IGHil4zjgpnil4zgpY3il4zguLril4zWsGI7IGHil4zjgpnil4zgpY3il4zguLril4zWsGI7IGHil4zjgpnil4zgpY3il4zguLril4zWsGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBQT0lOVCBTSEVWQSwgREVWQU5BR0FSSSBTSUdOIFZJUkFNQSwgQ09NQklOSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFZPSUNFRCBTT1VORCBNQVJLLCBUSEFJIENIQVJBQ1RFUiBQSElOVEhVLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwRTNBIDA1QjAgMDk0RCAzMDk5IDAwNjI7MDA2MSAzMDk5IDBFM0EgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBFM0EgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBFM0EgMDk0RCAwNUIwIDAwNjI7MDA2MSAzMDk5IDBFM0EgMDk0RCAwNUIwIDAwNjI7ICMgKGHil4zguLril4zWsOKXjOCljeKXjOOCmWI7IGHil4zjgpnil4zguLril4zgpY3il4zWsGI7IGHil4zjgpnil4zguLril4zgpY3il4zWsGI7IGHil4zjgpnil4zguLril4zgpY3il4zWsGI7IGHil4zjgpnil4zguLril4zgpY3il4zWsGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFRIQUkgQ0hBUkFDVEVSIFBISU5USFUsIEhFQlJFVyBQT0lOVCBTSEVWQSwgREVWQU5BR0FSSSBTSUdOIFZJUkFNQSwgQ09NQklOSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFZPSUNFRCBTT1VORCBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwRUI4IDBFNDggMEUzOCAwRTQ4IDAwNjI7MDA2MSAwRTM4IDBFNDggMEU0OCAwRUI4IDAwNjI7MDA2MSAwRTM4IDBFNDggMEU0OCAwRUI4IDAwNjI7MDA2MSAwRTM4IDBFNDggMEU0OCAwRUI4IDAwNjI7MDA2MSAwRTM4IDBFNDggMEU0OCAwRUI4IDAwNjI7ICMgKGHil4zgurjil4zguYjil4zguLjil4zguYhiOyBh4peM4Li44peM4LmI4peM4LmI4peM4Lq4YjsgYeKXjOC4uOKXjOC5iOKXjOC5iOKXjOC6uGI7IGHil4zguLjil4zguYjil4zguYjil4zgurhiOyBh4peM4Li44peM4LmI4peM4LmI4peM4Lq4YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgTEFPIFZPV0VMIFNJR04gVSwgVEhBSSBDSEFSQUNURVIgTUFJIEVLLCBUSEFJIENIQVJBQ1RFUiBTQVJBIFUsIFRIQUkgQ0hBUkFDVEVSIE1BSSBFSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEU0OCAwRUI4IDBFNDggMEUzOCAwMDYyOzAwNjEgMEUzOCAwRTQ4IDBFNDggMEVCOCAwMDYyOzAwNjEgMEUzOCAwRTQ4IDBFNDggMEVCOCAwMDYyOzAwNjEgMEUzOCAwRTQ4IDBFNDggMEVCOCAwMDYyOzAwNjEgMEUzOCAwRTQ4IDBFNDggMEVCOCAwMDYyOyAjIChh4peM4LmI4peM4Lq44peM4LmI4peM4Li4YjsgYeKXjOC4uOKXjOC5iOKXjOC5iOKXjOC6uGI7IGHil4zguLjil4zguYjil4zguYjil4zgurhiOyBh4peM4Li44peM4LmI4peM4LmI4peM4Lq4YjsgYeKXjOC4uOKXjOC5iOKXjOC5iOKXjOC6uGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFRIQUkgQ0hBUkFDVEVSIE1BSSBFSywgTEFPIFZPV0VMIFNJR04gVSwgVEhBSSBDSEFSQUNURVIgTUFJIEVLLCBUSEFJIENIQVJBQ1RFUiBTQVJBIFUsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDBFQjggMEU0OCAwRTM4IDBFNDkgMDA2MjswMDYxIDBFMzggMEU0OCAwRTQ5IDBFQjggMDA2MjswMDYxIDBFMzggMEU0OCAwRTQ5IDBFQjggMDA2MjswMDYxIDBFMzggMEU0OCAwRTQ5IDBFQjggMDA2MjswMDYxIDBFMzggMEU0OCAwRTQ5IDBFQjggMDA2MjsgIyAoYeKXjOC6uOKXjOC5iOKXjOC4uOKXjOC5iWI7IGHil4zguLjil4zguYjil4zguYnil4zgurhiOyBh4peM4Li44peM4LmI4peM4LmJ4peM4Lq4YjsgYeKXjOC4uOKXjOC5iOKXjOC5ieKXjOC6uGI7IGHil4zguLjil4zguYjil4zguYnil4zgurhiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBMQU8gVk9XRUwgU0lHTiBVLCBUSEFJIENIQVJBQ1RFUiBNQUkgRUssIFRIQUkgQ0hBUkFDVEVSIFNBUkEgVSwgVEhBSSBDSEFSQUNURVIgTUFJIFRITywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEU0OSAwRUI4IDBFNDggMEUzOCAwMDYyOzAwNjEgMEUzOCAwRTQ5IDBFNDggMEVCOCAwMDYyOzAwNjEgMEUzOCAwRTQ5IDBFNDggMEVCOCAwMDYyOzAwNjEgMEUzOCAwRTQ5IDBFNDggMEVCOCAwMDYyOzAwNjEgMEUzOCAwRTQ5IDBFNDggMEVCOCAwMDYyOyAjIChh4peM4LmJ4peM4Lq44peM4LmI4peM4Li4YjsgYeKXjOC4uOKXjOC5ieKXjOC5iOKXjOC6uGI7IGHil4zguLjil4zguYnil4zguYjil4zgurhiOyBh4peM4Li44peM4LmJ4peM4LmI4peM4Lq4YjsgYeKXjOC4uOKXjOC5ieKXjOC5iOKXjOC6uGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFRIQUkgQ0hBUkFDVEVSIE1BSSBUSE8sIExBTyBWT1dFTCBTSUdOIFUsIFRIQUkgQ0hBUkFDVEVSIE1BSSBFSywgVEhBSSBDSEFSQUNURVIgU0FSQSBVLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwRUI4IDBFNDggMEUzOCAwRTRBIDAwNjI7MDA2MSAwRTM4IDBFNDggMEU0QSAwRUI4IDAwNjI7MDA2MSAwRTM4IDBFNDggMEU0QSAwRUI4IDAwNjI7MDA2MSAwRTM4IDBFNDggMEU0QSAwRUI4IDAwNjI7MDA2MSAwRTM4IDBFNDggMEU0QSAwRUI4IDAwNjI7ICMgKGHil4zgurjil4zguYjil4zguLjil4zguYpiOyBh4peM4Li44peM4LmI4peM4LmK4peM4Lq4YjsgYeKXjOC4uOKXjOC5iOKXjOC5iuKXjOC6uGI7IGHil4zguLjil4zguYjil4zguYril4zgurhiOyBh4peM4Li44peM4LmI4peM4LmK4peM4Lq4YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgTEFPIFZPV0VMIFNJR04gVSwgVEhBSSBDSEFSQUNURVIgTUFJIEVLLCBUSEFJIENIQVJBQ1RFUiBTQVJBIFUsIFRIQUkgQ0hBUkFDVEVSIE1BSSBUUkksIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDBFNEEgMEVCOCAwRTQ4IDBFMzggMDA2MjswMDYxIDBFMzggMEU0QSAwRTQ4IDBFQjggMDA2MjswMDYxIDBFMzggMEU0QSAwRTQ4IDBFQjggMDA2MjswMDYxIDBFMzggMEU0QSAwRTQ4IDBFQjggMDA2MjswMDYxIDBFMzggMEU0QSAwRTQ4IDBFQjggMDA2MjsgIyAoYeKXjOC5iuKXjOC6uOKXjOC5iOKXjOC4uGI7IGHil4zguLjil4zguYril4zguYjil4zgurhiOyBh4peM4Li44peM4LmK4peM4LmI4peM4Lq4YjsgYeKXjOC4uOKXjOC5iuKXjOC5iOKXjOC6uGI7IGHil4zguLjil4zguYril4zguYjil4zgurhiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBUSEFJIENIQVJBQ1RFUiBNQUkgVFJJLCBMQU8gVk9XRUwgU0lHTiBVLCBUSEFJIENIQVJBQ1RFUiBNQUkgRUssIFRIQUkgQ0hBUkFDVEVSIFNBUkEgVSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEVCOCAwRTQ4IDBFMzggMEU0QiAwMDYyOzAwNjEgMEUzOCAwRTQ4IDBFNEIgMEVCOCAwMDYyOzAwNjEgMEUzOCAwRTQ4IDBFNEIgMEVCOCAwMDYyOzAwNjEgMEUzOCAwRTQ4IDBFNEIgMEVCOCAwMDYyOzAwNjEgMEUzOCAwRTQ4IDBFNEIgMEVCOCAwMDYyOyAjIChh4peM4Lq44peM4LmI4peM4Li44peM4LmLYjsgYeKXjOC4uOKXjOC5iOKXjOC5i+KXjOC6uGI7IGHil4zguLjil4zguYjil4zguYvil4zgurhiOyBh4peM4Li44peM4LmI4peM4LmL4peM4Lq4YjsgYeKXjOC4uOKXjOC5iOKXjOC5i+KXjOC6uGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIExBTyBWT1dFTCBTSUdOIFUsIFRIQUkgQ0hBUkFDVEVSIE1BSSBFSywgVEhBSSBDSEFSQUNURVIgU0FSQSBVLCBUSEFJIENIQVJBQ1RFUiBNQUkgQ0hBVFRBV0EsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDBFNEIgMEVCOCAwRTQ4IDBFMzggMDA2MjswMDYxIDBFMzggMEU0QiAwRTQ4IDBFQjggMDA2MjswMDYxIDBFMzggMEU0QiAwRTQ4IDBFQjggMDA2MjswMDYxIDBFMzggMEU0QiAwRTQ4IDBFQjggMDA2MjswMDYxIDBFMzggMEU0QiAwRTQ4IDBFQjggMDA2MjsgIyAoYeKXjOC5i+KXjOC6uOKXjOC5iOKXjOC4uGI7IGHil4zguLjil4zguYvil4zguYjil4zgurhiOyBh4peM4Li44peM4LmL4peM4LmI4peM4Lq4YjsgYeKXjOC4uOKXjOC5i+KXjOC5iOKXjOC6uGI7IGHil4zguLjil4zguYvil4zguYjil4zgurhiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBUSEFJIENIQVJBQ1RFUiBNQUkgQ0hBVFRBV0EsIExBTyBWT1dFTCBTSUdOIFUsIFRIQUkgQ0hBUkFDVEVSIE1BSSBFSywgVEhBSSBDSEFSQUNURVIgU0FSQSBVLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwRUM4IDBFQjggMEU0OCAwRUI4IDAwNjI7MDA2MSAwRTQ4IDBFQjggMEVCOCAwRUM4IDAwNjI7MDA2MSAwRTQ4IDBFQjggMEVCOCAwRUM4IDAwNjI7MDA2MSAwRTQ4IDBFQjggMEVCOCAwRUM4IDAwNjI7MDA2MSAwRTQ4IDBFQjggMEVCOCAwRUM4IDAwNjI7ICMgKGHil4zgu4jil4zgurjil4zguYjil4zgurhiOyBh4peM4LmI4peM4Lq44peM4Lq44peM4LuIYjsgYeKXjOC5iOKXjOC6uOKXjOC6uOKXjOC7iGI7IGHil4zguYjil4zgurjil4zgurjil4zgu4hiOyBh4peM4LmI4peM4Lq44peM4Lq44peM4LuIYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgTEFPIFRPTkUgTUFJIEVLLCBMQU8gVk9XRUwgU0lHTiBVLCBUSEFJIENIQVJBQ1RFUiBNQUkgRUssIExBTyBWT1dFTCBTSUdOIFUsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDBFQjggMEVDOCAwRUI4IDBFNDggMDA2MjswMDYxIDBFNDggMEVCOCAwRUI4IDBFQzggMDA2MjswMDYxIDBFNDggMEVCOCAwRUI4IDBFQzggMDA2MjswMDYxIDBFNDggMEVCOCAwRUI4IDBFQzggMDA2MjswMDYxIDBFNDggMEVCOCAwRUI4IDBFQzggMDA2MjsgIyAoYeKXjOC6uOKXjOC7iOKXjOC6uOKXjOC5iGI7IGHil4zguYjil4zgurjil4zgurjil4zgu4hiOyBh4peM4LmI4peM4Lq44peM4Lq44peM4LuIYjsgYeKXjOC5iOKXjOC6uOKXjOC6uOKXjOC7iGI7IGHil4zguYjil4zgurjil4zgurjil4zgu4hiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBMQU8gVk9XRUwgU0lHTiBVLCBMQU8gVE9ORSBNQUkgRUssIExBTyBWT1dFTCBTSUdOIFUsIFRIQUkgQ0hBUkFDVEVSIE1BSSBFSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEVDOCAwRUI4IDBFNDggMEVCOSAwMDYyOzAwNjEgMEU0OCAwRUI4IDBFQjkgMEVDOCAwMDYyOzAwNjEgMEU0OCAwRUI4IDBFQjkgMEVDOCAwMDYyOzAwNjEgMEU0OCAwRUI4IDBFQjkgMEVDOCAwMDYyOzAwNjEgMEU0OCAwRUI4IDBFQjkgMEVDOCAwMDYyOyAjIChh4peM4LuI4peM4Lq44peM4LmI4peM4Lq5YjsgYeKXjOC5iOKXjOC6uOKXjOC6ueKXjOC7iGI7IGHil4zguYjil4zgurjil4zgurnil4zgu4hiOyBh4peM4LmI4peM4Lq44peM4Lq54peM4LuIYjsgYeKXjOC5iOKXjOC6uOKXjOC6ueKXjOC7iGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIExBTyBUT05FIE1BSSBFSywgTEFPIFZPV0VMIFNJR04gVSwgVEhBSSBDSEFSQUNURVIgTUFJIEVLLCBMQU8gVk9XRUwgU0lHTiBVVSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEVCOSAwRUM4IDBFQjggMEU0OCAwMDYyOzAwNjEgMEU0OCAwRUI5IDBFQjggMEVDOCAwMDYyOzAwNjEgMEU0OCAwRUI5IDBFQjggMEVDOCAwMDYyOzAwNjEgMEU0OCAwRUI5IDBFQjggMEVDOCAwMDYyOzAwNjEgMEU0OCAwRUI5IDBFQjggMEVDOCAwMDYyOyAjIChh4peM4Lq54peM4LuI4peM4Lq44peM4LmIYjsgYeKXjOC5iOKXjOC6ueKXjOC6uOKXjOC7iGI7IGHil4zguYjil4zgurnil4zgurjil4zgu4hiOyBh4peM4LmI4peM4Lq54peM4Lq44peM4LuIYjsgYeKXjOC5iOKXjOC6ueKXjOC6uOKXjOC7iGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIExBTyBWT1dFTCBTSUdOIFVVLCBMQU8gVE9ORSBNQUkgRUssIExBTyBWT1dFTCBTSUdOIFUsIFRIQUkgQ0hBUkFDVEVSIE1BSSBFSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEY3MSAwRUM4IDBFQjggMEVDOCAwMDYyOzAwNjEgMEVCOCAwRUM4IDBFQzggMEY3MSAwMDYyOzAwNjEgMEVCOCAwRUM4IDBFQzggMEY3MSAwMDYyOzAwNjEgMEVCOCAwRUM4IDBFQzggMEY3MSAwMDYyOzAwNjEgMEVCOCAwRUM4IDBFQzggMEY3MSAwMDYyOyAjIChh4peM4L2x4peM4LuI4peM4Lq44peM4LuIYjsgYeKXjOC6uOKXjOC7iOKXjOC7iOKXjOC9sWI7IGHil4zgurjil4zgu4jil4zgu4jil4zgvbFiOyBh4peM4Lq44peM4LuI4peM4LuI4peM4L2xYjsgYeKXjOC6uOKXjOC7iOKXjOC7iOKXjOC9sWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFRJQkVUQU4gVk9XRUwgU0lHTiBBQSwgTEFPIFRPTkUgTUFJIEVLLCBMQU8gVk9XRUwgU0lHTiBVLCBMQU8gVE9ORSBNQUkgRUssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDBFQzggMEY3MSAwRUM4IDBFQjggMDA2MjswMDYxIDBFQjggMEVDOCAwRUM4IDBGNzEgMDA2MjswMDYxIDBFQjggMEVDOCAwRUM4IDBGNzEgMDA2MjswMDYxIDBFQjggMEVDOCAwRUM4IDBGNzEgMDA2MjswMDYxIDBFQjggMEVDOCAwRUM4IDBGNzEgMDA2MjsgIyAoYeKXjOC7iOKXjOC9seKXjOC7iOKXjOC6uGI7IGHil4zgurjil4zgu4jil4zgu4jil4zgvbFiOyBh4peM4Lq44peM4LuI4peM4LuI4peM4L2xYjsgYeKXjOC6uOKXjOC7iOKXjOC7iOKXjOC9sWI7IGHil4zgurjil4zgu4jil4zgu4jil4zgvbFiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBMQU8gVE9ORSBNQUkgRUssIFRJQkVUQU4gVk9XRUwgU0lHTiBBQSwgTEFPIFRPTkUgTUFJIEVLLCBMQU8gVk9XRUwgU0lHTiBVLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwRjcxIDBFQzggMEVCOCAwRUM5IDAwNjI7MDA2MSAwRUI4IDBFQzggMEVDOSAwRjcxIDAwNjI7MDA2MSAwRUI4IDBFQzggMEVDOSAwRjcxIDAwNjI7MDA2MSAwRUI4IDBFQzggMEVDOSAwRjcxIDAwNjI7MDA2MSAwRUI4IDBFQzggMEVDOSAwRjcxIDAwNjI7ICMgKGHil4zgvbHil4zgu4jil4zgurjil4zgu4liOyBh4peM4Lq44peM4LuI4peM4LuJ4peM4L2xYjsgYeKXjOC6uOKXjOC7iOKXjOC7ieKXjOC9sWI7IGHil4zgurjil4zgu4jil4zgu4nil4zgvbFiOyBh4peM4Lq44peM4LuI4peM4LuJ4peM4L2xYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgVElCRVRBTiBWT1dFTCBTSUdOIEFBLCBMQU8gVE9ORSBNQUkgRUssIExBTyBWT1dFTCBTSUdOIFUsIExBTyBUT05FIE1BSSBUSE8sIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDBFQzkgMEY3MSAwRUM4IDBFQjggMDA2MjswMDYxIDBFQjggMEVDOSAwRUM4IDBGNzEgMDA2MjswMDYxIDBFQjggMEVDOSAwRUM4IDBGNzEgMDA2MjswMDYxIDBFQjggMEVDOSAwRUM4IDBGNzEgMDA2MjswMDYxIDBFQjggMEVDOSAwRUM4IDBGNzEgMDA2MjsgIyAoYeKXjOC7ieKXjOC9seKXjOC7iOKXjOC6uGI7IGHil4zgurjil4zgu4nil4zgu4jil4zgvbFiOyBh4peM4Lq44peM4LuJ4peM4LuI4peM4L2xYjsgYeKXjOC6uOKXjOC7ieKXjOC7iOKXjOC9sWI7IGHil4zgurjil4zgu4nil4zgu4jil4zgvbFiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBMQU8gVE9ORSBNQUkgVEhPLCBUSUJFVEFOIFZPV0VMIFNJR04gQUEsIExBTyBUT05FIE1BSSBFSywgTEFPIFZPV0VMIFNJR04gVSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEY3MSAwRUM4IDBFQjggMEVDQSAwMDYyOzAwNjEgMEVCOCAwRUM4IDBFQ0EgMEY3MSAwMDYyOzAwNjEgMEVCOCAwRUM4IDBFQ0EgMEY3MSAwMDYyOzAwNjEgMEVCOCAwRUM4IDBFQ0EgMEY3MSAwMDYyOzAwNjEgMEVCOCAwRUM4IDBFQ0EgMEY3MSAwMDYyOyAjIChh4peM4L2x4peM4LuI4peM4Lq44peM4LuKYjsgYeKXjOC6uOKXjOC7iOKXjOC7iuKXjOC9sWI7IGHil4zgurjil4zgu4jil4zgu4ril4zgvbFiOyBh4peM4Lq44peM4LuI4peM4LuK4peM4L2xYjsgYeKXjOC6uOKXjOC7iOKXjOC7iuKXjOC9sWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFRJQkVUQU4gVk9XRUwgU0lHTiBBQSwgTEFPIFRPTkUgTUFJIEVLLCBMQU8gVk9XRUwgU0lHTiBVLCBMQU8gVE9ORSBNQUkgVEksIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDBFQ0EgMEY3MSAwRUM4IDBFQjggMDA2MjswMDYxIDBFQjggMEVDQSAwRUM4IDBGNzEgMDA2MjswMDYxIDBFQjggMEVDQSAwRUM4IDBGNzEgMDA2MjswMDYxIDBFQjggMEVDQSAwRUM4IDBGNzEgMDA2MjswMDYxIDBFQjggMEVDQSAwRUM4IDBGNzEgMDA2MjsgIyAoYeKXjOC7iuKXjOC9seKXjOC7iOKXjOC6uGI7IGHil4zgurjil4zgu4ril4zgu4jil4zgvbFiOyBh4peM4Lq44peM4LuK4peM4LuI4peM4L2xYjsgYeKXjOC6uOKXjOC7iuKXjOC7iOKXjOC9sWI7IGHil4zgurjil4zgu4ril4zgu4jil4zgvbFiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBMQU8gVE9ORSBNQUkgVEksIFRJQkVUQU4gVk9XRUwgU0lHTiBBQSwgTEFPIFRPTkUgTUFJIEVLLCBMQU8gVk9XRUwgU0lHTiBVLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwRjcxIDBFQzggMEVCOCAwRUNCIDAwNjI7MDA2MSAwRUI4IDBFQzggMEVDQiAwRjcxIDAwNjI7MDA2MSAwRUI4IDBFQzggMEVDQiAwRjcxIDAwNjI7MDA2MSAwRUI4IDBFQzggMEVDQiAwRjcxIDAwNjI7MDA2MSAwRUI4IDBFQzggMEVDQiAwRjcxIDAwNjI7ICMgKGHil4zgvbHil4zgu4jil4zgurjil4zgu4tiOyBh4peM4Lq44peM4LuI4peM4LuL4peM4L2xYjsgYeKXjOC6uOKXjOC7iOKXjOC7i+KXjOC9sWI7IGHil4zgurjil4zgu4jil4zgu4vil4zgvbFiOyBh4peM4Lq44peM4LuI4peM4LuL4peM4L2xYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgVElCRVRBTiBWT1dFTCBTSUdOIEFBLCBMQU8gVE9ORSBNQUkgRUssIExBTyBWT1dFTCBTSUdOIFUsIExBTyBUT05FIE1BSSBDQVRBV0EsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDBFQ0IgMEY3MSAwRUM4IDBFQjggMDA2MjswMDYxIDBFQjggMEVDQiAwRUM4IDBGNzEgMDA2MjswMDYxIDBFQjggMEVDQiAwRUM4IDBGNzEgMDA2MjswMDYxIDBFQjggMEVDQiAwRUM4IDBGNzEgMDA2MjswMDYxIDBFQjggMEVDQiAwRUM4IDBGNzEgMDA2MjsgIyAoYeKXjOC7i+KXjOC9seKXjOC7iOKXjOC6uGI7IGHil4zgurjil4zgu4vil4zgu4jil4zgvbFiOyBh4peM4Lq44peM4LuL4peM4LuI4peM4L2xYjsgYeKXjOC6uOKXjOC7i+KXjOC7iOKXjOC9sWI7IGHil4zgurjil4zgu4vil4zgu4jil4zgvbFiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBMQU8gVE9ORSBNQUkgQ0FUQVdBLCBUSUJFVEFOIFZPV0VMIFNJR04gQUEsIExBTyBUT05FIE1BSSBFSywgTEFPIFZPV0VMIFNJR04gVSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMEYxOCAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGMTggMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGMTggMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGMTggMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGMTggMDU5QSAwMDYyOyAjIChh4peM1pril4zMluKXjOOAquKXjOC8mGI7IGHil4zjgKril4zMluKXjOC8mOKXjNaaYjsgYeKXjOOAquKXjMyW4peM4LyY4peM1ppiOyBh4peM44Cq4peMzJbil4zgvJjil4zWmmI7IGHil4zjgKril4zMluKXjOC8mOKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBUSUJFVEFOIEFTVFJPTE9HSUNBTCBTSUdOIC1LSFlVRCBQQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEYxOCAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwRjE4IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwRjE4IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwRjE4IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwRjE4IDAzMTYgMDU5QSAwMDYyOyAjIChh4peM4LyY4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zgvJjil4zMluKXjNaaYjsgYeKXjOOAquKXjOC8mOKXjMyW4peM1ppiOyBh4peM44Cq4peM4LyY4peMzJbil4zWmmI7IGHil4zjgKril4zgvJjil4zMluKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgVElCRVRBTiBBU1RST0xPR0lDQUwgU0lHTiAtS0hZVUQgUEEsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMEYxOSAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGMTkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGMTkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGMTkgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGMTkgMDU5QSAwMDYyOyAjIChh4peM1pril4zMluKXjOOAquKXjOC8mWI7IGHil4zjgKril4zMluKXjOC8meKXjNaaYjsgYeKXjOOAquKXjMyW4peM4LyZ4peM1ppiOyBh4peM44Cq4peMzJbil4zgvJnil4zWmmI7IGHil4zjgKril4zMluKXjOC8meKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBUSUJFVEFOIEFTVFJPTE9HSUNBTCBTSUdOIFNET05HIFRTSFVHUywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEYxOSAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwRjE5IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwRjE5IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwRjE5IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwRjE5IDAzMTYgMDU5QSAwMDYyOyAjIChh4peM4LyZ4peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zgvJnil4zMluKXjNaaYjsgYeKXjOOAquKXjOC8meKXjMyW4peM1ppiOyBh4peM44Cq4peM4LyZ4peMzJbil4zWmmI7IGHil4zjgKril4zgvJnil4zMluKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgVElCRVRBTiBBU1RST0xPR0lDQUwgU0lHTiBTRE9ORyBUU0hVR1MsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMEYzNSAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGMzUgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGMzUgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGMzUgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGMzUgMDU5QSAwMDYyOyAjIChh4peM1pril4zMluKXjOOAquKXjOC8tWI7IGHil4zjgKril4zMluKXjOC8teKXjNaaYjsgYeKXjOOAquKXjMyW4peM4Ly14peM1ppiOyBh4peM44Cq4peMzJbil4zgvLXil4zWmmI7IGHil4zjgKril4zMluKXjOC8teKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBUSUJFVEFOIE1BUksgTkdBUyBCWlVORyBOWUkgWkxBLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwRjM1IDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDBGMzUgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDBGMzUgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDBGMzUgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDBGMzUgMDMxNiAwNTlBIDAwNjI7ICMgKGHil4zgvLXil4zWmuKXjMyW4peM44CqYjsgYeKXjOOAquKXjOC8teKXjMyW4peM1ppiOyBh4peM44Cq4peM4Ly14peMzJbil4zWmmI7IGHil4zjgKril4zgvLXil4zMluKXjNaaYjsgYeKXjOOAquKXjOC8teKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBUSUJFVEFOIE1BUksgTkdBUyBCWlVORyBOWUkgWkxBLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1OUEgMDMxNiAzMDJBIDBGMzcgMDA2MjswMDYxIDMwMkEgMDMxNiAwRjM3IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwRjM3IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwRjM3IDA1OUEgMDA2MjswMDYxIDMwMkEgMDMxNiAwRjM3IDA1OUEgMDA2MjsgIyAoYeKXjNaa4peMzJbil4zjgKril4zgvLdiOyBh4peM44Cq4peMzJbil4zgvLfil4zWmmI7IGHil4zjgKril4zMluKXjOC8t+KXjNaaYjsgYeKXjOOAquKXjMyW4peM4Ly34peM1ppiOyBh4peM44Cq4peMzJbil4zgvLfil4zWmmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgVElCRVRBTiBNQVJLIE5HQVMgQlpVTkcgU0dPUiBSVEFHUywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEYzNyAwNTlBIDAzMTYgMzAyQSAwMDYyOzAwNjEgMzAyQSAwRjM3IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwRjM3IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwRjM3IDAzMTYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwRjM3IDAzMTYgMDU5QSAwMDYyOyAjIChh4peM4Ly34peM1pril4zMluKXjOOAqmI7IGHil4zjgKril4zgvLfil4zMluKXjNaaYjsgYeKXjOOAquKXjOC8t+KXjMyW4peM1ppiOyBh4peM44Cq4peM4Ly34peMzJbil4zWmmI7IGHil4zjgKril4zgvLfil4zMluKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgVElCRVRBTiBNQVJLIE5HQVMgQlpVTkcgU0dPUiBSVEFHUywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAzMDJBIDAzMUIgMDMyMSAwRjM5IDAwNjI7MDA2MSAwMzIxIDAzMUIgMEYzOSAzMDJBIDAwNjI7MDA2MSAwMzIxIDAzMUIgMEYzOSAzMDJBIDAwNjI7MDA2MSAwMzIxIDAzMUIgMEYzOSAzMDJBIDAwNjI7MDA2MSAwMzIxIDAzMUIgMEYzOSAzMDJBIDAwNjI7ICMgKGHil4zjgKril4zMm+KXjMyh4peM4Ly5YjsgYeKXjMyh4peMzJvil4zgvLnil4zjgKpiOyBh4peMzKHil4zMm+KXjOC8ueKXjOOAqmI7IGHil4zMoeKXjMyb4peM4Ly54peM44CqYjsgYeKXjMyh4peMzJvil4zgvLnil4zjgKpiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIENPTUJJTklORyBIT1JOLCBDT01CSU5JTkcgUEFMQVRBTElaRUQgSE9PSyBCRUxPVywgVElCRVRBTiBNQVJLIFRTQSAtUEhSVSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEYzOSAzMDJBIDAzMUIgMDMyMSAwMDYyOzAwNjEgMDMyMSAwRjM5IDAzMUIgMzAyQSAwMDYyOzAwNjEgMDMyMSAwRjM5IDAzMUIgMzAyQSAwMDYyOzAwNjEgMDMyMSAwRjM5IDAzMUIgMzAyQSAwMDYyOzAwNjEgMDMyMSAwRjM5IDAzMUIgMzAyQSAwMDYyOyAjIChh4peM4Ly54peM44Cq4peMzJvil4zMoWI7IGHil4zMoeKXjOC8ueKXjMyb4peM44CqYjsgYeKXjMyh4peM4Ly54peMzJvil4zjgKpiOyBh4peMzKHil4zgvLnil4zMm+KXjOOAqmI7IGHil4zMoeKXjOC8ueKXjMyb4peM44CqYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgVElCRVRBTiBNQVJLIFRTQSAtUEhSVSwgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBDT01CSU5JTkcgSE9STiwgQ09NQklOSU5HIFBBTEFUQUxJWkVEIEhPT0sgQkVMT1csIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDBGNzIgMEY3MSAwRUM4IDBGNzEgMDA2MjswMDYxIDBFQzggMEY3MSAwRjcxIDBGNzIgMDA2MjswMDYxIDBFQzggMEY3MSAwRjcxIDBGNzIgMDA2MjswMDYxIDBFQzggMEY3MSAwRjcxIDBGNzIgMDA2MjswMDYxIDBFQzggMEY3MSAwRjcxIDBGNzIgMDA2MjsgIyAoYeKXjOC9suKXjOC9seKXjOC7iOKXjOC9sWI7IGHil4zgu4jil4zgvbHil4zgvbHil4zgvbJiOyBh4peM4LuI4peM4L2x4peM4L2x4peM4L2yYjsgYeKXjOC7iOKXjOC9seKXjOC9seKXjOC9smI7IGHil4zgu4jil4zgvbHil4zgvbHil4zgvbJiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBUSUJFVEFOIFZPV0VMIFNJR04gSSwgVElCRVRBTiBWT1dFTCBTSUdOIEFBLCBMQU8gVE9ORSBNQUkgRUssIFRJQkVUQU4gVk9XRUwgU0lHTiBBQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEY3MSAwRjcyIDBGNzEgMEVDOCAwMDYyOzAwNjEgMEVDOCAwRjcxIDBGNzEgMEY3MiAwMDYyOzAwNjEgMEVDOCAwRjcxIDBGNzEgMEY3MiAwMDYyOzAwNjEgMEVDOCAwRjcxIDBGNzEgMEY3MiAwMDYyOzAwNjEgMEVDOCAwRjcxIDBGNzEgMEY3MiAwMDYyOyAjIChh4peM4L2x4peM4L2y4peM4L2x4peM4LuIYjsgYeKXjOC7iOKXjOC9seKXjOC9seKXjOC9smI7IGHil4zgu4jil4zgvbHil4zgvbHil4zgvbJiOyBh4peM4LuI4peM4L2x4peM4L2x4peM4L2yYjsgYeKXjOC7iOKXjOC9seKXjOC9seKXjOC9smI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFRJQkVUQU4gVk9XRUwgU0lHTiBBQSwgVElCRVRBTiBWT1dFTCBTSUdOIEksIFRJQkVUQU4gVk9XRUwgU0lHTiBBQSwgTEFPIFRPTkUgTUFJIEVLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwRjc0IDBGNzIgMEY3MSAwRjcyIDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3MiAwRjc0IDAwNjI7ICMgKGHil4zgvbTil4zgvbLil4zgvbHil4zgvbJiOyBh4peM4L2x4peM4L2y4peM4L2y4peM4L20YjsgYeKXjOC9seKXjOC9suKXjOC9suKXjOC9tGI7IGHil4zgvbHil4zgvbLil4zgvbLil4zgvbRiOyBh4peM4L2x4peM4L2y4peM4L2y4peM4L20YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgVElCRVRBTiBWT1dFTCBTSUdOIFUsIFRJQkVUQU4gVk9XRUwgU0lHTiBJLCBUSUJFVEFOIFZPV0VMIFNJR04gQUEsIFRJQkVUQU4gVk9XRUwgU0lHTiBJLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwRjcyIDBGNzQgMEY3MiAwRjcxIDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3MiAwRjc0IDAwNjI7ICMgKGHil4zgvbLil4zgvbTil4zgvbLil4zgvbFiOyBh4peM4L2x4peM4L2y4peM4L2y4peM4L20YjsgYeKXjOC9seKXjOC9suKXjOC9suKXjOC9tGI7IGHil4zgvbHil4zgvbLil4zgvbLil4zgvbRiOyBh4peM4L2x4peM4L2y4peM4L2y4peM4L20YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgVElCRVRBTiBWT1dFTCBTSUdOIEksIFRJQkVUQU4gVk9XRUwgU0lHTiBVLCBUSUJFVEFOIFZPV0VMIFNJR04gSSwgVElCRVRBTiBWT1dFTCBTSUdOIEFBLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzIxIDBGNzQgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcyIDBGNzQgMEY3NCAwMzIxIDAwNjI7MDA2MSAwRjcyIDBGNzQgMEY3NCAwMzIxIDAwNjI7MDA2MSAwRjcyIDBGNzQgMEY3NCAwMzIxIDAwNjI7MDA2MSAwRjcyIDBGNzQgMEY3NCAwMzIxIDAwNjI7ICMgKGHil4zMoeKXjOC9tOKXjOC9suKXjOC9tGI7IGHil4zgvbLil4zgvbTil4zgvbTil4zMoWI7IGHil4zgvbLil4zgvbTil4zgvbTil4zMoWI7IGHil4zgvbLil4zgvbTil4zgvbTil4zMoWI7IGHil4zgvbLil4zgvbTil4zgvbTil4zMoWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBQQUxBVEFMSVpFRCBIT09LIEJFTE9XLCBUSUJFVEFOIFZPV0VMIFNJR04gVSwgVElCRVRBTiBWT1dFTCBTSUdOIEksIFRJQkVUQU4gVk9XRUwgU0lHTiBVLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwRjc0IDAzMjEgMEY3NCAwRjcyIDAwNjI7MDA2MSAwRjcyIDBGNzQgMEY3NCAwMzIxIDAwNjI7MDA2MSAwRjcyIDBGNzQgMEY3NCAwMzIxIDAwNjI7MDA2MSAwRjcyIDBGNzQgMEY3NCAwMzIxIDAwNjI7MDA2MSAwRjcyIDBGNzQgMEY3NCAwMzIxIDAwNjI7ICMgKGHil4zgvbTil4zMoeKXjOC9tOKXjOC9smI7IGHil4zgvbLil4zgvbTil4zgvbTil4zMoWI7IGHil4zgvbLil4zgvbTil4zgvbTil4zMoWI7IGHil4zgvbLil4zgvbTil4zgvbTil4zMoWI7IGHil4zgvbLil4zgvbTil4zgvbTil4zMoWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFRJQkVUQU4gVk9XRUwgU0lHTiBVLCBDT01CSU5JTkcgUEFMQVRBTElaRUQgSE9PSyBCRUxPVywgVElCRVRBTiBWT1dFTCBTSUdOIFUsIFRJQkVUQU4gVk9XRUwgU0lHTiBJLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwRjc0IDBGNzIgMEY3MSAwRjdBIDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3QSAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3QSAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3QSAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3QSAwRjc0IDAwNjI7ICMgKGHil4zgvbTil4zgvbLil4zgvbHil4zgvbpiOyBh4peM4L2x4peM4L2y4peM4L264peM4L20YjsgYeKXjOC9seKXjOC9suKXjOC9uuKXjOC9tGI7IGHil4zgvbHil4zgvbLil4zgvbril4zgvbRiOyBh4peM4L2x4peM4L2y4peM4L264peM4L20YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgVElCRVRBTiBWT1dFTCBTSUdOIFUsIFRJQkVUQU4gVk9XRUwgU0lHTiBJLCBUSUJFVEFOIFZPV0VMIFNJR04gQUEsIFRJQkVUQU4gVk9XRUwgU0lHTiBFLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwRjdBIDBGNzQgMEY3MiAwRjcxIDAwNjI7MDA2MSAwRjcxIDBGN0EgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGN0EgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGN0EgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGN0EgMEY3MiAwRjc0IDAwNjI7ICMgKGHil4zgvbril4zgvbTil4zgvbLil4zgvbFiOyBh4peM4L2x4peM4L264peM4L2y4peM4L20YjsgYeKXjOC9seKXjOC9uuKXjOC9suKXjOC9tGI7IGHil4zgvbHil4zgvbril4zgvbLil4zgvbRiOyBh4peM4L2x4peM4L264peM4L2y4peM4L20YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgVElCRVRBTiBWT1dFTCBTSUdOIEUsIFRJQkVUQU4gVk9XRUwgU0lHTiBVLCBUSUJFVEFOIFZPV0VMIFNJR04gSSwgVElCRVRBTiBWT1dFTCBTSUdOIEFBLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwRjc0IDBGNzIgMEY3MSAwRjdCIDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3QiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3QiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3QiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGNzIgMEY3QiAwRjc0IDAwNjI7ICMgKGHil4zgvbTil4zgvbLil4zgvbHil4zgvbtiOyBh4peM4L2x4peM4L2y4peM4L274peM4L20YjsgYeKXjOC9seKXjOC9suKXjOC9u+KXjOC9tGI7IGHil4zgvbHil4zgvbLil4zgvbvil4zgvbRiOyBh4peM4L2x4peM4L2y4peM4L274peM4L20YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgVElCRVRBTiBWT1dFTCBTSUdOIFUsIFRJQkVUQU4gVk9XRUwgU0lHTiBJLCBUSUJFVEFOIFZPV0VMIFNJR04gQUEsIFRJQkVUQU4gVk9XRUwgU0lHTiBFRSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEY3QiAwRjc0IDBGNzIgMEY3MSAwMDYyOzAwNjEgMEY3MSAwRjdCIDBGNzIgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjdCIDBGNzIgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjdCIDBGNzIgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjdCIDBGNzIgMEY3NCAwMDYyOyAjIChh4peM4L274peM4L204peM4L2y4peM4L2xYjsgYeKXjOC9seKXjOC9u+KXjOC9suKXjOC9tGI7IGHil4zgvbHil4zgvbvil4zgvbLil4zgvbRiOyBh4peM4L2x4peM4L274peM4L2y4peM4L20YjsgYeKXjOC9seKXjOC9u+KXjOC9suKXjOC9tGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFRJQkVUQU4gVk9XRUwgU0lHTiBFRSwgVElCRVRBTiBWT1dFTCBTSUdOIFUsIFRJQkVUQU4gVk9XRUwgU0lHTiBJLCBUSUJFVEFOIFZPV0VMIFNJR04gQUEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDBGNzQgMEY3MiAwRjcxIDBGN0MgMDA2MjswMDYxIDBGNzEgMEY3MiAwRjdDIDBGNzQgMDA2MjswMDYxIDBGNzEgMEY3MiAwRjdDIDBGNzQgMDA2MjswMDYxIDBGNzEgMEY3MiAwRjdDIDBGNzQgMDA2MjswMDYxIDBGNzEgMEY3MiAwRjdDIDBGNzQgMDA2MjsgIyAoYeKXjOC9tOKXjOC9suKXjOC9seKXjOC9vGI7IGHil4zgvbHil4zgvbLil4zgvbzil4zgvbRiOyBh4peM4L2x4peM4L2y4peM4L284peM4L20YjsgYeKXjOC9seKXjOC9suKXjOC9vOKXjOC9tGI7IGHil4zgvbHil4zgvbLil4zgvbzil4zgvbRiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBUSUJFVEFOIFZPV0VMIFNJR04gVSwgVElCRVRBTiBWT1dFTCBTSUdOIEksIFRJQkVUQU4gVk9XRUwgU0lHTiBBQSwgVElCRVRBTiBWT1dFTCBTSUdOIE8sIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDBGN0MgMEY3NCAwRjcyIDBGNzEgMDA2MjswMDYxIDBGNzEgMEY3QyAwRjcyIDBGNzQgMDA2MjswMDYxIDBGNzEgMEY3QyAwRjcyIDBGNzQgMDA2MjswMDYxIDBGNzEgMEY3QyAwRjcyIDBGNzQgMDA2MjswMDYxIDBGNzEgMEY3QyAwRjcyIDBGNzQgMDA2MjsgIyAoYeKXjOC9vOKXjOC9tOKXjOC9suKXjOC9sWI7IGHil4zgvbHil4zgvbzil4zgvbLil4zgvbRiOyBh4peM4L2x4peM4L284peM4L2y4peM4L20YjsgYeKXjOC9seKXjOC9vOKXjOC9suKXjOC9tGI7IGHil4zgvbHil4zgvbzil4zgvbLil4zgvbRiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBUSUJFVEFOIFZPV0VMIFNJR04gTywgVElCRVRBTiBWT1dFTCBTSUdOIFUsIFRJQkVUQU4gVk9XRUwgU0lHTiBJLCBUSUJFVEFOIFZPV0VMIFNJR04gQUEsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDBGNzQgMEY3MiAwRjcxIDBGN0QgMDA2MjswMDYxIDBGNzEgMEY3MiAwRjdEIDBGNzQgMDA2MjswMDYxIDBGNzEgMEY3MiAwRjdEIDBGNzQgMDA2MjswMDYxIDBGNzEgMEY3MiAwRjdEIDBGNzQgMDA2MjswMDYxIDBGNzEgMEY3MiAwRjdEIDBGNzQgMDA2MjsgIyAoYeKXjOC9tOKXjOC9suKXjOC9seKXjOC9vWI7IGHil4zgvbHil4zgvbLil4zgvb3il4zgvbRiOyBh4peM4L2x4peM4L2y4peM4L294peM4L20YjsgYeKXjOC9seKXjOC9suKXjOC9veKXjOC9tGI7IGHil4zgvbHil4zgvbLil4zgvb3il4zgvbRiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBUSUJFVEFOIFZPV0VMIFNJR04gVSwgVElCRVRBTiBWT1dFTCBTSUdOIEksIFRJQkVUQU4gVk9XRUwgU0lHTiBBQSwgVElCRVRBTiBWT1dFTCBTSUdOIE9PLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwRjdEIDBGNzQgMEY3MiAwRjcxIDAwNjI7MDA2MSAwRjcxIDBGN0QgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGN0QgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGN0QgMEY3MiAwRjc0IDAwNjI7MDA2MSAwRjcxIDBGN0QgMEY3MiAwRjc0IDAwNjI7ICMgKGHil4zgvb3il4zgvbTil4zgvbLil4zgvbFiOyBh4peM4L2x4peM4L294peM4L2y4peM4L20YjsgYeKXjOC9seKXjOC9veKXjOC9suKXjOC9tGI7IGHil4zgvbHil4zgvb3il4zgvbLil4zgvbRiOyBh4peM4L2x4peM4L294peM4L2y4peM4L20YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgVElCRVRBTiBWT1dFTCBTSUdOIE9PLCBUSUJFVEFOIFZPV0VMIFNJR04gVSwgVElCRVRBTiBWT1dFTCBTSUdOIEksIFRJQkVUQU4gVk9XRUwgU0lHTiBBQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEY3NCAwRjcyIDBGNzEgMEY4MCAwMDYyOzAwNjEgMEY3MSAwRjcyIDBGODAgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjcyIDBGODAgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjcyIDBGODAgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjcyIDBGODAgMEY3NCAwMDYyOyAjIChh4peM4L204peM4L2y4peM4L2x4peM4L6AYjsgYeKXjOC9seKXjOC9suKXjOC+gOKXjOC9tGI7IGHil4zgvbHil4zgvbLil4zgvoDil4zgvbRiOyBh4peM4L2x4peM4L2y4peM4L6A4peM4L20YjsgYeKXjOC9seKXjOC9suKXjOC+gOKXjOC9tGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFRJQkVUQU4gVk9XRUwgU0lHTiBVLCBUSUJFVEFOIFZPV0VMIFNJR04gSSwgVElCRVRBTiBWT1dFTCBTSUdOIEFBLCBUSUJFVEFOIFZPV0VMIFNJR04gUkVWRVJTRUQgSSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEY4MCAwRjc0IDBGNzIgMEY3MSAwMDYyOzAwNjEgMEY3MSAwRjgwIDBGNzIgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjgwIDBGNzIgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjgwIDBGNzIgMEY3NCAwMDYyOzAwNjEgMEY3MSAwRjgwIDBGNzIgMEY3NCAwMDYyOyAjIChh4peM4L6A4peM4L204peM4L2y4peM4L2xYjsgYeKXjOC9seKXjOC+gOKXjOC9suKXjOC9tGI7IGHil4zgvbHil4zgvoDil4zgvbLil4zgvbRiOyBh4peM4L2x4peM4L6A4peM4L2y4peM4L20YjsgYeKXjOC9seKXjOC+gOKXjOC9suKXjOC9tGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFRJQkVUQU4gVk9XRUwgU0lHTiBSRVZFUlNFRCBJLCBUSUJFVEFOIFZPV0VMIFNJR04gVSwgVElCRVRBTiBWT1dFTCBTSUdOIEksIFRJQkVUQU4gVk9XRUwgU0lHTiBBQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMEY4MiAwMDYyOzAwRTAgMDVBRSAwRjgyIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAwRjgyIDAzMTUgMDA2MjswMEUwIDA1QUUgMEY4MiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMEY4MiAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zgvoJiOyDDoOKXjNau4peM4L6C4peMzJViOyBh4peM1q7il4zMgOKXjOC+guKXjMyVYjsgw6Dil4zWruKXjOC+guKXjMyVYjsgYeKXjNau4peMzIDil4zgvoLil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgVElCRVRBTiBTSUdOIE5ZSSBaTEEgTkFBIERBLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwRjgyIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDBGODIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDBGODIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDBGODIgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDBGODIgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zgvoLil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zgvoLil4zMgOKXjMyVYjsgYeKXjNau4peM4L6C4peMzIDil4zMlWI7IGHil4zWruKXjOC+guKXjMyA4peMzJViOyBh4peM1q7il4zgvoLil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgVElCRVRBTiBTSUdOIE5ZSSBaTEEgTkFBIERBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDBGODMgMDA2MjswMEUwIDA1QUUgMEY4MyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMEY4MyAwMzE1IDAwNjI7MDBFMCAwNUFFIDBGODMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDBGODMgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM4L6DYjsgw6Dil4zWruKXjOC+g+KXjMyVYjsgYeKXjNau4peMzIDil4zgvoPil4zMlWI7IMOg4peM1q7il4zgvoPil4zMlWI7IGHil4zWruKXjMyA4peM4L6D4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIFRJQkVUQU4gU0lHTiBTTkEgTERBTiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEY4MyAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAwRjgzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwRjgzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwRjgzIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwRjgzIDAzMDAgMDMxNSAwMDYyOyAjIChh4peM4L6D4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM4L6D4peMzIDil4zMlWI7IGHil4zWruKXjOC+g+KXjMyA4peMzJViOyBh4peM1q7il4zgvoPil4zMgOKXjMyVYjsgYeKXjNau4peM4L6D4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIFRJQkVUQU4gU0lHTiBTTkEgTERBTiwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNUIwIDA5NEQgMzA5OSAwRjg0IDAwNjI7MDA2MSAzMDk5IDA5NEQgMEY4NCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEY4NCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEY4NCAwNUIwIDAwNjI7MDA2MSAzMDk5IDA5NEQgMEY4NCAwNUIwIDAwNjI7ICMgKGHil4zWsOKXjOCljeKXjOOCmeKXjOC+hGI7IGHil4zjgpnil4zgpY3il4zgvoTil4zWsGI7IGHil4zjgpnil4zgpY3il4zgvoTil4zWsGI7IGHil4zjgpnil4zgpY3il4zgvoTil4zWsGI7IGHil4zjgpnil4zgpY3il4zgvoTil4zWsGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBQT0lOVCBTSEVWQSwgREVWQU5BR0FSSSBTSUdOIFZJUkFNQSwgQ09NQklOSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFZPSUNFRCBTT1VORCBNQVJLLCBUSUJFVEFOIE1BUksgSEFMQU5UQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMEY4NCAwNUIwIDA5NEQgMzA5OSAwMDYyOzAwNjEgMzA5OSAwRjg0IDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwRjg0IDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwRjg0IDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAwRjg0IDA5NEQgMDVCMCAwMDYyOyAjIChh4peM4L6E4peM1rDil4zgpY3il4zjgpliOyBh4peM44KZ4peM4L6E4peM4KWN4peM1rBiOyBh4peM44KZ4peM4L6E4peM4KWN4peM1rBiOyBh4peM44KZ4peM4L6E4peM4KWN4peM1rBiOyBh4peM44KZ4peM4L6E4peM4KWN4peM1rBiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBUSUJFVEFOIE1BUksgSEFMQU5UQSwgSEVCUkVXIFBPSU5UIFNIRVZBLCBERVZBTkFHQVJJIFNJR04gVklSQU1BLCBDT01CSU5JTkcgS0FUQUtBTkEtSElSQUdBTkEgVk9JQ0VEIFNPVU5EIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDBGODYgMDA2MjswMEUwIDA1QUUgMEY4NiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMEY4NiAwMzE1IDAwNjI7MDBFMCAwNUFFIDBGODYgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDBGODYgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM4L6GYjsgw6Dil4zWruKXjOC+huKXjMyVYjsgYeKXjNau4peMzIDil4zgvobil4zMlWI7IMOg4peM1q7il4zgvobil4zMlWI7IGHil4zWruKXjMyA4peM4L6G4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIFRJQkVUQU4gU0lHTiBMQ0kgUlRBR1MsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDBGODYgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMEY4NiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMEY4NiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMEY4NiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMEY4NiAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjOC+huKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjOC+huKXjMyA4peMzJViOyBh4peM1q7il4zgvobil4zMgOKXjMyVYjsgYeKXjNau4peM4L6G4peMzIDil4zMlWI7IGHil4zWruKXjOC+huKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBUSUJFVEFOIFNJR04gTENJIFJUQUdTLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDBGODcgMDA2MjswMEUwIDA1QUUgMEY4NyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMEY4NyAwMzE1IDAwNjI7MDBFMCAwNUFFIDBGODcgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDBGODcgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM4L6HYjsgw6Dil4zWruKXjOC+h+KXjMyVYjsgYeKXjNau4peMzIDil4zgvofil4zMlWI7IMOg4peM1q7il4zgvofil4zMlWI7IGHil4zWruKXjMyA4peM4L6H4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIFRJQkVUQU4gU0lHTiBZQU5HIFJUQUdTLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwRjg3IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDBGODcgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDBGODcgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDBGODcgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDBGODcgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zgvofil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zgvofil4zMgOKXjMyVYjsgYeKXjNau4peM4L6H4peMzIDil4zMlWI7IGHil4zWruKXjOC+h+KXjMyA4peMzJViOyBh4peM1q7il4zgvofil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgVElCRVRBTiBTSUdOIFlBTkcgUlRBR1MsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDU5QSAwMzE2IDMwMkEgMEZDNiAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGQzYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGQzYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGQzYgMDU5QSAwMDYyOzAwNjEgMzAyQSAwMzE2IDBGQzYgMDU5QSAwMDYyOyAjIChh4peM1pril4zMluKXjOOAquKXjOC/hmI7IGHil4zjgKril4zMluKXjOC/huKXjNaaYjsgYeKXjOOAquKXjMyW4peM4L+G4peM1ppiOyBh4peM44Cq4peMzJbil4zgv4bil4zWmmI7IGHil4zjgKril4zMluKXjOC/huKXjNaaYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIEFDQ0VOVCBZRVRJViwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBUSUJFVEFOIFNZTUJPTCBQQURNQSBHREFOLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwRkM2IDA1OUEgMDMxNiAzMDJBIDAwNjI7MDA2MSAzMDJBIDBGQzYgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDBGQzYgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDBGQzYgMDMxNiAwNTlBIDAwNjI7MDA2MSAzMDJBIDBGQzYgMDMxNiAwNTlBIDAwNjI7ICMgKGHil4zgv4bil4zWmuKXjMyW4peM44CqYjsgYeKXjOOAquKXjOC/huKXjMyW4peM1ppiOyBh4peM44Cq4peM4L+G4peMzJbil4zWmmI7IGHil4zjgKril4zgv4bil4zMluKXjNaaYjsgYeKXjOOAquKXjOC/huKXjMyW4peM1ppiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBUSUJFVEFOIFNZTUJPTCBQQURNQSBHREFOLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDMwOTkgMDkzQyAwMzM0IDEwMzcgMDA2MjswMDYxIDAzMzQgMDkzQyAxMDM3IDMwOTkgMDA2MjswMDYxIDAzMzQgMDkzQyAxMDM3IDMwOTkgMDA2MjswMDYxIDAzMzQgMDkzQyAxMDM3IDMwOTkgMDA2MjswMDYxIDAzMzQgMDkzQyAxMDM3IDMwOTkgMDA2MjsgIyAoYeKXjOOCmeKXjOCkvOKXjMy04peM4YC3YjsgYeKXjMy04peM4KS84peM4YC34peM44KZYjsgYeKXjMy04peM4KS84peM4YC34peM44KZYjsgYeKXjMy04peM4KS84peM4YC34peM44KZYjsgYeKXjMy04peM4KS84peM4YC34peM44KZYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFZPSUNFRCBTT1VORCBNQVJLLCBERVZBTkFHQVJJIFNJR04gTlVLVEEsIENPTUJJTklORyBUSUxERSBPVkVSTEFZLCBNWUFOTUFSIFNJR04gRE9UIEJFTE9XLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAxMDM3IDMwOTkgMDkzQyAwMzM0IDAwNjI7MDA2MSAwMzM0IDEwMzcgMDkzQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDEwMzcgMDkzQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDEwMzcgMDkzQyAzMDk5IDAwNjI7MDA2MSAwMzM0IDEwMzcgMDkzQyAzMDk5IDAwNjI7ICMgKGHil4zhgLfil4zjgpnil4zgpLzil4zMtGI7IGHil4zMtOKXjOGAt+KXjOCkvOKXjOOCmWI7IGHil4zMtOKXjOGAt+KXjOCkvOKXjOOCmWI7IGHil4zMtOKXjOGAt+KXjOCkvOKXjOOCmWI7IGHil4zMtOKXjOGAt+KXjOCkvOKXjOOCmWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIE1ZQU5NQVIgU0lHTiBET1QgQkVMT1csIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSywgREVWQU5BR0FSSSBTSUdOIE5VS1RBLCBDT01CSU5JTkcgVElMREUgT1ZFUkxBWSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVCMCAwOTREIDMwOTkgMTAzOSAwMDYyOzAwNjEgMzA5OSAwOTREIDEwMzkgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDEwMzkgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDEwMzkgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDEwMzkgMDVCMCAwMDYyOyAjIChh4peM1rDil4zgpY3il4zjgpnil4zhgLliOyBh4peM44KZ4peM4KWN4peM4YC54peM1rBiOyBh4peM44KZ4peM4KWN4peM4YC54peM1rBiOyBh4peM44KZ4peM4KWN4peM4YC54peM1rBiOyBh4peM44KZ4peM4KWN4peM4YC54peM1rBiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgUE9JTlQgU0hFVkEsIERFVkFOQUdBUkkgU0lHTiBWSVJBTUEsIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSywgTVlBTk1BUiBTSUdOIFZJUkFNQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMTAzOSAwNUIwIDA5NEQgMzA5OSAwMDYyOzAwNjEgMzA5OSAxMDM5IDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAxMDM5IDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAxMDM5IDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAxMDM5IDA5NEQgMDVCMCAwMDYyOyAjIChh4peM4YC54peM1rDil4zgpY3il4zjgpliOyBh4peM44KZ4peM4YC54peM4KWN4peM1rBiOyBh4peM44KZ4peM4YC54peM4KWN4peM1rBiOyBh4peM44KZ4peM4YC54peM4KWN4peM1rBiOyBh4peM44KZ4peM4YC54peM4KWN4peM1rBiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBNWUFOTUFSIFNJR04gVklSQU1BLCBIRUJSRVcgUE9JTlQgU0hFVkEsIERFVkFOQUdBUkkgU0lHTiBWSVJBTUEsIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDVCMCAwOTREIDMwOTkgMTdEMiAwMDYyOzAwNjEgMzA5OSAwOTREIDE3RDIgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDE3RDIgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDE3RDIgMDVCMCAwMDYyOzAwNjEgMzA5OSAwOTREIDE3RDIgMDVCMCAwMDYyOyAjIChh4peM1rDil4zgpY3il4zjgpnil4zhn5JiOyBh4peM44KZ4peM4KWN4peM4Z+S4peM1rBiOyBh4peM44KZ4peM4KWN4peM4Z+S4peM1rBiOyBh4peM44KZ4peM4KWN4peM4Z+S4peM1rBiOyBh4peM44KZ4peM4KWN4peM4Z+S4peM1rBiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgUE9JTlQgU0hFVkEsIERFVkFOQUdBUkkgU0lHTiBWSVJBTUEsIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSywgS0hNRVIgU0lHTiBDT0VORywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMTdEMiAwNUIwIDA5NEQgMzA5OSAwMDYyOzAwNjEgMzA5OSAxN0QyIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAxN0QyIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAxN0QyIDA5NEQgMDVCMCAwMDYyOzAwNjEgMzA5OSAxN0QyIDA5NEQgMDVCMCAwMDYyOyAjIChh4peM4Z+S4peM1rDil4zgpY3il4zjgpliOyBh4peM44KZ4peM4Z+S4peM4KWN4peM1rBiOyBh4peM44KZ4peM4Z+S4peM4KWN4peM1rBiOyBh4peM44KZ4peM4Z+S4peM4KWN4peM1rBiOyBh4peM44KZ4peM4Z+S4peM4KWN4peM1rBiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBLSE1FUiBTSUdOIENPRU5HLCBIRUJSRVcgUE9JTlQgU0hFVkEsIERFVkFOQUdBUkkgU0lHTiBWSVJBTUEsIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMwMCAwNUFFIDMwMkUgMThBOSAwMDYyOzAwRTAgMzAyRSAwNUFFIDE4QTkgMDA2MjswMDYxIDMwMkUgMDVBRSAxOEE5IDAzMDAgMDA2MjswMEUwIDMwMkUgMDVBRSAxOEE5IDAwNjI7MDA2MSAzMDJFIDA1QUUgMThBOSAwMzAwIDAwNjI7ICMgKGHil4zMgOKXjNau4peM44Cu4peM4aKpYjsgw6Dil4zjgK7il4zWruKXjOGiqWI7IGHil4zjgK7il4zWruKXjOGiqeKXjMyAYjsgw6Dil4zjgK7il4zWruKXjOGiqWI7IGHil4zjgK7il4zWruKXjOGiqeKXjMyAYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgSEFOR1VMIFNJTkdMRSBET1QgVE9ORSBNQVJLLCBNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIERBR0FMR0EsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDE4QTkgMDMwMCAwNUFFIDMwMkUgMDA2MjswMEUwIDMwMkUgMThBOSAwNUFFIDAwNjI7MDA2MSAzMDJFIDE4QTkgMDVBRSAwMzAwIDAwNjI7MDBFMCAzMDJFIDE4QTkgMDVBRSAwMDYyOzAwNjEgMzAyRSAxOEE5IDA1QUUgMDMwMCAwMDYyOyAjIChh4peM4aKp4peMzIDil4zWruKXjOOArmI7IMOg4peM44Cu4peM4aKp4peM1q5iOyBh4peM44Cu4peM4aKp4peM1q7il4zMgGI7IMOg4peM44Cu4peM4aKp4peM1q5iOyBh4peM44Cu4peM4aKp4peM1q7il4zMgGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIE1PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgREFHQUxHQSwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgSEFOR1VMIFNJTkdMRSBET1QgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAyMEQwIDAwNjI7MDBFMCAwNUFFIDIwRDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDIwRDAgMDMxNSAwMDYyOzAwRTAgMDVBRSAyMEQwIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAyMEQwIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjOKDkGI7IMOg4peM1q7il4zig5Dil4zMlWI7IGHil4zWruKXjMyA4peM4oOQ4peMzJViOyDDoOKXjNau4peM4oOQ4peMzJViOyBh4peM1q7il4zMgOKXjOKDkOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBDT01CSU5JTkcgTEVGVCBIQVJQT09OIEFCT1ZFLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAyMEQwIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDIwRDAgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDIwRDAgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDIwRDAgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDIwRDAgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zig5Dil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zig5Dil4zMgOKXjMyVYjsgYeKXjNau4peM4oOQ4peMzIDil4zMlWI7IGHil4zWruKXjOKDkOKXjMyA4peMzJViOyBh4peM1q7il4zig5Dil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIExFRlQgSEFSUE9PTiBBQk9WRSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAyMEQxIDAwNjI7MDBFMCAwNUFFIDIwRDEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDIwRDEgMDMxNSAwMDYyOzAwRTAgMDVBRSAyMEQxIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAyMEQxIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjOKDkWI7IMOg4peM1q7il4zig5Hil4zMlWI7IGHil4zWruKXjMyA4peM4oOR4peMzJViOyDDoOKXjNau4peM4oOR4peMzJViOyBh4peM1q7il4zMgOKXjOKDkeKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBDT01CSU5JTkcgUklHSFQgSEFSUE9PTiBBQk9WRSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMjBEMSAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAyMEQxIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMEQxIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMEQxIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMEQxIDAzMDAgMDMxNSAwMDYyOyAjIChh4peM4oOR4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM4oOR4peMzIDil4zMlWI7IGHil4zWruKXjOKDkeKXjMyA4peMzJViOyBh4peM1q7il4zig5Hil4zMgOKXjMyVYjsgYeKXjNau4peM4oOR4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBSSUdIVCBIQVJQT09OIEFCT1ZFLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA5M0MgMDMzNCAyMEQyIDAwNjI7MDA2MSAwMzM0IDIwRDIgMDkzQyAwMDYyOzAwNjEgMDMzNCAyMEQyIDA5M0MgMDA2MjswMDYxIDAzMzQgMjBEMiAwOTNDIDAwNjI7MDA2MSAwMzM0IDIwRDIgMDkzQyAwMDYyOyAjIChh4peM4KS84peMzLTil4zig5JiOyBh4peMzLTil4zig5Lil4zgpLxiOyBh4peMzLTil4zig5Lil4zgpLxiOyBh4peMzLTil4zig5Lil4zgpLxiOyBh4peMzLTil4zig5Lil4zgpLxiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBERVZBTkFHQVJJIFNJR04gTlVLVEEsIENPTUJJTklORyBUSUxERSBPVkVSTEFZLCBDT01CSU5JTkcgTE9ORyBWRVJUSUNBTCBMSU5FIE9WRVJMQVksIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDIwRDIgMDkzQyAwMzM0IDAwNjI7MDA2MSAyMEQyIDAzMzQgMDkzQyAwMDYyOzAwNjEgMjBEMiAwMzM0IDA5M0MgMDA2MjswMDYxIDIwRDIgMDMzNCAwOTNDIDAwNjI7MDA2MSAyMEQyIDAzMzQgMDkzQyAwMDYyOyAjIChh4peM4oOS4peM4KS84peMzLRiOyBh4peM4oOS4peMzLTil4zgpLxiOyBh4peM4oOS4peMzLTil4zgpLxiOyBh4peM4oOS4peMzLTil4zgpLxiOyBh4peM4oOS4peMzLTil4zgpLxiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgTE9ORyBWRVJUSUNBTCBMSU5FIE9WRVJMQVksIERFVkFOQUdBUkkgU0lHTiBOVUtUQSwgQ09NQklOSU5HIFRJTERFIE9WRVJMQVksIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA5M0MgMDMzNCAyMEQzIDAwNjI7MDA2MSAwMzM0IDIwRDMgMDkzQyAwMDYyOzAwNjEgMDMzNCAyMEQzIDA5M0MgMDA2MjswMDYxIDAzMzQgMjBEMyAwOTNDIDAwNjI7MDA2MSAwMzM0IDIwRDMgMDkzQyAwMDYyOyAjIChh4peM4KS84peMzLTil4zig5NiOyBh4peMzLTil4zig5Pil4zgpLxiOyBh4peMzLTil4zig5Pil4zgpLxiOyBh4peMzLTil4zig5Pil4zgpLxiOyBh4peMzLTil4zig5Pil4zgpLxiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBERVZBTkFHQVJJIFNJR04gTlVLVEEsIENPTUJJTklORyBUSUxERSBPVkVSTEFZLCBDT01CSU5JTkcgU0hPUlQgVkVSVElDQUwgTElORSBPVkVSTEFZLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAyMEQzIDA5M0MgMDMzNCAwMDYyOzAwNjEgMjBEMyAwMzM0IDA5M0MgMDA2MjswMDYxIDIwRDMgMDMzNCAwOTNDIDAwNjI7MDA2MSAyMEQzIDAzMzQgMDkzQyAwMDYyOzAwNjEgMjBEMyAwMzM0IDA5M0MgMDA2MjsgIyAoYeKXjOKDk+KXjOCkvOKXjMy0YjsgYeKXjOKDk+KXjMy04peM4KS8YjsgYeKXjOKDk+KXjMy04peM4KS8YjsgYeKXjOKDk+KXjMy04peM4KS8YjsgYeKXjOKDk+KXjMy04peM4KS8YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIFNIT1JUIFZFUlRJQ0FMIExJTkUgT1ZFUkxBWSwgREVWQU5BR0FSSSBTSUdOIE5VS1RBLCBDT01CSU5JTkcgVElMREUgT1ZFUkxBWSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgMjBENCAwMDYyOzAwRTAgMDVBRSAyMEQ0IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAyMEQ0IDAzMTUgMDA2MjswMEUwIDA1QUUgMjBENCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMjBENCAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zig5RiOyDDoOKXjNau4peM4oOU4peMzJViOyBh4peM1q7il4zMgOKXjOKDlOKXjMyVYjsgw6Dil4zWruKXjOKDlOKXjMyVYjsgYeKXjNau4peMzIDil4zig5Til4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQ09NQklOSU5HIEFOVElDTE9DS1dJU0UgQVJST1cgQUJPVkUsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDIwRDQgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMjBENCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBENCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBENCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBENCAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjOKDlOKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjOKDlOKXjMyA4peMzJViOyBh4peM1q7il4zig5Til4zMgOKXjMyVYjsgYeKXjNau4peM4oOU4peMzIDil4zMlWI7IGHil4zWruKXjOKDlOKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQU5USUNMT0NLV0lTRSBBUlJPVyBBQk9WRSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAyMEQ1IDAwNjI7MDBFMCAwNUFFIDIwRDUgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDIwRDUgMDMxNSAwMDYyOzAwRTAgMDVBRSAyMEQ1IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAyMEQ1IDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjOKDlWI7IMOg4peM1q7il4zig5Xil4zMlWI7IGHil4zWruKXjMyA4peM4oOV4peMzJViOyDDoOKXjNau4peM4oOV4peMzJViOyBh4peM1q7il4zMgOKXjOKDleKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBDT01CSU5JTkcgQ0xPQ0tXSVNFIEFSUk9XIEFCT1ZFLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAyMEQ1IDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDIwRDUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDIwRDUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDIwRDUgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDIwRDUgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zig5Xil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zig5Xil4zMgOKXjMyVYjsgYeKXjNau4peM4oOV4peMzIDil4zMlWI7IGHil4zWruKXjOKDleKXjMyA4peMzJViOyBh4peM1q7il4zig5Xil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENMT0NLV0lTRSBBUlJPVyBBQk9WRSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAyMEQ2IDAwNjI7MDBFMCAwNUFFIDIwRDYgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDIwRDYgMDMxNSAwMDYyOzAwRTAgMDVBRSAyMEQ2IDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAyMEQ2IDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjOKDlmI7IMOg4peM1q7il4zig5bil4zMlWI7IGHil4zWruKXjMyA4peM4oOW4peMzJViOyDDoOKXjNau4peM4oOW4peMzJViOyBh4peM1q7il4zMgOKXjOKDluKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBDT01CSU5JTkcgTEVGVCBBUlJPVyBBQk9WRSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMjBENiAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAyMEQ2IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMEQ2IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMEQ2IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMEQ2IDAzMDAgMDMxNSAwMDYyOyAjIChh4peM4oOW4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM4oOW4peMzIDil4zMlWI7IGHil4zWruKXjOKDluKXjMyA4peMzJViOyBh4peM1q7il4zig5bil4zMgOKXjMyVYjsgYeKXjNau4peM4oOW4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBMRUZUIEFSUk9XIEFCT1ZFLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDIwRDcgMDA2MjswMEUwIDA1QUUgMjBENyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMjBENyAwMzE1IDAwNjI7MDBFMCAwNUFFIDIwRDcgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDIwRDcgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM4oOXYjsgw6Dil4zWruKXjOKDl+KXjMyVYjsgYeKXjNau4peMzIDil4zig5fil4zMlWI7IMOg4peM1q7il4zig5fil4zMlWI7IGHil4zWruKXjMyA4peM4oOX4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIENPTUJJTklORyBSSUdIVCBBUlJPVyBBQk9WRSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMjBENyAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAyMEQ3IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMEQ3IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMEQ3IDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMEQ3IDAzMDAgMDMxNSAwMDYyOyAjIChh4peM4oOX4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM4oOX4peMzIDil4zMlWI7IGHil4zWruKXjOKDl+KXjMyA4peMzJViOyBh4peM1q7il4zig5fil4zMgOKXjMyVYjsgYeKXjNau4peM4oOX4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBSSUdIVCBBUlJPVyBBQk9WRSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwOTNDIDAzMzQgMjBEOCAwMDYyOzAwNjEgMDMzNCAyMEQ4IDA5M0MgMDA2MjswMDYxIDAzMzQgMjBEOCAwOTNDIDAwNjI7MDA2MSAwMzM0IDIwRDggMDkzQyAwMDYyOzAwNjEgMDMzNCAyMEQ4IDA5M0MgMDA2MjsgIyAoYeKXjOCkvOKXjMy04peM4oOYYjsgYeKXjMy04peM4oOY4peM4KS8YjsgYeKXjMy04peM4oOY4peM4KS8YjsgYeKXjMy04peM4oOY4peM4KS8YjsgYeKXjMy04peM4oOY4peM4KS8YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgREVWQU5BR0FSSSBTSUdOIE5VS1RBLCBDT01CSU5JTkcgVElMREUgT1ZFUkxBWSwgQ09NQklOSU5HIFJJTkcgT1ZFUkxBWSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMjBEOCAwOTNDIDAzMzQgMDA2MjswMDYxIDIwRDggMDMzNCAwOTNDIDAwNjI7MDA2MSAyMEQ4IDAzMzQgMDkzQyAwMDYyOzAwNjEgMjBEOCAwMzM0IDA5M0MgMDA2MjswMDYxIDIwRDggMDMzNCAwOTNDIDAwNjI7ICMgKGHil4zig5jil4zgpLzil4zMtGI7IGHil4zig5jil4zMtOKXjOCkvGI7IGHil4zig5jil4zMtOKXjOCkvGI7IGHil4zig5jil4zMtOKXjOCkvGI7IGHil4zig5jil4zMtOKXjOCkvGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBSSU5HIE9WRVJMQVksIERFVkFOQUdBUkkgU0lHTiBOVUtUQSwgQ09NQklOSU5HIFRJTERFIE9WRVJMQVksIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA5M0MgMDMzNCAyMEQ5IDAwNjI7MDA2MSAwMzM0IDIwRDkgMDkzQyAwMDYyOzAwNjEgMDMzNCAyMEQ5IDA5M0MgMDA2MjswMDYxIDAzMzQgMjBEOSAwOTNDIDAwNjI7MDA2MSAwMzM0IDIwRDkgMDkzQyAwMDYyOyAjIChh4peM4KS84peMzLTil4zig5liOyBh4peMzLTil4zig5nil4zgpLxiOyBh4peMzLTil4zig5nil4zgpLxiOyBh4peMzLTil4zig5nil4zgpLxiOyBh4peMzLTil4zig5nil4zgpLxiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBERVZBTkFHQVJJIFNJR04gTlVLVEEsIENPTUJJTklORyBUSUxERSBPVkVSTEFZLCBDT01CSU5JTkcgQ0xPQ0tXSVNFIFJJTkcgT1ZFUkxBWSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMjBEOSAwOTNDIDAzMzQgMDA2MjswMDYxIDIwRDkgMDMzNCAwOTNDIDAwNjI7MDA2MSAyMEQ5IDAzMzQgMDkzQyAwMDYyOzAwNjEgMjBEOSAwMzM0IDA5M0MgMDA2MjswMDYxIDIwRDkgMDMzNCAwOTNDIDAwNjI7ICMgKGHil4zig5nil4zgpLzil4zMtGI7IGHil4zig5nil4zMtOKXjOCkvGI7IGHil4zig5nil4zMtOKXjOCkvGI7IGHil4zig5nil4zMtOKXjOCkvGI7IGHil4zig5nil4zMtOKXjOCkvGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDTE9DS1dJU0UgUklORyBPVkVSTEFZLCBERVZBTkFHQVJJIFNJR04gTlVLVEEsIENPTUJJTklORyBUSUxERSBPVkVSTEFZLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwOTNDIDAzMzQgMjBEQSAwMDYyOzAwNjEgMDMzNCAyMERBIDA5M0MgMDA2MjswMDYxIDAzMzQgMjBEQSAwOTNDIDAwNjI7MDA2MSAwMzM0IDIwREEgMDkzQyAwMDYyOzAwNjEgMDMzNCAyMERBIDA5M0MgMDA2MjsgIyAoYeKXjOCkvOKXjMy04peM4oOaYjsgYeKXjMy04peM4oOa4peM4KS8YjsgYeKXjMy04peM4oOa4peM4KS8YjsgYeKXjMy04peM4oOa4peM4KS8YjsgYeKXjMy04peM4oOa4peM4KS8YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgREVWQU5BR0FSSSBTSUdOIE5VS1RBLCBDT01CSU5JTkcgVElMREUgT1ZFUkxBWSwgQ09NQklOSU5HIEFOVElDTE9DS1dJU0UgUklORyBPVkVSTEFZLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAyMERBIDA5M0MgMDMzNCAwMDYyOzAwNjEgMjBEQSAwMzM0IDA5M0MgMDA2MjswMDYxIDIwREEgMDMzNCAwOTNDIDAwNjI7MDA2MSAyMERBIDAzMzQgMDkzQyAwMDYyOzAwNjEgMjBEQSAwMzM0IDA5M0MgMDA2MjsgIyAoYeKXjOKDmuKXjOCkvOKXjMy0YjsgYeKXjOKDmuKXjMy04peM4KS8YjsgYeKXjOKDmuKXjMy04peM4KS8YjsgYeKXjOKDmuKXjMy04peM4KS8YjsgYeKXjOKDmuKXjMy04peM4KS8YjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIEFOVElDTE9DS1dJU0UgUklORyBPVkVSTEFZLCBERVZBTkFHQVJJIFNJR04gTlVLVEEsIENPTUJJTklORyBUSUxERSBPVkVSTEFZLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSAyMERCIDAwNjI7MDBFMCAwNUFFIDIwREIgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDIwREIgMDMxNSAwMDYyOzAwRTAgMDVBRSAyMERCIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCAyMERCIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjOKDm2I7IMOg4peM1q7il4zig5vil4zMlWI7IGHil4zWruKXjMyA4peM4oOb4peMzJViOyDDoOKXjNau4peM4oOb4peMzJViOyBh4peM1q7il4zMgOKXjOKDm+KXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBDT01CSU5JTkcgVEhSRUUgRE9UUyBBQk9WRSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMjBEQiAwMzE1IDAzMDAgMDVBRSAwMDYyOzAwNjEgMDVBRSAyMERCIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMERCIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMERCIDAzMDAgMDMxNSAwMDYyOzAwNjEgMDVBRSAyMERCIDAzMDAgMDMxNSAwMDYyOyAjIChh4peM4oOb4peMzJXil4zMgOKXjNauYjsgYeKXjNau4peM4oOb4peMzIDil4zMlWI7IGHil4zWruKXjOKDm+KXjMyA4peMzJViOyBh4peM1q7il4zig5vil4zMgOKXjMyVYjsgYeKXjNau4peM4oOb4peMzIDil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBUSFJFRSBET1RTIEFCT1ZFLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDIwREMgMDA2MjswMEUwIDA1QUUgMjBEQyAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMjBEQyAwMzE1IDAwNjI7MDBFMCAwNUFFIDIwREMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDIwREMgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM4oOcYjsgw6Dil4zWruKXjOKDnOKXjMyVYjsgYeKXjNau4peMzIDil4zig5zil4zMlWI7IMOg4peM1q7il4zig5zil4zMlWI7IGHil4zWruKXjMyA4peM4oOc4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIENPTUJJTklORyBGT1VSIERPVFMgQUJPVkUsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDIwREMgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgMjBEQyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBEQyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBEQyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgMjBEQyAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjOKDnOKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjOKDnOKXjMyA4peMzJViOyBh4peM1q7il4zig5zil4zMgOKXjMyVYjsgYeKXjNau4peM4oOc4peMzIDil4zMlWI7IGHil4zWruKXjOKDnOKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgRk9VUiBET1RTIEFCT1ZFLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIDIwRTEgMDA2MjswMEUwIDA1QUUgMjBFMSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgMjBFMSAwMzE1IDAwNjI7MDBFMCAwNUFFIDIwRTEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIDIwRTEgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM4oOhYjsgw6Dil4zWruKXjOKDoeKXjMyVYjsgYeKXjNau4peMzIDil4zig6Hil4zMlWI7IMOg4peM1q7il4zig6Hil4zMlWI7IGHil4zWruKXjMyA4peM4oOh4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIENPTUJJTklORyBMRUZUIFJJR0hUIEFSUk9XIEFCT1ZFLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAyMEUxIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIDIwRTEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDIwRTEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDIwRTEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDIwRTEgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zig6Hil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zig6Hil4zMgOKXjMyVYjsgYeKXjNau4peM4oOh4peMzIDil4zMlWI7IGHil4zWruKXjOKDoeKXjMyA4peMzJViOyBh4peM1q7il4zig6Hil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIExFRlQgUklHSFQgQVJST1cgQUJPVkUsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNiAzMDJBIDAzMUIgMzAyQSAwMDYyOzAwNjEgMDMxQiAzMDJBIDMwMkEgMDMxNiAwMDYyOzAwNjEgMDMxQiAzMDJBIDMwMkEgMDMxNiAwMDYyOzAwNjEgMDMxQiAzMDJBIDMwMkEgMDMxNiAwMDYyOzAwNjEgMDMxQiAzMDJBIDMwMkEgMDMxNiAwMDYyOyAjIChh4peMzJbil4zjgKril4zMm+KXjOOAqmI7IGHil4zMm+KXjOOAquKXjOOAquKXjMyWYjsgYeKXjMyb4peM44Cq4peM44Cq4peMzJZiOyBh4peMzJvil4zjgKril4zjgKril4zMlmI7IGHil4zMm+KXjOOAquKXjOOAquKXjMyWYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVywgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBDT01CSU5JTkcgSE9STiwgSURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAzMDJBIDAzMTYgMzAyQSAwMzFCIDAwNjI7MDA2MSAwMzFCIDMwMkEgMzAyQSAwMzE2IDAwNjI7MDA2MSAwMzFCIDMwMkEgMzAyQSAwMzE2IDAwNjI7MDA2MSAwMzFCIDMwMkEgMzAyQSAwMzE2IDAwNjI7MDA2MSAwMzFCIDMwMkEgMzAyQSAwMzE2IDAwNjI7ICMgKGHil4zjgKril4zMluKXjOOAquKXjMybYjsgYeKXjMyb4peM44Cq4peM44Cq4peMzJZiOyBh4peMzJvil4zjgKril4zjgKril4zMlmI7IGHil4zMm+KXjOOAquKXjOOAquKXjMyWYjsgYeKXjMyb4peM44Cq4peM44Cq4peMzJZiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBJREVPR1JBUEhJQyBMRVZFTCBUT05FIE1BUkssIENPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1csIElERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSywgQ09NQklOSU5HIEhPUk4sIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMDAgMDVBRSAzMDJFIDMwMkIgMDA2MjswMEUwIDMwMkUgMDVBRSAzMDJCIDAwNjI7MDA2MSAzMDJFIDA1QUUgMzAyQiAwMzAwIDAwNjI7MDBFMCAzMDJFIDA1QUUgMzAyQiAwMDYyOzAwNjEgMzAyRSAwNUFFIDMwMkIgMDMwMCAwMDYyOyAjIChh4peMzIDil4zWruKXjOOAruKXjOOAq2I7IMOg4peM44Cu4peM1q7il4zjgKtiOyBh4peM44Cu4peM1q7il4zjgKvil4zMgGI7IMOg4peM44Cu4peM1q7il4zjgKtiOyBh4peM44Cu4peM1q7il4zjgKvil4zMgGI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIEhBTkdVTCBTSU5HTEUgRE9UIFRPTkUgTUFSSywgSURFT0dSQVBISUMgUklTSU5HIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMzAyQiAwMzAwIDA1QUUgMzAyRSAwMDYyOzAwRTAgMzAyRSAzMDJCIDA1QUUgMDA2MjswMDYxIDMwMkUgMzAyQiAwNUFFIDAzMDAgMDA2MjswMEUwIDMwMkUgMzAyQiAwNUFFIDAwNjI7MDA2MSAzMDJFIDMwMkIgMDVBRSAwMzAwIDAwNjI7ICMgKGHil4zjgKvil4zMgOKXjNau4peM44CuYjsgw6Dil4zjgK7il4zjgKvil4zWrmI7IGHil4zjgK7il4zjgKvil4zWruKXjMyAYjsgw6Dil4zjgK7il4zjgKvil4zWrmI7IGHil4zjgK7il4zjgKvil4zWruKXjMyAYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSURFT0dSQVBISUMgUklTSU5HIFRPTkUgTUFSSywgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgSEFOR1VMIFNJTkdMRSBET1QgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzYyIDAzMTUgMDMwMCAzMDJDIDAwNjI7MDBFMCAwMzE1IDMwMkMgMDM2MiAwMDYyOzAwNjEgMDMwMCAwMzE1IDMwMkMgMDM2MiAwMDYyOzAwRTAgMDMxNSAzMDJDIDAzNjIgMDA2MjswMDYxIDAzMDAgMDMxNSAzMDJDIDAzNjIgMDA2MjsgIyAoYeKXjM2i4peMzJXil4zMgOKXjOOArGI7IMOg4peMzJXil4zjgKzil4zNomI7IGHil4zMgOKXjMyV4peM44Cs4peMzaJiOyDDoOKXjMyV4peM44Cs4peMzaJiOyBh4peMzIDil4zMleKXjOOArOKXjM2iYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIERPVUJMRSBSSUdIVFdBUkRTIEFSUk9XIEJFTE9XLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIElERU9HUkFQSElDIERFUEFSVElORyBUT05FIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDMwMkMgMDM2MiAwMzE1IDAzMDAgMDA2MjswMEUwIDMwMkMgMDMxNSAwMzYyIDAwNjI7MDA2MSAwMzAwIDMwMkMgMDMxNSAwMzYyIDAwNjI7MDBFMCAzMDJDIDAzMTUgMDM2MiAwMDYyOzAwNjEgMDMwMCAzMDJDIDAzMTUgMDM2MiAwMDYyOyAjIChh4peM44Cs4peMzaLil4zMleKXjMyAYjsgw6Dil4zjgKzil4zMleKXjM2iYjsgYeKXjMyA4peM44Cs4peMzJXil4zNomI7IMOg4peM44Cs4peMzJXil4zNomI7IGHil4zMgOKXjOOArOKXjMyV4peMzaJiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBJREVPR1JBUEhJQyBERVBBUlRJTkcgVE9ORSBNQVJLLCBDT01CSU5JTkcgRE9VQkxFIFJJR0hUV0FSRFMgQVJST1cgQkVMT1csIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMzAyRSAwNTlBIDAzMTYgMzAyRCAwMDYyOzAwNjEgMDMxNiAwNTlBIDMwMkQgMzAyRSAwMDYyOzAwNjEgMDMxNiAwNTlBIDMwMkQgMzAyRSAwMDYyOzAwNjEgMDMxNiAwNTlBIDMwMkQgMzAyRSAwMDYyOzAwNjEgMDMxNiAwNTlBIDMwMkQgMzAyRSAwMDYyOyAjIChh4peM44Cu4peM1pril4zMluKXjOOArWI7IGHil4zMluKXjNaa4peM44Ct4peM44CuYjsgYeKXjMyW4peM1pril4zjgK3il4zjgK5iOyBh4peMzJbil4zWmuKXjOOAreKXjOOArmI7IGHil4zMluKXjNaa4peM44Ct4peM44CuYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEFOR1VMIFNJTkdMRSBET1QgVE9ORSBNQVJLLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBJREVPR1JBUEhJQyBFTlRFUklORyBUT05FIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDMwMkQgMzAyRSAwNTlBIDAzMTYgMDA2MjswMDYxIDAzMTYgMzAyRCAwNTlBIDMwMkUgMDA2MjswMDYxIDAzMTYgMzAyRCAwNTlBIDMwMkUgMDA2MjswMDYxIDAzMTYgMzAyRCAwNTlBIDMwMkUgMDA2MjswMDYxIDAzMTYgMzAyRCAwNTlBIDMwMkUgMDA2MjsgIyAoYeKXjOOAreKXjOOAruKXjNaa4peMzJZiOyBh4peMzJbil4zjgK3il4zWmuKXjOOArmI7IGHil4zMluKXjOOAreKXjNaa4peM44CuYjsgYeKXjMyW4peM44Ct4peM1pril4zjgK5iOyBh4peMzJbil4zjgK3il4zWmuKXjOOArmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIElERU9HUkFQSElDIEVOVEVSSU5HIFRPTkUgTUFSSywgSEFOR1VMIFNJTkdMRSBET1QgVE9ORSBNQVJLLCBIRUJSRVcgQUNDRU5UIFlFVElWLCBDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNUFFIDMwMkUgMDU5QSAzMDJFIDAwNjI7MDA2MSAwNTlBIDMwMkUgMzAyRSAwNUFFIDAwNjI7MDA2MSAwNTlBIDMwMkUgMzAyRSAwNUFFIDAwNjI7MDA2MSAwNTlBIDMwMkUgMzAyRSAwNUFFIDAwNjI7MDA2MSAwNTlBIDMwMkUgMzAyRSAwNUFFIDAwNjI7ICMgKGHil4zWruKXjOOAruKXjNaa4peM44CuYjsgYeKXjNaa4peM44Cu4peM44Cu4peM1q5iOyBh4peM1pril4zjgK7il4zjgK7il4zWrmI7IGHil4zWmuKXjOOAruKXjOOAruKXjNauYjsgYeKXjNaa4peM44Cu4peM44Cu4peM1q5iOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBIQU5HVUwgU0lOR0xFIERPVCBUT05FIE1BUkssIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIEhBTkdVTCBTSU5HTEUgRE9UIFRPTkUgTUFSSywgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMzAyRSAwNUFFIDMwMkUgMDU5QSAwMDYyOzAwNjEgMDU5QSAzMDJFIDMwMkUgMDVBRSAwMDYyOzAwNjEgMDU5QSAzMDJFIDMwMkUgMDVBRSAwMDYyOzAwNjEgMDU5QSAzMDJFIDMwMkUgMDVBRSAwMDYyOzAwNjEgMDU5QSAzMDJFIDMwMkUgMDVBRSAwMDYyOyAjIChh4peM44Cu4peM1q7il4zjgK7il4zWmmI7IGHil4zWmuKXjOOAruKXjOOAruKXjNauYjsgYeKXjNaa4peM44Cu4peM44Cu4peM1q5iOyBh4peM1pril4zjgK7il4zjgK7il4zWrmI7IGHil4zWmuKXjOOAruKXjOOAruKXjNauYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEFOR1VMIFNJTkdMRSBET1QgVE9ORSBNQVJLLCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBIQU5HVUwgU0lOR0xFIERPVCBUT05FIE1BUkssIEhFQlJFVyBBQ0NFTlQgWUVUSVYsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDA1QUUgMzAyRSAwNTlBIDMwMkYgMDA2MjswMDYxIDA1OUEgMzAyRSAzMDJGIDA1QUUgMDA2MjswMDYxIDA1OUEgMzAyRSAzMDJGIDA1QUUgMDA2MjswMDYxIDA1OUEgMzAyRSAzMDJGIDA1QUUgMDA2MjswMDYxIDA1OUEgMzAyRSAzMDJGIDA1QUUgMDA2MjsgIyAoYeKXjNau4peM44Cu4peM1pril4zjgK9iOyBh4peM1pril4zjgK7il4zjgK/il4zWrmI7IGHil4zWmuKXjOOAruKXjOOAr+KXjNauYjsgYeKXjNaa4peM44Cu4peM44Cv4peM1q5iOyBh4peM1pril4zjgK7il4zjgK/il4zWrmI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIEhBTkdVTCBTSU5HTEUgRE9UIFRPTkUgTUFSSywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgSEFOR1VMIERPVUJMRSBET1QgVE9ORSBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAzMDJGIDA1QUUgMzAyRSAwNTlBIDAwNjI7MDA2MSAwNTlBIDMwMkYgMzAyRSAwNUFFIDAwNjI7MDA2MSAwNTlBIDMwMkYgMzAyRSAwNUFFIDAwNjI7MDA2MSAwNTlBIDMwMkYgMzAyRSAwNUFFIDAwNjI7MDA2MSAwNTlBIDMwMkYgMzAyRSAwNUFFIDAwNjI7ICMgKGHil4zjgK/il4zWruKXjOOAruKXjNaaYjsgYeKXjNaa4peM44Cv4peM44Cu4peM1q5iOyBh4peM1pril4zjgK/il4zjgK7il4zWrmI7IGHil4zWmuKXjOOAr+KXjOOAruKXjNauYjsgYeKXjNaa4peM44Cv4peM44Cu4peM1q5iOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBIQU5HVUwgRE9VQkxFIERPVCBUT05FIE1BUkssIEhFQlJFVyBBQ0NFTlQgWklOT1IsIEhBTkdVTCBTSU5HTEUgRE9UIFRPTkUgTUFSSywgSEVCUkVXIEFDQ0VOVCBZRVRJViwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDk0RCAzMDk5IDA5M0MgMzA5OSAwMDYyOzAwNjEgMDkzQyAzMDk5IDMwOTkgMDk0RCAwMDYyOzAwNjEgMDkzQyAzMDk5IDMwOTkgMDk0RCAwMDYyOzAwNjEgMDkzQyAzMDk5IDMwOTkgMDk0RCAwMDYyOzAwNjEgMDkzQyAzMDk5IDMwOTkgMDk0RCAwMDYyOyAjIChh4peM4KWN4peM44KZ4peM4KS84peM44KZYjsgYeKXjOCkvOKXjOOCmeKXjOOCmeKXjOCljWI7IGHil4zgpLzil4zjgpnil4zjgpnil4zgpY1iOyBh4peM4KS84peM44KZ4peM44KZ4peM4KWNYjsgYeKXjOCkvOKXjOOCmeKXjOOCmeKXjOCljWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIERFVkFOQUdBUkkgU0lHTiBWSVJBTUEsIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSywgREVWQU5BR0FSSSBTSUdOIE5VS1RBLCBDT01CSU5JTkcgS0FUQUtBTkEtSElSQUdBTkEgVk9JQ0VEIFNPVU5EIE1BUkssIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDMwOTkgMDk0RCAzMDk5IDA5M0MgMDA2MjswMDYxIDA5M0MgMzA5OSAzMDk5IDA5NEQgMDA2MjswMDYxIDA5M0MgMzA5OSAzMDk5IDA5NEQgMDA2MjswMDYxIDA5M0MgMzA5OSAzMDk5IDA5NEQgMDA2MjswMDYxIDA5M0MgMzA5OSAzMDk5IDA5NEQgMDA2MjsgIyAoYeKXjOOCmeKXjOCljeKXjOOCmeKXjOCkvGI7IGHil4zgpLzil4zjgpnil4zjgpnil4zgpY1iOyBh4peM4KS84peM44KZ4peM44KZ4peM4KWNYjsgYeKXjOCkvOKXjOOCmeKXjOOCmeKXjOCljWI7IGHil4zgpLzil4zjgpnil4zjgpnil4zgpY1iOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgS0FUQUtBTkEtSElSQUdBTkEgVk9JQ0VEIFNPVU5EIE1BUkssIERFVkFOQUdBUkkgU0lHTiBWSVJBTUEsIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSywgREVWQU5BR0FSSSBTSUdOIE5VS1RBLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwOTREIDMwOTkgMDkzQyAzMDlBIDAwNjI7MDA2MSAwOTNDIDMwOTkgMzA5QSAwOTREIDAwNjI7MDA2MSAwOTNDIDMwOTkgMzA5QSAwOTREIDAwNjI7MDA2MSAwOTNDIDMwOTkgMzA5QSAwOTREIDAwNjI7MDA2MSAwOTNDIDMwOTkgMzA5QSAwOTREIDAwNjI7ICMgKGHil4zgpY3il4zjgpnil4zgpLzil4zjgppiOyBh4peM4KS84peM44KZ4peM44Ka4peM4KWNYjsgYeKXjOCkvOKXjOOCmeKXjOOCmuKXjOCljWI7IGHil4zgpLzil4zjgpnil4zjgpril4zgpY1iOyBh4peM4KS84peM44KZ4peM44Ka4peM4KWNYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgREVWQU5BR0FSSSBTSUdOIFZJUkFNQSwgQ09NQklOSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFZPSUNFRCBTT1VORCBNQVJLLCBERVZBTkFHQVJJIFNJR04gTlVLVEEsIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBTRU1JLVZPSUNFRCBTT1VORCBNQVJLLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAzMDlBIDA5NEQgMzA5OSAwOTNDIDAwNjI7MDA2MSAwOTNDIDMwOUEgMzA5OSAwOTREIDAwNjI7MDA2MSAwOTNDIDMwOUEgMzA5OSAwOTREIDAwNjI7MDA2MSAwOTNDIDMwOUEgMzA5OSAwOTREIDAwNjI7MDA2MSAwOTNDIDMwOUEgMzA5OSAwOTREIDAwNjI7ICMgKGHil4zjgpril4zgpY3il4zjgpnil4zgpLxiOyBh4peM4KS84peM44Ka4peM44KZ4peM4KWNYjsgYeKXjOCkvOKXjOOCmuKXjOOCmeKXjOCljWI7IGHil4zgpLzil4zjgpril4zjgpnil4zgpY1iOyBh4peM4KS84peM44Ka4peM44KZ4peM4KWNYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFNFTUktVk9JQ0VEIFNPVU5EIE1BUkssIERFVkFOQUdBUkkgU0lHTiBWSVJBTUEsIENPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSywgREVWQU5BR0FSSSBTSUdOIE5VS1RBLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwNjRCIEZCMUUgMDVDMiBGQjFFIDAwNjI7MDA2MSAwNUMyIEZCMUUgRkIxRSAwNjRCIDAwNjI7MDA2MSAwNUMyIEZCMUUgRkIxRSAwNjRCIDAwNjI7MDA2MSAwNUMyIEZCMUUgRkIxRSAwNjRCIDAwNjI7MDA2MSAwNUMyIEZCMUUgRkIxRSAwNjRCIDAwNjI7ICMgKGHil4zZi+KXjO+snuKXjNeC4peM76yeYjsgYeKXjNeC4peM76ye4peM76ye4peM2YtiOyBh4peM14Lil4zvrJ7il4zvrJ7il4zZi2I7IGHil4zXguKXjO+snuKXjO+snuKXjNmLYjsgYeKXjNeC4peM76ye4peM76ye4peM2YtiOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBBUkFCSUMgRkFUSEFUQU4sIEhFQlJFVyBQT0lOVCBKVURFTy1TUEFOSVNIIFZBUklLQSwgSEVCUkVXIFBPSU5UIFNJTiBET1QsIEhFQlJFVyBQT0lOVCBKVURFTy1TUEFOSVNIIFZBUklLQSwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgRkIxRSAwNjRCIEZCMUUgMDVDMiAwMDYyOzAwNjEgMDVDMiBGQjFFIEZCMUUgMDY0QiAwMDYyOzAwNjEgMDVDMiBGQjFFIEZCMUUgMDY0QiAwMDYyOzAwNjEgMDVDMiBGQjFFIEZCMUUgMDY0QiAwMDYyOzAwNjEgMDVDMiBGQjFFIEZCMUUgMDY0QiAwMDYyOyAjIChh4peM76ye4peM2Yvil4zvrJ7il4zXgmI7IGHil4zXguKXjO+snuKXjO+snuKXjNmLYjsgYeKXjNeC4peM76ye4peM76ye4peM2YtiOyBh4peM14Lil4zvrJ7il4zvrJ7il4zZi2I7IGHil4zXguKXjO+snuKXjO+snuKXjNmLYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgSEVCUkVXIFBPSU5UIEpVREVPLVNQQU5JU0ggVkFSSUtBLCBBUkFCSUMgRkFUSEFUQU4sIEhFQlJFVyBQT0lOVCBKVURFTy1TUEFOSVNIIFZBUklLQSwgSEVCUkVXIFBPSU5UIFNJTiBET1QsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIEZFMjAgMDA2MjswMEUwIDA1QUUgRkUyMCAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgRkUyMCAwMzE1IDAwNjI7MDBFMCAwNUFFIEZFMjAgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIEZFMjAgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM77igYjsgw6Dil4zWruKXjO+4oOKXjMyVYjsgYeKXjNau4peMzIDil4zvuKDil4zMlWI7IMOg4peM1q7il4zvuKDil4zMlWI7IGHil4zWruKXjMyA4peM77ig4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIENPTUJJTklORyBMSUdBVFVSRSBMRUZUIEhBTEYsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIEZFMjAgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgRkUyMCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMCAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMCAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjO+4oOKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjO+4oOKXjMyA4peMzJViOyBh4peM1q7il4zvuKDil4zMgOKXjMyVYjsgYeKXjNau4peM77ig4peMzIDil4zMlWI7IGHil4zWruKXjO+4oOKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgTElHQVRVUkUgTEVGVCBIQUxGLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIDAzMTUgMDMwMCAwNUFFIEZFMjEgMDA2MjswMEUwIDA1QUUgRkUyMSAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgRkUyMSAwMzE1IDAwNjI7MDBFMCAwNUFFIEZFMjEgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIEZFMjEgMDMxNSAwMDYyOyAjIChh4peMzJXil4zMgOKXjNau4peM77ihYjsgw6Dil4zWruKXjO+4oeKXjMyVYjsgYeKXjNau4peMzIDil4zvuKHil4zMlWI7IMOg4peM1q7il4zvuKHil4zMlWI7IGHil4zWruKXjMyA4peM77ih4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQsIENPTUJJTklORyBHUkFWRSBBQ0NFTlQsIEhFQlJFVyBBQ0NFTlQgWklOT1IsIENPTUJJTklORyBMSUdBVFVSRSBSSUdIVCBIQUxGLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSBGRTIxIDAzMTUgMDMwMCAwNUFFIDAwNjI7MDA2MSAwNUFFIEZFMjEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIEZFMjEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIEZFMjEgMDMwMCAwMzE1IDAwNjI7MDA2MSAwNUFFIEZFMjEgMDMwMCAwMzE1IDAwNjI7ICMgKGHil4zvuKHil4zMleKXjMyA4peM1q5iOyBh4peM1q7il4zvuKHil4zMgOKXjMyVYjsgYeKXjNau4peM77ih4peMzIDil4zMlWI7IGHil4zWruKXjO+4oeKXjMyA4peMzJViOyBh4peM1q7il4zvuKHil4zMgOKXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIExJR0FUVVJFIFJJR0hUIEhBTEYsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKzAwNjEgMDMxNSAwMzAwIDA1QUUgRkUyMiAwMDYyOzAwRTAgMDVBRSBGRTIyIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCBGRTIyIDAzMTUgMDA2MjswMEUwIDA1QUUgRkUyMiAwMzE1IDAwNjI7MDA2MSAwNUFFIDAzMDAgRkUyMiAwMzE1IDAwNjI7ICMgKGHil4zMleKXjMyA4peM1q7il4zvuKJiOyDDoOKXjNau4peM77ii4peMzJViOyBh4peM1q7il4zMgOKXjO+4ouKXjMyVYjsgw6Dil4zWruKXjO+4ouKXjMyVYjsgYeKXjNau4peMzIDil4zvuKLil4zMlWI7ICkgTEFUSU4gU01BTEwgTEVUVEVSIEEsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgQ09NQklOSU5HIERPVUJMRSBUSUxERSBMRUZUIEhBTEYsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIEZFMjIgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgRkUyMiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMiAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMiAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjO+4ouKXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjO+4ouKXjMyA4peMzJViOyBh4peM1q7il4zvuKLil4zMgOKXjMyVYjsgYeKXjNau4peM77ii4peMzIDil4zMlWI7IGHil4zWruKXjO+4ouKXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgRE9VQkxFIFRJTERFIExFRlQgSEFMRiwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBMQVRJTiBTTUFMTCBMRVRURVIgQgorMDA2MSAwMzE1IDAzMDAgMDVBRSBGRTIzIDAwNjI7MDBFMCAwNUFFIEZFMjMgMDMxNSAwMDYyOzAwNjEgMDVBRSAwMzAwIEZFMjMgMDMxNSAwMDYyOzAwRTAgMDVBRSBGRTIzIDAzMTUgMDA2MjswMDYxIDA1QUUgMDMwMCBGRTIzIDAzMTUgMDA2MjsgIyAoYeKXjMyV4peMzIDil4zWruKXjO+4o2I7IMOg4peM1q7il4zvuKPil4zMlWI7IGHil4zWruKXjMyA4peM77ij4peMzJViOyDDoOKXjNau4peM77ij4peMzJViOyBh4peM1q7il4zMgOKXjO+4o+KXjMyVYjsgKSBMQVRJTiBTTUFMTCBMRVRURVIgQSwgQ09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hULCBDT01CSU5JTkcgR1JBVkUgQUNDRU5ULCBIRUJSRVcgQUNDRU5UIFpJTk9SLCBDT01CSU5JTkcgRE9VQkxFIFRJTERFIFJJR0hUIEhBTEYsIExBVElOIFNNQUxMIExFVFRFUiBCCiswMDYxIEZFMjMgMDMxNSAwMzAwIDA1QUUgMDA2MjswMDYxIDA1QUUgRkUyMyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMyAwMzAwIDAzMTUgMDA2MjswMDYxIDA1QUUgRkUyMyAwMzAwIDAzMTUgMDA2MjsgIyAoYeKXjO+4o+KXjMyV4peMzIDil4zWrmI7IGHil4zWruKXjO+4o+KXjMyA4peMzJViOyBh4peM1q7il4zvuKPil4zMgOKXjMyVYjsgYeKXjNau4peM77ij4peMzIDil4zMlWI7IGHil4zWruKXjO+4o+KXjMyA4peMzJViOyApIExBVElOIFNNQUxMIExFVFRFUiBBLCBDT01CSU5JTkcgRE9VQkxFIFRJTERFIFJJR0hUIEhBTEYsIENPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVCwgQ09NQklOSU5HIEdSQVZFIEFDQ0VOVCwgSEVCUkVXIEFDQ0VOVCBaSU5PUiwgTEFUSU4gU01BTEwgTEVUVEVSIEIKKyMKKyMgRU5EIE9GIEZJTEUKZGlmZiAtLWdpdCBhL3NyYy9kYXRhL3VuaWNvZGUvU3BlY2lhbENhc2luZy0yLnR4dCBiL3NyYy9kYXRhL3VuaWNvZGUvU3BlY2lhbENhc2luZy0yLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hZjAwMmVmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2RhdGEvdW5pY29kZS9TcGVjaWFsQ2FzaW5nLTIudHh0CkBAIC0wLDAgKzEsMjE5IEBACisjIFNwZWNpYWxDYXNpbmctMi50eHQKKyMKKyMgU3BlY2lhbCBDYXNpbmcgUHJvcGVydGllcworIworIyBUaGlzIGZpbGUgaXMgYSBzdXBwbGVtZW50IHRvIHRoZSBVbmljb2RlRGF0YSBmaWxlLgorIyBJdCBjb250YWlucyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjYXNpbmcgb2YgVW5pY29kZSBjaGFyYWN0ZXJzLgorIyAoRm9yIGNvbXBhdGliaWxpdHksIHRoZSBVbmljb2RlRGF0YS50eHQgZmlsZSBvbmx5IGNvbnRhaW5zIGNhc2UgbWFwcGluZ3MgZm9yCisjIGNoYXJhY3RlcnMgd2hlcmUgdGhleSBhcmUgMS0xLCBhbmQgZG9lcyBub3QgaGF2ZSBsb2NhbGUtc3BlY2lmaWMgbWFwcGluZ3MuKQorIyBUaGVzZSBhcmUgaW5mb3JtYXRpdmUgY2hhcmFjdGVyIHByb3BlcnRpZXMuCisjCisjIFNlbmQgY29tbWVudHMgdG8gbWFya0B1bmljb2RlLm9yZworIworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBGb3JtYXQKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgVGhlIGVudHJpZXMgaW4gdGhpcyBmaWxlIGFyZSBpbiB0aGUgZm9sbG93aW5nIG1hY2hpbmUtcmVhZGFibGUgZm9ybWF0OgorIworIyA8ZW50cnk+IDo9IDxjYXNlX21hcHBpbmc+IDxjb25kaXRpb25fbGlzdD4/ICg8cz4qICIjIiA8Y29tbWVudD4pPworIworIyA8Y2FzZV9tYXBwaW5nPiA6PSA8c291cmNlPiA8c2VwPiA8bG93ZXI+IDxzZXA+IDx0aXRsZT4gPHNlcD4gPHVwcGVyPiA8c2VwPgorIworIyA8c291cmNlPiA6PSA8Y29kZV9wb2ludD4KKyMgPHNlcD4gOj0gPHM+KiAiOyIgPHM+KgorIyA8bG93ZXI+IDo9IDxjb2RlX3BvaW50X2xpc3Q+CisjIDx0aXRsZT4gOj0gPGNvZGVfcG9pbnRfbGlzdD4KKyMgPHVwcGVyPiA6PSA8Y29kZV9wb2ludF9saXN0PgorIyA8Y29kZV9wb2ludF9saXN0PiA6PSA8Y29kZV9wb2ludD4gKDxzPisgPGNvZGVfcG9pbnQ+KSoKKyMgPGNvZGVfcG9pbnQ+IDo9IDxoZXg+PGhleD48aGV4PjxoZXg+CisjIDxoZXg+IDo9IFswLTFBLUZhLWZdCisjIDxzPiA6PSA8c3BhY2U+CisjCisjIDxjb25kaXRpb25fbGlzdD4gOj0gPGxvY2FsZT4/ICg8cz4rIDxjb250ZXh0PikqCisjIDxsb2NhbGU+IDo9IDxJU09fMzE2Nl9jb2RlPiAoICJfIiA8SVNPXzYzOV9jb2RlPiApPyAoICJfIiA8dmFyaWFudD4gKT8KKyMgPElTT18zMTY2X2NvZGU+IDo9IDItbGV0dGVyIGNvdW50cnkgY29kZSwKKyMgICAgICAgICAgICAgICAgICAgIGFzIGluIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9vbmxpbmVkYXQvY291bnRyaWVzLmh0bWwKKyMgPElTT182MzlfY29kZT4gOj0gIDItbGV0dGVyIGNvZGUsCisjICAgICAgICAgICAgICAgICAgICBhcyBpbiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvb25saW5lZGF0L2xhbmd1YWdlcy5odG1sCisjIDxjb250ZXh0PiA6PSAiRklOQUwiIHwgIk5PTl9GSU5BTCIgfCAiTU9ERVJOIiB8ICJOT05fTU9ERVJOIgorIworIyAgQSBjb25kaXRpb24gbGlzdCBvdmVycmlkZXMgdGhlIG5vcm1hbCBiZWhhdmlvciBpZiBhbnkgb2YgdGhlIGxpc3RlZCBjb25kaXRpb25zIGlzIHRydWUuCisjICAgRklOQUw6ICBUaGUgbGV0dGVyIGlzIG5vdCBmb2xsb3dlZCBieSBhIGxldHRlciBvZiBjYXRlZ29yeSBMKiAoZS5nLiBMbCwgTHQsIEx1LCBMbSwgb3IgTG8pLgorIyAgIE1PREVSTjogVGhlIG1hcHBpbmcgaXMgb25seSB1c2VkIGZvciBtb2Rlcm4gdGV4dC4KKyMgIENvbmRpdGlvbnMgcHJlY2VkZWQgYnkgIk5PTl8iIHJlcHJlc2VudCB0aGUgbmVnYXRpb24gb2YgdGhlIGNvbmRpdGlvbgorIworIyBOZXcgY29udGV4dHMgbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuCisjIFBhcnNlcnMgb2YgdGhpcyBmaWxlIG11c3QgYmUgcHJlcGFyZWQgdG8gZGVhbCB3aXRoIHRoYXQgc2l0dWF0aW9uLgorIyBBZGRpdGlvbmFsIHdoaXRlc3BhY2UgYXJvdW5kIGVsZW1lbnRzIGlzIG9wdGlvbmFsLiBCbGFuayBsaW5lcyBhcmUgaWdub3JlZCBpbiBwYXJzaW5nLgorIyBPbiBhbnkgbGluZSwgYWxsIHRleHQgZm9sbG93aW5nICIjIiBpcyBhIGNvbW1lbnQsIGFuZCBhcmUgaWdub3JlZCBpbiBwYXJzaW5nLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFVuY29uZGl0aW9uYWwgbWFwcGluZ3MKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBUaGUgR2VybWFuIGVzLXplZCBpcyBzcGVjaWFsLS10aGUgbm9ybWFsIG1hcHBpbmcgaXMgdG8gU1MuCisjIE5vdGU6IHRoZSB0aXRsZWNhc2Ugc2hvdWxkIG5ldmVyIG9jY3VyIGluIHByYWN0aWNlLiBJdCBpcyBlcXVhbCB0byB0aXRsZWNhc2UodXBwZXJjYXNlKDxlcy16ZWQ+KSkKKworMDBERjsgMDBERjsgMDA1MyAwMDczOyAwMDUzIDAwNTM7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKKworIyBMaWdhdHVyZXMKKworRkIwMDsgRkIwMDsgMDA0NiAwMDY2OyAwMDQ2IDAwNDY7ICMgTEFUSU4gU01BTEwgTElHQVRVUkUgRkYKK0ZCMDE7IEZCMDE7IDAwNDYgMDA2OTsgMDA0NiAwMDQ5OyAjIExBVElOIFNNQUxMIExJR0FUVVJFIEZJCitGQjAyOyBGQjAyOyAwMDQ2IDAwNkM7IDAwNDYgMDA0QzsgIyBMQVRJTiBTTUFMTCBMSUdBVFVSRSBGTAorRkIwMzsgRkIwMzsgMDA0NiAwMDY2IDAwNjk7IDAwNDYgMDA0NiAwMDQ5OyAjIExBVElOIFNNQUxMIExJR0FUVVJFIEZGSQorRkIwNDsgRkIwNDsgMDA0NiAwMDY2IDAwNkM7IDAwNDYgMDA0NiAwMDRDOyAjIExBVElOIFNNQUxMIExJR0FUVVJFIEZGTAorRkIwNTsgRkIwNTsgMDA1MyAwMDc0OyAwMDUzIDAwNTQ7ICMgTEFUSU4gU01BTEwgTElHQVRVUkUgTE9ORyBTIFQKK0ZCMDY7IEZCMDY7IDAwNTMgMDA3NDsgMDA1MyAwMDU0OyAjIExBVElOIFNNQUxMIExJR0FUVVJFIFNUCisKKzA1ODc7IDA1ODc7IDA1MzUgMDU4MjsgMDUzNSAwNTUyOyAjIEFSTUVOSUFOIFNNQUxMIExJR0FUVVJFIEVDSCBZSVdOCitGQjEzOyBGQjEzOyAwNTQ0IDA1NzY7IDA1NDQgMDU0NjsgIyBBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBNRU4gTk9XCitGQjE0OyBGQjE0OyAwNTQ0IDA1NjU7IDA1NDQgMDUzNTsgIyBBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBNRU4gRUNICitGQjE1OyBGQjE1OyAwNTQ0IDA1NkI7IDA1NDQgMDUzQjsgIyBBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBNRU4gSU5JCitGQjE2OyBGQjE2OyAwNTRFIDA1NzY7IDA1NEUgMDU0NjsgIyBBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBWRVcgTk9XCitGQjE3OyBGQjE3OyAwNTQ0IDA1NkQ7IDA1NDQgMDUzRDsgIyBBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBNRU4gWEVICisKKyMgTm8gY29ycmVzcG9uZGluZyB1cHBlcmNhc2UgcHJlY29tcG9zZWQgY2hhcmFjdGVyCisKKzAxNDk7IDAxNDk7IDAyQkMgMDA2RTsgMDJCQyAwMDRFOyAjIExBVElOIFNNQUxMIExFVFRFUiBOIFBSRUNFREVEIEJZIEFQT1NUUk9QSEUKKzAzOTA7IDAzOTA7IDAzOTkgMDMwOCAwMzAxOyAwMzk5IDAzMDggMDMwMTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgVE9OT1MKKzAzQjA7IDAzQjA7IDAzQTUgMDMwOCAwMzAxOyAwM0E1IDAzMDggMDMwMTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgVE9OT1MKKzAxRjA7IDAxRjA7IDAwNEEgMDMwQzsgMDA0QSAwMzBDOyAjIExBVElOIFNNQUxMIExFVFRFUiBKIFdJVEggQ0FST04KKzFFOTY7IDFFOTY7IDAwNDggMDMzMTsgMDA0OCAwMzMxOyAjIExBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggTElORSBCRUxPVworMUU5NzsgMUU5NzsgMDA1NCAwMzA4OyAwMDU0IDAzMDg7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBESUFFUkVTSVMKKzFFOTg7IDFFOTg7IDAwNTcgMDMwQTsgMDA1NyAwMzBBOyAjIExBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggUklORyBBQk9WRQorMUU5OTsgMUU5OTsgMDA1OSAwMzBBOyAwMDU5IDAzMEE7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBSSU5HIEFCT1ZFCisxRTlBOyAxRTlBOyAwMDQxIDAyQkU7IDAwNDEgMDJCRTsgIyBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJR0hUIEhBTEYgUklORworMUY1MDsgMUY1MDsgMDNBNSAwMzEzOyAwM0E1IDAzMTM7ICMgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBQU0lMSQorMUY1MjsgMUY1MjsgMDNBNSAwMzEzIDAzMDA7IDAzQTUgMDMxMyAwMzAwOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggUFNJTEkgQU5EIFZBUklBCisxRjU0OyAxRjU0OyAwM0E1IDAzMTMgMDMwMTsgMDNBNSAwMzEzIDAzMDE7ICMgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBQU0lMSSBBTkQgT1hJQQorMUY1NjsgMUY1NjsgMDNBNSAwMzEzIDAzNDI7IDAzQTUgMDMxMyAwMzQyOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JCisxRkI2OyAxRkI2OyAwMzkxIDAzNDI7IDAzOTEgMDM0MjsgIyBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQRVJJU1BPTUVOSQorMUZDNjsgMUZDNjsgMDM5NyAwMzQyOyAwMzk3IDAzNDI7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBFUklTUE9NRU5JCisxRkQyOyAxRkQyOyAwMzk5IDAzMDggMDMwMDsgMDM5OSAwMzA4IDAzMDA7ICMgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EgQU5EIFZBUklBCisxRkQzOyAxRkQzOyAwMzk5IDAzMDggMDMwMTsgMDM5OSAwMzA4IDAzMDE7ICMgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EgQU5EIE9YSUEKKzFGRDY7IDFGRDY7IDAzOTkgMDM0MjsgMDM5OSAwMzQyOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggUEVSSVNQT01FTkkKKzFGRDc7IDFGRDc7IDAzOTkgMDMwOCAwMzQyOyAwMzk5IDAzMDggMDM0MjsgIyBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgUEVSSVNQT01FTkkKKzFGRTI7IDFGRTI7IDAzQTUgMDMwOCAwMzAwOyAwM0E1IDAzMDggMDMwMDsgIyBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgVkFSSUEKKzFGRTM7IDFGRTM7IDAzQTUgMDMwOCAwMzAxOyAwM0E1IDAzMDggMDMwMTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgT1hJQQorMUZFNDsgMUZFNDsgMDNBMSAwMzEzOyAwM0ExIDAzMTM7ICMgR1JFRUsgU01BTEwgTEVUVEVSIFJITyBXSVRIIFBTSUxJCisxRkU2OyAxRkU2OyAwM0E1IDAzNDI7IDAzQTUgMDM0MjsgIyBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBFUklTUE9NRU5JCisxRkU3OyAxRkU3OyAwM0E1IDAzMDggMDM0MjsgMDNBNSAwMzA4IDAzNDI7ICMgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EgQU5EIFBFUklTUE9NRU5JCisxRkY2OyAxRkY2OyAwM0E5IDAzNDI7IDAzQTkgMDM0MjsgIyBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQRVJJU1BPTUVOSQorCisjIElNUE9SVEFOVC13aGVuIGNhcGl0YWxpemluZyBpb3RhLXN1YnNjcmlwdCAoMDM0NSkKKyMgIEl0IE1VU1QgYmUgaW4gbm9ybWFsaXplZCBmb3JtLS1tb3ZlZCB0byB0aGUgZW5kIG9mIGFueSBzZXF1ZW5jZSBvZiBjb21iaW5pbmcgbWFya3MuCisjICBUaGlzIGlzIGJlY2F1c2UgbG9naWNhbGx5IGl0IHJlcHJlc2VudHMgYSBmb2xsb3dpbmcgYmFzZSBjaGFyYWN0ZXIhCisjICBFLmcuIDxpb3RhX3N1YnNjcmlwdD4gKDxNbj4gfCA8TWM+IHwgPE1lPikrID0+ICg8TW4+IHwgPE1jPiB8IDxNZT4pKyA8aW90YV9zdWJzY3JpcHQ+CisjIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIGEgd29yZCwgc28gaW4gdGl0bGVjYXNpbmcgaXQgY2FuIGJlIGxlZnQgYXMgaXMuCisKKyMgVGhlIGZvbGxvd2luZyBjYXNlcyBhcmUgYWxyZWFkeSBpbiB0aGUgVW5pY29kZURhdGEgZmlsZSwgc28gYXJlIG9ubHkgY29tbWVudGVkIGhlcmUuCisKKyMgMDM0NTsgMDM0NTsgMDM0NTsgMDM5OTsgIyBDT01CSU5JTkcgR1JFRUsgWVBPR0VHUkFNTUVOSQorCisjIEFsbCBsZXR0ZXJzIHdpdGggWVBPR0VHUkFNTUVOSSAoaW90YS1zdWJzY3JpcHQpIG9yIFBST1NHRUdSQU1NRU5JIChpb3RhIGFkc2NyaXB0KQorIyBoYXZlIHNwZWNpYWwgdXBwZXJjYXNlcy4KKyMgTm90ZTogY2hhcmFjdGVycyB3aXRoIFBST1NHRUdSQU1NRU5JIGFyZSBhY3R1YWxseSB0aXRsZWNhc2UsIG5vdCB1cHBlcmNhc2UhCisKKzFGODA7IDFGODA7IDFGODg7IDFGMDggMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgWVBPR0VHUkFNTUVOSQorMUY4MTsgMUY4MTsgMUY4OTsgMUYwOSAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBZUE9HRUdSQU1NRU5JCisxRjgyOyAxRjgyOyAxRjhBOyAxRjBBIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JCisxRjgzOyAxRjgzOyAxRjhCOyAxRjBCIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JCisxRjg0OyAxRjg0OyAxRjhDOyAxRjBDIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGODU7IDFGODU7IDFGOEQ7IDFGMEQgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUY4NjsgMUY4NjsgMUY4RTsgMUYwRSAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUY4NzsgMUY4NzsgMUY4RjsgMUYwRiAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUY4ODsgMUY4MDsgMUY4ODsgMUYwOCAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFBST1NHRUdSQU1NRU5JCisxRjg5OyAxRjgxOyAxRjg5OyAxRjA5IDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOEE7IDFGODI7IDFGOEE7IDFGMEEgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOEI7IDFGODM7IDFGOEI7IDFGMEIgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOEM7IDFGODQ7IDFGOEM7IDFGMEMgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBQUk9TR0VHUkFNTUVOSQorMUY4RDsgMUY4NTsgMUY4RDsgMUYwRCAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRjhFOyAxRjg2OyAxRjhFOyAxRjBFIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JCisxRjhGOyAxRjg3OyAxRjhGOyAxRjBGIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JCisxRjkwOyAxRjkwOyAxRjk4OyAxRjI4IDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBZUE9HRUdSQU1NRU5JCisxRjkxOyAxRjkxOyAxRjk5OyAxRjI5IDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBZUE9HRUdSQU1NRU5JCisxRjkyOyAxRjkyOyAxRjlBOyAxRjJBIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUY5MzsgMUY5MzsgMUY5QjsgMUYyQiAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGOTQ7IDFGOTQ7IDFGOUM7IDFGMkMgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGOTU7IDFGOTU7IDFGOUQ7IDFGMkQgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGOTY7IDFGOTY7IDFGOUU7IDFGMkUgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JCisxRjk3OyAxRjk3OyAxRjlGOyAxRjJGIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUY5ODsgMUY5MDsgMUY5ODsgMUYyOCAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBQUk9TR0VHUkFNTUVOSQorMUY5OTsgMUY5MTsgMUY5OTsgMUYyOSAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBQUk9TR0VHUkFNTUVOSQorMUY5QTsgMUY5MjsgMUY5QTsgMUYyQSAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOUI7IDFGOTM7IDFGOUI7IDFGMkIgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgVkFSSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRjlDOyAxRjk0OyAxRjlDOyAxRjJDIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRjlEOyAxRjk1OyAxRjlEOyAxRjJEIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRjlFOyAxRjk2OyAxRjlFOyAxRjJFIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JIEFORCBQUk9TR0VHUkFNTUVOSQorMUY5RjsgMUY5NzsgMUY5RjsgMUYyRiAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGQTA7IDFGQTA7IDFGQTg7IDFGNjggMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgWVBPR0VHUkFNTUVOSQorMUZBMTsgMUZBMTsgMUZBOTsgMUY2OSAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBZUE9HRUdSQU1NRU5JCisxRkEyOyAxRkEyOyAxRkFBOyAxRjZBIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JCisxRkEzOyAxRkEzOyAxRkFCOyAxRjZCIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JCisxRkE0OyAxRkE0OyAxRkFDOyAxRjZDIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGQTU7IDFGQTU7IDFGQUQ7IDFGNkQgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUZBNjsgMUZBNjsgMUZBRTsgMUY2RSAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUZBNzsgMUZBNzsgMUZBRjsgMUY2RiAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUZBODsgMUZBMDsgMUZBODsgMUY2OCAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFBST1NHRUdSQU1NRU5JCisxRkE5OyAxRkExOyAxRkE5OyAxRjY5IDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGQUE7IDFGQTI7IDFGQUE7IDFGNkEgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGQUI7IDFGQTM7IDFGQUI7IDFGNkIgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGQUM7IDFGQTQ7IDFGQUM7IDFGNkMgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBQUk9TR0VHUkFNTUVOSQorMUZBRDsgMUZBNTsgMUZBRDsgMUY2RCAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRkFFOyAxRkE2OyAxRkFFOyAxRjZFIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JCisxRkFGOyAxRkE3OyAxRkFGOyAxRjZGIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JCisKKzFGQjM7IDFGQjM7IDFGQkM7IDAzOTEgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBZUE9HRUdSQU1NRU5JCisxRkJDOyAxRkIzOyAxRkJDOyAwMzkxIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQUk9TR0VHUkFNTUVOSQorMUZDMzsgMUZDMzsgMUZDQzsgMDM5NyAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBZUE9HRUdSQU1NRU5JCisxRkNDOyAxRkMzOyAxRkNDOyAwMzk3IDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFJPU0dFR1JBTU1FTkkKKzFGRjM7IDFGRjM7IDFGRkM7IDAzQTkgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBZUE9HRUdSQU1NRU5JCisxRkZDOyAxRkYzOyAxRkZDOyAwM0E5IDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQUk9TR0VHUkFNTUVOSQorCisjIFNvbWUgY2hhcmFjdGVycyB3aXRoIFlQT0dFR1JBTU1FTkkgYXJlIGFsc28gaGF2ZSBubyBjb3JyZXNwb25kaW5nIHRpdGxlY2FzZXMKKworMUZCMjsgMUZCMjsgMUZCQSAwMzQ1OyAxRkJBIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGQjQ7IDFGQjQ7IDAzODYgMDM0NTsgMDM4NiAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGQzI7IDFGQzI7IDFGQ0EgMDM0NTsgMUZDQSAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUZDNDsgMUZDNDsgMDM4OSAwMzQ1OyAwMzg5IDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGRjI7IDFGRjI7IDFGRkEgMDM0NTsgMUZGQSAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JCisxRkY0OyAxRkY0OyAwMzhGIDAzNDU7IDAzOEYgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBPWElBIEFORCBZUE9HRUdSQU1NRU5JCisKKzFGQjc7IDFGQjc7IDAzOTEgMDM0MiAwMzQ1OyAwMzkxIDAzNDIgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUZDNzsgMUZDNzsgMDM5NyAwMzQyIDAzNDU7IDAzOTcgMDM0MiAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUZGNzsgMUZGNzsgMDNBOSAwMzQyIDAzNDU7IDAzQTkgMDM0MiAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgQ29uZGl0aW9uYWwgbWFwcGluZ3MKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBTcGVjaWFsIGNhc2UgZm9yIGZpbmFsIGZvcm0gb2Ygc2lnbWEKKworMDNBMzsgMDNDMjsgMDNBMzsgMDNBMzsgRklOQUw7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgU0lHTUEKKworIyBOb3RlOiB0aGUgZm9sbG93aW5nIGNhc2VzIGZvciBub24tZmluYWwgYXJlIGFscmVhZHkgaW4gdGhlIFVuaWNvZGVEYXRhIGZpbGUuCisKKyMgMDNBMzsgMDNDMzsgMDNBMzsgMDNBMzsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQQorIyAwM0MzOyAwM0MzOyAwM0EzOyAwM0EzOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBTSUdNQQorIyAwM0MyOyAwM0MyOyAwM0EzOyAwM0EzOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBGSU5BTCBTSUdNQQorCisjIE5vdGU6IHRoZSBmb2xsb3dpbmcgY2FzZXMgYXJlIG5vdCBpbmNsdWRlZCwgc2luY2UgdGhleSB3b3VsZCBub3JtYWxpemUgaW4gbG93ZXJjYXNpbmcKKworIyAwM0MzOyAwM0MyOyAwM0EzOyAwM0EzOyBGSU5BTDsgIyBHUkVFSyBTTUFMTCBMRVRURVIgU0lHTUEKKyMgMDNDMjsgMDNDMzsgMDNBMzsgMDNBMzsgTk9OX0ZJTkFMOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBGSU5BTCBTSUdNQQorCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIExvY2FsZS1zZW5zaXRpdmUgbWFwcGluZ3MKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBUdXJraXNoCisKKzAwNDk7IDAxMzE7IDAwNDk7IDAwNDk7IFRSOyAjIExBVElOIENBUElUQUwgTEVUVEVSIEkKKzAwNjk7IDAwNjk7IDAxMzA7IDAxMzA7IFRSOyAjIExBVElOIFNNQUxMIExFVFRFUiBJCisKKyMgTm90ZTogdGhlIGZvbGxvd2luZyBjYXNlcyBhcmUgYWxyZWFkeSBpbiB0aGUgVW5pY29kZURhdGEgZmlsZS4KKworIyAwMTMxOyAwMTMxOyAwMDQ5OyAwMDQ5OyBUUjsgIyBMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBJCisjIDAxMzA7IDAwNjk7IDAxMzA7IDAxMzA7IFRSOyAjIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBET1QgQUJPVkUKZGlmZiAtLWdpdCBhL3NyYy9kYXRhL3VuaWNvZGUvU3BlY2lhbENhc2luZy50eHQgYi9zcmMvZGF0YS91bmljb2RlL1NwZWNpYWxDYXNpbmcudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmMxMjg4YmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvZGF0YS91bmljb2RlL1NwZWNpYWxDYXNpbmcudHh0CkBAIC0wLDAgKzEsMjIxIEBACisjIFNwZWNpYWxDYXNpbmctMi50eHQKKyMKKyMgU3BlY2lhbCBDYXNpbmcgUHJvcGVydGllcworIworIyBUaGlzIGZpbGUgaXMgYSBzdXBwbGVtZW50IHRvIHRoZSBVbmljb2RlRGF0YSBmaWxlLgorIyBJdCBjb250YWlucyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjYXNpbmcgb2YgVW5pY29kZSBjaGFyYWN0ZXJzLgorIyAoRm9yIGNvbXBhdGliaWxpdHksIHRoZSBVbmljb2RlRGF0YS50eHQgZmlsZSBvbmx5IGNvbnRhaW5zIGNhc2UgbWFwcGluZ3MgZm9yCisjIGNoYXJhY3RlcnMgd2hlcmUgdGhleSBhcmUgMS0xLCBhbmQgZG9lcyBub3QgaGF2ZSBsb2NhbGUtc3BlY2lmaWMgbWFwcGluZ3MuKQorIyBUaGVzZSBhcmUgaW5mb3JtYXRpdmUgY2hhcmFjdGVyIHByb3BlcnRpZXMuCisjCisjIFNlbmQgY29tbWVudHMgdG8gbWFya0B1bmljb2RlLm9yZworIworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBGb3JtYXQKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgVGhlIGVudHJpZXMgaW4gdGhpcyBmaWxlIGFyZSBpbiB0aGUgZm9sbG93aW5nIG1hY2hpbmUtcmVhZGFibGUgZm9ybWF0OgorIworIyA8ZW50cnk+IDo9IDxjYXNlX21hcHBpbmc+IDxjb25kaXRpb25fbGlzdD4/ICg8cz4qICIjIiA8Y29tbWVudD4pPworIworIyA8Y2FzZV9tYXBwaW5nPiA6PSA8c291cmNlPiA8c2VwPiA8bG93ZXI+IDxzZXA+IDx0aXRsZT4gPHNlcD4gPHVwcGVyPiA8c2VwPgorIworIyA8c291cmNlPiA6PSA8Y29kZV9wb2ludD4KKyMgPHNlcD4gOj0gPHM+KiAiOyIgPHM+KgorIyA8bG93ZXI+IDo9IDxjb2RlX3BvaW50X2xpc3Q+CisjIDx0aXRsZT4gOj0gPGNvZGVfcG9pbnRfbGlzdD4KKyMgPHVwcGVyPiA6PSA8Y29kZV9wb2ludF9saXN0PgorIyA8Y29kZV9wb2ludF9saXN0PiA6PSA8Y29kZV9wb2ludD4gKDxzPisgPGNvZGVfcG9pbnQ+KSoKKyMgPGNvZGVfcG9pbnQ+IDo9IDxoZXg+PGhleD48aGV4PjxoZXg+CisjIDxoZXg+IDo9IFswLTFBLUZhLWZdCisjIDxzPiA6PSA8c3BhY2U+CisjCisjIDxjb25kaXRpb25fbGlzdD4gOj0gPGxvY2FsZT4/ICg8cz4rIDxjb250ZXh0PikqCisjIDxsb2NhbGU+IDo9IDxJU09fMzE2Nl9jb2RlPiAoICJfIiA8SVNPXzYzOV9jb2RlPiApPyAoICJfIiA8dmFyaWFudD4gKT8KKyMgPElTT18zMTY2X2NvZGU+IDo9IDItbGV0dGVyIGNvdW50cnkgY29kZSwKKyMgICAgICAgICAgICAgICAgICAgIGFzIGluIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9vbmxpbmVkYXQvY291bnRyaWVzLmh0bWwKKyMgPElTT182MzlfY29kZT4gOj0gIDItbGV0dGVyIGNvZGUsCisjICAgICAgICAgICAgICAgICAgICBhcyBpbiBodHRwOi8vd3d3LnVuaWNvZGUub3JnL3VuaWNvZGUvb25saW5lZGF0L2xhbmd1YWdlcy5odG1sCisjIDxjb250ZXh0PiA6PSAiRklOQUwiIHwgIk5PTl9GSU5BTCIgfCAiTU9ERVJOIiB8ICJOT05fTU9ERVJOIgorIworIyAgQSBjb25kaXRpb24gbGlzdCBvdmVycmlkZXMgdGhlIG5vcm1hbCBiZWhhdmlvciBpZiBhbnkgb2YgdGhlIGxpc3RlZCBjb25kaXRpb25zIGlzIHRydWUuCisjICAgRklOQUw6ICBUaGUgbGV0dGVyIGlzIG5vdCBmb2xsb3dlZCBieSBhIGxldHRlciBvZiBjYXRlZ29yeSBMKiAoZS5nLiBMbCwgTHQsIEx1LCBMbSwgb3IgTG8pLgorIyAgIE1PREVSTjogVGhlIG1hcHBpbmcgaXMgb25seSB1c2VkIGZvciBtb2Rlcm4gdGV4dC4KKyMgIENvbmRpdGlvbnMgcHJlY2VkZWQgYnkgIk5PTl8iIHJlcHJlc2VudCB0aGUgbmVnYXRpb24gb2YgdGhlIGNvbmRpdGlvbgorIworIyBOZXcgY29udGV4dHMgbWF5IGJlIGFkZGVkIGluIHRoZSBmdXR1cmUuCisjIFBhcnNlcnMgb2YgdGhpcyBmaWxlIG11c3QgYmUgcHJlcGFyZWQgdG8gZGVhbCB3aXRoIHRoYXQgc2l0dWF0aW9uLgorIyBBZGRpdGlvbmFsIHdoaXRlc3BhY2UgYXJvdW5kIGVsZW1lbnRzIGlzIG9wdGlvbmFsLiBCbGFuayBsaW5lcyBhcmUgaWdub3JlZCBpbiBwYXJzaW5nLgorIyBPbiBhbnkgbGluZSwgYWxsIHRleHQgZm9sbG93aW5nICIjIiBpcyBhIGNvbW1lbnQsIGFuZCBhcmUgaWdub3JlZCBpbiBwYXJzaW5nLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIFVuY29uZGl0aW9uYWwgbWFwcGluZ3MKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBUaGUgR2VybWFuIGVzLXplZCBpcyBzcGVjaWFsLS10aGUgbm9ybWFsIG1hcHBpbmcgaXMgdG8gU1MuCisjIE5vdGU6IHRoZSB0aXRsZWNhc2Ugc2hvdWxkIG5ldmVyIG9jY3VyIGluIHByYWN0aWNlLiBJdCBpcyBlcXVhbCB0byB0aXRsZWNhc2UodXBwZXJjYXNlKDxlcy16ZWQ+KSkKKworMDBERjsgMDBERjsgMDA1MyAwMDczOyAwMDUzIDAwNTM7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFMKKworIyBMaWdhdHVyZXMKKworRkIwMDsgRkIwMDsgMDA0NiAwMDY2OyAwMDQ2IDAwNDY7ICMgTEFUSU4gU01BTEwgTElHQVRVUkUgRkYKK0ZCMDE7IEZCMDE7IDAwNDYgMDA2OTsgMDA0NiAwMDQ5OyAjIExBVElOIFNNQUxMIExJR0FUVVJFIEZJCitGQjAyOyBGQjAyOyAwMDQ2IDAwNkM7IDAwNDYgMDA0QzsgIyBMQVRJTiBTTUFMTCBMSUdBVFVSRSBGTAorRkIwMzsgRkIwMzsgMDA0NiAwMDY2IDAwNjk7IDAwNDYgMDA0NiAwMDQ5OyAjIExBVElOIFNNQUxMIExJR0FUVVJFIEZGSQorRkIwNDsgRkIwNDsgMDA0NiAwMDY2IDAwNkM7IDAwNDYgMDA0NiAwMDRDOyAjIExBVElOIFNNQUxMIExJR0FUVVJFIEZGTAorRkIwNTsgRkIwNTsgMDA1MyAwMDc0OyAwMDUzIDAwNTQ7ICMgTEFUSU4gU01BTEwgTElHQVRVUkUgTE9ORyBTIFQKK0ZCMDY7IEZCMDY7IDAwNTMgMDA3NDsgMDA1MyAwMDU0OyAjIExBVElOIFNNQUxMIExJR0FUVVJFIFNUCisKKzA1ODc7IDA1ODc7IDA1MzUgMDU4MjsgMDUzNSAwNTUyOyAjIEFSTUVOSUFOIFNNQUxMIExJR0FUVVJFIEVDSCBZSVdOCitGQjEzOyBGQjEzOyAwNTQ0IDA1NzY7IDA1NDQgMDU0NjsgIyBBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBNRU4gTk9XCitGQjE0OyBGQjE0OyAwNTQ0IDA1NjU7IDA1NDQgMDUzNTsgIyBBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBNRU4gRUNICitGQjE1OyBGQjE1OyAwNTQ0IDA1NkI7IDA1NDQgMDUzQjsgIyBBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBNRU4gSU5JCitGQjE2OyBGQjE2OyAwNTRFIDA1NzY7IDA1NEUgMDU0NjsgIyBBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBWRVcgTk9XCitGQjE3OyBGQjE3OyAwNTQ0IDA1NkQ7IDA1NDQgMDUzRDsgIyBBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBNRU4gWEVICisKKyMgTm8gY29ycmVzcG9uZGluZyB1cHBlcmNhc2UgcHJlY29tcG9zZWQgY2hhcmFjdGVyCisKKzAxNDk7IDAxNDk7IDAyQkMgMDA2RTsgMDJCQyAwMDRFOyAjIExBVElOIFNNQUxMIExFVFRFUiBOIFBSRUNFREVEIEJZIEFQT1NUUk9QSEUKKzAzOTA7IDAzOTA7IDAzOTkgMDMwOCAwMzAxOyAwMzk5IDAzMDggMDMwMTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgVE9OT1MKKzAzQjA7IDAzQjA7IDAzQTUgMDMwOCAwMzAxOyAwM0E1IDAzMDggMDMwMTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgVE9OT1MKKzAxRjA7IDAxRjA7IDAwNEEgMDMwQzsgMDA0QSAwMzBDOyAjIExBVElOIFNNQUxMIExFVFRFUiBKIFdJVEggQ0FST04KKzFFOTY7IDFFOTY7IDAwNDggMDMzMTsgMDA0OCAwMzMxOyAjIExBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggTElORSBCRUxPVworMUU5NzsgMUU5NzsgMDA1NCAwMzA4OyAwMDU0IDAzMDg7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBESUFFUkVTSVMKKzFFOTg7IDFFOTg7IDAwNTcgMDMwQTsgMDA1NyAwMzBBOyAjIExBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggUklORyBBQk9WRQorMUU5OTsgMUU5OTsgMDA1OSAwMzBBOyAwMDU5IDAzMEE7ICMgTEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBSSU5HIEFCT1ZFCisxRTlBOyAxRTlBOyAwMDQxIDAyQkU7IDAwNDEgMDJCRTsgIyBMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJR0hUIEhBTEYgUklORworMUY1MDsgMUY1MDsgMDNBNSAwMzEzOyAwM0E1IDAzMTM7ICMgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBQU0lMSQorMUY1MjsgMUY1MjsgMDNBNSAwMzEzIDAzMDA7IDAzQTUgMDMxMyAwMzAwOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggUFNJTEkgQU5EIFZBUklBCisxRjU0OyAxRjU0OyAwM0E1IDAzMTMgMDMwMTsgMDNBNSAwMzEzIDAzMDE7ICMgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBQU0lMSSBBTkQgT1hJQQorMUY1NjsgMUY1NjsgMDNBNSAwMzEzIDAzNDI7IDAzQTUgMDMxMyAwMzQyOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JCisxRkI2OyAxRkI2OyAwMzkxIDAzNDI7IDAzOTEgMDM0MjsgIyBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQRVJJU1BPTUVOSQorMUZDNjsgMUZDNjsgMDM5NyAwMzQyOyAwMzk3IDAzNDI7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBFUklTUE9NRU5JCisxRkQyOyAxRkQyOyAwMzk5IDAzMDggMDMwMDsgMDM5OSAwMzA4IDAzMDA7ICMgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EgQU5EIFZBUklBCisxRkQzOyAxRkQzOyAwMzk5IDAzMDggMDMwMTsgMDM5OSAwMzA4IDAzMDE7ICMgR1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EgQU5EIE9YSUEKKzFGRDY7IDFGRDY7IDAzOTkgMDM0MjsgMDM5OSAwMzQyOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggUEVSSVNQT01FTkkKKzFGRDc7IDFGRDc7IDAzOTkgMDMwOCAwMzQyOyAwMzk5IDAzMDggMDM0MjsgIyBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgUEVSSVNQT01FTkkKKzFGRTI7IDFGRTI7IDAzQTUgMDMwOCAwMzAwOyAwM0E1IDAzMDggMDMwMDsgIyBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgVkFSSUEKKzFGRTM7IDFGRTM7IDAzQTUgMDMwOCAwMzAxOyAwM0E1IDAzMDggMDMwMTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgT1hJQQorMUZFNDsgMUZFNDsgMDNBMSAwMzEzOyAwM0ExIDAzMTM7ICMgR1JFRUsgU01BTEwgTEVUVEVSIFJITyBXSVRIIFBTSUxJCisxRkU2OyAxRkU2OyAwM0E1IDAzNDI7IDAzQTUgMDM0MjsgIyBHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBFUklTUE9NRU5JCisxRkU3OyAxRkU3OyAwM0E1IDAzMDggMDM0MjsgMDNBNSAwMzA4IDAzNDI7ICMgR1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EgQU5EIFBFUklTUE9NRU5JCisxRkY2OyAxRkY2OyAwM0E5IDAzNDI7IDAzQTkgMDM0MjsgIyBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQRVJJU1BPTUVOSQorCisjIElNUE9SVEFOVC13aGVuIGNhcGl0YWxpemluZyBpb3RhLXN1YnNjcmlwdCAoMDM0NSkKKyMgIEl0IE1VU1QgYmUgaW4gbm9ybWFsaXplZCBmb3JtLS1tb3ZlZCB0byB0aGUgZW5kIG9mIGFueSBzZXF1ZW5jZSBvZiBjb21iaW5pbmcgbWFya3MuCisjICBUaGlzIGlzIGJlY2F1c2UgbG9naWNhbGx5IGl0IHJlcHJlc2VudHMgYSBmb2xsb3dpbmcgYmFzZSBjaGFyYWN0ZXIhCisjICBFLmcuIDxpb3RhX3N1YnNjcmlwdD4gKDxNbj4gfCA8TWM+IHwgPE1lPikrID0+ICg8TW4+IHwgPE1jPiB8IDxNZT4pKyA8aW90YV9zdWJzY3JpcHQ+CisjIEl0IHNob3VsZCBuZXZlciBiZSB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIGEgd29yZCwgc28gaW4gdGl0bGVjYXNpbmcgaXQgY2FuIGJlIGxlZnQgYXMgaXMuCisKKyMgVGhlIGZvbGxvd2luZyBjYXNlcyBhcmUgYWxyZWFkeSBpbiB0aGUgVW5pY29kZURhdGEgZmlsZSwgc28gYXJlIG9ubHkgY29tbWVudGVkIGhlcmUuCisKKyMgMDM0NTsgMDM0NTsgMDM0NTsgMDM5OTsgIyBDT01CSU5JTkcgR1JFRUsgWVBPR0VHUkFNTUVOSQorCisjIEFsbCBsZXR0ZXJzIHdpdGggWVBPR0VHUkFNTUVOSSAoaW90YS1zdWJzY3JpcHQpIG9yIFBST1NHRUdSQU1NRU5JIChpb3RhIGFkc2NyaXB0KQorIyBoYXZlIHNwZWNpYWwgdXBwZXJjYXNlcy4KKyMgTm90ZTogY2hhcmFjdGVycyB3aXRoIFBST1NHRUdSQU1NRU5JIGFyZSBhY3R1YWxseSB0aXRsZWNhc2UsIG5vdCB1cHBlcmNhc2UhCisKKzFGODA7IDFGODA7IDFGODg7IDFGMDggMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgWVBPR0VHUkFNTUVOSQorMUY4MTsgMUY4MTsgMUY4OTsgMUYwOSAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBZUE9HRUdSQU1NRU5JCisxRjgyOyAxRjgyOyAxRjhBOyAxRjBBIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JCisxRjgzOyAxRjgzOyAxRjhCOyAxRjBCIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JCisxRjg0OyAxRjg0OyAxRjhDOyAxRjBDIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGODU7IDFGODU7IDFGOEQ7IDFGMEQgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUY4NjsgMUY4NjsgMUY4RTsgMUYwRSAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUY4NzsgMUY4NzsgMUY4RjsgMUYwRiAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUY4ODsgMUY4MDsgMUY4ODsgMUYwOCAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFBST1NHRUdSQU1NRU5JCisxRjg5OyAxRjgxOyAxRjg5OyAxRjA5IDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOEE7IDFGODI7IDFGOEE7IDFGMEEgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOEI7IDFGODM7IDFGOEI7IDFGMEIgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOEM7IDFGODQ7IDFGOEM7IDFGMEMgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBQUk9TR0VHUkFNTUVOSQorMUY4RDsgMUY4NTsgMUY4RDsgMUYwRCAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRjhFOyAxRjg2OyAxRjhFOyAxRjBFIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JCisxRjhGOyAxRjg3OyAxRjhGOyAxRjBGIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JCisxRjkwOyAxRjkwOyAxRjk4OyAxRjI4IDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBZUE9HRUdSQU1NRU5JCisxRjkxOyAxRjkxOyAxRjk5OyAxRjI5IDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBZUE9HRUdSQU1NRU5JCisxRjkyOyAxRjkyOyAxRjlBOyAxRjJBIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUY5MzsgMUY5MzsgMUY5QjsgMUYyQiAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGOTQ7IDFGOTQ7IDFGOUM7IDFGMkMgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGOTU7IDFGOTU7IDFGOUQ7IDFGMkQgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGOTY7IDFGOTY7IDFGOUU7IDFGMkUgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JCisxRjk3OyAxRjk3OyAxRjlGOyAxRjJGIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUY5ODsgMUY5MDsgMUY5ODsgMUYyOCAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBQUk9TR0VHUkFNTUVOSQorMUY5OTsgMUY5MTsgMUY5OTsgMUYyOSAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBQUk9TR0VHUkFNTUVOSQorMUY5QTsgMUY5MjsgMUY5QTsgMUYyQSAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGOUI7IDFGOTM7IDFGOUI7IDFGMkIgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgVkFSSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRjlDOyAxRjk0OyAxRjlDOyAxRjJDIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRjlEOyAxRjk1OyAxRjlEOyAxRjJEIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRjlFOyAxRjk2OyAxRjlFOyAxRjJFIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JIEFORCBQUk9TR0VHUkFNTUVOSQorMUY5RjsgMUY5NzsgMUY5RjsgMUYyRiAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGQTA7IDFGQTA7IDFGQTg7IDFGNjggMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgWVBPR0VHUkFNTUVOSQorMUZBMTsgMUZBMTsgMUZBOTsgMUY2OSAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBZUE9HRUdSQU1NRU5JCisxRkEyOyAxRkEyOyAxRkFBOyAxRjZBIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JCisxRkEzOyAxRkEzOyAxRkFCOyAxRjZCIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JCisxRkE0OyAxRkE0OyAxRkFDOyAxRjZDIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGQTU7IDFGQTU7IDFGQUQ7IDFGNkQgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUZBNjsgMUZBNjsgMUZBRTsgMUY2RSAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUZBNzsgMUZBNzsgMUZBRjsgMUY2RiAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUZBODsgMUZBMDsgMUZBODsgMUY2OCAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFBST1NHRUdSQU1NRU5JCisxRkE5OyAxRkExOyAxRkE5OyAxRjY5IDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGQUE7IDFGQTI7IDFGQUE7IDFGNkEgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGQUI7IDFGQTM7IDFGQUI7IDFGNkIgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkkKKzFGQUM7IDFGQTQ7IDFGQUM7IDFGNkMgMDM5OTsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBQUk9TR0VHUkFNTUVOSQorMUZBRDsgMUZBNTsgMUZBRDsgMUY2RCAwMzk5OyAjIEdSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JCisxRkFFOyAxRkE2OyAxRkFFOyAxRjZFIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JCisxRkFGOyAxRkE3OyAxRkFGOyAxRjZGIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JCisKKzFGQjM7IDFGQjM7IDFGQkM7IDAzOTEgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBZUE9HRUdSQU1NRU5JCisxRkJDOyAxRkIzOyAxRkJDOyAwMzkxIDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQUk9TR0VHUkFNTUVOSQorMUZDMzsgMUZDMzsgMUZDQzsgMDM5NyAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBZUE9HRUdSQU1NRU5JCisxRkNDOyAxRkMzOyAxRkNDOyAwMzk3IDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFJPU0dFR1JBTU1FTkkKKzFGRjM7IDFGRjM7IDFGRkM7IDAzQTkgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBZUE9HRUdSQU1NRU5JCisxRkZDOyAxRkYzOyAxRkZDOyAwM0E5IDAzOTk7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQUk9TR0VHUkFNTUVOSQorCisjIFNvbWUgY2hhcmFjdGVycyB3aXRoIFlQT0dFR1JBTU1FTkkgYXJlIGFsc28gaGF2ZSBubyBjb3JyZXNwb25kaW5nIHRpdGxlY2FzZXMKKworMUZCMjsgMUZCMjsgMUZCQSAwMzQ1OyAxRkJBIDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGQjQ7IDFGQjQ7IDAzODYgMDM0NTsgMDM4NiAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGQzI7IDFGQzI7IDFGQ0EgMDM0NTsgMUZDQSAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSQorMUZDNDsgMUZDNDsgMDM4OSAwMzQ1OyAwMzg5IDAzOTk7ICMgR1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkkKKzFGRjI7IDFGRjI7IDFGRkEgMDM0NTsgMUZGQSAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JCisxRkY0OyAxRkY0OyAwMzhGIDAzNDU7IDAzOEYgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBPWElBIEFORCBZUE9HRUdSQU1NRU5JCisKKzFGQjc7IDFGQjc7IDAzOTEgMDM0MiAwMzQ1OyAwMzkxIDAzNDIgMDM5OTsgIyBHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUZDNzsgMUZDNzsgMDM5NyAwMzQyIDAzNDU7IDAzOTcgMDM0MiAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSQorMUZGNzsgMUZGNzsgMDNBOSAwMzQyIDAzNDU7IDAzQTkgMDM0MiAwMzk5OyAjIEdSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JCisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgQ29uZGl0aW9uYWwgbWFwcGluZ3MKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBTcGVjaWFsIGNhc2UgZm9yIGZpbmFsIGZvcm0gb2Ygc2lnbWEKKworMDNBMzsgMDNDMjsgMDNBMzsgMDNBMzsgRklOQUw7ICMgR1JFRUsgQ0FQSVRBTCBMRVRURVIgU0lHTUEKKworIyBOb3RlOiB0aGUgZm9sbG93aW5nIGNhc2VzIGZvciBub24tZmluYWwgYXJlIGFscmVhZHkgaW4gdGhlIFVuaWNvZGVEYXRhIGZpbGUuCisKKyMgMDNBMzsgMDNDMzsgMDNBMzsgMDNBMzsgIyBHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQQorIyAwM0MzOyAwM0MzOyAwM0EzOyAwM0EzOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBTSUdNQQorIyAwM0MyOyAwM0MyOyAwM0EzOyAwM0EzOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBGSU5BTCBTSUdNQQorCisjIE5vdGU6IHRoZSBmb2xsb3dpbmcgY2FzZXMgYXJlIG5vdCBpbmNsdWRlZCwgc2luY2UgdGhleSB3b3VsZCBub3JtYWxpemUgaW4gbG93ZXJjYXNpbmcKKworIyAwM0MzOyAwM0MyOyAwM0EzOyAwM0EzOyBGSU5BTDsgIyBHUkVFSyBTTUFMTCBMRVRURVIgU0lHTUEKKyMgMDNDMjsgMDNDMzsgMDNBMzsgMDNBMzsgTk9OX0ZJTkFMOyAjIEdSRUVLIFNNQUxMIExFVFRFUiBGSU5BTCBTSUdNQQorCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIExvY2FsZS1zZW5zaXRpdmUgbWFwcGluZ3MKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworIyBUdXJraXNoCisKKzAwNDk7IDAxMzE7IDAwNDk7IDAwNDk7IFRSOyAjIExBVElOIENBUElUQUwgTEVUVEVSIEkKKzAwNjk7IDAwNjk7IDAxMzA7IDAxMzA7IFRSOyAjIExBVElOIFNNQUxMIExFVFRFUiBJCisKKyMgTm90ZTogdGhlIGZvbGxvd2luZyBjYXNlcyBhcmUgYWxyZWFkeSBpbiB0aGUgVW5pY29kZURhdGEgZmlsZS4KKworIyAwMTMxOyAwMTMxOyAwMDQ5OyAwMDQ5OyBUUjsgIyBMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBJCisjIDAxMzA7IDAwNjk7IDAxMzA7IDAxMzA7IFRSOyAjIExBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBET1QgQUJPVkUKKworCmRpZmYgLS1naXQgYS9zcmMvZGF0YS91bmljb2RlL1VuaWNvZGVEYXRhLTIuMS4yLnR4dCBiL3NyYy9kYXRhL3VuaWNvZGUvVW5pY29kZURhdGEtMi4xLjIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmJjYTU5ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvZGF0YS91bmljb2RlL1VuaWNvZGVEYXRhLTIuMS4yLnR4dApAQCAtMCwwICsxLDY1OTAgQEAKKzAwMDA7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047TlVMTDs7OzsKKzAwMDE7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047U1RBUlQgT0YgSEVBRElORzs7OzsKKzAwMDI7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047U1RBUlQgT0YgVEVYVDs7OzsKKzAwMDM7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047RU5EIE9GIFRFWFQ7Ozs7CiswMDA0Ozxjb250cm9sPjtDYzswO09OOzs7OztOO0VORCBPRiBUUkFOU01JU1NJT047Ozs7CiswMDA1Ozxjb250cm9sPjtDYzswO09OOzs7OztOO0VOUVVJUlk7Ozs7CiswMDA2Ozxjb250cm9sPjtDYzswO09OOzs7OztOO0FDS05PV0xFREdFOzs7OworMDAwNzs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtCRUxMOzs7OworMDAwODs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtCQUNLU1BBQ0U7Ozs7CiswMDA5Ozxjb250cm9sPjtDYzswO1M7Ozs7O047SE9SSVpPTlRBTCBUQUJVTEFUSU9OOzs7OworMDAwQTs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtMSU5FIEZFRUQ7Ozs7CiswMDBCOzxjb250cm9sPjtDYzswO09OOzs7OztOO1ZFUlRJQ0FMIFRBQlVMQVRJT047Ozs7CiswMDBDOzxjb250cm9sPjtDYzswO09OOzs7OztOO0ZPUk0gRkVFRDs7OzsKKzAwMEQ7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Q0FSUklBR0UgUkVUVVJOOzs7OworMDAwRTs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtTSElGVCBPVVQ7Ozs7CiswMDBGOzxjb250cm9sPjtDYzswO09OOzs7OztOO1NISUZUIElOOzs7OworMDAxMDs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtEQVRBIExJTksgRVNDQVBFOzs7OworMDAxMTs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtERVZJQ0UgQ09OVFJPTCBPTkU7Ozs7CiswMDEyOzxjb250cm9sPjtDYzswO09OOzs7OztOO0RFVklDRSBDT05UUk9MIFRXTzs7OzsKKzAwMTM7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047REVWSUNFIENPTlRST0wgVEhSRUU7Ozs7CiswMDE0Ozxjb250cm9sPjtDYzswO09OOzs7OztOO0RFVklDRSBDT05UUk9MIEZPVVI7Ozs7CiswMDE1Ozxjb250cm9sPjtDYzswO09OOzs7OztOO05FR0FUSVZFIEFDS05PV0xFREdFOzs7OworMDAxNjs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtTWU5DSFJPTk9VUyBJRExFOzs7OworMDAxNzs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLOzs7OworMDAxODs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtDQU5DRUw7Ozs7CiswMDE5Ozxjb250cm9sPjtDYzswO09OOzs7OztOO0VORCBPRiBNRURJVU07Ozs7CiswMDFBOzxjb250cm9sPjtDYzswO09OOzs7OztOO1NVQlNUSVRVVEU7Ozs7CiswMDFCOzxjb250cm9sPjtDYzswO09OOzs7OztOO0VTQ0FQRTs7OzsKKzAwMUM7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047RklMRSBTRVBBUkFUT1I7Ozs7CiswMDFEOzxjb250cm9sPjtDYzswO09OOzs7OztOO0dST1VQIFNFUEFSQVRPUjs7OzsKKzAwMUU7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047UkVDT1JEIFNFUEFSQVRPUjs7OzsKKzAwMUY7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047VU5JVCBTRVBBUkFUT1I7Ozs7CiswMDIwO1NQQUNFO1pzOzA7V1M7Ozs7O047Ozs7OworMDAyMTtFWENMQU1BVElPTiBNQVJLO1BvOzA7T047Ozs7O047Ozs7OworMDAyMjtRVU9UQVRJT04gTUFSSztQbzswO09OOzs7OztOOzs7OzsKKzAwMjM7TlVNQkVSIFNJR047UG87MDtFVDs7Ozs7Tjs7Ozs7CiswMDI0O0RPTExBUiBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMDAyNTtQRVJDRU5UIFNJR047UG87MDtFVDs7Ozs7Tjs7Ozs7CiswMDI2O0FNUEVSU0FORDtQbzswO09OOzs7OztOOzs7OzsKKzAwMjc7QVBPU1RST1BIRTtQbzswO09OOzs7OztOO0FQT1NUUk9QSEUtUVVPVEU7Ozs7CiswMDI4O0xFRlQgUEFSRU5USEVTSVM7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIFBBUkVOVEhFU0lTOzs7OworMDAyOTtSSUdIVCBQQVJFTlRIRVNJUztQZTswO09OOzs7OztZO0NMT1NJTkcgUEFSRU5USEVTSVM7Ozs7CiswMDJBO0FTVEVSSVNLO1BvOzA7T047Ozs7O047Ozs7OworMDAyQjtQTFVTIFNJR047U207MDtFVDs7Ozs7Tjs7Ozs7CiswMDJDO0NPTU1BO1BvOzA7Q1M7Ozs7O047Ozs7OworMDAyRDtIWVBIRU4tTUlOVVM7UGQ7MDtFVDs7Ozs7Tjs7Ozs7CiswMDJFO0ZVTEwgU1RPUDtQbzswO0NTOzs7OztOO1BFUklPRDs7OzsKKzAwMkY7U09MSURVUztQbzswO0VTOzs7OztOO1NMQVNIOzs7OworMDAzMDtESUdJVCBaRVJPO05kOzA7RU47OzA7MDswO047Ozs7OworMDAzMTtESUdJVCBPTkU7TmQ7MDtFTjs7MTsxOzE7Tjs7Ozs7CiswMDMyO0RJR0lUIFRXTztOZDswO0VOOzsyOzI7MjtOOzs7OzsKKzAwMzM7RElHSVQgVEhSRUU7TmQ7MDtFTjs7MzszOzM7Tjs7Ozs7CiswMDM0O0RJR0lUIEZPVVI7TmQ7MDtFTjs7NDs0OzQ7Tjs7Ozs7CiswMDM1O0RJR0lUIEZJVkU7TmQ7MDtFTjs7NTs1OzU7Tjs7Ozs7CiswMDM2O0RJR0lUIFNJWDtOZDswO0VOOzs2OzY7NjtOOzs7OzsKKzAwMzc7RElHSVQgU0VWRU47TmQ7MDtFTjs7Nzs3Ozc7Tjs7Ozs7CiswMDM4O0RJR0lUIEVJR0hUO05kOzA7RU47Ozg7ODs4O047Ozs7OworMDAzOTtESUdJVCBOSU5FO05kOzA7RU47Ozk7OTs5O047Ozs7OworMDAzQTtDT0xPTjtQbzswO0NTOzs7OztOOzs7OzsKKzAwM0I7U0VNSUNPTE9OO1BvOzA7T047Ozs7O047Ozs7OworMDAzQztMRVNTLVRIQU4gU0lHTjtTbTswO09OOzs7OztZOzs7OzsKKzAwM0Q7RVFVQUxTIFNJR047U207MDtPTjs7Ozs7Tjs7Ozs7CiswMDNFO0dSRUFURVItVEhBTiBTSUdOO1NtOzA7T047Ozs7O1k7Ozs7OworMDAzRjtRVUVTVElPTiBNQVJLO1BvOzA7T047Ozs7O047Ozs7OworMDA0MDtDT01NRVJDSUFMIEFUO1BvOzA7T047Ozs7O047Ozs7OworMDA0MTtMQVRJTiBDQVBJVEFMIExFVFRFUiBBO0x1OzA7TDs7Ozs7Tjs7OzswMDYxOworMDA0MjtMQVRJTiBDQVBJVEFMIExFVFRFUiBCO0x1OzA7TDs7Ozs7Tjs7OzswMDYyOworMDA0MztMQVRJTiBDQVBJVEFMIExFVFRFUiBDO0x1OzA7TDs7Ozs7Tjs7OzswMDYzOworMDA0NDtMQVRJTiBDQVBJVEFMIExFVFRFUiBEO0x1OzA7TDs7Ozs7Tjs7OzswMDY0OworMDA0NTtMQVRJTiBDQVBJVEFMIExFVFRFUiBFO0x1OzA7TDs7Ozs7Tjs7OzswMDY1OworMDA0NjtMQVRJTiBDQVBJVEFMIExFVFRFUiBGO0x1OzA7TDs7Ozs7Tjs7OzswMDY2OworMDA0NztMQVRJTiBDQVBJVEFMIExFVFRFUiBHO0x1OzA7TDs7Ozs7Tjs7OzswMDY3OworMDA0ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBIO0x1OzA7TDs7Ozs7Tjs7OzswMDY4OworMDA0OTtMQVRJTiBDQVBJVEFMIExFVFRFUiBJO0x1OzA7TDs7Ozs7Tjs7OzswMDY5OworMDA0QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBKO0x1OzA7TDs7Ozs7Tjs7OzswMDZBOworMDA0QjtMQVRJTiBDQVBJVEFMIExFVFRFUiBLO0x1OzA7TDs7Ozs7Tjs7OzswMDZCOworMDA0QztMQVRJTiBDQVBJVEFMIExFVFRFUiBMO0x1OzA7TDs7Ozs7Tjs7OzswMDZDOworMDA0RDtMQVRJTiBDQVBJVEFMIExFVFRFUiBNO0x1OzA7TDs7Ozs7Tjs7OzswMDZEOworMDA0RTtMQVRJTiBDQVBJVEFMIExFVFRFUiBOO0x1OzA7TDs7Ozs7Tjs7OzswMDZFOworMDA0RjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPO0x1OzA7TDs7Ozs7Tjs7OzswMDZGOworMDA1MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBQO0x1OzA7TDs7Ozs7Tjs7OzswMDcwOworMDA1MTtMQVRJTiBDQVBJVEFMIExFVFRFUiBRO0x1OzA7TDs7Ozs7Tjs7OzswMDcxOworMDA1MjtMQVRJTiBDQVBJVEFMIExFVFRFUiBSO0x1OzA7TDs7Ozs7Tjs7OzswMDcyOworMDA1MztMQVRJTiBDQVBJVEFMIExFVFRFUiBTO0x1OzA7TDs7Ozs7Tjs7OzswMDczOworMDA1NDtMQVRJTiBDQVBJVEFMIExFVFRFUiBUO0x1OzA7TDs7Ozs7Tjs7OzswMDc0OworMDA1NTtMQVRJTiBDQVBJVEFMIExFVFRFUiBVO0x1OzA7TDs7Ozs7Tjs7OzswMDc1OworMDA1NjtMQVRJTiBDQVBJVEFMIExFVFRFUiBWO0x1OzA7TDs7Ozs7Tjs7OzswMDc2OworMDA1NztMQVRJTiBDQVBJVEFMIExFVFRFUiBXO0x1OzA7TDs7Ozs7Tjs7OzswMDc3OworMDA1ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBYO0x1OzA7TDs7Ozs7Tjs7OzswMDc4OworMDA1OTtMQVRJTiBDQVBJVEFMIExFVFRFUiBZO0x1OzA7TDs7Ozs7Tjs7OzswMDc5OworMDA1QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBaO0x1OzA7TDs7Ozs7Tjs7OzswMDdBOworMDA1QjtMRUZUIFNRVUFSRSBCUkFDS0VUO1BzOzA7T047Ozs7O1k7T1BFTklORyBTUVVBUkUgQlJBQ0tFVDs7OzsKKzAwNUM7UkVWRVJTRSBTT0xJRFVTO1BvOzA7T047Ozs7O047QkFDS1NMQVNIOzs7OworMDA1RDtSSUdIVCBTUVVBUkUgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgU1FVQVJFIEJSQUNLRVQ7Ozs7CiswMDVFO0NJUkNVTUZMRVggQUNDRU5UO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzAyOzs7O047U1BBQ0lORyBDSVJDVU1GTEVYOzs7OworMDA1RjtMT1cgTElORTtQYzswO09OOzxjb21wYXQ+IDAwMjAgMDMzMjs7OztOO1NQQUNJTkcgVU5ERVJTQ09SRTs7OzsKKzAwNjA7R1JBVkUgQUNDRU5UO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzAwOzs7O047U1BBQ0lORyBHUkFWRTs7OzsKKzAwNjE7TEFUSU4gU01BTEwgTEVUVEVSIEE7TGw7MDtMOzs7OztOOzs7MDA0MTs7MDA0MQorMDA2MjtMQVRJTiBTTUFMTCBMRVRURVIgQjtMbDswO0w7Ozs7O047OzswMDQyOzswMDQyCiswMDYzO0xBVElOIFNNQUxMIExFVFRFUiBDO0xsOzA7TDs7Ozs7Tjs7OzAwNDM7OzAwNDMKKzAwNjQ7TEFUSU4gU01BTEwgTEVUVEVSIEQ7TGw7MDtMOzs7OztOOzs7MDA0NDs7MDA0NAorMDA2NTtMQVRJTiBTTUFMTCBMRVRURVIgRTtMbDswO0w7Ozs7O047OzswMDQ1OzswMDQ1CiswMDY2O0xBVElOIFNNQUxMIExFVFRFUiBGO0xsOzA7TDs7Ozs7Tjs7OzAwNDY7OzAwNDYKKzAwNjc7TEFUSU4gU01BTEwgTEVUVEVSIEc7TGw7MDtMOzs7OztOOzs7MDA0Nzs7MDA0NworMDA2ODtMQVRJTiBTTUFMTCBMRVRURVIgSDtMbDswO0w7Ozs7O047OzswMDQ4OzswMDQ4CiswMDY5O0xBVElOIFNNQUxMIExFVFRFUiBJO0xsOzA7TDs7Ozs7Tjs7OzAwNDk7OzAwNDkKKzAwNkE7TEFUSU4gU01BTEwgTEVUVEVSIEo7TGw7MDtMOzs7OztOOzs7MDA0QTs7MDA0QQorMDA2QjtMQVRJTiBTTUFMTCBMRVRURVIgSztMbDswO0w7Ozs7O047OzswMDRCOzswMDRCCiswMDZDO0xBVElOIFNNQUxMIExFVFRFUiBMO0xsOzA7TDs7Ozs7Tjs7OzAwNEM7OzAwNEMKKzAwNkQ7TEFUSU4gU01BTEwgTEVUVEVSIE07TGw7MDtMOzs7OztOOzs7MDA0RDs7MDA0RAorMDA2RTtMQVRJTiBTTUFMTCBMRVRURVIgTjtMbDswO0w7Ozs7O047OzswMDRFOzswMDRFCiswMDZGO0xBVElOIFNNQUxMIExFVFRFUiBPO0xsOzA7TDs7Ozs7Tjs7OzAwNEY7OzAwNEYKKzAwNzA7TEFUSU4gU01BTEwgTEVUVEVSIFA7TGw7MDtMOzs7OztOOzs7MDA1MDs7MDA1MAorMDA3MTtMQVRJTiBTTUFMTCBMRVRURVIgUTtMbDswO0w7Ozs7O047OzswMDUxOzswMDUxCiswMDcyO0xBVElOIFNNQUxMIExFVFRFUiBSO0xsOzA7TDs7Ozs7Tjs7OzAwNTI7OzAwNTIKKzAwNzM7TEFUSU4gU01BTEwgTEVUVEVSIFM7TGw7MDtMOzs7OztOOzs7MDA1Mzs7MDA1MworMDA3NDtMQVRJTiBTTUFMTCBMRVRURVIgVDtMbDswO0w7Ozs7O047OzswMDU0OzswMDU0CiswMDc1O0xBVElOIFNNQUxMIExFVFRFUiBVO0xsOzA7TDs7Ozs7Tjs7OzAwNTU7OzAwNTUKKzAwNzY7TEFUSU4gU01BTEwgTEVUVEVSIFY7TGw7MDtMOzs7OztOOzs7MDA1Njs7MDA1NgorMDA3NztMQVRJTiBTTUFMTCBMRVRURVIgVztMbDswO0w7Ozs7O047OzswMDU3OzswMDU3CiswMDc4O0xBVElOIFNNQUxMIExFVFRFUiBYO0xsOzA7TDs7Ozs7Tjs7OzAwNTg7OzAwNTgKKzAwNzk7TEFUSU4gU01BTEwgTEVUVEVSIFk7TGw7MDtMOzs7OztOOzs7MDA1OTs7MDA1OQorMDA3QTtMQVRJTiBTTUFMTCBMRVRURVIgWjtMbDswO0w7Ozs7O047OzswMDVBOzswMDVBCiswMDdCO0xFRlQgQ1VSTFkgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgQ1VSTFkgQlJBQ0tFVDs7OzsKKzAwN0M7VkVSVElDQUwgTElORTtTbTswO09OOzs7OztOO1ZFUlRJQ0FMIEJBUjs7OzsKKzAwN0Q7UklHSFQgQ1VSTFkgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgQ1VSTFkgQlJBQ0tFVDs7OzsKKzAwN0U7VElMREU7U207MDtPTjs7Ozs7Tjs7Ozs7CiswMDdGOzxjb250cm9sPjtDYzswO09OOzs7OztOO0RFTEVURTs7OzsKKzAwODA7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA4MTs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDgyOzxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwODM7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA4NDs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDg1Ozxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwODY7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA4Nzs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDg4Ozxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwODk7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA4QTs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDhCOzxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOEM7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA4RDs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDhFOzxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOEY7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA5MDs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDkxOzxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOTI7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA5Mzs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDk0Ozxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOTU7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA5Njs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDk3Ozxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOTg7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA5OTs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDlBOzxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOUI7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA5Qzs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDlEOzxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOUU7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA5Rjs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMEEwO05PLUJSRUFLIFNQQUNFO1pzOzA7V1M7PG5vQnJlYWs+IDAwMjA7Ozs7TjtOT04tQlJFQUtJTkcgU1BBQ0U7Ozs7CiswMEExO0lOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMEEyO0NFTlQgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzAwQTM7UE9VTkQgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzAwQTQ7Q1VSUkVOQ1kgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzAwQTU7WUVOIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CiswMEE2O0JST0tFTiBCQVI7U287MDtPTjs7Ozs7TjtCUk9LRU4gVkVSVElDQUwgQkFSOzs7OworMDBBNztTRUNUSU9OIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CiswMEE4O0RJQUVSRVNJUztTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwODs7OztOO1NQQUNJTkcgRElBRVJFU0lTOzs7OworMDBBOTtDT1BZUklHSFQgU0lHTjtTbzswO09OOzs7OztOOzs7OzsKKzAwQUE7RkVNSU5JTkUgT1JESU5BTCBJTkRJQ0FUT1I7TGw7MDtPTjs8c3VwZXI+IDAwNjE7Ozs7Tjs7Ozs7CiswMEFCO0xFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLO1BzOzA7T047Ozs7O047TEVGVCBQT0lOVElORyBHVUlMTEVNRVQ7Ozs7CiswMEFDO05PVCBTSUdOO1NtOzA7T047Ozs7O047Ozs7OworMDBBRDtTT0ZUIEhZUEhFTjtQZDswO09OOzs7OztOOzs7OzsKKzAwQUU7UkVHSVNURVJFRCBTSUdOO1NvOzA7T047Ozs7O047UkVHSVNURVJFRCBUUkFERSBNQVJLIFNJR047Ozs7CiswMEFGO01BQ1JPTjtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwNDs7OztOO1NQQUNJTkcgTUFDUk9OOzs7OworMDBCMDtERUdSRUUgU0lHTjtTbzswO0VUOzs7OztOOzs7OzsKKzAwQjE7UExVUy1NSU5VUyBTSUdOO1NtOzA7RVQ7Ozs7O047UExVUy1PUi1NSU5VUyBTSUdOOzs7OworMDBCMjtTVVBFUlNDUklQVCBUV087Tm87MDtFTjs8c3VwZXI+IDAwMzI7MjsyOzI7TjtTVVBFUlNDUklQVCBESUdJVCBUV087Ozs7CiswMEIzO1NVUEVSU0NSSVBUIFRIUkVFO05vOzA7RU47PHN1cGVyPiAwMDMzOzM7MzszO047U1VQRVJTQ1JJUFQgRElHSVQgVEhSRUU7Ozs7CiswMEI0O0FDVVRFIEFDQ0VOVDtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwMTs7OztOO1NQQUNJTkcgQUNVVEU7Ozs7CiswMEI1O01JQ1JPIFNJR047TGw7MDtPTjs8Y29tcGF0PiAwM0JDOzs7O047Ozs7OworMDBCNjtQSUxDUk9XIFNJR047U287MDtPTjs7Ozs7TjtQQVJBR1JBUEggU0lHTjs7OzsKKzAwQjc7TUlERExFIERPVDtQbzswO09OOzs7OztOOzs7OzsKKzAwQjg7Q0VESUxMQTtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMyNzs7OztOO1NQQUNJTkcgQ0VESUxMQTs7OzsKKzAwQjk7U1VQRVJTQ1JJUFQgT05FO05vOzA7RU47PHN1cGVyPiAwMDMxOzE7MTsxO047U1VQRVJTQ1JJUFQgRElHSVQgT05FOzs7OworMDBCQTtNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1I7TGw7MDtPTjs8c3VwZXI+IDAwNkY7Ozs7Tjs7Ozs7CiswMEJCO1JJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSztQZTswO09OOzs7OztOO1JJR0hUIFBPSU5USU5HIEdVSUxMRU1FVDs7OzsKKzAwQkM7VlVMR0FSIEZSQUNUSU9OIE9ORSBRVUFSVEVSO05vOzA7T047PGZyYWN0aW9uPiAwMDMxIDIwNDQgMDAzNDs7OzEvNDtOO0ZSQUNUSU9OIE9ORSBRVUFSVEVSOzs7OworMDBCRDtWVUxHQVIgRlJBQ1RJT04gT05FIEhBTEY7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzEgMjA0NCAwMDMyOzs7MS8yO047RlJBQ1RJT04gT05FIEhBTEY7Ozs7CiswMEJFO1ZVTEdBUiBGUkFDVElPTiBUSFJFRSBRVUFSVEVSUztObzswO09OOzxmcmFjdGlvbj4gMDAzMyAyMDQ0IDAwMzQ7OzszLzQ7TjtGUkFDVElPTiBUSFJFRSBRVUFSVEVSUzs7OzsKKzAwQkY7SU5WRVJURUQgUVVFU1RJT04gTUFSSztQbzswO09OOzs7OztOOzs7OzsKKzAwQzA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEdSQVZFO0x1OzA7TDswMDQxIDAzMDA7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIEdSQVZFOzs7MDBFMDsKKzAwQzE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEFDVVRFO0x1OzA7TDswMDQxIDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIEFDVVRFOzs7MDBFMTsKKzAwQzI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNDEgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgQ0lSQ1VNRkxFWDs7OzAwRTI7CiswMEMzO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBUSUxERTtMdTswO0w7MDA0MSAwMzAzOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBUSUxERTs7OzAwRTM7CiswMEM0O0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVM7THU7MDtMOzAwNDEgMDMwODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgRElBRVJFU0lTOzs7MDBFNDsKKzAwQzU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkU7THU7MDtMOzAwNDEgMDMwQTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgUklORzs7OzAwRTU7CiswMEM2O0xBVElOIENBUElUQUwgTEVUVEVSIEFFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIEU7OzswMEU2OworMDBDNztMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQTtMdTswO0w7MDA0MyAwMzI3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBDRURJTExBOzs7MDBFNzsKKzAwQzg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFO0x1OzA7TDswMDQ1IDAzMDA7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIEdSQVZFOzs7MDBFODsKKzAwQzk7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFO0x1OzA7TDswMDQ1IDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIEFDVVRFOzs7MDBFOTsKKzAwQ0E7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNDUgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEUgQ0lSQ1VNRkxFWDs7OzAwRUE7CiswMENCO0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVM7THU7MDtMOzAwNDUgMDMwODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEUgRElBRVJFU0lTOzs7MDBFQjsKKzAwQ0M7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFO0x1OzA7TDswMDQ5IDAzMDA7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIEdSQVZFOzs7MDBFQzsKKzAwQ0Q7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFO0x1OzA7TDswMDQ5IDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIEFDVVRFOzs7MDBFRDsKKzAwQ0U7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNDkgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEkgQ0lSQ1VNRkxFWDs7OzAwRUU7CiswMENGO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVM7THU7MDtMOzAwNDkgMDMwODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEkgRElBRVJFU0lTOzs7MDBFRjsKKzAwRDA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRVRIO0x1OzA7TDs7Ozs7Tjs7SWNlbGFuZGljOzswMEYwOworMDBEMTtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREU7THU7MDtMOzAwNEUgMDMwMzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE4gVElMREU7OzswMEYxOworMDBEMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkU7THU7MDtMOzAwNEYgMDMwMDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gR1JBVkU7OzswMEYyOworMDBEMztMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEU7THU7MDtMOzAwNEYgMDMwMTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gQUNVVEU7OzswMEYzOworMDBENDtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA0RiAwMzAyOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBDSVJDVU1GTEVYOzs7MDBGNDsKKzAwRDU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFO0x1OzA7TDswMDRGIDAzMDM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFRJTERFOzs7MDBGNTsKKzAwRDY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUztMdTswO0w7MDA0RiAwMzA4Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBESUFFUkVTSVM7OzswMEY2OworMDBENztNVUxUSVBMSUNBVElPTiBTSUdOO1NtOzA7T047Ozs7O047Ozs7OworMDBEODtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggU1RST0tFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFNMQVNIOzs7MDBGODsKKzAwRDk7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFO0x1OzA7TDswMDU1IDAzMDA7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIEdSQVZFOzs7MDBGOTsKKzAwREE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFO0x1OzA7TDswMDU1IDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIEFDVVRFOzs7MDBGQTsKKzAwREI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNTUgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgQ0lSQ1VNRkxFWDs7OzAwRkI7CiswMERDO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVM7THU7MDtMOzAwNTUgMDMwODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgRElBRVJFU0lTOzs7MDBGQzsKKzAwREQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFO0x1OzA7TDswMDU5IDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIEFDVVRFOzs7MDBGRDsKKzAwREU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVEhPUk47THU7MDtMOzs7OztOOztJY2VsYW5kaWM7OzAwRkU7CiswMERGO0xBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTO0xsOzA7TDs7Ozs7Tjs7R2VybWFuOzs7CiswMEUwO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkU7TGw7MDtMOzAwNjEgMDMwMDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIEdSQVZFOzswMEMwOzswMEMwCiswMEUxO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEU7TGw7MDtMOzAwNjEgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIEFDVVRFOzswMEMxOzswMEMxCiswMEUyO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA2MSAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgQ0lSQ1VNRkxFWDs7MDBDMjs7MDBDMgorMDBFMztMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFRJTERFO0xsOzA7TDswMDYxIDAzMDM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBUSUxERTs7MDBDMzs7MDBDMworMDBFNDtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA2MSAwMzA4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgRElBRVJFU0lTOzswMEM0OzswMEM0CiswMEU1O0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRTtMbDswO0w7MDA2MSAwMzBBOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgUklORzs7MDBDNTs7MDBDNQorMDBFNjtMQVRJTiBTTUFMTCBMRVRURVIgQUU7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIEU7OzAwQzY7OzAwQzYKKzAwRTc7TEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBO0xsOzA7TDswMDYzIDAzMjc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQyBDRURJTExBOzswMEM3OzswMEM3CiswMEU4O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkU7TGw7MDtMOzAwNjUgMDMwMDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFIEdSQVZFOzswMEM4OzswMEM4CiswMEU5O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEU7TGw7MDtMOzAwNjUgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFIEFDVVRFOzswMEM5OzswMEM5CiswMEVBO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA2NSAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEUgQ0lSQ1VNRkxFWDs7MDBDQTs7MDBDQQorMDBFQjtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA2NSAwMzA4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEUgRElBRVJFU0lTOzswMENCOzswMENCCiswMEVDO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkU7TGw7MDtMOzAwNjkgMDMwMDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIEdSQVZFOzswMENDOzswMENDCiswMEVEO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEU7TGw7MDtMOzAwNjkgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIEFDVVRFOzswMENEOzswMENECiswMEVFO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA2OSAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEkgQ0lSQ1VNRkxFWDs7MDBDRTs7MDBDRQorMDBFRjtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA2OSAwMzA4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEkgRElBRVJFU0lTOzswMENGOzswMENGCiswMEYwO0xBVElOIFNNQUxMIExFVFRFUiBFVEg7TGw7MDtMOzs7OztOOztJY2VsYW5kaWM7MDBEMDs7MDBEMAorMDBGMTtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFO0xsOzA7TDswMDZFIDAzMDM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTiBUSUxERTs7MDBEMTs7MDBEMQorMDBGMjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFO0xsOzA7TDswMDZGIDAzMDA7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBHUkFWRTs7MDBEMjs7MDBEMgorMDBGMztMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFO0xsOzA7TDswMDZGIDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBBQ1VURTs7MDBEMzs7MDBEMworMDBGNDtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNkYgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIENJUkNVTUZMRVg7OzAwRDQ7OzAwRDQKKzAwRjU7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERTtMbDswO0w7MDA2RiAwMzAzOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gVElMREU7OzAwRDU7OzAwRDUKKzAwRjY7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVM7TGw7MDtMOzAwNkYgMDMwODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIERJQUVSRVNJUzs7MDBENjs7MDBENgorMDBGNztESVZJU0lPTiBTSUdOO1NtOzA7T047Ozs7O047Ozs7OworMDBGODtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gU0xBU0g7OzAwRDg7OzAwRDgKKzAwRjk7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRTtMbDswO0w7MDA3NSAwMzAwOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgR1JBVkU7OzAwRDk7OzAwRDkKKzAwRkE7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURTtMbDswO0w7MDA3NSAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgQUNVVEU7OzAwREE7OzAwREEKKzAwRkI7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDc1IDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBDSVJDVU1GTEVYOzswMERCOzswMERCCiswMEZDO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTO0xsOzA7TDswMDc1IDAzMDg7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBESUFFUkVTSVM7OzAwREM7OzAwREMKKzAwRkQ7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURTtMbDswO0w7MDA3OSAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFkgQUNVVEU7OzAwREQ7OzAwREQKKzAwRkU7TEFUSU4gU01BTEwgTEVUVEVSIFRIT1JOO0xsOzA7TDs7Ozs7Tjs7SWNlbGFuZGljOzAwREU7OzAwREUKKzAwRkY7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzAwNzkgMDMwODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBZIERJQUVSRVNJUzs7MDE3ODs7MDE3OAorMDEwMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggTUFDUk9OO0x1OzA7TDswMDQxIDAzMDQ7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIE1BQ1JPTjs7OzAxMDE7CiswMTAxO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggTUFDUk9OO0xsOzA7TDswMDYxIDAzMDQ7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBNQUNST047OzAxMDA7OzAxMDAKKzAxMDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFO0x1OzA7TDswMDQxIDAzMDY7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIEJSRVZFOzs7MDEwMzsKKzAxMDM7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRTtMbDswO0w7MDA2MSAwMzA2Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgQlJFVkU7OzAxMDI7OzAxMDIKKzAxMDQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIE9HT05FSztMdTswO0w7MDA0MSAwMzI4Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBPR09ORUs7OzswMTA1OworMDEwNTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIE9HT05FSztMbDswO0w7MDA2MSAwMzI4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgT0dPTkVLOzswMTA0OzswMTA0CiswMTA2O0xBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBBQ1VURTtMdTswO0w7MDA0MyAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBBQ1VURTs7OzAxMDc7CiswMTA3O0xBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQUNVVEU7TGw7MDtMOzAwNjMgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDIEFDVVRFOzswMTA2OzswMTA2CiswMTA4O0xBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDQzIDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIENJUkNVTUZMRVg7OzswMTA5OworMDEwOTtMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNjMgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDIENJUkNVTUZMRVg7OzAxMDg7OzAxMDgKKzAxMEE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0MyAwMzA3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBET1Q7OzswMTBCOworMDEwQjtMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2MyAwMzA3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEMgRE9UOzswMTBBOzswMTBBCiswMTBDO0xBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDQVJPTjtMdTswO0w7MDA0MyAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBIQUNFSzs7OzAxMEQ7CiswMTBEO0xBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0FST047TGw7MDtMOzAwNjMgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDIEhBQ0VLOzswMTBDOzswMTBDCiswMTBFO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBDQVJPTjtMdTswO0w7MDA0NCAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBIQUNFSzs7OzAxMEY7CiswMTBGO0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggQ0FST047TGw7MDtMOzAwNjQgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIEhBQ0VLOzswMTBFOzswMTBFCiswMTEwO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBTVFJPS0U7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEQgQkFSOzs7MDExMTsKKzAxMTE7TEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIEJBUjs7MDExMDs7MDExMAorMDExMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggTUFDUk9OO0x1OzA7TDswMDQ1IDAzMDQ7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIE1BQ1JPTjs7OzAxMTM7CiswMTEzO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggTUFDUk9OO0xsOzA7TDswMDY1IDAzMDQ7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRSBNQUNST047OzAxMTI7OzAxMTIKKzAxMTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEJSRVZFO0x1OzA7TDswMDQ1IDAzMDY7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIEJSRVZFOzs7MDExNTsKKzAxMTU7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBCUkVWRTtMbDswO0w7MDA2NSAwMzA2Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEUgQlJFVkU7OzAxMTQ7OzAxMTQKKzAxMTY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0NSAwMzA3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBET1Q7OzswMTE3OworMDExNztMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2NSAwMzA3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEUgRE9UOzswMTE2OzswMTE2CiswMTE4O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBPR09ORUs7THU7MDtMOzAwNDUgMDMyODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEUgT0dPTkVLOzs7MDExOTsKKzAxMTk7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBPR09ORUs7TGw7MDtMOzAwNjUgMDMyODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFIE9HT05FSzs7MDExODs7MDExOAorMDExQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0FST047THU7MDtMOzAwNDUgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEUgSEFDRUs7OzswMTFCOworMDExQjtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENBUk9OO0xsOzA7TDswMDY1IDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRSBIQUNFSzs7MDExQTs7MDExQQorMDExQztMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA0NyAwMzAyOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBDSVJDVU1GTEVYOzs7MDExRDsKKzAxMUQ7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDY3IDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRyBDSVJDVU1GTEVYOzswMTFDOzswMTFDCiswMTFFO0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBCUkVWRTtMdTswO0w7MDA0NyAwMzA2Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBCUkVWRTs7OzAxMUY7CiswMTFGO0xBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQlJFVkU7TGw7MDtMOzAwNjcgMDMwNjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBHIEJSRVZFOzswMTFFOzswMTFFCiswMTIwO0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNDcgMDMwNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEcgRE9UOzs7MDEyMTsKKzAxMjE7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNjcgMDMwNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBHIERPVDs7MDEyMDs7MDEyMAorMDEyMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQ0VESUxMQTtMdTswO0w7MDA0NyAwMzI3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBDRURJTExBOzs7MDEyMzsKKzAxMjM7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBDRURJTExBO0xsOzA7TDswMDY3IDAzMjc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRyBDRURJTExBOzswMTIyOzswMTIyCiswMTI0O0xBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDQ4IDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIENJUkNVTUZMRVg7OzswMTI1OworMDEyNTtMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNjggMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBIIENJUkNVTUZMRVg7OzAxMjQ7OzAxMjQKKzAxMjY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBCQVI7OzswMTI3OworMDEyNztMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEggQkFSOzswMTI2OzswMTI2CiswMTI4O0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBUSUxERTtMdTswO0w7MDA0OSAwMzAzOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBUSUxERTs7OzAxMjk7CiswMTI5O0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggVElMREU7TGw7MDtMOzAwNjkgMDMwMzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIFRJTERFOzswMTI4OzswMTI4CiswMTJBO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST047THU7MDtMOzAwNDkgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEkgTUFDUk9OOzs7MDEyQjsKKzAxMkI7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBNQUNST047TGw7MDtMOzAwNjkgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIE1BQ1JPTjs7MDEyQTs7MDEyQQorMDEyQztMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQlJFVkU7THU7MDtMOzAwNDkgMDMwNjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEkgQlJFVkU7OzswMTJEOworMDEyRDtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEJSRVZFO0xsOzA7TDswMDY5IDAzMDY7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSSBCUkVWRTs7MDEyQzs7MDEyQworMDEyRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggT0dPTkVLO0x1OzA7TDswMDQ5IDAzMjg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIE9HT05FSzs7OzAxMkY7CiswMTJGO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggT0dPTkVLO0xsOzA7TDswMDY5IDAzMjg7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSSBPR09ORUs7OzAxMkU7OzAxMkUKKzAxMzA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0OSAwMzA3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBET1Q7OzswMDY5OworMDEzMTtMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBJO0xsOzA7TDs7Ozs7Tjs7OzAwNDk7OzAwNDkKKzAxMzI7TEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBJSjtMdTswO0w7PGNvbXBhdD4gMDA0OSAwMDRBOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBKOzs7MDEzMzsKKzAxMzM7TEFUSU4gU01BTEwgTElHQVRVUkUgSUo7TGw7MDtMOzxjb21wYXQ+IDAwNjkgMDA2QTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIEo7OzAxMzI7OzAxMzIKKzAxMzQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSiBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNEEgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEogQ0lSQ1VNRkxFWDs7OzAxMzU7CiswMTM1O0xBVElOIFNNQUxMIExFVFRFUiBKIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA2QSAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEogQ0lSQ1VNRkxFWDs7MDEzNDs7MDEzNAorMDEzNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggQ0VESUxMQTtMdTswO0w7MDA0QiAwMzI3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBDRURJTExBOzs7MDEzNzsKKzAxMzc7TEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBDRURJTExBO0xsOzA7TDswMDZCIDAzMjc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSyBDRURJTExBOzswMTM2OzswMTM2CiswMTM4O0xBVElOIFNNQUxMIExFVFRFUiBLUkE7TGw7MDtMOzs7OztOOztHcmVlbmxhbmRpYzs7OworMDEzOTtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQUNVVEU7THU7MDtMOzAwNEMgMDMwMTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEwgQUNVVEU7OzswMTNBOworMDEzQTtMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIEFDVVRFO0xsOzA7TDswMDZDIDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTCBBQ1VURTs7MDEzOTs7MDEzOQorMDEzQjtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0VESUxMQTtMdTswO0w7MDA0QyAwMzI3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBDRURJTExBOzs7MDEzQzsKKzAxM0M7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDRURJTExBO0xsOzA7TDswMDZDIDAzMjc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTCBDRURJTExBOzswMTNCOzswMTNCCiswMTNEO0xBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDQVJPTjtMdTswO0w7MDA0QyAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBIQUNFSzs7OzAxM0U7CiswMTNFO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0FST047TGw7MDtMOzAwNkMgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBMIEhBQ0VLOzswMTNEOzswMTNECiswMTNGO0xBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBNSURETEUgRE9UO0x1OzA7TDs8Y29tcGF0PiAwMDRDIDAwQjc7Ozs7Tjs7OzswMTQwOworMDE0MDtMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIE1JRERMRSBET1Q7TGw7MDtMOzxjb21wYXQ+IDAwNkMgMDBCNzs7OztOOzs7MDEzRjs7MDEzRgorMDE0MTtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggU1RST0tFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFNMQVNIOzs7MDE0MjsKKzAxNDI7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBMIFNMQVNIOzswMTQxOzswMTQxCiswMTQzO0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBBQ1VURTtMdTswO0w7MDA0RSAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBBQ1VURTs7OzAxNDQ7CiswMTQ0O0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQUNVVEU7TGw7MDtMOzAwNkUgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBOIEFDVVRFOzswMTQzOzswMTQzCiswMTQ1O0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDRURJTExBO0x1OzA7TDswMDRFIDAzMjc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIENFRElMTEE7OzswMTQ2OworMDE0NjtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENFRElMTEE7TGw7MDtMOzAwNkUgMDMyNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBOIENFRElMTEE7OzAxNDU7OzAxNDUKKzAxNDc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENBUk9OO0x1OzA7TDswMDRFIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIEhBQ0VLOzs7MDE0ODsKKzAxNDg7TEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBDQVJPTjtMbDswO0w7MDA2RSAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE4gSEFDRUs7OzAxNDc7OzAxNDcKKzAxNDk7TEFUSU4gU01BTEwgTEVUVEVSIE4gUFJFQ0VERUQgQlkgQVBPU1RST1BIRTtMbDswO0w7PGNvbXBhdD4gMDJCQyAwMDZFOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEFQT1NUUk9QSEUgTjs7OzsKKzAxNEE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRU5HO0x1OzA7TDs7Ozs7Tjs7U2FtaTs7MDE0QjsKKzAxNEI7TEFUSU4gU01BTEwgTEVUVEVSIEVORztMbDswO0w7Ozs7O047O1NhbWk7MDE0QTs7MDE0QQorMDE0QztMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTUFDUk9OO0x1OzA7TDswMDRGIDAzMDQ7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIE1BQ1JPTjs7OzAxNEQ7CiswMTREO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggTUFDUk9OO0xsOzA7TDswMDZGIDAzMDQ7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBNQUNST047OzAxNEM7OzAxNEMKKzAxNEU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEJSRVZFO0x1OzA7TDswMDRGIDAzMDY7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIEJSRVZFOzs7MDE0RjsKKzAxNEY7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBCUkVWRTtMbDswO0w7MDA2RiAwMzA2Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gQlJFVkU7OzAxNEU7OzAxNEUKKzAxNTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVUJMRSBBQ1VURTtMdTswO0w7MDA0RiAwMzBCOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBET1VCTEUgQUNVVEU7OzswMTUxOworMDE1MTtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERPVUJMRSBBQ1VURTtMbDswO0w7MDA2RiAwMzBCOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gRE9VQkxFIEFDVVRFOzswMTUwOzswMTUwCiswMTUyO0xBVElOIENBUElUQUwgTElHQVRVUkUgT0U7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gRTs7OzAxNTM7CiswMTUzO0xBVElOIFNNQUxMIExJR0FUVVJFIE9FO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBFOzswMTUyOzswMTUyCiswMTU0O0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBBQ1VURTtMdTswO0w7MDA1MiAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBBQ1VURTs7OzAxNTU7CiswMTU1O0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggQUNVVEU7TGw7MDtMOzAwNzIgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBSIEFDVVRFOzswMTU0OzswMTU0CiswMTU2O0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBDRURJTExBO0x1OzA7TDswMDUyIDAzMjc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIENFRElMTEE7OzswMTU3OworMDE1NztMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENFRElMTEE7TGw7MDtMOzAwNzIgMDMyNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBSIENFRElMTEE7OzAxNTY7OzAxNTYKKzAxNTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIENBUk9OO0x1OzA7TDswMDUyIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIEhBQ0VLOzs7MDE1OTsKKzAxNTk7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBDQVJPTjtMbDswO0w7MDA3MiAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFIgSEFDRUs7OzAxNTg7OzAxNTgKKzAxNUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIEFDVVRFO0x1OzA7TDswMDUzIDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIEFDVVRFOzs7MDE1QjsKKzAxNUI7TEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBBQ1VURTtMbDswO0w7MDA3MyAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFMgQUNVVEU7OzAxNUE7OzAxNUEKKzAxNUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNTMgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFMgQ0lSQ1VNRkxFWDs7OzAxNUQ7CiswMTVEO0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA3MyAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFMgQ0lSQ1VNRkxFWDs7MDE1Qzs7MDE1QworMDE1RTtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0VESUxMQTtMdTswO0w7MDA1MyAwMzI3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBDRURJTExBOzs7MDE1RjsKKzAxNUY7TEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDRURJTExBO0xsOzA7TDswMDczIDAzMjc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUyBDRURJTExBOzswMTVFOzswMTVFCiswMTYwO0xBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTjtMdTswO0w7MDA1MyAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBIQUNFSzs7OzAxNjE7CiswMTYxO0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0FST047TGw7MDtMOzAwNzMgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBTIEhBQ0VLOzswMTYwOzswMTYwCiswMTYyO0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBDRURJTExBO0x1OzA7TDswMDU0IDAzMjc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIENFRElMTEE7OzswMTYzOworMDE2MztMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIENFRElMTEE7TGw7MDtMOzAwNzQgMDMyNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIENFRElMTEE7OzAxNjI7OzAxNjIKKzAxNjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENBUk9OO0x1OzA7TDswMDU0IDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIEhBQ0VLOzs7MDE2NTsKKzAxNjU7TEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBDQVJPTjtMbDswO0w7MDA3NCAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFQgSEFDRUs7OzAxNjQ7OzAxNjQKKzAxNjY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBCQVI7OzswMTY3OworMDE2NztMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFQgQkFSOzswMTY2OzswMTY2CiswMTY4O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBUSUxERTtMdTswO0w7MDA1NSAwMzAzOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBUSUxERTs7OzAxNjk7CiswMTY5O0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggVElMREU7TGw7MDtMOzAwNzUgMDMwMzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIFRJTERFOzswMTY4OzswMTY4CiswMTZBO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST047THU7MDtMOzAwNTUgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgTUFDUk9OOzs7MDE2QjsKKzAxNkI7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST047TGw7MDtMOzAwNzUgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIE1BQ1JPTjs7MDE2QTs7MDE2QQorMDE2QztMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQlJFVkU7THU7MDtMOzAwNTUgMDMwNjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgQlJFVkU7OzswMTZEOworMDE2RDtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEJSRVZFO0xsOzA7TDswMDc1IDAzMDY7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBCUkVWRTs7MDE2Qzs7MDE2QworMDE2RTtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggUklORyBBQk9WRTtMdTswO0w7MDA1NSAwMzBBOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBSSU5HOzs7MDE2RjsKKzAxNkY7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFO0xsOzA7TDswMDc1IDAzMEE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBSSU5HOzswMTZFOzswMTZFCiswMTcwO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEU7THU7MDtMOzAwNTUgMDMwQjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgRE9VQkxFIEFDVVRFOzs7MDE3MTsKKzAxNzE7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEU7TGw7MDtMOzAwNzUgMDMwQjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIERPVUJMRSBBQ1VURTs7MDE3MDs7MDE3MAorMDE3MjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggT0dPTkVLO0x1OzA7TDswMDU1IDAzMjg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIE9HT05FSzs7OzAxNzM7CiswMTczO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggT0dPTkVLO0xsOzA7TDswMDc1IDAzMjg7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBPR09ORUs7OzAxNzI7OzAxNzIKKzAxNzQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNTcgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFcgQ0lSQ1VNRkxFWDs7OzAxNzU7CiswMTc1O0xBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA3NyAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFcgQ0lSQ1VNRkxFWDs7MDE3NDs7MDE3NAorMDE3NjtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA1OSAwMzAyOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBDSVJDVU1GTEVYOzs7MDE3NzsKKzAxNzc7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDc5IDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWSBDSVJDVU1GTEVYOzswMTc2OzswMTc2CiswMTc4O0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVM7THU7MDtMOzAwNTkgMDMwODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFkgRElBRVJFU0lTOzs7MDBGRjsKKzAxNzk7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIEFDVVRFO0x1OzA7TDswMDVBIDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBaIEFDVVRFOzs7MDE3QTsKKzAxN0E7TEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBBQ1VURTtMbDswO0w7MDA3QSAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFogQUNVVEU7OzAxNzk7OzAxNzkKKzAxN0I7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA1QSAwMzA3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBET1Q7OzswMTdDOworMDE3QztMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA3QSAwMzA3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFogRE9UOzswMTdCOzswMTdCCiswMTdEO0xBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBDQVJPTjtMdTswO0w7MDA1QSAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBIQUNFSzs7OzAxN0U7CiswMTdFO0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ0FST047TGw7MDtMOzAwN0EgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBaIEhBQ0VLOzswMTdEOzswMTdECiswMTdGO0xBVElOIFNNQUxMIExFVFRFUiBMT05HIFM7TGw7MDtMOzxjb21wYXQ+IDAwNzM7Ozs7Tjs7OzAwNTM7OzAwNTMKKzAxODA7TEFUSU4gU01BTEwgTEVUVEVSIEIgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBCIEJBUjs7OzsKKzAxODE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQiBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEIgSE9PSzs7OzAyNTM7CiswMTgyO0xBVElOIENBUElUQUwgTEVUVEVSIEIgV0lUSCBUT1BCQVI7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEIgVE9QQkFSOzs7MDE4MzsKKzAxODM7TEFUSU4gU01BTEwgTEVUVEVSIEIgV0lUSCBUT1BCQVI7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBCIFRPUEJBUjs7MDE4Mjs7MDE4MgorMDE4NDtMQVRJTiBDQVBJVEFMIExFVFRFUiBUT05FIFNJWDtMdTswO0w7Ozs7O047Ozs7MDE4NTsKKzAxODU7TEFUSU4gU01BTEwgTEVUVEVSIFRPTkUgU0lYO0xsOzA7TDs7Ozs7Tjs7OzAxODQ7OzAxODQKKzAxODY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgT1BFTiBPO0x1OzA7TDs7Ozs7Tjs7OzswMjU0OworMDE4NztMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBIT09LOzs7MDE4ODsKKzAxODg7TEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQyBIT09LOzswMTg3OzswMTg3CiswMTg5O0xBVElOIENBUElUQUwgTEVUVEVSIEFGUklDQU4gRDtMdTswO0w7Ozs7O047Ozs7MDI1NjsKKzAxOEE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEQgSE9PSzs7OzAyNTc7CiswMThCO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBUT1BCQVI7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEQgVE9QQkFSOzs7MDE4QzsKKzAxOEM7TEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBUT1BCQVI7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIFRPUEJBUjs7MDE4Qjs7MDE4QgorMDE4RDtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIERFTFRBO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMThFO0xBVElOIENBUElUQUwgTEVUVEVSIFJFVkVSU0VEIEU7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFRVUk5FRCBFOzs7MDFERDsKKzAxOEY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgU0NIV0E7THU7MDtMOzs7OztOOzs7OzAyNTk7CiswMTkwO0xBVElOIENBUElUQUwgTEVUVEVSIE9QRU4gRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRVBTSUxPTjs7OzAyNUI7CiswMTkxO0xBVElOIENBUElUQUwgTEVUVEVSIEYgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBGIEhPT0s7OzswMTkyOworMDE5MjtMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBTQ1JJUFQgRjs7MDE5MTs7MDE5MQorMDE5MztMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBIT09LOzs7MDI2MDsKKzAxOTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgR0FNTUE7THU7MDtMOzs7OztOOzs7OzAyNjM7CiswMTk1O0xBVElOIFNNQUxMIExFVFRFUiBIVjtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEggVjs7OzsKKzAxOTY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSU9UQTtMdTswO0w7Ozs7O047Ozs7MDI2OTsKKzAxOTc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQkFSUkVEIEk7OzswMjY4OworMDE5ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBIT09LOzs7MDE5OTsKKzAxOTk7TEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSyBIT09LOzswMTk4OzswMTk4CiswMTlBO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQkFSO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQkFSUkVEIEw7Ozs7CiswMTlCO0xBVElOIFNNQUxMIExFVFRFUiBMQU1CREEgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBCQVJSRUQgTEFNQkRBOzs7OworMDE5QztMQVRJTiBDQVBJVEFMIExFVFRFUiBUVVJORUQgTTtMdTswO0w7Ozs7O047Ozs7MDI2RjsKKzAxOUQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIExFRlQgSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBIT09LOzs7MDI3MjsKKzAxOUU7TEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBMT05HIFJJR0hUIExFRztMbDswO0w7Ozs7O047Ozs7OworMDE5RjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTUlERExFIFRJTERFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBCQVJSRUQgTzs7OzAyNzU7CiswMUEwO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT1JOO0x1OzA7TDswMDRGIDAzMUI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIEhPUk47OzswMUExOworMDFBMTtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEhPUk47TGw7MDtMOzAwNkYgMDMxQjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIEhPUk47OzAxQTA7OzAxQTAKKzAxQTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgT0k7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gSTs7OzAxQTM7CiswMUEzO0xBVElOIFNNQUxMIExFVFRFUiBPSTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gSTs7MDFBMjs7MDFBMgorMDFBNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBQIFdJVEggSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgUCBIT09LOzs7MDFBNTsKKzAxQTU7TEFUSU4gU01BTEwgTEVUVEVSIFAgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUCBIT09LOzswMUE0OzswMUE0CiswMUE2O0xBVElOIExFVFRFUiBZUjtMdTswO0w7Ozs7O047TEFUSU4gTEVUVEVSIFkgUjs7OzsKKzAxQTc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVE9ORSBUV087THU7MDtMOzs7OztOOzs7OzAxQTg7CiswMUE4O0xBVElOIFNNQUxMIExFVFRFUiBUT05FIFRXTztMbDswO0w7Ozs7O047OzswMUE3OzswMUE3CiswMUE5O0xBVElOIENBUElUQUwgTEVUVEVSIEVTSDtMdTswO0w7Ozs7O047Ozs7MDI4MzsKKzAxQUE7TEFUSU4gTEVUVEVSIFJFVkVSU0VEIEVTSCBMT09QO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswMUFCO0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggUEFMQVRBTCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVCBQQUxBVEFMIEhPT0s7Ozs7CiswMUFDO0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIEhPT0s7OzswMUFEOworMDFBRDtMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIEhPT0s7OzAxQUM7OzAxQUMKKzAxQUU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIFJFVFJPRkxFWCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFJFVFJPRkxFWCBIT09LOzs7MDI4ODsKKzAxQUY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk47THU7MDtMOzAwNTUgMDMxQjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgSE9STjs7OzAxQjA7CiswMUIwO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSE9STjtMbDswO0w7MDA3NSAwMzFCOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgSE9STjs7MDFBRjs7MDFBRgorMDFCMTtMQVRJTiBDQVBJVEFMIExFVFRFUiBVUFNJTE9OO0x1OzA7TDs7Ozs7Tjs7OzswMjhBOworMDFCMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBWIFdJVEggSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgU0NSSVBUIFY7OzswMjhCOworMDFCMztMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBIT09LOzs7MDFCNDsKKzAxQjQ7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWSBIT09LOzswMUIzOzswMUIzCiswMUI1O0xBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBTVFJPS0U7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFogQkFSOzs7MDFCNjsKKzAxQjY7TEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBaIEJBUjs7MDFCNTs7MDFCNQorMDFCNztMQVRJTiBDQVBJVEFMIExFVFRFUiBFWkg7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFlPR0g7OzswMjkyOworMDFCODtMQVRJTiBDQVBJVEFMIExFVFRFUiBFWkggUkVWRVJTRUQ7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFJFVkVSU0VEIFlPR0g7OzswMUI5OworMDFCOTtMQVRJTiBTTUFMTCBMRVRURVIgRVpIIFJFVkVSU0VEO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgWU9HSDs7MDFCODs7MDFCOAorMDFCQTtMQVRJTiBTTUFMTCBMRVRURVIgRVpIIFdJVEggVEFJTDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFlPR0ggV0lUSCBUQUlMOzs7OworMDFCQjtMQVRJTiBMRVRURVIgVFdPIFdJVEggU1RST0tFO0xvOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgVFdPIEJBUjs7OzsKKzAxQkM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVE9ORSBGSVZFO0x1OzA7TDs7Ozs7Tjs7OzswMUJEOworMDFCRDtMQVRJTiBTTUFMTCBMRVRURVIgVE9ORSBGSVZFO0xsOzA7TDs7Ozs7Tjs7OzAxQkM7OzAxQkMKKzAxQkU7TEFUSU4gTEVUVEVSIElOVkVSVEVEIEdMT1RUQUwgU1RPUCBXSVRIIFNUUk9LRTtMbzswO0w7Ozs7O047TEFUSU4gTEVUVEVSIElOVkVSVEVEIEdMT1RUQUwgU1RPUCBCQVI7Ozs7CiswMUJGO0xBVElOIExFVFRFUiBXWU5OO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswMUMwO0xBVElOIExFVFRFUiBERU5UQUwgQ0xJQ0s7TG87MDtMOzs7OztOO0xBVElOIExFVFRFUiBQSVBFOzs7OworMDFDMTtMQVRJTiBMRVRURVIgTEFURVJBTCBDTElDSztMbzswO0w7Ozs7O047TEFUSU4gTEVUVEVSIERPVUJMRSBQSVBFOzs7OworMDFDMjtMQVRJTiBMRVRURVIgQUxWRU9MQVIgQ0xJQ0s7TG87MDtMOzs7OztOO0xBVElOIExFVFRFUiBQSVBFIERPVUJMRSBCQVI7Ozs7CiswMUMzO0xBVElOIExFVFRFUiBSRVRST0ZMRVggQ0xJQ0s7TG87MDtMOzs7OztOO0xBVElOIExFVFRFUiBFWENMQU1BVElPTiBNQVJLOzs7OworMDFDNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBEWiBXSVRIIENBUk9OO0x1OzA7TDs8Y29tcGF0PiAwMDQ0IDAxN0Q7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFogSEFDRUs7OzswMUM2OzAxQzUKKzAxQzU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIFNNQUxMIExFVFRFUiBaIFdJVEggQ0FST047THQ7MDtMOzxjb21wYXQ+IDAwNDQgMDE3RTs7OztOO0xBVElOIExFVFRFUiBDQVBJVEFMIEQgU01BTEwgWiBIQUNFSzs7MDFDNDswMUM2OworMDFDNjtMQVRJTiBTTUFMTCBMRVRURVIgRFogV0lUSCBDQVJPTjtMbDswO0w7PGNvbXBhdD4gMDA2NCAwMTdFOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEQgWiBIQUNFSzs7MDFDNDs7MDFDNQorMDFDNztMQVRJTiBDQVBJVEFMIExFVFRFUiBMSjtMdTswO0w7PGNvbXBhdD4gMDA0QyAwMDRBOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBKOzs7MDFDOTswMUM4CiswMUM4O0xBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBTTUFMTCBMRVRURVIgSjtMdDswO0w7PGNvbXBhdD4gMDA0QyAwMDZBOzs7O047TEFUSU4gTEVUVEVSIENBUElUQUwgTCBTTUFMTCBKOzswMUM3OzAxQzk7CiswMUM5O0xBVElOIFNNQUxMIExFVFRFUiBMSjtMbDswO0w7PGNvbXBhdD4gMDA2QyAwMDZBOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEwgSjs7MDFDNzs7MDFDOAorMDFDQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBOSjtMdTswO0w7PGNvbXBhdD4gMDA0RSAwMDRBOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBKOzs7MDFDQzswMUNCCiswMUNCO0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBTTUFMTCBMRVRURVIgSjtMdDswO0w7PGNvbXBhdD4gMDA0RSAwMDZBOzs7O047TEFUSU4gTEVUVEVSIENBUElUQUwgTiBTTUFMTCBKOzswMUNBOzAxQ0M7CiswMUNDO0xBVElOIFNNQUxMIExFVFRFUiBOSjtMbDswO0w7PGNvbXBhdD4gMDA2RSAwMDZBOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE4gSjs7MDFDQTs7MDFDQgorMDFDRDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0FST047THU7MDtMOzAwNDEgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgSEFDRUs7OzswMUNFOworMDFDRTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENBUk9OO0xsOzA7TDswMDYxIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBIQUNFSzs7MDFDRDs7MDFDRAorMDFDRjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0FST047THU7MDtMOzAwNDkgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEkgSEFDRUs7OzswMUQwOworMDFEMDtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENBUk9OO0xsOzA7TDswMDY5IDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSSBIQUNFSzs7MDFDRjs7MDFDRgorMDFEMTtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0FST047THU7MDtMOzAwNEYgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gSEFDRUs7OzswMUQyOworMDFEMjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENBUk9OO0xsOzA7TDswMDZGIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBIQUNFSzs7MDFEMTs7MDFEMQorMDFEMztMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0FST047THU7MDtMOzAwNTUgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgSEFDRUs7OzswMUQ0OworMDFENDtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENBUk9OO0xsOzA7TDswMDc1IDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBIQUNFSzs7MDFEMzs7MDFEMworMDFENTtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEFORCBNQUNST047THU7MDtMOzAwREMgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgRElBRVJFU0lTIE1BQ1JPTjs7OzAxRDY7CiswMUQ2O0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEFORCBNQUNST047TGw7MDtMOzAwRkMgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIERJQUVSRVNJUyBNQUNST047OzAxRDU7OzAxRDUKKzAxRDc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgQUNVVEU7THU7MDtMOzAwREMgMDMwMTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgRElBRVJFU0lTIEFDVVRFOzs7MDFEODsKKzAxRDg7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIEFDVVRFO0xsOzA7TDswMEZDIDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBESUFFUkVTSVMgQUNVVEU7OzAxRDc7OzAxRDcKKzAxRDk7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgQ0FST047THU7MDtMOzAwREMgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgRElBRVJFU0lTIEhBQ0VLOzs7MDFEQTsKKzAxREE7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIENBUk9OO0xsOzA7TDswMEZDIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBESUFFUkVTSVMgSEFDRUs7OzAxRDk7OzAxRDkKKzAxREI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgR1JBVkU7THU7MDtMOzAwREMgMDMwMDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgRElBRVJFU0lTIEdSQVZFOzs7MDFEQzsKKzAxREM7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIEdSQVZFO0xsOzA7TDswMEZDIDAzMDA7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBESUFFUkVTSVMgR1JBVkU7OzAxREI7OzAxREIKKzAxREQ7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBFO0xsOzA7TDs7Ozs7Tjs7OzAxOEU7OzAxOEUKKzAxREU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUyBBTkQgTUFDUk9OO0x1OzA7TDswMEM0IDAzMDQ7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIERJQUVSRVNJUyBNQUNST047OzswMURGOworMDFERjtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUyBBTkQgTUFDUk9OO0xsOzA7TDswMEU0IDAzMDQ7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBESUFFUkVTSVMgTUFDUk9OOzswMURFOzswMURFCiswMUUwO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBET1QgQUJPVkUgQU5EIE1BQ1JPTjtMdTswO0w7MDA0MSAwMzA3IDAzMDQ7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIERPVCBNQUNST047OzswMUUxOworMDFFMTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERPVCBBQk9WRSBBTkQgTUFDUk9OO0xsOzA7TDswMDYxIDAzMDcgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIERPVCBNQUNST047OzAxRTA7OzAxRTAKKzAxRTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQUUgV0lUSCBNQUNST047THU7MDtMOzAwQzYgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgRSBNQUNST047OzswMUUzOworMDFFMztMQVRJTiBTTUFMTCBMRVRURVIgQUUgV0lUSCBNQUNST047TGw7MDtMOzAwRTYgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIEUgTUFDUk9OOzswMUUyOzswMUUyCiswMUU0O0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBTVFJPS0U7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEcgQkFSOzs7MDFFNTsKKzAxRTU7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBHIEJBUjs7MDFFNDs7MDFFNAorMDFFNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQ0FST047THU7MDtMOzAwNDcgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEcgSEFDRUs7OzswMUU3OworMDFFNztMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIENBUk9OO0xsOzA7TDswMDY3IDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRyBIQUNFSzs7MDFFNjs7MDFFNgorMDFFODtMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggQ0FST047THU7MDtMOzAwNEIgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEsgSEFDRUs7OzswMUU5OworMDFFOTtMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIENBUk9OO0xsOzA7TDswMDZCIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSyBIQUNFSzs7MDFFODs7MDFFOAorMDFFQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggT0dPTkVLO0x1OzA7TDswMDRGIDAzMjg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIE9HT05FSzs7OzAxRUI7CiswMUVCO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggT0dPTkVLO0xsOzA7TDswMDZGIDAzMjg7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBPR09ORUs7OzAxRUE7OzAxRUEKKzAxRUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIE9HT05FSyBBTkQgTUFDUk9OO0x1OzA7TDswMUVBIDAzMDQ7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIE9HT05FSyBNQUNST047OzswMUVEOworMDFFRDtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIE9HT05FSyBBTkQgTUFDUk9OO0xsOzA7TDswMUVCIDAzMDQ7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBPR09ORUsgTUFDUk9OOzswMUVDOzswMUVDCiswMUVFO0xBVElOIENBUElUQUwgTEVUVEVSIEVaSCBXSVRIIENBUk9OO0x1OzA7TDswMUI3IDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBZT0dIIEhBQ0VLOzs7MDFFRjsKKzAxRUY7TEFUSU4gU01BTEwgTEVUVEVSIEVaSCBXSVRIIENBUk9OO0xsOzA7TDswMjkyIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWU9HSCBIQUNFSzs7MDFFRTs7MDFFRQorMDFGMDtMQVRJTiBTTUFMTCBMRVRURVIgSiBXSVRIIENBUk9OO0xsOzA7TDswMDZBIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSiBIQUNFSzs7OzsKKzAxRjE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRFo7THU7MDtMOzxjb21wYXQ+IDAwNDQgMDA1QTs7OztOOzs7OzAxRjM7MDFGMgorMDFGMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggU01BTEwgTEVUVEVSIFo7THQ7MDtMOzxjb21wYXQ+IDAwNDQgMDA3QTs7OztOOzs7MDFGMTswMUYzOworMDFGMztMQVRJTiBTTUFMTCBMRVRURVIgRFo7TGw7MDtMOzxjb21wYXQ+IDAwNjQgMDA3QTs7OztOOzs7MDFGMTs7MDFGMgorMDFGNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQUNVVEU7THU7MDtMOzAwNDcgMDMwMTs7OztOOzs7OzAxRjU7CiswMUY1O0xBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQUNVVEU7TGw7MDtMOzAwNjcgMDMwMTs7OztOOzs7MDFGNDs7MDFGNAorMDFGQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRSBBTkQgQUNVVEU7THU7MDtMOzAwQzUgMDMwMTs7OztOOzs7OzAxRkI7CiswMUZCO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRSBBTkQgQUNVVEU7TGw7MDtMOzAwRTUgMDMwMTs7OztOOzs7MDFGQTs7MDFGQQorMDFGQztMQVRJTiBDQVBJVEFMIExFVFRFUiBBRSBXSVRIIEFDVVRFO0x1OzA7TDswMEM2IDAzMDE7Ozs7Tjs7OzswMUZEOworMDFGRDtMQVRJTiBTTUFMTCBMRVRURVIgQUUgV0lUSCBBQ1VURTtMbDswO0w7MDBFNiAwMzAxOzs7O047OzswMUZDOzswMUZDCiswMUZFO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UgQU5EIEFDVVRFO0x1OzA7TDswMEQ4IDAzMDE7Ozs7Tjs7OzswMUZGOworMDFGRjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRSBBTkQgQUNVVEU7TGw7MDtMOzAwRjggMDMwMTs7OztOOzs7MDFGRTs7MDFGRQorMDIwMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRE9VQkxFIEdSQVZFO0x1OzA7TDswMDQxIDAzMEY7Ozs7Tjs7OzswMjAxOworMDIwMTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERPVUJMRSBHUkFWRTtMbDswO0w7MDA2MSAwMzBGOzs7O047OzswMjAwOzswMjAwCiswMjAyO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBJTlZFUlRFRCBCUkVWRTtMdTswO0w7MDA0MSAwMzExOzs7O047Ozs7MDIwMzsKKzAyMDM7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBJTlZFUlRFRCBCUkVWRTtMbDswO0w7MDA2MSAwMzExOzs7O047OzswMjAyOzswMjAyCiswMjA0O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBET1VCTEUgR1JBVkU7THU7MDtMOzAwNDUgMDMwRjs7OztOOzs7OzAyMDU7CiswMjA1O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRE9VQkxFIEdSQVZFO0xsOzA7TDswMDY1IDAzMEY7Ozs7Tjs7OzAyMDQ7OzAyMDQKKzAyMDY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIElOVkVSVEVEIEJSRVZFO0x1OzA7TDswMDQ1IDAzMTE7Ozs7Tjs7OzswMjA3OworMDIwNztMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIElOVkVSVEVEIEJSRVZFO0xsOzA7TDswMDY1IDAzMTE7Ozs7Tjs7OzAyMDY7OzAyMDYKKzAyMDg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERPVUJMRSBHUkFWRTtMdTswO0w7MDA0OSAwMzBGOzs7O047Ozs7MDIwOTsKKzAyMDk7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBET1VCTEUgR1JBVkU7TGw7MDtMOzAwNjkgMDMwRjs7OztOOzs7MDIwODs7MDIwOAorMDIwQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggSU5WRVJURUQgQlJFVkU7THU7MDtMOzAwNDkgMDMxMTs7OztOOzs7OzAyMEI7CiswMjBCO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggSU5WRVJURUQgQlJFVkU7TGw7MDtMOzAwNjkgMDMxMTs7OztOOzs7MDIwQTs7MDIwQQorMDIwQztMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRE9VQkxFIEdSQVZFO0x1OzA7TDswMDRGIDAzMEY7Ozs7Tjs7OzswMjBEOworMDIwRDtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERPVUJMRSBHUkFWRTtMbDswO0w7MDA2RiAwMzBGOzs7O047OzswMjBDOzswMjBDCiswMjBFO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBJTlZFUlRFRCBCUkVWRTtMdTswO0w7MDA0RiAwMzExOzs7O047Ozs7MDIwRjsKKzAyMEY7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBJTlZFUlRFRCBCUkVWRTtMbDswO0w7MDA2RiAwMzExOzs7O047OzswMjBFOzswMjBFCiswMjEwO0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBET1VCTEUgR1JBVkU7THU7MDtMOzAwNTIgMDMwRjs7OztOOzs7OzAyMTE7CiswMjExO0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggRE9VQkxFIEdSQVZFO0xsOzA7TDswMDcyIDAzMEY7Ozs7Tjs7OzAyMTA7OzAyMTAKKzAyMTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIElOVkVSVEVEIEJSRVZFO0x1OzA7TDswMDUyIDAzMTE7Ozs7Tjs7OzswMjEzOworMDIxMztMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIElOVkVSVEVEIEJSRVZFO0xsOzA7TDswMDcyIDAzMTE7Ozs7Tjs7OzAyMTI7OzAyMTIKKzAyMTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERPVUJMRSBHUkFWRTtMdTswO0w7MDA1NSAwMzBGOzs7O047Ozs7MDIxNTsKKzAyMTU7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBET1VCTEUgR1JBVkU7TGw7MDtMOzAwNzUgMDMwRjs7OztOOzs7MDIxNDs7MDIxNAorMDIxNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSU5WRVJURUQgQlJFVkU7THU7MDtMOzAwNTUgMDMxMTs7OztOOzs7OzAyMTc7CiswMjE3O0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSU5WRVJURUQgQlJFVkU7TGw7MDtMOzAwNzUgMDMxMTs7OztOOzs7MDIxNjs7MDIxNgorMDI1MDtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIEE7TGw7MDtMOzs7OztOOzs7OzsKKzAyNTE7TEFUSU4gU01BTEwgTEVUVEVSIEFMUEhBO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgU0NSSVBUIEE7Ozs7CiswMjUyO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgQUxQSEE7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgU0NSSVBUIEE7Ozs7CiswMjUzO0xBVElOIFNNQUxMIExFVFRFUiBCIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEIgSE9PSzs7MDE4MTs7MDE4MQorMDI1NDtMQVRJTiBTTUFMTCBMRVRURVIgT1BFTiBPO0xsOzA7TDs7Ozs7Tjs7OzAxODY7OzAxODYKKzAyNTU7TEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDVVJMO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQyBDVVJMOzs7OworMDI1NjtMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIFRBSUw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIFJFVFJPRkxFWCBIT09LOzswMTg5OzswMTg5CiswMjU3O0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEQgSE9PSzs7MDE4QTs7MDE4QQorMDI1ODtMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgRTtMbDswO0w7Ozs7O047Ozs7OworMDI1OTtMQVRJTiBTTUFMTCBMRVRURVIgU0NIV0E7TGw7MDtMOzs7OztOOzs7MDE4Rjs7MDE4RgorMDI1QTtMQVRJTiBTTUFMTCBMRVRURVIgU0NIV0EgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgU0NIV0EgSE9PSzs7OzsKKzAyNUI7TEFUSU4gU01BTEwgTEVUVEVSIE9QRU4gRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEVQU0lMT047OzAxOTA7OzAxOTAKKzAyNUM7TEFUSU4gU01BTEwgTEVUVEVSIFJFVkVSU0VEIE9QRU4gRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFJFVkVSU0VEIEVQU0lMT047Ozs7CiswMjVEO0xBVElOIFNNQUxMIExFVFRFUiBSRVZFUlNFRCBPUEVOIEUgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgRVBTSUxPTiBIT09LOzs7OworMDI1RTtMQVRJTiBTTUFMTCBMRVRURVIgQ0xPU0VEIFJFVkVSU0VEIE9QRU4gRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIENMT1NFRCBSRVZFUlNFRCBFUFNJTE9OOzs7OworMDI1RjtMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKIEJBUjs7OzsKKzAyNjA7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRyBIT09LOzswMTkzOzswMTkzCiswMjYxO0xBVElOIFNNQUxMIExFVFRFUiBTQ1JJUFQgRztMbDswO0w7Ozs7O047Ozs7OworMDI2MjtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBHO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjYzO0xBVElOIFNNQUxMIExFVFRFUiBHQU1NQTtMbDswO0w7Ozs7O047OzswMTk0OzswMTk0CiswMjY0O0xBVElOIFNNQUxMIExFVFRFUiBSQU1TIEhPUk47TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBCQUJZIEdBTU1BOzs7OworMDI2NTtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIEg7TGw7MDtMOzs7OztOOzs7OzsKKzAyNjY7TEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSCBIT09LOzs7OworMDI2NztMQVRJTiBTTUFMTCBMRVRURVIgSEVORyBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBIRU5HIEhPT0s7Ozs7CiswMjY4O0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQkFSUkVEIEk7OzAxOTc7OzAxOTcKKzAyNjk7TEFUSU4gU01BTEwgTEVUVEVSIElPVEE7TGw7MDtMOzs7OztOOzs7MDE5Njs7MDE5NgorMDI2QTtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBJO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjZCO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggTUlERExFIFRJTERFO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjZDO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQkVMVDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEwgQkVMVDs7OzsKKzAyNkQ7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBSRVRST0ZMRVggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEwgUkVUUk9GTEVYIEhPT0s7Ozs7CiswMjZFO0xBVElOIFNNQUxMIExFVFRFUiBMRVpIO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTCBZT0dIOzs7OworMDI2RjtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIE07TGw7MDtMOzs7OztOOzs7MDE5Qzs7MDE5QworMDI3MDtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIE0gV0lUSCBMT05HIExFRztMbDswO0w7Ozs7O047Ozs7OworMDI3MTtMQVRJTiBTTUFMTCBMRVRURVIgTSBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBNIEhPT0s7Ozs7CiswMjcyO0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggTEVGVCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTiBIT09LOzswMTlEOzswMTlECiswMjczO0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggUkVUUk9GTEVYIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBOIFJFVFJPRkxFWCBIT09LOzs7OworMDI3NDtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBOO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjc1O0xBVElOIFNNQUxMIExFVFRFUiBCQVJSRUQgTztMbDswO0w7Ozs7O047Ozs7MDE5RjsKKzAyNzY7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgT0U7TGw7MDtMOzs7OztOO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIE8gRTs7OzsKKzAyNzc7TEFUSU4gU01BTEwgTEVUVEVSIENMT1NFRCBPTUVHQTtMbDswO0w7Ozs7O047Ozs7OworMDI3ODtMQVRJTiBTTUFMTCBMRVRURVIgUEhJO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjc5O0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgUjtMbDswO0w7Ozs7O047Ozs7OworMDI3QTtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFIgV0lUSCBMT05HIExFRztMbDswO0w7Ozs7O047Ozs7OworMDI3QjtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFIgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFIgSE9PSzs7OzsKKzAyN0M7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBMT05HIExFRztMbDswO0w7Ozs7O047Ozs7OworMDI3RDtMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIFRBSUw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBSIEhPT0s7Ozs7CiswMjdFO0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggRklTSEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBGSVNISE9PSyBSOzs7OworMDI3RjtMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgUiBXSVRIIEZJU0hIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgRklTSEhPT0sgUjs7OzsKKzAyODA7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgUjtMbDswO0w7Ozs7O047Ozs7OworMDI4MTtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBJTlZFUlRFRCBSO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjgyO0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFMgSE9PSzs7OzsKKzAyODM7TEFUSU4gU01BTEwgTEVUVEVSIEVTSDtMbDswO0w7Ozs7O047OzswMUE5OzswMUE5CiswMjg0O0xBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEogV0lUSCBTVFJPS0UgQU5EIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEogQkFSIEhPT0s7Ozs7CiswMjg1O0xBVElOIFNNQUxMIExFVFRFUiBTUVVBVCBSRVZFUlNFRCBFU0g7TGw7MDtMOzs7OztOOzs7OzsKKzAyODY7TEFUSU4gU01BTEwgTEVUVEVSIEVTSCBXSVRIIENVUkw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFU0ggQ1VSTDs7OzsKKzAyODc7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBUO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjg4O0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggUkVUUk9GTEVYIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIFJFVFJPRkxFWCBIT09LOzswMUFFOzswMUFFCiswMjg5O0xBVElOIFNNQUxMIExFVFRFUiBVIEJBUjtMbDswO0w7Ozs7O047Ozs7OworMDI4QTtMQVRJTiBTTUFMTCBMRVRURVIgVVBTSUxPTjtMbDswO0w7Ozs7O047OzswMUIxOzswMUIxCiswMjhCO0xBVElOIFNNQUxMIExFVFRFUiBWIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBWOzswMUIyOzswMUIyCiswMjhDO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgVjtMbDswO0w7Ozs7O047Ozs7OworMDI4RDtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFc7TGw7MDtMOzs7OztOOzs7OzsKKzAyOEU7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBZO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjhGO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFk7TGw7MDtMOzs7OztOOzs7OzsKKzAyOTA7TEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBSRVRST0ZMRVggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFogUkVUUk9GTEVYIEhPT0s7Ozs7CiswMjkxO0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ1VSTDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFogQ1VSTDs7OzsKKzAyOTI7TEFUSU4gU01BTEwgTEVUVEVSIEVaSDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFlPR0g7OzAxQjc7OzAxQjcKKzAyOTM7TEFUSU4gU01BTEwgTEVUVEVSIEVaSCBXSVRIIENVUkw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBZT0dIIENVUkw7Ozs7CiswMjk0O0xBVElOIExFVFRFUiBHTE9UVEFMIFNUT1A7TGw7MDtMOzs7OztOOzs7OzsKKzAyOTU7TEFUSU4gTEVUVEVSIFBIQVJZTkdFQUwgVk9JQ0VEIEZSSUNBVElWRTtMbDswO0w7Ozs7O047TEFUSU4gTEVUVEVSIFJFVkVSU0VEIEdMT1RUQUwgU1RPUDs7OzsKKzAyOTY7TEFUSU4gTEVUVEVSIElOVkVSVEVEIEdMT1RUQUwgU1RPUDtMbDswO0w7Ozs7O047Ozs7OworMDI5NztMQVRJTiBMRVRURVIgU1RSRVRDSEVEIEM7TGw7MDtMOzs7OztOOzs7OzsKKzAyOTg7TEFUSU4gTEVUVEVSIEJJTEFCSUFMIENMSUNLO0xsOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgQlVMTFNFWUU7Ozs7CiswMjk5O0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEI7TGw7MDtMOzs7OztOOzs7OzsKKzAyOUE7TEFUSU4gU01BTEwgTEVUVEVSIENMT1NFRCBPUEVOIEU7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDTE9TRUQgRVBTSUxPTjs7OzsKKzAyOUI7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgRyBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEcgSE9PSzs7OzsKKzAyOUM7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgSDtMbDswO0w7Ozs7O047Ozs7OworMDI5RDtMQVRJTiBTTUFMTCBMRVRURVIgSiBXSVRIIENST1NTRUQtVEFJTDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIENST1NTRUQtVEFJTCBKOzs7OworMDI5RTtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIEs7TGw7MDtMOzs7OztOOzs7OzsKKzAyOUY7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgTDtMbDswO0w7Ozs7O047Ozs7OworMDJBMDtMQVRJTiBTTUFMTCBMRVRURVIgUSBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBRIEhPT0s7Ozs7CiswMkExO0xBVElOIExFVFRFUiBHTE9UVEFMIFNUT1AgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIExFVFRFUiBHTE9UVEFMIFNUT1AgQkFSOzs7OworMDJBMjtMQVRJTiBMRVRURVIgUkVWRVJTRUQgR0xPVFRBTCBTVE9QIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgUkVWRVJTRUQgR0xPVFRBTCBTVE9QIEJBUjs7OzsKKzAyQTM7TEFUSU4gU01BTEwgTEVUVEVSIERaIERJR1JBUEg7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIFo7Ozs7CiswMkE0O0xBVElOIFNNQUxMIExFVFRFUiBERVpIIERJR1JBUEg7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIFlPR0g7Ozs7CiswMkE1O0xBVElOIFNNQUxMIExFVFRFUiBEWiBESUdSQVBIIFdJVEggQ1VSTDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEQgWiBDVVJMOzs7OworMDJBNjtMQVRJTiBTTUFMTCBMRVRURVIgVFMgRElHUkFQSDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFQgUzs7OzsKKzAyQTc7TEFUSU4gU01BTEwgTEVUVEVSIFRFU0ggRElHUkFQSDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFQgRVNIOzs7OworMDJBODtMQVRJTiBTTUFMTCBMRVRURVIgVEMgRElHUkFQSCBXSVRIIENVUkw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIEMgQ1VSTDs7OzsKKzAyQjA7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIEg7TG07MDtMOzxzdXBlcj4gMDA2ODs7OztOOzs7OzsKKzAyQjE7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIEggV0lUSCBIT09LO0xtOzA7TDs8c3VwZXI+IDAyNjY7Ozs7TjtNT0RJRklFUiBMRVRURVIgU01BTEwgSCBIT09LOzs7OworMDJCMjtNT0RJRklFUiBMRVRURVIgU01BTEwgSjtMbTswO0w7PHN1cGVyPiAwMDZBOzs7O047Ozs7OworMDJCMztNT0RJRklFUiBMRVRURVIgU01BTEwgUjtMbTswO0w7PHN1cGVyPiAwMDcyOzs7O047Ozs7OworMDJCNDtNT0RJRklFUiBMRVRURVIgU01BTEwgVFVSTkVEIFI7TG07MDtMOzxzdXBlcj4gMDI3OTs7OztOOzs7OzsKKzAyQjU7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFRVUk5FRCBSIFdJVEggSE9PSztMbTswO0w7PHN1cGVyPiAwMjdCOzs7O047TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFRVUk5FRCBSIEhPT0s7Ozs7CiswMkI2O01PRElGSUVSIExFVFRFUiBTTUFMTCBDQVBJVEFMIElOVkVSVEVEIFI7TG07MDtMOzxzdXBlcj4gMDI4MTs7OztOOzs7OzsKKzAyQjc7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFc7TG07MDtMOzxzdXBlcj4gMDA3Nzs7OztOOzs7OzsKKzAyQjg7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFk7TG07MDtMOzxzdXBlcj4gMDA3OTs7OztOOzs7OzsKKzAyQjk7TU9ESUZJRVIgTEVUVEVSIFBSSU1FO1NrOzA7TDs7Ozs7Tjs7Ozs7CiswMkJBO01PRElGSUVSIExFVFRFUiBET1VCTEUgUFJJTUU7U2s7MDtMOzs7OztOOzs7OzsKKzAyQkI7TU9ESUZJRVIgTEVUVEVSIFRVUk5FRCBDT01NQTtMbTswO0w7Ozs7O047Ozs7OworMDJCQztNT0RJRklFUiBMRVRURVIgQVBPU1RST1BIRTtMbTswO0w7Ozs7O047Ozs7OworMDJCRDtNT0RJRklFUiBMRVRURVIgUkVWRVJTRUQgQ09NTUE7TG07MDtMOzs7OztOOzs7OzsKKzAyQkU7TU9ESUZJRVIgTEVUVEVSIFJJR0hUIEhBTEYgUklORztMbTswO0w7Ozs7O047Ozs7OworMDJCRjtNT0RJRklFUiBMRVRURVIgTEVGVCBIQUxGIFJJTkc7TG07MDtMOzs7OztOOzs7OzsKKzAyQzA7TU9ESUZJRVIgTEVUVEVSIEdMT1RUQUwgU1RPUDtMbTswO0w7Ozs7O047Ozs7OworMDJDMTtNT0RJRklFUiBMRVRURVIgUkVWRVJTRUQgR0xPVFRBTCBTVE9QO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswMkMyO01PRElGSUVSIExFVFRFUiBMRUZUIEFSUk9XSEVBRDtTazswO0w7Ozs7O047Ozs7OworMDJDMztNT0RJRklFUiBMRVRURVIgUklHSFQgQVJST1dIRUFEO1NrOzA7TDs7Ozs7Tjs7Ozs7CiswMkM0O01PRElGSUVSIExFVFRFUiBVUCBBUlJPV0hFQUQ7U2s7MDtMOzs7OztOOzs7OzsKKzAyQzU7TU9ESUZJRVIgTEVUVEVSIERPV04gQVJST1dIRUFEO1NrOzA7TDs7Ozs7Tjs7Ozs7CiswMkM2O01PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYIEFDQ0VOVDtTazswO0w7Ozs7O047TU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVg7Ozs7CiswMkM3O0NBUk9OO1NrOzA7TDs7Ozs7TjtNT0RJRklFUiBMRVRURVIgSEFDRUs7TWFuZGFyaW4gQ2hpbmVzZSB0aGlyZCB0b25lOzs7CiswMkM4O01PRElGSUVSIExFVFRFUiBWRVJUSUNBTCBMSU5FO1NrOzA7TDs7Ozs7Tjs7Ozs7CiswMkM5O01PRElGSUVSIExFVFRFUiBNQUNST047U2s7MDtMOzs7OztOOztNYW5kYXJpbiBDaGluZXNlIGZpcnN0IHRvbmU7OzsKKzAyQ0E7TU9ESUZJRVIgTEVUVEVSIEFDVVRFIEFDQ0VOVDtTazswO0w7Ozs7O047TU9ESUZJRVIgTEVUVEVSIEFDVVRFO01hbmRhcmluIENoaW5lc2Ugc2Vjb25kIHRvbmU7OzsKKzAyQ0I7TU9ESUZJRVIgTEVUVEVSIEdSQVZFIEFDQ0VOVDtTazswO0w7Ozs7O047TU9ESUZJRVIgTEVUVEVSIEdSQVZFO01hbmRhcmluIENoaW5lc2UgZm91cnRoIHRvbmU7OzsKKzAyQ0M7TU9ESUZJRVIgTEVUVEVSIExPVyBWRVJUSUNBTCBMSU5FO1NrOzA7TDs7Ozs7Tjs7Ozs7CiswMkNEO01PRElGSUVSIExFVFRFUiBMT1cgTUFDUk9OO1NrOzA7TDs7Ozs7Tjs7Ozs7CiswMkNFO01PRElGSUVSIExFVFRFUiBMT1cgR1JBVkUgQUNDRU5UO1NrOzA7TDs7Ozs7TjtNT0RJRklFUiBMRVRURVIgTE9XIEdSQVZFOzs7OworMDJDRjtNT0RJRklFUiBMRVRURVIgTE9XIEFDVVRFIEFDQ0VOVDtTazswO0w7Ozs7O047TU9ESUZJRVIgTEVUVEVSIExPVyBBQ1VURTs7OzsKKzAyRDA7TU9ESUZJRVIgTEVUVEVSIFRSSUFOR1VMQVIgQ09MT047TG07MDtMOzs7OztOOzs7OzsKKzAyRDE7TU9ESUZJRVIgTEVUVEVSIEhBTEYgVFJJQU5HVUxBUiBDT0xPTjtMbTswO0w7Ozs7O047Ozs7OworMDJEMjtNT0RJRklFUiBMRVRURVIgQ0VOVFJFRCBSSUdIVCBIQUxGIFJJTkc7U2s7MDtMOzs7OztOO01PRElGSUVSIExFVFRFUiBDRU5URVJFRCBSSUdIVCBIQUxGIFJJTkc7Ozs7CiswMkQzO01PRElGSUVSIExFVFRFUiBDRU5UUkVEIExFRlQgSEFMRiBSSU5HO1NrOzA7TDs7Ozs7TjtNT0RJRklFUiBMRVRURVIgQ0VOVEVSRUQgTEVGVCBIQUxGIFJJTkc7Ozs7CiswMkQ0O01PRElGSUVSIExFVFRFUiBVUCBUQUNLO1NrOzA7TDs7Ozs7Tjs7Ozs7CiswMkQ1O01PRElGSUVSIExFVFRFUiBET1dOIFRBQ0s7U2s7MDtMOzs7OztOOzs7OzsKKzAyRDY7TU9ESUZJRVIgTEVUVEVSIFBMVVMgU0lHTjtTazswO0w7Ozs7O047Ozs7OworMDJENztNT0RJRklFUiBMRVRURVIgTUlOVVMgU0lHTjtTazswO0w7Ozs7O047Ozs7OworMDJEODtCUkVWRTtTazswO0w7PGNvbXBhdD4gMDAyMCAwMzA2Ozs7O047U1BBQ0lORyBCUkVWRTs7OzsKKzAyRDk7RE9UIEFCT1ZFO1NrOzA7TDs8Y29tcGF0PiAwMDIwIDAzMDc7Ozs7TjtTUEFDSU5HIERPVCBBQk9WRTtNYW5kYXJpbiBDaGluZXNlIGxpZ2h0IHRvbmU7OzsKKzAyREE7UklORyBBQk9WRTtTazswO0w7PGNvbXBhdD4gMDAyMCAwMzBBOzs7O047U1BBQ0lORyBSSU5HIEFCT1ZFOzs7OworMDJEQjtPR09ORUs7U2s7MDtMOzxjb21wYXQ+IDAwMjAgMDMyODs7OztOO1NQQUNJTkcgT0dPTkVLOzs7OworMDJEQztTTUFMTCBUSUxERTtTazswO0w7PGNvbXBhdD4gMDAyMCAwMzAzOzs7O047U1BBQ0lORyBUSUxERTs7OzsKKzAyREQ7RE9VQkxFIEFDVVRFIEFDQ0VOVDtTazswO0w7PGNvbXBhdD4gMDAyMCAwMzBCOzs7O047U1BBQ0lORyBET1VCTEUgQUNVVEU7Ozs7CiswMkRFO01PRElGSUVSIExFVFRFUiBSSE9USUMgSE9PSztTazswO0w7Ozs7O047Ozs7OworMDJFMDtNT0RJRklFUiBMRVRURVIgU01BTEwgR0FNTUE7TG07MDtMOzxzdXBlcj4gMDI2Mzs7OztOOzs7OzsKKzAyRTE7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIEw7TG07MDtMOzxzdXBlcj4gMDA2Qzs7OztOOzs7OzsKKzAyRTI7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFM7TG07MDtMOzxzdXBlcj4gMDA3Mzs7OztOOzs7OzsKKzAyRTM7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFg7TG07MDtMOzxzdXBlcj4gMDA3ODs7OztOOzs7OzsKKzAyRTQ7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFJFVkVSU0VEIEdMT1RUQUwgU1RPUDtMbTswO0w7PHN1cGVyPiAwMjk1Ozs7O047Ozs7OworMDJFNTtNT0RJRklFUiBMRVRURVIgRVhUUkEtSElHSCBUT05FIEJBUjtTazswO0w7Ozs7O047Ozs7OworMDJFNjtNT0RJRklFUiBMRVRURVIgSElHSCBUT05FIEJBUjtTazswO0w7Ozs7O047Ozs7OworMDJFNztNT0RJRklFUiBMRVRURVIgTUlEIFRPTkUgQkFSO1NrOzA7TDs7Ozs7Tjs7Ozs7CiswMkU4O01PRElGSUVSIExFVFRFUiBMT1cgVE9ORSBCQVI7U2s7MDtMOzs7OztOOzs7OzsKKzAyRTk7TU9ESUZJRVIgTEVUVEVSIEVYVFJBLUxPVyBUT05FIEJBUjtTazswO0w7Ozs7O047Ozs7OworMDMwMDtDT01CSU5JTkcgR1JBVkUgQUNDRU5UO01uOzIzMDtMOzs7OztOO05PTi1TUEFDSU5HIEdSQVZFO1ZhcmlhOzs7CiswMzAxO0NPTUJJTklORyBBQ1VURSBBQ0NFTlQ7TW47MjMwO0w7Ozs7O047Tk9OLVNQQUNJTkcgQUNVVEU7T3hpYTs7OworMDMwMjtDT01CSU5JTkcgQ0lSQ1VNRkxFWCBBQ0NFTlQ7TW47MjMwO0w7Ozs7O047Tk9OLVNQQUNJTkcgQ0lSQ1VNRkxFWDs7OzsKKzAzMDM7Q09NQklOSU5HIFRJTERFO01uOzIzMDtMOzs7OztOO05PTi1TUEFDSU5HIFRJTERFOzs7OworMDMwNDtDT01CSU5JTkcgTUFDUk9OO01uOzIzMDtMOzs7OztOO05PTi1TUEFDSU5HIE1BQ1JPTjs7OzsKKzAzMDU7Q09NQklOSU5HIE9WRVJMSU5FO01uOzIzMDtMOzs7OztOO05PTi1TUEFDSU5HIE9WRVJTQ09SRTs7OzsKKzAzMDY7Q09NQklOSU5HIEJSRVZFO01uOzIzMDtMOzs7OztOO05PTi1TUEFDSU5HIEJSRVZFO1ZyYWNoeTs7OworMDMwNztDT01CSU5JTkcgRE9UIEFCT1ZFO01uOzIzMDtMOzs7OztOO05PTi1TUEFDSU5HIERPVCBBQk9WRTs7OzsKKzAzMDg7Q09NQklOSU5HIERJQUVSRVNJUztNbjsyMzA7TDs7Ozs7TjtOT04tU1BBQ0lORyBESUFFUkVTSVM7RGlhbHl0aWthOzs7CiswMzA5O0NPTUJJTklORyBIT09LIEFCT1ZFO01uOzIzMDtMOzs7OztOO05PTi1TUEFDSU5HIEhPT0sgQUJPVkU7Ozs7CiswMzBBO0NPTUJJTklORyBSSU5HIEFCT1ZFO01uOzIzMDtMOzs7OztOO05PTi1TUEFDSU5HIFJJTkcgQUJPVkU7Ozs7CiswMzBCO0NPTUJJTklORyBET1VCTEUgQUNVVEUgQUNDRU5UO01uOzIzMDtMOzs7OztOO05PTi1TUEFDSU5HIERPVUJMRSBBQ1VURTs7OzsKKzAzMEM7Q09NQklOSU5HIENBUk9OO01uOzIzMDtMOzs7OztOO05PTi1TUEFDSU5HIEhBQ0VLOzs7OworMDMwRDtDT01CSU5JTkcgVkVSVElDQUwgTElORSBBQk9WRTtNbjsyMzA7TDs7Ozs7TjtOT04tU1BBQ0lORyBWRVJUSUNBTCBMSU5FIEFCT1ZFO1Rvbm9zOzs7CiswMzBFO0NPTUJJTklORyBET1VCTEUgVkVSVElDQUwgTElORSBBQk9WRTtNbjsyMzA7TDs7Ozs7TjtOT04tU1BBQ0lORyBET1VCTEUgVkVSVElDQUwgTElORSBBQk9WRTs7OzsKKzAzMEY7Q09NQklOSU5HIERPVUJMRSBHUkFWRSBBQ0NFTlQ7TW47MjMwO0w7Ozs7O047Tk9OLVNQQUNJTkcgRE9VQkxFIEdSQVZFOzs7OworMDMxMDtDT01CSU5JTkcgQ0FORFJBQklORFU7TW47MjMwO0w7MDMwNiAwMzA3Ozs7O047Tk9OLVNQQUNJTkcgQ0FORFJBQklORFU7Ozs7CiswMzExO0NPTUJJTklORyBJTlZFUlRFRCBCUkVWRTtNbjsyMzA7TDs7Ozs7TjtOT04tU1BBQ0lORyBJTlZFUlRFRCBCUkVWRTs7OzsKKzAzMTI7Q09NQklOSU5HIFRVUk5FRCBDT01NQSBBQk9WRTtNbjsyMzA7TDs7Ozs7TjtOT04tU1BBQ0lORyBUVVJORUQgQ09NTUEgQUJPVkU7Ozs7CiswMzEzO0NPTUJJTklORyBDT01NQSBBQk9WRTtNbjsyMzA7TDs7Ozs7TjtOT04tU1BBQ0lORyBDT01NQSBBQk9WRTtQc2lsaTs7OworMDMxNDtDT01CSU5JTkcgUkVWRVJTRUQgQ09NTUEgQUJPVkU7TW47MjMwO0w7Ozs7O047Tk9OLVNQQUNJTkcgUkVWRVJTRUQgQ09NTUEgQUJPVkU7RGFzaWE7OzsKKzAzMTU7Q09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hUO01uOzIzMjtMOzs7OztOO05PTi1TUEFDSU5HIENPTU1BIEFCT1ZFIFJJR0hUOzs7OworMDMxNjtDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XO01uOzIyMDtMOzs7OztOO05PTi1TUEFDSU5HIEdSQVZFIEJFTE9XOzs7OworMDMxNztDT01CSU5JTkcgQUNVVEUgQUNDRU5UIEJFTE9XO01uOzIyMDtMOzs7OztOO05PTi1TUEFDSU5HIEFDVVRFIEJFTE9XOzs7OworMDMxODtDT01CSU5JTkcgTEVGVCBUQUNLIEJFTE9XO01uOzIyMDtMOzs7OztOO05PTi1TUEFDSU5HIExFRlQgVEFDSyBCRUxPVzs7OzsKKzAzMTk7Q09NQklOSU5HIFJJR0hUIFRBQ0sgQkVMT1c7TW47MjIwO0w7Ozs7O047Tk9OLVNQQUNJTkcgUklHSFQgVEFDSyBCRUxPVzs7OzsKKzAzMUE7Q09NQklOSU5HIExFRlQgQU5HTEUgQUJPVkU7TW47MjMyO0w7Ozs7O047Tk9OLVNQQUNJTkcgTEVGVCBBTkdMRSBBQk9WRTs7OzsKKzAzMUI7Q09NQklOSU5HIEhPUk47TW47MjE2O0w7Ozs7O047Tk9OLVNQQUNJTkcgSE9STjs7OzsKKzAzMUM7Q09NQklOSU5HIExFRlQgSEFMRiBSSU5HIEJFTE9XO01uOzIyMDtMOzs7OztOO05PTi1TUEFDSU5HIExFRlQgSEFMRiBSSU5HIEJFTE9XOzs7OworMDMxRDtDT01CSU5JTkcgVVAgVEFDSyBCRUxPVztNbjsyMjA7TDs7Ozs7TjtOT04tU1BBQ0lORyBVUCBUQUNLIEJFTE9XOzs7OworMDMxRTtDT01CSU5JTkcgRE9XTiBUQUNLIEJFTE9XO01uOzIyMDtMOzs7OztOO05PTi1TUEFDSU5HIERPV04gVEFDSyBCRUxPVzs7OzsKKzAzMUY7Q09NQklOSU5HIFBMVVMgU0lHTiBCRUxPVztNbjsyMjA7TDs7Ozs7TjtOT04tU1BBQ0lORyBQTFVTIFNJR04gQkVMT1c7Ozs7CiswMzIwO0NPTUJJTklORyBNSU5VUyBTSUdOIEJFTE9XO01uOzIyMDtMOzs7OztOO05PTi1TUEFDSU5HIE1JTlVTIFNJR04gQkVMT1c7Ozs7CiswMzIxO0NPTUJJTklORyBQQUxBVEFMSVpFRCBIT09LIEJFTE9XO01uOzIwMjtMOzs7OztOO05PTi1TUEFDSU5HIFBBTEFUQUxJWkVEIEhPT0sgQkVMT1c7Ozs7CiswMzIyO0NPTUJJTklORyBSRVRST0ZMRVggSE9PSyBCRUxPVztNbjsyMDI7TDs7Ozs7TjtOT04tU1BBQ0lORyBSRVRST0ZMRVggSE9PSyBCRUxPVzs7OzsKKzAzMjM7Q09NQklOSU5HIERPVCBCRUxPVztNbjsyMjA7TDs7Ozs7TjtOT04tU1BBQ0lORyBET1QgQkVMT1c7Ozs7CiswMzI0O0NPTUJJTklORyBESUFFUkVTSVMgQkVMT1c7TW47MjIwO0w7Ozs7O047Tk9OLVNQQUNJTkcgRE9VQkxFIERPVCBCRUxPVzs7OzsKKzAzMjU7Q09NQklOSU5HIFJJTkcgQkVMT1c7TW47MjIwO0w7Ozs7O047Tk9OLVNQQUNJTkcgUklORyBCRUxPVzs7OzsKKzAzMjY7Q09NQklOSU5HIENPTU1BIEJFTE9XO01uOzIyMDtMOzs7OztOO05PTi1TUEFDSU5HIENPTU1BIEJFTE9XOzs7OworMDMyNztDT01CSU5JTkcgQ0VESUxMQTtNbjsyMDI7TDs7Ozs7TjtOT04tU1BBQ0lORyBDRURJTExBOzs7OworMDMyODtDT01CSU5JTkcgT0dPTkVLO01uOzIwMjtMOzs7OztOO05PTi1TUEFDSU5HIE9HT05FSzs7OzsKKzAzMjk7Q09NQklOSU5HIFZFUlRJQ0FMIExJTkUgQkVMT1c7TW47MjIwO0w7Ozs7O047Tk9OLVNQQUNJTkcgVkVSVElDQUwgTElORSBCRUxPVzs7OzsKKzAzMkE7Q09NQklOSU5HIEJSSURHRSBCRUxPVztNbjsyMjA7TDs7Ozs7TjtOT04tU1BBQ0lORyBCUklER0UgQkVMT1c7Ozs7CiswMzJCO0NPTUJJTklORyBJTlZFUlRFRCBET1VCTEUgQVJDSCBCRUxPVztNbjsyMjA7TDs7Ozs7TjtOT04tU1BBQ0lORyBJTlZFUlRFRCBET1VCTEUgQVJDSCBCRUxPVzs7OzsKKzAzMkM7Q09NQklOSU5HIENBUk9OIEJFTE9XO01uOzIyMDtMOzs7OztOO05PTi1TUEFDSU5HIEhBQ0VLIEJFTE9XOzs7OworMDMyRDtDT01CSU5JTkcgQ0lSQ1VNRkxFWCBBQ0NFTlQgQkVMT1c7TW47MjIwO0w7Ozs7O047Tk9OLVNQQUNJTkcgQ0lSQ1VNRkxFWCBCRUxPVzs7OzsKKzAzMkU7Q09NQklOSU5HIEJSRVZFIEJFTE9XO01uOzIyMDtMOzs7OztOO05PTi1TUEFDSU5HIEJSRVZFIEJFTE9XOzs7OworMDMyRjtDT01CSU5JTkcgSU5WRVJURUQgQlJFVkUgQkVMT1c7TW47MjIwO0w7Ozs7O047Tk9OLVNQQUNJTkcgSU5WRVJURUQgQlJFVkUgQkVMT1c7Ozs7CiswMzMwO0NPTUJJTklORyBUSUxERSBCRUxPVztNbjsyMjA7TDs7Ozs7TjtOT04tU1BBQ0lORyBUSUxERSBCRUxPVzs7OzsKKzAzMzE7Q09NQklOSU5HIE1BQ1JPTiBCRUxPVztNbjsyMjA7TDs7Ozs7TjtOT04tU1BBQ0lORyBNQUNST04gQkVMT1c7Ozs7CiswMzMyO0NPTUJJTklORyBMT1cgTElORTtNbjsyMjA7TDs7Ozs7TjtOT04tU1BBQ0lORyBVTkRFUlNDT1JFOzs7OworMDMzMztDT01CSU5JTkcgRE9VQkxFIExPVyBMSU5FO01uOzIyMDtMOzs7OztOO05PTi1TUEFDSU5HIERPVUJMRSBVTkRFUlNDT1JFOzs7OworMDMzNDtDT01CSU5JTkcgVElMREUgT1ZFUkxBWTtNbjsxO0w7Ozs7O047Tk9OLVNQQUNJTkcgVElMREUgT1ZFUkxBWTs7OzsKKzAzMzU7Q09NQklOSU5HIFNIT1JUIFNUUk9LRSBPVkVSTEFZO01uOzE7TDs7Ozs7TjtOT04tU1BBQ0lORyBTSE9SVCBCQVIgT1ZFUkxBWTs7OzsKKzAzMzY7Q09NQklOSU5HIExPTkcgU1RST0tFIE9WRVJMQVk7TW47MTtMOzs7OztOO05PTi1TUEFDSU5HIExPTkcgQkFSIE9WRVJMQVk7Ozs7CiswMzM3O0NPTUJJTklORyBTSE9SVCBTT0xJRFVTIE9WRVJMQVk7TW47MTtMOzs7OztOO05PTi1TUEFDSU5HIFNIT1JUIFNMQVNIIE9WRVJMQVk7Ozs7CiswMzM4O0NPTUJJTklORyBMT05HIFNPTElEVVMgT1ZFUkxBWTtNbjsxO0w7Ozs7O047Tk9OLVNQQUNJTkcgTE9ORyBTTEFTSCBPVkVSTEFZOzs7OworMDMzOTtDT01CSU5JTkcgUklHSFQgSEFMRiBSSU5HIEJFTE9XO01uOzIyMDtMOzs7OztOO05PTi1TUEFDSU5HIFJJR0hUIEhBTEYgUklORyBCRUxPVzs7OzsKKzAzM0E7Q09NQklOSU5HIElOVkVSVEVEIEJSSURHRSBCRUxPVztNbjsyMjA7TDs7Ozs7TjtOT04tU1BBQ0lORyBJTlZFUlRFRCBCUklER0UgQkVMT1c7Ozs7CiswMzNCO0NPTUJJTklORyBTUVVBUkUgQkVMT1c7TW47MjIwO0w7Ozs7O047Tk9OLVNQQUNJTkcgU1FVQVJFIEJFTE9XOzs7OworMDMzQztDT01CSU5JTkcgU0VBR1VMTCBCRUxPVztNbjsyMjA7TDs7Ozs7TjtOT04tU1BBQ0lORyBTRUFHVUxMIEJFTE9XOzs7OworMDMzRDtDT01CSU5JTkcgWCBBQk9WRTtNbjsyMzA7TDs7Ozs7TjtOT04tU1BBQ0lORyBYIEFCT1ZFOzs7OworMDMzRTtDT01CSU5JTkcgVkVSVElDQUwgVElMREU7TW47MjMwO0w7Ozs7O047Tk9OLVNQQUNJTkcgVkVSVElDQUwgVElMREU7Ozs7CiswMzNGO0NPTUJJTklORyBET1VCTEUgT1ZFUkxJTkU7TW47MjMwO0w7Ozs7O047Tk9OLVNQQUNJTkcgRE9VQkxFIE9WRVJTQ09SRTs7OzsKKzAzNDA7Q09NQklOSU5HIEdSQVZFIFRPTkUgTUFSSztNbjsyMzA7TDswMzAwOzs7O047Tk9OLVNQQUNJTkcgR1JBVkUgVE9ORSBNQVJLO1ZpZXRuYW1lc2U7OzsKKzAzNDE7Q09NQklOSU5HIEFDVVRFIFRPTkUgTUFSSztNbjsyMzA7TDswMzAxOzs7O047Tk9OLVNQQUNJTkcgQUNVVEUgVE9ORSBNQVJLO1ZpZXRuYW1lc2U7OzsKKzAzNDI7Q09NQklOSU5HIEdSRUVLIFBFUklTUE9NRU5JO01uOzIzMDtMOzs7OztOOzs7OzsKKzAzNDM7Q09NQklOSU5HIEdSRUVLIEtPUk9OSVM7TW47MjMwO0w7MDMxMzs7OztOOzs7OzsKKzAzNDQ7Q09NQklOSU5HIEdSRUVLIERJQUxZVElLQSBUT05PUztNbjsyMzA7TDswMzA4IDAzMEQ7Ozs7TjtHUkVFSyBOT04tU1BBQ0lORyBESUFFUkVTSVMgVE9OT1M7Ozs7CiswMzQ1O0NPTUJJTklORyBHUkVFSyBZUE9HRUdSQU1NRU5JO01uOzIyMDtMOzs7OztOO0dSRUVLIE5PTi1TUEFDSU5HIElPVEEgQkVMT1c7Ozs7CiswMzYwO0NPTUJJTklORyBET1VCTEUgVElMREU7TW47MjM0O0w7Ozs7O047Ozs7OworMDM2MTtDT01CSU5JTkcgRE9VQkxFIElOVkVSVEVEIEJSRVZFO01uOzIzNDtMOzs7OztOOzs7OzsKKzAzNzQ7R1JFRUsgTlVNRVJBTCBTSUdOO1BvOzA7TDswMkI5Ozs7O047R1JFRUsgVVBQRVIgTlVNRVJBTCBTSUdOO0RleGlhIGtlcmFpYTs7OworMDM3NTtHUkVFSyBMT1dFUiBOVU1FUkFMIFNJR047UG87MDtMOzs7OztOOztBcmlzdGVyaSBrZXJhaWE7OzsKKzAzN0E7R1JFRUsgWVBPR0VHUkFNTUVOSTtMbTswO0w7PGNvbXBhdD4gMDAyMCAwMzQ1Ozs7O047R1JFRUsgU1BBQ0lORyBJT1RBIEJFTE9XOzs7OworMDM3RTtHUkVFSyBRVUVTVElPTiBNQVJLO1BvOzA7TDswMDNCOzs7O047O0Vyb3RpbWF0aWtvOzs7CiswMzg0O0dSRUVLIFRPTk9TO1NrOzA7TDs8Y29tcGF0PiAwMDIwIDAzMEQ7Ozs7TjtHUkVFSyBTUEFDSU5HIFRPTk9TOzs7OworMDM4NTtHUkVFSyBESUFMWVRJS0EgVE9OT1M7U2s7MDtMOzAwQTggMDMwRDs7OztOO0dSRUVLIFNQQUNJTkcgRElBRVJFU0lTIFRPTk9TOzs7OworMDM4NjtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFRPTk9TO0x1OzA7TDswMzkxIDAzMEQ7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBUT05PUzs7OzAzQUM7CiswMzg3O0dSRUVLIEFOTyBURUxFSUE7UG87MDtMOzAwQjc7Ozs7Tjs7Ozs7CiswMzg4O0dSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBUT05PUztMdTswO0w7MDM5NSAwMzBEOzs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBUT05PUzs7OzAzQUQ7CiswMzg5O0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFRPTk9TO0x1OzA7TDswMzk3IDAzMEQ7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgVE9OT1M7OzswM0FFOworMDM4QTtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggVE9OT1M7THU7MDtMOzAzOTkgMDMwRDs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgVE9OT1M7OzswM0FGOworMDM4QztHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggVE9OT1M7THU7MDtMOzAzOUYgMDMwRDs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gVE9OT1M7OzswM0NDOworMDM4RTtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggVE9OT1M7THU7MDtMOzAzQTUgMDMwRDs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gVE9OT1M7OzswM0NEOworMDM4RjtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFRPTk9TO0x1OzA7TDswM0E5IDAzMEQ7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBUT05PUzs7OzAzQ0U7CiswMzkwO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBIEFORCBUT05PUztMbDswO0w7MDNCOSAwMzQ0Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgRElBRVJFU0lTIFRPTk9TOzs7OworMDM5MTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQTtMdTswO0w7Ozs7O047Ozs7MDNCMTsKKzAzOTI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQkVUQTtMdTswO0w7Ozs7O047Ozs7MDNCMjsKKzAzOTM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgR0FNTUE7THU7MDtMOzs7OztOOzs7OzAzQjM7CiswMzk0O0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBO0x1OzA7TDs7Ozs7Tjs7OzswM0I0OworMDM5NTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OO0x1OzA7TDs7Ozs7Tjs7OzswM0I1OworMDM5NjtHUkVFSyBDQVBJVEFMIExFVFRFUiBaRVRBO0x1OzA7TDs7Ozs7Tjs7OzswM0I2OworMDM5NztHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEE7THU7MDtMOzs7OztOOzs7OzAzQjc7CiswMzk4O0dSRUVLIENBUElUQUwgTEVUVEVSIFRIRVRBO0x1OzA7TDs7Ozs7Tjs7OzswM0I4OworMDM5OTtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBO0x1OzA7TDs7Ozs7Tjs7OzswM0I5OworMDM5QTtHUkVFSyBDQVBJVEFMIExFVFRFUiBLQVBQQTtMdTswO0w7Ozs7O047Ozs7MDNCQTsKKzAzOUI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgTEFNREE7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIExBTUJEQTs7OzAzQkI7CiswMzlDO0dSRUVLIENBUElUQUwgTEVUVEVSIE1VO0x1OzA7TDs7Ozs7Tjs7OzswM0JDOworMDM5RDtHUkVFSyBDQVBJVEFMIExFVFRFUiBOVTtMdTswO0w7Ozs7O047Ozs7MDNCRDsKKzAzOUU7R1JFRUsgQ0FQSVRBTCBMRVRURVIgWEk7THU7MDtMOzs7OztOOzs7OzAzQkU7CiswMzlGO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST047THU7MDtMOzs7OztOOzs7OzAzQkY7CiswM0EwO0dSRUVLIENBUElUQUwgTEVUVEVSIFBJO0x1OzA7TDs7Ozs7Tjs7OzswM0MwOworMDNBMTtHUkVFSyBDQVBJVEFMIExFVFRFUiBSSE87THU7MDtMOzs7OztOOzs7OzAzQzE7CiswM0EzO0dSRUVLIENBUElUQUwgTEVUVEVSIFNJR01BO0x1OzA7TDs7Ozs7Tjs7OzswM0MzOworMDNBNDtHUkVFSyBDQVBJVEFMIExFVFRFUiBUQVU7THU7MDtMOzs7OztOOzs7OzAzQzQ7CiswM0E1O0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT047THU7MDtMOzs7OztOOzs7OzAzQzU7CiswM0E2O0dSRUVLIENBUElUQUwgTEVUVEVSIFBISTtMdTswO0w7Ozs7O047Ozs7MDNDNjsKKzAzQTc7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQ0hJO0x1OzA7TDs7Ozs7Tjs7OzswM0M3OworMDNBODtHUkVFSyBDQVBJVEFMIExFVFRFUiBQU0k7THU7MDtMOzs7OztOOzs7OzAzQzg7CiswM0E5O0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBO0x1OzA7TDs7Ozs7Tjs7OzswM0M5OworMDNBQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBO0x1OzA7TDswMzk5IDAzMDg7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIERJQUVSRVNJUzs7OzAzQ0E7CiswM0FCO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0E7THU7MDtMOzAzQTUgMDMwODs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gRElBRVJFU0lTOzs7MDNDQjsKKzAzQUM7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVE9OT1M7TGw7MDtMOzAzQjEgMDMwRDs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBUT05PUzs7MDM4Njs7MDM4NgorMDNBRDtHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIFRPTk9TO0xsOzA7TDswM0I1IDAzMEQ7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBUT05PUzs7MDM4ODs7MDM4OAorMDNBRTtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggVE9OT1M7TGw7MDtMOzAzQjcgMDMwRDs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgVE9OT1M7OzAzODk7OzAzODkKKzAzQUY7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBUT05PUztMbDswO0w7MDNCOSAwMzBEOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgVE9OT1M7OzAzOEE7OzAzOEEKKzAzQjA7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EgQU5EIFRPTk9TO0xsOzA7TDswM0M1IDAzNDQ7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBESUFFUkVTSVMgVE9OT1M7Ozs7CiswM0IxO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQTtMbDswO0w7Ozs7O047OzswMzkxOzswMzkxCiswM0IyO0dSRUVLIFNNQUxMIExFVFRFUiBCRVRBO0xsOzA7TDs7Ozs7Tjs7OzAzOTI7OzAzOTIKKzAzQjM7R1JFRUsgU01BTEwgTEVUVEVSIEdBTU1BO0xsOzA7TDs7Ozs7Tjs7OzAzOTM7OzAzOTMKKzAzQjQ7R1JFRUsgU01BTEwgTEVUVEVSIERFTFRBO0xsOzA7TDs7Ozs7Tjs7OzAzOTQ7OzAzOTQKKzAzQjU7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT047TGw7MDtMOzs7OztOOzs7MDM5NTs7MDM5NQorMDNCNjtHUkVFSyBTTUFMTCBMRVRURVIgWkVUQTtMbDswO0w7Ozs7O047OzswMzk2OzswMzk2CiswM0I3O0dSRUVLIFNNQUxMIExFVFRFUiBFVEE7TGw7MDtMOzs7OztOOzs7MDM5Nzs7MDM5NworMDNCODtHUkVFSyBTTUFMTCBMRVRURVIgVEhFVEE7TGw7MDtMOzs7OztOOzs7MDM5ODs7MDM5OAorMDNCOTtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQTtMbDswO0w7Ozs7O047OzswMzk5OzswMzk5CiswM0JBO0dSRUVLIFNNQUxMIExFVFRFUiBLQVBQQTtMbDswO0w7Ozs7O047OzswMzlBOzswMzlBCiswM0JCO0dSRUVLIFNNQUxMIExFVFRFUiBMQU1EQTtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIExBTUJEQTs7MDM5Qjs7MDM5QgorMDNCQztHUkVFSyBTTUFMTCBMRVRURVIgTVU7TGw7MDtMOzs7OztOOzs7MDM5Qzs7MDM5QworMDNCRDtHUkVFSyBTTUFMTCBMRVRURVIgTlU7TGw7MDtMOzs7OztOOzs7MDM5RDs7MDM5RAorMDNCRTtHUkVFSyBTTUFMTCBMRVRURVIgWEk7TGw7MDtMOzs7OztOOzs7MDM5RTs7MDM5RQorMDNCRjtHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTjtMbDswO0w7Ozs7O047OzswMzlGOzswMzlGCiswM0MwO0dSRUVLIFNNQUxMIExFVFRFUiBQSTtMbDswO0w7Ozs7O047OzswM0EwOzswM0EwCiswM0MxO0dSRUVLIFNNQUxMIExFVFRFUiBSSE87TGw7MDtMOzs7OztOOzs7MDNBMTs7MDNBMQorMDNDMjtHUkVFSyBTTUFMTCBMRVRURVIgRklOQUwgU0lHTUE7TGw7MDtMOzs7OztOOzs7MDNBMzs7MDNBMworMDNDMztHUkVFSyBTTUFMTCBMRVRURVIgU0lHTUE7TGw7MDtMOzs7OztOOzs7MDNBMzs7MDNBMworMDNDNDtHUkVFSyBTTUFMTCBMRVRURVIgVEFVO0xsOzA7TDs7Ozs7Tjs7OzAzQTQ7OzAzQTQKKzAzQzU7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT047TGw7MDtMOzs7OztOOzs7MDNBNTs7MDNBNQorMDNDNjtHUkVFSyBTTUFMTCBMRVRURVIgUEhJO0xsOzA7TDs7Ozs7Tjs7OzAzQTY7OzAzQTYKKzAzQzc7R1JFRUsgU01BTEwgTEVUVEVSIENISTtMbDswO0w7Ozs7O047OzswM0E3OzswM0E3CiswM0M4O0dSRUVLIFNNQUxMIExFVFRFUiBQU0k7TGw7MDtMOzs7OztOOzs7MDNBODs7MDNBOAorMDNDOTtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0E7TGw7MDtMOzs7OztOOzs7MDNBOTs7MDNBOQorMDNDQTtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQTtMbDswO0w7MDNCOSAwMzA4Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgRElBRVJFU0lTOzswM0FBOzswM0FBCiswM0NCO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBO0xsOzA7TDswM0M1IDAzMDg7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBESUFFUkVTSVM7OzAzQUI7OzAzQUIKKzAzQ0M7R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBUT05PUztMbDswO0w7MDNCRiAwMzBEOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gVE9OT1M7OzAzOEM7OzAzOEMKKzAzQ0Q7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBUT05PUztMbDswO0w7MDNDNSAwMzBEOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gVE9OT1M7OzAzOEU7OzAzOEUKKzAzQ0U7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggVE9OT1M7TGw7MDtMOzAzQzkgMDMwRDs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBUT05PUzs7MDM4Rjs7MDM4RgorMDNEMDtHUkVFSyBCRVRBIFNZTUJPTDtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIENVUkxFRCBCRVRBOzswMzkyOzsKKzAzRDE7R1JFRUsgVEhFVEEgU1lNQk9MO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgU0NSSVBUIFRIRVRBOzswMzk4OzsKKzAzRDI7R1JFRUsgVVBTSUxPTiBXSVRIIEhPT0sgU1lNQk9MO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIEhPT0s7Ozs7CiswM0QzO0dSRUVLIFVQU0lMT04gV0lUSCBBQ1VURSBBTkQgSE9PSyBTWU1CT0w7THU7MDtMOzAzRDIgMDMwRDs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gSE9PSyBUT05PUzs7OzsKKzAzRDQ7R1JFRUsgVVBTSUxPTiBXSVRIIERJQUVSRVNJUyBBTkQgSE9PSyBTWU1CT0w7THU7MDtMOzAzRDIgMDMwODs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gSE9PSyBESUFFUkVTSVM7Ozs7CiswM0Q1O0dSRUVLIFBISSBTWU1CT0w7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBTQ1JJUFQgUEhJOzswM0E2OzsKKzAzRDY7R1JFRUsgUEkgU1lNQk9MO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgUEk7OzAzQTA7OworMDNEQTtHUkVFSyBMRVRURVIgU1RJR01BO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBTVElHTUE7Ozs7CiswM0RDO0dSRUVLIExFVFRFUiBESUdBTU1BO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBESUdBTU1BOzs7OworMDNERTtHUkVFSyBMRVRURVIgS09QUEE7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIEtPUFBBOzs7OworMDNFMDtHUkVFSyBMRVRURVIgU0FNUEk7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFNBTVBJOzs7OworMDNFMjtDT1BUSUMgQ0FQSVRBTCBMRVRURVIgU0hFSTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgU0hFSTs7OzAzRTM7CiswM0UzO0NPUFRJQyBTTUFMTCBMRVRURVIgU0hFSTtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIFNIRUk7OzAzRTI7OzAzRTIKKzAzRTQ7Q09QVElDIENBUElUQUwgTEVUVEVSIEZFSTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgRkVJOzs7MDNFNTsKKzAzRTU7Q09QVElDIFNNQUxMIExFVFRFUiBGRUk7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBGRUk7OzAzRTQ7OzAzRTQKKzAzRTY7Q09QVElDIENBUElUQUwgTEVUVEVSIEtIRUk7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIEtIRUk7OzswM0U3OworMDNFNztDT1BUSUMgU01BTEwgTEVUVEVSIEtIRUk7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBLSEVJOzswM0U2OzswM0U2CiswM0U4O0NPUFRJQyBDQVBJVEFMIExFVFRFUiBIT1JJO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBIT1JJOzs7MDNFOTsKKzAzRTk7Q09QVElDIFNNQUxMIExFVFRFUiBIT1JJO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgSE9SSTs7MDNFODs7MDNFOAorMDNFQTtDT1BUSUMgQ0FQSVRBTCBMRVRURVIgR0FOR0lBO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBHQU5HSUE7OzswM0VCOworMDNFQjtDT1BUSUMgU01BTEwgTEVUVEVSIEdBTkdJQTtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIEdBTkdJQTs7MDNFQTs7MDNFQQorMDNFQztDT1BUSUMgQ0FQSVRBTCBMRVRURVIgU0hJTUE7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFNISU1BOzs7MDNFRDsKKzAzRUQ7Q09QVElDIFNNQUxMIExFVFRFUiBTSElNQTtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIFNISU1BOzswM0VDOzswM0VDCiswM0VFO0NPUFRJQyBDQVBJVEFMIExFVFRFUiBERUk7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIERFSTs7OzAzRUY7CiswM0VGO0NPUFRJQyBTTUFMTCBMRVRURVIgREVJO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgREVJOzswM0VFOzswM0VFCiswM0YwO0dSRUVLIEtBUFBBIFNZTUJPTDtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIFNDUklQVCBLQVBQQTs7MDM5QTs7CiswM0YxO0dSRUVLIFJITyBTWU1CT0w7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBUQUlMRUQgUkhPOzswM0ExOzsKKzAzRjI7R1JFRUsgTFVOQVRFIFNJR01BIFNZTUJPTDtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIExVTkFURSBTSUdNQTs7OzsKKzAzRjM7R1JFRUsgTEVUVEVSIFlPVDtMbzswO0w7Ozs7O047Ozs7OworMDQwMTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJTztMdTswO0w7MDQxNSAwMzA4Ozs7O047Ozs7MDQ1MTsKKzA0MDI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREpFO0x1OzA7TDs7Ozs7Tjs7U2VyYm9jcm9hdGlhbjs7MDQ1MjsKKzA0MDM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0pFO0x1OzA7TDswNDEzIDAzMDE7Ozs7Tjs7OzswNDUzOworMDQwNDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVS1JBSU5JQU4gSUU7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEU7OzswNDU0OworMDQwNTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBEWkU7THU7MDtMOzs7OztOOzs7OzA0NTU7CiswNDA2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSTs7OzA0NTY7CiswNDA3O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFlJO0x1OzA7TDswNDA2IDAzMDg7Ozs7Tjs7VWtyYWluaWFuOzswNDU3OworMDQwODtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBKRTtMdTswO0w7Ozs7O047Ozs7MDQ1ODsKKzA0MDk7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTEpFO0x1OzA7TDs7Ozs7Tjs7OzswNDU5OworMDQwQTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBOSkU7THU7MDtMOzs7OztOOzs7OzA0NUE7CiswNDBCO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFRTSEU7THU7MDtMOzs7OztOOztTZXJib2Nyb2F0aWFuOzswNDVCOworMDQwQztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLSkU7THU7MDtMOzA0MUEgMDMwMTs7OztOOzs7OzA0NUM7CiswNDBFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIFU7THU7MDtMOzA0MjMgMDMwNjs7OztOOztCeWVsb3J1c3NpYW47OzA0NUU7CiswNDBGO0NZUklMTElDIENBUElUQUwgTEVUVEVSIERaSEU7THU7MDtMOzs7OztOOzs7OzA0NUY7CiswNDEwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEE7THU7MDtMOzs7OztOOzs7OzA0MzA7CiswNDExO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEJFO0x1OzA7TDs7Ozs7Tjs7OzswNDMxOworMDQxMjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBWRTtMdTswO0w7Ozs7O047Ozs7MDQzMjsKKzA0MTM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHRTs7OzA0MzM7CiswNDE0O0NZUklMTElDIENBUElUQUwgTEVUVEVSIERFO0x1OzA7TDs7Ozs7Tjs7OzswNDM0OworMDQxNTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRTtMdTswO0w7Ozs7O047Ozs7MDQzNTsKKzA0MTY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFO0x1OzA7TDs7Ozs7Tjs7OzswNDM2OworMDQxNztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRTtMdTswO0w7Ozs7O047Ozs7MDQzNzsKKzA0MTg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUk7OzswNDM4OworMDQxOTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBJO0x1OzA7TDswNDE4IDAzMDY7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBJSTs7OzA0Mzk7CiswNDFBO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtBO0x1OzA7TDs7Ozs7Tjs7OzswNDNBOworMDQxQjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTDtMdTswO0w7Ozs7O047Ozs7MDQzQjsKKzA0MUM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU07THU7MDtMOzs7OztOOzs7OzA0M0M7CiswNDFEO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVOO0x1OzA7TDs7Ozs7Tjs7OzswNDNEOworMDQxRTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPO0x1OzA7TDs7Ozs7Tjs7OzswNDNFOworMDQxRjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRTtMdTswO0w7Ozs7O047Ozs7MDQzRjsKKzA0MjA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVI7THU7MDtMOzs7OztOOzs7OzA0NDA7CiswNDIxO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVTO0x1OzA7TDs7Ozs7Tjs7OzswNDQxOworMDQyMjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURTtMdTswO0w7Ozs7O047Ozs7MDQ0MjsKKzA0MjM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVTtMdTswO0w7Ozs7O047Ozs7MDQ0MzsKKzA0MjQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUY7THU7MDtMOzs7OztOOzs7OzA0NDQ7CiswNDI1O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEhBO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLSEE7OzswNDQ1OworMDQyNjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUU0U7THU7MDtMOzs7OztOOzs7OzA0NDY7CiswNDI3O0NZUklMTElDIENBUElUQUwgTEVUVEVSIENIRTtMdTswO0w7Ozs7O047Ozs7MDQ0NzsKKzA0Mjg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBO0x1OzA7TDs7Ozs7Tjs7OzswNDQ4OworMDQyOTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSENIQTtMdTswO0w7Ozs7O047Ozs7MDQ0OTsKKzA0MkE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEFSRCBTSUdOO0x1OzA7TDs7Ozs7Tjs7OzswNDRBOworMDQyQjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJJOzs7MDQ0QjsKKzA0MkM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU09GVCBTSUdOO0x1OzA7TDs7Ozs7Tjs7OzswNDRDOworMDQyRDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBSRVZFUlNFRCBFOzs7MDQ0RDsKKzA0MkU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWVU7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElVOzs7MDQ0RTsKKzA0MkY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUE7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElBOzs7MDQ0RjsKKzA0MzA7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEE7TGw7MDtMOzs7OztOOzs7MDQxMDs7MDQxMAorMDQzMTtDWVJJTExJQyBTTUFMTCBMRVRURVIgQkU7TGw7MDtMOzs7OztOOzs7MDQxMTs7MDQxMQorMDQzMjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVkU7TGw7MDtMOzs7OztOOzs7MDQxMjs7MDQxMgorMDQzMztDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgR0U7OzA0MTM7OzA0MTMKKzA0MzQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIERFO0xsOzA7TDs7Ozs7Tjs7OzA0MTQ7OzA0MTQKKzA0MzU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElFO0xsOzA7TDs7Ozs7Tjs7OzA0MTU7OzA0MTUKKzA0MzY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRTtMbDswO0w7Ozs7O047OzswNDE2OzswNDE2CiswNDM3O0NZUklMTElDIFNNQUxMIExFVFRFUiBaRTtMbDswO0w7Ozs7O047OzswNDE3OzswNDE3CiswNDM4O0NZUklMTElDIFNNQUxMIExFVFRFUiBJO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgSUk7OzA0MTg7OzA0MTgKKzA0Mzk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEk7TGw7MDtMOzA0MzggMDMwNjs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJSTs7MDQxOTs7MDQxOQorMDQzQTtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0E7TGw7MDtMOzs7OztOOzs7MDQxQTs7MDQxQQorMDQzQjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRUw7TGw7MDtMOzs7OztOOzs7MDQxQjs7MDQxQgorMDQzQztDWVJJTExJQyBTTUFMTCBMRVRURVIgRU07TGw7MDtMOzs7OztOOzs7MDQxQzs7MDQxQworMDQzRDtDWVJJTExJQyBTTUFMTCBMRVRURVIgRU47TGw7MDtMOzs7OztOOzs7MDQxRDs7MDQxRAorMDQzRTtDWVJJTExJQyBTTUFMTCBMRVRURVIgTztMbDswO0w7Ozs7O047OzswNDFFOzswNDFFCiswNDNGO0NZUklMTElDIFNNQUxMIExFVFRFUiBQRTtMbDswO0w7Ozs7O047OzswNDFGOzswNDFGCiswNDQwO0NZUklMTElDIFNNQUxMIExFVFRFUiBFUjtMbDswO0w7Ozs7O047OzswNDIwOzswNDIwCiswNDQxO0NZUklMTElDIFNNQUxMIExFVFRFUiBFUztMbDswO0w7Ozs7O047OzswNDIxOzswNDIxCiswNDQyO0NZUklMTElDIFNNQUxMIExFVFRFUiBURTtMbDswO0w7Ozs7O047OzswNDIyOzswNDIyCiswNDQzO0NZUklMTElDIFNNQUxMIExFVFRFUiBVO0xsOzA7TDs7Ozs7Tjs7OzA0MjM7OzA0MjMKKzA0NDQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVGO0xsOzA7TDs7Ozs7Tjs7OzA0MjQ7OzA0MjQKKzA0NDU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0hBOzswNDI1OzswNDI1CiswNDQ2O0NZUklMTElDIFNNQUxMIExFVFRFUiBUU0U7TGw7MDtMOzs7OztOOzs7MDQyNjs7MDQyNgorMDQ0NztDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFO0xsOzA7TDs7Ozs7Tjs7OzA0Mjc7OzA0MjcKKzA0NDg7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQTtMbDswO0w7Ozs7O047OzswNDI4OzswNDI4CiswNDQ5O0NZUklMTElDIFNNQUxMIExFVFRFUiBTSENIQTtMbDswO0w7Ozs7O047OzswNDI5OzswNDI5CiswNDRBO0NZUklMTElDIFNNQUxMIExFVFRFUiBIQVJEIFNJR047TGw7MDtMOzs7OztOOzs7MDQyQTs7MDQyQQorMDQ0QjtDWVJJTExJQyBTTUFMTCBMRVRURVIgWUVSVTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUkk7OzA0MkI7OzA0MkIKKzA0NEM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNPRlQgU0lHTjtMbDswO0w7Ozs7O047OzswNDJDOzswNDJDCiswNDREO0NZUklMTElDIFNNQUxMIExFVFRFUiBFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgUkVWRVJTRUQgRTs7MDQyRDs7MDQyRAorMDQ0RTtDWVJJTExJQyBTTUFMTCBMRVRURVIgWVU7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBJVTs7MDQyRTs7MDQyRQorMDQ0RjtDWVJJTExJQyBTTUFMTCBMRVRURVIgWUE7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBJQTs7MDQyRjs7MDQyRgorMDQ1MTtDWVJJTExJQyBTTUFMTCBMRVRURVIgSU87TGw7MDtMOzA0MzUgMDMwODs7OztOOzs7MDQwMTs7MDQwMQorMDQ1MjtDWVJJTExJQyBTTUFMTCBMRVRURVIgREpFO0xsOzA7TDs7Ozs7Tjs7U2VyYm9jcm9hdGlhbjswNDAyOzswNDAyCiswNDUzO0NZUklMTElDIFNNQUxMIExFVFRFUiBHSkU7TGw7MDtMOzA0MzMgMDMwMTs7OztOOzs7MDQwMzs7MDQwMworMDQ1NDtDWVJJTExJQyBTTUFMTCBMRVRURVIgVUtSQUlOSUFOIElFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRTs7MDQwNDs7MDQwNAorMDQ1NTtDWVJJTExJQyBTTUFMTCBMRVRURVIgRFpFO0xsOzA7TDs7Ozs7Tjs7OzA0MDU7OzA0MDUKKzA0NTY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEk7OzA0MDY7OzA0MDYKKzA0NTc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFlJO0xsOzA7TDswNDU2IDAzMDg7Ozs7Tjs7VWtyYWluaWFuOzA0MDc7OzA0MDcKKzA0NTg7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEpFO0xsOzA7TDs7Ozs7Tjs7OzA0MDg7OzA0MDgKKzA0NTk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIExKRTtMbDswO0w7Ozs7O047OzswNDA5OzswNDA5CiswNDVBO0NZUklMTElDIFNNQUxMIExFVFRFUiBOSkU7TGw7MDtMOzs7OztOOzs7MDQwQTs7MDQwQQorMDQ1QjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNIRTtMbDswO0w7Ozs7O047O1NlcmJvY3JvYXRpYW47MDQwQjs7MDQwQgorMDQ1QztDWVJJTExJQyBTTUFMTCBMRVRURVIgS0pFO0xsOzA7TDswNDNBIDAzMDE7Ozs7Tjs7OzA0MEM7OzA0MEMKKzA0NUU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIFU7TGw7MDtMOzA0NDMgMDMwNjs7OztOOztCeWVsb3J1c3NpYW47MDQwRTs7MDQwRQorMDQ1RjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRFpIRTtMbDswO0w7Ozs7O047OzswNDBGOzswNDBGCiswNDYwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIE9NRUdBO0x1OzA7TDs7Ozs7Tjs7OzswNDYxOworMDQ2MTtDWVJJTExJQyBTTUFMTCBMRVRURVIgT01FR0E7TGw7MDtMOzs7OztOOzs7MDQ2MDs7MDQ2MAorMDQ2MjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZQVQ7THU7MDtMOzs7OztOOzs7OzA0NjM7CiswNDYzO0NZUklMTElDIFNNQUxMIExFVFRFUiBZQVQ7TGw7MDtMOzs7OztOOzs7MDQ2Mjs7MDQ2MgorMDQ2NDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJT1RJRklFRCBFO0x1OzA7TDs7Ozs7Tjs7OzswNDY1OworMDQ2NTtDWVJJTExJQyBTTUFMTCBMRVRURVIgSU9USUZJRUQgRTtMbDswO0w7Ozs7O047OzswNDY0OzswNDY0CiswNDY2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIExJVFRMRSBZVVM7THU7MDtMOzs7OztOOzs7OzA0Njc7CiswNDY3O0NZUklMTElDIFNNQUxMIExFVFRFUiBMSVRUTEUgWVVTO0xsOzA7TDs7Ozs7Tjs7OzA0NjY7OzA0NjYKKzA0Njg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU9USUZJRUQgTElUVExFIFlVUztMdTswO0w7Ozs7O047Ozs7MDQ2OTsKKzA0Njk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElPVElGSUVEIExJVFRMRSBZVVM7TGw7MDtMOzs7OztOOzs7MDQ2ODs7MDQ2OAorMDQ2QTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCSUcgWVVTO0x1OzA7TDs7Ozs7Tjs7OzswNDZCOworMDQ2QjtDWVJJTExJQyBTTUFMTCBMRVRURVIgQklHIFlVUztMbDswO0w7Ozs7O047OzswNDZBOzswNDZBCiswNDZDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElPVElGSUVEIEJJRyBZVVM7THU7MDtMOzs7OztOOzs7OzA0NkQ7CiswNDZEO0NZUklMTElDIFNNQUxMIExFVFRFUiBJT1RJRklFRCBCSUcgWVVTO0xsOzA7TDs7Ozs7Tjs7OzA0NkM7OzA0NkMKKzA0NkU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS1NJO0x1OzA7TDs7Ozs7Tjs7OzswNDZGOworMDQ2RjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS1NJO0xsOzA7TDs7Ozs7Tjs7OzA0NkU7OzA0NkUKKzA0NzA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUFNJO0x1OzA7TDs7Ozs7Tjs7OzswNDcxOworMDQ3MTtDWVJJTExJQyBTTUFMTCBMRVRURVIgUFNJO0xsOzA7TDs7Ozs7Tjs7OzA0NzA7OzA0NzAKKzA0NzI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRklUQTtMdTswO0w7Ozs7O047Ozs7MDQ3MzsKKzA0NzM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEZJVEE7TGw7MDtMOzs7OztOOzs7MDQ3Mjs7MDQ3MgorMDQ3NDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJWkhJVFNBO0x1OzA7TDs7Ozs7Tjs7OzswNDc1OworMDQ3NTtDWVJJTExJQyBTTUFMTCBMRVRURVIgSVpISVRTQTtMbDswO0w7Ozs7O047OzswNDc0OzswNDc0CiswNDc2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIElaSElUU0EgV0lUSCBET1VCTEUgR1JBVkUgQUNDRU5UO0x1OzA7TDswNDc0IDAzMEY7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJWkhJVFNBIERPVUJMRSBHUkFWRTs7OzA0Nzc7CiswNDc3O0NZUklMTElDIFNNQUxMIExFVFRFUiBJWkhJVFNBIFdJVEggRE9VQkxFIEdSQVZFIEFDQ0VOVDtMbDswO0w7MDQ3NSAwMzBGOzs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElaSElUU0EgRE9VQkxFIEdSQVZFOzswNDc2OzswNDc2CiswNDc4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFVLO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVSyBESUdSQVBIOzs7MDQ3OTsKKzA0Nzk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFVLO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVUsgRElHUkFQSDs7MDQ3ODs7MDQ3OAorMDQ3QTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBST1VORCBPTUVHQTtMdTswO0w7Ozs7O047Ozs7MDQ3QjsKKzA0N0I7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFJPVU5EIE9NRUdBO0xsOzA7TDs7Ozs7Tjs7OzA0N0E7OzA0N0EKKzA0N0M7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBUSVRMTztMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgT01FR0EgVElUTE87OzswNDdEOworMDQ3RDtDWVJJTExJQyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBUSVRMTztMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE9NRUdBIFRJVExPOzswNDdDOzswNDdDCiswNDdFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIE9UO0x1OzA7TDs7Ozs7Tjs7OzswNDdGOworMDQ3RjtDWVJJTExJQyBTTUFMTCBMRVRURVIgT1Q7TGw7MDtMOzs7OztOOzs7MDQ3RTs7MDQ3RQorMDQ4MDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLT1BQQTtMdTswO0w7Ozs7O047Ozs7MDQ4MTsKKzA0ODE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtPUFBBO0xsOzA7TDs7Ozs7Tjs7OzA0ODA7OzA0ODAKKzA0ODI7Q1lSSUxMSUMgVEhPVVNBTkRTIFNJR047U287MDtMOzs7OztOOzs7OzsKKzA0ODM7Q09NQklOSU5HIENZUklMTElDIFRJVExPO01uOzIzMDtMOzs7OztOO0NZUklMTElDIE5PTi1TUEFDSU5HIFRJVExPOzs7OworMDQ4NDtDT01CSU5JTkcgQ1lSSUxMSUMgUEFMQVRBTElaQVRJT047TW47MjMwO0w7Ozs7O047Q1lSSUxMSUMgTk9OLVNQQUNJTkcgUEFMQVRBTElaQVRJT047Ozs7CiswNDg1O0NPTUJJTklORyBDWVJJTExJQyBEQVNJQSBQTkVVTUFUQTtNbjsyMzA7TDs7Ozs7TjtDWVJJTExJQyBOT04tU1BBQ0lORyBEQVNJQSBQTkVVTUFUQTs7OzsKKzA0ODY7Q09NQklOSU5HIENZUklMTElDIFBTSUxJIFBORVVNQVRBO01uOzIzMDtMOzs7OztOO0NZUklMTElDIE5PTi1TUEFDSU5HIFBTSUxJIFBORVVNQVRBOzs7OworMDQ5MDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUgV0lUSCBVUFRVUk47THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEdFIFdJVEggVVBUVVJOOzs7MDQ5MTsKKzA0OTE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRSBXSVRIIFVQVFVSTjtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEdFIFdJVEggVVBUVVJOOzswNDkwOzswNDkwCiswNDkyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0UgQkFSOzs7MDQ5MzsKKzA0OTM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEdFIEJBUjs7MDQ5Mjs7MDQ5MgorMDQ5NDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUgV0lUSCBNSURETEUgSE9PSztMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0UgSE9PSzs7OzA0OTU7CiswNDk1O0NZUklMTElDIFNNQUxMIExFVFRFUiBHSEUgV0lUSCBNSURETEUgSE9PSztMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEdFIEhPT0s7OzA0OTQ7OzA0OTQKKzA0OTY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFIFdJVEggREVTQ0VOREVSO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUgV0lUSCBSSUdIVCBERVNDRU5ERVI7OzswNDk3OworMDQ5NztDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFIFdJVEggREVTQ0VOREVSO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFIFdJVEggUklHSFQgREVTQ0VOREVSOzswNDk2OzswNDk2CiswNDk4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFpFIFdJVEggREVTQ0VOREVSO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRSBDRURJTExBOzs7MDQ5OTsKKzA0OTk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFIFdJVEggREVTQ0VOREVSO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUgQ0VESUxMQTs7MDQ5ODs7MDQ5OAorMDQ5QTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUjtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBSSUdIVCBERVNDRU5ERVI7OzswNDlCOworMDQ5QjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVI7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIFJJR0hUIERFU0NFTkRFUjs7MDQ5QTs7MDQ5QQorMDQ5QztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIFZFUlRJQ0FMIFNUUk9LRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgVkVSVElDQUwgQkFSOzs7MDQ5RDsKKzA0OUQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggVkVSVElDQUwgU1RST0tFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgVkVSVElDQUwgQkFSOzswNDlDOzswNDlDCiswNDlFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggU1RST0tFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBCQVI7OzswNDlGOworMDQ5RjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBLQSBCQVI7OzA0OUU7OzA0OUUKKzA0QTA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkFTSEtJUiBLQTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUkVWRVJTRUQgR0UgS0E7OzswNEExOworMDRBMTtDWVJJTExJQyBTTUFMTCBMRVRURVIgQkFTSEtJUiBLQTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFJFVkVSU0VEIEdFIEtBOzswNEEwOzswNEEwCiswNEEyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVOIFdJVEggREVTQ0VOREVSO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTiBXSVRIIFJJR0hUIERFU0NFTkRFUjs7OzA0QTM7CiswNEEzO0NZUklMTElDIFNNQUxMIExFVFRFUiBFTiBXSVRIIERFU0NFTkRFUjtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOIFdJVEggUklHSFQgREVTQ0VOREVSOzswNEEyOzswNEEyCiswNEE0O0NZUklMTElDIENBUElUQUwgTElHQVRVUkUgRU4gR0hFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTiBHRTs7OzA0QTU7CiswNEE1O0NZUklMTElDIFNNQUxMIExJR0FUVVJFIEVOIEdIRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOIEdFOzswNEE0OzswNEE0CiswNEE2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFBFIFdJVEggTUlERExFIEhPT0s7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFBFIEhPT0s7QWJraGFzaWFuOzswNEE3OworMDRBNztDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUgV0lUSCBNSURETEUgSE9PSztMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFBFIEhPT0s7QWJraGFzaWFuOzA0QTY7OzA0QTYKKzA0QTg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQUJLSEFTSUFOIEhBO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPIEhPT0s7OzswNEE5OworMDRBOTtDWVJJTExJQyBTTUFMTCBMRVRURVIgQUJLSEFTSUFOIEhBO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgTyBIT09LOzswNEE4OzswNEE4CiswNEFBO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVTIFdJVEggREVTQ0VOREVSO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUyBDRURJTExBOzs7MDRBQjsKKzA0QUI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTIFdJVEggREVTQ0VOREVSO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMgQ0VESUxMQTs7MDRBQTs7MDRBQQorMDRBQztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURSBXSVRIIERFU0NFTkRFUjtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEUgV0lUSCBSSUdIVCBERVNDRU5ERVI7OzswNEFEOworMDRBRDtDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUgV0lUSCBERVNDRU5ERVI7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBURSBXSVRIIFJJR0hUIERFU0NFTkRFUjs7MDRBQzs7MDRBQworMDRBRTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTVFJBSUdIVCBVO0x1OzA7TDs7Ozs7Tjs7OzswNEFGOworMDRBRjtDWVJJTExJQyBTTUFMTCBMRVRURVIgU1RSQUlHSFQgVTtMbDswO0w7Ozs7O047OzswNEFFOzswNEFFCiswNEIwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUgV0lUSCBTVFJPS0U7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUgQkFSOzs7MDRCMTsKKzA0QjE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNUUkFJR0hUIFUgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBTVFJBSUdIVCBVIEJBUjs7MDRCMDs7MDRCMAorMDRCMjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQSBXSVRIIERFU0NFTkRFUjtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0hBIFdJVEggUklHSFQgREVTQ0VOREVSOzs7MDRCMzsKKzA0QjM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBIFdJVEggREVTQ0VOREVSO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0hBIFdJVEggUklHSFQgREVTQ0VOREVSOzswNEIyOzswNEIyCiswNEI0O0NZUklMTElDIENBUElUQUwgTElHQVRVUkUgVEUgVFNFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURSBUU0U7QWJraGFzaWFuOzswNEI1OworMDRCNTtDWVJJTExJQyBTTUFMTCBMSUdBVFVSRSBURSBUU0U7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBURSBUU0U7QWJraGFzaWFuOzA0QjQ7OzA0QjQKKzA0QjY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggREVTQ0VOREVSO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUgV0lUSCBSSUdIVCBERVNDRU5ERVI7OzswNEI3OworMDRCNztDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggREVTQ0VOREVSO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggUklHSFQgREVTQ0VOREVSOzswNEI2OzswNEI2CiswNEI4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIFZFUlRJQ0FMIFNUUk9LRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFZFUlRJQ0FMIEJBUjs7OzA0Qjk7CiswNEI5O0NZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBWRVJUSUNBTCBTVFJPS0U7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgVkVSVElDQUwgQkFSOzswNEI4OzswNEI4CiswNEJBO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNISEE7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEg7OzswNEJCOworMDRCQjtDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hIQTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEg7OzA0QkE7OzA0QkEKKzA0QkM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQUJLSEFTSUFOIENIRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUgSE9PSzs7OzA0QkQ7CiswNEJEO0NZUklMTElDIFNNQUxMIExFVFRFUiBBQktIQVNJQU4gQ0hFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUgSE9PSzs7MDRCQzs7MDRCQworMDRCRTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBQktIQVNJQU4gQ0hFIFdJVEggREVTQ0VOREVSO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRSBIT09LIE9HT05FSzs7OzA0QkY7CiswNEJGO0NZUklMTElDIFNNQUxMIExFVFRFUiBBQktIQVNJQU4gQ0hFIFdJVEggREVTQ0VOREVSO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUgSE9PSyBPR09ORUs7OzA0QkU7OzA0QkUKKzA0QzA7Q1lSSUxMSUMgTEVUVEVSIFBBTE9DSEtBO0xvOzA7TDs7Ozs7TjtDWVJJTExJQyBMRVRURVIgSTs7OzsKKzA0QzE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFIFdJVEggQlJFVkU7THU7MDtMOzA0MTYgMDMwNjs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIFpIRTs7OzA0QzI7CiswNEMyO0NZUklMTElDIFNNQUxMIExFVFRFUiBaSEUgV0lUSCBCUkVWRTtMbDswO0w7MDQzNiAwMzA2Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIFpIRTs7MDRDMTs7MDRDMQorMDRDMztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIEhPT0s7OzswNEM0OworMDRDNDtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgSE9PSzs7MDRDMzs7MDRDMworMDRDNztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTiBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVOIEhPT0s7OzswNEM4OworMDRDODtDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4gV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4gSE9PSzs7MDRDNzs7MDRDNworMDRDQjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLSEFLQVNTSUFOIENIRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggTEVGVCBERVNDRU5ERVI7OzswNENDOworMDRDQztDWVJJTExJQyBTTUFMTCBMRVRURVIgS0hBS0FTU0lBTiBDSEU7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBMRUZUIERFU0NFTkRFUjs7MDRDQjs7MDRDQgorMDREMDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkU7THU7MDtMOzA0MTAgMDMwNjs7OztOOzs7OzA0RDE7CiswNEQxO0NZUklMTElDIFNNQUxMIExFVFRFUiBBIFdJVEggQlJFVkU7TGw7MDtMOzA0MzAgMDMwNjs7OztOOzs7MDREMDs7MDREMAorMDREMjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNDEwIDAzMDg7Ozs7Tjs7OzswNEQzOworMDREMztDWVJJTExJQyBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDQzMCAwMzA4Ozs7O047OzswNEQyOzswNEQyCiswNEQ0O0NZUklMTElDIENBUElUQUwgTElHQVRVUkUgQSBJRTtMdTswO0w7MDBDNjs7OztOOzs7OzA0RDU7CiswNEQ1O0NZUklMTElDIFNNQUxMIExJR0FUVVJFIEEgSUU7TGw7MDtMOzAwRTY7Ozs7Tjs7OzA0RDQ7OzA0RDQKKzA0RDY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUgV0lUSCBCUkVWRTtMdTswO0w7MDQxNSAwMzA2Ozs7O047Ozs7MDRENzsKKzA0RDc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElFIFdJVEggQlJFVkU7TGw7MDtMOzA0MzUgMDMwNjs7OztOOzs7MDRENjs7MDRENgorMDREODtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTQ0hXQTtMdTswO0w7MDE4Rjs7OztOOzs7OzA0RDk7CiswNEQ5O0NZUklMTElDIFNNQUxMIExFVFRFUiBTQ0hXQTtMbDswO0w7MDI1OTs7OztOOzs7MDREODs7MDREOAorMDREQTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTQ0hXQSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDE4RiAwMzA4Ozs7O047Ozs7MDREQjsKKzA0REI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNDSFdBIFdJVEggRElBRVJFU0lTO0xsOzA7TDswMjU5IDAzMDg7Ozs7Tjs7OzA0REE7OzA0REEKKzA0REM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNDE2IDAzMDg7Ozs7Tjs7OzswNEREOworMDRERDtDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNDM2IDAzMDg7Ozs7Tjs7OzA0REM7OzA0REMKKzA0REU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUgV0lUSCBESUFFUkVTSVM7THU7MDtMOzA0MTcgMDMwODs7OztOOzs7OzA0REY7CiswNERGO0NZUklMTElDIFNNQUxMIExFVFRFUiBaRSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDQzNyAwMzA4Ozs7O047OzswNERFOzswNERFCiswNEUwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEFCS0hBU0lBTiBEWkU7THU7MDtMOzAxQjc7Ozs7Tjs7OzswNEUxOworMDRFMTtDWVJJTExJQyBTTUFMTCBMRVRURVIgQUJLSEFTSUFOIERaRTtMbDswO0w7MDI5Mjs7OztOOzs7MDRFMDs7MDRFMAorMDRFMjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJIFdJVEggTUFDUk9OO0x1OzA7TDswNDE4IDAzMDQ7Ozs7Tjs7OzswNEUzOworMDRFMztDWVJJTExJQyBTTUFMTCBMRVRURVIgSSBXSVRIIE1BQ1JPTjtMbDswO0w7MDQzOCAwMzA0Ozs7O047OzswNEUyOzswNEUyCiswNEU0O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVM7THU7MDtMOzA0MTggMDMwODs7OztOOzs7OzA0RTU7CiswNEU1O0NZUklMTElDIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNDM4IDAzMDg7Ozs7Tjs7OzA0RTQ7OzA0RTQKKzA0RTY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUztMdTswO0w7MDQxRSAwMzA4Ozs7O047Ozs7MDRFNzsKKzA0RTc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVM7TGw7MDtMOzA0M0UgMDMwODs7OztOOzs7MDRFNjs7MDRFNgorMDRFODtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVJSRUQgTztMdTswO0w7MDE5Rjs7OztOOzs7OzA0RTk7CiswNEU5O0NZUklMTElDIFNNQUxMIExFVFRFUiBCQVJSRUQgTztMbDswO0w7MDI3NTs7OztOOzs7MDRFODs7MDRFOAorMDRFQTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVJSRUQgTyBXSVRIIERJQUVSRVNJUztMdTswO0w7MDE5RiAwMzA4Ozs7O047Ozs7MDRFQjsKKzA0RUI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEJBUlJFRCBPIFdJVEggRElBRVJFU0lTO0xsOzA7TDswMjc1IDAzMDg7Ozs7Tjs7OzA0RUE7OzA0RUEKKzA0RUU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTjtMdTswO0w7MDQyMyAwMzA0Ozs7O047Ozs7MDRFRjsKKzA0RUY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST047TGw7MDtMOzA0NDMgMDMwNDs7OztOOzs7MDRFRTs7MDRFRQorMDRGMDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNDIzIDAzMDg7Ozs7Tjs7OzswNEYxOworMDRGMTtDWVJJTExJQyBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDQ0MyAwMzA4Ozs7O047OzswNEYwOzswNEYwCiswNEYyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEU7THU7MDtMOzA0MjMgMDMwQjs7OztOOzs7OzA0RjM7CiswNEYzO0NZUklMTElDIFNNQUxMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFO0xsOzA7TDswNDQzIDAzMEI7Ozs7Tjs7OzA0RjI7OzA0RjIKKzA0RjQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNDI3IDAzMDg7Ozs7Tjs7OzswNEY1OworMDRGNTtDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNDQ3IDAzMDg7Ozs7Tjs7OzA0RjQ7OzA0RjQKKzA0Rjg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUVSVSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDQyQiAwMzA4Ozs7O047Ozs7MDRGOTsKKzA0Rjk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlUgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzA0NEIgMDMwODs7OztOOzs7MDRGODs7MDRGOAorMDUzMTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBBWUI7THU7MDtMOzs7OztOOzs7OzA1NjE7CiswNTMyO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEJFTjtMdTswO0w7Ozs7O047Ozs7MDU2MjsKKzA1MzM7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgR0lNO0x1OzA7TDs7Ozs7Tjs7OzswNTYzOworMDUzNDtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBEQTtMdTswO0w7Ozs7O047Ozs7MDU2NDsKKzA1MzU7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgRUNIO0x1OzA7TDs7Ozs7Tjs7OzswNTY1OworMDUzNjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBaQTtMdTswO0w7Ozs7O047Ozs7MDU2NjsKKzA1Mzc7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgRUg7THU7MDtMOzs7OztOOzs7OzA1Njc7CiswNTM4O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEVUO0x1OzA7TDs7Ozs7Tjs7OzswNTY4OworMDUzOTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBUTztMdTswO0w7Ozs7O047Ozs7MDU2OTsKKzA1M0E7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgWkhFO0x1OzA7TDs7Ozs7Tjs7OzswNTZBOworMDUzQjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBJTkk7THU7MDtMOzs7OztOOzs7OzA1NkI7CiswNTNDO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIExJV047THU7MDtMOzs7OztOOzs7OzA1NkM7CiswNTNEO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFhFSDtMdTswO0w7Ozs7O047Ozs7MDU2RDsKKzA1M0U7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgQ0E7THU7MDtMOzs7OztOOzs7OzA1NkU7CiswNTNGO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEtFTjtMdTswO0w7Ozs7O047Ozs7MDU2RjsKKzA1NDA7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgSE87THU7MDtMOzs7OztOOzs7OzA1NzA7CiswNTQxO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEpBO0x1OzA7TDs7Ozs7Tjs7OzswNTcxOworMDU0MjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBHSEFEO0x1OzA7TDs7Ozs7TjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBMQUQ7OzswNTcyOworMDU0MztBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBDSEVIO0x1OzA7TDs7Ozs7Tjs7OzswNTczOworMDU0NDtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBNRU47THU7MDtMOzs7OztOOzs7OzA1NzQ7CiswNTQ1O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFlJO0x1OzA7TDs7Ozs7Tjs7OzswNTc1OworMDU0NjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBOT1c7THU7MDtMOzs7OztOOzs7OzA1NzY7CiswNTQ3O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFNIQTtMdTswO0w7Ozs7O047Ozs7MDU3NzsKKzA1NDg7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgVk87THU7MDtMOzs7OztOOzs7OzA1Nzg7CiswNTQ5O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIENIQTtMdTswO0w7Ozs7O047Ozs7MDU3OTsKKzA1NEE7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgUEVIO0x1OzA7TDs7Ozs7Tjs7OzswNTdBOworMDU0QjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBKSEVIO0x1OzA7TDs7Ozs7Tjs7OzswNTdCOworMDU0QztBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBSQTtMdTswO0w7Ozs7O047Ozs7MDU3QzsKKzA1NEQ7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgU0VIO0x1OzA7TDs7Ozs7Tjs7OzswNTdEOworMDU0RTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBWRVc7THU7MDtMOzs7OztOOzs7OzA1N0U7CiswNTRGO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFRJV047THU7MDtMOzs7OztOOzs7OzA1N0Y7CiswNTUwO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFJFSDtMdTswO0w7Ozs7O047Ozs7MDU4MDsKKzA1NTE7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgQ087THU7MDtMOzs7OztOOzs7OzA1ODE7CiswNTUyO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFlJV047THU7MDtMOzs7OztOOzs7OzA1ODI7CiswNTUzO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFBJV1I7THU7MDtMOzs7OztOOzs7OzA1ODM7CiswNTU0O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEtFSDtMdTswO0w7Ozs7O047Ozs7MDU4NDsKKzA1NTU7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgT0g7THU7MDtMOzs7OztOOzs7OzA1ODU7CiswNTU2O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEZFSDtMdTswO0w7Ozs7O047Ozs7MDU4NjsKKzA1NTk7QVJNRU5JQU4gTU9ESUZJRVIgTEVUVEVSIExFRlQgSEFMRiBSSU5HO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswNTVBO0FSTUVOSUFOIEFQT1NUUk9QSEU7UG87MDtMOzs7OztOO0FSTUVOSUFOIE1PRElGSUVSIExFVFRFUiBSSUdIVCBIQUxGIFJJTkc7Ozs7CiswNTVCO0FSTUVOSUFOIEVNUEhBU0lTIE1BUks7UG87MDtMOzs7OztOOzs7OzsKKzA1NUM7QVJNRU5JQU4gRVhDTEFNQVRJT04gTUFSSztQbzswO0w7Ozs7O047Ozs7OworMDU1RDtBUk1FTklBTiBDT01NQTtQbzswO0w7Ozs7O047Ozs7OworMDU1RTtBUk1FTklBTiBRVUVTVElPTiBNQVJLO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswNTVGO0FSTUVOSUFOIEFCQlJFVklBVElPTiBNQVJLO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswNTYxO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBBWUI7TGw7MDtMOzs7OztOOzs7MDUzMTs7MDUzMQorMDU2MjtBUk1FTklBTiBTTUFMTCBMRVRURVIgQkVOO0xsOzA7TDs7Ozs7Tjs7OzA1MzI7OzA1MzIKKzA1NjM7QVJNRU5JQU4gU01BTEwgTEVUVEVSIEdJTTtMbDswO0w7Ozs7O047OzswNTMzOzswNTMzCiswNTY0O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBEQTtMbDswO0w7Ozs7O047OzswNTM0OzswNTM0CiswNTY1O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBFQ0g7TGw7MDtMOzs7OztOOzs7MDUzNTs7MDUzNQorMDU2NjtBUk1FTklBTiBTTUFMTCBMRVRURVIgWkE7TGw7MDtMOzs7OztOOzs7MDUzNjs7MDUzNgorMDU2NztBUk1FTklBTiBTTUFMTCBMRVRURVIgRUg7TGw7MDtMOzs7OztOOzs7MDUzNzs7MDUzNworMDU2ODtBUk1FTklBTiBTTUFMTCBMRVRURVIgRVQ7TGw7MDtMOzs7OztOOzs7MDUzODs7MDUzOAorMDU2OTtBUk1FTklBTiBTTUFMTCBMRVRURVIgVE87TGw7MDtMOzs7OztOOzs7MDUzOTs7MDUzOQorMDU2QTtBUk1FTklBTiBTTUFMTCBMRVRURVIgWkhFO0xsOzA7TDs7Ozs7Tjs7OzA1M0E7OzA1M0EKKzA1NkI7QVJNRU5JQU4gU01BTEwgTEVUVEVSIElOSTtMbDswO0w7Ozs7O047OzswNTNCOzswNTNCCiswNTZDO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBMSVdOO0xsOzA7TDs7Ozs7Tjs7OzA1M0M7OzA1M0MKKzA1NkQ7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFhFSDtMbDswO0w7Ozs7O047OzswNTNEOzswNTNECiswNTZFO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBDQTtMbDswO0w7Ozs7O047OzswNTNFOzswNTNFCiswNTZGO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBLRU47TGw7MDtMOzs7OztOOzs7MDUzRjs7MDUzRgorMDU3MDtBUk1FTklBTiBTTUFMTCBMRVRURVIgSE87TGw7MDtMOzs7OztOOzs7MDU0MDs7MDU0MAorMDU3MTtBUk1FTklBTiBTTUFMTCBMRVRURVIgSkE7TGw7MDtMOzs7OztOOzs7MDU0MTs7MDU0MQorMDU3MjtBUk1FTklBTiBTTUFMTCBMRVRURVIgR0hBRDtMbDswO0w7Ozs7O047QVJNRU5JQU4gU01BTEwgTEVUVEVSIExBRDs7MDU0Mjs7MDU0MgorMDU3MztBUk1FTklBTiBTTUFMTCBMRVRURVIgQ0hFSDtMbDswO0w7Ozs7O047OzswNTQzOzswNTQzCiswNTc0O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBNRU47TGw7MDtMOzs7OztOOzs7MDU0NDs7MDU0NAorMDU3NTtBUk1FTklBTiBTTUFMTCBMRVRURVIgWUk7TGw7MDtMOzs7OztOOzs7MDU0NTs7MDU0NQorMDU3NjtBUk1FTklBTiBTTUFMTCBMRVRURVIgTk9XO0xsOzA7TDs7Ozs7Tjs7OzA1NDY7OzA1NDYKKzA1Nzc7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFNIQTtMbDswO0w7Ozs7O047OzswNTQ3OzswNTQ3CiswNTc4O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBWTztMbDswO0w7Ozs7O047OzswNTQ4OzswNTQ4CiswNTc5O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBDSEE7TGw7MDtMOzs7OztOOzs7MDU0OTs7MDU0OQorMDU3QTtBUk1FTklBTiBTTUFMTCBMRVRURVIgUEVIO0xsOzA7TDs7Ozs7Tjs7OzA1NEE7OzA1NEEKKzA1N0I7QVJNRU5JQU4gU01BTEwgTEVUVEVSIEpIRUg7TGw7MDtMOzs7OztOOzs7MDU0Qjs7MDU0QgorMDU3QztBUk1FTklBTiBTTUFMTCBMRVRURVIgUkE7TGw7MDtMOzs7OztOOzs7MDU0Qzs7MDU0QworMDU3RDtBUk1FTklBTiBTTUFMTCBMRVRURVIgU0VIO0xsOzA7TDs7Ozs7Tjs7OzA1NEQ7OzA1NEQKKzA1N0U7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFZFVztMbDswO0w7Ozs7O047OzswNTRFOzswNTRFCiswNTdGO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBUSVdOO0xsOzA7TDs7Ozs7Tjs7OzA1NEY7OzA1NEYKKzA1ODA7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFJFSDtMbDswO0w7Ozs7O047OzswNTUwOzswNTUwCiswNTgxO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBDTztMbDswO0w7Ozs7O047OzswNTUxOzswNTUxCiswNTgyO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBZSVdOO0xsOzA7TDs7Ozs7Tjs7OzA1NTI7OzA1NTIKKzA1ODM7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFBJV1I7TGw7MDtMOzs7OztOOzs7MDU1Mzs7MDU1MworMDU4NDtBUk1FTklBTiBTTUFMTCBMRVRURVIgS0VIO0xsOzA7TDs7Ozs7Tjs7OzA1NTQ7OzA1NTQKKzA1ODU7QVJNRU5JQU4gU01BTEwgTEVUVEVSIE9IO0xsOzA7TDs7Ozs7Tjs7OzA1NTU7OzA1NTUKKzA1ODY7QVJNRU5JQU4gU01BTEwgTEVUVEVSIEZFSDtMbDswO0w7Ozs7O047OzswNTU2OzswNTU2CiswNTg3O0FSTUVOSUFOIFNNQUxMIExJR0FUVVJFIEVDSCBZSVdOO0xsOzA7TDs8Y29tcGF0PiAwNTY1IDA1ODI7Ozs7Tjs7Ozs7CiswNTg5O0FSTUVOSUFOIEZVTEwgU1RPUDtQbzswO0w7Ozs7O047QVJNRU5JQU4gUEVSSU9EOzs7OworMDU5MTtIRUJSRVcgQUNDRU5UIEVUTkFIVEE7TW47MjIwO1I7Ozs7O047Ozs7OworMDU5MjtIRUJSRVcgQUNDRU5UIFNFR09MO01uOzIzMDtSOzs7OztOOzs7OzsKKzA1OTM7SEVCUkVXIEFDQ0VOVCBTSEFMU0hFTEVUO01uOzIzMDtSOzs7OztOOzs7OzsKKzA1OTQ7SEVCUkVXIEFDQ0VOVCBaQVFFRiBRQVRBTjtNbjsyMzA7Ujs7Ozs7Tjs7Ozs7CiswNTk1O0hFQlJFVyBBQ0NFTlQgWkFRRUYgR0FET0w7TW47MjMwO1I7Ozs7O047Ozs7OworMDU5NjtIRUJSRVcgQUNDRU5UIFRJUEVIQTtNbjsyMjA7Ujs7Ozs7Tjs7Ozs7CiswNTk3O0hFQlJFVyBBQ0NFTlQgUkVWSUE7TW47MjMwO1I7Ozs7O047Ozs7OworMDU5ODtIRUJSRVcgQUNDRU5UIFpBUlFBO01uOzIzMDtSOzs7OztOOzs7OzsKKzA1OTk7SEVCUkVXIEFDQ0VOVCBQQVNIVEE7TW47MjMwO1I7Ozs7O047Ozs7OworMDU5QTtIRUJSRVcgQUNDRU5UIFlFVElWO01uOzIyMjtSOzs7OztOOzs7OzsKKzA1OUI7SEVCUkVXIEFDQ0VOVCBURVZJUjtNbjsyMjA7Ujs7Ozs7Tjs7Ozs7CiswNTlDO0hFQlJFVyBBQ0NFTlQgR0VSRVNIO01uOzIzMDtSOzs7OztOOzs7OzsKKzA1OUQ7SEVCUkVXIEFDQ0VOVCBHRVJFU0ggTVVRREFNO01uOzIzMDtSOzs7OztOOzs7OzsKKzA1OUU7SEVCUkVXIEFDQ0VOVCBHRVJTSEFZSU07TW47MjMwO1I7Ozs7O047Ozs7OworMDU5RjtIRUJSRVcgQUNDRU5UIFFBUk5FWSBQQVJBO01uOzIzMDtSOzs7OztOOzs7OzsKKzA1QTA7SEVCUkVXIEFDQ0VOVCBURUxJU0hBIEdFRE9MQTtNbjsyMzA7Ujs7Ozs7Tjs7Ozs7CiswNUExO0hFQlJFVyBBQ0NFTlQgUEFaRVI7TW47MjMwO1I7Ozs7O047Ozs7OworMDVBMztIRUJSRVcgQUNDRU5UIE1VTkFIO01uOzIyMDtSOzs7OztOOzs7OzsKKzA1QTQ7SEVCUkVXIEFDQ0VOVCBNQUhBUEFLSDtNbjsyMjA7Ujs7Ozs7Tjs7Ozs7CiswNUE1O0hFQlJFVyBBQ0NFTlQgTUVSS0hBO01uOzIyMDtSOzs7OztOOzs7OzsKKzA1QTY7SEVCUkVXIEFDQ0VOVCBNRVJLSEEgS0VGVUxBO01uOzIyMDtSOzs7OztOOzs7OzsKKzA1QTc7SEVCUkVXIEFDQ0VOVCBEQVJHQTtNbjsyMjA7Ujs7Ozs7Tjs7Ozs7CiswNUE4O0hFQlJFVyBBQ0NFTlQgUUFETUE7TW47MjMwO1I7Ozs7O047Ozs7OworMDVBOTtIRUJSRVcgQUNDRU5UIFRFTElTSEEgUUVUQU5BO01uOzIzMDtSOzs7OztOOzs7OzsKKzA1QUE7SEVCUkVXIEFDQ0VOVCBZRVJBSCBCRU4gWU9NTztNbjsyMjA7Ujs7Ozs7Tjs7Ozs7CiswNUFCO0hFQlJFVyBBQ0NFTlQgT0xFO01uOzIzMDtSOzs7OztOOzs7OzsKKzA1QUM7SEVCUkVXIEFDQ0VOVCBJTFVZO01uOzIzMDtSOzs7OztOOzs7OzsKKzA1QUQ7SEVCUkVXIEFDQ0VOVCBERUhJO01uOzIyMjtSOzs7OztOOzs7OzsKKzA1QUU7SEVCUkVXIEFDQ0VOVCBaSU5PUjtNbjsyMzA7Ujs7Ozs7Tjs7Ozs7CiswNUFGO0hFQlJFVyBNQVJLIE1BU09SQSBDSVJDTEU7TW47MjMwO1I7Ozs7O047Ozs7OworMDVCMDtIRUJSRVcgUE9JTlQgU0hFVkE7TW47MTA7Ujs7Ozs7Tjs7Ozs7CiswNUIxO0hFQlJFVyBQT0lOVCBIQVRBRiBTRUdPTDtNbjsxMTtSOzs7OztOOzs7OzsKKzA1QjI7SEVCUkVXIFBPSU5UIEhBVEFGIFBBVEFIO01uOzEyO1I7Ozs7O047Ozs7OworMDVCMztIRUJSRVcgUE9JTlQgSEFUQUYgUUFNQVRTO01uOzEzO1I7Ozs7O047Ozs7OworMDVCNDtIRUJSRVcgUE9JTlQgSElSSVE7TW47MTQ7Ujs7Ozs7Tjs7Ozs7CiswNUI1O0hFQlJFVyBQT0lOVCBUU0VSRTtNbjsxNTtSOzs7OztOOzs7OzsKKzA1QjY7SEVCUkVXIFBPSU5UIFNFR09MO01uOzE2O1I7Ozs7O047Ozs7OworMDVCNztIRUJSRVcgUE9JTlQgUEFUQUg7TW47MTc7Ujs7Ozs7Tjs7Ozs7CiswNUI4O0hFQlJFVyBQT0lOVCBRQU1BVFM7TW47MTg7Ujs7Ozs7Tjs7Ozs7CiswNUI5O0hFQlJFVyBQT0lOVCBIT0xBTTtNbjsxOTtSOzs7OztOOzs7OzsKKzA1QkI7SEVCUkVXIFBPSU5UIFFVQlVUUztNbjsyMDtSOzs7OztOOzs7OzsKKzA1QkM7SEVCUkVXIFBPSU5UIERBR0VTSCBPUiBNQVBJUTtNbjsyMTtSOzs7OztOO0hFQlJFVyBQT0lOVCBEQUdFU0g7Ozs7CiswNUJEO0hFQlJFVyBQT0lOVCBNRVRFRztNbjsyMjtSOzs7OztOOzs7OzsKKzA1QkU7SEVCUkVXIFBVTkNUVUFUSU9OIE1BUUFGO1BvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUJGO0hFQlJFVyBQT0lOVCBSQUZFO01uOzIzO1I7Ozs7O047Ozs7OworMDVDMDtIRUJSRVcgUFVOQ1RVQVRJT04gUEFTRVE7UG87MDtSOzs7OztOO0hFQlJFVyBQT0lOVCBQQVNFUTs7OzsKKzA1QzE7SEVCUkVXIFBPSU5UIFNISU4gRE9UO01uOzI0O1I7Ozs7O047Ozs7OworMDVDMjtIRUJSRVcgUE9JTlQgU0lOIERPVDtNbjsyNTtSOzs7OztOOzs7OzsKKzA1QzM7SEVCUkVXIFBVTkNUVUFUSU9OIFNPRiBQQVNVUTtQbzswO1I7Ozs7O047Ozs7OworMDVDNDtIRUJSRVcgTUFSSyBVUFBFUiBET1Q7TW47MjMwO1I7Ozs7O047Ozs7OworMDVEMDtIRUJSRVcgTEVUVEVSIEFMRUY7TG87MDtSOzs7OztOOzs7OzsKKzA1RDE7SEVCUkVXIExFVFRFUiBCRVQ7TG87MDtSOzs7OztOOzs7OzsKKzA1RDI7SEVCUkVXIExFVFRFUiBHSU1FTDtMbzswO1I7Ozs7O047Ozs7OworMDVEMztIRUJSRVcgTEVUVEVSIERBTEVUO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQ0O0hFQlJFVyBMRVRURVIgSEU7TG87MDtSOzs7OztOOzs7OzsKKzA1RDU7SEVCUkVXIExFVFRFUiBWQVY7TG87MDtSOzs7OztOOzs7OzsKKzA1RDY7SEVCUkVXIExFVFRFUiBaQVlJTjtMbzswO1I7Ozs7O047Ozs7OworMDVENztIRUJSRVcgTEVUVEVSIEhFVDtMbzswO1I7Ozs7O047Ozs7OworMDVEODtIRUJSRVcgTEVUVEVSIFRFVDtMbzswO1I7Ozs7O047Ozs7OworMDVEOTtIRUJSRVcgTEVUVEVSIFlPRDtMbzswO1I7Ozs7O047Ozs7OworMDVEQTtIRUJSRVcgTEVUVEVSIEZJTkFMIEtBRjtMbzswO1I7Ozs7O047Ozs7OworMDVEQjtIRUJSRVcgTEVUVEVSIEtBRjtMbzswO1I7Ozs7O047Ozs7OworMDVEQztIRUJSRVcgTEVUVEVSIExBTUVEO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUREO0hFQlJFVyBMRVRURVIgRklOQUwgTUVNO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNURFO0hFQlJFVyBMRVRURVIgTUVNO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNURGO0hFQlJFVyBMRVRURVIgRklOQUwgTlVOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUUwO0hFQlJFVyBMRVRURVIgTlVOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUUxO0hFQlJFVyBMRVRURVIgU0FNRUtIO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUUyO0hFQlJFVyBMRVRURVIgQVlJTjtMbzswO1I7Ozs7O047Ozs7OworMDVFMztIRUJSRVcgTEVUVEVSIEZJTkFMIFBFO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUU0O0hFQlJFVyBMRVRURVIgUEU7TG87MDtSOzs7OztOOzs7OzsKKzA1RTU7SEVCUkVXIExFVFRFUiBGSU5BTCBUU0FESTtMbzswO1I7Ozs7O047Ozs7OworMDVFNjtIRUJSRVcgTEVUVEVSIFRTQURJO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUU3O0hFQlJFVyBMRVRURVIgUU9GO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUU4O0hFQlJFVyBMRVRURVIgUkVTSDtMbzswO1I7Ozs7O047Ozs7OworMDVFOTtIRUJSRVcgTEVUVEVSIFNISU47TG87MDtSOzs7OztOOzs7OzsKKzA1RUE7SEVCUkVXIExFVFRFUiBUQVY7TG87MDtSOzs7OztOOzs7OzsKKzA1RjA7SEVCUkVXIExJR0FUVVJFIFlJRERJU0ggRE9VQkxFIFZBVjtMbzswO1I7Ozs7O047SEVCUkVXIExFVFRFUiBET1VCTEUgVkFWOzs7OworMDVGMTtIRUJSRVcgTElHQVRVUkUgWUlERElTSCBWQVYgWU9EO0xvOzA7Ujs7Ozs7TjtIRUJSRVcgTEVUVEVSIFZBViBZT0Q7Ozs7CiswNUYyO0hFQlJFVyBMSUdBVFVSRSBZSURESVNIIERPVUJMRSBZT0Q7TG87MDtSOzs7OztOO0hFQlJFVyBMRVRURVIgRE9VQkxFIFlPRDs7OzsKKzA1RjM7SEVCUkVXIFBVTkNUVUFUSU9OIEdFUkVTSDtQbzswO1I7Ozs7O047Ozs7OworMDVGNDtIRUJSRVcgUFVOQ1RVQVRJT04gR0VSU0hBWUlNO1BvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjBDO0FSQUJJQyBDT01NQTtQbzswO1I7Ozs7O047Ozs7OworMDYxQjtBUkFCSUMgU0VNSUNPTE9OO1BvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjFGO0FSQUJJQyBRVUVTVElPTiBNQVJLO1BvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjIxO0FSQUJJQyBMRVRURVIgSEFNWkE7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIOzs7OworMDYyMjtBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBNQUREQSBBQk9WRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBNQUREQUggT04gQUxFRjs7OzsKKzA2MjM7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQUJPVkU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIIE9OIEFMRUY7Ozs7CiswNjI0O0FSQUJJQyBMRVRURVIgV0FXIFdJVEggSEFNWkEgQUJPVkU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIIE9OIFdBVzs7OzsKKzA2MjU7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQkVMT1c7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIIFVOREVSIEFMRUY7Ozs7CiswNjI2O0FSQUJJQyBMRVRURVIgWUVIIFdJVEggSEFNWkEgQUJPVkU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIIE9OIFlBOzs7OworMDYyNztBUkFCSUMgTEVUVEVSIEFMRUY7TG87MDtSOzs7OztOOzs7OzsKKzA2Mjg7QVJBQklDIExFVFRFUiBCRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgQkFBOzs7OworMDYyOTtBUkFCSUMgTEVUVEVSIFRFSCBNQVJCVVRBO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFRBQSBNQVJCVVRBSDs7OzsKKzA2MkE7QVJBQklDIExFVFRFUiBURUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBOzs7OworMDYyQjtBUkFCSUMgTEVUVEVSIFRIRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgVEhBQTs7OzsKKzA2MkM7QVJBQklDIExFVFRFUiBKRUVNO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjJEO0FSQUJJQyBMRVRURVIgSEFIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBQTs7OzsKKzA2MkU7QVJBQklDIExFVFRFUiBLSEFIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEtIQUE7Ozs7CiswNjJGO0FSQUJJQyBMRVRURVIgREFMO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjMwO0FSQUJJQyBMRVRURVIgVEhBTDtMbzswO1I7Ozs7O047Ozs7OworMDYzMTtBUkFCSUMgTEVUVEVSIFJFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBSQTs7OzsKKzA2MzI7QVJBQklDIExFVFRFUiBaQUlOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjMzO0FSQUJJQyBMRVRURVIgU0VFTjtMbzswO1I7Ozs7O047Ozs7OworMDYzNDtBUkFCSUMgTEVUVEVSIFNIRUVOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjM1O0FSQUJJQyBMRVRURVIgU0FEO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjM2O0FSQUJJQyBMRVRURVIgREFEO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjM3O0FSQUJJQyBMRVRURVIgVEFIO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjM4O0FSQUJJQyBMRVRURVIgWkFIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIERIQUg7Ozs7CiswNjM5O0FSQUJJQyBMRVRURVIgQUlOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjNBO0FSQUJJQyBMRVRURVIgR0hBSU47TG87MDtSOzs7OztOOzs7OzsKKzA2NDA7QVJBQklDIFRBVFdFRUw7TG07MDtSOzs7OztOOzs7OzsKKzA2NDE7QVJBQklDIExFVFRFUiBGRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgRkE7Ozs7CiswNjQyO0FSQUJJQyBMRVRURVIgUUFGO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjQzO0FSQUJJQyBMRVRURVIgS0FGO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIENBRjs7OzsKKzA2NDQ7QVJBQklDIExFVFRFUiBMQU07TG87MDtSOzs7OztOOzs7OzsKKzA2NDU7QVJBQklDIExFVFRFUiBNRUVNO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjQ2O0FSQUJJQyBMRVRURVIgTk9PTjtMbzswO1I7Ozs7O047Ozs7OworMDY0NztBUkFCSUMgTEVUVEVSIEhFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQTs7OzsKKzA2NDg7QVJBQklDIExFVFRFUiBXQVc7TG87MDtSOzs7OztOOzs7OzsKKzA2NDk7QVJBQklDIExFVFRFUiBBTEVGIE1BS1NVUkE7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgQUxFRiBNQVFTVVJBSDs7OzsKKzA2NEE7QVJBQklDIExFVFRFUiBZRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgWUE7Ozs7CiswNjRCO0FSQUJJQyBGQVRIQVRBTjtNbjsyNztSOzs7OztOOzs7OzsKKzA2NEM7QVJBQklDIERBTU1BVEFOO01uOzI4O1I7Ozs7O047Ozs7OworMDY0RDtBUkFCSUMgS0FTUkFUQU47TW47Mjk7Ujs7Ozs7Tjs7Ozs7CiswNjRFO0FSQUJJQyBGQVRIQTtNbjszMDtSOzs7OztOO0FSQUJJQyBGQVRIQUg7Ozs7CiswNjRGO0FSQUJJQyBEQU1NQTtNbjszMTtSOzs7OztOO0FSQUJJQyBEQU1NQUg7Ozs7CiswNjUwO0FSQUJJQyBLQVNSQTtNbjszMjtSOzs7OztOO0FSQUJJQyBLQVNSQUg7Ozs7CiswNjUxO0FSQUJJQyBTSEFEREE7TW47MzM7Ujs7Ozs7TjtBUkFCSUMgU0hBRERBSDs7OzsKKzA2NTI7QVJBQklDIFNVS1VOO01uOzM0O1I7Ozs7O047Ozs7OworMDY2MDtBUkFCSUMtSU5ESUMgRElHSVQgWkVSTztOZDswO0FOOzswOzA7MDtOOzs7OzsKKzA2NjE7QVJBQklDLUlORElDIERJR0lUIE9ORTtOZDswO0FOOzsxOzE7MTtOOzs7OzsKKzA2NjI7QVJBQklDLUlORElDIERJR0lUIFRXTztOZDswO0FOOzsyOzI7MjtOOzs7OzsKKzA2NjM7QVJBQklDLUlORElDIERJR0lUIFRIUkVFO05kOzA7QU47OzM7MzszO047Ozs7OworMDY2NDtBUkFCSUMtSU5ESUMgRElHSVQgRk9VUjtOZDswO0FOOzs0OzQ7NDtOOzs7OzsKKzA2NjU7QVJBQklDLUlORElDIERJR0lUIEZJVkU7TmQ7MDtBTjs7NTs1OzU7Tjs7Ozs7CiswNjY2O0FSQUJJQy1JTkRJQyBESUdJVCBTSVg7TmQ7MDtBTjs7Njs2OzY7Tjs7Ozs7CiswNjY3O0FSQUJJQy1JTkRJQyBESUdJVCBTRVZFTjtOZDswO0FOOzs3Ozc7NztOOzs7OzsKKzA2Njg7QVJBQklDLUlORElDIERJR0lUIEVJR0hUO05kOzA7QU47Ozg7ODs4O047Ozs7OworMDY2OTtBUkFCSUMtSU5ESUMgRElHSVQgTklORTtOZDswO0FOOzs5Ozk7OTtOOzs7OzsKKzA2NkE7QVJBQklDIFBFUkNFTlQgU0lHTjtQbzswO0VUOzs7OztOOzs7OzsKKzA2NkI7QVJBQklDIERFQ0lNQUwgU0VQQVJBVE9SO1BvOzA7QU47Ozs7O047Ozs7OworMDY2QztBUkFCSUMgVEhPVVNBTkRTIFNFUEFSQVRPUjtQbzswO0FOOzs7OztOOzs7OzsKKzA2NkQ7QVJBQklDIEZJVkUgUE9JTlRFRCBTVEFSO1BvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjcwO0FSQUJJQyBMRVRURVIgU1VQRVJTQ1JJUFQgQUxFRjtNbjszNTtSOzs7OztOO0FSQUJJQyBBTEVGIEFCT1ZFOzs7OworMDY3MTtBUkFCSUMgTEVUVEVSIEFMRUYgV0FTTEE7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFUIFdBU0wgT04gQUxFRjs7OzsKKzA2NzI7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggV0FWWSBIQU1aQSBBQk9WRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBXQVZZIEhBTVpBSCBPTiBBTEVGOzs7OworMDY3MztBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBXQVZZIEhBTVpBIEJFTE9XO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFdBVlkgSEFNWkFIIFVOREVSIEFMRUY7Ozs7CiswNjc0O0FSQUJJQyBMRVRURVIgSElHSCBIQU1aQTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBISUdIIEhBTVpBSDs7OzsKKzA2NzU7QVJBQklDIExFVFRFUiBISUdIIEhBTVpBIEFMRUY7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSElHSCBIQU1aQUggQUxFRjs7OzsKKzA2NzY7QVJBQklDIExFVFRFUiBISUdIIEhBTVpBIFdBVztMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBISUdIIEhBTVpBSCBXQVc7Ozs7CiswNjc3O0FSQUJJQyBMRVRURVIgVSBXSVRIIEhBTVpBIEFCT1ZFO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhJR0ggSEFNWkFIIFdBVyBXSVRIIERBTU1BSDs7OzsKKzA2Nzg7QVJBQklDIExFVFRFUiBISUdIIEhBTVpBIFlFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBISUdIIEhBTVpBSCBZQTs7OzsKKzA2Nzk7QVJBQklDIExFVFRFUiBUVEVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFRBQSBXSVRIIFNNQUxMIFRBSDs7OzsKKzA2N0E7QVJBQklDIExFVFRFUiBUVEVIRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIFdJVEggVFdPIERPVFMgVkVSVElDQUwgQUJPVkU7Ozs7CiswNjdCO0FSQUJJQyBMRVRURVIgQkVFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBCQUEgV0lUSCBUV08gRE9UUyBWRVJUSUNBTCBCRUxPVzs7OzsKKzA2N0M7QVJBQklDIExFVFRFUiBURUggV0lUSCBSSU5HO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFRBQSBXSVRIIFJJTkc7Ozs7CiswNjdEO0FSQUJJQyBMRVRURVIgVEVIIFdJVEggVEhSRUUgRE9UUyBBQk9WRSBET1dOV0FSRFM7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIFdJVEggVEhSRUUgRE9UUyBBQk9WRSBET1dOV0FSRDs7OzsKKzA2N0U7QVJBQklDIExFVFRFUiBQRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIFdJVEggVEhSRUUgRE9UUyBCRUxPVzs7OzsKKzA2N0Y7QVJBQklDIExFVFRFUiBURUhFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBUQUEgV0lUSCBGT1VSIERPVFMgQUJPVkU7Ozs7CiswNjgwO0FSQUJJQyBMRVRURVIgQkVIRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgQkFBIFdJVEggRk9VUiBET1RTIEJFTE9XOzs7OworMDY4MTtBUkFCSUMgTEVUVEVSIEhBSCBXSVRIIEhBTVpBIEFCT1ZFO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBTVpBSCBPTiBIQUE7Ozs7CiswNjgyO0FSQUJJQyBMRVRURVIgSEFIIFdJVEggVFdPIERPVFMgVkVSVElDQUwgQUJPVkU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFBIFdJVEggVFdPIERPVFMgVkVSVElDQUwgQUJPVkU7Ozs7CiswNjgzO0FSQUJJQyBMRVRURVIgTllFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQUEgV0lUSCBNSURETEUgVFdPIERPVFM7Ozs7CiswNjg0O0FSQUJJQyBMRVRURVIgRFlFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQUEgV0lUSCBNSURETEUgVFdPIERPVFMgVkVSVElDQUw7Ozs7CiswNjg1O0FSQUJJQyBMRVRURVIgSEFIIFdJVEggVEhSRUUgRE9UUyBBQk9WRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQUEgV0lUSCBUSFJFRSBET1RTIEFCT1ZFOzs7OworMDY4NjtBUkFCSUMgTEVUVEVSIFRDSEVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBQSBXSVRIIE1JRERMRSBUSFJFRSBET1RTIERPV05XQVJEOzs7OworMDY4NztBUkFCSUMgTEVUVEVSIFRDSEVIRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFBIFdJVEggTUlERExFIEZPVVIgRE9UUzs7OzsKKzA2ODg7QVJBQklDIExFVFRFUiBEREFMO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIERBTCBXSVRIIFNNQUxMIFRBSDs7OzsKKzA2ODk7QVJBQklDIExFVFRFUiBEQUwgV0lUSCBSSU5HO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjhBO0FSQUJJQyBMRVRURVIgREFMIFdJVEggRE9UIEJFTE9XO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjhCO0FSQUJJQyBMRVRURVIgREFMIFdJVEggRE9UIEJFTE9XIEFORCBTTUFMTCBUQUg7TG87MDtSOzs7OztOOzs7OzsKKzA2OEM7QVJBQklDIExFVFRFUiBEQUhBTDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBEQUwgV0lUSCBUV08gRE9UUyBBQk9WRTs7OzsKKzA2OEQ7QVJBQklDIExFVFRFUiBEREFIQUw7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgREFMIFdJVEggVFdPIERPVFMgQkVMT1c7Ozs7CiswNjhFO0FSQUJJQyBMRVRURVIgRFVMO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIERBTCBXSVRIIFRIUkVFIERPVFMgQUJPVkU7Ozs7CiswNjhGO0FSQUJJQyBMRVRURVIgREFMIFdJVEggVEhSRUUgRE9UUyBBQk9WRSBET1dOV0FSRFM7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgREFMIFdJVEggVEhSRUUgRE9UUyBBQk9WRSBET1dOV0FSRDs7OzsKKzA2OTA7QVJBQklDIExFVFRFUiBEQUwgV0lUSCBGT1VSIERPVFMgQUJPVkU7TG87MDtSOzs7OztOOzs7OzsKKzA2OTE7QVJBQklDIExFVFRFUiBSUkVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBIFdJVEggU01BTEwgVEFIOzs7OworMDY5MjtBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIFNNQUxMIFY7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBTTUFMTCBWOzs7OworMDY5MztBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIFJJTkc7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBSSU5HOzs7OworMDY5NDtBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIERPVCBCRUxPVztMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBSQSBXSVRIIERPVCBCRUxPVzs7OzsKKzA2OTU7QVJBQklDIExFVFRFUiBSRUggV0lUSCBTTUFMTCBWIEJFTE9XO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBIFdJVEggU01BTEwgViBCRUxPVzs7OzsKKzA2OTY7QVJBQklDIExFVFRFUiBSRUggV0lUSCBET1QgQkVMT1cgQU5EIERPVCBBQk9WRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBSQSBXSVRIIERPVCBCRUxPVyBBTkQgRE9UIEFCT1ZFOzs7OworMDY5NztBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIFRXTyBET1RTIEFCT1ZFO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBIFdJVEggVFdPIERPVFMgQUJPVkU7Ozs7CiswNjk4O0FSQUJJQyBMRVRURVIgSkVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBIFdJVEggVEhSRUUgRE9UUyBBQk9WRTs7OzsKKzA2OTk7QVJBQklDIExFVFRFUiBSRUggV0lUSCBGT1VSIERPVFMgQUJPVkU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBGT1VSIERPVFMgQUJPVkU7Ozs7CiswNjlBO0FSQUJJQyBMRVRURVIgU0VFTiBXSVRIIERPVCBCRUxPVyBBTkQgRE9UIEFCT1ZFO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjlCO0FSQUJJQyBMRVRURVIgU0VFTiBXSVRIIFRIUkVFIERPVFMgQkVMT1c7TG87MDtSOzs7OztOOzs7OzsKKzA2OUM7QVJBQklDIExFVFRFUiBTRUVOIFdJVEggVEhSRUUgRE9UUyBCRUxPVyBBTkQgVEhSRUUgRE9UUyBBQk9WRTtMbzswO1I7Ozs7O047Ozs7OworMDY5RDtBUkFCSUMgTEVUVEVSIFNBRCBXSVRIIFRXTyBET1RTIEJFTE9XO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjlFO0FSQUJJQyBMRVRURVIgU0FEIFdJVEggVEhSRUUgRE9UUyBBQk9WRTtMbzswO1I7Ozs7O047Ozs7OworMDY5RjtBUkFCSUMgTEVUVEVSIFRBSCBXSVRIIFRIUkVFIERPVFMgQUJPVkU7TG87MDtSOzs7OztOOzs7OzsKKzA2QTA7QVJBQklDIExFVFRFUiBBSU4gV0lUSCBUSFJFRSBET1RTIEFCT1ZFO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNkExO0FSQUJJQyBMRVRURVIgRE9UTEVTUyBGRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgRE9UTEVTUyBGQTs7OzsKKzA2QTI7QVJBQklDIExFVFRFUiBGRUggV0lUSCBET1QgTU9WRUQgQkVMT1c7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgRkEgV0lUSCBET1QgTU9WRUQgQkVMT1c7Ozs7CiswNkEzO0FSQUJJQyBMRVRURVIgRkVIIFdJVEggRE9UIEJFTE9XO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEZBIFdJVEggRE9UIEJFTE9XOzs7OworMDZBNDtBUkFCSUMgTEVUVEVSIFZFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBGQSBXSVRIIFRIUkVFIERPVFMgQUJPVkU7Ozs7CiswNkE1O0FSQUJJQyBMRVRURVIgRkVIIFdJVEggVEhSRUUgRE9UUyBCRUxPVztMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBGQSBXSVRIIFRIUkVFIERPVFMgQkVMT1c7Ozs7CiswNkE2O0FSQUJJQyBMRVRURVIgUEVIRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgRkEgV0lUSCBGT1VSIERPVFMgQUJPVkU7Ozs7CiswNkE3O0FSQUJJQyBMRVRURVIgUUFGIFdJVEggRE9UIEFCT1ZFO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNkE4O0FSQUJJQyBMRVRURVIgUUFGIFdJVEggVEhSRUUgRE9UUyBBQk9WRTtMbzswO1I7Ozs7O047Ozs7OworMDZBOTtBUkFCSUMgTEVUVEVSIEtFSEVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIE9QRU4gQ0FGOzs7OworMDZBQTtBUkFCSUMgTEVUVEVSIFNXQVNIIEtBRjtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBTV0FTSCBDQUY7Ozs7CiswNkFCO0FSQUJJQyBMRVRURVIgS0FGIFdJVEggUklORztMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBDQUYgV0lUSCBSSU5HOzs7OworMDZBQztBUkFCSUMgTEVUVEVSIEtBRiBXSVRIIERPVCBBQk9WRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBDQUYgV0lUSCBET1QgQUJPVkU7Ozs7CiswNkFEO0FSQUJJQyBMRVRURVIgTkc7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgQ0FGIFdJVEggVEhSRUUgRE9UUyBBQk9WRTs7OzsKKzA2QUU7QVJBQklDIExFVFRFUiBLQUYgV0lUSCBUSFJFRSBET1RTIEJFTE9XO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIENBRiBXSVRIIFRIUkVFIERPVFMgQkVMT1c7Ozs7CiswNkFGO0FSQUJJQyBMRVRURVIgR0FGO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNkIwO0FSQUJJQyBMRVRURVIgR0FGIFdJVEggUklORztMbzswO1I7Ozs7O047Ozs7OworMDZCMTtBUkFCSUMgTEVUVEVSIE5HT0VIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEdBRiBXSVRIIFRXTyBET1RTIEFCT1ZFOzs7OworMDZCMjtBUkFCSUMgTEVUVEVSIEdBRiBXSVRIIFRXTyBET1RTIEJFTE9XO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNkIzO0FSQUJJQyBMRVRURVIgR1VFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBHQUYgV0lUSCBUV08gRE9UUyBWRVJUSUNBTCBCRUxPVzs7OzsKKzA2QjQ7QVJBQklDIExFVFRFUiBHQUYgV0lUSCBUSFJFRSBET1RTIEFCT1ZFO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNkI1O0FSQUJJQyBMRVRURVIgTEFNIFdJVEggU01BTEwgVjtMbzswO1I7Ozs7O047Ozs7OworMDZCNjtBUkFCSUMgTEVUVEVSIExBTSBXSVRIIERPVCBBQk9WRTtMbzswO1I7Ozs7O047Ozs7OworMDZCNztBUkFCSUMgTEVUVEVSIExBTSBXSVRIIFRIUkVFIERPVFMgQUJPVkU7TG87MDtSOzs7OztOOzs7OzsKKzA2QkE7QVJBQklDIExFVFRFUiBOT09OIEdIVU5OQTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBET1RMRVNTIE5PT047Ozs7CiswNkJCO0FSQUJJQyBMRVRURVIgUk5PT047TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgRE9UTEVTUyBOT09OIFdJVEggU01BTEwgVEFIOzs7OworMDZCQztBUkFCSUMgTEVUVEVSIE5PT04gV0lUSCBSSU5HO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNkJEO0FSQUJJQyBMRVRURVIgTk9PTiBXSVRIIFRIUkVFIERPVFMgQUJPVkU7TG87MDtSOzs7OztOOzs7OzsKKzA2QkU7QVJBQklDIExFVFRFUiBIRUggRE9BQ0hBU0hNRUU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgS05PVFRFRCBIQTs7OzsKKzA2QzA7QVJBQklDIExFVFRFUiBIRUggV0lUSCBZRUggQUJPVkU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIIE9OIEhBOzs7OworMDZDMTtBUkFCSUMgTEVUVEVSIEhFSCBHT0FMO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBIEdPQUw7Ozs7CiswNkMyO0FSQUJJQyBMRVRURVIgSEVIIEdPQUwgV0lUSCBIQU1aQSBBQk9WRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQU1aQUggT04gSEEgR09BTDs7OzsKKzA2QzM7QVJBQklDIExFVFRFUiBURUggTUFSQlVUQSBHT0FMO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFRBQSBNQVJCVVRBSCBHT0FMOzs7OworMDZDNDtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIFJJTkc7TG87MDtSOzs7OztOOzs7OzsKKzA2QzU7QVJBQklDIExFVFRFUiBLSVJHSElaIE9FO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIEJBUjs7OzsKKzA2QzY7QVJBQklDIExFVFRFUiBPRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBXQVcgV0lUSCBTTUFMTCBWOzs7OworMDZDNztBUkFCSUMgTEVUVEVSIFU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgV0FXIFdJVEggREFNTUFIOzs7OworMDZDODtBUkFCSUMgTEVUVEVSIFlVO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIEFMRUYgQUJPVkU7Ozs7CiswNkM5O0FSQUJJQyBMRVRURVIgS0lSR0hJWiBZVTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBXQVcgV0lUSCBJTlZFUlRFRCBTTUFMTCBWOzs7OworMDZDQTtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIFRXTyBET1RTIEFCT1ZFO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNkNCO0FSQUJJQyBMRVRURVIgVkU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgV0FXIFdJVEggVEhSRUUgRE9UUyBBQk9WRTs7OzsKKzA2Q0M7QVJBQklDIExFVFRFUiBGQVJTSSBZRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgRE9UTEVTUyBZQTs7OzsKKzA2Q0Q7QVJBQklDIExFVFRFUiBZRUggV0lUSCBUQUlMO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFlBIFdJVEggVEFJTDs7OzsKKzA2Q0U7QVJBQklDIExFVFRFUiBZRUggV0lUSCBTTUFMTCBWO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFlBIFdJVEggU01BTEwgVjs7OzsKKzA2RDA7QVJBQklDIExFVFRFUiBFO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFlBIFdJVEggVFdPIERPVFMgVkVSVElDQUwgQkVMT1c7Ozs7CiswNkQxO0FSQUJJQyBMRVRURVIgWUVIIFdJVEggVEhSRUUgRE9UUyBCRUxPVztMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBZQSBXSVRIIFRIUkVFIERPVFMgQkVMT1c7Ozs7CiswNkQyO0FSQUJJQyBMRVRURVIgWUVIIEJBUlJFRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBZQSBCQVJSRUU7Ozs7CiswNkQzO0FSQUJJQyBMRVRURVIgWUVIIEJBUlJFRSBXSVRIIEhBTVpBIEFCT1ZFO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBTVpBSCBPTiBZQSBCQVJSRUU7Ozs7CiswNkQ0O0FSQUJJQyBGVUxMIFNUT1A7UG87MDtSOzs7OztOO0FSQUJJQyBQRVJJT0Q7Ozs7CiswNkQ1O0FSQUJJQyBMRVRURVIgQUU7TG87MDtSOzs7OztOOzs7OzsKKzA2RDY7QVJBQklDIFNNQUxMIEhJR0ggTElHQVRVUkUgU0FEIFdJVEggTEFNIFdJVEggQUxFRiBNQUtTVVJBO01uOzIzMDtSOzs7OztOOzs7OzsKKzA2RDc7QVJBQklDIFNNQUxMIEhJR0ggTElHQVRVUkUgUUFGIFdJVEggTEFNIFdJVEggQUxFRiBNQUtTVVJBO01uOzIzMDtSOzs7OztOOzs7OzsKKzA2RDg7QVJBQklDIFNNQUxMIEhJR0ggTUVFTSBJTklUSUFMIEZPUk07TW47MjMwO1I7Ozs7O047Ozs7OworMDZEOTtBUkFCSUMgU01BTEwgSElHSCBMQU0gQUxFRjtNbjsyMzA7Ujs7Ozs7Tjs7Ozs7CiswNkRBO0FSQUJJQyBTTUFMTCBISUdIIEpFRU07TW47MjMwO1I7Ozs7O047Ozs7OworMDZEQjtBUkFCSUMgU01BTEwgSElHSCBUSFJFRSBET1RTO01uOzIzMDtSOzs7OztOOzs7OzsKKzA2REM7QVJBQklDIFNNQUxMIEhJR0ggU0VFTjtNbjsyMzA7Ujs7Ozs7Tjs7Ozs7CiswNkREO0FSQUJJQyBFTkQgT0YgQVlBSDtNZTswO1I7Ozs7O047Ozs7OworMDZERTtBUkFCSUMgU1RBUlQgT0YgUlVCIEVMIEhJWkI7TWU7MDtSOzs7OztOOzs7OzsKKzA2REY7QVJBQklDIFNNQUxMIEhJR0ggUk9VTkRFRCBaRVJPO01uOzIzMDtSOzs7OztOOzs7OzsKKzA2RTA7QVJBQklDIFNNQUxMIEhJR0ggVVBSSUdIVCBSRUNUQU5HVUxBUiBaRVJPO01uOzIzMDtSOzs7OztOOzs7OzsKKzA2RTE7QVJBQklDIFNNQUxMIEhJR0ggRE9UTEVTUyBIRUFEIE9GIEtIQUg7TW47MjMwO1I7Ozs7O047Ozs7OworMDZFMjtBUkFCSUMgU01BTEwgSElHSCBNRUVNIElTT0xBVEVEIEZPUk07TW47MjMwO1I7Ozs7O047Ozs7OworMDZFMztBUkFCSUMgU01BTEwgTE9XIFNFRU47TW47MjIwO1I7Ozs7O047Ozs7OworMDZFNDtBUkFCSUMgU01BTEwgSElHSCBNQUREQTtNbjsyMzA7Ujs7Ozs7Tjs7Ozs7CiswNkU1O0FSQUJJQyBTTUFMTCBXQVc7TG07MDtSOzs7OztOOzs7OzsKKzA2RTY7QVJBQklDIFNNQUxMIFlFSDtMbTswO1I7Ozs7O047Ozs7OworMDZFNztBUkFCSUMgU01BTEwgSElHSCBZRUg7TW47MjMwO1I7Ozs7O047Ozs7OworMDZFODtBUkFCSUMgU01BTEwgSElHSCBOT09OO01uOzIzMDtSOzs7OztOOzs7OzsKKzA2RTk7QVJBQklDIFBMQUNFIE9GIFNBSkRBSDtTbzswO1I7Ozs7O047Ozs7OworMDZFQTtBUkFCSUMgRU1QVFkgQ0VOVFJFIExPVyBTVE9QO01uOzIyMDtSOzs7OztOOzs7OzsKKzA2RUI7QVJBQklDIEVNUFRZIENFTlRSRSBISUdIIFNUT1A7TW47MjMwO1I7Ozs7O047Ozs7OworMDZFQztBUkFCSUMgUk9VTkRFRCBISUdIIFNUT1AgV0lUSCBGSUxMRUQgQ0VOVFJFO01uOzIzMDtSOzs7OztOOzs7OzsKKzA2RUQ7QVJBQklDIFNNQUxMIExPVyBNRUVNO01uOzIyMDtSOzs7OztOOzs7OzsKKzA2RjA7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIFpFUk87TmQ7MDtFTjs7MDswOzA7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPOzs7OworMDZGMTtFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgT05FO05kOzA7RU47OzE7MTsxO047RUFTVEVSTiBBUkFCSUMtSU5ESUMgRElHSVQgT05FOzs7OworMDZGMjtFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgVFdPO05kOzA7RU47OzI7MjsyO047RUFTVEVSTiBBUkFCSUMtSU5ESUMgRElHSVQgVFdPOzs7OworMDZGMztFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgVEhSRUU7TmQ7MDtFTjs7MzszOzM7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBUSFJFRTs7OzsKKzA2RjQ7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIEZPVVI7TmQ7MDtFTjs7NDs0OzQ7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBGT1VSOzs7OworMDZGNTtFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgRklWRTtOZDswO0VOOzs1OzU7NTtOO0VBU1RFUk4gQVJBQklDLUlORElDIERJR0lUIEZJVkU7Ozs7CiswNkY2O0VYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBTSVg7TmQ7MDtFTjs7Njs2OzY7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBTSVg7Ozs7CiswNkY3O0VYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBTRVZFTjtOZDswO0VOOzs3Ozc7NztOO0VBU1RFUk4gQVJBQklDLUlORElDIERJR0lUIFNFVkVOOzs7OworMDZGODtFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgRUlHSFQ7TmQ7MDtFTjs7ODs4Ozg7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBFSUdIVDs7OzsKKzA2Rjk7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIE5JTkU7TmQ7MDtFTjs7OTs5Ozk7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBOSU5FOzs7OworMDkwMTtERVZBTkFHQVJJIFNJR04gQ0FORFJBQklORFU7TW47Mzc7TDs7Ozs7Tjs7Ozs7CiswOTAyO0RFVkFOQUdBUkkgU0lHTiBBTlVTVkFSQTtNbjszNjtMOzs7OztOOzs7OzsKKzA5MDM7REVWQU5BR0FSSSBTSUdOIFZJU0FSR0E7TWM7MDtMOzs7OztOOzs7OzsKKzA5MDU7REVWQU5BR0FSSSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMDkwNjtERVZBTkFHQVJJIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMDkwNztERVZBTkFHQVJJIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTA4O0RFVkFOQUdBUkkgTEVUVEVSIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTA5O0RFVkFOQUdBUkkgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzA5MEE7REVWQU5BR0FSSSBMRVRURVIgVVU7TG87MDtMOzs7OztOOzs7OzsKKzA5MEI7REVWQU5BR0FSSSBMRVRURVIgVk9DQUxJQyBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTBDO0RFVkFOQUdBUkkgTEVUVEVSIFZPQ0FMSUMgTDtMbzswO0w7Ozs7O047Ozs7OworMDkwRDtERVZBTkFHQVJJIExFVFRFUiBDQU5EUkEgRTtMbzswO0w7Ozs7O047Ozs7OworMDkwRTtERVZBTkFHQVJJIExFVFRFUiBTSE9SVCBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTBGO0RFVkFOQUdBUkkgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzA5MTA7REVWQU5BR0FSSSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzA5MTE7REVWQU5BR0FSSSBMRVRURVIgQ0FORFJBIE87TG87MDtMOzs7OztOOzs7OzsKKzA5MTI7REVWQU5BR0FSSSBMRVRURVIgU0hPUlQgTztMbzswO0w7Ozs7O047Ozs7OworMDkxMztERVZBTkFHQVJJIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTE0O0RFVkFOQUdBUkkgTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTE1O0RFVkFOQUdBUkkgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTE2O0RFVkFOQUdBUkkgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMDkxNztERVZBTkFHQVJJIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMDkxODtERVZBTkFHQVJJIExFVFRFUiBHSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MTk7REVWQU5BR0FSSSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTFBO0RFVkFOQUdBUkkgTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTFCO0RFVkFOQUdBUkkgTEVUVEVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMDkxQztERVZBTkFHQVJJIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMDkxRDtERVZBTkFHQVJJIExFVFRFUiBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MUU7REVWQU5BR0FSSSBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTFGO0RFVkFOQUdBUkkgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMDkyMDtERVZBTkFHQVJJIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTIxO0RFVkFOQUdBUkkgTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMDkyMjtERVZBTkFHQVJJIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTIzO0RFVkFOQUdBUkkgTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMDkyNDtERVZBTkFHQVJJIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMDkyNTtERVZBTkFHQVJJIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MjY7REVWQU5BR0FSSSBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzA5Mjc7REVWQU5BR0FSSSBMRVRURVIgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTI4O0RFVkFOQUdBUkkgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTI5O0RFVkFOQUdBUkkgTEVUVEVSIE5OTkE7TG87MDtMOzA5MjggMDkzQzs7OztOOzs7OzsKKzA5MkE7REVWQU5BR0FSSSBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MkI7REVWQU5BR0FSSSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTJDO0RFVkFOQUdBUkkgTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTJEO0RFVkFOQUdBUkkgTEVUVEVSIEJIQTtMbzswO0w7Ozs7O047Ozs7OworMDkyRTtERVZBTkFHQVJJIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMDkyRjtERVZBTkFHQVJJIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMDkzMDtERVZBTkFHQVJJIExFVFRFUiBSQTtMbzswO0w7Ozs7O047Ozs7OworMDkzMTtERVZBTkFHQVJJIExFVFRFUiBSUkE7TG87MDtMOzA5MzAgMDkzQzs7OztOOzs7OzsKKzA5MzI7REVWQU5BR0FSSSBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MzM7REVWQU5BR0FSSSBMRVRURVIgTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTM0O0RFVkFOQUdBUkkgTEVUVEVSIExMTEE7TG87MDtMOzA5MzMgMDkzQzs7OztOOzs7OzsKKzA5MzU7REVWQU5BR0FSSSBMRVRURVIgVkE7TG87MDtMOzs7OztOOzs7OzsKKzA5MzY7REVWQU5BR0FSSSBMRVRURVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTM3O0RFVkFOQUdBUkkgTEVUVEVSIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMDkzODtERVZBTkFHQVJJIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMDkzOTtERVZBTkFHQVJJIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMDkzQztERVZBTkFHQVJJIFNJR04gTlVLVEE7TW47NztMOzs7OztOOzs7OzsKKzA5M0Q7REVWQU5BR0FSSSBTSUdOIEFWQUdSQUhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTNFO0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBBQTtNYzswO0w7Ozs7O047Ozs7OworMDkzRjtERVZBTkFHQVJJIFZPV0VMIFNJR04gSTtNYzswO0w7Ozs7O047Ozs7OworMDk0MDtERVZBTkFHQVJJIFZPV0VMIFNJR04gSUk7TWM7MDtMOzs7OztOOzs7OzsKKzA5NDE7REVWQU5BR0FSSSBWT1dFTCBTSUdOIFU7TW47Mzg7TDs7Ozs7Tjs7Ozs7CiswOTQyO0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBVVTtNbjszOTtMOzs7OztOOzs7OzsKKzA5NDM7REVWQU5BR0FSSSBWT1dFTCBTSUdOIFZPQ0FMSUMgUjtNbjs0MDtMOzs7OztOOzs7OzsKKzA5NDQ7REVWQU5BR0FSSSBWT1dFTCBTSUdOIFZPQ0FMSUMgUlI7TW47NDE7TDs7Ozs7Tjs7Ozs7CiswOTQ1O0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBDQU5EUkEgRTtNbjs0MjtMOzs7OztOOzs7OzsKKzA5NDY7REVWQU5BR0FSSSBWT1dFTCBTSUdOIFNIT1JUIEU7TW47NDM7TDs7Ozs7Tjs7Ozs7CiswOTQ3O0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBFO01uOzQ0O0w7Ozs7O047Ozs7OworMDk0ODtERVZBTkFHQVJJIFZPV0VMIFNJR04gQUk7TW47NDU7TDs7Ozs7Tjs7Ozs7CiswOTQ5O0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBDQU5EUkEgTztNYzswO0w7Ozs7O047Ozs7OworMDk0QTtERVZBTkFHQVJJIFZPV0VMIFNJR04gU0hPUlQgTztNYzswO0w7Ozs7O047Ozs7OworMDk0QjtERVZBTkFHQVJJIFZPV0VMIFNJR04gTztNYzswO0w7Ozs7O047Ozs7OworMDk0QztERVZBTkFHQVJJIFZPV0VMIFNJR04gQVU7TWM7MDtMOzs7OztOOzs7OzsKKzA5NEQ7REVWQU5BR0FSSSBTSUdOIFZJUkFNQTtNbjs5O0w7Ozs7O047Ozs7OworMDk1MDtERVZBTkFHQVJJIE9NO1NvOzA7TDs7Ozs7Tjs7Ozs7CiswOTUxO0RFVkFOQUdBUkkgU1RSRVNTIFNJR04gVURBVFRBO01uOzQ2O0w7Ozs7O047Ozs7OworMDk1MjtERVZBTkFHQVJJIFNUUkVTUyBTSUdOIEFOVURBVFRBO01uOzQ3O0w7Ozs7O047Ozs7OworMDk1MztERVZBTkFHQVJJIEdSQVZFIEFDQ0VOVDtNbjsyMzA7TDs7Ozs7Tjs7Ozs7CiswOTU0O0RFVkFOQUdBUkkgQUNVVEUgQUNDRU5UO01uOzIzMDtMOzs7OztOOzs7OzsKKzA5NTg7REVWQU5BR0FSSSBMRVRURVIgUUE7TG87MDtMOzA5MTUgMDkzQzs7OztOOzs7OzsKKzA5NTk7REVWQU5BR0FSSSBMRVRURVIgS0hIQTtMbzswO0w7MDkxNiAwOTNDOzs7O047Ozs7OworMDk1QTtERVZBTkFHQVJJIExFVFRFUiBHSEhBO0xvOzA7TDswOTE3IDA5M0M7Ozs7Tjs7Ozs7CiswOTVCO0RFVkFOQUdBUkkgTEVUVEVSIFpBO0xvOzA7TDswOTFDIDA5M0M7Ozs7Tjs7Ozs7CiswOTVDO0RFVkFOQUdBUkkgTEVUVEVSIEREREhBO0xvOzA7TDswOTIxIDA5M0M7Ozs7Tjs7Ozs7CiswOTVEO0RFVkFOQUdBUkkgTEVUVEVSIFJIQTtMbzswO0w7MDkyMiAwOTNDOzs7O047Ozs7OworMDk1RTtERVZBTkFHQVJJIExFVFRFUiBGQTtMbzswO0w7MDkyQiAwOTNDOzs7O047Ozs7OworMDk1RjtERVZBTkFHQVJJIExFVFRFUiBZWUE7TG87MDtMOzA5MkYgMDkzQzs7OztOOzs7OzsKKzA5NjA7REVWQU5BR0FSSSBMRVRURVIgVk9DQUxJQyBSUjtMbzswO0w7Ozs7O047Ozs7OworMDk2MTtERVZBTkFHQVJJIExFVFRFUiBWT0NBTElDIExMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTYyO0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBWT0NBTElDIEw7TW47NDg7TDs7Ozs7Tjs7Ozs7CiswOTYzO0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBWT0NBTElDIExMO01uOzQ5O0w7Ozs7O047Ozs7OworMDk2NDtERVZBTkFHQVJJIERBTkRBO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswOTY1O0RFVkFOQUdBUkkgRE9VQkxFIERBTkRBO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswOTY2O0RFVkFOQUdBUkkgRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMDk2NztERVZBTkFHQVJJIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMDk2ODtERVZBTkFHQVJJIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMDk2OTtERVZBTkFHQVJJIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswOTZBO0RFVkFOQUdBUkkgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMDk2QjtERVZBTkFHQVJJIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzA5NkM7REVWQU5BR0FSSSBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzA5NkQ7REVWQU5BR0FSSSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMDk2RTtERVZBTkFHQVJJIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswOTZGO0RFVkFOQUdBUkkgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMDk3MDtERVZBTkFHQVJJIEFCQlJFVklBVElPTiBTSUdOO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswOTgxO0JFTkdBTEkgU0lHTiBDQU5EUkFCSU5EVTtNbjs1MDtMOzs7OztOOzs7OzsKKzA5ODI7QkVOR0FMSSBTSUdOIEFOVVNWQVJBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOTgzO0JFTkdBTEkgU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOTg1O0JFTkdBTEkgTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzA5ODY7QkVOR0FMSSBMRVRURVIgQUE7TG87MDtMOzs7OztOOzs7OzsKKzA5ODc7QkVOR0FMSSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMDk4ODtCRU5HQUxJIExFVFRFUiBJSTtMbzswO0w7Ozs7O047Ozs7OworMDk4OTtCRU5HQUxJIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOThBO0JFTkdBTEkgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOThCO0JFTkdBTEkgTEVUVEVSIFZPQ0FMSUMgUjtMbzswO0w7Ozs7O047Ozs7OworMDk4QztCRU5HQUxJIExFVFRFUiBWT0NBTElDIEw7TG87MDtMOzs7OztOOzs7OzsKKzA5OEY7QkVOR0FMSSBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMDk5MDtCRU5HQUxJIExFVFRFUiBBSTtMbzswO0w7Ozs7O047Ozs7OworMDk5MztCRU5HQUxJIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTk0O0JFTkdBTEkgTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTk1O0JFTkdBTEkgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTk2O0JFTkdBTEkgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMDk5NztCRU5HQUxJIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMDk5ODtCRU5HQUxJIExFVFRFUiBHSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5OTk7QkVOR0FMSSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTlBO0JFTkdBTEkgTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTlCO0JFTkdBTEkgTEVUVEVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMDk5QztCRU5HQUxJIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMDk5RDtCRU5HQUxJIExFVFRFUiBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5OUU7QkVOR0FMSSBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTlGO0JFTkdBTEkgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMDlBMDtCRU5HQUxJIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUExO0JFTkdBTEkgTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMDlBMjtCRU5HQUxJIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUEzO0JFTkdBTEkgTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMDlBNDtCRU5HQUxJIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMDlBNTtCRU5HQUxJIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QTY7QkVOR0FMSSBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzA5QTc7QkVOR0FMSSBMRVRURVIgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUE4O0JFTkdBTEkgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUFBO0JFTkdBTEkgTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUFCO0JFTkdBTEkgTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMDlBQztCRU5HQUxJIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMDlBRDtCRU5HQUxJIExFVFRFUiBCSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QUU7QkVOR0FMSSBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzA5QUY7QkVOR0FMSSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzA5QjA7QkVOR0FMSSBMRVRURVIgUkE7TG87MDtMOzA5QUMgMDlCQzs7OztOOzs7OzsKKzA5QjI7QkVOR0FMSSBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QjY7QkVOR0FMSSBMRVRURVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUI3O0JFTkdBTEkgTEVUVEVSIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMDlCODtCRU5HQUxJIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMDlCOTtCRU5HQUxJIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMDlCQztCRU5HQUxJIFNJR04gTlVLVEE7TW47NztMOzs7OztOOzs7OzsKKzA5QkU7QkVOR0FMSSBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOUJGO0JFTkdBTEkgVk9XRUwgU0lHTiBJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOUMwO0JFTkdBTEkgVk9XRUwgU0lHTiBJSTtNYzswO0w7Ozs7O047Ozs7OworMDlDMTtCRU5HQUxJIFZPV0VMIFNJR04gVTtNbjs1MTtMOzs7OztOOzs7OzsKKzA5QzI7QkVOR0FMSSBWT1dFTCBTSUdOIFVVO01uOzUyO0w7Ozs7O047Ozs7OworMDlDMztCRU5HQUxJIFZPV0VMIFNJR04gVk9DQUxJQyBSO01uOzUzO0w7Ozs7O047Ozs7OworMDlDNDtCRU5HQUxJIFZPV0VMIFNJR04gVk9DQUxJQyBSUjtNbjs1NDtMOzs7OztOOzs7OzsKKzA5Qzc7QkVOR0FMSSBWT1dFTCBTSUdOIEU7TWM7MDtMOzs7OztOOzs7OzsKKzA5Qzg7QkVOR0FMSSBWT1dFTCBTSUdOIEFJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOUNCO0JFTkdBTEkgVk9XRUwgU0lHTiBPO01jOzA7TDswOUM3IDA5QkU7Ozs7Tjs7Ozs7CiswOUNDO0JFTkdBTEkgVk9XRUwgU0lHTiBBVTtNYzswO0w7MDlDNyAwOUQ3Ozs7O047Ozs7OworMDlDRDtCRU5HQUxJIFNJR04gVklSQU1BO01uOzk7TDs7Ozs7Tjs7Ozs7CiswOUQ3O0JFTkdBTEkgQVUgTEVOR1RIIE1BUks7TWM7MDtMOzs7OztOOzs7OzsKKzA5REM7QkVOR0FMSSBMRVRURVIgUlJBO0xvOzA7TDswOUExIDA5QkM7Ozs7Tjs7Ozs7CiswOUREO0JFTkdBTEkgTEVUVEVSIFJIQTtMbzswO0w7MDlBMiAwOUJDOzs7O047Ozs7OworMDlERjtCRU5HQUxJIExFVFRFUiBZWUE7TG87MDtMOzA5QUYgMDlCQzs7OztOOzs7OzsKKzA5RTA7QkVOR0FMSSBMRVRURVIgVk9DQUxJQyBSUjtMbzswO0w7Ozs7O047Ozs7OworMDlFMTtCRU5HQUxJIExFVFRFUiBWT0NBTElDIExMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUUyO0JFTkdBTEkgVk9XRUwgU0lHTiBWT0NBTElDIEw7TW47NTU7TDs7Ozs7Tjs7Ozs7CiswOUUzO0JFTkdBTEkgVk9XRUwgU0lHTiBWT0NBTElDIExMO01uOzU2O0w7Ozs7O047Ozs7OworMDlFNjtCRU5HQUxJIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzA5RTc7QkVOR0FMSSBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzA5RTg7QkVOR0FMSSBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzA5RTk7QkVOR0FMSSBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMDlFQTtCRU5HQUxJIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzA5RUI7QkVOR0FMSSBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswOUVDO0JFTkdBTEkgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswOUVEO0JFTkdBTEkgRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzA5RUU7QkVOR0FMSSBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMDlFRjtCRU5HQUxJIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzA5RjA7QkVOR0FMSSBMRVRURVIgUkEgV0lUSCBNSURETEUgRElBR09OQUw7TG87MDtMOzs7OztOOztBc3NhbWVzZTs7OworMDlGMTtCRU5HQUxJIExFVFRFUiBSQSBXSVRIIExPV0VSIERJQUdPTkFMO0xvOzA7TDs7Ozs7TjtCRU5HQUxJIExFVFRFUiBWQSBXSVRIIExPV0VSIERJQUdPTkFMO0Fzc2FtZXNlOzs7CiswOUYyO0JFTkdBTEkgUlVQRUUgTUFSSztTYzswO0w7Ozs7O047Ozs7OworMDlGMztCRU5HQUxJIFJVUEVFIFNJR047U2M7MDtMOzs7OztOOzs7OzsKKzA5RjQ7QkVOR0FMSSBDVVJSRU5DWSBOVU1FUkFUT1IgT05FO05vOzA7TDs7OzsxO047Ozs7OworMDlGNTtCRU5HQUxJIENVUlJFTkNZIE5VTUVSQVRPUiBUV087Tm87MDtMOzs7OzI7Tjs7Ozs7CiswOUY2O0JFTkdBTEkgQ1VSUkVOQ1kgTlVNRVJBVE9SIFRIUkVFO05vOzA7TDs7OzszO047Ozs7OworMDlGNztCRU5HQUxJIENVUlJFTkNZIE5VTUVSQVRPUiBGT1VSO05vOzA7TDs7Ozs0O047Ozs7OworMDlGODtCRU5HQUxJIENVUlJFTkNZIE5VTUVSQVRPUiBPTkUgTEVTUyBUSEFOIFRIRSBERU5PTUlOQVRPUjtObzswO0w7Ozs7LTE7Tjs7Ozs7CiswOUY5O0JFTkdBTEkgQ1VSUkVOQ1kgREVOT01JTkFUT1IgU0lYVEVFTjtObzswO0w7Ozs7MTY7Tjs7Ozs7CiswOUZBO0JFTkdBTEkgSVNTSEFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CiswQTAyO0dVUk1VS0hJIFNJR04gQklOREk7TW47NTc7TDs7Ozs7Tjs7Ozs7CiswQTA1O0dVUk1VS0hJIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTA2O0dVUk1VS0hJIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEEwNztHVVJNVUtISSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEEwODtHVVJNVUtISSBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzBBMDk7R1VSTVVLSEkgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzBBMEE7R1VSTVVLSEkgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTBGO0dVUk1VS0hJIExFVFRFUiBFRTtMbzswO0w7Ozs7O047Ozs7OworMEExMDtHVVJNVUtISSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzBBMTM7R1VSTVVLSEkgTEVUVEVSIE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTE0O0dVUk1VS0hJIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMEExNTtHVVJNVUtISSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzBBMTY7R1VSTVVLSEkgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMEExNztHVVJNVUtISSBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBBMTg7R1VSTVVLSEkgTEVUVEVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMEExOTtHVVJNVUtISSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTFBO0dVUk1VS0hJIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEExQjtHVVJNVUtISSBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTFDO0dVUk1VS0hJIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMEExRDtHVVJNVUtISSBMRVRURVIgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTFFO0dVUk1VS0hJIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzBBMUY7R1VSTVVLSEkgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMEEyMDtHVVJNVUtISSBMRVRURVIgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEEyMTtHVVJNVUtISSBMRVRURVIgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTIyO0dVUk1VS0hJIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTIzO0dVUk1VS0hJIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBBMjQ7R1VSTVVLSEkgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTI1O0dVUk1VS0hJIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMjY7R1VSTVVLSEkgTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTI3O0dVUk1VS0hJIExFVFRFUiBESEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMjg7R1VSTVVLSEkgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTJBO0dVUk1VS0hJIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMEEyQjtHVVJNVUtISSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTJDO0dVUk1VS0hJIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMEEyRDtHVVJNVUtISSBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTJFO0dVUk1VS0hJIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMEEyRjtHVVJNVUtISSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBBMzA7R1VSTVVLSEkgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTMyO0dVUk1VS0hJIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMEEzMztHVVJNVUtISSBMRVRURVIgTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTM1O0dVUk1VS0hJIExFVFRFUiBWQTtMbzswO0w7Ozs7O047Ozs7OworMEEzNjtHVVJNVUtISSBMRVRURVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTM4O0dVUk1VS0hJIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMEEzOTtHVVJNVUtISSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBM0M7R1VSTVVLSEkgU0lHTiBOVUtUQTtNbjs3O0w7Ozs7O047Ozs7OworMEEzRTtHVVJNVUtISSBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQTNGO0dVUk1VS0hJIFZPV0VMIFNJR04gSTtNYzswO0w7Ozs7O047Ozs7OworMEE0MDtHVVJNVUtISSBWT1dFTCBTSUdOIElJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQTQxO0dVUk1VS0hJIFZPV0VMIFNJR04gVTtNbjs1ODtMOzs7OztOOzs7OzsKKzBBNDI7R1VSTVVLSEkgVk9XRUwgU0lHTiBVVTtNbjs1OTtMOzs7OztOOzs7OzsKKzBBNDc7R1VSTVVLSEkgVk9XRUwgU0lHTiBFRTtNbjs2MDtMOzs7OztOOzs7OzsKKzBBNDg7R1VSTVVLSEkgVk9XRUwgU0lHTiBBSTtNbjs2MTtMOzs7OztOOzs7OzsKKzBBNEI7R1VSTVVLSEkgVk9XRUwgU0lHTiBPTztNbjs2MjtMOzs7OztOOzs7OzsKKzBBNEM7R1VSTVVLSEkgVk9XRUwgU0lHTiBBVTtNbjs2MztMOzs7OztOOzs7OzsKKzBBNEQ7R1VSTVVLSEkgU0lHTiBWSVJBTUE7TW47OTtMOzs7OztOOzs7OzsKKzBBNTk7R1VSTVVLSEkgTEVUVEVSIEtISEE7TG87MDtMOzBBMTYgMEEzQzs7OztOOzs7OzsKKzBBNUE7R1VSTVVLSEkgTEVUVEVSIEdISEE7TG87MDtMOzBBMTcgMEEzQzs7OztOOzs7OzsKKzBBNUI7R1VSTVVLSEkgTEVUVEVSIFpBO0xvOzA7TDswQTFDIDBBM0M7Ozs7Tjs7Ozs7CiswQTVDO0dVUk1VS0hJIExFVFRFUiBSUkE7TG87MDtMOzBBMjEgMEEzQzs7OztOOzs7OzsKKzBBNUU7R1VSTVVLSEkgTEVUVEVSIEZBO0xvOzA7TDswQTJCIDBBM0M7Ozs7Tjs7Ozs7CiswQTY2O0dVUk1VS0hJIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBBNjc7R1VSTVVLSEkgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswQTY4O0dVUk1VS0hJIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMEE2OTtHVVJNVUtISSBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEE2QTtHVVJNVUtISSBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswQTZCO0dVUk1VS0hJIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBBNkM7R1VSTVVLSEkgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswQTZEO0dVUk1VS0hJIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswQTZFO0dVUk1VS0hJIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswQTZGO0dVUk1VS0hJIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBBNzA7R1VSTVVLSEkgVElQUEk7TW47NjQ7TDs7Ozs7Tjs7Ozs7CiswQTcxO0dVUk1VS0hJIEFEREFLO01uOzY1O0w7Ozs7O047Ozs7OworMEE3MjtHVVJNVUtISSBJUkk7TG87MDtMOzs7OztOOzs7OzsKKzBBNzM7R1VSTVVLSEkgVVJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTc0O0dVUk1VS0hJIEVLIE9OS0FSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTgxO0dVSkFSQVRJIFNJR04gQ0FORFJBQklORFU7TW47Njc7TDs7Ozs7Tjs7Ozs7CiswQTgyO0dVSkFSQVRJIFNJR04gQU5VU1ZBUkE7TW47NjY7TDs7Ozs7Tjs7Ozs7CiswQTgzO0dVSkFSQVRJIFNJR04gVklTQVJHQTtNYzswO0w7Ozs7O047Ozs7OworMEE4NTtHVUpBUkFUSSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMEE4NjtHVUpBUkFUSSBMRVRURVIgQUE7TG87MDtMOzs7OztOOzs7OzsKKzBBODc7R1VKQVJBVEkgTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzBBODg7R1VKQVJBVEkgTEVUVEVSIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTg5O0dVSkFSQVRJIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQThBO0dVSkFSQVRJIExFVFRFUiBVVTtMbzswO0w7Ozs7O047Ozs7OworMEE4QjtHVUpBUkFUSSBMRVRURVIgVk9DQUxJQyBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQThEO0dVSkFSQVRJIFZPV0VMIENBTkRSQSBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQThGO0dVSkFSQVRJIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTkwO0dVSkFSQVRJIExFVFRFUiBBSTtMbzswO0w7Ozs7O047Ozs7OworMEE5MTtHVUpBUkFUSSBWT1dFTCBDQU5EUkEgTztMbzswO0w7Ozs7O047Ozs7OworMEE5MztHVUpBUkFUSSBMRVRURVIgTztMbzswO0w7Ozs7O047Ozs7OworMEE5NDtHVUpBUkFUSSBMRVRURVIgQVU7TG87MDtMOzs7OztOOzs7OzsKKzBBOTU7R1VKQVJBVEkgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTk2O0dVSkFSQVRJIExFVFRFUiBLSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBOTc7R1VKQVJBVEkgTEVUVEVSIEdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTk4O0dVSkFSQVRJIExFVFRFUiBHSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBOTk7R1VKQVJBVEkgTEVUVEVSIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMEE5QTtHVUpBUkFUSSBMRVRURVIgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzBBOUI7R1VKQVJBVEkgTEVUVEVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMEE5QztHVUpBUkFUSSBMRVRURVIgSkE7TG87MDtMOzs7OztOOzs7OzsKKzBBOUQ7R1VKQVJBVEkgTEVUVEVSIEpIQTtMbzswO0w7Ozs7O047Ozs7OworMEE5RTtHVUpBUkFUSSBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTlGO0dVSkFSQVRJIExFVFRFUiBUVEE7TG87MDtMOzs7OztOOzs7OzsKKzBBQTA7R1VKQVJBVEkgTEVUVEVSIFRUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBQTE7R1VKQVJBVEkgTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMEFBMjtHVUpBUkFUSSBMRVRURVIgRERIQTtMbzswO0w7Ozs7O047Ozs7OworMEFBMztHVUpBUkFUSSBMRVRURVIgTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUE0O0dVSkFSQVRJIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMEFBNTtHVUpBUkFUSSBMRVRURVIgVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUE2O0dVSkFSQVRJIExFVFRFUiBEQTtMbzswO0w7Ozs7O047Ozs7OworMEFBNztHVUpBUkFUSSBMRVRURVIgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUE4O0dVSkFSQVRJIExFVFRFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMEFBQTtHVUpBUkFUSSBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzBBQUI7R1VKQVJBVEkgTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMEFBQztHVUpBUkFUSSBMRVRURVIgQkE7TG87MDtMOzs7OztOOzs7OzsKKzBBQUQ7R1VKQVJBVEkgTEVUVEVSIEJIQTtMbzswO0w7Ozs7O047Ozs7OworMEFBRTtHVUpBUkFUSSBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzBBQUY7R1VKQVJBVEkgTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUIwO0dVSkFSQVRJIExFVFRFUiBSQTtMbzswO0w7Ozs7O047Ozs7OworMEFCMjtHVUpBUkFUSSBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzBBQjM7R1VKQVJBVEkgTEVUVEVSIExMQTtMbzswO0w7Ozs7O047Ozs7OworMEFCNTtHVUpBUkFUSSBMRVRURVIgVkE7TG87MDtMOzs7OztOOzs7OzsKKzBBQjY7R1VKQVJBVEkgTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMEFCNztHVUpBUkFUSSBMRVRURVIgU1NBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUI4O0dVSkFSQVRJIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMEFCOTtHVUpBUkFUSSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBQkM7R1VKQVJBVEkgU0lHTiBOVUtUQTtNbjs3O0w7Ozs7O047Ozs7OworMEFCRDtHVUpBUkFUSSBTSUdOIEFWQUdSQUhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUJFO0dVSkFSQVRJIFZPV0VMIFNJR04gQUE7TWM7MDtMOzs7OztOOzs7OzsKKzBBQkY7R1VKQVJBVEkgVk9XRUwgU0lHTiBJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQUMwO0dVSkFSQVRJIFZPV0VMIFNJR04gSUk7TWM7MDtMOzs7OztOOzs7OzsKKzBBQzE7R1VKQVJBVEkgVk9XRUwgU0lHTiBVO01uOzY4O0w7Ozs7O047Ozs7OworMEFDMjtHVUpBUkFUSSBWT1dFTCBTSUdOIFVVO01uOzY5O0w7Ozs7O047Ozs7OworMEFDMztHVUpBUkFUSSBWT1dFTCBTSUdOIFZPQ0FMSUMgUjtNbjs3MDtMOzs7OztOOzs7OzsKKzBBQzQ7R1VKQVJBVEkgVk9XRUwgU0lHTiBWT0NBTElDIFJSO01uOzcxO0w7Ozs7O047Ozs7OworMEFDNTtHVUpBUkFUSSBWT1dFTCBTSUdOIENBTkRSQSBFO01uOzcyO0w7Ozs7O047Ozs7OworMEFDNztHVUpBUkFUSSBWT1dFTCBTSUdOIEU7TW47NzM7TDs7Ozs7Tjs7Ozs7CiswQUM4O0dVSkFSQVRJIFZPV0VMIFNJR04gQUk7TW47NzQ7TDs7Ozs7Tjs7Ozs7CiswQUM5O0dVSkFSQVRJIFZPV0VMIFNJR04gQ0FORFJBIE87TWM7MDtMOzs7OztOOzs7OzsKKzBBQ0I7R1VKQVJBVEkgVk9XRUwgU0lHTiBPO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQUNDO0dVSkFSQVRJIFZPV0VMIFNJR04gQVU7TWM7MDtMOzs7OztOOzs7OzsKKzBBQ0Q7R1VKQVJBVEkgU0lHTiBWSVJBTUE7TW47OTtMOzs7OztOOzs7OzsKKzBBRDA7R1VKQVJBVEkgT007U287MDtMOzs7OztOOzs7OzsKKzBBRTA7R1VKQVJBVEkgTEVUVEVSIFZPQ0FMSUMgUlI7TG87MDtMOzs7OztOOzs7OzsKKzBBRTY7R1VKQVJBVEkgRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMEFFNztHVUpBUkFUSSBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzBBRTg7R1VKQVJBVEkgRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswQUU5O0dVSkFSQVRJIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswQUVBO0dVSkFSQVRJIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzBBRUI7R1VKQVJBVEkgRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMEFFQztHVUpBUkFUSSBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzBBRUQ7R1VKQVJBVEkgRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzBBRUU7R1VKQVJBVEkgRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzBBRUY7R1VKQVJBVEkgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMEIwMTtPUklZQSBTSUdOIENBTkRSQUJJTkRVO01uOzc1O0w7Ozs7O047Ozs7OworMEIwMjtPUklZQSBTSUdOIEFOVVNWQVJBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQjAzO09SSVlBIFNJR04gVklTQVJHQTtNYzswO0w7Ozs7O047Ozs7OworMEIwNTtPUklZQSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMEIwNjtPUklZQSBMRVRURVIgQUE7TG87MDtMOzs7OztOOzs7OzsKKzBCMDc7T1JJWUEgTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzBCMDg7T1JJWUEgTEVUVEVSIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjA5O09SSVlBIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjBBO09SSVlBIExFVFRFUiBVVTtMbzswO0w7Ozs7O047Ozs7OworMEIwQjtPUklZQSBMRVRURVIgVk9DQUxJQyBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjBDO09SSVlBIExFVFRFUiBWT0NBTElDIEw7TG87MDtMOzs7OztOOzs7OzsKKzBCMEY7T1JJWUEgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzBCMTA7T1JJWUEgTEVUVEVSIEFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjEzO09SSVlBIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjE0O09SSVlBIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMEIxNTtPUklZQSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzBCMTY7T1JJWUEgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMEIxNztPUklZQSBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBCMTg7T1JJWUEgTEVUVEVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMEIxOTtPUklZQSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjFBO09SSVlBIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEIxQjtPUklZQSBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjFDO09SSVlBIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMEIxRDtPUklZQSBMRVRURVIgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjFFO09SSVlBIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzBCMUY7T1JJWUEgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMEIyMDtPUklZQSBMRVRURVIgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEIyMTtPUklZQSBMRVRURVIgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjIyO09SSVlBIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjIzO09SSVlBIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBCMjQ7T1JJWUEgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjI1O09SSVlBIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMjY7T1JJWUEgTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjI3O09SSVlBIExFVFRFUiBESEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMjg7T1JJWUEgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjJBO09SSVlBIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMEIyQjtPUklZQSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjJDO09SSVlBIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMEIyRDtPUklZQSBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjJFO09SSVlBIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMEIyRjtPUklZQSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBCMzA7T1JJWUEgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjMyO09SSVlBIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMEIzMztPUklZQSBMRVRURVIgTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjM2O09SSVlBIExFVFRFUiBTSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMzc7T1JJWUEgTEVUVEVSIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMEIzODtPUklZQSBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzBCMzk7T1JJWUEgTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjNDO09SSVlBIFNJR04gTlVLVEE7TW47NztMOzs7OztOOzs7OzsKKzBCM0Q7T1JJWUEgU0lHTiBBVkFHUkFIQTtMbzswO0w7Ozs7O047Ozs7OworMEIzRTtPUklZQSBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQjNGO09SSVlBIFZPV0VMIFNJR04gSTtNbjs3NjtMOzs7OztOOzs7OzsKKzBCNDA7T1JJWUEgVk9XRUwgU0lHTiBJSTtNYzswO0w7Ozs7O047Ozs7OworMEI0MTtPUklZQSBWT1dFTCBTSUdOIFU7TW47Nzc7TDs7Ozs7Tjs7Ozs7CiswQjQyO09SSVlBIFZPV0VMIFNJR04gVVU7TW47Nzg7TDs7Ozs7Tjs7Ozs7CiswQjQzO09SSVlBIFZPV0VMIFNJR04gVk9DQUxJQyBSO01uOzc5O0w7Ozs7O047Ozs7OworMEI0NztPUklZQSBWT1dFTCBTSUdOIEU7TWM7MDtMOzs7OztOOzs7OzsKKzBCNDg7T1JJWUEgVk9XRUwgU0lHTiBBSTtNYzswO0w7MEI0NyAwQjU2Ozs7O047Ozs7OworMEI0QjtPUklZQSBWT1dFTCBTSUdOIE87TWM7MDtMOzBCNDcgMEIzRTs7OztOOzs7OzsKKzBCNEM7T1JJWUEgVk9XRUwgU0lHTiBBVTtNYzswO0w7MEI0NyAwQjU3Ozs7O047Ozs7OworMEI0RDtPUklZQSBTSUdOIFZJUkFNQTtNbjs5O0w7Ozs7O047Ozs7OworMEI1NjtPUklZQSBBSSBMRU5HVEggTUFSSztNbjsyMzA7TDs7Ozs7Tjs7Ozs7CiswQjU3O09SSVlBIEFVIExFTkdUSCBNQVJLO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQjVDO09SSVlBIExFVFRFUiBSUkE7TG87MDtMOzBCMjEgMEIzQzs7OztOOzs7OzsKKzBCNUQ7T1JJWUEgTEVUVEVSIFJIQTtMbzswO0w7MEIyMiAwQjNDOzs7O047Ozs7OworMEI1RjtPUklZQSBMRVRURVIgWVlBO0xvOzA7TDswQjJGIDBCM0M7Ozs7Tjs7Ozs7CiswQjYwO09SSVlBIExFVFRFUiBWT0NBTElDIFJSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjYxO09SSVlBIExFVFRFUiBWT0NBTElDIExMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjY2O09SSVlBIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBCNjc7T1JJWUEgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswQjY4O09SSVlBIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMEI2OTtPUklZQSBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEI2QTtPUklZQSBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswQjZCO09SSVlBIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBCNkM7T1JJWUEgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswQjZEO09SSVlBIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswQjZFO09SSVlBIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswQjZGO09SSVlBIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBCNzA7T1JJWUEgSVNTSEFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CiswQjgyO1RBTUlMIFNJR04gQU5VU1ZBUkE7TW47MDtMOzs7OztOOzs7OzsKKzBCODM7VEFNSUwgU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQjg1O1RBTUlMIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjg2O1RBTUlMIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEI4NztUQU1JTCBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEI4ODtUQU1JTCBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzBCODk7VEFNSUwgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzBCOEE7VEFNSUwgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjhFO1RBTUlMIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjhGO1RBTUlMIExFVFRFUiBFRTtMbzswO0w7Ozs7O047Ozs7OworMEI5MDtUQU1JTCBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzBCOTI7VEFNSUwgTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzBCOTM7VEFNSUwgTEVUVEVSIE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjk0O1RBTUlMIExFVFRFUiBBVTtMbzswO0w7MEI5MiAwQkQ3Ozs7O047Ozs7OworMEI5NTtUQU1JTCBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzBCOTk7VEFNSUwgTEVUVEVSIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMEI5QTtUQU1JTCBMRVRURVIgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzBCOUM7VEFNSUwgTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjlFO1RBTUlMIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzBCOUY7VEFNSUwgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMEJBMztUQU1JTCBMRVRURVIgTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkE0O1RBTUlMIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMEJBODtUQU1JTCBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzBCQTk7VEFNSUwgTEVUVEVSIE5OTkE7TG87MDtMOzs7OztOOzs7OzsKKzBCQUE7VEFNSUwgTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkFFO1RBTUlMIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMEJBRjtUQU1JTCBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjA7VEFNSUwgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkIxO1RBTUlMIExFVFRFUiBSUkE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjI7VEFNSUwgTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkIzO1RBTUlMIExFVFRFUiBMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjQ7VEFNSUwgTEVUVEVSIExMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjU7VEFNSUwgTEVUVEVSIFZBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkI3O1RBTUlMIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzBCQjg7VEFNSUwgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkI5O1RBTUlMIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMEJCRTtUQU1JTCBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQkJGO1RBTUlMIFZPV0VMIFNJR04gSTtNYzswO0w7Ozs7O047Ozs7OworMEJDMDtUQU1JTCBWT1dFTCBTSUdOIElJO01uOzgwO0w7Ozs7O047Ozs7OworMEJDMTtUQU1JTCBWT1dFTCBTSUdOIFU7TWM7MDtMOzs7OztOOzs7OzsKKzBCQzI7VEFNSUwgVk9XRUwgU0lHTiBVVTtNYzswO0w7Ozs7O047Ozs7OworMEJDNjtUQU1JTCBWT1dFTCBTSUdOIEU7TWM7MDtMOzs7OztOOzs7OzsKKzBCQzc7VEFNSUwgVk9XRUwgU0lHTiBFRTtNYzswO0w7Ozs7O047Ozs7OworMEJDODtUQU1JTCBWT1dFTCBTSUdOIEFJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQkNBO1RBTUlMIFZPV0VMIFNJR04gTztNYzswO0w7MEJDNiAwQkJFOzs7O047Ozs7OworMEJDQjtUQU1JTCBWT1dFTCBTSUdOIE9PO01jOzA7TDswQkM3IDBCQkU7Ozs7Tjs7Ozs7CiswQkNDO1RBTUlMIFZPV0VMIFNJR04gQVU7TWM7MDtMOzBCQzYgMEJENzs7OztOOzs7OzsKKzBCQ0Q7VEFNSUwgU0lHTiBWSVJBTUE7TW47OTtMOzs7OztOOzs7OzsKKzBCRDc7VEFNSUwgQVUgTEVOR1RIIE1BUks7TWM7MDtMOzs7OztOOzs7OzsKKzBCRTc7VEFNSUwgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswQkU4O1RBTUlMIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMEJFOTtUQU1JTCBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEJFQTtUQU1JTCBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswQkVCO1RBTUlMIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBCRUM7VEFNSUwgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswQkVEO1RBTUlMIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswQkVFO1RBTUlMIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswQkVGO1RBTUlMIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBCRjA7VEFNSUwgTlVNQkVSIFRFTjtObzswO0w7Ozs7MTA7Tjs7Ozs7CiswQkYxO1RBTUlMIE5VTUJFUiBPTkUgSFVORFJFRDtObzswO0w7Ozs7MTAwO047Ozs7OworMEJGMjtUQU1JTCBOVU1CRVIgT05FIFRIT1VTQU5EO05vOzA7TDs7OzsxMDAwO047Ozs7OworMEMwMTtURUxVR1UgU0lHTiBDQU5EUkFCSU5EVTtNYzswO0w7Ozs7O047Ozs7OworMEMwMjtURUxVR1UgU0lHTiBBTlVTVkFSQTtNYzswO0w7Ozs7O047Ozs7OworMEMwMztURUxVR1UgU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzA1O1RFTFVHVSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMEMwNjtURUxVR1UgTEVUVEVSIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzA3O1RFTFVHVSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEMwODtURUxVR1UgTEVUVEVSIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzA5O1RFTFVHVSBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMEMwQTtURUxVR1UgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzBCO1RFTFVHVSBMRVRURVIgVk9DQUxJQyBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzBDO1RFTFVHVSBMRVRURVIgVk9DQUxJQyBMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzBFO1RFTFVHVSBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMEMwRjtURUxVR1UgTEVUVEVSIEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzEwO1RFTFVHVSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzBDMTI7VEVMVUdVIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzEzO1RFTFVHVSBMRVRURVIgT087TG87MDtMOzs7OztOOzs7OzsKKzBDMTQ7VEVMVUdVIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMEMxNTtURUxVR1UgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzE2O1RFTFVHVSBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzE3O1RFTFVHVSBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBDMTg7VEVMVUdVIExFVFRFUiBHSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMTk7VEVMVUdVIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzBDMUE7VEVMVUdVIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEMxQjtURUxVR1UgTEVUVEVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMEMxQztURUxVR1UgTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzFEO1RFTFVHVSBMRVRURVIgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzFFO1RFTFVHVSBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzFGO1RFTFVHVSBMRVRURVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzIwO1RFTFVHVSBMRVRURVIgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEMyMTtURUxVR1UgTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMEMyMjtURUxVR1UgTEVUVEVSIERESEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMjM7VEVMVUdVIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBDMjQ7VEVMVUdVIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMEMyNTtURUxVR1UgTEVUVEVSIFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEMyNjtURUxVR1UgTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzI3O1RFTFVHVSBMRVRURVIgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzI4O1RFTFVHVSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzBDMkE7VEVMVUdVIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMEMyQjtURUxVR1UgTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMEMyQztURUxVR1UgTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzJEO1RFTFVHVSBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzJFO1RFTFVHVSBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzBDMkY7VEVMVUdVIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMEMzMDtURUxVR1UgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzMxO1RFTFVHVSBMRVRURVIgUlJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzMyO1RFTFVHVSBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMzM7VEVMVUdVIExFVFRFUiBMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMzU7VEVMVUdVIExFVFRFUiBWQTtMbzswO0w7Ozs7O047Ozs7OworMEMzNjtURUxVR1UgTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMEMzNztURUxVR1UgTEVUVEVSIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMEMzODtURUxVR1UgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzM5O1RFTFVHVSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDM0U7VEVMVUdVIFZPV0VMIFNJR04gQUE7TW47ODE7TDs7Ozs7Tjs7Ozs7CiswQzNGO1RFTFVHVSBWT1dFTCBTSUdOIEk7TW47ODI7TDs7Ozs7Tjs7Ozs7CiswQzQwO1RFTFVHVSBWT1dFTCBTSUdOIElJO01uOzgzO0w7Ozs7O047Ozs7OworMEM0MTtURUxVR1UgVk9XRUwgU0lHTiBVO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzQyO1RFTFVHVSBWT1dFTCBTSUdOIFVVO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzQzO1RFTFVHVSBWT1dFTCBTSUdOIFZPQ0FMSUMgUjtNYzswO0w7Ozs7O047Ozs7OworMEM0NDtURUxVR1UgVk9XRUwgU0lHTiBWT0NBTElDIFJSO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzQ2O1RFTFVHVSBWT1dFTCBTSUdOIEU7TW47ODQ7TDs7Ozs7Tjs7Ozs7CiswQzQ3O1RFTFVHVSBWT1dFTCBTSUdOIEVFO01uOzg1O0w7Ozs7O047Ozs7OworMEM0ODtURUxVR1UgVk9XRUwgU0lHTiBBSTtNbjs4NjtMOzBDNDYgMEM1Njs7OztOOzs7OzsKKzBDNEE7VEVMVUdVIFZPV0VMIFNJR04gTztNbjs4NztMOzs7OztOOzs7OzsKKzBDNEI7VEVMVUdVIFZPV0VMIFNJR04gT087TW47ODg7TDs7Ozs7Tjs7Ozs7CiswQzRDO1RFTFVHVSBWT1dFTCBTSUdOIEFVO01uOzg5O0w7Ozs7O047Ozs7OworMEM0RDtURUxVR1UgU0lHTiBWSVJBTUE7TW47OTtMOzs7OztOOzs7OzsKKzBDNTU7VEVMVUdVIExFTkdUSCBNQVJLO01uOzkwO0w7Ozs7O047Ozs7OworMEM1NjtURUxVR1UgQUkgTEVOR1RIIE1BUks7TW47OTE7TDs7Ozs7Tjs7Ozs7CiswQzYwO1RFTFVHVSBMRVRURVIgVk9DQUxJQyBSUjtMbzswO0w7Ozs7O047Ozs7OworMEM2MTtURUxVR1UgTEVUVEVSIFZPQ0FMSUMgTEw7TG87MDtMOzs7OztOOzs7OzsKKzBDNjY7VEVMVUdVIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBDNjc7VEVMVUdVIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEM2ODtURUxVR1UgRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswQzY5O1RFTFVHVSBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEM2QTtURUxVR1UgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEM2QjtURUxVR1UgRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMEM2QztURUxVR1UgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswQzZEO1RFTFVHVSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEM2RTtURUxVR1UgRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzBDNkY7VEVMVUdVIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBDODI7S0FOTkFEQSBTSUdOIEFOVVNWQVJBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzgzO0tBTk5BREEgU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzg1O0tBTk5BREEgTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzBDODY7S0FOTkFEQSBMRVRURVIgQUE7TG87MDtMOzs7OztOOzs7OzsKKzBDODc7S0FOTkFEQSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEM4ODtLQU5OQURBIExFVFRFUiBJSTtMbzswO0w7Ozs7O047Ozs7OworMEM4OTtLQU5OQURBIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzhBO0tBTk5BREEgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzhCO0tBTk5BREEgTEVUVEVSIFZPQ0FMSUMgUjtMbzswO0w7Ozs7O047Ozs7OworMEM4QztLQU5OQURBIExFVFRFUiBWT0NBTElDIEw7TG87MDtMOzs7OztOOzs7OzsKKzBDOEU7S0FOTkFEQSBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMEM4RjtLQU5OQURBIExFVFRFUiBFRTtMbzswO0w7Ozs7O047Ozs7OworMEM5MDtLQU5OQURBIExFVFRFUiBBSTtMbzswO0w7Ozs7O047Ozs7OworMEM5MjtLQU5OQURBIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzkzO0tBTk5BREEgTEVUVEVSIE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzk0O0tBTk5BREEgTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzk1O0tBTk5BREEgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzk2O0tBTk5BREEgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMEM5NztLQU5OQURBIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMEM5ODtLQU5OQURBIExFVFRFUiBHSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDOTk7S0FOTkFEQSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzlBO0tBTk5BREEgTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzlCO0tBTk5BREEgTEVUVEVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMEM5QztLQU5OQURBIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMEM5RDtLQU5OQURBIExFVFRFUiBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDOUU7S0FOTkFEQSBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzlGO0tBTk5BREEgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMENBMDtLQU5OQURBIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0ExO0tBTk5BREEgTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMENBMjtLQU5OQURBIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0EzO0tBTk5BREEgTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMENBNDtLQU5OQURBIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMENBNTtLQU5OQURBIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQTY7S0FOTkFEQSBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzBDQTc7S0FOTkFEQSBMRVRURVIgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0E4O0tBTk5BREEgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0FBO0tBTk5BREEgTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0FCO0tBTk5BREEgTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMENBQztLQU5OQURBIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMENBRDtLQU5OQURBIExFVFRFUiBCSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQUU7S0FOTkFEQSBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzBDQUY7S0FOTkFEQSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBDQjA7S0FOTkFEQSBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzBDQjE7S0FOTkFEQSBMRVRURVIgUlJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0IyO0tBTk5BREEgTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0IzO0tBTk5BREEgTEVUVEVSIExMQTtMbzswO0w7Ozs7O047Ozs7OworMENCNTtLQU5OQURBIExFVFRFUiBWQTtMbzswO0w7Ozs7O047Ozs7OworMENCNjtLQU5OQURBIExFVFRFUiBTSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQjc7S0FOTkFEQSBMRVRURVIgU1NBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0I4O0tBTk5BREEgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0I5O0tBTk5BREEgTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0JFO0tBTk5BREEgVk9XRUwgU0lHTiBBQTtNYzswO0w7Ozs7O047Ozs7OworMENCRjtLQU5OQURBIFZPV0VMIFNJR04gSTtNbjs5MjtMOzs7OztOOzs7OzsKKzBDQzA7S0FOTkFEQSBWT1dFTCBTSUdOIElJO01jOzA7TDswQ0JGIDBDRDU7Ozs7Tjs7Ozs7CiswQ0MxO0tBTk5BREEgVk9XRUwgU0lHTiBVO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQ0MyO0tBTk5BREEgVk9XRUwgU0lHTiBVVTtNYzswO0w7Ozs7O047Ozs7OworMENDMztLQU5OQURBIFZPV0VMIFNJR04gVk9DQUxJQyBSO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQ0M0O0tBTk5BREEgVk9XRUwgU0lHTiBWT0NBTElDIFJSO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQ0M2O0tBTk5BREEgVk9XRUwgU0lHTiBFO01uOzkzO0w7Ozs7O047Ozs7OworMENDNztLQU5OQURBIFZPV0VMIFNJR04gRUU7TWM7MDtMOzBDQzYgMENENTs7OztOOzs7OzsKKzBDQzg7S0FOTkFEQSBWT1dFTCBTSUdOIEFJO01jOzA7TDswQ0M2IDBDRDY7Ozs7Tjs7Ozs7CiswQ0NBO0tBTk5BREEgVk9XRUwgU0lHTiBPO01jOzA7TDswQ0M2IDBDQzI7Ozs7Tjs7Ozs7CiswQ0NCO0tBTk5BREEgVk9XRUwgU0lHTiBPTztNYzswO0w7MENDNiAwQ0MyIDBDRDU7Ozs7Tjs7Ozs7CiswQ0NDO0tBTk5BREEgVk9XRUwgU0lHTiBBVTtNbjs5NDtMOzs7OztOOzs7OzsKKzBDQ0Q7S0FOTkFEQSBTSUdOIFZJUkFNQTtNbjs5O0w7Ozs7O047Ozs7OworMENENTtLQU5OQURBIExFTkdUSCBNQVJLO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQ0Q2O0tBTk5BREEgQUkgTEVOR1RIIE1BUks7TWM7MDtMOzs7OztOOzs7OzsKKzBDREU7S0FOTkFEQSBMRVRURVIgRkE7TG87MDtMOzs7OztOOzs7OzsKKzBDRTA7S0FOTkFEQSBMRVRURVIgVk9DQUxJQyBSUjtMbzswO0w7Ozs7O047Ozs7OworMENFMTtLQU5OQURBIExFVFRFUiBWT0NBTElDIExMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0U2O0tBTk5BREEgRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMENFNztLQU5OQURBIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMENFODtLQU5OQURBIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMENFOTtLQU5OQURBIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswQ0VBO0tBTk5BREEgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMENFQjtLQU5OQURBIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBDRUM7S0FOTkFEQSBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzBDRUQ7S0FOTkFEQSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMENFRTtLQU5OQURBIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswQ0VGO0tBTk5BREEgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMEQwMjtNQUxBWUFMQU0gU0lHTiBBTlVTVkFSQTtNYzswO0w7Ozs7O047Ozs7OworMEQwMztNQUxBWUFMQU0gU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRDA1O01BTEFZQUxBTSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMEQwNjtNQUxBWUFMQU0gTEVUVEVSIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDA3O01BTEFZQUxBTSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEQwODtNQUxBWUFMQU0gTEVUVEVSIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDA5O01BTEFZQUxBTSBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMEQwQTtNQUxBWUFMQU0gTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDBCO01BTEFZQUxBTSBMRVRURVIgVk9DQUxJQyBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDBDO01BTEFZQUxBTSBMRVRURVIgVk9DQUxJQyBMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDBFO01BTEFZQUxBTSBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMEQwRjtNQUxBWUFMQU0gTEVUVEVSIEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDEwO01BTEFZQUxBTSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzBEMTI7TUFMQVlBTEFNIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDEzO01BTEFZQUxBTSBMRVRURVIgT087TG87MDtMOzs7OztOOzs7OzsKKzBEMTQ7TUFMQVlBTEFNIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMEQxNTtNQUxBWUFMQU0gTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDE2O01BTEFZQUxBTSBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDE3O01BTEFZQUxBTSBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBEMTg7TUFMQVlBTEFNIExFVFRFUiBHSEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMTk7TUFMQVlBTEFNIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzBEMUE7TUFMQVlBTEFNIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEQxQjtNQUxBWUFMQU0gTEVUVEVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMEQxQztNQUxBWUFMQU0gTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDFEO01BTEFZQUxBTSBMRVRURVIgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDFFO01BTEFZQUxBTSBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDFGO01BTEFZQUxBTSBMRVRURVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDIwO01BTEFZQUxBTSBMRVRURVIgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEQyMTtNQUxBWUFMQU0gTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMEQyMjtNQUxBWUFMQU0gTEVUVEVSIERESEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMjM7TUFMQVlBTEFNIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEMjQ7TUFMQVlBTEFNIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMEQyNTtNQUxBWUFMQU0gTEVUVEVSIFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEQyNjtNQUxBWUFMQU0gTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDI3O01BTEFZQUxBTSBMRVRURVIgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDI4O01BTEFZQUxBTSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEMkE7TUFMQVlBTEFNIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMEQyQjtNQUxBWUFMQU0gTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMEQyQztNQUxBWUFMQU0gTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDJEO01BTEFZQUxBTSBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDJFO01BTEFZQUxBTSBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzBEMkY7TUFMQVlBTEFNIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMEQzMDtNQUxBWUFMQU0gTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDMxO01BTEFZQUxBTSBMRVRURVIgUlJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDMyO01BTEFZQUxBTSBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMzM7TUFMQVlBTEFNIExFVFRFUiBMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMzQ7TUFMQVlBTEFNIExFVFRFUiBMTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDM1O01BTEFZQUxBTSBMRVRURVIgVkE7TG87MDtMOzs7OztOOzs7OzsKKzBEMzY7TUFMQVlBTEFNIExFVFRFUiBTSEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMzc7TUFMQVlBTEFNIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzBEMzg7TUFMQVlBTEFNIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMEQzOTtNQUxBWUFMQU0gTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDNFO01BTEFZQUxBTSBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRDNGO01BTEFZQUxBTSBWT1dFTCBTSUdOIEk7TWM7MDtMOzs7OztOOzs7OzsKKzBENDA7TUFMQVlBTEFNIFZPV0VMIFNJR04gSUk7TWM7MDtMOzs7OztOOzs7OzsKKzBENDE7TUFMQVlBTEFNIFZPV0VMIFNJR04gVTtNbjs5NTtMOzs7OztOOzs7OzsKKzBENDI7TUFMQVlBTEFNIFZPV0VMIFNJR04gVVU7TW47OTY7TDs7Ozs7Tjs7Ozs7CiswRDQzO01BTEFZQUxBTSBWT1dFTCBTSUdOIFZPQ0FMSUMgUjtNbjs5NztMOzs7OztOOzs7OzsKKzBENDY7TUFMQVlBTEFNIFZPV0VMIFNJR04gRTtNYzswO0w7Ozs7O047Ozs7OworMEQ0NztNQUxBWUFMQU0gVk9XRUwgU0lHTiBFRTtNYzswO0w7Ozs7O047Ozs7OworMEQ0ODtNQUxBWUFMQU0gVk9XRUwgU0lHTiBBSTtNYzswO0w7Ozs7O047Ozs7OworMEQ0QTtNQUxBWUFMQU0gVk9XRUwgU0lHTiBPO01jOzA7TDswRDQ2IDBEM0U7Ozs7Tjs7Ozs7CiswRDRCO01BTEFZQUxBTSBWT1dFTCBTSUdOIE9PO01jOzA7TDswRDQ3IDBEM0U7Ozs7Tjs7Ozs7CiswRDRDO01BTEFZQUxBTSBWT1dFTCBTSUdOIEFVO01jOzA7TDswRDQ2IDBENTc7Ozs7Tjs7Ozs7CiswRDREO01BTEFZQUxBTSBTSUdOIFZJUkFNQTtNbjs5O0w7Ozs7O047Ozs7OworMEQ1NztNQUxBWUFMQU0gQVUgTEVOR1RIIE1BUks7TWM7MDtMOzs7OztOOzs7OzsKKzBENjA7TUFMQVlBTEFNIExFVFRFUiBWT0NBTElDIFJSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDYxO01BTEFZQUxBTSBMRVRURVIgVk9DQUxJQyBMTDtMbzswO0w7Ozs7O047Ozs7OworMEQ2NjtNQUxBWUFMQU0gRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMEQ2NztNQUxBWUFMQU0gRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswRDY4O01BTEFZQUxBTSBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzBENjk7TUFMQVlBTEFNIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswRDZBO01BTEFZQUxBTSBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswRDZCO01BTEFZQUxBTSBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswRDZDO01BTEFZQUxBTSBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzBENkQ7TUFMQVlBTEFNIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswRDZFO01BTEFZQUxBTSBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMEQ2RjtNQUxBWUFMQU0gRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMEUwMTtUSEFJIENIQVJBQ1RFUiBLTyBLQUk7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEtPIEtBSTs7OzsKKzBFMDI7VEhBSSBDSEFSQUNURVIgS0hPIEtIQUk7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEtITyBLSEFJOzs7OworMEUwMztUSEFJIENIQVJBQ1RFUiBLSE8gS0hVQVQ7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEtITyBLSFVBVDs7OzsKKzBFMDQ7VEhBSSBDSEFSQUNURVIgS0hPIEtIV0FJO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBLSE8gS0hXQUk7Ozs7CiswRTA1O1RIQUkgQ0hBUkFDVEVSIEtITyBLSE9OO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBLSE8gS0hPTjs7OzsKKzBFMDY7VEhBSSBDSEFSQUNURVIgS0hPIFJBS0hBTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEtITyBSQUtIQU5HOzs7OworMEUwNztUSEFJIENIQVJBQ1RFUiBOR08gTkdVO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBOR08gTkdVOzs7OworMEUwODtUSEFJIENIQVJBQ1RFUiBDSE8gQ0hBTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgQ0hPIENIQU47Ozs7CiswRTA5O1RIQUkgQ0hBUkFDVEVSIENITyBDSElORztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgQ0hPIENISU5HOzs7OworMEUwQTtUSEFJIENIQVJBQ1RFUiBDSE8gQ0hBTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIENITyBDSEFORzs7OzsKKzBFMEI7VEhBSSBDSEFSQUNURVIgU08gU087TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFNPIFNPOzs7OworMEUwQztUSEFJIENIQVJBQ1RFUiBDSE8gQ0hPRTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgQ0hPIENIT0U7Ozs7CiswRTBEO1RIQUkgQ0hBUkFDVEVSIFlPIFlJTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFlPIFlJTkc7Ozs7CiswRTBFO1RIQUkgQ0hBUkFDVEVSIERPIENIQURBO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBETyBDSEFEQTs7OzsKKzBFMEY7VEhBSSBDSEFSQUNURVIgVE8gUEFUQUs7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFRPIFBBVEFLOzs7OworMEUxMDtUSEFJIENIQVJBQ1RFUiBUSE8gVEhBTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgVEhPIFRIQU47Ozs7CiswRTExO1RIQUkgQ0hBUkFDVEVSIFRITyBOQU5HTU9OVEhPO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBUSE8gTkFOR01PTlRITzs7OzsKKzBFMTI7VEhBSSBDSEFSQUNURVIgVEhPIFBIVVRIQU87TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFRITyBQSFVUSEFPOzs7OworMEUxMztUSEFJIENIQVJBQ1RFUiBOTyBORU47TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIE5PIE5FTjs7OzsKKzBFMTQ7VEhBSSBDSEFSQUNURVIgRE8gREVLO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBETyBERUs7Ozs7CiswRTE1O1RIQUkgQ0hBUkFDVEVSIFRPIFRBTztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgVE8gVEFPOzs7OworMEUxNjtUSEFJIENIQVJBQ1RFUiBUSE8gVEhVTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFRITyBUSFVORzs7OzsKKzBFMTc7VEhBSSBDSEFSQUNURVIgVEhPIFRIQUhBTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgVEhPIFRIQUhBTjs7OzsKKzBFMTg7VEhBSSBDSEFSQUNURVIgVEhPIFRIT05HO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBUSE8gVEhPTkc7Ozs7CiswRTE5O1RIQUkgQ0hBUkFDVEVSIE5PIE5VO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBOTyBOVTs7OzsKKzBFMUE7VEhBSSBDSEFSQUNURVIgQk8gQkFJTUFJO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBCTyBCQUlNQUk7Ozs7CiswRTFCO1RIQUkgQ0hBUkFDVEVSIFBPIFBMQTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgUE8gUExBOzs7OworMEUxQztUSEFJIENIQVJBQ1RFUiBQSE8gUEhVTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFBITyBQSFVORzs7OzsKKzBFMUQ7VEhBSSBDSEFSQUNURVIgRk8gRkE7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEZPIEZBOzs7OworMEUxRTtUSEFJIENIQVJBQ1RFUiBQSE8gUEhBTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgUEhPIFBIQU47Ozs7CiswRTFGO1RIQUkgQ0hBUkFDVEVSIEZPIEZBTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgRk8gRkFOOzs7OworMEUyMDtUSEFJIENIQVJBQ1RFUiBQSE8gU0FNUEhBTztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgUEhPIFNBTVBIQU87Ozs7CiswRTIxO1RIQUkgQ0hBUkFDVEVSIE1PIE1BO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBNTyBNQTs7OzsKKzBFMjI7VEhBSSBDSEFSQUNURVIgWU8gWUFLO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBZTyBZQUs7Ozs7CiswRTIzO1RIQUkgQ0hBUkFDVEVSIFJPIFJVQTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgUk8gUlVBOzs7OworMEUyNDtUSEFJIENIQVJBQ1RFUiBSVTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgUlU7Ozs7CiswRTI1O1RIQUkgQ0hBUkFDVEVSIExPIExJTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIExPIExJTkc7Ozs7CiswRTI2O1RIQUkgQ0hBUkFDVEVSIExVO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBMVTs7OzsKKzBFMjc7VEhBSSBDSEFSQUNURVIgV08gV0FFTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgV08gV0FFTjs7OzsKKzBFMjg7VEhBSSBDSEFSQUNURVIgU08gU0FMQTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgU08gU0FMQTs7OzsKKzBFMjk7VEhBSSBDSEFSQUNURVIgU08gUlVTSTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgU08gUlVTSTs7OzsKKzBFMkE7VEhBSSBDSEFSQUNURVIgU08gU1VBO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBTTyBTVUE7Ozs7CiswRTJCO1RIQUkgQ0hBUkFDVEVSIEhPIEhJUDtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgSE8gSElQOzs7OworMEUyQztUSEFJIENIQVJBQ1RFUiBMTyBDSFVMQTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgTE8gQ0hVTEE7Ozs7CiswRTJEO1RIQUkgQ0hBUkFDVEVSIE8gQU5HO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBPIEFORzs7OzsKKzBFMkU7VEhBSSBDSEFSQUNURVIgSE8gTk9LSFVLO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBITyBOT0sgSFVLOzs7OworMEUyRjtUSEFJIENIQVJBQ1RFUiBQQUlZQU5OT0k7UG87MDtMOzs7OztOO1RIQUkgUEFJIFlBTiBOT0k7Ozs7CiswRTMwO1RIQUkgQ0hBUkFDVEVSIFNBUkEgQTtMbzswO0w7Ozs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgQTs7OzsKKzBFMzE7VEhBSSBDSEFSQUNURVIgTUFJIEhBTi1BS0FUO01uOzk4O0w7Ozs7O047VEhBSSBWT1dFTCBTSUdOIE1BSSBIQU4tQUtBVDs7OzsKKzBFMzI7VEhBSSBDSEFSQUNURVIgU0FSQSBBQTtMbzswO0w7Ozs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgQUE7Ozs7CiswRTMzO1RIQUkgQ0hBUkFDVEVSIFNBUkEgQU07TG87MDtMOzBFNEQgMEUzMjs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIEFNOzs7OworMEUzNDtUSEFJIENIQVJBQ1RFUiBTQVJBIEk7TW47OTk7TDs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBJOzs7OworMEUzNTtUSEFJIENIQVJBQ1RFUiBTQVJBIElJO01uOzEwMDtMOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIElJOzs7OworMEUzNjtUSEFJIENIQVJBQ1RFUiBTQVJBIFVFO01uOzEwMTtMOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIFVFOzs7OworMEUzNztUSEFJIENIQVJBQ1RFUiBTQVJBIFVFRTtNbjsxMDI7TDs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBVRUU7Ozs7CiswRTM4O1RIQUkgQ0hBUkFDVEVSIFNBUkEgVTtNbjsxMDM7TDs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBVOzs7OworMEUzOTtUSEFJIENIQVJBQ1RFUiBTQVJBIFVVO01uOzEwNDtMOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIFVVOzs7OworMEUzQTtUSEFJIENIQVJBQ1RFUiBQSElOVEhVO01uOzEwNTtMOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBQSElOVEhVOzs7OworMEUzRjtUSEFJIENVUlJFTkNZIFNZTUJPTCBCQUhUO1NjOzA7TDs7Ozs7TjtUSEFJIEJBSFQgU0lHTjs7OzsKKzBFNDA7VEhBSSBDSEFSQUNURVIgU0FSQSBFO0xvOzA7TDs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBFOzs7OworMEU0MTtUSEFJIENIQVJBQ1RFUiBTQVJBIEFFO0xvOzA7TDs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBBRTs7OzsKKzBFNDI7VEhBSSBDSEFSQUNURVIgU0FSQSBPO0xvOzA7TDs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBPOzs7OworMEU0MztUSEFJIENIQVJBQ1RFUiBTQVJBIEFJIE1BSU1VQU47TG87MDtMOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIE1BSSBNVUFOOzs7OworMEU0NDtUSEFJIENIQVJBQ1RFUiBTQVJBIEFJIE1BSU1BTEFJO0xvOzA7TDs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBNQUkgTUFMQUk7Ozs7CiswRTQ1O1RIQUkgQ0hBUkFDVEVSIExBS0tIQU5HWUFPO0xvOzA7TDs7Ozs7TjtUSEFJIExBSyBLSEFORyBZQU87Ozs7CiswRTQ2O1RIQUkgQ0hBUkFDVEVSIE1BSVlBTU9LO0xtOzA7TDs7Ozs7TjtUSEFJIE1BSSBZQU1PSzs7OzsKKzBFNDc7VEhBSSBDSEFSQUNURVIgTUFJVEFJS0hVO01uOzEwNjtMOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBNQUkgVEFJIEtIVTs7OzsKKzBFNDg7VEhBSSBDSEFSQUNURVIgTUFJIEVLO01uOzEwNztMOzs7OztOO1RIQUkgVE9ORSBNQUkgRUs7Ozs7CiswRTQ5O1RIQUkgQ0hBUkFDVEVSIE1BSSBUSE87TW47MTA4O0w7Ozs7O047VEhBSSBUT05FIE1BSSBUSE87Ozs7CiswRTRBO1RIQUkgQ0hBUkFDVEVSIE1BSSBUUkk7TW47MTA5O0w7Ozs7O047VEhBSSBUT05FIE1BSSBUUkk7Ozs7CiswRTRCO1RIQUkgQ0hBUkFDVEVSIE1BSSBDSEFUVEFXQTtNbjsxMTA7TDs7Ozs7TjtUSEFJIFRPTkUgTUFJIENIQVRUQVdBOzs7OworMEU0QztUSEFJIENIQVJBQ1RFUiBUSEFOVEhBS0hBVDtNbjsxMTE7TDs7Ozs7TjtUSEFJIFRIQU5USEFLSEFUOzs7OworMEU0RDtUSEFJIENIQVJBQ1RFUiBOSUtIQUhJVDtNbjsxMTI7TDs7Ozs7TjtUSEFJIE5JS0tIQUhJVDs7OzsKKzBFNEU7VEhBSSBDSEFSQUNURVIgWUFNQUtLQU47TW47MTI4O0w7Ozs7O047VEhBSSBZQU1BS0tBTjs7OzsKKzBFNEY7VEhBSSBDSEFSQUNURVIgRk9OR01BTjtTbzswO0w7Ozs7O047VEhBSSBGT05HTUFOOzs7OworMEU1MDtUSEFJIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBFNTE7VEhBSSBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzBFNTI7VEhBSSBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzBFNTM7VEhBSSBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEU1NDtUSEFJIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzBFNTU7VEhBSSBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswRTU2O1RIQUkgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswRTU3O1RIQUkgRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzBFNTg7VEhBSSBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMEU1OTtUSEFJIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBFNUE7VEhBSSBDSEFSQUNURVIgQU5HS0hBTktIVTtQbzswO0w7Ozs7O047VEhBSSBBTkdLSEFOS0hVOzs7OworMEU1QjtUSEFJIENIQVJBQ1RFUiBLSE9NVVQ7UG87MDtMOzs7OztOO1RIQUkgS0hPTVVUOzs7OworMEU4MTtMQU8gTEVUVEVSIEtPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTgyO0xBTyBMRVRURVIgS0hPIFNVTkc7TG87MDtMOzs7OztOOzs7OzsKKzBFODQ7TEFPIExFVFRFUiBLSE8gVEFNO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTg3O0xBTyBMRVRURVIgTkdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTg4O0xBTyBMRVRURVIgQ087TG87MDtMOzs7OztOOzs7OzsKKzBFOEE7TEFPIExFVFRFUiBTTyBUQU07TG87MDtMOzs7OztOOzs7OzsKKzBFOEQ7TEFPIExFVFRFUiBOWU87TG87MDtMOzs7OztOOzs7OzsKKzBFOTQ7TEFPIExFVFRFUiBETztMbzswO0w7Ozs7O047Ozs7OworMEU5NTtMQU8gTEVUVEVSIFRPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTk2O0xBTyBMRVRURVIgVEhPIFNVTkc7TG87MDtMOzs7OztOOzs7OzsKKzBFOTc7TEFPIExFVFRFUiBUSE8gVEFNO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTk5O0xBTyBMRVRURVIgTk87TG87MDtMOzs7OztOOzs7OzsKKzBFOUE7TEFPIExFVFRFUiBCTztMbzswO0w7Ozs7O047Ozs7OworMEU5QjtMQU8gTEVUVEVSIFBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTlDO0xBTyBMRVRURVIgUEhPIFNVTkc7TG87MDtMOzs7OztOOzs7OzsKKzBFOUQ7TEFPIExFVFRFUiBGTyBUQU07TG87MDtMOzs7OztOOzs7OzsKKzBFOUU7TEFPIExFVFRFUiBQSE8gVEFNO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTlGO0xBTyBMRVRURVIgRk8gU1VORztMbzswO0w7Ozs7O047Ozs7OworMEVBMTtMQU8gTEVUVEVSIE1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUEyO0xBTyBMRVRURVIgWU87TG87MDtMOzs7OztOOzs7OzsKKzBFQTM7TEFPIExFVFRFUiBMTyBMSU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUE1O0xBTyBMRVRURVIgTE8gTE9PVDtMbzswO0w7Ozs7O047Ozs7OworMEVBNztMQU8gTEVUVEVSIFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUFBO0xBTyBMRVRURVIgU08gU1VORztMbzswO0w7Ozs7O047Ozs7OworMEVBQjtMQU8gTEVUVEVSIEhPIFNVTkc7TG87MDtMOzs7OztOOzs7OzsKKzBFQUQ7TEFPIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUFFO0xBTyBMRVRURVIgSE8gVEFNO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUFGO0xBTyBFTExJUFNJUztQbzswO0w7Ozs7O047Ozs7OworMEVCMDtMQU8gVk9XRUwgU0lHTiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUIxO0xBTyBWT1dFTCBTSUdOIE1BSSBLQU47TW47MTEzO0w7Ozs7O047Ozs7OworMEVCMjtMQU8gVk9XRUwgU0lHTiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEVCMztMQU8gVk9XRUwgU0lHTiBBTTtMbzswO0w7MEVDRCAwRUIyOzs7O047Ozs7OworMEVCNDtMQU8gVk9XRUwgU0lHTiBJO01uOzExNDtMOzs7OztOOzs7OzsKKzBFQjU7TEFPIFZPV0VMIFNJR04gSUk7TW47MTE1O0w7Ozs7O047Ozs7OworMEVCNjtMQU8gVk9XRUwgU0lHTiBZO01uOzExNjtMOzs7OztOOzs7OzsKKzBFQjc7TEFPIFZPV0VMIFNJR04gWVk7TW47MTE3O0w7Ozs7O047Ozs7OworMEVCODtMQU8gVk9XRUwgU0lHTiBVO01uOzExODtMOzs7OztOOzs7OzsKKzBFQjk7TEFPIFZPV0VMIFNJR04gVVU7TW47MTE5O0w7Ozs7O047Ozs7OworMEVCQjtMQU8gVk9XRUwgU0lHTiBNQUkgS09OO01uOzEyMDtMOzs7OztOOzs7OzsKKzBFQkM7TEFPIFNFTUlWT1dFTCBTSUdOIExPO01uOzEyMTtMOzs7OztOOzs7OzsKKzBFQkQ7TEFPIFNFTUlWT1dFTCBTSUdOIE5ZTztMbzswO0w7Ozs7O047Ozs7OworMEVDMDtMQU8gVk9XRUwgU0lHTiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUMxO0xBTyBWT1dFTCBTSUdOIEVJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUMyO0xBTyBWT1dFTCBTSUdOIE87TG87MDtMOzs7OztOOzs7OzsKKzBFQzM7TEFPIFZPV0VMIFNJR04gQVk7TG87MDtMOzs7OztOOzs7OzsKKzBFQzQ7TEFPIFZPV0VMIFNJR04gQUk7TG87MDtMOzs7OztOOzs7OzsKKzBFQzY7TEFPIEtPIExBO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswRUM4O0xBTyBUT05FIE1BSSBFSztNbjsxMjI7TDs7Ozs7Tjs7Ozs7CiswRUM5O0xBTyBUT05FIE1BSSBUSE87TW47MTIzO0w7Ozs7O047Ozs7OworMEVDQTtMQU8gVE9ORSBNQUkgVEk7TW47MTI0O0w7Ozs7O047Ozs7OworMEVDQjtMQU8gVE9ORSBNQUkgQ0FUQVdBO01uOzEyNTtMOzs7OztOOzs7OzsKKzBFQ0M7TEFPIENBTkNFTExBVElPTiBNQVJLO01uOzEyNjtMOzs7OztOOzs7OzsKKzBFQ0Q7TEFPIE5JR0dBSElUQTtNbjsxMjc7TDs7Ozs7Tjs7Ozs7CiswRUQwO0xBTyBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswRUQxO0xBTyBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzBFRDI7TEFPIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMEVEMztMQU8gRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzBFRDQ7TEFPIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzBFRDU7TEFPIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBFRDY7TEFPIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMEVENztMQU8gRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzBFRDg7TEFPIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswRUQ5O0xBTyBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswRURDO0xBTyBITyBOTztMbzswO0w7PGNvbXBhdD4gMEVBQiAwRTk5Ozs7O047Ozs7OworMEVERDtMQU8gSE8gTU87TG87MDtMOzxjb21wYXQ+IDBFQUIgMEVBMTs7OztOOzs7OzsKKzBGMDA7VElCRVRBTiBTWUxMQUJMRSBPTTtTbzswO0w7Ozs7O047Ozs7OworMEYwMTtUSUJFVEFOIE1BUksgR1RFUiBZSUcgTUdPIFRSVU5DQVRFRCBBO1NvOzA7TDs7Ozs7Tjs7dGVyIHlpayBnbyBhIHRodW5nOzs7CiswRjAyO1RJQkVUQU4gTUFSSyBHVEVSIFlJRyBNR08gLVVNIFJOQU0gQkNBRCBNQTtTbzswO0w7Ozs7O047O3RlciB5aWsgZ28gd3VtIG5hbSBjaGV5IG1hOzs7CiswRjAzO1RJQkVUQU4gTUFSSyBHVEVSIFlJRyBNR08gLVVNIEdURVIgVFNIRUcgTUE7U287MDtMOzs7OztOOzt0ZXIgeWlrIGdvIHd1bSB0ZXIgdHNlayBtYTs7OworMEYwNDtUSUJFVEFOIE1BUksgSU5JVElBTCBZSUcgTUdPIE1EVU4gTUE7UG87MDtMOzs7OztOOzt5aWsgZ28gZHVuIG1hOzs7CiswRjA1O1RJQkVUQU4gTUFSSyBDTE9TSU5HIFlJRyBNR08gU0dBQiBNQTtQbzswO0w7Ozs7O047O3lpayBnbyBrYWIgbWE7OzsKKzBGMDY7VElCRVRBTiBNQVJLIENBUkVUIFlJRyBNR08gUEhVUiBTSEFEIE1BO1BvOzA7TDs7Ozs7Tjs7eWlrIGdvIHB1ciBzaGV5IG1hOzs7CiswRjA3O1RJQkVUQU4gTUFSSyBZSUcgTUdPIFRTSEVHIFNIQUQgTUE7UG87MDtMOzs7OztOOzt5aWsgZ28gdHNlayBzaGV5IG1hOzs7CiswRjA4O1RJQkVUQU4gTUFSSyBTQlJVTCBTSEFEO1BvOzA7TDs7Ozs7Tjs7ZHJ1bCBzaGV5Ozs7CiswRjA5O1RJQkVUQU4gTUFSSyBCU0tVUiBZSUcgTUdPO1BvOzA7TDs7Ozs7Tjs7a3VyIHlpayBnbzs7OworMEYwQTtUSUJFVEFOIE1BUksgQktBLSBTSE9HIFlJRyBNR087UG87MDtMOzs7OztOOztrYSBzaG8geWlrIGdvOzs7CiswRjBCO1RJQkVUQU4gTUFSSyBJTlRFUlNZTExBQklDIFRTSEVHO1BvOzA7TDs7Ozs7Tjs7dHNlazs7OworMEYwQztUSUJFVEFOIE1BUksgREVMSU1JVEVSIFRTSEVHIEJTVEFSO1BvOzA7TDs7Ozs7Tjs7dHNlayB0YXI7OzsKKzBGMEQ7VElCRVRBTiBNQVJLIFNIQUQ7UG87MDtMOzs7OztOOztzaGV5Ozs7CiswRjBFO1RJQkVUQU4gTUFSSyBOWUlTIFNIQUQ7UG87MDtMOzs7OztOOztueWkgc2hleTs7OworMEYwRjtUSUJFVEFOIE1BUksgVFNIRUcgU0hBRDtQbzswO0w7Ozs7O047O3RzZWsgc2hleTs7OworMEYxMDtUSUJFVEFOIE1BUksgTllJUyBUU0hFRyBTSEFEO1BvOzA7TDs7Ozs7Tjs7bnlpIHRzZWsgc2hleTs7OworMEYxMTtUSUJFVEFOIE1BUksgUklOIENIRU4gU1BVTkdTIFNIQUQ7UG87MDtMOzs7OztOOztyaW5jaGVuIHB1bmcgc2hleTs7OworMEYxMjtUSUJFVEFOIE1BUksgUkdZQSBHUkFNIFNIQUQ7UG87MDtMOzs7OztOOztneWEgdHJhbSBzaGV5Ozs7CiswRjEzO1RJQkVUQU4gTUFSSyBDQVJFVCAtRFpVRCBSVEFHUyBNRSBMT05HIENBTjtTbzswO0w7Ozs7O047O2R6dSB0YSBtZSBsb25nIGNoZW47OzsKKzBGMTQ7VElCRVRBTiBNQVJLIEdURVIgVFNIRUc7U287MDtMOzs7OztOOzt0ZXIgdHNlazs7OworMEYxNTtUSUJFVEFOIExPR09UWVBFIFNJR04gQ0hBRCBSVEFHUztTbzswO0w7Ozs7O047O2NoZSB0YTs7OworMEYxNjtUSUJFVEFOIExPR09UWVBFIFNJR04gTEhBRyBSVEFHUztTbzswO0w7Ozs7O047O2hsYWsgdGE7OzsKKzBGMTc7VElCRVRBTiBBU1RST0xPR0lDQUwgU0lHTiBTR1JBIEdDQU4gLUNIQVIgUlRBR1M7U287MDtMOzs7OztOOzt0cmFjaGVuIGNoYXIgdGE7OzsKKzBGMTg7VElCRVRBTiBBU1RST0xPR0lDQUwgU0lHTiAtS0hZVUQgUEE7TW47MjIwO0w7Ozs7O047O2t5dSBwYTs7OworMEYxOTtUSUJFVEFOIEFTVFJPTE9HSUNBTCBTSUdOIFNET05HIFRTSFVHUztNbjsyMjA7TDs7Ozs7Tjs7ZG9uZyB0c3U7OzsKKzBGMUE7VElCRVRBTiBTSUdOIFJERUwgREtBUiBHQ0lHO1NvOzA7TDs7Ozs7Tjs7ZGVrYSBjaGlnOzs7CiswRjFCO1RJQkVUQU4gU0lHTiBSREVMIERLQVIgR05ZSVM7U287MDtMOzs7OztOOztkZWthIG55aTs7OworMEYxQztUSUJFVEFOIFNJR04gUkRFTCBES0FSIEdTVU07U287MDtMOzs7OztOOztkZWthIHN1bTs7OworMEYxRDtUSUJFVEFOIFNJR04gUkRFTCBOQUcgR0NJRztTbzswO0w7Ozs7O047O2RlbmEgY2hpZzs7OworMEYxRTtUSUJFVEFOIFNJR04gUkRFTCBOQUcgR05ZSVM7U287MDtMOzs7OztOOztkZW5hIG55aTs7OworMEYxRjtUSUJFVEFOIFNJR04gUkRFTCBES0FSIFJERUwgTkFHO1NvOzA7TDs7Ozs7Tjs7ZGVrYSBkZW5hOzs7CiswRjIwO1RJQkVUQU4gRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMEYyMTtUSUJFVEFOIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEYyMjtUSUJFVEFOIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMEYyMztUSUJFVEFOIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswRjI0O1RJQkVUQU4gRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEYyNTtUSUJFVEFOIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBGMjY7VElCRVRBTiBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzBGMjc7VElCRVRBTiBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEYyODtUSUJFVEFOIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswRjI5O1RJQkVUQU4gRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMEYyQTtUSUJFVEFOIERJR0lUIEhBTEYgT05FO05vOzA7TDs7Ozs7Tjs7Ozs7CiswRjJCO1RJQkVUQU4gRElHSVQgSEFMRiBUV087Tm87MDtMOzs7OztOOzs7OzsKKzBGMkM7VElCRVRBTiBESUdJVCBIQUxGIFRIUkVFO05vOzA7TDs7Ozs7Tjs7Ozs7CiswRjJEO1RJQkVUQU4gRElHSVQgSEFMRiBGT1VSO05vOzA7TDs7Ozs7Tjs7Ozs7CiswRjJFO1RJQkVUQU4gRElHSVQgSEFMRiBGSVZFO05vOzA7TDs7Ozs7Tjs7Ozs7CiswRjJGO1RJQkVUQU4gRElHSVQgSEFMRiBTSVg7Tm87MDtMOzs7OztOOzs7OzsKKzBGMzA7VElCRVRBTiBESUdJVCBIQUxGIFNFVkVOO05vOzA7TDs7Ozs7Tjs7Ozs7CiswRjMxO1RJQkVUQU4gRElHSVQgSEFMRiBFSUdIVDtObzswO0w7Ozs7O047Ozs7OworMEYzMjtUSUJFVEFOIERJR0lUIEhBTEYgTklORTtObzswO0w7Ozs7O047Ozs7OworMEYzMztUSUJFVEFOIERJR0lUIEhBTEYgWkVSTztObzswO0w7Ozs7O047Ozs7OworMEYzNDtUSUJFVEFOIE1BUksgQlNEVVMgUlRBR1M7U287MDtMOzs7OztOOztkdSB0YTs7OworMEYzNTtUSUJFVEFOIE1BUksgTkdBUyBCWlVORyBOWUkgWkxBO01uOzIzMDtMOzs7OztOOztuZ2UgenVuZyBueWkgZGE7OzsKKzBGMzY7VElCRVRBTiBNQVJLIENBUkVUIC1EWlVEIFJUQUdTIEJaSEkgTUlHIENBTjtTbzswO0w7Ozs7O047O2R6dSB0YSBzaGkgbWlnIGNoZW47OzsKKzBGMzc7VElCRVRBTiBNQVJLIE5HQVMgQlpVTkcgU0dPUiBSVEFHUztNbjsyMzA7TDs7Ozs7Tjs7bmdlIHp1bmcgZ29yIHRhOzs7CiswRjM4O1RJQkVUQU4gTUFSSyBDSEUgTUdPO1NvOzA7TDs7Ozs7Tjs7Y2hlIGdvOzs7CiswRjM5O1RJQkVUQU4gTUFSSyBUU0EgLVBIUlU7TW47MjE2O0w7Ozs7O047O3RzYSB0cnU7OzsKKzBGM0E7VElCRVRBTiBNQVJLIEdVRyBSVEFHUyBHWU9OO1BzOzA7TDs7Ozs7Tjs7Z3VnIHRhIHl1bjs7OworMEYzQjtUSUJFVEFOIE1BUksgR1VHIFJUQUdTIEdZQVM7UGU7MDtMOzs7OztOOztndWcgdGEgeWU7OzsKKzBGM0M7VElCRVRBTiBNQVJLIEFORyBLSEFORyBHWU9OO1BzOzA7TDs7Ozs7Tjs7YW5nIGthbmcgeXVuOzs7CiswRjNEO1RJQkVUQU4gTUFSSyBBTkcgS0hBTkcgR1lBUztQZTswO0w7Ozs7O047O2FuZyBrYW5nIHllOzs7CiswRjNFO1RJQkVUQU4gU0lHTiBZQVIgVFNIRVM7TWM7MjIwO0w7Ozs7O047O3lhciB0c2U7OzsKKzBGM0Y7VElCRVRBTiBTSUdOIE1BUiBUU0hFUztNYzsyMjA7TDs7Ozs7Tjs7bWFyIHRzZTs7OworMEY0MDtUSUJFVEFOIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMEY0MTtUSUJFVEFOIExFVFRFUiBLSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNDI7VElCRVRBTiBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNDM7VElCRVRBTiBMRVRURVIgR0hBO0xvOzA7TDswRjQyIDBGQjc7Ozs7Tjs7Ozs7CiswRjQ0O1RJQkVUQU4gTEVUVEVSIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMEY0NTtUSUJFVEFOIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEY0NjtUSUJFVEFOIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNDc7VElCRVRBTiBMRVRURVIgSkE7TG87MDtMOzs7OztOOzs7OzsKKzBGNDk7VElCRVRBTiBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjRBO1RJQkVUQU4gTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMEY0QjtUSUJFVEFOIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjRDO1RJQkVUQU4gTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMEY0RDtUSUJFVEFOIExFVFRFUiBEREhBO0xvOzA7TDswRjRDIDBGQjc7Ozs7Tjs7Ozs7CiswRjRFO1RJQkVUQU4gTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMEY0RjtUSUJFVEFOIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMEY1MDtUSUJFVEFOIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNTE7VElCRVRBTiBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzBGNTI7VElCRVRBTiBMRVRURVIgREhBO0xvOzA7TDswRjUxIDBGQjc7Ozs7Tjs7Ozs7CiswRjUzO1RJQkVUQU4gTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjU0O1RJQkVUQU4gTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjU1O1RJQkVUQU4gTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMEY1NjtUSUJFVEFOIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMEY1NztUSUJFVEFOIExFVFRFUiBCSEE7TG87MDtMOzBGNTYgMEZCNzs7OztOOzs7OzsKKzBGNTg7VElCRVRBTiBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzBGNTk7VElCRVRBTiBMRVRURVIgVFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjVBO1RJQkVUQU4gTEVUVEVSIFRTSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNUI7VElCRVRBTiBMRVRURVIgRFpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjVDO1RJQkVUQU4gTEVUVEVSIERaSEE7TG87MDtMOzBGNUIgMEZCNzs7OztOOzs7OzsKKzBGNUQ7VElCRVRBTiBMRVRURVIgV0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNUU7VElCRVRBTiBMRVRURVIgWkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjVGO1RJQkVUQU4gTEVUVEVSIFpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjYwO1RJQkVUQU4gTEVUVEVSIC1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjYxO1RJQkVUQU4gTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjYyO1RJQkVUQU4gTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjYzO1RJQkVUQU4gTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjY0O1RJQkVUQU4gTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMEY2NTtUSUJFVEFOIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNjY7VElCRVRBTiBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNjc7VElCRVRBTiBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNjg7VElCRVRBTiBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMEY2OTtUSUJFVEFOIExFVFRFUiBLU1NBO0xvOzA7TDswRjQwIDBGQjU7Ozs7Tjs7Ozs7CiswRjcxO1RJQkVUQU4gVk9XRUwgU0lHTiBBQTtNbjsxNDU7TDs7Ozs7Tjs7Ozs7CiswRjcyO1RJQkVUQU4gVk9XRUwgU0lHTiBJO01uOzEzMDtMOzs7OztOOzs7OzsKKzBGNzM7VElCRVRBTiBWT1dFTCBTSUdOIElJO01uOzEzMTtMOzBGNzIgMEY3MTs7OztOOzs7OzsKKzBGNzQ7VElCRVRBTiBWT1dFTCBTSUdOIFU7TW47MTMyO0w7Ozs7O047Ozs7OworMEY3NTtUSUJFVEFOIFZPV0VMIFNJR04gVVU7TW47MTMzO0w7MEY3NCAwRjcxOzs7O047Ozs7OworMEY3NjtUSUJFVEFOIFZPV0VMIFNJR04gVk9DQUxJQyBSO01uOzEzNDtMOzBGQjIgMEY4MDs7OztOOzs7OzsKKzBGNzc7VElCRVRBTiBWT1dFTCBTSUdOIFZPQ0FMSUMgUlI7TW47MTM1O0w7MEY3NiAwRjcxOzs7O047Ozs7OworMEY3ODtUSUJFVEFOIFZPV0VMIFNJR04gVk9DQUxJQyBMO01uOzEzNjtMOzBGQjMgMEY4MDs7OztOOzs7OzsKKzBGNzk7VElCRVRBTiBWT1dFTCBTSUdOIFZPQ0FMSUMgTEw7TW47MTM3O0w7MEY3OCAwRjcxOzs7O047Ozs7OworMEY3QTtUSUJFVEFOIFZPV0VMIFNJR04gRTtNbjsxMzg7TDs7Ozs7Tjs7Ozs7CiswRjdCO1RJQkVUQU4gVk9XRUwgU0lHTiBFRTtNbjsxMzk7TDs7Ozs7Tjs7Ozs7CiswRjdDO1RJQkVUQU4gVk9XRUwgU0lHTiBPO01uOzE0MDtMOzs7OztOOzs7OzsKKzBGN0Q7VElCRVRBTiBWT1dFTCBTSUdOIE9PO01uOzE0MTtMOzs7OztOOzs7OzsKKzBGN0U7VElCRVRBTiBTSUdOIFJKRVMgU1UgTkdBIFJPO01uOzE0MjtMOzs7OztOOztqZSBzdSBuZ2Egcm87OzsKKzBGN0Y7VElCRVRBTiBTSUdOIFJOQU0gQkNBRDtNYzswO0w7Ozs7O047O25hbSBjaGV5Ozs7CiswRjgwO1RJQkVUQU4gVk9XRUwgU0lHTiBSRVZFUlNFRCBJO01uOzE0MztMOzs7OztOOzs7OzsKKzBGODE7VElCRVRBTiBWT1dFTCBTSUdOIFJFVkVSU0VEIElJO01uOzE0NDtMOzBGODAgMEY3MTs7OztOOzs7OzsKKzBGODI7VElCRVRBTiBTSUdOIE5ZSSBaTEEgTkFBIERBO01uOzIzMDtMOzs7OztOOztueWkgZGEgbmEgZGE7OzsKKzBGODM7VElCRVRBTiBTSUdOIFNOQSBMREFOO01uOzIzMDtMOzs7OztOOztuYW4gZGU7OzsKKzBGODQ7VElCRVRBTiBNQVJLIEhBTEFOVEE7TW47OTtMOzs7OztOOzs7OzsKKzBGODU7VElCRVRBTiBNQVJLIFBBTFVUQTtQbzswO0w7Ozs7O047Ozs7OworMEY4NjtUSUJFVEFOIFNJR04gTENJIFJUQUdTO01uOzIzMDtMOzs7OztOOztqaSB0YTs7OworMEY4NztUSUJFVEFOIFNJR04gWUFORyBSVEFHUztNbjsyMzA7TDs7Ozs7Tjs7eWFuZyB0YTs7OworMEY4ODtUSUJFVEFOIFNJR04gTENFIFRTQSBDQU47TW47MjMwO0w7Ozs7O047O2NoZSB0c2EgY2hlbjs7OworMEY4OTtUSUJFVEFOIFNJR04gTUNIVSBDQU47TW47MjMwO0w7Ozs7O047O2NodSBjaGVuOzs7CiswRjhBO1RJQkVUQU4gU0lHTiBHUlUgQ0FOIFJHWUlOR1M7TW47MjMwO0w7Ozs7O047O3RydSBjaGVuIGdpbmc7OzsKKzBGOEI7VElCRVRBTiBTSUdOIEdSVSBNRUQgUkdZSU5HUztNbjsyMzA7TDs7Ozs7Tjs7dHJ1IG1lIGdpbmc7OzsKKzBGOTA7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEtBO01uOzY7TDs7Ozs7Tjs7Ozs7CiswRjkxO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBLSEE7TW47NjtMOzs7OztOOzs7OzsKKzBGOTI7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEdBO01uOzY7TDs7Ozs7Tjs7Ozs7CiswRjkzO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBHSEE7TW47NjtMOzBGOTIgMEZCNzs7OztOOzs7OzsKKzBGOTQ7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIE5HQTtNbjs2O0w7Ozs7O047Ozs7OworMEY5NTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgQ0E7TW47NjtMOzs7OztOOzs7OzsKKzBGOTc7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEpBO01uOzY7TDs7Ozs7Tjs7Ozs7CiswRjk5O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBOWUE7TW47NjtMOzs7OztOOzs7OzsKKzBGOUE7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFRUQTtNbjs2O0w7Ozs7O047Ozs7OworMEY5QjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgVFRIQTtNbjs2O0w7Ozs7O047Ozs7OworMEY5QztUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgRERBO01uOzY7TDs7Ozs7Tjs7Ozs7CiswRjlEO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBEREhBO01uOzY7TDswRjlDIDBGQjc7Ozs7Tjs7Ozs7CiswRjlFO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBOTkE7TW47NjtMOzs7OztOOzs7OzsKKzBGOUY7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFRBO01uOzY7TDs7Ozs7Tjs7Ozs7CiswRkEwO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBUSEE7TW47NjtMOzs7OztOOzs7OzsKKzBGQTE7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERBO01uOzY7TDs7Ozs7Tjs7Ozs7CiswRkEyO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBESEE7TW47NjtMOzBGQTEgMEZCNzs7OztOOzs7OzsKKzBGQTM7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIE5BO01uOzY7TDs7Ozs7Tjs7Ozs7CiswRkE0O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBQQTtNbjs2O0w7Ozs7O047Ozs7OworMEZBNTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgUEhBO01uOzY7TDs7Ozs7Tjs7Ozs7CiswRkE2O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBCQTtNbjs2O0w7Ozs7O047Ozs7OworMEZBNztUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgQkhBO01uOzY7TDswRkE2IDBGQjc7Ozs7Tjs7Ozs7CiswRkE4O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBNQTtNbjs2O0w7Ozs7O047Ozs7OworMEZBOTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgVFNBO01uOzY7TDs7Ozs7Tjs7Ozs7CiswRkFBO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBUU0hBO01uOzY7TDs7Ozs7Tjs7Ozs7CiswRkFCO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBEWkE7TW47NjtMOzs7OztOOzs7OzsKKzBGQUM7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERaSEE7TW47NjtMOzBGQUIgMEZCNzs7OztOOzs7OzsKKzBGQUQ7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFdBO01uOzY7TDs7Ozs7Tjs7Ozs7CiswRkIxO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBZQTtNbjs2O0w7Ozs7O047Ozs7OworMEZCMjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgUkE7TW47NjtMOzs7OztOOzs7OzsKKzBGQjM7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIExBO01uOzY7TDs7Ozs7Tjs7Ozs7CiswRkI0O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBTSEE7TW47NjtMOzs7OztOOzs7OzsKKzBGQjU7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFNTQTtNbjs2O0w7Ozs7O047Ozs7OworMEZCNjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgU0E7TW47NjtMOzs7OztOOzs7OzsKKzBGQjc7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEhBO01uOzY7TDs7Ozs7Tjs7Ozs7CiswRkI5O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBLU1NBO01uOzY7TDswRjkwIDBGQjU7Ozs7Tjs7Ozs7CisxMEEwO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEFOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRDA7CisxMEExO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEJBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEQxOworMTBBMjtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBHQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBEMjsKKzEwQTM7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgRE9OO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRDM7CisxMEE0O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEVOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRDQ7CisxMEE1O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFZJTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEQ1OworMTBBNjtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBaRU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBENjsKKzEwQTc7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgVEFOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRDc7CisxMEE4O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIElOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRDg7CisxMEE5O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEtBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEQ5OworMTBBQTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBMQVM7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBEQTsKKzEwQUI7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgTUFOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwREI7CisxMEFDO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIE5BUjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMERDOworMTBBRDtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBPTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEREOworMTBBRTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBQQVI7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBERTsKKzEwQUY7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgWkhBUjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMERGOworMTBCMDtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBSQUU7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBFMDsKKzEwQjE7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgU0FOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRTE7CisxMEIyO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFRBUjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEUyOworMTBCMztHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBVTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEUzOworMTBCNDtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBQSEFSO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRTQ7CisxMEI1O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEtIQVI7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBFNTsKKzEwQjY7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgR0hBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEU2OworMTBCNztHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBRQVI7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBFNzsKKzEwQjg7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgU0hJTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEU4OworMTBCOTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBDSElOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRTk7CisxMEJBO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIENBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEVBOworMTBCQjtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBKSUw7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBFQjsKKzEwQkM7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgQ0lMO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRUM7CisxMEJEO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIENIQVI7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBFRDsKKzEwQkU7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgWEFOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRUU7CisxMEJGO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEpIQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBFRjsKKzEwQzA7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgSEFFO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRjA7CisxMEMxO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEhFO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRjE7CisxMEMyO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEhJRTtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEYyOworMTBDMztHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBXRTtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEYzOworMTBDNDtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBIQVI7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBGNDsKKzEwQzU7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgSE9FO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRjU7CisxMEQwO0dFT1JHSUFOIExFVFRFUiBBTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEFOOzs7OworMTBEMTtHRU9SR0lBTiBMRVRURVIgQkFOO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgQkFOOzs7OworMTBEMjtHRU9SR0lBTiBMRVRURVIgR0FOO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgR0FOOzs7OworMTBEMztHRU9SR0lBTiBMRVRURVIgRE9OO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgRE9OOzs7OworMTBENDtHRU9SR0lBTiBMRVRURVIgRU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBFTjs7OzsKKzEwRDU7R0VPUkdJQU4gTEVUVEVSIFZJTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFZJTjs7OzsKKzEwRDY7R0VPUkdJQU4gTEVUVEVSIFpFTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFpFTjs7OzsKKzEwRDc7R0VPUkdJQU4gTEVUVEVSIFRBTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFRBTjs7OzsKKzEwRDg7R0VPUkdJQU4gTEVUVEVSIElOO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgSU47Ozs7CisxMEQ5O0dFT1JHSUFOIExFVFRFUiBLQU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBLQU47Ozs7CisxMERBO0dFT1JHSUFOIExFVFRFUiBMQVM7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBMQVM7Ozs7CisxMERCO0dFT1JHSUFOIExFVFRFUiBNQU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBNQU47Ozs7CisxMERDO0dFT1JHSUFOIExFVFRFUiBOQVI7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBOQVI7Ozs7CisxMEREO0dFT1JHSUFOIExFVFRFUiBPTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIE9OOzs7OworMTBERTtHRU9SR0lBTiBMRVRURVIgUEFSO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgUEFSOzs7OworMTBERjtHRU9SR0lBTiBMRVRURVIgWkhBUjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFpIQVI7Ozs7CisxMEUwO0dFT1JHSUFOIExFVFRFUiBSQUU7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBSQUU7Ozs7CisxMEUxO0dFT1JHSUFOIExFVFRFUiBTQU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBTQU47Ozs7CisxMEUyO0dFT1JHSUFOIExFVFRFUiBUQVI7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBUQVI7Ozs7CisxMEUzO0dFT1JHSUFOIExFVFRFUiBVTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFVOOzs7OworMTBFNDtHRU9SR0lBTiBMRVRURVIgUEhBUjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFBIQVI7Ozs7CisxMEU1O0dFT1JHSUFOIExFVFRFUiBLSEFSO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgS0hBUjs7OzsKKzEwRTY7R0VPUkdJQU4gTEVUVEVSIEdIQU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBHSEFOOzs7OworMTBFNztHRU9SR0lBTiBMRVRURVIgUUFSO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgUUFSOzs7OworMTBFODtHRU9SR0lBTiBMRVRURVIgU0hJTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFNISU47Ozs7CisxMEU5O0dFT1JHSUFOIExFVFRFUiBDSElOO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgQ0hJTjs7OzsKKzEwRUE7R0VPUkdJQU4gTEVUVEVSIENBTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIENBTjs7OzsKKzEwRUI7R0VPUkdJQU4gTEVUVEVSIEpJTDtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEpJTDs7OzsKKzEwRUM7R0VPUkdJQU4gTEVUVEVSIENJTDtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIENJTDs7OzsKKzEwRUQ7R0VPUkdJQU4gTEVUVEVSIENIQVI7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBDSEFSOzs7OworMTBFRTtHRU9SR0lBTiBMRVRURVIgWEFOO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgWEFOOzs7OworMTBFRjtHRU9SR0lBTiBMRVRURVIgSkhBTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEpIQU47Ozs7CisxMEYwO0dFT1JHSUFOIExFVFRFUiBIQUU7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBIQUU7Ozs7CisxMEYxO0dFT1JHSUFOIExFVFRFUiBIRTtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEhFOzs7OworMTBGMjtHRU9SR0lBTiBMRVRURVIgSElFO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgSElFOzs7OworMTBGMztHRU9SR0lBTiBMRVRURVIgV0U7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBXRTs7OzsKKzEwRjQ7R0VPUkdJQU4gTEVUVEVSIEhBUjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEhBUjs7OzsKKzEwRjU7R0VPUkdJQU4gTEVUVEVSIEhPRTtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEhPRTs7OzsKKzEwRjY7R0VPUkdJQU4gTEVUVEVSIEZJO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgRkk7Ozs7CisxMEZCO0dFT1JHSUFOIFBBUkFHUkFQSCBTRVBBUkFUT1I7UG87MDtMOzs7OztOOzs7OzsKKzExMDA7SEFOR1VMIENIT1NFT05HIEtJWUVPSztMbzswO0w7Ozs7O047Ozs7OworMTEwMTtIQU5HVUwgQ0hPU0VPTkcgU1NBTkdLSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMDAgMTEwMDs7OztOOzs7OzsKKzExMDI7SEFOR1VMIENIT1NFT05HIE5JRVVOO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTAzO0hBTkdVTCBDSE9TRU9ORyBUSUtFVVQ7TG87MDtMOzs7OztOOzs7OzsKKzExMDQ7SEFOR1VMIENIT1NFT05HIFNTQU5HVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMTAzIDExMDM7Ozs7Tjs7Ozs7CisxMTA1O0hBTkdVTCBDSE9TRU9ORyBSSUVVTDtMbzswO0w7Ozs7O047Ozs7OworMTEwNjtIQU5HVUwgQ0hPU0VPTkcgTUlFVU07TG87MDtMOzs7OztOOzs7OzsKKzExMDc7SEFOR1VMIENIT1NFT05HIFBJRVVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTA4O0hBTkdVTCBDSE9TRU9ORyBTU0FOR1BJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMTA3IDExMDc7Ozs7Tjs7Ozs7CisxMTA5O0hBTkdVTCBDSE9TRU9ORyBTSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTBBO0hBTkdVTCBDSE9TRU9ORyBTU0FOR1NJT1M7TG87MDtMOzxjb21wYXQ+IDExMDkgMTEwOTs7OztOOzs7OzsKKzExMEI7SEFOR1VMIENIT1NFT05HIElFVU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTBDO0hBTkdVTCBDSE9TRU9ORyBDSUVVQztMbzswO0w7Ozs7O047Ozs7OworMTEwRDtIQU5HVUwgQ0hPU0VPTkcgU1NBTkdDSUVVQztMbzswO0w7PGNvbXBhdD4gMTEwQyAxMTBDOzs7O047Ozs7OworMTEwRTtIQU5HVUwgQ0hPU0VPTkcgQ0hJRVVDSDtMbzswO0w7Ozs7O047Ozs7OworMTEwRjtIQU5HVUwgQ0hPU0VPTkcgS0hJRVVLSDtMbzswO0w7Ozs7O047Ozs7OworMTExMDtIQU5HVUwgQ0hPU0VPTkcgVEhJRVVUSDtMbzswO0w7Ozs7O047Ozs7OworMTExMTtIQU5HVUwgQ0hPU0VPTkcgUEhJRVVQSDtMbzswO0w7Ozs7O047Ozs7OworMTExMjtIQU5HVUwgQ0hPU0VPTkcgSElFVUg7TG87MDtMOzs7OztOOzs7OzsKKzExMTM7SEFOR1VMIENIT1NFT05HIE5JRVVOLUtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTEwMiAxMTAwOzs7O047Ozs7OworMTExNDtIQU5HVUwgQ0hPU0VPTkcgU1NBTkdOSUVVTjtMbzswO0w7PGNvbXBhdD4gMTEwMiAxMTAyOzs7O047Ozs7OworMTExNTtIQU5HVUwgQ0hPU0VPTkcgTklFVU4tVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMTAyIDExMDM7Ozs7Tjs7Ozs7CisxMTE2O0hBTkdVTCBDSE9TRU9ORyBOSUVVTi1QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEwMiAxMTA3Ozs7O047Ozs7OworMTExNztIQU5HVUwgQ0hPU0VPTkcgVElLRVVULUtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTEwMyAxMTAwOzs7O047Ozs7OworMTExODtIQU5HVUwgQ0hPU0VPTkcgUklFVUwtTklFVU47TG87MDtMOzxjb21wYXQ+IDExMDUgMTEwMjs7OztOOzs7OzsKKzExMTk7SEFOR1VMIENIT1NFT05HIFNTQU5HUklFVUw7TG87MDtMOzxjb21wYXQ+IDExMDUgMTEwNTs7OztOOzs7OzsKKzExMUE7SEFOR1VMIENIT1NFT05HIFJJRVVMLUhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMTA1IDExMTI7Ozs7Tjs7Ozs7CisxMTFCO0hBTkdVTCBDSE9TRU9ORyBLQVBZRU9VTlJJRVVMO0xvOzA7TDs8Y29tcGF0PiAxMTA1IDExMEI7Ozs7Tjs7Ozs7CisxMTFDO0hBTkdVTCBDSE9TRU9ORyBNSUVVTS1QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEwNiAxMTA3Ozs7O047Ozs7OworMTExRDtIQU5HVUwgQ0hPU0VPTkcgS0FQWUVPVU5NSUVVTTtMbzswO0w7PGNvbXBhdD4gMTEwNiAxMTBCOzs7O047Ozs7OworMTExRTtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMTA3IDExMDA7Ozs7Tjs7Ozs7CisxMTFGO0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1OSUVVTjtMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTAyOzs7O047Ozs7OworMTEyMDtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMTA3IDExMDM7Ozs7Tjs7Ozs7CisxMTIxO0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMTA3IDExMDk7Ozs7Tjs7Ozs7CisxMTIyO0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1TSU9TLUtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTA5IDExMDA7Ozs7Tjs7Ozs7CisxMTIzO0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1TSU9TLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTA5IDExMDM7Ozs7Tjs7Ozs7CisxMTI0O0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1TSU9TLVBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMTA3IDExMDkgMTEwNzs7OztOOzs7OzsKKzExMjU7SEFOR1VMIENIT1NFT05HIFBJRVVQLVNTQU5HU0lPUztMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTA5IDExMDk7Ozs7Tjs7Ozs7CisxMTI2O0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1TSU9TLUNJRVVDO0xvOzA7TDs8Y29tcGF0PiAxMTA3IDExMDkgMTEwQzs7OztOOzs7OzsKKzExMjc7SEFOR1VMIENIT1NFT05HIFBJRVVQLUNJRVVDO0xvOzA7TDs8Y29tcGF0PiAxMTA3IDExMEM7Ozs7Tjs7Ozs7CisxMTI4O0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1DSElFVUNIO0xvOzA7TDs8Y29tcGF0PiAxMTA3IDExMEU7Ozs7Tjs7Ozs7CisxMTI5O0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1USElFVVRIO0xvOzA7TDs8Y29tcGF0PiAxMTA3IDExMTA7Ozs7Tjs7Ozs7CisxMTJBO0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1QSElFVVBIO0xvOzA7TDs8Y29tcGF0PiAxMTA3IDExMTE7Ozs7Tjs7Ozs7CisxMTJCO0hBTkdVTCBDSE9TRU9ORyBLQVBZRU9VTlBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMTA3IDExMEI7Ozs7Tjs7Ozs7CisxMTJDO0hBTkdVTCBDSE9TRU9ORyBLQVBZRU9VTlNTQU5HUElFVVA7TG87MDtMOzxjb21wYXQ+IDExMDcgMTEwNyAxMTBCOzs7O047Ozs7OworMTEyRDtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMDkgMTEwMDs7OztOOzs7OzsKKzExMkU7SEFOR1VMIENIT1NFT05HIFNJT1MtTklFVU47TG87MDtMOzxjb21wYXQ+IDExMDkgMTEwMjs7OztOOzs7OzsKKzExMkY7SEFOR1VMIENIT1NFT05HIFNJT1MtVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMTA5IDExMDM7Ozs7Tjs7Ozs7CisxMTMwO0hBTkdVTCBDSE9TRU9ORyBTSU9TLVJJRVVMO0xvOzA7TDs8Y29tcGF0PiAxMTA5IDExMDU7Ozs7Tjs7Ozs7CisxMTMxO0hBTkdVTCBDSE9TRU9ORyBTSU9TLU1JRVVNO0xvOzA7TDs8Y29tcGF0PiAxMTA5IDExMDY7Ozs7Tjs7Ozs7CisxMTMyO0hBTkdVTCBDSE9TRU9ORyBTSU9TLVBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMTA5IDExMDc7Ozs7Tjs7Ozs7CisxMTMzO0hBTkdVTCBDSE9TRU9ORyBTSU9TLVBJRVVQLUtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTEwOSAxMTA3IDExMDA7Ozs7Tjs7Ozs7CisxMTM0O0hBTkdVTCBDSE9TRU9ORyBTSU9TLVNTQU5HU0lPUztMbzswO0w7PGNvbXBhdD4gMTEwOSAxMTA5IDExMDk7Ozs7Tjs7Ozs7CisxMTM1O0hBTkdVTCBDSE9TRU9ORyBTSU9TLUlFVU5HO0xvOzA7TDs8Y29tcGF0PiAxMTA5IDExMEI7Ozs7Tjs7Ozs7CisxMTM2O0hBTkdVTCBDSE9TRU9ORyBTSU9TLUNJRVVDO0xvOzA7TDs8Y29tcGF0PiAxMTA5IDExMEM7Ozs7Tjs7Ozs7CisxMTM3O0hBTkdVTCBDSE9TRU9ORyBTSU9TLUNISUVVQ0g7TG87MDtMOzxjb21wYXQ+IDExMDkgMTEwRTs7OztOOzs7OzsKKzExMzg7SEFOR1VMIENIT1NFT05HIFNJT1MtS0hJRVVLSDtMbzswO0w7PGNvbXBhdD4gMTEwOSAxMTBGOzs7O047Ozs7OworMTEzOTtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1USElFVVRIO0xvOzA7TDs8Y29tcGF0PiAxMTA5IDExMTA7Ozs7Tjs7Ozs7CisxMTNBO0hBTkdVTCBDSE9TRU9ORyBTSU9TLVBISUVVUEg7TG87MDtMOzxjb21wYXQ+IDExMDkgMTExMTs7OztOOzs7OzsKKzExM0I7SEFOR1VMIENIT1NFT05HIFNJT1MtSElFVUg7TG87MDtMOzxjb21wYXQ+IDExMDkgMTExMjs7OztOOzs7OzsKKzExM0M7SEFOR1VMIENIT1NFT05HIENISVRVRVVNU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTEzRDtIQU5HVUwgQ0hPU0VPTkcgQ0hJVFVFVU1TU0FOR1NJT1M7TG87MDtMOzxjb21wYXQ+IDExM0MgMTEzQzs7OztOOzs7OzsKKzExM0U7SEFOR1VMIENIT1NFT05HIENFT05HQ0hJRVVNU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTEzRjtIQU5HVUwgQ0hPU0VPTkcgQ0VPTkdDSElFVU1TU0FOR1NJT1M7TG87MDtMOzxjb21wYXQ+IDExM0UgMTEzRTs7OztOOzs7OzsKKzExNDA7SEFOR1VMIENIT1NFT05HIFBBTlNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExNDE7SEFOR1VMIENIT1NFT05HIElFVU5HLUtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTEwQiAxMTAwOzs7O047Ozs7OworMTE0MjtIQU5HVUwgQ0hPU0VPTkcgSUVVTkctVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMTBCIDExMDM7Ozs7Tjs7Ozs7CisxMTQzO0hBTkdVTCBDSE9TRU9ORyBJRVVORy1NSUVVTTtMbzswO0w7PGNvbXBhdD4gMTEwQiAxMTA2Ozs7O047Ozs7OworMTE0NDtIQU5HVUwgQ0hPU0VPTkcgSUVVTkctUElFVVA7TG87MDtMOzxjb21wYXQ+IDExMEIgMTEwNzs7OztOOzs7OzsKKzExNDU7SEFOR1VMIENIT1NFT05HIElFVU5HLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExMEIgMTEwOTs7OztOOzs7OzsKKzExNDY7SEFOR1VMIENIT1NFT05HIElFVU5HLVBBTlNJT1M7TG87MDtMOzxjb21wYXQ+IDExMEIgMTE0MDs7OztOOzs7OzsKKzExNDc7SEFOR1VMIENIT1NFT05HIFNTQU5HSUVVTkc7TG87MDtMOzxjb21wYXQ+IDExMEIgMTEwQjs7OztOOzs7OzsKKzExNDg7SEFOR1VMIENIT1NFT05HIElFVU5HLUNJRVVDO0xvOzA7TDs8Y29tcGF0PiAxMTBCIDExMEM7Ozs7Tjs7Ozs7CisxMTQ5O0hBTkdVTCBDSE9TRU9ORyBJRVVORy1DSElFVUNIO0xvOzA7TDs8Y29tcGF0PiAxMTBCIDExMEU7Ozs7Tjs7Ozs7CisxMTRBO0hBTkdVTCBDSE9TRU9ORyBJRVVORy1USElFVVRIO0xvOzA7TDs8Y29tcGF0PiAxMTBCIDExMTA7Ozs7Tjs7Ozs7CisxMTRCO0hBTkdVTCBDSE9TRU9ORyBJRVVORy1QSElFVVBIO0xvOzA7TDs8Y29tcGF0PiAxMTBCIDExMTE7Ozs7Tjs7Ozs7CisxMTRDO0hBTkdVTCBDSE9TRU9ORyBZRVNJRVVORztMbzswO0w7Ozs7O047Ozs7OworMTE0RDtIQU5HVUwgQ0hPU0VPTkcgQ0lFVUMtSUVVTkc7TG87MDtMOzxjb21wYXQ+IDExMEMgMTEwQjs7OztOOzs7OzsKKzExNEU7SEFOR1VMIENIT1NFT05HIENISVRVRVVNQ0lFVUM7TG87MDtMOzs7OztOOzs7OzsKKzExNEY7SEFOR1VMIENIT1NFT05HIENISVRVRVVNU1NBTkdDSUVVQztMbzswO0w7PGNvbXBhdD4gMTE0RSAxMTRFOzs7O047Ozs7OworMTE1MDtIQU5HVUwgQ0hPU0VPTkcgQ0VPTkdDSElFVU1DSUVVQztMbzswO0w7Ozs7O047Ozs7OworMTE1MTtIQU5HVUwgQ0hPU0VPTkcgQ0VPTkdDSElFVU1TU0FOR0NJRVVDO0xvOzA7TDs8Y29tcGF0PiAxMTUwIDExNTA7Ozs7Tjs7Ozs7CisxMTUyO0hBTkdVTCBDSE9TRU9ORyBDSElFVUNILUtISUVVS0g7TG87MDtMOzxjb21wYXQ+IDExMEUgMTEwRjs7OztOOzs7OzsKKzExNTM7SEFOR1VMIENIT1NFT05HIENISUVVQ0gtSElFVUg7TG87MDtMOzxjb21wYXQ+IDExMEUgMTExMjs7OztOOzs7OzsKKzExNTQ7SEFOR1VMIENIT1NFT05HIENISVRVRVVNQ0hJRVVDSDtMbzswO0w7Ozs7O047Ozs7OworMTE1NTtIQU5HVUwgQ0hPU0VPTkcgQ0VPTkdDSElFVU1DSElFVUNIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTU2O0hBTkdVTCBDSE9TRU9ORyBQSElFVVBILVBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMTExIDExMDc7Ozs7Tjs7Ozs7CisxMTU3O0hBTkdVTCBDSE9TRU9ORyBLQVBZRU9VTlBISUVVUEg7TG87MDtMOzxjb21wYXQ+IDExMTEgMTEwQjs7OztOOzs7OzsKKzExNTg7SEFOR1VMIENIT1NFT05HIFNTQU5HSElFVUg7TG87MDtMOzxjb21wYXQ+IDExMTIgMTExMjs7OztOOzs7OzsKKzExNTk7SEFOR1VMIENIT1NFT05HIFlFT1JJTkhJRVVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTVGO0hBTkdVTCBDSE9TRU9ORyBGSUxMRVI7TG87MDtMOzs7OztOOzs7OzsKKzExNjA7SEFOR1VMIEpVTkdTRU9ORyBGSUxMRVI7TG87MDtMOzs7OztOOzs7OzsKKzExNjE7SEFOR1VMIEpVTkdTRU9ORyBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTYyO0hBTkdVTCBKVU5HU0VPTkcgQUU7TG87MDtMOzxjb21wYXQ+IDExNjEgMTE3NTs7OztOOzs7OzsKKzExNjM7SEFOR1VMIEpVTkdTRU9ORyBZQTtMbzswO0w7Ozs7O047Ozs7OworMTE2NDtIQU5HVUwgSlVOR1NFT05HIFlBRTtMbzswO0w7PGNvbXBhdD4gMTE2MyAxMTc1Ozs7O047Ozs7OworMTE2NTtIQU5HVUwgSlVOR1NFT05HIEVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTY2O0hBTkdVTCBKVU5HU0VPTkcgRTtMbzswO0w7PGNvbXBhdD4gMTE2NSAxMTc1Ozs7O047Ozs7OworMTE2NztIQU5HVUwgSlVOR1NFT05HIFlFTztMbzswO0w7Ozs7O047Ozs7OworMTE2ODtIQU5HVUwgSlVOR1NFT05HIFlFO0xvOzA7TDs8Y29tcGF0PiAxMTY3IDExNzU7Ozs7Tjs7Ozs7CisxMTY5O0hBTkdVTCBKVU5HU0VPTkcgTztMbzswO0w7Ozs7O047Ozs7OworMTE2QTtIQU5HVUwgSlVOR1NFT05HIFdBO0xvOzA7TDs8Y29tcGF0PiAxMTY5IDExNjE7Ozs7Tjs7Ozs7CisxMTZCO0hBTkdVTCBKVU5HU0VPTkcgV0FFO0xvOzA7TDs8Y29tcGF0PiAxMTY5IDExNjEgMTE3NTs7OztOOzs7OzsKKzExNkM7SEFOR1VMIEpVTkdTRU9ORyBPRTtMbzswO0w7PGNvbXBhdD4gMTE2OSAxMTc1Ozs7O047Ozs7OworMTE2RDtIQU5HVUwgSlVOR1NFT05HIFlPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTZFO0hBTkdVTCBKVU5HU0VPTkcgVTtMbzswO0w7Ozs7O047Ozs7OworMTE2RjtIQU5HVUwgSlVOR1NFT05HIFdFTztMbzswO0w7PGNvbXBhdD4gMTE2RSAxMTY1Ozs7O047Ozs7OworMTE3MDtIQU5HVUwgSlVOR1NFT05HIFdFO0xvOzA7TDs8Y29tcGF0PiAxMTZFIDExNjUgMTE3NTs7OztOOzs7OzsKKzExNzE7SEFOR1VMIEpVTkdTRU9ORyBXSTtMbzswO0w7PGNvbXBhdD4gMTE2RSAxMTc1Ozs7O047Ozs7OworMTE3MjtIQU5HVUwgSlVOR1NFT05HIFlVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTczO0hBTkdVTCBKVU5HU0VPTkcgRVU7TG87MDtMOzs7OztOOzs7OzsKKzExNzQ7SEFOR1VMIEpVTkdTRU9ORyBZSTtMbzswO0w7PGNvbXBhdD4gMTE3MyAxMTc1Ozs7O047Ozs7OworMTE3NTtIQU5HVUwgSlVOR1NFT05HIEk7TG87MDtMOzs7OztOOzs7OzsKKzExNzY7SEFOR1VMIEpVTkdTRU9ORyBBLU87TG87MDtMOzxjb21wYXQ+IDExNjEgMTE2OTs7OztOOzs7OzsKKzExNzc7SEFOR1VMIEpVTkdTRU9ORyBBLVU7TG87MDtMOzxjb21wYXQ+IDExNjEgMTE2RTs7OztOOzs7OzsKKzExNzg7SEFOR1VMIEpVTkdTRU9ORyBZQS1PO0xvOzA7TDs8Y29tcGF0PiAxMTYzIDExNjk7Ozs7Tjs7Ozs7CisxMTc5O0hBTkdVTCBKVU5HU0VPTkcgWUEtWU87TG87MDtMOzxjb21wYXQ+IDExNjMgMTE2RDs7OztOOzs7OzsKKzExN0E7SEFOR1VMIEpVTkdTRU9ORyBFTy1PO0xvOzA7TDs8Y29tcGF0PiAxMTY1IDExNjk7Ozs7Tjs7Ozs7CisxMTdCO0hBTkdVTCBKVU5HU0VPTkcgRU8tVTtMbzswO0w7PGNvbXBhdD4gMTE2NSAxMTZFOzs7O047Ozs7OworMTE3QztIQU5HVUwgSlVOR1NFT05HIEVPLUVVO0xvOzA7TDs8Y29tcGF0PiAxMTY1IDExNzM7Ozs7Tjs7Ozs7CisxMTdEO0hBTkdVTCBKVU5HU0VPTkcgWUVPLU87TG87MDtMOzxjb21wYXQ+IDExNjcgMTE2OTs7OztOOzs7OzsKKzExN0U7SEFOR1VMIEpVTkdTRU9ORyBZRU8tVTtMbzswO0w7PGNvbXBhdD4gMTE2NyAxMTZFOzs7O047Ozs7OworMTE3RjtIQU5HVUwgSlVOR1NFT05HIE8tRU87TG87MDtMOzxjb21wYXQ+IDExNjkgMTE2NTs7OztOOzs7OzsKKzExODA7SEFOR1VMIEpVTkdTRU9ORyBPLUU7TG87MDtMOzxjb21wYXQ+IDExNjkgMTE2Njs7OztOOzs7OzsKKzExODE7SEFOR1VMIEpVTkdTRU9ORyBPLVlFO0xvOzA7TDs8Y29tcGF0PiAxMTY5IDExNjg7Ozs7Tjs7Ozs7CisxMTgyO0hBTkdVTCBKVU5HU0VPTkcgTy1PO0xvOzA7TDs8Y29tcGF0PiAxMTY5IDExNjk7Ozs7Tjs7Ozs7CisxMTgzO0hBTkdVTCBKVU5HU0VPTkcgTy1VO0xvOzA7TDs8Y29tcGF0PiAxMTY5IDExNkU7Ozs7Tjs7Ozs7CisxMTg0O0hBTkdVTCBKVU5HU0VPTkcgWU8tWUE7TG87MDtMOzxjb21wYXQ+IDExNkQgMTE2Mzs7OztOOzs7OzsKKzExODU7SEFOR1VMIEpVTkdTRU9ORyBZTy1ZQUU7TG87MDtMOzxjb21wYXQ+IDExNkQgMTE2NDs7OztOOzs7OzsKKzExODY7SEFOR1VMIEpVTkdTRU9ORyBZTy1ZRU87TG87MDtMOzxjb21wYXQ+IDExNkQgMTE2Nzs7OztOOzs7OzsKKzExODc7SEFOR1VMIEpVTkdTRU9ORyBZTy1PO0xvOzA7TDs8Y29tcGF0PiAxMTZEIDExNjk7Ozs7Tjs7Ozs7CisxMTg4O0hBTkdVTCBKVU5HU0VPTkcgWU8tSTtMbzswO0w7PGNvbXBhdD4gMTE2RCAxMTc1Ozs7O047Ozs7OworMTE4OTtIQU5HVUwgSlVOR1NFT05HIFUtQTtMbzswO0w7PGNvbXBhdD4gMTE2RSAxMTYxOzs7O047Ozs7OworMTE4QTtIQU5HVUwgSlVOR1NFT05HIFUtQUU7TG87MDtMOzxjb21wYXQ+IDExNkUgMTE2Mjs7OztOOzs7OzsKKzExOEI7SEFOR1VMIEpVTkdTRU9ORyBVLUVPLUVVO0xvOzA7TDs8Y29tcGF0PiAxMTZFIDExNjUgMTE3Mzs7OztOOzs7OzsKKzExOEM7SEFOR1VMIEpVTkdTRU9ORyBVLVlFO0xvOzA7TDs8Y29tcGF0PiAxMTZFIDExNjg7Ozs7Tjs7Ozs7CisxMThEO0hBTkdVTCBKVU5HU0VPTkcgVS1VO0xvOzA7TDs8Y29tcGF0PiAxMTZFIDExNkU7Ozs7Tjs7Ozs7CisxMThFO0hBTkdVTCBKVU5HU0VPTkcgWVUtQTtMbzswO0w7PGNvbXBhdD4gMTE3MiAxMTYxOzs7O047Ozs7OworMTE4RjtIQU5HVUwgSlVOR1NFT05HIFlVLUVPO0xvOzA7TDs8Y29tcGF0PiAxMTcyIDExNjU7Ozs7Tjs7Ozs7CisxMTkwO0hBTkdVTCBKVU5HU0VPTkcgWVUtRTtMbzswO0w7PGNvbXBhdD4gMTE3MiAxMTY2Ozs7O047Ozs7OworMTE5MTtIQU5HVUwgSlVOR1NFT05HIFlVLVlFTztMbzswO0w7PGNvbXBhdD4gMTE3MiAxMTY3Ozs7O047Ozs7OworMTE5MjtIQU5HVUwgSlVOR1NFT05HIFlVLVlFO0xvOzA7TDs8Y29tcGF0PiAxMTcyIDExNjg7Ozs7Tjs7Ozs7CisxMTkzO0hBTkdVTCBKVU5HU0VPTkcgWVUtVTtMbzswO0w7PGNvbXBhdD4gMTE3MiAxMTZFOzs7O047Ozs7OworMTE5NDtIQU5HVUwgSlVOR1NFT05HIFlVLUk7TG87MDtMOzxjb21wYXQ+IDExNzIgMTE3NTs7OztOOzs7OzsKKzExOTU7SEFOR1VMIEpVTkdTRU9ORyBFVS1VO0xvOzA7TDs8Y29tcGF0PiAxMTczIDExNkU7Ozs7Tjs7Ozs7CisxMTk2O0hBTkdVTCBKVU5HU0VPTkcgRVUtRVU7TG87MDtMOzxjb21wYXQ+IDExNzMgMTE3Mzs7OztOOzs7OzsKKzExOTc7SEFOR1VMIEpVTkdTRU9ORyBZSS1VO0xvOzA7TDs8Y29tcGF0PiAxMTc0IDExNkU7Ozs7Tjs7Ozs7CisxMTk4O0hBTkdVTCBKVU5HU0VPTkcgSS1BO0xvOzA7TDs8Y29tcGF0PiAxMTc1IDExNjE7Ozs7Tjs7Ozs7CisxMTk5O0hBTkdVTCBKVU5HU0VPTkcgSS1ZQTtMbzswO0w7PGNvbXBhdD4gMTE3NSAxMTYzOzs7O047Ozs7OworMTE5QTtIQU5HVUwgSlVOR1NFT05HIEktTztMbzswO0w7PGNvbXBhdD4gMTE3NSAxMTY5Ozs7O047Ozs7OworMTE5QjtIQU5HVUwgSlVOR1NFT05HIEktVTtMbzswO0w7PGNvbXBhdD4gMTE3NSAxMTZFOzs7O047Ozs7OworMTE5QztIQU5HVUwgSlVOR1NFT05HIEktRVU7TG87MDtMOzxjb21wYXQ+IDExNzUgMTE3Mzs7OztOOzs7OzsKKzExOUQ7SEFOR1VMIEpVTkdTRU9ORyBJLUFSQUVBO0xvOzA7TDs8Y29tcGF0PiAxMTc1IDExOUU7Ozs7Tjs7Ozs7CisxMTlFO0hBTkdVTCBKVU5HU0VPTkcgQVJBRUE7TG87MDtMOzs7OztOOzs7OzsKKzExOUY7SEFOR1VMIEpVTkdTRU9ORyBBUkFFQS1FTztMbzswO0w7PGNvbXBhdD4gMTE5RSAxMTY1Ozs7O047Ozs7OworMTFBMDtIQU5HVUwgSlVOR1NFT05HIEFSQUVBLVU7TG87MDtMOzxjb21wYXQ+IDExOUUgMTE2RTs7OztOOzs7OzsKKzExQTE7SEFOR1VMIEpVTkdTRU9ORyBBUkFFQS1JO0xvOzA7TDs8Y29tcGF0PiAxMTlFIDExNzU7Ozs7Tjs7Ozs7CisxMUEyO0hBTkdVTCBKVU5HU0VPTkcgU1NBTkdBUkFFQTtMbzswO0w7PGNvbXBhdD4gMTE5RSAxMTlFOzs7O047Ozs7OworMTFBODtIQU5HVUwgSk9OR1NFT05HIEtJWUVPSztMbzswO0w7Ozs7O047Ozs7OworMTFBOTtIQU5HVUwgSk9OR1NFT05HIFNTQU5HS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMUE4IDExQTg7Ozs7Tjs7Ozs7CisxMUFBO0hBTkdVTCBKT05HU0VPTkcgS0lZRU9LLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExQTggMTFCQTs7OztOOzs7OzsKKzExQUI7SEFOR1VMIEpPTkdTRU9ORyBOSUVVTjtMbzswO0w7Ozs7O047Ozs7OworMTFBQztIQU5HVUwgSk9OR1NFT05HIE5JRVVOLUNJRVVDO0xvOzA7TDs8Y29tcGF0PiAxMUFCIDExQkQ7Ozs7Tjs7Ozs7CisxMUFEO0hBTkdVTCBKT05HU0VPTkcgTklFVU4tSElFVUg7TG87MDtMOzxjb21wYXQ+IDExQUIgMTFDMjs7OztOOzs7OzsKKzExQUU7SEFOR1VMIEpPTkdTRU9ORyBUSUtFVVQ7TG87MDtMOzs7OztOOzs7OzsKKzExQUY7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTDtMbzswO0w7Ozs7O047Ozs7OworMTFCMDtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLUtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTFBRiAxMUE4Ozs7O047Ozs7OworMTFCMTtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLU1JRVVNO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQjc7Ozs7Tjs7Ozs7CisxMUIyO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtUElFVVA7TG87MDtMOzxjb21wYXQ+IDExQUYgMTFCODs7OztOOzs7OzsKKzExQjM7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQkE7Ozs7Tjs7Ozs7CisxMUI0O0hBTkdVTCBKT05HU0VPTkcgUklFVUwtVEhJRVVUSDtMbzswO0w7PGNvbXBhdD4gMTFBRiAxMUMwOzs7O047Ozs7OworMTFCNTtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVBISUVVUEg7TG87MDtMOzxjb21wYXQ+IDExQUYgMTFDMTs7OztOOzs7OzsKKzExQjY7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1ISUVVSDtMbzswO0w7PGNvbXBhdD4gMTFBRiAxMUMyOzs7O047Ozs7OworMTFCNztIQU5HVUwgSk9OR1NFT05HIE1JRVVNO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUI4O0hBTkdVTCBKT05HU0VPTkcgUElFVVA7TG87MDtMOzs7OztOOzs7OzsKKzExQjk7SEFOR1VMIEpPTkdTRU9ORyBQSUVVUC1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUI4IDExQkE7Ozs7Tjs7Ozs7CisxMUJBO0hBTkdVTCBKT05HU0VPTkcgU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTFCQjtIQU5HVUwgSk9OR1NFT05HIFNTQU5HU0lPUztMbzswO0w7PGNvbXBhdD4gMTFCQSAxMUJBOzs7O047Ozs7OworMTFCQztIQU5HVUwgSk9OR1NFT05HIElFVU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUJEO0hBTkdVTCBKT05HU0VPTkcgQ0lFVUM7TG87MDtMOzs7OztOOzs7OzsKKzExQkU7SEFOR1VMIEpPTkdTRU9ORyBDSElFVUNIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUJGO0hBTkdVTCBKT05HU0VPTkcgS0hJRVVLSDtMbzswO0w7Ozs7O047Ozs7OworMTFDMDtIQU5HVUwgSk9OR1NFT05HIFRISUVVVEg7TG87MDtMOzs7OztOOzs7OzsKKzExQzE7SEFOR1VMIEpPTkdTRU9ORyBQSElFVVBIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUMyO0hBTkdVTCBKT05HU0VPTkcgSElFVUg7TG87MDtMOzs7OztOOzs7OzsKKzExQzM7SEFOR1VMIEpPTkdTRU9ORyBLSVlFT0stUklFVUw7TG87MDtMOzxjb21wYXQ+IDExQTggMTFBRjs7OztOOzs7OzsKKzExQzQ7SEFOR1VMIEpPTkdTRU9ORyBLSVlFT0stU0lPUy1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExQTggMTFCQSAxMUE4Ozs7O047Ozs7OworMTFDNTtIQU5HVUwgSk9OR1NFT05HIE5JRVVOLUtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTFBQiAxMUE4Ozs7O047Ozs7OworMTFDNjtIQU5HVUwgSk9OR1NFT05HIE5JRVVOLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTFBQiAxMUFFOzs7O047Ozs7OworMTFDNztIQU5HVUwgSk9OR1NFT05HIE5JRVVOLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExQUIgMTFCQTs7OztOOzs7OzsKKzExQzg7SEFOR1VMIEpPTkdTRU9ORyBOSUVVTi1QQU5TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUFCIDExRUI7Ozs7Tjs7Ozs7CisxMUM5O0hBTkdVTCBKT05HU0VPTkcgTklFVU4tVEhJRVVUSDtMbzswO0w7PGNvbXBhdD4gMTFBQiAxMUMwOzs7O047Ozs7OworMTFDQTtIQU5HVUwgSk9OR1NFT05HIFRJS0VVVC1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExQUUgMTFBODs7OztOOzs7OzsKKzExQ0I7SEFOR1VMIEpPTkdTRU9ORyBUSUtFVVQtUklFVUw7TG87MDtMOzxjb21wYXQ+IDExQUUgMTFBRjs7OztOOzs7OzsKKzExQ0M7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1LSVlFT0stU0lPUztMbzswO0w7PGNvbXBhdD4gMTFBRiAxMUE4IDExQkE7Ozs7Tjs7Ozs7CisxMUNEO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtTklFVU47TG87MDtMOzxjb21wYXQ+IDExQUYgMTFBQjs7OztOOzs7OzsKKzExQ0U7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1USUtFVVQ7TG87MDtMOzxjb21wYXQ+IDExQUYgMTFBRTs7OztOOzs7OzsKKzExQ0Y7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1USUtFVVQtSElFVUg7TG87MDtMOzxjb21wYXQ+IDExQUYgMTFBRSAxMUMyOzs7O047Ozs7OworMTFEMDtIQU5HVUwgSk9OR1NFT05HIFNTQU5HUklFVUw7TG87MDtMOzxjb21wYXQ+IDExQUYgMTFBRjs7OztOOzs7OzsKKzExRDE7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1NSUVVTS1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExQUYgMTFCNyAxMUE4Ozs7O047Ozs7OworMTFEMjtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLU1JRVVNLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExQUYgMTFCNyAxMUJBOzs7O047Ozs7OworMTFEMztIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVBJRVVQLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExQUYgMTFCOCAxMUJBOzs7O047Ozs7OworMTFENDtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVBJRVVQLUhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQjggMTFDMjs7OztOOzs7OzsKKzExRDU7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1LQVBZRU9VTlBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQjggMTFCQzs7OztOOzs7OzsKKzExRDY7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1TU0FOR1NJT1M7TG87MDtMOzxjb21wYXQ+IDExQUYgMTFCQSAxMUJBOzs7O047Ozs7OworMTFENztIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVBBTlNJT1M7TG87MDtMOzxjb21wYXQ+IDExQUYgMTFFQjs7OztOOzs7OzsKKzExRDg7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1LSElFVUtIO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQkY7Ozs7Tjs7Ozs7CisxMUQ5O0hBTkdVTCBKT05HU0VPTkcgUklFVUwtWUVPUklOSElFVUg7TG87MDtMOzxjb21wYXQ+IDExQUYgMTFGOTs7OztOOzs7OzsKKzExREE7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExQjcgMTFBODs7OztOOzs7OzsKKzExREI7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1SSUVVTDtMbzswO0w7PGNvbXBhdD4gMTFCNyAxMUFGOzs7O047Ozs7OworMTFEQztIQU5HVUwgSk9OR1NFT05HIE1JRVVNLVBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMUI3IDExQjg7Ozs7Tjs7Ozs7CisxMUREO0hBTkdVTCBKT05HU0VPTkcgTUlFVU0tU0lPUztMbzswO0w7PGNvbXBhdD4gMTFCNyAxMUJBOzs7O047Ozs7OworMTFERTtIQU5HVUwgSk9OR1NFT05HIE1JRVVNLVNTQU5HU0lPUztMbzswO0w7PGNvbXBhdD4gMTFCNyAxMUJBIDExQkE7Ozs7Tjs7Ozs7CisxMURGO0hBTkdVTCBKT05HU0VPTkcgTUlFVU0tUEFOU0lPUztMbzswO0w7PGNvbXBhdD4gMTFCNyAxMUVCOzs7O047Ozs7OworMTFFMDtIQU5HVUwgSk9OR1NFT05HIE1JRVVNLUNISUVVQ0g7TG87MDtMOzxjb21wYXQ+IDExQjcgMTFCRTs7OztOOzs7OzsKKzExRTE7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1ISUVVSDtMbzswO0w7PGNvbXBhdD4gMTFCNyAxMUMyOzs7O047Ozs7OworMTFFMjtIQU5HVUwgSk9OR1NFT05HIEtBUFlFT1VOTUlFVU07TG87MDtMOzxjb21wYXQ+IDExQjcgMTFCQzs7OztOOzs7OzsKKzExRTM7SEFOR1VMIEpPTkdTRU9ORyBQSUVVUC1SSUVVTDtMbzswO0w7PGNvbXBhdD4gMTFCOCAxMUFGOzs7O047Ozs7OworMTFFNDtIQU5HVUwgSk9OR1NFT05HIFBJRVVQLVBISUVVUEg7TG87MDtMOzxjb21wYXQ+IDExQjggMTFDMTs7OztOOzs7OzsKKzExRTU7SEFOR1VMIEpPTkdTRU9ORyBQSUVVUC1ISUVVSDtMbzswO0w7PGNvbXBhdD4gMTFCOCAxMUMyOzs7O047Ozs7OworMTFFNjtIQU5HVUwgSk9OR1NFT05HIEtBUFlFT1VOUElFVVA7TG87MDtMOzxjb21wYXQ+IDExQjggMTFCQzs7OztOOzs7OzsKKzExRTc7SEFOR1VMIEpPTkdTRU9ORyBTSU9TLUtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTFCQSAxMUE4Ozs7O047Ozs7OworMTFFODtIQU5HVUwgSk9OR1NFT05HIFNJT1MtVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMUJBIDExQUU7Ozs7Tjs7Ozs7CisxMUU5O0hBTkdVTCBKT05HU0VPTkcgU0lPUy1SSUVVTDtMbzswO0w7PGNvbXBhdD4gMTFCQSAxMUFGOzs7O047Ozs7OworMTFFQTtIQU5HVUwgSk9OR1NFT05HIFNJT1MtUElFVVA7TG87MDtMOzxjb21wYXQ+IDExQkEgMTFCODs7OztOOzs7OzsKKzExRUI7SEFOR1VMIEpPTkdTRU9ORyBQQU5TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUVDO0hBTkdVTCBKT05HU0VPTkcgSUVVTkctS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMUJDIDExQTg7Ozs7Tjs7Ozs7CisxMUVEO0hBTkdVTCBKT05HU0VPTkcgSUVVTkctU1NBTkdLSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExQkMgMTFBOCAxMUE4Ozs7O047Ozs7OworMTFFRTtIQU5HVUwgSk9OR1NFT05HIFNTQU5HSUVVTkc7TG87MDtMOzxjb21wYXQ+IDExQkMgMTFCQzs7OztOOzs7OzsKKzExRUY7SEFOR1VMIEpPTkdTRU9ORyBJRVVORy1LSElFVUtIO0xvOzA7TDs8Y29tcGF0PiAxMUJDIDExQkY7Ozs7Tjs7Ozs7CisxMUYwO0hBTkdVTCBKT05HU0VPTkcgWUVTSUVVTkc7TG87MDtMOzs7OztOOzs7OzsKKzExRjE7SEFOR1VMIEpPTkdTRU9ORyBZRVNJRVVORy1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUYwIDExQkE7Ozs7Tjs7Ozs7CisxMUYyO0hBTkdVTCBKT05HU0VPTkcgWUVTSUVVTkctUEFOU0lPUztMbzswO0w7PGNvbXBhdD4gMTFGMCAxMUVCOzs7O047Ozs7OworMTFGMztIQU5HVUwgSk9OR1NFT05HIFBISUVVUEgtUElFVVA7TG87MDtMOzxjb21wYXQ+IDExQzEgMTFCODs7OztOOzs7OzsKKzExRjQ7SEFOR1VMIEpPTkdTRU9ORyBLQVBZRU9VTlBISUVVUEg7TG87MDtMOzxjb21wYXQ+IDExQzEgMTFCQzs7OztOOzs7OzsKKzExRjU7SEFOR1VMIEpPTkdTRU9ORyBISUVVSC1OSUVVTjtMbzswO0w7PGNvbXBhdD4gMTFDMiAxMUFCOzs7O047Ozs7OworMTFGNjtIQU5HVUwgSk9OR1NFT05HIEhJRVVILVJJRVVMO0xvOzA7TDs8Y29tcGF0PiAxMUMyIDExQUY7Ozs7Tjs7Ozs7CisxMUY3O0hBTkdVTCBKT05HU0VPTkcgSElFVUgtTUlFVU07TG87MDtMOzxjb21wYXQ+IDExQzIgMTFCNzs7OztOOzs7OzsKKzExRjg7SEFOR1VMIEpPTkdTRU9ORyBISUVVSC1QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTFDMiAxMUI4Ozs7O047Ozs7OworMTFGOTtIQU5HVUwgSk9OR1NFT05HIFlFT1JJTkhJRVVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxRTAwO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEJFTE9XO0x1OzA7TDswMDQxIDAzMjU7Ozs7Tjs7OzsxRTAxOworMUUwMTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQkVMT1c7TGw7MDtMOzAwNjEgMDMyNTs7OztOOzs7MUUwMDs7MUUwMAorMUUwMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDQyIDAzMDc7Ozs7Tjs7OzsxRTAzOworMUUwMztMQVRJTiBTTUFMTCBMRVRURVIgQiBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2MiAwMzA3Ozs7O047OzsxRTAyOzsxRTAyCisxRTA0O0xBVElOIENBUElUQUwgTEVUVEVSIEIgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNDIgMDMyMzs7OztOOzs7OzFFMDU7CisxRTA1O0xBVElOIFNNQUxMIExFVFRFUiBCIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDYyIDAzMjM7Ozs7Tjs7OzFFMDQ7OzFFMDQKKzFFMDY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQiBXSVRIIExJTkUgQkVMT1c7THU7MDtMOzAwNDIgMDMzMTs7OztOOzs7OzFFMDc7CisxRTA3O0xBVElOIFNNQUxMIExFVFRFUiBCIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA2MiAwMzMxOzs7O047OzsxRTA2OzsxRTA2CisxRTA4O0xBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBIEFORCBBQ1VURTtMdTswO0w7MDBDNyAwMzAxOzs7O047Ozs7MUUwOTsKKzFFMDk7TEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBIEFORCBBQ1VURTtMbDswO0w7MDBFNyAwMzAxOzs7O047OzsxRTA4OzsxRTA4CisxRTBBO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNDQgMDMwNzs7OztOOzs7OzFFMEI7CisxRTBCO0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDY0IDAzMDc7Ozs7Tjs7OzFFMEE7OzFFMEEKKzFFMEM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0NCAwMzIzOzs7O047Ozs7MUUwRDsKKzFFMEQ7TEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNjQgMDMyMzs7OztOOzs7MUUwQzs7MUUwQworMUUwRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggTElORSBCRUxPVztMdTswO0w7MDA0NCAwMzMxOzs7O047Ozs7MUUwRjsKKzFFMEY7TEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBMSU5FIEJFTE9XO0xsOzA7TDswMDY0IDAzMzE7Ozs7Tjs7OzFFMEU7OzFFMEUKKzFFMTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIENFRElMTEE7THU7MDtMOzAwNDQgMDMyNzs7OztOOzs7OzFFMTE7CisxRTExO0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggQ0VESUxMQTtMbDswO0w7MDA2NCAwMzI3Ozs7O047OzsxRTEwOzsxRTEwCisxRTEyO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0x1OzA7TDswMDQ0IDAzMkQ7Ozs7Tjs7OzsxRTEzOworMUUxMztMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIENJUkNVTUZMRVggQkVMT1c7TGw7MDtMOzAwNjQgMDMyRDs7OztOOzs7MUUxMjs7MUUxMgorMUUxNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggTUFDUk9OIEFORCBHUkFWRTtMdTswO0w7MDExMiAwMzAwOzs7O047Ozs7MUUxNTsKKzFFMTU7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBNQUNST04gQU5EIEdSQVZFO0xsOzA7TDswMTEzIDAzMDA7Ozs7Tjs7OzFFMTQ7OzFFMTQKKzFFMTY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE1BQ1JPTiBBTkQgQUNVVEU7THU7MDtMOzAxMTIgMDMwMTs7OztOOzs7OzFFMTc7CisxRTE3O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggTUFDUk9OIEFORCBBQ1VURTtMbDswO0w7MDExMyAwMzAxOzs7O047OzsxRTE2OzsxRTE2CisxRTE4O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0x1OzA7TDswMDQ1IDAzMkQ7Ozs7Tjs7OzsxRTE5OworMUUxOTtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQkVMT1c7TGw7MDtMOzAwNjUgMDMyRDs7OztOOzs7MUUxODs7MUUxOAorMUUxQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggVElMREUgQkVMT1c7THU7MDtMOzAwNDUgMDMzMDs7OztOOzs7OzFFMUI7CisxRTFCO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggVElMREUgQkVMT1c7TGw7MDtMOzAwNjUgMDMzMDs7OztOOzs7MUUxQTs7MUUxQQorMUUxQztMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0VESUxMQSBBTkQgQlJFVkU7THU7MDtMOzAxMTQgMDMyNzs7OztOOzs7OzFFMUQ7CisxRTFEO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0VESUxMQSBBTkQgQlJFVkU7TGw7MDtMOzAxMTUgMDMyNzs7OztOOzs7MUUxQzs7MUUxQworMUUxRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBGIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDQ2IDAzMDc7Ozs7Tjs7OzsxRTFGOworMUUxRjtMQVRJTiBTTUFMTCBMRVRURVIgRiBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2NiAwMzA3Ozs7O047OzsxRTFFOzsxRTFFCisxRTIwO0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBNQUNST047THU7MDtMOzAwNDcgMDMwNDs7OztOOzs7OzFFMjE7CisxRTIxO0xBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggTUFDUk9OO0xsOzA7TDswMDY3IDAzMDQ7Ozs7Tjs7OzFFMjA7OzFFMjAKKzFFMjI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0OCAwMzA3Ozs7O047Ozs7MUUyMzsKKzFFMjM7TEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNjggMDMwNzs7OztOOzs7MUUyMjs7MUUyMgorMUUyNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDQ4IDAzMjM7Ozs7Tjs7OzsxRTI1OworMUUyNTtMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA2OCAwMzIzOzs7O047OzsxRTI0OzsxRTI0CisxRTI2O0xBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBESUFFUkVTSVM7THU7MDtMOzAwNDggMDMwODs7OztOOzs7OzFFMjc7CisxRTI3O0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggRElBRVJFU0lTO0xsOzA7TDswMDY4IDAzMDg7Ozs7Tjs7OzFFMjY7OzFFMjYKKzFFMjg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIENFRElMTEE7THU7MDtMOzAwNDggMDMyNzs7OztOOzs7OzFFMjk7CisxRTI5O0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggQ0VESUxMQTtMbDswO0w7MDA2OCAwMzI3Ozs7O047OzsxRTI4OzsxRTI4CisxRTJBO0xBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBCUkVWRSBCRUxPVztMdTswO0w7MDA0OCAwMzJFOzs7O047Ozs7MUUyQjsKKzFFMkI7TEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBCUkVWRSBCRUxPVztMbDswO0w7MDA2OCAwMzJFOzs7O047OzsxRTJBOzsxRTJBCisxRTJDO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBUSUxERSBCRUxPVztMdTswO0w7MDA0OSAwMzMwOzs7O047Ozs7MUUyRDsKKzFFMkQ7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBUSUxERSBCRUxPVztMbDswO0w7MDA2OSAwMzMwOzs7O047OzsxRTJDOzsxRTJDCisxRTJFO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMgQU5EIEFDVVRFO0x1OzA7TDswMENGIDAzMDE7Ozs7Tjs7OzsxRTJGOworMUUyRjtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUyBBTkQgQUNVVEU7TGw7MDtMOzAwRUYgMDMwMTs7OztOOzs7MUUyRTs7MUUyRQorMUUzMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggQUNVVEU7THU7MDtMOzAwNEIgMDMwMTs7OztOOzs7OzFFMzE7CisxRTMxO0xBVElOIFNNQUxMIExFVFRFUiBLIFdJVEggQUNVVEU7TGw7MDtMOzAwNkIgMDMwMTs7OztOOzs7MUUzMDs7MUUzMAorMUUzMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDRCIDAzMjM7Ozs7Tjs7OzsxRTMzOworMUUzMztMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA2QiAwMzIzOzs7O047OzsxRTMyOzsxRTMyCisxRTM0O0xBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBMSU5FIEJFTE9XO0x1OzA7TDswMDRCIDAzMzE7Ozs7Tjs7OzsxRTM1OworMUUzNTtMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIExJTkUgQkVMT1c7TGw7MDtMOzAwNkIgMDMzMTs7OztOOzs7MUUzNDs7MUUzNAorMUUzNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDRDIDAzMjM7Ozs7Tjs7OzsxRTM3OworMUUzNztMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA2QyAwMzIzOzs7O047OzsxRTM2OzsxRTM2CisxRTM4O0xBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBET1QgQkVMT1cgQU5EIE1BQ1JPTjtMdTswO0w7MUUzNiAwMzA0Ozs7O047Ozs7MUUzOTsKKzFFMzk7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBET1QgQkVMT1cgQU5EIE1BQ1JPTjtMbDswO0w7MUUzNyAwMzA0Ozs7O047OzsxRTM4OzsxRTM4CisxRTNBO0xBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBMSU5FIEJFTE9XO0x1OzA7TDswMDRDIDAzMzE7Ozs7Tjs7OzsxRTNCOworMUUzQjtMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIExJTkUgQkVMT1c7TGw7MDtMOzAwNkMgMDMzMTs7OztOOzs7MUUzQTs7MUUzQQorMUUzQztMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMdTswO0w7MDA0QyAwMzJEOzs7O047Ozs7MUUzRDsKKzFFM0Q7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0xsOzA7TDswMDZDIDAzMkQ7Ozs7Tjs7OzFFM0M7OzFFM0MKKzFFM0U7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTSBXSVRIIEFDVVRFO0x1OzA7TDswMDREIDAzMDE7Ozs7Tjs7OzsxRTNGOworMUUzRjtMQVRJTiBTTUFMTCBMRVRURVIgTSBXSVRIIEFDVVRFO0xsOzA7TDswMDZEIDAzMDE7Ozs7Tjs7OzFFM0U7OzFFM0UKKzFFNDA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTSBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0RCAwMzA3Ozs7O047Ozs7MUU0MTsKKzFFNDE7TEFUSU4gU01BTEwgTEVUVEVSIE0gV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNkQgMDMwNzs7OztOOzs7MUU0MDs7MUU0MAorMUU0MjtMQVRJTiBDQVBJVEFMIExFVFRFUiBNIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDREIDAzMjM7Ozs7Tjs7OzsxRTQzOworMUU0MztMQVRJTiBTTUFMTCBMRVRURVIgTSBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA2RCAwMzIzOzs7O047OzsxRTQyOzsxRTQyCisxRTQ0O0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNEUgMDMwNzs7OztOOzs7OzFFNDU7CisxRTQ1O0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDZFIDAzMDc7Ozs7Tjs7OzFFNDQ7OzFFNDQKKzFFNDY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0RSAwMzIzOzs7O047Ozs7MUU0NzsKKzFFNDc7TEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNkUgMDMyMzs7OztOOzs7MUU0Njs7MUU0NgorMUU0ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggTElORSBCRUxPVztMdTswO0w7MDA0RSAwMzMxOzs7O047Ozs7MUU0OTsKKzFFNDk7TEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBMSU5FIEJFTE9XO0xsOzA7TDswMDZFIDAzMzE7Ozs7Tjs7OzFFNDg7OzFFNDgKKzFFNEE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENJUkNVTUZMRVggQkVMT1c7THU7MDtMOzAwNEUgMDMyRDs7OztOOzs7OzFFNEI7CisxRTRCO0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMbDswO0w7MDA2RSAwMzJEOzs7O047OzsxRTRBOzsxRTRBCisxRTRDO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERSBBTkQgQUNVVEU7THU7MDtMOzAwRDUgMDMwMTs7OztOOzs7OzFFNEQ7CisxRTREO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUgQU5EIEFDVVRFO0xsOzA7TDswMEY1IDAzMDE7Ozs7Tjs7OzFFNEM7OzFFNEMKKzFFNEU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFIEFORCBESUFFUkVTSVM7THU7MDtMOzAwRDUgMDMwODs7OztOOzs7OzFFNEY7CisxRTRGO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUgQU5EIERJQUVSRVNJUztMbDswO0w7MDBGNSAwMzA4Ozs7O047OzsxRTRFOzsxRTRFCisxRTUwO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBNQUNST04gQU5EIEdSQVZFO0x1OzA7TDswMTRDIDAzMDA7Ozs7Tjs7OzsxRTUxOworMUU1MTtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIE1BQ1JPTiBBTkQgR1JBVkU7TGw7MDtMOzAxNEQgMDMwMDs7OztOOzs7MUU1MDs7MUU1MAorMUU1MjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTUFDUk9OIEFORCBBQ1VURTtMdTswO0w7MDE0QyAwMzAxOzs7O047Ozs7MUU1MzsKKzFFNTM7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBNQUNST04gQU5EIEFDVVRFO0xsOzA7TDswMTREIDAzMDE7Ozs7Tjs7OzFFNTI7OzFFNTIKKzFFNTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUCBXSVRIIEFDVVRFO0x1OzA7TDswMDUwIDAzMDE7Ozs7Tjs7OzsxRTU1OworMUU1NTtMQVRJTiBTTUFMTCBMRVRURVIgUCBXSVRIIEFDVVRFO0xsOzA7TDswMDcwIDAzMDE7Ozs7Tjs7OzFFNTQ7OzFFNTQKKzFFNTY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUCBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA1MCAwMzA3Ozs7O047Ozs7MUU1NzsKKzFFNTc7TEFUSU4gU01BTEwgTEVUVEVSIFAgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNzAgMDMwNzs7OztOOzs7MUU1Njs7MUU1NgorMUU1ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDUyIDAzMDc7Ozs7Tjs7OzsxRTU5OworMUU1OTtMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA3MiAwMzA3Ozs7O047OzsxRTU4OzsxRTU4CisxRTVBO0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNTIgMDMyMzs7OztOOzs7OzFFNUI7CisxRTVCO0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDcyIDAzMjM7Ozs7Tjs7OzFFNUE7OzFFNUEKKzFFNUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIERPVCBCRUxPVyBBTkQgTUFDUk9OO0x1OzA7TDsxRTVBIDAzMDQ7Ozs7Tjs7OzsxRTVEOworMUU1RDtMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIERPVCBCRUxPVyBBTkQgTUFDUk9OO0xsOzA7TDsxRTVCIDAzMDQ7Ozs7Tjs7OzFFNUM7OzFFNUMKKzFFNUU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIExJTkUgQkVMT1c7THU7MDtMOzAwNTIgMDMzMTs7OztOOzs7OzFFNUY7CisxRTVGO0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA3MiAwMzMxOzs7O047OzsxRTVFOzsxRTVFCisxRTYwO0xBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNTMgMDMwNzs7OztOOzs7OzFFNjE7CisxRTYxO0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDczIDAzMDc7Ozs7Tjs7OzFFNjA7OzFFNjAKKzFFNjI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA1MyAwMzIzOzs7O047Ozs7MUU2MzsKKzFFNjM7TEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNzMgMDMyMzs7OztOOzs7MUU2Mjs7MUU2MgorMUU2NDtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQUNVVEUgQU5EIERPVCBBQk9WRTtMdTswO0w7MDE1QSAwMzA3Ozs7O047Ozs7MUU2NTsKKzFFNjU7TEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBBQ1VURSBBTkQgRE9UIEFCT1ZFO0xsOzA7TDswMTVCIDAzMDc7Ozs7Tjs7OzFFNjQ7OzFFNjQKKzFFNjY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OIEFORCBET1QgQUJPVkU7THU7MDtMOzAxNjAgMDMwNzs7OztOOzs7OzFFNjc7CisxRTY3O0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0FST04gQU5EIERPVCBBQk9WRTtMbDswO0w7MDE2MSAwMzA3Ozs7O047OzsxRTY2OzsxRTY2CisxRTY4O0xBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBET1QgQkVMT1cgQU5EIERPVCBBQk9WRTtMdTswO0w7MUU2MiAwMzA3Ozs7O047Ozs7MUU2OTsKKzFFNjk7TEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBET1QgQkVMT1cgQU5EIERPVCBBQk9WRTtMbDswO0w7MUU2MyAwMzA3Ozs7O047OzsxRTY4OzsxRTY4CisxRTZBO0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNTQgMDMwNzs7OztOOzs7OzFFNkI7CisxRTZCO0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDc0IDAzMDc7Ozs7Tjs7OzFFNkE7OzFFNkEKKzFFNkM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA1NCAwMzIzOzs7O047Ozs7MUU2RDsKKzFFNkQ7TEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNzQgMDMyMzs7OztOOzs7MUU2Qzs7MUU2QworMUU2RTtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggTElORSBCRUxPVztMdTswO0w7MDA1NCAwMzMxOzs7O047Ozs7MUU2RjsKKzFFNkY7TEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBMSU5FIEJFTE9XO0xsOzA7TDswMDc0IDAzMzE7Ozs7Tjs7OzFFNkU7OzFFNkUKKzFFNzA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENJUkNVTUZMRVggQkVMT1c7THU7MDtMOzAwNTQgMDMyRDs7OztOOzs7OzFFNzE7CisxRTcxO0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMbDswO0w7MDA3NCAwMzJEOzs7O047OzsxRTcwOzsxRTcwCisxRTcyO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQkVMT1c7THU7MDtMOzAwNTUgMDMyNDs7OztOOzs7OzFFNzM7CisxRTczO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEJFTE9XO0xsOzA7TDswMDc1IDAzMjQ7Ozs7Tjs7OzFFNzI7OzFFNzIKKzFFNzQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIFRJTERFIEJFTE9XO0x1OzA7TDswMDU1IDAzMzA7Ozs7Tjs7OzsxRTc1OworMUU3NTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIFRJTERFIEJFTE9XO0xsOzA7TDswMDc1IDAzMzA7Ozs7Tjs7OzFFNzQ7OzFFNzQKKzFFNzY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVggQkVMT1c7THU7MDtMOzAwNTUgMDMyRDs7OztOOzs7OzFFNzc7CisxRTc3O0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMbDswO0w7MDA3NSAwMzJEOzs7O047OzsxRTc2OzsxRTc2CisxRTc4O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBUSUxERSBBTkQgQUNVVEU7THU7MDtMOzAxNjggMDMwMTs7OztOOzs7OzFFNzk7CisxRTc5O0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggVElMREUgQU5EIEFDVVRFO0xsOzA7TDswMTY5IDAzMDE7Ozs7Tjs7OzFFNzg7OzFFNzgKKzFFN0E7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTiBBTkQgRElBRVJFU0lTO0x1OzA7TDswMTZBIDAzMDg7Ozs7Tjs7OzsxRTdCOworMUU3QjtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE1BQ1JPTiBBTkQgRElBRVJFU0lTO0xsOzA7TDswMTZCIDAzMDg7Ozs7Tjs7OzFFN0E7OzFFN0EKKzFFN0M7TEFUSU4gQ0FQSVRBTCBMRVRURVIgViBXSVRIIFRJTERFO0x1OzA7TDswMDU2IDAzMDM7Ozs7Tjs7OzsxRTdEOworMUU3RDtMQVRJTiBTTUFMTCBMRVRURVIgViBXSVRIIFRJTERFO0xsOzA7TDswMDc2IDAzMDM7Ozs7Tjs7OzFFN0M7OzFFN0MKKzFFN0U7TEFUSU4gQ0FQSVRBTCBMRVRURVIgViBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA1NiAwMzIzOzs7O047Ozs7MUU3RjsKKzFFN0Y7TEFUSU4gU01BTEwgTEVUVEVSIFYgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNzYgMDMyMzs7OztOOzs7MUU3RTs7MUU3RQorMUU4MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBXIFdJVEggR1JBVkU7THU7MDtMOzAwNTcgMDMwMDs7OztOOzs7OzFFODE7CisxRTgxO0xBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggR1JBVkU7TGw7MDtMOzAwNzcgMDMwMDs7OztOOzs7MUU4MDs7MUU4MAorMUU4MjtMQVRJTiBDQVBJVEFMIExFVFRFUiBXIFdJVEggQUNVVEU7THU7MDtMOzAwNTcgMDMwMTs7OztOOzs7OzFFODM7CisxRTgzO0xBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggQUNVVEU7TGw7MDtMOzAwNzcgMDMwMTs7OztOOzs7MUU4Mjs7MUU4MgorMUU4NDtMQVRJTiBDQVBJVEFMIExFVFRFUiBXIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDU3IDAzMDg7Ozs7Tjs7OzsxRTg1OworMUU4NTtMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA3NyAwMzA4Ozs7O047OzsxRTg0OzsxRTg0CisxRTg2O0xBVElOIENBUElUQUwgTEVUVEVSIFcgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNTcgMDMwNzs7OztOOzs7OzFFODc7CisxRTg3O0xBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDc3IDAzMDc7Ozs7Tjs7OzFFODY7OzFFODYKKzFFODg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA1NyAwMzIzOzs7O047Ozs7MUU4OTsKKzFFODk7TEFUSU4gU01BTEwgTEVUVEVSIFcgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNzcgMDMyMzs7OztOOzs7MUU4ODs7MUU4OAorMUU4QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBYIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDU4IDAzMDc7Ozs7Tjs7OzsxRThCOworMUU4QjtMQVRJTiBTTUFMTCBMRVRURVIgWCBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA3OCAwMzA3Ozs7O047OzsxRThBOzsxRThBCisxRThDO0xBVElOIENBUElUQUwgTEVUVEVSIFggV0lUSCBESUFFUkVTSVM7THU7MDtMOzAwNTggMDMwODs7OztOOzs7OzFFOEQ7CisxRThEO0xBVElOIFNNQUxMIExFVFRFUiBYIFdJVEggRElBRVJFU0lTO0xsOzA7TDswMDc4IDAzMDg7Ozs7Tjs7OzFFOEM7OzFFOEMKKzFFOEU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA1OSAwMzA3Ozs7O047Ozs7MUU4RjsKKzFFOEY7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNzkgMDMwNzs7OztOOzs7MUU4RTs7MUU4RQorMUU5MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA1QSAwMzAyOzs7O047Ozs7MUU5MTsKKzFFOTE7TEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDdBIDAzMDI7Ozs7Tjs7OzFFOTA7OzFFOTAKKzFFOTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA1QSAwMzIzOzs7O047Ozs7MUU5MzsKKzFFOTM7TEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwN0EgMDMyMzs7OztOOzs7MUU5Mjs7MUU5MgorMUU5NDtMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggTElORSBCRUxPVztMdTswO0w7MDA1QSAwMzMxOzs7O047Ozs7MUU5NTsKKzFFOTU7TEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBMSU5FIEJFTE9XO0xsOzA7TDswMDdBIDAzMzE7Ozs7Tjs7OzFFOTQ7OzFFOTQKKzFFOTY7TEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBMSU5FIEJFTE9XO0xsOzA7TDswMDY4IDAzMzE7Ozs7Tjs7Ozs7CisxRTk3O0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggRElBRVJFU0lTO0xsOzA7TDswMDc0IDAzMDg7Ozs7Tjs7Ozs7CisxRTk4O0xBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggUklORyBBQk9WRTtMbDswO0w7MDA3NyAwMzBBOzs7O047Ozs7OworMUU5OTtMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIFJJTkcgQUJPVkU7TGw7MDtMOzAwNzkgMDMwQTs7OztOOzs7OzsKKzFFOUE7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSUdIVCBIQUxGIFJJTkc7TGw7MDtMOzs7OztOOzs7OzsKKzFFOUI7TEFUSU4gU01BTEwgTEVUVEVSIExPTkcgUyBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDE3RiAwMzA3Ozs7O047OzsxRTYwOzsxRTYwCisxRUEwO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNDEgMDMyMzs7OztOOzs7OzFFQTE7CisxRUExO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDYxIDAzMjM7Ozs7Tjs7OzFFQTA7OzFFQTAKKzFFQTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEhPT0sgQUJPVkU7THU7MDtMOzAwNDEgMDMwOTs7OztOOzs7OzFFQTM7CisxRUEzO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggSE9PSyBBQk9WRTtMbDswO0w7MDA2MSAwMzA5Ozs7O047OzsxRUEyOzsxRUEyCisxRUE0O0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBBQ1VURTtMdTswO0w7MDBDMiAwMzAxOzs7O047Ozs7MUVBNTsKKzFFQTU7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBBQ1VURTtMbDswO0w7MDBFMiAwMzAxOzs7O047OzsxRUE0OzsxRUE0CisxRUE2O0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBHUkFWRTtMdTswO0w7MDBDMiAwMzAwOzs7O047Ozs7MUVBNzsKKzFFQTc7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBHUkFWRTtMbDswO0w7MDBFMiAwMzAwOzs7O047OzsxRUE2OzsxRUE2CisxRUE4O0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBIT09LIEFCT1ZFO0x1OzA7TDswMEMyIDAzMDk7Ozs7Tjs7OzsxRUE5OworMUVBOTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIEhPT0sgQUJPVkU7TGw7MDtMOzAwRTIgMDMwOTs7OztOOzs7MUVBODs7MUVBOAorMUVBQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgVElMREU7THU7MDtMOzAwQzIgMDMwMzs7OztOOzs7OzFFQUI7CisxRUFCO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgVElMREU7TGw7MDtMOzAwRTIgMDMwMzs7OztOOzs7MUVBQTs7MUVBQQorMUVBQztMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgRE9UIEJFTE9XO0x1OzA7TDswMEMyIDAzMjM7Ozs7Tjs7OzsxRUFEOworMUVBRDtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIERPVCBCRUxPVztMbDswO0w7MDBFMiAwMzIzOzs7O047OzsxRUFDOzsxRUFDCisxRUFFO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgQUNVVEU7THU7MDtMOzAxMDIgMDMwMTs7OztOOzs7OzFFQUY7CisxRUFGO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIEFDVVRFO0xsOzA7TDswMTAzIDAzMDE7Ozs7Tjs7OzFFQUU7OzFFQUUKKzFFQjA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBHUkFWRTtMdTswO0w7MDEwMiAwMzAwOzs7O047Ozs7MUVCMTsKKzFFQjE7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgR1JBVkU7TGw7MDtMOzAxMDMgMDMwMDs7OztOOzs7MUVCMDs7MUVCMAorMUVCMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIEhPT0sgQUJPVkU7THU7MDtMOzAxMDIgMDMwOTs7OztOOzs7OzFFQjM7CisxRUIzO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIEhPT0sgQUJPVkU7TGw7MDtMOzAxMDMgMDMwOTs7OztOOzs7MUVCMjs7MUVCMgorMUVCNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIFRJTERFO0x1OzA7TDswMTAyIDAzMDM7Ozs7Tjs7OzsxRUI1OworMUVCNTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBUSUxERTtMbDswO0w7MDEwMyAwMzAzOzs7O047OzsxRUI0OzsxRUI0CisxRUI2O0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgRE9UIEJFTE9XO0x1OzA7TDswMTAyIDAzMjM7Ozs7Tjs7OzsxRUI3OworMUVCNztMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBET1QgQkVMT1c7TGw7MDtMOzAxMDMgMDMyMzs7OztOOzs7MUVCNjs7MUVCNgorMUVCODtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDQ1IDAzMjM7Ozs7Tjs7OzsxRUI5OworMUVCOTtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA2NSAwMzIzOzs7O047OzsxRUI4OzsxRUI4CisxRUJBO0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBIT09LIEFCT1ZFO0x1OzA7TDswMDQ1IDAzMDk7Ozs7Tjs7OzsxRUJCOworMUVCQjtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEhPT0sgQUJPVkU7TGw7MDtMOzAwNjUgMDMwOTs7OztOOzs7MUVCQTs7MUVCQQorMUVCQztMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggVElMREU7THU7MDtMOzAwNDUgMDMwMzs7OztOOzs7OzFFQkQ7CisxRUJEO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggVElMREU7TGw7MDtMOzAwNjUgMDMwMzs7OztOOzs7MUVCQzs7MUVCQworMUVCRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgQUNVVEU7THU7MDtMOzAwQ0EgMDMwMTs7OztOOzs7OzFFQkY7CisxRUJGO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgQUNVVEU7TGw7MDtMOzAwRUEgMDMwMTs7OztOOzs7MUVCRTs7MUVCRQorMUVDMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgR1JBVkU7THU7MDtMOzAwQ0EgMDMwMDs7OztOOzs7OzFFQzE7CisxRUMxO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgR1JBVkU7TGw7MDtMOzAwRUEgMDMwMDs7OztOOzs7MUVDMDs7MUVDMAorMUVDMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgSE9PSyBBQk9WRTtMdTswO0w7MDBDQSAwMzA5Ozs7O047Ozs7MUVDMzsKKzFFQzM7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBIT09LIEFCT1ZFO0xsOzA7TDswMEVBIDAzMDk7Ozs7Tjs7OzFFQzI7OzFFQzIKKzFFQzQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIFRJTERFO0x1OzA7TDswMENBIDAzMDM7Ozs7Tjs7OzsxRUM1OworMUVDNTtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIFRJTERFO0xsOzA7TDswMEVBIDAzMDM7Ozs7Tjs7OzFFQzQ7OzFFQzQKKzFFQzY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIERPVCBCRUxPVztMdTswO0w7MDBDQSAwMzIzOzs7O047Ozs7MUVDNzsKKzFFQzc7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBET1QgQkVMT1c7TGw7MDtMOzAwRUEgMDMyMzs7OztOOzs7MUVDNjs7MUVDNgorMUVDODtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggSE9PSyBBQk9WRTtMdTswO0w7MDA0OSAwMzA5Ozs7O047Ozs7MUVDOTsKKzFFQzk7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBIT09LIEFCT1ZFO0xsOzA7TDswMDY5IDAzMDk7Ozs7Tjs7OzFFQzg7OzFFQzgKKzFFQ0E7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0OSAwMzIzOzs7O047Ozs7MUVDQjsKKzFFQ0I7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNjkgMDMyMzs7OztOOzs7MUVDQTs7MUVDQQorMUVDQztMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDRGIDAzMjM7Ozs7Tjs7OzsxRUNEOworMUVDRDtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA2RiAwMzIzOzs7O047OzsxRUNDOzsxRUNDCisxRUNFO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT09LIEFCT1ZFO0x1OzA7TDswMDRGIDAzMDk7Ozs7Tjs7OzsxRUNGOworMUVDRjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEhPT0sgQUJPVkU7TGw7MDtMOzAwNkYgMDMwOTs7OztOOzs7MUVDRTs7MUVDRQorMUVEMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgQUNVVEU7THU7MDtMOzAwRDQgMDMwMTs7OztOOzs7OzFFRDE7CisxRUQxO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgQUNVVEU7TGw7MDtMOzAwRjQgMDMwMTs7OztOOzs7MUVEMDs7MUVEMAorMUVEMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgR1JBVkU7THU7MDtMOzAwRDQgMDMwMDs7OztOOzs7OzFFRDM7CisxRUQzO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgR1JBVkU7TGw7MDtMOzAwRjQgMDMwMDs7OztOOzs7MUVEMjs7MUVEMgorMUVENDtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgSE9PSyBBQk9WRTtMdTswO0w7MDBENCAwMzA5Ozs7O047Ozs7MUVENTsKKzFFRDU7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBIT09LIEFCT1ZFO0xsOzA7TDswMEY0IDAzMDk7Ozs7Tjs7OzFFRDQ7OzFFRDQKKzFFRDY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIFRJTERFO0x1OzA7TDswMEQ0IDAzMDM7Ozs7Tjs7OzsxRUQ3OworMUVENztMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIFRJTERFO0xsOzA7TDswMEY0IDAzMDM7Ozs7Tjs7OzFFRDY7OzFFRDYKKzFFRDg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIERPVCBCRUxPVztMdTswO0w7MDBENCAwMzIzOzs7O047Ozs7MUVEOTsKKzFFRDk7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBET1QgQkVMT1c7TGw7MDtMOzAwRjQgMDMyMzs7OztOOzs7MUVEODs7MUVEOAorMUVEQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgQUNVVEU7THU7MDtMOzAxQTAgMDMwMTs7OztOOzs7OzFFREI7CisxRURCO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgQUNVVEU7TGw7MDtMOzAxQTEgMDMwMTs7OztOOzs7MUVEQTs7MUVEQQorMUVEQztMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgR1JBVkU7THU7MDtMOzAxQTAgMDMwMDs7OztOOzs7OzFFREQ7CisxRUREO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgR1JBVkU7TGw7MDtMOzAxQTEgMDMwMDs7OztOOzs7MUVEQzs7MUVEQworMUVERTtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgSE9PSyBBQk9WRTtMdTswO0w7MDFBMCAwMzA5Ozs7O047Ozs7MUVERjsKKzFFREY7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBIT09LIEFCT1ZFO0xsOzA7TDswMUExIDAzMDk7Ozs7Tjs7OzFFREU7OzFFREUKKzFFRTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIFRJTERFO0x1OzA7TDswMUEwIDAzMDM7Ozs7Tjs7OzsxRUUxOworMUVFMTtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIFRJTERFO0xsOzA7TDswMUExIDAzMDM7Ozs7Tjs7OzFFRTA7OzFFRTAKKzFFRTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIERPVCBCRUxPVztMdTswO0w7MDFBMCAwMzIzOzs7O047Ozs7MUVFMzsKKzFFRTM7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBET1QgQkVMT1c7TGw7MDtMOzAxQTEgMDMyMzs7OztOOzs7MUVFMjs7MUVFMgorMUVFNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDU1IDAzMjM7Ozs7Tjs7OzsxRUU1OworMUVFNTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA3NSAwMzIzOzs7O047OzsxRUU0OzsxRUU0CisxRUU2O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBIT09LIEFCT1ZFO0x1OzA7TDswMDU1IDAzMDk7Ozs7Tjs7OzsxRUU3OworMUVFNztMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEhPT0sgQUJPVkU7TGw7MDtMOzAwNzUgMDMwOTs7OztOOzs7MUVFNjs7MUVFNgorMUVFODtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgQUNVVEU7THU7MDtMOzAxQUYgMDMwMTs7OztOOzs7OzFFRTk7CisxRUU5O0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgQUNVVEU7TGw7MDtMOzAxQjAgMDMwMTs7OztOOzs7MUVFODs7MUVFOAorMUVFQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgR1JBVkU7THU7MDtMOzAxQUYgMDMwMDs7OztOOzs7OzFFRUI7CisxRUVCO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgR1JBVkU7TGw7MDtMOzAxQjAgMDMwMDs7OztOOzs7MUVFQTs7MUVFQQorMUVFQztMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgSE9PSyBBQk9WRTtMdTswO0w7MDFBRiAwMzA5Ozs7O047Ozs7MUVFRDsKKzFFRUQ7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBIT09LIEFCT1ZFO0xsOzA7TDswMUIwIDAzMDk7Ozs7Tjs7OzFFRUM7OzFFRUMKKzFFRUU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIFRJTERFO0x1OzA7TDswMUFGIDAzMDM7Ozs7Tjs7OzsxRUVGOworMUVFRjtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIFRJTERFO0xsOzA7TDswMUIwIDAzMDM7Ozs7Tjs7OzFFRUU7OzFFRUUKKzFFRjA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIERPVCBCRUxPVztMdTswO0w7MDFBRiAwMzIzOzs7O047Ozs7MUVGMTsKKzFFRjE7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBET1QgQkVMT1c7TGw7MDtMOzAxQjAgMDMyMzs7OztOOzs7MUVGMDs7MUVGMAorMUVGMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggR1JBVkU7THU7MDtMOzAwNTkgMDMwMDs7OztOOzs7OzFFRjM7CisxRUYzO0xBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggR1JBVkU7TGw7MDtMOzAwNzkgMDMwMDs7OztOOzs7MUVGMjs7MUVGMgorMUVGNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDU5IDAzMjM7Ozs7Tjs7OzsxRUY1OworMUVGNTtMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA3OSAwMzIzOzs7O047OzsxRUY0OzsxRUY0CisxRUY2O0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBIT09LIEFCT1ZFO0x1OzA7TDswMDU5IDAzMDk7Ozs7Tjs7OzsxRUY3OworMUVGNztMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEhPT0sgQUJPVkU7TGw7MDtMOzAwNzkgMDMwOTs7OztOOzs7MUVGNjs7MUVGNgorMUVGODtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggVElMREU7THU7MDtMOzAwNTkgMDMwMzs7OztOOzs7OzFFRjk7CisxRUY5O0xBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggVElMREU7TGw7MDtMOzAwNzkgMDMwMzs7OztOOzs7MUVGODs7MUVGOAorMUYwMDtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSTtMbDswO0w7MDNCMSAwMzEzOzs7O047OzsxRjA4OzsxRjA4CisxRjAxO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBO0xsOzA7TDswM0IxIDAzMTQ7Ozs7Tjs7OzFGMDk7OzFGMDkKKzFGMDI7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFZBUklBO0xsOzA7TDsxRjAwIDAzMDA7Ozs7Tjs7OzFGMEE7OzFGMEEKKzFGMDM7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFZBUklBO0xsOzA7TDsxRjAxIDAzMDA7Ozs7Tjs7OzFGMEI7OzFGMEIKKzFGMDQ7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIE9YSUE7TGw7MDtMOzFGMDAgMDMwMTs7OztOOzs7MUYwQzs7MUYwQworMUYwNTtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgT1hJQTtMbDswO0w7MUYwMSAwMzAxOzs7O047OzsxRjBEOzsxRjBECisxRjA2O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtMbDswO0w7MUYwMCAwMzQyOzs7O047OzsxRjBFOzsxRjBFCisxRjA3O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSTtMbDswO0w7MUYwMSAwMzQyOzs7O047OzsxRjBGOzsxRjBGCisxRjA4O0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEk7THU7MDtMOzAzOTEgMDMxMzs7OztOOzs7OzFGMDA7CisxRjA5O0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUE7THU7MDtMOzAzOTEgMDMxNDs7OztOOzs7OzFGMDE7CisxRjBBO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFZBUklBO0x1OzA7TDsxRjA4IDAzMDA7Ozs7Tjs7OzsxRjAyOworMUYwQjtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBWQVJJQTtMdTswO0w7MUYwOSAwMzAwOzs7O047Ozs7MUYwMzsKKzFGMEM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgT1hJQTtMdTswO0w7MUYwOCAwMzAxOzs7O047Ozs7MUYwNDsKKzFGMEQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgT1hJQTtMdTswO0w7MUYwOSAwMzAxOzs7O047Ozs7MUYwNTsKKzFGMEU7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGMDggMDM0Mjs7OztOOzs7OzFGMDY7CisxRjBGO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JO0x1OzA7TDsxRjA5IDAzNDI7Ozs7Tjs7OzsxRjA3OworMUYxMDtHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIFBTSUxJO0xsOzA7TDswM0I1IDAzMTM7Ozs7Tjs7OzFGMTg7OzFGMTgKKzFGMTE7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBEQVNJQTtMbDswO0w7MDNCNSAwMzE0Ozs7O047OzsxRjE5OzsxRjE5CisxRjEyO0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggUFNJTEkgQU5EIFZBUklBO0xsOzA7TDsxRjEwIDAzMDA7Ozs7Tjs7OzFGMUE7OzFGMUEKKzFGMTM7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBEQVNJQSBBTkQgVkFSSUE7TGw7MDtMOzFGMTEgMDMwMDs7OztOOzs7MUYxQjs7MUYxQgorMUYxNDtHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIFBTSUxJIEFORCBPWElBO0xsOzA7TDsxRjEwIDAzMDE7Ozs7Tjs7OzFGMUM7OzFGMUMKKzFGMTU7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBEQVNJQSBBTkQgT1hJQTtMbDswO0w7MUYxMSAwMzAxOzs7O047OzsxRjFEOzsxRjFECisxRjE4O0dSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBQU0lMSTtMdTswO0w7MDM5NSAwMzEzOzs7O047Ozs7MUYxMDsKKzFGMTk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIERBU0lBO0x1OzA7TDswMzk1IDAzMTQ7Ozs7Tjs7OzsxRjExOworMUYxQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggUFNJTEkgQU5EIFZBUklBO0x1OzA7TDsxRjE4IDAzMDA7Ozs7Tjs7OzsxRjEyOworMUYxQjtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUEgQU5EIFZBUklBO0x1OzA7TDsxRjE5IDAzMDA7Ozs7Tjs7OzsxRjEzOworMUYxQztHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggUFNJTEkgQU5EIE9YSUE7THU7MDtMOzFGMTggMDMwMTs7OztOOzs7OzFGMTQ7CisxRjFEO0dSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBEQVNJQSBBTkQgT1hJQTtMdTswO0w7MUYxOSAwMzAxOzs7O047Ozs7MUYxNTsKKzFGMjA7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJO0xsOzA7TDswM0I3IDAzMTM7Ozs7Tjs7OzFGMjg7OzFGMjgKKzFGMjE7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBO0xsOzA7TDswM0I3IDAzMTQ7Ozs7Tjs7OzFGMjk7OzFGMjkKKzFGMjI7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBWQVJJQTtMbDswO0w7MUYyMCAwMzAwOzs7O047OzsxRjJBOzsxRjJBCisxRjIzO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgVkFSSUE7TGw7MDtMOzFGMjEgMDMwMDs7OztOOzs7MUYyQjs7MUYyQgorMUYyNDtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIE9YSUE7TGw7MDtMOzFGMjAgMDMwMTs7OztOOzs7MUYyQzs7MUYyQworMUYyNTtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIE9YSUE7TGw7MDtMOzFGMjEgMDMwMTs7OztOOzs7MUYyRDs7MUYyRAorMUYyNjtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjIwIDAzNDI7Ozs7Tjs7OzFGMkU7OzFGMkUKKzFGMjc7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSTtMbDswO0w7MUYyMSAwMzQyOzs7O047OzsxRjJGOzsxRjJGCisxRjI4O0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJO0x1OzA7TDswMzk3IDAzMTM7Ozs7Tjs7OzsxRjIwOworMUYyOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQTtMdTswO0w7MDM5NyAwMzE0Ozs7O047Ozs7MUYyMTsKKzFGMkE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFZBUklBO0x1OzA7TDsxRjI4IDAzMDA7Ozs7Tjs7OzsxRjIyOworMUYyQjtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgVkFSSUE7THU7MDtMOzFGMjkgMDMwMDs7OztOOzs7OzFGMjM7CisxRjJDO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBPWElBO0x1OzA7TDsxRjI4IDAzMDE7Ozs7Tjs7OzsxRjI0OworMUYyRDtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgT1hJQTtMdTswO0w7MUYyOSAwMzAxOzs7O047Ozs7MUYyNTsKKzFGMkU7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0x1OzA7TDsxRjI4IDAzNDI7Ozs7Tjs7OzsxRjI2OworMUYyRjtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGMjkgMDM0Mjs7OztOOzs7OzFGMjc7CisxRjMwO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggUFNJTEk7TGw7MDtMOzAzQjkgMDMxMzs7OztOOzs7MUYzODs7MUYzOAorMUYzMTtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERBU0lBO0xsOzA7TDswM0I5IDAzMTQ7Ozs7Tjs7OzFGMzk7OzFGMzkKKzFGMzI7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBQU0lMSSBBTkQgVkFSSUE7TGw7MDtMOzFGMzAgMDMwMDs7OztOOzs7MUYzQTs7MUYzQQorMUYzMztHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERBU0lBIEFORCBWQVJJQTtMbDswO0w7MUYzMSAwMzAwOzs7O047OzsxRjNCOzsxRjNCCisxRjM0O0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggUFNJTEkgQU5EIE9YSUE7TGw7MDtMOzFGMzAgMDMwMTs7OztOOzs7MUYzQzs7MUYzQworMUYzNTtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERBU0lBIEFORCBPWElBO0xsOzA7TDsxRjMxIDAzMDE7Ozs7Tjs7OzFGM0Q7OzFGM0QKKzFGMzY7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGMzAgMDM0Mjs7OztOOzs7MUYzRTs7MUYzRQorMUYzNztHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSTtMbDswO0w7MUYzMSAwMzQyOzs7O047OzsxRjNGOzsxRjNGCisxRjM4O0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBQU0lMSTtMdTswO0w7MDM5OSAwMzEzOzs7O047Ozs7MUYzMDsKKzFGMzk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIERBU0lBO0x1OzA7TDswMzk5IDAzMTQ7Ozs7Tjs7OzsxRjMxOworMUYzQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggUFNJTEkgQU5EIFZBUklBO0x1OzA7TDsxRjM4IDAzMDA7Ozs7Tjs7OzsxRjMyOworMUYzQjtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggREFTSUEgQU5EIFZBUklBO0x1OzA7TDsxRjM5IDAzMDA7Ozs7Tjs7OzsxRjMzOworMUYzQztHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggUFNJTEkgQU5EIE9YSUE7THU7MDtMOzFGMzggMDMwMTs7OztOOzs7OzFGMzQ7CisxRjNEO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgT1hJQTtMdTswO0w7MUYzOSAwMzAxOzs7O047Ozs7MUYzNTsKKzFGM0U7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtMdTswO0w7MUYzOCAwMzQyOzs7O047Ozs7MUYzNjsKKzFGM0Y7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSTtMdTswO0w7MUYzOSAwMzQyOzs7O047Ozs7MUYzNzsKKzFGNDA7R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBQU0lMSTtMbDswO0w7MDNCRiAwMzEzOzs7O047OzsxRjQ4OzsxRjQ4CisxRjQxO0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggREFTSUE7TGw7MDtMOzAzQkYgMDMxNDs7OztOOzs7MUY0OTs7MUY0OQorMUY0MjtHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIFBTSUxJIEFORCBWQVJJQTtMbDswO0w7MUY0MCAwMzAwOzs7O047OzsxRjRBOzsxRjRBCisxRjQzO0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggREFTSUEgQU5EIFZBUklBO0xsOzA7TDsxRjQxIDAzMDA7Ozs7Tjs7OzFGNEI7OzFGNEIKKzFGNDQ7R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBQU0lMSSBBTkQgT1hJQTtMbDswO0w7MUY0MCAwMzAxOzs7O047OzsxRjRDOzsxRjRDCisxRjQ1O0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggREFTSUEgQU5EIE9YSUE7TGw7MDtMOzFGNDEgMDMwMTs7OztOOzs7MUY0RDs7MUY0RAorMUY0ODtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggUFNJTEk7THU7MDtMOzAzOUYgMDMxMzs7OztOOzs7OzFGNDA7CisxRjQ5O0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBEQVNJQTtMdTswO0w7MDM5RiAwMzE0Ozs7O047Ozs7MUY0MTsKKzFGNEE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIFBTSUxJIEFORCBWQVJJQTtMdTswO0w7MUY0OCAwMzAwOzs7O047Ozs7MUY0MjsKKzFGNEI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBIEFORCBWQVJJQTtMdTswO0w7MUY0OSAwMzAwOzs7O047Ozs7MUY0MzsKKzFGNEM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIFBTSUxJIEFORCBPWElBO0x1OzA7TDsxRjQ4IDAzMDE7Ozs7Tjs7OzsxRjQ0OworMUY0RDtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGNDkgMDMwMTs7OztOOzs7OzFGNDU7CisxRjUwO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggUFNJTEk7TGw7MDtMOzAzQzUgMDMxMzs7OztOOzs7OzsKKzFGNTE7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBEQVNJQTtMbDswO0w7MDNDNSAwMzE0Ozs7O047OzsxRjU5OzsxRjU5CisxRjUyO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggUFNJTEkgQU5EIFZBUklBO0xsOzA7TDsxRjUwIDAzMDA7Ozs7Tjs7Ozs7CisxRjUzO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIFZBUklBO0xsOzA7TDsxRjUxIDAzMDA7Ozs7Tjs7OzFGNUI7OzFGNUIKKzFGNTQ7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBQU0lMSSBBTkQgT1hJQTtMbDswO0w7MUY1MCAwMzAxOzs7O047Ozs7OworMUY1NTtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERBU0lBIEFORCBPWElBO0xsOzA7TDsxRjUxIDAzMDE7Ozs7Tjs7OzFGNUQ7OzFGNUQKKzFGNTY7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGNTAgMDM0Mjs7OztOOzs7OzsKKzFGNTc7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGNTEgMDM0Mjs7OztOOzs7MUY1Rjs7MUY1RgorMUY1OTtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUE7THU7MDtMOzAzQTUgMDMxNDs7OztOOzs7OzFGNTE7CisxRjVCO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBEQVNJQSBBTkQgVkFSSUE7THU7MDtMOzFGNTkgMDMwMDs7OztOOzs7OzFGNTM7CisxRjVEO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBEQVNJQSBBTkQgT1hJQTtMdTswO0w7MUY1OSAwMzAxOzs7O047Ozs7MUY1NTsKKzFGNUY7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSTtMdTswO0w7MUY1OSAwMzQyOzs7O047Ozs7MUY1NzsKKzFGNjA7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEk7TGw7MDtMOzAzQzkgMDMxMzs7OztOOzs7MUY2ODs7MUY2OAorMUY2MTtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQTtMbDswO0w7MDNDOSAwMzE0Ozs7O047OzsxRjY5OzsxRjY5CisxRjYyO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBWQVJJQTtMbDswO0w7MUY2MCAwMzAwOzs7O047OzsxRjZBOzsxRjZBCisxRjYzO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBWQVJJQTtMbDswO0w7MUY2MSAwMzAwOzs7O047OzsxRjZCOzsxRjZCCisxRjY0O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBPWElBO0xsOzA7TDsxRjYwIDAzMDE7Ozs7Tjs7OzFGNkM7OzFGNkMKKzFGNjU7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIE9YSUE7TGw7MDtMOzFGNjEgMDMwMTs7OztOOzs7MUY2RDs7MUY2RAorMUY2NjtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGNjAgMDM0Mjs7OztOOzs7MUY2RTs7MUY2RQorMUY2NztHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGNjEgMDM0Mjs7OztOOzs7MUY2Rjs7MUY2RgorMUY2ODtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJO0x1OzA7TDswM0E5IDAzMTM7Ozs7Tjs7OzsxRjYwOworMUY2OTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBO0x1OzA7TDswM0E5IDAzMTQ7Ozs7Tjs7OzsxRjYxOworMUY2QTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBWQVJJQTtMdTswO0w7MUY2OCAwMzAwOzs7O047Ozs7MUY2MjsKKzFGNkI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgVkFSSUE7THU7MDtMOzFGNjkgMDMwMDs7OztOOzs7OzFGNjM7CisxRjZDO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIE9YSUE7THU7MDtMOzFGNjggMDMwMTs7OztOOzs7OzFGNjQ7CisxRjZEO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGNjkgMDMwMTs7OztOOzs7OzFGNjU7CisxRjZFO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0x1OzA7TDsxRjY4IDAzNDI7Ozs7Tjs7OzsxRjY2OworMUY2RjtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSTtMdTswO0w7MUY2OSAwMzQyOzs7O047Ozs7MUY2NzsKKzFGNzA7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVkFSSUE7TGw7MDtMOzAzQjEgMDMwMDs7OztOOzs7MUZCQTs7MUZCQQorMUY3MTtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBPWElBO0xsOzA7TDswM0IxIDAzMDE7Ozs7Tjs7OzFGQkI7OzFGQkIKKzFGNzI7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBWQVJJQTtMbDswO0w7MDNCNSAwMzAwOzs7O047OzsxRkM4OzsxRkM4CisxRjczO0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggT1hJQTtMbDswO0w7MDNCNSAwMzAxOzs7O047OzsxRkM5OzsxRkM5CisxRjc0O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBWQVJJQTtMbDswO0w7MDNCNyAwMzAwOzs7O047OzsxRkNBOzsxRkNBCisxRjc1O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBPWElBO0xsOzA7TDswM0I3IDAzMDE7Ozs7Tjs7OzFGQ0I7OzFGQ0IKKzFGNzY7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBWQVJJQTtMbDswO0w7MDNCOSAwMzAwOzs7O047OzsxRkRBOzsxRkRBCisxRjc3O0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggT1hJQTtMbDswO0w7MDNCOSAwMzAxOzs7O047OzsxRkRCOzsxRkRCCisxRjc4O0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggVkFSSUE7TGw7MDtMOzAzQkYgMDMwMDs7OztOOzs7MUZGODs7MUZGOAorMUY3OTtHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIE9YSUE7TGw7MDtMOzAzQkYgMDMwMTs7OztOOzs7MUZGOTs7MUZGOQorMUY3QTtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFZBUklBO0xsOzA7TDswM0M1IDAzMDA7Ozs7Tjs7OzFGRUE7OzFGRUEKKzFGN0I7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBPWElBO0xsOzA7TDswM0M1IDAzMDE7Ozs7Tjs7OzFGRUI7OzFGRUIKKzFGN0M7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggVkFSSUE7TGw7MDtMOzAzQzkgMDMwMDs7OztOOzs7MUZGQTs7MUZGQQorMUY3RDtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBPWElBO0xsOzA7TDswM0M5IDAzMDE7Ozs7Tjs7OzFGRkI7OzFGRkIKKzFGODA7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMDAgMDM0NTs7OztOOzs7MUY4ODs7MUY4OAorMUY4MTtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYwMSAwMzQ1Ozs7O047OzsxRjg5OzsxRjg5CisxRjgyO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYwMiAwMzQ1Ozs7O047OzsxRjhBOzsxRjhBCisxRjgzO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYwMyAwMzQ1Ozs7O047OzsxRjhCOzsxRjhCCisxRjg0O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjA0IDAzNDU7Ozs7Tjs7OzFGOEM7OzFGOEMKKzFGODU7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMDUgMDM0NTs7OztOOzs7MUY4RDs7MUY4RAorMUY4NjtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMDYgMDM0NTs7OztOOzs7MUY4RTs7MUY4RQorMUY4NztHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMDcgMDM0NTs7OztOOzs7MUY4Rjs7MUY4RgorMUY4ODtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUYwOCAwMzQ1Ozs7O047Ozs7MUY4MDsKKzFGODk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGMDkgMDM0NTs7OztOOzs7OzFGODE7CisxRjhBO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUYwQSAwMzQ1Ozs7O047Ozs7MUY4MjsKKzFGOEI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgVkFSSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjBCIDAzNDU7Ozs7Tjs7OzsxRjgzOworMUY4QztHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUYwQyAwMzQ1Ozs7O047Ozs7MUY4NDsKKzFGOEQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGMEQgMDM0NTs7OztOOzs7OzFGODU7CisxRjhFO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUYwRSAwMzQ1Ozs7O047Ozs7MUY4NjsKKzFGOEY7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjBGIDAzNDU7Ozs7Tjs7OzsxRjg3OworMUY5MDtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMjAgMDM0NTs7OztOOzs7MUY5ODs7MUY5OAorMUY5MTtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMjEgMDM0NTs7OztOOzs7MUY5OTs7MUY5OQorMUY5MjtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjIyIDAzNDU7Ozs7Tjs7OzFGOUE7OzFGOUEKKzFGOTM7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYyMyAwMzQ1Ozs7O047OzsxRjlCOzsxRjlCCisxRjk0O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYyNCAwMzQ1Ozs7O047OzsxRjlDOzsxRjlDCisxRjk1O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYyNSAwMzQ1Ozs7O047OzsxRjlEOzsxRjlECisxRjk2O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMjYgMDM0NTs7OztOOzs7MUY5RTs7MUY5RQorMUY5NztHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjI3IDAzNDU7Ozs7Tjs7OzFGOUY7OzFGOUYKKzFGOTg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjI4IDAzNDU7Ozs7Tjs7OzsxRjkwOworMUY5OTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGMjkgMDM0NTs7OztOOzs7OzFGOTE7CisxRjlBO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGMkEgMDM0NTs7OztOOzs7OzFGOTI7CisxRjlCO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGMkIgMDM0NTs7OztOOzs7OzFGOTM7CisxRjlDO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUYyQyAwMzQ1Ozs7O047Ozs7MUY5NDsKKzFGOUQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjJEIDAzNDU7Ozs7Tjs7OzsxRjk1OworMUY5RTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjJFIDAzNDU7Ozs7Tjs7OzsxRjk2OworMUY5RjtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjJGIDAzNDU7Ozs7Tjs7OzsxRjk3OworMUZBMDtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY2MCAwMzQ1Ozs7O047OzsxRkE4OzsxRkE4CisxRkExO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjYxIDAzNDU7Ozs7Tjs7OzFGQTk7OzFGQTkKKzFGQTI7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjYyIDAzNDU7Ozs7Tjs7OzFGQUE7OzFGQUEKKzFGQTM7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjYzIDAzNDU7Ozs7Tjs7OzFGQUI7OzFGQUIKKzFGQTQ7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNjQgMDM0NTs7OztOOzs7MUZBQzs7MUZBQworMUZBNTtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY2NSAwMzQ1Ozs7O047OzsxRkFEOzsxRkFECisxRkE2O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY2NiAwMzQ1Ozs7O047OzsxRkFFOzsxRkFFCisxRkE3O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY2NyAwMzQ1Ozs7O047OzsxRkFGOzsxRkFGCisxRkE4O0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjY4IDAzNDU7Ozs7Tjs7OzsxRkEwOworMUZBOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUY2OSAwMzQ1Ozs7O047Ozs7MUZBMTsKKzFGQUE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgVkFSSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjZBIDAzNDU7Ozs7Tjs7OzsxRkEyOworMUZBQjtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGNkIgMDM0NTs7OztOOzs7OzFGQTM7CisxRkFDO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjZDIDAzNDU7Ozs7Tjs7OzsxRkE0OworMUZBRDtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBPWElBIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUY2RCAwMzQ1Ozs7O047Ozs7MUZBNTsKKzFGQUU7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjZFIDAzNDU7Ozs7Tjs7OzsxRkE2OworMUZBRjtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGNkYgMDM0NTs7OztOOzs7OzFGQTc7CisxRkIwO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFZSQUNIWTtMbDswO0w7MDNCMSAwMzA2Ozs7O047OzsxRkI4OzsxRkI4CisxRkIxO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIE1BQ1JPTjtMbDswO0w7MDNCMSAwMzA0Ozs7O047OzsxRkI5OzsxRkI5CisxRkIyO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjcwIDAzNDU7Ozs7Tjs7Ozs7CisxRkIzO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzAzQjEgMDM0NTs7OztOOzs7MUZCQzs7MUZCQworMUZCNDtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBPWElBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjcxIDAzNDU7Ozs7Tjs7Ozs7CisxRkI2O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBFUklTUE9NRU5JO0xsOzA7TDswM0IxIDAzNDI7Ozs7Tjs7Ozs7CisxRkI3O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRkI2IDAzNDU7Ozs7Tjs7Ozs7CisxRkI4O0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggVlJBQ0hZO0x1OzA7TDswMzkxIDAzMDY7Ozs7Tjs7OzsxRkIwOworMUZCOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIE1BQ1JPTjtMdTswO0w7MDM5MSAwMzA0Ozs7O047Ozs7MUZCMTsKKzFGQkE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBWQVJJQTtMdTswO0w7MDM5MSAwMzAwOzs7O047Ozs7MUY3MDsKKzFGQkI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBPWElBO0x1OzA7TDswMzkxIDAzMDE7Ozs7Tjs7OzsxRjcxOworMUZCQztHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBST1NHRUdSQU1NRU5JO0x1OzA7TDswMzkxIDAzNDU7Ozs7Tjs7OzsxRkIzOworMUZCRDtHUkVFSyBLT1JPTklTO1NrOzA7TDs8Y29tcGF0PiAwMDIwIDAzMTM7Ozs7Tjs7Ozs7CisxRkJFO0dSRUVLIFBST1NHRUdSQU1NRU5JO0x1OzA7TDswM0I5Ozs7O047Ozs7OworMUZCRjtHUkVFSyBQU0lMSTtTazswO0w7PGNvbXBhdD4gMDAyMCAwMzEzOzs7O047Ozs7OworMUZDMDtHUkVFSyBQRVJJU1BPTUVOSTtTazswO0w7PGNvbXBhdD4gMDAyMCAwMzQyOzs7O047Ozs7OworMUZDMTtHUkVFSyBESUFMWVRJS0EgQU5EIFBFUklTUE9NRU5JO1NrOzA7TDswMEE4IDAzNDI7Ozs7Tjs7Ozs7CisxRkMyO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY3NCAwMzQ1Ozs7O047Ozs7OworMUZDMztHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggWVBPR0VHUkFNTUVOSTtMbDswO0w7MDNCNyAwMzQ1Ozs7O047OzsxRkNDOzsxRkNDCisxRkM0O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBPWElBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjc1IDAzNDU7Ozs7Tjs7Ozs7CisxRkM2O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQRVJJU1BPTUVOSTtMbDswO0w7MDNCNyAwMzQyOzs7O047Ozs7OworMUZDNztHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGQzYgMDM0NTs7OztOOzs7OzsKKzFGQzg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIFZBUklBO0x1OzA7TDswMzk1IDAzMDA7Ozs7Tjs7OzsxRjcyOworMUZDOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggT1hJQTtMdTswO0w7MDM5NSAwMzAxOzs7O047Ozs7MUY3MzsKKzFGQ0E7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggVkFSSUE7THU7MDtMOzAzOTcgMDMwMDs7OztOOzs7OzFGNzQ7CisxRkNCO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIE9YSUE7THU7MDtMOzAzOTcgMDMwMTs7OztOOzs7OzFGNzU7CisxRkNDO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBST1NHRUdSQU1NRU5JO0x1OzA7TDswMzk3IDAzNDU7Ozs7Tjs7OzsxRkMzOworMUZDRDtHUkVFSyBQU0lMSSBBTkQgVkFSSUE7U2s7MDtMOzFGQkYgMDMwMDs7OztOOzs7OzsKKzFGQ0U7R1JFRUsgUFNJTEkgQU5EIE9YSUE7U2s7MDtMOzFGQkYgMDMwMTs7OztOOzs7OzsKKzFGQ0Y7R1JFRUsgUFNJTEkgQU5EIFBFUklTUE9NRU5JO1NrOzA7TDsxRkJGIDAzNDI7Ozs7Tjs7Ozs7CisxRkQwO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggVlJBQ0hZO0xsOzA7TDswM0I5IDAzMDY7Ozs7Tjs7OzFGRDg7OzFGRDgKKzFGRDE7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBNQUNST047TGw7MDtMOzAzQjkgMDMwNDs7OztOOzs7MUZEOTs7MUZEOQorMUZEMjtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgVkFSSUE7TGw7MDtMOzAzQ0EgMDMwMDs7OztOOzs7OzsKKzFGRDM7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EgQU5EIE9YSUE7TGw7MDtMOzAzQ0EgMDMwMTs7OztOOzs7OzsKKzFGRDY7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBQRVJJU1BPTUVOSTtMbDswO0w7MDNCOSAwMzQyOzs7O047Ozs7OworMUZENztHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzAzQ0EgMDM0Mjs7OztOOzs7OzsKKzFGRDg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFZSQUNIWTtMdTswO0w7MDM5OSAwMzA2Ozs7O047Ozs7MUZEMDsKKzFGRDk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIE1BQ1JPTjtMdTswO0w7MDM5OSAwMzA0Ozs7O047Ozs7MUZEMTsKKzFGREE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFZBUklBO0x1OzA7TDswMzk5IDAzMDA7Ozs7Tjs7OzsxRjc2OworMUZEQjtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggT1hJQTtMdTswO0w7MDM5OSAwMzAxOzs7O047Ozs7MUY3NzsKKzFGREQ7R1JFRUsgREFTSUEgQU5EIFZBUklBO1NrOzA7TDsxRkZFIDAzMDA7Ozs7Tjs7Ozs7CisxRkRFO0dSRUVLIERBU0lBIEFORCBPWElBO1NrOzA7TDsxRkZFIDAzMDE7Ozs7Tjs7Ozs7CisxRkRGO0dSRUVLIERBU0lBIEFORCBQRVJJU1BPTUVOSTtTazswO0w7MUZGRSAwMzQyOzs7O047Ozs7OworMUZFMDtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFZSQUNIWTtMbDswO0w7MDNDNSAwMzA2Ozs7O047OzsxRkU4OzsxRkU4CisxRkUxO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggTUFDUk9OO0xsOzA7TDswM0M1IDAzMDQ7Ozs7Tjs7OzFGRTk7OzFGRTkKKzFGRTI7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EgQU5EIFZBUklBO0xsOzA7TDswM0NCIDAzMDA7Ozs7Tjs7Ozs7CisxRkUzO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBIEFORCBPWElBO0xsOzA7TDswM0NCIDAzMDE7Ozs7Tjs7Ozs7CisxRkU0O0dSRUVLIFNNQUxMIExFVFRFUiBSSE8gV0lUSCBQU0lMSTtMbDswO0w7MDNDMSAwMzEzOzs7O047Ozs7OworMUZFNTtHUkVFSyBTTUFMTCBMRVRURVIgUkhPIFdJVEggREFTSUE7TGw7MDtMOzAzQzEgMDMxNDs7OztOOzs7MUZFQzs7MUZFQworMUZFNjtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBFUklTUE9NRU5JO0xsOzA7TDswM0M1IDAzNDI7Ozs7Tjs7Ozs7CisxRkU3O0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBIEFORCBQRVJJU1BPTUVOSTtMbDswO0w7MDNDQiAwMzQyOzs7O047Ozs7OworMUZFODtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggVlJBQ0hZO0x1OzA7TDswM0E1IDAzMDY7Ozs7Tjs7OzsxRkUwOworMUZFOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggTUFDUk9OO0x1OzA7TDswM0E1IDAzMDQ7Ozs7Tjs7OzsxRkUxOworMUZFQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggVkFSSUE7THU7MDtMOzAzQTUgMDMwMDs7OztOOzs7OzFGN0E7CisxRkVCO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBPWElBO0x1OzA7TDswM0E1IDAzMDE7Ozs7Tjs7OzsxRjdCOworMUZFQztHUkVFSyBDQVBJVEFMIExFVFRFUiBSSE8gV0lUSCBEQVNJQTtMdTswO0w7MDNBMSAwMzE0Ozs7O047Ozs7MUZFNTsKKzFGRUQ7R1JFRUsgRElBTFlUSUtBIEFORCBWQVJJQTtTazswO0w7MDBBOCAwMzAwOzs7O047Ozs7OworMUZFRTtHUkVFSyBESUFMWVRJS0EgQU5EIE9YSUE7U2s7MDtMOzAwQTggMDMwMTs7OztOOzs7OzsKKzFGRUY7R1JFRUsgVkFSSUE7U2s7MDtMOzAwNjA7Ozs7Tjs7Ozs7CisxRkYyO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjdDIDAzNDU7Ozs7Tjs7Ozs7CisxRkYzO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzAzQzkgMDM0NTs7OztOOzs7MUZGQzs7MUZGQworMUZGNDtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBPWElBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjc5IDAzNDU7Ozs7Tjs7Ozs7CisxRkY2O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBFUklTUE9NRU5JO0xsOzA7TDswM0M5IDAzNDI7Ozs7Tjs7Ozs7CisxRkY3O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRkY2IDAzNDU7Ozs7Tjs7Ozs7CisxRkY4O0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBWQVJJQTtMdTswO0w7MDM5RiAwMzAwOzs7O047Ozs7MUY3ODsKKzFGRjk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIE9YSUE7THU7MDtMOzAzOUYgMDMwMTs7OztOOzs7OzFGNzk7CisxRkZBO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggVkFSSUE7THU7MDtMOzAzQTkgMDMwMDs7OztOOzs7OzFGN0M7CisxRkZCO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggT1hJQTtMdTswO0w7MDNBOSAwMzAxOzs7O047Ozs7MUY3RDsKKzFGRkM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MDNBOSAwMzQ1Ozs7O047Ozs7MUZGMzsKKzFGRkQ7R1JFRUsgT1hJQTtTazswO0w7MDBCNDs7OztOOzs7OzsKKzFGRkU7R1JFRUsgREFTSUE7U2s7MDtMOzxjb21wYXQ+IDAwMjAgMDMxNDs7OztOOzs7OzsKKzIwMDA7RU4gUVVBRDtaczswO1dTOzIwMDI7Ozs7Tjs7Ozs7CisyMDAxO0VNIFFVQUQ7WnM7MDtXUzsyMDAzOzs7O047Ozs7OworMjAwMjtFTiBTUEFDRTtaczswO1dTOzxjb21wYXQ+IDAwMjA7Ozs7Tjs7Ozs7CisyMDAzO0VNIFNQQUNFO1pzOzA7V1M7PGNvbXBhdD4gMDAyMDs7OztOOzs7OzsKKzIwMDQ7VEhSRUUtUEVSLUVNIFNQQUNFO1pzOzA7V1M7PGNvbXBhdD4gMDAyMDs7OztOOzs7OzsKKzIwMDU7Rk9VUi1QRVItRU0gU1BBQ0U7WnM7MDtXUzs8Y29tcGF0PiAwMDIwOzs7O047Ozs7OworMjAwNjtTSVgtUEVSLUVNIFNQQUNFO1pzOzA7V1M7PGNvbXBhdD4gMDAyMDs7OztOOzs7OzsKKzIwMDc7RklHVVJFIFNQQUNFO1pzOzA7Q1M7PG5vQnJlYWs+IDAwMjA7Ozs7Tjs7Ozs7CisyMDA4O1BVTkNUVUFUSU9OIFNQQUNFO1pzOzA7V1M7PGNvbXBhdD4gMDAyMDs7OztOOzs7OzsKKzIwMDk7VEhJTiBTUEFDRTtaczswO1dTOzxjb21wYXQ+IDAwMjA7Ozs7Tjs7Ozs7CisyMDBBO0hBSVIgU1BBQ0U7WnM7MDtXUzs8Y29tcGF0PiAwMDIwOzs7O047Ozs7OworMjAwQjtaRVJPIFdJRFRIIFNQQUNFO1pzOzA7V1M7Ozs7O047Ozs7OworMjAwQztaRVJPIFdJRFRIIE5PTi1KT0lORVI7Q2Y7MDtPTjs7Ozs7Tjs7Ozs7CisyMDBEO1pFUk8gV0lEVEggSk9JTkVSO0NmOzA7T047Ozs7O047Ozs7OworMjAwRTtMRUZULVRPLVJJR0hUIE1BUks7Q2Y7MDtMOzs7OztOOzs7OzsKKzIwMEY7UklHSFQtVE8tTEVGVCBNQVJLO0NmOzA7Ujs7Ozs7Tjs7Ozs7CisyMDEwO0hZUEhFTjtQZDswO09OOzs7OztOOzs7OzsKKzIwMTE7Tk9OLUJSRUFLSU5HIEhZUEhFTjtQZDswO09OOzxub0JyZWFrPiAyMDEwOzs7O047Ozs7OworMjAxMjtGSUdVUkUgREFTSDtQZDswO09OOzs7OztOOzs7OzsKKzIwMTM7RU4gREFTSDtQZDswO09OOzs7OztOOzs7OzsKKzIwMTQ7RU0gREFTSDtQZDswO09OOzs7OztOOzs7OzsKKzIwMTU7SE9SSVpPTlRBTCBCQVI7UGQ7MDtPTjs7Ozs7TjtRVU9UQVRJT04gREFTSDs7OzsKKzIwMTY7RE9VQkxFIFZFUlRJQ0FMIExJTkU7UG87MDtPTjs7Ozs7TjtET1VCTEUgVkVSVElDQUwgQkFSOzs7OworMjAxNztET1VCTEUgTE9XIExJTkU7UG87MDtPTjs8Y29tcGF0PiAwMDIwIDAzMzM7Ozs7TjtTUEFDSU5HIERPVUJMRSBVTkRFUlNDT1JFOzs7OworMjAxODtMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSztQczswO09OOzs7OztOO1NJTkdMRSBUVVJORUQgQ09NTUEgUVVPVEFUSU9OIE1BUks7Ozs7CisyMDE5O1JJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSztQZTswO09OOzs7OztOO1NJTkdMRSBDT01NQSBRVU9UQVRJT04gTUFSSzs7OzsKKzIwMUE7U0lOR0xFIExPVy05IFFVT1RBVElPTiBNQVJLO1BzOzA7T047Ozs7O047TE9XIFNJTkdMRSBDT01NQSBRVU9UQVRJT04gTUFSSzs7OzsKKzIwMUI7U0lOR0xFIEhJR0gtUkVWRVJTRUQtOSBRVU9UQVRJT04gTUFSSztQczswO09OOzs7OztOO1NJTkdMRSBSRVZFUlNFRCBDT01NQSBRVU9UQVRJT04gTUFSSzs7OzsKKzIwMUM7TEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUks7UHM7MDtPTjs7Ozs7TjtET1VCTEUgVFVSTkVEIENPTU1BIFFVT1RBVElPTiBNQVJLOzs7OworMjAxRDtSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUks7UGU7MDtPTjs7Ozs7TjtET1VCTEUgQ09NTUEgUVVPVEFUSU9OIE1BUks7Ozs7CisyMDFFO0RPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSztQczswO09OOzs7OztOO0xPVyBET1VCTEUgQ09NTUEgUVVPVEFUSU9OIE1BUks7Ozs7CisyMDFGO0RPVUJMRSBISUdILVJFVkVSU0VELTkgUVVPVEFUSU9OIE1BUks7UHM7MDtPTjs7Ozs7TjtET1VCTEUgUkVWRVJTRUQgQ09NTUEgUVVPVEFUSU9OIE1BUks7Ozs7CisyMDIwO0RBR0dFUjtQbzswO09OOzs7OztOOzs7OzsKKzIwMjE7RE9VQkxFIERBR0dFUjtQbzswO09OOzs7OztOOzs7OzsKKzIwMjI7QlVMTEVUO1BvOzA7T047Ozs7O047Ozs7OworMjAyMztUUklBTkdVTEFSIEJVTExFVDtQbzswO09OOzs7OztOOzs7OzsKKzIwMjQ7T05FIERPVCBMRUFERVI7UG87MDtPTjs8Y29tcGF0PiAwMDJFOzs7O047Ozs7OworMjAyNTtUV08gRE9UIExFQURFUjtQbzswO09OOzxjb21wYXQ+IDAwMkUgMDAyRTs7OztOOzs7OzsKKzIwMjY7SE9SSVpPTlRBTCBFTExJUFNJUztQbzswO09OOzxjb21wYXQ+IDAwMkUgMDAyRSAwMDJFOzs7O047Ozs7OworMjAyNztIWVBIRU5BVElPTiBQT0lOVDtQbzswO09OOzs7OztOOzs7OzsKKzIwMjg7TElORSBTRVBBUkFUT1I7Wmw7MDtCOzs7OztOOzs7OzsKKzIwMjk7UEFSQUdSQVBIIFNFUEFSQVRPUjtacDswO0I7Ozs7O047Ozs7OworMjAyQTtMRUZULVRPLVJJR0hUIEVNQkVERElORztDZjswO09OOzs7OztOOzs7OzsKKzIwMkI7UklHSFQtVE8tTEVGVCBFTUJFRERJTkc7Q2Y7MDtPTjs7Ozs7Tjs7Ozs7CisyMDJDO1BPUCBESVJFQ1RJT05BTCBGT1JNQVRUSU5HO0NmOzA7T047Ozs7O047Ozs7OworMjAyRDtMRUZULVRPLVJJR0hUIE9WRVJSSURFO0NmOzA7T047Ozs7O047Ozs7OworMjAyRTtSSUdIVC1UTy1MRUZUIE9WRVJSSURFO0NmOzA7T047Ozs7O047Ozs7OworMjAzMDtQRVIgTUlMTEUgU0lHTjtQbzswO0VUOzs7OztOOzs7OzsKKzIwMzE7UEVSIFRFTiBUSE9VU0FORCBTSUdOO1BvOzA7RVQ7Ozs7O047Ozs7OworMjAzMjtQUklNRTtQbzswO0VUOzs7OztOOzs7OzsKKzIwMzM7RE9VQkxFIFBSSU1FO1BvOzA7RVQ7PGNvbXBhdD4gMjAzMiAyMDMyOzs7O047Ozs7OworMjAzNDtUUklQTEUgUFJJTUU7UG87MDtFVDs8Y29tcGF0PiAyMDMyIDIwMzIgMjAzMjs7OztOOzs7OzsKKzIwMzU7UkVWRVJTRUQgUFJJTUU7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDM2O1JFVkVSU0VEIERPVUJMRSBQUklNRTtQbzswO09OOzxjb21wYXQ+IDIwMzUgMjAzNTs7OztOOzs7OzsKKzIwMzc7UkVWRVJTRUQgVFJJUExFIFBSSU1FO1BvOzA7T047PGNvbXBhdD4gMjAzNSAyMDM1IDIwMzU7Ozs7Tjs7Ozs7CisyMDM4O0NBUkVUO1BvOzA7T047Ozs7O047Ozs7OworMjAzOTtTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSztQczswO09OOzs7OztOO0xFRlQgUE9JTlRJTkcgU0lOR0xFIEdVSUxMRU1FVDs7OzsKKzIwM0E7U0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLO1BlOzA7T047Ozs7O047UklHSFQgUE9JTlRJTkcgU0lOR0xFIEdVSUxMRU1FVDs7OzsKKzIwM0I7UkVGRVJFTkNFIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDNDO0RPVUJMRSBFWENMQU1BVElPTiBNQVJLO1BvOzA7T047PGNvbXBhdD4gMDAyMSAwMDIxOzs7O047Ozs7OworMjAzRDtJTlRFUlJPQkFORztQbzswO09OOzs7OztOOzs7OzsKKzIwM0U7T1ZFUkxJTkU7UG87MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDU7Ozs7TjtTUEFDSU5HIE9WRVJTQ09SRTs7OzsKKzIwM0Y7VU5ERVJUSUU7UGM7MDtPTjs7Ozs7Tjs7RW5vdGlrb247OzsKKzIwNDA7Q0hBUkFDVEVSIFRJRTtQYzswO09OOzs7OztOOzs7OzsKKzIwNDE7Q0FSRVQgSU5TRVJUSU9OIFBPSU5UO1BvOzA7T047Ozs7O047Ozs7OworMjA0MjtBU1RFUklTTTtQbzswO09OOzs7OztOOzs7OzsKKzIwNDM7SFlQSEVOIEJVTExFVDtQbzswO09OOzs7OztOOzs7OzsKKzIwNDQ7RlJBQ1RJT04gU0xBU0g7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMDQ1O0xFRlQgU1FVQVJFIEJSQUNLRVQgV0lUSCBRVUlMTDtQczswO09OOzs7OztZOzs7OzsKKzIwNDY7UklHSFQgU1FVQVJFIEJSQUNLRVQgV0lUSCBRVUlMTDtQZTswO09OOzs7OztZOzs7OzsKKzIwNkE7SU5ISUJJVCBTWU1NRVRSSUMgU1dBUFBJTkc7Q2Y7MDtPTjs7Ozs7Tjs7Ozs7CisyMDZCO0FDVElWQVRFIFNZTU1FVFJJQyBTV0FQUElORztDZjswO09OOzs7OztOOzs7OzsKKzIwNkM7SU5ISUJJVCBBUkFCSUMgRk9STSBTSEFQSU5HO0NmOzA7T047Ozs7O047Ozs7OworMjA2RDtBQ1RJVkFURSBBUkFCSUMgRk9STSBTSEFQSU5HO0NmOzA7T047Ozs7O047Ozs7OworMjA2RTtOQVRJT05BTCBESUdJVCBTSEFQRVM7Q2Y7MDtPTjs7Ozs7Tjs7Ozs7CisyMDZGO05PTUlOQUwgRElHSVQgU0hBUEVTO0NmOzA7T047Ozs7O047Ozs7OworMjA3MDtTVVBFUlNDUklQVCBaRVJPO05vOzA7RU47PHN1cGVyPiAwMDMwOzA7MDswO047U1VQRVJTQ1JJUFQgRElHSVQgWkVSTzs7OzsKKzIwNzQ7U1VQRVJTQ1JJUFQgRk9VUjtObzswO0VOOzxzdXBlcj4gMDAzNDs0OzQ7NDtOO1NVUEVSU0NSSVBUIERJR0lUIEZPVVI7Ozs7CisyMDc1O1NVUEVSU0NSSVBUIEZJVkU7Tm87MDtFTjs8c3VwZXI+IDAwMzU7NTs1OzU7TjtTVVBFUlNDUklQVCBESUdJVCBGSVZFOzs7OworMjA3NjtTVVBFUlNDUklQVCBTSVg7Tm87MDtFTjs8c3VwZXI+IDAwMzY7Njs2OzY7TjtTVVBFUlNDUklQVCBESUdJVCBTSVg7Ozs7CisyMDc3O1NVUEVSU0NSSVBUIFNFVkVOO05vOzA7RU47PHN1cGVyPiAwMDM3Ozc7Nzs3O047U1VQRVJTQ1JJUFQgRElHSVQgU0VWRU47Ozs7CisyMDc4O1NVUEVSU0NSSVBUIEVJR0hUO05vOzA7RU47PHN1cGVyPiAwMDM4Ozg7ODs4O047U1VQRVJTQ1JJUFQgRElHSVQgRUlHSFQ7Ozs7CisyMDc5O1NVUEVSU0NSSVBUIE5JTkU7Tm87MDtFTjs8c3VwZXI+IDAwMzk7OTs5Ozk7TjtTVVBFUlNDUklQVCBESUdJVCBOSU5FOzs7OworMjA3QTtTVVBFUlNDUklQVCBQTFVTIFNJR047U207MDtFVDs8c3VwZXI+IDAwMkI7Ozs7Tjs7Ozs7CisyMDdCO1NVUEVSU0NSSVBUIE1JTlVTO1NtOzA7RVQ7PHN1cGVyPiAyMjEyOzs7O047U1VQRVJTQ1JJUFQgSFlQSEVOLU1JTlVTOzs7OworMjA3QztTVVBFUlNDUklQVCBFUVVBTFMgU0lHTjtTbTswO09OOzxzdXBlcj4gMDAzRDs7OztOOzs7OzsKKzIwN0Q7U1VQRVJTQ1JJUFQgTEVGVCBQQVJFTlRIRVNJUztQczswO09OOzxzdXBlcj4gMDAyODs7OztZO1NVUEVSU0NSSVBUIE9QRU5JTkcgUEFSRU5USEVTSVM7Ozs7CisyMDdFO1NVUEVSU0NSSVBUIFJJR0hUIFBBUkVOVEhFU0lTO1BlOzA7T047PHN1cGVyPiAwMDI5Ozs7O1k7U1VQRVJTQ1JJUFQgQ0xPU0lORyBQQVJFTlRIRVNJUzs7OzsKKzIwN0Y7U1VQRVJTQ1JJUFQgTEFUSU4gU01BTEwgTEVUVEVSIE47TGw7MDtPTjs8c3VwZXI+IDAwNkU7Ozs7Tjs7Ozs7CisyMDgwO1NVQlNDUklQVCBaRVJPO05vOzA7RU47PHN1Yj4gMDAzMDswOzA7MDtOO1NVQlNDUklQVCBESUdJVCBaRVJPOzs7OworMjA4MTtTVUJTQ1JJUFQgT05FO05vOzA7RU47PHN1Yj4gMDAzMTsxOzE7MTtOO1NVQlNDUklQVCBESUdJVCBPTkU7Ozs7CisyMDgyO1NVQlNDUklQVCBUV087Tm87MDtFTjs8c3ViPiAwMDMyOzI7MjsyO047U1VCU0NSSVBUIERJR0lUIFRXTzs7OzsKKzIwODM7U1VCU0NSSVBUIFRIUkVFO05vOzA7RU47PHN1Yj4gMDAzMzszOzM7MztOO1NVQlNDUklQVCBESUdJVCBUSFJFRTs7OzsKKzIwODQ7U1VCU0NSSVBUIEZPVVI7Tm87MDtFTjs8c3ViPiAwMDM0OzQ7NDs0O047U1VCU0NSSVBUIERJR0lUIEZPVVI7Ozs7CisyMDg1O1NVQlNDUklQVCBGSVZFO05vOzA7RU47PHN1Yj4gMDAzNTs1OzU7NTtOO1NVQlNDUklQVCBESUdJVCBGSVZFOzs7OworMjA4NjtTVUJTQ1JJUFQgU0lYO05vOzA7RU47PHN1Yj4gMDAzNjs2OzY7NjtOO1NVQlNDUklQVCBESUdJVCBTSVg7Ozs7CisyMDg3O1NVQlNDUklQVCBTRVZFTjtObzswO0VOOzxzdWI+IDAwMzc7Nzs3Ozc7TjtTVUJTQ1JJUFQgRElHSVQgU0VWRU47Ozs7CisyMDg4O1NVQlNDUklQVCBFSUdIVDtObzswO0VOOzxzdWI+IDAwMzg7ODs4Ozg7TjtTVUJTQ1JJUFQgRElHSVQgRUlHSFQ7Ozs7CisyMDg5O1NVQlNDUklQVCBOSU5FO05vOzA7RU47PHN1Yj4gMDAzOTs5Ozk7OTtOO1NVQlNDUklQVCBESUdJVCBOSU5FOzs7OworMjA4QTtTVUJTQ1JJUFQgUExVUyBTSUdOO1NtOzA7RVQ7PHN1Yj4gMDAyQjs7OztOOzs7OzsKKzIwOEI7U1VCU0NSSVBUIE1JTlVTO1NtOzA7RVQ7PHN1Yj4gMjIxMjs7OztOO1NVQlNDUklQVCBIWVBIRU4tTUlOVVM7Ozs7CisyMDhDO1NVQlNDUklQVCBFUVVBTFMgU0lHTjtTbTswO09OOzxzdWI+IDAwM0Q7Ozs7Tjs7Ozs7CisyMDhEO1NVQlNDUklQVCBMRUZUIFBBUkVOVEhFU0lTO1BzOzA7T047PHN1Yj4gMDAyODs7OztZO1NVQlNDUklQVCBPUEVOSU5HIFBBUkVOVEhFU0lTOzs7OworMjA4RTtTVUJTQ1JJUFQgUklHSFQgUEFSRU5USEVTSVM7UGU7MDtPTjs8c3ViPiAwMDI5Ozs7O1k7U1VCU0NSSVBUIENMT1NJTkcgUEFSRU5USEVTSVM7Ozs7CisyMEEwO0VVUk8tQ1VSUkVOQ1kgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQTE7Q09MT04gU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQTI7Q1JVWkVJUk8gU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQTM7RlJFTkNIIEZSQU5DIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEE0O0xJUkEgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQTU7TUlMTCBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBNjtOQUlSQSBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBNztQRVNFVEEgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQTg7UlVQRUUgU0lHTjtTYzswO0VUOzxjb21wYXQ+IDAwNTIgMDA3Mzs7OztOOzs7OzsKKzIwQTk7V09OIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEFBO05FVyBTSEVRRUwgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQUI7RE9ORyBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBQztFVVJPIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEQwO0NPTUJJTklORyBMRUZUIEhBUlBPT04gQUJPVkU7TW47MjMwO0w7Ozs7O047Tk9OLVNQQUNJTkcgTEVGVCBIQVJQT09OIEFCT1ZFOzs7OworMjBEMTtDT01CSU5JTkcgUklHSFQgSEFSUE9PTiBBQk9WRTtNbjsyMzA7TDs7Ozs7TjtOT04tU1BBQ0lORyBSSUdIVCBIQVJQT09OIEFCT1ZFOzs7OworMjBEMjtDT01CSU5JTkcgTE9ORyBWRVJUSUNBTCBMSU5FIE9WRVJMQVk7TW47MTtMOzs7OztOO05PTi1TUEFDSU5HIExPTkcgVkVSVElDQUwgQkFSIE9WRVJMQVk7Ozs7CisyMEQzO0NPTUJJTklORyBTSE9SVCBWRVJUSUNBTCBMSU5FIE9WRVJMQVk7TW47MTtMOzs7OztOO05PTi1TUEFDSU5HIFNIT1JUIFZFUlRJQ0FMIEJBUiBPVkVSTEFZOzs7OworMjBENDtDT01CSU5JTkcgQU5USUNMT0NLV0lTRSBBUlJPVyBBQk9WRTtNbjsyMzA7TDs7Ozs7TjtOT04tU1BBQ0lORyBBTlRJQ0xPQ0tXSVNFIEFSUk9XIEFCT1ZFOzs7OworMjBENTtDT01CSU5JTkcgQ0xPQ0tXSVNFIEFSUk9XIEFCT1ZFO01uOzIzMDtMOzs7OztOO05PTi1TUEFDSU5HIENMT0NLV0lTRSBBUlJPVyBBQk9WRTs7OzsKKzIwRDY7Q09NQklOSU5HIExFRlQgQVJST1cgQUJPVkU7TW47MjMwO0w7Ozs7O047Tk9OLVNQQUNJTkcgTEVGVCBBUlJPVyBBQk9WRTs7OzsKKzIwRDc7Q09NQklOSU5HIFJJR0hUIEFSUk9XIEFCT1ZFO01uOzIzMDtMOzs7OztOO05PTi1TUEFDSU5HIFJJR0hUIEFSUk9XIEFCT1ZFOzs7OworMjBEODtDT01CSU5JTkcgUklORyBPVkVSTEFZO01uOzE7TDs7Ozs7TjtOT04tU1BBQ0lORyBSSU5HIE9WRVJMQVk7Ozs7CisyMEQ5O0NPTUJJTklORyBDTE9DS1dJU0UgUklORyBPVkVSTEFZO01uOzE7TDs7Ozs7TjtOT04tU1BBQ0lORyBDTE9DS1dJU0UgUklORyBPVkVSTEFZOzs7OworMjBEQTtDT01CSU5JTkcgQU5USUNMT0NLV0lTRSBSSU5HIE9WRVJMQVk7TW47MTtMOzs7OztOO05PTi1TUEFDSU5HIEFOVElDTE9DS1dJU0UgUklORyBPVkVSTEFZOzs7OworMjBEQjtDT01CSU5JTkcgVEhSRUUgRE9UUyBBQk9WRTtNbjsyMzA7TDs7Ozs7TjtOT04tU1BBQ0lORyBUSFJFRSBET1RTIEFCT1ZFOzs7OworMjBEQztDT01CSU5JTkcgRk9VUiBET1RTIEFCT1ZFO01uOzIzMDtMOzs7OztOO05PTi1TUEFDSU5HIEZPVVIgRE9UUyBBQk9WRTs7OzsKKzIwREQ7Q09NQklOSU5HIEVOQ0xPU0lORyBDSVJDTEU7TWU7MDtMOzs7OztOO0VOQ0xPU0lORyBDSVJDTEU7Ozs7CisyMERFO0NPTUJJTklORyBFTkNMT1NJTkcgU1FVQVJFO01lOzA7TDs7Ozs7TjtFTkNMT1NJTkcgU1FVQVJFOzs7OworMjBERjtDT01CSU5JTkcgRU5DTE9TSU5HIERJQU1PTkQ7TWU7MDtMOzs7OztOO0VOQ0xPU0lORyBESUFNT05EOzs7OworMjBFMDtDT01CSU5JTkcgRU5DTE9TSU5HIENJUkNMRSBCQUNLU0xBU0g7TWU7MDtMOzs7OztOO0VOQ0xPU0lORyBDSVJDTEUgU0xBU0g7Ozs7CisyMEUxO0NPTUJJTklORyBMRUZUIFJJR0hUIEFSUk9XIEFCT1ZFO01uOzE7TDs7Ozs7TjtOT04tU1BBQ0lORyBMRUZUIFJJR0hUIEFSUk9XIEFCT1ZFOzs7OworMjEwMDtBQ0NPVU5UIE9GO1NvOzA7T047Ozs7O047Ozs7OworMjEwMTtBRERSRVNTRUQgVE8gVEhFIFNVQkpFQ1Q7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTAyO0RPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBDO0x1OzA7T047PGZvbnQ+IDAwNDM7Ozs7TjtET1VCTEUtU1RSVUNLIEM7Ozs7CisyMTAzO0RFR1JFRSBDRUxTSVVTO1NvOzA7T047PGNvbXBhdD4gMDBCMCAwMDQzOzs7O047REVHUkVFUyBDRU5USUdSQURFOzs7OworMjEwNDtDRU5UUkUgTElORSBTWU1CT0w7U287MDtPTjs7Ozs7TjtDIEwgU1lNQk9MOzs7OworMjEwNTtDQVJFIE9GO1NvOzA7T047Ozs7O047Ozs7OworMjEwNjtDQURBIFVOQTtTbzswO09OOzs7OztOOzs7OzsKKzIxMDc7RVVMRVIgQ09OU1RBTlQ7THU7MDtPTjs8Y29tcGF0PiAwMTkwOzs7O047RVVMRVJTOzs7OworMjEwODtTQ1JVUExFO1NvOzA7T047Ozs7O047Ozs7OworMjEwOTtERUdSRUUgRkFIUkVOSEVJVDtTbzswO09OOzxjb21wYXQ+IDAwQjAgMDA0Njs7OztOO0RFR1JFRVMgRkFIUkVOSEVJVDs7OzsKKzIxMEE7U0NSSVBUIFNNQUxMIEc7TGw7MDtPTjs8Zm9udD4gMDA2Nzs7OztOOzs7OzsKKzIxMEI7U0NSSVBUIENBUElUQUwgSDtMdTswO09OOzxmb250PiAwMDQ4Ozs7O047U0NSSVBUIEg7Ozs7CisyMTBDO0JMQUNLLUxFVFRFUiBDQVBJVEFMIEg7THU7MDtPTjs8Zm9udD4gMDA0ODs7OztOO0JMQUNLLUxFVFRFUiBIOzs7OworMjEwRDtET1VCTEUtU1RSVUNLIENBUElUQUwgSDtMdTswO09OOzxmb250PiAwMDQ4Ozs7O047RE9VQkxFLVNUUlVDSyBIOzs7OworMjEwRTtQTEFOQ0sgQ09OU1RBTlQ7TGw7MDtPTjs8Zm9udD4gMDA2ODs7OztOOzs7OzsKKzIxMEY7UExBTkNLIENPTlNUQU5UIE9WRVIgVFdPIFBJO0xsOzA7T047PGZvbnQ+IDAxMjc7Ozs7TjtQTEFOQ0sgQ09OU1RBTlQgT1ZFUiAyIFBJOzs7OworMjExMDtTQ1JJUFQgQ0FQSVRBTCBJO0x1OzA7T047PGZvbnQ+IDAwNDk7Ozs7TjtTQ1JJUFQgSTs7OzsKKzIxMTE7QkxBQ0stTEVUVEVSIENBUElUQUwgSTtMdTswO09OOzxmb250PiAwMDQ5Ozs7O047QkxBQ0stTEVUVEVSIEk7Ozs7CisyMTEyO1NDUklQVCBDQVBJVEFMIEw7THU7MDtPTjs8Zm9udD4gMDA0Qzs7OztOO1NDUklQVCBMOzs7OworMjExMztTQ1JJUFQgU01BTEwgTDtMbDswO09OOzxmb250PiAwMDZDOzs7O047Ozs7OworMjExNDtMIEIgQkFSIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIxMTU7RE9VQkxFLVNUUlVDSyBDQVBJVEFMIE47THU7MDtPTjs8Zm9udD4gMDA0RTs7OztOO0RPVUJMRS1TVFJVQ0sgTjs7OzsKKzIxMTY7TlVNRVJPIFNJR047U287MDtPTjs8Y29tcGF0PiAwMDRFIDAwNkY7Ozs7TjtOVU1FUk87Ozs7CisyMTE3O1NPVU5EIFJFQ09SRElORyBDT1BZUklHSFQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTE4O1NDUklQVCBDQVBJVEFMIFA7THU7MDtPTjs8Zm9udD4gMDA1MDs7OztOO1NDUklQVCBQOzs7OworMjExOTtET1VCTEUtU1RSVUNLIENBUElUQUwgUDtMdTswO09OOzxmb250PiAwMDUwOzs7O047RE9VQkxFLVNUUlVDSyBQOzs7OworMjExQTtET1VCTEUtU1RSVUNLIENBUElUQUwgUTtMdTswO09OOzxmb250PiAwMDUxOzs7O047RE9VQkxFLVNUUlVDSyBROzs7OworMjExQjtTQ1JJUFQgQ0FQSVRBTCBSO0x1OzA7T047PGZvbnQ+IDAwNTI7Ozs7TjtTQ1JJUFQgUjs7OzsKKzIxMUM7QkxBQ0stTEVUVEVSIENBUElUQUwgUjtMdTswO09OOzxmb250PiAwMDUyOzs7O047QkxBQ0stTEVUVEVSIFI7Ozs7CisyMTFEO0RPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBSO0x1OzA7T047PGZvbnQ+IDAwNTI7Ozs7TjtET1VCTEUtU1RSVUNLIFI7Ozs7CisyMTFFO1BSRVNDUklQVElPTiBUQUtFO1NvOzA7T047Ozs7O047Ozs7OworMjExRjtSRVNQT05TRTtTbzswO09OOzs7OztOOzs7OzsKKzIxMjA7U0VSVklDRSBNQVJLO1NvOzA7T047PHN1cGVyPiAwMDUzIDAwNEQ7Ozs7Tjs7Ozs7CisyMTIxO1RFTEVQSE9ORSBTSUdOO1NvOzA7T047PHN1cGVyPiAwMDU0IDAwNDUgMDA0Qzs7OztOO1QgRSBMIFNZTUJPTDs7OzsKKzIxMjI7VFJBREUgTUFSSyBTSUdOO1NvOzA7T047PHN1cGVyPiAwMDU0IDAwNEQ7Ozs7TjtUUkFERU1BUks7Ozs7CisyMTIzO1ZFUlNJQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjEyNDtET1VCTEUtU1RSVUNLIENBUElUQUwgWjtMdTswO09OOzxmb250PiAwMDVBOzs7O047RE9VQkxFLVNUUlVDSyBaOzs7OworMjEyNTtPVU5DRSBTSUdOO1NvOzA7T047Ozs7O047T1VOQ0U7Ozs7CisyMTI2O09ITSBTSUdOO0x1OzA7T047MDNBOTs7OztOO09ITTs7OzsKKzIxMjc7SU5WRVJURUQgT0hNIFNJR047U287MDtPTjs7Ozs7TjtNSE87Ozs7CisyMTI4O0JMQUNLLUxFVFRFUiBDQVBJVEFMIFo7THU7MDtPTjs8Zm9udD4gMDA1QTs7OztOO0JMQUNLLUxFVFRFUiBaOzs7OworMjEyOTtUVVJORUQgR1JFRUsgU01BTEwgTEVUVEVSIElPVEE7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTJBO0tFTFZJTiBTSUdOO0x1OzA7T047MDA0Qjs7OztOO0RFR1JFRVMgS0VMVklOOzs7OworMjEyQjtBTkdTVFJPTSBTSUdOO0x1OzA7T047MDBDNTs7OztOO0FOR1NUUk9NIFVOSVQ7Ozs7CisyMTJDO1NDUklQVCBDQVBJVEFMIEI7THU7MDtPTjs8Zm9udD4gMDA0Mjs7OztOO1NDUklQVCBCOzs7OworMjEyRDtCTEFDSy1MRVRURVIgQ0FQSVRBTCBDO0x1OzA7T047PGZvbnQ+IDAwNDM7Ozs7TjtCTEFDSy1MRVRURVIgQzs7OzsKKzIxMkU7RVNUSU1BVEVEIFNZTUJPTDtMbDswO09OOzs7OztOOzs7OzsKKzIxMkY7U0NSSVBUIFNNQUxMIEU7TGw7MDtPTjs8Zm9udD4gMDA2NTs7OztOOzs7OzsKKzIxMzA7U0NSSVBUIENBUElUQUwgRTtMdTswO09OOzxmb250PiAwMDQ1Ozs7O047U0NSSVBUIEU7Ozs7CisyMTMxO1NDUklQVCBDQVBJVEFMIEY7THU7MDtPTjs8Zm9udD4gMDA0Njs7OztOO1NDUklQVCBGOzs7OworMjEzMjtUVVJORUQgQ0FQSVRBTCBGO1NvOzA7T047Ozs7O047VFVSTkVEIEY7Ozs7CisyMTMzO1NDUklQVCBDQVBJVEFMIE07THU7MDtPTjs8Zm9udD4gMDA0RDs7OztOO1NDUklQVCBNOzs7OworMjEzNDtTQ1JJUFQgU01BTEwgTztMbDswO09OOzxmb250PiAwMDZGOzs7O047Ozs7OworMjEzNTtBTEVGIFNZTUJPTDtMbzswO09OOzxjb21wYXQ+IDA1RDA7Ozs7TjtGSVJTVCBUUkFOU0ZJTklURSBDQVJESU5BTDs7OzsKKzIxMzY7QkVUIFNZTUJPTDtMbzswO09OOzxjb21wYXQ+IDA1RDE7Ozs7TjtTRUNPTkQgVFJBTlNGSU5JVEUgQ0FSRElOQUw7Ozs7CisyMTM3O0dJTUVMIFNZTUJPTDtMbzswO09OOzxjb21wYXQ+IDA1RDI7Ozs7TjtUSElSRCBUUkFOU0ZJTklURSBDQVJESU5BTDs7OzsKKzIxMzg7REFMRVQgU1lNQk9MO0xvOzA7T047PGNvbXBhdD4gMDVEMzs7OztOO0ZPVVJUSCBUUkFOU0ZJTklURSBDQVJESU5BTDs7OzsKKzIxNTM7VlVMR0FSIEZSQUNUSU9OIE9ORSBUSElSRDtObzswO09OOzxmcmFjdGlvbj4gMDAzMSAyMDQ0IDAwMzM7OzsxLzM7TjtGUkFDVElPTiBPTkUgVEhJUkQ7Ozs7CisyMTU0O1ZVTEdBUiBGUkFDVElPTiBUV08gVEhJUkRTO05vOzA7T047PGZyYWN0aW9uPiAwMDMyIDIwNDQgMDAzMzs7OzIvMztOO0ZSQUNUSU9OIFRXTyBUSElSRFM7Ozs7CisyMTU1O1ZVTEdBUiBGUkFDVElPTiBPTkUgRklGVEg7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzEgMjA0NCAwMDM1Ozs7MS81O047RlJBQ1RJT04gT05FIEZJRlRIOzs7OworMjE1NjtWVUxHQVIgRlJBQ1RJT04gVFdPIEZJRlRIUztObzswO09OOzxmcmFjdGlvbj4gMDAzMiAyMDQ0IDAwMzU7OzsyLzU7TjtGUkFDVElPTiBUV08gRklGVEhTOzs7OworMjE1NztWVUxHQVIgRlJBQ1RJT04gVEhSRUUgRklGVEhTO05vOzA7T047PGZyYWN0aW9uPiAwMDMzIDIwNDQgMDAzNTs7OzMvNTtOO0ZSQUNUSU9OIFRIUkVFIEZJRlRIUzs7OzsKKzIxNTg7VlVMR0FSIEZSQUNUSU9OIEZPVVIgRklGVEhTO05vOzA7T047PGZyYWN0aW9uPiAwMDM0IDIwNDQgMDAzNTs7OzQvNTtOO0ZSQUNUSU9OIEZPVVIgRklGVEhTOzs7OworMjE1OTtWVUxHQVIgRlJBQ1RJT04gT05FIFNJWFRIO05vOzA7T047PGZyYWN0aW9uPiAwMDMxIDIwNDQgMDAzNjs7OzEvNjtOO0ZSQUNUSU9OIE9ORSBTSVhUSDs7OzsKKzIxNUE7VlVMR0FSIEZSQUNUSU9OIEZJVkUgU0lYVEhTO05vOzA7T047PGZyYWN0aW9uPiAwMDM1IDIwNDQgMDAzNjs7OzUvNjtOO0ZSQUNUSU9OIEZJVkUgU0lYVEhTOzs7OworMjE1QjtWVUxHQVIgRlJBQ1RJT04gT05FIEVJR0hUSDtObzswO09OOzxmcmFjdGlvbj4gMDAzMSAyMDQ0IDAwMzg7OzsxLzg7TjtGUkFDVElPTiBPTkUgRUlHSFRIOzs7OworMjE1QztWVUxHQVIgRlJBQ1RJT04gVEhSRUUgRUlHSFRIUztObzswO09OOzxmcmFjdGlvbj4gMDAzMyAyMDQ0IDAwMzg7OzszLzg7TjtGUkFDVElPTiBUSFJFRSBFSUdIVEhTOzs7OworMjE1RDtWVUxHQVIgRlJBQ1RJT04gRklWRSBFSUdIVEhTO05vOzA7T047PGZyYWN0aW9uPiAwMDM1IDIwNDQgMDAzODs7OzUvODtOO0ZSQUNUSU9OIEZJVkUgRUlHSFRIUzs7OzsKKzIxNUU7VlVMR0FSIEZSQUNUSU9OIFNFVkVOIEVJR0hUSFM7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzcgMjA0NCAwMDM4Ozs7Ny84O047RlJBQ1RJT04gU0VWRU4gRUlHSFRIUzs7OzsKKzIxNUY7RlJBQ1RJT04gTlVNRVJBVE9SIE9ORTtObzswO09OOzxmcmFjdGlvbj4gMDAzMSAyMDQ0Ozs7MTtOOzs7OzsKKzIxNjA7Uk9NQU4gTlVNRVJBTCBPTkU7Tmw7MDtMOzxjb21wYXQ+IDAwNDk7OzsxO047Ozs7MjE3MDsKKzIxNjE7Uk9NQU4gTlVNRVJBTCBUV087Tmw7MDtMOzxjb21wYXQ+IDAwNDkgMDA0OTs7OzI7Tjs7OzsyMTcxOworMjE2MjtST01BTiBOVU1FUkFMIFRIUkVFO05sOzA7TDs8Y29tcGF0PiAwMDQ5IDAwNDkgMDA0OTs7OzM7Tjs7OzsyMTcyOworMjE2MztST01BTiBOVU1FUkFMIEZPVVI7Tmw7MDtMOzxjb21wYXQ+IDAwNDkgMDA1Njs7OzQ7Tjs7OzsyMTczOworMjE2NDtST01BTiBOVU1FUkFMIEZJVkU7Tmw7MDtMOzxjb21wYXQ+IDAwNTY7Ozs1O047Ozs7MjE3NDsKKzIxNjU7Uk9NQU4gTlVNRVJBTCBTSVg7Tmw7MDtMOzxjb21wYXQ+IDAwNTYgMDA0OTs7OzY7Tjs7OzsyMTc1OworMjE2NjtST01BTiBOVU1FUkFMIFNFVkVOO05sOzA7TDs8Y29tcGF0PiAwMDU2IDAwNDkgMDA0OTs7Ozc7Tjs7OzsyMTc2OworMjE2NztST01BTiBOVU1FUkFMIEVJR0hUO05sOzA7TDs8Y29tcGF0PiAwMDU2IDAwNDkgMDA0OSAwMDQ5Ozs7ODtOOzs7OzIxNzc7CisyMTY4O1JPTUFOIE5VTUVSQUwgTklORTtObDswO0w7PGNvbXBhdD4gMDA0OSAwMDU4Ozs7OTtOOzs7OzIxNzg7CisyMTY5O1JPTUFOIE5VTUVSQUwgVEVOO05sOzA7TDs8Y29tcGF0PiAwMDU4Ozs7MTA7Tjs7OzsyMTc5OworMjE2QTtST01BTiBOVU1FUkFMIEVMRVZFTjtObDswO0w7PGNvbXBhdD4gMDA1OCAwMDQ5Ozs7MTE7Tjs7OzsyMTdBOworMjE2QjtST01BTiBOVU1FUkFMIFRXRUxWRTtObDswO0w7PGNvbXBhdD4gMDA1OCAwMDQ5IDAwNDk7OzsxMjtOOzs7OzIxN0I7CisyMTZDO1JPTUFOIE5VTUVSQUwgRklGVFk7Tmw7MDtMOzxjb21wYXQ+IDAwNEM7Ozs1MDtOOzs7OzIxN0M7CisyMTZEO1JPTUFOIE5VTUVSQUwgT05FIEhVTkRSRUQ7Tmw7MDtMOzxjb21wYXQ+IDAwNDM7OzsxMDA7Tjs7OzsyMTdEOworMjE2RTtST01BTiBOVU1FUkFMIEZJVkUgSFVORFJFRDtObDswO0w7PGNvbXBhdD4gMDA0NDs7OzUwMDtOOzs7OzIxN0U7CisyMTZGO1JPTUFOIE5VTUVSQUwgT05FIFRIT1VTQU5EO05sOzA7TDs8Y29tcGF0PiAwMDREOzs7MTAwMDtOOzs7OzIxN0Y7CisyMTcwO1NNQUxMIFJPTUFOIE5VTUVSQUwgT05FO05sOzA7TDs8Y29tcGF0PiAwMDY5Ozs7MTtOOzs7MjE2MDs7MjE2MAorMjE3MTtTTUFMTCBST01BTiBOVU1FUkFMIFRXTztObDswO0w7PGNvbXBhdD4gMDA2OSAwMDY5Ozs7MjtOOzs7MjE2MTs7MjE2MQorMjE3MjtTTUFMTCBST01BTiBOVU1FUkFMIFRIUkVFO05sOzA7TDs8Y29tcGF0PiAwMDY5IDAwNjkgMDA2OTs7OzM7Tjs7OzIxNjI7OzIxNjIKKzIxNzM7U01BTEwgUk9NQU4gTlVNRVJBTCBGT1VSO05sOzA7TDs8Y29tcGF0PiAwMDY5IDAwNzY7Ozs0O047OzsyMTYzOzsyMTYzCisyMTc0O1NNQUxMIFJPTUFOIE5VTUVSQUwgRklWRTtObDswO0w7PGNvbXBhdD4gMDA3Njs7OzU7Tjs7OzIxNjQ7OzIxNjQKKzIxNzU7U01BTEwgUk9NQU4gTlVNRVJBTCBTSVg7Tmw7MDtMOzxjb21wYXQ+IDAwNzYgMDA2OTs7OzY7Tjs7OzIxNjU7OzIxNjUKKzIxNzY7U01BTEwgUk9NQU4gTlVNRVJBTCBTRVZFTjtObDswO0w7PGNvbXBhdD4gMDA3NiAwMDY5IDAwNjk7Ozs3O047OzsyMTY2OzsyMTY2CisyMTc3O1NNQUxMIFJPTUFOIE5VTUVSQUwgRUlHSFQ7Tmw7MDtMOzxjb21wYXQ+IDAwNzYgMDA2OSAwMDY5IDAwNjk7Ozs4O047OzsyMTY3OzsyMTY3CisyMTc4O1NNQUxMIFJPTUFOIE5VTUVSQUwgTklORTtObDswO0w7PGNvbXBhdD4gMDA2OSAwMDc4Ozs7OTtOOzs7MjE2ODs7MjE2OAorMjE3OTtTTUFMTCBST01BTiBOVU1FUkFMIFRFTjtObDswO0w7PGNvbXBhdD4gMDA3ODs7OzEwO047OzsyMTY5OzsyMTY5CisyMTdBO1NNQUxMIFJPTUFOIE5VTUVSQUwgRUxFVkVOO05sOzA7TDs8Y29tcGF0PiAwMDc4IDAwNjk7OzsxMTtOOzs7MjE2QTs7MjE2QQorMjE3QjtTTUFMTCBST01BTiBOVU1FUkFMIFRXRUxWRTtObDswO0w7PGNvbXBhdD4gMDA3OCAwMDY5IDAwNjk7OzsxMjtOOzs7MjE2Qjs7MjE2QgorMjE3QztTTUFMTCBST01BTiBOVU1FUkFMIEZJRlRZO05sOzA7TDs8Y29tcGF0PiAwMDZDOzs7NTA7Tjs7OzIxNkM7OzIxNkMKKzIxN0Q7U01BTEwgUk9NQU4gTlVNRVJBTCBPTkUgSFVORFJFRDtObDswO0w7PGNvbXBhdD4gMDA2Mzs7OzEwMDtOOzs7MjE2RDs7MjE2RAorMjE3RTtTTUFMTCBST01BTiBOVU1FUkFMIEZJVkUgSFVORFJFRDtObDswO0w7PGNvbXBhdD4gMDA2NDs7OzUwMDtOOzs7MjE2RTs7MjE2RQorMjE3RjtTTUFMTCBST01BTiBOVU1FUkFMIE9ORSBUSE9VU0FORDtObDswO0w7PGNvbXBhdD4gMDA2RDs7OzEwMDA7Tjs7OzIxNkY7OzIxNkYKKzIxODA7Uk9NQU4gTlVNRVJBTCBPTkUgVEhPVVNBTkQgQyBEO05sOzA7TDs7OzsxMDAwO047Ozs7OworMjE4MTtST01BTiBOVU1FUkFMIEZJVkUgVEhPVVNBTkQ7Tmw7MDtMOzs7OzUwMDA7Tjs7Ozs7CisyMTgyO1JPTUFOIE5VTUVSQUwgVEVOIFRIT1VTQU5EO05sOzA7TDs7OzsxMDAwMDtOOzs7OzsKKzIxOTA7TEVGVFdBUkRTIEFSUk9XO1NtOzA7T047Ozs7O047TEVGVCBBUlJPVzs7OzsKKzIxOTE7VVBXQVJEUyBBUlJPVztTbTswO09OOzs7OztOO1VQIEFSUk9XOzs7OworMjE5MjtSSUdIVFdBUkRTIEFSUk9XO1NtOzA7T047Ozs7O047UklHSFQgQVJST1c7Ozs7CisyMTkzO0RPV05XQVJEUyBBUlJPVztTbTswO09OOzs7OztOO0RPV04gQVJST1c7Ozs7CisyMTk0O0xFRlQgUklHSFQgQVJST1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMTk1O1VQIERPV04gQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTk2O05PUlRIIFdFU1QgQVJST1c7U287MDtPTjs7Ozs7TjtVUFBFUiBMRUZUIEFSUk9XOzs7OworMjE5NztOT1JUSCBFQVNUIEFSUk9XO1NvOzA7T047Ozs7O047VVBQRVIgUklHSFQgQVJST1c7Ozs7CisyMTk4O1NPVVRIIEVBU1QgQVJST1c7U287MDtPTjs7Ozs7TjtMT1dFUiBSSUdIVCBBUlJPVzs7OzsKKzIxOTk7U09VVEggV0VTVCBBUlJPVztTbzswO09OOzs7OztOO0xPV0VSIExFRlQgQVJST1c7Ozs7CisyMTlBO0xFRlRXQVJEUyBBUlJPVyBXSVRIIFNUUk9LRTtTbzswO09OOzs7OztOO0xFRlQgQVJST1cgV0lUSCBTVFJPS0U7Ozs7CisyMTlCO1JJR0hUV0FSRFMgQVJST1cgV0lUSCBTVFJPS0U7U287MDtPTjs7Ozs7TjtSSUdIVCBBUlJPVyBXSVRIIFNUUk9LRTs7OzsKKzIxOUM7TEVGVFdBUkRTIFdBVkUgQVJST1c7U287MDtPTjs7Ozs7TjtMRUZUIFdBVkUgQVJST1c7Ozs7CisyMTlEO1JJR0hUV0FSRFMgV0FWRSBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIFdBVkUgQVJST1c7Ozs7CisyMTlFO0xFRlRXQVJEUyBUV08gSEVBREVEIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBUV08gSEVBREVEIEFSUk9XOzs7OworMjE5RjtVUFdBUkRTIFRXTyBIRUFERUQgQVJST1c7U287MDtPTjs7Ozs7TjtVUCBUV08gSEVBREVEIEFSUk9XOzs7OworMjFBMDtSSUdIVFdBUkRTIFRXTyBIRUFERUQgQVJST1c7U287MDtPTjs7Ozs7TjtSSUdIVCBUV08gSEVBREVEIEFSUk9XOzs7OworMjFBMTtET1dOV0FSRFMgVFdPIEhFQURFRCBBUlJPVztTbzswO09OOzs7OztOO0RPV04gVFdPIEhFQURFRCBBUlJPVzs7OzsKKzIxQTI7TEVGVFdBUkRTIEFSUk9XIFdJVEggVEFJTDtTbzswO09OOzs7OztOO0xFRlQgQVJST1cgV0lUSCBUQUlMOzs7OworMjFBMztSSUdIVFdBUkRTIEFSUk9XIFdJVEggVEFJTDtTbzswO09OOzs7OztOO1JJR0hUIEFSUk9XIFdJVEggVEFJTDs7OzsKKzIxQTQ7TEVGVFdBUkRTIEFSUk9XIEZST00gQkFSO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBGUk9NIEJBUjs7OzsKKzIxQTU7VVBXQVJEUyBBUlJPVyBGUk9NIEJBUjtTbzswO09OOzs7OztOO1VQIEFSUk9XIEZST00gQkFSOzs7OworMjFBNjtSSUdIVFdBUkRTIEFSUk9XIEZST00gQkFSO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgRlJPTSBCQVI7Ozs7CisyMUE3O0RPV05XQVJEUyBBUlJPVyBGUk9NIEJBUjtTbzswO09OOzs7OztOO0RPV04gQVJST1cgRlJPTSBCQVI7Ozs7CisyMUE4O1VQIERPV04gQVJST1cgV0lUSCBCQVNFO1NvOzA7T047Ozs7O047Ozs7OworMjFBOTtMRUZUV0FSRFMgQVJST1cgV0lUSCBIT09LO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBXSVRIIEhPT0s7Ozs7CisyMUFBO1JJR0hUV0FSRFMgQVJST1cgV0lUSCBIT09LO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgV0lUSCBIT09LOzs7OworMjFBQjtMRUZUV0FSRFMgQVJST1cgV0lUSCBMT09QO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBXSVRIIExPT1A7Ozs7CisyMUFDO1JJR0hUV0FSRFMgQVJST1cgV0lUSCBMT09QO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgV0lUSCBMT09QOzs7OworMjFBRDtMRUZUIFJJR0hUIFdBVkUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUFFO0xFRlQgUklHSFQgQVJST1cgV0lUSCBTVFJPS0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUFGO0RPV05XQVJEUyBaSUdaQUcgQVJST1c7U287MDtPTjs7Ozs7TjtET1dOIFpJR1pBRyBBUlJPVzs7OzsKKzIxQjA7VVBXQVJEUyBBUlJPVyBXSVRIIFRJUCBMRUZUV0FSRFM7U287MDtPTjs7Ozs7TjtVUCBBUlJPVyBXSVRIIFRJUCBMRUZUOzs7OworMjFCMTtVUFdBUkRTIEFSUk9XIFdJVEggVElQIFJJR0hUV0FSRFM7U287MDtPTjs7Ozs7TjtVUCBBUlJPVyBXSVRIIFRJUCBSSUdIVDs7OzsKKzIxQjI7RE9XTldBUkRTIEFSUk9XIFdJVEggVElQIExFRlRXQVJEUztTbzswO09OOzs7OztOO0RPV04gQVJST1cgV0lUSCBUSVAgTEVGVDs7OzsKKzIxQjM7RE9XTldBUkRTIEFSUk9XIFdJVEggVElQIFJJR0hUV0FSRFM7U287MDtPTjs7Ozs7TjtET1dOIEFSUk9XIFdJVEggVElQIFJJR0hUOzs7OworMjFCNDtSSUdIVFdBUkRTIEFSUk9XIFdJVEggQ09STkVSIERPV05XQVJEUztTbzswO09OOzs7OztOO1JJR0hUIEFSUk9XIFdJVEggQ09STkVSIERPV047Ozs7CisyMUI1O0RPV05XQVJEUyBBUlJPVyBXSVRIIENPUk5FUiBMRUZUV0FSRFM7U287MDtPTjs7Ozs7TjtET1dOIEFSUk9XIFdJVEggQ09STkVSIExFRlQ7Ozs7CisyMUI2O0FOVElDTE9DS1dJU0UgVE9QIFNFTUlDSVJDTEUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUI3O0NMT0NLV0lTRSBUT1AgU0VNSUNJUkNMRSBBUlJPVztTbzswO09OOzs7OztOOzs7OzsKKzIxQjg7Tk9SVEggV0VTVCBBUlJPVyBUTyBMT05HIEJBUjtTbzswO09OOzs7OztOO1VQUEVSIExFRlQgQVJST1cgVE8gTE9ORyBCQVI7Ozs7CisyMUI5O0xFRlRXQVJEUyBBUlJPVyBUTyBCQVIgT1ZFUiBSSUdIVFdBUkRTIEFSUk9XIFRPIEJBUjtTbzswO09OOzs7OztOO0xFRlQgQVJST1cgVE8gQkFSIE9WRVIgUklHSFQgQVJST1cgVE8gQkFSOzs7OworMjFCQTtBTlRJQ0xPQ0tXSVNFIE9QRU4gQ0lSQ0xFIEFSUk9XO1NvOzA7T047Ozs7O047Ozs7OworMjFCQjtDTE9DS1dJU0UgT1BFTiBDSVJDTEUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUJDO0xFRlRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBVUFdBUkRTO1NvOzA7T047Ozs7O047TEVGVCBIQVJQT09OIFdJVEggQkFSQiBVUDs7OzsKKzIxQkQ7TEVGVFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIERPV05XQVJEUztTbzswO09OOzs7OztOO0xFRlQgSEFSUE9PTiBXSVRIIEJBUkIgRE9XTjs7OzsKKzIxQkU7VVBXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBSSUdIVFdBUkRTO1NvOzA7T047Ozs7O047VVAgSEFSUE9PTiBXSVRIIEJBUkIgUklHSFQ7Ozs7CisyMUJGO1VQV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgTEVGVFdBUkRTO1NvOzA7T047Ozs7O047VVAgSEFSUE9PTiBXSVRIIEJBUkIgTEVGVDs7OzsKKzIxQzA7UklHSFRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBVUFdBUkRTO1NvOzA7T047Ozs7O047UklHSFQgSEFSUE9PTiBXSVRIIEJBUkIgVVA7Ozs7CisyMUMxO1JJR0hUV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgRE9XTldBUkRTO1NvOzA7T047Ozs7O047UklHSFQgSEFSUE9PTiBXSVRIIEJBUkIgRE9XTjs7OzsKKzIxQzI7RE9XTldBUkRTIEhBUlBPT04gV0lUSCBCQVJCIFJJR0hUV0FSRFM7U287MDtPTjs7Ozs7TjtET1dOIEhBUlBPT04gV0lUSCBCQVJCIFJJR0hUOzs7OworMjFDMztET1dOV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgTEVGVFdBUkRTO1NvOzA7T047Ozs7O047RE9XTiBIQVJQT09OIFdJVEggQkFSQiBMRUZUOzs7OworMjFDNDtSSUdIVFdBUkRTIEFSUk9XIE9WRVIgTEVGVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgT1ZFUiBMRUZUIEFSUk9XOzs7OworMjFDNTtVUFdBUkRTIEFSUk9XIExFRlRXQVJEUyBPRiBET1dOV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtVUCBBUlJPVyBMRUZUIE9GIERPV04gQVJST1c7Ozs7CisyMUM2O0xFRlRXQVJEUyBBUlJPVyBPVkVSIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtMRUZUIEFSUk9XIE9WRVIgUklHSFQgQVJST1c7Ozs7CisyMUM3O0xFRlRXQVJEUyBQQUlSRUQgQVJST1dTO1NvOzA7T047Ozs7O047TEVGVCBQQUlSRUQgQVJST1dTOzs7OworMjFDODtVUFdBUkRTIFBBSVJFRCBBUlJPV1M7U287MDtPTjs7Ozs7TjtVUCBQQUlSRUQgQVJST1dTOzs7OworMjFDOTtSSUdIVFdBUkRTIFBBSVJFRCBBUlJPV1M7U287MDtPTjs7Ozs7TjtSSUdIVCBQQUlSRUQgQVJST1dTOzs7OworMjFDQTtET1dOV0FSRFMgUEFJUkVEIEFSUk9XUztTbzswO09OOzs7OztOO0RPV04gUEFJUkVEIEFSUk9XUzs7OzsKKzIxQ0I7TEVGVFdBUkRTIEhBUlBPT04gT1ZFUiBSSUdIVFdBUkRTIEhBUlBPT047U287MDtPTjs7Ozs7TjtMRUZUIEhBUlBPT04gT1ZFUiBSSUdIVCBIQVJQT09OOzs7OworMjFDQztSSUdIVFdBUkRTIEhBUlBPT04gT1ZFUiBMRUZUV0FSRFMgSEFSUE9PTjtTbzswO09OOzs7OztOO1JJR0hUIEhBUlBPT04gT1ZFUiBMRUZUIEhBUlBPT047Ozs7CisyMUNEO0xFRlRXQVJEUyBET1VCTEUgQVJST1cgV0lUSCBTVFJPS0U7U287MDtPTjs7Ozs7TjtMRUZUIERPVUJMRSBBUlJPVyBXSVRIIFNUUk9LRTs7OzsKKzIxQ0U7TEVGVCBSSUdIVCBET1VCTEUgQVJST1cgV0lUSCBTVFJPS0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUNGO1JJR0hUV0FSRFMgRE9VQkxFIEFSUk9XIFdJVEggU1RST0tFO1NvOzA7T047Ozs7O047UklHSFQgRE9VQkxFIEFSUk9XIFdJVEggU1RST0tFOzs7OworMjFEMDtMRUZUV0FSRFMgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBET1VCTEUgQVJST1c7Ozs7CisyMUQxO1VQV0FSRFMgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047VVAgRE9VQkxFIEFSUk9XOzs7OworMjFEMjtSSUdIVFdBUkRTIERPVUJMRSBBUlJPVztTbTswO09OOzs7OztOO1JJR0hUIERPVUJMRSBBUlJPVzs7OzsKKzIxRDM7RE9XTldBUkRTIERPVUJMRSBBUlJPVztTbzswO09OOzs7OztOO0RPV04gRE9VQkxFIEFSUk9XOzs7OworMjFENDtMRUZUIFJJR0hUIERPVUJMRSBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzIxRDU7VVAgRE9XTiBET1VCTEUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUQ2O05PUlRIIFdFU1QgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047VVBQRVIgTEVGVCBET1VCTEUgQVJST1c7Ozs7CisyMUQ3O05PUlRIIEVBU1QgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047VVBQRVIgUklHSFQgRE9VQkxFIEFSUk9XOzs7OworMjFEODtTT1VUSCBFQVNUIERPVUJMRSBBUlJPVztTbzswO09OOzs7OztOO0xPV0VSIFJJR0hUIERPVUJMRSBBUlJPVzs7OzsKKzIxRDk7U09VVEggV0VTVCBET1VCTEUgQVJST1c7U287MDtPTjs7Ozs7TjtMT1dFUiBMRUZUIERPVUJMRSBBUlJPVzs7OzsKKzIxREE7TEVGVFdBUkRTIFRSSVBMRSBBUlJPVztTbzswO09OOzs7OztOO0xFRlQgVFJJUExFIEFSUk9XOzs7OworMjFEQjtSSUdIVFdBUkRTIFRSSVBMRSBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIFRSSVBMRSBBUlJPVzs7OzsKKzIxREM7TEVGVFdBUkRTIFNRVUlHR0xFIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBTUVVJR0dMRSBBUlJPVzs7OzsKKzIxREQ7UklHSFRXQVJEUyBTUVVJR0dMRSBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIFNRVUlHR0xFIEFSUk9XOzs7OworMjFERTtVUFdBUkRTIEFSUk9XIFdJVEggRE9VQkxFIFNUUk9LRTtTbzswO09OOzs7OztOO1VQIEFSUk9XIFdJVEggRE9VQkxFIFNUUk9LRTs7OzsKKzIxREY7RE9XTldBUkRTIEFSUk9XIFdJVEggRE9VQkxFIFNUUk9LRTtTbzswO09OOzs7OztOO0RPV04gQVJST1cgV0lUSCBET1VCTEUgU1RST0tFOzs7OworMjFFMDtMRUZUV0FSRFMgREFTSEVEIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBEQVNIRUQgQVJST1c7Ozs7CisyMUUxO1VQV0FSRFMgREFTSEVEIEFSUk9XO1NvOzA7T047Ozs7O047VVAgREFTSEVEIEFSUk9XOzs7OworMjFFMjtSSUdIVFdBUkRTIERBU0hFRCBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIERBU0hFRCBBUlJPVzs7OzsKKzIxRTM7RE9XTldBUkRTIERBU0hFRCBBUlJPVztTbzswO09OOzs7OztOO0RPV04gREFTSEVEIEFSUk9XOzs7OworMjFFNDtMRUZUV0FSRFMgQVJST1cgVE8gQkFSO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBUTyBCQVI7Ozs7CisyMUU1O1JJR0hUV0FSRFMgQVJST1cgVE8gQkFSO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgVE8gQkFSOzs7OworMjFFNjtMRUZUV0FSRFMgV0hJVEUgQVJST1c7U287MDtPTjs7Ozs7TjtXSElURSBMRUZUIEFSUk9XOzs7OworMjFFNztVUFdBUkRTIFdISVRFIEFSUk9XO1NvOzA7T047Ozs7O047V0hJVEUgVVAgQVJST1c7Ozs7CisyMUU4O1JJR0hUV0FSRFMgV0hJVEUgQVJST1c7U287MDtPTjs7Ozs7TjtXSElURSBSSUdIVCBBUlJPVzs7OzsKKzIxRTk7RE9XTldBUkRTIFdISVRFIEFSUk9XO1NvOzA7T047Ozs7O047V0hJVEUgRE9XTiBBUlJPVzs7OzsKKzIxRUE7VVBXQVJEUyBXSElURSBBUlJPVyBGUk9NIEJBUjtTbzswO09OOzs7OztOO1dISVRFIFVQIEFSUk9XIEZST00gQkFSOzs7OworMjIwMDtGT1IgQUxMO1NtOzA7T047Ozs7O047Ozs7OworMjIwMTtDT01QTEVNRU5UO1NtOzA7T047Ozs7O1k7Ozs7OworMjIwMjtQQVJUSUFMIERJRkZFUkVOVElBTDtTbTswO09OOzs7OztZOzs7OzsKKzIyMDM7VEhFUkUgRVhJU1RTO1NtOzA7T047Ozs7O1k7Ozs7OworMjIwNDtUSEVSRSBET0VTIE5PVCBFWElTVDtTbTswO09OOzIyMDMgMDMzODs7OztZOzs7OzsKKzIyMDU7RU1QVFkgU0VUO1NtOzA7T047Ozs7O047Ozs7OworMjIwNjtJTkNSRU1FTlQ7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjA3O05BQkxBO1NtOzA7T047Ozs7O047Ozs7OworMjIwODtFTEVNRU5UIE9GO1NtOzA7T047Ozs7O1k7Ozs7OworMjIwOTtOT1QgQU4gRUxFTUVOVCBPRjtTbTswO09OOzIyMDggMDMzODs7OztZOzs7OzsKKzIyMEE7U01BTEwgRUxFTUVOVCBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyMEI7Q09OVEFJTlMgQVMgTUVNQkVSO1NtOzA7T047Ozs7O1k7Ozs7OworMjIwQztET0VTIE5PVCBDT05UQUlOIEFTIE1FTUJFUjtTbTswO09OOzIyMEIgMDMzODs7OztZOzs7OzsKKzIyMEQ7U01BTEwgQ09OVEFJTlMgQVMgTUVNQkVSO1NtOzA7T047Ozs7O1k7Ozs7OworMjIwRTtFTkQgT0YgUFJPT0Y7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjBGO04tQVJZIFBST0RVQ1Q7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjEwO04tQVJZIENPUFJPRFVDVDtTbTswO09OOzs7OztOOzs7OzsKKzIyMTE7Ti1BUlkgU1VNTUFUSU9OO1NtOzA7T047Ozs7O1k7Ozs7OworMjIxMjtNSU5VUyBTSUdOO1NtOzA7RVQ7Ozs7O047Ozs7OworMjIxMztNSU5VUy1PUi1QTFVTIFNJR047U207MDtFVDs7Ozs7Tjs7Ozs7CisyMjE0O0RPVCBQTFVTO1NtOzA7T047Ozs7O047Ozs7OworMjIxNTtESVZJU0lPTiBTTEFTSDtTbTswO09OOzs7OztZOzs7OzsKKzIyMTY7U0VUIE1JTlVTO1NtOzA7T047Ozs7O1k7Ozs7OworMjIxNztBU1RFUklTSyBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyMTg7UklORyBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyMTk7QlVMTEVUIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjIxQTtTUVVBUkUgUk9PVDtTbTswO09OOzs7OztZOzs7OzsKKzIyMUI7Q1VCRSBST09UO1NtOzA7T047Ozs7O1k7Ozs7OworMjIxQztGT1VSVEggUk9PVDtTbTswO09OOzs7OztZOzs7OzsKKzIyMUQ7UFJPUE9SVElPTkFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjIxRTtJTkZJTklUWTtTbTswO09OOzs7OztOOzs7OzsKKzIyMUY7UklHSFQgQU5HTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjIwO0FOR0xFO1NtOzA7T047Ozs7O1k7Ozs7OworMjIyMTtNRUFTVVJFRCBBTkdMRTtTbTswO09OOzs7OztZOzs7OzsKKzIyMjI7U1BIRVJJQ0FMIEFOR0xFO1NtOzA7T047Ozs7O1k7Ozs7OworMjIyMztESVZJREVTO1NtOzA7T047Ozs7O047Ozs7OworMjIyNDtET0VTIE5PVCBESVZJREU7U207MDtPTjsyMjIzIDAzMzg7Ozs7WTs7Ozs7CisyMjI1O1BBUkFMTEVMIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjIyNjtOT1QgUEFSQUxMRUwgVE87U207MDtPTjsyMjI1IDAzMzg7Ozs7WTs7Ozs7CisyMjI3O0xPR0lDQUwgQU5EO1NtOzA7T047Ozs7O047Ozs7OworMjIyODtMT0dJQ0FMIE9SO1NtOzA7T047Ozs7O047Ozs7OworMjIyOTtJTlRFUlNFQ1RJT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjJBO1VOSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjIyQjtJTlRFR1JBTDtTbTswO09OOzs7OztZOzs7OzsKKzIyMkM7RE9VQkxFIElOVEVHUkFMO1NtOzA7T047PGNvbXBhdD4gMjIyQiAyMjJCOzs7O1k7Ozs7OworMjIyRDtUUklQTEUgSU5URUdSQUw7U207MDtPTjs8Y29tcGF0PiAyMjJCIDIyMkIgMjIyQjs7OztZOzs7OzsKKzIyMkU7Q09OVE9VUiBJTlRFR1JBTDtTbTswO09OOzs7OztZOzs7OzsKKzIyMkY7U1VSRkFDRSBJTlRFR1JBTDtTbTswO09OOzxjb21wYXQ+IDIyMkUgMjIyRTs7OztZOzs7OzsKKzIyMzA7Vk9MVU1FIElOVEVHUkFMO1NtOzA7T047PGNvbXBhdD4gMjIyRSAyMjJFIDIyMkU7Ozs7WTs7Ozs7CisyMjMxO0NMT0NLV0lTRSBJTlRFR1JBTDtTbTswO09OOzs7OztZOzs7OzsKKzIyMzI7Q0xPQ0tXSVNFIENPTlRPVVIgSU5URUdSQUw7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjMzO0FOVElDTE9DS1dJU0UgQ09OVE9VUiBJTlRFR1JBTDtTbTswO09OOzs7OztZOzs7OzsKKzIyMzQ7VEhFUkVGT1JFO1NtOzA7T047Ozs7O047Ozs7OworMjIzNTtCRUNBVVNFO1NtOzA7T047Ozs7O047Ozs7OworMjIzNjtSQVRJTztTbTswO09OOzs7OztOOzs7OzsKKzIyMzc7UFJPUE9SVElPTjtTbTswO09OOzs7OztOOzs7OzsKKzIyMzg7RE9UIE1JTlVTO1NtOzA7T047Ozs7O047Ozs7OworMjIzOTtFWENFU1M7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjNBO0dFT01FVFJJQyBQUk9QT1JUSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjIzQjtIT01PVEhFVElDO1NtOzA7T047Ozs7O1k7Ozs7OworMjIzQztUSUxERSBPUEVSQVRPUjtTbTswO09OOzs7OztZOzs7OzsKKzIyM0Q7UkVWRVJTRUQgVElMREU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjNFO0lOVkVSVEVEIExBWlkgUztTbTswO09OOzs7OztZOzs7OzsKKzIyM0Y7U0lORSBXQVZFO1NtOzA7T047Ozs7O1k7Ozs7OworMjI0MDtXUkVBVEggUFJPRFVDVDtTbTswO09OOzs7OztZOzs7OzsKKzIyNDE7Tk9UIFRJTERFO1NtOzA7T047MDA3RSAwMzM4Ozs7O1k7Ozs7OworMjI0MjtNSU5VUyBUSUxERTtTbTswO09OOzs7OztZOzs7OzsKKzIyNDM7QVNZTVBUT1RJQ0FMTFkgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjQ0O05PVCBBU1lNUFRPVElDQUxMWSBFUVVBTCBUTztTbTswO09OOzIyNDMgMDMzODs7OztZOzs7OzsKKzIyNDU7QVBQUk9YSU1BVEVMWSBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyNDY7QVBQUk9YSU1BVEVMWSBCVVQgTk9UIEFDVFVBTExZIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI0NztORUlUSEVSIEFQUFJPWElNQVRFTFkgTk9SIEFDVFVBTExZIEVRVUFMIFRPO1NtOzA7T047MjI0NSAwMzM4Ozs7O1k7Ozs7OworMjI0ODtBTE1PU1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjQ5O05PVCBBTE1PU1QgRVFVQUwgVE87U207MDtPTjsyMjQ4IDAzMzg7Ozs7WTs7Ozs7CisyMjRBO0FMTU9TVCBFUVVBTCBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyNEI7VFJJUExFIFRJTERFO1NtOzA7T047Ozs7O1k7Ozs7OworMjI0QztBTEwgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjREO0VRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjRFO0dFT01FVFJJQ0FMTFkgRVFVSVZBTEVOVCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNEY7RElGRkVSRU5DRSBCRVRXRUVOO1NtOzA7T047Ozs7O047Ozs7OworMjI1MDtBUFBST0FDSEVTIFRIRSBMSU1JVDtTbTswO09OOzs7OztOOzs7OzsKKzIyNTE7R0VPTUVUUklDQUxMWSBFUVVBTCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNTI7QVBQUk9YSU1BVEVMWSBFUVVBTCBUTyBPUiBUSEUgSU1BR0UgT0Y7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjUzO0lNQUdFIE9GIE9SIEFQUFJPWElNQVRFTFkgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjU0O0NPTE9OIEVRVUFMUztTbTswO09OOzs7OztZO0NPTE9OIEVRVUFMOzs7OworMjI1NTtFUVVBTFMgQ09MT047U207MDtPTjs7Ozs7WTtFUVVBTCBDT0xPTjs7OzsKKzIyNTY7UklORyBJTiBFUVVBTCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNTc7UklORyBFUVVBTCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNTg7Q09SUkVTUE9ORFMgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjU5O0VTVElNQVRFUztTbTswO09OOzs7OztOOzs7OzsKKzIyNUE7RVFVSUFOR1VMQVIgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjVCO1NUQVIgRVFVQUxTO1NtOzA7T047Ozs7O047Ozs7OworMjI1QztERUxUQSBFUVVBTCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNUQ7RVFVQUwgVE8gQlkgREVGSU5JVElPTjtTbTswO09OOzs7OztOOzs7OzsKKzIyNUU7TUVBU1VSRUQgQlk7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjVGO1FVRVNUSU9ORUQgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjYwO05PVCBFUVVBTCBUTztTbTswO09OOzAwM0QgMDMzODs7OztZOzs7OzsKKzIyNjE7SURFTlRJQ0FMIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjI2MjtOT1QgSURFTlRJQ0FMIFRPO1NtOzA7T047MjI2MSAwMzM4Ozs7O1k7Ozs7OworMjI2MztTVFJJQ1RMWSBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjI2NDtMRVNTLVRIQU4gT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gT1IgRVFVQUwgVE87Ozs7CisyMjY1O0dSRUFURVItVEhBTiBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZO0dSRUFURVIgVEhBTiBPUiBFUVVBTCBUTzs7OzsKKzIyNjY7TEVTUy1USEFOIE9WRVIgRVFVQUwgVE87U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gT1ZFUiBFUVVBTCBUTzs7OzsKKzIyNjc7R1JFQVRFUi1USEFOIE9WRVIgRVFVQUwgVE87U207MDtPTjs7Ozs7WTtHUkVBVEVSIFRIQU4gT1ZFUiBFUVVBTCBUTzs7OzsKKzIyNjg7TEVTUy1USEFOIEJVVCBOT1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gQlVUIE5PVCBFUVVBTCBUTzs7OzsKKzIyNjk7R1JFQVRFUi1USEFOIEJVVCBOT1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTtHUkVBVEVSIFRIQU4gQlVUIE5PVCBFUVVBTCBUTzs7OzsKKzIyNkE7TVVDSCBMRVNTLVRIQU47U207MDtPTjs7Ozs7WTtNVUNIIExFU1MgVEhBTjs7OzsKKzIyNkI7TVVDSCBHUkVBVEVSLVRIQU47U207MDtPTjs7Ozs7WTtNVUNIIEdSRUFURVIgVEhBTjs7OzsKKzIyNkM7QkVUV0VFTjtTbTswO09OOzs7OztOOzs7OzsKKzIyNkQ7Tk9UIEVRVUlWQUxFTlQgVE87U207MDtPTjsyMjREIDAzMzg7Ozs7Tjs7Ozs7CisyMjZFO05PVCBMRVNTLVRIQU47U207MDtPTjswMDNDIDAzMzg7Ozs7WTtOT1QgTEVTUyBUSEFOOzs7OworMjI2RjtOT1QgR1JFQVRFUi1USEFOO1NtOzA7T047MDAzRSAwMzM4Ozs7O1k7Tk9UIEdSRUFURVIgVEhBTjs7OzsKKzIyNzA7TkVJVEhFUiBMRVNTLVRIQU4gTk9SIEVRVUFMIFRPO1NtOzA7T047MjI2NCAwMzM4Ozs7O1k7TkVJVEhFUiBMRVNTIFRIQU4gTk9SIEVRVUFMIFRPOzs7OworMjI3MTtORUlUSEVSIEdSRUFURVItVEhBTiBOT1IgRVFVQUwgVE87U207MDtPTjsyMjY1IDAzMzg7Ozs7WTtORUlUSEVSIEdSRUFURVIgVEhBTiBOT1IgRVFVQUwgVE87Ozs7CisyMjcyO0xFU1MtVEhBTiBPUiBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O1k7TEVTUyBUSEFOIE9SIEVRVUlWQUxFTlQgVE87Ozs7CisyMjczO0dSRUFURVItVEhBTiBPUiBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O1k7R1JFQVRFUiBUSEFOIE9SIEVRVUlWQUxFTlQgVE87Ozs7CisyMjc0O05FSVRIRVIgTEVTUy1USEFOIE5PUiBFUVVJVkFMRU5UIFRPO1NtOzA7T047MjI3MiAwMzM4Ozs7O1k7TkVJVEhFUiBMRVNTIFRIQU4gTk9SIEVRVUlWQUxFTlQgVE87Ozs7CisyMjc1O05FSVRIRVIgR1JFQVRFUi1USEFOIE5PUiBFUVVJVkFMRU5UIFRPO1NtOzA7T047MjI3MyAwMzM4Ozs7O1k7TkVJVEhFUiBHUkVBVEVSIFRIQU4gTk9SIEVRVUlWQUxFTlQgVE87Ozs7CisyMjc2O0xFU1MtVEhBTiBPUiBHUkVBVEVSLVRIQU47U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gT1IgR1JFQVRFUiBUSEFOOzs7OworMjI3NztHUkVBVEVSLVRIQU4gT1IgTEVTUy1USEFOO1NtOzA7T047Ozs7O1k7R1JFQVRFUiBUSEFOIE9SIExFU1MgVEhBTjs7OzsKKzIyNzg7TkVJVEhFUiBMRVNTLVRIQU4gTk9SIEdSRUFURVItVEhBTjtTbTswO09OOzIyNzYgMDMzODs7OztZO05FSVRIRVIgTEVTUyBUSEFOIE5PUiBHUkVBVEVSIFRIQU47Ozs7CisyMjc5O05FSVRIRVIgR1JFQVRFUi1USEFOIE5PUiBMRVNTLVRIQU47U207MDtPTjsyMjc3IDAzMzg7Ozs7WTtORUlUSEVSIEdSRUFURVIgVEhBTiBOT1IgTEVTUyBUSEFOOzs7OworMjI3QTtQUkVDRURFUztTbTswO09OOzs7OztZOzs7OzsKKzIyN0I7U1VDQ0VFRFM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjdDO1BSRUNFREVTIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI3RDtTVUNDRUVEUyBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyN0U7UFJFQ0VERVMgT1IgRVFVSVZBTEVOVCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyN0Y7U1VDQ0VFRFMgT1IgRVFVSVZBTEVOVCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyODA7RE9FUyBOT1QgUFJFQ0VERTtTbTswO09OOzIyN0EgMDMzODs7OztZOzs7OzsKKzIyODE7RE9FUyBOT1QgU1VDQ0VFRDtTbTswO09OOzIyN0IgMDMzODs7OztZOzs7OzsKKzIyODI7U1VCU0VUIE9GO1NtOzA7T047Ozs7O1k7Ozs7OworMjI4MztTVVBFUlNFVCBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyODQ7Tk9UIEEgU1VCU0VUIE9GO1NtOzA7T047MjI4MiAwMzM4Ozs7O1k7Ozs7OworMjI4NTtOT1QgQSBTVVBFUlNFVCBPRjtTbTswO09OOzIyODMgMDMzODs7OztZOzs7OzsKKzIyODY7U1VCU0VUIE9GIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI4NztTVVBFUlNFVCBPRiBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyODg7TkVJVEhFUiBBIFNVQlNFVCBPRiBOT1IgRVFVQUwgVE87U207MDtPTjsyMjg2IDAzMzg7Ozs7WTs7Ozs7CisyMjg5O05FSVRIRVIgQSBTVVBFUlNFVCBPRiBOT1IgRVFVQUwgVE87U207MDtPTjsyMjg3IDAzMzg7Ozs7WTs7Ozs7CisyMjhBO1NVQlNFVCBPRiBXSVRIIE5PVCBFUVVBTCBUTztTbTswO09OOzs7OztZO1NVQlNFVCBPRiBPUiBOT1QgRVFVQUwgVE87Ozs7CisyMjhCO1NVUEVSU0VUIE9GIFdJVEggTk9UIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7U1VQRVJTRVQgT0YgT1IgTk9UIEVRVUFMIFRPOzs7OworMjI4QztNVUxUSVNFVDtTbTswO09OOzs7OztZOzs7OzsKKzIyOEQ7TVVMVElTRVQgTVVMVElQTElDQVRJT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjhFO01VTFRJU0VUIFVOSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjI4RjtTUVVBUkUgSU1BR0UgT0Y7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjkwO1NRVUFSRSBPUklHSU5BTCBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyOTE7U1FVQVJFIElNQUdFIE9GIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI5MjtTUVVBUkUgT1JJR0lOQUwgT0YgT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjkzO1NRVUFSRSBDQVA7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjk0O1NRVUFSRSBDVVA7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjk1O0NJUkNMRUQgUExVUztTbTswO09OOzs7OztOOzs7OzsKKzIyOTY7Q0lSQ0xFRCBNSU5VUztTbTswO09OOzs7OztOOzs7OzsKKzIyOTc7Q0lSQ0xFRCBUSU1FUztTbTswO09OOzs7OztOOzs7OzsKKzIyOTg7Q0lSQ0xFRCBESVZJU0lPTiBTTEFTSDtTbTswO09OOzs7OztZOzs7OzsKKzIyOTk7Q0lSQ0xFRCBET1QgT1BFUkFUT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjlBO0NJUkNMRUQgUklORyBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyOUI7Q0lSQ0xFRCBBU1RFUklTSyBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyOUM7Q0lSQ0xFRCBFUVVBTFM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjlEO0NJUkNMRUQgREFTSDtTbTswO09OOzs7OztOOzs7OzsKKzIyOUU7U1FVQVJFRCBQTFVTO1NtOzA7T047Ozs7O047Ozs7OworMjI5RjtTUVVBUkVEIE1JTlVTO1NtOzA7T047Ozs7O047Ozs7OworMjJBMDtTUVVBUkVEIFRJTUVTO1NtOzA7T047Ozs7O047Ozs7OworMjJBMTtTUVVBUkVEIERPVCBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyQTI7UklHSFQgVEFDSztTbTswO09OOzs7OztZOzs7OzsKKzIyQTM7TEVGVCBUQUNLO1NtOzA7T047Ozs7O1k7Ozs7OworMjJBNDtET1dOIFRBQ0s7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkE1O1VQIFRBQ0s7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkE2O0FTU0VSVElPTjtTbTswO09OOzs7OztZOzs7OzsKKzIyQTc7TU9ERUxTO1NtOzA7T047Ozs7O1k7Ozs7OworMjJBODtUUlVFO1NtOzA7T047Ozs7O1k7Ozs7OworMjJBOTtGT1JDRVM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkFBO1RSSVBMRSBWRVJUSUNBTCBCQVIgUklHSFQgVFVSTlNUSUxFO1NtOzA7T047Ozs7O1k7Ozs7OworMjJBQjtET1VCTEUgVkVSVElDQUwgQkFSIERPVUJMRSBSSUdIVCBUVVJOU1RJTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkFDO0RPRVMgTk9UIFBST1ZFO1NtOzA7T047MjJBMiAwMzM4Ozs7O1k7Ozs7OworMjJBRDtOT1QgVFJVRTtTbTswO09OOzIyQTggMDMzODs7OztZOzs7OzsKKzIyQUU7RE9FUyBOT1QgRk9SQ0U7U207MDtPTjsyMkE5IDAzMzg7Ozs7WTs7Ozs7CisyMkFGO05FR0FURUQgRE9VQkxFIFZFUlRJQ0FMIEJBUiBET1VCTEUgUklHSFQgVFVSTlNUSUxFO1NtOzA7T047MjJBQiAwMzM4Ozs7O1k7Ozs7OworMjJCMDtQUkVDRURFUyBVTkRFUiBSRUxBVElPTjtTbTswO09OOzs7OztZOzs7OzsKKzIyQjE7U1VDQ0VFRFMgVU5ERVIgUkVMQVRJT047U207MDtPTjs7Ozs7WTs7Ozs7CisyMkIyO05PUk1BTCBTVUJHUk9VUCBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyQjM7Q09OVEFJTlMgQVMgTk9STUFMIFNVQkdST1VQO1NtOzA7T047Ozs7O1k7Ozs7OworMjJCNDtOT1JNQUwgU1VCR1JPVVAgT0YgT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMkI1O0NPTlRBSU5TIEFTIE5PUk1BTCBTVUJHUk9VUCBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyQjY7T1JJR0lOQUwgT0Y7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkI3O0lNQUdFIE9GO1NtOzA7T047Ozs7O1k7Ozs7OworMjJCODtNVUxUSU1BUDtTbTswO09OOzs7OztZOzs7OzsKKzIyQjk7SEVSTUlUSUFOIENPTkpVR0FURSBNQVRSSVg7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkJBO0lOVEVSQ0FMQVRFO1NtOzA7T047Ozs7O047Ozs7OworMjJCQjtYT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkJDO05BTkQ7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkJEO05PUjtTbTswO09OOzs7OztOOzs7OzsKKzIyQkU7UklHSFQgQU5HTEUgV0lUSCBBUkM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkJGO1JJR0hUIFRSSUFOR0xFO1NtOzA7T047Ozs7O1k7Ozs7OworMjJDMDtOLUFSWSBMT0dJQ0FMIEFORDtTbTswO09OOzs7OztOOzs7OzsKKzIyQzE7Ti1BUlkgTE9HSUNBTCBPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyQzI7Ti1BUlkgSU5URVJTRUNUSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjJDMztOLUFSWSBVTklPTjtTbTswO09OOzs7OztOOzs7OzsKKzIyQzQ7RElBTU9ORCBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyQzU7RE9UIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjJDNjtTVEFSIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjJDNztESVZJU0lPTiBUSU1FUztTbTswO09OOzs7OztOOzs7OzsKKzIyQzg7Qk9XVElFO1NtOzA7T047Ozs7O047Ozs7OworMjJDOTtMRUZUIE5PUk1BTCBGQUNUT1IgU0VNSURJUkVDVCBQUk9EVUNUO1NtOzA7T047Ozs7O1k7Ozs7OworMjJDQTtSSUdIVCBOT1JNQUwgRkFDVE9SIFNFTUlESVJFQ1QgUFJPRFVDVDtTbTswO09OOzs7OztZOzs7OzsKKzIyQ0I7TEVGVCBTRU1JRElSRUNUIFBST0RVQ1Q7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkNDO1JJR0hUIFNFTUlESVJFQ1QgUFJPRFVDVDtTbTswO09OOzs7OztZOzs7OzsKKzIyQ0Q7UkVWRVJTRUQgVElMREUgRVFVQUxTO1NtOzA7T047Ozs7O1k7Ozs7OworMjJDRTtDVVJMWSBMT0dJQ0FMIE9SO1NtOzA7T047Ozs7O047Ozs7OworMjJDRjtDVVJMWSBMT0dJQ0FMIEFORDtTbTswO09OOzs7OztOOzs7OzsKKzIyRDA7RE9VQkxFIFNVQlNFVDtTbTswO09OOzs7OztZOzs7OzsKKzIyRDE7RE9VQkxFIFNVUEVSU0VUO1NtOzA7T047Ozs7O1k7Ozs7OworMjJEMjtET1VCTEUgSU5URVJTRUNUSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjJEMztET1VCTEUgVU5JT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkQ0O1BJVENIRk9SSztTbTswO09OOzs7OztOOzs7OzsKKzIyRDU7RVFVQUwgQU5EIFBBUkFMTEVMIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjJENjtMRVNTLVRIQU4gV0lUSCBET1Q7U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gV0lUSCBET1Q7Ozs7CisyMkQ3O0dSRUFURVItVEhBTiBXSVRIIERPVDtTbTswO09OOzs7OztZO0dSRUFURVIgVEhBTiBXSVRIIERPVDs7OzsKKzIyRDg7VkVSWSBNVUNIIExFU1MtVEhBTjtTbTswO09OOzs7OztZO1ZFUlkgTVVDSCBMRVNTIFRIQU47Ozs7CisyMkQ5O1ZFUlkgTVVDSCBHUkVBVEVSLVRIQU47U207MDtPTjs7Ozs7WTtWRVJZIE1VQ0ggR1JFQVRFUiBUSEFOOzs7OworMjJEQTtMRVNTLVRIQU4gRVFVQUwgVE8gT1IgR1JFQVRFUi1USEFOO1NtOzA7T047Ozs7O1k7TEVTUyBUSEFOIEVRVUFMIFRPIE9SIEdSRUFURVIgVEhBTjs7OzsKKzIyREI7R1JFQVRFUi1USEFOIEVRVUFMIFRPIE9SIExFU1MtVEhBTjtTbTswO09OOzs7OztZO0dSRUFURVIgVEhBTiBFUVVBTCBUTyBPUiBMRVNTIFRIQU47Ozs7CisyMkRDO0VRVUFMIFRPIE9SIExFU1MtVEhBTjtTbTswO09OOzs7OztZO0VRVUFMIFRPIE9SIExFU1MgVEhBTjs7OzsKKzIyREQ7RVFVQUwgVE8gT1IgR1JFQVRFUi1USEFOO1NtOzA7T047Ozs7O1k7RVFVQUwgVE8gT1IgR1JFQVRFUiBUSEFOOzs7OworMjJERTtFUVVBTCBUTyBPUiBQUkVDRURFUztTbTswO09OOzs7OztZOzs7OzsKKzIyREY7RVFVQUwgVE8gT1IgU1VDQ0VFRFM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkUwO0RPRVMgTk9UIFBSRUNFREUgT1IgRVFVQUw7U207MDtPTjsyMjdDIDAzMzg7Ozs7WTs7Ozs7CisyMkUxO0RPRVMgTk9UIFNVQ0NFRUQgT1IgRVFVQUw7U207MDtPTjsyMjdEIDAzMzg7Ozs7WTs7Ozs7CisyMkUyO05PVCBTUVVBUkUgSU1BR0UgT0YgT1IgRVFVQUwgVE87U207MDtPTjsyMjkxIDAzMzg7Ozs7WTs7Ozs7CisyMkUzO05PVCBTUVVBUkUgT1JJR0lOQUwgT0YgT1IgRVFVQUwgVE87U207MDtPTjsyMjkyIDAzMzg7Ozs7WTs7Ozs7CisyMkU0O1NRVUFSRSBJTUFHRSBPRiBPUiBOT1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMkU1O1NRVUFSRSBPUklHSU5BTCBPRiBPUiBOT1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMkU2O0xFU1MtVEhBTiBCVVQgTk9UIEVRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gQlVUIE5PVCBFUVVJVkFMRU5UIFRPOzs7OworMjJFNztHUkVBVEVSLVRIQU4gQlVUIE5PVCBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O1k7R1JFQVRFUiBUSEFOIEJVVCBOT1QgRVFVSVZBTEVOVCBUTzs7OzsKKzIyRTg7UFJFQ0VERVMgQlVUIE5PVCBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjJFOTtTVUNDRUVEUyBCVVQgTk9UIEVRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMkVBO05PVCBOT1JNQUwgU1VCR1JPVVAgT0Y7U207MDtPTjsyMkIyIDAzMzg7Ozs7WTs7Ozs7CisyMkVCO0RPRVMgTk9UIENPTlRBSU4gQVMgTk9STUFMIFNVQkdST1VQO1NtOzA7T047MjJCMyAwMzM4Ozs7O1k7Ozs7OworMjJFQztOT1QgTk9STUFMIFNVQkdST1VQIE9GIE9SIEVRVUFMIFRPO1NtOzA7T047MjJCNCAwMzM4Ozs7O1k7Ozs7OworMjJFRDtET0VTIE5PVCBDT05UQUlOIEFTIE5PUk1BTCBTVUJHUk9VUCBPUiBFUVVBTDtTbTswO09OOzIyQjUgMDMzODs7OztZOzs7OzsKKzIyRUU7VkVSVElDQUwgRUxMSVBTSVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkVGO01JRExJTkUgSE9SSVpPTlRBTCBFTExJUFNJUztTbTswO09OOzs7OztOOzs7OzsKKzIyRjA7VVAgUklHSFQgRElBR09OQUwgRUxMSVBTSVM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkYxO0RPV04gUklHSFQgRElBR09OQUwgRUxMSVBTSVM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzAwO0RJQU1FVEVSIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzAyO0hPVVNFO1NvOzA7T047Ozs7O047Ozs7OworMjMwMztVUCBBUlJPV0hFQUQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzA0O0RPV04gQVJST1dIRUFEO1NvOzA7T047Ozs7O047Ozs7OworMjMwNTtQUk9KRUNUSVZFO1NvOzA7T047Ozs7O047Ozs7OworMjMwNjtQRVJTUEVDVElWRTtTbzswO09OOzs7OztOOzs7OzsKKzIzMDc7V0FWWSBMSU5FO1NvOzA7T047Ozs7O047Ozs7OworMjMwODtMRUZUIENFSUxJTkc7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzA5O1JJR0hUIENFSUxJTkc7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzBBO0xFRlQgRkxPT1I7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzBCO1JJR0hUIEZMT09SO1NtOzA7T047Ozs7O1k7Ozs7OworMjMwQztCT1RUT00gUklHSFQgQ1JPUDtTbzswO09OOzs7OztOOzs7OzsKKzIzMEQ7Qk9UVE9NIExFRlQgQ1JPUDtTbzswO09OOzs7OztOOzs7OzsKKzIzMEU7VE9QIFJJR0hUIENST1A7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzBGO1RPUCBMRUZUIENST1A7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzEwO1JFVkVSU0VEIE5PVCBTSUdOO1NvOzA7T047Ozs7O047Ozs7OworMjMxMTtTUVVBUkUgTE9aRU5HRTtTbzswO09OOzs7OztOOzs7OzsKKzIzMTI7QVJDO1NvOzA7T047Ozs7O047Ozs7OworMjMxMztTRUdNRU5UO1NvOzA7T047Ozs7O047Ozs7OworMjMxNDtTRUNUT1I7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzE1O1RFTEVQSE9ORSBSRUNPUkRFUjtTbzswO09OOzs7OztOOzs7OzsKKzIzMTY7UE9TSVRJT04gSU5ESUNBVE9SO1NvOzA7T047Ozs7O047Ozs7OworMjMxNztWSUVXREFUQSBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzE4O1BMQUNFIE9GIElOVEVSRVNUIFNJR047U287MDtPTjs7Ozs7TjtDT01NQU5EIEtFWTs7OzsKKzIzMTk7VFVSTkVEIE5PVCBTSUdOO1NvOzA7T047Ozs7O047Ozs7OworMjMxQTtXQVRDSDtTbzswO09OOzs7OztOOzs7OzsKKzIzMUI7SE9VUkdMQVNTO1NvOzA7T047Ozs7O047Ozs7OworMjMxQztUT1AgTEVGVCBDT1JORVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzFEO1RPUCBSSUdIVCBDT1JORVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzFFO0JPVFRPTSBMRUZUIENPUk5FUjtTbzswO09OOzs7OztOOzs7OzsKKzIzMUY7Qk9UVE9NIFJJR0hUIENPUk5FUjtTbzswO09OOzs7OztOOzs7OzsKKzIzMjA7VE9QIEhBTEYgSU5URUdSQUw7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzIxO0JPVFRPTSBIQUxGIElOVEVHUkFMO1NtOzA7T047Ozs7O1k7Ozs7OworMjMyMjtGUk9XTjtTbzswO09OOzs7OztOOzs7OzsKKzIzMjM7U01JTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzI0O1VQIEFSUk9XSEVBRCBCRVRXRUVOIFRXTyBIT1JJWk9OVEFMIEJBUlM7U287MDtPTjs7Ozs7TjtFTlRFUiBLRVk7Ozs7CisyMzI1O09QVElPTiBLRVk7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzI2O0VSQVNFIFRPIFRIRSBSSUdIVDtTbzswO09OOzs7OztOO0RFTEVURSBUTyBUSEUgUklHSFQgS0VZOzs7OworMjMyNztYIElOIEEgUkVDVEFOR0xFIEJPWDtTbzswO09OOzs7OztOO0NMRUFSIEtFWTs7OzsKKzIzMjg7S0VZQk9BUkQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzI5O0xFRlQtUE9JTlRJTkcgQU5HTEUgQlJBQ0tFVDtQczswO09OOzMwMDg7Ozs7WTtCUkE7Ozs7CisyMzJBO1JJR0hULVBPSU5USU5HIEFOR0xFIEJSQUNLRVQ7UGU7MDtPTjszMDA5Ozs7O1k7S0VUOzs7OworMjMyQjtFUkFTRSBUTyBUSEUgTEVGVDtTbzswO09OOzs7OztOO0RFTEVURSBUTyBUSEUgTEVGVCBLRVk7Ozs7CisyMzJDO0JFTlpFTkUgUklORztTbzswO09OOzs7OztOOzs7OzsKKzIzMkQ7Q1lMSU5EUklDSVRZO1NvOzA7T047Ozs7O047Ozs7OworMjMyRTtBTEwgQVJPVU5ELVBST0ZJTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzJGO1NZTU1FVFJZO1NvOzA7T047Ozs7O047Ozs7OworMjMzMDtUT1RBTCBSVU5PVVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzMxO0RJTUVOU0lPTiBPUklHSU47U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzMyO0NPTklDQUwgVEFQRVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzMzO1NMT1BFO1NvOzA7T047Ozs7O047Ozs7OworMjMzNDtDT1VOVEVSQk9SRTtTbzswO09OOzs7OztOOzs7OzsKKzIzMzU7Q09VTlRFUlNJTks7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzM2O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBJLUJFQU07U287MDtMOzs7OztOOzs7OzsKKzIzMzc7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFNRVUlTSCBRVUFEO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzM4O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIEVRVUFMO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzM5O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIERJVklERTtTbzswO0w7Ozs7O047Ozs7OworMjMzQTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBESUFNT05EO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzNCO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIEpPVDtTbzswO0w7Ozs7O047Ozs7OworMjMzQztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBDSVJDTEU7U287MDtMOzs7OztOOzs7OzsKKzIzM0Q7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIENJUkNMRSBTVElMRTtTbzswO0w7Ozs7O047Ozs7OworMjMzRTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgQ0lSQ0xFIEpPVDtTbzswO0w7Ozs7O047Ozs7OworMjMzRjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgU0xBU0ggQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQwO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBCQUNLU0xBU0ggQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQxO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIFNMQVNIO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQyO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIEJBQ0tTTEFTSDtTbzswO0w7Ozs7O047Ozs7OworMjM0MztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBMRVNTLVRIQU47U287MDtMOzs7OztOOzs7OzsKKzIzNDQ7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgR1JFQVRFUi1USEFOO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQ1O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBMRUZUV0FSRFMgVkFORTtTbzswO0w7Ozs7O047Ozs7OworMjM0NjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUklHSFRXQVJEUyBWQU5FO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQ3O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIExFRlRXQVJEUyBBUlJPVztTbzswO0w7Ozs7O047Ozs7OworMjM0ODtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQ5O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgQkFDS1NMQVNIO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzRBO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOIFRBQ0sgVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNEI7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERFTFRBIFNUSUxFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzRDO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIERPV04gQ0FSRVQ7U287MDtMOzs7OztOOzs7OzsKKzIzNEQ7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgREVMVEE7U287MDtMOzs7OztOOzs7OzsKKzIzNEU7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERPV04gVEFDSyBKT1Q7U287MDtMOzs7OztOOzs7OzsKKzIzNEY7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQV0FSRFMgVkFORTtTbzswO0w7Ozs7O047Ozs7OworMjM1MDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBVUFdBUkRTIEFSUk9XO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzUxO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBVUCBUQUNLIE9WRVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNTI7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERFTCBTVElMRTtTbzswO0w7Ozs7O047Ozs7OworMjM1MztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBVUCBDQVJFVDtTbzswO0w7Ozs7O047Ozs7OworMjM1NDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBERUw7U287MDtMOzs7OztOOzs7OzsKKzIzNTU7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQIFRBQ0sgSk9UO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzU2O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOV0FSRFMgVkFORTtTbzswO0w7Ozs7O047Ozs7OworMjM1NztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBET1dOV0FSRFMgQVJST1c7U287MDtMOzs7OztOOzs7OzsKKzIzNTg7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVT1RFIFVOREVSQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzU5O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBERUxUQSBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM1QTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgRElBTU9ORCBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM1QjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgSk9UIFVOREVSQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzVDO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNUQ7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQIFNIT0UgSk9UO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzVFO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVU9URSBRVUFEO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzVGO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgU1RBUjtTbzswO0w7Ozs7O047Ozs7OworMjM2MDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBDT0xPTjtTbzswO0w7Ozs7O047Ozs7OworMjM2MTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgVVAgVEFDSyBESUFFUkVTSVM7U287MDtMOzs7OztOOzs7OzsKKzIzNjI7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERFTCBESUFFUkVTSVM7U287MDtMOzs7OztOOzs7OzsKKzIzNjM7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFNUQVIgRElBRVJFU0lTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzY0O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBKT1QgRElBRVJFU0lTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzY1O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgRElBRVJFU0lTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzY2O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOIFNIT0UgU1RJTEU7U287MDtMOzs7OztOOzs7OzsKKzIzNjc7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIExFRlQgU0hPRSBTVElMRTtTbzswO0w7Ozs7O047Ozs7OworMjM2ODtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgVElMREUgRElBRVJFU0lTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzY5O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBHUkVBVEVSLVRIQU4gRElBRVJFU0lTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzZBO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBDT01NQSBCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNkI7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERFTCBUSUxERTtTbzswO0w7Ozs7O047Ozs7OworMjM2QztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgWklMREU7U287MDtMOzs7OztOOzs7OzsKKzIzNkQ7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFNUSUxFIFRJTERFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzZFO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBTRU1JQ09MT04gVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNkY7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgTk9UIEVRVUFMO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzcwO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIFFVRVNUSU9OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzcxO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOIENBUkVUIFRJTERFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzcyO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBVUCBDQVJFVCBUSUxERTtTbzswO0w7Ozs7O047Ozs7OworMjM3MztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgSU9UQTtTbzswO0w7Ozs7O047Ozs7OworMjM3NDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUkhPO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzc1O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBPTUVHQTtTbzswO0w7Ozs7O047Ozs7OworMjM3NjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgQUxQSEEgVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNzc7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIEVQU0lMT04gVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNzg7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIElPVEEgVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNzk7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIE9NRUdBIFVOREVSQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzdBO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBBTFBIQTtTbzswO0w7Ozs7O047Ozs7OworMjQwMDtTWU1CT0wgRk9SIE5VTEw7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBOVUxMOzs7OworMjQwMTtTWU1CT0wgRk9SIFNUQVJUIE9GIEhFQURJTkc7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBTVEFSVCBPRiBIRUFESU5HOzs7OworMjQwMjtTWU1CT0wgRk9SIFNUQVJUIE9GIFRFWFQ7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBTVEFSVCBPRiBURVhUOzs7OworMjQwMztTWU1CT0wgRk9SIEVORCBPRiBURVhUO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgRU5EIE9GIFRFWFQ7Ozs7CisyNDA0O1NZTUJPTCBGT1IgRU5EIE9GIFRSQU5TTUlTU0lPTjtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEVORCBPRiBUUkFOU01JU1NJT047Ozs7CisyNDA1O1NZTUJPTCBGT1IgRU5RVUlSWTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEVOUVVJUlk7Ozs7CisyNDA2O1NZTUJPTCBGT1IgQUNLTk9XTEVER0U7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBBQ0tOT1dMRURHRTs7OzsKKzI0MDc7U1lNQk9MIEZPUiBCRUxMO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgQkVMTDs7OzsKKzI0MDg7U1lNQk9MIEZPUiBCQUNLU1BBQ0U7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBCQUNLU1BBQ0U7Ozs7CisyNDA5O1NZTUJPTCBGT1IgSE9SSVpPTlRBTCBUQUJVTEFUSU9OO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgSE9SSVpPTlRBTCBUQUJVTEFUSU9OOzs7OworMjQwQTtTWU1CT0wgRk9SIExJTkUgRkVFRDtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIExJTkUgRkVFRDs7OzsKKzI0MEI7U1lNQk9MIEZPUiBWRVJUSUNBTCBUQUJVTEFUSU9OO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgVkVSVElDQUwgVEFCVUxBVElPTjs7OzsKKzI0MEM7U1lNQk9MIEZPUiBGT1JNIEZFRUQ7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBGT1JNIEZFRUQ7Ozs7CisyNDBEO1NZTUJPTCBGT1IgQ0FSUklBR0UgUkVUVVJOO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgQ0FSUklBR0UgUkVUVVJOOzs7OworMjQwRTtTWU1CT0wgRk9SIFNISUZUIE9VVDtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFNISUZUIE9VVDs7OzsKKzI0MEY7U1lNQk9MIEZPUiBTSElGVCBJTjtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFNISUZUIElOOzs7OworMjQxMDtTWU1CT0wgRk9SIERBVEEgTElOSyBFU0NBUEU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBEQVRBIExJTksgRVNDQVBFOzs7OworMjQxMTtTWU1CT0wgRk9SIERFVklDRSBDT05UUk9MIE9ORTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIERFVklDRSBDT05UUk9MIE9ORTs7OzsKKzI0MTI7U1lNQk9MIEZPUiBERVZJQ0UgQ09OVFJPTCBUV087U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBERVZJQ0UgQ09OVFJPTCBUV087Ozs7CisyNDEzO1NZTUJPTCBGT1IgREVWSUNFIENPTlRST0wgVEhSRUU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBERVZJQ0UgQ09OVFJPTCBUSFJFRTs7OzsKKzI0MTQ7U1lNQk9MIEZPUiBERVZJQ0UgQ09OVFJPTCBGT1VSO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgREVWSUNFIENPTlRST0wgRk9VUjs7OzsKKzI0MTU7U1lNQk9MIEZPUiBORUdBVElWRSBBQ0tOT1dMRURHRTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIE5FR0FUSVZFIEFDS05PV0xFREdFOzs7OworMjQxNjtTWU1CT0wgRk9SIFNZTkNIUk9OT1VTIElETEU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBTWU5DSFJPTk9VUyBJRExFOzs7OworMjQxNztTWU1CT0wgRk9SIEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0s7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLOzs7OworMjQxODtTWU1CT0wgRk9SIENBTkNFTDtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIENBTkNFTDs7OzsKKzI0MTk7U1lNQk9MIEZPUiBFTkQgT0YgTUVESVVNO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgRU5EIE9GIE1FRElVTTs7OzsKKzI0MUE7U1lNQk9MIEZPUiBTVUJTVElUVVRFO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgU1VCU1RJVFVURTs7OzsKKzI0MUI7U1lNQk9MIEZPUiBFU0NBUEU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBFU0NBUEU7Ozs7CisyNDFDO1NZTUJPTCBGT1IgRklMRSBTRVBBUkFUT1I7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBGSUxFIFNFUEFSQVRPUjs7OzsKKzI0MUQ7U1lNQk9MIEZPUiBHUk9VUCBTRVBBUkFUT1I7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBHUk9VUCBTRVBBUkFUT1I7Ozs7CisyNDFFO1NZTUJPTCBGT1IgUkVDT1JEIFNFUEFSQVRPUjtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFJFQ09SRCBTRVBBUkFUT1I7Ozs7CisyNDFGO1NZTUJPTCBGT1IgVU5JVCBTRVBBUkFUT1I7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBVTklUIFNFUEFSQVRPUjs7OzsKKzI0MjA7U1lNQk9MIEZPUiBTUEFDRTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFNQQUNFOzs7OworMjQyMTtTWU1CT0wgRk9SIERFTEVURTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIERFTEVURTs7OzsKKzI0MjI7QkxBTksgU1lNQk9MO1NvOzA7T047Ozs7O047QkxBTks7Ozs7CisyNDIzO09QRU4gQk9YO1NvOzA7T047Ozs7O047Ozs7OworMjQyNDtTWU1CT0wgRk9SIE5FV0xJTkU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBORVdMSU5FOzs7OworMjQ0MDtPQ1IgSE9PSztTbzswO09OOzs7OztOOzs7OzsKKzI0NDE7T0NSIENIQUlSO1NvOzA7T047Ozs7O047Ozs7OworMjQ0MjtPQ1IgRk9SSztTbzswO09OOzs7OztOOzs7OzsKKzI0NDM7T0NSIElOVkVSVEVEIEZPUks7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDQ0O09DUiBCRUxUIEJVQ0tMRTtTbzswO09OOzs7OztOOzs7OzsKKzI0NDU7T0NSIEJPVyBUSUU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDQ2O09DUiBCUkFOQ0ggQkFOSyBJREVOVElGSUNBVElPTjtTbzswO09OOzs7OztOOzs7OzsKKzI0NDc7T0NSIEFNT1VOVCBPRiBDSEVDSztTbzswO09OOzs7OztOOzs7OzsKKzI0NDg7T0NSIERBU0g7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDQ5O09DUiBDVVNUT01FUiBBQ0NPVU5UIE5VTUJFUjtTbzswO09OOzs7OztOOzs7OzsKKzI0NEE7T0NSIERPVUJMRSBCQUNLU0xBU0g7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDYwO0NJUkNMRUQgRElHSVQgT05FO05vOzA7T047PGNpcmNsZT4gMDAzMTs7MTsxO047Ozs7OworMjQ2MTtDSVJDTEVEIERJR0lUIFRXTztObzswO09OOzxjaXJjbGU+IDAwMzI7OzI7MjtOOzs7OzsKKzI0NjI7Q0lSQ0xFRCBESUdJVCBUSFJFRTtObzswO09OOzxjaXJjbGU+IDAwMzM7OzM7MztOOzs7OzsKKzI0NjM7Q0lSQ0xFRCBESUdJVCBGT1VSO05vOzA7T047PGNpcmNsZT4gMDAzNDs7NDs0O047Ozs7OworMjQ2NDtDSVJDTEVEIERJR0lUIEZJVkU7Tm87MDtPTjs8Y2lyY2xlPiAwMDM1Ozs1OzU7Tjs7Ozs7CisyNDY1O0NJUkNMRUQgRElHSVQgU0lYO05vOzA7T047PGNpcmNsZT4gMDAzNjs7Njs2O047Ozs7OworMjQ2NjtDSVJDTEVEIERJR0lUIFNFVkVOO05vOzA7T047PGNpcmNsZT4gMDAzNzs7Nzs3O047Ozs7OworMjQ2NztDSVJDTEVEIERJR0lUIEVJR0hUO05vOzA7T047PGNpcmNsZT4gMDAzODs7ODs4O047Ozs7OworMjQ2ODtDSVJDTEVEIERJR0lUIE5JTkU7Tm87MDtPTjs8Y2lyY2xlPiAwMDM5Ozs5Ozk7Tjs7Ozs7CisyNDY5O0NJUkNMRUQgTlVNQkVSIFRFTjtObzswO09OOzxjaXJjbGU+IDAwMzEgMDAzMDs7OzEwO047Ozs7OworMjQ2QTtDSVJDTEVEIE5VTUJFUiBFTEVWRU47Tm87MDtPTjs8Y2lyY2xlPiAwMDMxIDAwMzE7OzsxMTtOOzs7OzsKKzI0NkI7Q0lSQ0xFRCBOVU1CRVIgVFdFTFZFO05vOzA7T047PGNpcmNsZT4gMDAzMSAwMDMyOzs7MTI7Tjs7Ozs7CisyNDZDO0NJUkNMRUQgTlVNQkVSIFRISVJURUVOO05vOzA7T047PGNpcmNsZT4gMDAzMSAwMDMzOzs7MTM7Tjs7Ozs7CisyNDZEO0NJUkNMRUQgTlVNQkVSIEZPVVJURUVOO05vOzA7T047PGNpcmNsZT4gMDAzMSAwMDM0Ozs7MTQ7Tjs7Ozs7CisyNDZFO0NJUkNMRUQgTlVNQkVSIEZJRlRFRU47Tm87MDtPTjs8Y2lyY2xlPiAwMDMxIDAwMzU7OzsxNTtOOzs7OzsKKzI0NkY7Q0lSQ0xFRCBOVU1CRVIgU0lYVEVFTjtObzswO09OOzxjaXJjbGU+IDAwMzEgMDAzNjs7OzE2O047Ozs7OworMjQ3MDtDSVJDTEVEIE5VTUJFUiBTRVZFTlRFRU47Tm87MDtPTjs8Y2lyY2xlPiAwMDMxIDAwMzc7OzsxNztOOzs7OzsKKzI0NzE7Q0lSQ0xFRCBOVU1CRVIgRUlHSFRFRU47Tm87MDtPTjs8Y2lyY2xlPiAwMDMxIDAwMzg7OzsxODtOOzs7OzsKKzI0NzI7Q0lSQ0xFRCBOVU1CRVIgTklORVRFRU47Tm87MDtPTjs8Y2lyY2xlPiAwMDMxIDAwMzk7OzsxOTtOOzs7OzsKKzI0NzM7Q0lSQ0xFRCBOVU1CRVIgVFdFTlRZO05vOzA7T047PGNpcmNsZT4gMDAzMiAwMDMwOzs7MjA7Tjs7Ozs7CisyNDc0O1BBUkVOVEhFU0laRUQgRElHSVQgT05FO05vOzA7T047PGNvbXBhdD4gMDAyOCAwMDMxIDAwMjk7OzE7MTtOOzs7OzsKKzI0NzU7UEFSRU5USEVTSVpFRCBESUdJVCBUV087Tm87MDtPTjs8Y29tcGF0PiAwMDI4IDAwMzIgMDAyOTs7MjsyO047Ozs7OworMjQ3NjtQQVJFTlRIRVNJWkVEIERJR0lUIFRIUkVFO05vOzA7T047PGNvbXBhdD4gMDAyOCAwMDMzIDAwMjk7OzM7MztOOzs7OzsKKzI0Nzc7UEFSRU5USEVTSVpFRCBESUdJVCBGT1VSO05vOzA7T047PGNvbXBhdD4gMDAyOCAwMDM0IDAwMjk7OzQ7NDtOOzs7OzsKKzI0Nzg7UEFSRU5USEVTSVpFRCBESUdJVCBGSVZFO05vOzA7T047PGNvbXBhdD4gMDAyOCAwMDM1IDAwMjk7OzU7NTtOOzs7OzsKKzI0Nzk7UEFSRU5USEVTSVpFRCBESUdJVCBTSVg7Tm87MDtPTjs8Y29tcGF0PiAwMDI4IDAwMzYgMDAyOTs7Njs2O047Ozs7OworMjQ3QTtQQVJFTlRIRVNJWkVEIERJR0lUIFNFVkVOO05vOzA7T047PGNvbXBhdD4gMDAyOCAwMDM3IDAwMjk7Ozc7NztOOzs7OzsKKzI0N0I7UEFSRU5USEVTSVpFRCBESUdJVCBFSUdIVDtObzswO09OOzxjb21wYXQ+IDAwMjggMDAzOCAwMDI5Ozs4Ozg7Tjs7Ozs7CisyNDdDO1BBUkVOVEhFU0laRUQgRElHSVQgTklORTtObzswO09OOzxjb21wYXQ+IDAwMjggMDAzOSAwMDI5Ozs5Ozk7Tjs7Ozs7CisyNDdEO1BBUkVOVEhFU0laRUQgTlVNQkVSIFRFTjtObzswO09OOzxjb21wYXQ+IDAwMjggMDAzMSAwMDMwIDAwMjk7OzsxMDtOOzs7OzsKKzI0N0U7UEFSRU5USEVTSVpFRCBOVU1CRVIgRUxFVkVOO05vOzA7T047PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzEgMDAyOTs7OzExO047Ozs7OworMjQ3RjtQQVJFTlRIRVNJWkVEIE5VTUJFUiBUV0VMVkU7Tm87MDtPTjs8Y29tcGF0PiAwMDI4IDAwMzEgMDAzMiAwMDI5Ozs7MTI7Tjs7Ozs7CisyNDgwO1BBUkVOVEhFU0laRUQgTlVNQkVSIFRISVJURUVOO05vOzA7T047PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzMgMDAyOTs7OzEzO047Ozs7OworMjQ4MTtQQVJFTlRIRVNJWkVEIE5VTUJFUiBGT1VSVEVFTjtObzswO09OOzxjb21wYXQ+IDAwMjggMDAzMSAwMDM0IDAwMjk7OzsxNDtOOzs7OzsKKzI0ODI7UEFSRU5USEVTSVpFRCBOVU1CRVIgRklGVEVFTjtObzswO09OOzxjb21wYXQ+IDAwMjggMDAzMSAwMDM1IDAwMjk7OzsxNTtOOzs7OzsKKzI0ODM7UEFSRU5USEVTSVpFRCBOVU1CRVIgU0lYVEVFTjtObzswO09OOzxjb21wYXQ+IDAwMjggMDAzMSAwMDM2IDAwMjk7OzsxNjtOOzs7OzsKKzI0ODQ7UEFSRU5USEVTSVpFRCBOVU1CRVIgU0VWRU5URUVOO05vOzA7T047PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzcgMDAyOTs7OzE3O047Ozs7OworMjQ4NTtQQVJFTlRIRVNJWkVEIE5VTUJFUiBFSUdIVEVFTjtObzswO09OOzxjb21wYXQ+IDAwMjggMDAzMSAwMDM4IDAwMjk7OzsxODtOOzs7OzsKKzI0ODY7UEFSRU5USEVTSVpFRCBOVU1CRVIgTklORVRFRU47Tm87MDtPTjs8Y29tcGF0PiAwMDI4IDAwMzEgMDAzOSAwMDI5Ozs7MTk7Tjs7Ozs7CisyNDg3O1BBUkVOVEhFU0laRUQgTlVNQkVSIFRXRU5UWTtObzswO09OOzxjb21wYXQ+IDAwMjggMDAzMiAwMDMwIDAwMjk7OzsyMDtOOzs7OzsKKzI0ODg7RElHSVQgT05FIEZVTEwgU1RPUDtObzswO09OOzxjb21wYXQ+IDAwMzEgMDAyRTs7MTsxO047RElHSVQgT05FIFBFUklPRDs7OzsKKzI0ODk7RElHSVQgVFdPIEZVTEwgU1RPUDtObzswO09OOzxjb21wYXQ+IDAwMzIgMDAyRTs7MjsyO047RElHSVQgVFdPIFBFUklPRDs7OzsKKzI0OEE7RElHSVQgVEhSRUUgRlVMTCBTVE9QO05vOzA7T047PGNvbXBhdD4gMDAzMyAwMDJFOzszOzM7TjtESUdJVCBUSFJFRSBQRVJJT0Q7Ozs7CisyNDhCO0RJR0lUIEZPVVIgRlVMTCBTVE9QO05vOzA7T047PGNvbXBhdD4gMDAzNCAwMDJFOzs0OzQ7TjtESUdJVCBGT1VSIFBFUklPRDs7OzsKKzI0OEM7RElHSVQgRklWRSBGVUxMIFNUT1A7Tm87MDtPTjs8Y29tcGF0PiAwMDM1IDAwMkU7OzU7NTtOO0RJR0lUIEZJVkUgUEVSSU9EOzs7OworMjQ4RDtESUdJVCBTSVggRlVMTCBTVE9QO05vOzA7T047PGNvbXBhdD4gMDAzNiAwMDJFOzs2OzY7TjtESUdJVCBTSVggUEVSSU9EOzs7OworMjQ4RTtESUdJVCBTRVZFTiBGVUxMIFNUT1A7Tm87MDtPTjs8Y29tcGF0PiAwMDM3IDAwMkU7Ozc7NztOO0RJR0lUIFNFVkVOIFBFUklPRDs7OzsKKzI0OEY7RElHSVQgRUlHSFQgRlVMTCBTVE9QO05vOzA7T047PGNvbXBhdD4gMDAzOCAwMDJFOzs4Ozg7TjtESUdJVCBFSUdIVCBQRVJJT0Q7Ozs7CisyNDkwO0RJR0lUIE5JTkUgRlVMTCBTVE9QO05vOzA7T047PGNvbXBhdD4gMDAzOSAwMDJFOzs5Ozk7TjtESUdJVCBOSU5FIFBFUklPRDs7OzsKKzI0OTE7TlVNQkVSIFRFTiBGVUxMIFNUT1A7Tm87MDtPTjs8Y29tcGF0PiAwMDMxIDAwMzAgMDAyRTs7OzEwO047TlVNQkVSIFRFTiBQRVJJT0Q7Ozs7CisyNDkyO05VTUJFUiBFTEVWRU4gRlVMTCBTVE9QO05vOzA7T047PGNvbXBhdD4gMDAzMSAwMDMxIDAwMkU7OzsxMTtOO05VTUJFUiBFTEVWRU4gUEVSSU9EOzs7OworMjQ5MztOVU1CRVIgVFdFTFZFIEZVTEwgU1RPUDtObzswO09OOzxjb21wYXQ+IDAwMzEgMDAzMiAwMDJFOzs7MTI7TjtOVU1CRVIgVFdFTFZFIFBFUklPRDs7OzsKKzI0OTQ7TlVNQkVSIFRISVJURUVOIEZVTEwgU1RPUDtObzswO09OOzxjb21wYXQ+IDAwMzEgMDAzMyAwMDJFOzs7MTM7TjtOVU1CRVIgVEhJUlRFRU4gUEVSSU9EOzs7OworMjQ5NTtOVU1CRVIgRk9VUlRFRU4gRlVMTCBTVE9QO05vOzA7T047PGNvbXBhdD4gMDAzMSAwMDM0IDAwMkU7OzsxNDtOO05VTUJFUiBGT1VSVEVFTiBQRVJJT0Q7Ozs7CisyNDk2O05VTUJFUiBGSUZURUVOIEZVTEwgU1RPUDtObzswO09OOzxjb21wYXQ+IDAwMzEgMDAzNSAwMDJFOzs7MTU7TjtOVU1CRVIgRklGVEVFTiBQRVJJT0Q7Ozs7CisyNDk3O05VTUJFUiBTSVhURUVOIEZVTEwgU1RPUDtObzswO09OOzxjb21wYXQ+IDAwMzEgMDAzNiAwMDJFOzs7MTY7TjtOVU1CRVIgU0lYVEVFTiBQRVJJT0Q7Ozs7CisyNDk4O05VTUJFUiBTRVZFTlRFRU4gRlVMTCBTVE9QO05vOzA7T047PGNvbXBhdD4gMDAzMSAwMDM3IDAwMkU7OzsxNztOO05VTUJFUiBTRVZFTlRFRU4gUEVSSU9EOzs7OworMjQ5OTtOVU1CRVIgRUlHSFRFRU4gRlVMTCBTVE9QO05vOzA7T047PGNvbXBhdD4gMDAzMSAwMDM4IDAwMkU7OzsxODtOO05VTUJFUiBFSUdIVEVFTiBQRVJJT0Q7Ozs7CisyNDlBO05VTUJFUiBOSU5FVEVFTiBGVUxMIFNUT1A7Tm87MDtPTjs8Y29tcGF0PiAwMDMxIDAwMzkgMDAyRTs7OzE5O047TlVNQkVSIE5JTkVURUVOIFBFUklPRDs7OzsKKzI0OUI7TlVNQkVSIFRXRU5UWSBGVUxMIFNUT1A7Tm87MDtPTjs8Y29tcGF0PiAwMDMyIDAwMzAgMDAyRTs7OzIwO047TlVNQkVSIFRXRU5UWSBQRVJJT0Q7Ozs7CisyNDlDO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEE7U287MDtPTjs8Y29tcGF0PiAwMDI4IDAwNjEgMDAyOTs7OztOOzs7OzsKKzI0OUQ7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgQjtTbzswO09OOzxjb21wYXQ+IDAwMjggMDA2MiAwMDI5Ozs7O047Ozs7OworMjQ5RTtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBDO1NvOzA7T047PGNvbXBhdD4gMDAyOCAwMDYzIDAwMjk7Ozs7Tjs7Ozs7CisyNDlGO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEQ7U287MDtPTjs8Y29tcGF0PiAwMDI4IDAwNjQgMDAyOTs7OztOOzs7OzsKKzI0QTA7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgRTtTbzswO09OOzxjb21wYXQ+IDAwMjggMDA2NSAwMDI5Ozs7O047Ozs7OworMjRBMTtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBGO1NvOzA7T047PGNvbXBhdD4gMDAyOCAwMDY2IDAwMjk7Ozs7Tjs7Ozs7CisyNEEyO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEc7U287MDtPTjs8Y29tcGF0PiAwMDI4IDAwNjcgMDAyOTs7OztOOzs7OzsKKzI0QTM7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgSDtTbzswO09OOzxjb21wYXQ+IDAwMjggMDA2OCAwMDI5Ozs7O047Ozs7OworMjRBNDtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBJO1NvOzA7T047PGNvbXBhdD4gMDAyOCAwMDY5IDAwMjk7Ozs7Tjs7Ozs7CisyNEE1O1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEo7U287MDtPTjs8Y29tcGF0PiAwMDI4IDAwNkEgMDAyOTs7OztOOzs7OzsKKzI0QTY7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgSztTbzswO09OOzxjb21wYXQ+IDAwMjggMDA2QiAwMDI5Ozs7O047Ozs7OworMjRBNztQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBMO1NvOzA7T047PGNvbXBhdD4gMDAyOCAwMDZDIDAwMjk7Ozs7Tjs7Ozs7CisyNEE4O1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIE07U287MDtPTjs8Y29tcGF0PiAwMDI4IDAwNkQgMDAyOTs7OztOOzs7OzsKKzI0QTk7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgTjtTbzswO09OOzxjb21wYXQ+IDAwMjggMDA2RSAwMDI5Ozs7O047Ozs7OworMjRBQTtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBPO1NvOzA7T047PGNvbXBhdD4gMDAyOCAwMDZGIDAwMjk7Ozs7Tjs7Ozs7CisyNEFCO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFA7U287MDtPTjs8Y29tcGF0PiAwMDI4IDAwNzAgMDAyOTs7OztOOzs7OzsKKzI0QUM7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgUTtTbzswO09OOzxjb21wYXQ+IDAwMjggMDA3MSAwMDI5Ozs7O047Ozs7OworMjRBRDtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBSO1NvOzA7T047PGNvbXBhdD4gMDAyOCAwMDcyIDAwMjk7Ozs7Tjs7Ozs7CisyNEFFO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFM7U287MDtPTjs8Y29tcGF0PiAwMDI4IDAwNzMgMDAyOTs7OztOOzs7OzsKKzI0QUY7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgVDtTbzswO09OOzxjb21wYXQ+IDAwMjggMDA3NCAwMDI5Ozs7O047Ozs7OworMjRCMDtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBVO1NvOzA7T047PGNvbXBhdD4gMDAyOCAwMDc1IDAwMjk7Ozs7Tjs7Ozs7CisyNEIxO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFY7U287MDtPTjs8Y29tcGF0PiAwMDI4IDAwNzYgMDAyOTs7OztOOzs7OzsKKzI0QjI7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgVztTbzswO09OOzxjb21wYXQ+IDAwMjggMDA3NyAwMDI5Ozs7O047Ozs7OworMjRCMztQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBYO1NvOzA7T047PGNvbXBhdD4gMDAyOCAwMDc4IDAwMjk7Ozs7Tjs7Ozs7CisyNEI0O1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFk7U287MDtPTjs8Y29tcGF0PiAwMDI4IDAwNzkgMDAyOTs7OztOOzs7OzsKKzI0QjU7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgWjtTbzswO09OOzxjb21wYXQ+IDAwMjggMDA3QSAwMDI5Ozs7O047Ozs7OworMjRCNjtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEE7U287MDtPTjs8Y2lyY2xlPiAwMDQxOzs7O047Ozs7MjREMDsKKzI0Qjc7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBCO1NvOzA7T047PGNpcmNsZT4gMDA0Mjs7OztOOzs7OzI0RDE7CisyNEI4O0NJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgQztTbzswO09OOzxjaXJjbGU+IDAwNDM7Ozs7Tjs7OzsyNEQyOworMjRCOTtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEQ7U287MDtPTjs8Y2lyY2xlPiAwMDQ0Ozs7O047Ozs7MjREMzsKKzI0QkE7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBFO1NvOzA7T047PGNpcmNsZT4gMDA0NTs7OztOOzs7OzI0RDQ7CisyNEJCO0NJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgRjtTbzswO09OOzxjaXJjbGU+IDAwNDY7Ozs7Tjs7OzsyNEQ1OworMjRCQztDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEc7U287MDtPTjs8Y2lyY2xlPiAwMDQ3Ozs7O047Ozs7MjRENjsKKzI0QkQ7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBIO1NvOzA7T047PGNpcmNsZT4gMDA0ODs7OztOOzs7OzI0RDc7CisyNEJFO0NJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgSTtTbzswO09OOzxjaXJjbGU+IDAwNDk7Ozs7Tjs7OzsyNEQ4OworMjRCRjtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEo7U287MDtPTjs8Y2lyY2xlPiAwMDRBOzs7O047Ozs7MjREOTsKKzI0QzA7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBLO1NvOzA7T047PGNpcmNsZT4gMDA0Qjs7OztOOzs7OzI0REE7CisyNEMxO0NJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTDtTbzswO09OOzxjaXJjbGU+IDAwNEM7Ozs7Tjs7OzsyNERCOworMjRDMjtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIE07U287MDtPTjs8Y2lyY2xlPiAwMDREOzs7O047Ozs7MjREQzsKKzI0QzM7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBOO1NvOzA7T047PGNpcmNsZT4gMDA0RTs7OztOOzs7OzI0REQ7CisyNEM0O0NJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgTztTbzswO09OOzxjaXJjbGU+IDAwNEY7Ozs7Tjs7OzsyNERFOworMjRDNTtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFA7U287MDtPTjs8Y2lyY2xlPiAwMDUwOzs7O047Ozs7MjRERjsKKzI0QzY7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBRO1NvOzA7T047PGNpcmNsZT4gMDA1MTs7OztOOzs7OzI0RTA7CisyNEM3O0NJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgUjtTbzswO09OOzxjaXJjbGU+IDAwNTI7Ozs7Tjs7OzsyNEUxOworMjRDODtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFM7U287MDtPTjs8Y2lyY2xlPiAwMDUzOzs7O047Ozs7MjRFMjsKKzI0Qzk7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBUO1NvOzA7T047PGNpcmNsZT4gMDA1NDs7OztOOzs7OzI0RTM7CisyNENBO0NJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgVTtTbzswO09OOzxjaXJjbGU+IDAwNTU7Ozs7Tjs7OzsyNEU0OworMjRDQjtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFY7U287MDtPTjs8Y2lyY2xlPiAwMDU2Ozs7O047Ozs7MjRFNTsKKzI0Q0M7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBXO1NvOzA7T047PGNpcmNsZT4gMDA1Nzs7OztOOzs7OzI0RTY7CisyNENEO0NJUkNMRUQgTEFUSU4gQ0FQSVRBTCBMRVRURVIgWDtTbzswO09OOzxjaXJjbGU+IDAwNTg7Ozs7Tjs7OzsyNEU3OworMjRDRTtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFk7U287MDtPTjs8Y2lyY2xlPiAwMDU5Ozs7O047Ozs7MjRFODsKKzI0Q0Y7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBaO1NvOzA7T047PGNpcmNsZT4gMDA1QTs7OztOOzs7OzI0RTk7CisyNEQwO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEE7U287MDtPTjs8Y2lyY2xlPiAwMDYxOzs7O047OzsyNEI2OzsyNEI2CisyNEQxO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEI7U287MDtPTjs8Y2lyY2xlPiAwMDYyOzs7O047OzsyNEI3OzsyNEI3CisyNEQyO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEM7U287MDtPTjs8Y2lyY2xlPiAwMDYzOzs7O047OzsyNEI4OzsyNEI4CisyNEQzO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEQ7U287MDtPTjs8Y2lyY2xlPiAwMDY0Ozs7O047OzsyNEI5OzsyNEI5CisyNEQ0O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEU7U287MDtPTjs8Y2lyY2xlPiAwMDY1Ozs7O047OzsyNEJBOzsyNEJBCisyNEQ1O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEY7U287MDtPTjs8Y2lyY2xlPiAwMDY2Ozs7O047OzsyNEJCOzsyNEJCCisyNEQ2O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEc7U287MDtPTjs8Y2lyY2xlPiAwMDY3Ozs7O047OzsyNEJDOzsyNEJDCisyNEQ3O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEg7U287MDtPTjs8Y2lyY2xlPiAwMDY4Ozs7O047OzsyNEJEOzsyNEJECisyNEQ4O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEk7U287MDtPTjs8Y2lyY2xlPiAwMDY5Ozs7O047OzsyNEJFOzsyNEJFCisyNEQ5O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEo7U287MDtPTjs8Y2lyY2xlPiAwMDZBOzs7O047OzsyNEJGOzsyNEJGCisyNERBO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEs7U287MDtPTjs8Y2lyY2xlPiAwMDZCOzs7O047OzsyNEMwOzsyNEMwCisyNERCO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEw7U287MDtPTjs8Y2lyY2xlPiAwMDZDOzs7O047OzsyNEMxOzsyNEMxCisyNERDO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIE07U287MDtPTjs8Y2lyY2xlPiAwMDZEOzs7O047OzsyNEMyOzsyNEMyCisyNEREO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIE47U287MDtPTjs8Y2lyY2xlPiAwMDZFOzs7O047OzsyNEMzOzsyNEMzCisyNERFO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIE87U287MDtPTjs8Y2lyY2xlPiAwMDZGOzs7O047OzsyNEM0OzsyNEM0CisyNERGO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFA7U287MDtPTjs8Y2lyY2xlPiAwMDcwOzs7O047OzsyNEM1OzsyNEM1CisyNEUwO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFE7U287MDtPTjs8Y2lyY2xlPiAwMDcxOzs7O047OzsyNEM2OzsyNEM2CisyNEUxO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFI7U287MDtPTjs8Y2lyY2xlPiAwMDcyOzs7O047OzsyNEM3OzsyNEM3CisyNEUyO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFM7U287MDtPTjs8Y2lyY2xlPiAwMDczOzs7O047OzsyNEM4OzsyNEM4CisyNEUzO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFQ7U287MDtPTjs8Y2lyY2xlPiAwMDc0Ozs7O047OzsyNEM5OzsyNEM5CisyNEU0O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFU7U287MDtPTjs8Y2lyY2xlPiAwMDc1Ozs7O047OzsyNENBOzsyNENBCisyNEU1O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFY7U287MDtPTjs8Y2lyY2xlPiAwMDc2Ozs7O047OzsyNENCOzsyNENCCisyNEU2O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFc7U287MDtPTjs8Y2lyY2xlPiAwMDc3Ozs7O047OzsyNENDOzsyNENDCisyNEU3O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFg7U287MDtPTjs8Y2lyY2xlPiAwMDc4Ozs7O047OzsyNENEOzsyNENECisyNEU4O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFk7U287MDtPTjs8Y2lyY2xlPiAwMDc5Ozs7O047OzsyNENFOzsyNENFCisyNEU5O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFo7U287MDtPTjs8Y2lyY2xlPiAwMDdBOzs7O047OzsyNENGOzsyNENGCisyNEVBO0NJUkNMRUQgRElHSVQgWkVSTztObzswO09OOzxjaXJjbGU+IDAwMzA7OzA7MDtOOzs7OzsKKzI1MDA7Qk9YIERSQVdJTkdTIExJR0hUIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBIT1JJWk9OVEFMOzs7OworMjUwMTtCT1ggRFJBV0lOR1MgSEVBVlkgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIEhPUklaT05UQUw7Ozs7CisyNTAyO0JPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFZFUlRJQ0FMOzs7OworMjUwMztCT1ggRFJBV0lOR1MgSEVBVlkgVkVSVElDQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBWRVJUSUNBTDs7OzsKKzI1MDQ7Qk9YIERSQVdJTkdTIExJR0hUIFRSSVBMRSBEQVNIIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBUUklQTEUgREFTSCBIT1JJWk9OVEFMOzs7OworMjUwNTtCT1ggRFJBV0lOR1MgSEVBVlkgVFJJUExFIERBU0ggSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFRSSVBMRSBEQVNIIEhPUklaT05UQUw7Ozs7CisyNTA2O0JPWCBEUkFXSU5HUyBMSUdIVCBUUklQTEUgREFTSCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFRSSVBMRSBEQVNIIFZFUlRJQ0FMOzs7OworMjUwNztCT1ggRFJBV0lOR1MgSEVBVlkgVFJJUExFIERBU0ggVkVSVElDQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBUUklQTEUgREFTSCBWRVJUSUNBTDs7OzsKKzI1MDg7Qk9YIERSQVdJTkdTIExJR0hUIFFVQURSVVBMRSBEQVNIIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBRVUFEUlVQTEUgREFTSCBIT1JJWk9OVEFMOzs7OworMjUwOTtCT1ggRFJBV0lOR1MgSEVBVlkgUVVBRFJVUExFIERBU0ggSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFFVQURSVVBMRSBEQVNIIEhPUklaT05UQUw7Ozs7CisyNTBBO0JPWCBEUkFXSU5HUyBMSUdIVCBRVUFEUlVQTEUgREFTSCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFFVQURSVVBMRSBEQVNIIFZFUlRJQ0FMOzs7OworMjUwQjtCT1ggRFJBV0lOR1MgSEVBVlkgUVVBRFJVUExFIERBU0ggVkVSVElDQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBRVUFEUlVQTEUgREFTSCBWRVJUSUNBTDs7OzsKKzI1MEM7Qk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgRE9XTiBBTkQgUklHSFQ7Ozs7CisyNTBEO0JPWCBEUkFXSU5HUyBET1dOIExJR0hUIEFORCBSSUdIVCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gTElHSFQgQU5EIFJJR0hUIEhFQVZZOzs7OworMjUwRTtCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgUklHSFQgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIEhFQVZZIEFORCBSSUdIVCBMSUdIVDs7OzsKKzI1MEY7Qk9YIERSQVdJTkdTIEhFQVZZIERPV04gQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9XTiBBTkQgUklHSFQ7Ozs7CisyNTEwO0JPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgRE9XTiBBTkQgTEVGVDs7OzsKKzI1MTE7Qk9YIERSQVdJTkdTIERPV04gTElHSFQgQU5EIExFRlQgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIExJR0hUIEFORCBMRUZUIEhFQVZZOzs7OworMjUxMjtCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgTEVGVCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gSEVBVlkgQU5EIExFRlQgTElHSFQ7Ozs7CisyNTEzO0JPWCBEUkFXSU5HUyBIRUFWWSBET1dOIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9XTiBBTkQgTEVGVDs7OzsKKzI1MTQ7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFVQIEFORCBSSUdIVDs7OzsKKzI1MTU7Qk9YIERSQVdJTkdTIFVQIExJR0hUIEFORCBSSUdIVCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBSSUdIVCBIRUFWWTs7OzsKKzI1MTY7Qk9YIERSQVdJTkdTIFVQIEhFQVZZIEFORCBSSUdIVCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFVQIEhFQVZZIEFORCBSSUdIVCBMSUdIVDs7OzsKKzI1MTc7Qk9YIERSQVdJTkdTIEhFQVZZIFVQIEFORCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFVQIEFORCBSSUdIVDs7OzsKKzI1MTg7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgVVAgQU5EIExFRlQ7Ozs7CisyNTE5O0JPWCBEUkFXSU5HUyBVUCBMSUdIVCBBTkQgTEVGVCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBMRUZUIEhFQVZZOzs7OworMjUxQTtCT1ggRFJBV0lOR1MgVVAgSEVBVlkgQU5EIExFRlQgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBIRUFWWSBBTkQgTEVGVCBMSUdIVDs7OzsKKzI1MUI7Qk9YIERSQVdJTkdTIEhFQVZZIFVQIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgVVAgQU5EIExFRlQ7Ozs7CisyNTFDO0JPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQ7Ozs7CisyNTFEO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBMSUdIVCBBTkQgUklHSFQgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBMSUdIVCBBTkQgUklHSFQgSEVBVlk7Ozs7CisyNTFFO0JPWCBEUkFXSU5HUyBVUCBIRUFWWSBBTkQgUklHSFQgRE9XTiBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFVQIEhFQVZZIEFORCBSSUdIVCBET1dOIExJR0hUOzs7OworMjUxRjtCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgUklHSFQgVVAgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIEhFQVZZIEFORCBSSUdIVCBVUCBMSUdIVDs7OzsKKzI1MjA7Qk9YIERSQVdJTkdTIFZFUlRJQ0FMIEhFQVZZIEFORCBSSUdIVCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIEhFQVZZIEFORCBSSUdIVCBMSUdIVDs7OzsKKzI1MjE7Qk9YIERSQVdJTkdTIERPV04gTElHSFQgQU5EIFJJR0hUIFVQIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBMSUdIVCBBTkQgUklHSFQgVVAgSEVBVlk7Ozs7CisyNTIyO0JPWCBEUkFXSU5HUyBVUCBMSUdIVCBBTkQgUklHSFQgRE9XTiBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBSSUdIVCBET1dOIEhFQVZZOzs7OworMjUyMztCT1ggRFJBV0lOR1MgSEVBVlkgVkVSVElDQUwgQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgVkVSVElDQUwgQU5EIFJJR0hUOzs7OworMjUyNDtCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVDs7OzsKKzI1MjU7Qk9YIERSQVdJTkdTIFZFUlRJQ0FMIExJR0hUIEFORCBMRUZUIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgVkVSVElDQUwgTElHSFQgQU5EIExFRlQgSEVBVlk7Ozs7CisyNTI2O0JPWCBEUkFXSU5HUyBVUCBIRUFWWSBBTkQgTEVGVCBET1dOIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgVVAgSEVBVlkgQU5EIExFRlQgRE9XTiBMSUdIVDs7OzsKKzI1Mjc7Qk9YIERSQVdJTkdTIERPV04gSEVBVlkgQU5EIExFRlQgVVAgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIEhFQVZZIEFORCBMRUZUIFVQIExJR0hUOzs7OworMjUyODtCT1ggRFJBV0lOR1MgVkVSVElDQUwgSEVBVlkgQU5EIExFRlQgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBIRUFWWSBBTkQgTEVGVCBMSUdIVDs7OzsKKzI1Mjk7Qk9YIERSQVdJTkdTIERPV04gTElHSFQgQU5EIExFRlQgVVAgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIExJR0hUIEFORCBMRUZUIFVQIEhFQVZZOzs7OworMjUyQTtCT1ggRFJBV0lOR1MgVVAgTElHSFQgQU5EIExFRlQgRE9XTiBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBMRUZUIERPV04gSEVBVlk7Ozs7CisyNTJCO0JPWCBEUkFXSU5HUyBIRUFWWSBWRVJUSUNBTCBBTkQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFZFUlRJQ0FMIEFORCBMRUZUOzs7OworMjUyQztCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERPV04gQU5EIEhPUklaT05UQUw7Ozs7CisyNTJEO0JPWCBEUkFXSU5HUyBMRUZUIEhFQVZZIEFORCBSSUdIVCBET1dOIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBIRUFWWSBBTkQgUklHSFQgRE9XTiBMSUdIVDs7OzsKKzI1MkU7Qk9YIERSQVdJTkdTIFJJR0hUIEhFQVZZIEFORCBMRUZUIERPV04gTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBIRUFWWSBBTkQgTEVGVCBET1dOIExJR0hUOzs7OworMjUyRjtCT1ggRFJBV0lOR1MgRE9XTiBMSUdIVCBBTkQgSE9SSVpPTlRBTCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gTElHSFQgQU5EIEhPUklaT05UQUwgSEVBVlk7Ozs7CisyNTMwO0JPWCBEUkFXSU5HUyBET1dOIEhFQVZZIEFORCBIT1JJWk9OVEFMIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBIRUFWWSBBTkQgSE9SSVpPTlRBTCBMSUdIVDs7OzsKKzI1MzE7Qk9YIERSQVdJTkdTIFJJR0hUIExJR0hUIEFORCBMRUZUIERPV04gSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBMSUdIVCBBTkQgTEVGVCBET1dOIEhFQVZZOzs7OworMjUzMjtCT1ggRFJBV0lOR1MgTEVGVCBMSUdIVCBBTkQgUklHSFQgRE9XTiBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIExFRlQgTElHSFQgQU5EIFJJR0hUIERPV04gSEVBVlk7Ozs7CisyNTMzO0JPWCBEUkFXSU5HUyBIRUFWWSBET1dOIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9XTiBBTkQgSE9SSVpPTlRBTDs7OzsKKzI1MzQ7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgVVAgQU5EIEhPUklaT05UQUw7Ozs7CisyNTM1O0JPWCBEUkFXSU5HUyBMRUZUIEhFQVZZIEFORCBSSUdIVCBVUCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExFRlQgSEVBVlkgQU5EIFJJR0hUIFVQIExJR0hUOzs7OworMjUzNjtCT1ggRFJBV0lOR1MgUklHSFQgSEVBVlkgQU5EIExFRlQgVVAgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBIRUFWWSBBTkQgTEVGVCBVUCBMSUdIVDs7OzsKKzI1Mzc7Qk9YIERSQVdJTkdTIFVQIExJR0hUIEFORCBIT1JJWk9OVEFMIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgVVAgTElHSFQgQU5EIEhPUklaT05UQUwgSEVBVlk7Ozs7CisyNTM4O0JPWCBEUkFXSU5HUyBVUCBIRUFWWSBBTkQgSE9SSVpPTlRBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFVQIEhFQVZZIEFORCBIT1JJWk9OVEFMIExJR0hUOzs7OworMjUzOTtCT1ggRFJBV0lOR1MgUklHSFQgTElHSFQgQU5EIExFRlQgVVAgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBMSUdIVCBBTkQgTEVGVCBVUCBIRUFWWTs7OzsKKzI1M0E7Qk9YIERSQVdJTkdTIExFRlQgTElHSFQgQU5EIFJJR0hUIFVQIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBMSUdIVCBBTkQgUklHSFQgVVAgSEVBVlk7Ozs7CisyNTNCO0JPWCBEUkFXSU5HUyBIRUFWWSBVUCBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFVQIEFORCBIT1JJWk9OVEFMOzs7OworMjUzQztCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDs7OzsKKzI1M0Q7Qk9YIERSQVdJTkdTIExFRlQgSEVBVlkgQU5EIFJJR0hUIFZFUlRJQ0FMIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBIRUFWWSBBTkQgUklHSFQgVkVSVElDQUwgTElHSFQ7Ozs7CisyNTNFO0JPWCBEUkFXSU5HUyBSSUdIVCBIRUFWWSBBTkQgTEVGVCBWRVJUSUNBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFJJR0hUIEhFQVZZIEFORCBMRUZUIFZFUlRJQ0FMIExJR0hUOzs7OworMjUzRjtCT1ggRFJBV0lOR1MgVkVSVElDQUwgTElHSFQgQU5EIEhPUklaT05UQUwgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBMSUdIVCBBTkQgSE9SSVpPTlRBTCBIRUFWWTs7OzsKKzI1NDA7Qk9YIERSQVdJTkdTIFVQIEhFQVZZIEFORCBET1dOIEhPUklaT05UQUwgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBIRUFWWSBBTkQgRE9XTiBIT1JJWk9OVEFMIExJR0hUOzs7OworMjU0MTtCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgVVAgSE9SSVpPTlRBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gSEVBVlkgQU5EIFVQIEhPUklaT05UQUwgTElHSFQ7Ozs7CisyNTQyO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBIRUFWWSBBTkQgSE9SSVpPTlRBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIEhFQVZZIEFORCBIT1JJWk9OVEFMIExJR0hUOzs7OworMjU0MztCT1ggRFJBV0lOR1MgTEVGVCBVUCBIRUFWWSBBTkQgUklHSFQgRE9XTiBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExFRlQgVVAgSEVBVlkgQU5EIFJJR0hUIERPV04gTElHSFQ7Ozs7CisyNTQ0O0JPWCBEUkFXSU5HUyBSSUdIVCBVUCBIRUFWWSBBTkQgTEVGVCBET1dOIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgUklHSFQgVVAgSEVBVlkgQU5EIExFRlQgRE9XTiBMSUdIVDs7OzsKKzI1NDU7Qk9YIERSQVdJTkdTIExFRlQgRE9XTiBIRUFWWSBBTkQgUklHSFQgVVAgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMRUZUIERPV04gSEVBVlkgQU5EIFJJR0hUIFVQIExJR0hUOzs7OworMjU0NjtCT1ggRFJBV0lOR1MgUklHSFQgRE9XTiBIRUFWWSBBTkQgTEVGVCBVUCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFJJR0hUIERPV04gSEVBVlkgQU5EIExFRlQgVVAgTElHSFQ7Ozs7CisyNTQ3O0JPWCBEUkFXSU5HUyBET1dOIExJR0hUIEFORCBVUCBIT1JJWk9OVEFMIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBMSUdIVCBBTkQgVVAgSE9SSVpPTlRBTCBIRUFWWTs7OzsKKzI1NDg7Qk9YIERSQVdJTkdTIFVQIExJR0hUIEFORCBET1dOIEhPUklaT05UQUwgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBMSUdIVCBBTkQgRE9XTiBIT1JJWk9OVEFMIEhFQVZZOzs7OworMjU0OTtCT1ggRFJBV0lOR1MgUklHSFQgTElHSFQgQU5EIExFRlQgVkVSVElDQUwgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBMSUdIVCBBTkQgTEVGVCBWRVJUSUNBTCBIRUFWWTs7OzsKKzI1NEE7Qk9YIERSQVdJTkdTIExFRlQgTElHSFQgQU5EIFJJR0hUIFZFUlRJQ0FMIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBMSUdIVCBBTkQgUklHSFQgVkVSVElDQUwgSEVBVlk7Ozs7CisyNTRCO0JPWCBEUkFXSU5HUyBIRUFWWSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMOzs7OworMjU0QztCT1ggRFJBV0lOR1MgTElHSFQgRE9VQkxFIERBU0ggSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERPVUJMRSBEQVNIIEhPUklaT05UQUw7Ozs7CisyNTREO0JPWCBEUkFXSU5HUyBIRUFWWSBET1VCTEUgREFTSCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9VQkxFIERBU0ggSE9SSVpPTlRBTDs7OzsKKzI1NEU7Qk9YIERSQVdJTkdTIExJR0hUIERPVUJMRSBEQVNIIFZFUlRJQ0FMO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgRE9VQkxFIERBU0ggVkVSVElDQUw7Ozs7CisyNTRGO0JPWCBEUkFXSU5HUyBIRUFWWSBET1VCTEUgREFTSCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIERPVUJMRSBEQVNIIFZFUlRJQ0FMOzs7OworMjU1MDtCT1ggRFJBV0lOR1MgRE9VQkxFIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgSE9SSVpPTlRBTDs7OzsKKzI1NTE7Qk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBWRVJUSUNBTDs7OzsKKzI1NTI7Qk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFOzs7OworMjU1MztCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gRE9VQkxFIEFORCBSSUdIVCBTSU5HTEU7Ozs7CisyNTU0O0JPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgRE9XTiBBTkQgUklHSFQ7Ozs7CisyNTU1O0JPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7Ozs7CisyNTU2O0JPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEU7Ozs7CisyNTU3O0JPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBET1dOIEFORCBMRUZUOzs7OworMjU1ODtCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBSSUdIVCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRTs7OzsKKzI1NTk7Qk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFO1NvOzA7T047Ozs7O047Rk9STVMgVVAgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEU7Ozs7CisyNTVBO0JPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgRE9VQkxFIFVQIEFORCBSSUdIVDs7OzsKKzI1NUI7Qk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFOzs7OworMjU1QztCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBMRUZUIFNJTkdMRTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIERPVUJMRSBBTkQgTEVGVCBTSU5HTEU7Ozs7CisyNTVEO0JPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgVVAgQU5EIExFRlQ7Ozs7CisyNTVFO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFOzs7OworMjU1RjtCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRTs7OzsKKzI1NjA7Qk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUOzs7OworMjU2MTtCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBMRUZUIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7Ozs7CisyNTYyO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIExFRlQgU0lOR0xFO1NvOzA7T047Ozs7O047Rk9STVMgVkVSVElDQUwgRE9VQkxFIEFORCBMRUZUIFNJTkdMRTs7OzsKKzI1NjM7Qk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVDs7OzsKKzI1NjQ7Qk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTs7OzsKKzI1NjU7Qk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRTs7OzsKKzI1NjY7Qk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUw7Ozs7CisyNTY3O0JPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFO1NvOzA7T047Ozs7O047Rk9STVMgVVAgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTs7OzsKKzI1Njg7Qk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFOzs7OworMjU2OTtCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMOzs7OworMjU2QTtCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEU7Ozs7CisyNTZCO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFO1NvOzA7T047Ozs7O047Rk9STVMgVkVSVElDQUwgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRTs7OzsKKzI1NkM7Qk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDs7OzsKKzI1NkQ7Qk9YIERSQVdJTkdTIExJR0hUIEFSQyBET1dOIEFORCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIEFSQyBET1dOIEFORCBSSUdIVDs7OzsKKzI1NkU7Qk9YIERSQVdJTkdTIExJR0hUIEFSQyBET1dOIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgQVJDIERPV04gQU5EIExFRlQ7Ozs7CisyNTZGO0JPWCBEUkFXSU5HUyBMSUdIVCBBUkMgVVAgQU5EIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBBUkMgVVAgQU5EIExFRlQ7Ozs7CisyNTcwO0JPWCBEUkFXSU5HUyBMSUdIVCBBUkMgVVAgQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgQVJDIFVQIEFORCBSSUdIVDs7OzsKKzI1NzE7Qk9YIERSQVdJTkdTIExJR0hUIERJQUdPTkFMIFVQUEVSIFJJR0hUIFRPIExPV0VSIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBESUFHT05BTCBVUFBFUiBSSUdIVCBUTyBMT1dFUiBMRUZUOzs7OworMjU3MjtCT1ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgTEVGVCBUTyBMT1dFUiBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERJQUdPTkFMIFVQUEVSIExFRlQgVE8gTE9XRVIgUklHSFQ7Ozs7CisyNTczO0JPWCBEUkFXSU5HUyBMSUdIVCBESUFHT05BTCBDUk9TUztTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERJQUdPTkFMIENST1NTOzs7OworMjU3NDtCT1ggRFJBV0lOR1MgTElHSFQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIExFRlQ7Ozs7CisyNTc1O0JPWCBEUkFXSU5HUyBMSUdIVCBVUDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFVQOzs7OworMjU3NjtCT1ggRFJBV0lOR1MgTElHSFQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBSSUdIVDs7OzsKKzI1Nzc7Qk9YIERSQVdJTkdTIExJR0hUIERPV047U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBET1dOOzs7OworMjU3ODtCT1ggRFJBV0lOR1MgSEVBVlkgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIExFRlQ7Ozs7CisyNTc5O0JPWCBEUkFXSU5HUyBIRUFWWSBVUDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFVQOzs7OworMjU3QTtCT1ggRFJBV0lOR1MgSEVBVlkgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBSSUdIVDs7OzsKKzI1N0I7Qk9YIERSQVdJTkdTIEhFQVZZIERPV047U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBET1dOOzs7OworMjU3QztCT1ggRFJBV0lOR1MgTElHSFQgTEVGVCBBTkQgSEVBVlkgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBMRUZUIEFORCBIRUFWWSBSSUdIVDs7OzsKKzI1N0Q7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIRUFWWSBET1dOO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgVVAgQU5EIEhFQVZZIERPV047Ozs7CisyNTdFO0JPWCBEUkFXSU5HUyBIRUFWWSBMRUZUIEFORCBMSUdIVCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIExFRlQgQU5EIExJR0hUIFJJR0hUOzs7OworMjU3RjtCT1ggRFJBV0lOR1MgSEVBVlkgVVAgQU5EIExJR0hUIERPV047U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBVUCBBTkQgTElHSFQgRE9XTjs7OzsKKzI1ODA7VVBQRVIgSEFMRiBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1ODE7TE9XRVIgT05FIEVJR0hUSCBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1ODI7TE9XRVIgT05FIFFVQVJURVIgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTgzO0xPV0VSIFRIUkVFIEVJR0hUSFMgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTg0O0xPV0VSIEhBTEYgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTg1O0xPV0VSIEZJVkUgRUlHSFRIUyBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1ODY7TE9XRVIgVEhSRUUgUVVBUlRFUlMgQkxPQ0s7U287MDtPTjs7Ozs7TjtMT1dFUiBUSFJFRSBRVUFSVEVSIEJMT0NLOzs7OworMjU4NztMT1dFUiBTRVZFTiBFSUdIVEhTIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU4ODtGVUxMIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU4OTtMRUZUIFNFVkVOIEVJR0hUSFMgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNThBO0xFRlQgVEhSRUUgUVVBUlRFUlMgQkxPQ0s7U287MDtPTjs7Ozs7TjtMRUZUIFRIUkVFIFFVQVJURVIgQkxPQ0s7Ozs7CisyNThCO0xFRlQgRklWRSBFSUdIVEhTIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU4QztMRUZUIEhBTEYgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNThEO0xFRlQgVEhSRUUgRUlHSFRIUyBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1OEU7TEVGVCBPTkUgUVVBUlRFUiBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1OEY7TEVGVCBPTkUgRUlHSFRIIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU5MDtSSUdIVCBIQUxGIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU5MTtMSUdIVCBTSEFERTtTbzswO09OOzs7OztOOzs7OzsKKzI1OTI7TUVESVVNIFNIQURFO1NvOzA7T047Ozs7O047Ozs7OworMjU5MztEQVJLIFNIQURFO1NvOzA7T047Ozs7O047Ozs7OworMjU5NDtVUFBFUiBPTkUgRUlHSFRIIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU5NTtSSUdIVCBPTkUgRUlHSFRIIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjVBMDtCTEFDSyBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUExO1dISVRFIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzI1QTI7V0hJVEUgU1FVQVJFIFdJVEggUk9VTkRFRCBDT1JORVJTO1NvOzA7T047Ozs7O047Ozs7OworMjVBMztXSElURSBTUVVBUkUgQ09OVEFJTklORyBCTEFDSyBTTUFMTCBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUE0O1NRVUFSRSBXSVRIIEhPUklaT05UQUwgRklMTDtTbzswO09OOzs7OztOOzs7OzsKKzI1QTU7U1FVQVJFIFdJVEggVkVSVElDQUwgRklMTDtTbzswO09OOzs7OztOOzs7OzsKKzI1QTY7U1FVQVJFIFdJVEggT1JUSE9HT05BTCBDUk9TU0hBVENIIEZJTEw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUE3O1NRVUFSRSBXSVRIIFVQUEVSIExFRlQgVE8gTE9XRVIgUklHSFQgRklMTDtTbzswO09OOzs7OztOOzs7OzsKKzI1QTg7U1FVQVJFIFdJVEggVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVGVCBGSUxMO1NvOzA7T047Ozs7O047Ozs7OworMjVBOTtTUVVBUkUgV0lUSCBESUFHT05BTCBDUk9TU0hBVENIIEZJTEw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUFBO0JMQUNLIFNNQUxMIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzI1QUI7V0hJVEUgU01BTEwgU1FVQVJFO1NvOzA7T047Ozs7O047Ozs7OworMjVBQztCTEFDSyBSRUNUQU5HTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUFEO1dISVRFIFJFQ1RBTkdMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1QUU7QkxBQ0sgVkVSVElDQUwgUkVDVEFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVBRjtXSElURSBWRVJUSUNBTCBSRUNUQU5HTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUIwO0JMQUNLIFBBUkFMTEVMT0dSQU07U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUIxO1dISVRFIFBBUkFMTEVMT0dSQU07U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUIyO0JMQUNLIFVQLVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgVVAgUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUIzO1dISVRFIFVQLVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgVVAgUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUI0O0JMQUNLIFVQLVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgVVAgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUI1O1dISVRFIFVQLVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgVVAgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUI2O0JMQUNLIFJJR0hULVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgUklHSFQgUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUI3O1dISVRFIFJJR0hULVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgUklHSFQgUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUI4O0JMQUNLIFJJR0hULVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgUklHSFQgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUI5O1dISVRFIFJJR0hULVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgUklHSFQgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUJBO0JMQUNLIFJJR0hULVBPSU5USU5HIFBPSU5URVI7U287MDtPTjs7Ozs7TjtCTEFDSyBSSUdIVCBQT0lOVElORyBQT0lOVEVSOzs7OworMjVCQjtXSElURSBSSUdIVC1QT0lOVElORyBQT0lOVEVSO1NvOzA7T047Ozs7O047V0hJVEUgUklHSFQgUE9JTlRJTkcgUE9JTlRFUjs7OzsKKzI1QkM7QkxBQ0sgRE9XTi1QT0lOVElORyBUUklBTkdMRTtTbzswO09OOzs7OztOO0JMQUNLIERPV04gUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUJEO1dISVRFIERPV04tUE9JTlRJTkcgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtXSElURSBET1dOIFBPSU5USU5HIFRSSUFOR0xFOzs7OworMjVCRTtCTEFDSyBET1dOLVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgRE9XTiBQT0lOVElORyBTTUFMTCBUUklBTkdMRTs7OzsKKzI1QkY7V0hJVEUgRE9XTi1QT0lOVElORyBTTUFMTCBUUklBTkdMRTtTbzswO09OOzs7OztOO1dISVRFIERPV04gUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUMwO0JMQUNLIExFRlQtUE9JTlRJTkcgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtCTEFDSyBMRUZUIFBPSU5USU5HIFRSSUFOR0xFOzs7OworMjVDMTtXSElURSBMRUZULVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgTEVGVCBQT0lOVElORyBUUklBTkdMRTs7OzsKKzI1QzI7QkxBQ0sgTEVGVC1QT0lOVElORyBTTUFMTCBUUklBTkdMRTtTbzswO09OOzs7OztOO0JMQUNLIExFRlQgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUMzO1dISVRFIExFRlQtUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtXSElURSBMRUZUIFBPSU5USU5HIFNNQUxMIFRSSUFOR0xFOzs7OworMjVDNDtCTEFDSyBMRUZULVBPSU5USU5HIFBPSU5URVI7U287MDtPTjs7Ozs7TjtCTEFDSyBMRUZUIFBPSU5USU5HIFBPSU5URVI7Ozs7CisyNUM1O1dISVRFIExFRlQtUE9JTlRJTkcgUE9JTlRFUjtTbzswO09OOzs7OztOO1dISVRFIExFRlQgUE9JTlRJTkcgUE9JTlRFUjs7OzsKKzI1QzY7QkxBQ0sgRElBTU9ORDtTbzswO09OOzs7OztOOzs7OzsKKzI1Qzc7V0hJVEUgRElBTU9ORDtTbzswO09OOzs7OztOOzs7OzsKKzI1Qzg7V0hJVEUgRElBTU9ORCBDT05UQUlOSU5HIEJMQUNLIFNNQUxMIERJQU1PTkQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUM5O0ZJU0hFWUU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUNBO0xPWkVOR0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUNCO1dISVRFIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1Q0M7RE9UVEVEIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1Q0Q7Q0lSQ0xFIFdJVEggVkVSVElDQUwgRklMTDtTbzswO09OOzs7OztOOzs7OzsKKzI1Q0U7QlVMTFNFWUU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUNGO0JMQUNLIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RDA7Q0lSQ0xFIFdJVEggTEVGVCBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVEMTtDSVJDTEUgV0lUSCBSSUdIVCBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVEMjtDSVJDTEUgV0lUSCBMT1dFUiBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVEMztDSVJDTEUgV0lUSCBVUFBFUiBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVENDtDSVJDTEUgV0lUSCBVUFBFUiBSSUdIVCBRVUFEUkFOVCBCTEFDSztTbzswO09OOzs7OztOOzs7OzsKKzI1RDU7Q0lSQ0xFIFdJVEggQUxMIEJVVCBVUFBFUiBMRUZUIFFVQURSQU5UIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVENjtMRUZUIEhBTEYgQkxBQ0sgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVENztSSUdIVCBIQUxGIEJMQUNLIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RDg7SU5WRVJTRSBCVUxMRVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUQ5O0lOVkVSU0UgV0hJVEUgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVEQTtVUFBFUiBIQUxGIElOVkVSU0UgV0hJVEUgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVEQjtMT1dFUiBIQUxGIElOVkVSU0UgV0hJVEUgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVEQztVUFBFUiBMRUZUIFFVQURSQU5UIENJUkNVTEFSIEFSQztTbzswO09OOzs7OztOOzs7OzsKKzI1REQ7VVBQRVIgUklHSFQgUVVBRFJBTlQgQ0lSQ1VMQVIgQVJDO1NvOzA7T047Ozs7O047Ozs7OworMjVERTtMT1dFUiBSSUdIVCBRVUFEUkFOVCBDSVJDVUxBUiBBUkM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNURGO0xPV0VSIExFRlQgUVVBRFJBTlQgQ0lSQ1VMQVIgQVJDO1NvOzA7T047Ozs7O047Ozs7OworMjVFMDtVUFBFUiBIQUxGIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RTE7TE9XRVIgSEFMRiBDSVJDTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUUyO0JMQUNLIExPV0VSIFJJR0hUIFRSSUFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVFMztCTEFDSyBMT1dFUiBMRUZUIFRSSUFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVFNDtCTEFDSyBVUFBFUiBMRUZUIFRSSUFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVFNTtCTEFDSyBVUFBFUiBSSUdIVCBUUklBTkdMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RTY7V0hJVEUgQlVMTEVUO1NvOzA7T047Ozs7O047Ozs7OworMjVFNztTUVVBUkUgV0lUSCBMRUZUIEhBTEYgQkxBQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUU4O1NRVUFSRSBXSVRIIFJJR0hUIEhBTEYgQkxBQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUU5O1NRVUFSRSBXSVRIIFVQUEVSIExFRlQgRElBR09OQUwgSEFMRiBCTEFDSztTbzswO09OOzs7OztOOzs7OzsKKzI1RUE7U1FVQVJFIFdJVEggTE9XRVIgUklHSFQgRElBR09OQUwgSEFMRiBCTEFDSztTbzswO09OOzs7OztOOzs7OzsKKzI1RUI7V0hJVEUgU1FVQVJFIFdJVEggVkVSVElDQUwgQklTRUNUSU5HIExJTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUVDO1dISVRFIFVQLVBPSU5USU5HIFRSSUFOR0xFIFdJVEggRE9UO1NvOzA7T047Ozs7O047V0hJVEUgVVAgUE9JTlRJTkcgVFJJQU5HTEUgV0lUSCBET1Q7Ozs7CisyNUVEO1VQLVBPSU5USU5HIFRSSUFOR0xFIFdJVEggTEVGVCBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047VVAgUE9JTlRJTkcgVFJJQU5HTEUgV0lUSCBMRUZUIEhBTEYgQkxBQ0s7Ozs7CisyNUVFO1VQLVBPSU5USU5HIFRSSUFOR0xFIFdJVEggUklHSFQgSEFMRiBCTEFDSztTbzswO09OOzs7OztOO1VQIFBPSU5USU5HIFRSSUFOR0xFIFdJVEggUklHSFQgSEFMRiBCTEFDSzs7OzsKKzI1RUY7TEFSR0UgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjYwMDtCTEFDSyBTVU4gV0lUSCBSQVlTO1NvOzA7T047Ozs7O047Ozs7OworMjYwMTtDTE9VRDtTbzswO09OOzs7OztOOzs7OzsKKzI2MDI7VU1CUkVMTEE7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjAzO1NOT1dNQU47U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjA0O0NPTUVUO1NvOzA7T047Ozs7O047Ozs7OworMjYwNTtCTEFDSyBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjYwNjtXSElURSBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjYwNztMSUdIVE5JTkc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjA4O1RIVU5ERVJTVE9STTtTbzswO09OOzs7OztOOzs7OzsKKzI2MDk7U1VOO1NvOzA7T047Ozs7O047Ozs7OworMjYwQTtBU0NFTkRJTkcgTk9ERTtTbzswO09OOzs7OztOOzs7OzsKKzI2MEI7REVTQ0VORElORyBOT0RFO1NvOzA7T047Ozs7O047Ozs7OworMjYwQztDT05KVU5DVElPTjtTbzswO09OOzs7OztOOzs7OzsKKzI2MEQ7T1BQT1NJVElPTjtTbzswO09OOzs7OztOOzs7OzsKKzI2MEU7QkxBQ0sgVEVMRVBIT05FO1NvOzA7T047Ozs7O047Ozs7OworMjYwRjtXSElURSBURUxFUEhPTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjEwO0JBTExPVCBCT1g7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjExO0JBTExPVCBCT1ggV0lUSCBDSEVDSztTbzswO09OOzs7OztOOzs7OzsKKzI2MTI7QkFMTE9UIEJPWCBXSVRIIFg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjEzO1NBTFRJUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjFBO0JMQUNLIExFRlQgUE9JTlRJTkcgSU5ERVg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjFCO0JMQUNLIFJJR0hUIFBPSU5USU5HIElOREVYO1NvOzA7T047Ozs7O047Ozs7OworMjYxQztXSElURSBMRUZUIFBPSU5USU5HIElOREVYO1NvOzA7T047Ozs7O047Ozs7OworMjYxRDtXSElURSBVUCBQT0lOVElORyBJTkRFWDtTbzswO09OOzs7OztOOzs7OzsKKzI2MUU7V0hJVEUgUklHSFQgUE9JTlRJTkcgSU5ERVg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjFGO1dISVRFIERPV04gUE9JTlRJTkcgSU5ERVg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjIwO1NLVUxMIEFORCBDUk9TU0JPTkVTO1NvOzA7T047Ozs7O047Ozs7OworMjYyMTtDQVVUSU9OIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjIyO1JBRElPQUNUSVZFIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjIzO0JJT0hBWkFSRCBTSUdOO1NvOzA7T047Ozs7O047Ozs7OworMjYyNDtDQURVQ0VVUztTbzswO09OOzs7OztOOzs7OzsKKzI2MjU7QU5LSDtTbzswO09OOzs7OztOOzs7OzsKKzI2MjY7T1JUSE9ET1ggQ1JPU1M7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjI3O0NISSBSSE87U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjI4O0NST1NTIE9GIExPUlJBSU5FO1NvOzA7T047Ozs7O047Ozs7OworMjYyOTtDUk9TUyBPRiBKRVJVU0FMRU07U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjJBO1NUQVIgQU5EIENSRVNDRU5UO1NvOzA7T047Ozs7O047Ozs7OworMjYyQjtGQVJTSSBTWU1CT0w7U287MDtPTjs7Ozs7TjtTWU1CT0wgT0YgSVJBTjs7OzsKKzI2MkM7QURJIFNIQUtUSTtTbzswO09OOzs7OztOOzs7OzsKKzI2MkQ7SEFNTUVSIEFORCBTSUNLTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjJFO1BFQUNFIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzI2MkY7WUlOIFlBTkc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjMwO1RSSUdSQU0gRk9SIEhFQVZFTjtTbzswO09OOzs7OztOOzs7OzsKKzI2MzE7VFJJR1JBTSBGT1IgTEFLRTtTbzswO09OOzs7OztOOzs7OzsKKzI2MzI7VFJJR1JBTSBGT1IgRklSRTtTbzswO09OOzs7OztOOzs7OzsKKzI2MzM7VFJJR1JBTSBGT1IgVEhVTkRFUjtTbzswO09OOzs7OztOOzs7OzsKKzI2MzQ7VFJJR1JBTSBGT1IgV0lORDtTbzswO09OOzs7OztOOzs7OzsKKzI2MzU7VFJJR1JBTSBGT1IgV0FURVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjM2O1RSSUdSQU0gRk9SIE1PVU5UQUlOO1NvOzA7T047Ozs7O047Ozs7OworMjYzNztUUklHUkFNIEZPUiBFQVJUSDtTbzswO09OOzs7OztOOzs7OzsKKzI2Mzg7V0hFRUwgT0YgREhBUk1BO1NvOzA7T047Ozs7O047Ozs7OworMjYzOTtXSElURSBGUk9XTklORyBGQUNFO1NvOzA7T047Ozs7O047Ozs7OworMjYzQTtXSElURSBTTUlMSU5HIEZBQ0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjNCO0JMQUNLIFNNSUxJTkcgRkFDRTtTbzswO09OOzs7OztOOzs7OzsKKzI2M0M7V0hJVEUgU1VOIFdJVEggUkFZUztTbzswO09OOzs7OztOOzs7OzsKKzI2M0Q7RklSU1QgUVVBUlRFUiBNT09OO1NvOzA7T047Ozs7O047Ozs7OworMjYzRTtMQVNUIFFVQVJURVIgTU9PTjtTbzswO09OOzs7OztOOzs7OzsKKzI2M0Y7TUVSQ1VSWTtTbzswO09OOzs7OztOOzs7OzsKKzI2NDA7RkVNQUxFIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQxO0VBUlRIO1NvOzA7T047Ozs7O047Ozs7OworMjY0MjtNQUxFIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQzO0pVUElURVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQ0O1NBVFVSTjtTbzswO09OOzs7OztOOzs7OzsKKzI2NDU7VVJBTlVTO1NvOzA7T047Ozs7O047Ozs7OworMjY0NjtORVBUVU5FO1NvOzA7T047Ozs7O047Ozs7OworMjY0NztQTFVUTztTbzswO09OOzs7OztOOzs7OzsKKzI2NDg7QVJJRVM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQ5O1RBVVJVUztTbzswO09OOzs7OztOOzs7OzsKKzI2NEE7R0VNSU5JO1NvOzA7T047Ozs7O047Ozs7OworMjY0QjtDQU5DRVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjRDO0xFTztTbzswO09OOzs7OztOOzs7OzsKKzI2NEQ7VklSR087U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjRFO0xJQlJBO1NvOzA7T047Ozs7O047Ozs7OworMjY0RjtTQ09SUElVUztTbzswO09OOzs7OztOOzs7OzsKKzI2NTA7U0FHSVRUQVJJVVM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjUxO0NBUFJJQ09STjtTbzswO09OOzs7OztOOzs7OzsKKzI2NTI7QVFVQVJJVVM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjUzO1BJU0NFUztTbzswO09OOzs7OztOOzs7OzsKKzI2NTQ7V0hJVEUgQ0hFU1MgS0lORztTbzswO09OOzs7OztOOzs7OzsKKzI2NTU7V0hJVEUgQ0hFU1MgUVVFRU47U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjU2O1dISVRFIENIRVNTIFJPT0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjU3O1dISVRFIENIRVNTIEJJU0hPUDtTbzswO09OOzs7OztOOzs7OzsKKzI2NTg7V0hJVEUgQ0hFU1MgS05JR0hUO1NvOzA7T047Ozs7O047Ozs7OworMjY1OTtXSElURSBDSEVTUyBQQVdOO1NvOzA7T047Ozs7O047Ozs7OworMjY1QTtCTEFDSyBDSEVTUyBLSU5HO1NvOzA7T047Ozs7O047Ozs7OworMjY1QjtCTEFDSyBDSEVTUyBRVUVFTjtTbzswO09OOzs7OztOOzs7OzsKKzI2NUM7QkxBQ0sgQ0hFU1MgUk9PSztTbzswO09OOzs7OztOOzs7OzsKKzI2NUQ7QkxBQ0sgQ0hFU1MgQklTSE9QO1NvOzA7T047Ozs7O047Ozs7OworMjY1RTtCTEFDSyBDSEVTUyBLTklHSFQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjVGO0JMQUNLIENIRVNTIFBBV047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjYwO0JMQUNLIFNQQURFIFNVSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjYxO1dISVRFIEhFQVJUIFNVSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjYyO1dISVRFIERJQU1PTkQgU1VJVDtTbzswO09OOzs7OztOOzs7OzsKKzI2NjM7QkxBQ0sgQ0xVQiBTVUlUO1NvOzA7T047Ozs7O047Ozs7OworMjY2NDtXSElURSBTUEFERSBTVUlUO1NvOzA7T047Ozs7O047Ozs7OworMjY2NTtCTEFDSyBIRUFSVCBTVUlUO1NvOzA7T047Ozs7O047Ozs7OworMjY2NjtCTEFDSyBESUFNT05EIFNVSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjY3O1dISVRFIENMVUIgU1VJVDtTbzswO09OOzs7OztOOzs7OzsKKzI2Njg7SE9UIFNQUklOR1M7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjY5O1FVQVJURVIgTk9URTtTbzswO09OOzs7OztOOzs7OzsKKzI2NkE7RUlHSFRIIE5PVEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjZCO0JFQU1FRCBFSUdIVEggTk9URVM7U287MDtPTjs7Ozs7TjtCQVJSRUQgRUlHSFRIIE5PVEVTOzs7OworMjY2QztCRUFNRUQgU0lYVEVFTlRIIE5PVEVTO1NvOzA7T047Ozs7O047QkFSUkVEIFNJWFRFRU5USCBOT1RFUzs7OzsKKzI2NkQ7TVVTSUMgRkxBVCBTSUdOO1NvOzA7T047Ozs7O047RkxBVDs7OzsKKzI2NkU7TVVTSUMgTkFUVVJBTCBTSUdOO1NvOzA7T047Ozs7O047TkFUVVJBTDs7OzsKKzI2NkY7TVVTSUMgU0hBUlAgU0lHTjtTbzswO09OOzs7OztOO1NIQVJQOzs7OworMjcwMTtVUFBFUiBCTEFERSBTQ0lTU09SUztTbzswO09OOzs7OztOOzs7OzsKKzI3MDI7QkxBQ0sgU0NJU1NPUlM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzAzO0xPV0VSIEJMQURFIFNDSVNTT1JTO1NvOzA7T047Ozs7O047Ozs7OworMjcwNDtXSElURSBTQ0lTU09SUztTbzswO09OOzs7OztOOzs7OzsKKzI3MDY7VEVMRVBIT05FIExPQ0FUSU9OIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzA3O1RBUEUgRFJJVkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzA4O0FJUlBMQU5FO1NvOzA7T047Ozs7O047Ozs7OworMjcwOTtFTlZFTE9QRTtTbzswO09OOzs7OztOOzs7OzsKKzI3MEM7VklDVE9SWSBIQU5EO1NvOzA7T047Ozs7O047Ozs7OworMjcwRDtXUklUSU5HIEhBTkQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzBFO0xPV0VSIFJJR0hUIFBFTkNJTDtTbzswO09OOzs7OztOOzs7OzsKKzI3MEY7UEVOQ0lMO1NvOzA7T047Ozs7O047Ozs7OworMjcxMDtVUFBFUiBSSUdIVCBQRU5DSUw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzExO1dISVRFIE5JQjtTbzswO09OOzs7OztOOzs7OzsKKzI3MTI7QkxBQ0sgTklCO1NvOzA7T047Ozs7O047Ozs7OworMjcxMztDSEVDSyBNQVJLO1NvOzA7T047Ozs7O047Ozs7OworMjcxNDtIRUFWWSBDSEVDSyBNQVJLO1NvOzA7T047Ozs7O047Ozs7OworMjcxNTtNVUxUSVBMSUNBVElPTiBYO1NvOzA7T047Ozs7O047Ozs7OworMjcxNjtIRUFWWSBNVUxUSVBMSUNBVElPTiBYO1NvOzA7T047Ozs7O047Ozs7OworMjcxNztCQUxMT1QgWDtTbzswO09OOzs7OztOOzs7OzsKKzI3MTg7SEVBVlkgQkFMTE9UIFg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzE5O09VVExJTkVEIEdSRUVLIENST1NTO1NvOzA7T047Ozs7O047Ozs7OworMjcxQTtIRUFWWSBHUkVFSyBDUk9TUztTbzswO09OOzs7OztOOzs7OzsKKzI3MUI7T1BFTiBDRU5UUkUgQ1JPU1M7U287MDtPTjs7Ozs7TjtPUEVOIENFTlRFUiBDUk9TUzs7OzsKKzI3MUM7SEVBVlkgT1BFTiBDRU5UUkUgQ1JPU1M7U287MDtPTjs7Ozs7TjtIRUFWWSBPUEVOIENFTlRFUiBDUk9TUzs7OzsKKzI3MUQ7TEFUSU4gQ1JPU1M7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzFFO1NIQURPV0VEIFdISVRFIExBVElOIENST1NTO1NvOzA7T047Ozs7O047Ozs7OworMjcxRjtPVVRMSU5FRCBMQVRJTiBDUk9TUztTbzswO09OOzs7OztOOzs7OzsKKzI3MjA7TUFMVEVTRSBDUk9TUztTbzswO09OOzs7OztOOzs7OzsKKzI3MjE7U1RBUiBPRiBEQVZJRDtTbzswO09OOzs7OztOOzs7OzsKKzI3MjI7Rk9VUiBURUFSRFJPUC1TUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzIzO0ZPVVIgQkFMTE9PTi1TUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzI0O0hFQVZZIEZPVVIgQkFMTE9PTi1TUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzI1O0ZPVVIgQ0xVQi1TUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzI2O0JMQUNLIEZPVVIgUE9JTlRFRCBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjcyNztXSElURSBGT1VSIFBPSU5URUQgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3Mjk7U1RSRVNTIE9VVExJTkVEIFdISVRFIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzJBO0NJUkNMRUQgV0hJVEUgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3MkI7T1BFTiBDRU5UUkUgQkxBQ0sgU1RBUjtTbzswO09OOzs7OztOO09QRU4gQ0VOVEVSIEJMQUNLIFNUQVI7Ozs7CisyNzJDO0JMQUNLIENFTlRSRSBXSElURSBTVEFSO1NvOzA7T047Ozs7O047QkxBQ0sgQ0VOVEVSIFdISVRFIFNUQVI7Ozs7CisyNzJEO09VVExJTkVEIEJMQUNLIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzJFO0hFQVZZIE9VVExJTkVEIEJMQUNLIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzJGO1BJTldIRUVMIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzMwO1NIQURPV0VEIFdISVRFIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzMxO0hFQVZZIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjczMjtPUEVOIENFTlRSRSBBU1RFUklTSztTbzswO09OOzs7OztOO09QRU4gQ0VOVEVSIEFTVEVSSVNLOzs7OworMjczMztFSUdIVCBTUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzM0O0VJR0hUIFBPSU5URUQgQkxBQ0sgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3MzU7RUlHSFQgUE9JTlRFRCBQSU5XSEVFTCBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjczNjtTSVggUE9JTlRFRCBCTEFDSyBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjczNztFSUdIVCBQT0lOVEVEIFJFQ1RJTElORUFSIEJMQUNLIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzM4O0hFQVZZIEVJR0hUIFBPSU5URUQgUkVDVElMSU5FQVIgQkxBQ0sgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3Mzk7VFdFTFZFIFBPSU5URUQgQkxBQ0sgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3M0E7U0lYVEVFTiBQT0lOVEVEIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjczQjtURUFSRFJPUC1TUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzNDO09QRU4gQ0VOVFJFIFRFQVJEUk9QLVNQT0tFRCBBU1RFUklTSztTbzswO09OOzs7OztOO09QRU4gQ0VOVEVSIFRFQVJEUk9QLVNQT0tFRCBBU1RFUklTSzs7OzsKKzI3M0Q7SEVBVlkgVEVBUkRST1AtU1BPS0VEIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjczRTtTSVggUEVUQUxMRUQgQkxBQ0sgQU5EIFdISVRFIEZMT1JFVFRFO1NvOzA7T047Ozs7O047Ozs7OworMjczRjtCTEFDSyBGTE9SRVRURTtTbzswO09OOzs7OztOOzs7OzsKKzI3NDA7V0hJVEUgRkxPUkVUVEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzQxO0VJR0hUIFBFVEFMTEVEIE9VVExJTkVEIEJMQUNLIEZMT1JFVFRFO1NvOzA7T047Ozs7O047Ozs7OworMjc0MjtDSVJDTEVEIE9QRU4gQ0VOVFJFIEVJR0hUIFBPSU5URUQgU1RBUjtTbzswO09OOzs7OztOO0NJUkNMRUQgT1BFTiBDRU5URVIgRUlHSFQgUE9JTlRFRCBTVEFSOzs7OworMjc0MztIRUFWWSBURUFSRFJPUC1TUE9LRUQgUElOV0hFRUwgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzQ0O1NOT1dGTEFLRTtTbzswO09OOzs7OztOOzs7OzsKKzI3NDU7VElHSFQgVFJJRk9MSUFURSBTTk9XRkxBS0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzQ2O0hFQVZZIENIRVZST04gU05PV0ZMQUtFO1NvOzA7T047Ozs7O047Ozs7OworMjc0NztTUEFSS0xFO1NvOzA7T047Ozs7O047Ozs7OworMjc0ODtIRUFWWSBTUEFSS0xFO1NvOzA7T047Ozs7O047Ozs7OworMjc0OTtCQUxMT09OLVNQT0tFRCBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3NEE7RUlHSFQgVEVBUkRST1AtU1BPS0VEIFBST1BFTExFUiBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3NEI7SEVBVlkgRUlHSFQgVEVBUkRST1AtU1BPS0VEIFBST1BFTExFUiBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3NEQ7U0hBRE9XRUQgV0hJVEUgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjc0RjtMT1dFUiBSSUdIVCBEUk9QLVNIQURPV0VEIFdISVRFIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzI3NTA7VVBQRVIgUklHSFQgRFJPUC1TSEFET1dFRCBXSElURSBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzUxO0xPV0VSIFJJR0hUIFNIQURPV0VEIFdISVRFIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzI3NTI7VVBQRVIgUklHSFQgU0hBRE9XRUQgV0hJVEUgU1FVQVJFO1NvOzA7T047Ozs7O047Ozs7OworMjc1NjtCTEFDSyBESUFNT05EIE1JTlVTIFdISVRFIFg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzU4O0xJR0hUIFZFUlRJQ0FMIEJBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3NTk7TUVESVVNIFZFUlRJQ0FMIEJBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3NUE7SEVBVlkgVkVSVElDQUwgQkFSO1NvOzA7T047Ozs7O047Ozs7OworMjc1QjtIRUFWWSBTSU5HTEUgVFVSTkVEIENPTU1BIFFVT1RBVElPTiBNQVJLIE9STkFNRU5UO1NvOzA7T047Ozs7O047Ozs7OworMjc1QztIRUFWWSBTSU5HTEUgQ09NTUEgUVVPVEFUSU9OIE1BUksgT1JOQU1FTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzVEO0hFQVZZIERPVUJMRSBUVVJORUQgQ09NTUEgUVVPVEFUSU9OIE1BUksgT1JOQU1FTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzVFO0hFQVZZIERPVUJMRSBDT01NQSBRVU9UQVRJT04gTUFSSyBPUk5BTUVOVDtTbzswO09OOzs7OztOOzs7OzsKKzI3NjE7Q1VSVkVEIFNURU0gUEFSQUdSQVBIIFNJR04gT1JOQU1FTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzYyO0hFQVZZIEVYQ0xBTUFUSU9OIE1BUksgT1JOQU1FTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzYzO0hFQVZZIEhFQVJUIEVYQ0xBTUFUSU9OIE1BUksgT1JOQU1FTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzY0O0hFQVZZIEJMQUNLIEhFQVJUO1NvOzA7T047Ozs7O047Ozs7OworMjc2NTtST1RBVEVEIEhFQVZZIEJMQUNLIEhFQVJUIEJVTExFVDtTbzswO09OOzs7OztOOzs7OzsKKzI3NjY7RkxPUkFMIEhFQVJUO1NvOzA7T047Ozs7O047Ozs7OworMjc2NztST1RBVEVEIEZMT1JBTCBIRUFSVCBCVUxMRVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzc2O0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBPTkU7Tm87MDtPTjs7OzE7MTtOO0lOVkVSU0UgQ0lSQ0xFRCBESUdJVCBPTkU7Ozs7CisyNzc3O0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBUV087Tm87MDtPTjs7OzI7MjtOO0lOVkVSU0UgQ0lSQ0xFRCBESUdJVCBUV087Ozs7CisyNzc4O0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBUSFJFRTtObzswO09OOzs7MzszO047SU5WRVJTRSBDSVJDTEVEIERJR0lUIFRIUkVFOzs7OworMjc3OTtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgRElHSVQgRk9VUjtObzswO09OOzs7NDs0O047SU5WRVJTRSBDSVJDTEVEIERJR0lUIEZPVVI7Ozs7CisyNzdBO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBGSVZFO05vOzA7T047Ozs1OzU7TjtJTlZFUlNFIENJUkNMRUQgRElHSVQgRklWRTs7OzsKKzI3N0I7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIERJR0lUIFNJWDtObzswO09OOzs7Njs2O047SU5WRVJTRSBDSVJDTEVEIERJR0lUIFNJWDs7OzsKKzI3N0M7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIERJR0lUIFNFVkVOO05vOzA7T047Ozs3Ozc7TjtJTlZFUlNFIENJUkNMRUQgRElHSVQgU0VWRU47Ozs7CisyNzdEO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBFSUdIVDtObzswO09OOzs7ODs4O047SU5WRVJTRSBDSVJDTEVEIERJR0lUIEVJR0hUOzs7OworMjc3RTtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgRElHSVQgTklORTtObzswO09OOzs7OTs5O047SU5WRVJTRSBDSVJDTEVEIERJR0lUIE5JTkU7Ozs7CisyNzdGO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBOVU1CRVIgVEVOO05vOzA7T047Ozs7MTA7TjtJTlZFUlNFIENJUkNMRUQgTlVNQkVSIFRFTjs7OzsKKzI3ODA7RElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgT05FO05vOzA7T047OzsxOzE7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgT05FOzs7OworMjc4MTtESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBUV087Tm87MDtPTjs7OzI7MjtOO0NJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBUV087Ozs7CisyNzgyO0RJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFRIUkVFO05vOzA7T047OzszOzM7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgVEhSRUU7Ozs7CisyNzgzO0RJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEZPVVI7Tm87MDtPTjs7OzQ7NDtOO0NJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGT1VSOzs7OworMjc4NDtESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGSVZFO05vOzA7T047Ozs1OzU7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRklWRTs7OzsKKzI3ODU7RElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgU0lYO05vOzA7T047Ozs2OzY7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgU0lYOzs7OworMjc4NjtESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBTRVZFTjtObzswO09OOzs7Nzs3O047Q0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFNFVkVOOzs7OworMjc4NztESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBFSUdIVDtObzswO09OOzs7ODs4O047Q0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEVJR0hUOzs7OworMjc4ODtESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBOSU5FO05vOzA7T047Ozs5Ozk7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgTklORTs7OzsKKzI3ODk7RElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgTlVNQkVSIFRFTjtObzswO09OOzs7OzEwO047Q0lSQ0xFRCBTQU5TLVNFUklGIE5VTUJFUiBURU47Ozs7CisyNzhBO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIE9ORTtObzswO09OOzs7MTsxO047SU5WRVJTRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgT05FOzs7OworMjc4QjtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBUV087Tm87MDtPTjs7OzI7MjtOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFRXTzs7OzsKKzI3OEM7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgVEhSRUU7Tm87MDtPTjs7OzM7MztOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFRIUkVFOzs7OworMjc4RDtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGT1VSO05vOzA7T047Ozs0OzQ7TjtJTlZFUlNFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGT1VSOzs7OworMjc4RTtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGSVZFO05vOzA7T047Ozs1OzU7TjtJTlZFUlNFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGSVZFOzs7OworMjc4RjtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBTSVg7Tm87MDtPTjs7OzY7NjtOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFNJWDs7OzsKKzI3OTA7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgU0VWRU47Tm87MDtPTjs7Ozc7NztOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFNFVkVOOzs7OworMjc5MTtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBFSUdIVDtObzswO09OOzs7ODs4O047SU5WRVJTRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRUlHSFQ7Ozs7CisyNzkyO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIE5JTkU7Tm87MDtPTjs7Ozk7OTtOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIE5JTkU7Ozs7CisyNzkzO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIE5VTUJFUiBURU47Tm87MDtPTjs7OzsxMDtOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIE5VTUJFUiBURU47Ozs7CisyNzk0O0hFQVZZIFdJREUtSEVBREVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBXSURFLUhFQURFRCBSSUdIVCBBUlJPVzs7OzsKKzI3OTg7SEVBVlkgU09VVEggRUFTVCBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIExPV0VSIFJJR0hUIEFSUk9XOzs7OworMjc5OTtIRUFWWSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgUklHSFQgQVJST1c7Ozs7CisyNzlBO0hFQVZZIE5PUlRIIEVBU1QgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBVUFBFUiBSSUdIVCBBUlJPVzs7OzsKKzI3OUI7RFJBRlRJTkcgUE9JTlQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0RSQUZUSU5HIFBPSU5UIFJJR0hUIEFSUk9XOzs7OworMjc5QztIRUFWWSBST1VORC1USVBQRUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIFJPVU5ELVRJUFBFRCBSSUdIVCBBUlJPVzs7OzsKKzI3OUQ7VFJJQU5HTEUtSEVBREVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtUUklBTkdMRS1IRUFERUQgUklHSFQgQVJST1c7Ozs7CisyNzlFO0hFQVZZIFRSSUFOR0xFLUhFQURFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgVFJJQU5HTEUtSEVBREVEIFJJR0hUIEFSUk9XOzs7OworMjc5RjtEQVNIRUQgVFJJQU5HTEUtSEVBREVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtEQVNIRUQgVFJJQU5HTEUtSEVBREVEIFJJR0hUIEFSUk9XOzs7OworMjdBMDtIRUFWWSBEQVNIRUQgVFJJQU5HTEUtSEVBREVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBEQVNIRUQgVFJJQU5HTEUtSEVBREVEIFJJR0hUIEFSUk9XOzs7OworMjdBMTtCTEFDSyBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047QkxBQ0sgUklHSFQgQVJST1c7Ozs7CisyN0EyO1RIUkVFLUQgVE9QLUxJR0hURUQgUklHSFRXQVJEUyBBUlJPV0hFQUQ7U287MDtPTjs7Ozs7TjtUSFJFRS1EIFRPUC1MSUdIVEVEIFJJR0hUIEFSUk9XSEVBRDs7OzsKKzI3QTM7VEhSRUUtRCBCT1RUT00tTElHSFRFRCBSSUdIVFdBUkRTIEFSUk9XSEVBRDtTbzswO09OOzs7OztOO1RIUkVFLUQgQk9UVE9NLUxJR0hURUQgUklHSFQgQVJST1dIRUFEOzs7OworMjdBNDtCTEFDSyBSSUdIVFdBUkRTIEFSUk9XSEVBRDtTbzswO09OOzs7OztOO0JMQUNLIFJJR0hUIEFSUk9XSEVBRDs7OzsKKzI3QTU7SEVBVlkgQkxBQ0sgQ1VSVkVEIERPV05XQVJEUyBBTkQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIEJMQUNLIENVUlZFRCBET1dOIEFORCBSSUdIVCBBUlJPVzs7OzsKKzI3QTY7SEVBVlkgQkxBQ0sgQ1VSVkVEIFVQV0FSRFMgQU5EIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBCTEFDSyBDVVJWRUQgVVAgQU5EIFJJR0hUIEFSUk9XOzs7OworMjdBNztTUVVBVCBCTEFDSyBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047U1FVQVQgQkxBQ0sgUklHSFQgQVJST1c7Ozs7CisyN0E4O0hFQVZZIENPTkNBVkUtUE9JTlRFRCBCTEFDSyBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgQ09OQ0FWRS1QT0lOVEVEIEJMQUNLIFJJR0hUIEFSUk9XOzs7OworMjdBOTtSSUdIVC1TSEFERUQgV0hJVEUgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO1JJR0hULVNIQURFRCBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QUE7TEVGVC1TSEFERUQgV0hJVEUgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0xFRlQtU0hBREVEIFdISVRFIFJJR0hUIEFSUk9XOzs7OworMjdBQjtCQUNLLVRJTFRFRCBTSEFET1dFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047QkFDSy1USUxURUQgU0hBRE9XRUQgV0hJVEUgUklHSFQgQVJST1c7Ozs7CisyN0FDO0ZST05ULVRJTFRFRCBTSEFET1dFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047RlJPTlQtVElMVEVEIFNIQURPV0VEIFdISVRFIFJJR0hUIEFSUk9XOzs7OworMjdBRDtIRUFWWSBMT1dFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgTE9XRVIgUklHSFQtU0hBRE9XRUQgV0hJVEUgUklHSFQgQVJST1c7Ozs7CisyN0FFO0hFQVZZIFVQUEVSIFJJR0hULVNIQURPV0VEIFdISVRFIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBVUFBFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QUY7Tk9UQ0hFRCBMT1dFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047Tk9UQ0hFRCBMT1dFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QjE7Tk9UQ0hFRCBVUFBFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047Tk9UQ0hFRCBVUFBFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QjI7Q0lSQ0xFRCBIRUFWWSBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047Q0lSQ0xFRCBIRUFWWSBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QjM7V0hJVEUtRkVBVEhFUkVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtXSElURS1GRUFUSEVSRUQgUklHSFQgQVJST1c7Ozs7CisyN0I0O0JMQUNLLUZFQVRIRVJFRCBTT1VUSCBFQVNUIEFSUk9XO1NvOzA7T047Ozs7O047QkxBQ0stRkVBVEhFUkVEIExPV0VSIFJJR0hUIEFSUk9XOzs7OworMjdCNTtCTEFDSy1GRUFUSEVSRUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0JMQUNLLUZFQVRIRVJFRCBSSUdIVCBBUlJPVzs7OzsKKzI3QjY7QkxBQ0stRkVBVEhFUkVEIE5PUlRIIEVBU1QgQVJST1c7U287MDtPTjs7Ozs7TjtCTEFDSy1GRUFUSEVSRUQgVVBQRVIgUklHSFQgQVJST1c7Ozs7CisyN0I3O0hFQVZZIEJMQUNLLUZFQVRIRVJFRCBTT1VUSCBFQVNUIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgQkxBQ0stRkVBVEhFUkVEIExPV0VSIFJJR0hUIEFSUk9XOzs7OworMjdCODtIRUFWWSBCTEFDSy1GRUFUSEVSRUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIEJMQUNLLUZFQVRIRVJFRCBSSUdIVCBBUlJPVzs7OzsKKzI3Qjk7SEVBVlkgQkxBQ0stRkVBVEhFUkVEIE5PUlRIIEVBU1QgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBCTEFDSy1GRUFUSEVSRUQgVVBQRVIgUklHSFQgQVJST1c7Ozs7CisyN0JBO1RFQVJEUk9QLUJBUkJFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047VEVBUkRST1AtQkFSQkVEIFJJR0hUIEFSUk9XOzs7OworMjdCQjtIRUFWWSBURUFSRFJPUC1TSEFOS0VEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBURUFSRFJPUC1TSEFOS0VEIFJJR0hUIEFSUk9XOzs7OworMjdCQztXRURHRS1UQUlMRUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO1dFREdFLVRBSUxFRCBSSUdIVCBBUlJPVzs7OzsKKzI3QkQ7SEVBVlkgV0VER0UtVEFJTEVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBXRURHRS1UQUlMRUQgUklHSFQgQVJST1c7Ozs7CisyN0JFO09QRU4tT1VUTElORUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO09QRU4tT1VUTElORUQgUklHSFQgQVJST1c7Ozs7CiszMDAwO0lERU9HUkFQSElDIFNQQUNFO1pzOzA7V1M7PHdpZGU+IDAwMjA7Ozs7Tjs7Ozs7CiszMDAxO0lERU9HUkFQSElDIENPTU1BO1BvOzA7T047Ozs7O047Ozs7OworMzAwMjtJREVPR1JBUEhJQyBGVUxMIFNUT1A7UG87MDtPTjs7Ozs7TjtJREVPR1JBUEhJQyBQRVJJT0Q7Ozs7CiszMDAzO0RJVFRPIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CiszMDA0O0pBUEFORVNFIElORFVTVFJJQUwgU1RBTkRBUkQgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMzAwNTtJREVPR1JBUEhJQyBJVEVSQVRJT04gTUFSSztMbTswO09OOzs7OztOOzs7OzsKKzMwMDY7SURFT0dSQVBISUMgQ0xPU0lORyBNQVJLO1BvOzA7T047Ozs7O047Ozs7OworMzAwNztJREVPR1JBUEhJQyBOVU1CRVIgWkVSTztObDswO09OOzs7OzA7Tjs7Ozs7CiszMDA4O0xFRlQgQU5HTEUgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgQU5HTEUgQlJBQ0tFVDs7OzsKKzMwMDk7UklHSFQgQU5HTEUgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgQU5HTEUgQlJBQ0tFVDs7OzsKKzMwMEE7TEVGVCBET1VCTEUgQU5HTEUgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgRE9VQkxFIEFOR0xFIEJSQUNLRVQ7Ozs7CiszMDBCO1JJR0hUIERPVUJMRSBBTkdMRSBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBET1VCTEUgQU5HTEUgQlJBQ0tFVDs7OzsKKzMwMEM7TEVGVCBDT1JORVIgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgQ09STkVSIEJSQUNLRVQ7Ozs7CiszMDBEO1JJR0hUIENPUk5FUiBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBDT1JORVIgQlJBQ0tFVDs7OzsKKzMwMEU7TEVGVCBXSElURSBDT1JORVIgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgV0hJVEUgQ09STkVSIEJSQUNLRVQ7Ozs7CiszMDBGO1JJR0hUIFdISVRFIENPUk5FUiBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBXSElURSBDT1JORVIgQlJBQ0tFVDs7OzsKKzMwMTA7TEVGVCBCTEFDSyBMRU5USUNVTEFSIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIEJMQUNLIExFTlRJQ1VMQVIgQlJBQ0tFVDs7OzsKKzMwMTE7UklHSFQgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBCTEFDSyBMRU5USUNVTEFSIEJSQUNLRVQ7Ozs7CiszMDEyO1BPU1RBTCBNQVJLO1NvOzA7T047Ozs7O047Ozs7OworMzAxMztHRVRBIE1BUks7U287MDtPTjs7Ozs7Tjs7Ozs7CiszMDE0O0xFRlQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKKzMwMTU7UklHSFQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKKzMwMTY7TEVGVCBXSElURSBMRU5USUNVTEFSIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIFdISVRFIExFTlRJQ1VMQVIgQlJBQ0tFVDs7OzsKKzMwMTc7UklHSFQgV0hJVEUgTEVOVElDVUxBUiBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBXSElURSBMRU5USUNVTEFSIEJSQUNLRVQ7Ozs7CiszMDE4O0xFRlQgV0hJVEUgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgV0hJVEUgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKKzMwMTk7UklHSFQgV0hJVEUgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgV0hJVEUgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKKzMwMUE7TEVGVCBXSElURSBTUVVBUkUgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgV0hJVEUgU1FVQVJFIEJSQUNLRVQ7Ozs7CiszMDFCO1JJR0hUIFdISVRFIFNRVUFSRSBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBXSElURSBTUVVBUkUgQlJBQ0tFVDs7OzsKKzMwMUM7V0FWRSBEQVNIO1BkOzA7T047Ozs7O047Ozs7OworMzAxRDtSRVZFUlNFRCBET1VCTEUgUFJJTUUgUVVPVEFUSU9OIE1BUks7UHM7MDtPTjs7Ozs7Tjs7Ozs7CiszMDFFO0RPVUJMRSBQUklNRSBRVU9UQVRJT04gTUFSSztQZTswO09OOzs7OztOOzs7OzsKKzMwMUY7TE9XIERPVUJMRSBQUklNRSBRVU9UQVRJT04gTUFSSztQZTswO09OOzs7OztOOzs7OzsKKzMwMjA7UE9TVEFMIE1BUksgRkFDRTtTbzswO09OOzs7OztOOzs7OzsKKzMwMjE7SEFOR1pIT1UgTlVNRVJBTCBPTkU7Tmw7MDtMOzs7OzE7Tjs7Ozs7CiszMDIyO0hBTkdaSE9VIE5VTUVSQUwgVFdPO05sOzA7TDs7OzsyO047Ozs7OworMzAyMztIQU5HWkhPVSBOVU1FUkFMIFRIUkVFO05sOzA7TDs7OzszO047Ozs7OworMzAyNDtIQU5HWkhPVSBOVU1FUkFMIEZPVVI7Tmw7MDtMOzs7OzQ7Tjs7Ozs7CiszMDI1O0hBTkdaSE9VIE5VTUVSQUwgRklWRTtObDswO0w7Ozs7NTtOOzs7OzsKKzMwMjY7SEFOR1pIT1UgTlVNRVJBTCBTSVg7Tmw7MDtMOzs7OzY7Tjs7Ozs7CiszMDI3O0hBTkdaSE9VIE5VTUVSQUwgU0VWRU47Tmw7MDtMOzs7Ozc7Tjs7Ozs7CiszMDI4O0hBTkdaSE9VIE5VTUVSQUwgRUlHSFQ7Tmw7MDtMOzs7Ozg7Tjs7Ozs7CiszMDI5O0hBTkdaSE9VIE5VTUVSQUwgTklORTtObDswO0w7Ozs7OTtOOzs7OzsKKzMwMkE7SURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLO01uOzIxODtMOzs7OztOOzs7OzsKKzMwMkI7SURFT0dSQVBISUMgUklTSU5HIFRPTkUgTUFSSztNbjsyMjg7TDs7Ozs7Tjs7Ozs7CiszMDJDO0lERU9HUkFQSElDIERFUEFSVElORyBUT05FIE1BUks7TW47MjMyO0w7Ozs7O047Ozs7OworMzAyRDtJREVPR1JBUEhJQyBFTlRFUklORyBUT05FIE1BUks7TW47MjIyO0w7Ozs7O047Ozs7OworMzAyRTtIQU5HVUwgU0lOR0xFIERPVCBUT05FIE1BUks7TW47MjI0O0w7Ozs7O047Ozs7OworMzAyRjtIQU5HVUwgRE9VQkxFIERPVCBUT05FIE1BUks7TW47MjI0O0w7Ozs7O047Ozs7OworMzAzMDtXQVZZIERBU0g7UGQ7MDtPTjs7Ozs7Tjs7Ozs7CiszMDMxO1ZFUlRJQ0FMIEtBTkEgUkVQRUFUIE1BUks7TG07MDtPTjs7Ozs7Tjs7Ozs7CiszMDMyO1ZFUlRJQ0FMIEtBTkEgUkVQRUFUIFdJVEggVk9JQ0VEIFNPVU5EIE1BUks7TG07MDtPTjs7Ozs7Tjs7Ozs7CiszMDMzO1ZFUlRJQ0FMIEtBTkEgUkVQRUFUIE1BUksgVVBQRVIgSEFMRjtMbTswO09OOzs7OztOOzs7OzsKKzMwMzQ7VkVSVElDQUwgS0FOQSBSRVBFQVQgV0lUSCBWT0lDRUQgU09VTkQgTUFSSyBVUFBFUiBIQUxGO0xtOzA7T047Ozs7O047Ozs7OworMzAzNTtWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIExPV0VSIEhBTEY7TG07MDtPTjs7Ozs7Tjs7Ozs7CiszMDM2O0NJUkNMRUQgUE9TVEFMIE1BUks7U287MDtPTjs8Y29tcGF0PiAzMDEyOzs7O047Ozs7OworMzAzNztJREVPR1JBUEhJQyBURUxFR1JBUEggTElORSBGRUVEIFNFUEFSQVRPUiBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CiszMDNGO0lERU9HUkFQSElDIEhBTEYgRklMTCBTUEFDRTtTbzswO09OOzs7OztOOzs7OzsKKzMwNDE7SElSQUdBTkEgTEVUVEVSIFNNQUxMIEE7TG87MDtMOzs7OztOOzs7OzsKKzMwNDI7SElSQUdBTkEgTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzMwNDM7SElSQUdBTkEgTEVUVEVSIFNNQUxMIEk7TG87MDtMOzs7OztOOzs7OzsKKzMwNDQ7SElSQUdBTkEgTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzMwNDU7SElSQUdBTkEgTEVUVEVSIFNNQUxMIFU7TG87MDtMOzs7OztOOzs7OzsKKzMwNDY7SElSQUdBTkEgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzMwNDc7SElSQUdBTkEgTEVUVEVSIFNNQUxMIEU7TG87MDtMOzs7OztOOzs7OzsKKzMwNDg7SElSQUdBTkEgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzMwNDk7SElSQUdBTkEgTEVUVEVSIFNNQUxMIE87TG87MDtMOzs7OztOOzs7OzsKKzMwNEE7SElSQUdBTkEgTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzMwNEI7SElSQUdBTkEgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDRDO0hJUkFHQU5BIExFVFRFUiBHQTtMbzswO0w7MzA0QiAzMDk5Ozs7O047Ozs7OworMzA0RDtISVJBR0FOQSBMRVRURVIgS0k7TG87MDtMOzs7OztOOzs7OzsKKzMwNEU7SElSQUdBTkEgTEVUVEVSIEdJO0xvOzA7TDszMDREIDMwOTk7Ozs7Tjs7Ozs7CiszMDRGO0hJUkFHQU5BIExFVFRFUiBLVTtMbzswO0w7Ozs7O047Ozs7OworMzA1MDtISVJBR0FOQSBMRVRURVIgR1U7TG87MDtMOzMwNEYgMzA5OTs7OztOOzs7OzsKKzMwNTE7SElSQUdBTkEgTEVUVEVSIEtFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDUyO0hJUkFHQU5BIExFVFRFUiBHRTtMbzswO0w7MzA1MSAzMDk5Ozs7O047Ozs7OworMzA1MztISVJBR0FOQSBMRVRURVIgS087TG87MDtMOzs7OztOOzs7OzsKKzMwNTQ7SElSQUdBTkEgTEVUVEVSIEdPO0xvOzA7TDszMDUzIDMwOTk7Ozs7Tjs7Ozs7CiszMDU1O0hJUkFHQU5BIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMzA1NjtISVJBR0FOQSBMRVRURVIgWkE7TG87MDtMOzMwNTUgMzA5OTs7OztOOzs7OzsKKzMwNTc7SElSQUdBTkEgTEVUVEVSIFNJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDU4O0hJUkFHQU5BIExFVFRFUiBaSTtMbzswO0w7MzA1NyAzMDk5Ozs7O047Ozs7OworMzA1OTtISVJBR0FOQSBMRVRURVIgU1U7TG87MDtMOzs7OztOOzs7OzsKKzMwNUE7SElSQUdBTkEgTEVUVEVSIFpVO0xvOzA7TDszMDU5IDMwOTk7Ozs7Tjs7Ozs7CiszMDVCO0hJUkFHQU5BIExFVFRFUiBTRTtMbzswO0w7Ozs7O047Ozs7OworMzA1QztISVJBR0FOQSBMRVRURVIgWkU7TG87MDtMOzMwNUIgMzA5OTs7OztOOzs7OzsKKzMwNUQ7SElSQUdBTkEgTEVUVEVSIFNPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDVFO0hJUkFHQU5BIExFVFRFUiBaTztMbzswO0w7MzA1RCAzMDk5Ozs7O047Ozs7OworMzA1RjtISVJBR0FOQSBMRVRURVIgVEE7TG87MDtMOzs7OztOOzs7OzsKKzMwNjA7SElSQUdBTkEgTEVUVEVSIERBO0xvOzA7TDszMDVGIDMwOTk7Ozs7Tjs7Ozs7CiszMDYxO0hJUkFHQU5BIExFVFRFUiBUSTtMbzswO0w7Ozs7O047Ozs7OworMzA2MjtISVJBR0FOQSBMRVRURVIgREk7TG87MDtMOzMwNjEgMzA5OTs7OztOOzs7OzsKKzMwNjM7SElSQUdBTkEgTEVUVEVSIFNNQUxMIFRVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDY0O0hJUkFHQU5BIExFVFRFUiBUVTtMbzswO0w7Ozs7O047Ozs7OworMzA2NTtISVJBR0FOQSBMRVRURVIgRFU7TG87MDtMOzMwNjQgMzA5OTs7OztOOzs7OzsKKzMwNjY7SElSQUdBTkEgTEVUVEVSIFRFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDY3O0hJUkFHQU5BIExFVFRFUiBERTtMbzswO0w7MzA2NiAzMDk5Ozs7O047Ozs7OworMzA2ODtISVJBR0FOQSBMRVRURVIgVE87TG87MDtMOzs7OztOOzs7OzsKKzMwNjk7SElSQUdBTkEgTEVUVEVSIERPO0xvOzA7TDszMDY4IDMwOTk7Ozs7Tjs7Ozs7CiszMDZBO0hJUkFHQU5BIExFVFRFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMzA2QjtISVJBR0FOQSBMRVRURVIgTkk7TG87MDtMOzs7OztOOzs7OzsKKzMwNkM7SElSQUdBTkEgTEVUVEVSIE5VO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDZEO0hJUkFHQU5BIExFVFRFUiBORTtMbzswO0w7Ozs7O047Ozs7OworMzA2RTtISVJBR0FOQSBMRVRURVIgTk87TG87MDtMOzs7OztOOzs7OzsKKzMwNkY7SElSQUdBTkEgTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDcwO0hJUkFHQU5BIExFVFRFUiBCQTtMbzswO0w7MzA2RiAzMDk5Ozs7O047Ozs7OworMzA3MTtISVJBR0FOQSBMRVRURVIgUEE7TG87MDtMOzMwNkYgMzA5QTs7OztOOzs7OzsKKzMwNzI7SElSQUdBTkEgTEVUVEVSIEhJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDczO0hJUkFHQU5BIExFVFRFUiBCSTtMbzswO0w7MzA3MiAzMDk5Ozs7O047Ozs7OworMzA3NDtISVJBR0FOQSBMRVRURVIgUEk7TG87MDtMOzMwNzIgMzA5QTs7OztOOzs7OzsKKzMwNzU7SElSQUdBTkEgTEVUVEVSIEhVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDc2O0hJUkFHQU5BIExFVFRFUiBCVTtMbzswO0w7MzA3NSAzMDk5Ozs7O047Ozs7OworMzA3NztISVJBR0FOQSBMRVRURVIgUFU7TG87MDtMOzMwNzUgMzA5QTs7OztOOzs7OzsKKzMwNzg7SElSQUdBTkEgTEVUVEVSIEhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDc5O0hJUkFHQU5BIExFVFRFUiBCRTtMbzswO0w7MzA3OCAzMDk5Ozs7O047Ozs7OworMzA3QTtISVJBR0FOQSBMRVRURVIgUEU7TG87MDtMOzMwNzggMzA5QTs7OztOOzs7OzsKKzMwN0I7SElSQUdBTkEgTEVUVEVSIEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDdDO0hJUkFHQU5BIExFVFRFUiBCTztMbzswO0w7MzA3QiAzMDk5Ozs7O047Ozs7OworMzA3RDtISVJBR0FOQSBMRVRURVIgUE87TG87MDtMOzMwN0IgMzA5QTs7OztOOzs7OzsKKzMwN0U7SElSQUdBTkEgTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDdGO0hJUkFHQU5BIExFVFRFUiBNSTtMbzswO0w7Ozs7O047Ozs7OworMzA4MDtISVJBR0FOQSBMRVRURVIgTVU7TG87MDtMOzs7OztOOzs7OzsKKzMwODE7SElSQUdBTkEgTEVUVEVSIE1FO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDgyO0hJUkFHQU5BIExFVFRFUiBNTztMbzswO0w7Ozs7O047Ozs7OworMzA4MztISVJBR0FOQSBMRVRURVIgU01BTEwgWUE7TG87MDtMOzs7OztOOzs7OzsKKzMwODQ7SElSQUdBTkEgTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDg1O0hJUkFHQU5BIExFVFRFUiBTTUFMTCBZVTtMbzswO0w7Ozs7O047Ozs7OworMzA4NjtISVJBR0FOQSBMRVRURVIgWVU7TG87MDtMOzs7OztOOzs7OzsKKzMwODc7SElSQUdBTkEgTEVUVEVSIFNNQUxMIFlPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDg4O0hJUkFHQU5BIExFVFRFUiBZTztMbzswO0w7Ozs7O047Ozs7OworMzA4OTtISVJBR0FOQSBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzMwOEE7SElSQUdBTkEgTEVUVEVSIFJJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDhCO0hJUkFHQU5BIExFVFRFUiBSVTtMbzswO0w7Ozs7O047Ozs7OworMzA4QztISVJBR0FOQSBMRVRURVIgUkU7TG87MDtMOzs7OztOOzs7OzsKKzMwOEQ7SElSQUdBTkEgTEVUVEVSIFJPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDhFO0hJUkFHQU5BIExFVFRFUiBTTUFMTCBXQTtMbzswO0w7Ozs7O047Ozs7OworMzA4RjtISVJBR0FOQSBMRVRURVIgV0E7TG87MDtMOzs7OztOOzs7OzsKKzMwOTA7SElSQUdBTkEgTEVUVEVSIFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDkxO0hJUkFHQU5BIExFVFRFUiBXRTtMbzswO0w7Ozs7O047Ozs7OworMzA5MjtISVJBR0FOQSBMRVRURVIgV087TG87MDtMOzs7OztOOzs7OzsKKzMwOTM7SElSQUdBTkEgTEVUVEVSIE47TG87MDtMOzs7OztOOzs7OzsKKzMwOTQ7SElSQUdBTkEgTEVUVEVSIFZVO0xvOzA7TDszMDQ2IDMwOTk7Ozs7Tjs7Ozs7CiszMDk5O0NPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSztNbjs4O0w7Ozs7O047Tk9OLVNQQUNJTkcgS0FUQUtBTkEtSElSQUdBTkEgVk9JQ0VEIFNPVU5EIE1BUks7Ozs7CiszMDlBO0NPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBTRU1JLVZPSUNFRCBTT1VORCBNQVJLO01uOzg7TDs7Ozs7TjtOT04tU1BBQ0lORyBLQVRBS0FOQS1ISVJBR0FOQSBTRU1JLVZPSUNFRCBTT1VORCBNQVJLOzs7OworMzA5QjtLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSztMbTswO0w7PGNvbXBhdD4gMDAyMCAzMDk5Ozs7O047Ozs7OworMzA5QztLQVRBS0FOQS1ISVJBR0FOQSBTRU1JLVZPSUNFRCBTT1VORCBNQVJLO0xtOzA7TDs8Y29tcGF0PiAwMDIwIDMwOUE7Ozs7Tjs7Ozs7CiszMDlEO0hJUkFHQU5BIElURVJBVElPTiBNQVJLO0xtOzA7TDs7Ozs7Tjs7Ozs7CiszMDlFO0hJUkFHQU5BIFZPSUNFRCBJVEVSQVRJT04gTUFSSztMbTswO0w7MzA5RCAzMDk5Ozs7O047Ozs7OworMzBBMTtLQVRBS0FOQSBMRVRURVIgU01BTEwgQTtMbzswO0w7Ozs7O047Ozs7OworMzBBMjtLQVRBS0FOQSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMzBBMztLQVRBS0FOQSBMRVRURVIgU01BTEwgSTtMbzswO0w7Ozs7O047Ozs7OworMzBBNDtLQVRBS0FOQSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMzBBNTtLQVRBS0FOQSBMRVRURVIgU01BTEwgVTtMbzswO0w7Ozs7O047Ozs7OworMzBBNjtLQVRBS0FOQSBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMzBBNztLQVRBS0FOQSBMRVRURVIgU01BTEwgRTtMbzswO0w7Ozs7O047Ozs7OworMzBBODtLQVRBS0FOQSBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMzBBOTtLQVRBS0FOQSBMRVRURVIgU01BTEwgTztMbzswO0w7Ozs7O047Ozs7OworMzBBQTtLQVRBS0FOQSBMRVRURVIgTztMbzswO0w7Ozs7O047Ozs7OworMzBBQjtLQVRBS0FOQSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzMwQUM7S0FUQUtBTkEgTEVUVEVSIEdBO0xvOzA7TDszMEFCIDMwOTk7Ozs7Tjs7Ozs7CiszMEFEO0tBVEFLQU5BIExFVFRFUiBLSTtMbzswO0w7Ozs7O047Ozs7OworMzBBRTtLQVRBS0FOQSBMRVRURVIgR0k7TG87MDtMOzMwQUQgMzA5OTs7OztOOzs7OzsKKzMwQUY7S0FUQUtBTkEgTEVUVEVSIEtVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEIwO0tBVEFLQU5BIExFVFRFUiBHVTtMbzswO0w7MzBBRiAzMDk5Ozs7O047Ozs7OworMzBCMTtLQVRBS0FOQSBMRVRURVIgS0U7TG87MDtMOzs7OztOOzs7OzsKKzMwQjI7S0FUQUtBTkEgTEVUVEVSIEdFO0xvOzA7TDszMEIxIDMwOTk7Ozs7Tjs7Ozs7CiszMEIzO0tBVEFLQU5BIExFVFRFUiBLTztMbzswO0w7Ozs7O047Ozs7OworMzBCNDtLQVRBS0FOQSBMRVRURVIgR087TG87MDtMOzMwQjMgMzA5OTs7OztOOzs7OzsKKzMwQjU7S0FUQUtBTkEgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEI2O0tBVEFLQU5BIExFVFRFUiBaQTtMbzswO0w7MzBCNSAzMDk5Ozs7O047Ozs7OworMzBCNztLQVRBS0FOQSBMRVRURVIgU0k7TG87MDtMOzs7OztOOzs7OzsKKzMwQjg7S0FUQUtBTkEgTEVUVEVSIFpJO0xvOzA7TDszMEI3IDMwOTk7Ozs7Tjs7Ozs7CiszMEI5O0tBVEFLQU5BIExFVFRFUiBTVTtMbzswO0w7Ozs7O047Ozs7OworMzBCQTtLQVRBS0FOQSBMRVRURVIgWlU7TG87MDtMOzMwQjkgMzA5OTs7OztOOzs7OzsKKzMwQkI7S0FUQUtBTkEgTEVUVEVSIFNFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEJDO0tBVEFLQU5BIExFVFRFUiBaRTtMbzswO0w7MzBCQiAzMDk5Ozs7O047Ozs7OworMzBCRDtLQVRBS0FOQSBMRVRURVIgU087TG87MDtMOzs7OztOOzs7OzsKKzMwQkU7S0FUQUtBTkEgTEVUVEVSIFpPO0xvOzA7TDszMEJEIDMwOTk7Ozs7Tjs7Ozs7CiszMEJGO0tBVEFLQU5BIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMzBDMDtLQVRBS0FOQSBMRVRURVIgREE7TG87MDtMOzMwQkYgMzA5OTs7OztOOzs7OzsKKzMwQzE7S0FUQUtBTkEgTEVUVEVSIFRJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEMyO0tBVEFLQU5BIExFVFRFUiBESTtMbzswO0w7MzBDMSAzMDk5Ozs7O047Ozs7OworMzBDMztLQVRBS0FOQSBMRVRURVIgU01BTEwgVFU7TG87MDtMOzs7OztOOzs7OzsKKzMwQzQ7S0FUQUtBTkEgTEVUVEVSIFRVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEM1O0tBVEFLQU5BIExFVFRFUiBEVTtMbzswO0w7MzBDNCAzMDk5Ozs7O047Ozs7OworMzBDNjtLQVRBS0FOQSBMRVRURVIgVEU7TG87MDtMOzs7OztOOzs7OzsKKzMwQzc7S0FUQUtBTkEgTEVUVEVSIERFO0xvOzA7TDszMEM2IDMwOTk7Ozs7Tjs7Ozs7CiszMEM4O0tBVEFLQU5BIExFVFRFUiBUTztMbzswO0w7Ozs7O047Ozs7OworMzBDOTtLQVRBS0FOQSBMRVRURVIgRE87TG87MDtMOzMwQzggMzA5OTs7OztOOzs7OzsKKzMwQ0E7S0FUQUtBTkEgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMENCO0tBVEFLQU5BIExFVFRFUiBOSTtMbzswO0w7Ozs7O047Ozs7OworMzBDQztLQVRBS0FOQSBMRVRURVIgTlU7TG87MDtMOzs7OztOOzs7OzsKKzMwQ0Q7S0FUQUtBTkEgTEVUVEVSIE5FO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMENFO0tBVEFLQU5BIExFVFRFUiBOTztMbzswO0w7Ozs7O047Ozs7OworMzBDRjtLQVRBS0FOQSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzMwRDA7S0FUQUtBTkEgTEVUVEVSIEJBO0xvOzA7TDszMENGIDMwOTk7Ozs7Tjs7Ozs7CiszMEQxO0tBVEFLQU5BIExFVFRFUiBQQTtMbzswO0w7MzBDRiAzMDlBOzs7O047Ozs7OworMzBEMjtLQVRBS0FOQSBMRVRURVIgSEk7TG87MDtMOzs7OztOOzs7OzsKKzMwRDM7S0FUQUtBTkEgTEVUVEVSIEJJO0xvOzA7TDszMEQyIDMwOTk7Ozs7Tjs7Ozs7CiszMEQ0O0tBVEFLQU5BIExFVFRFUiBQSTtMbzswO0w7MzBEMiAzMDlBOzs7O047Ozs7OworMzBENTtLQVRBS0FOQSBMRVRURVIgSFU7TG87MDtMOzs7OztOOzs7OzsKKzMwRDY7S0FUQUtBTkEgTEVUVEVSIEJVO0xvOzA7TDszMEQ1IDMwOTk7Ozs7Tjs7Ozs7CiszMEQ3O0tBVEFLQU5BIExFVFRFUiBQVTtMbzswO0w7MzBENSAzMDlBOzs7O047Ozs7OworMzBEODtLQVRBS0FOQSBMRVRURVIgSEU7TG87MDtMOzs7OztOOzs7OzsKKzMwRDk7S0FUQUtBTkEgTEVUVEVSIEJFO0xvOzA7TDszMEQ4IDMwOTk7Ozs7Tjs7Ozs7CiszMERBO0tBVEFLQU5BIExFVFRFUiBQRTtMbzswO0w7MzBEOCAzMDlBOzs7O047Ozs7OworMzBEQjtLQVRBS0FOQSBMRVRURVIgSE87TG87MDtMOzs7OztOOzs7OzsKKzMwREM7S0FUQUtBTkEgTEVUVEVSIEJPO0xvOzA7TDszMERCIDMwOTk7Ozs7Tjs7Ozs7CiszMEREO0tBVEFLQU5BIExFVFRFUiBQTztMbzswO0w7MzBEQiAzMDlBOzs7O047Ozs7OworMzBERTtLQVRBS0FOQSBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzMwREY7S0FUQUtBTkEgTEVUVEVSIE1JO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEUwO0tBVEFLQU5BIExFVFRFUiBNVTtMbzswO0w7Ozs7O047Ozs7OworMzBFMTtLQVRBS0FOQSBMRVRURVIgTUU7TG87MDtMOzs7OztOOzs7OzsKKzMwRTI7S0FUQUtBTkEgTEVUVEVSIE1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEUzO0tBVEFLQU5BIExFVFRFUiBTTUFMTCBZQTtMbzswO0w7Ozs7O047Ozs7OworMzBFNDtLQVRBS0FOQSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzMwRTU7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEU2O0tBVEFLQU5BIExFVFRFUiBZVTtMbzswO0w7Ozs7O047Ozs7OworMzBFNztLQVRBS0FOQSBMRVRURVIgU01BTEwgWU87TG87MDtMOzs7OztOOzs7OzsKKzMwRTg7S0FUQUtBTkEgTEVUVEVSIFlPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEU5O0tBVEFLQU5BIExFVFRFUiBSQTtMbzswO0w7Ozs7O047Ozs7OworMzBFQTtLQVRBS0FOQSBMRVRURVIgUkk7TG87MDtMOzs7OztOOzs7OzsKKzMwRUI7S0FUQUtBTkEgTEVUVEVSIFJVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEVDO0tBVEFLQU5BIExFVFRFUiBSRTtMbzswO0w7Ozs7O047Ozs7OworMzBFRDtLQVRBS0FOQSBMRVRURVIgUk87TG87MDtMOzs7OztOOzs7OzsKKzMwRUU7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEVGO0tBVEFLQU5BIExFVFRFUiBXQTtMbzswO0w7Ozs7O047Ozs7OworMzBGMDtLQVRBS0FOQSBMRVRURVIgV0k7TG87MDtMOzs7OztOOzs7OzsKKzMwRjE7S0FUQUtBTkEgTEVUVEVSIFdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEYyO0tBVEFLQU5BIExFVFRFUiBXTztMbzswO0w7Ozs7O047Ozs7OworMzBGMztLQVRBS0FOQSBMRVRURVIgTjtMbzswO0w7Ozs7O047Ozs7OworMzBGNDtLQVRBS0FOQSBMRVRURVIgVlU7TG87MDtMOzMwQTYgMzA5OTs7OztOOzs7OzsKKzMwRjU7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEY2O0tBVEFLQU5BIExFVFRFUiBTTUFMTCBLRTtMbzswO0w7Ozs7O047Ozs7OworMzBGNztLQVRBS0FOQSBMRVRURVIgVkE7TG87MDtMOzMwRUYgMzA5OTs7OztOOzs7OzsKKzMwRjg7S0FUQUtBTkEgTEVUVEVSIFZJO0xvOzA7TDszMEYwIDMwOTk7Ozs7Tjs7Ozs7CiszMEY5O0tBVEFLQU5BIExFVFRFUiBWRTtMbzswO0w7MzBGMSAzMDk5Ozs7O047Ozs7OworMzBGQTtLQVRBS0FOQSBMRVRURVIgVk87TG87MDtMOzMwRjIgMzA5OTs7OztOOzs7OzsKKzMwRkI7S0FUQUtBTkEgTUlERExFIERPVDtQbzswO0w7Ozs7O047Ozs7OworMzBGQztLQVRBS0FOQS1ISVJBR0FOQSBQUk9MT05HRUQgU09VTkQgTUFSSztMbTswO0w7Ozs7O047Ozs7OworMzBGRDtLQVRBS0FOQSBJVEVSQVRJT04gTUFSSztMbTswO0w7Ozs7O047Ozs7OworMzBGRTtLQVRBS0FOQSBWT0lDRUQgSVRFUkFUSU9OIE1BUks7TG07MDtMOzMwRkQgMzA5OTs7OztOOzs7OzsKKzMxMDU7Qk9QT01PRk8gTEVUVEVSIEI7TG87MDtMOzs7OztOOzs7OzsKKzMxMDY7Qk9QT01PRk8gTEVUVEVSIFA7TG87MDtMOzs7OztOOzs7OzsKKzMxMDc7Qk9QT01PRk8gTEVUVEVSIE07TG87MDtMOzs7OztOOzs7OzsKKzMxMDg7Qk9QT01PRk8gTEVUVEVSIEY7TG87MDtMOzs7OztOOzs7OzsKKzMxMDk7Qk9QT01PRk8gTEVUVEVSIEQ7TG87MDtMOzs7OztOOzs7OzsKKzMxMEE7Qk9QT01PRk8gTEVUVEVSIFQ7TG87MDtMOzs7OztOOzs7OzsKKzMxMEI7Qk9QT01PRk8gTEVUVEVSIE47TG87MDtMOzs7OztOOzs7OzsKKzMxMEM7Qk9QT01PRk8gTEVUVEVSIEw7TG87MDtMOzs7OztOOzs7OzsKKzMxMEQ7Qk9QT01PRk8gTEVUVEVSIEc7TG87MDtMOzs7OztOOzs7OzsKKzMxMEU7Qk9QT01PRk8gTEVUVEVSIEs7TG87MDtMOzs7OztOOzs7OzsKKzMxMEY7Qk9QT01PRk8gTEVUVEVSIEg7TG87MDtMOzs7OztOOzs7OzsKKzMxMTA7Qk9QT01PRk8gTEVUVEVSIEo7TG87MDtMOzs7OztOOzs7OzsKKzMxMTE7Qk9QT01PRk8gTEVUVEVSIFE7TG87MDtMOzs7OztOOzs7OzsKKzMxMTI7Qk9QT01PRk8gTEVUVEVSIFg7TG87MDtMOzs7OztOOzs7OzsKKzMxMTM7Qk9QT01PRk8gTEVUVEVSIFpIO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTE0O0JPUE9NT0ZPIExFVFRFUiBDSDtMbzswO0w7Ozs7O047Ozs7OworMzExNTtCT1BPTU9GTyBMRVRURVIgU0g7TG87MDtMOzs7OztOOzs7OzsKKzMxMTY7Qk9QT01PRk8gTEVUVEVSIFI7TG87MDtMOzs7OztOOzs7OzsKKzMxMTc7Qk9QT01PRk8gTEVUVEVSIFo7TG87MDtMOzs7OztOOzs7OzsKKzMxMTg7Qk9QT01PRk8gTEVUVEVSIEM7TG87MDtMOzs7OztOOzs7OzsKKzMxMTk7Qk9QT01PRk8gTEVUVEVSIFM7TG87MDtMOzs7OztOOzs7OzsKKzMxMUE7Qk9QT01PRk8gTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzMxMUI7Qk9QT01PRk8gTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzMxMUM7Qk9QT01PRk8gTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzMxMUQ7Qk9QT01PRk8gTEVUVEVSIEVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTFFO0JPUE9NT0ZPIExFVFRFUiBBSTtMbzswO0w7Ozs7O047Ozs7OworMzExRjtCT1BPTU9GTyBMRVRURVIgRUk7TG87MDtMOzs7OztOOzs7OzsKKzMxMjA7Qk9QT01PRk8gTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTIxO0JPUE9NT0ZPIExFVFRFUiBPVTtMbzswO0w7Ozs7O047Ozs7OworMzEyMjtCT1BPTU9GTyBMRVRURVIgQU47TG87MDtMOzs7OztOOzs7OzsKKzMxMjM7Qk9QT01PRk8gTEVUVEVSIEVOO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTI0O0JPUE9NT0ZPIExFVFRFUiBBTkc7TG87MDtMOzs7OztOOzs7OzsKKzMxMjU7Qk9QT01PRk8gTEVUVEVSIEVORztMbzswO0w7Ozs7O047Ozs7OworMzEyNjtCT1BPTU9GTyBMRVRURVIgRVI7TG87MDtMOzs7OztOOzs7OzsKKzMxMjc7Qk9QT01PRk8gTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzMxMjg7Qk9QT01PRk8gTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzMxMjk7Qk9QT01PRk8gTEVUVEVSIElVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTJBO0JPUE9NT0ZPIExFVFRFUiBWO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTJCO0JPUE9NT0ZPIExFVFRFUiBORztMbzswO0w7Ozs7O047Ozs7OworMzEyQztCT1BPTU9GTyBMRVRURVIgR047TG87MDtMOzs7OztOOzs7OzsKKzMxMzE7SEFOR1VMIExFVFRFUiBLSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMDA7Ozs7TjtIQU5HVUwgTEVUVEVSIEdJWUVPRzs7OzsKKzMxMzI7SEFOR1VMIExFVFRFUiBTU0FOR0tJWUVPSztMbzswO0w7PGNvbXBhdD4gMTEwMTs7OztOO0hBTkdVTCBMRVRURVIgU1NBTkcgR0lZRU9HOzs7OworMzEzMztIQU5HVUwgTEVUVEVSIEtJWUVPSy1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUFBOzs7O047SEFOR1VMIExFVFRFUiBHSVlFT0cgU0lPUzs7OzsKKzMxMzQ7SEFOR1VMIExFVFRFUiBOSUVVTjtMbzswO0w7PGNvbXBhdD4gMTEwMjs7OztOOzs7OzsKKzMxMzU7SEFOR1VMIExFVFRFUiBOSUVVTi1DSUVVQztMbzswO0w7PGNvbXBhdD4gMTFBQzs7OztOO0hBTkdVTCBMRVRURVIgTklFVU4gSklFVUo7Ozs7CiszMTM2O0hBTkdVTCBMRVRURVIgTklFVU4tSElFVUg7TG87MDtMOzxjb21wYXQ+IDExQUQ7Ozs7TjtIQU5HVUwgTEVUVEVSIE5JRVVOIEhJRVVIOzs7OworMzEzNztIQU5HVUwgTEVUVEVSIFRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTEwMzs7OztOO0hBTkdVTCBMRVRURVIgRElHRVVEOzs7OworMzEzODtIQU5HVUwgTEVUVEVSIFNTQU5HVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMTA0Ozs7O047SEFOR1VMIExFVFRFUiBTU0FORyBESUdFVUQ7Ozs7CiszMTM5O0hBTkdVTCBMRVRURVIgUklFVUw7TG87MDtMOzxjb21wYXQ+IDExMDU7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMOzs7OworMzEzQTtIQU5HVUwgTEVUVEVSIFJJRVVMLUtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTFCMDs7OztOO0hBTkdVTCBMRVRURVIgTElFVUwgR0lZRU9HOzs7OworMzEzQjtIQU5HVUwgTEVUVEVSIFJJRVVMLU1JRVVNO0xvOzA7TDs8Y29tcGF0PiAxMUIxOzs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBNSUVVTTs7OzsKKzMxM0M7SEFOR1VMIExFVFRFUiBSSUVVTC1QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTFCMjs7OztOO0hBTkdVTCBMRVRURVIgTElFVUwgQklFVUI7Ozs7CiszMTNEO0hBTkdVTCBMRVRURVIgUklFVUwtU0lPUztMbzswO0w7PGNvbXBhdD4gMTFCMzs7OztOO0hBTkdVTCBMRVRURVIgTElFVUwgU0lPUzs7OzsKKzMxM0U7SEFOR1VMIExFVFRFUiBSSUVVTC1USElFVVRIO0xvOzA7TDs8Y29tcGF0PiAxMUI0Ozs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBUSUVVVDs7OzsKKzMxM0Y7SEFOR1VMIExFVFRFUiBSSUVVTC1QSElFVVBIO0xvOzA7TDs8Y29tcGF0PiAxMUI1Ozs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBQSUVVUDs7OzsKKzMxNDA7SEFOR1VMIExFVFRFUiBSSUVVTC1ISUVVSDtMbzswO0w7PGNvbXBhdD4gMTExQTs7OztOO0hBTkdVTCBMRVRURVIgTElFVUwgSElFVUg7Ozs7CiszMTQxO0hBTkdVTCBMRVRURVIgTUlFVU07TG87MDtMOzxjb21wYXQ+IDExMDY7Ozs7Tjs7Ozs7CiszMTQyO0hBTkdVTCBMRVRURVIgUElFVVA7TG87MDtMOzxjb21wYXQ+IDExMDc7Ozs7TjtIQU5HVUwgTEVUVEVSIEJJRVVCOzs7OworMzE0MztIQU5HVUwgTEVUVEVSIFNTQU5HUElFVVA7TG87MDtMOzxjb21wYXQ+IDExMDg7Ozs7TjtIQU5HVUwgTEVUVEVSIFNTQU5HIEJJRVVCOzs7OworMzE0NDtIQU5HVUwgTEVUVEVSIFBJRVVQLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExMjE7Ozs7TjtIQU5HVUwgTEVUVEVSIEJJRVVCIFNJT1M7Ozs7CiszMTQ1O0hBTkdVTCBMRVRURVIgU0lPUztMbzswO0w7PGNvbXBhdD4gMTEwOTs7OztOOzs7OzsKKzMxNDY7SEFOR1VMIExFVFRFUiBTU0FOR1NJT1M7TG87MDtMOzxjb21wYXQ+IDExMEE7Ozs7TjtIQU5HVUwgTEVUVEVSIFNTQU5HIFNJT1M7Ozs7CiszMTQ3O0hBTkdVTCBMRVRURVIgSUVVTkc7TG87MDtMOzxjb21wYXQ+IDExMEI7Ozs7Tjs7Ozs7CiszMTQ4O0hBTkdVTCBMRVRURVIgQ0lFVUM7TG87MDtMOzxjb21wYXQ+IDExMEM7Ozs7TjtIQU5HVUwgTEVUVEVSIEpJRVVKOzs7OworMzE0OTtIQU5HVUwgTEVUVEVSIFNTQU5HQ0lFVUM7TG87MDtMOzxjb21wYXQ+IDExMEQ7Ozs7TjtIQU5HVUwgTEVUVEVSIFNTQU5HIEpJRVVKOzs7OworMzE0QTtIQU5HVUwgTEVUVEVSIENISUVVQ0g7TG87MDtMOzxjb21wYXQ+IDExMEU7Ozs7TjtIQU5HVUwgTEVUVEVSIENJRVVDOzs7OworMzE0QjtIQU5HVUwgTEVUVEVSIEtISUVVS0g7TG87MDtMOzxjb21wYXQ+IDExMEY7Ozs7TjtIQU5HVUwgTEVUVEVSIEtJWUVPSzs7OzsKKzMxNEM7SEFOR1VMIExFVFRFUiBUSElFVVRIO0xvOzA7TDs8Y29tcGF0PiAxMTEwOzs7O047SEFOR1VMIExFVFRFUiBUSUVVVDs7OzsKKzMxNEQ7SEFOR1VMIExFVFRFUiBQSElFVVBIO0xvOzA7TDs8Y29tcGF0PiAxMTExOzs7O047SEFOR1VMIExFVFRFUiBQSUVVUDs7OzsKKzMxNEU7SEFOR1VMIExFVFRFUiBISUVVSDtMbzswO0w7PGNvbXBhdD4gMTExMjs7OztOOzs7OzsKKzMxNEY7SEFOR1VMIExFVFRFUiBBO0xvOzA7TDs8Y29tcGF0PiAxMTYxOzs7O047Ozs7OworMzE1MDtIQU5HVUwgTEVUVEVSIEFFO0xvOzA7TDs8Y29tcGF0PiAxMTYyOzs7O047Ozs7OworMzE1MTtIQU5HVUwgTEVUVEVSIFlBO0xvOzA7TDs8Y29tcGF0PiAxMTYzOzs7O047Ozs7OworMzE1MjtIQU5HVUwgTEVUVEVSIFlBRTtMbzswO0w7PGNvbXBhdD4gMTE2NDs7OztOOzs7OzsKKzMxNTM7SEFOR1VMIExFVFRFUiBFTztMbzswO0w7PGNvbXBhdD4gMTE2NTs7OztOOzs7OzsKKzMxNTQ7SEFOR1VMIExFVFRFUiBFO0xvOzA7TDs8Y29tcGF0PiAxMTY2Ozs7O047Ozs7OworMzE1NTtIQU5HVUwgTEVUVEVSIFlFTztMbzswO0w7PGNvbXBhdD4gMTE2Nzs7OztOOzs7OzsKKzMxNTY7SEFOR1VMIExFVFRFUiBZRTtMbzswO0w7PGNvbXBhdD4gMTE2ODs7OztOOzs7OzsKKzMxNTc7SEFOR1VMIExFVFRFUiBPO0xvOzA7TDs8Y29tcGF0PiAxMTY5Ozs7O047Ozs7OworMzE1ODtIQU5HVUwgTEVUVEVSIFdBO0xvOzA7TDs8Y29tcGF0PiAxMTZBOzs7O047Ozs7OworMzE1OTtIQU5HVUwgTEVUVEVSIFdBRTtMbzswO0w7PGNvbXBhdD4gMTE2Qjs7OztOOzs7OzsKKzMxNUE7SEFOR1VMIExFVFRFUiBPRTtMbzswO0w7PGNvbXBhdD4gMTE2Qzs7OztOOzs7OzsKKzMxNUI7SEFOR1VMIExFVFRFUiBZTztMbzswO0w7PGNvbXBhdD4gMTE2RDs7OztOOzs7OzsKKzMxNUM7SEFOR1VMIExFVFRFUiBVO0xvOzA7TDs8Y29tcGF0PiAxMTZFOzs7O047Ozs7OworMzE1RDtIQU5HVUwgTEVUVEVSIFdFTztMbzswO0w7PGNvbXBhdD4gMTE2Rjs7OztOOzs7OzsKKzMxNUU7SEFOR1VMIExFVFRFUiBXRTtMbzswO0w7PGNvbXBhdD4gMTE3MDs7OztOOzs7OzsKKzMxNUY7SEFOR1VMIExFVFRFUiBXSTtMbzswO0w7PGNvbXBhdD4gMTE3MTs7OztOOzs7OzsKKzMxNjA7SEFOR1VMIExFVFRFUiBZVTtMbzswO0w7PGNvbXBhdD4gMTE3Mjs7OztOOzs7OzsKKzMxNjE7SEFOR1VMIExFVFRFUiBFVTtMbzswO0w7PGNvbXBhdD4gMTE3Mzs7OztOOzs7OzsKKzMxNjI7SEFOR1VMIExFVFRFUiBZSTtMbzswO0w7PGNvbXBhdD4gMTE3NDs7OztOOzs7OzsKKzMxNjM7SEFOR1VMIExFVFRFUiBJO0xvOzA7TDs8Y29tcGF0PiAxMTc1Ozs7O047Ozs7OworMzE2NDtIQU5HVUwgRklMTEVSO0xvOzA7TDs8Y29tcGF0PiAxMTYwOzs7O047SEFOR1VMIENBRSBPTTs7OzsKKzMxNjU7SEFOR1VMIExFVFRFUiBTU0FOR05JRVVOO0xvOzA7TDs8Y29tcGF0PiAxMTE0Ozs7O047SEFOR1VMIExFVFRFUiBTU0FORyBOSUVVTjs7OzsKKzMxNjY7SEFOR1VMIExFVFRFUiBOSUVVTi1USUtFVVQ7TG87MDtMOzxjb21wYXQ+IDExMTU7Ozs7TjtIQU5HVUwgTEVUVEVSIE5JRVVOIERJR0VVRDs7OzsKKzMxNjc7SEFOR1VMIExFVFRFUiBOSUVVTi1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUM3Ozs7O047SEFOR1VMIExFVFRFUiBOSUVVTiBTSU9TOzs7OworMzE2ODtIQU5HVUwgTEVUVEVSIE5JRVVOLVBBTlNJT1M7TG87MDtMOzxjb21wYXQ+IDExQzg7Ozs7TjtIQU5HVUwgTEVUVEVSIE5JRVVOIEJBTiBDSEkgRVVNOzs7OworMzE2OTtIQU5HVUwgTEVUVEVSIFJJRVVMLUtJWUVPSy1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUNDOzs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBHSVlFT0cgU0lPUzs7OzsKKzMxNkE7SEFOR1VMIExFVFRFUiBSSUVVTC1USUtFVVQ7TG87MDtMOzxjb21wYXQ+IDExQ0U7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIERJR0VVRDs7OzsKKzMxNkI7SEFOR1VMIExFVFRFUiBSSUVVTC1QSUVVUC1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUQzOzs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBCSUVVQiBTSU9TOzs7OworMzE2QztIQU5HVUwgTEVUVEVSIFJJRVVMLVBBTlNJT1M7TG87MDtMOzxjb21wYXQ+IDExRDc7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIEJBTiBDSEkgRVVNOzs7OworMzE2RDtIQU5HVUwgTEVUVEVSIFJJRVVMLVlFT1JJTkhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMUQ5Ozs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBZRU9MSU4gSElFVUg7Ozs7CiszMTZFO0hBTkdVTCBMRVRURVIgTUlFVU0tUElFVVA7TG87MDtMOzxjb21wYXQ+IDExMUM7Ozs7TjtIQU5HVUwgTEVUVEVSIE1JRVVNIEJJRVVCOzs7OworMzE2RjtIQU5HVUwgTEVUVEVSIE1JRVVNLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExREQ7Ozs7TjtIQU5HVUwgTEVUVEVSIE1JRVVNIFNJT1M7Ozs7CiszMTcwO0hBTkdVTCBMRVRURVIgTUlFVU0tUEFOU0lPUztMbzswO0w7PGNvbXBhdD4gMTFERjs7OztOO0hBTkdVTCBMRVRURVIgQklFVUIgQkFOIENISSBFVU07Ozs7CiszMTcxO0hBTkdVTCBMRVRURVIgS0FQWUVPVU5NSUVVTTtMbzswO0w7PGNvbXBhdD4gMTExRDs7OztOO0hBTkdVTCBMRVRURVIgTUlFVU0gU1VOIEdZRU9ORyBFVU07Ozs7CiszMTcyO0hBTkdVTCBMRVRURVIgUElFVVAtS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMTFFOzs7O047SEFOR1VMIExFVFRFUiBCSUVVQiBHSVlFT0c7Ozs7CiszMTczO0hBTkdVTCBMRVRURVIgUElFVVAtVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMTIwOzs7O047SEFOR1VMIExFVFRFUiBCSUVVQiBESUdFVUQ7Ozs7CiszMTc0O0hBTkdVTCBMRVRURVIgUElFVVAtU0lPUy1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMjI7Ozs7TjtIQU5HVUwgTEVUVEVSIEJJRVVCIFNJT1MgR0lZRU9HOzs7OworMzE3NTtIQU5HVUwgTEVUVEVSIFBJRVVQLVNJT1MtVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMTIzOzs7O047SEFOR1VMIExFVFRFUiBCSUVVQiBTSU9TIERJR0VVRDs7OzsKKzMxNzY7SEFOR1VMIExFVFRFUiBQSUVVUC1DSUVVQztMbzswO0w7PGNvbXBhdD4gMTEyNzs7OztOO0hBTkdVTCBMRVRURVIgQklFVUIgSklFVUo7Ozs7CiszMTc3O0hBTkdVTCBMRVRURVIgUElFVVAtVEhJRVVUSDtMbzswO0w7PGNvbXBhdD4gMTEyOTs7OztOO0hBTkdVTCBMRVRURVIgQklFVUIgVElFVVQ7Ozs7CiszMTc4O0hBTkdVTCBMRVRURVIgS0FQWUVPVU5QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEyQjs7OztOO0hBTkdVTCBMRVRURVIgQklFVUIgU1VOIEdZRU9ORyBFVU07Ozs7CiszMTc5O0hBTkdVTCBMRVRURVIgS0FQWUVPVU5TU0FOR1BJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMTJDOzs7O047SEFOR1VMIExFVFRFUiBTU0FORyBCSUVVQiBTVU4gR1lFT05HIEVVTTs7OzsKKzMxN0E7SEFOR1VMIExFVFRFUiBTSU9TLUtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTEyRDs7OztOO0hBTkdVTCBMRVRURVIgU0lPUyBHSVlFT0c7Ozs7CiszMTdCO0hBTkdVTCBMRVRURVIgU0lPUy1OSUVVTjtMbzswO0w7PGNvbXBhdD4gMTEyRTs7OztOO0hBTkdVTCBMRVRURVIgU0lPUyBOSUVVTjs7OzsKKzMxN0M7SEFOR1VMIExFVFRFUiBTSU9TLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTEyRjs7OztOO0hBTkdVTCBMRVRURVIgU0lPUyBESUdFVUQ7Ozs7CiszMTdEO0hBTkdVTCBMRVRURVIgU0lPUy1QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEzMjs7OztOO0hBTkdVTCBMRVRURVIgU0lPUyBCSUVVQjs7OzsKKzMxN0U7SEFOR1VMIExFVFRFUiBTSU9TLUNJRVVDO0xvOzA7TDs8Y29tcGF0PiAxMTM2Ozs7O047SEFOR1VMIExFVFRFUiBTSU9TIEpJRVVKOzs7OworMzE3RjtIQU5HVUwgTEVUVEVSIFBBTlNJT1M7TG87MDtMOzxjb21wYXQ+IDExNDA7Ozs7TjtIQU5HVUwgTEVUVEVSIEJBTiBDSEkgRVVNOzs7OworMzE4MDtIQU5HVUwgTEVUVEVSIFNTQU5HSUVVTkc7TG87MDtMOzxjb21wYXQ+IDExNDc7Ozs7TjtIQU5HVUwgTEVUVEVSIFNTQU5HIElFVU5HOzs7OworMzE4MTtIQU5HVUwgTEVUVEVSIFlFU0lFVU5HO0xvOzA7TDs8Y29tcGF0PiAxMTRDOzs7O047SEFOR1VMIExFVFRFUiBOR0lFVU5HOzs7OworMzE4MjtIQU5HVUwgTEVUVEVSIFlFU0lFVU5HLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExRjE7Ozs7TjtIQU5HVUwgTEVUVEVSIE5HSUVVTkcgU0lPUzs7OzsKKzMxODM7SEFOR1VMIExFVFRFUiBZRVNJRVVORy1QQU5TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUYyOzs7O047SEFOR1VMIExFVFRFUiBOR0lFVU5HIEJBTiBDSEkgRVVNOzs7OworMzE4NDtIQU5HVUwgTEVUVEVSIEtBUFlFT1VOUEhJRVVQSDtMbzswO0w7PGNvbXBhdD4gMTE1Nzs7OztOO0hBTkdVTCBMRVRURVIgUElFVVAgU1VOIEdZRU9ORyBFVU07Ozs7CiszMTg1O0hBTkdVTCBMRVRURVIgU1NBTkdISUVVSDtMbzswO0w7PGNvbXBhdD4gMTE1ODs7OztOO0hBTkdVTCBMRVRURVIgU1NBTkcgSElFVUg7Ozs7CiszMTg2O0hBTkdVTCBMRVRURVIgWUVPUklOSElFVUg7TG87MDtMOzxjb21wYXQ+IDExNTk7Ozs7TjtIQU5HVUwgTEVUVEVSIFlFT0xJTiBISUVVSDs7OzsKKzMxODc7SEFOR1VMIExFVFRFUiBZTy1ZQTtMbzswO0w7PGNvbXBhdD4gMTE4NDs7OztOO0hBTkdVTCBMRVRURVIgWU9ZQTs7OzsKKzMxODg7SEFOR1VMIExFVFRFUiBZTy1ZQUU7TG87MDtMOzxjb21wYXQ+IDExODU7Ozs7TjtIQU5HVUwgTEVUVEVSIFlPWUFFOzs7OworMzE4OTtIQU5HVUwgTEVUVEVSIFlPLUk7TG87MDtMOzxjb21wYXQ+IDExODg7Ozs7TjtIQU5HVUwgTEVUVEVSIFlPSTs7OzsKKzMxOEE7SEFOR1VMIExFVFRFUiBZVS1ZRU87TG87MDtMOzxjb21wYXQ+IDExOTE7Ozs7TjtIQU5HVUwgTEVUVEVSIFlVWUVPOzs7OworMzE4QjtIQU5HVUwgTEVUVEVSIFlVLVlFO0xvOzA7TDs8Y29tcGF0PiAxMTkyOzs7O047SEFOR1VMIExFVFRFUiBZVVlFOzs7OworMzE4QztIQU5HVUwgTEVUVEVSIFlVLUk7TG87MDtMOzxjb21wYXQ+IDExOTQ7Ozs7TjtIQU5HVUwgTEVUVEVSIFlVSTs7OzsKKzMxOEQ7SEFOR1VMIExFVFRFUiBBUkFFQTtMbzswO0w7PGNvbXBhdD4gMTE5RTs7OztOO0hBTkdVTCBMRVRURVIgQUxBRSBBOzs7OworMzE4RTtIQU5HVUwgTEVUVEVSIEFSQUVBRTtMbzswO0w7PGNvbXBhdD4gMTFBMTs7OztOO0hBTkdVTCBMRVRURVIgQUxBRSBBRTs7OzsKKzMxOTA7SURFT0dSQVBISUMgQU5OT1RBVElPTiBMSU5LSU5HIE1BUks7U287MDtMOzs7OztOO0tBTkJVTiBUQVRFVEVOO0thbmJ1biBUYXRldGVuOzs7CiszMTkxO0lERU9HUkFQSElDIEFOTk9UQVRJT04gUkVWRVJTRSBNQVJLO1NvOzA7TDs7Ozs7TjtLQUVSSVRFTiBSRTtLYWVyaXRlbjs7OworMzE5MjtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIE9ORSBNQVJLO05vOzA7TDs8c3VwZXI+IDRFMDA7Ozs7TjtLQUVSSVRFTiBJVEk7S2Flcml0ZW47OzsKKzMxOTM7SURFT0dSQVBISUMgQU5OT1RBVElPTiBUV08gTUFSSztObzswO0w7PHN1cGVyPiA0RThDOzs7O047S0FFUklURU4gTkk7S2Flcml0ZW47OzsKKzMxOTQ7SURFT0dSQVBISUMgQU5OT1RBVElPTiBUSFJFRSBNQVJLO05vOzA7TDs8c3VwZXI+IDRFMDk7Ozs7TjtLQUVSSVRFTiBTQU47S2Flcml0ZW47OzsKKzMxOTU7SURFT0dSQVBISUMgQU5OT1RBVElPTiBGT1VSIE1BUks7Tm87MDtMOzxzdXBlcj4gNTZEQjs7OztOO0tBRVJJVEVOIFNJO0thZXJpdGVuOzs7CiszMTk2O0lERU9HUkFQSElDIEFOTk9UQVRJT04gVE9QIE1BUks7U287MDtMOzxzdXBlcj4gNEUwQTs7OztOO0tBRVJJVEVOIFpZT1U7S2Flcml0ZW47OzsKKzMxOTc7SURFT0dSQVBISUMgQU5OT1RBVElPTiBNSURETEUgTUFSSztTbzswO0w7PHN1cGVyPiA0RTJEOzs7O047S0FFUklURU4gVFlVVTtLYWVyaXRlbjs7OworMzE5ODtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIEJPVFRPTSBNQVJLO1NvOzA7TDs8c3VwZXI+IDRFMEI7Ozs7TjtLQUVSSVRFTiBHRTtLYWVyaXRlbjs7OworMzE5OTtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIEZJUlNUIE1BUks7U287MDtMOzxzdXBlcj4gNzUzMjs7OztOO0tBRVJJVEVOIEtPVTtLYWVyaXRlbjs7OworMzE5QTtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIFNFQ09ORCBNQVJLO1NvOzA7TDs8c3VwZXI+IDRFNTk7Ozs7TjtLQUVSSVRFTiBPVFU7S2Flcml0ZW47OzsKKzMxOUI7SURFT0dSQVBISUMgQU5OT1RBVElPTiBUSElSRCBNQVJLO1NvOzA7TDs8c3VwZXI+IDRFMTk7Ozs7TjtLQUVSSVRFTiBIRUk7S2Flcml0ZW47OzsKKzMxOUM7SURFT0dSQVBISUMgQU5OT1RBVElPTiBGT1VSVEggTUFSSztTbzswO0w7PHN1cGVyPiA0RTAxOzs7O047S0FFUklURU4gVEVJO0thZXJpdGVuOzs7CiszMTlEO0lERU9HUkFQSElDIEFOTk9UQVRJT04gSEVBVkVOIE1BUks7U287MDtMOzxzdXBlcj4gNTkyOTs7OztOO0tBRVJJVEVOIFRFTjtLYWVyaXRlbjs7OworMzE5RTtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIEVBUlRIIE1BUks7U287MDtMOzxzdXBlcj4gNTczMDs7OztOO0tBRVJJVEVOIFRJO0thZXJpdGVuOzs7CiszMTlGO0lERU9HUkFQSElDIEFOTk9UQVRJT04gTUFOIE1BUks7U287MDtMOzxzdXBlcj4gNEVCQTs7OztOO0tBRVJJVEVOIFpJTjtLYWVyaXRlbjs7OworMzIwMDtQQVJFTlRIRVNJWkVEIEhBTkdVTCBLSVlFT0s7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwMCAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgR0lZRU9HOzs7OworMzIwMTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBOSUVVTjtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTAyIDAwMjk7Ozs7Tjs7Ozs7CiszMjAyO1BBUkVOVEhFU0laRUQgSEFOR1VMIFRJS0VVVDtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTAzIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBESUdFVUQ7Ozs7CiszMjAzO1BBUkVOVEhFU0laRUQgSEFOR1VMIFJJRVVMO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDUgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIExJRVVMOzs7OworMzIwNDtQQVJFTlRIRVNJWkVEIEhBTkdVTCBNSUVVTTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTA2IDAwMjk7Ozs7Tjs7Ozs7CiszMjA1O1BBUkVOVEhFU0laRUQgSEFOR1VMIFBJRVVQO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDcgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEJJRVVCOzs7OworMzIwNjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBTSU9TO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDkgMDAyOTs7OztOOzs7OzsKKzMyMDc7UEFSRU5USEVTSVpFRCBIQU5HVUwgSUVVTkc7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwQiAwMDI5Ozs7O047Ozs7OworMzIwODtQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSUVVQztTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBDIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBKSUVVSjs7OzsKKzMyMDk7UEFSRU5USEVTSVpFRCBIQU5HVUwgQ0hJRVVDSDtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBFIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSUVVQzs7OzsKKzMyMEE7UEFSRU5USEVTSVpFRCBIQU5HVUwgS0hJRVVLSDtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBGIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBLSVlFT0s7Ozs7CiszMjBCO1BBUkVOVEhFU0laRUQgSEFOR1VMIFRISUVVVEg7U287MDtMOzxjb21wYXQ+IDAwMjggMTExMCAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgVElFVVQ7Ozs7CiszMjBDO1BBUkVOVEhFU0laRUQgSEFOR1VMIFBISUVVUEg7U287MDtMOzxjb21wYXQ+IDAwMjggMTExMSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgUElFVVA7Ozs7CiszMjBEO1BBUkVOVEhFU0laRUQgSEFOR1VMIEhJRVVIO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMTIgMDAyOTs7OztOOzs7OzsKKzMyMEU7UEFSRU5USEVTSVpFRCBIQU5HVUwgS0lZRU9LIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwMCAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBHQTs7OzsKKzMyMEY7UEFSRU5USEVTSVpFRCBIQU5HVUwgTklFVU4gQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTAyIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIE5BOzs7OworMzIxMDtQQVJFTlRIRVNJWkVEIEhBTkdVTCBUSUtFVVQgQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTAzIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIERBOzs7OworMzIxMTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBSSUVVTCBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDUgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgTEE7Ozs7CiszMjEyO1BBUkVOVEhFU0laRUQgSEFOR1VMIE1JRVVNIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwNiAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBNQTs7OzsKKzMyMTM7UEFSRU5USEVTSVpFRCBIQU5HVUwgUElFVVAgQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTA3IDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEJBOzs7OworMzIxNDtQQVJFTlRIRVNJWkVEIEhBTkdVTCBTSU9TIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwOSAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBTQTs7OzsKKzMyMTU7UEFSRU5USEVTSVpFRCBIQU5HVUwgSUVVTkcgQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBCIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEE7Ozs7CiszMjE2O1BBUkVOVEhFU0laRUQgSEFOR1VMIENJRVVDIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwQyAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBKQTs7OzsKKzMyMTc7UEFSRU5USEVTSVpFRCBIQU5HVUwgQ0hJRVVDSCBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEUgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgQ0E7Ozs7CiszMjE4O1BBUkVOVEhFU0laRUQgSEFOR1VMIEtISUVVS0ggQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBGIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEtBOzs7OworMzIxOTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBUSElFVVRIIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTExMCAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBUQTs7OzsKKzMyMUE7UEFSRU5USEVTSVpFRCBIQU5HVUwgUEhJRVVQSCBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMTEgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgUEE7Ozs7CiszMjFCO1BBUkVOVEhFU0laRUQgSEFOR1VMIEhJRVVIIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTExMiAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBIQTs7OzsKKzMyMUM7UEFSRU5USEVTSVpFRCBIQU5HVUwgQ0lFVUMgVTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBDIDExNkUgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEpVOzs7OworMzIyMDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBPTkU7Tm87MDtMOzxjb21wYXQ+IDAwMjggNEUwMCAwMDI5Ozs7O047Ozs7OworMzIyMTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBUV087Tm87MDtMOzxjb21wYXQ+IDAwMjggNEU4QyAwMDI5Ozs7O047Ozs7OworMzIyMjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBUSFJFRTtObzswO0w7PGNvbXBhdD4gMDAyOCA0RTA5IDAwMjk7Ozs7Tjs7Ozs7CiszMjIzO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIEZPVVI7Tm87MDtMOzxjb21wYXQ+IDAwMjggNTZEQiAwMDI5Ozs7O047Ozs7OworMzIyNDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBGSVZFO05vOzA7TDs8Y29tcGF0PiAwMDI4IDRFOTQgMDAyOTs7OztOOzs7OzsKKzMyMjU7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggU0lYO05vOzA7TDs8Y29tcGF0PiAwMDI4IDUxNkQgMDAyOTs7OztOOzs7OzsKKzMyMjY7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggU0VWRU47Tm87MDtMOzxjb21wYXQ+IDAwMjggNEUwMyAwMDI5Ozs7O047Ozs7OworMzIyNztQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBFSUdIVDtObzswO0w7PGNvbXBhdD4gMDAyOCA1MTZCIDAwMjk7Ozs7Tjs7Ozs7CiszMjI4O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIE5JTkU7Tm87MDtMOzxjb21wYXQ+IDAwMjggNEU1RCAwMDI5Ozs7O047Ozs7OworMzIyOTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBURU47Tm87MDtMOzxjb21wYXQ+IDAwMjggNTM0MSAwMDI5Ozs7O047Ozs7OworMzIyQTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBNT09OO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDY3MDggMDAyOTs7OztOOzs7OzsKKzMyMkI7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggRklSRTtTbzswO0w7PGNvbXBhdD4gMDAyOCA3MDZCIDAwMjk7Ozs7Tjs7Ozs7CiszMjJDO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFdBVEVSO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDZDMzQgMDAyOTs7OztOOzs7OzsKKzMyMkQ7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggV09PRDtTbzswO0w7PGNvbXBhdD4gMDAyOCA2NzI4IDAwMjk7Ozs7Tjs7Ozs7CiszMjJFO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIE1FVEFMO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDkxRDEgMDAyOTs7OztOOzs7OzsKKzMyMkY7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggRUFSVEg7U287MDtMOzxjb21wYXQ+IDAwMjggNTcxRiAwMDI5Ozs7O047Ozs7OworMzIzMDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTVU47U287MDtMOzxjb21wYXQ+IDAwMjggNjVFNSAwMDI5Ozs7O047Ozs7OworMzIzMTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTVE9DSztTbzswO0w7PGNvbXBhdD4gMDAyOCA2ODJBIDAwMjk7Ozs7Tjs7Ozs7CiszMjMyO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIEhBVkU7U287MDtMOzxjb21wYXQ+IDAwMjggNjcwOSAwMDI5Ozs7O047Ozs7OworMzIzMztQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTT0NJRVRZO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDc5M0UgMDAyOTs7OztOOzs7OzsKKzMyMzQ7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggTkFNRTtTbzswO0w7PGNvbXBhdD4gMDAyOCA1NDBEIDAwMjk7Ozs7Tjs7Ozs7CiszMjM1O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNQRUNJQUw7U287MDtMOzxjb21wYXQ+IDAwMjggNzI3OSAwMDI5Ozs7O047Ozs7OworMzIzNjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBGSU5BTkNJQUw7U287MDtMOzxjb21wYXQ+IDAwMjggOENBMSAwMDI5Ozs7O047Ozs7OworMzIzNztQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBDT05HUkFUVUxBVElPTjtTbzswO0w7PGNvbXBhdD4gMDAyOCA3OTVEIDAwMjk7Ozs7Tjs7Ozs7CiszMjM4O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIExBQk9SO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDUyQjQgMDAyOTs7OztOOzs7OzsKKzMyMzk7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggUkVQUkVTRU5UO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDRFRTMgMDAyOTs7OztOOzs7OzsKKzMyM0E7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggQ0FMTDtTbzswO0w7PGNvbXBhdD4gMDAyOCA1NDdDIDAwMjk7Ozs7Tjs7Ozs7CiszMjNCO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNUVURZO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDVCNjYgMDAyOTs7OztOOzs7OzsKKzMyM0M7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggU1VQRVJWSVNFO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDc2RTMgMDAyOTs7OztOOzs7OzsKKzMyM0Q7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggRU5URVJQUklTRTtTbzswO0w7PGNvbXBhdD4gMDAyOCA0RjAxIDAwMjk7Ozs7Tjs7Ozs7CiszMjNFO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFJFU09VUkNFO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDhDQzcgMDAyOTs7OztOOzs7OzsKKzMyM0Y7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggQUxMSUFOQ0U7U287MDtMOzxjb21wYXQ+IDAwMjggNTM1NCAwMDI5Ozs7O047Ozs7OworMzI0MDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBGRVNUSVZBTDtTbzswO0w7PGNvbXBhdD4gMDAyOCA3OTZEIDAwMjk7Ozs7Tjs7Ozs7CiszMjQxO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFJFU1Q7U287MDtMOzxjb21wYXQ+IDAwMjggNEYxMSAwMDI5Ozs7O047Ozs7OworMzI0MjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTRUxGO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDgxRUEgMDAyOTs7OztOOzs7OzsKKzMyNDM7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggUkVBQ0g7U287MDtMOzxjb21wYXQ+IDAwMjggODFGMyAwMDI5Ozs7O047Ozs7OworMzI2MDtDSVJDTEVEIEhBTkdVTCBLSVlFT0s7U287MDtMOzxjaXJjbGU+IDExMDA7Ozs7TjtDSVJDTEVEIEhBTkdVTCBHSVlFT0c7Ozs7CiszMjYxO0NJUkNMRUQgSEFOR1VMIE5JRVVOO1NvOzA7TDs8Y2lyY2xlPiAxMTAyOzs7O047Ozs7OworMzI2MjtDSVJDTEVEIEhBTkdVTCBUSUtFVVQ7U287MDtMOzxjaXJjbGU+IDExMDM7Ozs7TjtDSVJDTEVEIEhBTkdVTCBESUdFVUQ7Ozs7CiszMjYzO0NJUkNMRUQgSEFOR1VMIFJJRVVMO1NvOzA7TDs8Y2lyY2xlPiAxMTA1Ozs7O047Q0lSQ0xFRCBIQU5HVUwgTElFVUw7Ozs7CiszMjY0O0NJUkNMRUQgSEFOR1VMIE1JRVVNO1NvOzA7TDs8Y2lyY2xlPiAxMTA2Ozs7O047Ozs7OworMzI2NTtDSVJDTEVEIEhBTkdVTCBQSUVVUDtTbzswO0w7PGNpcmNsZT4gMTEwNzs7OztOO0NJUkNMRUQgSEFOR1VMIEJJRVVCOzs7OworMzI2NjtDSVJDTEVEIEhBTkdVTCBTSU9TO1NvOzA7TDs8Y2lyY2xlPiAxMTA5Ozs7O047Ozs7OworMzI2NztDSVJDTEVEIEhBTkdVTCBJRVVORztTbzswO0w7PGNpcmNsZT4gMTEwQjs7OztOOzs7OzsKKzMyNjg7Q0lSQ0xFRCBIQU5HVUwgQ0lFVUM7U287MDtMOzxjaXJjbGU+IDExMEM7Ozs7TjtDSVJDTEVEIEhBTkdVTCBKSUVVSjs7OzsKKzMyNjk7Q0lSQ0xFRCBIQU5HVUwgQ0hJRVVDSDtTbzswO0w7PGNpcmNsZT4gMTEwRTs7OztOO0NJUkNMRUQgSEFOR1VMIENJRVVDOzs7OworMzI2QTtDSVJDTEVEIEhBTkdVTCBLSElFVUtIO1NvOzA7TDs8Y2lyY2xlPiAxMTBGOzs7O047Q0lSQ0xFRCBIQU5HVUwgS0lZRU9LOzs7OworMzI2QjtDSVJDTEVEIEhBTkdVTCBUSElFVVRIO1NvOzA7TDs8Y2lyY2xlPiAxMTEwOzs7O047Q0lSQ0xFRCBIQU5HVUwgVElFVVQ7Ozs7CiszMjZDO0NJUkNMRUQgSEFOR1VMIFBISUVVUEg7U287MDtMOzxjaXJjbGU+IDExMTE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBQSUVVUDs7OzsKKzMyNkQ7Q0lSQ0xFRCBIQU5HVUwgSElFVUg7U287MDtMOzxjaXJjbGU+IDExMTI7Ozs7Tjs7Ozs7CiszMjZFO0NJUkNMRUQgSEFOR1VMIEtJWUVPSyBBO1NvOzA7TDs8Y2lyY2xlPiAxMTAwIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBHQTs7OzsKKzMyNkY7Q0lSQ0xFRCBIQU5HVUwgTklFVU4gQTtTbzswO0w7PGNpcmNsZT4gMTEwMiAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgTkE7Ozs7CiszMjcwO0NJUkNMRUQgSEFOR1VMIFRJS0VVVCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTAzIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBEQTs7OzsKKzMyNzE7Q0lSQ0xFRCBIQU5HVUwgUklFVUwgQTtTbzswO0w7PGNpcmNsZT4gMTEwNSAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgTEE7Ozs7CiszMjcyO0NJUkNMRUQgSEFOR1VMIE1JRVVNIEE7U287MDtMOzxjaXJjbGU+IDExMDYgMTE2MTs7OztOO0NJUkNMRUQgSEFOR1VMIE1BOzs7OworMzI3MztDSVJDTEVEIEhBTkdVTCBQSUVVUCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTA3IDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBCQTs7OzsKKzMyNzQ7Q0lSQ0xFRCBIQU5HVUwgU0lPUyBBO1NvOzA7TDs8Y2lyY2xlPiAxMTA5IDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBTQTs7OzsKKzMyNzU7Q0lSQ0xFRCBIQU5HVUwgSUVVTkcgQTtTbzswO0w7PGNpcmNsZT4gMTEwQiAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgQTs7OzsKKzMyNzY7Q0lSQ0xFRCBIQU5HVUwgQ0lFVUMgQTtTbzswO0w7PGNpcmNsZT4gMTEwQyAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgSkE7Ozs7CiszMjc3O0NJUkNMRUQgSEFOR1VMIENISUVVQ0ggQTtTbzswO0w7PGNpcmNsZT4gMTEwRSAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgQ0E7Ozs7CiszMjc4O0NJUkNMRUQgSEFOR1VMIEtISUVVS0ggQTtTbzswO0w7PGNpcmNsZT4gMTEwRiAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgS0E7Ozs7CiszMjc5O0NJUkNMRUQgSEFOR1VMIFRISUVVVEggQTtTbzswO0w7PGNpcmNsZT4gMTExMCAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgVEE7Ozs7CiszMjdBO0NJUkNMRUQgSEFOR1VMIFBISUVVUEggQTtTbzswO0w7PGNpcmNsZT4gMTExMSAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgUEE7Ozs7CiszMjdCO0NJUkNMRUQgSEFOR1VMIEhJRVVIIEE7U287MDtMOzxjaXJjbGU+IDExMTIgMTE2MTs7OztOO0NJUkNMRUQgSEFOR1VMIEhBOzs7OworMzI3RjtLT1JFQU4gU1RBTkRBUkQgU1lNQk9MO1NvOzA7TDs7Ozs7Tjs7Ozs7CiszMjgwO0NJUkNMRUQgSURFT0dSQVBIIE9ORTtObzswO0w7PGNpcmNsZT4gNEUwMDs7OzE7Tjs7Ozs7CiszMjgxO0NJUkNMRUQgSURFT0dSQVBIIFRXTztObzswO0w7PGNpcmNsZT4gNEU4Qzs7OzI7Tjs7Ozs7CiszMjgyO0NJUkNMRUQgSURFT0dSQVBIIFRIUkVFO05vOzA7TDs8Y2lyY2xlPiA0RTA5Ozs7MztOOzs7OzsKKzMyODM7Q0lSQ0xFRCBJREVPR1JBUEggRk9VUjtObzswO0w7PGNpcmNsZT4gNTZEQjs7OzQ7Tjs7Ozs7CiszMjg0O0NJUkNMRUQgSURFT0dSQVBIIEZJVkU7Tm87MDtMOzxjaXJjbGU+IDRFOTQ7Ozs1O047Ozs7OworMzI4NTtDSVJDTEVEIElERU9HUkFQSCBTSVg7Tm87MDtMOzxjaXJjbGU+IDUxNkQ7Ozs2O047Ozs7OworMzI4NjtDSVJDTEVEIElERU9HUkFQSCBTRVZFTjtObzswO0w7PGNpcmNsZT4gNEUwMzs7Ozc7Tjs7Ozs7CiszMjg3O0NJUkNMRUQgSURFT0dSQVBIIEVJR0hUO05vOzA7TDs8Y2lyY2xlPiA1MTZCOzs7ODtOOzs7OzsKKzMyODg7Q0lSQ0xFRCBJREVPR1JBUEggTklORTtObzswO0w7PGNpcmNsZT4gNEU1RDs7Ozk7Tjs7Ozs7CiszMjg5O0NJUkNMRUQgSURFT0dSQVBIIFRFTjtObzswO0w7PGNpcmNsZT4gNTM0MTs7OzEwO047Ozs7OworMzI4QTtDSVJDTEVEIElERU9HUkFQSCBNT09OO1NvOzA7TDs8Y2lyY2xlPiA2NzA4Ozs7O047Ozs7OworMzI4QjtDSVJDTEVEIElERU9HUkFQSCBGSVJFO1NvOzA7TDs8Y2lyY2xlPiA3MDZCOzs7O047Ozs7OworMzI4QztDSVJDTEVEIElERU9HUkFQSCBXQVRFUjtTbzswO0w7PGNpcmNsZT4gNkMzNDs7OztOOzs7OzsKKzMyOEQ7Q0lSQ0xFRCBJREVPR1JBUEggV09PRDtTbzswO0w7PGNpcmNsZT4gNjcyODs7OztOOzs7OzsKKzMyOEU7Q0lSQ0xFRCBJREVPR1JBUEggTUVUQUw7U287MDtMOzxjaXJjbGU+IDkxRDE7Ozs7Tjs7Ozs7CiszMjhGO0NJUkNMRUQgSURFT0dSQVBIIEVBUlRIO1NvOzA7TDs8Y2lyY2xlPiA1NzFGOzs7O047Ozs7OworMzI5MDtDSVJDTEVEIElERU9HUkFQSCBTVU47U287MDtMOzxjaXJjbGU+IDY1RTU7Ozs7Tjs7Ozs7CiszMjkxO0NJUkNMRUQgSURFT0dSQVBIIFNUT0NLO1NvOzA7TDs8Y2lyY2xlPiA2ODJBOzs7O047Ozs7OworMzI5MjtDSVJDTEVEIElERU9HUkFQSCBIQVZFO1NvOzA7TDs8Y2lyY2xlPiA2NzA5Ozs7O047Ozs7OworMzI5MztDSVJDTEVEIElERU9HUkFQSCBTT0NJRVRZO1NvOzA7TDs8Y2lyY2xlPiA3OTNFOzs7O047Ozs7OworMzI5NDtDSVJDTEVEIElERU9HUkFQSCBOQU1FO1NvOzA7TDs8Y2lyY2xlPiA1NDBEOzs7O047Ozs7OworMzI5NTtDSVJDTEVEIElERU9HUkFQSCBTUEVDSUFMO1NvOzA7TDs8Y2lyY2xlPiA3Mjc5Ozs7O047Ozs7OworMzI5NjtDSVJDTEVEIElERU9HUkFQSCBGSU5BTkNJQUw7U287MDtMOzxjaXJjbGU+IDhDQTE7Ozs7Tjs7Ozs7CiszMjk3O0NJUkNMRUQgSURFT0dSQVBIIENPTkdSQVRVTEFUSU9OO1NvOzA7TDs8Y2lyY2xlPiA3OTVEOzs7O047Ozs7OworMzI5ODtDSVJDTEVEIElERU9HUkFQSCBMQUJPUjtTbzswO0w7PGNpcmNsZT4gNTJCNDs7OztOOzs7OzsKKzMyOTk7Q0lSQ0xFRCBJREVPR1JBUEggU0VDUkVUO1NvOzA7TDs8Y2lyY2xlPiA3OUQ4Ozs7O047Ozs7OworMzI5QTtDSVJDTEVEIElERU9HUkFQSCBNQUxFO1NvOzA7TDs8Y2lyY2xlPiA3NTM3Ozs7O047Ozs7OworMzI5QjtDSVJDTEVEIElERU9HUkFQSCBGRU1BTEU7U287MDtMOzxjaXJjbGU+IDU5NzM7Ozs7Tjs7Ozs7CiszMjlDO0NJUkNMRUQgSURFT0dSQVBIIFNVSVRBQkxFO1NvOzA7TDs8Y2lyY2xlPiA5MDY5Ozs7O047Ozs7OworMzI5RDtDSVJDTEVEIElERU9HUkFQSCBFWENFTExFTlQ7U287MDtMOzxjaXJjbGU+IDUxMkE7Ozs7Tjs7Ozs7CiszMjlFO0NJUkNMRUQgSURFT0dSQVBIIFBSSU5UO1NvOzA7TDs8Y2lyY2xlPiA1MzcwOzs7O047Ozs7OworMzI5RjtDSVJDTEVEIElERU9HUkFQSCBBVFRFTlRJT047U287MDtMOzxjaXJjbGU+IDZDRTg7Ozs7Tjs7Ozs7CiszMkEwO0NJUkNMRUQgSURFT0dSQVBIIElURU07U287MDtMOzxjaXJjbGU+IDk4MDU7Ozs7Tjs7Ozs7CiszMkExO0NJUkNMRUQgSURFT0dSQVBIIFJFU1Q7U287MDtMOzxjaXJjbGU+IDRGMTE7Ozs7Tjs7Ozs7CiszMkEyO0NJUkNMRUQgSURFT0dSQVBIIENPUFk7U287MDtMOzxjaXJjbGU+IDUxOTk7Ozs7Tjs7Ozs7CiszMkEzO0NJUkNMRUQgSURFT0dSQVBIIENPUlJFQ1Q7U287MDtMOzxjaXJjbGU+IDZCNjM7Ozs7Tjs7Ozs7CiszMkE0O0NJUkNMRUQgSURFT0dSQVBIIEhJR0g7U287MDtMOzxjaXJjbGU+IDRFMEE7Ozs7Tjs7Ozs7CiszMkE1O0NJUkNMRUQgSURFT0dSQVBIIENFTlRSRTtTbzswO0w7PGNpcmNsZT4gNEUyRDs7OztOO0NJUkNMRUQgSURFT0dSQVBIIENFTlRFUjs7OzsKKzMyQTY7Q0lSQ0xFRCBJREVPR1JBUEggTE9XO1NvOzA7TDs8Y2lyY2xlPiA0RTBCOzs7O047Ozs7OworMzJBNztDSVJDTEVEIElERU9HUkFQSCBMRUZUO1NvOzA7TDs8Y2lyY2xlPiA1REU2Ozs7O047Ozs7OworMzJBODtDSVJDTEVEIElERU9HUkFQSCBSSUdIVDtTbzswO0w7PGNpcmNsZT4gNTNGMzs7OztOOzs7OzsKKzMyQTk7Q0lSQ0xFRCBJREVPR1JBUEggTUVESUNJTkU7U287MDtMOzxjaXJjbGU+IDUzM0I7Ozs7Tjs7Ozs7CiszMkFBO0NJUkNMRUQgSURFT0dSQVBIIFJFTElHSU9OO1NvOzA7TDs8Y2lyY2xlPiA1Qjk3Ozs7O047Ozs7OworMzJBQjtDSVJDTEVEIElERU9HUkFQSCBTVFVEWTtTbzswO0w7PGNpcmNsZT4gNUI2Njs7OztOOzs7OzsKKzMyQUM7Q0lSQ0xFRCBJREVPR1JBUEggU1VQRVJWSVNFO1NvOzA7TDs8Y2lyY2xlPiA3NkUzOzs7O047Ozs7OworMzJBRDtDSVJDTEVEIElERU9HUkFQSCBFTlRFUlBSSVNFO1NvOzA7TDs8Y2lyY2xlPiA0RjAxOzs7O047Ozs7OworMzJBRTtDSVJDTEVEIElERU9HUkFQSCBSRVNPVVJDRTtTbzswO0w7PGNpcmNsZT4gOENDNzs7OztOOzs7OzsKKzMyQUY7Q0lSQ0xFRCBJREVPR1JBUEggQUxMSUFOQ0U7U287MDtMOzxjaXJjbGU+IDUzNTQ7Ozs7Tjs7Ozs7CiszMkIwO0NJUkNMRUQgSURFT0dSQVBIIE5JR0hUO1NvOzA7TDs8Y2lyY2xlPiA1OTFDOzs7O047Ozs7OworMzJDMDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBKQU5VQVJZO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDY3MDg7Ozs7Tjs7Ozs7CiszMkMxO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEZFQlJVQVJZO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDY3MDg7Ozs7Tjs7Ozs7CiszMkMyO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIE1BUkNIO1NvOzA7TDs8Y29tcGF0PiAwMDMzIDY3MDg7Ozs7Tjs7Ozs7CiszMkMzO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEFQUklMO1NvOzA7TDs8Y29tcGF0PiAwMDM0IDY3MDg7Ozs7Tjs7Ozs7CiszMkM0O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIE1BWTtTbzswO0w7PGNvbXBhdD4gMDAzNSA2NzA4Ozs7O047Ozs7OworMzJDNTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBKVU5FO1NvOzA7TDs8Y29tcGF0PiAwMDM2IDY3MDg7Ozs7Tjs7Ozs7CiszMkM2O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEpVTFk7U287MDtMOzxjb21wYXQ+IDAwMzcgNjcwODs7OztOOzs7OzsKKzMyQzc7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgQVVHVVNUO1NvOzA7TDs8Y29tcGF0PiAwMDM4IDY3MDg7Ozs7Tjs7Ozs7CiszMkM4O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIFNFUFRFTUJFUjtTbzswO0w7PGNvbXBhdD4gMDAzOSA2NzA4Ozs7O047Ozs7OworMzJDOTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBPQ1RPQkVSO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzAgNjcwODs7OztOOzs7OzsKKzMyQ0E7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgTk9WRU1CRVI7U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMSA2NzA4Ozs7O047Ozs7OworMzJDQjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBERUNFTUJFUjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMyIDY3MDg7Ozs7Tjs7Ozs7CiszMkQwO0NJUkNMRUQgS0FUQUtBTkEgQTtTbzswO0w7PGNpcmNsZT4gMzBBMjs7OztOOzs7OzsKKzMyRDE7Q0lSQ0xFRCBLQVRBS0FOQSBJO1NvOzA7TDs8Y2lyY2xlPiAzMEE0Ozs7O047Ozs7OworMzJEMjtDSVJDTEVEIEtBVEFLQU5BIFU7U287MDtMOzxjaXJjbGU+IDMwQTY7Ozs7Tjs7Ozs7CiszMkQzO0NJUkNMRUQgS0FUQUtBTkEgRTtTbzswO0w7PGNpcmNsZT4gMzBBODs7OztOOzs7OzsKKzMyRDQ7Q0lSQ0xFRCBLQVRBS0FOQSBPO1NvOzA7TDs8Y2lyY2xlPiAzMEFBOzs7O047Ozs7OworMzJENTtDSVJDTEVEIEtBVEFLQU5BIEtBO1NvOzA7TDs8Y2lyY2xlPiAzMEFCOzs7O047Ozs7OworMzJENjtDSVJDTEVEIEtBVEFLQU5BIEtJO1NvOzA7TDs8Y2lyY2xlPiAzMEFEOzs7O047Ozs7OworMzJENztDSVJDTEVEIEtBVEFLQU5BIEtVO1NvOzA7TDs8Y2lyY2xlPiAzMEFGOzs7O047Ozs7OworMzJEODtDSVJDTEVEIEtBVEFLQU5BIEtFO1NvOzA7TDs8Y2lyY2xlPiAzMEIxOzs7O047Ozs7OworMzJEOTtDSVJDTEVEIEtBVEFLQU5BIEtPO1NvOzA7TDs8Y2lyY2xlPiAzMEIzOzs7O047Ozs7OworMzJEQTtDSVJDTEVEIEtBVEFLQU5BIFNBO1NvOzA7TDs8Y2lyY2xlPiAzMEI1Ozs7O047Ozs7OworMzJEQjtDSVJDTEVEIEtBVEFLQU5BIFNJO1NvOzA7TDs8Y2lyY2xlPiAzMEI3Ozs7O047Ozs7OworMzJEQztDSVJDTEVEIEtBVEFLQU5BIFNVO1NvOzA7TDs8Y2lyY2xlPiAzMEI5Ozs7O047Ozs7OworMzJERDtDSVJDTEVEIEtBVEFLQU5BIFNFO1NvOzA7TDs8Y2lyY2xlPiAzMEJCOzs7O047Ozs7OworMzJERTtDSVJDTEVEIEtBVEFLQU5BIFNPO1NvOzA7TDs8Y2lyY2xlPiAzMEJEOzs7O047Ozs7OworMzJERjtDSVJDTEVEIEtBVEFLQU5BIFRBO1NvOzA7TDs8Y2lyY2xlPiAzMEJGOzs7O047Ozs7OworMzJFMDtDSVJDTEVEIEtBVEFLQU5BIFRJO1NvOzA7TDs8Y2lyY2xlPiAzMEMxOzs7O047Ozs7OworMzJFMTtDSVJDTEVEIEtBVEFLQU5BIFRVO1NvOzA7TDs8Y2lyY2xlPiAzMEM0Ozs7O047Ozs7OworMzJFMjtDSVJDTEVEIEtBVEFLQU5BIFRFO1NvOzA7TDs8Y2lyY2xlPiAzMEM2Ozs7O047Ozs7OworMzJFMztDSVJDTEVEIEtBVEFLQU5BIFRPO1NvOzA7TDs8Y2lyY2xlPiAzMEM4Ozs7O047Ozs7OworMzJFNDtDSVJDTEVEIEtBVEFLQU5BIE5BO1NvOzA7TDs8Y2lyY2xlPiAzMENBOzs7O047Ozs7OworMzJFNTtDSVJDTEVEIEtBVEFLQU5BIE5JO1NvOzA7TDs8Y2lyY2xlPiAzMENCOzs7O047Ozs7OworMzJFNjtDSVJDTEVEIEtBVEFLQU5BIE5VO1NvOzA7TDs8Y2lyY2xlPiAzMENDOzs7O047Ozs7OworMzJFNztDSVJDTEVEIEtBVEFLQU5BIE5FO1NvOzA7TDs8Y2lyY2xlPiAzMENEOzs7O047Ozs7OworMzJFODtDSVJDTEVEIEtBVEFLQU5BIE5PO1NvOzA7TDs8Y2lyY2xlPiAzMENFOzs7O047Ozs7OworMzJFOTtDSVJDTEVEIEtBVEFLQU5BIEhBO1NvOzA7TDs8Y2lyY2xlPiAzMENGOzs7O047Ozs7OworMzJFQTtDSVJDTEVEIEtBVEFLQU5BIEhJO1NvOzA7TDs8Y2lyY2xlPiAzMEQyOzs7O047Ozs7OworMzJFQjtDSVJDTEVEIEtBVEFLQU5BIEhVO1NvOzA7TDs8Y2lyY2xlPiAzMEQ1Ozs7O047Ozs7OworMzJFQztDSVJDTEVEIEtBVEFLQU5BIEhFO1NvOzA7TDs8Y2lyY2xlPiAzMEQ4Ozs7O047Ozs7OworMzJFRDtDSVJDTEVEIEtBVEFLQU5BIEhPO1NvOzA7TDs8Y2lyY2xlPiAzMERCOzs7O047Ozs7OworMzJFRTtDSVJDTEVEIEtBVEFLQU5BIE1BO1NvOzA7TDs8Y2lyY2xlPiAzMERFOzs7O047Ozs7OworMzJFRjtDSVJDTEVEIEtBVEFLQU5BIE1JO1NvOzA7TDs8Y2lyY2xlPiAzMERGOzs7O047Ozs7OworMzJGMDtDSVJDTEVEIEtBVEFLQU5BIE1VO1NvOzA7TDs8Y2lyY2xlPiAzMEUwOzs7O047Ozs7OworMzJGMTtDSVJDTEVEIEtBVEFLQU5BIE1FO1NvOzA7TDs8Y2lyY2xlPiAzMEUxOzs7O047Ozs7OworMzJGMjtDSVJDTEVEIEtBVEFLQU5BIE1PO1NvOzA7TDs8Y2lyY2xlPiAzMEUyOzs7O047Ozs7OworMzJGMztDSVJDTEVEIEtBVEFLQU5BIFlBO1NvOzA7TDs8Y2lyY2xlPiAzMEU0Ozs7O047Ozs7OworMzJGNDtDSVJDTEVEIEtBVEFLQU5BIFlVO1NvOzA7TDs8Y2lyY2xlPiAzMEU2Ozs7O047Ozs7OworMzJGNTtDSVJDTEVEIEtBVEFLQU5BIFlPO1NvOzA7TDs8Y2lyY2xlPiAzMEU4Ozs7O047Ozs7OworMzJGNjtDSVJDTEVEIEtBVEFLQU5BIFJBO1NvOzA7TDs8Y2lyY2xlPiAzMEU5Ozs7O047Ozs7OworMzJGNztDSVJDTEVEIEtBVEFLQU5BIFJJO1NvOzA7TDs8Y2lyY2xlPiAzMEVBOzs7O047Ozs7OworMzJGODtDSVJDTEVEIEtBVEFLQU5BIFJVO1NvOzA7TDs8Y2lyY2xlPiAzMEVCOzs7O047Ozs7OworMzJGOTtDSVJDTEVEIEtBVEFLQU5BIFJFO1NvOzA7TDs8Y2lyY2xlPiAzMEVDOzs7O047Ozs7OworMzJGQTtDSVJDTEVEIEtBVEFLQU5BIFJPO1NvOzA7TDs8Y2lyY2xlPiAzMEVEOzs7O047Ozs7OworMzJGQjtDSVJDTEVEIEtBVEFLQU5BIFdBO1NvOzA7TDs8Y2lyY2xlPiAzMEVGOzs7O047Ozs7OworMzJGQztDSVJDTEVEIEtBVEFLQU5BIFdJO1NvOzA7TDs8Y2lyY2xlPiAzMEYwOzs7O047Ozs7OworMzJGRDtDSVJDTEVEIEtBVEFLQU5BIFdFO1NvOzA7TDs8Y2lyY2xlPiAzMEYxOzs7O047Ozs7OworMzJGRTtDSVJDTEVEIEtBVEFLQU5BIFdPO1NvOzA7TDs8Y2lyY2xlPiAzMEYyOzs7O047Ozs7OworMzMwMDtTUVVBUkUgQVBBQVRPO1NvOzA7TDs8c3F1YXJlPiAzMEEyIDMwRDEgMzBGQyAzMEM4Ozs7O047U1FVQVJFRCBBUEFBVE87Ozs7CiszMzAxO1NRVUFSRSBBUlVIVUE7U287MDtMOzxzcXVhcmU+IDMwQTIgMzBFQiAzMEQ1IDMwQTE7Ozs7TjtTUVVBUkVEIEFSVUhVQTs7OzsKKzMzMDI7U1FVQVJFIEFOUEVBO1NvOzA7TDs8c3F1YXJlPiAzMEEyIDMwRjMgMzBEQSAzMEEyOzs7O047U1FVQVJFRCBBTlBFQTs7OzsKKzMzMDM7U1FVQVJFIEFBUlU7U287MDtMOzxzcXVhcmU+IDMwQTIgMzBGQyAzMEVCOzs7O047U1FVQVJFRCBBQVJVOzs7OworMzMwNDtTUVVBUkUgSU5JTkdVO1NvOzA7TDs8c3F1YXJlPiAzMEE0IDMwQ0IgMzBGMyAzMEIwOzs7O047U1FVQVJFRCBJTklOR1U7Ozs7CiszMzA1O1NRVUFSRSBJTlRJO1NvOzA7TDs8c3F1YXJlPiAzMEE0IDMwRjMgMzBDMTs7OztOO1NRVUFSRUQgSU5USTs7OzsKKzMzMDY7U1FVQVJFIFVPTjtTbzswO0w7PHNxdWFyZT4gMzBBNiAzMEE5IDMwRjM7Ozs7TjtTUVVBUkVEIFVPTjs7OzsKKzMzMDc7U1FVQVJFIEVTVUtVVURPO1NvOzA7TDs8c3F1YXJlPiAzMEE4IDMwQjkgMzBBRiAzMEZDIDMwQzk7Ozs7TjtTUVVBUkVEIEVTVUtVVURPOzs7OworMzMwODtTUVVBUkUgRUVLQUE7U287MDtMOzxzcXVhcmU+IDMwQTggMzBGQyAzMEFCIDMwRkM7Ozs7TjtTUVVBUkVEIEVFS0FBOzs7OworMzMwOTtTUVVBUkUgT05TVTtTbzswO0w7PHNxdWFyZT4gMzBBQSAzMEYzIDMwQjk7Ozs7TjtTUVVBUkVEIE9OU1U7Ozs7CiszMzBBO1NRVUFSRSBPT01VO1NvOzA7TDs8c3F1YXJlPiAzMEFBIDMwRkMgMzBFMDs7OztOO1NRVUFSRUQgT09NVTs7OzsKKzMzMEI7U1FVQVJFIEtBSVJJO1NvOzA7TDs8c3F1YXJlPiAzMEFCIDMwQTQgMzBFQTs7OztOO1NRVUFSRUQgS0FJUkk7Ozs7CiszMzBDO1NRVUFSRSBLQVJBVFRPO1NvOzA7TDs8c3F1YXJlPiAzMEFCIDMwRTkgMzBDMyAzMEM4Ozs7O047U1FVQVJFRCBLQVJBVFRPOzs7OworMzMwRDtTUVVBUkUgS0FST1JJSTtTbzswO0w7PHNxdWFyZT4gMzBBQiAzMEVEIDMwRUEgMzBGQzs7OztOO1NRVUFSRUQgS0FST1JJSTs7OzsKKzMzMEU7U1FVQVJFIEdBUk9OO1NvOzA7TDs8c3F1YXJlPiAzMEFDIDMwRUQgMzBGMzs7OztOO1NRVUFSRUQgR0FST047Ozs7CiszMzBGO1NRVUFSRSBHQU5NQTtTbzswO0w7PHNxdWFyZT4gMzBBQyAzMEYzIDMwREU7Ozs7TjtTUVVBUkVEIEdBTk1BOzs7OworMzMxMDtTUVVBUkUgR0lHQTtTbzswO0w7PHNxdWFyZT4gMzBBRSAzMEFDOzs7O047U1FVQVJFRCBHSUdBOzs7OworMzMxMTtTUVVBUkUgR0lOSUk7U287MDtMOzxzcXVhcmU+IDMwQUUgMzBDQiAzMEZDOzs7O047U1FVQVJFRCBHSU5JSTs7OzsKKzMzMTI7U1FVQVJFIEtZVVJJSTtTbzswO0w7PHNxdWFyZT4gMzBBRCAzMEU1IDMwRUEgMzBGQzs7OztOO1NRVUFSRUQgS1lVUklJOzs7OworMzMxMztTUVVBUkUgR0lSVURBQTtTbzswO0w7PHNxdWFyZT4gMzBBRSAzMEVCIDMwQzAgMzBGQzs7OztOO1NRVUFSRUQgR0lSVURBQTs7OzsKKzMzMTQ7U1FVQVJFIEtJUk87U287MDtMOzxzcXVhcmU+IDMwQUQgMzBFRDs7OztOO1NRVUFSRUQgS0lSTzs7OzsKKzMzMTU7U1FVQVJFIEtJUk9HVVJBTVU7U287MDtMOzxzcXVhcmU+IDMwQUQgMzBFRCAzMEIwIDMwRTkgMzBFMDs7OztOO1NRVUFSRUQgS0lST0dVUkFNVTs7OzsKKzMzMTY7U1FVQVJFIEtJUk9NRUVUT1JVO1NvOzA7TDs8c3F1YXJlPiAzMEFEIDMwRUQgMzBFMSAzMEZDIDMwQzggMzBFQjs7OztOO1NRVUFSRUQgS0lST01FRVRPUlU7Ozs7CiszMzE3O1NRVUFSRSBLSVJPV0FUVE87U287MDtMOzxzcXVhcmU+IDMwQUQgMzBFRCAzMEVGIDMwQzMgMzBDODs7OztOO1NRVUFSRUQgS0lST1dBVFRPOzs7OworMzMxODtTUVVBUkUgR1VSQU1VO1NvOzA7TDs8c3F1YXJlPiAzMEIwIDMwRTkgMzBFMDs7OztOO1NRVUFSRUQgR1VSQU1VOzs7OworMzMxOTtTUVVBUkUgR1VSQU1VVE9OO1NvOzA7TDs8c3F1YXJlPiAzMEIwIDMwRTkgMzBFMCAzMEM4IDMwRjM7Ozs7TjtTUVVBUkVEIEdVUkFNVVRPTjs7OzsKKzMzMUE7U1FVQVJFIEtVUlVaRUlSTztTbzswO0w7PHNxdWFyZT4gMzBBRiAzMEVCIDMwQkMgMzBBNCAzMEVEOzs7O047U1FVQVJFRCBLVVJVWkVJUk87Ozs7CiszMzFCO1NRVUFSRSBLVVJPT05FO1NvOzA7TDs8c3F1YXJlPiAzMEFGIDMwRUQgMzBGQyAzMENEOzs7O047U1FVQVJFRCBLVVJPT05FOzs7OworMzMxQztTUVVBUkUgS0VFU1U7U287MDtMOzxzcXVhcmU+IDMwQjEgMzBGQyAzMEI5Ozs7O047U1FVQVJFRCBLRUVTVTs7OzsKKzMzMUQ7U1FVQVJFIEtPUlVOQTtTbzswO0w7PHNxdWFyZT4gMzBCMyAzMEVCIDMwQ0E7Ozs7TjtTUVVBUkVEIEtPUlVOQTs7OzsKKzMzMUU7U1FVQVJFIEtPT1BPO1NvOzA7TDs8c3F1YXJlPiAzMEIzIDMwRkMgMzBERDs7OztOO1NRVUFSRUQgS09PUE87Ozs7CiszMzFGO1NRVUFSRSBTQUlLVVJVO1NvOzA7TDs8c3F1YXJlPiAzMEI1IDMwQTQgMzBBRiAzMEVCOzs7O047U1FVQVJFRCBTQUlLVVJVOzs7OworMzMyMDtTUVVBUkUgU0FOVElJTVU7U287MDtMOzxzcXVhcmU+IDMwQjUgMzBGMyAzMEMxIDMwRkMgMzBFMDs7OztOO1NRVUFSRUQgU0FOVElJTVU7Ozs7CiszMzIxO1NRVUFSRSBTSVJJTkdVO1NvOzA7TDs8c3F1YXJlPiAzMEI3IDMwRUEgMzBGMyAzMEIwOzs7O047U1FVQVJFRCBTSVJJTkdVOzs7OworMzMyMjtTUVVBUkUgU0VOVEk7U287MDtMOzxzcXVhcmU+IDMwQkIgMzBGMyAzMEMxOzs7O047U1FVQVJFRCBTRU5USTs7OzsKKzMzMjM7U1FVQVJFIFNFTlRPO1NvOzA7TDs8c3F1YXJlPiAzMEJCIDMwRjMgMzBDODs7OztOO1NRVUFSRUQgU0VOVE87Ozs7CiszMzI0O1NRVUFSRSBEQUFTVTtTbzswO0w7PHNxdWFyZT4gMzBDMCAzMEZDIDMwQjk7Ozs7TjtTUVVBUkVEIERBQVNVOzs7OworMzMyNTtTUVVBUkUgREVTSTtTbzswO0w7PHNxdWFyZT4gMzBDNyAzMEI3Ozs7O047U1FVQVJFRCBERVNJOzs7OworMzMyNjtTUVVBUkUgRE9SVTtTbzswO0w7PHNxdWFyZT4gMzBDOSAzMEVCOzs7O047U1FVQVJFRCBET1JVOzs7OworMzMyNztTUVVBUkUgVE9OO1NvOzA7TDs8c3F1YXJlPiAzMEM4IDMwRjM7Ozs7TjtTUVVBUkVEIFRPTjs7OzsKKzMzMjg7U1FVQVJFIE5BTk87U287MDtMOzxzcXVhcmU+IDMwQ0EgMzBDRTs7OztOO1NRVUFSRUQgTkFOTzs7OzsKKzMzMjk7U1FVQVJFIE5PVFRPO1NvOzA7TDs8c3F1YXJlPiAzMENFIDMwQzMgMzBDODs7OztOO1NRVUFSRUQgTk9UVE87Ozs7CiszMzJBO1NRVUFSRSBIQUlUVTtTbzswO0w7PHNxdWFyZT4gMzBDRiAzMEE0IDMwQzQ7Ozs7TjtTUVVBUkVEIEhBSVRVOzs7OworMzMyQjtTUVVBUkUgUEFBU0VOVE87U287MDtMOzxzcXVhcmU+IDMwRDEgMzBGQyAzMEJCIDMwRjMgMzBDODs7OztOO1NRVUFSRUQgUEFBU0VOVE87Ozs7CiszMzJDO1NRVUFSRSBQQUFUVTtTbzswO0w7PHNxdWFyZT4gMzBEMSAzMEZDIDMwQzQ7Ozs7TjtTUVVBUkVEIFBBQVRVOzs7OworMzMyRDtTUVVBUkUgQkFBUkVSVTtTbzswO0w7PHNxdWFyZT4gMzBEMCAzMEZDIDMwRUMgMzBFQjs7OztOO1NRVUFSRUQgQkFBUkVSVTs7OzsKKzMzMkU7U1FVQVJFIFBJQVNVVE9SVTtTbzswO0w7PHNxdWFyZT4gMzBENCAzMEEyIDMwQjkgMzBDOCAzMEVCOzs7O047U1FVQVJFRCBQSUFTVVRPUlU7Ozs7CiszMzJGO1NRVUFSRSBQSUtVUlU7U287MDtMOzxzcXVhcmU+IDMwRDQgMzBBRiAzMEVCOzs7O047U1FVQVJFRCBQSUtVUlU7Ozs7CiszMzMwO1NRVUFSRSBQSUtPO1NvOzA7TDs8c3F1YXJlPiAzMEQ0IDMwQjM7Ozs7TjtTUVVBUkVEIFBJS087Ozs7CiszMzMxO1NRVUFSRSBCSVJVO1NvOzA7TDs8c3F1YXJlPiAzMEQzIDMwRUI7Ozs7TjtTUVVBUkVEIEJJUlU7Ozs7CiszMzMyO1NRVUFSRSBIVUFSQURETztTbzswO0w7PHNxdWFyZT4gMzBENSAzMEExIDMwRTkgMzBDMyAzMEM5Ozs7O047U1FVQVJFRCBIVUFSQURETzs7OzsKKzMzMzM7U1FVQVJFIEhVSUlUTztTbzswO0w7PHNxdWFyZT4gMzBENSAzMEEzIDMwRkMgMzBDODs7OztOO1NRVUFSRUQgSFVJSVRPOzs7OworMzMzNDtTUVVBUkUgQlVTU1lFUlU7U287MDtMOzxzcXVhcmU+IDMwRDYgMzBDMyAzMEI3IDMwQTcgMzBFQjs7OztOO1NRVUFSRUQgQlVTU1lFUlU7Ozs7CiszMzM1O1NRVUFSRSBIVVJBTjtTbzswO0w7PHNxdWFyZT4gMzBENSAzMEU5IDMwRjM7Ozs7TjtTUVVBUkVEIEhVUkFOOzs7OworMzMzNjtTUVVBUkUgSEVLVVRBQVJVO1NvOzA7TDs8c3F1YXJlPiAzMEQ4IDMwQUYgMzBCRiAzMEZDIDMwRUI7Ozs7TjtTUVVBUkVEIEhFS1VUQUFSVTs7OzsKKzMzMzc7U1FVQVJFIFBFU087U287MDtMOzxzcXVhcmU+IDMwREEgMzBCRDs7OztOO1NRVUFSRUQgUEVTTzs7OzsKKzMzMzg7U1FVQVJFIFBFTklISTtTbzswO0w7PHNxdWFyZT4gMzBEQSAzMENCIDMwRDI7Ozs7TjtTUVVBUkVEIFBFTklISTs7OzsKKzMzMzk7U1FVQVJFIEhFUlVUVTtTbzswO0w7PHNxdWFyZT4gMzBEOCAzMEVCIDMwQzQ7Ozs7TjtTUVVBUkVEIEhFUlVUVTs7OzsKKzMzM0E7U1FVQVJFIFBFTlNVO1NvOzA7TDs8c3F1YXJlPiAzMERBIDMwRjMgMzBCOTs7OztOO1NRVUFSRUQgUEVOU1U7Ozs7CiszMzNCO1NRVUFSRSBQRUVaSTtTbzswO0w7PHNxdWFyZT4gMzBEQSAzMEZDIDMwQjg7Ozs7TjtTUVVBUkVEIFBFRVpJOzs7OworMzMzQztTUVVBUkUgQkVFVEE7U287MDtMOzxzcXVhcmU+IDMwRDkgMzBGQyAzMEJGOzs7O047U1FVQVJFRCBCRUVUQTs7OzsKKzMzM0Q7U1FVQVJFIFBPSU5UTztTbzswO0w7PHNxdWFyZT4gMzBERCAzMEE0IDMwRjMgMzBDODs7OztOO1NRVUFSRUQgUE9JTlRPOzs7OworMzMzRTtTUVVBUkUgQk9SVVRPO1NvOzA7TDs8c3F1YXJlPiAzMERDIDMwRUIgMzBDODs7OztOO1NRVUFSRUQgQk9SVVRPOzs7OworMzMzRjtTUVVBUkUgSE9OO1NvOzA7TDs8c3F1YXJlPiAzMERCIDMwRjM7Ozs7TjtTUVVBUkVEIEhPTjs7OzsKKzMzNDA7U1FVQVJFIFBPTkRPO1NvOzA7TDs8c3F1YXJlPiAzMEREIDMwRjMgMzBDOTs7OztOO1NRVUFSRUQgUE9ORE87Ozs7CiszMzQxO1NRVUFSRSBIT09SVTtTbzswO0w7PHNxdWFyZT4gMzBEQiAzMEZDIDMwRUI7Ozs7TjtTUVVBUkVEIEhPT1JVOzs7OworMzM0MjtTUVVBUkUgSE9PTjtTbzswO0w7PHNxdWFyZT4gMzBEQiAzMEZDIDMwRjM7Ozs7TjtTUVVBUkVEIEhPT047Ozs7CiszMzQzO1NRVUFSRSBNQUlLVVJPO1NvOzA7TDs8c3F1YXJlPiAzMERFIDMwQTQgMzBBRiAzMEVEOzs7O047U1FVQVJFRCBNQUlLVVJPOzs7OworMzM0NDtTUVVBUkUgTUFJUlU7U287MDtMOzxzcXVhcmU+IDMwREUgMzBBNCAzMEVCOzs7O047U1FVQVJFRCBNQUlSVTs7OzsKKzMzNDU7U1FVQVJFIE1BSEhBO1NvOzA7TDs8c3F1YXJlPiAzMERFIDMwQzMgMzBDRjs7OztOO1NRVUFSRUQgTUFISEE7Ozs7CiszMzQ2O1NRVUFSRSBNQVJVS1U7U287MDtMOzxzcXVhcmU+IDMwREUgMzBFQiAzMEFGOzs7O047U1FVQVJFRCBNQVJVS1U7Ozs7CiszMzQ3O1NRVUFSRSBNQU5TWU9OO1NvOzA7TDs8c3F1YXJlPiAzMERFIDMwRjMgMzBCNyAzMEU3IDMwRjM7Ozs7TjtTUVVBUkVEIE1BTlNZT047Ozs7CiszMzQ4O1NRVUFSRSBNSUtVUk9OO1NvOzA7TDs8c3F1YXJlPiAzMERGIDMwQUYgMzBFRCAzMEYzOzs7O047U1FVQVJFRCBNSUtVUk9OOzs7OworMzM0OTtTUVVBUkUgTUlSSTtTbzswO0w7PHNxdWFyZT4gMzBERiAzMEVBOzs7O047U1FVQVJFRCBNSVJJOzs7OworMzM0QTtTUVVBUkUgTUlSSUJBQVJVO1NvOzA7TDs8c3F1YXJlPiAzMERGIDMwRUEgMzBEMCAzMEZDIDMwRUI7Ozs7TjtTUVVBUkVEIE1JUklCQUFSVTs7OzsKKzMzNEI7U1FVQVJFIE1FR0E7U287MDtMOzxzcXVhcmU+IDMwRTEgMzBBQzs7OztOO1NRVUFSRUQgTUVHQTs7OzsKKzMzNEM7U1FVQVJFIE1FR0FUT047U287MDtMOzxzcXVhcmU+IDMwRTEgMzBBQyAzMEM4IDMwRjM7Ozs7TjtTUVVBUkVEIE1FR0FUT047Ozs7CiszMzREO1NRVUFSRSBNRUVUT1JVO1NvOzA7TDs8c3F1YXJlPiAzMEUxIDMwRkMgMzBDOCAzMEVCOzs7O047U1FVQVJFRCBNRUVUT1JVOzs7OworMzM0RTtTUVVBUkUgWUFBRE87U287MDtMOzxzcXVhcmU+IDMwRTQgMzBGQyAzMEM5Ozs7O047U1FVQVJFRCBZQUFETzs7OzsKKzMzNEY7U1FVQVJFIFlBQVJVO1NvOzA7TDs8c3F1YXJlPiAzMEU0IDMwRkMgMzBFQjs7OztOO1NRVUFSRUQgWUFBUlU7Ozs7CiszMzUwO1NRVUFSRSBZVUFOO1NvOzA7TDs8c3F1YXJlPiAzMEU2IDMwQTIgMzBGMzs7OztOO1NRVUFSRUQgWVVBTjs7OzsKKzMzNTE7U1FVQVJFIFJJVFRPUlU7U287MDtMOzxzcXVhcmU+IDMwRUEgMzBDMyAzMEM4IDMwRUI7Ozs7TjtTUVVBUkVEIFJJVFRPUlU7Ozs7CiszMzUyO1NRVUFSRSBSSVJBO1NvOzA7TDs8c3F1YXJlPiAzMEVBIDMwRTk7Ozs7TjtTUVVBUkVEIFJJUkE7Ozs7CiszMzUzO1NRVUFSRSBSVVBJSTtTbzswO0w7PHNxdWFyZT4gMzBFQiAzMEQ0IDMwRkM7Ozs7TjtTUVVBUkVEIFJVUElJOzs7OworMzM1NDtTUVVBUkUgUlVVQlVSVTtTbzswO0w7PHNxdWFyZT4gMzBFQiAzMEZDIDMwRDYgMzBFQjs7OztOO1NRVUFSRUQgUlVVQlVSVTs7OzsKKzMzNTU7U1FVQVJFIFJFTVU7U287MDtMOzxzcXVhcmU+IDMwRUMgMzBFMDs7OztOO1NRVUFSRUQgUkVNVTs7OzsKKzMzNTY7U1FVQVJFIFJFTlRPR0VOO1NvOzA7TDs8c3F1YXJlPiAzMEVDIDMwRjMgMzBDOCAzMEIyIDMwRjM7Ozs7TjtTUVVBUkVEIFJFTlRPR0VOOzs7OworMzM1NztTUVVBUkUgV0FUVE87U287MDtMOzxzcXVhcmU+IDMwRUYgMzBDMyAzMEM4Ozs7O047U1FVQVJFRCBXQVRUTzs7OzsKKzMzNTg7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBaRVJPO1NvOzA7TDs8Y29tcGF0PiAwMDMwIDcwQjk7Ozs7Tjs7Ozs7CiszMzU5O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgT05FO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDcwQjk7Ozs7Tjs7Ozs7CiszMzVBO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVFdPO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDcwQjk7Ozs7Tjs7Ozs7CiszMzVCO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVEhSRUU7U287MDtMOzxjb21wYXQ+IDAwMzMgNzBCOTs7OztOOzs7OzsKKzMzNUM7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBGT1VSO1NvOzA7TDs8Y29tcGF0PiAwMDM0IDcwQjk7Ozs7Tjs7Ozs7CiszMzVEO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgRklWRTtTbzswO0w7PGNvbXBhdD4gMDAzNSA3MEI5Ozs7O047Ozs7OworMzM1RTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFNJWDtTbzswO0w7PGNvbXBhdD4gMDAzNiA3MEI5Ozs7O047Ozs7OworMzM1RjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFNFVkVOO1NvOzA7TDs8Y29tcGF0PiAwMDM3IDcwQjk7Ozs7Tjs7Ozs7CiszMzYwO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgRUlHSFQ7U287MDtMOzxjb21wYXQ+IDAwMzggNzBCOTs7OztOOzs7OzsKKzMzNjE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBOSU5FO1NvOzA7TDs8Y29tcGF0PiAwMDM5IDcwQjk7Ozs7Tjs7Ozs7CiszMzYyO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVEVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzAgNzBCOTs7OztOOzs7OzsKKzMzNjM7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBFTEVWRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMSA3MEI5Ozs7O047Ozs7OworMzM2NDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRXRUxWRTtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMyIDcwQjk7Ozs7Tjs7Ozs7CiszMzY1O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVEhJUlRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMyA3MEI5Ozs7O047Ozs7OworMzM2NjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEZPVVJURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzQgNzBCOTs7OztOOzs7OzsKKzMzNjc7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBGSUZURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzUgNzBCOTs7OztOOzs7OzsKKzMzNjg7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBTSVhURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzYgNzBCOTs7OztOOzs7OzsKKzMzNjk7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBTRVZFTlRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzNyA3MEI5Ozs7O047Ozs7OworMzM2QTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEVJR0hURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzggNzBCOTs7OztOOzs7OzsKKzMzNkI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBOSU5FVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM5IDcwQjk7Ozs7Tjs7Ozs7CiszMzZDO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVFdFTlRZO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzAgNzBCOTs7OztOOzs7OzsKKzMzNkQ7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV0VOVFktT05FO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzEgNzBCOTs7OztOOzs7OzsKKzMzNkU7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV0VOVFktVFdPO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzIgNzBCOTs7OztOOzs7OzsKKzMzNkY7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV0VOVFktVEhSRUU7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzMyA3MEI5Ozs7O047Ozs7OworMzM3MDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRXRU5UWS1GT1VSO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzQgNzBCOTs7OztOOzs7OzsKKzMzNzE7U1FVQVJFIEhQQTtTbzswO0w7PHNxdWFyZT4gMDA2OCAwMDUwIDAwNjE7Ozs7Tjs7Ozs7CiszMzcyO1NRVUFSRSBEQTtTbzswO0w7PHNxdWFyZT4gMDA2NCAwMDYxOzs7O047Ozs7OworMzM3MztTUVVBUkUgQVU7U287MDtMOzxzcXVhcmU+IDAwNDEgMDA1NTs7OztOOzs7OzsKKzMzNzQ7U1FVQVJFIEJBUjtTbzswO0w7PHNxdWFyZT4gMDA2MiAwMDYxIDAwNzI7Ozs7Tjs7Ozs7CiszMzc1O1NRVUFSRSBPVjtTbzswO0w7PHNxdWFyZT4gMDA2RiAwMDU2Ozs7O047Ozs7OworMzM3NjtTUVVBUkUgUEM7U287MDtMOzxzcXVhcmU+IDAwNzAgMDA2Mzs7OztOOzs7OzsKKzMzN0I7U1FVQVJFIEVSQSBOQU1FIEhFSVNFSTtTbzswO0w7PHNxdWFyZT4gNUU3MyA2MjEwOzs7O047U1FVQVJFRCBUV08gSURFT0dSQVBIUyBFUkEgTkFNRSBIRUlTRUk7Ozs7CiszMzdDO1NRVUFSRSBFUkEgTkFNRSBTWU9VV0E7U287MDtMOzxzcXVhcmU+IDY2MkQgNTQ4Qzs7OztOO1NRVUFSRUQgVFdPIElERU9HUkFQSFMgRVJBIE5BTUUgU1lPVVdBOzs7OworMzM3RDtTUVVBUkUgRVJBIE5BTUUgVEFJU1lPVTtTbzswO0w7PHNxdWFyZT4gNTkyNyA2QjYzOzs7O047U1FVQVJFRCBUV08gSURFT0dSQVBIUyBFUkEgTkFNRSBUQUlTWU9VOzs7OworMzM3RTtTUVVBUkUgRVJBIE5BTUUgTUVJWkk7U287MDtMOzxzcXVhcmU+IDY2MEUgNkNCQjs7OztOO1NRVUFSRUQgVFdPIElERU9HUkFQSFMgRVJBIE5BTUUgTUVJWkk7Ozs7CiszMzdGO1NRVUFSRSBDT1JQT1JBVElPTjtTbzswO0w7PHNxdWFyZT4gNjgyQSA1RjBGIDRGMUEgNzkzRTs7OztOO1NRVUFSRUQgRk9VUiBJREVPR1JBUEhTIENPUlBPUkFUSU9OOzs7OworMzM4MDtTUVVBUkUgUEEgQU1QUztTbzswO0w7PHNxdWFyZT4gMDA3MCAwMDQxOzs7O047U1FVQVJFRCBQQSBBTVBTOzs7OworMzM4MTtTUVVBUkUgTkE7U287MDtMOzxzcXVhcmU+IDAwNkUgMDA0MTs7OztOO1NRVUFSRUQgTkE7Ozs7CiszMzgyO1NRVUFSRSBNVSBBO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNDE7Ozs7TjtTUVVBUkVEIE1VIEE7Ozs7CiszMzgzO1NRVUFSRSBNQTtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDQxOzs7O047U1FVQVJFRCBNQTs7OzsKKzMzODQ7U1FVQVJFIEtBO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNDE7Ozs7TjtTUVVBUkVEIEtBOzs7OworMzM4NTtTUVVBUkUgS0I7U287MDtMOzxzcXVhcmU+IDAwNEIgMDA0Mjs7OztOO1NRVUFSRUQgS0I7Ozs7CiszMzg2O1NRVUFSRSBNQjtTbzswO0w7PHNxdWFyZT4gMDA0RCAwMDQyOzs7O047U1FVQVJFRCBNQjs7OzsKKzMzODc7U1FVQVJFIEdCO1NvOzA7TDs8c3F1YXJlPiAwMDQ3IDAwNDI7Ozs7TjtTUVVBUkVEIEdCOzs7OworMzM4ODtTUVVBUkUgQ0FMO1NvOzA7TDs8c3F1YXJlPiAwMDYzIDAwNjEgMDA2Qzs7OztOO1NRVUFSRUQgQ0FMOzs7OworMzM4OTtTUVVBUkUgS0NBTDtTbzswO0w7PHNxdWFyZT4gMDA2QiAwMDYzIDAwNjEgMDA2Qzs7OztOO1NRVUFSRUQgS0NBTDs7OzsKKzMzOEE7U1FVQVJFIFBGO1NvOzA7TDs8c3F1YXJlPiAwMDcwIDAwNDY7Ozs7TjtTUVVBUkVEIFBGOzs7OworMzM4QjtTUVVBUkUgTkY7U287MDtMOzxzcXVhcmU+IDAwNkUgMDA0Njs7OztOO1NRVUFSRUQgTkY7Ozs7CiszMzhDO1NRVUFSRSBNVSBGO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNDY7Ozs7TjtTUVVBUkVEIE1VIEY7Ozs7CiszMzhEO1NRVUFSRSBNVSBHO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNjc7Ozs7TjtTUVVBUkVEIE1VIEc7Ozs7CiszMzhFO1NRVUFSRSBNRztTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDY3Ozs7O047U1FVQVJFRCBNRzs7OzsKKzMzOEY7U1FVQVJFIEtHO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNjc7Ozs7TjtTUVVBUkVEIEtHOzs7OworMzM5MDtTUVVBUkUgSFo7U287MDtMOzxzcXVhcmU+IDAwNDggMDA3QTs7OztOO1NRVUFSRUQgSFo7Ozs7CiszMzkxO1NRVUFSRSBLSFo7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA0OCAwMDdBOzs7O047U1FVQVJFRCBLSFo7Ozs7CiszMzkyO1NRVUFSRSBNSFo7U287MDtMOzxzcXVhcmU+IDAwNEQgMDA0OCAwMDdBOzs7O047U1FVQVJFRCBNSFo7Ozs7CiszMzkzO1NRVUFSRSBHSFo7U287MDtMOzxzcXVhcmU+IDAwNDcgMDA0OCAwMDdBOzs7O047U1FVQVJFRCBHSFo7Ozs7CiszMzk0O1NRVUFSRSBUSFo7U287MDtMOzxzcXVhcmU+IDAwNTQgMDA0OCAwMDdBOzs7O047U1FVQVJFRCBUSFo7Ozs7CiszMzk1O1NRVUFSRSBNVSBMO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDIxMTM7Ozs7TjtTUVVBUkVEIE1VIEw7Ozs7CiszMzk2O1NRVUFSRSBNTDtTbzswO0w7PHNxdWFyZT4gMDA2RCAyMTEzOzs7O047U1FVQVJFRCBNTDs7OzsKKzMzOTc7U1FVQVJFIERMO1NvOzA7TDs8c3F1YXJlPiAwMDY0IDIxMTM7Ozs7TjtTUVVBUkVEIERMOzs7OworMzM5ODtTUVVBUkUgS0w7U287MDtMOzxzcXVhcmU+IDAwNkIgMjExMzs7OztOO1NRVUFSRUQgS0w7Ozs7CiszMzk5O1NRVUFSRSBGTTtTbzswO0w7PHNxdWFyZT4gMDA2NiAwMDZEOzs7O047U1FVQVJFRCBGTTs7OzsKKzMzOUE7U1FVQVJFIE5NO1NvOzA7TDs8c3F1YXJlPiAwMDZFIDAwNkQ7Ozs7TjtTUVVBUkVEIE5NOzs7OworMzM5QjtTUVVBUkUgTVUgTTtTbzswO0w7PHNxdWFyZT4gMDNCQyAwMDZEOzs7O047U1FVQVJFRCBNVSBNOzs7OworMzM5QztTUVVBUkUgTU07U287MDtMOzxzcXVhcmU+IDAwNkQgMDA2RDs7OztOO1NRVUFSRUQgTU07Ozs7CiszMzlEO1NRVUFSRSBDTTtTbzswO0w7PHNxdWFyZT4gMDA2MyAwMDZEOzs7O047U1FVQVJFRCBDTTs7OzsKKzMzOUU7U1FVQVJFIEtNO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNkQ7Ozs7TjtTUVVBUkVEIEtNOzs7OworMzM5RjtTUVVBUkUgTU0gU1FVQVJFRDtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDZEIDAwQjI7Ozs7TjtTUVVBUkVEIE1NIFNRVUFSRUQ7Ozs7CiszM0EwO1NRVUFSRSBDTSBTUVVBUkVEO1NvOzA7TDs8c3F1YXJlPiAwMDYzIDAwNkQgMDBCMjs7OztOO1NRVUFSRUQgQ00gU1FVQVJFRDs7OzsKKzMzQTE7U1FVQVJFIE0gU1FVQVJFRDtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMEIyOzs7O047U1FVQVJFRCBNIFNRVUFSRUQ7Ozs7CiszM0EyO1NRVUFSRSBLTSBTUVVBUkVEO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNkQgMDBCMjs7OztOO1NRVUFSRUQgS00gU1FVQVJFRDs7OzsKKzMzQTM7U1FVQVJFIE1NIENVQkVEO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwNkQgMDBCMzs7OztOO1NRVUFSRUQgTU0gQ1VCRUQ7Ozs7CiszM0E0O1NRVUFSRSBDTSBDVUJFRDtTbzswO0w7PHNxdWFyZT4gMDA2MyAwMDZEIDAwQjM7Ozs7TjtTUVVBUkVEIENNIENVQkVEOzs7OworMzNBNTtTUVVBUkUgTSBDVUJFRDtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMEIzOzs7O047U1FVQVJFRCBNIENVQkVEOzs7OworMzNBNjtTUVVBUkUgS00gQ1VCRUQ7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA2RCAwMEIzOzs7O047U1FVQVJFRCBLTSBDVUJFRDs7OzsKKzMzQTc7U1FVQVJFIE0gT1ZFUiBTO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDIyMTUgMDA3Mzs7OztOO1NRVUFSRUQgTSBPVkVSIFM7Ozs7CiszM0E4O1NRVUFSRSBNIE9WRVIgUyBTUVVBUkVEO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDIyMTUgMDA3MyAwMEIyOzs7O047U1FVQVJFRCBNIE9WRVIgUyBTUVVBUkVEOzs7OworMzNBOTtTUVVBUkUgUEE7U287MDtMOzxzcXVhcmU+IDAwNTAgMDA2MTs7OztOO1NRVUFSRUQgUEE7Ozs7CiszM0FBO1NRVUFSRSBLUEE7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA1MCAwMDYxOzs7O047U1FVQVJFRCBLUEE7Ozs7CiszM0FCO1NRVUFSRSBNUEE7U287MDtMOzxzcXVhcmU+IDAwNEQgMDA1MCAwMDYxOzs7O047U1FVQVJFRCBNUEE7Ozs7CiszM0FDO1NRVUFSRSBHUEE7U287MDtMOzxzcXVhcmU+IDAwNDcgMDA1MCAwMDYxOzs7O047U1FVQVJFRCBHUEE7Ozs7CiszM0FEO1NRVUFSRSBSQUQ7U287MDtMOzxzcXVhcmU+IDAwNzIgMDA2MSAwMDY0Ozs7O047U1FVQVJFRCBSQUQ7Ozs7CiszM0FFO1NRVUFSRSBSQUQgT1ZFUiBTO1NvOzA7TDs8c3F1YXJlPiAwMDcyIDAwNjEgMDA2NCAyMjE1IDAwNzM7Ozs7TjtTUVVBUkVEIFJBRCBPVkVSIFM7Ozs7CiszM0FGO1NRVUFSRSBSQUQgT1ZFUiBTIFNRVUFSRUQ7U287MDtMOzxzcXVhcmU+IDAwNzIgMDA2MSAwMDY0IDIyMTUgMDA3MyAwMEIyOzs7O047U1FVQVJFRCBSQUQgT1ZFUiBTIFNRVUFSRUQ7Ozs7CiszM0IwO1NRVUFSRSBQUztTbzswO0w7PHNxdWFyZT4gMDA3MCAwMDczOzs7O047U1FVQVJFRCBQUzs7OzsKKzMzQjE7U1FVQVJFIE5TO1NvOzA7TDs8c3F1YXJlPiAwMDZFIDAwNzM7Ozs7TjtTUVVBUkVEIE5TOzs7OworMzNCMjtTUVVBUkUgTVUgUztTbzswO0w7PHNxdWFyZT4gMDNCQyAwMDczOzs7O047U1FVQVJFRCBNVSBTOzs7OworMzNCMztTUVVBUkUgTVM7U287MDtMOzxzcXVhcmU+IDAwNkQgMDA3Mzs7OztOO1NRVUFSRUQgTVM7Ozs7CiszM0I0O1NRVUFSRSBQVjtTbzswO0w7PHNxdWFyZT4gMDA3MCAwMDU2Ozs7O047U1FVQVJFRCBQVjs7OzsKKzMzQjU7U1FVQVJFIE5WO1NvOzA7TDs8c3F1YXJlPiAwMDZFIDAwNTY7Ozs7TjtTUVVBUkVEIE5WOzs7OworMzNCNjtTUVVBUkUgTVUgVjtTbzswO0w7PHNxdWFyZT4gMDNCQyAwMDU2Ozs7O047U1FVQVJFRCBNVSBWOzs7OworMzNCNztTUVVBUkUgTVY7U287MDtMOzxzcXVhcmU+IDAwNkQgMDA1Njs7OztOO1NRVUFSRUQgTVY7Ozs7CiszM0I4O1NRVUFSRSBLVjtTbzswO0w7PHNxdWFyZT4gMDA2QiAwMDU2Ozs7O047U1FVQVJFRCBLVjs7OzsKKzMzQjk7U1FVQVJFIE1WIE1FR0E7U287MDtMOzxzcXVhcmU+IDAwNEQgMDA1Njs7OztOO1NRVUFSRUQgTVYgTUVHQTs7OzsKKzMzQkE7U1FVQVJFIFBXO1NvOzA7TDs8c3F1YXJlPiAwMDcwIDAwNTc7Ozs7TjtTUVVBUkVEIFBXOzs7OworMzNCQjtTUVVBUkUgTlc7U287MDtMOzxzcXVhcmU+IDAwNkUgMDA1Nzs7OztOO1NRVUFSRUQgTlc7Ozs7CiszM0JDO1NRVUFSRSBNVSBXO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNTc7Ozs7TjtTUVVBUkVEIE1VIFc7Ozs7CiszM0JEO1NRVUFSRSBNVztTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDU3Ozs7O047U1FVQVJFRCBNVzs7OzsKKzMzQkU7U1FVQVJFIEtXO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNTc7Ozs7TjtTUVVBUkVEIEtXOzs7OworMzNCRjtTUVVBUkUgTVcgTUVHQTtTbzswO0w7PHNxdWFyZT4gMDA0RCAwMDU3Ozs7O047U1FVQVJFRCBNVyBNRUdBOzs7OworMzNDMDtTUVVBUkUgSyBPSE07U287MDtMOzxzcXVhcmU+IDAwNkIgMDNBOTs7OztOO1NRVUFSRUQgSyBPSE07Ozs7CiszM0MxO1NRVUFSRSBNIE9ITTtTbzswO0w7PHNxdWFyZT4gMDA0RCAwM0E5Ozs7O047U1FVQVJFRCBNIE9ITTs7OzsKKzMzQzI7U1FVQVJFIEFNO1NvOzA7TDs8c3F1YXJlPiAwMDYxIDAwMkUgMDA2RCAwMDJFOzs7O047U1FVQVJFRCBBTTs7OzsKKzMzQzM7U1FVQVJFIEJRO1NvOzA7TDs8c3F1YXJlPiAwMDQyIDAwNzE7Ozs7TjtTUVVBUkVEIEJROzs7OworMzNDNDtTUVVBUkUgQ0M7U287MDtMOzxzcXVhcmU+IDAwNjMgMDA2Mzs7OztOO1NRVUFSRUQgQ0M7Ozs7CiszM0M1O1NRVUFSRSBDRDtTbzswO0w7PHNxdWFyZT4gMDA2MyAwMDY0Ozs7O047U1FVQVJFRCBDRDs7OzsKKzMzQzY7U1FVQVJFIEMgT1ZFUiBLRztTbzswO0w7PHNxdWFyZT4gMDA0MyAyMjE1IDAwNkIgMDA2Nzs7OztOO1NRVUFSRUQgQyBPVkVSIEtHOzs7OworMzNDNztTUVVBUkUgQ087U287MDtMOzxzcXVhcmU+IDAwNDMgMDA2RiAwMDJFOzs7O047U1FVQVJFRCBDTzs7OzsKKzMzQzg7U1FVQVJFIERCO1NvOzA7TDs8c3F1YXJlPiAwMDY0IDAwNDI7Ozs7TjtTUVVBUkVEIERCOzs7OworMzNDOTtTUVVBUkUgR1k7U287MDtMOzxzcXVhcmU+IDAwNDcgMDA3OTs7OztOO1NRVUFSRUQgR1k7Ozs7CiszM0NBO1NRVUFSRSBIQTtTbzswO0w7PHNxdWFyZT4gMDA2OCAwMDYxOzs7O047U1FVQVJFRCBIQTs7OzsKKzMzQ0I7U1FVQVJFIEhQO1NvOzA7TDs8c3F1YXJlPiAwMDQ4IDAwNTA7Ozs7TjtTUVVBUkVEIEhQOzs7OworMzNDQztTUVVBUkUgSU47U287MDtMOzxzcXVhcmU+IDAwNjkgMDA2RTs7OztOO1NRVUFSRUQgSU47Ozs7CiszM0NEO1NRVUFSRSBLSztTbzswO0w7PHNxdWFyZT4gMDA0QiAwMDRCOzs7O047U1FVQVJFRCBLSzs7OzsKKzMzQ0U7U1FVQVJFIEtNIENBUElUQUw7U287MDtMOzxzcXVhcmU+IDAwNEIgMDA0RDs7OztOO1NRVUFSRUQgS00gQ0FQSVRBTDs7OzsKKzMzQ0Y7U1FVQVJFIEtUO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNzQ7Ozs7TjtTUVVBUkVEIEtUOzs7OworMzNEMDtTUVVBUkUgTE07U287MDtMOzxzcXVhcmU+IDAwNkMgMDA2RDs7OztOO1NRVUFSRUQgTE07Ozs7CiszM0QxO1NRVUFSRSBMTjtTbzswO0w7PHNxdWFyZT4gMDA2QyAwMDZFOzs7O047U1FVQVJFRCBMTjs7OzsKKzMzRDI7U1FVQVJFIExPRztTbzswO0w7PHNxdWFyZT4gMDA2QyAwMDZGIDAwNjc7Ozs7TjtTUVVBUkVEIExPRzs7OzsKKzMzRDM7U1FVQVJFIExYO1NvOzA7TDs8c3F1YXJlPiAwMDZDIDAwNzg7Ozs7TjtTUVVBUkVEIExYOzs7OworMzNENDtTUVVBUkUgTUIgU01BTEw7U287MDtMOzxzcXVhcmU+IDAwNkQgMDA2Mjs7OztOO1NRVUFSRUQgTUIgU01BTEw7Ozs7CiszM0Q1O1NRVUFSRSBNSUw7U287MDtMOzxzcXVhcmU+IDAwNkQgMDA2OSAwMDZDOzs7O047U1FVQVJFRCBNSUw7Ozs7CiszM0Q2O1NRVUFSRSBNT0w7U287MDtMOzxzcXVhcmU+IDAwNkQgMDA2RiAwMDZDOzs7O047U1FVQVJFRCBNT0w7Ozs7CiszM0Q3O1NRVUFSRSBQSDtTbzswO0w7PHNxdWFyZT4gMDA1MCAwMDQ4Ozs7O047U1FVQVJFRCBQSDs7OzsKKzMzRDg7U1FVQVJFIFBNO1NvOzA7TDs8c3F1YXJlPiAwMDcwIDAwMkUgMDA2RCAwMDJFOzs7O047U1FVQVJFRCBQTTs7OzsKKzMzRDk7U1FVQVJFIFBQTTtTbzswO0w7PHNxdWFyZT4gMDA1MCAwMDUwIDAwNEQ7Ozs7TjtTUVVBUkVEIFBQTTs7OzsKKzMzREE7U1FVQVJFIFBSO1NvOzA7TDs8c3F1YXJlPiAwMDUwIDAwNTI7Ozs7TjtTUVVBUkVEIFBSOzs7OworMzNEQjtTUVVBUkUgU1I7U287MDtMOzxzcXVhcmU+IDAwNzMgMDA3Mjs7OztOO1NRVUFSRUQgU1I7Ozs7CiszM0RDO1NRVUFSRSBTVjtTbzswO0w7PHNxdWFyZT4gMDA1MyAwMDc2Ozs7O047U1FVQVJFRCBTVjs7OzsKKzMzREQ7U1FVQVJFIFdCO1NvOzA7TDs8c3F1YXJlPiAwMDU3IDAwNjI7Ozs7TjtTUVVBUkVEIFdCOzs7OworMzNFMDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgT05FO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDY1RTU7Ozs7Tjs7Ozs7CiszM0UxO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV087U287MDtMOzxjb21wYXQ+IDAwMzIgNjVFNTs7OztOOzs7OzsKKzMzRTI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRIUkVFO1NvOzA7TDs8Y29tcGF0PiAwMDMzIDY1RTU7Ozs7Tjs7Ozs7CiszM0UzO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBGT1VSO1NvOzA7TDs8Y29tcGF0PiAwMDM0IDY1RTU7Ozs7Tjs7Ozs7CiszM0U0O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBGSVZFO1NvOzA7TDs8Y29tcGF0PiAwMDM1IDY1RTU7Ozs7Tjs7Ozs7CiszM0U1O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBTSVg7U287MDtMOzxjb21wYXQ+IDAwMzYgNjVFNTs7OztOOzs7OzsKKzMzRTY7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFNFVkVOO1NvOzA7TDs8Y29tcGF0PiAwMDM3IDY1RTU7Ozs7Tjs7Ozs7CiszM0U3O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBFSUdIVDtTbzswO0w7PGNvbXBhdD4gMDAzOCA2NUU1Ozs7O047Ozs7OworMzNFODtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgTklORTtTbzswO0w7PGNvbXBhdD4gMDAzOSA2NUU1Ozs7O047Ozs7OworMzNFOTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVEVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzAgNjVFNTs7OztOOzs7OzsKKzMzRUE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIEVMRVZFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMxIDY1RTU7Ozs7Tjs7Ozs7CiszM0VCO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VMVkU7U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMiA2NUU1Ozs7O047Ozs7OworMzNFQztJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVEhJUlRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMyA2NUU1Ozs7O047Ozs7OworMzNFRDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgRk9VUlRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzNCA2NUU1Ozs7O047Ozs7OworMzNFRTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgRklGVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM1IDY1RTU7Ozs7Tjs7Ozs7CiszM0VGO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBTSVhURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzYgNjVFNTs7OztOOzs7OzsKKzMzRjA7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFNFVkVOVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM3IDY1RTU7Ozs7Tjs7Ozs7CiszM0YxO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBFSUdIVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM4IDY1RTU7Ozs7Tjs7Ozs7CiszM0YyO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBOSU5FVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM5IDY1RTU7Ozs7Tjs7Ozs7CiszM0YzO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFk7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzMCA2NUU1Ozs7O047Ozs7OworMzNGNDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVFdFTlRZLU9ORTtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDMxIDY1RTU7Ozs7Tjs7Ozs7CiszM0Y1O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktVFdPO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzIgNjVFNTs7OztOOzs7OzsKKzMzRjY7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1USFJFRTtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDMzIDY1RTU7Ozs7Tjs7Ozs7CiszM0Y3O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktRk9VUjtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDM0IDY1RTU7Ozs7Tjs7Ozs7CiszM0Y4O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktRklWRTtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDM1IDY1RTU7Ozs7Tjs7Ozs7CiszM0Y5O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktU0lYO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzYgNjVFNTs7OztOOzs7OzsKKzMzRkE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1TRVZFTjtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDM3IDY1RTU7Ozs7Tjs7Ozs7CiszM0ZCO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktRUlHSFQ7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzOCA2NUU1Ozs7O047Ozs7OworMzNGQztJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVFdFTlRZLU5JTkU7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzOSA2NUU1Ozs7O047Ozs7OworMzNGRDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVEhJUlRZO1NvOzA7TDs8Y29tcGF0PiAwMDMzIDAwMzAgNjVFNTs7OztOOzs7OzsKKzMzRkU7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRISVJUWS1PTkU7U287MDtMOzxjb21wYXQ+IDAwMzMgMDAzMSA2NUU1Ozs7O047Ozs7OworNEUwMDs8Q0pLIElkZW9ncmFwaCwgRmlyc3Q+O0xvOzA7TDs7Ozs7Tjs7Ozs7Cis5RkE1OzxDSksgSWRlb2dyYXBoLCBMYXN0PjtMbzswO0w7Ozs7O047Ozs7OworQUMwMDs8SGFuZ3VsIFN5bGxhYmxlLCBGaXJzdD47TG87MDtMOzs7OztOOzs7OzsKK0Q3QTM7PEhhbmd1bCBTeWxsYWJsZSwgTGFzdD47TG87MDtMOzs7OztOOzs7OzsKK0Q4MDA7PFVuYXNzaWduZWQgSGlnaCBTdXJyb2dhdGUsIEZpcnN0PjtDczswO0w7Ozs7O047Ozs7OworREI3Rjs8VW5hc3NpZ25lZCBIaWdoIFN1cnJvZ2F0ZSwgTGFzdD47Q3M7MDtMOzs7OztOOzs7OzsKK0RCODA7PFByaXZhdGUgVXNlIEhpZ2ggU3Vycm9nYXRlLCBGaXJzdD47Q3M7MDtMOzs7OztOOzs7OzsKK0RCRkY7PFByaXZhdGUgVXNlIEhpZ2ggU3Vycm9nYXRlLCBMYXN0PjtDczswO0w7Ozs7O047Ozs7OworREMwMDs8TG93IFN1cnJvZ2F0ZSwgRmlyc3Q+O0NzOzA7TDs7Ozs7Tjs7Ozs7CitERkZGOzxMb3cgU3Vycm9nYXRlLCBMYXN0PjtDczswO0w7Ozs7O047Ozs7OworRTAwMDs8UHJpdmF0ZSBVc2UsIEZpcnN0PjtDbzswO0w7Ozs7O047Ozs7OworRjhGRjs8UHJpdmF0ZSBVc2UsIExhc3Q+O0NvOzA7TDs7Ozs7Tjs7Ozs7CitGOTAwOzxDSksgQ29tcGF0aWJpbGl0eSBJZGVvZ3JhcGgsIEZpcnN0PjtMbzswO0w7Ozs7O047Ozs7OworRkEyRDs8Q0pLIENvbXBhdGliaWxpdHkgSWRlb2dyYXBoLCBMYXN0PjtMbzswO0w7Ozs7O047Ozs7OworRkIwMDtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGRjtMbDswO0w7PGNvbXBhdD4gMDA2NiAwMDY2Ozs7O047Ozs7OworRkIwMTtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGSTtMbDswO0w7PGNvbXBhdD4gMDA2NiAwMDY5Ozs7O047Ozs7OworRkIwMjtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGTDtMbDswO0w7PGNvbXBhdD4gMDA2NiAwMDZDOzs7O047Ozs7OworRkIwMztMQVRJTiBTTUFMTCBMSUdBVFVSRSBGRkk7TGw7MDtMOzxjb21wYXQ+IDAwNjYgMDA2NiAwMDY5Ozs7O047Ozs7OworRkIwNDtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGRkw7TGw7MDtMOzxjb21wYXQ+IDAwNjYgMDA2NiAwMDZDOzs7O047Ozs7OworRkIwNTtMQVRJTiBTTUFMTCBMSUdBVFVSRSBMT05HIFMgVDtMbDswO0w7PGNvbXBhdD4gMDE3RiAwMDc0Ozs7O047Ozs7OworRkIwNjtMQVRJTiBTTUFMTCBMSUdBVFVSRSBTVDtMbDswO0w7PGNvbXBhdD4gMDA3MyAwMDc0Ozs7O047Ozs7OworRkIxMztBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBNRU4gTk9XO0xsOzA7TDs8Y29tcGF0PiAwNTc0IDA1NzY7Ozs7Tjs7Ozs7CitGQjE0O0FSTUVOSUFOIFNNQUxMIExJR0FUVVJFIE1FTiBFQ0g7TGw7MDtMOzxjb21wYXQ+IDA1NzQgMDU2NTs7OztOOzs7OzsKK0ZCMTU7QVJNRU5JQU4gU01BTEwgTElHQVRVUkUgTUVOIElOSTtMbDswO0w7PGNvbXBhdD4gMDU3NCAwNTZCOzs7O047Ozs7OworRkIxNjtBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBWRVcgTk9XO0xsOzA7TDs8Y29tcGF0PiAwNTdFIDA1NzY7Ozs7Tjs7Ozs7CitGQjE3O0FSTUVOSUFOIFNNQUxMIExJR0FUVVJFIE1FTiBYRUg7TGw7MDtMOzxjb21wYXQ+IDA1NzQgMDU2RDs7OztOOzs7OzsKK0ZCMUU7SEVCUkVXIFBPSU5UIEpVREVPLVNQQU5JU0ggVkFSSUtBO01uOzI2O1I7Ozs7O047SEVCUkVXIFBPSU5UIFZBUklLQTs7OzsKK0ZCMUY7SEVCUkVXIExJR0FUVVJFIFlJRERJU0ggWU9EIFlPRCBQQVRBSDtMbzswO1I7MDVGMiAwNUI3Ozs7O047Ozs7OworRkIyMDtIRUJSRVcgTEVUVEVSIEFMVEVSTkFUSVZFIEFZSU47TG87MDtSOzxmb250PiAwNUUyOzs7O047Ozs7OworRkIyMTtIRUJSRVcgTEVUVEVSIFdJREUgQUxFRjtMbzswO1I7PGZvbnQ+IDA1RDA7Ozs7Tjs7Ozs7CitGQjIyO0hFQlJFVyBMRVRURVIgV0lERSBEQUxFVDtMbzswO1I7PGZvbnQ+IDA1RDM7Ozs7Tjs7Ozs7CitGQjIzO0hFQlJFVyBMRVRURVIgV0lERSBIRTtMbzswO1I7PGZvbnQ+IDA1RDQ7Ozs7Tjs7Ozs7CitGQjI0O0hFQlJFVyBMRVRURVIgV0lERSBLQUY7TG87MDtSOzxmb250PiAwNURCOzs7O047Ozs7OworRkIyNTtIRUJSRVcgTEVUVEVSIFdJREUgTEFNRUQ7TG87MDtSOzxmb250PiAwNURDOzs7O047Ozs7OworRkIyNjtIRUJSRVcgTEVUVEVSIFdJREUgRklOQUwgTUVNO0xvOzA7Ujs8Zm9udD4gMDVERDs7OztOOzs7OzsKK0ZCMjc7SEVCUkVXIExFVFRFUiBXSURFIFJFU0g7TG87MDtSOzxmb250PiAwNUU4Ozs7O047Ozs7OworRkIyODtIRUJSRVcgTEVUVEVSIFdJREUgVEFWO0xvOzA7Ujs8Zm9udD4gMDVFQTs7OztOOzs7OzsKK0ZCMjk7SEVCUkVXIExFVFRFUiBBTFRFUk5BVElWRSBQTFVTIFNJR047U207MDtSOzxmb250PiAwMDJCOzs7O047Ozs7OworRkIyQTtIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBTSElOIERPVDtMbzswO1I7MDVFOSAwNUMxOzs7O047Ozs7OworRkIyQjtIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBTSU4gRE9UO0xvOzA7UjswNUU5IDA1QzI7Ozs7Tjs7Ozs7CitGQjJDO0hFQlJFVyBMRVRURVIgU0hJTiBXSVRIIERBR0VTSCBBTkQgU0hJTiBET1Q7TG87MDtSOzA1RTkgMDVCQyAwNUMxOzs7O047Ozs7OworRkIyRDtIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBEQUdFU0ggQU5EIFNJTiBET1Q7TG87MDtSOzA1RTkgMDVCQyAwNUMyOzs7O047Ozs7OworRkIyRTtIRUJSRVcgTEVUVEVSIEFMRUYgV0lUSCBQQVRBSDtMbzswO1I7MDVEMCAwNUI3Ozs7O047Ozs7OworRkIyRjtIRUJSRVcgTEVUVEVSIEFMRUYgV0lUSCBRQU1BVFM7TG87MDtSOzA1RDAgMDVCODs7OztOOzs7OzsKK0ZCMzA7SEVCUkVXIExFVFRFUiBBTEVGIFdJVEggTUFQSVE7TG87MDtSOzA1RDAgMDVCQzs7OztOOzs7OzsKK0ZCMzE7SEVCUkVXIExFVFRFUiBCRVQgV0lUSCBEQUdFU0g7TG87MDtSOzA1RDEgMDVCQzs7OztOOzs7OzsKK0ZCMzI7SEVCUkVXIExFVFRFUiBHSU1FTCBXSVRIIERBR0VTSDtMbzswO1I7MDVEMiAwNUJDOzs7O047Ozs7OworRkIzMztIRUJSRVcgTEVUVEVSIERBTEVUIFdJVEggREFHRVNIO0xvOzA7UjswNUQzIDA1QkM7Ozs7Tjs7Ozs7CitGQjM0O0hFQlJFVyBMRVRURVIgSEUgV0lUSCBNQVBJUTtMbzswO1I7MDVENCAwNUJDOzs7O047Ozs7OworRkIzNTtIRUJSRVcgTEVUVEVSIFZBViBXSVRIIERBR0VTSDtMbzswO1I7MDVENSAwNUJDOzs7O047Ozs7OworRkIzNjtIRUJSRVcgTEVUVEVSIFpBWUlOIFdJVEggREFHRVNIO0xvOzA7UjswNUQ2IDA1QkM7Ozs7Tjs7Ozs7CitGQjM4O0hFQlJFVyBMRVRURVIgVEVUIFdJVEggREFHRVNIO0xvOzA7UjswNUQ4IDA1QkM7Ozs7Tjs7Ozs7CitGQjM5O0hFQlJFVyBMRVRURVIgWU9EIFdJVEggREFHRVNIO0xvOzA7UjswNUQ5IDA1QkM7Ozs7Tjs7Ozs7CitGQjNBO0hFQlJFVyBMRVRURVIgRklOQUwgS0FGIFdJVEggREFHRVNIO0xvOzA7UjswNURBIDA1QkM7Ozs7Tjs7Ozs7CitGQjNCO0hFQlJFVyBMRVRURVIgS0FGIFdJVEggREFHRVNIO0xvOzA7UjswNURCIDA1QkM7Ozs7Tjs7Ozs7CitGQjNDO0hFQlJFVyBMRVRURVIgTEFNRUQgV0lUSCBEQUdFU0g7TG87MDtSOzA1REMgMDVCQzs7OztOOzs7OzsKK0ZCM0U7SEVCUkVXIExFVFRFUiBNRU0gV0lUSCBEQUdFU0g7TG87MDtSOzA1REUgMDVCQzs7OztOOzs7OzsKK0ZCNDA7SEVCUkVXIExFVFRFUiBOVU4gV0lUSCBEQUdFU0g7TG87MDtSOzA1RTAgMDVCQzs7OztOOzs7OzsKK0ZCNDE7SEVCUkVXIExFVFRFUiBTQU1FS0ggV0lUSCBEQUdFU0g7TG87MDtSOzA1RTEgMDVCQzs7OztOOzs7OzsKK0ZCNDM7SEVCUkVXIExFVFRFUiBGSU5BTCBQRSBXSVRIIERBR0VTSDtMbzswO1I7MDVFMyAwNUJDOzs7O047Ozs7OworRkI0NDtIRUJSRVcgTEVUVEVSIFBFIFdJVEggREFHRVNIO0xvOzA7UjswNUU0IDA1QkM7Ozs7Tjs7Ozs7CitGQjQ2O0hFQlJFVyBMRVRURVIgVFNBREkgV0lUSCBEQUdFU0g7TG87MDtSOzA1RTYgMDVCQzs7OztOOzs7OzsKK0ZCNDc7SEVCUkVXIExFVFRFUiBRT0YgV0lUSCBEQUdFU0g7TG87MDtSOzA1RTcgMDVCQzs7OztOOzs7OzsKK0ZCNDg7SEVCUkVXIExFVFRFUiBSRVNIIFdJVEggREFHRVNIO0xvOzA7UjswNUU4IDA1QkM7Ozs7Tjs7Ozs7CitGQjQ5O0hFQlJFVyBMRVRURVIgU0hJTiBXSVRIIERBR0VTSDtMbzswO1I7MDVFOSAwNUJDOzs7O047Ozs7OworRkI0QTtIRUJSRVcgTEVUVEVSIFRBViBXSVRIIERBR0VTSDtMbzswO1I7MDVFQSAwNUJDOzs7O047Ozs7OworRkI0QjtIRUJSRVcgTEVUVEVSIFZBViBXSVRIIEhPTEFNO0xvOzA7UjswNUQ1IDA1Qjk7Ozs7Tjs7Ozs7CitGQjRDO0hFQlJFVyBMRVRURVIgQkVUIFdJVEggUkFGRTtMbzswO1I7MDVEMSAwNUJGOzs7O047Ozs7OworRkI0RDtIRUJSRVcgTEVUVEVSIEtBRiBXSVRIIFJBRkU7TG87MDtSOzA1REIgMDVCRjs7OztOOzs7OzsKK0ZCNEU7SEVCUkVXIExFVFRFUiBQRSBXSVRIIFJBRkU7TG87MDtSOzA1RTQgMDVCRjs7OztOOzs7OzsKK0ZCNEY7SEVCUkVXIExJR0FUVVJFIEFMRUYgTEFNRUQ7TG87MDtSOzxjb21wYXQ+IDA1RDAgMDVEQzs7OztOOzs7OzsKK0ZCNTA7QVJBQklDIExFVFRFUiBBTEVGIFdBU0xBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY3MTs7OztOOzs7OzsKK0ZCNTE7QVJBQklDIExFVFRFUiBBTEVGIFdBU0xBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY3MTs7OztOOzs7OzsKK0ZCNTI7QVJBQklDIExFVFRFUiBCRUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY3Qjs7OztOOzs7OzsKK0ZCNTM7QVJBQklDIExFVFRFUiBCRUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY3Qjs7OztOOzs7OzsKK0ZCNTQ7QVJBQklDIExFVFRFUiBCRUVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2N0I7Ozs7Tjs7Ozs7CitGQjU1O0FSQUJJQyBMRVRURVIgQkVFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY3Qjs7OztOOzs7OzsKK0ZCNTY7QVJBQklDIExFVFRFUiBQRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjdFOzs7O047Ozs7OworRkI1NztBUkFCSUMgTEVUVEVSIFBFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2N0U7Ozs7Tjs7Ozs7CitGQjU4O0FSQUJJQyBMRVRURVIgUEVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2N0U7Ozs7Tjs7Ozs7CitGQjU5O0FSQUJJQyBMRVRURVIgUEVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjdFOzs7O047Ozs7OworRkI1QTtBUkFCSUMgTEVUVEVSIEJFSEVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY4MDs7OztOOzs7OzsKK0ZCNUI7QVJBQklDIExFVFRFUiBCRUhFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2ODA7Ozs7Tjs7Ozs7CitGQjVDO0FSQUJJQyBMRVRURVIgQkVIRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY4MDs7OztOOzs7OzsKK0ZCNUQ7QVJBQklDIExFVFRFUiBCRUhFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY4MDs7OztOOzs7OzsKK0ZCNUU7QVJBQklDIExFVFRFUiBUVEVIRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjdBOzs7O047Ozs7OworRkI1RjtBUkFCSUMgTEVUVEVSIFRURUhFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2N0E7Ozs7Tjs7Ozs7CitGQjYwO0FSQUJJQyBMRVRURVIgVFRFSEVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2N0E7Ozs7Tjs7Ozs7CitGQjYxO0FSQUJJQyBMRVRURVIgVFRFSEVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjdBOzs7O047Ozs7OworRkI2MjtBUkFCSUMgTEVUVEVSIFRFSEVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY3Rjs7OztOOzs7OzsKK0ZCNjM7QVJBQklDIExFVFRFUiBURUhFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2N0Y7Ozs7Tjs7Ozs7CitGQjY0O0FSQUJJQyBMRVRURVIgVEVIRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY3Rjs7OztOOzs7OzsKK0ZCNjU7QVJBQklDIExFVFRFUiBURUhFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY3Rjs7OztOOzs7OzsKK0ZCNjY7QVJBQklDIExFVFRFUiBUVEVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY3OTs7OztOOzs7OzsKK0ZCNjc7QVJBQklDIExFVFRFUiBUVEVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY3OTs7OztOOzs7OzsKK0ZCNjg7QVJBQklDIExFVFRFUiBUVEVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2Nzk7Ozs7Tjs7Ozs7CitGQjY5O0FSQUJJQyBMRVRURVIgVFRFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY3OTs7OztOOzs7OzsKK0ZCNkE7QVJBQklDIExFVFRFUiBWRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkE0Ozs7O047Ozs7OworRkI2QjtBUkFCSUMgTEVUVEVSIFZFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2QTQ7Ozs7Tjs7Ozs7CitGQjZDO0FSQUJJQyBMRVRURVIgVkVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2QTQ7Ozs7Tjs7Ozs7CitGQjZEO0FSQUJJQyBMRVRURVIgVkVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNkE0Ozs7O047Ozs7OworRkI2RTtBUkFCSUMgTEVUVEVSIFBFSEVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZBNjs7OztOOzs7OzsKK0ZCNkY7QVJBQklDIExFVFRFUiBQRUhFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2QTY7Ozs7Tjs7Ozs7CitGQjcwO0FSQUJJQyBMRVRURVIgUEVIRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDZBNjs7OztOOzs7OzsKK0ZCNzE7QVJBQklDIExFVFRFUiBQRUhFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDZBNjs7OztOOzs7OzsKK0ZCNzI7QVJBQklDIExFVFRFUiBEWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY4NDs7OztOOzs7OzsKK0ZCNzM7QVJBQklDIExFVFRFUiBEWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY4NDs7OztOOzs7OzsKK0ZCNzQ7QVJBQklDIExFVFRFUiBEWUVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2ODQ7Ozs7Tjs7Ozs7CitGQjc1O0FSQUJJQyBMRVRURVIgRFlFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY4NDs7OztOOzs7OzsKK0ZCNzY7QVJBQklDIExFVFRFUiBOWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY4Mzs7OztOOzs7OzsKK0ZCNzc7QVJBQklDIExFVFRFUiBOWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY4Mzs7OztOOzs7OzsKK0ZCNzg7QVJBQklDIExFVFRFUiBOWUVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2ODM7Ozs7Tjs7Ozs7CitGQjc5O0FSQUJJQyBMRVRURVIgTllFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY4Mzs7OztOOzs7OzsKK0ZCN0E7QVJBQklDIExFVFRFUiBUQ0hFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2ODY7Ozs7Tjs7Ozs7CitGQjdCO0FSQUJJQyBMRVRURVIgVENIRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjg2Ozs7O047Ozs7OworRkI3QztBUkFCSUMgTEVUVEVSIFRDSEVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2ODY7Ozs7Tjs7Ozs7CitGQjdEO0FSQUJJQyBMRVRURVIgVENIRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2ODY7Ozs7Tjs7Ozs7CitGQjdFO0FSQUJJQyBMRVRURVIgVENIRUhFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2ODc7Ozs7Tjs7Ozs7CitGQjdGO0FSQUJJQyBMRVRURVIgVENIRUhFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2ODc7Ozs7Tjs7Ozs7CitGQjgwO0FSQUJJQyBMRVRURVIgVENIRUhFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjg3Ozs7O047Ozs7OworRkI4MTtBUkFCSUMgTEVUVEVSIFRDSEVIRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2ODc7Ozs7Tjs7Ozs7CitGQjgyO0FSQUJJQyBMRVRURVIgRERBSEFMIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY4RDs7OztOOzs7OzsKK0ZCODM7QVJBQklDIExFVFRFUiBEREFIQUwgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjhEOzs7O047Ozs7OworRkI4NDtBUkFCSUMgTEVUVEVSIERBSEFMIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY4Qzs7OztOOzs7OzsKK0ZCODU7QVJBQklDIExFVFRFUiBEQUhBTCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2OEM7Ozs7Tjs7Ozs7CitGQjg2O0FSQUJJQyBMRVRURVIgRFVMIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY4RTs7OztOOzs7OzsKK0ZCODc7QVJBQklDIExFVFRFUiBEVUwgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjhFOzs7O047Ozs7OworRkI4ODtBUkFCSUMgTEVUVEVSIEREQUwgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjg4Ozs7O047Ozs7OworRkI4OTtBUkFCSUMgTEVUVEVSIEREQUwgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjg4Ozs7O047Ozs7OworRkI4QTtBUkFCSUMgTEVUVEVSIEpFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2OTg7Ozs7Tjs7Ozs7CitGQjhCO0FSQUJJQyBMRVRURVIgSkVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY5ODs7OztOOzs7OzsKK0ZCOEM7QVJBQklDIExFVFRFUiBSUkVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY5MTs7OztOOzs7OzsKK0ZCOEQ7QVJBQklDIExFVFRFUiBSUkVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY5MTs7OztOOzs7OzsKK0ZCOEU7QVJBQklDIExFVFRFUiBLRUhFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2QTk7Ozs7Tjs7Ozs7CitGQjhGO0FSQUJJQyBMRVRURVIgS0VIRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkE5Ozs7O047Ozs7OworRkI5MDtBUkFCSUMgTEVUVEVSIEtFSEVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2QTk7Ozs7Tjs7Ozs7CitGQjkxO0FSQUJJQyBMRVRURVIgS0VIRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2QTk7Ozs7Tjs7Ozs7CitGQjkyO0FSQUJJQyBMRVRURVIgR0FGIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZBRjs7OztOOzs7OzsKK0ZCOTM7QVJBQklDIExFVFRFUiBHQUYgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkFGOzs7O047Ozs7OworRkI5NDtBUkFCSUMgTEVUVEVSIEdBRiBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNkFGOzs7O047Ozs7OworRkI5NTtBUkFCSUMgTEVUVEVSIEdBRiBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDZBRjs7OztOOzs7OzsKK0ZCOTY7QVJBQklDIExFVFRFUiBHVUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZCMzs7OztOOzs7OzsKK0ZCOTc7QVJBQklDIExFVFRFUiBHVUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZCMzs7OztOOzs7OzsKK0ZCOTg7QVJBQklDIExFVFRFUiBHVUVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2QjM7Ozs7Tjs7Ozs7CitGQjk5O0FSQUJJQyBMRVRURVIgR1VFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDZCMzs7OztOOzs7OzsKK0ZCOUE7QVJBQklDIExFVFRFUiBOR09FSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2QjE7Ozs7Tjs7Ozs7CitGQjlCO0FSQUJJQyBMRVRURVIgTkdPRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkIxOzs7O047Ozs7OworRkI5QztBUkFCSUMgTEVUVEVSIE5HT0VIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2QjE7Ozs7Tjs7Ozs7CitGQjlEO0FSQUJJQyBMRVRURVIgTkdPRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2QjE7Ozs7Tjs7Ozs7CitGQjlFO0FSQUJJQyBMRVRURVIgTk9PTiBHSFVOTkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkJBOzs7O047Ozs7OworRkI5RjtBUkFCSUMgTEVUVEVSIE5PT04gR0hVTk5BIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZCQTs7OztOOzs7OzsKK0ZCQTA7QVJBQklDIExFVFRFUiBSTk9PTiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2QkI7Ozs7Tjs7Ozs7CitGQkExO0FSQUJJQyBMRVRURVIgUk5PT04gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkJCOzs7O047Ozs7OworRkJBMjtBUkFCSUMgTEVUVEVSIFJOT09OIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2QkI7Ozs7Tjs7Ozs7CitGQkEzO0FSQUJJQyBMRVRURVIgUk5PT04gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2QkI7Ozs7Tjs7Ozs7CitGQkE0O0FSQUJJQyBMRVRURVIgSEVIIFdJVEggWUVIIEFCT1ZFIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZDMDs7OztOOzs7OzsKK0ZCQTU7QVJBQklDIExFVFRFUiBIRUggV0lUSCBZRUggQUJPVkUgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkMwOzs7O047Ozs7OworRkJBNjtBUkFCSUMgTEVUVEVSIEhFSCBHT0FMIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZDMTs7OztOOzs7OzsKK0ZCQTc7QVJBQklDIExFVFRFUiBIRUggR09BTCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2QzE7Ozs7Tjs7Ozs7CitGQkE4O0FSQUJJQyBMRVRURVIgSEVIIEdPQUwgSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDZDMTs7OztOOzs7OzsKK0ZCQTk7QVJBQklDIExFVFRFUiBIRUggR09BTCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDZDMTs7OztOOzs7OzsKK0ZCQUE7QVJBQklDIExFVFRFUiBIRUggRE9BQ0hBU0hNRUUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkJFOzs7O047Ozs7OworRkJBQjtBUkFCSUMgTEVUVEVSIEhFSCBET0FDSEFTSE1FRSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2QkU7Ozs7Tjs7Ozs7CitGQkFDO0FSQUJJQyBMRVRURVIgSEVIIERPQUNIQVNITUVFIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2QkU7Ozs7Tjs7Ozs7CitGQkFEO0FSQUJJQyBMRVRURVIgSEVIIERPQUNIQVNITUVFIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNkJFOzs7O047Ozs7OworRkJBRTtBUkFCSUMgTEVUVEVSIFlFSCBCQVJSRUUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkQyOzs7O047Ozs7OworRkJBRjtBUkFCSUMgTEVUVEVSIFlFSCBCQVJSRUUgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkQyOzs7O047Ozs7OworRkJCMDtBUkFCSUMgTEVUVEVSIFlFSCBCQVJSRUUgV0lUSCBIQU1aQSBBQk9WRSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2RDM7Ozs7Tjs7Ozs7CitGQkIxO0FSQUJJQyBMRVRURVIgWUVIIEJBUlJFRSBXSVRIIEhBTVpBIEFCT1ZFIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZEMzs7OztOOzs7OzsKK0ZCRDM7QVJBQklDIExFVFRFUiBORyBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2QUQ7Ozs7Tjs7Ozs7CitGQkQ0O0FSQUJJQyBMRVRURVIgTkcgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkFEOzs7O047Ozs7OworRkJENTtBUkFCSUMgTEVUVEVSIE5HIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2QUQ7Ozs7Tjs7Ozs7CitGQkQ2O0FSQUJJQyBMRVRURVIgTkcgTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2QUQ7Ozs7Tjs7Ozs7CitGQkQ3O0FSQUJJQyBMRVRURVIgVSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2Qzc7Ozs7Tjs7Ozs7CitGQkQ4O0FSQUJJQyBMRVRURVIgVSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2Qzc7Ozs7Tjs7Ozs7CitGQkQ5O0FSQUJJQyBMRVRURVIgT0UgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkM2Ozs7O047Ozs7OworRkJEQTtBUkFCSUMgTEVUVEVSIE9FIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZDNjs7OztOOzs7OzsKK0ZCREI7QVJBQklDIExFVFRFUiBZVSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2Qzg7Ozs7Tjs7Ozs7CitGQkRDO0FSQUJJQyBMRVRURVIgWVUgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkM4Ozs7O047Ozs7OworRkJERDtBUkFCSUMgTEVUVEVSIFUgV0lUSCBIQU1aQSBBQk9WRSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2Nzc7Ozs7Tjs7Ozs7CitGQkRFO0FSQUJJQyBMRVRURVIgVkUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkNCOzs7O047Ozs7OworRkJERjtBUkFCSUMgTEVUVEVSIFZFIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZDQjs7OztOOzs7OzsKK0ZCRTA7QVJBQklDIExFVFRFUiBLSVJHSElaIE9FIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZDNTs7OztOOzs7OzsKK0ZCRTE7QVJBQklDIExFVFRFUiBLSVJHSElaIE9FIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZDNTs7OztOOzs7OzsKK0ZCRTI7QVJBQklDIExFVFRFUiBLSVJHSElaIFlVIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZDOTs7OztOOzs7OzsKK0ZCRTM7QVJBQklDIExFVFRFUiBLSVJHSElaIFlVIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZDOTs7OztOOzs7OzsKK0ZCRTQ7QVJBQklDIExFVFRFUiBFIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZEMDs7OztOOzs7OzsKK0ZCRTU7QVJBQklDIExFVFRFUiBFIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZEMDs7OztOOzs7OzsKK0ZCRTY7QVJBQklDIExFVFRFUiBFIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2RDA7Ozs7Tjs7Ozs7CitGQkU3O0FSQUJJQyBMRVRURVIgRSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDZEMDs7OztOOzs7OzsKK0ZCRTg7QVJBQklDIExFVFRFUiBVSUdIVVIgS0FaQUtIIEtJUkdISVogQUxFRiBNQUtTVVJBIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDk7Ozs7Tjs7Ozs7CitGQkU5O0FSQUJJQyBMRVRURVIgVUlHSFVSIEtBWkFLSCBLSVJHSElaIEFMRUYgTUFLU1VSQSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0OTs7OztOOzs7OzsKK0ZCRUE7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUxFRiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjYgMDYyNzs7OztOOzs7OzsKK0ZCRUI7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUxFRiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjYgMDYyNzs7OztOOzs7OzsKK0ZCRUM7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI2IDA2RDU7Ozs7Tjs7Ozs7CitGQkVEO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFFIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyNiAwNkQ1Ozs7O047Ozs7OworRkJFRTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBXQVcgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI2IDA2NDg7Ozs7Tjs7Ozs7CitGQkVGO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFdBVyBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjYgMDY0ODs7OztOOzs7OzsKK0ZCRjA7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggVSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjYgMDZDNzs7OztOOzs7OzsKK0ZCRjE7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggVSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjYgMDZDNzs7OztOOzs7OzsKK0ZCRjI7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggT0UgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI2IDA2QzY7Ozs7Tjs7Ozs7CitGQkYzO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIE9FIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyNiAwNkM2Ozs7O047Ozs7OworRkJGNDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBZVSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjYgMDZDODs7OztOOzs7OzsKK0ZCRjU7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggWVUgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI2IDA2Qzg7Ozs7Tjs7Ozs7CitGQkY2O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI2IDA2RDA7Ozs7Tjs7Ozs7CitGQkY3O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEUgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI2IDA2RDA7Ozs7Tjs7Ozs7CitGQkY4O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEUgSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyNiAwNkQwOzs7O047Ozs7OworRkJGOTtBUkFCSUMgTElHQVRVUkUgVUlHSFVSIEtJUkdISVogWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI2IDA2NDk7Ozs7Tjs7Ozs7CitGQkZBO0FSQUJJQyBMSUdBVFVSRSBVSUdIVVIgS0lSR0hJWiBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjYgMDY0OTs7OztOOzs7OzsKK0ZCRkI7QVJBQklDIExJR0FUVVJFIFVJR0hVUiBLSVJHSElaIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUxFRiBNQUtTVVJBIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MjYgMDY0OTs7OztOOzs7OzsKK0ZCRkM7QVJBQklDIExFVFRFUiBGQVJTSSBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkNDOzs7O047Ozs7OworRkJGRDtBUkFCSUMgTEVUVEVSIEZBUlNJIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2Q0M7Ozs7Tjs7Ozs7CitGQkZFO0FSQUJJQyBMRVRURVIgRkFSU0kgWUVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2Q0M7Ozs7Tjs7Ozs7CitGQkZGO0FSQUJJQyBMRVRURVIgRkFSU0kgWUVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNkNDOzs7O047Ozs7OworRkMwMDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyNiAwNjJDOzs7O047Ozs7OworRkMwMTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI2IDA2MkQ7Ozs7Tjs7Ozs7CitGQzAyO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI2IDA2NDU7Ozs7Tjs7Ozs7CitGQzAzO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjYgMDY0OTs7OztOOzs7OzsKK0ZDMDQ7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyNiAwNjRBOzs7O047Ozs7OworRkMwNTtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjggMDYyQzs7OztOOzs7OzsKK0ZDMDY7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjggMDYyRDs7OztOOzs7OzsKK0ZDMDc7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI4IDA2MkU7Ozs7Tjs7Ozs7CitGQzA4O0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyOCAwNjQ1Ozs7O047Ozs7OworRkMwOTtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyOCAwNjQ5Ozs7O047Ozs7OworRkMwQTtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyOCAwNjRBOzs7O047Ozs7OworRkMwQjtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkEgMDYyQzs7OztOOzs7OzsKK0ZDMEM7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkEgMDYyRDs7OztOOzs7OzsKK0ZDMEQ7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJBIDA2MkU7Ozs7Tjs7Ozs7CitGQzBFO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyQSAwNjQ1Ozs7O047Ozs7OworRkMwRjtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyQSAwNjQ5Ozs7O047Ozs7OworRkMxMDtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyQSAwNjRBOzs7O047Ozs7OworRkMxMTtBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJCIDA2MkM7Ozs7Tjs7Ozs7CitGQzEyO0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkIgMDY0NTs7OztOOzs7OzsKK0ZDMTM7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJCIDA2NDk7Ozs7Tjs7Ozs7CitGQzE0O0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyQiAwNjRBOzs7O047Ozs7OworRkMxNTtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkMgMDYyRDs7OztOOzs7OzsKK0ZDMTY7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyQyAwNjQ1Ozs7O047Ozs7OworRkMxNztBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkQgMDYyQzs7OztOOzs7OzsKK0ZDMTg7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJEIDA2NDU7Ozs7Tjs7Ozs7CitGQzE5O0FSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkUgMDYyQzs7OztOOzs7OzsKK0ZDMUE7QVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJFIDA2MkQ7Ozs7Tjs7Ozs7CitGQzFCO0FSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZDMUM7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzMyAwNjJDOzs7O047Ozs7OworRkMxRDtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzMgMDYyRDs7OztOOzs7OzsKK0ZDMUU7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzMyAwNjJFOzs7O047Ozs7OworRkMxRjtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjMzIDA2NDU7Ozs7Tjs7Ozs7CitGQzIwO0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM1IDA2MkQ7Ozs7Tjs7Ozs7CitGQzIxO0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNSAwNjQ1Ozs7O047Ozs7OworRkMyMjtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzYgMDYyQzs7OztOOzs7OzsKK0ZDMjM7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzYgMDYyRDs7OztOOzs7OzsKK0ZDMjQ7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM2IDA2MkU7Ozs7Tjs7Ozs7CitGQzI1O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNiAwNjQ1Ozs7O047Ozs7OworRkMyNjtBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNyAwNjJEOzs7O047Ozs7OworRkMyNztBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzcgMDY0NTs7OztOOzs7OzsKK0ZDMjg7QVJBQklDIExJR0FUVVJFIFpBSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM4IDA2NDU7Ozs7Tjs7Ozs7CitGQzI5O0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzOSAwNjJDOzs7O047Ozs7OworRkMyQTtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzkgMDY0NTs7OztOOzs7OzsKK0ZDMkI7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2M0EgMDYyQzs7OztOOzs7OzsKK0ZDMkM7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2M0EgMDY0NTs7OztOOzs7OzsKK0ZDMkQ7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQxIDA2MkM7Ozs7Tjs7Ozs7CitGQzJFO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQxIDA2MkQ7Ozs7Tjs7Ozs7CitGQzJGO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0MSAwNjJFOzs7O047Ozs7OworRkMzMDtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDEgMDY0NTs7OztOOzs7OzsKK0ZDMzE7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDEgMDY0OTs7OztOOzs7OzsKK0ZDMzI7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDEgMDY0QTs7OztOOzs7OzsKK0ZDMzM7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDIgMDYyRDs7OztOOzs7OzsKK0ZDMzQ7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQyIDA2NDU7Ozs7Tjs7Ozs7CitGQzM1O0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQyIDA2NDk7Ozs7Tjs7Ozs7CitGQzM2O0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQyIDA2NEE7Ozs7Tjs7Ozs7CitGQzM3O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBBTEVGIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0MyAwNjI3Ozs7O047Ozs7OworRkMzODtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDMgMDYyQzs7OztOOzs7OzsKK0ZDMzk7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDMgMDYyRDs7OztOOzs7OzsKK0ZDM0E7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQzIDA2MkU7Ozs7Tjs7Ozs7CitGQzNCO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBMQU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQzIDA2NDQ7Ozs7Tjs7Ozs7CitGQzNDO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0MyAwNjQ1Ozs7O047Ozs7OworRkMzRDtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0MyAwNjQ5Ozs7O047Ozs7OworRkMzRTtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0MyAwNjRBOzs7O047Ozs7OworRkMzRjtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDQgMDYyQzs7OztOOzs7OzsKK0ZDNDA7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDQgMDYyRDs7OztOOzs7OzsKK0ZDNDE7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ0IDA2MkU7Ozs7Tjs7Ozs7CitGQzQyO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NCAwNjQ1Ozs7O047Ozs7OworRkM0MztBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NCAwNjQ5Ozs7O047Ozs7OworRkM0NDtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NCAwNjRBOzs7O047Ozs7OworRkM0NTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ1IDA2MkM7Ozs7Tjs7Ozs7CitGQzQ2O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NSAwNjJEOzs7O047Ozs7OworRkM0NztBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ1IDA2MkU7Ozs7Tjs7Ozs7CitGQzQ4O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZDNDk7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ1IDA2NDk7Ozs7Tjs7Ozs7CitGQzRBO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NSAwNjRBOzs7O047Ozs7OworRkM0QjtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ2IDA2MkM7Ozs7Tjs7Ozs7CitGQzRDO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NiAwNjJEOzs7O047Ozs7OworRkM0RDtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ2IDA2MkU7Ozs7Tjs7Ozs7CitGQzRFO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDYgMDY0NTs7OztOOzs7OzsKK0ZDNEY7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ2IDA2NDk7Ozs7Tjs7Ozs7CitGQzUwO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NiAwNjRBOzs7O047Ozs7OworRkM1MTtBUkFCSUMgTElHQVRVUkUgSEVIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDcgMDYyQzs7OztOOzs7OzsKK0ZDNTI7QVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ3IDA2NDU7Ozs7Tjs7Ozs7CitGQzUzO0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ3IDA2NDk7Ozs7Tjs7Ozs7CitGQzU0O0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ3IDA2NEE7Ozs7Tjs7Ozs7CitGQzU1O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0QSAwNjJDOzs7O047Ozs7OworRkM1NjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0QSAwNjJEOzs7O047Ozs7OworRkM1NztBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NEEgMDYyRTs7OztOOzs7OzsKK0ZDNTg7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjRBIDA2NDU7Ozs7Tjs7Ozs7CitGQzU5O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjRBIDA2NDk7Ozs7Tjs7Ozs7CitGQzVBO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjRBIDA2NEE7Ozs7Tjs7Ozs7CitGQzVCO0FSQUJJQyBMSUdBVFVSRSBUSEFMIFdJVEggU1VQRVJTQ1JJUFQgQUxFRiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzAgMDY3MDs7OztOOzs7OzsKK0ZDNUM7QVJBQklDIExJR0FUVVJFIFJFSCBXSVRIIFNVUEVSU0NSSVBUIEFMRUYgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjMxIDA2NzA7Ozs7Tjs7Ozs7CitGQzVEO0FSQUJJQyBMSUdBVFVSRSBBTEVGIE1BS1NVUkEgV0lUSCBTVVBFUlNDUklQVCBBTEVGIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0OSAwNjcwOzs7O047Ozs7OworRkM1RTtBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggREFNTUFUQU4gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwMDIwIDA2NTEgMDY0Qzs7OztOOzs7OzsKK0ZDNUY7QVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIEtBU1JBVEFOIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDAyMCAwNjUxIDA2NEQ7Ozs7Tjs7Ozs7CitGQzYwO0FSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBGQVRIQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDAwMjAgMDY1MSAwNjRFOzs7O047Ozs7OworRkM2MTtBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggREFNTUEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwMDIwIDA2NTEgMDY0Rjs7OztOOzs7OzsKK0ZDNjI7QVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIEtBU1JBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDAyMCAwNjUxIDA2NTA7Ozs7Tjs7Ozs7CitGQzYzO0FSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBTVVBFUlNDUklQVCBBTEVGIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDAyMCAwNjUxIDA2NzA7Ozs7Tjs7Ozs7CitGQzY0O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFJFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjYgMDYzMTs7OztOOzs7OzsKK0ZDNjU7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggWkFJTiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjYgMDYzMjs7OztOOzs7OzsKK0ZDNjY7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjYgMDY0NTs7OztOOzs7OzsKK0ZDNjc7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggTk9PTiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjYgMDY0Njs7OztOOzs7OzsKK0ZDNjg7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyNiAwNjQ5Ozs7O047Ozs7OworRkM2OTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI2IDA2NEE7Ozs7Tjs7Ozs7CitGQzZBO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBSRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI4IDA2MzE7Ozs7Tjs7Ozs7CitGQzZCO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBaQUlOIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyOCAwNjMyOzs7O047Ozs7OworRkM2QztBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjggMDY0NTs7OztOOzs7OzsKK0ZDNkQ7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIE5PT04gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI4IDA2NDY7Ozs7Tjs7Ozs7CitGQzZFO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI4IDA2NDk7Ozs7Tjs7Ozs7CitGQzZGO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI4IDA2NEE7Ozs7Tjs7Ozs7CitGQzcwO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBSRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJBIDA2MzE7Ozs7Tjs7Ozs7CitGQzcxO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBaQUlOIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQSAwNjMyOzs7O047Ozs7OworRkM3MjtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkEgMDY0NTs7OztOOzs7OzsKK0ZDNzM7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE5PT04gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJBIDA2NDY7Ozs7Tjs7Ozs7CitGQzc0O0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJBIDA2NDk7Ozs7Tjs7Ozs7CitGQzc1O0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJBIDA2NEE7Ozs7Tjs7Ozs7CitGQzc2O0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggUkVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQiAwNjMxOzs7O047Ozs7OworRkM3NztBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIFpBSU4gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJCIDA2MzI7Ozs7Tjs7Ozs7CitGQzc4O0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkIgMDY0NTs7OztOOzs7OzsKK0ZDNzk7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBOT09OIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQiAwNjQ2Ozs7O047Ozs7OworRkM3QTtBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkIgMDY0OTs7OztOOzs7OzsKK0ZDN0I7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJCIDA2NEE7Ozs7Tjs7Ozs7CitGQzdDO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQxIDA2NDk7Ozs7Tjs7Ozs7CitGQzdEO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQxIDA2NEE7Ozs7Tjs7Ozs7CitGQzdFO0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQyIDA2NDk7Ozs7Tjs7Ozs7CitGQzdGO0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQyIDA2NEE7Ozs7Tjs7Ozs7CitGQzgwO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBBTEVGIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0MyAwNjI3Ozs7O047Ozs7OworRkM4MTtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTEFNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0MyAwNjQ0Ozs7O047Ozs7OworRkM4MjtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDMgMDY0NTs7OztOOzs7OzsKK0ZDODM7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDMgMDY0OTs7OztOOzs7OzsKK0ZDODQ7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDMgMDY0QTs7OztOOzs7OzsKK0ZDODU7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ0IDA2NDU7Ozs7Tjs7Ozs7CitGQzg2O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ0IDA2NDk7Ozs7Tjs7Ozs7CitGQzg3O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ0IDA2NEE7Ozs7Tjs7Ozs7CitGQzg4O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggQUxFRiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDUgMDYyNzs7OztOOzs7OzsKK0ZDODk7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NSAwNjQ1Ozs7O047Ozs7OworRkM4QTtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIFJFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDYgMDYzMTs7OztOOzs7OzsKK0ZDOEI7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBaQUlOIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NiAwNjMyOzs7O047Ozs7OworRkM4QztBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ2IDA2NDU7Ozs7Tjs7Ozs7CitGQzhEO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTk9PTiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDYgMDY0Njs7OztOOzs7OzsKK0ZDOEU7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ2IDA2NDk7Ozs7Tjs7Ozs7CitGQzhGO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NiAwNjRBOzs7O047Ozs7OworRkM5MDtBUkFCSUMgTElHQVRVUkUgQUxFRiBNQUtTVVJBIFdJVEggU1VQRVJTQ1JJUFQgQUxFRiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDkgMDY3MDs7OztOOzs7OzsKK0ZDOTE7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIFJFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NEEgMDYzMTs7OztOOzs7OzsKK0ZDOTI7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIFpBSU4gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjRBIDA2MzI7Ozs7Tjs7Ozs7CitGQzkzO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0QSAwNjQ1Ozs7O047Ozs7OworRkM5NDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggTk9PTiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NEEgMDY0Njs7OztOOzs7OzsKK0ZDOTU7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NEEgMDY0OTs7OztOOzs7OzsKK0ZDOTY7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NEEgMDY0QTs7OztOOzs7OzsKK0ZDOTc7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjI2IDA2MkM7Ozs7Tjs7Ozs7CitGQzk4O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjI2IDA2MkQ7Ozs7Tjs7Ozs7CitGQzk5O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyNiAwNjJFOzs7O047Ozs7OworRkM5QTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MjYgMDY0NTs7OztOOzs7OzsKK0ZDOUI7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggSEVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MjYgMDY0Nzs7OztOOzs7OzsKK0ZDOUM7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyOCAwNjJDOzs7O047Ozs7OworRkM5RDtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MjggMDYyRDs7OztOOzs7OzsKK0ZDOUU7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyOCAwNjJFOzs7O047Ozs7OworRkM5RjtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjI4IDA2NDU7Ozs7Tjs7Ozs7CitGQ0EwO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBIRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyOCAwNjQ3Ozs7O047Ozs7OworRkNBMTtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJBIDA2MkM7Ozs7Tjs7Ozs7CitGQ0EyO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyQSAwNjJEOzs7O047Ozs7OworRkNBMztBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJBIDA2MkU7Ozs7Tjs7Ozs7CitGQ0E0O0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkEgMDY0NTs7OztOOzs7OzsKK0ZDQTU7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEhFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJBIDA2NDc7Ozs7Tjs7Ozs7CitGQ0E2O0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJCIDA2NDU7Ozs7Tjs7Ozs7CitGQ0E3O0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkMgMDYyRDs7OztOOzs7OzsKK0ZDQTg7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZDQTk7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyRCAwNjJDOzs7O047Ozs7OworRkNBQTtBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJEIDA2NDU7Ozs7Tjs7Ozs7CitGQ0FCO0FSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJFIDA2MkM7Ozs7Tjs7Ozs7CitGQ0FDO0FSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJFIDA2NDU7Ozs7Tjs7Ozs7CitGQ0FEO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjMzIDA2MkM7Ozs7Tjs7Ozs7CitGQ0FFO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzMgMDYyRDs7OztOOzs7OzsKK0ZDQUY7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzMgMDYyRTs7OztOOzs7OzsKK0ZDQjA7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzMgMDY0NTs7OztOOzs7OzsKK0ZDQjE7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM1IDA2MkQ7Ozs7Tjs7Ozs7CitGQ0IyO0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzUgMDYyRTs7OztOOzs7OzsKK0ZDQjM7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNSAwNjQ1Ozs7O047Ozs7OworRkNCNDtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM2IDA2MkM7Ozs7Tjs7Ozs7CitGQ0I1O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNiAwNjJEOzs7O047Ozs7OworRkNCNjtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM2IDA2MkU7Ozs7Tjs7Ozs7CitGQ0I3O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzYgMDY0NTs7OztOOzs7OzsKK0ZDQjg7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM3IDA2MkQ7Ozs7Tjs7Ozs7CitGQ0I5O0FSQUJJQyBMSUdBVFVSRSBaQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzggMDY0NTs7OztOOzs7OzsKK0ZDQkE7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzOSAwNjJDOzs7O047Ozs7OworRkNCQjtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM5IDA2NDU7Ozs7Tjs7Ozs7CitGQ0JDO0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzQSAwNjJDOzs7O047Ozs7OworRkNCRDtBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2M0EgMDY0NTs7OztOOzs7OzsKK0ZDQkU7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0MSAwNjJDOzs7O047Ozs7OworRkNCRjtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDEgMDYyRDs7OztOOzs7OzsKK0ZDQzA7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0MSAwNjJFOzs7O047Ozs7OworRkNDMTtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQxIDA2NDU7Ozs7Tjs7Ozs7CitGQ0MyO0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0MiAwNjJEOzs7O047Ozs7OworRkNDMztBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQyIDA2NDU7Ozs7Tjs7Ozs7CitGQ0M0O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDMgMDYyQzs7OztOOzs7OzsKK0ZDQzU7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQzIDA2MkQ7Ozs7Tjs7Ozs7CitGQ0M2O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDMgMDYyRTs7OztOOzs7OzsKK0ZDQzc7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIExBTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQzIDA2NDQ7Ozs7Tjs7Ozs7CitGQ0M4O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDMgMDY0NTs7OztOOzs7OzsKK0ZDQzk7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NCAwNjJDOzs7O047Ozs7OworRkNDQTtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDQgMDYyRDs7OztOOzs7OzsKK0ZDQ0I7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NCAwNjJFOzs7O047Ozs7OworRkNDQztBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ0IDA2NDU7Ozs7Tjs7Ozs7CitGQ0NEO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBIRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NCAwNjQ3Ozs7O047Ozs7OworRkNDRTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NSAwNjJDOzs7O047Ozs7OworRkNDRjtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGQ0QwO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ1IDA2MkU7Ozs7Tjs7Ozs7CitGQ0QxO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGQ0QyO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ2IDA2MkM7Ozs7Tjs7Ozs7CitGQ0QzO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDYgMDYyRDs7OztOOzs7OzsKK0ZDRDQ7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDYgMDYyRTs7OztOOzs7OzsKK0ZDRDU7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDYgMDY0NTs7OztOOzs7OzsKK0ZDRDY7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBIRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NiAwNjQ3Ozs7O047Ozs7OworRkNENztBUkFCSUMgTElHQVRVUkUgSEVIIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ3IDA2MkM7Ozs7Tjs7Ozs7CitGQ0Q4O0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDcgMDY0NTs7OztOOzs7OzsKK0ZDRDk7QVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIFNVUEVSU0NSSVBUIEFMRUYgSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NyAwNjcwOzs7O047Ozs7OworRkNEQTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjRBIDA2MkM7Ozs7Tjs7Ozs7CitGQ0RCO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0QSAwNjJEOzs7O047Ozs7OworRkNEQztBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjRBIDA2MkU7Ozs7Tjs7Ozs7CitGQ0REO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NEEgMDY0NTs7OztOOzs7OzsKK0ZDREU7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjRBIDA2NDc7Ozs7Tjs7Ozs7CitGQ0RGO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MjYgMDY0NTs7OztOOzs7OzsKK0ZDRTA7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggSEVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjI2IDA2NDc7Ozs7Tjs7Ozs7CitGQ0UxO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjI4IDA2NDU7Ozs7Tjs7Ozs7CitGQ0UyO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBIRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MjggMDY0Nzs7OztOOzs7OzsKK0ZDRTM7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MkEgMDY0NTs7OztOOzs7OzsKK0ZDRTQ7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEhFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYyQSAwNjQ3Ozs7O047Ozs7OworRkNFNTtBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MkIgMDY0NTs7OztOOzs7OzsKK0ZDRTY7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBIRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MkIgMDY0Nzs7OztOOzs7OzsKK0ZDRTc7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjMzIDA2NDU7Ozs7Tjs7Ozs7CitGQ0U4O0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSEVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjMzIDA2NDc7Ozs7Tjs7Ozs7CitGQ0U5O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MzQgMDY0NTs7OztOOzs7OzsKK0ZDRUE7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjM0IDA2NDc7Ozs7Tjs7Ozs7CitGQ0VCO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBMQU0gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDMgMDY0NDs7OztOOzs7OzsKK0ZDRUM7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDMgMDY0NTs7OztOOzs7OzsKK0ZDRUQ7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDQgMDY0NTs7OztOOzs7OzsKK0ZDRUU7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQ2IDA2NDU7Ozs7Tjs7Ozs7CitGQ0VGO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQ2IDA2NDc7Ozs7Tjs7Ozs7CitGQ0YwO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjRBIDA2NDU7Ozs7Tjs7Ozs7CitGQ0YxO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NEEgMDY0Nzs7OztOOzs7OzsKK0ZDRjI7QVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIEZBVEhBIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQwIDA2NTEgMDY0RTs7OztOOzs7OzsKK0ZDRjM7QVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIERBTU1BIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQwIDA2NTEgMDY0Rjs7OztOOzs7OzsKK0ZDRjQ7QVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIEtBU1JBIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQwIDA2NTEgMDY1MDs7OztOOzs7OzsKK0ZDRjU7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzcgMDY0OTs7OztOOzs7OzsKK0ZDRjY7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzcgMDY0QTs7OztOOzs7OzsKK0ZDRjc7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzkgMDY0OTs7OztOOzs7OzsKK0ZDRjg7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzkgMDY0QTs7OztOOzs7OzsKK0ZDRjk7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzQSAwNjQ5Ozs7O047Ozs7OworRkNGQTtBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjNBIDA2NEE7Ozs7Tjs7Ozs7CitGQ0ZCO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzMyAwNjQ5Ozs7O047Ozs7OworRkNGQztBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzMgMDY0QTs7OztOOzs7OzsKK0ZDRkQ7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNCAwNjQ5Ozs7O047Ozs7OworRkNGRTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM0IDA2NEE7Ozs7Tjs7Ozs7CitGQ0ZGO0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJEIDA2NDk7Ozs7Tjs7Ozs7CitGRDAwO0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJEIDA2NEE7Ozs7Tjs7Ozs7CitGRDAxO0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyQyAwNjQ5Ozs7O047Ozs7OworRkQwMjtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkMgMDY0QTs7OztOOzs7OzsKK0ZEMDM7QVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJFIDA2NDk7Ozs7Tjs7Ozs7CitGRDA0O0FSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyRSAwNjRBOzs7O047Ozs7OworRkQwNTtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNSAwNjQ5Ozs7O047Ozs7OworRkQwNjtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNSAwNjRBOzs7O047Ozs7OworRkQwNztBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNiAwNjQ5Ozs7O047Ozs7OworRkQwODtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNiAwNjRBOzs7O047Ozs7OworRkQwOTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNCAwNjJDOzs7O047Ozs7OworRkQwQTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM0IDA2MkQ7Ozs7Tjs7Ozs7CitGRDBCO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM0IDA2MkU7Ozs7Tjs7Ozs7CitGRDBDO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM0IDA2NDU7Ozs7Tjs7Ozs7CitGRDBEO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIFJFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzQgMDYzMTs7OztOOzs7OzsKK0ZEMEU7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBSRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjMzIDA2MzE7Ozs7Tjs7Ozs7CitGRDBGO0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBSRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM1IDA2MzE7Ozs7Tjs7Ozs7CitGRDEwO0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBSRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM2IDA2MzE7Ozs7Tjs7Ozs7CitGRDExO0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM3IDA2NDk7Ozs7Tjs7Ozs7CitGRDEyO0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM3IDA2NEE7Ozs7Tjs7Ozs7CitGRDEzO0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM5IDA2NDk7Ozs7Tjs7Ozs7CitGRDE0O0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM5IDA2NEE7Ozs7Tjs7Ozs7CitGRDE1O0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2M0EgMDY0OTs7OztOOzs7OzsKK0ZEMTY7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzQSAwNjRBOzs7O047Ozs7OworRkQxNztBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzMgMDY0OTs7OztOOzs7OzsKK0ZEMTg7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjMzIDA2NEE7Ozs7Tjs7Ozs7CitGRDE5O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzQgMDY0OTs7OztOOzs7OzsKK0ZEMUE7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNCAwNjRBOzs7O047Ozs7OworRkQxQjtBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyRCAwNjQ5Ozs7O047Ozs7OworRkQxQztBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyRCAwNjRBOzs7O047Ozs7OworRkQxRDtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkMgMDY0OTs7OztOOzs7OzsKK0ZEMUU7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJDIDA2NEE7Ozs7Tjs7Ozs7CitGRDFGO0FSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyRSAwNjQ5Ozs7O047Ozs7OworRkQyMDtBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkUgMDY0QTs7OztOOzs7OzsKK0ZEMjE7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzUgMDY0OTs7OztOOzs7OzsKK0ZEMjI7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzUgMDY0QTs7OztOOzs7OzsKK0ZEMjM7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzYgMDY0OTs7OztOOzs7OzsKK0ZEMjQ7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzYgMDY0QTs7OztOOzs7OzsKK0ZEMjU7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSkVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzQgMDYyQzs7OztOOzs7OzsKK0ZEMjY7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEFIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNCAwNjJEOzs7O047Ozs7OworRkQyNztBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBLSEFIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNCAwNjJFOzs7O047Ozs7OworRkQyODtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNCAwNjQ1Ozs7O047Ozs7OworRkQyOTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBSRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM0IDA2MzE7Ozs7Tjs7Ozs7CitGRDJBO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggUkVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzMyAwNjMxOzs7O047Ozs7OworRkQyQjtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggUkVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNSAwNjMxOzs7O047Ozs7OworRkQyQztBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggUkVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNiAwNjMxOzs7O047Ozs7OworRkQyRDtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzQgMDYyQzs7OztOOzs7OzsKK0ZEMkU7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzQgMDYyRDs7OztOOzs7OzsKK0ZEMkY7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM0IDA2MkU7Ozs7Tjs7Ozs7CitGRDMwO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNCAwNjQ1Ozs7O047Ozs7OworRkQzMTtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEhFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjMzIDA2NDc7Ozs7Tjs7Ozs7CitGRDMyO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM0IDA2NDc7Ozs7Tjs7Ozs7CitGRDMzO0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzcgMDY0NTs7OztOOzs7OzsKK0ZEMzQ7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBKRUVNIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjMzIDA2MkM7Ozs7Tjs7Ozs7CitGRDM1O0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSEFIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjMzIDA2MkQ7Ozs7Tjs7Ozs7CitGRDM2O0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggS0hBSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYzMyAwNjJFOzs7O047Ozs7OworRkQzNztBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBKRUVNIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjM0IDA2MkM7Ozs7Tjs7Ozs7CitGRDM4O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhBSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYzNCAwNjJEOzs7O047Ozs7OworRkQzOTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBLSEFIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjM0IDA2MkU7Ozs7Tjs7Ozs7CitGRDNBO0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjM3IDA2NDU7Ozs7Tjs7Ozs7CitGRDNCO0FSQUJJQyBMSUdBVFVSRSBaQUggV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjM4IDA2NDU7Ozs7Tjs7Ozs7CitGRDNDO0FSQUJJQyBMSUdBVFVSRSBBTEVGIFdJVEggRkFUSEFUQU4gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI3IDA2NEI7Ozs7Tjs7Ozs7CitGRDNEO0FSQUJJQyBMSUdBVFVSRSBBTEVGIFdJVEggRkFUSEFUQU4gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI3IDA2NEI7Ozs7Tjs7Ozs7CitGRDNFO09STkFURSBMRUZUIFBBUkVOVEhFU0lTO1BzOzA7T047Ozs7O047Ozs7OworRkQzRjtPUk5BVEUgUklHSFQgUEFSRU5USEVTSVM7UGU7MDtPTjs7Ozs7Tjs7Ozs7CitGRDUwO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBKRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJBIDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZENTE7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEhBSCBXSVRIIEpFRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJBIDA2MkQgMDYyQzs7OztOOzs7OzsKK0ZENTI7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEhBSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyQSAwNjJEIDA2MkM7Ozs7Tjs7Ozs7CitGRDUzO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkEgMDYyRCAwNjQ1Ozs7O047Ozs7OworRkQ1NDtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyQSAwNjJFIDA2NDU7Ozs7Tjs7Ozs7CitGRDU1O0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJBIDA2NDUgMDYyQzs7OztOOzs7OzsKK0ZENTY7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyQSAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDU3O0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJBIDA2NDUgMDYyRTs7OztOOzs7OzsKK0ZENTg7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBNRUVNIFdJVEggSEFIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQyAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDU5O0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJDIDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZENUE7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJEIDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZENUI7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIE1FRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJEIDA2NDUgMDY0OTs7OztOOzs7OzsKK0ZENUM7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBIQUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzMgMDYyRCAwNjJDOzs7O047Ozs7OworRkQ1RDtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEpFRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzMyAwNjJDIDA2MkQ7Ozs7Tjs7Ozs7CitGRDVFO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSkVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzMgMDYyQyAwNjQ5Ozs7O047Ozs7OworRkQ1RjtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gV0lUSCBIQUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjMzIDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZENjA7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBNRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzMgMDY0NSAwNjJEOzs7O047Ozs7OworRkQ2MTtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzMgMDY0NSAwNjJDOzs7O047Ozs7OworRkQ2MjtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzMyAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDYzO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzMyAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDY0O0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBIQUggV0lUSCBIQUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM1IDA2MkQgMDYyRDs7OztOOzs7OzsKK0ZENjU7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEhBSCBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM1IDA2MkQgMDYyRDs7OztOOzs7OzsKK0ZENjY7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNSAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDY3O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhBSCBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM0IDA2MkQgMDY0NTs7OztOOzs7OzsKK0ZENjg7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM0IDA2MkQgMDY0NTs7OztOOzs7OzsKK0ZENjk7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzQgMDYyQyAwNjRBOzs7O047Ozs7OworRkQ2QTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIFdJVEggS0hBSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzQgMDY0NSAwNjJFOzs7O047Ozs7OworRkQ2QjtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM0IDA2NDUgMDYyRTs7OztOOzs7OzsKK0ZENkM7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM0IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZENkQ7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggTUVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNCAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDZFO0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM2IDA2MkQgMDY0OTs7OztOOzs7OzsKK0ZENkY7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEtIQUggV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNiAwNjJFIDA2NDU7Ozs7Tjs7Ozs7CitGRDcwO0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBLSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM2IDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZENzE7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gV0lUSCBIQUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM3IDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZENzI7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNyAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDczO0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM3IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZENzQ7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM3IDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZENzU7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIEpFRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzOSAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGRDc2O0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzkgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ3NztBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggTUVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzOSAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDc4O0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBNRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzOSAwNjQ1IDA2NDk7Ozs7Tjs7Ozs7CitGRDc5O0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzQSAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDdBO0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjNBIDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZEN0I7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2M0EgMDY0NSAwNjQ5Ozs7O047Ozs7OworRkQ3QztBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggS0hBSCBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQxIDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZEN0Q7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEtIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDEgMDYyRSAwNjQ1Ozs7O047Ozs7OworRkQ3RTtBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggTUVFTSBXSVRIIEhBSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDIgMDY0NSAwNjJEOzs7O047Ozs7OworRkQ3RjtBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQyIDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZEODA7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEhBSCBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ0IDA2MkQgMDY0NTs7OztOOzs7OzsKK0ZEODE7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDQgMDYyRCAwNjRBOzs7O047Ozs7OworRkQ4MjtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSEFIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NCAwNjJEIDA2NDk7Ozs7Tjs7Ozs7CitGRDgzO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBKRUVNIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ0IDA2MkMgMDYyQzs7OztOOzs7OzsKK0ZEODQ7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gV0lUSCBKRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NCAwNjJDIDA2MkM7Ozs7Tjs7Ozs7CitGRDg1O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBLSEFIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDQgMDYyRSAwNjQ1Ozs7O047Ozs7OworRkQ4NjtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NCAwNjJFIDA2NDU7Ozs7Tjs7Ozs7CitGRDg3O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIFdJVEggSEFIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NCAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDg4O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDQgMDY0NSAwNjJEOzs7O047Ozs7OworRkQ4OTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEhBSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NSAwNjJEIDA2MkM7Ozs7Tjs7Ozs7CitGRDhBO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ1IDA2MkQgMDY0NTs7OztOOzs7OzsKK0ZEOEI7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ1IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEOEM7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBKRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDUgMDYyQyAwNjJEOzs7O047Ozs7OworRkQ4RDtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEpFRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDUgMDYyQyAwNjQ1Ozs7O047Ozs7OworRkQ4RTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEtIQUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDUgMDYyRSAwNjJDOzs7O047Ozs7OworRkQ4RjtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEtIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDUgMDYyRSAwNjQ1Ozs7O047Ozs7OworRkQ5MjtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEpFRU0gV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDUgMDYyQyAwNjJFOzs7O047Ozs7OworRkQ5MztBUkFCSUMgTElHQVRVUkUgSEVIIFdJVEggTUVFTSBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NyAwNjQ1IDA2MkM7Ozs7Tjs7Ozs7CitGRDk0O0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ3IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZEOTU7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDYgMDYyRCAwNjQ1Ozs7O047Ozs7OworRkQ5NjtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEhBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDYgMDYyRCAwNjQ5Ozs7O047Ozs7OworRkQ5NztBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NiAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGRDk4O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSkVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NiAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGRDk5O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSkVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDYgMDYyQyAwNjQ5Ozs7O047Ozs7OworRkQ5QTtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ2IDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZEOUI7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBNRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NiAwNjQ1IDA2NDk7Ozs7Tjs7Ozs7CitGRDlDO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NEEgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ5RDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggTUVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0QSAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDlFO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBLSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyOCAwNjJFIDA2NEE7Ozs7Tjs7Ozs7CitGRDlGO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBKRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQSAwNjJDIDA2NEE7Ozs7Tjs7Ozs7CitGREEwO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBKRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQSAwNjJDIDA2NDk7Ozs7Tjs7Ozs7CitGREExO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBLSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQSAwNjJFIDA2NEE7Ozs7Tjs7Ozs7CitGREEyO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBLSEFIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQSAwNjJFIDA2NDk7Ozs7Tjs7Ozs7CitGREEzO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQSAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGREE0O0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQSAwNjQ1IDA2NDk7Ozs7Tjs7Ozs7CitGREE1O0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkMgMDY0NSAwNjRBOzs7O047Ozs7OworRkRBNjtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIEhBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkMgMDYyRCAwNjQ5Ozs7O047Ozs7OworRkRBNztBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIE1FRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJDIDA2NDUgMDY0OTs7OztOOzs7OzsKK0ZEQTg7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBLSEFIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzMyAwNjJFIDA2NDk7Ozs7Tjs7Ozs7CitGREE5O0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM1IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEQUE7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNCAwNjJEIDA2NEE7Ozs7Tjs7Ozs7CitGREFCO0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM2IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEQUM7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ0IDA2MkMgMDY0QTs7OztOOzs7OzsKK0ZEQUQ7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ0IDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZEQUU7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NEEgMDYyRCAwNjRBOzs7O047Ozs7OworRkRBRjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NEEgMDYyQyAwNjRBOzs7O047Ozs7OworRkRCMDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NEEgMDY0NSAwNjRBOzs7O047Ozs7OworRkRCMTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ1IDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZEQjI7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQyIDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZEQjM7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ2IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEQjQ7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIE1FRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0MiAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGREI1O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDQgMDYyRCAwNjQ1Ozs7O047Ozs7OworRkRCNjtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzkgMDY0NSAwNjRBOzs7O047Ozs7OworRkRCNztBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDMgMDY0NSAwNjRBOzs7O047Ozs7OworRkRCODtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NiAwNjJDIDA2MkQ7Ozs7Tjs7Ozs7CitGREI5O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggS0hBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDUgMDYyRSAwNjRBOzs7O047Ozs7OworRkRCQTtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSkVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NCAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGREJCO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDMgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkRCQztBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSkVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ0IDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZEQkQ7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBKRUVNIFdJVEggSEFIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NiAwNjJDIDA2MkQ7Ozs7Tjs7Ozs7CitGREJFO0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQyAwNjJEIDA2NEE7Ozs7Tjs7Ozs7CitGREJGO0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBKRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyRCAwNjJDIDA2NEE7Ozs7Tjs7Ozs7CitGREMwO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDUgMDYyQyAwNjRBOzs7O047Ozs7OworRkRDMTtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDEgMDY0NSAwNjRBOzs7O047Ozs7OworRkRDMjtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyOCAwNjJEIDA2NEE7Ozs7Tjs7Ozs7CitGREMzO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQzIDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZEQzQ7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIEpFRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzkgMDYyQyAwNjQ1Ozs7O047Ozs7OworRkRDNTtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggTUVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNSAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGREM2O0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggS0hBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzMgMDYyRSAwNjRBOzs7O047Ozs7OworRkRDNztBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ2IDA2MkMgMDY0QTs7OztOOzs7OzsKK0ZERjA7QVJBQklDIExJR0FUVVJFIFNBTExBIFVTRUQgQVMgS09SQU5JQyBTVE9QIFNJR04gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM1IDA2NDQgMDZEMjs7OztOOzs7OzsKK0ZERjE7QVJBQklDIExJR0FUVVJFIFFBTEEgVVNFRCBBUyBLT1JBTklDIFNUT1AgU0lHTiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDIgMDY0NCAwNkQyOzs7O047Ozs7OworRkRGMjtBUkFCSUMgTElHQVRVUkUgQUxMQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI3IDA2NDQgMDY0NCAwNjQ3Ozs7O047Ozs7OworRkRGMztBUkFCSUMgTElHQVRVUkUgQUtCQVIgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI3IDA2NDMgMDYyOCAwNjMxOzs7O047Ozs7OworRkRGNDtBUkFCSUMgTElHQVRVUkUgTU9IQU1NQUQgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ1IDA2MkQgMDY0NSAwNjJGOzs7O047Ozs7OworRkRGNTtBUkFCSUMgTElHQVRVUkUgU0FMQU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM1IDA2NDQgMDYzOSAwNjQ1Ozs7O047Ozs7OworRkRGNjtBUkFCSUMgTElHQVRVUkUgUkFTT1VMIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzMSAwNjMzIDA2NDggMDY0NDs7OztOOzs7OzsKK0ZERjc7QVJBQklDIExJR0FUVVJFIEFMQVlIRSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzkgMDY0NCAwNjRBIDA2NDc7Ozs7Tjs7Ozs7CitGREY4O0FSQUJJQyBMSUdBVFVSRSBXQVNBTExBTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDggMDYzMyAwNjQ0IDA2NDU7Ozs7Tjs7Ozs7CitGREY5O0FSQUJJQyBMSUdBVFVSRSBTQUxMQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzUgMDY0NCAwNjQ5Ozs7O047Ozs7OworRkRGQTtBUkFCSUMgTElHQVRVUkUgU0FMTEFMTEFIT1UgQUxBWUhFIFdBU0FMTEFNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzUgMDY0NCAwNjQ5IDAwMjAgMDYyNyAwNjQ0IDA2NDQgMDY0NyAwMDIwIDA2MzkgMDY0NCAwNjRBIDA2NDcgMDAyMCAwNjQ4IDA2MzMgMDY0NCAwNjQ1Ozs7O047QVJBQklDIExFVFRFUiBTQUxMQUxMQUhPVSBBTEFZSEUgV0FTQUxMQU07Ozs7CitGREZCO0FSQUJJQyBMSUdBVFVSRSBKQUxMQUpBTEFMT1VIT1U7TG87MDtSOzxpc29sYXRlZD4gMDYyQyAwNjQ0IDAwMjAgMDYyQyAwNjQ0IDA2MjcgMDY0NCAwNjQ3Ozs7O047QVJBQklDIExFVFRFUiBKQUxMQUpBTEFMT1VIT1U7Ozs7CitGRTIwO0NPTUJJTklORyBMSUdBVFVSRSBMRUZUIEhBTEY7TW47MjMwO09OOzs7OztOOzs7OzsKK0ZFMjE7Q09NQklOSU5HIExJR0FUVVJFIFJJR0hUIEhBTEY7TW47MjMwO09OOzs7OztOOzs7OzsKK0ZFMjI7Q09NQklOSU5HIERPVUJMRSBUSUxERSBMRUZUIEhBTEY7TW47MjMwO09OOzs7OztOOzs7OzsKK0ZFMjM7Q09NQklOSU5HIERPVUJMRSBUSUxERSBSSUdIVCBIQUxGO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CitGRTMwO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBUV08gRE9UIExFQURFUjtQbzswO09OOzx2ZXJ0aWNhbD4gMjAyNTs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBUV08gRE9UIExFQURFUjs7OzsKK0ZFMzE7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIEVNIERBU0g7UGQ7MDtPTjs8dmVydGljYWw+IDIwMTQ7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgRU0gREFTSDs7OzsKK0ZFMzI7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIEVOIERBU0g7UGQ7MDtPTjs8dmVydGljYWw+IDIwMTM7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgRU4gREFTSDs7OzsKK0ZFMzM7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExPVyBMSU5FO1BjOzA7T047PHZlcnRpY2FsPiAwMDVGOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIFNQQUNJTkcgVU5ERVJTQ09SRTs7OzsKK0ZFMzQ7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFdBVlkgTE9XIExJTkU7UGM7MDtPTjs8dmVydGljYWw+IDAwNUY7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgU1BBQ0lORyBXQVZZIFVOREVSU0NPUkU7Ozs7CitGRTM1O1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIFBBUkVOVEhFU0lTO1BzOzA7T047PHZlcnRpY2FsPiAwMDI4Ozs7O047R0xZUEggRk9SIFZFUlRJQ0FMIE9QRU5JTkcgUEFSRU5USEVTSVM7Ozs7CitGRTM2O1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBQQVJFTlRIRVNJUztQZTswO09OOzx2ZXJ0aWNhbD4gMDAyOTs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBDTE9TSU5HIFBBUkVOVEhFU0lTOzs7OworRkUzNztQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBDVVJMWSBCUkFDS0VUO1BzOzA7T047PHZlcnRpY2FsPiAwMDdCOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIE9QRU5JTkcgQ1VSTFkgQlJBQ0tFVDs7OzsKK0ZFMzg7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFJJR0hUIENVUkxZIEJSQUNLRVQ7UGU7MDtPTjs8dmVydGljYWw+IDAwN0Q7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgQ0xPU0lORyBDVVJMWSBCUkFDS0VUOzs7OworRkUzOTtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUO1BzOzA7T047PHZlcnRpY2FsPiAzMDE0Ozs7O047R0xZUEggRk9SIFZFUlRJQ0FMIE9QRU5JTkcgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKK0ZFM0E7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFJJR0hUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7UGU7MDtPTjs8dmVydGljYWw+IDMwMTU7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgQ0xPU0lORyBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUOzs7OworRkUzQjtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBCTEFDSyBMRU5USUNVTEFSIEJSQUNLRVQ7UHM7MDtPTjs8dmVydGljYWw+IDMwMTA7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgT1BFTklORyBCTEFDSyBMRU5USUNVTEFSIEJSQUNLRVQ7Ozs7CitGRTNDO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBCTEFDSyBMRU5USUNVTEFSIEJSQUNLRVQ7UGU7MDtPTjs8dmVydGljYWw+IDMwMTE7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgQ0xPU0lORyBCTEFDSyBMRU5USUNVTEFSIEJSQUNLRVQ7Ozs7CitGRTNEO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIERPVUJMRSBBTkdMRSBCUkFDS0VUO1BzOzA7T047PHZlcnRpY2FsPiAzMDBBOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIE9QRU5JTkcgRE9VQkxFIEFOR0xFIEJSQUNLRVQ7Ozs7CitGRTNFO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBET1VCTEUgQU5HTEUgQlJBQ0tFVDtQZTswO09OOzx2ZXJ0aWNhbD4gMzAwQjs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBDTE9TSU5HIERPVUJMRSBBTkdMRSBCUkFDS0VUOzs7OworRkUzRjtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBBTkdMRSBCUkFDS0VUO1BzOzA7T047PHZlcnRpY2FsPiAzMDA4Ozs7O047R0xZUEggRk9SIFZFUlRJQ0FMIE9QRU5JTkcgQU5HTEUgQlJBQ0tFVDs7OzsKK0ZFNDA7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFJJR0hUIEFOR0xFIEJSQUNLRVQ7UGU7MDtPTjs8dmVydGljYWw+IDMwMDk7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgQ0xPU0lORyBBTkdMRSBCUkFDS0VUOzs7OworRkU0MTtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBDT1JORVIgQlJBQ0tFVDtQczswO09OOzx2ZXJ0aWNhbD4gMzAwQzs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBPUEVOSU5HIENPUk5FUiBCUkFDS0VUOzs7OworRkU0MjtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgQ09STkVSIEJSQUNLRVQ7UGU7MDtPTjs8dmVydGljYWw+IDMwMEQ7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgQ0xPU0lORyBDT1JORVIgQlJBQ0tFVDs7OzsKK0ZFNDM7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgV0hJVEUgQ09STkVSIEJSQUNLRVQ7UHM7MDtPTjs8dmVydGljYWw+IDMwMEU7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgT1BFTklORyBXSElURSBDT1JORVIgQlJBQ0tFVDs7OzsKK0ZFNDQ7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFJJR0hUIFdISVRFIENPUk5FUiBCUkFDS0VUO1BlOzA7T047PHZlcnRpY2FsPiAzMDBGOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIENMT1NJTkcgV0hJVEUgQ09STkVSIEJSQUNLRVQ7Ozs7CitGRTQ5O0RBU0hFRCBPVkVSTElORTtQbzswO09OOzxjb21wYXQ+IDIwM0U7Ozs7TjtTUEFDSU5HIERBU0hFRCBPVkVSU0NPUkU7Ozs7CitGRTRBO0NFTlRSRUxJTkUgT1ZFUkxJTkU7UG87MDtPTjs8Y29tcGF0PiAyMDNFOzs7O047U1BBQ0lORyBDRU5URVJMSU5FIE9WRVJTQ09SRTs7OzsKK0ZFNEI7V0FWWSBPVkVSTElORTtQbzswO09OOzxjb21wYXQ+IDIwM0U7Ozs7TjtTUEFDSU5HIFdBVlkgT1ZFUlNDT1JFOzs7OworRkU0QztET1VCTEUgV0FWWSBPVkVSTElORTtQbzswO09OOzxjb21wYXQ+IDIwM0U7Ozs7TjtTUEFDSU5HIERPVUJMRSBXQVZZIE9WRVJTQ09SRTs7OzsKK0ZFNEQ7REFTSEVEIExPVyBMSU5FO1BjOzA7T047PGNvbXBhdD4gMDA1Rjs7OztOO1NQQUNJTkcgREFTSEVEIFVOREVSU0NPUkU7Ozs7CitGRTRFO0NFTlRSRUxJTkUgTE9XIExJTkU7UGM7MDtPTjs8Y29tcGF0PiAwMDVGOzs7O047U1BBQ0lORyBDRU5URVJMSU5FIFVOREVSU0NPUkU7Ozs7CitGRTRGO1dBVlkgTE9XIExJTkU7UGM7MDtPTjs8Y29tcGF0PiAwMDVGOzs7O047U1BBQ0lORyBXQVZZIFVOREVSU0NPUkU7Ozs7CitGRTUwO1NNQUxMIENPTU1BO1BvOzA7T047PHNtYWxsPiAwMDJDOzs7O047Ozs7OworRkU1MTtTTUFMTCBJREVPR1JBUEhJQyBDT01NQTtQbzswO09OOzxzbWFsbD4gMzAwMTs7OztOOzs7OzsKK0ZFNTI7U01BTEwgRlVMTCBTVE9QO1BvOzA7T047PHNtYWxsPiAwMDJFOzs7O047U01BTEwgUEVSSU9EOzs7OworRkU1NDtTTUFMTCBTRU1JQ09MT047UG87MDtPTjs8c21hbGw+IDAwM0I7Ozs7Tjs7Ozs7CitGRTU1O1NNQUxMIENPTE9OO1BvOzA7T047PHNtYWxsPiAwMDNBOzs7O047Ozs7OworRkU1NjtTTUFMTCBRVUVTVElPTiBNQVJLO1BvOzA7T047PHNtYWxsPiAwMDNGOzs7O047Ozs7OworRkU1NztTTUFMTCBFWENMQU1BVElPTiBNQVJLO1BvOzA7T047PHNtYWxsPiAwMDIxOzs7O047Ozs7OworRkU1ODtTTUFMTCBFTSBEQVNIO1BkOzA7T047PHNtYWxsPiAyMDE0Ozs7O047Ozs7OworRkU1OTtTTUFMTCBMRUZUIFBBUkVOVEhFU0lTO1BzOzA7T047PHNtYWxsPiAwMDI4Ozs7O047U01BTEwgT1BFTklORyBQQVJFTlRIRVNJUzs7OzsKK0ZFNUE7U01BTEwgUklHSFQgUEFSRU5USEVTSVM7UGU7MDtPTjs8c21hbGw+IDAwMjk7Ozs7TjtTTUFMTCBDTE9TSU5HIFBBUkVOVEhFU0lTOzs7OworRkU1QjtTTUFMTCBMRUZUIENVUkxZIEJSQUNLRVQ7UHM7MDtPTjs8c21hbGw+IDAwN0I7Ozs7TjtTTUFMTCBPUEVOSU5HIENVUkxZIEJSQUNLRVQ7Ozs7CitGRTVDO1NNQUxMIFJJR0hUIENVUkxZIEJSQUNLRVQ7UGU7MDtPTjs8c21hbGw+IDAwN0Q7Ozs7TjtTTUFMTCBDTE9TSU5HIENVUkxZIEJSQUNLRVQ7Ozs7CitGRTVEO1NNQUxMIExFRlQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQczswO09OOzxzbWFsbD4gMzAxNDs7OztOO1NNQUxMIE9QRU5JTkcgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKK0ZFNUU7U01BTEwgUklHSFQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQZTswO09OOzxzbWFsbD4gMzAxNTs7OztOO1NNQUxMIENMT1NJTkcgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKK0ZFNUY7U01BTEwgTlVNQkVSIFNJR047UG87MDtPTjs8c21hbGw+IDAwMjM7Ozs7Tjs7Ozs7CitGRTYwO1NNQUxMIEFNUEVSU0FORDtQbzswO09OOzxzbWFsbD4gMDAyNjs7OztOOzs7OzsKK0ZFNjE7U01BTEwgQVNURVJJU0s7UG87MDtPTjs8c21hbGw+IDAwMkE7Ozs7Tjs7Ozs7CitGRTYyO1NNQUxMIFBMVVMgU0lHTjtTbTswO09OOzxzbWFsbD4gMDAyQjs7OztOOzs7OzsKK0ZFNjM7U01BTEwgSFlQSEVOLU1JTlVTO1BkOzA7T047PHNtYWxsPiAwMDJEOzs7O047Ozs7OworRkU2NDtTTUFMTCBMRVNTLVRIQU4gU0lHTjtTbTswO09OOzxzbWFsbD4gMDAzQzs7OztOOzs7OzsKK0ZFNjU7U01BTEwgR1JFQVRFUi1USEFOIFNJR047U207MDtPTjs8c21hbGw+IDAwM0U7Ozs7Tjs7Ozs7CitGRTY2O1NNQUxMIEVRVUFMUyBTSUdOO1NtOzA7T047PHNtYWxsPiAwMDNEOzs7O047Ozs7OworRkU2ODtTTUFMTCBSRVZFUlNFIFNPTElEVVM7UG87MDtPTjs8c21hbGw+IDAwNUM7Ozs7TjtTTUFMTCBCQUNLU0xBU0g7Ozs7CitGRTY5O1NNQUxMIERPTExBUiBTSUdOO1NjOzA7T047PHNtYWxsPiAwMDI0Ozs7O047Ozs7OworRkU2QTtTTUFMTCBQRVJDRU5UIFNJR047UG87MDtPTjs8c21hbGw+IDAwMjU7Ozs7Tjs7Ozs7CitGRTZCO1NNQUxMIENPTU1FUkNJQUwgQVQ7UG87MDtPTjs8c21hbGw+IDAwNDA7Ozs7Tjs7Ozs7CitGRTcwO0FSQUJJQyBGQVRIQVRBTiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDAwMjAgMDY0Qjs7OztOO0FSQUJJQyBTUEFDSU5HIEZBVEhBVEFOOzs7OworRkU3MTtBUkFCSUMgVEFUV0VFTCBXSVRIIEZBVEhBVEFOIEFCT1ZFO0xvOzA7Ujs8bWVkaWFsPiAwNjQwIDA2NEI7Ozs7TjtBUkFCSUMgRkFUSEFUQU4gT04gVEFUV0VFTDs7OzsKK0ZFNzI7QVJBQklDIERBTU1BVEFOIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDAyMCAwNjRDOzs7O047QVJBQklDIFNQQUNJTkcgREFNTUFUQU47Ozs7CitGRTc0O0FSQUJJQyBLQVNSQVRBTiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDAwMjAgMDY0RDs7OztOO0FSQUJJQyBTUEFDSU5HIEtBU1JBVEFOOzs7OworRkU3NjtBUkFCSUMgRkFUSEEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwMDIwIDA2NEU7Ozs7TjtBUkFCSUMgU1BBQ0lORyBGQVRIQUg7Ozs7CitGRTc3O0FSQUJJQyBGQVRIQSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0MCAwNjRFOzs7O047QVJBQklDIEZBVEhBSCBPTiBUQVRXRUVMOzs7OworRkU3ODtBUkFCSUMgREFNTUEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwMDIwIDA2NEY7Ozs7TjtBUkFCSUMgU1BBQ0lORyBEQU1NQUg7Ozs7CitGRTc5O0FSQUJJQyBEQU1NQSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0MCAwNjRGOzs7O047QVJBQklDIERBTU1BSCBPTiBUQVRXRUVMOzs7OworRkU3QTtBUkFCSUMgS0FTUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwMDIwIDA2NTA7Ozs7TjtBUkFCSUMgU1BBQ0lORyBLQVNSQUg7Ozs7CitGRTdCO0FSQUJJQyBLQVNSQSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0MCAwNjUwOzs7O047QVJBQklDIEtBU1JBSCBPTiBUQVRXRUVMOzs7OworRkU3QztBUkFCSUMgU0hBRERBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDAyMCAwNjUxOzs7O047QVJBQklDIFNQQUNJTkcgU0hBRERBSDs7OzsKK0ZFN0Q7QVJBQklDIFNIQUREQSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0MCAwNjUxOzs7O047QVJBQklDIFNIQUREQUggT04gVEFUV0VFTDs7OzsKK0ZFN0U7QVJBQklDIFNVS1VOIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDAyMCAwNjUyOzs7O047QVJBQklDIFNQQUNJTkcgU1VLVU47Ozs7CitGRTdGO0FSQUJJQyBTVUtVTiBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0MCAwNjUyOzs7O047QVJBQklDIFNVS1VOIE9OIFRBVFdFRUw7Ozs7CitGRTgwO0FSQUJJQyBMRVRURVIgSEFNWkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjIxOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEhBTVpBSDs7OzsKK0ZFODE7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggTUFEREEgQUJPVkUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjIyOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIE1BRERBSCBPTiBBTEVGOzs7OworRkU4MjtBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBNQUREQSBBQk9WRSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjI7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIE1BRERBSCBPTiBBTEVGOzs7OworRkU4MztBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBIQU1aQSBBQk9WRSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjM7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSEFNWkFIIE9OIEFMRUY7Ozs7CitGRTg0O0FSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEFCT1ZFIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyMzs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgSEFNWkFIIE9OIEFMRUY7Ozs7CitGRTg1O0FSQUJJQyBMRVRURVIgV0FXIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI0Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEhBTVpBSCBPTiBXQVc7Ozs7CitGRTg2O0FSQUJJQyBMRVRURVIgV0FXIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI0Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBIQU1aQUggT04gV0FXOzs7OworRkU4NztBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBIQU1aQSBCRUxPVyBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjU7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSEFNWkFIIFVOREVSIEFMRUY7Ozs7CitGRTg4O0FSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEJFTE9XIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyNTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgSEFNWkFIIFVOREVSIEFMRUY7Ozs7CitGRTg5O0FSQUJJQyBMRVRURVIgWUVIIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI2Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEhBTVpBSCBPTiBZQTs7OzsKK0ZFOEE7QVJBQklDIExFVFRFUiBZRUggV0lUSCBIQU1aQSBBQk9WRSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjY7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEhBTVpBSCBPTiBZQTs7OzsKK0ZFOEI7QVJBQklDIExFVFRFUiBZRUggV0lUSCBIQU1aQSBBQk9WRSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjI2Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIEhBTVpBSCBPTiBZQTs7OzsKK0ZFOEM7QVJBQklDIExFVFRFUiBZRUggV0lUSCBIQU1aQSBBQk9WRSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYyNjs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEhBTVpBSCBPTiBZQTs7OzsKK0ZFOEQ7QVJBQklDIExFVFRFUiBBTEVGIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyNzs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBBTEVGOzs7OworRkU4RTtBUkFCSUMgTEVUVEVSIEFMRUYgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI3Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBBTEVGOzs7OworRkU4RjtBUkFCSUMgTEVUVEVSIEJFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2Mjg7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgQkFBOzs7OworRkU5MDtBUkFCSUMgTEVUVEVSIEJFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2Mjg7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEJBQTs7OzsKK0ZFOTE7QVJBQklDIExFVFRFUiBCRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyODs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBCQUE7Ozs7CitGRTkyO0FSQUJJQyBMRVRURVIgQkVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjI4Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgQkFBOzs7OworRkU5MztBUkFCSUMgTEVUVEVSIFRFSCBNQVJCVVRBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyOTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBUQUEgTUFSQlVUQUg7Ozs7CitGRTk0O0FSQUJJQyBMRVRURVIgVEVIIE1BUkJVVEEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI5Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBUQUEgTUFSQlVUQUg7Ozs7CitGRTk1O0FSQUJJQyBMRVRURVIgVEVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyQTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBUQUE7Ozs7CitGRTk2O0FSQUJJQyBMRVRURVIgVEVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgVEFBOzs7OworRkU5NztBUkFCSUMgTEVUVEVSIFRFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJBOzs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIFRBQTs7OzsKK0ZFOTg7QVJBQklDIExFVFRFUiBURUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MkE7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBUQUE7Ozs7CitGRTk5O0FSQUJJQyBMRVRURVIgVEhFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkI7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgVEhBQTs7OzsKK0ZFOUE7QVJBQklDIExFVFRFUiBUSEVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQjs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgVEhBQTs7OzsKK0ZFOUI7QVJBQklDIExFVFRFUiBUSEVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkI7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgVEhBQTs7OzsKK0ZFOUM7QVJBQklDIExFVFRFUiBUSEVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjJCOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgVEhBQTs7OzsKK0ZFOUQ7QVJBQklDIExFVFRFUiBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyQzs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBKRUVNOzs7OworRkU5RTtBUkFCSUMgTEVUVEVSIEpFRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJDOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBKRUVNOzs7OworRkU5RjtBUkFCSUMgTEVUVEVSIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyQzs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBKRUVNOzs7OworRkVBMDtBUkFCSUMgTEVUVEVSIEpFRU0gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MkM7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBKRUVNOzs7OworRkVBMTtBUkFCSUMgTEVUVEVSIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkQ7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSEFBOzs7OworRkVBMjtBUkFCSUMgTEVUVEVSIEhBSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkQ7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEhBQTs7OzsKK0ZFQTM7QVJBQklDIExFVFRFUiBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyRDs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBIQUE7Ozs7CitGRUE0O0FSQUJJQyBMRVRURVIgSEFIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjJEOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgSEFBOzs7OworRkVBNTtBUkFCSUMgTEVUVEVSIEtIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJFOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEtIQUE7Ozs7CitGRUE2O0FSQUJJQyBMRVRURVIgS0hBSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkU7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEtIQUE7Ozs7CitGRUE3O0FSQUJJQyBMRVRURVIgS0hBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJFOzs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIEtIQUE7Ozs7CitGRUE4O0FSQUJJQyBMRVRURVIgS0hBSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYyRTs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEtIQUE7Ozs7CitGRUE5O0FSQUJJQyBMRVRURVIgREFMIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyRjs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBEQUw7Ozs7CitGRUFBO0FSQUJJQyBMRVRURVIgREFMIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyRjs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgREFMOzs7OworRkVBQjtBUkFCSUMgTEVUVEVSIFRIQUwgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjMwOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFRIQUw7Ozs7CitGRUFDO0FSQUJJQyBMRVRURVIgVEhBTCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzA7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFRIQUw7Ozs7CitGRUFEO0FSQUJJQyBMRVRURVIgUkVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzMTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBSQTs7OzsKK0ZFQUU7QVJBQklDIExFVFRFUiBSRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjMxOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBSQTs7OzsKK0ZFQUY7QVJBQklDIExFVFRFUiBaQUlOIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzMjs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBaQUlOOzs7OworRkVCMDtBUkFCSUMgTEVUVEVSIFpBSU4gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjMyOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBaQUlOOzs7OworRkVCMTtBUkFCSUMgTEVUVEVSIFNFRU4gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjMzOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFNFRU47Ozs7CitGRUIyO0FSQUJJQyBMRVRURVIgU0VFTiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzM7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFNFRU47Ozs7CitGRUIzO0FSQUJJQyBMRVRURVIgU0VFTiBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjMzOzs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIFNFRU47Ozs7CitGRUI0O0FSQUJJQyBMRVRURVIgU0VFTiBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYzMzs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIFNFRU47Ozs7CitGRUI1O0FSQUJJQyBMRVRURVIgU0hFRU4gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM0Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFNIRUVOOzs7OworRkVCNjtBUkFCSUMgTEVUVEVSIFNIRUVOIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNDs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgU0hFRU47Ozs7CitGRUI3O0FSQUJJQyBMRVRURVIgU0hFRU4gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNDs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBTSEVFTjs7OzsKK0ZFQjg7QVJBQklDIExFVFRFUiBTSEVFTiBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYzNDs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIFNIRUVOOzs7OworRkVCOTtBUkFCSUMgTEVUVEVSIFNBRCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzU7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgU0FEOzs7OworRkVCQTtBUkFCSUMgTEVUVEVSIFNBRCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzU7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFNBRDs7OzsKK0ZFQkI7QVJBQklDIExFVFRFUiBTQUQgSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNTs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBTQUQ7Ozs7CitGRUJDO0FSQUJJQyBMRVRURVIgU0FEIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjM1Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgU0FEOzs7OworRkVCRDtBUkFCSUMgTEVUVEVSIERBRCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzY7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgREFEOzs7OworRkVCRTtBUkFCSUMgTEVUVEVSIERBRCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzY7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIERBRDs7OzsKK0ZFQkY7QVJBQklDIExFVFRFUiBEQUQgSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNjs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBEQUQ7Ozs7CitGRUMwO0FSQUJJQyBMRVRURVIgREFEIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjM2Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgREFEOzs7OworRkVDMTtBUkFCSUMgTEVUVEVSIFRBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2Mzc7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgVEFIOzs7OworRkVDMjtBUkFCSUMgTEVUVEVSIFRBSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2Mzc7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFRBSDs7OzsKK0ZFQzM7QVJBQklDIExFVFRFUiBUQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNzs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBUQUg7Ozs7CitGRUM0O0FSQUJJQyBMRVRURVIgVEFIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjM3Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgVEFIOzs7OworRkVDNTtBUkFCSUMgTEVUVEVSIFpBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2Mzg7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgREhBSDs7OzsKK0ZFQzY7QVJBQklDIExFVFRFUiBaQUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM4Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBESEFIOzs7OworRkVDNztBUkFCSUMgTEVUVEVSIFpBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM4Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIERIQUg7Ozs7CitGRUM4O0FSQUJJQyBMRVRURVIgWkFIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjM4Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgREhBSDs7OzsKK0ZFQzk7QVJBQklDIExFVFRFUiBBSU4gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM5Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEFJTjs7OzsKK0ZFQ0E7QVJBQklDIExFVFRFUiBBSU4gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM5Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBBSU47Ozs7CitGRUNCO0FSQUJJQyBMRVRURVIgQUlOIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2Mzk7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgQUlOOzs7OworRkVDQztBUkFCSUMgTEVUVEVSIEFJTiBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYzOTs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEFJTjs7OzsKK0ZFQ0Q7QVJBQklDIExFVFRFUiBHSEFJTiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2M0E7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgR0hBSU47Ozs7CitGRUNFO0FSQUJJQyBMRVRURVIgR0hBSU4gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjNBOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBHSEFJTjs7OzsKK0ZFQ0Y7QVJBQklDIExFVFRFUiBHSEFJTiBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjNBOzs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIEdIQUlOOzs7OworRkVEMDtBUkFCSUMgTEVUVEVSIEdIQUlOIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjNBOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgR0hBSU47Ozs7CitGRUQxO0FSQUJJQyBMRVRURVIgRkVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0MTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBGQTs7OzsKK0ZFRDI7QVJBQklDIExFVFRFUiBGRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQxOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBGQTs7OzsKK0ZFRDM7QVJBQklDIExFVFRFUiBGRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0MTs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBGQTs7OzsKK0ZFRDQ7QVJBQklDIExFVFRFUiBGRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDE7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBGQTs7OzsKK0ZFRDU7QVJBQklDIExFVFRFUiBRQUYgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQyOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFFBRjs7OzsKK0ZFRDY7QVJBQklDIExFVFRFUiBRQUYgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQyOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBRQUY7Ozs7CitGRUQ3O0FSQUJJQyBMRVRURVIgUUFGIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDI7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgUUFGOzs7OworRkVEODtBUkFCSUMgTEVUVEVSIFFBRiBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0Mjs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIFFBRjs7OzsKK0ZFRDk7QVJBQklDIExFVFRFUiBLQUYgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQzOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIENBRjs7OzsKK0ZFREE7QVJBQklDIExFVFRFUiBLQUYgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQzOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBDQUY7Ozs7CitGRURCO0FSQUJJQyBMRVRURVIgS0FGIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDM7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgQ0FGOzs7OworRkVEQztBUkFCSUMgTEVUVEVSIEtBRiBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0Mzs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIENBRjs7OzsKK0ZFREQ7QVJBQklDIExFVFRFUiBMQU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ0Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIExBTTs7OzsKK0ZFREU7QVJBQklDIExFVFRFUiBMQU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ0Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBMQU07Ozs7CitGRURGO0FSQUJJQyBMRVRURVIgTEFNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDQ7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgTEFNOzs7OworRkVFMDtBUkFCSUMgTEVUVEVSIExBTSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0NDs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIExBTTs7OzsKK0ZFRTE7QVJBQklDIExFVFRFUiBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBNRUVNOzs7OworRkVFMjtBUkFCSUMgTEVUVEVSIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ1Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBNRUVNOzs7OworRkVFMztBUkFCSUMgTEVUVEVSIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NTs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBNRUVNOzs7OworRkVFNDtBUkFCSUMgTEVUVEVSIE1FRU0gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDU7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBNRUVNOzs7OworRkVFNTtBUkFCSUMgTEVUVEVSIE5PT04gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ2Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIE5PT047Ozs7CitGRUU2O0FSQUJJQyBMRVRURVIgTk9PTiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDY7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIE5PT047Ozs7CitGRUU3O0FSQUJJQyBMRVRURVIgTk9PTiBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ2Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIE5PT047Ozs7CitGRUU4O0FSQUJJQyBMRVRURVIgTk9PTiBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0Njs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIE5PT047Ozs7CitGRUU5O0FSQUJJQyBMRVRURVIgSEVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0Nzs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQTs7OzsKK0ZFRUE7QVJBQklDIExFVFRFUiBIRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ3Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBIQTs7OzsKK0ZFRUI7QVJBQklDIExFVFRFUiBIRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0Nzs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBIQTs7OzsKK0ZFRUM7QVJBQklDIExFVFRFUiBIRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDc7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBIQTs7OzsKK0ZFRUQ7QVJBQklDIExFVFRFUiBXQVcgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ4Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFdBVzs7OzsKK0ZFRUU7QVJBQklDIExFVFRFUiBXQVcgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ4Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBXQVc7Ozs7CitGRUVGO0FSQUJJQyBMRVRURVIgQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0OTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBBTEVGIE1BUVNVUkFIOzs7OworRkVGMDtBUkFCSUMgTEVUVEVSIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDk7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEFMRUYgTUFRU1VSQUg7Ozs7CitGRUYxO0FSQUJJQyBMRVRURVIgWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0QTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBZQTs7OzsKK0ZFRjI7QVJBQklDIExFVFRFUiBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjRBOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBZQTs7OzsKK0ZFRjM7QVJBQklDIExFVFRFUiBZRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0QTs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBZQTs7OzsKK0ZFRjQ7QVJBQklDIExFVFRFUiBZRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NEE7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBZQTs7OzsKK0ZFRjU7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgV0lUSCBNQUREQSBBQk9WRSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDQgMDYyMjs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBNQUREQUggT04gTElHQVRVUkUgTEFNIEFMRUY7Ozs7CitGRUY2O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggTUFEREEgQUJPVkUgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ0IDA2MjI7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIE1BRERBSCBPTiBMSUdBVFVSRSBMQU0gQUxFRjs7OzsKK0ZFRjc7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgV0lUSCBIQU1aQSBBQk9WRSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDQgMDYyMzs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQU1aQUggT04gTElHQVRVUkUgTEFNIEFMRUY7Ozs7CitGRUY4O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ0IDA2MjM7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEhBTVpBSCBPTiBMSUdBVFVSRSBMQU0gQUxFRjs7OzsKK0ZFRjk7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgV0lUSCBIQU1aQSBCRUxPVyBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDQgMDYyNTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQU1aQUggVU5ERVIgTElHQVRVUkUgTEFNIEFMRUY7Ozs7CitGRUZBO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggSEFNWkEgQkVMT1cgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ0IDA2MjU7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEhBTVpBSCBVTkRFUiBMSUdBVFVSRSBMQU0gQUxFRjs7OzsKK0ZFRkI7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ0IDA2Mjc7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgTElHQVRVUkUgTEFNIEFMRUY7Ozs7CitGRUZDO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NCAwNjI3Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBMSUdBVFVSRSBMQU0gQUxFRjs7OzsKK0ZFRkY7WkVSTyBXSURUSCBOTy1CUkVBSyBTUEFDRTtDZjswO09OOzs7OztOO0JZVEUgT1JERVIgTUFSSzs7OzsKK0ZGMDE7RlVMTFdJRFRIIEVYQ0xBTUFUSU9OIE1BUks7UG87MDtPTjs8d2lkZT4gMDAyMTs7OztOOzs7OzsKK0ZGMDI7RlVMTFdJRFRIIFFVT1RBVElPTiBNQVJLO1BvOzA7T047PHdpZGU+IDAwMjI7Ozs7Tjs7Ozs7CitGRjAzO0ZVTExXSURUSCBOVU1CRVIgU0lHTjtQbzswO09OOzx3aWRlPiAwMDIzOzs7O047Ozs7OworRkYwNDtGVUxMV0lEVEggRE9MTEFSIFNJR047U2M7MDtPTjs8d2lkZT4gMDAyNDs7OztOOzs7OzsKK0ZGMDU7RlVMTFdJRFRIIFBFUkNFTlQgU0lHTjtQbzswO09OOzx3aWRlPiAwMDI1Ozs7O047Ozs7OworRkYwNjtGVUxMV0lEVEggQU1QRVJTQU5EO1BvOzA7T047PHdpZGU+IDAwMjY7Ozs7Tjs7Ozs7CitGRjA3O0ZVTExXSURUSCBBUE9TVFJPUEhFO1BvOzA7T047PHdpZGU+IDAwMjc7Ozs7Tjs7Ozs7CitGRjA4O0ZVTExXSURUSCBMRUZUIFBBUkVOVEhFU0lTO1BzOzA7T047PHdpZGU+IDAwMjg7Ozs7TjtGVUxMV0lEVEggT1BFTklORyBQQVJFTlRIRVNJUzs7OzsKK0ZGMDk7RlVMTFdJRFRIIFJJR0hUIFBBUkVOVEhFU0lTO1BlOzA7T047PHdpZGU+IDAwMjk7Ozs7TjtGVUxMV0lEVEggQ0xPU0lORyBQQVJFTlRIRVNJUzs7OzsKK0ZGMEE7RlVMTFdJRFRIIEFTVEVSSVNLO1BvOzA7T047PHdpZGU+IDAwMkE7Ozs7Tjs7Ozs7CitGRjBCO0ZVTExXSURUSCBQTFVTIFNJR047U207MDtPTjs8d2lkZT4gMDAyQjs7OztOOzs7OzsKK0ZGMEM7RlVMTFdJRFRIIENPTU1BO1BvOzA7T047PHdpZGU+IDAwMkM7Ozs7Tjs7Ozs7CitGRjBEO0ZVTExXSURUSCBIWVBIRU4tTUlOVVM7UGQ7MDtPTjs8d2lkZT4gMDAyRDs7OztOOzs7OzsKK0ZGMEU7RlVMTFdJRFRIIEZVTEwgU1RPUDtQbzswO09OOzx3aWRlPiAwMDJFOzs7O047RlVMTFdJRFRIIFBFUklPRDs7OzsKK0ZGMEY7RlVMTFdJRFRIIFNPTElEVVM7UG87MDtPTjs8d2lkZT4gMDAyRjs7OztOO0ZVTExXSURUSCBTTEFTSDs7OzsKK0ZGMTA7RlVMTFdJRFRIIERJR0lUIFpFUk87TmQ7MDtFTjs8d2lkZT4gMDAzMDswOzA7MDtOOzs7OzsKK0ZGMTE7RlVMTFdJRFRIIERJR0lUIE9ORTtOZDswO0VOOzx3aWRlPiAwMDMxOzE7MTsxO047Ozs7OworRkYxMjtGVUxMV0lEVEggRElHSVQgVFdPO05kOzA7RU47PHdpZGU+IDAwMzI7MjsyOzI7Tjs7Ozs7CitGRjEzO0ZVTExXSURUSCBESUdJVCBUSFJFRTtOZDswO0VOOzx3aWRlPiAwMDMzOzM7MzszO047Ozs7OworRkYxNDtGVUxMV0lEVEggRElHSVQgRk9VUjtOZDswO0VOOzx3aWRlPiAwMDM0OzQ7NDs0O047Ozs7OworRkYxNTtGVUxMV0lEVEggRElHSVQgRklWRTtOZDswO0VOOzx3aWRlPiAwMDM1OzU7NTs1O047Ozs7OworRkYxNjtGVUxMV0lEVEggRElHSVQgU0lYO05kOzA7RU47PHdpZGU+IDAwMzY7Njs2OzY7Tjs7Ozs7CitGRjE3O0ZVTExXSURUSCBESUdJVCBTRVZFTjtOZDswO0VOOzx3aWRlPiAwMDM3Ozc7Nzs3O047Ozs7OworRkYxODtGVUxMV0lEVEggRElHSVQgRUlHSFQ7TmQ7MDtFTjs8d2lkZT4gMDAzODs4Ozg7ODtOOzs7OzsKK0ZGMTk7RlVMTFdJRFRIIERJR0lUIE5JTkU7TmQ7MDtFTjs8d2lkZT4gMDAzOTs5Ozk7OTtOOzs7OzsKK0ZGMUE7RlVMTFdJRFRIIENPTE9OO1BvOzA7T047PHdpZGU+IDAwM0E7Ozs7Tjs7Ozs7CitGRjFCO0ZVTExXSURUSCBTRU1JQ09MT047UG87MDtPTjs8d2lkZT4gMDAzQjs7OztOOzs7OzsKK0ZGMUM7RlVMTFdJRFRIIExFU1MtVEhBTiBTSUdOO1NtOzA7T047PHdpZGU+IDAwM0M7Ozs7Tjs7Ozs7CitGRjFEO0ZVTExXSURUSCBFUVVBTFMgU0lHTjtTbTswO09OOzx3aWRlPiAwMDNEOzs7O047Ozs7OworRkYxRTtGVUxMV0lEVEggR1JFQVRFUi1USEFOIFNJR047U207MDtPTjs8d2lkZT4gMDAzRTs7OztOOzs7OzsKK0ZGMUY7RlVMTFdJRFRIIFFVRVNUSU9OIE1BUks7UG87MDtPTjs8d2lkZT4gMDAzRjs7OztOOzs7OzsKK0ZGMjA7RlVMTFdJRFRIIENPTU1FUkNJQUwgQVQ7UG87MDtPTjs8d2lkZT4gMDA0MDs7OztOOzs7OzsKK0ZGMjE7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEE7THU7MDtMOzx3aWRlPiAwMDQxOzs7O047Ozs7RkY0MTsKK0ZGMjI7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEI7THU7MDtMOzx3aWRlPiAwMDQyOzs7O047Ozs7RkY0MjsKK0ZGMjM7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEM7THU7MDtMOzx3aWRlPiAwMDQzOzs7O047Ozs7RkY0MzsKK0ZGMjQ7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEQ7THU7MDtMOzx3aWRlPiAwMDQ0Ozs7O047Ozs7RkY0NDsKK0ZGMjU7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEU7THU7MDtMOzx3aWRlPiAwMDQ1Ozs7O047Ozs7RkY0NTsKK0ZGMjY7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEY7THU7MDtMOzx3aWRlPiAwMDQ2Ozs7O047Ozs7RkY0NjsKK0ZGMjc7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEc7THU7MDtMOzx3aWRlPiAwMDQ3Ozs7O047Ozs7RkY0NzsKK0ZGMjg7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEg7THU7MDtMOzx3aWRlPiAwMDQ4Ozs7O047Ozs7RkY0ODsKK0ZGMjk7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEk7THU7MDtMOzx3aWRlPiAwMDQ5Ozs7O047Ozs7RkY0OTsKK0ZGMkE7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEo7THU7MDtMOzx3aWRlPiAwMDRBOzs7O047Ozs7RkY0QTsKK0ZGMkI7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEs7THU7MDtMOzx3aWRlPiAwMDRCOzs7O047Ozs7RkY0QjsKK0ZGMkM7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEw7THU7MDtMOzx3aWRlPiAwMDRDOzs7O047Ozs7RkY0QzsKK0ZGMkQ7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIE07THU7MDtMOzx3aWRlPiAwMDREOzs7O047Ozs7RkY0RDsKK0ZGMkU7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIE47THU7MDtMOzx3aWRlPiAwMDRFOzs7O047Ozs7RkY0RTsKK0ZGMkY7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIE87THU7MDtMOzx3aWRlPiAwMDRGOzs7O047Ozs7RkY0RjsKK0ZGMzA7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFA7THU7MDtMOzx3aWRlPiAwMDUwOzs7O047Ozs7RkY1MDsKK0ZGMzE7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFE7THU7MDtMOzx3aWRlPiAwMDUxOzs7O047Ozs7RkY1MTsKK0ZGMzI7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFI7THU7MDtMOzx3aWRlPiAwMDUyOzs7O047Ozs7RkY1MjsKK0ZGMzM7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFM7THU7MDtMOzx3aWRlPiAwMDUzOzs7O047Ozs7RkY1MzsKK0ZGMzQ7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFQ7THU7MDtMOzx3aWRlPiAwMDU0Ozs7O047Ozs7RkY1NDsKK0ZGMzU7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFU7THU7MDtMOzx3aWRlPiAwMDU1Ozs7O047Ozs7RkY1NTsKK0ZGMzY7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFY7THU7MDtMOzx3aWRlPiAwMDU2Ozs7O047Ozs7RkY1NjsKK0ZGMzc7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFc7THU7MDtMOzx3aWRlPiAwMDU3Ozs7O047Ozs7RkY1NzsKK0ZGMzg7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFg7THU7MDtMOzx3aWRlPiAwMDU4Ozs7O047Ozs7RkY1ODsKK0ZGMzk7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFk7THU7MDtMOzx3aWRlPiAwMDU5Ozs7O047Ozs7RkY1OTsKK0ZGM0E7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFo7THU7MDtMOzx3aWRlPiAwMDVBOzs7O047Ozs7RkY1QTsKK0ZGM0I7RlVMTFdJRFRIIExFRlQgU1FVQVJFIEJSQUNLRVQ7UHM7MDtPTjs8d2lkZT4gMDA1Qjs7OztOO0ZVTExXSURUSCBPUEVOSU5HIFNRVUFSRSBCUkFDS0VUOzs7OworRkYzQztGVUxMV0lEVEggUkVWRVJTRSBTT0xJRFVTO1BvOzA7T047PHdpZGU+IDAwNUM7Ozs7TjtGVUxMV0lEVEggQkFDS1NMQVNIOzs7OworRkYzRDtGVUxMV0lEVEggUklHSFQgU1FVQVJFIEJSQUNLRVQ7UGU7MDtPTjs8d2lkZT4gMDA1RDs7OztOO0ZVTExXSURUSCBDTE9TSU5HIFNRVUFSRSBCUkFDS0VUOzs7OworRkYzRTtGVUxMV0lEVEggQ0lSQ1VNRkxFWCBBQ0NFTlQ7U2s7MDtPTjs8d2lkZT4gMDA1RTs7OztOO0ZVTExXSURUSCBTUEFDSU5HIENJUkNVTUZMRVg7Ozs7CitGRjNGO0ZVTExXSURUSCBMT1cgTElORTtQYzswO09OOzx3aWRlPiAwMDVGOzs7O047RlVMTFdJRFRIIFNQQUNJTkcgVU5ERVJTQ09SRTs7OzsKK0ZGNDA7RlVMTFdJRFRIIEdSQVZFIEFDQ0VOVDtTazswO09OOzx3aWRlPiAwMDYwOzs7O047RlVMTFdJRFRIIFNQQUNJTkcgR1JBVkU7Ozs7CitGRjQxO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgQTtMbDswO0w7PHdpZGU+IDAwNjE7Ozs7Tjs7O0ZGMjE7O0ZGMjEKK0ZGNDI7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBCO0xsOzA7TDs8d2lkZT4gMDA2Mjs7OztOOzs7RkYyMjs7RkYyMgorRkY0MztGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEM7TGw7MDtMOzx3aWRlPiAwMDYzOzs7O047OztGRjIzOztGRjIzCitGRjQ0O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgRDtMbDswO0w7PHdpZGU+IDAwNjQ7Ozs7Tjs7O0ZGMjQ7O0ZGMjQKK0ZGNDU7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBFO0xsOzA7TDs8d2lkZT4gMDA2NTs7OztOOzs7RkYyNTs7RkYyNQorRkY0NjtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEY7TGw7MDtMOzx3aWRlPiAwMDY2Ozs7O047OztGRjI2OztGRjI2CitGRjQ3O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgRztMbDswO0w7PHdpZGU+IDAwNjc7Ozs7Tjs7O0ZGMjc7O0ZGMjcKK0ZGNDg7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBIO0xsOzA7TDs8d2lkZT4gMDA2ODs7OztOOzs7RkYyODs7RkYyOAorRkY0OTtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEk7TGw7MDtMOzx3aWRlPiAwMDY5Ozs7O047OztGRjI5OztGRjI5CitGRjRBO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgSjtMbDswO0w7PHdpZGU+IDAwNkE7Ozs7Tjs7O0ZGMkE7O0ZGMkEKK0ZGNEI7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBLO0xsOzA7TDs8d2lkZT4gMDA2Qjs7OztOOzs7RkYyQjs7RkYyQgorRkY0QztGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEw7TGw7MDtMOzx3aWRlPiAwMDZDOzs7O047OztGRjJDOztGRjJDCitGRjREO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgTTtMbDswO0w7PHdpZGU+IDAwNkQ7Ozs7Tjs7O0ZGMkQ7O0ZGMkQKK0ZGNEU7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBOO0xsOzA7TDs8d2lkZT4gMDA2RTs7OztOOzs7RkYyRTs7RkYyRQorRkY0RjtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIE87TGw7MDtMOzx3aWRlPiAwMDZGOzs7O047OztGRjJGOztGRjJGCitGRjUwO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgUDtMbDswO0w7PHdpZGU+IDAwNzA7Ozs7Tjs7O0ZGMzA7O0ZGMzAKK0ZGNTE7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBRO0xsOzA7TDs8d2lkZT4gMDA3MTs7OztOOzs7RkYzMTs7RkYzMQorRkY1MjtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFI7TGw7MDtMOzx3aWRlPiAwMDcyOzs7O047OztGRjMyOztGRjMyCitGRjUzO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgUztMbDswO0w7PHdpZGU+IDAwNzM7Ozs7Tjs7O0ZGMzM7O0ZGMzMKK0ZGNTQ7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBUO0xsOzA7TDs8d2lkZT4gMDA3NDs7OztOOzs7RkYzNDs7RkYzNAorRkY1NTtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFU7TGw7MDtMOzx3aWRlPiAwMDc1Ozs7O047OztGRjM1OztGRjM1CitGRjU2O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgVjtMbDswO0w7PHdpZGU+IDAwNzY7Ozs7Tjs7O0ZGMzY7O0ZGMzYKK0ZGNTc7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBXO0xsOzA7TDs8d2lkZT4gMDA3Nzs7OztOOzs7RkYzNzs7RkYzNworRkY1ODtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFg7TGw7MDtMOzx3aWRlPiAwMDc4Ozs7O047OztGRjM4OztGRjM4CitGRjU5O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgWTtMbDswO0w7PHdpZGU+IDAwNzk7Ozs7Tjs7O0ZGMzk7O0ZGMzkKK0ZGNUE7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBaO0xsOzA7TDs8d2lkZT4gMDA3QTs7OztOOzs7RkYzQTs7RkYzQQorRkY1QjtGVUxMV0lEVEggTEVGVCBDVVJMWSBCUkFDS0VUO1BzOzA7T047PHdpZGU+IDAwN0I7Ozs7TjtGVUxMV0lEVEggT1BFTklORyBDVVJMWSBCUkFDS0VUOzs7OworRkY1QztGVUxMV0lEVEggVkVSVElDQUwgTElORTtTbTswO09OOzx3aWRlPiAwMDdDOzs7O047RlVMTFdJRFRIIFZFUlRJQ0FMIEJBUjs7OzsKK0ZGNUQ7RlVMTFdJRFRIIFJJR0hUIENVUkxZIEJSQUNLRVQ7UGU7MDtPTjs8d2lkZT4gMDA3RDs7OztOO0ZVTExXSURUSCBDTE9TSU5HIENVUkxZIEJSQUNLRVQ7Ozs7CitGRjVFO0ZVTExXSURUSCBUSUxERTtTbTswO09OOzx3aWRlPiAwMDdFOzs7O047RlVMTFdJRFRIIFNQQUNJTkcgVElMREU7Ozs7CitGRjYxO0hBTEZXSURUSCBJREVPR1JBUEhJQyBGVUxMIFNUT1A7UG87MDtPTjs8bmFycm93PiAzMDAyOzs7O047SEFMRldJRFRIIElERU9HUkFQSElDIFBFUklPRDs7OzsKK0ZGNjI7SEFMRldJRFRIIExFRlQgQ09STkVSIEJSQUNLRVQ7UHM7MDtPTjs8bmFycm93PiAzMDBDOzs7O047SEFMRldJRFRIIE9QRU5JTkcgQ09STkVSIEJSQUNLRVQ7Ozs7CitGRjYzO0hBTEZXSURUSCBSSUdIVCBDT1JORVIgQlJBQ0tFVDtQZTswO09OOzxuYXJyb3c+IDMwMEQ7Ozs7TjtIQUxGV0lEVEggQ0xPU0lORyBDT1JORVIgQlJBQ0tFVDs7OzsKK0ZGNjQ7SEFMRldJRFRIIElERU9HUkFQSElDIENPTU1BO1BvOzA7T047PG5hcnJvdz4gMzAwMTs7OztOOzs7OzsKK0ZGNjU7SEFMRldJRFRIIEtBVEFLQU5BIE1JRERMRSBET1Q7UG87MDtMOzxuYXJyb3c+IDMwRkI7Ozs7Tjs7Ozs7CitGRjY2O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgV087TG87MDtMOzxuYXJyb3c+IDMwRjI7Ozs7Tjs7Ozs7CitGRjY3O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgQTtMbzswO0w7PG5hcnJvdz4gMzBBMTs7OztOOzs7OzsKK0ZGNjg7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBJO0xvOzA7TDs8bmFycm93PiAzMEEzOzs7O047Ozs7OworRkY2OTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFU7TG87MDtMOzxuYXJyb3c+IDMwQTU7Ozs7Tjs7Ozs7CitGRjZBO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgRTtMbzswO0w7PG5hcnJvdz4gMzBBNzs7OztOOzs7OzsKK0ZGNkI7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBPO0xvOzA7TDs8bmFycm93PiAzMEE5Ozs7O047Ozs7OworRkY2QztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlBO0xvOzA7TDs8bmFycm93PiAzMEUzOzs7O047Ozs7OworRkY2RDtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlVO0xvOzA7TDs8bmFycm93PiAzMEU1Ozs7O047Ozs7OworRkY2RTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlPO0xvOzA7TDs8bmFycm93PiAzMEU3Ozs7O047Ozs7OworRkY2RjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFRVO0xvOzA7TDs8bmFycm93PiAzMEMzOzs7O047Ozs7OworRkY3MDtIQUxGV0lEVEggS0FUQUtBTkEtSElSQUdBTkEgUFJPTE9OR0VEIFNPVU5EIE1BUks7TG07MDtMOzxuYXJyb3c+IDMwRkM7Ozs7Tjs7Ozs7CitGRjcxO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgQTtMbzswO0w7PG5hcnJvdz4gMzBBMjs7OztOOzs7OzsKK0ZGNzI7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBJO0xvOzA7TDs8bmFycm93PiAzMEE0Ozs7O047Ozs7OworRkY3MztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFU7TG87MDtMOzxuYXJyb3c+IDMwQTY7Ozs7Tjs7Ozs7CitGRjc0O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgRTtMbzswO0w7PG5hcnJvdz4gMzBBODs7OztOOzs7OzsKK0ZGNzU7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBPO0xvOzA7TDs8bmFycm93PiAzMEFBOzs7O047Ozs7OworRkY3NjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtBO0xvOzA7TDs8bmFycm93PiAzMEFCOzs7O047Ozs7OworRkY3NztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtJO0xvOzA7TDs8bmFycm93PiAzMEFEOzs7O047Ozs7OworRkY3ODtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtVO0xvOzA7TDs8bmFycm93PiAzMEFGOzs7O047Ozs7OworRkY3OTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtFO0xvOzA7TDs8bmFycm93PiAzMEIxOzs7O047Ozs7OworRkY3QTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtPO0xvOzA7TDs8bmFycm93PiAzMEIzOzs7O047Ozs7OworRkY3QjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNBO0xvOzA7TDs8bmFycm93PiAzMEI1Ozs7O047Ozs7OworRkY3QztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNJO0xvOzA7TDs8bmFycm93PiAzMEI3Ozs7O047Ozs7OworRkY3RDtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNVO0xvOzA7TDs8bmFycm93PiAzMEI5Ozs7O047Ozs7OworRkY3RTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNFO0xvOzA7TDs8bmFycm93PiAzMEJCOzs7O047Ozs7OworRkY3RjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNPO0xvOzA7TDs8bmFycm93PiAzMEJEOzs7O047Ozs7OworRkY4MDtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFRBO0xvOzA7TDs8bmFycm93PiAzMEJGOzs7O047Ozs7OworRkY4MTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFRJO0xvOzA7TDs8bmFycm93PiAzMEMxOzs7O047Ozs7OworRkY4MjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFRVO0xvOzA7TDs8bmFycm93PiAzMEM0Ozs7O047Ozs7OworRkY4MztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFRFO0xvOzA7TDs8bmFycm93PiAzMEM2Ozs7O047Ozs7OworRkY4NDtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFRPO0xvOzA7TDs8bmFycm93PiAzMEM4Ozs7O047Ozs7OworRkY4NTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5BO0xvOzA7TDs8bmFycm93PiAzMENBOzs7O047Ozs7OworRkY4NjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5JO0xvOzA7TDs8bmFycm93PiAzMENCOzs7O047Ozs7OworRkY4NztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5VO0xvOzA7TDs8bmFycm93PiAzMENDOzs7O047Ozs7OworRkY4ODtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5FO0xvOzA7TDs8bmFycm93PiAzMENEOzs7O047Ozs7OworRkY4OTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5PO0xvOzA7TDs8bmFycm93PiAzMENFOzs7O047Ozs7OworRkY4QTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEhBO0xvOzA7TDs8bmFycm93PiAzMENGOzs7O047Ozs7OworRkY4QjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEhJO0xvOzA7TDs8bmFycm93PiAzMEQyOzs7O047Ozs7OworRkY4QztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEhVO0xvOzA7TDs8bmFycm93PiAzMEQ1Ozs7O047Ozs7OworRkY4RDtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEhFO0xvOzA7TDs8bmFycm93PiAzMEQ4Ozs7O047Ozs7OworRkY4RTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEhPO0xvOzA7TDs8bmFycm93PiAzMERCOzs7O047Ozs7OworRkY4RjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE1BO0xvOzA7TDs8bmFycm93PiAzMERFOzs7O047Ozs7OworRkY5MDtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE1JO0xvOzA7TDs8bmFycm93PiAzMERGOzs7O047Ozs7OworRkY5MTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE1VO0xvOzA7TDs8bmFycm93PiAzMEUwOzs7O047Ozs7OworRkY5MjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE1FO0xvOzA7TDs8bmFycm93PiAzMEUxOzs7O047Ozs7OworRkY5MztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE1PO0xvOzA7TDs8bmFycm93PiAzMEUyOzs7O047Ozs7OworRkY5NDtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFlBO0xvOzA7TDs8bmFycm93PiAzMEU0Ozs7O047Ozs7OworRkY5NTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFlVO0xvOzA7TDs8bmFycm93PiAzMEU2Ozs7O047Ozs7OworRkY5NjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFlPO0xvOzA7TDs8bmFycm93PiAzMEU4Ozs7O047Ozs7OworRkY5NztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJBO0xvOzA7TDs8bmFycm93PiAzMEU5Ozs7O047Ozs7OworRkY5ODtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJJO0xvOzA7TDs8bmFycm93PiAzMEVBOzs7O047Ozs7OworRkY5OTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJVO0xvOzA7TDs8bmFycm93PiAzMEVCOzs7O047Ozs7OworRkY5QTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJFO0xvOzA7TDs8bmFycm93PiAzMEVDOzs7O047Ozs7OworRkY5QjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJPO0xvOzA7TDs8bmFycm93PiAzMEVEOzs7O047Ozs7OworRkY5QztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFdBO0xvOzA7TDs8bmFycm93PiAzMEVGOzs7O047Ozs7OworRkY5RDtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE47TG87MDtMOzxuYXJyb3c+IDMwRjM7Ozs7Tjs7Ozs7CitGRjlFO0hBTEZXSURUSCBLQVRBS0FOQSBWT0lDRUQgU09VTkQgTUFSSztMbTswO0w7PG5hcnJvdz4gMzA5Qjs7OztOOzs7OzsKK0ZGOUY7SEFMRldJRFRIIEtBVEFLQU5BIFNFTUktVk9JQ0VEIFNPVU5EIE1BUks7TG07MDtMOzxuYXJyb3c+IDMwOUM7Ozs7Tjs7Ozs7CitGRkEwO0hBTEZXSURUSCBIQU5HVUwgRklMTEVSO0xvOzA7TDs8bmFycm93PiAzMTY0Ozs7O047SEFMRldJRFRIIEhBTkdVTCBDQUUgT007Ozs7CitGRkExO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEtJWUVPSztMbzswO0w7PG5hcnJvdz4gMzEzMTs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEdJWUVPRzs7OzsKK0ZGQTI7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkdLSVlFT0s7TG87MDtMOzxuYXJyb3c+IDMxMzI7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FORyBHSVlFT0c7Ozs7CitGRkEzO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEtJWUVPSy1TSU9TO0xvOzA7TDs8bmFycm93PiAzMTMzOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgR0lZRU9HIFNJT1M7Ozs7CitGRkE0O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE5JRVVOO0xvOzA7TDs8bmFycm93PiAzMTM0Ozs7O047Ozs7OworRkZBNTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBOSUVVTi1DSUVVQztMbzswO0w7PG5hcnJvdz4gMzEzNTs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE5JRVVOIEpJRVVKOzs7OworRkZBNjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBOSUVVTi1ISUVVSDtMbzswO0w7PG5hcnJvdz4gMzEzNjs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE5JRVVOIEhJRVVIOzs7OworRkZBNztIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBUSUtFVVQ7TG87MDtMOzxuYXJyb3c+IDMxMzc7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBESUdFVUQ7Ozs7CitGRkE4O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HVElLRVVUO0xvOzA7TDs8bmFycm93PiAzMTM4Ozs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkcgRElHRVVEOzs7OworRkZBOTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTDtMbzswO0w7PG5hcnJvdz4gMzEzOTs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIExJRVVMOzs7OworRkZBQTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTC1LSVlFT0s7TG87MDtMOzxuYXJyb3c+IDMxM0E7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBHSVlFT0c7Ozs7CitGRkFCO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLU1JRVVNO0xvOzA7TDs8bmFycm93PiAzMTNCOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTElFVUwgTUlFVU07Ozs7CitGRkFDO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLVBJRVVQO0xvOzA7TDs8bmFycm93PiAzMTNDOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTElFVUwgQklFVUI7Ozs7CitGRkFEO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLVNJT1M7TG87MDtMOzxuYXJyb3c+IDMxM0Q7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBTSU9TOzs7OworRkZBRTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTC1USElFVVRIO0xvOzA7TDs8bmFycm93PiAzMTNFOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTElFVUwgVElFVVQ7Ozs7CitGRkFGO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLVBISUVVUEg7TG87MDtMOzxuYXJyb3c+IDMxM0Y7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBQSUVVUDs7OzsKK0ZGQjA7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwtSElFVUg7TG87MDtMOzxuYXJyb3c+IDMxNDA7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBISUVVSDs7OzsKK0ZGQjE7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTUlFVU07TG87MDtMOzxuYXJyb3c+IDMxNDE7Ozs7Tjs7Ozs7CitGRkIyO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFBJRVVQO0xvOzA7TDs8bmFycm93PiAzMTQyOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgQklFVUI7Ozs7CitGRkIzO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HUElFVVA7TG87MDtMOzxuYXJyb3c+IDMxNDM7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FORyBCSUVVQjs7OzsKK0ZGQjQ7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUElFVVAtU0lPUztMbzswO0w7PG5hcnJvdz4gMzE0NDs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEJJRVVCIFNJT1M7Ozs7CitGRkI1O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNJT1M7TG87MDtMOzxuYXJyb3c+IDMxNDU7Ozs7Tjs7Ozs7CitGRkI2O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HU0lPUztMbzswO0w7PG5hcnJvdz4gMzE0Njs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HIFNJT1M7Ozs7CitGRkI3O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIElFVU5HO0xvOzA7TDs8bmFycm93PiAzMTQ3Ozs7O047Ozs7OworRkZCODtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBDSUVVQztMbzswO0w7PG5hcnJvdz4gMzE0ODs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEpJRVVKOzs7OworRkZCOTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FOR0NJRVVDO0xvOzA7TDs8bmFycm93PiAzMTQ5Ozs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkcgSklFVUo7Ozs7CitGRkJBO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIENISUVVQ0g7TG87MDtMOzxuYXJyb3c+IDMxNEE7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBDSUVVQzs7OzsKK0ZGQkI7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgS0hJRVVLSDtMbzswO0w7PG5hcnJvdz4gMzE0Qjs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEtJWUVPSzs7OzsKK0ZGQkM7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgVEhJRVVUSDtMbzswO0w7PG5hcnJvdz4gMzE0Qzs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFRJRVVUOzs7OworRkZCRDtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBQSElFVVBIO0xvOzA7TDs8bmFycm93PiAzMTREOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUElFVVA7Ozs7CitGRkJFO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEhJRVVIO0xvOzA7TDs8bmFycm93PiAzMTRFOzs7O047Ozs7OworRkZDMjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBBO0xvOzA7TDs8bmFycm93PiAzMTRGOzs7O047Ozs7OworRkZDMztIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBBRTtMbzswO0w7PG5hcnJvdz4gMzE1MDs7OztOOzs7OzsKK0ZGQzQ7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUE7TG87MDtMOzxuYXJyb3c+IDMxNTE7Ozs7Tjs7Ozs7CitGRkM1O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFlBRTtMbzswO0w7PG5hcnJvdz4gMzE1Mjs7OztOOzs7OzsKK0ZGQzY7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgRU87TG87MDtMOzxuYXJyb3c+IDMxNTM7Ozs7Tjs7Ozs7CitGRkM3O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEU7TG87MDtMOzxuYXJyb3c+IDMxNTQ7Ozs7Tjs7Ozs7CitGRkNBO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFlFTztMbzswO0w7PG5hcnJvdz4gMzE1NTs7OztOOzs7OzsKK0ZGQ0I7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUU7TG87MDtMOzxuYXJyb3c+IDMxNTY7Ozs7Tjs7Ozs7CitGRkNDO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE87TG87MDtMOzxuYXJyb3c+IDMxNTc7Ozs7Tjs7Ozs7CitGRkNEO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFdBO0xvOzA7TDs8bmFycm93PiAzMTU4Ozs7O047Ozs7OworRkZDRTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBXQUU7TG87MDtMOzxuYXJyb3c+IDMxNTk7Ozs7Tjs7Ozs7CitGRkNGO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE9FO0xvOzA7TDs8bmFycm93PiAzMTVBOzs7O047Ozs7OworRkZEMjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBZTztMbzswO0w7PG5hcnJvdz4gMzE1Qjs7OztOOzs7OzsKK0ZGRDM7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgVTtMbzswO0w7PG5hcnJvdz4gMzE1Qzs7OztOOzs7OzsKK0ZGRDQ7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgV0VPO0xvOzA7TDs8bmFycm93PiAzMTVEOzs7O047Ozs7OworRkZENTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBXRTtMbzswO0w7PG5hcnJvdz4gMzE1RTs7OztOOzs7OzsKK0ZGRDY7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgV0k7TG87MDtMOzxuYXJyb3c+IDMxNUY7Ozs7Tjs7Ozs7CitGRkQ3O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFlVO0xvOzA7TDs8bmFycm93PiAzMTYwOzs7O047Ozs7OworRkZEQTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBFVTtMbzswO0w7PG5hcnJvdz4gMzE2MTs7OztOOzs7OzsKK0ZGREI7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUk7TG87MDtMOzxuYXJyb3c+IDMxNjI7Ozs7Tjs7Ozs7CitGRkRDO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEk7TG87MDtMOzxuYXJyb3c+IDMxNjM7Ozs7Tjs7Ozs7CitGRkUwO0ZVTExXSURUSCBDRU5UIFNJR047U2M7MDtPTjs8d2lkZT4gMDBBMjs7OztOOzs7OzsKK0ZGRTE7RlVMTFdJRFRIIFBPVU5EIFNJR047U2M7MDtPTjs8d2lkZT4gMDBBMzs7OztOOzs7OzsKK0ZGRTI7RlVMTFdJRFRIIE5PVCBTSUdOO1NtOzA7T047PHdpZGU+IDAwQUM7Ozs7Tjs7Ozs7CitGRkUzO0ZVTExXSURUSCBNQUNST047U2s7MDtPTjs8d2lkZT4gMDBBRjs7OztOO0ZVTExXSURUSCBTUEFDSU5HIE1BQ1JPTjs7OzsKK0ZGRTQ7RlVMTFdJRFRIIEJST0tFTiBCQVI7U287MDtPTjs8d2lkZT4gMDBBNjs7OztOO0ZVTExXSURUSCBCUk9LRU4gVkVSVElDQUwgQkFSOzs7OworRkZFNTtGVUxMV0lEVEggWUVOIFNJR047U2M7MDtPTjs8d2lkZT4gMDBBNTs7OztOOzs7OzsKK0ZGRTY7RlVMTFdJRFRIIFdPTiBTSUdOO1NjOzA7T047PHdpZGU+IDIwQTk7Ozs7Tjs7Ozs7CitGRkU4O0hBTEZXSURUSCBGT1JNUyBMSUdIVCBWRVJUSUNBTDtTbTswO09OOzxuYXJyb3c+IDI1MDI7Ozs7Tjs7Ozs7CitGRkU5O0hBTEZXSURUSCBMRUZUV0FSRFMgQVJST1c7U207MDtPTjs8bmFycm93PiAyMTkwOzs7O047Ozs7OworRkZFQTtIQUxGV0lEVEggVVBXQVJEUyBBUlJPVztTbTswO09OOzxuYXJyb3c+IDIxOTE7Ozs7Tjs7Ozs7CitGRkVCO0hBTEZXSURUSCBSSUdIVFdBUkRTIEFSUk9XO1NtOzA7T047PG5hcnJvdz4gMjE5Mjs7OztOOzs7OzsKK0ZGRUM7SEFMRldJRFRIIERPV05XQVJEUyBBUlJPVztTbTswO09OOzxuYXJyb3c+IDIxOTM7Ozs7Tjs7Ozs7CitGRkVEO0hBTEZXSURUSCBCTEFDSyBTUVVBUkU7U287MDtPTjs8bmFycm93PiAyNUEwOzs7O047Ozs7OworRkZFRTtIQUxGV0lEVEggV0hJVEUgQ0lSQ0xFO1NvOzA7T047PG5hcnJvdz4gMjVDQjs7OztOOzs7OzsKK0ZGRkM7T0JKRUNUIFJFUExBQ0VNRU5UIENIQVJBQ1RFUjtTbzswO09OOzs7OztOOzs7OzsKK0ZGRkQ7UkVQTEFDRU1FTlQgQ0hBUkFDVEVSO1NvOzA7T047Ozs7O047Ozs7OwpkaWZmIC0tZ2l0IGEvc3JjL2RhdGEvdW5pY29kZS9Vbmljb2RlRGF0YS0yLjEuNS50eHQgYi9zcmMvZGF0YS91bmljb2RlL1VuaWNvZGVEYXRhLTIuMS41LnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40ZTRlNjI5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2RhdGEvdW5pY29kZS9Vbmljb2RlRGF0YS0yLjEuNS50eHQKQEAgLTAsMCArMSw2ODkwIEBACiswMDAwOzxjb250cm9sPjtDYzswO09OOzs7OztOO05VTEw7Ozs7CiswMDAxOzxjb250cm9sPjtDYzswO09OOzs7OztOO1NUQVJUIE9GIEhFQURJTkc7Ozs7CiswMDAyOzxjb250cm9sPjtDYzswO09OOzs7OztOO1NUQVJUIE9GIFRFWFQ7Ozs7CiswMDAzOzxjb250cm9sPjtDYzswO09OOzs7OztOO0VORCBPRiBURVhUOzs7OworMDAwNDs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtFTkQgT0YgVFJBTlNNSVNTSU9OOzs7OworMDAwNTs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtFTlFVSVJZOzs7OworMDAwNjs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtBQ0tOT1dMRURHRTs7OzsKKzAwMDc7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047QkVMTDs7OzsKKzAwMDg7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047QkFDS1NQQUNFOzs7OworMDAwOTs8Y29udHJvbD47Q2M7MDtTOzs7OztOO0hPUklaT05UQUwgVEFCVUxBVElPTjs7OzsKKzAwMEE7PGNvbnRyb2w+O0NjOzA7Qjs7Ozs7TjtMSU5FIEZFRUQ7Ozs7CiswMDBCOzxjb250cm9sPjtDYzswO1M7Ozs7O047VkVSVElDQUwgVEFCVUxBVElPTjs7OzsKKzAwMEM7PGNvbnRyb2w+O0NjOzA7Qjs7Ozs7TjtGT1JNIEZFRUQ7Ozs7CiswMDBEOzxjb250cm9sPjtDYzswO0I7Ozs7O047Q0FSUklBR0UgUkVUVVJOOzs7OworMDAwRTs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtTSElGVCBPVVQ7Ozs7CiswMDBGOzxjb250cm9sPjtDYzswO09OOzs7OztOO1NISUZUIElOOzs7OworMDAxMDs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtEQVRBIExJTksgRVNDQVBFOzs7OworMDAxMTs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtERVZJQ0UgQ09OVFJPTCBPTkU7Ozs7CiswMDEyOzxjb250cm9sPjtDYzswO09OOzs7OztOO0RFVklDRSBDT05UUk9MIFRXTzs7OzsKKzAwMTM7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047REVWSUNFIENPTlRST0wgVEhSRUU7Ozs7CiswMDE0Ozxjb250cm9sPjtDYzswO09OOzs7OztOO0RFVklDRSBDT05UUk9MIEZPVVI7Ozs7CiswMDE1Ozxjb250cm9sPjtDYzswO09OOzs7OztOO05FR0FUSVZFIEFDS05PV0xFREdFOzs7OworMDAxNjs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtTWU5DSFJPTk9VUyBJRExFOzs7OworMDAxNzs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLOzs7OworMDAxODs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtDQU5DRUw7Ozs7CiswMDE5Ozxjb250cm9sPjtDYzswO09OOzs7OztOO0VORCBPRiBNRURJVU07Ozs7CiswMDFBOzxjb250cm9sPjtDYzswO09OOzs7OztOO1NVQlNUSVRVVEU7Ozs7CiswMDFCOzxjb250cm9sPjtDYzswO09OOzs7OztOO0VTQ0FQRTs7OzsKKzAwMUM7PGNvbnRyb2w+O0NjOzA7Qjs7Ozs7TjtGSUxFIFNFUEFSQVRPUjs7OzsKKzAwMUQ7PGNvbnRyb2w+O0NjOzA7Qjs7Ozs7TjtHUk9VUCBTRVBBUkFUT1I7Ozs7CiswMDFFOzxjb250cm9sPjtDYzswO0I7Ozs7O047UkVDT1JEIFNFUEFSQVRPUjs7OzsKKzAwMUY7PGNvbnRyb2w+O0NjOzA7Uzs7Ozs7TjtVTklUIFNFUEFSQVRPUjs7OzsKKzAwMjA7U1BBQ0U7WnM7MDtXUzs7Ozs7Tjs7Ozs7CiswMDIxO0VYQ0xBTUFUSU9OIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMDIyO1FVT1RBVElPTiBNQVJLO1BvOzA7T047Ozs7O047Ozs7OworMDAyMztOVU1CRVIgU0lHTjtQbzswO0VUOzs7OztOOzs7OzsKKzAwMjQ7RE9MTEFSIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CiswMDI1O1BFUkNFTlQgU0lHTjtQbzswO0VUOzs7OztOOzs7OzsKKzAwMjY7QU1QRVJTQU5EO1BvOzA7T047Ozs7O047Ozs7OworMDAyNztBUE9TVFJPUEhFO1BvOzA7T047Ozs7O047QVBPU1RST1BIRS1RVU9URTs7OzsKKzAwMjg7TEVGVCBQQVJFTlRIRVNJUztQczswO09OOzs7OztZO09QRU5JTkcgUEFSRU5USEVTSVM7Ozs7CiswMDI5O1JJR0hUIFBBUkVOVEhFU0lTO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBQQVJFTlRIRVNJUzs7OzsKKzAwMkE7QVNURVJJU0s7UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMDJCO1BMVVMgU0lHTjtTbTswO0VUOzs7OztOOzs7OzsKKzAwMkM7Q09NTUE7UG87MDtDUzs7Ozs7Tjs7Ozs7CiswMDJEO0hZUEhFTi1NSU5VUztQZDswO0VUOzs7OztOOzs7OzsKKzAwMkU7RlVMTCBTVE9QO1BvOzA7Q1M7Ozs7O047UEVSSU9EOzs7OworMDAyRjtTT0xJRFVTO1BvOzA7RVM7Ozs7O047U0xBU0g7Ozs7CiswMDMwO0RJR0lUIFpFUk87TmQ7MDtFTjs7MDswOzA7Tjs7Ozs7CiswMDMxO0RJR0lUIE9ORTtOZDswO0VOOzsxOzE7MTtOOzs7OzsKKzAwMzI7RElHSVQgVFdPO05kOzA7RU47OzI7MjsyO047Ozs7OworMDAzMztESUdJVCBUSFJFRTtOZDswO0VOOzszOzM7MztOOzs7OzsKKzAwMzQ7RElHSVQgRk9VUjtOZDswO0VOOzs0OzQ7NDtOOzs7OzsKKzAwMzU7RElHSVQgRklWRTtOZDswO0VOOzs1OzU7NTtOOzs7OzsKKzAwMzY7RElHSVQgU0lYO05kOzA7RU47OzY7Njs2O047Ozs7OworMDAzNztESUdJVCBTRVZFTjtOZDswO0VOOzs3Ozc7NztOOzs7OzsKKzAwMzg7RElHSVQgRUlHSFQ7TmQ7MDtFTjs7ODs4Ozg7Tjs7Ozs7CiswMDM5O0RJR0lUIE5JTkU7TmQ7MDtFTjs7OTs5Ozk7Tjs7Ozs7CiswMDNBO0NPTE9OO1BvOzA7Q1M7Ozs7O047Ozs7OworMDAzQjtTRU1JQ09MT047UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMDNDO0xFU1MtVEhBTiBTSUdOO1NtOzA7T047Ozs7O1k7Ozs7OworMDAzRDtFUVVBTFMgU0lHTjtTbTswO09OOzs7OztOOzs7OzsKKzAwM0U7R1JFQVRFUi1USEFOIFNJR047U207MDtPTjs7Ozs7WTs7Ozs7CiswMDNGO1FVRVNUSU9OIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMDQwO0NPTU1FUkNJQUwgQVQ7UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMDQxO0xBVElOIENBUElUQUwgTEVUVEVSIEE7THU7MDtMOzs7OztOOzs7OzAwNjE7CiswMDQyO0xBVElOIENBUElUQUwgTEVUVEVSIEI7THU7MDtMOzs7OztOOzs7OzAwNjI7CiswMDQzO0xBVElOIENBUElUQUwgTEVUVEVSIEM7THU7MDtMOzs7OztOOzs7OzAwNjM7CiswMDQ0O0xBVElOIENBUElUQUwgTEVUVEVSIEQ7THU7MDtMOzs7OztOOzs7OzAwNjQ7CiswMDQ1O0xBVElOIENBUElUQUwgTEVUVEVSIEU7THU7MDtMOzs7OztOOzs7OzAwNjU7CiswMDQ2O0xBVElOIENBUElUQUwgTEVUVEVSIEY7THU7MDtMOzs7OztOOzs7OzAwNjY7CiswMDQ3O0xBVElOIENBUElUQUwgTEVUVEVSIEc7THU7MDtMOzs7OztOOzs7OzAwNjc7CiswMDQ4O0xBVElOIENBUElUQUwgTEVUVEVSIEg7THU7MDtMOzs7OztOOzs7OzAwNjg7CiswMDQ5O0xBVElOIENBUElUQUwgTEVUVEVSIEk7THU7MDtMOzs7OztOOzs7OzAwNjk7CiswMDRBO0xBVElOIENBUElUQUwgTEVUVEVSIEo7THU7MDtMOzs7OztOOzs7OzAwNkE7CiswMDRCO0xBVElOIENBUElUQUwgTEVUVEVSIEs7THU7MDtMOzs7OztOOzs7OzAwNkI7CiswMDRDO0xBVElOIENBUElUQUwgTEVUVEVSIEw7THU7MDtMOzs7OztOOzs7OzAwNkM7CiswMDREO0xBVElOIENBUElUQUwgTEVUVEVSIE07THU7MDtMOzs7OztOOzs7OzAwNkQ7CiswMDRFO0xBVElOIENBUElUQUwgTEVUVEVSIE47THU7MDtMOzs7OztOOzs7OzAwNkU7CiswMDRGO0xBVElOIENBUElUQUwgTEVUVEVSIE87THU7MDtMOzs7OztOOzs7OzAwNkY7CiswMDUwO0xBVElOIENBUElUQUwgTEVUVEVSIFA7THU7MDtMOzs7OztOOzs7OzAwNzA7CiswMDUxO0xBVElOIENBUElUQUwgTEVUVEVSIFE7THU7MDtMOzs7OztOOzs7OzAwNzE7CiswMDUyO0xBVElOIENBUElUQUwgTEVUVEVSIFI7THU7MDtMOzs7OztOOzs7OzAwNzI7CiswMDUzO0xBVElOIENBUElUQUwgTEVUVEVSIFM7THU7MDtMOzs7OztOOzs7OzAwNzM7CiswMDU0O0xBVElOIENBUElUQUwgTEVUVEVSIFQ7THU7MDtMOzs7OztOOzs7OzAwNzQ7CiswMDU1O0xBVElOIENBUElUQUwgTEVUVEVSIFU7THU7MDtMOzs7OztOOzs7OzAwNzU7CiswMDU2O0xBVElOIENBUElUQUwgTEVUVEVSIFY7THU7MDtMOzs7OztOOzs7OzAwNzY7CiswMDU3O0xBVElOIENBUElUQUwgTEVUVEVSIFc7THU7MDtMOzs7OztOOzs7OzAwNzc7CiswMDU4O0xBVElOIENBUElUQUwgTEVUVEVSIFg7THU7MDtMOzs7OztOOzs7OzAwNzg7CiswMDU5O0xBVElOIENBUElUQUwgTEVUVEVSIFk7THU7MDtMOzs7OztOOzs7OzAwNzk7CiswMDVBO0xBVElOIENBUElUQUwgTEVUVEVSIFo7THU7MDtMOzs7OztOOzs7OzAwN0E7CiswMDVCO0xFRlQgU1FVQVJFIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIFNRVUFSRSBCUkFDS0VUOzs7OworMDA1QztSRVZFUlNFIFNPTElEVVM7UG87MDtPTjs7Ozs7TjtCQUNLU0xBU0g7Ozs7CiswMDVEO1JJR0hUIFNRVUFSRSBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBTUVVBUkUgQlJBQ0tFVDs7OzsKKzAwNUU7Q0lSQ1VNRkxFWCBBQ0NFTlQ7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDI7Ozs7TjtTUEFDSU5HIENJUkNVTUZMRVg7Ozs7CiswMDVGO0xPVyBMSU5FO1BjOzA7T047PGNvbXBhdD4gMDAyMCAwMzMyOzs7O047U1BBQ0lORyBVTkRFUlNDT1JFOzs7OworMDA2MDtHUkFWRSBBQ0NFTlQ7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDA7Ozs7TjtTUEFDSU5HIEdSQVZFOzs7OworMDA2MTtMQVRJTiBTTUFMTCBMRVRURVIgQTtMbDswO0w7Ozs7O047OzswMDQxOzswMDQxCiswMDYyO0xBVElOIFNNQUxMIExFVFRFUiBCO0xsOzA7TDs7Ozs7Tjs7OzAwNDI7OzAwNDIKKzAwNjM7TEFUSU4gU01BTEwgTEVUVEVSIEM7TGw7MDtMOzs7OztOOzs7MDA0Mzs7MDA0MworMDA2NDtMQVRJTiBTTUFMTCBMRVRURVIgRDtMbDswO0w7Ozs7O047OzswMDQ0OzswMDQ0CiswMDY1O0xBVElOIFNNQUxMIExFVFRFUiBFO0xsOzA7TDs7Ozs7Tjs7OzAwNDU7OzAwNDUKKzAwNjY7TEFUSU4gU01BTEwgTEVUVEVSIEY7TGw7MDtMOzs7OztOOzs7MDA0Njs7MDA0NgorMDA2NztMQVRJTiBTTUFMTCBMRVRURVIgRztMbDswO0w7Ozs7O047OzswMDQ3OzswMDQ3CiswMDY4O0xBVElOIFNNQUxMIExFVFRFUiBIO0xsOzA7TDs7Ozs7Tjs7OzAwNDg7OzAwNDgKKzAwNjk7TEFUSU4gU01BTEwgTEVUVEVSIEk7TGw7MDtMOzs7OztOOzs7MDA0OTs7MDA0OQorMDA2QTtMQVRJTiBTTUFMTCBMRVRURVIgSjtMbDswO0w7Ozs7O047OzswMDRBOzswMDRBCiswMDZCO0xBVElOIFNNQUxMIExFVFRFUiBLO0xsOzA7TDs7Ozs7Tjs7OzAwNEI7OzAwNEIKKzAwNkM7TEFUSU4gU01BTEwgTEVUVEVSIEw7TGw7MDtMOzs7OztOOzs7MDA0Qzs7MDA0QworMDA2RDtMQVRJTiBTTUFMTCBMRVRURVIgTTtMbDswO0w7Ozs7O047OzswMDREOzswMDRECiswMDZFO0xBVElOIFNNQUxMIExFVFRFUiBOO0xsOzA7TDs7Ozs7Tjs7OzAwNEU7OzAwNEUKKzAwNkY7TEFUSU4gU01BTEwgTEVUVEVSIE87TGw7MDtMOzs7OztOOzs7MDA0Rjs7MDA0RgorMDA3MDtMQVRJTiBTTUFMTCBMRVRURVIgUDtMbDswO0w7Ozs7O047OzswMDUwOzswMDUwCiswMDcxO0xBVElOIFNNQUxMIExFVFRFUiBRO0xsOzA7TDs7Ozs7Tjs7OzAwNTE7OzAwNTEKKzAwNzI7TEFUSU4gU01BTEwgTEVUVEVSIFI7TGw7MDtMOzs7OztOOzs7MDA1Mjs7MDA1MgorMDA3MztMQVRJTiBTTUFMTCBMRVRURVIgUztMbDswO0w7Ozs7O047OzswMDUzOzswMDUzCiswMDc0O0xBVElOIFNNQUxMIExFVFRFUiBUO0xsOzA7TDs7Ozs7Tjs7OzAwNTQ7OzAwNTQKKzAwNzU7TEFUSU4gU01BTEwgTEVUVEVSIFU7TGw7MDtMOzs7OztOOzs7MDA1NTs7MDA1NQorMDA3NjtMQVRJTiBTTUFMTCBMRVRURVIgVjtMbDswO0w7Ozs7O047OzswMDU2OzswMDU2CiswMDc3O0xBVElOIFNNQUxMIExFVFRFUiBXO0xsOzA7TDs7Ozs7Tjs7OzAwNTc7OzAwNTcKKzAwNzg7TEFUSU4gU01BTEwgTEVUVEVSIFg7TGw7MDtMOzs7OztOOzs7MDA1ODs7MDA1OAorMDA3OTtMQVRJTiBTTUFMTCBMRVRURVIgWTtMbDswO0w7Ozs7O047OzswMDU5OzswMDU5CiswMDdBO0xBVElOIFNNQUxMIExFVFRFUiBaO0xsOzA7TDs7Ozs7Tjs7OzAwNUE7OzAwNUEKKzAwN0I7TEVGVCBDVVJMWSBCUkFDS0VUO1BzOzA7T047Ozs7O1k7T1BFTklORyBDVVJMWSBCUkFDS0VUOzs7OworMDA3QztWRVJUSUNBTCBMSU5FO1NtOzA7T047Ozs7O047VkVSVElDQUwgQkFSOzs7OworMDA3RDtSSUdIVCBDVVJMWSBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBDVVJMWSBCUkFDS0VUOzs7OworMDA3RTtUSUxERTtTbTswO09OOzs7OztOOzs7OzsKKzAwN0Y7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047REVMRVRFOzs7OworMDA4MDs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDgxOzxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwODI7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA4Mzs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDg0Ozxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwODU7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA4Njs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDg3Ozxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwODg7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA4OTs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDhBOzxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOEI7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA4Qzs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDhEOzxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOEU7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA4Rjs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDkwOzxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOTE7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA5Mjs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDkzOzxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOTQ7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA5NTs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDk2Ozxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOTc7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA5ODs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDk5Ozxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOUE7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA5Qjs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDlDOzxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOUQ7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA5RTs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDlGOzxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwQTA7Tk8tQlJFQUsgU1BBQ0U7WnM7MDtXUzs8bm9CcmVhaz4gMDAyMDs7OztOO05PTi1CUkVBS0lORyBTUEFDRTs7OzsKKzAwQTE7SU5WRVJURUQgRVhDTEFNQVRJT04gTUFSSztQbzswO09OOzs7OztOOzs7OzsKKzAwQTI7Q0VOVCBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMDBBMztQT1VORCBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMDBBNDtDVVJSRU5DWSBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMDBBNTtZRU4gU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzAwQTY7QlJPS0VOIEJBUjtTbzswO09OOzs7OztOO0JST0tFTiBWRVJUSUNBTCBCQVI7Ozs7CiswMEE3O1NFQ1RJT04gU0lHTjtTbzswO09OOzs7OztOOzs7OzsKKzAwQTg7RElBRVJFU0lTO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzA4Ozs7O047U1BBQ0lORyBESUFFUkVTSVM7Ozs7CiswMEE5O0NPUFlSSUdIVCBTSUdOO1NvOzA7T047Ozs7O047Ozs7OworMDBBQTtGRU1JTklORSBPUkRJTkFMIElORElDQVRPUjtMbDswO0w7PHN1cGVyPiAwMDYxOzs7O047Ozs7OworMDBBQjtMRUZULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSztQaTswO09OOzs7OztOO0xFRlQgUE9JTlRJTkcgR1VJTExFTUVUOzs7OworMDBBQztOT1QgU0lHTjtTbTswO09OOzs7OztOOzs7OzsKKzAwQUQ7U09GVCBIWVBIRU47UGQ7MDtPTjs7Ozs7Tjs7Ozs7CiswMEFFO1JFR0lTVEVSRUQgU0lHTjtTbzswO09OOzs7OztOO1JFR0lTVEVSRUQgVFJBREUgTUFSSyBTSUdOOzs7OworMDBBRjtNQUNST047U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDQ7Ozs7TjtTUEFDSU5HIE1BQ1JPTjs7OzsKKzAwQjA7REVHUkVFIFNJR047U287MDtFVDs7Ozs7Tjs7Ozs7CiswMEIxO1BMVVMtTUlOVVMgU0lHTjtTbTswO0VUOzs7OztOO1BMVVMtT1ItTUlOVVMgU0lHTjs7OzsKKzAwQjI7U1VQRVJTQ1JJUFQgVFdPO05vOzA7RU47PHN1cGVyPiAwMDMyOzI7MjsyO047U1VQRVJTQ1JJUFQgRElHSVQgVFdPOzs7OworMDBCMztTVVBFUlNDUklQVCBUSFJFRTtObzswO0VOOzxzdXBlcj4gMDAzMzszOzM7MztOO1NVUEVSU0NSSVBUIERJR0lUIFRIUkVFOzs7OworMDBCNDtBQ1VURSBBQ0NFTlQ7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDE7Ozs7TjtTUEFDSU5HIEFDVVRFOzs7OworMDBCNTtNSUNSTyBTSUdOO0xsOzA7TDs8Y29tcGF0PiAwM0JDOzs7O047Ozs7OworMDBCNjtQSUxDUk9XIFNJR047U287MDtPTjs7Ozs7TjtQQVJBR1JBUEggU0lHTjs7OzsKKzAwQjc7TUlERExFIERPVDtQbzswO09OOzs7OztOOzs7OzsKKzAwQjg7Q0VESUxMQTtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMyNzs7OztOO1NQQUNJTkcgQ0VESUxMQTs7OzsKKzAwQjk7U1VQRVJTQ1JJUFQgT05FO05vOzA7RU47PHN1cGVyPiAwMDMxOzE7MTsxO047U1VQRVJTQ1JJUFQgRElHSVQgT05FOzs7OworMDBCQTtNQVNDVUxJTkUgT1JESU5BTCBJTkRJQ0FUT1I7TGw7MDtMOzxzdXBlcj4gMDA2Rjs7OztOOzs7OzsKKzAwQkI7UklHSFQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLO1BmOzA7T047Ozs7O047UklHSFQgUE9JTlRJTkcgR1VJTExFTUVUOzs7OworMDBCQztWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVI7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzEgMjA0NCAwMDM0Ozs7MS80O047RlJBQ1RJT04gT05FIFFVQVJURVI7Ozs7CiswMEJEO1ZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRjtObzswO09OOzxmcmFjdGlvbj4gMDAzMSAyMDQ0IDAwMzI7OzsxLzI7TjtGUkFDVElPTiBPTkUgSEFMRjs7OzsKKzAwQkU7VlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTO05vOzA7T047PGZyYWN0aW9uPiAwMDMzIDIwNDQgMDAzNDs7OzMvNDtOO0ZSQUNUSU9OIFRIUkVFIFFVQVJURVJTOzs7OworMDBCRjtJTlZFUlRFRCBRVUVTVElPTiBNQVJLO1BvOzA7T047Ozs7O047Ozs7OworMDBDMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkU7THU7MDtMOzAwNDEgMDMwMDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgR1JBVkU7OzswMEUwOworMDBDMTtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEU7THU7MDtMOzAwNDEgMDMwMTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgQUNVVEU7OzswMEUxOworMDBDMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA0MSAwMzAyOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBDSVJDVU1GTEVYOzs7MDBFMjsKKzAwQzM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFO0x1OzA7TDswMDQxIDAzMDM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFRJTERFOzs7MDBFMzsKKzAwQzQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDA0MSAwMzA4Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBESUFFUkVTSVM7OzswMEU0OworMDBDNTtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRTtMdTswO0w7MDA0MSAwMzBBOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBSSU5HOzs7MDBFNTsKKzAwQzY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQUU7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgRTs7OzAwRTY7CiswMEM3O0xBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBO0x1OzA7TDswMDQzIDAzMjc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIENFRElMTEE7OzswMEU3OworMDBDODtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggR1JBVkU7THU7MDtMOzAwNDUgMDMwMDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEUgR1JBVkU7OzswMEU4OworMDBDOTtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQUNVVEU7THU7MDtMOzAwNDUgMDMwMTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEUgQUNVVEU7OzswMEU5OworMDBDQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA0NSAwMzAyOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBDSVJDVU1GTEVYOzs7MDBFQTsKKzAwQ0I7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDA0NSAwMzA4Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBESUFFUkVTSVM7OzswMEVCOworMDBDQztMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkU7THU7MDtMOzAwNDkgMDMwMDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEkgR1JBVkU7OzswMEVDOworMDBDRDtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQUNVVEU7THU7MDtMOzAwNDkgMDMwMTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEkgQUNVVEU7OzswMEVEOworMDBDRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA0OSAwMzAyOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBDSVJDVU1GTEVYOzs7MDBFRTsKKzAwQ0Y7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDA0OSAwMzA4Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBESUFFUkVTSVM7OzswMEVGOworMDBEMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBFVEg7THU7MDtMOzs7OztOOztJY2VsYW5kaWM7OzAwRjA7CiswMEQxO0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBUSUxERTtMdTswO0w7MDA0RSAwMzAzOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBUSUxERTs7OzAwRjE7CiswMEQyO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBHUkFWRTtMdTswO0w7MDA0RiAwMzAwOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBHUkFWRTs7OzAwRjI7CiswMEQzO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBBQ1VURTtMdTswO0w7MDA0RiAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBBQ1VURTs7OzAwRjM7CiswMEQ0O0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDRGIDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIENJUkNVTUZMRVg7OzswMEY0OworMDBENTtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREU7THU7MDtMOzAwNEYgMDMwMzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gVElMREU7OzswMEY1OworMDBENjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDRGIDAzMDg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIERJQUVSRVNJUzs7OzAwRjY7CiswMEQ3O01VTFRJUExJQ0FUSU9OIFNJR047U207MDtPTjs7Ozs7Tjs7Ozs7CiswMEQ4O0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0U7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gU0xBU0g7OzswMEY4OworMDBEOTtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggR1JBVkU7THU7MDtMOzAwNTUgMDMwMDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgR1JBVkU7OzswMEY5OworMDBEQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQUNVVEU7THU7MDtMOzAwNTUgMDMwMTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgQUNVVEU7OzswMEZBOworMDBEQjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA1NSAwMzAyOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBDSVJDVU1GTEVYOzs7MDBGQjsKKzAwREM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDA1NSAwMzA4Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBESUFFUkVTSVM7OzswMEZDOworMDBERDtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQUNVVEU7THU7MDtMOzAwNTkgMDMwMTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFkgQUNVVEU7OzswMEZEOworMDBERTtMQVRJTiBDQVBJVEFMIExFVFRFUiBUSE9STjtMdTswO0w7Ozs7O047O0ljZWxhbmRpYzs7MDBGRTsKKzAwREY7TEFUSU4gU01BTEwgTEVUVEVSIFNIQVJQIFM7TGw7MDtMOzs7OztOOztHZXJtYW47OzsKKzAwRTA7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBHUkFWRTtMbDswO0w7MDA2MSAwMzAwOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgR1JBVkU7OzAwQzA7OzAwQzAKKzAwRTE7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBBQ1VURTtMbDswO0w7MDA2MSAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgQUNVVEU7OzAwQzE7OzAwQzEKKzAwRTI7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDYxIDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBDSVJDVU1GTEVYOzswMEMyOzswMEMyCiswMEUzO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggVElMREU7TGw7MDtMOzAwNjEgMDMwMzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIFRJTERFOzswMEMzOzswMEMzCiswMEU0O0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTO0xsOzA7TDswMDYxIDAzMDg7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBESUFFUkVTSVM7OzAwQzQ7OzAwQzQKKzAwRTU7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFO0xsOzA7TDswMDYxIDAzMEE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBSSU5HOzswMEM1OzswMEM1CiswMEU2O0xBVElOIFNNQUxMIExFVFRFUiBBRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgRTs7MDBDNjs7MDBDNgorMDBFNztMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEE7TGw7MDtMOzAwNjMgMDMyNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDIENFRElMTEE7OzAwQzc7OzAwQzcKKzAwRTg7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRTtMbDswO0w7MDA2NSAwMzAwOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEUgR1JBVkU7OzAwQzg7OzAwQzgKKzAwRTk7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURTtMbDswO0w7MDA2NSAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEUgQUNVVEU7OzAwQzk7OzAwQzkKKzAwRUE7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDY1IDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRSBDSVJDVU1GTEVYOzswMENBOzswMENBCiswMEVCO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTO0xsOzA7TDswMDY1IDAzMDg7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRSBESUFFUkVTSVM7OzAwQ0I7OzAwQ0IKKzAwRUM7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRTtMbDswO0w7MDA2OSAwMzAwOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEkgR1JBVkU7OzAwQ0M7OzAwQ0MKKzAwRUQ7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURTtMbDswO0w7MDA2OSAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEkgQUNVVEU7OzAwQ0Q7OzAwQ0QKKzAwRUU7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDY5IDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSSBDSVJDVU1GTEVYOzswMENFOzswMENFCiswMEVGO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTO0xsOzA7TDswMDY5IDAzMDg7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSSBESUFFUkVTSVM7OzAwQ0Y7OzAwQ0YKKzAwRjA7TEFUSU4gU01BTEwgTEVUVEVSIEVUSDtMbDswO0w7Ozs7O047O0ljZWxhbmRpYzswMEQwOzswMEQwCiswMEYxO0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREU7TGw7MDtMOzAwNkUgMDMwMzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBOIFRJTERFOzswMEQxOzswMEQxCiswMEYyO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggR1JBVkU7TGw7MDtMOzAwNkYgMDMwMDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIEdSQVZFOzswMEQyOzswMEQyCiswMEYzO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEU7TGw7MDtMOzAwNkYgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIEFDVVRFOzswMEQzOzswMEQzCiswMEY0O0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA2RiAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gQ0lSQ1VNRkxFWDs7MDBENDs7MDBENAorMDBGNTtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFO0xsOzA7TDswMDZGIDAzMDM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBUSUxERTs7MDBENTs7MDBENQorMDBGNjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA2RiAwMzA4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gRElBRVJFU0lTOzswMEQ2OzswMEQ2CiswMEY3O0RJVklTSU9OIFNJR047U207MDtPTjs7Ozs7Tjs7Ozs7CiswMEY4O0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBTTEFTSDs7MDBEODs7MDBEOAorMDBGOTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFO0xsOzA7TDswMDc1IDAzMDA7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBHUkFWRTs7MDBEOTs7MDBEOQorMDBGQTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFO0xsOzA7TDswMDc1IDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBBQ1VURTs7MDBEQTs7MDBEQQorMDBGQjtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNzUgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIENJUkNVTUZMRVg7OzAwREI7OzAwREIKKzAwRkM7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzAwNzUgMDMwODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIERJQUVSRVNJUzs7MDBEQzs7MDBEQworMDBGRDtMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFO0xsOzA7TDswMDc5IDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWSBBQ1VURTs7MDBERDs7MDBERAorMDBGRTtMQVRJTiBTTUFMTCBMRVRURVIgVEhPUk47TGw7MDtMOzs7OztOOztJY2VsYW5kaWM7MDBERTs7MDBERQorMDBGRjtMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA3OSAwMzA4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFkgRElBRVJFU0lTOzswMTc4OzswMTc4CiswMTAwO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBNQUNST047THU7MDtMOzAwNDEgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgTUFDUk9OOzs7MDEwMTsKKzAxMDE7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBNQUNST047TGw7MDtMOzAwNjEgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIE1BQ1JPTjs7MDEwMDs7MDEwMAorMDEwMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkU7THU7MDtMOzAwNDEgMDMwNjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgQlJFVkU7OzswMTAzOworMDEwMztMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFO0xsOzA7TDswMDYxIDAzMDY7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBCUkVWRTs7MDEwMjs7MDEwMgorMDEwNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggT0dPTkVLO0x1OzA7TDswMDQxIDAzMjg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIE9HT05FSzs7OzAxMDU7CiswMTA1O0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggT0dPTkVLO0xsOzA7TDswMDYxIDAzMjg7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBPR09ORUs7OzAxMDQ7OzAxMDQKKzAxMDY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIEFDVVRFO0x1OzA7TDswMDQzIDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIEFDVVRFOzs7MDEwNzsKKzAxMDc7TEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBBQ1VURTtMbDswO0w7MDA2MyAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEMgQUNVVEU7OzAxMDY7OzAxMDYKKzAxMDg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNDMgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEMgQ0lSQ1VNRkxFWDs7OzAxMDk7CiswMTA5O0xBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA2MyAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEMgQ0lSQ1VNRkxFWDs7MDEwODs7MDEwOAorMDEwQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDQzIDAzMDc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIERPVDs7OzAxMEI7CiswMTBCO0xBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDYzIDAzMDc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQyBET1Q7OzAxMEE7OzAxMEEKKzAxMEM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENBUk9OO0x1OzA7TDswMDQzIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIEhBQ0VLOzs7MDEwRDsKKzAxMEQ7TEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDQVJPTjtMbDswO0w7MDA2MyAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEMgSEFDRUs7OzAxMEM7OzAxMEMKKzAxMEU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIENBUk9OO0x1OzA7TDswMDQ0IDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIEhBQ0VLOzs7MDEwRjsKKzAxMEY7TEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBDQVJPTjtMbDswO0w7MDA2NCAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEQgSEFDRUs7OzAxMEU7OzAxMEUKKzAxMTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBCQVI7OzswMTExOworMDExMTtMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEQgQkFSOzswMTEwOzswMTEwCiswMTEyO0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBNQUNST047THU7MDtMOzAwNDUgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEUgTUFDUk9OOzs7MDExMzsKKzAxMTM7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBNQUNST047TGw7MDtMOzAwNjUgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFIE1BQ1JPTjs7MDExMjs7MDExMgorMDExNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQlJFVkU7THU7MDtMOzAwNDUgMDMwNjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEUgQlJFVkU7OzswMTE1OworMDExNTtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEJSRVZFO0xsOzA7TDswMDY1IDAzMDY7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRSBCUkVWRTs7MDExNDs7MDExNAorMDExNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDQ1IDAzMDc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIERPVDs7OzAxMTc7CiswMTE3O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDY1IDAzMDc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRSBET1Q7OzAxMTY7OzAxMTYKKzAxMTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE9HT05FSztMdTswO0w7MDA0NSAwMzI4Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBPR09ORUs7OzswMTE5OworMDExOTtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE9HT05FSztMbDswO0w7MDA2NSAwMzI4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEUgT0dPTkVLOzswMTE4OzswMTE4CiswMTFBO0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDQVJPTjtMdTswO0w7MDA0NSAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBIQUNFSzs7OzAxMUI7CiswMTFCO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0FST047TGw7MDtMOzAwNjUgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFIEhBQ0VLOzswMTFBOzswMTFBCiswMTFDO0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDQ3IDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIENJUkNVTUZMRVg7OzswMTFEOworMDExRDtMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNjcgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBHIENJUkNVTUZMRVg7OzAxMUM7OzAxMUMKKzAxMUU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIEJSRVZFO0x1OzA7TDswMDQ3IDAzMDY7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIEJSRVZFOzs7MDExRjsKKzAxMUY7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBCUkVWRTtMbDswO0w7MDA2NyAwMzA2Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEcgQlJFVkU7OzAxMUU7OzAxMUUKKzAxMjA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0NyAwMzA3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBET1Q7OzswMTIxOworMDEyMTtMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2NyAwMzA3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEcgRE9UOzswMTIwOzswMTIwCiswMTIyO0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBDRURJTExBO0x1OzA7TDswMDQ3IDAzMjc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIENFRElMTEE7OzswMTIzOworMDEyMztMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIENFRElMTEE7TGw7MDtMOzAwNjcgMDMyNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBHIENFRElMTEE7OzAxMjI7OzAxMjIKKzAxMjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNDggMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEggQ0lSQ1VNRkxFWDs7OzAxMjU7CiswMTI1O0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA2OCAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEggQ0lSQ1VNRkxFWDs7MDEyNDs7MDEyNAorMDEyNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggU1RST0tFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIEJBUjs7OzAxMjc7CiswMTI3O0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSCBCQVI7OzAxMjY7OzAxMjYKKzAxMjg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIFRJTERFO0x1OzA7TDswMDQ5IDAzMDM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFRJTERFOzs7MDEyOTsKKzAxMjk7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBUSUxERTtMbDswO0w7MDA2OSAwMzAzOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEkgVElMREU7OzAxMjg7OzAxMjgKKzAxMkE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE1BQ1JPTjtMdTswO0w7MDA0OSAwMzA0Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBNQUNST047OzswMTJCOworMDEyQjtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIE1BQ1JPTjtMbDswO0w7MDA2OSAwMzA0Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEkgTUFDUk9OOzswMTJBOzswMTJBCiswMTJDO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBCUkVWRTtMdTswO0w7MDA0OSAwMzA2Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBCUkVWRTs7OzAxMkQ7CiswMTJEO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQlJFVkU7TGw7MDtMOzAwNjkgMDMwNjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIEJSRVZFOzswMTJDOzswMTJDCiswMTJFO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBPR09ORUs7THU7MDtMOzAwNDkgMDMyODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEkgT0dPTkVLOzs7MDEyRjsKKzAxMkY7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBPR09ORUs7TGw7MDtMOzAwNjkgMDMyODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIE9HT05FSzs7MDEyRTs7MDEyRQorMDEzMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDQ5IDAzMDc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIERPVDs7OzAwNjk7CiswMTMxO0xBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEk7TGw7MDtMOzs7OztOOzs7MDA0OTs7MDA0OQorMDEzMjtMQVRJTiBDQVBJVEFMIExJR0FUVVJFIElKO0x1OzA7TDs8Y29tcGF0PiAwMDQ5IDAwNEE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIEo7OzswMTMzOworMDEzMztMQVRJTiBTTUFMTCBMSUdBVFVSRSBJSjtMbDswO0w7PGNvbXBhdD4gMDA2OSAwMDZBOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEkgSjs7MDEzMjs7MDEzMgorMDEzNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBKIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA0QSAwMzAyOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSiBDSVJDVU1GTEVYOzs7MDEzNTsKKzAxMzU7TEFUSU4gU01BTEwgTEVUVEVSIEogV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDZBIDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSiBDSVJDVU1GTEVYOzswMTM0OzswMTM0CiswMTM2O0xBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBDRURJTExBO0x1OzA7TDswMDRCIDAzMjc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBLIENFRElMTEE7OzswMTM3OworMDEzNztMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIENFRElMTEE7TGw7MDtMOzAwNkIgMDMyNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBLIENFRElMTEE7OzAxMzY7OzAxMzYKKzAxMzg7TEFUSU4gU01BTEwgTEVUVEVSIEtSQTtMbDswO0w7Ozs7O047O0dyZWVubGFuZGljOzs7CiswMTM5O0xBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBBQ1VURTtMdTswO0w7MDA0QyAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBBQ1VURTs7OzAxM0E7CiswMTNBO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQUNVVEU7TGw7MDtMOzAwNkMgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBMIEFDVVRFOzswMTM5OzswMTM5CiswMTNCO0xBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDRURJTExBO0x1OzA7TDswMDRDIDAzMjc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIENFRElMTEE7OzswMTNDOworMDEzQztMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIENFRElMTEE7TGw7MDtMOzAwNkMgMDMyNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBMIENFRElMTEE7OzAxM0I7OzAxM0IKKzAxM0Q7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENBUk9OO0x1OzA7TDswMDRDIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIEhBQ0VLOzs7MDEzRTsKKzAxM0U7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDQVJPTjtMbDswO0w7MDA2QyAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEwgSEFDRUs7OzAxM0Q7OzAxM0QKKzAxM0Y7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIE1JRERMRSBET1Q7THU7MDtMOzxjb21wYXQ+IDAwNEMgMDBCNzs7OztOOzs7OzAxNDA7CiswMTQwO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggTUlERExFIERPVDtMbDswO0w7PGNvbXBhdD4gMDA2QyAwMEI3Ozs7O047OzswMTNGOzswMTNGCiswMTQxO0xBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBTVFJPS0U7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEwgU0xBU0g7OzswMTQyOworMDE0MjtMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEwgU0xBU0g7OzAxNDE7OzAxNDEKKzAxNDM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIEFDVVRFO0x1OzA7TDswMDRFIDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIEFDVVRFOzs7MDE0NDsKKzAxNDQ7TEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBBQ1VURTtMbDswO0w7MDA2RSAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE4gQUNVVEU7OzAxNDM7OzAxNDMKKzAxNDU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENFRElMTEE7THU7MDtMOzAwNEUgMDMyNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE4gQ0VESUxMQTs7OzAxNDY7CiswMTQ2O0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0VESUxMQTtMbDswO0w7MDA2RSAwMzI3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE4gQ0VESUxMQTs7MDE0NTs7MDE0NQorMDE0NztMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQ0FST047THU7MDtMOzAwNEUgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE4gSEFDRUs7OzswMTQ4OworMDE0ODtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENBUk9OO0xsOzA7TDswMDZFIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTiBIQUNFSzs7MDE0Nzs7MDE0NworMDE0OTtMQVRJTiBTTUFMTCBMRVRURVIgTiBQUkVDRURFRCBCWSBBUE9TVFJPUEhFO0xsOzA7TDs8Y29tcGF0PiAwMkJDIDAwNkU7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQVBPU1RST1BIRSBOOzs7OworMDE0QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBFTkc7THU7MDtMOzs7OztOOztTYW1pOzswMTRCOworMDE0QjtMQVRJTiBTTUFMTCBMRVRURVIgRU5HO0xsOzA7TDs7Ozs7Tjs7U2FtaTswMTRBOzswMTRBCiswMTRDO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBNQUNST047THU7MDtMOzAwNEYgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gTUFDUk9OOzs7MDE0RDsKKzAxNEQ7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBNQUNST047TGw7MDtMOzAwNkYgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIE1BQ1JPTjs7MDE0Qzs7MDE0QworMDE0RTtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQlJFVkU7THU7MDtMOzAwNEYgMDMwNjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gQlJFVkU7OzswMTRGOworMDE0RjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEJSRVZFO0xsOzA7TDswMDZGIDAzMDY7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBCUkVWRTs7MDE0RTs7MDE0RQorMDE1MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRE9VQkxFIEFDVVRFO0x1OzA7TDswMDRGIDAzMEI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIERPVUJMRSBBQ1VURTs7OzAxNTE7CiswMTUxO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9VQkxFIEFDVVRFO0xsOzA7TDswMDZGIDAzMEI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBET1VCTEUgQUNVVEU7OzAxNTA7OzAxNTAKKzAxNTI7TEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBPRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBFOzs7MDE1MzsKKzAxNTM7TEFUSU4gU01BTEwgTElHQVRVUkUgT0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIEU7OzAxNTI7OzAxNTIKKzAxNTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIEFDVVRFO0x1OzA7TDswMDUyIDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIEFDVVRFOzs7MDE1NTsKKzAxNTU7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBBQ1VURTtMbDswO0w7MDA3MiAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFIgQUNVVEU7OzAxNTQ7OzAxNTQKKzAxNTY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIENFRElMTEE7THU7MDtMOzAwNTIgMDMyNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFIgQ0VESUxMQTs7OzAxNTc7CiswMTU3O0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggQ0VESUxMQTtMbDswO0w7MDA3MiAwMzI3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFIgQ0VESUxMQTs7MDE1Njs7MDE1NgorMDE1ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQ0FST047THU7MDtMOzAwNTIgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFIgSEFDRUs7OzswMTU5OworMDE1OTtMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENBUk9OO0xsOzA7TDswMDcyIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUiBIQUNFSzs7MDE1ODs7MDE1OAorMDE1QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQUNVVEU7THU7MDtMOzAwNTMgMDMwMTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFMgQUNVVEU7OzswMTVCOworMDE1QjtMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIEFDVVRFO0xsOzA7TDswMDczIDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUyBBQ1VURTs7MDE1QTs7MDE1QQorMDE1QztMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA1MyAwMzAyOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBDSVJDVU1GTEVYOzs7MDE1RDsKKzAxNUQ7TEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDczIDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUyBDSVJDVU1GTEVYOzswMTVDOzswMTVDCiswMTVFO0xBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDRURJTExBO0x1OzA7TDswMDUzIDAzMjc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIENFRElMTEE7OzswMTVGOworMDE1RjtMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENFRElMTEE7TGw7MDtMOzAwNzMgMDMyNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBTIENFRElMTEE7OzAxNUU7OzAxNUUKKzAxNjA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OO0x1OzA7TDswMDUzIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIEhBQ0VLOzs7MDE2MTsKKzAxNjE7TEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTjtMbDswO0w7MDA3MyAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFMgSEFDRUs7OzAxNjA7OzAxNjAKKzAxNjI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENFRElMTEE7THU7MDtMOzAwNTQgMDMyNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFQgQ0VESUxMQTs7OzAxNjM7CiswMTYzO0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ0VESUxMQTtMbDswO0w7MDA3NCAwMzI3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFQgQ0VESUxMQTs7MDE2Mjs7MDE2MgorMDE2NDtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggQ0FST047THU7MDtMOzAwNTQgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFQgSEFDRUs7OzswMTY1OworMDE2NTtMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIENBUk9OO0xsOzA7TDswMDc0IDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVCBIQUNFSzs7MDE2NDs7MDE2NAorMDE2NjtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggU1RST0tFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIEJBUjs7OzAxNjc7CiswMTY3O0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVCBCQVI7OzAxNjY7OzAxNjYKKzAxNjg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIFRJTERFO0x1OzA7TDswMDU1IDAzMDM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFRJTERFOzs7MDE2OTsKKzAxNjk7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBUSUxERTtMbDswO0w7MDA3NSAwMzAzOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgVElMREU7OzAxNjg7OzAxNjgKKzAxNkE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTjtMdTswO0w7MDA1NSAwMzA0Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBNQUNST047OzswMTZCOworMDE2QjtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE1BQ1JPTjtMbDswO0w7MDA3NSAwMzA0Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgTUFDUk9OOzswMTZBOzswMTZBCiswMTZDO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBCUkVWRTtMdTswO0w7MDA1NSAwMzA2Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBCUkVWRTs7OzAxNkQ7CiswMTZEO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQlJFVkU7TGw7MDtMOzAwNzUgMDMwNjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIEJSRVZFOzswMTZDOzswMTZDCiswMTZFO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFO0x1OzA7TDswMDU1IDAzMEE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFJJTkc7OzswMTZGOworMDE2RjtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIFJJTkcgQUJPVkU7TGw7MDtMOzAwNzUgMDMwQTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIFJJTkc7OzAxNkU7OzAxNkUKKzAxNzA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERPVUJMRSBBQ1VURTtMdTswO0w7MDA1NSAwMzBCOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBET1VCTEUgQUNVVEU7OzswMTcxOworMDE3MTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERPVUJMRSBBQ1VURTtMbDswO0w7MDA3NSAwMzBCOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgRE9VQkxFIEFDVVRFOzswMTcwOzswMTcwCiswMTcyO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBPR09ORUs7THU7MDtMOzAwNTUgMDMyODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgT0dPTkVLOzs7MDE3MzsKKzAxNzM7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBPR09ORUs7TGw7MDtMOzAwNzUgMDMyODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIE9HT05FSzs7MDE3Mjs7MDE3MgorMDE3NDtMQVRJTiBDQVBJVEFMIExFVFRFUiBXIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA1NyAwMzAyOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBDSVJDVU1GTEVYOzs7MDE3NTsKKzAxNzU7TEFUSU4gU01BTEwgTEVUVEVSIFcgV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDc3IDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVyBDSVJDVU1GTEVYOzswMTc0OzswMTc0CiswMTc2O0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDU5IDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIENJUkNVTUZMRVg7OzswMTc3OworMDE3NztMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNzkgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBZIENJUkNVTUZMRVg7OzAxNzY7OzAxNzYKKzAxNzg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDA1OSAwMzA4Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBESUFFUkVTSVM7OzswMEZGOworMDE3OTtMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQUNVVEU7THU7MDtMOzAwNUEgMDMwMTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFogQUNVVEU7OzswMTdBOworMDE3QTtMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIEFDVVRFO0xsOzA7TDswMDdBIDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWiBBQ1VURTs7MDE3OTs7MDE3OQorMDE3QjtMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDVBIDAzMDc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBaIERPVDs7OzAxN0M7CiswMTdDO0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDdBIDAzMDc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWiBET1Q7OzAxN0I7OzAxN0IKKzAxN0Q7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENBUk9OO0x1OzA7TDswMDVBIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBaIEhBQ0VLOzs7MDE3RTsKKzAxN0U7TEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBDQVJPTjtMbDswO0w7MDA3QSAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFogSEFDRUs7OzAxN0Q7OzAxN0QKKzAxN0Y7TEFUSU4gU01BTEwgTEVUVEVSIExPTkcgUztMbDswO0w7PGNvbXBhdD4gMDA3Mzs7OztOOzs7MDA1Mzs7MDA1MworMDE4MDtMQVRJTiBTTUFMTCBMRVRURVIgQiBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEIgQkFSOzs7OworMDE4MTtMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFdJVEggSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQiBIT09LOzs7MDI1MzsKKzAxODI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQiBXSVRIIFRPUEJBUjtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQiBUT1BCQVI7OzswMTgzOworMDE4MztMQVRJTiBTTUFMTCBMRVRURVIgQiBXSVRIIFRPUEJBUjtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEIgVE9QQkFSOzswMTgyOzswMTgyCiswMTg0O0xBVElOIENBUElUQUwgTEVUVEVSIFRPTkUgU0lYO0x1OzA7TDs7Ozs7Tjs7OzswMTg1OworMDE4NTtMQVRJTiBTTUFMTCBMRVRURVIgVE9ORSBTSVg7TGw7MDtMOzs7OztOOzs7MDE4NDs7MDE4NAorMDE4NjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPUEVOIE87THU7MDtMOzs7OztOOzs7OzAyNTQ7CiswMTg3O0xBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIEhPT0s7OzswMTg4OworMDE4ODtMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDIEhPT0s7OzAxODc7OzAxODcKKzAxODk7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQUZSSUNBTiBEO0x1OzA7TDs7Ozs7Tjs7OzswMjU2OworMDE4QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBIT09LOzs7MDI1NzsKKzAxOEI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIFRPUEJBUjtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBUT1BCQVI7OzswMThDOworMDE4QztMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIFRPUEJBUjtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEQgVE9QQkFSOzswMThCOzswMThCCiswMThEO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgREVMVEE7TGw7MDtMOzs7OztOOzs7OzsKKzAxOEU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUkVWRVJTRUQgRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVFVSTkVEIEU7OzswMUREOworMDE4RjtMQVRJTiBDQVBJVEFMIExFVFRFUiBTQ0hXQTtMdTswO0w7Ozs7O047Ozs7MDI1OTsKKzAxOTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgT1BFTiBFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFUFNJTE9OOzs7MDI1QjsKKzAxOTE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRiBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEYgSE9PSzs7OzAxOTI7CiswMTkyO0xBVElOIFNNQUxMIExFVFRFUiBGIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBGOzswMTkxOzswMTkxCiswMTkzO0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIEhPT0s7OzswMjYwOworMDE5NDtMQVRJTiBDQVBJVEFMIExFVFRFUiBHQU1NQTtMdTswO0w7Ozs7O047Ozs7MDI2MzsKKzAxOTU7TEFUSU4gU01BTEwgTEVUVEVSIEhWO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSCBWOzs7OworMDE5NjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJT1RBO0x1OzA7TDs7Ozs7Tjs7OzswMjY5OworMDE5NztMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggU1RST0tFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBCQVJSRUQgSTs7OzAyNjg7CiswMTk4O0xBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBLIEhPT0s7OzswMTk5OworMDE5OTtMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBLIEhPT0s7OzAxOTg7OzAxOTgKKzAxOUE7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBCQVI7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBCQVJSRUQgTDs7OzsKKzAxOUI7TEFUSU4gU01BTEwgTEVUVEVSIExBTUJEQSBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEJBUlJFRCBMQU1CREE7Ozs7CiswMTlDO0xBVElOIENBUElUQUwgTEVUVEVSIFRVUk5FRCBNO0x1OzA7TDs7Ozs7Tjs7OzswMjZGOworMDE5RDtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggTEVGVCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIEhPT0s7OzswMjcyOworMDE5RTtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIExPTkcgUklHSFQgTEVHO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMTlGO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBNSURETEUgVElMREU7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEJBUlJFRCBPOzs7MDI3NTsKKzAxQTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk47THU7MDtMOzAwNEYgMDMxQjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gSE9STjs7OzAxQTE7CiswMUExO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggSE9STjtMbDswO0w7MDA2RiAwMzFCOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gSE9STjs7MDFBMDs7MDFBMAorMDFBMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPSTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBJOzs7MDFBMzsKKzAxQTM7TEFUSU4gU01BTEwgTEVUVEVSIE9JO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBJOzswMUEyOzswMUEyCiswMUE0O0xBVElOIENBUElUQUwgTEVUVEVSIFAgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBQIEhPT0s7OzswMUE1OworMDFBNTtMQVRJTiBTTUFMTCBMRVRURVIgUCBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBQIEhPT0s7OzAxQTQ7OzAxQTQKKzAxQTY7TEFUSU4gTEVUVEVSIFlSO0x1OzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgWSBSOzs7OworMDFBNztMQVRJTiBDQVBJVEFMIExFVFRFUiBUT05FIFRXTztMdTswO0w7Ozs7O047Ozs7MDFBODsKKzAxQTg7TEFUSU4gU01BTEwgTEVUVEVSIFRPTkUgVFdPO0xsOzA7TDs7Ozs7Tjs7OzAxQTc7OzAxQTcKKzAxQTk7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRVNIO0x1OzA7TDs7Ozs7Tjs7OzswMjgzOworMDFBQTtMQVRJTiBMRVRURVIgUkVWRVJTRUQgRVNIIExPT1A7TG87MDtMOzs7OztOOzs7OzsKKzAxQUI7TEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBQQUxBVEFMIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIFBBTEFUQUwgSE9PSzs7OzsKKzAxQUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFQgSE9PSzs7OzAxQUQ7CiswMUFEO0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFQgSE9PSzs7MDFBQzs7MDFBQworMDFBRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggUkVUUk9GTEVYIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFQgUkVUUk9GTEVYIEhPT0s7OzswMjg4OworMDFBRjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9STjtMdTswO0w7MDA1NSAwMzFCOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBIT1JOOzs7MDFCMDsKKzAxQjA7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT1JOO0xsOzA7TDswMDc1IDAzMUI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBIT1JOOzswMUFGOzswMUFGCiswMUIxO0xBVElOIENBUElUQUwgTEVUVEVSIFVQU0lMT047THU7MDtMOzs7OztOOzs7OzAyOEE7CiswMUIyO0xBVElOIENBUElUQUwgTEVUVEVSIFYgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBTQ1JJUFQgVjs7OzAyOEI7CiswMUIzO0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIEhPT0s7OzswMUI0OworMDFCNDtMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBZIEhPT0s7OzAxQjM7OzAxQjMKKzAxQjU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBCQVI7OzswMUI2OworMDFCNjtMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFogQkFSOzswMUI1OzswMUI1CiswMUI3O0xBVElOIENBUElUQUwgTEVUVEVSIEVaSDtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWU9HSDs7OzAyOTI7CiswMUI4O0xBVElOIENBUElUQUwgTEVUVEVSIEVaSCBSRVZFUlNFRDtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgUkVWRVJTRUQgWU9HSDs7OzAxQjk7CiswMUI5O0xBVElOIFNNQUxMIExFVFRFUiBFWkggUkVWRVJTRUQ7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBSRVZFUlNFRCBZT0dIOzswMUI4OzswMUI4CiswMUJBO0xBVElOIFNNQUxMIExFVFRFUiBFWkggV0lUSCBUQUlMO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWU9HSCBXSVRIIFRBSUw7Ozs7CiswMUJCO0xBVElOIExFVFRFUiBUV08gV0lUSCBTVFJPS0U7TG87MDtMOzs7OztOO0xBVElOIExFVFRFUiBUV08gQkFSOzs7OworMDFCQztMQVRJTiBDQVBJVEFMIExFVFRFUiBUT05FIEZJVkU7THU7MDtMOzs7OztOOzs7OzAxQkQ7CiswMUJEO0xBVElOIFNNQUxMIExFVFRFUiBUT05FIEZJVkU7TGw7MDtMOzs7OztOOzs7MDFCQzs7MDFCQworMDFCRTtMQVRJTiBMRVRURVIgSU5WRVJURUQgR0xPVFRBTCBTVE9QIFdJVEggU1RST0tFO0xvOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgSU5WRVJURUQgR0xPVFRBTCBTVE9QIEJBUjs7OzsKKzAxQkY7TEFUSU4gTEVUVEVSIFdZTk47TG87MDtMOzs7OztOOzs7OzsKKzAxQzA7TEFUSU4gTEVUVEVSIERFTlRBTCBDTElDSztMbzswO0w7Ozs7O047TEFUSU4gTEVUVEVSIFBJUEU7Ozs7CiswMUMxO0xBVElOIExFVFRFUiBMQVRFUkFMIENMSUNLO0xvOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgRE9VQkxFIFBJUEU7Ozs7CiswMUMyO0xBVElOIExFVFRFUiBBTFZFT0xBUiBDTElDSztMbzswO0w7Ozs7O047TEFUSU4gTEVUVEVSIFBJUEUgRE9VQkxFIEJBUjs7OzsKKzAxQzM7TEFUSU4gTEVUVEVSIFJFVFJPRkxFWCBDTElDSztMbzswO0w7Ozs7O047TEFUSU4gTEVUVEVSIEVYQ0xBTUFUSU9OIE1BUks7Ozs7CiswMUM0O0xBVElOIENBUElUQUwgTEVUVEVSIERaIFdJVEggQ0FST047THU7MDtMOzxjb21wYXQ+IDAwNDQgMDE3RDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEQgWiBIQUNFSzs7OzAxQzY7MDFDNQorMDFDNTtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggU01BTEwgTEVUVEVSIFogV0lUSCBDQVJPTjtMdDswO0w7PGNvbXBhdD4gMDA0NCAwMTdFOzs7O047TEFUSU4gTEVUVEVSIENBUElUQUwgRCBTTUFMTCBaIEhBQ0VLOzswMUM0OzAxQzY7CiswMUM2O0xBVElOIFNNQUxMIExFVFRFUiBEWiBXSVRIIENBUk9OO0xsOzA7TDs8Y29tcGF0PiAwMDY0IDAxN0U7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRCBaIEhBQ0VLOzswMUM0OzswMUM1CiswMUM3O0xBVElOIENBUElUQUwgTEVUVEVSIExKO0x1OzA7TDs8Y29tcGF0PiAwMDRDIDAwNEE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIEo7OzswMUM5OzAxQzgKKzAxQzg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIFNNQUxMIExFVFRFUiBKO0x0OzA7TDs8Y29tcGF0PiAwMDRDIDAwNkE7Ozs7TjtMQVRJTiBMRVRURVIgQ0FQSVRBTCBMIFNNQUxMIEo7OzAxQzc7MDFDOTsKKzAxQzk7TEFUSU4gU01BTEwgTEVUVEVSIExKO0xsOzA7TDs8Y29tcGF0PiAwMDZDIDAwNkE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTCBKOzswMUM3OzswMUM4CiswMUNBO0xBVElOIENBUElUQUwgTEVUVEVSIE5KO0x1OzA7TDs8Y29tcGF0PiAwMDRFIDAwNEE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIEo7OzswMUNDOzAxQ0IKKzAxQ0I7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFNNQUxMIExFVFRFUiBKO0x0OzA7TDs8Y29tcGF0PiAwMDRFIDAwNkE7Ozs7TjtMQVRJTiBMRVRURVIgQ0FQSVRBTCBOIFNNQUxMIEo7OzAxQ0E7MDFDQzsKKzAxQ0M7TEFUSU4gU01BTEwgTEVUVEVSIE5KO0xsOzA7TDs8Y29tcGF0PiAwMDZFIDAwNkE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTiBKOzswMUNBOzswMUNCCiswMUNEO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDQVJPTjtMdTswO0w7MDA0MSAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBIQUNFSzs7OzAxQ0U7CiswMUNFO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0FST047TGw7MDtMOzAwNjEgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIEhBQ0VLOzswMUNEOzswMUNECiswMUNGO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDQVJPTjtMdTswO0w7MDA0OSAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBIQUNFSzs7OzAxRDA7CiswMUQwO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0FST047TGw7MDtMOzAwNjkgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIEhBQ0VLOzswMUNGOzswMUNGCiswMUQxO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDQVJPTjtMdTswO0w7MDA0RiAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBIQUNFSzs7OzAxRDI7CiswMUQyO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0FST047TGw7MDtMOzAwNkYgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIEhBQ0VLOzswMUQxOzswMUQxCiswMUQzO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDQVJPTjtMdTswO0w7MDA1NSAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBIQUNFSzs7OzAxRDQ7CiswMUQ0O0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0FST047TGw7MDtMOzAwNzUgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIEhBQ0VLOzswMUQzOzswMUQzCiswMUQ1O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIE1BQ1JPTjtMdTswO0w7MDBEQyAwMzA0Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBESUFFUkVTSVMgTUFDUk9OOzs7MDFENjsKKzAxRDY7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIE1BQ1JPTjtMbDswO0w7MDBGQyAwMzA0Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgRElBRVJFU0lTIE1BQ1JPTjs7MDFENTs7MDFENQorMDFENztMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEFORCBBQ1VURTtMdTswO0w7MDBEQyAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBESUFFUkVTSVMgQUNVVEU7OzswMUQ4OworMDFEODtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgQUNVVEU7TGw7MDtMOzAwRkMgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIERJQUVSRVNJUyBBQ1VURTs7MDFENzs7MDFENworMDFEOTtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEFORCBDQVJPTjtMdTswO0w7MDBEQyAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBESUFFUkVTSVMgSEFDRUs7OzswMURBOworMDFEQTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgQ0FST047TGw7MDtMOzAwRkMgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIERJQUVSRVNJUyBIQUNFSzs7MDFEOTs7MDFEOQorMDFEQjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEFORCBHUkFWRTtMdTswO0w7MDBEQyAwMzAwOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBESUFFUkVTSVMgR1JBVkU7OzswMURDOworMDFEQztMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgR1JBVkU7TGw7MDtMOzAwRkMgMDMwMDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIERJQUVSRVNJUyBHUkFWRTs7MDFEQjs7MDFEQgorMDFERDtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIEU7TGw7MDtMOzs7OztOOzs7MDE4RTs7MDE4RQorMDFERTtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTIEFORCBNQUNST047THU7MDtMOzAwQzQgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgRElBRVJFU0lTIE1BQ1JPTjs7OzAxREY7CiswMURGO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTIEFORCBNQUNST047TGw7MDtMOzAwRTQgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIERJQUVSRVNJUyBNQUNST047OzAxREU7OzAxREUKKzAxRTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERPVCBBQk9WRSBBTkQgTUFDUk9OO0x1OzA7TDswMDQxIDAzMDcgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgRE9UIE1BQ1JPTjs7OzAxRTE7CiswMUUxO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRE9UIEFCT1ZFIEFORCBNQUNST047TGw7MDtMOzAwNjEgMDMwNyAwMzA0Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgRE9UIE1BQ1JPTjs7MDFFMDs7MDFFMAorMDFFMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBRSBXSVRIIE1BQ1JPTjtMdTswO0w7MDBDNiAwMzA0Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBFIE1BQ1JPTjs7OzAxRTM7CiswMUUzO0xBVElOIFNNQUxMIExFVFRFUiBBRSBXSVRIIE1BQ1JPTjtMbDswO0w7MDBFNiAwMzA0Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgRSBNQUNST047OzAxRTI7OzAxRTIKKzAxRTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBCQVI7OzswMUU1OworMDFFNTtMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEcgQkFSOzswMUU0OzswMUU0CiswMUU2O0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBDQVJPTjtMdTswO0w7MDA0NyAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBIQUNFSzs7OzAxRTc7CiswMUU3O0xBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQ0FST047TGw7MDtMOzAwNjcgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBHIEhBQ0VLOzswMUU2OzswMUU2CiswMUU4O0xBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBDQVJPTjtMdTswO0w7MDA0QiAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBIQUNFSzs7OzAxRTk7CiswMUU5O0xBVElOIFNNQUxMIExFVFRFUiBLIFdJVEggQ0FST047TGw7MDtMOzAwNkIgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBLIEhBQ0VLOzswMUU4OzswMUU4CiswMUVBO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBPR09ORUs7THU7MDtMOzAwNEYgMDMyODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gT0dPTkVLOzs7MDFFQjsKKzAxRUI7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBPR09ORUs7TGw7MDtMOzAwNkYgMDMyODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIE9HT05FSzs7MDFFQTs7MDFFQQorMDFFQztMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggT0dPTkVLIEFORCBNQUNST047THU7MDtMOzAxRUEgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gT0dPTkVLIE1BQ1JPTjs7OzAxRUQ7CiswMUVEO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggT0dPTkVLIEFORCBNQUNST047TGw7MDtMOzAxRUIgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIE9HT05FSyBNQUNST047OzAxRUM7OzAxRUMKKzAxRUU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRVpIIFdJVEggQ0FST047THU7MDtMOzAxQjcgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFlPR0ggSEFDRUs7OzswMUVGOworMDFFRjtMQVRJTiBTTUFMTCBMRVRURVIgRVpIIFdJVEggQ0FST047TGw7MDtMOzAyOTIgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBZT0dIIEhBQ0VLOzswMUVFOzswMUVFCiswMUYwO0xBVElOIFNNQUxMIExFVFRFUiBKIFdJVEggQ0FST047TGw7MDtMOzAwNkEgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBKIEhBQ0VLOzs7OworMDFGMTtMQVRJTiBDQVBJVEFMIExFVFRFUiBEWjtMdTswO0w7PGNvbXBhdD4gMDA0NCAwMDVBOzs7O047Ozs7MDFGMzswMUYyCiswMUYyO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBTTUFMTCBMRVRURVIgWjtMdDswO0w7PGNvbXBhdD4gMDA0NCAwMDdBOzs7O047OzswMUYxOzAxRjM7CiswMUYzO0xBVElOIFNNQUxMIExFVFRFUiBEWjtMbDswO0w7PGNvbXBhdD4gMDA2NCAwMDdBOzs7O047OzswMUYxOzswMUYyCiswMUY0O0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBBQ1VURTtMdTswO0w7MDA0NyAwMzAxOzs7O047Ozs7MDFGNTsKKzAxRjU7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBBQ1VURTtMbDswO0w7MDA2NyAwMzAxOzs7O047OzswMUY0OzswMUY0CiswMUZBO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFIEFORCBBQ1VURTtMdTswO0w7MDBDNSAwMzAxOzs7O047Ozs7MDFGQjsKKzAxRkI7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFIEFORCBBQ1VURTtMbDswO0w7MDBFNSAwMzAxOzs7O047OzswMUZBOzswMUZBCiswMUZDO0xBVElOIENBUElUQUwgTEVUVEVSIEFFIFdJVEggQUNVVEU7THU7MDtMOzAwQzYgMDMwMTs7OztOOzs7OzAxRkQ7CiswMUZEO0xBVElOIFNNQUxMIExFVFRFUiBBRSBXSVRIIEFDVVRFO0xsOzA7TDswMEU2IDAzMDE7Ozs7Tjs7OzAxRkM7OzAxRkMKKzAxRkU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRSBBTkQgQUNVVEU7THU7MDtMOzAwRDggMDMwMTs7OztOOzs7OzAxRkY7CiswMUZGO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFIEFORCBBQ1VURTtMbDswO0w7MDBGOCAwMzAxOzs7O047OzswMUZFOzswMUZFCiswMjAwO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBET1VCTEUgR1JBVkU7THU7MDtMOzAwNDEgMDMwRjs7OztOOzs7OzAyMDE7CiswMjAxO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRE9VQkxFIEdSQVZFO0xsOzA7TDswMDYxIDAzMEY7Ozs7Tjs7OzAyMDA7OzAyMDAKKzAyMDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIElOVkVSVEVEIEJSRVZFO0x1OzA7TDswMDQxIDAzMTE7Ozs7Tjs7OzswMjAzOworMDIwMztMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIElOVkVSVEVEIEJSRVZFO0xsOzA7TDswMDYxIDAzMTE7Ozs7Tjs7OzAyMDI7OzAyMDIKKzAyMDQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVUJMRSBHUkFWRTtMdTswO0w7MDA0NSAwMzBGOzs7O047Ozs7MDIwNTsKKzAyMDU7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBET1VCTEUgR1JBVkU7TGw7MDtMOzAwNjUgMDMwRjs7OztOOzs7MDIwNDs7MDIwNAorMDIwNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggSU5WRVJURUQgQlJFVkU7THU7MDtMOzAwNDUgMDMxMTs7OztOOzs7OzAyMDc7CiswMjA3O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggSU5WRVJURUQgQlJFVkU7TGw7MDtMOzAwNjUgMDMxMTs7OztOOzs7MDIwNjs7MDIwNgorMDIwODtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRE9VQkxFIEdSQVZFO0x1OzA7TDswMDQ5IDAzMEY7Ozs7Tjs7OzswMjA5OworMDIwOTtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERPVUJMRSBHUkFWRTtMbDswO0w7MDA2OSAwMzBGOzs7O047OzswMjA4OzswMjA4CiswMjBBO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBJTlZFUlRFRCBCUkVWRTtMdTswO0w7MDA0OSAwMzExOzs7O047Ozs7MDIwQjsKKzAyMEI7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBJTlZFUlRFRCBCUkVWRTtMbDswO0w7MDA2OSAwMzExOzs7O047OzswMjBBOzswMjBBCiswMjBDO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBET1VCTEUgR1JBVkU7THU7MDtMOzAwNEYgMDMwRjs7OztOOzs7OzAyMEQ7CiswMjBEO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9VQkxFIEdSQVZFO0xsOzA7TDswMDZGIDAzMEY7Ozs7Tjs7OzAyMEM7OzAyMEMKKzAyMEU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIElOVkVSVEVEIEJSRVZFO0x1OzA7TDswMDRGIDAzMTE7Ozs7Tjs7OzswMjBGOworMDIwRjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIElOVkVSVEVEIEJSRVZFO0xsOzA7TDswMDZGIDAzMTE7Ozs7Tjs7OzAyMEU7OzAyMEUKKzAyMTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIERPVUJMRSBHUkFWRTtMdTswO0w7MDA1MiAwMzBGOzs7O047Ozs7MDIxMTsKKzAyMTE7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBET1VCTEUgR1JBVkU7TGw7MDtMOzAwNzIgMDMwRjs7OztOOzs7MDIxMDs7MDIxMAorMDIxMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggSU5WRVJURUQgQlJFVkU7THU7MDtMOzAwNTIgMDMxMTs7OztOOzs7OzAyMTM7CiswMjEzO0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggSU5WRVJURUQgQlJFVkU7TGw7MDtMOzAwNzIgMDMxMTs7OztOOzs7MDIxMjs7MDIxMgorMDIxNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRE9VQkxFIEdSQVZFO0x1OzA7TDswMDU1IDAzMEY7Ozs7Tjs7OzswMjE1OworMDIxNTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERPVUJMRSBHUkFWRTtMbDswO0w7MDA3NSAwMzBGOzs7O047OzswMjE0OzswMjE0CiswMjE2O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBJTlZFUlRFRCBCUkVWRTtMdTswO0w7MDA1NSAwMzExOzs7O047Ozs7MDIxNzsKKzAyMTc7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBJTlZFUlRFRCBCUkVWRTtMbDswO0w7MDA3NSAwMzExOzs7O047OzswMjE2OzswMjE2CiswMjUwO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgQTtMbDswO0w7Ozs7O047Ozs7OworMDI1MTtMQVRJTiBTTUFMTCBMRVRURVIgQUxQSEE7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBTQ1JJUFQgQTs7OzsKKzAyNTI7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBBTFBIQTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBTQ1JJUFQgQTs7OzsKKzAyNTM7TEFUSU4gU01BTEwgTEVUVEVSIEIgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQiBIT09LOzswMTgxOzswMTgxCiswMjU0O0xBVElOIFNNQUxMIExFVFRFUiBPUEVOIE87TGw7MDtMOzs7OztOOzs7MDE4Njs7MDE4NgorMDI1NTtMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENVUkw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDIENVUkw7Ozs7CiswMjU2O0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggVEFJTDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEQgUkVUUk9GTEVYIEhPT0s7OzAxODk7OzAxODkKKzAyNTc7TEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRCBIT09LOzswMThBOzswMThBCiswMjU4O0xBVElOIFNNQUxMIExFVFRFUiBSRVZFUlNFRCBFO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjU5O0xBVElOIFNNQUxMIExFVFRFUiBTQ0hXQTtMbDswO0w7Ozs7O047OzswMThGOzswMThGCiswMjVBO0xBVElOIFNNQUxMIExFVFRFUiBTQ0hXQSBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBTQ0hXQSBIT09LOzs7OworMDI1QjtMQVRJTiBTTUFMTCBMRVRURVIgT1BFTiBFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRVBTSUxPTjs7MDE5MDs7MDE5MAorMDI1QztMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgT1BFTiBFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgRVBTSUxPTjs7OzsKKzAyNUQ7TEFUSU4gU01BTEwgTEVUVEVSIFJFVkVSU0VEIE9QRU4gRSBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBSRVZFUlNFRCBFUFNJTE9OIEhPT0s7Ozs7CiswMjVFO0xBVElOIFNNQUxMIExFVFRFUiBDTE9TRUQgUkVWRVJTRUQgT1BFTiBFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQ0xPU0VEIFJFVkVSU0VEIEVQU0lMT047Ozs7CiswMjVGO0xBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEogV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEogQkFSOzs7OworMDI2MDtMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBHIEhPT0s7OzAxOTM7OzAxOTMKKzAyNjE7TEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBHO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjYyO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEc7TGw7MDtMOzs7OztOOzs7OzsKKzAyNjM7TEFUSU4gU01BTEwgTEVUVEVSIEdBTU1BO0xsOzA7TDs7Ozs7Tjs7OzAxOTQ7OzAxOTQKKzAyNjQ7TEFUSU4gU01BTEwgTEVUVEVSIFJBTVMgSE9STjtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEJBQlkgR0FNTUE7Ozs7CiswMjY1O0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgSDtMbDswO0w7Ozs7O047Ozs7OworMDI2NjtMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBIIEhPT0s7Ozs7CiswMjY3O0xBVElOIFNNQUxMIExFVFRFUiBIRU5HIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEhFTkcgSE9PSzs7OzsKKzAyNjg7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBCQVJSRUQgSTs7MDE5Nzs7MDE5NworMDI2OTtMQVRJTiBTTUFMTCBMRVRURVIgSU9UQTtMbDswO0w7Ozs7O047OzswMTk2OzswMTk2CiswMjZBO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEk7TGw7MDtMOzs7OztOOzs7OzsKKzAyNkI7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBNSURETEUgVElMREU7TGw7MDtMOzs7OztOOzs7OzsKKzAyNkM7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBCRUxUO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTCBCRUxUOzs7OworMDI2RDtMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFJFVFJPRkxFWCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTCBSRVRST0ZMRVggSE9PSzs7OzsKKzAyNkU7TEFUSU4gU01BTEwgTEVUVEVSIExFWkg7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBMIFlPR0g7Ozs7CiswMjZGO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgTTtMbDswO0w7Ozs7O047OzswMTlDOzswMTlDCiswMjcwO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgTSBXSVRIIExPTkcgTEVHO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjcxO0xBVElOIFNNQUxMIExFVFRFUiBNIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE0gSE9PSzs7OzsKKzAyNzI7TEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBMRUZUIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBOIEhPT0s7OzAxOUQ7OzAxOUQKKzAyNzM7TEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBSRVRST0ZMRVggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE4gUkVUUk9GTEVYIEhPT0s7Ozs7CiswMjc0O0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIE47TGw7MDtMOzs7OztOOzs7OzsKKzAyNzU7TEFUSU4gU01BTEwgTEVUVEVSIEJBUlJFRCBPO0xsOzA7TDs7Ozs7Tjs7OzAxOUY7OzAxOUYKKzAyNzY7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgT0U7TGw7MDtMOzs7OztOO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIE8gRTs7OzsKKzAyNzc7TEFUSU4gU01BTEwgTEVUVEVSIENMT1NFRCBPTUVHQTtMbDswO0w7Ozs7O047Ozs7OworMDI3ODtMQVRJTiBTTUFMTCBMRVRURVIgUEhJO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjc5O0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgUjtMbDswO0w7Ozs7O047Ozs7OworMDI3QTtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFIgV0lUSCBMT05HIExFRztMbDswO0w7Ozs7O047Ozs7OworMDI3QjtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFIgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFIgSE9PSzs7OzsKKzAyN0M7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBMT05HIExFRztMbDswO0w7Ozs7O047Ozs7OworMDI3RDtMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIFRBSUw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBSIEhPT0s7Ozs7CiswMjdFO0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggRklTSEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBGSVNISE9PSyBSOzs7OworMDI3RjtMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgUiBXSVRIIEZJU0hIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgRklTSEhPT0sgUjs7OzsKKzAyODA7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgUjtMbDswO0w7Ozs7O047Ozs7OworMDI4MTtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBJTlZFUlRFRCBSO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjgyO0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFMgSE9PSzs7OzsKKzAyODM7TEFUSU4gU01BTEwgTEVUVEVSIEVTSDtMbDswO0w7Ozs7O047OzswMUE5OzswMUE5CiswMjg0O0xBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEogV0lUSCBTVFJPS0UgQU5EIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEogQkFSIEhPT0s7Ozs7CiswMjg1O0xBVElOIFNNQUxMIExFVFRFUiBTUVVBVCBSRVZFUlNFRCBFU0g7TGw7MDtMOzs7OztOOzs7OzsKKzAyODY7TEFUSU4gU01BTEwgTEVUVEVSIEVTSCBXSVRIIENVUkw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFU0ggQ1VSTDs7OzsKKzAyODc7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBUO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjg4O0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggUkVUUk9GTEVYIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIFJFVFJPRkxFWCBIT09LOzswMUFFOzswMUFFCiswMjg5O0xBVElOIFNNQUxMIExFVFRFUiBVIEJBUjtMbDswO0w7Ozs7O047Ozs7OworMDI4QTtMQVRJTiBTTUFMTCBMRVRURVIgVVBTSUxPTjtMbDswO0w7Ozs7O047OzswMUIxOzswMUIxCiswMjhCO0xBVElOIFNNQUxMIExFVFRFUiBWIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBWOzswMUIyOzswMUIyCiswMjhDO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgVjtMbDswO0w7Ozs7O047Ozs7OworMDI4RDtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFc7TGw7MDtMOzs7OztOOzs7OzsKKzAyOEU7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBZO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjhGO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFk7TGw7MDtMOzs7OztOOzs7OzsKKzAyOTA7TEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBSRVRST0ZMRVggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFogUkVUUk9GTEVYIEhPT0s7Ozs7CiswMjkxO0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ1VSTDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFogQ1VSTDs7OzsKKzAyOTI7TEFUSU4gU01BTEwgTEVUVEVSIEVaSDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFlPR0g7OzAxQjc7OzAxQjcKKzAyOTM7TEFUSU4gU01BTEwgTEVUVEVSIEVaSCBXSVRIIENVUkw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBZT0dIIENVUkw7Ozs7CiswMjk0O0xBVElOIExFVFRFUiBHTE9UVEFMIFNUT1A7TGw7MDtMOzs7OztOOzs7OzsKKzAyOTU7TEFUSU4gTEVUVEVSIFBIQVJZTkdFQUwgVk9JQ0VEIEZSSUNBVElWRTtMbDswO0w7Ozs7O047TEFUSU4gTEVUVEVSIFJFVkVSU0VEIEdMT1RUQUwgU1RPUDs7OzsKKzAyOTY7TEFUSU4gTEVUVEVSIElOVkVSVEVEIEdMT1RUQUwgU1RPUDtMbDswO0w7Ozs7O047Ozs7OworMDI5NztMQVRJTiBMRVRURVIgU1RSRVRDSEVEIEM7TGw7MDtMOzs7OztOOzs7OzsKKzAyOTg7TEFUSU4gTEVUVEVSIEJJTEFCSUFMIENMSUNLO0xsOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgQlVMTFNFWUU7Ozs7CiswMjk5O0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEI7TGw7MDtMOzs7OztOOzs7OzsKKzAyOUE7TEFUSU4gU01BTEwgTEVUVEVSIENMT1NFRCBPUEVOIEU7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDTE9TRUQgRVBTSUxPTjs7OzsKKzAyOUI7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgRyBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEcgSE9PSzs7OzsKKzAyOUM7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgSDtMbDswO0w7Ozs7O047Ozs7OworMDI5RDtMQVRJTiBTTUFMTCBMRVRURVIgSiBXSVRIIENST1NTRUQtVEFJTDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIENST1NTRUQtVEFJTCBKOzs7OworMDI5RTtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIEs7TGw7MDtMOzs7OztOOzs7OzsKKzAyOUY7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgTDtMbDswO0w7Ozs7O047Ozs7OworMDJBMDtMQVRJTiBTTUFMTCBMRVRURVIgUSBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBRIEhPT0s7Ozs7CiswMkExO0xBVElOIExFVFRFUiBHTE9UVEFMIFNUT1AgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIExFVFRFUiBHTE9UVEFMIFNUT1AgQkFSOzs7OworMDJBMjtMQVRJTiBMRVRURVIgUkVWRVJTRUQgR0xPVFRBTCBTVE9QIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgUkVWRVJTRUQgR0xPVFRBTCBTVE9QIEJBUjs7OzsKKzAyQTM7TEFUSU4gU01BTEwgTEVUVEVSIERaIERJR1JBUEg7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIFo7Ozs7CiswMkE0O0xBVElOIFNNQUxMIExFVFRFUiBERVpIIERJR1JBUEg7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIFlPR0g7Ozs7CiswMkE1O0xBVElOIFNNQUxMIExFVFRFUiBEWiBESUdSQVBIIFdJVEggQ1VSTDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEQgWiBDVVJMOzs7OworMDJBNjtMQVRJTiBTTUFMTCBMRVRURVIgVFMgRElHUkFQSDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFQgUzs7OzsKKzAyQTc7TEFUSU4gU01BTEwgTEVUVEVSIFRFU0ggRElHUkFQSDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFQgRVNIOzs7OworMDJBODtMQVRJTiBTTUFMTCBMRVRURVIgVEMgRElHUkFQSCBXSVRIIENVUkw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIEMgQ1VSTDs7OzsKKzAyQjA7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIEg7TG07MDtMOzxzdXBlcj4gMDA2ODs7OztOOzs7OzsKKzAyQjE7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIEggV0lUSCBIT09LO0xtOzA7TDs8c3VwZXI+IDAyNjY7Ozs7TjtNT0RJRklFUiBMRVRURVIgU01BTEwgSCBIT09LOzs7OworMDJCMjtNT0RJRklFUiBMRVRURVIgU01BTEwgSjtMbTswO0w7PHN1cGVyPiAwMDZBOzs7O047Ozs7OworMDJCMztNT0RJRklFUiBMRVRURVIgU01BTEwgUjtMbTswO0w7PHN1cGVyPiAwMDcyOzs7O047Ozs7OworMDJCNDtNT0RJRklFUiBMRVRURVIgU01BTEwgVFVSTkVEIFI7TG07MDtMOzxzdXBlcj4gMDI3OTs7OztOOzs7OzsKKzAyQjU7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFRVUk5FRCBSIFdJVEggSE9PSztMbTswO0w7PHN1cGVyPiAwMjdCOzs7O047TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFRVUk5FRCBSIEhPT0s7Ozs7CiswMkI2O01PRElGSUVSIExFVFRFUiBTTUFMTCBDQVBJVEFMIElOVkVSVEVEIFI7TG07MDtMOzxzdXBlcj4gMDI4MTs7OztOOzs7OzsKKzAyQjc7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFc7TG07MDtMOzxzdXBlcj4gMDA3Nzs7OztOOzs7OzsKKzAyQjg7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFk7TG07MDtMOzxzdXBlcj4gMDA3OTs7OztOOzs7OzsKKzAyQjk7TU9ESUZJRVIgTEVUVEVSIFBSSU1FO1NrOzA7T047Ozs7O047Ozs7OworMDJCQTtNT0RJRklFUiBMRVRURVIgRE9VQkxFIFBSSU1FO1NrOzA7T047Ozs7O047Ozs7OworMDJCQjtNT0RJRklFUiBMRVRURVIgVFVSTkVEIENPTU1BO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswMkJDO01PRElGSUVSIExFVFRFUiBBUE9TVFJPUEhFO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswMkJEO01PRElGSUVSIExFVFRFUiBSRVZFUlNFRCBDT01NQTtMbTswO0w7Ozs7O047Ozs7OworMDJCRTtNT0RJRklFUiBMRVRURVIgUklHSFQgSEFMRiBSSU5HO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswMkJGO01PRElGSUVSIExFVFRFUiBMRUZUIEhBTEYgUklORztMbTswO0w7Ozs7O047Ozs7OworMDJDMDtNT0RJRklFUiBMRVRURVIgR0xPVFRBTCBTVE9QO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswMkMxO01PRElGSUVSIExFVFRFUiBSRVZFUlNFRCBHTE9UVEFMIFNUT1A7TG07MDtMOzs7OztOOzs7OzsKKzAyQzI7TU9ESUZJRVIgTEVUVEVSIExFRlQgQVJST1dIRUFEO1NrOzA7T047Ozs7O047Ozs7OworMDJDMztNT0RJRklFUiBMRVRURVIgUklHSFQgQVJST1dIRUFEO1NrOzA7T047Ozs7O047Ozs7OworMDJDNDtNT0RJRklFUiBMRVRURVIgVVAgQVJST1dIRUFEO1NrOzA7T047Ozs7O047Ozs7OworMDJDNTtNT0RJRklFUiBMRVRURVIgRE9XTiBBUlJPV0hFQUQ7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkM2O01PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYIEFDQ0VOVDtTazswO09OOzs7OztOO01PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYOzs7OworMDJDNztDQVJPTjtTazswO09OOzs7OztOO01PRElGSUVSIExFVFRFUiBIQUNFSztNYW5kYXJpbiBDaGluZXNlIHRoaXJkIHRvbmU7OzsKKzAyQzg7TU9ESUZJRVIgTEVUVEVSIFZFUlRJQ0FMIExJTkU7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkM5O01PRElGSUVSIExFVFRFUiBNQUNST047U2s7MDtPTjs7Ozs7Tjs7TWFuZGFyaW4gQ2hpbmVzZSBmaXJzdCB0b25lOzs7CiswMkNBO01PRElGSUVSIExFVFRFUiBBQ1VURSBBQ0NFTlQ7U2s7MDtPTjs7Ozs7TjtNT0RJRklFUiBMRVRURVIgQUNVVEU7TWFuZGFyaW4gQ2hpbmVzZSBzZWNvbmQgdG9uZTs7OworMDJDQjtNT0RJRklFUiBMRVRURVIgR1JBVkUgQUNDRU5UO1NrOzA7T047Ozs7O047TU9ESUZJRVIgTEVUVEVSIEdSQVZFO01hbmRhcmluIENoaW5lc2UgZm91cnRoIHRvbmU7OzsKKzAyQ0M7TU9ESUZJRVIgTEVUVEVSIExPVyBWRVJUSUNBTCBMSU5FO1NrOzA7T047Ozs7O047Ozs7OworMDJDRDtNT0RJRklFUiBMRVRURVIgTE9XIE1BQ1JPTjtTazswO09OOzs7OztOOzs7OzsKKzAyQ0U7TU9ESUZJRVIgTEVUVEVSIExPVyBHUkFWRSBBQ0NFTlQ7U2s7MDtPTjs7Ozs7TjtNT0RJRklFUiBMRVRURVIgTE9XIEdSQVZFOzs7OworMDJDRjtNT0RJRklFUiBMRVRURVIgTE9XIEFDVVRFIEFDQ0VOVDtTazswO09OOzs7OztOO01PRElGSUVSIExFVFRFUiBMT1cgQUNVVEU7Ozs7CiswMkQwO01PRElGSUVSIExFVFRFUiBUUklBTkdVTEFSIENPTE9OO0xtOzA7T047Ozs7O047Ozs7OworMDJEMTtNT0RJRklFUiBMRVRURVIgSEFMRiBUUklBTkdVTEFSIENPTE9OO0xtOzA7T047Ozs7O047Ozs7OworMDJEMjtNT0RJRklFUiBMRVRURVIgQ0VOVFJFRCBSSUdIVCBIQUxGIFJJTkc7U2s7MDtPTjs7Ozs7TjtNT0RJRklFUiBMRVRURVIgQ0VOVEVSRUQgUklHSFQgSEFMRiBSSU5HOzs7OworMDJEMztNT0RJRklFUiBMRVRURVIgQ0VOVFJFRCBMRUZUIEhBTEYgUklORztTazswO09OOzs7OztOO01PRElGSUVSIExFVFRFUiBDRU5URVJFRCBMRUZUIEhBTEYgUklORzs7OzsKKzAyRDQ7TU9ESUZJRVIgTEVUVEVSIFVQIFRBQ0s7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkQ1O01PRElGSUVSIExFVFRFUiBET1dOIFRBQ0s7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkQ2O01PRElGSUVSIExFVFRFUiBQTFVTIFNJR047U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkQ3O01PRElGSUVSIExFVFRFUiBNSU5VUyBTSUdOO1NrOzA7T047Ozs7O047Ozs7OworMDJEODtCUkVWRTtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwNjs7OztOO1NQQUNJTkcgQlJFVkU7Ozs7CiswMkQ5O0RPVCBBQk9WRTtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwNzs7OztOO1NQQUNJTkcgRE9UIEFCT1ZFO01hbmRhcmluIENoaW5lc2UgbGlnaHQgdG9uZTs7OworMDJEQTtSSU5HIEFCT1ZFO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzBBOzs7O047U1BBQ0lORyBSSU5HIEFCT1ZFOzs7OworMDJEQjtPR09ORUs7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMjg7Ozs7TjtTUEFDSU5HIE9HT05FSzs7OzsKKzAyREM7U01BTEwgVElMREU7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDM7Ozs7TjtTUEFDSU5HIFRJTERFOzs7OworMDJERDtET1VCTEUgQUNVVEUgQUNDRU5UO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzBCOzs7O047U1BBQ0lORyBET1VCTEUgQUNVVEU7Ozs7CiswMkRFO01PRElGSUVSIExFVFRFUiBSSE9USUMgSE9PSztTazswO09OOzs7OztOOzs7OzsKKzAyRTA7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIEdBTU1BO0xtOzA7TDs8c3VwZXI+IDAyNjM7Ozs7Tjs7Ozs7CiswMkUxO01PRElGSUVSIExFVFRFUiBTTUFMTCBMO0xtOzA7TDs8c3VwZXI+IDAwNkM7Ozs7Tjs7Ozs7CiswMkUyO01PRElGSUVSIExFVFRFUiBTTUFMTCBTO0xtOzA7TDs8c3VwZXI+IDAwNzM7Ozs7Tjs7Ozs7CiswMkUzO01PRElGSUVSIExFVFRFUiBTTUFMTCBYO0xtOzA7TDs8c3VwZXI+IDAwNzg7Ozs7Tjs7Ozs7CiswMkU0O01PRElGSUVSIExFVFRFUiBTTUFMTCBSRVZFUlNFRCBHTE9UVEFMIFNUT1A7TG07MDtMOzxzdXBlcj4gMDI5NTs7OztOOzs7OzsKKzAyRTU7TU9ESUZJRVIgTEVUVEVSIEVYVFJBLUhJR0ggVE9ORSBCQVI7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkU2O01PRElGSUVSIExFVFRFUiBISUdIIFRPTkUgQkFSO1NrOzA7T047Ozs7O047Ozs7OworMDJFNztNT0RJRklFUiBMRVRURVIgTUlEIFRPTkUgQkFSO1NrOzA7T047Ozs7O047Ozs7OworMDJFODtNT0RJRklFUiBMRVRURVIgTE9XIFRPTkUgQkFSO1NrOzA7T047Ozs7O047Ozs7OworMDJFOTtNT0RJRklFUiBMRVRURVIgRVhUUkEtTE9XIFRPTkUgQkFSO1NrOzA7T047Ozs7O047Ozs7OworMDMwMDtDT01CSU5JTkcgR1JBVkUgQUNDRU5UO01uOzIzMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBHUkFWRTtWYXJpYTs7OworMDMwMTtDT01CSU5JTkcgQUNVVEUgQUNDRU5UO01uOzIzMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBBQ1VURTtPeGlhOzs7CiswMzAyO0NPTUJJTklORyBDSVJDVU1GTEVYIEFDQ0VOVDtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgQ0lSQ1VNRkxFWDs7OzsKKzAzMDM7Q09NQklOSU5HIFRJTERFO01uOzIzMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBUSUxERTs7OzsKKzAzMDQ7Q09NQklOSU5HIE1BQ1JPTjtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgTUFDUk9OOzs7OworMDMwNTtDT01CSU5JTkcgT1ZFUkxJTkU7TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIE9WRVJTQ09SRTs7OzsKKzAzMDY7Q09NQklOSU5HIEJSRVZFO01uOzIzMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBCUkVWRTtWcmFjaHk7OzsKKzAzMDc7Q09NQklOSU5HIERPVCBBQk9WRTtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgRE9UIEFCT1ZFOzs7OworMDMwODtDT01CSU5JTkcgRElBRVJFU0lTO01uOzIzMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBESUFFUkVTSVM7RGlhbHl0aWthOzs7CiswMzA5O0NPTUJJTklORyBIT09LIEFCT1ZFO01uOzIzMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBIT09LIEFCT1ZFOzs7OworMDMwQTtDT01CSU5JTkcgUklORyBBQk9WRTtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgUklORyBBQk9WRTs7OzsKKzAzMEI7Q09NQklOSU5HIERPVUJMRSBBQ1VURSBBQ0NFTlQ7TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIERPVUJMRSBBQ1VURTs7OzsKKzAzMEM7Q09NQklOSU5HIENBUk9OO01uOzIzMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBIQUNFSzs7OzsKKzAzMEQ7Q09NQklOSU5HIFZFUlRJQ0FMIExJTkUgQUJPVkU7TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIFZFUlRJQ0FMIExJTkUgQUJPVkU7VG9ub3M7OzsKKzAzMEU7Q09NQklOSU5HIERPVUJMRSBWRVJUSUNBTCBMSU5FIEFCT1ZFO01uOzIzMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBET1VCTEUgVkVSVElDQUwgTElORSBBQk9WRTs7OzsKKzAzMEY7Q09NQklOSU5HIERPVUJMRSBHUkFWRSBBQ0NFTlQ7TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIERPVUJMRSBHUkFWRTs7OzsKKzAzMTA7Q09NQklOSU5HIENBTkRSQUJJTkRVO01uOzIzMDtPTjswMzA2IDAzMDc7Ozs7TjtOT04tU1BBQ0lORyBDQU5EUkFCSU5EVTs7OzsKKzAzMTE7Q09NQklOSU5HIElOVkVSVEVEIEJSRVZFO01uOzIzMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBJTlZFUlRFRCBCUkVWRTs7OzsKKzAzMTI7Q09NQklOSU5HIFRVUk5FRCBDT01NQSBBQk9WRTtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgVFVSTkVEIENPTU1BIEFCT1ZFOzs7OworMDMxMztDT01CSU5JTkcgQ09NTUEgQUJPVkU7TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIENPTU1BIEFCT1ZFO1BzaWxpOzs7CiswMzE0O0NPTUJJTklORyBSRVZFUlNFRCBDT01NQSBBQk9WRTtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgUkVWRVJTRUQgQ09NTUEgQUJPVkU7RGFzaWE7OzsKKzAzMTU7Q09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hUO01uOzIzMjtPTjs7Ozs7TjtOT04tU1BBQ0lORyBDT01NQSBBQk9WRSBSSUdIVDs7OzsKKzAzMTY7Q09NQklOSU5HIEdSQVZFIEFDQ0VOVCBCRUxPVztNbjsyMjA7T047Ozs7O047Tk9OLVNQQUNJTkcgR1JBVkUgQkVMT1c7Ozs7CiswMzE3O0NPTUJJTklORyBBQ1VURSBBQ0NFTlQgQkVMT1c7TW47MjIwO09OOzs7OztOO05PTi1TUEFDSU5HIEFDVVRFIEJFTE9XOzs7OworMDMxODtDT01CSU5JTkcgTEVGVCBUQUNLIEJFTE9XO01uOzIyMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBMRUZUIFRBQ0sgQkVMT1c7Ozs7CiswMzE5O0NPTUJJTklORyBSSUdIVCBUQUNLIEJFTE9XO01uOzIyMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBSSUdIVCBUQUNLIEJFTE9XOzs7OworMDMxQTtDT01CSU5JTkcgTEVGVCBBTkdMRSBBQk9WRTtNbjsyMzI7T047Ozs7O047Tk9OLVNQQUNJTkcgTEVGVCBBTkdMRSBBQk9WRTs7OzsKKzAzMUI7Q09NQklOSU5HIEhPUk47TW47MjE2O09OOzs7OztOO05PTi1TUEFDSU5HIEhPUk47Ozs7CiswMzFDO0NPTUJJTklORyBMRUZUIEhBTEYgUklORyBCRUxPVztNbjsyMjA7T047Ozs7O047Tk9OLVNQQUNJTkcgTEVGVCBIQUxGIFJJTkcgQkVMT1c7Ozs7CiswMzFEO0NPTUJJTklORyBVUCBUQUNLIEJFTE9XO01uOzIyMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBVUCBUQUNLIEJFTE9XOzs7OworMDMxRTtDT01CSU5JTkcgRE9XTiBUQUNLIEJFTE9XO01uOzIyMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBET1dOIFRBQ0sgQkVMT1c7Ozs7CiswMzFGO0NPTUJJTklORyBQTFVTIFNJR04gQkVMT1c7TW47MjIwO09OOzs7OztOO05PTi1TUEFDSU5HIFBMVVMgU0lHTiBCRUxPVzs7OzsKKzAzMjA7Q09NQklOSU5HIE1JTlVTIFNJR04gQkVMT1c7TW47MjIwO09OOzs7OztOO05PTi1TUEFDSU5HIE1JTlVTIFNJR04gQkVMT1c7Ozs7CiswMzIxO0NPTUJJTklORyBQQUxBVEFMSVpFRCBIT09LIEJFTE9XO01uOzIwMjtPTjs7Ozs7TjtOT04tU1BBQ0lORyBQQUxBVEFMSVpFRCBIT09LIEJFTE9XOzs7OworMDMyMjtDT01CSU5JTkcgUkVUUk9GTEVYIEhPT0sgQkVMT1c7TW47MjAyO09OOzs7OztOO05PTi1TUEFDSU5HIFJFVFJPRkxFWCBIT09LIEJFTE9XOzs7OworMDMyMztDT01CSU5JTkcgRE9UIEJFTE9XO01uOzIyMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBET1QgQkVMT1c7Ozs7CiswMzI0O0NPTUJJTklORyBESUFFUkVTSVMgQkVMT1c7TW47MjIwO09OOzs7OztOO05PTi1TUEFDSU5HIERPVUJMRSBET1QgQkVMT1c7Ozs7CiswMzI1O0NPTUJJTklORyBSSU5HIEJFTE9XO01uOzIyMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBSSU5HIEJFTE9XOzs7OworMDMyNjtDT01CSU5JTkcgQ09NTUEgQkVMT1c7TW47MjIwO09OOzs7OztOO05PTi1TUEFDSU5HIENPTU1BIEJFTE9XOzs7OworMDMyNztDT01CSU5JTkcgQ0VESUxMQTtNbjsyMDI7T047Ozs7O047Tk9OLVNQQUNJTkcgQ0VESUxMQTs7OzsKKzAzMjg7Q09NQklOSU5HIE9HT05FSztNbjsyMDI7T047Ozs7O047Tk9OLVNQQUNJTkcgT0dPTkVLOzs7OworMDMyOTtDT01CSU5JTkcgVkVSVElDQUwgTElORSBCRUxPVztNbjsyMjA7T047Ozs7O047Tk9OLVNQQUNJTkcgVkVSVElDQUwgTElORSBCRUxPVzs7OzsKKzAzMkE7Q09NQklOSU5HIEJSSURHRSBCRUxPVztNbjsyMjA7T047Ozs7O047Tk9OLVNQQUNJTkcgQlJJREdFIEJFTE9XOzs7OworMDMyQjtDT01CSU5JTkcgSU5WRVJURUQgRE9VQkxFIEFSQ0ggQkVMT1c7TW47MjIwO09OOzs7OztOO05PTi1TUEFDSU5HIElOVkVSVEVEIERPVUJMRSBBUkNIIEJFTE9XOzs7OworMDMyQztDT01CSU5JTkcgQ0FST04gQkVMT1c7TW47MjIwO09OOzs7OztOO05PTi1TUEFDSU5HIEhBQ0VLIEJFTE9XOzs7OworMDMyRDtDT01CSU5JTkcgQ0lSQ1VNRkxFWCBBQ0NFTlQgQkVMT1c7TW47MjIwO09OOzs7OztOO05PTi1TUEFDSU5HIENJUkNVTUZMRVggQkVMT1c7Ozs7CiswMzJFO0NPTUJJTklORyBCUkVWRSBCRUxPVztNbjsyMjA7T047Ozs7O047Tk9OLVNQQUNJTkcgQlJFVkUgQkVMT1c7Ozs7CiswMzJGO0NPTUJJTklORyBJTlZFUlRFRCBCUkVWRSBCRUxPVztNbjsyMjA7T047Ozs7O047Tk9OLVNQQUNJTkcgSU5WRVJURUQgQlJFVkUgQkVMT1c7Ozs7CiswMzMwO0NPTUJJTklORyBUSUxERSBCRUxPVztNbjsyMjA7T047Ozs7O047Tk9OLVNQQUNJTkcgVElMREUgQkVMT1c7Ozs7CiswMzMxO0NPTUJJTklORyBNQUNST04gQkVMT1c7TW47MjIwO09OOzs7OztOO05PTi1TUEFDSU5HIE1BQ1JPTiBCRUxPVzs7OzsKKzAzMzI7Q09NQklOSU5HIExPVyBMSU5FO01uOzIyMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBVTkRFUlNDT1JFOzs7OworMDMzMztDT01CSU5JTkcgRE9VQkxFIExPVyBMSU5FO01uOzIyMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBET1VCTEUgVU5ERVJTQ09SRTs7OzsKKzAzMzQ7Q09NQklOSU5HIFRJTERFIE9WRVJMQVk7TW47MTtPTjs7Ozs7TjtOT04tU1BBQ0lORyBUSUxERSBPVkVSTEFZOzs7OworMDMzNTtDT01CSU5JTkcgU0hPUlQgU1RST0tFIE9WRVJMQVk7TW47MTtPTjs7Ozs7TjtOT04tU1BBQ0lORyBTSE9SVCBCQVIgT1ZFUkxBWTs7OzsKKzAzMzY7Q09NQklOSU5HIExPTkcgU1RST0tFIE9WRVJMQVk7TW47MTtPTjs7Ozs7TjtOT04tU1BBQ0lORyBMT05HIEJBUiBPVkVSTEFZOzs7OworMDMzNztDT01CSU5JTkcgU0hPUlQgU09MSURVUyBPVkVSTEFZO01uOzE7T047Ozs7O047Tk9OLVNQQUNJTkcgU0hPUlQgU0xBU0ggT1ZFUkxBWTs7OzsKKzAzMzg7Q09NQklOSU5HIExPTkcgU09MSURVUyBPVkVSTEFZO01uOzE7T047Ozs7O047Tk9OLVNQQUNJTkcgTE9ORyBTTEFTSCBPVkVSTEFZOzs7OworMDMzOTtDT01CSU5JTkcgUklHSFQgSEFMRiBSSU5HIEJFTE9XO01uOzIyMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBSSUdIVCBIQUxGIFJJTkcgQkVMT1c7Ozs7CiswMzNBO0NPTUJJTklORyBJTlZFUlRFRCBCUklER0UgQkVMT1c7TW47MjIwO09OOzs7OztOO05PTi1TUEFDSU5HIElOVkVSVEVEIEJSSURHRSBCRUxPVzs7OzsKKzAzM0I7Q09NQklOSU5HIFNRVUFSRSBCRUxPVztNbjsyMjA7T047Ozs7O047Tk9OLVNQQUNJTkcgU1FVQVJFIEJFTE9XOzs7OworMDMzQztDT01CSU5JTkcgU0VBR1VMTCBCRUxPVztNbjsyMjA7T047Ozs7O047Tk9OLVNQQUNJTkcgU0VBR1VMTCBCRUxPVzs7OzsKKzAzM0Q7Q09NQklOSU5HIFggQUJPVkU7TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIFggQUJPVkU7Ozs7CiswMzNFO0NPTUJJTklORyBWRVJUSUNBTCBUSUxERTtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgVkVSVElDQUwgVElMREU7Ozs7CiswMzNGO0NPTUJJTklORyBET1VCTEUgT1ZFUkxJTkU7TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIERPVUJMRSBPVkVSU0NPUkU7Ozs7CiswMzQwO0NPTUJJTklORyBHUkFWRSBUT05FIE1BUks7TW47MjMwO09OOzAzMDA7Ozs7TjtOT04tU1BBQ0lORyBHUkFWRSBUT05FIE1BUks7VmlldG5hbWVzZTs7OworMDM0MTtDT01CSU5JTkcgQUNVVEUgVE9ORSBNQVJLO01uOzIzMDtPTjswMzAxOzs7O047Tk9OLVNQQUNJTkcgQUNVVEUgVE9ORSBNQVJLO1ZpZXRuYW1lc2U7OzsKKzAzNDI7Q09NQklOSU5HIEdSRUVLIFBFUklTUE9NRU5JO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswMzQzO0NPTUJJTklORyBHUkVFSyBLT1JPTklTO01uOzIzMDtPTjswMzEzOzs7O047Ozs7OworMDM0NDtDT01CSU5JTkcgR1JFRUsgRElBTFlUSUtBIFRPTk9TO01uOzIzMDtPTjswMzA4IDAzMEQ7Ozs7TjtHUkVFSyBOT04tU1BBQ0lORyBESUFFUkVTSVMgVE9OT1M7Ozs7CiswMzQ1O0NPTUJJTklORyBHUkVFSyBZUE9HRUdSQU1NRU5JO01uOzIyMDtPTjs7Ozs7TjtHUkVFSyBOT04tU1BBQ0lORyBJT1RBIEJFTE9XOzs7OworMDM2MDtDT01CSU5JTkcgRE9VQkxFIFRJTERFO01uOzIzNDtPTjs7Ozs7Tjs7Ozs7CiswMzYxO0NPTUJJTklORyBET1VCTEUgSU5WRVJURUQgQlJFVkU7TW47MjM0O09OOzs7OztOOzs7OzsKKzAzNzQ7R1JFRUsgTlVNRVJBTCBTSUdOO1BvOzA7TDswMkI5Ozs7O047R1JFRUsgVVBQRVIgTlVNRVJBTCBTSUdOO0RleGlhIGtlcmFpYTs7OworMDM3NTtHUkVFSyBMT1dFUiBOVU1FUkFMIFNJR047UG87MDtMOzs7OztOOztBcmlzdGVyaSBrZXJhaWE7OzsKKzAzN0E7R1JFRUsgWVBPR0VHUkFNTUVOSTtMbTswO0w7PGNvbXBhdD4gMDAyMCAwMzQ1Ozs7O047R1JFRUsgU1BBQ0lORyBJT1RBIEJFTE9XOzs7OworMDM3RTtHUkVFSyBRVUVTVElPTiBNQVJLO1BvOzA7TDswMDNCOzs7O047O0Vyb3RpbWF0aWtvOzs7CiswMzg0O0dSRUVLIFRPTk9TO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzBEOzs7O047R1JFRUsgU1BBQ0lORyBUT05PUzs7OzsKKzAzODU7R1JFRUsgRElBTFlUSUtBIFRPTk9TO1NrOzA7T047MDBBOCAwMzBEOzs7O047R1JFRUsgU1BBQ0lORyBESUFFUkVTSVMgVE9OT1M7Ozs7CiswMzg2O0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggVE9OT1M7THU7MDtMOzAzOTEgMDMwRDs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFRPTk9TOzs7MDNBQzsKKzAzODc7R1JFRUsgQU5PIFRFTEVJQTtQbzswO0w7MDBCNzs7OztOOzs7OzsKKzAzODg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIFRPTk9TO0x1OzA7TDswMzk1IDAzMEQ7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFRPTk9TOzs7MDNBRDsKKzAzODk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggVE9OT1M7THU7MDtMOzAzOTcgMDMwRDs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBUT05PUzs7OzAzQUU7CiswMzhBO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBUT05PUztMdTswO0w7MDM5OSAwMzBEOzs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBUT05PUzs7OzAzQUY7CiswMzhDO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBUT05PUztMdTswO0w7MDM5RiAwMzBEOzs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBUT05PUzs7OzAzQ0M7CiswMzhFO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBUT05PUztMdTswO0w7MDNBNSAwMzBEOzs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBUT05PUzs7OzAzQ0Q7CiswMzhGO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggVE9OT1M7THU7MDtMOzAzQTkgMDMwRDs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFRPTk9TOzs7MDNDRTsKKzAzOTA7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EgQU5EIFRPTk9TO0xsOzA7TDswM0I5IDAzNDQ7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBESUFFUkVTSVMgVE9OT1M7Ozs7CiswMzkxO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBO0x1OzA7TDs7Ozs7Tjs7OzswM0IxOworMDM5MjtHUkVFSyBDQVBJVEFMIExFVFRFUiBCRVRBO0x1OzA7TDs7Ozs7Tjs7OzswM0IyOworMDM5MztHUkVFSyBDQVBJVEFMIExFVFRFUiBHQU1NQTtMdTswO0w7Ozs7O047Ozs7MDNCMzsKKzAzOTQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEE7THU7MDtMOzs7OztOOzs7OzAzQjQ7CiswMzk1O0dSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT047THU7MDtMOzs7OztOOzs7OzAzQjU7CiswMzk2O0dSRUVLIENBUElUQUwgTEVUVEVSIFpFVEE7THU7MDtMOzs7OztOOzs7OzAzQjY7CiswMzk3O0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQTtMdTswO0w7Ozs7O047Ozs7MDNCNzsKKzAzOTg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVEhFVEE7THU7MDtMOzs7OztOOzs7OzAzQjg7CiswMzk5O0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEE7THU7MDtMOzs7OztOOzs7OzAzQjk7CiswMzlBO0dSRUVLIENBUElUQUwgTEVUVEVSIEtBUFBBO0x1OzA7TDs7Ozs7Tjs7OzswM0JBOworMDM5QjtHUkVFSyBDQVBJVEFMIExFVFRFUiBMQU1EQTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgTEFNQkRBOzs7MDNCQjsKKzAzOUM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgTVU7THU7MDtMOzs7OztOOzs7OzAzQkM7CiswMzlEO0dSRUVLIENBUElUQUwgTEVUVEVSIE5VO0x1OzA7TDs7Ozs7Tjs7OzswM0JEOworMDM5RTtHUkVFSyBDQVBJVEFMIExFVFRFUiBYSTtMdTswO0w7Ozs7O047Ozs7MDNCRTsKKzAzOUY7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTjtMdTswO0w7Ozs7O047Ozs7MDNCRjsKKzAzQTA7R1JFRUsgQ0FQSVRBTCBMRVRURVIgUEk7THU7MDtMOzs7OztOOzs7OzAzQzA7CiswM0ExO0dSRUVLIENBUElUQUwgTEVUVEVSIFJITztMdTswO0w7Ozs7O047Ozs7MDNDMTsKKzAzQTM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgU0lHTUE7THU7MDtMOzs7OztOOzs7OzAzQzM7CiswM0E0O0dSRUVLIENBUElUQUwgTEVUVEVSIFRBVTtMdTswO0w7Ozs7O047Ozs7MDNDNDsKKzAzQTU7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTjtMdTswO0w7Ozs7O047Ozs7MDNDNTsKKzAzQTY7R1JFRUsgQ0FQSVRBTCBMRVRURVIgUEhJO0x1OzA7TDs7Ozs7Tjs7OzswM0M2OworMDNBNztHUkVFSyBDQVBJVEFMIExFVFRFUiBDSEk7THU7MDtMOzs7OztOOzs7OzAzQzc7CiswM0E4O0dSRUVLIENBUElUQUwgTEVUVEVSIFBTSTtMdTswO0w7Ozs7O047Ozs7MDNDODsKKzAzQTk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0E7THU7MDtMOzs7OztOOzs7OzAzQzk7CiswM0FBO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0E7THU7MDtMOzAzOTkgMDMwODs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgRElBRVJFU0lTOzs7MDNDQTsKKzAzQUI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQTtMdTswO0w7MDNBNSAwMzA4Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBESUFFUkVTSVM7OzswM0NCOworMDNBQztHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBUT05PUztMbDswO0w7MDNCMSAwMzBEOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFRPTk9TOzswMzg2OzswMzg2CiswM0FEO0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggVE9OT1M7TGw7MDtMOzAzQjUgMDMwRDs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFRPTk9TOzswMzg4OzswMzg4CiswM0FFO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBUT05PUztMbDswO0w7MDNCNyAwMzBEOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBUT05PUzs7MDM4OTs7MDM4OQorMDNBRjtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIFRPTk9TO0xsOzA7TDswM0I5IDAzMEQ7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBUT05PUzs7MDM4QTs7MDM4QQorMDNCMDtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgVE9OT1M7TGw7MDtMOzAzQzUgMDM0NDs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIERJQUVSRVNJUyBUT05PUzs7OzsKKzAzQjE7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBO0xsOzA7TDs7Ozs7Tjs7OzAzOTE7OzAzOTEKKzAzQjI7R1JFRUsgU01BTEwgTEVUVEVSIEJFVEE7TGw7MDtMOzs7OztOOzs7MDM5Mjs7MDM5MgorMDNCMztHUkVFSyBTTUFMTCBMRVRURVIgR0FNTUE7TGw7MDtMOzs7OztOOzs7MDM5Mzs7MDM5MworMDNCNDtHUkVFSyBTTUFMTCBMRVRURVIgREVMVEE7TGw7MDtMOzs7OztOOzs7MDM5NDs7MDM5NAorMDNCNTtHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTjtMbDswO0w7Ozs7O047OzswMzk1OzswMzk1CiswM0I2O0dSRUVLIFNNQUxMIExFVFRFUiBaRVRBO0xsOzA7TDs7Ozs7Tjs7OzAzOTY7OzAzOTYKKzAzQjc7R1JFRUsgU01BTEwgTEVUVEVSIEVUQTtMbDswO0w7Ozs7O047OzswMzk3OzswMzk3CiswM0I4O0dSRUVLIFNNQUxMIExFVFRFUiBUSEVUQTtMbDswO0w7Ozs7O047OzswMzk4OzswMzk4CiswM0I5O0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBO0xsOzA7TDs7Ozs7Tjs7OzAzOTk7OzAzOTkKKzAzQkE7R1JFRUsgU01BTEwgTEVUVEVSIEtBUFBBO0xsOzA7TDs7Ozs7Tjs7OzAzOUE7OzAzOUEKKzAzQkI7R1JFRUsgU01BTEwgTEVUVEVSIExBTURBO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgTEFNQkRBOzswMzlCOzswMzlCCiswM0JDO0dSRUVLIFNNQUxMIExFVFRFUiBNVTtMbDswO0w7Ozs7O047OzswMzlDOzswMzlDCiswM0JEO0dSRUVLIFNNQUxMIExFVFRFUiBOVTtMbDswO0w7Ozs7O047OzswMzlEOzswMzlECiswM0JFO0dSRUVLIFNNQUxMIExFVFRFUiBYSTtMbDswO0w7Ozs7O047OzswMzlFOzswMzlFCiswM0JGO0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OO0xsOzA7TDs7Ozs7Tjs7OzAzOUY7OzAzOUYKKzAzQzA7R1JFRUsgU01BTEwgTEVUVEVSIFBJO0xsOzA7TDs7Ozs7Tjs7OzAzQTA7OzAzQTAKKzAzQzE7R1JFRUsgU01BTEwgTEVUVEVSIFJITztMbDswO0w7Ozs7O047OzswM0ExOzswM0ExCiswM0MyO0dSRUVLIFNNQUxMIExFVFRFUiBGSU5BTCBTSUdNQTtMbDswO0w7Ozs7O047OzswM0EzOzswM0EzCiswM0MzO0dSRUVLIFNNQUxMIExFVFRFUiBTSUdNQTtMbDswO0w7Ozs7O047OzswM0EzOzswM0EzCiswM0M0O0dSRUVLIFNNQUxMIExFVFRFUiBUQVU7TGw7MDtMOzs7OztOOzs7MDNBNDs7MDNBNAorMDNDNTtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTjtMbDswO0w7Ozs7O047OzswM0E1OzswM0E1CiswM0M2O0dSRUVLIFNNQUxMIExFVFRFUiBQSEk7TGw7MDtMOzs7OztOOzs7MDNBNjs7MDNBNgorMDNDNztHUkVFSyBTTUFMTCBMRVRURVIgQ0hJO0xsOzA7TDs7Ozs7Tjs7OzAzQTc7OzAzQTcKKzAzQzg7R1JFRUsgU01BTEwgTEVUVEVSIFBTSTtMbDswO0w7Ozs7O047OzswM0E4OzswM0E4CiswM0M5O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQTtMbDswO0w7Ozs7O047OzswM0E5OzswM0E5CiswM0NBO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBO0xsOzA7TDswM0I5IDAzMDg7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBESUFFUkVTSVM7OzAzQUE7OzAzQUEKKzAzQ0I7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0E7TGw7MDtMOzAzQzUgMDMwODs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIERJQUVSRVNJUzs7MDNBQjs7MDNBQgorMDNDQztHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIFRPTk9TO0xsOzA7TDswM0JGIDAzMEQ7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBUT05PUzs7MDM4Qzs7MDM4QworMDNDRDtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFRPTk9TO0xsOzA7TDswM0M1IDAzMEQ7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBUT05PUzs7MDM4RTs7MDM4RQorMDNDRTtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBUT05PUztMbDswO0w7MDNDOSAwMzBEOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFRPTk9TOzswMzhGOzswMzhGCiswM0QwO0dSRUVLIEJFVEEgU1lNQk9MO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgQ1VSTEVEIEJFVEE7OzAzOTI7OzAzOTIKKzAzRDE7R1JFRUsgVEhFVEEgU1lNQk9MO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgU0NSSVBUIFRIRVRBOzswMzk4OzswMzk4CiswM0QyO0dSRUVLIFVQU0lMT04gV0lUSCBIT09LIFNZTUJPTDtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBIT09LOzs7OworMDNEMztHUkVFSyBVUFNJTE9OIFdJVEggQUNVVEUgQU5EIEhPT0sgU1lNQk9MO0x1OzA7TDswM0QyIDAzMEQ7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIEhPT0sgVE9OT1M7Ozs7CiswM0Q0O0dSRUVLIFVQU0lMT04gV0lUSCBESUFFUkVTSVMgQU5EIEhPT0sgU1lNQk9MO0x1OzA7TDswM0QyIDAzMDg7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIEhPT0sgRElBRVJFU0lTOzs7OworMDNENTtHUkVFSyBQSEkgU1lNQk9MO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgU0NSSVBUIFBISTs7MDNBNjs7MDNBNgorMDNENjtHUkVFSyBQSSBTWU1CT0w7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBQSTs7MDNBMDs7MDNBMAorMDNEQTtHUkVFSyBMRVRURVIgU1RJR01BO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBTVElHTUE7Ozs7CiswM0RDO0dSRUVLIExFVFRFUiBESUdBTU1BO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBESUdBTU1BOzs7OworMDNERTtHUkVFSyBMRVRURVIgS09QUEE7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIEtPUFBBOzs7OworMDNFMDtHUkVFSyBMRVRURVIgU0FNUEk7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFNBTVBJOzs7OworMDNFMjtDT1BUSUMgQ0FQSVRBTCBMRVRURVIgU0hFSTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgU0hFSTs7OzAzRTM7CiswM0UzO0NPUFRJQyBTTUFMTCBMRVRURVIgU0hFSTtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIFNIRUk7OzAzRTI7OzAzRTIKKzAzRTQ7Q09QVElDIENBUElUQUwgTEVUVEVSIEZFSTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgRkVJOzs7MDNFNTsKKzAzRTU7Q09QVElDIFNNQUxMIExFVFRFUiBGRUk7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBGRUk7OzAzRTQ7OzAzRTQKKzAzRTY7Q09QVElDIENBUElUQUwgTEVUVEVSIEtIRUk7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIEtIRUk7OzswM0U3OworMDNFNztDT1BUSUMgU01BTEwgTEVUVEVSIEtIRUk7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBLSEVJOzswM0U2OzswM0U2CiswM0U4O0NPUFRJQyBDQVBJVEFMIExFVFRFUiBIT1JJO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBIT1JJOzs7MDNFOTsKKzAzRTk7Q09QVElDIFNNQUxMIExFVFRFUiBIT1JJO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgSE9SSTs7MDNFODs7MDNFOAorMDNFQTtDT1BUSUMgQ0FQSVRBTCBMRVRURVIgR0FOR0lBO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBHQU5HSUE7OzswM0VCOworMDNFQjtDT1BUSUMgU01BTEwgTEVUVEVSIEdBTkdJQTtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIEdBTkdJQTs7MDNFQTs7MDNFQQorMDNFQztDT1BUSUMgQ0FQSVRBTCBMRVRURVIgU0hJTUE7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFNISU1BOzs7MDNFRDsKKzAzRUQ7Q09QVElDIFNNQUxMIExFVFRFUiBTSElNQTtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIFNISU1BOzswM0VDOzswM0VDCiswM0VFO0NPUFRJQyBDQVBJVEFMIExFVFRFUiBERUk7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIERFSTs7OzAzRUY7CiswM0VGO0NPUFRJQyBTTUFMTCBMRVRURVIgREVJO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgREVJOzswM0VFOzswM0VFCiswM0YwO0dSRUVLIEtBUFBBIFNZTUJPTDtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIFNDUklQVCBLQVBQQTs7MDM5QTs7MDM5QQorMDNGMTtHUkVFSyBSSE8gU1lNQk9MO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgVEFJTEVEIFJITzs7MDNBMTs7MDNBMQorMDNGMjtHUkVFSyBMVU5BVEUgU0lHTUEgU1lNQk9MO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgTFVOQVRFIFNJR01BOzswM0EzOzswM0EzCiswM0YzO0dSRUVLIExFVFRFUiBZT1Q7TG87MDtMOzs7OztOOzs7OzsKKzA0MDE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU87THU7MDtMOzA0MTUgMDMwODs7OztOOzs7OzA0NTE7CiswNDAyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIERKRTtMdTswO0w7Ozs7O047O1NlcmJvY3JvYXRpYW47OzA0NTI7CiswNDAzO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEdKRTtMdTswO0w7MDQxMyAwMzAxOzs7O047Ozs7MDQ1MzsKKzA0MDQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVUtSQUlOSUFOIElFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFOzs7MDQ1NDsKKzA0MDU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRFpFO0x1OzA7TDs7Ozs7Tjs7OzswNDU1OworMDQwNjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEk7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEk7OzswNDU2OworMDQwNztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZSTtMdTswO0w7MDQwNiAwMzA4Ozs7O047O1VrcmFpbmlhbjs7MDQ1NzsKKzA0MDg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSkU7THU7MDtMOzs7OztOOzs7OzA0NTg7CiswNDA5O0NZUklMTElDIENBUElUQUwgTEVUVEVSIExKRTtMdTswO0w7Ozs7O047Ozs7MDQ1OTsKKzA0MEE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTkpFO0x1OzA7TDs7Ozs7Tjs7OzswNDVBOworMDQwQjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUU0hFO0x1OzA7TDs7Ozs7Tjs7U2VyYm9jcm9hdGlhbjs7MDQ1QjsKKzA0MEM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0pFO0x1OzA7TDswNDFBIDAzMDE7Ozs7Tjs7OzswNDVDOworMDQwRTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBVO0x1OzA7TDswNDIzIDAzMDY7Ozs7Tjs7QnllbG9ydXNzaWFuOzswNDVFOworMDQwRjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBEWkhFO0x1OzA7TDs7Ozs7Tjs7OzswNDVGOworMDQxMDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBO0x1OzA7TDs7Ozs7Tjs7OzswNDMwOworMDQxMTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRTtMdTswO0w7Ozs7O047Ozs7MDQzMTsKKzA0MTI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVkU7THU7MDtMOzs7OztOOzs7OzA0MzI7CiswNDEzO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0U7OzswNDMzOworMDQxNDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBERTtMdTswO0w7Ozs7O047Ozs7MDQzNDsKKzA0MTU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUU7THU7MDtMOzs7OztOOzs7OzA0MzU7CiswNDE2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRTtMdTswO0w7Ozs7O047Ozs7MDQzNjsKKzA0MTc7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkU7THU7MDtMOzs7OztOOzs7OzA0Mzc7CiswNDE4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEk7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElJOzs7MDQzODsKKzA0MTk7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgSTtMdTswO0w7MDQxOCAwMzA2Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgSUk7OzswNDM5OworMDQxQTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQTtMdTswO0w7Ozs7O047Ozs7MDQzQTsKKzA0MUI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUw7THU7MDtMOzs7OztOOzs7OzA0M0I7CiswNDFDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVNO0x1OzA7TDs7Ozs7Tjs7OzswNDNDOworMDQxRDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTjtMdTswO0w7Ozs7O047Ozs7MDQzRDsKKzA0MUU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTztMdTswO0w7Ozs7O047Ozs7MDQzRTsKKzA0MUY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUEU7THU7MDtMOzs7OztOOzs7OzA0M0Y7CiswNDIwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVSO0x1OzA7TDs7Ozs7Tjs7OzswNDQwOworMDQyMTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUztMdTswO0w7Ozs7O047Ozs7MDQ0MTsKKzA0MjI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEU7THU7MDtMOzs7OztOOzs7OzA0NDI7CiswNDIzO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFU7THU7MDtMOzs7OztOOzs7OzA0NDM7CiswNDI0O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVGO0x1OzA7TDs7Ozs7Tjs7OzswNDQ0OworMDQyNTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0hBOzs7MDQ0NTsKKzA0MjY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNFO0x1OzA7TDs7Ozs7Tjs7OzswNDQ2OworMDQyNztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEU7THU7MDtMOzs7OztOOzs7OzA0NDc7CiswNDI4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQTtMdTswO0w7Ozs7O047Ozs7MDQ0ODsKKzA0Mjk7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hDSEE7THU7MDtMOzs7OztOOzs7OzA0NDk7CiswNDJBO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEhBUkQgU0lHTjtMdTswO0w7Ozs7O047Ozs7MDQ0QTsKKzA0MkI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUVSVTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUVSSTs7OzA0NEI7CiswNDJDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNPRlQgU0lHTjtMdTswO0w7Ozs7O047Ozs7MDQ0QzsKKzA0MkQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUkVWRVJTRUQgRTs7OzA0NEQ7CiswNDJFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFlVO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJVTs7OzA0NEU7CiswNDJGO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFlBO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJQTs7OzA0NEY7CiswNDMwO0NZUklMTElDIFNNQUxMIExFVFRFUiBBO0xsOzA7TDs7Ozs7Tjs7OzA0MTA7OzA0MTAKKzA0MzE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFO0xsOzA7TDs7Ozs7Tjs7OzA0MTE7OzA0MTEKKzA0MzI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFO0xsOzA7TDs7Ozs7Tjs7OzA0MTI7OzA0MTIKKzA0MzM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEdFOzswNDEzOzswNDEzCiswNDM0O0NZUklMTElDIFNNQUxMIExFVFRFUiBERTtMbDswO0w7Ozs7O047OzswNDE0OzswNDE0CiswNDM1O0NZUklMTElDIFNNQUxMIExFVFRFUiBJRTtMbDswO0w7Ozs7O047OzswNDE1OzswNDE1CiswNDM2O0NZUklMTElDIFNNQUxMIExFVFRFUiBaSEU7TGw7MDtMOzs7OztOOzs7MDQxNjs7MDQxNgorMDQzNztDWVJJTExJQyBTTUFMTCBMRVRURVIgWkU7TGw7MDtMOzs7OztOOzs7MDQxNzs7MDQxNworMDQzODtDWVJJTExJQyBTTUFMTCBMRVRURVIgSTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElJOzswNDE4OzswNDE4CiswNDM5O0NZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJO0xsOzA7TDswNDM4IDAzMDY7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSUk7OzA0MTk7OzA0MTkKKzA0M0E7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBO0xsOzA7TDs7Ozs7Tjs7OzA0MUE7OzA0MUEKKzA0M0I7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMO0xsOzA7TDs7Ozs7Tjs7OzA0MUI7OzA0MUIKKzA0M0M7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNO0xsOzA7TDs7Ozs7Tjs7OzA0MUM7OzA0MUMKKzA0M0Q7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOO0xsOzA7TDs7Ozs7Tjs7OzA0MUQ7OzA0MUQKKzA0M0U7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE87TGw7MDtMOzs7OztOOzs7MDQxRTs7MDQxRQorMDQzRjtDWVJJTExJQyBTTUFMTCBMRVRURVIgUEU7TGw7MDtMOzs7OztOOzs7MDQxRjs7MDQxRgorMDQ0MDtDWVJJTExJQyBTTUFMTCBMRVRURVIgRVI7TGw7MDtMOzs7OztOOzs7MDQyMDs7MDQyMAorMDQ0MTtDWVJJTExJQyBTTUFMTCBMRVRURVIgRVM7TGw7MDtMOzs7OztOOzs7MDQyMTs7MDQyMQorMDQ0MjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVEU7TGw7MDtMOzs7OztOOzs7MDQyMjs7MDQyMgorMDQ0MztDWVJJTExJQyBTTUFMTCBMRVRURVIgVTtMbDswO0w7Ozs7O047OzswNDIzOzswNDIzCiswNDQ0O0NZUklMTElDIFNNQUxMIExFVFRFUiBFRjtMbDswO0w7Ozs7O047OzswNDI0OzswNDI0CiswNDQ1O0NZUklMTElDIFNNQUxMIExFVFRFUiBIQTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtIQTs7MDQyNTs7MDQyNQorMDQ0NjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNFO0xsOzA7TDs7Ozs7Tjs7OzA0MjY7OzA0MjYKKzA0NDc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRTtMbDswO0w7Ozs7O047OzswNDI3OzswNDI3CiswNDQ4O0NZUklMTElDIFNNQUxMIExFVFRFUiBTSEE7TGw7MDtMOzs7OztOOzs7MDQyODs7MDQyOAorMDQ0OTtDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hDSEE7TGw7MDtMOzs7OztOOzs7MDQyOTs7MDQyOQorMDQ0QTtDWVJJTExJQyBTTUFMTCBMRVRURVIgSEFSRCBTSUdOO0xsOzA7TDs7Ozs7Tjs7OzA0MkE7OzA0MkEKKzA0NEI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlU7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBZRVJJOzswNDJCOzswNDJCCiswNDRDO0NZUklMTElDIFNNQUxMIExFVFRFUiBTT0ZUIFNJR047TGw7MDtMOzs7OztOOzs7MDQyQzs7MDQyQworMDQ0RDtDWVJJTExJQyBTTUFMTCBMRVRURVIgRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFJFVkVSU0VEIEU7OzA0MkQ7OzA0MkQKKzA0NEU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFlVO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgSVU7OzA0MkU7OzA0MkUKKzA0NEY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgSUE7OzA0MkY7OzA0MkYKKzA0NTE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElPO0xsOzA7TDswNDM1IDAzMDg7Ozs7Tjs7OzA0MDE7OzA0MDEKKzA0NTI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIERKRTtMbDswO0w7Ozs7O047O1NlcmJvY3JvYXRpYW47MDQwMjs7MDQwMgorMDQ1MztDWVJJTExJQyBTTUFMTCBMRVRURVIgR0pFO0xsOzA7TDswNDMzIDAzMDE7Ozs7Tjs7OzA0MDM7OzA0MDMKKzA0NTQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFVLUkFJTklBTiBJRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEU7OzA0MDQ7OzA0MDQKKzA0NTU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIERaRTtMbDswO0w7Ozs7O047OzswNDA1OzswNDA1CiswNDU2O0NZUklMTElDIFNNQUxMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEk7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBJOzswNDA2OzswNDA2CiswNDU3O0NZUklMTElDIFNNQUxMIExFVFRFUiBZSTtMbDswO0w7MDQ1NiAwMzA4Ozs7O047O1VrcmFpbmlhbjswNDA3OzswNDA3CiswNDU4O0NZUklMTElDIFNNQUxMIExFVFRFUiBKRTtMbDswO0w7Ozs7O047OzswNDA4OzswNDA4CiswNDU5O0NZUklMTElDIFNNQUxMIExFVFRFUiBMSkU7TGw7MDtMOzs7OztOOzs7MDQwOTs7MDQwOQorMDQ1QTtDWVJJTExJQyBTTUFMTCBMRVRURVIgTkpFO0xsOzA7TDs7Ozs7Tjs7OzA0MEE7OzA0MEEKKzA0NUI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFRTSEU7TGw7MDtMOzs7OztOOztTZXJib2Nyb2F0aWFuOzA0MEI7OzA0MEIKKzA0NUM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtKRTtMbDswO0w7MDQzQSAwMzAxOzs7O047OzswNDBDOzswNDBDCiswNDVFO0NZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBVO0xsOzA7TDswNDQzIDAzMDY7Ozs7Tjs7QnllbG9ydXNzaWFuOzA0MEU7OzA0MEUKKzA0NUY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIERaSEU7TGw7MDtMOzs7OztOOzs7MDQwRjs7MDQwRgorMDQ2MDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPTUVHQTtMdTswO0w7Ozs7O047Ozs7MDQ2MTsKKzA0NjE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE9NRUdBO0xsOzA7TDs7Ozs7Tjs7OzA0NjA7OzA0NjAKKzA0NjI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUFUO0x1OzA7TDs7Ozs7Tjs7OzswNDYzOworMDQ2MztDWVJJTExJQyBTTUFMTCBMRVRURVIgWUFUO0xsOzA7TDs7Ozs7Tjs7OzA0NjI7OzA0NjIKKzA0NjQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU9USUZJRUQgRTtMdTswO0w7Ozs7O047Ozs7MDQ2NTsKKzA0NjU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElPVElGSUVEIEU7TGw7MDtMOzs7OztOOzs7MDQ2NDs7MDQ2NAorMDQ2NjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBMSVRUTEUgWVVTO0x1OzA7TDs7Ozs7Tjs7OzswNDY3OworMDQ2NztDWVJJTExJQyBTTUFMTCBMRVRURVIgTElUVExFIFlVUztMbDswO0w7Ozs7O047OzswNDY2OzswNDY2CiswNDY4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIElPVElGSUVEIExJVFRMRSBZVVM7THU7MDtMOzs7OztOOzs7OzA0Njk7CiswNDY5O0NZUklMTElDIFNNQUxMIExFVFRFUiBJT1RJRklFRCBMSVRUTEUgWVVTO0xsOzA7TDs7Ozs7Tjs7OzA0Njg7OzA0NjgKKzA0NkE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQklHIFlVUztMdTswO0w7Ozs7O047Ozs7MDQ2QjsKKzA0NkI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEJJRyBZVVM7TGw7MDtMOzs7OztOOzs7MDQ2QTs7MDQ2QQorMDQ2QztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJT1RJRklFRCBCSUcgWVVTO0x1OzA7TDs7Ozs7Tjs7OzswNDZEOworMDQ2RDtDWVJJTExJQyBTTUFMTCBMRVRURVIgSU9USUZJRUQgQklHIFlVUztMbDswO0w7Ozs7O047OzswNDZDOzswNDZDCiswNDZFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtTSTtMdTswO0w7Ozs7O047Ozs7MDQ2RjsKKzA0NkY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtTSTtMbDswO0w7Ozs7O047OzswNDZFOzswNDZFCiswNDcwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFBTSTtMdTswO0w7Ozs7O047Ozs7MDQ3MTsKKzA0NzE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFBTSTtMbDswO0w7Ozs7O047OzswNDcwOzswNDcwCiswNDcyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEZJVEE7THU7MDtMOzs7OztOOzs7OzA0NzM7CiswNDczO0NZUklMTElDIFNNQUxMIExFVFRFUiBGSVRBO0xsOzA7TDs7Ozs7Tjs7OzA0NzI7OzA0NzIKKzA0NzQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSVpISVRTQTtMdTswO0w7Ozs7O047Ozs7MDQ3NTsKKzA0NzU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElaSElUU0E7TGw7MDtMOzs7OztOOzs7MDQ3NDs7MDQ3NAorMDQ3NjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJWkhJVFNBIFdJVEggRE9VQkxFIEdSQVZFIEFDQ0VOVDtMdTswO0w7MDQ3NCAwMzBGOzs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSVpISVRTQSBET1VCTEUgR1JBVkU7OzswNDc3OworMDQ3NztDWVJJTExJQyBTTUFMTCBMRVRURVIgSVpISVRTQSBXSVRIIERPVUJMRSBHUkFWRSBBQ0NFTlQ7TGw7MDtMOzA0NzUgMDMwRjs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBJWkhJVFNBIERPVUJMRSBHUkFWRTs7MDQ3Njs7MDQ3NgorMDQ3ODtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVSztMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVUsgRElHUkFQSDs7OzA0Nzk7CiswNDc5O0NZUklMTElDIFNNQUxMIExFVFRFUiBVSztMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFVLIERJR1JBUEg7OzA0Nzg7OzA0NzgKKzA0N0E7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUk9VTkQgT01FR0E7THU7MDtMOzs7OztOOzs7OzA0N0I7CiswNDdCO0NZUklMTElDIFNNQUxMIExFVFRFUiBST1VORCBPTUVHQTtMbDswO0w7Ozs7O047OzswNDdBOzswNDdBCiswNDdDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggVElUTE87THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIE9NRUdBIFRJVExPOzs7MDQ3RDsKKzA0N0Q7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggVElUTE87TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBPTUVHQSBUSVRMTzs7MDQ3Qzs7MDQ3QworMDQ3RTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPVDtMdTswO0w7Ozs7O047Ozs7MDQ3RjsKKzA0N0Y7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE9UO0xsOzA7TDs7Ozs7Tjs7OzA0N0U7OzA0N0UKKzA0ODA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS09QUEE7THU7MDtMOzs7OztOOzs7OzA0ODE7CiswNDgxO0NZUklMTElDIFNNQUxMIExFVFRFUiBLT1BQQTtMbDswO0w7Ozs7O047OzswNDgwOzswNDgwCiswNDgyO0NZUklMTElDIFRIT1VTQU5EUyBTSUdOO1NvOzA7TDs7Ozs7Tjs7Ozs7CiswNDgzO0NPTUJJTklORyBDWVJJTExJQyBUSVRMTztNbjsyMzA7T047Ozs7O047Q1lSSUxMSUMgTk9OLVNQQUNJTkcgVElUTE87Ozs7CiswNDg0O0NPTUJJTklORyBDWVJJTExJQyBQQUxBVEFMSVpBVElPTjtNbjsyMzA7T047Ozs7O047Q1lSSUxMSUMgTk9OLVNQQUNJTkcgUEFMQVRBTElaQVRJT047Ozs7CiswNDg1O0NPTUJJTklORyBDWVJJTExJQyBEQVNJQSBQTkVVTUFUQTtNbjsyMzA7T047Ozs7O047Q1lSSUxMSUMgTk9OLVNQQUNJTkcgREFTSUEgUE5FVU1BVEE7Ozs7CiswNDg2O0NPTUJJTklORyBDWVJJTExJQyBQU0lMSSBQTkVVTUFUQTtNbjsyMzA7T047Ozs7O047Q1lSSUxMSUMgTk9OLVNQQUNJTkcgUFNJTEkgUE5FVU1BVEE7Ozs7CiswNDkwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIFVQVFVSTjtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0UgV0lUSCBVUFRVUk47OzswNDkxOworMDQ5MTtDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFIFdJVEggVVBUVVJOO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgR0UgV0lUSCBVUFRVUk47OzA0OTA7OzA0OTAKKzA0OTI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFIFdJVEggU1RST0tFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHRSBCQVI7OzswNDkzOworMDQ5MztDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgR0UgQkFSOzswNDkyOzswNDkyCiswNDk0O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIE1JRERMRSBIT09LO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHRSBIT09LOzs7MDQ5NTsKKzA0OTU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRSBXSVRIIE1JRERMRSBIT09LO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgR0UgSE9PSzs7MDQ5NDs7MDQ5NAorMDQ5NjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUgV0lUSCBERVNDRU5ERVI7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRSBXSVRIIFJJR0hUIERFU0NFTkRFUjs7OzA0OTc7CiswNDk3O0NZUklMTElDIFNNQUxMIExFVFRFUiBaSEUgV0lUSCBERVNDRU5ERVI7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBaSEUgV0lUSCBSSUdIVCBERVNDRU5ERVI7OzA0OTY7OzA0OTYKKzA0OTg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUgV0lUSCBERVNDRU5ERVI7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFpFIENFRElMTEE7OzswNDk5OworMDQ5OTtDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUgV0lUSCBERVNDRU5ERVI7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBaRSBDRURJTExBOzswNDk4OzswNDk4CiswNDlBO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIFJJR0hUIERFU0NFTkRFUjs7OzA0OUI7CiswNDlCO0NZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUjtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggUklHSFQgREVTQ0VOREVSOzswNDlBOzswNDlBCiswNDlDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggVkVSVElDQUwgU1RST0tFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBWRVJUSUNBTCBCQVI7OzswNDlEOworMDQ5RDtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBWRVJUSUNBTCBTVFJPS0U7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBLQSBWRVJUSUNBTCBCQVI7OzA0OUM7OzA0OUMKKzA0OUU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBTVFJPS0U7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIEJBUjs7OzA0OUY7CiswNDlGO0NZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIEJBUjs7MDQ5RTs7MDQ5RQorMDRBMDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVNIS0lSIEtBO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBSRVZFUlNFRCBHRSBLQTs7OzA0QTE7CiswNEExO0NZUklMTElDIFNNQUxMIExFVFRFUiBCQVNIS0lSIEtBO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgUkVWRVJTRUQgR0UgS0E7OzA0QTA7OzA0QTAKKzA0QTI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gV0lUSCBERVNDRU5ERVI7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVOIFdJVEggUklHSFQgREVTQ0VOREVSOzs7MDRBMzsKKzA0QTM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOIFdJVEggREVTQ0VOREVSO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4gV0lUSCBSSUdIVCBERVNDRU5ERVI7OzA0QTI7OzA0QTIKKzA0QTQ7Q1lSSUxMSUMgQ0FQSVRBTCBMSUdBVFVSRSBFTiBHSEU7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVOIEdFOzs7MDRBNTsKKzA0QTU7Q1lSSUxMSUMgU01BTEwgTElHQVRVUkUgRU4gR0hFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4gR0U7OzA0QTQ7OzA0QTQKKzA0QTY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUEUgV0lUSCBNSURETEUgSE9PSztMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUEUgSE9PSztBYmtoYXNpYW47OzA0QTc7CiswNEE3O0NZUklMTElDIFNNQUxMIExFVFRFUiBQRSBXSVRIIE1JRERMRSBIT09LO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUgSE9PSztBYmtoYXNpYW47MDRBNjs7MDRBNgorMDRBODtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBQktIQVNJQU4gSEE7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIE8gSE9PSzs7OzA0QTk7CiswNEE5O0NZUklMTElDIFNNQUxMIExFVFRFUiBBQktIQVNJQU4gSEE7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBPIEhPT0s7OzA0QTg7OzA0QTgKKzA0QUE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMgV0lUSCBERVNDRU5ERVI7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVTIENFRElMTEE7OzswNEFCOworMDRBQjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMgV0lUSCBERVNDRU5ERVI7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBFUyBDRURJTExBOzswNEFBOzswNEFBCiswNEFDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFRFIFdJVEggREVTQ0VOREVSO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURSBXSVRIIFJJR0hUIERFU0NFTkRFUjs7OzA0QUQ7CiswNEFEO0NZUklMTElDIFNNQUxMIExFVFRFUiBURSBXSVRIIERFU0NFTkRFUjtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFIFdJVEggUklHSFQgREVTQ0VOREVSOzswNEFDOzswNEFDCiswNEFFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFU7THU7MDtMOzs7OztOOzs7OzA0QUY7CiswNEFGO0NZUklMTElDIFNNQUxMIExFVFRFUiBTVFJBSUdIVCBVO0xsOzA7TDs7Ozs7Tjs7OzA0QUU7OzA0QUUKKzA0QjA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU1RSQUlHSFQgVSBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU1RSQUlHSFQgVSBCQVI7OzswNEIxOworMDRCMTtDWVJJTExJQyBTTUFMTCBMRVRURVIgU1RSQUlHSFQgVSBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNUUkFJR0hUIFUgQkFSOzswNEIwOzswNEIwCiswNEIyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEhBIFdJVEggREVTQ0VOREVSO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLSEEgV0lUSCBSSUdIVCBERVNDRU5ERVI7OzswNEIzOworMDRCMztDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEgV0lUSCBERVNDRU5ERVI7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBLSEEgV0lUSCBSSUdIVCBERVNDRU5ERVI7OzA0QjI7OzA0QjIKKzA0QjQ7Q1lSSUxMSUMgQ0FQSVRBTCBMSUdBVFVSRSBURSBUU0U7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFRFIFRTRTtBYmtoYXNpYW47OzA0QjU7CiswNEI1O0NZUklMTElDIFNNQUxMIExJR0FUVVJFIFRFIFRTRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFIFRTRTtBYmtoYXNpYW47MDRCNDs7MDRCNAorMDRCNjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUgV0lUSCBERVNDRU5ERVI7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIFJJR0hUIERFU0NFTkRFUjs7OzA0Qjc7CiswNEI3O0NZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBERVNDRU5ERVI7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBSSUdIVCBERVNDRU5ERVI7OzA0QjY7OzA0QjYKKzA0Qjg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggVkVSVElDQUwgU1RST0tFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUgVkVSVElDQUwgQkFSOzs7MDRCOTsKKzA0Qjk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBXSVRIIFZFUlRJQ0FMIFNUUk9LRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBWRVJUSUNBTCBCQVI7OzA0Qjg7OzA0QjgKKzA0QkE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hIQTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSDs7OzA0QkI7CiswNEJCO0NZUklMTElDIFNNQUxMIExFVFRFUiBTSEhBO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgSDs7MDRCQTs7MDRCQQorMDRCQztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBQktIQVNJQU4gQ0hFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRSBIT09LOzs7MDRCRDsKKzA0QkQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEFCS0hBU0lBTiBDSEU7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBJRSBIT09LOzswNEJDOzswNEJDCiswNEJFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEFCS0hBU0lBTiBDSEUgV0lUSCBERVNDRU5ERVI7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElFIEhPT0sgT0dPTkVLOzs7MDRCRjsKKzA0QkY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEFCS0hBU0lBTiBDSEUgV0lUSCBERVNDRU5ERVI7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBJRSBIT09LIE9HT05FSzs7MDRCRTs7MDRCRQorMDRDMDtDWVJJTExJQyBMRVRURVIgUEFMT0NIS0E7TG87MDtMOzs7OztOO0NZUklMTElDIExFVFRFUiBJOzs7OworMDRDMTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUgV0lUSCBCUkVWRTtMdTswO0w7MDQxNiAwMzA2Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgWkhFOzs7MDRDMjsKKzA0QzI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRSBXSVRIIEJSRVZFO0xsOzA7TDswNDM2IDAzMDY7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgWkhFOzswNEMxOzswNEMxCiswNEMzO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggSE9PSztMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgSE9PSzs7OzA0QzQ7CiswNEM0O0NZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBLQSBIT09LOzswNEMzOzswNEMzCiswNEM3O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVOIFdJVEggSE9PSztMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gSE9PSzs7OzA0Qzg7CiswNEM4O0NZUklMTElDIFNNQUxMIExFVFRFUiBFTiBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBFTiBIT09LOzswNEM3OzswNEM3CiswNENCO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtIQUtBU1NJQU4gQ0hFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUgV0lUSCBMRUZUIERFU0NFTkRFUjs7OzA0Q0M7CiswNENDO0NZUklMTElDIFNNQUxMIExFVFRFUiBLSEFLQVNTSUFOIENIRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBXSVRIIExFRlQgREVTQ0VOREVSOzswNENCOzswNENCCiswNEQwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRTtMdTswO0w7MDQxMCAwMzA2Ozs7O047Ozs7MDREMTsKKzA0RDE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRTtMbDswO0w7MDQzMCAwMzA2Ozs7O047OzswNEQwOzswNEQwCiswNEQyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVM7THU7MDtMOzA0MTAgMDMwODs7OztOOzs7OzA0RDM7CiswNEQzO0NZUklMTElDIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNDMwIDAzMDg7Ozs7Tjs7OzA0RDI7OzA0RDIKKzA0RDQ7Q1lSSUxMSUMgQ0FQSVRBTCBMSUdBVFVSRSBBIElFO0x1OzA7TDs7Ozs7Tjs7OzswNEQ1OworMDRENTtDWVJJTExJQyBTTUFMTCBMSUdBVFVSRSBBIElFO0xsOzA7TDs7Ozs7Tjs7OzA0RDQ7OzA0RDQKKzA0RDY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUgV0lUSCBCUkVWRTtMdTswO0w7MDQxNSAwMzA2Ozs7O047Ozs7MDRENzsKKzA0RDc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElFIFdJVEggQlJFVkU7TGw7MDtMOzA0MzUgMDMwNjs7OztOOzs7MDRENjs7MDRENgorMDREODtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTQ0hXQTtMdTswO0w7Ozs7O047Ozs7MDREOTsKKzA0RDk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNDSFdBO0xsOzA7TDs7Ozs7Tjs7OzA0RDg7OzA0RDgKKzA0REE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0NIV0EgV0lUSCBESUFFUkVTSVM7THU7MDtMOzA0RDggMDMwODs7OztOOzs7OzA0REI7CiswNERCO0NZUklMTElDIFNNQUxMIExFVFRFUiBTQ0hXQSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDREOSAwMzA4Ozs7O047OzswNERBOzswNERBCiswNERDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDQxNiAwMzA4Ozs7O047Ozs7MDRERDsKKzA0REQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDQzNiAwMzA4Ozs7O047OzswNERDOzswNERDCiswNERFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFpFIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNDE3IDAzMDg7Ozs7Tjs7OzswNERGOworMDRERjtDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzA0MzcgMDMwODs7OztOOzs7MDRERTs7MDRERQorMDRFMDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBQktIQVNJQU4gRFpFO0x1OzA7TDs7Ozs7Tjs7OzswNEUxOworMDRFMTtDWVJJTExJQyBTTUFMTCBMRVRURVIgQUJLSEFTSUFOIERaRTtMbDswO0w7Ozs7O047OzswNEUwOzswNEUwCiswNEUyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST047THU7MDtMOzA0MTggMDMwNDs7OztOOzs7OzA0RTM7CiswNEUzO0NZUklMTElDIFNNQUxMIExFVFRFUiBJIFdJVEggTUFDUk9OO0xsOzA7TDswNDM4IDAzMDQ7Ozs7Tjs7OzA0RTI7OzA0RTIKKzA0RTQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDQxOCAwMzA4Ozs7O047Ozs7MDRFNTsKKzA0RTU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzA0MzggMDMwODs7OztOOzs7MDRFNDs7MDRFNAorMDRFNjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNDFFIDAzMDg7Ozs7Tjs7OzswNEU3OworMDRFNztDWVJJTExJQyBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUztMbDswO0w7MDQzRSAwMzA4Ozs7O047OzswNEU2OzswNEU2CiswNEU4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEJBUlJFRCBPO0x1OzA7TDs7Ozs7Tjs7OzswNEU5OworMDRFOTtDWVJJTExJQyBTTUFMTCBMRVRURVIgQkFSUkVEIE87TGw7MDtMOzs7OztOOzs7MDRFODs7MDRFOAorMDRFQTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVJSRUQgTyBXSVRIIERJQUVSRVNJUztMdTswO0w7MDRFOCAwMzA4Ozs7O047Ozs7MDRFQjsKKzA0RUI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEJBUlJFRCBPIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNEU5IDAzMDg7Ozs7Tjs7OzA0RUE7OzA0RUEKKzA0RUU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTjtMdTswO0w7MDQyMyAwMzA0Ozs7O047Ozs7MDRFRjsKKzA0RUY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST047TGw7MDtMOzA0NDMgMDMwNDs7OztOOzs7MDRFRTs7MDRFRQorMDRGMDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNDIzIDAzMDg7Ozs7Tjs7OzswNEYxOworMDRGMTtDWVJJTExJQyBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDQ0MyAwMzA4Ozs7O047OzswNEYwOzswNEYwCiswNEYyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEU7THU7MDtMOzA0MjMgMDMwQjs7OztOOzs7OzA0RjM7CiswNEYzO0NZUklMTElDIFNNQUxMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFO0xsOzA7TDswNDQzIDAzMEI7Ozs7Tjs7OzA0RjI7OzA0RjIKKzA0RjQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNDI3IDAzMDg7Ozs7Tjs7OzswNEY1OworMDRGNTtDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNDQ3IDAzMDg7Ozs7Tjs7OzA0RjQ7OzA0RjQKKzA0Rjg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUVSVSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDQyQiAwMzA4Ozs7O047Ozs7MDRGOTsKKzA0Rjk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlUgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzA0NEIgMDMwODs7OztOOzs7MDRGODs7MDRGOAorMDUzMTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBBWUI7THU7MDtMOzs7OztOOzs7OzA1NjE7CiswNTMyO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEJFTjtMdTswO0w7Ozs7O047Ozs7MDU2MjsKKzA1MzM7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgR0lNO0x1OzA7TDs7Ozs7Tjs7OzswNTYzOworMDUzNDtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBEQTtMdTswO0w7Ozs7O047Ozs7MDU2NDsKKzA1MzU7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgRUNIO0x1OzA7TDs7Ozs7Tjs7OzswNTY1OworMDUzNjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBaQTtMdTswO0w7Ozs7O047Ozs7MDU2NjsKKzA1Mzc7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgRUg7THU7MDtMOzs7OztOOzs7OzA1Njc7CiswNTM4O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEVUO0x1OzA7TDs7Ozs7Tjs7OzswNTY4OworMDUzOTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBUTztMdTswO0w7Ozs7O047Ozs7MDU2OTsKKzA1M0E7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgWkhFO0x1OzA7TDs7Ozs7Tjs7OzswNTZBOworMDUzQjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBJTkk7THU7MDtMOzs7OztOOzs7OzA1NkI7CiswNTNDO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIExJV047THU7MDtMOzs7OztOOzs7OzA1NkM7CiswNTNEO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFhFSDtMdTswO0w7Ozs7O047Ozs7MDU2RDsKKzA1M0U7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgQ0E7THU7MDtMOzs7OztOOzs7OzA1NkU7CiswNTNGO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEtFTjtMdTswO0w7Ozs7O047Ozs7MDU2RjsKKzA1NDA7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgSE87THU7MDtMOzs7OztOOzs7OzA1NzA7CiswNTQxO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEpBO0x1OzA7TDs7Ozs7Tjs7OzswNTcxOworMDU0MjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBHSEFEO0x1OzA7TDs7Ozs7TjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBMQUQ7OzswNTcyOworMDU0MztBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBDSEVIO0x1OzA7TDs7Ozs7Tjs7OzswNTczOworMDU0NDtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBNRU47THU7MDtMOzs7OztOOzs7OzA1NzQ7CiswNTQ1O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFlJO0x1OzA7TDs7Ozs7Tjs7OzswNTc1OworMDU0NjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBOT1c7THU7MDtMOzs7OztOOzs7OzA1NzY7CiswNTQ3O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFNIQTtMdTswO0w7Ozs7O047Ozs7MDU3NzsKKzA1NDg7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgVk87THU7MDtMOzs7OztOOzs7OzA1Nzg7CiswNTQ5O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIENIQTtMdTswO0w7Ozs7O047Ozs7MDU3OTsKKzA1NEE7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgUEVIO0x1OzA7TDs7Ozs7Tjs7OzswNTdBOworMDU0QjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBKSEVIO0x1OzA7TDs7Ozs7Tjs7OzswNTdCOworMDU0QztBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBSQTtMdTswO0w7Ozs7O047Ozs7MDU3QzsKKzA1NEQ7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgU0VIO0x1OzA7TDs7Ozs7Tjs7OzswNTdEOworMDU0RTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBWRVc7THU7MDtMOzs7OztOOzs7OzA1N0U7CiswNTRGO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFRJV047THU7MDtMOzs7OztOOzs7OzA1N0Y7CiswNTUwO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFJFSDtMdTswO0w7Ozs7O047Ozs7MDU4MDsKKzA1NTE7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgQ087THU7MDtMOzs7OztOOzs7OzA1ODE7CiswNTUyO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFlJV047THU7MDtMOzs7OztOOzs7OzA1ODI7CiswNTUzO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFBJV1I7THU7MDtMOzs7OztOOzs7OzA1ODM7CiswNTU0O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEtFSDtMdTswO0w7Ozs7O047Ozs7MDU4NDsKKzA1NTU7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgT0g7THU7MDtMOzs7OztOOzs7OzA1ODU7CiswNTU2O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEZFSDtMdTswO0w7Ozs7O047Ozs7MDU4NjsKKzA1NTk7QVJNRU5JQU4gTU9ESUZJRVIgTEVUVEVSIExFRlQgSEFMRiBSSU5HO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswNTVBO0FSTUVOSUFOIEFQT1NUUk9QSEU7UG87MDtMOzs7OztOO0FSTUVOSUFOIE1PRElGSUVSIExFVFRFUiBSSUdIVCBIQUxGIFJJTkc7Ozs7CiswNTVCO0FSTUVOSUFOIEVNUEhBU0lTIE1BUks7UG87MDtMOzs7OztOOzs7OzsKKzA1NUM7QVJNRU5JQU4gRVhDTEFNQVRJT04gTUFSSztQbzswO0w7Ozs7O047Ozs7OworMDU1RDtBUk1FTklBTiBDT01NQTtQbzswO0w7Ozs7O047Ozs7OworMDU1RTtBUk1FTklBTiBRVUVTVElPTiBNQVJLO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswNTVGO0FSTUVOSUFOIEFCQlJFVklBVElPTiBNQVJLO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswNTYxO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBBWUI7TGw7MDtMOzs7OztOOzs7MDUzMTs7MDUzMQorMDU2MjtBUk1FTklBTiBTTUFMTCBMRVRURVIgQkVOO0xsOzA7TDs7Ozs7Tjs7OzA1MzI7OzA1MzIKKzA1NjM7QVJNRU5JQU4gU01BTEwgTEVUVEVSIEdJTTtMbDswO0w7Ozs7O047OzswNTMzOzswNTMzCiswNTY0O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBEQTtMbDswO0w7Ozs7O047OzswNTM0OzswNTM0CiswNTY1O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBFQ0g7TGw7MDtMOzs7OztOOzs7MDUzNTs7MDUzNQorMDU2NjtBUk1FTklBTiBTTUFMTCBMRVRURVIgWkE7TGw7MDtMOzs7OztOOzs7MDUzNjs7MDUzNgorMDU2NztBUk1FTklBTiBTTUFMTCBMRVRURVIgRUg7TGw7MDtMOzs7OztOOzs7MDUzNzs7MDUzNworMDU2ODtBUk1FTklBTiBTTUFMTCBMRVRURVIgRVQ7TGw7MDtMOzs7OztOOzs7MDUzODs7MDUzOAorMDU2OTtBUk1FTklBTiBTTUFMTCBMRVRURVIgVE87TGw7MDtMOzs7OztOOzs7MDUzOTs7MDUzOQorMDU2QTtBUk1FTklBTiBTTUFMTCBMRVRURVIgWkhFO0xsOzA7TDs7Ozs7Tjs7OzA1M0E7OzA1M0EKKzA1NkI7QVJNRU5JQU4gU01BTEwgTEVUVEVSIElOSTtMbDswO0w7Ozs7O047OzswNTNCOzswNTNCCiswNTZDO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBMSVdOO0xsOzA7TDs7Ozs7Tjs7OzA1M0M7OzA1M0MKKzA1NkQ7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFhFSDtMbDswO0w7Ozs7O047OzswNTNEOzswNTNECiswNTZFO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBDQTtMbDswO0w7Ozs7O047OzswNTNFOzswNTNFCiswNTZGO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBLRU47TGw7MDtMOzs7OztOOzs7MDUzRjs7MDUzRgorMDU3MDtBUk1FTklBTiBTTUFMTCBMRVRURVIgSE87TGw7MDtMOzs7OztOOzs7MDU0MDs7MDU0MAorMDU3MTtBUk1FTklBTiBTTUFMTCBMRVRURVIgSkE7TGw7MDtMOzs7OztOOzs7MDU0MTs7MDU0MQorMDU3MjtBUk1FTklBTiBTTUFMTCBMRVRURVIgR0hBRDtMbDswO0w7Ozs7O047QVJNRU5JQU4gU01BTEwgTEVUVEVSIExBRDs7MDU0Mjs7MDU0MgorMDU3MztBUk1FTklBTiBTTUFMTCBMRVRURVIgQ0hFSDtMbDswO0w7Ozs7O047OzswNTQzOzswNTQzCiswNTc0O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBNRU47TGw7MDtMOzs7OztOOzs7MDU0NDs7MDU0NAorMDU3NTtBUk1FTklBTiBTTUFMTCBMRVRURVIgWUk7TGw7MDtMOzs7OztOOzs7MDU0NTs7MDU0NQorMDU3NjtBUk1FTklBTiBTTUFMTCBMRVRURVIgTk9XO0xsOzA7TDs7Ozs7Tjs7OzA1NDY7OzA1NDYKKzA1Nzc7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFNIQTtMbDswO0w7Ozs7O047OzswNTQ3OzswNTQ3CiswNTc4O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBWTztMbDswO0w7Ozs7O047OzswNTQ4OzswNTQ4CiswNTc5O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBDSEE7TGw7MDtMOzs7OztOOzs7MDU0OTs7MDU0OQorMDU3QTtBUk1FTklBTiBTTUFMTCBMRVRURVIgUEVIO0xsOzA7TDs7Ozs7Tjs7OzA1NEE7OzA1NEEKKzA1N0I7QVJNRU5JQU4gU01BTEwgTEVUVEVSIEpIRUg7TGw7MDtMOzs7OztOOzs7MDU0Qjs7MDU0QgorMDU3QztBUk1FTklBTiBTTUFMTCBMRVRURVIgUkE7TGw7MDtMOzs7OztOOzs7MDU0Qzs7MDU0QworMDU3RDtBUk1FTklBTiBTTUFMTCBMRVRURVIgU0VIO0xsOzA7TDs7Ozs7Tjs7OzA1NEQ7OzA1NEQKKzA1N0U7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFZFVztMbDswO0w7Ozs7O047OzswNTRFOzswNTRFCiswNTdGO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBUSVdOO0xsOzA7TDs7Ozs7Tjs7OzA1NEY7OzA1NEYKKzA1ODA7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFJFSDtMbDswO0w7Ozs7O047OzswNTUwOzswNTUwCiswNTgxO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBDTztMbDswO0w7Ozs7O047OzswNTUxOzswNTUxCiswNTgyO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBZSVdOO0xsOzA7TDs7Ozs7Tjs7OzA1NTI7OzA1NTIKKzA1ODM7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFBJV1I7TGw7MDtMOzs7OztOOzs7MDU1Mzs7MDU1MworMDU4NDtBUk1FTklBTiBTTUFMTCBMRVRURVIgS0VIO0xsOzA7TDs7Ozs7Tjs7OzA1NTQ7OzA1NTQKKzA1ODU7QVJNRU5JQU4gU01BTEwgTEVUVEVSIE9IO0xsOzA7TDs7Ozs7Tjs7OzA1NTU7OzA1NTUKKzA1ODY7QVJNRU5JQU4gU01BTEwgTEVUVEVSIEZFSDtMbDswO0w7Ozs7O047OzswNTU2OzswNTU2CiswNTg3O0FSTUVOSUFOIFNNQUxMIExJR0FUVVJFIEVDSCBZSVdOO0xsOzA7TDs8Y29tcGF0PiAwNTY1IDA1ODI7Ozs7Tjs7Ozs7CiswNTg5O0FSTUVOSUFOIEZVTEwgU1RPUDtQbzswO0w7Ozs7O047QVJNRU5JQU4gUEVSSU9EOzs7OworMDU5MTtIRUJSRVcgQUNDRU5UIEVUTkFIVEE7TW47MjIwO09OOzs7OztOOzs7OzsKKzA1OTI7SEVCUkVXIEFDQ0VOVCBTRUdPTDtNbjsyMzA7T047Ozs7O047Ozs7OworMDU5MztIRUJSRVcgQUNDRU5UIFNIQUxTSEVMRVQ7TW47MjMwO09OOzs7OztOOzs7OzsKKzA1OTQ7SEVCUkVXIEFDQ0VOVCBaQVFFRiBRQVRBTjtNbjsyMzA7T047Ozs7O047Ozs7OworMDU5NTtIRUJSRVcgQUNDRU5UIFpBUUVGIEdBRE9MO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNTk2O0hFQlJFVyBBQ0NFTlQgVElQRUhBO01uOzIyMDtPTjs7Ozs7Tjs7Ozs7CiswNTk3O0hFQlJFVyBBQ0NFTlQgUkVWSUE7TW47MjMwO09OOzs7OztOOzs7OzsKKzA1OTg7SEVCUkVXIEFDQ0VOVCBaQVJRQTtNbjsyMzA7T047Ozs7O047Ozs7OworMDU5OTtIRUJSRVcgQUNDRU5UIFBBU0hUQTtNbjsyMzA7T047Ozs7O047Ozs7OworMDU5QTtIRUJSRVcgQUNDRU5UIFlFVElWO01uOzIyMjtPTjs7Ozs7Tjs7Ozs7CiswNTlCO0hFQlJFVyBBQ0NFTlQgVEVWSVI7TW47MjIwO09OOzs7OztOOzs7OzsKKzA1OUM7SEVCUkVXIEFDQ0VOVCBHRVJFU0g7TW47MjMwO09OOzs7OztOOzs7OzsKKzA1OUQ7SEVCUkVXIEFDQ0VOVCBHRVJFU0ggTVVRREFNO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNTlFO0hFQlJFVyBBQ0NFTlQgR0VSU0hBWUlNO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNTlGO0hFQlJFVyBBQ0NFTlQgUUFSTkVZIFBBUkE7TW47MjMwO09OOzs7OztOOzs7OzsKKzA1QTA7SEVCUkVXIEFDQ0VOVCBURUxJU0hBIEdFRE9MQTtNbjsyMzA7T047Ozs7O047Ozs7OworMDVBMTtIRUJSRVcgQUNDRU5UIFBBWkVSO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNUEzO0hFQlJFVyBBQ0NFTlQgTVVOQUg7TW47MjIwO09OOzs7OztOOzs7OzsKKzA1QTQ7SEVCUkVXIEFDQ0VOVCBNQUhBUEFLSDtNbjsyMjA7T047Ozs7O047Ozs7OworMDVBNTtIRUJSRVcgQUNDRU5UIE1FUktIQTtNbjsyMjA7T047Ozs7O047Ozs7OworMDVBNjtIRUJSRVcgQUNDRU5UIE1FUktIQSBLRUZVTEE7TW47MjIwO09OOzs7OztOOzs7OzsKKzA1QTc7SEVCUkVXIEFDQ0VOVCBEQVJHQTtNbjsyMjA7T047Ozs7O047Ozs7OworMDVBODtIRUJSRVcgQUNDRU5UIFFBRE1BO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNUE5O0hFQlJFVyBBQ0NFTlQgVEVMSVNIQSBRRVRBTkE7TW47MjMwO09OOzs7OztOOzs7OzsKKzA1QUE7SEVCUkVXIEFDQ0VOVCBZRVJBSCBCRU4gWU9NTztNbjsyMjA7T047Ozs7O047Ozs7OworMDVBQjtIRUJSRVcgQUNDRU5UIE9MRTtNbjsyMzA7T047Ozs7O047Ozs7OworMDVBQztIRUJSRVcgQUNDRU5UIElMVVk7TW47MjMwO09OOzs7OztOOzs7OzsKKzA1QUQ7SEVCUkVXIEFDQ0VOVCBERUhJO01uOzIyMjtPTjs7Ozs7Tjs7Ozs7CiswNUFFO0hFQlJFVyBBQ0NFTlQgWklOT1I7TW47MjMwO09OOzs7OztOOzs7OzsKKzA1QUY7SEVCUkVXIE1BUksgTUFTT1JBIENJUkNMRTtNbjsyMzA7T047Ozs7O047Ozs7OworMDVCMDtIRUJSRVcgUE9JTlQgU0hFVkE7TW47MTA7T047Ozs7O047Ozs7OworMDVCMTtIRUJSRVcgUE9JTlQgSEFUQUYgU0VHT0w7TW47MTE7T047Ozs7O047Ozs7OworMDVCMjtIRUJSRVcgUE9JTlQgSEFUQUYgUEFUQUg7TW47MTI7T047Ozs7O047Ozs7OworMDVCMztIRUJSRVcgUE9JTlQgSEFUQUYgUUFNQVRTO01uOzEzO09OOzs7OztOOzs7OzsKKzA1QjQ7SEVCUkVXIFBPSU5UIEhJUklRO01uOzE0O09OOzs7OztOOzs7OzsKKzA1QjU7SEVCUkVXIFBPSU5UIFRTRVJFO01uOzE1O09OOzs7OztOOzs7OzsKKzA1QjY7SEVCUkVXIFBPSU5UIFNFR09MO01uOzE2O09OOzs7OztOOzs7OzsKKzA1Qjc7SEVCUkVXIFBPSU5UIFBBVEFIO01uOzE3O09OOzs7OztOOzs7OzsKKzA1Qjg7SEVCUkVXIFBPSU5UIFFBTUFUUztNbjsxODtPTjs7Ozs7Tjs7Ozs7CiswNUI5O0hFQlJFVyBQT0lOVCBIT0xBTTtNbjsxOTtPTjs7Ozs7Tjs7Ozs7CiswNUJCO0hFQlJFVyBQT0lOVCBRVUJVVFM7TW47MjA7T047Ozs7O047Ozs7OworMDVCQztIRUJSRVcgUE9JTlQgREFHRVNIIE9SIE1BUElRO01uOzIxO09OOzs7OztOO0hFQlJFVyBQT0lOVCBEQUdFU0g7Ozs7CiswNUJEO0hFQlJFVyBQT0lOVCBNRVRFRztNbjsyMjtPTjs7Ozs7Tjs7Ozs7CiswNUJFO0hFQlJFVyBQVU5DVFVBVElPTiBNQVFBRjtQbzswO1I7Ozs7O047Ozs7OworMDVCRjtIRUJSRVcgUE9JTlQgUkFGRTtNbjsyMztPTjs7Ozs7Tjs7Ozs7CiswNUMwO0hFQlJFVyBQVU5DVFVBVElPTiBQQVNFUTtQbzswO1I7Ozs7O047SEVCUkVXIFBPSU5UIFBBU0VROzs7OworMDVDMTtIRUJSRVcgUE9JTlQgU0hJTiBET1Q7TW47MjQ7T047Ozs7O047Ozs7OworMDVDMjtIRUJSRVcgUE9JTlQgU0lOIERPVDtNbjsyNTtPTjs7Ozs7Tjs7Ozs7CiswNUMzO0hFQlJFVyBQVU5DVFVBVElPTiBTT0YgUEFTVVE7UG87MDtSOzs7OztOOzs7OzsKKzA1QzQ7SEVCUkVXIE1BUksgVVBQRVIgRE9UO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNUQwO0hFQlJFVyBMRVRURVIgQUxFRjtMbzswO1I7Ozs7O047Ozs7OworMDVEMTtIRUJSRVcgTEVUVEVSIEJFVDtMbzswO1I7Ozs7O047Ozs7OworMDVEMjtIRUJSRVcgTEVUVEVSIEdJTUVMO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQzO0hFQlJFVyBMRVRURVIgREFMRVQ7TG87MDtSOzs7OztOOzs7OzsKKzA1RDQ7SEVCUkVXIExFVFRFUiBIRTtMbzswO1I7Ozs7O047Ozs7OworMDVENTtIRUJSRVcgTEVUVEVSIFZBVjtMbzswO1I7Ozs7O047Ozs7OworMDVENjtIRUJSRVcgTEVUVEVSIFpBWUlOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQ3O0hFQlJFVyBMRVRURVIgSEVUO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQ4O0hFQlJFVyBMRVRURVIgVEVUO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQ5O0hFQlJFVyBMRVRURVIgWU9EO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNURBO0hFQlJFVyBMRVRURVIgRklOQUwgS0FGO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNURCO0hFQlJFVyBMRVRURVIgS0FGO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNURDO0hFQlJFVyBMRVRURVIgTEFNRUQ7TG87MDtSOzs7OztOOzs7OzsKKzA1REQ7SEVCUkVXIExFVFRFUiBGSU5BTCBNRU07TG87MDtSOzs7OztOOzs7OzsKKzA1REU7SEVCUkVXIExFVFRFUiBNRU07TG87MDtSOzs7OztOOzs7OzsKKzA1REY7SEVCUkVXIExFVFRFUiBGSU5BTCBOVU47TG87MDtSOzs7OztOOzs7OzsKKzA1RTA7SEVCUkVXIExFVFRFUiBOVU47TG87MDtSOzs7OztOOzs7OzsKKzA1RTE7SEVCUkVXIExFVFRFUiBTQU1FS0g7TG87MDtSOzs7OztOOzs7OzsKKzA1RTI7SEVCUkVXIExFVFRFUiBBWUlOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUUzO0hFQlJFVyBMRVRURVIgRklOQUwgUEU7TG87MDtSOzs7OztOOzs7OzsKKzA1RTQ7SEVCUkVXIExFVFRFUiBQRTtMbzswO1I7Ozs7O047Ozs7OworMDVFNTtIRUJSRVcgTEVUVEVSIEZJTkFMIFRTQURJO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUU2O0hFQlJFVyBMRVRURVIgVFNBREk7TG87MDtSOzs7OztOOzs7OzsKKzA1RTc7SEVCUkVXIExFVFRFUiBRT0Y7TG87MDtSOzs7OztOOzs7OzsKKzA1RTg7SEVCUkVXIExFVFRFUiBSRVNIO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUU5O0hFQlJFVyBMRVRURVIgU0hJTjtMbzswO1I7Ozs7O047Ozs7OworMDVFQTtIRUJSRVcgTEVUVEVSIFRBVjtMbzswO1I7Ozs7O047Ozs7OworMDVGMDtIRUJSRVcgTElHQVRVUkUgWUlERElTSCBET1VCTEUgVkFWO0xvOzA7Ujs7Ozs7TjtIRUJSRVcgTEVUVEVSIERPVUJMRSBWQVY7Ozs7CiswNUYxO0hFQlJFVyBMSUdBVFVSRSBZSURESVNIIFZBViBZT0Q7TG87MDtSOzs7OztOO0hFQlJFVyBMRVRURVIgVkFWIFlPRDs7OzsKKzA1RjI7SEVCUkVXIExJR0FUVVJFIFlJRERJU0ggRE9VQkxFIFlPRDtMbzswO1I7Ozs7O047SEVCUkVXIExFVFRFUiBET1VCTEUgWU9EOzs7OworMDVGMztIRUJSRVcgUFVOQ1RVQVRJT04gR0VSRVNIO1BvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUY0O0hFQlJFVyBQVU5DVFVBVElPTiBHRVJTSEFZSU07UG87MDtSOzs7OztOOzs7OzsKKzA2MEM7QVJBQklDIENPTU1BO1BvOzA7Q1M7Ozs7O047Ozs7OworMDYxQjtBUkFCSUMgU0VNSUNPTE9OO1BvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjFGO0FSQUJJQyBRVUVTVElPTiBNQVJLO1BvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjIxO0FSQUJJQyBMRVRURVIgSEFNWkE7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIOzs7OworMDYyMjtBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBNQUREQSBBQk9WRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBNQUREQUggT04gQUxFRjs7OzsKKzA2MjM7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQUJPVkU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIIE9OIEFMRUY7Ozs7CiswNjI0O0FSQUJJQyBMRVRURVIgV0FXIFdJVEggSEFNWkEgQUJPVkU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIIE9OIFdBVzs7OzsKKzA2MjU7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQkVMT1c7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIIFVOREVSIEFMRUY7Ozs7CiswNjI2O0FSQUJJQyBMRVRURVIgWUVIIFdJVEggSEFNWkEgQUJPVkU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIIE9OIFlBOzs7OworMDYyNztBUkFCSUMgTEVUVEVSIEFMRUY7TG87MDtSOzs7OztOOzs7OzsKKzA2Mjg7QVJBQklDIExFVFRFUiBCRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgQkFBOzs7OworMDYyOTtBUkFCSUMgTEVUVEVSIFRFSCBNQVJCVVRBO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFRBQSBNQVJCVVRBSDs7OzsKKzA2MkE7QVJBQklDIExFVFRFUiBURUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBOzs7OworMDYyQjtBUkFCSUMgTEVUVEVSIFRIRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgVEhBQTs7OzsKKzA2MkM7QVJBQklDIExFVFRFUiBKRUVNO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjJEO0FSQUJJQyBMRVRURVIgSEFIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBQTs7OzsKKzA2MkU7QVJBQklDIExFVFRFUiBLSEFIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEtIQUE7Ozs7CiswNjJGO0FSQUJJQyBMRVRURVIgREFMO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjMwO0FSQUJJQyBMRVRURVIgVEhBTDtMbzswO1I7Ozs7O047Ozs7OworMDYzMTtBUkFCSUMgTEVUVEVSIFJFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBSQTs7OzsKKzA2MzI7QVJBQklDIExFVFRFUiBaQUlOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjMzO0FSQUJJQyBMRVRURVIgU0VFTjtMbzswO1I7Ozs7O047Ozs7OworMDYzNDtBUkFCSUMgTEVUVEVSIFNIRUVOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjM1O0FSQUJJQyBMRVRURVIgU0FEO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjM2O0FSQUJJQyBMRVRURVIgREFEO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjM3O0FSQUJJQyBMRVRURVIgVEFIO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjM4O0FSQUJJQyBMRVRURVIgWkFIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIERIQUg7Ozs7CiswNjM5O0FSQUJJQyBMRVRURVIgQUlOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjNBO0FSQUJJQyBMRVRURVIgR0hBSU47TG87MDtSOzs7OztOOzs7OzsKKzA2NDA7QVJBQklDIFRBVFdFRUw7TG07MDtSOzs7OztOOzs7OzsKKzA2NDE7QVJBQklDIExFVFRFUiBGRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgRkE7Ozs7CiswNjQyO0FSQUJJQyBMRVRURVIgUUFGO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjQzO0FSQUJJQyBMRVRURVIgS0FGO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIENBRjs7OzsKKzA2NDQ7QVJBQklDIExFVFRFUiBMQU07TG87MDtSOzs7OztOOzs7OzsKKzA2NDU7QVJBQklDIExFVFRFUiBNRUVNO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjQ2O0FSQUJJQyBMRVRURVIgTk9PTjtMbzswO1I7Ozs7O047Ozs7OworMDY0NztBUkFCSUMgTEVUVEVSIEhFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQTs7OzsKKzA2NDg7QVJBQklDIExFVFRFUiBXQVc7TG87MDtSOzs7OztOOzs7OzsKKzA2NDk7QVJBQklDIExFVFRFUiBBTEVGIE1BS1NVUkE7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgQUxFRiBNQVFTVVJBSDs7OzsKKzA2NEE7QVJBQklDIExFVFRFUiBZRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgWUE7Ozs7CiswNjRCO0FSQUJJQyBGQVRIQVRBTjtNbjsyNztPTjs7Ozs7Tjs7Ozs7CiswNjRDO0FSQUJJQyBEQU1NQVRBTjtNbjsyODtPTjs7Ozs7Tjs7Ozs7CiswNjREO0FSQUJJQyBLQVNSQVRBTjtNbjsyOTtPTjs7Ozs7Tjs7Ozs7CiswNjRFO0FSQUJJQyBGQVRIQTtNbjszMDtPTjs7Ozs7TjtBUkFCSUMgRkFUSEFIOzs7OworMDY0RjtBUkFCSUMgREFNTUE7TW47MzE7T047Ozs7O047QVJBQklDIERBTU1BSDs7OzsKKzA2NTA7QVJBQklDIEtBU1JBO01uOzMyO09OOzs7OztOO0FSQUJJQyBLQVNSQUg7Ozs7CiswNjUxO0FSQUJJQyBTSEFEREE7TW47MzM7T047Ozs7O047QVJBQklDIFNIQUREQUg7Ozs7CiswNjUyO0FSQUJJQyBTVUtVTjtNbjszNDtPTjs7Ozs7Tjs7Ozs7CiswNjYwO0FSQUJJQy1JTkRJQyBESUdJVCBaRVJPO05kOzA7QU47OzA7MDswO047Ozs7OworMDY2MTtBUkFCSUMtSU5ESUMgRElHSVQgT05FO05kOzA7QU47OzE7MTsxO047Ozs7OworMDY2MjtBUkFCSUMtSU5ESUMgRElHSVQgVFdPO05kOzA7QU47OzI7MjsyO047Ozs7OworMDY2MztBUkFCSUMtSU5ESUMgRElHSVQgVEhSRUU7TmQ7MDtBTjs7MzszOzM7Tjs7Ozs7CiswNjY0O0FSQUJJQy1JTkRJQyBESUdJVCBGT1VSO05kOzA7QU47OzQ7NDs0O047Ozs7OworMDY2NTtBUkFCSUMtSU5ESUMgRElHSVQgRklWRTtOZDswO0FOOzs1OzU7NTtOOzs7OzsKKzA2NjY7QVJBQklDLUlORElDIERJR0lUIFNJWDtOZDswO0FOOzs2OzY7NjtOOzs7OzsKKzA2Njc7QVJBQklDLUlORElDIERJR0lUIFNFVkVOO05kOzA7QU47Ozc7Nzs3O047Ozs7OworMDY2ODtBUkFCSUMtSU5ESUMgRElHSVQgRUlHSFQ7TmQ7MDtBTjs7ODs4Ozg7Tjs7Ozs7CiswNjY5O0FSQUJJQy1JTkRJQyBESUdJVCBOSU5FO05kOzA7QU47Ozk7OTs5O047Ozs7OworMDY2QTtBUkFCSUMgUEVSQ0VOVCBTSUdOO1BvOzA7RVQ7Ozs7O047Ozs7OworMDY2QjtBUkFCSUMgREVDSU1BTCBTRVBBUkFUT1I7UG87MDtBTjs7Ozs7Tjs7Ozs7CiswNjZDO0FSQUJJQyBUSE9VU0FORFMgU0VQQVJBVE9SO1BvOzA7QU47Ozs7O047Ozs7OworMDY2RDtBUkFCSUMgRklWRSBQT0lOVEVEIFNUQVI7UG87MDtSOzs7OztOOzs7OzsKKzA2NzA7QVJBQklDIExFVFRFUiBTVVBFUlNDUklQVCBBTEVGO01uOzM1O09OOzs7OztOO0FSQUJJQyBBTEVGIEFCT1ZFOzs7OworMDY3MTtBUkFCSUMgTEVUVEVSIEFMRUYgV0FTTEE7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFUIFdBU0wgT04gQUxFRjs7OzsKKzA2NzI7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggV0FWWSBIQU1aQSBBQk9WRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBXQVZZIEhBTVpBSCBPTiBBTEVGOzs7OworMDY3MztBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBXQVZZIEhBTVpBIEJFTE9XO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFdBVlkgSEFNWkFIIFVOREVSIEFMRUY7Ozs7CiswNjc0O0FSQUJJQyBMRVRURVIgSElHSCBIQU1aQTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBISUdIIEhBTVpBSDs7OzsKKzA2NzU7QVJBQklDIExFVFRFUiBISUdIIEhBTVpBIEFMRUY7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSElHSCBIQU1aQUggQUxFRjs7OzsKKzA2NzY7QVJBQklDIExFVFRFUiBISUdIIEhBTVpBIFdBVztMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBISUdIIEhBTVpBSCBXQVc7Ozs7CiswNjc3O0FSQUJJQyBMRVRURVIgVSBXSVRIIEhBTVpBIEFCT1ZFO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhJR0ggSEFNWkFIIFdBVyBXSVRIIERBTU1BSDs7OzsKKzA2Nzg7QVJBQklDIExFVFRFUiBISUdIIEhBTVpBIFlFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBISUdIIEhBTVpBSCBZQTs7OzsKKzA2Nzk7QVJBQklDIExFVFRFUiBUVEVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFRBQSBXSVRIIFNNQUxMIFRBSDs7OzsKKzA2N0E7QVJBQklDIExFVFRFUiBUVEVIRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIFdJVEggVFdPIERPVFMgVkVSVElDQUwgQUJPVkU7Ozs7CiswNjdCO0FSQUJJQyBMRVRURVIgQkVFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBCQUEgV0lUSCBUV08gRE9UUyBWRVJUSUNBTCBCRUxPVzs7OzsKKzA2N0M7QVJBQklDIExFVFRFUiBURUggV0lUSCBSSU5HO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFRBQSBXSVRIIFJJTkc7Ozs7CiswNjdEO0FSQUJJQyBMRVRURVIgVEVIIFdJVEggVEhSRUUgRE9UUyBBQk9WRSBET1dOV0FSRFM7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIFdJVEggVEhSRUUgRE9UUyBBQk9WRSBET1dOV0FSRDs7OzsKKzA2N0U7QVJBQklDIExFVFRFUiBQRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIFdJVEggVEhSRUUgRE9UUyBCRUxPVzs7OzsKKzA2N0Y7QVJBQklDIExFVFRFUiBURUhFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBUQUEgV0lUSCBGT1VSIERPVFMgQUJPVkU7Ozs7CiswNjgwO0FSQUJJQyBMRVRURVIgQkVIRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgQkFBIFdJVEggRk9VUiBET1RTIEJFTE9XOzs7OworMDY4MTtBUkFCSUMgTEVUVEVSIEhBSCBXSVRIIEhBTVpBIEFCT1ZFO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBTVpBSCBPTiBIQUE7Ozs7CiswNjgyO0FSQUJJQyBMRVRURVIgSEFIIFdJVEggVFdPIERPVFMgVkVSVElDQUwgQUJPVkU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFBIFdJVEggVFdPIERPVFMgVkVSVElDQUwgQUJPVkU7Ozs7CiswNjgzO0FSQUJJQyBMRVRURVIgTllFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQUEgV0lUSCBNSURETEUgVFdPIERPVFM7Ozs7CiswNjg0O0FSQUJJQyBMRVRURVIgRFlFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQUEgV0lUSCBNSURETEUgVFdPIERPVFMgVkVSVElDQUw7Ozs7CiswNjg1O0FSQUJJQyBMRVRURVIgSEFIIFdJVEggVEhSRUUgRE9UUyBBQk9WRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQUEgV0lUSCBUSFJFRSBET1RTIEFCT1ZFOzs7OworMDY4NjtBUkFCSUMgTEVUVEVSIFRDSEVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBQSBXSVRIIE1JRERMRSBUSFJFRSBET1RTIERPV05XQVJEOzs7OworMDY4NztBUkFCSUMgTEVUVEVSIFRDSEVIRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFBIFdJVEggTUlERExFIEZPVVIgRE9UUzs7OzsKKzA2ODg7QVJBQklDIExFVFRFUiBEREFMO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIERBTCBXSVRIIFNNQUxMIFRBSDs7OzsKKzA2ODk7QVJBQklDIExFVFRFUiBEQUwgV0lUSCBSSU5HO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjhBO0FSQUJJQyBMRVRURVIgREFMIFdJVEggRE9UIEJFTE9XO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjhCO0FSQUJJQyBMRVRURVIgREFMIFdJVEggRE9UIEJFTE9XIEFORCBTTUFMTCBUQUg7TG87MDtSOzs7OztOOzs7OzsKKzA2OEM7QVJBQklDIExFVFRFUiBEQUhBTDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBEQUwgV0lUSCBUV08gRE9UUyBBQk9WRTs7OzsKKzA2OEQ7QVJBQklDIExFVFRFUiBEREFIQUw7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgREFMIFdJVEggVFdPIERPVFMgQkVMT1c7Ozs7CiswNjhFO0FSQUJJQyBMRVRURVIgRFVMO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIERBTCBXSVRIIFRIUkVFIERPVFMgQUJPVkU7Ozs7CiswNjhGO0FSQUJJQyBMRVRURVIgREFMIFdJVEggVEhSRUUgRE9UUyBBQk9WRSBET1dOV0FSRFM7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgREFMIFdJVEggVEhSRUUgRE9UUyBBQk9WRSBET1dOV0FSRDs7OzsKKzA2OTA7QVJBQklDIExFVFRFUiBEQUwgV0lUSCBGT1VSIERPVFMgQUJPVkU7TG87MDtSOzs7OztOOzs7OzsKKzA2OTE7QVJBQklDIExFVFRFUiBSUkVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBIFdJVEggU01BTEwgVEFIOzs7OworMDY5MjtBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIFNNQUxMIFY7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBTTUFMTCBWOzs7OworMDY5MztBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIFJJTkc7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBSSU5HOzs7OworMDY5NDtBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIERPVCBCRUxPVztMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBSQSBXSVRIIERPVCBCRUxPVzs7OzsKKzA2OTU7QVJBQklDIExFVFRFUiBSRUggV0lUSCBTTUFMTCBWIEJFTE9XO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBIFdJVEggU01BTEwgViBCRUxPVzs7OzsKKzA2OTY7QVJBQklDIExFVFRFUiBSRUggV0lUSCBET1QgQkVMT1cgQU5EIERPVCBBQk9WRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBSQSBXSVRIIERPVCBCRUxPVyBBTkQgRE9UIEFCT1ZFOzs7OworMDY5NztBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIFRXTyBET1RTIEFCT1ZFO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBIFdJVEggVFdPIERPVFMgQUJPVkU7Ozs7CiswNjk4O0FSQUJJQyBMRVRURVIgSkVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBIFdJVEggVEhSRUUgRE9UUyBBQk9WRTs7OzsKKzA2OTk7QVJBQklDIExFVFRFUiBSRUggV0lUSCBGT1VSIERPVFMgQUJPVkU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBGT1VSIERPVFMgQUJPVkU7Ozs7CiswNjlBO0FSQUJJQyBMRVRURVIgU0VFTiBXSVRIIERPVCBCRUxPVyBBTkQgRE9UIEFCT1ZFO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjlCO0FSQUJJQyBMRVRURVIgU0VFTiBXSVRIIFRIUkVFIERPVFMgQkVMT1c7TG87MDtSOzs7OztOOzs7OzsKKzA2OUM7QVJBQklDIExFVFRFUiBTRUVOIFdJVEggVEhSRUUgRE9UUyBCRUxPVyBBTkQgVEhSRUUgRE9UUyBBQk9WRTtMbzswO1I7Ozs7O047Ozs7OworMDY5RDtBUkFCSUMgTEVUVEVSIFNBRCBXSVRIIFRXTyBET1RTIEJFTE9XO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjlFO0FSQUJJQyBMRVRURVIgU0FEIFdJVEggVEhSRUUgRE9UUyBBQk9WRTtMbzswO1I7Ozs7O047Ozs7OworMDY5RjtBUkFCSUMgTEVUVEVSIFRBSCBXSVRIIFRIUkVFIERPVFMgQUJPVkU7TG87MDtSOzs7OztOOzs7OzsKKzA2QTA7QVJBQklDIExFVFRFUiBBSU4gV0lUSCBUSFJFRSBET1RTIEFCT1ZFO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNkExO0FSQUJJQyBMRVRURVIgRE9UTEVTUyBGRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgRE9UTEVTUyBGQTs7OzsKKzA2QTI7QVJBQklDIExFVFRFUiBGRUggV0lUSCBET1QgTU9WRUQgQkVMT1c7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgRkEgV0lUSCBET1QgTU9WRUQgQkVMT1c7Ozs7CiswNkEzO0FSQUJJQyBMRVRURVIgRkVIIFdJVEggRE9UIEJFTE9XO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEZBIFdJVEggRE9UIEJFTE9XOzs7OworMDZBNDtBUkFCSUMgTEVUVEVSIFZFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBGQSBXSVRIIFRIUkVFIERPVFMgQUJPVkU7Ozs7CiswNkE1O0FSQUJJQyBMRVRURVIgRkVIIFdJVEggVEhSRUUgRE9UUyBCRUxPVztMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBGQSBXSVRIIFRIUkVFIERPVFMgQkVMT1c7Ozs7CiswNkE2O0FSQUJJQyBMRVRURVIgUEVIRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgRkEgV0lUSCBGT1VSIERPVFMgQUJPVkU7Ozs7CiswNkE3O0FSQUJJQyBMRVRURVIgUUFGIFdJVEggRE9UIEFCT1ZFO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNkE4O0FSQUJJQyBMRVRURVIgUUFGIFdJVEggVEhSRUUgRE9UUyBBQk9WRTtMbzswO1I7Ozs7O047Ozs7OworMDZBOTtBUkFCSUMgTEVUVEVSIEtFSEVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIE9QRU4gQ0FGOzs7OworMDZBQTtBUkFCSUMgTEVUVEVSIFNXQVNIIEtBRjtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBTV0FTSCBDQUY7Ozs7CiswNkFCO0FSQUJJQyBMRVRURVIgS0FGIFdJVEggUklORztMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBDQUYgV0lUSCBSSU5HOzs7OworMDZBQztBUkFCSUMgTEVUVEVSIEtBRiBXSVRIIERPVCBBQk9WRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBDQUYgV0lUSCBET1QgQUJPVkU7Ozs7CiswNkFEO0FSQUJJQyBMRVRURVIgTkc7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgQ0FGIFdJVEggVEhSRUUgRE9UUyBBQk9WRTs7OzsKKzA2QUU7QVJBQklDIExFVFRFUiBLQUYgV0lUSCBUSFJFRSBET1RTIEJFTE9XO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIENBRiBXSVRIIFRIUkVFIERPVFMgQkVMT1c7Ozs7CiswNkFGO0FSQUJJQyBMRVRURVIgR0FGO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNkIwO0FSQUJJQyBMRVRURVIgR0FGIFdJVEggUklORztMbzswO1I7Ozs7O047Ozs7OworMDZCMTtBUkFCSUMgTEVUVEVSIE5HT0VIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEdBRiBXSVRIIFRXTyBET1RTIEFCT1ZFOzs7OworMDZCMjtBUkFCSUMgTEVUVEVSIEdBRiBXSVRIIFRXTyBET1RTIEJFTE9XO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNkIzO0FSQUJJQyBMRVRURVIgR1VFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBHQUYgV0lUSCBUV08gRE9UUyBWRVJUSUNBTCBCRUxPVzs7OzsKKzA2QjQ7QVJBQklDIExFVFRFUiBHQUYgV0lUSCBUSFJFRSBET1RTIEFCT1ZFO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNkI1O0FSQUJJQyBMRVRURVIgTEFNIFdJVEggU01BTEwgVjtMbzswO1I7Ozs7O047Ozs7OworMDZCNjtBUkFCSUMgTEVUVEVSIExBTSBXSVRIIERPVCBBQk9WRTtMbzswO1I7Ozs7O047Ozs7OworMDZCNztBUkFCSUMgTEVUVEVSIExBTSBXSVRIIFRIUkVFIERPVFMgQUJPVkU7TG87MDtSOzs7OztOOzs7OzsKKzA2QkE7QVJBQklDIExFVFRFUiBOT09OIEdIVU5OQTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBET1RMRVNTIE5PT047Ozs7CiswNkJCO0FSQUJJQyBMRVRURVIgUk5PT047TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgRE9UTEVTUyBOT09OIFdJVEggU01BTEwgVEFIOzs7OworMDZCQztBUkFCSUMgTEVUVEVSIE5PT04gV0lUSCBSSU5HO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNkJEO0FSQUJJQyBMRVRURVIgTk9PTiBXSVRIIFRIUkVFIERPVFMgQUJPVkU7TG87MDtSOzs7OztOOzs7OzsKKzA2QkU7QVJBQklDIExFVFRFUiBIRUggRE9BQ0hBU0hNRUU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgS05PVFRFRCBIQTs7OzsKKzA2QzA7QVJBQklDIExFVFRFUiBIRUggV0lUSCBZRUggQUJPVkU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIIE9OIEhBOzs7OworMDZDMTtBUkFCSUMgTEVUVEVSIEhFSCBHT0FMO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBIEdPQUw7Ozs7CiswNkMyO0FSQUJJQyBMRVRURVIgSEVIIEdPQUwgV0lUSCBIQU1aQSBBQk9WRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQU1aQUggT04gSEEgR09BTDs7OzsKKzA2QzM7QVJBQklDIExFVFRFUiBURUggTUFSQlVUQSBHT0FMO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFRBQSBNQVJCVVRBSCBHT0FMOzs7OworMDZDNDtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIFJJTkc7TG87MDtSOzs7OztOOzs7OzsKKzA2QzU7QVJBQklDIExFVFRFUiBLSVJHSElaIE9FO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIEJBUjs7OzsKKzA2QzY7QVJBQklDIExFVFRFUiBPRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBXQVcgV0lUSCBTTUFMTCBWOzs7OworMDZDNztBUkFCSUMgTEVUVEVSIFU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgV0FXIFdJVEggREFNTUFIOzs7OworMDZDODtBUkFCSUMgTEVUVEVSIFlVO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIEFMRUYgQUJPVkU7Ozs7CiswNkM5O0FSQUJJQyBMRVRURVIgS0lSR0hJWiBZVTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBXQVcgV0lUSCBJTlZFUlRFRCBTTUFMTCBWOzs7OworMDZDQTtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIFRXTyBET1RTIEFCT1ZFO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNkNCO0FSQUJJQyBMRVRURVIgVkU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgV0FXIFdJVEggVEhSRUUgRE9UUyBBQk9WRTs7OzsKKzA2Q0M7QVJBQklDIExFVFRFUiBGQVJTSSBZRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgRE9UTEVTUyBZQTs7OzsKKzA2Q0Q7QVJBQklDIExFVFRFUiBZRUggV0lUSCBUQUlMO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFlBIFdJVEggVEFJTDs7OzsKKzA2Q0U7QVJBQklDIExFVFRFUiBZRUggV0lUSCBTTUFMTCBWO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFlBIFdJVEggU01BTEwgVjs7OzsKKzA2RDA7QVJBQklDIExFVFRFUiBFO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFlBIFdJVEggVFdPIERPVFMgVkVSVElDQUwgQkVMT1c7Ozs7CiswNkQxO0FSQUJJQyBMRVRURVIgWUVIIFdJVEggVEhSRUUgRE9UUyBCRUxPVztMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBZQSBXSVRIIFRIUkVFIERPVFMgQkVMT1c7Ozs7CiswNkQyO0FSQUJJQyBMRVRURVIgWUVIIEJBUlJFRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBZQSBCQVJSRUU7Ozs7CiswNkQzO0FSQUJJQyBMRVRURVIgWUVIIEJBUlJFRSBXSVRIIEhBTVpBIEFCT1ZFO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBTVpBSCBPTiBZQSBCQVJSRUU7Ozs7CiswNkQ0O0FSQUJJQyBGVUxMIFNUT1A7UG87MDtSOzs7OztOO0FSQUJJQyBQRVJJT0Q7Ozs7CiswNkQ1O0FSQUJJQyBMRVRURVIgQUU7TG87MDtSOzs7OztOOzs7OzsKKzA2RDY7QVJBQklDIFNNQUxMIEhJR0ggTElHQVRVUkUgU0FEIFdJVEggTEFNIFdJVEggQUxFRiBNQUtTVVJBO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNkQ3O0FSQUJJQyBTTUFMTCBISUdIIExJR0FUVVJFIFFBRiBXSVRIIExBTSBXSVRIIEFMRUYgTUFLU1VSQTtNbjsyMzA7T047Ozs7O047Ozs7OworMDZEODtBUkFCSUMgU01BTEwgSElHSCBNRUVNIElOSVRJQUwgRk9STTtNbjsyMzA7T047Ozs7O047Ozs7OworMDZEOTtBUkFCSUMgU01BTEwgSElHSCBMQU0gQUxFRjtNbjsyMzA7T047Ozs7O047Ozs7OworMDZEQTtBUkFCSUMgU01BTEwgSElHSCBKRUVNO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNkRCO0FSQUJJQyBTTUFMTCBISUdIIFRIUkVFIERPVFM7TW47MjMwO09OOzs7OztOOzs7OzsKKzA2REM7QVJBQklDIFNNQUxMIEhJR0ggU0VFTjtNbjsyMzA7T047Ozs7O047Ozs7OworMDZERDtBUkFCSUMgRU5EIE9GIEFZQUg7TWU7MDtPTjs7Ozs7Tjs7Ozs7CiswNkRFO0FSQUJJQyBTVEFSVCBPRiBSVUIgRUwgSElaQjtNZTswO09OOzs7OztOOzs7OzsKKzA2REY7QVJBQklDIFNNQUxMIEhJR0ggUk9VTkRFRCBaRVJPO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNkUwO0FSQUJJQyBTTUFMTCBISUdIIFVQUklHSFQgUkVDVEFOR1VMQVIgWkVSTztNbjsyMzA7T047Ozs7O047Ozs7OworMDZFMTtBUkFCSUMgU01BTEwgSElHSCBET1RMRVNTIEhFQUQgT0YgS0hBSDtNbjsyMzA7T047Ozs7O047Ozs7OworMDZFMjtBUkFCSUMgU01BTEwgSElHSCBNRUVNIElTT0xBVEVEIEZPUk07TW47MjMwO09OOzs7OztOOzs7OzsKKzA2RTM7QVJBQklDIFNNQUxMIExPVyBTRUVOO01uOzIyMDtPTjs7Ozs7Tjs7Ozs7CiswNkU0O0FSQUJJQyBTTUFMTCBISUdIIE1BRERBO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNkU1O0FSQUJJQyBTTUFMTCBXQVc7TG07MDtSOzs7OztOOzs7OzsKKzA2RTY7QVJBQklDIFNNQUxMIFlFSDtMbTswO1I7Ozs7O047Ozs7OworMDZFNztBUkFCSUMgU01BTEwgSElHSCBZRUg7TW47MjMwO09OOzs7OztOOzs7OzsKKzA2RTg7QVJBQklDIFNNQUxMIEhJR0ggTk9PTjtNbjsyMzA7T047Ozs7O047Ozs7OworMDZFOTtBUkFCSUMgUExBQ0UgT0YgU0FKREFIO1NvOzA7T047Ozs7O047Ozs7OworMDZFQTtBUkFCSUMgRU1QVFkgQ0VOVFJFIExPVyBTVE9QO01uOzIyMDtPTjs7Ozs7Tjs7Ozs7CiswNkVCO0FSQUJJQyBFTVBUWSBDRU5UUkUgSElHSCBTVE9QO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNkVDO0FSQUJJQyBST1VOREVEIEhJR0ggU1RPUCBXSVRIIEZJTExFRCBDRU5UUkU7TW47MjMwO09OOzs7OztOOzs7OzsKKzA2RUQ7QVJBQklDIFNNQUxMIExPVyBNRUVNO01uOzIyMDtPTjs7Ozs7Tjs7Ozs7CiswNkYwO0VYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPO05kOzA7RU47OzA7MDswO047RUFTVEVSTiBBUkFCSUMtSU5ESUMgRElHSVQgWkVSTzs7OzsKKzA2RjE7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIE9ORTtOZDswO0VOOzsxOzE7MTtOO0VBU1RFUk4gQVJBQklDLUlORElDIERJR0lUIE9ORTs7OzsKKzA2RjI7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIFRXTztOZDswO0VOOzsyOzI7MjtOO0VBU1RFUk4gQVJBQklDLUlORElDIERJR0lUIFRXTzs7OzsKKzA2RjM7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIFRIUkVFO05kOzA7RU47OzM7MzszO047RUFTVEVSTiBBUkFCSUMtSU5ESUMgRElHSVQgVEhSRUU7Ozs7CiswNkY0O0VYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBGT1VSO05kOzA7RU47OzQ7NDs0O047RUFTVEVSTiBBUkFCSUMtSU5ESUMgRElHSVQgRk9VUjs7OzsKKzA2RjU7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIEZJVkU7TmQ7MDtFTjs7NTs1OzU7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBGSVZFOzs7OworMDZGNjtFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgU0lYO05kOzA7RU47OzY7Njs2O047RUFTVEVSTiBBUkFCSUMtSU5ESUMgRElHSVQgU0lYOzs7OworMDZGNztFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgU0VWRU47TmQ7MDtFTjs7Nzs3Ozc7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBTRVZFTjs7OzsKKzA2Rjg7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIEVJR0hUO05kOzA7RU47Ozg7ODs4O047RUFTVEVSTiBBUkFCSUMtSU5ESUMgRElHSVQgRUlHSFQ7Ozs7CiswNkY5O0VYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBOSU5FO05kOzA7RU47Ozk7OTs5O047RUFTVEVSTiBBUkFCSUMtSU5ESUMgRElHSVQgTklORTs7OzsKKzA5MDE7REVWQU5BR0FSSSBTSUdOIENBTkRSQUJJTkRVO01uOzM3O09OOzs7OztOOzs7OzsKKzA5MDI7REVWQU5BR0FSSSBTSUdOIEFOVVNWQVJBO01uOzM2O09OOzs7OztOOzs7OzsKKzA5MDM7REVWQU5BR0FSSSBTSUdOIFZJU0FSR0E7TWM7MDtMOzs7OztOOzs7OzsKKzA5MDU7REVWQU5BR0FSSSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMDkwNjtERVZBTkFHQVJJIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMDkwNztERVZBTkFHQVJJIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTA4O0RFVkFOQUdBUkkgTEVUVEVSIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTA5O0RFVkFOQUdBUkkgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzA5MEE7REVWQU5BR0FSSSBMRVRURVIgVVU7TG87MDtMOzs7OztOOzs7OzsKKzA5MEI7REVWQU5BR0FSSSBMRVRURVIgVk9DQUxJQyBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTBDO0RFVkFOQUdBUkkgTEVUVEVSIFZPQ0FMSUMgTDtMbzswO0w7Ozs7O047Ozs7OworMDkwRDtERVZBTkFHQVJJIExFVFRFUiBDQU5EUkEgRTtMbzswO0w7Ozs7O047Ozs7OworMDkwRTtERVZBTkFHQVJJIExFVFRFUiBTSE9SVCBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTBGO0RFVkFOQUdBUkkgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzA5MTA7REVWQU5BR0FSSSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzA5MTE7REVWQU5BR0FSSSBMRVRURVIgQ0FORFJBIE87TG87MDtMOzs7OztOOzs7OzsKKzA5MTI7REVWQU5BR0FSSSBMRVRURVIgU0hPUlQgTztMbzswO0w7Ozs7O047Ozs7OworMDkxMztERVZBTkFHQVJJIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTE0O0RFVkFOQUdBUkkgTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTE1O0RFVkFOQUdBUkkgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTE2O0RFVkFOQUdBUkkgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMDkxNztERVZBTkFHQVJJIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMDkxODtERVZBTkFHQVJJIExFVFRFUiBHSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MTk7REVWQU5BR0FSSSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTFBO0RFVkFOQUdBUkkgTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTFCO0RFVkFOQUdBUkkgTEVUVEVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMDkxQztERVZBTkFHQVJJIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMDkxRDtERVZBTkFHQVJJIExFVFRFUiBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MUU7REVWQU5BR0FSSSBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTFGO0RFVkFOQUdBUkkgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMDkyMDtERVZBTkFHQVJJIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTIxO0RFVkFOQUdBUkkgTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMDkyMjtERVZBTkFHQVJJIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTIzO0RFVkFOQUdBUkkgTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMDkyNDtERVZBTkFHQVJJIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMDkyNTtERVZBTkFHQVJJIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MjY7REVWQU5BR0FSSSBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzA5Mjc7REVWQU5BR0FSSSBMRVRURVIgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTI4O0RFVkFOQUdBUkkgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTI5O0RFVkFOQUdBUkkgTEVUVEVSIE5OTkE7TG87MDtMOzA5MjggMDkzQzs7OztOOzs7OzsKKzA5MkE7REVWQU5BR0FSSSBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MkI7REVWQU5BR0FSSSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTJDO0RFVkFOQUdBUkkgTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTJEO0RFVkFOQUdBUkkgTEVUVEVSIEJIQTtMbzswO0w7Ozs7O047Ozs7OworMDkyRTtERVZBTkFHQVJJIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMDkyRjtERVZBTkFHQVJJIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMDkzMDtERVZBTkFHQVJJIExFVFRFUiBSQTtMbzswO0w7Ozs7O047Ozs7OworMDkzMTtERVZBTkFHQVJJIExFVFRFUiBSUkE7TG87MDtMOzA5MzAgMDkzQzs7OztOOzs7OzsKKzA5MzI7REVWQU5BR0FSSSBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MzM7REVWQU5BR0FSSSBMRVRURVIgTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTM0O0RFVkFOQUdBUkkgTEVUVEVSIExMTEE7TG87MDtMOzA5MzMgMDkzQzs7OztOOzs7OzsKKzA5MzU7REVWQU5BR0FSSSBMRVRURVIgVkE7TG87MDtMOzs7OztOOzs7OzsKKzA5MzY7REVWQU5BR0FSSSBMRVRURVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTM3O0RFVkFOQUdBUkkgTEVUVEVSIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMDkzODtERVZBTkFHQVJJIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMDkzOTtERVZBTkFHQVJJIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMDkzQztERVZBTkFHQVJJIFNJR04gTlVLVEE7TW47NztPTjs7Ozs7Tjs7Ozs7CiswOTNEO0RFVkFOQUdBUkkgU0lHTiBBVkFHUkFIQTtMbzswO0w7Ozs7O047Ozs7OworMDkzRTtERVZBTkFHQVJJIFZPV0VMIFNJR04gQUE7TWM7MDtMOzs7OztOOzs7OzsKKzA5M0Y7REVWQU5BR0FSSSBWT1dFTCBTSUdOIEk7TWM7MDtMOzs7OztOOzs7OzsKKzA5NDA7REVWQU5BR0FSSSBWT1dFTCBTSUdOIElJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOTQxO0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBVO01uOzM4O09OOzs7OztOOzs7OzsKKzA5NDI7REVWQU5BR0FSSSBWT1dFTCBTSUdOIFVVO01uOzM5O09OOzs7OztOOzs7OzsKKzA5NDM7REVWQU5BR0FSSSBWT1dFTCBTSUdOIFZPQ0FMSUMgUjtNbjs0MDtPTjs7Ozs7Tjs7Ozs7CiswOTQ0O0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBWT0NBTElDIFJSO01uOzQxO09OOzs7OztOOzs7OzsKKzA5NDU7REVWQU5BR0FSSSBWT1dFTCBTSUdOIENBTkRSQSBFO01uOzQyO09OOzs7OztOOzs7OzsKKzA5NDY7REVWQU5BR0FSSSBWT1dFTCBTSUdOIFNIT1JUIEU7TW47NDM7T047Ozs7O047Ozs7OworMDk0NztERVZBTkFHQVJJIFZPV0VMIFNJR04gRTtNbjs0NDtPTjs7Ozs7Tjs7Ozs7CiswOTQ4O0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBBSTtNbjs0NTtPTjs7Ozs7Tjs7Ozs7CiswOTQ5O0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBDQU5EUkEgTztNYzswO0w7Ozs7O047Ozs7OworMDk0QTtERVZBTkFHQVJJIFZPV0VMIFNJR04gU0hPUlQgTztNYzswO0w7Ozs7O047Ozs7OworMDk0QjtERVZBTkFHQVJJIFZPV0VMIFNJR04gTztNYzswO0w7Ozs7O047Ozs7OworMDk0QztERVZBTkFHQVJJIFZPV0VMIFNJR04gQVU7TWM7MDtMOzs7OztOOzs7OzsKKzA5NEQ7REVWQU5BR0FSSSBTSUdOIFZJUkFNQTtNbjs5O09OOzs7OztOOzs7OzsKKzA5NTA7REVWQU5BR0FSSSBPTTtTbzswO0w7Ozs7O047Ozs7OworMDk1MTtERVZBTkFHQVJJIFNUUkVTUyBTSUdOIFVEQVRUQTtNbjs0NjtPTjs7Ozs7Tjs7Ozs7CiswOTUyO0RFVkFOQUdBUkkgU1RSRVNTIFNJR04gQU5VREFUVEE7TW47NDc7T047Ozs7O047Ozs7OworMDk1MztERVZBTkFHQVJJIEdSQVZFIEFDQ0VOVDtNbjsyMzA7T047Ozs7O047Ozs7OworMDk1NDtERVZBTkFHQVJJIEFDVVRFIEFDQ0VOVDtNbjsyMzA7T047Ozs7O047Ozs7OworMDk1ODtERVZBTkFHQVJJIExFVFRFUiBRQTtMbzswO0w7MDkxNSAwOTNDOzs7O047Ozs7OworMDk1OTtERVZBTkFHQVJJIExFVFRFUiBLSEhBO0xvOzA7TDswOTE2IDA5M0M7Ozs7Tjs7Ozs7CiswOTVBO0RFVkFOQUdBUkkgTEVUVEVSIEdISEE7TG87MDtMOzA5MTcgMDkzQzs7OztOOzs7OzsKKzA5NUI7REVWQU5BR0FSSSBMRVRURVIgWkE7TG87MDtMOzA5MUMgMDkzQzs7OztOOzs7OzsKKzA5NUM7REVWQU5BR0FSSSBMRVRURVIgRERESEE7TG87MDtMOzA5MjEgMDkzQzs7OztOOzs7OzsKKzA5NUQ7REVWQU5BR0FSSSBMRVRURVIgUkhBO0xvOzA7TDswOTIyIDA5M0M7Ozs7Tjs7Ozs7CiswOTVFO0RFVkFOQUdBUkkgTEVUVEVSIEZBO0xvOzA7TDswOTJCIDA5M0M7Ozs7Tjs7Ozs7CiswOTVGO0RFVkFOQUdBUkkgTEVUVEVSIFlZQTtMbzswO0w7MDkyRiAwOTNDOzs7O047Ozs7OworMDk2MDtERVZBTkFHQVJJIExFVFRFUiBWT0NBTElDIFJSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTYxO0RFVkFOQUdBUkkgTEVUVEVSIFZPQ0FMSUMgTEw7TG87MDtMOzs7OztOOzs7OzsKKzA5NjI7REVWQU5BR0FSSSBWT1dFTCBTSUdOIFZPQ0FMSUMgTDtNbjs0ODtPTjs7Ozs7Tjs7Ozs7CiswOTYzO0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBWT0NBTElDIExMO01uOzQ5O09OOzs7OztOOzs7OzsKKzA5NjQ7REVWQU5BR0FSSSBEQU5EQTtQbzswO0w7Ozs7O047Ozs7OworMDk2NTtERVZBTkFHQVJJIERPVUJMRSBEQU5EQTtQbzswO0w7Ozs7O047Ozs7OworMDk2NjtERVZBTkFHQVJJIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzA5Njc7REVWQU5BR0FSSSBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzA5Njg7REVWQU5BR0FSSSBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzA5Njk7REVWQU5BR0FSSSBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMDk2QTtERVZBTkFHQVJJIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzA5NkI7REVWQU5BR0FSSSBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswOTZDO0RFVkFOQUdBUkkgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswOTZEO0RFVkFOQUdBUkkgRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzA5NkU7REVWQU5BR0FSSSBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMDk2RjtERVZBTkFHQVJJIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzA5NzA7REVWQU5BR0FSSSBBQkJSRVZJQVRJT04gU0lHTjtQbzswO0w7Ozs7O047Ozs7OworMDk4MTtCRU5HQUxJIFNJR04gQ0FORFJBQklORFU7TW47NTA7T047Ozs7O047Ozs7OworMDk4MjtCRU5HQUxJIFNJR04gQU5VU1ZBUkE7TWM7MDtMOzs7OztOOzs7OzsKKzA5ODM7QkVOR0FMSSBTSUdOIFZJU0FSR0E7TWM7MDtMOzs7OztOOzs7OzsKKzA5ODU7QkVOR0FMSSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMDk4NjtCRU5HQUxJIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMDk4NztCRU5HQUxJIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTg4O0JFTkdBTEkgTEVUVEVSIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTg5O0JFTkdBTEkgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzA5OEE7QkVOR0FMSSBMRVRURVIgVVU7TG87MDtMOzs7OztOOzs7OzsKKzA5OEI7QkVOR0FMSSBMRVRURVIgVk9DQUxJQyBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOThDO0JFTkdBTEkgTEVUVEVSIFZPQ0FMSUMgTDtMbzswO0w7Ozs7O047Ozs7OworMDk4RjtCRU5HQUxJIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTkwO0JFTkdBTEkgTEVUVEVSIEFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTkzO0JFTkdBTEkgTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzA5OTQ7QkVOR0FMSSBMRVRURVIgQVU7TG87MDtMOzs7OztOOzs7OzsKKzA5OTU7QkVOR0FMSSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzA5OTY7QkVOR0FMSSBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTk3O0JFTkdBTEkgTEVUVEVSIEdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTk4O0JFTkdBTEkgTEVUVEVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMDk5OTtCRU5HQUxJIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzA5OUE7QkVOR0FMSSBMRVRURVIgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzA5OUI7QkVOR0FMSSBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTlDO0JFTkdBTEkgTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTlEO0JFTkdBTEkgTEVUVEVSIEpIQTtMbzswO0w7Ozs7O047Ozs7OworMDk5RTtCRU5HQUxJIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzA5OUY7QkVOR0FMSSBMRVRURVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUEwO0JFTkdBTEkgTEVUVEVSIFRUSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QTE7QkVOR0FMSSBMRVRURVIgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUEyO0JFTkdBTEkgTEVUVEVSIERESEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QTM7QkVOR0FMSSBMRVRURVIgTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUE0O0JFTkdBTEkgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUE1O0JFTkdBTEkgTEVUVEVSIFRIQTtMbzswO0w7Ozs7O047Ozs7OworMDlBNjtCRU5HQUxJIExFVFRFUiBEQTtMbzswO0w7Ozs7O047Ozs7OworMDlBNztCRU5HQUxJIExFVFRFUiBESEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QTg7QkVOR0FMSSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzA5QUE7QkVOR0FMSSBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QUI7QkVOR0FMSSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUFDO0JFTkdBTEkgTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUFEO0JFTkdBTEkgTEVUVEVSIEJIQTtMbzswO0w7Ozs7O047Ozs7OworMDlBRTtCRU5HQUxJIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMDlBRjtCRU5HQUxJIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMDlCMDtCRU5HQUxJIExFVFRFUiBSQTtMbzswO0w7MDlBQyAwOUJDOzs7O047Ozs7OworMDlCMjtCRU5HQUxJIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMDlCNjtCRU5HQUxJIExFVFRFUiBTSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5Qjc7QkVOR0FMSSBMRVRURVIgU1NBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUI4O0JFTkdBTEkgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUI5O0JFTkdBTEkgTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUJDO0JFTkdBTEkgU0lHTiBOVUtUQTtNbjs3O09OOzs7OztOOzs7OzsKKzA5QkU7QkVOR0FMSSBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOUJGO0JFTkdBTEkgVk9XRUwgU0lHTiBJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOUMwO0JFTkdBTEkgVk9XRUwgU0lHTiBJSTtNYzswO0w7Ozs7O047Ozs7OworMDlDMTtCRU5HQUxJIFZPV0VMIFNJR04gVTtNbjs1MTtPTjs7Ozs7Tjs7Ozs7CiswOUMyO0JFTkdBTEkgVk9XRUwgU0lHTiBVVTtNbjs1MjtPTjs7Ozs7Tjs7Ozs7CiswOUMzO0JFTkdBTEkgVk9XRUwgU0lHTiBWT0NBTElDIFI7TW47NTM7T047Ozs7O047Ozs7OworMDlDNDtCRU5HQUxJIFZPV0VMIFNJR04gVk9DQUxJQyBSUjtNbjs1NDtPTjs7Ozs7Tjs7Ozs7CiswOUM3O0JFTkdBTEkgVk9XRUwgU0lHTiBFO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOUM4O0JFTkdBTEkgVk9XRUwgU0lHTiBBSTtNYzswO0w7Ozs7O047Ozs7OworMDlDQjtCRU5HQUxJIFZPV0VMIFNJR04gTztNYzswO0w7MDlDNyAwOUJFOzs7O047Ozs7OworMDlDQztCRU5HQUxJIFZPV0VMIFNJR04gQVU7TWM7MDtMOzA5QzcgMDlENzs7OztOOzs7OzsKKzA5Q0Q7QkVOR0FMSSBTSUdOIFZJUkFNQTtNbjs5O09OOzs7OztOOzs7OzsKKzA5RDc7QkVOR0FMSSBBVSBMRU5HVEggTUFSSztNYzswO0w7Ozs7O047Ozs7OworMDlEQztCRU5HQUxJIExFVFRFUiBSUkE7TG87MDtMOzA5QTEgMDlCQzs7OztOOzs7OzsKKzA5REQ7QkVOR0FMSSBMRVRURVIgUkhBO0xvOzA7TDswOUEyIDA5QkM7Ozs7Tjs7Ozs7CiswOURGO0JFTkdBTEkgTEVUVEVSIFlZQTtMbzswO0w7MDlBRiAwOUJDOzs7O047Ozs7OworMDlFMDtCRU5HQUxJIExFVFRFUiBWT0NBTElDIFJSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUUxO0JFTkdBTEkgTEVUVEVSIFZPQ0FMSUMgTEw7TG87MDtMOzs7OztOOzs7OzsKKzA5RTI7QkVOR0FMSSBWT1dFTCBTSUdOIFZPQ0FMSUMgTDtNbjs1NTtPTjs7Ozs7Tjs7Ozs7CiswOUUzO0JFTkdBTEkgVk9XRUwgU0lHTiBWT0NBTElDIExMO01uOzU2O09OOzs7OztOOzs7OzsKKzA5RTY7QkVOR0FMSSBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswOUU3O0JFTkdBTEkgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswOUU4O0JFTkdBTEkgRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswOUU5O0JFTkdBTEkgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzA5RUE7QkVOR0FMSSBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswOUVCO0JFTkdBTEkgRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMDlFQztCRU5HQUxJIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMDlFRDtCRU5HQUxJIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswOUVFO0JFTkdBTEkgRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzA5RUY7QkVOR0FMSSBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswOUYwO0JFTkdBTEkgTEVUVEVSIFJBIFdJVEggTUlERExFIERJQUdPTkFMO0xvOzA7TDs7Ozs7Tjs7QXNzYW1lc2U7OzsKKzA5RjE7QkVOR0FMSSBMRVRURVIgUkEgV0lUSCBMT1dFUiBESUFHT05BTDtMbzswO0w7Ozs7O047QkVOR0FMSSBMRVRURVIgVkEgV0lUSCBMT1dFUiBESUFHT05BTDtBc3NhbWVzZTs7OworMDlGMjtCRU5HQUxJIFJVUEVFIE1BUks7U2M7MDtMOzs7OztOOzs7OzsKKzA5RjM7QkVOR0FMSSBSVVBFRSBTSUdOO1NjOzA7TDs7Ozs7Tjs7Ozs7CiswOUY0O0JFTkdBTEkgQ1VSUkVOQ1kgTlVNRVJBVE9SIE9ORTtObzswO0w7Ozs7MTtOOzs7OzsKKzA5RjU7QkVOR0FMSSBDVVJSRU5DWSBOVU1FUkFUT1IgVFdPO05vOzA7TDs7OzsyO047Ozs7OworMDlGNjtCRU5HQUxJIENVUlJFTkNZIE5VTUVSQVRPUiBUSFJFRTtObzswO0w7Ozs7MztOOzs7OzsKKzA5Rjc7QkVOR0FMSSBDVVJSRU5DWSBOVU1FUkFUT1IgRk9VUjtObzswO0w7Ozs7NDtOOzs7OzsKKzA5Rjg7QkVOR0FMSSBDVVJSRU5DWSBOVU1FUkFUT1IgT05FIExFU1MgVEhBTiBUSEUgREVOT01JTkFUT1I7Tm87MDtMOzs7Oy0xO047Ozs7OworMDlGOTtCRU5HQUxJIENVUlJFTkNZIERFTk9NSU5BVE9SIFNJWFRFRU47Tm87MDtMOzs7OzE2O047Ozs7OworMDlGQTtCRU5HQUxJIElTU0hBUjtTbzswO0w7Ozs7O047Ozs7OworMEEwMjtHVVJNVUtISSBTSUdOIEJJTkRJO01uOzU3O09OOzs7OztOOzs7OzsKKzBBMDU7R1VSTVVLSEkgTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMDY7R1VSTVVLSEkgTEVUVEVSIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTA3O0dVUk1VS0hJIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTA4O0dVUk1VS0hJIExFVFRFUiBJSTtMbzswO0w7Ozs7O047Ozs7OworMEEwOTtHVVJNVUtISSBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMEEwQTtHVVJNVUtISSBMRVRURVIgVVU7TG87MDtMOzs7OztOOzs7OzsKKzBBMEY7R1VSTVVLSEkgTEVUVEVSIEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTEwO0dVUk1VS0hJIExFVFRFUiBBSTtMbzswO0w7Ozs7O047Ozs7OworMEExMztHVVJNVUtISSBMRVRURVIgT087TG87MDtMOzs7OztOOzs7OzsKKzBBMTQ7R1VSTVVLSEkgTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTE1O0dVUk1VS0hJIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMEExNjtHVVJNVUtISSBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTE3O0dVUk1VS0hJIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMEExODtHVVJNVUtISSBMRVRURVIgR0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTE5O0dVUk1VS0hJIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzBBMUE7R1VSTVVLSEkgTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTFCO0dVUk1VS0hJIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMUM7R1VSTVVLSEkgTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTFEO0dVUk1VS0hJIExFVFRFUiBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMUU7R1VSTVVLSEkgTEVUVEVSIE5ZQTtMbzswO0w7Ozs7O047Ozs7OworMEExRjtHVVJNVUtISSBMRVRURVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTIwO0dVUk1VS0hJIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTIxO0dVUk1VS0hJIExFVFRFUiBEREE7TG87MDtMOzs7OztOOzs7OzsKKzBBMjI7R1VSTVVLSEkgTEVUVEVSIERESEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMjM7R1VSTVVLSEkgTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMEEyNDtHVVJNVUtISSBMRVRURVIgVEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMjU7R1VSTVVLSEkgTEVUVEVSIFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEEyNjtHVVJNVUtISSBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzBBMjc7R1VSTVVLSEkgTEVUVEVSIERIQTtMbzswO0w7Ozs7O047Ozs7OworMEEyODtHVVJNVUtISSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzBBMkE7R1VSTVVLSEkgTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTJCO0dVUk1VS0hJIExFVFRFUiBQSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMkM7R1VSTVVLSEkgTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTJEO0dVUk1VS0hJIExFVFRFUiBCSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMkU7R1VSTVVLSEkgTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTJGO0dVUk1VS0hJIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMEEzMDtHVVJNVUtISSBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzBBMzI7R1VSTVVLSEkgTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTMzO0dVUk1VS0hJIExFVFRFUiBMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMzU7R1VSTVVLSEkgTEVUVEVSIFZBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTM2O0dVUk1VS0hJIExFVFRFUiBTSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMzg7R1VSTVVLSEkgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTM5O0dVUk1VS0hJIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMEEzQztHVVJNVUtISSBTSUdOIE5VS1RBO01uOzc7T047Ozs7O047Ozs7OworMEEzRTtHVVJNVUtISSBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQTNGO0dVUk1VS0hJIFZPV0VMIFNJR04gSTtNYzswO0w7Ozs7O047Ozs7OworMEE0MDtHVVJNVUtISSBWT1dFTCBTSUdOIElJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQTQxO0dVUk1VS0hJIFZPV0VMIFNJR04gVTtNbjs1ODtPTjs7Ozs7Tjs7Ozs7CiswQTQyO0dVUk1VS0hJIFZPV0VMIFNJR04gVVU7TW47NTk7T047Ozs7O047Ozs7OworMEE0NztHVVJNVUtISSBWT1dFTCBTSUdOIEVFO01uOzYwO09OOzs7OztOOzs7OzsKKzBBNDg7R1VSTVVLSEkgVk9XRUwgU0lHTiBBSTtNbjs2MTtPTjs7Ozs7Tjs7Ozs7CiswQTRCO0dVUk1VS0hJIFZPV0VMIFNJR04gT087TW47NjI7T047Ozs7O047Ozs7OworMEE0QztHVVJNVUtISSBWT1dFTCBTSUdOIEFVO01uOzYzO09OOzs7OztOOzs7OzsKKzBBNEQ7R1VSTVVLSEkgU0lHTiBWSVJBTUE7TW47OTtPTjs7Ozs7Tjs7Ozs7CiswQTU5O0dVUk1VS0hJIExFVFRFUiBLSEhBO0xvOzA7TDswQTE2IDBBM0M7Ozs7Tjs7Ozs7CiswQTVBO0dVUk1VS0hJIExFVFRFUiBHSEhBO0xvOzA7TDswQTE3IDBBM0M7Ozs7Tjs7Ozs7CiswQTVCO0dVUk1VS0hJIExFVFRFUiBaQTtMbzswO0w7MEExQyAwQTNDOzs7O047Ozs7OworMEE1QztHVVJNVUtISSBMRVRURVIgUlJBO0xvOzA7TDswQTIxIDBBM0M7Ozs7Tjs7Ozs7CiswQTVFO0dVUk1VS0hJIExFVFRFUiBGQTtMbzswO0w7MEEyQiAwQTNDOzs7O047Ozs7OworMEE2NjtHVVJNVUtISSBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswQTY3O0dVUk1VS0hJIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEE2ODtHVVJNVUtISSBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzBBNjk7R1VSTVVLSEkgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzBBNkE7R1VSTVVLSEkgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEE2QjtHVVJNVUtISSBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswQTZDO0dVUk1VS0hJIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMEE2RDtHVVJNVUtISSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEE2RTtHVVJNVUtISSBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMEE2RjtHVVJNVUtISSBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswQTcwO0dVUk1VS0hJIFRJUFBJO01uOzY0O09OOzs7OztOOzs7OzsKKzBBNzE7R1VSTVVLSEkgQUREQUs7TW47NjU7T047Ozs7O047Ozs7OworMEE3MjtHVVJNVUtISSBJUkk7TG87MDtMOzs7OztOOzs7OzsKKzBBNzM7R1VSTVVLSEkgVVJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTc0O0dVUk1VS0hJIEVLIE9OS0FSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTgxO0dVSkFSQVRJIFNJR04gQ0FORFJBQklORFU7TW47Njc7T047Ozs7O047Ozs7OworMEE4MjtHVUpBUkFUSSBTSUdOIEFOVVNWQVJBO01uOzY2O09OOzs7OztOOzs7OzsKKzBBODM7R1VKQVJBVEkgU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQTg1O0dVSkFSQVRJIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTg2O0dVSkFSQVRJIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEE4NztHVUpBUkFUSSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEE4ODtHVUpBUkFUSSBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzBBODk7R1VKQVJBVEkgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzBBOEE7R1VKQVJBVEkgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQThCO0dVSkFSQVRJIExFVFRFUiBWT0NBTElDIFI7TG87MDtMOzs7OztOOzs7OzsKKzBBOEQ7R1VKQVJBVEkgVk9XRUwgQ0FORFJBIEU7TG87MDtMOzs7OztOOzs7OzsKKzBBOEY7R1VKQVJBVEkgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzBBOTA7R1VKQVJBVEkgTEVUVEVSIEFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTkxO0dVSkFSQVRJIFZPV0VMIENBTkRSQSBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTkzO0dVSkFSQVRJIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTk0O0dVSkFSQVRJIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMEE5NTtHVUpBUkFUSSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzBBOTY7R1VKQVJBVEkgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMEE5NztHVUpBUkFUSSBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBBOTg7R1VKQVJBVEkgTEVUVEVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMEE5OTtHVUpBUkFUSSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTlBO0dVSkFSQVRJIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEE5QjtHVUpBUkFUSSBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTlDO0dVSkFSQVRJIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMEE5RDtHVUpBUkFUSSBMRVRURVIgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTlFO0dVSkFSQVRJIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzBBOUY7R1VKQVJBVEkgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMEFBMDtHVUpBUkFUSSBMRVRURVIgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEFBMTtHVUpBUkFUSSBMRVRURVIgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUEyO0dVSkFSQVRJIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUEzO0dVSkFSQVRJIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBBQTQ7R1VKQVJBVEkgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUE1O0dVSkFSQVRJIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBQTY7R1VKQVJBVEkgTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUE3O0dVSkFSQVRJIExFVFRFUiBESEE7TG87MDtMOzs7OztOOzs7OzsKKzBBQTg7R1VKQVJBVEkgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUFBO0dVSkFSQVRJIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMEFBQjtHVUpBUkFUSSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUFDO0dVSkFSQVRJIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMEFBRDtHVUpBUkFUSSBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUFFO0dVSkFSQVRJIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMEFBRjtHVUpBUkFUSSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBBQjA7R1VKQVJBVEkgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUIyO0dVSkFSQVRJIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMEFCMztHVUpBUkFUSSBMRVRURVIgTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUI1O0dVSkFSQVRJIExFVFRFUiBWQTtMbzswO0w7Ozs7O047Ozs7OworMEFCNjtHVUpBUkFUSSBMRVRURVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUI3O0dVSkFSQVRJIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzBBQjg7R1VKQVJBVEkgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUI5O0dVSkFSQVRJIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMEFCQztHVUpBUkFUSSBTSUdOIE5VS1RBO01uOzc7T047Ozs7O047Ozs7OworMEFCRDtHVUpBUkFUSSBTSUdOIEFWQUdSQUhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUJFO0dVSkFSQVRJIFZPV0VMIFNJR04gQUE7TWM7MDtMOzs7OztOOzs7OzsKKzBBQkY7R1VKQVJBVEkgVk9XRUwgU0lHTiBJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQUMwO0dVSkFSQVRJIFZPV0VMIFNJR04gSUk7TWM7MDtMOzs7OztOOzs7OzsKKzBBQzE7R1VKQVJBVEkgVk9XRUwgU0lHTiBVO01uOzY4O09OOzs7OztOOzs7OzsKKzBBQzI7R1VKQVJBVEkgVk9XRUwgU0lHTiBVVTtNbjs2OTtPTjs7Ozs7Tjs7Ozs7CiswQUMzO0dVSkFSQVRJIFZPV0VMIFNJR04gVk9DQUxJQyBSO01uOzcwO09OOzs7OztOOzs7OzsKKzBBQzQ7R1VKQVJBVEkgVk9XRUwgU0lHTiBWT0NBTElDIFJSO01uOzcxO09OOzs7OztOOzs7OzsKKzBBQzU7R1VKQVJBVEkgVk9XRUwgU0lHTiBDQU5EUkEgRTtNbjs3MjtPTjs7Ozs7Tjs7Ozs7CiswQUM3O0dVSkFSQVRJIFZPV0VMIFNJR04gRTtNbjs3MztPTjs7Ozs7Tjs7Ozs7CiswQUM4O0dVSkFSQVRJIFZPV0VMIFNJR04gQUk7TW47NzQ7T047Ozs7O047Ozs7OworMEFDOTtHVUpBUkFUSSBWT1dFTCBTSUdOIENBTkRSQSBPO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQUNCO0dVSkFSQVRJIFZPV0VMIFNJR04gTztNYzswO0w7Ozs7O047Ozs7OworMEFDQztHVUpBUkFUSSBWT1dFTCBTSUdOIEFVO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQUNEO0dVSkFSQVRJIFNJR04gVklSQU1BO01uOzk7T047Ozs7O047Ozs7OworMEFEMDtHVUpBUkFUSSBPTTtTbzswO0w7Ozs7O047Ozs7OworMEFFMDtHVUpBUkFUSSBMRVRURVIgVk9DQUxJQyBSUjtMbzswO0w7Ozs7O047Ozs7OworMEFFNjtHVUpBUkFUSSBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswQUU3O0dVSkFSQVRJIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEFFODtHVUpBUkFUSSBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzBBRTk7R1VKQVJBVEkgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzBBRUE7R1VKQVJBVEkgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEFFQjtHVUpBUkFUSSBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswQUVDO0dVSkFSQVRJIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMEFFRDtHVUpBUkFUSSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEFFRTtHVUpBUkFUSSBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMEFFRjtHVUpBUkFUSSBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswQjAxO09SSVlBIFNJR04gQ0FORFJBQklORFU7TW47NzU7T047Ozs7O047Ozs7OworMEIwMjtPUklZQSBTSUdOIEFOVVNWQVJBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQjAzO09SSVlBIFNJR04gVklTQVJHQTtNYzswO0w7Ozs7O047Ozs7OworMEIwNTtPUklZQSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMEIwNjtPUklZQSBMRVRURVIgQUE7TG87MDtMOzs7OztOOzs7OzsKKzBCMDc7T1JJWUEgTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzBCMDg7T1JJWUEgTEVUVEVSIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjA5O09SSVlBIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjBBO09SSVlBIExFVFRFUiBVVTtMbzswO0w7Ozs7O047Ozs7OworMEIwQjtPUklZQSBMRVRURVIgVk9DQUxJQyBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjBDO09SSVlBIExFVFRFUiBWT0NBTElDIEw7TG87MDtMOzs7OztOOzs7OzsKKzBCMEY7T1JJWUEgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzBCMTA7T1JJWUEgTEVUVEVSIEFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjEzO09SSVlBIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjE0O09SSVlBIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMEIxNTtPUklZQSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzBCMTY7T1JJWUEgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMEIxNztPUklZQSBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBCMTg7T1JJWUEgTEVUVEVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMEIxOTtPUklZQSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjFBO09SSVlBIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEIxQjtPUklZQSBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjFDO09SSVlBIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMEIxRDtPUklZQSBMRVRURVIgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjFFO09SSVlBIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzBCMUY7T1JJWUEgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMEIyMDtPUklZQSBMRVRURVIgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEIyMTtPUklZQSBMRVRURVIgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjIyO09SSVlBIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjIzO09SSVlBIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBCMjQ7T1JJWUEgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjI1O09SSVlBIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMjY7T1JJWUEgTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjI3O09SSVlBIExFVFRFUiBESEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMjg7T1JJWUEgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjJBO09SSVlBIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMEIyQjtPUklZQSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjJDO09SSVlBIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMEIyRDtPUklZQSBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjJFO09SSVlBIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMEIyRjtPUklZQSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBCMzA7T1JJWUEgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjMyO09SSVlBIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMEIzMztPUklZQSBMRVRURVIgTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjM2O09SSVlBIExFVFRFUiBTSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMzc7T1JJWUEgTEVUVEVSIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMEIzODtPUklZQSBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzBCMzk7T1JJWUEgTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjNDO09SSVlBIFNJR04gTlVLVEE7TW47NztPTjs7Ozs7Tjs7Ozs7CiswQjNEO09SSVlBIFNJR04gQVZBR1JBSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCM0U7T1JJWUEgVk9XRUwgU0lHTiBBQTtNYzswO0w7Ozs7O047Ozs7OworMEIzRjtPUklZQSBWT1dFTCBTSUdOIEk7TW47NzY7T047Ozs7O047Ozs7OworMEI0MDtPUklZQSBWT1dFTCBTSUdOIElJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQjQxO09SSVlBIFZPV0VMIFNJR04gVTtNbjs3NztPTjs7Ozs7Tjs7Ozs7CiswQjQyO09SSVlBIFZPV0VMIFNJR04gVVU7TW47Nzg7T047Ozs7O047Ozs7OworMEI0MztPUklZQSBWT1dFTCBTSUdOIFZPQ0FMSUMgUjtNbjs3OTtPTjs7Ozs7Tjs7Ozs7CiswQjQ3O09SSVlBIFZPV0VMIFNJR04gRTtNYzswO0w7Ozs7O047Ozs7OworMEI0ODtPUklZQSBWT1dFTCBTSUdOIEFJO01jOzA7TDswQjQ3IDBCNTY7Ozs7Tjs7Ozs7CiswQjRCO09SSVlBIFZPV0VMIFNJR04gTztNYzswO0w7MEI0NyAwQjNFOzs7O047Ozs7OworMEI0QztPUklZQSBWT1dFTCBTSUdOIEFVO01jOzA7TDswQjQ3IDBCNTc7Ozs7Tjs7Ozs7CiswQjREO09SSVlBIFNJR04gVklSQU1BO01uOzk7T047Ozs7O047Ozs7OworMEI1NjtPUklZQSBBSSBMRU5HVEggTUFSSztNbjsyMzA7T047Ozs7O047Ozs7OworMEI1NztPUklZQSBBVSBMRU5HVEggTUFSSztNYzswO0w7Ozs7O047Ozs7OworMEI1QztPUklZQSBMRVRURVIgUlJBO0xvOzA7TDswQjIxIDBCM0M7Ozs7Tjs7Ozs7CiswQjVEO09SSVlBIExFVFRFUiBSSEE7TG87MDtMOzBCMjIgMEIzQzs7OztOOzs7OzsKKzBCNUY7T1JJWUEgTEVUVEVSIFlZQTtMbzswO0w7MEIyRiAwQjNDOzs7O047Ozs7OworMEI2MDtPUklZQSBMRVRURVIgVk9DQUxJQyBSUjtMbzswO0w7Ozs7O047Ozs7OworMEI2MTtPUklZQSBMRVRURVIgVk9DQUxJQyBMTDtMbzswO0w7Ozs7O047Ozs7OworMEI2NjtPUklZQSBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswQjY3O09SSVlBIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEI2ODtPUklZQSBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzBCNjk7T1JJWUEgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzBCNkE7T1JJWUEgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEI2QjtPUklZQSBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswQjZDO09SSVlBIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMEI2RDtPUklZQSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEI2RTtPUklZQSBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMEI2RjtPUklZQSBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswQjcwO09SSVlBIElTU0hBUjtTbzswO0w7Ozs7O047Ozs7OworMEI4MjtUQU1JTCBTSUdOIEFOVVNWQVJBO01uOzA7T047Ozs7O047Ozs7OworMEI4MztUQU1JTCBTSUdOIFZJU0FSR0E7TWM7MDtMOzs7OztOOzs7OzsKKzBCODU7VEFNSUwgTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzBCODY7VEFNSUwgTEVUVEVSIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjg3O1RBTUlMIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjg4O1RBTUlMIExFVFRFUiBJSTtMbzswO0w7Ozs7O047Ozs7OworMEI4OTtUQU1JTCBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMEI4QTtUQU1JTCBMRVRURVIgVVU7TG87MDtMOzs7OztOOzs7OzsKKzBCOEU7VEFNSUwgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzBCOEY7VEFNSUwgTEVUVEVSIEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjkwO1RBTUlMIExFVFRFUiBBSTtMbzswO0w7Ozs7O047Ozs7OworMEI5MjtUQU1JTCBMRVRURVIgTztMbzswO0w7Ozs7O047Ozs7OworMEI5MztUQU1JTCBMRVRURVIgT087TG87MDtMOzs7OztOOzs7OzsKKzBCOTQ7VEFNSUwgTEVUVEVSIEFVO0xvOzA7TDswQjkyIDBCRDc7Ozs7Tjs7Ozs7CiswQjk1O1RBTUlMIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMEI5OTtUQU1JTCBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjlBO1RBTUlMIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEI5QztUQU1JTCBMRVRURVIgSkE7TG87MDtMOzs7OztOOzs7OzsKKzBCOUU7VEFNSUwgTEVUVEVSIE5ZQTtMbzswO0w7Ozs7O047Ozs7OworMEI5RjtUQU1JTCBMRVRURVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkEzO1RBTUlMIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBCQTQ7VEFNSUwgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkE4O1RBTUlMIExFVFRFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMEJBOTtUQU1JTCBMRVRURVIgTk5OQTtMbzswO0w7Ozs7O047Ozs7OworMEJBQTtUQU1JTCBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzBCQUU7VEFNSUwgTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkFGO1RBTUlMIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMEJCMDtUQU1JTCBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjE7VEFNSUwgTEVUVEVSIFJSQTtMbzswO0w7Ozs7O047Ozs7OworMEJCMjtUQU1JTCBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjM7VEFNSUwgTEVUVEVSIExMQTtMbzswO0w7Ozs7O047Ozs7OworMEJCNDtUQU1JTCBMRVRURVIgTExMQTtMbzswO0w7Ozs7O047Ozs7OworMEJCNTtUQU1JTCBMRVRURVIgVkE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjc7VEFNSUwgTEVUVEVSIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMEJCODtUQU1JTCBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzBCQjk7VEFNSUwgTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkJFO1RBTUlMIFZPV0VMIFNJR04gQUE7TWM7MDtMOzs7OztOOzs7OzsKKzBCQkY7VEFNSUwgVk9XRUwgU0lHTiBJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQkMwO1RBTUlMIFZPV0VMIFNJR04gSUk7TW47ODA7T047Ozs7O047Ozs7OworMEJDMTtUQU1JTCBWT1dFTCBTSUdOIFU7TWM7MDtMOzs7OztOOzs7OzsKKzBCQzI7VEFNSUwgVk9XRUwgU0lHTiBVVTtNYzswO0w7Ozs7O047Ozs7OworMEJDNjtUQU1JTCBWT1dFTCBTSUdOIEU7TWM7MDtMOzs7OztOOzs7OzsKKzBCQzc7VEFNSUwgVk9XRUwgU0lHTiBFRTtNYzswO0w7Ozs7O047Ozs7OworMEJDODtUQU1JTCBWT1dFTCBTSUdOIEFJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQkNBO1RBTUlMIFZPV0VMIFNJR04gTztNYzswO0w7MEJDNiAwQkJFOzs7O047Ozs7OworMEJDQjtUQU1JTCBWT1dFTCBTSUdOIE9PO01jOzA7TDswQkM3IDBCQkU7Ozs7Tjs7Ozs7CiswQkNDO1RBTUlMIFZPV0VMIFNJR04gQVU7TWM7MDtMOzBCQzYgMEJENzs7OztOOzs7OzsKKzBCQ0Q7VEFNSUwgU0lHTiBWSVJBTUE7TW47OTtPTjs7Ozs7Tjs7Ozs7CiswQkQ3O1RBTUlMIEFVIExFTkdUSCBNQVJLO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQkU3O1RBTUlMIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEJFODtUQU1JTCBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzBCRTk7VEFNSUwgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzBCRUE7VEFNSUwgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEJFQjtUQU1JTCBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswQkVDO1RBTUlMIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMEJFRDtUQU1JTCBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEJFRTtUQU1JTCBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMEJFRjtUQU1JTCBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswQkYwO1RBTUlMIE5VTUJFUiBURU47Tm87MDtMOzs7OzEwO047Ozs7OworMEJGMTtUQU1JTCBOVU1CRVIgT05FIEhVTkRSRUQ7Tm87MDtMOzs7OzEwMDtOOzs7OzsKKzBCRjI7VEFNSUwgTlVNQkVSIE9ORSBUSE9VU0FORDtObzswO0w7Ozs7MTAwMDtOOzs7OzsKKzBDMDE7VEVMVUdVIFNJR04gQ0FORFJBQklORFU7TWM7MDtMOzs7OztOOzs7OzsKKzBDMDI7VEVMVUdVIFNJR04gQU5VU1ZBUkE7TWM7MDtMOzs7OztOOzs7OzsKKzBDMDM7VEVMVUdVIFNJR04gVklTQVJHQTtNYzswO0w7Ozs7O047Ozs7OworMEMwNTtURUxVR1UgTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMDY7VEVMVUdVIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEMwNztURUxVR1UgTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzBDMDg7VEVMVUdVIExFVFRFUiBJSTtMbzswO0w7Ozs7O047Ozs7OworMEMwOTtURUxVR1UgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzBDMEE7VEVMVUdVIExFVFRFUiBVVTtMbzswO0w7Ozs7O047Ozs7OworMEMwQjtURUxVR1UgTEVUVEVSIFZPQ0FMSUMgUjtMbzswO0w7Ozs7O047Ozs7OworMEMwQztURUxVR1UgTEVUVEVSIFZPQ0FMSUMgTDtMbzswO0w7Ozs7O047Ozs7OworMEMwRTtURUxVR1UgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzBDMEY7VEVMVUdVIExFVFRFUiBFRTtMbzswO0w7Ozs7O047Ozs7OworMEMxMDtURUxVR1UgTEVUVEVSIEFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzEyO1RFTFVHVSBMRVRURVIgTztMbzswO0w7Ozs7O047Ozs7OworMEMxMztURUxVR1UgTEVUVEVSIE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzE0O1RFTFVHVSBMRVRURVIgQVU7TG87MDtMOzs7OztOOzs7OzsKKzBDMTU7VEVMVUdVIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMEMxNjtURUxVR1UgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMEMxNztURUxVR1UgTEVUVEVSIEdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzE4O1RFTFVHVSBMRVRURVIgR0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzE5O1RFTFVHVSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzFBO1RFTFVHVSBMRVRURVIgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzBDMUI7VEVMVUdVIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMUM7VEVMVUdVIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMEMxRDtURUxVR1UgTEVUVEVSIEpIQTtMbzswO0w7Ozs7O047Ozs7OworMEMxRTtURUxVR1UgTEVUVEVSIE5ZQTtMbzswO0w7Ozs7O047Ozs7OworMEMxRjtURUxVR1UgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMEMyMDtURUxVR1UgTEVUVEVSIFRUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMjE7VEVMVUdVIExFVFRFUiBEREE7TG87MDtMOzs7OztOOzs7OzsKKzBDMjI7VEVMVUdVIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzIzO1RFTFVHVSBMRVRURVIgTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzI0O1RFTFVHVSBMRVRURVIgVEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMjU7VEVMVUdVIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMjY7VEVMVUdVIExFVFRFUiBEQTtMbzswO0w7Ozs7O047Ozs7OworMEMyNztURUxVR1UgTEVUVEVSIERIQTtMbzswO0w7Ozs7O047Ozs7OworMEMyODtURUxVR1UgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzJBO1RFTFVHVSBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMkI7VEVMVUdVIExFVFRFUiBQSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMkM7VEVMVUdVIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMEMyRDtURUxVR1UgTEVUVEVSIEJIQTtMbzswO0w7Ozs7O047Ozs7OworMEMyRTtURUxVR1UgTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzJGO1RFTFVHVSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBDMzA7VEVMVUdVIExFVFRFUiBSQTtMbzswO0w7Ozs7O047Ozs7OworMEMzMTtURUxVR1UgTEVUVEVSIFJSQTtMbzswO0w7Ozs7O047Ozs7OworMEMzMjtURUxVR1UgTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzMzO1RFTFVHVSBMRVRURVIgTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzM1O1RFTFVHVSBMRVRURVIgVkE7TG87MDtMOzs7OztOOzs7OzsKKzBDMzY7VEVMVUdVIExFVFRFUiBTSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMzc7VEVMVUdVIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzBDMzg7VEVMVUdVIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMEMzOTtURUxVR1UgTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzNFO1RFTFVHVSBWT1dFTCBTSUdOIEFBO01uOzgxO09OOzs7OztOOzs7OzsKKzBDM0Y7VEVMVUdVIFZPV0VMIFNJR04gSTtNbjs4MjtPTjs7Ozs7Tjs7Ozs7CiswQzQwO1RFTFVHVSBWT1dFTCBTSUdOIElJO01uOzgzO09OOzs7OztOOzs7OzsKKzBDNDE7VEVMVUdVIFZPV0VMIFNJR04gVTtNYzswO0w7Ozs7O047Ozs7OworMEM0MjtURUxVR1UgVk9XRUwgU0lHTiBVVTtNYzswO0w7Ozs7O047Ozs7OworMEM0MztURUxVR1UgVk9XRUwgU0lHTiBWT0NBTElDIFI7TWM7MDtMOzs7OztOOzs7OzsKKzBDNDQ7VEVMVUdVIFZPV0VMIFNJR04gVk9DQUxJQyBSUjtNYzswO0w7Ozs7O047Ozs7OworMEM0NjtURUxVR1UgVk9XRUwgU0lHTiBFO01uOzg0O09OOzs7OztOOzs7OzsKKzBDNDc7VEVMVUdVIFZPV0VMIFNJR04gRUU7TW47ODU7T047Ozs7O047Ozs7OworMEM0ODtURUxVR1UgVk9XRUwgU0lHTiBBSTtNbjs4NjtPTjswQzQ2IDBDNTY7Ozs7Tjs7Ozs7CiswQzRBO1RFTFVHVSBWT1dFTCBTSUdOIE87TW47ODc7T047Ozs7O047Ozs7OworMEM0QjtURUxVR1UgVk9XRUwgU0lHTiBPTztNbjs4ODtPTjs7Ozs7Tjs7Ozs7CiswQzRDO1RFTFVHVSBWT1dFTCBTSUdOIEFVO01uOzg5O09OOzs7OztOOzs7OzsKKzBDNEQ7VEVMVUdVIFNJR04gVklSQU1BO01uOzk7T047Ozs7O047Ozs7OworMEM1NTtURUxVR1UgTEVOR1RIIE1BUks7TW47OTA7T047Ozs7O047Ozs7OworMEM1NjtURUxVR1UgQUkgTEVOR1RIIE1BUks7TW47OTE7T047Ozs7O047Ozs7OworMEM2MDtURUxVR1UgTEVUVEVSIFZPQ0FMSUMgUlI7TG87MDtMOzs7OztOOzs7OzsKKzBDNjE7VEVMVUdVIExFVFRFUiBWT0NBTElDIExMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzY2O1RFTFVHVSBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswQzY3O1RFTFVHVSBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzBDNjg7VEVMVUdVIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMEM2OTtURUxVR1UgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzBDNkE7VEVMVUdVIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzBDNkI7VEVMVUdVIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBDNkM7VEVMVUdVIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMEM2RDtURUxVR1UgRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzBDNkU7VEVMVUdVIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswQzZGO1RFTFVHVSBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswQzgyO0tBTk5BREEgU0lHTiBBTlVTVkFSQTtNYzswO0w7Ozs7O047Ozs7OworMEM4MztLQU5OQURBIFNJR04gVklTQVJHQTtNYzswO0w7Ozs7O047Ozs7OworMEM4NTtLQU5OQURBIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzg2O0tBTk5BREEgTEVUVEVSIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzg3O0tBTk5BREEgTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzBDODg7S0FOTkFEQSBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzBDODk7S0FOTkFEQSBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMEM4QTtLQU5OQURBIExFVFRFUiBVVTtMbzswO0w7Ozs7O047Ozs7OworMEM4QjtLQU5OQURBIExFVFRFUiBWT0NBTElDIFI7TG87MDtMOzs7OztOOzs7OzsKKzBDOEM7S0FOTkFEQSBMRVRURVIgVk9DQUxJQyBMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzhFO0tBTk5BREEgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzBDOEY7S0FOTkFEQSBMRVRURVIgRUU7TG87MDtMOzs7OztOOzs7OzsKKzBDOTA7S0FOTkFEQSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzBDOTI7S0FOTkFEQSBMRVRURVIgTztMbzswO0w7Ozs7O047Ozs7OworMEM5MztLQU5OQURBIExFVFRFUiBPTztMbzswO0w7Ozs7O047Ozs7OworMEM5NDtLQU5OQURBIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMEM5NTtLQU5OQURBIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMEM5NjtLQU5OQURBIExFVFRFUiBLSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDOTc7S0FOTkFEQSBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBDOTg7S0FOTkFEQSBMRVRURVIgR0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzk5O0tBTk5BREEgTEVUVEVSIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMEM5QTtLQU5OQURBIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEM5QjtLQU5OQURBIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDOUM7S0FOTkFEQSBMRVRURVIgSkE7TG87MDtMOzs7OztOOzs7OzsKKzBDOUQ7S0FOTkFEQSBMRVRURVIgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzlFO0tBTk5BREEgTEVUVEVSIE5ZQTtMbzswO0w7Ozs7O047Ozs7OworMEM5RjtLQU5OQURBIExFVFRFUiBUVEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQTA7S0FOTkFEQSBMRVRURVIgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMENBMTtLQU5OQURBIExFVFRFUiBEREE7TG87MDtMOzs7OztOOzs7OzsKKzBDQTI7S0FOTkFEQSBMRVRURVIgRERIQTtMbzswO0w7Ozs7O047Ozs7OworMENBMztLQU5OQURBIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBDQTQ7S0FOTkFEQSBMRVRURVIgVEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQTU7S0FOTkFEQSBMRVRURVIgVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0E2O0tBTk5BREEgTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0E3O0tBTk5BREEgTEVUVEVSIERIQTtMbzswO0w7Ozs7O047Ozs7OworMENBODtLQU5OQURBIExFVFRFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMENBQTtLQU5OQURBIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMENBQjtLQU5OQURBIExFVFRFUiBQSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQUM7S0FOTkFEQSBMRVRURVIgQkE7TG87MDtMOzs7OztOOzs7OzsKKzBDQUQ7S0FOTkFEQSBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0FFO0tBTk5BREEgTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0FGO0tBTk5BREEgTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0IwO0tBTk5BREEgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0IxO0tBTk5BREEgTEVUVEVSIFJSQTtMbzswO0w7Ozs7O047Ozs7OworMENCMjtLQU5OQURBIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMENCMztLQU5OQURBIExFVFRFUiBMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQjU7S0FOTkFEQSBMRVRURVIgVkE7TG87MDtMOzs7OztOOzs7OzsKKzBDQjY7S0FOTkFEQSBMRVRURVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0I3O0tBTk5BREEgTEVUVEVSIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMENCODtLQU5OQURBIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMENCOTtLQU5OQURBIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMENCRTtLQU5OQURBIFZPV0VMIFNJR04gQUE7TWM7MDtMOzs7OztOOzs7OzsKKzBDQkY7S0FOTkFEQSBWT1dFTCBTSUdOIEk7TW47OTI7T047Ozs7O047Ozs7OworMENDMDtLQU5OQURBIFZPV0VMIFNJR04gSUk7TWM7MDtMOzBDQkYgMENENTs7OztOOzs7OzsKKzBDQzE7S0FOTkFEQSBWT1dFTCBTSUdOIFU7TWM7MDtMOzs7OztOOzs7OzsKKzBDQzI7S0FOTkFEQSBWT1dFTCBTSUdOIFVVO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQ0MzO0tBTk5BREEgVk9XRUwgU0lHTiBWT0NBTElDIFI7TWM7MDtMOzs7OztOOzs7OzsKKzBDQzQ7S0FOTkFEQSBWT1dFTCBTSUdOIFZPQ0FMSUMgUlI7TWM7MDtMOzs7OztOOzs7OzsKKzBDQzY7S0FOTkFEQSBWT1dFTCBTSUdOIEU7TW47OTM7T047Ozs7O047Ozs7OworMENDNztLQU5OQURBIFZPV0VMIFNJR04gRUU7TWM7MDtMOzBDQzYgMENENTs7OztOOzs7OzsKKzBDQzg7S0FOTkFEQSBWT1dFTCBTSUdOIEFJO01jOzA7TDswQ0M2IDBDRDY7Ozs7Tjs7Ozs7CiswQ0NBO0tBTk5BREEgVk9XRUwgU0lHTiBPO01jOzA7TDswQ0M2IDBDQzI7Ozs7Tjs7Ozs7CiswQ0NCO0tBTk5BREEgVk9XRUwgU0lHTiBPTztNYzswO0w7MENDNiAwQ0MyIDBDRDU7Ozs7Tjs7Ozs7CiswQ0NDO0tBTk5BREEgVk9XRUwgU0lHTiBBVTtNbjs5NDtPTjs7Ozs7Tjs7Ozs7CiswQ0NEO0tBTk5BREEgU0lHTiBWSVJBTUE7TW47OTtPTjs7Ozs7Tjs7Ozs7CiswQ0Q1O0tBTk5BREEgTEVOR1RIIE1BUks7TWM7MDtMOzs7OztOOzs7OzsKKzBDRDY7S0FOTkFEQSBBSSBMRU5HVEggTUFSSztNYzswO0w7Ozs7O047Ozs7OworMENERTtLQU5OQURBIExFVFRFUiBGQTtMbzswO0w7Ozs7O047Ozs7OworMENFMDtLQU5OQURBIExFVFRFUiBWT0NBTElDIFJSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0UxO0tBTk5BREEgTEVUVEVSIFZPQ0FMSUMgTEw7TG87MDtMOzs7OztOOzs7OzsKKzBDRTY7S0FOTkFEQSBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswQ0U3O0tBTk5BREEgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswQ0U4O0tBTk5BREEgRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswQ0U5O0tBTk5BREEgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzBDRUE7S0FOTkFEQSBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswQ0VCO0tBTk5BREEgRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMENFQztLQU5OQURBIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMENFRDtLQU5OQURBIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswQ0VFO0tBTk5BREEgRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzBDRUY7S0FOTkFEQSBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswRDAyO01BTEFZQUxBTSBTSUdOIEFOVVNWQVJBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRDAzO01BTEFZQUxBTSBTSUdOIFZJU0FSR0E7TWM7MDtMOzs7OztOOzs7OzsKKzBEMDU7TUFMQVlBTEFNIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDA2O01BTEFZQUxBTSBMRVRURVIgQUE7TG87MDtMOzs7OztOOzs7OzsKKzBEMDc7TUFMQVlBTEFNIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDA4O01BTEFZQUxBTSBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzBEMDk7TUFMQVlBTEFNIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDBBO01BTEFZQUxBTSBMRVRURVIgVVU7TG87MDtMOzs7OztOOzs7OzsKKzBEMEI7TUFMQVlBTEFNIExFVFRFUiBWT0NBTElDIFI7TG87MDtMOzs7OztOOzs7OzsKKzBEMEM7TUFMQVlBTEFNIExFVFRFUiBWT0NBTElDIEw7TG87MDtMOzs7OztOOzs7OzsKKzBEMEU7TUFMQVlBTEFNIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDBGO01BTEFZQUxBTSBMRVRURVIgRUU7TG87MDtMOzs7OztOOzs7OzsKKzBEMTA7TUFMQVlBTEFNIExFVFRFUiBBSTtMbzswO0w7Ozs7O047Ozs7OworMEQxMjtNQUxBWUFMQU0gTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzBEMTM7TUFMQVlBTEFNIExFVFRFUiBPTztMbzswO0w7Ozs7O047Ozs7OworMEQxNDtNQUxBWUFMQU0gTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDE1O01BTEFZQUxBTSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzBEMTY7TUFMQVlBTEFNIExFVFRFUiBLSEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMTc7TUFMQVlBTEFNIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMEQxODtNQUxBWUFMQU0gTEVUVEVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMEQxOTtNQUxBWUFMQU0gTEVUVEVSIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMEQxQTtNQUxBWUFMQU0gTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDFCO01BTEFZQUxBTSBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDFDO01BTEFZQUxBTSBMRVRURVIgSkE7TG87MDtMOzs7OztOOzs7OzsKKzBEMUQ7TUFMQVlBTEFNIExFVFRFUiBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMUU7TUFMQVlBTEFNIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzBEMUY7TUFMQVlBTEFNIExFVFRFUiBUVEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMjA7TUFMQVlBTEFNIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDIxO01BTEFZQUxBTSBMRVRURVIgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDIyO01BTEFZQUxBTSBMRVRURVIgRERIQTtMbzswO0w7Ozs7O047Ozs7OworMEQyMztNQUxBWUFMQU0gTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQyNDtNQUxBWUFMQU0gTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDI1O01BTEFZQUxBTSBMRVRURVIgVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDI2O01BTEFZQUxBTSBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzBEMjc7TUFMQVlBTEFNIExFVFRFUiBESEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMjg7TUFMQVlBTEFNIExFVFRFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMEQyQTtNQUxBWUFMQU0gTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDJCO01BTEFZQUxBTSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDJDO01BTEFZQUxBTSBMRVRURVIgQkE7TG87MDtMOzs7OztOOzs7OzsKKzBEMkQ7TUFMQVlBTEFNIExFVFRFUiBCSEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMkU7TUFMQVlBTEFNIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMEQyRjtNQUxBWUFMQU0gTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDMwO01BTEFZQUxBTSBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzBEMzE7TUFMQVlBTEFNIExFVFRFUiBSUkE7TG87MDtMOzs7OztOOzs7OzsKKzBEMzI7TUFMQVlBTEFNIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMEQzMztNQUxBWUFMQU0gTEVUVEVSIExMQTtMbzswO0w7Ozs7O047Ozs7OworMEQzNDtNQUxBWUFMQU0gTEVUVEVSIExMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMzU7TUFMQVlBTEFNIExFVFRFUiBWQTtMbzswO0w7Ozs7O047Ozs7OworMEQzNjtNQUxBWUFMQU0gTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMEQzNztNQUxBWUFMQU0gTEVUVEVSIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMEQzODtNQUxBWUFMQU0gTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDM5O01BTEFZQUxBTSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzBEM0U7TUFMQVlBTEFNIFZPV0VMIFNJR04gQUE7TWM7MDtMOzs7OztOOzs7OzsKKzBEM0Y7TUFMQVlBTEFNIFZPV0VMIFNJR04gSTtNYzswO0w7Ozs7O047Ozs7OworMEQ0MDtNQUxBWUFMQU0gVk9XRUwgU0lHTiBJSTtNYzswO0w7Ozs7O047Ozs7OworMEQ0MTtNQUxBWUFMQU0gVk9XRUwgU0lHTiBVO01uOzk1O09OOzs7OztOOzs7OzsKKzBENDI7TUFMQVlBTEFNIFZPV0VMIFNJR04gVVU7TW47OTY7T047Ozs7O047Ozs7OworMEQ0MztNQUxBWUFMQU0gVk9XRUwgU0lHTiBWT0NBTElDIFI7TW47OTc7T047Ozs7O047Ozs7OworMEQ0NjtNQUxBWUFMQU0gVk9XRUwgU0lHTiBFO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRDQ3O01BTEFZQUxBTSBWT1dFTCBTSUdOIEVFO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRDQ4O01BTEFZQUxBTSBWT1dFTCBTSUdOIEFJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRDRBO01BTEFZQUxBTSBWT1dFTCBTSUdOIE87TWM7MDtMOzBENDYgMEQzRTs7OztOOzs7OzsKKzBENEI7TUFMQVlBTEFNIFZPV0VMIFNJR04gT087TWM7MDtMOzBENDcgMEQzRTs7OztOOzs7OzsKKzBENEM7TUFMQVlBTEFNIFZPV0VMIFNJR04gQVU7TWM7MDtMOzBENDYgMEQ1Nzs7OztOOzs7OzsKKzBENEQ7TUFMQVlBTEFNIFNJR04gVklSQU1BO01uOzk7T047Ozs7O047Ozs7OworMEQ1NztNQUxBWUFMQU0gQVUgTEVOR1RIIE1BUks7TWM7MDtMOzs7OztOOzs7OzsKKzBENjA7TUFMQVlBTEFNIExFVFRFUiBWT0NBTElDIFJSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDYxO01BTEFZQUxBTSBMRVRURVIgVk9DQUxJQyBMTDtMbzswO0w7Ozs7O047Ozs7OworMEQ2NjtNQUxBWUFMQU0gRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMEQ2NztNQUxBWUFMQU0gRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswRDY4O01BTEFZQUxBTSBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzBENjk7TUFMQVlBTEFNIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswRDZBO01BTEFZQUxBTSBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswRDZCO01BTEFZQUxBTSBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswRDZDO01BTEFZQUxBTSBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzBENkQ7TUFMQVlBTEFNIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswRDZFO01BTEFZQUxBTSBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMEQ2RjtNQUxBWUFMQU0gRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMEUwMTtUSEFJIENIQVJBQ1RFUiBLTyBLQUk7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEtPIEtBSTs7OzsKKzBFMDI7VEhBSSBDSEFSQUNURVIgS0hPIEtIQUk7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEtITyBLSEFJOzs7OworMEUwMztUSEFJIENIQVJBQ1RFUiBLSE8gS0hVQVQ7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEtITyBLSFVBVDs7OzsKKzBFMDQ7VEhBSSBDSEFSQUNURVIgS0hPIEtIV0FJO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBLSE8gS0hXQUk7Ozs7CiswRTA1O1RIQUkgQ0hBUkFDVEVSIEtITyBLSE9OO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBLSE8gS0hPTjs7OzsKKzBFMDY7VEhBSSBDSEFSQUNURVIgS0hPIFJBS0hBTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEtITyBSQUtIQU5HOzs7OworMEUwNztUSEFJIENIQVJBQ1RFUiBOR08gTkdVO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBOR08gTkdVOzs7OworMEUwODtUSEFJIENIQVJBQ1RFUiBDSE8gQ0hBTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgQ0hPIENIQU47Ozs7CiswRTA5O1RIQUkgQ0hBUkFDVEVSIENITyBDSElORztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgQ0hPIENISU5HOzs7OworMEUwQTtUSEFJIENIQVJBQ1RFUiBDSE8gQ0hBTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIENITyBDSEFORzs7OzsKKzBFMEI7VEhBSSBDSEFSQUNURVIgU08gU087TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFNPIFNPOzs7OworMEUwQztUSEFJIENIQVJBQ1RFUiBDSE8gQ0hPRTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgQ0hPIENIT0U7Ozs7CiswRTBEO1RIQUkgQ0hBUkFDVEVSIFlPIFlJTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFlPIFlJTkc7Ozs7CiswRTBFO1RIQUkgQ0hBUkFDVEVSIERPIENIQURBO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBETyBDSEFEQTs7OzsKKzBFMEY7VEhBSSBDSEFSQUNURVIgVE8gUEFUQUs7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFRPIFBBVEFLOzs7OworMEUxMDtUSEFJIENIQVJBQ1RFUiBUSE8gVEhBTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgVEhPIFRIQU47Ozs7CiswRTExO1RIQUkgQ0hBUkFDVEVSIFRITyBOQU5HTU9OVEhPO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBUSE8gTkFOR01PTlRITzs7OzsKKzBFMTI7VEhBSSBDSEFSQUNURVIgVEhPIFBIVVRIQU87TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFRITyBQSFVUSEFPOzs7OworMEUxMztUSEFJIENIQVJBQ1RFUiBOTyBORU47TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIE5PIE5FTjs7OzsKKzBFMTQ7VEhBSSBDSEFSQUNURVIgRE8gREVLO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBETyBERUs7Ozs7CiswRTE1O1RIQUkgQ0hBUkFDVEVSIFRPIFRBTztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgVE8gVEFPOzs7OworMEUxNjtUSEFJIENIQVJBQ1RFUiBUSE8gVEhVTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFRITyBUSFVORzs7OzsKKzBFMTc7VEhBSSBDSEFSQUNURVIgVEhPIFRIQUhBTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgVEhPIFRIQUhBTjs7OzsKKzBFMTg7VEhBSSBDSEFSQUNURVIgVEhPIFRIT05HO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBUSE8gVEhPTkc7Ozs7CiswRTE5O1RIQUkgQ0hBUkFDVEVSIE5PIE5VO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBOTyBOVTs7OzsKKzBFMUE7VEhBSSBDSEFSQUNURVIgQk8gQkFJTUFJO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBCTyBCQUlNQUk7Ozs7CiswRTFCO1RIQUkgQ0hBUkFDVEVSIFBPIFBMQTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgUE8gUExBOzs7OworMEUxQztUSEFJIENIQVJBQ1RFUiBQSE8gUEhVTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFBITyBQSFVORzs7OzsKKzBFMUQ7VEhBSSBDSEFSQUNURVIgRk8gRkE7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEZPIEZBOzs7OworMEUxRTtUSEFJIENIQVJBQ1RFUiBQSE8gUEhBTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgUEhPIFBIQU47Ozs7CiswRTFGO1RIQUkgQ0hBUkFDVEVSIEZPIEZBTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgRk8gRkFOOzs7OworMEUyMDtUSEFJIENIQVJBQ1RFUiBQSE8gU0FNUEhBTztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgUEhPIFNBTVBIQU87Ozs7CiswRTIxO1RIQUkgQ0hBUkFDVEVSIE1PIE1BO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBNTyBNQTs7OzsKKzBFMjI7VEhBSSBDSEFSQUNURVIgWU8gWUFLO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBZTyBZQUs7Ozs7CiswRTIzO1RIQUkgQ0hBUkFDVEVSIFJPIFJVQTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgUk8gUlVBOzs7OworMEUyNDtUSEFJIENIQVJBQ1RFUiBSVTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgUlU7Ozs7CiswRTI1O1RIQUkgQ0hBUkFDVEVSIExPIExJTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIExPIExJTkc7Ozs7CiswRTI2O1RIQUkgQ0hBUkFDVEVSIExVO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBMVTs7OzsKKzBFMjc7VEhBSSBDSEFSQUNURVIgV08gV0FFTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgV08gV0FFTjs7OzsKKzBFMjg7VEhBSSBDSEFSQUNURVIgU08gU0FMQTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgU08gU0FMQTs7OzsKKzBFMjk7VEhBSSBDSEFSQUNURVIgU08gUlVTSTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgU08gUlVTSTs7OzsKKzBFMkE7VEhBSSBDSEFSQUNURVIgU08gU1VBO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBTTyBTVUE7Ozs7CiswRTJCO1RIQUkgQ0hBUkFDVEVSIEhPIEhJUDtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgSE8gSElQOzs7OworMEUyQztUSEFJIENIQVJBQ1RFUiBMTyBDSFVMQTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgTE8gQ0hVTEE7Ozs7CiswRTJEO1RIQUkgQ0hBUkFDVEVSIE8gQU5HO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBPIEFORzs7OzsKKzBFMkU7VEhBSSBDSEFSQUNURVIgSE8gTk9LSFVLO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBITyBOT0sgSFVLOzs7OworMEUyRjtUSEFJIENIQVJBQ1RFUiBQQUlZQU5OT0k7UG87MDtMOzs7OztOO1RIQUkgUEFJIFlBTiBOT0k7Ozs7CiswRTMwO1RIQUkgQ0hBUkFDVEVSIFNBUkEgQTtMbzswO0w7Ozs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgQTs7OzsKKzBFMzE7VEhBSSBDSEFSQUNURVIgTUFJIEhBTi1BS0FUO01uOzk4O09OOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBNQUkgSEFOLUFLQVQ7Ozs7CiswRTMyO1RIQUkgQ0hBUkFDVEVSIFNBUkEgQUE7TG87MDtMOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIEFBOzs7OworMEUzMztUSEFJIENIQVJBQ1RFUiBTQVJBIEFNO0xvOzA7TDswRTREIDBFMzI7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBBTTs7OzsKKzBFMzQ7VEhBSSBDSEFSQUNURVIgU0FSQSBJO01uOzk5O09OOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIEk7Ozs7CiswRTM1O1RIQUkgQ0hBUkFDVEVSIFNBUkEgSUk7TW47MTAwO09OOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIElJOzs7OworMEUzNjtUSEFJIENIQVJBQ1RFUiBTQVJBIFVFO01uOzEwMTtPTjs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBVRTs7OzsKKzBFMzc7VEhBSSBDSEFSQUNURVIgU0FSQSBVRUU7TW47MTAyO09OOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIFVFRTs7OzsKKzBFMzg7VEhBSSBDSEFSQUNURVIgU0FSQSBVO01uOzEwMztPTjs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBVOzs7OworMEUzOTtUSEFJIENIQVJBQ1RFUiBTQVJBIFVVO01uOzEwNDtPTjs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBVVTs7OzsKKzBFM0E7VEhBSSBDSEFSQUNURVIgUEhJTlRIVTtNbjsxMDU7T047Ozs7O047VEhBSSBWT1dFTCBTSUdOIFBISU5USFU7Ozs7CiswRTNGO1RIQUkgQ1VSUkVOQ1kgU1lNQk9MIEJBSFQ7U2M7MDtFVDs7Ozs7TjtUSEFJIEJBSFQgU0lHTjs7OzsKKzBFNDA7VEhBSSBDSEFSQUNURVIgU0FSQSBFO0xvOzA7TDs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBFOzs7OworMEU0MTtUSEFJIENIQVJBQ1RFUiBTQVJBIEFFO0xvOzA7TDs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBBRTs7OzsKKzBFNDI7VEhBSSBDSEFSQUNURVIgU0FSQSBPO0xvOzA7TDs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBPOzs7OworMEU0MztUSEFJIENIQVJBQ1RFUiBTQVJBIEFJIE1BSU1VQU47TG87MDtMOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIE1BSSBNVUFOOzs7OworMEU0NDtUSEFJIENIQVJBQ1RFUiBTQVJBIEFJIE1BSU1BTEFJO0xvOzA7TDs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBNQUkgTUFMQUk7Ozs7CiswRTQ1O1RIQUkgQ0hBUkFDVEVSIExBS0tIQU5HWUFPO0xvOzA7TDs7Ozs7TjtUSEFJIExBSyBLSEFORyBZQU87Ozs7CiswRTQ2O1RIQUkgQ0hBUkFDVEVSIE1BSVlBTU9LO0xtOzA7TDs7Ozs7TjtUSEFJIE1BSSBZQU1PSzs7OzsKKzBFNDc7VEhBSSBDSEFSQUNURVIgTUFJVEFJS0hVO01uOzEwNjtPTjs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gTUFJIFRBSSBLSFU7Ozs7CiswRTQ4O1RIQUkgQ0hBUkFDVEVSIE1BSSBFSztNbjsxMDc7T047Ozs7O047VEhBSSBUT05FIE1BSSBFSzs7OzsKKzBFNDk7VEhBSSBDSEFSQUNURVIgTUFJIFRITztNbjsxMDg7T047Ozs7O047VEhBSSBUT05FIE1BSSBUSE87Ozs7CiswRTRBO1RIQUkgQ0hBUkFDVEVSIE1BSSBUUkk7TW47MTA5O09OOzs7OztOO1RIQUkgVE9ORSBNQUkgVFJJOzs7OworMEU0QjtUSEFJIENIQVJBQ1RFUiBNQUkgQ0hBVFRBV0E7TW47MTEwO09OOzs7OztOO1RIQUkgVE9ORSBNQUkgQ0hBVFRBV0E7Ozs7CiswRTRDO1RIQUkgQ0hBUkFDVEVSIFRIQU5USEFLSEFUO01uOzExMTtPTjs7Ozs7TjtUSEFJIFRIQU5USEFLSEFUOzs7OworMEU0RDtUSEFJIENIQVJBQ1RFUiBOSUtIQUhJVDtNbjsxMTI7T047Ozs7O047VEhBSSBOSUtLSEFISVQ7Ozs7CiswRTRFO1RIQUkgQ0hBUkFDVEVSIFlBTUFLS0FOO01uOzEyODtPTjs7Ozs7TjtUSEFJIFlBTUFLS0FOOzs7OworMEU0RjtUSEFJIENIQVJBQ1RFUiBGT05HTUFOO1NvOzA7TDs7Ozs7TjtUSEFJIEZPTkdNQU47Ozs7CiswRTUwO1RIQUkgRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMEU1MTtUSEFJIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEU1MjtUSEFJIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMEU1MztUSEFJIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswRTU0O1RIQUkgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEU1NTtUSEFJIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBFNTY7VEhBSSBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzBFNTc7VEhBSSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEU1ODtUSEFJIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswRTU5O1RIQUkgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMEU1QTtUSEFJIENIQVJBQ1RFUiBBTkdLSEFOS0hVO1BvOzA7TDs7Ozs7TjtUSEFJIEFOR0tIQU5LSFU7Ozs7CiswRTVCO1RIQUkgQ0hBUkFDVEVSIEtIT01VVDtQbzswO0w7Ozs7O047VEhBSSBLSE9NVVQ7Ozs7CiswRTgxO0xBTyBMRVRURVIgS087TG87MDtMOzs7OztOOzs7OzsKKzBFODI7TEFPIExFVFRFUiBLSE8gU1VORztMbzswO0w7Ozs7O047Ozs7OworMEU4NDtMQU8gTEVUVEVSIEtITyBUQU07TG87MDtMOzs7OztOOzs7OzsKKzBFODc7TEFPIExFVFRFUiBOR087TG87MDtMOzs7OztOOzs7OzsKKzBFODg7TEFPIExFVFRFUiBDTztMbzswO0w7Ozs7O047Ozs7OworMEU4QTtMQU8gTEVUVEVSIFNPIFRBTTtMbzswO0w7Ozs7O047Ozs7OworMEU4RDtMQU8gTEVUVEVSIE5ZTztMbzswO0w7Ozs7O047Ozs7OworMEU5NDtMQU8gTEVUVEVSIERPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTk1O0xBTyBMRVRURVIgVE87TG87MDtMOzs7OztOOzs7OzsKKzBFOTY7TEFPIExFVFRFUiBUSE8gU1VORztMbzswO0w7Ozs7O047Ozs7OworMEU5NztMQU8gTEVUVEVSIFRITyBUQU07TG87MDtMOzs7OztOOzs7OzsKKzBFOTk7TEFPIExFVFRFUiBOTztMbzswO0w7Ozs7O047Ozs7OworMEU5QTtMQU8gTEVUVEVSIEJPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTlCO0xBTyBMRVRURVIgUE87TG87MDtMOzs7OztOOzs7OzsKKzBFOUM7TEFPIExFVFRFUiBQSE8gU1VORztMbzswO0w7Ozs7O047Ozs7OworMEU5RDtMQU8gTEVUVEVSIEZPIFRBTTtMbzswO0w7Ozs7O047Ozs7OworMEU5RTtMQU8gTEVUVEVSIFBITyBUQU07TG87MDtMOzs7OztOOzs7OzsKKzBFOUY7TEFPIExFVFRFUiBGTyBTVU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUExO0xBTyBMRVRURVIgTU87TG87MDtMOzs7OztOOzs7OzsKKzBFQTI7TEFPIExFVFRFUiBZTztMbzswO0w7Ozs7O047Ozs7OworMEVBMztMQU8gTEVUVEVSIExPIExJTkc7TG87MDtMOzs7OztOOzs7OzsKKzBFQTU7TEFPIExFVFRFUiBMTyBMT09UO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUE3O0xBTyBMRVRURVIgV087TG87MDtMOzs7OztOOzs7OzsKKzBFQUE7TEFPIExFVFRFUiBTTyBTVU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUFCO0xBTyBMRVRURVIgSE8gU1VORztMbzswO0w7Ozs7O047Ozs7OworMEVBRDtMQU8gTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzBFQUU7TEFPIExFVFRFUiBITyBUQU07TG87MDtMOzs7OztOOzs7OzsKKzBFQUY7TEFPIEVMTElQU0lTO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswRUIwO0xBTyBWT1dFTCBTSUdOIEE7TG87MDtMOzs7OztOOzs7OzsKKzBFQjE7TEFPIFZPV0VMIFNJR04gTUFJIEtBTjtNbjsxMTM7T047Ozs7O047Ozs7OworMEVCMjtMQU8gVk9XRUwgU0lHTiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEVCMztMQU8gVk9XRUwgU0lHTiBBTTtMbzswO0w7MEVDRCAwRUIyOzs7O047Ozs7OworMEVCNDtMQU8gVk9XRUwgU0lHTiBJO01uOzExNDtPTjs7Ozs7Tjs7Ozs7CiswRUI1O0xBTyBWT1dFTCBTSUdOIElJO01uOzExNTtPTjs7Ozs7Tjs7Ozs7CiswRUI2O0xBTyBWT1dFTCBTSUdOIFk7TW47MTE2O09OOzs7OztOOzs7OzsKKzBFQjc7TEFPIFZPV0VMIFNJR04gWVk7TW47MTE3O09OOzs7OztOOzs7OzsKKzBFQjg7TEFPIFZPV0VMIFNJR04gVTtNbjsxMTg7T047Ozs7O047Ozs7OworMEVCOTtMQU8gVk9XRUwgU0lHTiBVVTtNbjsxMTk7T047Ozs7O047Ozs7OworMEVCQjtMQU8gVk9XRUwgU0lHTiBNQUkgS09OO01uOzEyMDtPTjs7Ozs7Tjs7Ozs7CiswRUJDO0xBTyBTRU1JVk9XRUwgU0lHTiBMTztNbjsxMjE7T047Ozs7O047Ozs7OworMEVCRDtMQU8gU0VNSVZPV0VMIFNJR04gTllPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUMwO0xBTyBWT1dFTCBTSUdOIEU7TG87MDtMOzs7OztOOzs7OzsKKzBFQzE7TEFPIFZPV0VMIFNJR04gRUk7TG87MDtMOzs7OztOOzs7OzsKKzBFQzI7TEFPIFZPV0VMIFNJR04gTztMbzswO0w7Ozs7O047Ozs7OworMEVDMztMQU8gVk9XRUwgU0lHTiBBWTtMbzswO0w7Ozs7O047Ozs7OworMEVDNDtMQU8gVk9XRUwgU0lHTiBBSTtMbzswO0w7Ozs7O047Ozs7OworMEVDNjtMQU8gS08gTEE7TG07MDtMOzs7OztOOzs7OzsKKzBFQzg7TEFPIFRPTkUgTUFJIEVLO01uOzEyMjtPTjs7Ozs7Tjs7Ozs7CiswRUM5O0xBTyBUT05FIE1BSSBUSE87TW47MTIzO09OOzs7OztOOzs7OzsKKzBFQ0E7TEFPIFRPTkUgTUFJIFRJO01uOzEyNDtPTjs7Ozs7Tjs7Ozs7CiswRUNCO0xBTyBUT05FIE1BSSBDQVRBV0E7TW47MTI1O09OOzs7OztOOzs7OzsKKzBFQ0M7TEFPIENBTkNFTExBVElPTiBNQVJLO01uOzEyNjtPTjs7Ozs7Tjs7Ozs7CiswRUNEO0xBTyBOSUdHQUhJVEE7TW47MTI3O09OOzs7OztOOzs7OzsKKzBFRDA7TEFPIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBFRDE7TEFPIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEVEMjtMQU8gRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswRUQzO0xBTyBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEVENDtMQU8gRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEVENTtMQU8gRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMEVENjtMQU8gRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswRUQ3O0xBTyBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEVEODtMQU8gRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzBFRDk7TEFPIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBFREM7TEFPIEhPIE5PO0xvOzA7TDs8Y29tcGF0PiAwRUFCIDBFOTk7Ozs7Tjs7Ozs7CiswRUREO0xBTyBITyBNTztMbzswO0w7PGNvbXBhdD4gMEVBQiAwRUExOzs7O047Ozs7OworMEYwMDtUSUJFVEFOIFNZTExBQkxFIE9NO1NvOzA7TDs7Ozs7Tjs7Ozs7CiswRjAxO1RJQkVUQU4gTUFSSyBHVEVSIFlJRyBNR08gVFJVTkNBVEVEIEE7U287MDtMOzs7OztOOzt0ZXIgeWlrIGdvIGEgdGh1bmc7OzsKKzBGMDI7VElCRVRBTiBNQVJLIEdURVIgWUlHIE1HTyAtVU0gUk5BTSBCQ0FEIE1BO1NvOzA7TDs7Ozs7Tjs7dGVyIHlpayBnbyB3dW0gbmFtIGNoZXkgbWE7OzsKKzBGMDM7VElCRVRBTiBNQVJLIEdURVIgWUlHIE1HTyAtVU0gR1RFUiBUU0hFRyBNQTtTbzswO0w7Ozs7O047O3RlciB5aWsgZ28gd3VtIHRlciB0c2VrIG1hOzs7CiswRjA0O1RJQkVUQU4gTUFSSyBJTklUSUFMIFlJRyBNR08gTURVTiBNQTtQbzswO0w7Ozs7O047O3lpayBnbyBkdW4gbWE7OzsKKzBGMDU7VElCRVRBTiBNQVJLIENMT1NJTkcgWUlHIE1HTyBTR0FCIE1BO1BvOzA7TDs7Ozs7Tjs7eWlrIGdvIGthYiBtYTs7OworMEYwNjtUSUJFVEFOIE1BUksgQ0FSRVQgWUlHIE1HTyBQSFVSIFNIQUQgTUE7UG87MDtMOzs7OztOOzt5aWsgZ28gcHVyIHNoZXkgbWE7OzsKKzBGMDc7VElCRVRBTiBNQVJLIFlJRyBNR08gVFNIRUcgU0hBRCBNQTtQbzswO0w7Ozs7O047O3lpayBnbyB0c2VrIHNoZXkgbWE7OzsKKzBGMDg7VElCRVRBTiBNQVJLIFNCUlVMIFNIQUQ7UG87MDtMOzs7OztOOztkcnVsIHNoZXk7OzsKKzBGMDk7VElCRVRBTiBNQVJLIEJTS1VSIFlJRyBNR087UG87MDtMOzs7OztOOztrdXIgeWlrIGdvOzs7CiswRjBBO1RJQkVUQU4gTUFSSyBCS0EtIFNIT0cgWUlHIE1HTztQbzswO0w7Ozs7O047O2thIHNobyB5aWsgZ287OzsKKzBGMEI7VElCRVRBTiBNQVJLIElOVEVSU1lMTEFCSUMgVFNIRUc7UG87MDtMOzs7OztOOzt0c2VrOzs7CiswRjBDO1RJQkVUQU4gTUFSSyBERUxJTUlURVIgVFNIRUcgQlNUQVI7UG87MDtMOzs7OztOOzt0c2VrIHRhcjs7OworMEYwRDtUSUJFVEFOIE1BUksgU0hBRDtQbzswO0w7Ozs7O047O3NoZXk7OzsKKzBGMEU7VElCRVRBTiBNQVJLIE5ZSVMgU0hBRDtQbzswO0w7Ozs7O047O255aSBzaGV5Ozs7CiswRjBGO1RJQkVUQU4gTUFSSyBUU0hFRyBTSEFEO1BvOzA7TDs7Ozs7Tjs7dHNlayBzaGV5Ozs7CiswRjEwO1RJQkVUQU4gTUFSSyBOWUlTIFRTSEVHIFNIQUQ7UG87MDtMOzs7OztOOztueWkgdHNlayBzaGV5Ozs7CiswRjExO1RJQkVUQU4gTUFSSyBSSU4gQ0hFTiBTUFVOR1MgU0hBRDtQbzswO0w7Ozs7O047O3JpbmNoZW4gcHVuZyBzaGV5Ozs7CiswRjEyO1RJQkVUQU4gTUFSSyBSR1lBIEdSQU0gU0hBRDtQbzswO0w7Ozs7O047O2d5YSB0cmFtIHNoZXk7OzsKKzBGMTM7VElCRVRBTiBNQVJLIENBUkVUIC1EWlVEIFJUQUdTIE1FIExPTkcgQ0FOO1NvOzA7TDs7Ozs7Tjs7ZHp1IHRhIG1lIGxvbmcgY2hlbjs7OworMEYxNDtUSUJFVEFOIE1BUksgR1RFUiBUU0hFRztTbzswO0w7Ozs7O047O3RlciB0c2VrOzs7CiswRjE1O1RJQkVUQU4gTE9HT1RZUEUgU0lHTiBDSEFEIFJUQUdTO1NvOzA7TDs7Ozs7Tjs7Y2hlIHRhOzs7CiswRjE2O1RJQkVUQU4gTE9HT1RZUEUgU0lHTiBMSEFHIFJUQUdTO1NvOzA7TDs7Ozs7Tjs7aGxhayB0YTs7OworMEYxNztUSUJFVEFOIEFTVFJPTE9HSUNBTCBTSUdOIFNHUkEgR0NBTiAtQ0hBUiBSVEFHUztTbzswO0w7Ozs7O047O3RyYWNoZW4gY2hhciB0YTs7OworMEYxODtUSUJFVEFOIEFTVFJPTE9HSUNBTCBTSUdOIC1LSFlVRCBQQTtNbjsyMjA7T047Ozs7O047O2t5dSBwYTs7OworMEYxOTtUSUJFVEFOIEFTVFJPTE9HSUNBTCBTSUdOIFNET05HIFRTSFVHUztNbjsyMjA7T047Ozs7O047O2RvbmcgdHN1Ozs7CiswRjFBO1RJQkVUQU4gU0lHTiBSREVMIERLQVIgR0NJRztTbzswO0w7Ozs7O047O2Rla2EgY2hpZzs7OworMEYxQjtUSUJFVEFOIFNJR04gUkRFTCBES0FSIEdOWUlTO1NvOzA7TDs7Ozs7Tjs7ZGVrYSBueWk7OzsKKzBGMUM7VElCRVRBTiBTSUdOIFJERUwgREtBUiBHU1VNO1NvOzA7TDs7Ozs7Tjs7ZGVrYSBzdW07OzsKKzBGMUQ7VElCRVRBTiBTSUdOIFJERUwgTkFHIEdDSUc7U287MDtMOzs7OztOOztkZW5hIGNoaWc7OzsKKzBGMUU7VElCRVRBTiBTSUdOIFJERUwgTkFHIEdOWUlTO1NvOzA7TDs7Ozs7Tjs7ZGVuYSBueWk7OzsKKzBGMUY7VElCRVRBTiBTSUdOIFJERUwgREtBUiBSREVMIE5BRztTbzswO0w7Ozs7O047O2Rla2EgZGVuYTs7OworMEYyMDtUSUJFVEFOIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBGMjE7VElCRVRBTiBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzBGMjI7VElCRVRBTiBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzBGMjM7VElCRVRBTiBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEYyNDtUSUJFVEFOIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzBGMjU7VElCRVRBTiBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswRjI2O1RJQkVUQU4gRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswRjI3O1RJQkVUQU4gRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzBGMjg7VElCRVRBTiBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMEYyOTtUSUJFVEFOIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBGMkE7VElCRVRBTiBESUdJVCBIQUxGIE9ORTtObzswO0w7Ozs7O047Ozs7OworMEYyQjtUSUJFVEFOIERJR0lUIEhBTEYgVFdPO05vOzA7TDs7Ozs7Tjs7Ozs7CiswRjJDO1RJQkVUQU4gRElHSVQgSEFMRiBUSFJFRTtObzswO0w7Ozs7O047Ozs7OworMEYyRDtUSUJFVEFOIERJR0lUIEhBTEYgRk9VUjtObzswO0w7Ozs7O047Ozs7OworMEYyRTtUSUJFVEFOIERJR0lUIEhBTEYgRklWRTtObzswO0w7Ozs7O047Ozs7OworMEYyRjtUSUJFVEFOIERJR0lUIEhBTEYgU0lYO05vOzA7TDs7Ozs7Tjs7Ozs7CiswRjMwO1RJQkVUQU4gRElHSVQgSEFMRiBTRVZFTjtObzswO0w7Ozs7O047Ozs7OworMEYzMTtUSUJFVEFOIERJR0lUIEhBTEYgRUlHSFQ7Tm87MDtMOzs7OztOOzs7OzsKKzBGMzI7VElCRVRBTiBESUdJVCBIQUxGIE5JTkU7Tm87MDtMOzs7OztOOzs7OzsKKzBGMzM7VElCRVRBTiBESUdJVCBIQUxGIFpFUk87Tm87MDtMOzs7OztOOzs7OzsKKzBGMzQ7VElCRVRBTiBNQVJLIEJTRFVTIFJUQUdTO1NvOzA7TDs7Ozs7Tjs7ZHUgdGE7OzsKKzBGMzU7VElCRVRBTiBNQVJLIE5HQVMgQlpVTkcgTllJIFpMQTtNbjsyMzA7T047Ozs7O047O25nZSB6dW5nIG55aSBkYTs7OworMEYzNjtUSUJFVEFOIE1BUksgQ0FSRVQgLURaVUQgUlRBR1MgQlpISSBNSUcgQ0FOO1NvOzA7TDs7Ozs7Tjs7ZHp1IHRhIHNoaSBtaWcgY2hlbjs7OworMEYzNztUSUJFVEFOIE1BUksgTkdBUyBCWlVORyBTR09SIFJUQUdTO01uOzIzMDtPTjs7Ozs7Tjs7bmdlIHp1bmcgZ29yIHRhOzs7CiswRjM4O1RJQkVUQU4gTUFSSyBDSEUgTUdPO1NvOzA7TDs7Ozs7Tjs7Y2hlIGdvOzs7CiswRjM5O1RJQkVUQU4gTUFSSyBUU0EgLVBIUlU7TW47MjE2O09OOzs7OztOOzt0c2EgdHJ1Ozs7CiswRjNBO1RJQkVUQU4gTUFSSyBHVUcgUlRBR1MgR1lPTjtQczswO0w7Ozs7O047O2d1ZyB0YSB5dW47OzsKKzBGM0I7VElCRVRBTiBNQVJLIEdVRyBSVEFHUyBHWUFTO1BlOzA7TDs7Ozs7Tjs7Z3VnIHRhIHllOzs7CiswRjNDO1RJQkVUQU4gTUFSSyBBTkcgS0hBTkcgR1lPTjtQczswO0w7Ozs7O047O2FuZyBrYW5nIHl1bjs7OworMEYzRDtUSUJFVEFOIE1BUksgQU5HIEtIQU5HIEdZQVM7UGU7MDtMOzs7OztOOzthbmcga2FuZyB5ZTs7OworMEYzRTtUSUJFVEFOIFNJR04gWUFSIFRTSEVTO1BzOzA7TDs7Ozs7Tjs7eWFyIHRzZTs7OworMEYzRjtUSUJFVEFOIFNJR04gTUFSIFRTSEVTO1BlOzA7TDs7Ozs7Tjs7bWFyIHRzZTs7OworMEY0MDtUSUJFVEFOIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMEY0MTtUSUJFVEFOIExFVFRFUiBLSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNDI7VElCRVRBTiBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNDM7VElCRVRBTiBMRVRURVIgR0hBO0xvOzA7TDswRjQyIDBGQjc7Ozs7Tjs7Ozs7CiswRjQ0O1RJQkVUQU4gTEVUVEVSIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMEY0NTtUSUJFVEFOIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEY0NjtUSUJFVEFOIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNDc7VElCRVRBTiBMRVRURVIgSkE7TG87MDtMOzs7OztOOzs7OzsKKzBGNDk7VElCRVRBTiBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjRBO1RJQkVUQU4gTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMEY0QjtUSUJFVEFOIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjRDO1RJQkVUQU4gTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMEY0RDtUSUJFVEFOIExFVFRFUiBEREhBO0xvOzA7TDswRjRDIDBGQjc7Ozs7Tjs7Ozs7CiswRjRFO1RJQkVUQU4gTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMEY0RjtUSUJFVEFOIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMEY1MDtUSUJFVEFOIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNTE7VElCRVRBTiBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzBGNTI7VElCRVRBTiBMRVRURVIgREhBO0xvOzA7TDswRjUxIDBGQjc7Ozs7Tjs7Ozs7CiswRjUzO1RJQkVUQU4gTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjU0O1RJQkVUQU4gTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjU1O1RJQkVUQU4gTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMEY1NjtUSUJFVEFOIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMEY1NztUSUJFVEFOIExFVFRFUiBCSEE7TG87MDtMOzBGNTYgMEZCNzs7OztOOzs7OzsKKzBGNTg7VElCRVRBTiBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzBGNTk7VElCRVRBTiBMRVRURVIgVFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjVBO1RJQkVUQU4gTEVUVEVSIFRTSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNUI7VElCRVRBTiBMRVRURVIgRFpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjVDO1RJQkVUQU4gTEVUVEVSIERaSEE7TG87MDtMOzBGNUIgMEZCNzs7OztOOzs7OzsKKzBGNUQ7VElCRVRBTiBMRVRURVIgV0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNUU7VElCRVRBTiBMRVRURVIgWkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjVGO1RJQkVUQU4gTEVUVEVSIFpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjYwO1RJQkVUQU4gTEVUVEVSIC1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjYxO1RJQkVUQU4gTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjYyO1RJQkVUQU4gTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjYzO1RJQkVUQU4gTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjY0O1RJQkVUQU4gTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMEY2NTtUSUJFVEFOIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNjY7VElCRVRBTiBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNjc7VElCRVRBTiBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNjg7VElCRVRBTiBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMEY2OTtUSUJFVEFOIExFVFRFUiBLU1NBO0xvOzA7TDswRjQwIDBGQjU7Ozs7Tjs7Ozs7CiswRjcxO1RJQkVUQU4gVk9XRUwgU0lHTiBBQTtNbjsxNDU7T047Ozs7O047Ozs7OworMEY3MjtUSUJFVEFOIFZPV0VMIFNJR04gSTtNbjsxMzA7T047Ozs7O047Ozs7OworMEY3MztUSUJFVEFOIFZPV0VMIFNJR04gSUk7TW47MTMxO09OOzBGNzIgMEY3MTs7OztOOzs7OzsKKzBGNzQ7VElCRVRBTiBWT1dFTCBTSUdOIFU7TW47MTMyO09OOzs7OztOOzs7OzsKKzBGNzU7VElCRVRBTiBWT1dFTCBTSUdOIFVVO01uOzEzMztPTjswRjcxIDBGNzQ7Ozs7Tjs7Ozs7CiswRjc2O1RJQkVUQU4gVk9XRUwgU0lHTiBWT0NBTElDIFI7TW47MTM0O09OOzBGQjIgMEY4MDs7OztOOzs7OzsKKzBGNzc7VElCRVRBTiBWT1dFTCBTSUdOIFZPQ0FMSUMgUlI7TW47MTM1O09OOzBGNzYgMEY3MTs7OztOOzs7OzsKKzBGNzg7VElCRVRBTiBWT1dFTCBTSUdOIFZPQ0FMSUMgTDtNbjsxMzY7T047MEZCMyAwRjgwOzs7O047Ozs7OworMEY3OTtUSUJFVEFOIFZPV0VMIFNJR04gVk9DQUxJQyBMTDtNbjsxMzc7T047MEY3OCAwRjcxOzs7O047Ozs7OworMEY3QTtUSUJFVEFOIFZPV0VMIFNJR04gRTtNbjsxMzg7T047Ozs7O047Ozs7OworMEY3QjtUSUJFVEFOIFZPV0VMIFNJR04gRUU7TW47MTM5O09OOzs7OztOOzs7OzsKKzBGN0M7VElCRVRBTiBWT1dFTCBTSUdOIE87TW47MTQwO09OOzs7OztOOzs7OzsKKzBGN0Q7VElCRVRBTiBWT1dFTCBTSUdOIE9PO01uOzE0MTtPTjs7Ozs7Tjs7Ozs7CiswRjdFO1RJQkVUQU4gU0lHTiBSSkVTIFNVIE5HQSBSTztNbjsxNDI7T047Ozs7O047O2plIHN1IG5nYSBybzs7OworMEY3RjtUSUJFVEFOIFNJR04gUk5BTSBCQ0FEO01jOzA7TDs7Ozs7Tjs7bmFtIGNoZXk7OzsKKzBGODA7VElCRVRBTiBWT1dFTCBTSUdOIFJFVkVSU0VEIEk7TW47MTQzO09OOzs7OztOOzs7OzsKKzBGODE7VElCRVRBTiBWT1dFTCBTSUdOIFJFVkVSU0VEIElJO01uOzE0NDtPTjswRjgwIDBGNzE7Ozs7Tjs7Ozs7CiswRjgyO1RJQkVUQU4gU0lHTiBOWUkgWkxBIE5BQSBEQTtNbjsyMzA7T047Ozs7O047O255aSBkYSBuYSBkYTs7OworMEY4MztUSUJFVEFOIFNJR04gU05BIExEQU47TW47MjMwO09OOzs7OztOOztuYW4gZGU7OzsKKzBGODQ7VElCRVRBTiBNQVJLIEhBTEFOVEE7TW47OTtPTjs7Ozs7Tjs7Ozs7CiswRjg1O1RJQkVUQU4gTUFSSyBQQUxVVEE7UG87MDtMOzs7OztOOzs7OzsKKzBGODY7VElCRVRBTiBTSUdOIExDSSBSVEFHUztNbjsyMzA7T047Ozs7O047O2ppIHRhOzs7CiswRjg3O1RJQkVUQU4gU0lHTiBZQU5HIFJUQUdTO01uOzIzMDtPTjs7Ozs7Tjs7eWFuZyB0YTs7OworMEY4ODtUSUJFVEFOIFNJR04gTENFIFRTQSBDQU47U287MDtMOzs7OztOOztjaGUgdHNhIGNoZW47OzsKKzBGODk7VElCRVRBTiBTSUdOIE1DSFUgQ0FOO1NvOzA7TDs7Ozs7Tjs7Y2h1IGNoZW47OzsKKzBGOEE7VElCRVRBTiBTSUdOIEdSVSBDQU4gUkdZSU5HUztTbzswO0w7Ozs7O047O3RydSBjaGVuIGdpbmc7OzsKKzBGOEI7VElCRVRBTiBTSUdOIEdSVSBNRUQgUkdZSU5HUztTbzswO0w7Ozs7O047O3RydSBtZSBnaW5nOzs7CiswRjkwO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBLQTtNbjs2O09OOzs7OztOOzs7OzsKKzBGOTE7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEtIQTtNbjs2O09OOzs7OztOOzs7OzsKKzBGOTI7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEdBO01uOzY7T047Ozs7O047Ozs7OworMEY5MztUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgR0hBO01uOzY7T047MEY5MiAwRkI3Ozs7O047Ozs7OworMEY5NDtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgTkdBO01uOzY7T047Ozs7O047Ozs7OworMEY5NTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgQ0E7TW47NjtPTjs7Ozs7Tjs7Ozs7CiswRjk3O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBKQTtNbjs2O09OOzs7OztOOzs7OzsKKzBGOTk7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIE5ZQTtNbjs2O09OOzs7OztOOzs7OzsKKzBGOUE7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFRUQTtNbjs2O09OOzs7OztOOzs7OzsKKzBGOUI7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFRUSEE7TW47NjtPTjs7Ozs7Tjs7Ozs7CiswRjlDO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBEREE7TW47NjtPTjs7Ozs7Tjs7Ozs7CiswRjlEO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBEREhBO01uOzY7T047MEY5QyAwRkI3Ozs7O047Ozs7OworMEY5RTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgTk5BO01uOzY7T047Ozs7O047Ozs7OworMEY5RjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgVEE7TW47NjtPTjs7Ozs7Tjs7Ozs7CiswRkEwO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBUSEE7TW47NjtPTjs7Ozs7Tjs7Ozs7CiswRkExO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBEQTtNbjs2O09OOzs7OztOOzs7OzsKKzBGQTI7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERIQTtNbjs2O09OOzBGQTEgMEZCNzs7OztOOzs7OzsKKzBGQTM7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIE5BO01uOzY7T047Ozs7O047Ozs7OworMEZBNDtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgUEE7TW47NjtPTjs7Ozs7Tjs7Ozs7CiswRkE1O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBQSEE7TW47NjtPTjs7Ozs7Tjs7Ozs7CiswRkE2O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBCQTtNbjs2O09OOzs7OztOOzs7OzsKKzBGQTc7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEJIQTtNbjs2O09OOzBGQTYgMEZCNzs7OztOOzs7OzsKKzBGQTg7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIE1BO01uOzY7T047Ozs7O047Ozs7OworMEZBOTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgVFNBO01uOzY7T047Ozs7O047Ozs7OworMEZBQTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgVFNIQTtNbjs2O09OOzs7OztOOzs7OzsKKzBGQUI7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERaQTtNbjs2O09OOzs7OztOOzs7OzsKKzBGQUM7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERaSEE7TW47NjtPTjswRkFCIDBGQjc7Ozs7Tjs7Ozs7CiswRkFEO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBXQTtNbjs2O09OOzs7OztOOzs7OzsKKzBGQjE7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFlBO01uOzY7T047Ozs7O047Ozs7OworMEZCMjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgUkE7TW47NjtPTjs7Ozs7Tjs7Ozs7CiswRkIzO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBMQTtNbjs2O09OOzs7OztOOzs7OzsKKzBGQjQ7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFNIQTtNbjs2O09OOzs7OztOOzs7OzsKKzBGQjU7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFNTQTtNbjs2O09OOzs7OztOOzs7OzsKKzBGQjY7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFNBO01uOzY7T047Ozs7O047Ozs7OworMEZCNztUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgSEE7TW47NjtPTjs7Ozs7Tjs7Ozs7CiswRkI5O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBLU1NBO01uOzY7T047MEY5MCAwRkI1Ozs7O047Ozs7OworMTBBMDtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEQwOworMTBBMTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBCQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBEMTsKKzEwQTI7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgR0FOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRDI7CisxMEEzO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIERPTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEQzOworMTBBNDtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBFTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEQ0OworMTBBNTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBWSU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBENTsKKzEwQTY7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgWkVOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRDY7CisxMEE3O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFRBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEQ3OworMTBBODtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBJTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEQ4OworMTBBOTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBLQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBEOTsKKzEwQUE7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgTEFTO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwREE7CisxMEFCO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIE1BTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMERCOworMTBBQztHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBOQVI7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBEQzsKKzEwQUQ7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgT047THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBERDsKKzEwQUU7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgUEFSO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwREU7CisxMEFGO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFpIQVI7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBERjsKKzEwQjA7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgUkFFO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRTA7CisxMEIxO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFNBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEUxOworMTBCMjtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBUQVI7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBFMjsKKzEwQjM7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgVU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBFMzsKKzEwQjQ7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgUEhBUjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEU0OworMTBCNTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBLSEFSO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRTU7CisxMEI2O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEdIQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBFNjsKKzEwQjc7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgUUFSO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRTc7CisxMEI4O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFNISU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBFODsKKzEwQjk7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgQ0hJTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEU5OworMTBCQTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBDQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBFQTsKKzEwQkI7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgSklMO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRUI7CisxMEJDO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIENJTDtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEVDOworMTBCRDtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBDSEFSO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRUQ7CisxMEJFO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFhBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEVFOworMTBCRjtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBKSEFOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRUY7CisxMEMwO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEhBRTtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEYwOworMTBDMTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBIRTtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEYxOworMTBDMjtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBISUU7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBGMjsKKzEwQzM7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgV0U7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBGMzsKKzEwQzQ7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgSEFSO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRjQ7CisxMEM1O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEhPRTtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEY1OworMTBEMDtHRU9SR0lBTiBMRVRURVIgQU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBBTjs7OzsKKzEwRDE7R0VPUkdJQU4gTEVUVEVSIEJBTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEJBTjs7OzsKKzEwRDI7R0VPUkdJQU4gTEVUVEVSIEdBTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEdBTjs7OzsKKzEwRDM7R0VPUkdJQU4gTEVUVEVSIERPTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIERPTjs7OzsKKzEwRDQ7R0VPUkdJQU4gTEVUVEVSIEVOO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgRU47Ozs7CisxMEQ1O0dFT1JHSUFOIExFVFRFUiBWSU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBWSU47Ozs7CisxMEQ2O0dFT1JHSUFOIExFVFRFUiBaRU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBaRU47Ozs7CisxMEQ3O0dFT1JHSUFOIExFVFRFUiBUQU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBUQU47Ozs7CisxMEQ4O0dFT1JHSUFOIExFVFRFUiBJTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIElOOzs7OworMTBEOTtHRU9SR0lBTiBMRVRURVIgS0FOO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgS0FOOzs7OworMTBEQTtHRU9SR0lBTiBMRVRURVIgTEFTO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgTEFTOzs7OworMTBEQjtHRU9SR0lBTiBMRVRURVIgTUFOO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgTUFOOzs7OworMTBEQztHRU9SR0lBTiBMRVRURVIgTkFSO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgTkFSOzs7OworMTBERDtHRU9SR0lBTiBMRVRURVIgT047TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBPTjs7OzsKKzEwREU7R0VPUkdJQU4gTEVUVEVSIFBBUjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFBBUjs7OzsKKzEwREY7R0VPUkdJQU4gTEVUVEVSIFpIQVI7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBaSEFSOzs7OworMTBFMDtHRU9SR0lBTiBMRVRURVIgUkFFO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgUkFFOzs7OworMTBFMTtHRU9SR0lBTiBMRVRURVIgU0FOO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgU0FOOzs7OworMTBFMjtHRU9SR0lBTiBMRVRURVIgVEFSO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgVEFSOzs7OworMTBFMztHRU9SR0lBTiBMRVRURVIgVU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBVTjs7OzsKKzEwRTQ7R0VPUkdJQU4gTEVUVEVSIFBIQVI7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBQSEFSOzs7OworMTBFNTtHRU9SR0lBTiBMRVRURVIgS0hBUjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEtIQVI7Ozs7CisxMEU2O0dFT1JHSUFOIExFVFRFUiBHSEFOO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgR0hBTjs7OzsKKzEwRTc7R0VPUkdJQU4gTEVUVEVSIFFBUjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFFBUjs7OzsKKzEwRTg7R0VPUkdJQU4gTEVUVEVSIFNISU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBTSElOOzs7OworMTBFOTtHRU9SR0lBTiBMRVRURVIgQ0hJTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIENISU47Ozs7CisxMEVBO0dFT1JHSUFOIExFVFRFUiBDQU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBDQU47Ozs7CisxMEVCO0dFT1JHSUFOIExFVFRFUiBKSUw7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBKSUw7Ozs7CisxMEVDO0dFT1JHSUFOIExFVFRFUiBDSUw7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBDSUw7Ozs7CisxMEVEO0dFT1JHSUFOIExFVFRFUiBDSEFSO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgQ0hBUjs7OzsKKzEwRUU7R0VPUkdJQU4gTEVUVEVSIFhBTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFhBTjs7OzsKKzEwRUY7R0VPUkdJQU4gTEVUVEVSIEpIQU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBKSEFOOzs7OworMTBGMDtHRU9SR0lBTiBMRVRURVIgSEFFO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgSEFFOzs7OworMTBGMTtHRU9SR0lBTiBMRVRURVIgSEU7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBIRTs7OzsKKzEwRjI7R0VPUkdJQU4gTEVUVEVSIEhJRTtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEhJRTs7OzsKKzEwRjM7R0VPUkdJQU4gTEVUVEVSIFdFO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgV0U7Ozs7CisxMEY0O0dFT1JHSUFOIExFVFRFUiBIQVI7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBIQVI7Ozs7CisxMEY1O0dFT1JHSUFOIExFVFRFUiBIT0U7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBIT0U7Ozs7CisxMEY2O0dFT1JHSUFOIExFVFRFUiBGSTtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEZJOzs7OworMTBGQjtHRU9SR0lBTiBQQVJBR1JBUEggU0VQQVJBVE9SO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxMTAwO0hBTkdVTCBDSE9TRU9ORyBLSVlFT0s7TG87MDtMOzs7OztOOzs7OzsKKzExMDE7SEFOR1VMIENIT1NFT05HIFNTQU5HS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMTAwIDExMDA7Ozs7Tjs7Ozs7CisxMTAyO0hBTkdVTCBDSE9TRU9ORyBOSUVVTjtMbzswO0w7Ozs7O047Ozs7OworMTEwMztIQU5HVUwgQ0hPU0VPTkcgVElLRVVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTA0O0hBTkdVTCBDSE9TRU9ORyBTU0FOR1RJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTEwMyAxMTAzOzs7O047Ozs7OworMTEwNTtIQU5HVUwgQ0hPU0VPTkcgUklFVUw7TG87MDtMOzs7OztOOzs7OzsKKzExMDY7SEFOR1VMIENIT1NFT05HIE1JRVVNO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTA3O0hBTkdVTCBDSE9TRU9ORyBQSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTEwODtIQU5HVUwgQ0hPU0VPTkcgU1NBTkdQSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTA3Ozs7O047Ozs7OworMTEwOTtIQU5HVUwgQ0hPU0VPTkcgU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTEwQTtIQU5HVUwgQ0hPU0VPTkcgU1NBTkdTSU9TO0xvOzA7TDs8Y29tcGF0PiAxMTA5IDExMDk7Ozs7Tjs7Ozs7CisxMTBCO0hBTkdVTCBDSE9TRU9ORyBJRVVORztMbzswO0w7Ozs7O047Ozs7OworMTEwQztIQU5HVUwgQ0hPU0VPTkcgQ0lFVUM7TG87MDtMOzs7OztOOzs7OzsKKzExMEQ7SEFOR1VMIENIT1NFT05HIFNTQU5HQ0lFVUM7TG87MDtMOzxjb21wYXQ+IDExMEMgMTEwQzs7OztOOzs7OzsKKzExMEU7SEFOR1VMIENIT1NFT05HIENISUVVQ0g7TG87MDtMOzs7OztOOzs7OzsKKzExMEY7SEFOR1VMIENIT1NFT05HIEtISUVVS0g7TG87MDtMOzs7OztOOzs7OzsKKzExMTA7SEFOR1VMIENIT1NFT05HIFRISUVVVEg7TG87MDtMOzs7OztOOzs7OzsKKzExMTE7SEFOR1VMIENIT1NFT05HIFBISUVVUEg7TG87MDtMOzs7OztOOzs7OzsKKzExMTI7SEFOR1VMIENIT1NFT05HIEhJRVVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTEzO0hBTkdVTCBDSE9TRU9ORyBOSUVVTi1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMDIgMTEwMDs7OztOOzs7OzsKKzExMTQ7SEFOR1VMIENIT1NFT05HIFNTQU5HTklFVU47TG87MDtMOzxjb21wYXQ+IDExMDIgMTEwMjs7OztOOzs7OzsKKzExMTU7SEFOR1VMIENIT1NFT05HIE5JRVVOLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTEwMiAxMTAzOzs7O047Ozs7OworMTExNjtIQU5HVUwgQ0hPU0VPTkcgTklFVU4tUElFVVA7TG87MDtMOzxjb21wYXQ+IDExMDIgMTEwNzs7OztOOzs7OzsKKzExMTc7SEFOR1VMIENIT1NFT05HIFRJS0VVVC1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMDMgMTEwMDs7OztOOzs7OzsKKzExMTg7SEFOR1VMIENIT1NFT05HIFJJRVVMLU5JRVVOO0xvOzA7TDs8Y29tcGF0PiAxMTA1IDExMDI7Ozs7Tjs7Ozs7CisxMTE5O0hBTkdVTCBDSE9TRU9ORyBTU0FOR1JJRVVMO0xvOzA7TDs8Y29tcGF0PiAxMTA1IDExMDU7Ozs7Tjs7Ozs7CisxMTFBO0hBTkdVTCBDSE9TRU9ORyBSSUVVTC1ISUVVSDtMbzswO0w7PGNvbXBhdD4gMTEwNSAxMTEyOzs7O047Ozs7OworMTExQjtIQU5HVUwgQ0hPU0VPTkcgS0FQWUVPVU5SSUVVTDtMbzswO0w7PGNvbXBhdD4gMTEwNSAxMTBCOzs7O047Ozs7OworMTExQztIQU5HVUwgQ0hPU0VPTkcgTUlFVU0tUElFVVA7TG87MDtMOzxjb21wYXQ+IDExMDYgMTEwNzs7OztOOzs7OzsKKzExMUQ7SEFOR1VMIENIT1NFT05HIEtBUFlFT1VOTUlFVU07TG87MDtMOzxjb21wYXQ+IDExMDYgMTEwQjs7OztOOzs7OzsKKzExMUU7SEFOR1VMIENIT1NFT05HIFBJRVVQLUtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTAwOzs7O047Ozs7OworMTExRjtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtTklFVU47TG87MDtMOzxjb21wYXQ+IDExMDcgMTEwMjs7OztOOzs7OzsKKzExMjA7SEFOR1VMIENIT1NFT05HIFBJRVVQLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTAzOzs7O047Ozs7OworMTEyMTtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtU0lPUztMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTA5Ozs7O047Ozs7OworMTEyMjtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtU0lPUy1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMDcgMTEwOSAxMTAwOzs7O047Ozs7OworMTEyMztIQU5HVUwgQ0hPU0VPTkcgUElFVVAtU0lPUy1USUtFVVQ7TG87MDtMOzxjb21wYXQ+IDExMDcgMTEwOSAxMTAzOzs7O047Ozs7OworMTEyNDtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtU0lPUy1QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTA5IDExMDc7Ozs7Tjs7Ozs7CisxMTI1O0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1TU0FOR1NJT1M7TG87MDtMOzxjb21wYXQ+IDExMDcgMTEwOSAxMTA5Ozs7O047Ozs7OworMTEyNjtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtU0lPUy1DSUVVQztMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTA5IDExMEM7Ozs7Tjs7Ozs7CisxMTI3O0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1DSUVVQztMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTBDOzs7O047Ozs7OworMTEyODtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtQ0hJRVVDSDtMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTBFOzs7O047Ozs7OworMTEyOTtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtVEhJRVVUSDtMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTEwOzs7O047Ozs7OworMTEyQTtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtUEhJRVVQSDtMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTExOzs7O047Ozs7OworMTEyQjtIQU5HVUwgQ0hPU0VPTkcgS0FQWUVPVU5QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTBCOzs7O047Ozs7OworMTEyQztIQU5HVUwgQ0hPU0VPTkcgS0FQWUVPVU5TU0FOR1BJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMTA3IDExMDcgMTEwQjs7OztOOzs7OzsKKzExMkQ7SEFOR1VMIENIT1NFT05HIFNJT1MtS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMTA5IDExMDA7Ozs7Tjs7Ozs7CisxMTJFO0hBTkdVTCBDSE9TRU9ORyBTSU9TLU5JRVVOO0xvOzA7TDs8Y29tcGF0PiAxMTA5IDExMDI7Ozs7Tjs7Ozs7CisxMTJGO0hBTkdVTCBDSE9TRU9ORyBTSU9TLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTEwOSAxMTAzOzs7O047Ozs7OworMTEzMDtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1SSUVVTDtMbzswO0w7PGNvbXBhdD4gMTEwOSAxMTA1Ozs7O047Ozs7OworMTEzMTtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1NSUVVTTtMbzswO0w7PGNvbXBhdD4gMTEwOSAxMTA2Ozs7O047Ozs7OworMTEzMjtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEwOSAxMTA3Ozs7O047Ozs7OworMTEzMztIQU5HVUwgQ0hPU0VPTkcgU0lPUy1QSUVVUC1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMDkgMTEwNyAxMTAwOzs7O047Ozs7OworMTEzNDtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1TU0FOR1NJT1M7TG87MDtMOzxjb21wYXQ+IDExMDkgMTEwOSAxMTA5Ozs7O047Ozs7OworMTEzNTtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1JRVVORztMbzswO0w7PGNvbXBhdD4gMTEwOSAxMTBCOzs7O047Ozs7OworMTEzNjtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1DSUVVQztMbzswO0w7PGNvbXBhdD4gMTEwOSAxMTBDOzs7O047Ozs7OworMTEzNztIQU5HVUwgQ0hPU0VPTkcgU0lPUy1DSElFVUNIO0xvOzA7TDs8Y29tcGF0PiAxMTA5IDExMEU7Ozs7Tjs7Ozs7CisxMTM4O0hBTkdVTCBDSE9TRU9ORyBTSU9TLUtISUVVS0g7TG87MDtMOzxjb21wYXQ+IDExMDkgMTEwRjs7OztOOzs7OzsKKzExMzk7SEFOR1VMIENIT1NFT05HIFNJT1MtVEhJRVVUSDtMbzswO0w7PGNvbXBhdD4gMTEwOSAxMTEwOzs7O047Ozs7OworMTEzQTtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1QSElFVVBIO0xvOzA7TDs8Y29tcGF0PiAxMTA5IDExMTE7Ozs7Tjs7Ozs7CisxMTNCO0hBTkdVTCBDSE9TRU9ORyBTSU9TLUhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMTA5IDExMTI7Ozs7Tjs7Ozs7CisxMTNDO0hBTkdVTCBDSE9TRU9ORyBDSElUVUVVTVNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExM0Q7SEFOR1VMIENIT1NFT05HIENISVRVRVVNU1NBTkdTSU9TO0xvOzA7TDs8Y29tcGF0PiAxMTNDIDExM0M7Ozs7Tjs7Ozs7CisxMTNFO0hBTkdVTCBDSE9TRU9ORyBDRU9OR0NISUVVTVNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExM0Y7SEFOR1VMIENIT1NFT05HIENFT05HQ0hJRVVNU1NBTkdTSU9TO0xvOzA7TDs8Y29tcGF0PiAxMTNFIDExM0U7Ozs7Tjs7Ozs7CisxMTQwO0hBTkdVTCBDSE9TRU9ORyBQQU5TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTQxO0hBTkdVTCBDSE9TRU9ORyBJRVVORy1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMEIgMTEwMDs7OztOOzs7OzsKKzExNDI7SEFOR1VMIENIT1NFT05HIElFVU5HLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTEwQiAxMTAzOzs7O047Ozs7OworMTE0MztIQU5HVUwgQ0hPU0VPTkcgSUVVTkctTUlFVU07TG87MDtMOzxjb21wYXQ+IDExMEIgMTEwNjs7OztOOzs7OzsKKzExNDQ7SEFOR1VMIENIT1NFT05HIElFVU5HLVBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMTBCIDExMDc7Ozs7Tjs7Ozs7CisxMTQ1O0hBTkdVTCBDSE9TRU9ORyBJRVVORy1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMTBCIDExMDk7Ozs7Tjs7Ozs7CisxMTQ2O0hBTkdVTCBDSE9TRU9ORyBJRVVORy1QQU5TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMTBCIDExNDA7Ozs7Tjs7Ozs7CisxMTQ3O0hBTkdVTCBDSE9TRU9ORyBTU0FOR0lFVU5HO0xvOzA7TDs8Y29tcGF0PiAxMTBCIDExMEI7Ozs7Tjs7Ozs7CisxMTQ4O0hBTkdVTCBDSE9TRU9ORyBJRVVORy1DSUVVQztMbzswO0w7PGNvbXBhdD4gMTEwQiAxMTBDOzs7O047Ozs7OworMTE0OTtIQU5HVUwgQ0hPU0VPTkcgSUVVTkctQ0hJRVVDSDtMbzswO0w7PGNvbXBhdD4gMTEwQiAxMTBFOzs7O047Ozs7OworMTE0QTtIQU5HVUwgQ0hPU0VPTkcgSUVVTkctVEhJRVVUSDtMbzswO0w7PGNvbXBhdD4gMTEwQiAxMTEwOzs7O047Ozs7OworMTE0QjtIQU5HVUwgQ0hPU0VPTkcgSUVVTkctUEhJRVVQSDtMbzswO0w7PGNvbXBhdD4gMTEwQiAxMTExOzs7O047Ozs7OworMTE0QztIQU5HVUwgQ0hPU0VPTkcgWUVTSUVVTkc7TG87MDtMOzs7OztOOzs7OzsKKzExNEQ7SEFOR1VMIENIT1NFT05HIENJRVVDLUlFVU5HO0xvOzA7TDs8Y29tcGF0PiAxMTBDIDExMEI7Ozs7Tjs7Ozs7CisxMTRFO0hBTkdVTCBDSE9TRU9ORyBDSElUVUVVTUNJRVVDO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTRGO0hBTkdVTCBDSE9TRU9ORyBDSElUVUVVTVNTQU5HQ0lFVUM7TG87MDtMOzxjb21wYXQ+IDExNEUgMTE0RTs7OztOOzs7OzsKKzExNTA7SEFOR1VMIENIT1NFT05HIENFT05HQ0hJRVVNQ0lFVUM7TG87MDtMOzs7OztOOzs7OzsKKzExNTE7SEFOR1VMIENIT1NFT05HIENFT05HQ0hJRVVNU1NBTkdDSUVVQztMbzswO0w7PGNvbXBhdD4gMTE1MCAxMTUwOzs7O047Ozs7OworMTE1MjtIQU5HVUwgQ0hPU0VPTkcgQ0hJRVVDSC1LSElFVUtIO0xvOzA7TDs8Y29tcGF0PiAxMTBFIDExMEY7Ozs7Tjs7Ozs7CisxMTUzO0hBTkdVTCBDSE9TRU9ORyBDSElFVUNILUhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMTBFIDExMTI7Ozs7Tjs7Ozs7CisxMTU0O0hBTkdVTCBDSE9TRU9ORyBDSElUVUVVTUNISUVVQ0g7TG87MDtMOzs7OztOOzs7OzsKKzExNTU7SEFOR1VMIENIT1NFT05HIENFT05HQ0hJRVVNQ0hJRVVDSDtMbzswO0w7Ozs7O047Ozs7OworMTE1NjtIQU5HVUwgQ0hPU0VPTkcgUEhJRVVQSC1QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTExMSAxMTA3Ozs7O047Ozs7OworMTE1NztIQU5HVUwgQ0hPU0VPTkcgS0FQWUVPVU5QSElFVVBIO0xvOzA7TDs8Y29tcGF0PiAxMTExIDExMEI7Ozs7Tjs7Ozs7CisxMTU4O0hBTkdVTCBDSE9TRU9ORyBTU0FOR0hJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMTEyIDExMTI7Ozs7Tjs7Ozs7CisxMTU5O0hBTkdVTCBDSE9TRU9ORyBZRU9SSU5ISUVVSDtMbzswO0w7Ozs7O047Ozs7OworMTE1RjtIQU5HVUwgQ0hPU0VPTkcgRklMTEVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTYwO0hBTkdVTCBKVU5HU0VPTkcgRklMTEVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTYxO0hBTkdVTCBKVU5HU0VPTkcgQTtMbzswO0w7Ozs7O047Ozs7OworMTE2MjtIQU5HVUwgSlVOR1NFT05HIEFFO0xvOzA7TDs8Y29tcGF0PiAxMTYxIDExNzU7Ozs7Tjs7Ozs7CisxMTYzO0hBTkdVTCBKVU5HU0VPTkcgWUE7TG87MDtMOzs7OztOOzs7OzsKKzExNjQ7SEFOR1VMIEpVTkdTRU9ORyBZQUU7TG87MDtMOzxjb21wYXQ+IDExNjMgMTE3NTs7OztOOzs7OzsKKzExNjU7SEFOR1VMIEpVTkdTRU9ORyBFTztMbzswO0w7Ozs7O047Ozs7OworMTE2NjtIQU5HVUwgSlVOR1NFT05HIEU7TG87MDtMOzxjb21wYXQ+IDExNjUgMTE3NTs7OztOOzs7OzsKKzExNjc7SEFOR1VMIEpVTkdTRU9ORyBZRU87TG87MDtMOzs7OztOOzs7OzsKKzExNjg7SEFOR1VMIEpVTkdTRU9ORyBZRTtMbzswO0w7PGNvbXBhdD4gMTE2NyAxMTc1Ozs7O047Ozs7OworMTE2OTtIQU5HVUwgSlVOR1NFT05HIE87TG87MDtMOzs7OztOOzs7OzsKKzExNkE7SEFOR1VMIEpVTkdTRU9ORyBXQTtMbzswO0w7PGNvbXBhdD4gMTE2OSAxMTYxOzs7O047Ozs7OworMTE2QjtIQU5HVUwgSlVOR1NFT05HIFdBRTtMbzswO0w7PGNvbXBhdD4gMTE2OSAxMTYxIDExNzU7Ozs7Tjs7Ozs7CisxMTZDO0hBTkdVTCBKVU5HU0VPTkcgT0U7TG87MDtMOzxjb21wYXQ+IDExNjkgMTE3NTs7OztOOzs7OzsKKzExNkQ7SEFOR1VMIEpVTkdTRU9ORyBZTztMbzswO0w7Ozs7O047Ozs7OworMTE2RTtIQU5HVUwgSlVOR1NFT05HIFU7TG87MDtMOzs7OztOOzs7OzsKKzExNkY7SEFOR1VMIEpVTkdTRU9ORyBXRU87TG87MDtMOzxjb21wYXQ+IDExNkUgMTE2NTs7OztOOzs7OzsKKzExNzA7SEFOR1VMIEpVTkdTRU9ORyBXRTtMbzswO0w7PGNvbXBhdD4gMTE2RSAxMTY1IDExNzU7Ozs7Tjs7Ozs7CisxMTcxO0hBTkdVTCBKVU5HU0VPTkcgV0k7TG87MDtMOzxjb21wYXQ+IDExNkUgMTE3NTs7OztOOzs7OzsKKzExNzI7SEFOR1VMIEpVTkdTRU9ORyBZVTtMbzswO0w7Ozs7O047Ozs7OworMTE3MztIQU5HVUwgSlVOR1NFT05HIEVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTc0O0hBTkdVTCBKVU5HU0VPTkcgWUk7TG87MDtMOzxjb21wYXQ+IDExNzMgMTE3NTs7OztOOzs7OzsKKzExNzU7SEFOR1VMIEpVTkdTRU9ORyBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTc2O0hBTkdVTCBKVU5HU0VPTkcgQS1PO0xvOzA7TDs8Y29tcGF0PiAxMTYxIDExNjk7Ozs7Tjs7Ozs7CisxMTc3O0hBTkdVTCBKVU5HU0VPTkcgQS1VO0xvOzA7TDs8Y29tcGF0PiAxMTYxIDExNkU7Ozs7Tjs7Ozs7CisxMTc4O0hBTkdVTCBKVU5HU0VPTkcgWUEtTztMbzswO0w7PGNvbXBhdD4gMTE2MyAxMTY5Ozs7O047Ozs7OworMTE3OTtIQU5HVUwgSlVOR1NFT05HIFlBLVlPO0xvOzA7TDs8Y29tcGF0PiAxMTYzIDExNkQ7Ozs7Tjs7Ozs7CisxMTdBO0hBTkdVTCBKVU5HU0VPTkcgRU8tTztMbzswO0w7PGNvbXBhdD4gMTE2NSAxMTY5Ozs7O047Ozs7OworMTE3QjtIQU5HVUwgSlVOR1NFT05HIEVPLVU7TG87MDtMOzxjb21wYXQ+IDExNjUgMTE2RTs7OztOOzs7OzsKKzExN0M7SEFOR1VMIEpVTkdTRU9ORyBFTy1FVTtMbzswO0w7PGNvbXBhdD4gMTE2NSAxMTczOzs7O047Ozs7OworMTE3RDtIQU5HVUwgSlVOR1NFT05HIFlFTy1PO0xvOzA7TDs8Y29tcGF0PiAxMTY3IDExNjk7Ozs7Tjs7Ozs7CisxMTdFO0hBTkdVTCBKVU5HU0VPTkcgWUVPLVU7TG87MDtMOzxjb21wYXQ+IDExNjcgMTE2RTs7OztOOzs7OzsKKzExN0Y7SEFOR1VMIEpVTkdTRU9ORyBPLUVPO0xvOzA7TDs8Y29tcGF0PiAxMTY5IDExNjU7Ozs7Tjs7Ozs7CisxMTgwO0hBTkdVTCBKVU5HU0VPTkcgTy1FO0xvOzA7TDs8Y29tcGF0PiAxMTY5IDExNjY7Ozs7Tjs7Ozs7CisxMTgxO0hBTkdVTCBKVU5HU0VPTkcgTy1ZRTtMbzswO0w7PGNvbXBhdD4gMTE2OSAxMTY4Ozs7O047Ozs7OworMTE4MjtIQU5HVUwgSlVOR1NFT05HIE8tTztMbzswO0w7PGNvbXBhdD4gMTE2OSAxMTY5Ozs7O047Ozs7OworMTE4MztIQU5HVUwgSlVOR1NFT05HIE8tVTtMbzswO0w7PGNvbXBhdD4gMTE2OSAxMTZFOzs7O047Ozs7OworMTE4NDtIQU5HVUwgSlVOR1NFT05HIFlPLVlBO0xvOzA7TDs8Y29tcGF0PiAxMTZEIDExNjM7Ozs7Tjs7Ozs7CisxMTg1O0hBTkdVTCBKVU5HU0VPTkcgWU8tWUFFO0xvOzA7TDs8Y29tcGF0PiAxMTZEIDExNjQ7Ozs7Tjs7Ozs7CisxMTg2O0hBTkdVTCBKVU5HU0VPTkcgWU8tWUVPO0xvOzA7TDs8Y29tcGF0PiAxMTZEIDExNjc7Ozs7Tjs7Ozs7CisxMTg3O0hBTkdVTCBKVU5HU0VPTkcgWU8tTztMbzswO0w7PGNvbXBhdD4gMTE2RCAxMTY5Ozs7O047Ozs7OworMTE4ODtIQU5HVUwgSlVOR1NFT05HIFlPLUk7TG87MDtMOzxjb21wYXQ+IDExNkQgMTE3NTs7OztOOzs7OzsKKzExODk7SEFOR1VMIEpVTkdTRU9ORyBVLUE7TG87MDtMOzxjb21wYXQ+IDExNkUgMTE2MTs7OztOOzs7OzsKKzExOEE7SEFOR1VMIEpVTkdTRU9ORyBVLUFFO0xvOzA7TDs8Y29tcGF0PiAxMTZFIDExNjI7Ozs7Tjs7Ozs7CisxMThCO0hBTkdVTCBKVU5HU0VPTkcgVS1FTy1FVTtMbzswO0w7PGNvbXBhdD4gMTE2RSAxMTY1IDExNzM7Ozs7Tjs7Ozs7CisxMThDO0hBTkdVTCBKVU5HU0VPTkcgVS1ZRTtMbzswO0w7PGNvbXBhdD4gMTE2RSAxMTY4Ozs7O047Ozs7OworMTE4RDtIQU5HVUwgSlVOR1NFT05HIFUtVTtMbzswO0w7PGNvbXBhdD4gMTE2RSAxMTZFOzs7O047Ozs7OworMTE4RTtIQU5HVUwgSlVOR1NFT05HIFlVLUE7TG87MDtMOzxjb21wYXQ+IDExNzIgMTE2MTs7OztOOzs7OzsKKzExOEY7SEFOR1VMIEpVTkdTRU9ORyBZVS1FTztMbzswO0w7PGNvbXBhdD4gMTE3MiAxMTY1Ozs7O047Ozs7OworMTE5MDtIQU5HVUwgSlVOR1NFT05HIFlVLUU7TG87MDtMOzxjb21wYXQ+IDExNzIgMTE2Njs7OztOOzs7OzsKKzExOTE7SEFOR1VMIEpVTkdTRU9ORyBZVS1ZRU87TG87MDtMOzxjb21wYXQ+IDExNzIgMTE2Nzs7OztOOzs7OzsKKzExOTI7SEFOR1VMIEpVTkdTRU9ORyBZVS1ZRTtMbzswO0w7PGNvbXBhdD4gMTE3MiAxMTY4Ozs7O047Ozs7OworMTE5MztIQU5HVUwgSlVOR1NFT05HIFlVLVU7TG87MDtMOzxjb21wYXQ+IDExNzIgMTE2RTs7OztOOzs7OzsKKzExOTQ7SEFOR1VMIEpVTkdTRU9ORyBZVS1JO0xvOzA7TDs8Y29tcGF0PiAxMTcyIDExNzU7Ozs7Tjs7Ozs7CisxMTk1O0hBTkdVTCBKVU5HU0VPTkcgRVUtVTtMbzswO0w7PGNvbXBhdD4gMTE3MyAxMTZFOzs7O047Ozs7OworMTE5NjtIQU5HVUwgSlVOR1NFT05HIEVVLUVVO0xvOzA7TDs8Y29tcGF0PiAxMTczIDExNzM7Ozs7Tjs7Ozs7CisxMTk3O0hBTkdVTCBKVU5HU0VPTkcgWUktVTtMbzswO0w7PGNvbXBhdD4gMTE3NCAxMTZFOzs7O047Ozs7OworMTE5ODtIQU5HVUwgSlVOR1NFT05HIEktQTtMbzswO0w7PGNvbXBhdD4gMTE3NSAxMTYxOzs7O047Ozs7OworMTE5OTtIQU5HVUwgSlVOR1NFT05HIEktWUE7TG87MDtMOzxjb21wYXQ+IDExNzUgMTE2Mzs7OztOOzs7OzsKKzExOUE7SEFOR1VMIEpVTkdTRU9ORyBJLU87TG87MDtMOzxjb21wYXQ+IDExNzUgMTE2OTs7OztOOzs7OzsKKzExOUI7SEFOR1VMIEpVTkdTRU9ORyBJLVU7TG87MDtMOzxjb21wYXQ+IDExNzUgMTE2RTs7OztOOzs7OzsKKzExOUM7SEFOR1VMIEpVTkdTRU9ORyBJLUVVO0xvOzA7TDs8Y29tcGF0PiAxMTc1IDExNzM7Ozs7Tjs7Ozs7CisxMTlEO0hBTkdVTCBKVU5HU0VPTkcgSS1BUkFFQTtMbzswO0w7PGNvbXBhdD4gMTE3NSAxMTlFOzs7O047Ozs7OworMTE5RTtIQU5HVUwgSlVOR1NFT05HIEFSQUVBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTlGO0hBTkdVTCBKVU5HU0VPTkcgQVJBRUEtRU87TG87MDtMOzxjb21wYXQ+IDExOUUgMTE2NTs7OztOOzs7OzsKKzExQTA7SEFOR1VMIEpVTkdTRU9ORyBBUkFFQS1VO0xvOzA7TDs8Y29tcGF0PiAxMTlFIDExNkU7Ozs7Tjs7Ozs7CisxMUExO0hBTkdVTCBKVU5HU0VPTkcgQVJBRUEtSTtMbzswO0w7PGNvbXBhdD4gMTE5RSAxMTc1Ozs7O047Ozs7OworMTFBMjtIQU5HVUwgSlVOR1NFT05HIFNTQU5HQVJBRUE7TG87MDtMOzxjb21wYXQ+IDExOUUgMTE5RTs7OztOOzs7OzsKKzExQTg7SEFOR1VMIEpPTkdTRU9ORyBLSVlFT0s7TG87MDtMOzs7OztOOzs7OzsKKzExQTk7SEFOR1VMIEpPTkdTRU9ORyBTU0FOR0tJWUVPSztMbzswO0w7PGNvbXBhdD4gMTFBOCAxMUE4Ozs7O047Ozs7OworMTFBQTtIQU5HVUwgSk9OR1NFT05HIEtJWUVPSy1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUE4IDExQkE7Ozs7Tjs7Ozs7CisxMUFCO0hBTkdVTCBKT05HU0VPTkcgTklFVU47TG87MDtMOzs7OztOOzs7OzsKKzExQUM7SEFOR1VMIEpPTkdTRU9ORyBOSUVVTi1DSUVVQztMbzswO0w7PGNvbXBhdD4gMTFBQiAxMUJEOzs7O047Ozs7OworMTFBRDtIQU5HVUwgSk9OR1NFT05HIE5JRVVOLUhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMUFCIDExQzI7Ozs7Tjs7Ozs7CisxMUFFO0hBTkdVTCBKT05HU0VPTkcgVElLRVVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUFGO0hBTkdVTCBKT05HU0VPTkcgUklFVUw7TG87MDtMOzs7OztOOzs7OzsKKzExQjA7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExQUYgMTFBODs7OztOOzs7OzsKKzExQjE7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1NSUVVTTtMbzswO0w7PGNvbXBhdD4gMTFBRiAxMUI3Ozs7O047Ozs7OworMTFCMjtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQjg7Ozs7Tjs7Ozs7CisxMUIzO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtU0lPUztMbzswO0w7PGNvbXBhdD4gMTFBRiAxMUJBOzs7O047Ozs7OworMTFCNDtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVRISUVVVEg7TG87MDtMOzxjb21wYXQ+IDExQUYgMTFDMDs7OztOOzs7OzsKKzExQjU7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1QSElFVVBIO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQzE7Ozs7Tjs7Ozs7CisxMUI2O0hBTkdVTCBKT05HU0VPTkcgUklFVUwtSElFVUg7TG87MDtMOzxjb21wYXQ+IDExQUYgMTFDMjs7OztOOzs7OzsKKzExQjc7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTTtMbzswO0w7Ozs7O047Ozs7OworMTFCODtIQU5HVUwgSk9OR1NFT05HIFBJRVVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUI5O0hBTkdVTCBKT05HU0VPTkcgUElFVVAtU0lPUztMbzswO0w7PGNvbXBhdD4gMTFCOCAxMUJBOzs7O047Ozs7OworMTFCQTtIQU5HVUwgSk9OR1NFT05HIFNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExQkI7SEFOR1VMIEpPTkdTRU9ORyBTU0FOR1NJT1M7TG87MDtMOzxjb21wYXQ+IDExQkEgMTFCQTs7OztOOzs7OzsKKzExQkM7SEFOR1VMIEpPTkdTRU9ORyBJRVVORztMbzswO0w7Ozs7O047Ozs7OworMTFCRDtIQU5HVUwgSk9OR1NFT05HIENJRVVDO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUJFO0hBTkdVTCBKT05HU0VPTkcgQ0hJRVVDSDtMbzswO0w7Ozs7O047Ozs7OworMTFCRjtIQU5HVUwgSk9OR1NFT05HIEtISUVVS0g7TG87MDtMOzs7OztOOzs7OzsKKzExQzA7SEFOR1VMIEpPTkdTRU9ORyBUSElFVVRIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUMxO0hBTkdVTCBKT05HU0VPTkcgUEhJRVVQSDtMbzswO0w7Ozs7O047Ozs7OworMTFDMjtIQU5HVUwgSk9OR1NFT05HIEhJRVVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUMzO0hBTkdVTCBKT05HU0VPTkcgS0lZRU9LLVJJRVVMO0xvOzA7TDs8Y29tcGF0PiAxMUE4IDExQUY7Ozs7Tjs7Ozs7CisxMUM0O0hBTkdVTCBKT05HU0VPTkcgS0lZRU9LLVNJT1MtS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMUE4IDExQkEgMTFBODs7OztOOzs7OzsKKzExQzU7SEFOR1VMIEpPTkdTRU9ORyBOSUVVTi1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExQUIgMTFBODs7OztOOzs7OzsKKzExQzY7SEFOR1VMIEpPTkdTRU9ORyBOSUVVTi1USUtFVVQ7TG87MDtMOzxjb21wYXQ+IDExQUIgMTFBRTs7OztOOzs7OzsKKzExQzc7SEFOR1VMIEpPTkdTRU9ORyBOSUVVTi1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUFCIDExQkE7Ozs7Tjs7Ozs7CisxMUM4O0hBTkdVTCBKT05HU0VPTkcgTklFVU4tUEFOU0lPUztMbzswO0w7PGNvbXBhdD4gMTFBQiAxMUVCOzs7O047Ozs7OworMTFDOTtIQU5HVUwgSk9OR1NFT05HIE5JRVVOLVRISUVVVEg7TG87MDtMOzxjb21wYXQ+IDExQUIgMTFDMDs7OztOOzs7OzsKKzExQ0E7SEFOR1VMIEpPTkdTRU9ORyBUSUtFVVQtS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMUFFIDExQTg7Ozs7Tjs7Ozs7CisxMUNCO0hBTkdVTCBKT05HU0VPTkcgVElLRVVULVJJRVVMO0xvOzA7TDs8Y29tcGF0PiAxMUFFIDExQUY7Ozs7Tjs7Ozs7CisxMUNDO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtS0lZRU9LLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExQUYgMTFBOCAxMUJBOzs7O047Ozs7OworMTFDRDtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLU5JRVVOO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQUI7Ozs7Tjs7Ozs7CisxMUNFO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQUU7Ozs7Tjs7Ozs7CisxMUNGO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtVElLRVVULUhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQUUgMTFDMjs7OztOOzs7OzsKKzExRDA7SEFOR1VMIEpPTkdTRU9ORyBTU0FOR1JJRVVMO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQUY7Ozs7Tjs7Ozs7CisxMUQxO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtTUlFVU0tS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQjcgMTFBODs7OztOOzs7OzsKKzExRDI7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1NSUVVTS1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQjcgMTFCQTs7OztOOzs7OzsKKzExRDM7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1QSUVVUC1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQjggMTFCQTs7OztOOzs7OzsKKzExRDQ7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1QSUVVUC1ISUVVSDtMbzswO0w7PGNvbXBhdD4gMTFBRiAxMUI4IDExQzI7Ozs7Tjs7Ozs7CisxMUQ1O0hBTkdVTCBKT05HU0VPTkcgUklFVUwtS0FQWUVPVU5QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTFBRiAxMUI4IDExQkM7Ozs7Tjs7Ozs7CisxMUQ2O0hBTkdVTCBKT05HU0VPTkcgUklFVUwtU1NBTkdTSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQkEgMTFCQTs7OztOOzs7OzsKKzExRDc7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1QQU5TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExRUI7Ozs7Tjs7Ozs7CisxMUQ4O0hBTkdVTCBKT05HU0VPTkcgUklFVUwtS0hJRVVLSDtMbzswO0w7PGNvbXBhdD4gMTFBRiAxMUJGOzs7O047Ozs7OworMTFEOTtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVlFT1JJTkhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExRjk7Ozs7Tjs7Ozs7CisxMURBO0hBTkdVTCBKT05HU0VPTkcgTUlFVU0tS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMUI3IDExQTg7Ozs7Tjs7Ozs7CisxMURCO0hBTkdVTCBKT05HU0VPTkcgTUlFVU0tUklFVUw7TG87MDtMOzxjb21wYXQ+IDExQjcgMTFBRjs7OztOOzs7OzsKKzExREM7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTFCNyAxMUI4Ozs7O047Ozs7OworMTFERDtIQU5HVUwgSk9OR1NFT05HIE1JRVVNLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExQjcgMTFCQTs7OztOOzs7OzsKKzExREU7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1TU0FOR1NJT1M7TG87MDtMOzxjb21wYXQ+IDExQjcgMTFCQSAxMUJBOzs7O047Ozs7OworMTFERjtIQU5HVUwgSk9OR1NFT05HIE1JRVVNLVBBTlNJT1M7TG87MDtMOzxjb21wYXQ+IDExQjcgMTFFQjs7OztOOzs7OzsKKzExRTA7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1DSElFVUNIO0xvOzA7TDs8Y29tcGF0PiAxMUI3IDExQkU7Ozs7Tjs7Ozs7CisxMUUxO0hBTkdVTCBKT05HU0VPTkcgTUlFVU0tSElFVUg7TG87MDtMOzxjb21wYXQ+IDExQjcgMTFDMjs7OztOOzs7OzsKKzExRTI7SEFOR1VMIEpPTkdTRU9ORyBLQVBZRU9VTk1JRVVNO0xvOzA7TDs8Y29tcGF0PiAxMUI3IDExQkM7Ozs7Tjs7Ozs7CisxMUUzO0hBTkdVTCBKT05HU0VPTkcgUElFVVAtUklFVUw7TG87MDtMOzxjb21wYXQ+IDExQjggMTFBRjs7OztOOzs7OzsKKzExRTQ7SEFOR1VMIEpPTkdTRU9ORyBQSUVVUC1QSElFVVBIO0xvOzA7TDs8Y29tcGF0PiAxMUI4IDExQzE7Ozs7Tjs7Ozs7CisxMUU1O0hBTkdVTCBKT05HU0VPTkcgUElFVVAtSElFVUg7TG87MDtMOzxjb21wYXQ+IDExQjggMTFDMjs7OztOOzs7OzsKKzExRTY7SEFOR1VMIEpPTkdTRU9ORyBLQVBZRU9VTlBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMUI4IDExQkM7Ozs7Tjs7Ozs7CisxMUU3O0hBTkdVTCBKT05HU0VPTkcgU0lPUy1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExQkEgMTFBODs7OztOOzs7OzsKKzExRTg7SEFOR1VMIEpPTkdTRU9ORyBTSU9TLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTFCQSAxMUFFOzs7O047Ozs7OworMTFFOTtIQU5HVUwgSk9OR1NFT05HIFNJT1MtUklFVUw7TG87MDtMOzxjb21wYXQ+IDExQkEgMTFBRjs7OztOOzs7OzsKKzExRUE7SEFOR1VMIEpPTkdTRU9ORyBTSU9TLVBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMUJBIDExQjg7Ozs7Tjs7Ozs7CisxMUVCO0hBTkdVTCBKT05HU0VPTkcgUEFOU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTFFQztIQU5HVUwgSk9OR1NFT05HIElFVU5HLUtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTFCQyAxMUE4Ozs7O047Ozs7OworMTFFRDtIQU5HVUwgSk9OR1NFT05HIElFVU5HLVNTQU5HS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMUJDIDExQTggMTFBODs7OztOOzs7OzsKKzExRUU7SEFOR1VMIEpPTkdTRU9ORyBTU0FOR0lFVU5HO0xvOzA7TDs8Y29tcGF0PiAxMUJDIDExQkM7Ozs7Tjs7Ozs7CisxMUVGO0hBTkdVTCBKT05HU0VPTkcgSUVVTkctS0hJRVVLSDtMbzswO0w7PGNvbXBhdD4gMTFCQyAxMUJGOzs7O047Ozs7OworMTFGMDtIQU5HVUwgSk9OR1NFT05HIFlFU0lFVU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUYxO0hBTkdVTCBKT05HU0VPTkcgWUVTSUVVTkctU0lPUztMbzswO0w7PGNvbXBhdD4gMTFGMCAxMUJBOzs7O047Ozs7OworMTFGMjtIQU5HVUwgSk9OR1NFT05HIFlFU0lFVU5HLVBBTlNJT1M7TG87MDtMOzxjb21wYXQ+IDExRjAgMTFFQjs7OztOOzs7OzsKKzExRjM7SEFOR1VMIEpPTkdTRU9ORyBQSElFVVBILVBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMUMxIDExQjg7Ozs7Tjs7Ozs7CisxMUY0O0hBTkdVTCBKT05HU0VPTkcgS0FQWUVPVU5QSElFVVBIO0xvOzA7TDs8Y29tcGF0PiAxMUMxIDExQkM7Ozs7Tjs7Ozs7CisxMUY1O0hBTkdVTCBKT05HU0VPTkcgSElFVUgtTklFVU47TG87MDtMOzxjb21wYXQ+IDExQzIgMTFBQjs7OztOOzs7OzsKKzExRjY7SEFOR1VMIEpPTkdTRU9ORyBISUVVSC1SSUVVTDtMbzswO0w7PGNvbXBhdD4gMTFDMiAxMUFGOzs7O047Ozs7OworMTFGNztIQU5HVUwgSk9OR1NFT05HIEhJRVVILU1JRVVNO0xvOzA7TDs8Y29tcGF0PiAxMUMyIDExQjc7Ozs7Tjs7Ozs7CisxMUY4O0hBTkdVTCBKT05HU0VPTkcgSElFVUgtUElFVVA7TG87MDtMOzxjb21wYXQ+IDExQzIgMTFCODs7OztOOzs7OzsKKzExRjk7SEFOR1VMIEpPTkdTRU9ORyBZRU9SSU5ISUVVSDtMbzswO0w7Ozs7O047Ozs7OworMUUwMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBCRUxPVztMdTswO0w7MDA0MSAwMzI1Ozs7O047Ozs7MUUwMTsKKzFFMDE7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEJFTE9XO0xsOzA7TDswMDYxIDAzMjU7Ozs7Tjs7OzFFMDA7OzFFMDAKKzFFMDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQiBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0MiAwMzA3Ozs7O047Ozs7MUUwMzsKKzFFMDM7TEFUSU4gU01BTEwgTEVUVEVSIEIgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNjIgMDMwNzs7OztOOzs7MUUwMjs7MUUwMgorMUUwNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDQyIDAzMjM7Ozs7Tjs7OzsxRTA1OworMUUwNTtMQVRJTiBTTUFMTCBMRVRURVIgQiBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA2MiAwMzIzOzs7O047OzsxRTA0OzsxRTA0CisxRTA2O0xBVElOIENBUElUQUwgTEVUVEVSIEIgV0lUSCBMSU5FIEJFTE9XO0x1OzA7TDswMDQyIDAzMzE7Ozs7Tjs7OzsxRTA3OworMUUwNztMQVRJTiBTTUFMTCBMRVRURVIgQiBXSVRIIExJTkUgQkVMT1c7TGw7MDtMOzAwNjIgMDMzMTs7OztOOzs7MUUwNjs7MUUwNgorMUUwODtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSBBTkQgQUNVVEU7THU7MDtMOzAwQzcgMDMwMTs7OztOOzs7OzFFMDk7CisxRTA5O0xBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQSBBTkQgQUNVVEU7TGw7MDtMOzAwRTcgMDMwMTs7OztOOzs7MUUwODs7MUUwOAorMUUwQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDQ0IDAzMDc7Ozs7Tjs7OzsxRTBCOworMUUwQjtMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2NCAwMzA3Ozs7O047OzsxRTBBOzsxRTBBCisxRTBDO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNDQgMDMyMzs7OztOOzs7OzFFMEQ7CisxRTBEO0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDY0IDAzMjM7Ozs7Tjs7OzFFMEM7OzFFMEMKKzFFMEU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIExJTkUgQkVMT1c7THU7MDtMOzAwNDQgMDMzMTs7OztOOzs7OzFFMEY7CisxRTBGO0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA2NCAwMzMxOzs7O047OzsxRTBFOzsxRTBFCisxRTEwO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBDRURJTExBO0x1OzA7TDswMDQ0IDAzMjc7Ozs7Tjs7OzsxRTExOworMUUxMTtMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIENFRElMTEE7TGw7MDtMOzAwNjQgMDMyNzs7OztOOzs7MUUxMDs7MUUxMAorMUUxMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMdTswO0w7MDA0NCAwMzJEOzs7O047Ozs7MUUxMzsKKzFFMTM7TEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0xsOzA7TDswMDY0IDAzMkQ7Ozs7Tjs7OzFFMTI7OzFFMTIKKzFFMTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE1BQ1JPTiBBTkQgR1JBVkU7THU7MDtMOzAxMTIgMDMwMDs7OztOOzs7OzFFMTU7CisxRTE1O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggTUFDUk9OIEFORCBHUkFWRTtMbDswO0w7MDExMyAwMzAwOzs7O047OzsxRTE0OzsxRTE0CisxRTE2O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBNQUNST04gQU5EIEFDVVRFO0x1OzA7TDswMTEyIDAzMDE7Ozs7Tjs7OzsxRTE3OworMUUxNztMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE1BQ1JPTiBBTkQgQUNVVEU7TGw7MDtMOzAxMTMgMDMwMTs7OztOOzs7MUUxNjs7MUUxNgorMUUxODtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMdTswO0w7MDA0NSAwMzJEOzs7O047Ozs7MUUxOTsKKzFFMTk7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0xsOzA7TDswMDY1IDAzMkQ7Ozs7Tjs7OzFFMTg7OzFFMTgKKzFFMUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIFRJTERFIEJFTE9XO0x1OzA7TDswMDQ1IDAzMzA7Ozs7Tjs7OzsxRTFCOworMUUxQjtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIFRJTERFIEJFTE9XO0xsOzA7TDswMDY1IDAzMzA7Ozs7Tjs7OzFFMUE7OzFFMUEKKzFFMUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENFRElMTEEgQU5EIEJSRVZFO0x1OzA7TDswMTE0IDAzMjc7Ozs7Tjs7OzsxRTFEOworMUUxRDtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENFRElMTEEgQU5EIEJSRVZFO0xsOzA7TDswMTE1IDAzMjc7Ozs7Tjs7OzFFMUM7OzFFMUMKKzFFMUU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRiBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0NiAwMzA3Ozs7O047Ozs7MUUxRjsKKzFFMUY7TEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNjYgMDMwNzs7OztOOzs7MUUxRTs7MUUxRQorMUUyMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggTUFDUk9OO0x1OzA7TDswMDQ3IDAzMDQ7Ozs7Tjs7OzsxRTIxOworMUUyMTtMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIE1BQ1JPTjtMbDswO0w7MDA2NyAwMzA0Ozs7O047OzsxRTIwOzsxRTIwCisxRTIyO0xBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNDggMDMwNzs7OztOOzs7OzFFMjM7CisxRTIzO0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDY4IDAzMDc7Ozs7Tjs7OzFFMjI7OzFFMjIKKzFFMjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0OCAwMzIzOzs7O047Ozs7MUUyNTsKKzFFMjU7TEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNjggMDMyMzs7OztOOzs7MUUyNDs7MUUyNAorMUUyNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDQ4IDAzMDg7Ozs7Tjs7OzsxRTI3OworMUUyNztMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA2OCAwMzA4Ozs7O047OzsxRTI2OzsxRTI2CisxRTI4O0xBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBDRURJTExBO0x1OzA7TDswMDQ4IDAzMjc7Ozs7Tjs7OzsxRTI5OworMUUyOTtMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIENFRElMTEE7TGw7MDtMOzAwNjggMDMyNzs7OztOOzs7MUUyODs7MUUyOAorMUUyQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggQlJFVkUgQkVMT1c7THU7MDtMOzAwNDggMDMyRTs7OztOOzs7OzFFMkI7CisxRTJCO0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggQlJFVkUgQkVMT1c7TGw7MDtMOzAwNjggMDMyRTs7OztOOzs7MUUyQTs7MUUyQQorMUUyQztMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggVElMREUgQkVMT1c7THU7MDtMOzAwNDkgMDMzMDs7OztOOzs7OzFFMkQ7CisxRTJEO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggVElMREUgQkVMT1c7TGw7MDtMOzAwNjkgMDMzMDs7OztOOzs7MUUyQzs7MUUyQworMUUyRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTIEFORCBBQ1VURTtMdTswO0w7MDBDRiAwMzAxOzs7O047Ozs7MUUyRjsKKzFFMkY7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMgQU5EIEFDVVRFO0xsOzA7TDswMEVGIDAzMDE7Ozs7Tjs7OzFFMkU7OzFFMkUKKzFFMzA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIEFDVVRFO0x1OzA7TDswMDRCIDAzMDE7Ozs7Tjs7OzsxRTMxOworMUUzMTtMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIEFDVVRFO0xsOzA7TDswMDZCIDAzMDE7Ozs7Tjs7OzFFMzA7OzFFMzAKKzFFMzI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0QiAwMzIzOzs7O047Ozs7MUUzMzsKKzFFMzM7TEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNkIgMDMyMzs7OztOOzs7MUUzMjs7MUUzMgorMUUzNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggTElORSBCRUxPVztMdTswO0w7MDA0QiAwMzMxOzs7O047Ozs7MUUzNTsKKzFFMzU7TEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBMSU5FIEJFTE9XO0xsOzA7TDswMDZCIDAzMzE7Ozs7Tjs7OzFFMzQ7OzFFMzQKKzFFMzY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0QyAwMzIzOzs7O047Ozs7MUUzNzsKKzFFMzc7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNkMgMDMyMzs7OztOOzs7MUUzNjs7MUUzNgorMUUzODtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggRE9UIEJFTE9XIEFORCBNQUNST047THU7MDtMOzFFMzYgMDMwNDs7OztOOzs7OzFFMzk7CisxRTM5O0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggRE9UIEJFTE9XIEFORCBNQUNST047TGw7MDtMOzFFMzcgMDMwNDs7OztOOzs7MUUzODs7MUUzOAorMUUzQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggTElORSBCRUxPVztMdTswO0w7MDA0QyAwMzMxOzs7O047Ozs7MUUzQjsKKzFFM0I7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBMSU5FIEJFTE9XO0xsOzA7TDswMDZDIDAzMzE7Ozs7Tjs7OzFFM0E7OzFFM0EKKzFFM0M7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENJUkNVTUZMRVggQkVMT1c7THU7MDtMOzAwNEMgMDMyRDs7OztOOzs7OzFFM0Q7CisxRTNEO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMbDswO0w7MDA2QyAwMzJEOzs7O047OzsxRTNDOzsxRTNDCisxRTNFO0xBVElOIENBUElUQUwgTEVUVEVSIE0gV0lUSCBBQ1VURTtMdTswO0w7MDA0RCAwMzAxOzs7O047Ozs7MUUzRjsKKzFFM0Y7TEFUSU4gU01BTEwgTEVUVEVSIE0gV0lUSCBBQ1VURTtMbDswO0w7MDA2RCAwMzAxOzs7O047OzsxRTNFOzsxRTNFCisxRTQwO0xBVElOIENBUElUQUwgTEVUVEVSIE0gV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNEQgMDMwNzs7OztOOzs7OzFFNDE7CisxRTQxO0xBVElOIFNNQUxMIExFVFRFUiBNIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDZEIDAzMDc7Ozs7Tjs7OzFFNDA7OzFFNDAKKzFFNDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTSBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0RCAwMzIzOzs7O047Ozs7MUU0MzsKKzFFNDM7TEFUSU4gU01BTEwgTEVUVEVSIE0gV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNkQgMDMyMzs7OztOOzs7MUU0Mjs7MUU0MgorMUU0NDtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDRFIDAzMDc7Ozs7Tjs7OzsxRTQ1OworMUU0NTtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2RSAwMzA3Ozs7O047OzsxRTQ0OzsxRTQ0CisxRTQ2O0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNEUgMDMyMzs7OztOOzs7OzFFNDc7CisxRTQ3O0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDZFIDAzMjM7Ozs7Tjs7OzFFNDY7OzFFNDYKKzFFNDg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIExJTkUgQkVMT1c7THU7MDtMOzAwNEUgMDMzMTs7OztOOzs7OzFFNDk7CisxRTQ5O0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA2RSAwMzMxOzs7O047OzsxRTQ4OzsxRTQ4CisxRTRBO0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0x1OzA7TDswMDRFIDAzMkQ7Ozs7Tjs7OzsxRTRCOworMUU0QjtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENJUkNVTUZMRVggQkVMT1c7TGw7MDtMOzAwNkUgMDMyRDs7OztOOzs7MUU0QTs7MUU0QQorMUU0QztMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUgQU5EIEFDVVRFO0x1OzA7TDswMEQ1IDAzMDE7Ozs7Tjs7OzsxRTREOworMUU0RDtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFIEFORCBBQ1VURTtMbDswO0w7MDBGNSAwMzAxOzs7O047OzsxRTRDOzsxRTRDCisxRTRFO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERSBBTkQgRElBRVJFU0lTO0x1OzA7TDswMEQ1IDAzMDg7Ozs7Tjs7OzsxRTRGOworMUU0RjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFIEFORCBESUFFUkVTSVM7TGw7MDtMOzAwRjUgMDMwODs7OztOOzs7MUU0RTs7MUU0RQorMUU1MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTUFDUk9OIEFORCBHUkFWRTtMdTswO0w7MDE0QyAwMzAwOzs7O047Ozs7MUU1MTsKKzFFNTE7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBNQUNST04gQU5EIEdSQVZFO0xsOzA7TDswMTREIDAzMDA7Ozs7Tjs7OzFFNTA7OzFFNTAKKzFFNTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIE1BQ1JPTiBBTkQgQUNVVEU7THU7MDtMOzAxNEMgMDMwMTs7OztOOzs7OzFFNTM7CisxRTUzO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggTUFDUk9OIEFORCBBQ1VURTtMbDswO0w7MDE0RCAwMzAxOzs7O047OzsxRTUyOzsxRTUyCisxRTU0O0xBVElOIENBUElUQUwgTEVUVEVSIFAgV0lUSCBBQ1VURTtMdTswO0w7MDA1MCAwMzAxOzs7O047Ozs7MUU1NTsKKzFFNTU7TEFUSU4gU01BTEwgTEVUVEVSIFAgV0lUSCBBQ1VURTtMbDswO0w7MDA3MCAwMzAxOzs7O047OzsxRTU0OzsxRTU0CisxRTU2O0xBVElOIENBUElUQUwgTEVUVEVSIFAgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNTAgMDMwNzs7OztOOzs7OzFFNTc7CisxRTU3O0xBVElOIFNNQUxMIExFVFRFUiBQIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDcwIDAzMDc7Ozs7Tjs7OzFFNTY7OzFFNTYKKzFFNTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA1MiAwMzA3Ozs7O047Ozs7MUU1OTsKKzFFNTk7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNzIgMDMwNzs7OztOOzs7MUU1ODs7MUU1OAorMUU1QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDUyIDAzMjM7Ozs7Tjs7OzsxRTVCOworMUU1QjtMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA3MiAwMzIzOzs7O047OzsxRTVBOzsxRTVBCisxRTVDO0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBET1QgQkVMT1cgQU5EIE1BQ1JPTjtMdTswO0w7MUU1QSAwMzA0Ozs7O047Ozs7MUU1RDsKKzFFNUQ7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBET1QgQkVMT1cgQU5EIE1BQ1JPTjtMbDswO0w7MUU1QiAwMzA0Ozs7O047OzsxRTVDOzsxRTVDCisxRTVFO0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBMSU5FIEJFTE9XO0x1OzA7TDswMDUyIDAzMzE7Ozs7Tjs7OzsxRTVGOworMUU1RjtMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIExJTkUgQkVMT1c7TGw7MDtMOzAwNzIgMDMzMTs7OztOOzs7MUU1RTs7MUU1RQorMUU2MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDUzIDAzMDc7Ozs7Tjs7OzsxRTYxOworMUU2MTtMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA3MyAwMzA3Ozs7O047OzsxRTYwOzsxRTYwCisxRTYyO0xBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNTMgMDMyMzs7OztOOzs7OzFFNjM7CisxRTYzO0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDczIDAzMjM7Ozs7Tjs7OzFFNjI7OzFFNjIKKzFFNjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIEFDVVRFIEFORCBET1QgQUJPVkU7THU7MDtMOzAxNUEgMDMwNzs7OztOOzs7OzFFNjU7CisxRTY1O0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQUNVVEUgQU5EIERPVCBBQk9WRTtMbDswO0w7MDE1QiAwMzA3Ozs7O047OzsxRTY0OzsxRTY0CisxRTY2O0xBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTiBBTkQgRE9UIEFCT1ZFO0x1OzA7TDswMTYwIDAzMDc7Ozs7Tjs7OzsxRTY3OworMUU2NztMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OIEFORCBET1QgQUJPVkU7TGw7MDtMOzAxNjEgMDMwNzs7OztOOzs7MUU2Njs7MUU2NgorMUU2ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggRE9UIEJFTE9XIEFORCBET1QgQUJPVkU7THU7MDtMOzFFNjIgMDMwNzs7OztOOzs7OzFFNjk7CisxRTY5O0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggRE9UIEJFTE9XIEFORCBET1QgQUJPVkU7TGw7MDtMOzFFNjMgMDMwNzs7OztOOzs7MUU2ODs7MUU2OAorMUU2QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDU0IDAzMDc7Ozs7Tjs7OzsxRTZCOworMUU2QjtMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA3NCAwMzA3Ozs7O047OzsxRTZBOzsxRTZBCisxRTZDO0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNTQgMDMyMzs7OztOOzs7OzFFNkQ7CisxRTZEO0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDc0IDAzMjM7Ozs7Tjs7OzFFNkM7OzFFNkMKKzFFNkU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIExJTkUgQkVMT1c7THU7MDtMOzAwNTQgMDMzMTs7OztOOzs7OzFFNkY7CisxRTZGO0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA3NCAwMzMxOzs7O047OzsxRTZFOzsxRTZFCisxRTcwO0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0x1OzA7TDswMDU0IDAzMkQ7Ozs7Tjs7OzsxRTcxOworMUU3MTtMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIENJUkNVTUZMRVggQkVMT1c7TGw7MDtMOzAwNzQgMDMyRDs7OztOOzs7MUU3MDs7MUU3MAorMUU3MjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEJFTE9XO0x1OzA7TDswMDU1IDAzMjQ7Ozs7Tjs7OzsxRTczOworMUU3MztMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBCRUxPVztMbDswO0w7MDA3NSAwMzI0Ozs7O047OzsxRTcyOzsxRTcyCisxRTc0O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBUSUxERSBCRUxPVztMdTswO0w7MDA1NSAwMzMwOzs7O047Ozs7MUU3NTsKKzFFNzU7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBUSUxERSBCRUxPVztMbDswO0w7MDA3NSAwMzMwOzs7O047OzsxRTc0OzsxRTc0CisxRTc2O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0x1OzA7TDswMDU1IDAzMkQ7Ozs7Tjs7OzsxRTc3OworMUU3NztMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVggQkVMT1c7TGw7MDtMOzAwNzUgMDMyRDs7OztOOzs7MUU3Njs7MUU3NgorMUU3ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggVElMREUgQU5EIEFDVVRFO0x1OzA7TDswMTY4IDAzMDE7Ozs7Tjs7OzsxRTc5OworMUU3OTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIFRJTERFIEFORCBBQ1VURTtMbDswO0w7MDE2OSAwMzAxOzs7O047OzsxRTc4OzsxRTc4CisxRTdBO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST04gQU5EIERJQUVSRVNJUztMdTswO0w7MDE2QSAwMzA4Ozs7O047Ozs7MUU3QjsKKzFFN0I7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST04gQU5EIERJQUVSRVNJUztMbDswO0w7MDE2QiAwMzA4Ozs7O047OzsxRTdBOzsxRTdBCisxRTdDO0xBVElOIENBUElUQUwgTEVUVEVSIFYgV0lUSCBUSUxERTtMdTswO0w7MDA1NiAwMzAzOzs7O047Ozs7MUU3RDsKKzFFN0Q7TEFUSU4gU01BTEwgTEVUVEVSIFYgV0lUSCBUSUxERTtMbDswO0w7MDA3NiAwMzAzOzs7O047OzsxRTdDOzsxRTdDCisxRTdFO0xBVElOIENBUElUQUwgTEVUVEVSIFYgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNTYgMDMyMzs7OztOOzs7OzFFN0Y7CisxRTdGO0xBVElOIFNNQUxMIExFVFRFUiBWIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDc2IDAzMjM7Ozs7Tjs7OzFFN0U7OzFFN0UKKzFFODA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIEdSQVZFO0x1OzA7TDswMDU3IDAzMDA7Ozs7Tjs7OzsxRTgxOworMUU4MTtMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIEdSQVZFO0xsOzA7TDswMDc3IDAzMDA7Ozs7Tjs7OzFFODA7OzFFODAKKzFFODI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIEFDVVRFO0x1OzA7TDswMDU3IDAzMDE7Ozs7Tjs7OzsxRTgzOworMUU4MztMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIEFDVVRFO0xsOzA7TDswMDc3IDAzMDE7Ozs7Tjs7OzFFODI7OzFFODIKKzFFODQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIERJQUVSRVNJUztMdTswO0w7MDA1NyAwMzA4Ozs7O047Ozs7MUU4NTsKKzFFODU7TEFUSU4gU01BTEwgTEVUVEVSIFcgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzAwNzcgMDMwODs7OztOOzs7MUU4NDs7MUU4NAorMUU4NjtMQVRJTiBDQVBJVEFMIExFVFRFUiBXIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDU3IDAzMDc7Ozs7Tjs7OzsxRTg3OworMUU4NztMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA3NyAwMzA3Ozs7O047OzsxRTg2OzsxRTg2CisxRTg4O0xBVElOIENBUElUQUwgTEVUVEVSIFcgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNTcgMDMyMzs7OztOOzs7OzFFODk7CisxRTg5O0xBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDc3IDAzMjM7Ozs7Tjs7OzFFODg7OzFFODgKKzFFOEE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWCBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA1OCAwMzA3Ozs7O047Ozs7MUU4QjsKKzFFOEI7TEFUSU4gU01BTEwgTEVUVEVSIFggV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNzggMDMwNzs7OztOOzs7MUU4QTs7MUU4QQorMUU4QztMQVRJTiBDQVBJVEFMIExFVFRFUiBYIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDU4IDAzMDg7Ozs7Tjs7OzsxRThEOworMUU4RDtMQVRJTiBTTUFMTCBMRVRURVIgWCBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA3OCAwMzA4Ozs7O047OzsxRThDOzsxRThDCisxRThFO0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNTkgMDMwNzs7OztOOzs7OzFFOEY7CisxRThGO0xBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDc5IDAzMDc7Ozs7Tjs7OzFFOEU7OzFFOEUKKzFFOTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNUEgMDMwMjs7OztOOzs7OzFFOTE7CisxRTkxO0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA3QSAwMzAyOzs7O047OzsxRTkwOzsxRTkwCisxRTkyO0xBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNUEgMDMyMzs7OztOOzs7OzFFOTM7CisxRTkzO0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDdBIDAzMjM7Ozs7Tjs7OzFFOTI7OzFFOTIKKzFFOTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIExJTkUgQkVMT1c7THU7MDtMOzAwNUEgMDMzMTs7OztOOzs7OzFFOTU7CisxRTk1O0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA3QSAwMzMxOzs7O047OzsxRTk0OzsxRTk0CisxRTk2O0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA2OCAwMzMxOzs7O047Ozs7OworMUU5NztMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA3NCAwMzA4Ozs7O047Ozs7OworMUU5ODtMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIFJJTkcgQUJPVkU7TGw7MDtMOzAwNzcgMDMwQTs7OztOOzs7OzsKKzFFOTk7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBSSU5HIEFCT1ZFO0xsOzA7TDswMDc5IDAzMEE7Ozs7Tjs7Ozs7CisxRTlBO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklHSFQgSEFMRiBSSU5HO0xsOzA7TDs7Ozs7Tjs7Ozs7CisxRTlCO0xBVElOIFNNQUxMIExFVFRFUiBMT05HIFMgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAxN0YgMDMwNzs7OztOOzs7MUU2MDs7MUU2MAorMUVBMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDQxIDAzMjM7Ozs7Tjs7OzsxRUExOworMUVBMTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA2MSAwMzIzOzs7O047OzsxRUEwOzsxRUEwCisxRUEyO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBIT09LIEFCT1ZFO0x1OzA7TDswMDQxIDAzMDk7Ozs7Tjs7OzsxRUEzOworMUVBMztMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEhPT0sgQUJPVkU7TGw7MDtMOzAwNjEgMDMwOTs7OztOOzs7MUVBMjs7MUVBMgorMUVBNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgQUNVVEU7THU7MDtMOzAwQzIgMDMwMTs7OztOOzs7OzFFQTU7CisxRUE1O0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgQUNVVEU7TGw7MDtMOzAwRTIgMDMwMTs7OztOOzs7MUVBNDs7MUVBNAorMUVBNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgR1JBVkU7THU7MDtMOzAwQzIgMDMwMDs7OztOOzs7OzFFQTc7CisxRUE3O0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgR1JBVkU7TGw7MDtMOzAwRTIgMDMwMDs7OztOOzs7MUVBNjs7MUVBNgorMUVBODtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgSE9PSyBBQk9WRTtMdTswO0w7MDBDMiAwMzA5Ozs7O047Ozs7MUVBOTsKKzFFQTk7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBIT09LIEFCT1ZFO0xsOzA7TDswMEUyIDAzMDk7Ozs7Tjs7OzFFQTg7OzFFQTgKKzFFQUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIFRJTERFO0x1OzA7TDswMEMyIDAzMDM7Ozs7Tjs7OzsxRUFCOworMUVBQjtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIFRJTERFO0xsOzA7TDswMEUyIDAzMDM7Ozs7Tjs7OzFFQUE7OzFFQUEKKzFFQUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIERPVCBCRUxPVztMdTswO0w7MDBDMiAwMzIzOzs7O047Ozs7MUVBRDsKKzFFQUQ7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBET1QgQkVMT1c7TGw7MDtMOzAwRTIgMDMyMzs7OztOOzs7MUVBQzs7MUVBQworMUVBRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIEFDVVRFO0x1OzA7TDswMTAyIDAzMDE7Ozs7Tjs7OzsxRUFGOworMUVBRjtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBBQ1VURTtMbDswO0w7MDEwMyAwMzAxOzs7O047OzsxRUFFOzsxRUFFCisxRUIwO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgR1JBVkU7THU7MDtMOzAxMDIgMDMwMDs7OztOOzs7OzFFQjE7CisxRUIxO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIEdSQVZFO0xsOzA7TDswMTAzIDAzMDA7Ozs7Tjs7OzFFQjA7OzFFQjAKKzFFQjI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBIT09LIEFCT1ZFO0x1OzA7TDswMTAyIDAzMDk7Ozs7Tjs7OzsxRUIzOworMUVCMztMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBIT09LIEFCT1ZFO0xsOzA7TDswMTAzIDAzMDk7Ozs7Tjs7OzFFQjI7OzFFQjIKKzFFQjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBUSUxERTtMdTswO0w7MDEwMiAwMzAzOzs7O047Ozs7MUVCNTsKKzFFQjU7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgVElMREU7TGw7MDtMOzAxMDMgMDMwMzs7OztOOzs7MUVCNDs7MUVCNAorMUVCNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIERPVCBCRUxPVztMdTswO0w7MDEwMiAwMzIzOzs7O047Ozs7MUVCNzsKKzFFQjc7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgRE9UIEJFTE9XO0xsOzA7TDswMTAzIDAzMjM7Ozs7Tjs7OzFFQjY7OzFFQjYKKzFFQjg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0NSAwMzIzOzs7O047Ozs7MUVCOTsKKzFFQjk7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNjUgMDMyMzs7OztOOzs7MUVCODs7MUVCOAorMUVCQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggSE9PSyBBQk9WRTtMdTswO0w7MDA0NSAwMzA5Ozs7O047Ozs7MUVCQjsKKzFFQkI7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBIT09LIEFCT1ZFO0xsOzA7TDswMDY1IDAzMDk7Ozs7Tjs7OzFFQkE7OzFFQkEKKzFFQkM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIFRJTERFO0x1OzA7TDswMDQ1IDAzMDM7Ozs7Tjs7OzsxRUJEOworMUVCRDtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIFRJTERFO0xsOzA7TDswMDY1IDAzMDM7Ozs7Tjs7OzFFQkM7OzFFQkMKKzFFQkU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFO0x1OzA7TDswMENBIDAzMDE7Ozs7Tjs7OzsxRUJGOworMUVCRjtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFO0xsOzA7TDswMEVBIDAzMDE7Ozs7Tjs7OzFFQkU7OzFFQkUKKzFFQzA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFO0x1OzA7TDswMENBIDAzMDA7Ozs7Tjs7OzsxRUMxOworMUVDMTtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFO0xsOzA7TDswMEVBIDAzMDA7Ozs7Tjs7OzFFQzA7OzFFQzAKKzFFQzI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEhPT0sgQUJPVkU7THU7MDtMOzAwQ0EgMDMwOTs7OztOOzs7OzFFQzM7CisxRUMzO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgSE9PSyBBQk9WRTtMbDswO0w7MDBFQSAwMzA5Ozs7O047OzsxRUMyOzsxRUMyCisxRUM0O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERTtMdTswO0w7MDBDQSAwMzAzOzs7O047Ozs7MUVDNTsKKzFFQzU7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERTtMbDswO0w7MDBFQSAwMzAzOzs7O047OzsxRUM0OzsxRUM0CisxRUM2O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBET1QgQkVMT1c7THU7MDtMOzAwQ0EgMDMyMzs7OztOOzs7OzFFQzc7CisxRUM3O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgRE9UIEJFTE9XO0xsOzA7TDswMEVBIDAzMjM7Ozs7Tjs7OzFFQzY7OzFFQzYKKzFFQzg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEhPT0sgQUJPVkU7THU7MDtMOzAwNDkgMDMwOTs7OztOOzs7OzFFQzk7CisxRUM5O0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggSE9PSyBBQk9WRTtMbDswO0w7MDA2OSAwMzA5Ozs7O047OzsxRUM4OzsxRUM4CisxRUNBO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNDkgMDMyMzs7OztOOzs7OzFFQ0I7CisxRUNCO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDY5IDAzMjM7Ozs7Tjs7OzFFQ0E7OzFFQ0EKKzFFQ0M7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0RiAwMzIzOzs7O047Ozs7MUVDRDsKKzFFQ0Q7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNkYgMDMyMzs7OztOOzs7MUVDQzs7MUVDQworMUVDRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggSE9PSyBBQk9WRTtMdTswO0w7MDA0RiAwMzA5Ozs7O047Ozs7MUVDRjsKKzFFQ0Y7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBIT09LIEFCT1ZFO0xsOzA7TDswMDZGIDAzMDk7Ozs7Tjs7OzFFQ0U7OzFFQ0UKKzFFRDA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFO0x1OzA7TDswMEQ0IDAzMDE7Ozs7Tjs7OzsxRUQxOworMUVEMTtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFO0xsOzA7TDswMEY0IDAzMDE7Ozs7Tjs7OzFFRDA7OzFFRDAKKzFFRDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFO0x1OzA7TDswMEQ0IDAzMDA7Ozs7Tjs7OzsxRUQzOworMUVEMztMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFO0xsOzA7TDswMEY0IDAzMDA7Ozs7Tjs7OzFFRDI7OzFFRDIKKzFFRDQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEhPT0sgQUJPVkU7THU7MDtMOzAwRDQgMDMwOTs7OztOOzs7OzFFRDU7CisxRUQ1O0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgSE9PSyBBQk9WRTtMbDswO0w7MDBGNCAwMzA5Ozs7O047OzsxRUQ0OzsxRUQ0CisxRUQ2O0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERTtMdTswO0w7MDBENCAwMzAzOzs7O047Ozs7MUVENzsKKzFFRDc7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERTtMbDswO0w7MDBGNCAwMzAzOzs7O047OzsxRUQ2OzsxRUQ2CisxRUQ4O0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBET1QgQkVMT1c7THU7MDtMOzAwRDQgMDMyMzs7OztOOzs7OzFFRDk7CisxRUQ5O0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgRE9UIEJFTE9XO0xsOzA7TDswMEY0IDAzMjM7Ozs7Tjs7OzFFRDg7OzFFRDgKKzFFREE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEFDVVRFO0x1OzA7TDswMUEwIDAzMDE7Ozs7Tjs7OzsxRURCOworMUVEQjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEFDVVRFO0xsOzA7TDswMUExIDAzMDE7Ozs7Tjs7OzFFREE7OzFFREEKKzFFREM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEdSQVZFO0x1OzA7TDswMUEwIDAzMDA7Ozs7Tjs7OzsxRUREOworMUVERDtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEdSQVZFO0xsOzA7TDswMUExIDAzMDA7Ozs7Tjs7OzFFREM7OzFFREMKKzFFREU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEhPT0sgQUJPVkU7THU7MDtMOzAxQTAgMDMwOTs7OztOOzs7OzFFREY7CisxRURGO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgSE9PSyBBQk9WRTtMbDswO0w7MDFBMSAwMzA5Ozs7O047OzsxRURFOzsxRURFCisxRUUwO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBUSUxERTtMdTswO0w7MDFBMCAwMzAzOzs7O047Ozs7MUVFMTsKKzFFRTE7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBUSUxERTtMbDswO0w7MDFBMSAwMzAzOzs7O047OzsxRUUwOzsxRUUwCisxRUUyO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBET1QgQkVMT1c7THU7MDtMOzAxQTAgMDMyMzs7OztOOzs7OzFFRTM7CisxRUUzO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgRE9UIEJFTE9XO0xsOzA7TDswMUExIDAzMjM7Ozs7Tjs7OzFFRTI7OzFFRTIKKzFFRTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA1NSAwMzIzOzs7O047Ozs7MUVFNTsKKzFFRTU7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNzUgMDMyMzs7OztOOzs7MUVFNDs7MUVFNAorMUVFNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9PSyBBQk9WRTtMdTswO0w7MDA1NSAwMzA5Ozs7O047Ozs7MUVFNzsKKzFFRTc7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT09LIEFCT1ZFO0xsOzA7TDswMDc1IDAzMDk7Ozs7Tjs7OzFFRTY7OzFFRTYKKzFFRTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEFDVVRFO0x1OzA7TDswMUFGIDAzMDE7Ozs7Tjs7OzsxRUU5OworMUVFOTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEFDVVRFO0xsOzA7TDswMUIwIDAzMDE7Ozs7Tjs7OzFFRTg7OzFFRTgKKzFFRUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEdSQVZFO0x1OzA7TDswMUFGIDAzMDA7Ozs7Tjs7OzsxRUVCOworMUVFQjtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEdSQVZFO0xsOzA7TDswMUIwIDAzMDA7Ozs7Tjs7OzFFRUE7OzFFRUEKKzFFRUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEhPT0sgQUJPVkU7THU7MDtMOzAxQUYgMDMwOTs7OztOOzs7OzFFRUQ7CisxRUVEO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgSE9PSyBBQk9WRTtMbDswO0w7MDFCMCAwMzA5Ozs7O047OzsxRUVDOzsxRUVDCisxRUVFO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBUSUxERTtMdTswO0w7MDFBRiAwMzAzOzs7O047Ozs7MUVFRjsKKzFFRUY7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBUSUxERTtMbDswO0w7MDFCMCAwMzAzOzs7O047OzsxRUVFOzsxRUVFCisxRUYwO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBET1QgQkVMT1c7THU7MDtMOzAxQUYgMDMyMzs7OztOOzs7OzFFRjE7CisxRUYxO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgRE9UIEJFTE9XO0xsOzA7TDswMUIwIDAzMjM7Ozs7Tjs7OzFFRjA7OzFFRjAKKzFFRjI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEdSQVZFO0x1OzA7TDswMDU5IDAzMDA7Ozs7Tjs7OzsxRUYzOworMUVGMztMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEdSQVZFO0xsOzA7TDswMDc5IDAzMDA7Ozs7Tjs7OzFFRjI7OzFFRjIKKzFFRjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA1OSAwMzIzOzs7O047Ozs7MUVGNTsKKzFFRjU7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNzkgMDMyMzs7OztOOzs7MUVGNDs7MUVGNAorMUVGNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggSE9PSyBBQk9WRTtMdTswO0w7MDA1OSAwMzA5Ozs7O047Ozs7MUVGNzsKKzFFRjc7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBIT09LIEFCT1ZFO0xsOzA7TDswMDc5IDAzMDk7Ozs7Tjs7OzFFRjY7OzFFRjYKKzFFRjg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIFRJTERFO0x1OzA7TDswMDU5IDAzMDM7Ozs7Tjs7OzsxRUY5OworMUVGOTtMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIFRJTERFO0xsOzA7TDswMDc5IDAzMDM7Ozs7Tjs7OzFFRjg7OzFFRjgKKzFGMDA7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEk7TGw7MDtMOzAzQjEgMDMxMzs7OztOOzs7MUYwODs7MUYwOAorMUYwMTtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQTtMbDswO0w7MDNCMSAwMzE0Ozs7O047OzsxRjA5OzsxRjA5CisxRjAyO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBWQVJJQTtMbDswO0w7MUYwMCAwMzAwOzs7O047OzsxRjBBOzsxRjBBCisxRjAzO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBWQVJJQTtMbDswO0w7MUYwMSAwMzAwOzs7O047OzsxRjBCOzsxRjBCCisxRjA0O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBPWElBO0xsOzA7TDsxRjAwIDAzMDE7Ozs7Tjs7OzFGMEM7OzFGMEMKKzFGMDU7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIE9YSUE7TGw7MDtMOzFGMDEgMDMwMTs7OztOOzs7MUYwRDs7MUYwRAorMUYwNjtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGMDAgMDM0Mjs7OztOOzs7MUYwRTs7MUYwRQorMUYwNztHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGMDEgMDM0Mjs7OztOOzs7MUYwRjs7MUYwRgorMUYwODtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJO0x1OzA7TDswMzkxIDAzMTM7Ozs7Tjs7OzsxRjAwOworMUYwOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBO0x1OzA7TDswMzkxIDAzMTQ7Ozs7Tjs7OzsxRjAxOworMUYwQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBWQVJJQTtMdTswO0w7MUYwOCAwMzAwOzs7O047Ozs7MUYwMjsKKzFGMEI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgVkFSSUE7THU7MDtMOzFGMDkgMDMwMDs7OztOOzs7OzFGMDM7CisxRjBDO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIE9YSUE7THU7MDtMOzFGMDggMDMwMTs7OztOOzs7OzFGMDQ7CisxRjBEO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGMDkgMDMwMTs7OztOOzs7OzFGMDU7CisxRjBFO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0x1OzA7TDsxRjA4IDAzNDI7Ozs7Tjs7OzsxRjA2OworMUYwRjtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSTtMdTswO0w7MUYwOSAwMzQyOzs7O047Ozs7MUYwNzsKKzFGMTA7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBQU0lMSTtMbDswO0w7MDNCNSAwMzEzOzs7O047OzsxRjE4OzsxRjE4CisxRjExO0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUE7TGw7MDtMOzAzQjUgMDMxNDs7OztOOzs7MUYxOTs7MUYxOQorMUYxMjtHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIFBTSUxJIEFORCBWQVJJQTtMbDswO0w7MUYxMCAwMzAwOzs7O047OzsxRjFBOzsxRjFBCisxRjEzO0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUEgQU5EIFZBUklBO0xsOzA7TDsxRjExIDAzMDA7Ozs7Tjs7OzFGMUI7OzFGMUIKKzFGMTQ7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBQU0lMSSBBTkQgT1hJQTtMbDswO0w7MUYxMCAwMzAxOzs7O047OzsxRjFDOzsxRjFDCisxRjE1O0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUEgQU5EIE9YSUE7TGw7MDtMOzFGMTEgMDMwMTs7OztOOzs7MUYxRDs7MUYxRAorMUYxODtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggUFNJTEk7THU7MDtMOzAzOTUgMDMxMzs7OztOOzs7OzFGMTA7CisxRjE5O0dSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBEQVNJQTtMdTswO0w7MDM5NSAwMzE0Ozs7O047Ozs7MUYxMTsKKzFGMUE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIFBTSUxJIEFORCBWQVJJQTtMdTswO0w7MUYxOCAwMzAwOzs7O047Ozs7MUYxMjsKKzFGMUI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIERBU0lBIEFORCBWQVJJQTtMdTswO0w7MUYxOSAwMzAwOzs7O047Ozs7MUYxMzsKKzFGMUM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIFBTSUxJIEFORCBPWElBO0x1OzA7TDsxRjE4IDAzMDE7Ozs7Tjs7OzsxRjE0OworMUYxRDtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGMTkgMDMwMTs7OztOOzs7OzFGMTU7CisxRjIwO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSTtMbDswO0w7MDNCNyAwMzEzOzs7O047OzsxRjI4OzsxRjI4CisxRjIxO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQTtMbDswO0w7MDNCNyAwMzE0Ozs7O047OzsxRjI5OzsxRjI5CisxRjIyO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgVkFSSUE7TGw7MDtMOzFGMjAgMDMwMDs7OztOOzs7MUYyQTs7MUYyQQorMUYyMztHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFZBUklBO0xsOzA7TDsxRjIxIDAzMDA7Ozs7Tjs7OzFGMkI7OzFGMkIKKzFGMjQ7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBPWElBO0xsOzA7TDsxRjIwIDAzMDE7Ozs7Tjs7OzFGMkM7OzFGMkMKKzFGMjU7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBPWElBO0xsOzA7TDsxRjIxIDAzMDE7Ozs7Tjs7OzFGMkQ7OzFGMkQKKzFGMjY7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtMbDswO0w7MUYyMCAwMzQyOzs7O047OzsxRjJFOzsxRjJFCisxRjI3O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGMjEgMDM0Mjs7OztOOzs7MUYyRjs7MUYyRgorMUYyODtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSTtMdTswO0w7MDM5NyAwMzEzOzs7O047Ozs7MUYyMDsKKzFGMjk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUE7THU7MDtMOzAzOTcgMDMxNDs7OztOOzs7OzFGMjE7CisxRjJBO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBWQVJJQTtMdTswO0w7MUYyOCAwMzAwOzs7O047Ozs7MUYyMjsKKzFGMkI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFZBUklBO0x1OzA7TDsxRjI5IDAzMDA7Ozs7Tjs7OzsxRjIzOworMUYyQztHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgT1hJQTtMdTswO0w7MUYyOCAwMzAxOzs7O047Ozs7MUYyNDsKKzFGMkQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGMjkgMDMwMTs7OztOOzs7OzFGMjU7CisxRjJFO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtMdTswO0w7MUYyOCAwMzQyOzs7O047Ozs7MUYyNjsKKzFGMkY7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JO0x1OzA7TDsxRjI5IDAzNDI7Ozs7Tjs7OzsxRjI3OworMUYzMDtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJO0xsOzA7TDswM0I5IDAzMTM7Ozs7Tjs7OzFGMzg7OzFGMzgKKzFGMzE7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQTtMbDswO0w7MDNCOSAwMzE0Ozs7O047OzsxRjM5OzsxRjM5CisxRjMyO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggUFNJTEkgQU5EIFZBUklBO0xsOzA7TDsxRjMwIDAzMDA7Ozs7Tjs7OzFGM0E7OzFGM0EKKzFGMzM7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgVkFSSUE7TGw7MDtMOzFGMzEgMDMwMDs7OztOOzs7MUYzQjs7MUYzQgorMUYzNDtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJIEFORCBPWElBO0xsOzA7TDsxRjMwIDAzMDE7Ozs7Tjs7OzFGM0M7OzFGM0MKKzFGMzU7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgT1hJQTtMbDswO0w7MUYzMSAwMzAxOzs7O047OzsxRjNEOzsxRjNECisxRjM2O0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjMwIDAzNDI7Ozs7Tjs7OzFGM0U7OzFGM0UKKzFGMzc7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGMzEgMDM0Mjs7OztOOzs7MUYzRjs7MUYzRgorMUYzODtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggUFNJTEk7THU7MDtMOzAzOTkgMDMxMzs7OztOOzs7OzFGMzA7CisxRjM5O0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQTtMdTswO0w7MDM5OSAwMzE0Ozs7O047Ozs7MUYzMTsKKzFGM0E7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJIEFORCBWQVJJQTtMdTswO0w7MUYzOCAwMzAwOzs7O047Ozs7MUYzMjsKKzFGM0I7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIERBU0lBIEFORCBWQVJJQTtMdTswO0w7MUYzOSAwMzAwOzs7O047Ozs7MUYzMzsKKzFGM0M7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJIEFORCBPWElBO0x1OzA7TDsxRjM4IDAzMDE7Ozs7Tjs7OzsxRjM0OworMUYzRDtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGMzkgMDMwMTs7OztOOzs7OzFGMzU7CisxRjNFO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGMzggMDM0Mjs7OztOOzs7OzFGMzY7CisxRjNGO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGMzkgMDM0Mjs7OztOOzs7OzFGMzc7CisxRjQwO0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggUFNJTEk7TGw7MDtMOzAzQkYgMDMxMzs7OztOOzs7MUY0ODs7MUY0OAorMUY0MTtHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBO0xsOzA7TDswM0JGIDAzMTQ7Ozs7Tjs7OzFGNDk7OzFGNDkKKzFGNDI7R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBQU0lMSSBBTkQgVkFSSUE7TGw7MDtMOzFGNDAgMDMwMDs7OztOOzs7MUY0QTs7MUY0QQorMUY0MztHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBIEFORCBWQVJJQTtMbDswO0w7MUY0MSAwMzAwOzs7O047OzsxRjRCOzsxRjRCCisxRjQ0O0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggUFNJTEkgQU5EIE9YSUE7TGw7MDtMOzFGNDAgMDMwMTs7OztOOzs7MUY0Qzs7MUY0QworMUY0NTtHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBIEFORCBPWElBO0xsOzA7TDsxRjQxIDAzMDE7Ozs7Tjs7OzFGNEQ7OzFGNEQKKzFGNDg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIFBTSUxJO0x1OzA7TDswMzlGIDAzMTM7Ozs7Tjs7OzsxRjQwOworMUY0OTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggREFTSUE7THU7MDtMOzAzOUYgMDMxNDs7OztOOzs7OzFGNDE7CisxRjRBO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBQU0lMSSBBTkQgVkFSSUE7THU7MDtMOzFGNDggMDMwMDs7OztOOzs7OzFGNDI7CisxRjRCO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBEQVNJQSBBTkQgVkFSSUE7THU7MDtMOzFGNDkgMDMwMDs7OztOOzs7OzFGNDM7CisxRjRDO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBQU0lMSSBBTkQgT1hJQTtMdTswO0w7MUY0OCAwMzAxOzs7O047Ozs7MUY0NDsKKzFGNEQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBIEFORCBPWElBO0x1OzA7TDsxRjQ5IDAzMDE7Ozs7Tjs7OzsxRjQ1OworMUY1MDtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBTSUxJO0xsOzA7TDswM0M1IDAzMTM7Ozs7Tjs7Ozs7CisxRjUxO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUE7TGw7MDtMOzAzQzUgMDMxNDs7OztOOzs7MUY1OTs7MUY1OQorMUY1MjtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBTSUxJIEFORCBWQVJJQTtMbDswO0w7MUY1MCAwMzAwOzs7O047Ozs7OworMUY1MztHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERBU0lBIEFORCBWQVJJQTtMbDswO0w7MUY1MSAwMzAwOzs7O047OzsxRjVCOzsxRjVCCisxRjU0O0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggUFNJTEkgQU5EIE9YSUE7TGw7MDtMOzFGNTAgMDMwMTs7OztOOzs7OzsKKzFGNTU7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBEQVNJQSBBTkQgT1hJQTtMbDswO0w7MUY1MSAwMzAxOzs7O047OzsxRjVEOzsxRjVECisxRjU2O0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjUwIDAzNDI7Ozs7Tjs7Ozs7CisxRjU3O0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjUxIDAzNDI7Ozs7Tjs7OzFGNUY7OzFGNUYKKzFGNTk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIERBU0lBO0x1OzA7TDswM0E1IDAzMTQ7Ozs7Tjs7OzsxRjUxOworMUY1QjtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIFZBUklBO0x1OzA7TDsxRjU5IDAzMDA7Ozs7Tjs7OzsxRjUzOworMUY1RDtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGNTkgMDMwMTs7OztOOzs7OzFGNTU7CisxRjVGO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGNTkgMDM0Mjs7OztOOzs7OzFGNTc7CisxRjYwO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJO0xsOzA7TDswM0M5IDAzMTM7Ozs7Tjs7OzFGNjg7OzFGNjgKKzFGNjE7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUE7TGw7MDtMOzAzQzkgMDMxNDs7OztOOzs7MUY2OTs7MUY2OQorMUY2MjtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgVkFSSUE7TGw7MDtMOzFGNjAgMDMwMDs7OztOOzs7MUY2QTs7MUY2QQorMUY2MztHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgVkFSSUE7TGw7MDtMOzFGNjEgMDMwMDs7OztOOzs7MUY2Qjs7MUY2QgorMUY2NDtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgT1hJQTtMbDswO0w7MUY2MCAwMzAxOzs7O047OzsxRjZDOzsxRjZDCisxRjY1O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBPWElBO0xsOzA7TDsxRjYxIDAzMDE7Ozs7Tjs7OzFGNkQ7OzFGNkQKKzFGNjY7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjYwIDAzNDI7Ozs7Tjs7OzFGNkU7OzFGNkUKKzFGNjc7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjYxIDAzNDI7Ozs7Tjs7OzFGNkY7OzFGNkYKKzFGNjg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSTtMdTswO0w7MDNBOSAwMzEzOzs7O047Ozs7MUY2MDsKKzFGNjk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQTtMdTswO0w7MDNBOSAwMzE0Ozs7O047Ozs7MUY2MTsKKzFGNkE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgVkFSSUE7THU7MDtMOzFGNjggMDMwMDs7OztOOzs7OzFGNjI7CisxRjZCO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFZBUklBO0x1OzA7TDsxRjY5IDAzMDA7Ozs7Tjs7OzsxRjYzOworMUY2QztHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBPWElBO0x1OzA7TDsxRjY4IDAzMDE7Ozs7Tjs7OzsxRjY0OworMUY2RDtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBPWElBO0x1OzA7TDsxRjY5IDAzMDE7Ozs7Tjs7OzsxRjY1OworMUY2RTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtMdTswO0w7MUY2OCAwMzQyOzs7O047Ozs7MUY2NjsKKzFGNkY7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGNjkgMDM0Mjs7OztOOzs7OzFGNjc7CisxRjcwO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFZBUklBO0xsOzA7TDswM0IxIDAzMDA7Ozs7Tjs7OzFGQkE7OzFGQkEKKzFGNzE7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggT1hJQTtMbDswO0w7MDNCMSAwMzAxOzs7O047OzsxRkJCOzsxRkJCCisxRjcyO0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggVkFSSUE7TGw7MDtMOzAzQjUgMDMwMDs7OztOOzs7MUZDODs7MUZDOAorMUY3MztHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIE9YSUE7TGw7MDtMOzAzQjUgMDMwMTs7OztOOzs7MUZDOTs7MUZDOQorMUY3NDtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggVkFSSUE7TGw7MDtMOzAzQjcgMDMwMDs7OztOOzs7MUZDQTs7MUZDQQorMUY3NTtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggT1hJQTtMbDswO0w7MDNCNyAwMzAxOzs7O047OzsxRkNCOzsxRkNCCisxRjc2O0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggVkFSSUE7TGw7MDtMOzAzQjkgMDMwMDs7OztOOzs7MUZEQTs7MUZEQQorMUY3NztHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIE9YSUE7TGw7MDtMOzAzQjkgMDMwMTs7OztOOzs7MUZEQjs7MUZEQgorMUY3ODtHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIFZBUklBO0xsOzA7TDswM0JGIDAzMDA7Ozs7Tjs7OzFGRjg7OzFGRjgKKzFGNzk7R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBPWElBO0xsOzA7TDswM0JGIDAzMDE7Ozs7Tjs7OzFGRjk7OzFGRjkKKzFGN0E7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBWQVJJQTtMbDswO0w7MDNDNSAwMzAwOzs7O047OzsxRkVBOzsxRkVBCisxRjdCO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggT1hJQTtMbDswO0w7MDNDNSAwMzAxOzs7O047OzsxRkVCOzsxRkVCCisxRjdDO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFZBUklBO0xsOzA7TDswM0M5IDAzMDA7Ozs7Tjs7OzFGRkE7OzFGRkEKKzFGN0Q7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggT1hJQTtMbDswO0w7MDNDOSAwMzAxOzs7O047OzsxRkZCOzsxRkZCCisxRjgwO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjAwIDAzNDU7Ozs7Tjs7OzFGODg7OzFGODgKKzFGODE7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMDEgMDM0NTs7OztOOzs7MUY4OTs7MUY4OQorMUY4MjtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMDIgMDM0NTs7OztOOzs7MUY4QTs7MUY4QQorMUY4MztHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMDMgMDM0NTs7OztOOzs7MUY4Qjs7MUY4QgorMUY4NDtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYwNCAwMzQ1Ozs7O047OzsxRjhDOzsxRjhDCisxRjg1O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjA1IDAzNDU7Ozs7Tjs7OzFGOEQ7OzFGOEQKKzFGODY7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjA2IDAzNDU7Ozs7Tjs7OzFGOEU7OzFGOEUKKzFGODc7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjA3IDAzNDU7Ozs7Tjs7OzFGOEY7OzFGOEYKKzFGODg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGMDggMDM0NTs7OztOOzs7OzFGODA7CisxRjg5O0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjA5IDAzNDU7Ozs7Tjs7OzsxRjgxOworMUY4QTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGMEEgMDM0NTs7OztOOzs7OzFGODI7CisxRjhCO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUYwQiAwMzQ1Ozs7O047Ozs7MUY4MzsKKzFGOEM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGMEMgMDM0NTs7OztOOzs7OzFGODQ7CisxRjhEO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjBEIDAzNDU7Ozs7Tjs7OzsxRjg1OworMUY4RTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGMEUgMDM0NTs7OztOOzs7OzFGODY7CisxRjhGO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUYwRiAwMzQ1Ozs7O047Ozs7MUY4NzsKKzFGOTA7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjIwIDAzNDU7Ozs7Tjs7OzFGOTg7OzFGOTgKKzFGOTE7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjIxIDAzNDU7Ozs7Tjs7OzFGOTk7OzFGOTkKKzFGOTI7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYyMiAwMzQ1Ozs7O047OzsxRjlBOzsxRjlBCisxRjkzO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMjMgMDM0NTs7OztOOzs7MUY5Qjs7MUY5QgorMUY5NDtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMjQgMDM0NTs7OztOOzs7MUY5Qzs7MUY5QworMUY5NTtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMjUgMDM0NTs7OztOOzs7MUY5RDs7MUY5RAorMUY5NjtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjI2IDAzNDU7Ozs7Tjs7OzFGOUU7OzFGOUUKKzFGOTc7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYyNyAwMzQ1Ozs7O047OzsxRjlGOzsxRjlGCisxRjk4O0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUYyOCAwMzQ1Ozs7O047Ozs7MUY5MDsKKzFGOTk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjI5IDAzNDU7Ozs7Tjs7OzsxRjkxOworMUY5QTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgVkFSSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjJBIDAzNDU7Ozs7Tjs7OzsxRjkyOworMUY5QjtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgVkFSSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjJCIDAzNDU7Ozs7Tjs7OzsxRjkzOworMUY5QztHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGMkMgMDM0NTs7OztOOzs7OzFGOTQ7CisxRjlEO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBPWElBIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUYyRCAwMzQ1Ozs7O047Ozs7MUY5NTsKKzFGOUU7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUYyRSAwMzQ1Ozs7O047Ozs7MUY5NjsKKzFGOUY7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUYyRiAwMzQ1Ozs7O047Ozs7MUY5NzsKKzFGQTA7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNjAgMDM0NTs7OztOOzs7MUZBODs7MUZBOAorMUZBMTtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY2MSAwMzQ1Ozs7O047OzsxRkE5OzsxRkE5CisxRkEyO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY2MiAwMzQ1Ozs7O047OzsxRkFBOzsxRkFBCisxRkEzO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY2MyAwMzQ1Ozs7O047OzsxRkFCOzsxRkFCCisxRkE0O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjY0IDAzNDU7Ozs7Tjs7OzFGQUM7OzFGQUMKKzFGQTU7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNjUgMDM0NTs7OztOOzs7MUZBRDs7MUZBRAorMUZBNjtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNjYgMDM0NTs7OztOOzs7MUZBRTs7MUZBRQorMUZBNztHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNjcgMDM0NTs7OztOOzs7MUZBRjs7MUZBRgorMUZBODtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUY2OCAwMzQ1Ozs7O047Ozs7MUZBMDsKKzFGQTk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGNjkgMDM0NTs7OztOOzs7OzFGQTE7CisxRkFBO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUY2QSAwMzQ1Ozs7O047Ozs7MUZBMjsKKzFGQUI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgVkFSSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjZCIDAzNDU7Ozs7Tjs7OzsxRkEzOworMUZBQztHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUY2QyAwMzQ1Ozs7O047Ozs7MUZBNDsKKzFGQUQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGNkQgMDM0NTs7OztOOzs7OzFGQTU7CisxRkFFO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUY2RSAwMzQ1Ozs7O047Ozs7MUZBNjsKKzFGQUY7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjZGIDAzNDU7Ozs7Tjs7OzsxRkE3OworMUZCMDtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBWUkFDSFk7TGw7MDtMOzAzQjEgMDMwNjs7OztOOzs7MUZCODs7MUZCOAorMUZCMTtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBNQUNST047TGw7MDtMOzAzQjEgMDMwNDs7OztOOzs7MUZCOTs7MUZCOQorMUZCMjtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY3MCAwMzQ1Ozs7O047Ozs7OworMUZCMztHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBZUE9HRUdSQU1NRU5JO0xsOzA7TDswM0IxIDAzNDU7Ozs7Tjs7OzFGQkM7OzFGQkMKKzFGQjQ7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggT1hJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY3MSAwMzQ1Ozs7O047Ozs7OworMUZCNjtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQRVJJU1BPTUVOSTtMbDswO0w7MDNCMSAwMzQyOzs7O047Ozs7OworMUZCNztHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUZCNiAwMzQ1Ozs7O047Ozs7OworMUZCODtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFZSQUNIWTtMdTswO0w7MDM5MSAwMzA2Ozs7O047Ozs7MUZCMDsKKzFGQjk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBNQUNST047THU7MDtMOzAzOTEgMDMwNDs7OztOOzs7OzFGQjE7CisxRkJBO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggVkFSSUE7THU7MDtMOzAzOTEgMDMwMDs7OztOOzs7OzFGNzA7CisxRkJCO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggT1hJQTtMdTswO0w7MDM5MSAwMzAxOzs7O047Ozs7MUY3MTsKKzFGQkM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MDM5MSAwMzQ1Ozs7O047Ozs7MUZCMzsKKzFGQkQ7R1JFRUsgS09ST05JUztTazswO09OOzxjb21wYXQ+IDAwMjAgMDMxMzs7OztOOzs7OzsKKzFGQkU7R1JFRUsgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzAzQjk7Ozs7Tjs7Ozs7CisxRkJGO0dSRUVLIFBTSUxJO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzEzOzs7O047Ozs7OworMUZDMDtHUkVFSyBQRVJJU1BPTUVOSTtTazswO09OOzxjb21wYXQ+IDAwMjAgMDM0Mjs7OztOOzs7OzsKKzFGQzE7R1JFRUsgRElBTFlUSUtBIEFORCBQRVJJU1BPTUVOSTtTazswO09OOzAwQTggMDM0Mjs7OztOOzs7OzsKKzFGQzI7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjc0IDAzNDU7Ozs7Tjs7Ozs7CisxRkMzO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBZUE9HRUdSQU1NRU5JO0xsOzA7TDswM0I3IDAzNDU7Ozs7Tjs7OzFGQ0M7OzFGQ0MKKzFGQzQ7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNzUgMDM0NTs7OztOOzs7OzsKKzFGQzY7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBFUklTUE9NRU5JO0xsOzA7TDswM0I3IDAzNDI7Ozs7Tjs7Ozs7CisxRkM3O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUZDNiAwMzQ1Ozs7O047Ozs7OworMUZDODtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggVkFSSUE7THU7MDtMOzAzOTUgMDMwMDs7OztOOzs7OzFGNzI7CisxRkM5O0dSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBPWElBO0x1OzA7TDswMzk1IDAzMDE7Ozs7Tjs7OzsxRjczOworMUZDQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBWQVJJQTtMdTswO0w7MDM5NyAwMzAwOzs7O047Ozs7MUY3NDsKKzFGQ0I7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggT1hJQTtMdTswO0w7MDM5NyAwMzAxOzs7O047Ozs7MUY3NTsKKzFGQ0M7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFJPU0dFR1JBTU1FTkk7THU7MDtMOzAzOTcgMDM0NTs7OztOOzs7OzFGQzM7CisxRkNEO0dSRUVLIFBTSUxJIEFORCBWQVJJQTtTazswO09OOzFGQkYgMDMwMDs7OztOOzs7OzsKKzFGQ0U7R1JFRUsgUFNJTEkgQU5EIE9YSUE7U2s7MDtPTjsxRkJGIDAzMDE7Ozs7Tjs7Ozs7CisxRkNGO0dSRUVLIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtTazswO09OOzFGQkYgMDM0Mjs7OztOOzs7OzsKKzFGRDA7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBWUkFDSFk7TGw7MDtMOzAzQjkgMDMwNjs7OztOOzs7MUZEODs7MUZEOAorMUZEMTtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIE1BQ1JPTjtMbDswO0w7MDNCOSAwMzA0Ozs7O047OzsxRkQ5OzsxRkQ5CisxRkQyO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBIEFORCBWQVJJQTtMbDswO0w7MDNDQSAwMzAwOzs7O047Ozs7OworMUZEMztHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgT1hJQTtMbDswO0w7MDNDQSAwMzAxOzs7O047Ozs7OworMUZENjtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIFBFUklTUE9NRU5JO0xsOzA7TDswM0I5IDAzNDI7Ozs7Tjs7Ozs7CisxRkQ3O0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBIEFORCBQRVJJU1BPTUVOSTtMbDswO0w7MDNDQSAwMzQyOzs7O047Ozs7OworMUZEODtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggVlJBQ0hZO0x1OzA7TDswMzk5IDAzMDY7Ozs7Tjs7OzsxRkQwOworMUZEOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggTUFDUk9OO0x1OzA7TDswMzk5IDAzMDQ7Ozs7Tjs7OzsxRkQxOworMUZEQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggVkFSSUE7THU7MDtMOzAzOTkgMDMwMDs7OztOOzs7OzFGNzY7CisxRkRCO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBPWElBO0x1OzA7TDswMzk5IDAzMDE7Ozs7Tjs7OzsxRjc3OworMUZERDtHUkVFSyBEQVNJQSBBTkQgVkFSSUE7U2s7MDtPTjsxRkZFIDAzMDA7Ozs7Tjs7Ozs7CisxRkRFO0dSRUVLIERBU0lBIEFORCBPWElBO1NrOzA7T047MUZGRSAwMzAxOzs7O047Ozs7OworMUZERjtHUkVFSyBEQVNJQSBBTkQgUEVSSVNQT01FTkk7U2s7MDtPTjsxRkZFIDAzNDI7Ozs7Tjs7Ozs7CisxRkUwO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggVlJBQ0hZO0xsOzA7TDswM0M1IDAzMDY7Ozs7Tjs7OzFGRTg7OzFGRTgKKzFGRTE7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBNQUNST047TGw7MDtMOzAzQzUgMDMwNDs7OztOOzs7MUZFOTs7MUZFOQorMUZFMjtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgVkFSSUE7TGw7MDtMOzAzQ0IgMDMwMDs7OztOOzs7OzsKKzFGRTM7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EgQU5EIE9YSUE7TGw7MDtMOzAzQ0IgMDMwMTs7OztOOzs7OzsKKzFGRTQ7R1JFRUsgU01BTEwgTEVUVEVSIFJITyBXSVRIIFBTSUxJO0xsOzA7TDswM0MxIDAzMTM7Ozs7Tjs7Ozs7CisxRkU1O0dSRUVLIFNNQUxMIExFVFRFUiBSSE8gV0lUSCBEQVNJQTtMbDswO0w7MDNDMSAwMzE0Ozs7O047OzsxRkVDOzsxRkVDCisxRkU2O0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggUEVSSVNQT01FTkk7TGw7MDtMOzAzQzUgMDM0Mjs7OztOOzs7OzsKKzFGRTc7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDswM0NCIDAzNDI7Ozs7Tjs7Ozs7CisxRkU4O0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBWUkFDSFk7THU7MDtMOzAzQTUgMDMwNjs7OztOOzs7OzFGRTA7CisxRkU5O0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBNQUNST047THU7MDtMOzAzQTUgMDMwNDs7OztOOzs7OzFGRTE7CisxRkVBO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBWQVJJQTtMdTswO0w7MDNBNSAwMzAwOzs7O047Ozs7MUY3QTsKKzFGRUI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIE9YSUE7THU7MDtMOzAzQTUgMDMwMTs7OztOOzs7OzFGN0I7CisxRkVDO0dSRUVLIENBUElUQUwgTEVUVEVSIFJITyBXSVRIIERBU0lBO0x1OzA7TDswM0ExIDAzMTQ7Ozs7Tjs7OzsxRkU1OworMUZFRDtHUkVFSyBESUFMWVRJS0EgQU5EIFZBUklBO1NrOzA7T047MDBBOCAwMzAwOzs7O047Ozs7OworMUZFRTtHUkVFSyBESUFMWVRJS0EgQU5EIE9YSUE7U2s7MDtPTjswMEE4IDAzMDE7Ozs7Tjs7Ozs7CisxRkVGO0dSRUVLIFZBUklBO1NrOzA7T047MDA2MDs7OztOOzs7OzsKKzFGRjI7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGN0MgMDM0NTs7OztOOzs7OzsKKzFGRjM7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggWVBPR0VHUkFNTUVOSTtMbDswO0w7MDNDOSAwMzQ1Ozs7O047OzsxRkZDOzsxRkZDCisxRkY0O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNzkgMDM0NTs7OztOOzs7OzsKKzFGRjY7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUEVSSVNQT01FTkk7TGw7MDtMOzAzQzkgMDM0Mjs7OztOOzs7OzsKKzFGRjc7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGRjYgMDM0NTs7OztOOzs7OzsKKzFGRjg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIFZBUklBO0x1OzA7TDswMzlGIDAzMDA7Ozs7Tjs7OzsxRjc4OworMUZGOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggT1hJQTtMdTswO0w7MDM5RiAwMzAxOzs7O047Ozs7MUY3OTsKKzFGRkE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBWQVJJQTtMdTswO0w7MDNBOSAwMzAwOzs7O047Ozs7MUY3QzsKKzFGRkI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBPWElBO0x1OzA7TDswM0E5IDAzMDE7Ozs7Tjs7OzsxRjdEOworMUZGQztHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBST1NHRUdSQU1NRU5JO0x1OzA7TDswM0E5IDAzNDU7Ozs7Tjs7OzsxRkYzOworMUZGRDtHUkVFSyBPWElBO1NrOzA7T047MDBCNDs7OztOOzs7OzsKKzFGRkU7R1JFRUsgREFTSUE7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMTQ7Ozs7Tjs7Ozs7CisyMDAwO0VOIFFVQUQ7WnM7MDtXUzsyMDAyOzs7O047Ozs7OworMjAwMTtFTSBRVUFEO1pzOzA7V1M7MjAwMzs7OztOOzs7OzsKKzIwMDI7RU4gU1BBQ0U7WnM7MDtXUzs8Y29tcGF0PiAwMDIwOzs7O047Ozs7OworMjAwMztFTSBTUEFDRTtaczswO1dTOzxjb21wYXQ+IDAwMjA7Ozs7Tjs7Ozs7CisyMDA0O1RIUkVFLVBFUi1FTSBTUEFDRTtaczswO1dTOzxjb21wYXQ+IDAwMjA7Ozs7Tjs7Ozs7CisyMDA1O0ZPVVItUEVSLUVNIFNQQUNFO1pzOzA7V1M7PGNvbXBhdD4gMDAyMDs7OztOOzs7OzsKKzIwMDY7U0lYLVBFUi1FTSBTUEFDRTtaczswO1dTOzxjb21wYXQ+IDAwMjA7Ozs7Tjs7Ozs7CisyMDA3O0ZJR1VSRSBTUEFDRTtaczswO0NTOzxub0JyZWFrPiAwMDIwOzs7O047Ozs7OworMjAwODtQVU5DVFVBVElPTiBTUEFDRTtaczswO1dTOzxjb21wYXQ+IDAwMjA7Ozs7Tjs7Ozs7CisyMDA5O1RISU4gU1BBQ0U7WnM7MDtXUzs8Y29tcGF0PiAwMDIwOzs7O047Ozs7OworMjAwQTtIQUlSIFNQQUNFO1pzOzA7V1M7PGNvbXBhdD4gMDAyMDs7OztOOzs7OzsKKzIwMEI7WkVSTyBXSURUSCBTUEFDRTtaczswO1dTOzs7OztOOzs7OzsKKzIwMEM7WkVSTyBXSURUSCBOT04tSk9JTkVSO0NmOzA7T047Ozs7O047Ozs7OworMjAwRDtaRVJPIFdJRFRIIEpPSU5FUjtDZjswO09OOzs7OztOOzs7OzsKKzIwMEU7TEVGVC1UTy1SSUdIVCBNQVJLO0NmOzA7TDs7Ozs7Tjs7Ozs7CisyMDBGO1JJR0hULVRPLUxFRlQgTUFSSztDZjswO1I7Ozs7O047Ozs7OworMjAxMDtIWVBIRU47UGQ7MDtPTjs7Ozs7Tjs7Ozs7CisyMDExO05PTi1CUkVBS0lORyBIWVBIRU47UGQ7MDtPTjs8bm9CcmVhaz4gMjAxMDs7OztOOzs7OzsKKzIwMTI7RklHVVJFIERBU0g7UGQ7MDtPTjs7Ozs7Tjs7Ozs7CisyMDEzO0VOIERBU0g7UGQ7MDtPTjs7Ozs7Tjs7Ozs7CisyMDE0O0VNIERBU0g7UGQ7MDtPTjs7Ozs7Tjs7Ozs7CisyMDE1O0hPUklaT05UQUwgQkFSO1BkOzA7T047Ozs7O047UVVPVEFUSU9OIERBU0g7Ozs7CisyMDE2O0RPVUJMRSBWRVJUSUNBTCBMSU5FO1BvOzA7T047Ozs7O047RE9VQkxFIFZFUlRJQ0FMIEJBUjs7OzsKKzIwMTc7RE9VQkxFIExPVyBMSU5FO1BvOzA7T047PGNvbXBhdD4gMDAyMCAwMzMzOzs7O047U1BBQ0lORyBET1VCTEUgVU5ERVJTQ09SRTs7OzsKKzIwMTg7TEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUks7UGk7MDtPTjs7Ozs7TjtTSU5HTEUgVFVSTkVEIENPTU1BIFFVT1RBVElPTiBNQVJLOzs7OworMjAxOTtSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUks7UGY7MDtPTjs7Ozs7TjtTSU5HTEUgQ09NTUEgUVVPVEFUSU9OIE1BUks7Ozs7CisyMDFBO1NJTkdMRSBMT1ctOSBRVU9UQVRJT04gTUFSSztQczswO09OOzs7OztOO0xPVyBTSU5HTEUgQ09NTUEgUVVPVEFUSU9OIE1BUks7Ozs7CisyMDFCO1NJTkdMRSBISUdILVJFVkVSU0VELTkgUVVPVEFUSU9OIE1BUks7UGk7MDtPTjs7Ozs7TjtTSU5HTEUgUkVWRVJTRUQgQ09NTUEgUVVPVEFUSU9OIE1BUks7Ozs7CisyMDFDO0xFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLO1BpOzA7T047Ozs7O047RE9VQkxFIFRVUk5FRCBDT01NQSBRVU9UQVRJT04gTUFSSzs7OzsKKzIwMUQ7UklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLO1BmOzA7T047Ozs7O047RE9VQkxFIENPTU1BIFFVT1RBVElPTiBNQVJLOzs7OworMjAxRTtET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUks7UHM7MDtPTjs7Ozs7TjtMT1cgRE9VQkxFIENPTU1BIFFVT1RBVElPTiBNQVJLOzs7OworMjAxRjtET1VCTEUgSElHSC1SRVZFUlNFRC05IFFVT1RBVElPTiBNQVJLO1BpOzA7T047Ozs7O047RE9VQkxFIFJFVkVSU0VEIENPTU1BIFFVT1RBVElPTiBNQVJLOzs7OworMjAyMDtEQUdHRVI7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDIxO0RPVUJMRSBEQUdHRVI7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDIyO0JVTExFVDtQbzswO09OOzs7OztOOzs7OzsKKzIwMjM7VFJJQU5HVUxBUiBCVUxMRVQ7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDI0O09ORSBET1QgTEVBREVSO1BvOzA7T047PGNvbXBhdD4gMDAyRTs7OztOOzs7OzsKKzIwMjU7VFdPIERPVCBMRUFERVI7UG87MDtPTjs8Y29tcGF0PiAwMDJFIDAwMkU7Ozs7Tjs7Ozs7CisyMDI2O0hPUklaT05UQUwgRUxMSVBTSVM7UG87MDtPTjs8Y29tcGF0PiAwMDJFIDAwMkUgMDAyRTs7OztOOzs7OzsKKzIwMjc7SFlQSEVOQVRJT04gUE9JTlQ7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDI4O0xJTkUgU0VQQVJBVE9SO1psOzA7Qjs7Ozs7Tjs7Ozs7CisyMDI5O1BBUkFHUkFQSCBTRVBBUkFUT1I7WnA7MDtCOzs7OztOOzs7OzsKKzIwMkE7TEVGVC1UTy1SSUdIVCBFTUJFRERJTkc7Q2Y7MDtMOzs7OztOOzs7OzsKKzIwMkI7UklHSFQtVE8tTEVGVCBFTUJFRERJTkc7Q2Y7MDtSOzs7OztOOzs7OzsKKzIwMkM7UE9QIERJUkVDVElPTkFMIEZPUk1BVFRJTkc7Q2Y7MDtPTjs7Ozs7Tjs7Ozs7CisyMDJEO0xFRlQtVE8tUklHSFQgT1ZFUlJJREU7Q2Y7MDtMOzs7OztOOzs7OzsKKzIwMkU7UklHSFQtVE8tTEVGVCBPVkVSUklERTtDZjswO1I7Ozs7O047Ozs7OworMjAzMDtQRVIgTUlMTEUgU0lHTjtQbzswO0VUOzs7OztOOzs7OzsKKzIwMzE7UEVSIFRFTiBUSE9VU0FORCBTSUdOO1BvOzA7RVQ7Ozs7O047Ozs7OworMjAzMjtQUklNRTtQbzswO0VUOzs7OztOOzs7OzsKKzIwMzM7RE9VQkxFIFBSSU1FO1BvOzA7RVQ7PGNvbXBhdD4gMjAzMiAyMDMyOzs7O047Ozs7OworMjAzNDtUUklQTEUgUFJJTUU7UG87MDtFVDs8Y29tcGF0PiAyMDMyIDIwMzIgMjAzMjs7OztOOzs7OzsKKzIwMzU7UkVWRVJTRUQgUFJJTUU7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDM2O1JFVkVSU0VEIERPVUJMRSBQUklNRTtQbzswO09OOzxjb21wYXQ+IDIwMzUgMjAzNTs7OztOOzs7OzsKKzIwMzc7UkVWRVJTRUQgVFJJUExFIFBSSU1FO1BvOzA7T047PGNvbXBhdD4gMjAzNSAyMDM1IDIwMzU7Ozs7Tjs7Ozs7CisyMDM4O0NBUkVUO1BvOzA7T047Ozs7O047Ozs7OworMjAzOTtTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSztQaTswO09OOzs7OztOO0xFRlQgUE9JTlRJTkcgU0lOR0xFIEdVSUxMRU1FVDs7OzsKKzIwM0E7U0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLO1BmOzA7T047Ozs7O047UklHSFQgUE9JTlRJTkcgU0lOR0xFIEdVSUxMRU1FVDs7OzsKKzIwM0I7UkVGRVJFTkNFIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDNDO0RPVUJMRSBFWENMQU1BVElPTiBNQVJLO1BvOzA7T047PGNvbXBhdD4gMDAyMSAwMDIxOzs7O047Ozs7OworMjAzRDtJTlRFUlJPQkFORztQbzswO09OOzs7OztOOzs7OzsKKzIwM0U7T1ZFUkxJTkU7UG87MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDU7Ozs7TjtTUEFDSU5HIE9WRVJTQ09SRTs7OzsKKzIwM0Y7VU5ERVJUSUU7UGM7MDtPTjs7Ozs7Tjs7RW5vdGlrb247OzsKKzIwNDA7Q0hBUkFDVEVSIFRJRTtQYzswO09OOzs7OztOOzs7OzsKKzIwNDE7Q0FSRVQgSU5TRVJUSU9OIFBPSU5UO1BvOzA7T047Ozs7O047Ozs7OworMjA0MjtBU1RFUklTTTtQbzswO09OOzs7OztOOzs7OzsKKzIwNDM7SFlQSEVOIEJVTExFVDtQbzswO09OOzs7OztOOzs7OzsKKzIwNDQ7RlJBQ1RJT04gU0xBU0g7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMDQ1O0xFRlQgU1FVQVJFIEJSQUNLRVQgV0lUSCBRVUlMTDtQczswO09OOzs7OztZOzs7OzsKKzIwNDY7UklHSFQgU1FVQVJFIEJSQUNLRVQgV0lUSCBRVUlMTDtQZTswO09OOzs7OztZOzs7OzsKKzIwNkE7SU5ISUJJVCBTWU1NRVRSSUMgU1dBUFBJTkc7Q2Y7MDtPTjs7Ozs7Tjs7Ozs7CisyMDZCO0FDVElWQVRFIFNZTU1FVFJJQyBTV0FQUElORztDZjswO09OOzs7OztOOzs7OzsKKzIwNkM7SU5ISUJJVCBBUkFCSUMgRk9STSBTSEFQSU5HO0NmOzA7T047Ozs7O047Ozs7OworMjA2RDtBQ1RJVkFURSBBUkFCSUMgRk9STSBTSEFQSU5HO0NmOzA7T047Ozs7O047Ozs7OworMjA2RTtOQVRJT05BTCBESUdJVCBTSEFQRVM7Q2Y7MDtPTjs7Ozs7Tjs7Ozs7CisyMDZGO05PTUlOQUwgRElHSVQgU0hBUEVTO0NmOzA7T047Ozs7O047Ozs7OworMjA3MDtTVVBFUlNDUklQVCBaRVJPO05vOzA7RU47PHN1cGVyPiAwMDMwOzA7MDswO047U1VQRVJTQ1JJUFQgRElHSVQgWkVSTzs7OzsKKzIwNzQ7U1VQRVJTQ1JJUFQgRk9VUjtObzswO0VOOzxzdXBlcj4gMDAzNDs0OzQ7NDtOO1NVUEVSU0NSSVBUIERJR0lUIEZPVVI7Ozs7CisyMDc1O1NVUEVSU0NSSVBUIEZJVkU7Tm87MDtFTjs8c3VwZXI+IDAwMzU7NTs1OzU7TjtTVVBFUlNDUklQVCBESUdJVCBGSVZFOzs7OworMjA3NjtTVVBFUlNDUklQVCBTSVg7Tm87MDtFTjs8c3VwZXI+IDAwMzY7Njs2OzY7TjtTVVBFUlNDUklQVCBESUdJVCBTSVg7Ozs7CisyMDc3O1NVUEVSU0NSSVBUIFNFVkVOO05vOzA7RU47PHN1cGVyPiAwMDM3Ozc7Nzs3O047U1VQRVJTQ1JJUFQgRElHSVQgU0VWRU47Ozs7CisyMDc4O1NVUEVSU0NSSVBUIEVJR0hUO05vOzA7RU47PHN1cGVyPiAwMDM4Ozg7ODs4O047U1VQRVJTQ1JJUFQgRElHSVQgRUlHSFQ7Ozs7CisyMDc5O1NVUEVSU0NSSVBUIE5JTkU7Tm87MDtFTjs8c3VwZXI+IDAwMzk7OTs5Ozk7TjtTVVBFUlNDUklQVCBESUdJVCBOSU5FOzs7OworMjA3QTtTVVBFUlNDUklQVCBQTFVTIFNJR047U207MDtFVDs8c3VwZXI+IDAwMkI7Ozs7Tjs7Ozs7CisyMDdCO1NVUEVSU0NSSVBUIE1JTlVTO1NtOzA7RVQ7PHN1cGVyPiAyMjEyOzs7O047U1VQRVJTQ1JJUFQgSFlQSEVOLU1JTlVTOzs7OworMjA3QztTVVBFUlNDUklQVCBFUVVBTFMgU0lHTjtTbTswO09OOzxzdXBlcj4gMDAzRDs7OztOOzs7OzsKKzIwN0Q7U1VQRVJTQ1JJUFQgTEVGVCBQQVJFTlRIRVNJUztQczswO09OOzxzdXBlcj4gMDAyODs7OztZO1NVUEVSU0NSSVBUIE9QRU5JTkcgUEFSRU5USEVTSVM7Ozs7CisyMDdFO1NVUEVSU0NSSVBUIFJJR0hUIFBBUkVOVEhFU0lTO1BlOzA7T047PHN1cGVyPiAwMDI5Ozs7O1k7U1VQRVJTQ1JJUFQgQ0xPU0lORyBQQVJFTlRIRVNJUzs7OzsKKzIwN0Y7U1VQRVJTQ1JJUFQgTEFUSU4gU01BTEwgTEVUVEVSIE47TGw7MDtMOzxzdXBlcj4gMDA2RTs7OztOOzs7OzsKKzIwODA7U1VCU0NSSVBUIFpFUk87Tm87MDtFTjs8c3ViPiAwMDMwOzA7MDswO047U1VCU0NSSVBUIERJR0lUIFpFUk87Ozs7CisyMDgxO1NVQlNDUklQVCBPTkU7Tm87MDtFTjs8c3ViPiAwMDMxOzE7MTsxO047U1VCU0NSSVBUIERJR0lUIE9ORTs7OzsKKzIwODI7U1VCU0NSSVBUIFRXTztObzswO0VOOzxzdWI+IDAwMzI7MjsyOzI7TjtTVUJTQ1JJUFQgRElHSVQgVFdPOzs7OworMjA4MztTVUJTQ1JJUFQgVEhSRUU7Tm87MDtFTjs8c3ViPiAwMDMzOzM7MzszO047U1VCU0NSSVBUIERJR0lUIFRIUkVFOzs7OworMjA4NDtTVUJTQ1JJUFQgRk9VUjtObzswO0VOOzxzdWI+IDAwMzQ7NDs0OzQ7TjtTVUJTQ1JJUFQgRElHSVQgRk9VUjs7OzsKKzIwODU7U1VCU0NSSVBUIEZJVkU7Tm87MDtFTjs8c3ViPiAwMDM1OzU7NTs1O047U1VCU0NSSVBUIERJR0lUIEZJVkU7Ozs7CisyMDg2O1NVQlNDUklQVCBTSVg7Tm87MDtFTjs8c3ViPiAwMDM2OzY7Njs2O047U1VCU0NSSVBUIERJR0lUIFNJWDs7OzsKKzIwODc7U1VCU0NSSVBUIFNFVkVOO05vOzA7RU47PHN1Yj4gMDAzNzs3Ozc7NztOO1NVQlNDUklQVCBESUdJVCBTRVZFTjs7OzsKKzIwODg7U1VCU0NSSVBUIEVJR0hUO05vOzA7RU47PHN1Yj4gMDAzODs4Ozg7ODtOO1NVQlNDUklQVCBESUdJVCBFSUdIVDs7OzsKKzIwODk7U1VCU0NSSVBUIE5JTkU7Tm87MDtFTjs8c3ViPiAwMDM5Ozk7OTs5O047U1VCU0NSSVBUIERJR0lUIE5JTkU7Ozs7CisyMDhBO1NVQlNDUklQVCBQTFVTIFNJR047U207MDtFVDs8c3ViPiAwMDJCOzs7O047Ozs7OworMjA4QjtTVUJTQ1JJUFQgTUlOVVM7U207MDtFVDs8c3ViPiAyMjEyOzs7O047U1VCU0NSSVBUIEhZUEhFTi1NSU5VUzs7OzsKKzIwOEM7U1VCU0NSSVBUIEVRVUFMUyBTSUdOO1NtOzA7T047PHN1Yj4gMDAzRDs7OztOOzs7OzsKKzIwOEQ7U1VCU0NSSVBUIExFRlQgUEFSRU5USEVTSVM7UHM7MDtPTjs8c3ViPiAwMDI4Ozs7O1k7U1VCU0NSSVBUIE9QRU5JTkcgUEFSRU5USEVTSVM7Ozs7CisyMDhFO1NVQlNDUklQVCBSSUdIVCBQQVJFTlRIRVNJUztQZTswO09OOzxzdWI+IDAwMjk7Ozs7WTtTVUJTQ1JJUFQgQ0xPU0lORyBQQVJFTlRIRVNJUzs7OzsKKzIwQTA7RVVSTy1DVVJSRU5DWSBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBMTtDT0xPTiBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBMjtDUlVaRUlSTyBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBMztGUkVOQ0ggRlJBTkMgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQTQ7TElSQSBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBNTtNSUxMIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEE2O05BSVJBIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEE3O1BFU0VUQSBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBODtSVVBFRSBTSUdOO1NjOzA7RVQ7PGNvbXBhdD4gMDA1MiAwMDczOzs7O047Ozs7OworMjBBOTtXT04gU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQUE7TkVXIFNIRVFFTCBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBQjtET05HIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEFDO0VVUk8gU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwRDA7Q09NQklOSU5HIExFRlQgSEFSUE9PTiBBQk9WRTtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgTEVGVCBIQVJQT09OIEFCT1ZFOzs7OworMjBEMTtDT01CSU5JTkcgUklHSFQgSEFSUE9PTiBBQk9WRTtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgUklHSFQgSEFSUE9PTiBBQk9WRTs7OzsKKzIwRDI7Q09NQklOSU5HIExPTkcgVkVSVElDQUwgTElORSBPVkVSTEFZO01uOzE7T047Ozs7O047Tk9OLVNQQUNJTkcgTE9ORyBWRVJUSUNBTCBCQVIgT1ZFUkxBWTs7OzsKKzIwRDM7Q09NQklOSU5HIFNIT1JUIFZFUlRJQ0FMIExJTkUgT1ZFUkxBWTtNbjsxO09OOzs7OztOO05PTi1TUEFDSU5HIFNIT1JUIFZFUlRJQ0FMIEJBUiBPVkVSTEFZOzs7OworMjBENDtDT01CSU5JTkcgQU5USUNMT0NLV0lTRSBBUlJPVyBBQk9WRTtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgQU5USUNMT0NLV0lTRSBBUlJPVyBBQk9WRTs7OzsKKzIwRDU7Q09NQklOSU5HIENMT0NLV0lTRSBBUlJPVyBBQk9WRTtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgQ0xPQ0tXSVNFIEFSUk9XIEFCT1ZFOzs7OworMjBENjtDT01CSU5JTkcgTEVGVCBBUlJPVyBBQk9WRTtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgTEVGVCBBUlJPVyBBQk9WRTs7OzsKKzIwRDc7Q09NQklOSU5HIFJJR0hUIEFSUk9XIEFCT1ZFO01uOzIzMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBSSUdIVCBBUlJPVyBBQk9WRTs7OzsKKzIwRDg7Q09NQklOSU5HIFJJTkcgT1ZFUkxBWTtNbjsxO09OOzs7OztOO05PTi1TUEFDSU5HIFJJTkcgT1ZFUkxBWTs7OzsKKzIwRDk7Q09NQklOSU5HIENMT0NLV0lTRSBSSU5HIE9WRVJMQVk7TW47MTtPTjs7Ozs7TjtOT04tU1BBQ0lORyBDTE9DS1dJU0UgUklORyBPVkVSTEFZOzs7OworMjBEQTtDT01CSU5JTkcgQU5USUNMT0NLV0lTRSBSSU5HIE9WRVJMQVk7TW47MTtPTjs7Ozs7TjtOT04tU1BBQ0lORyBBTlRJQ0xPQ0tXSVNFIFJJTkcgT1ZFUkxBWTs7OzsKKzIwREI7Q09NQklOSU5HIFRIUkVFIERPVFMgQUJPVkU7TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIFRIUkVFIERPVFMgQUJPVkU7Ozs7CisyMERDO0NPTUJJTklORyBGT1VSIERPVFMgQUJPVkU7TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIEZPVVIgRE9UUyBBQk9WRTs7OzsKKzIwREQ7Q09NQklOSU5HIEVOQ0xPU0lORyBDSVJDTEU7TWU7MDtPTjs7Ozs7TjtFTkNMT1NJTkcgQ0lSQ0xFOzs7OworMjBERTtDT01CSU5JTkcgRU5DTE9TSU5HIFNRVUFSRTtNZTswO09OOzs7OztOO0VOQ0xPU0lORyBTUVVBUkU7Ozs7CisyMERGO0NPTUJJTklORyBFTkNMT1NJTkcgRElBTU9ORDtNZTswO09OOzs7OztOO0VOQ0xPU0lORyBESUFNT05EOzs7OworMjBFMDtDT01CSU5JTkcgRU5DTE9TSU5HIENJUkNMRSBCQUNLU0xBU0g7TWU7MDtPTjs7Ozs7TjtFTkNMT1NJTkcgQ0lSQ0xFIFNMQVNIOzs7OworMjBFMTtDT01CSU5JTkcgTEVGVCBSSUdIVCBBUlJPVyBBQk9WRTtNbjsxO09OOzs7OztOO05PTi1TUEFDSU5HIExFRlQgUklHSFQgQVJST1cgQUJPVkU7Ozs7CisyMTAwO0FDQ09VTlQgT0Y7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTAxO0FERFJFU1NFRCBUTyBUSEUgU1VCSkVDVDtTbzswO09OOzs7OztOOzs7OzsKKzIxMDI7RE9VQkxFLVNUUlVDSyBDQVBJVEFMIEM7THU7MDtMOzxmb250PiAwMDQzOzs7O047RE9VQkxFLVNUUlVDSyBDOzs7OworMjEwMztERUdSRUUgQ0VMU0lVUztTbzswO09OOzxjb21wYXQ+IDAwQjAgMDA0Mzs7OztOO0RFR1JFRVMgQ0VOVElHUkFERTs7OzsKKzIxMDQ7Q0VOVFJFIExJTkUgU1lNQk9MO1NvOzA7T047Ozs7O047QyBMIFNZTUJPTDs7OzsKKzIxMDU7Q0FSRSBPRjtTbzswO09OOzs7OztOOzs7OzsKKzIxMDY7Q0FEQSBVTkE7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTA3O0VVTEVSIENPTlNUQU5UO0x1OzA7TDs8Y29tcGF0PiAwMTkwOzs7O047RVVMRVJTOzs7OworMjEwODtTQ1JVUExFO1NvOzA7T047Ozs7O047Ozs7OworMjEwOTtERUdSRUUgRkFIUkVOSEVJVDtTbzswO09OOzxjb21wYXQ+IDAwQjAgMDA0Njs7OztOO0RFR1JFRVMgRkFIUkVOSEVJVDs7OzsKKzIxMEE7U0NSSVBUIFNNQUxMIEc7TGw7MDtMOzxmb250PiAwMDY3Ozs7O047Ozs7OworMjEwQjtTQ1JJUFQgQ0FQSVRBTCBIO0x1OzA7TDs8Zm9udD4gMDA0ODs7OztOO1NDUklQVCBIOzs7OworMjEwQztCTEFDSy1MRVRURVIgQ0FQSVRBTCBIO0x1OzA7TDs8Zm9udD4gMDA0ODs7OztOO0JMQUNLLUxFVFRFUiBIOzs7OworMjEwRDtET1VCTEUtU1RSVUNLIENBUElUQUwgSDtMdTswO0w7PGZvbnQ+IDAwNDg7Ozs7TjtET1VCTEUtU1RSVUNLIEg7Ozs7CisyMTBFO1BMQU5DSyBDT05TVEFOVDtMbDswO0w7PGZvbnQ+IDAwNjg7Ozs7Tjs7Ozs7CisyMTBGO1BMQU5DSyBDT05TVEFOVCBPVkVSIFRXTyBQSTtMbDswO0w7PGZvbnQ+IDAxMjc7Ozs7TjtQTEFOQ0sgQ09OU1RBTlQgT1ZFUiAyIFBJOzs7OworMjExMDtTQ1JJUFQgQ0FQSVRBTCBJO0x1OzA7TDs8Zm9udD4gMDA0OTs7OztOO1NDUklQVCBJOzs7OworMjExMTtCTEFDSy1MRVRURVIgQ0FQSVRBTCBJO0x1OzA7TDs8Zm9udD4gMDA0OTs7OztOO0JMQUNLLUxFVFRFUiBJOzs7OworMjExMjtTQ1JJUFQgQ0FQSVRBTCBMO0x1OzA7TDs8Zm9udD4gMDA0Qzs7OztOO1NDUklQVCBMOzs7OworMjExMztTQ1JJUFQgU01BTEwgTDtMbDswO0w7PGZvbnQ+IDAwNkM7Ozs7Tjs7Ozs7CisyMTE0O0wgQiBCQVIgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjExNTtET1VCTEUtU1RSVUNLIENBUElUQUwgTjtMdTswO0w7PGZvbnQ+IDAwNEU7Ozs7TjtET1VCTEUtU1RSVUNLIE47Ozs7CisyMTE2O05VTUVSTyBTSUdOO1NvOzA7T047PGNvbXBhdD4gMDA0RSAwMDZGOzs7O047TlVNRVJPOzs7OworMjExNztTT1VORCBSRUNPUkRJTkcgQ09QWVJJR0hUO1NvOzA7T047Ozs7O047Ozs7OworMjExODtTQ1JJUFQgQ0FQSVRBTCBQO0x1OzA7TDs8Zm9udD4gMDA1MDs7OztOO1NDUklQVCBQOzs7OworMjExOTtET1VCTEUtU1RSVUNLIENBUElUQUwgUDtMdTswO0w7PGZvbnQ+IDAwNTA7Ozs7TjtET1VCTEUtU1RSVUNLIFA7Ozs7CisyMTFBO0RPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBRO0x1OzA7TDs8Zm9udD4gMDA1MTs7OztOO0RPVUJMRS1TVFJVQ0sgUTs7OzsKKzIxMUI7U0NSSVBUIENBUElUQUwgUjtMdTswO0w7PGZvbnQ+IDAwNTI7Ozs7TjtTQ1JJUFQgUjs7OzsKKzIxMUM7QkxBQ0stTEVUVEVSIENBUElUQUwgUjtMdTswO0w7PGZvbnQ+IDAwNTI7Ozs7TjtCTEFDSy1MRVRURVIgUjs7OzsKKzIxMUQ7RE9VQkxFLVNUUlVDSyBDQVBJVEFMIFI7THU7MDtMOzxmb250PiAwMDUyOzs7O047RE9VQkxFLVNUUlVDSyBSOzs7OworMjExRTtQUkVTQ1JJUFRJT04gVEFLRTtTbzswO09OOzs7OztOOzs7OzsKKzIxMUY7UkVTUE9OU0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTIwO1NFUlZJQ0UgTUFSSztTbzswO09OOzxzdXBlcj4gMDA1MyAwMDREOzs7O047Ozs7OworMjEyMTtURUxFUEhPTkUgU0lHTjtTbzswO09OOzxjb21wYXQ+IDAwNTQgMDA0NSAwMDRDOzs7O047VCBFIEwgU1lNQk9MOzs7OworMjEyMjtUUkFERSBNQVJLIFNJR047U287MDtPTjs8c3VwZXI+IDAwNTQgMDA0RDs7OztOO1RSQURFTUFSSzs7OzsKKzIxMjM7VkVSU0lDTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTI0O0RPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBaO0x1OzA7TDs8Zm9udD4gMDA1QTs7OztOO0RPVUJMRS1TVFJVQ0sgWjs7OzsKKzIxMjU7T1VOQ0UgU0lHTjtTbzswO09OOzs7OztOO09VTkNFOzs7OworMjEyNjtPSE0gU0lHTjtMdTswO0w7MDNBOTs7OztOO09ITTs7OzsKKzIxMjc7SU5WRVJURUQgT0hNIFNJR047U287MDtPTjs7Ozs7TjtNSE87Ozs7CisyMTI4O0JMQUNLLUxFVFRFUiBDQVBJVEFMIFo7THU7MDtMOzxmb250PiAwMDVBOzs7O047QkxBQ0stTEVUVEVSIFo7Ozs7CisyMTI5O1RVUk5FRCBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQTtTbzswO09OOzs7OztOOzs7OzsKKzIxMkE7S0VMVklOIFNJR047THU7MDtMOzAwNEI7Ozs7TjtERUdSRUVTIEtFTFZJTjs7OzsKKzIxMkI7QU5HU1RST00gU0lHTjtMdTswO0w7MDBDNTs7OztOO0FOR1NUUk9NIFVOSVQ7Ozs7CisyMTJDO1NDUklQVCBDQVBJVEFMIEI7THU7MDtMOzxmb250PiAwMDQyOzs7O047U0NSSVBUIEI7Ozs7CisyMTJEO0JMQUNLLUxFVFRFUiBDQVBJVEFMIEM7THU7MDtMOzxmb250PiAwMDQzOzs7O047QkxBQ0stTEVUVEVSIEM7Ozs7CisyMTJFO0VTVElNQVRFRCBTWU1CT0w7TGw7MDtMOzs7OztOOzs7OzsKKzIxMkY7U0NSSVBUIFNNQUxMIEU7TGw7MDtMOzxmb250PiAwMDY1Ozs7O047Ozs7OworMjEzMDtTQ1JJUFQgQ0FQSVRBTCBFO0x1OzA7TDs8Zm9udD4gMDA0NTs7OztOO1NDUklQVCBFOzs7OworMjEzMTtTQ1JJUFQgQ0FQSVRBTCBGO0x1OzA7TDs8Zm9udD4gMDA0Njs7OztOO1NDUklQVCBGOzs7OworMjEzMjtUVVJORUQgQ0FQSVRBTCBGO1NvOzA7T047Ozs7O047VFVSTkVEIEY7Ozs7CisyMTMzO1NDUklQVCBDQVBJVEFMIE07THU7MDtMOzxmb250PiAwMDREOzs7O047U0NSSVBUIE07Ozs7CisyMTM0O1NDUklQVCBTTUFMTCBPO0xsOzA7TDs8Zm9udD4gMDA2Rjs7OztOOzs7OzsKKzIxMzU7QUxFRiBTWU1CT0w7TG87MDtMOzxjb21wYXQ+IDA1RDA7Ozs7TjtGSVJTVCBUUkFOU0ZJTklURSBDQVJESU5BTDs7OzsKKzIxMzY7QkVUIFNZTUJPTDtMbzswO0w7PGNvbXBhdD4gMDVEMTs7OztOO1NFQ09ORCBUUkFOU0ZJTklURSBDQVJESU5BTDs7OzsKKzIxMzc7R0lNRUwgU1lNQk9MO0xvOzA7TDs8Y29tcGF0PiAwNUQyOzs7O047VEhJUkQgVFJBTlNGSU5JVEUgQ0FSRElOQUw7Ozs7CisyMTM4O0RBTEVUIFNZTUJPTDtMbzswO0w7PGNvbXBhdD4gMDVEMzs7OztOO0ZPVVJUSCBUUkFOU0ZJTklURSBDQVJESU5BTDs7OzsKKzIxNTM7VlVMR0FSIEZSQUNUSU9OIE9ORSBUSElSRDtObzswO09OOzxmcmFjdGlvbj4gMDAzMSAyMDQ0IDAwMzM7OzsxLzM7TjtGUkFDVElPTiBPTkUgVEhJUkQ7Ozs7CisyMTU0O1ZVTEdBUiBGUkFDVElPTiBUV08gVEhJUkRTO05vOzA7T047PGZyYWN0aW9uPiAwMDMyIDIwNDQgMDAzMzs7OzIvMztOO0ZSQUNUSU9OIFRXTyBUSElSRFM7Ozs7CisyMTU1O1ZVTEdBUiBGUkFDVElPTiBPTkUgRklGVEg7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzEgMjA0NCAwMDM1Ozs7MS81O047RlJBQ1RJT04gT05FIEZJRlRIOzs7OworMjE1NjtWVUxHQVIgRlJBQ1RJT04gVFdPIEZJRlRIUztObzswO09OOzxmcmFjdGlvbj4gMDAzMiAyMDQ0IDAwMzU7OzsyLzU7TjtGUkFDVElPTiBUV08gRklGVEhTOzs7OworMjE1NztWVUxHQVIgRlJBQ1RJT04gVEhSRUUgRklGVEhTO05vOzA7T047PGZyYWN0aW9uPiAwMDMzIDIwNDQgMDAzNTs7OzMvNTtOO0ZSQUNUSU9OIFRIUkVFIEZJRlRIUzs7OzsKKzIxNTg7VlVMR0FSIEZSQUNUSU9OIEZPVVIgRklGVEhTO05vOzA7T047PGZyYWN0aW9uPiAwMDM0IDIwNDQgMDAzNTs7OzQvNTtOO0ZSQUNUSU9OIEZPVVIgRklGVEhTOzs7OworMjE1OTtWVUxHQVIgRlJBQ1RJT04gT05FIFNJWFRIO05vOzA7T047PGZyYWN0aW9uPiAwMDMxIDIwNDQgMDAzNjs7OzEvNjtOO0ZSQUNUSU9OIE9ORSBTSVhUSDs7OzsKKzIxNUE7VlVMR0FSIEZSQUNUSU9OIEZJVkUgU0lYVEhTO05vOzA7T047PGZyYWN0aW9uPiAwMDM1IDIwNDQgMDAzNjs7OzUvNjtOO0ZSQUNUSU9OIEZJVkUgU0lYVEhTOzs7OworMjE1QjtWVUxHQVIgRlJBQ1RJT04gT05FIEVJR0hUSDtObzswO09OOzxmcmFjdGlvbj4gMDAzMSAyMDQ0IDAwMzg7OzsxLzg7TjtGUkFDVElPTiBPTkUgRUlHSFRIOzs7OworMjE1QztWVUxHQVIgRlJBQ1RJT04gVEhSRUUgRUlHSFRIUztObzswO09OOzxmcmFjdGlvbj4gMDAzMyAyMDQ0IDAwMzg7OzszLzg7TjtGUkFDVElPTiBUSFJFRSBFSUdIVEhTOzs7OworMjE1RDtWVUxHQVIgRlJBQ1RJT04gRklWRSBFSUdIVEhTO05vOzA7T047PGZyYWN0aW9uPiAwMDM1IDIwNDQgMDAzODs7OzUvODtOO0ZSQUNUSU9OIEZJVkUgRUlHSFRIUzs7OzsKKzIxNUU7VlVMR0FSIEZSQUNUSU9OIFNFVkVOIEVJR0hUSFM7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzcgMjA0NCAwMDM4Ozs7Ny84O047RlJBQ1RJT04gU0VWRU4gRUlHSFRIUzs7OzsKKzIxNUY7RlJBQ1RJT04gTlVNRVJBVE9SIE9ORTtObzswO09OOzxmcmFjdGlvbj4gMDAzMSAyMDQ0Ozs7MTtOOzs7OzsKKzIxNjA7Uk9NQU4gTlVNRVJBTCBPTkU7Tmw7MDtMOzxjb21wYXQ+IDAwNDk7OzsxO047Ozs7MjE3MDsKKzIxNjE7Uk9NQU4gTlVNRVJBTCBUV087Tmw7MDtMOzxjb21wYXQ+IDAwNDkgMDA0OTs7OzI7Tjs7OzsyMTcxOworMjE2MjtST01BTiBOVU1FUkFMIFRIUkVFO05sOzA7TDs8Y29tcGF0PiAwMDQ5IDAwNDkgMDA0OTs7OzM7Tjs7OzsyMTcyOworMjE2MztST01BTiBOVU1FUkFMIEZPVVI7Tmw7MDtMOzxjb21wYXQ+IDAwNDkgMDA1Njs7OzQ7Tjs7OzsyMTczOworMjE2NDtST01BTiBOVU1FUkFMIEZJVkU7Tmw7MDtMOzxjb21wYXQ+IDAwNTY7Ozs1O047Ozs7MjE3NDsKKzIxNjU7Uk9NQU4gTlVNRVJBTCBTSVg7Tmw7MDtMOzxjb21wYXQ+IDAwNTYgMDA0OTs7OzY7Tjs7OzsyMTc1OworMjE2NjtST01BTiBOVU1FUkFMIFNFVkVOO05sOzA7TDs8Y29tcGF0PiAwMDU2IDAwNDkgMDA0OTs7Ozc7Tjs7OzsyMTc2OworMjE2NztST01BTiBOVU1FUkFMIEVJR0hUO05sOzA7TDs8Y29tcGF0PiAwMDU2IDAwNDkgMDA0OSAwMDQ5Ozs7ODtOOzs7OzIxNzc7CisyMTY4O1JPTUFOIE5VTUVSQUwgTklORTtObDswO0w7PGNvbXBhdD4gMDA0OSAwMDU4Ozs7OTtOOzs7OzIxNzg7CisyMTY5O1JPTUFOIE5VTUVSQUwgVEVOO05sOzA7TDs8Y29tcGF0PiAwMDU4Ozs7MTA7Tjs7OzsyMTc5OworMjE2QTtST01BTiBOVU1FUkFMIEVMRVZFTjtObDswO0w7PGNvbXBhdD4gMDA1OCAwMDQ5Ozs7MTE7Tjs7OzsyMTdBOworMjE2QjtST01BTiBOVU1FUkFMIFRXRUxWRTtObDswO0w7PGNvbXBhdD4gMDA1OCAwMDQ5IDAwNDk7OzsxMjtOOzs7OzIxN0I7CisyMTZDO1JPTUFOIE5VTUVSQUwgRklGVFk7Tmw7MDtMOzxjb21wYXQ+IDAwNEM7Ozs1MDtOOzs7OzIxN0M7CisyMTZEO1JPTUFOIE5VTUVSQUwgT05FIEhVTkRSRUQ7Tmw7MDtMOzxjb21wYXQ+IDAwNDM7OzsxMDA7Tjs7OzsyMTdEOworMjE2RTtST01BTiBOVU1FUkFMIEZJVkUgSFVORFJFRDtObDswO0w7PGNvbXBhdD4gMDA0NDs7OzUwMDtOOzs7OzIxN0U7CisyMTZGO1JPTUFOIE5VTUVSQUwgT05FIFRIT1VTQU5EO05sOzA7TDs8Y29tcGF0PiAwMDREOzs7MTAwMDtOOzs7OzIxN0Y7CisyMTcwO1NNQUxMIFJPTUFOIE5VTUVSQUwgT05FO05sOzA7TDs8Y29tcGF0PiAwMDY5Ozs7MTtOOzs7MjE2MDs7MjE2MAorMjE3MTtTTUFMTCBST01BTiBOVU1FUkFMIFRXTztObDswO0w7PGNvbXBhdD4gMDA2OSAwMDY5Ozs7MjtOOzs7MjE2MTs7MjE2MQorMjE3MjtTTUFMTCBST01BTiBOVU1FUkFMIFRIUkVFO05sOzA7TDs8Y29tcGF0PiAwMDY5IDAwNjkgMDA2OTs7OzM7Tjs7OzIxNjI7OzIxNjIKKzIxNzM7U01BTEwgUk9NQU4gTlVNRVJBTCBGT1VSO05sOzA7TDs8Y29tcGF0PiAwMDY5IDAwNzY7Ozs0O047OzsyMTYzOzsyMTYzCisyMTc0O1NNQUxMIFJPTUFOIE5VTUVSQUwgRklWRTtObDswO0w7PGNvbXBhdD4gMDA3Njs7OzU7Tjs7OzIxNjQ7OzIxNjQKKzIxNzU7U01BTEwgUk9NQU4gTlVNRVJBTCBTSVg7Tmw7MDtMOzxjb21wYXQ+IDAwNzYgMDA2OTs7OzY7Tjs7OzIxNjU7OzIxNjUKKzIxNzY7U01BTEwgUk9NQU4gTlVNRVJBTCBTRVZFTjtObDswO0w7PGNvbXBhdD4gMDA3NiAwMDY5IDAwNjk7Ozs3O047OzsyMTY2OzsyMTY2CisyMTc3O1NNQUxMIFJPTUFOIE5VTUVSQUwgRUlHSFQ7Tmw7MDtMOzxjb21wYXQ+IDAwNzYgMDA2OSAwMDY5IDAwNjk7Ozs4O047OzsyMTY3OzsyMTY3CisyMTc4O1NNQUxMIFJPTUFOIE5VTUVSQUwgTklORTtObDswO0w7PGNvbXBhdD4gMDA2OSAwMDc4Ozs7OTtOOzs7MjE2ODs7MjE2OAorMjE3OTtTTUFMTCBST01BTiBOVU1FUkFMIFRFTjtObDswO0w7PGNvbXBhdD4gMDA3ODs7OzEwO047OzsyMTY5OzsyMTY5CisyMTdBO1NNQUxMIFJPTUFOIE5VTUVSQUwgRUxFVkVOO05sOzA7TDs8Y29tcGF0PiAwMDc4IDAwNjk7OzsxMTtOOzs7MjE2QTs7MjE2QQorMjE3QjtTTUFMTCBST01BTiBOVU1FUkFMIFRXRUxWRTtObDswO0w7PGNvbXBhdD4gMDA3OCAwMDY5IDAwNjk7OzsxMjtOOzs7MjE2Qjs7MjE2QgorMjE3QztTTUFMTCBST01BTiBOVU1FUkFMIEZJRlRZO05sOzA7TDs8Y29tcGF0PiAwMDZDOzs7NTA7Tjs7OzIxNkM7OzIxNkMKKzIxN0Q7U01BTEwgUk9NQU4gTlVNRVJBTCBPTkUgSFVORFJFRDtObDswO0w7PGNvbXBhdD4gMDA2Mzs7OzEwMDtOOzs7MjE2RDs7MjE2RAorMjE3RTtTTUFMTCBST01BTiBOVU1FUkFMIEZJVkUgSFVORFJFRDtObDswO0w7PGNvbXBhdD4gMDA2NDs7OzUwMDtOOzs7MjE2RTs7MjE2RQorMjE3RjtTTUFMTCBST01BTiBOVU1FUkFMIE9ORSBUSE9VU0FORDtObDswO0w7PGNvbXBhdD4gMDA2RDs7OzEwMDA7Tjs7OzIxNkY7OzIxNkYKKzIxODA7Uk9NQU4gTlVNRVJBTCBPTkUgVEhPVVNBTkQgQyBEO05sOzA7TDs7OzsxMDAwO047Ozs7OworMjE4MTtST01BTiBOVU1FUkFMIEZJVkUgVEhPVVNBTkQ7Tmw7MDtMOzs7OzUwMDA7Tjs7Ozs7CisyMTgyO1JPTUFOIE5VTUVSQUwgVEVOIFRIT1VTQU5EO05sOzA7TDs7OzsxMDAwMDtOOzs7OzsKKzIxOTA7TEVGVFdBUkRTIEFSUk9XO1NtOzA7T047Ozs7O047TEVGVCBBUlJPVzs7OzsKKzIxOTE7VVBXQVJEUyBBUlJPVztTbTswO09OOzs7OztOO1VQIEFSUk9XOzs7OworMjE5MjtSSUdIVFdBUkRTIEFSUk9XO1NtOzA7T047Ozs7O047UklHSFQgQVJST1c7Ozs7CisyMTkzO0RPV05XQVJEUyBBUlJPVztTbTswO09OOzs7OztOO0RPV04gQVJST1c7Ozs7CisyMTk0O0xFRlQgUklHSFQgQVJST1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMTk1O1VQIERPV04gQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTk2O05PUlRIIFdFU1QgQVJST1c7U287MDtPTjs7Ozs7TjtVUFBFUiBMRUZUIEFSUk9XOzs7OworMjE5NztOT1JUSCBFQVNUIEFSUk9XO1NvOzA7T047Ozs7O047VVBQRVIgUklHSFQgQVJST1c7Ozs7CisyMTk4O1NPVVRIIEVBU1QgQVJST1c7U287MDtPTjs7Ozs7TjtMT1dFUiBSSUdIVCBBUlJPVzs7OzsKKzIxOTk7U09VVEggV0VTVCBBUlJPVztTbzswO09OOzs7OztOO0xPV0VSIExFRlQgQVJST1c7Ozs7CisyMTlBO0xFRlRXQVJEUyBBUlJPVyBXSVRIIFNUUk9LRTtTbzswO09OOzs7OztOO0xFRlQgQVJST1cgV0lUSCBTVFJPS0U7Ozs7CisyMTlCO1JJR0hUV0FSRFMgQVJST1cgV0lUSCBTVFJPS0U7U287MDtPTjs7Ozs7TjtSSUdIVCBBUlJPVyBXSVRIIFNUUk9LRTs7OzsKKzIxOUM7TEVGVFdBUkRTIFdBVkUgQVJST1c7U287MDtPTjs7Ozs7TjtMRUZUIFdBVkUgQVJST1c7Ozs7CisyMTlEO1JJR0hUV0FSRFMgV0FWRSBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIFdBVkUgQVJST1c7Ozs7CisyMTlFO0xFRlRXQVJEUyBUV08gSEVBREVEIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBUV08gSEVBREVEIEFSUk9XOzs7OworMjE5RjtVUFdBUkRTIFRXTyBIRUFERUQgQVJST1c7U287MDtPTjs7Ozs7TjtVUCBUV08gSEVBREVEIEFSUk9XOzs7OworMjFBMDtSSUdIVFdBUkRTIFRXTyBIRUFERUQgQVJST1c7U287MDtPTjs7Ozs7TjtSSUdIVCBUV08gSEVBREVEIEFSUk9XOzs7OworMjFBMTtET1dOV0FSRFMgVFdPIEhFQURFRCBBUlJPVztTbzswO09OOzs7OztOO0RPV04gVFdPIEhFQURFRCBBUlJPVzs7OzsKKzIxQTI7TEVGVFdBUkRTIEFSUk9XIFdJVEggVEFJTDtTbzswO09OOzs7OztOO0xFRlQgQVJST1cgV0lUSCBUQUlMOzs7OworMjFBMztSSUdIVFdBUkRTIEFSUk9XIFdJVEggVEFJTDtTbzswO09OOzs7OztOO1JJR0hUIEFSUk9XIFdJVEggVEFJTDs7OzsKKzIxQTQ7TEVGVFdBUkRTIEFSUk9XIEZST00gQkFSO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBGUk9NIEJBUjs7OzsKKzIxQTU7VVBXQVJEUyBBUlJPVyBGUk9NIEJBUjtTbzswO09OOzs7OztOO1VQIEFSUk9XIEZST00gQkFSOzs7OworMjFBNjtSSUdIVFdBUkRTIEFSUk9XIEZST00gQkFSO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgRlJPTSBCQVI7Ozs7CisyMUE3O0RPV05XQVJEUyBBUlJPVyBGUk9NIEJBUjtTbzswO09OOzs7OztOO0RPV04gQVJST1cgRlJPTSBCQVI7Ozs7CisyMUE4O1VQIERPV04gQVJST1cgV0lUSCBCQVNFO1NvOzA7T047Ozs7O047Ozs7OworMjFBOTtMRUZUV0FSRFMgQVJST1cgV0lUSCBIT09LO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBXSVRIIEhPT0s7Ozs7CisyMUFBO1JJR0hUV0FSRFMgQVJST1cgV0lUSCBIT09LO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgV0lUSCBIT09LOzs7OworMjFBQjtMRUZUV0FSRFMgQVJST1cgV0lUSCBMT09QO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBXSVRIIExPT1A7Ozs7CisyMUFDO1JJR0hUV0FSRFMgQVJST1cgV0lUSCBMT09QO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgV0lUSCBMT09QOzs7OworMjFBRDtMRUZUIFJJR0hUIFdBVkUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUFFO0xFRlQgUklHSFQgQVJST1cgV0lUSCBTVFJPS0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUFGO0RPV05XQVJEUyBaSUdaQUcgQVJST1c7U287MDtPTjs7Ozs7TjtET1dOIFpJR1pBRyBBUlJPVzs7OzsKKzIxQjA7VVBXQVJEUyBBUlJPVyBXSVRIIFRJUCBMRUZUV0FSRFM7U287MDtPTjs7Ozs7TjtVUCBBUlJPVyBXSVRIIFRJUCBMRUZUOzs7OworMjFCMTtVUFdBUkRTIEFSUk9XIFdJVEggVElQIFJJR0hUV0FSRFM7U287MDtPTjs7Ozs7TjtVUCBBUlJPVyBXSVRIIFRJUCBSSUdIVDs7OzsKKzIxQjI7RE9XTldBUkRTIEFSUk9XIFdJVEggVElQIExFRlRXQVJEUztTbzswO09OOzs7OztOO0RPV04gQVJST1cgV0lUSCBUSVAgTEVGVDs7OzsKKzIxQjM7RE9XTldBUkRTIEFSUk9XIFdJVEggVElQIFJJR0hUV0FSRFM7U287MDtPTjs7Ozs7TjtET1dOIEFSUk9XIFdJVEggVElQIFJJR0hUOzs7OworMjFCNDtSSUdIVFdBUkRTIEFSUk9XIFdJVEggQ09STkVSIERPV05XQVJEUztTbzswO09OOzs7OztOO1JJR0hUIEFSUk9XIFdJVEggQ09STkVSIERPV047Ozs7CisyMUI1O0RPV05XQVJEUyBBUlJPVyBXSVRIIENPUk5FUiBMRUZUV0FSRFM7U287MDtPTjs7Ozs7TjtET1dOIEFSUk9XIFdJVEggQ09STkVSIExFRlQ7Ozs7CisyMUI2O0FOVElDTE9DS1dJU0UgVE9QIFNFTUlDSVJDTEUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUI3O0NMT0NLV0lTRSBUT1AgU0VNSUNJUkNMRSBBUlJPVztTbzswO09OOzs7OztOOzs7OzsKKzIxQjg7Tk9SVEggV0VTVCBBUlJPVyBUTyBMT05HIEJBUjtTbzswO09OOzs7OztOO1VQUEVSIExFRlQgQVJST1cgVE8gTE9ORyBCQVI7Ozs7CisyMUI5O0xFRlRXQVJEUyBBUlJPVyBUTyBCQVIgT1ZFUiBSSUdIVFdBUkRTIEFSUk9XIFRPIEJBUjtTbzswO09OOzs7OztOO0xFRlQgQVJST1cgVE8gQkFSIE9WRVIgUklHSFQgQVJST1cgVE8gQkFSOzs7OworMjFCQTtBTlRJQ0xPQ0tXSVNFIE9QRU4gQ0lSQ0xFIEFSUk9XO1NvOzA7T047Ozs7O047Ozs7OworMjFCQjtDTE9DS1dJU0UgT1BFTiBDSVJDTEUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUJDO0xFRlRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBVUFdBUkRTO1NvOzA7T047Ozs7O047TEVGVCBIQVJQT09OIFdJVEggQkFSQiBVUDs7OzsKKzIxQkQ7TEVGVFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIERPV05XQVJEUztTbzswO09OOzs7OztOO0xFRlQgSEFSUE9PTiBXSVRIIEJBUkIgRE9XTjs7OzsKKzIxQkU7VVBXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBSSUdIVFdBUkRTO1NvOzA7T047Ozs7O047VVAgSEFSUE9PTiBXSVRIIEJBUkIgUklHSFQ7Ozs7CisyMUJGO1VQV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgTEVGVFdBUkRTO1NvOzA7T047Ozs7O047VVAgSEFSUE9PTiBXSVRIIEJBUkIgTEVGVDs7OzsKKzIxQzA7UklHSFRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBVUFdBUkRTO1NvOzA7T047Ozs7O047UklHSFQgSEFSUE9PTiBXSVRIIEJBUkIgVVA7Ozs7CisyMUMxO1JJR0hUV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgRE9XTldBUkRTO1NvOzA7T047Ozs7O047UklHSFQgSEFSUE9PTiBXSVRIIEJBUkIgRE9XTjs7OzsKKzIxQzI7RE9XTldBUkRTIEhBUlBPT04gV0lUSCBCQVJCIFJJR0hUV0FSRFM7U287MDtPTjs7Ozs7TjtET1dOIEhBUlBPT04gV0lUSCBCQVJCIFJJR0hUOzs7OworMjFDMztET1dOV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgTEVGVFdBUkRTO1NvOzA7T047Ozs7O047RE9XTiBIQVJQT09OIFdJVEggQkFSQiBMRUZUOzs7OworMjFDNDtSSUdIVFdBUkRTIEFSUk9XIE9WRVIgTEVGVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgT1ZFUiBMRUZUIEFSUk9XOzs7OworMjFDNTtVUFdBUkRTIEFSUk9XIExFRlRXQVJEUyBPRiBET1dOV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtVUCBBUlJPVyBMRUZUIE9GIERPV04gQVJST1c7Ozs7CisyMUM2O0xFRlRXQVJEUyBBUlJPVyBPVkVSIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtMRUZUIEFSUk9XIE9WRVIgUklHSFQgQVJST1c7Ozs7CisyMUM3O0xFRlRXQVJEUyBQQUlSRUQgQVJST1dTO1NvOzA7T047Ozs7O047TEVGVCBQQUlSRUQgQVJST1dTOzs7OworMjFDODtVUFdBUkRTIFBBSVJFRCBBUlJPV1M7U287MDtPTjs7Ozs7TjtVUCBQQUlSRUQgQVJST1dTOzs7OworMjFDOTtSSUdIVFdBUkRTIFBBSVJFRCBBUlJPV1M7U287MDtPTjs7Ozs7TjtSSUdIVCBQQUlSRUQgQVJST1dTOzs7OworMjFDQTtET1dOV0FSRFMgUEFJUkVEIEFSUk9XUztTbzswO09OOzs7OztOO0RPV04gUEFJUkVEIEFSUk9XUzs7OzsKKzIxQ0I7TEVGVFdBUkRTIEhBUlBPT04gT1ZFUiBSSUdIVFdBUkRTIEhBUlBPT047U287MDtPTjs7Ozs7TjtMRUZUIEhBUlBPT04gT1ZFUiBSSUdIVCBIQVJQT09OOzs7OworMjFDQztSSUdIVFdBUkRTIEhBUlBPT04gT1ZFUiBMRUZUV0FSRFMgSEFSUE9PTjtTbzswO09OOzs7OztOO1JJR0hUIEhBUlBPT04gT1ZFUiBMRUZUIEhBUlBPT047Ozs7CisyMUNEO0xFRlRXQVJEUyBET1VCTEUgQVJST1cgV0lUSCBTVFJPS0U7U287MDtPTjs7Ozs7TjtMRUZUIERPVUJMRSBBUlJPVyBXSVRIIFNUUk9LRTs7OzsKKzIxQ0U7TEVGVCBSSUdIVCBET1VCTEUgQVJST1cgV0lUSCBTVFJPS0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUNGO1JJR0hUV0FSRFMgRE9VQkxFIEFSUk9XIFdJVEggU1RST0tFO1NvOzA7T047Ozs7O047UklHSFQgRE9VQkxFIEFSUk9XIFdJVEggU1RST0tFOzs7OworMjFEMDtMRUZUV0FSRFMgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBET1VCTEUgQVJST1c7Ozs7CisyMUQxO1VQV0FSRFMgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047VVAgRE9VQkxFIEFSUk9XOzs7OworMjFEMjtSSUdIVFdBUkRTIERPVUJMRSBBUlJPVztTbTswO09OOzs7OztOO1JJR0hUIERPVUJMRSBBUlJPVzs7OzsKKzIxRDM7RE9XTldBUkRTIERPVUJMRSBBUlJPVztTbzswO09OOzs7OztOO0RPV04gRE9VQkxFIEFSUk9XOzs7OworMjFENDtMRUZUIFJJR0hUIERPVUJMRSBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzIxRDU7VVAgRE9XTiBET1VCTEUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUQ2O05PUlRIIFdFU1QgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047VVBQRVIgTEVGVCBET1VCTEUgQVJST1c7Ozs7CisyMUQ3O05PUlRIIEVBU1QgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047VVBQRVIgUklHSFQgRE9VQkxFIEFSUk9XOzs7OworMjFEODtTT1VUSCBFQVNUIERPVUJMRSBBUlJPVztTbzswO09OOzs7OztOO0xPV0VSIFJJR0hUIERPVUJMRSBBUlJPVzs7OzsKKzIxRDk7U09VVEggV0VTVCBET1VCTEUgQVJST1c7U287MDtPTjs7Ozs7TjtMT1dFUiBMRUZUIERPVUJMRSBBUlJPVzs7OzsKKzIxREE7TEVGVFdBUkRTIFRSSVBMRSBBUlJPVztTbzswO09OOzs7OztOO0xFRlQgVFJJUExFIEFSUk9XOzs7OworMjFEQjtSSUdIVFdBUkRTIFRSSVBMRSBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIFRSSVBMRSBBUlJPVzs7OzsKKzIxREM7TEVGVFdBUkRTIFNRVUlHR0xFIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBTUVVJR0dMRSBBUlJPVzs7OzsKKzIxREQ7UklHSFRXQVJEUyBTUVVJR0dMRSBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIFNRVUlHR0xFIEFSUk9XOzs7OworMjFERTtVUFdBUkRTIEFSUk9XIFdJVEggRE9VQkxFIFNUUk9LRTtTbzswO09OOzs7OztOO1VQIEFSUk9XIFdJVEggRE9VQkxFIFNUUk9LRTs7OzsKKzIxREY7RE9XTldBUkRTIEFSUk9XIFdJVEggRE9VQkxFIFNUUk9LRTtTbzswO09OOzs7OztOO0RPV04gQVJST1cgV0lUSCBET1VCTEUgU1RST0tFOzs7OworMjFFMDtMRUZUV0FSRFMgREFTSEVEIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBEQVNIRUQgQVJST1c7Ozs7CisyMUUxO1VQV0FSRFMgREFTSEVEIEFSUk9XO1NvOzA7T047Ozs7O047VVAgREFTSEVEIEFSUk9XOzs7OworMjFFMjtSSUdIVFdBUkRTIERBU0hFRCBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIERBU0hFRCBBUlJPVzs7OzsKKzIxRTM7RE9XTldBUkRTIERBU0hFRCBBUlJPVztTbzswO09OOzs7OztOO0RPV04gREFTSEVEIEFSUk9XOzs7OworMjFFNDtMRUZUV0FSRFMgQVJST1cgVE8gQkFSO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBUTyBCQVI7Ozs7CisyMUU1O1JJR0hUV0FSRFMgQVJST1cgVE8gQkFSO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgVE8gQkFSOzs7OworMjFFNjtMRUZUV0FSRFMgV0hJVEUgQVJST1c7U287MDtPTjs7Ozs7TjtXSElURSBMRUZUIEFSUk9XOzs7OworMjFFNztVUFdBUkRTIFdISVRFIEFSUk9XO1NvOzA7T047Ozs7O047V0hJVEUgVVAgQVJST1c7Ozs7CisyMUU4O1JJR0hUV0FSRFMgV0hJVEUgQVJST1c7U287MDtPTjs7Ozs7TjtXSElURSBSSUdIVCBBUlJPVzs7OzsKKzIxRTk7RE9XTldBUkRTIFdISVRFIEFSUk9XO1NvOzA7T047Ozs7O047V0hJVEUgRE9XTiBBUlJPVzs7OzsKKzIxRUE7VVBXQVJEUyBXSElURSBBUlJPVyBGUk9NIEJBUjtTbzswO09OOzs7OztOO1dISVRFIFVQIEFSUk9XIEZST00gQkFSOzs7OworMjIwMDtGT1IgQUxMO1NtOzA7T047Ozs7O047Ozs7OworMjIwMTtDT01QTEVNRU5UO1NtOzA7T047Ozs7O1k7Ozs7OworMjIwMjtQQVJUSUFMIERJRkZFUkVOVElBTDtTbTswO09OOzs7OztZOzs7OzsKKzIyMDM7VEhFUkUgRVhJU1RTO1NtOzA7T047Ozs7O1k7Ozs7OworMjIwNDtUSEVSRSBET0VTIE5PVCBFWElTVDtTbTswO09OOzIyMDMgMDMzODs7OztZOzs7OzsKKzIyMDU7RU1QVFkgU0VUO1NtOzA7T047Ozs7O047Ozs7OworMjIwNjtJTkNSRU1FTlQ7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjA3O05BQkxBO1NtOzA7T047Ozs7O047Ozs7OworMjIwODtFTEVNRU5UIE9GO1NtOzA7T047Ozs7O1k7Ozs7OworMjIwOTtOT1QgQU4gRUxFTUVOVCBPRjtTbTswO09OOzIyMDggMDMzODs7OztZOzs7OzsKKzIyMEE7U01BTEwgRUxFTUVOVCBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyMEI7Q09OVEFJTlMgQVMgTUVNQkVSO1NtOzA7T047Ozs7O1k7Ozs7OworMjIwQztET0VTIE5PVCBDT05UQUlOIEFTIE1FTUJFUjtTbTswO09OOzIyMEIgMDMzODs7OztZOzs7OzsKKzIyMEQ7U01BTEwgQ09OVEFJTlMgQVMgTUVNQkVSO1NtOzA7T047Ozs7O1k7Ozs7OworMjIwRTtFTkQgT0YgUFJPT0Y7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjBGO04tQVJZIFBST0RVQ1Q7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjEwO04tQVJZIENPUFJPRFVDVDtTbTswO09OOzs7OztOOzs7OzsKKzIyMTE7Ti1BUlkgU1VNTUFUSU9OO1NtOzA7T047Ozs7O1k7Ozs7OworMjIxMjtNSU5VUyBTSUdOO1NtOzA7RVQ7Ozs7O047Ozs7OworMjIxMztNSU5VUy1PUi1QTFVTIFNJR047U207MDtFVDs7Ozs7Tjs7Ozs7CisyMjE0O0RPVCBQTFVTO1NtOzA7T047Ozs7O047Ozs7OworMjIxNTtESVZJU0lPTiBTTEFTSDtTbTswO09OOzs7OztZOzs7OzsKKzIyMTY7U0VUIE1JTlVTO1NtOzA7T047Ozs7O1k7Ozs7OworMjIxNztBU1RFUklTSyBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyMTg7UklORyBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyMTk7QlVMTEVUIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjIxQTtTUVVBUkUgUk9PVDtTbTswO09OOzs7OztZOzs7OzsKKzIyMUI7Q1VCRSBST09UO1NtOzA7T047Ozs7O1k7Ozs7OworMjIxQztGT1VSVEggUk9PVDtTbTswO09OOzs7OztZOzs7OzsKKzIyMUQ7UFJPUE9SVElPTkFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjIxRTtJTkZJTklUWTtTbTswO09OOzs7OztOOzs7OzsKKzIyMUY7UklHSFQgQU5HTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjIwO0FOR0xFO1NtOzA7T047Ozs7O1k7Ozs7OworMjIyMTtNRUFTVVJFRCBBTkdMRTtTbTswO09OOzs7OztZOzs7OzsKKzIyMjI7U1BIRVJJQ0FMIEFOR0xFO1NtOzA7T047Ozs7O1k7Ozs7OworMjIyMztESVZJREVTO1NtOzA7T047Ozs7O047Ozs7OworMjIyNDtET0VTIE5PVCBESVZJREU7U207MDtPTjsyMjIzIDAzMzg7Ozs7WTs7Ozs7CisyMjI1O1BBUkFMTEVMIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjIyNjtOT1QgUEFSQUxMRUwgVE87U207MDtPTjsyMjI1IDAzMzg7Ozs7WTs7Ozs7CisyMjI3O0xPR0lDQUwgQU5EO1NtOzA7T047Ozs7O047Ozs7OworMjIyODtMT0dJQ0FMIE9SO1NtOzA7T047Ozs7O047Ozs7OworMjIyOTtJTlRFUlNFQ1RJT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjJBO1VOSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjIyQjtJTlRFR1JBTDtTbTswO09OOzs7OztZOzs7OzsKKzIyMkM7RE9VQkxFIElOVEVHUkFMO1NtOzA7T047PGNvbXBhdD4gMjIyQiAyMjJCOzs7O1k7Ozs7OworMjIyRDtUUklQTEUgSU5URUdSQUw7U207MDtPTjs8Y29tcGF0PiAyMjJCIDIyMkIgMjIyQjs7OztZOzs7OzsKKzIyMkU7Q09OVE9VUiBJTlRFR1JBTDtTbTswO09OOzs7OztZOzs7OzsKKzIyMkY7U1VSRkFDRSBJTlRFR1JBTDtTbTswO09OOzxjb21wYXQ+IDIyMkUgMjIyRTs7OztZOzs7OzsKKzIyMzA7Vk9MVU1FIElOVEVHUkFMO1NtOzA7T047PGNvbXBhdD4gMjIyRSAyMjJFIDIyMkU7Ozs7WTs7Ozs7CisyMjMxO0NMT0NLV0lTRSBJTlRFR1JBTDtTbTswO09OOzs7OztZOzs7OzsKKzIyMzI7Q0xPQ0tXSVNFIENPTlRPVVIgSU5URUdSQUw7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjMzO0FOVElDTE9DS1dJU0UgQ09OVE9VUiBJTlRFR1JBTDtTbTswO09OOzs7OztZOzs7OzsKKzIyMzQ7VEhFUkVGT1JFO1NtOzA7T047Ozs7O047Ozs7OworMjIzNTtCRUNBVVNFO1NtOzA7T047Ozs7O047Ozs7OworMjIzNjtSQVRJTztTbTswO09OOzs7OztOOzs7OzsKKzIyMzc7UFJPUE9SVElPTjtTbTswO09OOzs7OztOOzs7OzsKKzIyMzg7RE9UIE1JTlVTO1NtOzA7T047Ozs7O047Ozs7OworMjIzOTtFWENFU1M7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjNBO0dFT01FVFJJQyBQUk9QT1JUSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjIzQjtIT01PVEhFVElDO1NtOzA7T047Ozs7O1k7Ozs7OworMjIzQztUSUxERSBPUEVSQVRPUjtTbTswO09OOzs7OztZOzs7OzsKKzIyM0Q7UkVWRVJTRUQgVElMREU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjNFO0lOVkVSVEVEIExBWlkgUztTbTswO09OOzs7OztZOzs7OzsKKzIyM0Y7U0lORSBXQVZFO1NtOzA7T047Ozs7O1k7Ozs7OworMjI0MDtXUkVBVEggUFJPRFVDVDtTbTswO09OOzs7OztZOzs7OzsKKzIyNDE7Tk9UIFRJTERFO1NtOzA7T047MDA3RSAwMzM4Ozs7O1k7Ozs7OworMjI0MjtNSU5VUyBUSUxERTtTbTswO09OOzs7OztZOzs7OzsKKzIyNDM7QVNZTVBUT1RJQ0FMTFkgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjQ0O05PVCBBU1lNUFRPVElDQUxMWSBFUVVBTCBUTztTbTswO09OOzIyNDMgMDMzODs7OztZOzs7OzsKKzIyNDU7QVBQUk9YSU1BVEVMWSBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyNDY7QVBQUk9YSU1BVEVMWSBCVVQgTk9UIEFDVFVBTExZIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI0NztORUlUSEVSIEFQUFJPWElNQVRFTFkgTk9SIEFDVFVBTExZIEVRVUFMIFRPO1NtOzA7T047MjI0NSAwMzM4Ozs7O1k7Ozs7OworMjI0ODtBTE1PU1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjQ5O05PVCBBTE1PU1QgRVFVQUwgVE87U207MDtPTjsyMjQ4IDAzMzg7Ozs7WTs7Ozs7CisyMjRBO0FMTU9TVCBFUVVBTCBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyNEI7VFJJUExFIFRJTERFO1NtOzA7T047Ozs7O1k7Ozs7OworMjI0QztBTEwgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjREO0VRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjRFO0dFT01FVFJJQ0FMTFkgRVFVSVZBTEVOVCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNEY7RElGRkVSRU5DRSBCRVRXRUVOO1NtOzA7T047Ozs7O047Ozs7OworMjI1MDtBUFBST0FDSEVTIFRIRSBMSU1JVDtTbTswO09OOzs7OztOOzs7OzsKKzIyNTE7R0VPTUVUUklDQUxMWSBFUVVBTCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNTI7QVBQUk9YSU1BVEVMWSBFUVVBTCBUTyBPUiBUSEUgSU1BR0UgT0Y7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjUzO0lNQUdFIE9GIE9SIEFQUFJPWElNQVRFTFkgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjU0O0NPTE9OIEVRVUFMUztTbTswO09OOzs7OztZO0NPTE9OIEVRVUFMOzs7OworMjI1NTtFUVVBTFMgQ09MT047U207MDtPTjs7Ozs7WTtFUVVBTCBDT0xPTjs7OzsKKzIyNTY7UklORyBJTiBFUVVBTCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNTc7UklORyBFUVVBTCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNTg7Q09SUkVTUE9ORFMgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjU5O0VTVElNQVRFUztTbTswO09OOzs7OztOOzs7OzsKKzIyNUE7RVFVSUFOR1VMQVIgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjVCO1NUQVIgRVFVQUxTO1NtOzA7T047Ozs7O047Ozs7OworMjI1QztERUxUQSBFUVVBTCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNUQ7RVFVQUwgVE8gQlkgREVGSU5JVElPTjtTbTswO09OOzs7OztOOzs7OzsKKzIyNUU7TUVBU1VSRUQgQlk7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjVGO1FVRVNUSU9ORUQgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjYwO05PVCBFUVVBTCBUTztTbTswO09OOzAwM0QgMDMzODs7OztZOzs7OzsKKzIyNjE7SURFTlRJQ0FMIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjI2MjtOT1QgSURFTlRJQ0FMIFRPO1NtOzA7T047MjI2MSAwMzM4Ozs7O1k7Ozs7OworMjI2MztTVFJJQ1RMWSBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjI2NDtMRVNTLVRIQU4gT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gT1IgRVFVQUwgVE87Ozs7CisyMjY1O0dSRUFURVItVEhBTiBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZO0dSRUFURVIgVEhBTiBPUiBFUVVBTCBUTzs7OzsKKzIyNjY7TEVTUy1USEFOIE9WRVIgRVFVQUwgVE87U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gT1ZFUiBFUVVBTCBUTzs7OzsKKzIyNjc7R1JFQVRFUi1USEFOIE9WRVIgRVFVQUwgVE87U207MDtPTjs7Ozs7WTtHUkVBVEVSIFRIQU4gT1ZFUiBFUVVBTCBUTzs7OzsKKzIyNjg7TEVTUy1USEFOIEJVVCBOT1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gQlVUIE5PVCBFUVVBTCBUTzs7OzsKKzIyNjk7R1JFQVRFUi1USEFOIEJVVCBOT1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTtHUkVBVEVSIFRIQU4gQlVUIE5PVCBFUVVBTCBUTzs7OzsKKzIyNkE7TVVDSCBMRVNTLVRIQU47U207MDtPTjs7Ozs7WTtNVUNIIExFU1MgVEhBTjs7OzsKKzIyNkI7TVVDSCBHUkVBVEVSLVRIQU47U207MDtPTjs7Ozs7WTtNVUNIIEdSRUFURVIgVEhBTjs7OzsKKzIyNkM7QkVUV0VFTjtTbTswO09OOzs7OztOOzs7OzsKKzIyNkQ7Tk9UIEVRVUlWQUxFTlQgVE87U207MDtPTjsyMjREIDAzMzg7Ozs7Tjs7Ozs7CisyMjZFO05PVCBMRVNTLVRIQU47U207MDtPTjswMDNDIDAzMzg7Ozs7WTtOT1QgTEVTUyBUSEFOOzs7OworMjI2RjtOT1QgR1JFQVRFUi1USEFOO1NtOzA7T047MDAzRSAwMzM4Ozs7O1k7Tk9UIEdSRUFURVIgVEhBTjs7OzsKKzIyNzA7TkVJVEhFUiBMRVNTLVRIQU4gTk9SIEVRVUFMIFRPO1NtOzA7T047MjI2NCAwMzM4Ozs7O1k7TkVJVEhFUiBMRVNTIFRIQU4gTk9SIEVRVUFMIFRPOzs7OworMjI3MTtORUlUSEVSIEdSRUFURVItVEhBTiBOT1IgRVFVQUwgVE87U207MDtPTjsyMjY1IDAzMzg7Ozs7WTtORUlUSEVSIEdSRUFURVIgVEhBTiBOT1IgRVFVQUwgVE87Ozs7CisyMjcyO0xFU1MtVEhBTiBPUiBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O1k7TEVTUyBUSEFOIE9SIEVRVUlWQUxFTlQgVE87Ozs7CisyMjczO0dSRUFURVItVEhBTiBPUiBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O1k7R1JFQVRFUiBUSEFOIE9SIEVRVUlWQUxFTlQgVE87Ozs7CisyMjc0O05FSVRIRVIgTEVTUy1USEFOIE5PUiBFUVVJVkFMRU5UIFRPO1NtOzA7T047MjI3MiAwMzM4Ozs7O1k7TkVJVEhFUiBMRVNTIFRIQU4gTk9SIEVRVUlWQUxFTlQgVE87Ozs7CisyMjc1O05FSVRIRVIgR1JFQVRFUi1USEFOIE5PUiBFUVVJVkFMRU5UIFRPO1NtOzA7T047MjI3MyAwMzM4Ozs7O1k7TkVJVEhFUiBHUkVBVEVSIFRIQU4gTk9SIEVRVUlWQUxFTlQgVE87Ozs7CisyMjc2O0xFU1MtVEhBTiBPUiBHUkVBVEVSLVRIQU47U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gT1IgR1JFQVRFUiBUSEFOOzs7OworMjI3NztHUkVBVEVSLVRIQU4gT1IgTEVTUy1USEFOO1NtOzA7T047Ozs7O1k7R1JFQVRFUiBUSEFOIE9SIExFU1MgVEhBTjs7OzsKKzIyNzg7TkVJVEhFUiBMRVNTLVRIQU4gTk9SIEdSRUFURVItVEhBTjtTbTswO09OOzIyNzYgMDMzODs7OztZO05FSVRIRVIgTEVTUyBUSEFOIE5PUiBHUkVBVEVSIFRIQU47Ozs7CisyMjc5O05FSVRIRVIgR1JFQVRFUi1USEFOIE5PUiBMRVNTLVRIQU47U207MDtPTjsyMjc3IDAzMzg7Ozs7WTtORUlUSEVSIEdSRUFURVIgVEhBTiBOT1IgTEVTUyBUSEFOOzs7OworMjI3QTtQUkVDRURFUztTbTswO09OOzs7OztZOzs7OzsKKzIyN0I7U1VDQ0VFRFM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjdDO1BSRUNFREVTIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI3RDtTVUNDRUVEUyBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyN0U7UFJFQ0VERVMgT1IgRVFVSVZBTEVOVCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyN0Y7U1VDQ0VFRFMgT1IgRVFVSVZBTEVOVCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyODA7RE9FUyBOT1QgUFJFQ0VERTtTbTswO09OOzIyN0EgMDMzODs7OztZOzs7OzsKKzIyODE7RE9FUyBOT1QgU1VDQ0VFRDtTbTswO09OOzIyN0IgMDMzODs7OztZOzs7OzsKKzIyODI7U1VCU0VUIE9GO1NtOzA7T047Ozs7O1k7Ozs7OworMjI4MztTVVBFUlNFVCBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyODQ7Tk9UIEEgU1VCU0VUIE9GO1NtOzA7T047MjI4MiAwMzM4Ozs7O1k7Ozs7OworMjI4NTtOT1QgQSBTVVBFUlNFVCBPRjtTbTswO09OOzIyODMgMDMzODs7OztZOzs7OzsKKzIyODY7U1VCU0VUIE9GIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI4NztTVVBFUlNFVCBPRiBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyODg7TkVJVEhFUiBBIFNVQlNFVCBPRiBOT1IgRVFVQUwgVE87U207MDtPTjsyMjg2IDAzMzg7Ozs7WTs7Ozs7CisyMjg5O05FSVRIRVIgQSBTVVBFUlNFVCBPRiBOT1IgRVFVQUwgVE87U207MDtPTjsyMjg3IDAzMzg7Ozs7WTs7Ozs7CisyMjhBO1NVQlNFVCBPRiBXSVRIIE5PVCBFUVVBTCBUTztTbTswO09OOzs7OztZO1NVQlNFVCBPRiBPUiBOT1QgRVFVQUwgVE87Ozs7CisyMjhCO1NVUEVSU0VUIE9GIFdJVEggTk9UIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7U1VQRVJTRVQgT0YgT1IgTk9UIEVRVUFMIFRPOzs7OworMjI4QztNVUxUSVNFVDtTbTswO09OOzs7OztZOzs7OzsKKzIyOEQ7TVVMVElTRVQgTVVMVElQTElDQVRJT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjhFO01VTFRJU0VUIFVOSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjI4RjtTUVVBUkUgSU1BR0UgT0Y7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjkwO1NRVUFSRSBPUklHSU5BTCBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyOTE7U1FVQVJFIElNQUdFIE9GIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI5MjtTUVVBUkUgT1JJR0lOQUwgT0YgT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjkzO1NRVUFSRSBDQVA7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjk0O1NRVUFSRSBDVVA7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjk1O0NJUkNMRUQgUExVUztTbTswO09OOzs7OztOOzs7OzsKKzIyOTY7Q0lSQ0xFRCBNSU5VUztTbTswO09OOzs7OztOOzs7OzsKKzIyOTc7Q0lSQ0xFRCBUSU1FUztTbTswO09OOzs7OztOOzs7OzsKKzIyOTg7Q0lSQ0xFRCBESVZJU0lPTiBTTEFTSDtTbTswO09OOzs7OztZOzs7OzsKKzIyOTk7Q0lSQ0xFRCBET1QgT1BFUkFUT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjlBO0NJUkNMRUQgUklORyBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyOUI7Q0lSQ0xFRCBBU1RFUklTSyBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyOUM7Q0lSQ0xFRCBFUVVBTFM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjlEO0NJUkNMRUQgREFTSDtTbTswO09OOzs7OztOOzs7OzsKKzIyOUU7U1FVQVJFRCBQTFVTO1NtOzA7T047Ozs7O047Ozs7OworMjI5RjtTUVVBUkVEIE1JTlVTO1NtOzA7T047Ozs7O047Ozs7OworMjJBMDtTUVVBUkVEIFRJTUVTO1NtOzA7T047Ozs7O047Ozs7OworMjJBMTtTUVVBUkVEIERPVCBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyQTI7UklHSFQgVEFDSztTbTswO09OOzs7OztZOzs7OzsKKzIyQTM7TEVGVCBUQUNLO1NtOzA7T047Ozs7O1k7Ozs7OworMjJBNDtET1dOIFRBQ0s7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkE1O1VQIFRBQ0s7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkE2O0FTU0VSVElPTjtTbTswO09OOzs7OztZOzs7OzsKKzIyQTc7TU9ERUxTO1NtOzA7T047Ozs7O1k7Ozs7OworMjJBODtUUlVFO1NtOzA7T047Ozs7O1k7Ozs7OworMjJBOTtGT1JDRVM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkFBO1RSSVBMRSBWRVJUSUNBTCBCQVIgUklHSFQgVFVSTlNUSUxFO1NtOzA7T047Ozs7O1k7Ozs7OworMjJBQjtET1VCTEUgVkVSVElDQUwgQkFSIERPVUJMRSBSSUdIVCBUVVJOU1RJTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkFDO0RPRVMgTk9UIFBST1ZFO1NtOzA7T047MjJBMiAwMzM4Ozs7O1k7Ozs7OworMjJBRDtOT1QgVFJVRTtTbTswO09OOzIyQTggMDMzODs7OztZOzs7OzsKKzIyQUU7RE9FUyBOT1QgRk9SQ0U7U207MDtPTjsyMkE5IDAzMzg7Ozs7WTs7Ozs7CisyMkFGO05FR0FURUQgRE9VQkxFIFZFUlRJQ0FMIEJBUiBET1VCTEUgUklHSFQgVFVSTlNUSUxFO1NtOzA7T047MjJBQiAwMzM4Ozs7O1k7Ozs7OworMjJCMDtQUkVDRURFUyBVTkRFUiBSRUxBVElPTjtTbTswO09OOzs7OztZOzs7OzsKKzIyQjE7U1VDQ0VFRFMgVU5ERVIgUkVMQVRJT047U207MDtPTjs7Ozs7WTs7Ozs7CisyMkIyO05PUk1BTCBTVUJHUk9VUCBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyQjM7Q09OVEFJTlMgQVMgTk9STUFMIFNVQkdST1VQO1NtOzA7T047Ozs7O1k7Ozs7OworMjJCNDtOT1JNQUwgU1VCR1JPVVAgT0YgT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMkI1O0NPTlRBSU5TIEFTIE5PUk1BTCBTVUJHUk9VUCBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyQjY7T1JJR0lOQUwgT0Y7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkI3O0lNQUdFIE9GO1NtOzA7T047Ozs7O1k7Ozs7OworMjJCODtNVUxUSU1BUDtTbTswO09OOzs7OztZOzs7OzsKKzIyQjk7SEVSTUlUSUFOIENPTkpVR0FURSBNQVRSSVg7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkJBO0lOVEVSQ0FMQVRFO1NtOzA7T047Ozs7O047Ozs7OworMjJCQjtYT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkJDO05BTkQ7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkJEO05PUjtTbTswO09OOzs7OztOOzs7OzsKKzIyQkU7UklHSFQgQU5HTEUgV0lUSCBBUkM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkJGO1JJR0hUIFRSSUFOR0xFO1NtOzA7T047Ozs7O1k7Ozs7OworMjJDMDtOLUFSWSBMT0dJQ0FMIEFORDtTbTswO09OOzs7OztOOzs7OzsKKzIyQzE7Ti1BUlkgTE9HSUNBTCBPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyQzI7Ti1BUlkgSU5URVJTRUNUSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjJDMztOLUFSWSBVTklPTjtTbTswO09OOzs7OztOOzs7OzsKKzIyQzQ7RElBTU9ORCBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyQzU7RE9UIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjJDNjtTVEFSIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjJDNztESVZJU0lPTiBUSU1FUztTbTswO09OOzs7OztOOzs7OzsKKzIyQzg7Qk9XVElFO1NtOzA7T047Ozs7O047Ozs7OworMjJDOTtMRUZUIE5PUk1BTCBGQUNUT1IgU0VNSURJUkVDVCBQUk9EVUNUO1NtOzA7T047Ozs7O1k7Ozs7OworMjJDQTtSSUdIVCBOT1JNQUwgRkFDVE9SIFNFTUlESVJFQ1QgUFJPRFVDVDtTbTswO09OOzs7OztZOzs7OzsKKzIyQ0I7TEVGVCBTRU1JRElSRUNUIFBST0RVQ1Q7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkNDO1JJR0hUIFNFTUlESVJFQ1QgUFJPRFVDVDtTbTswO09OOzs7OztZOzs7OzsKKzIyQ0Q7UkVWRVJTRUQgVElMREUgRVFVQUxTO1NtOzA7T047Ozs7O1k7Ozs7OworMjJDRTtDVVJMWSBMT0dJQ0FMIE9SO1NtOzA7T047Ozs7O047Ozs7OworMjJDRjtDVVJMWSBMT0dJQ0FMIEFORDtTbTswO09OOzs7OztOOzs7OzsKKzIyRDA7RE9VQkxFIFNVQlNFVDtTbTswO09OOzs7OztZOzs7OzsKKzIyRDE7RE9VQkxFIFNVUEVSU0VUO1NtOzA7T047Ozs7O1k7Ozs7OworMjJEMjtET1VCTEUgSU5URVJTRUNUSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjJEMztET1VCTEUgVU5JT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkQ0O1BJVENIRk9SSztTbTswO09OOzs7OztOOzs7OzsKKzIyRDU7RVFVQUwgQU5EIFBBUkFMTEVMIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjJENjtMRVNTLVRIQU4gV0lUSCBET1Q7U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gV0lUSCBET1Q7Ozs7CisyMkQ3O0dSRUFURVItVEhBTiBXSVRIIERPVDtTbTswO09OOzs7OztZO0dSRUFURVIgVEhBTiBXSVRIIERPVDs7OzsKKzIyRDg7VkVSWSBNVUNIIExFU1MtVEhBTjtTbTswO09OOzs7OztZO1ZFUlkgTVVDSCBMRVNTIFRIQU47Ozs7CisyMkQ5O1ZFUlkgTVVDSCBHUkVBVEVSLVRIQU47U207MDtPTjs7Ozs7WTtWRVJZIE1VQ0ggR1JFQVRFUiBUSEFOOzs7OworMjJEQTtMRVNTLVRIQU4gRVFVQUwgVE8gT1IgR1JFQVRFUi1USEFOO1NtOzA7T047Ozs7O1k7TEVTUyBUSEFOIEVRVUFMIFRPIE9SIEdSRUFURVIgVEhBTjs7OzsKKzIyREI7R1JFQVRFUi1USEFOIEVRVUFMIFRPIE9SIExFU1MtVEhBTjtTbTswO09OOzs7OztZO0dSRUFURVIgVEhBTiBFUVVBTCBUTyBPUiBMRVNTIFRIQU47Ozs7CisyMkRDO0VRVUFMIFRPIE9SIExFU1MtVEhBTjtTbTswO09OOzs7OztZO0VRVUFMIFRPIE9SIExFU1MgVEhBTjs7OzsKKzIyREQ7RVFVQUwgVE8gT1IgR1JFQVRFUi1USEFOO1NtOzA7T047Ozs7O1k7RVFVQUwgVE8gT1IgR1JFQVRFUiBUSEFOOzs7OworMjJERTtFUVVBTCBUTyBPUiBQUkVDRURFUztTbTswO09OOzs7OztZOzs7OzsKKzIyREY7RVFVQUwgVE8gT1IgU1VDQ0VFRFM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkUwO0RPRVMgTk9UIFBSRUNFREUgT1IgRVFVQUw7U207MDtPTjsyMjdDIDAzMzg7Ozs7WTs7Ozs7CisyMkUxO0RPRVMgTk9UIFNVQ0NFRUQgT1IgRVFVQUw7U207MDtPTjsyMjdEIDAzMzg7Ozs7WTs7Ozs7CisyMkUyO05PVCBTUVVBUkUgSU1BR0UgT0YgT1IgRVFVQUwgVE87U207MDtPTjsyMjkxIDAzMzg7Ozs7WTs7Ozs7CisyMkUzO05PVCBTUVVBUkUgT1JJR0lOQUwgT0YgT1IgRVFVQUwgVE87U207MDtPTjsyMjkyIDAzMzg7Ozs7WTs7Ozs7CisyMkU0O1NRVUFSRSBJTUFHRSBPRiBPUiBOT1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMkU1O1NRVUFSRSBPUklHSU5BTCBPRiBPUiBOT1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMkU2O0xFU1MtVEhBTiBCVVQgTk9UIEVRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gQlVUIE5PVCBFUVVJVkFMRU5UIFRPOzs7OworMjJFNztHUkVBVEVSLVRIQU4gQlVUIE5PVCBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O1k7R1JFQVRFUiBUSEFOIEJVVCBOT1QgRVFVSVZBTEVOVCBUTzs7OzsKKzIyRTg7UFJFQ0VERVMgQlVUIE5PVCBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjJFOTtTVUNDRUVEUyBCVVQgTk9UIEVRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMkVBO05PVCBOT1JNQUwgU1VCR1JPVVAgT0Y7U207MDtPTjsyMkIyIDAzMzg7Ozs7WTs7Ozs7CisyMkVCO0RPRVMgTk9UIENPTlRBSU4gQVMgTk9STUFMIFNVQkdST1VQO1NtOzA7T047MjJCMyAwMzM4Ozs7O1k7Ozs7OworMjJFQztOT1QgTk9STUFMIFNVQkdST1VQIE9GIE9SIEVRVUFMIFRPO1NtOzA7T047MjJCNCAwMzM4Ozs7O1k7Ozs7OworMjJFRDtET0VTIE5PVCBDT05UQUlOIEFTIE5PUk1BTCBTVUJHUk9VUCBPUiBFUVVBTDtTbTswO09OOzIyQjUgMDMzODs7OztZOzs7OzsKKzIyRUU7VkVSVElDQUwgRUxMSVBTSVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkVGO01JRExJTkUgSE9SSVpPTlRBTCBFTExJUFNJUztTbTswO09OOzs7OztOOzs7OzsKKzIyRjA7VVAgUklHSFQgRElBR09OQUwgRUxMSVBTSVM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkYxO0RPV04gUklHSFQgRElBR09OQUwgRUxMSVBTSVM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzAwO0RJQU1FVEVSIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzAyO0hPVVNFO1NvOzA7T047Ozs7O047Ozs7OworMjMwMztVUCBBUlJPV0hFQUQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzA0O0RPV04gQVJST1dIRUFEO1NvOzA7T047Ozs7O047Ozs7OworMjMwNTtQUk9KRUNUSVZFO1NvOzA7T047Ozs7O047Ozs7OworMjMwNjtQRVJTUEVDVElWRTtTbzswO09OOzs7OztOOzs7OzsKKzIzMDc7V0FWWSBMSU5FO1NvOzA7T047Ozs7O047Ozs7OworMjMwODtMRUZUIENFSUxJTkc7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzA5O1JJR0hUIENFSUxJTkc7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzBBO0xFRlQgRkxPT1I7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzBCO1JJR0hUIEZMT09SO1NtOzA7T047Ozs7O1k7Ozs7OworMjMwQztCT1RUT00gUklHSFQgQ1JPUDtTbzswO09OOzs7OztOOzs7OzsKKzIzMEQ7Qk9UVE9NIExFRlQgQ1JPUDtTbzswO09OOzs7OztOOzs7OzsKKzIzMEU7VE9QIFJJR0hUIENST1A7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzBGO1RPUCBMRUZUIENST1A7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzEwO1JFVkVSU0VEIE5PVCBTSUdOO1NvOzA7T047Ozs7O047Ozs7OworMjMxMTtTUVVBUkUgTE9aRU5HRTtTbzswO09OOzs7OztOOzs7OzsKKzIzMTI7QVJDO1NvOzA7T047Ozs7O047Ozs7OworMjMxMztTRUdNRU5UO1NvOzA7T047Ozs7O047Ozs7OworMjMxNDtTRUNUT1I7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzE1O1RFTEVQSE9ORSBSRUNPUkRFUjtTbzswO09OOzs7OztOOzs7OzsKKzIzMTY7UE9TSVRJT04gSU5ESUNBVE9SO1NvOzA7T047Ozs7O047Ozs7OworMjMxNztWSUVXREFUQSBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzE4O1BMQUNFIE9GIElOVEVSRVNUIFNJR047U287MDtPTjs7Ozs7TjtDT01NQU5EIEtFWTs7OzsKKzIzMTk7VFVSTkVEIE5PVCBTSUdOO1NvOzA7T047Ozs7O047Ozs7OworMjMxQTtXQVRDSDtTbzswO09OOzs7OztOOzs7OzsKKzIzMUI7SE9VUkdMQVNTO1NvOzA7T047Ozs7O047Ozs7OworMjMxQztUT1AgTEVGVCBDT1JORVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzFEO1RPUCBSSUdIVCBDT1JORVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzFFO0JPVFRPTSBMRUZUIENPUk5FUjtTbzswO09OOzs7OztOOzs7OzsKKzIzMUY7Qk9UVE9NIFJJR0hUIENPUk5FUjtTbzswO09OOzs7OztOOzs7OzsKKzIzMjA7VE9QIEhBTEYgSU5URUdSQUw7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzIxO0JPVFRPTSBIQUxGIElOVEVHUkFMO1NtOzA7T047Ozs7O1k7Ozs7OworMjMyMjtGUk9XTjtTbzswO09OOzs7OztOOzs7OzsKKzIzMjM7U01JTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzI0O1VQIEFSUk9XSEVBRCBCRVRXRUVOIFRXTyBIT1JJWk9OVEFMIEJBUlM7U287MDtPTjs7Ozs7TjtFTlRFUiBLRVk7Ozs7CisyMzI1O09QVElPTiBLRVk7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzI2O0VSQVNFIFRPIFRIRSBSSUdIVDtTbzswO09OOzs7OztOO0RFTEVURSBUTyBUSEUgUklHSFQgS0VZOzs7OworMjMyNztYIElOIEEgUkVDVEFOR0xFIEJPWDtTbzswO09OOzs7OztOO0NMRUFSIEtFWTs7OzsKKzIzMjg7S0VZQk9BUkQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzI5O0xFRlQtUE9JTlRJTkcgQU5HTEUgQlJBQ0tFVDtQczswO09OOzMwMDg7Ozs7WTtCUkE7Ozs7CisyMzJBO1JJR0hULVBPSU5USU5HIEFOR0xFIEJSQUNLRVQ7UGU7MDtPTjszMDA5Ozs7O1k7S0VUOzs7OworMjMyQjtFUkFTRSBUTyBUSEUgTEVGVDtTbzswO09OOzs7OztOO0RFTEVURSBUTyBUSEUgTEVGVCBLRVk7Ozs7CisyMzJDO0JFTlpFTkUgUklORztTbzswO09OOzs7OztOOzs7OzsKKzIzMkQ7Q1lMSU5EUklDSVRZO1NvOzA7T047Ozs7O047Ozs7OworMjMyRTtBTEwgQVJPVU5ELVBST0ZJTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzJGO1NZTU1FVFJZO1NvOzA7T047Ozs7O047Ozs7OworMjMzMDtUT1RBTCBSVU5PVVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzMxO0RJTUVOU0lPTiBPUklHSU47U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzMyO0NPTklDQUwgVEFQRVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzMzO1NMT1BFO1NvOzA7T047Ozs7O047Ozs7OworMjMzNDtDT1VOVEVSQk9SRTtTbzswO09OOzs7OztOOzs7OzsKKzIzMzU7Q09VTlRFUlNJTks7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzM2O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBJLUJFQU07U287MDtMOzs7OztOOzs7OzsKKzIzMzc7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFNRVUlTSCBRVUFEO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzM4O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIEVRVUFMO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzM5O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIERJVklERTtTbzswO0w7Ozs7O047Ozs7OworMjMzQTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBESUFNT05EO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzNCO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIEpPVDtTbzswO0w7Ozs7O047Ozs7OworMjMzQztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBDSVJDTEU7U287MDtMOzs7OztOOzs7OzsKKzIzM0Q7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIENJUkNMRSBTVElMRTtTbzswO0w7Ozs7O047Ozs7OworMjMzRTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgQ0lSQ0xFIEpPVDtTbzswO0w7Ozs7O047Ozs7OworMjMzRjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgU0xBU0ggQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQwO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBCQUNLU0xBU0ggQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQxO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIFNMQVNIO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQyO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIEJBQ0tTTEFTSDtTbzswO0w7Ozs7O047Ozs7OworMjM0MztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBMRVNTLVRIQU47U287MDtMOzs7OztOOzs7OzsKKzIzNDQ7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgR1JFQVRFUi1USEFOO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQ1O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBMRUZUV0FSRFMgVkFORTtTbzswO0w7Ozs7O047Ozs7OworMjM0NjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUklHSFRXQVJEUyBWQU5FO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQ3O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIExFRlRXQVJEUyBBUlJPVztTbzswO0w7Ozs7O047Ozs7OworMjM0ODtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQ5O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgQkFDS1NMQVNIO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzRBO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOIFRBQ0sgVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNEI7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERFTFRBIFNUSUxFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzRDO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIERPV04gQ0FSRVQ7U287MDtMOzs7OztOOzs7OzsKKzIzNEQ7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgREVMVEE7U287MDtMOzs7OztOOzs7OzsKKzIzNEU7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERPV04gVEFDSyBKT1Q7U287MDtMOzs7OztOOzs7OzsKKzIzNEY7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQV0FSRFMgVkFORTtTbzswO0w7Ozs7O047Ozs7OworMjM1MDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBVUFdBUkRTIEFSUk9XO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzUxO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBVUCBUQUNLIE9WRVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNTI7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERFTCBTVElMRTtTbzswO0w7Ozs7O047Ozs7OworMjM1MztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBVUCBDQVJFVDtTbzswO0w7Ozs7O047Ozs7OworMjM1NDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBERUw7U287MDtMOzs7OztOOzs7OzsKKzIzNTU7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQIFRBQ0sgSk9UO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzU2O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOV0FSRFMgVkFORTtTbzswO0w7Ozs7O047Ozs7OworMjM1NztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBET1dOV0FSRFMgQVJST1c7U287MDtMOzs7OztOOzs7OzsKKzIzNTg7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVT1RFIFVOREVSQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzU5O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBERUxUQSBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM1QTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgRElBTU9ORCBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM1QjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgSk9UIFVOREVSQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzVDO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNUQ7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQIFNIT0UgSk9UO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzVFO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVU9URSBRVUFEO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzVGO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgU1RBUjtTbzswO0w7Ozs7O047Ozs7OworMjM2MDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBDT0xPTjtTbzswO0w7Ozs7O047Ozs7OworMjM2MTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgVVAgVEFDSyBESUFFUkVTSVM7U287MDtMOzs7OztOOzs7OzsKKzIzNjI7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERFTCBESUFFUkVTSVM7U287MDtMOzs7OztOOzs7OzsKKzIzNjM7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFNUQVIgRElBRVJFU0lTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzY0O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBKT1QgRElBRVJFU0lTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzY1O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgRElBRVJFU0lTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzY2O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOIFNIT0UgU1RJTEU7U287MDtMOzs7OztOOzs7OzsKKzIzNjc7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIExFRlQgU0hPRSBTVElMRTtTbzswO0w7Ozs7O047Ozs7OworMjM2ODtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgVElMREUgRElBRVJFU0lTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzY5O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBHUkVBVEVSLVRIQU4gRElBRVJFU0lTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzZBO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBDT01NQSBCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNkI7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERFTCBUSUxERTtTbzswO0w7Ozs7O047Ozs7OworMjM2QztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgWklMREU7U287MDtMOzs7OztOOzs7OzsKKzIzNkQ7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFNUSUxFIFRJTERFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzZFO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBTRU1JQ09MT04gVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNkY7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgTk9UIEVRVUFMO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzcwO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIFFVRVNUSU9OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzcxO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOIENBUkVUIFRJTERFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzcyO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBVUCBDQVJFVCBUSUxERTtTbzswO0w7Ozs7O047Ozs7OworMjM3MztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgSU9UQTtTbzswO0w7Ozs7O047Ozs7OworMjM3NDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUkhPO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzc1O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBPTUVHQTtTbzswO0w7Ozs7O047Ozs7OworMjM3NjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgQUxQSEEgVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNzc7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIEVQU0lMT04gVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNzg7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIElPVEEgVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNzk7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIE9NRUdBIFVOREVSQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzdBO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBBTFBIQTtTbzswO0w7Ozs7O047Ozs7OworMjQwMDtTWU1CT0wgRk9SIE5VTEw7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBOVUxMOzs7OworMjQwMTtTWU1CT0wgRk9SIFNUQVJUIE9GIEhFQURJTkc7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBTVEFSVCBPRiBIRUFESU5HOzs7OworMjQwMjtTWU1CT0wgRk9SIFNUQVJUIE9GIFRFWFQ7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBTVEFSVCBPRiBURVhUOzs7OworMjQwMztTWU1CT0wgRk9SIEVORCBPRiBURVhUO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgRU5EIE9GIFRFWFQ7Ozs7CisyNDA0O1NZTUJPTCBGT1IgRU5EIE9GIFRSQU5TTUlTU0lPTjtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEVORCBPRiBUUkFOU01JU1NJT047Ozs7CisyNDA1O1NZTUJPTCBGT1IgRU5RVUlSWTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEVOUVVJUlk7Ozs7CisyNDA2O1NZTUJPTCBGT1IgQUNLTk9XTEVER0U7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBBQ0tOT1dMRURHRTs7OzsKKzI0MDc7U1lNQk9MIEZPUiBCRUxMO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgQkVMTDs7OzsKKzI0MDg7U1lNQk9MIEZPUiBCQUNLU1BBQ0U7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBCQUNLU1BBQ0U7Ozs7CisyNDA5O1NZTUJPTCBGT1IgSE9SSVpPTlRBTCBUQUJVTEFUSU9OO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgSE9SSVpPTlRBTCBUQUJVTEFUSU9OOzs7OworMjQwQTtTWU1CT0wgRk9SIExJTkUgRkVFRDtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIExJTkUgRkVFRDs7OzsKKzI0MEI7U1lNQk9MIEZPUiBWRVJUSUNBTCBUQUJVTEFUSU9OO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgVkVSVElDQUwgVEFCVUxBVElPTjs7OzsKKzI0MEM7U1lNQk9MIEZPUiBGT1JNIEZFRUQ7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBGT1JNIEZFRUQ7Ozs7CisyNDBEO1NZTUJPTCBGT1IgQ0FSUklBR0UgUkVUVVJOO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgQ0FSUklBR0UgUkVUVVJOOzs7OworMjQwRTtTWU1CT0wgRk9SIFNISUZUIE9VVDtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFNISUZUIE9VVDs7OzsKKzI0MEY7U1lNQk9MIEZPUiBTSElGVCBJTjtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFNISUZUIElOOzs7OworMjQxMDtTWU1CT0wgRk9SIERBVEEgTElOSyBFU0NBUEU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBEQVRBIExJTksgRVNDQVBFOzs7OworMjQxMTtTWU1CT0wgRk9SIERFVklDRSBDT05UUk9MIE9ORTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIERFVklDRSBDT05UUk9MIE9ORTs7OzsKKzI0MTI7U1lNQk9MIEZPUiBERVZJQ0UgQ09OVFJPTCBUV087U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBERVZJQ0UgQ09OVFJPTCBUV087Ozs7CisyNDEzO1NZTUJPTCBGT1IgREVWSUNFIENPTlRST0wgVEhSRUU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBERVZJQ0UgQ09OVFJPTCBUSFJFRTs7OzsKKzI0MTQ7U1lNQk9MIEZPUiBERVZJQ0UgQ09OVFJPTCBGT1VSO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgREVWSUNFIENPTlRST0wgRk9VUjs7OzsKKzI0MTU7U1lNQk9MIEZPUiBORUdBVElWRSBBQ0tOT1dMRURHRTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIE5FR0FUSVZFIEFDS05PV0xFREdFOzs7OworMjQxNjtTWU1CT0wgRk9SIFNZTkNIUk9OT1VTIElETEU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBTWU5DSFJPTk9VUyBJRExFOzs7OworMjQxNztTWU1CT0wgRk9SIEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0s7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLOzs7OworMjQxODtTWU1CT0wgRk9SIENBTkNFTDtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIENBTkNFTDs7OzsKKzI0MTk7U1lNQk9MIEZPUiBFTkQgT0YgTUVESVVNO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgRU5EIE9GIE1FRElVTTs7OzsKKzI0MUE7U1lNQk9MIEZPUiBTVUJTVElUVVRFO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgU1VCU1RJVFVURTs7OzsKKzI0MUI7U1lNQk9MIEZPUiBFU0NBUEU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBFU0NBUEU7Ozs7CisyNDFDO1NZTUJPTCBGT1IgRklMRSBTRVBBUkFUT1I7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBGSUxFIFNFUEFSQVRPUjs7OzsKKzI0MUQ7U1lNQk9MIEZPUiBHUk9VUCBTRVBBUkFUT1I7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBHUk9VUCBTRVBBUkFUT1I7Ozs7CisyNDFFO1NZTUJPTCBGT1IgUkVDT1JEIFNFUEFSQVRPUjtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFJFQ09SRCBTRVBBUkFUT1I7Ozs7CisyNDFGO1NZTUJPTCBGT1IgVU5JVCBTRVBBUkFUT1I7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBVTklUIFNFUEFSQVRPUjs7OzsKKzI0MjA7U1lNQk9MIEZPUiBTUEFDRTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFNQQUNFOzs7OworMjQyMTtTWU1CT0wgRk9SIERFTEVURTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIERFTEVURTs7OzsKKzI0MjI7QkxBTksgU1lNQk9MO1NvOzA7T047Ozs7O047QkxBTks7Ozs7CisyNDIzO09QRU4gQk9YO1NvOzA7T047Ozs7O047Ozs7OworMjQyNDtTWU1CT0wgRk9SIE5FV0xJTkU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBORVdMSU5FOzs7OworMjQ0MDtPQ1IgSE9PSztTbzswO09OOzs7OztOOzs7OzsKKzI0NDE7T0NSIENIQUlSO1NvOzA7T047Ozs7O047Ozs7OworMjQ0MjtPQ1IgRk9SSztTbzswO09OOzs7OztOOzs7OzsKKzI0NDM7T0NSIElOVkVSVEVEIEZPUks7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDQ0O09DUiBCRUxUIEJVQ0tMRTtTbzswO09OOzs7OztOOzs7OzsKKzI0NDU7T0NSIEJPVyBUSUU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDQ2O09DUiBCUkFOQ0ggQkFOSyBJREVOVElGSUNBVElPTjtTbzswO09OOzs7OztOOzs7OzsKKzI0NDc7T0NSIEFNT1VOVCBPRiBDSEVDSztTbzswO09OOzs7OztOOzs7OzsKKzI0NDg7T0NSIERBU0g7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDQ5O09DUiBDVVNUT01FUiBBQ0NPVU5UIE5VTUJFUjtTbzswO09OOzs7OztOOzs7OzsKKzI0NEE7T0NSIERPVUJMRSBCQUNLU0xBU0g7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDYwO0NJUkNMRUQgRElHSVQgT05FO05vOzA7RU47PGNpcmNsZT4gMDAzMTs7MTsxO047Ozs7OworMjQ2MTtDSVJDTEVEIERJR0lUIFRXTztObzswO0VOOzxjaXJjbGU+IDAwMzI7OzI7MjtOOzs7OzsKKzI0NjI7Q0lSQ0xFRCBESUdJVCBUSFJFRTtObzswO0VOOzxjaXJjbGU+IDAwMzM7OzM7MztOOzs7OzsKKzI0NjM7Q0lSQ0xFRCBESUdJVCBGT1VSO05vOzA7RU47PGNpcmNsZT4gMDAzNDs7NDs0O047Ozs7OworMjQ2NDtDSVJDTEVEIERJR0lUIEZJVkU7Tm87MDtFTjs8Y2lyY2xlPiAwMDM1Ozs1OzU7Tjs7Ozs7CisyNDY1O0NJUkNMRUQgRElHSVQgU0lYO05vOzA7RU47PGNpcmNsZT4gMDAzNjs7Njs2O047Ozs7OworMjQ2NjtDSVJDTEVEIERJR0lUIFNFVkVOO05vOzA7RU47PGNpcmNsZT4gMDAzNzs7Nzs3O047Ozs7OworMjQ2NztDSVJDTEVEIERJR0lUIEVJR0hUO05vOzA7RU47PGNpcmNsZT4gMDAzODs7ODs4O047Ozs7OworMjQ2ODtDSVJDTEVEIERJR0lUIE5JTkU7Tm87MDtFTjs8Y2lyY2xlPiAwMDM5Ozs5Ozk7Tjs7Ozs7CisyNDY5O0NJUkNMRUQgTlVNQkVSIFRFTjtObzswO0VOOzxjaXJjbGU+IDAwMzEgMDAzMDs7OzEwO047Ozs7OworMjQ2QTtDSVJDTEVEIE5VTUJFUiBFTEVWRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzE7OzsxMTtOOzs7OzsKKzI0NkI7Q0lSQ0xFRCBOVU1CRVIgVFdFTFZFO05vOzA7RU47PGNpcmNsZT4gMDAzMSAwMDMyOzs7MTI7Tjs7Ozs7CisyNDZDO0NJUkNMRUQgTlVNQkVSIFRISVJURUVOO05vOzA7RU47PGNpcmNsZT4gMDAzMSAwMDMzOzs7MTM7Tjs7Ozs7CisyNDZEO0NJUkNMRUQgTlVNQkVSIEZPVVJURUVOO05vOzA7RU47PGNpcmNsZT4gMDAzMSAwMDM0Ozs7MTQ7Tjs7Ozs7CisyNDZFO0NJUkNMRUQgTlVNQkVSIEZJRlRFRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzU7OzsxNTtOOzs7OzsKKzI0NkY7Q0lSQ0xFRCBOVU1CRVIgU0lYVEVFTjtObzswO0VOOzxjaXJjbGU+IDAwMzEgMDAzNjs7OzE2O047Ozs7OworMjQ3MDtDSVJDTEVEIE5VTUJFUiBTRVZFTlRFRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzc7OzsxNztOOzs7OzsKKzI0NzE7Q0lSQ0xFRCBOVU1CRVIgRUlHSFRFRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzg7OzsxODtOOzs7OzsKKzI0NzI7Q0lSQ0xFRCBOVU1CRVIgTklORVRFRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzk7OzsxOTtOOzs7OzsKKzI0NzM7Q0lSQ0xFRCBOVU1CRVIgVFdFTlRZO05vOzA7RU47PGNpcmNsZT4gMDAzMiAwMDMwOzs7MjA7Tjs7Ozs7CisyNDc0O1BBUkVOVEhFU0laRUQgRElHSVQgT05FO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMjk7OzE7MTtOOzs7OzsKKzI0NzU7UEFSRU5USEVTSVpFRCBESUdJVCBUV087Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzIgMDAyOTs7MjsyO047Ozs7OworMjQ3NjtQQVJFTlRIRVNJWkVEIERJR0lUIFRIUkVFO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMzIDAwMjk7OzM7MztOOzs7OzsKKzI0Nzc7UEFSRU5USEVTSVpFRCBESUdJVCBGT1VSO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDM0IDAwMjk7OzQ7NDtOOzs7OzsKKzI0Nzg7UEFSRU5USEVTSVpFRCBESUdJVCBGSVZFO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDM1IDAwMjk7OzU7NTtOOzs7OzsKKzI0Nzk7UEFSRU5USEVTSVpFRCBESUdJVCBTSVg7Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzYgMDAyOTs7Njs2O047Ozs7OworMjQ3QTtQQVJFTlRIRVNJWkVEIERJR0lUIFNFVkVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDM3IDAwMjk7Ozc7NztOOzs7OzsKKzI0N0I7UEFSRU5USEVTSVpFRCBESUdJVCBFSUdIVDtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzOCAwMDI5Ozs4Ozg7Tjs7Ozs7CisyNDdDO1BBUkVOVEhFU0laRUQgRElHSVQgTklORTtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzOSAwMDI5Ozs5Ozk7Tjs7Ozs7CisyNDdEO1BBUkVOVEhFU0laRUQgTlVNQkVSIFRFTjtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMSAwMDMwIDAwMjk7OzsxMDtOOzs7OzsKKzI0N0U7UEFSRU5USEVTSVpFRCBOVU1CRVIgRUxFVkVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzEgMDAyOTs7OzExO047Ozs7OworMjQ3RjtQQVJFTlRIRVNJWkVEIE5VTUJFUiBUV0VMVkU7Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzEgMDAzMiAwMDI5Ozs7MTI7Tjs7Ozs7CisyNDgwO1BBUkVOVEhFU0laRUQgTlVNQkVSIFRISVJURUVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzMgMDAyOTs7OzEzO047Ozs7OworMjQ4MTtQQVJFTlRIRVNJWkVEIE5VTUJFUiBGT1VSVEVFTjtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMSAwMDM0IDAwMjk7OzsxNDtOOzs7OzsKKzI0ODI7UEFSRU5USEVTSVpFRCBOVU1CRVIgRklGVEVFTjtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMSAwMDM1IDAwMjk7OzsxNTtOOzs7OzsKKzI0ODM7UEFSRU5USEVTSVpFRCBOVU1CRVIgU0lYVEVFTjtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMSAwMDM2IDAwMjk7OzsxNjtOOzs7OzsKKzI0ODQ7UEFSRU5USEVTSVpFRCBOVU1CRVIgU0VWRU5URUVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzcgMDAyOTs7OzE3O047Ozs7OworMjQ4NTtQQVJFTlRIRVNJWkVEIE5VTUJFUiBFSUdIVEVFTjtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMSAwMDM4IDAwMjk7OzsxODtOOzs7OzsKKzI0ODY7UEFSRU5USEVTSVpFRCBOVU1CRVIgTklORVRFRU47Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzEgMDAzOSAwMDI5Ozs7MTk7Tjs7Ozs7CisyNDg3O1BBUkVOVEhFU0laRUQgTlVNQkVSIFRXRU5UWTtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMiAwMDMwIDAwMjk7OzsyMDtOOzs7OzsKKzI0ODg7RElHSVQgT05FIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzEgMDAyRTs7MTsxO047RElHSVQgT05FIFBFUklPRDs7OzsKKzI0ODk7RElHSVQgVFdPIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzIgMDAyRTs7MjsyO047RElHSVQgVFdPIFBFUklPRDs7OzsKKzI0OEE7RElHSVQgVEhSRUUgRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMyAwMDJFOzszOzM7TjtESUdJVCBUSFJFRSBQRVJJT0Q7Ozs7CisyNDhCO0RJR0lUIEZPVVIgRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzNCAwMDJFOzs0OzQ7TjtESUdJVCBGT1VSIFBFUklPRDs7OzsKKzI0OEM7RElHSVQgRklWRSBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDM1IDAwMkU7OzU7NTtOO0RJR0lUIEZJVkUgUEVSSU9EOzs7OworMjQ4RDtESUdJVCBTSVggRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzNiAwMDJFOzs2OzY7TjtESUdJVCBTSVggUEVSSU9EOzs7OworMjQ4RTtESUdJVCBTRVZFTiBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDM3IDAwMkU7Ozc7NztOO0RJR0lUIFNFVkVOIFBFUklPRDs7OzsKKzI0OEY7RElHSVQgRUlHSFQgRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzOCAwMDJFOzs4Ozg7TjtESUdJVCBFSUdIVCBQRVJJT0Q7Ozs7CisyNDkwO0RJR0lUIE5JTkUgRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzOSAwMDJFOzs5Ozk7TjtESUdJVCBOSU5FIFBFUklPRDs7OzsKKzI0OTE7TlVNQkVSIFRFTiBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDMxIDAwMzAgMDAyRTs7OzEwO047TlVNQkVSIFRFTiBQRVJJT0Q7Ozs7CisyNDkyO05VTUJFUiBFTEVWRU4gRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDMxIDAwMkU7OzsxMTtOO05VTUJFUiBFTEVWRU4gUEVSSU9EOzs7OworMjQ5MztOVU1CRVIgVFdFTFZFIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzEgMDAzMiAwMDJFOzs7MTI7TjtOVU1CRVIgVFdFTFZFIFBFUklPRDs7OzsKKzI0OTQ7TlVNQkVSIFRISVJURUVOIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzEgMDAzMyAwMDJFOzs7MTM7TjtOVU1CRVIgVEhJUlRFRU4gUEVSSU9EOzs7OworMjQ5NTtOVU1CRVIgRk9VUlRFRU4gRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDM0IDAwMkU7OzsxNDtOO05VTUJFUiBGT1VSVEVFTiBQRVJJT0Q7Ozs7CisyNDk2O05VTUJFUiBGSUZURUVOIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzEgMDAzNSAwMDJFOzs7MTU7TjtOVU1CRVIgRklGVEVFTiBQRVJJT0Q7Ozs7CisyNDk3O05VTUJFUiBTSVhURUVOIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzEgMDAzNiAwMDJFOzs7MTY7TjtOVU1CRVIgU0lYVEVFTiBQRVJJT0Q7Ozs7CisyNDk4O05VTUJFUiBTRVZFTlRFRU4gRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDM3IDAwMkU7OzsxNztOO05VTUJFUiBTRVZFTlRFRU4gUEVSSU9EOzs7OworMjQ5OTtOVU1CRVIgRUlHSFRFRU4gRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDM4IDAwMkU7OzsxODtOO05VTUJFUiBFSUdIVEVFTiBQRVJJT0Q7Ozs7CisyNDlBO05VTUJFUiBOSU5FVEVFTiBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDMxIDAwMzkgMDAyRTs7OzE5O047TlVNQkVSIE5JTkVURUVOIFBFUklPRDs7OzsKKzI0OUI7TlVNQkVSIFRXRU5UWSBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDMyIDAwMzAgMDAyRTs7OzIwO047TlVNQkVSIFRXRU5UWSBQRVJJT0Q7Ozs7CisyNDlDO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMDA2MSAwMDI5Ozs7O047Ozs7OworMjQ5RDtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBCO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNjIgMDAyOTs7OztOOzs7OzsKKzI0OUU7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgQztTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDYzIDAwMjk7Ozs7Tjs7Ozs7CisyNDlGO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEQ7U287MDtMOzxjb21wYXQ+IDAwMjggMDA2NCAwMDI5Ozs7O047Ozs7OworMjRBMDtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBFO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNjUgMDAyOTs7OztOOzs7OzsKKzI0QTE7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgRjtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDY2IDAwMjk7Ozs7Tjs7Ozs7CisyNEEyO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEc7U287MDtMOzxjb21wYXQ+IDAwMjggMDA2NyAwMDI5Ozs7O047Ozs7OworMjRBMztQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBIO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNjggMDAyOTs7OztOOzs7OzsKKzI0QTQ7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgSTtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDY5IDAwMjk7Ozs7Tjs7Ozs7CisyNEE1O1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEo7U287MDtMOzxjb21wYXQ+IDAwMjggMDA2QSAwMDI5Ozs7O047Ozs7OworMjRBNjtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBLO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNkIgMDAyOTs7OztOOzs7OzsKKzI0QTc7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgTDtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDZDIDAwMjk7Ozs7Tjs7Ozs7CisyNEE4O1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIE07U287MDtMOzxjb21wYXQ+IDAwMjggMDA2RCAwMDI5Ozs7O047Ozs7OworMjRBOTtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBOO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNkUgMDAyOTs7OztOOzs7OzsKKzI0QUE7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgTztTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDZGIDAwMjk7Ozs7Tjs7Ozs7CisyNEFCO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFA7U287MDtMOzxjb21wYXQ+IDAwMjggMDA3MCAwMDI5Ozs7O047Ozs7OworMjRBQztQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBRO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNzEgMDAyOTs7OztOOzs7OzsKKzI0QUQ7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgUjtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDcyIDAwMjk7Ozs7Tjs7Ozs7CisyNEFFO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFM7U287MDtMOzxjb21wYXQ+IDAwMjggMDA3MyAwMDI5Ozs7O047Ozs7OworMjRBRjtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBUO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNzQgMDAyOTs7OztOOzs7OzsKKzI0QjA7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgVTtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDc1IDAwMjk7Ozs7Tjs7Ozs7CisyNEIxO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFY7U287MDtMOzxjb21wYXQ+IDAwMjggMDA3NiAwMDI5Ozs7O047Ozs7OworMjRCMjtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBXO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNzcgMDAyOTs7OztOOzs7OzsKKzI0QjM7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgWDtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDc4IDAwMjk7Ozs7Tjs7Ozs7CisyNEI0O1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFk7U287MDtMOzxjb21wYXQ+IDAwMjggMDA3OSAwMDI5Ozs7O047Ozs7OworMjRCNTtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBaO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwN0EgMDAyOTs7OztOOzs7OzsKKzI0QjY7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBBO1NvOzA7TDs8Y2lyY2xlPiAwMDQxOzs7O047Ozs7MjREMDsKKzI0Qjc7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBCO1NvOzA7TDs8Y2lyY2xlPiAwMDQyOzs7O047Ozs7MjREMTsKKzI0Qjg7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBDO1NvOzA7TDs8Y2lyY2xlPiAwMDQzOzs7O047Ozs7MjREMjsKKzI0Qjk7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBEO1NvOzA7TDs8Y2lyY2xlPiAwMDQ0Ozs7O047Ozs7MjREMzsKKzI0QkE7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBFO1NvOzA7TDs8Y2lyY2xlPiAwMDQ1Ozs7O047Ozs7MjRENDsKKzI0QkI7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBGO1NvOzA7TDs8Y2lyY2xlPiAwMDQ2Ozs7O047Ozs7MjRENTsKKzI0QkM7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBHO1NvOzA7TDs8Y2lyY2xlPiAwMDQ3Ozs7O047Ozs7MjRENjsKKzI0QkQ7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBIO1NvOzA7TDs8Y2lyY2xlPiAwMDQ4Ozs7O047Ozs7MjRENzsKKzI0QkU7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBJO1NvOzA7TDs8Y2lyY2xlPiAwMDQ5Ozs7O047Ozs7MjREODsKKzI0QkY7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBKO1NvOzA7TDs8Y2lyY2xlPiAwMDRBOzs7O047Ozs7MjREOTsKKzI0QzA7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBLO1NvOzA7TDs8Y2lyY2xlPiAwMDRCOzs7O047Ozs7MjREQTsKKzI0QzE7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBMO1NvOzA7TDs8Y2lyY2xlPiAwMDRDOzs7O047Ozs7MjREQjsKKzI0QzI7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBNO1NvOzA7TDs8Y2lyY2xlPiAwMDREOzs7O047Ozs7MjREQzsKKzI0QzM7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBOO1NvOzA7TDs8Y2lyY2xlPiAwMDRFOzs7O047Ozs7MjRERDsKKzI0QzQ7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBPO1NvOzA7TDs8Y2lyY2xlPiAwMDRGOzs7O047Ozs7MjRERTsKKzI0QzU7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBQO1NvOzA7TDs8Y2lyY2xlPiAwMDUwOzs7O047Ozs7MjRERjsKKzI0QzY7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBRO1NvOzA7TDs8Y2lyY2xlPiAwMDUxOzs7O047Ozs7MjRFMDsKKzI0Qzc7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBSO1NvOzA7TDs8Y2lyY2xlPiAwMDUyOzs7O047Ozs7MjRFMTsKKzI0Qzg7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBTO1NvOzA7TDs8Y2lyY2xlPiAwMDUzOzs7O047Ozs7MjRFMjsKKzI0Qzk7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBUO1NvOzA7TDs8Y2lyY2xlPiAwMDU0Ozs7O047Ozs7MjRFMzsKKzI0Q0E7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBVO1NvOzA7TDs8Y2lyY2xlPiAwMDU1Ozs7O047Ozs7MjRFNDsKKzI0Q0I7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBWO1NvOzA7TDs8Y2lyY2xlPiAwMDU2Ozs7O047Ozs7MjRFNTsKKzI0Q0M7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBXO1NvOzA7TDs8Y2lyY2xlPiAwMDU3Ozs7O047Ozs7MjRFNjsKKzI0Q0Q7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBYO1NvOzA7TDs8Y2lyY2xlPiAwMDU4Ozs7O047Ozs7MjRFNzsKKzI0Q0U7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBZO1NvOzA7TDs8Y2lyY2xlPiAwMDU5Ozs7O047Ozs7MjRFODsKKzI0Q0Y7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBaO1NvOzA7TDs8Y2lyY2xlPiAwMDVBOzs7O047Ozs7MjRFOTsKKzI0RDA7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgQTtTbzswO0w7PGNpcmNsZT4gMDA2MTs7OztOOzs7MjRCNjs7MjRCNgorMjREMTtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBCO1NvOzA7TDs8Y2lyY2xlPiAwMDYyOzs7O047OzsyNEI3OzsyNEI3CisyNEQyO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEM7U287MDtMOzxjaXJjbGU+IDAwNjM7Ozs7Tjs7OzI0Qjg7OzI0QjgKKzI0RDM7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgRDtTbzswO0w7PGNpcmNsZT4gMDA2NDs7OztOOzs7MjRCOTs7MjRCOQorMjRENDtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBFO1NvOzA7TDs8Y2lyY2xlPiAwMDY1Ozs7O047OzsyNEJBOzsyNEJBCisyNEQ1O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEY7U287MDtMOzxjaXJjbGU+IDAwNjY7Ozs7Tjs7OzI0QkI7OzI0QkIKKzI0RDY7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgRztTbzswO0w7PGNpcmNsZT4gMDA2Nzs7OztOOzs7MjRCQzs7MjRCQworMjRENztDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBIO1NvOzA7TDs8Y2lyY2xlPiAwMDY4Ozs7O047OzsyNEJEOzsyNEJECisyNEQ4O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEk7U287MDtMOzxjaXJjbGU+IDAwNjk7Ozs7Tjs7OzI0QkU7OzI0QkUKKzI0RDk7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgSjtTbzswO0w7PGNpcmNsZT4gMDA2QTs7OztOOzs7MjRCRjs7MjRCRgorMjREQTtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBLO1NvOzA7TDs8Y2lyY2xlPiAwMDZCOzs7O047OzsyNEMwOzsyNEMwCisyNERCO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEw7U287MDtMOzxjaXJjbGU+IDAwNkM7Ozs7Tjs7OzI0QzE7OzI0QzEKKzI0REM7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgTTtTbzswO0w7PGNpcmNsZT4gMDA2RDs7OztOOzs7MjRDMjs7MjRDMgorMjRERDtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBOO1NvOzA7TDs8Y2lyY2xlPiAwMDZFOzs7O047OzsyNEMzOzsyNEMzCisyNERFO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIE87U287MDtMOzxjaXJjbGU+IDAwNkY7Ozs7Tjs7OzI0QzQ7OzI0QzQKKzI0REY7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgUDtTbzswO0w7PGNpcmNsZT4gMDA3MDs7OztOOzs7MjRDNTs7MjRDNQorMjRFMDtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBRO1NvOzA7TDs8Y2lyY2xlPiAwMDcxOzs7O047OzsyNEM2OzsyNEM2CisyNEUxO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFI7U287MDtMOzxjaXJjbGU+IDAwNzI7Ozs7Tjs7OzI0Qzc7OzI0QzcKKzI0RTI7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgUztTbzswO0w7PGNpcmNsZT4gMDA3Mzs7OztOOzs7MjRDODs7MjRDOAorMjRFMztDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBUO1NvOzA7TDs8Y2lyY2xlPiAwMDc0Ozs7O047OzsyNEM5OzsyNEM5CisyNEU0O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFU7U287MDtMOzxjaXJjbGU+IDAwNzU7Ozs7Tjs7OzI0Q0E7OzI0Q0EKKzI0RTU7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgVjtTbzswO0w7PGNpcmNsZT4gMDA3Njs7OztOOzs7MjRDQjs7MjRDQgorMjRFNjtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBXO1NvOzA7TDs8Y2lyY2xlPiAwMDc3Ozs7O047OzsyNENDOzsyNENDCisyNEU3O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFg7U287MDtMOzxjaXJjbGU+IDAwNzg7Ozs7Tjs7OzI0Q0Q7OzI0Q0QKKzI0RTg7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgWTtTbzswO0w7PGNpcmNsZT4gMDA3OTs7OztOOzs7MjRDRTs7MjRDRQorMjRFOTtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBaO1NvOzA7TDs8Y2lyY2xlPiAwMDdBOzs7O047OzsyNENGOzsyNENGCisyNEVBO0NJUkNMRUQgRElHSVQgWkVSTztObzswO0VOOzxjaXJjbGU+IDAwMzA7OzA7MDtOOzs7OzsKKzI1MDA7Qk9YIERSQVdJTkdTIExJR0hUIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBIT1JJWk9OVEFMOzs7OworMjUwMTtCT1ggRFJBV0lOR1MgSEVBVlkgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIEhPUklaT05UQUw7Ozs7CisyNTAyO0JPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFZFUlRJQ0FMOzs7OworMjUwMztCT1ggRFJBV0lOR1MgSEVBVlkgVkVSVElDQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBWRVJUSUNBTDs7OzsKKzI1MDQ7Qk9YIERSQVdJTkdTIExJR0hUIFRSSVBMRSBEQVNIIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBUUklQTEUgREFTSCBIT1JJWk9OVEFMOzs7OworMjUwNTtCT1ggRFJBV0lOR1MgSEVBVlkgVFJJUExFIERBU0ggSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFRSSVBMRSBEQVNIIEhPUklaT05UQUw7Ozs7CisyNTA2O0JPWCBEUkFXSU5HUyBMSUdIVCBUUklQTEUgREFTSCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFRSSVBMRSBEQVNIIFZFUlRJQ0FMOzs7OworMjUwNztCT1ggRFJBV0lOR1MgSEVBVlkgVFJJUExFIERBU0ggVkVSVElDQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBUUklQTEUgREFTSCBWRVJUSUNBTDs7OzsKKzI1MDg7Qk9YIERSQVdJTkdTIExJR0hUIFFVQURSVVBMRSBEQVNIIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBRVUFEUlVQTEUgREFTSCBIT1JJWk9OVEFMOzs7OworMjUwOTtCT1ggRFJBV0lOR1MgSEVBVlkgUVVBRFJVUExFIERBU0ggSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFFVQURSVVBMRSBEQVNIIEhPUklaT05UQUw7Ozs7CisyNTBBO0JPWCBEUkFXSU5HUyBMSUdIVCBRVUFEUlVQTEUgREFTSCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFFVQURSVVBMRSBEQVNIIFZFUlRJQ0FMOzs7OworMjUwQjtCT1ggRFJBV0lOR1MgSEVBVlkgUVVBRFJVUExFIERBU0ggVkVSVElDQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBRVUFEUlVQTEUgREFTSCBWRVJUSUNBTDs7OzsKKzI1MEM7Qk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgRE9XTiBBTkQgUklHSFQ7Ozs7CisyNTBEO0JPWCBEUkFXSU5HUyBET1dOIExJR0hUIEFORCBSSUdIVCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gTElHSFQgQU5EIFJJR0hUIEhFQVZZOzs7OworMjUwRTtCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgUklHSFQgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIEhFQVZZIEFORCBSSUdIVCBMSUdIVDs7OzsKKzI1MEY7Qk9YIERSQVdJTkdTIEhFQVZZIERPV04gQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9XTiBBTkQgUklHSFQ7Ozs7CisyNTEwO0JPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgRE9XTiBBTkQgTEVGVDs7OzsKKzI1MTE7Qk9YIERSQVdJTkdTIERPV04gTElHSFQgQU5EIExFRlQgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIExJR0hUIEFORCBMRUZUIEhFQVZZOzs7OworMjUxMjtCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgTEVGVCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gSEVBVlkgQU5EIExFRlQgTElHSFQ7Ozs7CisyNTEzO0JPWCBEUkFXSU5HUyBIRUFWWSBET1dOIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9XTiBBTkQgTEVGVDs7OzsKKzI1MTQ7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFVQIEFORCBSSUdIVDs7OzsKKzI1MTU7Qk9YIERSQVdJTkdTIFVQIExJR0hUIEFORCBSSUdIVCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBSSUdIVCBIRUFWWTs7OzsKKzI1MTY7Qk9YIERSQVdJTkdTIFVQIEhFQVZZIEFORCBSSUdIVCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFVQIEhFQVZZIEFORCBSSUdIVCBMSUdIVDs7OzsKKzI1MTc7Qk9YIERSQVdJTkdTIEhFQVZZIFVQIEFORCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFVQIEFORCBSSUdIVDs7OzsKKzI1MTg7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgVVAgQU5EIExFRlQ7Ozs7CisyNTE5O0JPWCBEUkFXSU5HUyBVUCBMSUdIVCBBTkQgTEVGVCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBMRUZUIEhFQVZZOzs7OworMjUxQTtCT1ggRFJBV0lOR1MgVVAgSEVBVlkgQU5EIExFRlQgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBIRUFWWSBBTkQgTEVGVCBMSUdIVDs7OzsKKzI1MUI7Qk9YIERSQVdJTkdTIEhFQVZZIFVQIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgVVAgQU5EIExFRlQ7Ozs7CisyNTFDO0JPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQ7Ozs7CisyNTFEO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBMSUdIVCBBTkQgUklHSFQgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBMSUdIVCBBTkQgUklHSFQgSEVBVlk7Ozs7CisyNTFFO0JPWCBEUkFXSU5HUyBVUCBIRUFWWSBBTkQgUklHSFQgRE9XTiBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFVQIEhFQVZZIEFORCBSSUdIVCBET1dOIExJR0hUOzs7OworMjUxRjtCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgUklHSFQgVVAgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIEhFQVZZIEFORCBSSUdIVCBVUCBMSUdIVDs7OzsKKzI1MjA7Qk9YIERSQVdJTkdTIFZFUlRJQ0FMIEhFQVZZIEFORCBSSUdIVCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIEhFQVZZIEFORCBSSUdIVCBMSUdIVDs7OzsKKzI1MjE7Qk9YIERSQVdJTkdTIERPV04gTElHSFQgQU5EIFJJR0hUIFVQIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBMSUdIVCBBTkQgUklHSFQgVVAgSEVBVlk7Ozs7CisyNTIyO0JPWCBEUkFXSU5HUyBVUCBMSUdIVCBBTkQgUklHSFQgRE9XTiBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBSSUdIVCBET1dOIEhFQVZZOzs7OworMjUyMztCT1ggRFJBV0lOR1MgSEVBVlkgVkVSVElDQUwgQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgVkVSVElDQUwgQU5EIFJJR0hUOzs7OworMjUyNDtCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVDs7OzsKKzI1MjU7Qk9YIERSQVdJTkdTIFZFUlRJQ0FMIExJR0hUIEFORCBMRUZUIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgVkVSVElDQUwgTElHSFQgQU5EIExFRlQgSEVBVlk7Ozs7CisyNTI2O0JPWCBEUkFXSU5HUyBVUCBIRUFWWSBBTkQgTEVGVCBET1dOIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgVVAgSEVBVlkgQU5EIExFRlQgRE9XTiBMSUdIVDs7OzsKKzI1Mjc7Qk9YIERSQVdJTkdTIERPV04gSEVBVlkgQU5EIExFRlQgVVAgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIEhFQVZZIEFORCBMRUZUIFVQIExJR0hUOzs7OworMjUyODtCT1ggRFJBV0lOR1MgVkVSVElDQUwgSEVBVlkgQU5EIExFRlQgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBIRUFWWSBBTkQgTEVGVCBMSUdIVDs7OzsKKzI1Mjk7Qk9YIERSQVdJTkdTIERPV04gTElHSFQgQU5EIExFRlQgVVAgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIExJR0hUIEFORCBMRUZUIFVQIEhFQVZZOzs7OworMjUyQTtCT1ggRFJBV0lOR1MgVVAgTElHSFQgQU5EIExFRlQgRE9XTiBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBMRUZUIERPV04gSEVBVlk7Ozs7CisyNTJCO0JPWCBEUkFXSU5HUyBIRUFWWSBWRVJUSUNBTCBBTkQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFZFUlRJQ0FMIEFORCBMRUZUOzs7OworMjUyQztCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERPV04gQU5EIEhPUklaT05UQUw7Ozs7CisyNTJEO0JPWCBEUkFXSU5HUyBMRUZUIEhFQVZZIEFORCBSSUdIVCBET1dOIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBIRUFWWSBBTkQgUklHSFQgRE9XTiBMSUdIVDs7OzsKKzI1MkU7Qk9YIERSQVdJTkdTIFJJR0hUIEhFQVZZIEFORCBMRUZUIERPV04gTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBIRUFWWSBBTkQgTEVGVCBET1dOIExJR0hUOzs7OworMjUyRjtCT1ggRFJBV0lOR1MgRE9XTiBMSUdIVCBBTkQgSE9SSVpPTlRBTCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gTElHSFQgQU5EIEhPUklaT05UQUwgSEVBVlk7Ozs7CisyNTMwO0JPWCBEUkFXSU5HUyBET1dOIEhFQVZZIEFORCBIT1JJWk9OVEFMIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBIRUFWWSBBTkQgSE9SSVpPTlRBTCBMSUdIVDs7OzsKKzI1MzE7Qk9YIERSQVdJTkdTIFJJR0hUIExJR0hUIEFORCBMRUZUIERPV04gSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBMSUdIVCBBTkQgTEVGVCBET1dOIEhFQVZZOzs7OworMjUzMjtCT1ggRFJBV0lOR1MgTEVGVCBMSUdIVCBBTkQgUklHSFQgRE9XTiBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIExFRlQgTElHSFQgQU5EIFJJR0hUIERPV04gSEVBVlk7Ozs7CisyNTMzO0JPWCBEUkFXSU5HUyBIRUFWWSBET1dOIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9XTiBBTkQgSE9SSVpPTlRBTDs7OzsKKzI1MzQ7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgVVAgQU5EIEhPUklaT05UQUw7Ozs7CisyNTM1O0JPWCBEUkFXSU5HUyBMRUZUIEhFQVZZIEFORCBSSUdIVCBVUCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExFRlQgSEVBVlkgQU5EIFJJR0hUIFVQIExJR0hUOzs7OworMjUzNjtCT1ggRFJBV0lOR1MgUklHSFQgSEVBVlkgQU5EIExFRlQgVVAgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBIRUFWWSBBTkQgTEVGVCBVUCBMSUdIVDs7OzsKKzI1Mzc7Qk9YIERSQVdJTkdTIFVQIExJR0hUIEFORCBIT1JJWk9OVEFMIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgVVAgTElHSFQgQU5EIEhPUklaT05UQUwgSEVBVlk7Ozs7CisyNTM4O0JPWCBEUkFXSU5HUyBVUCBIRUFWWSBBTkQgSE9SSVpPTlRBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFVQIEhFQVZZIEFORCBIT1JJWk9OVEFMIExJR0hUOzs7OworMjUzOTtCT1ggRFJBV0lOR1MgUklHSFQgTElHSFQgQU5EIExFRlQgVVAgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBMSUdIVCBBTkQgTEVGVCBVUCBIRUFWWTs7OzsKKzI1M0E7Qk9YIERSQVdJTkdTIExFRlQgTElHSFQgQU5EIFJJR0hUIFVQIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBMSUdIVCBBTkQgUklHSFQgVVAgSEVBVlk7Ozs7CisyNTNCO0JPWCBEUkFXSU5HUyBIRUFWWSBVUCBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFVQIEFORCBIT1JJWk9OVEFMOzs7OworMjUzQztCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDs7OzsKKzI1M0Q7Qk9YIERSQVdJTkdTIExFRlQgSEVBVlkgQU5EIFJJR0hUIFZFUlRJQ0FMIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBIRUFWWSBBTkQgUklHSFQgVkVSVElDQUwgTElHSFQ7Ozs7CisyNTNFO0JPWCBEUkFXSU5HUyBSSUdIVCBIRUFWWSBBTkQgTEVGVCBWRVJUSUNBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFJJR0hUIEhFQVZZIEFORCBMRUZUIFZFUlRJQ0FMIExJR0hUOzs7OworMjUzRjtCT1ggRFJBV0lOR1MgVkVSVElDQUwgTElHSFQgQU5EIEhPUklaT05UQUwgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBMSUdIVCBBTkQgSE9SSVpPTlRBTCBIRUFWWTs7OzsKKzI1NDA7Qk9YIERSQVdJTkdTIFVQIEhFQVZZIEFORCBET1dOIEhPUklaT05UQUwgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBIRUFWWSBBTkQgRE9XTiBIT1JJWk9OVEFMIExJR0hUOzs7OworMjU0MTtCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgVVAgSE9SSVpPTlRBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gSEVBVlkgQU5EIFVQIEhPUklaT05UQUwgTElHSFQ7Ozs7CisyNTQyO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBIRUFWWSBBTkQgSE9SSVpPTlRBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIEhFQVZZIEFORCBIT1JJWk9OVEFMIExJR0hUOzs7OworMjU0MztCT1ggRFJBV0lOR1MgTEVGVCBVUCBIRUFWWSBBTkQgUklHSFQgRE9XTiBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExFRlQgVVAgSEVBVlkgQU5EIFJJR0hUIERPV04gTElHSFQ7Ozs7CisyNTQ0O0JPWCBEUkFXSU5HUyBSSUdIVCBVUCBIRUFWWSBBTkQgTEVGVCBET1dOIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgUklHSFQgVVAgSEVBVlkgQU5EIExFRlQgRE9XTiBMSUdIVDs7OzsKKzI1NDU7Qk9YIERSQVdJTkdTIExFRlQgRE9XTiBIRUFWWSBBTkQgUklHSFQgVVAgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMRUZUIERPV04gSEVBVlkgQU5EIFJJR0hUIFVQIExJR0hUOzs7OworMjU0NjtCT1ggRFJBV0lOR1MgUklHSFQgRE9XTiBIRUFWWSBBTkQgTEVGVCBVUCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFJJR0hUIERPV04gSEVBVlkgQU5EIExFRlQgVVAgTElHSFQ7Ozs7CisyNTQ3O0JPWCBEUkFXSU5HUyBET1dOIExJR0hUIEFORCBVUCBIT1JJWk9OVEFMIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBMSUdIVCBBTkQgVVAgSE9SSVpPTlRBTCBIRUFWWTs7OzsKKzI1NDg7Qk9YIERSQVdJTkdTIFVQIExJR0hUIEFORCBET1dOIEhPUklaT05UQUwgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBMSUdIVCBBTkQgRE9XTiBIT1JJWk9OVEFMIEhFQVZZOzs7OworMjU0OTtCT1ggRFJBV0lOR1MgUklHSFQgTElHSFQgQU5EIExFRlQgVkVSVElDQUwgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBMSUdIVCBBTkQgTEVGVCBWRVJUSUNBTCBIRUFWWTs7OzsKKzI1NEE7Qk9YIERSQVdJTkdTIExFRlQgTElHSFQgQU5EIFJJR0hUIFZFUlRJQ0FMIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBMSUdIVCBBTkQgUklHSFQgVkVSVElDQUwgSEVBVlk7Ozs7CisyNTRCO0JPWCBEUkFXSU5HUyBIRUFWWSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMOzs7OworMjU0QztCT1ggRFJBV0lOR1MgTElHSFQgRE9VQkxFIERBU0ggSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERPVUJMRSBEQVNIIEhPUklaT05UQUw7Ozs7CisyNTREO0JPWCBEUkFXSU5HUyBIRUFWWSBET1VCTEUgREFTSCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9VQkxFIERBU0ggSE9SSVpPTlRBTDs7OzsKKzI1NEU7Qk9YIERSQVdJTkdTIExJR0hUIERPVUJMRSBEQVNIIFZFUlRJQ0FMO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgRE9VQkxFIERBU0ggVkVSVElDQUw7Ozs7CisyNTRGO0JPWCBEUkFXSU5HUyBIRUFWWSBET1VCTEUgREFTSCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIERPVUJMRSBEQVNIIFZFUlRJQ0FMOzs7OworMjU1MDtCT1ggRFJBV0lOR1MgRE9VQkxFIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgSE9SSVpPTlRBTDs7OzsKKzI1NTE7Qk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBWRVJUSUNBTDs7OzsKKzI1NTI7Qk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFOzs7OworMjU1MztCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gRE9VQkxFIEFORCBSSUdIVCBTSU5HTEU7Ozs7CisyNTU0O0JPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgRE9XTiBBTkQgUklHSFQ7Ozs7CisyNTU1O0JPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7Ozs7CisyNTU2O0JPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEU7Ozs7CisyNTU3O0JPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBET1dOIEFORCBMRUZUOzs7OworMjU1ODtCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBSSUdIVCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRTs7OzsKKzI1NTk7Qk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFO1NvOzA7T047Ozs7O047Rk9STVMgVVAgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEU7Ozs7CisyNTVBO0JPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgRE9VQkxFIFVQIEFORCBSSUdIVDs7OzsKKzI1NUI7Qk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFOzs7OworMjU1QztCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBMRUZUIFNJTkdMRTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIERPVUJMRSBBTkQgTEVGVCBTSU5HTEU7Ozs7CisyNTVEO0JPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgVVAgQU5EIExFRlQ7Ozs7CisyNTVFO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFOzs7OworMjU1RjtCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRTs7OzsKKzI1NjA7Qk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUOzs7OworMjU2MTtCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBMRUZUIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7Ozs7CisyNTYyO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIExFRlQgU0lOR0xFO1NvOzA7T047Ozs7O047Rk9STVMgVkVSVElDQUwgRE9VQkxFIEFORCBMRUZUIFNJTkdMRTs7OzsKKzI1NjM7Qk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVDs7OzsKKzI1NjQ7Qk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTs7OzsKKzI1NjU7Qk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRTs7OzsKKzI1NjY7Qk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUw7Ozs7CisyNTY3O0JPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFO1NvOzA7T047Ozs7O047Rk9STVMgVVAgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTs7OzsKKzI1Njg7Qk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFOzs7OworMjU2OTtCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMOzs7OworMjU2QTtCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEU7Ozs7CisyNTZCO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFO1NvOzA7T047Ozs7O047Rk9STVMgVkVSVElDQUwgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRTs7OzsKKzI1NkM7Qk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDs7OzsKKzI1NkQ7Qk9YIERSQVdJTkdTIExJR0hUIEFSQyBET1dOIEFORCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIEFSQyBET1dOIEFORCBSSUdIVDs7OzsKKzI1NkU7Qk9YIERSQVdJTkdTIExJR0hUIEFSQyBET1dOIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgQVJDIERPV04gQU5EIExFRlQ7Ozs7CisyNTZGO0JPWCBEUkFXSU5HUyBMSUdIVCBBUkMgVVAgQU5EIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBBUkMgVVAgQU5EIExFRlQ7Ozs7CisyNTcwO0JPWCBEUkFXSU5HUyBMSUdIVCBBUkMgVVAgQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgQVJDIFVQIEFORCBSSUdIVDs7OzsKKzI1NzE7Qk9YIERSQVdJTkdTIExJR0hUIERJQUdPTkFMIFVQUEVSIFJJR0hUIFRPIExPV0VSIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBESUFHT05BTCBVUFBFUiBSSUdIVCBUTyBMT1dFUiBMRUZUOzs7OworMjU3MjtCT1ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgTEVGVCBUTyBMT1dFUiBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERJQUdPTkFMIFVQUEVSIExFRlQgVE8gTE9XRVIgUklHSFQ7Ozs7CisyNTczO0JPWCBEUkFXSU5HUyBMSUdIVCBESUFHT05BTCBDUk9TUztTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERJQUdPTkFMIENST1NTOzs7OworMjU3NDtCT1ggRFJBV0lOR1MgTElHSFQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIExFRlQ7Ozs7CisyNTc1O0JPWCBEUkFXSU5HUyBMSUdIVCBVUDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFVQOzs7OworMjU3NjtCT1ggRFJBV0lOR1MgTElHSFQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBSSUdIVDs7OzsKKzI1Nzc7Qk9YIERSQVdJTkdTIExJR0hUIERPV047U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBET1dOOzs7OworMjU3ODtCT1ggRFJBV0lOR1MgSEVBVlkgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIExFRlQ7Ozs7CisyNTc5O0JPWCBEUkFXSU5HUyBIRUFWWSBVUDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFVQOzs7OworMjU3QTtCT1ggRFJBV0lOR1MgSEVBVlkgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBSSUdIVDs7OzsKKzI1N0I7Qk9YIERSQVdJTkdTIEhFQVZZIERPV047U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBET1dOOzs7OworMjU3QztCT1ggRFJBV0lOR1MgTElHSFQgTEVGVCBBTkQgSEVBVlkgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBMRUZUIEFORCBIRUFWWSBSSUdIVDs7OzsKKzI1N0Q7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIRUFWWSBET1dOO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgVVAgQU5EIEhFQVZZIERPV047Ozs7CisyNTdFO0JPWCBEUkFXSU5HUyBIRUFWWSBMRUZUIEFORCBMSUdIVCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIExFRlQgQU5EIExJR0hUIFJJR0hUOzs7OworMjU3RjtCT1ggRFJBV0lOR1MgSEVBVlkgVVAgQU5EIExJR0hUIERPV047U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBVUCBBTkQgTElHSFQgRE9XTjs7OzsKKzI1ODA7VVBQRVIgSEFMRiBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1ODE7TE9XRVIgT05FIEVJR0hUSCBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1ODI7TE9XRVIgT05FIFFVQVJURVIgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTgzO0xPV0VSIFRIUkVFIEVJR0hUSFMgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTg0O0xPV0VSIEhBTEYgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTg1O0xPV0VSIEZJVkUgRUlHSFRIUyBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1ODY7TE9XRVIgVEhSRUUgUVVBUlRFUlMgQkxPQ0s7U287MDtPTjs7Ozs7TjtMT1dFUiBUSFJFRSBRVUFSVEVSIEJMT0NLOzs7OworMjU4NztMT1dFUiBTRVZFTiBFSUdIVEhTIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU4ODtGVUxMIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU4OTtMRUZUIFNFVkVOIEVJR0hUSFMgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNThBO0xFRlQgVEhSRUUgUVVBUlRFUlMgQkxPQ0s7U287MDtPTjs7Ozs7TjtMRUZUIFRIUkVFIFFVQVJURVIgQkxPQ0s7Ozs7CisyNThCO0xFRlQgRklWRSBFSUdIVEhTIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU4QztMRUZUIEhBTEYgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNThEO0xFRlQgVEhSRUUgRUlHSFRIUyBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1OEU7TEVGVCBPTkUgUVVBUlRFUiBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1OEY7TEVGVCBPTkUgRUlHSFRIIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU5MDtSSUdIVCBIQUxGIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU5MTtMSUdIVCBTSEFERTtTbzswO09OOzs7OztOOzs7OzsKKzI1OTI7TUVESVVNIFNIQURFO1NvOzA7T047Ozs7O047Ozs7OworMjU5MztEQVJLIFNIQURFO1NvOzA7T047Ozs7O047Ozs7OworMjU5NDtVUFBFUiBPTkUgRUlHSFRIIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU5NTtSSUdIVCBPTkUgRUlHSFRIIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjVBMDtCTEFDSyBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUExO1dISVRFIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzI1QTI7V0hJVEUgU1FVQVJFIFdJVEggUk9VTkRFRCBDT1JORVJTO1NvOzA7T047Ozs7O047Ozs7OworMjVBMztXSElURSBTUVVBUkUgQ09OVEFJTklORyBCTEFDSyBTTUFMTCBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUE0O1NRVUFSRSBXSVRIIEhPUklaT05UQUwgRklMTDtTbzswO09OOzs7OztOOzs7OzsKKzI1QTU7U1FVQVJFIFdJVEggVkVSVElDQUwgRklMTDtTbzswO09OOzs7OztOOzs7OzsKKzI1QTY7U1FVQVJFIFdJVEggT1JUSE9HT05BTCBDUk9TU0hBVENIIEZJTEw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUE3O1NRVUFSRSBXSVRIIFVQUEVSIExFRlQgVE8gTE9XRVIgUklHSFQgRklMTDtTbzswO09OOzs7OztOOzs7OzsKKzI1QTg7U1FVQVJFIFdJVEggVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVGVCBGSUxMO1NvOzA7T047Ozs7O047Ozs7OworMjVBOTtTUVVBUkUgV0lUSCBESUFHT05BTCBDUk9TU0hBVENIIEZJTEw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUFBO0JMQUNLIFNNQUxMIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzI1QUI7V0hJVEUgU01BTEwgU1FVQVJFO1NvOzA7T047Ozs7O047Ozs7OworMjVBQztCTEFDSyBSRUNUQU5HTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUFEO1dISVRFIFJFQ1RBTkdMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1QUU7QkxBQ0sgVkVSVElDQUwgUkVDVEFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVBRjtXSElURSBWRVJUSUNBTCBSRUNUQU5HTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUIwO0JMQUNLIFBBUkFMTEVMT0dSQU07U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUIxO1dISVRFIFBBUkFMTEVMT0dSQU07U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUIyO0JMQUNLIFVQLVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgVVAgUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUIzO1dISVRFIFVQLVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgVVAgUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUI0O0JMQUNLIFVQLVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgVVAgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUI1O1dISVRFIFVQLVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgVVAgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUI2O0JMQUNLIFJJR0hULVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgUklHSFQgUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUI3O1dISVRFIFJJR0hULVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgUklHSFQgUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUI4O0JMQUNLIFJJR0hULVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgUklHSFQgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUI5O1dISVRFIFJJR0hULVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgUklHSFQgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUJBO0JMQUNLIFJJR0hULVBPSU5USU5HIFBPSU5URVI7U287MDtPTjs7Ozs7TjtCTEFDSyBSSUdIVCBQT0lOVElORyBQT0lOVEVSOzs7OworMjVCQjtXSElURSBSSUdIVC1QT0lOVElORyBQT0lOVEVSO1NvOzA7T047Ozs7O047V0hJVEUgUklHSFQgUE9JTlRJTkcgUE9JTlRFUjs7OzsKKzI1QkM7QkxBQ0sgRE9XTi1QT0lOVElORyBUUklBTkdMRTtTbzswO09OOzs7OztOO0JMQUNLIERPV04gUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUJEO1dISVRFIERPV04tUE9JTlRJTkcgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtXSElURSBET1dOIFBPSU5USU5HIFRSSUFOR0xFOzs7OworMjVCRTtCTEFDSyBET1dOLVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgRE9XTiBQT0lOVElORyBTTUFMTCBUUklBTkdMRTs7OzsKKzI1QkY7V0hJVEUgRE9XTi1QT0lOVElORyBTTUFMTCBUUklBTkdMRTtTbzswO09OOzs7OztOO1dISVRFIERPV04gUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUMwO0JMQUNLIExFRlQtUE9JTlRJTkcgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtCTEFDSyBMRUZUIFBPSU5USU5HIFRSSUFOR0xFOzs7OworMjVDMTtXSElURSBMRUZULVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgTEVGVCBQT0lOVElORyBUUklBTkdMRTs7OzsKKzI1QzI7QkxBQ0sgTEVGVC1QT0lOVElORyBTTUFMTCBUUklBTkdMRTtTbzswO09OOzs7OztOO0JMQUNLIExFRlQgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUMzO1dISVRFIExFRlQtUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtXSElURSBMRUZUIFBPSU5USU5HIFNNQUxMIFRSSUFOR0xFOzs7OworMjVDNDtCTEFDSyBMRUZULVBPSU5USU5HIFBPSU5URVI7U287MDtPTjs7Ozs7TjtCTEFDSyBMRUZUIFBPSU5USU5HIFBPSU5URVI7Ozs7CisyNUM1O1dISVRFIExFRlQtUE9JTlRJTkcgUE9JTlRFUjtTbzswO09OOzs7OztOO1dISVRFIExFRlQgUE9JTlRJTkcgUE9JTlRFUjs7OzsKKzI1QzY7QkxBQ0sgRElBTU9ORDtTbzswO09OOzs7OztOOzs7OzsKKzI1Qzc7V0hJVEUgRElBTU9ORDtTbzswO09OOzs7OztOOzs7OzsKKzI1Qzg7V0hJVEUgRElBTU9ORCBDT05UQUlOSU5HIEJMQUNLIFNNQUxMIERJQU1PTkQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUM5O0ZJU0hFWUU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUNBO0xPWkVOR0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUNCO1dISVRFIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1Q0M7RE9UVEVEIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1Q0Q7Q0lSQ0xFIFdJVEggVkVSVElDQUwgRklMTDtTbzswO09OOzs7OztOOzs7OzsKKzI1Q0U7QlVMTFNFWUU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUNGO0JMQUNLIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RDA7Q0lSQ0xFIFdJVEggTEVGVCBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVEMTtDSVJDTEUgV0lUSCBSSUdIVCBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVEMjtDSVJDTEUgV0lUSCBMT1dFUiBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVEMztDSVJDTEUgV0lUSCBVUFBFUiBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVENDtDSVJDTEUgV0lUSCBVUFBFUiBSSUdIVCBRVUFEUkFOVCBCTEFDSztTbzswO09OOzs7OztOOzs7OzsKKzI1RDU7Q0lSQ0xFIFdJVEggQUxMIEJVVCBVUFBFUiBMRUZUIFFVQURSQU5UIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVENjtMRUZUIEhBTEYgQkxBQ0sgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVENztSSUdIVCBIQUxGIEJMQUNLIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RDg7SU5WRVJTRSBCVUxMRVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUQ5O0lOVkVSU0UgV0hJVEUgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVEQTtVUFBFUiBIQUxGIElOVkVSU0UgV0hJVEUgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVEQjtMT1dFUiBIQUxGIElOVkVSU0UgV0hJVEUgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVEQztVUFBFUiBMRUZUIFFVQURSQU5UIENJUkNVTEFSIEFSQztTbzswO09OOzs7OztOOzs7OzsKKzI1REQ7VVBQRVIgUklHSFQgUVVBRFJBTlQgQ0lSQ1VMQVIgQVJDO1NvOzA7T047Ozs7O047Ozs7OworMjVERTtMT1dFUiBSSUdIVCBRVUFEUkFOVCBDSVJDVUxBUiBBUkM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNURGO0xPV0VSIExFRlQgUVVBRFJBTlQgQ0lSQ1VMQVIgQVJDO1NvOzA7T047Ozs7O047Ozs7OworMjVFMDtVUFBFUiBIQUxGIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RTE7TE9XRVIgSEFMRiBDSVJDTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUUyO0JMQUNLIExPV0VSIFJJR0hUIFRSSUFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVFMztCTEFDSyBMT1dFUiBMRUZUIFRSSUFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVFNDtCTEFDSyBVUFBFUiBMRUZUIFRSSUFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVFNTtCTEFDSyBVUFBFUiBSSUdIVCBUUklBTkdMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RTY7V0hJVEUgQlVMTEVUO1NvOzA7T047Ozs7O047Ozs7OworMjVFNztTUVVBUkUgV0lUSCBMRUZUIEhBTEYgQkxBQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUU4O1NRVUFSRSBXSVRIIFJJR0hUIEhBTEYgQkxBQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUU5O1NRVUFSRSBXSVRIIFVQUEVSIExFRlQgRElBR09OQUwgSEFMRiBCTEFDSztTbzswO09OOzs7OztOOzs7OzsKKzI1RUE7U1FVQVJFIFdJVEggTE9XRVIgUklHSFQgRElBR09OQUwgSEFMRiBCTEFDSztTbzswO09OOzs7OztOOzs7OzsKKzI1RUI7V0hJVEUgU1FVQVJFIFdJVEggVkVSVElDQUwgQklTRUNUSU5HIExJTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUVDO1dISVRFIFVQLVBPSU5USU5HIFRSSUFOR0xFIFdJVEggRE9UO1NvOzA7T047Ozs7O047V0hJVEUgVVAgUE9JTlRJTkcgVFJJQU5HTEUgV0lUSCBET1Q7Ozs7CisyNUVEO1VQLVBPSU5USU5HIFRSSUFOR0xFIFdJVEggTEVGVCBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047VVAgUE9JTlRJTkcgVFJJQU5HTEUgV0lUSCBMRUZUIEhBTEYgQkxBQ0s7Ozs7CisyNUVFO1VQLVBPSU5USU5HIFRSSUFOR0xFIFdJVEggUklHSFQgSEFMRiBCTEFDSztTbzswO09OOzs7OztOO1VQIFBPSU5USU5HIFRSSUFOR0xFIFdJVEggUklHSFQgSEFMRiBCTEFDSzs7OzsKKzI1RUY7TEFSR0UgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjYwMDtCTEFDSyBTVU4gV0lUSCBSQVlTO1NvOzA7T047Ozs7O047Ozs7OworMjYwMTtDTE9VRDtTbzswO09OOzs7OztOOzs7OzsKKzI2MDI7VU1CUkVMTEE7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjAzO1NOT1dNQU47U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjA0O0NPTUVUO1NvOzA7T047Ozs7O047Ozs7OworMjYwNTtCTEFDSyBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjYwNjtXSElURSBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjYwNztMSUdIVE5JTkc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjA4O1RIVU5ERVJTVE9STTtTbzswO09OOzs7OztOOzs7OzsKKzI2MDk7U1VOO1NvOzA7T047Ozs7O047Ozs7OworMjYwQTtBU0NFTkRJTkcgTk9ERTtTbzswO09OOzs7OztOOzs7OzsKKzI2MEI7REVTQ0VORElORyBOT0RFO1NvOzA7T047Ozs7O047Ozs7OworMjYwQztDT05KVU5DVElPTjtTbzswO09OOzs7OztOOzs7OzsKKzI2MEQ7T1BQT1NJVElPTjtTbzswO09OOzs7OztOOzs7OzsKKzI2MEU7QkxBQ0sgVEVMRVBIT05FO1NvOzA7T047Ozs7O047Ozs7OworMjYwRjtXSElURSBURUxFUEhPTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjEwO0JBTExPVCBCT1g7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjExO0JBTExPVCBCT1ggV0lUSCBDSEVDSztTbzswO09OOzs7OztOOzs7OzsKKzI2MTI7QkFMTE9UIEJPWCBXSVRIIFg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjEzO1NBTFRJUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjFBO0JMQUNLIExFRlQgUE9JTlRJTkcgSU5ERVg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjFCO0JMQUNLIFJJR0hUIFBPSU5USU5HIElOREVYO1NvOzA7T047Ozs7O047Ozs7OworMjYxQztXSElURSBMRUZUIFBPSU5USU5HIElOREVYO1NvOzA7T047Ozs7O047Ozs7OworMjYxRDtXSElURSBVUCBQT0lOVElORyBJTkRFWDtTbzswO09OOzs7OztOOzs7OzsKKzI2MUU7V0hJVEUgUklHSFQgUE9JTlRJTkcgSU5ERVg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjFGO1dISVRFIERPV04gUE9JTlRJTkcgSU5ERVg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjIwO1NLVUxMIEFORCBDUk9TU0JPTkVTO1NvOzA7T047Ozs7O047Ozs7OworMjYyMTtDQVVUSU9OIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjIyO1JBRElPQUNUSVZFIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjIzO0JJT0hBWkFSRCBTSUdOO1NvOzA7T047Ozs7O047Ozs7OworMjYyNDtDQURVQ0VVUztTbzswO09OOzs7OztOOzs7OzsKKzI2MjU7QU5LSDtTbzswO09OOzs7OztOOzs7OzsKKzI2MjY7T1JUSE9ET1ggQ1JPU1M7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjI3O0NISSBSSE87U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjI4O0NST1NTIE9GIExPUlJBSU5FO1NvOzA7T047Ozs7O047Ozs7OworMjYyOTtDUk9TUyBPRiBKRVJVU0FMRU07U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjJBO1NUQVIgQU5EIENSRVNDRU5UO1NvOzA7T047Ozs7O047Ozs7OworMjYyQjtGQVJTSSBTWU1CT0w7U287MDtPTjs7Ozs7TjtTWU1CT0wgT0YgSVJBTjs7OzsKKzI2MkM7QURJIFNIQUtUSTtTbzswO09OOzs7OztOOzs7OzsKKzI2MkQ7SEFNTUVSIEFORCBTSUNLTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjJFO1BFQUNFIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzI2MkY7WUlOIFlBTkc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjMwO1RSSUdSQU0gRk9SIEhFQVZFTjtTbzswO09OOzs7OztOOzs7OzsKKzI2MzE7VFJJR1JBTSBGT1IgTEFLRTtTbzswO09OOzs7OztOOzs7OzsKKzI2MzI7VFJJR1JBTSBGT1IgRklSRTtTbzswO09OOzs7OztOOzs7OzsKKzI2MzM7VFJJR1JBTSBGT1IgVEhVTkRFUjtTbzswO09OOzs7OztOOzs7OzsKKzI2MzQ7VFJJR1JBTSBGT1IgV0lORDtTbzswO09OOzs7OztOOzs7OzsKKzI2MzU7VFJJR1JBTSBGT1IgV0FURVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjM2O1RSSUdSQU0gRk9SIE1PVU5UQUlOO1NvOzA7T047Ozs7O047Ozs7OworMjYzNztUUklHUkFNIEZPUiBFQVJUSDtTbzswO09OOzs7OztOOzs7OzsKKzI2Mzg7V0hFRUwgT0YgREhBUk1BO1NvOzA7T047Ozs7O047Ozs7OworMjYzOTtXSElURSBGUk9XTklORyBGQUNFO1NvOzA7T047Ozs7O047Ozs7OworMjYzQTtXSElURSBTTUlMSU5HIEZBQ0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjNCO0JMQUNLIFNNSUxJTkcgRkFDRTtTbzswO09OOzs7OztOOzs7OzsKKzI2M0M7V0hJVEUgU1VOIFdJVEggUkFZUztTbzswO09OOzs7OztOOzs7OzsKKzI2M0Q7RklSU1QgUVVBUlRFUiBNT09OO1NvOzA7T047Ozs7O047Ozs7OworMjYzRTtMQVNUIFFVQVJURVIgTU9PTjtTbzswO09OOzs7OztOOzs7OzsKKzI2M0Y7TUVSQ1VSWTtTbzswO09OOzs7OztOOzs7OzsKKzI2NDA7RkVNQUxFIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQxO0VBUlRIO1NvOzA7T047Ozs7O047Ozs7OworMjY0MjtNQUxFIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQzO0pVUElURVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQ0O1NBVFVSTjtTbzswO09OOzs7OztOOzs7OzsKKzI2NDU7VVJBTlVTO1NvOzA7T047Ozs7O047Ozs7OworMjY0NjtORVBUVU5FO1NvOzA7T047Ozs7O047Ozs7OworMjY0NztQTFVUTztTbzswO09OOzs7OztOOzs7OzsKKzI2NDg7QVJJRVM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQ5O1RBVVJVUztTbzswO09OOzs7OztOOzs7OzsKKzI2NEE7R0VNSU5JO1NvOzA7T047Ozs7O047Ozs7OworMjY0QjtDQU5DRVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjRDO0xFTztTbzswO09OOzs7OztOOzs7OzsKKzI2NEQ7VklSR087U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjRFO0xJQlJBO1NvOzA7T047Ozs7O047Ozs7OworMjY0RjtTQ09SUElVUztTbzswO09OOzs7OztOOzs7OzsKKzI2NTA7U0FHSVRUQVJJVVM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjUxO0NBUFJJQ09STjtTbzswO09OOzs7OztOOzs7OzsKKzI2NTI7QVFVQVJJVVM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjUzO1BJU0NFUztTbzswO09OOzs7OztOOzs7OzsKKzI2NTQ7V0hJVEUgQ0hFU1MgS0lORztTbzswO09OOzs7OztOOzs7OzsKKzI2NTU7V0hJVEUgQ0hFU1MgUVVFRU47U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjU2O1dISVRFIENIRVNTIFJPT0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjU3O1dISVRFIENIRVNTIEJJU0hPUDtTbzswO09OOzs7OztOOzs7OzsKKzI2NTg7V0hJVEUgQ0hFU1MgS05JR0hUO1NvOzA7T047Ozs7O047Ozs7OworMjY1OTtXSElURSBDSEVTUyBQQVdOO1NvOzA7T047Ozs7O047Ozs7OworMjY1QTtCTEFDSyBDSEVTUyBLSU5HO1NvOzA7T047Ozs7O047Ozs7OworMjY1QjtCTEFDSyBDSEVTUyBRVUVFTjtTbzswO09OOzs7OztOOzs7OzsKKzI2NUM7QkxBQ0sgQ0hFU1MgUk9PSztTbzswO09OOzs7OztOOzs7OzsKKzI2NUQ7QkxBQ0sgQ0hFU1MgQklTSE9QO1NvOzA7T047Ozs7O047Ozs7OworMjY1RTtCTEFDSyBDSEVTUyBLTklHSFQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjVGO0JMQUNLIENIRVNTIFBBV047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjYwO0JMQUNLIFNQQURFIFNVSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjYxO1dISVRFIEhFQVJUIFNVSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjYyO1dISVRFIERJQU1PTkQgU1VJVDtTbzswO09OOzs7OztOOzs7OzsKKzI2NjM7QkxBQ0sgQ0xVQiBTVUlUO1NvOzA7T047Ozs7O047Ozs7OworMjY2NDtXSElURSBTUEFERSBTVUlUO1NvOzA7T047Ozs7O047Ozs7OworMjY2NTtCTEFDSyBIRUFSVCBTVUlUO1NvOzA7T047Ozs7O047Ozs7OworMjY2NjtCTEFDSyBESUFNT05EIFNVSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjY3O1dISVRFIENMVUIgU1VJVDtTbzswO09OOzs7OztOOzs7OzsKKzI2Njg7SE9UIFNQUklOR1M7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjY5O1FVQVJURVIgTk9URTtTbzswO09OOzs7OztOOzs7OzsKKzI2NkE7RUlHSFRIIE5PVEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjZCO0JFQU1FRCBFSUdIVEggTk9URVM7U287MDtPTjs7Ozs7TjtCQVJSRUQgRUlHSFRIIE5PVEVTOzs7OworMjY2QztCRUFNRUQgU0lYVEVFTlRIIE5PVEVTO1NvOzA7T047Ozs7O047QkFSUkVEIFNJWFRFRU5USCBOT1RFUzs7OzsKKzI2NkQ7TVVTSUMgRkxBVCBTSUdOO1NvOzA7T047Ozs7O047RkxBVDs7OzsKKzI2NkU7TVVTSUMgTkFUVVJBTCBTSUdOO1NvOzA7T047Ozs7O047TkFUVVJBTDs7OzsKKzI2NkY7TVVTSUMgU0hBUlAgU0lHTjtTbzswO09OOzs7OztOO1NIQVJQOzs7OworMjcwMTtVUFBFUiBCTEFERSBTQ0lTU09SUztTbzswO09OOzs7OztOOzs7OzsKKzI3MDI7QkxBQ0sgU0NJU1NPUlM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzAzO0xPV0VSIEJMQURFIFNDSVNTT1JTO1NvOzA7T047Ozs7O047Ozs7OworMjcwNDtXSElURSBTQ0lTU09SUztTbzswO09OOzs7OztOOzs7OzsKKzI3MDY7VEVMRVBIT05FIExPQ0FUSU9OIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzA3O1RBUEUgRFJJVkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzA4O0FJUlBMQU5FO1NvOzA7T047Ozs7O047Ozs7OworMjcwOTtFTlZFTE9QRTtTbzswO09OOzs7OztOOzs7OzsKKzI3MEM7VklDVE9SWSBIQU5EO1NvOzA7T047Ozs7O047Ozs7OworMjcwRDtXUklUSU5HIEhBTkQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzBFO0xPV0VSIFJJR0hUIFBFTkNJTDtTbzswO09OOzs7OztOOzs7OzsKKzI3MEY7UEVOQ0lMO1NvOzA7T047Ozs7O047Ozs7OworMjcxMDtVUFBFUiBSSUdIVCBQRU5DSUw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzExO1dISVRFIE5JQjtTbzswO09OOzs7OztOOzs7OzsKKzI3MTI7QkxBQ0sgTklCO1NvOzA7T047Ozs7O047Ozs7OworMjcxMztDSEVDSyBNQVJLO1NvOzA7T047Ozs7O047Ozs7OworMjcxNDtIRUFWWSBDSEVDSyBNQVJLO1NvOzA7T047Ozs7O047Ozs7OworMjcxNTtNVUxUSVBMSUNBVElPTiBYO1NvOzA7T047Ozs7O047Ozs7OworMjcxNjtIRUFWWSBNVUxUSVBMSUNBVElPTiBYO1NvOzA7T047Ozs7O047Ozs7OworMjcxNztCQUxMT1QgWDtTbzswO09OOzs7OztOOzs7OzsKKzI3MTg7SEVBVlkgQkFMTE9UIFg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzE5O09VVExJTkVEIEdSRUVLIENST1NTO1NvOzA7T047Ozs7O047Ozs7OworMjcxQTtIRUFWWSBHUkVFSyBDUk9TUztTbzswO09OOzs7OztOOzs7OzsKKzI3MUI7T1BFTiBDRU5UUkUgQ1JPU1M7U287MDtPTjs7Ozs7TjtPUEVOIENFTlRFUiBDUk9TUzs7OzsKKzI3MUM7SEVBVlkgT1BFTiBDRU5UUkUgQ1JPU1M7U287MDtPTjs7Ozs7TjtIRUFWWSBPUEVOIENFTlRFUiBDUk9TUzs7OzsKKzI3MUQ7TEFUSU4gQ1JPU1M7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzFFO1NIQURPV0VEIFdISVRFIExBVElOIENST1NTO1NvOzA7T047Ozs7O047Ozs7OworMjcxRjtPVVRMSU5FRCBMQVRJTiBDUk9TUztTbzswO09OOzs7OztOOzs7OzsKKzI3MjA7TUFMVEVTRSBDUk9TUztTbzswO09OOzs7OztOOzs7OzsKKzI3MjE7U1RBUiBPRiBEQVZJRDtTbzswO09OOzs7OztOOzs7OzsKKzI3MjI7Rk9VUiBURUFSRFJPUC1TUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzIzO0ZPVVIgQkFMTE9PTi1TUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzI0O0hFQVZZIEZPVVIgQkFMTE9PTi1TUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzI1O0ZPVVIgQ0xVQi1TUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzI2O0JMQUNLIEZPVVIgUE9JTlRFRCBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjcyNztXSElURSBGT1VSIFBPSU5URUQgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3Mjk7U1RSRVNTIE9VVExJTkVEIFdISVRFIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzJBO0NJUkNMRUQgV0hJVEUgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3MkI7T1BFTiBDRU5UUkUgQkxBQ0sgU1RBUjtTbzswO09OOzs7OztOO09QRU4gQ0VOVEVSIEJMQUNLIFNUQVI7Ozs7CisyNzJDO0JMQUNLIENFTlRSRSBXSElURSBTVEFSO1NvOzA7T047Ozs7O047QkxBQ0sgQ0VOVEVSIFdISVRFIFNUQVI7Ozs7CisyNzJEO09VVExJTkVEIEJMQUNLIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzJFO0hFQVZZIE9VVExJTkVEIEJMQUNLIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzJGO1BJTldIRUVMIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzMwO1NIQURPV0VEIFdISVRFIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzMxO0hFQVZZIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjczMjtPUEVOIENFTlRSRSBBU1RFUklTSztTbzswO09OOzs7OztOO09QRU4gQ0VOVEVSIEFTVEVSSVNLOzs7OworMjczMztFSUdIVCBTUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzM0O0VJR0hUIFBPSU5URUQgQkxBQ0sgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3MzU7RUlHSFQgUE9JTlRFRCBQSU5XSEVFTCBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjczNjtTSVggUE9JTlRFRCBCTEFDSyBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjczNztFSUdIVCBQT0lOVEVEIFJFQ1RJTElORUFSIEJMQUNLIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzM4O0hFQVZZIEVJR0hUIFBPSU5URUQgUkVDVElMSU5FQVIgQkxBQ0sgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3Mzk7VFdFTFZFIFBPSU5URUQgQkxBQ0sgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3M0E7U0lYVEVFTiBQT0lOVEVEIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjczQjtURUFSRFJPUC1TUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzNDO09QRU4gQ0VOVFJFIFRFQVJEUk9QLVNQT0tFRCBBU1RFUklTSztTbzswO09OOzs7OztOO09QRU4gQ0VOVEVSIFRFQVJEUk9QLVNQT0tFRCBBU1RFUklTSzs7OzsKKzI3M0Q7SEVBVlkgVEVBUkRST1AtU1BPS0VEIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjczRTtTSVggUEVUQUxMRUQgQkxBQ0sgQU5EIFdISVRFIEZMT1JFVFRFO1NvOzA7T047Ozs7O047Ozs7OworMjczRjtCTEFDSyBGTE9SRVRURTtTbzswO09OOzs7OztOOzs7OzsKKzI3NDA7V0hJVEUgRkxPUkVUVEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzQxO0VJR0hUIFBFVEFMTEVEIE9VVExJTkVEIEJMQUNLIEZMT1JFVFRFO1NvOzA7T047Ozs7O047Ozs7OworMjc0MjtDSVJDTEVEIE9QRU4gQ0VOVFJFIEVJR0hUIFBPSU5URUQgU1RBUjtTbzswO09OOzs7OztOO0NJUkNMRUQgT1BFTiBDRU5URVIgRUlHSFQgUE9JTlRFRCBTVEFSOzs7OworMjc0MztIRUFWWSBURUFSRFJPUC1TUE9LRUQgUElOV0hFRUwgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzQ0O1NOT1dGTEFLRTtTbzswO09OOzs7OztOOzs7OzsKKzI3NDU7VElHSFQgVFJJRk9MSUFURSBTTk9XRkxBS0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzQ2O0hFQVZZIENIRVZST04gU05PV0ZMQUtFO1NvOzA7T047Ozs7O047Ozs7OworMjc0NztTUEFSS0xFO1NvOzA7T047Ozs7O047Ozs7OworMjc0ODtIRUFWWSBTUEFSS0xFO1NvOzA7T047Ozs7O047Ozs7OworMjc0OTtCQUxMT09OLVNQT0tFRCBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3NEE7RUlHSFQgVEVBUkRST1AtU1BPS0VEIFBST1BFTExFUiBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3NEI7SEVBVlkgRUlHSFQgVEVBUkRST1AtU1BPS0VEIFBST1BFTExFUiBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3NEQ7U0hBRE9XRUQgV0hJVEUgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjc0RjtMT1dFUiBSSUdIVCBEUk9QLVNIQURPV0VEIFdISVRFIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzI3NTA7VVBQRVIgUklHSFQgRFJPUC1TSEFET1dFRCBXSElURSBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzUxO0xPV0VSIFJJR0hUIFNIQURPV0VEIFdISVRFIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzI3NTI7VVBQRVIgUklHSFQgU0hBRE9XRUQgV0hJVEUgU1FVQVJFO1NvOzA7T047Ozs7O047Ozs7OworMjc1NjtCTEFDSyBESUFNT05EIE1JTlVTIFdISVRFIFg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzU4O0xJR0hUIFZFUlRJQ0FMIEJBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3NTk7TUVESVVNIFZFUlRJQ0FMIEJBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3NUE7SEVBVlkgVkVSVElDQUwgQkFSO1NvOzA7T047Ozs7O047Ozs7OworMjc1QjtIRUFWWSBTSU5HTEUgVFVSTkVEIENPTU1BIFFVT1RBVElPTiBNQVJLIE9STkFNRU5UO1NvOzA7T047Ozs7O047Ozs7OworMjc1QztIRUFWWSBTSU5HTEUgQ09NTUEgUVVPVEFUSU9OIE1BUksgT1JOQU1FTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzVEO0hFQVZZIERPVUJMRSBUVVJORUQgQ09NTUEgUVVPVEFUSU9OIE1BUksgT1JOQU1FTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzVFO0hFQVZZIERPVUJMRSBDT01NQSBRVU9UQVRJT04gTUFSSyBPUk5BTUVOVDtTbzswO09OOzs7OztOOzs7OzsKKzI3NjE7Q1VSVkVEIFNURU0gUEFSQUdSQVBIIFNJR04gT1JOQU1FTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzYyO0hFQVZZIEVYQ0xBTUFUSU9OIE1BUksgT1JOQU1FTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzYzO0hFQVZZIEhFQVJUIEVYQ0xBTUFUSU9OIE1BUksgT1JOQU1FTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzY0O0hFQVZZIEJMQUNLIEhFQVJUO1NvOzA7T047Ozs7O047Ozs7OworMjc2NTtST1RBVEVEIEhFQVZZIEJMQUNLIEhFQVJUIEJVTExFVDtTbzswO09OOzs7OztOOzs7OzsKKzI3NjY7RkxPUkFMIEhFQVJUO1NvOzA7T047Ozs7O047Ozs7OworMjc2NztST1RBVEVEIEZMT1JBTCBIRUFSVCBCVUxMRVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzc2O0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBPTkU7Tm87MDtPTjs7OzE7MTtOO0lOVkVSU0UgQ0lSQ0xFRCBESUdJVCBPTkU7Ozs7CisyNzc3O0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBUV087Tm87MDtPTjs7OzI7MjtOO0lOVkVSU0UgQ0lSQ0xFRCBESUdJVCBUV087Ozs7CisyNzc4O0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBUSFJFRTtObzswO09OOzs7MzszO047SU5WRVJTRSBDSVJDTEVEIERJR0lUIFRIUkVFOzs7OworMjc3OTtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgRElHSVQgRk9VUjtObzswO09OOzs7NDs0O047SU5WRVJTRSBDSVJDTEVEIERJR0lUIEZPVVI7Ozs7CisyNzdBO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBGSVZFO05vOzA7T047Ozs1OzU7TjtJTlZFUlNFIENJUkNMRUQgRElHSVQgRklWRTs7OzsKKzI3N0I7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIERJR0lUIFNJWDtObzswO09OOzs7Njs2O047SU5WRVJTRSBDSVJDTEVEIERJR0lUIFNJWDs7OzsKKzI3N0M7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIERJR0lUIFNFVkVOO05vOzA7T047Ozs3Ozc7TjtJTlZFUlNFIENJUkNMRUQgRElHSVQgU0VWRU47Ozs7CisyNzdEO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBFSUdIVDtObzswO09OOzs7ODs4O047SU5WRVJTRSBDSVJDTEVEIERJR0lUIEVJR0hUOzs7OworMjc3RTtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgRElHSVQgTklORTtObzswO09OOzs7OTs5O047SU5WRVJTRSBDSVJDTEVEIERJR0lUIE5JTkU7Ozs7CisyNzdGO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBOVU1CRVIgVEVOO05vOzA7T047Ozs7MTA7TjtJTlZFUlNFIENJUkNMRUQgTlVNQkVSIFRFTjs7OzsKKzI3ODA7RElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgT05FO05vOzA7T047OzsxOzE7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgT05FOzs7OworMjc4MTtESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBUV087Tm87MDtPTjs7OzI7MjtOO0NJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBUV087Ozs7CisyNzgyO0RJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFRIUkVFO05vOzA7T047OzszOzM7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgVEhSRUU7Ozs7CisyNzgzO0RJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEZPVVI7Tm87MDtPTjs7OzQ7NDtOO0NJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGT1VSOzs7OworMjc4NDtESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGSVZFO05vOzA7T047Ozs1OzU7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRklWRTs7OzsKKzI3ODU7RElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgU0lYO05vOzA7T047Ozs2OzY7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgU0lYOzs7OworMjc4NjtESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBTRVZFTjtObzswO09OOzs7Nzs3O047Q0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFNFVkVOOzs7OworMjc4NztESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBFSUdIVDtObzswO09OOzs7ODs4O047Q0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEVJR0hUOzs7OworMjc4ODtESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBOSU5FO05vOzA7T047Ozs5Ozk7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgTklORTs7OzsKKzI3ODk7RElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgTlVNQkVSIFRFTjtObzswO09OOzs7OzEwO047Q0lSQ0xFRCBTQU5TLVNFUklGIE5VTUJFUiBURU47Ozs7CisyNzhBO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIE9ORTtObzswO09OOzs7MTsxO047SU5WRVJTRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgT05FOzs7OworMjc4QjtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBUV087Tm87MDtPTjs7OzI7MjtOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFRXTzs7OzsKKzI3OEM7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgVEhSRUU7Tm87MDtPTjs7OzM7MztOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFRIUkVFOzs7OworMjc4RDtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGT1VSO05vOzA7T047Ozs0OzQ7TjtJTlZFUlNFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGT1VSOzs7OworMjc4RTtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGSVZFO05vOzA7T047Ozs1OzU7TjtJTlZFUlNFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGSVZFOzs7OworMjc4RjtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBTSVg7Tm87MDtPTjs7OzY7NjtOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFNJWDs7OzsKKzI3OTA7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgU0VWRU47Tm87MDtPTjs7Ozc7NztOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFNFVkVOOzs7OworMjc5MTtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBFSUdIVDtObzswO09OOzs7ODs4O047SU5WRVJTRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRUlHSFQ7Ozs7CisyNzkyO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIE5JTkU7Tm87MDtPTjs7Ozk7OTtOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIE5JTkU7Ozs7CisyNzkzO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIE5VTUJFUiBURU47Tm87MDtPTjs7OzsxMDtOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIE5VTUJFUiBURU47Ozs7CisyNzk0O0hFQVZZIFdJREUtSEVBREVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBXSURFLUhFQURFRCBSSUdIVCBBUlJPVzs7OzsKKzI3OTg7SEVBVlkgU09VVEggRUFTVCBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIExPV0VSIFJJR0hUIEFSUk9XOzs7OworMjc5OTtIRUFWWSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgUklHSFQgQVJST1c7Ozs7CisyNzlBO0hFQVZZIE5PUlRIIEVBU1QgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBVUFBFUiBSSUdIVCBBUlJPVzs7OzsKKzI3OUI7RFJBRlRJTkcgUE9JTlQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0RSQUZUSU5HIFBPSU5UIFJJR0hUIEFSUk9XOzs7OworMjc5QztIRUFWWSBST1VORC1USVBQRUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIFJPVU5ELVRJUFBFRCBSSUdIVCBBUlJPVzs7OzsKKzI3OUQ7VFJJQU5HTEUtSEVBREVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtUUklBTkdMRS1IRUFERUQgUklHSFQgQVJST1c7Ozs7CisyNzlFO0hFQVZZIFRSSUFOR0xFLUhFQURFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgVFJJQU5HTEUtSEVBREVEIFJJR0hUIEFSUk9XOzs7OworMjc5RjtEQVNIRUQgVFJJQU5HTEUtSEVBREVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtEQVNIRUQgVFJJQU5HTEUtSEVBREVEIFJJR0hUIEFSUk9XOzs7OworMjdBMDtIRUFWWSBEQVNIRUQgVFJJQU5HTEUtSEVBREVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBEQVNIRUQgVFJJQU5HTEUtSEVBREVEIFJJR0hUIEFSUk9XOzs7OworMjdBMTtCTEFDSyBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047QkxBQ0sgUklHSFQgQVJST1c7Ozs7CisyN0EyO1RIUkVFLUQgVE9QLUxJR0hURUQgUklHSFRXQVJEUyBBUlJPV0hFQUQ7U287MDtPTjs7Ozs7TjtUSFJFRS1EIFRPUC1MSUdIVEVEIFJJR0hUIEFSUk9XSEVBRDs7OzsKKzI3QTM7VEhSRUUtRCBCT1RUT00tTElHSFRFRCBSSUdIVFdBUkRTIEFSUk9XSEVBRDtTbzswO09OOzs7OztOO1RIUkVFLUQgQk9UVE9NLUxJR0hURUQgUklHSFQgQVJST1dIRUFEOzs7OworMjdBNDtCTEFDSyBSSUdIVFdBUkRTIEFSUk9XSEVBRDtTbzswO09OOzs7OztOO0JMQUNLIFJJR0hUIEFSUk9XSEVBRDs7OzsKKzI3QTU7SEVBVlkgQkxBQ0sgQ1VSVkVEIERPV05XQVJEUyBBTkQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIEJMQUNLIENVUlZFRCBET1dOIEFORCBSSUdIVCBBUlJPVzs7OzsKKzI3QTY7SEVBVlkgQkxBQ0sgQ1VSVkVEIFVQV0FSRFMgQU5EIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBCTEFDSyBDVVJWRUQgVVAgQU5EIFJJR0hUIEFSUk9XOzs7OworMjdBNztTUVVBVCBCTEFDSyBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047U1FVQVQgQkxBQ0sgUklHSFQgQVJST1c7Ozs7CisyN0E4O0hFQVZZIENPTkNBVkUtUE9JTlRFRCBCTEFDSyBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgQ09OQ0FWRS1QT0lOVEVEIEJMQUNLIFJJR0hUIEFSUk9XOzs7OworMjdBOTtSSUdIVC1TSEFERUQgV0hJVEUgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO1JJR0hULVNIQURFRCBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QUE7TEVGVC1TSEFERUQgV0hJVEUgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0xFRlQtU0hBREVEIFdISVRFIFJJR0hUIEFSUk9XOzs7OworMjdBQjtCQUNLLVRJTFRFRCBTSEFET1dFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047QkFDSy1USUxURUQgU0hBRE9XRUQgV0hJVEUgUklHSFQgQVJST1c7Ozs7CisyN0FDO0ZST05ULVRJTFRFRCBTSEFET1dFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047RlJPTlQtVElMVEVEIFNIQURPV0VEIFdISVRFIFJJR0hUIEFSUk9XOzs7OworMjdBRDtIRUFWWSBMT1dFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgTE9XRVIgUklHSFQtU0hBRE9XRUQgV0hJVEUgUklHSFQgQVJST1c7Ozs7CisyN0FFO0hFQVZZIFVQUEVSIFJJR0hULVNIQURPV0VEIFdISVRFIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBVUFBFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QUY7Tk9UQ0hFRCBMT1dFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047Tk9UQ0hFRCBMT1dFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QjE7Tk9UQ0hFRCBVUFBFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047Tk9UQ0hFRCBVUFBFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QjI7Q0lSQ0xFRCBIRUFWWSBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047Q0lSQ0xFRCBIRUFWWSBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QjM7V0hJVEUtRkVBVEhFUkVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtXSElURS1GRUFUSEVSRUQgUklHSFQgQVJST1c7Ozs7CisyN0I0O0JMQUNLLUZFQVRIRVJFRCBTT1VUSCBFQVNUIEFSUk9XO1NvOzA7T047Ozs7O047QkxBQ0stRkVBVEhFUkVEIExPV0VSIFJJR0hUIEFSUk9XOzs7OworMjdCNTtCTEFDSy1GRUFUSEVSRUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0JMQUNLLUZFQVRIRVJFRCBSSUdIVCBBUlJPVzs7OzsKKzI3QjY7QkxBQ0stRkVBVEhFUkVEIE5PUlRIIEVBU1QgQVJST1c7U287MDtPTjs7Ozs7TjtCTEFDSy1GRUFUSEVSRUQgVVBQRVIgUklHSFQgQVJST1c7Ozs7CisyN0I3O0hFQVZZIEJMQUNLLUZFQVRIRVJFRCBTT1VUSCBFQVNUIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgQkxBQ0stRkVBVEhFUkVEIExPV0VSIFJJR0hUIEFSUk9XOzs7OworMjdCODtIRUFWWSBCTEFDSy1GRUFUSEVSRUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIEJMQUNLLUZFQVRIRVJFRCBSSUdIVCBBUlJPVzs7OzsKKzI3Qjk7SEVBVlkgQkxBQ0stRkVBVEhFUkVEIE5PUlRIIEVBU1QgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBCTEFDSy1GRUFUSEVSRUQgVVBQRVIgUklHSFQgQVJST1c7Ozs7CisyN0JBO1RFQVJEUk9QLUJBUkJFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047VEVBUkRST1AtQkFSQkVEIFJJR0hUIEFSUk9XOzs7OworMjdCQjtIRUFWWSBURUFSRFJPUC1TSEFOS0VEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBURUFSRFJPUC1TSEFOS0VEIFJJR0hUIEFSUk9XOzs7OworMjdCQztXRURHRS1UQUlMRUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO1dFREdFLVRBSUxFRCBSSUdIVCBBUlJPVzs7OzsKKzI3QkQ7SEVBVlkgV0VER0UtVEFJTEVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBXRURHRS1UQUlMRUQgUklHSFQgQVJST1c7Ozs7CisyN0JFO09QRU4tT1VUTElORUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO09QRU4tT1VUTElORUQgUklHSFQgQVJST1c7Ozs7CiszMDAwO0lERU9HUkFQSElDIFNQQUNFO1pzOzA7V1M7PHdpZGU+IDAwMjA7Ozs7Tjs7Ozs7CiszMDAxO0lERU9HUkFQSElDIENPTU1BO1BvOzA7T047Ozs7O047Ozs7OworMzAwMjtJREVPR1JBUEhJQyBGVUxMIFNUT1A7UG87MDtPTjs7Ozs7TjtJREVPR1JBUEhJQyBQRVJJT0Q7Ozs7CiszMDAzO0RJVFRPIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CiszMDA0O0pBUEFORVNFIElORFVTVFJJQUwgU1RBTkRBUkQgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMzAwNTtJREVPR1JBUEhJQyBJVEVSQVRJT04gTUFSSztMbTswO09OOzs7OztOOzs7OzsKKzMwMDY7SURFT0dSQVBISUMgQ0xPU0lORyBNQVJLO1BvOzA7T047Ozs7O047Ozs7OworMzAwNztJREVPR1JBUEhJQyBOVU1CRVIgWkVSTztObDswO09OOzs7OzA7Tjs7Ozs7CiszMDA4O0xFRlQgQU5HTEUgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgQU5HTEUgQlJBQ0tFVDs7OzsKKzMwMDk7UklHSFQgQU5HTEUgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgQU5HTEUgQlJBQ0tFVDs7OzsKKzMwMEE7TEVGVCBET1VCTEUgQU5HTEUgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgRE9VQkxFIEFOR0xFIEJSQUNLRVQ7Ozs7CiszMDBCO1JJR0hUIERPVUJMRSBBTkdMRSBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBET1VCTEUgQU5HTEUgQlJBQ0tFVDs7OzsKKzMwMEM7TEVGVCBDT1JORVIgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgQ09STkVSIEJSQUNLRVQ7Ozs7CiszMDBEO1JJR0hUIENPUk5FUiBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBDT1JORVIgQlJBQ0tFVDs7OzsKKzMwMEU7TEVGVCBXSElURSBDT1JORVIgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgV0hJVEUgQ09STkVSIEJSQUNLRVQ7Ozs7CiszMDBGO1JJR0hUIFdISVRFIENPUk5FUiBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBXSElURSBDT1JORVIgQlJBQ0tFVDs7OzsKKzMwMTA7TEVGVCBCTEFDSyBMRU5USUNVTEFSIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIEJMQUNLIExFTlRJQ1VMQVIgQlJBQ0tFVDs7OzsKKzMwMTE7UklHSFQgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBCTEFDSyBMRU5USUNVTEFSIEJSQUNLRVQ7Ozs7CiszMDEyO1BPU1RBTCBNQVJLO1NvOzA7T047Ozs7O047Ozs7OworMzAxMztHRVRBIE1BUks7U287MDtPTjs7Ozs7Tjs7Ozs7CiszMDE0O0xFRlQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKKzMwMTU7UklHSFQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKKzMwMTY7TEVGVCBXSElURSBMRU5USUNVTEFSIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIFdISVRFIExFTlRJQ1VMQVIgQlJBQ0tFVDs7OzsKKzMwMTc7UklHSFQgV0hJVEUgTEVOVElDVUxBUiBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBXSElURSBMRU5USUNVTEFSIEJSQUNLRVQ7Ozs7CiszMDE4O0xFRlQgV0hJVEUgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgV0hJVEUgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKKzMwMTk7UklHSFQgV0hJVEUgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgV0hJVEUgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKKzMwMUE7TEVGVCBXSElURSBTUVVBUkUgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgV0hJVEUgU1FVQVJFIEJSQUNLRVQ7Ozs7CiszMDFCO1JJR0hUIFdISVRFIFNRVUFSRSBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBXSElURSBTUVVBUkUgQlJBQ0tFVDs7OzsKKzMwMUM7V0FWRSBEQVNIO1BkOzA7T047Ozs7O047Ozs7OworMzAxRDtSRVZFUlNFRCBET1VCTEUgUFJJTUUgUVVPVEFUSU9OIE1BUks7UHM7MDtPTjs7Ozs7Tjs7Ozs7CiszMDFFO0RPVUJMRSBQUklNRSBRVU9UQVRJT04gTUFSSztQZTswO09OOzs7OztOOzs7OzsKKzMwMUY7TE9XIERPVUJMRSBQUklNRSBRVU9UQVRJT04gTUFSSztQZTswO09OOzs7OztOOzs7OzsKKzMwMjA7UE9TVEFMIE1BUksgRkFDRTtTbzswO09OOzs7OztOOzs7OzsKKzMwMjE7SEFOR1pIT1UgTlVNRVJBTCBPTkU7Tmw7MDtMOzs7OzE7Tjs7Ozs7CiszMDIyO0hBTkdaSE9VIE5VTUVSQUwgVFdPO05sOzA7TDs7OzsyO047Ozs7OworMzAyMztIQU5HWkhPVSBOVU1FUkFMIFRIUkVFO05sOzA7TDs7OzszO047Ozs7OworMzAyNDtIQU5HWkhPVSBOVU1FUkFMIEZPVVI7Tmw7MDtMOzs7OzQ7Tjs7Ozs7CiszMDI1O0hBTkdaSE9VIE5VTUVSQUwgRklWRTtObDswO0w7Ozs7NTtOOzs7OzsKKzMwMjY7SEFOR1pIT1UgTlVNRVJBTCBTSVg7Tmw7MDtMOzs7OzY7Tjs7Ozs7CiszMDI3O0hBTkdaSE9VIE5VTUVSQUwgU0VWRU47Tmw7MDtMOzs7Ozc7Tjs7Ozs7CiszMDI4O0hBTkdaSE9VIE5VTUVSQUwgRUlHSFQ7Tmw7MDtMOzs7Ozg7Tjs7Ozs7CiszMDI5O0hBTkdaSE9VIE5VTUVSQUwgTklORTtObDswO0w7Ozs7OTtOOzs7OzsKKzMwMkE7SURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLO01uOzIxODtPTjs7Ozs7Tjs7Ozs7CiszMDJCO0lERU9HUkFQSElDIFJJU0lORyBUT05FIE1BUks7TW47MjI4O09OOzs7OztOOzs7OzsKKzMwMkM7SURFT0dSQVBISUMgREVQQVJUSU5HIFRPTkUgTUFSSztNbjsyMzI7T047Ozs7O047Ozs7OworMzAyRDtJREVPR1JBUEhJQyBFTlRFUklORyBUT05FIE1BUks7TW47MjIyO09OOzs7OztOOzs7OzsKKzMwMkU7SEFOR1VMIFNJTkdMRSBET1QgVE9ORSBNQVJLO01uOzIyNDtPTjs7Ozs7Tjs7Ozs7CiszMDJGO0hBTkdVTCBET1VCTEUgRE9UIFRPTkUgTUFSSztNbjsyMjQ7T047Ozs7O047Ozs7OworMzAzMDtXQVZZIERBU0g7UGQ7MDtPTjs7Ozs7Tjs7Ozs7CiszMDMxO1ZFUlRJQ0FMIEtBTkEgUkVQRUFUIE1BUks7TG07MDtPTjs7Ozs7Tjs7Ozs7CiszMDMyO1ZFUlRJQ0FMIEtBTkEgUkVQRUFUIFdJVEggVk9JQ0VEIFNPVU5EIE1BUks7TG07MDtPTjs7Ozs7Tjs7Ozs7CiszMDMzO1ZFUlRJQ0FMIEtBTkEgUkVQRUFUIE1BUksgVVBQRVIgSEFMRjtMbTswO09OOzs7OztOOzs7OzsKKzMwMzQ7VkVSVElDQUwgS0FOQSBSRVBFQVQgV0lUSCBWT0lDRUQgU09VTkQgTUFSSyBVUFBFUiBIQUxGO0xtOzA7T047Ozs7O047Ozs7OworMzAzNTtWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIExPV0VSIEhBTEY7TG07MDtPTjs7Ozs7Tjs7Ozs7CiszMDM2O0NJUkNMRUQgUE9TVEFMIE1BUks7U287MDtPTjs8Y29tcGF0PiAzMDEyOzs7O047Ozs7OworMzAzNztJREVPR1JBUEhJQyBURUxFR1JBUEggTElORSBGRUVEIFNFUEFSQVRPUiBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CiszMDNGO0lERU9HUkFQSElDIEhBTEYgRklMTCBTUEFDRTtTbzswO09OOzs7OztOOzs7OzsKKzMwNDE7SElSQUdBTkEgTEVUVEVSIFNNQUxMIEE7TG87MDtMOzs7OztOOzs7OzsKKzMwNDI7SElSQUdBTkEgTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzMwNDM7SElSQUdBTkEgTEVUVEVSIFNNQUxMIEk7TG87MDtMOzs7OztOOzs7OzsKKzMwNDQ7SElSQUdBTkEgTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzMwNDU7SElSQUdBTkEgTEVUVEVSIFNNQUxMIFU7TG87MDtMOzs7OztOOzs7OzsKKzMwNDY7SElSQUdBTkEgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzMwNDc7SElSQUdBTkEgTEVUVEVSIFNNQUxMIEU7TG87MDtMOzs7OztOOzs7OzsKKzMwNDg7SElSQUdBTkEgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzMwNDk7SElSQUdBTkEgTEVUVEVSIFNNQUxMIE87TG87MDtMOzs7OztOOzs7OzsKKzMwNEE7SElSQUdBTkEgTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzMwNEI7SElSQUdBTkEgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDRDO0hJUkFHQU5BIExFVFRFUiBHQTtMbzswO0w7MzA0QiAzMDk5Ozs7O047Ozs7OworMzA0RDtISVJBR0FOQSBMRVRURVIgS0k7TG87MDtMOzs7OztOOzs7OzsKKzMwNEU7SElSQUdBTkEgTEVUVEVSIEdJO0xvOzA7TDszMDREIDMwOTk7Ozs7Tjs7Ozs7CiszMDRGO0hJUkFHQU5BIExFVFRFUiBLVTtMbzswO0w7Ozs7O047Ozs7OworMzA1MDtISVJBR0FOQSBMRVRURVIgR1U7TG87MDtMOzMwNEYgMzA5OTs7OztOOzs7OzsKKzMwNTE7SElSQUdBTkEgTEVUVEVSIEtFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDUyO0hJUkFHQU5BIExFVFRFUiBHRTtMbzswO0w7MzA1MSAzMDk5Ozs7O047Ozs7OworMzA1MztISVJBR0FOQSBMRVRURVIgS087TG87MDtMOzs7OztOOzs7OzsKKzMwNTQ7SElSQUdBTkEgTEVUVEVSIEdPO0xvOzA7TDszMDUzIDMwOTk7Ozs7Tjs7Ozs7CiszMDU1O0hJUkFHQU5BIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMzA1NjtISVJBR0FOQSBMRVRURVIgWkE7TG87MDtMOzMwNTUgMzA5OTs7OztOOzs7OzsKKzMwNTc7SElSQUdBTkEgTEVUVEVSIFNJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDU4O0hJUkFHQU5BIExFVFRFUiBaSTtMbzswO0w7MzA1NyAzMDk5Ozs7O047Ozs7OworMzA1OTtISVJBR0FOQSBMRVRURVIgU1U7TG87MDtMOzs7OztOOzs7OzsKKzMwNUE7SElSQUdBTkEgTEVUVEVSIFpVO0xvOzA7TDszMDU5IDMwOTk7Ozs7Tjs7Ozs7CiszMDVCO0hJUkFHQU5BIExFVFRFUiBTRTtMbzswO0w7Ozs7O047Ozs7OworMzA1QztISVJBR0FOQSBMRVRURVIgWkU7TG87MDtMOzMwNUIgMzA5OTs7OztOOzs7OzsKKzMwNUQ7SElSQUdBTkEgTEVUVEVSIFNPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDVFO0hJUkFHQU5BIExFVFRFUiBaTztMbzswO0w7MzA1RCAzMDk5Ozs7O047Ozs7OworMzA1RjtISVJBR0FOQSBMRVRURVIgVEE7TG87MDtMOzs7OztOOzs7OzsKKzMwNjA7SElSQUdBTkEgTEVUVEVSIERBO0xvOzA7TDszMDVGIDMwOTk7Ozs7Tjs7Ozs7CiszMDYxO0hJUkFHQU5BIExFVFRFUiBUSTtMbzswO0w7Ozs7O047Ozs7OworMzA2MjtISVJBR0FOQSBMRVRURVIgREk7TG87MDtMOzMwNjEgMzA5OTs7OztOOzs7OzsKKzMwNjM7SElSQUdBTkEgTEVUVEVSIFNNQUxMIFRVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDY0O0hJUkFHQU5BIExFVFRFUiBUVTtMbzswO0w7Ozs7O047Ozs7OworMzA2NTtISVJBR0FOQSBMRVRURVIgRFU7TG87MDtMOzMwNjQgMzA5OTs7OztOOzs7OzsKKzMwNjY7SElSQUdBTkEgTEVUVEVSIFRFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDY3O0hJUkFHQU5BIExFVFRFUiBERTtMbzswO0w7MzA2NiAzMDk5Ozs7O047Ozs7OworMzA2ODtISVJBR0FOQSBMRVRURVIgVE87TG87MDtMOzs7OztOOzs7OzsKKzMwNjk7SElSQUdBTkEgTEVUVEVSIERPO0xvOzA7TDszMDY4IDMwOTk7Ozs7Tjs7Ozs7CiszMDZBO0hJUkFHQU5BIExFVFRFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMzA2QjtISVJBR0FOQSBMRVRURVIgTkk7TG87MDtMOzs7OztOOzs7OzsKKzMwNkM7SElSQUdBTkEgTEVUVEVSIE5VO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDZEO0hJUkFHQU5BIExFVFRFUiBORTtMbzswO0w7Ozs7O047Ozs7OworMzA2RTtISVJBR0FOQSBMRVRURVIgTk87TG87MDtMOzs7OztOOzs7OzsKKzMwNkY7SElSQUdBTkEgTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDcwO0hJUkFHQU5BIExFVFRFUiBCQTtMbzswO0w7MzA2RiAzMDk5Ozs7O047Ozs7OworMzA3MTtISVJBR0FOQSBMRVRURVIgUEE7TG87MDtMOzMwNkYgMzA5QTs7OztOOzs7OzsKKzMwNzI7SElSQUdBTkEgTEVUVEVSIEhJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDczO0hJUkFHQU5BIExFVFRFUiBCSTtMbzswO0w7MzA3MiAzMDk5Ozs7O047Ozs7OworMzA3NDtISVJBR0FOQSBMRVRURVIgUEk7TG87MDtMOzMwNzIgMzA5QTs7OztOOzs7OzsKKzMwNzU7SElSQUdBTkEgTEVUVEVSIEhVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDc2O0hJUkFHQU5BIExFVFRFUiBCVTtMbzswO0w7MzA3NSAzMDk5Ozs7O047Ozs7OworMzA3NztISVJBR0FOQSBMRVRURVIgUFU7TG87MDtMOzMwNzUgMzA5QTs7OztOOzs7OzsKKzMwNzg7SElSQUdBTkEgTEVUVEVSIEhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDc5O0hJUkFHQU5BIExFVFRFUiBCRTtMbzswO0w7MzA3OCAzMDk5Ozs7O047Ozs7OworMzA3QTtISVJBR0FOQSBMRVRURVIgUEU7TG87MDtMOzMwNzggMzA5QTs7OztOOzs7OzsKKzMwN0I7SElSQUdBTkEgTEVUVEVSIEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDdDO0hJUkFHQU5BIExFVFRFUiBCTztMbzswO0w7MzA3QiAzMDk5Ozs7O047Ozs7OworMzA3RDtISVJBR0FOQSBMRVRURVIgUE87TG87MDtMOzMwN0IgMzA5QTs7OztOOzs7OzsKKzMwN0U7SElSQUdBTkEgTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDdGO0hJUkFHQU5BIExFVFRFUiBNSTtMbzswO0w7Ozs7O047Ozs7OworMzA4MDtISVJBR0FOQSBMRVRURVIgTVU7TG87MDtMOzs7OztOOzs7OzsKKzMwODE7SElSQUdBTkEgTEVUVEVSIE1FO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDgyO0hJUkFHQU5BIExFVFRFUiBNTztMbzswO0w7Ozs7O047Ozs7OworMzA4MztISVJBR0FOQSBMRVRURVIgU01BTEwgWUE7TG87MDtMOzs7OztOOzs7OzsKKzMwODQ7SElSQUdBTkEgTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDg1O0hJUkFHQU5BIExFVFRFUiBTTUFMTCBZVTtMbzswO0w7Ozs7O047Ozs7OworMzA4NjtISVJBR0FOQSBMRVRURVIgWVU7TG87MDtMOzs7OztOOzs7OzsKKzMwODc7SElSQUdBTkEgTEVUVEVSIFNNQUxMIFlPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDg4O0hJUkFHQU5BIExFVFRFUiBZTztMbzswO0w7Ozs7O047Ozs7OworMzA4OTtISVJBR0FOQSBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzMwOEE7SElSQUdBTkEgTEVUVEVSIFJJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDhCO0hJUkFHQU5BIExFVFRFUiBSVTtMbzswO0w7Ozs7O047Ozs7OworMzA4QztISVJBR0FOQSBMRVRURVIgUkU7TG87MDtMOzs7OztOOzs7OzsKKzMwOEQ7SElSQUdBTkEgTEVUVEVSIFJPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDhFO0hJUkFHQU5BIExFVFRFUiBTTUFMTCBXQTtMbzswO0w7Ozs7O047Ozs7OworMzA4RjtISVJBR0FOQSBMRVRURVIgV0E7TG87MDtMOzs7OztOOzs7OzsKKzMwOTA7SElSQUdBTkEgTEVUVEVSIFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDkxO0hJUkFHQU5BIExFVFRFUiBXRTtMbzswO0w7Ozs7O047Ozs7OworMzA5MjtISVJBR0FOQSBMRVRURVIgV087TG87MDtMOzs7OztOOzs7OzsKKzMwOTM7SElSQUdBTkEgTEVUVEVSIE47TG87MDtMOzs7OztOOzs7OzsKKzMwOTQ7SElSQUdBTkEgTEVUVEVSIFZVO0xvOzA7TDszMDQ2IDMwOTk7Ozs7Tjs7Ozs7CiszMDk5O0NPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSztNbjs4O09OOzs7OztOO05PTi1TUEFDSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFZPSUNFRCBTT1VORCBNQVJLOzs7OworMzA5QTtDT01CSU5JTkcgS0FUQUtBTkEtSElSQUdBTkEgU0VNSS1WT0lDRUQgU09VTkQgTUFSSztNbjs4O09OOzs7OztOO05PTi1TUEFDSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFNFTUktVk9JQ0VEIFNPVU5EIE1BUks7Ozs7CiszMDlCO0tBVEFLQU5BLUhJUkFHQU5BIFZPSUNFRCBTT1VORCBNQVJLO0xtOzA7TDs8Y29tcGF0PiAwMDIwIDMwOTk7Ozs7Tjs7Ozs7CiszMDlDO0tBVEFLQU5BLUhJUkFHQU5BIFNFTUktVk9JQ0VEIFNPVU5EIE1BUks7TG07MDtMOzxjb21wYXQ+IDAwMjAgMzA5QTs7OztOOzs7OzsKKzMwOUQ7SElSQUdBTkEgSVRFUkFUSU9OIE1BUks7TG07MDtMOzs7OztOOzs7OzsKKzMwOUU7SElSQUdBTkEgVk9JQ0VEIElURVJBVElPTiBNQVJLO0xtOzA7TDszMDlEIDMwOTk7Ozs7Tjs7Ozs7CiszMEExO0tBVEFLQU5BIExFVFRFUiBTTUFMTCBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEEyO0tBVEFLQU5BIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEEzO0tBVEFLQU5BIExFVFRFUiBTTUFMTCBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEE0O0tBVEFLQU5BIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEE1O0tBVEFLQU5BIExFVFRFUiBTTUFMTCBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEE2O0tBVEFLQU5BIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEE3O0tBVEFLQU5BIExFVFRFUiBTTUFMTCBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEE4O0tBVEFLQU5BIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEE5O0tBVEFLQU5BIExFVFRFUiBTTUFMTCBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEFBO0tBVEFLQU5BIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEFCO0tBVEFLQU5BIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMzBBQztLQVRBS0FOQSBMRVRURVIgR0E7TG87MDtMOzMwQUIgMzA5OTs7OztOOzs7OzsKKzMwQUQ7S0FUQUtBTkEgTEVUVEVSIEtJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEFFO0tBVEFLQU5BIExFVFRFUiBHSTtMbzswO0w7MzBBRCAzMDk5Ozs7O047Ozs7OworMzBBRjtLQVRBS0FOQSBMRVRURVIgS1U7TG87MDtMOzs7OztOOzs7OzsKKzMwQjA7S0FUQUtBTkEgTEVUVEVSIEdVO0xvOzA7TDszMEFGIDMwOTk7Ozs7Tjs7Ozs7CiszMEIxO0tBVEFLQU5BIExFVFRFUiBLRTtMbzswO0w7Ozs7O047Ozs7OworMzBCMjtLQVRBS0FOQSBMRVRURVIgR0U7TG87MDtMOzMwQjEgMzA5OTs7OztOOzs7OzsKKzMwQjM7S0FUQUtBTkEgTEVUVEVSIEtPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEI0O0tBVEFLQU5BIExFVFRFUiBHTztMbzswO0w7MzBCMyAzMDk5Ozs7O047Ozs7OworMzBCNTtLQVRBS0FOQSBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzMwQjY7S0FUQUtBTkEgTEVUVEVSIFpBO0xvOzA7TDszMEI1IDMwOTk7Ozs7Tjs7Ozs7CiszMEI3O0tBVEFLQU5BIExFVFRFUiBTSTtMbzswO0w7Ozs7O047Ozs7OworMzBCODtLQVRBS0FOQSBMRVRURVIgWkk7TG87MDtMOzMwQjcgMzA5OTs7OztOOzs7OzsKKzMwQjk7S0FUQUtBTkEgTEVUVEVSIFNVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEJBO0tBVEFLQU5BIExFVFRFUiBaVTtMbzswO0w7MzBCOSAzMDk5Ozs7O047Ozs7OworMzBCQjtLQVRBS0FOQSBMRVRURVIgU0U7TG87MDtMOzs7OztOOzs7OzsKKzMwQkM7S0FUQUtBTkEgTEVUVEVSIFpFO0xvOzA7TDszMEJCIDMwOTk7Ozs7Tjs7Ozs7CiszMEJEO0tBVEFLQU5BIExFVFRFUiBTTztMbzswO0w7Ozs7O047Ozs7OworMzBCRTtLQVRBS0FOQSBMRVRURVIgWk87TG87MDtMOzMwQkQgMzA5OTs7OztOOzs7OzsKKzMwQkY7S0FUQUtBTkEgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEMwO0tBVEFLQU5BIExFVFRFUiBEQTtMbzswO0w7MzBCRiAzMDk5Ozs7O047Ozs7OworMzBDMTtLQVRBS0FOQSBMRVRURVIgVEk7TG87MDtMOzs7OztOOzs7OzsKKzMwQzI7S0FUQUtBTkEgTEVUVEVSIERJO0xvOzA7TDszMEMxIDMwOTk7Ozs7Tjs7Ozs7CiszMEMzO0tBVEFLQU5BIExFVFRFUiBTTUFMTCBUVTtMbzswO0w7Ozs7O047Ozs7OworMzBDNDtLQVRBS0FOQSBMRVRURVIgVFU7TG87MDtMOzs7OztOOzs7OzsKKzMwQzU7S0FUQUtBTkEgTEVUVEVSIERVO0xvOzA7TDszMEM0IDMwOTk7Ozs7Tjs7Ozs7CiszMEM2O0tBVEFLQU5BIExFVFRFUiBURTtMbzswO0w7Ozs7O047Ozs7OworMzBDNztLQVRBS0FOQSBMRVRURVIgREU7TG87MDtMOzMwQzYgMzA5OTs7OztOOzs7OzsKKzMwQzg7S0FUQUtBTkEgTEVUVEVSIFRPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEM5O0tBVEFLQU5BIExFVFRFUiBETztMbzswO0w7MzBDOCAzMDk5Ozs7O047Ozs7OworMzBDQTtLQVRBS0FOQSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzMwQ0I7S0FUQUtBTkEgTEVUVEVSIE5JO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMENDO0tBVEFLQU5BIExFVFRFUiBOVTtMbzswO0w7Ozs7O047Ozs7OworMzBDRDtLQVRBS0FOQSBMRVRURVIgTkU7TG87MDtMOzs7OztOOzs7OzsKKzMwQ0U7S0FUQUtBTkEgTEVUVEVSIE5PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMENGO0tBVEFLQU5BIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMzBEMDtLQVRBS0FOQSBMRVRURVIgQkE7TG87MDtMOzMwQ0YgMzA5OTs7OztOOzs7OzsKKzMwRDE7S0FUQUtBTkEgTEVUVEVSIFBBO0xvOzA7TDszMENGIDMwOUE7Ozs7Tjs7Ozs7CiszMEQyO0tBVEFLQU5BIExFVFRFUiBISTtMbzswO0w7Ozs7O047Ozs7OworMzBEMztLQVRBS0FOQSBMRVRURVIgQkk7TG87MDtMOzMwRDIgMzA5OTs7OztOOzs7OzsKKzMwRDQ7S0FUQUtBTkEgTEVUVEVSIFBJO0xvOzA7TDszMEQyIDMwOUE7Ozs7Tjs7Ozs7CiszMEQ1O0tBVEFLQU5BIExFVFRFUiBIVTtMbzswO0w7Ozs7O047Ozs7OworMzBENjtLQVRBS0FOQSBMRVRURVIgQlU7TG87MDtMOzMwRDUgMzA5OTs7OztOOzs7OzsKKzMwRDc7S0FUQUtBTkEgTEVUVEVSIFBVO0xvOzA7TDszMEQ1IDMwOUE7Ozs7Tjs7Ozs7CiszMEQ4O0tBVEFLQU5BIExFVFRFUiBIRTtMbzswO0w7Ozs7O047Ozs7OworMzBEOTtLQVRBS0FOQSBMRVRURVIgQkU7TG87MDtMOzMwRDggMzA5OTs7OztOOzs7OzsKKzMwREE7S0FUQUtBTkEgTEVUVEVSIFBFO0xvOzA7TDszMEQ4IDMwOUE7Ozs7Tjs7Ozs7CiszMERCO0tBVEFLQU5BIExFVFRFUiBITztMbzswO0w7Ozs7O047Ozs7OworMzBEQztLQVRBS0FOQSBMRVRURVIgQk87TG87MDtMOzMwREIgMzA5OTs7OztOOzs7OzsKKzMwREQ7S0FUQUtBTkEgTEVUVEVSIFBPO0xvOzA7TDszMERCIDMwOUE7Ozs7Tjs7Ozs7CiszMERFO0tBVEFLQU5BIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMzBERjtLQVRBS0FOQSBMRVRURVIgTUk7TG87MDtMOzs7OztOOzs7OzsKKzMwRTA7S0FUQUtBTkEgTEVUVEVSIE1VO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEUxO0tBVEFLQU5BIExFVFRFUiBNRTtMbzswO0w7Ozs7O047Ozs7OworMzBFMjtLQVRBS0FOQSBMRVRURVIgTU87TG87MDtMOzs7OztOOzs7OzsKKzMwRTM7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEU0O0tBVEFLQU5BIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMzBFNTtLQVRBS0FOQSBMRVRURVIgU01BTEwgWVU7TG87MDtMOzs7OztOOzs7OzsKKzMwRTY7S0FUQUtBTkEgTEVUVEVSIFlVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEU3O0tBVEFLQU5BIExFVFRFUiBTTUFMTCBZTztMbzswO0w7Ozs7O047Ozs7OworMzBFODtLQVRBS0FOQSBMRVRURVIgWU87TG87MDtMOzs7OztOOzs7OzsKKzMwRTk7S0FUQUtBTkEgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEVBO0tBVEFLQU5BIExFVFRFUiBSSTtMbzswO0w7Ozs7O047Ozs7OworMzBFQjtLQVRBS0FOQSBMRVRURVIgUlU7TG87MDtMOzs7OztOOzs7OzsKKzMwRUM7S0FUQUtBTkEgTEVUVEVSIFJFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEVEO0tBVEFLQU5BIExFVFRFUiBSTztMbzswO0w7Ozs7O047Ozs7OworMzBFRTtLQVRBS0FOQSBMRVRURVIgU01BTEwgV0E7TG87MDtMOzs7OztOOzs7OzsKKzMwRUY7S0FUQUtBTkEgTEVUVEVSIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEYwO0tBVEFLQU5BIExFVFRFUiBXSTtMbzswO0w7Ozs7O047Ozs7OworMzBGMTtLQVRBS0FOQSBMRVRURVIgV0U7TG87MDtMOzs7OztOOzs7OzsKKzMwRjI7S0FUQUtBTkEgTEVUVEVSIFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEYzO0tBVEFLQU5BIExFVFRFUiBOO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEY0O0tBVEFLQU5BIExFVFRFUiBWVTtMbzswO0w7MzBBNiAzMDk5Ozs7O047Ozs7OworMzBGNTtLQVRBS0FOQSBMRVRURVIgU01BTEwgS0E7TG87MDtMOzs7OztOOzs7OzsKKzMwRjY7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIEtFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEY3O0tBVEFLQU5BIExFVFRFUiBWQTtMbzswO0w7MzBFRiAzMDk5Ozs7O047Ozs7OworMzBGODtLQVRBS0FOQSBMRVRURVIgVkk7TG87MDtMOzMwRjAgMzA5OTs7OztOOzs7OzsKKzMwRjk7S0FUQUtBTkEgTEVUVEVSIFZFO0xvOzA7TDszMEYxIDMwOTk7Ozs7Tjs7Ozs7CiszMEZBO0tBVEFLQU5BIExFVFRFUiBWTztMbzswO0w7MzBGMiAzMDk5Ozs7O047Ozs7OworMzBGQjtLQVRBS0FOQSBNSURETEUgRE9UO1BvOzA7TDs7Ozs7Tjs7Ozs7CiszMEZDO0tBVEFLQU5BLUhJUkFHQU5BIFBST0xPTkdFRCBTT1VORCBNQVJLO0xtOzA7TDs7Ozs7Tjs7Ozs7CiszMEZEO0tBVEFLQU5BIElURVJBVElPTiBNQVJLO0xtOzA7TDs7Ozs7Tjs7Ozs7CiszMEZFO0tBVEFLQU5BIFZPSUNFRCBJVEVSQVRJT04gTUFSSztMbTswO0w7MzBGRCAzMDk5Ozs7O047Ozs7OworMzEwNTtCT1BPTU9GTyBMRVRURVIgQjtMbzswO0w7Ozs7O047Ozs7OworMzEwNjtCT1BPTU9GTyBMRVRURVIgUDtMbzswO0w7Ozs7O047Ozs7OworMzEwNztCT1BPTU9GTyBMRVRURVIgTTtMbzswO0w7Ozs7O047Ozs7OworMzEwODtCT1BPTU9GTyBMRVRURVIgRjtMbzswO0w7Ozs7O047Ozs7OworMzEwOTtCT1BPTU9GTyBMRVRURVIgRDtMbzswO0w7Ozs7O047Ozs7OworMzEwQTtCT1BPTU9GTyBMRVRURVIgVDtMbzswO0w7Ozs7O047Ozs7OworMzEwQjtCT1BPTU9GTyBMRVRURVIgTjtMbzswO0w7Ozs7O047Ozs7OworMzEwQztCT1BPTU9GTyBMRVRURVIgTDtMbzswO0w7Ozs7O047Ozs7OworMzEwRDtCT1BPTU9GTyBMRVRURVIgRztMbzswO0w7Ozs7O047Ozs7OworMzEwRTtCT1BPTU9GTyBMRVRURVIgSztMbzswO0w7Ozs7O047Ozs7OworMzEwRjtCT1BPTU9GTyBMRVRURVIgSDtMbzswO0w7Ozs7O047Ozs7OworMzExMDtCT1BPTU9GTyBMRVRURVIgSjtMbzswO0w7Ozs7O047Ozs7OworMzExMTtCT1BPTU9GTyBMRVRURVIgUTtMbzswO0w7Ozs7O047Ozs7OworMzExMjtCT1BPTU9GTyBMRVRURVIgWDtMbzswO0w7Ozs7O047Ozs7OworMzExMztCT1BPTU9GTyBMRVRURVIgWkg7TG87MDtMOzs7OztOOzs7OzsKKzMxMTQ7Qk9QT01PRk8gTEVUVEVSIENIO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTE1O0JPUE9NT0ZPIExFVFRFUiBTSDtMbzswO0w7Ozs7O047Ozs7OworMzExNjtCT1BPTU9GTyBMRVRURVIgUjtMbzswO0w7Ozs7O047Ozs7OworMzExNztCT1BPTU9GTyBMRVRURVIgWjtMbzswO0w7Ozs7O047Ozs7OworMzExODtCT1BPTU9GTyBMRVRURVIgQztMbzswO0w7Ozs7O047Ozs7OworMzExOTtCT1BPTU9GTyBMRVRURVIgUztMbzswO0w7Ozs7O047Ozs7OworMzExQTtCT1BPTU9GTyBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMzExQjtCT1BPTU9GTyBMRVRURVIgTztMbzswO0w7Ozs7O047Ozs7OworMzExQztCT1BPTU9GTyBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMzExRDtCT1BPTU9GTyBMRVRURVIgRUg7TG87MDtMOzs7OztOOzs7OzsKKzMxMUU7Qk9QT01PRk8gTEVUVEVSIEFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTFGO0JPUE9NT0ZPIExFVFRFUiBFSTtMbzswO0w7Ozs7O047Ozs7OworMzEyMDtCT1BPTU9GTyBMRVRURVIgQVU7TG87MDtMOzs7OztOOzs7OzsKKzMxMjE7Qk9QT01PRk8gTEVUVEVSIE9VO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTIyO0JPUE9NT0ZPIExFVFRFUiBBTjtMbzswO0w7Ozs7O047Ozs7OworMzEyMztCT1BPTU9GTyBMRVRURVIgRU47TG87MDtMOzs7OztOOzs7OzsKKzMxMjQ7Qk9QT01PRk8gTEVUVEVSIEFORztMbzswO0w7Ozs7O047Ozs7OworMzEyNTtCT1BPTU9GTyBMRVRURVIgRU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTI2O0JPUE9NT0ZPIExFVFRFUiBFUjtMbzswO0w7Ozs7O047Ozs7OworMzEyNztCT1BPTU9GTyBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMzEyODtCT1BPTU9GTyBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMzEyOTtCT1BPTU9GTyBMRVRURVIgSVU7TG87MDtMOzs7OztOOzs7OzsKKzMxMkE7Qk9QT01PRk8gTEVUVEVSIFY7TG87MDtMOzs7OztOOzs7OzsKKzMxMkI7Qk9QT01PRk8gTEVUVEVSIE5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTJDO0JPUE9NT0ZPIExFVFRFUiBHTjtMbzswO0w7Ozs7O047Ozs7OworMzEzMTtIQU5HVUwgTEVUVEVSIEtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTEwMDs7OztOO0hBTkdVTCBMRVRURVIgR0lZRU9HOzs7OworMzEzMjtIQU5HVUwgTEVUVEVSIFNTQU5HS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMTAxOzs7O047SEFOR1VMIExFVFRFUiBTU0FORyBHSVlFT0c7Ozs7CiszMTMzO0hBTkdVTCBMRVRURVIgS0lZRU9LLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExQUE7Ozs7TjtIQU5HVUwgTEVUVEVSIEdJWUVPRyBTSU9TOzs7OworMzEzNDtIQU5HVUwgTEVUVEVSIE5JRVVOO0xvOzA7TDs8Y29tcGF0PiAxMTAyOzs7O047Ozs7OworMzEzNTtIQU5HVUwgTEVUVEVSIE5JRVVOLUNJRVVDO0xvOzA7TDs8Y29tcGF0PiAxMUFDOzs7O047SEFOR1VMIExFVFRFUiBOSUVVTiBKSUVVSjs7OzsKKzMxMzY7SEFOR1VMIExFVFRFUiBOSUVVTi1ISUVVSDtMbzswO0w7PGNvbXBhdD4gMTFBRDs7OztOO0hBTkdVTCBMRVRURVIgTklFVU4gSElFVUg7Ozs7CiszMTM3O0hBTkdVTCBMRVRURVIgVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMTAzOzs7O047SEFOR1VMIExFVFRFUiBESUdFVUQ7Ozs7CiszMTM4O0hBTkdVTCBMRVRURVIgU1NBTkdUSUtFVVQ7TG87MDtMOzxjb21wYXQ+IDExMDQ7Ozs7TjtIQU5HVUwgTEVUVEVSIFNTQU5HIERJR0VVRDs7OzsKKzMxMzk7SEFOR1VMIExFVFRFUiBSSUVVTDtMbzswO0w7PGNvbXBhdD4gMTEwNTs7OztOO0hBTkdVTCBMRVRURVIgTElFVUw7Ozs7CiszMTNBO0hBTkdVTCBMRVRURVIgUklFVUwtS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMUIwOzs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBHSVlFT0c7Ozs7CiszMTNCO0hBTkdVTCBMRVRURVIgUklFVUwtTUlFVU07TG87MDtMOzxjb21wYXQ+IDExQjE7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIE1JRVVNOzs7OworMzEzQztIQU5HVUwgTEVUVEVSIFJJRVVMLVBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMUIyOzs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBCSUVVQjs7OzsKKzMxM0Q7SEFOR1VMIExFVFRFUiBSSUVVTC1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUIzOzs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBTSU9TOzs7OworMzEzRTtIQU5HVUwgTEVUVEVSIFJJRVVMLVRISUVVVEg7TG87MDtMOzxjb21wYXQ+IDExQjQ7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIFRJRVVUOzs7OworMzEzRjtIQU5HVUwgTEVUVEVSIFJJRVVMLVBISUVVUEg7TG87MDtMOzxjb21wYXQ+IDExQjU7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIFBJRVVQOzs7OworMzE0MDtIQU5HVUwgTEVUVEVSIFJJRVVMLUhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMTFBOzs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBISUVVSDs7OzsKKzMxNDE7SEFOR1VMIExFVFRFUiBNSUVVTTtMbzswO0w7PGNvbXBhdD4gMTEwNjs7OztOOzs7OzsKKzMxNDI7SEFOR1VMIExFVFRFUiBQSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEwNzs7OztOO0hBTkdVTCBMRVRURVIgQklFVUI7Ozs7CiszMTQzO0hBTkdVTCBMRVRURVIgU1NBTkdQSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEwODs7OztOO0hBTkdVTCBMRVRURVIgU1NBTkcgQklFVUI7Ozs7CiszMTQ0O0hBTkdVTCBMRVRURVIgUElFVVAtU0lPUztMbzswO0w7PGNvbXBhdD4gMTEyMTs7OztOO0hBTkdVTCBMRVRURVIgQklFVUIgU0lPUzs7OzsKKzMxNDU7SEFOR1VMIExFVFRFUiBTSU9TO0xvOzA7TDs8Y29tcGF0PiAxMTA5Ozs7O047Ozs7OworMzE0NjtIQU5HVUwgTEVUVEVSIFNTQU5HU0lPUztMbzswO0w7PGNvbXBhdD4gMTEwQTs7OztOO0hBTkdVTCBMRVRURVIgU1NBTkcgU0lPUzs7OzsKKzMxNDc7SEFOR1VMIExFVFRFUiBJRVVORztMbzswO0w7PGNvbXBhdD4gMTEwQjs7OztOOzs7OzsKKzMxNDg7SEFOR1VMIExFVFRFUiBDSUVVQztMbzswO0w7PGNvbXBhdD4gMTEwQzs7OztOO0hBTkdVTCBMRVRURVIgSklFVUo7Ozs7CiszMTQ5O0hBTkdVTCBMRVRURVIgU1NBTkdDSUVVQztMbzswO0w7PGNvbXBhdD4gMTEwRDs7OztOO0hBTkdVTCBMRVRURVIgU1NBTkcgSklFVUo7Ozs7CiszMTRBO0hBTkdVTCBMRVRURVIgQ0hJRVVDSDtMbzswO0w7PGNvbXBhdD4gMTEwRTs7OztOO0hBTkdVTCBMRVRURVIgQ0lFVUM7Ozs7CiszMTRCO0hBTkdVTCBMRVRURVIgS0hJRVVLSDtMbzswO0w7PGNvbXBhdD4gMTEwRjs7OztOO0hBTkdVTCBMRVRURVIgS0lZRU9LOzs7OworMzE0QztIQU5HVUwgTEVUVEVSIFRISUVVVEg7TG87MDtMOzxjb21wYXQ+IDExMTA7Ozs7TjtIQU5HVUwgTEVUVEVSIFRJRVVUOzs7OworMzE0RDtIQU5HVUwgTEVUVEVSIFBISUVVUEg7TG87MDtMOzxjb21wYXQ+IDExMTE7Ozs7TjtIQU5HVUwgTEVUVEVSIFBJRVVQOzs7OworMzE0RTtIQU5HVUwgTEVUVEVSIEhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMTEyOzs7O047Ozs7OworMzE0RjtIQU5HVUwgTEVUVEVSIEE7TG87MDtMOzxjb21wYXQ+IDExNjE7Ozs7Tjs7Ozs7CiszMTUwO0hBTkdVTCBMRVRURVIgQUU7TG87MDtMOzxjb21wYXQ+IDExNjI7Ozs7Tjs7Ozs7CiszMTUxO0hBTkdVTCBMRVRURVIgWUE7TG87MDtMOzxjb21wYXQ+IDExNjM7Ozs7Tjs7Ozs7CiszMTUyO0hBTkdVTCBMRVRURVIgWUFFO0xvOzA7TDs8Y29tcGF0PiAxMTY0Ozs7O047Ozs7OworMzE1MztIQU5HVUwgTEVUVEVSIEVPO0xvOzA7TDs8Y29tcGF0PiAxMTY1Ozs7O047Ozs7OworMzE1NDtIQU5HVUwgTEVUVEVSIEU7TG87MDtMOzxjb21wYXQ+IDExNjY7Ozs7Tjs7Ozs7CiszMTU1O0hBTkdVTCBMRVRURVIgWUVPO0xvOzA7TDs8Y29tcGF0PiAxMTY3Ozs7O047Ozs7OworMzE1NjtIQU5HVUwgTEVUVEVSIFlFO0xvOzA7TDs8Y29tcGF0PiAxMTY4Ozs7O047Ozs7OworMzE1NztIQU5HVUwgTEVUVEVSIE87TG87MDtMOzxjb21wYXQ+IDExNjk7Ozs7Tjs7Ozs7CiszMTU4O0hBTkdVTCBMRVRURVIgV0E7TG87MDtMOzxjb21wYXQ+IDExNkE7Ozs7Tjs7Ozs7CiszMTU5O0hBTkdVTCBMRVRURVIgV0FFO0xvOzA7TDs8Y29tcGF0PiAxMTZCOzs7O047Ozs7OworMzE1QTtIQU5HVUwgTEVUVEVSIE9FO0xvOzA7TDs8Y29tcGF0PiAxMTZDOzs7O047Ozs7OworMzE1QjtIQU5HVUwgTEVUVEVSIFlPO0xvOzA7TDs8Y29tcGF0PiAxMTZEOzs7O047Ozs7OworMzE1QztIQU5HVUwgTEVUVEVSIFU7TG87MDtMOzxjb21wYXQ+IDExNkU7Ozs7Tjs7Ozs7CiszMTVEO0hBTkdVTCBMRVRURVIgV0VPO0xvOzA7TDs8Y29tcGF0PiAxMTZGOzs7O047Ozs7OworMzE1RTtIQU5HVUwgTEVUVEVSIFdFO0xvOzA7TDs8Y29tcGF0PiAxMTcwOzs7O047Ozs7OworMzE1RjtIQU5HVUwgTEVUVEVSIFdJO0xvOzA7TDs8Y29tcGF0PiAxMTcxOzs7O047Ozs7OworMzE2MDtIQU5HVUwgTEVUVEVSIFlVO0xvOzA7TDs8Y29tcGF0PiAxMTcyOzs7O047Ozs7OworMzE2MTtIQU5HVUwgTEVUVEVSIEVVO0xvOzA7TDs8Y29tcGF0PiAxMTczOzs7O047Ozs7OworMzE2MjtIQU5HVUwgTEVUVEVSIFlJO0xvOzA7TDs8Y29tcGF0PiAxMTc0Ozs7O047Ozs7OworMzE2MztIQU5HVUwgTEVUVEVSIEk7TG87MDtMOzxjb21wYXQ+IDExNzU7Ozs7Tjs7Ozs7CiszMTY0O0hBTkdVTCBGSUxMRVI7TG87MDtMOzxjb21wYXQ+IDExNjA7Ozs7TjtIQU5HVUwgQ0FFIE9NOzs7OworMzE2NTtIQU5HVUwgTEVUVEVSIFNTQU5HTklFVU47TG87MDtMOzxjb21wYXQ+IDExMTQ7Ozs7TjtIQU5HVUwgTEVUVEVSIFNTQU5HIE5JRVVOOzs7OworMzE2NjtIQU5HVUwgTEVUVEVSIE5JRVVOLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTExNTs7OztOO0hBTkdVTCBMRVRURVIgTklFVU4gRElHRVVEOzs7OworMzE2NztIQU5HVUwgTEVUVEVSIE5JRVVOLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExQzc7Ozs7TjtIQU5HVUwgTEVUVEVSIE5JRVVOIFNJT1M7Ozs7CiszMTY4O0hBTkdVTCBMRVRURVIgTklFVU4tUEFOU0lPUztMbzswO0w7PGNvbXBhdD4gMTFDODs7OztOO0hBTkdVTCBMRVRURVIgTklFVU4gQkFOIENISSBFVU07Ozs7CiszMTY5O0hBTkdVTCBMRVRURVIgUklFVUwtS0lZRU9LLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExQ0M7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIEdJWUVPRyBTSU9TOzs7OworMzE2QTtIQU5HVUwgTEVUVEVSIFJJRVVMLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTFDRTs7OztOO0hBTkdVTCBMRVRURVIgTElFVUwgRElHRVVEOzs7OworMzE2QjtIQU5HVUwgTEVUVEVSIFJJRVVMLVBJRVVQLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExRDM7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIEJJRVVCIFNJT1M7Ozs7CiszMTZDO0hBTkdVTCBMRVRURVIgUklFVUwtUEFOU0lPUztMbzswO0w7PGNvbXBhdD4gMTFENzs7OztOO0hBTkdVTCBMRVRURVIgTElFVUwgQkFOIENISSBFVU07Ozs7CiszMTZEO0hBTkdVTCBMRVRURVIgUklFVUwtWUVPUklOSElFVUg7TG87MDtMOzxjb21wYXQ+IDExRDk7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIFlFT0xJTiBISUVVSDs7OzsKKzMxNkU7SEFOR1VMIExFVFRFUiBNSUVVTS1QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTExQzs7OztOO0hBTkdVTCBMRVRURVIgTUlFVU0gQklFVUI7Ozs7CiszMTZGO0hBTkdVTCBMRVRURVIgTUlFVU0tU0lPUztMbzswO0w7PGNvbXBhdD4gMTFERDs7OztOO0hBTkdVTCBMRVRURVIgTUlFVU0gU0lPUzs7OzsKKzMxNzA7SEFOR1VMIExFVFRFUiBNSUVVTS1QQU5TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMURGOzs7O047SEFOR1VMIExFVFRFUiBCSUVVQiBCQU4gQ0hJIEVVTTs7OzsKKzMxNzE7SEFOR1VMIExFVFRFUiBLQVBZRU9VTk1JRVVNO0xvOzA7TDs8Y29tcGF0PiAxMTFEOzs7O047SEFOR1VMIExFVFRFUiBNSUVVTSBTVU4gR1lFT05HIEVVTTs7OzsKKzMxNzI7SEFOR1VMIExFVFRFUiBQSUVVUC1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMUU7Ozs7TjtIQU5HVUwgTEVUVEVSIEJJRVVCIEdJWUVPRzs7OzsKKzMxNzM7SEFOR1VMIExFVFRFUiBQSUVVUC1USUtFVVQ7TG87MDtMOzxjb21wYXQ+IDExMjA7Ozs7TjtIQU5HVUwgTEVUVEVSIEJJRVVCIERJR0VVRDs7OzsKKzMxNzQ7SEFOR1VMIExFVFRFUiBQSUVVUC1TSU9TLUtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTEyMjs7OztOO0hBTkdVTCBMRVRURVIgQklFVUIgU0lPUyBHSVlFT0c7Ozs7CiszMTc1O0hBTkdVTCBMRVRURVIgUElFVVAtU0lPUy1USUtFVVQ7TG87MDtMOzxjb21wYXQ+IDExMjM7Ozs7TjtIQU5HVUwgTEVUVEVSIEJJRVVCIFNJT1MgRElHRVVEOzs7OworMzE3NjtIQU5HVUwgTEVUVEVSIFBJRVVQLUNJRVVDO0xvOzA7TDs8Y29tcGF0PiAxMTI3Ozs7O047SEFOR1VMIExFVFRFUiBCSUVVQiBKSUVVSjs7OzsKKzMxNzc7SEFOR1VMIExFVFRFUiBQSUVVUC1USElFVVRIO0xvOzA7TDs8Y29tcGF0PiAxMTI5Ozs7O047SEFOR1VMIExFVFRFUiBCSUVVQiBUSUVVVDs7OzsKKzMxNzg7SEFOR1VMIExFVFRFUiBLQVBZRU9VTlBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMTJCOzs7O047SEFOR1VMIExFVFRFUiBCSUVVQiBTVU4gR1lFT05HIEVVTTs7OzsKKzMxNzk7SEFOR1VMIExFVFRFUiBLQVBZRU9VTlNTQU5HUElFVVA7TG87MDtMOzxjb21wYXQ+IDExMkM7Ozs7TjtIQU5HVUwgTEVUVEVSIFNTQU5HIEJJRVVCIFNVTiBHWUVPTkcgRVVNOzs7OworMzE3QTtIQU5HVUwgTEVUVEVSIFNJT1MtS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMTJEOzs7O047SEFOR1VMIExFVFRFUiBTSU9TIEdJWUVPRzs7OzsKKzMxN0I7SEFOR1VMIExFVFRFUiBTSU9TLU5JRVVOO0xvOzA7TDs8Y29tcGF0PiAxMTJFOzs7O047SEFOR1VMIExFVFRFUiBTSU9TIE5JRVVOOzs7OworMzE3QztIQU5HVUwgTEVUVEVSIFNJT1MtVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMTJGOzs7O047SEFOR1VMIExFVFRFUiBTSU9TIERJR0VVRDs7OzsKKzMxN0Q7SEFOR1VMIExFVFRFUiBTSU9TLVBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMTMyOzs7O047SEFOR1VMIExFVFRFUiBTSU9TIEJJRVVCOzs7OworMzE3RTtIQU5HVUwgTEVUVEVSIFNJT1MtQ0lFVUM7TG87MDtMOzxjb21wYXQ+IDExMzY7Ozs7TjtIQU5HVUwgTEVUVEVSIFNJT1MgSklFVUo7Ozs7CiszMTdGO0hBTkdVTCBMRVRURVIgUEFOU0lPUztMbzswO0w7PGNvbXBhdD4gMTE0MDs7OztOO0hBTkdVTCBMRVRURVIgQkFOIENISSBFVU07Ozs7CiszMTgwO0hBTkdVTCBMRVRURVIgU1NBTkdJRVVORztMbzswO0w7PGNvbXBhdD4gMTE0Nzs7OztOO0hBTkdVTCBMRVRURVIgU1NBTkcgSUVVTkc7Ozs7CiszMTgxO0hBTkdVTCBMRVRURVIgWUVTSUVVTkc7TG87MDtMOzxjb21wYXQ+IDExNEM7Ozs7TjtIQU5HVUwgTEVUVEVSIE5HSUVVTkc7Ozs7CiszMTgyO0hBTkdVTCBMRVRURVIgWUVTSUVVTkctU0lPUztMbzswO0w7PGNvbXBhdD4gMTFGMTs7OztOO0hBTkdVTCBMRVRURVIgTkdJRVVORyBTSU9TOzs7OworMzE4MztIQU5HVUwgTEVUVEVSIFlFU0lFVU5HLVBBTlNJT1M7TG87MDtMOzxjb21wYXQ+IDExRjI7Ozs7TjtIQU5HVUwgTEVUVEVSIE5HSUVVTkcgQkFOIENISSBFVU07Ozs7CiszMTg0O0hBTkdVTCBMRVRURVIgS0FQWUVPVU5QSElFVVBIO0xvOzA7TDs8Y29tcGF0PiAxMTU3Ozs7O047SEFOR1VMIExFVFRFUiBQSUVVUCBTVU4gR1lFT05HIEVVTTs7OzsKKzMxODU7SEFOR1VMIExFVFRFUiBTU0FOR0hJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMTU4Ozs7O047SEFOR1VMIExFVFRFUiBTU0FORyBISUVVSDs7OzsKKzMxODY7SEFOR1VMIExFVFRFUiBZRU9SSU5ISUVVSDtMbzswO0w7PGNvbXBhdD4gMTE1OTs7OztOO0hBTkdVTCBMRVRURVIgWUVPTElOIEhJRVVIOzs7OworMzE4NztIQU5HVUwgTEVUVEVSIFlPLVlBO0xvOzA7TDs8Y29tcGF0PiAxMTg0Ozs7O047SEFOR1VMIExFVFRFUiBZT1lBOzs7OworMzE4ODtIQU5HVUwgTEVUVEVSIFlPLVlBRTtMbzswO0w7PGNvbXBhdD4gMTE4NTs7OztOO0hBTkdVTCBMRVRURVIgWU9ZQUU7Ozs7CiszMTg5O0hBTkdVTCBMRVRURVIgWU8tSTtMbzswO0w7PGNvbXBhdD4gMTE4ODs7OztOO0hBTkdVTCBMRVRURVIgWU9JOzs7OworMzE4QTtIQU5HVUwgTEVUVEVSIFlVLVlFTztMbzswO0w7PGNvbXBhdD4gMTE5MTs7OztOO0hBTkdVTCBMRVRURVIgWVVZRU87Ozs7CiszMThCO0hBTkdVTCBMRVRURVIgWVUtWUU7TG87MDtMOzxjb21wYXQ+IDExOTI7Ozs7TjtIQU5HVUwgTEVUVEVSIFlVWUU7Ozs7CiszMThDO0hBTkdVTCBMRVRURVIgWVUtSTtMbzswO0w7PGNvbXBhdD4gMTE5NDs7OztOO0hBTkdVTCBMRVRURVIgWVVJOzs7OworMzE4RDtIQU5HVUwgTEVUVEVSIEFSQUVBO0xvOzA7TDs8Y29tcGF0PiAxMTlFOzs7O047SEFOR1VMIExFVFRFUiBBTEFFIEE7Ozs7CiszMThFO0hBTkdVTCBMRVRURVIgQVJBRUFFO0xvOzA7TDs8Y29tcGF0PiAxMUExOzs7O047SEFOR1VMIExFVFRFUiBBTEFFIEFFOzs7OworMzE5MDtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIExJTktJTkcgTUFSSztTbzswO0w7Ozs7O047S0FOQlVOIFRBVEVURU47S2FuYnVuIFRhdGV0ZW47OzsKKzMxOTE7SURFT0dSQVBISUMgQU5OT1RBVElPTiBSRVZFUlNFIE1BUks7U287MDtMOzs7OztOO0tBRVJJVEVOIFJFO0thZXJpdGVuOzs7CiszMTkyO0lERU9HUkFQSElDIEFOTk9UQVRJT04gT05FIE1BUks7Tm87MDtMOzxzdXBlcj4gNEUwMDs7OztOO0tBRVJJVEVOIElUSTtLYWVyaXRlbjs7OworMzE5MztJREVPR1JBUEhJQyBBTk5PVEFUSU9OIFRXTyBNQVJLO05vOzA7TDs8c3VwZXI+IDRFOEM7Ozs7TjtLQUVSSVRFTiBOSTtLYWVyaXRlbjs7OworMzE5NDtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIFRIUkVFIE1BUks7Tm87MDtMOzxzdXBlcj4gNEUwOTs7OztOO0tBRVJJVEVOIFNBTjtLYWVyaXRlbjs7OworMzE5NTtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIEZPVVIgTUFSSztObzswO0w7PHN1cGVyPiA1NkRCOzs7O047S0FFUklURU4gU0k7S2Flcml0ZW47OzsKKzMxOTY7SURFT0dSQVBISUMgQU5OT1RBVElPTiBUT1AgTUFSSztTbzswO0w7PHN1cGVyPiA0RTBBOzs7O047S0FFUklURU4gWllPVTtLYWVyaXRlbjs7OworMzE5NztJREVPR1JBUEhJQyBBTk5PVEFUSU9OIE1JRERMRSBNQVJLO1NvOzA7TDs8c3VwZXI+IDRFMkQ7Ozs7TjtLQUVSSVRFTiBUWVVVO0thZXJpdGVuOzs7CiszMTk4O0lERU9HUkFQSElDIEFOTk9UQVRJT04gQk9UVE9NIE1BUks7U287MDtMOzxzdXBlcj4gNEUwQjs7OztOO0tBRVJJVEVOIEdFO0thZXJpdGVuOzs7CiszMTk5O0lERU9HUkFQSElDIEFOTk9UQVRJT04gRklSU1QgTUFSSztTbzswO0w7PHN1cGVyPiA3NTMyOzs7O047S0FFUklURU4gS09VO0thZXJpdGVuOzs7CiszMTlBO0lERU9HUkFQSElDIEFOTk9UQVRJT04gU0VDT05EIE1BUks7U287MDtMOzxzdXBlcj4gNEU1OTs7OztOO0tBRVJJVEVOIE9UVTtLYWVyaXRlbjs7OworMzE5QjtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIFRISVJEIE1BUks7U287MDtMOzxzdXBlcj4gNEUxOTs7OztOO0tBRVJJVEVOIEhFSTtLYWVyaXRlbjs7OworMzE5QztJREVPR1JBUEhJQyBBTk5PVEFUSU9OIEZPVVJUSCBNQVJLO1NvOzA7TDs8c3VwZXI+IDRFMDE7Ozs7TjtLQUVSSVRFTiBURUk7S2Flcml0ZW47OzsKKzMxOUQ7SURFT0dSQVBISUMgQU5OT1RBVElPTiBIRUFWRU4gTUFSSztTbzswO0w7PHN1cGVyPiA1OTI5Ozs7O047S0FFUklURU4gVEVOO0thZXJpdGVuOzs7CiszMTlFO0lERU9HUkFQSElDIEFOTk9UQVRJT04gRUFSVEggTUFSSztTbzswO0w7PHN1cGVyPiA1NzMwOzs7O047S0FFUklURU4gVEk7S2Flcml0ZW47OzsKKzMxOUY7SURFT0dSQVBISUMgQU5OT1RBVElPTiBNQU4gTUFSSztTbzswO0w7PHN1cGVyPiA0RUJBOzs7O047S0FFUklURU4gWklOO0thZXJpdGVuOzs7CiszMjAwO1BBUkVOVEhFU0laRUQgSEFOR1VMIEtJWUVPSztTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTAwIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBHSVlFT0c7Ozs7CiszMjAxO1BBUkVOVEhFU0laRUQgSEFOR1VMIE5JRVVOO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDIgMDAyOTs7OztOOzs7OzsKKzMyMDI7UEFSRU5USEVTSVpFRCBIQU5HVUwgVElLRVVUO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDMgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIERJR0VVRDs7OzsKKzMyMDM7UEFSRU5USEVTSVpFRCBIQU5HVUwgUklFVUw7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwNSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgTElFVUw7Ozs7CiszMjA0O1BBUkVOVEhFU0laRUQgSEFOR1VMIE1JRVVNO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDYgMDAyOTs7OztOOzs7OzsKKzMyMDU7UEFSRU5USEVTSVpFRCBIQU5HVUwgUElFVVA7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwNyAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgQklFVUI7Ozs7CiszMjA2O1BBUkVOVEhFU0laRUQgSEFOR1VMIFNJT1M7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwOSAwMDI5Ozs7O047Ozs7OworMzIwNztQQVJFTlRIRVNJWkVEIEhBTkdVTCBJRVVORztTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBCIDAwMjk7Ozs7Tjs7Ozs7CiszMjA4O1BBUkVOVEhFU0laRUQgSEFOR1VMIENJRVVDO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEMgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEpJRVVKOzs7OworMzIwOTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSElFVUNIO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEUgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIENJRVVDOzs7OworMzIwQTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBLSElFVUtIO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEYgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEtJWUVPSzs7OzsKKzMyMEI7UEFSRU5USEVTSVpFRCBIQU5HVUwgVEhJRVVUSDtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTEwIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBUSUVVVDs7OzsKKzMyMEM7UEFSRU5USEVTSVpFRCBIQU5HVUwgUEhJRVVQSDtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTExIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBQSUVVUDs7OzsKKzMyMEQ7UEFSRU5USEVTSVpFRCBIQU5HVUwgSElFVUg7U287MDtMOzxjb21wYXQ+IDAwMjggMTExMiAwMDI5Ozs7O047Ozs7OworMzIwRTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBLSVlFT0sgQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTAwIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEdBOzs7OworMzIwRjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBOSUVVTiBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDIgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgTkE7Ozs7CiszMjEwO1BBUkVOVEhFU0laRUQgSEFOR1VMIFRJS0VVVCBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDMgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgREE7Ozs7CiszMjExO1BBUkVOVEhFU0laRUQgSEFOR1VMIFJJRVVMIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwNSAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBMQTs7OzsKKzMyMTI7UEFSRU5USEVTSVpFRCBIQU5HVUwgTUlFVU0gQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTA2IDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIE1BOzs7OworMzIxMztQQVJFTlRIRVNJWkVEIEhBTkdVTCBQSUVVUCBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDcgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgQkE7Ozs7CiszMjE0O1BBUkVOVEhFU0laRUQgSEFOR1VMIFNJT1MgQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTA5IDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIFNBOzs7OworMzIxNTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBJRVVORyBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEIgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgQTs7OzsKKzMyMTY7UEFSRU5USEVTSVpFRCBIQU5HVUwgQ0lFVUMgQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBDIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEpBOzs7OworMzIxNztQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSElFVUNIIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwRSAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBDQTs7OzsKKzMyMTg7UEFSRU5USEVTSVpFRCBIQU5HVUwgS0hJRVVLSCBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEYgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgS0E7Ozs7CiszMjE5O1BBUkVOVEhFU0laRUQgSEFOR1VMIFRISUVVVEggQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTEwIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIFRBOzs7OworMzIxQTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBQSElFVVBIIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTExMSAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBQQTs7OzsKKzMyMUI7UEFSRU5USEVTSVpFRCBIQU5HVUwgSElFVUggQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTEyIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEhBOzs7OworMzIxQztQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSUVVQyBVO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEMgMTE2RSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgSlU7Ozs7CiszMjIwO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIE9ORTtObzswO0w7PGNvbXBhdD4gMDAyOCA0RTAwIDAwMjk7Ozs7Tjs7Ozs7CiszMjIxO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFRXTztObzswO0w7PGNvbXBhdD4gMDAyOCA0RThDIDAwMjk7Ozs7Tjs7Ozs7CiszMjIyO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFRIUkVFO05vOzA7TDs8Y29tcGF0PiAwMDI4IDRFMDkgMDAyOTs7OztOOzs7OzsKKzMyMjM7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggRk9VUjtObzswO0w7PGNvbXBhdD4gMDAyOCA1NkRCIDAwMjk7Ozs7Tjs7Ozs7CiszMjI0O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIEZJVkU7Tm87MDtMOzxjb21wYXQ+IDAwMjggNEU5NCAwMDI5Ozs7O047Ozs7OworMzIyNTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTSVg7Tm87MDtMOzxjb21wYXQ+IDAwMjggNTE2RCAwMDI5Ozs7O047Ozs7OworMzIyNjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTRVZFTjtObzswO0w7PGNvbXBhdD4gMDAyOCA0RTAzIDAwMjk7Ozs7Tjs7Ozs7CiszMjI3O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIEVJR0hUO05vOzA7TDs8Y29tcGF0PiAwMDI4IDUxNkIgMDAyOTs7OztOOzs7OzsKKzMyMjg7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggTklORTtObzswO0w7PGNvbXBhdD4gMDAyOCA0RTVEIDAwMjk7Ozs7Tjs7Ozs7CiszMjI5O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFRFTjtObzswO0w7PGNvbXBhdD4gMDAyOCA1MzQxIDAwMjk7Ozs7Tjs7Ozs7CiszMjJBO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIE1PT047U287MDtMOzxjb21wYXQ+IDAwMjggNjcwOCAwMDI5Ozs7O047Ozs7OworMzIyQjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBGSVJFO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDcwNkIgMDAyOTs7OztOOzs7OzsKKzMyMkM7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggV0FURVI7U287MDtMOzxjb21wYXQ+IDAwMjggNkMzNCAwMDI5Ozs7O047Ozs7OworMzIyRDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBXT09EO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDY3MjggMDAyOTs7OztOOzs7OzsKKzMyMkU7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggTUVUQUw7U287MDtMOzxjb21wYXQ+IDAwMjggOTFEMSAwMDI5Ozs7O047Ozs7OworMzIyRjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBFQVJUSDtTbzswO0w7PGNvbXBhdD4gMDAyOCA1NzFGIDAwMjk7Ozs7Tjs7Ozs7CiszMjMwO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNVTjtTbzswO0w7PGNvbXBhdD4gMDAyOCA2NUU1IDAwMjk7Ozs7Tjs7Ozs7CiszMjMxO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNUT0NLO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDY4MkEgMDAyOTs7OztOOzs7OzsKKzMyMzI7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggSEFWRTtTbzswO0w7PGNvbXBhdD4gMDAyOCA2NzA5IDAwMjk7Ozs7Tjs7Ozs7CiszMjMzO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNPQ0lFVFk7U287MDtMOzxjb21wYXQ+IDAwMjggNzkzRSAwMDI5Ozs7O047Ozs7OworMzIzNDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBOQU1FO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDU0MEQgMDAyOTs7OztOOzs7OzsKKzMyMzU7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggU1BFQ0lBTDtTbzswO0w7PGNvbXBhdD4gMDAyOCA3Mjc5IDAwMjk7Ozs7Tjs7Ozs7CiszMjM2O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIEZJTkFOQ0lBTDtTbzswO0w7PGNvbXBhdD4gMDAyOCA4Q0ExIDAwMjk7Ozs7Tjs7Ozs7CiszMjM3O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIENPTkdSQVRVTEFUSU9OO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDc5NUQgMDAyOTs7OztOOzs7OzsKKzMyMzg7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggTEFCT1I7U287MDtMOzxjb21wYXQ+IDAwMjggNTJCNCAwMDI5Ozs7O047Ozs7OworMzIzOTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBSRVBSRVNFTlQ7U287MDtMOzxjb21wYXQ+IDAwMjggNEVFMyAwMDI5Ozs7O047Ozs7OworMzIzQTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBDQUxMO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDU0N0MgMDAyOTs7OztOOzs7OzsKKzMyM0I7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggU1RVRFk7U287MDtMOzxjb21wYXQ+IDAwMjggNUI2NiAwMDI5Ozs7O047Ozs7OworMzIzQztQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTVVBFUlZJU0U7U287MDtMOzxjb21wYXQ+IDAwMjggNzZFMyAwMDI5Ozs7O047Ozs7OworMzIzRDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBFTlRFUlBSSVNFO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDRGMDEgMDAyOTs7OztOOzs7OzsKKzMyM0U7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggUkVTT1VSQ0U7U287MDtMOzxjb21wYXQ+IDAwMjggOENDNyAwMDI5Ozs7O047Ozs7OworMzIzRjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBBTExJQU5DRTtTbzswO0w7PGNvbXBhdD4gMDAyOCA1MzU0IDAwMjk7Ozs7Tjs7Ozs7CiszMjQwO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIEZFU1RJVkFMO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDc5NkQgMDAyOTs7OztOOzs7OzsKKzMyNDE7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggUkVTVDtTbzswO0w7PGNvbXBhdD4gMDAyOCA0RjExIDAwMjk7Ozs7Tjs7Ozs7CiszMjQyO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNFTEY7U287MDtMOzxjb21wYXQ+IDAwMjggODFFQSAwMDI5Ozs7O047Ozs7OworMzI0MztQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBSRUFDSDtTbzswO0w7PGNvbXBhdD4gMDAyOCA4MUYzIDAwMjk7Ozs7Tjs7Ozs7CiszMjYwO0NJUkNMRUQgSEFOR1VMIEtJWUVPSztTbzswO0w7PGNpcmNsZT4gMTEwMDs7OztOO0NJUkNMRUQgSEFOR1VMIEdJWUVPRzs7OzsKKzMyNjE7Q0lSQ0xFRCBIQU5HVUwgTklFVU47U287MDtMOzxjaXJjbGU+IDExMDI7Ozs7Tjs7Ozs7CiszMjYyO0NJUkNMRUQgSEFOR1VMIFRJS0VVVDtTbzswO0w7PGNpcmNsZT4gMTEwMzs7OztOO0NJUkNMRUQgSEFOR1VMIERJR0VVRDs7OzsKKzMyNjM7Q0lSQ0xFRCBIQU5HVUwgUklFVUw7U287MDtMOzxjaXJjbGU+IDExMDU7Ozs7TjtDSVJDTEVEIEhBTkdVTCBMSUVVTDs7OzsKKzMyNjQ7Q0lSQ0xFRCBIQU5HVUwgTUlFVU07U287MDtMOzxjaXJjbGU+IDExMDY7Ozs7Tjs7Ozs7CiszMjY1O0NJUkNMRUQgSEFOR1VMIFBJRVVQO1NvOzA7TDs8Y2lyY2xlPiAxMTA3Ozs7O047Q0lSQ0xFRCBIQU5HVUwgQklFVUI7Ozs7CiszMjY2O0NJUkNMRUQgSEFOR1VMIFNJT1M7U287MDtMOzxjaXJjbGU+IDExMDk7Ozs7Tjs7Ozs7CiszMjY3O0NJUkNMRUQgSEFOR1VMIElFVU5HO1NvOzA7TDs8Y2lyY2xlPiAxMTBCOzs7O047Ozs7OworMzI2ODtDSVJDTEVEIEhBTkdVTCBDSUVVQztTbzswO0w7PGNpcmNsZT4gMTEwQzs7OztOO0NJUkNMRUQgSEFOR1VMIEpJRVVKOzs7OworMzI2OTtDSVJDTEVEIEhBTkdVTCBDSElFVUNIO1NvOzA7TDs8Y2lyY2xlPiAxMTBFOzs7O047Q0lSQ0xFRCBIQU5HVUwgQ0lFVUM7Ozs7CiszMjZBO0NJUkNMRUQgSEFOR1VMIEtISUVVS0g7U287MDtMOzxjaXJjbGU+IDExMEY7Ozs7TjtDSVJDTEVEIEhBTkdVTCBLSVlFT0s7Ozs7CiszMjZCO0NJUkNMRUQgSEFOR1VMIFRISUVVVEg7U287MDtMOzxjaXJjbGU+IDExMTA7Ozs7TjtDSVJDTEVEIEhBTkdVTCBUSUVVVDs7OzsKKzMyNkM7Q0lSQ0xFRCBIQU5HVUwgUEhJRVVQSDtTbzswO0w7PGNpcmNsZT4gMTExMTs7OztOO0NJUkNMRUQgSEFOR1VMIFBJRVVQOzs7OworMzI2RDtDSVJDTEVEIEhBTkdVTCBISUVVSDtTbzswO0w7PGNpcmNsZT4gMTExMjs7OztOOzs7OzsKKzMyNkU7Q0lSQ0xFRCBIQU5HVUwgS0lZRU9LIEE7U287MDtMOzxjaXJjbGU+IDExMDAgMTE2MTs7OztOO0NJUkNMRUQgSEFOR1VMIEdBOzs7OworMzI2RjtDSVJDTEVEIEhBTkdVTCBOSUVVTiBBO1NvOzA7TDs8Y2lyY2xlPiAxMTAyIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBOQTs7OzsKKzMyNzA7Q0lSQ0xFRCBIQU5HVUwgVElLRVVUIEE7U287MDtMOzxjaXJjbGU+IDExMDMgMTE2MTs7OztOO0NJUkNMRUQgSEFOR1VMIERBOzs7OworMzI3MTtDSVJDTEVEIEhBTkdVTCBSSUVVTCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTA1IDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBMQTs7OzsKKzMyNzI7Q0lSQ0xFRCBIQU5HVUwgTUlFVU0gQTtTbzswO0w7PGNpcmNsZT4gMTEwNiAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgTUE7Ozs7CiszMjczO0NJUkNMRUQgSEFOR1VMIFBJRVVQIEE7U287MDtMOzxjaXJjbGU+IDExMDcgMTE2MTs7OztOO0NJUkNMRUQgSEFOR1VMIEJBOzs7OworMzI3NDtDSVJDTEVEIEhBTkdVTCBTSU9TIEE7U287MDtMOzxjaXJjbGU+IDExMDkgMTE2MTs7OztOO0NJUkNMRUQgSEFOR1VMIFNBOzs7OworMzI3NTtDSVJDTEVEIEhBTkdVTCBJRVVORyBBO1NvOzA7TDs8Y2lyY2xlPiAxMTBCIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBBOzs7OworMzI3NjtDSVJDTEVEIEhBTkdVTCBDSUVVQyBBO1NvOzA7TDs8Y2lyY2xlPiAxMTBDIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBKQTs7OzsKKzMyNzc7Q0lSQ0xFRCBIQU5HVUwgQ0hJRVVDSCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTBFIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBDQTs7OzsKKzMyNzg7Q0lSQ0xFRCBIQU5HVUwgS0hJRVVLSCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTBGIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBLQTs7OzsKKzMyNzk7Q0lSQ0xFRCBIQU5HVUwgVEhJRVVUSCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTEwIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBUQTs7OzsKKzMyN0E7Q0lSQ0xFRCBIQU5HVUwgUEhJRVVQSCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTExIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBQQTs7OzsKKzMyN0I7Q0lSQ0xFRCBIQU5HVUwgSElFVUggQTtTbzswO0w7PGNpcmNsZT4gMTExMiAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgSEE7Ozs7CiszMjdGO0tPUkVBTiBTVEFOREFSRCBTWU1CT0w7U287MDtMOzs7OztOOzs7OzsKKzMyODA7Q0lSQ0xFRCBJREVPR1JBUEggT05FO05vOzA7TDs8Y2lyY2xlPiA0RTAwOzs7MTtOOzs7OzsKKzMyODE7Q0lSQ0xFRCBJREVPR1JBUEggVFdPO05vOzA7TDs8Y2lyY2xlPiA0RThDOzs7MjtOOzs7OzsKKzMyODI7Q0lSQ0xFRCBJREVPR1JBUEggVEhSRUU7Tm87MDtMOzxjaXJjbGU+IDRFMDk7OzszO047Ozs7OworMzI4MztDSVJDTEVEIElERU9HUkFQSCBGT1VSO05vOzA7TDs8Y2lyY2xlPiA1NkRCOzs7NDtOOzs7OzsKKzMyODQ7Q0lSQ0xFRCBJREVPR1JBUEggRklWRTtObzswO0w7PGNpcmNsZT4gNEU5NDs7OzU7Tjs7Ozs7CiszMjg1O0NJUkNMRUQgSURFT0dSQVBIIFNJWDtObzswO0w7PGNpcmNsZT4gNTE2RDs7OzY7Tjs7Ozs7CiszMjg2O0NJUkNMRUQgSURFT0dSQVBIIFNFVkVOO05vOzA7TDs8Y2lyY2xlPiA0RTAzOzs7NztOOzs7OzsKKzMyODc7Q0lSQ0xFRCBJREVPR1JBUEggRUlHSFQ7Tm87MDtMOzxjaXJjbGU+IDUxNkI7Ozs4O047Ozs7OworMzI4ODtDSVJDTEVEIElERU9HUkFQSCBOSU5FO05vOzA7TDs8Y2lyY2xlPiA0RTVEOzs7OTtOOzs7OzsKKzMyODk7Q0lSQ0xFRCBJREVPR1JBUEggVEVOO05vOzA7TDs8Y2lyY2xlPiA1MzQxOzs7MTA7Tjs7Ozs7CiszMjhBO0NJUkNMRUQgSURFT0dSQVBIIE1PT047U287MDtMOzxjaXJjbGU+IDY3MDg7Ozs7Tjs7Ozs7CiszMjhCO0NJUkNMRUQgSURFT0dSQVBIIEZJUkU7U287MDtMOzxjaXJjbGU+IDcwNkI7Ozs7Tjs7Ozs7CiszMjhDO0NJUkNMRUQgSURFT0dSQVBIIFdBVEVSO1NvOzA7TDs8Y2lyY2xlPiA2QzM0Ozs7O047Ozs7OworMzI4RDtDSVJDTEVEIElERU9HUkFQSCBXT09EO1NvOzA7TDs8Y2lyY2xlPiA2NzI4Ozs7O047Ozs7OworMzI4RTtDSVJDTEVEIElERU9HUkFQSCBNRVRBTDtTbzswO0w7PGNpcmNsZT4gOTFEMTs7OztOOzs7OzsKKzMyOEY7Q0lSQ0xFRCBJREVPR1JBUEggRUFSVEg7U287MDtMOzxjaXJjbGU+IDU3MUY7Ozs7Tjs7Ozs7CiszMjkwO0NJUkNMRUQgSURFT0dSQVBIIFNVTjtTbzswO0w7PGNpcmNsZT4gNjVFNTs7OztOOzs7OzsKKzMyOTE7Q0lSQ0xFRCBJREVPR1JBUEggU1RPQ0s7U287MDtMOzxjaXJjbGU+IDY4MkE7Ozs7Tjs7Ozs7CiszMjkyO0NJUkNMRUQgSURFT0dSQVBIIEhBVkU7U287MDtMOzxjaXJjbGU+IDY3MDk7Ozs7Tjs7Ozs7CiszMjkzO0NJUkNMRUQgSURFT0dSQVBIIFNPQ0lFVFk7U287MDtMOzxjaXJjbGU+IDc5M0U7Ozs7Tjs7Ozs7CiszMjk0O0NJUkNMRUQgSURFT0dSQVBIIE5BTUU7U287MDtMOzxjaXJjbGU+IDU0MEQ7Ozs7Tjs7Ozs7CiszMjk1O0NJUkNMRUQgSURFT0dSQVBIIFNQRUNJQUw7U287MDtMOzxjaXJjbGU+IDcyNzk7Ozs7Tjs7Ozs7CiszMjk2O0NJUkNMRUQgSURFT0dSQVBIIEZJTkFOQ0lBTDtTbzswO0w7PGNpcmNsZT4gOENBMTs7OztOOzs7OzsKKzMyOTc7Q0lSQ0xFRCBJREVPR1JBUEggQ09OR1JBVFVMQVRJT047U287MDtMOzxjaXJjbGU+IDc5NUQ7Ozs7Tjs7Ozs7CiszMjk4O0NJUkNMRUQgSURFT0dSQVBIIExBQk9SO1NvOzA7TDs8Y2lyY2xlPiA1MkI0Ozs7O047Ozs7OworMzI5OTtDSVJDTEVEIElERU9HUkFQSCBTRUNSRVQ7U287MDtMOzxjaXJjbGU+IDc5RDg7Ozs7Tjs7Ozs7CiszMjlBO0NJUkNMRUQgSURFT0dSQVBIIE1BTEU7U287MDtMOzxjaXJjbGU+IDc1Mzc7Ozs7Tjs7Ozs7CiszMjlCO0NJUkNMRUQgSURFT0dSQVBIIEZFTUFMRTtTbzswO0w7PGNpcmNsZT4gNTk3Mzs7OztOOzs7OzsKKzMyOUM7Q0lSQ0xFRCBJREVPR1JBUEggU1VJVEFCTEU7U287MDtMOzxjaXJjbGU+IDkwNjk7Ozs7Tjs7Ozs7CiszMjlEO0NJUkNMRUQgSURFT0dSQVBIIEVYQ0VMTEVOVDtTbzswO0w7PGNpcmNsZT4gNTEyQTs7OztOOzs7OzsKKzMyOUU7Q0lSQ0xFRCBJREVPR1JBUEggUFJJTlQ7U287MDtMOzxjaXJjbGU+IDUzNzA7Ozs7Tjs7Ozs7CiszMjlGO0NJUkNMRUQgSURFT0dSQVBIIEFUVEVOVElPTjtTbzswO0w7PGNpcmNsZT4gNkNFODs7OztOOzs7OzsKKzMyQTA7Q0lSQ0xFRCBJREVPR1JBUEggSVRFTTtTbzswO0w7PGNpcmNsZT4gOTgwNTs7OztOOzs7OzsKKzMyQTE7Q0lSQ0xFRCBJREVPR1JBUEggUkVTVDtTbzswO0w7PGNpcmNsZT4gNEYxMTs7OztOOzs7OzsKKzMyQTI7Q0lSQ0xFRCBJREVPR1JBUEggQ09QWTtTbzswO0w7PGNpcmNsZT4gNTE5OTs7OztOOzs7OzsKKzMyQTM7Q0lSQ0xFRCBJREVPR1JBUEggQ09SUkVDVDtTbzswO0w7PGNpcmNsZT4gNkI2Mzs7OztOOzs7OzsKKzMyQTQ7Q0lSQ0xFRCBJREVPR1JBUEggSElHSDtTbzswO0w7PGNpcmNsZT4gNEUwQTs7OztOOzs7OzsKKzMyQTU7Q0lSQ0xFRCBJREVPR1JBUEggQ0VOVFJFO1NvOzA7TDs8Y2lyY2xlPiA0RTJEOzs7O047Q0lSQ0xFRCBJREVPR1JBUEggQ0VOVEVSOzs7OworMzJBNjtDSVJDTEVEIElERU9HUkFQSCBMT1c7U287MDtMOzxjaXJjbGU+IDRFMEI7Ozs7Tjs7Ozs7CiszMkE3O0NJUkNMRUQgSURFT0dSQVBIIExFRlQ7U287MDtMOzxjaXJjbGU+IDVERTY7Ozs7Tjs7Ozs7CiszMkE4O0NJUkNMRUQgSURFT0dSQVBIIFJJR0hUO1NvOzA7TDs8Y2lyY2xlPiA1M0YzOzs7O047Ozs7OworMzJBOTtDSVJDTEVEIElERU9HUkFQSCBNRURJQ0lORTtTbzswO0w7PGNpcmNsZT4gNTMzQjs7OztOOzs7OzsKKzMyQUE7Q0lSQ0xFRCBJREVPR1JBUEggUkVMSUdJT047U287MDtMOzxjaXJjbGU+IDVCOTc7Ozs7Tjs7Ozs7CiszMkFCO0NJUkNMRUQgSURFT0dSQVBIIFNUVURZO1NvOzA7TDs8Y2lyY2xlPiA1QjY2Ozs7O047Ozs7OworMzJBQztDSVJDTEVEIElERU9HUkFQSCBTVVBFUlZJU0U7U287MDtMOzxjaXJjbGU+IDc2RTM7Ozs7Tjs7Ozs7CiszMkFEO0NJUkNMRUQgSURFT0dSQVBIIEVOVEVSUFJJU0U7U287MDtMOzxjaXJjbGU+IDRGMDE7Ozs7Tjs7Ozs7CiszMkFFO0NJUkNMRUQgSURFT0dSQVBIIFJFU09VUkNFO1NvOzA7TDs8Y2lyY2xlPiA4Q0M3Ozs7O047Ozs7OworMzJBRjtDSVJDTEVEIElERU9HUkFQSCBBTExJQU5DRTtTbzswO0w7PGNpcmNsZT4gNTM1NDs7OztOOzs7OzsKKzMyQjA7Q0lSQ0xFRCBJREVPR1JBUEggTklHSFQ7U287MDtMOzxjaXJjbGU+IDU5MUM7Ozs7Tjs7Ozs7CiszMkMwO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEpBTlVBUlk7U287MDtMOzxjb21wYXQ+IDAwMzEgNjcwODs7OztOOzs7OzsKKzMyQzE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgRkVCUlVBUlk7U287MDtMOzxjb21wYXQ+IDAwMzIgNjcwODs7OztOOzs7OzsKKzMyQzI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgTUFSQ0g7U287MDtMOzxjb21wYXQ+IDAwMzMgNjcwODs7OztOOzs7OzsKKzMyQzM7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgQVBSSUw7U287MDtMOzxjb21wYXQ+IDAwMzQgNjcwODs7OztOOzs7OzsKKzMyQzQ7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgTUFZO1NvOzA7TDs8Y29tcGF0PiAwMDM1IDY3MDg7Ozs7Tjs7Ozs7CiszMkM1O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEpVTkU7U287MDtMOzxjb21wYXQ+IDAwMzYgNjcwODs7OztOOzs7OzsKKzMyQzY7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSlVMWTtTbzswO0w7PGNvbXBhdD4gMDAzNyA2NzA4Ozs7O047Ozs7OworMzJDNztJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBBVUdVU1Q7U287MDtMOzxjb21wYXQ+IDAwMzggNjcwODs7OztOOzs7OzsKKzMyQzg7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgU0VQVEVNQkVSO1NvOzA7TDs8Y29tcGF0PiAwMDM5IDY3MDg7Ozs7Tjs7Ozs7CiszMkM5O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIE9DVE9CRVI7U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMCA2NzA4Ozs7O047Ozs7OworMzJDQTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBOT1ZFTUJFUjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMxIDY3MDg7Ozs7Tjs7Ozs7CiszMkNCO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERFQ0VNQkVSO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzIgNjcwODs7OztOOzs7OzsKKzMyRDA7Q0lSQ0xFRCBLQVRBS0FOQSBBO1NvOzA7TDs8Y2lyY2xlPiAzMEEyOzs7O047Ozs7OworMzJEMTtDSVJDTEVEIEtBVEFLQU5BIEk7U287MDtMOzxjaXJjbGU+IDMwQTQ7Ozs7Tjs7Ozs7CiszMkQyO0NJUkNMRUQgS0FUQUtBTkEgVTtTbzswO0w7PGNpcmNsZT4gMzBBNjs7OztOOzs7OzsKKzMyRDM7Q0lSQ0xFRCBLQVRBS0FOQSBFO1NvOzA7TDs8Y2lyY2xlPiAzMEE4Ozs7O047Ozs7OworMzJENDtDSVJDTEVEIEtBVEFLQU5BIE87U287MDtMOzxjaXJjbGU+IDMwQUE7Ozs7Tjs7Ozs7CiszMkQ1O0NJUkNMRUQgS0FUQUtBTkEgS0E7U287MDtMOzxjaXJjbGU+IDMwQUI7Ozs7Tjs7Ozs7CiszMkQ2O0NJUkNMRUQgS0FUQUtBTkEgS0k7U287MDtMOzxjaXJjbGU+IDMwQUQ7Ozs7Tjs7Ozs7CiszMkQ3O0NJUkNMRUQgS0FUQUtBTkEgS1U7U287MDtMOzxjaXJjbGU+IDMwQUY7Ozs7Tjs7Ozs7CiszMkQ4O0NJUkNMRUQgS0FUQUtBTkEgS0U7U287MDtMOzxjaXJjbGU+IDMwQjE7Ozs7Tjs7Ozs7CiszMkQ5O0NJUkNMRUQgS0FUQUtBTkEgS087U287MDtMOzxjaXJjbGU+IDMwQjM7Ozs7Tjs7Ozs7CiszMkRBO0NJUkNMRUQgS0FUQUtBTkEgU0E7U287MDtMOzxjaXJjbGU+IDMwQjU7Ozs7Tjs7Ozs7CiszMkRCO0NJUkNMRUQgS0FUQUtBTkEgU0k7U287MDtMOzxjaXJjbGU+IDMwQjc7Ozs7Tjs7Ozs7CiszMkRDO0NJUkNMRUQgS0FUQUtBTkEgU1U7U287MDtMOzxjaXJjbGU+IDMwQjk7Ozs7Tjs7Ozs7CiszMkREO0NJUkNMRUQgS0FUQUtBTkEgU0U7U287MDtMOzxjaXJjbGU+IDMwQkI7Ozs7Tjs7Ozs7CiszMkRFO0NJUkNMRUQgS0FUQUtBTkEgU087U287MDtMOzxjaXJjbGU+IDMwQkQ7Ozs7Tjs7Ozs7CiszMkRGO0NJUkNMRUQgS0FUQUtBTkEgVEE7U287MDtMOzxjaXJjbGU+IDMwQkY7Ozs7Tjs7Ozs7CiszMkUwO0NJUkNMRUQgS0FUQUtBTkEgVEk7U287MDtMOzxjaXJjbGU+IDMwQzE7Ozs7Tjs7Ozs7CiszMkUxO0NJUkNMRUQgS0FUQUtBTkEgVFU7U287MDtMOzxjaXJjbGU+IDMwQzQ7Ozs7Tjs7Ozs7CiszMkUyO0NJUkNMRUQgS0FUQUtBTkEgVEU7U287MDtMOzxjaXJjbGU+IDMwQzY7Ozs7Tjs7Ozs7CiszMkUzO0NJUkNMRUQgS0FUQUtBTkEgVE87U287MDtMOzxjaXJjbGU+IDMwQzg7Ozs7Tjs7Ozs7CiszMkU0O0NJUkNMRUQgS0FUQUtBTkEgTkE7U287MDtMOzxjaXJjbGU+IDMwQ0E7Ozs7Tjs7Ozs7CiszMkU1O0NJUkNMRUQgS0FUQUtBTkEgTkk7U287MDtMOzxjaXJjbGU+IDMwQ0I7Ozs7Tjs7Ozs7CiszMkU2O0NJUkNMRUQgS0FUQUtBTkEgTlU7U287MDtMOzxjaXJjbGU+IDMwQ0M7Ozs7Tjs7Ozs7CiszMkU3O0NJUkNMRUQgS0FUQUtBTkEgTkU7U287MDtMOzxjaXJjbGU+IDMwQ0Q7Ozs7Tjs7Ozs7CiszMkU4O0NJUkNMRUQgS0FUQUtBTkEgTk87U287MDtMOzxjaXJjbGU+IDMwQ0U7Ozs7Tjs7Ozs7CiszMkU5O0NJUkNMRUQgS0FUQUtBTkEgSEE7U287MDtMOzxjaXJjbGU+IDMwQ0Y7Ozs7Tjs7Ozs7CiszMkVBO0NJUkNMRUQgS0FUQUtBTkEgSEk7U287MDtMOzxjaXJjbGU+IDMwRDI7Ozs7Tjs7Ozs7CiszMkVCO0NJUkNMRUQgS0FUQUtBTkEgSFU7U287MDtMOzxjaXJjbGU+IDMwRDU7Ozs7Tjs7Ozs7CiszMkVDO0NJUkNMRUQgS0FUQUtBTkEgSEU7U287MDtMOzxjaXJjbGU+IDMwRDg7Ozs7Tjs7Ozs7CiszMkVEO0NJUkNMRUQgS0FUQUtBTkEgSE87U287MDtMOzxjaXJjbGU+IDMwREI7Ozs7Tjs7Ozs7CiszMkVFO0NJUkNMRUQgS0FUQUtBTkEgTUE7U287MDtMOzxjaXJjbGU+IDMwREU7Ozs7Tjs7Ozs7CiszMkVGO0NJUkNMRUQgS0FUQUtBTkEgTUk7U287MDtMOzxjaXJjbGU+IDMwREY7Ozs7Tjs7Ozs7CiszMkYwO0NJUkNMRUQgS0FUQUtBTkEgTVU7U287MDtMOzxjaXJjbGU+IDMwRTA7Ozs7Tjs7Ozs7CiszMkYxO0NJUkNMRUQgS0FUQUtBTkEgTUU7U287MDtMOzxjaXJjbGU+IDMwRTE7Ozs7Tjs7Ozs7CiszMkYyO0NJUkNMRUQgS0FUQUtBTkEgTU87U287MDtMOzxjaXJjbGU+IDMwRTI7Ozs7Tjs7Ozs7CiszMkYzO0NJUkNMRUQgS0FUQUtBTkEgWUE7U287MDtMOzxjaXJjbGU+IDMwRTQ7Ozs7Tjs7Ozs7CiszMkY0O0NJUkNMRUQgS0FUQUtBTkEgWVU7U287MDtMOzxjaXJjbGU+IDMwRTY7Ozs7Tjs7Ozs7CiszMkY1O0NJUkNMRUQgS0FUQUtBTkEgWU87U287MDtMOzxjaXJjbGU+IDMwRTg7Ozs7Tjs7Ozs7CiszMkY2O0NJUkNMRUQgS0FUQUtBTkEgUkE7U287MDtMOzxjaXJjbGU+IDMwRTk7Ozs7Tjs7Ozs7CiszMkY3O0NJUkNMRUQgS0FUQUtBTkEgUkk7U287MDtMOzxjaXJjbGU+IDMwRUE7Ozs7Tjs7Ozs7CiszMkY4O0NJUkNMRUQgS0FUQUtBTkEgUlU7U287MDtMOzxjaXJjbGU+IDMwRUI7Ozs7Tjs7Ozs7CiszMkY5O0NJUkNMRUQgS0FUQUtBTkEgUkU7U287MDtMOzxjaXJjbGU+IDMwRUM7Ozs7Tjs7Ozs7CiszMkZBO0NJUkNMRUQgS0FUQUtBTkEgUk87U287MDtMOzxjaXJjbGU+IDMwRUQ7Ozs7Tjs7Ozs7CiszMkZCO0NJUkNMRUQgS0FUQUtBTkEgV0E7U287MDtMOzxjaXJjbGU+IDMwRUY7Ozs7Tjs7Ozs7CiszMkZDO0NJUkNMRUQgS0FUQUtBTkEgV0k7U287MDtMOzxjaXJjbGU+IDMwRjA7Ozs7Tjs7Ozs7CiszMkZEO0NJUkNMRUQgS0FUQUtBTkEgV0U7U287MDtMOzxjaXJjbGU+IDMwRjE7Ozs7Tjs7Ozs7CiszMkZFO0NJUkNMRUQgS0FUQUtBTkEgV087U287MDtMOzxjaXJjbGU+IDMwRjI7Ozs7Tjs7Ozs7CiszMzAwO1NRVUFSRSBBUEFBVE87U287MDtMOzxzcXVhcmU+IDMwQTIgMzBEMSAzMEZDIDMwQzg7Ozs7TjtTUVVBUkVEIEFQQUFUTzs7OzsKKzMzMDE7U1FVQVJFIEFSVUhVQTtTbzswO0w7PHNxdWFyZT4gMzBBMiAzMEVCIDMwRDUgMzBBMTs7OztOO1NRVUFSRUQgQVJVSFVBOzs7OworMzMwMjtTUVVBUkUgQU5QRUE7U287MDtMOzxzcXVhcmU+IDMwQTIgMzBGMyAzMERBIDMwQTI7Ozs7TjtTUVVBUkVEIEFOUEVBOzs7OworMzMwMztTUVVBUkUgQUFSVTtTbzswO0w7PHNxdWFyZT4gMzBBMiAzMEZDIDMwRUI7Ozs7TjtTUVVBUkVEIEFBUlU7Ozs7CiszMzA0O1NRVUFSRSBJTklOR1U7U287MDtMOzxzcXVhcmU+IDMwQTQgMzBDQiAzMEYzIDMwQjA7Ozs7TjtTUVVBUkVEIElOSU5HVTs7OzsKKzMzMDU7U1FVQVJFIElOVEk7U287MDtMOzxzcXVhcmU+IDMwQTQgMzBGMyAzMEMxOzs7O047U1FVQVJFRCBJTlRJOzs7OworMzMwNjtTUVVBUkUgVU9OO1NvOzA7TDs8c3F1YXJlPiAzMEE2IDMwQTkgMzBGMzs7OztOO1NRVUFSRUQgVU9OOzs7OworMzMwNztTUVVBUkUgRVNVS1VVRE87U287MDtMOzxzcXVhcmU+IDMwQTggMzBCOSAzMEFGIDMwRkMgMzBDOTs7OztOO1NRVUFSRUQgRVNVS1VVRE87Ozs7CiszMzA4O1NRVUFSRSBFRUtBQTtTbzswO0w7PHNxdWFyZT4gMzBBOCAzMEZDIDMwQUIgMzBGQzs7OztOO1NRVUFSRUQgRUVLQUE7Ozs7CiszMzA5O1NRVUFSRSBPTlNVO1NvOzA7TDs8c3F1YXJlPiAzMEFBIDMwRjMgMzBCOTs7OztOO1NRVUFSRUQgT05TVTs7OzsKKzMzMEE7U1FVQVJFIE9PTVU7U287MDtMOzxzcXVhcmU+IDMwQUEgMzBGQyAzMEUwOzs7O047U1FVQVJFRCBPT01VOzs7OworMzMwQjtTUVVBUkUgS0FJUkk7U287MDtMOzxzcXVhcmU+IDMwQUIgMzBBNCAzMEVBOzs7O047U1FVQVJFRCBLQUlSSTs7OzsKKzMzMEM7U1FVQVJFIEtBUkFUVE87U287MDtMOzxzcXVhcmU+IDMwQUIgMzBFOSAzMEMzIDMwQzg7Ozs7TjtTUVVBUkVEIEtBUkFUVE87Ozs7CiszMzBEO1NRVUFSRSBLQVJPUklJO1NvOzA7TDs8c3F1YXJlPiAzMEFCIDMwRUQgMzBFQSAzMEZDOzs7O047U1FVQVJFRCBLQVJPUklJOzs7OworMzMwRTtTUVVBUkUgR0FST047U287MDtMOzxzcXVhcmU+IDMwQUMgMzBFRCAzMEYzOzs7O047U1FVQVJFRCBHQVJPTjs7OzsKKzMzMEY7U1FVQVJFIEdBTk1BO1NvOzA7TDs8c3F1YXJlPiAzMEFDIDMwRjMgMzBERTs7OztOO1NRVUFSRUQgR0FOTUE7Ozs7CiszMzEwO1NRVUFSRSBHSUdBO1NvOzA7TDs8c3F1YXJlPiAzMEFFIDMwQUM7Ozs7TjtTUVVBUkVEIEdJR0E7Ozs7CiszMzExO1NRVUFSRSBHSU5JSTtTbzswO0w7PHNxdWFyZT4gMzBBRSAzMENCIDMwRkM7Ozs7TjtTUVVBUkVEIEdJTklJOzs7OworMzMxMjtTUVVBUkUgS1lVUklJO1NvOzA7TDs8c3F1YXJlPiAzMEFEIDMwRTUgMzBFQSAzMEZDOzs7O047U1FVQVJFRCBLWVVSSUk7Ozs7CiszMzEzO1NRVUFSRSBHSVJVREFBO1NvOzA7TDs8c3F1YXJlPiAzMEFFIDMwRUIgMzBDMCAzMEZDOzs7O047U1FVQVJFRCBHSVJVREFBOzs7OworMzMxNDtTUVVBUkUgS0lSTztTbzswO0w7PHNxdWFyZT4gMzBBRCAzMEVEOzs7O047U1FVQVJFRCBLSVJPOzs7OworMzMxNTtTUVVBUkUgS0lST0dVUkFNVTtTbzswO0w7PHNxdWFyZT4gMzBBRCAzMEVEIDMwQjAgMzBFOSAzMEUwOzs7O047U1FVQVJFRCBLSVJPR1VSQU1VOzs7OworMzMxNjtTUVVBUkUgS0lST01FRVRPUlU7U287MDtMOzxzcXVhcmU+IDMwQUQgMzBFRCAzMEUxIDMwRkMgMzBDOCAzMEVCOzs7O047U1FVQVJFRCBLSVJPTUVFVE9SVTs7OzsKKzMzMTc7U1FVQVJFIEtJUk9XQVRUTztTbzswO0w7PHNxdWFyZT4gMzBBRCAzMEVEIDMwRUYgMzBDMyAzMEM4Ozs7O047U1FVQVJFRCBLSVJPV0FUVE87Ozs7CiszMzE4O1NRVUFSRSBHVVJBTVU7U287MDtMOzxzcXVhcmU+IDMwQjAgMzBFOSAzMEUwOzs7O047U1FVQVJFRCBHVVJBTVU7Ozs7CiszMzE5O1NRVUFSRSBHVVJBTVVUT047U287MDtMOzxzcXVhcmU+IDMwQjAgMzBFOSAzMEUwIDMwQzggMzBGMzs7OztOO1NRVUFSRUQgR1VSQU1VVE9OOzs7OworMzMxQTtTUVVBUkUgS1VSVVpFSVJPO1NvOzA7TDs8c3F1YXJlPiAzMEFGIDMwRUIgMzBCQyAzMEE0IDMwRUQ7Ozs7TjtTUVVBUkVEIEtVUlVaRUlSTzs7OzsKKzMzMUI7U1FVQVJFIEtVUk9PTkU7U287MDtMOzxzcXVhcmU+IDMwQUYgMzBFRCAzMEZDIDMwQ0Q7Ozs7TjtTUVVBUkVEIEtVUk9PTkU7Ozs7CiszMzFDO1NRVUFSRSBLRUVTVTtTbzswO0w7PHNxdWFyZT4gMzBCMSAzMEZDIDMwQjk7Ozs7TjtTUVVBUkVEIEtFRVNVOzs7OworMzMxRDtTUVVBUkUgS09SVU5BO1NvOzA7TDs8c3F1YXJlPiAzMEIzIDMwRUIgMzBDQTs7OztOO1NRVUFSRUQgS09SVU5BOzs7OworMzMxRTtTUVVBUkUgS09PUE87U287MDtMOzxzcXVhcmU+IDMwQjMgMzBGQyAzMEREOzs7O047U1FVQVJFRCBLT09QTzs7OzsKKzMzMUY7U1FVQVJFIFNBSUtVUlU7U287MDtMOzxzcXVhcmU+IDMwQjUgMzBBNCAzMEFGIDMwRUI7Ozs7TjtTUVVBUkVEIFNBSUtVUlU7Ozs7CiszMzIwO1NRVUFSRSBTQU5USUlNVTtTbzswO0w7PHNxdWFyZT4gMzBCNSAzMEYzIDMwQzEgMzBGQyAzMEUwOzs7O047U1FVQVJFRCBTQU5USUlNVTs7OzsKKzMzMjE7U1FVQVJFIFNJUklOR1U7U287MDtMOzxzcXVhcmU+IDMwQjcgMzBFQSAzMEYzIDMwQjA7Ozs7TjtTUVVBUkVEIFNJUklOR1U7Ozs7CiszMzIyO1NRVUFSRSBTRU5USTtTbzswO0w7PHNxdWFyZT4gMzBCQiAzMEYzIDMwQzE7Ozs7TjtTUVVBUkVEIFNFTlRJOzs7OworMzMyMztTUVVBUkUgU0VOVE87U287MDtMOzxzcXVhcmU+IDMwQkIgMzBGMyAzMEM4Ozs7O047U1FVQVJFRCBTRU5UTzs7OzsKKzMzMjQ7U1FVQVJFIERBQVNVO1NvOzA7TDs8c3F1YXJlPiAzMEMwIDMwRkMgMzBCOTs7OztOO1NRVUFSRUQgREFBU1U7Ozs7CiszMzI1O1NRVUFSRSBERVNJO1NvOzA7TDs8c3F1YXJlPiAzMEM3IDMwQjc7Ozs7TjtTUVVBUkVEIERFU0k7Ozs7CiszMzI2O1NRVUFSRSBET1JVO1NvOzA7TDs8c3F1YXJlPiAzMEM5IDMwRUI7Ozs7TjtTUVVBUkVEIERPUlU7Ozs7CiszMzI3O1NRVUFSRSBUT047U287MDtMOzxzcXVhcmU+IDMwQzggMzBGMzs7OztOO1NRVUFSRUQgVE9OOzs7OworMzMyODtTUVVBUkUgTkFOTztTbzswO0w7PHNxdWFyZT4gMzBDQSAzMENFOzs7O047U1FVQVJFRCBOQU5POzs7OworMzMyOTtTUVVBUkUgTk9UVE87U287MDtMOzxzcXVhcmU+IDMwQ0UgMzBDMyAzMEM4Ozs7O047U1FVQVJFRCBOT1RUTzs7OzsKKzMzMkE7U1FVQVJFIEhBSVRVO1NvOzA7TDs8c3F1YXJlPiAzMENGIDMwQTQgMzBDNDs7OztOO1NRVUFSRUQgSEFJVFU7Ozs7CiszMzJCO1NRVUFSRSBQQUFTRU5UTztTbzswO0w7PHNxdWFyZT4gMzBEMSAzMEZDIDMwQkIgMzBGMyAzMEM4Ozs7O047U1FVQVJFRCBQQUFTRU5UTzs7OzsKKzMzMkM7U1FVQVJFIFBBQVRVO1NvOzA7TDs8c3F1YXJlPiAzMEQxIDMwRkMgMzBDNDs7OztOO1NRVUFSRUQgUEFBVFU7Ozs7CiszMzJEO1NRVUFSRSBCQUFSRVJVO1NvOzA7TDs8c3F1YXJlPiAzMEQwIDMwRkMgMzBFQyAzMEVCOzs7O047U1FVQVJFRCBCQUFSRVJVOzs7OworMzMyRTtTUVVBUkUgUElBU1VUT1JVO1NvOzA7TDs8c3F1YXJlPiAzMEQ0IDMwQTIgMzBCOSAzMEM4IDMwRUI7Ozs7TjtTUVVBUkVEIFBJQVNVVE9SVTs7OzsKKzMzMkY7U1FVQVJFIFBJS1VSVTtTbzswO0w7PHNxdWFyZT4gMzBENCAzMEFGIDMwRUI7Ozs7TjtTUVVBUkVEIFBJS1VSVTs7OzsKKzMzMzA7U1FVQVJFIFBJS087U287MDtMOzxzcXVhcmU+IDMwRDQgMzBCMzs7OztOO1NRVUFSRUQgUElLTzs7OzsKKzMzMzE7U1FVQVJFIEJJUlU7U287MDtMOzxzcXVhcmU+IDMwRDMgMzBFQjs7OztOO1NRVUFSRUQgQklSVTs7OzsKKzMzMzI7U1FVQVJFIEhVQVJBRERPO1NvOzA7TDs8c3F1YXJlPiAzMEQ1IDMwQTEgMzBFOSAzMEMzIDMwQzk7Ozs7TjtTUVVBUkVEIEhVQVJBRERPOzs7OworMzMzMztTUVVBUkUgSFVJSVRPO1NvOzA7TDs8c3F1YXJlPiAzMEQ1IDMwQTMgMzBGQyAzMEM4Ozs7O047U1FVQVJFRCBIVUlJVE87Ozs7CiszMzM0O1NRVUFSRSBCVVNTWUVSVTtTbzswO0w7PHNxdWFyZT4gMzBENiAzMEMzIDMwQjcgMzBBNyAzMEVCOzs7O047U1FVQVJFRCBCVVNTWUVSVTs7OzsKKzMzMzU7U1FVQVJFIEhVUkFOO1NvOzA7TDs8c3F1YXJlPiAzMEQ1IDMwRTkgMzBGMzs7OztOO1NRVUFSRUQgSFVSQU47Ozs7CiszMzM2O1NRVUFSRSBIRUtVVEFBUlU7U287MDtMOzxzcXVhcmU+IDMwRDggMzBBRiAzMEJGIDMwRkMgMzBFQjs7OztOO1NRVUFSRUQgSEVLVVRBQVJVOzs7OworMzMzNztTUVVBUkUgUEVTTztTbzswO0w7PHNxdWFyZT4gMzBEQSAzMEJEOzs7O047U1FVQVJFRCBQRVNPOzs7OworMzMzODtTUVVBUkUgUEVOSUhJO1NvOzA7TDs8c3F1YXJlPiAzMERBIDMwQ0IgMzBEMjs7OztOO1NRVUFSRUQgUEVOSUhJOzs7OworMzMzOTtTUVVBUkUgSEVSVVRVO1NvOzA7TDs8c3F1YXJlPiAzMEQ4IDMwRUIgMzBDNDs7OztOO1NRVUFSRUQgSEVSVVRVOzs7OworMzMzQTtTUVVBUkUgUEVOU1U7U287MDtMOzxzcXVhcmU+IDMwREEgMzBGMyAzMEI5Ozs7O047U1FVQVJFRCBQRU5TVTs7OzsKKzMzM0I7U1FVQVJFIFBFRVpJO1NvOzA7TDs8c3F1YXJlPiAzMERBIDMwRkMgMzBCODs7OztOO1NRVUFSRUQgUEVFWkk7Ozs7CiszMzNDO1NRVUFSRSBCRUVUQTtTbzswO0w7PHNxdWFyZT4gMzBEOSAzMEZDIDMwQkY7Ozs7TjtTUVVBUkVEIEJFRVRBOzs7OworMzMzRDtTUVVBUkUgUE9JTlRPO1NvOzA7TDs8c3F1YXJlPiAzMEREIDMwQTQgMzBGMyAzMEM4Ozs7O047U1FVQVJFRCBQT0lOVE87Ozs7CiszMzNFO1NRVUFSRSBCT1JVVE87U287MDtMOzxzcXVhcmU+IDMwREMgMzBFQiAzMEM4Ozs7O047U1FVQVJFRCBCT1JVVE87Ozs7CiszMzNGO1NRVUFSRSBIT047U287MDtMOzxzcXVhcmU+IDMwREIgMzBGMzs7OztOO1NRVUFSRUQgSE9OOzs7OworMzM0MDtTUVVBUkUgUE9ORE87U287MDtMOzxzcXVhcmU+IDMwREQgMzBGMyAzMEM5Ozs7O047U1FVQVJFRCBQT05ETzs7OzsKKzMzNDE7U1FVQVJFIEhPT1JVO1NvOzA7TDs8c3F1YXJlPiAzMERCIDMwRkMgMzBFQjs7OztOO1NRVUFSRUQgSE9PUlU7Ozs7CiszMzQyO1NRVUFSRSBIT09OO1NvOzA7TDs8c3F1YXJlPiAzMERCIDMwRkMgMzBGMzs7OztOO1NRVUFSRUQgSE9PTjs7OzsKKzMzNDM7U1FVQVJFIE1BSUtVUk87U287MDtMOzxzcXVhcmU+IDMwREUgMzBBNCAzMEFGIDMwRUQ7Ozs7TjtTUVVBUkVEIE1BSUtVUk87Ozs7CiszMzQ0O1NRVUFSRSBNQUlSVTtTbzswO0w7PHNxdWFyZT4gMzBERSAzMEE0IDMwRUI7Ozs7TjtTUVVBUkVEIE1BSVJVOzs7OworMzM0NTtTUVVBUkUgTUFISEE7U287MDtMOzxzcXVhcmU+IDMwREUgMzBDMyAzMENGOzs7O047U1FVQVJFRCBNQUhIQTs7OzsKKzMzNDY7U1FVQVJFIE1BUlVLVTtTbzswO0w7PHNxdWFyZT4gMzBERSAzMEVCIDMwQUY7Ozs7TjtTUVVBUkVEIE1BUlVLVTs7OzsKKzMzNDc7U1FVQVJFIE1BTlNZT047U287MDtMOzxzcXVhcmU+IDMwREUgMzBGMyAzMEI3IDMwRTcgMzBGMzs7OztOO1NRVUFSRUQgTUFOU1lPTjs7OzsKKzMzNDg7U1FVQVJFIE1JS1VST047U287MDtMOzxzcXVhcmU+IDMwREYgMzBBRiAzMEVEIDMwRjM7Ozs7TjtTUVVBUkVEIE1JS1VST047Ozs7CiszMzQ5O1NRVUFSRSBNSVJJO1NvOzA7TDs8c3F1YXJlPiAzMERGIDMwRUE7Ozs7TjtTUVVBUkVEIE1JUkk7Ozs7CiszMzRBO1NRVUFSRSBNSVJJQkFBUlU7U287MDtMOzxzcXVhcmU+IDMwREYgMzBFQSAzMEQwIDMwRkMgMzBFQjs7OztOO1NRVUFSRUQgTUlSSUJBQVJVOzs7OworMzM0QjtTUVVBUkUgTUVHQTtTbzswO0w7PHNxdWFyZT4gMzBFMSAzMEFDOzs7O047U1FVQVJFRCBNRUdBOzs7OworMzM0QztTUVVBUkUgTUVHQVRPTjtTbzswO0w7PHNxdWFyZT4gMzBFMSAzMEFDIDMwQzggMzBGMzs7OztOO1NRVUFSRUQgTUVHQVRPTjs7OzsKKzMzNEQ7U1FVQVJFIE1FRVRPUlU7U287MDtMOzxzcXVhcmU+IDMwRTEgMzBGQyAzMEM4IDMwRUI7Ozs7TjtTUVVBUkVEIE1FRVRPUlU7Ozs7CiszMzRFO1NRVUFSRSBZQUFETztTbzswO0w7PHNxdWFyZT4gMzBFNCAzMEZDIDMwQzk7Ozs7TjtTUVVBUkVEIFlBQURPOzs7OworMzM0RjtTUVVBUkUgWUFBUlU7U287MDtMOzxzcXVhcmU+IDMwRTQgMzBGQyAzMEVCOzs7O047U1FVQVJFRCBZQUFSVTs7OzsKKzMzNTA7U1FVQVJFIFlVQU47U287MDtMOzxzcXVhcmU+IDMwRTYgMzBBMiAzMEYzOzs7O047U1FVQVJFRCBZVUFOOzs7OworMzM1MTtTUVVBUkUgUklUVE9SVTtTbzswO0w7PHNxdWFyZT4gMzBFQSAzMEMzIDMwQzggMzBFQjs7OztOO1NRVUFSRUQgUklUVE9SVTs7OzsKKzMzNTI7U1FVQVJFIFJJUkE7U287MDtMOzxzcXVhcmU+IDMwRUEgMzBFOTs7OztOO1NRVUFSRUQgUklSQTs7OzsKKzMzNTM7U1FVQVJFIFJVUElJO1NvOzA7TDs8c3F1YXJlPiAzMEVCIDMwRDQgMzBGQzs7OztOO1NRVUFSRUQgUlVQSUk7Ozs7CiszMzU0O1NRVUFSRSBSVVVCVVJVO1NvOzA7TDs8c3F1YXJlPiAzMEVCIDMwRkMgMzBENiAzMEVCOzs7O047U1FVQVJFRCBSVVVCVVJVOzs7OworMzM1NTtTUVVBUkUgUkVNVTtTbzswO0w7PHNxdWFyZT4gMzBFQyAzMEUwOzs7O047U1FVQVJFRCBSRU1VOzs7OworMzM1NjtTUVVBUkUgUkVOVE9HRU47U287MDtMOzxzcXVhcmU+IDMwRUMgMzBGMyAzMEM4IDMwQjIgMzBGMzs7OztOO1NRVUFSRUQgUkVOVE9HRU47Ozs7CiszMzU3O1NRVUFSRSBXQVRUTztTbzswO0w7PHNxdWFyZT4gMzBFRiAzMEMzIDMwQzg7Ozs7TjtTUVVBUkVEIFdBVFRPOzs7OworMzM1ODtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFpFUk87U287MDtMOzxjb21wYXQ+IDAwMzAgNzBCOTs7OztOOzs7OzsKKzMzNTk7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBPTkU7U287MDtMOzxjb21wYXQ+IDAwMzEgNzBCOTs7OztOOzs7OzsKKzMzNUE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV087U287MDtMOzxjb21wYXQ+IDAwMzIgNzBCOTs7OztOOzs7OzsKKzMzNUI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUSFJFRTtTbzswO0w7PGNvbXBhdD4gMDAzMyA3MEI5Ozs7O047Ozs7OworMzM1QztJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEZPVVI7U287MDtMOzxjb21wYXQ+IDAwMzQgNzBCOTs7OztOOzs7OzsKKzMzNUQ7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBGSVZFO1NvOzA7TDs8Y29tcGF0PiAwMDM1IDcwQjk7Ozs7Tjs7Ozs7CiszMzVFO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgU0lYO1NvOzA7TDs8Y29tcGF0PiAwMDM2IDcwQjk7Ozs7Tjs7Ozs7CiszMzVGO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgU0VWRU47U287MDtMOzxjb21wYXQ+IDAwMzcgNzBCOTs7OztOOzs7OzsKKzMzNjA7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBFSUdIVDtTbzswO0w7PGNvbXBhdD4gMDAzOCA3MEI5Ozs7O047Ozs7OworMzM2MTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIE5JTkU7U287MDtMOzxjb21wYXQ+IDAwMzkgNzBCOTs7OztOOzs7OzsKKzMzNjI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBURU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMCA3MEI5Ozs7O047Ozs7OworMzM2MztJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEVMRVZFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMxIDcwQjk7Ozs7Tjs7Ozs7CiszMzY0O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVFdFTFZFO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzIgNzBCOTs7OztOOzs7OzsKKzMzNjU7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUSElSVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMzIDcwQjk7Ozs7Tjs7Ozs7CiszMzY2O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgRk9VUlRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzNCA3MEI5Ozs7O047Ozs7OworMzM2NztJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEZJRlRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzNSA3MEI5Ozs7O047Ozs7OworMzM2ODtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFNJWFRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzNiA3MEI5Ozs7O047Ozs7OworMzM2OTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFNFVkVOVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM3IDcwQjk7Ozs7Tjs7Ozs7CiszMzZBO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgRUlHSFRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzOCA3MEI5Ozs7O047Ozs7OworMzM2QjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIE5JTkVURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzkgNzBCOTs7OztOOzs7OzsKKzMzNkM7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV0VOVFk7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzMCA3MEI5Ozs7O047Ozs7OworMzM2RDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRXRU5UWS1PTkU7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzMSA3MEI5Ozs7O047Ozs7OworMzM2RTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRXRU5UWS1UV087U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzMiA3MEI5Ozs7O047Ozs7OworMzM2RjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRXRU5UWS1USFJFRTtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDMzIDcwQjk7Ozs7Tjs7Ozs7CiszMzcwO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVFdFTlRZLUZPVVI7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzNCA3MEI5Ozs7O047Ozs7OworMzM3MTtTUVVBUkUgSFBBO1NvOzA7TDs8c3F1YXJlPiAwMDY4IDAwNTAgMDA2MTs7OztOOzs7OzsKKzMzNzI7U1FVQVJFIERBO1NvOzA7TDs8c3F1YXJlPiAwMDY0IDAwNjE7Ozs7Tjs7Ozs7CiszMzczO1NRVUFSRSBBVTtTbzswO0w7PHNxdWFyZT4gMDA0MSAwMDU1Ozs7O047Ozs7OworMzM3NDtTUVVBUkUgQkFSO1NvOzA7TDs8c3F1YXJlPiAwMDYyIDAwNjEgMDA3Mjs7OztOOzs7OzsKKzMzNzU7U1FVQVJFIE9WO1NvOzA7TDs8c3F1YXJlPiAwMDZGIDAwNTY7Ozs7Tjs7Ozs7CiszMzc2O1NRVUFSRSBQQztTbzswO0w7PHNxdWFyZT4gMDA3MCAwMDYzOzs7O047Ozs7OworMzM3QjtTUVVBUkUgRVJBIE5BTUUgSEVJU0VJO1NvOzA7TDs8c3F1YXJlPiA1RTczIDYyMTA7Ozs7TjtTUVVBUkVEIFRXTyBJREVPR1JBUEhTIEVSQSBOQU1FIEhFSVNFSTs7OzsKKzMzN0M7U1FVQVJFIEVSQSBOQU1FIFNZT1VXQTtTbzswO0w7PHNxdWFyZT4gNjYyRCA1NDhDOzs7O047U1FVQVJFRCBUV08gSURFT0dSQVBIUyBFUkEgTkFNRSBTWU9VV0E7Ozs7CiszMzdEO1NRVUFSRSBFUkEgTkFNRSBUQUlTWU9VO1NvOzA7TDs8c3F1YXJlPiA1OTI3IDZCNjM7Ozs7TjtTUVVBUkVEIFRXTyBJREVPR1JBUEhTIEVSQSBOQU1FIFRBSVNZT1U7Ozs7CiszMzdFO1NRVUFSRSBFUkEgTkFNRSBNRUlaSTtTbzswO0w7PHNxdWFyZT4gNjYwRSA2Q0JCOzs7O047U1FVQVJFRCBUV08gSURFT0dSQVBIUyBFUkEgTkFNRSBNRUlaSTs7OzsKKzMzN0Y7U1FVQVJFIENPUlBPUkFUSU9OO1NvOzA7TDs8c3F1YXJlPiA2ODJBIDVGMEYgNEYxQSA3OTNFOzs7O047U1FVQVJFRCBGT1VSIElERU9HUkFQSFMgQ09SUE9SQVRJT047Ozs7CiszMzgwO1NRVUFSRSBQQSBBTVBTO1NvOzA7TDs8c3F1YXJlPiAwMDcwIDAwNDE7Ozs7TjtTUVVBUkVEIFBBIEFNUFM7Ozs7CiszMzgxO1NRVUFSRSBOQTtTbzswO0w7PHNxdWFyZT4gMDA2RSAwMDQxOzs7O047U1FVQVJFRCBOQTs7OzsKKzMzODI7U1FVQVJFIE1VIEE7U287MDtMOzxzcXVhcmU+IDAzQkMgMDA0MTs7OztOO1NRVUFSRUQgTVUgQTs7OzsKKzMzODM7U1FVQVJFIE1BO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwNDE7Ozs7TjtTUVVBUkVEIE1BOzs7OworMzM4NDtTUVVBUkUgS0E7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA0MTs7OztOO1NRVUFSRUQgS0E7Ozs7CiszMzg1O1NRVUFSRSBLQjtTbzswO0w7PHNxdWFyZT4gMDA0QiAwMDQyOzs7O047U1FVQVJFRCBLQjs7OzsKKzMzODY7U1FVQVJFIE1CO1NvOzA7TDs8c3F1YXJlPiAwMDREIDAwNDI7Ozs7TjtTUVVBUkVEIE1COzs7OworMzM4NztTUVVBUkUgR0I7U287MDtMOzxzcXVhcmU+IDAwNDcgMDA0Mjs7OztOO1NRVUFSRUQgR0I7Ozs7CiszMzg4O1NRVUFSRSBDQUw7U287MDtMOzxzcXVhcmU+IDAwNjMgMDA2MSAwMDZDOzs7O047U1FVQVJFRCBDQUw7Ozs7CiszMzg5O1NRVUFSRSBLQ0FMO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNjMgMDA2MSAwMDZDOzs7O047U1FVQVJFRCBLQ0FMOzs7OworMzM4QTtTUVVBUkUgUEY7U287MDtMOzxzcXVhcmU+IDAwNzAgMDA0Njs7OztOO1NRVUFSRUQgUEY7Ozs7CiszMzhCO1NRVUFSRSBORjtTbzswO0w7PHNxdWFyZT4gMDA2RSAwMDQ2Ozs7O047U1FVQVJFRCBORjs7OzsKKzMzOEM7U1FVQVJFIE1VIEY7U287MDtMOzxzcXVhcmU+IDAzQkMgMDA0Njs7OztOO1NRVUFSRUQgTVUgRjs7OzsKKzMzOEQ7U1FVQVJFIE1VIEc7U287MDtMOzxzcXVhcmU+IDAzQkMgMDA2Nzs7OztOO1NRVUFSRUQgTVUgRzs7OzsKKzMzOEU7U1FVQVJFIE1HO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwNjc7Ozs7TjtTUVVBUkVEIE1HOzs7OworMzM4RjtTUVVBUkUgS0c7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA2Nzs7OztOO1NRVUFSRUQgS0c7Ozs7CiszMzkwO1NRVUFSRSBIWjtTbzswO0w7PHNxdWFyZT4gMDA0OCAwMDdBOzs7O047U1FVQVJFRCBIWjs7OzsKKzMzOTE7U1FVQVJFIEtIWjtTbzswO0w7PHNxdWFyZT4gMDA2QiAwMDQ4IDAwN0E7Ozs7TjtTUVVBUkVEIEtIWjs7OzsKKzMzOTI7U1FVQVJFIE1IWjtTbzswO0w7PHNxdWFyZT4gMDA0RCAwMDQ4IDAwN0E7Ozs7TjtTUVVBUkVEIE1IWjs7OzsKKzMzOTM7U1FVQVJFIEdIWjtTbzswO0w7PHNxdWFyZT4gMDA0NyAwMDQ4IDAwN0E7Ozs7TjtTUVVBUkVEIEdIWjs7OzsKKzMzOTQ7U1FVQVJFIFRIWjtTbzswO0w7PHNxdWFyZT4gMDA1NCAwMDQ4IDAwN0E7Ozs7TjtTUVVBUkVEIFRIWjs7OzsKKzMzOTU7U1FVQVJFIE1VIEw7U287MDtMOzxzcXVhcmU+IDAzQkMgMjExMzs7OztOO1NRVUFSRUQgTVUgTDs7OzsKKzMzOTY7U1FVQVJFIE1MO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDIxMTM7Ozs7TjtTUVVBUkVEIE1MOzs7OworMzM5NztTUVVBUkUgREw7U287MDtMOzxzcXVhcmU+IDAwNjQgMjExMzs7OztOO1NRVUFSRUQgREw7Ozs7CiszMzk4O1NRVUFSRSBLTDtTbzswO0w7PHNxdWFyZT4gMDA2QiAyMTEzOzs7O047U1FVQVJFRCBLTDs7OzsKKzMzOTk7U1FVQVJFIEZNO1NvOzA7TDs8c3F1YXJlPiAwMDY2IDAwNkQ7Ozs7TjtTUVVBUkVEIEZNOzs7OworMzM5QTtTUVVBUkUgTk07U287MDtMOzxzcXVhcmU+IDAwNkUgMDA2RDs7OztOO1NRVUFSRUQgTk07Ozs7CiszMzlCO1NRVUFSRSBNVSBNO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNkQ7Ozs7TjtTUVVBUkVEIE1VIE07Ozs7CiszMzlDO1NRVUFSRSBNTTtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDZEOzs7O047U1FVQVJFRCBNTTs7OzsKKzMzOUQ7U1FVQVJFIENNO1NvOzA7TDs8c3F1YXJlPiAwMDYzIDAwNkQ7Ozs7TjtTUVVBUkVEIENNOzs7OworMzM5RTtTUVVBUkUgS007U287MDtMOzxzcXVhcmU+IDAwNkIgMDA2RDs7OztOO1NRVUFSRUQgS007Ozs7CiszMzlGO1NRVUFSRSBNTSBTUVVBUkVEO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwNkQgMDBCMjs7OztOO1NRVUFSRUQgTU0gU1FVQVJFRDs7OzsKKzMzQTA7U1FVQVJFIENNIFNRVUFSRUQ7U287MDtMOzxzcXVhcmU+IDAwNjMgMDA2RCAwMEIyOzs7O047U1FVQVJFRCBDTSBTUVVBUkVEOzs7OworMzNBMTtTUVVBUkUgTSBTUVVBUkVEO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwQjI7Ozs7TjtTUVVBUkVEIE0gU1FVQVJFRDs7OzsKKzMzQTI7U1FVQVJFIEtNIFNRVUFSRUQ7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA2RCAwMEIyOzs7O047U1FVQVJFRCBLTSBTUVVBUkVEOzs7OworMzNBMztTUVVBUkUgTU0gQ1VCRUQ7U287MDtMOzxzcXVhcmU+IDAwNkQgMDA2RCAwMEIzOzs7O047U1FVQVJFRCBNTSBDVUJFRDs7OzsKKzMzQTQ7U1FVQVJFIENNIENVQkVEO1NvOzA7TDs8c3F1YXJlPiAwMDYzIDAwNkQgMDBCMzs7OztOO1NRVUFSRUQgQ00gQ1VCRUQ7Ozs7CiszM0E1O1NRVUFSRSBNIENVQkVEO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwQjM7Ozs7TjtTUVVBUkVEIE0gQ1VCRUQ7Ozs7CiszM0E2O1NRVUFSRSBLTSBDVUJFRDtTbzswO0w7PHNxdWFyZT4gMDA2QiAwMDZEIDAwQjM7Ozs7TjtTUVVBUkVEIEtNIENVQkVEOzs7OworMzNBNztTUVVBUkUgTSBPVkVSIFM7U287MDtMOzxzcXVhcmU+IDAwNkQgMjIxNSAwMDczOzs7O047U1FVQVJFRCBNIE9WRVIgUzs7OzsKKzMzQTg7U1FVQVJFIE0gT1ZFUiBTIFNRVUFSRUQ7U287MDtMOzxzcXVhcmU+IDAwNkQgMjIxNSAwMDczIDAwQjI7Ozs7TjtTUVVBUkVEIE0gT1ZFUiBTIFNRVUFSRUQ7Ozs7CiszM0E5O1NRVUFSRSBQQTtTbzswO0w7PHNxdWFyZT4gMDA1MCAwMDYxOzs7O047U1FVQVJFRCBQQTs7OzsKKzMzQUE7U1FVQVJFIEtQQTtTbzswO0w7PHNxdWFyZT4gMDA2QiAwMDUwIDAwNjE7Ozs7TjtTUVVBUkVEIEtQQTs7OzsKKzMzQUI7U1FVQVJFIE1QQTtTbzswO0w7PHNxdWFyZT4gMDA0RCAwMDUwIDAwNjE7Ozs7TjtTUVVBUkVEIE1QQTs7OzsKKzMzQUM7U1FVQVJFIEdQQTtTbzswO0w7PHNxdWFyZT4gMDA0NyAwMDUwIDAwNjE7Ozs7TjtTUVVBUkVEIEdQQTs7OzsKKzMzQUQ7U1FVQVJFIFJBRDtTbzswO0w7PHNxdWFyZT4gMDA3MiAwMDYxIDAwNjQ7Ozs7TjtTUVVBUkVEIFJBRDs7OzsKKzMzQUU7U1FVQVJFIFJBRCBPVkVSIFM7U287MDtMOzxzcXVhcmU+IDAwNzIgMDA2MSAwMDY0IDIyMTUgMDA3Mzs7OztOO1NRVUFSRUQgUkFEIE9WRVIgUzs7OzsKKzMzQUY7U1FVQVJFIFJBRCBPVkVSIFMgU1FVQVJFRDtTbzswO0w7PHNxdWFyZT4gMDA3MiAwMDYxIDAwNjQgMjIxNSAwMDczIDAwQjI7Ozs7TjtTUVVBUkVEIFJBRCBPVkVSIFMgU1FVQVJFRDs7OzsKKzMzQjA7U1FVQVJFIFBTO1NvOzA7TDs8c3F1YXJlPiAwMDcwIDAwNzM7Ozs7TjtTUVVBUkVEIFBTOzs7OworMzNCMTtTUVVBUkUgTlM7U287MDtMOzxzcXVhcmU+IDAwNkUgMDA3Mzs7OztOO1NRVUFSRUQgTlM7Ozs7CiszM0IyO1NRVUFSRSBNVSBTO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNzM7Ozs7TjtTUVVBUkVEIE1VIFM7Ozs7CiszM0IzO1NRVUFSRSBNUztTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDczOzs7O047U1FVQVJFRCBNUzs7OzsKKzMzQjQ7U1FVQVJFIFBWO1NvOzA7TDs8c3F1YXJlPiAwMDcwIDAwNTY7Ozs7TjtTUVVBUkVEIFBWOzs7OworMzNCNTtTUVVBUkUgTlY7U287MDtMOzxzcXVhcmU+IDAwNkUgMDA1Njs7OztOO1NRVUFSRUQgTlY7Ozs7CiszM0I2O1NRVUFSRSBNVSBWO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNTY7Ozs7TjtTUVVBUkVEIE1VIFY7Ozs7CiszM0I3O1NRVUFSRSBNVjtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDU2Ozs7O047U1FVQVJFRCBNVjs7OzsKKzMzQjg7U1FVQVJFIEtWO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNTY7Ozs7TjtTUVVBUkVEIEtWOzs7OworMzNCOTtTUVVBUkUgTVYgTUVHQTtTbzswO0w7PHNxdWFyZT4gMDA0RCAwMDU2Ozs7O047U1FVQVJFRCBNViBNRUdBOzs7OworMzNCQTtTUVVBUkUgUFc7U287MDtMOzxzcXVhcmU+IDAwNzAgMDA1Nzs7OztOO1NRVUFSRUQgUFc7Ozs7CiszM0JCO1NRVUFSRSBOVztTbzswO0w7PHNxdWFyZT4gMDA2RSAwMDU3Ozs7O047U1FVQVJFRCBOVzs7OzsKKzMzQkM7U1FVQVJFIE1VIFc7U287MDtMOzxzcXVhcmU+IDAzQkMgMDA1Nzs7OztOO1NRVUFSRUQgTVUgVzs7OzsKKzMzQkQ7U1FVQVJFIE1XO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwNTc7Ozs7TjtTUVVBUkVEIE1XOzs7OworMzNCRTtTUVVBUkUgS1c7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA1Nzs7OztOO1NRVUFSRUQgS1c7Ozs7CiszM0JGO1NRVUFSRSBNVyBNRUdBO1NvOzA7TDs8c3F1YXJlPiAwMDREIDAwNTc7Ozs7TjtTUVVBUkVEIE1XIE1FR0E7Ozs7CiszM0MwO1NRVUFSRSBLIE9ITTtTbzswO0w7PHNxdWFyZT4gMDA2QiAwM0E5Ozs7O047U1FVQVJFRCBLIE9ITTs7OzsKKzMzQzE7U1FVQVJFIE0gT0hNO1NvOzA7TDs8c3F1YXJlPiAwMDREIDAzQTk7Ozs7TjtTUVVBUkVEIE0gT0hNOzs7OworMzNDMjtTUVVBUkUgQU07U287MDtMOzxzcXVhcmU+IDAwNjEgMDAyRSAwMDZEIDAwMkU7Ozs7TjtTUVVBUkVEIEFNOzs7OworMzNDMztTUVVBUkUgQlE7U287MDtMOzxzcXVhcmU+IDAwNDIgMDA3MTs7OztOO1NRVUFSRUQgQlE7Ozs7CiszM0M0O1NRVUFSRSBDQztTbzswO0w7PHNxdWFyZT4gMDA2MyAwMDYzOzs7O047U1FVQVJFRCBDQzs7OzsKKzMzQzU7U1FVQVJFIENEO1NvOzA7TDs8c3F1YXJlPiAwMDYzIDAwNjQ7Ozs7TjtTUVVBUkVEIENEOzs7OworMzNDNjtTUVVBUkUgQyBPVkVSIEtHO1NvOzA7TDs8c3F1YXJlPiAwMDQzIDIyMTUgMDA2QiAwMDY3Ozs7O047U1FVQVJFRCBDIE9WRVIgS0c7Ozs7CiszM0M3O1NRVUFSRSBDTztTbzswO0w7PHNxdWFyZT4gMDA0MyAwMDZGIDAwMkU7Ozs7TjtTUVVBUkVEIENPOzs7OworMzNDODtTUVVBUkUgREI7U287MDtMOzxzcXVhcmU+IDAwNjQgMDA0Mjs7OztOO1NRVUFSRUQgREI7Ozs7CiszM0M5O1NRVUFSRSBHWTtTbzswO0w7PHNxdWFyZT4gMDA0NyAwMDc5Ozs7O047U1FVQVJFRCBHWTs7OzsKKzMzQ0E7U1FVQVJFIEhBO1NvOzA7TDs8c3F1YXJlPiAwMDY4IDAwNjE7Ozs7TjtTUVVBUkVEIEhBOzs7OworMzNDQjtTUVVBUkUgSFA7U287MDtMOzxzcXVhcmU+IDAwNDggMDA1MDs7OztOO1NRVUFSRUQgSFA7Ozs7CiszM0NDO1NRVUFSRSBJTjtTbzswO0w7PHNxdWFyZT4gMDA2OSAwMDZFOzs7O047U1FVQVJFRCBJTjs7OzsKKzMzQ0Q7U1FVQVJFIEtLO1NvOzA7TDs8c3F1YXJlPiAwMDRCIDAwNEI7Ozs7TjtTUVVBUkVEIEtLOzs7OworMzNDRTtTUVVBUkUgS00gQ0FQSVRBTDtTbzswO0w7PHNxdWFyZT4gMDA0QiAwMDREOzs7O047U1FVQVJFRCBLTSBDQVBJVEFMOzs7OworMzNDRjtTUVVBUkUgS1Q7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA3NDs7OztOO1NRVUFSRUQgS1Q7Ozs7CiszM0QwO1NRVUFSRSBMTTtTbzswO0w7PHNxdWFyZT4gMDA2QyAwMDZEOzs7O047U1FVQVJFRCBMTTs7OzsKKzMzRDE7U1FVQVJFIExOO1NvOzA7TDs8c3F1YXJlPiAwMDZDIDAwNkU7Ozs7TjtTUVVBUkVEIExOOzs7OworMzNEMjtTUVVBUkUgTE9HO1NvOzA7TDs8c3F1YXJlPiAwMDZDIDAwNkYgMDA2Nzs7OztOO1NRVUFSRUQgTE9HOzs7OworMzNEMztTUVVBUkUgTFg7U287MDtMOzxzcXVhcmU+IDAwNkMgMDA3ODs7OztOO1NRVUFSRUQgTFg7Ozs7CiszM0Q0O1NRVUFSRSBNQiBTTUFMTDtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDYyOzs7O047U1FVQVJFRCBNQiBTTUFMTDs7OzsKKzMzRDU7U1FVQVJFIE1JTDtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDY5IDAwNkM7Ozs7TjtTUVVBUkVEIE1JTDs7OzsKKzMzRDY7U1FVQVJFIE1PTDtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDZGIDAwNkM7Ozs7TjtTUVVBUkVEIE1PTDs7OzsKKzMzRDc7U1FVQVJFIFBIO1NvOzA7TDs8c3F1YXJlPiAwMDUwIDAwNDg7Ozs7TjtTUVVBUkVEIFBIOzs7OworMzNEODtTUVVBUkUgUE07U287MDtMOzxzcXVhcmU+IDAwNzAgMDAyRSAwMDZEIDAwMkU7Ozs7TjtTUVVBUkVEIFBNOzs7OworMzNEOTtTUVVBUkUgUFBNO1NvOzA7TDs8c3F1YXJlPiAwMDUwIDAwNTAgMDA0RDs7OztOO1NRVUFSRUQgUFBNOzs7OworMzNEQTtTUVVBUkUgUFI7U287MDtMOzxzcXVhcmU+IDAwNTAgMDA1Mjs7OztOO1NRVUFSRUQgUFI7Ozs7CiszM0RCO1NRVUFSRSBTUjtTbzswO0w7PHNxdWFyZT4gMDA3MyAwMDcyOzs7O047U1FVQVJFRCBTUjs7OzsKKzMzREM7U1FVQVJFIFNWO1NvOzA7TDs8c3F1YXJlPiAwMDUzIDAwNzY7Ozs7TjtTUVVBUkVEIFNWOzs7OworMzNERDtTUVVBUkUgV0I7U287MDtMOzxzcXVhcmU+IDAwNTcgMDA2Mjs7OztOO1NRVUFSRUQgV0I7Ozs7CiszM0UwO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBPTkU7U287MDtMOzxjb21wYXQ+IDAwMzEgNjVFNTs7OztOOzs7OzsKKzMzRTE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXTztTbzswO0w7PGNvbXBhdD4gMDAzMiA2NUU1Ozs7O047Ozs7OworMzNFMjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVEhSRUU7U287MDtMOzxjb21wYXQ+IDAwMzMgNjVFNTs7OztOOzs7OzsKKzMzRTM7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIEZPVVI7U287MDtMOzxjb21wYXQ+IDAwMzQgNjVFNTs7OztOOzs7OzsKKzMzRTQ7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIEZJVkU7U287MDtMOzxjb21wYXQ+IDAwMzUgNjVFNTs7OztOOzs7OzsKKzMzRTU7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFNJWDtTbzswO0w7PGNvbXBhdD4gMDAzNiA2NUU1Ozs7O047Ozs7OworMzNFNjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgU0VWRU47U287MDtMOzxjb21wYXQ+IDAwMzcgNjVFNTs7OztOOzs7OzsKKzMzRTc7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIEVJR0hUO1NvOzA7TDs8Y29tcGF0PiAwMDM4IDY1RTU7Ozs7Tjs7Ozs7CiszM0U4O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBOSU5FO1NvOzA7TDs8Y29tcGF0PiAwMDM5IDY1RTU7Ozs7Tjs7Ozs7CiszM0U5O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBURU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMCA2NUU1Ozs7O047Ozs7OworMzNFQTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgRUxFVkVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzEgNjVFNTs7OztOOzs7OzsKKzMzRUI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRUxWRTtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMyIDY1RTU7Ozs7Tjs7Ozs7CiszM0VDO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUSElSVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMzIDY1RTU7Ozs7Tjs7Ozs7CiszM0VEO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBGT1VSVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM0IDY1RTU7Ozs7Tjs7Ozs7CiszM0VFO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBGSUZURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzUgNjVFNTs7OztOOzs7OzsKKzMzRUY7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFNJWFRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzNiA2NUU1Ozs7O047Ozs7OworMzNGMDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgU0VWRU5URUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzcgNjVFNTs7OztOOzs7OzsKKzMzRjE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIEVJR0hURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzggNjVFNTs7OztOOzs7OzsKKzMzRjI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIE5JTkVURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzkgNjVFNTs7OztOOzs7OzsKKzMzRjM7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWTtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDMwIDY1RTU7Ozs7Tjs7Ozs7CiszM0Y0O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktT05FO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzEgNjVFNTs7OztOOzs7OzsKKzMzRjU7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1UV087U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzMiA2NUU1Ozs7O047Ozs7OworMzNGNjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVFdFTlRZLVRIUkVFO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzMgNjVFNTs7OztOOzs7OzsKKzMzRjc7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1GT1VSO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzQgNjVFNTs7OztOOzs7OzsKKzMzRjg7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1GSVZFO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzUgNjVFNTs7OztOOzs7OzsKKzMzRjk7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1TSVg7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzNiA2NUU1Ozs7O047Ozs7OworMzNGQTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVFdFTlRZLVNFVkVOO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzcgNjVFNTs7OztOOzs7OzsKKzMzRkI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1FSUdIVDtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDM4IDY1RTU7Ozs7Tjs7Ozs7CiszM0ZDO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktTklORTtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDM5IDY1RTU7Ozs7Tjs7Ozs7CiszM0ZEO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUSElSVFk7U287MDtMOzxjb21wYXQ+IDAwMzMgMDAzMCA2NUU1Ozs7O047Ozs7OworMzNGRTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVEhJUlRZLU9ORTtTbzswO0w7PGNvbXBhdD4gMDAzMyAwMDMxIDY1RTU7Ozs7Tjs7Ozs7Cis0RTAwOzxDSksgSWRlb2dyYXBoLCBGaXJzdD47TG87MDtMOzs7OztOOzs7OzsKKzlGQTU7PENKSyBJZGVvZ3JhcGgsIExhc3Q+O0xvOzA7TDs7Ozs7Tjs7Ozs7CitBQzAwOzxIYW5ndWwgU3lsbGFibGUsIEZpcnN0PjtMbzswO0w7Ozs7O047Ozs7OworRDdBMzs8SGFuZ3VsIFN5bGxhYmxlLCBMYXN0PjtMbzswO0w7Ozs7O047Ozs7OworRDgwMDs8VW5hc3NpZ25lZCBIaWdoIFN1cnJvZ2F0ZSwgRmlyc3Q+O0NzOzA7TDs7Ozs7Tjs7Ozs7CitEQjdGOzxVbmFzc2lnbmVkIEhpZ2ggU3Vycm9nYXRlLCBMYXN0PjtDczswO0w7Ozs7O047Ozs7OworREI4MDs8UHJpdmF0ZSBVc2UgSGlnaCBTdXJyb2dhdGUsIEZpcnN0PjtDczswO0w7Ozs7O047Ozs7OworREJGRjs8UHJpdmF0ZSBVc2UgSGlnaCBTdXJyb2dhdGUsIExhc3Q+O0NzOzA7TDs7Ozs7Tjs7Ozs7CitEQzAwOzxMb3cgU3Vycm9nYXRlLCBGaXJzdD47Q3M7MDtMOzs7OztOOzs7OzsKK0RGRkY7PExvdyBTdXJyb2dhdGUsIExhc3Q+O0NzOzA7TDs7Ozs7Tjs7Ozs7CitFMDAwOzxQcml2YXRlIFVzZSwgRmlyc3Q+O0NvOzA7TDs7Ozs7Tjs7Ozs7CitGOEZGOzxQcml2YXRlIFVzZSwgTGFzdD47Q287MDtMOzs7OztOOzs7OzsKK0Y5MDA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MDA7TG87MDtMOzhDNDg7Ozs7Tjs7Ozs7CitGOTAxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTAxO0xvOzA7TDs2NkY0Ozs7O047Ozs7OworRjkwMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwMjtMbzswO0w7OEVDQTs7OztOOzs7OzsKK0Y5MDM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MDM7TG87MDtMOzhDQzg7Ozs7Tjs7Ozs7CitGOTA0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTA0O0xvOzA7TDs2RUQxOzs7O047Ozs7OworRjkwNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwNTtMbzswO0w7NEUzMjs7OztOOzs7OzsKK0Y5MDY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MDY7TG87MDtMOzUzRTU7Ozs7Tjs7Ozs7CitGOTA3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTA3O0xvOzA7TDs5RjlDOzs7O047Ozs7OworRjkwODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwODtMbzswO0w7OUY5Qzs7OztOOzs7OzsKK0Y5MDk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MDk7TG87MDtMOzU5NTE7Ozs7Tjs7Ozs7CitGOTBBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTBBO0xvOzA7TDs5MUQxOzs7O047Ozs7OworRjkwQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwQjtMbzswO0w7NTU4Nzs7OztOOzs7OzsKK0Y5MEM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MEM7TG87MDtMOzU5NDg7Ozs7Tjs7Ozs7CitGOTBEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTBEO0xvOzA7TDs2MUY2Ozs7O047Ozs7OworRjkwRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwRTtMbzswO0w7NzY2OTs7OztOOzs7OzsKK0Y5MEY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MEY7TG87MDtMOzdGODU7Ozs7Tjs7Ozs7CitGOTEwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTEwO0xvOzA7TDs4NjNGOzs7O047Ozs7OworRjkxMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxMTtMbzswO0w7ODdCQTs7OztOOzs7OzsKK0Y5MTI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MTI7TG87MDtMOzg4Rjg7Ozs7Tjs7Ozs7CitGOTEzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTEzO0xvOzA7TDs5MDhGOzs7O047Ozs7OworRjkxNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxNDtMbzswO0w7NkEwMjs7OztOOzs7OzsKK0Y5MTU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MTU7TG87MDtMOzZEMUI7Ozs7Tjs7Ozs7CitGOTE2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTE2O0xvOzA7TDs3MEQ5Ozs7O047Ozs7OworRjkxNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxNztMbzswO0w7NzNERTs7OztOOzs7OzsKK0Y5MTg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MTg7TG87MDtMOzg0M0Q7Ozs7Tjs7Ozs7CitGOTE5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTE5O0xvOzA7TDs5MTZBOzs7O047Ozs7OworRjkxQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxQTtMbzswO0w7OTlGMTs7OztOOzs7OzsKK0Y5MUI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MUI7TG87MDtMOzRFODI7Ozs7Tjs7Ozs7CitGOTFDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTFDO0xvOzA7TDs1Mzc1Ozs7O047Ozs7OworRjkxRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxRDtMbzswO0w7NkIwNDs7OztOOzs7OzsKK0Y5MUU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MUU7TG87MDtMOzcyMUI7Ozs7Tjs7Ozs7CitGOTFGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTFGO0xvOzA7TDs4NjJEOzs7O047Ozs7OworRjkyMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyMDtMbzswO0w7OUUxRTs7OztOOzs7OzsKK0Y5MjE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MjE7TG87MDtMOzVENTA7Ozs7Tjs7Ozs7CitGOTIyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTIyO0xvOzA7TDs2RkVCOzs7O047Ozs7OworRjkyMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyMztMbzswO0w7ODVDRDs7OztOOzs7OzsKK0Y5MjQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MjQ7TG87MDtMOzg5NjQ7Ozs7Tjs7Ozs7CitGOTI1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTI1O0xvOzA7TDs2MkM5Ozs7O047Ozs7OworRjkyNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyNjtMbzswO0w7ODFEODs7OztOOzs7OzsKK0Y5Mjc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Mjc7TG87MDtMOzg4MUY7Ozs7Tjs7Ozs7CitGOTI4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTI4O0xvOzA7TDs1RUNBOzs7O047Ozs7OworRjkyOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyOTtMbzswO0w7NjcxNzs7OztOOzs7OzsKK0Y5MkE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MkE7TG87MDtMOzZENkE7Ozs7Tjs7Ozs7CitGOTJCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTJCO0xvOzA7TDs3MkZDOzs7O047Ozs7OworRjkyQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyQztMbzswO0w7OTBDRTs7OztOOzs7OzsKK0Y5MkQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MkQ7TG87MDtMOzRGODY7Ozs7Tjs7Ozs7CitGOTJFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTJFO0xvOzA7TDs1MUI3Ozs7O047Ozs7OworRjkyRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyRjtMbzswO0w7NTJERTs7OztOOzs7OzsKK0Y5MzA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MzA7TG87MDtMOzY0QzQ7Ozs7Tjs7Ozs7CitGOTMxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTMxO0xvOzA7TDs2QUQzOzs7O047Ozs7OworRjkzMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzMjtMbzswO0w7NzIxMDs7OztOOzs7OzsKK0Y5MzM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MzM7TG87MDtMOzc2RTc7Ozs7Tjs7Ozs7CitGOTM0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTM0O0xvOzA7TDs4MDAxOzs7O047Ozs7OworRjkzNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzNTtMbzswO0w7ODYwNjs7OztOOzs7OzsKK0Y5MzY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MzY7TG87MDtMOzg2NUM7Ozs7Tjs7Ozs7CitGOTM3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTM3O0xvOzA7TDs4REVGOzs7O047Ozs7OworRjkzODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzODtMbzswO0w7OTczMjs7OztOOzs7OzsKK0Y5Mzk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Mzk7TG87MDtMOzlCNkY7Ozs7Tjs7Ozs7CitGOTNBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTNBO0xvOzA7TDs5REZBOzs7O047Ozs7OworRjkzQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzQjtMbzswO0w7Nzg4Qzs7OztOOzs7OzsKK0Y5M0M7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5M0M7TG87MDtMOzc5N0Y7Ozs7Tjs7Ozs7CitGOTNEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTNEO0xvOzA7TDs3REEwOzs7O047Ozs7OworRjkzRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzRTtMbzswO0w7ODNDOTs7OztOOzs7OzsKK0Y5M0Y7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5M0Y7TG87MDtMOzkzMDQ7Ozs7Tjs7Ozs7CitGOTQwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTQwO0xvOzA7TDs5RTdGOzs7O047Ozs7OworRjk0MTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0MTtMbzswO0w7OEFENjs7OztOOzs7OzsKK0Y5NDI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NDI7TG87MDtMOzU4REY7Ozs7Tjs7Ozs7CitGOTQzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTQzO0xvOzA7TDs1RjA0Ozs7O047Ozs7OworRjk0NDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0NDtMbzswO0w7N0M2MDs7OztOOzs7OzsKK0Y5NDU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NDU7TG87MDtMOzgwN0U7Ozs7Tjs7Ozs7CitGOTQ2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTQ2O0xvOzA7TDs3MjYyOzs7O047Ozs7OworRjk0NztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0NztMbzswO0w7NzhDQTs7OztOOzs7OzsKK0Y5NDg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NDg7TG87MDtMOzhDQzI7Ozs7Tjs7Ozs7CitGOTQ5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTQ5O0xvOzA7TDs5NkY3Ozs7O047Ozs7OworRjk0QTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0QTtMbzswO0w7NThEODs7OztOOzs7OzsKK0Y5NEI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NEI7TG87MDtMOzVDNjI7Ozs7Tjs7Ozs7CitGOTRDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTRDO0xvOzA7TDs2QTEzOzs7O047Ozs7OworRjk0RDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0RDtMbzswO0w7NkREQTs7OztOOzs7OzsKK0Y5NEU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NEU7TG87MDtMOzZGMEY7Ozs7Tjs7Ozs7CitGOTRGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTRGO0xvOzA7TDs3RDJGOzs7O047Ozs7OworRjk1MDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1MDtMbzswO0w7N0UzNzs7OztOOzs7OzsKK0Y5NTE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NTE7TG87MDtMOzk2RkI7Ozs7Tjs7Ozs7CitGOTUyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTUyO0xvOzA7TDs1MkQyOzs7O047Ozs7OworRjk1MztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1MztMbzswO0w7ODA4Qjs7OztOOzs7OzsKK0Y5NTQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NTQ7TG87MDtMOzUxREM7Ozs7Tjs7Ozs7CitGOTU1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTU1O0xvOzA7TDs1MUNDOzs7O047Ozs7OworRjk1NjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1NjtMbzswO0w7N0ExQzs7OztOOzs7OzsKK0Y5NTc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NTc7TG87MDtMOzdEQkU7Ozs7Tjs7Ozs7CitGOTU4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTU4O0xvOzA7TDs4M0YxOzs7O047Ozs7OworRjk1OTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1OTtMbzswO0w7OTY3NTs7OztOOzs7OzsKK0Y5NUE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NUE7TG87MDtMOzhCODA7Ozs7Tjs7Ozs7CitGOTVCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTVCO0xvOzA7TDs2MkNGOzs7O047Ozs7OworRjk1QztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1QztMbzswO0w7NkEwMjs7OztOOzs7OzsKK0Y5NUQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NUQ7TG87MDtMOzhBRkU7Ozs7Tjs7Ozs7CitGOTVFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTVFO0xvOzA7TDs0RTM5Ozs7O047Ozs7OworRjk1RjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1RjtMbzswO0w7NUJFNzs7OztOOzs7OzsKK0Y5NjA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NjA7TG87MDtMOzYwMTI7Ozs7Tjs7Ozs7CitGOTYxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTYxO0xvOzA7TDs3Mzg3Ozs7O047Ozs7OworRjk2MjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2MjtMbzswO0w7NzU3MDs7OztOOzs7OzsKK0Y5NjM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NjM7TG87MDtMOzUzMTc7Ozs7Tjs7Ozs7CitGOTY0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTY0O0xvOzA7TDs3OEZCOzs7O047Ozs7OworRjk2NTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2NTtMbzswO0w7NEZCRjs7OztOOzs7OzsKK0Y5NjY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NjY7TG87MDtMOzVGQTk7Ozs7Tjs7Ozs7CitGOTY3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTY3O0xvOzA7TDs0RTBEOzs7O047Ozs7OworRjk2ODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2ODtMbzswO0w7NkNDQzs7OztOOzs7OzsKK0Y5Njk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Njk7TG87MDtMOzY1Nzg7Ozs7Tjs7Ozs7CitGOTZBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTZBO0xvOzA7TDs3RDIyOzs7O047Ozs7OworRjk2QjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2QjtMbzswO0w7NTNDMzs7OztOOzs7OzsKK0Y5NkM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NkM7TG87MDtMOzU4NUU7Ozs7Tjs7Ozs7CitGOTZEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTZEO0xvOzA7TDs3NzAxOzs7O047Ozs7OworRjk2RTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2RTtMbzswO0w7ODQ0OTs7OztOOzs7OzsKK0Y5NkY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NkY7TG87MDtMOzhBQUE7Ozs7Tjs7Ozs7CitGOTcwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTcwO0xvOzA7TDs2QkJBOzs7O047Ozs7OworRjk3MTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3MTtMbzswO0w7OEZCMDs7OztOOzs7OzsKK0Y5NzI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NzI7TG87MDtMOzZDODg7Ozs7Tjs7Ozs7CitGOTczO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTczO0xvOzA7TDs2MkZFOzs7O047Ozs7OworRjk3NDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3NDtMbzswO0w7ODJFNTs7OztOOzs7OzsKK0Y5NzU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NzU7TG87MDtMOzYzQTA7Ozs7Tjs7Ozs7CitGOTc2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTc2O0xvOzA7TDs3NTY1Ozs7O047Ozs7OworRjk3NztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3NztMbzswO0w7NEVBRTs7OztOOzs7OzsKK0Y5Nzg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Nzg7TG87MDtMOzUxNjk7Ozs7Tjs7Ozs7CitGOTc5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTc5O0xvOzA7TDs1MUM5Ozs7O047Ozs7OworRjk3QTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3QTtMbzswO0w7Njg4MTs7OztOOzs7OzsKK0Y5N0I7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5N0I7TG87MDtMOzdDRTc7Ozs7Tjs7Ozs7CitGOTdDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTdDO0xvOzA7TDs4MjZGOzs7O047Ozs7OworRjk3RDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3RDtMbzswO0w7OEFEMjs7OztOOzs7OzsKK0Y5N0U7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5N0U7TG87MDtMOzkxQ0Y7Ozs7Tjs7Ozs7CitGOTdGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTdGO0xvOzA7TDs1MkY1Ozs7O047Ozs7OworRjk4MDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4MDtMbzswO0w7NTQ0Mjs7OztOOzs7OzsKK0Y5ODE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5ODE7TG87MDtMOzU5NzM7Ozs7Tjs7Ozs7CitGOTgyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTgyO0xvOzA7TDs1RUVDOzs7O047Ozs7OworRjk4MztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4MztMbzswO0w7NjVDNTs7OztOOzs7OzsKK0Y5ODQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5ODQ7TG87MDtMOzZGRkU7Ozs7Tjs7Ozs7CitGOTg1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTg1O0xvOzA7TDs3OTJBOzs7O047Ozs7OworRjk4NjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4NjtMbzswO0w7OTVBRDs7OztOOzs7OzsKK0Y5ODc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5ODc7TG87MDtMOzlBNkE7Ozs7Tjs7Ozs7CitGOTg4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTg4O0xvOzA7TDs5RTk3Ozs7O047Ozs7OworRjk4OTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4OTtMbzswO0w7OUVDRTs7OztOOzs7OzsKK0Y5OEE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OEE7TG87MDtMOzUyOUI7Ozs7Tjs7Ozs7CitGOThCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOThCO0xvOzA7TDs2NkM2Ozs7O047Ozs7OworRjk4QztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4QztMbzswO0w7NkI3Nzs7OztOOzs7OzsKK0Y5OEQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OEQ7TG87MDtMOzhGNjI7Ozs7Tjs7Ozs7CitGOThFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOThFO0xvOzA7TDs1RTc0Ozs7O047Ozs7OworRjk4RjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4RjtMbzswO0w7NjE5MDs7OztOOzs7OzsKK0Y5OTA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OTA7TG87MDtMOzYyMDA7Ozs7Tjs7Ozs7CitGOTkxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTkxO0xvOzA7TDs2NDlBOzs7O047Ozs7OworRjk5MjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5MjtMbzswO0w7NkYyMzs7OztOOzs7OzsKK0Y5OTM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OTM7TG87MDtMOzcxNDk7Ozs7Tjs7Ozs7CitGOTk0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTk0O0xvOzA7TDs3NDg5Ozs7O047Ozs7OworRjk5NTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5NTtMbzswO0w7NzlDQTs7OztOOzs7OzsKK0Y5OTY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OTY7TG87MDtMOzdERjQ7Ozs7Tjs7Ozs7CitGOTk3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTk3O0xvOzA7TDs4MDZGOzs7O047Ozs7OworRjk5ODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5ODtMbzswO0w7OEYyNjs7OztOOzs7OzsKK0Y5OTk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OTk7TG87MDtMOzg0RUU7Ozs7Tjs7Ozs7CitGOTlBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTlBO0xvOzA7TDs5MDIzOzs7O047Ozs7OworRjk5QjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5QjtMbzswO0w7OTM0QTs7OztOOzs7OzsKK0Y5OUM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OUM7TG87MDtMOzUyMTc7Ozs7Tjs7Ozs7CitGOTlEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTlEO0xvOzA7TDs1MkEzOzs7O047Ozs7OworRjk5RTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5RTtMbzswO0w7NTRCRDs7OztOOzs7OzsKK0Y5OUY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OUY7TG87MDtMOzcwQzg7Ozs7Tjs7Ozs7CitGOUEwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUEwO0xvOzA7TDs4OEMyOzs7O047Ozs7OworRjlBMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBMTtMbzswO0w7OEFBQTs7OztOOzs7OzsKK0Y5QTI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QTI7TG87MDtMOzVFQzk7Ozs7Tjs7Ozs7CitGOUEzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUEzO0xvOzA7TDs1RkY1Ozs7O047Ozs7OworRjlBNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBNDtMbzswO0w7NjM3Qjs7OztOOzs7OzsKK0Y5QTU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QTU7TG87MDtMOzZCQUU7Ozs7Tjs7Ozs7CitGOUE2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUE2O0xvOzA7TDs3QzNFOzs7O047Ozs7OworRjlBNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBNztMbzswO0w7NzM3NTs7OztOOzs7OzsKK0Y5QTg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QTg7TG87MDtMOzRFRTQ7Ozs7Tjs7Ozs7CitGOUE5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUE5O0xvOzA7TDs1NkY5Ozs7O047Ozs7OworRjlBQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBQTtMbzswO0w7NUJFNzs7OztOOzs7OzsKK0Y5QUI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QUI7TG87MDtMOzVEQkE7Ozs7Tjs7Ozs7CitGOUFDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUFDO0xvOzA7TDs2MDFDOzs7O047Ozs7OworRjlBRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBRDtMbzswO0w7NzNCMjs7OztOOzs7OzsKK0Y5QUU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QUU7TG87MDtMOzc0Njk7Ozs7Tjs7Ozs7CitGOUFGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUFGO0xvOzA7TDs3RjlBOzs7O047Ozs7OworRjlCMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCMDtMbzswO0w7ODA0Njs7OztOOzs7OzsKK0Y5QjE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QjE7TG87MDtMOzkyMzQ7Ozs7Tjs7Ozs7CitGOUIyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUIyO0xvOzA7TDs5NkY2Ozs7O047Ozs7OworRjlCMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCMztMbzswO0w7OTc0ODs7OztOOzs7OzsKK0Y5QjQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QjQ7TG87MDtMOzk4MTg7Ozs7Tjs7Ozs7CitGOUI1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUI1O0xvOzA7TDs0RjhCOzs7O047Ozs7OworRjlCNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCNjtMbzswO0w7NzlBRTs7OztOOzs7OzsKK0Y5Qjc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Qjc7TG87MDtMOzkxQjQ7Ozs7Tjs7Ozs7CitGOUI4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUI4O0xvOzA7TDs5NkI4Ozs7O047Ozs7OworRjlCOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCOTtMbzswO0w7NjBFMTs7OztOOzs7OzsKK0Y5QkE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QkE7TG87MDtMOzRFODY7Ozs7Tjs7Ozs7CitGOUJCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUJCO0xvOzA7TDs1MERBOzs7O047Ozs7OworRjlCQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCQztMbzswO0w7NUJFRTs7OztOOzs7OzsKK0Y5QkQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QkQ7TG87MDtMOzVDM0Y7Ozs7Tjs7Ozs7CitGOUJFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUJFO0xvOzA7TDs2NTk5Ozs7O047Ozs7OworRjlCRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCRjtMbzswO0w7NkEwMjs7OztOOzs7OzsKK0Y5QzA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QzA7TG87MDtMOzcxQ0U7Ozs7Tjs7Ozs7CitGOUMxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUMxO0xvOzA7TDs3NjQyOzs7O047Ozs7OworRjlDMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDMjtMbzswO0w7ODRGQzs7OztOOzs7OzsKK0Y5QzM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QzM7TG87MDtMOzkwN0M7Ozs7Tjs7Ozs7CitGOUM0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUM0O0xvOzA7TDs5RjhEOzs7O047Ozs7OworRjlDNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDNTtMbzswO0w7NjY4ODs7OztOOzs7OzsKK0Y5QzY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QzY7TG87MDtMOzk2MkU7Ozs7Tjs7Ozs7CitGOUM3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUM3O0xvOzA7TDs1Mjg5Ozs7O047Ozs7OworRjlDODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDODtMbzswO0w7Njc3Qjs7OztOOzs7OzsKK0Y5Qzk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Qzk7TG87MDtMOzY3RjM7Ozs7Tjs7Ozs7CitGOUNBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUNBO0xvOzA7TDs2RDQxOzs7O047Ozs7OworRjlDQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDQjtMbzswO0w7NkU5Qzs7OztOOzs7OzsKK0Y5Q0M7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Q0M7TG87MDtMOzc0MDk7Ozs7Tjs7Ozs7CitGOUNEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUNEO0xvOzA7TDs3NTU5Ozs7O047Ozs7OworRjlDRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDRTtMbzswO0w7Nzg2Qjs7OztOOzs7OzsKK0Y5Q0Y7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Q0Y7TG87MDtMOzdEMTA7Ozs7Tjs7Ozs7CitGOUQwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUQwO0xvOzA7TDs5ODVFOzs7O047Ozs7OworRjlEMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEMTtMbzswO0w7NTE2RDs7OztOOzs7OzsKK0Y5RDI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RDI7TG87MDtMOzYyMkU7Ozs7Tjs7Ozs7CitGOUQzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUQzO0xvOzA7TDs5Njc4Ozs7O047Ozs7OworRjlENDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlENDtMbzswO0w7NTAyQjs7OztOOzs7OzsKK0Y5RDU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RDU7TG87MDtMOzVEMTk7Ozs7Tjs7Ozs7CitGOUQ2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUQ2O0xvOzA7TDs2REVBOzs7O047Ozs7OworRjlENztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlENztMbzswO0w7OEYyQTs7OztOOzs7OzsKK0Y5RDg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RDg7TG87MDtMOzVGOEI7Ozs7Tjs7Ozs7CitGOUQ5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUQ5O0xvOzA7TDs2MTQ0Ozs7O047Ozs7OworRjlEQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEQTtMbzswO0w7NjgxNzs7OztOOzs7OzsKK0Y5REI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5REI7TG87MDtMOzczODc7Ozs7Tjs7Ozs7CitGOURDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOURDO0xvOzA7TDs5Njg2Ozs7O047Ozs7OworRjlERDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlERDtMbzswO0w7NTIyOTs7OztOOzs7OzsKK0Y5REU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5REU7TG87MDtMOzU0MEY7Ozs7Tjs7Ozs7CitGOURGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOURGO0xvOzA7TDs1QzY1Ozs7O047Ozs7OworRjlFMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFMDtMbzswO0w7NjYxMzs7OztOOzs7OzsKK0Y5RTE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RTE7TG87MDtMOzY3NEU7Ozs7Tjs7Ozs7CitGOUUyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUUyO0xvOzA7TDs2OEE4Ozs7O047Ozs7OworRjlFMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFMztMbzswO0w7NkNFNTs7OztOOzs7OzsKK0Y5RTQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RTQ7TG87MDtMOzc0MDY7Ozs7Tjs7Ozs7CitGOUU1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUU1O0xvOzA7TDs3NUUyOzs7O047Ozs7OworRjlFNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFNjtMbzswO0w7N0Y3OTs7OztOOzs7OzsKK0Y5RTc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RTc7TG87MDtMOzg4Q0Y7Ozs7Tjs7Ozs7CitGOUU4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUU4O0xvOzA7TDs4OEUxOzs7O047Ozs7OworRjlFOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFOTtMbzswO0w7OTFDQzs7OztOOzs7OzsKK0Y5RUE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RUE7TG87MDtMOzk2RTI7Ozs7Tjs7Ozs7CitGOUVCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUVCO0xvOzA7TDs1MzNGOzs7O047Ozs7OworRjlFQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFQztMbzswO0w7NkVCQTs7OztOOzs7OzsKK0Y5RUQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RUQ7TG87MDtMOzU0MUQ7Ozs7Tjs7Ozs7CitGOUVFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUVFO0xvOzA7TDs3MUQwOzs7O047Ozs7OworRjlFRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFRjtMbzswO0w7NzQ5ODs7OztOOzs7OzsKK0Y5RjA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RjA7TG87MDtMOzg1RkE7Ozs7Tjs7Ozs7CitGOUYxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUYxO0xvOzA7TDs5NkEzOzs7O047Ozs7OworRjlGMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGMjtMbzswO0w7OUM1Nzs7OztOOzs7OzsKK0Y5RjM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RjM7TG87MDtMOzlFOUY7Ozs7Tjs7Ozs7CitGOUY0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUY0O0xvOzA7TDs2Nzk3Ozs7O047Ozs7OworRjlGNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGNTtMbzswO0w7NkRDQjs7OztOOzs7OzsKK0Y5RjY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RjY7TG87MDtMOzgxRTg7Ozs7Tjs7Ozs7CitGOUY3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUY3O0xvOzA7TDs3QUNCOzs7O047Ozs7OworRjlGODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGODtMbzswO0w7N0IyMDs7OztOOzs7OzsKK0Y5Rjk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Rjk7TG87MDtMOzdDOTI7Ozs7Tjs7Ozs7CitGOUZBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUZBO0xvOzA7TDs3MkMwOzs7O047Ozs7OworRjlGQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGQjtMbzswO0w7NzA5OTs7OztOOzs7OzsKK0Y5RkM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RkM7TG87MDtMOzhCNTg7Ozs7Tjs7Ozs7CitGOUZEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUZEO0xvOzA7TDs0RUMwOzs7O047Ozs7OworRjlGRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGRTtMbzswO0w7ODMzNjs7OztOOzs7OzsKK0Y5RkY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RkY7TG87MDtMOzUyM0E7Ozs7Tjs7Ozs7CitGQTAwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTAwO0xvOzA7TDs1MjA3Ozs7O047Ozs7OworRkEwMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwMTtMbzswO0w7NUVBNjs7OztOOzs7OzsKK0ZBMDI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMDI7TG87MDtMOzYyRDM7Ozs7Tjs7Ozs7CitGQTAzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTAzO0xvOzA7TDs3Q0Q2Ozs7O047Ozs7OworRkEwNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwNDtMbzswO0w7NUI4NTs7OztOOzs7OzsKK0ZBMDU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMDU7TG87MDtMOzZEMUU7Ozs7Tjs7Ozs7CitGQTA2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTA2O0xvOzA7TDs2NkI0Ozs7O047Ozs7OworRkEwNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwNztMbzswO0w7OEYzQjs7OztOOzs7OzsKK0ZBMDg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMDg7TG87MDtMOzg4NEM7Ozs7Tjs7Ozs7CitGQTA5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTA5O0xvOzA7TDs5NjREOzs7O047Ozs7OworRkEwQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwQTtMbzswO0w7ODk4Qjs7OztOOzs7OzsKK0ZBMEI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMEI7TG87MDtMOzVFRDM7Ozs7Tjs7Ozs7CitGQTBDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTBDO0xvOzA7TDs1MTQwOzs7O047Ozs7OworRkEwRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwRDtMbzswO0w7NTVDMDs7OztOOzs7OzsKK0ZBMEU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMEU7TG87MDtMOzs7OztOOzs7OzsKK0ZBMEY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMEY7TG87MDtMOzs7OztOOzs7OzsKK0ZBMTA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMTA7TG87MDtMOzU4NUE7Ozs7Tjs7Ozs7CitGQTExO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTExO0xvOzA7TDs7Ozs7Tjs7Ozs7CitGQTEyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTEyO0xvOzA7TDs2Njc0Ozs7O047Ozs7OworRkExMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExMztMbzswO0w7Ozs7O047Ozs7OworRkExNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExNDtMbzswO0w7Ozs7O047Ozs7OworRkExNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExNTtMbzswO0w7NTFERTs7OztOOzs7OzsKK0ZBMTY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMTY7TG87MDtMOzczMkE7Ozs7Tjs7Ozs7CitGQTE3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTE3O0xvOzA7TDs3NkNBOzs7O047Ozs7OworRkExODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExODtMbzswO0w7NzkzQzs7OztOOzs7OzsKK0ZBMTk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMTk7TG87MDtMOzc5NUU7Ozs7Tjs7Ozs7CitGQTFBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTFBO0xvOzA7TDs3OTY1Ozs7O047Ozs7OworRkExQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExQjtMbzswO0w7Nzk4Rjs7OztOOzs7OzsKK0ZBMUM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMUM7TG87MDtMOzk3NTY7Ozs7Tjs7Ozs7CitGQTFEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTFEO0xvOzA7TDs3Q0JFOzs7O047Ozs7OworRkExRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExRTtMbzswO0w7N0ZCRDs7OztOOzs7OzsKK0ZBMUY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMUY7TG87MDtMOzs7OztOOzs7OzsKK0ZBMjA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMjA7TG87MDtMOzg2MTI7Ozs7Tjs7Ozs7CitGQTIxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTIxO0xvOzA7TDs7Ozs7Tjs7Ozs7CitGQTIyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTIyO0xvOzA7TDs4QUY4Ozs7O047Ozs7OworRkEyMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyMztMbzswO0w7Ozs7O047Ozs7OworRkEyNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyNDtMbzswO0w7Ozs7O047Ozs7OworRkEyNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyNTtMbzswO0w7OTAzODs7OztOOzs7OzsKK0ZBMjY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMjY7TG87MDtMOzkwRkQ7Ozs7Tjs7Ozs7CitGQTI3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTI3O0xvOzA7TDs7Ozs7Tjs7Ozs7CitGQTI4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTI4O0xvOzA7TDs7Ozs7Tjs7Ozs7CitGQTI5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTI5O0xvOzA7TDs7Ozs7Tjs7Ozs7CitGQTJBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTJBO0xvOzA7TDs5OEVGOzs7O047Ozs7OworRkEyQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyQjtMbzswO0w7OThGQzs7OztOOzs7OzsKK0ZBMkM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMkM7TG87MDtMOzk5Mjg7Ozs7Tjs7Ozs7CitGQTJEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTJEO0xvOzA7TDs5REI0Ozs7O047Ozs7OworRkIwMDtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGRjtMbDswO0w7PGNvbXBhdD4gMDA2NiAwMDY2Ozs7O047Ozs7OworRkIwMTtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGSTtMbDswO0w7PGNvbXBhdD4gMDA2NiAwMDY5Ozs7O047Ozs7OworRkIwMjtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGTDtMbDswO0w7PGNvbXBhdD4gMDA2NiAwMDZDOzs7O047Ozs7OworRkIwMztMQVRJTiBTTUFMTCBMSUdBVFVSRSBGRkk7TGw7MDtMOzxjb21wYXQ+IDAwNjYgMDA2NiAwMDY5Ozs7O047Ozs7OworRkIwNDtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGRkw7TGw7MDtMOzxjb21wYXQ+IDAwNjYgMDA2NiAwMDZDOzs7O047Ozs7OworRkIwNTtMQVRJTiBTTUFMTCBMSUdBVFVSRSBMT05HIFMgVDtMbDswO0w7PGNvbXBhdD4gMDE3RiAwMDc0Ozs7O047Ozs7OworRkIwNjtMQVRJTiBTTUFMTCBMSUdBVFVSRSBTVDtMbDswO0w7PGNvbXBhdD4gMDA3MyAwMDc0Ozs7O047Ozs7OworRkIxMztBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBNRU4gTk9XO0xsOzA7TDs8Y29tcGF0PiAwNTc0IDA1NzY7Ozs7Tjs7Ozs7CitGQjE0O0FSTUVOSUFOIFNNQUxMIExJR0FUVVJFIE1FTiBFQ0g7TGw7MDtMOzxjb21wYXQ+IDA1NzQgMDU2NTs7OztOOzs7OzsKK0ZCMTU7QVJNRU5JQU4gU01BTEwgTElHQVRVUkUgTUVOIElOSTtMbDswO0w7PGNvbXBhdD4gMDU3NCAwNTZCOzs7O047Ozs7OworRkIxNjtBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBWRVcgTk9XO0xsOzA7TDs8Y29tcGF0PiAwNTdFIDA1NzY7Ozs7Tjs7Ozs7CitGQjE3O0FSTUVOSUFOIFNNQUxMIExJR0FUVVJFIE1FTiBYRUg7TGw7MDtMOzxjb21wYXQ+IDA1NzQgMDU2RDs7OztOOzs7OzsKK0ZCMUU7SEVCUkVXIFBPSU5UIEpVREVPLVNQQU5JU0ggVkFSSUtBO01uOzI2O09OOzs7OztOO0hFQlJFVyBQT0lOVCBWQVJJS0E7Ozs7CitGQjFGO0hFQlJFVyBMSUdBVFVSRSBZSURESVNIIFlPRCBZT0QgUEFUQUg7TG87MDtSOzA1RjIgMDVCNzs7OztOOzs7OzsKK0ZCMjA7SEVCUkVXIExFVFRFUiBBTFRFUk5BVElWRSBBWUlOO0xvOzA7Ujs8Zm9udD4gMDVFMjs7OztOOzs7OzsKK0ZCMjE7SEVCUkVXIExFVFRFUiBXSURFIEFMRUY7TG87MDtSOzxmb250PiAwNUQwOzs7O047Ozs7OworRkIyMjtIRUJSRVcgTEVUVEVSIFdJREUgREFMRVQ7TG87MDtSOzxmb250PiAwNUQzOzs7O047Ozs7OworRkIyMztIRUJSRVcgTEVUVEVSIFdJREUgSEU7TG87MDtSOzxmb250PiAwNUQ0Ozs7O047Ozs7OworRkIyNDtIRUJSRVcgTEVUVEVSIFdJREUgS0FGO0xvOzA7Ujs8Zm9udD4gMDVEQjs7OztOOzs7OzsKK0ZCMjU7SEVCUkVXIExFVFRFUiBXSURFIExBTUVEO0xvOzA7Ujs8Zm9udD4gMDVEQzs7OztOOzs7OzsKK0ZCMjY7SEVCUkVXIExFVFRFUiBXSURFIEZJTkFMIE1FTTtMbzswO1I7PGZvbnQ+IDA1REQ7Ozs7Tjs7Ozs7CitGQjI3O0hFQlJFVyBMRVRURVIgV0lERSBSRVNIO0xvOzA7Ujs8Zm9udD4gMDVFODs7OztOOzs7OzsKK0ZCMjg7SEVCUkVXIExFVFRFUiBXSURFIFRBVjtMbzswO1I7PGZvbnQ+IDA1RUE7Ozs7Tjs7Ozs7CitGQjI5O0hFQlJFVyBMRVRURVIgQUxURVJOQVRJVkUgUExVUyBTSUdOO1NtOzA7RVQ7PGZvbnQ+IDAwMkI7Ozs7Tjs7Ozs7CitGQjJBO0hFQlJFVyBMRVRURVIgU0hJTiBXSVRIIFNISU4gRE9UO0xvOzA7UjswNUU5IDA1QzE7Ozs7Tjs7Ozs7CitGQjJCO0hFQlJFVyBMRVRURVIgU0hJTiBXSVRIIFNJTiBET1Q7TG87MDtSOzA1RTkgMDVDMjs7OztOOzs7OzsKK0ZCMkM7SEVCUkVXIExFVFRFUiBTSElOIFdJVEggREFHRVNIIEFORCBTSElOIERPVDtMbzswO1I7MDVFOSAwNUJDIDA1QzE7Ozs7Tjs7Ozs7CitGQjJEO0hFQlJFVyBMRVRURVIgU0hJTiBXSVRIIERBR0VTSCBBTkQgU0lOIERPVDtMbzswO1I7MDVFOSAwNUJDIDA1QzI7Ozs7Tjs7Ozs7CitGQjJFO0hFQlJFVyBMRVRURVIgQUxFRiBXSVRIIFBBVEFIO0xvOzA7UjswNUQwIDA1Qjc7Ozs7Tjs7Ozs7CitGQjJGO0hFQlJFVyBMRVRURVIgQUxFRiBXSVRIIFFBTUFUUztMbzswO1I7MDVEMCAwNUI4Ozs7O047Ozs7OworRkIzMDtIRUJSRVcgTEVUVEVSIEFMRUYgV0lUSCBNQVBJUTtMbzswO1I7MDVEMCAwNUJDOzs7O047Ozs7OworRkIzMTtIRUJSRVcgTEVUVEVSIEJFVCBXSVRIIERBR0VTSDtMbzswO1I7MDVEMSAwNUJDOzs7O047Ozs7OworRkIzMjtIRUJSRVcgTEVUVEVSIEdJTUVMIFdJVEggREFHRVNIO0xvOzA7UjswNUQyIDA1QkM7Ozs7Tjs7Ozs7CitGQjMzO0hFQlJFVyBMRVRURVIgREFMRVQgV0lUSCBEQUdFU0g7TG87MDtSOzA1RDMgMDVCQzs7OztOOzs7OzsKK0ZCMzQ7SEVCUkVXIExFVFRFUiBIRSBXSVRIIE1BUElRO0xvOzA7UjswNUQ0IDA1QkM7Ozs7Tjs7Ozs7CitGQjM1O0hFQlJFVyBMRVRURVIgVkFWIFdJVEggREFHRVNIO0xvOzA7UjswNUQ1IDA1QkM7Ozs7Tjs7Ozs7CitGQjM2O0hFQlJFVyBMRVRURVIgWkFZSU4gV0lUSCBEQUdFU0g7TG87MDtSOzA1RDYgMDVCQzs7OztOOzs7OzsKK0ZCMzg7SEVCUkVXIExFVFRFUiBURVQgV0lUSCBEQUdFU0g7TG87MDtSOzA1RDggMDVCQzs7OztOOzs7OzsKK0ZCMzk7SEVCUkVXIExFVFRFUiBZT0QgV0lUSCBEQUdFU0g7TG87MDtSOzA1RDkgMDVCQzs7OztOOzs7OzsKK0ZCM0E7SEVCUkVXIExFVFRFUiBGSU5BTCBLQUYgV0lUSCBEQUdFU0g7TG87MDtSOzA1REEgMDVCQzs7OztOOzs7OzsKK0ZCM0I7SEVCUkVXIExFVFRFUiBLQUYgV0lUSCBEQUdFU0g7TG87MDtSOzA1REIgMDVCQzs7OztOOzs7OzsKK0ZCM0M7SEVCUkVXIExFVFRFUiBMQU1FRCBXSVRIIERBR0VTSDtMbzswO1I7MDVEQyAwNUJDOzs7O047Ozs7OworRkIzRTtIRUJSRVcgTEVUVEVSIE1FTSBXSVRIIERBR0VTSDtMbzswO1I7MDVERSAwNUJDOzs7O047Ozs7OworRkI0MDtIRUJSRVcgTEVUVEVSIE5VTiBXSVRIIERBR0VTSDtMbzswO1I7MDVFMCAwNUJDOzs7O047Ozs7OworRkI0MTtIRUJSRVcgTEVUVEVSIFNBTUVLSCBXSVRIIERBR0VTSDtMbzswO1I7MDVFMSAwNUJDOzs7O047Ozs7OworRkI0MztIRUJSRVcgTEVUVEVSIEZJTkFMIFBFIFdJVEggREFHRVNIO0xvOzA7UjswNUUzIDA1QkM7Ozs7Tjs7Ozs7CitGQjQ0O0hFQlJFVyBMRVRURVIgUEUgV0lUSCBEQUdFU0g7TG87MDtSOzA1RTQgMDVCQzs7OztOOzs7OzsKK0ZCNDY7SEVCUkVXIExFVFRFUiBUU0FESSBXSVRIIERBR0VTSDtMbzswO1I7MDVFNiAwNUJDOzs7O047Ozs7OworRkI0NztIRUJSRVcgTEVUVEVSIFFPRiBXSVRIIERBR0VTSDtMbzswO1I7MDVFNyAwNUJDOzs7O047Ozs7OworRkI0ODtIRUJSRVcgTEVUVEVSIFJFU0ggV0lUSCBEQUdFU0g7TG87MDtSOzA1RTggMDVCQzs7OztOOzs7OzsKK0ZCNDk7SEVCUkVXIExFVFRFUiBTSElOIFdJVEggREFHRVNIO0xvOzA7UjswNUU5IDA1QkM7Ozs7Tjs7Ozs7CitGQjRBO0hFQlJFVyBMRVRURVIgVEFWIFdJVEggREFHRVNIO0xvOzA7UjswNUVBIDA1QkM7Ozs7Tjs7Ozs7CitGQjRCO0hFQlJFVyBMRVRURVIgVkFWIFdJVEggSE9MQU07TG87MDtSOzA1RDUgMDVCOTs7OztOOzs7OzsKK0ZCNEM7SEVCUkVXIExFVFRFUiBCRVQgV0lUSCBSQUZFO0xvOzA7UjswNUQxIDA1QkY7Ozs7Tjs7Ozs7CitGQjREO0hFQlJFVyBMRVRURVIgS0FGIFdJVEggUkFGRTtMbzswO1I7MDVEQiAwNUJGOzs7O047Ozs7OworRkI0RTtIRUJSRVcgTEVUVEVSIFBFIFdJVEggUkFGRTtMbzswO1I7MDVFNCAwNUJGOzs7O047Ozs7OworRkI0RjtIRUJSRVcgTElHQVRVUkUgQUxFRiBMQU1FRDtMbzswO1I7PGNvbXBhdD4gMDVEMCAwNURDOzs7O047Ozs7OworRkI1MDtBUkFCSUMgTEVUVEVSIEFMRUYgV0FTTEEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjcxOzs7O047Ozs7OworRkI1MTtBUkFCSUMgTEVUVEVSIEFMRUYgV0FTTEEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjcxOzs7O047Ozs7OworRkI1MjtBUkFCSUMgTEVUVEVSIEJFRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjdCOzs7O047Ozs7OworRkI1MztBUkFCSUMgTEVUVEVSIEJFRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjdCOzs7O047Ozs7OworRkI1NDtBUkFCSUMgTEVUVEVSIEJFRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY3Qjs7OztOOzs7OzsKK0ZCNTU7QVJBQklDIExFVFRFUiBCRUVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjdCOzs7O047Ozs7OworRkI1NjtBUkFCSUMgTEVUVEVSIFBFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2N0U7Ozs7Tjs7Ozs7CitGQjU3O0FSQUJJQyBMRVRURVIgUEVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY3RTs7OztOOzs7OzsKK0ZCNTg7QVJBQklDIExFVFRFUiBQRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY3RTs7OztOOzs7OzsKK0ZCNTk7QVJBQklDIExFVFRFUiBQRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2N0U7Ozs7Tjs7Ozs7CitGQjVBO0FSQUJJQyBMRVRURVIgQkVIRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjgwOzs7O047Ozs7OworRkI1QjtBUkFCSUMgTEVUVEVSIEJFSEVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY4MDs7OztOOzs7OzsKK0ZCNUM7QVJBQklDIExFVFRFUiBCRUhFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjgwOzs7O047Ozs7OworRkI1RDtBUkFCSUMgTEVUVEVSIEJFSEVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjgwOzs7O047Ozs7OworRkI1RTtBUkFCSUMgTEVUVEVSIFRURUhFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2N0E7Ozs7Tjs7Ozs7CitGQjVGO0FSQUJJQyBMRVRURVIgVFRFSEVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY3QTs7OztOOzs7OzsKK0ZCNjA7QVJBQklDIExFVFRFUiBUVEVIRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY3QTs7OztOOzs7OzsKK0ZCNjE7QVJBQklDIExFVFRFUiBUVEVIRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2N0E7Ozs7Tjs7Ozs7CitGQjYyO0FSQUJJQyBMRVRURVIgVEVIRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjdGOzs7O047Ozs7OworRkI2MztBUkFCSUMgTEVUVEVSIFRFSEVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY3Rjs7OztOOzs7OzsKK0ZCNjQ7QVJBQklDIExFVFRFUiBURUhFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjdGOzs7O047Ozs7OworRkI2NTtBUkFCSUMgTEVUVEVSIFRFSEVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjdGOzs7O047Ozs7OworRkI2NjtBUkFCSUMgTEVUVEVSIFRURUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjc5Ozs7O047Ozs7OworRkI2NztBUkFCSUMgTEVUVEVSIFRURUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjc5Ozs7O047Ozs7OworRkI2ODtBUkFCSUMgTEVUVEVSIFRURUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY3OTs7OztOOzs7OzsKK0ZCNjk7QVJBQklDIExFVFRFUiBUVEVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjc5Ozs7O047Ozs7OworRkI2QTtBUkFCSUMgTEVUVEVSIFZFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2QTQ7Ozs7Tjs7Ozs7CitGQjZCO0FSQUJJQyBMRVRURVIgVkVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZBNDs7OztOOzs7OzsKK0ZCNkM7QVJBQklDIExFVFRFUiBWRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDZBNDs7OztOOzs7OzsKK0ZCNkQ7QVJBQklDIExFVFRFUiBWRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2QTQ7Ozs7Tjs7Ozs7CitGQjZFO0FSQUJJQyBMRVRURVIgUEVIRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkE2Ozs7O047Ozs7OworRkI2RjtBUkFCSUMgTEVUVEVSIFBFSEVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZBNjs7OztOOzs7OzsKK0ZCNzA7QVJBQklDIExFVFRFUiBQRUhFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNkE2Ozs7O047Ozs7OworRkI3MTtBUkFCSUMgTEVUVEVSIFBFSEVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNkE2Ozs7O047Ozs7OworRkI3MjtBUkFCSUMgTEVUVEVSIERZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjg0Ozs7O047Ozs7OworRkI3MztBUkFCSUMgTEVUVEVSIERZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjg0Ozs7O047Ozs7OworRkI3NDtBUkFCSUMgTEVUVEVSIERZRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY4NDs7OztOOzs7OzsKK0ZCNzU7QVJBQklDIExFVFRFUiBEWUVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjg0Ozs7O047Ozs7OworRkI3NjtBUkFCSUMgTEVUVEVSIE5ZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjgzOzs7O047Ozs7OworRkI3NztBUkFCSUMgTEVUVEVSIE5ZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjgzOzs7O047Ozs7OworRkI3ODtBUkFCSUMgTEVUVEVSIE5ZRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY4Mzs7OztOOzs7OzsKK0ZCNzk7QVJBQklDIExFVFRFUiBOWUVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjgzOzs7O047Ozs7OworRkI3QTtBUkFCSUMgTEVUVEVSIFRDSEVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY4Njs7OztOOzs7OzsKK0ZCN0I7QVJBQklDIExFVFRFUiBUQ0hFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2ODY7Ozs7Tjs7Ozs7CitGQjdDO0FSQUJJQyBMRVRURVIgVENIRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY4Njs7OztOOzs7OzsKK0ZCN0Q7QVJBQklDIExFVFRFUiBUQ0hFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY4Njs7OztOOzs7OzsKK0ZCN0U7QVJBQklDIExFVFRFUiBUQ0hFSEVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY4Nzs7OztOOzs7OzsKK0ZCN0Y7QVJBQklDIExFVFRFUiBUQ0hFSEVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY4Nzs7OztOOzs7OzsKK0ZCODA7QVJBQklDIExFVFRFUiBUQ0hFSEVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2ODc7Ozs7Tjs7Ozs7CitGQjgxO0FSQUJJQyBMRVRURVIgVENIRUhFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY4Nzs7OztOOzs7OzsKK0ZCODI7QVJBQklDIExFVFRFUiBEREFIQUwgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjhEOzs7O047Ozs7OworRkI4MztBUkFCSUMgTEVUVEVSIEREQUhBTCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2OEQ7Ozs7Tjs7Ozs7CitGQjg0O0FSQUJJQyBMRVRURVIgREFIQUwgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjhDOzs7O047Ozs7OworRkI4NTtBUkFCSUMgTEVUVEVSIERBSEFMIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY4Qzs7OztOOzs7OzsKK0ZCODY7QVJBQklDIExFVFRFUiBEVUwgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjhFOzs7O047Ozs7OworRkI4NztBUkFCSUMgTEVUVEVSIERVTCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2OEU7Ozs7Tjs7Ozs7CitGQjg4O0FSQUJJQyBMRVRURVIgRERBTCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2ODg7Ozs7Tjs7Ozs7CitGQjg5O0FSQUJJQyBMRVRURVIgRERBTCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2ODg7Ozs7Tjs7Ozs7CitGQjhBO0FSQUJJQyBMRVRURVIgSkVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY5ODs7OztOOzs7OzsKK0ZCOEI7QVJBQklDIExFVFRFUiBKRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjk4Ozs7O047Ozs7OworRkI4QztBUkFCSUMgTEVUVEVSIFJSRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjkxOzs7O047Ozs7OworRkI4RDtBUkFCSUMgTEVUVEVSIFJSRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjkxOzs7O047Ozs7OworRkI4RTtBUkFCSUMgTEVUVEVSIEtFSEVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZBOTs7OztOOzs7OzsKK0ZCOEY7QVJBQklDIExFVFRFUiBLRUhFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2QTk7Ozs7Tjs7Ozs7CitGQjkwO0FSQUJJQyBMRVRURVIgS0VIRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDZBOTs7OztOOzs7OzsKK0ZCOTE7QVJBQklDIExFVFRFUiBLRUhFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDZBOTs7OztOOzs7OzsKK0ZCOTI7QVJBQklDIExFVFRFUiBHQUYgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkFGOzs7O047Ozs7OworRkI5MztBUkFCSUMgTEVUVEVSIEdBRiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2QUY7Ozs7Tjs7Ozs7CitGQjk0O0FSQUJJQyBMRVRURVIgR0FGIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2QUY7Ozs7Tjs7Ozs7CitGQjk1O0FSQUJJQyBMRVRURVIgR0FGIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNkFGOzs7O047Ozs7OworRkI5NjtBUkFCSUMgTEVUVEVSIEdVRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkIzOzs7O047Ozs7OworRkI5NztBUkFCSUMgTEVUVEVSIEdVRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkIzOzs7O047Ozs7OworRkI5ODtBUkFCSUMgTEVUVEVSIEdVRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDZCMzs7OztOOzs7OzsKK0ZCOTk7QVJBQklDIExFVFRFUiBHVUVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNkIzOzs7O047Ozs7OworRkI5QTtBUkFCSUMgTEVUVEVSIE5HT0VIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZCMTs7OztOOzs7OzsKK0ZCOUI7QVJBQklDIExFVFRFUiBOR09FSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2QjE7Ozs7Tjs7Ozs7CitGQjlDO0FSQUJJQyBMRVRURVIgTkdPRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDZCMTs7OztOOzs7OzsKK0ZCOUQ7QVJBQklDIExFVFRFUiBOR09FSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDZCMTs7OztOOzs7OzsKK0ZCOUU7QVJBQklDIExFVFRFUiBOT09OIEdIVU5OQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2QkE7Ozs7Tjs7Ozs7CitGQjlGO0FSQUJJQyBMRVRURVIgTk9PTiBHSFVOTkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkJBOzs7O047Ozs7OworRkJBMDtBUkFCSUMgTEVUVEVSIFJOT09OIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZCQjs7OztOOzs7OzsKK0ZCQTE7QVJBQklDIExFVFRFUiBSTk9PTiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2QkI7Ozs7Tjs7Ozs7CitGQkEyO0FSQUJJQyBMRVRURVIgUk5PT04gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDZCQjs7OztOOzs7OzsKK0ZCQTM7QVJBQklDIExFVFRFUiBSTk9PTiBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDZCQjs7OztOOzs7OzsKK0ZCQTQ7QVJBQklDIExFVFRFUiBIRUggV0lUSCBZRUggQUJPVkUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkMwOzs7O047Ozs7OworRkJBNTtBUkFCSUMgTEVUVEVSIEhFSCBXSVRIIFlFSCBBQk9WRSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2QzA7Ozs7Tjs7Ozs7CitGQkE2O0FSQUJJQyBMRVRURVIgSEVIIEdPQUwgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkMxOzs7O047Ozs7OworRkJBNztBUkFCSUMgTEVUVEVSIEhFSCBHT0FMIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZDMTs7OztOOzs7OzsKK0ZCQTg7QVJBQklDIExFVFRFUiBIRUggR09BTCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNkMxOzs7O047Ozs7OworRkJBOTtBUkFCSUMgTEVUVEVSIEhFSCBHT0FMIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNkMxOzs7O047Ozs7OworRkJBQTtBUkFCSUMgTEVUVEVSIEhFSCBET0FDSEFTSE1FRSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2QkU7Ozs7Tjs7Ozs7CitGQkFCO0FSQUJJQyBMRVRURVIgSEVIIERPQUNIQVNITUVFIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZCRTs7OztOOzs7OzsKK0ZCQUM7QVJBQklDIExFVFRFUiBIRUggRE9BQ0hBU0hNRUUgSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDZCRTs7OztOOzs7OzsKK0ZCQUQ7QVJBQklDIExFVFRFUiBIRUggRE9BQ0hBU0hNRUUgTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2QkU7Ozs7Tjs7Ozs7CitGQkFFO0FSQUJJQyBMRVRURVIgWUVIIEJBUlJFRSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2RDI7Ozs7Tjs7Ozs7CitGQkFGO0FSQUJJQyBMRVRURVIgWUVIIEJBUlJFRSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2RDI7Ozs7Tjs7Ozs7CitGQkIwO0FSQUJJQyBMRVRURVIgWUVIIEJBUlJFRSBXSVRIIEhBTVpBIEFCT1ZFIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZEMzs7OztOOzs7OzsKK0ZCQjE7QVJBQklDIExFVFRFUiBZRUggQkFSUkVFIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkQzOzs7O047Ozs7OworRkJEMztBUkFCSUMgTEVUVEVSIE5HIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZBRDs7OztOOzs7OzsKK0ZCRDQ7QVJBQklDIExFVFRFUiBORyBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2QUQ7Ozs7Tjs7Ozs7CitGQkQ1O0FSQUJJQyBMRVRURVIgTkcgSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDZBRDs7OztOOzs7OzsKK0ZCRDY7QVJBQklDIExFVFRFUiBORyBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDZBRDs7OztOOzs7OzsKK0ZCRDc7QVJBQklDIExFVFRFUiBVIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZDNzs7OztOOzs7OzsKK0ZCRDg7QVJBQklDIExFVFRFUiBVIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZDNzs7OztOOzs7OzsKK0ZCRDk7QVJBQklDIExFVFRFUiBPRSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2QzY7Ozs7Tjs7Ozs7CitGQkRBO0FSQUJJQyBMRVRURVIgT0UgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkM2Ozs7O047Ozs7OworRkJEQjtBUkFCSUMgTEVUVEVSIFlVIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZDODs7OztOOzs7OzsKK0ZCREM7QVJBQklDIExFVFRFUiBZVSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2Qzg7Ozs7Tjs7Ozs7CitGQkREO0FSQUJJQyBMRVRURVIgVSBXSVRIIEhBTVpBIEFCT1ZFIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY3Nzs7OztOOzs7OzsKK0ZCREU7QVJBQklDIExFVFRFUiBWRSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2Q0I7Ozs7Tjs7Ozs7CitGQkRGO0FSQUJJQyBMRVRURVIgVkUgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkNCOzs7O047Ozs7OworRkJFMDtBUkFCSUMgTEVUVEVSIEtJUkdISVogT0UgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkM1Ozs7O047Ozs7OworRkJFMTtBUkFCSUMgTEVUVEVSIEtJUkdISVogT0UgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkM1Ozs7O047Ozs7OworRkJFMjtBUkFCSUMgTEVUVEVSIEtJUkdISVogWVUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkM5Ozs7O047Ozs7OworRkJFMztBUkFCSUMgTEVUVEVSIEtJUkdISVogWVUgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkM5Ozs7O047Ozs7OworRkJFNDtBUkFCSUMgTEVUVEVSIEUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkQwOzs7O047Ozs7OworRkJFNTtBUkFCSUMgTEVUVEVSIEUgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkQwOzs7O047Ozs7OworRkJFNjtBUkFCSUMgTEVUVEVSIEUgSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDZEMDs7OztOOzs7OzsKK0ZCRTc7QVJBQklDIExFVFRFUiBFIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNkQwOzs7O047Ozs7OworRkJFODtBUkFCSUMgTEVUVEVSIFVJR0hVUiBLQVpBS0ggS0lSR0hJWiBBTEVGIE1BS1NVUkEgSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0OTs7OztOOzs7OzsKK0ZCRTk7QVJBQklDIExFVFRFUiBVSUdIVVIgS0FaQUtIIEtJUkdISVogQUxFRiBNQUtTVVJBIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQ5Ozs7O047Ozs7OworRkJFQTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBTEVGIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyNiAwNjI3Ozs7O047Ozs7OworRkJFQjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBTEVGIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyNiAwNjI3Ozs7O047Ozs7OworRkJFQztBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBRSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjYgMDZENTs7OztOOzs7OzsKK0ZCRUQ7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUUgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI2IDA2RDU7Ozs7Tjs7Ozs7CitGQkVFO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFdBVyBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjYgMDY0ODs7OztOOzs7OzsKK0ZCRUY7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggV0FXIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyNiAwNjQ4Ozs7O047Ozs7OworRkJGMDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBVIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyNiAwNkM3Ozs7O047Ozs7OworRkJGMTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBVIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyNiAwNkM3Ozs7O047Ozs7OworRkJGMjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBPRSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjYgMDZDNjs7OztOOzs7OzsKK0ZCRjM7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggT0UgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI2IDA2QzY7Ozs7Tjs7Ozs7CitGQkY0O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFlVIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyNiAwNkM4Ozs7O047Ozs7OworRkJGNTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBZVSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjYgMDZDODs7OztOOzs7OzsKK0ZCRjY7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggRSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjYgMDZEMDs7OztOOzs7OzsKK0ZCRjc7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggRSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjYgMDZEMDs7OztOOzs7OzsKK0ZCRjg7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggRSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjI2IDA2RDA7Ozs7Tjs7Ozs7CitGQkY5O0FSQUJJQyBMSUdBVFVSRSBVSUdIVVIgS0lSR0hJWiBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjYgMDY0OTs7OztOOzs7OzsKK0ZCRkE7QVJBQklDIExJR0FUVVJFIFVJR0hVUiBLSVJHSElaIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyNiAwNjQ5Ozs7O047Ozs7OworRkJGQjtBUkFCSUMgTElHQVRVUkUgVUlHSFVSIEtJUkdISVogWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBTEVGIE1BS1NVUkEgSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyNiAwNjQ5Ozs7O047Ozs7OworRkJGQztBUkFCSUMgTEVUVEVSIEZBUlNJIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2Q0M7Ozs7Tjs7Ozs7CitGQkZEO0FSQUJJQyBMRVRURVIgRkFSU0kgWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZDQzs7OztOOzs7OzsKK0ZCRkU7QVJBQklDIExFVFRFUiBGQVJTSSBZRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDZDQzs7OztOOzs7OzsKK0ZCRkY7QVJBQklDIExFVFRFUiBGQVJTSSBZRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2Q0M7Ozs7Tjs7Ozs7CitGQzAwO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI2IDA2MkM7Ozs7Tjs7Ozs7CitGQzAxO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjYgMDYyRDs7OztOOzs7OzsKK0ZDMDI7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjYgMDY0NTs7OztOOzs7OzsKK0ZDMDM7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyNiAwNjQ5Ozs7O047Ozs7OworRkMwNDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI2IDA2NEE7Ozs7Tjs7Ozs7CitGQzA1O0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyOCAwNjJDOzs7O047Ozs7OworRkMwNjtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyOCAwNjJEOzs7O047Ozs7OworRkMwNztBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjggMDYyRTs7OztOOzs7OzsKK0ZDMDg7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI4IDA2NDU7Ozs7Tjs7Ozs7CitGQzA5O0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI4IDA2NDk7Ozs7Tjs7Ozs7CitGQzBBO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI4IDA2NEE7Ozs7Tjs7Ozs7CitGQzBCO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyQSAwNjJDOzs7O047Ozs7OworRkMwQztBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyQSAwNjJEOzs7O047Ozs7OworRkMwRDtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkEgMDYyRTs7OztOOzs7OzsKK0ZDMEU7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJBIDA2NDU7Ozs7Tjs7Ozs7CitGQzBGO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJBIDA2NDk7Ozs7Tjs7Ozs7CitGQzEwO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJBIDA2NEE7Ozs7Tjs7Ozs7CitGQzExO0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkIgMDYyQzs7OztOOzs7OzsKK0ZDMTI7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyQiAwNjQ1Ozs7O047Ozs7OworRkMxMztBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkIgMDY0OTs7OztOOzs7OzsKK0ZDMTQ7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJCIDA2NEE7Ozs7Tjs7Ozs7CitGQzE1O0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyQyAwNjJEOzs7O047Ozs7OworRkMxNjtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGQzE3O0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyRCAwNjJDOzs7O047Ozs7OworRkMxODtBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkQgMDY0NTs7OztOOzs7OzsKK0ZDMTk7QVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyRSAwNjJDOzs7O047Ozs7OworRkMxQTtBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkUgMDYyRDs7OztOOzs7OzsKK0ZDMUI7QVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyRSAwNjQ1Ozs7O047Ozs7OworRkMxQztBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjMzIDA2MkM7Ozs7Tjs7Ozs7CitGQzFEO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzMyAwNjJEOzs7O047Ozs7OworRkMxRTtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjMzIDA2MkU7Ozs7Tjs7Ozs7CitGQzFGO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzMgMDY0NTs7OztOOzs7OzsKK0ZDMjA7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzUgMDYyRDs7OztOOzs7OzsKK0ZDMjE7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM1IDA2NDU7Ozs7Tjs7Ozs7CitGQzIyO0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNiAwNjJDOzs7O047Ozs7OworRkMyMztBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNiAwNjJEOzs7O047Ozs7OworRkMyNDtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzYgMDYyRTs7OztOOzs7OzsKK0ZDMjU7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM2IDA2NDU7Ozs7Tjs7Ozs7CitGQzI2O0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM3IDA2MkQ7Ozs7Tjs7Ozs7CitGQzI3O0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNyAwNjQ1Ozs7O047Ozs7OworRkMyODtBUkFCSUMgTElHQVRVUkUgWkFIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzggMDY0NTs7OztOOzs7OzsKK0ZDMjk7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM5IDA2MkM7Ozs7Tjs7Ozs7CitGQzJBO0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzOSAwNjQ1Ozs7O047Ozs7OworRkMyQjtBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzQSAwNjJDOzs7O047Ozs7OworRkMyQztBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzQSAwNjQ1Ozs7O047Ozs7OworRkMyRDtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDEgMDYyQzs7OztOOzs7OzsKK0ZDMkU7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDEgMDYyRDs7OztOOzs7OzsKK0ZDMkY7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQxIDA2MkU7Ozs7Tjs7Ozs7CitGQzMwO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0MSAwNjQ1Ozs7O047Ozs7OworRkMzMTtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0MSAwNjQ5Ozs7O047Ozs7OworRkMzMjtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0MSAwNjRBOzs7O047Ozs7OworRkMzMztBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0MiAwNjJEOzs7O047Ozs7OworRkMzNDtBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDIgMDY0NTs7OztOOzs7OzsKK0ZDMzU7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDIgMDY0OTs7OztOOzs7OzsKK0ZDMzY7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDIgMDY0QTs7OztOOzs7OzsKK0ZDMzc7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEFMRUYgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQzIDA2Mjc7Ozs7Tjs7Ozs7CitGQzM4O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0MyAwNjJDOzs7O047Ozs7OworRkMzOTtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0MyAwNjJEOzs7O047Ozs7OworRkMzQTtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDMgMDYyRTs7OztOOzs7OzsKK0ZDM0I7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIExBTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDMgMDY0NDs7OztOOzs7OzsKK0ZDM0M7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQzIDA2NDU7Ozs7Tjs7Ozs7CitGQzNEO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQzIDA2NDk7Ozs7Tjs7Ozs7CitGQzNFO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQzIDA2NEE7Ozs7Tjs7Ozs7CitGQzNGO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NCAwNjJDOzs7O047Ozs7OworRkM0MDtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NCAwNjJEOzs7O047Ozs7OworRkM0MTtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDQgMDYyRTs7OztOOzs7OzsKK0ZDNDI7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ0IDA2NDU7Ozs7Tjs7Ozs7CitGQzQzO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ0IDA2NDk7Ozs7Tjs7Ozs7CitGQzQ0O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ0IDA2NEE7Ozs7Tjs7Ozs7CitGQzQ1O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDUgMDYyQzs7OztOOzs7OzsKK0ZDNDY7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGQzQ3O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDUgMDYyRTs7OztOOzs7OzsKK0ZDNDg7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NSAwNjQ1Ozs7O047Ozs7OworRkM0OTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDUgMDY0OTs7OztOOzs7OzsKK0ZDNEE7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGQzRCO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDYgMDYyQzs7OztOOzs7OzsKK0ZDNEM7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ2IDA2MkQ7Ozs7Tjs7Ozs7CitGQzREO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDYgMDYyRTs7OztOOzs7OzsKK0ZDNEU7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NiAwNjQ1Ozs7O047Ozs7OworRkM0RjtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDYgMDY0OTs7OztOOzs7OzsKK0ZDNTA7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ2IDA2NEE7Ozs7Tjs7Ozs7CitGQzUxO0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NyAwNjJDOzs7O047Ozs7OworRkM1MjtBUkFCSUMgTElHQVRVUkUgSEVIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDcgMDY0NTs7OztOOzs7OzsKK0ZDNTM7QVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDcgMDY0OTs7OztOOzs7OzsKK0ZDNTQ7QVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDcgMDY0QTs7OztOOzs7OzsKK0ZDNTU7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjRBIDA2MkM7Ozs7Tjs7Ozs7CitGQzU2O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjRBIDA2MkQ7Ozs7Tjs7Ozs7CitGQzU3O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0QSAwNjJFOzs7O047Ozs7OworRkM1ODtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NEEgMDY0NTs7OztOOzs7OzsKK0ZDNTk7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NEEgMDY0OTs7OztOOzs7OzsKK0ZDNUE7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NEEgMDY0QTs7OztOOzs7OzsKK0ZDNUI7QVJBQklDIExJR0FUVVJFIFRIQUwgV0lUSCBTVVBFUlNDUklQVCBBTEVGIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzMCAwNjcwOzs7O047Ozs7OworRkM1QztBUkFCSUMgTElHQVRVUkUgUkVIIFdJVEggU1VQRVJTQ1JJUFQgQUxFRiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzEgMDY3MDs7OztOOzs7OzsKK0ZDNUQ7QVJBQklDIExJR0FUVVJFIEFMRUYgTUFLU1VSQSBXSVRIIFNVUEVSU0NSSVBUIEFMRUYgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ5IDA2NzA7Ozs7Tjs7Ozs7CitGQzVFO0FSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBEQU1NQVRBTiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDAwMjAgMDY1MSAwNjRDOzs7O047Ozs7OworRkM1RjtBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggS0FTUkFUQU4gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwMDIwIDA2NTEgMDY0RDs7OztOOzs7OzsKK0ZDNjA7QVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIEZBVEhBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDAyMCAwNjUxIDA2NEU7Ozs7Tjs7Ozs7CitGQzYxO0FSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBEQU1NQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDAwMjAgMDY1MSAwNjRGOzs7O047Ozs7OworRkM2MjtBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggS0FTUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwMDIwIDA2NTEgMDY1MDs7OztOOzs7OzsKK0ZDNjM7QVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIFNVUEVSU0NSSVBUIEFMRUYgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwMDIwIDA2NTEgMDY3MDs7OztOOzs7OzsKK0ZDNjQ7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggUkVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyNiAwNjMxOzs7O047Ozs7OworRkM2NTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBaQUlOIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyNiAwNjMyOzs7O047Ozs7OworRkM2NjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyNiAwNjQ1Ozs7O047Ozs7OworRkM2NztBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBOT09OIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyNiAwNjQ2Ozs7O047Ozs7OworRkM2ODtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI2IDA2NDk7Ozs7Tjs7Ozs7CitGQzY5O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjYgMDY0QTs7OztOOzs7OzsKK0ZDNkE7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIFJFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjggMDYzMTs7OztOOzs7OzsKK0ZDNkI7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIFpBSU4gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI4IDA2MzI7Ozs7Tjs7Ozs7CitGQzZDO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyOCAwNjQ1Ozs7O047Ozs7OworRkM2RDtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggTk9PTiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjggMDY0Njs7OztOOzs7OzsKK0ZDNkU7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjggMDY0OTs7OztOOzs7OzsKK0ZDNkY7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjggMDY0QTs7OztOOzs7OzsKK0ZDNzA7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIFJFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkEgMDYzMTs7OztOOzs7OzsKK0ZDNzE7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIFpBSU4gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJBIDA2MzI7Ozs7Tjs7Ozs7CitGQzcyO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQSAwNjQ1Ozs7O047Ozs7OworRkM3MztBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTk9PTiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkEgMDY0Njs7OztOOzs7OzsKK0ZDNzQ7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkEgMDY0OTs7OztOOzs7OzsKK0ZDNzU7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkEgMDY0QTs7OztOOzs7OzsKK0ZDNzY7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBSRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJCIDA2MzE7Ozs7Tjs7Ozs7CitGQzc3O0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggWkFJTiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkIgMDYzMjs7OztOOzs7OzsKK0ZDNzg7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQiAwNjQ1Ozs7O047Ozs7OworRkM3OTtBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIE5PT04gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJCIDA2NDY7Ozs7Tjs7Ozs7CitGQzdBO0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQiAwNjQ5Ozs7O047Ozs7OworRkM3QjtBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkIgMDY0QTs7OztOOzs7OzsKK0ZDN0M7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDEgMDY0OTs7OztOOzs7OzsKK0ZDN0Q7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDEgMDY0QTs7OztOOzs7OzsKK0ZDN0U7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDIgMDY0OTs7OztOOzs7OzsKK0ZDN0Y7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDIgMDY0QTs7OztOOzs7OzsKK0ZDODA7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEFMRUYgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQzIDA2Mjc7Ozs7Tjs7Ozs7CitGQzgxO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBMQU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQzIDA2NDQ7Ozs7Tjs7Ozs7CitGQzgyO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0MyAwNjQ1Ozs7O047Ozs7OworRkM4MztBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0MyAwNjQ5Ozs7O047Ozs7OworRkM4NDtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0MyAwNjRBOzs7O047Ozs7OworRkM4NTtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDQgMDY0NTs7OztOOzs7OzsKK0ZDODY7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDQgMDY0OTs7OztOOzs7OzsKK0ZDODc7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDQgMDY0QTs7OztOOzs7OzsKK0ZDODg7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBBTEVGIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NSAwNjI3Ozs7O047Ozs7OworRkM4OTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGQzhBO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggUkVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NiAwNjMxOzs7O047Ozs7OworRkM4QjtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIFpBSU4gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ2IDA2MzI7Ozs7Tjs7Ozs7CitGQzhDO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDYgMDY0NTs7OztOOzs7OzsKK0ZDOEQ7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBOT09OIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NiAwNjQ2Ozs7O047Ozs7OworRkM4RTtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDYgMDY0OTs7OztOOzs7OzsKK0ZDOEY7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ2IDA2NEE7Ozs7Tjs7Ozs7CitGQzkwO0FSQUJJQyBMSUdBVFVSRSBBTEVGIE1BS1NVUkEgV0lUSCBTVVBFUlNDUklQVCBBTEVGIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0OSAwNjcwOzs7O047Ozs7OworRkM5MTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggUkVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0QSAwNjMxOzs7O047Ozs7OworRkM5MjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggWkFJTiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NEEgMDYzMjs7OztOOzs7OzsKK0ZDOTM7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjRBIDA2NDU7Ozs7Tjs7Ozs7CitGQzk0O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBOT09OIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0QSAwNjQ2Ozs7O047Ozs7OworRkM5NTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0QSAwNjQ5Ozs7O047Ozs7OworRkM5NjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0QSAwNjRBOzs7O047Ozs7OworRkM5NztBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MjYgMDYyQzs7OztOOzs7OzsKK0ZDOTg7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MjYgMDYyRDs7OztOOzs7OzsKK0ZDOTk7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjI2IDA2MkU7Ozs7Tjs7Ozs7CitGQzlBO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyNiAwNjQ1Ozs7O047Ozs7OworRkM5QjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBIRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyNiAwNjQ3Ozs7O047Ozs7OworRkM5QztBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjI4IDA2MkM7Ozs7Tjs7Ozs7CitGQzlEO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyOCAwNjJEOzs7O047Ozs7OworRkM5RTtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjI4IDA2MkU7Ozs7Tjs7Ozs7CitGQzlGO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MjggMDY0NTs7OztOOzs7OzsKK0ZDQTA7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEhFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjI4IDA2NDc7Ozs7Tjs7Ozs7CitGQ0ExO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkEgMDYyQzs7OztOOzs7OzsKK0ZDQTI7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJBIDA2MkQ7Ozs7Tjs7Ozs7CitGQ0EzO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkEgMDYyRTs7OztOOzs7OzsKK0ZDQTQ7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyQSAwNjQ1Ozs7O047Ozs7OworRkNBNTtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSEVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkEgMDY0Nzs7OztOOzs7OzsKK0ZDQTY7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkIgMDY0NTs7OztOOzs7OzsKK0ZDQTc7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyQyAwNjJEOzs7O047Ozs7OworRkNBODtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyQyAwNjQ1Ozs7O047Ozs7OworRkNBOTtBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJEIDA2MkM7Ozs7Tjs7Ozs7CitGQ0FBO0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkQgMDY0NTs7OztOOzs7OzsKK0ZDQUI7QVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkUgMDYyQzs7OztOOzs7OzsKK0ZDQUM7QVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZDQUQ7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzMgMDYyQzs7OztOOzs7OzsKK0ZDQUU7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzMyAwNjJEOzs7O047Ozs7OworRkNBRjtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzMyAwNjJFOzs7O047Ozs7OworRkNCMDtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzMyAwNjQ1Ozs7O047Ozs7OworRkNCMTtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzUgMDYyRDs7OztOOzs7OzsKK0ZDQjI7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNSAwNjJFOzs7O047Ozs7OworRkNCMztBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM1IDA2NDU7Ozs7Tjs7Ozs7CitGQ0I0O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzYgMDYyQzs7OztOOzs7OzsKK0ZDQjU7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM2IDA2MkQ7Ozs7Tjs7Ozs7CitGQ0I2O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzYgMDYyRTs7OztOOzs7OzsKK0ZDQjc7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNiAwNjQ1Ozs7O047Ozs7OworRkNCODtBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzcgMDYyRDs7OztOOzs7OzsKK0ZDQjk7QVJBQklDIExJR0FUVVJFIFpBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzOCAwNjQ1Ozs7O047Ozs7OworRkNCQTtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM5IDA2MkM7Ozs7Tjs7Ozs7CitGQ0JCO0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzkgMDY0NTs7OztOOzs7OzsKK0ZDQkM7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjNBIDA2MkM7Ozs7Tjs7Ozs7CitGQ0JEO0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzQSAwNjQ1Ozs7O047Ozs7OworRkNCRTtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQxIDA2MkM7Ozs7Tjs7Ozs7CitGQ0JGO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0MSAwNjJEOzs7O047Ozs7OworRkNDMDtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQxIDA2MkU7Ozs7Tjs7Ozs7CitGQ0MxO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDEgMDY0NTs7OztOOzs7OzsKK0ZDQzI7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQyIDA2MkQ7Ozs7Tjs7Ozs7CitGQ0MzO0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDIgMDY0NTs7OztOOzs7OzsKK0ZDQzQ7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0MyAwNjJDOzs7O047Ozs7OworRkNDNTtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDMgMDYyRDs7OztOOzs7OzsKK0ZDQzY7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0MyAwNjJFOzs7O047Ozs7OworRkNDNztBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTEFNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDMgMDY0NDs7OztOOzs7OzsKK0ZDQzg7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0MyAwNjQ1Ozs7O047Ozs7OworRkNDOTtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ0IDA2MkM7Ozs7Tjs7Ozs7CitGQ0NBO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NCAwNjJEOzs7O047Ozs7OworRkNDQjtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ0IDA2MkU7Ozs7Tjs7Ozs7CitGQ0NDO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDQgMDY0NTs7OztOOzs7OzsKK0ZDQ0Q7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEhFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ0IDA2NDc7Ozs7Tjs7Ozs7CitGQ0NFO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ1IDA2MkM7Ozs7Tjs7Ozs7CitGQ0NGO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZDRDA7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDUgMDYyRTs7OztOOzs7OzsKK0ZDRDE7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZDRDI7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDYgMDYyQzs7OztOOzs7OzsKK0ZDRDM7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NiAwNjJEOzs7O047Ozs7OworRkNENDtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NiAwNjJFOzs7O047Ozs7OworRkNENTtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NiAwNjQ1Ozs7O047Ozs7OworRkNENjtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEhFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ2IDA2NDc7Ozs7Tjs7Ozs7CitGQ0Q3O0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDcgMDYyQzs7OztOOzs7OzsKK0ZDRDg7QVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NyAwNjQ1Ozs7O047Ozs7OworRkNEOTtBUkFCSUMgTElHQVRVUkUgSEVIIFdJVEggU1VQRVJTQ1JJUFQgQUxFRiBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ3IDA2NzA7Ozs7Tjs7Ozs7CitGQ0RBO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NEEgMDYyQzs7OztOOzs7OzsKK0ZDREI7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjRBIDA2MkQ7Ozs7Tjs7Ozs7CitGQ0RDO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NEEgMDYyRTs7OztOOzs7OzsKK0ZDREQ7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0QSAwNjQ1Ozs7O047Ozs7OworRkNERTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NEEgMDY0Nzs7OztOOzs7OzsKK0ZDREY7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYyNiAwNjQ1Ozs7O047Ozs7OworRkNFMDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBIRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MjYgMDY0Nzs7OztOOzs7OzsKK0ZDRTE7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MjggMDY0NTs7OztOOzs7OzsKK0ZDRTI7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEhFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYyOCAwNjQ3Ozs7O047Ozs7OworRkNFMztBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYyQSAwNjQ1Ozs7O047Ozs7OworRkNFNDtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSEVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjJBIDA2NDc7Ozs7Tjs7Ozs7CitGQ0U1O0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYyQiAwNjQ1Ozs7O047Ozs7OworRkNFNjtBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIEhFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYyQiAwNjQ3Ozs7O047Ozs7OworRkNFNztBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MzMgMDY0NTs7OztOOzs7OzsKK0ZDRTg7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBIRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MzMgMDY0Nzs7OztOOzs7OzsKK0ZDRTk7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYzNCAwNjQ1Ozs7O047Ozs7OworRkNFQTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MzQgMDY0Nzs7OztOOzs7OzsKK0ZDRUI7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIExBTSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0MyAwNjQ0Ozs7O047Ozs7OworRkNFQztBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0MyAwNjQ1Ozs7O047Ozs7OworRkNFRDtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0NCAwNjQ1Ozs7O047Ozs7OworRkNFRTtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDYgMDY0NTs7OztOOzs7OzsKK0ZDRUY7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBIRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDYgMDY0Nzs7OztOOzs7OzsKK0ZDRjA7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NEEgMDY0NTs7OztOOzs7OzsKK0ZDRjE7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0QSAwNjQ3Ozs7O047Ozs7OworRkNGMjtBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggRkFUSEEgTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDAgMDY1MSAwNjRFOzs7O047Ozs7OworRkNGMztBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggREFNTUEgTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDAgMDY1MSAwNjRGOzs7O047Ozs7OworRkNGNDtBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggS0FTUkEgTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDAgMDY1MSAwNjUwOzs7O047Ozs7OworRkNGNTtBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNyAwNjQ5Ozs7O047Ozs7OworRkNGNjtBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNyAwNjRBOzs7O047Ozs7OworRkNGNztBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzOSAwNjQ5Ozs7O047Ozs7OworRkNGODtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzOSAwNjRBOzs7O047Ozs7OworRkNGOTtBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjNBIDA2NDk7Ozs7Tjs7Ozs7CitGQ0ZBO0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2M0EgMDY0QTs7OztOOzs7OzsKK0ZDRkI7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjMzIDA2NDk7Ozs7Tjs7Ozs7CitGQ0ZDO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzMyAwNjRBOzs7O047Ozs7OworRkNGRDtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM0IDA2NDk7Ozs7Tjs7Ozs7CitGQ0ZFO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzQgMDY0QTs7OztOOzs7OzsKK0ZDRkY7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkQgMDY0OTs7OztOOzs7OzsKK0ZEMDA7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEMDE7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJDIDA2NDk7Ozs7Tjs7Ozs7CitGRDAyO0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyQyAwNjRBOzs7O047Ozs7OworRkQwMztBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkUgMDY0OTs7OztOOzs7OzsKK0ZEMDQ7QVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJFIDA2NEE7Ozs7Tjs7Ozs7CitGRDA1O0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM1IDA2NDk7Ozs7Tjs7Ozs7CitGRDA2O0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM1IDA2NEE7Ozs7Tjs7Ozs7CitGRDA3O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM2IDA2NDk7Ozs7Tjs7Ozs7CitGRDA4O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM2IDA2NEE7Ozs7Tjs7Ozs7CitGRDA5O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM0IDA2MkM7Ozs7Tjs7Ozs7CitGRDBBO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzQgMDYyRDs7OztOOzs7OzsKK0ZEMEI7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzQgMDYyRTs7OztOOzs7OzsKK0ZEMEM7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzQgMDY0NTs7OztOOzs7OzsKK0ZEMEQ7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggUkVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNCAwNjMxOzs7O047Ozs7OworRkQwRTtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIFJFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzMgMDYzMTs7OztOOzs7OzsKK0ZEMEY7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIFJFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzUgMDYzMTs7OztOOzs7OzsKK0ZEMTA7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIFJFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzYgMDYzMTs7OztOOzs7OzsKK0ZEMTE7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzcgMDY0OTs7OztOOzs7OzsKK0ZEMTI7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzcgMDY0QTs7OztOOzs7OzsKK0ZEMTM7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzkgMDY0OTs7OztOOzs7OzsKK0ZEMTQ7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzkgMDY0QTs7OztOOzs7OzsKK0ZEMTU7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzQSAwNjQ5Ozs7O047Ozs7OworRkQxNjtBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjNBIDA2NEE7Ozs7Tjs7Ozs7CitGRDE3O0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzMyAwNjQ5Ozs7O047Ozs7OworRkQxODtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzMgMDY0QTs7OztOOzs7OzsKK0ZEMTk7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNCAwNjQ5Ozs7O047Ozs7OworRkQxQTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM0IDA2NEE7Ozs7Tjs7Ozs7CitGRDFCO0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJEIDA2NDk7Ozs7Tjs7Ozs7CitGRDFDO0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJEIDA2NEE7Ozs7Tjs7Ozs7CitGRDFEO0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQyAwNjQ5Ozs7O047Ozs7OworRkQxRTtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkMgMDY0QTs7OztOOzs7OzsKK0ZEMUY7QVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJFIDA2NDk7Ozs7Tjs7Ozs7CitGRDIwO0FSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyRSAwNjRBOzs7O047Ozs7OworRkQyMTtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNSAwNjQ5Ozs7O047Ozs7OworRkQyMjtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNSAwNjRBOzs7O047Ozs7OworRkQyMztBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNiAwNjQ5Ozs7O047Ozs7OworRkQyNDtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNiAwNjRBOzs7O047Ozs7OworRkQyNTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBKRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNCAwNjJDOzs7O047Ozs7OworRkQyNjtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIQUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM0IDA2MkQ7Ozs7Tjs7Ozs7CitGRDI3O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEtIQUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM0IDA2MkU7Ozs7Tjs7Ozs7CitGRDI4O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM0IDA2NDU7Ozs7Tjs7Ozs7CitGRDI5O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIFJFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzQgMDYzMTs7OztOOzs7OzsKK0ZEMkE7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBSRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjMzIDA2MzE7Ozs7Tjs7Ozs7CitGRDJCO0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBSRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM1IDA2MzE7Ozs7Tjs7Ozs7CitGRDJDO0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBSRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM2IDA2MzE7Ozs7Tjs7Ozs7CitGRDJEO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNCAwNjJDOzs7O047Ozs7OworRkQyRTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNCAwNjJEOzs7O047Ozs7OworRkQyRjtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzQgMDYyRTs7OztOOzs7OzsKK0ZEMzA7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM0IDA2NDU7Ozs7Tjs7Ozs7CitGRDMxO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSEVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzMgMDY0Nzs7OztOOzs7OzsKK0ZEMzI7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzQgMDY0Nzs7OztOOzs7OzsKK0ZEMzM7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNyAwNjQ1Ozs7O047Ozs7OworRkQzNDtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEpFRU0gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MzMgMDYyQzs7OztOOzs7OzsKK0ZEMzU7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBIQUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MzMgMDYyRDs7OztOOzs7OzsKK0ZEMzY7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBLSEFIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjMzIDA2MkU7Ozs7Tjs7Ozs7CitGRDM3O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEpFRU0gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MzQgMDYyQzs7OztOOzs7OzsKK0ZEMzg7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEFIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjM0IDA2MkQ7Ozs7Tjs7Ozs7CitGRDM5O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEtIQUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MzQgMDYyRTs7OztOOzs7OzsKK0ZEM0E7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MzcgMDY0NTs7OztOOzs7OzsKK0ZEM0I7QVJBQklDIExJR0FUVVJFIFpBSCBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MzggMDY0NTs7OztOOzs7OzsKK0ZEM0M7QVJBQklDIExJR0FUVVJFIEFMRUYgV0lUSCBGQVRIQVRBTiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjcgMDY0Qjs7OztOOzs7OzsKK0ZEM0Q7QVJBQklDIExJR0FUVVJFIEFMRUYgV0lUSCBGQVRIQVRBTiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjcgMDY0Qjs7OztOOzs7OzsKK0ZEM0U7T1JOQVRFIExFRlQgUEFSRU5USEVTSVM7UHM7MDtPTjs7Ozs7Tjs7Ozs7CitGRDNGO09STkFURSBSSUdIVCBQQVJFTlRIRVNJUztQZTswO09OOzs7OztOOzs7OzsKK0ZENTA7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEpFRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkEgMDYyQyAwNjQ1Ozs7O047Ozs7OworRkQ1MTtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSEFIIFdJVEggSkVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkEgMDYyRCAwNjJDOzs7O047Ozs7OworRkQ1MjtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSEFIIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJBIDA2MkQgMDYyQzs7OztOOzs7OzsKK0ZENTM7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEhBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyQSAwNjJEIDA2NDU7Ozs7Tjs7Ozs7CitGRDU0O0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBLSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJBIDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZENTU7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkEgMDY0NSAwNjJDOzs7O047Ozs7OworRkQ1NjtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJBIDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZENTc7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkEgMDY0NSAwNjJFOzs7O047Ozs7OworRkQ1ODtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIE1FRU0gV0lUSCBIQUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJDIDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZENTk7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBNRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkMgMDY0NSAwNjJEOzs7O047Ozs7OworRkQ1QTtBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkQgMDY0NSAwNjRBOzs7O047Ozs7OworRkQ1QjtBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkQgMDY0NSAwNjQ5Ozs7O047Ozs7OworRkQ1QztBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEhBSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzMyAwNjJEIDA2MkM7Ozs7Tjs7Ozs7CitGRDVEO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSkVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjMzIDA2MkMgMDYyRDs7OztOOzs7OzsKK0ZENUU7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBKRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzMyAwNjJDIDA2NDk7Ozs7Tjs7Ozs7CitGRDVGO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBXSVRIIEhBSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzMgMDY0NSAwNjJEOzs7O047Ozs7OworRkQ2MDtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzMyAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDYxO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzMyAwNjQ1IDA2MkM7Ozs7Tjs7Ozs7CitGRDYyO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjMzIDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZENjM7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjMzIDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZENjQ7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEhBSCBXSVRIIEhBSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzUgMDYyRCAwNjJEOzs7O047Ozs7OworRkQ2NTtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggSEFIIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzUgMDYyRCAwNjJEOzs7O047Ozs7OworRkQ2NjtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM1IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZENjc7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEFIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzQgMDYyRCAwNjQ1Ozs7O047Ozs7OworRkQ2ODtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzQgMDYyRCAwNjQ1Ozs7O047Ozs7OworRkQ2OTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBKRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNCAwNjJDIDA2NEE7Ozs7Tjs7Ozs7CitGRDZBO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gV0lUSCBLSEFIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNCAwNjQ1IDA2MkU7Ozs7Tjs7Ozs7CitGRDZCO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzQgMDY0NSAwNjJFOzs7O047Ozs7OworRkQ2QztBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzQgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ2RDtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM0IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZENkU7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEhBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzYgMDYyRCAwNjQ5Ozs7O047Ozs7OworRkQ2RjtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggS0hBSCBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM2IDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZENzA7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEtIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzYgMDYyRSAwNjQ1Ozs7O047Ozs7OworRkQ3MTtBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggTUVFTSBXSVRIIEhBSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzcgMDY0NSAwNjJEOzs7O047Ozs7OworRkQ3MjtBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM3IDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZENzM7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzcgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ3NDtBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzcgMDY0NSAwNjRBOzs7O047Ozs7OworRkQ3NTtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggSkVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM5IDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZENzY7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzOSAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDc3O0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM5IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZENzg7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIE1FRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM5IDA2NDUgMDY0OTs7OztOOzs7OzsKK0ZENzk7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjNBIDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZEN0E7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2M0EgMDY0NSAwNjRBOzs7O047Ozs7OworRkQ3QjtBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBNRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzQSAwNjQ1IDA2NDk7Ozs7Tjs7Ozs7CitGRDdDO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBLSEFIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDEgMDYyRSAwNjQ1Ozs7O047Ozs7OworRkQ3RDtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0MSAwNjJFIDA2NDU7Ozs7Tjs7Ozs7CitGRDdFO0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBNRUVNIFdJVEggSEFIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0MiAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDdGO0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDIgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ4MDtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSEFIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDQgMDYyRCAwNjQ1Ozs7O047Ozs7OworRkQ4MTtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NCAwNjJEIDA2NEE7Ozs7Tjs7Ozs7CitGRDgyO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ0IDA2MkQgMDY0OTs7OztOOzs7OzsKK0ZEODM7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDQgMDYyQyAwNjJDOzs7O047Ozs7OworRkQ4NDtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSkVFTSBXSVRIIEpFRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ0IDA2MkMgMDYyQzs7OztOOzs7OzsKK0ZEODU7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEtIQUggV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NCAwNjJFIDA2NDU7Ozs7Tjs7Ozs7CitGRDg2O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBLSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ0IDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZEODc7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIE1FRU0gV0lUSCBIQUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ0IDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZEODg7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIE1FRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NCAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDg5O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSEFIIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ1IDA2MkQgMDYyQzs7OztOOzs7OzsKK0ZEOEE7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDUgMDYyRCAwNjQ1Ozs7O047Ozs7OworRkQ4QjtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDUgMDYyRCAwNjRBOzs7O047Ozs7OworRkQ4QztBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEpFRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NSAwNjJDIDA2MkQ7Ozs7Tjs7Ozs7CitGRDhEO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSkVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NSAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGRDhFO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggS0hBSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NSAwNjJFIDA2MkM7Ozs7Tjs7Ozs7CitGRDhGO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NSAwNjJFIDA2NDU7Ozs7Tjs7Ozs7CitGRDkyO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSkVFTSBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NSAwNjJDIDA2MkU7Ozs7Tjs7Ozs7CitGRDkzO0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBNRUVNIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ3IDA2NDUgMDYyQzs7OztOOzs7OzsKK0ZEOTQ7QVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDcgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ5NTtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEhBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NiAwNjJEIDA2NDU7Ozs7Tjs7Ozs7CitGRDk2O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEFIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NiAwNjJEIDA2NDk7Ozs7Tjs7Ozs7CitGRDk3O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSkVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ2IDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZEOTg7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBKRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ2IDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZEOTk7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBKRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NiAwNjJDIDA2NDk7Ozs7Tjs7Ozs7CitGRDlBO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDYgMDY0NSAwNjRBOzs7O047Ozs7OworRkQ5QjtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIE1FRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ2IDA2NDUgMDY0OTs7OztOOzs7OzsKK0ZEOUM7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0QSAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDlEO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjRBIDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZEOUU7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEtIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI4IDA2MkUgMDY0QTs7OztOOzs7OzsKK0ZEOUY7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJBIDA2MkMgMDY0QTs7OztOOzs7OzsKK0ZEQTA7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEpFRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJBIDA2MkMgMDY0OTs7OztOOzs7OzsKK0ZEQTE7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEtIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJBIDA2MkUgMDY0QTs7OztOOzs7OzsKK0ZEQTI7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEtIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJBIDA2MkUgMDY0OTs7OztOOzs7OzsKK0ZEQTM7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJBIDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZEQTQ7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJBIDA2NDUgMDY0OTs7OztOOzs7OzsKK0ZEQTU7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQyAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGREE2O0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggSEFIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQyAwNjJEIDA2NDk7Ozs7Tjs7Ozs7CitGREE3O0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkMgMDY0NSAwNjQ5Ozs7O047Ozs7OworRkRBODtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEtIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjMzIDA2MkUgMDY0OTs7OztOOzs7OzsKK0ZEQTk7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzUgMDYyRCAwNjRBOzs7O047Ozs7OworRkRBQTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM0IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEQUI7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzYgMDYyRCAwNjRBOzs7O047Ozs7OworRkRBQztBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDQgMDYyQyAwNjRBOzs7O047Ozs7OworRkRBRDtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDQgMDY0NSAwNjRBOzs7O047Ozs7OworRkRBRTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0QSAwNjJEIDA2NEE7Ozs7Tjs7Ozs7CitGREFGO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBKRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0QSAwNjJDIDA2NEE7Ozs7Tjs7Ozs7CitGREIwO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0QSAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGREIxO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDUgMDY0NSAwNjRBOzs7O047Ozs7OworRkRCMjtBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDIgMDY0NSAwNjRBOzs7O047Ozs7OworRkRCMztBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDYgMDYyRCAwNjRBOzs7O047Ozs7OworRkRCNDtBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQyIDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZEQjU7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEhBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NCAwNjJEIDA2NDU7Ozs7Tjs7Ozs7CitGREI2O0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzOSAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGREI3O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0MyAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGREI4O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSkVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ2IDA2MkMgMDYyRDs7OztOOzs7OzsKK0ZEQjk7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBLSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NSAwNjJFIDA2NEE7Ozs7Tjs7Ozs7CitGREJBO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBKRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ0IDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZEQkI7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0MyAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGREJDO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBKRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDQgMDYyQyAwNjQ1Ozs7O047Ozs7OworRkRCRDtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gV0lUSCBIQUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ2IDA2MkMgMDYyRDs7OztOOzs7OzsKK0ZEQkU7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJDIDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEQkY7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJEIDA2MkMgMDY0QTs7OztOOzs7OzsKK0ZEQzA7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBKRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NSAwNjJDIDA2NEE7Ozs7Tjs7Ozs7CitGREMxO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0MSAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGREMyO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI4IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEQzM7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDMgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkRDNDtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggSkVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzOSAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGREM1O0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM1IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZEQzY7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBLSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzMyAwNjJFIDA2NEE7Ozs7Tjs7Ozs7CitGREM3O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDYgMDYyQyAwNjRBOzs7O047Ozs7OworRkRGMDtBUkFCSUMgTElHQVRVUkUgU0FMTEEgVVNFRCBBUyBLT1JBTklDIFNUT1AgU0lHTiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzUgMDY0NCAwNkQyOzs7O047Ozs7OworRkRGMTtBUkFCSUMgTElHQVRVUkUgUUFMQSBVU0VEIEFTIEtPUkFOSUMgU1RPUCBTSUdOIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0MiAwNjQ0IDA2RDI7Ozs7Tjs7Ozs7CitGREYyO0FSQUJJQyBMSUdBVFVSRSBBTExBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjcgMDY0NCAwNjQ0IDA2NDc7Ozs7Tjs7Ozs7CitGREYzO0FSQUJJQyBMSUdBVFVSRSBBS0JBUiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjcgMDY0MyAwNjI4IDA2MzE7Ozs7Tjs7Ozs7CitGREY0O0FSQUJJQyBMSUdBVFVSRSBNT0hBTU1BRCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDUgMDYyRCAwNjQ1IDA2MkY7Ozs7Tjs7Ozs7CitGREY1O0FSQUJJQyBMSUdBVFVSRSBTQUxBTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzUgMDY0NCAwNjM5IDA2NDU7Ozs7Tjs7Ozs7CitGREY2O0FSQUJJQyBMSUdBVFVSRSBSQVNPVUwgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjMxIDA2MzMgMDY0OCAwNjQ0Ozs7O047Ozs7OworRkRGNztBUkFCSUMgTElHQVRVUkUgQUxBWUhFIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzOSAwNjQ0IDA2NEEgMDY0Nzs7OztOOzs7OzsKK0ZERjg7QVJBQklDIExJR0FUVVJFIFdBU0FMTEFNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0OCAwNjMzIDA2NDQgMDY0NTs7OztOOzs7OzsKK0ZERjk7QVJBQklDIExJR0FUVVJFIFNBTExBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNSAwNjQ0IDA2NDk7Ozs7Tjs7Ozs7CitGREZBO0FSQUJJQyBMSUdBVFVSRSBTQUxMQUxMQUhPVSBBTEFZSEUgV0FTQUxMQU07TG87MDtSOzxpc29sYXRlZD4gMDYzNSAwNjQ0IDA2NDkgMDAyMCAwNjI3IDA2NDQgMDY0NCAwNjQ3IDAwMjAgMDYzOSAwNjQ0IDA2NEEgMDY0NyAwMDIwIDA2NDggMDYzMyAwNjQ0IDA2NDU7Ozs7TjtBUkFCSUMgTEVUVEVSIFNBTExBTExBSE9VIEFMQVlIRSBXQVNBTExBTTs7OzsKK0ZERkI7QVJBQklDIExJR0FUVVJFIEpBTExBSkFMQUxPVUhPVTtMbzswO1I7PGlzb2xhdGVkPiAwNjJDIDA2NDQgMDAyMCAwNjJDIDA2NDQgMDYyNyAwNjQ0IDA2NDc7Ozs7TjtBUkFCSUMgTEVUVEVSIEpBTExBSkFMQUxPVUhPVTs7OzsKK0ZFMjA7Q09NQklOSU5HIExJR0FUVVJFIExFRlQgSEFMRjtNbjsyMzA7T047Ozs7O047Ozs7OworRkUyMTtDT01CSU5JTkcgTElHQVRVUkUgUklHSFQgSEFMRjtNbjsyMzA7T047Ozs7O047Ozs7OworRkUyMjtDT01CSU5JTkcgRE9VQkxFIFRJTERFIExFRlQgSEFMRjtNbjsyMzA7T047Ozs7O047Ozs7OworRkUyMztDT01CSU5JTkcgRE9VQkxFIFRJTERFIFJJR0hUIEhBTEY7TW47MjMwO09OOzs7OztOOzs7OzsKK0ZFMzA7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFRXTyBET1QgTEVBREVSO1BvOzA7T047PHZlcnRpY2FsPiAyMDI1Ozs7O047R0xZUEggRk9SIFZFUlRJQ0FMIFRXTyBET1QgTEVBREVSOzs7OworRkUzMTtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgRU0gREFTSDtQZDswO09OOzx2ZXJ0aWNhbD4gMjAxNDs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBFTSBEQVNIOzs7OworRkUzMjtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgRU4gREFTSDtQZDswO09OOzx2ZXJ0aWNhbD4gMjAxMzs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBFTiBEQVNIOzs7OworRkUzMztQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTE9XIExJTkU7UGM7MDtPTjs8dmVydGljYWw+IDAwNUY7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgU1BBQ0lORyBVTkRFUlNDT1JFOzs7OworRkUzNDtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgV0FWWSBMT1cgTElORTtQYzswO09OOzx2ZXJ0aWNhbD4gMDA1Rjs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBTUEFDSU5HIFdBVlkgVU5ERVJTQ09SRTs7OzsKK0ZFMzU7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgUEFSRU5USEVTSVM7UHM7MDtPTjs8dmVydGljYWw+IDAwMjg7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgT1BFTklORyBQQVJFTlRIRVNJUzs7OzsKK0ZFMzY7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFJJR0hUIFBBUkVOVEhFU0lTO1BlOzA7T047PHZlcnRpY2FsPiAwMDI5Ozs7O047R0xZUEggRk9SIFZFUlRJQ0FMIENMT1NJTkcgUEFSRU5USEVTSVM7Ozs7CitGRTM3O1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIENVUkxZIEJSQUNLRVQ7UHM7MDtPTjs8dmVydGljYWw+IDAwN0I7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgT1BFTklORyBDVVJMWSBCUkFDS0VUOzs7OworRkUzODtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgQ1VSTFkgQlJBQ0tFVDtQZTswO09OOzx2ZXJ0aWNhbD4gMDA3RDs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBDTE9TSU5HIENVUkxZIEJSQUNLRVQ7Ozs7CitGRTM5O1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7UHM7MDtPTjs8dmVydGljYWw+IDMwMTQ7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgT1BFTklORyBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUOzs7OworRkUzQTtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQZTswO09OOzx2ZXJ0aWNhbD4gMzAxNTs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBDTE9TSU5HIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7Ozs7CitGRTNCO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIEJMQUNLIExFTlRJQ1VMQVIgQlJBQ0tFVDtQczswO09OOzx2ZXJ0aWNhbD4gMzAxMDs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBPUEVOSU5HIEJMQUNLIExFTlRJQ1VMQVIgQlJBQ0tFVDs7OzsKK0ZFM0M7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFJJR0hUIEJMQUNLIExFTlRJQ1VMQVIgQlJBQ0tFVDtQZTswO09OOzx2ZXJ0aWNhbD4gMzAxMTs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBDTE9TSU5HIEJMQUNLIExFTlRJQ1VMQVIgQlJBQ0tFVDs7OzsKK0ZFM0Q7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgRE9VQkxFIEFOR0xFIEJSQUNLRVQ7UHM7MDtPTjs8dmVydGljYWw+IDMwMEE7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgT1BFTklORyBET1VCTEUgQU5HTEUgQlJBQ0tFVDs7OzsKK0ZFM0U7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFJJR0hUIERPVUJMRSBBTkdMRSBCUkFDS0VUO1BlOzA7T047PHZlcnRpY2FsPiAzMDBCOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIENMT1NJTkcgRE9VQkxFIEFOR0xFIEJSQUNLRVQ7Ozs7CitGRTNGO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIEFOR0xFIEJSQUNLRVQ7UHM7MDtPTjs8dmVydGljYWw+IDMwMDg7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgT1BFTklORyBBTkdMRSBCUkFDS0VUOzs7OworRkU0MDtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgQU5HTEUgQlJBQ0tFVDtQZTswO09OOzx2ZXJ0aWNhbD4gMzAwOTs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBDTE9TSU5HIEFOR0xFIEJSQUNLRVQ7Ozs7CitGRTQxO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIENPUk5FUiBCUkFDS0VUO1BzOzA7T047PHZlcnRpY2FsPiAzMDBDOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIE9QRU5JTkcgQ09STkVSIEJSQUNLRVQ7Ozs7CitGRTQyO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBDT1JORVIgQlJBQ0tFVDtQZTswO09OOzx2ZXJ0aWNhbD4gMzAwRDs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBDTE9TSU5HIENPUk5FUiBCUkFDS0VUOzs7OworRkU0MztQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBXSElURSBDT1JORVIgQlJBQ0tFVDtQczswO09OOzx2ZXJ0aWNhbD4gMzAwRTs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBPUEVOSU5HIFdISVRFIENPUk5FUiBCUkFDS0VUOzs7OworRkU0NDtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgV0hJVEUgQ09STkVSIEJSQUNLRVQ7UGU7MDtPTjs8dmVydGljYWw+IDMwMEY7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgQ0xPU0lORyBXSElURSBDT1JORVIgQlJBQ0tFVDs7OzsKK0ZFNDk7REFTSEVEIE9WRVJMSU5FO1BvOzA7T047PGNvbXBhdD4gMjAzRTs7OztOO1NQQUNJTkcgREFTSEVEIE9WRVJTQ09SRTs7OzsKK0ZFNEE7Q0VOVFJFTElORSBPVkVSTElORTtQbzswO09OOzxjb21wYXQ+IDIwM0U7Ozs7TjtTUEFDSU5HIENFTlRFUkxJTkUgT1ZFUlNDT1JFOzs7OworRkU0QjtXQVZZIE9WRVJMSU5FO1BvOzA7T047PGNvbXBhdD4gMjAzRTs7OztOO1NQQUNJTkcgV0FWWSBPVkVSU0NPUkU7Ozs7CitGRTRDO0RPVUJMRSBXQVZZIE9WRVJMSU5FO1BvOzA7T047PGNvbXBhdD4gMjAzRTs7OztOO1NQQUNJTkcgRE9VQkxFIFdBVlkgT1ZFUlNDT1JFOzs7OworRkU0RDtEQVNIRUQgTE9XIExJTkU7UGM7MDtPTjs8Y29tcGF0PiAwMDVGOzs7O047U1BBQ0lORyBEQVNIRUQgVU5ERVJTQ09SRTs7OzsKK0ZFNEU7Q0VOVFJFTElORSBMT1cgTElORTtQYzswO09OOzxjb21wYXQ+IDAwNUY7Ozs7TjtTUEFDSU5HIENFTlRFUkxJTkUgVU5ERVJTQ09SRTs7OzsKK0ZFNEY7V0FWWSBMT1cgTElORTtQYzswO09OOzxjb21wYXQ+IDAwNUY7Ozs7TjtTUEFDSU5HIFdBVlkgVU5ERVJTQ09SRTs7OzsKK0ZFNTA7U01BTEwgQ09NTUE7UG87MDtDUzs8c21hbGw+IDAwMkM7Ozs7Tjs7Ozs7CitGRTUxO1NNQUxMIElERU9HUkFQSElDIENPTU1BO1BvOzA7T047PHNtYWxsPiAzMDAxOzs7O047Ozs7OworRkU1MjtTTUFMTCBGVUxMIFNUT1A7UG87MDtDUzs8c21hbGw+IDAwMkU7Ozs7TjtTTUFMTCBQRVJJT0Q7Ozs7CitGRTU0O1NNQUxMIFNFTUlDT0xPTjtQbzswO09OOzxzbWFsbD4gMDAzQjs7OztOOzs7OzsKK0ZFNTU7U01BTEwgQ09MT047UG87MDtDUzs8c21hbGw+IDAwM0E7Ozs7Tjs7Ozs7CitGRTU2O1NNQUxMIFFVRVNUSU9OIE1BUks7UG87MDtPTjs8c21hbGw+IDAwM0Y7Ozs7Tjs7Ozs7CitGRTU3O1NNQUxMIEVYQ0xBTUFUSU9OIE1BUks7UG87MDtPTjs8c21hbGw+IDAwMjE7Ozs7Tjs7Ozs7CitGRTU4O1NNQUxMIEVNIERBU0g7UGQ7MDtPTjs8c21hbGw+IDIwMTQ7Ozs7Tjs7Ozs7CitGRTU5O1NNQUxMIExFRlQgUEFSRU5USEVTSVM7UHM7MDtPTjs8c21hbGw+IDAwMjg7Ozs7TjtTTUFMTCBPUEVOSU5HIFBBUkVOVEhFU0lTOzs7OworRkU1QTtTTUFMTCBSSUdIVCBQQVJFTlRIRVNJUztQZTswO09OOzxzbWFsbD4gMDAyOTs7OztOO1NNQUxMIENMT1NJTkcgUEFSRU5USEVTSVM7Ozs7CitGRTVCO1NNQUxMIExFRlQgQ1VSTFkgQlJBQ0tFVDtQczswO09OOzxzbWFsbD4gMDA3Qjs7OztOO1NNQUxMIE9QRU5JTkcgQ1VSTFkgQlJBQ0tFVDs7OzsKK0ZFNUM7U01BTEwgUklHSFQgQ1VSTFkgQlJBQ0tFVDtQZTswO09OOzxzbWFsbD4gMDA3RDs7OztOO1NNQUxMIENMT1NJTkcgQ1VSTFkgQlJBQ0tFVDs7OzsKK0ZFNUQ7U01BTEwgTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUO1BzOzA7T047PHNtYWxsPiAzMDE0Ozs7O047U01BTEwgT1BFTklORyBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUOzs7OworRkU1RTtTTUFMTCBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUO1BlOzA7T047PHNtYWxsPiAzMDE1Ozs7O047U01BTEwgQ0xPU0lORyBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUOzs7OworRkU1RjtTTUFMTCBOVU1CRVIgU0lHTjtQbzswO0VUOzxzbWFsbD4gMDAyMzs7OztOOzs7OzsKK0ZFNjA7U01BTEwgQU1QRVJTQU5EO1BvOzA7T047PHNtYWxsPiAwMDI2Ozs7O047Ozs7OworRkU2MTtTTUFMTCBBU1RFUklTSztQbzswO09OOzxzbWFsbD4gMDAyQTs7OztOOzs7OzsKK0ZFNjI7U01BTEwgUExVUyBTSUdOO1NtOzA7RVQ7PHNtYWxsPiAwMDJCOzs7O047Ozs7OworRkU2MztTTUFMTCBIWVBIRU4tTUlOVVM7UGQ7MDtFVDs8c21hbGw+IDAwMkQ7Ozs7Tjs7Ozs7CitGRTY0O1NNQUxMIExFU1MtVEhBTiBTSUdOO1NtOzA7T047PHNtYWxsPiAwMDNDOzs7O047Ozs7OworRkU2NTtTTUFMTCBHUkVBVEVSLVRIQU4gU0lHTjtTbTswO09OOzxzbWFsbD4gMDAzRTs7OztOOzs7OzsKK0ZFNjY7U01BTEwgRVFVQUxTIFNJR047U207MDtPTjs8c21hbGw+IDAwM0Q7Ozs7Tjs7Ozs7CitGRTY4O1NNQUxMIFJFVkVSU0UgU09MSURVUztQbzswO09OOzxzbWFsbD4gMDA1Qzs7OztOO1NNQUxMIEJBQ0tTTEFTSDs7OzsKK0ZFNjk7U01BTEwgRE9MTEFSIFNJR047U2M7MDtFVDs8c21hbGw+IDAwMjQ7Ozs7Tjs7Ozs7CitGRTZBO1NNQUxMIFBFUkNFTlQgU0lHTjtQbzswO0VUOzxzbWFsbD4gMDAyNTs7OztOOzs7OzsKK0ZFNkI7U01BTEwgQ09NTUVSQ0lBTCBBVDtQbzswO09OOzxzbWFsbD4gMDA0MDs7OztOOzs7OzsKK0ZFNzA7QVJBQklDIEZBVEhBVEFOIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDAyMCAwNjRCOzs7O047QVJBQklDIFNQQUNJTkcgRkFUSEFUQU47Ozs7CitGRTcxO0FSQUJJQyBUQVRXRUVMIFdJVEggRkFUSEFUQU4gQUJPVkU7TG87MDtSOzxtZWRpYWw+IDA2NDAgMDY0Qjs7OztOO0FSQUJJQyBGQVRIQVRBTiBPTiBUQVRXRUVMOzs7OworRkU3MjtBUkFCSUMgREFNTUFUQU4gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwMDIwIDA2NEM7Ozs7TjtBUkFCSUMgU1BBQ0lORyBEQU1NQVRBTjs7OzsKK0ZFNzQ7QVJBQklDIEtBU1JBVEFOIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDAyMCAwNjREOzs7O047QVJBQklDIFNQQUNJTkcgS0FTUkFUQU47Ozs7CitGRTc2O0FSQUJJQyBGQVRIQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDAwMjAgMDY0RTs7OztOO0FSQUJJQyBTUEFDSU5HIEZBVEhBSDs7OzsKK0ZFNzc7QVJBQklDIEZBVEhBIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQwIDA2NEU7Ozs7TjtBUkFCSUMgRkFUSEFIIE9OIFRBVFdFRUw7Ozs7CitGRTc4O0FSQUJJQyBEQU1NQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDAwMjAgMDY0Rjs7OztOO0FSQUJJQyBTUEFDSU5HIERBTU1BSDs7OzsKK0ZFNzk7QVJBQklDIERBTU1BIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQwIDA2NEY7Ozs7TjtBUkFCSUMgREFNTUFIIE9OIFRBVFdFRUw7Ozs7CitGRTdBO0FSQUJJQyBLQVNSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDAwMjAgMDY1MDs7OztOO0FSQUJJQyBTUEFDSU5HIEtBU1JBSDs7OzsKK0ZFN0I7QVJBQklDIEtBU1JBIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQwIDA2NTA7Ozs7TjtBUkFCSUMgS0FTUkFIIE9OIFRBVFdFRUw7Ozs7CitGRTdDO0FSQUJJQyBTSEFEREEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwMDIwIDA2NTE7Ozs7TjtBUkFCSUMgU1BBQ0lORyBTSEFEREFIOzs7OworRkU3RDtBUkFCSUMgU0hBRERBIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQwIDA2NTE7Ozs7TjtBUkFCSUMgU0hBRERBSCBPTiBUQVRXRUVMOzs7OworRkU3RTtBUkFCSUMgU1VLVU4gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwMDIwIDA2NTI7Ozs7TjtBUkFCSUMgU1BBQ0lORyBTVUtVTjs7OzsKK0ZFN0Y7QVJBQklDIFNVS1VOIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQwIDA2NTI7Ozs7TjtBUkFCSUMgU1VLVU4gT04gVEFUV0VFTDs7OzsKK0ZFODA7QVJBQklDIExFVFRFUiBIQU1aQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjE7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSEFNWkFIOzs7OworRkU4MTtBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBNQUREQSBBQk9WRSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjI7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgTUFEREFIIE9OIEFMRUY7Ozs7CitGRTgyO0FSQUJJQyBMRVRURVIgQUxFRiBXSVRIIE1BRERBIEFCT1ZFIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyMjs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgTUFEREFIIE9OIEFMRUY7Ozs7CitGRTgzO0FSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEFCT1ZFIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyMzs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQU1aQUggT04gQUxFRjs7OzsKK0ZFODQ7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjIzOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBIQU1aQUggT04gQUxFRjs7OzsKK0ZFODU7QVJBQklDIExFVFRFUiBXQVcgV0lUSCBIQU1aQSBBQk9WRSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjQ7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSEFNWkFIIE9OIFdBVzs7OzsKK0ZFODY7QVJBQklDIExFVFRFUiBXQVcgV0lUSCBIQU1aQSBBQk9WRSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjQ7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEhBTVpBSCBPTiBXQVc7Ozs7CitGRTg3O0FSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEJFTE9XIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyNTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQU1aQUggVU5ERVIgQUxFRjs7OzsKK0ZFODg7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQkVMT1cgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI1Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBIQU1aQUggVU5ERVIgQUxFRjs7OzsKK0ZFODk7QVJBQklDIExFVFRFUiBZRUggV0lUSCBIQU1aQSBBQk9WRSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjY7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSEFNWkFIIE9OIFlBOzs7OworRkU4QTtBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyNjs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgSEFNWkFIIE9OIFlBOzs7OworRkU4QjtBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MjY7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgSEFNWkFIIE9OIFlBOzs7OworRkU4QztBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjI2Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgSEFNWkFIIE9OIFlBOzs7OworRkU4RDtBUkFCSUMgTEVUVEVSIEFMRUYgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI3Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEFMRUY7Ozs7CitGRThFO0FSQUJJQyBMRVRURVIgQUxFRiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2Mjc7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEFMRUY7Ozs7CitGRThGO0FSQUJJQyBMRVRURVIgQkVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyODs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBCQUE7Ozs7CitGRTkwO0FSQUJJQyBMRVRURVIgQkVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyODs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgQkFBOzs7OworRkU5MTtBUkFCSUMgTEVUVEVSIEJFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjI4Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIEJBQTs7OzsKK0ZFOTI7QVJBQklDIExFVFRFUiBCRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2Mjg7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBCQUE7Ozs7CitGRTkzO0FSQUJJQyBMRVRURVIgVEVIIE1BUkJVVEEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI5Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFRBQSBNQVJCVVRBSDs7OzsKK0ZFOTQ7QVJBQklDIExFVFRFUiBURUggTUFSQlVUQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2Mjk7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFRBQSBNQVJCVVRBSDs7OzsKK0ZFOTU7QVJBQklDIExFVFRFUiBURUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJBOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFRBQTs7OzsKK0ZFOTY7QVJBQklDIExFVFRFUiBURUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJBOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBUQUE7Ozs7CitGRTk3O0FSQUJJQyBMRVRURVIgVEVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkE7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgVEFBOzs7OworRkU5ODtBUkFCSUMgTEVUVEVSIFRFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYyQTs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIFRBQTs7OzsKK0ZFOTk7QVJBQklDIExFVFRFUiBUSEVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyQjs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBUSEFBOzs7OworRkU5QTtBUkFCSUMgTEVUVEVSIFRIRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJCOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBUSEFBOzs7OworRkU5QjtBUkFCSUMgTEVUVEVSIFRIRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyQjs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBUSEFBOzs7OworRkU5QztBUkFCSUMgTEVUVEVSIFRIRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MkI7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBUSEFBOzs7OworRkU5RDtBUkFCSUMgTEVUVEVSIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJDOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEpFRU07Ozs7CitGRTlFO0FSQUJJQyBMRVRURVIgSkVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkM7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEpFRU07Ozs7CitGRTlGO0FSQUJJQyBMRVRURVIgSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJDOzs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIEpFRU07Ozs7CitGRUEwO0FSQUJJQyBMRVRURVIgSkVFTSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYyQzs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEpFRU07Ozs7CitGRUExO0FSQUJJQyBMRVRURVIgSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyRDs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQUE7Ozs7CitGRUEyO0FSQUJJQyBMRVRURVIgSEFIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyRDs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgSEFBOzs7OworRkVBMztBUkFCSUMgTEVUVEVSIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJEOzs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIEhBQTs7OzsKK0ZFQTQ7QVJBQklDIExFVFRFUiBIQUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MkQ7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBIQUE7Ozs7CitGRUE1O0FSQUJJQyBMRVRURVIgS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkU7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgS0hBQTs7OzsKK0ZFQTY7QVJBQklDIExFVFRFUiBLSEFIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyRTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgS0hBQTs7OzsKK0ZFQTc7QVJBQklDIExFVFRFUiBLSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkU7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgS0hBQTs7OzsKK0ZFQTg7QVJBQklDIExFVFRFUiBLSEFIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjJFOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgS0hBQTs7OzsKK0ZFQTk7QVJBQklDIExFVFRFUiBEQUwgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJGOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIERBTDs7OzsKK0ZFQUE7QVJBQklDIExFVFRFUiBEQUwgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJGOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBEQUw7Ozs7CitGRUFCO0FSQUJJQyBMRVRURVIgVEhBTCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzA7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgVEhBTDs7OzsKK0ZFQUM7QVJBQklDIExFVFRFUiBUSEFMIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzMDs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgVEhBTDs7OzsKK0ZFQUQ7QVJBQklDIExFVFRFUiBSRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjMxOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFJBOzs7OworRkVBRTtBUkFCSUMgTEVUVEVSIFJFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzE7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFJBOzs7OworRkVBRjtBUkFCSUMgTEVUVEVSIFpBSU4gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjMyOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFpBSU47Ozs7CitGRUIwO0FSQUJJQyBMRVRURVIgWkFJTiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzI7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFpBSU47Ozs7CitGRUIxO0FSQUJJQyBMRVRURVIgU0VFTiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzM7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgU0VFTjs7OzsKK0ZFQjI7QVJBQklDIExFVFRFUiBTRUVOIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzMzs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgU0VFTjs7OzsKK0ZFQjM7QVJBQklDIExFVFRFUiBTRUVOIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzM7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgU0VFTjs7OzsKK0ZFQjQ7QVJBQklDIExFVFRFUiBTRUVOIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjMzOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgU0VFTjs7OzsKK0ZFQjU7QVJBQklDIExFVFRFUiBTSEVFTiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzQ7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgU0hFRU47Ozs7CitGRUI2O0FSQUJJQyBMRVRURVIgU0hFRU4gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM0Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBTSEVFTjs7OzsKK0ZFQjc7QVJBQklDIExFVFRFUiBTSEVFTiBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM0Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIFNIRUVOOzs7OworRkVCODtBUkFCSUMgTEVUVEVSIFNIRUVOIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjM0Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgU0hFRU47Ozs7CitGRUI5O0FSQUJJQyBMRVRURVIgU0FEIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBTQUQ7Ozs7CitGRUJBO0FSQUJJQyBMRVRURVIgU0FEIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgU0FEOzs7OworRkVCQjtBUkFCSUMgTEVUVEVSIFNBRCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM1Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIFNBRDs7OzsKK0ZFQkM7QVJBQklDIExFVFRFUiBTQUQgTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MzU7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBTQUQ7Ozs7CitGRUJEO0FSQUJJQyBMRVRURVIgREFEIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNjs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBEQUQ7Ozs7CitGRUJFO0FSQUJJQyBMRVRURVIgREFEIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNjs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgREFEOzs7OworRkVCRjtBUkFCSUMgTEVUVEVSIERBRCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM2Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIERBRDs7OzsKK0ZFQzA7QVJBQklDIExFVFRFUiBEQUQgTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MzY7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBEQUQ7Ozs7CitGRUMxO0FSQUJJQyBMRVRURVIgVEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNzs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBUQUg7Ozs7CitGRUMyO0FSQUJJQyBMRVRURVIgVEFIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNzs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgVEFIOzs7OworRkVDMztBUkFCSUMgTEVUVEVSIFRBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM3Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIFRBSDs7OzsKK0ZFQzQ7QVJBQklDIExFVFRFUiBUQUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2Mzc7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBUQUg7Ozs7CitGRUM1O0FSQUJJQyBMRVRURVIgWkFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzODs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBESEFIOzs7OworRkVDNjtBUkFCSUMgTEVUVEVSIFpBSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2Mzg7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIERIQUg7Ozs7CitGRUM3O0FSQUJJQyBMRVRURVIgWkFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2Mzg7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgREhBSDs7OzsKK0ZFQzg7QVJBQklDIExFVFRFUiBaQUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2Mzg7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBESEFIOzs7OworRkVDOTtBUkFCSUMgTEVUVEVSIEFJTiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2Mzk7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgQUlOOzs7OworRkVDQTtBUkFCSUMgTEVUVEVSIEFJTiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2Mzk7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEFJTjs7OzsKK0ZFQ0I7QVJBQklDIExFVFRFUiBBSU4gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzOTs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBBSU47Ozs7CitGRUNDO0FSQUJJQyBMRVRURVIgQUlOIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjM5Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgQUlOOzs7OworRkVDRDtBUkFCSUMgTEVUVEVSIEdIQUlOIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzQTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBHSEFJTjs7OzsKK0ZFQ0U7QVJBQklDIExFVFRFUiBHSEFJTiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2M0E7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEdIQUlOOzs7OworRkVDRjtBUkFCSUMgTEVUVEVSIEdIQUlOIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2M0E7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgR0hBSU47Ozs7CitGRUQwO0FSQUJJQyBMRVRURVIgR0hBSU4gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2M0E7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBHSEFJTjs7OzsKK0ZFRDE7QVJBQklDIExFVFRFUiBGRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQxOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEZBOzs7OworRkVEMjtBUkFCSUMgTEVUVEVSIEZFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDE7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEZBOzs7OworRkVEMztBUkFCSUMgTEVUVEVSIEZFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQxOzs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIEZBOzs7OworRkVENDtBUkFCSUMgTEVUVEVSIEZFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0MTs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEZBOzs7OworRkVENTtBUkFCSUMgTEVUVEVSIFFBRiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDI7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgUUFGOzs7OworRkVENjtBUkFCSUMgTEVUVEVSIFFBRiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDI7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFFBRjs7OzsKK0ZFRDc7QVJBQklDIExFVFRFUiBRQUYgSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0Mjs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBRQUY7Ozs7CitGRUQ4O0FSQUJJQyBMRVRURVIgUUFGIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQyOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgUUFGOzs7OworRkVEOTtBUkFCSUMgTEVUVEVSIEtBRiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDM7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgQ0FGOzs7OworRkVEQTtBUkFCSUMgTEVUVEVSIEtBRiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDM7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIENBRjs7OzsKK0ZFREI7QVJBQklDIExFVFRFUiBLQUYgSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0Mzs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBDQUY7Ozs7CitGRURDO0FSQUJJQyBMRVRURVIgS0FGIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQzOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgQ0FGOzs7OworRkVERDtBUkFCSUMgTEVUVEVSIExBTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDQ7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgTEFNOzs7OworRkVERTtBUkFCSUMgTEVUVEVSIExBTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDQ7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIExBTTs7OzsKK0ZFREY7QVJBQklDIExFVFRFUiBMQU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NDs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBMQU07Ozs7CitGRUUwO0FSQUJJQyBMRVRURVIgTEFNIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQ0Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgTEFNOzs7OworRkVFMTtBUkFCSUMgTEVUVEVSIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ1Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIE1FRU07Ozs7CitGRUUyO0FSQUJJQyBMRVRURVIgTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDU7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIE1FRU07Ozs7CitGRUUzO0FSQUJJQyBMRVRURVIgTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ1Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIE1FRU07Ozs7CitGRUU0O0FSQUJJQyBMRVRURVIgTUVFTSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0NTs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIE1FRU07Ozs7CitGRUU1O0FSQUJJQyBMRVRURVIgTk9PTiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDY7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgTk9PTjs7OzsKK0ZFRTY7QVJBQklDIExFVFRFUiBOT09OIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0Njs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgTk9PTjs7OzsKK0ZFRTc7QVJBQklDIExFVFRFUiBOT09OIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDY7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgTk9PTjs7OzsKK0ZFRTg7QVJBQklDIExFVFRFUiBOT09OIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQ2Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgTk9PTjs7OzsKK0ZFRTk7QVJBQklDIExFVFRFUiBIRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ3Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEhBOzs7OworRkVFQTtBUkFCSUMgTEVUVEVSIEhFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDc7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEhBOzs7OworRkVFQjtBUkFCSUMgTEVUVEVSIEhFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ3Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIEhBOzs7OworRkVFQztBUkFCSUMgTEVUVEVSIEhFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0Nzs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEhBOzs7OworRkVFRDtBUkFCSUMgTEVUVEVSIFdBVyBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDg7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgV0FXOzs7OworRkVFRTtBUkFCSUMgTEVUVEVSIFdBVyBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDg7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFdBVzs7OzsKK0ZFRUY7QVJBQklDIExFVFRFUiBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ5Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEFMRUYgTUFRU1VSQUg7Ozs7CitGRUYwO0FSQUJJQyBMRVRURVIgQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0OTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgQUxFRiBNQVFTVVJBSDs7OzsKK0ZFRjE7QVJBQklDIExFVFRFUiBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjRBOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFlBOzs7OworRkVGMjtBUkFCSUMgTEVUVEVSIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NEE7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFlBOzs7OworRkVGMztBUkFCSUMgTEVUVEVSIFlFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjRBOzs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIFlBOzs7OworRkVGNDtBUkFCSUMgTEVUVEVSIFlFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0QTs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIFlBOzs7OworRkVGNTtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBXSVRIIE1BRERBIEFCT1ZFIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NCAwNjIyOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIE1BRERBSCBPTiBMSUdBVFVSRSBMQU0gQUxFRjs7OzsKK0ZFRjY7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgV0lUSCBNQUREQSBBQk9WRSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDQgMDYyMjs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgTUFEREFIIE9OIExJR0FUVVJFIExBTSBBTEVGOzs7OworRkVGNztBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBXSVRIIEhBTVpBIEFCT1ZFIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NCAwNjIzOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEhBTVpBSCBPTiBMSUdBVFVSRSBMQU0gQUxFRjs7OzsKK0ZFRjg7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgV0lUSCBIQU1aQSBBQk9WRSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDQgMDYyMzs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgSEFNWkFIIE9OIExJR0FUVVJFIExBTSBBTEVGOzs7OworRkVGOTtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBXSVRIIEhBTVpBIEJFTE9XIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NCAwNjI1Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEhBTVpBSCBVTkRFUiBMSUdBVFVSRSBMQU0gQUxFRjs7OzsKK0ZFRkE7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgV0lUSCBIQU1aQSBCRUxPVyBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDQgMDYyNTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgSEFNWkFIIFVOREVSIExJR0FUVVJFIExBTSBBTEVGOzs7OworRkVGQjtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDQgMDYyNzs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBMSUdBVFVSRSBMQU0gQUxFRjs7OzsKK0ZFRkM7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ0IDA2Mjc7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIExJR0FUVVJFIExBTSBBTEVGOzs7OworRkVGRjtaRVJPIFdJRFRIIE5PLUJSRUFLIFNQQUNFO0NmOzA7T047Ozs7O047QllURSBPUkRFUiBNQVJLOzs7OworRkYwMTtGVUxMV0lEVEggRVhDTEFNQVRJT04gTUFSSztQbzswO09OOzx3aWRlPiAwMDIxOzs7O047Ozs7OworRkYwMjtGVUxMV0lEVEggUVVPVEFUSU9OIE1BUks7UG87MDtPTjs8d2lkZT4gMDAyMjs7OztOOzs7OzsKK0ZGMDM7RlVMTFdJRFRIIE5VTUJFUiBTSUdOO1BvOzA7RVQ7PHdpZGU+IDAwMjM7Ozs7Tjs7Ozs7CitGRjA0O0ZVTExXSURUSCBET0xMQVIgU0lHTjtTYzswO0VUOzx3aWRlPiAwMDI0Ozs7O047Ozs7OworRkYwNTtGVUxMV0lEVEggUEVSQ0VOVCBTSUdOO1BvOzA7RVQ7PHdpZGU+IDAwMjU7Ozs7Tjs7Ozs7CitGRjA2O0ZVTExXSURUSCBBTVBFUlNBTkQ7UG87MDtPTjs8d2lkZT4gMDAyNjs7OztOOzs7OzsKK0ZGMDc7RlVMTFdJRFRIIEFQT1NUUk9QSEU7UG87MDtPTjs8d2lkZT4gMDAyNzs7OztOOzs7OzsKK0ZGMDg7RlVMTFdJRFRIIExFRlQgUEFSRU5USEVTSVM7UHM7MDtPTjs8d2lkZT4gMDAyODs7OztOO0ZVTExXSURUSCBPUEVOSU5HIFBBUkVOVEhFU0lTOzs7OworRkYwOTtGVUxMV0lEVEggUklHSFQgUEFSRU5USEVTSVM7UGU7MDtPTjs8d2lkZT4gMDAyOTs7OztOO0ZVTExXSURUSCBDTE9TSU5HIFBBUkVOVEhFU0lTOzs7OworRkYwQTtGVUxMV0lEVEggQVNURVJJU0s7UG87MDtPTjs8d2lkZT4gMDAyQTs7OztOOzs7OzsKK0ZGMEI7RlVMTFdJRFRIIFBMVVMgU0lHTjtTbTswO0VUOzx3aWRlPiAwMDJCOzs7O047Ozs7OworRkYwQztGVUxMV0lEVEggQ09NTUE7UG87MDtDUzs8d2lkZT4gMDAyQzs7OztOOzs7OzsKK0ZGMEQ7RlVMTFdJRFRIIEhZUEhFTi1NSU5VUztQZDswO0VUOzx3aWRlPiAwMDJEOzs7O047Ozs7OworRkYwRTtGVUxMV0lEVEggRlVMTCBTVE9QO1BvOzA7Q1M7PHdpZGU+IDAwMkU7Ozs7TjtGVUxMV0lEVEggUEVSSU9EOzs7OworRkYwRjtGVUxMV0lEVEggU09MSURVUztQbzswO0VTOzx3aWRlPiAwMDJGOzs7O047RlVMTFdJRFRIIFNMQVNIOzs7OworRkYxMDtGVUxMV0lEVEggRElHSVQgWkVSTztOZDswO0VOOzx3aWRlPiAwMDMwOzA7MDswO047Ozs7OworRkYxMTtGVUxMV0lEVEggRElHSVQgT05FO05kOzA7RU47PHdpZGU+IDAwMzE7MTsxOzE7Tjs7Ozs7CitGRjEyO0ZVTExXSURUSCBESUdJVCBUV087TmQ7MDtFTjs8d2lkZT4gMDAzMjsyOzI7MjtOOzs7OzsKK0ZGMTM7RlVMTFdJRFRIIERJR0lUIFRIUkVFO05kOzA7RU47PHdpZGU+IDAwMzM7MzszOzM7Tjs7Ozs7CitGRjE0O0ZVTExXSURUSCBESUdJVCBGT1VSO05kOzA7RU47PHdpZGU+IDAwMzQ7NDs0OzQ7Tjs7Ozs7CitGRjE1O0ZVTExXSURUSCBESUdJVCBGSVZFO05kOzA7RU47PHdpZGU+IDAwMzU7NTs1OzU7Tjs7Ozs7CitGRjE2O0ZVTExXSURUSCBESUdJVCBTSVg7TmQ7MDtFTjs8d2lkZT4gMDAzNjs2OzY7NjtOOzs7OzsKK0ZGMTc7RlVMTFdJRFRIIERJR0lUIFNFVkVOO05kOzA7RU47PHdpZGU+IDAwMzc7Nzs3Ozc7Tjs7Ozs7CitGRjE4O0ZVTExXSURUSCBESUdJVCBFSUdIVDtOZDswO0VOOzx3aWRlPiAwMDM4Ozg7ODs4O047Ozs7OworRkYxOTtGVUxMV0lEVEggRElHSVQgTklORTtOZDswO0VOOzx3aWRlPiAwMDM5Ozk7OTs5O047Ozs7OworRkYxQTtGVUxMV0lEVEggQ09MT047UG87MDtDUzs8d2lkZT4gMDAzQTs7OztOOzs7OzsKK0ZGMUI7RlVMTFdJRFRIIFNFTUlDT0xPTjtQbzswO09OOzx3aWRlPiAwMDNCOzs7O047Ozs7OworRkYxQztGVUxMV0lEVEggTEVTUy1USEFOIFNJR047U207MDtPTjs8d2lkZT4gMDAzQzs7OztOOzs7OzsKK0ZGMUQ7RlVMTFdJRFRIIEVRVUFMUyBTSUdOO1NtOzA7T047PHdpZGU+IDAwM0Q7Ozs7Tjs7Ozs7CitGRjFFO0ZVTExXSURUSCBHUkVBVEVSLVRIQU4gU0lHTjtTbTswO09OOzx3aWRlPiAwMDNFOzs7O047Ozs7OworRkYxRjtGVUxMV0lEVEggUVVFU1RJT04gTUFSSztQbzswO09OOzx3aWRlPiAwMDNGOzs7O047Ozs7OworRkYyMDtGVUxMV0lEVEggQ09NTUVSQ0lBTCBBVDtQbzswO09OOzx3aWRlPiAwMDQwOzs7O047Ozs7OworRkYyMTtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgQTtMdTswO0w7PHdpZGU+IDAwNDE7Ozs7Tjs7OztGRjQxOworRkYyMjtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgQjtMdTswO0w7PHdpZGU+IDAwNDI7Ozs7Tjs7OztGRjQyOworRkYyMztGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgQztMdTswO0w7PHdpZGU+IDAwNDM7Ozs7Tjs7OztGRjQzOworRkYyNDtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRDtMdTswO0w7PHdpZGU+IDAwNDQ7Ozs7Tjs7OztGRjQ0OworRkYyNTtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRTtMdTswO0w7PHdpZGU+IDAwNDU7Ozs7Tjs7OztGRjQ1OworRkYyNjtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRjtMdTswO0w7PHdpZGU+IDAwNDY7Ozs7Tjs7OztGRjQ2OworRkYyNztGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRztMdTswO0w7PHdpZGU+IDAwNDc7Ozs7Tjs7OztGRjQ3OworRkYyODtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgSDtMdTswO0w7PHdpZGU+IDAwNDg7Ozs7Tjs7OztGRjQ4OworRkYyOTtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgSTtMdTswO0w7PHdpZGU+IDAwNDk7Ozs7Tjs7OztGRjQ5OworRkYyQTtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgSjtMdTswO0w7PHdpZGU+IDAwNEE7Ozs7Tjs7OztGRjRBOworRkYyQjtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgSztMdTswO0w7PHdpZGU+IDAwNEI7Ozs7Tjs7OztGRjRCOworRkYyQztGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgTDtMdTswO0w7PHdpZGU+IDAwNEM7Ozs7Tjs7OztGRjRDOworRkYyRDtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgTTtMdTswO0w7PHdpZGU+IDAwNEQ7Ozs7Tjs7OztGRjREOworRkYyRTtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgTjtMdTswO0w7PHdpZGU+IDAwNEU7Ozs7Tjs7OztGRjRFOworRkYyRjtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgTztMdTswO0w7PHdpZGU+IDAwNEY7Ozs7Tjs7OztGRjRGOworRkYzMDtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUDtMdTswO0w7PHdpZGU+IDAwNTA7Ozs7Tjs7OztGRjUwOworRkYzMTtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUTtMdTswO0w7PHdpZGU+IDAwNTE7Ozs7Tjs7OztGRjUxOworRkYzMjtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUjtMdTswO0w7PHdpZGU+IDAwNTI7Ozs7Tjs7OztGRjUyOworRkYzMztGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUztMdTswO0w7PHdpZGU+IDAwNTM7Ozs7Tjs7OztGRjUzOworRkYzNDtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgVDtMdTswO0w7PHdpZGU+IDAwNTQ7Ozs7Tjs7OztGRjU0OworRkYzNTtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgVTtMdTswO0w7PHdpZGU+IDAwNTU7Ozs7Tjs7OztGRjU1OworRkYzNjtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgVjtMdTswO0w7PHdpZGU+IDAwNTY7Ozs7Tjs7OztGRjU2OworRkYzNztGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgVztMdTswO0w7PHdpZGU+IDAwNTc7Ozs7Tjs7OztGRjU3OworRkYzODtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgWDtMdTswO0w7PHdpZGU+IDAwNTg7Ozs7Tjs7OztGRjU4OworRkYzOTtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgWTtMdTswO0w7PHdpZGU+IDAwNTk7Ozs7Tjs7OztGRjU5OworRkYzQTtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgWjtMdTswO0w7PHdpZGU+IDAwNUE7Ozs7Tjs7OztGRjVBOworRkYzQjtGVUxMV0lEVEggTEVGVCBTUVVBUkUgQlJBQ0tFVDtQczswO09OOzx3aWRlPiAwMDVCOzs7O047RlVMTFdJRFRIIE9QRU5JTkcgU1FVQVJFIEJSQUNLRVQ7Ozs7CitGRjNDO0ZVTExXSURUSCBSRVZFUlNFIFNPTElEVVM7UG87MDtPTjs8d2lkZT4gMDA1Qzs7OztOO0ZVTExXSURUSCBCQUNLU0xBU0g7Ozs7CitGRjNEO0ZVTExXSURUSCBSSUdIVCBTUVVBUkUgQlJBQ0tFVDtQZTswO09OOzx3aWRlPiAwMDVEOzs7O047RlVMTFdJRFRIIENMT1NJTkcgU1FVQVJFIEJSQUNLRVQ7Ozs7CitGRjNFO0ZVTExXSURUSCBDSVJDVU1GTEVYIEFDQ0VOVDtTazswO09OOzx3aWRlPiAwMDVFOzs7O047RlVMTFdJRFRIIFNQQUNJTkcgQ0lSQ1VNRkxFWDs7OzsKK0ZGM0Y7RlVMTFdJRFRIIExPVyBMSU5FO1BjOzA7T047PHdpZGU+IDAwNUY7Ozs7TjtGVUxMV0lEVEggU1BBQ0lORyBVTkRFUlNDT1JFOzs7OworRkY0MDtGVUxMV0lEVEggR1JBVkUgQUNDRU5UO1NrOzA7T047PHdpZGU+IDAwNjA7Ozs7TjtGVUxMV0lEVEggU1BBQ0lORyBHUkFWRTs7OzsKK0ZGNDE7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBBO0xsOzA7TDs8d2lkZT4gMDA2MTs7OztOOzs7RkYyMTs7RkYyMQorRkY0MjtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEI7TGw7MDtMOzx3aWRlPiAwMDYyOzs7O047OztGRjIyOztGRjIyCitGRjQzO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgQztMbDswO0w7PHdpZGU+IDAwNjM7Ozs7Tjs7O0ZGMjM7O0ZGMjMKK0ZGNDQ7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBEO0xsOzA7TDs8d2lkZT4gMDA2NDs7OztOOzs7RkYyNDs7RkYyNAorRkY0NTtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEU7TGw7MDtMOzx3aWRlPiAwMDY1Ozs7O047OztGRjI1OztGRjI1CitGRjQ2O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgRjtMbDswO0w7PHdpZGU+IDAwNjY7Ozs7Tjs7O0ZGMjY7O0ZGMjYKK0ZGNDc7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBHO0xsOzA7TDs8d2lkZT4gMDA2Nzs7OztOOzs7RkYyNzs7RkYyNworRkY0ODtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEg7TGw7MDtMOzx3aWRlPiAwMDY4Ozs7O047OztGRjI4OztGRjI4CitGRjQ5O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgSTtMbDswO0w7PHdpZGU+IDAwNjk7Ozs7Tjs7O0ZGMjk7O0ZGMjkKK0ZGNEE7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBKO0xsOzA7TDs8d2lkZT4gMDA2QTs7OztOOzs7RkYyQTs7RkYyQQorRkY0QjtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEs7TGw7MDtMOzx3aWRlPiAwMDZCOzs7O047OztGRjJCOztGRjJCCitGRjRDO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgTDtMbDswO0w7PHdpZGU+IDAwNkM7Ozs7Tjs7O0ZGMkM7O0ZGMkMKK0ZGNEQ7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBNO0xsOzA7TDs8d2lkZT4gMDA2RDs7OztOOzs7RkYyRDs7RkYyRAorRkY0RTtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIE47TGw7MDtMOzx3aWRlPiAwMDZFOzs7O047OztGRjJFOztGRjJFCitGRjRGO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgTztMbDswO0w7PHdpZGU+IDAwNkY7Ozs7Tjs7O0ZGMkY7O0ZGMkYKK0ZGNTA7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBQO0xsOzA7TDs8d2lkZT4gMDA3MDs7OztOOzs7RkYzMDs7RkYzMAorRkY1MTtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFE7TGw7MDtMOzx3aWRlPiAwMDcxOzs7O047OztGRjMxOztGRjMxCitGRjUyO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgUjtMbDswO0w7PHdpZGU+IDAwNzI7Ozs7Tjs7O0ZGMzI7O0ZGMzIKK0ZGNTM7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBTO0xsOzA7TDs8d2lkZT4gMDA3Mzs7OztOOzs7RkYzMzs7RkYzMworRkY1NDtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFQ7TGw7MDtMOzx3aWRlPiAwMDc0Ozs7O047OztGRjM0OztGRjM0CitGRjU1O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgVTtMbDswO0w7PHdpZGU+IDAwNzU7Ozs7Tjs7O0ZGMzU7O0ZGMzUKK0ZGNTY7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBWO0xsOzA7TDs8d2lkZT4gMDA3Njs7OztOOzs7RkYzNjs7RkYzNgorRkY1NztGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFc7TGw7MDtMOzx3aWRlPiAwMDc3Ozs7O047OztGRjM3OztGRjM3CitGRjU4O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgWDtMbDswO0w7PHdpZGU+IDAwNzg7Ozs7Tjs7O0ZGMzg7O0ZGMzgKK0ZGNTk7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBZO0xsOzA7TDs8d2lkZT4gMDA3OTs7OztOOzs7RkYzOTs7RkYzOQorRkY1QTtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFo7TGw7MDtMOzx3aWRlPiAwMDdBOzs7O047OztGRjNBOztGRjNBCitGRjVCO0ZVTExXSURUSCBMRUZUIENVUkxZIEJSQUNLRVQ7UHM7MDtPTjs8d2lkZT4gMDA3Qjs7OztOO0ZVTExXSURUSCBPUEVOSU5HIENVUkxZIEJSQUNLRVQ7Ozs7CitGRjVDO0ZVTExXSURUSCBWRVJUSUNBTCBMSU5FO1NtOzA7T047PHdpZGU+IDAwN0M7Ozs7TjtGVUxMV0lEVEggVkVSVElDQUwgQkFSOzs7OworRkY1RDtGVUxMV0lEVEggUklHSFQgQ1VSTFkgQlJBQ0tFVDtQZTswO09OOzx3aWRlPiAwMDdEOzs7O047RlVMTFdJRFRIIENMT1NJTkcgQ1VSTFkgQlJBQ0tFVDs7OzsKK0ZGNUU7RlVMTFdJRFRIIFRJTERFO1NtOzA7T047PHdpZGU+IDAwN0U7Ozs7TjtGVUxMV0lEVEggU1BBQ0lORyBUSUxERTs7OzsKK0ZGNjE7SEFMRldJRFRIIElERU9HUkFQSElDIEZVTEwgU1RPUDtQbzswO09OOzxuYXJyb3c+IDMwMDI7Ozs7TjtIQUxGV0lEVEggSURFT0dSQVBISUMgUEVSSU9EOzs7OworRkY2MjtIQUxGV0lEVEggTEVGVCBDT1JORVIgQlJBQ0tFVDtQczswO09OOzxuYXJyb3c+IDMwMEM7Ozs7TjtIQUxGV0lEVEggT1BFTklORyBDT1JORVIgQlJBQ0tFVDs7OzsKK0ZGNjM7SEFMRldJRFRIIFJJR0hUIENPUk5FUiBCUkFDS0VUO1BlOzA7T047PG5hcnJvdz4gMzAwRDs7OztOO0hBTEZXSURUSCBDTE9TSU5HIENPUk5FUiBCUkFDS0VUOzs7OworRkY2NDtIQUxGV0lEVEggSURFT0dSQVBISUMgQ09NTUE7UG87MDtPTjs8bmFycm93PiAzMDAxOzs7O047Ozs7OworRkY2NTtIQUxGV0lEVEggS0FUQUtBTkEgTUlERExFIERPVDtQbzswO0w7PG5hcnJvdz4gMzBGQjs7OztOOzs7OzsKK0ZGNjY7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBXTztMbzswO0w7PG5hcnJvdz4gMzBGMjs7OztOOzs7OzsKK0ZGNjc7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBBO0xvOzA7TDs8bmFycm93PiAzMEExOzs7O047Ozs7OworRkY2ODtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIEk7TG87MDtMOzxuYXJyb3c+IDMwQTM7Ozs7Tjs7Ozs7CitGRjY5O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgVTtMbzswO0w7PG5hcnJvdz4gMzBBNTs7OztOOzs7OzsKK0ZGNkE7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBFO0xvOzA7TDs8bmFycm93PiAzMEE3Ozs7O047Ozs7OworRkY2QjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIE87TG87MDtMOzxuYXJyb3c+IDMwQTk7Ozs7Tjs7Ozs7CitGRjZDO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgWUE7TG87MDtMOzxuYXJyb3c+IDMwRTM7Ozs7Tjs7Ozs7CitGRjZEO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgWVU7TG87MDtMOzxuYXJyb3c+IDMwRTU7Ozs7Tjs7Ozs7CitGRjZFO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgWU87TG87MDtMOzxuYXJyb3c+IDMwRTc7Ozs7Tjs7Ozs7CitGRjZGO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgVFU7TG87MDtMOzxuYXJyb3c+IDMwQzM7Ozs7Tjs7Ozs7CitGRjcwO0hBTEZXSURUSCBLQVRBS0FOQS1ISVJBR0FOQSBQUk9MT05HRUQgU09VTkQgTUFSSztMbTswO0w7PG5hcnJvdz4gMzBGQzs7OztOOzs7OzsKK0ZGNzE7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBBO0xvOzA7TDs8bmFycm93PiAzMEEyOzs7O047Ozs7OworRkY3MjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEk7TG87MDtMOzxuYXJyb3c+IDMwQTQ7Ozs7Tjs7Ozs7CitGRjczO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgVTtMbzswO0w7PG5hcnJvdz4gMzBBNjs7OztOOzs7OzsKK0ZGNzQ7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBFO0xvOzA7TDs8bmFycm93PiAzMEE4Ozs7O047Ozs7OworRkY3NTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE87TG87MDtMOzxuYXJyb3c+IDMwQUE7Ozs7Tjs7Ozs7CitGRjc2O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgS0E7TG87MDtMOzxuYXJyb3c+IDMwQUI7Ozs7Tjs7Ozs7CitGRjc3O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgS0k7TG87MDtMOzxuYXJyb3c+IDMwQUQ7Ozs7Tjs7Ozs7CitGRjc4O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgS1U7TG87MDtMOzxuYXJyb3c+IDMwQUY7Ozs7Tjs7Ozs7CitGRjc5O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgS0U7TG87MDtMOzxuYXJyb3c+IDMwQjE7Ozs7Tjs7Ozs7CitGRjdBO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgS087TG87MDtMOzxuYXJyb3c+IDMwQjM7Ozs7Tjs7Ozs7CitGRjdCO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU0E7TG87MDtMOzxuYXJyb3c+IDMwQjU7Ozs7Tjs7Ozs7CitGRjdDO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU0k7TG87MDtMOzxuYXJyb3c+IDMwQjc7Ozs7Tjs7Ozs7CitGRjdEO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU1U7TG87MDtMOzxuYXJyb3c+IDMwQjk7Ozs7Tjs7Ozs7CitGRjdFO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU0U7TG87MDtMOzxuYXJyb3c+IDMwQkI7Ozs7Tjs7Ozs7CitGRjdGO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU087TG87MDtMOzxuYXJyb3c+IDMwQkQ7Ozs7Tjs7Ozs7CitGRjgwO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgVEE7TG87MDtMOzxuYXJyb3c+IDMwQkY7Ozs7Tjs7Ozs7CitGRjgxO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgVEk7TG87MDtMOzxuYXJyb3c+IDMwQzE7Ozs7Tjs7Ozs7CitGRjgyO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgVFU7TG87MDtMOzxuYXJyb3c+IDMwQzQ7Ozs7Tjs7Ozs7CitGRjgzO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgVEU7TG87MDtMOzxuYXJyb3c+IDMwQzY7Ozs7Tjs7Ozs7CitGRjg0O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgVE87TG87MDtMOzxuYXJyb3c+IDMwQzg7Ozs7Tjs7Ozs7CitGRjg1O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTkE7TG87MDtMOzxuYXJyb3c+IDMwQ0E7Ozs7Tjs7Ozs7CitGRjg2O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTkk7TG87MDtMOzxuYXJyb3c+IDMwQ0I7Ozs7Tjs7Ozs7CitGRjg3O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTlU7TG87MDtMOzxuYXJyb3c+IDMwQ0M7Ozs7Tjs7Ozs7CitGRjg4O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTkU7TG87MDtMOzxuYXJyb3c+IDMwQ0Q7Ozs7Tjs7Ozs7CitGRjg5O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTk87TG87MDtMOzxuYXJyb3c+IDMwQ0U7Ozs7Tjs7Ozs7CitGRjhBO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgSEE7TG87MDtMOzxuYXJyb3c+IDMwQ0Y7Ozs7Tjs7Ozs7CitGRjhCO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgSEk7TG87MDtMOzxuYXJyb3c+IDMwRDI7Ozs7Tjs7Ozs7CitGRjhDO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgSFU7TG87MDtMOzxuYXJyb3c+IDMwRDU7Ozs7Tjs7Ozs7CitGRjhEO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgSEU7TG87MDtMOzxuYXJyb3c+IDMwRDg7Ozs7Tjs7Ozs7CitGRjhFO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgSE87TG87MDtMOzxuYXJyb3c+IDMwREI7Ozs7Tjs7Ozs7CitGRjhGO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTUE7TG87MDtMOzxuYXJyb3c+IDMwREU7Ozs7Tjs7Ozs7CitGRjkwO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTUk7TG87MDtMOzxuYXJyb3c+IDMwREY7Ozs7Tjs7Ozs7CitGRjkxO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTVU7TG87MDtMOzxuYXJyb3c+IDMwRTA7Ozs7Tjs7Ozs7CitGRjkyO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTUU7TG87MDtMOzxuYXJyb3c+IDMwRTE7Ozs7Tjs7Ozs7CitGRjkzO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTU87TG87MDtMOzxuYXJyb3c+IDMwRTI7Ozs7Tjs7Ozs7CitGRjk0O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgWUE7TG87MDtMOzxuYXJyb3c+IDMwRTQ7Ozs7Tjs7Ozs7CitGRjk1O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgWVU7TG87MDtMOzxuYXJyb3c+IDMwRTY7Ozs7Tjs7Ozs7CitGRjk2O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgWU87TG87MDtMOzxuYXJyb3c+IDMwRTg7Ozs7Tjs7Ozs7CitGRjk3O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgUkE7TG87MDtMOzxuYXJyb3c+IDMwRTk7Ozs7Tjs7Ozs7CitGRjk4O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgUkk7TG87MDtMOzxuYXJyb3c+IDMwRUE7Ozs7Tjs7Ozs7CitGRjk5O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgUlU7TG87MDtMOzxuYXJyb3c+IDMwRUI7Ozs7Tjs7Ozs7CitGRjlBO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgUkU7TG87MDtMOzxuYXJyb3c+IDMwRUM7Ozs7Tjs7Ozs7CitGRjlCO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgUk87TG87MDtMOzxuYXJyb3c+IDMwRUQ7Ozs7Tjs7Ozs7CitGRjlDO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgV0E7TG87MDtMOzxuYXJyb3c+IDMwRUY7Ozs7Tjs7Ozs7CitGRjlEO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTjtMbzswO0w7PG5hcnJvdz4gMzBGMzs7OztOOzs7OzsKK0ZGOUU7SEFMRldJRFRIIEtBVEFLQU5BIFZPSUNFRCBTT1VORCBNQVJLO0xtOzA7TDs8bmFycm93PiAzMDk5Ozs7O047Ozs7OworRkY5RjtIQUxGV0lEVEggS0FUQUtBTkEgU0VNSS1WT0lDRUQgU09VTkQgTUFSSztMbTswO0w7PG5hcnJvdz4gMzA5QTs7OztOOzs7OzsKK0ZGQTA7SEFMRldJRFRIIEhBTkdVTCBGSUxMRVI7TG87MDtMOzxuYXJyb3c+IDMxNjQ7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIENBRSBPTTs7OzsKK0ZGQTE7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgS0lZRU9LO0xvOzA7TDs8bmFycm93PiAzMTMxOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgR0lZRU9HOzs7OworRkZBMjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FOR0tJWUVPSztMbzswO0w7PG5hcnJvdz4gMzEzMjs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HIEdJWUVPRzs7OzsKK0ZGQTM7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgS0lZRU9LLVNJT1M7TG87MDtMOzxuYXJyb3c+IDMxMzM7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBHSVlFT0cgU0lPUzs7OzsKK0ZGQTQ7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTklFVU47TG87MDtMOzxuYXJyb3c+IDMxMzQ7Ozs7Tjs7Ozs7CitGRkE1O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE5JRVVOLUNJRVVDO0xvOzA7TDs8bmFycm93PiAzMTM1Ozs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTklFVU4gSklFVUo7Ozs7CitGRkE2O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE5JRVVOLUhJRVVIO0xvOzA7TDs8bmFycm93PiAzMTM2Ozs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTklFVU4gSElFVUg7Ozs7CitGRkE3O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFRJS0VVVDtMbzswO0w7PG5hcnJvdz4gMzEzNzs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIERJR0VVRDs7OzsKK0ZGQTg7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkdUSUtFVVQ7TG87MDtMOzxuYXJyb3c+IDMxMzg7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FORyBESUdFVUQ7Ozs7CitGRkE5O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMO0xvOzA7TDs8bmFycm93PiAzMTM5Ozs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTElFVUw7Ozs7CitGRkFBO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLUtJWUVPSztMbzswO0w7PG5hcnJvdz4gMzEzQTs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIExJRVVMIEdJWUVPRzs7OzsKK0ZGQUI7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwtTUlFVU07TG87MDtMOzxuYXJyb3c+IDMxM0I7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBNSUVVTTs7OzsKK0ZGQUM7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwtUElFVVA7TG87MDtMOzxuYXJyb3c+IDMxM0M7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBCSUVVQjs7OzsKK0ZGQUQ7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwtU0lPUztMbzswO0w7PG5hcnJvdz4gMzEzRDs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIExJRVVMIFNJT1M7Ozs7CitGRkFFO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLVRISUVVVEg7TG87MDtMOzxuYXJyb3c+IDMxM0U7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBUSUVVVDs7OzsKK0ZGQUY7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwtUEhJRVVQSDtMbzswO0w7PG5hcnJvdz4gMzEzRjs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIExJRVVMIFBJRVVQOzs7OworRkZCMDtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTC1ISUVVSDtMbzswO0w7PG5hcnJvdz4gMzE0MDs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIExJRVVMIEhJRVVIOzs7OworRkZCMTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBNSUVVTTtMbzswO0w7PG5hcnJvdz4gMzE0MTs7OztOOzs7OzsKK0ZGQjI7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUElFVVA7TG87MDtMOzxuYXJyb3c+IDMxNDI7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBCSUVVQjs7OzsKK0ZGQjM7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkdQSUVVUDtMbzswO0w7PG5hcnJvdz4gMzE0Mzs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HIEJJRVVCOzs7OworRkZCNDtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBQSUVVUC1TSU9TO0xvOzA7TDs8bmFycm93PiAzMTQ0Ozs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgQklFVUIgU0lPUzs7OzsKK0ZGQjU7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU0lPUztMbzswO0w7PG5hcnJvdz4gMzE0NTs7OztOOzs7OzsKK0ZGQjY7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkdTSU9TO0xvOzA7TDs8bmFycm93PiAzMTQ2Ozs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkcgU0lPUzs7OzsKK0ZGQjc7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgSUVVTkc7TG87MDtMOzxuYXJyb3c+IDMxNDc7Ozs7Tjs7Ozs7CitGRkI4O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIENJRVVDO0xvOzA7TDs8bmFycm93PiAzMTQ4Ozs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgSklFVUo7Ozs7CitGRkI5O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HQ0lFVUM7TG87MDtMOzxuYXJyb3c+IDMxNDk7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FORyBKSUVVSjs7OzsKK0ZGQkE7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgQ0hJRVVDSDtMbzswO0w7PG5hcnJvdz4gMzE0QTs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIENJRVVDOzs7OworRkZCQjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBLSElFVUtIO0xvOzA7TDs8bmFycm93PiAzMTRCOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgS0lZRU9LOzs7OworRkZCQztIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBUSElFVVRIO0xvOzA7TDs8bmFycm93PiAzMTRDOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgVElFVVQ7Ozs7CitGRkJEO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFBISUVVUEg7TG87MDtMOzxuYXJyb3c+IDMxNEQ7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBQSUVVUDs7OzsKK0ZGQkU7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgSElFVUg7TG87MDtMOzxuYXJyb3c+IDMxNEU7Ozs7Tjs7Ozs7CitGRkMyO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEE7TG87MDtMOzxuYXJyb3c+IDMxNEY7Ozs7Tjs7Ozs7CitGRkMzO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEFFO0xvOzA7TDs8bmFycm93PiAzMTUwOzs7O047Ozs7OworRkZDNDtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBZQTtMbzswO0w7PG5hcnJvdz4gMzE1MTs7OztOOzs7OzsKK0ZGQzU7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUFFO0xvOzA7TDs8bmFycm93PiAzMTUyOzs7O047Ozs7OworRkZDNjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBFTztMbzswO0w7PG5hcnJvdz4gMzE1Mzs7OztOOzs7OzsKK0ZGQzc7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgRTtMbzswO0w7PG5hcnJvdz4gMzE1NDs7OztOOzs7OzsKK0ZGQ0E7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUVPO0xvOzA7TDs8bmFycm93PiAzMTU1Ozs7O047Ozs7OworRkZDQjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBZRTtMbzswO0w7PG5hcnJvdz4gMzE1Njs7OztOOzs7OzsKK0ZGQ0M7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTztMbzswO0w7PG5hcnJvdz4gMzE1Nzs7OztOOzs7OzsKK0ZGQ0Q7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgV0E7TG87MDtMOzxuYXJyb3c+IDMxNTg7Ozs7Tjs7Ozs7CitGRkNFO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFdBRTtMbzswO0w7PG5hcnJvdz4gMzE1OTs7OztOOzs7OzsKK0ZGQ0Y7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgT0U7TG87MDtMOzxuYXJyb3c+IDMxNUE7Ozs7Tjs7Ozs7CitGRkQyO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFlPO0xvOzA7TDs8bmFycm93PiAzMTVCOzs7O047Ozs7OworRkZEMztIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBVO0xvOzA7TDs8bmFycm93PiAzMTVDOzs7O047Ozs7OworRkZENDtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBXRU87TG87MDtMOzxuYXJyb3c+IDMxNUQ7Ozs7Tjs7Ozs7CitGRkQ1O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFdFO0xvOzA7TDs8bmFycm93PiAzMTVFOzs7O047Ozs7OworRkZENjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBXSTtMbzswO0w7PG5hcnJvdz4gMzE1Rjs7OztOOzs7OzsKK0ZGRDc7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWVU7TG87MDtMOzxuYXJyb3c+IDMxNjA7Ozs7Tjs7Ozs7CitGRkRBO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEVVO0xvOzA7TDs8bmFycm93PiAzMTYxOzs7O047Ozs7OworRkZEQjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBZSTtMbzswO0w7PG5hcnJvdz4gMzE2Mjs7OztOOzs7OzsKK0ZGREM7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgSTtMbzswO0w7PG5hcnJvdz4gMzE2Mzs7OztOOzs7OzsKK0ZGRTA7RlVMTFdJRFRIIENFTlQgU0lHTjtTYzswO0VUOzx3aWRlPiAwMEEyOzs7O047Ozs7OworRkZFMTtGVUxMV0lEVEggUE9VTkQgU0lHTjtTYzswO0VUOzx3aWRlPiAwMEEzOzs7O047Ozs7OworRkZFMjtGVUxMV0lEVEggTk9UIFNJR047U207MDtPTjs8d2lkZT4gMDBBQzs7OztOOzs7OzsKK0ZGRTM7RlVMTFdJRFRIIE1BQ1JPTjtTazswO09OOzx3aWRlPiAwMEFGOzs7O047RlVMTFdJRFRIIFNQQUNJTkcgTUFDUk9OOzs7OworRkZFNDtGVUxMV0lEVEggQlJPS0VOIEJBUjtTbzswO09OOzx3aWRlPiAwMEE2Ozs7O047RlVMTFdJRFRIIEJST0tFTiBWRVJUSUNBTCBCQVI7Ozs7CitGRkU1O0ZVTExXSURUSCBZRU4gU0lHTjtTYzswO0VUOzx3aWRlPiAwMEE1Ozs7O047Ozs7OworRkZFNjtGVUxMV0lEVEggV09OIFNJR047U2M7MDtFVDs8d2lkZT4gMjBBOTs7OztOOzs7OzsKK0ZGRTg7SEFMRldJRFRIIEZPUk1TIExJR0hUIFZFUlRJQ0FMO1NtOzA7T047PG5hcnJvdz4gMjUwMjs7OztOOzs7OzsKK0ZGRTk7SEFMRldJRFRIIExFRlRXQVJEUyBBUlJPVztTbTswO09OOzxuYXJyb3c+IDIxOTA7Ozs7Tjs7Ozs7CitGRkVBO0hBTEZXSURUSCBVUFdBUkRTIEFSUk9XO1NtOzA7T047PG5hcnJvdz4gMjE5MTs7OztOOzs7OzsKK0ZGRUI7SEFMRldJRFRIIFJJR0hUV0FSRFMgQVJST1c7U207MDtPTjs8bmFycm93PiAyMTkyOzs7O047Ozs7OworRkZFQztIQUxGV0lEVEggRE9XTldBUkRTIEFSUk9XO1NtOzA7T047PG5hcnJvdz4gMjE5Mzs7OztOOzs7OzsKK0ZGRUQ7SEFMRldJRFRIIEJMQUNLIFNRVUFSRTtTbzswO09OOzxuYXJyb3c+IDI1QTA7Ozs7Tjs7Ozs7CitGRkVFO0hBTEZXSURUSCBXSElURSBDSVJDTEU7U287MDtPTjs8bmFycm93PiAyNUNCOzs7O047Ozs7OworRkZGQztPQkpFQ1QgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSO1NvOzA7T047Ozs7O047Ozs7OworRkZGRDtSRVBMQUNFTUVOVCBDSEFSQUNURVI7U287MDtPTjs7Ozs7Tjs7Ozs7CmRpZmYgLS1naXQgYS9zcmMvZGF0YS91bmljb2RlL1VuaWNvZGVEYXRhLTIuMS44LnR4dCBiL3NyYy9kYXRhL3VuaWNvZGUvVW5pY29kZURhdGEtMi4xLjgudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZjMmY2OTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvZGF0YS91bmljb2RlL1VuaWNvZGVEYXRhLTIuMS44LnR4dApAQCAtMCwwICsxLDY4OTAgQEAKKzAwMDA7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047TlVMTDs7OzsKKzAwMDE7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047U1RBUlQgT0YgSEVBRElORzs7OzsKKzAwMDI7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047U1RBUlQgT0YgVEVYVDs7OzsKKzAwMDM7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047RU5EIE9GIFRFWFQ7Ozs7CiswMDA0Ozxjb250cm9sPjtDYzswO09OOzs7OztOO0VORCBPRiBUUkFOU01JU1NJT047Ozs7CiswMDA1Ozxjb250cm9sPjtDYzswO09OOzs7OztOO0VOUVVJUlk7Ozs7CiswMDA2Ozxjb250cm9sPjtDYzswO09OOzs7OztOO0FDS05PV0xFREdFOzs7OworMDAwNzs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtCRUxMOzs7OworMDAwODs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtCQUNLU1BBQ0U7Ozs7CiswMDA5Ozxjb250cm9sPjtDYzswO1M7Ozs7O047SE9SSVpPTlRBTCBUQUJVTEFUSU9OOzs7OworMDAwQTs8Y29udHJvbD47Q2M7MDtCOzs7OztOO0xJTkUgRkVFRDs7OzsKKzAwMEI7PGNvbnRyb2w+O0NjOzA7Uzs7Ozs7TjtWRVJUSUNBTCBUQUJVTEFUSU9OOzs7OworMDAwQzs8Y29udHJvbD47Q2M7MDtCOzs7OztOO0ZPUk0gRkVFRDs7OzsKKzAwMEQ7PGNvbnRyb2w+O0NjOzA7Qjs7Ozs7TjtDQVJSSUFHRSBSRVRVUk47Ozs7CiswMDBFOzxjb250cm9sPjtDYzswO09OOzs7OztOO1NISUZUIE9VVDs7OzsKKzAwMEY7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047U0hJRlQgSU47Ozs7CiswMDEwOzxjb250cm9sPjtDYzswO09OOzs7OztOO0RBVEEgTElOSyBFU0NBUEU7Ozs7CiswMDExOzxjb250cm9sPjtDYzswO09OOzs7OztOO0RFVklDRSBDT05UUk9MIE9ORTs7OzsKKzAwMTI7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047REVWSUNFIENPTlRST0wgVFdPOzs7OworMDAxMzs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtERVZJQ0UgQ09OVFJPTCBUSFJFRTs7OzsKKzAwMTQ7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047REVWSUNFIENPTlRST0wgRk9VUjs7OzsKKzAwMTU7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047TkVHQVRJVkUgQUNLTk9XTEVER0U7Ozs7CiswMDE2Ozxjb250cm9sPjtDYzswO09OOzs7OztOO1NZTkNIUk9OT1VTIElETEU7Ozs7CiswMDE3Ozxjb250cm9sPjtDYzswO09OOzs7OztOO0VORCBPRiBUUkFOU01JU1NJT04gQkxPQ0s7Ozs7CiswMDE4Ozxjb250cm9sPjtDYzswO09OOzs7OztOO0NBTkNFTDs7OzsKKzAwMTk7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047RU5EIE9GIE1FRElVTTs7OzsKKzAwMUE7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047U1VCU1RJVFVURTs7OzsKKzAwMUI7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047RVNDQVBFOzs7OworMDAxQzs8Y29udHJvbD47Q2M7MDtCOzs7OztOO0ZJTEUgU0VQQVJBVE9SOzs7OworMDAxRDs8Y29udHJvbD47Q2M7MDtCOzs7OztOO0dST1VQIFNFUEFSQVRPUjs7OzsKKzAwMUU7PGNvbnRyb2w+O0NjOzA7Qjs7Ozs7TjtSRUNPUkQgU0VQQVJBVE9SOzs7OworMDAxRjs8Y29udHJvbD47Q2M7MDtTOzs7OztOO1VOSVQgU0VQQVJBVE9SOzs7OworMDAyMDtTUEFDRTtaczswO1dTOzs7OztOOzs7OzsKKzAwMjE7RVhDTEFNQVRJT04gTUFSSztQbzswO09OOzs7OztOOzs7OzsKKzAwMjI7UVVPVEFUSU9OIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMDIzO05VTUJFUiBTSUdOO1BvOzA7RVQ7Ozs7O047Ozs7OworMDAyNDtET0xMQVIgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzAwMjU7UEVSQ0VOVCBTSUdOO1BvOzA7RVQ7Ozs7O047Ozs7OworMDAyNjtBTVBFUlNBTkQ7UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMDI3O0FQT1NUUk9QSEU7UG87MDtPTjs7Ozs7TjtBUE9TVFJPUEhFLVFVT1RFOzs7OworMDAyODtMRUZUIFBBUkVOVEhFU0lTO1BzOzA7T047Ozs7O1k7T1BFTklORyBQQVJFTlRIRVNJUzs7OzsKKzAwMjk7UklHSFQgUEFSRU5USEVTSVM7UGU7MDtPTjs7Ozs7WTtDTE9TSU5HIFBBUkVOVEhFU0lTOzs7OworMDAyQTtBU1RFUklTSztQbzswO09OOzs7OztOOzs7OzsKKzAwMkI7UExVUyBTSUdOO1NtOzA7RVQ7Ozs7O047Ozs7OworMDAyQztDT01NQTtQbzswO0NTOzs7OztOOzs7OzsKKzAwMkQ7SFlQSEVOLU1JTlVTO1BkOzA7RVQ7Ozs7O047Ozs7OworMDAyRTtGVUxMIFNUT1A7UG87MDtDUzs7Ozs7TjtQRVJJT0Q7Ozs7CiswMDJGO1NPTElEVVM7UG87MDtFUzs7Ozs7TjtTTEFTSDs7OzsKKzAwMzA7RElHSVQgWkVSTztOZDswO0VOOzswOzA7MDtOOzs7OzsKKzAwMzE7RElHSVQgT05FO05kOzA7RU47OzE7MTsxO047Ozs7OworMDAzMjtESUdJVCBUV087TmQ7MDtFTjs7MjsyOzI7Tjs7Ozs7CiswMDMzO0RJR0lUIFRIUkVFO05kOzA7RU47OzM7MzszO047Ozs7OworMDAzNDtESUdJVCBGT1VSO05kOzA7RU47OzQ7NDs0O047Ozs7OworMDAzNTtESUdJVCBGSVZFO05kOzA7RU47OzU7NTs1O047Ozs7OworMDAzNjtESUdJVCBTSVg7TmQ7MDtFTjs7Njs2OzY7Tjs7Ozs7CiswMDM3O0RJR0lUIFNFVkVOO05kOzA7RU47Ozc7Nzs3O047Ozs7OworMDAzODtESUdJVCBFSUdIVDtOZDswO0VOOzs4Ozg7ODtOOzs7OzsKKzAwMzk7RElHSVQgTklORTtOZDswO0VOOzs5Ozk7OTtOOzs7OzsKKzAwM0E7Q09MT047UG87MDtDUzs7Ozs7Tjs7Ozs7CiswMDNCO1NFTUlDT0xPTjtQbzswO09OOzs7OztOOzs7OzsKKzAwM0M7TEVTUy1USEFOIFNJR047U207MDtPTjs7Ozs7WTs7Ozs7CiswMDNEO0VRVUFMUyBTSUdOO1NtOzA7T047Ozs7O047Ozs7OworMDAzRTtHUkVBVEVSLVRIQU4gU0lHTjtTbTswO09OOzs7OztZOzs7OzsKKzAwM0Y7UVVFU1RJT04gTUFSSztQbzswO09OOzs7OztOOzs7OzsKKzAwNDA7Q09NTUVSQ0lBTCBBVDtQbzswO09OOzs7OztOOzs7OzsKKzAwNDE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQTtMdTswO0w7Ozs7O047Ozs7MDA2MTsKKzAwNDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQjtMdTswO0w7Ozs7O047Ozs7MDA2MjsKKzAwNDM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQztMdTswO0w7Ozs7O047Ozs7MDA2MzsKKzAwNDQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRDtMdTswO0w7Ozs7O047Ozs7MDA2NDsKKzAwNDU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRTtMdTswO0w7Ozs7O047Ozs7MDA2NTsKKzAwNDY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRjtMdTswO0w7Ozs7O047Ozs7MDA2NjsKKzAwNDc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRztMdTswO0w7Ozs7O047Ozs7MDA2NzsKKzAwNDg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSDtMdTswO0w7Ozs7O047Ozs7MDA2ODsKKzAwNDk7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSTtMdTswO0w7Ozs7O047Ozs7MDA2OTsKKzAwNEE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSjtMdTswO0w7Ozs7O047Ozs7MDA2QTsKKzAwNEI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSztMdTswO0w7Ozs7O047Ozs7MDA2QjsKKzAwNEM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTDtMdTswO0w7Ozs7O047Ozs7MDA2QzsKKzAwNEQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTTtMdTswO0w7Ozs7O047Ozs7MDA2RDsKKzAwNEU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTjtMdTswO0w7Ozs7O047Ozs7MDA2RTsKKzAwNEY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTztMdTswO0w7Ozs7O047Ozs7MDA2RjsKKzAwNTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUDtMdTswO0w7Ozs7O047Ozs7MDA3MDsKKzAwNTE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUTtMdTswO0w7Ozs7O047Ozs7MDA3MTsKKzAwNTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUjtMdTswO0w7Ozs7O047Ozs7MDA3MjsKKzAwNTM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUztMdTswO0w7Ozs7O047Ozs7MDA3MzsKKzAwNTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVDtMdTswO0w7Ozs7O047Ozs7MDA3NDsKKzAwNTU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVTtMdTswO0w7Ozs7O047Ozs7MDA3NTsKKzAwNTY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVjtMdTswO0w7Ozs7O047Ozs7MDA3NjsKKzAwNTc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVztMdTswO0w7Ozs7O047Ozs7MDA3NzsKKzAwNTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWDtMdTswO0w7Ozs7O047Ozs7MDA3ODsKKzAwNTk7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWTtMdTswO0w7Ozs7O047Ozs7MDA3OTsKKzAwNUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWjtMdTswO0w7Ozs7O047Ozs7MDA3QTsKKzAwNUI7TEVGVCBTUVVBUkUgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgU1FVQVJFIEJSQUNLRVQ7Ozs7CiswMDVDO1JFVkVSU0UgU09MSURVUztQbzswO09OOzs7OztOO0JBQ0tTTEFTSDs7OzsKKzAwNUQ7UklHSFQgU1FVQVJFIEJSQUNLRVQ7UGU7MDtPTjs7Ozs7WTtDTE9TSU5HIFNRVUFSRSBCUkFDS0VUOzs7OworMDA1RTtDSVJDVU1GTEVYIEFDQ0VOVDtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwMjs7OztOO1NQQUNJTkcgQ0lSQ1VNRkxFWDs7OzsKKzAwNUY7TE9XIExJTkU7UGM7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMzI7Ozs7TjtTUEFDSU5HIFVOREVSU0NPUkU7Ozs7CiswMDYwO0dSQVZFIEFDQ0VOVDtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwMDs7OztOO1NQQUNJTkcgR1JBVkU7Ozs7CiswMDYxO0xBVElOIFNNQUxMIExFVFRFUiBBO0xsOzA7TDs7Ozs7Tjs7OzAwNDE7OzAwNDEKKzAwNjI7TEFUSU4gU01BTEwgTEVUVEVSIEI7TGw7MDtMOzs7OztOOzs7MDA0Mjs7MDA0MgorMDA2MztMQVRJTiBTTUFMTCBMRVRURVIgQztMbDswO0w7Ozs7O047OzswMDQzOzswMDQzCiswMDY0O0xBVElOIFNNQUxMIExFVFRFUiBEO0xsOzA7TDs7Ozs7Tjs7OzAwNDQ7OzAwNDQKKzAwNjU7TEFUSU4gU01BTEwgTEVUVEVSIEU7TGw7MDtMOzs7OztOOzs7MDA0NTs7MDA0NQorMDA2NjtMQVRJTiBTTUFMTCBMRVRURVIgRjtMbDswO0w7Ozs7O047OzswMDQ2OzswMDQ2CiswMDY3O0xBVElOIFNNQUxMIExFVFRFUiBHO0xsOzA7TDs7Ozs7Tjs7OzAwNDc7OzAwNDcKKzAwNjg7TEFUSU4gU01BTEwgTEVUVEVSIEg7TGw7MDtMOzs7OztOOzs7MDA0ODs7MDA0OAorMDA2OTtMQVRJTiBTTUFMTCBMRVRURVIgSTtMbDswO0w7Ozs7O047OzswMDQ5OzswMDQ5CiswMDZBO0xBVElOIFNNQUxMIExFVFRFUiBKO0xsOzA7TDs7Ozs7Tjs7OzAwNEE7OzAwNEEKKzAwNkI7TEFUSU4gU01BTEwgTEVUVEVSIEs7TGw7MDtMOzs7OztOOzs7MDA0Qjs7MDA0QgorMDA2QztMQVRJTiBTTUFMTCBMRVRURVIgTDtMbDswO0w7Ozs7O047OzswMDRDOzswMDRDCiswMDZEO0xBVElOIFNNQUxMIExFVFRFUiBNO0xsOzA7TDs7Ozs7Tjs7OzAwNEQ7OzAwNEQKKzAwNkU7TEFUSU4gU01BTEwgTEVUVEVSIE47TGw7MDtMOzs7OztOOzs7MDA0RTs7MDA0RQorMDA2RjtMQVRJTiBTTUFMTCBMRVRURVIgTztMbDswO0w7Ozs7O047OzswMDRGOzswMDRGCiswMDcwO0xBVElOIFNNQUxMIExFVFRFUiBQO0xsOzA7TDs7Ozs7Tjs7OzAwNTA7OzAwNTAKKzAwNzE7TEFUSU4gU01BTEwgTEVUVEVSIFE7TGw7MDtMOzs7OztOOzs7MDA1MTs7MDA1MQorMDA3MjtMQVRJTiBTTUFMTCBMRVRURVIgUjtMbDswO0w7Ozs7O047OzswMDUyOzswMDUyCiswMDczO0xBVElOIFNNQUxMIExFVFRFUiBTO0xsOzA7TDs7Ozs7Tjs7OzAwNTM7OzAwNTMKKzAwNzQ7TEFUSU4gU01BTEwgTEVUVEVSIFQ7TGw7MDtMOzs7OztOOzs7MDA1NDs7MDA1NAorMDA3NTtMQVRJTiBTTUFMTCBMRVRURVIgVTtMbDswO0w7Ozs7O047OzswMDU1OzswMDU1CiswMDc2O0xBVElOIFNNQUxMIExFVFRFUiBWO0xsOzA7TDs7Ozs7Tjs7OzAwNTY7OzAwNTYKKzAwNzc7TEFUSU4gU01BTEwgTEVUVEVSIFc7TGw7MDtMOzs7OztOOzs7MDA1Nzs7MDA1NworMDA3ODtMQVRJTiBTTUFMTCBMRVRURVIgWDtMbDswO0w7Ozs7O047OzswMDU4OzswMDU4CiswMDc5O0xBVElOIFNNQUxMIExFVFRFUiBZO0xsOzA7TDs7Ozs7Tjs7OzAwNTk7OzAwNTkKKzAwN0E7TEFUSU4gU01BTEwgTEVUVEVSIFo7TGw7MDtMOzs7OztOOzs7MDA1QTs7MDA1QQorMDA3QjtMRUZUIENVUkxZIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIENVUkxZIEJSQUNLRVQ7Ozs7CiswMDdDO1ZFUlRJQ0FMIExJTkU7U207MDtPTjs7Ozs7TjtWRVJUSUNBTCBCQVI7Ozs7CiswMDdEO1JJR0hUIENVUkxZIEJSQUNLRVQ7UGU7MDtPTjs7Ozs7WTtDTE9TSU5HIENVUkxZIEJSQUNLRVQ7Ozs7CiswMDdFO1RJTERFO1NtOzA7T047Ozs7O047Ozs7OworMDA3Rjs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7TjtERUxFVEU7Ozs7CiswMDgwOzxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwODE7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA4Mjs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDgzOzxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwODQ7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA4NTs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDg2Ozxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwODc7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA4ODs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDg5Ozxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOEE7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA4Qjs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDhDOzxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOEQ7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA4RTs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDhGOzxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOTA7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA5MTs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDkyOzxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOTM7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA5NDs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDk1Ozxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOTY7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA5Nzs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDk4Ozxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOTk7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA5QTs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDlCOzxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOUM7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDA5RDs8Y29udHJvbD47Q2M7MDtPTjs7Ozs7Tjs7Ozs7CiswMDlFOzxjb250cm9sPjtDYzswO09OOzs7OztOOzs7OzsKKzAwOUY7PGNvbnRyb2w+O0NjOzA7T047Ozs7O047Ozs7OworMDBBMDtOTy1CUkVBSyBTUEFDRTtaczswO1dTOzxub0JyZWFrPiAwMDIwOzs7O047Tk9OLUJSRUFLSU5HIFNQQUNFOzs7OworMDBBMTtJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLO1BvOzA7T047Ozs7O047Ozs7OworMDBBMjtDRU5UIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CiswMEEzO1BPVU5EIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CiswMEE0O0NVUlJFTkNZIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CiswMEE1O1lFTiBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMDBBNjtCUk9LRU4gQkFSO1NvOzA7T047Ozs7O047QlJPS0VOIFZFUlRJQ0FMIEJBUjs7OzsKKzAwQTc7U0VDVElPTiBTSUdOO1NvOzA7T047Ozs7O047Ozs7OworMDBBODtESUFFUkVTSVM7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDg7Ozs7TjtTUEFDSU5HIERJQUVSRVNJUzs7OzsKKzAwQTk7Q09QWVJJR0hUIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CiswMEFBO0ZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SO0xsOzA7TDs8c3VwZXI+IDAwNjE7Ozs7Tjs7Ozs7CiswMEFCO0xFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLO1BpOzA7T047Ozs7O1k7TEVGVCBQT0lOVElORyBHVUlMTEVNRVQ7Ozs7CiswMEFDO05PVCBTSUdOO1NtOzA7T047Ozs7O047Ozs7OworMDBBRDtTT0ZUIEhZUEhFTjtQZDswO09OOzs7OztOOzs7OzsKKzAwQUU7UkVHSVNURVJFRCBTSUdOO1NvOzA7T047Ozs7O047UkVHSVNURVJFRCBUUkFERSBNQVJLIFNJR047Ozs7CiswMEFGO01BQ1JPTjtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwNDs7OztOO1NQQUNJTkcgTUFDUk9OOzs7OworMDBCMDtERUdSRUUgU0lHTjtTbzswO0VUOzs7OztOOzs7OzsKKzAwQjE7UExVUy1NSU5VUyBTSUdOO1NtOzA7RVQ7Ozs7O047UExVUy1PUi1NSU5VUyBTSUdOOzs7OworMDBCMjtTVVBFUlNDUklQVCBUV087Tm87MDtFTjs8c3VwZXI+IDAwMzI7MjsyOzI7TjtTVVBFUlNDUklQVCBESUdJVCBUV087Ozs7CiswMEIzO1NVUEVSU0NSSVBUIFRIUkVFO05vOzA7RU47PHN1cGVyPiAwMDMzOzM7MzszO047U1VQRVJTQ1JJUFQgRElHSVQgVEhSRUU7Ozs7CiswMEI0O0FDVVRFIEFDQ0VOVDtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwMTs7OztOO1NQQUNJTkcgQUNVVEU7Ozs7CiswMEI1O01JQ1JPIFNJR047TGw7MDtMOzxjb21wYXQ+IDAzQkM7Ozs7Tjs7Ozs7CiswMEI2O1BJTENST1cgU0lHTjtTbzswO09OOzs7OztOO1BBUkFHUkFQSCBTSUdOOzs7OworMDBCNztNSURETEUgRE9UO1BvOzA7T047Ozs7O047Ozs7OworMDBCODtDRURJTExBO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzI3Ozs7O047U1BBQ0lORyBDRURJTExBOzs7OworMDBCOTtTVVBFUlNDUklQVCBPTkU7Tm87MDtFTjs8c3VwZXI+IDAwMzE7MTsxOzE7TjtTVVBFUlNDUklQVCBESUdJVCBPTkU7Ozs7CiswMEJBO01BU0NVTElORSBPUkRJTkFMIElORElDQVRPUjtMbDswO0w7PHN1cGVyPiAwMDZGOzs7O047Ozs7OworMDBCQjtSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUks7UGY7MDtPTjs7Ozs7WTtSSUdIVCBQT0lOVElORyBHVUlMTEVNRVQ7Ozs7CiswMEJDO1ZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUjtObzswO09OOzxmcmFjdGlvbj4gMDAzMSAyMDQ0IDAwMzQ7OzsxLzQ7TjtGUkFDVElPTiBPTkUgUVVBUlRFUjs7OzsKKzAwQkQ7VlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGO05vOzA7T047PGZyYWN0aW9uPiAwMDMxIDIwNDQgMDAzMjs7OzEvMjtOO0ZSQUNUSU9OIE9ORSBIQUxGOzs7OworMDBCRTtWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlM7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzMgMjA0NCAwMDM0Ozs7My80O047RlJBQ1RJT04gVEhSRUUgUVVBUlRFUlM7Ozs7CiswMEJGO0lOVkVSVEVEIFFVRVNUSU9OIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMEMwO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRTtMdTswO0w7MDA0MSAwMzAwOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBHUkFWRTs7OzAwRTA7CiswMEMxO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURTtMdTswO0w7MDA0MSAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBBQ1VURTs7OzAwRTE7CiswMEMyO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDQxIDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIENJUkNVTUZMRVg7OzswMEUyOworMDBDMztMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREU7THU7MDtMOzAwNDEgMDMwMzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgVElMREU7OzswMEUzOworMDBDNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDQxIDAzMDg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIERJQUVSRVNJUzs7OzAwRTQ7CiswMEM1O0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFO0x1OzA7TDswMDQxIDAzMEE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFJJTkc7OzswMEU1OworMDBDNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBFOzs7MDBFNjsKKzAwQzc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEE7THU7MDtMOzAwNDMgMDMyNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEMgQ0VESUxMQTs7OzAwRTc7CiswMEM4O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRTtMdTswO0w7MDA0NSAwMzAwOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBHUkFWRTs7OzAwRTg7CiswMEM5O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURTtMdTswO0w7MDA0NSAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBBQ1VURTs7OzAwRTk7CiswMENBO0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDQ1IDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIENJUkNVTUZMRVg7OzswMEVBOworMDBDQjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDQ1IDAzMDg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIERJQUVSRVNJUzs7OzAwRUI7CiswMENDO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBHUkFWRTtMdTswO0w7MDA0OSAwMzAwOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBHUkFWRTs7OzAwRUM7CiswMENEO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURTtMdTswO0w7MDA0OSAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBBQ1VURTs7OzAwRUQ7CiswMENFO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDQ5IDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIENJUkNVTUZMRVg7OzswMEVFOworMDBDRjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDQ5IDAzMDg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIERJQUVSRVNJUzs7OzAwRUY7CiswMEQwO0xBVElOIENBUElUQUwgTEVUVEVSIEVUSDtMdTswO0w7Ozs7O047O0ljZWxhbmRpYzs7MDBGMDsKKzAwRDE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFO0x1OzA7TDswMDRFIDAzMDM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFRJTERFOzs7MDBGMTsKKzAwRDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFO0x1OzA7TDswMDRGIDAzMDA7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIEdSQVZFOzs7MDBGMjsKKzAwRDM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFO0x1OzA7TDswMDRGIDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIEFDVVRFOzs7MDBGMzsKKzAwRDQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNEYgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gQ0lSQ1VNRkxFWDs7OzAwRjQ7CiswMEQ1O0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERTtMdTswO0w7MDA0RiAwMzAzOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBUSUxERTs7OzAwRjU7CiswMEQ2O0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVM7THU7MDtMOzAwNEYgMDMwODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gRElBRVJFU0lTOzs7MDBGNjsKKzAwRDc7TVVMVElQTElDQVRJT04gU0lHTjtTbTswO09OOzs7OztOOzs7OzsKKzAwRDg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBTTEFTSDs7OzAwRjg7CiswMEQ5O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRTtMdTswO0w7MDA1NSAwMzAwOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBHUkFWRTs7OzAwRjk7CiswMERBO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURTtMdTswO0w7MDA1NSAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBBQ1VURTs7OzAwRkE7CiswMERCO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDU1IDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIENJUkNVTUZMRVg7OzswMEZCOworMDBEQztMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDU1IDAzMDg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIERJQUVSRVNJUzs7OzAwRkM7CiswMEREO0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBBQ1VURTtMdTswO0w7MDA1OSAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBBQ1VURTs7OzAwRkQ7CiswMERFO0xBVElOIENBUElUQUwgTEVUVEVSIFRIT1JOO0x1OzA7TDs7Ozs7Tjs7SWNlbGFuZGljOzswMEZFOworMDBERjtMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUztMbDswO0w7Ozs7O047O0dlcm1hbjs7OworMDBFMDtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFO0xsOzA7TDswMDYxIDAzMDA7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBHUkFWRTs7MDBDMDs7MDBDMAorMDBFMTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFO0xsOzA7TDswMDYxIDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBBQ1VURTs7MDBDMTs7MDBDMQorMDBFMjtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNjEgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIENJUkNVTUZMRVg7OzAwQzI7OzAwQzIKKzAwRTM7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERTtMbDswO0w7MDA2MSAwMzAzOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgVElMREU7OzAwQzM7OzAwQzMKKzAwRTQ7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzAwNjEgMDMwODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIERJQUVSRVNJUzs7MDBDNDs7MDBDNAorMDBFNTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkU7TGw7MDtMOzAwNjEgMDMwQTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIFJJTkc7OzAwQzU7OzAwQzUKKzAwRTY7TEFUSU4gU01BTEwgTEVUVEVSIEFFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBFOzswMEM2OzswMEM2CiswMEU3O0xBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQTtMbDswO0w7MDA2MyAwMzI3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEMgQ0VESUxMQTs7MDBDNzs7MDBDNworMDBFODtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEdSQVZFO0xsOzA7TDswMDY1IDAzMDA7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRSBHUkFWRTs7MDBDODs7MDBDOAorMDBFOTtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEFDVVRFO0xsOzA7TDswMDY1IDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRSBBQ1VURTs7MDBDOTs7MDBDOQorMDBFQTtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNjUgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFIENJUkNVTUZMRVg7OzAwQ0E7OzAwQ0EKKzAwRUI7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzAwNjUgMDMwODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFIERJQUVSRVNJUzs7MDBDQjs7MDBDQgorMDBFQztMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEdSQVZFO0xsOzA7TDswMDY5IDAzMDA7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSSBHUkFWRTs7MDBDQzs7MDBDQworMDBFRDtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEFDVVRFO0xsOzA7TDswMDY5IDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSSBBQ1VURTs7MDBDRDs7MDBDRAorMDBFRTtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNjkgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIENJUkNVTUZMRVg7OzAwQ0U7OzAwQ0UKKzAwRUY7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzAwNjkgMDMwODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIERJQUVSRVNJUzs7MDBDRjs7MDBDRgorMDBGMDtMQVRJTiBTTUFMTCBMRVRURVIgRVRIO0xsOzA7TDs7Ozs7Tjs7SWNlbGFuZGljOzAwRDA7OzAwRDAKKzAwRjE7TEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBUSUxERTtMbDswO0w7MDA2RSAwMzAzOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE4gVElMREU7OzAwRDE7OzAwRDEKKzAwRjI7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBHUkFWRTtMbDswO0w7MDA2RiAwMzAwOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gR1JBVkU7OzAwRDI7OzAwRDIKKzAwRjM7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBBQ1VURTtMbDswO0w7MDA2RiAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gQUNVVEU7OzAwRDM7OzAwRDMKKzAwRjQ7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDZGIDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBDSVJDVU1GTEVYOzswMEQ0OzswMEQ0CiswMEY1O0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREU7TGw7MDtMOzAwNkYgMDMwMzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIFRJTERFOzswMEQ1OzswMEQ1CiswMEY2O0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTO0xsOzA7TDswMDZGIDAzMDg7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBESUFFUkVTSVM7OzAwRDY7OzAwRDYKKzAwRjc7RElWSVNJT04gU0lHTjtTbTswO09OOzs7OztOOzs7OzsKKzAwRjg7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIFNMQVNIOzswMEQ4OzswMEQ4CiswMEY5O0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggR1JBVkU7TGw7MDtMOzAwNzUgMDMwMDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIEdSQVZFOzswMEQ5OzswMEQ5CiswMEZBO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQUNVVEU7TGw7MDtMOzAwNzUgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIEFDVVRFOzswMERBOzswMERBCiswMEZCO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA3NSAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgQ0lSQ1VNRkxFWDs7MDBEQjs7MDBEQgorMDBGQztMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA3NSAwMzA4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgRElBRVJFU0lTOzswMERDOzswMERDCiswMEZEO0xBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQUNVVEU7TGw7MDtMOzAwNzkgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBZIEFDVVRFOzswMEREOzswMERECiswMEZFO0xBVElOIFNNQUxMIExFVFRFUiBUSE9STjtMbDswO0w7Ozs7O047O0ljZWxhbmRpYzswMERFOzswMERFCiswMEZGO0xBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTO0xsOzA7TDswMDc5IDAzMDg7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWSBESUFFUkVTSVM7OzAxNzg7OzAxNzgKKzAxMDA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIE1BQ1JPTjtMdTswO0w7MDA0MSAwMzA0Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBNQUNST047OzswMTAxOworMDEwMTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIE1BQ1JPTjtMbDswO0w7MDA2MSAwMzA0Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgTUFDUk9OOzswMTAwOzswMTAwCiswMTAyO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRTtMdTswO0w7MDA0MSAwMzA2Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBCUkVWRTs7OzAxMDM7CiswMTAzO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQlJFVkU7TGw7MDtMOzAwNjEgMDMwNjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIEJSRVZFOzswMTAyOzswMTAyCiswMTA0O0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBPR09ORUs7THU7MDtMOzAwNDEgMDMyODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgT0dPTkVLOzs7MDEwNTsKKzAxMDU7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBPR09ORUs7TGw7MDtMOzAwNjEgMDMyODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIE9HT05FSzs7MDEwNDs7MDEwNAorMDEwNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQUNVVEU7THU7MDtMOzAwNDMgMDMwMTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEMgQUNVVEU7OzswMTA3OworMDEwNztMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIEFDVVRFO0xsOzA7TDswMDYzIDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQyBBQ1VURTs7MDEwNjs7MDEwNgorMDEwODtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA0MyAwMzAyOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBDSVJDVU1GTEVYOzs7MDEwOTsKKzAxMDk7TEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDYzIDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQyBDSVJDVU1GTEVYOzswMTA4OzswMTA4CiswMTBBO0xBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNDMgMDMwNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEMgRE9UOzs7MDEwQjsKKzAxMEI7TEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNjMgMDMwNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDIERPVDs7MDEwQTs7MDEwQQorMDEwQztMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0FST047THU7MDtMOzAwNDMgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEMgSEFDRUs7OzswMTBEOworMDEwRDtMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENBUk9OO0xsOzA7TDswMDYzIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQyBIQUNFSzs7MDEwQzs7MDEwQworMDEwRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggQ0FST047THU7MDtMOzAwNDQgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEQgSEFDRUs7OzswMTBGOworMDEwRjtMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIENBUk9OO0xsOzA7TDswMDY0IDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRCBIQUNFSzs7MDEwRTs7MDEwRQorMDExMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggU1RST0tFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIEJBUjs7OzAxMTE7CiswMTExO0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRCBCQVI7OzAxMTA7OzAxMTAKKzAxMTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE1BQ1JPTjtMdTswO0w7MDA0NSAwMzA0Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBNQUNST047OzswMTEzOworMDExMztMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE1BQ1JPTjtMbDswO0w7MDA2NSAwMzA0Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEUgTUFDUk9OOzswMTEyOzswMTEyCiswMTE0O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBCUkVWRTtMdTswO0w7MDA0NSAwMzA2Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBCUkVWRTs7OzAxMTU7CiswMTE1O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQlJFVkU7TGw7MDtMOzAwNjUgMDMwNjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFIEJSRVZFOzswMTE0OzswMTE0CiswMTE2O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNDUgMDMwNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEUgRE9UOzs7MDExNzsKKzAxMTc7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNjUgMDMwNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFIERPVDs7MDExNjs7MDExNgorMDExODtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggT0dPTkVLO0x1OzA7TDswMDQ1IDAzMjg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIE9HT05FSzs7OzAxMTk7CiswMTE5O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggT0dPTkVLO0xsOzA7TDswMDY1IDAzMjg7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRSBPR09ORUs7OzAxMTg7OzAxMTgKKzAxMUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENBUk9OO0x1OzA7TDswMDQ1IDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIEhBQ0VLOzs7MDExQjsKKzAxMUI7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDQVJPTjtMbDswO0w7MDA2NSAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEUgSEFDRUs7OzAxMUE7OzAxMUEKKzAxMUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNDcgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEcgQ0lSQ1VNRkxFWDs7OzAxMUQ7CiswMTFEO0xBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA2NyAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEcgQ0lSQ1VNRkxFWDs7MDExQzs7MDExQworMDExRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQlJFVkU7THU7MDtMOzAwNDcgMDMwNjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEcgQlJFVkU7OzswMTFGOworMDExRjtMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIEJSRVZFO0xsOzA7TDswMDY3IDAzMDY7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRyBCUkVWRTs7MDExRTs7MDExRQorMDEyMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDQ3IDAzMDc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIERPVDs7OzAxMjE7CiswMTIxO0xBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDY3IDAzMDc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRyBET1Q7OzAxMjA7OzAxMjAKKzAxMjI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIENFRElMTEE7THU7MDtMOzAwNDcgMDMyNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEcgQ0VESUxMQTs7OzAxMjM7CiswMTIzO0xBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQ0VESUxMQTtMbDswO0w7MDA2NyAwMzI3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEcgQ0VESUxMQTs7MDEyMjs7MDEyMgorMDEyNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA0OCAwMzAyOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBDSVJDVU1GTEVYOzs7MDEyNTsKKzAxMjU7TEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDY4IDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSCBDSVJDVU1GTEVYOzswMTI0OzswMTI0CiswMTI2O0xBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBTVFJPS0U7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEggQkFSOzs7MDEyNzsKKzAxMjc7TEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBIIEJBUjs7MDEyNjs7MDEyNgorMDEyODtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggVElMREU7THU7MDtMOzAwNDkgMDMwMzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEkgVElMREU7OzswMTI5OworMDEyOTtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIFRJTERFO0xsOzA7TDswMDY5IDAzMDM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSSBUSUxERTs7MDEyODs7MDEyOAorMDEyQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggTUFDUk9OO0x1OzA7TDswMDQ5IDAzMDQ7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIE1BQ1JPTjs7OzAxMkI7CiswMTJCO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggTUFDUk9OO0xsOzA7TDswMDY5IDAzMDQ7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSSBNQUNST047OzAxMkE7OzAxMkEKKzAxMkM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEJSRVZFO0x1OzA7TDswMDQ5IDAzMDY7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIEJSRVZFOzs7MDEyRDsKKzAxMkQ7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBCUkVWRTtMbDswO0w7MDA2OSAwMzA2Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEkgQlJFVkU7OzAxMkM7OzAxMkMKKzAxMkU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE9HT05FSztMdTswO0w7MDA0OSAwMzI4Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBPR09ORUs7OzswMTJGOworMDEyRjtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIE9HT05FSztMbDswO0w7MDA2OSAwMzI4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEkgT0dPTkVLOzswMTJFOzswMTJFCiswMTMwO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNDkgMDMwNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEkgRE9UOzs7MDA2OTsKKzAxMzE7TEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSTtMbDswO0w7Ozs7O047OzswMDQ5OzswMDQ5CiswMTMyO0xBVElOIENBUElUQUwgTElHQVRVUkUgSUo7THU7MDtMOzxjb21wYXQ+IDAwNDkgMDA0QTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEkgSjs7OzAxMzM7CiswMTMzO0xBVElOIFNNQUxMIExJR0FUVVJFIElKO0xsOzA7TDs8Y29tcGF0PiAwMDY5IDAwNkE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSSBKOzswMTMyOzswMTMyCiswMTM0O0xBVElOIENBUElUQUwgTEVUVEVSIEogV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDRBIDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBKIENJUkNVTUZMRVg7OzswMTM1OworMDEzNTtMQVRJTiBTTUFMTCBMRVRURVIgSiBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNkEgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBKIENJUkNVTUZMRVg7OzAxMzQ7OzAxMzQKKzAxMzY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIENFRElMTEE7THU7MDtMOzAwNEIgMDMyNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEsgQ0VESUxMQTs7OzAxMzc7CiswMTM3O0xBVElOIFNNQUxMIExFVFRFUiBLIFdJVEggQ0VESUxMQTtMbDswO0w7MDA2QiAwMzI3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEsgQ0VESUxMQTs7MDEzNjs7MDEzNgorMDEzODtMQVRJTiBTTUFMTCBMRVRURVIgS1JBO0xsOzA7TDs7Ozs7Tjs7R3JlZW5sYW5kaWM7OzsKKzAxMzk7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIEFDVVRFO0x1OzA7TDswMDRDIDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIEFDVVRFOzs7MDEzQTsKKzAxM0E7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBBQ1VURTtMbDswO0w7MDA2QyAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEwgQUNVVEU7OzAxMzk7OzAxMzkKKzAxM0I7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENFRElMTEE7THU7MDtMOzAwNEMgMDMyNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEwgQ0VESUxMQTs7OzAxM0M7CiswMTNDO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0VESUxMQTtMbDswO0w7MDA2QyAwMzI3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEwgQ0VESUxMQTs7MDEzQjs7MDEzQgorMDEzRDtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0FST047THU7MDtMOzAwNEMgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEwgSEFDRUs7OzswMTNFOworMDEzRTtMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIENBUk9OO0xsOzA7TDswMDZDIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTCBIQUNFSzs7MDEzRDs7MDEzRAorMDEzRjtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggTUlERExFIERPVDtMdTswO0w7PGNvbXBhdD4gMDA0QyAwMEI3Ozs7O047Ozs7MDE0MDsKKzAxNDA7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBNSURETEUgRE9UO0xsOzA7TDs8Y29tcGF0PiAwMDZDIDAwQjc7Ozs7Tjs7OzAxM0Y7OzAxM0YKKzAxNDE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBTTEFTSDs7OzAxNDI7CiswMTQyO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTCBTTEFTSDs7MDE0MTs7MDE0MQorMDE0MztMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQUNVVEU7THU7MDtMOzAwNEUgMDMwMTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE4gQUNVVEU7OzswMTQ0OworMDE0NDtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIEFDVVRFO0xsOzA7TDswMDZFIDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTiBBQ1VURTs7MDE0Mzs7MDE0MworMDE0NTtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQ0VESUxMQTtMdTswO0w7MDA0RSAwMzI3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBDRURJTExBOzs7MDE0NjsKKzAxNDY7TEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBDRURJTExBO0xsOzA7TDswMDZFIDAzMjc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTiBDRURJTExBOzswMTQ1OzswMTQ1CiswMTQ3O0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDQVJPTjtMdTswO0w7MDA0RSAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBIQUNFSzs7OzAxNDg7CiswMTQ4O0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0FST047TGw7MDtMOzAwNkUgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBOIEhBQ0VLOzswMTQ3OzswMTQ3CiswMTQ5O0xBVElOIFNNQUxMIExFVFRFUiBOIFBSRUNFREVEIEJZIEFQT1NUUk9QSEU7TGw7MDtMOzxjb21wYXQ+IDAyQkMgMDA2RTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBUE9TVFJPUEhFIE47Ozs7CiswMTRBO0xBVElOIENBUElUQUwgTEVUVEVSIEVORztMdTswO0w7Ozs7O047O1NhbWk7OzAxNEI7CiswMTRCO0xBVElOIFNNQUxMIExFVFRFUiBFTkc7TGw7MDtMOzs7OztOOztTYW1pOzAxNEE7OzAxNEEKKzAxNEM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIE1BQ1JPTjtMdTswO0w7MDA0RiAwMzA0Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBNQUNST047OzswMTREOworMDE0RDtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIE1BQ1JPTjtMbDswO0w7MDA2RiAwMzA0Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gTUFDUk9OOzswMTRDOzswMTRDCiswMTRFO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBCUkVWRTtMdTswO0w7MDA0RiAwMzA2Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBCUkVWRTs7OzAxNEY7CiswMTRGO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQlJFVkU7TGw7MDtMOzAwNkYgMDMwNjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIEJSRVZFOzswMTRFOzswMTRFCiswMTUwO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEU7THU7MDtMOzAwNEYgMDMwQjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gRE9VQkxFIEFDVVRFOzs7MDE1MTsKKzAxNTE7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1VCTEUgQUNVVEU7TGw7MDtMOzAwNkYgMDMwQjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIERPVUJMRSBBQ1VURTs7MDE1MDs7MDE1MAorMDE1MjtMQVRJTiBDQVBJVEFMIExJR0FUVVJFIE9FO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIEU7OzswMTUzOworMDE1MztMQVRJTiBTTUFMTCBMSUdBVFVSRSBPRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gRTs7MDE1Mjs7MDE1MgorMDE1NDtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQUNVVEU7THU7MDtMOzAwNTIgMDMwMTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFIgQUNVVEU7OzswMTU1OworMDE1NTtMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIEFDVVRFO0xsOzA7TDswMDcyIDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUiBBQ1VURTs7MDE1NDs7MDE1NAorMDE1NjtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQ0VESUxMQTtMdTswO0w7MDA1MiAwMzI3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBDRURJTExBOzs7MDE1NzsKKzAxNTc7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBDRURJTExBO0xsOzA7TDswMDcyIDAzMjc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUiBDRURJTExBOzswMTU2OzswMTU2CiswMTU4O0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBDQVJPTjtMdTswO0w7MDA1MiAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBIQUNFSzs7OzAxNTk7CiswMTU5O0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggQ0FST047TGw7MDtMOzAwNzIgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBSIEhBQ0VLOzswMTU4OzswMTU4CiswMTVBO0xBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBBQ1VURTtMdTswO0w7MDA1MyAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBBQ1VURTs7OzAxNUI7CiswMTVCO0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQUNVVEU7TGw7MDtMOzAwNzMgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBTIEFDVVRFOzswMTVBOzswMTVBCiswMTVDO0xBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDUzIDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIENJUkNVTUZMRVg7OzswMTVEOworMDE1RDtMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNzMgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBTIENJUkNVTUZMRVg7OzAxNUM7OzAxNUMKKzAxNUU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENFRElMTEE7THU7MDtMOzAwNTMgMDMyNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFMgQ0VESUxMQTs7OzAxNUY7CiswMTVGO0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0VESUxMQTtMbDswO0w7MDA3MyAwMzI3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFMgQ0VESUxMQTs7MDE1RTs7MDE1RQorMDE2MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST047THU7MDtMOzAwNTMgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFMgSEFDRUs7OzswMTYxOworMDE2MTtMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OO0xsOzA7TDswMDczIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUyBIQUNFSzs7MDE2MDs7MDE2MAorMDE2MjtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggQ0VESUxMQTtMdTswO0w7MDA1NCAwMzI3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBDRURJTExBOzs7MDE2MzsKKzAxNjM7TEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBDRURJTExBO0xsOzA7TDswMDc0IDAzMjc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVCBDRURJTExBOzswMTYyOzswMTYyCiswMTY0O0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBDQVJPTjtMdTswO0w7MDA1NCAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBIQUNFSzs7OzAxNjU7CiswMTY1O0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ0FST047TGw7MDtMOzAwNzQgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIEhBQ0VLOzswMTY0OzswMTY0CiswMTY2O0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBTVFJPS0U7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFQgQkFSOzs7MDE2NzsKKzAxNjc7TEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIEJBUjs7MDE2Njs7MDE2NgorMDE2ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggVElMREU7THU7MDtMOzAwNTUgMDMwMzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgVElMREU7OzswMTY5OworMDE2OTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIFRJTERFO0xsOzA7TDswMDc1IDAzMDM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBUSUxERTs7MDE2ODs7MDE2OAorMDE2QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OO0x1OzA7TDswMDU1IDAzMDQ7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIE1BQ1JPTjs7OzAxNkI7CiswMTZCO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggTUFDUk9OO0xsOzA7TDswMDc1IDAzMDQ7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBNQUNST047OzAxNkE7OzAxNkEKKzAxNkM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEJSRVZFO0x1OzA7TDswMDU1IDAzMDY7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIEJSRVZFOzs7MDE2RDsKKzAxNkQ7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBCUkVWRTtMbDswO0w7MDA3NSAwMzA2Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgQlJFVkU7OzAxNkM7OzAxNkMKKzAxNkU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIFJJTkcgQUJPVkU7THU7MDtMOzAwNTUgMDMwQTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgUklORzs7OzAxNkY7CiswMTZGO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggUklORyBBQk9WRTtMbDswO0w7MDA3NSAwMzBBOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgUklORzs7MDE2RTs7MDE2RQorMDE3MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFO0x1OzA7TDswMDU1IDAzMEI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIERPVUJMRSBBQ1VURTs7OzAxNzE7CiswMTcxO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFO0xsOzA7TDswMDc1IDAzMEI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBET1VCTEUgQUNVVEU7OzAxNzA7OzAxNzAKKzAxNzI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE9HT05FSztMdTswO0w7MDA1NSAwMzI4Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBPR09ORUs7OzswMTczOworMDE3MztMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE9HT05FSztMbDswO0w7MDA3NSAwMzI4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgT0dPTkVLOzswMTcyOzswMTcyCiswMTc0O0xBVElOIENBUElUQUwgTEVUVEVSIFcgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDU3IDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBXIENJUkNVTUZMRVg7OzswMTc1OworMDE3NTtMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNzcgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBXIENJUkNVTUZMRVg7OzAxNzQ7OzAxNzQKKzAxNzY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNTkgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFkgQ0lSQ1VNRkxFWDs7OzAxNzc7CiswMTc3O0xBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA3OSAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFkgQ0lSQ1VNRkxFWDs7MDE3Njs7MDE3NgorMDE3ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDU5IDAzMDg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIERJQUVSRVNJUzs7OzAwRkY7CiswMTc5O0xBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBBQ1VURTtMdTswO0w7MDA1QSAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBBQ1VURTs7OzAxN0E7CiswMTdBO0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQUNVVEU7TGw7MDtMOzAwN0EgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBaIEFDVVRFOzswMTc5OzswMTc5CiswMTdCO0xBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNUEgMDMwNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFogRE9UOzs7MDE3QzsKKzAxN0M7TEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwN0EgMDMwNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBaIERPVDs7MDE3Qjs7MDE3QgorMDE3RDtMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQ0FST047THU7MDtMOzAwNUEgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFogSEFDRUs7OzswMTdFOworMDE3RTtMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENBUk9OO0xsOzA7TDswMDdBIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWiBIQUNFSzs7MDE3RDs7MDE3RAorMDE3RjtMQVRJTiBTTUFMTCBMRVRURVIgTE9ORyBTO0xsOzA7TDs8Y29tcGF0PiAwMDczOzs7O047OzswMDUzOzswMDUzCiswMTgwO0xBVElOIFNNQUxMIExFVFRFUiBCIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQiBCQVI7Ozs7CiswMTgxO0xBVElOIENBUElUQUwgTEVUVEVSIEIgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBCIEhPT0s7OzswMjUzOworMDE4MjtMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFdJVEggVE9QQkFSO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFRPUEJBUjs7OzAxODM7CiswMTgzO0xBVElOIFNNQUxMIExFVFRFUiBCIFdJVEggVE9QQkFSO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQiBUT1BCQVI7OzAxODI7OzAxODIKKzAxODQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVE9ORSBTSVg7THU7MDtMOzs7OztOOzs7OzAxODU7CiswMTg1O0xBVElOIFNNQUxMIExFVFRFUiBUT05FIFNJWDtMbDswO0w7Ozs7O047OzswMTg0OzswMTg0CiswMTg2O0xBVElOIENBUElUQUwgTEVUVEVSIE9QRU4gTztMdTswO0w7Ozs7O047Ozs7MDI1NDsKKzAxODc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEMgSE9PSzs7OzAxODg7CiswMTg4O0xBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEMgSE9PSzs7MDE4Nzs7MDE4NworMDE4OTtMQVRJTiBDQVBJVEFMIExFVFRFUiBBRlJJQ0FOIEQ7THU7MDtMOzs7OztOOzs7OzAyNTY7CiswMThBO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIEhPT0s7OzswMjU3OworMDE4QjtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggVE9QQkFSO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFRPUEJBUjs7OzAxOEM7CiswMThDO0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggVE9QQkFSO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRCBUT1BCQVI7OzAxOEI7OzAxOEIKKzAxOEQ7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBERUxUQTtMbDswO0w7Ozs7O047Ozs7OworMDE4RTtMQVRJTiBDQVBJVEFMIExFVFRFUiBSRVZFUlNFRCBFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBUVVJORUQgRTs7OzAxREQ7CiswMThGO0xBVElOIENBUElUQUwgTEVUVEVSIFNDSFdBO0x1OzA7TDs7Ozs7Tjs7OzswMjU5OworMDE5MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBPUEVOIEU7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEVQU0lMT047OzswMjVCOworMDE5MTtMQVRJTiBDQVBJVEFMIExFVFRFUiBGIFdJVEggSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRiBIT09LOzs7MDE5MjsKKzAxOTI7TEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgU0NSSVBUIEY7OzAxOTE7OzAxOTEKKzAxOTM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEcgSE9PSzs7OzAyNjA7CiswMTk0O0xBVElOIENBUElUQUwgTEVUVEVSIEdBTU1BO0x1OzA7TDs7Ozs7Tjs7OzswMjYzOworMDE5NTtMQVRJTiBTTUFMTCBMRVRURVIgSFY7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBIIFY7Ozs7CiswMTk2O0xBVElOIENBUElUQUwgTEVUVEVSIElPVEE7THU7MDtMOzs7OztOOzs7OzAyNjk7CiswMTk3O0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBTVFJPS0U7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEJBUlJFRCBJOzs7MDI2ODsKKzAxOTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEsgSE9PSzs7OzAxOTk7CiswMTk5O0xBVElOIFNNQUxMIExFVFRFUiBLIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEsgSE9PSzs7MDE5ODs7MDE5OAorMDE5QTtMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIEJBUjtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEJBUlJFRCBMOzs7OworMDE5QjtMQVRJTiBTTUFMTCBMRVRURVIgTEFNQkRBIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQkFSUkVEIExBTUJEQTs7OzsKKzAxOUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVFVSTkVEIE07THU7MDtMOzs7OztOOzs7OzAyNkY7CiswMTlEO0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBMRUZUIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE4gSE9PSzs7OzAyNzI7CiswMTlFO0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggTE9ORyBSSUdIVCBMRUc7TGw7MDtMOzs7OztOOzs7OzsKKzAxOUY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIE1JRERMRSBUSUxERTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQkFSUkVEIE87OzswMjc1OworMDFBMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggSE9STjtMdTswO0w7MDA0RiAwMzFCOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBIT1JOOzs7MDFBMTsKKzAxQTE7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBIT1JOO0xsOzA7TDswMDZGIDAzMUI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBIT1JOOzswMUEwOzswMUEwCiswMUEyO0xBVElOIENBUElUQUwgTEVUVEVSIE9JO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIEk7OzswMUEzOworMDFBMztMQVRJTiBTTUFMTCBMRVRURVIgT0k7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIEk7OzAxQTI7OzAxQTIKKzAxQTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUCBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFAgSE9PSzs7OzAxQTU7CiswMUE1O0xBVElOIFNNQUxMIExFVFRFUiBQIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFAgSE9PSzs7MDFBNDs7MDFBNAorMDFBNjtMQVRJTiBMRVRURVIgWVI7THU7MDtMOzs7OztOO0xBVElOIExFVFRFUiBZIFI7OzswMjgwOworMDFBNztMQVRJTiBDQVBJVEFMIExFVFRFUiBUT05FIFRXTztMdTswO0w7Ozs7O047Ozs7MDFBODsKKzAxQTg7TEFUSU4gU01BTEwgTEVUVEVSIFRPTkUgVFdPO0xsOzA7TDs7Ozs7Tjs7OzAxQTc7OzAxQTcKKzAxQTk7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRVNIO0x1OzA7TDs7Ozs7Tjs7OzswMjgzOworMDFBQTtMQVRJTiBMRVRURVIgUkVWRVJTRUQgRVNIIExPT1A7TG87MDtMOzs7OztOOzs7OzsKKzAxQUI7TEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBQQUxBVEFMIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIFBBTEFUQUwgSE9PSzs7OzsKKzAxQUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFQgSE9PSzs7OzAxQUQ7CiswMUFEO0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFQgSE9PSzs7MDFBQzs7MDFBQworMDFBRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggUkVUUk9GTEVYIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFQgUkVUUk9GTEVYIEhPT0s7OzswMjg4OworMDFBRjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9STjtMdTswO0w7MDA1NSAwMzFCOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBIT1JOOzs7MDFCMDsKKzAxQjA7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT1JOO0xsOzA7TDswMDc1IDAzMUI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBIT1JOOzswMUFGOzswMUFGCiswMUIxO0xBVElOIENBUElUQUwgTEVUVEVSIFVQU0lMT047THU7MDtMOzs7OztOOzs7OzAyOEE7CiswMUIyO0xBVElOIENBUElUQUwgTEVUVEVSIFYgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBTQ1JJUFQgVjs7OzAyOEI7CiswMUIzO0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIEhPT0s7OzswMUI0OworMDFCNDtMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBZIEhPT0s7OzAxQjM7OzAxQjMKKzAxQjU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBCQVI7OzswMUI2OworMDFCNjtMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFogQkFSOzswMUI1OzswMUI1CiswMUI3O0xBVElOIENBUElUQUwgTEVUVEVSIEVaSDtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWU9HSDs7OzAyOTI7CiswMUI4O0xBVElOIENBUElUQUwgTEVUVEVSIEVaSCBSRVZFUlNFRDtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgUkVWRVJTRUQgWU9HSDs7OzAxQjk7CiswMUI5O0xBVElOIFNNQUxMIExFVFRFUiBFWkggUkVWRVJTRUQ7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBSRVZFUlNFRCBZT0dIOzswMUI4OzswMUI4CiswMUJBO0xBVElOIFNNQUxMIExFVFRFUiBFWkggV0lUSCBUQUlMO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWU9HSCBXSVRIIFRBSUw7Ozs7CiswMUJCO0xBVElOIExFVFRFUiBUV08gV0lUSCBTVFJPS0U7TG87MDtMOzs7OztOO0xBVElOIExFVFRFUiBUV08gQkFSOzs7OworMDFCQztMQVRJTiBDQVBJVEFMIExFVFRFUiBUT05FIEZJVkU7THU7MDtMOzs7OztOOzs7OzAxQkQ7CiswMUJEO0xBVElOIFNNQUxMIExFVFRFUiBUT05FIEZJVkU7TGw7MDtMOzs7OztOOzs7MDFCQzs7MDFCQworMDFCRTtMQVRJTiBMRVRURVIgSU5WRVJURUQgR0xPVFRBTCBTVE9QIFdJVEggU1RST0tFO0xvOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgSU5WRVJURUQgR0xPVFRBTCBTVE9QIEJBUjs7OzsKKzAxQkY7TEFUSU4gTEVUVEVSIFdZTk47TG87MDtMOzs7OztOOzs7OzsKKzAxQzA7TEFUSU4gTEVUVEVSIERFTlRBTCBDTElDSztMbzswO0w7Ozs7O047TEFUSU4gTEVUVEVSIFBJUEU7Ozs7CiswMUMxO0xBVElOIExFVFRFUiBMQVRFUkFMIENMSUNLO0xvOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgRE9VQkxFIFBJUEU7Ozs7CiswMUMyO0xBVElOIExFVFRFUiBBTFZFT0xBUiBDTElDSztMbzswO0w7Ozs7O047TEFUSU4gTEVUVEVSIFBJUEUgRE9VQkxFIEJBUjs7OzsKKzAxQzM7TEFUSU4gTEVUVEVSIFJFVFJPRkxFWCBDTElDSztMbzswO0w7Ozs7O047TEFUSU4gTEVUVEVSIEVYQ0xBTUFUSU9OIE1BUks7Ozs7CiswMUM0O0xBVElOIENBUElUQUwgTEVUVEVSIERaIFdJVEggQ0FST047THU7MDtMOzxjb21wYXQ+IDAwNDQgMDE3RDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEQgWiBIQUNFSzs7OzAxQzY7MDFDNQorMDFDNTtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggU01BTEwgTEVUVEVSIFogV0lUSCBDQVJPTjtMdDswO0w7PGNvbXBhdD4gMDA0NCAwMTdFOzs7O047TEFUSU4gTEVUVEVSIENBUElUQUwgRCBTTUFMTCBaIEhBQ0VLOzswMUM0OzAxQzY7CiswMUM2O0xBVElOIFNNQUxMIExFVFRFUiBEWiBXSVRIIENBUk9OO0xsOzA7TDs8Y29tcGF0PiAwMDY0IDAxN0U7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRCBaIEhBQ0VLOzswMUM0OzswMUM1CiswMUM3O0xBVElOIENBUElUQUwgTEVUVEVSIExKO0x1OzA7TDs8Y29tcGF0PiAwMDRDIDAwNEE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIEo7OzswMUM5OzAxQzgKKzAxQzg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIFNNQUxMIExFVFRFUiBKO0x0OzA7TDs8Y29tcGF0PiAwMDRDIDAwNkE7Ozs7TjtMQVRJTiBMRVRURVIgQ0FQSVRBTCBMIFNNQUxMIEo7OzAxQzc7MDFDOTsKKzAxQzk7TEFUSU4gU01BTEwgTEVUVEVSIExKO0xsOzA7TDs8Y29tcGF0PiAwMDZDIDAwNkE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTCBKOzswMUM3OzswMUM4CiswMUNBO0xBVElOIENBUElUQUwgTEVUVEVSIE5KO0x1OzA7TDs8Y29tcGF0PiAwMDRFIDAwNEE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIEo7OzswMUNDOzAxQ0IKKzAxQ0I7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFNNQUxMIExFVFRFUiBKO0x0OzA7TDs8Y29tcGF0PiAwMDRFIDAwNkE7Ozs7TjtMQVRJTiBMRVRURVIgQ0FQSVRBTCBOIFNNQUxMIEo7OzAxQ0E7MDFDQzsKKzAxQ0M7TEFUSU4gU01BTEwgTEVUVEVSIE5KO0xsOzA7TDs8Y29tcGF0PiAwMDZFIDAwNkE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTiBKOzswMUNBOzswMUNCCiswMUNEO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDQVJPTjtMdTswO0w7MDA0MSAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBIQUNFSzs7OzAxQ0U7CiswMUNFO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0FST047TGw7MDtMOzAwNjEgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIEhBQ0VLOzswMUNEOzswMUNECiswMUNGO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDQVJPTjtMdTswO0w7MDA0OSAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBIQUNFSzs7OzAxRDA7CiswMUQwO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0FST047TGw7MDtMOzAwNjkgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIEhBQ0VLOzswMUNGOzswMUNGCiswMUQxO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDQVJPTjtMdTswO0w7MDA0RiAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBIQUNFSzs7OzAxRDI7CiswMUQyO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0FST047TGw7MDtMOzAwNkYgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIEhBQ0VLOzswMUQxOzswMUQxCiswMUQzO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDQVJPTjtMdTswO0w7MDA1NSAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBIQUNFSzs7OzAxRDQ7CiswMUQ0O0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggQ0FST047TGw7MDtMOzAwNzUgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIEhBQ0VLOzswMUQzOzswMUQzCiswMUQ1O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIE1BQ1JPTjtMdTswO0w7MDBEQyAwMzA0Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBESUFFUkVTSVMgTUFDUk9OOzs7MDFENjsKKzAxRDY7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIE1BQ1JPTjtMbDswO0w7MDBGQyAwMzA0Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgRElBRVJFU0lTIE1BQ1JPTjs7MDFENTs7MDFENQorMDFENztMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEFORCBBQ1VURTtMdTswO0w7MDBEQyAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBESUFFUkVTSVMgQUNVVEU7OzswMUQ4OworMDFEODtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgQUNVVEU7TGw7MDtMOzAwRkMgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIERJQUVSRVNJUyBBQ1VURTs7MDFENzs7MDFENworMDFEOTtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEFORCBDQVJPTjtMdTswO0w7MDBEQyAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBESUFFUkVTSVMgSEFDRUs7OzswMURBOworMDFEQTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgQ0FST047TGw7MDtMOzAwRkMgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIERJQUVSRVNJUyBIQUNFSzs7MDFEOTs7MDFEOQorMDFEQjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEFORCBHUkFWRTtMdTswO0w7MDBEQyAwMzAwOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBESUFFUkVTSVMgR1JBVkU7OzswMURDOworMDFEQztMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgR1JBVkU7TGw7MDtMOzAwRkMgMDMwMDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIERJQUVSRVNJUyBHUkFWRTs7MDFEQjs7MDFEQgorMDFERDtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIEU7TGw7MDtMOzs7OztOOzs7MDE4RTs7MDE4RQorMDFERTtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTIEFORCBNQUNST047THU7MDtMOzAwQzQgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgRElBRVJFU0lTIE1BQ1JPTjs7OzAxREY7CiswMURGO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTIEFORCBNQUNST047TGw7MDtMOzAwRTQgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIERJQUVSRVNJUyBNQUNST047OzAxREU7OzAxREUKKzAxRTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERPVCBBQk9WRSBBTkQgTUFDUk9OO0x1OzA7TDswMDQxIDAzMDcgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgRE9UIE1BQ1JPTjs7OzAxRTE7CiswMUUxO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRE9UIEFCT1ZFIEFORCBNQUNST047TGw7MDtMOzAwNjEgMDMwNyAwMzA0Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgRE9UIE1BQ1JPTjs7MDFFMDs7MDFFMAorMDFFMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBRSBXSVRIIE1BQ1JPTjtMdTswO0w7MDBDNiAwMzA0Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBFIE1BQ1JPTjs7OzAxRTM7CiswMUUzO0xBVElOIFNNQUxMIExFVFRFUiBBRSBXSVRIIE1BQ1JPTjtMbDswO0w7MDBFNiAwMzA0Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgRSBNQUNST047OzAxRTI7OzAxRTIKKzAxRTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBCQVI7OzswMUU1OworMDFFNTtMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEcgQkFSOzswMUU0OzswMUU0CiswMUU2O0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBDQVJPTjtMdTswO0w7MDA0NyAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBIQUNFSzs7OzAxRTc7CiswMUU3O0xBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQ0FST047TGw7MDtMOzAwNjcgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBHIEhBQ0VLOzswMUU2OzswMUU2CiswMUU4O0xBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBDQVJPTjtMdTswO0w7MDA0QiAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBIQUNFSzs7OzAxRTk7CiswMUU5O0xBVElOIFNNQUxMIExFVFRFUiBLIFdJVEggQ0FST047TGw7MDtMOzAwNkIgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBLIEhBQ0VLOzswMUU4OzswMUU4CiswMUVBO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBPR09ORUs7THU7MDtMOzAwNEYgMDMyODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gT0dPTkVLOzs7MDFFQjsKKzAxRUI7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBPR09ORUs7TGw7MDtMOzAwNkYgMDMyODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIE9HT05FSzs7MDFFQTs7MDFFQQorMDFFQztMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggT0dPTkVLIEFORCBNQUNST047THU7MDtMOzAxRUEgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gT0dPTkVLIE1BQ1JPTjs7OzAxRUQ7CiswMUVEO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggT0dPTkVLIEFORCBNQUNST047TGw7MDtMOzAxRUIgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIE9HT05FSyBNQUNST047OzAxRUM7OzAxRUMKKzAxRUU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRVpIIFdJVEggQ0FST047THU7MDtMOzAxQjcgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFlPR0ggSEFDRUs7OzswMUVGOworMDFFRjtMQVRJTiBTTUFMTCBMRVRURVIgRVpIIFdJVEggQ0FST047TGw7MDtMOzAyOTIgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBZT0dIIEhBQ0VLOzswMUVFOzswMUVFCiswMUYwO0xBVElOIFNNQUxMIExFVFRFUiBKIFdJVEggQ0FST047TGw7MDtMOzAwNkEgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBKIEhBQ0VLOzs7OworMDFGMTtMQVRJTiBDQVBJVEFMIExFVFRFUiBEWjtMdTswO0w7PGNvbXBhdD4gMDA0NCAwMDVBOzs7O047Ozs7MDFGMzswMUYyCiswMUYyO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBTTUFMTCBMRVRURVIgWjtMdDswO0w7PGNvbXBhdD4gMDA0NCAwMDdBOzs7O047OzswMUYxOzAxRjM7CiswMUYzO0xBVElOIFNNQUxMIExFVFRFUiBEWjtMbDswO0w7PGNvbXBhdD4gMDA2NCAwMDdBOzs7O047OzswMUYxOzswMUYyCiswMUY0O0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBBQ1VURTtMdTswO0w7MDA0NyAwMzAxOzs7O047Ozs7MDFGNTsKKzAxRjU7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBBQ1VURTtMbDswO0w7MDA2NyAwMzAxOzs7O047OzswMUY0OzswMUY0CiswMUZBO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFIEFORCBBQ1VURTtMdTswO0w7MDBDNSAwMzAxOzs7O047Ozs7MDFGQjsKKzAxRkI7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFIEFORCBBQ1VURTtMbDswO0w7MDBFNSAwMzAxOzs7O047OzswMUZBOzswMUZBCiswMUZDO0xBVElOIENBUElUQUwgTEVUVEVSIEFFIFdJVEggQUNVVEU7THU7MDtMOzAwQzYgMDMwMTs7OztOOzs7OzAxRkQ7CiswMUZEO0xBVElOIFNNQUxMIExFVFRFUiBBRSBXSVRIIEFDVVRFO0xsOzA7TDswMEU2IDAzMDE7Ozs7Tjs7OzAxRkM7OzAxRkMKKzAxRkU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRSBBTkQgQUNVVEU7THU7MDtMOzAwRDggMDMwMTs7OztOOzs7OzAxRkY7CiswMUZGO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFIEFORCBBQ1VURTtMbDswO0w7MDBGOCAwMzAxOzs7O047OzswMUZFOzswMUZFCiswMjAwO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBET1VCTEUgR1JBVkU7THU7MDtMOzAwNDEgMDMwRjs7OztOOzs7OzAyMDE7CiswMjAxO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRE9VQkxFIEdSQVZFO0xsOzA7TDswMDYxIDAzMEY7Ozs7Tjs7OzAyMDA7OzAyMDAKKzAyMDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIElOVkVSVEVEIEJSRVZFO0x1OzA7TDswMDQxIDAzMTE7Ozs7Tjs7OzswMjAzOworMDIwMztMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIElOVkVSVEVEIEJSRVZFO0xsOzA7TDswMDYxIDAzMTE7Ozs7Tjs7OzAyMDI7OzAyMDIKKzAyMDQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVUJMRSBHUkFWRTtMdTswO0w7MDA0NSAwMzBGOzs7O047Ozs7MDIwNTsKKzAyMDU7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBET1VCTEUgR1JBVkU7TGw7MDtMOzAwNjUgMDMwRjs7OztOOzs7MDIwNDs7MDIwNAorMDIwNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggSU5WRVJURUQgQlJFVkU7THU7MDtMOzAwNDUgMDMxMTs7OztOOzs7OzAyMDc7CiswMjA3O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggSU5WRVJURUQgQlJFVkU7TGw7MDtMOzAwNjUgMDMxMTs7OztOOzs7MDIwNjs7MDIwNgorMDIwODtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRE9VQkxFIEdSQVZFO0x1OzA7TDswMDQ5IDAzMEY7Ozs7Tjs7OzswMjA5OworMDIwOTtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERPVUJMRSBHUkFWRTtMbDswO0w7MDA2OSAwMzBGOzs7O047OzswMjA4OzswMjA4CiswMjBBO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBJTlZFUlRFRCBCUkVWRTtMdTswO0w7MDA0OSAwMzExOzs7O047Ozs7MDIwQjsKKzAyMEI7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBJTlZFUlRFRCBCUkVWRTtMbDswO0w7MDA2OSAwMzExOzs7O047OzswMjBBOzswMjBBCiswMjBDO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBET1VCTEUgR1JBVkU7THU7MDtMOzAwNEYgMDMwRjs7OztOOzs7OzAyMEQ7CiswMjBEO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9VQkxFIEdSQVZFO0xsOzA7TDswMDZGIDAzMEY7Ozs7Tjs7OzAyMEM7OzAyMEMKKzAyMEU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIElOVkVSVEVEIEJSRVZFO0x1OzA7TDswMDRGIDAzMTE7Ozs7Tjs7OzswMjBGOworMDIwRjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIElOVkVSVEVEIEJSRVZFO0xsOzA7TDswMDZGIDAzMTE7Ozs7Tjs7OzAyMEU7OzAyMEUKKzAyMTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIERPVUJMRSBHUkFWRTtMdTswO0w7MDA1MiAwMzBGOzs7O047Ozs7MDIxMTsKKzAyMTE7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBET1VCTEUgR1JBVkU7TGw7MDtMOzAwNzIgMDMwRjs7OztOOzs7MDIxMDs7MDIxMAorMDIxMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggSU5WRVJURUQgQlJFVkU7THU7MDtMOzAwNTIgMDMxMTs7OztOOzs7OzAyMTM7CiswMjEzO0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggSU5WRVJURUQgQlJFVkU7TGw7MDtMOzAwNzIgMDMxMTs7OztOOzs7MDIxMjs7MDIxMgorMDIxNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRE9VQkxFIEdSQVZFO0x1OzA7TDswMDU1IDAzMEY7Ozs7Tjs7OzswMjE1OworMDIxNTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERPVUJMRSBHUkFWRTtMbDswO0w7MDA3NSAwMzBGOzs7O047OzswMjE0OzswMjE0CiswMjE2O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBJTlZFUlRFRCBCUkVWRTtMdTswO0w7MDA1NSAwMzExOzs7O047Ozs7MDIxNzsKKzAyMTc7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBJTlZFUlRFRCBCUkVWRTtMbDswO0w7MDA3NSAwMzExOzs7O047OzswMjE2OzswMjE2CiswMjUwO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgQTtMbDswO0w7Ozs7O047Ozs7OworMDI1MTtMQVRJTiBTTUFMTCBMRVRURVIgQUxQSEE7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBTQ1JJUFQgQTs7OzsKKzAyNTI7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBBTFBIQTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBTQ1JJUFQgQTs7OzsKKzAyNTM7TEFUSU4gU01BTEwgTEVUVEVSIEIgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQiBIT09LOzswMTgxOzswMTgxCiswMjU0O0xBVElOIFNNQUxMIExFVFRFUiBPUEVOIE87TGw7MDtMOzs7OztOOzs7MDE4Njs7MDE4NgorMDI1NTtMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENVUkw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDIENVUkw7Ozs7CiswMjU2O0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggVEFJTDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEQgUkVUUk9GTEVYIEhPT0s7OzAxODk7OzAxODkKKzAyNTc7TEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRCBIT09LOzswMThBOzswMThBCiswMjU4O0xBVElOIFNNQUxMIExFVFRFUiBSRVZFUlNFRCBFO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjU5O0xBVElOIFNNQUxMIExFVFRFUiBTQ0hXQTtMbDswO0w7Ozs7O047OzswMThGOzswMThGCiswMjVBO0xBVElOIFNNQUxMIExFVFRFUiBTQ0hXQSBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBTQ0hXQSBIT09LOzs7OworMDI1QjtMQVRJTiBTTUFMTCBMRVRURVIgT1BFTiBFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRVBTSUxPTjs7MDE5MDs7MDE5MAorMDI1QztMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgT1BFTiBFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgRVBTSUxPTjs7OzsKKzAyNUQ7TEFUSU4gU01BTEwgTEVUVEVSIFJFVkVSU0VEIE9QRU4gRSBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBSRVZFUlNFRCBFUFNJTE9OIEhPT0s7Ozs7CiswMjVFO0xBVElOIFNNQUxMIExFVFRFUiBDTE9TRUQgUkVWRVJTRUQgT1BFTiBFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQ0xPU0VEIFJFVkVSU0VEIEVQU0lMT047Ozs7CiswMjVGO0xBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEogV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEogQkFSOzs7OworMDI2MDtMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBHIEhPT0s7OzAxOTM7OzAxOTMKKzAyNjE7TEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBHO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjYyO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEc7TGw7MDtMOzs7OztOOzs7OzsKKzAyNjM7TEFUSU4gU01BTEwgTEVUVEVSIEdBTU1BO0xsOzA7TDs7Ozs7Tjs7OzAxOTQ7OzAxOTQKKzAyNjQ7TEFUSU4gU01BTEwgTEVUVEVSIFJBTVMgSE9STjtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEJBQlkgR0FNTUE7Ozs7CiswMjY1O0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgSDtMbDswO0w7Ozs7O047Ozs7OworMDI2NjtMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBIIEhPT0s7Ozs7CiswMjY3O0xBVElOIFNNQUxMIExFVFRFUiBIRU5HIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEhFTkcgSE9PSzs7OzsKKzAyNjg7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBCQVJSRUQgSTs7MDE5Nzs7MDE5NworMDI2OTtMQVRJTiBTTUFMTCBMRVRURVIgSU9UQTtMbDswO0w7Ozs7O047OzswMTk2OzswMTk2CiswMjZBO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEk7TGw7MDtMOzs7OztOOzs7OzsKKzAyNkI7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBNSURETEUgVElMREU7TGw7MDtMOzs7OztOOzs7OzsKKzAyNkM7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBCRUxUO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTCBCRUxUOzs7OworMDI2RDtMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFJFVFJPRkxFWCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTCBSRVRST0ZMRVggSE9PSzs7OzsKKzAyNkU7TEFUSU4gU01BTEwgTEVUVEVSIExFWkg7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBMIFlPR0g7Ozs7CiswMjZGO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgTTtMbDswO0w7Ozs7O047OzswMTlDOzswMTlDCiswMjcwO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgTSBXSVRIIExPTkcgTEVHO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjcxO0xBVElOIFNNQUxMIExFVFRFUiBNIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE0gSE9PSzs7OzsKKzAyNzI7TEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBMRUZUIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBOIEhPT0s7OzAxOUQ7OzAxOUQKKzAyNzM7TEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBSRVRST0ZMRVggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE4gUkVUUk9GTEVYIEhPT0s7Ozs7CiswMjc0O0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIE47TGw7MDtMOzs7OztOOzs7OzsKKzAyNzU7TEFUSU4gU01BTEwgTEVUVEVSIEJBUlJFRCBPO0xsOzA7TDs7Ozs7Tjs7OzAxOUY7OzAxOUYKKzAyNzY7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgT0U7TGw7MDtMOzs7OztOO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIE8gRTs7OzsKKzAyNzc7TEFUSU4gU01BTEwgTEVUVEVSIENMT1NFRCBPTUVHQTtMbDswO0w7Ozs7O047Ozs7OworMDI3ODtMQVRJTiBTTUFMTCBMRVRURVIgUEhJO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjc5O0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgUjtMbDswO0w7Ozs7O047Ozs7OworMDI3QTtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFIgV0lUSCBMT05HIExFRztMbDswO0w7Ozs7O047Ozs7OworMDI3QjtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFIgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFIgSE9PSzs7OzsKKzAyN0M7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBMT05HIExFRztMbDswO0w7Ozs7O047Ozs7OworMDI3RDtMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIFRBSUw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBSIEhPT0s7Ozs7CiswMjdFO0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggRklTSEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBGSVNISE9PSyBSOzs7OworMDI3RjtMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgUiBXSVRIIEZJU0hIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgRklTSEhPT0sgUjs7OzsKKzAyODA7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgUjtMbDswO0w7Ozs7O047OzswMUE2OzswMUE2CiswMjgxO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIElOVkVSVEVEIFI7TGw7MDtMOzs7OztOOzs7OzsKKzAyODI7TEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUyBIT09LOzs7OworMDI4MztMQVRJTiBTTUFMTCBMRVRURVIgRVNIO0xsOzA7TDs7Ozs7Tjs7OzAxQTk7OzAxQTkKKzAyODQ7TEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSiBXSVRIIFNUUk9LRSBBTkQgSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSiBCQVIgSE9PSzs7OzsKKzAyODU7TEFUSU4gU01BTEwgTEVUVEVSIFNRVUFUIFJFVkVSU0VEIEVTSDtMbDswO0w7Ozs7O047Ozs7OworMDI4NjtMQVRJTiBTTUFMTCBMRVRURVIgRVNIIFdJVEggQ1VSTDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEVTSCBDVVJMOzs7OworMDI4NztMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFQ7TGw7MDtMOzs7OztOOzs7OzsKKzAyODg7TEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBSRVRST0ZMRVggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFQgUkVUUk9GTEVYIEhPT0s7OzAxQUU7OzAxQUUKKzAyODk7TEFUSU4gU01BTEwgTEVUVEVSIFUgQkFSO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjhBO0xBVElOIFNNQUxMIExFVFRFUiBVUFNJTE9OO0xsOzA7TDs7Ozs7Tjs7OzAxQjE7OzAxQjEKKzAyOEI7TEFUSU4gU01BTEwgTEVUVEVSIFYgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgU0NSSVBUIFY7OzAxQjI7OzAxQjIKKzAyOEM7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBWO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjhEO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgVztMbDswO0w7Ozs7O047Ozs7OworMDI4RTtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFk7TGw7MDtMOzs7OztOOzs7OzsKKzAyOEY7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgWTtMbDswO0w7Ozs7O047Ozs7OworMDI5MDtMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIFJFVFJPRkxFWCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWiBSRVRST0ZMRVggSE9PSzs7OzsKKzAyOTE7TEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBDVVJMO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWiBDVVJMOzs7OworMDI5MjtMQVRJTiBTTUFMTCBMRVRURVIgRVpIO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWU9HSDs7MDFCNzs7MDFCNworMDI5MztMQVRJTiBTTUFMTCBMRVRURVIgRVpIIFdJVEggQ1VSTDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFlPR0ggQ1VSTDs7OzsKKzAyOTQ7TEFUSU4gTEVUVEVSIEdMT1RUQUwgU1RPUDtMbDswO0w7Ozs7O047Ozs7OworMDI5NTtMQVRJTiBMRVRURVIgUEhBUllOR0VBTCBWT0lDRUQgRlJJQ0FUSVZFO0xsOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgUkVWRVJTRUQgR0xPVFRBTCBTVE9QOzs7OworMDI5NjtMQVRJTiBMRVRURVIgSU5WRVJURUQgR0xPVFRBTCBTVE9QO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjk3O0xBVElOIExFVFRFUiBTVFJFVENIRUQgQztMbDswO0w7Ozs7O047Ozs7OworMDI5ODtMQVRJTiBMRVRURVIgQklMQUJJQUwgQ0xJQ0s7TGw7MDtMOzs7OztOO0xBVElOIExFVFRFUiBCVUxMU0VZRTs7OzsKKzAyOTk7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgQjtMbDswO0w7Ozs7O047Ozs7OworMDI5QTtMQVRJTiBTTUFMTCBMRVRURVIgQ0xPU0VEIE9QRU4gRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIENMT1NFRCBFUFNJTE9OOzs7OworMDI5QjtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBHIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgRyBIT09LOzs7OworMDI5QztMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBIO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjlEO0xBVElOIFNNQUxMIExFVFRFUiBKIFdJVEggQ1JPU1NFRC1UQUlMO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQ1JPU1NFRC1UQUlMIEo7Ozs7CiswMjlFO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgSztMbDswO0w7Ozs7O047Ozs7OworMDI5RjtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBMO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMkEwO0xBVElOIFNNQUxMIExFVFRFUiBRIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFEgSE9PSzs7OzsKKzAyQTE7TEFUSU4gTEVUVEVSIEdMT1RUQUwgU1RPUCBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gTEVUVEVSIEdMT1RUQUwgU1RPUCBCQVI7Ozs7CiswMkEyO0xBVElOIExFVFRFUiBSRVZFUlNFRCBHTE9UVEFMIFNUT1AgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIExFVFRFUiBSRVZFUlNFRCBHTE9UVEFMIFNUT1AgQkFSOzs7OworMDJBMztMQVRJTiBTTUFMTCBMRVRURVIgRFogRElHUkFQSDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEQgWjs7OzsKKzAyQTQ7TEFUSU4gU01BTEwgTEVUVEVSIERFWkggRElHUkFQSDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEQgWU9HSDs7OzsKKzAyQTU7TEFUSU4gU01BTEwgTEVUVEVSIERaIERJR1JBUEggV0lUSCBDVVJMO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRCBaIENVUkw7Ozs7CiswMkE2O0xBVElOIFNNQUxMIExFVFRFUiBUUyBESUdSQVBIO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVCBTOzs7OworMDJBNztMQVRJTiBTTUFMTCBMRVRURVIgVEVTSCBESUdSQVBIO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVCBFU0g7Ozs7CiswMkE4O0xBVElOIFNNQUxMIExFVFRFUiBUQyBESUdSQVBIIFdJVEggQ1VSTDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFQgQyBDVVJMOzs7OworMDJCMDtNT0RJRklFUiBMRVRURVIgU01BTEwgSDtMbTswO0w7PHN1cGVyPiAwMDY4Ozs7O047Ozs7OworMDJCMTtNT0RJRklFUiBMRVRURVIgU01BTEwgSCBXSVRIIEhPT0s7TG07MDtMOzxzdXBlcj4gMDI2Njs7OztOO01PRElGSUVSIExFVFRFUiBTTUFMTCBIIEhPT0s7Ozs7CiswMkIyO01PRElGSUVSIExFVFRFUiBTTUFMTCBKO0xtOzA7TDs8c3VwZXI+IDAwNkE7Ozs7Tjs7Ozs7CiswMkIzO01PRElGSUVSIExFVFRFUiBTTUFMTCBSO0xtOzA7TDs8c3VwZXI+IDAwNzI7Ozs7Tjs7Ozs7CiswMkI0O01PRElGSUVSIExFVFRFUiBTTUFMTCBUVVJORUQgUjtMbTswO0w7PHN1cGVyPiAwMjc5Ozs7O047Ozs7OworMDJCNTtNT0RJRklFUiBMRVRURVIgU01BTEwgVFVSTkVEIFIgV0lUSCBIT09LO0xtOzA7TDs8c3VwZXI+IDAyN0I7Ozs7TjtNT0RJRklFUiBMRVRURVIgU01BTEwgVFVSTkVEIFIgSE9PSzs7OzsKKzAyQjY7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIENBUElUQUwgSU5WRVJURUQgUjtMbTswO0w7PHN1cGVyPiAwMjgxOzs7O047Ozs7OworMDJCNztNT0RJRklFUiBMRVRURVIgU01BTEwgVztMbTswO0w7PHN1cGVyPiAwMDc3Ozs7O047Ozs7OworMDJCODtNT0RJRklFUiBMRVRURVIgU01BTEwgWTtMbTswO0w7PHN1cGVyPiAwMDc5Ozs7O047Ozs7OworMDJCOTtNT0RJRklFUiBMRVRURVIgUFJJTUU7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkJBO01PRElGSUVSIExFVFRFUiBET1VCTEUgUFJJTUU7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkJCO01PRElGSUVSIExFVFRFUiBUVVJORUQgQ09NTUE7TG07MDtMOzs7OztOOzs7OzsKKzAyQkM7TU9ESUZJRVIgTEVUVEVSIEFQT1NUUk9QSEU7TG07MDtMOzs7OztOOzs7OzsKKzAyQkQ7TU9ESUZJRVIgTEVUVEVSIFJFVkVSU0VEIENPTU1BO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswMkJFO01PRElGSUVSIExFVFRFUiBSSUdIVCBIQUxGIFJJTkc7TG07MDtMOzs7OztOOzs7OzsKKzAyQkY7TU9ESUZJRVIgTEVUVEVSIExFRlQgSEFMRiBSSU5HO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswMkMwO01PRElGSUVSIExFVFRFUiBHTE9UVEFMIFNUT1A7TG07MDtMOzs7OztOOzs7OzsKKzAyQzE7TU9ESUZJRVIgTEVUVEVSIFJFVkVSU0VEIEdMT1RUQUwgU1RPUDtMbTswO0w7Ozs7O047Ozs7OworMDJDMjtNT0RJRklFUiBMRVRURVIgTEVGVCBBUlJPV0hFQUQ7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkMzO01PRElGSUVSIExFVFRFUiBSSUdIVCBBUlJPV0hFQUQ7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkM0O01PRElGSUVSIExFVFRFUiBVUCBBUlJPV0hFQUQ7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkM1O01PRElGSUVSIExFVFRFUiBET1dOIEFSUk9XSEVBRDtTazswO09OOzs7OztOOzs7OzsKKzAyQzY7TU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVggQUNDRU5UO1NrOzA7T047Ozs7O047TU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVg7Ozs7CiswMkM3O0NBUk9OO1NrOzA7T047Ozs7O047TU9ESUZJRVIgTEVUVEVSIEhBQ0VLO01hbmRhcmluIENoaW5lc2UgdGhpcmQgdG9uZTs7OworMDJDODtNT0RJRklFUiBMRVRURVIgVkVSVElDQUwgTElORTtTazswO09OOzs7OztOOzs7OzsKKzAyQzk7TU9ESUZJRVIgTEVUVEVSIE1BQ1JPTjtTazswO09OOzs7OztOOztNYW5kYXJpbiBDaGluZXNlIGZpcnN0IHRvbmU7OzsKKzAyQ0E7TU9ESUZJRVIgTEVUVEVSIEFDVVRFIEFDQ0VOVDtTazswO09OOzs7OztOO01PRElGSUVSIExFVFRFUiBBQ1VURTtNYW5kYXJpbiBDaGluZXNlIHNlY29uZCB0b25lOzs7CiswMkNCO01PRElGSUVSIExFVFRFUiBHUkFWRSBBQ0NFTlQ7U2s7MDtPTjs7Ozs7TjtNT0RJRklFUiBMRVRURVIgR1JBVkU7TWFuZGFyaW4gQ2hpbmVzZSBmb3VydGggdG9uZTs7OworMDJDQztNT0RJRklFUiBMRVRURVIgTE9XIFZFUlRJQ0FMIExJTkU7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkNEO01PRElGSUVSIExFVFRFUiBMT1cgTUFDUk9OO1NrOzA7T047Ozs7O047Ozs7OworMDJDRTtNT0RJRklFUiBMRVRURVIgTE9XIEdSQVZFIEFDQ0VOVDtTazswO09OOzs7OztOO01PRElGSUVSIExFVFRFUiBMT1cgR1JBVkU7Ozs7CiswMkNGO01PRElGSUVSIExFVFRFUiBMT1cgQUNVVEUgQUNDRU5UO1NrOzA7T047Ozs7O047TU9ESUZJRVIgTEVUVEVSIExPVyBBQ1VURTs7OzsKKzAyRDA7TU9ESUZJRVIgTEVUVEVSIFRSSUFOR1VMQVIgQ09MT047TG07MDtPTjs7Ozs7Tjs7Ozs7CiswMkQxO01PRElGSUVSIExFVFRFUiBIQUxGIFRSSUFOR1VMQVIgQ09MT047TG07MDtPTjs7Ozs7Tjs7Ozs7CiswMkQyO01PRElGSUVSIExFVFRFUiBDRU5UUkVEIFJJR0hUIEhBTEYgUklORztTazswO09OOzs7OztOO01PRElGSUVSIExFVFRFUiBDRU5URVJFRCBSSUdIVCBIQUxGIFJJTkc7Ozs7CiswMkQzO01PRElGSUVSIExFVFRFUiBDRU5UUkVEIExFRlQgSEFMRiBSSU5HO1NrOzA7T047Ozs7O047TU9ESUZJRVIgTEVUVEVSIENFTlRFUkVEIExFRlQgSEFMRiBSSU5HOzs7OworMDJENDtNT0RJRklFUiBMRVRURVIgVVAgVEFDSztTazswO09OOzs7OztOOzs7OzsKKzAyRDU7TU9ESUZJRVIgTEVUVEVSIERPV04gVEFDSztTazswO09OOzs7OztOOzs7OzsKKzAyRDY7TU9ESUZJRVIgTEVUVEVSIFBMVVMgU0lHTjtTazswO09OOzs7OztOOzs7OzsKKzAyRDc7TU9ESUZJRVIgTEVUVEVSIE1JTlVTIFNJR047U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkQ4O0JSRVZFO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzA2Ozs7O047U1BBQ0lORyBCUkVWRTs7OzsKKzAyRDk7RE9UIEFCT1ZFO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzA3Ozs7O047U1BBQ0lORyBET1QgQUJPVkU7TWFuZGFyaW4gQ2hpbmVzZSBsaWdodCB0b25lOzs7CiswMkRBO1JJTkcgQUJPVkU7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMEE7Ozs7TjtTUEFDSU5HIFJJTkcgQUJPVkU7Ozs7CiswMkRCO09HT05FSztTazswO09OOzxjb21wYXQ+IDAwMjAgMDMyODs7OztOO1NQQUNJTkcgT0dPTkVLOzs7OworMDJEQztTTUFMTCBUSUxERTtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwMzs7OztOO1NQQUNJTkcgVElMREU7Ozs7CiswMkREO0RPVUJMRSBBQ1VURSBBQ0NFTlQ7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMEI7Ozs7TjtTUEFDSU5HIERPVUJMRSBBQ1VURTs7OzsKKzAyREU7TU9ESUZJRVIgTEVUVEVSIFJIT1RJQyBIT09LO1NrOzA7T047Ozs7O047Ozs7OworMDJFMDtNT0RJRklFUiBMRVRURVIgU01BTEwgR0FNTUE7TG07MDtMOzxzdXBlcj4gMDI2Mzs7OztOOzs7OzsKKzAyRTE7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIEw7TG07MDtMOzxzdXBlcj4gMDA2Qzs7OztOOzs7OzsKKzAyRTI7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFM7TG07MDtMOzxzdXBlcj4gMDA3Mzs7OztOOzs7OzsKKzAyRTM7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFg7TG07MDtMOzxzdXBlcj4gMDA3ODs7OztOOzs7OzsKKzAyRTQ7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFJFVkVSU0VEIEdMT1RUQUwgU1RPUDtMbTswO0w7PHN1cGVyPiAwMjk1Ozs7O047Ozs7OworMDJFNTtNT0RJRklFUiBMRVRURVIgRVhUUkEtSElHSCBUT05FIEJBUjtTazswO09OOzs7OztOOzs7OzsKKzAyRTY7TU9ESUZJRVIgTEVUVEVSIEhJR0ggVE9ORSBCQVI7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkU3O01PRElGSUVSIExFVFRFUiBNSUQgVE9ORSBCQVI7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkU4O01PRElGSUVSIExFVFRFUiBMT1cgVE9ORSBCQVI7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkU5O01PRElGSUVSIExFVFRFUiBFWFRSQS1MT1cgVE9ORSBCQVI7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMzAwO0NPTUJJTklORyBHUkFWRSBBQ0NFTlQ7TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIEdSQVZFO1ZhcmlhOzs7CiswMzAxO0NPTUJJTklORyBBQ1VURSBBQ0NFTlQ7TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIEFDVVRFO094aWE7OzsKKzAzMDI7Q09NQklOSU5HIENJUkNVTUZMRVggQUNDRU5UO01uOzIzMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBDSVJDVU1GTEVYOzs7OworMDMwMztDT01CSU5JTkcgVElMREU7TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIFRJTERFOzs7OworMDMwNDtDT01CSU5JTkcgTUFDUk9OO01uOzIzMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBNQUNST047Ozs7CiswMzA1O0NPTUJJTklORyBPVkVSTElORTtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgT1ZFUlNDT1JFOzs7OworMDMwNjtDT01CSU5JTkcgQlJFVkU7TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIEJSRVZFO1ZyYWNoeTs7OworMDMwNztDT01CSU5JTkcgRE9UIEFCT1ZFO01uOzIzMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBET1QgQUJPVkU7Ozs7CiswMzA4O0NPTUJJTklORyBESUFFUkVTSVM7TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIERJQUVSRVNJUztEaWFseXRpa2E7OzsKKzAzMDk7Q09NQklOSU5HIEhPT0sgQUJPVkU7TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIEhPT0sgQUJPVkU7Ozs7CiswMzBBO0NPTUJJTklORyBSSU5HIEFCT1ZFO01uOzIzMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBSSU5HIEFCT1ZFOzs7OworMDMwQjtDT01CSU5JTkcgRE9VQkxFIEFDVVRFIEFDQ0VOVDtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgRE9VQkxFIEFDVVRFOzs7OworMDMwQztDT01CSU5JTkcgQ0FST047TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIEhBQ0VLOzs7OworMDMwRDtDT01CSU5JTkcgVkVSVElDQUwgTElORSBBQk9WRTtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgVkVSVElDQUwgTElORSBBQk9WRTtUb25vczs7OworMDMwRTtDT01CSU5JTkcgRE9VQkxFIFZFUlRJQ0FMIExJTkUgQUJPVkU7TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIERPVUJMRSBWRVJUSUNBTCBMSU5FIEFCT1ZFOzs7OworMDMwRjtDT01CSU5JTkcgRE9VQkxFIEdSQVZFIEFDQ0VOVDtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgRE9VQkxFIEdSQVZFOzs7OworMDMxMDtDT01CSU5JTkcgQ0FORFJBQklORFU7TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIENBTkRSQUJJTkRVOzs7OworMDMxMTtDT01CSU5JTkcgSU5WRVJURUQgQlJFVkU7TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIElOVkVSVEVEIEJSRVZFOzs7OworMDMxMjtDT01CSU5JTkcgVFVSTkVEIENPTU1BIEFCT1ZFO01uOzIzMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBUVVJORUQgQ09NTUEgQUJPVkU7Ozs7CiswMzEzO0NPTUJJTklORyBDT01NQSBBQk9WRTtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgQ09NTUEgQUJPVkU7UHNpbGk7OzsKKzAzMTQ7Q09NQklOSU5HIFJFVkVSU0VEIENPTU1BIEFCT1ZFO01uOzIzMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBSRVZFUlNFRCBDT01NQSBBQk9WRTtEYXNpYTs7OworMDMxNTtDT01CSU5JTkcgQ09NTUEgQUJPVkUgUklHSFQ7TW47MjMyO09OOzs7OztOO05PTi1TUEFDSU5HIENPTU1BIEFCT1ZFIFJJR0hUOzs7OworMDMxNjtDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XO01uOzIyMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBHUkFWRSBCRUxPVzs7OzsKKzAzMTc7Q09NQklOSU5HIEFDVVRFIEFDQ0VOVCBCRUxPVztNbjsyMjA7T047Ozs7O047Tk9OLVNQQUNJTkcgQUNVVEUgQkVMT1c7Ozs7CiswMzE4O0NPTUJJTklORyBMRUZUIFRBQ0sgQkVMT1c7TW47MjIwO09OOzs7OztOO05PTi1TUEFDSU5HIExFRlQgVEFDSyBCRUxPVzs7OzsKKzAzMTk7Q09NQklOSU5HIFJJR0hUIFRBQ0sgQkVMT1c7TW47MjIwO09OOzs7OztOO05PTi1TUEFDSU5HIFJJR0hUIFRBQ0sgQkVMT1c7Ozs7CiswMzFBO0NPTUJJTklORyBMRUZUIEFOR0xFIEFCT1ZFO01uOzIzMjtPTjs7Ozs7TjtOT04tU1BBQ0lORyBMRUZUIEFOR0xFIEFCT1ZFOzs7OworMDMxQjtDT01CSU5JTkcgSE9STjtNbjsyMTY7T047Ozs7O047Tk9OLVNQQUNJTkcgSE9STjs7OzsKKzAzMUM7Q09NQklOSU5HIExFRlQgSEFMRiBSSU5HIEJFTE9XO01uOzIyMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBMRUZUIEhBTEYgUklORyBCRUxPVzs7OzsKKzAzMUQ7Q09NQklOSU5HIFVQIFRBQ0sgQkVMT1c7TW47MjIwO09OOzs7OztOO05PTi1TUEFDSU5HIFVQIFRBQ0sgQkVMT1c7Ozs7CiswMzFFO0NPTUJJTklORyBET1dOIFRBQ0sgQkVMT1c7TW47MjIwO09OOzs7OztOO05PTi1TUEFDSU5HIERPV04gVEFDSyBCRUxPVzs7OzsKKzAzMUY7Q09NQklOSU5HIFBMVVMgU0lHTiBCRUxPVztNbjsyMjA7T047Ozs7O047Tk9OLVNQQUNJTkcgUExVUyBTSUdOIEJFTE9XOzs7OworMDMyMDtDT01CSU5JTkcgTUlOVVMgU0lHTiBCRUxPVztNbjsyMjA7T047Ozs7O047Tk9OLVNQQUNJTkcgTUlOVVMgU0lHTiBCRUxPVzs7OzsKKzAzMjE7Q09NQklOSU5HIFBBTEFUQUxJWkVEIEhPT0sgQkVMT1c7TW47MjAyO09OOzs7OztOO05PTi1TUEFDSU5HIFBBTEFUQUxJWkVEIEhPT0sgQkVMT1c7Ozs7CiswMzIyO0NPTUJJTklORyBSRVRST0ZMRVggSE9PSyBCRUxPVztNbjsyMDI7T047Ozs7O047Tk9OLVNQQUNJTkcgUkVUUk9GTEVYIEhPT0sgQkVMT1c7Ozs7CiswMzIzO0NPTUJJTklORyBET1QgQkVMT1c7TW47MjIwO09OOzs7OztOO05PTi1TUEFDSU5HIERPVCBCRUxPVzs7OzsKKzAzMjQ7Q09NQklOSU5HIERJQUVSRVNJUyBCRUxPVztNbjsyMjA7T047Ozs7O047Tk9OLVNQQUNJTkcgRE9VQkxFIERPVCBCRUxPVzs7OzsKKzAzMjU7Q09NQklOSU5HIFJJTkcgQkVMT1c7TW47MjIwO09OOzs7OztOO05PTi1TUEFDSU5HIFJJTkcgQkVMT1c7Ozs7CiswMzI2O0NPTUJJTklORyBDT01NQSBCRUxPVztNbjsyMjA7T047Ozs7O047Tk9OLVNQQUNJTkcgQ09NTUEgQkVMT1c7Ozs7CiswMzI3O0NPTUJJTklORyBDRURJTExBO01uOzIwMjtPTjs7Ozs7TjtOT04tU1BBQ0lORyBDRURJTExBOzs7OworMDMyODtDT01CSU5JTkcgT0dPTkVLO01uOzIwMjtPTjs7Ozs7TjtOT04tU1BBQ0lORyBPR09ORUs7Ozs7CiswMzI5O0NPTUJJTklORyBWRVJUSUNBTCBMSU5FIEJFTE9XO01uOzIyMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBWRVJUSUNBTCBMSU5FIEJFTE9XOzs7OworMDMyQTtDT01CSU5JTkcgQlJJREdFIEJFTE9XO01uOzIyMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBCUklER0UgQkVMT1c7Ozs7CiswMzJCO0NPTUJJTklORyBJTlZFUlRFRCBET1VCTEUgQVJDSCBCRUxPVztNbjsyMjA7T047Ozs7O047Tk9OLVNQQUNJTkcgSU5WRVJURUQgRE9VQkxFIEFSQ0ggQkVMT1c7Ozs7CiswMzJDO0NPTUJJTklORyBDQVJPTiBCRUxPVztNbjsyMjA7T047Ozs7O047Tk9OLVNQQUNJTkcgSEFDRUsgQkVMT1c7Ozs7CiswMzJEO0NPTUJJTklORyBDSVJDVU1GTEVYIEFDQ0VOVCBCRUxPVztNbjsyMjA7T047Ozs7O047Tk9OLVNQQUNJTkcgQ0lSQ1VNRkxFWCBCRUxPVzs7OzsKKzAzMkU7Q09NQklOSU5HIEJSRVZFIEJFTE9XO01uOzIyMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBCUkVWRSBCRUxPVzs7OzsKKzAzMkY7Q09NQklOSU5HIElOVkVSVEVEIEJSRVZFIEJFTE9XO01uOzIyMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBJTlZFUlRFRCBCUkVWRSBCRUxPVzs7OzsKKzAzMzA7Q09NQklOSU5HIFRJTERFIEJFTE9XO01uOzIyMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBUSUxERSBCRUxPVzs7OzsKKzAzMzE7Q09NQklOSU5HIE1BQ1JPTiBCRUxPVztNbjsyMjA7T047Ozs7O047Tk9OLVNQQUNJTkcgTUFDUk9OIEJFTE9XOzs7OworMDMzMjtDT01CSU5JTkcgTE9XIExJTkU7TW47MjIwO09OOzs7OztOO05PTi1TUEFDSU5HIFVOREVSU0NPUkU7Ozs7CiswMzMzO0NPTUJJTklORyBET1VCTEUgTE9XIExJTkU7TW47MjIwO09OOzs7OztOO05PTi1TUEFDSU5HIERPVUJMRSBVTkRFUlNDT1JFOzs7OworMDMzNDtDT01CSU5JTkcgVElMREUgT1ZFUkxBWTtNbjsxO09OOzs7OztOO05PTi1TUEFDSU5HIFRJTERFIE9WRVJMQVk7Ozs7CiswMzM1O0NPTUJJTklORyBTSE9SVCBTVFJPS0UgT1ZFUkxBWTtNbjsxO09OOzs7OztOO05PTi1TUEFDSU5HIFNIT1JUIEJBUiBPVkVSTEFZOzs7OworMDMzNjtDT01CSU5JTkcgTE9ORyBTVFJPS0UgT1ZFUkxBWTtNbjsxO09OOzs7OztOO05PTi1TUEFDSU5HIExPTkcgQkFSIE9WRVJMQVk7Ozs7CiswMzM3O0NPTUJJTklORyBTSE9SVCBTT0xJRFVTIE9WRVJMQVk7TW47MTtPTjs7Ozs7TjtOT04tU1BBQ0lORyBTSE9SVCBTTEFTSCBPVkVSTEFZOzs7OworMDMzODtDT01CSU5JTkcgTE9ORyBTT0xJRFVTIE9WRVJMQVk7TW47MTtPTjs7Ozs7TjtOT04tU1BBQ0lORyBMT05HIFNMQVNIIE9WRVJMQVk7Ozs7CiswMzM5O0NPTUJJTklORyBSSUdIVCBIQUxGIFJJTkcgQkVMT1c7TW47MjIwO09OOzs7OztOO05PTi1TUEFDSU5HIFJJR0hUIEhBTEYgUklORyBCRUxPVzs7OzsKKzAzM0E7Q09NQklOSU5HIElOVkVSVEVEIEJSSURHRSBCRUxPVztNbjsyMjA7T047Ozs7O047Tk9OLVNQQUNJTkcgSU5WRVJURUQgQlJJREdFIEJFTE9XOzs7OworMDMzQjtDT01CSU5JTkcgU1FVQVJFIEJFTE9XO01uOzIyMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBTUVVBUkUgQkVMT1c7Ozs7CiswMzNDO0NPTUJJTklORyBTRUFHVUxMIEJFTE9XO01uOzIyMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBTRUFHVUxMIEJFTE9XOzs7OworMDMzRDtDT01CSU5JTkcgWCBBQk9WRTtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgWCBBQk9WRTs7OzsKKzAzM0U7Q09NQklOSU5HIFZFUlRJQ0FMIFRJTERFO01uOzIzMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBWRVJUSUNBTCBUSUxERTs7OzsKKzAzM0Y7Q09NQklOSU5HIERPVUJMRSBPVkVSTElORTtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgRE9VQkxFIE9WRVJTQ09SRTs7OzsKKzAzNDA7Q09NQklOSU5HIEdSQVZFIFRPTkUgTUFSSztNbjsyMzA7T047MDMwMDs7OztOO05PTi1TUEFDSU5HIEdSQVZFIFRPTkUgTUFSSztWaWV0bmFtZXNlOzs7CiswMzQxO0NPTUJJTklORyBBQ1VURSBUT05FIE1BUks7TW47MjMwO09OOzAzMDE7Ozs7TjtOT04tU1BBQ0lORyBBQ1VURSBUT05FIE1BUks7VmlldG5hbWVzZTs7OworMDM0MjtDT01CSU5JTkcgR1JFRUsgUEVSSVNQT01FTkk7TW47MjMwO09OOzs7OztOOzs7OzsKKzAzNDM7Q09NQklOSU5HIEdSRUVLIEtPUk9OSVM7TW47MjMwO09OOzAzMTM7Ozs7Tjs7Ozs7CiswMzQ0O0NPTUJJTklORyBHUkVFSyBESUFMWVRJS0EgVE9OT1M7TW47MjMwO09OOzAzMDggMDMwMTs7OztOO0dSRUVLIE5PTi1TUEFDSU5HIERJQUVSRVNJUyBUT05PUzs7OzsKKzAzNDU7Q09NQklOSU5HIEdSRUVLIFlQT0dFR1JBTU1FTkk7TW47MjQwO09OOzs7OztOO0dSRUVLIE5PTi1TUEFDSU5HIElPVEEgQkVMT1c7OzAzOTk7OworMDM2MDtDT01CSU5JTkcgRE9VQkxFIFRJTERFO01uOzIzNDtPTjs7Ozs7Tjs7Ozs7CiswMzYxO0NPTUJJTklORyBET1VCTEUgSU5WRVJURUQgQlJFVkU7TW47MjM0O09OOzs7OztOOzs7OzsKKzAzNzQ7R1JFRUsgTlVNRVJBTCBTSUdOO1BvOzA7TDswMkI5Ozs7O047R1JFRUsgVVBQRVIgTlVNRVJBTCBTSUdOO0RleGlhIGtlcmFpYTs7OworMDM3NTtHUkVFSyBMT1dFUiBOVU1FUkFMIFNJR047UG87MDtMOzs7OztOOztBcmlzdGVyaSBrZXJhaWE7OzsKKzAzN0E7R1JFRUsgWVBPR0VHUkFNTUVOSTtMbTswO0w7PGNvbXBhdD4gMDAyMCAwMzQ1Ozs7O047R1JFRUsgU1BBQ0lORyBJT1RBIEJFTE9XOzs7OworMDM3RTtHUkVFSyBRVUVTVElPTiBNQVJLO1BvOzA7T047MDAzQjs7OztOOztFcm90aW1hdGlrbzs7OworMDM4NDtHUkVFSyBUT05PUztTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwMTs7OztOO0dSRUVLIFNQQUNJTkcgVE9OT1M7Ozs7CiswMzg1O0dSRUVLIERJQUxZVElLQSBUT05PUztTazswO09OOzAwQTggMDMwMTs7OztOO0dSRUVLIFNQQUNJTkcgRElBRVJFU0lTIFRPTk9TOzs7OworMDM4NjtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFRPTk9TO0x1OzA7TDswMzkxIDAzMDE7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBUT05PUzs7OzAzQUM7CiswMzg3O0dSRUVLIEFOTyBURUxFSUE7UG87MDtPTjswMEI3Ozs7O047Ozs7OworMDM4ODtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggVE9OT1M7THU7MDtMOzAzOTUgMDMwMTs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gVE9OT1M7OzswM0FEOworMDM4OTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBUT05PUztMdTswO0w7MDM5NyAwMzAxOzs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFRPTk9TOzs7MDNBRTsKKzAzOEE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFRPTk9TO0x1OzA7TDswMzk5IDAzMDE7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFRPTk9TOzs7MDNBRjsKKzAzOEM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIFRPTk9TO0x1OzA7TDswMzlGIDAzMDE7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFRPTk9TOzs7MDNDQzsKKzAzOEU7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIFRPTk9TO0x1OzA7TDswM0E1IDAzMDE7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFRPTk9TOzs7MDNDRDsKKzAzOEY7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBUT05PUztMdTswO0w7MDNBOSAwMzAxOzs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgVE9OT1M7OzswM0NFOworMDM5MDtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgVE9OT1M7TGw7MDtMOzAzQ0EgMDMwMTs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIERJQUVSRVNJUyBUT05PUzs7OzsKKzAzOTE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEE7THU7MDtMOzs7OztOOzs7OzAzQjE7CiswMzkyO0dSRUVLIENBUElUQUwgTEVUVEVSIEJFVEE7THU7MDtMOzs7OztOOzs7OzAzQjI7CiswMzkzO0dSRUVLIENBUElUQUwgTEVUVEVSIEdBTU1BO0x1OzA7TDs7Ozs7Tjs7OzswM0IzOworMDM5NDtHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQTtMdTswO0w7Ozs7O047Ozs7MDNCNDsKKzAzOTU7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTjtMdTswO0w7Ozs7O047Ozs7MDNCNTsKKzAzOTY7R1JFRUsgQ0FQSVRBTCBMRVRURVIgWkVUQTtMdTswO0w7Ozs7O047Ozs7MDNCNjsKKzAzOTc7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBO0x1OzA7TDs7Ozs7Tjs7OzswM0I3OworMDM5ODtHUkVFSyBDQVBJVEFMIExFVFRFUiBUSEVUQTtMdTswO0w7Ozs7O047Ozs7MDNCODsKKzAzOTk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQTtMdTswO0w7Ozs7O047Ozs7MDNCOTsKKzAzOUE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgS0FQUEE7THU7MDtMOzs7OztOOzs7OzAzQkE7CiswMzlCO0dSRUVLIENBUElUQUwgTEVUVEVSIExBTURBO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBMQU1CREE7OzswM0JCOworMDM5QztHUkVFSyBDQVBJVEFMIExFVFRFUiBNVTtMdTswO0w7Ozs7O047Ozs7MDNCQzsKKzAzOUQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgTlU7THU7MDtMOzs7OztOOzs7OzAzQkQ7CiswMzlFO0dSRUVLIENBUElUQUwgTEVUVEVSIFhJO0x1OzA7TDs7Ozs7Tjs7OzswM0JFOworMDM5RjtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OO0x1OzA7TDs7Ozs7Tjs7OzswM0JGOworMDNBMDtHUkVFSyBDQVBJVEFMIExFVFRFUiBQSTtMdTswO0w7Ozs7O047Ozs7MDNDMDsKKzAzQTE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgUkhPO0x1OzA7TDs7Ozs7Tjs7OzswM0MxOworMDNBMztHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQTtMdTswO0w7Ozs7O047Ozs7MDNDMzsKKzAzQTQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVEFVO0x1OzA7TDs7Ozs7Tjs7OzswM0M0OworMDNBNTtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OO0x1OzA7TDs7Ozs7Tjs7OzswM0M1OworMDNBNjtHUkVFSyBDQVBJVEFMIExFVFRFUiBQSEk7THU7MDtMOzs7OztOOzs7OzAzQzY7CiswM0E3O0dSRUVLIENBUElUQUwgTEVUVEVSIENISTtMdTswO0w7Ozs7O047Ozs7MDNDNzsKKzAzQTg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgUFNJO0x1OzA7TDs7Ozs7Tjs7OzswM0M4OworMDNBOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQTtMdTswO0w7Ozs7O047Ozs7MDNDOTsKKzAzQUE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQTtMdTswO0w7MDM5OSAwMzA4Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBESUFFUkVTSVM7OzswM0NBOworMDNBQjtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBO0x1OzA7TDswM0E1IDAzMDg7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIERJQUVSRVNJUzs7OzAzQ0I7CiswM0FDO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFRPTk9TO0xsOzA7TDswM0IxIDAzMDE7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgVE9OT1M7OzAzODY7OzAzODYKKzAzQUQ7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBUT05PUztMbDswO0w7MDNCNSAwMzAxOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gVE9OT1M7OzAzODg7OzAzODgKKzAzQUU7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFRPTk9TO0xsOzA7TDswM0I3IDAzMDE7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFRPTk9TOzswMzg5OzswMzg5CiswM0FGO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggVE9OT1M7TGw7MDtMOzAzQjkgMDMwMTs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFRPTk9TOzswMzhBOzswMzhBCiswM0IwO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBIEFORCBUT05PUztMbDswO0w7MDNDQiAwMzAxOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gRElBRVJFU0lTIFRPTk9TOzs7OworMDNCMTtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEE7TGw7MDtMOzs7OztOOzs7MDM5MTs7MDM5MQorMDNCMjtHUkVFSyBTTUFMTCBMRVRURVIgQkVUQTtMbDswO0w7Ozs7O047OzswMzkyOzswMzkyCiswM0IzO0dSRUVLIFNNQUxMIExFVFRFUiBHQU1NQTtMbDswO0w7Ozs7O047OzswMzkzOzswMzkzCiswM0I0O0dSRUVLIFNNQUxMIExFVFRFUiBERUxUQTtMbDswO0w7Ozs7O047OzswMzk0OzswMzk0CiswM0I1O0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OO0xsOzA7TDs7Ozs7Tjs7OzAzOTU7OzAzOTUKKzAzQjY7R1JFRUsgU01BTEwgTEVUVEVSIFpFVEE7TGw7MDtMOzs7OztOOzs7MDM5Njs7MDM5NgorMDNCNztHUkVFSyBTTUFMTCBMRVRURVIgRVRBO0xsOzA7TDs7Ozs7Tjs7OzAzOTc7OzAzOTcKKzAzQjg7R1JFRUsgU01BTEwgTEVUVEVSIFRIRVRBO0xsOzA7TDs7Ozs7Tjs7OzAzOTg7OzAzOTgKKzAzQjk7R1JFRUsgU01BTEwgTEVUVEVSIElPVEE7TGw7MDtMOzs7OztOOzs7MDM5OTs7MDM5OQorMDNCQTtHUkVFSyBTTUFMTCBMRVRURVIgS0FQUEE7TGw7MDtMOzs7OztOOzs7MDM5QTs7MDM5QQorMDNCQjtHUkVFSyBTTUFMTCBMRVRURVIgTEFNREE7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBMQU1CREE7OzAzOUI7OzAzOUIKKzAzQkM7R1JFRUsgU01BTEwgTEVUVEVSIE1VO0xsOzA7TDs7Ozs7Tjs7OzAzOUM7OzAzOUMKKzAzQkQ7R1JFRUsgU01BTEwgTEVUVEVSIE5VO0xsOzA7TDs7Ozs7Tjs7OzAzOUQ7OzAzOUQKKzAzQkU7R1JFRUsgU01BTEwgTEVUVEVSIFhJO0xsOzA7TDs7Ozs7Tjs7OzAzOUU7OzAzOUUKKzAzQkY7R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST047TGw7MDtMOzs7OztOOzs7MDM5Rjs7MDM5RgorMDNDMDtHUkVFSyBTTUFMTCBMRVRURVIgUEk7TGw7MDtMOzs7OztOOzs7MDNBMDs7MDNBMAorMDNDMTtHUkVFSyBTTUFMTCBMRVRURVIgUkhPO0xsOzA7TDs7Ozs7Tjs7OzAzQTE7OzAzQTEKKzAzQzI7R1JFRUsgU01BTEwgTEVUVEVSIEZJTkFMIFNJR01BO0xsOzA7TDs7Ozs7Tjs7OzAzQTM7OzAzQTMKKzAzQzM7R1JFRUsgU01BTEwgTEVUVEVSIFNJR01BO0xsOzA7TDs7Ozs7Tjs7OzAzQTM7OzAzQTMKKzAzQzQ7R1JFRUsgU01BTEwgTEVUVEVSIFRBVTtMbDswO0w7Ozs7O047OzswM0E0OzswM0E0CiswM0M1O0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OO0xsOzA7TDs7Ozs7Tjs7OzAzQTU7OzAzQTUKKzAzQzY7R1JFRUsgU01BTEwgTEVUVEVSIFBISTtMbDswO0w7Ozs7O047OzswM0E2OzswM0E2CiswM0M3O0dSRUVLIFNNQUxMIExFVFRFUiBDSEk7TGw7MDtMOzs7OztOOzs7MDNBNzs7MDNBNworMDNDODtHUkVFSyBTTUFMTCBMRVRURVIgUFNJO0xsOzA7TDs7Ozs7Tjs7OzAzQTg7OzAzQTgKKzAzQzk7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBO0xsOzA7TDs7Ozs7Tjs7OzAzQTk7OzAzQTkKKzAzQ0E7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0E7TGw7MDtMOzAzQjkgMDMwODs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIERJQUVSRVNJUzs7MDNBQTs7MDNBQQorMDNDQjtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQTtMbDswO0w7MDNDNSAwMzA4Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gRElBRVJFU0lTOzswM0FCOzswM0FCCiswM0NDO0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggVE9OT1M7TGw7MDtMOzAzQkYgMDMwMTs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFRPTk9TOzswMzhDOzswMzhDCiswM0NEO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggVE9OT1M7TGw7MDtMOzAzQzUgMDMwMTs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFRPTk9TOzswMzhFOzswMzhFCiswM0NFO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFRPTk9TO0xsOzA7TDswM0M5IDAzMDE7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgVE9OT1M7OzAzOEY7OzAzOEYKKzAzRDA7R1JFRUsgQkVUQSBTWU1CT0w7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBDVVJMRUQgQkVUQTs7MDM5Mjs7MDM5MgorMDNEMTtHUkVFSyBUSEVUQSBTWU1CT0w7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBTQ1JJUFQgVEhFVEE7OzAzOTg7OzAzOTgKKzAzRDI7R1JFRUsgVVBTSUxPTiBXSVRIIEhPT0sgU1lNQk9MO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIEhPT0s7Ozs7CiswM0QzO0dSRUVLIFVQU0lMT04gV0lUSCBBQ1VURSBBTkQgSE9PSyBTWU1CT0w7THU7MDtMOzAzRDIgMDMwMTs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gSE9PSyBUT05PUzs7OzsKKzAzRDQ7R1JFRUsgVVBTSUxPTiBXSVRIIERJQUVSRVNJUyBBTkQgSE9PSyBTWU1CT0w7THU7MDtMOzAzRDIgMDMwODs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gSE9PSyBESUFFUkVTSVM7Ozs7CiswM0Q1O0dSRUVLIFBISSBTWU1CT0w7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBTQ1JJUFQgUEhJOzswM0E2OzswM0E2CiswM0Q2O0dSRUVLIFBJIFNZTUJPTDtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFBJOzswM0EwOzswM0EwCiswM0RBO0dSRUVLIExFVFRFUiBTVElHTUE7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFNUSUdNQTs7OzsKKzAzREM7R1JFRUsgTEVUVEVSIERJR0FNTUE7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIERJR0FNTUE7Ozs7CiswM0RFO0dSRUVLIExFVFRFUiBLT1BQQTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgS09QUEE7Ozs7CiswM0UwO0dSRUVLIExFVFRFUiBTQU1QSTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgU0FNUEk7Ozs7CiswM0UyO0NPUFRJQyBDQVBJVEFMIExFVFRFUiBTSEVJO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBTSEVJOzs7MDNFMzsKKzAzRTM7Q09QVElDIFNNQUxMIExFVFRFUiBTSEVJO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgU0hFSTs7MDNFMjs7MDNFMgorMDNFNDtDT1BUSUMgQ0FQSVRBTCBMRVRURVIgRkVJO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBGRUk7OzswM0U1OworMDNFNTtDT1BUSUMgU01BTEwgTEVUVEVSIEZFSTtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIEZFSTs7MDNFNDs7MDNFNAorMDNFNjtDT1BUSUMgQ0FQSVRBTCBMRVRURVIgS0hFSTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgS0hFSTs7OzAzRTc7CiswM0U3O0NPUFRJQyBTTUFMTCBMRVRURVIgS0hFSTtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIEtIRUk7OzAzRTY7OzAzRTYKKzAzRTg7Q09QVElDIENBUElUQUwgTEVUVEVSIEhPUkk7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIEhPUkk7OzswM0U5OworMDNFOTtDT1BUSUMgU01BTEwgTEVUVEVSIEhPUkk7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBIT1JJOzswM0U4OzswM0U4CiswM0VBO0NPUFRJQyBDQVBJVEFMIExFVFRFUiBHQU5HSUE7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIEdBTkdJQTs7OzAzRUI7CiswM0VCO0NPUFRJQyBTTUFMTCBMRVRURVIgR0FOR0lBO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgR0FOR0lBOzswM0VBOzswM0VBCiswM0VDO0NPUFRJQyBDQVBJVEFMIExFVFRFUiBTSElNQTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgU0hJTUE7OzswM0VEOworMDNFRDtDT1BUSUMgU01BTEwgTEVUVEVSIFNISU1BO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgU0hJTUE7OzAzRUM7OzAzRUMKKzAzRUU7Q09QVElDIENBUElUQUwgTEVUVEVSIERFSTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVJOzs7MDNFRjsKKzAzRUY7Q09QVElDIFNNQUxMIExFVFRFUiBERUk7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBERUk7OzAzRUU7OzAzRUUKKzAzRjA7R1JFRUsgS0FQUEEgU1lNQk9MO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgU0NSSVBUIEtBUFBBOzswMzlBOzswMzlBCiswM0YxO0dSRUVLIFJITyBTWU1CT0w7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBUQUlMRUQgUkhPOzswM0ExOzswM0ExCiswM0YyO0dSRUVLIExVTkFURSBTSUdNQSBTWU1CT0w7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBMVU5BVEUgU0lHTUE7OzAzQTM7OzAzQTMKKzAzRjM7R1JFRUsgTEVUVEVSIFlPVDtMbzswO0w7Ozs7O047Ozs7OworMDQwMTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJTztMdTswO0w7MDQxNSAwMzA4Ozs7O047Ozs7MDQ1MTsKKzA0MDI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgREpFO0x1OzA7TDs7Ozs7Tjs7U2VyYm9jcm9hdGlhbjs7MDQ1MjsKKzA0MDM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0pFO0x1OzA7TDswNDEzIDAzMDE7Ozs7Tjs7OzswNDUzOworMDQwNDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVS1JBSU5JQU4gSUU7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEU7OzswNDU0OworMDQwNTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBEWkU7THU7MDtMOzs7OztOOzs7OzA0NTU7CiswNDA2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSTs7OzA0NTY7CiswNDA3O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFlJO0x1OzA7TDswNDA2IDAzMDg7Ozs7Tjs7VWtyYWluaWFuOzswNDU3OworMDQwODtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBKRTtMdTswO0w7Ozs7O047Ozs7MDQ1ODsKKzA0MDk7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTEpFO0x1OzA7TDs7Ozs7Tjs7OzswNDU5OworMDQwQTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBOSkU7THU7MDtMOzs7OztOOzs7OzA0NUE7CiswNDBCO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFRTSEU7THU7MDtMOzs7OztOOztTZXJib2Nyb2F0aWFuOzswNDVCOworMDQwQztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLSkU7THU7MDtMOzA0MUEgMDMwMTs7OztOOzs7OzA0NUM7CiswNDBFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIFU7THU7MDtMOzA0MjMgMDMwNjs7OztOOztCeWVsb3J1c3NpYW47OzA0NUU7CiswNDBGO0NZUklMTElDIENBUElUQUwgTEVUVEVSIERaSEU7THU7MDtMOzs7OztOOzs7OzA0NUY7CiswNDEwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEE7THU7MDtMOzs7OztOOzs7OzA0MzA7CiswNDExO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEJFO0x1OzA7TDs7Ozs7Tjs7OzswNDMxOworMDQxMjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBWRTtMdTswO0w7Ozs7O047Ozs7MDQzMjsKKzA0MTM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHRTs7OzA0MzM7CiswNDE0O0NZUklMTElDIENBUElUQUwgTEVUVEVSIERFO0x1OzA7TDs7Ozs7Tjs7OzswNDM0OworMDQxNTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRTtMdTswO0w7Ozs7O047Ozs7MDQzNTsKKzA0MTY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFO0x1OzA7TDs7Ozs7Tjs7OzswNDM2OworMDQxNztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRTtMdTswO0w7Ozs7O047Ozs7MDQzNzsKKzA0MTg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUk7OzswNDM4OworMDQxOTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBJO0x1OzA7TDswNDE4IDAzMDY7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBJSTs7OzA0Mzk7CiswNDFBO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtBO0x1OzA7TDs7Ozs7Tjs7OzswNDNBOworMDQxQjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTDtMdTswO0w7Ozs7O047Ozs7MDQzQjsKKzA0MUM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU07THU7MDtMOzs7OztOOzs7OzA0M0M7CiswNDFEO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVOO0x1OzA7TDs7Ozs7Tjs7OzswNDNEOworMDQxRTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPO0x1OzA7TDs7Ozs7Tjs7OzswNDNFOworMDQxRjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRTtMdTswO0w7Ozs7O047Ozs7MDQzRjsKKzA0MjA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVI7THU7MDtMOzs7OztOOzs7OzA0NDA7CiswNDIxO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVTO0x1OzA7TDs7Ozs7Tjs7OzswNDQxOworMDQyMjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURTtMdTswO0w7Ozs7O047Ozs7MDQ0MjsKKzA0MjM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVTtMdTswO0w7Ozs7O047Ozs7MDQ0MzsKKzA0MjQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUY7THU7MDtMOzs7OztOOzs7OzA0NDQ7CiswNDI1O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEhBO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLSEE7OzswNDQ1OworMDQyNjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUU0U7THU7MDtMOzs7OztOOzs7OzA0NDY7CiswNDI3O0NZUklMTElDIENBUElUQUwgTEVUVEVSIENIRTtMdTswO0w7Ozs7O047Ozs7MDQ0NzsKKzA0Mjg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBO0x1OzA7TDs7Ozs7Tjs7OzswNDQ4OworMDQyOTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSENIQTtMdTswO0w7Ozs7O047Ozs7MDQ0OTsKKzA0MkE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEFSRCBTSUdOO0x1OzA7TDs7Ozs7Tjs7OzswNDRBOworMDQyQjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJJOzs7MDQ0QjsKKzA0MkM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU09GVCBTSUdOO0x1OzA7TDs7Ozs7Tjs7OzswNDRDOworMDQyRDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBSRVZFUlNFRCBFOzs7MDQ0RDsKKzA0MkU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWVU7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElVOzs7MDQ0RTsKKzA0MkY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUE7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElBOzs7MDQ0RjsKKzA0MzA7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEE7TGw7MDtMOzs7OztOOzs7MDQxMDs7MDQxMAorMDQzMTtDWVJJTExJQyBTTUFMTCBMRVRURVIgQkU7TGw7MDtMOzs7OztOOzs7MDQxMTs7MDQxMQorMDQzMjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVkU7TGw7MDtMOzs7OztOOzs7MDQxMjs7MDQxMgorMDQzMztDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgR0U7OzA0MTM7OzA0MTMKKzA0MzQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIERFO0xsOzA7TDs7Ozs7Tjs7OzA0MTQ7OzA0MTQKKzA0MzU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElFO0xsOzA7TDs7Ozs7Tjs7OzA0MTU7OzA0MTUKKzA0MzY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRTtMbDswO0w7Ozs7O047OzswNDE2OzswNDE2CiswNDM3O0NZUklMTElDIFNNQUxMIExFVFRFUiBaRTtMbDswO0w7Ozs7O047OzswNDE3OzswNDE3CiswNDM4O0NZUklMTElDIFNNQUxMIExFVFRFUiBJO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgSUk7OzA0MTg7OzA0MTgKKzA0Mzk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEk7TGw7MDtMOzA0MzggMDMwNjs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJSTs7MDQxOTs7MDQxOQorMDQzQTtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0E7TGw7MDtMOzs7OztOOzs7MDQxQTs7MDQxQQorMDQzQjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRUw7TGw7MDtMOzs7OztOOzs7MDQxQjs7MDQxQgorMDQzQztDWVJJTExJQyBTTUFMTCBMRVRURVIgRU07TGw7MDtMOzs7OztOOzs7MDQxQzs7MDQxQworMDQzRDtDWVJJTExJQyBTTUFMTCBMRVRURVIgRU47TGw7MDtMOzs7OztOOzs7MDQxRDs7MDQxRAorMDQzRTtDWVJJTExJQyBTTUFMTCBMRVRURVIgTztMbDswO0w7Ozs7O047OzswNDFFOzswNDFFCiswNDNGO0NZUklMTElDIFNNQUxMIExFVFRFUiBQRTtMbDswO0w7Ozs7O047OzswNDFGOzswNDFGCiswNDQwO0NZUklMTElDIFNNQUxMIExFVFRFUiBFUjtMbDswO0w7Ozs7O047OzswNDIwOzswNDIwCiswNDQxO0NZUklMTElDIFNNQUxMIExFVFRFUiBFUztMbDswO0w7Ozs7O047OzswNDIxOzswNDIxCiswNDQyO0NZUklMTElDIFNNQUxMIExFVFRFUiBURTtMbDswO0w7Ozs7O047OzswNDIyOzswNDIyCiswNDQzO0NZUklMTElDIFNNQUxMIExFVFRFUiBVO0xsOzA7TDs7Ozs7Tjs7OzA0MjM7OzA0MjMKKzA0NDQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVGO0xsOzA7TDs7Ozs7Tjs7OzA0MjQ7OzA0MjQKKzA0NDU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0hBOzswNDI1OzswNDI1CiswNDQ2O0NZUklMTElDIFNNQUxMIExFVFRFUiBUU0U7TGw7MDtMOzs7OztOOzs7MDQyNjs7MDQyNgorMDQ0NztDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFO0xsOzA7TDs7Ozs7Tjs7OzA0Mjc7OzA0MjcKKzA0NDg7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQTtMbDswO0w7Ozs7O047OzswNDI4OzswNDI4CiswNDQ5O0NZUklMTElDIFNNQUxMIExFVFRFUiBTSENIQTtMbDswO0w7Ozs7O047OzswNDI5OzswNDI5CiswNDRBO0NZUklMTElDIFNNQUxMIExFVFRFUiBIQVJEIFNJR047TGw7MDtMOzs7OztOOzs7MDQyQTs7MDQyQQorMDQ0QjtDWVJJTExJQyBTTUFMTCBMRVRURVIgWUVSVTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUkk7OzA0MkI7OzA0MkIKKzA0NEM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNPRlQgU0lHTjtMbDswO0w7Ozs7O047OzswNDJDOzswNDJDCiswNDREO0NZUklMTElDIFNNQUxMIExFVFRFUiBFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgUkVWRVJTRUQgRTs7MDQyRDs7MDQyRAorMDQ0RTtDWVJJTExJQyBTTUFMTCBMRVRURVIgWVU7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBJVTs7MDQyRTs7MDQyRQorMDQ0RjtDWVJJTExJQyBTTUFMTCBMRVRURVIgWUE7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBJQTs7MDQyRjs7MDQyRgorMDQ1MTtDWVJJTExJQyBTTUFMTCBMRVRURVIgSU87TGw7MDtMOzA0MzUgMDMwODs7OztOOzs7MDQwMTs7MDQwMQorMDQ1MjtDWVJJTExJQyBTTUFMTCBMRVRURVIgREpFO0xsOzA7TDs7Ozs7Tjs7U2VyYm9jcm9hdGlhbjswNDAyOzswNDAyCiswNDUzO0NZUklMTElDIFNNQUxMIExFVFRFUiBHSkU7TGw7MDtMOzA0MzMgMDMwMTs7OztOOzs7MDQwMzs7MDQwMworMDQ1NDtDWVJJTExJQyBTTUFMTCBMRVRURVIgVUtSQUlOSUFOIElFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRTs7MDQwNDs7MDQwNAorMDQ1NTtDWVJJTExJQyBTTUFMTCBMRVRURVIgRFpFO0xsOzA7TDs7Ozs7Tjs7OzA0MDU7OzA0MDUKKzA0NTY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEk7OzA0MDY7OzA0MDYKKzA0NTc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFlJO0xsOzA7TDswNDU2IDAzMDg7Ozs7Tjs7VWtyYWluaWFuOzA0MDc7OzA0MDcKKzA0NTg7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEpFO0xsOzA7TDs7Ozs7Tjs7OzA0MDg7OzA0MDgKKzA0NTk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIExKRTtMbDswO0w7Ozs7O047OzswNDA5OzswNDA5CiswNDVBO0NZUklMTElDIFNNQUxMIExFVFRFUiBOSkU7TGw7MDtMOzs7OztOOzs7MDQwQTs7MDQwQQorMDQ1QjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNIRTtMbDswO0w7Ozs7O047O1NlcmJvY3JvYXRpYW47MDQwQjs7MDQwQgorMDQ1QztDWVJJTExJQyBTTUFMTCBMRVRURVIgS0pFO0xsOzA7TDswNDNBIDAzMDE7Ozs7Tjs7OzA0MEM7OzA0MEMKKzA0NUU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIFU7TGw7MDtMOzA0NDMgMDMwNjs7OztOOztCeWVsb3J1c3NpYW47MDQwRTs7MDQwRQorMDQ1RjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRFpIRTtMbDswO0w7Ozs7O047OzswNDBGOzswNDBGCiswNDYwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIE9NRUdBO0x1OzA7TDs7Ozs7Tjs7OzswNDYxOworMDQ2MTtDWVJJTExJQyBTTUFMTCBMRVRURVIgT01FR0E7TGw7MDtMOzs7OztOOzs7MDQ2MDs7MDQ2MAorMDQ2MjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZQVQ7THU7MDtMOzs7OztOOzs7OzA0NjM7CiswNDYzO0NZUklMTElDIFNNQUxMIExFVFRFUiBZQVQ7TGw7MDtMOzs7OztOOzs7MDQ2Mjs7MDQ2MgorMDQ2NDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJT1RJRklFRCBFO0x1OzA7TDs7Ozs7Tjs7OzswNDY1OworMDQ2NTtDWVJJTExJQyBTTUFMTCBMRVRURVIgSU9USUZJRUQgRTtMbDswO0w7Ozs7O047OzswNDY0OzswNDY0CiswNDY2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIExJVFRMRSBZVVM7THU7MDtMOzs7OztOOzs7OzA0Njc7CiswNDY3O0NZUklMTElDIFNNQUxMIExFVFRFUiBMSVRUTEUgWVVTO0xsOzA7TDs7Ozs7Tjs7OzA0NjY7OzA0NjYKKzA0Njg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU9USUZJRUQgTElUVExFIFlVUztMdTswO0w7Ozs7O047Ozs7MDQ2OTsKKzA0Njk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElPVElGSUVEIExJVFRMRSBZVVM7TGw7MDtMOzs7OztOOzs7MDQ2ODs7MDQ2OAorMDQ2QTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCSUcgWVVTO0x1OzA7TDs7Ozs7Tjs7OzswNDZCOworMDQ2QjtDWVJJTExJQyBTTUFMTCBMRVRURVIgQklHIFlVUztMbDswO0w7Ozs7O047OzswNDZBOzswNDZBCiswNDZDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElPVElGSUVEIEJJRyBZVVM7THU7MDtMOzs7OztOOzs7OzA0NkQ7CiswNDZEO0NZUklMTElDIFNNQUxMIExFVFRFUiBJT1RJRklFRCBCSUcgWVVTO0xsOzA7TDs7Ozs7Tjs7OzA0NkM7OzA0NkMKKzA0NkU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS1NJO0x1OzA7TDs7Ozs7Tjs7OzswNDZGOworMDQ2RjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS1NJO0xsOzA7TDs7Ozs7Tjs7OzA0NkU7OzA0NkUKKzA0NzA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUFNJO0x1OzA7TDs7Ozs7Tjs7OzswNDcxOworMDQ3MTtDWVJJTExJQyBTTUFMTCBMRVRURVIgUFNJO0xsOzA7TDs7Ozs7Tjs7OzA0NzA7OzA0NzAKKzA0NzI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRklUQTtMdTswO0w7Ozs7O047Ozs7MDQ3MzsKKzA0NzM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEZJVEE7TGw7MDtMOzs7OztOOzs7MDQ3Mjs7MDQ3MgorMDQ3NDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJWkhJVFNBO0x1OzA7TDs7Ozs7Tjs7OzswNDc1OworMDQ3NTtDWVJJTExJQyBTTUFMTCBMRVRURVIgSVpISVRTQTtMbDswO0w7Ozs7O047OzswNDc0OzswNDc0CiswNDc2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIElaSElUU0EgV0lUSCBET1VCTEUgR1JBVkUgQUNDRU5UO0x1OzA7TDswNDc0IDAzMEY7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJWkhJVFNBIERPVUJMRSBHUkFWRTs7OzA0Nzc7CiswNDc3O0NZUklMTElDIFNNQUxMIExFVFRFUiBJWkhJVFNBIFdJVEggRE9VQkxFIEdSQVZFIEFDQ0VOVDtMbDswO0w7MDQ3NSAwMzBGOzs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElaSElUU0EgRE9VQkxFIEdSQVZFOzswNDc2OzswNDc2CiswNDc4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFVLO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVSyBESUdSQVBIOzs7MDQ3OTsKKzA0Nzk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFVLO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVUsgRElHUkFQSDs7MDQ3ODs7MDQ3OAorMDQ3QTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBST1VORCBPTUVHQTtMdTswO0w7Ozs7O047Ozs7MDQ3QjsKKzA0N0I7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFJPVU5EIE9NRUdBO0xsOzA7TDs7Ozs7Tjs7OzA0N0E7OzA0N0EKKzA0N0M7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBUSVRMTztMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgT01FR0EgVElUTE87OzswNDdEOworMDQ3RDtDWVJJTExJQyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBUSVRMTztMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE9NRUdBIFRJVExPOzswNDdDOzswNDdDCiswNDdFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIE9UO0x1OzA7TDs7Ozs7Tjs7OzswNDdGOworMDQ3RjtDWVJJTExJQyBTTUFMTCBMRVRURVIgT1Q7TGw7MDtMOzs7OztOOzs7MDQ3RTs7MDQ3RQorMDQ4MDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLT1BQQTtMdTswO0w7Ozs7O047Ozs7MDQ4MTsKKzA0ODE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtPUFBBO0xsOzA7TDs7Ozs7Tjs7OzA0ODA7OzA0ODAKKzA0ODI7Q1lSSUxMSUMgVEhPVVNBTkRTIFNJR047U287MDtMOzs7OztOOzs7OzsKKzA0ODM7Q09NQklOSU5HIENZUklMTElDIFRJVExPO01uOzIzMDtPTjs7Ozs7TjtDWVJJTExJQyBOT04tU1BBQ0lORyBUSVRMTzs7OzsKKzA0ODQ7Q09NQklOSU5HIENZUklMTElDIFBBTEFUQUxJWkFUSU9OO01uOzIzMDtPTjs7Ozs7TjtDWVJJTExJQyBOT04tU1BBQ0lORyBQQUxBVEFMSVpBVElPTjs7OzsKKzA0ODU7Q09NQklOSU5HIENZUklMTElDIERBU0lBIFBORVVNQVRBO01uOzIzMDtPTjs7Ozs7TjtDWVJJTExJQyBOT04tU1BBQ0lORyBEQVNJQSBQTkVVTUFUQTs7OzsKKzA0ODY7Q09NQklOSU5HIENZUklMTElDIFBTSUxJIFBORVVNQVRBO01uOzIzMDtPTjs7Ozs7TjtDWVJJTExJQyBOT04tU1BBQ0lORyBQU0lMSSBQTkVVTUFUQTs7OzsKKzA0OTA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFIFdJVEggVVBUVVJOO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHRSBXSVRIIFVQVFVSTjs7OzA0OTE7CiswNDkxO0NZUklMTElDIFNNQUxMIExFVFRFUiBHSEUgV0lUSCBVUFRVUk47TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBHRSBXSVRIIFVQVFVSTjs7MDQ5MDs7MDQ5MAorMDQ5MjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUgV0lUSCBTVFJPS0U7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEdFIEJBUjs7OzA0OTM7CiswNDkzO0NZUklMTElDIFNNQUxMIExFVFRFUiBHSEUgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBHRSBCQVI7OzA0OTI7OzA0OTIKKzA0OTQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFIFdJVEggTUlERExFIEhPT0s7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEdFIEhPT0s7OzswNDk1OworMDQ5NTtDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFIFdJVEggTUlERExFIEhPT0s7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBHRSBIT09LOzswNDk0OzswNDk0CiswNDk2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRSBXSVRIIERFU0NFTkRFUjtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFIFdJVEggUklHSFQgREVTQ0VOREVSOzs7MDQ5NzsKKzA0OTc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRSBXSVRIIERFU0NFTkRFUjtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRSBXSVRIIFJJR0hUIERFU0NFTkRFUjs7MDQ5Njs7MDQ5NgorMDQ5ODtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRSBXSVRIIERFU0NFTkRFUjtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUgQ0VESUxMQTs7OzA0OTk7CiswNDk5O0NZUklMTElDIFNNQUxMIExFVFRFUiBaRSBXSVRIIERFU0NFTkRFUjtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFIENFRElMTEE7OzA0OTg7OzA0OTgKKzA0OUE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVI7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggUklHSFQgREVTQ0VOREVSOzs7MDQ5QjsKKzA0OUI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBSSUdIVCBERVNDRU5ERVI7OzA0OUE7OzA0OUEKKzA0OUM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBWRVJUSUNBTCBTVFJPS0U7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFZFUlRJQ0FMIEJBUjs7OzA0OUQ7CiswNDlEO0NZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIFZFUlRJQ0FMIFNUUk9LRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFZFUlRJQ0FMIEJBUjs7MDQ5Qzs7MDQ5QworMDQ5RTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgQkFSOzs7MDQ5RjsKKzA0OUY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgQkFSOzswNDlFOzswNDlFCiswNEEwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEJBU0hLSVIgS0E7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFJFVkVSU0VEIEdFIEtBOzs7MDRBMTsKKzA0QTE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEJBU0hLSVIgS0E7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBSRVZFUlNFRCBHRSBLQTs7MDRBMDs7MDRBMAorMDRBMjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTiBXSVRIIERFU0NFTkRFUjtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gV0lUSCBSSUdIVCBERVNDRU5ERVI7OzswNEEzOworMDRBMztDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4gV0lUSCBERVNDRU5ERVI7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBFTiBXSVRIIFJJR0hUIERFU0NFTkRFUjs7MDRBMjs7MDRBMgorMDRBNDtDWVJJTExJQyBDQVBJVEFMIExJR0FUVVJFIEVOIEdIRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gR0U7OzswNEE1OworMDRBNTtDWVJJTExJQyBTTUFMTCBMSUdBVFVSRSBFTiBHSEU7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBFTiBHRTs7MDRBNDs7MDRBNAorMDRBNjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRSBXSVRIIE1JRERMRSBIT09LO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRSBIT09LO0Fia2hhc2lhbjs7MDRBNzsKKzA0QTc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFBFIFdJVEggTUlERExFIEhPT0s7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBQRSBIT09LO0Fia2hhc2lhbjswNEE2OzswNEE2CiswNEE4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEFCS0hBU0lBTiBIQTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTyBIT09LOzs7MDRBOTsKKzA0QTk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEFCS0hBU0lBTiBIQTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE8gSE9PSzs7MDRBODs7MDRBOAorMDRBQTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUyBXSVRIIERFU0NFTkRFUjtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMgQ0VESUxMQTs7OzA0QUI7CiswNEFCO0NZUklMTElDIFNNQUxMIExFVFRFUiBFUyBXSVRIIERFU0NFTkRFUjtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTIENFRElMTEE7OzA0QUE7OzA0QUEKKzA0QUM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEUgV0lUSCBERVNDRU5ERVI7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFRFIFdJVEggUklHSFQgREVTQ0VOREVSOzs7MDRBRDsKKzA0QUQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFIFdJVEggREVTQ0VOREVSO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUgV0lUSCBSSUdIVCBERVNDRU5ERVI7OzA0QUM7OzA0QUMKKzA0QUU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU1RSQUlHSFQgVTtMdTswO0w7Ozs7O047Ozs7MDRBRjsKKzA0QUY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNUUkFJR0hUIFU7TGw7MDtMOzs7OztOOzs7MDRBRTs7MDRBRQorMDRCMDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTVFJBSUdIVCBVIFdJVEggU1RST0tFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTVFJBSUdIVCBVIEJBUjs7OzA0QjE7CiswNEIxO0NZUklMTElDIFNNQUxMIExFVFRFUiBTVFJBSUdIVCBVIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgU1RSQUlHSFQgVSBCQVI7OzA0QjA7OzA0QjAKKzA0QjI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEEgV0lUSCBERVNDRU5ERVI7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtIQSBXSVRIIFJJR0hUIERFU0NFTkRFUjs7OzA0QjM7CiswNEIzO0NZUklMTElDIFNNQUxMIExFVFRFUiBIQSBXSVRIIERFU0NFTkRFUjtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtIQSBXSVRIIFJJR0hUIERFU0NFTkRFUjs7MDRCMjs7MDRCMgorMDRCNDtDWVJJTExJQyBDQVBJVEFMIExJR0FUVVJFIFRFIFRTRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEUgVFNFO0Fia2hhc2lhbjs7MDRCNTsKKzA0QjU7Q1lSSUxMSUMgU01BTEwgTElHQVRVUkUgVEUgVFNFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUgVFNFO0Fia2hhc2lhbjswNEI0OzswNEI0CiswNEI2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIERFU0NFTkRFUjtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggUklHSFQgREVTQ0VOREVSOzs7MDRCNzsKKzA0Qjc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBXSVRIIERFU0NFTkRFUjtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBXSVRIIFJJR0hUIERFU0NFTkRFUjs7MDRCNjs7MDRCNgorMDRCODtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUgV0lUSCBWRVJUSUNBTCBTVFJPS0U7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBWRVJUSUNBTCBCQVI7OzswNEI5OworMDRCOTtDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggVkVSVElDQUwgU1RST0tFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFZFUlRJQ0FMIEJBUjs7MDRCODs7MDRCOAorMDRCQTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSEhBO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIOzs7MDRCQjsKKzA0QkI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNISEE7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBIOzswNEJBOzswNEJBCiswNEJDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEFCS0hBU0lBTiBDSEU7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElFIEhPT0s7OzswNEJEOworMDRCRDtDWVJJTExJQyBTTUFMTCBMRVRURVIgQUJLSEFTSUFOIENIRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElFIEhPT0s7OzA0QkM7OzA0QkMKKzA0QkU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQUJLSEFTSUFOIENIRSBXSVRIIERFU0NFTkRFUjtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUgSE9PSyBPR09ORUs7OzswNEJGOworMDRCRjtDWVJJTExJQyBTTUFMTCBMRVRURVIgQUJLSEFTSUFOIENIRSBXSVRIIERFU0NFTkRFUjtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElFIEhPT0sgT0dPTkVLOzswNEJFOzswNEJFCiswNEMwO0NZUklMTElDIExFVFRFUiBQQUxPQ0hLQTtMbzswO0w7Ozs7O047Q1lSSUxMSUMgTEVUVEVSIEk7Ozs7CiswNEMxO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRSBXSVRIIEJSRVZFO0x1OzA7TDswNDE2IDAzMDY7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBaSEU7OzswNEMyOworMDRDMjtDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFIFdJVEggQlJFVkU7TGw7MDtMOzA0MzYgMDMwNjs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBaSEU7OzA0QzE7OzA0QzEKKzA0QzM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBIT09LOzs7MDRDNDsKKzA0QzQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggSE9PSztMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIEhPT0s7OzA0QzM7OzA0QzMKKzA0Qzc7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTiBIT09LOzs7MDRDODsKKzA0Qzg7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOIFdJVEggSE9PSztMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOIEhPT0s7OzA0Qzc7OzA0QzcKKzA0Q0I7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0hBS0FTU0lBTiBDSEU7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIExFRlQgREVTQ0VOREVSOzs7MDRDQzsKKzA0Q0M7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtIQUtBU1NJQU4gQ0hFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggTEVGVCBERVNDRU5ERVI7OzA0Q0I7OzA0Q0IKKzA0RDA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFO0x1OzA7TDswNDEwIDAzMDY7Ozs7Tjs7OzswNEQxOworMDREMTtDWVJJTExJQyBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFO0xsOzA7TDswNDMwIDAzMDY7Ozs7Tjs7OzA0RDA7OzA0RDAKKzA0RDI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDQxMCAwMzA4Ozs7O047Ozs7MDREMzsKKzA0RDM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzA0MzAgMDMwODs7OztOOzs7MDREMjs7MDREMgorMDRENDtDWVJJTExJQyBDQVBJVEFMIExJR0FUVVJFIEEgSUU7THU7MDtMOzs7OztOOzs7OzA0RDU7CiswNEQ1O0NZUklMTElDIFNNQUxMIExJR0FUVVJFIEEgSUU7TGw7MDtMOzs7OztOOzs7MDRENDs7MDRENAorMDRENjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRSBXSVRIIEJSRVZFO0x1OzA7TDswNDE1IDAzMDY7Ozs7Tjs7OzswNEQ3OworMDRENztDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUgV0lUSCBCUkVWRTtMbDswO0w7MDQzNSAwMzA2Ozs7O047OzswNEQ2OzswNEQ2CiswNEQ4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNDSFdBO0x1OzA7TDs7Ozs7Tjs7OzswNEQ5OworMDREOTtDWVJJTExJQyBTTUFMTCBMRVRURVIgU0NIV0E7TGw7MDtMOzs7OztOOzs7MDREODs7MDREOAorMDREQTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTQ0hXQSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDREOCAwMzA4Ozs7O047Ozs7MDREQjsKKzA0REI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNDSFdBIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNEQ5IDAzMDg7Ozs7Tjs7OzA0REE7OzA0REEKKzA0REM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNDE2IDAzMDg7Ozs7Tjs7OzswNEREOworMDRERDtDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNDM2IDAzMDg7Ozs7Tjs7OzA0REM7OzA0REMKKzA0REU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUgV0lUSCBESUFFUkVTSVM7THU7MDtMOzA0MTcgMDMwODs7OztOOzs7OzA0REY7CiswNERGO0NZUklMTElDIFNNQUxMIExFVFRFUiBaRSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDQzNyAwMzA4Ozs7O047OzswNERFOzswNERFCiswNEUwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEFCS0hBU0lBTiBEWkU7THU7MDtMOzs7OztOOzs7OzA0RTE7CiswNEUxO0NZUklMTElDIFNNQUxMIExFVFRFUiBBQktIQVNJQU4gRFpFO0xsOzA7TDs7Ozs7Tjs7OzA0RTA7OzA0RTAKKzA0RTI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE1BQ1JPTjtMdTswO0w7MDQxOCAwMzA0Ozs7O047Ozs7MDRFMzsKKzA0RTM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEkgV0lUSCBNQUNST047TGw7MDtMOzA0MzggMDMwNDs7OztOOzs7MDRFMjs7MDRFMgorMDRFNDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNDE4IDAzMDg7Ozs7Tjs7OzswNEU1OworMDRFNTtDWVJJTExJQyBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDQzOCAwMzA4Ozs7O047OzswNEU0OzswNEU0CiswNEU2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVM7THU7MDtMOzA0MUUgMDMwODs7OztOOzs7OzA0RTc7CiswNEU3O0NZUklMTElDIFNNQUxMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNDNFIDAzMDg7Ozs7Tjs7OzA0RTY7OzA0RTYKKzA0RTg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkFSUkVEIE87THU7MDtMOzs7OztOOzs7OzA0RTk7CiswNEU5O0NZUklMTElDIFNNQUxMIExFVFRFUiBCQVJSRUQgTztMbDswO0w7Ozs7O047OzswNEU4OzswNEU4CiswNEVBO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEJBUlJFRCBPIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNEU4IDAzMDg7Ozs7Tjs7OzswNEVCOworMDRFQjtDWVJJTExJQyBTTUFMTCBMRVRURVIgQkFSUkVEIE8gV0lUSCBESUFFUkVTSVM7TGw7MDtMOzA0RTkgMDMwODs7OztOOzs7MDRFQTs7MDRFQQorMDRFRTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OO0x1OzA7TDswNDIzIDAzMDQ7Ozs7Tjs7OzswNEVGOworMDRFRjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVSBXSVRIIE1BQ1JPTjtMbDswO0w7MDQ0MyAwMzA0Ozs7O047OzswNEVFOzswNEVFCiswNEYwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVM7THU7MDtMOzA0MjMgMDMwODs7OztOOzs7OzA0RjE7CiswNEYxO0NZUklMTElDIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNDQzIDAzMDg7Ozs7Tjs7OzA0RjA7OzA0RjAKKzA0RjI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERPVUJMRSBBQ1VURTtMdTswO0w7MDQyMyAwMzBCOzs7O047Ozs7MDRGMzsKKzA0RjM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEU7TGw7MDtMOzA0NDMgMDMwQjs7OztOOzs7MDRGMjs7MDRGMgorMDRGNDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUgV0lUSCBESUFFUkVTSVM7THU7MDtMOzA0MjcgMDMwODs7OztOOzs7OzA0RjU7CiswNEY1O0NZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzA0NDcgMDMwODs7OztOOzs7MDRGNDs7MDRGNAorMDRGODtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNDJCIDAzMDg7Ozs7Tjs7OzswNEY5OworMDRGOTtDWVJJTExJQyBTTUFMTCBMRVRURVIgWUVSVSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDQ0QiAwMzA4Ozs7O047OzswNEY4OzswNEY4CiswNTMxO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEFZQjtMdTswO0w7Ozs7O047Ozs7MDU2MTsKKzA1MzI7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgQkVOO0x1OzA7TDs7Ozs7Tjs7OzswNTYyOworMDUzMztBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBHSU07THU7MDtMOzs7OztOOzs7OzA1NjM7CiswNTM0O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIERBO0x1OzA7TDs7Ozs7Tjs7OzswNTY0OworMDUzNTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBFQ0g7THU7MDtMOzs7OztOOzs7OzA1NjU7CiswNTM2O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFpBO0x1OzA7TDs7Ozs7Tjs7OzswNTY2OworMDUzNztBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBFSDtMdTswO0w7Ozs7O047Ozs7MDU2NzsKKzA1Mzg7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgRVQ7THU7MDtMOzs7OztOOzs7OzA1Njg7CiswNTM5O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFRPO0x1OzA7TDs7Ozs7Tjs7OzswNTY5OworMDUzQTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBaSEU7THU7MDtMOzs7OztOOzs7OzA1NkE7CiswNTNCO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIElOSTtMdTswO0w7Ozs7O047Ozs7MDU2QjsKKzA1M0M7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgTElXTjtMdTswO0w7Ozs7O047Ozs7MDU2QzsKKzA1M0Q7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgWEVIO0x1OzA7TDs7Ozs7Tjs7OzswNTZEOworMDUzRTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBDQTtMdTswO0w7Ozs7O047Ozs7MDU2RTsKKzA1M0Y7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgS0VOO0x1OzA7TDs7Ozs7Tjs7OzswNTZGOworMDU0MDtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBITztMdTswO0w7Ozs7O047Ozs7MDU3MDsKKzA1NDE7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgSkE7THU7MDtMOzs7OztOOzs7OzA1NzE7CiswNTQyO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEdIQUQ7THU7MDtMOzs7OztOO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIExBRDs7OzA1NzI7CiswNTQzO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIENIRUg7THU7MDtMOzs7OztOOzs7OzA1NzM7CiswNTQ0O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIE1FTjtMdTswO0w7Ozs7O047Ozs7MDU3NDsKKzA1NDU7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgWUk7THU7MDtMOzs7OztOOzs7OzA1NzU7CiswNTQ2O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIE5PVztMdTswO0w7Ozs7O047Ozs7MDU3NjsKKzA1NDc7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgU0hBO0x1OzA7TDs7Ozs7Tjs7OzswNTc3OworMDU0ODtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBWTztMdTswO0w7Ozs7O047Ozs7MDU3ODsKKzA1NDk7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgQ0hBO0x1OzA7TDs7Ozs7Tjs7OzswNTc5OworMDU0QTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBQRUg7THU7MDtMOzs7OztOOzs7OzA1N0E7CiswNTRCO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEpIRUg7THU7MDtMOzs7OztOOzs7OzA1N0I7CiswNTRDO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFJBO0x1OzA7TDs7Ozs7Tjs7OzswNTdDOworMDU0RDtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBTRUg7THU7MDtMOzs7OztOOzs7OzA1N0Q7CiswNTRFO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFZFVztMdTswO0w7Ozs7O047Ozs7MDU3RTsKKzA1NEY7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgVElXTjtMdTswO0w7Ozs7O047Ozs7MDU3RjsKKzA1NTA7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgUkVIO0x1OzA7TDs7Ozs7Tjs7OzswNTgwOworMDU1MTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBDTztMdTswO0w7Ozs7O047Ozs7MDU4MTsKKzA1NTI7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgWUlXTjtMdTswO0w7Ozs7O047Ozs7MDU4MjsKKzA1NTM7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgUElXUjtMdTswO0w7Ozs7O047Ozs7MDU4MzsKKzA1NTQ7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgS0VIO0x1OzA7TDs7Ozs7Tjs7OzswNTg0OworMDU1NTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBPSDtMdTswO0w7Ozs7O047Ozs7MDU4NTsKKzA1NTY7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgRkVIO0x1OzA7TDs7Ozs7Tjs7OzswNTg2OworMDU1OTtBUk1FTklBTiBNT0RJRklFUiBMRVRURVIgTEVGVCBIQUxGIFJJTkc7TG07MDtMOzs7OztOOzs7OzsKKzA1NUE7QVJNRU5JQU4gQVBPU1RST1BIRTtQbzswO0w7Ozs7O047QVJNRU5JQU4gTU9ESUZJRVIgTEVUVEVSIFJJR0hUIEhBTEYgUklORzs7OzsKKzA1NUI7QVJNRU5JQU4gRU1QSEFTSVMgTUFSSztQbzswO0w7Ozs7O047Ozs7OworMDU1QztBUk1FTklBTiBFWENMQU1BVElPTiBNQVJLO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswNTVEO0FSTUVOSUFOIENPTU1BO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswNTVFO0FSTUVOSUFOIFFVRVNUSU9OIE1BUks7UG87MDtMOzs7OztOOzs7OzsKKzA1NUY7QVJNRU5JQU4gQUJCUkVWSUFUSU9OIE1BUks7UG87MDtMOzs7OztOOzs7OzsKKzA1NjE7QVJNRU5JQU4gU01BTEwgTEVUVEVSIEFZQjtMbDswO0w7Ozs7O047OzswNTMxOzswNTMxCiswNTYyO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBCRU47TGw7MDtMOzs7OztOOzs7MDUzMjs7MDUzMgorMDU2MztBUk1FTklBTiBTTUFMTCBMRVRURVIgR0lNO0xsOzA7TDs7Ozs7Tjs7OzA1MzM7OzA1MzMKKzA1NjQ7QVJNRU5JQU4gU01BTEwgTEVUVEVSIERBO0xsOzA7TDs7Ozs7Tjs7OzA1MzQ7OzA1MzQKKzA1NjU7QVJNRU5JQU4gU01BTEwgTEVUVEVSIEVDSDtMbDswO0w7Ozs7O047OzswNTM1OzswNTM1CiswNTY2O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBaQTtMbDswO0w7Ozs7O047OzswNTM2OzswNTM2CiswNTY3O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBFSDtMbDswO0w7Ozs7O047OzswNTM3OzswNTM3CiswNTY4O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBFVDtMbDswO0w7Ozs7O047OzswNTM4OzswNTM4CiswNTY5O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBUTztMbDswO0w7Ozs7O047OzswNTM5OzswNTM5CiswNTZBO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBaSEU7TGw7MDtMOzs7OztOOzs7MDUzQTs7MDUzQQorMDU2QjtBUk1FTklBTiBTTUFMTCBMRVRURVIgSU5JO0xsOzA7TDs7Ozs7Tjs7OzA1M0I7OzA1M0IKKzA1NkM7QVJNRU5JQU4gU01BTEwgTEVUVEVSIExJV047TGw7MDtMOzs7OztOOzs7MDUzQzs7MDUzQworMDU2RDtBUk1FTklBTiBTTUFMTCBMRVRURVIgWEVIO0xsOzA7TDs7Ozs7Tjs7OzA1M0Q7OzA1M0QKKzA1NkU7QVJNRU5JQU4gU01BTEwgTEVUVEVSIENBO0xsOzA7TDs7Ozs7Tjs7OzA1M0U7OzA1M0UKKzA1NkY7QVJNRU5JQU4gU01BTEwgTEVUVEVSIEtFTjtMbDswO0w7Ozs7O047OzswNTNGOzswNTNGCiswNTcwO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBITztMbDswO0w7Ozs7O047OzswNTQwOzswNTQwCiswNTcxO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBKQTtMbDswO0w7Ozs7O047OzswNTQxOzswNTQxCiswNTcyO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBHSEFEO0xsOzA7TDs7Ozs7TjtBUk1FTklBTiBTTUFMTCBMRVRURVIgTEFEOzswNTQyOzswNTQyCiswNTczO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBDSEVIO0xsOzA7TDs7Ozs7Tjs7OzA1NDM7OzA1NDMKKzA1NzQ7QVJNRU5JQU4gU01BTEwgTEVUVEVSIE1FTjtMbDswO0w7Ozs7O047OzswNTQ0OzswNTQ0CiswNTc1O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBZSTtMbDswO0w7Ozs7O047OzswNTQ1OzswNTQ1CiswNTc2O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBOT1c7TGw7MDtMOzs7OztOOzs7MDU0Njs7MDU0NgorMDU3NztBUk1FTklBTiBTTUFMTCBMRVRURVIgU0hBO0xsOzA7TDs7Ozs7Tjs7OzA1NDc7OzA1NDcKKzA1Nzg7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFZPO0xsOzA7TDs7Ozs7Tjs7OzA1NDg7OzA1NDgKKzA1Nzk7QVJNRU5JQU4gU01BTEwgTEVUVEVSIENIQTtMbDswO0w7Ozs7O047OzswNTQ5OzswNTQ5CiswNTdBO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBQRUg7TGw7MDtMOzs7OztOOzs7MDU0QTs7MDU0QQorMDU3QjtBUk1FTklBTiBTTUFMTCBMRVRURVIgSkhFSDtMbDswO0w7Ozs7O047OzswNTRCOzswNTRCCiswNTdDO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBSQTtMbDswO0w7Ozs7O047OzswNTRDOzswNTRDCiswNTdEO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBTRUg7TGw7MDtMOzs7OztOOzs7MDU0RDs7MDU0RAorMDU3RTtBUk1FTklBTiBTTUFMTCBMRVRURVIgVkVXO0xsOzA7TDs7Ozs7Tjs7OzA1NEU7OzA1NEUKKzA1N0Y7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFRJV047TGw7MDtMOzs7OztOOzs7MDU0Rjs7MDU0RgorMDU4MDtBUk1FTklBTiBTTUFMTCBMRVRURVIgUkVIO0xsOzA7TDs7Ozs7Tjs7OzA1NTA7OzA1NTAKKzA1ODE7QVJNRU5JQU4gU01BTEwgTEVUVEVSIENPO0xsOzA7TDs7Ozs7Tjs7OzA1NTE7OzA1NTEKKzA1ODI7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFlJV047TGw7MDtMOzs7OztOOzs7MDU1Mjs7MDU1MgorMDU4MztBUk1FTklBTiBTTUFMTCBMRVRURVIgUElXUjtMbDswO0w7Ozs7O047OzswNTUzOzswNTUzCiswNTg0O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBLRUg7TGw7MDtMOzs7OztOOzs7MDU1NDs7MDU1NAorMDU4NTtBUk1FTklBTiBTTUFMTCBMRVRURVIgT0g7TGw7MDtMOzs7OztOOzs7MDU1NTs7MDU1NQorMDU4NjtBUk1FTklBTiBTTUFMTCBMRVRURVIgRkVIO0xsOzA7TDs7Ozs7Tjs7OzA1NTY7OzA1NTYKKzA1ODc7QVJNRU5JQU4gU01BTEwgTElHQVRVUkUgRUNIIFlJV047TGw7MDtMOzxjb21wYXQ+IDA1NjUgMDU4Mjs7OztOOzs7OzsKKzA1ODk7QVJNRU5JQU4gRlVMTCBTVE9QO1BvOzA7TDs7Ozs7TjtBUk1FTklBTiBQRVJJT0Q7Ozs7CiswNTkxO0hFQlJFVyBBQ0NFTlQgRVROQUhUQTtNbjsyMjA7T047Ozs7O047Ozs7OworMDU5MjtIRUJSRVcgQUNDRU5UIFNFR09MO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNTkzO0hFQlJFVyBBQ0NFTlQgU0hBTFNIRUxFVDtNbjsyMzA7T047Ozs7O047Ozs7OworMDU5NDtIRUJSRVcgQUNDRU5UIFpBUUVGIFFBVEFOO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNTk1O0hFQlJFVyBBQ0NFTlQgWkFRRUYgR0FET0w7TW47MjMwO09OOzs7OztOOzs7OzsKKzA1OTY7SEVCUkVXIEFDQ0VOVCBUSVBFSEE7TW47MjIwO09OOzs7OztOOzs7OzsKKzA1OTc7SEVCUkVXIEFDQ0VOVCBSRVZJQTtNbjsyMzA7T047Ozs7O047Ozs7OworMDU5ODtIRUJSRVcgQUNDRU5UIFpBUlFBO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNTk5O0hFQlJFVyBBQ0NFTlQgUEFTSFRBO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNTlBO0hFQlJFVyBBQ0NFTlQgWUVUSVY7TW47MjIyO09OOzs7OztOOzs7OzsKKzA1OUI7SEVCUkVXIEFDQ0VOVCBURVZJUjtNbjsyMjA7T047Ozs7O047Ozs7OworMDU5QztIRUJSRVcgQUNDRU5UIEdFUkVTSDtNbjsyMzA7T047Ozs7O047Ozs7OworMDU5RDtIRUJSRVcgQUNDRU5UIEdFUkVTSCBNVVFEQU07TW47MjMwO09OOzs7OztOOzs7OzsKKzA1OUU7SEVCUkVXIEFDQ0VOVCBHRVJTSEFZSU07TW47MjMwO09OOzs7OztOOzs7OzsKKzA1OUY7SEVCUkVXIEFDQ0VOVCBRQVJORVkgUEFSQTtNbjsyMzA7T047Ozs7O047Ozs7OworMDVBMDtIRUJSRVcgQUNDRU5UIFRFTElTSEEgR0VET0xBO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNUExO0hFQlJFVyBBQ0NFTlQgUEFaRVI7TW47MjMwO09OOzs7OztOOzs7OzsKKzA1QTM7SEVCUkVXIEFDQ0VOVCBNVU5BSDtNbjsyMjA7T047Ozs7O047Ozs7OworMDVBNDtIRUJSRVcgQUNDRU5UIE1BSEFQQUtIO01uOzIyMDtPTjs7Ozs7Tjs7Ozs7CiswNUE1O0hFQlJFVyBBQ0NFTlQgTUVSS0hBO01uOzIyMDtPTjs7Ozs7Tjs7Ozs7CiswNUE2O0hFQlJFVyBBQ0NFTlQgTUVSS0hBIEtFRlVMQTtNbjsyMjA7T047Ozs7O047Ozs7OworMDVBNztIRUJSRVcgQUNDRU5UIERBUkdBO01uOzIyMDtPTjs7Ozs7Tjs7Ozs7CiswNUE4O0hFQlJFVyBBQ0NFTlQgUUFETUE7TW47MjMwO09OOzs7OztOOzs7OzsKKzA1QTk7SEVCUkVXIEFDQ0VOVCBURUxJU0hBIFFFVEFOQTtNbjsyMzA7T047Ozs7O047Ozs7OworMDVBQTtIRUJSRVcgQUNDRU5UIFlFUkFIIEJFTiBZT01PO01uOzIyMDtPTjs7Ozs7Tjs7Ozs7CiswNUFCO0hFQlJFVyBBQ0NFTlQgT0xFO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNUFDO0hFQlJFVyBBQ0NFTlQgSUxVWTtNbjsyMzA7T047Ozs7O047Ozs7OworMDVBRDtIRUJSRVcgQUNDRU5UIERFSEk7TW47MjIyO09OOzs7OztOOzs7OzsKKzA1QUU7SEVCUkVXIEFDQ0VOVCBaSU5PUjtNbjsyMzA7T047Ozs7O047Ozs7OworMDVBRjtIRUJSRVcgTUFSSyBNQVNPUkEgQ0lSQ0xFO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNUIwO0hFQlJFVyBQT0lOVCBTSEVWQTtNbjsxMDtPTjs7Ozs7Tjs7Ozs7CiswNUIxO0hFQlJFVyBQT0lOVCBIQVRBRiBTRUdPTDtNbjsxMTtPTjs7Ozs7Tjs7Ozs7CiswNUIyO0hFQlJFVyBQT0lOVCBIQVRBRiBQQVRBSDtNbjsxMjtPTjs7Ozs7Tjs7Ozs7CiswNUIzO0hFQlJFVyBQT0lOVCBIQVRBRiBRQU1BVFM7TW47MTM7T047Ozs7O047Ozs7OworMDVCNDtIRUJSRVcgUE9JTlQgSElSSVE7TW47MTQ7T047Ozs7O047Ozs7OworMDVCNTtIRUJSRVcgUE9JTlQgVFNFUkU7TW47MTU7T047Ozs7O047Ozs7OworMDVCNjtIRUJSRVcgUE9JTlQgU0VHT0w7TW47MTY7T047Ozs7O047Ozs7OworMDVCNztIRUJSRVcgUE9JTlQgUEFUQUg7TW47MTc7T047Ozs7O047Ozs7OworMDVCODtIRUJSRVcgUE9JTlQgUUFNQVRTO01uOzE4O09OOzs7OztOOzs7OzsKKzA1Qjk7SEVCUkVXIFBPSU5UIEhPTEFNO01uOzE5O09OOzs7OztOOzs7OzsKKzA1QkI7SEVCUkVXIFBPSU5UIFFVQlVUUztNbjsyMDtPTjs7Ozs7Tjs7Ozs7CiswNUJDO0hFQlJFVyBQT0lOVCBEQUdFU0ggT1IgTUFQSVE7TW47MjE7T047Ozs7O047SEVCUkVXIFBPSU5UIERBR0VTSDs7OzsKKzA1QkQ7SEVCUkVXIFBPSU5UIE1FVEVHO01uOzIyO09OOzs7OztOOzs7OzsKKzA1QkU7SEVCUkVXIFBVTkNUVUFUSU9OIE1BUUFGO1BvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUJGO0hFQlJFVyBQT0lOVCBSQUZFO01uOzIzO09OOzs7OztOOzs7OzsKKzA1QzA7SEVCUkVXIFBVTkNUVUFUSU9OIFBBU0VRO1BvOzA7Ujs7Ozs7TjtIRUJSRVcgUE9JTlQgUEFTRVE7Ozs7CiswNUMxO0hFQlJFVyBQT0lOVCBTSElOIERPVDtNbjsyNDtPTjs7Ozs7Tjs7Ozs7CiswNUMyO0hFQlJFVyBQT0lOVCBTSU4gRE9UO01uOzI1O09OOzs7OztOOzs7OzsKKzA1QzM7SEVCUkVXIFBVTkNUVUFUSU9OIFNPRiBQQVNVUTtQbzswO1I7Ozs7O047Ozs7OworMDVDNDtIRUJSRVcgTUFSSyBVUFBFUiBET1Q7TW47MjMwO09OOzs7OztOOzs7OzsKKzA1RDA7SEVCUkVXIExFVFRFUiBBTEVGO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQxO0hFQlJFVyBMRVRURVIgQkVUO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQyO0hFQlJFVyBMRVRURVIgR0lNRUw7TG87MDtSOzs7OztOOzs7OzsKKzA1RDM7SEVCUkVXIExFVFRFUiBEQUxFVDtMbzswO1I7Ozs7O047Ozs7OworMDVENDtIRUJSRVcgTEVUVEVSIEhFO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQ1O0hFQlJFVyBMRVRURVIgVkFWO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQ2O0hFQlJFVyBMRVRURVIgWkFZSU47TG87MDtSOzs7OztOOzs7OzsKKzA1RDc7SEVCUkVXIExFVFRFUiBIRVQ7TG87MDtSOzs7OztOOzs7OzsKKzA1RDg7SEVCUkVXIExFVFRFUiBURVQ7TG87MDtSOzs7OztOOzs7OzsKKzA1RDk7SEVCUkVXIExFVFRFUiBZT0Q7TG87MDtSOzs7OztOOzs7OzsKKzA1REE7SEVCUkVXIExFVFRFUiBGSU5BTCBLQUY7TG87MDtSOzs7OztOOzs7OzsKKzA1REI7SEVCUkVXIExFVFRFUiBLQUY7TG87MDtSOzs7OztOOzs7OzsKKzA1REM7SEVCUkVXIExFVFRFUiBMQU1FRDtMbzswO1I7Ozs7O047Ozs7OworMDVERDtIRUJSRVcgTEVUVEVSIEZJTkFMIE1FTTtMbzswO1I7Ozs7O047Ozs7OworMDVERTtIRUJSRVcgTEVUVEVSIE1FTTtMbzswO1I7Ozs7O047Ozs7OworMDVERjtIRUJSRVcgTEVUVEVSIEZJTkFMIE5VTjtMbzswO1I7Ozs7O047Ozs7OworMDVFMDtIRUJSRVcgTEVUVEVSIE5VTjtMbzswO1I7Ozs7O047Ozs7OworMDVFMTtIRUJSRVcgTEVUVEVSIFNBTUVLSDtMbzswO1I7Ozs7O047Ozs7OworMDVFMjtIRUJSRVcgTEVUVEVSIEFZSU47TG87MDtSOzs7OztOOzs7OzsKKzA1RTM7SEVCUkVXIExFVFRFUiBGSU5BTCBQRTtMbzswO1I7Ozs7O047Ozs7OworMDVFNDtIRUJSRVcgTEVUVEVSIFBFO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUU1O0hFQlJFVyBMRVRURVIgRklOQUwgVFNBREk7TG87MDtSOzs7OztOOzs7OzsKKzA1RTY7SEVCUkVXIExFVFRFUiBUU0FESTtMbzswO1I7Ozs7O047Ozs7OworMDVFNztIRUJSRVcgTEVUVEVSIFFPRjtMbzswO1I7Ozs7O047Ozs7OworMDVFODtIRUJSRVcgTEVUVEVSIFJFU0g7TG87MDtSOzs7OztOOzs7OzsKKzA1RTk7SEVCUkVXIExFVFRFUiBTSElOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUVBO0hFQlJFVyBMRVRURVIgVEFWO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUYwO0hFQlJFVyBMSUdBVFVSRSBZSURESVNIIERPVUJMRSBWQVY7TG87MDtSOzs7OztOO0hFQlJFVyBMRVRURVIgRE9VQkxFIFZBVjs7OzsKKzA1RjE7SEVCUkVXIExJR0FUVVJFIFlJRERJU0ggVkFWIFlPRDtMbzswO1I7Ozs7O047SEVCUkVXIExFVFRFUiBWQVYgWU9EOzs7OworMDVGMjtIRUJSRVcgTElHQVRVUkUgWUlERElTSCBET1VCTEUgWU9EO0xvOzA7Ujs7Ozs7TjtIRUJSRVcgTEVUVEVSIERPVUJMRSBZT0Q7Ozs7CiswNUYzO0hFQlJFVyBQVU5DVFVBVElPTiBHRVJFU0g7UG87MDtSOzs7OztOOzs7OzsKKzA1RjQ7SEVCUkVXIFBVTkNUVUFUSU9OIEdFUlNIQVlJTTtQbzswO1I7Ozs7O047Ozs7OworMDYwQztBUkFCSUMgQ09NTUE7UG87MDtDUzs7Ozs7Tjs7Ozs7CiswNjFCO0FSQUJJQyBTRU1JQ09MT047UG87MDtSOzs7OztOOzs7OzsKKzA2MUY7QVJBQklDIFFVRVNUSU9OIE1BUks7UG87MDtSOzs7OztOOzs7OzsKKzA2MjE7QVJBQklDIExFVFRFUiBIQU1aQTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQU1aQUg7Ozs7CiswNjIyO0FSQUJJQyBMRVRURVIgQUxFRiBXSVRIIE1BRERBIEFCT1ZFO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIE1BRERBSCBPTiBBTEVGOzs7OworMDYyMztBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBIQU1aQSBBQk9WRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQU1aQUggT04gQUxFRjs7OzsKKzA2MjQ7QVJBQklDIExFVFRFUiBXQVcgV0lUSCBIQU1aQSBBQk9WRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQU1aQUggT04gV0FXOzs7OworMDYyNTtBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBIQU1aQSBCRUxPVztMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQU1aQUggVU5ERVIgQUxFRjs7OzsKKzA2MjY7QVJBQklDIExFVFRFUiBZRUggV0lUSCBIQU1aQSBBQk9WRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQU1aQUggT04gWUE7Ozs7CiswNjI3O0FSQUJJQyBMRVRURVIgQUxFRjtMbzswO1I7Ozs7O047Ozs7OworMDYyODtBUkFCSUMgTEVUVEVSIEJFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBCQUE7Ozs7CiswNjI5O0FSQUJJQyBMRVRURVIgVEVIIE1BUkJVVEE7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIE1BUkJVVEFIOzs7OworMDYyQTtBUkFCSUMgTEVUVEVSIFRFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBUQUE7Ozs7CiswNjJCO0FSQUJJQyBMRVRURVIgVEhFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBUSEFBOzs7OworMDYyQztBUkFCSUMgTEVUVEVSIEpFRU07TG87MDtSOzs7OztOOzs7OzsKKzA2MkQ7QVJBQklDIExFVFRFUiBIQUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFBOzs7OworMDYyRTtBUkFCSUMgTEVUVEVSIEtIQUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgS0hBQTs7OzsKKzA2MkY7QVJBQklDIExFVFRFUiBEQUw7TG87MDtSOzs7OztOOzs7OzsKKzA2MzA7QVJBQklDIExFVFRFUiBUSEFMO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjMxO0FSQUJJQyBMRVRURVIgUkVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBOzs7OworMDYzMjtBUkFCSUMgTEVUVEVSIFpBSU47TG87MDtSOzs7OztOOzs7OzsKKzA2MzM7QVJBQklDIExFVFRFUiBTRUVOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjM0O0FSQUJJQyBMRVRURVIgU0hFRU47TG87MDtSOzs7OztOOzs7OzsKKzA2MzU7QVJBQklDIExFVFRFUiBTQUQ7TG87MDtSOzs7OztOOzs7OzsKKzA2MzY7QVJBQklDIExFVFRFUiBEQUQ7TG87MDtSOzs7OztOOzs7OzsKKzA2Mzc7QVJBQklDIExFVFRFUiBUQUg7TG87MDtSOzs7OztOOzs7OzsKKzA2Mzg7QVJBQklDIExFVFRFUiBaQUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgREhBSDs7OzsKKzA2Mzk7QVJBQklDIExFVFRFUiBBSU47TG87MDtSOzs7OztOOzs7OzsKKzA2M0E7QVJBQklDIExFVFRFUiBHSEFJTjtMbzswO1I7Ozs7O047Ozs7OworMDY0MDtBUkFCSUMgVEFUV0VFTDtMbTswO1I7Ozs7O047Ozs7OworMDY0MTtBUkFCSUMgTEVUVEVSIEZFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBGQTs7OzsKKzA2NDI7QVJBQklDIExFVFRFUiBRQUY7TG87MDtSOzs7OztOOzs7OzsKKzA2NDM7QVJBQklDIExFVFRFUiBLQUY7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgQ0FGOzs7OworMDY0NDtBUkFCSUMgTEVUVEVSIExBTTtMbzswO1I7Ozs7O047Ozs7OworMDY0NTtBUkFCSUMgTEVUVEVSIE1FRU07TG87MDtSOzs7OztOOzs7OzsKKzA2NDY7QVJBQklDIExFVFRFUiBOT09OO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjQ3O0FSQUJJQyBMRVRURVIgSEVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBOzs7OworMDY0ODtBUkFCSUMgTEVUVEVSIFdBVztMbzswO1I7Ozs7O047Ozs7OworMDY0OTtBUkFCSUMgTEVUVEVSIEFMRUYgTUFLU1VSQTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBBTEVGIE1BUVNVUkFIOzs7OworMDY0QTtBUkFCSUMgTEVUVEVSIFlFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBZQTs7OzsKKzA2NEI7QVJBQklDIEZBVEhBVEFOO01uOzI3O09OOzs7OztOOzs7OzsKKzA2NEM7QVJBQklDIERBTU1BVEFOO01uOzI4O09OOzs7OztOOzs7OzsKKzA2NEQ7QVJBQklDIEtBU1JBVEFOO01uOzI5O09OOzs7OztOOzs7OzsKKzA2NEU7QVJBQklDIEZBVEhBO01uOzMwO09OOzs7OztOO0FSQUJJQyBGQVRIQUg7Ozs7CiswNjRGO0FSQUJJQyBEQU1NQTtNbjszMTtPTjs7Ozs7TjtBUkFCSUMgREFNTUFIOzs7OworMDY1MDtBUkFCSUMgS0FTUkE7TW47MzI7T047Ozs7O047QVJBQklDIEtBU1JBSDs7OzsKKzA2NTE7QVJBQklDIFNIQUREQTtNbjszMztPTjs7Ozs7TjtBUkFCSUMgU0hBRERBSDs7OzsKKzA2NTI7QVJBQklDIFNVS1VOO01uOzM0O09OOzs7OztOOzs7OzsKKzA2NjA7QVJBQklDLUlORElDIERJR0lUIFpFUk87TmQ7MDtBTjs7MDswOzA7Tjs7Ozs7CiswNjYxO0FSQUJJQy1JTkRJQyBESUdJVCBPTkU7TmQ7MDtBTjs7MTsxOzE7Tjs7Ozs7CiswNjYyO0FSQUJJQy1JTkRJQyBESUdJVCBUV087TmQ7MDtBTjs7MjsyOzI7Tjs7Ozs7CiswNjYzO0FSQUJJQy1JTkRJQyBESUdJVCBUSFJFRTtOZDswO0FOOzszOzM7MztOOzs7OzsKKzA2NjQ7QVJBQklDLUlORElDIERJR0lUIEZPVVI7TmQ7MDtBTjs7NDs0OzQ7Tjs7Ozs7CiswNjY1O0FSQUJJQy1JTkRJQyBESUdJVCBGSVZFO05kOzA7QU47OzU7NTs1O047Ozs7OworMDY2NjtBUkFCSUMtSU5ESUMgRElHSVQgU0lYO05kOzA7QU47OzY7Njs2O047Ozs7OworMDY2NztBUkFCSUMtSU5ESUMgRElHSVQgU0VWRU47TmQ7MDtBTjs7Nzs3Ozc7Tjs7Ozs7CiswNjY4O0FSQUJJQy1JTkRJQyBESUdJVCBFSUdIVDtOZDswO0FOOzs4Ozg7ODtOOzs7OzsKKzA2Njk7QVJBQklDLUlORElDIERJR0lUIE5JTkU7TmQ7MDtBTjs7OTs5Ozk7Tjs7Ozs7CiswNjZBO0FSQUJJQyBQRVJDRU5UIFNJR047UG87MDtFVDs7Ozs7Tjs7Ozs7CiswNjZCO0FSQUJJQyBERUNJTUFMIFNFUEFSQVRPUjtQbzswO0FOOzs7OztOOzs7OzsKKzA2NkM7QVJBQklDIFRIT1VTQU5EUyBTRVBBUkFUT1I7UG87MDtBTjs7Ozs7Tjs7Ozs7CiswNjZEO0FSQUJJQyBGSVZFIFBPSU5URUQgU1RBUjtQbzswO1I7Ozs7O047Ozs7OworMDY3MDtBUkFCSUMgTEVUVEVSIFNVUEVSU0NSSVBUIEFMRUY7TW47MzU7T047Ozs7O047QVJBQklDIEFMRUYgQUJPVkU7Ozs7CiswNjcxO0FSQUJJQyBMRVRURVIgQUxFRiBXQVNMQTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQU1aQVQgV0FTTCBPTiBBTEVGOzs7OworMDY3MjtBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBXQVZZIEhBTVpBIEFCT1ZFO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFdBVlkgSEFNWkFIIE9OIEFMRUY7Ozs7CiswNjczO0FSQUJJQyBMRVRURVIgQUxFRiBXSVRIIFdBVlkgSEFNWkEgQkVMT1c7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgV0FWWSBIQU1aQUggVU5ERVIgQUxFRjs7OzsKKzA2NzQ7QVJBQklDIExFVFRFUiBISUdIIEhBTVpBO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhJR0ggSEFNWkFIOzs7OworMDY3NTtBUkFCSUMgTEVUVEVSIEhJR0ggSEFNWkEgQUxFRjtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBISUdIIEhBTVpBSCBBTEVGOzs7OworMDY3NjtBUkFCSUMgTEVUVEVSIEhJR0ggSEFNWkEgV0FXO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhJR0ggSEFNWkFIIFdBVzs7OzsKKzA2Nzc7QVJBQklDIExFVFRFUiBVIFdJVEggSEFNWkEgQUJPVkU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSElHSCBIQU1aQUggV0FXIFdJVEggREFNTUFIOzs7OworMDY3ODtBUkFCSUMgTEVUVEVSIEhJR0ggSEFNWkEgWUVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhJR0ggSEFNWkFIIFlBOzs7OworMDY3OTtBUkFCSUMgTEVUVEVSIFRURUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIFdJVEggU01BTEwgVEFIOzs7OworMDY3QTtBUkFCSUMgTEVUVEVSIFRURUhFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBUQUEgV0lUSCBUV08gRE9UUyBWRVJUSUNBTCBBQk9WRTs7OzsKKzA2N0I7QVJBQklDIExFVFRFUiBCRUVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEJBQSBXSVRIIFRXTyBET1RTIFZFUlRJQ0FMIEJFTE9XOzs7OworMDY3QztBUkFCSUMgTEVUVEVSIFRFSCBXSVRIIFJJTkc7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIFdJVEggUklORzs7OzsKKzA2N0Q7QVJBQklDIExFVFRFUiBURUggV0lUSCBUSFJFRSBET1RTIEFCT1ZFIERPV05XQVJEUztMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBUQUEgV0lUSCBUSFJFRSBET1RTIEFCT1ZFIERPV05XQVJEOzs7OworMDY3RTtBUkFCSUMgTEVUVEVSIFBFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBUQUEgV0lUSCBUSFJFRSBET1RTIEJFTE9XOzs7OworMDY3RjtBUkFCSUMgTEVUVEVSIFRFSEVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFRBQSBXSVRIIEZPVVIgRE9UUyBBQk9WRTs7OzsKKzA2ODA7QVJBQklDIExFVFRFUiBCRUhFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBCQUEgV0lUSCBGT1VSIERPVFMgQkVMT1c7Ozs7CiswNjgxO0FSQUJJQyBMRVRURVIgSEFIIFdJVEggSEFNWkEgQUJPVkU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIIE9OIEhBQTs7OzsKKzA2ODI7QVJBQklDIExFVFRFUiBIQUggV0lUSCBUV08gRE9UUyBWRVJUSUNBTCBBQk9WRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQUEgV0lUSCBUV08gRE9UUyBWRVJUSUNBTCBBQk9WRTs7OzsKKzA2ODM7QVJBQklDIExFVFRFUiBOWUVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBQSBXSVRIIE1JRERMRSBUV08gRE9UUzs7OzsKKzA2ODQ7QVJBQklDIExFVFRFUiBEWUVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBQSBXSVRIIE1JRERMRSBUV08gRE9UUyBWRVJUSUNBTDs7OzsKKzA2ODU7QVJBQklDIExFVFRFUiBIQUggV0lUSCBUSFJFRSBET1RTIEFCT1ZFO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBQSBXSVRIIFRIUkVFIERPVFMgQUJPVkU7Ozs7CiswNjg2O0FSQUJJQyBMRVRURVIgVENIRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFBIFdJVEggTUlERExFIFRIUkVFIERPVFMgRE9XTldBUkQ7Ozs7CiswNjg3O0FSQUJJQyBMRVRURVIgVENIRUhFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQUEgV0lUSCBNSURETEUgRk9VUiBET1RTOzs7OworMDY4ODtBUkFCSUMgTEVUVEVSIEREQUw7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgREFMIFdJVEggU01BTEwgVEFIOzs7OworMDY4OTtBUkFCSUMgTEVUVEVSIERBTCBXSVRIIFJJTkc7TG87MDtSOzs7OztOOzs7OzsKKzA2OEE7QVJBQklDIExFVFRFUiBEQUwgV0lUSCBET1QgQkVMT1c7TG87MDtSOzs7OztOOzs7OzsKKzA2OEI7QVJBQklDIExFVFRFUiBEQUwgV0lUSCBET1QgQkVMT1cgQU5EIFNNQUxMIFRBSDtMbzswO1I7Ozs7O047Ozs7OworMDY4QztBUkFCSUMgTEVUVEVSIERBSEFMO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIERBTCBXSVRIIFRXTyBET1RTIEFCT1ZFOzs7OworMDY4RDtBUkFCSUMgTEVUVEVSIEREQUhBTDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBEQUwgV0lUSCBUV08gRE9UUyBCRUxPVzs7OzsKKzA2OEU7QVJBQklDIExFVFRFUiBEVUw7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgREFMIFdJVEggVEhSRUUgRE9UUyBBQk9WRTs7OzsKKzA2OEY7QVJBQklDIExFVFRFUiBEQUwgV0lUSCBUSFJFRSBET1RTIEFCT1ZFIERPV05XQVJEUztMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBEQUwgV0lUSCBUSFJFRSBET1RTIEFCT1ZFIERPV05XQVJEOzs7OworMDY5MDtBUkFCSUMgTEVUVEVSIERBTCBXSVRIIEZPVVIgRE9UUyBBQk9WRTtMbzswO1I7Ozs7O047Ozs7OworMDY5MTtBUkFCSUMgTEVUVEVSIFJSRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBTTUFMTCBUQUg7Ozs7CiswNjkyO0FSQUJJQyBMRVRURVIgUkVIIFdJVEggU01BTEwgVjtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBSQSBXSVRIIFNNQUxMIFY7Ozs7CiswNjkzO0FSQUJJQyBMRVRURVIgUkVIIFdJVEggUklORztMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBSQSBXSVRIIFJJTkc7Ozs7CiswNjk0O0FSQUJJQyBMRVRURVIgUkVIIFdJVEggRE9UIEJFTE9XO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBIFdJVEggRE9UIEJFTE9XOzs7OworMDY5NTtBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIFNNQUxMIFYgQkVMT1c7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBTTUFMTCBWIEJFTE9XOzs7OworMDY5NjtBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIERPVCBCRUxPVyBBTkQgRE9UIEFCT1ZFO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBIFdJVEggRE9UIEJFTE9XIEFORCBET1QgQUJPVkU7Ozs7CiswNjk3O0FSQUJJQyBMRVRURVIgUkVIIFdJVEggVFdPIERPVFMgQUJPVkU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBUV08gRE9UUyBBQk9WRTs7OzsKKzA2OTg7QVJBQklDIExFVFRFUiBKRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBUSFJFRSBET1RTIEFCT1ZFOzs7OworMDY5OTtBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIEZPVVIgRE9UUyBBQk9WRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBSQSBXSVRIIEZPVVIgRE9UUyBBQk9WRTs7OzsKKzA2OUE7QVJBQklDIExFVFRFUiBTRUVOIFdJVEggRE9UIEJFTE9XIEFORCBET1QgQUJPVkU7TG87MDtSOzs7OztOOzs7OzsKKzA2OUI7QVJBQklDIExFVFRFUiBTRUVOIFdJVEggVEhSRUUgRE9UUyBCRUxPVztMbzswO1I7Ozs7O047Ozs7OworMDY5QztBUkFCSUMgTEVUVEVSIFNFRU4gV0lUSCBUSFJFRSBET1RTIEJFTE9XIEFORCBUSFJFRSBET1RTIEFCT1ZFO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjlEO0FSQUJJQyBMRVRURVIgU0FEIFdJVEggVFdPIERPVFMgQkVMT1c7TG87MDtSOzs7OztOOzs7OzsKKzA2OUU7QVJBQklDIExFVFRFUiBTQUQgV0lUSCBUSFJFRSBET1RTIEFCT1ZFO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNjlGO0FSQUJJQyBMRVRURVIgVEFIIFdJVEggVEhSRUUgRE9UUyBBQk9WRTtMbzswO1I7Ozs7O047Ozs7OworMDZBMDtBUkFCSUMgTEVUVEVSIEFJTiBXSVRIIFRIUkVFIERPVFMgQUJPVkU7TG87MDtSOzs7OztOOzs7OzsKKzA2QTE7QVJBQklDIExFVFRFUiBET1RMRVNTIEZFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBET1RMRVNTIEZBOzs7OworMDZBMjtBUkFCSUMgTEVUVEVSIEZFSCBXSVRIIERPVCBNT1ZFRCBCRUxPVztMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBGQSBXSVRIIERPVCBNT1ZFRCBCRUxPVzs7OzsKKzA2QTM7QVJBQklDIExFVFRFUiBGRUggV0lUSCBET1QgQkVMT1c7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgRkEgV0lUSCBET1QgQkVMT1c7Ozs7CiswNkE0O0FSQUJJQyBMRVRURVIgVkVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEZBIFdJVEggVEhSRUUgRE9UUyBBQk9WRTs7OzsKKzA2QTU7QVJBQklDIExFVFRFUiBGRUggV0lUSCBUSFJFRSBET1RTIEJFTE9XO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEZBIFdJVEggVEhSRUUgRE9UUyBCRUxPVzs7OzsKKzA2QTY7QVJBQklDIExFVFRFUiBQRUhFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBGQSBXSVRIIEZPVVIgRE9UUyBBQk9WRTs7OzsKKzA2QTc7QVJBQklDIExFVFRFUiBRQUYgV0lUSCBET1QgQUJPVkU7TG87MDtSOzs7OztOOzs7OzsKKzA2QTg7QVJBQklDIExFVFRFUiBRQUYgV0lUSCBUSFJFRSBET1RTIEFCT1ZFO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNkE5O0FSQUJJQyBMRVRURVIgS0VIRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgT1BFTiBDQUY7Ozs7CiswNkFBO0FSQUJJQyBMRVRURVIgU1dBU0ggS0FGO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFNXQVNIIENBRjs7OzsKKzA2QUI7QVJBQklDIExFVFRFUiBLQUYgV0lUSCBSSU5HO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIENBRiBXSVRIIFJJTkc7Ozs7CiswNkFDO0FSQUJJQyBMRVRURVIgS0FGIFdJVEggRE9UIEFCT1ZFO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIENBRiBXSVRIIERPVCBBQk9WRTs7OzsKKzA2QUQ7QVJBQklDIExFVFRFUiBORztMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBDQUYgV0lUSCBUSFJFRSBET1RTIEFCT1ZFOzs7OworMDZBRTtBUkFCSUMgTEVUVEVSIEtBRiBXSVRIIFRIUkVFIERPVFMgQkVMT1c7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgQ0FGIFdJVEggVEhSRUUgRE9UUyBCRUxPVzs7OzsKKzA2QUY7QVJBQklDIExFVFRFUiBHQUY7TG87MDtSOzs7OztOOzs7OzsKKzA2QjA7QVJBQklDIExFVFRFUiBHQUYgV0lUSCBSSU5HO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNkIxO0FSQUJJQyBMRVRURVIgTkdPRUg7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgR0FGIFdJVEggVFdPIERPVFMgQUJPVkU7Ozs7CiswNkIyO0FSQUJJQyBMRVRURVIgR0FGIFdJVEggVFdPIERPVFMgQkVMT1c7TG87MDtSOzs7OztOOzs7OzsKKzA2QjM7QVJBQklDIExFVFRFUiBHVUVIO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEdBRiBXSVRIIFRXTyBET1RTIFZFUlRJQ0FMIEJFTE9XOzs7OworMDZCNDtBUkFCSUMgTEVUVEVSIEdBRiBXSVRIIFRIUkVFIERPVFMgQUJPVkU7TG87MDtSOzs7OztOOzs7OzsKKzA2QjU7QVJBQklDIExFVFRFUiBMQU0gV0lUSCBTTUFMTCBWO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNkI2O0FSQUJJQyBMRVRURVIgTEFNIFdJVEggRE9UIEFCT1ZFO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNkI3O0FSQUJJQyBMRVRURVIgTEFNIFdJVEggVEhSRUUgRE9UUyBBQk9WRTtMbzswO1I7Ozs7O047Ozs7OworMDZCQTtBUkFCSUMgTEVUVEVSIE5PT04gR0hVTk5BO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIERPVExFU1MgTk9PTjs7OzsKKzA2QkI7QVJBQklDIExFVFRFUiBSTk9PTjtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBET1RMRVNTIE5PT04gV0lUSCBTTUFMTCBUQUg7Ozs7CiswNkJDO0FSQUJJQyBMRVRURVIgTk9PTiBXSVRIIFJJTkc7TG87MDtSOzs7OztOOzs7OzsKKzA2QkQ7QVJBQklDIExFVFRFUiBOT09OIFdJVEggVEhSRUUgRE9UUyBBQk9WRTtMbzswO1I7Ozs7O047Ozs7OworMDZCRTtBUkFCSUMgTEVUVEVSIEhFSCBET0FDSEFTSE1FRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBLTk9UVEVEIEhBOzs7OworMDZDMDtBUkFCSUMgTEVUVEVSIEhFSCBXSVRIIFlFSCBBQk9WRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBIQU1aQUggT04gSEE7Ozs7CiswNkMxO0FSQUJJQyBMRVRURVIgSEVIIEdPQUw7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEEgR09BTDs7OzsKKzA2QzI7QVJBQklDIExFVFRFUiBIRUggR09BTCBXSVRIIEhBTVpBIEFCT1ZFO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBTVpBSCBPTiBIQSBHT0FMOzs7OworMDZDMztBUkFCSUMgTEVUVEVSIFRFSCBNQVJCVVRBIEdPQUw7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIE1BUkJVVEFIIEdPQUw7Ozs7CiswNkM0O0FSQUJJQyBMRVRURVIgV0FXIFdJVEggUklORztMbzswO1I7Ozs7O047Ozs7OworMDZDNTtBUkFCSUMgTEVUVEVSIEtJUkdISVogT0U7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgV0FXIFdJVEggQkFSOzs7OworMDZDNjtBUkFCSUMgTEVUVEVSIE9FO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIFNNQUxMIFY7Ozs7CiswNkM3O0FSQUJJQyBMRVRURVIgVTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBXQVcgV0lUSCBEQU1NQUg7Ozs7CiswNkM4O0FSQUJJQyBMRVRURVIgWVU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgV0FXIFdJVEggQUxFRiBBQk9WRTs7OzsKKzA2Qzk7QVJBQklDIExFVFRFUiBLSVJHSElaIFlVO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIElOVkVSVEVEIFNNQUxMIFY7Ozs7CiswNkNBO0FSQUJJQyBMRVRURVIgV0FXIFdJVEggVFdPIERPVFMgQUJPVkU7TG87MDtSOzs7OztOOzs7OzsKKzA2Q0I7QVJBQklDIExFVFRFUiBWRTtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBXQVcgV0lUSCBUSFJFRSBET1RTIEFCT1ZFOzs7OworMDZDQztBUkFCSUMgTEVUVEVSIEZBUlNJIFlFSDtMbzswO1I7Ozs7O047QVJBQklDIExFVFRFUiBET1RMRVNTIFlBOzs7OworMDZDRDtBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIFRBSUw7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgWUEgV0lUSCBUQUlMOzs7OworMDZDRTtBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIFNNQUxMIFY7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgWUEgV0lUSCBTTUFMTCBWOzs7OworMDZEMDtBUkFCSUMgTEVUVEVSIEU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgWUEgV0lUSCBUV08gRE9UUyBWRVJUSUNBTCBCRUxPVzs7OzsKKzA2RDE7QVJBQklDIExFVFRFUiBZRUggV0lUSCBUSFJFRSBET1RTIEJFTE9XO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFlBIFdJVEggVEhSRUUgRE9UUyBCRUxPVzs7OzsKKzA2RDI7QVJBQklDIExFVFRFUiBZRUggQkFSUkVFO0xvOzA7Ujs7Ozs7TjtBUkFCSUMgTEVUVEVSIFlBIEJBUlJFRTs7OzsKKzA2RDM7QVJBQklDIExFVFRFUiBZRUggQkFSUkVFIFdJVEggSEFNWkEgQUJPVkU7TG87MDtSOzs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIIE9OIFlBIEJBUlJFRTs7OzsKKzA2RDQ7QVJBQklDIEZVTEwgU1RPUDtQbzswO1I7Ozs7O047QVJBQklDIFBFUklPRDs7OzsKKzA2RDU7QVJBQklDIExFVFRFUiBBRTtMbzswO1I7Ozs7O047Ozs7OworMDZENjtBUkFCSUMgU01BTEwgSElHSCBMSUdBVFVSRSBTQUQgV0lUSCBMQU0gV0lUSCBBTEVGIE1BS1NVUkE7TW47MjMwO09OOzs7OztOOzs7OzsKKzA2RDc7QVJBQklDIFNNQUxMIEhJR0ggTElHQVRVUkUgUUFGIFdJVEggTEFNIFdJVEggQUxFRiBNQUtTVVJBO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNkQ4O0FSQUJJQyBTTUFMTCBISUdIIE1FRU0gSU5JVElBTCBGT1JNO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNkQ5O0FSQUJJQyBTTUFMTCBISUdIIExBTSBBTEVGO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNkRBO0FSQUJJQyBTTUFMTCBISUdIIEpFRU07TW47MjMwO09OOzs7OztOOzs7OzsKKzA2REI7QVJBQklDIFNNQUxMIEhJR0ggVEhSRUUgRE9UUztNbjsyMzA7T047Ozs7O047Ozs7OworMDZEQztBUkFCSUMgU01BTEwgSElHSCBTRUVOO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNkREO0FSQUJJQyBFTkQgT0YgQVlBSDtNZTswO09OOzs7OztOOzs7OzsKKzA2REU7QVJBQklDIFNUQVJUIE9GIFJVQiBFTCBISVpCO01lOzA7T047Ozs7O047Ozs7OworMDZERjtBUkFCSUMgU01BTEwgSElHSCBST1VOREVEIFpFUk87TW47MjMwO09OOzs7OztOOzs7OzsKKzA2RTA7QVJBQklDIFNNQUxMIEhJR0ggVVBSSUdIVCBSRUNUQU5HVUxBUiBaRVJPO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNkUxO0FSQUJJQyBTTUFMTCBISUdIIERPVExFU1MgSEVBRCBPRiBLSEFIO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNkUyO0FSQUJJQyBTTUFMTCBISUdIIE1FRU0gSVNPTEFURUQgRk9STTtNbjsyMzA7T047Ozs7O047Ozs7OworMDZFMztBUkFCSUMgU01BTEwgTE9XIFNFRU47TW47MjIwO09OOzs7OztOOzs7OzsKKzA2RTQ7QVJBQklDIFNNQUxMIEhJR0ggTUFEREE7TW47MjMwO09OOzs7OztOOzs7OzsKKzA2RTU7QVJBQklDIFNNQUxMIFdBVztMbTswO1I7Ozs7O047Ozs7OworMDZFNjtBUkFCSUMgU01BTEwgWUVIO0xtOzA7Ujs7Ozs7Tjs7Ozs7CiswNkU3O0FSQUJJQyBTTUFMTCBISUdIIFlFSDtNbjsyMzA7T047Ozs7O047Ozs7OworMDZFODtBUkFCSUMgU01BTEwgSElHSCBOT09OO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CiswNkU5O0FSQUJJQyBQTEFDRSBPRiBTQUpEQUg7U287MDtPTjs7Ozs7Tjs7Ozs7CiswNkVBO0FSQUJJQyBFTVBUWSBDRU5UUkUgTE9XIFNUT1A7TW47MjIwO09OOzs7OztOOzs7OzsKKzA2RUI7QVJBQklDIEVNUFRZIENFTlRSRSBISUdIIFNUT1A7TW47MjMwO09OOzs7OztOOzs7OzsKKzA2RUM7QVJBQklDIFJPVU5ERUQgSElHSCBTVE9QIFdJVEggRklMTEVEIENFTlRSRTtNbjsyMzA7T047Ozs7O047Ozs7OworMDZFRDtBUkFCSUMgU01BTEwgTE9XIE1FRU07TW47MjIwO09OOzs7OztOOzs7OzsKKzA2RjA7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIFpFUk87TmQ7MDtFTjs7MDswOzA7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPOzs7OworMDZGMTtFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgT05FO05kOzA7RU47OzE7MTsxO047RUFTVEVSTiBBUkFCSUMtSU5ESUMgRElHSVQgT05FOzs7OworMDZGMjtFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgVFdPO05kOzA7RU47OzI7MjsyO047RUFTVEVSTiBBUkFCSUMtSU5ESUMgRElHSVQgVFdPOzs7OworMDZGMztFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgVEhSRUU7TmQ7MDtFTjs7MzszOzM7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBUSFJFRTs7OzsKKzA2RjQ7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIEZPVVI7TmQ7MDtFTjs7NDs0OzQ7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBGT1VSOzs7OworMDZGNTtFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgRklWRTtOZDswO0VOOzs1OzU7NTtOO0VBU1RFUk4gQVJBQklDLUlORElDIERJR0lUIEZJVkU7Ozs7CiswNkY2O0VYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBTSVg7TmQ7MDtFTjs7Njs2OzY7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBTSVg7Ozs7CiswNkY3O0VYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBTRVZFTjtOZDswO0VOOzs3Ozc7NztOO0VBU1RFUk4gQVJBQklDLUlORElDIERJR0lUIFNFVkVOOzs7OworMDZGODtFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgRUlHSFQ7TmQ7MDtFTjs7ODs4Ozg7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBFSUdIVDs7OzsKKzA2Rjk7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIE5JTkU7TmQ7MDtFTjs7OTs5Ozk7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBOSU5FOzs7OworMDkwMTtERVZBTkFHQVJJIFNJR04gQ0FORFJBQklORFU7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswOTAyO0RFVkFOQUdBUkkgU0lHTiBBTlVTVkFSQTtNbjswO09OOzs7OztOOzs7OzsKKzA5MDM7REVWQU5BR0FSSSBTSUdOIFZJU0FSR0E7TWM7MDtMOzs7OztOOzs7OzsKKzA5MDU7REVWQU5BR0FSSSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMDkwNjtERVZBTkFHQVJJIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMDkwNztERVZBTkFHQVJJIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTA4O0RFVkFOQUdBUkkgTEVUVEVSIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTA5O0RFVkFOQUdBUkkgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzA5MEE7REVWQU5BR0FSSSBMRVRURVIgVVU7TG87MDtMOzs7OztOOzs7OzsKKzA5MEI7REVWQU5BR0FSSSBMRVRURVIgVk9DQUxJQyBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTBDO0RFVkFOQUdBUkkgTEVUVEVSIFZPQ0FMSUMgTDtMbzswO0w7Ozs7O047Ozs7OworMDkwRDtERVZBTkFHQVJJIExFVFRFUiBDQU5EUkEgRTtMbzswO0w7Ozs7O047Ozs7OworMDkwRTtERVZBTkFHQVJJIExFVFRFUiBTSE9SVCBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTBGO0RFVkFOQUdBUkkgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzA5MTA7REVWQU5BR0FSSSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzA5MTE7REVWQU5BR0FSSSBMRVRURVIgQ0FORFJBIE87TG87MDtMOzs7OztOOzs7OzsKKzA5MTI7REVWQU5BR0FSSSBMRVRURVIgU0hPUlQgTztMbzswO0w7Ozs7O047Ozs7OworMDkxMztERVZBTkFHQVJJIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTE0O0RFVkFOQUdBUkkgTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTE1O0RFVkFOQUdBUkkgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTE2O0RFVkFOQUdBUkkgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMDkxNztERVZBTkFHQVJJIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMDkxODtERVZBTkFHQVJJIExFVFRFUiBHSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MTk7REVWQU5BR0FSSSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTFBO0RFVkFOQUdBUkkgTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTFCO0RFVkFOQUdBUkkgTEVUVEVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMDkxQztERVZBTkFHQVJJIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMDkxRDtERVZBTkFHQVJJIExFVFRFUiBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MUU7REVWQU5BR0FSSSBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTFGO0RFVkFOQUdBUkkgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMDkyMDtERVZBTkFHQVJJIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTIxO0RFVkFOQUdBUkkgTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMDkyMjtERVZBTkFHQVJJIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTIzO0RFVkFOQUdBUkkgTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMDkyNDtERVZBTkFHQVJJIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMDkyNTtERVZBTkFHQVJJIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MjY7REVWQU5BR0FSSSBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzA5Mjc7REVWQU5BR0FSSSBMRVRURVIgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTI4O0RFVkFOQUdBUkkgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTI5O0RFVkFOQUdBUkkgTEVUVEVSIE5OTkE7TG87MDtMOzA5MjggMDkzQzs7OztOOzs7OzsKKzA5MkE7REVWQU5BR0FSSSBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MkI7REVWQU5BR0FSSSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTJDO0RFVkFOQUdBUkkgTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTJEO0RFVkFOQUdBUkkgTEVUVEVSIEJIQTtMbzswO0w7Ozs7O047Ozs7OworMDkyRTtERVZBTkFHQVJJIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMDkyRjtERVZBTkFHQVJJIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMDkzMDtERVZBTkFHQVJJIExFVFRFUiBSQTtMbzswO0w7Ozs7O047Ozs7OworMDkzMTtERVZBTkFHQVJJIExFVFRFUiBSUkE7TG87MDtMOzA5MzAgMDkzQzs7OztOOzs7OzsKKzA5MzI7REVWQU5BR0FSSSBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MzM7REVWQU5BR0FSSSBMRVRURVIgTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTM0O0RFVkFOQUdBUkkgTEVUVEVSIExMTEE7TG87MDtMOzA5MzMgMDkzQzs7OztOOzs7OzsKKzA5MzU7REVWQU5BR0FSSSBMRVRURVIgVkE7TG87MDtMOzs7OztOOzs7OzsKKzA5MzY7REVWQU5BR0FSSSBMRVRURVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTM3O0RFVkFOQUdBUkkgTEVUVEVSIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMDkzODtERVZBTkFHQVJJIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMDkzOTtERVZBTkFHQVJJIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMDkzQztERVZBTkFHQVJJIFNJR04gTlVLVEE7TW47NztPTjs7Ozs7Tjs7Ozs7CiswOTNEO0RFVkFOQUdBUkkgU0lHTiBBVkFHUkFIQTtMbzswO0w7Ozs7O047Ozs7OworMDkzRTtERVZBTkFHQVJJIFZPV0VMIFNJR04gQUE7TWM7MDtMOzs7OztOOzs7OzsKKzA5M0Y7REVWQU5BR0FSSSBWT1dFTCBTSUdOIEk7TWM7MDtMOzs7OztOOzs7OzsKKzA5NDA7REVWQU5BR0FSSSBWT1dFTCBTSUdOIElJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOTQxO0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBVO01uOzA7T047Ozs7O047Ozs7OworMDk0MjtERVZBTkFHQVJJIFZPV0VMIFNJR04gVVU7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswOTQzO0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBWT0NBTElDIFI7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswOTQ0O0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBWT0NBTElDIFJSO01uOzA7T047Ozs7O047Ozs7OworMDk0NTtERVZBTkFHQVJJIFZPV0VMIFNJR04gQ0FORFJBIEU7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswOTQ2O0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBTSE9SVCBFO01uOzA7T047Ozs7O047Ozs7OworMDk0NztERVZBTkFHQVJJIFZPV0VMIFNJR04gRTtNbjswO09OOzs7OztOOzs7OzsKKzA5NDg7REVWQU5BR0FSSSBWT1dFTCBTSUdOIEFJO01uOzA7T047Ozs7O047Ozs7OworMDk0OTtERVZBTkFHQVJJIFZPV0VMIFNJR04gQ0FORFJBIE87TWM7MDtMOzs7OztOOzs7OzsKKzA5NEE7REVWQU5BR0FSSSBWT1dFTCBTSUdOIFNIT1JUIE87TWM7MDtMOzs7OztOOzs7OzsKKzA5NEI7REVWQU5BR0FSSSBWT1dFTCBTSUdOIE87TWM7MDtMOzs7OztOOzs7OzsKKzA5NEM7REVWQU5BR0FSSSBWT1dFTCBTSUdOIEFVO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOTREO0RFVkFOQUdBUkkgU0lHTiBWSVJBTUE7TW47OTtPTjs7Ozs7Tjs7Ozs7CiswOTUwO0RFVkFOQUdBUkkgT007TG87MDtMOzs7OztOOzs7OzsKKzA5NTE7REVWQU5BR0FSSSBTVFJFU1MgU0lHTiBVREFUVEE7TW47MjMwO09OOzs7OztOOzs7OzsKKzA5NTI7REVWQU5BR0FSSSBTVFJFU1MgU0lHTiBBTlVEQVRUQTtNbjsyMjA7T047Ozs7O047Ozs7OworMDk1MztERVZBTkFHQVJJIEdSQVZFIEFDQ0VOVDtNbjsyMzA7T047Ozs7O047Ozs7OworMDk1NDtERVZBTkFHQVJJIEFDVVRFIEFDQ0VOVDtNbjsyMzA7T047Ozs7O047Ozs7OworMDk1ODtERVZBTkFHQVJJIExFVFRFUiBRQTtMbzswO0w7MDkxNSAwOTNDOzs7O047Ozs7OworMDk1OTtERVZBTkFHQVJJIExFVFRFUiBLSEhBO0xvOzA7TDswOTE2IDA5M0M7Ozs7Tjs7Ozs7CiswOTVBO0RFVkFOQUdBUkkgTEVUVEVSIEdISEE7TG87MDtMOzA5MTcgMDkzQzs7OztOOzs7OzsKKzA5NUI7REVWQU5BR0FSSSBMRVRURVIgWkE7TG87MDtMOzA5MUMgMDkzQzs7OztOOzs7OzsKKzA5NUM7REVWQU5BR0FSSSBMRVRURVIgRERESEE7TG87MDtMOzA5MjEgMDkzQzs7OztOOzs7OzsKKzA5NUQ7REVWQU5BR0FSSSBMRVRURVIgUkhBO0xvOzA7TDswOTIyIDA5M0M7Ozs7Tjs7Ozs7CiswOTVFO0RFVkFOQUdBUkkgTEVUVEVSIEZBO0xvOzA7TDswOTJCIDA5M0M7Ozs7Tjs7Ozs7CiswOTVGO0RFVkFOQUdBUkkgTEVUVEVSIFlZQTtMbzswO0w7MDkyRiAwOTNDOzs7O047Ozs7OworMDk2MDtERVZBTkFHQVJJIExFVFRFUiBWT0NBTElDIFJSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTYxO0RFVkFOQUdBUkkgTEVUVEVSIFZPQ0FMSUMgTEw7TG87MDtMOzs7OztOOzs7OzsKKzA5NjI7REVWQU5BR0FSSSBWT1dFTCBTSUdOIFZPQ0FMSUMgTDtNbjswO09OOzs7OztOOzs7OzsKKzA5NjM7REVWQU5BR0FSSSBWT1dFTCBTSUdOIFZPQ0FMSUMgTEw7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswOTY0O0RFVkFOQUdBUkkgREFOREE7UG87MDtMOzs7OztOOzs7OzsKKzA5NjU7REVWQU5BR0FSSSBET1VCTEUgREFOREE7UG87MDtMOzs7OztOOzs7OzsKKzA5NjY7REVWQU5BR0FSSSBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswOTY3O0RFVkFOQUdBUkkgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswOTY4O0RFVkFOQUdBUkkgRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswOTY5O0RFVkFOQUdBUkkgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzA5NkE7REVWQU5BR0FSSSBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswOTZCO0RFVkFOQUdBUkkgRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMDk2QztERVZBTkFHQVJJIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMDk2RDtERVZBTkFHQVJJIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswOTZFO0RFVkFOQUdBUkkgRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzA5NkY7REVWQU5BR0FSSSBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswOTcwO0RFVkFOQUdBUkkgQUJCUkVWSUFUSU9OIFNJR047UG87MDtMOzs7OztOOzs7OzsKKzA5ODE7QkVOR0FMSSBTSUdOIENBTkRSQUJJTkRVO01uOzA7T047Ozs7O047Ozs7OworMDk4MjtCRU5HQUxJIFNJR04gQU5VU1ZBUkE7TWM7MDtMOzs7OztOOzs7OzsKKzA5ODM7QkVOR0FMSSBTSUdOIFZJU0FSR0E7TWM7MDtMOzs7OztOOzs7OzsKKzA5ODU7QkVOR0FMSSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMDk4NjtCRU5HQUxJIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMDk4NztCRU5HQUxJIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTg4O0JFTkdBTEkgTEVUVEVSIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTg5O0JFTkdBTEkgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzA5OEE7QkVOR0FMSSBMRVRURVIgVVU7TG87MDtMOzs7OztOOzs7OzsKKzA5OEI7QkVOR0FMSSBMRVRURVIgVk9DQUxJQyBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOThDO0JFTkdBTEkgTEVUVEVSIFZPQ0FMSUMgTDtMbzswO0w7Ozs7O047Ozs7OworMDk4RjtCRU5HQUxJIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTkwO0JFTkdBTEkgTEVUVEVSIEFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTkzO0JFTkdBTEkgTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzA5OTQ7QkVOR0FMSSBMRVRURVIgQVU7TG87MDtMOzs7OztOOzs7OzsKKzA5OTU7QkVOR0FMSSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzA5OTY7QkVOR0FMSSBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTk3O0JFTkdBTEkgTEVUVEVSIEdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTk4O0JFTkdBTEkgTEVUVEVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMDk5OTtCRU5HQUxJIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzA5OUE7QkVOR0FMSSBMRVRURVIgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzA5OUI7QkVOR0FMSSBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTlDO0JFTkdBTEkgTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTlEO0JFTkdBTEkgTEVUVEVSIEpIQTtMbzswO0w7Ozs7O047Ozs7OworMDk5RTtCRU5HQUxJIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzA5OUY7QkVOR0FMSSBMRVRURVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUEwO0JFTkdBTEkgTEVUVEVSIFRUSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QTE7QkVOR0FMSSBMRVRURVIgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUEyO0JFTkdBTEkgTEVUVEVSIERESEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QTM7QkVOR0FMSSBMRVRURVIgTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUE0O0JFTkdBTEkgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUE1O0JFTkdBTEkgTEVUVEVSIFRIQTtMbzswO0w7Ozs7O047Ozs7OworMDlBNjtCRU5HQUxJIExFVFRFUiBEQTtMbzswO0w7Ozs7O047Ozs7OworMDlBNztCRU5HQUxJIExFVFRFUiBESEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QTg7QkVOR0FMSSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzA5QUE7QkVOR0FMSSBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QUI7QkVOR0FMSSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUFDO0JFTkdBTEkgTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUFEO0JFTkdBTEkgTEVUVEVSIEJIQTtMbzswO0w7Ozs7O047Ozs7OworMDlBRTtCRU5HQUxJIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMDlBRjtCRU5HQUxJIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMDlCMDtCRU5HQUxJIExFVFRFUiBSQTtMbzswO0w7MDlBQyAwOUJDOzs7O047Ozs7OworMDlCMjtCRU5HQUxJIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMDlCNjtCRU5HQUxJIExFVFRFUiBTSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5Qjc7QkVOR0FMSSBMRVRURVIgU1NBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUI4O0JFTkdBTEkgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUI5O0JFTkdBTEkgTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUJDO0JFTkdBTEkgU0lHTiBOVUtUQTtNbjs3O09OOzs7OztOOzs7OzsKKzA5QkU7QkVOR0FMSSBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOUJGO0JFTkdBTEkgVk9XRUwgU0lHTiBJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOUMwO0JFTkdBTEkgVk9XRUwgU0lHTiBJSTtNYzswO0w7Ozs7O047Ozs7OworMDlDMTtCRU5HQUxJIFZPV0VMIFNJR04gVTtNbjswO09OOzs7OztOOzs7OzsKKzA5QzI7QkVOR0FMSSBWT1dFTCBTSUdOIFVVO01uOzA7T047Ozs7O047Ozs7OworMDlDMztCRU5HQUxJIFZPV0VMIFNJR04gVk9DQUxJQyBSO01uOzA7T047Ozs7O047Ozs7OworMDlDNDtCRU5HQUxJIFZPV0VMIFNJR04gVk9DQUxJQyBSUjtNbjswO09OOzs7OztOOzs7OzsKKzA5Qzc7QkVOR0FMSSBWT1dFTCBTSUdOIEU7TWM7MDtMOzs7OztOOzs7OzsKKzA5Qzg7QkVOR0FMSSBWT1dFTCBTSUdOIEFJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOUNCO0JFTkdBTEkgVk9XRUwgU0lHTiBPO01jOzA7TDswOUM3IDA5QkU7Ozs7Tjs7Ozs7CiswOUNDO0JFTkdBTEkgVk9XRUwgU0lHTiBBVTtNYzswO0w7MDlDNyAwOUQ3Ozs7O047Ozs7OworMDlDRDtCRU5HQUxJIFNJR04gVklSQU1BO01uOzk7T047Ozs7O047Ozs7OworMDlENztCRU5HQUxJIEFVIExFTkdUSCBNQVJLO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOURDO0JFTkdBTEkgTEVUVEVSIFJSQTtMbzswO0w7MDlBMSAwOUJDOzs7O047Ozs7OworMDlERDtCRU5HQUxJIExFVFRFUiBSSEE7TG87MDtMOzA5QTIgMDlCQzs7OztOOzs7OzsKKzA5REY7QkVOR0FMSSBMRVRURVIgWVlBO0xvOzA7TDswOUFGIDA5QkM7Ozs7Tjs7Ozs7CiswOUUwO0JFTkdBTEkgTEVUVEVSIFZPQ0FMSUMgUlI7TG87MDtMOzs7OztOOzs7OzsKKzA5RTE7QkVOR0FMSSBMRVRURVIgVk9DQUxJQyBMTDtMbzswO0w7Ozs7O047Ozs7OworMDlFMjtCRU5HQUxJIFZPV0VMIFNJR04gVk9DQUxJQyBMO01uOzA7T047Ozs7O047Ozs7OworMDlFMztCRU5HQUxJIFZPV0VMIFNJR04gVk9DQUxJQyBMTDtNbjswO09OOzs7OztOOzs7OzsKKzA5RTY7QkVOR0FMSSBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswOUU3O0JFTkdBTEkgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswOUU4O0JFTkdBTEkgRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswOUU5O0JFTkdBTEkgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzA5RUE7QkVOR0FMSSBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswOUVCO0JFTkdBTEkgRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMDlFQztCRU5HQUxJIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMDlFRDtCRU5HQUxJIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswOUVFO0JFTkdBTEkgRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzA5RUY7QkVOR0FMSSBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswOUYwO0JFTkdBTEkgTEVUVEVSIFJBIFdJVEggTUlERExFIERJQUdPTkFMO0xvOzA7TDs7Ozs7Tjs7QXNzYW1lc2U7OzsKKzA5RjE7QkVOR0FMSSBMRVRURVIgUkEgV0lUSCBMT1dFUiBESUFHT05BTDtMbzswO0w7Ozs7O047QkVOR0FMSSBMRVRURVIgVkEgV0lUSCBMT1dFUiBESUFHT05BTDtBc3NhbWVzZTs7OworMDlGMjtCRU5HQUxJIFJVUEVFIE1BUks7U2M7MDtFVDs7Ozs7Tjs7Ozs7CiswOUYzO0JFTkdBTEkgUlVQRUUgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzA5RjQ7QkVOR0FMSSBDVVJSRU5DWSBOVU1FUkFUT1IgT05FO05vOzA7TDs7OzsxO047Ozs7OworMDlGNTtCRU5HQUxJIENVUlJFTkNZIE5VTUVSQVRPUiBUV087Tm87MDtMOzs7OzI7Tjs7Ozs7CiswOUY2O0JFTkdBTEkgQ1VSUkVOQ1kgTlVNRVJBVE9SIFRIUkVFO05vOzA7TDs7OzszO047Ozs7OworMDlGNztCRU5HQUxJIENVUlJFTkNZIE5VTUVSQVRPUiBGT1VSO05vOzA7TDs7Ozs0O047Ozs7OworMDlGODtCRU5HQUxJIENVUlJFTkNZIE5VTUVSQVRPUiBPTkUgTEVTUyBUSEFOIFRIRSBERU5PTUlOQVRPUjtObzswO0w7Ozs7LTE7Tjs7Ozs7CiswOUY5O0JFTkdBTEkgQ1VSUkVOQ1kgREVOT01JTkFUT1IgU0lYVEVFTjtObzswO0w7Ozs7MTY7Tjs7Ozs7CiswOUZBO0JFTkdBTEkgSVNTSEFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CiswQTAyO0dVUk1VS0hJIFNJR04gQklOREk7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswQTA1O0dVUk1VS0hJIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTA2O0dVUk1VS0hJIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEEwNztHVVJNVUtISSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEEwODtHVVJNVUtISSBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzBBMDk7R1VSTVVLSEkgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzBBMEE7R1VSTVVLSEkgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTBGO0dVUk1VS0hJIExFVFRFUiBFRTtMbzswO0w7Ozs7O047Ozs7OworMEExMDtHVVJNVUtISSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzBBMTM7R1VSTVVLSEkgTEVUVEVSIE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTE0O0dVUk1VS0hJIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMEExNTtHVVJNVUtISSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzBBMTY7R1VSTVVLSEkgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMEExNztHVVJNVUtISSBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBBMTg7R1VSTVVLSEkgTEVUVEVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMEExOTtHVVJNVUtISSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTFBO0dVUk1VS0hJIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEExQjtHVVJNVUtISSBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTFDO0dVUk1VS0hJIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMEExRDtHVVJNVUtISSBMRVRURVIgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTFFO0dVUk1VS0hJIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzBBMUY7R1VSTVVLSEkgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMEEyMDtHVVJNVUtISSBMRVRURVIgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEEyMTtHVVJNVUtISSBMRVRURVIgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTIyO0dVUk1VS0hJIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTIzO0dVUk1VS0hJIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBBMjQ7R1VSTVVLSEkgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTI1O0dVUk1VS0hJIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMjY7R1VSTVVLSEkgTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTI3O0dVUk1VS0hJIExFVFRFUiBESEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMjg7R1VSTVVLSEkgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTJBO0dVUk1VS0hJIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMEEyQjtHVVJNVUtISSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTJDO0dVUk1VS0hJIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMEEyRDtHVVJNVUtISSBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTJFO0dVUk1VS0hJIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMEEyRjtHVVJNVUtISSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBBMzA7R1VSTVVLSEkgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTMyO0dVUk1VS0hJIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMEEzMztHVVJNVUtISSBMRVRURVIgTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTM1O0dVUk1VS0hJIExFVFRFUiBWQTtMbzswO0w7Ozs7O047Ozs7OworMEEzNjtHVVJNVUtISSBMRVRURVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTM4O0dVUk1VS0hJIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMEEzOTtHVVJNVUtISSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBM0M7R1VSTVVLSEkgU0lHTiBOVUtUQTtNbjs3O09OOzs7OztOOzs7OzsKKzBBM0U7R1VSTVVLSEkgVk9XRUwgU0lHTiBBQTtNYzswO0w7Ozs7O047Ozs7OworMEEzRjtHVVJNVUtISSBWT1dFTCBTSUdOIEk7TWM7MDtMOzs7OztOOzs7OzsKKzBBNDA7R1VSTVVLSEkgVk9XRUwgU0lHTiBJSTtNYzswO0w7Ozs7O047Ozs7OworMEE0MTtHVVJNVUtISSBWT1dFTCBTSUdOIFU7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswQTQyO0dVUk1VS0hJIFZPV0VMIFNJR04gVVU7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswQTQ3O0dVUk1VS0hJIFZPV0VMIFNJR04gRUU7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswQTQ4O0dVUk1VS0hJIFZPV0VMIFNJR04gQUk7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswQTRCO0dVUk1VS0hJIFZPV0VMIFNJR04gT087TW47MDtPTjs7Ozs7Tjs7Ozs7CiswQTRDO0dVUk1VS0hJIFZPV0VMIFNJR04gQVU7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswQTREO0dVUk1VS0hJIFNJR04gVklSQU1BO01uOzk7T047Ozs7O047Ozs7OworMEE1OTtHVVJNVUtISSBMRVRURVIgS0hIQTtMbzswO0w7MEExNiAwQTNDOzs7O047Ozs7OworMEE1QTtHVVJNVUtISSBMRVRURVIgR0hIQTtMbzswO0w7MEExNyAwQTNDOzs7O047Ozs7OworMEE1QjtHVVJNVUtISSBMRVRURVIgWkE7TG87MDtMOzBBMUMgMEEzQzs7OztOOzs7OzsKKzBBNUM7R1VSTVVLSEkgTEVUVEVSIFJSQTtMbzswO0w7MEEyMSAwQTNDOzs7O047Ozs7OworMEE1RTtHVVJNVUtISSBMRVRURVIgRkE7TG87MDtMOzBBMkIgMEEzQzs7OztOOzs7OzsKKzBBNjY7R1VSTVVLSEkgRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMEE2NztHVVJNVUtISSBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzBBNjg7R1VSTVVLSEkgRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswQTY5O0dVUk1VS0hJIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswQTZBO0dVUk1VS0hJIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzBBNkI7R1VSTVVLSEkgRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMEE2QztHVVJNVUtISSBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzBBNkQ7R1VSTVVLSEkgRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzBBNkU7R1VSTVVLSEkgRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzBBNkY7R1VSTVVLSEkgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMEE3MDtHVVJNVUtISSBUSVBQSTtNbjswO09OOzs7OztOOzs7OzsKKzBBNzE7R1VSTVVLSEkgQUREQUs7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswQTcyO0dVUk1VS0hJIElSSTtMbzswO0w7Ozs7O047Ozs7OworMEE3MztHVVJNVUtISSBVUkE7TG87MDtMOzs7OztOOzs7OzsKKzBBNzQ7R1VSTVVLSEkgRUsgT05LQVI7TG87MDtMOzs7OztOOzs7OzsKKzBBODE7R1VKQVJBVEkgU0lHTiBDQU5EUkFCSU5EVTtNbjswO09OOzs7OztOOzs7OzsKKzBBODI7R1VKQVJBVEkgU0lHTiBBTlVTVkFSQTtNbjswO09OOzs7OztOOzs7OzsKKzBBODM7R1VKQVJBVEkgU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQTg1O0dVSkFSQVRJIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTg2O0dVSkFSQVRJIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEE4NztHVUpBUkFUSSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEE4ODtHVUpBUkFUSSBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzBBODk7R1VKQVJBVEkgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzBBOEE7R1VKQVJBVEkgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQThCO0dVSkFSQVRJIExFVFRFUiBWT0NBTElDIFI7TG87MDtMOzs7OztOOzs7OzsKKzBBOEQ7R1VKQVJBVEkgVk9XRUwgQ0FORFJBIEU7TG87MDtMOzs7OztOOzs7OzsKKzBBOEY7R1VKQVJBVEkgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzBBOTA7R1VKQVJBVEkgTEVUVEVSIEFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTkxO0dVSkFSQVRJIFZPV0VMIENBTkRSQSBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTkzO0dVSkFSQVRJIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTk0O0dVSkFSQVRJIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMEE5NTtHVUpBUkFUSSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzBBOTY7R1VKQVJBVEkgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMEE5NztHVUpBUkFUSSBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBBOTg7R1VKQVJBVEkgTEVUVEVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMEE5OTtHVUpBUkFUSSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTlBO0dVSkFSQVRJIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEE5QjtHVUpBUkFUSSBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTlDO0dVSkFSQVRJIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMEE5RDtHVUpBUkFUSSBMRVRURVIgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTlFO0dVSkFSQVRJIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzBBOUY7R1VKQVJBVEkgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMEFBMDtHVUpBUkFUSSBMRVRURVIgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEFBMTtHVUpBUkFUSSBMRVRURVIgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUEyO0dVSkFSQVRJIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUEzO0dVSkFSQVRJIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBBQTQ7R1VKQVJBVEkgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUE1O0dVSkFSQVRJIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBQTY7R1VKQVJBVEkgTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUE3O0dVSkFSQVRJIExFVFRFUiBESEE7TG87MDtMOzs7OztOOzs7OzsKKzBBQTg7R1VKQVJBVEkgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUFBO0dVSkFSQVRJIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMEFBQjtHVUpBUkFUSSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUFDO0dVSkFSQVRJIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMEFBRDtHVUpBUkFUSSBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUFFO0dVSkFSQVRJIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMEFBRjtHVUpBUkFUSSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBBQjA7R1VKQVJBVEkgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUIyO0dVSkFSQVRJIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMEFCMztHVUpBUkFUSSBMRVRURVIgTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUI1O0dVSkFSQVRJIExFVFRFUiBWQTtMbzswO0w7Ozs7O047Ozs7OworMEFCNjtHVUpBUkFUSSBMRVRURVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUI3O0dVSkFSQVRJIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzBBQjg7R1VKQVJBVEkgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUI5O0dVSkFSQVRJIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMEFCQztHVUpBUkFUSSBTSUdOIE5VS1RBO01uOzc7T047Ozs7O047Ozs7OworMEFCRDtHVUpBUkFUSSBTSUdOIEFWQUdSQUhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUJFO0dVSkFSQVRJIFZPV0VMIFNJR04gQUE7TWM7MDtMOzs7OztOOzs7OzsKKzBBQkY7R1VKQVJBVEkgVk9XRUwgU0lHTiBJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQUMwO0dVSkFSQVRJIFZPV0VMIFNJR04gSUk7TWM7MDtMOzs7OztOOzs7OzsKKzBBQzE7R1VKQVJBVEkgVk9XRUwgU0lHTiBVO01uOzA7T047Ozs7O047Ozs7OworMEFDMjtHVUpBUkFUSSBWT1dFTCBTSUdOIFVVO01uOzA7T047Ozs7O047Ozs7OworMEFDMztHVUpBUkFUSSBWT1dFTCBTSUdOIFZPQ0FMSUMgUjtNbjswO09OOzs7OztOOzs7OzsKKzBBQzQ7R1VKQVJBVEkgVk9XRUwgU0lHTiBWT0NBTElDIFJSO01uOzA7T047Ozs7O047Ozs7OworMEFDNTtHVUpBUkFUSSBWT1dFTCBTSUdOIENBTkRSQSBFO01uOzA7T047Ozs7O047Ozs7OworMEFDNztHVUpBUkFUSSBWT1dFTCBTSUdOIEU7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswQUM4O0dVSkFSQVRJIFZPV0VMIFNJR04gQUk7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswQUM5O0dVSkFSQVRJIFZPV0VMIFNJR04gQ0FORFJBIE87TWM7MDtMOzs7OztOOzs7OzsKKzBBQ0I7R1VKQVJBVEkgVk9XRUwgU0lHTiBPO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQUNDO0dVSkFSQVRJIFZPV0VMIFNJR04gQVU7TWM7MDtMOzs7OztOOzs7OzsKKzBBQ0Q7R1VKQVJBVEkgU0lHTiBWSVJBTUE7TW47OTtPTjs7Ozs7Tjs7Ozs7CiswQUQwO0dVSkFSQVRJIE9NO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUUwO0dVSkFSQVRJIExFVFRFUiBWT0NBTElDIFJSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUU2O0dVSkFSQVRJIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBBRTc7R1VKQVJBVEkgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswQUU4O0dVSkFSQVRJIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMEFFOTtHVUpBUkFUSSBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEFFQTtHVUpBUkFUSSBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswQUVCO0dVSkFSQVRJIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBBRUM7R1VKQVJBVEkgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswQUVEO0dVSkFSQVRJIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswQUVFO0dVSkFSQVRJIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswQUVGO0dVSkFSQVRJIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBCMDE7T1JJWUEgU0lHTiBDQU5EUkFCSU5EVTtNbjswO09OOzs7OztOOzs7OzsKKzBCMDI7T1JJWUEgU0lHTiBBTlVTVkFSQTtNYzswO0w7Ozs7O047Ozs7OworMEIwMztPUklZQSBTSUdOIFZJU0FSR0E7TWM7MDtMOzs7OztOOzs7OzsKKzBCMDU7T1JJWUEgTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMDY7T1JJWUEgTEVUVEVSIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjA3O09SSVlBIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjA4O09SSVlBIExFVFRFUiBJSTtMbzswO0w7Ozs7O047Ozs7OworMEIwOTtPUklZQSBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMEIwQTtPUklZQSBMRVRURVIgVVU7TG87MDtMOzs7OztOOzs7OzsKKzBCMEI7T1JJWUEgTEVUVEVSIFZPQ0FMSUMgUjtMbzswO0w7Ozs7O047Ozs7OworMEIwQztPUklZQSBMRVRURVIgVk9DQUxJQyBMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjBGO09SSVlBIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjEwO09SSVlBIExFVFRFUiBBSTtMbzswO0w7Ozs7O047Ozs7OworMEIxMztPUklZQSBMRVRURVIgTztMbzswO0w7Ozs7O047Ozs7OworMEIxNDtPUklZQSBMRVRURVIgQVU7TG87MDtMOzs7OztOOzs7OzsKKzBCMTU7T1JJWUEgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjE2O09SSVlBIExFVFRFUiBLSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMTc7T1JJWUEgTEVUVEVSIEdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjE4O09SSVlBIExFVFRFUiBHSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMTk7T1JJWUEgTEVUVEVSIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMEIxQTtPUklZQSBMRVRURVIgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzBCMUI7T1JJWUEgTEVUVEVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMEIxQztPUklZQSBMRVRURVIgSkE7TG87MDtMOzs7OztOOzs7OzsKKzBCMUQ7T1JJWUEgTEVUVEVSIEpIQTtMbzswO0w7Ozs7O047Ozs7OworMEIxRTtPUklZQSBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjFGO09SSVlBIExFVFRFUiBUVEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMjA7T1JJWUEgTEVUVEVSIFRUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMjE7T1JJWUEgTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMEIyMjtPUklZQSBMRVRURVIgRERIQTtMbzswO0w7Ozs7O047Ozs7OworMEIyMztPUklZQSBMRVRURVIgTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjI0O09SSVlBIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMEIyNTtPUklZQSBMRVRURVIgVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjI2O09SSVlBIExFVFRFUiBEQTtMbzswO0w7Ozs7O047Ozs7OworMEIyNztPUklZQSBMRVRURVIgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjI4O09SSVlBIExFVFRFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMEIyQTtPUklZQSBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMkI7T1JJWUEgTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMEIyQztPUklZQSBMRVRURVIgQkE7TG87MDtMOzs7OztOOzs7OzsKKzBCMkQ7T1JJWUEgTEVUVEVSIEJIQTtMbzswO0w7Ozs7O047Ozs7OworMEIyRTtPUklZQSBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzBCMkY7T1JJWUEgTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjMwO09SSVlBIExFVFRFUiBSQTtMbzswO0w7Ozs7O047Ozs7OworMEIzMjtPUklZQSBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMzM7T1JJWUEgTEVUVEVSIExMQTtMbzswO0w7Ozs7O047Ozs7OworMEIzNjtPUklZQSBMRVRURVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjM3O09SSVlBIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzBCMzg7T1JJWUEgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjM5O09SSVlBIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMEIzQztPUklZQSBTSUdOIE5VS1RBO01uOzc7T047Ozs7O047Ozs7OworMEIzRDtPUklZQSBTSUdOIEFWQUdSQUhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjNFO09SSVlBIFZPV0VMIFNJR04gQUE7TWM7MDtMOzs7OztOOzs7OzsKKzBCM0Y7T1JJWUEgVk9XRUwgU0lHTiBJO01uOzA7T047Ozs7O047Ozs7OworMEI0MDtPUklZQSBWT1dFTCBTSUdOIElJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQjQxO09SSVlBIFZPV0VMIFNJR04gVTtNbjswO09OOzs7OztOOzs7OzsKKzBCNDI7T1JJWUEgVk9XRUwgU0lHTiBVVTtNbjswO09OOzs7OztOOzs7OzsKKzBCNDM7T1JJWUEgVk9XRUwgU0lHTiBWT0NBTElDIFI7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswQjQ3O09SSVlBIFZPV0VMIFNJR04gRTtNYzswO0w7Ozs7O047Ozs7OworMEI0ODtPUklZQSBWT1dFTCBTSUdOIEFJO01jOzA7TDswQjQ3IDBCNTY7Ozs7Tjs7Ozs7CiswQjRCO09SSVlBIFZPV0VMIFNJR04gTztNYzswO0w7MEI0NyAwQjNFOzs7O047Ozs7OworMEI0QztPUklZQSBWT1dFTCBTSUdOIEFVO01jOzA7TDswQjQ3IDBCNTc7Ozs7Tjs7Ozs7CiswQjREO09SSVlBIFNJR04gVklSQU1BO01uOzk7T047Ozs7O047Ozs7OworMEI1NjtPUklZQSBBSSBMRU5HVEggTUFSSztNbjswO09OOzs7OztOOzs7OzsKKzBCNTc7T1JJWUEgQVUgTEVOR1RIIE1BUks7TWM7MDtMOzs7OztOOzs7OzsKKzBCNUM7T1JJWUEgTEVUVEVSIFJSQTtMbzswO0w7MEIyMSAwQjNDOzs7O047Ozs7OworMEI1RDtPUklZQSBMRVRURVIgUkhBO0xvOzA7TDswQjIyIDBCM0M7Ozs7Tjs7Ozs7CiswQjVGO09SSVlBIExFVFRFUiBZWUE7TG87MDtMOzBCMkYgMEIzQzs7OztOOzs7OzsKKzBCNjA7T1JJWUEgTEVUVEVSIFZPQ0FMSUMgUlI7TG87MDtMOzs7OztOOzs7OzsKKzBCNjE7T1JJWUEgTEVUVEVSIFZPQ0FMSUMgTEw7TG87MDtMOzs7OztOOzs7OzsKKzBCNjY7T1JJWUEgRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMEI2NztPUklZQSBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzBCNjg7T1JJWUEgRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswQjY5O09SSVlBIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswQjZBO09SSVlBIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzBCNkI7T1JJWUEgRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMEI2QztPUklZQSBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzBCNkQ7T1JJWUEgRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzBCNkU7T1JJWUEgRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzBCNkY7T1JJWUEgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMEI3MDtPUklZQSBJU1NIQVI7U287MDtMOzs7OztOOzs7OzsKKzBCODI7VEFNSUwgU0lHTiBBTlVTVkFSQTtNbjswO09OOzs7OztOOzs7OzsKKzBCODM7VEFNSUwgU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQjg1O1RBTUlMIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjg2O1RBTUlMIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEI4NztUQU1JTCBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEI4ODtUQU1JTCBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzBCODk7VEFNSUwgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzBCOEE7VEFNSUwgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjhFO1RBTUlMIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjhGO1RBTUlMIExFVFRFUiBFRTtMbzswO0w7Ozs7O047Ozs7OworMEI5MDtUQU1JTCBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzBCOTI7VEFNSUwgTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzBCOTM7VEFNSUwgTEVUVEVSIE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjk0O1RBTUlMIExFVFRFUiBBVTtMbzswO0w7MEI5MiAwQkQ3Ozs7O047Ozs7OworMEI5NTtUQU1JTCBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzBCOTk7VEFNSUwgTEVUVEVSIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMEI5QTtUQU1JTCBMRVRURVIgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzBCOUM7VEFNSUwgTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjlFO1RBTUlMIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzBCOUY7VEFNSUwgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMEJBMztUQU1JTCBMRVRURVIgTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkE0O1RBTUlMIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMEJBODtUQU1JTCBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzBCQTk7VEFNSUwgTEVUVEVSIE5OTkE7TG87MDtMOzs7OztOOzs7OzsKKzBCQUE7VEFNSUwgTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkFFO1RBTUlMIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMEJBRjtUQU1JTCBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjA7VEFNSUwgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkIxO1RBTUlMIExFVFRFUiBSUkE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjI7VEFNSUwgTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkIzO1RBTUlMIExFVFRFUiBMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjQ7VEFNSUwgTEVUVEVSIExMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjU7VEFNSUwgTEVUVEVSIFZBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkI3O1RBTUlMIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzBCQjg7VEFNSUwgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkI5O1RBTUlMIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMEJCRTtUQU1JTCBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQkJGO1RBTUlMIFZPV0VMIFNJR04gSTtNYzswO0w7Ozs7O047Ozs7OworMEJDMDtUQU1JTCBWT1dFTCBTSUdOIElJO01uOzA7T047Ozs7O047Ozs7OworMEJDMTtUQU1JTCBWT1dFTCBTSUdOIFU7TWM7MDtMOzs7OztOOzs7OzsKKzBCQzI7VEFNSUwgVk9XRUwgU0lHTiBVVTtNYzswO0w7Ozs7O047Ozs7OworMEJDNjtUQU1JTCBWT1dFTCBTSUdOIEU7TWM7MDtMOzs7OztOOzs7OzsKKzBCQzc7VEFNSUwgVk9XRUwgU0lHTiBFRTtNYzswO0w7Ozs7O047Ozs7OworMEJDODtUQU1JTCBWT1dFTCBTSUdOIEFJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQkNBO1RBTUlMIFZPV0VMIFNJR04gTztNYzswO0w7MEJDNiAwQkJFOzs7O047Ozs7OworMEJDQjtUQU1JTCBWT1dFTCBTSUdOIE9PO01jOzA7TDswQkM3IDBCQkU7Ozs7Tjs7Ozs7CiswQkNDO1RBTUlMIFZPV0VMIFNJR04gQVU7TWM7MDtMOzBCQzYgMEJENzs7OztOOzs7OzsKKzBCQ0Q7VEFNSUwgU0lHTiBWSVJBTUE7TW47OTtPTjs7Ozs7Tjs7Ozs7CiswQkQ3O1RBTUlMIEFVIExFTkdUSCBNQVJLO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQkU3O1RBTUlMIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEJFODtUQU1JTCBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzBCRTk7VEFNSUwgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzBCRUE7VEFNSUwgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEJFQjtUQU1JTCBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswQkVDO1RBTUlMIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMEJFRDtUQU1JTCBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEJFRTtUQU1JTCBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMEJFRjtUQU1JTCBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswQkYwO1RBTUlMIE5VTUJFUiBURU47Tm87MDtMOzs7OzEwO047Ozs7OworMEJGMTtUQU1JTCBOVU1CRVIgT05FIEhVTkRSRUQ7Tm87MDtMOzs7OzEwMDtOOzs7OzsKKzBCRjI7VEFNSUwgTlVNQkVSIE9ORSBUSE9VU0FORDtObzswO0w7Ozs7MTAwMDtOOzs7OzsKKzBDMDE7VEVMVUdVIFNJR04gQ0FORFJBQklORFU7TWM7MDtMOzs7OztOOzs7OzsKKzBDMDI7VEVMVUdVIFNJR04gQU5VU1ZBUkE7TWM7MDtMOzs7OztOOzs7OzsKKzBDMDM7VEVMVUdVIFNJR04gVklTQVJHQTtNYzswO0w7Ozs7O047Ozs7OworMEMwNTtURUxVR1UgTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMDY7VEVMVUdVIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEMwNztURUxVR1UgTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzBDMDg7VEVMVUdVIExFVFRFUiBJSTtMbzswO0w7Ozs7O047Ozs7OworMEMwOTtURUxVR1UgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzBDMEE7VEVMVUdVIExFVFRFUiBVVTtMbzswO0w7Ozs7O047Ozs7OworMEMwQjtURUxVR1UgTEVUVEVSIFZPQ0FMSUMgUjtMbzswO0w7Ozs7O047Ozs7OworMEMwQztURUxVR1UgTEVUVEVSIFZPQ0FMSUMgTDtMbzswO0w7Ozs7O047Ozs7OworMEMwRTtURUxVR1UgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzBDMEY7VEVMVUdVIExFVFRFUiBFRTtMbzswO0w7Ozs7O047Ozs7OworMEMxMDtURUxVR1UgTEVUVEVSIEFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzEyO1RFTFVHVSBMRVRURVIgTztMbzswO0w7Ozs7O047Ozs7OworMEMxMztURUxVR1UgTEVUVEVSIE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzE0O1RFTFVHVSBMRVRURVIgQVU7TG87MDtMOzs7OztOOzs7OzsKKzBDMTU7VEVMVUdVIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMEMxNjtURUxVR1UgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMEMxNztURUxVR1UgTEVUVEVSIEdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzE4O1RFTFVHVSBMRVRURVIgR0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzE5O1RFTFVHVSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzFBO1RFTFVHVSBMRVRURVIgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzBDMUI7VEVMVUdVIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMUM7VEVMVUdVIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMEMxRDtURUxVR1UgTEVUVEVSIEpIQTtMbzswO0w7Ozs7O047Ozs7OworMEMxRTtURUxVR1UgTEVUVEVSIE5ZQTtMbzswO0w7Ozs7O047Ozs7OworMEMxRjtURUxVR1UgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMEMyMDtURUxVR1UgTEVUVEVSIFRUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMjE7VEVMVUdVIExFVFRFUiBEREE7TG87MDtMOzs7OztOOzs7OzsKKzBDMjI7VEVMVUdVIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzIzO1RFTFVHVSBMRVRURVIgTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzI0O1RFTFVHVSBMRVRURVIgVEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMjU7VEVMVUdVIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMjY7VEVMVUdVIExFVFRFUiBEQTtMbzswO0w7Ozs7O047Ozs7OworMEMyNztURUxVR1UgTEVUVEVSIERIQTtMbzswO0w7Ozs7O047Ozs7OworMEMyODtURUxVR1UgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzJBO1RFTFVHVSBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMkI7VEVMVUdVIExFVFRFUiBQSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMkM7VEVMVUdVIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMEMyRDtURUxVR1UgTEVUVEVSIEJIQTtMbzswO0w7Ozs7O047Ozs7OworMEMyRTtURUxVR1UgTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzJGO1RFTFVHVSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBDMzA7VEVMVUdVIExFVFRFUiBSQTtMbzswO0w7Ozs7O047Ozs7OworMEMzMTtURUxVR1UgTEVUVEVSIFJSQTtMbzswO0w7Ozs7O047Ozs7OworMEMzMjtURUxVR1UgTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzMzO1RFTFVHVSBMRVRURVIgTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzM1O1RFTFVHVSBMRVRURVIgVkE7TG87MDtMOzs7OztOOzs7OzsKKzBDMzY7VEVMVUdVIExFVFRFUiBTSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMzc7VEVMVUdVIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzBDMzg7VEVMVUdVIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMEMzOTtURUxVR1UgTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzNFO1RFTFVHVSBWT1dFTCBTSUdOIEFBO01uOzA7T047Ozs7O047Ozs7OworMEMzRjtURUxVR1UgVk9XRUwgU0lHTiBJO01uOzA7T047Ozs7O047Ozs7OworMEM0MDtURUxVR1UgVk9XRUwgU0lHTiBJSTtNbjswO09OOzs7OztOOzs7OzsKKzBDNDE7VEVMVUdVIFZPV0VMIFNJR04gVTtNYzswO0w7Ozs7O047Ozs7OworMEM0MjtURUxVR1UgVk9XRUwgU0lHTiBVVTtNYzswO0w7Ozs7O047Ozs7OworMEM0MztURUxVR1UgVk9XRUwgU0lHTiBWT0NBTElDIFI7TWM7MDtMOzs7OztOOzs7OzsKKzBDNDQ7VEVMVUdVIFZPV0VMIFNJR04gVk9DQUxJQyBSUjtNYzswO0w7Ozs7O047Ozs7OworMEM0NjtURUxVR1UgVk9XRUwgU0lHTiBFO01uOzg0O09OOzs7OztOOzs7OzsKKzBDNDc7VEVMVUdVIFZPV0VMIFNJR04gRUU7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswQzQ4O1RFTFVHVSBWT1dFTCBTSUdOIEFJO01uOzA7T047MEM0NiAwQzU2Ozs7O047Ozs7OworMEM0QTtURUxVR1UgVk9XRUwgU0lHTiBPO01uOzA7T047Ozs7O047Ozs7OworMEM0QjtURUxVR1UgVk9XRUwgU0lHTiBPTztNbjswO09OOzs7OztOOzs7OzsKKzBDNEM7VEVMVUdVIFZPV0VMIFNJR04gQVU7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswQzREO1RFTFVHVSBTSUdOIFZJUkFNQTtNbjs5O09OOzs7OztOOzs7OzsKKzBDNTU7VEVMVUdVIExFTkdUSCBNQVJLO01uOzg0O09OOzs7OztOOzs7OzsKKzBDNTY7VEVMVUdVIEFJIExFTkdUSCBNQVJLO01uOzkxO09OOzs7OztOOzs7OzsKKzBDNjA7VEVMVUdVIExFVFRFUiBWT0NBTElDIFJSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzYxO1RFTFVHVSBMRVRURVIgVk9DQUxJQyBMTDtMbzswO0w7Ozs7O047Ozs7OworMEM2NjtURUxVR1UgRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMEM2NztURUxVR1UgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswQzY4O1RFTFVHVSBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzBDNjk7VEVMVUdVIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswQzZBO1RFTFVHVSBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswQzZCO1RFTFVHVSBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswQzZDO1RFTFVHVSBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzBDNkQ7VEVMVUdVIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswQzZFO1RFTFVHVSBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMEM2RjtURUxVR1UgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMEM4MjtLQU5OQURBIFNJR04gQU5VU1ZBUkE7TWM7MDtMOzs7OztOOzs7OzsKKzBDODM7S0FOTkFEQSBTSUdOIFZJU0FSR0E7TWM7MDtMOzs7OztOOzs7OzsKKzBDODU7S0FOTkFEQSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMEM4NjtLQU5OQURBIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEM4NztLQU5OQURBIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzg4O0tBTk5BREEgTEVUVEVSIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzg5O0tBTk5BREEgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzBDOEE7S0FOTkFEQSBMRVRURVIgVVU7TG87MDtMOzs7OztOOzs7OzsKKzBDOEI7S0FOTkFEQSBMRVRURVIgVk9DQUxJQyBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzhDO0tBTk5BREEgTEVUVEVSIFZPQ0FMSUMgTDtMbzswO0w7Ozs7O047Ozs7OworMEM4RTtLQU5OQURBIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzhGO0tBTk5BREEgTEVUVEVSIEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzkwO0tBTk5BREEgTEVUVEVSIEFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzkyO0tBTk5BREEgTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzBDOTM7S0FOTkFEQSBMRVRURVIgT087TG87MDtMOzs7OztOOzs7OzsKKzBDOTQ7S0FOTkFEQSBMRVRURVIgQVU7TG87MDtMOzs7OztOOzs7OzsKKzBDOTU7S0FOTkFEQSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzBDOTY7S0FOTkFEQSBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzk3O0tBTk5BREEgTEVUVEVSIEdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzk4O0tBTk5BREEgTEVUVEVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMEM5OTtLQU5OQURBIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzBDOUE7S0FOTkFEQSBMRVRURVIgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzBDOUI7S0FOTkFEQSBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzlDO0tBTk5BREEgTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzlEO0tBTk5BREEgTEVUVEVSIEpIQTtMbzswO0w7Ozs7O047Ozs7OworMEM5RTtLQU5OQURBIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzBDOUY7S0FOTkFEQSBMRVRURVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0EwO0tBTk5BREEgTEVUVEVSIFRUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQTE7S0FOTkFEQSBMRVRURVIgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0EyO0tBTk5BREEgTEVUVEVSIERESEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQTM7S0FOTkFEQSBMRVRURVIgTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0E0O0tBTk5BREEgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0E1O0tBTk5BREEgTEVUVEVSIFRIQTtMbzswO0w7Ozs7O047Ozs7OworMENBNjtLQU5OQURBIExFVFRFUiBEQTtMbzswO0w7Ozs7O047Ozs7OworMENBNztLQU5OQURBIExFVFRFUiBESEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQTg7S0FOTkFEQSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzBDQUE7S0FOTkFEQSBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQUI7S0FOTkFEQSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0FDO0tBTk5BREEgTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0FEO0tBTk5BREEgTEVUVEVSIEJIQTtMbzswO0w7Ozs7O047Ozs7OworMENBRTtLQU5OQURBIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMENBRjtLQU5OQURBIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMENCMDtLQU5OQURBIExFVFRFUiBSQTtMbzswO0w7Ozs7O047Ozs7OworMENCMTtLQU5OQURBIExFVFRFUiBSUkE7TG87MDtMOzs7OztOOzs7OzsKKzBDQjI7S0FOTkFEQSBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQjM7S0FOTkFEQSBMRVRURVIgTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0I1O0tBTk5BREEgTEVUVEVSIFZBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0I2O0tBTk5BREEgTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMENCNztLQU5OQURBIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzBDQjg7S0FOTkFEQSBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzBDQjk7S0FOTkFEQSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQkU7S0FOTkFEQSBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQ0JGO0tBTk5BREEgVk9XRUwgU0lHTiBJO01uOzA7T047Ozs7O047Ozs7OworMENDMDtLQU5OQURBIFZPV0VMIFNJR04gSUk7TWM7MDtMOzBDQkYgMENENTs7OztOOzs7OzsKKzBDQzE7S0FOTkFEQSBWT1dFTCBTSUdOIFU7TWM7MDtMOzs7OztOOzs7OzsKKzBDQzI7S0FOTkFEQSBWT1dFTCBTSUdOIFVVO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQ0MzO0tBTk5BREEgVk9XRUwgU0lHTiBWT0NBTElDIFI7TWM7MDtMOzs7OztOOzs7OzsKKzBDQzQ7S0FOTkFEQSBWT1dFTCBTSUdOIFZPQ0FMSUMgUlI7TWM7MDtMOzs7OztOOzs7OzsKKzBDQzY7S0FOTkFEQSBWT1dFTCBTSUdOIEU7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswQ0M3O0tBTk5BREEgVk9XRUwgU0lHTiBFRTtNYzswO0w7MENDNiAwQ0Q1Ozs7O047Ozs7OworMENDODtLQU5OQURBIFZPV0VMIFNJR04gQUk7TWM7MDtMOzBDQzYgMENENjs7OztOOzs7OzsKKzBDQ0E7S0FOTkFEQSBWT1dFTCBTSUdOIE87TWM7MDtMOzBDQzYgMENDMjs7OztOOzs7OzsKKzBDQ0I7S0FOTkFEQSBWT1dFTCBTSUdOIE9PO01jOzA7TDswQ0NBIDBDRDU7Ozs7Tjs7Ozs7CiswQ0NDO0tBTk5BREEgVk9XRUwgU0lHTiBBVTtNbjswO09OOzs7OztOOzs7OzsKKzBDQ0Q7S0FOTkFEQSBTSUdOIFZJUkFNQTtNbjs5O09OOzs7OztOOzs7OzsKKzBDRDU7S0FOTkFEQSBMRU5HVEggTUFSSztNYzswO0w7Ozs7O047Ozs7OworMENENjtLQU5OQURBIEFJIExFTkdUSCBNQVJLO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQ0RFO0tBTk5BREEgTEVUVEVSIEZBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0UwO0tBTk5BREEgTEVUVEVSIFZPQ0FMSUMgUlI7TG87MDtMOzs7OztOOzs7OzsKKzBDRTE7S0FOTkFEQSBMRVRURVIgVk9DQUxJQyBMTDtMbzswO0w7Ozs7O047Ozs7OworMENFNjtLQU5OQURBIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBDRTc7S0FOTkFEQSBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzBDRTg7S0FOTkFEQSBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzBDRTk7S0FOTkFEQSBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMENFQTtLQU5OQURBIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzBDRUI7S0FOTkFEQSBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswQ0VDO0tBTk5BREEgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswQ0VEO0tBTk5BREEgRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzBDRUU7S0FOTkFEQSBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMENFRjtLQU5OQURBIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBEMDI7TUFMQVlBTEFNIFNJR04gQU5VU1ZBUkE7TWM7MDtMOzs7OztOOzs7OzsKKzBEMDM7TUFMQVlBTEFNIFNJR04gVklTQVJHQTtNYzswO0w7Ozs7O047Ozs7OworMEQwNTtNQUxBWUFMQU0gTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMDY7TUFMQVlBTEFNIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEQwNztNQUxBWUFMQU0gTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzBEMDg7TUFMQVlBTEFNIExFVFRFUiBJSTtMbzswO0w7Ozs7O047Ozs7OworMEQwOTtNQUxBWUFMQU0gTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzBEMEE7TUFMQVlBTEFNIExFVFRFUiBVVTtMbzswO0w7Ozs7O047Ozs7OworMEQwQjtNQUxBWUFMQU0gTEVUVEVSIFZPQ0FMSUMgUjtMbzswO0w7Ozs7O047Ozs7OworMEQwQztNQUxBWUFMQU0gTEVUVEVSIFZPQ0FMSUMgTDtMbzswO0w7Ozs7O047Ozs7OworMEQwRTtNQUxBWUFMQU0gTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzBEMEY7TUFMQVlBTEFNIExFVFRFUiBFRTtMbzswO0w7Ozs7O047Ozs7OworMEQxMDtNQUxBWUFMQU0gTEVUVEVSIEFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDEyO01BTEFZQUxBTSBMRVRURVIgTztMbzswO0w7Ozs7O047Ozs7OworMEQxMztNQUxBWUFMQU0gTEVUVEVSIE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDE0O01BTEFZQUxBTSBMRVRURVIgQVU7TG87MDtMOzs7OztOOzs7OzsKKzBEMTU7TUFMQVlBTEFNIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMEQxNjtNQUxBWUFMQU0gTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMEQxNztNQUxBWUFMQU0gTEVUVEVSIEdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDE4O01BTEFZQUxBTSBMRVRURVIgR0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDE5O01BTEFZQUxBTSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDFBO01BTEFZQUxBTSBMRVRURVIgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzBEMUI7TUFMQVlBTEFNIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMUM7TUFMQVlBTEFNIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMEQxRDtNQUxBWUFMQU0gTEVUVEVSIEpIQTtMbzswO0w7Ozs7O047Ozs7OworMEQxRTtNQUxBWUFMQU0gTEVUVEVSIE5ZQTtMbzswO0w7Ozs7O047Ozs7OworMEQxRjtNQUxBWUFMQU0gTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMEQyMDtNQUxBWUFMQU0gTEVUVEVSIFRUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMjE7TUFMQVlBTEFNIExFVFRFUiBEREE7TG87MDtMOzs7OztOOzs7OzsKKzBEMjI7TUFMQVlBTEFNIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDIzO01BTEFZQUxBTSBMRVRURVIgTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDI0O01BTEFZQUxBTSBMRVRURVIgVEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMjU7TUFMQVlBTEFNIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMjY7TUFMQVlBTEFNIExFVFRFUiBEQTtMbzswO0w7Ozs7O047Ozs7OworMEQyNztNQUxBWUFMQU0gTEVUVEVSIERIQTtMbzswO0w7Ozs7O047Ozs7OworMEQyODtNQUxBWUFMQU0gTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDJBO01BTEFZQUxBTSBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMkI7TUFMQVlBTEFNIExFVFRFUiBQSEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMkM7TUFMQVlBTEFNIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMEQyRDtNQUxBWUFMQU0gTEVUVEVSIEJIQTtMbzswO0w7Ozs7O047Ozs7OworMEQyRTtNQUxBWUFMQU0gTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDJGO01BTEFZQUxBTSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBEMzA7TUFMQVlBTEFNIExFVFRFUiBSQTtMbzswO0w7Ozs7O047Ozs7OworMEQzMTtNQUxBWUFMQU0gTEVUVEVSIFJSQTtMbzswO0w7Ozs7O047Ozs7OworMEQzMjtNQUxBWUFMQU0gTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDMzO01BTEFZQUxBTSBMRVRURVIgTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDM0O01BTEFZQUxBTSBMRVRURVIgTExMQTtMbzswO0w7Ozs7O047Ozs7OworMEQzNTtNQUxBWUFMQU0gTEVUVEVSIFZBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDM2O01BTEFZQUxBTSBMRVRURVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDM3O01BTEFZQUxBTSBMRVRURVIgU1NBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDM4O01BTEFZQUxBTSBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzBEMzk7TUFMQVlBTEFNIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMEQzRTtNQUxBWUFMQU0gVk9XRUwgU0lHTiBBQTtNYzswO0w7Ozs7O047Ozs7OworMEQzRjtNQUxBWUFMQU0gVk9XRUwgU0lHTiBJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRDQwO01BTEFZQUxBTSBWT1dFTCBTSUdOIElJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRDQxO01BTEFZQUxBTSBWT1dFTCBTSUdOIFU7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswRDQyO01BTEFZQUxBTSBWT1dFTCBTSUdOIFVVO01uOzA7T047Ozs7O047Ozs7OworMEQ0MztNQUxBWUFMQU0gVk9XRUwgU0lHTiBWT0NBTElDIFI7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswRDQ2O01BTEFZQUxBTSBWT1dFTCBTSUdOIEU7TWM7MDtMOzs7OztOOzs7OzsKKzBENDc7TUFMQVlBTEFNIFZPV0VMIFNJR04gRUU7TWM7MDtMOzs7OztOOzs7OzsKKzBENDg7TUFMQVlBTEFNIFZPV0VMIFNJR04gQUk7TWM7MDtMOzs7OztOOzs7OzsKKzBENEE7TUFMQVlBTEFNIFZPV0VMIFNJR04gTztNYzswO0w7MEQ0NiAwRDNFOzs7O047Ozs7OworMEQ0QjtNQUxBWUFMQU0gVk9XRUwgU0lHTiBPTztNYzswO0w7MEQ0NyAwRDNFOzs7O047Ozs7OworMEQ0QztNQUxBWUFMQU0gVk9XRUwgU0lHTiBBVTtNYzswO0w7MEQ0NiAwRDU3Ozs7O047Ozs7OworMEQ0RDtNQUxBWUFMQU0gU0lHTiBWSVJBTUE7TW47OTtPTjs7Ozs7Tjs7Ozs7CiswRDU3O01BTEFZQUxBTSBBVSBMRU5HVEggTUFSSztNYzswO0w7Ozs7O047Ozs7OworMEQ2MDtNQUxBWUFMQU0gTEVUVEVSIFZPQ0FMSUMgUlI7TG87MDtMOzs7OztOOzs7OzsKKzBENjE7TUFMQVlBTEFNIExFVFRFUiBWT0NBTElDIExMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDY2O01BTEFZQUxBTSBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswRDY3O01BTEFZQUxBTSBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzBENjg7TUFMQVlBTEFNIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMEQ2OTtNQUxBWUFMQU0gRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzBENkE7TUFMQVlBTEFNIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzBENkI7TUFMQVlBTEFNIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBENkM7TUFMQVlBTEFNIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMEQ2RDtNQUxBWUFMQU0gRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzBENkU7TUFMQVlBTEFNIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswRDZGO01BTEFZQUxBTSBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswRTAxO1RIQUkgQ0hBUkFDVEVSIEtPIEtBSTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgS08gS0FJOzs7OworMEUwMjtUSEFJIENIQVJBQ1RFUiBLSE8gS0hBSTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgS0hPIEtIQUk7Ozs7CiswRTAzO1RIQUkgQ0hBUkFDVEVSIEtITyBLSFVBVDtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgS0hPIEtIVUFUOzs7OworMEUwNDtUSEFJIENIQVJBQ1RFUiBLSE8gS0hXQUk7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEtITyBLSFdBSTs7OzsKKzBFMDU7VEhBSSBDSEFSQUNURVIgS0hPIEtIT047TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEtITyBLSE9OOzs7OworMEUwNjtUSEFJIENIQVJBQ1RFUiBLSE8gUkFLSEFORztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgS0hPIFJBS0hBTkc7Ozs7CiswRTA3O1RIQUkgQ0hBUkFDVEVSIE5HTyBOR1U7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIE5HTyBOR1U7Ozs7CiswRTA4O1RIQUkgQ0hBUkFDVEVSIENITyBDSEFOO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBDSE8gQ0hBTjs7OzsKKzBFMDk7VEhBSSBDSEFSQUNURVIgQ0hPIENISU5HO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBDSE8gQ0hJTkc7Ozs7CiswRTBBO1RIQUkgQ0hBUkFDVEVSIENITyBDSEFORztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgQ0hPIENIQU5HOzs7OworMEUwQjtUSEFJIENIQVJBQ1RFUiBTTyBTTztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgU08gU087Ozs7CiswRTBDO1RIQUkgQ0hBUkFDVEVSIENITyBDSE9FO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBDSE8gQ0hPRTs7OzsKKzBFMEQ7VEhBSSBDSEFSQUNURVIgWU8gWUlORztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgWU8gWUlORzs7OzsKKzBFMEU7VEhBSSBDSEFSQUNURVIgRE8gQ0hBREE7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIERPIENIQURBOzs7OworMEUwRjtUSEFJIENIQVJBQ1RFUiBUTyBQQVRBSztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgVE8gUEFUQUs7Ozs7CiswRTEwO1RIQUkgQ0hBUkFDVEVSIFRITyBUSEFOO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBUSE8gVEhBTjs7OzsKKzBFMTE7VEhBSSBDSEFSQUNURVIgVEhPIE5BTkdNT05USE87TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFRITyBOQU5HTU9OVEhPOzs7OworMEUxMjtUSEFJIENIQVJBQ1RFUiBUSE8gUEhVVEhBTztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgVEhPIFBIVVRIQU87Ozs7CiswRTEzO1RIQUkgQ0hBUkFDVEVSIE5PIE5FTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgTk8gTkVOOzs7OworMEUxNDtUSEFJIENIQVJBQ1RFUiBETyBERUs7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIERPIERFSzs7OzsKKzBFMTU7VEhBSSBDSEFSQUNURVIgVE8gVEFPO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBUTyBUQU87Ozs7CiswRTE2O1RIQUkgQ0hBUkFDVEVSIFRITyBUSFVORztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgVEhPIFRIVU5HOzs7OworMEUxNztUSEFJIENIQVJBQ1RFUiBUSE8gVEhBSEFOO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBUSE8gVEhBSEFOOzs7OworMEUxODtUSEFJIENIQVJBQ1RFUiBUSE8gVEhPTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFRITyBUSE9ORzs7OzsKKzBFMTk7VEhBSSBDSEFSQUNURVIgTk8gTlU7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIE5PIE5VOzs7OworMEUxQTtUSEFJIENIQVJBQ1RFUiBCTyBCQUlNQUk7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEJPIEJBSU1BSTs7OzsKKzBFMUI7VEhBSSBDSEFSQUNURVIgUE8gUExBO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBQTyBQTEE7Ozs7CiswRTFDO1RIQUkgQ0hBUkFDVEVSIFBITyBQSFVORztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgUEhPIFBIVU5HOzs7OworMEUxRDtUSEFJIENIQVJBQ1RFUiBGTyBGQTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgRk8gRkE7Ozs7CiswRTFFO1RIQUkgQ0hBUkFDVEVSIFBITyBQSEFOO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBQSE8gUEhBTjs7OzsKKzBFMUY7VEhBSSBDSEFSQUNURVIgRk8gRkFOO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBGTyBGQU47Ozs7CiswRTIwO1RIQUkgQ0hBUkFDVEVSIFBITyBTQU1QSEFPO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBQSE8gU0FNUEhBTzs7OzsKKzBFMjE7VEhBSSBDSEFSQUNURVIgTU8gTUE7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIE1PIE1BOzs7OworMEUyMjtUSEFJIENIQVJBQ1RFUiBZTyBZQUs7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFlPIFlBSzs7OzsKKzBFMjM7VEhBSSBDSEFSQUNURVIgUk8gUlVBO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBSTyBSVUE7Ozs7CiswRTI0O1RIQUkgQ0hBUkFDVEVSIFJVO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBSVTs7OzsKKzBFMjU7VEhBSSBDSEFSQUNURVIgTE8gTElORztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgTE8gTElORzs7OzsKKzBFMjY7VEhBSSBDSEFSQUNURVIgTFU7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIExVOzs7OworMEUyNztUSEFJIENIQVJBQ1RFUiBXTyBXQUVOO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBXTyBXQUVOOzs7OworMEUyODtUSEFJIENIQVJBQ1RFUiBTTyBTQUxBO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBTTyBTQUxBOzs7OworMEUyOTtUSEFJIENIQVJBQ1RFUiBTTyBSVVNJO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBTTyBSVVNJOzs7OworMEUyQTtUSEFJIENIQVJBQ1RFUiBTTyBTVUE7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFNPIFNVQTs7OzsKKzBFMkI7VEhBSSBDSEFSQUNURVIgSE8gSElQO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBITyBISVA7Ozs7CiswRTJDO1RIQUkgQ0hBUkFDVEVSIExPIENIVUxBO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBMTyBDSFVMQTs7OzsKKzBFMkQ7VEhBSSBDSEFSQUNURVIgTyBBTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIE8gQU5HOzs7OworMEUyRTtUSEFJIENIQVJBQ1RFUiBITyBOT0tIVUs7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEhPIE5PSyBIVUs7Ozs7CiswRTJGO1RIQUkgQ0hBUkFDVEVSIFBBSVlBTk5PSTtMbzswO0w7Ozs7O047VEhBSSBQQUkgWUFOIE5PSTs7OzsKKzBFMzA7VEhBSSBDSEFSQUNURVIgU0FSQSBBO0xvOzA7TDs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBBOzs7OworMEUzMTtUSEFJIENIQVJBQ1RFUiBNQUkgSEFOLUFLQVQ7TW47MDtPTjs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gTUFJIEhBTi1BS0FUOzs7OworMEUzMjtUSEFJIENIQVJBQ1RFUiBTQVJBIEFBO0xvOzA7TDs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBBQTs7OzsKKzBFMzM7VEhBSSBDSEFSQUNURVIgU0FSQSBBTTtMbzswO0w7MEU0RCAwRTMyOzs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgQU07Ozs7CiswRTM0O1RIQUkgQ0hBUkFDVEVSIFNBUkEgSTtNbjswO09OOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIEk7Ozs7CiswRTM1O1RIQUkgQ0hBUkFDVEVSIFNBUkEgSUk7TW47MDtPTjs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBJSTs7OzsKKzBFMzY7VEhBSSBDSEFSQUNURVIgU0FSQSBVRTtNbjswO09OOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIFVFOzs7OworMEUzNztUSEFJIENIQVJBQ1RFUiBTQVJBIFVFRTtNbjswO09OOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIFVFRTs7OzsKKzBFMzg7VEhBSSBDSEFSQUNURVIgU0FSQSBVO01uOzEwMztPTjs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBVOzs7OworMEUzOTtUSEFJIENIQVJBQ1RFUiBTQVJBIFVVO01uOzEwMztPTjs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBVVTs7OzsKKzBFM0E7VEhBSSBDSEFSQUNURVIgUEhJTlRIVTtNbjs5O09OOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBQSElOVEhVOzs7OworMEUzRjtUSEFJIENVUlJFTkNZIFNZTUJPTCBCQUhUO1NjOzA7RVQ7Ozs7O047VEhBSSBCQUhUIFNJR047Ozs7CiswRTQwO1RIQUkgQ0hBUkFDVEVSIFNBUkEgRTtMbzswO0w7Ozs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgRTs7OzsKKzBFNDE7VEhBSSBDSEFSQUNURVIgU0FSQSBBRTtMbzswO0w7Ozs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgQUU7Ozs7CiswRTQyO1RIQUkgQ0hBUkFDVEVSIFNBUkEgTztMbzswO0w7Ozs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgTzs7OzsKKzBFNDM7VEhBSSBDSEFSQUNURVIgU0FSQSBBSSBNQUlNVUFOO0xvOzA7TDs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBNQUkgTVVBTjs7OzsKKzBFNDQ7VEhBSSBDSEFSQUNURVIgU0FSQSBBSSBNQUlNQUxBSTtMbzswO0w7Ozs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgTUFJIE1BTEFJOzs7OworMEU0NTtUSEFJIENIQVJBQ1RFUiBMQUtLSEFOR1lBTztMbzswO0w7Ozs7O047VEhBSSBMQUsgS0hBTkcgWUFPOzs7OworMEU0NjtUSEFJIENIQVJBQ1RFUiBNQUlZQU1PSztMbTswO0w7Ozs7O047VEhBSSBNQUkgWUFNT0s7Ozs7CiswRTQ3O1RIQUkgQ0hBUkFDVEVSIE1BSVRBSUtIVTtNbjswO09OOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBNQUkgVEFJIEtIVTs7OzsKKzBFNDg7VEhBSSBDSEFSQUNURVIgTUFJIEVLO01uOzEwNztPTjs7Ozs7TjtUSEFJIFRPTkUgTUFJIEVLOzs7OworMEU0OTtUSEFJIENIQVJBQ1RFUiBNQUkgVEhPO01uOzEwNztPTjs7Ozs7TjtUSEFJIFRPTkUgTUFJIFRITzs7OzsKKzBFNEE7VEhBSSBDSEFSQUNURVIgTUFJIFRSSTtNbjsxMDc7T047Ozs7O047VEhBSSBUT05FIE1BSSBUUkk7Ozs7CiswRTRCO1RIQUkgQ0hBUkFDVEVSIE1BSSBDSEFUVEFXQTtNbjsxMDc7T047Ozs7O047VEhBSSBUT05FIE1BSSBDSEFUVEFXQTs7OzsKKzBFNEM7VEhBSSBDSEFSQUNURVIgVEhBTlRIQUtIQVQ7TW47MDtPTjs7Ozs7TjtUSEFJIFRIQU5USEFLSEFUOzs7OworMEU0RDtUSEFJIENIQVJBQ1RFUiBOSUtIQUhJVDtNbjsxMDc7T047Ozs7O047VEhBSSBOSUtLSEFISVQ7Ozs7CiswRTRFO1RIQUkgQ0hBUkFDVEVSIFlBTUFLS0FOO01uOzA7T047Ozs7O047VEhBSSBZQU1BS0tBTjs7OzsKKzBFNEY7VEhBSSBDSEFSQUNURVIgRk9OR01BTjtTbzswO0w7Ozs7O047VEhBSSBGT05HTUFOOzs7OworMEU1MDtUSEFJIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBFNTE7VEhBSSBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzBFNTI7VEhBSSBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzBFNTM7VEhBSSBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEU1NDtUSEFJIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzBFNTU7VEhBSSBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswRTU2O1RIQUkgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswRTU3O1RIQUkgRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzBFNTg7VEhBSSBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMEU1OTtUSEFJIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBFNUE7VEhBSSBDSEFSQUNURVIgQU5HS0hBTktIVTtQbzswO0w7Ozs7O047VEhBSSBBTkdLSEFOS0hVOzs7OworMEU1QjtUSEFJIENIQVJBQ1RFUiBLSE9NVVQ7UG87MDtMOzs7OztOO1RIQUkgS0hPTVVUOzs7OworMEU4MTtMQU8gTEVUVEVSIEtPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTgyO0xBTyBMRVRURVIgS0hPIFNVTkc7TG87MDtMOzs7OztOOzs7OzsKKzBFODQ7TEFPIExFVFRFUiBLSE8gVEFNO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTg3O0xBTyBMRVRURVIgTkdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTg4O0xBTyBMRVRURVIgQ087TG87MDtMOzs7OztOOzs7OzsKKzBFOEE7TEFPIExFVFRFUiBTTyBUQU07TG87MDtMOzs7OztOOzs7OzsKKzBFOEQ7TEFPIExFVFRFUiBOWU87TG87MDtMOzs7OztOOzs7OzsKKzBFOTQ7TEFPIExFVFRFUiBETztMbzswO0w7Ozs7O047Ozs7OworMEU5NTtMQU8gTEVUVEVSIFRPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTk2O0xBTyBMRVRURVIgVEhPIFNVTkc7TG87MDtMOzs7OztOOzs7OzsKKzBFOTc7TEFPIExFVFRFUiBUSE8gVEFNO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTk5O0xBTyBMRVRURVIgTk87TG87MDtMOzs7OztOOzs7OzsKKzBFOUE7TEFPIExFVFRFUiBCTztMbzswO0w7Ozs7O047Ozs7OworMEU5QjtMQU8gTEVUVEVSIFBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTlDO0xBTyBMRVRURVIgUEhPIFNVTkc7TG87MDtMOzs7OztOOzs7OzsKKzBFOUQ7TEFPIExFVFRFUiBGTyBUQU07TG87MDtMOzs7OztOOzs7OzsKKzBFOUU7TEFPIExFVFRFUiBQSE8gVEFNO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTlGO0xBTyBMRVRURVIgRk8gU1VORztMbzswO0w7Ozs7O047Ozs7OworMEVBMTtMQU8gTEVUVEVSIE1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUEyO0xBTyBMRVRURVIgWU87TG87MDtMOzs7OztOOzs7OzsKKzBFQTM7TEFPIExFVFRFUiBMTyBMSU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUE1O0xBTyBMRVRURVIgTE8gTE9PVDtMbzswO0w7Ozs7O047Ozs7OworMEVBNztMQU8gTEVUVEVSIFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUFBO0xBTyBMRVRURVIgU08gU1VORztMbzswO0w7Ozs7O047Ozs7OworMEVBQjtMQU8gTEVUVEVSIEhPIFNVTkc7TG87MDtMOzs7OztOOzs7OzsKKzBFQUQ7TEFPIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUFFO0xBTyBMRVRURVIgSE8gVEFNO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUFGO0xBTyBFTExJUFNJUztMbzswO0w7Ozs7O047Ozs7OworMEVCMDtMQU8gVk9XRUwgU0lHTiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUIxO0xBTyBWT1dFTCBTSUdOIE1BSSBLQU47TW47MDtPTjs7Ozs7Tjs7Ozs7CiswRUIyO0xBTyBWT1dFTCBTSUdOIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUIzO0xBTyBWT1dFTCBTSUdOIEFNO0xvOzA7TDswRUNEIDBFQjI7Ozs7Tjs7Ozs7CiswRUI0O0xBTyBWT1dFTCBTSUdOIEk7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswRUI1O0xBTyBWT1dFTCBTSUdOIElJO01uOzA7T047Ozs7O047Ozs7OworMEVCNjtMQU8gVk9XRUwgU0lHTiBZO01uOzA7T047Ozs7O047Ozs7OworMEVCNztMQU8gVk9XRUwgU0lHTiBZWTtNbjswO09OOzs7OztOOzs7OzsKKzBFQjg7TEFPIFZPV0VMIFNJR04gVTtNbjsxMTg7T047Ozs7O047Ozs7OworMEVCOTtMQU8gVk9XRUwgU0lHTiBVVTtNbjsxMTg7T047Ozs7O047Ozs7OworMEVCQjtMQU8gVk9XRUwgU0lHTiBNQUkgS09OO01uOzA7T047Ozs7O047Ozs7OworMEVCQztMQU8gU0VNSVZPV0VMIFNJR04gTE87TW47MDtPTjs7Ozs7Tjs7Ozs7CiswRUJEO0xBTyBTRU1JVk9XRUwgU0lHTiBOWU87TG87MDtMOzs7OztOOzs7OzsKKzBFQzA7TEFPIFZPV0VMIFNJR04gRTtMbzswO0w7Ozs7O047Ozs7OworMEVDMTtMQU8gVk9XRUwgU0lHTiBFSTtMbzswO0w7Ozs7O047Ozs7OworMEVDMjtMQU8gVk9XRUwgU0lHTiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUMzO0xBTyBWT1dFTCBTSUdOIEFZO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUM0O0xBTyBWT1dFTCBTSUdOIEFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUM2O0xBTyBLTyBMQTtMbTswO0w7Ozs7O047Ozs7OworMEVDODtMQU8gVE9ORSBNQUkgRUs7TW47MTIyO09OOzs7OztOOzs7OzsKKzBFQzk7TEFPIFRPTkUgTUFJIFRITztNbjsxMjI7T047Ozs7O047Ozs7OworMEVDQTtMQU8gVE9ORSBNQUkgVEk7TW47MTIyO09OOzs7OztOOzs7OzsKKzBFQ0I7TEFPIFRPTkUgTUFJIENBVEFXQTtNbjsxMjI7T047Ozs7O047Ozs7OworMEVDQztMQU8gQ0FOQ0VMTEFUSU9OIE1BUks7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswRUNEO0xBTyBOSUdHQUhJVEE7TW47MTIyO09OOzs7OztOOzs7OzsKKzBFRDA7TEFPIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBFRDE7TEFPIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEVEMjtMQU8gRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswRUQzO0xBTyBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEVENDtMQU8gRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEVENTtMQU8gRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMEVENjtMQU8gRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswRUQ3O0xBTyBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEVEODtMQU8gRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzBFRDk7TEFPIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBFREM7TEFPIEhPIE5PO0xvOzA7TDs8Y29tcGF0PiAwRUFCIDBFOTk7Ozs7Tjs7Ozs7CiswRUREO0xBTyBITyBNTztMbzswO0w7PGNvbXBhdD4gMEVBQiAwRUExOzs7O047Ozs7OworMEYwMDtUSUJFVEFOIFNZTExBQkxFIE9NO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjAxO1RJQkVUQU4gTUFSSyBHVEVSIFlJRyBNR08gVFJVTkNBVEVEIEE7U287MDtMOzs7OztOOzt0ZXIgeWlrIGdvIGEgdGh1bmc7OzsKKzBGMDI7VElCRVRBTiBNQVJLIEdURVIgWUlHIE1HTyAtVU0gUk5BTSBCQ0FEIE1BO1NvOzA7TDs7Ozs7Tjs7dGVyIHlpayBnbyB3dW0gbmFtIGNoZXkgbWE7OzsKKzBGMDM7VElCRVRBTiBNQVJLIEdURVIgWUlHIE1HTyAtVU0gR1RFUiBUU0hFRyBNQTtTbzswO0w7Ozs7O047O3RlciB5aWsgZ28gd3VtIHRlciB0c2VrIG1hOzs7CiswRjA0O1RJQkVUQU4gTUFSSyBJTklUSUFMIFlJRyBNR08gTURVTiBNQTtQbzswO0w7Ozs7O047O3lpayBnbyBkdW4gbWE7OzsKKzBGMDU7VElCRVRBTiBNQVJLIENMT1NJTkcgWUlHIE1HTyBTR0FCIE1BO1BvOzA7TDs7Ozs7Tjs7eWlrIGdvIGthYiBtYTs7OworMEYwNjtUSUJFVEFOIE1BUksgQ0FSRVQgWUlHIE1HTyBQSFVSIFNIQUQgTUE7UG87MDtMOzs7OztOOzt5aWsgZ28gcHVyIHNoZXkgbWE7OzsKKzBGMDc7VElCRVRBTiBNQVJLIFlJRyBNR08gVFNIRUcgU0hBRCBNQTtQbzswO0w7Ozs7O047O3lpayBnbyB0c2VrIHNoZXkgbWE7OzsKKzBGMDg7VElCRVRBTiBNQVJLIFNCUlVMIFNIQUQ7UG87MDtMOzs7OztOOztkcnVsIHNoZXk7OzsKKzBGMDk7VElCRVRBTiBNQVJLIEJTS1VSIFlJRyBNR087UG87MDtMOzs7OztOOztrdXIgeWlrIGdvOzs7CiswRjBBO1RJQkVUQU4gTUFSSyBCS0EtIFNIT0cgWUlHIE1HTztQbzswO0w7Ozs7O047O2thIHNobyB5aWsgZ287OzsKKzBGMEI7VElCRVRBTiBNQVJLIElOVEVSU1lMTEFCSUMgVFNIRUc7UG87MDtMOzs7OztOOzt0c2VrOzs7CiswRjBDO1RJQkVUQU4gTUFSSyBERUxJTUlURVIgVFNIRUcgQlNUQVI7UG87MDtMOzs7OztOOzt0c2VrIHRhcjs7OworMEYwRDtUSUJFVEFOIE1BUksgU0hBRDtQbzswO0w7Ozs7O047O3NoZXk7OzsKKzBGMEU7VElCRVRBTiBNQVJLIE5ZSVMgU0hBRDtQbzswO0w7Ozs7O047O255aSBzaGV5Ozs7CiswRjBGO1RJQkVUQU4gTUFSSyBUU0hFRyBTSEFEO1BvOzA7TDs7Ozs7Tjs7dHNlayBzaGV5Ozs7CiswRjEwO1RJQkVUQU4gTUFSSyBOWUlTIFRTSEVHIFNIQUQ7UG87MDtMOzs7OztOOztueWkgdHNlayBzaGV5Ozs7CiswRjExO1RJQkVUQU4gTUFSSyBSSU4gQ0hFTiBTUFVOR1MgU0hBRDtQbzswO0w7Ozs7O047O3JpbmNoZW4gcHVuZyBzaGV5Ozs7CiswRjEyO1RJQkVUQU4gTUFSSyBSR1lBIEdSQU0gU0hBRDtQbzswO0w7Ozs7O047O2d5YSB0cmFtIHNoZXk7OzsKKzBGMTM7VElCRVRBTiBNQVJLIENBUkVUIC1EWlVEIFJUQUdTIE1FIExPTkcgQ0FOO1NvOzA7TDs7Ozs7Tjs7ZHp1IHRhIG1lIGxvbmcgY2hlbjs7OworMEYxNDtUSUJFVEFOIE1BUksgR1RFUiBUU0hFRztTbzswO0w7Ozs7O047O3RlciB0c2VrOzs7CiswRjE1O1RJQkVUQU4gTE9HT1RZUEUgU0lHTiBDSEFEIFJUQUdTO1NvOzA7TDs7Ozs7Tjs7Y2hlIHRhOzs7CiswRjE2O1RJQkVUQU4gTE9HT1RZUEUgU0lHTiBMSEFHIFJUQUdTO1NvOzA7TDs7Ozs7Tjs7aGxhayB0YTs7OworMEYxNztUSUJFVEFOIEFTVFJPTE9HSUNBTCBTSUdOIFNHUkEgR0NBTiAtQ0hBUiBSVEFHUztTbzswO0w7Ozs7O047O3RyYWNoZW4gY2hhciB0YTs7OworMEYxODtUSUJFVEFOIEFTVFJPTE9HSUNBTCBTSUdOIC1LSFlVRCBQQTtNbjsyMjA7T047Ozs7O047O2t5dSBwYTs7OworMEYxOTtUSUJFVEFOIEFTVFJPTE9HSUNBTCBTSUdOIFNET05HIFRTSFVHUztNbjsyMjA7T047Ozs7O047O2RvbmcgdHN1Ozs7CiswRjFBO1RJQkVUQU4gU0lHTiBSREVMIERLQVIgR0NJRztTbzswO0w7Ozs7O047O2Rla2EgY2hpZzs7OworMEYxQjtUSUJFVEFOIFNJR04gUkRFTCBES0FSIEdOWUlTO1NvOzA7TDs7Ozs7Tjs7ZGVrYSBueWk7OzsKKzBGMUM7VElCRVRBTiBTSUdOIFJERUwgREtBUiBHU1VNO1NvOzA7TDs7Ozs7Tjs7ZGVrYSBzdW07OzsKKzBGMUQ7VElCRVRBTiBTSUdOIFJERUwgTkFHIEdDSUc7U287MDtMOzs7OztOOztkZW5hIGNoaWc7OzsKKzBGMUU7VElCRVRBTiBTSUdOIFJERUwgTkFHIEdOWUlTO1NvOzA7TDs7Ozs7Tjs7ZGVuYSBueWk7OzsKKzBGMUY7VElCRVRBTiBTSUdOIFJERUwgREtBUiBSREVMIE5BRztTbzswO0w7Ozs7O047O2Rla2EgZGVuYTs7OworMEYyMDtUSUJFVEFOIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBGMjE7VElCRVRBTiBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzBGMjI7VElCRVRBTiBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzBGMjM7VElCRVRBTiBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEYyNDtUSUJFVEFOIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzBGMjU7VElCRVRBTiBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswRjI2O1RJQkVUQU4gRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswRjI3O1RJQkVUQU4gRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzBGMjg7VElCRVRBTiBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMEYyOTtUSUJFVEFOIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBGMkE7VElCRVRBTiBESUdJVCBIQUxGIE9ORTtObzswO0w7Ozs7O047Ozs7OworMEYyQjtUSUJFVEFOIERJR0lUIEhBTEYgVFdPO05vOzA7TDs7Ozs7Tjs7Ozs7CiswRjJDO1RJQkVUQU4gRElHSVQgSEFMRiBUSFJFRTtObzswO0w7Ozs7O047Ozs7OworMEYyRDtUSUJFVEFOIERJR0lUIEhBTEYgRk9VUjtObzswO0w7Ozs7O047Ozs7OworMEYyRTtUSUJFVEFOIERJR0lUIEhBTEYgRklWRTtObzswO0w7Ozs7O047Ozs7OworMEYyRjtUSUJFVEFOIERJR0lUIEhBTEYgU0lYO05vOzA7TDs7Ozs7Tjs7Ozs7CiswRjMwO1RJQkVUQU4gRElHSVQgSEFMRiBTRVZFTjtObzswO0w7Ozs7O047Ozs7OworMEYzMTtUSUJFVEFOIERJR0lUIEhBTEYgRUlHSFQ7Tm87MDtMOzs7OztOOzs7OzsKKzBGMzI7VElCRVRBTiBESUdJVCBIQUxGIE5JTkU7Tm87MDtMOzs7OztOOzs7OzsKKzBGMzM7VElCRVRBTiBESUdJVCBIQUxGIFpFUk87Tm87MDtMOzs7OztOOzs7OzsKKzBGMzQ7VElCRVRBTiBNQVJLIEJTRFVTIFJUQUdTO1NvOzA7TDs7Ozs7Tjs7ZHUgdGE7OzsKKzBGMzU7VElCRVRBTiBNQVJLIE5HQVMgQlpVTkcgTllJIFpMQTtNbjsyMzA7T047Ozs7O047O25nZSB6dW5nIG55aSBkYTs7OworMEYzNjtUSUJFVEFOIE1BUksgQ0FSRVQgLURaVUQgUlRBR1MgQlpISSBNSUcgQ0FOO1NvOzA7TDs7Ozs7Tjs7ZHp1IHRhIHNoaSBtaWcgY2hlbjs7OworMEYzNztUSUJFVEFOIE1BUksgTkdBUyBCWlVORyBTR09SIFJUQUdTO01uOzIzMDtPTjs7Ozs7Tjs7bmdlIHp1bmcgZ29yIHRhOzs7CiswRjM4O1RJQkVUQU4gTUFSSyBDSEUgTUdPO1NvOzA7TDs7Ozs7Tjs7Y2hlIGdvOzs7CiswRjM5O1RJQkVUQU4gTUFSSyBUU0EgLVBIUlU7TW47MjE2O09OOzs7OztOOzt0c2EgdHJ1Ozs7CiswRjNBO1RJQkVUQU4gTUFSSyBHVUcgUlRBR1MgR1lPTjtQczswO09OOzs7OztOOztndWcgdGEgeXVuOzs7CiswRjNCO1RJQkVUQU4gTUFSSyBHVUcgUlRBR1MgR1lBUztQZTswO09OOzs7OztOOztndWcgdGEgeWU7OzsKKzBGM0M7VElCRVRBTiBNQVJLIEFORyBLSEFORyBHWU9OO1BzOzA7T047Ozs7O047O2FuZyBrYW5nIHl1bjs7OworMEYzRDtUSUJFVEFOIE1BUksgQU5HIEtIQU5HIEdZQVM7UGU7MDtPTjs7Ozs7Tjs7YW5nIGthbmcgeWU7OzsKKzBGM0U7VElCRVRBTiBTSUdOIFlBUiBUU0hFUztNYzswO09OOzs7OztOOzt5YXIgdHNlOzs7CiswRjNGO1RJQkVUQU4gU0lHTiBNQVIgVFNIRVM7TWM7MDtPTjs7Ozs7Tjs7bWFyIHRzZTs7OworMEY0MDtUSUJFVEFOIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMEY0MTtUSUJFVEFOIExFVFRFUiBLSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNDI7VElCRVRBTiBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNDM7VElCRVRBTiBMRVRURVIgR0hBO0xvOzA7TDswRjQyIDBGQjc7Ozs7Tjs7Ozs7CiswRjQ0O1RJQkVUQU4gTEVUVEVSIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMEY0NTtUSUJFVEFOIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEY0NjtUSUJFVEFOIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNDc7VElCRVRBTiBMRVRURVIgSkE7TG87MDtMOzs7OztOOzs7OzsKKzBGNDk7VElCRVRBTiBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjRBO1RJQkVUQU4gTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMEY0QjtUSUJFVEFOIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjRDO1RJQkVUQU4gTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMEY0RDtUSUJFVEFOIExFVFRFUiBEREhBO0xvOzA7TDswRjRDIDBGQjc7Ozs7Tjs7Ozs7CiswRjRFO1RJQkVUQU4gTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMEY0RjtUSUJFVEFOIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMEY1MDtUSUJFVEFOIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNTE7VElCRVRBTiBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzBGNTI7VElCRVRBTiBMRVRURVIgREhBO0xvOzA7TDswRjUxIDBGQjc7Ozs7Tjs7Ozs7CiswRjUzO1RJQkVUQU4gTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjU0O1RJQkVUQU4gTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjU1O1RJQkVUQU4gTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMEY1NjtUSUJFVEFOIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMEY1NztUSUJFVEFOIExFVFRFUiBCSEE7TG87MDtMOzBGNTYgMEZCNzs7OztOOzs7OzsKKzBGNTg7VElCRVRBTiBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzBGNTk7VElCRVRBTiBMRVRURVIgVFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjVBO1RJQkVUQU4gTEVUVEVSIFRTSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNUI7VElCRVRBTiBMRVRURVIgRFpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjVDO1RJQkVUQU4gTEVUVEVSIERaSEE7TG87MDtMOzBGNUIgMEZCNzs7OztOOzs7OzsKKzBGNUQ7VElCRVRBTiBMRVRURVIgV0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNUU7VElCRVRBTiBMRVRURVIgWkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjVGO1RJQkVUQU4gTEVUVEVSIFpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjYwO1RJQkVUQU4gTEVUVEVSIC1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjYxO1RJQkVUQU4gTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjYyO1RJQkVUQU4gTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjYzO1RJQkVUQU4gTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjY0O1RJQkVUQU4gTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMEY2NTtUSUJFVEFOIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNjY7VElCRVRBTiBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNjc7VElCRVRBTiBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNjg7VElCRVRBTiBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMEY2OTtUSUJFVEFOIExFVFRFUiBLU1NBO0xvOzA7TDswRjQwIDBGQjU7Ozs7Tjs7Ozs7CiswRjcxO1RJQkVUQU4gVk9XRUwgU0lHTiBBQTtNbjswO09OOzs7OztOOzs7OzsKKzBGNzI7VElCRVRBTiBWT1dFTCBTSUdOIEk7TW47MTMwO09OOzs7OztOOzs7OzsKKzBGNzM7VElCRVRBTiBWT1dFTCBTSUdOIElJO01uOzA7T047MEY3MiAwRjcxOzs7O047Ozs7OworMEY3NDtUSUJFVEFOIFZPV0VMIFNJR04gVTtNbjsxMzI7T047Ozs7O047Ozs7OworMEY3NTtUSUJFVEFOIFZPV0VMIFNJR04gVVU7TW47MDtPTjswRjcxIDBGNzQ7Ozs7Tjs7Ozs7CiswRjc2O1RJQkVUQU4gVk9XRUwgU0lHTiBWT0NBTElDIFI7TW47MDtPTjswRkIyIDBGODA7Ozs7Tjs7Ozs7CiswRjc3O1RJQkVUQU4gVk9XRUwgU0lHTiBWT0NBTElDIFJSO01uOzA7T047MEY3NiAwRjcxOzs7O047Ozs7OworMEY3ODtUSUJFVEFOIFZPV0VMIFNJR04gVk9DQUxJQyBMO01uOzA7T047MEZCMyAwRjgwOzs7O047Ozs7OworMEY3OTtUSUJFVEFOIFZPV0VMIFNJR04gVk9DQUxJQyBMTDtNbjswO09OOzBGNzggMEY3MTs7OztOOzs7OzsKKzBGN0E7VElCRVRBTiBWT1dFTCBTSUdOIEU7TW47MTMwO09OOzs7OztOOzs7OzsKKzBGN0I7VElCRVRBTiBWT1dFTCBTSUdOIEVFO01uOzEzMDtPTjs7Ozs7Tjs7Ozs7CiswRjdDO1RJQkVUQU4gVk9XRUwgU0lHTiBPO01uOzEzMDtPTjs7Ozs7Tjs7Ozs7CiswRjdEO1RJQkVUQU4gVk9XRUwgU0lHTiBPTztNbjsxMzA7T047Ozs7O047Ozs7OworMEY3RTtUSUJFVEFOIFNJR04gUkpFUyBTVSBOR0EgUk87TW47MDtPTjs7Ozs7Tjs7amUgc3UgbmdhIHJvOzs7CiswRjdGO1RJQkVUQU4gU0lHTiBSTkFNIEJDQUQ7TWM7MDtMOzs7OztOOztuYW0gY2hleTs7OworMEY4MDtUSUJFVEFOIFZPV0VMIFNJR04gUkVWRVJTRUQgSTtNbjsxMzA7T047Ozs7O047Ozs7OworMEY4MTtUSUJFVEFOIFZPV0VMIFNJR04gUkVWRVJTRUQgSUk7TW47MDtPTjswRjgwIDBGNzE7Ozs7Tjs7Ozs7CiswRjgyO1RJQkVUQU4gU0lHTiBOWUkgWkxBIE5BQSBEQTtNbjsyMzA7T047Ozs7O047O255aSBkYSBuYSBkYTs7OworMEY4MztUSUJFVEFOIFNJR04gU05BIExEQU47TW47MjMwO09OOzs7OztOOztuYW4gZGU7OzsKKzBGODQ7VElCRVRBTiBNQVJLIEhBTEFOVEE7TW47OTtPTjs7Ozs7Tjs7Ozs7CiswRjg1O1RJQkVUQU4gTUFSSyBQQUxVVEE7UG87MDtMOzs7OztOOzs7OzsKKzBGODY7VElCRVRBTiBTSUdOIExDSSBSVEFHUztNbjsyMzA7T047Ozs7O047O2ppIHRhOzs7CiswRjg3O1RJQkVUQU4gU0lHTiBZQU5HIFJUQUdTO01uOzIzMDtPTjs7Ozs7Tjs7eWFuZyB0YTs7OworMEY4ODtUSUJFVEFOIFNJR04gTENFIFRTQSBDQU47TG87MDtMOzs7OztOOztjaGUgdHNhIGNoZW47OzsKKzBGODk7VElCRVRBTiBTSUdOIE1DSFUgQ0FOO0xvOzA7TDs7Ozs7Tjs7Y2h1IGNoZW47OzsKKzBGOEE7VElCRVRBTiBTSUdOIEdSVSBDQU4gUkdZSU5HUztMbzswO0w7Ozs7O047O3RydSBjaGVuIGdpbmc7OzsKKzBGOEI7VElCRVRBTiBTSUdOIEdSVSBNRUQgUkdZSU5HUztMbzswO0w7Ozs7O047O3RydSBtZSBnaW5nOzs7CiswRjkwO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBLQTtNbjswO09OOzs7OztOOzs7OzsKKzBGOTE7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEtIQTtNbjswO09OOzs7OztOOzs7OzsKKzBGOTI7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEdBO01uOzA7T047Ozs7O047Ozs7OworMEY5MztUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgR0hBO01uOzA7T047MEY5MiAwRkI3Ozs7O047Ozs7OworMEY5NDtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgTkdBO01uOzA7T047Ozs7O047Ozs7OworMEY5NTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgQ0E7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswRjk3O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBKQTtNbjswO09OOzs7OztOOzs7OzsKKzBGOTk7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIE5ZQTtNbjswO09OOzs7OztOOzs7OzsKKzBGOUE7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFRUQTtNbjswO09OOzs7OztOOzs7OzsKKzBGOUI7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFRUSEE7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswRjlDO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBEREE7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswRjlEO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBEREhBO01uOzA7T047MEY5QyAwRkI3Ozs7O047Ozs7OworMEY5RTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgTk5BO01uOzA7T047Ozs7O047Ozs7OworMEY5RjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgVEE7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswRkEwO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBUSEE7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswRkExO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBEQTtNbjswO09OOzs7OztOOzs7OzsKKzBGQTI7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERIQTtNbjswO09OOzBGQTEgMEZCNzs7OztOOzs7OzsKKzBGQTM7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIE5BO01uOzA7T047Ozs7O047Ozs7OworMEZBNDtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgUEE7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswRkE1O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBQSEE7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswRkE2O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBCQTtNbjswO09OOzs7OztOOzs7OzsKKzBGQTc7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEJIQTtNbjswO09OOzBGQTYgMEZCNzs7OztOOzs7OzsKKzBGQTg7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIE1BO01uOzA7T047Ozs7O047Ozs7OworMEZBOTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgVFNBO01uOzA7T047Ozs7O047Ozs7OworMEZBQTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgVFNIQTtNbjswO09OOzs7OztOOzs7OzsKKzBGQUI7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERaQTtNbjswO09OOzs7OztOOzs7OzsKKzBGQUM7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERaSEE7TW47MDtPTjswRkFCIDBGQjc7Ozs7Tjs7Ozs7CiswRkFEO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBXQTtNbjswO09OOzs7OztOOzs7OzsKKzBGQjE7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFlBO01uOzA7T047Ozs7O047Ozs7OworMEZCMjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgUkE7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswRkIzO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBMQTtNbjswO09OOzs7OztOOzs7OzsKKzBGQjQ7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFNIQTtNbjswO09OOzs7OztOOzs7OzsKKzBGQjU7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFNTQTtNbjswO09OOzs7OztOOzs7OzsKKzBGQjY7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFNBO01uOzA7T047Ozs7O047Ozs7OworMEZCNztUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgSEE7TW47MDtPTjs7Ozs7Tjs7Ozs7CiswRkI5O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBLU1NBO01uOzA7T047MEY5MCAwRkI1Ozs7O047Ozs7OworMTBBMDtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEQwOworMTBBMTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBCQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBEMTsKKzEwQTI7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgR0FOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRDI7CisxMEEzO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIERPTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEQzOworMTBBNDtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBFTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEQ0OworMTBBNTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBWSU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBENTsKKzEwQTY7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgWkVOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRDY7CisxMEE3O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFRBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEQ3OworMTBBODtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBJTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEQ4OworMTBBOTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBLQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBEOTsKKzEwQUE7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgTEFTO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwREE7CisxMEFCO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIE1BTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMERCOworMTBBQztHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBOQVI7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBEQzsKKzEwQUQ7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgT047THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBERDsKKzEwQUU7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgUEFSO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwREU7CisxMEFGO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFpIQVI7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBERjsKKzEwQjA7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgUkFFO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRTA7CisxMEIxO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFNBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEUxOworMTBCMjtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBUQVI7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBFMjsKKzEwQjM7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgVU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBFMzsKKzEwQjQ7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgUEhBUjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEU0OworMTBCNTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBLSEFSO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRTU7CisxMEI2O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEdIQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBFNjsKKzEwQjc7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgUUFSO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRTc7CisxMEI4O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFNISU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBFODsKKzEwQjk7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgQ0hJTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEU5OworMTBCQTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBDQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBFQTsKKzEwQkI7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgSklMO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRUI7CisxMEJDO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIENJTDtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEVDOworMTBCRDtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBDSEFSO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRUQ7CisxMEJFO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFhBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEVFOworMTBCRjtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBKSEFOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRUY7CisxMEMwO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEhBRTtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEYwOworMTBDMTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBIRTtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEYxOworMTBDMjtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBISUU7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBGMjsKKzEwQzM7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgV0U7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7MTBGMzsKKzEwQzQ7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgSEFSO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzEwRjQ7CisxMEM1O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEhPRTtMdTswO0w7Ozs7O047O0todXRzdXJpOzsxMEY1OworMTBEMDtHRU9SR0lBTiBMRVRURVIgQU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBBTjs7OzsKKzEwRDE7R0VPUkdJQU4gTEVUVEVSIEJBTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEJBTjs7OzsKKzEwRDI7R0VPUkdJQU4gTEVUVEVSIEdBTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEdBTjs7OzsKKzEwRDM7R0VPUkdJQU4gTEVUVEVSIERPTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIERPTjs7OzsKKzEwRDQ7R0VPUkdJQU4gTEVUVEVSIEVOO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgRU47Ozs7CisxMEQ1O0dFT1JHSUFOIExFVFRFUiBWSU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBWSU47Ozs7CisxMEQ2O0dFT1JHSUFOIExFVFRFUiBaRU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBaRU47Ozs7CisxMEQ3O0dFT1JHSUFOIExFVFRFUiBUQU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBUQU47Ozs7CisxMEQ4O0dFT1JHSUFOIExFVFRFUiBJTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIElOOzs7OworMTBEOTtHRU9SR0lBTiBMRVRURVIgS0FOO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgS0FOOzs7OworMTBEQTtHRU9SR0lBTiBMRVRURVIgTEFTO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgTEFTOzs7OworMTBEQjtHRU9SR0lBTiBMRVRURVIgTUFOO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgTUFOOzs7OworMTBEQztHRU9SR0lBTiBMRVRURVIgTkFSO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgTkFSOzs7OworMTBERDtHRU9SR0lBTiBMRVRURVIgT047TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBPTjs7OzsKKzEwREU7R0VPUkdJQU4gTEVUVEVSIFBBUjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFBBUjs7OzsKKzEwREY7R0VPUkdJQU4gTEVUVEVSIFpIQVI7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBaSEFSOzs7OworMTBFMDtHRU9SR0lBTiBMRVRURVIgUkFFO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgUkFFOzs7OworMTBFMTtHRU9SR0lBTiBMRVRURVIgU0FOO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgU0FOOzs7OworMTBFMjtHRU9SR0lBTiBMRVRURVIgVEFSO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgVEFSOzs7OworMTBFMztHRU9SR0lBTiBMRVRURVIgVU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBVTjs7OzsKKzEwRTQ7R0VPUkdJQU4gTEVUVEVSIFBIQVI7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBQSEFSOzs7OworMTBFNTtHRU9SR0lBTiBMRVRURVIgS0hBUjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEtIQVI7Ozs7CisxMEU2O0dFT1JHSUFOIExFVFRFUiBHSEFOO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgR0hBTjs7OzsKKzEwRTc7R0VPUkdJQU4gTEVUVEVSIFFBUjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFFBUjs7OzsKKzEwRTg7R0VPUkdJQU4gTEVUVEVSIFNISU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBTSElOOzs7OworMTBFOTtHRU9SR0lBTiBMRVRURVIgQ0hJTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIENISU47Ozs7CisxMEVBO0dFT1JHSUFOIExFVFRFUiBDQU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBDQU47Ozs7CisxMEVCO0dFT1JHSUFOIExFVFRFUiBKSUw7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBKSUw7Ozs7CisxMEVDO0dFT1JHSUFOIExFVFRFUiBDSUw7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBDSUw7Ozs7CisxMEVEO0dFT1JHSUFOIExFVFRFUiBDSEFSO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgQ0hBUjs7OzsKKzEwRUU7R0VPUkdJQU4gTEVUVEVSIFhBTjtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFhBTjs7OzsKKzEwRUY7R0VPUkdJQU4gTEVUVEVSIEpIQU47TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBKSEFOOzs7OworMTBGMDtHRU9SR0lBTiBMRVRURVIgSEFFO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgSEFFOzs7OworMTBGMTtHRU9SR0lBTiBMRVRURVIgSEU7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBIRTs7OzsKKzEwRjI7R0VPUkdJQU4gTEVUVEVSIEhJRTtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEhJRTs7OzsKKzEwRjM7R0VPUkdJQU4gTEVUVEVSIFdFO0xsOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgV0U7Ozs7CisxMEY0O0dFT1JHSUFOIExFVFRFUiBIQVI7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBIQVI7Ozs7CisxMEY1O0dFT1JHSUFOIExFVFRFUiBIT0U7TGw7MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBIT0U7Ozs7CisxMEY2O0dFT1JHSUFOIExFVFRFUiBGSTtMbDswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEZJOzs7OworMTBGQjtHRU9SR0lBTiBQQVJBR1JBUEggU0VQQVJBVE9SO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxMTAwO0hBTkdVTCBDSE9TRU9ORyBLSVlFT0s7TG87MDtMOzs7OztOOzs7OzsKKzExMDE7SEFOR1VMIENIT1NFT05HIFNTQU5HS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMTAwIDExMDA7Ozs7Tjs7Ozs7CisxMTAyO0hBTkdVTCBDSE9TRU9ORyBOSUVVTjtMbzswO0w7Ozs7O047Ozs7OworMTEwMztIQU5HVUwgQ0hPU0VPTkcgVElLRVVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTA0O0hBTkdVTCBDSE9TRU9ORyBTU0FOR1RJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTEwMyAxMTAzOzs7O047Ozs7OworMTEwNTtIQU5HVUwgQ0hPU0VPTkcgUklFVUw7TG87MDtMOzs7OztOOzs7OzsKKzExMDY7SEFOR1VMIENIT1NFT05HIE1JRVVNO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTA3O0hBTkdVTCBDSE9TRU9ORyBQSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTEwODtIQU5HVUwgQ0hPU0VPTkcgU1NBTkdQSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTA3Ozs7O047Ozs7OworMTEwOTtIQU5HVUwgQ0hPU0VPTkcgU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTEwQTtIQU5HVUwgQ0hPU0VPTkcgU1NBTkdTSU9TO0xvOzA7TDs8Y29tcGF0PiAxMTA5IDExMDk7Ozs7Tjs7Ozs7CisxMTBCO0hBTkdVTCBDSE9TRU9ORyBJRVVORztMbzswO0w7Ozs7O047Ozs7OworMTEwQztIQU5HVUwgQ0hPU0VPTkcgQ0lFVUM7TG87MDtMOzs7OztOOzs7OzsKKzExMEQ7SEFOR1VMIENIT1NFT05HIFNTQU5HQ0lFVUM7TG87MDtMOzxjb21wYXQ+IDExMEMgMTEwQzs7OztOOzs7OzsKKzExMEU7SEFOR1VMIENIT1NFT05HIENISUVVQ0g7TG87MDtMOzs7OztOOzs7OzsKKzExMEY7SEFOR1VMIENIT1NFT05HIEtISUVVS0g7TG87MDtMOzs7OztOOzs7OzsKKzExMTA7SEFOR1VMIENIT1NFT05HIFRISUVVVEg7TG87MDtMOzs7OztOOzs7OzsKKzExMTE7SEFOR1VMIENIT1NFT05HIFBISUVVUEg7TG87MDtMOzs7OztOOzs7OzsKKzExMTI7SEFOR1VMIENIT1NFT05HIEhJRVVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTEzO0hBTkdVTCBDSE9TRU9ORyBOSUVVTi1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMDIgMTEwMDs7OztOOzs7OzsKKzExMTQ7SEFOR1VMIENIT1NFT05HIFNTQU5HTklFVU47TG87MDtMOzxjb21wYXQ+IDExMDIgMTEwMjs7OztOOzs7OzsKKzExMTU7SEFOR1VMIENIT1NFT05HIE5JRVVOLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTEwMiAxMTAzOzs7O047Ozs7OworMTExNjtIQU5HVUwgQ0hPU0VPTkcgTklFVU4tUElFVVA7TG87MDtMOzxjb21wYXQ+IDExMDIgMTEwNzs7OztOOzs7OzsKKzExMTc7SEFOR1VMIENIT1NFT05HIFRJS0VVVC1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMDMgMTEwMDs7OztOOzs7OzsKKzExMTg7SEFOR1VMIENIT1NFT05HIFJJRVVMLU5JRVVOO0xvOzA7TDs8Y29tcGF0PiAxMTA1IDExMDI7Ozs7Tjs7Ozs7CisxMTE5O0hBTkdVTCBDSE9TRU9ORyBTU0FOR1JJRVVMO0xvOzA7TDs8Y29tcGF0PiAxMTA1IDExMDU7Ozs7Tjs7Ozs7CisxMTFBO0hBTkdVTCBDSE9TRU9ORyBSSUVVTC1ISUVVSDtMbzswO0w7PGNvbXBhdD4gMTEwNSAxMTEyOzs7O047Ozs7OworMTExQjtIQU5HVUwgQ0hPU0VPTkcgS0FQWUVPVU5SSUVVTDtMbzswO0w7PGNvbXBhdD4gMTEwNSAxMTBCOzs7O047Ozs7OworMTExQztIQU5HVUwgQ0hPU0VPTkcgTUlFVU0tUElFVVA7TG87MDtMOzxjb21wYXQ+IDExMDYgMTEwNzs7OztOOzs7OzsKKzExMUQ7SEFOR1VMIENIT1NFT05HIEtBUFlFT1VOTUlFVU07TG87MDtMOzxjb21wYXQ+IDExMDYgMTEwQjs7OztOOzs7OzsKKzExMUU7SEFOR1VMIENIT1NFT05HIFBJRVVQLUtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTAwOzs7O047Ozs7OworMTExRjtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtTklFVU47TG87MDtMOzxjb21wYXQ+IDExMDcgMTEwMjs7OztOOzs7OzsKKzExMjA7SEFOR1VMIENIT1NFT05HIFBJRVVQLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTAzOzs7O047Ozs7OworMTEyMTtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtU0lPUztMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTA5Ozs7O047Ozs7OworMTEyMjtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtU0lPUy1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMDcgMTEwOSAxMTAwOzs7O047Ozs7OworMTEyMztIQU5HVUwgQ0hPU0VPTkcgUElFVVAtU0lPUy1USUtFVVQ7TG87MDtMOzxjb21wYXQ+IDExMDcgMTEwOSAxMTAzOzs7O047Ozs7OworMTEyNDtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtU0lPUy1QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTA5IDExMDc7Ozs7Tjs7Ozs7CisxMTI1O0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1TU0FOR1NJT1M7TG87MDtMOzxjb21wYXQ+IDExMDcgMTEwOSAxMTA5Ozs7O047Ozs7OworMTEyNjtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtU0lPUy1DSUVVQztMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTA5IDExMEM7Ozs7Tjs7Ozs7CisxMTI3O0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1DSUVVQztMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTBDOzs7O047Ozs7OworMTEyODtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtQ0hJRVVDSDtMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTBFOzs7O047Ozs7OworMTEyOTtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtVEhJRVVUSDtMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTEwOzs7O047Ozs7OworMTEyQTtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtUEhJRVVQSDtMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTExOzs7O047Ozs7OworMTEyQjtIQU5HVUwgQ0hPU0VPTkcgS0FQWUVPVU5QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEwNyAxMTBCOzs7O047Ozs7OworMTEyQztIQU5HVUwgQ0hPU0VPTkcgS0FQWUVPVU5TU0FOR1BJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMTA3IDExMDcgMTEwQjs7OztOOzs7OzsKKzExMkQ7SEFOR1VMIENIT1NFT05HIFNJT1MtS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMTA5IDExMDA7Ozs7Tjs7Ozs7CisxMTJFO0hBTkdVTCBDSE9TRU9ORyBTSU9TLU5JRVVOO0xvOzA7TDs8Y29tcGF0PiAxMTA5IDExMDI7Ozs7Tjs7Ozs7CisxMTJGO0hBTkdVTCBDSE9TRU9ORyBTSU9TLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTEwOSAxMTAzOzs7O047Ozs7OworMTEzMDtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1SSUVVTDtMbzswO0w7PGNvbXBhdD4gMTEwOSAxMTA1Ozs7O047Ozs7OworMTEzMTtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1NSUVVTTtMbzswO0w7PGNvbXBhdD4gMTEwOSAxMTA2Ozs7O047Ozs7OworMTEzMjtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEwOSAxMTA3Ozs7O047Ozs7OworMTEzMztIQU5HVUwgQ0hPU0VPTkcgU0lPUy1QSUVVUC1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMDkgMTEwNyAxMTAwOzs7O047Ozs7OworMTEzNDtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1TU0FOR1NJT1M7TG87MDtMOzxjb21wYXQ+IDExMDkgMTEwOSAxMTA5Ozs7O047Ozs7OworMTEzNTtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1JRVVORztMbzswO0w7PGNvbXBhdD4gMTEwOSAxMTBCOzs7O047Ozs7OworMTEzNjtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1DSUVVQztMbzswO0w7PGNvbXBhdD4gMTEwOSAxMTBDOzs7O047Ozs7OworMTEzNztIQU5HVUwgQ0hPU0VPTkcgU0lPUy1DSElFVUNIO0xvOzA7TDs8Y29tcGF0PiAxMTA5IDExMEU7Ozs7Tjs7Ozs7CisxMTM4O0hBTkdVTCBDSE9TRU9ORyBTSU9TLUtISUVVS0g7TG87MDtMOzxjb21wYXQ+IDExMDkgMTEwRjs7OztOOzs7OzsKKzExMzk7SEFOR1VMIENIT1NFT05HIFNJT1MtVEhJRVVUSDtMbzswO0w7PGNvbXBhdD4gMTEwOSAxMTEwOzs7O047Ozs7OworMTEzQTtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1QSElFVVBIO0xvOzA7TDs8Y29tcGF0PiAxMTA5IDExMTE7Ozs7Tjs7Ozs7CisxMTNCO0hBTkdVTCBDSE9TRU9ORyBTSU9TLUhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMTA5IDExMTI7Ozs7Tjs7Ozs7CisxMTNDO0hBTkdVTCBDSE9TRU9ORyBDSElUVUVVTVNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExM0Q7SEFOR1VMIENIT1NFT05HIENISVRVRVVNU1NBTkdTSU9TO0xvOzA7TDs8Y29tcGF0PiAxMTNDIDExM0M7Ozs7Tjs7Ozs7CisxMTNFO0hBTkdVTCBDSE9TRU9ORyBDRU9OR0NISUVVTVNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExM0Y7SEFOR1VMIENIT1NFT05HIENFT05HQ0hJRVVNU1NBTkdTSU9TO0xvOzA7TDs8Y29tcGF0PiAxMTNFIDExM0U7Ozs7Tjs7Ozs7CisxMTQwO0hBTkdVTCBDSE9TRU9ORyBQQU5TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTQxO0hBTkdVTCBDSE9TRU9ORyBJRVVORy1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMEIgMTEwMDs7OztOOzs7OzsKKzExNDI7SEFOR1VMIENIT1NFT05HIElFVU5HLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTEwQiAxMTAzOzs7O047Ozs7OworMTE0MztIQU5HVUwgQ0hPU0VPTkcgSUVVTkctTUlFVU07TG87MDtMOzxjb21wYXQ+IDExMEIgMTEwNjs7OztOOzs7OzsKKzExNDQ7SEFOR1VMIENIT1NFT05HIElFVU5HLVBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMTBCIDExMDc7Ozs7Tjs7Ozs7CisxMTQ1O0hBTkdVTCBDSE9TRU9ORyBJRVVORy1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMTBCIDExMDk7Ozs7Tjs7Ozs7CisxMTQ2O0hBTkdVTCBDSE9TRU9ORyBJRVVORy1QQU5TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMTBCIDExNDA7Ozs7Tjs7Ozs7CisxMTQ3O0hBTkdVTCBDSE9TRU9ORyBTU0FOR0lFVU5HO0xvOzA7TDs8Y29tcGF0PiAxMTBCIDExMEI7Ozs7Tjs7Ozs7CisxMTQ4O0hBTkdVTCBDSE9TRU9ORyBJRVVORy1DSUVVQztMbzswO0w7PGNvbXBhdD4gMTEwQiAxMTBDOzs7O047Ozs7OworMTE0OTtIQU5HVUwgQ0hPU0VPTkcgSUVVTkctQ0hJRVVDSDtMbzswO0w7PGNvbXBhdD4gMTEwQiAxMTBFOzs7O047Ozs7OworMTE0QTtIQU5HVUwgQ0hPU0VPTkcgSUVVTkctVEhJRVVUSDtMbzswO0w7PGNvbXBhdD4gMTEwQiAxMTEwOzs7O047Ozs7OworMTE0QjtIQU5HVUwgQ0hPU0VPTkcgSUVVTkctUEhJRVVQSDtMbzswO0w7PGNvbXBhdD4gMTEwQiAxMTExOzs7O047Ozs7OworMTE0QztIQU5HVUwgQ0hPU0VPTkcgWUVTSUVVTkc7TG87MDtMOzs7OztOOzs7OzsKKzExNEQ7SEFOR1VMIENIT1NFT05HIENJRVVDLUlFVU5HO0xvOzA7TDs8Y29tcGF0PiAxMTBDIDExMEI7Ozs7Tjs7Ozs7CisxMTRFO0hBTkdVTCBDSE9TRU9ORyBDSElUVUVVTUNJRVVDO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTRGO0hBTkdVTCBDSE9TRU9ORyBDSElUVUVVTVNTQU5HQ0lFVUM7TG87MDtMOzxjb21wYXQ+IDExNEUgMTE0RTs7OztOOzs7OzsKKzExNTA7SEFOR1VMIENIT1NFT05HIENFT05HQ0hJRVVNQ0lFVUM7TG87MDtMOzs7OztOOzs7OzsKKzExNTE7SEFOR1VMIENIT1NFT05HIENFT05HQ0hJRVVNU1NBTkdDSUVVQztMbzswO0w7PGNvbXBhdD4gMTE1MCAxMTUwOzs7O047Ozs7OworMTE1MjtIQU5HVUwgQ0hPU0VPTkcgQ0hJRVVDSC1LSElFVUtIO0xvOzA7TDs8Y29tcGF0PiAxMTBFIDExMEY7Ozs7Tjs7Ozs7CisxMTUzO0hBTkdVTCBDSE9TRU9ORyBDSElFVUNILUhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMTBFIDExMTI7Ozs7Tjs7Ozs7CisxMTU0O0hBTkdVTCBDSE9TRU9ORyBDSElUVUVVTUNISUVVQ0g7TG87MDtMOzs7OztOOzs7OzsKKzExNTU7SEFOR1VMIENIT1NFT05HIENFT05HQ0hJRVVNQ0hJRVVDSDtMbzswO0w7Ozs7O047Ozs7OworMTE1NjtIQU5HVUwgQ0hPU0VPTkcgUEhJRVVQSC1QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTExMSAxMTA3Ozs7O047Ozs7OworMTE1NztIQU5HVUwgQ0hPU0VPTkcgS0FQWUVPVU5QSElFVVBIO0xvOzA7TDs8Y29tcGF0PiAxMTExIDExMEI7Ozs7Tjs7Ozs7CisxMTU4O0hBTkdVTCBDSE9TRU9ORyBTU0FOR0hJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMTEyIDExMTI7Ozs7Tjs7Ozs7CisxMTU5O0hBTkdVTCBDSE9TRU9ORyBZRU9SSU5ISUVVSDtMbzswO0w7Ozs7O047Ozs7OworMTE1RjtIQU5HVUwgQ0hPU0VPTkcgRklMTEVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTYwO0hBTkdVTCBKVU5HU0VPTkcgRklMTEVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTYxO0hBTkdVTCBKVU5HU0VPTkcgQTtMbzswO0w7Ozs7O047Ozs7OworMTE2MjtIQU5HVUwgSlVOR1NFT05HIEFFO0xvOzA7TDs8Y29tcGF0PiAxMTYxIDExNzU7Ozs7Tjs7Ozs7CisxMTYzO0hBTkdVTCBKVU5HU0VPTkcgWUE7TG87MDtMOzs7OztOOzs7OzsKKzExNjQ7SEFOR1VMIEpVTkdTRU9ORyBZQUU7TG87MDtMOzxjb21wYXQ+IDExNjMgMTE3NTs7OztOOzs7OzsKKzExNjU7SEFOR1VMIEpVTkdTRU9ORyBFTztMbzswO0w7Ozs7O047Ozs7OworMTE2NjtIQU5HVUwgSlVOR1NFT05HIEU7TG87MDtMOzxjb21wYXQ+IDExNjUgMTE3NTs7OztOOzs7OzsKKzExNjc7SEFOR1VMIEpVTkdTRU9ORyBZRU87TG87MDtMOzs7OztOOzs7OzsKKzExNjg7SEFOR1VMIEpVTkdTRU9ORyBZRTtMbzswO0w7PGNvbXBhdD4gMTE2NyAxMTc1Ozs7O047Ozs7OworMTE2OTtIQU5HVUwgSlVOR1NFT05HIE87TG87MDtMOzs7OztOOzs7OzsKKzExNkE7SEFOR1VMIEpVTkdTRU9ORyBXQTtMbzswO0w7PGNvbXBhdD4gMTE2OSAxMTYxOzs7O047Ozs7OworMTE2QjtIQU5HVUwgSlVOR1NFT05HIFdBRTtMbzswO0w7PGNvbXBhdD4gMTE2OSAxMTYxIDExNzU7Ozs7Tjs7Ozs7CisxMTZDO0hBTkdVTCBKVU5HU0VPTkcgT0U7TG87MDtMOzxjb21wYXQ+IDExNjkgMTE3NTs7OztOOzs7OzsKKzExNkQ7SEFOR1VMIEpVTkdTRU9ORyBZTztMbzswO0w7Ozs7O047Ozs7OworMTE2RTtIQU5HVUwgSlVOR1NFT05HIFU7TG87MDtMOzs7OztOOzs7OzsKKzExNkY7SEFOR1VMIEpVTkdTRU9ORyBXRU87TG87MDtMOzxjb21wYXQ+IDExNkUgMTE2NTs7OztOOzs7OzsKKzExNzA7SEFOR1VMIEpVTkdTRU9ORyBXRTtMbzswO0w7PGNvbXBhdD4gMTE2RSAxMTY1IDExNzU7Ozs7Tjs7Ozs7CisxMTcxO0hBTkdVTCBKVU5HU0VPTkcgV0k7TG87MDtMOzxjb21wYXQ+IDExNkUgMTE3NTs7OztOOzs7OzsKKzExNzI7SEFOR1VMIEpVTkdTRU9ORyBZVTtMbzswO0w7Ozs7O047Ozs7OworMTE3MztIQU5HVUwgSlVOR1NFT05HIEVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTc0O0hBTkdVTCBKVU5HU0VPTkcgWUk7TG87MDtMOzxjb21wYXQ+IDExNzMgMTE3NTs7OztOOzs7OzsKKzExNzU7SEFOR1VMIEpVTkdTRU9ORyBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTc2O0hBTkdVTCBKVU5HU0VPTkcgQS1PO0xvOzA7TDs8Y29tcGF0PiAxMTYxIDExNjk7Ozs7Tjs7Ozs7CisxMTc3O0hBTkdVTCBKVU5HU0VPTkcgQS1VO0xvOzA7TDs8Y29tcGF0PiAxMTYxIDExNkU7Ozs7Tjs7Ozs7CisxMTc4O0hBTkdVTCBKVU5HU0VPTkcgWUEtTztMbzswO0w7PGNvbXBhdD4gMTE2MyAxMTY5Ozs7O047Ozs7OworMTE3OTtIQU5HVUwgSlVOR1NFT05HIFlBLVlPO0xvOzA7TDs8Y29tcGF0PiAxMTYzIDExNkQ7Ozs7Tjs7Ozs7CisxMTdBO0hBTkdVTCBKVU5HU0VPTkcgRU8tTztMbzswO0w7PGNvbXBhdD4gMTE2NSAxMTY5Ozs7O047Ozs7OworMTE3QjtIQU5HVUwgSlVOR1NFT05HIEVPLVU7TG87MDtMOzxjb21wYXQ+IDExNjUgMTE2RTs7OztOOzs7OzsKKzExN0M7SEFOR1VMIEpVTkdTRU9ORyBFTy1FVTtMbzswO0w7PGNvbXBhdD4gMTE2NSAxMTczOzs7O047Ozs7OworMTE3RDtIQU5HVUwgSlVOR1NFT05HIFlFTy1PO0xvOzA7TDs8Y29tcGF0PiAxMTY3IDExNjk7Ozs7Tjs7Ozs7CisxMTdFO0hBTkdVTCBKVU5HU0VPTkcgWUVPLVU7TG87MDtMOzxjb21wYXQ+IDExNjcgMTE2RTs7OztOOzs7OzsKKzExN0Y7SEFOR1VMIEpVTkdTRU9ORyBPLUVPO0xvOzA7TDs8Y29tcGF0PiAxMTY5IDExNjU7Ozs7Tjs7Ozs7CisxMTgwO0hBTkdVTCBKVU5HU0VPTkcgTy1FO0xvOzA7TDs8Y29tcGF0PiAxMTY5IDExNjY7Ozs7Tjs7Ozs7CisxMTgxO0hBTkdVTCBKVU5HU0VPTkcgTy1ZRTtMbzswO0w7PGNvbXBhdD4gMTE2OSAxMTY4Ozs7O047Ozs7OworMTE4MjtIQU5HVUwgSlVOR1NFT05HIE8tTztMbzswO0w7PGNvbXBhdD4gMTE2OSAxMTY5Ozs7O047Ozs7OworMTE4MztIQU5HVUwgSlVOR1NFT05HIE8tVTtMbzswO0w7PGNvbXBhdD4gMTE2OSAxMTZFOzs7O047Ozs7OworMTE4NDtIQU5HVUwgSlVOR1NFT05HIFlPLVlBO0xvOzA7TDs8Y29tcGF0PiAxMTZEIDExNjM7Ozs7Tjs7Ozs7CisxMTg1O0hBTkdVTCBKVU5HU0VPTkcgWU8tWUFFO0xvOzA7TDs8Y29tcGF0PiAxMTZEIDExNjQ7Ozs7Tjs7Ozs7CisxMTg2O0hBTkdVTCBKVU5HU0VPTkcgWU8tWUVPO0xvOzA7TDs8Y29tcGF0PiAxMTZEIDExNjc7Ozs7Tjs7Ozs7CisxMTg3O0hBTkdVTCBKVU5HU0VPTkcgWU8tTztMbzswO0w7PGNvbXBhdD4gMTE2RCAxMTY5Ozs7O047Ozs7OworMTE4ODtIQU5HVUwgSlVOR1NFT05HIFlPLUk7TG87MDtMOzxjb21wYXQ+IDExNkQgMTE3NTs7OztOOzs7OzsKKzExODk7SEFOR1VMIEpVTkdTRU9ORyBVLUE7TG87MDtMOzxjb21wYXQ+IDExNkUgMTE2MTs7OztOOzs7OzsKKzExOEE7SEFOR1VMIEpVTkdTRU9ORyBVLUFFO0xvOzA7TDs8Y29tcGF0PiAxMTZFIDExNjI7Ozs7Tjs7Ozs7CisxMThCO0hBTkdVTCBKVU5HU0VPTkcgVS1FTy1FVTtMbzswO0w7PGNvbXBhdD4gMTE2RSAxMTY1IDExNzM7Ozs7Tjs7Ozs7CisxMThDO0hBTkdVTCBKVU5HU0VPTkcgVS1ZRTtMbzswO0w7PGNvbXBhdD4gMTE2RSAxMTY4Ozs7O047Ozs7OworMTE4RDtIQU5HVUwgSlVOR1NFT05HIFUtVTtMbzswO0w7PGNvbXBhdD4gMTE2RSAxMTZFOzs7O047Ozs7OworMTE4RTtIQU5HVUwgSlVOR1NFT05HIFlVLUE7TG87MDtMOzxjb21wYXQ+IDExNzIgMTE2MTs7OztOOzs7OzsKKzExOEY7SEFOR1VMIEpVTkdTRU9ORyBZVS1FTztMbzswO0w7PGNvbXBhdD4gMTE3MiAxMTY1Ozs7O047Ozs7OworMTE5MDtIQU5HVUwgSlVOR1NFT05HIFlVLUU7TG87MDtMOzxjb21wYXQ+IDExNzIgMTE2Njs7OztOOzs7OzsKKzExOTE7SEFOR1VMIEpVTkdTRU9ORyBZVS1ZRU87TG87MDtMOzxjb21wYXQ+IDExNzIgMTE2Nzs7OztOOzs7OzsKKzExOTI7SEFOR1VMIEpVTkdTRU9ORyBZVS1ZRTtMbzswO0w7PGNvbXBhdD4gMTE3MiAxMTY4Ozs7O047Ozs7OworMTE5MztIQU5HVUwgSlVOR1NFT05HIFlVLVU7TG87MDtMOzxjb21wYXQ+IDExNzIgMTE2RTs7OztOOzs7OzsKKzExOTQ7SEFOR1VMIEpVTkdTRU9ORyBZVS1JO0xvOzA7TDs8Y29tcGF0PiAxMTcyIDExNzU7Ozs7Tjs7Ozs7CisxMTk1O0hBTkdVTCBKVU5HU0VPTkcgRVUtVTtMbzswO0w7PGNvbXBhdD4gMTE3MyAxMTZFOzs7O047Ozs7OworMTE5NjtIQU5HVUwgSlVOR1NFT05HIEVVLUVVO0xvOzA7TDs8Y29tcGF0PiAxMTczIDExNzM7Ozs7Tjs7Ozs7CisxMTk3O0hBTkdVTCBKVU5HU0VPTkcgWUktVTtMbzswO0w7PGNvbXBhdD4gMTE3NCAxMTZFOzs7O047Ozs7OworMTE5ODtIQU5HVUwgSlVOR1NFT05HIEktQTtMbzswO0w7PGNvbXBhdD4gMTE3NSAxMTYxOzs7O047Ozs7OworMTE5OTtIQU5HVUwgSlVOR1NFT05HIEktWUE7TG87MDtMOzxjb21wYXQ+IDExNzUgMTE2Mzs7OztOOzs7OzsKKzExOUE7SEFOR1VMIEpVTkdTRU9ORyBJLU87TG87MDtMOzxjb21wYXQ+IDExNzUgMTE2OTs7OztOOzs7OzsKKzExOUI7SEFOR1VMIEpVTkdTRU9ORyBJLVU7TG87MDtMOzxjb21wYXQ+IDExNzUgMTE2RTs7OztOOzs7OzsKKzExOUM7SEFOR1VMIEpVTkdTRU9ORyBJLUVVO0xvOzA7TDs8Y29tcGF0PiAxMTc1IDExNzM7Ozs7Tjs7Ozs7CisxMTlEO0hBTkdVTCBKVU5HU0VPTkcgSS1BUkFFQTtMbzswO0w7PGNvbXBhdD4gMTE3NSAxMTlFOzs7O047Ozs7OworMTE5RTtIQU5HVUwgSlVOR1NFT05HIEFSQUVBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTlGO0hBTkdVTCBKVU5HU0VPTkcgQVJBRUEtRU87TG87MDtMOzxjb21wYXQ+IDExOUUgMTE2NTs7OztOOzs7OzsKKzExQTA7SEFOR1VMIEpVTkdTRU9ORyBBUkFFQS1VO0xvOzA7TDs8Y29tcGF0PiAxMTlFIDExNkU7Ozs7Tjs7Ozs7CisxMUExO0hBTkdVTCBKVU5HU0VPTkcgQVJBRUEtSTtMbzswO0w7PGNvbXBhdD4gMTE5RSAxMTc1Ozs7O047Ozs7OworMTFBMjtIQU5HVUwgSlVOR1NFT05HIFNTQU5HQVJBRUE7TG87MDtMOzxjb21wYXQ+IDExOUUgMTE5RTs7OztOOzs7OzsKKzExQTg7SEFOR1VMIEpPTkdTRU9ORyBLSVlFT0s7TG87MDtMOzs7OztOOzs7OzsKKzExQTk7SEFOR1VMIEpPTkdTRU9ORyBTU0FOR0tJWUVPSztMbzswO0w7PGNvbXBhdD4gMTFBOCAxMUE4Ozs7O047Ozs7OworMTFBQTtIQU5HVUwgSk9OR1NFT05HIEtJWUVPSy1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUE4IDExQkE7Ozs7Tjs7Ozs7CisxMUFCO0hBTkdVTCBKT05HU0VPTkcgTklFVU47TG87MDtMOzs7OztOOzs7OzsKKzExQUM7SEFOR1VMIEpPTkdTRU9ORyBOSUVVTi1DSUVVQztMbzswO0w7PGNvbXBhdD4gMTFBQiAxMUJEOzs7O047Ozs7OworMTFBRDtIQU5HVUwgSk9OR1NFT05HIE5JRVVOLUhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMUFCIDExQzI7Ozs7Tjs7Ozs7CisxMUFFO0hBTkdVTCBKT05HU0VPTkcgVElLRVVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUFGO0hBTkdVTCBKT05HU0VPTkcgUklFVUw7TG87MDtMOzs7OztOOzs7OzsKKzExQjA7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExQUYgMTFBODs7OztOOzs7OzsKKzExQjE7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1NSUVVTTtMbzswO0w7PGNvbXBhdD4gMTFBRiAxMUI3Ozs7O047Ozs7OworMTFCMjtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQjg7Ozs7Tjs7Ozs7CisxMUIzO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtU0lPUztMbzswO0w7PGNvbXBhdD4gMTFBRiAxMUJBOzs7O047Ozs7OworMTFCNDtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVRISUVVVEg7TG87MDtMOzxjb21wYXQ+IDExQUYgMTFDMDs7OztOOzs7OzsKKzExQjU7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1QSElFVVBIO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQzE7Ozs7Tjs7Ozs7CisxMUI2O0hBTkdVTCBKT05HU0VPTkcgUklFVUwtSElFVUg7TG87MDtMOzxjb21wYXQ+IDExQUYgMTFDMjs7OztOOzs7OzsKKzExQjc7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTTtMbzswO0w7Ozs7O047Ozs7OworMTFCODtIQU5HVUwgSk9OR1NFT05HIFBJRVVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUI5O0hBTkdVTCBKT05HU0VPTkcgUElFVVAtU0lPUztMbzswO0w7PGNvbXBhdD4gMTFCOCAxMUJBOzs7O047Ozs7OworMTFCQTtIQU5HVUwgSk9OR1NFT05HIFNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExQkI7SEFOR1VMIEpPTkdTRU9ORyBTU0FOR1NJT1M7TG87MDtMOzxjb21wYXQ+IDExQkEgMTFCQTs7OztOOzs7OzsKKzExQkM7SEFOR1VMIEpPTkdTRU9ORyBJRVVORztMbzswO0w7Ozs7O047Ozs7OworMTFCRDtIQU5HVUwgSk9OR1NFT05HIENJRVVDO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUJFO0hBTkdVTCBKT05HU0VPTkcgQ0hJRVVDSDtMbzswO0w7Ozs7O047Ozs7OworMTFCRjtIQU5HVUwgSk9OR1NFT05HIEtISUVVS0g7TG87MDtMOzs7OztOOzs7OzsKKzExQzA7SEFOR1VMIEpPTkdTRU9ORyBUSElFVVRIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUMxO0hBTkdVTCBKT05HU0VPTkcgUEhJRVVQSDtMbzswO0w7Ozs7O047Ozs7OworMTFDMjtIQU5HVUwgSk9OR1NFT05HIEhJRVVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUMzO0hBTkdVTCBKT05HU0VPTkcgS0lZRU9LLVJJRVVMO0xvOzA7TDs8Y29tcGF0PiAxMUE4IDExQUY7Ozs7Tjs7Ozs7CisxMUM0O0hBTkdVTCBKT05HU0VPTkcgS0lZRU9LLVNJT1MtS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMUE4IDExQkEgMTFBODs7OztOOzs7OzsKKzExQzU7SEFOR1VMIEpPTkdTRU9ORyBOSUVVTi1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExQUIgMTFBODs7OztOOzs7OzsKKzExQzY7SEFOR1VMIEpPTkdTRU9ORyBOSUVVTi1USUtFVVQ7TG87MDtMOzxjb21wYXQ+IDExQUIgMTFBRTs7OztOOzs7OzsKKzExQzc7SEFOR1VMIEpPTkdTRU9ORyBOSUVVTi1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUFCIDExQkE7Ozs7Tjs7Ozs7CisxMUM4O0hBTkdVTCBKT05HU0VPTkcgTklFVU4tUEFOU0lPUztMbzswO0w7PGNvbXBhdD4gMTFBQiAxMUVCOzs7O047Ozs7OworMTFDOTtIQU5HVUwgSk9OR1NFT05HIE5JRVVOLVRISUVVVEg7TG87MDtMOzxjb21wYXQ+IDExQUIgMTFDMDs7OztOOzs7OzsKKzExQ0E7SEFOR1VMIEpPTkdTRU9ORyBUSUtFVVQtS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMUFFIDExQTg7Ozs7Tjs7Ozs7CisxMUNCO0hBTkdVTCBKT05HU0VPTkcgVElLRVVULVJJRVVMO0xvOzA7TDs8Y29tcGF0PiAxMUFFIDExQUY7Ozs7Tjs7Ozs7CisxMUNDO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtS0lZRU9LLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExQUYgMTFBOCAxMUJBOzs7O047Ozs7OworMTFDRDtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLU5JRVVOO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQUI7Ozs7Tjs7Ozs7CisxMUNFO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQUU7Ozs7Tjs7Ozs7CisxMUNGO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtVElLRVVULUhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQUUgMTFDMjs7OztOOzs7OzsKKzExRDA7SEFOR1VMIEpPTkdTRU9ORyBTU0FOR1JJRVVMO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQUY7Ozs7Tjs7Ozs7CisxMUQxO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtTUlFVU0tS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQjcgMTFBODs7OztOOzs7OzsKKzExRDI7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1NSUVVTS1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQjcgMTFCQTs7OztOOzs7OzsKKzExRDM7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1QSUVVUC1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQjggMTFCQTs7OztOOzs7OzsKKzExRDQ7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1QSUVVUC1ISUVVSDtMbzswO0w7PGNvbXBhdD4gMTFBRiAxMUI4IDExQzI7Ozs7Tjs7Ozs7CisxMUQ1O0hBTkdVTCBKT05HU0VPTkcgUklFVUwtS0FQWUVPVU5QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTFBRiAxMUI4IDExQkM7Ozs7Tjs7Ozs7CisxMUQ2O0hBTkdVTCBKT05HU0VPTkcgUklFVUwtU1NBTkdTSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExQkEgMTFCQTs7OztOOzs7OzsKKzExRDc7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1QQU5TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExRUI7Ozs7Tjs7Ozs7CisxMUQ4O0hBTkdVTCBKT05HU0VPTkcgUklFVUwtS0hJRVVLSDtMbzswO0w7PGNvbXBhdD4gMTFBRiAxMUJGOzs7O047Ozs7OworMTFEOTtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVlFT1JJTkhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMUFGIDExRjk7Ozs7Tjs7Ozs7CisxMURBO0hBTkdVTCBKT05HU0VPTkcgTUlFVU0tS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMUI3IDExQTg7Ozs7Tjs7Ozs7CisxMURCO0hBTkdVTCBKT05HU0VPTkcgTUlFVU0tUklFVUw7TG87MDtMOzxjb21wYXQ+IDExQjcgMTFBRjs7OztOOzs7OzsKKzExREM7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTFCNyAxMUI4Ozs7O047Ozs7OworMTFERDtIQU5HVUwgSk9OR1NFT05HIE1JRVVNLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExQjcgMTFCQTs7OztOOzs7OzsKKzExREU7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1TU0FOR1NJT1M7TG87MDtMOzxjb21wYXQ+IDExQjcgMTFCQSAxMUJBOzs7O047Ozs7OworMTFERjtIQU5HVUwgSk9OR1NFT05HIE1JRVVNLVBBTlNJT1M7TG87MDtMOzxjb21wYXQ+IDExQjcgMTFFQjs7OztOOzs7OzsKKzExRTA7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1DSElFVUNIO0xvOzA7TDs8Y29tcGF0PiAxMUI3IDExQkU7Ozs7Tjs7Ozs7CisxMUUxO0hBTkdVTCBKT05HU0VPTkcgTUlFVU0tSElFVUg7TG87MDtMOzxjb21wYXQ+IDExQjcgMTFDMjs7OztOOzs7OzsKKzExRTI7SEFOR1VMIEpPTkdTRU9ORyBLQVBZRU9VTk1JRVVNO0xvOzA7TDs8Y29tcGF0PiAxMUI3IDExQkM7Ozs7Tjs7Ozs7CisxMUUzO0hBTkdVTCBKT05HU0VPTkcgUElFVVAtUklFVUw7TG87MDtMOzxjb21wYXQ+IDExQjggMTFBRjs7OztOOzs7OzsKKzExRTQ7SEFOR1VMIEpPTkdTRU9ORyBQSUVVUC1QSElFVVBIO0xvOzA7TDs8Y29tcGF0PiAxMUI4IDExQzE7Ozs7Tjs7Ozs7CisxMUU1O0hBTkdVTCBKT05HU0VPTkcgUElFVVAtSElFVUg7TG87MDtMOzxjb21wYXQ+IDExQjggMTFDMjs7OztOOzs7OzsKKzExRTY7SEFOR1VMIEpPTkdTRU9ORyBLQVBZRU9VTlBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMUI4IDExQkM7Ozs7Tjs7Ozs7CisxMUU3O0hBTkdVTCBKT05HU0VPTkcgU0lPUy1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExQkEgMTFBODs7OztOOzs7OzsKKzExRTg7SEFOR1VMIEpPTkdTRU9ORyBTSU9TLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTFCQSAxMUFFOzs7O047Ozs7OworMTFFOTtIQU5HVUwgSk9OR1NFT05HIFNJT1MtUklFVUw7TG87MDtMOzxjb21wYXQ+IDExQkEgMTFBRjs7OztOOzs7OzsKKzExRUE7SEFOR1VMIEpPTkdTRU9ORyBTSU9TLVBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMUJBIDExQjg7Ozs7Tjs7Ozs7CisxMUVCO0hBTkdVTCBKT05HU0VPTkcgUEFOU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTFFQztIQU5HVUwgSk9OR1NFT05HIElFVU5HLUtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTFCQyAxMUE4Ozs7O047Ozs7OworMTFFRDtIQU5HVUwgSk9OR1NFT05HIElFVU5HLVNTQU5HS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMUJDIDExQTggMTFBODs7OztOOzs7OzsKKzExRUU7SEFOR1VMIEpPTkdTRU9ORyBTU0FOR0lFVU5HO0xvOzA7TDs8Y29tcGF0PiAxMUJDIDExQkM7Ozs7Tjs7Ozs7CisxMUVGO0hBTkdVTCBKT05HU0VPTkcgSUVVTkctS0hJRVVLSDtMbzswO0w7PGNvbXBhdD4gMTFCQyAxMUJGOzs7O047Ozs7OworMTFGMDtIQU5HVUwgSk9OR1NFT05HIFlFU0lFVU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUYxO0hBTkdVTCBKT05HU0VPTkcgWUVTSUVVTkctU0lPUztMbzswO0w7PGNvbXBhdD4gMTFGMCAxMUJBOzs7O047Ozs7OworMTFGMjtIQU5HVUwgSk9OR1NFT05HIFlFU0lFVU5HLVBBTlNJT1M7TG87MDtMOzxjb21wYXQ+IDExRjAgMTFFQjs7OztOOzs7OzsKKzExRjM7SEFOR1VMIEpPTkdTRU9ORyBQSElFVVBILVBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMUMxIDExQjg7Ozs7Tjs7Ozs7CisxMUY0O0hBTkdVTCBKT05HU0VPTkcgS0FQWUVPVU5QSElFVVBIO0xvOzA7TDs8Y29tcGF0PiAxMUMxIDExQkM7Ozs7Tjs7Ozs7CisxMUY1O0hBTkdVTCBKT05HU0VPTkcgSElFVUgtTklFVU47TG87MDtMOzxjb21wYXQ+IDExQzIgMTFBQjs7OztOOzs7OzsKKzExRjY7SEFOR1VMIEpPTkdTRU9ORyBISUVVSC1SSUVVTDtMbzswO0w7PGNvbXBhdD4gMTFDMiAxMUFGOzs7O047Ozs7OworMTFGNztIQU5HVUwgSk9OR1NFT05HIEhJRVVILU1JRVVNO0xvOzA7TDs8Y29tcGF0PiAxMUMyIDExQjc7Ozs7Tjs7Ozs7CisxMUY4O0hBTkdVTCBKT05HU0VPTkcgSElFVUgtUElFVVA7TG87MDtMOzxjb21wYXQ+IDExQzIgMTFCODs7OztOOzs7OzsKKzExRjk7SEFOR1VMIEpPTkdTRU9ORyBZRU9SSU5ISUVVSDtMbzswO0w7Ozs7O047Ozs7OworMUUwMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBCRUxPVztMdTswO0w7MDA0MSAwMzI1Ozs7O047Ozs7MUUwMTsKKzFFMDE7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEJFTE9XO0xsOzA7TDswMDYxIDAzMjU7Ozs7Tjs7OzFFMDA7OzFFMDAKKzFFMDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQiBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0MiAwMzA3Ozs7O047Ozs7MUUwMzsKKzFFMDM7TEFUSU4gU01BTEwgTEVUVEVSIEIgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNjIgMDMwNzs7OztOOzs7MUUwMjs7MUUwMgorMUUwNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDQyIDAzMjM7Ozs7Tjs7OzsxRTA1OworMUUwNTtMQVRJTiBTTUFMTCBMRVRURVIgQiBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA2MiAwMzIzOzs7O047OzsxRTA0OzsxRTA0CisxRTA2O0xBVElOIENBUElUQUwgTEVUVEVSIEIgV0lUSCBMSU5FIEJFTE9XO0x1OzA7TDswMDQyIDAzMzE7Ozs7Tjs7OzsxRTA3OworMUUwNztMQVRJTiBTTUFMTCBMRVRURVIgQiBXSVRIIExJTkUgQkVMT1c7TGw7MDtMOzAwNjIgMDMzMTs7OztOOzs7MUUwNjs7MUUwNgorMUUwODtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSBBTkQgQUNVVEU7THU7MDtMOzAwQzcgMDMwMTs7OztOOzs7OzFFMDk7CisxRTA5O0xBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQSBBTkQgQUNVVEU7TGw7MDtMOzAwRTcgMDMwMTs7OztOOzs7MUUwODs7MUUwOAorMUUwQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDQ0IDAzMDc7Ozs7Tjs7OzsxRTBCOworMUUwQjtMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2NCAwMzA3Ozs7O047OzsxRTBBOzsxRTBBCisxRTBDO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNDQgMDMyMzs7OztOOzs7OzFFMEQ7CisxRTBEO0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDY0IDAzMjM7Ozs7Tjs7OzFFMEM7OzFFMEMKKzFFMEU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIExJTkUgQkVMT1c7THU7MDtMOzAwNDQgMDMzMTs7OztOOzs7OzFFMEY7CisxRTBGO0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA2NCAwMzMxOzs7O047OzsxRTBFOzsxRTBFCisxRTEwO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBDRURJTExBO0x1OzA7TDswMDQ0IDAzMjc7Ozs7Tjs7OzsxRTExOworMUUxMTtMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIENFRElMTEE7TGw7MDtMOzAwNjQgMDMyNzs7OztOOzs7MUUxMDs7MUUxMAorMUUxMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMdTswO0w7MDA0NCAwMzJEOzs7O047Ozs7MUUxMzsKKzFFMTM7TEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0xsOzA7TDswMDY0IDAzMkQ7Ozs7Tjs7OzFFMTI7OzFFMTIKKzFFMTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE1BQ1JPTiBBTkQgR1JBVkU7THU7MDtMOzAxMTIgMDMwMDs7OztOOzs7OzFFMTU7CisxRTE1O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggTUFDUk9OIEFORCBHUkFWRTtMbDswO0w7MDExMyAwMzAwOzs7O047OzsxRTE0OzsxRTE0CisxRTE2O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBNQUNST04gQU5EIEFDVVRFO0x1OzA7TDswMTEyIDAzMDE7Ozs7Tjs7OzsxRTE3OworMUUxNztMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE1BQ1JPTiBBTkQgQUNVVEU7TGw7MDtMOzAxMTMgMDMwMTs7OztOOzs7MUUxNjs7MUUxNgorMUUxODtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMdTswO0w7MDA0NSAwMzJEOzs7O047Ozs7MUUxOTsKKzFFMTk7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0xsOzA7TDswMDY1IDAzMkQ7Ozs7Tjs7OzFFMTg7OzFFMTgKKzFFMUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIFRJTERFIEJFTE9XO0x1OzA7TDswMDQ1IDAzMzA7Ozs7Tjs7OzsxRTFCOworMUUxQjtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIFRJTERFIEJFTE9XO0xsOzA7TDswMDY1IDAzMzA7Ozs7Tjs7OzFFMUE7OzFFMUEKKzFFMUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENFRElMTEEgQU5EIEJSRVZFO0x1OzA7TDswMTE0IDAzMjc7Ozs7Tjs7OzsxRTFEOworMUUxRDtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENFRElMTEEgQU5EIEJSRVZFO0xsOzA7TDswMTE1IDAzMjc7Ozs7Tjs7OzFFMUM7OzFFMUMKKzFFMUU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRiBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0NiAwMzA3Ozs7O047Ozs7MUUxRjsKKzFFMUY7TEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNjYgMDMwNzs7OztOOzs7MUUxRTs7MUUxRQorMUUyMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggTUFDUk9OO0x1OzA7TDswMDQ3IDAzMDQ7Ozs7Tjs7OzsxRTIxOworMUUyMTtMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIE1BQ1JPTjtMbDswO0w7MDA2NyAwMzA0Ozs7O047OzsxRTIwOzsxRTIwCisxRTIyO0xBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNDggMDMwNzs7OztOOzs7OzFFMjM7CisxRTIzO0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDY4IDAzMDc7Ozs7Tjs7OzFFMjI7OzFFMjIKKzFFMjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0OCAwMzIzOzs7O047Ozs7MUUyNTsKKzFFMjU7TEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNjggMDMyMzs7OztOOzs7MUUyNDs7MUUyNAorMUUyNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDQ4IDAzMDg7Ozs7Tjs7OzsxRTI3OworMUUyNztMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA2OCAwMzA4Ozs7O047OzsxRTI2OzsxRTI2CisxRTI4O0xBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBDRURJTExBO0x1OzA7TDswMDQ4IDAzMjc7Ozs7Tjs7OzsxRTI5OworMUUyOTtMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIENFRElMTEE7TGw7MDtMOzAwNjggMDMyNzs7OztOOzs7MUUyODs7MUUyOAorMUUyQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggQlJFVkUgQkVMT1c7THU7MDtMOzAwNDggMDMyRTs7OztOOzs7OzFFMkI7CisxRTJCO0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggQlJFVkUgQkVMT1c7TGw7MDtMOzAwNjggMDMyRTs7OztOOzs7MUUyQTs7MUUyQQorMUUyQztMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggVElMREUgQkVMT1c7THU7MDtMOzAwNDkgMDMzMDs7OztOOzs7OzFFMkQ7CisxRTJEO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggVElMREUgQkVMT1c7TGw7MDtMOzAwNjkgMDMzMDs7OztOOzs7MUUyQzs7MUUyQworMUUyRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTIEFORCBBQ1VURTtMdTswO0w7MDBDRiAwMzAxOzs7O047Ozs7MUUyRjsKKzFFMkY7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMgQU5EIEFDVVRFO0xsOzA7TDswMEVGIDAzMDE7Ozs7Tjs7OzFFMkU7OzFFMkUKKzFFMzA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIEFDVVRFO0x1OzA7TDswMDRCIDAzMDE7Ozs7Tjs7OzsxRTMxOworMUUzMTtMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIEFDVVRFO0xsOzA7TDswMDZCIDAzMDE7Ozs7Tjs7OzFFMzA7OzFFMzAKKzFFMzI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0QiAwMzIzOzs7O047Ozs7MUUzMzsKKzFFMzM7TEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNkIgMDMyMzs7OztOOzs7MUUzMjs7MUUzMgorMUUzNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggTElORSBCRUxPVztMdTswO0w7MDA0QiAwMzMxOzs7O047Ozs7MUUzNTsKKzFFMzU7TEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBMSU5FIEJFTE9XO0xsOzA7TDswMDZCIDAzMzE7Ozs7Tjs7OzFFMzQ7OzFFMzQKKzFFMzY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0QyAwMzIzOzs7O047Ozs7MUUzNzsKKzFFMzc7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNkMgMDMyMzs7OztOOzs7MUUzNjs7MUUzNgorMUUzODtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggRE9UIEJFTE9XIEFORCBNQUNST047THU7MDtMOzFFMzYgMDMwNDs7OztOOzs7OzFFMzk7CisxRTM5O0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggRE9UIEJFTE9XIEFORCBNQUNST047TGw7MDtMOzFFMzcgMDMwNDs7OztOOzs7MUUzODs7MUUzOAorMUUzQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggTElORSBCRUxPVztMdTswO0w7MDA0QyAwMzMxOzs7O047Ozs7MUUzQjsKKzFFM0I7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBMSU5FIEJFTE9XO0xsOzA7TDswMDZDIDAzMzE7Ozs7Tjs7OzFFM0E7OzFFM0EKKzFFM0M7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENJUkNVTUZMRVggQkVMT1c7THU7MDtMOzAwNEMgMDMyRDs7OztOOzs7OzFFM0Q7CisxRTNEO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMbDswO0w7MDA2QyAwMzJEOzs7O047OzsxRTNDOzsxRTNDCisxRTNFO0xBVElOIENBUElUQUwgTEVUVEVSIE0gV0lUSCBBQ1VURTtMdTswO0w7MDA0RCAwMzAxOzs7O047Ozs7MUUzRjsKKzFFM0Y7TEFUSU4gU01BTEwgTEVUVEVSIE0gV0lUSCBBQ1VURTtMbDswO0w7MDA2RCAwMzAxOzs7O047OzsxRTNFOzsxRTNFCisxRTQwO0xBVElOIENBUElUQUwgTEVUVEVSIE0gV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNEQgMDMwNzs7OztOOzs7OzFFNDE7CisxRTQxO0xBVElOIFNNQUxMIExFVFRFUiBNIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDZEIDAzMDc7Ozs7Tjs7OzFFNDA7OzFFNDAKKzFFNDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTSBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0RCAwMzIzOzs7O047Ozs7MUU0MzsKKzFFNDM7TEFUSU4gU01BTEwgTEVUVEVSIE0gV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNkQgMDMyMzs7OztOOzs7MUU0Mjs7MUU0MgorMUU0NDtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDRFIDAzMDc7Ozs7Tjs7OzsxRTQ1OworMUU0NTtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2RSAwMzA3Ozs7O047OzsxRTQ0OzsxRTQ0CisxRTQ2O0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNEUgMDMyMzs7OztOOzs7OzFFNDc7CisxRTQ3O0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDZFIDAzMjM7Ozs7Tjs7OzFFNDY7OzFFNDYKKzFFNDg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIExJTkUgQkVMT1c7THU7MDtMOzAwNEUgMDMzMTs7OztOOzs7OzFFNDk7CisxRTQ5O0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA2RSAwMzMxOzs7O047OzsxRTQ4OzsxRTQ4CisxRTRBO0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0x1OzA7TDswMDRFIDAzMkQ7Ozs7Tjs7OzsxRTRCOworMUU0QjtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENJUkNVTUZMRVggQkVMT1c7TGw7MDtMOzAwNkUgMDMyRDs7OztOOzs7MUU0QTs7MUU0QQorMUU0QztMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUgQU5EIEFDVVRFO0x1OzA7TDswMEQ1IDAzMDE7Ozs7Tjs7OzsxRTREOworMUU0RDtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFIEFORCBBQ1VURTtMbDswO0w7MDBGNSAwMzAxOzs7O047OzsxRTRDOzsxRTRDCisxRTRFO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERSBBTkQgRElBRVJFU0lTO0x1OzA7TDswMEQ1IDAzMDg7Ozs7Tjs7OzsxRTRGOworMUU0RjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFIEFORCBESUFFUkVTSVM7TGw7MDtMOzAwRjUgMDMwODs7OztOOzs7MUU0RTs7MUU0RQorMUU1MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTUFDUk9OIEFORCBHUkFWRTtMdTswO0w7MDE0QyAwMzAwOzs7O047Ozs7MUU1MTsKKzFFNTE7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBNQUNST04gQU5EIEdSQVZFO0xsOzA7TDswMTREIDAzMDA7Ozs7Tjs7OzFFNTA7OzFFNTAKKzFFNTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIE1BQ1JPTiBBTkQgQUNVVEU7THU7MDtMOzAxNEMgMDMwMTs7OztOOzs7OzFFNTM7CisxRTUzO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggTUFDUk9OIEFORCBBQ1VURTtMbDswO0w7MDE0RCAwMzAxOzs7O047OzsxRTUyOzsxRTUyCisxRTU0O0xBVElOIENBUElUQUwgTEVUVEVSIFAgV0lUSCBBQ1VURTtMdTswO0w7MDA1MCAwMzAxOzs7O047Ozs7MUU1NTsKKzFFNTU7TEFUSU4gU01BTEwgTEVUVEVSIFAgV0lUSCBBQ1VURTtMbDswO0w7MDA3MCAwMzAxOzs7O047OzsxRTU0OzsxRTU0CisxRTU2O0xBVElOIENBUElUQUwgTEVUVEVSIFAgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNTAgMDMwNzs7OztOOzs7OzFFNTc7CisxRTU3O0xBVElOIFNNQUxMIExFVFRFUiBQIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDcwIDAzMDc7Ozs7Tjs7OzFFNTY7OzFFNTYKKzFFNTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA1MiAwMzA3Ozs7O047Ozs7MUU1OTsKKzFFNTk7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNzIgMDMwNzs7OztOOzs7MUU1ODs7MUU1OAorMUU1QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDUyIDAzMjM7Ozs7Tjs7OzsxRTVCOworMUU1QjtMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA3MiAwMzIzOzs7O047OzsxRTVBOzsxRTVBCisxRTVDO0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBET1QgQkVMT1cgQU5EIE1BQ1JPTjtMdTswO0w7MUU1QSAwMzA0Ozs7O047Ozs7MUU1RDsKKzFFNUQ7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBET1QgQkVMT1cgQU5EIE1BQ1JPTjtMbDswO0w7MUU1QiAwMzA0Ozs7O047OzsxRTVDOzsxRTVDCisxRTVFO0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBMSU5FIEJFTE9XO0x1OzA7TDswMDUyIDAzMzE7Ozs7Tjs7OzsxRTVGOworMUU1RjtMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIExJTkUgQkVMT1c7TGw7MDtMOzAwNzIgMDMzMTs7OztOOzs7MUU1RTs7MUU1RQorMUU2MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDUzIDAzMDc7Ozs7Tjs7OzsxRTYxOworMUU2MTtMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA3MyAwMzA3Ozs7O047OzsxRTYwOzsxRTYwCisxRTYyO0xBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNTMgMDMyMzs7OztOOzs7OzFFNjM7CisxRTYzO0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDczIDAzMjM7Ozs7Tjs7OzFFNjI7OzFFNjIKKzFFNjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIEFDVVRFIEFORCBET1QgQUJPVkU7THU7MDtMOzAxNUEgMDMwNzs7OztOOzs7OzFFNjU7CisxRTY1O0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQUNVVEUgQU5EIERPVCBBQk9WRTtMbDswO0w7MDE1QiAwMzA3Ozs7O047OzsxRTY0OzsxRTY0CisxRTY2O0xBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTiBBTkQgRE9UIEFCT1ZFO0x1OzA7TDswMTYwIDAzMDc7Ozs7Tjs7OzsxRTY3OworMUU2NztMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OIEFORCBET1QgQUJPVkU7TGw7MDtMOzAxNjEgMDMwNzs7OztOOzs7MUU2Njs7MUU2NgorMUU2ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggRE9UIEJFTE9XIEFORCBET1QgQUJPVkU7THU7MDtMOzFFNjIgMDMwNzs7OztOOzs7OzFFNjk7CisxRTY5O0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggRE9UIEJFTE9XIEFORCBET1QgQUJPVkU7TGw7MDtMOzFFNjMgMDMwNzs7OztOOzs7MUU2ODs7MUU2OAorMUU2QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDU0IDAzMDc7Ozs7Tjs7OzsxRTZCOworMUU2QjtMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA3NCAwMzA3Ozs7O047OzsxRTZBOzsxRTZBCisxRTZDO0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNTQgMDMyMzs7OztOOzs7OzFFNkQ7CisxRTZEO0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDc0IDAzMjM7Ozs7Tjs7OzFFNkM7OzFFNkMKKzFFNkU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIExJTkUgQkVMT1c7THU7MDtMOzAwNTQgMDMzMTs7OztOOzs7OzFFNkY7CisxRTZGO0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA3NCAwMzMxOzs7O047OzsxRTZFOzsxRTZFCisxRTcwO0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0x1OzA7TDswMDU0IDAzMkQ7Ozs7Tjs7OzsxRTcxOworMUU3MTtMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIENJUkNVTUZMRVggQkVMT1c7TGw7MDtMOzAwNzQgMDMyRDs7OztOOzs7MUU3MDs7MUU3MAorMUU3MjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEJFTE9XO0x1OzA7TDswMDU1IDAzMjQ7Ozs7Tjs7OzsxRTczOworMUU3MztMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBCRUxPVztMbDswO0w7MDA3NSAwMzI0Ozs7O047OzsxRTcyOzsxRTcyCisxRTc0O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBUSUxERSBCRUxPVztMdTswO0w7MDA1NSAwMzMwOzs7O047Ozs7MUU3NTsKKzFFNzU7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBUSUxERSBCRUxPVztMbDswO0w7MDA3NSAwMzMwOzs7O047OzsxRTc0OzsxRTc0CisxRTc2O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0x1OzA7TDswMDU1IDAzMkQ7Ozs7Tjs7OzsxRTc3OworMUU3NztMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVggQkVMT1c7TGw7MDtMOzAwNzUgMDMyRDs7OztOOzs7MUU3Njs7MUU3NgorMUU3ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggVElMREUgQU5EIEFDVVRFO0x1OzA7TDswMTY4IDAzMDE7Ozs7Tjs7OzsxRTc5OworMUU3OTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIFRJTERFIEFORCBBQ1VURTtMbDswO0w7MDE2OSAwMzAxOzs7O047OzsxRTc4OzsxRTc4CisxRTdBO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST04gQU5EIERJQUVSRVNJUztMdTswO0w7MDE2QSAwMzA4Ozs7O047Ozs7MUU3QjsKKzFFN0I7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST04gQU5EIERJQUVSRVNJUztMbDswO0w7MDE2QiAwMzA4Ozs7O047OzsxRTdBOzsxRTdBCisxRTdDO0xBVElOIENBUElUQUwgTEVUVEVSIFYgV0lUSCBUSUxERTtMdTswO0w7MDA1NiAwMzAzOzs7O047Ozs7MUU3RDsKKzFFN0Q7TEFUSU4gU01BTEwgTEVUVEVSIFYgV0lUSCBUSUxERTtMbDswO0w7MDA3NiAwMzAzOzs7O047OzsxRTdDOzsxRTdDCisxRTdFO0xBVElOIENBUElUQUwgTEVUVEVSIFYgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNTYgMDMyMzs7OztOOzs7OzFFN0Y7CisxRTdGO0xBVElOIFNNQUxMIExFVFRFUiBWIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDc2IDAzMjM7Ozs7Tjs7OzFFN0U7OzFFN0UKKzFFODA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIEdSQVZFO0x1OzA7TDswMDU3IDAzMDA7Ozs7Tjs7OzsxRTgxOworMUU4MTtMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIEdSQVZFO0xsOzA7TDswMDc3IDAzMDA7Ozs7Tjs7OzFFODA7OzFFODAKKzFFODI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIEFDVVRFO0x1OzA7TDswMDU3IDAzMDE7Ozs7Tjs7OzsxRTgzOworMUU4MztMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIEFDVVRFO0xsOzA7TDswMDc3IDAzMDE7Ozs7Tjs7OzFFODI7OzFFODIKKzFFODQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIERJQUVSRVNJUztMdTswO0w7MDA1NyAwMzA4Ozs7O047Ozs7MUU4NTsKKzFFODU7TEFUSU4gU01BTEwgTEVUVEVSIFcgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzAwNzcgMDMwODs7OztOOzs7MUU4NDs7MUU4NAorMUU4NjtMQVRJTiBDQVBJVEFMIExFVFRFUiBXIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDU3IDAzMDc7Ozs7Tjs7OzsxRTg3OworMUU4NztMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA3NyAwMzA3Ozs7O047OzsxRTg2OzsxRTg2CisxRTg4O0xBVElOIENBUElUQUwgTEVUVEVSIFcgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNTcgMDMyMzs7OztOOzs7OzFFODk7CisxRTg5O0xBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDc3IDAzMjM7Ozs7Tjs7OzFFODg7OzFFODgKKzFFOEE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWCBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA1OCAwMzA3Ozs7O047Ozs7MUU4QjsKKzFFOEI7TEFUSU4gU01BTEwgTEVUVEVSIFggV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNzggMDMwNzs7OztOOzs7MUU4QTs7MUU4QQorMUU4QztMQVRJTiBDQVBJVEFMIExFVFRFUiBYIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDU4IDAzMDg7Ozs7Tjs7OzsxRThEOworMUU4RDtMQVRJTiBTTUFMTCBMRVRURVIgWCBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA3OCAwMzA4Ozs7O047OzsxRThDOzsxRThDCisxRThFO0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNTkgMDMwNzs7OztOOzs7OzFFOEY7CisxRThGO0xBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDc5IDAzMDc7Ozs7Tjs7OzFFOEU7OzFFOEUKKzFFOTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNUEgMDMwMjs7OztOOzs7OzFFOTE7CisxRTkxO0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA3QSAwMzAyOzs7O047OzsxRTkwOzsxRTkwCisxRTkyO0xBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNUEgMDMyMzs7OztOOzs7OzFFOTM7CisxRTkzO0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDdBIDAzMjM7Ozs7Tjs7OzFFOTI7OzFFOTIKKzFFOTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIExJTkUgQkVMT1c7THU7MDtMOzAwNUEgMDMzMTs7OztOOzs7OzFFOTU7CisxRTk1O0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA3QSAwMzMxOzs7O047OzsxRTk0OzsxRTk0CisxRTk2O0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA2OCAwMzMxOzs7O047Ozs7OworMUU5NztMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA3NCAwMzA4Ozs7O047Ozs7OworMUU5ODtMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIFJJTkcgQUJPVkU7TGw7MDtMOzAwNzcgMDMwQTs7OztOOzs7OzsKKzFFOTk7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBSSU5HIEFCT1ZFO0xsOzA7TDswMDc5IDAzMEE7Ozs7Tjs7Ozs7CisxRTlBO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklHSFQgSEFMRiBSSU5HO0xsOzA7TDs8Y29tcGF0PiAwMDYxIDAyQkU7Ozs7Tjs7Ozs7CisxRTlCO0xBVElOIFNNQUxMIExFVFRFUiBMT05HIFMgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAxN0YgMDMwNzs7OztOOzs7MUU2MDs7MUU2MAorMUVBMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDQxIDAzMjM7Ozs7Tjs7OzsxRUExOworMUVBMTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA2MSAwMzIzOzs7O047OzsxRUEwOzsxRUEwCisxRUEyO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBIT09LIEFCT1ZFO0x1OzA7TDswMDQxIDAzMDk7Ozs7Tjs7OzsxRUEzOworMUVBMztMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEhPT0sgQUJPVkU7TGw7MDtMOzAwNjEgMDMwOTs7OztOOzs7MUVBMjs7MUVBMgorMUVBNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgQUNVVEU7THU7MDtMOzAwQzIgMDMwMTs7OztOOzs7OzFFQTU7CisxRUE1O0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgQUNVVEU7TGw7MDtMOzAwRTIgMDMwMTs7OztOOzs7MUVBNDs7MUVBNAorMUVBNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgR1JBVkU7THU7MDtMOzAwQzIgMDMwMDs7OztOOzs7OzFFQTc7CisxRUE3O0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgR1JBVkU7TGw7MDtMOzAwRTIgMDMwMDs7OztOOzs7MUVBNjs7MUVBNgorMUVBODtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgSE9PSyBBQk9WRTtMdTswO0w7MDBDMiAwMzA5Ozs7O047Ozs7MUVBOTsKKzFFQTk7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBIT09LIEFCT1ZFO0xsOzA7TDswMEUyIDAzMDk7Ozs7Tjs7OzFFQTg7OzFFQTgKKzFFQUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIFRJTERFO0x1OzA7TDswMEMyIDAzMDM7Ozs7Tjs7OzsxRUFCOworMUVBQjtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIFRJTERFO0xsOzA7TDswMEUyIDAzMDM7Ozs7Tjs7OzFFQUE7OzFFQUEKKzFFQUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIERPVCBCRUxPVztMdTswO0w7MDBDMiAwMzIzOzs7O047Ozs7MUVBRDsKKzFFQUQ7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBET1QgQkVMT1c7TGw7MDtMOzAwRTIgMDMyMzs7OztOOzs7MUVBQzs7MUVBQworMUVBRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIEFDVVRFO0x1OzA7TDswMTAyIDAzMDE7Ozs7Tjs7OzsxRUFGOworMUVBRjtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBBQ1VURTtMbDswO0w7MDEwMyAwMzAxOzs7O047OzsxRUFFOzsxRUFFCisxRUIwO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgR1JBVkU7THU7MDtMOzAxMDIgMDMwMDs7OztOOzs7OzFFQjE7CisxRUIxO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIEdSQVZFO0xsOzA7TDswMTAzIDAzMDA7Ozs7Tjs7OzFFQjA7OzFFQjAKKzFFQjI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBIT09LIEFCT1ZFO0x1OzA7TDswMTAyIDAzMDk7Ozs7Tjs7OzsxRUIzOworMUVCMztMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBIT09LIEFCT1ZFO0xsOzA7TDswMTAzIDAzMDk7Ozs7Tjs7OzFFQjI7OzFFQjIKKzFFQjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBUSUxERTtMdTswO0w7MDEwMiAwMzAzOzs7O047Ozs7MUVCNTsKKzFFQjU7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgVElMREU7TGw7MDtMOzAxMDMgMDMwMzs7OztOOzs7MUVCNDs7MUVCNAorMUVCNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIERPVCBCRUxPVztMdTswO0w7MDEwMiAwMzIzOzs7O047Ozs7MUVCNzsKKzFFQjc7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgRE9UIEJFTE9XO0xsOzA7TDswMTAzIDAzMjM7Ozs7Tjs7OzFFQjY7OzFFQjYKKzFFQjg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0NSAwMzIzOzs7O047Ozs7MUVCOTsKKzFFQjk7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNjUgMDMyMzs7OztOOzs7MUVCODs7MUVCOAorMUVCQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggSE9PSyBBQk9WRTtMdTswO0w7MDA0NSAwMzA5Ozs7O047Ozs7MUVCQjsKKzFFQkI7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBIT09LIEFCT1ZFO0xsOzA7TDswMDY1IDAzMDk7Ozs7Tjs7OzFFQkE7OzFFQkEKKzFFQkM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIFRJTERFO0x1OzA7TDswMDQ1IDAzMDM7Ozs7Tjs7OzsxRUJEOworMUVCRDtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIFRJTERFO0xsOzA7TDswMDY1IDAzMDM7Ozs7Tjs7OzFFQkM7OzFFQkMKKzFFQkU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFO0x1OzA7TDswMENBIDAzMDE7Ozs7Tjs7OzsxRUJGOworMUVCRjtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFO0xsOzA7TDswMEVBIDAzMDE7Ozs7Tjs7OzFFQkU7OzFFQkUKKzFFQzA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFO0x1OzA7TDswMENBIDAzMDA7Ozs7Tjs7OzsxRUMxOworMUVDMTtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFO0xsOzA7TDswMEVBIDAzMDA7Ozs7Tjs7OzFFQzA7OzFFQzAKKzFFQzI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEhPT0sgQUJPVkU7THU7MDtMOzAwQ0EgMDMwOTs7OztOOzs7OzFFQzM7CisxRUMzO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgSE9PSyBBQk9WRTtMbDswO0w7MDBFQSAwMzA5Ozs7O047OzsxRUMyOzsxRUMyCisxRUM0O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERTtMdTswO0w7MDBDQSAwMzAzOzs7O047Ozs7MUVDNTsKKzFFQzU7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERTtMbDswO0w7MDBFQSAwMzAzOzs7O047OzsxRUM0OzsxRUM0CisxRUM2O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBET1QgQkVMT1c7THU7MDtMOzAwQ0EgMDMyMzs7OztOOzs7OzFFQzc7CisxRUM3O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgRE9UIEJFTE9XO0xsOzA7TDswMEVBIDAzMjM7Ozs7Tjs7OzFFQzY7OzFFQzYKKzFFQzg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEhPT0sgQUJPVkU7THU7MDtMOzAwNDkgMDMwOTs7OztOOzs7OzFFQzk7CisxRUM5O0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggSE9PSyBBQk9WRTtMbDswO0w7MDA2OSAwMzA5Ozs7O047OzsxRUM4OzsxRUM4CisxRUNBO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNDkgMDMyMzs7OztOOzs7OzFFQ0I7CisxRUNCO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDY5IDAzMjM7Ozs7Tjs7OzFFQ0E7OzFFQ0EKKzFFQ0M7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0RiAwMzIzOzs7O047Ozs7MUVDRDsKKzFFQ0Q7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNkYgMDMyMzs7OztOOzs7MUVDQzs7MUVDQworMUVDRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggSE9PSyBBQk9WRTtMdTswO0w7MDA0RiAwMzA5Ozs7O047Ozs7MUVDRjsKKzFFQ0Y7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBIT09LIEFCT1ZFO0xsOzA7TDswMDZGIDAzMDk7Ozs7Tjs7OzFFQ0U7OzFFQ0UKKzFFRDA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFO0x1OzA7TDswMEQ0IDAzMDE7Ozs7Tjs7OzsxRUQxOworMUVEMTtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFO0xsOzA7TDswMEY0IDAzMDE7Ozs7Tjs7OzFFRDA7OzFFRDAKKzFFRDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFO0x1OzA7TDswMEQ0IDAzMDA7Ozs7Tjs7OzsxRUQzOworMUVEMztMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFO0xsOzA7TDswMEY0IDAzMDA7Ozs7Tjs7OzFFRDI7OzFFRDIKKzFFRDQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEhPT0sgQUJPVkU7THU7MDtMOzAwRDQgMDMwOTs7OztOOzs7OzFFRDU7CisxRUQ1O0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgSE9PSyBBQk9WRTtMbDswO0w7MDBGNCAwMzA5Ozs7O047OzsxRUQ0OzsxRUQ0CisxRUQ2O0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERTtMdTswO0w7MDBENCAwMzAzOzs7O047Ozs7MUVENzsKKzFFRDc7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERTtMbDswO0w7MDBGNCAwMzAzOzs7O047OzsxRUQ2OzsxRUQ2CisxRUQ4O0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBET1QgQkVMT1c7THU7MDtMOzAwRDQgMDMyMzs7OztOOzs7OzFFRDk7CisxRUQ5O0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgRE9UIEJFTE9XO0xsOzA7TDswMEY0IDAzMjM7Ozs7Tjs7OzFFRDg7OzFFRDgKKzFFREE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEFDVVRFO0x1OzA7TDswMUEwIDAzMDE7Ozs7Tjs7OzsxRURCOworMUVEQjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEFDVVRFO0xsOzA7TDswMUExIDAzMDE7Ozs7Tjs7OzFFREE7OzFFREEKKzFFREM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEdSQVZFO0x1OzA7TDswMUEwIDAzMDA7Ozs7Tjs7OzsxRUREOworMUVERDtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEdSQVZFO0xsOzA7TDswMUExIDAzMDA7Ozs7Tjs7OzFFREM7OzFFREMKKzFFREU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEhPT0sgQUJPVkU7THU7MDtMOzAxQTAgMDMwOTs7OztOOzs7OzFFREY7CisxRURGO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgSE9PSyBBQk9WRTtMbDswO0w7MDFBMSAwMzA5Ozs7O047OzsxRURFOzsxRURFCisxRUUwO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBUSUxERTtMdTswO0w7MDFBMCAwMzAzOzs7O047Ozs7MUVFMTsKKzFFRTE7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBUSUxERTtMbDswO0w7MDFBMSAwMzAzOzs7O047OzsxRUUwOzsxRUUwCisxRUUyO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBET1QgQkVMT1c7THU7MDtMOzAxQTAgMDMyMzs7OztOOzs7OzFFRTM7CisxRUUzO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgRE9UIEJFTE9XO0xsOzA7TDswMUExIDAzMjM7Ozs7Tjs7OzFFRTI7OzFFRTIKKzFFRTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA1NSAwMzIzOzs7O047Ozs7MUVFNTsKKzFFRTU7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNzUgMDMyMzs7OztOOzs7MUVFNDs7MUVFNAorMUVFNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9PSyBBQk9WRTtMdTswO0w7MDA1NSAwMzA5Ozs7O047Ozs7MUVFNzsKKzFFRTc7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT09LIEFCT1ZFO0xsOzA7TDswMDc1IDAzMDk7Ozs7Tjs7OzFFRTY7OzFFRTYKKzFFRTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEFDVVRFO0x1OzA7TDswMUFGIDAzMDE7Ozs7Tjs7OzsxRUU5OworMUVFOTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEFDVVRFO0xsOzA7TDswMUIwIDAzMDE7Ozs7Tjs7OzFFRTg7OzFFRTgKKzFFRUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEdSQVZFO0x1OzA7TDswMUFGIDAzMDA7Ozs7Tjs7OzsxRUVCOworMUVFQjtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEdSQVZFO0xsOzA7TDswMUIwIDAzMDA7Ozs7Tjs7OzFFRUE7OzFFRUEKKzFFRUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEhPT0sgQUJPVkU7THU7MDtMOzAxQUYgMDMwOTs7OztOOzs7OzFFRUQ7CisxRUVEO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgSE9PSyBBQk9WRTtMbDswO0w7MDFCMCAwMzA5Ozs7O047OzsxRUVDOzsxRUVDCisxRUVFO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBUSUxERTtMdTswO0w7MDFBRiAwMzAzOzs7O047Ozs7MUVFRjsKKzFFRUY7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBUSUxERTtMbDswO0w7MDFCMCAwMzAzOzs7O047OzsxRUVFOzsxRUVFCisxRUYwO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBET1QgQkVMT1c7THU7MDtMOzAxQUYgMDMyMzs7OztOOzs7OzFFRjE7CisxRUYxO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgRE9UIEJFTE9XO0xsOzA7TDswMUIwIDAzMjM7Ozs7Tjs7OzFFRjA7OzFFRjAKKzFFRjI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEdSQVZFO0x1OzA7TDswMDU5IDAzMDA7Ozs7Tjs7OzsxRUYzOworMUVGMztMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEdSQVZFO0xsOzA7TDswMDc5IDAzMDA7Ozs7Tjs7OzFFRjI7OzFFRjIKKzFFRjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA1OSAwMzIzOzs7O047Ozs7MUVGNTsKKzFFRjU7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNzkgMDMyMzs7OztOOzs7MUVGNDs7MUVGNAorMUVGNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggSE9PSyBBQk9WRTtMdTswO0w7MDA1OSAwMzA5Ozs7O047Ozs7MUVGNzsKKzFFRjc7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBIT09LIEFCT1ZFO0xsOzA7TDswMDc5IDAzMDk7Ozs7Tjs7OzFFRjY7OzFFRjYKKzFFRjg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIFRJTERFO0x1OzA7TDswMDU5IDAzMDM7Ozs7Tjs7OzsxRUY5OworMUVGOTtMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIFRJTERFO0xsOzA7TDswMDc5IDAzMDM7Ozs7Tjs7OzFFRjg7OzFFRjgKKzFGMDA7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEk7TGw7MDtMOzAzQjEgMDMxMzs7OztOOzs7MUYwODs7MUYwOAorMUYwMTtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQTtMbDswO0w7MDNCMSAwMzE0Ozs7O047OzsxRjA5OzsxRjA5CisxRjAyO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBWQVJJQTtMbDswO0w7MUYwMCAwMzAwOzs7O047OzsxRjBBOzsxRjBBCisxRjAzO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBWQVJJQTtMbDswO0w7MUYwMSAwMzAwOzs7O047OzsxRjBCOzsxRjBCCisxRjA0O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBPWElBO0xsOzA7TDsxRjAwIDAzMDE7Ozs7Tjs7OzFGMEM7OzFGMEMKKzFGMDU7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIE9YSUE7TGw7MDtMOzFGMDEgMDMwMTs7OztOOzs7MUYwRDs7MUYwRAorMUYwNjtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGMDAgMDM0Mjs7OztOOzs7MUYwRTs7MUYwRQorMUYwNztHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGMDEgMDM0Mjs7OztOOzs7MUYwRjs7MUYwRgorMUYwODtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJO0x1OzA7TDswMzkxIDAzMTM7Ozs7Tjs7OzsxRjAwOworMUYwOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBO0x1OzA7TDswMzkxIDAzMTQ7Ozs7Tjs7OzsxRjAxOworMUYwQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBWQVJJQTtMdTswO0w7MUYwOCAwMzAwOzs7O047Ozs7MUYwMjsKKzFGMEI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgVkFSSUE7THU7MDtMOzFGMDkgMDMwMDs7OztOOzs7OzFGMDM7CisxRjBDO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIE9YSUE7THU7MDtMOzFGMDggMDMwMTs7OztOOzs7OzFGMDQ7CisxRjBEO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGMDkgMDMwMTs7OztOOzs7OzFGMDU7CisxRjBFO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0x1OzA7TDsxRjA4IDAzNDI7Ozs7Tjs7OzsxRjA2OworMUYwRjtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSTtMdTswO0w7MUYwOSAwMzQyOzs7O047Ozs7MUYwNzsKKzFGMTA7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBQU0lMSTtMbDswO0w7MDNCNSAwMzEzOzs7O047OzsxRjE4OzsxRjE4CisxRjExO0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUE7TGw7MDtMOzAzQjUgMDMxNDs7OztOOzs7MUYxOTs7MUYxOQorMUYxMjtHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIFBTSUxJIEFORCBWQVJJQTtMbDswO0w7MUYxMCAwMzAwOzs7O047OzsxRjFBOzsxRjFBCisxRjEzO0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUEgQU5EIFZBUklBO0xsOzA7TDsxRjExIDAzMDA7Ozs7Tjs7OzFGMUI7OzFGMUIKKzFGMTQ7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBQU0lMSSBBTkQgT1hJQTtMbDswO0w7MUYxMCAwMzAxOzs7O047OzsxRjFDOzsxRjFDCisxRjE1O0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUEgQU5EIE9YSUE7TGw7MDtMOzFGMTEgMDMwMTs7OztOOzs7MUYxRDs7MUYxRAorMUYxODtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggUFNJTEk7THU7MDtMOzAzOTUgMDMxMzs7OztOOzs7OzFGMTA7CisxRjE5O0dSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBEQVNJQTtMdTswO0w7MDM5NSAwMzE0Ozs7O047Ozs7MUYxMTsKKzFGMUE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIFBTSUxJIEFORCBWQVJJQTtMdTswO0w7MUYxOCAwMzAwOzs7O047Ozs7MUYxMjsKKzFGMUI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIERBU0lBIEFORCBWQVJJQTtMdTswO0w7MUYxOSAwMzAwOzs7O047Ozs7MUYxMzsKKzFGMUM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIFBTSUxJIEFORCBPWElBO0x1OzA7TDsxRjE4IDAzMDE7Ozs7Tjs7OzsxRjE0OworMUYxRDtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGMTkgMDMwMTs7OztOOzs7OzFGMTU7CisxRjIwO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSTtMbDswO0w7MDNCNyAwMzEzOzs7O047OzsxRjI4OzsxRjI4CisxRjIxO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQTtMbDswO0w7MDNCNyAwMzE0Ozs7O047OzsxRjI5OzsxRjI5CisxRjIyO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgVkFSSUE7TGw7MDtMOzFGMjAgMDMwMDs7OztOOzs7MUYyQTs7MUYyQQorMUYyMztHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFZBUklBO0xsOzA7TDsxRjIxIDAzMDA7Ozs7Tjs7OzFGMkI7OzFGMkIKKzFGMjQ7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBPWElBO0xsOzA7TDsxRjIwIDAzMDE7Ozs7Tjs7OzFGMkM7OzFGMkMKKzFGMjU7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBPWElBO0xsOzA7TDsxRjIxIDAzMDE7Ozs7Tjs7OzFGMkQ7OzFGMkQKKzFGMjY7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtMbDswO0w7MUYyMCAwMzQyOzs7O047OzsxRjJFOzsxRjJFCisxRjI3O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGMjEgMDM0Mjs7OztOOzs7MUYyRjs7MUYyRgorMUYyODtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSTtMdTswO0w7MDM5NyAwMzEzOzs7O047Ozs7MUYyMDsKKzFGMjk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUE7THU7MDtMOzAzOTcgMDMxNDs7OztOOzs7OzFGMjE7CisxRjJBO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBWQVJJQTtMdTswO0w7MUYyOCAwMzAwOzs7O047Ozs7MUYyMjsKKzFGMkI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFZBUklBO0x1OzA7TDsxRjI5IDAzMDA7Ozs7Tjs7OzsxRjIzOworMUYyQztHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgT1hJQTtMdTswO0w7MUYyOCAwMzAxOzs7O047Ozs7MUYyNDsKKzFGMkQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGMjkgMDMwMTs7OztOOzs7OzFGMjU7CisxRjJFO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtMdTswO0w7MUYyOCAwMzQyOzs7O047Ozs7MUYyNjsKKzFGMkY7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JO0x1OzA7TDsxRjI5IDAzNDI7Ozs7Tjs7OzsxRjI3OworMUYzMDtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJO0xsOzA7TDswM0I5IDAzMTM7Ozs7Tjs7OzFGMzg7OzFGMzgKKzFGMzE7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQTtMbDswO0w7MDNCOSAwMzE0Ozs7O047OzsxRjM5OzsxRjM5CisxRjMyO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggUFNJTEkgQU5EIFZBUklBO0xsOzA7TDsxRjMwIDAzMDA7Ozs7Tjs7OzFGM0E7OzFGM0EKKzFGMzM7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgVkFSSUE7TGw7MDtMOzFGMzEgMDMwMDs7OztOOzs7MUYzQjs7MUYzQgorMUYzNDtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJIEFORCBPWElBO0xsOzA7TDsxRjMwIDAzMDE7Ozs7Tjs7OzFGM0M7OzFGM0MKKzFGMzU7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgT1hJQTtMbDswO0w7MUYzMSAwMzAxOzs7O047OzsxRjNEOzsxRjNECisxRjM2O0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjMwIDAzNDI7Ozs7Tjs7OzFGM0U7OzFGM0UKKzFGMzc7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGMzEgMDM0Mjs7OztOOzs7MUYzRjs7MUYzRgorMUYzODtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggUFNJTEk7THU7MDtMOzAzOTkgMDMxMzs7OztOOzs7OzFGMzA7CisxRjM5O0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQTtMdTswO0w7MDM5OSAwMzE0Ozs7O047Ozs7MUYzMTsKKzFGM0E7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJIEFORCBWQVJJQTtMdTswO0w7MUYzOCAwMzAwOzs7O047Ozs7MUYzMjsKKzFGM0I7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIERBU0lBIEFORCBWQVJJQTtMdTswO0w7MUYzOSAwMzAwOzs7O047Ozs7MUYzMzsKKzFGM0M7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJIEFORCBPWElBO0x1OzA7TDsxRjM4IDAzMDE7Ozs7Tjs7OzsxRjM0OworMUYzRDtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGMzkgMDMwMTs7OztOOzs7OzFGMzU7CisxRjNFO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGMzggMDM0Mjs7OztOOzs7OzFGMzY7CisxRjNGO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGMzkgMDM0Mjs7OztOOzs7OzFGMzc7CisxRjQwO0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggUFNJTEk7TGw7MDtMOzAzQkYgMDMxMzs7OztOOzs7MUY0ODs7MUY0OAorMUY0MTtHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBO0xsOzA7TDswM0JGIDAzMTQ7Ozs7Tjs7OzFGNDk7OzFGNDkKKzFGNDI7R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBQU0lMSSBBTkQgVkFSSUE7TGw7MDtMOzFGNDAgMDMwMDs7OztOOzs7MUY0QTs7MUY0QQorMUY0MztHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBIEFORCBWQVJJQTtMbDswO0w7MUY0MSAwMzAwOzs7O047OzsxRjRCOzsxRjRCCisxRjQ0O0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggUFNJTEkgQU5EIE9YSUE7TGw7MDtMOzFGNDAgMDMwMTs7OztOOzs7MUY0Qzs7MUY0QworMUY0NTtHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBIEFORCBPWElBO0xsOzA7TDsxRjQxIDAzMDE7Ozs7Tjs7OzFGNEQ7OzFGNEQKKzFGNDg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIFBTSUxJO0x1OzA7TDswMzlGIDAzMTM7Ozs7Tjs7OzsxRjQwOworMUY0OTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggREFTSUE7THU7MDtMOzAzOUYgMDMxNDs7OztOOzs7OzFGNDE7CisxRjRBO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBQU0lMSSBBTkQgVkFSSUE7THU7MDtMOzFGNDggMDMwMDs7OztOOzs7OzFGNDI7CisxRjRCO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBEQVNJQSBBTkQgVkFSSUE7THU7MDtMOzFGNDkgMDMwMDs7OztOOzs7OzFGNDM7CisxRjRDO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBQU0lMSSBBTkQgT1hJQTtMdTswO0w7MUY0OCAwMzAxOzs7O047Ozs7MUY0NDsKKzFGNEQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBIEFORCBPWElBO0x1OzA7TDsxRjQ5IDAzMDE7Ozs7Tjs7OzsxRjQ1OworMUY1MDtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBTSUxJO0xsOzA7TDswM0M1IDAzMTM7Ozs7Tjs7Ozs7CisxRjUxO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUE7TGw7MDtMOzAzQzUgMDMxNDs7OztOOzs7MUY1OTs7MUY1OQorMUY1MjtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBTSUxJIEFORCBWQVJJQTtMbDswO0w7MUY1MCAwMzAwOzs7O047Ozs7OworMUY1MztHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERBU0lBIEFORCBWQVJJQTtMbDswO0w7MUY1MSAwMzAwOzs7O047OzsxRjVCOzsxRjVCCisxRjU0O0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggUFNJTEkgQU5EIE9YSUE7TGw7MDtMOzFGNTAgMDMwMTs7OztOOzs7OzsKKzFGNTU7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBEQVNJQSBBTkQgT1hJQTtMbDswO0w7MUY1MSAwMzAxOzs7O047OzsxRjVEOzsxRjVECisxRjU2O0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjUwIDAzNDI7Ozs7Tjs7Ozs7CisxRjU3O0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjUxIDAzNDI7Ozs7Tjs7OzFGNUY7OzFGNUYKKzFGNTk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIERBU0lBO0x1OzA7TDswM0E1IDAzMTQ7Ozs7Tjs7OzsxRjUxOworMUY1QjtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIFZBUklBO0x1OzA7TDsxRjU5IDAzMDA7Ozs7Tjs7OzsxRjUzOworMUY1RDtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGNTkgMDMwMTs7OztOOzs7OzFGNTU7CisxRjVGO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGNTkgMDM0Mjs7OztOOzs7OzFGNTc7CisxRjYwO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJO0xsOzA7TDswM0M5IDAzMTM7Ozs7Tjs7OzFGNjg7OzFGNjgKKzFGNjE7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUE7TGw7MDtMOzAzQzkgMDMxNDs7OztOOzs7MUY2OTs7MUY2OQorMUY2MjtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgVkFSSUE7TGw7MDtMOzFGNjAgMDMwMDs7OztOOzs7MUY2QTs7MUY2QQorMUY2MztHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgVkFSSUE7TGw7MDtMOzFGNjEgMDMwMDs7OztOOzs7MUY2Qjs7MUY2QgorMUY2NDtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgT1hJQTtMbDswO0w7MUY2MCAwMzAxOzs7O047OzsxRjZDOzsxRjZDCisxRjY1O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBPWElBO0xsOzA7TDsxRjYxIDAzMDE7Ozs7Tjs7OzFGNkQ7OzFGNkQKKzFGNjY7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjYwIDAzNDI7Ozs7Tjs7OzFGNkU7OzFGNkUKKzFGNjc7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjYxIDAzNDI7Ozs7Tjs7OzFGNkY7OzFGNkYKKzFGNjg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSTtMdTswO0w7MDNBOSAwMzEzOzs7O047Ozs7MUY2MDsKKzFGNjk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQTtMdTswO0w7MDNBOSAwMzE0Ozs7O047Ozs7MUY2MTsKKzFGNkE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgVkFSSUE7THU7MDtMOzFGNjggMDMwMDs7OztOOzs7OzFGNjI7CisxRjZCO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFZBUklBO0x1OzA7TDsxRjY5IDAzMDA7Ozs7Tjs7OzsxRjYzOworMUY2QztHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBPWElBO0x1OzA7TDsxRjY4IDAzMDE7Ozs7Tjs7OzsxRjY0OworMUY2RDtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBPWElBO0x1OzA7TDsxRjY5IDAzMDE7Ozs7Tjs7OzsxRjY1OworMUY2RTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtMdTswO0w7MUY2OCAwMzQyOzs7O047Ozs7MUY2NjsKKzFGNkY7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGNjkgMDM0Mjs7OztOOzs7OzFGNjc7CisxRjcwO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFZBUklBO0xsOzA7TDswM0IxIDAzMDA7Ozs7Tjs7OzFGQkE7OzFGQkEKKzFGNzE7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggT1hJQTtMbDswO0w7MDNBQzs7OztOOzs7MUZCQjs7MUZCQgorMUY3MjtHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIFZBUklBO0xsOzA7TDswM0I1IDAzMDA7Ozs7Tjs7OzFGQzg7OzFGQzgKKzFGNzM7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBPWElBO0xsOzA7TDswM0FEOzs7O047OzsxRkM5OzsxRkM5CisxRjc0O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBWQVJJQTtMbDswO0w7MDNCNyAwMzAwOzs7O047OzsxRkNBOzsxRkNBCisxRjc1O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBPWElBO0xsOzA7TDswM0FFOzs7O047OzsxRkNCOzsxRkNCCisxRjc2O0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggVkFSSUE7TGw7MDtMOzAzQjkgMDMwMDs7OztOOzs7MUZEQTs7MUZEQQorMUY3NztHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIE9YSUE7TGw7MDtMOzAzQUY7Ozs7Tjs7OzFGREI7OzFGREIKKzFGNzg7R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBWQVJJQTtMbDswO0w7MDNCRiAwMzAwOzs7O047OzsxRkY4OzsxRkY4CisxRjc5O0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggT1hJQTtMbDswO0w7MDNDQzs7OztOOzs7MUZGOTs7MUZGOQorMUY3QTtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFZBUklBO0xsOzA7TDswM0M1IDAzMDA7Ozs7Tjs7OzFGRUE7OzFGRUEKKzFGN0I7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBPWElBO0xsOzA7TDswM0NEOzs7O047OzsxRkVCOzsxRkVCCisxRjdDO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFZBUklBO0xsOzA7TDswM0M5IDAzMDA7Ozs7Tjs7OzFGRkE7OzFGRkEKKzFGN0Q7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggT1hJQTtMbDswO0w7MDNDRTs7OztOOzs7MUZGQjs7MUZGQgorMUY4MDtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYwMCAwMzQ1Ozs7O047OzsxRjg4OzsxRjg4CisxRjgxO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjAxIDAzNDU7Ozs7Tjs7OzFGODk7OzFGODkKKzFGODI7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjAyIDAzNDU7Ozs7Tjs7OzFGOEE7OzFGOEEKKzFGODM7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjAzIDAzNDU7Ozs7Tjs7OzFGOEI7OzFGOEIKKzFGODQ7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMDQgMDM0NTs7OztOOzs7MUY4Qzs7MUY4QworMUY4NTtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYwNSAwMzQ1Ozs7O047OzsxRjhEOzsxRjhECisxRjg2O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYwNiAwMzQ1Ozs7O047OzsxRjhFOzsxRjhFCisxRjg3O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYwNyAwMzQ1Ozs7O047OzsxRjhGOzsxRjhGCisxRjg4O0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjA4IDAzNDU7Ozs7Tjs7OzsxRjgwOworMUY4OTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUYwOSAwMzQ1Ozs7O047Ozs7MUY4MTsKKzFGOEE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgVkFSSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjBBIDAzNDU7Ozs7Tjs7OzsxRjgyOworMUY4QjtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGMEIgMDM0NTs7OztOOzs7OzFGODM7CisxRjhDO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjBDIDAzNDU7Ozs7Tjs7OzsxRjg0OworMUY4RDtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBPWElBIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUYwRCAwMzQ1Ozs7O047Ozs7MUY4NTsKKzFGOEU7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjBFIDAzNDU7Ozs7Tjs7OzsxRjg2OworMUY4RjtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGMEYgMDM0NTs7OztOOzs7OzFGODc7CisxRjkwO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYyMCAwMzQ1Ozs7O047OzsxRjk4OzsxRjk4CisxRjkxO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYyMSAwMzQ1Ozs7O047OzsxRjk5OzsxRjk5CisxRjkyO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMjIgMDM0NTs7OztOOzs7MUY5QTs7MUY5QQorMUY5MztHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjIzIDAzNDU7Ozs7Tjs7OzFGOUI7OzFGOUIKKzFGOTQ7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjI0IDAzNDU7Ozs7Tjs7OzFGOUM7OzFGOUMKKzFGOTU7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjI1IDAzNDU7Ozs7Tjs7OzFGOUQ7OzFGOUQKKzFGOTY7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYyNiAwMzQ1Ozs7O047OzsxRjlFOzsxRjlFCisxRjk3O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMjcgMDM0NTs7OztOOzs7MUY5Rjs7MUY5RgorMUY5ODtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGMjggMDM0NTs7OztOOzs7OzFGOTA7CisxRjk5O0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUYyOSAwMzQ1Ozs7O047Ozs7MUY5MTsKKzFGOUE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUYyQSAwMzQ1Ozs7O047Ozs7MUY5MjsKKzFGOUI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUYyQiAwMzQ1Ozs7O047Ozs7MUY5MzsKKzFGOUM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjJDIDAzNDU7Ozs7Tjs7OzsxRjk0OworMUY5RDtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGMkQgMDM0NTs7OztOOzs7OzFGOTU7CisxRjlFO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGMkUgMDM0NTs7OztOOzs7OzFGOTY7CisxRjlGO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGMkYgMDM0NTs7OztOOzs7OzFGOTc7CisxRkEwO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjYwIDAzNDU7Ozs7Tjs7OzFGQTg7OzFGQTgKKzFGQTE7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNjEgMDM0NTs7OztOOzs7MUZBOTs7MUZBOQorMUZBMjtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNjIgMDM0NTs7OztOOzs7MUZBQTs7MUZBQQorMUZBMztHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNjMgMDM0NTs7OztOOzs7MUZBQjs7MUZBQgorMUZBNDtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY2NCAwMzQ1Ozs7O047OzsxRkFDOzsxRkFDCisxRkE1O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjY1IDAzNDU7Ozs7Tjs7OzFGQUQ7OzFGQUQKKzFGQTY7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjY2IDAzNDU7Ozs7Tjs7OzFGQUU7OzFGQUUKKzFGQTc7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjY3IDAzNDU7Ozs7Tjs7OzFGQUY7OzFGQUYKKzFGQTg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGNjggMDM0NTs7OztOOzs7OzFGQTA7CisxRkE5O0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjY5IDAzNDU7Ozs7Tjs7OzsxRkExOworMUZBQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGNkEgMDM0NTs7OztOOzs7OzFGQTI7CisxRkFCO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUY2QiAwMzQ1Ozs7O047Ozs7MUZBMzsKKzFGQUM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGNkMgMDM0NTs7OztOOzs7OzFGQTQ7CisxRkFEO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x1OzA7TDsxRjZEIDAzNDU7Ozs7Tjs7OzsxRkE1OworMUZBRTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkk7THU7MDtMOzFGNkUgMDM0NTs7OztOOzs7OzFGQTY7CisxRkFGO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MUY2RiAwMzQ1Ozs7O047Ozs7MUZBNzsKKzFGQjA7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVlJBQ0hZO0xsOzA7TDswM0IxIDAzMDY7Ozs7Tjs7OzFGQjg7OzFGQjgKKzFGQjE7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggTUFDUk9OO0xsOzA7TDswM0IxIDAzMDQ7Ozs7Tjs7OzFGQjk7OzFGQjkKKzFGQjI7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNzAgMDM0NTs7OztOOzs7OzsKKzFGQjM7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggWVBPR0VHUkFNTUVOSTtMbDswO0w7MDNCMSAwMzQ1Ozs7O047OzsxRkJDOzsxRkJDCisxRkI0O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzAzQUMgMDM0NTs7OztOOzs7OzsKKzFGQjY7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUEVSSVNQT01FTkk7TGw7MDtMOzAzQjEgMDM0Mjs7OztOOzs7OzsKKzFGQjc7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGQjYgMDM0NTs7OztOOzs7OzsKKzFGQjg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBWUkFDSFk7THU7MDtMOzAzOTEgMDMwNjs7OztOOzs7OzFGQjA7CisxRkI5O0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggTUFDUk9OO0x1OzA7TDswMzkxIDAzMDQ7Ozs7Tjs7OzsxRkIxOworMUZCQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFZBUklBO0x1OzA7TDswMzkxIDAzMDA7Ozs7Tjs7OzsxRjcwOworMUZCQjtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIE9YSUE7THU7MDtMOzAzODY7Ozs7Tjs7OzsxRjcxOworMUZCQztHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBST1NHRUdSQU1NRU5JO0x1OzA7TDswMzkxIDAzNDU7Ozs7Tjs7OzsxRkIzOworMUZCRDtHUkVFSyBLT1JPTklTO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzEzOzs7O047Ozs7OworMUZCRTtHUkVFSyBQUk9TR0VHUkFNTUVOSTtMbDswO0w7MDNCOTs7OztOOzs7MDM5OTs7CisxRkJGO0dSRUVLIFBTSUxJO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzEzOzs7O047Ozs7OworMUZDMDtHUkVFSyBQRVJJU1BPTUVOSTtTazswO09OOzxjb21wYXQ+IDAwMjAgMDM0Mjs7OztOOzs7OzsKKzFGQzE7R1JFRUsgRElBTFlUSUtBIEFORCBQRVJJU1BPTUVOSTtTazswO09OOzAwQTggMDM0Mjs7OztOOzs7OzsKKzFGQzI7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjc0IDAzNDU7Ozs7Tjs7Ozs7CisxRkMzO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBZUE9HRUdSQU1NRU5JO0xsOzA7TDswM0I3IDAzNDU7Ozs7Tjs7OzFGQ0M7OzFGQ0MKKzFGQzQ7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzAzQUUgMDM0NTs7OztOOzs7OzsKKzFGQzY7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBFUklTUE9NRU5JO0xsOzA7TDswM0I3IDAzNDI7Ozs7Tjs7Ozs7CisxRkM3O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUZDNiAwMzQ1Ozs7O047Ozs7OworMUZDODtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggVkFSSUE7THU7MDtMOzAzOTUgMDMwMDs7OztOOzs7OzFGNzI7CisxRkM5O0dSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBPWElBO0x1OzA7TDswMzg4Ozs7O047Ozs7MUY3MzsKKzFGQ0E7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggVkFSSUE7THU7MDtMOzAzOTcgMDMwMDs7OztOOzs7OzFGNzQ7CisxRkNCO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIE9YSUE7THU7MDtMOzAzODk7Ozs7Tjs7OzsxRjc1OworMUZDQztHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQUk9TR0VHUkFNTUVOSTtMdTswO0w7MDM5NyAwMzQ1Ozs7O047Ozs7MUZDMzsKKzFGQ0Q7R1JFRUsgUFNJTEkgQU5EIFZBUklBO1NrOzA7T047MUZCRiAwMzAwOzs7O047Ozs7OworMUZDRTtHUkVFSyBQU0lMSSBBTkQgT1hJQTtTazswO09OOzFGQkYgMDMwMTs7OztOOzs7OzsKKzFGQ0Y7R1JFRUsgUFNJTEkgQU5EIFBFUklTUE9NRU5JO1NrOzA7T047MUZCRiAwMzQyOzs7O047Ozs7OworMUZEMDtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIFZSQUNIWTtMbDswO0w7MDNCOSAwMzA2Ozs7O047OzsxRkQ4OzsxRkQ4CisxRkQxO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggTUFDUk9OO0xsOzA7TDswM0I5IDAzMDQ7Ozs7Tjs7OzFGRDk7OzFGRDkKKzFGRDI7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EgQU5EIFZBUklBO0xsOzA7TDswM0NBIDAzMDA7Ozs7Tjs7Ozs7CisxRkQzO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBIEFORCBPWElBO0xsOzA7TDswMzkwOzs7O047Ozs7OworMUZENjtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIFBFUklTUE9NRU5JO0xsOzA7TDswM0I5IDAzNDI7Ozs7Tjs7Ozs7CisxRkQ3O0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBIEFORCBQRVJJU1BPTUVOSTtMbDswO0w7MDNDQSAwMzQyOzs7O047Ozs7OworMUZEODtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggVlJBQ0hZO0x1OzA7TDswMzk5IDAzMDY7Ozs7Tjs7OzsxRkQwOworMUZEOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggTUFDUk9OO0x1OzA7TDswMzk5IDAzMDQ7Ozs7Tjs7OzsxRkQxOworMUZEQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggVkFSSUE7THU7MDtMOzAzOTkgMDMwMDs7OztOOzs7OzFGNzY7CisxRkRCO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBPWElBO0x1OzA7TDswMzhBOzs7O047Ozs7MUY3NzsKKzFGREQ7R1JFRUsgREFTSUEgQU5EIFZBUklBO1NrOzA7T047MUZGRSAwMzAwOzs7O047Ozs7OworMUZERTtHUkVFSyBEQVNJQSBBTkQgT1hJQTtTazswO09OOzFGRkUgMDMwMTs7OztOOzs7OzsKKzFGREY7R1JFRUsgREFTSUEgQU5EIFBFUklTUE9NRU5JO1NrOzA7T047MUZGRSAwMzQyOzs7O047Ozs7OworMUZFMDtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFZSQUNIWTtMbDswO0w7MDNDNSAwMzA2Ozs7O047OzsxRkU4OzsxRkU4CisxRkUxO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggTUFDUk9OO0xsOzA7TDswM0M1IDAzMDQ7Ozs7Tjs7OzFGRTk7OzFGRTkKKzFGRTI7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EgQU5EIFZBUklBO0xsOzA7TDswM0NCIDAzMDA7Ozs7Tjs7Ozs7CisxRkUzO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBIEFORCBPWElBO0xsOzA7TDswM0IwOzs7O047Ozs7OworMUZFNDtHUkVFSyBTTUFMTCBMRVRURVIgUkhPIFdJVEggUFNJTEk7TGw7MDtMOzAzQzEgMDMxMzs7OztOOzs7OzsKKzFGRTU7R1JFRUsgU01BTEwgTEVUVEVSIFJITyBXSVRIIERBU0lBO0xsOzA7TDswM0MxIDAzMTQ7Ozs7Tjs7OzFGRUM7OzFGRUMKKzFGRTY7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBQRVJJU1BPTUVOSTtMbDswO0w7MDNDNSAwMzQyOzs7O047Ozs7OworMUZFNztHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzAzQ0IgMDM0Mjs7OztOOzs7OzsKKzFGRTg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIFZSQUNIWTtMdTswO0w7MDNBNSAwMzA2Ozs7O047Ozs7MUZFMDsKKzFGRTk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIE1BQ1JPTjtMdTswO0w7MDNBNSAwMzA0Ozs7O047Ozs7MUZFMTsKKzFGRUE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIFZBUklBO0x1OzA7TDswM0E1IDAzMDA7Ozs7Tjs7OzsxRjdBOworMUZFQjtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggT1hJQTtMdTswO0w7MDM4RTs7OztOOzs7OzFGN0I7CisxRkVDO0dSRUVLIENBUElUQUwgTEVUVEVSIFJITyBXSVRIIERBU0lBO0x1OzA7TDswM0ExIDAzMTQ7Ozs7Tjs7OzsxRkU1OworMUZFRDtHUkVFSyBESUFMWVRJS0EgQU5EIFZBUklBO1NrOzA7T047MDBBOCAwMzAwOzs7O047Ozs7OworMUZFRTtHUkVFSyBESUFMWVRJS0EgQU5EIE9YSUE7U2s7MDtPTjswMzg1Ozs7O047Ozs7OworMUZFRjtHUkVFSyBWQVJJQTtTazswO09OOzAwNjA7Ozs7Tjs7Ozs7CisxRkYyO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjdDIDAzNDU7Ozs7Tjs7Ozs7CisxRkYzO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzAzQzkgMDM0NTs7OztOOzs7MUZGQzs7MUZGQworMUZGNDtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBPWElBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDswM0NFIDAzNDU7Ozs7Tjs7Ozs7CisxRkY2O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBFUklTUE9NRU5JO0xsOzA7TDswM0M5IDAzNDI7Ozs7Tjs7Ozs7CisxRkY3O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRkY2IDAzNDU7Ozs7Tjs7Ozs7CisxRkY4O0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBWQVJJQTtMdTswO0w7MDM5RiAwMzAwOzs7O047Ozs7MUY3ODsKKzFGRjk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIE9YSUE7THU7MDtMOzAzOEM7Ozs7Tjs7OzsxRjc5OworMUZGQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFZBUklBO0x1OzA7TDswM0E5IDAzMDA7Ozs7Tjs7OzsxRjdDOworMUZGQjtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIE9YSUE7THU7MDtMOzAzOEY7Ozs7Tjs7OzsxRjdEOworMUZGQztHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBST1NHRUdSQU1NRU5JO0x1OzA7TDswM0E5IDAzNDU7Ozs7Tjs7OzsxRkYzOworMUZGRDtHUkVFSyBPWElBO1NrOzA7T047MDBCNDs7OztOOzs7OzsKKzFGRkU7R1JFRUsgREFTSUE7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMTQ7Ozs7Tjs7Ozs7CisyMDAwO0VOIFFVQUQ7WnM7MDtXUzsyMDAyOzs7O047Ozs7OworMjAwMTtFTSBRVUFEO1pzOzA7V1M7MjAwMzs7OztOOzs7OzsKKzIwMDI7RU4gU1BBQ0U7WnM7MDtXUzs8Y29tcGF0PiAwMDIwOzs7O047Ozs7OworMjAwMztFTSBTUEFDRTtaczswO1dTOzxjb21wYXQ+IDAwMjA7Ozs7Tjs7Ozs7CisyMDA0O1RIUkVFLVBFUi1FTSBTUEFDRTtaczswO1dTOzxjb21wYXQ+IDAwMjA7Ozs7Tjs7Ozs7CisyMDA1O0ZPVVItUEVSLUVNIFNQQUNFO1pzOzA7V1M7PGNvbXBhdD4gMDAyMDs7OztOOzs7OzsKKzIwMDY7U0lYLVBFUi1FTSBTUEFDRTtaczswO1dTOzxjb21wYXQ+IDAwMjA7Ozs7Tjs7Ozs7CisyMDA3O0ZJR1VSRSBTUEFDRTtaczswO0NTOzxub0JyZWFrPiAwMDIwOzs7O047Ozs7OworMjAwODtQVU5DVFVBVElPTiBTUEFDRTtaczswO1dTOzxjb21wYXQ+IDAwMjA7Ozs7Tjs7Ozs7CisyMDA5O1RISU4gU1BBQ0U7WnM7MDtXUzs8Y29tcGF0PiAwMDIwOzs7O047Ozs7OworMjAwQTtIQUlSIFNQQUNFO1pzOzA7V1M7PGNvbXBhdD4gMDAyMDs7OztOOzs7OzsKKzIwMEI7WkVSTyBXSURUSCBTUEFDRTtaczswO1dTOzs7OztOOzs7OzsKKzIwMEM7WkVSTyBXSURUSCBOT04tSk9JTkVSO0NmOzA7T047Ozs7O047Ozs7OworMjAwRDtaRVJPIFdJRFRIIEpPSU5FUjtDZjswO09OOzs7OztOOzs7OzsKKzIwMEU7TEVGVC1UTy1SSUdIVCBNQVJLO0NmOzA7TDs7Ozs7Tjs7Ozs7CisyMDBGO1JJR0hULVRPLUxFRlQgTUFSSztDZjswO1I7Ozs7O047Ozs7OworMjAxMDtIWVBIRU47UGQ7MDtPTjs7Ozs7Tjs7Ozs7CisyMDExO05PTi1CUkVBS0lORyBIWVBIRU47UGQ7MDtPTjs8bm9CcmVhaz4gMjAxMDs7OztOOzs7OzsKKzIwMTI7RklHVVJFIERBU0g7UGQ7MDtPTjs7Ozs7Tjs7Ozs7CisyMDEzO0VOIERBU0g7UGQ7MDtPTjs7Ozs7Tjs7Ozs7CisyMDE0O0VNIERBU0g7UGQ7MDtPTjs7Ozs7Tjs7Ozs7CisyMDE1O0hPUklaT05UQUwgQkFSO1BkOzA7T047Ozs7O047UVVPVEFUSU9OIERBU0g7Ozs7CisyMDE2O0RPVUJMRSBWRVJUSUNBTCBMSU5FO1BvOzA7T047Ozs7O047RE9VQkxFIFZFUlRJQ0FMIEJBUjs7OzsKKzIwMTc7RE9VQkxFIExPVyBMSU5FO1BvOzA7T047PGNvbXBhdD4gMDAyMCAwMzMzOzs7O047U1BBQ0lORyBET1VCTEUgVU5ERVJTQ09SRTs7OzsKKzIwMTg7TEVGVCBTSU5HTEUgUVVPVEFUSU9OIE1BUks7UGk7MDtPTjs7Ozs7TjtTSU5HTEUgVFVSTkVEIENPTU1BIFFVT1RBVElPTiBNQVJLOzs7OworMjAxOTtSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUks7UGY7MDtPTjs7Ozs7TjtTSU5HTEUgQ09NTUEgUVVPVEFUSU9OIE1BUks7Ozs7CisyMDFBO1NJTkdMRSBMT1ctOSBRVU9UQVRJT04gTUFSSztQczswO09OOzs7OztOO0xPVyBTSU5HTEUgQ09NTUEgUVVPVEFUSU9OIE1BUks7Ozs7CisyMDFCO1NJTkdMRSBISUdILVJFVkVSU0VELTkgUVVPVEFUSU9OIE1BUks7UGk7MDtPTjs7Ozs7TjtTSU5HTEUgUkVWRVJTRUQgQ09NTUEgUVVPVEFUSU9OIE1BUks7Ozs7CisyMDFDO0xFRlQgRE9VQkxFIFFVT1RBVElPTiBNQVJLO1BpOzA7T047Ozs7O047RE9VQkxFIFRVUk5FRCBDT01NQSBRVU9UQVRJT04gTUFSSzs7OzsKKzIwMUQ7UklHSFQgRE9VQkxFIFFVT1RBVElPTiBNQVJLO1BmOzA7T047Ozs7O047RE9VQkxFIENPTU1BIFFVT1RBVElPTiBNQVJLOzs7OworMjAxRTtET1VCTEUgTE9XLTkgUVVPVEFUSU9OIE1BUks7UHM7MDtPTjs7Ozs7TjtMT1cgRE9VQkxFIENPTU1BIFFVT1RBVElPTiBNQVJLOzs7OworMjAxRjtET1VCTEUgSElHSC1SRVZFUlNFRC05IFFVT1RBVElPTiBNQVJLO1BpOzA7T047Ozs7O047RE9VQkxFIFJFVkVSU0VEIENPTU1BIFFVT1RBVElPTiBNQVJLOzs7OworMjAyMDtEQUdHRVI7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDIxO0RPVUJMRSBEQUdHRVI7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDIyO0JVTExFVDtQbzswO09OOzs7OztOOzs7OzsKKzIwMjM7VFJJQU5HVUxBUiBCVUxMRVQ7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDI0O09ORSBET1QgTEVBREVSO1BvOzA7T047PGNvbXBhdD4gMDAyRTs7OztOOzs7OzsKKzIwMjU7VFdPIERPVCBMRUFERVI7UG87MDtPTjs8Y29tcGF0PiAwMDJFIDAwMkU7Ozs7Tjs7Ozs7CisyMDI2O0hPUklaT05UQUwgRUxMSVBTSVM7UG87MDtPTjs8Y29tcGF0PiAwMDJFIDAwMkUgMDAyRTs7OztOOzs7OzsKKzIwMjc7SFlQSEVOQVRJT04gUE9JTlQ7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDI4O0xJTkUgU0VQQVJBVE9SO1psOzA7Qjs7Ozs7Tjs7Ozs7CisyMDI5O1BBUkFHUkFQSCBTRVBBUkFUT1I7WnA7MDtCOzs7OztOOzs7OzsKKzIwMkE7TEVGVC1UTy1SSUdIVCBFTUJFRERJTkc7Q2Y7MDtMOzs7OztOOzs7OzsKKzIwMkI7UklHSFQtVE8tTEVGVCBFTUJFRERJTkc7Q2Y7MDtSOzs7OztOOzs7OzsKKzIwMkM7UE9QIERJUkVDVElPTkFMIEZPUk1BVFRJTkc7Q2Y7MDtPTjs7Ozs7Tjs7Ozs7CisyMDJEO0xFRlQtVE8tUklHSFQgT1ZFUlJJREU7Q2Y7MDtMOzs7OztOOzs7OzsKKzIwMkU7UklHSFQtVE8tTEVGVCBPVkVSUklERTtDZjswO1I7Ozs7O047Ozs7OworMjAzMDtQRVIgTUlMTEUgU0lHTjtQbzswO0VUOzs7OztOOzs7OzsKKzIwMzE7UEVSIFRFTiBUSE9VU0FORCBTSUdOO1BvOzA7RVQ7Ozs7O047Ozs7OworMjAzMjtQUklNRTtQbzswO0VUOzs7OztOOzs7OzsKKzIwMzM7RE9VQkxFIFBSSU1FO1BvOzA7RVQ7PGNvbXBhdD4gMjAzMiAyMDMyOzs7O047Ozs7OworMjAzNDtUUklQTEUgUFJJTUU7UG87MDtFVDs8Y29tcGF0PiAyMDMyIDIwMzIgMjAzMjs7OztOOzs7OzsKKzIwMzU7UkVWRVJTRUQgUFJJTUU7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDM2O1JFVkVSU0VEIERPVUJMRSBQUklNRTtQbzswO09OOzxjb21wYXQ+IDIwMzUgMjAzNTs7OztOOzs7OzsKKzIwMzc7UkVWRVJTRUQgVFJJUExFIFBSSU1FO1BvOzA7T047PGNvbXBhdD4gMjAzNSAyMDM1IDIwMzU7Ozs7Tjs7Ozs7CisyMDM4O0NBUkVUO1BvOzA7T047Ozs7O047Ozs7OworMjAzOTtTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSztQaTswO09OOzs7OztZO0xFRlQgUE9JTlRJTkcgU0lOR0xFIEdVSUxMRU1FVDs7OzsKKzIwM0E7U0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLO1BmOzA7T047Ozs7O1k7UklHSFQgUE9JTlRJTkcgU0lOR0xFIEdVSUxMRU1FVDs7OzsKKzIwM0I7UkVGRVJFTkNFIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDNDO0RPVUJMRSBFWENMQU1BVElPTiBNQVJLO1BvOzA7T047PGNvbXBhdD4gMDAyMSAwMDIxOzs7O047Ozs7OworMjAzRDtJTlRFUlJPQkFORztQbzswO09OOzs7OztOOzs7OzsKKzIwM0U7T1ZFUkxJTkU7UG87MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDU7Ozs7TjtTUEFDSU5HIE9WRVJTQ09SRTs7OzsKKzIwM0Y7VU5ERVJUSUU7UGM7MDtPTjs7Ozs7Tjs7RW5vdGlrb247OzsKKzIwNDA7Q0hBUkFDVEVSIFRJRTtQYzswO09OOzs7OztOOzs7OzsKKzIwNDE7Q0FSRVQgSU5TRVJUSU9OIFBPSU5UO1BvOzA7T047Ozs7O047Ozs7OworMjA0MjtBU1RFUklTTTtQbzswO09OOzs7OztOOzs7OzsKKzIwNDM7SFlQSEVOIEJVTExFVDtQbzswO09OOzs7OztOOzs7OzsKKzIwNDQ7RlJBQ1RJT04gU0xBU0g7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMDQ1O0xFRlQgU1FVQVJFIEJSQUNLRVQgV0lUSCBRVUlMTDtQczswO09OOzs7OztZOzs7OzsKKzIwNDY7UklHSFQgU1FVQVJFIEJSQUNLRVQgV0lUSCBRVUlMTDtQZTswO09OOzs7OztZOzs7OzsKKzIwNkE7SU5ISUJJVCBTWU1NRVRSSUMgU1dBUFBJTkc7Q2Y7MDtPTjs7Ozs7Tjs7Ozs7CisyMDZCO0FDVElWQVRFIFNZTU1FVFJJQyBTV0FQUElORztDZjswO09OOzs7OztOOzs7OzsKKzIwNkM7SU5ISUJJVCBBUkFCSUMgRk9STSBTSEFQSU5HO0NmOzA7T047Ozs7O047Ozs7OworMjA2RDtBQ1RJVkFURSBBUkFCSUMgRk9STSBTSEFQSU5HO0NmOzA7T047Ozs7O047Ozs7OworMjA2RTtOQVRJT05BTCBESUdJVCBTSEFQRVM7Q2Y7MDtPTjs7Ozs7Tjs7Ozs7CisyMDZGO05PTUlOQUwgRElHSVQgU0hBUEVTO0NmOzA7T047Ozs7O047Ozs7OworMjA3MDtTVVBFUlNDUklQVCBaRVJPO05vOzA7RU47PHN1cGVyPiAwMDMwOzA7MDswO047U1VQRVJTQ1JJUFQgRElHSVQgWkVSTzs7OzsKKzIwNzQ7U1VQRVJTQ1JJUFQgRk9VUjtObzswO0VOOzxzdXBlcj4gMDAzNDs0OzQ7NDtOO1NVUEVSU0NSSVBUIERJR0lUIEZPVVI7Ozs7CisyMDc1O1NVUEVSU0NSSVBUIEZJVkU7Tm87MDtFTjs8c3VwZXI+IDAwMzU7NTs1OzU7TjtTVVBFUlNDUklQVCBESUdJVCBGSVZFOzs7OworMjA3NjtTVVBFUlNDUklQVCBTSVg7Tm87MDtFTjs8c3VwZXI+IDAwMzY7Njs2OzY7TjtTVVBFUlNDUklQVCBESUdJVCBTSVg7Ozs7CisyMDc3O1NVUEVSU0NSSVBUIFNFVkVOO05vOzA7RU47PHN1cGVyPiAwMDM3Ozc7Nzs3O047U1VQRVJTQ1JJUFQgRElHSVQgU0VWRU47Ozs7CisyMDc4O1NVUEVSU0NSSVBUIEVJR0hUO05vOzA7RU47PHN1cGVyPiAwMDM4Ozg7ODs4O047U1VQRVJTQ1JJUFQgRElHSVQgRUlHSFQ7Ozs7CisyMDc5O1NVUEVSU0NSSVBUIE5JTkU7Tm87MDtFTjs8c3VwZXI+IDAwMzk7OTs5Ozk7TjtTVVBFUlNDUklQVCBESUdJVCBOSU5FOzs7OworMjA3QTtTVVBFUlNDUklQVCBQTFVTIFNJR047U207MDtFVDs8c3VwZXI+IDAwMkI7Ozs7Tjs7Ozs7CisyMDdCO1NVUEVSU0NSSVBUIE1JTlVTO1NtOzA7RVQ7PHN1cGVyPiAyMjEyOzs7O047U1VQRVJTQ1JJUFQgSFlQSEVOLU1JTlVTOzs7OworMjA3QztTVVBFUlNDUklQVCBFUVVBTFMgU0lHTjtTbTswO09OOzxzdXBlcj4gMDAzRDs7OztOOzs7OzsKKzIwN0Q7U1VQRVJTQ1JJUFQgTEVGVCBQQVJFTlRIRVNJUztQczswO09OOzxzdXBlcj4gMDAyODs7OztZO1NVUEVSU0NSSVBUIE9QRU5JTkcgUEFSRU5USEVTSVM7Ozs7CisyMDdFO1NVUEVSU0NSSVBUIFJJR0hUIFBBUkVOVEhFU0lTO1BlOzA7T047PHN1cGVyPiAwMDI5Ozs7O1k7U1VQRVJTQ1JJUFQgQ0xPU0lORyBQQVJFTlRIRVNJUzs7OzsKKzIwN0Y7U1VQRVJTQ1JJUFQgTEFUSU4gU01BTEwgTEVUVEVSIE47TGw7MDtMOzxzdXBlcj4gMDA2RTs7OztOOzs7OzsKKzIwODA7U1VCU0NSSVBUIFpFUk87Tm87MDtFTjs8c3ViPiAwMDMwOzA7MDswO047U1VCU0NSSVBUIERJR0lUIFpFUk87Ozs7CisyMDgxO1NVQlNDUklQVCBPTkU7Tm87MDtFTjs8c3ViPiAwMDMxOzE7MTsxO047U1VCU0NSSVBUIERJR0lUIE9ORTs7OzsKKzIwODI7U1VCU0NSSVBUIFRXTztObzswO0VOOzxzdWI+IDAwMzI7MjsyOzI7TjtTVUJTQ1JJUFQgRElHSVQgVFdPOzs7OworMjA4MztTVUJTQ1JJUFQgVEhSRUU7Tm87MDtFTjs8c3ViPiAwMDMzOzM7MzszO047U1VCU0NSSVBUIERJR0lUIFRIUkVFOzs7OworMjA4NDtTVUJTQ1JJUFQgRk9VUjtObzswO0VOOzxzdWI+IDAwMzQ7NDs0OzQ7TjtTVUJTQ1JJUFQgRElHSVQgRk9VUjs7OzsKKzIwODU7U1VCU0NSSVBUIEZJVkU7Tm87MDtFTjs8c3ViPiAwMDM1OzU7NTs1O047U1VCU0NSSVBUIERJR0lUIEZJVkU7Ozs7CisyMDg2O1NVQlNDUklQVCBTSVg7Tm87MDtFTjs8c3ViPiAwMDM2OzY7Njs2O047U1VCU0NSSVBUIERJR0lUIFNJWDs7OzsKKzIwODc7U1VCU0NSSVBUIFNFVkVOO05vOzA7RU47PHN1Yj4gMDAzNzs3Ozc7NztOO1NVQlNDUklQVCBESUdJVCBTRVZFTjs7OzsKKzIwODg7U1VCU0NSSVBUIEVJR0hUO05vOzA7RU47PHN1Yj4gMDAzODs4Ozg7ODtOO1NVQlNDUklQVCBESUdJVCBFSUdIVDs7OzsKKzIwODk7U1VCU0NSSVBUIE5JTkU7Tm87MDtFTjs8c3ViPiAwMDM5Ozk7OTs5O047U1VCU0NSSVBUIERJR0lUIE5JTkU7Ozs7CisyMDhBO1NVQlNDUklQVCBQTFVTIFNJR047U207MDtFVDs8c3ViPiAwMDJCOzs7O047Ozs7OworMjA4QjtTVUJTQ1JJUFQgTUlOVVM7U207MDtFVDs8c3ViPiAyMjEyOzs7O047U1VCU0NSSVBUIEhZUEhFTi1NSU5VUzs7OzsKKzIwOEM7U1VCU0NSSVBUIEVRVUFMUyBTSUdOO1NtOzA7T047PHN1Yj4gMDAzRDs7OztOOzs7OzsKKzIwOEQ7U1VCU0NSSVBUIExFRlQgUEFSRU5USEVTSVM7UHM7MDtPTjs8c3ViPiAwMDI4Ozs7O1k7U1VCU0NSSVBUIE9QRU5JTkcgUEFSRU5USEVTSVM7Ozs7CisyMDhFO1NVQlNDUklQVCBSSUdIVCBQQVJFTlRIRVNJUztQZTswO09OOzxzdWI+IDAwMjk7Ozs7WTtTVUJTQ1JJUFQgQ0xPU0lORyBQQVJFTlRIRVNJUzs7OzsKKzIwQTA7RVVSTy1DVVJSRU5DWSBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBMTtDT0xPTiBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBMjtDUlVaRUlSTyBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBMztGUkVOQ0ggRlJBTkMgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQTQ7TElSQSBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBNTtNSUxMIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEE2O05BSVJBIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEE3O1BFU0VUQSBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBODtSVVBFRSBTSUdOO1NjOzA7RVQ7PGNvbXBhdD4gMDA1MiAwMDczOzs7O047Ozs7OworMjBBOTtXT04gU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQUE7TkVXIFNIRVFFTCBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBQjtET05HIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEFDO0VVUk8gU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwRDA7Q09NQklOSU5HIExFRlQgSEFSUE9PTiBBQk9WRTtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgTEVGVCBIQVJQT09OIEFCT1ZFOzs7OworMjBEMTtDT01CSU5JTkcgUklHSFQgSEFSUE9PTiBBQk9WRTtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgUklHSFQgSEFSUE9PTiBBQk9WRTs7OzsKKzIwRDI7Q09NQklOSU5HIExPTkcgVkVSVElDQUwgTElORSBPVkVSTEFZO01uOzE7T047Ozs7O047Tk9OLVNQQUNJTkcgTE9ORyBWRVJUSUNBTCBCQVIgT1ZFUkxBWTs7OzsKKzIwRDM7Q09NQklOSU5HIFNIT1JUIFZFUlRJQ0FMIExJTkUgT1ZFUkxBWTtNbjsxO09OOzs7OztOO05PTi1TUEFDSU5HIFNIT1JUIFZFUlRJQ0FMIEJBUiBPVkVSTEFZOzs7OworMjBENDtDT01CSU5JTkcgQU5USUNMT0NLV0lTRSBBUlJPVyBBQk9WRTtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgQU5USUNMT0NLV0lTRSBBUlJPVyBBQk9WRTs7OzsKKzIwRDU7Q09NQklOSU5HIENMT0NLV0lTRSBBUlJPVyBBQk9WRTtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgQ0xPQ0tXSVNFIEFSUk9XIEFCT1ZFOzs7OworMjBENjtDT01CSU5JTkcgTEVGVCBBUlJPVyBBQk9WRTtNbjsyMzA7T047Ozs7O047Tk9OLVNQQUNJTkcgTEVGVCBBUlJPVyBBQk9WRTs7OzsKKzIwRDc7Q09NQklOSU5HIFJJR0hUIEFSUk9XIEFCT1ZFO01uOzIzMDtPTjs7Ozs7TjtOT04tU1BBQ0lORyBSSUdIVCBBUlJPVyBBQk9WRTs7OzsKKzIwRDg7Q09NQklOSU5HIFJJTkcgT1ZFUkxBWTtNbjsxO09OOzs7OztOO05PTi1TUEFDSU5HIFJJTkcgT1ZFUkxBWTs7OzsKKzIwRDk7Q09NQklOSU5HIENMT0NLV0lTRSBSSU5HIE9WRVJMQVk7TW47MTtPTjs7Ozs7TjtOT04tU1BBQ0lORyBDTE9DS1dJU0UgUklORyBPVkVSTEFZOzs7OworMjBEQTtDT01CSU5JTkcgQU5USUNMT0NLV0lTRSBSSU5HIE9WRVJMQVk7TW47MTtPTjs7Ozs7TjtOT04tU1BBQ0lORyBBTlRJQ0xPQ0tXSVNFIFJJTkcgT1ZFUkxBWTs7OzsKKzIwREI7Q09NQklOSU5HIFRIUkVFIERPVFMgQUJPVkU7TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIFRIUkVFIERPVFMgQUJPVkU7Ozs7CisyMERDO0NPTUJJTklORyBGT1VSIERPVFMgQUJPVkU7TW47MjMwO09OOzs7OztOO05PTi1TUEFDSU5HIEZPVVIgRE9UUyBBQk9WRTs7OzsKKzIwREQ7Q09NQklOSU5HIEVOQ0xPU0lORyBDSVJDTEU7TWU7MDtPTjs7Ozs7TjtFTkNMT1NJTkcgQ0lSQ0xFOzs7OworMjBERTtDT01CSU5JTkcgRU5DTE9TSU5HIFNRVUFSRTtNZTswO09OOzs7OztOO0VOQ0xPU0lORyBTUVVBUkU7Ozs7CisyMERGO0NPTUJJTklORyBFTkNMT1NJTkcgRElBTU9ORDtNZTswO09OOzs7OztOO0VOQ0xPU0lORyBESUFNT05EOzs7OworMjBFMDtDT01CSU5JTkcgRU5DTE9TSU5HIENJUkNMRSBCQUNLU0xBU0g7TWU7MDtPTjs7Ozs7TjtFTkNMT1NJTkcgQ0lSQ0xFIFNMQVNIOzs7OworMjBFMTtDT01CSU5JTkcgTEVGVCBSSUdIVCBBUlJPVyBBQk9WRTtNbjsxO09OOzs7OztOO05PTi1TUEFDSU5HIExFRlQgUklHSFQgQVJST1cgQUJPVkU7Ozs7CisyMTAwO0FDQ09VTlQgT0Y7U287MDtPTjs8Y29tcGF0PiAwMDYxIDAwMkYgMDA2Mzs7OztOOzs7OzsKKzIxMDE7QUREUkVTU0VEIFRPIFRIRSBTVUJKRUNUO1NvOzA7T047PGNvbXBhdD4gMDA2MSAwMDJGIDAwNzM7Ozs7Tjs7Ozs7CisyMTAyO0RPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBDO0x1OzA7TDs8Zm9udD4gMDA0Mzs7OztOO0RPVUJMRS1TVFJVQ0sgQzs7OzsKKzIxMDM7REVHUkVFIENFTFNJVVM7U287MDtPTjs8Y29tcGF0PiAwMEIwIDAwNDM7Ozs7TjtERUdSRUVTIENFTlRJR1JBREU7Ozs7CisyMTA0O0NFTlRSRSBMSU5FIFNZTUJPTDtTbzswO09OOzs7OztOO0MgTCBTWU1CT0w7Ozs7CisyMTA1O0NBUkUgT0Y7U287MDtPTjs8Y29tcGF0PiAwMDYzIDAwMkYgMDA2Rjs7OztOOzs7OzsKKzIxMDY7Q0FEQSBVTkE7U287MDtPTjs8Y29tcGF0PiAwMDYzIDAwMkYgMDA3NTs7OztOOzs7OzsKKzIxMDc7RVVMRVIgQ09OU1RBTlQ7THU7MDtMOzxjb21wYXQ+IDAxOTA7Ozs7TjtFVUxFUlM7Ozs7CisyMTA4O1NDUlVQTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTA5O0RFR1JFRSBGQUhSRU5IRUlUO1NvOzA7T047PGNvbXBhdD4gMDBCMCAwMDQ2Ozs7O047REVHUkVFUyBGQUhSRU5IRUlUOzs7OworMjEwQTtTQ1JJUFQgU01BTEwgRztMbDswO0w7PGZvbnQ+IDAwNjc7Ozs7Tjs7Ozs7CisyMTBCO1NDUklQVCBDQVBJVEFMIEg7THU7MDtMOzxmb250PiAwMDQ4Ozs7O047U0NSSVBUIEg7Ozs7CisyMTBDO0JMQUNLLUxFVFRFUiBDQVBJVEFMIEg7THU7MDtMOzxmb250PiAwMDQ4Ozs7O047QkxBQ0stTEVUVEVSIEg7Ozs7CisyMTBEO0RPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBIO0x1OzA7TDs8Zm9udD4gMDA0ODs7OztOO0RPVUJMRS1TVFJVQ0sgSDs7OzsKKzIxMEU7UExBTkNLIENPTlNUQU5UO0xsOzA7TDs8Zm9udD4gMDA2ODs7OztOOzs7OzsKKzIxMEY7UExBTkNLIENPTlNUQU5UIE9WRVIgVFdPIFBJO0xsOzA7TDs8Zm9udD4gMDEyNzs7OztOO1BMQU5DSyBDT05TVEFOVCBPVkVSIDIgUEk7Ozs7CisyMTEwO1NDUklQVCBDQVBJVEFMIEk7THU7MDtMOzxmb250PiAwMDQ5Ozs7O047U0NSSVBUIEk7Ozs7CisyMTExO0JMQUNLLUxFVFRFUiBDQVBJVEFMIEk7THU7MDtMOzxmb250PiAwMDQ5Ozs7O047QkxBQ0stTEVUVEVSIEk7Ozs7CisyMTEyO1NDUklQVCBDQVBJVEFMIEw7THU7MDtMOzxmb250PiAwMDRDOzs7O047U0NSSVBUIEw7Ozs7CisyMTEzO1NDUklQVCBTTUFMTCBMO0xsOzA7TDs8Zm9udD4gMDA2Qzs7OztOOzs7OzsKKzIxMTQ7TCBCIEJBUiBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTE1O0RPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBOO0x1OzA7TDs8Zm9udD4gMDA0RTs7OztOO0RPVUJMRS1TVFJVQ0sgTjs7OzsKKzIxMTY7TlVNRVJPIFNJR047U287MDtPTjs8Y29tcGF0PiAwMDRFIDAwNkY7Ozs7TjtOVU1FUk87Ozs7CisyMTE3O1NPVU5EIFJFQ09SRElORyBDT1BZUklHSFQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTE4O1NDUklQVCBDQVBJVEFMIFA7TGw7MDtMOzs7OztOO1NDUklQVCBQOzs7OworMjExOTtET1VCTEUtU1RSVUNLIENBUElUQUwgUDtMdTswO0w7PGZvbnQ+IDAwNTA7Ozs7TjtET1VCTEUtU1RSVUNLIFA7Ozs7CisyMTFBO0RPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBRO0x1OzA7TDs8Zm9udD4gMDA1MTs7OztOO0RPVUJMRS1TVFJVQ0sgUTs7OzsKKzIxMUI7U0NSSVBUIENBUElUQUwgUjtMdTswO0w7PGZvbnQ+IDAwNTI7Ozs7TjtTQ1JJUFQgUjs7OzsKKzIxMUM7QkxBQ0stTEVUVEVSIENBUElUQUwgUjtMdTswO0w7PGZvbnQ+IDAwNTI7Ozs7TjtCTEFDSy1MRVRURVIgUjs7OzsKKzIxMUQ7RE9VQkxFLVNUUlVDSyBDQVBJVEFMIFI7THU7MDtMOzxmb250PiAwMDUyOzs7O047RE9VQkxFLVNUUlVDSyBSOzs7OworMjExRTtQUkVTQ1JJUFRJT04gVEFLRTtTbzswO09OOzs7OztOOzs7OzsKKzIxMUY7UkVTUE9OU0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTIwO1NFUlZJQ0UgTUFSSztTbzswO09OOzxzdXBlcj4gMDA1MyAwMDREOzs7O047Ozs7OworMjEyMTtURUxFUEhPTkUgU0lHTjtTbzswO09OOzxjb21wYXQ+IDAwNTQgMDA0NSAwMDRDOzs7O047VCBFIEwgU1lNQk9MOzs7OworMjEyMjtUUkFERSBNQVJLIFNJR047U287MDtPTjs8c3VwZXI+IDAwNTQgMDA0RDs7OztOO1RSQURFTUFSSzs7OzsKKzIxMjM7VkVSU0lDTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTI0O0RPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBaO0x1OzA7TDs8Zm9udD4gMDA1QTs7OztOO0RPVUJMRS1TVFJVQ0sgWjs7OzsKKzIxMjU7T1VOQ0UgU0lHTjtTbzswO09OOzs7OztOO09VTkNFOzs7OworMjEyNjtPSE0gU0lHTjtMdTswO0w7MDNBOTs7OztOO09ITTs7OzsKKzIxMjc7SU5WRVJURUQgT0hNIFNJR047U287MDtPTjs7Ozs7TjtNSE87Ozs7CisyMTI4O0JMQUNLLUxFVFRFUiBDQVBJVEFMIFo7THU7MDtMOzxmb250PiAwMDVBOzs7O047QkxBQ0stTEVUVEVSIFo7Ozs7CisyMTI5O1RVUk5FRCBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQTtTbzswO09OOzs7OztOOzs7OzsKKzIxMkE7S0VMVklOIFNJR047THU7MDtMOzAwNEI7Ozs7TjtERUdSRUVTIEtFTFZJTjs7OzsKKzIxMkI7QU5HU1RST00gU0lHTjtMdTswO0w7MDBDNTs7OztOO0FOR1NUUk9NIFVOSVQ7Ozs7CisyMTJDO1NDUklQVCBDQVBJVEFMIEI7THU7MDtMOzxmb250PiAwMDQyOzs7O047U0NSSVBUIEI7Ozs7CisyMTJEO0JMQUNLLUxFVFRFUiBDQVBJVEFMIEM7THU7MDtMOzxmb250PiAwMDQzOzs7O047QkxBQ0stTEVUVEVSIEM7Ozs7CisyMTJFO0VTVElNQVRFRCBTWU1CT0w7TGw7MDtMOzs7OztOOzs7OzsKKzIxMkY7U0NSSVBUIFNNQUxMIEU7TGw7MDtMOzxmb250PiAwMDY1Ozs7O047Ozs7OworMjEzMDtTQ1JJUFQgQ0FQSVRBTCBFO0x1OzA7TDs8Zm9udD4gMDA0NTs7OztOO1NDUklQVCBFOzs7OworMjEzMTtTQ1JJUFQgQ0FQSVRBTCBGO0x1OzA7TDs8Zm9udD4gMDA0Njs7OztOO1NDUklQVCBGOzs7OworMjEzMjtUVVJORUQgQ0FQSVRBTCBGO1NvOzA7T047Ozs7O047VFVSTkVEIEY7Ozs7CisyMTMzO1NDUklQVCBDQVBJVEFMIE07THU7MDtMOzxmb250PiAwMDREOzs7O047U0NSSVBUIE07Ozs7CisyMTM0O1NDUklQVCBTTUFMTCBPO0xsOzA7TDs8Zm9udD4gMDA2Rjs7OztOOzs7OzsKKzIxMzU7QUxFRiBTWU1CT0w7TG87MDtMOzxjb21wYXQ+IDA1RDA7Ozs7TjtGSVJTVCBUUkFOU0ZJTklURSBDQVJESU5BTDs7OzsKKzIxMzY7QkVUIFNZTUJPTDtMbzswO0w7PGNvbXBhdD4gMDVEMTs7OztOO1NFQ09ORCBUUkFOU0ZJTklURSBDQVJESU5BTDs7OzsKKzIxMzc7R0lNRUwgU1lNQk9MO0xvOzA7TDs8Y29tcGF0PiAwNUQyOzs7O047VEhJUkQgVFJBTlNGSU5JVEUgQ0FSRElOQUw7Ozs7CisyMTM4O0RBTEVUIFNZTUJPTDtMbzswO0w7PGNvbXBhdD4gMDVEMzs7OztOO0ZPVVJUSCBUUkFOU0ZJTklURSBDQVJESU5BTDs7OzsKKzIxNTM7VlVMR0FSIEZSQUNUSU9OIE9ORSBUSElSRDtObzswO09OOzxmcmFjdGlvbj4gMDAzMSAyMDQ0IDAwMzM7OzsxLzM7TjtGUkFDVElPTiBPTkUgVEhJUkQ7Ozs7CisyMTU0O1ZVTEdBUiBGUkFDVElPTiBUV08gVEhJUkRTO05vOzA7T047PGZyYWN0aW9uPiAwMDMyIDIwNDQgMDAzMzs7OzIvMztOO0ZSQUNUSU9OIFRXTyBUSElSRFM7Ozs7CisyMTU1O1ZVTEdBUiBGUkFDVElPTiBPTkUgRklGVEg7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzEgMjA0NCAwMDM1Ozs7MS81O047RlJBQ1RJT04gT05FIEZJRlRIOzs7OworMjE1NjtWVUxHQVIgRlJBQ1RJT04gVFdPIEZJRlRIUztObzswO09OOzxmcmFjdGlvbj4gMDAzMiAyMDQ0IDAwMzU7OzsyLzU7TjtGUkFDVElPTiBUV08gRklGVEhTOzs7OworMjE1NztWVUxHQVIgRlJBQ1RJT04gVEhSRUUgRklGVEhTO05vOzA7T047PGZyYWN0aW9uPiAwMDMzIDIwNDQgMDAzNTs7OzMvNTtOO0ZSQUNUSU9OIFRIUkVFIEZJRlRIUzs7OzsKKzIxNTg7VlVMR0FSIEZSQUNUSU9OIEZPVVIgRklGVEhTO05vOzA7T047PGZyYWN0aW9uPiAwMDM0IDIwNDQgMDAzNTs7OzQvNTtOO0ZSQUNUSU9OIEZPVVIgRklGVEhTOzs7OworMjE1OTtWVUxHQVIgRlJBQ1RJT04gT05FIFNJWFRIO05vOzA7T047PGZyYWN0aW9uPiAwMDMxIDIwNDQgMDAzNjs7OzEvNjtOO0ZSQUNUSU9OIE9ORSBTSVhUSDs7OzsKKzIxNUE7VlVMR0FSIEZSQUNUSU9OIEZJVkUgU0lYVEhTO05vOzA7T047PGZyYWN0aW9uPiAwMDM1IDIwNDQgMDAzNjs7OzUvNjtOO0ZSQUNUSU9OIEZJVkUgU0lYVEhTOzs7OworMjE1QjtWVUxHQVIgRlJBQ1RJT04gT05FIEVJR0hUSDtObzswO09OOzxmcmFjdGlvbj4gMDAzMSAyMDQ0IDAwMzg7OzsxLzg7TjtGUkFDVElPTiBPTkUgRUlHSFRIOzs7OworMjE1QztWVUxHQVIgRlJBQ1RJT04gVEhSRUUgRUlHSFRIUztObzswO09OOzxmcmFjdGlvbj4gMDAzMyAyMDQ0IDAwMzg7OzszLzg7TjtGUkFDVElPTiBUSFJFRSBFSUdIVEhTOzs7OworMjE1RDtWVUxHQVIgRlJBQ1RJT04gRklWRSBFSUdIVEhTO05vOzA7T047PGZyYWN0aW9uPiAwMDM1IDIwNDQgMDAzODs7OzUvODtOO0ZSQUNUSU9OIEZJVkUgRUlHSFRIUzs7OzsKKzIxNUU7VlVMR0FSIEZSQUNUSU9OIFNFVkVOIEVJR0hUSFM7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzcgMjA0NCAwMDM4Ozs7Ny84O047RlJBQ1RJT04gU0VWRU4gRUlHSFRIUzs7OzsKKzIxNUY7RlJBQ1RJT04gTlVNRVJBVE9SIE9ORTtObzswO09OOzxmcmFjdGlvbj4gMDAzMSAyMDQ0Ozs7MTtOOzs7OzsKKzIxNjA7Uk9NQU4gTlVNRVJBTCBPTkU7Tmw7MDtMOzxjb21wYXQ+IDAwNDk7OzsxO047Ozs7MjE3MDsKKzIxNjE7Uk9NQU4gTlVNRVJBTCBUV087Tmw7MDtMOzxjb21wYXQ+IDAwNDkgMDA0OTs7OzI7Tjs7OzsyMTcxOworMjE2MjtST01BTiBOVU1FUkFMIFRIUkVFO05sOzA7TDs8Y29tcGF0PiAwMDQ5IDAwNDkgMDA0OTs7OzM7Tjs7OzsyMTcyOworMjE2MztST01BTiBOVU1FUkFMIEZPVVI7Tmw7MDtMOzxjb21wYXQ+IDAwNDkgMDA1Njs7OzQ7Tjs7OzsyMTczOworMjE2NDtST01BTiBOVU1FUkFMIEZJVkU7Tmw7MDtMOzxjb21wYXQ+IDAwNTY7Ozs1O047Ozs7MjE3NDsKKzIxNjU7Uk9NQU4gTlVNRVJBTCBTSVg7Tmw7MDtMOzxjb21wYXQ+IDAwNTYgMDA0OTs7OzY7Tjs7OzsyMTc1OworMjE2NjtST01BTiBOVU1FUkFMIFNFVkVOO05sOzA7TDs8Y29tcGF0PiAwMDU2IDAwNDkgMDA0OTs7Ozc7Tjs7OzsyMTc2OworMjE2NztST01BTiBOVU1FUkFMIEVJR0hUO05sOzA7TDs8Y29tcGF0PiAwMDU2IDAwNDkgMDA0OSAwMDQ5Ozs7ODtOOzs7OzIxNzc7CisyMTY4O1JPTUFOIE5VTUVSQUwgTklORTtObDswO0w7PGNvbXBhdD4gMDA0OSAwMDU4Ozs7OTtOOzs7OzIxNzg7CisyMTY5O1JPTUFOIE5VTUVSQUwgVEVOO05sOzA7TDs8Y29tcGF0PiAwMDU4Ozs7MTA7Tjs7OzsyMTc5OworMjE2QTtST01BTiBOVU1FUkFMIEVMRVZFTjtObDswO0w7PGNvbXBhdD4gMDA1OCAwMDQ5Ozs7MTE7Tjs7OzsyMTdBOworMjE2QjtST01BTiBOVU1FUkFMIFRXRUxWRTtObDswO0w7PGNvbXBhdD4gMDA1OCAwMDQ5IDAwNDk7OzsxMjtOOzs7OzIxN0I7CisyMTZDO1JPTUFOIE5VTUVSQUwgRklGVFk7Tmw7MDtMOzxjb21wYXQ+IDAwNEM7Ozs1MDtOOzs7OzIxN0M7CisyMTZEO1JPTUFOIE5VTUVSQUwgT05FIEhVTkRSRUQ7Tmw7MDtMOzxjb21wYXQ+IDAwNDM7OzsxMDA7Tjs7OzsyMTdEOworMjE2RTtST01BTiBOVU1FUkFMIEZJVkUgSFVORFJFRDtObDswO0w7PGNvbXBhdD4gMDA0NDs7OzUwMDtOOzs7OzIxN0U7CisyMTZGO1JPTUFOIE5VTUVSQUwgT05FIFRIT1VTQU5EO05sOzA7TDs8Y29tcGF0PiAwMDREOzs7MTAwMDtOOzs7OzIxN0Y7CisyMTcwO1NNQUxMIFJPTUFOIE5VTUVSQUwgT05FO05sOzA7TDs8Y29tcGF0PiAwMDY5Ozs7MTtOOzs7MjE2MDs7MjE2MAorMjE3MTtTTUFMTCBST01BTiBOVU1FUkFMIFRXTztObDswO0w7PGNvbXBhdD4gMDA2OSAwMDY5Ozs7MjtOOzs7MjE2MTs7MjE2MQorMjE3MjtTTUFMTCBST01BTiBOVU1FUkFMIFRIUkVFO05sOzA7TDs8Y29tcGF0PiAwMDY5IDAwNjkgMDA2OTs7OzM7Tjs7OzIxNjI7OzIxNjIKKzIxNzM7U01BTEwgUk9NQU4gTlVNRVJBTCBGT1VSO05sOzA7TDs8Y29tcGF0PiAwMDY5IDAwNzY7Ozs0O047OzsyMTYzOzsyMTYzCisyMTc0O1NNQUxMIFJPTUFOIE5VTUVSQUwgRklWRTtObDswO0w7PGNvbXBhdD4gMDA3Njs7OzU7Tjs7OzIxNjQ7OzIxNjQKKzIxNzU7U01BTEwgUk9NQU4gTlVNRVJBTCBTSVg7Tmw7MDtMOzxjb21wYXQ+IDAwNzYgMDA2OTs7OzY7Tjs7OzIxNjU7OzIxNjUKKzIxNzY7U01BTEwgUk9NQU4gTlVNRVJBTCBTRVZFTjtObDswO0w7PGNvbXBhdD4gMDA3NiAwMDY5IDAwNjk7Ozs3O047OzsyMTY2OzsyMTY2CisyMTc3O1NNQUxMIFJPTUFOIE5VTUVSQUwgRUlHSFQ7Tmw7MDtMOzxjb21wYXQ+IDAwNzYgMDA2OSAwMDY5IDAwNjk7Ozs4O047OzsyMTY3OzsyMTY3CisyMTc4O1NNQUxMIFJPTUFOIE5VTUVSQUwgTklORTtObDswO0w7PGNvbXBhdD4gMDA2OSAwMDc4Ozs7OTtOOzs7MjE2ODs7MjE2OAorMjE3OTtTTUFMTCBST01BTiBOVU1FUkFMIFRFTjtObDswO0w7PGNvbXBhdD4gMDA3ODs7OzEwO047OzsyMTY5OzsyMTY5CisyMTdBO1NNQUxMIFJPTUFOIE5VTUVSQUwgRUxFVkVOO05sOzA7TDs8Y29tcGF0PiAwMDc4IDAwNjk7OzsxMTtOOzs7MjE2QTs7MjE2QQorMjE3QjtTTUFMTCBST01BTiBOVU1FUkFMIFRXRUxWRTtObDswO0w7PGNvbXBhdD4gMDA3OCAwMDY5IDAwNjk7OzsxMjtOOzs7MjE2Qjs7MjE2QgorMjE3QztTTUFMTCBST01BTiBOVU1FUkFMIEZJRlRZO05sOzA7TDs8Y29tcGF0PiAwMDZDOzs7NTA7Tjs7OzIxNkM7OzIxNkMKKzIxN0Q7U01BTEwgUk9NQU4gTlVNRVJBTCBPTkUgSFVORFJFRDtObDswO0w7PGNvbXBhdD4gMDA2Mzs7OzEwMDtOOzs7MjE2RDs7MjE2RAorMjE3RTtTTUFMTCBST01BTiBOVU1FUkFMIEZJVkUgSFVORFJFRDtObDswO0w7PGNvbXBhdD4gMDA2NDs7OzUwMDtOOzs7MjE2RTs7MjE2RQorMjE3RjtTTUFMTCBST01BTiBOVU1FUkFMIE9ORSBUSE9VU0FORDtObDswO0w7PGNvbXBhdD4gMDA2RDs7OzEwMDA7Tjs7OzIxNkY7OzIxNkYKKzIxODA7Uk9NQU4gTlVNRVJBTCBPTkUgVEhPVVNBTkQgQyBEO05sOzA7TDs7OzsxMDAwO047Ozs7OworMjE4MTtST01BTiBOVU1FUkFMIEZJVkUgVEhPVVNBTkQ7Tmw7MDtMOzs7OzUwMDA7Tjs7Ozs7CisyMTgyO1JPTUFOIE5VTUVSQUwgVEVOIFRIT1VTQU5EO05sOzA7TDs7OzsxMDAwMDtOOzs7OzsKKzIxOTA7TEVGVFdBUkRTIEFSUk9XO1NtOzA7T047Ozs7O047TEVGVCBBUlJPVzs7OzsKKzIxOTE7VVBXQVJEUyBBUlJPVztTbTswO09OOzs7OztOO1VQIEFSUk9XOzs7OworMjE5MjtSSUdIVFdBUkRTIEFSUk9XO1NtOzA7T047Ozs7O047UklHSFQgQVJST1c7Ozs7CisyMTkzO0RPV05XQVJEUyBBUlJPVztTbTswO09OOzs7OztOO0RPV04gQVJST1c7Ozs7CisyMTk0O0xFRlQgUklHSFQgQVJST1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMTk1O1VQIERPV04gQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTk2O05PUlRIIFdFU1QgQVJST1c7U287MDtPTjs7Ozs7TjtVUFBFUiBMRUZUIEFSUk9XOzs7OworMjE5NztOT1JUSCBFQVNUIEFSUk9XO1NvOzA7T047Ozs7O047VVBQRVIgUklHSFQgQVJST1c7Ozs7CisyMTk4O1NPVVRIIEVBU1QgQVJST1c7U287MDtPTjs7Ozs7TjtMT1dFUiBSSUdIVCBBUlJPVzs7OzsKKzIxOTk7U09VVEggV0VTVCBBUlJPVztTbzswO09OOzs7OztOO0xPV0VSIExFRlQgQVJST1c7Ozs7CisyMTlBO0xFRlRXQVJEUyBBUlJPVyBXSVRIIFNUUk9LRTtTbzswO09OOzs7OztOO0xFRlQgQVJST1cgV0lUSCBTVFJPS0U7Ozs7CisyMTlCO1JJR0hUV0FSRFMgQVJST1cgV0lUSCBTVFJPS0U7U287MDtPTjs7Ozs7TjtSSUdIVCBBUlJPVyBXSVRIIFNUUk9LRTs7OzsKKzIxOUM7TEVGVFdBUkRTIFdBVkUgQVJST1c7U287MDtPTjs7Ozs7TjtMRUZUIFdBVkUgQVJST1c7Ozs7CisyMTlEO1JJR0hUV0FSRFMgV0FWRSBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIFdBVkUgQVJST1c7Ozs7CisyMTlFO0xFRlRXQVJEUyBUV08gSEVBREVEIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBUV08gSEVBREVEIEFSUk9XOzs7OworMjE5RjtVUFdBUkRTIFRXTyBIRUFERUQgQVJST1c7U287MDtPTjs7Ozs7TjtVUCBUV08gSEVBREVEIEFSUk9XOzs7OworMjFBMDtSSUdIVFdBUkRTIFRXTyBIRUFERUQgQVJST1c7U287MDtPTjs7Ozs7TjtSSUdIVCBUV08gSEVBREVEIEFSUk9XOzs7OworMjFBMTtET1dOV0FSRFMgVFdPIEhFQURFRCBBUlJPVztTbzswO09OOzs7OztOO0RPV04gVFdPIEhFQURFRCBBUlJPVzs7OzsKKzIxQTI7TEVGVFdBUkRTIEFSUk9XIFdJVEggVEFJTDtTbzswO09OOzs7OztOO0xFRlQgQVJST1cgV0lUSCBUQUlMOzs7OworMjFBMztSSUdIVFdBUkRTIEFSUk9XIFdJVEggVEFJTDtTbzswO09OOzs7OztOO1JJR0hUIEFSUk9XIFdJVEggVEFJTDs7OzsKKzIxQTQ7TEVGVFdBUkRTIEFSUk9XIEZST00gQkFSO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBGUk9NIEJBUjs7OzsKKzIxQTU7VVBXQVJEUyBBUlJPVyBGUk9NIEJBUjtTbzswO09OOzs7OztOO1VQIEFSUk9XIEZST00gQkFSOzs7OworMjFBNjtSSUdIVFdBUkRTIEFSUk9XIEZST00gQkFSO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgRlJPTSBCQVI7Ozs7CisyMUE3O0RPV05XQVJEUyBBUlJPVyBGUk9NIEJBUjtTbzswO09OOzs7OztOO0RPV04gQVJST1cgRlJPTSBCQVI7Ozs7CisyMUE4O1VQIERPV04gQVJST1cgV0lUSCBCQVNFO1NvOzA7T047Ozs7O047Ozs7OworMjFBOTtMRUZUV0FSRFMgQVJST1cgV0lUSCBIT09LO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBXSVRIIEhPT0s7Ozs7CisyMUFBO1JJR0hUV0FSRFMgQVJST1cgV0lUSCBIT09LO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgV0lUSCBIT09LOzs7OworMjFBQjtMRUZUV0FSRFMgQVJST1cgV0lUSCBMT09QO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBXSVRIIExPT1A7Ozs7CisyMUFDO1JJR0hUV0FSRFMgQVJST1cgV0lUSCBMT09QO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgV0lUSCBMT09QOzs7OworMjFBRDtMRUZUIFJJR0hUIFdBVkUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUFFO0xFRlQgUklHSFQgQVJST1cgV0lUSCBTVFJPS0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUFGO0RPV05XQVJEUyBaSUdaQUcgQVJST1c7U287MDtPTjs7Ozs7TjtET1dOIFpJR1pBRyBBUlJPVzs7OzsKKzIxQjA7VVBXQVJEUyBBUlJPVyBXSVRIIFRJUCBMRUZUV0FSRFM7U287MDtPTjs7Ozs7TjtVUCBBUlJPVyBXSVRIIFRJUCBMRUZUOzs7OworMjFCMTtVUFdBUkRTIEFSUk9XIFdJVEggVElQIFJJR0hUV0FSRFM7U287MDtPTjs7Ozs7TjtVUCBBUlJPVyBXSVRIIFRJUCBSSUdIVDs7OzsKKzIxQjI7RE9XTldBUkRTIEFSUk9XIFdJVEggVElQIExFRlRXQVJEUztTbzswO09OOzs7OztOO0RPV04gQVJST1cgV0lUSCBUSVAgTEVGVDs7OzsKKzIxQjM7RE9XTldBUkRTIEFSUk9XIFdJVEggVElQIFJJR0hUV0FSRFM7U287MDtPTjs7Ozs7TjtET1dOIEFSUk9XIFdJVEggVElQIFJJR0hUOzs7OworMjFCNDtSSUdIVFdBUkRTIEFSUk9XIFdJVEggQ09STkVSIERPV05XQVJEUztTbzswO09OOzs7OztOO1JJR0hUIEFSUk9XIFdJVEggQ09STkVSIERPV047Ozs7CisyMUI1O0RPV05XQVJEUyBBUlJPVyBXSVRIIENPUk5FUiBMRUZUV0FSRFM7U287MDtPTjs7Ozs7TjtET1dOIEFSUk9XIFdJVEggQ09STkVSIExFRlQ7Ozs7CisyMUI2O0FOVElDTE9DS1dJU0UgVE9QIFNFTUlDSVJDTEUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUI3O0NMT0NLV0lTRSBUT1AgU0VNSUNJUkNMRSBBUlJPVztTbzswO09OOzs7OztOOzs7OzsKKzIxQjg7Tk9SVEggV0VTVCBBUlJPVyBUTyBMT05HIEJBUjtTbzswO09OOzs7OztOO1VQUEVSIExFRlQgQVJST1cgVE8gTE9ORyBCQVI7Ozs7CisyMUI5O0xFRlRXQVJEUyBBUlJPVyBUTyBCQVIgT1ZFUiBSSUdIVFdBUkRTIEFSUk9XIFRPIEJBUjtTbzswO09OOzs7OztOO0xFRlQgQVJST1cgVE8gQkFSIE9WRVIgUklHSFQgQVJST1cgVE8gQkFSOzs7OworMjFCQTtBTlRJQ0xPQ0tXSVNFIE9QRU4gQ0lSQ0xFIEFSUk9XO1NvOzA7T047Ozs7O047Ozs7OworMjFCQjtDTE9DS1dJU0UgT1BFTiBDSVJDTEUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUJDO0xFRlRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBVUFdBUkRTO1NvOzA7T047Ozs7O047TEVGVCBIQVJQT09OIFdJVEggQkFSQiBVUDs7OzsKKzIxQkQ7TEVGVFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIERPV05XQVJEUztTbzswO09OOzs7OztOO0xFRlQgSEFSUE9PTiBXSVRIIEJBUkIgRE9XTjs7OzsKKzIxQkU7VVBXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBSSUdIVFdBUkRTO1NvOzA7T047Ozs7O047VVAgSEFSUE9PTiBXSVRIIEJBUkIgUklHSFQ7Ozs7CisyMUJGO1VQV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgTEVGVFdBUkRTO1NvOzA7T047Ozs7O047VVAgSEFSUE9PTiBXSVRIIEJBUkIgTEVGVDs7OzsKKzIxQzA7UklHSFRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBVUFdBUkRTO1NvOzA7T047Ozs7O047UklHSFQgSEFSUE9PTiBXSVRIIEJBUkIgVVA7Ozs7CisyMUMxO1JJR0hUV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgRE9XTldBUkRTO1NvOzA7T047Ozs7O047UklHSFQgSEFSUE9PTiBXSVRIIEJBUkIgRE9XTjs7OzsKKzIxQzI7RE9XTldBUkRTIEhBUlBPT04gV0lUSCBCQVJCIFJJR0hUV0FSRFM7U287MDtPTjs7Ozs7TjtET1dOIEhBUlBPT04gV0lUSCBCQVJCIFJJR0hUOzs7OworMjFDMztET1dOV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgTEVGVFdBUkRTO1NvOzA7T047Ozs7O047RE9XTiBIQVJQT09OIFdJVEggQkFSQiBMRUZUOzs7OworMjFDNDtSSUdIVFdBUkRTIEFSUk9XIE9WRVIgTEVGVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgT1ZFUiBMRUZUIEFSUk9XOzs7OworMjFDNTtVUFdBUkRTIEFSUk9XIExFRlRXQVJEUyBPRiBET1dOV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtVUCBBUlJPVyBMRUZUIE9GIERPV04gQVJST1c7Ozs7CisyMUM2O0xFRlRXQVJEUyBBUlJPVyBPVkVSIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtMRUZUIEFSUk9XIE9WRVIgUklHSFQgQVJST1c7Ozs7CisyMUM3O0xFRlRXQVJEUyBQQUlSRUQgQVJST1dTO1NvOzA7T047Ozs7O047TEVGVCBQQUlSRUQgQVJST1dTOzs7OworMjFDODtVUFdBUkRTIFBBSVJFRCBBUlJPV1M7U287MDtPTjs7Ozs7TjtVUCBQQUlSRUQgQVJST1dTOzs7OworMjFDOTtSSUdIVFdBUkRTIFBBSVJFRCBBUlJPV1M7U287MDtPTjs7Ozs7TjtSSUdIVCBQQUlSRUQgQVJST1dTOzs7OworMjFDQTtET1dOV0FSRFMgUEFJUkVEIEFSUk9XUztTbzswO09OOzs7OztOO0RPV04gUEFJUkVEIEFSUk9XUzs7OzsKKzIxQ0I7TEVGVFdBUkRTIEhBUlBPT04gT1ZFUiBSSUdIVFdBUkRTIEhBUlBPT047U287MDtPTjs7Ozs7TjtMRUZUIEhBUlBPT04gT1ZFUiBSSUdIVCBIQVJQT09OOzs7OworMjFDQztSSUdIVFdBUkRTIEhBUlBPT04gT1ZFUiBMRUZUV0FSRFMgSEFSUE9PTjtTbzswO09OOzs7OztOO1JJR0hUIEhBUlBPT04gT1ZFUiBMRUZUIEhBUlBPT047Ozs7CisyMUNEO0xFRlRXQVJEUyBET1VCTEUgQVJST1cgV0lUSCBTVFJPS0U7U287MDtPTjs7Ozs7TjtMRUZUIERPVUJMRSBBUlJPVyBXSVRIIFNUUk9LRTs7OzsKKzIxQ0U7TEVGVCBSSUdIVCBET1VCTEUgQVJST1cgV0lUSCBTVFJPS0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUNGO1JJR0hUV0FSRFMgRE9VQkxFIEFSUk9XIFdJVEggU1RST0tFO1NvOzA7T047Ozs7O047UklHSFQgRE9VQkxFIEFSUk9XIFdJVEggU1RST0tFOzs7OworMjFEMDtMRUZUV0FSRFMgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBET1VCTEUgQVJST1c7Ozs7CisyMUQxO1VQV0FSRFMgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047VVAgRE9VQkxFIEFSUk9XOzs7OworMjFEMjtSSUdIVFdBUkRTIERPVUJMRSBBUlJPVztTbTswO09OOzs7OztOO1JJR0hUIERPVUJMRSBBUlJPVzs7OzsKKzIxRDM7RE9XTldBUkRTIERPVUJMRSBBUlJPVztTbzswO09OOzs7OztOO0RPV04gRE9VQkxFIEFSUk9XOzs7OworMjFENDtMRUZUIFJJR0hUIERPVUJMRSBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzIxRDU7VVAgRE9XTiBET1VCTEUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUQ2O05PUlRIIFdFU1QgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047VVBQRVIgTEVGVCBET1VCTEUgQVJST1c7Ozs7CisyMUQ3O05PUlRIIEVBU1QgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047VVBQRVIgUklHSFQgRE9VQkxFIEFSUk9XOzs7OworMjFEODtTT1VUSCBFQVNUIERPVUJMRSBBUlJPVztTbzswO09OOzs7OztOO0xPV0VSIFJJR0hUIERPVUJMRSBBUlJPVzs7OzsKKzIxRDk7U09VVEggV0VTVCBET1VCTEUgQVJST1c7U287MDtPTjs7Ozs7TjtMT1dFUiBMRUZUIERPVUJMRSBBUlJPVzs7OzsKKzIxREE7TEVGVFdBUkRTIFRSSVBMRSBBUlJPVztTbzswO09OOzs7OztOO0xFRlQgVFJJUExFIEFSUk9XOzs7OworMjFEQjtSSUdIVFdBUkRTIFRSSVBMRSBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIFRSSVBMRSBBUlJPVzs7OzsKKzIxREM7TEVGVFdBUkRTIFNRVUlHR0xFIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBTUVVJR0dMRSBBUlJPVzs7OzsKKzIxREQ7UklHSFRXQVJEUyBTUVVJR0dMRSBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIFNRVUlHR0xFIEFSUk9XOzs7OworMjFERTtVUFdBUkRTIEFSUk9XIFdJVEggRE9VQkxFIFNUUk9LRTtTbzswO09OOzs7OztOO1VQIEFSUk9XIFdJVEggRE9VQkxFIFNUUk9LRTs7OzsKKzIxREY7RE9XTldBUkRTIEFSUk9XIFdJVEggRE9VQkxFIFNUUk9LRTtTbzswO09OOzs7OztOO0RPV04gQVJST1cgV0lUSCBET1VCTEUgU1RST0tFOzs7OworMjFFMDtMRUZUV0FSRFMgREFTSEVEIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBEQVNIRUQgQVJST1c7Ozs7CisyMUUxO1VQV0FSRFMgREFTSEVEIEFSUk9XO1NvOzA7T047Ozs7O047VVAgREFTSEVEIEFSUk9XOzs7OworMjFFMjtSSUdIVFdBUkRTIERBU0hFRCBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIERBU0hFRCBBUlJPVzs7OzsKKzIxRTM7RE9XTldBUkRTIERBU0hFRCBBUlJPVztTbzswO09OOzs7OztOO0RPV04gREFTSEVEIEFSUk9XOzs7OworMjFFNDtMRUZUV0FSRFMgQVJST1cgVE8gQkFSO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBUTyBCQVI7Ozs7CisyMUU1O1JJR0hUV0FSRFMgQVJST1cgVE8gQkFSO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgVE8gQkFSOzs7OworMjFFNjtMRUZUV0FSRFMgV0hJVEUgQVJST1c7U287MDtPTjs7Ozs7TjtXSElURSBMRUZUIEFSUk9XOzs7OworMjFFNztVUFdBUkRTIFdISVRFIEFSUk9XO1NvOzA7T047Ozs7O047V0hJVEUgVVAgQVJST1c7Ozs7CisyMUU4O1JJR0hUV0FSRFMgV0hJVEUgQVJST1c7U287MDtPTjs7Ozs7TjtXSElURSBSSUdIVCBBUlJPVzs7OzsKKzIxRTk7RE9XTldBUkRTIFdISVRFIEFSUk9XO1NvOzA7T047Ozs7O047V0hJVEUgRE9XTiBBUlJPVzs7OzsKKzIxRUE7VVBXQVJEUyBXSElURSBBUlJPVyBGUk9NIEJBUjtTbzswO09OOzs7OztOO1dISVRFIFVQIEFSUk9XIEZST00gQkFSOzs7OworMjIwMDtGT1IgQUxMO1NtOzA7T047Ozs7O047Ozs7OworMjIwMTtDT01QTEVNRU5UO1NtOzA7T047Ozs7O1k7Ozs7OworMjIwMjtQQVJUSUFMIERJRkZFUkVOVElBTDtTbTswO09OOzs7OztZOzs7OzsKKzIyMDM7VEhFUkUgRVhJU1RTO1NtOzA7T047Ozs7O1k7Ozs7OworMjIwNDtUSEVSRSBET0VTIE5PVCBFWElTVDtTbTswO09OOzIyMDMgMDMzODs7OztZOzs7OzsKKzIyMDU7RU1QVFkgU0VUO1NtOzA7T047Ozs7O047Ozs7OworMjIwNjtJTkNSRU1FTlQ7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjA3O05BQkxBO1NtOzA7T047Ozs7O047Ozs7OworMjIwODtFTEVNRU5UIE9GO1NtOzA7T047Ozs7O1k7Ozs7OworMjIwOTtOT1QgQU4gRUxFTUVOVCBPRjtTbTswO09OOzIyMDggMDMzODs7OztZOzs7OzsKKzIyMEE7U01BTEwgRUxFTUVOVCBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyMEI7Q09OVEFJTlMgQVMgTUVNQkVSO1NtOzA7T047Ozs7O1k7Ozs7OworMjIwQztET0VTIE5PVCBDT05UQUlOIEFTIE1FTUJFUjtTbTswO09OOzIyMEIgMDMzODs7OztZOzs7OzsKKzIyMEQ7U01BTEwgQ09OVEFJTlMgQVMgTUVNQkVSO1NtOzA7T047Ozs7O1k7Ozs7OworMjIwRTtFTkQgT0YgUFJPT0Y7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjBGO04tQVJZIFBST0RVQ1Q7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjEwO04tQVJZIENPUFJPRFVDVDtTbTswO09OOzs7OztOOzs7OzsKKzIyMTE7Ti1BUlkgU1VNTUFUSU9OO1NtOzA7T047Ozs7O1k7Ozs7OworMjIxMjtNSU5VUyBTSUdOO1NtOzA7RVQ7Ozs7O047Ozs7OworMjIxMztNSU5VUy1PUi1QTFVTIFNJR047U207MDtFVDs7Ozs7Tjs7Ozs7CisyMjE0O0RPVCBQTFVTO1NtOzA7T047Ozs7O047Ozs7OworMjIxNTtESVZJU0lPTiBTTEFTSDtTbTswO09OOzs7OztZOzs7OzsKKzIyMTY7U0VUIE1JTlVTO1NtOzA7T047Ozs7O1k7Ozs7OworMjIxNztBU1RFUklTSyBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyMTg7UklORyBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyMTk7QlVMTEVUIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjIxQTtTUVVBUkUgUk9PVDtTbTswO09OOzs7OztZOzs7OzsKKzIyMUI7Q1VCRSBST09UO1NtOzA7T047Ozs7O1k7Ozs7OworMjIxQztGT1VSVEggUk9PVDtTbTswO09OOzs7OztZOzs7OzsKKzIyMUQ7UFJPUE9SVElPTkFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjIxRTtJTkZJTklUWTtTbTswO09OOzs7OztOOzs7OzsKKzIyMUY7UklHSFQgQU5HTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjIwO0FOR0xFO1NtOzA7T047Ozs7O1k7Ozs7OworMjIyMTtNRUFTVVJFRCBBTkdMRTtTbTswO09OOzs7OztZOzs7OzsKKzIyMjI7U1BIRVJJQ0FMIEFOR0xFO1NtOzA7T047Ozs7O1k7Ozs7OworMjIyMztESVZJREVTO1NtOzA7T047Ozs7O047Ozs7OworMjIyNDtET0VTIE5PVCBESVZJREU7U207MDtPTjsyMjIzIDAzMzg7Ozs7WTs7Ozs7CisyMjI1O1BBUkFMTEVMIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjIyNjtOT1QgUEFSQUxMRUwgVE87U207MDtPTjsyMjI1IDAzMzg7Ozs7WTs7Ozs7CisyMjI3O0xPR0lDQUwgQU5EO1NtOzA7T047Ozs7O047Ozs7OworMjIyODtMT0dJQ0FMIE9SO1NtOzA7T047Ozs7O047Ozs7OworMjIyOTtJTlRFUlNFQ1RJT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjJBO1VOSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjIyQjtJTlRFR1JBTDtTbTswO09OOzs7OztZOzs7OzsKKzIyMkM7RE9VQkxFIElOVEVHUkFMO1NtOzA7T047PGNvbXBhdD4gMjIyQiAyMjJCOzs7O1k7Ozs7OworMjIyRDtUUklQTEUgSU5URUdSQUw7U207MDtPTjs8Y29tcGF0PiAyMjJCIDIyMkIgMjIyQjs7OztZOzs7OzsKKzIyMkU7Q09OVE9VUiBJTlRFR1JBTDtTbTswO09OOzs7OztZOzs7OzsKKzIyMkY7U1VSRkFDRSBJTlRFR1JBTDtTbTswO09OOzxjb21wYXQ+IDIyMkUgMjIyRTs7OztZOzs7OzsKKzIyMzA7Vk9MVU1FIElOVEVHUkFMO1NtOzA7T047PGNvbXBhdD4gMjIyRSAyMjJFIDIyMkU7Ozs7WTs7Ozs7CisyMjMxO0NMT0NLV0lTRSBJTlRFR1JBTDtTbTswO09OOzs7OztZOzs7OzsKKzIyMzI7Q0xPQ0tXSVNFIENPTlRPVVIgSU5URUdSQUw7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjMzO0FOVElDTE9DS1dJU0UgQ09OVE9VUiBJTlRFR1JBTDtTbTswO09OOzs7OztZOzs7OzsKKzIyMzQ7VEhFUkVGT1JFO1NtOzA7T047Ozs7O047Ozs7OworMjIzNTtCRUNBVVNFO1NtOzA7T047Ozs7O047Ozs7OworMjIzNjtSQVRJTztTbTswO09OOzs7OztOOzs7OzsKKzIyMzc7UFJPUE9SVElPTjtTbTswO09OOzs7OztOOzs7OzsKKzIyMzg7RE9UIE1JTlVTO1NtOzA7T047Ozs7O047Ozs7OworMjIzOTtFWENFU1M7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjNBO0dFT01FVFJJQyBQUk9QT1JUSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjIzQjtIT01PVEhFVElDO1NtOzA7T047Ozs7O1k7Ozs7OworMjIzQztUSUxERSBPUEVSQVRPUjtTbTswO09OOzs7OztZOzs7OzsKKzIyM0Q7UkVWRVJTRUQgVElMREU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjNFO0lOVkVSVEVEIExBWlkgUztTbTswO09OOzs7OztZOzs7OzsKKzIyM0Y7U0lORSBXQVZFO1NtOzA7T047Ozs7O1k7Ozs7OworMjI0MDtXUkVBVEggUFJPRFVDVDtTbTswO09OOzs7OztZOzs7OzsKKzIyNDE7Tk9UIFRJTERFO1NtOzA7T047MDA3RSAwMzM4Ozs7O1k7Ozs7OworMjI0MjtNSU5VUyBUSUxERTtTbTswO09OOzs7OztZOzs7OzsKKzIyNDM7QVNZTVBUT1RJQ0FMTFkgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjQ0O05PVCBBU1lNUFRPVElDQUxMWSBFUVVBTCBUTztTbTswO09OOzIyNDMgMDMzODs7OztZOzs7OzsKKzIyNDU7QVBQUk9YSU1BVEVMWSBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyNDY7QVBQUk9YSU1BVEVMWSBCVVQgTk9UIEFDVFVBTExZIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI0NztORUlUSEVSIEFQUFJPWElNQVRFTFkgTk9SIEFDVFVBTExZIEVRVUFMIFRPO1NtOzA7T047MjI0NSAwMzM4Ozs7O1k7Ozs7OworMjI0ODtBTE1PU1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjQ5O05PVCBBTE1PU1QgRVFVQUwgVE87U207MDtPTjsyMjQ4IDAzMzg7Ozs7WTs7Ozs7CisyMjRBO0FMTU9TVCBFUVVBTCBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyNEI7VFJJUExFIFRJTERFO1NtOzA7T047Ozs7O1k7Ozs7OworMjI0QztBTEwgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjREO0VRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjRFO0dFT01FVFJJQ0FMTFkgRVFVSVZBTEVOVCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNEY7RElGRkVSRU5DRSBCRVRXRUVOO1NtOzA7T047Ozs7O047Ozs7OworMjI1MDtBUFBST0FDSEVTIFRIRSBMSU1JVDtTbTswO09OOzs7OztOOzs7OzsKKzIyNTE7R0VPTUVUUklDQUxMWSBFUVVBTCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNTI7QVBQUk9YSU1BVEVMWSBFUVVBTCBUTyBPUiBUSEUgSU1BR0UgT0Y7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjUzO0lNQUdFIE9GIE9SIEFQUFJPWElNQVRFTFkgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjU0O0NPTE9OIEVRVUFMUztTbTswO09OOzs7OztZO0NPTE9OIEVRVUFMOzs7OworMjI1NTtFUVVBTFMgQ09MT047U207MDtPTjs7Ozs7WTtFUVVBTCBDT0xPTjs7OzsKKzIyNTY7UklORyBJTiBFUVVBTCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNTc7UklORyBFUVVBTCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNTg7Q09SUkVTUE9ORFMgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjU5O0VTVElNQVRFUztTbTswO09OOzs7OztOOzs7OzsKKzIyNUE7RVFVSUFOR1VMQVIgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjVCO1NUQVIgRVFVQUxTO1NtOzA7T047Ozs7O047Ozs7OworMjI1QztERUxUQSBFUVVBTCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNUQ7RVFVQUwgVE8gQlkgREVGSU5JVElPTjtTbTswO09OOzs7OztOOzs7OzsKKzIyNUU7TUVBU1VSRUQgQlk7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjVGO1FVRVNUSU9ORUQgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjYwO05PVCBFUVVBTCBUTztTbTswO09OOzAwM0QgMDMzODs7OztZOzs7OzsKKzIyNjE7SURFTlRJQ0FMIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjI2MjtOT1QgSURFTlRJQ0FMIFRPO1NtOzA7T047MjI2MSAwMzM4Ozs7O1k7Ozs7OworMjI2MztTVFJJQ1RMWSBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjI2NDtMRVNTLVRIQU4gT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gT1IgRVFVQUwgVE87Ozs7CisyMjY1O0dSRUFURVItVEhBTiBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZO0dSRUFURVIgVEhBTiBPUiBFUVVBTCBUTzs7OzsKKzIyNjY7TEVTUy1USEFOIE9WRVIgRVFVQUwgVE87U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gT1ZFUiBFUVVBTCBUTzs7OzsKKzIyNjc7R1JFQVRFUi1USEFOIE9WRVIgRVFVQUwgVE87U207MDtPTjs7Ozs7WTtHUkVBVEVSIFRIQU4gT1ZFUiBFUVVBTCBUTzs7OzsKKzIyNjg7TEVTUy1USEFOIEJVVCBOT1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gQlVUIE5PVCBFUVVBTCBUTzs7OzsKKzIyNjk7R1JFQVRFUi1USEFOIEJVVCBOT1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTtHUkVBVEVSIFRIQU4gQlVUIE5PVCBFUVVBTCBUTzs7OzsKKzIyNkE7TVVDSCBMRVNTLVRIQU47U207MDtPTjs7Ozs7WTtNVUNIIExFU1MgVEhBTjs7OzsKKzIyNkI7TVVDSCBHUkVBVEVSLVRIQU47U207MDtPTjs7Ozs7WTtNVUNIIEdSRUFURVIgVEhBTjs7OzsKKzIyNkM7QkVUV0VFTjtTbTswO09OOzs7OztOOzs7OzsKKzIyNkQ7Tk9UIEVRVUlWQUxFTlQgVE87U207MDtPTjsyMjREIDAzMzg7Ozs7Tjs7Ozs7CisyMjZFO05PVCBMRVNTLVRIQU47U207MDtPTjswMDNDIDAzMzg7Ozs7WTtOT1QgTEVTUyBUSEFOOzs7OworMjI2RjtOT1QgR1JFQVRFUi1USEFOO1NtOzA7T047MDAzRSAwMzM4Ozs7O1k7Tk9UIEdSRUFURVIgVEhBTjs7OzsKKzIyNzA7TkVJVEhFUiBMRVNTLVRIQU4gTk9SIEVRVUFMIFRPO1NtOzA7T047MjI2NCAwMzM4Ozs7O1k7TkVJVEhFUiBMRVNTIFRIQU4gTk9SIEVRVUFMIFRPOzs7OworMjI3MTtORUlUSEVSIEdSRUFURVItVEhBTiBOT1IgRVFVQUwgVE87U207MDtPTjsyMjY1IDAzMzg7Ozs7WTtORUlUSEVSIEdSRUFURVIgVEhBTiBOT1IgRVFVQUwgVE87Ozs7CisyMjcyO0xFU1MtVEhBTiBPUiBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O1k7TEVTUyBUSEFOIE9SIEVRVUlWQUxFTlQgVE87Ozs7CisyMjczO0dSRUFURVItVEhBTiBPUiBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O1k7R1JFQVRFUiBUSEFOIE9SIEVRVUlWQUxFTlQgVE87Ozs7CisyMjc0O05FSVRIRVIgTEVTUy1USEFOIE5PUiBFUVVJVkFMRU5UIFRPO1NtOzA7T047MjI3MiAwMzM4Ozs7O1k7TkVJVEhFUiBMRVNTIFRIQU4gTk9SIEVRVUlWQUxFTlQgVE87Ozs7CisyMjc1O05FSVRIRVIgR1JFQVRFUi1USEFOIE5PUiBFUVVJVkFMRU5UIFRPO1NtOzA7T047MjI3MyAwMzM4Ozs7O1k7TkVJVEhFUiBHUkVBVEVSIFRIQU4gTk9SIEVRVUlWQUxFTlQgVE87Ozs7CisyMjc2O0xFU1MtVEhBTiBPUiBHUkVBVEVSLVRIQU47U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gT1IgR1JFQVRFUiBUSEFOOzs7OworMjI3NztHUkVBVEVSLVRIQU4gT1IgTEVTUy1USEFOO1NtOzA7T047Ozs7O1k7R1JFQVRFUiBUSEFOIE9SIExFU1MgVEhBTjs7OzsKKzIyNzg7TkVJVEhFUiBMRVNTLVRIQU4gTk9SIEdSRUFURVItVEhBTjtTbTswO09OOzIyNzYgMDMzODs7OztZO05FSVRIRVIgTEVTUyBUSEFOIE5PUiBHUkVBVEVSIFRIQU47Ozs7CisyMjc5O05FSVRIRVIgR1JFQVRFUi1USEFOIE5PUiBMRVNTLVRIQU47U207MDtPTjsyMjc3IDAzMzg7Ozs7WTtORUlUSEVSIEdSRUFURVIgVEhBTiBOT1IgTEVTUyBUSEFOOzs7OworMjI3QTtQUkVDRURFUztTbTswO09OOzs7OztZOzs7OzsKKzIyN0I7U1VDQ0VFRFM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjdDO1BSRUNFREVTIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI3RDtTVUNDRUVEUyBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyN0U7UFJFQ0VERVMgT1IgRVFVSVZBTEVOVCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyN0Y7U1VDQ0VFRFMgT1IgRVFVSVZBTEVOVCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyODA7RE9FUyBOT1QgUFJFQ0VERTtTbTswO09OOzIyN0EgMDMzODs7OztZOzs7OzsKKzIyODE7RE9FUyBOT1QgU1VDQ0VFRDtTbTswO09OOzIyN0IgMDMzODs7OztZOzs7OzsKKzIyODI7U1VCU0VUIE9GO1NtOzA7T047Ozs7O1k7Ozs7OworMjI4MztTVVBFUlNFVCBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyODQ7Tk9UIEEgU1VCU0VUIE9GO1NtOzA7T047MjI4MiAwMzM4Ozs7O1k7Ozs7OworMjI4NTtOT1QgQSBTVVBFUlNFVCBPRjtTbTswO09OOzIyODMgMDMzODs7OztZOzs7OzsKKzIyODY7U1VCU0VUIE9GIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI4NztTVVBFUlNFVCBPRiBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyODg7TkVJVEhFUiBBIFNVQlNFVCBPRiBOT1IgRVFVQUwgVE87U207MDtPTjsyMjg2IDAzMzg7Ozs7WTs7Ozs7CisyMjg5O05FSVRIRVIgQSBTVVBFUlNFVCBPRiBOT1IgRVFVQUwgVE87U207MDtPTjsyMjg3IDAzMzg7Ozs7WTs7Ozs7CisyMjhBO1NVQlNFVCBPRiBXSVRIIE5PVCBFUVVBTCBUTztTbTswO09OOzs7OztZO1NVQlNFVCBPRiBPUiBOT1QgRVFVQUwgVE87Ozs7CisyMjhCO1NVUEVSU0VUIE9GIFdJVEggTk9UIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7U1VQRVJTRVQgT0YgT1IgTk9UIEVRVUFMIFRPOzs7OworMjI4QztNVUxUSVNFVDtTbTswO09OOzs7OztZOzs7OzsKKzIyOEQ7TVVMVElTRVQgTVVMVElQTElDQVRJT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjhFO01VTFRJU0VUIFVOSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjI4RjtTUVVBUkUgSU1BR0UgT0Y7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjkwO1NRVUFSRSBPUklHSU5BTCBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyOTE7U1FVQVJFIElNQUdFIE9GIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI5MjtTUVVBUkUgT1JJR0lOQUwgT0YgT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjkzO1NRVUFSRSBDQVA7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjk0O1NRVUFSRSBDVVA7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjk1O0NJUkNMRUQgUExVUztTbTswO09OOzs7OztOOzs7OzsKKzIyOTY7Q0lSQ0xFRCBNSU5VUztTbTswO09OOzs7OztOOzs7OzsKKzIyOTc7Q0lSQ0xFRCBUSU1FUztTbTswO09OOzs7OztOOzs7OzsKKzIyOTg7Q0lSQ0xFRCBESVZJU0lPTiBTTEFTSDtTbTswO09OOzs7OztZOzs7OzsKKzIyOTk7Q0lSQ0xFRCBET1QgT1BFUkFUT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjlBO0NJUkNMRUQgUklORyBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyOUI7Q0lSQ0xFRCBBU1RFUklTSyBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyOUM7Q0lSQ0xFRCBFUVVBTFM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjlEO0NJUkNMRUQgREFTSDtTbTswO09OOzs7OztOOzs7OzsKKzIyOUU7U1FVQVJFRCBQTFVTO1NtOzA7T047Ozs7O047Ozs7OworMjI5RjtTUVVBUkVEIE1JTlVTO1NtOzA7T047Ozs7O047Ozs7OworMjJBMDtTUVVBUkVEIFRJTUVTO1NtOzA7T047Ozs7O047Ozs7OworMjJBMTtTUVVBUkVEIERPVCBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyQTI7UklHSFQgVEFDSztTbTswO09OOzs7OztZOzs7OzsKKzIyQTM7TEVGVCBUQUNLO1NtOzA7T047Ozs7O1k7Ozs7OworMjJBNDtET1dOIFRBQ0s7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkE1O1VQIFRBQ0s7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkE2O0FTU0VSVElPTjtTbTswO09OOzs7OztZOzs7OzsKKzIyQTc7TU9ERUxTO1NtOzA7T047Ozs7O1k7Ozs7OworMjJBODtUUlVFO1NtOzA7T047Ozs7O1k7Ozs7OworMjJBOTtGT1JDRVM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkFBO1RSSVBMRSBWRVJUSUNBTCBCQVIgUklHSFQgVFVSTlNUSUxFO1NtOzA7T047Ozs7O1k7Ozs7OworMjJBQjtET1VCTEUgVkVSVElDQUwgQkFSIERPVUJMRSBSSUdIVCBUVVJOU1RJTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkFDO0RPRVMgTk9UIFBST1ZFO1NtOzA7T047MjJBMiAwMzM4Ozs7O1k7Ozs7OworMjJBRDtOT1QgVFJVRTtTbTswO09OOzIyQTggMDMzODs7OztZOzs7OzsKKzIyQUU7RE9FUyBOT1QgRk9SQ0U7U207MDtPTjsyMkE5IDAzMzg7Ozs7WTs7Ozs7CisyMkFGO05FR0FURUQgRE9VQkxFIFZFUlRJQ0FMIEJBUiBET1VCTEUgUklHSFQgVFVSTlNUSUxFO1NtOzA7T047MjJBQiAwMzM4Ozs7O1k7Ozs7OworMjJCMDtQUkVDRURFUyBVTkRFUiBSRUxBVElPTjtTbTswO09OOzs7OztZOzs7OzsKKzIyQjE7U1VDQ0VFRFMgVU5ERVIgUkVMQVRJT047U207MDtPTjs7Ozs7WTs7Ozs7CisyMkIyO05PUk1BTCBTVUJHUk9VUCBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyQjM7Q09OVEFJTlMgQVMgTk9STUFMIFNVQkdST1VQO1NtOzA7T047Ozs7O1k7Ozs7OworMjJCNDtOT1JNQUwgU1VCR1JPVVAgT0YgT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMkI1O0NPTlRBSU5TIEFTIE5PUk1BTCBTVUJHUk9VUCBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyQjY7T1JJR0lOQUwgT0Y7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkI3O0lNQUdFIE9GO1NtOzA7T047Ozs7O1k7Ozs7OworMjJCODtNVUxUSU1BUDtTbTswO09OOzs7OztZOzs7OzsKKzIyQjk7SEVSTUlUSUFOIENPTkpVR0FURSBNQVRSSVg7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkJBO0lOVEVSQ0FMQVRFO1NtOzA7T047Ozs7O047Ozs7OworMjJCQjtYT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkJDO05BTkQ7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkJEO05PUjtTbTswO09OOzs7OztOOzs7OzsKKzIyQkU7UklHSFQgQU5HTEUgV0lUSCBBUkM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkJGO1JJR0hUIFRSSUFOR0xFO1NtOzA7T047Ozs7O1k7Ozs7OworMjJDMDtOLUFSWSBMT0dJQ0FMIEFORDtTbTswO09OOzs7OztOOzs7OzsKKzIyQzE7Ti1BUlkgTE9HSUNBTCBPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyQzI7Ti1BUlkgSU5URVJTRUNUSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjJDMztOLUFSWSBVTklPTjtTbTswO09OOzs7OztOOzs7OzsKKzIyQzQ7RElBTU9ORCBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyQzU7RE9UIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjJDNjtTVEFSIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjJDNztESVZJU0lPTiBUSU1FUztTbTswO09OOzs7OztOOzs7OzsKKzIyQzg7Qk9XVElFO1NtOzA7T047Ozs7O047Ozs7OworMjJDOTtMRUZUIE5PUk1BTCBGQUNUT1IgU0VNSURJUkVDVCBQUk9EVUNUO1NtOzA7T047Ozs7O1k7Ozs7OworMjJDQTtSSUdIVCBOT1JNQUwgRkFDVE9SIFNFTUlESVJFQ1QgUFJPRFVDVDtTbTswO09OOzs7OztZOzs7OzsKKzIyQ0I7TEVGVCBTRU1JRElSRUNUIFBST0RVQ1Q7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkNDO1JJR0hUIFNFTUlESVJFQ1QgUFJPRFVDVDtTbTswO09OOzs7OztZOzs7OzsKKzIyQ0Q7UkVWRVJTRUQgVElMREUgRVFVQUxTO1NtOzA7T047Ozs7O1k7Ozs7OworMjJDRTtDVVJMWSBMT0dJQ0FMIE9SO1NtOzA7T047Ozs7O047Ozs7OworMjJDRjtDVVJMWSBMT0dJQ0FMIEFORDtTbTswO09OOzs7OztOOzs7OzsKKzIyRDA7RE9VQkxFIFNVQlNFVDtTbTswO09OOzs7OztZOzs7OzsKKzIyRDE7RE9VQkxFIFNVUEVSU0VUO1NtOzA7T047Ozs7O1k7Ozs7OworMjJEMjtET1VCTEUgSU5URVJTRUNUSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjJEMztET1VCTEUgVU5JT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkQ0O1BJVENIRk9SSztTbTswO09OOzs7OztOOzs7OzsKKzIyRDU7RVFVQUwgQU5EIFBBUkFMTEVMIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjJENjtMRVNTLVRIQU4gV0lUSCBET1Q7U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gV0lUSCBET1Q7Ozs7CisyMkQ3O0dSRUFURVItVEhBTiBXSVRIIERPVDtTbTswO09OOzs7OztZO0dSRUFURVIgVEhBTiBXSVRIIERPVDs7OzsKKzIyRDg7VkVSWSBNVUNIIExFU1MtVEhBTjtTbTswO09OOzs7OztZO1ZFUlkgTVVDSCBMRVNTIFRIQU47Ozs7CisyMkQ5O1ZFUlkgTVVDSCBHUkVBVEVSLVRIQU47U207MDtPTjs7Ozs7WTtWRVJZIE1VQ0ggR1JFQVRFUiBUSEFOOzs7OworMjJEQTtMRVNTLVRIQU4gRVFVQUwgVE8gT1IgR1JFQVRFUi1USEFOO1NtOzA7T047Ozs7O1k7TEVTUyBUSEFOIEVRVUFMIFRPIE9SIEdSRUFURVIgVEhBTjs7OzsKKzIyREI7R1JFQVRFUi1USEFOIEVRVUFMIFRPIE9SIExFU1MtVEhBTjtTbTswO09OOzs7OztZO0dSRUFURVIgVEhBTiBFUVVBTCBUTyBPUiBMRVNTIFRIQU47Ozs7CisyMkRDO0VRVUFMIFRPIE9SIExFU1MtVEhBTjtTbTswO09OOzs7OztZO0VRVUFMIFRPIE9SIExFU1MgVEhBTjs7OzsKKzIyREQ7RVFVQUwgVE8gT1IgR1JFQVRFUi1USEFOO1NtOzA7T047Ozs7O1k7RVFVQUwgVE8gT1IgR1JFQVRFUiBUSEFOOzs7OworMjJERTtFUVVBTCBUTyBPUiBQUkVDRURFUztTbTswO09OOzs7OztZOzs7OzsKKzIyREY7RVFVQUwgVE8gT1IgU1VDQ0VFRFM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkUwO0RPRVMgTk9UIFBSRUNFREUgT1IgRVFVQUw7U207MDtPTjsyMjdDIDAzMzg7Ozs7WTs7Ozs7CisyMkUxO0RPRVMgTk9UIFNVQ0NFRUQgT1IgRVFVQUw7U207MDtPTjsyMjdEIDAzMzg7Ozs7WTs7Ozs7CisyMkUyO05PVCBTUVVBUkUgSU1BR0UgT0YgT1IgRVFVQUwgVE87U207MDtPTjsyMjkxIDAzMzg7Ozs7WTs7Ozs7CisyMkUzO05PVCBTUVVBUkUgT1JJR0lOQUwgT0YgT1IgRVFVQUwgVE87U207MDtPTjsyMjkyIDAzMzg7Ozs7WTs7Ozs7CisyMkU0O1NRVUFSRSBJTUFHRSBPRiBPUiBOT1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMkU1O1NRVUFSRSBPUklHSU5BTCBPRiBPUiBOT1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMkU2O0xFU1MtVEhBTiBCVVQgTk9UIEVRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gQlVUIE5PVCBFUVVJVkFMRU5UIFRPOzs7OworMjJFNztHUkVBVEVSLVRIQU4gQlVUIE5PVCBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O1k7R1JFQVRFUiBUSEFOIEJVVCBOT1QgRVFVSVZBTEVOVCBUTzs7OzsKKzIyRTg7UFJFQ0VERVMgQlVUIE5PVCBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjJFOTtTVUNDRUVEUyBCVVQgTk9UIEVRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMkVBO05PVCBOT1JNQUwgU1VCR1JPVVAgT0Y7U207MDtPTjsyMkIyIDAzMzg7Ozs7WTs7Ozs7CisyMkVCO0RPRVMgTk9UIENPTlRBSU4gQVMgTk9STUFMIFNVQkdST1VQO1NtOzA7T047MjJCMyAwMzM4Ozs7O1k7Ozs7OworMjJFQztOT1QgTk9STUFMIFNVQkdST1VQIE9GIE9SIEVRVUFMIFRPO1NtOzA7T047MjJCNCAwMzM4Ozs7O1k7Ozs7OworMjJFRDtET0VTIE5PVCBDT05UQUlOIEFTIE5PUk1BTCBTVUJHUk9VUCBPUiBFUVVBTDtTbTswO09OOzIyQjUgMDMzODs7OztZOzs7OzsKKzIyRUU7VkVSVElDQUwgRUxMSVBTSVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkVGO01JRExJTkUgSE9SSVpPTlRBTCBFTExJUFNJUztTbTswO09OOzs7OztOOzs7OzsKKzIyRjA7VVAgUklHSFQgRElBR09OQUwgRUxMSVBTSVM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkYxO0RPV04gUklHSFQgRElBR09OQUwgRUxMSVBTSVM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzAwO0RJQU1FVEVSIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzAyO0hPVVNFO1NvOzA7T047Ozs7O047Ozs7OworMjMwMztVUCBBUlJPV0hFQUQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzA0O0RPV04gQVJST1dIRUFEO1NvOzA7T047Ozs7O047Ozs7OworMjMwNTtQUk9KRUNUSVZFO1NvOzA7T047Ozs7O047Ozs7OworMjMwNjtQRVJTUEVDVElWRTtTbzswO09OOzs7OztOOzs7OzsKKzIzMDc7V0FWWSBMSU5FO1NvOzA7T047Ozs7O047Ozs7OworMjMwODtMRUZUIENFSUxJTkc7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzA5O1JJR0hUIENFSUxJTkc7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzBBO0xFRlQgRkxPT1I7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzBCO1JJR0hUIEZMT09SO1NtOzA7T047Ozs7O1k7Ozs7OworMjMwQztCT1RUT00gUklHSFQgQ1JPUDtTbzswO09OOzs7OztOOzs7OzsKKzIzMEQ7Qk9UVE9NIExFRlQgQ1JPUDtTbzswO09OOzs7OztOOzs7OzsKKzIzMEU7VE9QIFJJR0hUIENST1A7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzBGO1RPUCBMRUZUIENST1A7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzEwO1JFVkVSU0VEIE5PVCBTSUdOO1NvOzA7T047Ozs7O047Ozs7OworMjMxMTtTUVVBUkUgTE9aRU5HRTtTbzswO09OOzs7OztOOzs7OzsKKzIzMTI7QVJDO1NvOzA7T047Ozs7O047Ozs7OworMjMxMztTRUdNRU5UO1NvOzA7T047Ozs7O047Ozs7OworMjMxNDtTRUNUT1I7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzE1O1RFTEVQSE9ORSBSRUNPUkRFUjtTbzswO09OOzs7OztOOzs7OzsKKzIzMTY7UE9TSVRJT04gSU5ESUNBVE9SO1NvOzA7T047Ozs7O047Ozs7OworMjMxNztWSUVXREFUQSBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzE4O1BMQUNFIE9GIElOVEVSRVNUIFNJR047U287MDtPTjs7Ozs7TjtDT01NQU5EIEtFWTs7OzsKKzIzMTk7VFVSTkVEIE5PVCBTSUdOO1NvOzA7T047Ozs7O047Ozs7OworMjMxQTtXQVRDSDtTbzswO09OOzs7OztOOzs7OzsKKzIzMUI7SE9VUkdMQVNTO1NvOzA7T047Ozs7O047Ozs7OworMjMxQztUT1AgTEVGVCBDT1JORVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzFEO1RPUCBSSUdIVCBDT1JORVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzFFO0JPVFRPTSBMRUZUIENPUk5FUjtTbzswO09OOzs7OztOOzs7OzsKKzIzMUY7Qk9UVE9NIFJJR0hUIENPUk5FUjtTbzswO09OOzs7OztOOzs7OzsKKzIzMjA7VE9QIEhBTEYgSU5URUdSQUw7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzIxO0JPVFRPTSBIQUxGIElOVEVHUkFMO1NtOzA7T047Ozs7O1k7Ozs7OworMjMyMjtGUk9XTjtTbzswO09OOzs7OztOOzs7OzsKKzIzMjM7U01JTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzI0O1VQIEFSUk9XSEVBRCBCRVRXRUVOIFRXTyBIT1JJWk9OVEFMIEJBUlM7U287MDtPTjs7Ozs7TjtFTlRFUiBLRVk7Ozs7CisyMzI1O09QVElPTiBLRVk7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzI2O0VSQVNFIFRPIFRIRSBSSUdIVDtTbzswO09OOzs7OztOO0RFTEVURSBUTyBUSEUgUklHSFQgS0VZOzs7OworMjMyNztYIElOIEEgUkVDVEFOR0xFIEJPWDtTbzswO09OOzs7OztOO0NMRUFSIEtFWTs7OzsKKzIzMjg7S0VZQk9BUkQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzI5O0xFRlQtUE9JTlRJTkcgQU5HTEUgQlJBQ0tFVDtQczswO09OOzMwMDg7Ozs7WTtCUkE7Ozs7CisyMzJBO1JJR0hULVBPSU5USU5HIEFOR0xFIEJSQUNLRVQ7UGU7MDtPTjszMDA5Ozs7O1k7S0VUOzs7OworMjMyQjtFUkFTRSBUTyBUSEUgTEVGVDtTbzswO09OOzs7OztOO0RFTEVURSBUTyBUSEUgTEVGVCBLRVk7Ozs7CisyMzJDO0JFTlpFTkUgUklORztTbzswO09OOzs7OztOOzs7OzsKKzIzMkQ7Q1lMSU5EUklDSVRZO1NvOzA7T047Ozs7O047Ozs7OworMjMyRTtBTEwgQVJPVU5ELVBST0ZJTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzJGO1NZTU1FVFJZO1NvOzA7T047Ozs7O047Ozs7OworMjMzMDtUT1RBTCBSVU5PVVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzMxO0RJTUVOU0lPTiBPUklHSU47U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzMyO0NPTklDQUwgVEFQRVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzMzO1NMT1BFO1NvOzA7T047Ozs7O047Ozs7OworMjMzNDtDT1VOVEVSQk9SRTtTbzswO09OOzs7OztOOzs7OzsKKzIzMzU7Q09VTlRFUlNJTks7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzM2O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBJLUJFQU07U287MDtMOzs7OztOOzs7OzsKKzIzMzc7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFNRVUlTSCBRVUFEO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzM4O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIEVRVUFMO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzM5O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIERJVklERTtTbzswO0w7Ozs7O047Ozs7OworMjMzQTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBESUFNT05EO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzNCO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIEpPVDtTbzswO0w7Ozs7O047Ozs7OworMjMzQztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBDSVJDTEU7U287MDtMOzs7OztOOzs7OzsKKzIzM0Q7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIENJUkNMRSBTVElMRTtTbzswO0w7Ozs7O047Ozs7OworMjMzRTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgQ0lSQ0xFIEpPVDtTbzswO0w7Ozs7O047Ozs7OworMjMzRjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgU0xBU0ggQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQwO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBCQUNLU0xBU0ggQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQxO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIFNMQVNIO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQyO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIEJBQ0tTTEFTSDtTbzswO0w7Ozs7O047Ozs7OworMjM0MztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBMRVNTLVRIQU47U287MDtMOzs7OztOOzs7OzsKKzIzNDQ7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgR1JFQVRFUi1USEFOO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQ1O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBMRUZUV0FSRFMgVkFORTtTbzswO0w7Ozs7O047Ozs7OworMjM0NjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUklHSFRXQVJEUyBWQU5FO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQ3O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIExFRlRXQVJEUyBBUlJPVztTbzswO0w7Ozs7O047Ozs7OworMjM0ODtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQ5O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgQkFDS1NMQVNIO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzRBO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOIFRBQ0sgVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNEI7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERFTFRBIFNUSUxFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzRDO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIERPV04gQ0FSRVQ7U287MDtMOzs7OztOOzs7OzsKKzIzNEQ7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgREVMVEE7U287MDtMOzs7OztOOzs7OzsKKzIzNEU7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERPV04gVEFDSyBKT1Q7U287MDtMOzs7OztOOzs7OzsKKzIzNEY7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQV0FSRFMgVkFORTtTbzswO0w7Ozs7O047Ozs7OworMjM1MDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBVUFdBUkRTIEFSUk9XO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzUxO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBVUCBUQUNLIE9WRVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNTI7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERFTCBTVElMRTtTbzswO0w7Ozs7O047Ozs7OworMjM1MztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBVUCBDQVJFVDtTbzswO0w7Ozs7O047Ozs7OworMjM1NDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBERUw7U287MDtMOzs7OztOOzs7OzsKKzIzNTU7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQIFRBQ0sgSk9UO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzU2O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOV0FSRFMgVkFORTtTbzswO0w7Ozs7O047Ozs7OworMjM1NztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBET1dOV0FSRFMgQVJST1c7U287MDtMOzs7OztOOzs7OzsKKzIzNTg7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVT1RFIFVOREVSQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzU5O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBERUxUQSBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM1QTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgRElBTU9ORCBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM1QjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgSk9UIFVOREVSQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzVDO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNUQ7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQIFNIT0UgSk9UO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzVFO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVU9URSBRVUFEO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzVGO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgU1RBUjtTbzswO0w7Ozs7O047Ozs7OworMjM2MDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBDT0xPTjtTbzswO0w7Ozs7O047Ozs7OworMjM2MTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgVVAgVEFDSyBESUFFUkVTSVM7U287MDtMOzs7OztOOzs7OzsKKzIzNjI7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERFTCBESUFFUkVTSVM7U287MDtMOzs7OztOOzs7OzsKKzIzNjM7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFNUQVIgRElBRVJFU0lTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzY0O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBKT1QgRElBRVJFU0lTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzY1O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgRElBRVJFU0lTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzY2O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOIFNIT0UgU1RJTEU7U287MDtMOzs7OztOOzs7OzsKKzIzNjc7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIExFRlQgU0hPRSBTVElMRTtTbzswO0w7Ozs7O047Ozs7OworMjM2ODtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgVElMREUgRElBRVJFU0lTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzY5O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBHUkVBVEVSLVRIQU4gRElBRVJFU0lTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzZBO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBDT01NQSBCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNkI7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERFTCBUSUxERTtTbzswO0w7Ozs7O047Ozs7OworMjM2QztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgWklMREU7U287MDtMOzs7OztOOzs7OzsKKzIzNkQ7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFNUSUxFIFRJTERFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzZFO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBTRU1JQ09MT04gVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNkY7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgTk9UIEVRVUFMO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzcwO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIFFVRVNUSU9OO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzcxO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOIENBUkVUIFRJTERFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzcyO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBVUCBDQVJFVCBUSUxERTtTbzswO0w7Ozs7O047Ozs7OworMjM3MztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgSU9UQTtTbzswO0w7Ozs7O047Ozs7OworMjM3NDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUkhPO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzc1O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBPTUVHQTtTbzswO0w7Ozs7O047Ozs7OworMjM3NjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgQUxQSEEgVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNzc7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIEVQU0lMT04gVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNzg7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIElPVEEgVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNzk7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIE9NRUdBIFVOREVSQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzdBO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBBTFBIQTtTbzswO0w7Ozs7O047Ozs7OworMjQwMDtTWU1CT0wgRk9SIE5VTEw7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBOVUxMOzs7OworMjQwMTtTWU1CT0wgRk9SIFNUQVJUIE9GIEhFQURJTkc7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBTVEFSVCBPRiBIRUFESU5HOzs7OworMjQwMjtTWU1CT0wgRk9SIFNUQVJUIE9GIFRFWFQ7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBTVEFSVCBPRiBURVhUOzs7OworMjQwMztTWU1CT0wgRk9SIEVORCBPRiBURVhUO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgRU5EIE9GIFRFWFQ7Ozs7CisyNDA0O1NZTUJPTCBGT1IgRU5EIE9GIFRSQU5TTUlTU0lPTjtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEVORCBPRiBUUkFOU01JU1NJT047Ozs7CisyNDA1O1NZTUJPTCBGT1IgRU5RVUlSWTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEVOUVVJUlk7Ozs7CisyNDA2O1NZTUJPTCBGT1IgQUNLTk9XTEVER0U7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBBQ0tOT1dMRURHRTs7OzsKKzI0MDc7U1lNQk9MIEZPUiBCRUxMO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgQkVMTDs7OzsKKzI0MDg7U1lNQk9MIEZPUiBCQUNLU1BBQ0U7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBCQUNLU1BBQ0U7Ozs7CisyNDA5O1NZTUJPTCBGT1IgSE9SSVpPTlRBTCBUQUJVTEFUSU9OO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgSE9SSVpPTlRBTCBUQUJVTEFUSU9OOzs7OworMjQwQTtTWU1CT0wgRk9SIExJTkUgRkVFRDtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIExJTkUgRkVFRDs7OzsKKzI0MEI7U1lNQk9MIEZPUiBWRVJUSUNBTCBUQUJVTEFUSU9OO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgVkVSVElDQUwgVEFCVUxBVElPTjs7OzsKKzI0MEM7U1lNQk9MIEZPUiBGT1JNIEZFRUQ7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBGT1JNIEZFRUQ7Ozs7CisyNDBEO1NZTUJPTCBGT1IgQ0FSUklBR0UgUkVUVVJOO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgQ0FSUklBR0UgUkVUVVJOOzs7OworMjQwRTtTWU1CT0wgRk9SIFNISUZUIE9VVDtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFNISUZUIE9VVDs7OzsKKzI0MEY7U1lNQk9MIEZPUiBTSElGVCBJTjtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFNISUZUIElOOzs7OworMjQxMDtTWU1CT0wgRk9SIERBVEEgTElOSyBFU0NBUEU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBEQVRBIExJTksgRVNDQVBFOzs7OworMjQxMTtTWU1CT0wgRk9SIERFVklDRSBDT05UUk9MIE9ORTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIERFVklDRSBDT05UUk9MIE9ORTs7OzsKKzI0MTI7U1lNQk9MIEZPUiBERVZJQ0UgQ09OVFJPTCBUV087U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBERVZJQ0UgQ09OVFJPTCBUV087Ozs7CisyNDEzO1NZTUJPTCBGT1IgREVWSUNFIENPTlRST0wgVEhSRUU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBERVZJQ0UgQ09OVFJPTCBUSFJFRTs7OzsKKzI0MTQ7U1lNQk9MIEZPUiBERVZJQ0UgQ09OVFJPTCBGT1VSO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgREVWSUNFIENPTlRST0wgRk9VUjs7OzsKKzI0MTU7U1lNQk9MIEZPUiBORUdBVElWRSBBQ0tOT1dMRURHRTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIE5FR0FUSVZFIEFDS05PV0xFREdFOzs7OworMjQxNjtTWU1CT0wgRk9SIFNZTkNIUk9OT1VTIElETEU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBTWU5DSFJPTk9VUyBJRExFOzs7OworMjQxNztTWU1CT0wgRk9SIEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0s7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLOzs7OworMjQxODtTWU1CT0wgRk9SIENBTkNFTDtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIENBTkNFTDs7OzsKKzI0MTk7U1lNQk9MIEZPUiBFTkQgT0YgTUVESVVNO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgRU5EIE9GIE1FRElVTTs7OzsKKzI0MUE7U1lNQk9MIEZPUiBTVUJTVElUVVRFO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgU1VCU1RJVFVURTs7OzsKKzI0MUI7U1lNQk9MIEZPUiBFU0NBUEU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBFU0NBUEU7Ozs7CisyNDFDO1NZTUJPTCBGT1IgRklMRSBTRVBBUkFUT1I7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBGSUxFIFNFUEFSQVRPUjs7OzsKKzI0MUQ7U1lNQk9MIEZPUiBHUk9VUCBTRVBBUkFUT1I7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBHUk9VUCBTRVBBUkFUT1I7Ozs7CisyNDFFO1NZTUJPTCBGT1IgUkVDT1JEIFNFUEFSQVRPUjtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFJFQ09SRCBTRVBBUkFUT1I7Ozs7CisyNDFGO1NZTUJPTCBGT1IgVU5JVCBTRVBBUkFUT1I7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBVTklUIFNFUEFSQVRPUjs7OzsKKzI0MjA7U1lNQk9MIEZPUiBTUEFDRTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFNQQUNFOzs7OworMjQyMTtTWU1CT0wgRk9SIERFTEVURTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIERFTEVURTs7OzsKKzI0MjI7QkxBTksgU1lNQk9MO1NvOzA7T047Ozs7O047QkxBTks7Ozs7CisyNDIzO09QRU4gQk9YO1NvOzA7T047Ozs7O047Ozs7OworMjQyNDtTWU1CT0wgRk9SIE5FV0xJTkU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBORVdMSU5FOzs7OworMjQ0MDtPQ1IgSE9PSztTbzswO09OOzs7OztOOzs7OzsKKzI0NDE7T0NSIENIQUlSO1NvOzA7T047Ozs7O047Ozs7OworMjQ0MjtPQ1IgRk9SSztTbzswO09OOzs7OztOOzs7OzsKKzI0NDM7T0NSIElOVkVSVEVEIEZPUks7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDQ0O09DUiBCRUxUIEJVQ0tMRTtTbzswO09OOzs7OztOOzs7OzsKKzI0NDU7T0NSIEJPVyBUSUU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDQ2O09DUiBCUkFOQ0ggQkFOSyBJREVOVElGSUNBVElPTjtTbzswO09OOzs7OztOOzs7OzsKKzI0NDc7T0NSIEFNT1VOVCBPRiBDSEVDSztTbzswO09OOzs7OztOOzs7OzsKKzI0NDg7T0NSIERBU0g7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDQ5O09DUiBDVVNUT01FUiBBQ0NPVU5UIE5VTUJFUjtTbzswO09OOzs7OztOOzs7OzsKKzI0NEE7T0NSIERPVUJMRSBCQUNLU0xBU0g7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDYwO0NJUkNMRUQgRElHSVQgT05FO05vOzA7RU47PGNpcmNsZT4gMDAzMTs7MTsxO047Ozs7OworMjQ2MTtDSVJDTEVEIERJR0lUIFRXTztObzswO0VOOzxjaXJjbGU+IDAwMzI7OzI7MjtOOzs7OzsKKzI0NjI7Q0lSQ0xFRCBESUdJVCBUSFJFRTtObzswO0VOOzxjaXJjbGU+IDAwMzM7OzM7MztOOzs7OzsKKzI0NjM7Q0lSQ0xFRCBESUdJVCBGT1VSO05vOzA7RU47PGNpcmNsZT4gMDAzNDs7NDs0O047Ozs7OworMjQ2NDtDSVJDTEVEIERJR0lUIEZJVkU7Tm87MDtFTjs8Y2lyY2xlPiAwMDM1Ozs1OzU7Tjs7Ozs7CisyNDY1O0NJUkNMRUQgRElHSVQgU0lYO05vOzA7RU47PGNpcmNsZT4gMDAzNjs7Njs2O047Ozs7OworMjQ2NjtDSVJDTEVEIERJR0lUIFNFVkVOO05vOzA7RU47PGNpcmNsZT4gMDAzNzs7Nzs3O047Ozs7OworMjQ2NztDSVJDTEVEIERJR0lUIEVJR0hUO05vOzA7RU47PGNpcmNsZT4gMDAzODs7ODs4O047Ozs7OworMjQ2ODtDSVJDTEVEIERJR0lUIE5JTkU7Tm87MDtFTjs8Y2lyY2xlPiAwMDM5Ozs5Ozk7Tjs7Ozs7CisyNDY5O0NJUkNMRUQgTlVNQkVSIFRFTjtObzswO0VOOzxjaXJjbGU+IDAwMzEgMDAzMDs7OzEwO047Ozs7OworMjQ2QTtDSVJDTEVEIE5VTUJFUiBFTEVWRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzE7OzsxMTtOOzs7OzsKKzI0NkI7Q0lSQ0xFRCBOVU1CRVIgVFdFTFZFO05vOzA7RU47PGNpcmNsZT4gMDAzMSAwMDMyOzs7MTI7Tjs7Ozs7CisyNDZDO0NJUkNMRUQgTlVNQkVSIFRISVJURUVOO05vOzA7RU47PGNpcmNsZT4gMDAzMSAwMDMzOzs7MTM7Tjs7Ozs7CisyNDZEO0NJUkNMRUQgTlVNQkVSIEZPVVJURUVOO05vOzA7RU47PGNpcmNsZT4gMDAzMSAwMDM0Ozs7MTQ7Tjs7Ozs7CisyNDZFO0NJUkNMRUQgTlVNQkVSIEZJRlRFRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzU7OzsxNTtOOzs7OzsKKzI0NkY7Q0lSQ0xFRCBOVU1CRVIgU0lYVEVFTjtObzswO0VOOzxjaXJjbGU+IDAwMzEgMDAzNjs7OzE2O047Ozs7OworMjQ3MDtDSVJDTEVEIE5VTUJFUiBTRVZFTlRFRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzc7OzsxNztOOzs7OzsKKzI0NzE7Q0lSQ0xFRCBOVU1CRVIgRUlHSFRFRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzg7OzsxODtOOzs7OzsKKzI0NzI7Q0lSQ0xFRCBOVU1CRVIgTklORVRFRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzk7OzsxOTtOOzs7OzsKKzI0NzM7Q0lSQ0xFRCBOVU1CRVIgVFdFTlRZO05vOzA7RU47PGNpcmNsZT4gMDAzMiAwMDMwOzs7MjA7Tjs7Ozs7CisyNDc0O1BBUkVOVEhFU0laRUQgRElHSVQgT05FO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMjk7OzE7MTtOOzs7OzsKKzI0NzU7UEFSRU5USEVTSVpFRCBESUdJVCBUV087Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzIgMDAyOTs7MjsyO047Ozs7OworMjQ3NjtQQVJFTlRIRVNJWkVEIERJR0lUIFRIUkVFO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMzIDAwMjk7OzM7MztOOzs7OzsKKzI0Nzc7UEFSRU5USEVTSVpFRCBESUdJVCBGT1VSO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDM0IDAwMjk7OzQ7NDtOOzs7OzsKKzI0Nzg7UEFSRU5USEVTSVpFRCBESUdJVCBGSVZFO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDM1IDAwMjk7OzU7NTtOOzs7OzsKKzI0Nzk7UEFSRU5USEVTSVpFRCBESUdJVCBTSVg7Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzYgMDAyOTs7Njs2O047Ozs7OworMjQ3QTtQQVJFTlRIRVNJWkVEIERJR0lUIFNFVkVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDM3IDAwMjk7Ozc7NztOOzs7OzsKKzI0N0I7UEFSRU5USEVTSVpFRCBESUdJVCBFSUdIVDtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzOCAwMDI5Ozs4Ozg7Tjs7Ozs7CisyNDdDO1BBUkVOVEhFU0laRUQgRElHSVQgTklORTtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzOSAwMDI5Ozs5Ozk7Tjs7Ozs7CisyNDdEO1BBUkVOVEhFU0laRUQgTlVNQkVSIFRFTjtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMSAwMDMwIDAwMjk7OzsxMDtOOzs7OzsKKzI0N0U7UEFSRU5USEVTSVpFRCBOVU1CRVIgRUxFVkVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzEgMDAyOTs7OzExO047Ozs7OworMjQ3RjtQQVJFTlRIRVNJWkVEIE5VTUJFUiBUV0VMVkU7Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzEgMDAzMiAwMDI5Ozs7MTI7Tjs7Ozs7CisyNDgwO1BBUkVOVEhFU0laRUQgTlVNQkVSIFRISVJURUVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzMgMDAyOTs7OzEzO047Ozs7OworMjQ4MTtQQVJFTlRIRVNJWkVEIE5VTUJFUiBGT1VSVEVFTjtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMSAwMDM0IDAwMjk7OzsxNDtOOzs7OzsKKzI0ODI7UEFSRU5USEVTSVpFRCBOVU1CRVIgRklGVEVFTjtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMSAwMDM1IDAwMjk7OzsxNTtOOzs7OzsKKzI0ODM7UEFSRU5USEVTSVpFRCBOVU1CRVIgU0lYVEVFTjtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMSAwMDM2IDAwMjk7OzsxNjtOOzs7OzsKKzI0ODQ7UEFSRU5USEVTSVpFRCBOVU1CRVIgU0VWRU5URUVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzcgMDAyOTs7OzE3O047Ozs7OworMjQ4NTtQQVJFTlRIRVNJWkVEIE5VTUJFUiBFSUdIVEVFTjtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMSAwMDM4IDAwMjk7OzsxODtOOzs7OzsKKzI0ODY7UEFSRU5USEVTSVpFRCBOVU1CRVIgTklORVRFRU47Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzEgMDAzOSAwMDI5Ozs7MTk7Tjs7Ozs7CisyNDg3O1BBUkVOVEhFU0laRUQgTlVNQkVSIFRXRU5UWTtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMiAwMDMwIDAwMjk7OzsyMDtOOzs7OzsKKzI0ODg7RElHSVQgT05FIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzEgMDAyRTs7MTsxO047RElHSVQgT05FIFBFUklPRDs7OzsKKzI0ODk7RElHSVQgVFdPIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzIgMDAyRTs7MjsyO047RElHSVQgVFdPIFBFUklPRDs7OzsKKzI0OEE7RElHSVQgVEhSRUUgRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMyAwMDJFOzszOzM7TjtESUdJVCBUSFJFRSBQRVJJT0Q7Ozs7CisyNDhCO0RJR0lUIEZPVVIgRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzNCAwMDJFOzs0OzQ7TjtESUdJVCBGT1VSIFBFUklPRDs7OzsKKzI0OEM7RElHSVQgRklWRSBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDM1IDAwMkU7OzU7NTtOO0RJR0lUIEZJVkUgUEVSSU9EOzs7OworMjQ4RDtESUdJVCBTSVggRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzNiAwMDJFOzs2OzY7TjtESUdJVCBTSVggUEVSSU9EOzs7OworMjQ4RTtESUdJVCBTRVZFTiBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDM3IDAwMkU7Ozc7NztOO0RJR0lUIFNFVkVOIFBFUklPRDs7OzsKKzI0OEY7RElHSVQgRUlHSFQgRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzOCAwMDJFOzs4Ozg7TjtESUdJVCBFSUdIVCBQRVJJT0Q7Ozs7CisyNDkwO0RJR0lUIE5JTkUgRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzOSAwMDJFOzs5Ozk7TjtESUdJVCBOSU5FIFBFUklPRDs7OzsKKzI0OTE7TlVNQkVSIFRFTiBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDMxIDAwMzAgMDAyRTs7OzEwO047TlVNQkVSIFRFTiBQRVJJT0Q7Ozs7CisyNDkyO05VTUJFUiBFTEVWRU4gRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDMxIDAwMkU7OzsxMTtOO05VTUJFUiBFTEVWRU4gUEVSSU9EOzs7OworMjQ5MztOVU1CRVIgVFdFTFZFIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzEgMDAzMiAwMDJFOzs7MTI7TjtOVU1CRVIgVFdFTFZFIFBFUklPRDs7OzsKKzI0OTQ7TlVNQkVSIFRISVJURUVOIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzEgMDAzMyAwMDJFOzs7MTM7TjtOVU1CRVIgVEhJUlRFRU4gUEVSSU9EOzs7OworMjQ5NTtOVU1CRVIgRk9VUlRFRU4gRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDM0IDAwMkU7OzsxNDtOO05VTUJFUiBGT1VSVEVFTiBQRVJJT0Q7Ozs7CisyNDk2O05VTUJFUiBGSUZURUVOIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzEgMDAzNSAwMDJFOzs7MTU7TjtOVU1CRVIgRklGVEVFTiBQRVJJT0Q7Ozs7CisyNDk3O05VTUJFUiBTSVhURUVOIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzEgMDAzNiAwMDJFOzs7MTY7TjtOVU1CRVIgU0lYVEVFTiBQRVJJT0Q7Ozs7CisyNDk4O05VTUJFUiBTRVZFTlRFRU4gRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDM3IDAwMkU7OzsxNztOO05VTUJFUiBTRVZFTlRFRU4gUEVSSU9EOzs7OworMjQ5OTtOVU1CRVIgRUlHSFRFRU4gRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDM4IDAwMkU7OzsxODtOO05VTUJFUiBFSUdIVEVFTiBQRVJJT0Q7Ozs7CisyNDlBO05VTUJFUiBOSU5FVEVFTiBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDMxIDAwMzkgMDAyRTs7OzE5O047TlVNQkVSIE5JTkVURUVOIFBFUklPRDs7OzsKKzI0OUI7TlVNQkVSIFRXRU5UWSBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDMyIDAwMzAgMDAyRTs7OzIwO047TlVNQkVSIFRXRU5UWSBQRVJJT0Q7Ozs7CisyNDlDO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMDA2MSAwMDI5Ozs7O047Ozs7OworMjQ5RDtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBCO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNjIgMDAyOTs7OztOOzs7OzsKKzI0OUU7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgQztTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDYzIDAwMjk7Ozs7Tjs7Ozs7CisyNDlGO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEQ7U287MDtMOzxjb21wYXQ+IDAwMjggMDA2NCAwMDI5Ozs7O047Ozs7OworMjRBMDtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBFO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNjUgMDAyOTs7OztOOzs7OzsKKzI0QTE7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgRjtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDY2IDAwMjk7Ozs7Tjs7Ozs7CisyNEEyO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEc7U287MDtMOzxjb21wYXQ+IDAwMjggMDA2NyAwMDI5Ozs7O047Ozs7OworMjRBMztQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBIO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNjggMDAyOTs7OztOOzs7OzsKKzI0QTQ7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgSTtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDY5IDAwMjk7Ozs7Tjs7Ozs7CisyNEE1O1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEo7U287MDtMOzxjb21wYXQ+IDAwMjggMDA2QSAwMDI5Ozs7O047Ozs7OworMjRBNjtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBLO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNkIgMDAyOTs7OztOOzs7OzsKKzI0QTc7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgTDtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDZDIDAwMjk7Ozs7Tjs7Ozs7CisyNEE4O1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIE07U287MDtMOzxjb21wYXQ+IDAwMjggMDA2RCAwMDI5Ozs7O047Ozs7OworMjRBOTtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBOO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNkUgMDAyOTs7OztOOzs7OzsKKzI0QUE7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgTztTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDZGIDAwMjk7Ozs7Tjs7Ozs7CisyNEFCO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFA7U287MDtMOzxjb21wYXQ+IDAwMjggMDA3MCAwMDI5Ozs7O047Ozs7OworMjRBQztQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBRO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNzEgMDAyOTs7OztOOzs7OzsKKzI0QUQ7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgUjtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDcyIDAwMjk7Ozs7Tjs7Ozs7CisyNEFFO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFM7U287MDtMOzxjb21wYXQ+IDAwMjggMDA3MyAwMDI5Ozs7O047Ozs7OworMjRBRjtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBUO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNzQgMDAyOTs7OztOOzs7OzsKKzI0QjA7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgVTtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDc1IDAwMjk7Ozs7Tjs7Ozs7CisyNEIxO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFY7U287MDtMOzxjb21wYXQ+IDAwMjggMDA3NiAwMDI5Ozs7O047Ozs7OworMjRCMjtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBXO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNzcgMDAyOTs7OztOOzs7OzsKKzI0QjM7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgWDtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDc4IDAwMjk7Ozs7Tjs7Ozs7CisyNEI0O1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFk7U287MDtMOzxjb21wYXQ+IDAwMjggMDA3OSAwMDI5Ozs7O047Ozs7OworMjRCNTtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBaO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwN0EgMDAyOTs7OztOOzs7OzsKKzI0QjY7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBBO1NvOzA7TDs8Y2lyY2xlPiAwMDQxOzs7O047Ozs7MjREMDsKKzI0Qjc7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBCO1NvOzA7TDs8Y2lyY2xlPiAwMDQyOzs7O047Ozs7MjREMTsKKzI0Qjg7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBDO1NvOzA7TDs8Y2lyY2xlPiAwMDQzOzs7O047Ozs7MjREMjsKKzI0Qjk7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBEO1NvOzA7TDs8Y2lyY2xlPiAwMDQ0Ozs7O047Ozs7MjREMzsKKzI0QkE7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBFO1NvOzA7TDs8Y2lyY2xlPiAwMDQ1Ozs7O047Ozs7MjRENDsKKzI0QkI7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBGO1NvOzA7TDs8Y2lyY2xlPiAwMDQ2Ozs7O047Ozs7MjRENTsKKzI0QkM7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBHO1NvOzA7TDs8Y2lyY2xlPiAwMDQ3Ozs7O047Ozs7MjRENjsKKzI0QkQ7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBIO1NvOzA7TDs8Y2lyY2xlPiAwMDQ4Ozs7O047Ozs7MjRENzsKKzI0QkU7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBJO1NvOzA7TDs8Y2lyY2xlPiAwMDQ5Ozs7O047Ozs7MjREODsKKzI0QkY7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBKO1NvOzA7TDs8Y2lyY2xlPiAwMDRBOzs7O047Ozs7MjREOTsKKzI0QzA7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBLO1NvOzA7TDs8Y2lyY2xlPiAwMDRCOzs7O047Ozs7MjREQTsKKzI0QzE7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBMO1NvOzA7TDs8Y2lyY2xlPiAwMDRDOzs7O047Ozs7MjREQjsKKzI0QzI7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBNO1NvOzA7TDs8Y2lyY2xlPiAwMDREOzs7O047Ozs7MjREQzsKKzI0QzM7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBOO1NvOzA7TDs8Y2lyY2xlPiAwMDRFOzs7O047Ozs7MjRERDsKKzI0QzQ7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBPO1NvOzA7TDs8Y2lyY2xlPiAwMDRGOzs7O047Ozs7MjRERTsKKzI0QzU7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBQO1NvOzA7TDs8Y2lyY2xlPiAwMDUwOzs7O047Ozs7MjRERjsKKzI0QzY7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBRO1NvOzA7TDs8Y2lyY2xlPiAwMDUxOzs7O047Ozs7MjRFMDsKKzI0Qzc7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBSO1NvOzA7TDs8Y2lyY2xlPiAwMDUyOzs7O047Ozs7MjRFMTsKKzI0Qzg7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBTO1NvOzA7TDs8Y2lyY2xlPiAwMDUzOzs7O047Ozs7MjRFMjsKKzI0Qzk7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBUO1NvOzA7TDs8Y2lyY2xlPiAwMDU0Ozs7O047Ozs7MjRFMzsKKzI0Q0E7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBVO1NvOzA7TDs8Y2lyY2xlPiAwMDU1Ozs7O047Ozs7MjRFNDsKKzI0Q0I7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBWO1NvOzA7TDs8Y2lyY2xlPiAwMDU2Ozs7O047Ozs7MjRFNTsKKzI0Q0M7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBXO1NvOzA7TDs8Y2lyY2xlPiAwMDU3Ozs7O047Ozs7MjRFNjsKKzI0Q0Q7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBYO1NvOzA7TDs8Y2lyY2xlPiAwMDU4Ozs7O047Ozs7MjRFNzsKKzI0Q0U7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBZO1NvOzA7TDs8Y2lyY2xlPiAwMDU5Ozs7O047Ozs7MjRFODsKKzI0Q0Y7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBaO1NvOzA7TDs8Y2lyY2xlPiAwMDVBOzs7O047Ozs7MjRFOTsKKzI0RDA7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgQTtTbzswO0w7PGNpcmNsZT4gMDA2MTs7OztOOzs7MjRCNjs7MjRCNgorMjREMTtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBCO1NvOzA7TDs8Y2lyY2xlPiAwMDYyOzs7O047OzsyNEI3OzsyNEI3CisyNEQyO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEM7U287MDtMOzxjaXJjbGU+IDAwNjM7Ozs7Tjs7OzI0Qjg7OzI0QjgKKzI0RDM7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgRDtTbzswO0w7PGNpcmNsZT4gMDA2NDs7OztOOzs7MjRCOTs7MjRCOQorMjRENDtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBFO1NvOzA7TDs8Y2lyY2xlPiAwMDY1Ozs7O047OzsyNEJBOzsyNEJBCisyNEQ1O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEY7U287MDtMOzxjaXJjbGU+IDAwNjY7Ozs7Tjs7OzI0QkI7OzI0QkIKKzI0RDY7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgRztTbzswO0w7PGNpcmNsZT4gMDA2Nzs7OztOOzs7MjRCQzs7MjRCQworMjRENztDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBIO1NvOzA7TDs8Y2lyY2xlPiAwMDY4Ozs7O047OzsyNEJEOzsyNEJECisyNEQ4O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEk7U287MDtMOzxjaXJjbGU+IDAwNjk7Ozs7Tjs7OzI0QkU7OzI0QkUKKzI0RDk7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgSjtTbzswO0w7PGNpcmNsZT4gMDA2QTs7OztOOzs7MjRCRjs7MjRCRgorMjREQTtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBLO1NvOzA7TDs8Y2lyY2xlPiAwMDZCOzs7O047OzsyNEMwOzsyNEMwCisyNERCO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEw7U287MDtMOzxjaXJjbGU+IDAwNkM7Ozs7Tjs7OzI0QzE7OzI0QzEKKzI0REM7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgTTtTbzswO0w7PGNpcmNsZT4gMDA2RDs7OztOOzs7MjRDMjs7MjRDMgorMjRERDtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBOO1NvOzA7TDs8Y2lyY2xlPiAwMDZFOzs7O047OzsyNEMzOzsyNEMzCisyNERFO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIE87U287MDtMOzxjaXJjbGU+IDAwNkY7Ozs7Tjs7OzI0QzQ7OzI0QzQKKzI0REY7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgUDtTbzswO0w7PGNpcmNsZT4gMDA3MDs7OztOOzs7MjRDNTs7MjRDNQorMjRFMDtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBRO1NvOzA7TDs8Y2lyY2xlPiAwMDcxOzs7O047OzsyNEM2OzsyNEM2CisyNEUxO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFI7U287MDtMOzxjaXJjbGU+IDAwNzI7Ozs7Tjs7OzI0Qzc7OzI0QzcKKzI0RTI7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgUztTbzswO0w7PGNpcmNsZT4gMDA3Mzs7OztOOzs7MjRDODs7MjRDOAorMjRFMztDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBUO1NvOzA7TDs8Y2lyY2xlPiAwMDc0Ozs7O047OzsyNEM5OzsyNEM5CisyNEU0O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFU7U287MDtMOzxjaXJjbGU+IDAwNzU7Ozs7Tjs7OzI0Q0E7OzI0Q0EKKzI0RTU7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgVjtTbzswO0w7PGNpcmNsZT4gMDA3Njs7OztOOzs7MjRDQjs7MjRDQgorMjRFNjtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBXO1NvOzA7TDs8Y2lyY2xlPiAwMDc3Ozs7O047OzsyNENDOzsyNENDCisyNEU3O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFg7U287MDtMOzxjaXJjbGU+IDAwNzg7Ozs7Tjs7OzI0Q0Q7OzI0Q0QKKzI0RTg7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgWTtTbzswO0w7PGNpcmNsZT4gMDA3OTs7OztOOzs7MjRDRTs7MjRDRQorMjRFOTtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBaO1NvOzA7TDs8Y2lyY2xlPiAwMDdBOzs7O047OzsyNENGOzsyNENGCisyNEVBO0NJUkNMRUQgRElHSVQgWkVSTztObzswO0VOOzxjaXJjbGU+IDAwMzA7OzA7MDtOOzs7OzsKKzI1MDA7Qk9YIERSQVdJTkdTIExJR0hUIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBIT1JJWk9OVEFMOzs7OworMjUwMTtCT1ggRFJBV0lOR1MgSEVBVlkgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIEhPUklaT05UQUw7Ozs7CisyNTAyO0JPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFZFUlRJQ0FMOzs7OworMjUwMztCT1ggRFJBV0lOR1MgSEVBVlkgVkVSVElDQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBWRVJUSUNBTDs7OzsKKzI1MDQ7Qk9YIERSQVdJTkdTIExJR0hUIFRSSVBMRSBEQVNIIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBUUklQTEUgREFTSCBIT1JJWk9OVEFMOzs7OworMjUwNTtCT1ggRFJBV0lOR1MgSEVBVlkgVFJJUExFIERBU0ggSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFRSSVBMRSBEQVNIIEhPUklaT05UQUw7Ozs7CisyNTA2O0JPWCBEUkFXSU5HUyBMSUdIVCBUUklQTEUgREFTSCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFRSSVBMRSBEQVNIIFZFUlRJQ0FMOzs7OworMjUwNztCT1ggRFJBV0lOR1MgSEVBVlkgVFJJUExFIERBU0ggVkVSVElDQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBUUklQTEUgREFTSCBWRVJUSUNBTDs7OzsKKzI1MDg7Qk9YIERSQVdJTkdTIExJR0hUIFFVQURSVVBMRSBEQVNIIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBRVUFEUlVQTEUgREFTSCBIT1JJWk9OVEFMOzs7OworMjUwOTtCT1ggRFJBV0lOR1MgSEVBVlkgUVVBRFJVUExFIERBU0ggSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFFVQURSVVBMRSBEQVNIIEhPUklaT05UQUw7Ozs7CisyNTBBO0JPWCBEUkFXSU5HUyBMSUdIVCBRVUFEUlVQTEUgREFTSCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFFVQURSVVBMRSBEQVNIIFZFUlRJQ0FMOzs7OworMjUwQjtCT1ggRFJBV0lOR1MgSEVBVlkgUVVBRFJVUExFIERBU0ggVkVSVElDQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBRVUFEUlVQTEUgREFTSCBWRVJUSUNBTDs7OzsKKzI1MEM7Qk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgRE9XTiBBTkQgUklHSFQ7Ozs7CisyNTBEO0JPWCBEUkFXSU5HUyBET1dOIExJR0hUIEFORCBSSUdIVCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gTElHSFQgQU5EIFJJR0hUIEhFQVZZOzs7OworMjUwRTtCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgUklHSFQgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIEhFQVZZIEFORCBSSUdIVCBMSUdIVDs7OzsKKzI1MEY7Qk9YIERSQVdJTkdTIEhFQVZZIERPV04gQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9XTiBBTkQgUklHSFQ7Ozs7CisyNTEwO0JPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgRE9XTiBBTkQgTEVGVDs7OzsKKzI1MTE7Qk9YIERSQVdJTkdTIERPV04gTElHSFQgQU5EIExFRlQgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIExJR0hUIEFORCBMRUZUIEhFQVZZOzs7OworMjUxMjtCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgTEVGVCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gSEVBVlkgQU5EIExFRlQgTElHSFQ7Ozs7CisyNTEzO0JPWCBEUkFXSU5HUyBIRUFWWSBET1dOIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9XTiBBTkQgTEVGVDs7OzsKKzI1MTQ7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFVQIEFORCBSSUdIVDs7OzsKKzI1MTU7Qk9YIERSQVdJTkdTIFVQIExJR0hUIEFORCBSSUdIVCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBSSUdIVCBIRUFWWTs7OzsKKzI1MTY7Qk9YIERSQVdJTkdTIFVQIEhFQVZZIEFORCBSSUdIVCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFVQIEhFQVZZIEFORCBSSUdIVCBMSUdIVDs7OzsKKzI1MTc7Qk9YIERSQVdJTkdTIEhFQVZZIFVQIEFORCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFVQIEFORCBSSUdIVDs7OzsKKzI1MTg7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgVVAgQU5EIExFRlQ7Ozs7CisyNTE5O0JPWCBEUkFXSU5HUyBVUCBMSUdIVCBBTkQgTEVGVCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBMRUZUIEhFQVZZOzs7OworMjUxQTtCT1ggRFJBV0lOR1MgVVAgSEVBVlkgQU5EIExFRlQgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBIRUFWWSBBTkQgTEVGVCBMSUdIVDs7OzsKKzI1MUI7Qk9YIERSQVdJTkdTIEhFQVZZIFVQIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgVVAgQU5EIExFRlQ7Ozs7CisyNTFDO0JPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQ7Ozs7CisyNTFEO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBMSUdIVCBBTkQgUklHSFQgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBMSUdIVCBBTkQgUklHSFQgSEVBVlk7Ozs7CisyNTFFO0JPWCBEUkFXSU5HUyBVUCBIRUFWWSBBTkQgUklHSFQgRE9XTiBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFVQIEhFQVZZIEFORCBSSUdIVCBET1dOIExJR0hUOzs7OworMjUxRjtCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgUklHSFQgVVAgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIEhFQVZZIEFORCBSSUdIVCBVUCBMSUdIVDs7OzsKKzI1MjA7Qk9YIERSQVdJTkdTIFZFUlRJQ0FMIEhFQVZZIEFORCBSSUdIVCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIEhFQVZZIEFORCBSSUdIVCBMSUdIVDs7OzsKKzI1MjE7Qk9YIERSQVdJTkdTIERPV04gTElHSFQgQU5EIFJJR0hUIFVQIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBMSUdIVCBBTkQgUklHSFQgVVAgSEVBVlk7Ozs7CisyNTIyO0JPWCBEUkFXSU5HUyBVUCBMSUdIVCBBTkQgUklHSFQgRE9XTiBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBSSUdIVCBET1dOIEhFQVZZOzs7OworMjUyMztCT1ggRFJBV0lOR1MgSEVBVlkgVkVSVElDQUwgQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgVkVSVElDQUwgQU5EIFJJR0hUOzs7OworMjUyNDtCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVDs7OzsKKzI1MjU7Qk9YIERSQVdJTkdTIFZFUlRJQ0FMIExJR0hUIEFORCBMRUZUIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgVkVSVElDQUwgTElHSFQgQU5EIExFRlQgSEVBVlk7Ozs7CisyNTI2O0JPWCBEUkFXSU5HUyBVUCBIRUFWWSBBTkQgTEVGVCBET1dOIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgVVAgSEVBVlkgQU5EIExFRlQgRE9XTiBMSUdIVDs7OzsKKzI1Mjc7Qk9YIERSQVdJTkdTIERPV04gSEVBVlkgQU5EIExFRlQgVVAgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIEhFQVZZIEFORCBMRUZUIFVQIExJR0hUOzs7OworMjUyODtCT1ggRFJBV0lOR1MgVkVSVElDQUwgSEVBVlkgQU5EIExFRlQgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBIRUFWWSBBTkQgTEVGVCBMSUdIVDs7OzsKKzI1Mjk7Qk9YIERSQVdJTkdTIERPV04gTElHSFQgQU5EIExFRlQgVVAgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIExJR0hUIEFORCBMRUZUIFVQIEhFQVZZOzs7OworMjUyQTtCT1ggRFJBV0lOR1MgVVAgTElHSFQgQU5EIExFRlQgRE9XTiBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBMRUZUIERPV04gSEVBVlk7Ozs7CisyNTJCO0JPWCBEUkFXSU5HUyBIRUFWWSBWRVJUSUNBTCBBTkQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFZFUlRJQ0FMIEFORCBMRUZUOzs7OworMjUyQztCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERPV04gQU5EIEhPUklaT05UQUw7Ozs7CisyNTJEO0JPWCBEUkFXSU5HUyBMRUZUIEhFQVZZIEFORCBSSUdIVCBET1dOIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBIRUFWWSBBTkQgUklHSFQgRE9XTiBMSUdIVDs7OzsKKzI1MkU7Qk9YIERSQVdJTkdTIFJJR0hUIEhFQVZZIEFORCBMRUZUIERPV04gTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBIRUFWWSBBTkQgTEVGVCBET1dOIExJR0hUOzs7OworMjUyRjtCT1ggRFJBV0lOR1MgRE9XTiBMSUdIVCBBTkQgSE9SSVpPTlRBTCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gTElHSFQgQU5EIEhPUklaT05UQUwgSEVBVlk7Ozs7CisyNTMwO0JPWCBEUkFXSU5HUyBET1dOIEhFQVZZIEFORCBIT1JJWk9OVEFMIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBIRUFWWSBBTkQgSE9SSVpPTlRBTCBMSUdIVDs7OzsKKzI1MzE7Qk9YIERSQVdJTkdTIFJJR0hUIExJR0hUIEFORCBMRUZUIERPV04gSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBMSUdIVCBBTkQgTEVGVCBET1dOIEhFQVZZOzs7OworMjUzMjtCT1ggRFJBV0lOR1MgTEVGVCBMSUdIVCBBTkQgUklHSFQgRE9XTiBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIExFRlQgTElHSFQgQU5EIFJJR0hUIERPV04gSEVBVlk7Ozs7CisyNTMzO0JPWCBEUkFXSU5HUyBIRUFWWSBET1dOIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9XTiBBTkQgSE9SSVpPTlRBTDs7OzsKKzI1MzQ7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgVVAgQU5EIEhPUklaT05UQUw7Ozs7CisyNTM1O0JPWCBEUkFXSU5HUyBMRUZUIEhFQVZZIEFORCBSSUdIVCBVUCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExFRlQgSEVBVlkgQU5EIFJJR0hUIFVQIExJR0hUOzs7OworMjUzNjtCT1ggRFJBV0lOR1MgUklHSFQgSEVBVlkgQU5EIExFRlQgVVAgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBIRUFWWSBBTkQgTEVGVCBVUCBMSUdIVDs7OzsKKzI1Mzc7Qk9YIERSQVdJTkdTIFVQIExJR0hUIEFORCBIT1JJWk9OVEFMIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgVVAgTElHSFQgQU5EIEhPUklaT05UQUwgSEVBVlk7Ozs7CisyNTM4O0JPWCBEUkFXSU5HUyBVUCBIRUFWWSBBTkQgSE9SSVpPTlRBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFVQIEhFQVZZIEFORCBIT1JJWk9OVEFMIExJR0hUOzs7OworMjUzOTtCT1ggRFJBV0lOR1MgUklHSFQgTElHSFQgQU5EIExFRlQgVVAgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBMSUdIVCBBTkQgTEVGVCBVUCBIRUFWWTs7OzsKKzI1M0E7Qk9YIERSQVdJTkdTIExFRlQgTElHSFQgQU5EIFJJR0hUIFVQIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBMSUdIVCBBTkQgUklHSFQgVVAgSEVBVlk7Ozs7CisyNTNCO0JPWCBEUkFXSU5HUyBIRUFWWSBVUCBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFVQIEFORCBIT1JJWk9OVEFMOzs7OworMjUzQztCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDs7OzsKKzI1M0Q7Qk9YIERSQVdJTkdTIExFRlQgSEVBVlkgQU5EIFJJR0hUIFZFUlRJQ0FMIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBIRUFWWSBBTkQgUklHSFQgVkVSVElDQUwgTElHSFQ7Ozs7CisyNTNFO0JPWCBEUkFXSU5HUyBSSUdIVCBIRUFWWSBBTkQgTEVGVCBWRVJUSUNBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFJJR0hUIEhFQVZZIEFORCBMRUZUIFZFUlRJQ0FMIExJR0hUOzs7OworMjUzRjtCT1ggRFJBV0lOR1MgVkVSVElDQUwgTElHSFQgQU5EIEhPUklaT05UQUwgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBMSUdIVCBBTkQgSE9SSVpPTlRBTCBIRUFWWTs7OzsKKzI1NDA7Qk9YIERSQVdJTkdTIFVQIEhFQVZZIEFORCBET1dOIEhPUklaT05UQUwgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBIRUFWWSBBTkQgRE9XTiBIT1JJWk9OVEFMIExJR0hUOzs7OworMjU0MTtCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgVVAgSE9SSVpPTlRBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gSEVBVlkgQU5EIFVQIEhPUklaT05UQUwgTElHSFQ7Ozs7CisyNTQyO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBIRUFWWSBBTkQgSE9SSVpPTlRBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIEhFQVZZIEFORCBIT1JJWk9OVEFMIExJR0hUOzs7OworMjU0MztCT1ggRFJBV0lOR1MgTEVGVCBVUCBIRUFWWSBBTkQgUklHSFQgRE9XTiBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExFRlQgVVAgSEVBVlkgQU5EIFJJR0hUIERPV04gTElHSFQ7Ozs7CisyNTQ0O0JPWCBEUkFXSU5HUyBSSUdIVCBVUCBIRUFWWSBBTkQgTEVGVCBET1dOIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgUklHSFQgVVAgSEVBVlkgQU5EIExFRlQgRE9XTiBMSUdIVDs7OzsKKzI1NDU7Qk9YIERSQVdJTkdTIExFRlQgRE9XTiBIRUFWWSBBTkQgUklHSFQgVVAgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMRUZUIERPV04gSEVBVlkgQU5EIFJJR0hUIFVQIExJR0hUOzs7OworMjU0NjtCT1ggRFJBV0lOR1MgUklHSFQgRE9XTiBIRUFWWSBBTkQgTEVGVCBVUCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFJJR0hUIERPV04gSEVBVlkgQU5EIExFRlQgVVAgTElHSFQ7Ozs7CisyNTQ3O0JPWCBEUkFXSU5HUyBET1dOIExJR0hUIEFORCBVUCBIT1JJWk9OVEFMIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBMSUdIVCBBTkQgVVAgSE9SSVpPTlRBTCBIRUFWWTs7OzsKKzI1NDg7Qk9YIERSQVdJTkdTIFVQIExJR0hUIEFORCBET1dOIEhPUklaT05UQUwgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBMSUdIVCBBTkQgRE9XTiBIT1JJWk9OVEFMIEhFQVZZOzs7OworMjU0OTtCT1ggRFJBV0lOR1MgUklHSFQgTElHSFQgQU5EIExFRlQgVkVSVElDQUwgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBMSUdIVCBBTkQgTEVGVCBWRVJUSUNBTCBIRUFWWTs7OzsKKzI1NEE7Qk9YIERSQVdJTkdTIExFRlQgTElHSFQgQU5EIFJJR0hUIFZFUlRJQ0FMIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBMSUdIVCBBTkQgUklHSFQgVkVSVElDQUwgSEVBVlk7Ozs7CisyNTRCO0JPWCBEUkFXSU5HUyBIRUFWWSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMOzs7OworMjU0QztCT1ggRFJBV0lOR1MgTElHSFQgRE9VQkxFIERBU0ggSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERPVUJMRSBEQVNIIEhPUklaT05UQUw7Ozs7CisyNTREO0JPWCBEUkFXSU5HUyBIRUFWWSBET1VCTEUgREFTSCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9VQkxFIERBU0ggSE9SSVpPTlRBTDs7OzsKKzI1NEU7Qk9YIERSQVdJTkdTIExJR0hUIERPVUJMRSBEQVNIIFZFUlRJQ0FMO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgRE9VQkxFIERBU0ggVkVSVElDQUw7Ozs7CisyNTRGO0JPWCBEUkFXSU5HUyBIRUFWWSBET1VCTEUgREFTSCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIERPVUJMRSBEQVNIIFZFUlRJQ0FMOzs7OworMjU1MDtCT1ggRFJBV0lOR1MgRE9VQkxFIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgSE9SSVpPTlRBTDs7OzsKKzI1NTE7Qk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBWRVJUSUNBTDs7OzsKKzI1NTI7Qk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFOzs7OworMjU1MztCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gRE9VQkxFIEFORCBSSUdIVCBTSU5HTEU7Ozs7CisyNTU0O0JPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgRE9XTiBBTkQgUklHSFQ7Ozs7CisyNTU1O0JPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7Ozs7CisyNTU2O0JPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEU7Ozs7CisyNTU3O0JPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBET1dOIEFORCBMRUZUOzs7OworMjU1ODtCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBSSUdIVCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRTs7OzsKKzI1NTk7Qk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFO1NvOzA7T047Ozs7O047Rk9STVMgVVAgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEU7Ozs7CisyNTVBO0JPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgRE9VQkxFIFVQIEFORCBSSUdIVDs7OzsKKzI1NUI7Qk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFOzs7OworMjU1QztCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBMRUZUIFNJTkdMRTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIERPVUJMRSBBTkQgTEVGVCBTSU5HTEU7Ozs7CisyNTVEO0JPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgVVAgQU5EIExFRlQ7Ozs7CisyNTVFO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFOzs7OworMjU1RjtCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRTs7OzsKKzI1NjA7Qk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUOzs7OworMjU2MTtCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBMRUZUIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7Ozs7CisyNTYyO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIExFRlQgU0lOR0xFO1NvOzA7T047Ozs7O047Rk9STVMgVkVSVElDQUwgRE9VQkxFIEFORCBMRUZUIFNJTkdMRTs7OzsKKzI1NjM7Qk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVDs7OzsKKzI1NjQ7Qk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTs7OzsKKzI1NjU7Qk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRTs7OzsKKzI1NjY7Qk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUw7Ozs7CisyNTY3O0JPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFO1NvOzA7T047Ozs7O047Rk9STVMgVVAgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTs7OzsKKzI1Njg7Qk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFOzs7OworMjU2OTtCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMOzs7OworMjU2QTtCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEU7Ozs7CisyNTZCO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFO1NvOzA7T047Ozs7O047Rk9STVMgVkVSVElDQUwgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRTs7OzsKKzI1NkM7Qk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDs7OzsKKzI1NkQ7Qk9YIERSQVdJTkdTIExJR0hUIEFSQyBET1dOIEFORCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIEFSQyBET1dOIEFORCBSSUdIVDs7OzsKKzI1NkU7Qk9YIERSQVdJTkdTIExJR0hUIEFSQyBET1dOIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgQVJDIERPV04gQU5EIExFRlQ7Ozs7CisyNTZGO0JPWCBEUkFXSU5HUyBMSUdIVCBBUkMgVVAgQU5EIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBBUkMgVVAgQU5EIExFRlQ7Ozs7CisyNTcwO0JPWCBEUkFXSU5HUyBMSUdIVCBBUkMgVVAgQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgQVJDIFVQIEFORCBSSUdIVDs7OzsKKzI1NzE7Qk9YIERSQVdJTkdTIExJR0hUIERJQUdPTkFMIFVQUEVSIFJJR0hUIFRPIExPV0VSIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBESUFHT05BTCBVUFBFUiBSSUdIVCBUTyBMT1dFUiBMRUZUOzs7OworMjU3MjtCT1ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgTEVGVCBUTyBMT1dFUiBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERJQUdPTkFMIFVQUEVSIExFRlQgVE8gTE9XRVIgUklHSFQ7Ozs7CisyNTczO0JPWCBEUkFXSU5HUyBMSUdIVCBESUFHT05BTCBDUk9TUztTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERJQUdPTkFMIENST1NTOzs7OworMjU3NDtCT1ggRFJBV0lOR1MgTElHSFQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIExFRlQ7Ozs7CisyNTc1O0JPWCBEUkFXSU5HUyBMSUdIVCBVUDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFVQOzs7OworMjU3NjtCT1ggRFJBV0lOR1MgTElHSFQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBSSUdIVDs7OzsKKzI1Nzc7Qk9YIERSQVdJTkdTIExJR0hUIERPV047U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBET1dOOzs7OworMjU3ODtCT1ggRFJBV0lOR1MgSEVBVlkgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIExFRlQ7Ozs7CisyNTc5O0JPWCBEUkFXSU5HUyBIRUFWWSBVUDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFVQOzs7OworMjU3QTtCT1ggRFJBV0lOR1MgSEVBVlkgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBSSUdIVDs7OzsKKzI1N0I7Qk9YIERSQVdJTkdTIEhFQVZZIERPV047U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBET1dOOzs7OworMjU3QztCT1ggRFJBV0lOR1MgTElHSFQgTEVGVCBBTkQgSEVBVlkgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBMRUZUIEFORCBIRUFWWSBSSUdIVDs7OzsKKzI1N0Q7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIRUFWWSBET1dOO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgVVAgQU5EIEhFQVZZIERPV047Ozs7CisyNTdFO0JPWCBEUkFXSU5HUyBIRUFWWSBMRUZUIEFORCBMSUdIVCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIExFRlQgQU5EIExJR0hUIFJJR0hUOzs7OworMjU3RjtCT1ggRFJBV0lOR1MgSEVBVlkgVVAgQU5EIExJR0hUIERPV047U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBVUCBBTkQgTElHSFQgRE9XTjs7OzsKKzI1ODA7VVBQRVIgSEFMRiBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1ODE7TE9XRVIgT05FIEVJR0hUSCBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1ODI7TE9XRVIgT05FIFFVQVJURVIgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTgzO0xPV0VSIFRIUkVFIEVJR0hUSFMgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTg0O0xPV0VSIEhBTEYgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTg1O0xPV0VSIEZJVkUgRUlHSFRIUyBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1ODY7TE9XRVIgVEhSRUUgUVVBUlRFUlMgQkxPQ0s7U287MDtPTjs7Ozs7TjtMT1dFUiBUSFJFRSBRVUFSVEVSIEJMT0NLOzs7OworMjU4NztMT1dFUiBTRVZFTiBFSUdIVEhTIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU4ODtGVUxMIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU4OTtMRUZUIFNFVkVOIEVJR0hUSFMgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNThBO0xFRlQgVEhSRUUgUVVBUlRFUlMgQkxPQ0s7U287MDtPTjs7Ozs7TjtMRUZUIFRIUkVFIFFVQVJURVIgQkxPQ0s7Ozs7CisyNThCO0xFRlQgRklWRSBFSUdIVEhTIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU4QztMRUZUIEhBTEYgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNThEO0xFRlQgVEhSRUUgRUlHSFRIUyBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1OEU7TEVGVCBPTkUgUVVBUlRFUiBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1OEY7TEVGVCBPTkUgRUlHSFRIIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU5MDtSSUdIVCBIQUxGIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU5MTtMSUdIVCBTSEFERTtTbzswO09OOzs7OztOOzs7OzsKKzI1OTI7TUVESVVNIFNIQURFO1NvOzA7T047Ozs7O047Ozs7OworMjU5MztEQVJLIFNIQURFO1NvOzA7T047Ozs7O047Ozs7OworMjU5NDtVUFBFUiBPTkUgRUlHSFRIIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU5NTtSSUdIVCBPTkUgRUlHSFRIIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjVBMDtCTEFDSyBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUExO1dISVRFIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzI1QTI7V0hJVEUgU1FVQVJFIFdJVEggUk9VTkRFRCBDT1JORVJTO1NvOzA7T047Ozs7O047Ozs7OworMjVBMztXSElURSBTUVVBUkUgQ09OVEFJTklORyBCTEFDSyBTTUFMTCBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUE0O1NRVUFSRSBXSVRIIEhPUklaT05UQUwgRklMTDtTbzswO09OOzs7OztOOzs7OzsKKzI1QTU7U1FVQVJFIFdJVEggVkVSVElDQUwgRklMTDtTbzswO09OOzs7OztOOzs7OzsKKzI1QTY7U1FVQVJFIFdJVEggT1JUSE9HT05BTCBDUk9TU0hBVENIIEZJTEw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUE3O1NRVUFSRSBXSVRIIFVQUEVSIExFRlQgVE8gTE9XRVIgUklHSFQgRklMTDtTbzswO09OOzs7OztOOzs7OzsKKzI1QTg7U1FVQVJFIFdJVEggVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVGVCBGSUxMO1NvOzA7T047Ozs7O047Ozs7OworMjVBOTtTUVVBUkUgV0lUSCBESUFHT05BTCBDUk9TU0hBVENIIEZJTEw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUFBO0JMQUNLIFNNQUxMIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzI1QUI7V0hJVEUgU01BTEwgU1FVQVJFO1NvOzA7T047Ozs7O047Ozs7OworMjVBQztCTEFDSyBSRUNUQU5HTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUFEO1dISVRFIFJFQ1RBTkdMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1QUU7QkxBQ0sgVkVSVElDQUwgUkVDVEFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVBRjtXSElURSBWRVJUSUNBTCBSRUNUQU5HTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUIwO0JMQUNLIFBBUkFMTEVMT0dSQU07U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUIxO1dISVRFIFBBUkFMTEVMT0dSQU07U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUIyO0JMQUNLIFVQLVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgVVAgUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUIzO1dISVRFIFVQLVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgVVAgUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUI0O0JMQUNLIFVQLVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgVVAgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUI1O1dISVRFIFVQLVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgVVAgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUI2O0JMQUNLIFJJR0hULVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgUklHSFQgUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUI3O1dISVRFIFJJR0hULVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgUklHSFQgUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUI4O0JMQUNLIFJJR0hULVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgUklHSFQgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUI5O1dISVRFIFJJR0hULVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgUklHSFQgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUJBO0JMQUNLIFJJR0hULVBPSU5USU5HIFBPSU5URVI7U287MDtPTjs7Ozs7TjtCTEFDSyBSSUdIVCBQT0lOVElORyBQT0lOVEVSOzs7OworMjVCQjtXSElURSBSSUdIVC1QT0lOVElORyBQT0lOVEVSO1NvOzA7T047Ozs7O047V0hJVEUgUklHSFQgUE9JTlRJTkcgUE9JTlRFUjs7OzsKKzI1QkM7QkxBQ0sgRE9XTi1QT0lOVElORyBUUklBTkdMRTtTbzswO09OOzs7OztOO0JMQUNLIERPV04gUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUJEO1dISVRFIERPV04tUE9JTlRJTkcgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtXSElURSBET1dOIFBPSU5USU5HIFRSSUFOR0xFOzs7OworMjVCRTtCTEFDSyBET1dOLVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgRE9XTiBQT0lOVElORyBTTUFMTCBUUklBTkdMRTs7OzsKKzI1QkY7V0hJVEUgRE9XTi1QT0lOVElORyBTTUFMTCBUUklBTkdMRTtTbzswO09OOzs7OztOO1dISVRFIERPV04gUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUMwO0JMQUNLIExFRlQtUE9JTlRJTkcgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtCTEFDSyBMRUZUIFBPSU5USU5HIFRSSUFOR0xFOzs7OworMjVDMTtXSElURSBMRUZULVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgTEVGVCBQT0lOVElORyBUUklBTkdMRTs7OzsKKzI1QzI7QkxBQ0sgTEVGVC1QT0lOVElORyBTTUFMTCBUUklBTkdMRTtTbzswO09OOzs7OztOO0JMQUNLIExFRlQgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUMzO1dISVRFIExFRlQtUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtXSElURSBMRUZUIFBPSU5USU5HIFNNQUxMIFRSSUFOR0xFOzs7OworMjVDNDtCTEFDSyBMRUZULVBPSU5USU5HIFBPSU5URVI7U287MDtPTjs7Ozs7TjtCTEFDSyBMRUZUIFBPSU5USU5HIFBPSU5URVI7Ozs7CisyNUM1O1dISVRFIExFRlQtUE9JTlRJTkcgUE9JTlRFUjtTbzswO09OOzs7OztOO1dISVRFIExFRlQgUE9JTlRJTkcgUE9JTlRFUjs7OzsKKzI1QzY7QkxBQ0sgRElBTU9ORDtTbzswO09OOzs7OztOOzs7OzsKKzI1Qzc7V0hJVEUgRElBTU9ORDtTbzswO09OOzs7OztOOzs7OzsKKzI1Qzg7V0hJVEUgRElBTU9ORCBDT05UQUlOSU5HIEJMQUNLIFNNQUxMIERJQU1PTkQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUM5O0ZJU0hFWUU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUNBO0xPWkVOR0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUNCO1dISVRFIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1Q0M7RE9UVEVEIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1Q0Q7Q0lSQ0xFIFdJVEggVkVSVElDQUwgRklMTDtTbzswO09OOzs7OztOOzs7OzsKKzI1Q0U7QlVMTFNFWUU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUNGO0JMQUNLIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RDA7Q0lSQ0xFIFdJVEggTEVGVCBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVEMTtDSVJDTEUgV0lUSCBSSUdIVCBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVEMjtDSVJDTEUgV0lUSCBMT1dFUiBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVEMztDSVJDTEUgV0lUSCBVUFBFUiBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVENDtDSVJDTEUgV0lUSCBVUFBFUiBSSUdIVCBRVUFEUkFOVCBCTEFDSztTbzswO09OOzs7OztOOzs7OzsKKzI1RDU7Q0lSQ0xFIFdJVEggQUxMIEJVVCBVUFBFUiBMRUZUIFFVQURSQU5UIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVENjtMRUZUIEhBTEYgQkxBQ0sgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVENztSSUdIVCBIQUxGIEJMQUNLIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RDg7SU5WRVJTRSBCVUxMRVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUQ5O0lOVkVSU0UgV0hJVEUgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVEQTtVUFBFUiBIQUxGIElOVkVSU0UgV0hJVEUgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVEQjtMT1dFUiBIQUxGIElOVkVSU0UgV0hJVEUgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVEQztVUFBFUiBMRUZUIFFVQURSQU5UIENJUkNVTEFSIEFSQztTbzswO09OOzs7OztOOzs7OzsKKzI1REQ7VVBQRVIgUklHSFQgUVVBRFJBTlQgQ0lSQ1VMQVIgQVJDO1NvOzA7T047Ozs7O047Ozs7OworMjVERTtMT1dFUiBSSUdIVCBRVUFEUkFOVCBDSVJDVUxBUiBBUkM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNURGO0xPV0VSIExFRlQgUVVBRFJBTlQgQ0lSQ1VMQVIgQVJDO1NvOzA7T047Ozs7O047Ozs7OworMjVFMDtVUFBFUiBIQUxGIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RTE7TE9XRVIgSEFMRiBDSVJDTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUUyO0JMQUNLIExPV0VSIFJJR0hUIFRSSUFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVFMztCTEFDSyBMT1dFUiBMRUZUIFRSSUFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVFNDtCTEFDSyBVUFBFUiBMRUZUIFRSSUFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVFNTtCTEFDSyBVUFBFUiBSSUdIVCBUUklBTkdMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RTY7V0hJVEUgQlVMTEVUO1NvOzA7T047Ozs7O047Ozs7OworMjVFNztTUVVBUkUgV0lUSCBMRUZUIEhBTEYgQkxBQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUU4O1NRVUFSRSBXSVRIIFJJR0hUIEhBTEYgQkxBQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUU5O1NRVUFSRSBXSVRIIFVQUEVSIExFRlQgRElBR09OQUwgSEFMRiBCTEFDSztTbzswO09OOzs7OztOOzs7OzsKKzI1RUE7U1FVQVJFIFdJVEggTE9XRVIgUklHSFQgRElBR09OQUwgSEFMRiBCTEFDSztTbzswO09OOzs7OztOOzs7OzsKKzI1RUI7V0hJVEUgU1FVQVJFIFdJVEggVkVSVElDQUwgQklTRUNUSU5HIExJTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUVDO1dISVRFIFVQLVBPSU5USU5HIFRSSUFOR0xFIFdJVEggRE9UO1NvOzA7T047Ozs7O047V0hJVEUgVVAgUE9JTlRJTkcgVFJJQU5HTEUgV0lUSCBET1Q7Ozs7CisyNUVEO1VQLVBPSU5USU5HIFRSSUFOR0xFIFdJVEggTEVGVCBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047VVAgUE9JTlRJTkcgVFJJQU5HTEUgV0lUSCBMRUZUIEhBTEYgQkxBQ0s7Ozs7CisyNUVFO1VQLVBPSU5USU5HIFRSSUFOR0xFIFdJVEggUklHSFQgSEFMRiBCTEFDSztTbzswO09OOzs7OztOO1VQIFBPSU5USU5HIFRSSUFOR0xFIFdJVEggUklHSFQgSEFMRiBCTEFDSzs7OzsKKzI1RUY7TEFSR0UgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjYwMDtCTEFDSyBTVU4gV0lUSCBSQVlTO1NvOzA7T047Ozs7O047Ozs7OworMjYwMTtDTE9VRDtTbzswO09OOzs7OztOOzs7OzsKKzI2MDI7VU1CUkVMTEE7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjAzO1NOT1dNQU47U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjA0O0NPTUVUO1NvOzA7T047Ozs7O047Ozs7OworMjYwNTtCTEFDSyBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjYwNjtXSElURSBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjYwNztMSUdIVE5JTkc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjA4O1RIVU5ERVJTVE9STTtTbzswO09OOzs7OztOOzs7OzsKKzI2MDk7U1VOO1NvOzA7T047Ozs7O047Ozs7OworMjYwQTtBU0NFTkRJTkcgTk9ERTtTbzswO09OOzs7OztOOzs7OzsKKzI2MEI7REVTQ0VORElORyBOT0RFO1NvOzA7T047Ozs7O047Ozs7OworMjYwQztDT05KVU5DVElPTjtTbzswO09OOzs7OztOOzs7OzsKKzI2MEQ7T1BQT1NJVElPTjtTbzswO09OOzs7OztOOzs7OzsKKzI2MEU7QkxBQ0sgVEVMRVBIT05FO1NvOzA7T047Ozs7O047Ozs7OworMjYwRjtXSElURSBURUxFUEhPTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjEwO0JBTExPVCBCT1g7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjExO0JBTExPVCBCT1ggV0lUSCBDSEVDSztTbzswO09OOzs7OztOOzs7OzsKKzI2MTI7QkFMTE9UIEJPWCBXSVRIIFg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjEzO1NBTFRJUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjFBO0JMQUNLIExFRlQgUE9JTlRJTkcgSU5ERVg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjFCO0JMQUNLIFJJR0hUIFBPSU5USU5HIElOREVYO1NvOzA7T047Ozs7O047Ozs7OworMjYxQztXSElURSBMRUZUIFBPSU5USU5HIElOREVYO1NvOzA7T047Ozs7O047Ozs7OworMjYxRDtXSElURSBVUCBQT0lOVElORyBJTkRFWDtTbzswO09OOzs7OztOOzs7OzsKKzI2MUU7V0hJVEUgUklHSFQgUE9JTlRJTkcgSU5ERVg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjFGO1dISVRFIERPV04gUE9JTlRJTkcgSU5ERVg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjIwO1NLVUxMIEFORCBDUk9TU0JPTkVTO1NvOzA7T047Ozs7O047Ozs7OworMjYyMTtDQVVUSU9OIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjIyO1JBRElPQUNUSVZFIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjIzO0JJT0hBWkFSRCBTSUdOO1NvOzA7T047Ozs7O047Ozs7OworMjYyNDtDQURVQ0VVUztTbzswO09OOzs7OztOOzs7OzsKKzI2MjU7QU5LSDtTbzswO09OOzs7OztOOzs7OzsKKzI2MjY7T1JUSE9ET1ggQ1JPU1M7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjI3O0NISSBSSE87U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjI4O0NST1NTIE9GIExPUlJBSU5FO1NvOzA7T047Ozs7O047Ozs7OworMjYyOTtDUk9TUyBPRiBKRVJVU0FMRU07U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjJBO1NUQVIgQU5EIENSRVNDRU5UO1NvOzA7T047Ozs7O047Ozs7OworMjYyQjtGQVJTSSBTWU1CT0w7U287MDtPTjs7Ozs7TjtTWU1CT0wgT0YgSVJBTjs7OzsKKzI2MkM7QURJIFNIQUtUSTtTbzswO09OOzs7OztOOzs7OzsKKzI2MkQ7SEFNTUVSIEFORCBTSUNLTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjJFO1BFQUNFIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzI2MkY7WUlOIFlBTkc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjMwO1RSSUdSQU0gRk9SIEhFQVZFTjtTbzswO09OOzs7OztOOzs7OzsKKzI2MzE7VFJJR1JBTSBGT1IgTEFLRTtTbzswO09OOzs7OztOOzs7OzsKKzI2MzI7VFJJR1JBTSBGT1IgRklSRTtTbzswO09OOzs7OztOOzs7OzsKKzI2MzM7VFJJR1JBTSBGT1IgVEhVTkRFUjtTbzswO09OOzs7OztOOzs7OzsKKzI2MzQ7VFJJR1JBTSBGT1IgV0lORDtTbzswO09OOzs7OztOOzs7OzsKKzI2MzU7VFJJR1JBTSBGT1IgV0FURVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjM2O1RSSUdSQU0gRk9SIE1PVU5UQUlOO1NvOzA7T047Ozs7O047Ozs7OworMjYzNztUUklHUkFNIEZPUiBFQVJUSDtTbzswO09OOzs7OztOOzs7OzsKKzI2Mzg7V0hFRUwgT0YgREhBUk1BO1NvOzA7T047Ozs7O047Ozs7OworMjYzOTtXSElURSBGUk9XTklORyBGQUNFO1NvOzA7T047Ozs7O047Ozs7OworMjYzQTtXSElURSBTTUlMSU5HIEZBQ0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjNCO0JMQUNLIFNNSUxJTkcgRkFDRTtTbzswO09OOzs7OztOOzs7OzsKKzI2M0M7V0hJVEUgU1VOIFdJVEggUkFZUztTbzswO09OOzs7OztOOzs7OzsKKzI2M0Q7RklSU1QgUVVBUlRFUiBNT09OO1NvOzA7T047Ozs7O047Ozs7OworMjYzRTtMQVNUIFFVQVJURVIgTU9PTjtTbzswO09OOzs7OztOOzs7OzsKKzI2M0Y7TUVSQ1VSWTtTbzswO09OOzs7OztOOzs7OzsKKzI2NDA7RkVNQUxFIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQxO0VBUlRIO1NvOzA7T047Ozs7O047Ozs7OworMjY0MjtNQUxFIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQzO0pVUElURVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQ0O1NBVFVSTjtTbzswO09OOzs7OztOOzs7OzsKKzI2NDU7VVJBTlVTO1NvOzA7T047Ozs7O047Ozs7OworMjY0NjtORVBUVU5FO1NvOzA7T047Ozs7O047Ozs7OworMjY0NztQTFVUTztTbzswO09OOzs7OztOOzs7OzsKKzI2NDg7QVJJRVM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQ5O1RBVVJVUztTbzswO09OOzs7OztOOzs7OzsKKzI2NEE7R0VNSU5JO1NvOzA7T047Ozs7O047Ozs7OworMjY0QjtDQU5DRVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjRDO0xFTztTbzswO09OOzs7OztOOzs7OzsKKzI2NEQ7VklSR087U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjRFO0xJQlJBO1NvOzA7T047Ozs7O047Ozs7OworMjY0RjtTQ09SUElVUztTbzswO09OOzs7OztOOzs7OzsKKzI2NTA7U0FHSVRUQVJJVVM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjUxO0NBUFJJQ09STjtTbzswO09OOzs7OztOOzs7OzsKKzI2NTI7QVFVQVJJVVM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjUzO1BJU0NFUztTbzswO09OOzs7OztOOzs7OzsKKzI2NTQ7V0hJVEUgQ0hFU1MgS0lORztTbzswO09OOzs7OztOOzs7OzsKKzI2NTU7V0hJVEUgQ0hFU1MgUVVFRU47U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjU2O1dISVRFIENIRVNTIFJPT0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjU3O1dISVRFIENIRVNTIEJJU0hPUDtTbzswO09OOzs7OztOOzs7OzsKKzI2NTg7V0hJVEUgQ0hFU1MgS05JR0hUO1NvOzA7T047Ozs7O047Ozs7OworMjY1OTtXSElURSBDSEVTUyBQQVdOO1NvOzA7T047Ozs7O047Ozs7OworMjY1QTtCTEFDSyBDSEVTUyBLSU5HO1NvOzA7T047Ozs7O047Ozs7OworMjY1QjtCTEFDSyBDSEVTUyBRVUVFTjtTbzswO09OOzs7OztOOzs7OzsKKzI2NUM7QkxBQ0sgQ0hFU1MgUk9PSztTbzswO09OOzs7OztOOzs7OzsKKzI2NUQ7QkxBQ0sgQ0hFU1MgQklTSE9QO1NvOzA7T047Ozs7O047Ozs7OworMjY1RTtCTEFDSyBDSEVTUyBLTklHSFQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjVGO0JMQUNLIENIRVNTIFBBV047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjYwO0JMQUNLIFNQQURFIFNVSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjYxO1dISVRFIEhFQVJUIFNVSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjYyO1dISVRFIERJQU1PTkQgU1VJVDtTbzswO09OOzs7OztOOzs7OzsKKzI2NjM7QkxBQ0sgQ0xVQiBTVUlUO1NvOzA7T047Ozs7O047Ozs7OworMjY2NDtXSElURSBTUEFERSBTVUlUO1NvOzA7T047Ozs7O047Ozs7OworMjY2NTtCTEFDSyBIRUFSVCBTVUlUO1NvOzA7T047Ozs7O047Ozs7OworMjY2NjtCTEFDSyBESUFNT05EIFNVSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjY3O1dISVRFIENMVUIgU1VJVDtTbzswO09OOzs7OztOOzs7OzsKKzI2Njg7SE9UIFNQUklOR1M7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjY5O1FVQVJURVIgTk9URTtTbzswO09OOzs7OztOOzs7OzsKKzI2NkE7RUlHSFRIIE5PVEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjZCO0JFQU1FRCBFSUdIVEggTk9URVM7U287MDtPTjs7Ozs7TjtCQVJSRUQgRUlHSFRIIE5PVEVTOzs7OworMjY2QztCRUFNRUQgU0lYVEVFTlRIIE5PVEVTO1NvOzA7T047Ozs7O047QkFSUkVEIFNJWFRFRU5USCBOT1RFUzs7OzsKKzI2NkQ7TVVTSUMgRkxBVCBTSUdOO1NvOzA7T047Ozs7O047RkxBVDs7OzsKKzI2NkU7TVVTSUMgTkFUVVJBTCBTSUdOO1NvOzA7T047Ozs7O047TkFUVVJBTDs7OzsKKzI2NkY7TVVTSUMgU0hBUlAgU0lHTjtTbzswO09OOzs7OztOO1NIQVJQOzs7OworMjcwMTtVUFBFUiBCTEFERSBTQ0lTU09SUztTbzswO09OOzs7OztOOzs7OzsKKzI3MDI7QkxBQ0sgU0NJU1NPUlM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzAzO0xPV0VSIEJMQURFIFNDSVNTT1JTO1NvOzA7T047Ozs7O047Ozs7OworMjcwNDtXSElURSBTQ0lTU09SUztTbzswO09OOzs7OztOOzs7OzsKKzI3MDY7VEVMRVBIT05FIExPQ0FUSU9OIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzA3O1RBUEUgRFJJVkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzA4O0FJUlBMQU5FO1NvOzA7T047Ozs7O047Ozs7OworMjcwOTtFTlZFTE9QRTtTbzswO09OOzs7OztOOzs7OzsKKzI3MEM7VklDVE9SWSBIQU5EO1NvOzA7T047Ozs7O047Ozs7OworMjcwRDtXUklUSU5HIEhBTkQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzBFO0xPV0VSIFJJR0hUIFBFTkNJTDtTbzswO09OOzs7OztOOzs7OzsKKzI3MEY7UEVOQ0lMO1NvOzA7T047Ozs7O047Ozs7OworMjcxMDtVUFBFUiBSSUdIVCBQRU5DSUw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzExO1dISVRFIE5JQjtTbzswO09OOzs7OztOOzs7OzsKKzI3MTI7QkxBQ0sgTklCO1NvOzA7T047Ozs7O047Ozs7OworMjcxMztDSEVDSyBNQVJLO1NvOzA7T047Ozs7O047Ozs7OworMjcxNDtIRUFWWSBDSEVDSyBNQVJLO1NvOzA7T047Ozs7O047Ozs7OworMjcxNTtNVUxUSVBMSUNBVElPTiBYO1NvOzA7T047Ozs7O047Ozs7OworMjcxNjtIRUFWWSBNVUxUSVBMSUNBVElPTiBYO1NvOzA7T047Ozs7O047Ozs7OworMjcxNztCQUxMT1QgWDtTbzswO09OOzs7OztOOzs7OzsKKzI3MTg7SEVBVlkgQkFMTE9UIFg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzE5O09VVExJTkVEIEdSRUVLIENST1NTO1NvOzA7T047Ozs7O047Ozs7OworMjcxQTtIRUFWWSBHUkVFSyBDUk9TUztTbzswO09OOzs7OztOOzs7OzsKKzI3MUI7T1BFTiBDRU5UUkUgQ1JPU1M7U287MDtPTjs7Ozs7TjtPUEVOIENFTlRFUiBDUk9TUzs7OzsKKzI3MUM7SEVBVlkgT1BFTiBDRU5UUkUgQ1JPU1M7U287MDtPTjs7Ozs7TjtIRUFWWSBPUEVOIENFTlRFUiBDUk9TUzs7OzsKKzI3MUQ7TEFUSU4gQ1JPU1M7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzFFO1NIQURPV0VEIFdISVRFIExBVElOIENST1NTO1NvOzA7T047Ozs7O047Ozs7OworMjcxRjtPVVRMSU5FRCBMQVRJTiBDUk9TUztTbzswO09OOzs7OztOOzs7OzsKKzI3MjA7TUFMVEVTRSBDUk9TUztTbzswO09OOzs7OztOOzs7OzsKKzI3MjE7U1RBUiBPRiBEQVZJRDtTbzswO09OOzs7OztOOzs7OzsKKzI3MjI7Rk9VUiBURUFSRFJPUC1TUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzIzO0ZPVVIgQkFMTE9PTi1TUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzI0O0hFQVZZIEZPVVIgQkFMTE9PTi1TUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzI1O0ZPVVIgQ0xVQi1TUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzI2O0JMQUNLIEZPVVIgUE9JTlRFRCBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjcyNztXSElURSBGT1VSIFBPSU5URUQgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3Mjk7U1RSRVNTIE9VVExJTkVEIFdISVRFIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzJBO0NJUkNMRUQgV0hJVEUgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3MkI7T1BFTiBDRU5UUkUgQkxBQ0sgU1RBUjtTbzswO09OOzs7OztOO09QRU4gQ0VOVEVSIEJMQUNLIFNUQVI7Ozs7CisyNzJDO0JMQUNLIENFTlRSRSBXSElURSBTVEFSO1NvOzA7T047Ozs7O047QkxBQ0sgQ0VOVEVSIFdISVRFIFNUQVI7Ozs7CisyNzJEO09VVExJTkVEIEJMQUNLIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzJFO0hFQVZZIE9VVExJTkVEIEJMQUNLIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzJGO1BJTldIRUVMIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzMwO1NIQURPV0VEIFdISVRFIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzMxO0hFQVZZIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjczMjtPUEVOIENFTlRSRSBBU1RFUklTSztTbzswO09OOzs7OztOO09QRU4gQ0VOVEVSIEFTVEVSSVNLOzs7OworMjczMztFSUdIVCBTUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzM0O0VJR0hUIFBPSU5URUQgQkxBQ0sgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3MzU7RUlHSFQgUE9JTlRFRCBQSU5XSEVFTCBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjczNjtTSVggUE9JTlRFRCBCTEFDSyBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjczNztFSUdIVCBQT0lOVEVEIFJFQ1RJTElORUFSIEJMQUNLIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzM4O0hFQVZZIEVJR0hUIFBPSU5URUQgUkVDVElMSU5FQVIgQkxBQ0sgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3Mzk7VFdFTFZFIFBPSU5URUQgQkxBQ0sgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3M0E7U0lYVEVFTiBQT0lOVEVEIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjczQjtURUFSRFJPUC1TUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzNDO09QRU4gQ0VOVFJFIFRFQVJEUk9QLVNQT0tFRCBBU1RFUklTSztTbzswO09OOzs7OztOO09QRU4gQ0VOVEVSIFRFQVJEUk9QLVNQT0tFRCBBU1RFUklTSzs7OzsKKzI3M0Q7SEVBVlkgVEVBUkRST1AtU1BPS0VEIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjczRTtTSVggUEVUQUxMRUQgQkxBQ0sgQU5EIFdISVRFIEZMT1JFVFRFO1NvOzA7T047Ozs7O047Ozs7OworMjczRjtCTEFDSyBGTE9SRVRURTtTbzswO09OOzs7OztOOzs7OzsKKzI3NDA7V0hJVEUgRkxPUkVUVEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzQxO0VJR0hUIFBFVEFMTEVEIE9VVExJTkVEIEJMQUNLIEZMT1JFVFRFO1NvOzA7T047Ozs7O047Ozs7OworMjc0MjtDSVJDTEVEIE9QRU4gQ0VOVFJFIEVJR0hUIFBPSU5URUQgU1RBUjtTbzswO09OOzs7OztOO0NJUkNMRUQgT1BFTiBDRU5URVIgRUlHSFQgUE9JTlRFRCBTVEFSOzs7OworMjc0MztIRUFWWSBURUFSRFJPUC1TUE9LRUQgUElOV0hFRUwgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzQ0O1NOT1dGTEFLRTtTbzswO09OOzs7OztOOzs7OzsKKzI3NDU7VElHSFQgVFJJRk9MSUFURSBTTk9XRkxBS0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzQ2O0hFQVZZIENIRVZST04gU05PV0ZMQUtFO1NvOzA7T047Ozs7O047Ozs7OworMjc0NztTUEFSS0xFO1NvOzA7T047Ozs7O047Ozs7OworMjc0ODtIRUFWWSBTUEFSS0xFO1NvOzA7T047Ozs7O047Ozs7OworMjc0OTtCQUxMT09OLVNQT0tFRCBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3NEE7RUlHSFQgVEVBUkRST1AtU1BPS0VEIFBST1BFTExFUiBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3NEI7SEVBVlkgRUlHSFQgVEVBUkRST1AtU1BPS0VEIFBST1BFTExFUiBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3NEQ7U0hBRE9XRUQgV0hJVEUgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjc0RjtMT1dFUiBSSUdIVCBEUk9QLVNIQURPV0VEIFdISVRFIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzI3NTA7VVBQRVIgUklHSFQgRFJPUC1TSEFET1dFRCBXSElURSBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzUxO0xPV0VSIFJJR0hUIFNIQURPV0VEIFdISVRFIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzI3NTI7VVBQRVIgUklHSFQgU0hBRE9XRUQgV0hJVEUgU1FVQVJFO1NvOzA7T047Ozs7O047Ozs7OworMjc1NjtCTEFDSyBESUFNT05EIE1JTlVTIFdISVRFIFg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzU4O0xJR0hUIFZFUlRJQ0FMIEJBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3NTk7TUVESVVNIFZFUlRJQ0FMIEJBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3NUE7SEVBVlkgVkVSVElDQUwgQkFSO1NvOzA7T047Ozs7O047Ozs7OworMjc1QjtIRUFWWSBTSU5HTEUgVFVSTkVEIENPTU1BIFFVT1RBVElPTiBNQVJLIE9STkFNRU5UO1NvOzA7T047Ozs7O047Ozs7OworMjc1QztIRUFWWSBTSU5HTEUgQ09NTUEgUVVPVEFUSU9OIE1BUksgT1JOQU1FTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzVEO0hFQVZZIERPVUJMRSBUVVJORUQgQ09NTUEgUVVPVEFUSU9OIE1BUksgT1JOQU1FTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzVFO0hFQVZZIERPVUJMRSBDT01NQSBRVU9UQVRJT04gTUFSSyBPUk5BTUVOVDtTbzswO09OOzs7OztOOzs7OzsKKzI3NjE7Q1VSVkVEIFNURU0gUEFSQUdSQVBIIFNJR04gT1JOQU1FTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzYyO0hFQVZZIEVYQ0xBTUFUSU9OIE1BUksgT1JOQU1FTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzYzO0hFQVZZIEhFQVJUIEVYQ0xBTUFUSU9OIE1BUksgT1JOQU1FTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzY0O0hFQVZZIEJMQUNLIEhFQVJUO1NvOzA7T047Ozs7O047Ozs7OworMjc2NTtST1RBVEVEIEhFQVZZIEJMQUNLIEhFQVJUIEJVTExFVDtTbzswO09OOzs7OztOOzs7OzsKKzI3NjY7RkxPUkFMIEhFQVJUO1NvOzA7T047Ozs7O047Ozs7OworMjc2NztST1RBVEVEIEZMT1JBTCBIRUFSVCBCVUxMRVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzc2O0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBPTkU7Tm87MDtPTjs7OzE7MTtOO0lOVkVSU0UgQ0lSQ0xFRCBESUdJVCBPTkU7Ozs7CisyNzc3O0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBUV087Tm87MDtPTjs7OzI7MjtOO0lOVkVSU0UgQ0lSQ0xFRCBESUdJVCBUV087Ozs7CisyNzc4O0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBUSFJFRTtObzswO09OOzs7MzszO047SU5WRVJTRSBDSVJDTEVEIERJR0lUIFRIUkVFOzs7OworMjc3OTtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgRElHSVQgRk9VUjtObzswO09OOzs7NDs0O047SU5WRVJTRSBDSVJDTEVEIERJR0lUIEZPVVI7Ozs7CisyNzdBO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBGSVZFO05vOzA7T047Ozs1OzU7TjtJTlZFUlNFIENJUkNMRUQgRElHSVQgRklWRTs7OzsKKzI3N0I7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIERJR0lUIFNJWDtObzswO09OOzs7Njs2O047SU5WRVJTRSBDSVJDTEVEIERJR0lUIFNJWDs7OzsKKzI3N0M7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIERJR0lUIFNFVkVOO05vOzA7T047Ozs3Ozc7TjtJTlZFUlNFIENJUkNMRUQgRElHSVQgU0VWRU47Ozs7CisyNzdEO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBFSUdIVDtObzswO09OOzs7ODs4O047SU5WRVJTRSBDSVJDTEVEIERJR0lUIEVJR0hUOzs7OworMjc3RTtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgRElHSVQgTklORTtObzswO09OOzs7OTs5O047SU5WRVJTRSBDSVJDTEVEIERJR0lUIE5JTkU7Ozs7CisyNzdGO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBOVU1CRVIgVEVOO05vOzA7T047Ozs7MTA7TjtJTlZFUlNFIENJUkNMRUQgTlVNQkVSIFRFTjs7OzsKKzI3ODA7RElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgT05FO05vOzA7T047OzsxOzE7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgT05FOzs7OworMjc4MTtESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBUV087Tm87MDtPTjs7OzI7MjtOO0NJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBUV087Ozs7CisyNzgyO0RJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFRIUkVFO05vOzA7T047OzszOzM7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgVEhSRUU7Ozs7CisyNzgzO0RJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEZPVVI7Tm87MDtPTjs7OzQ7NDtOO0NJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGT1VSOzs7OworMjc4NDtESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGSVZFO05vOzA7T047Ozs1OzU7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRklWRTs7OzsKKzI3ODU7RElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgU0lYO05vOzA7T047Ozs2OzY7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgU0lYOzs7OworMjc4NjtESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBTRVZFTjtObzswO09OOzs7Nzs3O047Q0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFNFVkVOOzs7OworMjc4NztESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBFSUdIVDtObzswO09OOzs7ODs4O047Q0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEVJR0hUOzs7OworMjc4ODtESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBOSU5FO05vOzA7T047Ozs5Ozk7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgTklORTs7OzsKKzI3ODk7RElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgTlVNQkVSIFRFTjtObzswO09OOzs7OzEwO047Q0lSQ0xFRCBTQU5TLVNFUklGIE5VTUJFUiBURU47Ozs7CisyNzhBO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIE9ORTtObzswO09OOzs7MTsxO047SU5WRVJTRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgT05FOzs7OworMjc4QjtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBUV087Tm87MDtPTjs7OzI7MjtOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFRXTzs7OzsKKzI3OEM7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgVEhSRUU7Tm87MDtPTjs7OzM7MztOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFRIUkVFOzs7OworMjc4RDtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGT1VSO05vOzA7T047Ozs0OzQ7TjtJTlZFUlNFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGT1VSOzs7OworMjc4RTtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGSVZFO05vOzA7T047Ozs1OzU7TjtJTlZFUlNFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGSVZFOzs7OworMjc4RjtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBTSVg7Tm87MDtPTjs7OzY7NjtOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFNJWDs7OzsKKzI3OTA7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgU0VWRU47Tm87MDtPTjs7Ozc7NztOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFNFVkVOOzs7OworMjc5MTtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBFSUdIVDtObzswO09OOzs7ODs4O047SU5WRVJTRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRUlHSFQ7Ozs7CisyNzkyO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIE5JTkU7Tm87MDtPTjs7Ozk7OTtOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIE5JTkU7Ozs7CisyNzkzO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIE5VTUJFUiBURU47Tm87MDtPTjs7OzsxMDtOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIE5VTUJFUiBURU47Ozs7CisyNzk0O0hFQVZZIFdJREUtSEVBREVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBXSURFLUhFQURFRCBSSUdIVCBBUlJPVzs7OzsKKzI3OTg7SEVBVlkgU09VVEggRUFTVCBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIExPV0VSIFJJR0hUIEFSUk9XOzs7OworMjc5OTtIRUFWWSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgUklHSFQgQVJST1c7Ozs7CisyNzlBO0hFQVZZIE5PUlRIIEVBU1QgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBVUFBFUiBSSUdIVCBBUlJPVzs7OzsKKzI3OUI7RFJBRlRJTkcgUE9JTlQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0RSQUZUSU5HIFBPSU5UIFJJR0hUIEFSUk9XOzs7OworMjc5QztIRUFWWSBST1VORC1USVBQRUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIFJPVU5ELVRJUFBFRCBSSUdIVCBBUlJPVzs7OzsKKzI3OUQ7VFJJQU5HTEUtSEVBREVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtUUklBTkdMRS1IRUFERUQgUklHSFQgQVJST1c7Ozs7CisyNzlFO0hFQVZZIFRSSUFOR0xFLUhFQURFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgVFJJQU5HTEUtSEVBREVEIFJJR0hUIEFSUk9XOzs7OworMjc5RjtEQVNIRUQgVFJJQU5HTEUtSEVBREVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtEQVNIRUQgVFJJQU5HTEUtSEVBREVEIFJJR0hUIEFSUk9XOzs7OworMjdBMDtIRUFWWSBEQVNIRUQgVFJJQU5HTEUtSEVBREVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBEQVNIRUQgVFJJQU5HTEUtSEVBREVEIFJJR0hUIEFSUk9XOzs7OworMjdBMTtCTEFDSyBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047QkxBQ0sgUklHSFQgQVJST1c7Ozs7CisyN0EyO1RIUkVFLUQgVE9QLUxJR0hURUQgUklHSFRXQVJEUyBBUlJPV0hFQUQ7U287MDtPTjs7Ozs7TjtUSFJFRS1EIFRPUC1MSUdIVEVEIFJJR0hUIEFSUk9XSEVBRDs7OzsKKzI3QTM7VEhSRUUtRCBCT1RUT00tTElHSFRFRCBSSUdIVFdBUkRTIEFSUk9XSEVBRDtTbzswO09OOzs7OztOO1RIUkVFLUQgQk9UVE9NLUxJR0hURUQgUklHSFQgQVJST1dIRUFEOzs7OworMjdBNDtCTEFDSyBSSUdIVFdBUkRTIEFSUk9XSEVBRDtTbzswO09OOzs7OztOO0JMQUNLIFJJR0hUIEFSUk9XSEVBRDs7OzsKKzI3QTU7SEVBVlkgQkxBQ0sgQ1VSVkVEIERPV05XQVJEUyBBTkQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIEJMQUNLIENVUlZFRCBET1dOIEFORCBSSUdIVCBBUlJPVzs7OzsKKzI3QTY7SEVBVlkgQkxBQ0sgQ1VSVkVEIFVQV0FSRFMgQU5EIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBCTEFDSyBDVVJWRUQgVVAgQU5EIFJJR0hUIEFSUk9XOzs7OworMjdBNztTUVVBVCBCTEFDSyBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047U1FVQVQgQkxBQ0sgUklHSFQgQVJST1c7Ozs7CisyN0E4O0hFQVZZIENPTkNBVkUtUE9JTlRFRCBCTEFDSyBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgQ09OQ0FWRS1QT0lOVEVEIEJMQUNLIFJJR0hUIEFSUk9XOzs7OworMjdBOTtSSUdIVC1TSEFERUQgV0hJVEUgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO1JJR0hULVNIQURFRCBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QUE7TEVGVC1TSEFERUQgV0hJVEUgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0xFRlQtU0hBREVEIFdISVRFIFJJR0hUIEFSUk9XOzs7OworMjdBQjtCQUNLLVRJTFRFRCBTSEFET1dFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047QkFDSy1USUxURUQgU0hBRE9XRUQgV0hJVEUgUklHSFQgQVJST1c7Ozs7CisyN0FDO0ZST05ULVRJTFRFRCBTSEFET1dFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047RlJPTlQtVElMVEVEIFNIQURPV0VEIFdISVRFIFJJR0hUIEFSUk9XOzs7OworMjdBRDtIRUFWWSBMT1dFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgTE9XRVIgUklHSFQtU0hBRE9XRUQgV0hJVEUgUklHSFQgQVJST1c7Ozs7CisyN0FFO0hFQVZZIFVQUEVSIFJJR0hULVNIQURPV0VEIFdISVRFIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBVUFBFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QUY7Tk9UQ0hFRCBMT1dFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047Tk9UQ0hFRCBMT1dFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QjE7Tk9UQ0hFRCBVUFBFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047Tk9UQ0hFRCBVUFBFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QjI7Q0lSQ0xFRCBIRUFWWSBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047Q0lSQ0xFRCBIRUFWWSBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QjM7V0hJVEUtRkVBVEhFUkVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtXSElURS1GRUFUSEVSRUQgUklHSFQgQVJST1c7Ozs7CisyN0I0O0JMQUNLLUZFQVRIRVJFRCBTT1VUSCBFQVNUIEFSUk9XO1NvOzA7T047Ozs7O047QkxBQ0stRkVBVEhFUkVEIExPV0VSIFJJR0hUIEFSUk9XOzs7OworMjdCNTtCTEFDSy1GRUFUSEVSRUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0JMQUNLLUZFQVRIRVJFRCBSSUdIVCBBUlJPVzs7OzsKKzI3QjY7QkxBQ0stRkVBVEhFUkVEIE5PUlRIIEVBU1QgQVJST1c7U287MDtPTjs7Ozs7TjtCTEFDSy1GRUFUSEVSRUQgVVBQRVIgUklHSFQgQVJST1c7Ozs7CisyN0I3O0hFQVZZIEJMQUNLLUZFQVRIRVJFRCBTT1VUSCBFQVNUIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgQkxBQ0stRkVBVEhFUkVEIExPV0VSIFJJR0hUIEFSUk9XOzs7OworMjdCODtIRUFWWSBCTEFDSy1GRUFUSEVSRUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIEJMQUNLLUZFQVRIRVJFRCBSSUdIVCBBUlJPVzs7OzsKKzI3Qjk7SEVBVlkgQkxBQ0stRkVBVEhFUkVEIE5PUlRIIEVBU1QgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBCTEFDSy1GRUFUSEVSRUQgVVBQRVIgUklHSFQgQVJST1c7Ozs7CisyN0JBO1RFQVJEUk9QLUJBUkJFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047VEVBUkRST1AtQkFSQkVEIFJJR0hUIEFSUk9XOzs7OworMjdCQjtIRUFWWSBURUFSRFJPUC1TSEFOS0VEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBURUFSRFJPUC1TSEFOS0VEIFJJR0hUIEFSUk9XOzs7OworMjdCQztXRURHRS1UQUlMRUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO1dFREdFLVRBSUxFRCBSSUdIVCBBUlJPVzs7OzsKKzI3QkQ7SEVBVlkgV0VER0UtVEFJTEVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBXRURHRS1UQUlMRUQgUklHSFQgQVJST1c7Ozs7CisyN0JFO09QRU4tT1VUTElORUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO09QRU4tT1VUTElORUQgUklHSFQgQVJST1c7Ozs7CiszMDAwO0lERU9HUkFQSElDIFNQQUNFO1pzOzA7V1M7PHdpZGU+IDAwMjA7Ozs7Tjs7Ozs7CiszMDAxO0lERU9HUkFQSElDIENPTU1BO1BvOzA7T047Ozs7O047Ozs7OworMzAwMjtJREVPR1JBUEhJQyBGVUxMIFNUT1A7UG87MDtPTjs7Ozs7TjtJREVPR1JBUEhJQyBQRVJJT0Q7Ozs7CiszMDAzO0RJVFRPIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CiszMDA0O0pBUEFORVNFIElORFVTVFJJQUwgU1RBTkRBUkQgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMzAwNTtJREVPR1JBUEhJQyBJVEVSQVRJT04gTUFSSztMbTswO09OOzs7OztOOzs7OzsKKzMwMDY7SURFT0dSQVBISUMgQ0xPU0lORyBNQVJLO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDA3O0lERU9HUkFQSElDIE5VTUJFUiBaRVJPO05sOzA7TDs7OzswO047Ozs7OworMzAwODtMRUZUIEFOR0xFIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIEFOR0xFIEJSQUNLRVQ7Ozs7CiszMDA5O1JJR0hUIEFOR0xFIEJSQUNLRVQ7UGU7MDtPTjs7Ozs7WTtDTE9TSU5HIEFOR0xFIEJSQUNLRVQ7Ozs7CiszMDBBO0xFRlQgRE9VQkxFIEFOR0xFIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIERPVUJMRSBBTkdMRSBCUkFDS0VUOzs7OworMzAwQjtSSUdIVCBET1VCTEUgQU5HTEUgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgRE9VQkxFIEFOR0xFIEJSQUNLRVQ7Ozs7CiszMDBDO0xFRlQgQ09STkVSIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIENPUk5FUiBCUkFDS0VUOzs7OworMzAwRDtSSUdIVCBDT1JORVIgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgQ09STkVSIEJSQUNLRVQ7Ozs7CiszMDBFO0xFRlQgV0hJVEUgQ09STkVSIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIFdISVRFIENPUk5FUiBCUkFDS0VUOzs7OworMzAwRjtSSUdIVCBXSElURSBDT1JORVIgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgV0hJVEUgQ09STkVSIEJSQUNLRVQ7Ozs7CiszMDEwO0xFRlQgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUO1BzOzA7T047Ozs7O1k7T1BFTklORyBCTEFDSyBMRU5USUNVTEFSIEJSQUNLRVQ7Ozs7CiszMDExO1JJR0hUIEJMQUNLIExFTlRJQ1VMQVIgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUOzs7OworMzAxMjtQT1NUQUwgTUFSSztTbzswO09OOzs7OztOOzs7OzsKKzMwMTM7R0VUQSBNQVJLO1NvOzA7T047Ozs7O047Ozs7OworMzAxNDtMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7Ozs7CiszMDE1O1JJR0hUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7UGU7MDtPTjs7Ozs7WTtDTE9TSU5HIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7Ozs7CiszMDE2O0xFRlQgV0hJVEUgTEVOVElDVUxBUiBCUkFDS0VUO1BzOzA7T047Ozs7O1k7T1BFTklORyBXSElURSBMRU5USUNVTEFSIEJSQUNLRVQ7Ozs7CiszMDE3O1JJR0hUIFdISVRFIExFTlRJQ1VMQVIgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgV0hJVEUgTEVOVElDVUxBUiBCUkFDS0VUOzs7OworMzAxODtMRUZUIFdISVRFIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIFdISVRFIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7Ozs7CiszMDE5O1JJR0hUIFdISVRFIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7UGU7MDtPTjs7Ozs7WTtDTE9TSU5HIFdISVRFIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7Ozs7CiszMDFBO0xFRlQgV0hJVEUgU1FVQVJFIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIFdISVRFIFNRVUFSRSBCUkFDS0VUOzs7OworMzAxQjtSSUdIVCBXSElURSBTUVVBUkUgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgV0hJVEUgU1FVQVJFIEJSQUNLRVQ7Ozs7CiszMDFDO1dBVkUgREFTSDtQZDswO09OOzs7OztOOzs7OzsKKzMwMUQ7UkVWRVJTRUQgRE9VQkxFIFBSSU1FIFFVT1RBVElPTiBNQVJLO1BzOzA7T047Ozs7O047Ozs7OworMzAxRTtET1VCTEUgUFJJTUUgUVVPVEFUSU9OIE1BUks7UGU7MDtPTjs7Ozs7Tjs7Ozs7CiszMDFGO0xPVyBET1VCTEUgUFJJTUUgUVVPVEFUSU9OIE1BUks7UGU7MDtPTjs7Ozs7Tjs7Ozs7CiszMDIwO1BPU1RBTCBNQVJLIEZBQ0U7U287MDtPTjs7Ozs7Tjs7Ozs7CiszMDIxO0hBTkdaSE9VIE5VTUVSQUwgT05FO05sOzA7TDs7OzsxO047Ozs7OworMzAyMjtIQU5HWkhPVSBOVU1FUkFMIFRXTztObDswO0w7Ozs7MjtOOzs7OzsKKzMwMjM7SEFOR1pIT1UgTlVNRVJBTCBUSFJFRTtObDswO0w7Ozs7MztOOzs7OzsKKzMwMjQ7SEFOR1pIT1UgTlVNRVJBTCBGT1VSO05sOzA7TDs7Ozs0O047Ozs7OworMzAyNTtIQU5HWkhPVSBOVU1FUkFMIEZJVkU7Tmw7MDtMOzs7OzU7Tjs7Ozs7CiszMDI2O0hBTkdaSE9VIE5VTUVSQUwgU0lYO05sOzA7TDs7Ozs2O047Ozs7OworMzAyNztIQU5HWkhPVSBOVU1FUkFMIFNFVkVOO05sOzA7TDs7Ozs3O047Ozs7OworMzAyODtIQU5HWkhPVSBOVU1FUkFMIEVJR0hUO05sOzA7TDs7Ozs4O047Ozs7OworMzAyOTtIQU5HWkhPVSBOVU1FUkFMIE5JTkU7Tmw7MDtMOzs7Ozk7Tjs7Ozs7CiszMDJBO0lERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSztNbjsyMTg7T047Ozs7O047Ozs7OworMzAyQjtJREVPR1JBUEhJQyBSSVNJTkcgVE9ORSBNQVJLO01uOzIyODtPTjs7Ozs7Tjs7Ozs7CiszMDJDO0lERU9HUkFQSElDIERFUEFSVElORyBUT05FIE1BUks7TW47MjMyO09OOzs7OztOOzs7OzsKKzMwMkQ7SURFT0dSQVBISUMgRU5URVJJTkcgVE9ORSBNQVJLO01uOzIyMjtPTjs7Ozs7Tjs7Ozs7CiszMDJFO0hBTkdVTCBTSU5HTEUgRE9UIFRPTkUgTUFSSztNbjsyMjQ7T047Ozs7O047Ozs7OworMzAyRjtIQU5HVUwgRE9VQkxFIERPVCBUT05FIE1BUks7TW47MjI0O09OOzs7OztOOzs7OzsKKzMwMzA7V0FWWSBEQVNIO1BkOzA7T047Ozs7O047Ozs7OworMzAzMTtWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLO0xtOzA7T047Ozs7O047Ozs7OworMzAzMjtWRVJUSUNBTCBLQU5BIFJFUEVBVCBXSVRIIFZPSUNFRCBTT1VORCBNQVJLO0xtOzA7T047Ozs7O047Ozs7OworMzAzMztWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIFVQUEVSIEhBTEY7TG07MDtPTjs7Ozs7Tjs7Ozs7CiszMDM0O1ZFUlRJQ0FMIEtBTkEgUkVQRUFUIFdJVEggVk9JQ0VEIFNPVU5EIE1BUksgVVBQRVIgSEFMRjtMbTswO09OOzs7OztOOzs7OzsKKzMwMzU7VkVSVElDQUwgS0FOQSBSRVBFQVQgTUFSSyBMT1dFUiBIQUxGO0xtOzA7T047Ozs7O047Ozs7OworMzAzNjtDSVJDTEVEIFBPU1RBTCBNQVJLO1NvOzA7T047PGNvbXBhdD4gMzAxMjs7OztOOzs7OzsKKzMwMzc7SURFT0dSQVBISUMgVEVMRUdSQVBIIExJTkUgRkVFRCBTRVBBUkFUT1IgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMzAzRjtJREVPR1JBUEhJQyBIQUxGIEZJTEwgU1BBQ0U7U287MDtPTjs7Ozs7Tjs7Ozs7CiszMDQxO0hJUkFHQU5BIExFVFRFUiBTTUFMTCBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQyO0hJUkFHQU5BIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQzO0hJUkFHQU5BIExFVFRFUiBTTUFMTCBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQ0O0hJUkFHQU5BIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQ1O0hJUkFHQU5BIExFVFRFUiBTTUFMTCBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQ2O0hJUkFHQU5BIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQ3O0hJUkFHQU5BIExFVFRFUiBTTUFMTCBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQ4O0hJUkFHQU5BIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQ5O0hJUkFHQU5BIExFVFRFUiBTTUFMTCBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDRBO0hJUkFHQU5BIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDRCO0hJUkFHQU5BIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMzA0QztISVJBR0FOQSBMRVRURVIgR0E7TG87MDtMOzMwNEIgMzA5OTs7OztOOzs7OzsKKzMwNEQ7SElSQUdBTkEgTEVUVEVSIEtJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDRFO0hJUkFHQU5BIExFVFRFUiBHSTtMbzswO0w7MzA0RCAzMDk5Ozs7O047Ozs7OworMzA0RjtISVJBR0FOQSBMRVRURVIgS1U7TG87MDtMOzs7OztOOzs7OzsKKzMwNTA7SElSQUdBTkEgTEVUVEVSIEdVO0xvOzA7TDszMDRGIDMwOTk7Ozs7Tjs7Ozs7CiszMDUxO0hJUkFHQU5BIExFVFRFUiBLRTtMbzswO0w7Ozs7O047Ozs7OworMzA1MjtISVJBR0FOQSBMRVRURVIgR0U7TG87MDtMOzMwNTEgMzA5OTs7OztOOzs7OzsKKzMwNTM7SElSQUdBTkEgTEVUVEVSIEtPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDU0O0hJUkFHQU5BIExFVFRFUiBHTztMbzswO0w7MzA1MyAzMDk5Ozs7O047Ozs7OworMzA1NTtISVJBR0FOQSBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzMwNTY7SElSQUdBTkEgTEVUVEVSIFpBO0xvOzA7TDszMDU1IDMwOTk7Ozs7Tjs7Ozs7CiszMDU3O0hJUkFHQU5BIExFVFRFUiBTSTtMbzswO0w7Ozs7O047Ozs7OworMzA1ODtISVJBR0FOQSBMRVRURVIgWkk7TG87MDtMOzMwNTcgMzA5OTs7OztOOzs7OzsKKzMwNTk7SElSQUdBTkEgTEVUVEVSIFNVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDVBO0hJUkFHQU5BIExFVFRFUiBaVTtMbzswO0w7MzA1OSAzMDk5Ozs7O047Ozs7OworMzA1QjtISVJBR0FOQSBMRVRURVIgU0U7TG87MDtMOzs7OztOOzs7OzsKKzMwNUM7SElSQUdBTkEgTEVUVEVSIFpFO0xvOzA7TDszMDVCIDMwOTk7Ozs7Tjs7Ozs7CiszMDVEO0hJUkFHQU5BIExFVFRFUiBTTztMbzswO0w7Ozs7O047Ozs7OworMzA1RTtISVJBR0FOQSBMRVRURVIgWk87TG87MDtMOzMwNUQgMzA5OTs7OztOOzs7OzsKKzMwNUY7SElSQUdBTkEgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDYwO0hJUkFHQU5BIExFVFRFUiBEQTtMbzswO0w7MzA1RiAzMDk5Ozs7O047Ozs7OworMzA2MTtISVJBR0FOQSBMRVRURVIgVEk7TG87MDtMOzs7OztOOzs7OzsKKzMwNjI7SElSQUdBTkEgTEVUVEVSIERJO0xvOzA7TDszMDYxIDMwOTk7Ozs7Tjs7Ozs7CiszMDYzO0hJUkFHQU5BIExFVFRFUiBTTUFMTCBUVTtMbzswO0w7Ozs7O047Ozs7OworMzA2NDtISVJBR0FOQSBMRVRURVIgVFU7TG87MDtMOzs7OztOOzs7OzsKKzMwNjU7SElSQUdBTkEgTEVUVEVSIERVO0xvOzA7TDszMDY0IDMwOTk7Ozs7Tjs7Ozs7CiszMDY2O0hJUkFHQU5BIExFVFRFUiBURTtMbzswO0w7Ozs7O047Ozs7OworMzA2NztISVJBR0FOQSBMRVRURVIgREU7TG87MDtMOzMwNjYgMzA5OTs7OztOOzs7OzsKKzMwNjg7SElSQUdBTkEgTEVUVEVSIFRPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDY5O0hJUkFHQU5BIExFVFRFUiBETztMbzswO0w7MzA2OCAzMDk5Ozs7O047Ozs7OworMzA2QTtISVJBR0FOQSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzMwNkI7SElSQUdBTkEgTEVUVEVSIE5JO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDZDO0hJUkFHQU5BIExFVFRFUiBOVTtMbzswO0w7Ozs7O047Ozs7OworMzA2RDtISVJBR0FOQSBMRVRURVIgTkU7TG87MDtMOzs7OztOOzs7OzsKKzMwNkU7SElSQUdBTkEgTEVUVEVSIE5PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDZGO0hJUkFHQU5BIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMzA3MDtISVJBR0FOQSBMRVRURVIgQkE7TG87MDtMOzMwNkYgMzA5OTs7OztOOzs7OzsKKzMwNzE7SElSQUdBTkEgTEVUVEVSIFBBO0xvOzA7TDszMDZGIDMwOUE7Ozs7Tjs7Ozs7CiszMDcyO0hJUkFHQU5BIExFVFRFUiBISTtMbzswO0w7Ozs7O047Ozs7OworMzA3MztISVJBR0FOQSBMRVRURVIgQkk7TG87MDtMOzMwNzIgMzA5OTs7OztOOzs7OzsKKzMwNzQ7SElSQUdBTkEgTEVUVEVSIFBJO0xvOzA7TDszMDcyIDMwOUE7Ozs7Tjs7Ozs7CiszMDc1O0hJUkFHQU5BIExFVFRFUiBIVTtMbzswO0w7Ozs7O047Ozs7OworMzA3NjtISVJBR0FOQSBMRVRURVIgQlU7TG87MDtMOzMwNzUgMzA5OTs7OztOOzs7OzsKKzMwNzc7SElSQUdBTkEgTEVUVEVSIFBVO0xvOzA7TDszMDc1IDMwOUE7Ozs7Tjs7Ozs7CiszMDc4O0hJUkFHQU5BIExFVFRFUiBIRTtMbzswO0w7Ozs7O047Ozs7OworMzA3OTtISVJBR0FOQSBMRVRURVIgQkU7TG87MDtMOzMwNzggMzA5OTs7OztOOzs7OzsKKzMwN0E7SElSQUdBTkEgTEVUVEVSIFBFO0xvOzA7TDszMDc4IDMwOUE7Ozs7Tjs7Ozs7CiszMDdCO0hJUkFHQU5BIExFVFRFUiBITztMbzswO0w7Ozs7O047Ozs7OworMzA3QztISVJBR0FOQSBMRVRURVIgQk87TG87MDtMOzMwN0IgMzA5OTs7OztOOzs7OzsKKzMwN0Q7SElSQUdBTkEgTEVUVEVSIFBPO0xvOzA7TDszMDdCIDMwOUE7Ozs7Tjs7Ozs7CiszMDdFO0hJUkFHQU5BIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMzA3RjtISVJBR0FOQSBMRVRURVIgTUk7TG87MDtMOzs7OztOOzs7OzsKKzMwODA7SElSQUdBTkEgTEVUVEVSIE1VO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDgxO0hJUkFHQU5BIExFVFRFUiBNRTtMbzswO0w7Ozs7O047Ozs7OworMzA4MjtISVJBR0FOQSBMRVRURVIgTU87TG87MDtMOzs7OztOOzs7OzsKKzMwODM7SElSQUdBTkEgTEVUVEVSIFNNQUxMIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDg0O0hJUkFHQU5BIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMzA4NTtISVJBR0FOQSBMRVRURVIgU01BTEwgWVU7TG87MDtMOzs7OztOOzs7OzsKKzMwODY7SElSQUdBTkEgTEVUVEVSIFlVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDg3O0hJUkFHQU5BIExFVFRFUiBTTUFMTCBZTztMbzswO0w7Ozs7O047Ozs7OworMzA4ODtISVJBR0FOQSBMRVRURVIgWU87TG87MDtMOzs7OztOOzs7OzsKKzMwODk7SElSQUdBTkEgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDhBO0hJUkFHQU5BIExFVFRFUiBSSTtMbzswO0w7Ozs7O047Ozs7OworMzA4QjtISVJBR0FOQSBMRVRURVIgUlU7TG87MDtMOzs7OztOOzs7OzsKKzMwOEM7SElSQUdBTkEgTEVUVEVSIFJFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDhEO0hJUkFHQU5BIExFVFRFUiBSTztMbzswO0w7Ozs7O047Ozs7OworMzA4RTtISVJBR0FOQSBMRVRURVIgU01BTEwgV0E7TG87MDtMOzs7OztOOzs7OzsKKzMwOEY7SElSQUdBTkEgTEVUVEVSIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDkwO0hJUkFHQU5BIExFVFRFUiBXSTtMbzswO0w7Ozs7O047Ozs7OworMzA5MTtISVJBR0FOQSBMRVRURVIgV0U7TG87MDtMOzs7OztOOzs7OzsKKzMwOTI7SElSQUdBTkEgTEVUVEVSIFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDkzO0hJUkFHQU5BIExFVFRFUiBOO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDk0O0hJUkFHQU5BIExFVFRFUiBWVTtMbzswO0w7MzA0NiAzMDk5Ozs7O047Ozs7OworMzA5OTtDT01CSU5JTkcgS0FUQUtBTkEtSElSQUdBTkEgVk9JQ0VEIFNPVU5EIE1BUks7TW47ODtPTjs7Ozs7TjtOT04tU1BBQ0lORyBLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSzs7OzsKKzMwOUE7Q09NQklOSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFNFTUktVk9JQ0VEIFNPVU5EIE1BUks7TW47ODtPTjs7Ozs7TjtOT04tU1BBQ0lORyBLQVRBS0FOQS1ISVJBR0FOQSBTRU1JLVZPSUNFRCBTT1VORCBNQVJLOzs7OworMzA5QjtLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSztTazswO09OOzxjb21wYXQ+IDAwMjAgMzA5OTs7OztOOzs7OzsKKzMwOUM7S0FUQUtBTkEtSElSQUdBTkEgU0VNSS1WT0lDRUQgU09VTkQgTUFSSztTazswO09OOzxjb21wYXQ+IDAwMjAgMzA5QTs7OztOOzs7OzsKKzMwOUQ7SElSQUdBTkEgSVRFUkFUSU9OIE1BUks7TG07MDtMOzs7OztOOzs7OzsKKzMwOUU7SElSQUdBTkEgVk9JQ0VEIElURVJBVElPTiBNQVJLO0xtOzA7TDszMDlEIDMwOTk7Ozs7Tjs7Ozs7CiszMEExO0tBVEFLQU5BIExFVFRFUiBTTUFMTCBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEEyO0tBVEFLQU5BIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEEzO0tBVEFLQU5BIExFVFRFUiBTTUFMTCBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEE0O0tBVEFLQU5BIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEE1O0tBVEFLQU5BIExFVFRFUiBTTUFMTCBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEE2O0tBVEFLQU5BIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEE3O0tBVEFLQU5BIExFVFRFUiBTTUFMTCBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEE4O0tBVEFLQU5BIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEE5O0tBVEFLQU5BIExFVFRFUiBTTUFMTCBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEFBO0tBVEFLQU5BIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEFCO0tBVEFLQU5BIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMzBBQztLQVRBS0FOQSBMRVRURVIgR0E7TG87MDtMOzMwQUIgMzA5OTs7OztOOzs7OzsKKzMwQUQ7S0FUQUtBTkEgTEVUVEVSIEtJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEFFO0tBVEFLQU5BIExFVFRFUiBHSTtMbzswO0w7MzBBRCAzMDk5Ozs7O047Ozs7OworMzBBRjtLQVRBS0FOQSBMRVRURVIgS1U7TG87MDtMOzs7OztOOzs7OzsKKzMwQjA7S0FUQUtBTkEgTEVUVEVSIEdVO0xvOzA7TDszMEFGIDMwOTk7Ozs7Tjs7Ozs7CiszMEIxO0tBVEFLQU5BIExFVFRFUiBLRTtMbzswO0w7Ozs7O047Ozs7OworMzBCMjtLQVRBS0FOQSBMRVRURVIgR0U7TG87MDtMOzMwQjEgMzA5OTs7OztOOzs7OzsKKzMwQjM7S0FUQUtBTkEgTEVUVEVSIEtPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEI0O0tBVEFLQU5BIExFVFRFUiBHTztMbzswO0w7MzBCMyAzMDk5Ozs7O047Ozs7OworMzBCNTtLQVRBS0FOQSBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzMwQjY7S0FUQUtBTkEgTEVUVEVSIFpBO0xvOzA7TDszMEI1IDMwOTk7Ozs7Tjs7Ozs7CiszMEI3O0tBVEFLQU5BIExFVFRFUiBTSTtMbzswO0w7Ozs7O047Ozs7OworMzBCODtLQVRBS0FOQSBMRVRURVIgWkk7TG87MDtMOzMwQjcgMzA5OTs7OztOOzs7OzsKKzMwQjk7S0FUQUtBTkEgTEVUVEVSIFNVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEJBO0tBVEFLQU5BIExFVFRFUiBaVTtMbzswO0w7MzBCOSAzMDk5Ozs7O047Ozs7OworMzBCQjtLQVRBS0FOQSBMRVRURVIgU0U7TG87MDtMOzs7OztOOzs7OzsKKzMwQkM7S0FUQUtBTkEgTEVUVEVSIFpFO0xvOzA7TDszMEJCIDMwOTk7Ozs7Tjs7Ozs7CiszMEJEO0tBVEFLQU5BIExFVFRFUiBTTztMbzswO0w7Ozs7O047Ozs7OworMzBCRTtLQVRBS0FOQSBMRVRURVIgWk87TG87MDtMOzMwQkQgMzA5OTs7OztOOzs7OzsKKzMwQkY7S0FUQUtBTkEgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEMwO0tBVEFLQU5BIExFVFRFUiBEQTtMbzswO0w7MzBCRiAzMDk5Ozs7O047Ozs7OworMzBDMTtLQVRBS0FOQSBMRVRURVIgVEk7TG87MDtMOzs7OztOOzs7OzsKKzMwQzI7S0FUQUtBTkEgTEVUVEVSIERJO0xvOzA7TDszMEMxIDMwOTk7Ozs7Tjs7Ozs7CiszMEMzO0tBVEFLQU5BIExFVFRFUiBTTUFMTCBUVTtMbzswO0w7Ozs7O047Ozs7OworMzBDNDtLQVRBS0FOQSBMRVRURVIgVFU7TG87MDtMOzs7OztOOzs7OzsKKzMwQzU7S0FUQUtBTkEgTEVUVEVSIERVO0xvOzA7TDszMEM0IDMwOTk7Ozs7Tjs7Ozs7CiszMEM2O0tBVEFLQU5BIExFVFRFUiBURTtMbzswO0w7Ozs7O047Ozs7OworMzBDNztLQVRBS0FOQSBMRVRURVIgREU7TG87MDtMOzMwQzYgMzA5OTs7OztOOzs7OzsKKzMwQzg7S0FUQUtBTkEgTEVUVEVSIFRPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEM5O0tBVEFLQU5BIExFVFRFUiBETztMbzswO0w7MzBDOCAzMDk5Ozs7O047Ozs7OworMzBDQTtLQVRBS0FOQSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzMwQ0I7S0FUQUtBTkEgTEVUVEVSIE5JO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMENDO0tBVEFLQU5BIExFVFRFUiBOVTtMbzswO0w7Ozs7O047Ozs7OworMzBDRDtLQVRBS0FOQSBMRVRURVIgTkU7TG87MDtMOzs7OztOOzs7OzsKKzMwQ0U7S0FUQUtBTkEgTEVUVEVSIE5PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMENGO0tBVEFLQU5BIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMzBEMDtLQVRBS0FOQSBMRVRURVIgQkE7TG87MDtMOzMwQ0YgMzA5OTs7OztOOzs7OzsKKzMwRDE7S0FUQUtBTkEgTEVUVEVSIFBBO0xvOzA7TDszMENGIDMwOUE7Ozs7Tjs7Ozs7CiszMEQyO0tBVEFLQU5BIExFVFRFUiBISTtMbzswO0w7Ozs7O047Ozs7OworMzBEMztLQVRBS0FOQSBMRVRURVIgQkk7TG87MDtMOzMwRDIgMzA5OTs7OztOOzs7OzsKKzMwRDQ7S0FUQUtBTkEgTEVUVEVSIFBJO0xvOzA7TDszMEQyIDMwOUE7Ozs7Tjs7Ozs7CiszMEQ1O0tBVEFLQU5BIExFVFRFUiBIVTtMbzswO0w7Ozs7O047Ozs7OworMzBENjtLQVRBS0FOQSBMRVRURVIgQlU7TG87MDtMOzMwRDUgMzA5OTs7OztOOzs7OzsKKzMwRDc7S0FUQUtBTkEgTEVUVEVSIFBVO0xvOzA7TDszMEQ1IDMwOUE7Ozs7Tjs7Ozs7CiszMEQ4O0tBVEFLQU5BIExFVFRFUiBIRTtMbzswO0w7Ozs7O047Ozs7OworMzBEOTtLQVRBS0FOQSBMRVRURVIgQkU7TG87MDtMOzMwRDggMzA5OTs7OztOOzs7OzsKKzMwREE7S0FUQUtBTkEgTEVUVEVSIFBFO0xvOzA7TDszMEQ4IDMwOUE7Ozs7Tjs7Ozs7CiszMERCO0tBVEFLQU5BIExFVFRFUiBITztMbzswO0w7Ozs7O047Ozs7OworMzBEQztLQVRBS0FOQSBMRVRURVIgQk87TG87MDtMOzMwREIgMzA5OTs7OztOOzs7OzsKKzMwREQ7S0FUQUtBTkEgTEVUVEVSIFBPO0xvOzA7TDszMERCIDMwOUE7Ozs7Tjs7Ozs7CiszMERFO0tBVEFLQU5BIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMzBERjtLQVRBS0FOQSBMRVRURVIgTUk7TG87MDtMOzs7OztOOzs7OzsKKzMwRTA7S0FUQUtBTkEgTEVUVEVSIE1VO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEUxO0tBVEFLQU5BIExFVFRFUiBNRTtMbzswO0w7Ozs7O047Ozs7OworMzBFMjtLQVRBS0FOQSBMRVRURVIgTU87TG87MDtMOzs7OztOOzs7OzsKKzMwRTM7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEU0O0tBVEFLQU5BIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMzBFNTtLQVRBS0FOQSBMRVRURVIgU01BTEwgWVU7TG87MDtMOzs7OztOOzs7OzsKKzMwRTY7S0FUQUtBTkEgTEVUVEVSIFlVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEU3O0tBVEFLQU5BIExFVFRFUiBTTUFMTCBZTztMbzswO0w7Ozs7O047Ozs7OworMzBFODtLQVRBS0FOQSBMRVRURVIgWU87TG87MDtMOzs7OztOOzs7OzsKKzMwRTk7S0FUQUtBTkEgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEVBO0tBVEFLQU5BIExFVFRFUiBSSTtMbzswO0w7Ozs7O047Ozs7OworMzBFQjtLQVRBS0FOQSBMRVRURVIgUlU7TG87MDtMOzs7OztOOzs7OzsKKzMwRUM7S0FUQUtBTkEgTEVUVEVSIFJFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEVEO0tBVEFLQU5BIExFVFRFUiBSTztMbzswO0w7Ozs7O047Ozs7OworMzBFRTtLQVRBS0FOQSBMRVRURVIgU01BTEwgV0E7TG87MDtMOzs7OztOOzs7OzsKKzMwRUY7S0FUQUtBTkEgTEVUVEVSIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEYwO0tBVEFLQU5BIExFVFRFUiBXSTtMbzswO0w7Ozs7O047Ozs7OworMzBGMTtLQVRBS0FOQSBMRVRURVIgV0U7TG87MDtMOzs7OztOOzs7OzsKKzMwRjI7S0FUQUtBTkEgTEVUVEVSIFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEYzO0tBVEFLQU5BIExFVFRFUiBOO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEY0O0tBVEFLQU5BIExFVFRFUiBWVTtMbzswO0w7MzBBNiAzMDk5Ozs7O047Ozs7OworMzBGNTtLQVRBS0FOQSBMRVRURVIgU01BTEwgS0E7TG87MDtMOzs7OztOOzs7OzsKKzMwRjY7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIEtFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEY3O0tBVEFLQU5BIExFVFRFUiBWQTtMbzswO0w7MzBFRiAzMDk5Ozs7O047Ozs7OworMzBGODtLQVRBS0FOQSBMRVRURVIgVkk7TG87MDtMOzMwRjAgMzA5OTs7OztOOzs7OzsKKzMwRjk7S0FUQUtBTkEgTEVUVEVSIFZFO0xvOzA7TDszMEYxIDMwOTk7Ozs7Tjs7Ozs7CiszMEZBO0tBVEFLQU5BIExFVFRFUiBWTztMbzswO0w7MzBGMiAzMDk5Ozs7O047Ozs7OworMzBGQjtLQVRBS0FOQSBNSURETEUgRE9UO1BjOzA7TDs7Ozs7Tjs7Ozs7CiszMEZDO0tBVEFLQU5BLUhJUkFHQU5BIFBST0xPTkdFRCBTT1VORCBNQVJLO0xtOzA7TDs7Ozs7Tjs7Ozs7CiszMEZEO0tBVEFLQU5BIElURVJBVElPTiBNQVJLO0xtOzA7TDs7Ozs7Tjs7Ozs7CiszMEZFO0tBVEFLQU5BIFZPSUNFRCBJVEVSQVRJT04gTUFSSztMbTswO0w7MzBGRCAzMDk5Ozs7O047Ozs7OworMzEwNTtCT1BPTU9GTyBMRVRURVIgQjtMbzswO0w7Ozs7O047Ozs7OworMzEwNjtCT1BPTU9GTyBMRVRURVIgUDtMbzswO0w7Ozs7O047Ozs7OworMzEwNztCT1BPTU9GTyBMRVRURVIgTTtMbzswO0w7Ozs7O047Ozs7OworMzEwODtCT1BPTU9GTyBMRVRURVIgRjtMbzswO0w7Ozs7O047Ozs7OworMzEwOTtCT1BPTU9GTyBMRVRURVIgRDtMbzswO0w7Ozs7O047Ozs7OworMzEwQTtCT1BPTU9GTyBMRVRURVIgVDtMbzswO0w7Ozs7O047Ozs7OworMzEwQjtCT1BPTU9GTyBMRVRURVIgTjtMbzswO0w7Ozs7O047Ozs7OworMzEwQztCT1BPTU9GTyBMRVRURVIgTDtMbzswO0w7Ozs7O047Ozs7OworMzEwRDtCT1BPTU9GTyBMRVRURVIgRztMbzswO0w7Ozs7O047Ozs7OworMzEwRTtCT1BPTU9GTyBMRVRURVIgSztMbzswO0w7Ozs7O047Ozs7OworMzEwRjtCT1BPTU9GTyBMRVRURVIgSDtMbzswO0w7Ozs7O047Ozs7OworMzExMDtCT1BPTU9GTyBMRVRURVIgSjtMbzswO0w7Ozs7O047Ozs7OworMzExMTtCT1BPTU9GTyBMRVRURVIgUTtMbzswO0w7Ozs7O047Ozs7OworMzExMjtCT1BPTU9GTyBMRVRURVIgWDtMbzswO0w7Ozs7O047Ozs7OworMzExMztCT1BPTU9GTyBMRVRURVIgWkg7TG87MDtMOzs7OztOOzs7OzsKKzMxMTQ7Qk9QT01PRk8gTEVUVEVSIENIO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTE1O0JPUE9NT0ZPIExFVFRFUiBTSDtMbzswO0w7Ozs7O047Ozs7OworMzExNjtCT1BPTU9GTyBMRVRURVIgUjtMbzswO0w7Ozs7O047Ozs7OworMzExNztCT1BPTU9GTyBMRVRURVIgWjtMbzswO0w7Ozs7O047Ozs7OworMzExODtCT1BPTU9GTyBMRVRURVIgQztMbzswO0w7Ozs7O047Ozs7OworMzExOTtCT1BPTU9GTyBMRVRURVIgUztMbzswO0w7Ozs7O047Ozs7OworMzExQTtCT1BPTU9GTyBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMzExQjtCT1BPTU9GTyBMRVRURVIgTztMbzswO0w7Ozs7O047Ozs7OworMzExQztCT1BPTU9GTyBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMzExRDtCT1BPTU9GTyBMRVRURVIgRUg7TG87MDtMOzs7OztOOzs7OzsKKzMxMUU7Qk9QT01PRk8gTEVUVEVSIEFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTFGO0JPUE9NT0ZPIExFVFRFUiBFSTtMbzswO0w7Ozs7O047Ozs7OworMzEyMDtCT1BPTU9GTyBMRVRURVIgQVU7TG87MDtMOzs7OztOOzs7OzsKKzMxMjE7Qk9QT01PRk8gTEVUVEVSIE9VO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTIyO0JPUE9NT0ZPIExFVFRFUiBBTjtMbzswO0w7Ozs7O047Ozs7OworMzEyMztCT1BPTU9GTyBMRVRURVIgRU47TG87MDtMOzs7OztOOzs7OzsKKzMxMjQ7Qk9QT01PRk8gTEVUVEVSIEFORztMbzswO0w7Ozs7O047Ozs7OworMzEyNTtCT1BPTU9GTyBMRVRURVIgRU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTI2O0JPUE9NT0ZPIExFVFRFUiBFUjtMbzswO0w7Ozs7O047Ozs7OworMzEyNztCT1BPTU9GTyBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMzEyODtCT1BPTU9GTyBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMzEyOTtCT1BPTU9GTyBMRVRURVIgSVU7TG87MDtMOzs7OztOOzs7OzsKKzMxMkE7Qk9QT01PRk8gTEVUVEVSIFY7TG87MDtMOzs7OztOOzs7OzsKKzMxMkI7Qk9QT01PRk8gTEVUVEVSIE5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTJDO0JPUE9NT0ZPIExFVFRFUiBHTjtMbzswO0w7Ozs7O047Ozs7OworMzEzMTtIQU5HVUwgTEVUVEVSIEtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTEwMDs7OztOO0hBTkdVTCBMRVRURVIgR0lZRU9HOzs7OworMzEzMjtIQU5HVUwgTEVUVEVSIFNTQU5HS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMTAxOzs7O047SEFOR1VMIExFVFRFUiBTU0FORyBHSVlFT0c7Ozs7CiszMTMzO0hBTkdVTCBMRVRURVIgS0lZRU9LLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExQUE7Ozs7TjtIQU5HVUwgTEVUVEVSIEdJWUVPRyBTSU9TOzs7OworMzEzNDtIQU5HVUwgTEVUVEVSIE5JRVVOO0xvOzA7TDs8Y29tcGF0PiAxMTAyOzs7O047Ozs7OworMzEzNTtIQU5HVUwgTEVUVEVSIE5JRVVOLUNJRVVDO0xvOzA7TDs8Y29tcGF0PiAxMUFDOzs7O047SEFOR1VMIExFVFRFUiBOSUVVTiBKSUVVSjs7OzsKKzMxMzY7SEFOR1VMIExFVFRFUiBOSUVVTi1ISUVVSDtMbzswO0w7PGNvbXBhdD4gMTFBRDs7OztOO0hBTkdVTCBMRVRURVIgTklFVU4gSElFVUg7Ozs7CiszMTM3O0hBTkdVTCBMRVRURVIgVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMTAzOzs7O047SEFOR1VMIExFVFRFUiBESUdFVUQ7Ozs7CiszMTM4O0hBTkdVTCBMRVRURVIgU1NBTkdUSUtFVVQ7TG87MDtMOzxjb21wYXQ+IDExMDQ7Ozs7TjtIQU5HVUwgTEVUVEVSIFNTQU5HIERJR0VVRDs7OzsKKzMxMzk7SEFOR1VMIExFVFRFUiBSSUVVTDtMbzswO0w7PGNvbXBhdD4gMTEwNTs7OztOO0hBTkdVTCBMRVRURVIgTElFVUw7Ozs7CiszMTNBO0hBTkdVTCBMRVRURVIgUklFVUwtS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMUIwOzs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBHSVlFT0c7Ozs7CiszMTNCO0hBTkdVTCBMRVRURVIgUklFVUwtTUlFVU07TG87MDtMOzxjb21wYXQ+IDExQjE7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIE1JRVVNOzs7OworMzEzQztIQU5HVUwgTEVUVEVSIFJJRVVMLVBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMUIyOzs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBCSUVVQjs7OzsKKzMxM0Q7SEFOR1VMIExFVFRFUiBSSUVVTC1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUIzOzs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBTSU9TOzs7OworMzEzRTtIQU5HVUwgTEVUVEVSIFJJRVVMLVRISUVVVEg7TG87MDtMOzxjb21wYXQ+IDExQjQ7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIFRJRVVUOzs7OworMzEzRjtIQU5HVUwgTEVUVEVSIFJJRVVMLVBISUVVUEg7TG87MDtMOzxjb21wYXQ+IDExQjU7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIFBJRVVQOzs7OworMzE0MDtIQU5HVUwgTEVUVEVSIFJJRVVMLUhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMTFBOzs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBISUVVSDs7OzsKKzMxNDE7SEFOR1VMIExFVFRFUiBNSUVVTTtMbzswO0w7PGNvbXBhdD4gMTEwNjs7OztOOzs7OzsKKzMxNDI7SEFOR1VMIExFVFRFUiBQSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEwNzs7OztOO0hBTkdVTCBMRVRURVIgQklFVUI7Ozs7CiszMTQzO0hBTkdVTCBMRVRURVIgU1NBTkdQSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEwODs7OztOO0hBTkdVTCBMRVRURVIgU1NBTkcgQklFVUI7Ozs7CiszMTQ0O0hBTkdVTCBMRVRURVIgUElFVVAtU0lPUztMbzswO0w7PGNvbXBhdD4gMTEyMTs7OztOO0hBTkdVTCBMRVRURVIgQklFVUIgU0lPUzs7OzsKKzMxNDU7SEFOR1VMIExFVFRFUiBTSU9TO0xvOzA7TDs8Y29tcGF0PiAxMTA5Ozs7O047Ozs7OworMzE0NjtIQU5HVUwgTEVUVEVSIFNTQU5HU0lPUztMbzswO0w7PGNvbXBhdD4gMTEwQTs7OztOO0hBTkdVTCBMRVRURVIgU1NBTkcgU0lPUzs7OzsKKzMxNDc7SEFOR1VMIExFVFRFUiBJRVVORztMbzswO0w7PGNvbXBhdD4gMTEwQjs7OztOOzs7OzsKKzMxNDg7SEFOR1VMIExFVFRFUiBDSUVVQztMbzswO0w7PGNvbXBhdD4gMTEwQzs7OztOO0hBTkdVTCBMRVRURVIgSklFVUo7Ozs7CiszMTQ5O0hBTkdVTCBMRVRURVIgU1NBTkdDSUVVQztMbzswO0w7PGNvbXBhdD4gMTEwRDs7OztOO0hBTkdVTCBMRVRURVIgU1NBTkcgSklFVUo7Ozs7CiszMTRBO0hBTkdVTCBMRVRURVIgQ0hJRVVDSDtMbzswO0w7PGNvbXBhdD4gMTEwRTs7OztOO0hBTkdVTCBMRVRURVIgQ0lFVUM7Ozs7CiszMTRCO0hBTkdVTCBMRVRURVIgS0hJRVVLSDtMbzswO0w7PGNvbXBhdD4gMTEwRjs7OztOO0hBTkdVTCBMRVRURVIgS0lZRU9LOzs7OworMzE0QztIQU5HVUwgTEVUVEVSIFRISUVVVEg7TG87MDtMOzxjb21wYXQ+IDExMTA7Ozs7TjtIQU5HVUwgTEVUVEVSIFRJRVVUOzs7OworMzE0RDtIQU5HVUwgTEVUVEVSIFBISUVVUEg7TG87MDtMOzxjb21wYXQ+IDExMTE7Ozs7TjtIQU5HVUwgTEVUVEVSIFBJRVVQOzs7OworMzE0RTtIQU5HVUwgTEVUVEVSIEhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMTEyOzs7O047Ozs7OworMzE0RjtIQU5HVUwgTEVUVEVSIEE7TG87MDtMOzxjb21wYXQ+IDExNjE7Ozs7Tjs7Ozs7CiszMTUwO0hBTkdVTCBMRVRURVIgQUU7TG87MDtMOzxjb21wYXQ+IDExNjI7Ozs7Tjs7Ozs7CiszMTUxO0hBTkdVTCBMRVRURVIgWUE7TG87MDtMOzxjb21wYXQ+IDExNjM7Ozs7Tjs7Ozs7CiszMTUyO0hBTkdVTCBMRVRURVIgWUFFO0xvOzA7TDs8Y29tcGF0PiAxMTY0Ozs7O047Ozs7OworMzE1MztIQU5HVUwgTEVUVEVSIEVPO0xvOzA7TDs8Y29tcGF0PiAxMTY1Ozs7O047Ozs7OworMzE1NDtIQU5HVUwgTEVUVEVSIEU7TG87MDtMOzxjb21wYXQ+IDExNjY7Ozs7Tjs7Ozs7CiszMTU1O0hBTkdVTCBMRVRURVIgWUVPO0xvOzA7TDs8Y29tcGF0PiAxMTY3Ozs7O047Ozs7OworMzE1NjtIQU5HVUwgTEVUVEVSIFlFO0xvOzA7TDs8Y29tcGF0PiAxMTY4Ozs7O047Ozs7OworMzE1NztIQU5HVUwgTEVUVEVSIE87TG87MDtMOzxjb21wYXQ+IDExNjk7Ozs7Tjs7Ozs7CiszMTU4O0hBTkdVTCBMRVRURVIgV0E7TG87MDtMOzxjb21wYXQ+IDExNkE7Ozs7Tjs7Ozs7CiszMTU5O0hBTkdVTCBMRVRURVIgV0FFO0xvOzA7TDs8Y29tcGF0PiAxMTZCOzs7O047Ozs7OworMzE1QTtIQU5HVUwgTEVUVEVSIE9FO0xvOzA7TDs8Y29tcGF0PiAxMTZDOzs7O047Ozs7OworMzE1QjtIQU5HVUwgTEVUVEVSIFlPO0xvOzA7TDs8Y29tcGF0PiAxMTZEOzs7O047Ozs7OworMzE1QztIQU5HVUwgTEVUVEVSIFU7TG87MDtMOzxjb21wYXQ+IDExNkU7Ozs7Tjs7Ozs7CiszMTVEO0hBTkdVTCBMRVRURVIgV0VPO0xvOzA7TDs8Y29tcGF0PiAxMTZGOzs7O047Ozs7OworMzE1RTtIQU5HVUwgTEVUVEVSIFdFO0xvOzA7TDs8Y29tcGF0PiAxMTcwOzs7O047Ozs7OworMzE1RjtIQU5HVUwgTEVUVEVSIFdJO0xvOzA7TDs8Y29tcGF0PiAxMTcxOzs7O047Ozs7OworMzE2MDtIQU5HVUwgTEVUVEVSIFlVO0xvOzA7TDs8Y29tcGF0PiAxMTcyOzs7O047Ozs7OworMzE2MTtIQU5HVUwgTEVUVEVSIEVVO0xvOzA7TDs8Y29tcGF0PiAxMTczOzs7O047Ozs7OworMzE2MjtIQU5HVUwgTEVUVEVSIFlJO0xvOzA7TDs8Y29tcGF0PiAxMTc0Ozs7O047Ozs7OworMzE2MztIQU5HVUwgTEVUVEVSIEk7TG87MDtMOzxjb21wYXQ+IDExNzU7Ozs7Tjs7Ozs7CiszMTY0O0hBTkdVTCBGSUxMRVI7TG87MDtMOzxjb21wYXQ+IDExNjA7Ozs7TjtIQU5HVUwgQ0FFIE9NOzs7OworMzE2NTtIQU5HVUwgTEVUVEVSIFNTQU5HTklFVU47TG87MDtMOzxjb21wYXQ+IDExMTQ7Ozs7TjtIQU5HVUwgTEVUVEVSIFNTQU5HIE5JRVVOOzs7OworMzE2NjtIQU5HVUwgTEVUVEVSIE5JRVVOLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTExNTs7OztOO0hBTkdVTCBMRVRURVIgTklFVU4gRElHRVVEOzs7OworMzE2NztIQU5HVUwgTEVUVEVSIE5JRVVOLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExQzc7Ozs7TjtIQU5HVUwgTEVUVEVSIE5JRVVOIFNJT1M7Ozs7CiszMTY4O0hBTkdVTCBMRVRURVIgTklFVU4tUEFOU0lPUztMbzswO0w7PGNvbXBhdD4gMTFDODs7OztOO0hBTkdVTCBMRVRURVIgTklFVU4gQkFOIENISSBFVU07Ozs7CiszMTY5O0hBTkdVTCBMRVRURVIgUklFVUwtS0lZRU9LLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExQ0M7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIEdJWUVPRyBTSU9TOzs7OworMzE2QTtIQU5HVUwgTEVUVEVSIFJJRVVMLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTFDRTs7OztOO0hBTkdVTCBMRVRURVIgTElFVUwgRElHRVVEOzs7OworMzE2QjtIQU5HVUwgTEVUVEVSIFJJRVVMLVBJRVVQLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExRDM7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIEJJRVVCIFNJT1M7Ozs7CiszMTZDO0hBTkdVTCBMRVRURVIgUklFVUwtUEFOU0lPUztMbzswO0w7PGNvbXBhdD4gMTFENzs7OztOO0hBTkdVTCBMRVRURVIgTElFVUwgQkFOIENISSBFVU07Ozs7CiszMTZEO0hBTkdVTCBMRVRURVIgUklFVUwtWUVPUklOSElFVUg7TG87MDtMOzxjb21wYXQ+IDExRDk7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIFlFT0xJTiBISUVVSDs7OzsKKzMxNkU7SEFOR1VMIExFVFRFUiBNSUVVTS1QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTExQzs7OztOO0hBTkdVTCBMRVRURVIgTUlFVU0gQklFVUI7Ozs7CiszMTZGO0hBTkdVTCBMRVRURVIgTUlFVU0tU0lPUztMbzswO0w7PGNvbXBhdD4gMTFERDs7OztOO0hBTkdVTCBMRVRURVIgTUlFVU0gU0lPUzs7OzsKKzMxNzA7SEFOR1VMIExFVFRFUiBNSUVVTS1QQU5TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMURGOzs7O047SEFOR1VMIExFVFRFUiBCSUVVQiBCQU4gQ0hJIEVVTTs7OzsKKzMxNzE7SEFOR1VMIExFVFRFUiBLQVBZRU9VTk1JRVVNO0xvOzA7TDs8Y29tcGF0PiAxMTFEOzs7O047SEFOR1VMIExFVFRFUiBNSUVVTSBTVU4gR1lFT05HIEVVTTs7OzsKKzMxNzI7SEFOR1VMIExFVFRFUiBQSUVVUC1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMUU7Ozs7TjtIQU5HVUwgTEVUVEVSIEJJRVVCIEdJWUVPRzs7OzsKKzMxNzM7SEFOR1VMIExFVFRFUiBQSUVVUC1USUtFVVQ7TG87MDtMOzxjb21wYXQ+IDExMjA7Ozs7TjtIQU5HVUwgTEVUVEVSIEJJRVVCIERJR0VVRDs7OzsKKzMxNzQ7SEFOR1VMIExFVFRFUiBQSUVVUC1TSU9TLUtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTEyMjs7OztOO0hBTkdVTCBMRVRURVIgQklFVUIgU0lPUyBHSVlFT0c7Ozs7CiszMTc1O0hBTkdVTCBMRVRURVIgUElFVVAtU0lPUy1USUtFVVQ7TG87MDtMOzxjb21wYXQ+IDExMjM7Ozs7TjtIQU5HVUwgTEVUVEVSIEJJRVVCIFNJT1MgRElHRVVEOzs7OworMzE3NjtIQU5HVUwgTEVUVEVSIFBJRVVQLUNJRVVDO0xvOzA7TDs8Y29tcGF0PiAxMTI3Ozs7O047SEFOR1VMIExFVFRFUiBCSUVVQiBKSUVVSjs7OzsKKzMxNzc7SEFOR1VMIExFVFRFUiBQSUVVUC1USElFVVRIO0xvOzA7TDs8Y29tcGF0PiAxMTI5Ozs7O047SEFOR1VMIExFVFRFUiBCSUVVQiBUSUVVVDs7OzsKKzMxNzg7SEFOR1VMIExFVFRFUiBLQVBZRU9VTlBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMTJCOzs7O047SEFOR1VMIExFVFRFUiBCSUVVQiBTVU4gR1lFT05HIEVVTTs7OzsKKzMxNzk7SEFOR1VMIExFVFRFUiBLQVBZRU9VTlNTQU5HUElFVVA7TG87MDtMOzxjb21wYXQ+IDExMkM7Ozs7TjtIQU5HVUwgTEVUVEVSIFNTQU5HIEJJRVVCIFNVTiBHWUVPTkcgRVVNOzs7OworMzE3QTtIQU5HVUwgTEVUVEVSIFNJT1MtS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMTJEOzs7O047SEFOR1VMIExFVFRFUiBTSU9TIEdJWUVPRzs7OzsKKzMxN0I7SEFOR1VMIExFVFRFUiBTSU9TLU5JRVVOO0xvOzA7TDs8Y29tcGF0PiAxMTJFOzs7O047SEFOR1VMIExFVFRFUiBTSU9TIE5JRVVOOzs7OworMzE3QztIQU5HVUwgTEVUVEVSIFNJT1MtVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMTJGOzs7O047SEFOR1VMIExFVFRFUiBTSU9TIERJR0VVRDs7OzsKKzMxN0Q7SEFOR1VMIExFVFRFUiBTSU9TLVBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMTMyOzs7O047SEFOR1VMIExFVFRFUiBTSU9TIEJJRVVCOzs7OworMzE3RTtIQU5HVUwgTEVUVEVSIFNJT1MtQ0lFVUM7TG87MDtMOzxjb21wYXQ+IDExMzY7Ozs7TjtIQU5HVUwgTEVUVEVSIFNJT1MgSklFVUo7Ozs7CiszMTdGO0hBTkdVTCBMRVRURVIgUEFOU0lPUztMbzswO0w7PGNvbXBhdD4gMTE0MDs7OztOO0hBTkdVTCBMRVRURVIgQkFOIENISSBFVU07Ozs7CiszMTgwO0hBTkdVTCBMRVRURVIgU1NBTkdJRVVORztMbzswO0w7PGNvbXBhdD4gMTE0Nzs7OztOO0hBTkdVTCBMRVRURVIgU1NBTkcgSUVVTkc7Ozs7CiszMTgxO0hBTkdVTCBMRVRURVIgWUVTSUVVTkc7TG87MDtMOzxjb21wYXQ+IDExNEM7Ozs7TjtIQU5HVUwgTEVUVEVSIE5HSUVVTkc7Ozs7CiszMTgyO0hBTkdVTCBMRVRURVIgWUVTSUVVTkctU0lPUztMbzswO0w7PGNvbXBhdD4gMTFGMTs7OztOO0hBTkdVTCBMRVRURVIgTkdJRVVORyBTSU9TOzs7OworMzE4MztIQU5HVUwgTEVUVEVSIFlFU0lFVU5HLVBBTlNJT1M7TG87MDtMOzxjb21wYXQ+IDExRjI7Ozs7TjtIQU5HVUwgTEVUVEVSIE5HSUVVTkcgQkFOIENISSBFVU07Ozs7CiszMTg0O0hBTkdVTCBMRVRURVIgS0FQWUVPVU5QSElFVVBIO0xvOzA7TDs8Y29tcGF0PiAxMTU3Ozs7O047SEFOR1VMIExFVFRFUiBQSUVVUCBTVU4gR1lFT05HIEVVTTs7OzsKKzMxODU7SEFOR1VMIExFVFRFUiBTU0FOR0hJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMTU4Ozs7O047SEFOR1VMIExFVFRFUiBTU0FORyBISUVVSDs7OzsKKzMxODY7SEFOR1VMIExFVFRFUiBZRU9SSU5ISUVVSDtMbzswO0w7PGNvbXBhdD4gMTE1OTs7OztOO0hBTkdVTCBMRVRURVIgWUVPTElOIEhJRVVIOzs7OworMzE4NztIQU5HVUwgTEVUVEVSIFlPLVlBO0xvOzA7TDs8Y29tcGF0PiAxMTg0Ozs7O047SEFOR1VMIExFVFRFUiBZT1lBOzs7OworMzE4ODtIQU5HVUwgTEVUVEVSIFlPLVlBRTtMbzswO0w7PGNvbXBhdD4gMTE4NTs7OztOO0hBTkdVTCBMRVRURVIgWU9ZQUU7Ozs7CiszMTg5O0hBTkdVTCBMRVRURVIgWU8tSTtMbzswO0w7PGNvbXBhdD4gMTE4ODs7OztOO0hBTkdVTCBMRVRURVIgWU9JOzs7OworMzE4QTtIQU5HVUwgTEVUVEVSIFlVLVlFTztMbzswO0w7PGNvbXBhdD4gMTE5MTs7OztOO0hBTkdVTCBMRVRURVIgWVVZRU87Ozs7CiszMThCO0hBTkdVTCBMRVRURVIgWVUtWUU7TG87MDtMOzxjb21wYXQ+IDExOTI7Ozs7TjtIQU5HVUwgTEVUVEVSIFlVWUU7Ozs7CiszMThDO0hBTkdVTCBMRVRURVIgWVUtSTtMbzswO0w7PGNvbXBhdD4gMTE5NDs7OztOO0hBTkdVTCBMRVRURVIgWVVJOzs7OworMzE4RDtIQU5HVUwgTEVUVEVSIEFSQUVBO0xvOzA7TDs8Y29tcGF0PiAxMTlFOzs7O047SEFOR1VMIExFVFRFUiBBTEFFIEE7Ozs7CiszMThFO0hBTkdVTCBMRVRURVIgQVJBRUFFO0xvOzA7TDs8Y29tcGF0PiAxMUExOzs7O047SEFOR1VMIExFVFRFUiBBTEFFIEFFOzs7OworMzE5MDtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIExJTktJTkcgTUFSSztTbzswO0w7Ozs7O047S0FOQlVOIFRBVEVURU47S2FuYnVuIFRhdGV0ZW47OzsKKzMxOTE7SURFT0dSQVBISUMgQU5OT1RBVElPTiBSRVZFUlNFIE1BUks7U287MDtMOzs7OztOO0tBRVJJVEVOIFJFO0thZXJpdGVuOzs7CiszMTkyO0lERU9HUkFQSElDIEFOTk9UQVRJT04gT05FIE1BUks7Tm87MDtMOzxzdXBlcj4gNEUwMDs7OztOO0tBRVJJVEVOIElUSTtLYWVyaXRlbjs7OworMzE5MztJREVPR1JBUEhJQyBBTk5PVEFUSU9OIFRXTyBNQVJLO05vOzA7TDs8c3VwZXI+IDRFOEM7Ozs7TjtLQUVSSVRFTiBOSTtLYWVyaXRlbjs7OworMzE5NDtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIFRIUkVFIE1BUks7Tm87MDtMOzxzdXBlcj4gNEUwOTs7OztOO0tBRVJJVEVOIFNBTjtLYWVyaXRlbjs7OworMzE5NTtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIEZPVVIgTUFSSztObzswO0w7PHN1cGVyPiA1NkRCOzs7O047S0FFUklURU4gU0k7S2Flcml0ZW47OzsKKzMxOTY7SURFT0dSQVBISUMgQU5OT1RBVElPTiBUT1AgTUFSSztTbzswO0w7PHN1cGVyPiA0RTBBOzs7O047S0FFUklURU4gWllPVTtLYWVyaXRlbjs7OworMzE5NztJREVPR1JBUEhJQyBBTk5PVEFUSU9OIE1JRERMRSBNQVJLO1NvOzA7TDs8c3VwZXI+IDRFMkQ7Ozs7TjtLQUVSSVRFTiBUWVVVO0thZXJpdGVuOzs7CiszMTk4O0lERU9HUkFQSElDIEFOTk9UQVRJT04gQk9UVE9NIE1BUks7U287MDtMOzxzdXBlcj4gNEUwQjs7OztOO0tBRVJJVEVOIEdFO0thZXJpdGVuOzs7CiszMTk5O0lERU9HUkFQSElDIEFOTk9UQVRJT04gRklSU1QgTUFSSztTbzswO0w7PHN1cGVyPiA3NTMyOzs7O047S0FFUklURU4gS09VO0thZXJpdGVuOzs7CiszMTlBO0lERU9HUkFQSElDIEFOTk9UQVRJT04gU0VDT05EIE1BUks7U287MDtMOzxzdXBlcj4gNEU1OTs7OztOO0tBRVJJVEVOIE9UVTtLYWVyaXRlbjs7OworMzE5QjtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIFRISVJEIE1BUks7U287MDtMOzxzdXBlcj4gNEUxOTs7OztOO0tBRVJJVEVOIEhFSTtLYWVyaXRlbjs7OworMzE5QztJREVPR1JBUEhJQyBBTk5PVEFUSU9OIEZPVVJUSCBNQVJLO1NvOzA7TDs8c3VwZXI+IDRFMDE7Ozs7TjtLQUVSSVRFTiBURUk7S2Flcml0ZW47OzsKKzMxOUQ7SURFT0dSQVBISUMgQU5OT1RBVElPTiBIRUFWRU4gTUFSSztTbzswO0w7PHN1cGVyPiA1OTI5Ozs7O047S0FFUklURU4gVEVOO0thZXJpdGVuOzs7CiszMTlFO0lERU9HUkFQSElDIEFOTk9UQVRJT04gRUFSVEggTUFSSztTbzswO0w7PHN1cGVyPiA1NzMwOzs7O047S0FFUklURU4gVEk7S2Flcml0ZW47OzsKKzMxOUY7SURFT0dSQVBISUMgQU5OT1RBVElPTiBNQU4gTUFSSztTbzswO0w7PHN1cGVyPiA0RUJBOzs7O047S0FFUklURU4gWklOO0thZXJpdGVuOzs7CiszMjAwO1BBUkVOVEhFU0laRUQgSEFOR1VMIEtJWUVPSztTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTAwIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBHSVlFT0c7Ozs7CiszMjAxO1BBUkVOVEhFU0laRUQgSEFOR1VMIE5JRVVOO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDIgMDAyOTs7OztOOzs7OzsKKzMyMDI7UEFSRU5USEVTSVpFRCBIQU5HVUwgVElLRVVUO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDMgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIERJR0VVRDs7OzsKKzMyMDM7UEFSRU5USEVTSVpFRCBIQU5HVUwgUklFVUw7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwNSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgTElFVUw7Ozs7CiszMjA0O1BBUkVOVEhFU0laRUQgSEFOR1VMIE1JRVVNO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDYgMDAyOTs7OztOOzs7OzsKKzMyMDU7UEFSRU5USEVTSVpFRCBIQU5HVUwgUElFVVA7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwNyAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgQklFVUI7Ozs7CiszMjA2O1BBUkVOVEhFU0laRUQgSEFOR1VMIFNJT1M7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwOSAwMDI5Ozs7O047Ozs7OworMzIwNztQQVJFTlRIRVNJWkVEIEhBTkdVTCBJRVVORztTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBCIDAwMjk7Ozs7Tjs7Ozs7CiszMjA4O1BBUkVOVEhFU0laRUQgSEFOR1VMIENJRVVDO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEMgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEpJRVVKOzs7OworMzIwOTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSElFVUNIO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEUgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIENJRVVDOzs7OworMzIwQTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBLSElFVUtIO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEYgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEtJWUVPSzs7OzsKKzMyMEI7UEFSRU5USEVTSVpFRCBIQU5HVUwgVEhJRVVUSDtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTEwIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBUSUVVVDs7OzsKKzMyMEM7UEFSRU5USEVTSVpFRCBIQU5HVUwgUEhJRVVQSDtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTExIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBQSUVVUDs7OzsKKzMyMEQ7UEFSRU5USEVTSVpFRCBIQU5HVUwgSElFVUg7U287MDtMOzxjb21wYXQ+IDAwMjggMTExMiAwMDI5Ozs7O047Ozs7OworMzIwRTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBLSVlFT0sgQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTAwIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEdBOzs7OworMzIwRjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBOSUVVTiBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDIgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgTkE7Ozs7CiszMjEwO1BBUkVOVEhFU0laRUQgSEFOR1VMIFRJS0VVVCBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDMgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgREE7Ozs7CiszMjExO1BBUkVOVEhFU0laRUQgSEFOR1VMIFJJRVVMIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwNSAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBMQTs7OzsKKzMyMTI7UEFSRU5USEVTSVpFRCBIQU5HVUwgTUlFVU0gQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTA2IDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIE1BOzs7OworMzIxMztQQVJFTlRIRVNJWkVEIEhBTkdVTCBQSUVVUCBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDcgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgQkE7Ozs7CiszMjE0O1BBUkVOVEhFU0laRUQgSEFOR1VMIFNJT1MgQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTA5IDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIFNBOzs7OworMzIxNTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBJRVVORyBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEIgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgQTs7OzsKKzMyMTY7UEFSRU5USEVTSVpFRCBIQU5HVUwgQ0lFVUMgQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBDIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEpBOzs7OworMzIxNztQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSElFVUNIIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwRSAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBDQTs7OzsKKzMyMTg7UEFSRU5USEVTSVpFRCBIQU5HVUwgS0hJRVVLSCBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEYgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgS0E7Ozs7CiszMjE5O1BBUkVOVEhFU0laRUQgSEFOR1VMIFRISUVVVEggQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTEwIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIFRBOzs7OworMzIxQTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBQSElFVVBIIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTExMSAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBQQTs7OzsKKzMyMUI7UEFSRU5USEVTSVpFRCBIQU5HVUwgSElFVUggQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTEyIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEhBOzs7OworMzIxQztQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSUVVQyBVO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEMgMTE2RSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgSlU7Ozs7CiszMjIwO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIE9ORTtObzswO0w7PGNvbXBhdD4gMDAyOCA0RTAwIDAwMjk7Ozs7Tjs7Ozs7CiszMjIxO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFRXTztObzswO0w7PGNvbXBhdD4gMDAyOCA0RThDIDAwMjk7Ozs7Tjs7Ozs7CiszMjIyO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFRIUkVFO05vOzA7TDs8Y29tcGF0PiAwMDI4IDRFMDkgMDAyOTs7OztOOzs7OzsKKzMyMjM7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggRk9VUjtObzswO0w7PGNvbXBhdD4gMDAyOCA1NkRCIDAwMjk7Ozs7Tjs7Ozs7CiszMjI0O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIEZJVkU7Tm87MDtMOzxjb21wYXQ+IDAwMjggNEU5NCAwMDI5Ozs7O047Ozs7OworMzIyNTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTSVg7Tm87MDtMOzxjb21wYXQ+IDAwMjggNTE2RCAwMDI5Ozs7O047Ozs7OworMzIyNjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTRVZFTjtObzswO0w7PGNvbXBhdD4gMDAyOCA0RTAzIDAwMjk7Ozs7Tjs7Ozs7CiszMjI3O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIEVJR0hUO05vOzA7TDs8Y29tcGF0PiAwMDI4IDUxNkIgMDAyOTs7OztOOzs7OzsKKzMyMjg7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggTklORTtObzswO0w7PGNvbXBhdD4gMDAyOCA0RTVEIDAwMjk7Ozs7Tjs7Ozs7CiszMjI5O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFRFTjtObzswO0w7PGNvbXBhdD4gMDAyOCA1MzQxIDAwMjk7Ozs7Tjs7Ozs7CiszMjJBO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIE1PT047U287MDtMOzxjb21wYXQ+IDAwMjggNjcwOCAwMDI5Ozs7O047Ozs7OworMzIyQjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBGSVJFO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDcwNkIgMDAyOTs7OztOOzs7OzsKKzMyMkM7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggV0FURVI7U287MDtMOzxjb21wYXQ+IDAwMjggNkMzNCAwMDI5Ozs7O047Ozs7OworMzIyRDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBXT09EO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDY3MjggMDAyOTs7OztOOzs7OzsKKzMyMkU7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggTUVUQUw7U287MDtMOzxjb21wYXQ+IDAwMjggOTFEMSAwMDI5Ozs7O047Ozs7OworMzIyRjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBFQVJUSDtTbzswO0w7PGNvbXBhdD4gMDAyOCA1NzFGIDAwMjk7Ozs7Tjs7Ozs7CiszMjMwO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNVTjtTbzswO0w7PGNvbXBhdD4gMDAyOCA2NUU1IDAwMjk7Ozs7Tjs7Ozs7CiszMjMxO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNUT0NLO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDY4MkEgMDAyOTs7OztOOzs7OzsKKzMyMzI7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggSEFWRTtTbzswO0w7PGNvbXBhdD4gMDAyOCA2NzA5IDAwMjk7Ozs7Tjs7Ozs7CiszMjMzO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNPQ0lFVFk7U287MDtMOzxjb21wYXQ+IDAwMjggNzkzRSAwMDI5Ozs7O047Ozs7OworMzIzNDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBOQU1FO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDU0MEQgMDAyOTs7OztOOzs7OzsKKzMyMzU7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggU1BFQ0lBTDtTbzswO0w7PGNvbXBhdD4gMDAyOCA3Mjc5IDAwMjk7Ozs7Tjs7Ozs7CiszMjM2O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIEZJTkFOQ0lBTDtTbzswO0w7PGNvbXBhdD4gMDAyOCA4Q0ExIDAwMjk7Ozs7Tjs7Ozs7CiszMjM3O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIENPTkdSQVRVTEFUSU9OO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDc5NUQgMDAyOTs7OztOOzs7OzsKKzMyMzg7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggTEFCT1I7U287MDtMOzxjb21wYXQ+IDAwMjggNTJCNCAwMDI5Ozs7O047Ozs7OworMzIzOTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBSRVBSRVNFTlQ7U287MDtMOzxjb21wYXQ+IDAwMjggNEVFMyAwMDI5Ozs7O047Ozs7OworMzIzQTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBDQUxMO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDU0N0MgMDAyOTs7OztOOzs7OzsKKzMyM0I7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggU1RVRFk7U287MDtMOzxjb21wYXQ+IDAwMjggNUI2NiAwMDI5Ozs7O047Ozs7OworMzIzQztQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTVVBFUlZJU0U7U287MDtMOzxjb21wYXQ+IDAwMjggNzZFMyAwMDI5Ozs7O047Ozs7OworMzIzRDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBFTlRFUlBSSVNFO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDRGMDEgMDAyOTs7OztOOzs7OzsKKzMyM0U7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggUkVTT1VSQ0U7U287MDtMOzxjb21wYXQ+IDAwMjggOENDNyAwMDI5Ozs7O047Ozs7OworMzIzRjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBBTExJQU5DRTtTbzswO0w7PGNvbXBhdD4gMDAyOCA1MzU0IDAwMjk7Ozs7Tjs7Ozs7CiszMjQwO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIEZFU1RJVkFMO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDc5NkQgMDAyOTs7OztOOzs7OzsKKzMyNDE7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggUkVTVDtTbzswO0w7PGNvbXBhdD4gMDAyOCA0RjExIDAwMjk7Ozs7Tjs7Ozs7CiszMjQyO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNFTEY7U287MDtMOzxjb21wYXQ+IDAwMjggODFFQSAwMDI5Ozs7O047Ozs7OworMzI0MztQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBSRUFDSDtTbzswO0w7PGNvbXBhdD4gMDAyOCA4MUYzIDAwMjk7Ozs7Tjs7Ozs7CiszMjYwO0NJUkNMRUQgSEFOR1VMIEtJWUVPSztTbzswO0w7PGNpcmNsZT4gMTEwMDs7OztOO0NJUkNMRUQgSEFOR1VMIEdJWUVPRzs7OzsKKzMyNjE7Q0lSQ0xFRCBIQU5HVUwgTklFVU47U287MDtMOzxjaXJjbGU+IDExMDI7Ozs7Tjs7Ozs7CiszMjYyO0NJUkNMRUQgSEFOR1VMIFRJS0VVVDtTbzswO0w7PGNpcmNsZT4gMTEwMzs7OztOO0NJUkNMRUQgSEFOR1VMIERJR0VVRDs7OzsKKzMyNjM7Q0lSQ0xFRCBIQU5HVUwgUklFVUw7U287MDtMOzxjaXJjbGU+IDExMDU7Ozs7TjtDSVJDTEVEIEhBTkdVTCBMSUVVTDs7OzsKKzMyNjQ7Q0lSQ0xFRCBIQU5HVUwgTUlFVU07U287MDtMOzxjaXJjbGU+IDExMDY7Ozs7Tjs7Ozs7CiszMjY1O0NJUkNMRUQgSEFOR1VMIFBJRVVQO1NvOzA7TDs8Y2lyY2xlPiAxMTA3Ozs7O047Q0lSQ0xFRCBIQU5HVUwgQklFVUI7Ozs7CiszMjY2O0NJUkNMRUQgSEFOR1VMIFNJT1M7U287MDtMOzxjaXJjbGU+IDExMDk7Ozs7Tjs7Ozs7CiszMjY3O0NJUkNMRUQgSEFOR1VMIElFVU5HO1NvOzA7TDs8Y2lyY2xlPiAxMTBCOzs7O047Ozs7OworMzI2ODtDSVJDTEVEIEhBTkdVTCBDSUVVQztTbzswO0w7PGNpcmNsZT4gMTEwQzs7OztOO0NJUkNMRUQgSEFOR1VMIEpJRVVKOzs7OworMzI2OTtDSVJDTEVEIEhBTkdVTCBDSElFVUNIO1NvOzA7TDs8Y2lyY2xlPiAxMTBFOzs7O047Q0lSQ0xFRCBIQU5HVUwgQ0lFVUM7Ozs7CiszMjZBO0NJUkNMRUQgSEFOR1VMIEtISUVVS0g7U287MDtMOzxjaXJjbGU+IDExMEY7Ozs7TjtDSVJDTEVEIEhBTkdVTCBLSVlFT0s7Ozs7CiszMjZCO0NJUkNMRUQgSEFOR1VMIFRISUVVVEg7U287MDtMOzxjaXJjbGU+IDExMTA7Ozs7TjtDSVJDTEVEIEhBTkdVTCBUSUVVVDs7OzsKKzMyNkM7Q0lSQ0xFRCBIQU5HVUwgUEhJRVVQSDtTbzswO0w7PGNpcmNsZT4gMTExMTs7OztOO0NJUkNMRUQgSEFOR1VMIFBJRVVQOzs7OworMzI2RDtDSVJDTEVEIEhBTkdVTCBISUVVSDtTbzswO0w7PGNpcmNsZT4gMTExMjs7OztOOzs7OzsKKzMyNkU7Q0lSQ0xFRCBIQU5HVUwgS0lZRU9LIEE7U287MDtMOzxjaXJjbGU+IDExMDAgMTE2MTs7OztOO0NJUkNMRUQgSEFOR1VMIEdBOzs7OworMzI2RjtDSVJDTEVEIEhBTkdVTCBOSUVVTiBBO1NvOzA7TDs8Y2lyY2xlPiAxMTAyIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBOQTs7OzsKKzMyNzA7Q0lSQ0xFRCBIQU5HVUwgVElLRVVUIEE7U287MDtMOzxjaXJjbGU+IDExMDMgMTE2MTs7OztOO0NJUkNMRUQgSEFOR1VMIERBOzs7OworMzI3MTtDSVJDTEVEIEhBTkdVTCBSSUVVTCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTA1IDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBMQTs7OzsKKzMyNzI7Q0lSQ0xFRCBIQU5HVUwgTUlFVU0gQTtTbzswO0w7PGNpcmNsZT4gMTEwNiAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgTUE7Ozs7CiszMjczO0NJUkNMRUQgSEFOR1VMIFBJRVVQIEE7U287MDtMOzxjaXJjbGU+IDExMDcgMTE2MTs7OztOO0NJUkNMRUQgSEFOR1VMIEJBOzs7OworMzI3NDtDSVJDTEVEIEhBTkdVTCBTSU9TIEE7U287MDtMOzxjaXJjbGU+IDExMDkgMTE2MTs7OztOO0NJUkNMRUQgSEFOR1VMIFNBOzs7OworMzI3NTtDSVJDTEVEIEhBTkdVTCBJRVVORyBBO1NvOzA7TDs8Y2lyY2xlPiAxMTBCIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBBOzs7OworMzI3NjtDSVJDTEVEIEhBTkdVTCBDSUVVQyBBO1NvOzA7TDs8Y2lyY2xlPiAxMTBDIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBKQTs7OzsKKzMyNzc7Q0lSQ0xFRCBIQU5HVUwgQ0hJRVVDSCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTBFIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBDQTs7OzsKKzMyNzg7Q0lSQ0xFRCBIQU5HVUwgS0hJRVVLSCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTBGIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBLQTs7OzsKKzMyNzk7Q0lSQ0xFRCBIQU5HVUwgVEhJRVVUSCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTEwIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBUQTs7OzsKKzMyN0E7Q0lSQ0xFRCBIQU5HVUwgUEhJRVVQSCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTExIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBQQTs7OzsKKzMyN0I7Q0lSQ0xFRCBIQU5HVUwgSElFVUggQTtTbzswO0w7PGNpcmNsZT4gMTExMiAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgSEE7Ozs7CiszMjdGO0tPUkVBTiBTVEFOREFSRCBTWU1CT0w7U287MDtMOzs7OztOOzs7OzsKKzMyODA7Q0lSQ0xFRCBJREVPR1JBUEggT05FO05vOzA7TDs8Y2lyY2xlPiA0RTAwOzs7MTtOOzs7OzsKKzMyODE7Q0lSQ0xFRCBJREVPR1JBUEggVFdPO05vOzA7TDs8Y2lyY2xlPiA0RThDOzs7MjtOOzs7OzsKKzMyODI7Q0lSQ0xFRCBJREVPR1JBUEggVEhSRUU7Tm87MDtMOzxjaXJjbGU+IDRFMDk7OzszO047Ozs7OworMzI4MztDSVJDTEVEIElERU9HUkFQSCBGT1VSO05vOzA7TDs8Y2lyY2xlPiA1NkRCOzs7NDtOOzs7OzsKKzMyODQ7Q0lSQ0xFRCBJREVPR1JBUEggRklWRTtObzswO0w7PGNpcmNsZT4gNEU5NDs7OzU7Tjs7Ozs7CiszMjg1O0NJUkNMRUQgSURFT0dSQVBIIFNJWDtObzswO0w7PGNpcmNsZT4gNTE2RDs7OzY7Tjs7Ozs7CiszMjg2O0NJUkNMRUQgSURFT0dSQVBIIFNFVkVOO05vOzA7TDs8Y2lyY2xlPiA0RTAzOzs7NztOOzs7OzsKKzMyODc7Q0lSQ0xFRCBJREVPR1JBUEggRUlHSFQ7Tm87MDtMOzxjaXJjbGU+IDUxNkI7Ozs4O047Ozs7OworMzI4ODtDSVJDTEVEIElERU9HUkFQSCBOSU5FO05vOzA7TDs8Y2lyY2xlPiA0RTVEOzs7OTtOOzs7OzsKKzMyODk7Q0lSQ0xFRCBJREVPR1JBUEggVEVOO05vOzA7TDs8Y2lyY2xlPiA1MzQxOzs7MTA7Tjs7Ozs7CiszMjhBO0NJUkNMRUQgSURFT0dSQVBIIE1PT047U287MDtMOzxjaXJjbGU+IDY3MDg7Ozs7Tjs7Ozs7CiszMjhCO0NJUkNMRUQgSURFT0dSQVBIIEZJUkU7U287MDtMOzxjaXJjbGU+IDcwNkI7Ozs7Tjs7Ozs7CiszMjhDO0NJUkNMRUQgSURFT0dSQVBIIFdBVEVSO1NvOzA7TDs8Y2lyY2xlPiA2QzM0Ozs7O047Ozs7OworMzI4RDtDSVJDTEVEIElERU9HUkFQSCBXT09EO1NvOzA7TDs8Y2lyY2xlPiA2NzI4Ozs7O047Ozs7OworMzI4RTtDSVJDTEVEIElERU9HUkFQSCBNRVRBTDtTbzswO0w7PGNpcmNsZT4gOTFEMTs7OztOOzs7OzsKKzMyOEY7Q0lSQ0xFRCBJREVPR1JBUEggRUFSVEg7U287MDtMOzxjaXJjbGU+IDU3MUY7Ozs7Tjs7Ozs7CiszMjkwO0NJUkNMRUQgSURFT0dSQVBIIFNVTjtTbzswO0w7PGNpcmNsZT4gNjVFNTs7OztOOzs7OzsKKzMyOTE7Q0lSQ0xFRCBJREVPR1JBUEggU1RPQ0s7U287MDtMOzxjaXJjbGU+IDY4MkE7Ozs7Tjs7Ozs7CiszMjkyO0NJUkNMRUQgSURFT0dSQVBIIEhBVkU7U287MDtMOzxjaXJjbGU+IDY3MDk7Ozs7Tjs7Ozs7CiszMjkzO0NJUkNMRUQgSURFT0dSQVBIIFNPQ0lFVFk7U287MDtMOzxjaXJjbGU+IDc5M0U7Ozs7Tjs7Ozs7CiszMjk0O0NJUkNMRUQgSURFT0dSQVBIIE5BTUU7U287MDtMOzxjaXJjbGU+IDU0MEQ7Ozs7Tjs7Ozs7CiszMjk1O0NJUkNMRUQgSURFT0dSQVBIIFNQRUNJQUw7U287MDtMOzxjaXJjbGU+IDcyNzk7Ozs7Tjs7Ozs7CiszMjk2O0NJUkNMRUQgSURFT0dSQVBIIEZJTkFOQ0lBTDtTbzswO0w7PGNpcmNsZT4gOENBMTs7OztOOzs7OzsKKzMyOTc7Q0lSQ0xFRCBJREVPR1JBUEggQ09OR1JBVFVMQVRJT047U287MDtMOzxjaXJjbGU+IDc5NUQ7Ozs7Tjs7Ozs7CiszMjk4O0NJUkNMRUQgSURFT0dSQVBIIExBQk9SO1NvOzA7TDs8Y2lyY2xlPiA1MkI0Ozs7O047Ozs7OworMzI5OTtDSVJDTEVEIElERU9HUkFQSCBTRUNSRVQ7U287MDtMOzxjaXJjbGU+IDc5RDg7Ozs7Tjs7Ozs7CiszMjlBO0NJUkNMRUQgSURFT0dSQVBIIE1BTEU7U287MDtMOzxjaXJjbGU+IDc1Mzc7Ozs7Tjs7Ozs7CiszMjlCO0NJUkNMRUQgSURFT0dSQVBIIEZFTUFMRTtTbzswO0w7PGNpcmNsZT4gNTk3Mzs7OztOOzs7OzsKKzMyOUM7Q0lSQ0xFRCBJREVPR1JBUEggU1VJVEFCTEU7U287MDtMOzxjaXJjbGU+IDkwNjk7Ozs7Tjs7Ozs7CiszMjlEO0NJUkNMRUQgSURFT0dSQVBIIEVYQ0VMTEVOVDtTbzswO0w7PGNpcmNsZT4gNTEyQTs7OztOOzs7OzsKKzMyOUU7Q0lSQ0xFRCBJREVPR1JBUEggUFJJTlQ7U287MDtMOzxjaXJjbGU+IDUzNzA7Ozs7Tjs7Ozs7CiszMjlGO0NJUkNMRUQgSURFT0dSQVBIIEFUVEVOVElPTjtTbzswO0w7PGNpcmNsZT4gNkNFODs7OztOOzs7OzsKKzMyQTA7Q0lSQ0xFRCBJREVPR1JBUEggSVRFTTtTbzswO0w7PGNpcmNsZT4gOTgwNTs7OztOOzs7OzsKKzMyQTE7Q0lSQ0xFRCBJREVPR1JBUEggUkVTVDtTbzswO0w7PGNpcmNsZT4gNEYxMTs7OztOOzs7OzsKKzMyQTI7Q0lSQ0xFRCBJREVPR1JBUEggQ09QWTtTbzswO0w7PGNpcmNsZT4gNTE5OTs7OztOOzs7OzsKKzMyQTM7Q0lSQ0xFRCBJREVPR1JBUEggQ09SUkVDVDtTbzswO0w7PGNpcmNsZT4gNkI2Mzs7OztOOzs7OzsKKzMyQTQ7Q0lSQ0xFRCBJREVPR1JBUEggSElHSDtTbzswO0w7PGNpcmNsZT4gNEUwQTs7OztOOzs7OzsKKzMyQTU7Q0lSQ0xFRCBJREVPR1JBUEggQ0VOVFJFO1NvOzA7TDs8Y2lyY2xlPiA0RTJEOzs7O047Q0lSQ0xFRCBJREVPR1JBUEggQ0VOVEVSOzs7OworMzJBNjtDSVJDTEVEIElERU9HUkFQSCBMT1c7U287MDtMOzxjaXJjbGU+IDRFMEI7Ozs7Tjs7Ozs7CiszMkE3O0NJUkNMRUQgSURFT0dSQVBIIExFRlQ7U287MDtMOzxjaXJjbGU+IDVERTY7Ozs7Tjs7Ozs7CiszMkE4O0NJUkNMRUQgSURFT0dSQVBIIFJJR0hUO1NvOzA7TDs8Y2lyY2xlPiA1M0YzOzs7O047Ozs7OworMzJBOTtDSVJDTEVEIElERU9HUkFQSCBNRURJQ0lORTtTbzswO0w7PGNpcmNsZT4gNTMzQjs7OztOOzs7OzsKKzMyQUE7Q0lSQ0xFRCBJREVPR1JBUEggUkVMSUdJT047U287MDtMOzxjaXJjbGU+IDVCOTc7Ozs7Tjs7Ozs7CiszMkFCO0NJUkNMRUQgSURFT0dSQVBIIFNUVURZO1NvOzA7TDs8Y2lyY2xlPiA1QjY2Ozs7O047Ozs7OworMzJBQztDSVJDTEVEIElERU9HUkFQSCBTVVBFUlZJU0U7U287MDtMOzxjaXJjbGU+IDc2RTM7Ozs7Tjs7Ozs7CiszMkFEO0NJUkNMRUQgSURFT0dSQVBIIEVOVEVSUFJJU0U7U287MDtMOzxjaXJjbGU+IDRGMDE7Ozs7Tjs7Ozs7CiszMkFFO0NJUkNMRUQgSURFT0dSQVBIIFJFU09VUkNFO1NvOzA7TDs8Y2lyY2xlPiA4Q0M3Ozs7O047Ozs7OworMzJBRjtDSVJDTEVEIElERU9HUkFQSCBBTExJQU5DRTtTbzswO0w7PGNpcmNsZT4gNTM1NDs7OztOOzs7OzsKKzMyQjA7Q0lSQ0xFRCBJREVPR1JBUEggTklHSFQ7U287MDtMOzxjaXJjbGU+IDU5MUM7Ozs7Tjs7Ozs7CiszMkMwO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEpBTlVBUlk7U287MDtMOzxjb21wYXQ+IDAwMzEgNjcwODs7OztOOzs7OzsKKzMyQzE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgRkVCUlVBUlk7U287MDtMOzxjb21wYXQ+IDAwMzIgNjcwODs7OztOOzs7OzsKKzMyQzI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgTUFSQ0g7U287MDtMOzxjb21wYXQ+IDAwMzMgNjcwODs7OztOOzs7OzsKKzMyQzM7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgQVBSSUw7U287MDtMOzxjb21wYXQ+IDAwMzQgNjcwODs7OztOOzs7OzsKKzMyQzQ7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgTUFZO1NvOzA7TDs8Y29tcGF0PiAwMDM1IDY3MDg7Ozs7Tjs7Ozs7CiszMkM1O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEpVTkU7U287MDtMOzxjb21wYXQ+IDAwMzYgNjcwODs7OztOOzs7OzsKKzMyQzY7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSlVMWTtTbzswO0w7PGNvbXBhdD4gMDAzNyA2NzA4Ozs7O047Ozs7OworMzJDNztJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBBVUdVU1Q7U287MDtMOzxjb21wYXQ+IDAwMzggNjcwODs7OztOOzs7OzsKKzMyQzg7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgU0VQVEVNQkVSO1NvOzA7TDs8Y29tcGF0PiAwMDM5IDY3MDg7Ozs7Tjs7Ozs7CiszMkM5O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIE9DVE9CRVI7U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMCA2NzA4Ozs7O047Ozs7OworMzJDQTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBOT1ZFTUJFUjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMxIDY3MDg7Ozs7Tjs7Ozs7CiszMkNCO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERFQ0VNQkVSO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzIgNjcwODs7OztOOzs7OzsKKzMyRDA7Q0lSQ0xFRCBLQVRBS0FOQSBBO1NvOzA7TDs8Y2lyY2xlPiAzMEEyOzs7O047Ozs7OworMzJEMTtDSVJDTEVEIEtBVEFLQU5BIEk7U287MDtMOzxjaXJjbGU+IDMwQTQ7Ozs7Tjs7Ozs7CiszMkQyO0NJUkNMRUQgS0FUQUtBTkEgVTtTbzswO0w7PGNpcmNsZT4gMzBBNjs7OztOOzs7OzsKKzMyRDM7Q0lSQ0xFRCBLQVRBS0FOQSBFO1NvOzA7TDs8Y2lyY2xlPiAzMEE4Ozs7O047Ozs7OworMzJENDtDSVJDTEVEIEtBVEFLQU5BIE87U287MDtMOzxjaXJjbGU+IDMwQUE7Ozs7Tjs7Ozs7CiszMkQ1O0NJUkNMRUQgS0FUQUtBTkEgS0E7U287MDtMOzxjaXJjbGU+IDMwQUI7Ozs7Tjs7Ozs7CiszMkQ2O0NJUkNMRUQgS0FUQUtBTkEgS0k7U287MDtMOzxjaXJjbGU+IDMwQUQ7Ozs7Tjs7Ozs7CiszMkQ3O0NJUkNMRUQgS0FUQUtBTkEgS1U7U287MDtMOzxjaXJjbGU+IDMwQUY7Ozs7Tjs7Ozs7CiszMkQ4O0NJUkNMRUQgS0FUQUtBTkEgS0U7U287MDtMOzxjaXJjbGU+IDMwQjE7Ozs7Tjs7Ozs7CiszMkQ5O0NJUkNMRUQgS0FUQUtBTkEgS087U287MDtMOzxjaXJjbGU+IDMwQjM7Ozs7Tjs7Ozs7CiszMkRBO0NJUkNMRUQgS0FUQUtBTkEgU0E7U287MDtMOzxjaXJjbGU+IDMwQjU7Ozs7Tjs7Ozs7CiszMkRCO0NJUkNMRUQgS0FUQUtBTkEgU0k7U287MDtMOzxjaXJjbGU+IDMwQjc7Ozs7Tjs7Ozs7CiszMkRDO0NJUkNMRUQgS0FUQUtBTkEgU1U7U287MDtMOzxjaXJjbGU+IDMwQjk7Ozs7Tjs7Ozs7CiszMkREO0NJUkNMRUQgS0FUQUtBTkEgU0U7U287MDtMOzxjaXJjbGU+IDMwQkI7Ozs7Tjs7Ozs7CiszMkRFO0NJUkNMRUQgS0FUQUtBTkEgU087U287MDtMOzxjaXJjbGU+IDMwQkQ7Ozs7Tjs7Ozs7CiszMkRGO0NJUkNMRUQgS0FUQUtBTkEgVEE7U287MDtMOzxjaXJjbGU+IDMwQkY7Ozs7Tjs7Ozs7CiszMkUwO0NJUkNMRUQgS0FUQUtBTkEgVEk7U287MDtMOzxjaXJjbGU+IDMwQzE7Ozs7Tjs7Ozs7CiszMkUxO0NJUkNMRUQgS0FUQUtBTkEgVFU7U287MDtMOzxjaXJjbGU+IDMwQzQ7Ozs7Tjs7Ozs7CiszMkUyO0NJUkNMRUQgS0FUQUtBTkEgVEU7U287MDtMOzxjaXJjbGU+IDMwQzY7Ozs7Tjs7Ozs7CiszMkUzO0NJUkNMRUQgS0FUQUtBTkEgVE87U287MDtMOzxjaXJjbGU+IDMwQzg7Ozs7Tjs7Ozs7CiszMkU0O0NJUkNMRUQgS0FUQUtBTkEgTkE7U287MDtMOzxjaXJjbGU+IDMwQ0E7Ozs7Tjs7Ozs7CiszMkU1O0NJUkNMRUQgS0FUQUtBTkEgTkk7U287MDtMOzxjaXJjbGU+IDMwQ0I7Ozs7Tjs7Ozs7CiszMkU2O0NJUkNMRUQgS0FUQUtBTkEgTlU7U287MDtMOzxjaXJjbGU+IDMwQ0M7Ozs7Tjs7Ozs7CiszMkU3O0NJUkNMRUQgS0FUQUtBTkEgTkU7U287MDtMOzxjaXJjbGU+IDMwQ0Q7Ozs7Tjs7Ozs7CiszMkU4O0NJUkNMRUQgS0FUQUtBTkEgTk87U287MDtMOzxjaXJjbGU+IDMwQ0U7Ozs7Tjs7Ozs7CiszMkU5O0NJUkNMRUQgS0FUQUtBTkEgSEE7U287MDtMOzxjaXJjbGU+IDMwQ0Y7Ozs7Tjs7Ozs7CiszMkVBO0NJUkNMRUQgS0FUQUtBTkEgSEk7U287MDtMOzxjaXJjbGU+IDMwRDI7Ozs7Tjs7Ozs7CiszMkVCO0NJUkNMRUQgS0FUQUtBTkEgSFU7U287MDtMOzxjaXJjbGU+IDMwRDU7Ozs7Tjs7Ozs7CiszMkVDO0NJUkNMRUQgS0FUQUtBTkEgSEU7U287MDtMOzxjaXJjbGU+IDMwRDg7Ozs7Tjs7Ozs7CiszMkVEO0NJUkNMRUQgS0FUQUtBTkEgSE87U287MDtMOzxjaXJjbGU+IDMwREI7Ozs7Tjs7Ozs7CiszMkVFO0NJUkNMRUQgS0FUQUtBTkEgTUE7U287MDtMOzxjaXJjbGU+IDMwREU7Ozs7Tjs7Ozs7CiszMkVGO0NJUkNMRUQgS0FUQUtBTkEgTUk7U287MDtMOzxjaXJjbGU+IDMwREY7Ozs7Tjs7Ozs7CiszMkYwO0NJUkNMRUQgS0FUQUtBTkEgTVU7U287MDtMOzxjaXJjbGU+IDMwRTA7Ozs7Tjs7Ozs7CiszMkYxO0NJUkNMRUQgS0FUQUtBTkEgTUU7U287MDtMOzxjaXJjbGU+IDMwRTE7Ozs7Tjs7Ozs7CiszMkYyO0NJUkNMRUQgS0FUQUtBTkEgTU87U287MDtMOzxjaXJjbGU+IDMwRTI7Ozs7Tjs7Ozs7CiszMkYzO0NJUkNMRUQgS0FUQUtBTkEgWUE7U287MDtMOzxjaXJjbGU+IDMwRTQ7Ozs7Tjs7Ozs7CiszMkY0O0NJUkNMRUQgS0FUQUtBTkEgWVU7U287MDtMOzxjaXJjbGU+IDMwRTY7Ozs7Tjs7Ozs7CiszMkY1O0NJUkNMRUQgS0FUQUtBTkEgWU87U287MDtMOzxjaXJjbGU+IDMwRTg7Ozs7Tjs7Ozs7CiszMkY2O0NJUkNMRUQgS0FUQUtBTkEgUkE7U287MDtMOzxjaXJjbGU+IDMwRTk7Ozs7Tjs7Ozs7CiszMkY3O0NJUkNMRUQgS0FUQUtBTkEgUkk7U287MDtMOzxjaXJjbGU+IDMwRUE7Ozs7Tjs7Ozs7CiszMkY4O0NJUkNMRUQgS0FUQUtBTkEgUlU7U287MDtMOzxjaXJjbGU+IDMwRUI7Ozs7Tjs7Ozs7CiszMkY5O0NJUkNMRUQgS0FUQUtBTkEgUkU7U287MDtMOzxjaXJjbGU+IDMwRUM7Ozs7Tjs7Ozs7CiszMkZBO0NJUkNMRUQgS0FUQUtBTkEgUk87U287MDtMOzxjaXJjbGU+IDMwRUQ7Ozs7Tjs7Ozs7CiszMkZCO0NJUkNMRUQgS0FUQUtBTkEgV0E7U287MDtMOzxjaXJjbGU+IDMwRUY7Ozs7Tjs7Ozs7CiszMkZDO0NJUkNMRUQgS0FUQUtBTkEgV0k7U287MDtMOzxjaXJjbGU+IDMwRjA7Ozs7Tjs7Ozs7CiszMkZEO0NJUkNMRUQgS0FUQUtBTkEgV0U7U287MDtMOzxjaXJjbGU+IDMwRjE7Ozs7Tjs7Ozs7CiszMkZFO0NJUkNMRUQgS0FUQUtBTkEgV087U287MDtMOzxjaXJjbGU+IDMwRjI7Ozs7Tjs7Ozs7CiszMzAwO1NRVUFSRSBBUEFBVE87U287MDtMOzxzcXVhcmU+IDMwQTIgMzBEMSAzMEZDIDMwQzg7Ozs7TjtTUVVBUkVEIEFQQUFUTzs7OzsKKzMzMDE7U1FVQVJFIEFSVUhVQTtTbzswO0w7PHNxdWFyZT4gMzBBMiAzMEVCIDMwRDUgMzBBMTs7OztOO1NRVUFSRUQgQVJVSFVBOzs7OworMzMwMjtTUVVBUkUgQU5QRUE7U287MDtMOzxzcXVhcmU+IDMwQTIgMzBGMyAzMERBIDMwQTI7Ozs7TjtTUVVBUkVEIEFOUEVBOzs7OworMzMwMztTUVVBUkUgQUFSVTtTbzswO0w7PHNxdWFyZT4gMzBBMiAzMEZDIDMwRUI7Ozs7TjtTUVVBUkVEIEFBUlU7Ozs7CiszMzA0O1NRVUFSRSBJTklOR1U7U287MDtMOzxzcXVhcmU+IDMwQTQgMzBDQiAzMEYzIDMwQjA7Ozs7TjtTUVVBUkVEIElOSU5HVTs7OzsKKzMzMDU7U1FVQVJFIElOVEk7U287MDtMOzxzcXVhcmU+IDMwQTQgMzBGMyAzMEMxOzs7O047U1FVQVJFRCBJTlRJOzs7OworMzMwNjtTUVVBUkUgVU9OO1NvOzA7TDs8c3F1YXJlPiAzMEE2IDMwQTkgMzBGMzs7OztOO1NRVUFSRUQgVU9OOzs7OworMzMwNztTUVVBUkUgRVNVS1VVRE87U287MDtMOzxzcXVhcmU+IDMwQTggMzBCOSAzMEFGIDMwRkMgMzBDOTs7OztOO1NRVUFSRUQgRVNVS1VVRE87Ozs7CiszMzA4O1NRVUFSRSBFRUtBQTtTbzswO0w7PHNxdWFyZT4gMzBBOCAzMEZDIDMwQUIgMzBGQzs7OztOO1NRVUFSRUQgRUVLQUE7Ozs7CiszMzA5O1NRVUFSRSBPTlNVO1NvOzA7TDs8c3F1YXJlPiAzMEFBIDMwRjMgMzBCOTs7OztOO1NRVUFSRUQgT05TVTs7OzsKKzMzMEE7U1FVQVJFIE9PTVU7U287MDtMOzxzcXVhcmU+IDMwQUEgMzBGQyAzMEUwOzs7O047U1FVQVJFRCBPT01VOzs7OworMzMwQjtTUVVBUkUgS0FJUkk7U287MDtMOzxzcXVhcmU+IDMwQUIgMzBBNCAzMEVBOzs7O047U1FVQVJFRCBLQUlSSTs7OzsKKzMzMEM7U1FVQVJFIEtBUkFUVE87U287MDtMOzxzcXVhcmU+IDMwQUIgMzBFOSAzMEMzIDMwQzg7Ozs7TjtTUVVBUkVEIEtBUkFUVE87Ozs7CiszMzBEO1NRVUFSRSBLQVJPUklJO1NvOzA7TDs8c3F1YXJlPiAzMEFCIDMwRUQgMzBFQSAzMEZDOzs7O047U1FVQVJFRCBLQVJPUklJOzs7OworMzMwRTtTUVVBUkUgR0FST047U287MDtMOzxzcXVhcmU+IDMwQUMgMzBFRCAzMEYzOzs7O047U1FVQVJFRCBHQVJPTjs7OzsKKzMzMEY7U1FVQVJFIEdBTk1BO1NvOzA7TDs8c3F1YXJlPiAzMEFDIDMwRjMgMzBERTs7OztOO1NRVUFSRUQgR0FOTUE7Ozs7CiszMzEwO1NRVUFSRSBHSUdBO1NvOzA7TDs8c3F1YXJlPiAzMEFFIDMwQUM7Ozs7TjtTUVVBUkVEIEdJR0E7Ozs7CiszMzExO1NRVUFSRSBHSU5JSTtTbzswO0w7PHNxdWFyZT4gMzBBRSAzMENCIDMwRkM7Ozs7TjtTUVVBUkVEIEdJTklJOzs7OworMzMxMjtTUVVBUkUgS1lVUklJO1NvOzA7TDs8c3F1YXJlPiAzMEFEIDMwRTUgMzBFQSAzMEZDOzs7O047U1FVQVJFRCBLWVVSSUk7Ozs7CiszMzEzO1NRVUFSRSBHSVJVREFBO1NvOzA7TDs8c3F1YXJlPiAzMEFFIDMwRUIgMzBDMCAzMEZDOzs7O047U1FVQVJFRCBHSVJVREFBOzs7OworMzMxNDtTUVVBUkUgS0lSTztTbzswO0w7PHNxdWFyZT4gMzBBRCAzMEVEOzs7O047U1FVQVJFRCBLSVJPOzs7OworMzMxNTtTUVVBUkUgS0lST0dVUkFNVTtTbzswO0w7PHNxdWFyZT4gMzBBRCAzMEVEIDMwQjAgMzBFOSAzMEUwOzs7O047U1FVQVJFRCBLSVJPR1VSQU1VOzs7OworMzMxNjtTUVVBUkUgS0lST01FRVRPUlU7U287MDtMOzxzcXVhcmU+IDMwQUQgMzBFRCAzMEUxIDMwRkMgMzBDOCAzMEVCOzs7O047U1FVQVJFRCBLSVJPTUVFVE9SVTs7OzsKKzMzMTc7U1FVQVJFIEtJUk9XQVRUTztTbzswO0w7PHNxdWFyZT4gMzBBRCAzMEVEIDMwRUYgMzBDMyAzMEM4Ozs7O047U1FVQVJFRCBLSVJPV0FUVE87Ozs7CiszMzE4O1NRVUFSRSBHVVJBTVU7U287MDtMOzxzcXVhcmU+IDMwQjAgMzBFOSAzMEUwOzs7O047U1FVQVJFRCBHVVJBTVU7Ozs7CiszMzE5O1NRVUFSRSBHVVJBTVVUT047U287MDtMOzxzcXVhcmU+IDMwQjAgMzBFOSAzMEUwIDMwQzggMzBGMzs7OztOO1NRVUFSRUQgR1VSQU1VVE9OOzs7OworMzMxQTtTUVVBUkUgS1VSVVpFSVJPO1NvOzA7TDs8c3F1YXJlPiAzMEFGIDMwRUIgMzBCQyAzMEE0IDMwRUQ7Ozs7TjtTUVVBUkVEIEtVUlVaRUlSTzs7OzsKKzMzMUI7U1FVQVJFIEtVUk9PTkU7U287MDtMOzxzcXVhcmU+IDMwQUYgMzBFRCAzMEZDIDMwQ0Q7Ozs7TjtTUVVBUkVEIEtVUk9PTkU7Ozs7CiszMzFDO1NRVUFSRSBLRUVTVTtTbzswO0w7PHNxdWFyZT4gMzBCMSAzMEZDIDMwQjk7Ozs7TjtTUVVBUkVEIEtFRVNVOzs7OworMzMxRDtTUVVBUkUgS09SVU5BO1NvOzA7TDs8c3F1YXJlPiAzMEIzIDMwRUIgMzBDQTs7OztOO1NRVUFSRUQgS09SVU5BOzs7OworMzMxRTtTUVVBUkUgS09PUE87U287MDtMOzxzcXVhcmU+IDMwQjMgMzBGQyAzMEREOzs7O047U1FVQVJFRCBLT09QTzs7OzsKKzMzMUY7U1FVQVJFIFNBSUtVUlU7U287MDtMOzxzcXVhcmU+IDMwQjUgMzBBNCAzMEFGIDMwRUI7Ozs7TjtTUVVBUkVEIFNBSUtVUlU7Ozs7CiszMzIwO1NRVUFSRSBTQU5USUlNVTtTbzswO0w7PHNxdWFyZT4gMzBCNSAzMEYzIDMwQzEgMzBGQyAzMEUwOzs7O047U1FVQVJFRCBTQU5USUlNVTs7OzsKKzMzMjE7U1FVQVJFIFNJUklOR1U7U287MDtMOzxzcXVhcmU+IDMwQjcgMzBFQSAzMEYzIDMwQjA7Ozs7TjtTUVVBUkVEIFNJUklOR1U7Ozs7CiszMzIyO1NRVUFSRSBTRU5USTtTbzswO0w7PHNxdWFyZT4gMzBCQiAzMEYzIDMwQzE7Ozs7TjtTUVVBUkVEIFNFTlRJOzs7OworMzMyMztTUVVBUkUgU0VOVE87U287MDtMOzxzcXVhcmU+IDMwQkIgMzBGMyAzMEM4Ozs7O047U1FVQVJFRCBTRU5UTzs7OzsKKzMzMjQ7U1FVQVJFIERBQVNVO1NvOzA7TDs8c3F1YXJlPiAzMEMwIDMwRkMgMzBCOTs7OztOO1NRVUFSRUQgREFBU1U7Ozs7CiszMzI1O1NRVUFSRSBERVNJO1NvOzA7TDs8c3F1YXJlPiAzMEM3IDMwQjc7Ozs7TjtTUVVBUkVEIERFU0k7Ozs7CiszMzI2O1NRVUFSRSBET1JVO1NvOzA7TDs8c3F1YXJlPiAzMEM5IDMwRUI7Ozs7TjtTUVVBUkVEIERPUlU7Ozs7CiszMzI3O1NRVUFSRSBUT047U287MDtMOzxzcXVhcmU+IDMwQzggMzBGMzs7OztOO1NRVUFSRUQgVE9OOzs7OworMzMyODtTUVVBUkUgTkFOTztTbzswO0w7PHNxdWFyZT4gMzBDQSAzMENFOzs7O047U1FVQVJFRCBOQU5POzs7OworMzMyOTtTUVVBUkUgTk9UVE87U287MDtMOzxzcXVhcmU+IDMwQ0UgMzBDMyAzMEM4Ozs7O047U1FVQVJFRCBOT1RUTzs7OzsKKzMzMkE7U1FVQVJFIEhBSVRVO1NvOzA7TDs8c3F1YXJlPiAzMENGIDMwQTQgMzBDNDs7OztOO1NRVUFSRUQgSEFJVFU7Ozs7CiszMzJCO1NRVUFSRSBQQUFTRU5UTztTbzswO0w7PHNxdWFyZT4gMzBEMSAzMEZDIDMwQkIgMzBGMyAzMEM4Ozs7O047U1FVQVJFRCBQQUFTRU5UTzs7OzsKKzMzMkM7U1FVQVJFIFBBQVRVO1NvOzA7TDs8c3F1YXJlPiAzMEQxIDMwRkMgMzBDNDs7OztOO1NRVUFSRUQgUEFBVFU7Ozs7CiszMzJEO1NRVUFSRSBCQUFSRVJVO1NvOzA7TDs8c3F1YXJlPiAzMEQwIDMwRkMgMzBFQyAzMEVCOzs7O047U1FVQVJFRCBCQUFSRVJVOzs7OworMzMyRTtTUVVBUkUgUElBU1VUT1JVO1NvOzA7TDs8c3F1YXJlPiAzMEQ0IDMwQTIgMzBCOSAzMEM4IDMwRUI7Ozs7TjtTUVVBUkVEIFBJQVNVVE9SVTs7OzsKKzMzMkY7U1FVQVJFIFBJS1VSVTtTbzswO0w7PHNxdWFyZT4gMzBENCAzMEFGIDMwRUI7Ozs7TjtTUVVBUkVEIFBJS1VSVTs7OzsKKzMzMzA7U1FVQVJFIFBJS087U287MDtMOzxzcXVhcmU+IDMwRDQgMzBCMzs7OztOO1NRVUFSRUQgUElLTzs7OzsKKzMzMzE7U1FVQVJFIEJJUlU7U287MDtMOzxzcXVhcmU+IDMwRDMgMzBFQjs7OztOO1NRVUFSRUQgQklSVTs7OzsKKzMzMzI7U1FVQVJFIEhVQVJBRERPO1NvOzA7TDs8c3F1YXJlPiAzMEQ1IDMwQTEgMzBFOSAzMEMzIDMwQzk7Ozs7TjtTUVVBUkVEIEhVQVJBRERPOzs7OworMzMzMztTUVVBUkUgSFVJSVRPO1NvOzA7TDs8c3F1YXJlPiAzMEQ1IDMwQTMgMzBGQyAzMEM4Ozs7O047U1FVQVJFRCBIVUlJVE87Ozs7CiszMzM0O1NRVUFSRSBCVVNTWUVSVTtTbzswO0w7PHNxdWFyZT4gMzBENiAzMEMzIDMwQjcgMzBBNyAzMEVCOzs7O047U1FVQVJFRCBCVVNTWUVSVTs7OzsKKzMzMzU7U1FVQVJFIEhVUkFOO1NvOzA7TDs8c3F1YXJlPiAzMEQ1IDMwRTkgMzBGMzs7OztOO1NRVUFSRUQgSFVSQU47Ozs7CiszMzM2O1NRVUFSRSBIRUtVVEFBUlU7U287MDtMOzxzcXVhcmU+IDMwRDggMzBBRiAzMEJGIDMwRkMgMzBFQjs7OztOO1NRVUFSRUQgSEVLVVRBQVJVOzs7OworMzMzNztTUVVBUkUgUEVTTztTbzswO0w7PHNxdWFyZT4gMzBEQSAzMEJEOzs7O047U1FVQVJFRCBQRVNPOzs7OworMzMzODtTUVVBUkUgUEVOSUhJO1NvOzA7TDs8c3F1YXJlPiAzMERBIDMwQ0IgMzBEMjs7OztOO1NRVUFSRUQgUEVOSUhJOzs7OworMzMzOTtTUVVBUkUgSEVSVVRVO1NvOzA7TDs8c3F1YXJlPiAzMEQ4IDMwRUIgMzBDNDs7OztOO1NRVUFSRUQgSEVSVVRVOzs7OworMzMzQTtTUVVBUkUgUEVOU1U7U287MDtMOzxzcXVhcmU+IDMwREEgMzBGMyAzMEI5Ozs7O047U1FVQVJFRCBQRU5TVTs7OzsKKzMzM0I7U1FVQVJFIFBFRVpJO1NvOzA7TDs8c3F1YXJlPiAzMERBIDMwRkMgMzBCODs7OztOO1NRVUFSRUQgUEVFWkk7Ozs7CiszMzNDO1NRVUFSRSBCRUVUQTtTbzswO0w7PHNxdWFyZT4gMzBEOSAzMEZDIDMwQkY7Ozs7TjtTUVVBUkVEIEJFRVRBOzs7OworMzMzRDtTUVVBUkUgUE9JTlRPO1NvOzA7TDs8c3F1YXJlPiAzMEREIDMwQTQgMzBGMyAzMEM4Ozs7O047U1FVQVJFRCBQT0lOVE87Ozs7CiszMzNFO1NRVUFSRSBCT1JVVE87U287MDtMOzxzcXVhcmU+IDMwREMgMzBFQiAzMEM4Ozs7O047U1FVQVJFRCBCT1JVVE87Ozs7CiszMzNGO1NRVUFSRSBIT047U287MDtMOzxzcXVhcmU+IDMwREIgMzBGMzs7OztOO1NRVUFSRUQgSE9OOzs7OworMzM0MDtTUVVBUkUgUE9ORE87U287MDtMOzxzcXVhcmU+IDMwREQgMzBGMyAzMEM5Ozs7O047U1FVQVJFRCBQT05ETzs7OzsKKzMzNDE7U1FVQVJFIEhPT1JVO1NvOzA7TDs8c3F1YXJlPiAzMERCIDMwRkMgMzBFQjs7OztOO1NRVUFSRUQgSE9PUlU7Ozs7CiszMzQyO1NRVUFSRSBIT09OO1NvOzA7TDs8c3F1YXJlPiAzMERCIDMwRkMgMzBGMzs7OztOO1NRVUFSRUQgSE9PTjs7OzsKKzMzNDM7U1FVQVJFIE1BSUtVUk87U287MDtMOzxzcXVhcmU+IDMwREUgMzBBNCAzMEFGIDMwRUQ7Ozs7TjtTUVVBUkVEIE1BSUtVUk87Ozs7CiszMzQ0O1NRVUFSRSBNQUlSVTtTbzswO0w7PHNxdWFyZT4gMzBERSAzMEE0IDMwRUI7Ozs7TjtTUVVBUkVEIE1BSVJVOzs7OworMzM0NTtTUVVBUkUgTUFISEE7U287MDtMOzxzcXVhcmU+IDMwREUgMzBDMyAzMENGOzs7O047U1FVQVJFRCBNQUhIQTs7OzsKKzMzNDY7U1FVQVJFIE1BUlVLVTtTbzswO0w7PHNxdWFyZT4gMzBERSAzMEVCIDMwQUY7Ozs7TjtTUVVBUkVEIE1BUlVLVTs7OzsKKzMzNDc7U1FVQVJFIE1BTlNZT047U287MDtMOzxzcXVhcmU+IDMwREUgMzBGMyAzMEI3IDMwRTcgMzBGMzs7OztOO1NRVUFSRUQgTUFOU1lPTjs7OzsKKzMzNDg7U1FVQVJFIE1JS1VST047U287MDtMOzxzcXVhcmU+IDMwREYgMzBBRiAzMEVEIDMwRjM7Ozs7TjtTUVVBUkVEIE1JS1VST047Ozs7CiszMzQ5O1NRVUFSRSBNSVJJO1NvOzA7TDs8c3F1YXJlPiAzMERGIDMwRUE7Ozs7TjtTUVVBUkVEIE1JUkk7Ozs7CiszMzRBO1NRVUFSRSBNSVJJQkFBUlU7U287MDtMOzxzcXVhcmU+IDMwREYgMzBFQSAzMEQwIDMwRkMgMzBFQjs7OztOO1NRVUFSRUQgTUlSSUJBQVJVOzs7OworMzM0QjtTUVVBUkUgTUVHQTtTbzswO0w7PHNxdWFyZT4gMzBFMSAzMEFDOzs7O047U1FVQVJFRCBNRUdBOzs7OworMzM0QztTUVVBUkUgTUVHQVRPTjtTbzswO0w7PHNxdWFyZT4gMzBFMSAzMEFDIDMwQzggMzBGMzs7OztOO1NRVUFSRUQgTUVHQVRPTjs7OzsKKzMzNEQ7U1FVQVJFIE1FRVRPUlU7U287MDtMOzxzcXVhcmU+IDMwRTEgMzBGQyAzMEM4IDMwRUI7Ozs7TjtTUVVBUkVEIE1FRVRPUlU7Ozs7CiszMzRFO1NRVUFSRSBZQUFETztTbzswO0w7PHNxdWFyZT4gMzBFNCAzMEZDIDMwQzk7Ozs7TjtTUVVBUkVEIFlBQURPOzs7OworMzM0RjtTUVVBUkUgWUFBUlU7U287MDtMOzxzcXVhcmU+IDMwRTQgMzBGQyAzMEVCOzs7O047U1FVQVJFRCBZQUFSVTs7OzsKKzMzNTA7U1FVQVJFIFlVQU47U287MDtMOzxzcXVhcmU+IDMwRTYgMzBBMiAzMEYzOzs7O047U1FVQVJFRCBZVUFOOzs7OworMzM1MTtTUVVBUkUgUklUVE9SVTtTbzswO0w7PHNxdWFyZT4gMzBFQSAzMEMzIDMwQzggMzBFQjs7OztOO1NRVUFSRUQgUklUVE9SVTs7OzsKKzMzNTI7U1FVQVJFIFJJUkE7U287MDtMOzxzcXVhcmU+IDMwRUEgMzBFOTs7OztOO1NRVUFSRUQgUklSQTs7OzsKKzMzNTM7U1FVQVJFIFJVUElJO1NvOzA7TDs8c3F1YXJlPiAzMEVCIDMwRDQgMzBGQzs7OztOO1NRVUFSRUQgUlVQSUk7Ozs7CiszMzU0O1NRVUFSRSBSVVVCVVJVO1NvOzA7TDs8c3F1YXJlPiAzMEVCIDMwRkMgMzBENiAzMEVCOzs7O047U1FVQVJFRCBSVVVCVVJVOzs7OworMzM1NTtTUVVBUkUgUkVNVTtTbzswO0w7PHNxdWFyZT4gMzBFQyAzMEUwOzs7O047U1FVQVJFRCBSRU1VOzs7OworMzM1NjtTUVVBUkUgUkVOVE9HRU47U287MDtMOzxzcXVhcmU+IDMwRUMgMzBGMyAzMEM4IDMwQjIgMzBGMzs7OztOO1NRVUFSRUQgUkVOVE9HRU47Ozs7CiszMzU3O1NRVUFSRSBXQVRUTztTbzswO0w7PHNxdWFyZT4gMzBFRiAzMEMzIDMwQzg7Ozs7TjtTUVVBUkVEIFdBVFRPOzs7OworMzM1ODtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFpFUk87U287MDtMOzxjb21wYXQ+IDAwMzAgNzBCOTs7OztOOzs7OzsKKzMzNTk7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBPTkU7U287MDtMOzxjb21wYXQ+IDAwMzEgNzBCOTs7OztOOzs7OzsKKzMzNUE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV087U287MDtMOzxjb21wYXQ+IDAwMzIgNzBCOTs7OztOOzs7OzsKKzMzNUI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUSFJFRTtTbzswO0w7PGNvbXBhdD4gMDAzMyA3MEI5Ozs7O047Ozs7OworMzM1QztJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEZPVVI7U287MDtMOzxjb21wYXQ+IDAwMzQgNzBCOTs7OztOOzs7OzsKKzMzNUQ7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBGSVZFO1NvOzA7TDs8Y29tcGF0PiAwMDM1IDcwQjk7Ozs7Tjs7Ozs7CiszMzVFO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgU0lYO1NvOzA7TDs8Y29tcGF0PiAwMDM2IDcwQjk7Ozs7Tjs7Ozs7CiszMzVGO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgU0VWRU47U287MDtMOzxjb21wYXQ+IDAwMzcgNzBCOTs7OztOOzs7OzsKKzMzNjA7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBFSUdIVDtTbzswO0w7PGNvbXBhdD4gMDAzOCA3MEI5Ozs7O047Ozs7OworMzM2MTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIE5JTkU7U287MDtMOzxjb21wYXQ+IDAwMzkgNzBCOTs7OztOOzs7OzsKKzMzNjI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBURU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMCA3MEI5Ozs7O047Ozs7OworMzM2MztJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEVMRVZFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMxIDcwQjk7Ozs7Tjs7Ozs7CiszMzY0O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVFdFTFZFO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzIgNzBCOTs7OztOOzs7OzsKKzMzNjU7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUSElSVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMzIDcwQjk7Ozs7Tjs7Ozs7CiszMzY2O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgRk9VUlRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzNCA3MEI5Ozs7O047Ozs7OworMzM2NztJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEZJRlRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzNSA3MEI5Ozs7O047Ozs7OworMzM2ODtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFNJWFRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzNiA3MEI5Ozs7O047Ozs7OworMzM2OTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFNFVkVOVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM3IDcwQjk7Ozs7Tjs7Ozs7CiszMzZBO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgRUlHSFRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzOCA3MEI5Ozs7O047Ozs7OworMzM2QjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIE5JTkVURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzkgNzBCOTs7OztOOzs7OzsKKzMzNkM7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV0VOVFk7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzMCA3MEI5Ozs7O047Ozs7OworMzM2RDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRXRU5UWS1PTkU7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzMSA3MEI5Ozs7O047Ozs7OworMzM2RTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRXRU5UWS1UV087U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzMiA3MEI5Ozs7O047Ozs7OworMzM2RjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRXRU5UWS1USFJFRTtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDMzIDcwQjk7Ozs7Tjs7Ozs7CiszMzcwO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVFdFTlRZLUZPVVI7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzNCA3MEI5Ozs7O047Ozs7OworMzM3MTtTUVVBUkUgSFBBO1NvOzA7TDs8c3F1YXJlPiAwMDY4IDAwNTAgMDA2MTs7OztOOzs7OzsKKzMzNzI7U1FVQVJFIERBO1NvOzA7TDs8c3F1YXJlPiAwMDY0IDAwNjE7Ozs7Tjs7Ozs7CiszMzczO1NRVUFSRSBBVTtTbzswO0w7PHNxdWFyZT4gMDA0MSAwMDU1Ozs7O047Ozs7OworMzM3NDtTUVVBUkUgQkFSO1NvOzA7TDs8c3F1YXJlPiAwMDYyIDAwNjEgMDA3Mjs7OztOOzs7OzsKKzMzNzU7U1FVQVJFIE9WO1NvOzA7TDs8c3F1YXJlPiAwMDZGIDAwNTY7Ozs7Tjs7Ozs7CiszMzc2O1NRVUFSRSBQQztTbzswO0w7PHNxdWFyZT4gMDA3MCAwMDYzOzs7O047Ozs7OworMzM3QjtTUVVBUkUgRVJBIE5BTUUgSEVJU0VJO1NvOzA7TDs8c3F1YXJlPiA1RTczIDYyMTA7Ozs7TjtTUVVBUkVEIFRXTyBJREVPR1JBUEhTIEVSQSBOQU1FIEhFSVNFSTs7OzsKKzMzN0M7U1FVQVJFIEVSQSBOQU1FIFNZT1VXQTtTbzswO0w7PHNxdWFyZT4gNjYyRCA1NDhDOzs7O047U1FVQVJFRCBUV08gSURFT0dSQVBIUyBFUkEgTkFNRSBTWU9VV0E7Ozs7CiszMzdEO1NRVUFSRSBFUkEgTkFNRSBUQUlTWU9VO1NvOzA7TDs8c3F1YXJlPiA1OTI3IDZCNjM7Ozs7TjtTUVVBUkVEIFRXTyBJREVPR1JBUEhTIEVSQSBOQU1FIFRBSVNZT1U7Ozs7CiszMzdFO1NRVUFSRSBFUkEgTkFNRSBNRUlaSTtTbzswO0w7PHNxdWFyZT4gNjYwRSA2Q0JCOzs7O047U1FVQVJFRCBUV08gSURFT0dSQVBIUyBFUkEgTkFNRSBNRUlaSTs7OzsKKzMzN0Y7U1FVQVJFIENPUlBPUkFUSU9OO1NvOzA7TDs8c3F1YXJlPiA2ODJBIDVGMEYgNEYxQSA3OTNFOzs7O047U1FVQVJFRCBGT1VSIElERU9HUkFQSFMgQ09SUE9SQVRJT047Ozs7CiszMzgwO1NRVUFSRSBQQSBBTVBTO1NvOzA7TDs8c3F1YXJlPiAwMDcwIDAwNDE7Ozs7TjtTUVVBUkVEIFBBIEFNUFM7Ozs7CiszMzgxO1NRVUFSRSBOQTtTbzswO0w7PHNxdWFyZT4gMDA2RSAwMDQxOzs7O047U1FVQVJFRCBOQTs7OzsKKzMzODI7U1FVQVJFIE1VIEE7U287MDtMOzxzcXVhcmU+IDAzQkMgMDA0MTs7OztOO1NRVUFSRUQgTVUgQTs7OzsKKzMzODM7U1FVQVJFIE1BO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwNDE7Ozs7TjtTUVVBUkVEIE1BOzs7OworMzM4NDtTUVVBUkUgS0E7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA0MTs7OztOO1NRVUFSRUQgS0E7Ozs7CiszMzg1O1NRVUFSRSBLQjtTbzswO0w7PHNxdWFyZT4gMDA0QiAwMDQyOzs7O047U1FVQVJFRCBLQjs7OzsKKzMzODY7U1FVQVJFIE1CO1NvOzA7TDs8c3F1YXJlPiAwMDREIDAwNDI7Ozs7TjtTUVVBUkVEIE1COzs7OworMzM4NztTUVVBUkUgR0I7U287MDtMOzxzcXVhcmU+IDAwNDcgMDA0Mjs7OztOO1NRVUFSRUQgR0I7Ozs7CiszMzg4O1NRVUFSRSBDQUw7U287MDtMOzxzcXVhcmU+IDAwNjMgMDA2MSAwMDZDOzs7O047U1FVQVJFRCBDQUw7Ozs7CiszMzg5O1NRVUFSRSBLQ0FMO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNjMgMDA2MSAwMDZDOzs7O047U1FVQVJFRCBLQ0FMOzs7OworMzM4QTtTUVVBUkUgUEY7U287MDtMOzxzcXVhcmU+IDAwNzAgMDA0Njs7OztOO1NRVUFSRUQgUEY7Ozs7CiszMzhCO1NRVUFSRSBORjtTbzswO0w7PHNxdWFyZT4gMDA2RSAwMDQ2Ozs7O047U1FVQVJFRCBORjs7OzsKKzMzOEM7U1FVQVJFIE1VIEY7U287MDtMOzxzcXVhcmU+IDAzQkMgMDA0Njs7OztOO1NRVUFSRUQgTVUgRjs7OzsKKzMzOEQ7U1FVQVJFIE1VIEc7U287MDtMOzxzcXVhcmU+IDAzQkMgMDA2Nzs7OztOO1NRVUFSRUQgTVUgRzs7OzsKKzMzOEU7U1FVQVJFIE1HO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwNjc7Ozs7TjtTUVVBUkVEIE1HOzs7OworMzM4RjtTUVVBUkUgS0c7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA2Nzs7OztOO1NRVUFSRUQgS0c7Ozs7CiszMzkwO1NRVUFSRSBIWjtTbzswO0w7PHNxdWFyZT4gMDA0OCAwMDdBOzs7O047U1FVQVJFRCBIWjs7OzsKKzMzOTE7U1FVQVJFIEtIWjtTbzswO0w7PHNxdWFyZT4gMDA2QiAwMDQ4IDAwN0E7Ozs7TjtTUVVBUkVEIEtIWjs7OzsKKzMzOTI7U1FVQVJFIE1IWjtTbzswO0w7PHNxdWFyZT4gMDA0RCAwMDQ4IDAwN0E7Ozs7TjtTUVVBUkVEIE1IWjs7OzsKKzMzOTM7U1FVQVJFIEdIWjtTbzswO0w7PHNxdWFyZT4gMDA0NyAwMDQ4IDAwN0E7Ozs7TjtTUVVBUkVEIEdIWjs7OzsKKzMzOTQ7U1FVQVJFIFRIWjtTbzswO0w7PHNxdWFyZT4gMDA1NCAwMDQ4IDAwN0E7Ozs7TjtTUVVBUkVEIFRIWjs7OzsKKzMzOTU7U1FVQVJFIE1VIEw7U287MDtMOzxzcXVhcmU+IDAzQkMgMjExMzs7OztOO1NRVUFSRUQgTVUgTDs7OzsKKzMzOTY7U1FVQVJFIE1MO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDIxMTM7Ozs7TjtTUVVBUkVEIE1MOzs7OworMzM5NztTUVVBUkUgREw7U287MDtMOzxzcXVhcmU+IDAwNjQgMjExMzs7OztOO1NRVUFSRUQgREw7Ozs7CiszMzk4O1NRVUFSRSBLTDtTbzswO0w7PHNxdWFyZT4gMDA2QiAyMTEzOzs7O047U1FVQVJFRCBLTDs7OzsKKzMzOTk7U1FVQVJFIEZNO1NvOzA7TDs8c3F1YXJlPiAwMDY2IDAwNkQ7Ozs7TjtTUVVBUkVEIEZNOzs7OworMzM5QTtTUVVBUkUgTk07U287MDtMOzxzcXVhcmU+IDAwNkUgMDA2RDs7OztOO1NRVUFSRUQgTk07Ozs7CiszMzlCO1NRVUFSRSBNVSBNO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNkQ7Ozs7TjtTUVVBUkVEIE1VIE07Ozs7CiszMzlDO1NRVUFSRSBNTTtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDZEOzs7O047U1FVQVJFRCBNTTs7OzsKKzMzOUQ7U1FVQVJFIENNO1NvOzA7TDs8c3F1YXJlPiAwMDYzIDAwNkQ7Ozs7TjtTUVVBUkVEIENNOzs7OworMzM5RTtTUVVBUkUgS007U287MDtMOzxzcXVhcmU+IDAwNkIgMDA2RDs7OztOO1NRVUFSRUQgS007Ozs7CiszMzlGO1NRVUFSRSBNTSBTUVVBUkVEO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwNkQgMDBCMjs7OztOO1NRVUFSRUQgTU0gU1FVQVJFRDs7OzsKKzMzQTA7U1FVQVJFIENNIFNRVUFSRUQ7U287MDtMOzxzcXVhcmU+IDAwNjMgMDA2RCAwMEIyOzs7O047U1FVQVJFRCBDTSBTUVVBUkVEOzs7OworMzNBMTtTUVVBUkUgTSBTUVVBUkVEO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwQjI7Ozs7TjtTUVVBUkVEIE0gU1FVQVJFRDs7OzsKKzMzQTI7U1FVQVJFIEtNIFNRVUFSRUQ7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA2RCAwMEIyOzs7O047U1FVQVJFRCBLTSBTUVVBUkVEOzs7OworMzNBMztTUVVBUkUgTU0gQ1VCRUQ7U287MDtMOzxzcXVhcmU+IDAwNkQgMDA2RCAwMEIzOzs7O047U1FVQVJFRCBNTSBDVUJFRDs7OzsKKzMzQTQ7U1FVQVJFIENNIENVQkVEO1NvOzA7TDs8c3F1YXJlPiAwMDYzIDAwNkQgMDBCMzs7OztOO1NRVUFSRUQgQ00gQ1VCRUQ7Ozs7CiszM0E1O1NRVUFSRSBNIENVQkVEO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwQjM7Ozs7TjtTUVVBUkVEIE0gQ1VCRUQ7Ozs7CiszM0E2O1NRVUFSRSBLTSBDVUJFRDtTbzswO0w7PHNxdWFyZT4gMDA2QiAwMDZEIDAwQjM7Ozs7TjtTUVVBUkVEIEtNIENVQkVEOzs7OworMzNBNztTUVVBUkUgTSBPVkVSIFM7U287MDtMOzxzcXVhcmU+IDAwNkQgMjIxNSAwMDczOzs7O047U1FVQVJFRCBNIE9WRVIgUzs7OzsKKzMzQTg7U1FVQVJFIE0gT1ZFUiBTIFNRVUFSRUQ7U287MDtMOzxzcXVhcmU+IDAwNkQgMjIxNSAwMDczIDAwQjI7Ozs7TjtTUVVBUkVEIE0gT1ZFUiBTIFNRVUFSRUQ7Ozs7CiszM0E5O1NRVUFSRSBQQTtTbzswO0w7PHNxdWFyZT4gMDA1MCAwMDYxOzs7O047U1FVQVJFRCBQQTs7OzsKKzMzQUE7U1FVQVJFIEtQQTtTbzswO0w7PHNxdWFyZT4gMDA2QiAwMDUwIDAwNjE7Ozs7TjtTUVVBUkVEIEtQQTs7OzsKKzMzQUI7U1FVQVJFIE1QQTtTbzswO0w7PHNxdWFyZT4gMDA0RCAwMDUwIDAwNjE7Ozs7TjtTUVVBUkVEIE1QQTs7OzsKKzMzQUM7U1FVQVJFIEdQQTtTbzswO0w7PHNxdWFyZT4gMDA0NyAwMDUwIDAwNjE7Ozs7TjtTUVVBUkVEIEdQQTs7OzsKKzMzQUQ7U1FVQVJFIFJBRDtTbzswO0w7PHNxdWFyZT4gMDA3MiAwMDYxIDAwNjQ7Ozs7TjtTUVVBUkVEIFJBRDs7OzsKKzMzQUU7U1FVQVJFIFJBRCBPVkVSIFM7U287MDtMOzxzcXVhcmU+IDAwNzIgMDA2MSAwMDY0IDIyMTUgMDA3Mzs7OztOO1NRVUFSRUQgUkFEIE9WRVIgUzs7OzsKKzMzQUY7U1FVQVJFIFJBRCBPVkVSIFMgU1FVQVJFRDtTbzswO0w7PHNxdWFyZT4gMDA3MiAwMDYxIDAwNjQgMjIxNSAwMDczIDAwQjI7Ozs7TjtTUVVBUkVEIFJBRCBPVkVSIFMgU1FVQVJFRDs7OzsKKzMzQjA7U1FVQVJFIFBTO1NvOzA7TDs8c3F1YXJlPiAwMDcwIDAwNzM7Ozs7TjtTUVVBUkVEIFBTOzs7OworMzNCMTtTUVVBUkUgTlM7U287MDtMOzxzcXVhcmU+IDAwNkUgMDA3Mzs7OztOO1NRVUFSRUQgTlM7Ozs7CiszM0IyO1NRVUFSRSBNVSBTO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNzM7Ozs7TjtTUVVBUkVEIE1VIFM7Ozs7CiszM0IzO1NRVUFSRSBNUztTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDczOzs7O047U1FVQVJFRCBNUzs7OzsKKzMzQjQ7U1FVQVJFIFBWO1NvOzA7TDs8c3F1YXJlPiAwMDcwIDAwNTY7Ozs7TjtTUVVBUkVEIFBWOzs7OworMzNCNTtTUVVBUkUgTlY7U287MDtMOzxzcXVhcmU+IDAwNkUgMDA1Njs7OztOO1NRVUFSRUQgTlY7Ozs7CiszM0I2O1NRVUFSRSBNVSBWO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNTY7Ozs7TjtTUVVBUkVEIE1VIFY7Ozs7CiszM0I3O1NRVUFSRSBNVjtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDU2Ozs7O047U1FVQVJFRCBNVjs7OzsKKzMzQjg7U1FVQVJFIEtWO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNTY7Ozs7TjtTUVVBUkVEIEtWOzs7OworMzNCOTtTUVVBUkUgTVYgTUVHQTtTbzswO0w7PHNxdWFyZT4gMDA0RCAwMDU2Ozs7O047U1FVQVJFRCBNViBNRUdBOzs7OworMzNCQTtTUVVBUkUgUFc7U287MDtMOzxzcXVhcmU+IDAwNzAgMDA1Nzs7OztOO1NRVUFSRUQgUFc7Ozs7CiszM0JCO1NRVUFSRSBOVztTbzswO0w7PHNxdWFyZT4gMDA2RSAwMDU3Ozs7O047U1FVQVJFRCBOVzs7OzsKKzMzQkM7U1FVQVJFIE1VIFc7U287MDtMOzxzcXVhcmU+IDAzQkMgMDA1Nzs7OztOO1NRVUFSRUQgTVUgVzs7OzsKKzMzQkQ7U1FVQVJFIE1XO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwNTc7Ozs7TjtTUVVBUkVEIE1XOzs7OworMzNCRTtTUVVBUkUgS1c7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA1Nzs7OztOO1NRVUFSRUQgS1c7Ozs7CiszM0JGO1NRVUFSRSBNVyBNRUdBO1NvOzA7TDs8c3F1YXJlPiAwMDREIDAwNTc7Ozs7TjtTUVVBUkVEIE1XIE1FR0E7Ozs7CiszM0MwO1NRVUFSRSBLIE9ITTtTbzswO0w7PHNxdWFyZT4gMDA2QiAwM0E5Ozs7O047U1FVQVJFRCBLIE9ITTs7OzsKKzMzQzE7U1FVQVJFIE0gT0hNO1NvOzA7TDs8c3F1YXJlPiAwMDREIDAzQTk7Ozs7TjtTUVVBUkVEIE0gT0hNOzs7OworMzNDMjtTUVVBUkUgQU07U287MDtMOzxzcXVhcmU+IDAwNjEgMDAyRSAwMDZEIDAwMkU7Ozs7TjtTUVVBUkVEIEFNOzs7OworMzNDMztTUVVBUkUgQlE7U287MDtMOzxzcXVhcmU+IDAwNDIgMDA3MTs7OztOO1NRVUFSRUQgQlE7Ozs7CiszM0M0O1NRVUFSRSBDQztTbzswO0w7PHNxdWFyZT4gMDA2MyAwMDYzOzs7O047U1FVQVJFRCBDQzs7OzsKKzMzQzU7U1FVQVJFIENEO1NvOzA7TDs8c3F1YXJlPiAwMDYzIDAwNjQ7Ozs7TjtTUVVBUkVEIENEOzs7OworMzNDNjtTUVVBUkUgQyBPVkVSIEtHO1NvOzA7TDs8c3F1YXJlPiAwMDQzIDIyMTUgMDA2QiAwMDY3Ozs7O047U1FVQVJFRCBDIE9WRVIgS0c7Ozs7CiszM0M3O1NRVUFSRSBDTztTbzswO0w7PHNxdWFyZT4gMDA0MyAwMDZGIDAwMkU7Ozs7TjtTUVVBUkVEIENPOzs7OworMzNDODtTUVVBUkUgREI7U287MDtMOzxzcXVhcmU+IDAwNjQgMDA0Mjs7OztOO1NRVUFSRUQgREI7Ozs7CiszM0M5O1NRVUFSRSBHWTtTbzswO0w7PHNxdWFyZT4gMDA0NyAwMDc5Ozs7O047U1FVQVJFRCBHWTs7OzsKKzMzQ0E7U1FVQVJFIEhBO1NvOzA7TDs8c3F1YXJlPiAwMDY4IDAwNjE7Ozs7TjtTUVVBUkVEIEhBOzs7OworMzNDQjtTUVVBUkUgSFA7U287MDtMOzxzcXVhcmU+IDAwNDggMDA1MDs7OztOO1NRVUFSRUQgSFA7Ozs7CiszM0NDO1NRVUFSRSBJTjtTbzswO0w7PHNxdWFyZT4gMDA2OSAwMDZFOzs7O047U1FVQVJFRCBJTjs7OzsKKzMzQ0Q7U1FVQVJFIEtLO1NvOzA7TDs8c3F1YXJlPiAwMDRCIDAwNEI7Ozs7TjtTUVVBUkVEIEtLOzs7OworMzNDRTtTUVVBUkUgS00gQ0FQSVRBTDtTbzswO0w7PHNxdWFyZT4gMDA0QiAwMDREOzs7O047U1FVQVJFRCBLTSBDQVBJVEFMOzs7OworMzNDRjtTUVVBUkUgS1Q7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA3NDs7OztOO1NRVUFSRUQgS1Q7Ozs7CiszM0QwO1NRVUFSRSBMTTtTbzswO0w7PHNxdWFyZT4gMDA2QyAwMDZEOzs7O047U1FVQVJFRCBMTTs7OzsKKzMzRDE7U1FVQVJFIExOO1NvOzA7TDs8c3F1YXJlPiAwMDZDIDAwNkU7Ozs7TjtTUVVBUkVEIExOOzs7OworMzNEMjtTUVVBUkUgTE9HO1NvOzA7TDs8c3F1YXJlPiAwMDZDIDAwNkYgMDA2Nzs7OztOO1NRVUFSRUQgTE9HOzs7OworMzNEMztTUVVBUkUgTFg7U287MDtMOzxzcXVhcmU+IDAwNkMgMDA3ODs7OztOO1NRVUFSRUQgTFg7Ozs7CiszM0Q0O1NRVUFSRSBNQiBTTUFMTDtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDYyOzs7O047U1FVQVJFRCBNQiBTTUFMTDs7OzsKKzMzRDU7U1FVQVJFIE1JTDtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDY5IDAwNkM7Ozs7TjtTUVVBUkVEIE1JTDs7OzsKKzMzRDY7U1FVQVJFIE1PTDtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDZGIDAwNkM7Ozs7TjtTUVVBUkVEIE1PTDs7OzsKKzMzRDc7U1FVQVJFIFBIO1NvOzA7TDs8c3F1YXJlPiAwMDUwIDAwNDg7Ozs7TjtTUVVBUkVEIFBIOzs7OworMzNEODtTUVVBUkUgUE07U287MDtMOzxzcXVhcmU+IDAwNzAgMDAyRSAwMDZEIDAwMkU7Ozs7TjtTUVVBUkVEIFBNOzs7OworMzNEOTtTUVVBUkUgUFBNO1NvOzA7TDs8c3F1YXJlPiAwMDUwIDAwNTAgMDA0RDs7OztOO1NRVUFSRUQgUFBNOzs7OworMzNEQTtTUVVBUkUgUFI7U287MDtMOzxzcXVhcmU+IDAwNTAgMDA1Mjs7OztOO1NRVUFSRUQgUFI7Ozs7CiszM0RCO1NRVUFSRSBTUjtTbzswO0w7PHNxdWFyZT4gMDA3MyAwMDcyOzs7O047U1FVQVJFRCBTUjs7OzsKKzMzREM7U1FVQVJFIFNWO1NvOzA7TDs8c3F1YXJlPiAwMDUzIDAwNzY7Ozs7TjtTUVVBUkVEIFNWOzs7OworMzNERDtTUVVBUkUgV0I7U287MDtMOzxzcXVhcmU+IDAwNTcgMDA2Mjs7OztOO1NRVUFSRUQgV0I7Ozs7CiszM0UwO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBPTkU7U287MDtMOzxjb21wYXQ+IDAwMzEgNjVFNTs7OztOOzs7OzsKKzMzRTE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXTztTbzswO0w7PGNvbXBhdD4gMDAzMiA2NUU1Ozs7O047Ozs7OworMzNFMjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVEhSRUU7U287MDtMOzxjb21wYXQ+IDAwMzMgNjVFNTs7OztOOzs7OzsKKzMzRTM7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIEZPVVI7U287MDtMOzxjb21wYXQ+IDAwMzQgNjVFNTs7OztOOzs7OzsKKzMzRTQ7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIEZJVkU7U287MDtMOzxjb21wYXQ+IDAwMzUgNjVFNTs7OztOOzs7OzsKKzMzRTU7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFNJWDtTbzswO0w7PGNvbXBhdD4gMDAzNiA2NUU1Ozs7O047Ozs7OworMzNFNjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgU0VWRU47U287MDtMOzxjb21wYXQ+IDAwMzcgNjVFNTs7OztOOzs7OzsKKzMzRTc7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIEVJR0hUO1NvOzA7TDs8Y29tcGF0PiAwMDM4IDY1RTU7Ozs7Tjs7Ozs7CiszM0U4O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBOSU5FO1NvOzA7TDs8Y29tcGF0PiAwMDM5IDY1RTU7Ozs7Tjs7Ozs7CiszM0U5O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBURU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMCA2NUU1Ozs7O047Ozs7OworMzNFQTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgRUxFVkVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzEgNjVFNTs7OztOOzs7OzsKKzMzRUI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRUxWRTtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMyIDY1RTU7Ozs7Tjs7Ozs7CiszM0VDO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUSElSVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMzIDY1RTU7Ozs7Tjs7Ozs7CiszM0VEO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBGT1VSVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM0IDY1RTU7Ozs7Tjs7Ozs7CiszM0VFO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBGSUZURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzUgNjVFNTs7OztOOzs7OzsKKzMzRUY7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFNJWFRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzNiA2NUU1Ozs7O047Ozs7OworMzNGMDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgU0VWRU5URUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzcgNjVFNTs7OztOOzs7OzsKKzMzRjE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIEVJR0hURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzggNjVFNTs7OztOOzs7OzsKKzMzRjI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIE5JTkVURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzkgNjVFNTs7OztOOzs7OzsKKzMzRjM7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWTtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDMwIDY1RTU7Ozs7Tjs7Ozs7CiszM0Y0O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktT05FO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzEgNjVFNTs7OztOOzs7OzsKKzMzRjU7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1UV087U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzMiA2NUU1Ozs7O047Ozs7OworMzNGNjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVFdFTlRZLVRIUkVFO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzMgNjVFNTs7OztOOzs7OzsKKzMzRjc7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1GT1VSO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzQgNjVFNTs7OztOOzs7OzsKKzMzRjg7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1GSVZFO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzUgNjVFNTs7OztOOzs7OzsKKzMzRjk7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1TSVg7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzNiA2NUU1Ozs7O047Ozs7OworMzNGQTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVFdFTlRZLVNFVkVOO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzcgNjVFNTs7OztOOzs7OzsKKzMzRkI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1FSUdIVDtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDM4IDY1RTU7Ozs7Tjs7Ozs7CiszM0ZDO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktTklORTtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDM5IDY1RTU7Ozs7Tjs7Ozs7CiszM0ZEO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUSElSVFk7U287MDtMOzxjb21wYXQ+IDAwMzMgMDAzMCA2NUU1Ozs7O047Ozs7OworMzNGRTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVEhJUlRZLU9ORTtTbzswO0w7PGNvbXBhdD4gMDAzMyAwMDMxIDY1RTU7Ozs7Tjs7Ozs7Cis0RTAwOzxDSksgSWRlb2dyYXBoLCBGaXJzdD47TG87MDtMOzs7OztOOzs7OzsKKzlGQTU7PENKSyBJZGVvZ3JhcGgsIExhc3Q+O0xvOzA7TDs7Ozs7Tjs7Ozs7CitBQzAwOzxIYW5ndWwgU3lsbGFibGUsIEZpcnN0PjtMbzswO0w7Ozs7O047Ozs7OworRDdBMzs8SGFuZ3VsIFN5bGxhYmxlLCBMYXN0PjtMbzswO0w7Ozs7O047Ozs7OworRDgwMDs8VW5hc3NpZ25lZCBIaWdoIFN1cnJvZ2F0ZSwgRmlyc3Q+O0NzOzA7TDs7Ozs7Tjs7Ozs7CitEQjdGOzxVbmFzc2lnbmVkIEhpZ2ggU3Vycm9nYXRlLCBMYXN0PjtDczswO0w7Ozs7O047Ozs7OworREI4MDs8UHJpdmF0ZSBVc2UgSGlnaCBTdXJyb2dhdGUsIEZpcnN0PjtDczswO0w7Ozs7O047Ozs7OworREJGRjs8UHJpdmF0ZSBVc2UgSGlnaCBTdXJyb2dhdGUsIExhc3Q+O0NzOzA7TDs7Ozs7Tjs7Ozs7CitEQzAwOzxMb3cgU3Vycm9nYXRlLCBGaXJzdD47Q3M7MDtMOzs7OztOOzs7OzsKK0RGRkY7PExvdyBTdXJyb2dhdGUsIExhc3Q+O0NzOzA7TDs7Ozs7Tjs7Ozs7CitFMDAwOzxQcml2YXRlIFVzZSwgRmlyc3Q+O0NvOzA7TDs7Ozs7Tjs7Ozs7CitGOEZGOzxQcml2YXRlIFVzZSwgTGFzdD47Q287MDtMOzs7OztOOzs7OzsKK0Y5MDA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MDA7TG87MDtMOzhDNDg7Ozs7Tjs7Ozs7CitGOTAxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTAxO0xvOzA7TDs2NkY0Ozs7O047Ozs7OworRjkwMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwMjtMbzswO0w7OEVDQTs7OztOOzs7OzsKK0Y5MDM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MDM7TG87MDtMOzhDQzg7Ozs7Tjs7Ozs7CitGOTA0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTA0O0xvOzA7TDs2RUQxOzs7O047Ozs7OworRjkwNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwNTtMbzswO0w7NEUzMjs7OztOOzs7OzsKK0Y5MDY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MDY7TG87MDtMOzUzRTU7Ozs7Tjs7Ozs7CitGOTA3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTA3O0xvOzA7TDs5RjlDOzs7O047Ozs7OworRjkwODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwODtMbzswO0w7OUY5Qzs7OztOOzs7OzsKK0Y5MDk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MDk7TG87MDtMOzU5NTE7Ozs7Tjs7Ozs7CitGOTBBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTBBO0xvOzA7TDs5MUQxOzs7O047Ozs7OworRjkwQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwQjtMbzswO0w7NTU4Nzs7OztOOzs7OzsKK0Y5MEM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MEM7TG87MDtMOzU5NDg7Ozs7Tjs7Ozs7CitGOTBEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTBEO0xvOzA7TDs2MUY2Ozs7O047Ozs7OworRjkwRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwRTtMbzswO0w7NzY2OTs7OztOOzs7OzsKK0Y5MEY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MEY7TG87MDtMOzdGODU7Ozs7Tjs7Ozs7CitGOTEwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTEwO0xvOzA7TDs4NjNGOzs7O047Ozs7OworRjkxMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxMTtMbzswO0w7ODdCQTs7OztOOzs7OzsKK0Y5MTI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MTI7TG87MDtMOzg4Rjg7Ozs7Tjs7Ozs7CitGOTEzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTEzO0xvOzA7TDs5MDhGOzs7O047Ozs7OworRjkxNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxNDtMbzswO0w7NkEwMjs7OztOOzs7OzsKK0Y5MTU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MTU7TG87MDtMOzZEMUI7Ozs7Tjs7Ozs7CitGOTE2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTE2O0xvOzA7TDs3MEQ5Ozs7O047Ozs7OworRjkxNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxNztMbzswO0w7NzNERTs7OztOOzs7OzsKK0Y5MTg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MTg7TG87MDtMOzg0M0Q7Ozs7Tjs7Ozs7CitGOTE5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTE5O0xvOzA7TDs5MTZBOzs7O047Ozs7OworRjkxQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxQTtMbzswO0w7OTlGMTs7OztOOzs7OzsKK0Y5MUI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MUI7TG87MDtMOzRFODI7Ozs7Tjs7Ozs7CitGOTFDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTFDO0xvOzA7TDs1Mzc1Ozs7O047Ozs7OworRjkxRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxRDtMbzswO0w7NkIwNDs7OztOOzs7OzsKK0Y5MUU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MUU7TG87MDtMOzcyMUI7Ozs7Tjs7Ozs7CitGOTFGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTFGO0xvOzA7TDs4NjJEOzs7O047Ozs7OworRjkyMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyMDtMbzswO0w7OUUxRTs7OztOOzs7OzsKK0Y5MjE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MjE7TG87MDtMOzVENTA7Ozs7Tjs7Ozs7CitGOTIyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTIyO0xvOzA7TDs2RkVCOzs7O047Ozs7OworRjkyMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyMztMbzswO0w7ODVDRDs7OztOOzs7OzsKK0Y5MjQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MjQ7TG87MDtMOzg5NjQ7Ozs7Tjs7Ozs7CitGOTI1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTI1O0xvOzA7TDs2MkM5Ozs7O047Ozs7OworRjkyNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyNjtMbzswO0w7ODFEODs7OztOOzs7OzsKK0Y5Mjc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Mjc7TG87MDtMOzg4MUY7Ozs7Tjs7Ozs7CitGOTI4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTI4O0xvOzA7TDs1RUNBOzs7O047Ozs7OworRjkyOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyOTtMbzswO0w7NjcxNzs7OztOOzs7OzsKK0Y5MkE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MkE7TG87MDtMOzZENkE7Ozs7Tjs7Ozs7CitGOTJCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTJCO0xvOzA7TDs3MkZDOzs7O047Ozs7OworRjkyQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyQztMbzswO0w7OTBDRTs7OztOOzs7OzsKK0Y5MkQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MkQ7TG87MDtMOzRGODY7Ozs7Tjs7Ozs7CitGOTJFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTJFO0xvOzA7TDs1MUI3Ozs7O047Ozs7OworRjkyRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyRjtMbzswO0w7NTJERTs7OztOOzs7OzsKK0Y5MzA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MzA7TG87MDtMOzY0QzQ7Ozs7Tjs7Ozs7CitGOTMxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTMxO0xvOzA7TDs2QUQzOzs7O047Ozs7OworRjkzMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzMjtMbzswO0w7NzIxMDs7OztOOzs7OzsKK0Y5MzM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MzM7TG87MDtMOzc2RTc7Ozs7Tjs7Ozs7CitGOTM0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTM0O0xvOzA7TDs4MDAxOzs7O047Ozs7OworRjkzNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzNTtMbzswO0w7ODYwNjs7OztOOzs7OzsKK0Y5MzY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MzY7TG87MDtMOzg2NUM7Ozs7Tjs7Ozs7CitGOTM3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTM3O0xvOzA7TDs4REVGOzs7O047Ozs7OworRjkzODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzODtMbzswO0w7OTczMjs7OztOOzs7OzsKK0Y5Mzk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Mzk7TG87MDtMOzlCNkY7Ozs7Tjs7Ozs7CitGOTNBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTNBO0xvOzA7TDs5REZBOzs7O047Ozs7OworRjkzQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzQjtMbzswO0w7Nzg4Qzs7OztOOzs7OzsKK0Y5M0M7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5M0M7TG87MDtMOzc5N0Y7Ozs7Tjs7Ozs7CitGOTNEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTNEO0xvOzA7TDs3REEwOzs7O047Ozs7OworRjkzRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzRTtMbzswO0w7ODNDOTs7OztOOzs7OzsKK0Y5M0Y7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5M0Y7TG87MDtMOzkzMDQ7Ozs7Tjs7Ozs7CitGOTQwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTQwO0xvOzA7TDs5RTdGOzs7O047Ozs7OworRjk0MTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0MTtMbzswO0w7OEFENjs7OztOOzs7OzsKK0Y5NDI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NDI7TG87MDtMOzU4REY7Ozs7Tjs7Ozs7CitGOTQzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTQzO0xvOzA7TDs1RjA0Ozs7O047Ozs7OworRjk0NDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0NDtMbzswO0w7N0M2MDs7OztOOzs7OzsKK0Y5NDU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NDU7TG87MDtMOzgwN0U7Ozs7Tjs7Ozs7CitGOTQ2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTQ2O0xvOzA7TDs3MjYyOzs7O047Ozs7OworRjk0NztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0NztMbzswO0w7NzhDQTs7OztOOzs7OzsKK0Y5NDg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NDg7TG87MDtMOzhDQzI7Ozs7Tjs7Ozs7CitGOTQ5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTQ5O0xvOzA7TDs5NkY3Ozs7O047Ozs7OworRjk0QTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0QTtMbzswO0w7NThEODs7OztOOzs7OzsKK0Y5NEI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NEI7TG87MDtMOzVDNjI7Ozs7Tjs7Ozs7CitGOTRDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTRDO0xvOzA7TDs2QTEzOzs7O047Ozs7OworRjk0RDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0RDtMbzswO0w7NkREQTs7OztOOzs7OzsKK0Y5NEU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NEU7TG87MDtMOzZGMEY7Ozs7Tjs7Ozs7CitGOTRGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTRGO0xvOzA7TDs3RDJGOzs7O047Ozs7OworRjk1MDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1MDtMbzswO0w7N0UzNzs7OztOOzs7OzsKK0Y5NTE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NTE7TG87MDtMOzk2RkI7Ozs7Tjs7Ozs7CitGOTUyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTUyO0xvOzA7TDs1MkQyOzs7O047Ozs7OworRjk1MztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1MztMbzswO0w7ODA4Qjs7OztOOzs7OzsKK0Y5NTQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NTQ7TG87MDtMOzUxREM7Ozs7Tjs7Ozs7CitGOTU1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTU1O0xvOzA7TDs1MUNDOzs7O047Ozs7OworRjk1NjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1NjtMbzswO0w7N0ExQzs7OztOOzs7OzsKK0Y5NTc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NTc7TG87MDtMOzdEQkU7Ozs7Tjs7Ozs7CitGOTU4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTU4O0xvOzA7TDs4M0YxOzs7O047Ozs7OworRjk1OTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1OTtMbzswO0w7OTY3NTs7OztOOzs7OzsKK0Y5NUE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NUE7TG87MDtMOzhCODA7Ozs7Tjs7Ozs7CitGOTVCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTVCO0xvOzA7TDs2MkNGOzs7O047Ozs7OworRjk1QztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1QztMbzswO0w7NkEwMjs7OztOOzs7OzsKK0Y5NUQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NUQ7TG87MDtMOzhBRkU7Ozs7Tjs7Ozs7CitGOTVFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTVFO0xvOzA7TDs0RTM5Ozs7O047Ozs7OworRjk1RjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1RjtMbzswO0w7NUJFNzs7OztOOzs7OzsKK0Y5NjA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NjA7TG87MDtMOzYwMTI7Ozs7Tjs7Ozs7CitGOTYxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTYxO0xvOzA7TDs3Mzg3Ozs7O047Ozs7OworRjk2MjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2MjtMbzswO0w7NzU3MDs7OztOOzs7OzsKK0Y5NjM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NjM7TG87MDtMOzUzMTc7Ozs7Tjs7Ozs7CitGOTY0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTY0O0xvOzA7TDs3OEZCOzs7O047Ozs7OworRjk2NTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2NTtMbzswO0w7NEZCRjs7OztOOzs7OzsKK0Y5NjY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NjY7TG87MDtMOzVGQTk7Ozs7Tjs7Ozs7CitGOTY3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTY3O0xvOzA7TDs0RTBEOzs7O047Ozs7OworRjk2ODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2ODtMbzswO0w7NkNDQzs7OztOOzs7OzsKK0Y5Njk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Njk7TG87MDtMOzY1Nzg7Ozs7Tjs7Ozs7CitGOTZBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTZBO0xvOzA7TDs3RDIyOzs7O047Ozs7OworRjk2QjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2QjtMbzswO0w7NTNDMzs7OztOOzs7OzsKK0Y5NkM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NkM7TG87MDtMOzU4NUU7Ozs7Tjs7Ozs7CitGOTZEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTZEO0xvOzA7TDs3NzAxOzs7O047Ozs7OworRjk2RTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2RTtMbzswO0w7ODQ0OTs7OztOOzs7OzsKK0Y5NkY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NkY7TG87MDtMOzhBQUE7Ozs7Tjs7Ozs7CitGOTcwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTcwO0xvOzA7TDs2QkJBOzs7O047Ozs7OworRjk3MTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3MTtMbzswO0w7OEZCMDs7OztOOzs7OzsKK0Y5NzI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NzI7TG87MDtMOzZDODg7Ozs7Tjs7Ozs7CitGOTczO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTczO0xvOzA7TDs2MkZFOzs7O047Ozs7OworRjk3NDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3NDtMbzswO0w7ODJFNTs7OztOOzs7OzsKK0Y5NzU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NzU7TG87MDtMOzYzQTA7Ozs7Tjs7Ozs7CitGOTc2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTc2O0xvOzA7TDs3NTY1Ozs7O047Ozs7OworRjk3NztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3NztMbzswO0w7NEVBRTs7OztOOzs7OzsKK0Y5Nzg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Nzg7TG87MDtMOzUxNjk7Ozs7Tjs7Ozs7CitGOTc5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTc5O0xvOzA7TDs1MUM5Ozs7O047Ozs7OworRjk3QTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3QTtMbzswO0w7Njg4MTs7OztOOzs7OzsKK0Y5N0I7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5N0I7TG87MDtMOzdDRTc7Ozs7Tjs7Ozs7CitGOTdDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTdDO0xvOzA7TDs4MjZGOzs7O047Ozs7OworRjk3RDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3RDtMbzswO0w7OEFEMjs7OztOOzs7OzsKK0Y5N0U7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5N0U7TG87MDtMOzkxQ0Y7Ozs7Tjs7Ozs7CitGOTdGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTdGO0xvOzA7TDs1MkY1Ozs7O047Ozs7OworRjk4MDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4MDtMbzswO0w7NTQ0Mjs7OztOOzs7OzsKK0Y5ODE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5ODE7TG87MDtMOzU5NzM7Ozs7Tjs7Ozs7CitGOTgyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTgyO0xvOzA7TDs1RUVDOzs7O047Ozs7OworRjk4MztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4MztMbzswO0w7NjVDNTs7OztOOzs7OzsKK0Y5ODQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5ODQ7TG87MDtMOzZGRkU7Ozs7Tjs7Ozs7CitGOTg1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTg1O0xvOzA7TDs3OTJBOzs7O047Ozs7OworRjk4NjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4NjtMbzswO0w7OTVBRDs7OztOOzs7OzsKK0Y5ODc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5ODc7TG87MDtMOzlBNkE7Ozs7Tjs7Ozs7CitGOTg4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTg4O0xvOzA7TDs5RTk3Ozs7O047Ozs7OworRjk4OTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4OTtMbzswO0w7OUVDRTs7OztOOzs7OzsKK0Y5OEE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OEE7TG87MDtMOzUyOUI7Ozs7Tjs7Ozs7CitGOThCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOThCO0xvOzA7TDs2NkM2Ozs7O047Ozs7OworRjk4QztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4QztMbzswO0w7NkI3Nzs7OztOOzs7OzsKK0Y5OEQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OEQ7TG87MDtMOzhGNjI7Ozs7Tjs7Ozs7CitGOThFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOThFO0xvOzA7TDs1RTc0Ozs7O047Ozs7OworRjk4RjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4RjtMbzswO0w7NjE5MDs7OztOOzs7OzsKK0Y5OTA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OTA7TG87MDtMOzYyMDA7Ozs7Tjs7Ozs7CitGOTkxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTkxO0xvOzA7TDs2NDlBOzs7O047Ozs7OworRjk5MjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5MjtMbzswO0w7NkYyMzs7OztOOzs7OzsKK0Y5OTM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OTM7TG87MDtMOzcxNDk7Ozs7Tjs7Ozs7CitGOTk0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTk0O0xvOzA7TDs3NDg5Ozs7O047Ozs7OworRjk5NTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5NTtMbzswO0w7NzlDQTs7OztOOzs7OzsKK0Y5OTY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OTY7TG87MDtMOzdERjQ7Ozs7Tjs7Ozs7CitGOTk3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTk3O0xvOzA7TDs4MDZGOzs7O047Ozs7OworRjk5ODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5ODtMbzswO0w7OEYyNjs7OztOOzs7OzsKK0Y5OTk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OTk7TG87MDtMOzg0RUU7Ozs7Tjs7Ozs7CitGOTlBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTlBO0xvOzA7TDs5MDIzOzs7O047Ozs7OworRjk5QjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5QjtMbzswO0w7OTM0QTs7OztOOzs7OzsKK0Y5OUM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OUM7TG87MDtMOzUyMTc7Ozs7Tjs7Ozs7CitGOTlEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTlEO0xvOzA7TDs1MkEzOzs7O047Ozs7OworRjk5RTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5RTtMbzswO0w7NTRCRDs7OztOOzs7OzsKK0Y5OUY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OUY7TG87MDtMOzcwQzg7Ozs7Tjs7Ozs7CitGOUEwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUEwO0xvOzA7TDs4OEMyOzs7O047Ozs7OworRjlBMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBMTtMbzswO0w7OEFBQTs7OztOOzs7OzsKK0Y5QTI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QTI7TG87MDtMOzVFQzk7Ozs7Tjs7Ozs7CitGOUEzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUEzO0xvOzA7TDs1RkY1Ozs7O047Ozs7OworRjlBNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBNDtMbzswO0w7NjM3Qjs7OztOOzs7OzsKK0Y5QTU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QTU7TG87MDtMOzZCQUU7Ozs7Tjs7Ozs7CitGOUE2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUE2O0xvOzA7TDs3QzNFOzs7O047Ozs7OworRjlBNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBNztMbzswO0w7NzM3NTs7OztOOzs7OzsKK0Y5QTg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QTg7TG87MDtMOzRFRTQ7Ozs7Tjs7Ozs7CitGOUE5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUE5O0xvOzA7TDs1NkY5Ozs7O047Ozs7OworRjlBQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBQTtMbzswO0w7NUJFNzs7OztOOzs7OzsKK0Y5QUI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QUI7TG87MDtMOzVEQkE7Ozs7Tjs7Ozs7CitGOUFDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUFDO0xvOzA7TDs2MDFDOzs7O047Ozs7OworRjlBRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBRDtMbzswO0w7NzNCMjs7OztOOzs7OzsKK0Y5QUU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QUU7TG87MDtMOzc0Njk7Ozs7Tjs7Ozs7CitGOUFGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUFGO0xvOzA7TDs3RjlBOzs7O047Ozs7OworRjlCMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCMDtMbzswO0w7ODA0Njs7OztOOzs7OzsKK0Y5QjE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QjE7TG87MDtMOzkyMzQ7Ozs7Tjs7Ozs7CitGOUIyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUIyO0xvOzA7TDs5NkY2Ozs7O047Ozs7OworRjlCMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCMztMbzswO0w7OTc0ODs7OztOOzs7OzsKK0Y5QjQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QjQ7TG87MDtMOzk4MTg7Ozs7Tjs7Ozs7CitGOUI1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUI1O0xvOzA7TDs0RjhCOzs7O047Ozs7OworRjlCNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCNjtMbzswO0w7NzlBRTs7OztOOzs7OzsKK0Y5Qjc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Qjc7TG87MDtMOzkxQjQ7Ozs7Tjs7Ozs7CitGOUI4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUI4O0xvOzA7TDs5NkI4Ozs7O047Ozs7OworRjlCOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCOTtMbzswO0w7NjBFMTs7OztOOzs7OzsKK0Y5QkE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QkE7TG87MDtMOzRFODY7Ozs7Tjs7Ozs7CitGOUJCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUJCO0xvOzA7TDs1MERBOzs7O047Ozs7OworRjlCQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCQztMbzswO0w7NUJFRTs7OztOOzs7OzsKK0Y5QkQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QkQ7TG87MDtMOzVDM0Y7Ozs7Tjs7Ozs7CitGOUJFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUJFO0xvOzA7TDs2NTk5Ozs7O047Ozs7OworRjlCRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCRjtMbzswO0w7NkEwMjs7OztOOzs7OzsKK0Y5QzA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QzA7TG87MDtMOzcxQ0U7Ozs7Tjs7Ozs7CitGOUMxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUMxO0xvOzA7TDs3NjQyOzs7O047Ozs7OworRjlDMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDMjtMbzswO0w7ODRGQzs7OztOOzs7OzsKK0Y5QzM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QzM7TG87MDtMOzkwN0M7Ozs7Tjs7Ozs7CitGOUM0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUM0O0xvOzA7TDs5RjhEOzs7O047Ozs7OworRjlDNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDNTtMbzswO0w7NjY4ODs7OztOOzs7OzsKK0Y5QzY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QzY7TG87MDtMOzk2MkU7Ozs7Tjs7Ozs7CitGOUM3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUM3O0xvOzA7TDs1Mjg5Ozs7O047Ozs7OworRjlDODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDODtMbzswO0w7Njc3Qjs7OztOOzs7OzsKK0Y5Qzk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Qzk7TG87MDtMOzY3RjM7Ozs7Tjs7Ozs7CitGOUNBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUNBO0xvOzA7TDs2RDQxOzs7O047Ozs7OworRjlDQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDQjtMbzswO0w7NkU5Qzs7OztOOzs7OzsKK0Y5Q0M7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Q0M7TG87MDtMOzc0MDk7Ozs7Tjs7Ozs7CitGOUNEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUNEO0xvOzA7TDs3NTU5Ozs7O047Ozs7OworRjlDRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDRTtMbzswO0w7Nzg2Qjs7OztOOzs7OzsKK0Y5Q0Y7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Q0Y7TG87MDtMOzdEMTA7Ozs7Tjs7Ozs7CitGOUQwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUQwO0xvOzA7TDs5ODVFOzs7O047Ozs7OworRjlEMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEMTtMbzswO0w7NTE2RDs7OztOOzs7OzsKK0Y5RDI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RDI7TG87MDtMOzYyMkU7Ozs7Tjs7Ozs7CitGOUQzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUQzO0xvOzA7TDs5Njc4Ozs7O047Ozs7OworRjlENDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlENDtMbzswO0w7NTAyQjs7OztOOzs7OzsKK0Y5RDU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RDU7TG87MDtMOzVEMTk7Ozs7Tjs7Ozs7CitGOUQ2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUQ2O0xvOzA7TDs2REVBOzs7O047Ozs7OworRjlENztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlENztMbzswO0w7OEYyQTs7OztOOzs7OzsKK0Y5RDg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RDg7TG87MDtMOzVGOEI7Ozs7Tjs7Ozs7CitGOUQ5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUQ5O0xvOzA7TDs2MTQ0Ozs7O047Ozs7OworRjlEQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEQTtMbzswO0w7NjgxNzs7OztOOzs7OzsKK0Y5REI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5REI7TG87MDtMOzczODc7Ozs7Tjs7Ozs7CitGOURDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOURDO0xvOzA7TDs5Njg2Ozs7O047Ozs7OworRjlERDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlERDtMbzswO0w7NTIyOTs7OztOOzs7OzsKK0Y5REU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5REU7TG87MDtMOzU0MEY7Ozs7Tjs7Ozs7CitGOURGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOURGO0xvOzA7TDs1QzY1Ozs7O047Ozs7OworRjlFMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFMDtMbzswO0w7NjYxMzs7OztOOzs7OzsKK0Y5RTE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RTE7TG87MDtMOzY3NEU7Ozs7Tjs7Ozs7CitGOUUyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUUyO0xvOzA7TDs2OEE4Ozs7O047Ozs7OworRjlFMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFMztMbzswO0w7NkNFNTs7OztOOzs7OzsKK0Y5RTQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RTQ7TG87MDtMOzc0MDY7Ozs7Tjs7Ozs7CitGOUU1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUU1O0xvOzA7TDs3NUUyOzs7O047Ozs7OworRjlFNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFNjtMbzswO0w7N0Y3OTs7OztOOzs7OzsKK0Y5RTc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RTc7TG87MDtMOzg4Q0Y7Ozs7Tjs7Ozs7CitGOUU4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUU4O0xvOzA7TDs4OEUxOzs7O047Ozs7OworRjlFOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFOTtMbzswO0w7OTFDQzs7OztOOzs7OzsKK0Y5RUE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RUE7TG87MDtMOzk2RTI7Ozs7Tjs7Ozs7CitGOUVCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUVCO0xvOzA7TDs1MzNGOzs7O047Ozs7OworRjlFQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFQztMbzswO0w7NkVCQTs7OztOOzs7OzsKK0Y5RUQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RUQ7TG87MDtMOzU0MUQ7Ozs7Tjs7Ozs7CitGOUVFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUVFO0xvOzA7TDs3MUQwOzs7O047Ozs7OworRjlFRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFRjtMbzswO0w7NzQ5ODs7OztOOzs7OzsKK0Y5RjA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RjA7TG87MDtMOzg1RkE7Ozs7Tjs7Ozs7CitGOUYxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUYxO0xvOzA7TDs5NkEzOzs7O047Ozs7OworRjlGMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGMjtMbzswO0w7OUM1Nzs7OztOOzs7OzsKK0Y5RjM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RjM7TG87MDtMOzlFOUY7Ozs7Tjs7Ozs7CitGOUY0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUY0O0xvOzA7TDs2Nzk3Ozs7O047Ozs7OworRjlGNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGNTtMbzswO0w7NkRDQjs7OztOOzs7OzsKK0Y5RjY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RjY7TG87MDtMOzgxRTg7Ozs7Tjs7Ozs7CitGOUY3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUY3O0xvOzA7TDs3QUNCOzs7O047Ozs7OworRjlGODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGODtMbzswO0w7N0IyMDs7OztOOzs7OzsKK0Y5Rjk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Rjk7TG87MDtMOzdDOTI7Ozs7Tjs7Ozs7CitGOUZBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUZBO0xvOzA7TDs3MkMwOzs7O047Ozs7OworRjlGQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGQjtMbzswO0w7NzA5OTs7OztOOzs7OzsKK0Y5RkM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RkM7TG87MDtMOzhCNTg7Ozs7Tjs7Ozs7CitGOUZEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUZEO0xvOzA7TDs0RUMwOzs7O047Ozs7OworRjlGRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGRTtMbzswO0w7ODMzNjs7OztOOzs7OzsKK0Y5RkY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RkY7TG87MDtMOzUyM0E7Ozs7Tjs7Ozs7CitGQTAwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTAwO0xvOzA7TDs1MjA3Ozs7O047Ozs7OworRkEwMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwMTtMbzswO0w7NUVBNjs7OztOOzs7OzsKK0ZBMDI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMDI7TG87MDtMOzYyRDM7Ozs7Tjs7Ozs7CitGQTAzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTAzO0xvOzA7TDs3Q0Q2Ozs7O047Ozs7OworRkEwNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwNDtMbzswO0w7NUI4NTs7OztOOzs7OzsKK0ZBMDU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMDU7TG87MDtMOzZEMUU7Ozs7Tjs7Ozs7CitGQTA2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTA2O0xvOzA7TDs2NkI0Ozs7O047Ozs7OworRkEwNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwNztMbzswO0w7OEYzQjs7OztOOzs7OzsKK0ZBMDg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMDg7TG87MDtMOzg4NEM7Ozs7Tjs7Ozs7CitGQTA5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTA5O0xvOzA7TDs5NjREOzs7O047Ozs7OworRkEwQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwQTtMbzswO0w7ODk4Qjs7OztOOzs7OzsKK0ZBMEI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMEI7TG87MDtMOzVFRDM7Ozs7Tjs7Ozs7CitGQTBDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTBDO0xvOzA7TDs1MTQwOzs7O047Ozs7OworRkEwRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwRDtMbzswO0w7NTVDMDs7OztOOzs7OzsKK0ZBMEU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMEU7TG87MDtMOzs7OztOOzs7OzsKK0ZBMEY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMEY7TG87MDtMOzs7OztOOzs7OzsKK0ZBMTA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMTA7TG87MDtMOzU4NUE7Ozs7Tjs7Ozs7CitGQTExO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTExO0xvOzA7TDs7Ozs7Tjs7Ozs7CitGQTEyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTEyO0xvOzA7TDs2Njc0Ozs7O047Ozs7OworRkExMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExMztMbzswO0w7Ozs7O047Ozs7OworRkExNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExNDtMbzswO0w7Ozs7O047Ozs7OworRkExNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExNTtMbzswO0w7NTFERTs7OztOOzs7OzsKK0ZBMTY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMTY7TG87MDtMOzczMkE7Ozs7Tjs7Ozs7CitGQTE3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTE3O0xvOzA7TDs3NkNBOzs7O047Ozs7OworRkExODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExODtMbzswO0w7NzkzQzs7OztOOzs7OzsKK0ZBMTk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMTk7TG87MDtMOzc5NUU7Ozs7Tjs7Ozs7CitGQTFBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTFBO0xvOzA7TDs3OTY1Ozs7O047Ozs7OworRkExQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExQjtMbzswO0w7Nzk4Rjs7OztOOzs7OzsKK0ZBMUM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMUM7TG87MDtMOzk3NTY7Ozs7Tjs7Ozs7CitGQTFEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTFEO0xvOzA7TDs3Q0JFOzs7O047Ozs7OworRkExRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExRTtMbzswO0w7N0ZCRDs7OztOOzs7OzsKK0ZBMUY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMUY7TG87MDtMOzs7OztOOzs7OzsKK0ZBMjA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMjA7TG87MDtMOzg2MTI7Ozs7Tjs7Ozs7CitGQTIxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTIxO0xvOzA7TDs7Ozs7Tjs7Ozs7CitGQTIyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTIyO0xvOzA7TDs4QUY4Ozs7O047Ozs7OworRkEyMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyMztMbzswO0w7Ozs7O047Ozs7OworRkEyNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyNDtMbzswO0w7Ozs7O047Ozs7OworRkEyNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyNTtMbzswO0w7OTAzODs7OztOOzs7OzsKK0ZBMjY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMjY7TG87MDtMOzkwRkQ7Ozs7Tjs7Ozs7CitGQTI3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTI3O0xvOzA7TDs7Ozs7Tjs7Ozs7CitGQTI4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTI4O0xvOzA7TDs7Ozs7Tjs7Ozs7CitGQTI5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTI5O0xvOzA7TDs7Ozs7Tjs7Ozs7CitGQTJBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTJBO0xvOzA7TDs5OEVGOzs7O047Ozs7OworRkEyQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyQjtMbzswO0w7OThGQzs7OztOOzs7OzsKK0ZBMkM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMkM7TG87MDtMOzk5Mjg7Ozs7Tjs7Ozs7CitGQTJEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTJEO0xvOzA7TDs5REI0Ozs7O047Ozs7OworRkIwMDtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGRjtMbDswO0w7PGNvbXBhdD4gMDA2NiAwMDY2Ozs7O047Ozs7OworRkIwMTtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGSTtMbDswO0w7PGNvbXBhdD4gMDA2NiAwMDY5Ozs7O047Ozs7OworRkIwMjtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGTDtMbDswO0w7PGNvbXBhdD4gMDA2NiAwMDZDOzs7O047Ozs7OworRkIwMztMQVRJTiBTTUFMTCBMSUdBVFVSRSBGRkk7TGw7MDtMOzxjb21wYXQ+IDAwNjYgMDA2NiAwMDY5Ozs7O047Ozs7OworRkIwNDtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGRkw7TGw7MDtMOzxjb21wYXQ+IDAwNjYgMDA2NiAwMDZDOzs7O047Ozs7OworRkIwNTtMQVRJTiBTTUFMTCBMSUdBVFVSRSBMT05HIFMgVDtMbDswO0w7PGNvbXBhdD4gMDE3RiAwMDc0Ozs7O047Ozs7OworRkIwNjtMQVRJTiBTTUFMTCBMSUdBVFVSRSBTVDtMbDswO0w7PGNvbXBhdD4gMDA3MyAwMDc0Ozs7O047Ozs7OworRkIxMztBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBNRU4gTk9XO0xsOzA7TDs8Y29tcGF0PiAwNTc0IDA1NzY7Ozs7Tjs7Ozs7CitGQjE0O0FSTUVOSUFOIFNNQUxMIExJR0FUVVJFIE1FTiBFQ0g7TGw7MDtMOzxjb21wYXQ+IDA1NzQgMDU2NTs7OztOOzs7OzsKK0ZCMTU7QVJNRU5JQU4gU01BTEwgTElHQVRVUkUgTUVOIElOSTtMbDswO0w7PGNvbXBhdD4gMDU3NCAwNTZCOzs7O047Ozs7OworRkIxNjtBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBWRVcgTk9XO0xsOzA7TDs8Y29tcGF0PiAwNTdFIDA1NzY7Ozs7Tjs7Ozs7CitGQjE3O0FSTUVOSUFOIFNNQUxMIExJR0FUVVJFIE1FTiBYRUg7TGw7MDtMOzxjb21wYXQ+IDA1NzQgMDU2RDs7OztOOzs7OzsKK0ZCMUU7SEVCUkVXIFBPSU5UIEpVREVPLVNQQU5JU0ggVkFSSUtBO01uOzI2O09OOzs7OztOO0hFQlJFVyBQT0lOVCBWQVJJS0E7Ozs7CitGQjFGO0hFQlJFVyBMSUdBVFVSRSBZSURESVNIIFlPRCBZT0QgUEFUQUg7TG87MDtSOzA1RjIgMDVCNzs7OztOOzs7OzsKK0ZCMjA7SEVCUkVXIExFVFRFUiBBTFRFUk5BVElWRSBBWUlOO0xvOzA7Ujs8Zm9udD4gMDVFMjs7OztOOzs7OzsKK0ZCMjE7SEVCUkVXIExFVFRFUiBXSURFIEFMRUY7TG87MDtSOzxmb250PiAwNUQwOzs7O047Ozs7OworRkIyMjtIRUJSRVcgTEVUVEVSIFdJREUgREFMRVQ7TG87MDtSOzxmb250PiAwNUQzOzs7O047Ozs7OworRkIyMztIRUJSRVcgTEVUVEVSIFdJREUgSEU7TG87MDtSOzxmb250PiAwNUQ0Ozs7O047Ozs7OworRkIyNDtIRUJSRVcgTEVUVEVSIFdJREUgS0FGO0xvOzA7Ujs8Zm9udD4gMDVEQjs7OztOOzs7OzsKK0ZCMjU7SEVCUkVXIExFVFRFUiBXSURFIExBTUVEO0xvOzA7Ujs8Zm9udD4gMDVEQzs7OztOOzs7OzsKK0ZCMjY7SEVCUkVXIExFVFRFUiBXSURFIEZJTkFMIE1FTTtMbzswO1I7PGZvbnQ+IDA1REQ7Ozs7Tjs7Ozs7CitGQjI3O0hFQlJFVyBMRVRURVIgV0lERSBSRVNIO0xvOzA7Ujs8Zm9udD4gMDVFODs7OztOOzs7OzsKK0ZCMjg7SEVCUkVXIExFVFRFUiBXSURFIFRBVjtMbzswO1I7PGZvbnQ+IDA1RUE7Ozs7Tjs7Ozs7CitGQjI5O0hFQlJFVyBMRVRURVIgQUxURVJOQVRJVkUgUExVUyBTSUdOO1NtOzA7RVQ7PGZvbnQ+IDAwMkI7Ozs7Tjs7Ozs7CitGQjJBO0hFQlJFVyBMRVRURVIgU0hJTiBXSVRIIFNISU4gRE9UO0xvOzA7UjswNUU5IDA1QzE7Ozs7Tjs7Ozs7CitGQjJCO0hFQlJFVyBMRVRURVIgU0hJTiBXSVRIIFNJTiBET1Q7TG87MDtSOzA1RTkgMDVDMjs7OztOOzs7OzsKK0ZCMkM7SEVCUkVXIExFVFRFUiBTSElOIFdJVEggREFHRVNIIEFORCBTSElOIERPVDtMbzswO1I7RkI0OSAwNUMxOzs7O047Ozs7OworRkIyRDtIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBEQUdFU0ggQU5EIFNJTiBET1Q7TG87MDtSO0ZCNDkgMDVDMjs7OztOOzs7OzsKK0ZCMkU7SEVCUkVXIExFVFRFUiBBTEVGIFdJVEggUEFUQUg7TG87MDtSOzA1RDAgMDVCNzs7OztOOzs7OzsKK0ZCMkY7SEVCUkVXIExFVFRFUiBBTEVGIFdJVEggUUFNQVRTO0xvOzA7UjswNUQwIDA1Qjg7Ozs7Tjs7Ozs7CitGQjMwO0hFQlJFVyBMRVRURVIgQUxFRiBXSVRIIE1BUElRO0xvOzA7UjswNUQwIDA1QkM7Ozs7Tjs7Ozs7CitGQjMxO0hFQlJFVyBMRVRURVIgQkVUIFdJVEggREFHRVNIO0xvOzA7UjswNUQxIDA1QkM7Ozs7Tjs7Ozs7CitGQjMyO0hFQlJFVyBMRVRURVIgR0lNRUwgV0lUSCBEQUdFU0g7TG87MDtSOzA1RDIgMDVCQzs7OztOOzs7OzsKK0ZCMzM7SEVCUkVXIExFVFRFUiBEQUxFVCBXSVRIIERBR0VTSDtMbzswO1I7MDVEMyAwNUJDOzs7O047Ozs7OworRkIzNDtIRUJSRVcgTEVUVEVSIEhFIFdJVEggTUFQSVE7TG87MDtSOzA1RDQgMDVCQzs7OztOOzs7OzsKK0ZCMzU7SEVCUkVXIExFVFRFUiBWQVYgV0lUSCBEQUdFU0g7TG87MDtSOzA1RDUgMDVCQzs7OztOOzs7OzsKK0ZCMzY7SEVCUkVXIExFVFRFUiBaQVlJTiBXSVRIIERBR0VTSDtMbzswO1I7MDVENiAwNUJDOzs7O047Ozs7OworRkIzODtIRUJSRVcgTEVUVEVSIFRFVCBXSVRIIERBR0VTSDtMbzswO1I7MDVEOCAwNUJDOzs7O047Ozs7OworRkIzOTtIRUJSRVcgTEVUVEVSIFlPRCBXSVRIIERBR0VTSDtMbzswO1I7MDVEOSAwNUJDOzs7O047Ozs7OworRkIzQTtIRUJSRVcgTEVUVEVSIEZJTkFMIEtBRiBXSVRIIERBR0VTSDtMbzswO1I7MDVEQSAwNUJDOzs7O047Ozs7OworRkIzQjtIRUJSRVcgTEVUVEVSIEtBRiBXSVRIIERBR0VTSDtMbzswO1I7MDVEQiAwNUJDOzs7O047Ozs7OworRkIzQztIRUJSRVcgTEVUVEVSIExBTUVEIFdJVEggREFHRVNIO0xvOzA7UjswNURDIDA1QkM7Ozs7Tjs7Ozs7CitGQjNFO0hFQlJFVyBMRVRURVIgTUVNIFdJVEggREFHRVNIO0xvOzA7UjswNURFIDA1QkM7Ozs7Tjs7Ozs7CitGQjQwO0hFQlJFVyBMRVRURVIgTlVOIFdJVEggREFHRVNIO0xvOzA7UjswNUUwIDA1QkM7Ozs7Tjs7Ozs7CitGQjQxO0hFQlJFVyBMRVRURVIgU0FNRUtIIFdJVEggREFHRVNIO0xvOzA7UjswNUUxIDA1QkM7Ozs7Tjs7Ozs7CitGQjQzO0hFQlJFVyBMRVRURVIgRklOQUwgUEUgV0lUSCBEQUdFU0g7TG87MDtSOzA1RTMgMDVCQzs7OztOOzs7OzsKK0ZCNDQ7SEVCUkVXIExFVFRFUiBQRSBXSVRIIERBR0VTSDtMbzswO1I7MDVFNCAwNUJDOzs7O047Ozs7OworRkI0NjtIRUJSRVcgTEVUVEVSIFRTQURJIFdJVEggREFHRVNIO0xvOzA7UjswNUU2IDA1QkM7Ozs7Tjs7Ozs7CitGQjQ3O0hFQlJFVyBMRVRURVIgUU9GIFdJVEggREFHRVNIO0xvOzA7UjswNUU3IDA1QkM7Ozs7Tjs7Ozs7CitGQjQ4O0hFQlJFVyBMRVRURVIgUkVTSCBXSVRIIERBR0VTSDtMbzswO1I7MDVFOCAwNUJDOzs7O047Ozs7OworRkI0OTtIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBEQUdFU0g7TG87MDtSOzA1RTkgMDVCQzs7OztOOzs7OzsKK0ZCNEE7SEVCUkVXIExFVFRFUiBUQVYgV0lUSCBEQUdFU0g7TG87MDtSOzA1RUEgMDVCQzs7OztOOzs7OzsKK0ZCNEI7SEVCUkVXIExFVFRFUiBWQVYgV0lUSCBIT0xBTTtMbzswO1I7MDVENSAwNUI5Ozs7O047Ozs7OworRkI0QztIRUJSRVcgTEVUVEVSIEJFVCBXSVRIIFJBRkU7TG87MDtSOzA1RDEgMDVCRjs7OztOOzs7OzsKK0ZCNEQ7SEVCUkVXIExFVFRFUiBLQUYgV0lUSCBSQUZFO0xvOzA7UjswNURCIDA1QkY7Ozs7Tjs7Ozs7CitGQjRFO0hFQlJFVyBMRVRURVIgUEUgV0lUSCBSQUZFO0xvOzA7UjswNUU0IDA1QkY7Ozs7Tjs7Ozs7CitGQjRGO0hFQlJFVyBMSUdBVFVSRSBBTEVGIExBTUVEO0xvOzA7Ujs8Y29tcGF0PiAwNUQwIDA1REM7Ozs7Tjs7Ozs7CitGQjUwO0FSQUJJQyBMRVRURVIgQUxFRiBXQVNMQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NzE7Ozs7Tjs7Ozs7CitGQjUxO0FSQUJJQyBMRVRURVIgQUxFRiBXQVNMQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NzE7Ozs7Tjs7Ozs7CitGQjUyO0FSQUJJQyBMRVRURVIgQkVFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2N0I7Ozs7Tjs7Ozs7CitGQjUzO0FSQUJJQyBMRVRURVIgQkVFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2N0I7Ozs7Tjs7Ozs7CitGQjU0O0FSQUJJQyBMRVRURVIgQkVFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjdCOzs7O047Ozs7OworRkI1NTtBUkFCSUMgTEVUVEVSIEJFRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2N0I7Ozs7Tjs7Ozs7CitGQjU2O0FSQUJJQyBMRVRURVIgUEVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY3RTs7OztOOzs7OzsKK0ZCNTc7QVJBQklDIExFVFRFUiBQRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjdFOzs7O047Ozs7OworRkI1ODtBUkFCSUMgTEVUVEVSIFBFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjdFOzs7O047Ozs7OworRkI1OTtBUkFCSUMgTEVUVEVSIFBFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY3RTs7OztOOzs7OzsKK0ZCNUE7QVJBQklDIExFVFRFUiBCRUhFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2ODA7Ozs7Tjs7Ozs7CitGQjVCO0FSQUJJQyBMRVRURVIgQkVIRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjgwOzs7O047Ozs7OworRkI1QztBUkFCSUMgTEVUVEVSIEJFSEVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2ODA7Ozs7Tjs7Ozs7CitGQjVEO0FSQUJJQyBMRVRURVIgQkVIRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2ODA7Ozs7Tjs7Ozs7CitGQjVFO0FSQUJJQyBMRVRURVIgVFRFSEVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY3QTs7OztOOzs7OzsKK0ZCNUY7QVJBQklDIExFVFRFUiBUVEVIRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjdBOzs7O047Ozs7OworRkI2MDtBUkFCSUMgTEVUVEVSIFRURUhFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjdBOzs7O047Ozs7OworRkI2MTtBUkFCSUMgTEVUVEVSIFRURUhFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY3QTs7OztOOzs7OzsKK0ZCNjI7QVJBQklDIExFVFRFUiBURUhFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2N0Y7Ozs7Tjs7Ozs7CitGQjYzO0FSQUJJQyBMRVRURVIgVEVIRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjdGOzs7O047Ozs7OworRkI2NDtBUkFCSUMgTEVUVEVSIFRFSEVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2N0Y7Ozs7Tjs7Ozs7CitGQjY1O0FSQUJJQyBMRVRURVIgVEVIRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2N0Y7Ozs7Tjs7Ozs7CitGQjY2O0FSQUJJQyBMRVRURVIgVFRFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2Nzk7Ozs7Tjs7Ozs7CitGQjY3O0FSQUJJQyBMRVRURVIgVFRFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2Nzk7Ozs7Tjs7Ozs7CitGQjY4O0FSQUJJQyBMRVRURVIgVFRFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjc5Ozs7O047Ozs7OworRkI2OTtBUkFCSUMgTEVUVEVSIFRURUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2Nzk7Ozs7Tjs7Ozs7CitGQjZBO0FSQUJJQyBMRVRURVIgVkVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZBNDs7OztOOzs7OzsKK0ZCNkI7QVJBQklDIExFVFRFUiBWRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkE0Ozs7O047Ozs7OworRkI2QztBUkFCSUMgTEVUVEVSIFZFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNkE0Ozs7O047Ozs7OworRkI2RDtBUkFCSUMgTEVUVEVSIFZFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDZBNDs7OztOOzs7OzsKK0ZCNkU7QVJBQklDIExFVFRFUiBQRUhFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2QTY7Ozs7Tjs7Ozs7CitGQjZGO0FSQUJJQyBMRVRURVIgUEVIRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkE2Ozs7O047Ozs7OworRkI3MDtBUkFCSUMgTEVUVEVSIFBFSEVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2QTY7Ozs7Tjs7Ozs7CitGQjcxO0FSQUJJQyBMRVRURVIgUEVIRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2QTY7Ozs7Tjs7Ozs7CitGQjcyO0FSQUJJQyBMRVRURVIgRFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2ODQ7Ozs7Tjs7Ozs7CitGQjczO0FSQUJJQyBMRVRURVIgRFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2ODQ7Ozs7Tjs7Ozs7CitGQjc0O0FSQUJJQyBMRVRURVIgRFlFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjg0Ozs7O047Ozs7OworRkI3NTtBUkFCSUMgTEVUVEVSIERZRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2ODQ7Ozs7Tjs7Ozs7CitGQjc2O0FSQUJJQyBMRVRURVIgTllFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2ODM7Ozs7Tjs7Ozs7CitGQjc3O0FSQUJJQyBMRVRURVIgTllFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2ODM7Ozs7Tjs7Ozs7CitGQjc4O0FSQUJJQyBMRVRURVIgTllFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjgzOzs7O047Ozs7OworRkI3OTtBUkFCSUMgTEVUVEVSIE5ZRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2ODM7Ozs7Tjs7Ozs7CitGQjdBO0FSQUJJQyBMRVRURVIgVENIRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjg2Ozs7O047Ozs7OworRkI3QjtBUkFCSUMgTEVUVEVSIFRDSEVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY4Njs7OztOOzs7OzsKK0ZCN0M7QVJBQklDIExFVFRFUiBUQ0hFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjg2Ozs7O047Ozs7OworRkI3RDtBUkFCSUMgTEVUVEVSIFRDSEVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjg2Ozs7O047Ozs7OworRkI3RTtBUkFCSUMgTEVUVEVSIFRDSEVIRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjg3Ozs7O047Ozs7OworRkI3RjtBUkFCSUMgTEVUVEVSIFRDSEVIRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjg3Ozs7O047Ozs7OworRkI4MDtBUkFCSUMgTEVUVEVSIFRDSEVIRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY4Nzs7OztOOzs7OzsKK0ZCODE7QVJBQklDIExFVFRFUiBUQ0hFSEVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjg3Ozs7O047Ozs7OworRkI4MjtBUkFCSUMgTEVUVEVSIEREQUhBTCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2OEQ7Ozs7Tjs7Ozs7CitGQjgzO0FSQUJJQyBMRVRURVIgRERBSEFMIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY4RDs7OztOOzs7OzsKK0ZCODQ7QVJBQklDIExFVFRFUiBEQUhBTCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2OEM7Ozs7Tjs7Ozs7CitGQjg1O0FSQUJJQyBMRVRURVIgREFIQUwgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjhDOzs7O047Ozs7OworRkI4NjtBUkFCSUMgTEVUVEVSIERVTCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2OEU7Ozs7Tjs7Ozs7CitGQjg3O0FSQUJJQyBMRVRURVIgRFVMIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY4RTs7OztOOzs7OzsKK0ZCODg7QVJBQklDIExFVFRFUiBEREFMIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY4ODs7OztOOzs7OzsKK0ZCODk7QVJBQklDIExFVFRFUiBEREFMIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY4ODs7OztOOzs7OzsKK0ZCOEE7QVJBQklDIExFVFRFUiBKRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjk4Ozs7O047Ozs7OworRkI4QjtBUkFCSUMgTEVUVEVSIEpFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2OTg7Ozs7Tjs7Ozs7CitGQjhDO0FSQUJJQyBMRVRURVIgUlJFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2OTE7Ozs7Tjs7Ozs7CitGQjhEO0FSQUJJQyBMRVRURVIgUlJFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2OTE7Ozs7Tjs7Ozs7CitGQjhFO0FSQUJJQyBMRVRURVIgS0VIRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkE5Ozs7O047Ozs7OworRkI4RjtBUkFCSUMgTEVUVEVSIEtFSEVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZBOTs7OztOOzs7OzsKK0ZCOTA7QVJBQklDIExFVFRFUiBLRUhFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNkE5Ozs7O047Ozs7OworRkI5MTtBUkFCSUMgTEVUVEVSIEtFSEVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNkE5Ozs7O047Ozs7OworRkI5MjtBUkFCSUMgTEVUVEVSIEdBRiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2QUY7Ozs7Tjs7Ozs7CitGQjkzO0FSQUJJQyBMRVRURVIgR0FGIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZBRjs7OztOOzs7OzsKK0ZCOTQ7QVJBQklDIExFVFRFUiBHQUYgSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDZBRjs7OztOOzs7OzsKK0ZCOTU7QVJBQklDIExFVFRFUiBHQUYgTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2QUY7Ozs7Tjs7Ozs7CitGQjk2O0FSQUJJQyBMRVRURVIgR1VFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2QjM7Ozs7Tjs7Ozs7CitGQjk3O0FSQUJJQyBMRVRURVIgR1VFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2QjM7Ozs7Tjs7Ozs7CitGQjk4O0FSQUJJQyBMRVRURVIgR1VFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNkIzOzs7O047Ozs7OworRkI5OTtBUkFCSUMgTEVUVEVSIEdVRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2QjM7Ozs7Tjs7Ozs7CitGQjlBO0FSQUJJQyBMRVRURVIgTkdPRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkIxOzs7O047Ozs7OworRkI5QjtBUkFCSUMgTEVUVEVSIE5HT0VIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZCMTs7OztOOzs7OzsKK0ZCOUM7QVJBQklDIExFVFRFUiBOR09FSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNkIxOzs7O047Ozs7OworRkI5RDtBUkFCSUMgTEVUVEVSIE5HT0VIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNkIxOzs7O047Ozs7OworRkI5RTtBUkFCSUMgTEVUVEVSIE5PT04gR0hVTk5BIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZCQTs7OztOOzs7OzsKK0ZCOUY7QVJBQklDIExFVFRFUiBOT09OIEdIVU5OQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2QkE7Ozs7Tjs7Ozs7CitGQkEwO0FSQUJJQyBMRVRURVIgUk5PT04gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkJCOzs7O047Ozs7OworRkJBMTtBUkFCSUMgTEVUVEVSIFJOT09OIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZCQjs7OztOOzs7OzsKK0ZCQTI7QVJBQklDIExFVFRFUiBSTk9PTiBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNkJCOzs7O047Ozs7OworRkJBMztBUkFCSUMgTEVUVEVSIFJOT09OIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNkJCOzs7O047Ozs7OworRkJBNDtBUkFCSUMgTEVUVEVSIEhFSCBXSVRIIFlFSCBBQk9WRSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2QzA7Ozs7Tjs7Ozs7CitGQkE1O0FSQUJJQyBMRVRURVIgSEVIIFdJVEggWUVIIEFCT1ZFIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZDMDs7OztOOzs7OzsKK0ZCQTY7QVJBQklDIExFVFRFUiBIRUggR09BTCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2QzE7Ozs7Tjs7Ozs7CitGQkE3O0FSQUJJQyBMRVRURVIgSEVIIEdPQUwgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkMxOzs7O047Ozs7OworRkJBODtBUkFCSUMgTEVUVEVSIEhFSCBHT0FMIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2QzE7Ozs7Tjs7Ozs7CitGQkE5O0FSQUJJQyBMRVRURVIgSEVIIEdPQUwgTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2QzE7Ozs7Tjs7Ozs7CitGQkFBO0FSQUJJQyBMRVRURVIgSEVIIERPQUNIQVNITUVFIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZCRTs7OztOOzs7OzsKK0ZCQUI7QVJBQklDIExFVFRFUiBIRUggRE9BQ0hBU0hNRUUgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkJFOzs7O047Ozs7OworRkJBQztBUkFCSUMgTEVUVEVSIEhFSCBET0FDSEFTSE1FRSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNkJFOzs7O047Ozs7OworRkJBRDtBUkFCSUMgTEVUVEVSIEhFSCBET0FDSEFTSE1FRSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDZCRTs7OztOOzs7OzsKK0ZCQUU7QVJBQklDIExFVFRFUiBZRUggQkFSUkVFIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZEMjs7OztOOzs7OzsKK0ZCQUY7QVJBQklDIExFVFRFUiBZRUggQkFSUkVFIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZEMjs7OztOOzs7OzsKK0ZCQjA7QVJBQklDIExFVFRFUiBZRUggQkFSUkVFIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkQzOzs7O047Ozs7OworRkJCMTtBUkFCSUMgTEVUVEVSIFlFSCBCQVJSRUUgV0lUSCBIQU1aQSBBQk9WRSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2RDM7Ozs7Tjs7Ozs7CitGQkQzO0FSQUJJQyBMRVRURVIgTkcgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkFEOzs7O047Ozs7OworRkJENDtBUkFCSUMgTEVUVEVSIE5HIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZBRDs7OztOOzs7OzsKK0ZCRDU7QVJBQklDIExFVFRFUiBORyBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNkFEOzs7O047Ozs7OworRkJENjtBUkFCSUMgTEVUVEVSIE5HIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNkFEOzs7O047Ozs7OworRkJENztBUkFCSUMgTEVUVEVSIFUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkM3Ozs7O047Ozs7OworRkJEODtBUkFCSUMgTEVUVEVSIFUgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkM3Ozs7O047Ozs7OworRkJEOTtBUkFCSUMgTEVUVEVSIE9FIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZDNjs7OztOOzs7OzsKK0ZCREE7QVJBQklDIExFVFRFUiBPRSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2QzY7Ozs7Tjs7Ozs7CitGQkRCO0FSQUJJQyBMRVRURVIgWVUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNkM4Ozs7O047Ozs7OworRkJEQztBUkFCSUMgTEVUVEVSIFlVIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDZDODs7OztOOzs7OzsKK0ZCREQ7QVJBQklDIExFVFRFUiBVIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjc3Ozs7O047Ozs7OworRkJERTtBUkFCSUMgTEVUVEVSIFZFIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZDQjs7OztOOzs7OzsKK0ZCREY7QVJBQklDIExFVFRFUiBWRSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2Q0I7Ozs7Tjs7Ozs7CitGQkUwO0FSQUJJQyBMRVRURVIgS0lSR0hJWiBPRSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2QzU7Ozs7Tjs7Ozs7CitGQkUxO0FSQUJJQyBMRVRURVIgS0lSR0hJWiBPRSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2QzU7Ozs7Tjs7Ozs7CitGQkUyO0FSQUJJQyBMRVRURVIgS0lSR0hJWiBZVSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2Qzk7Ozs7Tjs7Ozs7CitGQkUzO0FSQUJJQyBMRVRURVIgS0lSR0hJWiBZVSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2Qzk7Ozs7Tjs7Ozs7CitGQkU0O0FSQUJJQyBMRVRURVIgRSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2RDA7Ozs7Tjs7Ozs7CitGQkU1O0FSQUJJQyBMRVRURVIgRSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2RDA7Ozs7Tjs7Ozs7CitGQkU2O0FSQUJJQyBMRVRURVIgRSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNkQwOzs7O047Ozs7OworRkJFNztBUkFCSUMgTEVUVEVSIEUgTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2RDA7Ozs7Tjs7Ozs7CitGQkU4O0FSQUJJQyBMRVRURVIgVUlHSFVSIEtBWkFLSCBLSVJHSElaIEFMRUYgTUFLU1VSQSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ5Ozs7O047Ozs7OworRkJFOTtBUkFCSUMgTEVUVEVSIFVJR0hVUiBLQVpBS0ggS0lSR0hJWiBBTEVGIE1BS1NVUkEgTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDk7Ozs7Tjs7Ozs7CitGQkVBO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI2IDA2Mjc7Ozs7Tjs7Ozs7CitGQkVCO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI2IDA2Mjc7Ozs7Tjs7Ozs7CitGQkVDO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFFIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyNiAwNkQ1Ozs7O047Ozs7OworRkJFRDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBRSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjYgMDZENTs7OztOOzs7OzsKK0ZCRUU7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggV0FXIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyNiAwNjQ4Ozs7O047Ozs7OworRkJFRjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBXQVcgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI2IDA2NDg7Ozs7Tjs7Ozs7CitGQkYwO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI2IDA2Qzc7Ozs7Tjs7Ozs7CitGQkYxO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFUgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI2IDA2Qzc7Ozs7Tjs7Ozs7CitGQkYyO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIE9FIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyNiAwNkM2Ozs7O047Ozs7OworRkJGMztBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBPRSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjYgMDZDNjs7OztOOzs7OzsKK0ZCRjQ7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggWVUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI2IDA2Qzg7Ozs7Tjs7Ozs7CitGQkY1O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFlVIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyNiAwNkM4Ozs7O047Ozs7OworRkJGNjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBFIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyNiAwNkQwOzs7O047Ozs7OworRkJGNztBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBFIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyNiAwNkQwOzs7O047Ozs7OworRkJGODtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBFIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MjYgMDZEMDs7OztOOzs7OzsKK0ZCRjk7QVJBQklDIExJR0FUVVJFIFVJR0hVUiBLSVJHSElaIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyNiAwNjQ5Ozs7O047Ozs7OworRkJGQTtBUkFCSUMgTElHQVRVUkUgVUlHSFVSIEtJUkdISVogWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI2IDA2NDk7Ozs7Tjs7Ozs7CitGQkZCO0FSQUJJQyBMSUdBVFVSRSBVSUdIVVIgS0lSR0hJWiBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjI2IDA2NDk7Ozs7Tjs7Ozs7CitGQkZDO0FSQUJJQyBMRVRURVIgRkFSU0kgWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDZDQzs7OztOOzs7OzsKK0ZCRkQ7QVJBQklDIExFVFRFUiBGQVJTSSBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNkNDOzs7O047Ozs7OworRkJGRTtBUkFCSUMgTEVUVEVSIEZBUlNJIFlFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNkNDOzs7O047Ozs7OworRkJGRjtBUkFCSUMgTEVUVEVSIEZBUlNJIFlFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDZDQzs7OztOOzs7OzsKK0ZDMDA7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjYgMDYyQzs7OztOOzs7OzsKK0ZDMDE7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyNiAwNjJEOzs7O047Ozs7OworRkMwMjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyNiAwNjQ1Ozs7O047Ozs7OworRkMwMztBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI2IDA2NDk7Ozs7Tjs7Ozs7CitGQzA0O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjYgMDY0QTs7OztOOzs7OzsKK0ZDMDU7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI4IDA2MkM7Ozs7Tjs7Ozs7CitGQzA2O0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI4IDA2MkQ7Ozs7Tjs7Ozs7CitGQzA3O0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyOCAwNjJFOzs7O047Ozs7OworRkMwODtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjggMDY0NTs7OztOOzs7OzsKK0ZDMDk7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjggMDY0OTs7OztOOzs7OzsKK0ZDMEE7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MjggMDY0QTs7OztOOzs7OzsKK0ZDMEI7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJBIDA2MkM7Ozs7Tjs7Ozs7CitGQzBDO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJBIDA2MkQ7Ozs7Tjs7Ozs7CitGQzBEO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyQSAwNjJFOzs7O047Ozs7OworRkMwRTtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkEgMDY0NTs7OztOOzs7OzsKK0ZDMEY7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkEgMDY0OTs7OztOOzs7OzsKK0ZDMTA7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkEgMDY0QTs7OztOOzs7OzsKK0ZDMTE7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyQiAwNjJDOzs7O047Ozs7OworRkMxMjtBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJCIDA2NDU7Ozs7Tjs7Ozs7CitGQzEzO0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyQiAwNjQ5Ozs7O047Ozs7OworRkMxNDtBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkIgMDY0QTs7OztOOzs7OzsKK0ZDMTU7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJDIDA2MkQ7Ozs7Tjs7Ozs7CitGQzE2O0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZDMTc7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJEIDA2MkM7Ozs7Tjs7Ozs7CitGQzE4O0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyRCAwNjQ1Ozs7O047Ozs7OworRkMxOTtBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJFIDA2MkM7Ozs7Tjs7Ozs7CitGQzFBO0FSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyRSAwNjJEOzs7O047Ozs7OworRkMxQjtBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJFIDA2NDU7Ozs7Tjs7Ozs7CitGQzFDO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzMgMDYyQzs7OztOOzs7OzsKK0ZDMUQ7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjMzIDA2MkQ7Ozs7Tjs7Ozs7CitGQzFFO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzMgMDYyRTs7OztOOzs7OzsKK0ZDMUY7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzMyAwNjQ1Ozs7O047Ozs7OworRkMyMDtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNSAwNjJEOzs7O047Ozs7OworRkMyMTtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzUgMDY0NTs7OztOOzs7OzsKK0ZDMjI7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM2IDA2MkM7Ozs7Tjs7Ozs7CitGQzIzO0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM2IDA2MkQ7Ozs7Tjs7Ozs7CitGQzI0O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNiAwNjJFOzs7O047Ozs7OworRkMyNTtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzYgMDY0NTs7OztOOzs7OzsKK0ZDMjY7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzcgMDYyRDs7OztOOzs7OzsKK0ZDMjc7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM3IDA2NDU7Ozs7Tjs7Ozs7CitGQzI4O0FSQUJJQyBMSUdBVFVSRSBaQUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzOCAwNjQ1Ozs7O047Ozs7OworRkMyOTtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzkgMDYyQzs7OztOOzs7OzsKK0ZDMkE7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM5IDA2NDU7Ozs7Tjs7Ozs7CitGQzJCO0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjNBIDA2MkM7Ozs7Tjs7Ozs7CitGQzJDO0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjNBIDA2NDU7Ozs7Tjs7Ozs7CitGQzJEO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0MSAwNjJDOzs7O047Ozs7OworRkMyRTtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0MSAwNjJEOzs7O047Ozs7OworRkMyRjtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDEgMDYyRTs7OztOOzs7OzsKK0ZDMzA7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQxIDA2NDU7Ozs7Tjs7Ozs7CitGQzMxO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQxIDA2NDk7Ozs7Tjs7Ozs7CitGQzMyO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQxIDA2NEE7Ozs7Tjs7Ozs7CitGQzMzO0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQyIDA2MkQ7Ozs7Tjs7Ozs7CitGQzM0O0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0MiAwNjQ1Ozs7O047Ozs7OworRkMzNTtBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0MiAwNjQ5Ozs7O047Ozs7OworRkMzNjtBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0MiAwNjRBOzs7O047Ozs7OworRkMzNztBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggQUxFRiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDMgMDYyNzs7OztOOzs7OzsKK0ZDMzg7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQzIDA2MkM7Ozs7Tjs7Ozs7CitGQzM5O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQzIDA2MkQ7Ozs7Tjs7Ozs7CitGQzNBO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0MyAwNjJFOzs7O047Ozs7OworRkMzQjtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTEFNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0MyAwNjQ0Ozs7O047Ozs7OworRkMzQztBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDMgMDY0NTs7OztOOzs7OzsKK0ZDM0Q7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDMgMDY0OTs7OztOOzs7OzsKK0ZDM0U7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDMgMDY0QTs7OztOOzs7OzsKK0ZDM0Y7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ0IDA2MkM7Ozs7Tjs7Ozs7CitGQzQwO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ0IDA2MkQ7Ozs7Tjs7Ozs7CitGQzQxO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NCAwNjJFOzs7O047Ozs7OworRkM0MjtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDQgMDY0NTs7OztOOzs7OzsKK0ZDNDM7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDQgMDY0OTs7OztOOzs7OzsKK0ZDNDQ7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDQgMDY0QTs7OztOOzs7OzsKK0ZDNDU7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NSAwNjJDOzs7O047Ozs7OworRkM0NjtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZDNDc7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NSAwNjJFOzs7O047Ozs7OworRkM0ODtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGQzQ5O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NSAwNjQ5Ozs7O047Ozs7OworRkM0QTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZDNEI7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NiAwNjJDOzs7O047Ozs7OworRkM0QztBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDYgMDYyRDs7OztOOzs7OzsKK0ZDNEQ7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NiAwNjJFOzs7O047Ozs7OworRkM0RTtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ2IDA2NDU7Ozs7Tjs7Ozs7CitGQzRGO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NiAwNjQ5Ozs7O047Ozs7OworRkM1MDtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDYgMDY0QTs7OztOOzs7OzsKK0ZDNTE7QVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ3IDA2MkM7Ozs7Tjs7Ozs7CitGQzUyO0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NyAwNjQ1Ozs7O047Ozs7OworRkM1MztBUkFCSUMgTElHQVRVUkUgSEVIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NyAwNjQ5Ozs7O047Ozs7OworRkM1NDtBUkFCSUMgTElHQVRVUkUgSEVIIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NyAwNjRBOzs7O047Ozs7OworRkM1NTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NEEgMDYyQzs7OztOOzs7OzsKK0ZDNTY7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NEEgMDYyRDs7OztOOzs7OzsKK0ZDNTc7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjRBIDA2MkU7Ozs7Tjs7Ozs7CitGQzU4O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0QSAwNjQ1Ozs7O047Ozs7OworRkM1OTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0QSAwNjQ5Ozs7O047Ozs7OworRkM1QTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0QSAwNjRBOzs7O047Ozs7OworRkM1QjtBUkFCSUMgTElHQVRVUkUgVEhBTCBXSVRIIFNVUEVSU0NSSVBUIEFMRUYgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjMwIDA2NzA7Ozs7Tjs7Ozs7CitGQzVDO0FSQUJJQyBMSUdBVFVSRSBSRUggV0lUSCBTVVBFUlNDUklQVCBBTEVGIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzMSAwNjcwOzs7O047Ozs7OworRkM1RDtBUkFCSUMgTElHQVRVUkUgQUxFRiBNQUtTVVJBIFdJVEggU1VQRVJTQ1JJUFQgQUxFRiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDkgMDY3MDs7OztOOzs7OzsKK0ZDNUU7QVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIERBTU1BVEFOIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDAyMCAwNjUxIDA2NEM7Ozs7Tjs7Ozs7CitGQzVGO0FSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBLQVNSQVRBTiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDAwMjAgMDY1MSAwNjREOzs7O047Ozs7OworRkM2MDtBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggRkFUSEEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwMDIwIDA2NTEgMDY0RTs7OztOOzs7OzsKK0ZDNjE7QVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIERBTU1BIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDAyMCAwNjUxIDA2NEY7Ozs7Tjs7Ozs7CitGQzYyO0FSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBLQVNSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDAwMjAgMDY1MSAwNjUwOzs7O047Ozs7OworRkM2MztBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggU1VQRVJTQ1JJUFQgQUxFRiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDAwMjAgMDY1MSAwNjcwOzs7O047Ozs7OworRkM2NDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBSRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI2IDA2MzE7Ozs7Tjs7Ozs7CitGQzY1O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFpBSU4gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI2IDA2MzI7Ozs7Tjs7Ozs7CitGQzY2O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI2IDA2NDU7Ozs7Tjs7Ozs7CitGQzY3O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIE5PT04gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI2IDA2NDY7Ozs7Tjs7Ozs7CitGQzY4O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjYgMDY0OTs7OztOOzs7OzsKK0ZDNjk7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyNiAwNjRBOzs7O047Ozs7OworRkM2QTtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggUkVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyOCAwNjMxOzs7O047Ozs7OworRkM2QjtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggWkFJTiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjggMDYzMjs7OztOOzs7OzsKK0ZDNkM7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI4IDA2NDU7Ozs7Tjs7Ozs7CitGQzZEO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBOT09OIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyOCAwNjQ2Ozs7O047Ozs7OworRkM2RTtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyOCAwNjQ5Ozs7O047Ozs7OworRkM2RjtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyOCAwNjRBOzs7O047Ozs7OworRkM3MDtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggUkVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQSAwNjMxOzs7O047Ozs7OworRkM3MTtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggWkFJTiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkEgMDYzMjs7OztOOzs7OzsKK0ZDNzI7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJBIDA2NDU7Ozs7Tjs7Ozs7CitGQzczO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBOT09OIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQSAwNjQ2Ozs7O047Ozs7OworRkM3NDtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQSAwNjQ5Ozs7O047Ozs7OworRkM3NTtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQSAwNjRBOzs7O047Ozs7OworRkM3NjtBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIFJFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkIgMDYzMTs7OztOOzs7OzsKK0ZDNzc7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBaQUlOIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQiAwNjMyOzs7O047Ozs7OworRkM3ODtBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJCIDA2NDU7Ozs7Tjs7Ozs7CitGQzc5O0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggTk9PTiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkIgMDY0Njs7OztOOzs7OzsKK0ZDN0E7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJCIDA2NDk7Ozs7Tjs7Ozs7CitGQzdCO0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQiAwNjRBOzs7O047Ozs7OworRkM3QztBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0MSAwNjQ5Ozs7O047Ozs7OworRkM3RDtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0MSAwNjRBOzs7O047Ozs7OworRkM3RTtBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0MiAwNjQ5Ozs7O047Ozs7OworRkM3RjtBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0MiAwNjRBOzs7O047Ozs7OworRkM4MDtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggQUxFRiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDMgMDYyNzs7OztOOzs7OzsKK0ZDODE7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIExBTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDMgMDY0NDs7OztOOzs7OzsKK0ZDODI7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQzIDA2NDU7Ozs7Tjs7Ozs7CitGQzgzO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQzIDA2NDk7Ozs7Tjs7Ozs7CitGQzg0O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQzIDA2NEE7Ozs7Tjs7Ozs7CitGQzg1O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NCAwNjQ1Ozs7O047Ozs7OworRkM4NjtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NCAwNjQ5Ozs7O047Ozs7OworRkM4NztBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NCAwNjRBOzs7O047Ozs7OworRkM4ODtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEFMRUYgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ1IDA2Mjc7Ozs7Tjs7Ozs7CitGQzg5O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZDOEE7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBSRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ2IDA2MzE7Ozs7Tjs7Ozs7CitGQzhCO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggWkFJTiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDYgMDYzMjs7OztOOzs7OzsKK0ZDOEM7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NiAwNjQ1Ozs7O047Ozs7OworRkM4RDtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIE5PT04gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ2IDA2NDY7Ozs7Tjs7Ozs7CitGQzhFO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NiAwNjQ5Ozs7O047Ozs7OworRkM4RjtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDYgMDY0QTs7OztOOzs7OzsKK0ZDOTA7QVJBQklDIExJR0FUVVJFIEFMRUYgTUFLU1VSQSBXSVRIIFNVUEVSU0NSSVBUIEFMRUYgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ5IDA2NzA7Ozs7Tjs7Ozs7CitGQzkxO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBSRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjRBIDA2MzE7Ozs7Tjs7Ozs7CitGQzkyO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBaQUlOIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0QSAwNjMyOzs7O047Ozs7OworRkM5MztBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NEEgMDY0NTs7OztOOzs7OzsKK0ZDOTQ7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE5PT04gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjRBIDA2NDY7Ozs7Tjs7Ozs7CitGQzk1O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjRBIDA2NDk7Ozs7Tjs7Ozs7CitGQzk2O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjRBIDA2NEE7Ozs7Tjs7Ozs7CitGQzk3O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyNiAwNjJDOzs7O047Ozs7OworRkM5ODtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyNiAwNjJEOzs7O047Ozs7OworRkM5OTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MjYgMDYyRTs7OztOOzs7OzsKK0ZDOUE7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjI2IDA2NDU7Ozs7Tjs7Ozs7CitGQzlCO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEhFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjI2IDA2NDc7Ozs7Tjs7Ozs7CitGQzlDO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MjggMDYyQzs7OztOOzs7OzsKK0ZDOUQ7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjI4IDA2MkQ7Ozs7Tjs7Ozs7CitGQzlFO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MjggMDYyRTs7OztOOzs7OzsKK0ZDOUY7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyOCAwNjQ1Ozs7O047Ozs7OworRkNBMDtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSEVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MjggMDY0Nzs7OztOOzs7OzsKK0ZDQTE7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyQSAwNjJDOzs7O047Ozs7OworRkNBMjtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkEgMDYyRDs7OztOOzs7OzsKK0ZDQTM7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyQSAwNjJFOzs7O047Ozs7OworRkNBNDtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJBIDA2NDU7Ozs7Tjs7Ozs7CitGQ0E1O0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBIRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyQSAwNjQ3Ozs7O047Ozs7OworRkNBNjtBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyQiAwNjQ1Ozs7O047Ozs7OworRkNBNztBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJDIDA2MkQ7Ozs7Tjs7Ozs7CitGQ0E4O0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGQ0E5O0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkQgMDYyQzs7OztOOzs7OzsKK0ZDQUE7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyRCAwNjQ1Ozs7O047Ozs7OworRkNBQjtBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyRSAwNjJDOzs7O047Ozs7OworRkNBQztBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyRSAwNjQ1Ozs7O047Ozs7OworRkNBRDtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzMyAwNjJDOzs7O047Ozs7OworRkNBRTtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjMzIDA2MkQ7Ozs7Tjs7Ozs7CitGQ0FGO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjMzIDA2MkU7Ozs7Tjs7Ozs7CitGQ0IwO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjMzIDA2NDU7Ozs7Tjs7Ozs7CitGQ0IxO0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNSAwNjJEOzs7O047Ozs7OworRkNCMjtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM1IDA2MkU7Ozs7Tjs7Ozs7CitGQ0IzO0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzUgMDY0NTs7OztOOzs7OzsKK0ZDQjQ7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNiAwNjJDOzs7O047Ozs7OworRkNCNTtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzYgMDYyRDs7OztOOzs7OzsKK0ZDQjY7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNiAwNjJFOzs7O047Ozs7OworRkNCNztBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM2IDA2NDU7Ozs7Tjs7Ozs7CitGQ0I4O0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNyAwNjJEOzs7O047Ozs7OworRkNCOTtBUkFCSUMgTElHQVRVUkUgWkFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM4IDA2NDU7Ozs7Tjs7Ozs7CitGQ0JBO0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzkgMDYyQzs7OztOOzs7OzsKK0ZDQkI7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzOSAwNjQ1Ozs7O047Ozs7OworRkNCQztBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2M0EgMDYyQzs7OztOOzs7OzsKK0ZDQkQ7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjNBIDA2NDU7Ozs7Tjs7Ozs7CitGQ0JFO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDEgMDYyQzs7OztOOzs7OzsKK0ZDQkY7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQxIDA2MkQ7Ozs7Tjs7Ozs7CitGQ0MwO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDEgMDYyRTs7OztOOzs7OzsKK0ZDQzE7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0MSAwNjQ1Ozs7O047Ozs7OworRkNDMjtBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDIgMDYyRDs7OztOOzs7OzsKK0ZDQzM7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0MiAwNjQ1Ozs7O047Ozs7OworRkNDNDtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQzIDA2MkM7Ozs7Tjs7Ozs7CitGQ0M1O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0MyAwNjJEOzs7O047Ozs7OworRkNDNjtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQzIDA2MkU7Ozs7Tjs7Ozs7CitGQ0M3O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBMQU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0MyAwNjQ0Ozs7O047Ozs7OworRkNDODtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQzIDA2NDU7Ozs7Tjs7Ozs7CitGQ0M5O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDQgMDYyQzs7OztOOzs7OzsKK0ZDQ0E7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ0IDA2MkQ7Ozs7Tjs7Ozs7CitGQ0NCO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDQgMDYyRTs7OztOOzs7OzsKK0ZDQ0M7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NCAwNjQ1Ozs7O047Ozs7OworRkNDRDtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSEVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDQgMDY0Nzs7OztOOzs7OzsKK0ZDQ0U7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDUgMDYyQzs7OztOOzs7OzsKK0ZDQ0Y7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NSAwNjJEOzs7O047Ozs7OworRkNEMDtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NSAwNjJFOzs7O047Ozs7OworRkNEMTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NSAwNjQ1Ozs7O047Ozs7OworRkNEMjtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NiAwNjJDOzs7O047Ozs7OworRkNEMztBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ2IDA2MkQ7Ozs7Tjs7Ozs7CitGQ0Q0O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ2IDA2MkU7Ozs7Tjs7Ozs7CitGQ0Q1O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ2IDA2NDU7Ozs7Tjs7Ozs7CitGQ0Q2O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDYgMDY0Nzs7OztOOzs7OzsKK0ZDRDc7QVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NyAwNjJDOzs7O047Ozs7OworRkNEODtBUkFCSUMgTElHQVRVUkUgSEVIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ3IDA2NDU7Ozs7Tjs7Ozs7CitGQ0Q5O0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBTVVBFUlNDUklQVCBBTEVGIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDcgMDY3MDs7OztOOzs7OzsKK0ZDREE7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0QSAwNjJDOzs7O047Ozs7OworRkNEQjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NEEgMDYyRDs7OztOOzs7OzsKK0ZDREM7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0QSAwNjJFOzs7O047Ozs7OworRkNERDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjRBIDA2NDU7Ozs7Tjs7Ozs7CitGQ0RFO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0QSAwNjQ3Ozs7O047Ozs7OworRkNERjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjI2IDA2NDU7Ozs7Tjs7Ozs7CitGQ0UwO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEhFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYyNiAwNjQ3Ozs7O047Ozs7OworRkNFMTtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYyOCAwNjQ1Ozs7O047Ozs7OworRkNFMjtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSEVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjI4IDA2NDc7Ozs7Tjs7Ozs7CitGQ0UzO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjJBIDA2NDU7Ozs7Tjs7Ozs7CitGQ0U0O0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBIRUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MkEgMDY0Nzs7OztOOzs7OzsKK0ZDRTU7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjJCIDA2NDU7Ozs7Tjs7Ozs7CitGQ0U2O0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggSEVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjJCIDA2NDc7Ozs7Tjs7Ozs7CitGQ0U3O0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYzMyAwNjQ1Ozs7O047Ozs7OworRkNFODtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEhFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYzMyAwNjQ3Ozs7O047Ozs7OworRkNFOTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjM0IDA2NDU7Ozs7Tjs7Ozs7CitGQ0VBO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYzNCAwNjQ3Ozs7O047Ozs7OworRkNFQjtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTEFNIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQzIDA2NDQ7Ozs7Tjs7Ozs7CitGQ0VDO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQzIDA2NDU7Ozs7Tjs7Ozs7CitGQ0VEO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQ0IDA2NDU7Ozs7Tjs7Ozs7CitGQ0VFO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0NiAwNjQ1Ozs7O047Ozs7OworRkNFRjtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEhFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0NiAwNjQ3Ozs7O047Ozs7OworRkNGMDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0QSAwNjQ1Ozs7O047Ozs7OworRkNGMTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjRBIDA2NDc7Ozs7Tjs7Ozs7CitGQ0YyO0FSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBGQVRIQSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0MCAwNjUxIDA2NEU7Ozs7Tjs7Ozs7CitGQ0YzO0FSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBEQU1NQSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0MCAwNjUxIDA2NEY7Ozs7Tjs7Ozs7CitGQ0Y0O0FSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBLQVNSQSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDY0MCAwNjUxIDA2NTA7Ozs7Tjs7Ozs7CitGQ0Y1O0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM3IDA2NDk7Ozs7Tjs7Ozs7CitGQ0Y2O0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM3IDA2NEE7Ozs7Tjs7Ozs7CitGQ0Y3O0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM5IDA2NDk7Ozs7Tjs7Ozs7CitGQ0Y4O0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM5IDA2NEE7Ozs7Tjs7Ozs7CitGQ0Y5O0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2M0EgMDY0OTs7OztOOzs7OzsKK0ZDRkE7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzQSAwNjRBOzs7O047Ozs7OworRkNGQjtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzMgMDY0OTs7OztOOzs7OzsKK0ZDRkM7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjMzIDA2NEE7Ozs7Tjs7Ozs7CitGQ0ZEO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzQgMDY0OTs7OztOOzs7OzsKK0ZDRkU7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNCAwNjRBOzs7O047Ozs7OworRkNGRjtBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyRCAwNjQ5Ozs7O047Ozs7OworRkQwMDtBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyRCAwNjRBOzs7O047Ozs7OworRkQwMTtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkMgMDY0OTs7OztOOzs7OzsKK0ZEMDI7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJDIDA2NEE7Ozs7Tjs7Ozs7CitGRDAzO0FSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyRSAwNjQ5Ozs7O047Ozs7OworRkQwNDtBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkUgMDY0QTs7OztOOzs7OzsKK0ZEMDU7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzUgMDY0OTs7OztOOzs7OzsKK0ZEMDY7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzUgMDY0QTs7OztOOzs7OzsKK0ZEMDc7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzYgMDY0OTs7OztOOzs7OzsKK0ZEMDg7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzYgMDY0QTs7OztOOzs7OzsKK0ZEMDk7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzQgMDYyQzs7OztOOzs7OzsKK0ZEMEE7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNCAwNjJEOzs7O047Ozs7OworRkQwQjtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNCAwNjJFOzs7O047Ozs7OworRkQwQztBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNCAwNjQ1Ozs7O047Ozs7OworRkQwRDtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBSRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM0IDA2MzE7Ozs7Tjs7Ozs7CitGRDBFO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggUkVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzMyAwNjMxOzs7O047Ozs7OworRkQwRjtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggUkVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNSAwNjMxOzs7O047Ozs7OworRkQxMDtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggUkVIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNiAwNjMxOzs7O047Ozs7OworRkQxMTtBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNyAwNjQ5Ozs7O047Ozs7OworRkQxMjtBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNyAwNjRBOzs7O047Ozs7OworRkQxMztBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzOSAwNjQ5Ozs7O047Ozs7OworRkQxNDtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzOSAwNjRBOzs7O047Ozs7OworRkQxNTtBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjNBIDA2NDk7Ozs7Tjs7Ozs7CitGRDE2O0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2M0EgMDY0QTs7OztOOzs7OzsKK0ZEMTc7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjMzIDA2NDk7Ozs7Tjs7Ozs7CitGRDE4O0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzMyAwNjRBOzs7O047Ozs7OworRkQxOTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM0IDA2NDk7Ozs7Tjs7Ozs7CitGRDFBO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzQgMDY0QTs7OztOOzs7OzsKK0ZEMUI7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkQgMDY0OTs7OztOOzs7OzsKK0ZEMUM7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEMUQ7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJDIDA2NDk7Ozs7Tjs7Ozs7CitGRDFFO0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQyAwNjRBOzs7O047Ozs7OworRkQxRjtBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkUgMDY0OTs7OztOOzs7OzsKK0ZEMjA7QVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJFIDA2NEE7Ozs7Tjs7Ozs7CitGRDIxO0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM1IDA2NDk7Ozs7Tjs7Ozs7CitGRDIyO0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM1IDA2NEE7Ozs7Tjs7Ozs7CitGRDIzO0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM2IDA2NDk7Ozs7Tjs7Ozs7CitGRDI0O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM2IDA2NEE7Ozs7Tjs7Ozs7CitGRDI1O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEpFRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM0IDA2MkM7Ozs7Tjs7Ozs7CitGRDI2O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhBSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzQgMDYyRDs7OztOOzs7OzsKK0ZEMjc7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggS0hBSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzQgMDYyRTs7OztOOzs7OzsKK0ZEMjg7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzQgMDY0NTs7OztOOzs7OzsKK0ZEMjk7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggUkVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNCAwNjMxOzs7O047Ozs7OworRkQyQTtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIFJFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzMgMDYzMTs7OztOOzs7OzsKK0ZEMkI7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIFJFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzUgMDYzMTs7OztOOzs7OzsKK0ZEMkM7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIFJFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzYgMDYzMTs7OztOOzs7OzsKK0ZEMkQ7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM0IDA2MkM7Ozs7Tjs7Ozs7CitGRDJFO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM0IDA2MkQ7Ozs7Tjs7Ozs7CitGRDJGO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNCAwNjJFOzs7O047Ozs7OworRkQzMDtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzQgMDY0NTs7OztOOzs7OzsKK0ZEMzE7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBIRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzMyAwNjQ3Ozs7O047Ozs7OworRkQzMjtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIRUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNCAwNjQ3Ozs7O047Ozs7OworRkQzMztBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM3IDA2NDU7Ozs7Tjs7Ozs7CitGRDM0O0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSkVFTSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYzMyAwNjJDOzs7O047Ozs7OworRkQzNTtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEhBSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYzMyAwNjJEOzs7O047Ozs7OworRkQzNjtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEtIQUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MzMgMDYyRTs7OztOOzs7OzsKK0ZEMzc7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSkVFTSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYzNCAwNjJDOzs7O047Ozs7OworRkQzODtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIQUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MzQgMDYyRDs7OztOOzs7OzsKK0ZEMzk7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggS0hBSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYzNCAwNjJFOzs7O047Ozs7OworRkQzQTtBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYzNyAwNjQ1Ozs7O047Ozs7OworRkQzQjtBUkFCSUMgTElHQVRVUkUgWkFIIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYzOCAwNjQ1Ozs7O047Ozs7OworRkQzQztBUkFCSUMgTElHQVRVUkUgQUxFRiBXSVRIIEZBVEhBVEFOIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyNyAwNjRCOzs7O047Ozs7OworRkQzRDtBUkFCSUMgTElHQVRVUkUgQUxFRiBXSVRIIEZBVEhBVEFOIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyNyAwNjRCOzs7O047Ozs7OworRkQzRTtPUk5BVEUgTEVGVCBQQVJFTlRIRVNJUztQczswO09OOzs7OztOOzs7OzsKK0ZEM0Y7T1JOQVRFIFJJR0hUIFBBUkVOVEhFU0lTO1BlOzA7T047Ozs7O047Ozs7OworRkQ1MDtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSkVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyQSAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGRDUxO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBIQUggV0lUSCBKRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQSAwNjJEIDA2MkM7Ozs7Tjs7Ozs7CitGRDUyO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBIQUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkEgMDYyRCAwNjJDOzs7O047Ozs7OworRkQ1MztBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJBIDA2MkQgMDY0NTs7OztOOzs7OzsKK0ZENTQ7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEtIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkEgMDYyRSAwNjQ1Ozs7O047Ozs7OworRkQ1NTtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyQSAwNjQ1IDA2MkM7Ozs7Tjs7Ozs7CitGRDU2O0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkEgMDY0NSAwNjJEOzs7O047Ozs7OworRkQ1NztBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyQSAwNjQ1IDA2MkU7Ozs7Tjs7Ozs7CitGRDU4O0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggTUVFTSBXSVRIIEhBSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkMgMDY0NSAwNjJEOzs7O047Ozs7OworRkQ1OTtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIE1FRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyQyAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDVBO0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyRCAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGRDVCO0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBNRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyRCAwNjQ1IDA2NDk7Ozs7Tjs7Ozs7CitGRDVDO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSEFIIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjMzIDA2MkQgMDYyQzs7OztOOzs7OzsKK0ZENUQ7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBKRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzMgMDYyQyAwNjJEOzs7O047Ozs7OworRkQ1RTtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEpFRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjMzIDA2MkMgMDY0OTs7OztOOzs7OzsKK0ZENUY7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBNRUVNIFdJVEggSEFIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzMyAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDYwO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjMzIDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZENjE7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBNRUVNIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjMzIDA2NDUgMDYyQzs7OztOOzs7OzsKK0ZENjI7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzMgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ2MztBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzMgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ2NDtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggSEFIIFdJVEggSEFIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNSAwNjJEIDA2MkQ7Ozs7Tjs7Ozs7CitGRDY1O0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBIQUggV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNSAwNjJEIDA2MkQ7Ozs7Tjs7Ozs7CitGRDY2O0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzUgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ2NztBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIQUggV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNCAwNjJEIDA2NDU7Ozs7Tjs7Ozs7CitGRDY4O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNCAwNjJEIDA2NDU7Ozs7Tjs7Ozs7CitGRDY5O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM0IDA2MkMgMDY0QTs7OztOOzs7OzsKK0ZENkE7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggTUVFTSBXSVRIIEtIQUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM0IDA2NDUgMDYyRTs7OztOOzs7OzsKK0ZENkI7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggTUVFTSBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNCAwNjQ1IDA2MkU7Ozs7Tjs7Ozs7CitGRDZDO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNCAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDZEO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzQgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ2RTtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggSEFIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNiAwNjJEIDA2NDk7Ozs7Tjs7Ozs7CitGRDZGO0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBLSEFIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzYgMDYyRSAwNjQ1Ozs7O047Ozs7OworRkQ3MDtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNiAwNjJFIDA2NDU7Ozs7Tjs7Ozs7CitGRDcxO0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBNRUVNIFdJVEggSEFIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNyAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDcyO0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBNRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzcgMDY0NSAwNjJEOzs7O047Ozs7OworRkQ3MztBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggTUVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzNyAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDc0O0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNyAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGRDc1O0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBKRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzkgMDYyQyAwNjQ1Ozs7O047Ozs7OworRkQ3NjtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM5IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZENzc7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzkgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ3ODtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzkgMDY0NSAwNjQ5Ozs7O047Ozs7OworRkQ3OTtBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2M0EgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ3QTtBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzQSAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGRDdCO0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIE1FRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjNBIDA2NDUgMDY0OTs7OztOOzs7OzsKK0ZEN0M7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEtIQUggV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0MSAwNjJFIDA2NDU7Ozs7Tjs7Ozs7CitGRDdEO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBLSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQxIDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZEN0U7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIE1FRU0gV0lUSCBIQUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQyIDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZEN0Y7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0MiAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDgwO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBIQUggV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NCAwNjJEIDA2NDU7Ozs7Tjs7Ozs7CitGRDgxO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ0IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEODI7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEhBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDQgMDYyRCAwNjQ5Ozs7O047Ozs7OworRkQ4MztBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSkVFTSBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NCAwNjJDIDA2MkM7Ozs7Tjs7Ozs7CitGRDg0O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBKRUVNIFdJVEggSkVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDQgMDYyQyAwNjJDOzs7O047Ozs7OworRkQ4NTtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggS0hBSCBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ0IDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZEODY7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEtIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDQgMDYyRSAwNjQ1Ozs7O047Ozs7OworRkQ4NztBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggTUVFTSBXSVRIIEhBSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDQgMDY0NSAwNjJEOzs7O047Ozs7OworRkQ4ODtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ0IDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZEODk7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBIQUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDUgMDYyRCAwNjJDOzs7O047Ozs7OworRkQ4QTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEhBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NSAwNjJEIDA2NDU7Ozs7Tjs7Ozs7CitGRDhCO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NSAwNjJEIDA2NEE7Ozs7Tjs7Ozs7CitGRDhDO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSkVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ1IDA2MkMgMDYyRDs7OztOOzs7OzsKK0ZEOEQ7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBKRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ1IDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZEOEU7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBLSEFIIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ1IDA2MkUgMDYyQzs7OztOOzs7OzsKK0ZEOEY7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBLSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ1IDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZEOTI7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBKRUVNIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ1IDA2MkMgMDYyRTs7OztOOzs7OzsKK0ZEOTM7QVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIE1FRU0gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDcgMDY0NSAwNjJDOzs7O047Ozs7OworRkQ5NDtBUkFCSUMgTElHQVRVUkUgSEVIIFdJVEggTUVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0NyAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDk1O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ2IDA2MkQgMDY0NTs7OztOOzs7OzsKK0ZEOTY7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ2IDA2MkQgMDY0OTs7OztOOzs7OzsKK0ZEOTc7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBKRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDYgMDYyQyAwNjQ1Ozs7O047Ozs7OworRkQ5ODtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDYgMDYyQyAwNjQ1Ozs7O047Ozs7OworRkQ5OTtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ2IDA2MkMgMDY0OTs7OztOOzs7OzsKK0ZEOUE7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NiAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGRDlCO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDYgMDY0NSAwNjQ5Ozs7O047Ozs7OworRkQ5QztBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjRBIDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZEOUQ7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NEEgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ5RTtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggS0hBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjggMDYyRSAwNjRBOzs7O047Ozs7OworRkQ5RjtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkEgMDYyQyAwNjRBOzs7O047Ozs7OworRkRBMDtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSkVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkEgMDYyQyAwNjQ5Ozs7O047Ozs7OworRkRBMTtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggS0hBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkEgMDYyRSAwNjRBOzs7O047Ozs7OworRkRBMjtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggS0hBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkEgMDYyRSAwNjQ5Ozs7O047Ozs7OworRkRBMztBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkEgMDY0NSAwNjRBOzs7O047Ozs7OworRkRBNDtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkEgMDY0NSAwNjQ5Ozs7O047Ozs7OworRkRBNTtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJDIDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZEQTY7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJDIDA2MkQgMDY0OTs7OztOOzs7OzsKK0ZEQTc7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBNRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQyAwNjQ1IDA2NDk7Ozs7Tjs7Ozs7CitGREE4O0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggS0hBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzMgMDYyRSAwNjQ5Ozs7O047Ozs7OworRkRBOTtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNSAwNjJEIDA2NEE7Ozs7Tjs7Ozs7CitGREFBO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzQgMDYyRCAwNjRBOzs7O047Ozs7OworRkRBQjtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzNiAwNjJEIDA2NEE7Ozs7Tjs7Ozs7CitGREFDO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBKRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NCAwNjJDIDA2NEE7Ozs7Tjs7Ozs7CitGREFEO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NCAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGREFFO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjRBIDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEQUY7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjRBIDA2MkMgMDY0QTs7OztOOzs7OzsKK0ZEQjA7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjRBIDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZEQjE7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NSAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGREIyO0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0MiAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGREIzO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NiAwNjJEIDA2NEE7Ozs7Tjs7Ozs7CitGREI0O0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBNRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDIgMDY0NSAwNjJEOzs7O047Ozs7OworRkRCNTtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ0IDA2MkQgMDY0NTs7OztOOzs7OzsKK0ZEQjY7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM5IDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZEQjc7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQzIDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZEQjg7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBKRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDYgMDYyQyAwNjJEOzs7O047Ozs7OworRkRCOTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEtIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ1IDA2MkUgMDY0QTs7OztOOzs7OzsKK0ZEQkE7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDQgMDYyQyAwNjQ1Ozs7O047Ozs7OworRkRCQjtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQzIDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZEQkM7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NCAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGREJEO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSkVFTSBXSVRIIEhBSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDYgMDYyQyAwNjJEOzs7O047Ozs7OworRkRCRTtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkMgMDYyRCAwNjRBOzs7O047Ozs7OworRkRCRjtBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkQgMDYyQyAwNjRBOzs7O047Ozs7OworRkRDMDtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ1IDA2MkMgMDY0QTs7OztOOzs7OzsKK0ZEQzE7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQxIDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZEQzI7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjggMDYyRCAwNjRBOzs7O047Ozs7OworRkRDMztBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTUVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0MyAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGREM0O0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBKRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM5IDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZEQzU7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzUgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkRDNjtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEtIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjMzIDA2MkUgMDY0QTs7OztOOzs7OzsKK0ZEQzc7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBKRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NiAwNjJDIDA2NEE7Ozs7Tjs7Ozs7CitGREYwO0FSQUJJQyBMSUdBVFVSRSBTQUxMQSBVU0VEIEFTIEtPUkFOSUMgU1RPUCBTSUdOIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNSAwNjQ0IDA2RDI7Ozs7Tjs7Ozs7CitGREYxO0FSQUJJQyBMSUdBVFVSRSBRQUxBIFVTRUQgQVMgS09SQU5JQyBTVE9QIFNJR04gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQyIDA2NDQgMDZEMjs7OztOOzs7OzsKK0ZERjI7QVJBQklDIExJR0FUVVJFIEFMTEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyNyAwNjQ0IDA2NDQgMDY0Nzs7OztOOzs7OzsKK0ZERjM7QVJBQklDIExJR0FUVVJFIEFLQkFSIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyNyAwNjQzIDA2MjggMDYzMTs7OztOOzs7OzsKK0ZERjQ7QVJBQklDIExJR0FUVVJFIE1PSEFNTUFEIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NSAwNjJEIDA2NDUgMDYyRjs7OztOOzs7OzsKK0ZERjU7QVJBQklDIExJR0FUVVJFIFNBTEFNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNSAwNjQ0IDA2MzkgMDY0NTs7OztOOzs7OzsKK0ZERjY7QVJBQklDIExJR0FUVVJFIFJBU09VTCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzEgMDYzMyAwNjQ4IDA2NDQ7Ozs7Tjs7Ozs7CitGREY3O0FSQUJJQyBMSUdBVFVSRSBBTEFZSEUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM5IDA2NDQgMDY0QSAwNjQ3Ozs7O047Ozs7OworRkRGODtBUkFCSUMgTElHQVRVUkUgV0FTQUxMQU0gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ4IDA2MzMgMDY0NCAwNjQ1Ozs7O047Ozs7OworRkRGOTtBUkFCSUMgTElHQVRVUkUgU0FMTEEgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM1IDA2NDQgMDY0OTs7OztOOzs7OzsKK0ZERkE7QVJBQklDIExJR0FUVVJFIFNBTExBTExBSE9VIEFMQVlIRSBXQVNBTExBTTtMbzswO1I7PGlzb2xhdGVkPiAwNjM1IDA2NDQgMDY0OSAwMDIwIDA2MjcgMDY0NCAwNjQ0IDA2NDcgMDAyMCAwNjM5IDA2NDQgMDY0QSAwNjQ3IDAwMjAgMDY0OCAwNjMzIDA2NDQgMDY0NTs7OztOO0FSQUJJQyBMRVRURVIgU0FMTEFMTEFIT1UgQUxBWUhFIFdBU0FMTEFNOzs7OworRkRGQjtBUkFCSUMgTElHQVRVUkUgSkFMTEFKQUxBTE9VSE9VO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkMgMDY0NCAwMDIwIDA2MkMgMDY0NCAwNjI3IDA2NDQgMDY0Nzs7OztOO0FSQUJJQyBMRVRURVIgSkFMTEFKQUxBTE9VSE9VOzs7OworRkUyMDtDT01CSU5JTkcgTElHQVRVUkUgTEVGVCBIQUxGO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CitGRTIxO0NPTUJJTklORyBMSUdBVFVSRSBSSUdIVCBIQUxGO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CitGRTIyO0NPTUJJTklORyBET1VCTEUgVElMREUgTEVGVCBIQUxGO01uOzIzMDtPTjs7Ozs7Tjs7Ozs7CitGRTIzO0NPTUJJTklORyBET1VCTEUgVElMREUgUklHSFQgSEFMRjtNbjsyMzA7T047Ozs7O047Ozs7OworRkUzMDtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgVFdPIERPVCBMRUFERVI7UG87MDtPTjs8dmVydGljYWw+IDIwMjU7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgVFdPIERPVCBMRUFERVI7Ozs7CitGRTMxO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBFTSBEQVNIO1BkOzA7T047PHZlcnRpY2FsPiAyMDE0Ozs7O047R0xZUEggRk9SIFZFUlRJQ0FMIEVNIERBU0g7Ozs7CitGRTMyO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBFTiBEQVNIO1BkOzA7T047PHZlcnRpY2FsPiAyMDEzOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIEVOIERBU0g7Ozs7CitGRTMzO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMT1cgTElORTtQYzswO09OOzx2ZXJ0aWNhbD4gMDA1Rjs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBTUEFDSU5HIFVOREVSU0NPUkU7Ozs7CitGRTM0O1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBXQVZZIExPVyBMSU5FO1BjOzA7T047PHZlcnRpY2FsPiAwMDVGOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIFNQQUNJTkcgV0FWWSBVTkRFUlNDT1JFOzs7OworRkUzNTtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBQQVJFTlRIRVNJUztQczswO09OOzx2ZXJ0aWNhbD4gMDAyODs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBPUEVOSU5HIFBBUkVOVEhFU0lTOzs7OworRkUzNjtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgUEFSRU5USEVTSVM7UGU7MDtPTjs8dmVydGljYWw+IDAwMjk7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgQ0xPU0lORyBQQVJFTlRIRVNJUzs7OzsKK0ZFMzc7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgQ1VSTFkgQlJBQ0tFVDtQczswO09OOzx2ZXJ0aWNhbD4gMDA3Qjs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBPUEVOSU5HIENVUkxZIEJSQUNLRVQ7Ozs7CitGRTM4O1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBDVVJMWSBCUkFDS0VUO1BlOzA7T047PHZlcnRpY2FsPiAwMDdEOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIENMT1NJTkcgQ1VSTFkgQlJBQ0tFVDs7OzsKK0ZFMzk7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQczswO09OOzx2ZXJ0aWNhbD4gMzAxNDs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBPUEVOSU5HIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7Ozs7CitGRTNBO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUO1BlOzA7T047PHZlcnRpY2FsPiAzMDE1Ozs7O047R0xZUEggRk9SIFZFUlRJQ0FMIENMT1NJTkcgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKK0ZFM0I7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUO1BzOzA7T047PHZlcnRpY2FsPiAzMDEwOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIE9QRU5JTkcgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUOzs7OworRkUzQztQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUO1BlOzA7T047PHZlcnRpY2FsPiAzMDExOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIENMT1NJTkcgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUOzs7OworRkUzRDtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBET1VCTEUgQU5HTEUgQlJBQ0tFVDtQczswO09OOzx2ZXJ0aWNhbD4gMzAwQTs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBPUEVOSU5HIERPVUJMRSBBTkdMRSBCUkFDS0VUOzs7OworRkUzRTtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgRE9VQkxFIEFOR0xFIEJSQUNLRVQ7UGU7MDtPTjs8dmVydGljYWw+IDMwMEI7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgQ0xPU0lORyBET1VCTEUgQU5HTEUgQlJBQ0tFVDs7OzsKK0ZFM0Y7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgQU5HTEUgQlJBQ0tFVDtQczswO09OOzx2ZXJ0aWNhbD4gMzAwODs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBPUEVOSU5HIEFOR0xFIEJSQUNLRVQ7Ozs7CitGRTQwO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBBTkdMRSBCUkFDS0VUO1BlOzA7T047PHZlcnRpY2FsPiAzMDA5Ozs7O047R0xZUEggRk9SIFZFUlRJQ0FMIENMT1NJTkcgQU5HTEUgQlJBQ0tFVDs7OzsKK0ZFNDE7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgQ09STkVSIEJSQUNLRVQ7UHM7MDtPTjs8dmVydGljYWw+IDMwMEM7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgT1BFTklORyBDT1JORVIgQlJBQ0tFVDs7OzsKK0ZFNDI7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFJJR0hUIENPUk5FUiBCUkFDS0VUO1BlOzA7T047PHZlcnRpY2FsPiAzMDBEOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIENMT1NJTkcgQ09STkVSIEJSQUNLRVQ7Ozs7CitGRTQzO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIFdISVRFIENPUk5FUiBCUkFDS0VUO1BzOzA7T047PHZlcnRpY2FsPiAzMDBFOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIE9QRU5JTkcgV0hJVEUgQ09STkVSIEJSQUNLRVQ7Ozs7CitGRTQ0O1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBXSElURSBDT1JORVIgQlJBQ0tFVDtQZTswO09OOzx2ZXJ0aWNhbD4gMzAwRjs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBDTE9TSU5HIFdISVRFIENPUk5FUiBCUkFDS0VUOzs7OworRkU0OTtEQVNIRUQgT1ZFUkxJTkU7UG87MDtPTjs8Y29tcGF0PiAyMDNFOzs7O047U1BBQ0lORyBEQVNIRUQgT1ZFUlNDT1JFOzs7OworRkU0QTtDRU5UUkVMSU5FIE9WRVJMSU5FO1BvOzA7T047PGNvbXBhdD4gMjAzRTs7OztOO1NQQUNJTkcgQ0VOVEVSTElORSBPVkVSU0NPUkU7Ozs7CitGRTRCO1dBVlkgT1ZFUkxJTkU7UG87MDtPTjs8Y29tcGF0PiAyMDNFOzs7O047U1BBQ0lORyBXQVZZIE9WRVJTQ09SRTs7OzsKK0ZFNEM7RE9VQkxFIFdBVlkgT1ZFUkxJTkU7UG87MDtPTjs8Y29tcGF0PiAyMDNFOzs7O047U1BBQ0lORyBET1VCTEUgV0FWWSBPVkVSU0NPUkU7Ozs7CitGRTREO0RBU0hFRCBMT1cgTElORTtQYzswO09OOzxjb21wYXQ+IDAwNUY7Ozs7TjtTUEFDSU5HIERBU0hFRCBVTkRFUlNDT1JFOzs7OworRkU0RTtDRU5UUkVMSU5FIExPVyBMSU5FO1BjOzA7T047PGNvbXBhdD4gMDA1Rjs7OztOO1NQQUNJTkcgQ0VOVEVSTElORSBVTkRFUlNDT1JFOzs7OworRkU0RjtXQVZZIExPVyBMSU5FO1BjOzA7T047PGNvbXBhdD4gMDA1Rjs7OztOO1NQQUNJTkcgV0FWWSBVTkRFUlNDT1JFOzs7OworRkU1MDtTTUFMTCBDT01NQTtQbzswO0NTOzxzbWFsbD4gMDAyQzs7OztOOzs7OzsKK0ZFNTE7U01BTEwgSURFT0dSQVBISUMgQ09NTUE7UG87MDtPTjs8c21hbGw+IDMwMDE7Ozs7Tjs7Ozs7CitGRTUyO1NNQUxMIEZVTEwgU1RPUDtQbzswO0NTOzxzbWFsbD4gMDAyRTs7OztOO1NNQUxMIFBFUklPRDs7OzsKK0ZFNTQ7U01BTEwgU0VNSUNPTE9OO1BvOzA7T047PHNtYWxsPiAwMDNCOzs7O047Ozs7OworRkU1NTtTTUFMTCBDT0xPTjtQbzswO0NTOzxzbWFsbD4gMDAzQTs7OztOOzs7OzsKK0ZFNTY7U01BTEwgUVVFU1RJT04gTUFSSztQbzswO09OOzxzbWFsbD4gMDAzRjs7OztOOzs7OzsKK0ZFNTc7U01BTEwgRVhDTEFNQVRJT04gTUFSSztQbzswO09OOzxzbWFsbD4gMDAyMTs7OztOOzs7OzsKK0ZFNTg7U01BTEwgRU0gREFTSDtQZDswO09OOzxzbWFsbD4gMjAxNDs7OztOOzs7OzsKK0ZFNTk7U01BTEwgTEVGVCBQQVJFTlRIRVNJUztQczswO09OOzxzbWFsbD4gMDAyODs7OztOO1NNQUxMIE9QRU5JTkcgUEFSRU5USEVTSVM7Ozs7CitGRTVBO1NNQUxMIFJJR0hUIFBBUkVOVEhFU0lTO1BlOzA7T047PHNtYWxsPiAwMDI5Ozs7O047U01BTEwgQ0xPU0lORyBQQVJFTlRIRVNJUzs7OzsKK0ZFNUI7U01BTEwgTEVGVCBDVVJMWSBCUkFDS0VUO1BzOzA7T047PHNtYWxsPiAwMDdCOzs7O047U01BTEwgT1BFTklORyBDVVJMWSBCUkFDS0VUOzs7OworRkU1QztTTUFMTCBSSUdIVCBDVVJMWSBCUkFDS0VUO1BlOzA7T047PHNtYWxsPiAwMDdEOzs7O047U01BTEwgQ0xPU0lORyBDVVJMWSBCUkFDS0VUOzs7OworRkU1RDtTTUFMTCBMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7UHM7MDtPTjs8c21hbGw+IDMwMTQ7Ozs7TjtTTUFMTCBPUEVOSU5HIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7Ozs7CitGRTVFO1NNQUxMIFJJR0hUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7UGU7MDtPTjs8c21hbGw+IDMwMTU7Ozs7TjtTTUFMTCBDTE9TSU5HIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7Ozs7CitGRTVGO1NNQUxMIE5VTUJFUiBTSUdOO1BvOzA7RVQ7PHNtYWxsPiAwMDIzOzs7O047Ozs7OworRkU2MDtTTUFMTCBBTVBFUlNBTkQ7UG87MDtPTjs8c21hbGw+IDAwMjY7Ozs7Tjs7Ozs7CitGRTYxO1NNQUxMIEFTVEVSSVNLO1BvOzA7T047PHNtYWxsPiAwMDJBOzs7O047Ozs7OworRkU2MjtTTUFMTCBQTFVTIFNJR047U207MDtFVDs8c21hbGw+IDAwMkI7Ozs7Tjs7Ozs7CitGRTYzO1NNQUxMIEhZUEhFTi1NSU5VUztQZDswO0VUOzxzbWFsbD4gMDAyRDs7OztOOzs7OzsKK0ZFNjQ7U01BTEwgTEVTUy1USEFOIFNJR047U207MDtPTjs8c21hbGw+IDAwM0M7Ozs7Tjs7Ozs7CitGRTY1O1NNQUxMIEdSRUFURVItVEhBTiBTSUdOO1NtOzA7T047PHNtYWxsPiAwMDNFOzs7O047Ozs7OworRkU2NjtTTUFMTCBFUVVBTFMgU0lHTjtTbTswO09OOzxzbWFsbD4gMDAzRDs7OztOOzs7OzsKK0ZFNjg7U01BTEwgUkVWRVJTRSBTT0xJRFVTO1BvOzA7T047PHNtYWxsPiAwMDVDOzs7O047U01BTEwgQkFDS1NMQVNIOzs7OworRkU2OTtTTUFMTCBET0xMQVIgU0lHTjtTYzswO0VUOzxzbWFsbD4gMDAyNDs7OztOOzs7OzsKK0ZFNkE7U01BTEwgUEVSQ0VOVCBTSUdOO1BvOzA7RVQ7PHNtYWxsPiAwMDI1Ozs7O047Ozs7OworRkU2QjtTTUFMTCBDT01NRVJDSUFMIEFUO1BvOzA7T047PHNtYWxsPiAwMDQwOzs7O047Ozs7OworRkU3MDtBUkFCSUMgRkFUSEFUQU4gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwMDIwIDA2NEI7Ozs7TjtBUkFCSUMgU1BBQ0lORyBGQVRIQVRBTjs7OzsKK0ZFNzE7QVJBQklDIFRBVFdFRUwgV0lUSCBGQVRIQVRBTiBBQk9WRTtMbzswO1I7PG1lZGlhbD4gMDY0MCAwNjRCOzs7O047QVJBQklDIEZBVEhBVEFOIE9OIFRBVFdFRUw7Ozs7CitGRTcyO0FSQUJJQyBEQU1NQVRBTiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDAwMjAgMDY0Qzs7OztOO0FSQUJJQyBTUEFDSU5HIERBTU1BVEFOOzs7OworRkU3NDtBUkFCSUMgS0FTUkFUQU4gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwMDIwIDA2NEQ7Ozs7TjtBUkFCSUMgU1BBQ0lORyBLQVNSQVRBTjs7OzsKK0ZFNzY7QVJBQklDIEZBVEhBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDAyMCAwNjRFOzs7O047QVJBQklDIFNQQUNJTkcgRkFUSEFIOzs7OworRkU3NztBUkFCSUMgRkFUSEEgTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDAgMDY0RTs7OztOO0FSQUJJQyBGQVRIQUggT04gVEFUV0VFTDs7OzsKK0ZFNzg7QVJBQklDIERBTU1BIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDAyMCAwNjRGOzs7O047QVJBQklDIFNQQUNJTkcgREFNTUFIOzs7OworRkU3OTtBUkFCSUMgREFNTUEgTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDAgMDY0Rjs7OztOO0FSQUJJQyBEQU1NQUggT04gVEFUV0VFTDs7OzsKK0ZFN0E7QVJBQklDIEtBU1JBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDAyMCAwNjUwOzs7O047QVJBQklDIFNQQUNJTkcgS0FTUkFIOzs7OworRkU3QjtBUkFCSUMgS0FTUkEgTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDAgMDY1MDs7OztOO0FSQUJJQyBLQVNSQUggT04gVEFUV0VFTDs7OzsKK0ZFN0M7QVJBQklDIFNIQUREQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDAwMjAgMDY1MTs7OztOO0FSQUJJQyBTUEFDSU5HIFNIQUREQUg7Ozs7CitGRTdEO0FSQUJJQyBTSEFEREEgTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDAgMDY1MTs7OztOO0FSQUJJQyBTSEFEREFIIE9OIFRBVFdFRUw7Ozs7CitGRTdFO0FSQUJJQyBTVUtVTiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDAwMjAgMDY1Mjs7OztOO0FSQUJJQyBTUEFDSU5HIFNVS1VOOzs7OworRkU3RjtBUkFCSUMgU1VLVU4gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDAgMDY1Mjs7OztOO0FSQUJJQyBTVUtVTiBPTiBUQVRXRUVMOzs7OworRkU4MDtBUkFCSUMgTEVUVEVSIEhBTVpBIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyMTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQU1aQUg7Ozs7CitGRTgxO0FSQUJJQyBMRVRURVIgQUxFRiBXSVRIIE1BRERBIEFCT1ZFIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyMjs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBNQUREQUggT04gQUxFRjs7OzsKK0ZFODI7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggTUFEREEgQUJPVkUgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjIyOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBNQUREQUggT04gQUxFRjs7OzsKK0ZFODM7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjIzOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEhBTVpBSCBPTiBBTEVGOzs7OworRkU4NDtBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBIQU1aQSBBQk9WRSBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjM7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEhBTVpBSCBPTiBBTEVGOzs7OworRkU4NTtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIEhBTVpBIEFCT1ZFIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyNDs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQU1aQUggT04gV0FXOzs7OworRkU4NjtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIEhBTVpBIEFCT1ZFIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyNDs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgSEFNWkFIIE9OIFdBVzs7OzsKK0ZFODc7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQkVMT1cgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI1Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEhBTVpBSCBVTkRFUiBBTEVGOzs7OworRkU4ODtBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBIQU1aQSBCRUxPVyBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MjU7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEhBTVpBSCBVTkRFUiBBTEVGOzs7OworRkU4OTtBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyNjs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQU1aQUggT04gWUE7Ozs7CitGRThBO0FSQUJJQyBMRVRURVIgWUVIIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI2Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBIQU1aQUggT04gWUE7Ozs7CitGRThCO0FSQUJJQyBMRVRURVIgWUVIIFdJVEggSEFNWkEgQUJPVkUgSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyNjs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBIQU1aQUggT04gWUE7Ozs7CitGRThDO0FSQUJJQyBMRVRURVIgWUVIIFdJVEggSEFNWkEgQUJPVkUgTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MjY7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBIQU1aQUggT04gWUE7Ozs7CitGRThEO0FSQUJJQyBMRVRURVIgQUxFRiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2Mjc7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgQUxFRjs7OzsKK0ZFOEU7QVJBQklDIExFVFRFUiBBTEVGIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyNzs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgQUxFRjs7OzsKK0ZFOEY7QVJBQklDIExFVFRFUiBCRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjI4Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEJBQTs7OzsKK0ZFOTA7QVJBQklDIExFVFRFUiBCRUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjI4Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBCQUE7Ozs7CitGRTkxO0FSQUJJQyBMRVRURVIgQkVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2Mjg7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgQkFBOzs7OworRkU5MjtBUkFCSUMgTEVUVEVSIEJFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYyODs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEJBQTs7OzsKK0ZFOTM7QVJBQklDIExFVFRFUiBURUggTUFSQlVUQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2Mjk7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgVEFBIE1BUkJVVEFIOzs7OworRkU5NDtBUkFCSUMgTEVUVEVSIFRFSCBNQVJCVVRBIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyOTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgVEFBIE1BUkJVVEFIOzs7OworRkU5NTtBUkFCSUMgTEVUVEVSIFRFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkE7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgVEFBOzs7OworRkU5NjtBUkFCSUMgTEVUVEVSIFRFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkE7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFRBQTs7OzsKK0ZFOTc7QVJBQklDIExFVFRFUiBURUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyQTs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBUQUE7Ozs7CitGRTk4O0FSQUJJQyBMRVRURVIgVEVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjJBOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgVEFBOzs7OworRkU5OTtBUkFCSUMgTEVUVEVSIFRIRUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJCOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFRIQUE7Ozs7CitGRTlBO0FSQUJJQyBMRVRURVIgVEhFSCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkI7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFRIQUE7Ozs7CitGRTlCO0FSQUJJQyBMRVRURVIgVEhFSCBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjJCOzs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIFRIQUE7Ozs7CitGRTlDO0FSQUJJQyBMRVRURVIgVEhFSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYyQjs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIFRIQUE7Ozs7CitGRTlEO0FSQUJJQyBMRVRURVIgSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkM7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSkVFTTs7OzsKK0ZFOUU7QVJBQklDIExFVFRFUiBKRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYyQzs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgSkVFTTs7OzsKK0ZFOUY7QVJBQklDIExFVFRFUiBKRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkM7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgSkVFTTs7OzsKK0ZFQTA7QVJBQklDIExFVFRFUiBKRUVNIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjJDOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgSkVFTTs7OzsKK0ZFQTE7QVJBQklDIExFVFRFUiBIQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjJEOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEhBQTs7OzsKK0ZFQTI7QVJBQklDIExFVFRFUiBIQUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJEOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBIQUE7Ozs7CitGRUEzO0FSQUJJQyBMRVRURVIgSEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MkQ7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgSEFBOzs7OworRkVBNDtBUkFCSUMgTEVUVEVSIEhBSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYyRDs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEhBQTs7OzsKK0ZFQTU7QVJBQklDIExFVFRFUiBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYyRTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBLSEFBOzs7OworRkVBNjtBUkFCSUMgTEVUVEVSIEtIQUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjJFOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBLSEFBOzs7OworRkVBNztBUkFCSUMgTEVUVEVSIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYyRTs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBLSEFBOzs7OworRkVBODtBUkFCSUMgTEVUVEVSIEtIQUggTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MkU7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBLSEFBOzs7OworRkVBOTtBUkFCSUMgTEVUVEVSIERBTCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MkY7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgREFMOzs7OworRkVBQTtBUkFCSUMgTEVUVEVSIERBTCBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MkY7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIERBTDs7OzsKK0ZFQUI7QVJBQklDIExFVFRFUiBUSEFMIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzMDs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBUSEFMOzs7OworRkVBQztBUkFCSUMgTEVUVEVSIFRIQUwgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjMwOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBUSEFMOzs7OworRkVBRDtBUkFCSUMgTEVUVEVSIFJFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzE7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgUkE7Ozs7CitGRUFFO0FSQUJJQyBMRVRURVIgUkVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzMTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgUkE7Ozs7CitGRUFGO0FSQUJJQyBMRVRURVIgWkFJTiBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2MzI7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgWkFJTjs7OzsKK0ZFQjA7QVJBQklDIExFVFRFUiBaQUlOIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzMjs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgWkFJTjs7OzsKK0ZFQjE7QVJBQklDIExFVFRFUiBTRUVOIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzMzs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBTRUVOOzs7OworRkVCMjtBUkFCSUMgTEVUVEVSIFNFRU4gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjMzOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBTRUVOOzs7OworRkVCMztBUkFCSUMgTEVUVEVSIFNFRU4gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzMzs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBTRUVOOzs7OworRkVCNDtBUkFCSUMgTEVUVEVSIFNFRU4gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MzM7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBTRUVOOzs7OworRkVCNTtBUkFCSUMgTEVUVEVSIFNIRUVOIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzNDs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBTSEVFTjs7OzsKK0ZFQjY7QVJBQklDIExFVFRFUiBTSEVFTiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2MzQ7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFNIRUVOOzs7OworRkVCNztBUkFCSUMgTEVUVEVSIFNIRUVOIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzQ7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgU0hFRU47Ozs7CitGRUI4O0FSQUJJQyBMRVRURVIgU0hFRU4gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2MzQ7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBTSEVFTjs7OzsKK0ZFQjk7QVJBQklDIExFVFRFUiBTQUQgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM1Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFNBRDs7OzsKK0ZFQkE7QVJBQklDIExFVFRFUiBTQUQgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM1Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBTQUQ7Ozs7CitGRUJCO0FSQUJJQyBMRVRURVIgU0FEIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzU7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgU0FEOzs7OworRkVCQztBUkFCSUMgTEVUVEVSIFNBRCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYzNTs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIFNBRDs7OzsKK0ZFQkQ7QVJBQklDIExFVFRFUiBEQUQgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM2Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIERBRDs7OzsKK0ZFQkU7QVJBQklDIExFVFRFUiBEQUQgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM2Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBEQUQ7Ozs7CitGRUJGO0FSQUJJQyBMRVRURVIgREFEIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2MzY7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgREFEOzs7OworRkVDMDtBUkFCSUMgTEVUVEVSIERBRCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYzNjs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIERBRDs7OzsKK0ZFQzE7QVJBQklDIExFVFRFUiBUQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM3Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFRBSDs7OzsKK0ZFQzI7QVJBQklDIExFVFRFUiBUQUggRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjM3Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBUQUg7Ozs7CitGRUMzO0FSQUJJQyBMRVRURVIgVEFIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2Mzc7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgVEFIOzs7OworRkVDNDtBUkFCSUMgTEVUVEVSIFRBSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYzNzs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIFRBSDs7OzsKK0ZFQzU7QVJBQklDIExFVFRFUiBaQUggSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjM4Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIERIQUg7Ozs7CitGRUM2O0FSQUJJQyBMRVRURVIgWkFIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzODs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgREhBSDs7OzsKK0ZFQzc7QVJBQklDIExFVFRFUiBaQUggSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzODs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBESEFIOzs7OworRkVDODtBUkFCSUMgTEVUVEVSIFpBSCBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYzODs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIERIQUg7Ozs7CitGRUM5O0FSQUJJQyBMRVRURVIgQUlOIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDYzOTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBBSU47Ozs7CitGRUNBO0FSQUJJQyBMRVRURVIgQUlOIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzOTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgQUlOOzs7OworRkVDQjtBUkFCSUMgTEVUVEVSIEFJTiBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjM5Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIEFJTjs7OzsKK0ZFQ0M7QVJBQklDIExFVFRFUiBBSU4gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2Mzk7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBBSU47Ozs7CitGRUNEO0FSQUJJQyBMRVRURVIgR0hBSU4gSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjNBOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEdIQUlOOzs7OworRkVDRTtBUkFCSUMgTEVUVEVSIEdIQUlOIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDYzQTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgR0hBSU47Ozs7CitGRUNGO0FSQUJJQyBMRVRURVIgR0hBSU4gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDYzQTs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBHSEFJTjs7OzsKK0ZFRDA7QVJBQklDIExFVFRFUiBHSEFJTiBNRURJQUwgRk9STTtMbzswO1I7PG1lZGlhbD4gMDYzQTs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEdIQUlOOzs7OworRkVEMTtBUkFCSUMgTEVUVEVSIEZFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDE7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgRkE7Ozs7CitGRUQyO0FSQUJJQyBMRVRURVIgRkVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0MTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgRkE7Ozs7CitGRUQzO0FSQUJJQyBMRVRURVIgRkVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDE7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgRkE7Ozs7CitGRUQ0O0FSQUJJQyBMRVRURVIgRkVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQxOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgRkE7Ozs7CitGRUQ1O0FSQUJJQyBMRVRURVIgUUFGIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0Mjs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBRQUY7Ozs7CitGRUQ2O0FSQUJJQyBMRVRURVIgUUFGIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0Mjs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgUUFGOzs7OworRkVENztBUkFCSUMgTEVUVEVSIFFBRiBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQyOzs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIFFBRjs7OzsKK0ZFRDg7QVJBQklDIExFVFRFUiBRQUYgTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDI7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBRQUY7Ozs7CitGRUQ5O0FSQUJJQyBMRVRURVIgS0FGIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0Mzs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBDQUY7Ozs7CitGRURBO0FSQUJJQyBMRVRURVIgS0FGIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0Mzs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgQ0FGOzs7OworRkVEQjtBUkFCSUMgTEVUVEVSIEtBRiBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQzOzs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIENBRjs7OzsKK0ZFREM7QVJBQklDIExFVFRFUiBLQUYgTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDM7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBDQUY7Ozs7CitGRUREO0FSQUJJQyBMRVRURVIgTEFNIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NDs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBMQU07Ozs7CitGRURFO0FSQUJJQyBMRVRURVIgTEFNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NDs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgTEFNOzs7OworRkVERjtBUkFCSUMgTEVUVEVSIExBTSBJTklUSUFMIEZPUk07TG87MDtSOzxpbml0aWFsPiAwNjQ0Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIExBTTs7OzsKK0ZFRTA7QVJBQklDIExFVFRFUiBMQU0gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDQ7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBMQU07Ozs7CitGRUUxO0FSQUJJQyBMRVRURVIgTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDU7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgTUVFTTs7OzsKK0ZFRTI7QVJBQklDIExFVFRFUiBNRUVNIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgTUVFTTs7OzsKK0ZFRTM7QVJBQklDIExFVFRFUiBNRUVNIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDU7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgTUVFTTs7OzsKK0ZFRTQ7QVJBQklDIExFVFRFUiBNRUVNIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQ1Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgTUVFTTs7OzsKK0ZFRTU7QVJBQklDIExFVFRFUiBOT09OIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0Njs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBOT09OOzs7OworRkVFNjtBUkFCSUMgTEVUVEVSIE5PT04gRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ2Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBOT09OOzs7OworRkVFNztBUkFCSUMgTEVUVEVSIE5PT04gSU5JVElBTCBGT1JNO0xvOzA7Ujs8aW5pdGlhbD4gMDY0Njs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBOT09OOzs7OworRkVFODtBUkFCSUMgTEVUVEVSIE5PT04gTUVESUFMIEZPUk07TG87MDtSOzxtZWRpYWw+IDA2NDY7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBOT09OOzs7OworRkVFOTtBUkFCSUMgTEVUVEVSIEhFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDc7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSEE7Ozs7CitGRUVBO0FSQUJJQyBMRVRURVIgSEVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0Nzs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgSEE7Ozs7CitGRUVCO0FSQUJJQyBMRVRURVIgSEVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NDc7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgSEE7Ozs7CitGRUVDO0FSQUJJQyBMRVRURVIgSEVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjQ3Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgSEE7Ozs7CitGRUVEO0FSQUJJQyBMRVRURVIgV0FXIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0ODs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBXQVc7Ozs7CitGRUVFO0FSQUJJQyBMRVRURVIgV0FXIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0ODs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgV0FXOzs7OworRkVFRjtBUkFCSUMgTEVUVEVSIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NDk7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgQUxFRiBNQVFTVVJBSDs7OzsKK0ZFRjA7QVJBQklDIExFVFRFUiBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO1I7PGZpbmFsPiAwNjQ5Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBBTEVGIE1BUVNVUkFIOzs7OworRkVGMTtBUkFCSUMgTEVUVEVSIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7Ujs8aXNvbGF0ZWQ+IDA2NEE7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgWUE7Ozs7CitGRUYyO0FSQUJJQyBMRVRURVIgWUVIIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0QTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgWUE7Ozs7CitGRUYzO0FSQUJJQyBMRVRURVIgWUVIIElOSVRJQUwgRk9STTtMbzswO1I7PGluaXRpYWw+IDA2NEE7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgWUE7Ozs7CitGRUY0O0FSQUJJQyBMRVRURVIgWUVIIE1FRElBTCBGT1JNO0xvOzA7Ujs8bWVkaWFsPiAwNjRBOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgWUE7Ozs7CitGRUY1O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggTUFEREEgQUJPVkUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ0IDA2MjI7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgTUFEREFIIE9OIExJR0FUVVJFIExBTSBBTEVGOzs7OworRkVGNjtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBXSVRIIE1BRERBIEFCT1ZFIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NCAwNjIyOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBNQUREQUggT04gTElHQVRVUkUgTEFNIEFMRUY7Ozs7CitGRUY3O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ0IDA2MjM7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSEFNWkFIIE9OIExJR0FUVVJFIExBTSBBTEVGOzs7OworRkVGODtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBXSVRIIEhBTVpBIEFCT1ZFIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NCAwNjIzOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBIQU1aQUggT04gTElHQVRVUkUgTEFNIEFMRUY7Ozs7CitGRUY5O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggSEFNWkEgQkVMT1cgSVNPTEFURUQgRk9STTtMbzswO1I7PGlzb2xhdGVkPiAwNjQ0IDA2MjU7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSEFNWkFIIFVOREVSIExJR0FUVVJFIExBTSBBTEVGOzs7OworRkVGQTtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBXSVRIIEhBTVpBIEJFTE9XIEZJTkFMIEZPUk07TG87MDtSOzxmaW5hbD4gMDY0NCAwNjI1Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBIQU1aQUggVU5ERVIgTElHQVRVUkUgTEFNIEFMRUY7Ozs7CitGRUZCO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIElTT0xBVEVEIEZPUk07TG87MDtSOzxpc29sYXRlZD4gMDY0NCAwNjI3Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIExJR0FUVVJFIExBTSBBTEVGOzs7OworRkVGQztBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBGSU5BTCBGT1JNO0xvOzA7Ujs8ZmluYWw+IDA2NDQgMDYyNzs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgTElHQVRVUkUgTEFNIEFMRUY7Ozs7CitGRUZGO1pFUk8gV0lEVEggTk8tQlJFQUsgU1BBQ0U7Q2Y7MDtPTjs7Ozs7TjtCWVRFIE9SREVSIE1BUks7Ozs7CitGRjAxO0ZVTExXSURUSCBFWENMQU1BVElPTiBNQVJLO1BvOzA7T047PHdpZGU+IDAwMjE7Ozs7Tjs7Ozs7CitGRjAyO0ZVTExXSURUSCBRVU9UQVRJT04gTUFSSztQbzswO09OOzx3aWRlPiAwMDIyOzs7O047Ozs7OworRkYwMztGVUxMV0lEVEggTlVNQkVSIFNJR047UG87MDtFVDs8d2lkZT4gMDAyMzs7OztOOzs7OzsKK0ZGMDQ7RlVMTFdJRFRIIERPTExBUiBTSUdOO1NjOzA7RVQ7PHdpZGU+IDAwMjQ7Ozs7Tjs7Ozs7CitGRjA1O0ZVTExXSURUSCBQRVJDRU5UIFNJR047UG87MDtFVDs8d2lkZT4gMDAyNTs7OztOOzs7OzsKK0ZGMDY7RlVMTFdJRFRIIEFNUEVSU0FORDtQbzswO09OOzx3aWRlPiAwMDI2Ozs7O047Ozs7OworRkYwNztGVUxMV0lEVEggQVBPU1RST1BIRTtQbzswO09OOzx3aWRlPiAwMDI3Ozs7O047Ozs7OworRkYwODtGVUxMV0lEVEggTEVGVCBQQVJFTlRIRVNJUztQczswO09OOzx3aWRlPiAwMDI4Ozs7O047RlVMTFdJRFRIIE9QRU5JTkcgUEFSRU5USEVTSVM7Ozs7CitGRjA5O0ZVTExXSURUSCBSSUdIVCBQQVJFTlRIRVNJUztQZTswO09OOzx3aWRlPiAwMDI5Ozs7O047RlVMTFdJRFRIIENMT1NJTkcgUEFSRU5USEVTSVM7Ozs7CitGRjBBO0ZVTExXSURUSCBBU1RFUklTSztQbzswO09OOzx3aWRlPiAwMDJBOzs7O047Ozs7OworRkYwQjtGVUxMV0lEVEggUExVUyBTSUdOO1NtOzA7RVQ7PHdpZGU+IDAwMkI7Ozs7Tjs7Ozs7CitGRjBDO0ZVTExXSURUSCBDT01NQTtQbzswO0NTOzx3aWRlPiAwMDJDOzs7O047Ozs7OworRkYwRDtGVUxMV0lEVEggSFlQSEVOLU1JTlVTO1BkOzA7RVQ7PHdpZGU+IDAwMkQ7Ozs7Tjs7Ozs7CitGRjBFO0ZVTExXSURUSCBGVUxMIFNUT1A7UG87MDtDUzs8d2lkZT4gMDAyRTs7OztOO0ZVTExXSURUSCBQRVJJT0Q7Ozs7CitGRjBGO0ZVTExXSURUSCBTT0xJRFVTO1BvOzA7RVM7PHdpZGU+IDAwMkY7Ozs7TjtGVUxMV0lEVEggU0xBU0g7Ozs7CitGRjEwO0ZVTExXSURUSCBESUdJVCBaRVJPO05kOzA7RU47PHdpZGU+IDAwMzA7MDswOzA7Tjs7Ozs7CitGRjExO0ZVTExXSURUSCBESUdJVCBPTkU7TmQ7MDtFTjs8d2lkZT4gMDAzMTsxOzE7MTtOOzs7OzsKK0ZGMTI7RlVMTFdJRFRIIERJR0lUIFRXTztOZDswO0VOOzx3aWRlPiAwMDMyOzI7MjsyO047Ozs7OworRkYxMztGVUxMV0lEVEggRElHSVQgVEhSRUU7TmQ7MDtFTjs8d2lkZT4gMDAzMzszOzM7MztOOzs7OzsKK0ZGMTQ7RlVMTFdJRFRIIERJR0lUIEZPVVI7TmQ7MDtFTjs8d2lkZT4gMDAzNDs0OzQ7NDtOOzs7OzsKK0ZGMTU7RlVMTFdJRFRIIERJR0lUIEZJVkU7TmQ7MDtFTjs8d2lkZT4gMDAzNTs1OzU7NTtOOzs7OzsKK0ZGMTY7RlVMTFdJRFRIIERJR0lUIFNJWDtOZDswO0VOOzx3aWRlPiAwMDM2OzY7Njs2O047Ozs7OworRkYxNztGVUxMV0lEVEggRElHSVQgU0VWRU47TmQ7MDtFTjs8d2lkZT4gMDAzNzs3Ozc7NztOOzs7OzsKK0ZGMTg7RlVMTFdJRFRIIERJR0lUIEVJR0hUO05kOzA7RU47PHdpZGU+IDAwMzg7ODs4Ozg7Tjs7Ozs7CitGRjE5O0ZVTExXSURUSCBESUdJVCBOSU5FO05kOzA7RU47PHdpZGU+IDAwMzk7OTs5Ozk7Tjs7Ozs7CitGRjFBO0ZVTExXSURUSCBDT0xPTjtQbzswO0NTOzx3aWRlPiAwMDNBOzs7O047Ozs7OworRkYxQjtGVUxMV0lEVEggU0VNSUNPTE9OO1BvOzA7T047PHdpZGU+IDAwM0I7Ozs7Tjs7Ozs7CitGRjFDO0ZVTExXSURUSCBMRVNTLVRIQU4gU0lHTjtTbTswO09OOzx3aWRlPiAwMDNDOzs7O047Ozs7OworRkYxRDtGVUxMV0lEVEggRVFVQUxTIFNJR047U207MDtPTjs8d2lkZT4gMDAzRDs7OztOOzs7OzsKK0ZGMUU7RlVMTFdJRFRIIEdSRUFURVItVEhBTiBTSUdOO1NtOzA7T047PHdpZGU+IDAwM0U7Ozs7Tjs7Ozs7CitGRjFGO0ZVTExXSURUSCBRVUVTVElPTiBNQVJLO1BvOzA7T047PHdpZGU+IDAwM0Y7Ozs7Tjs7Ozs7CitGRjIwO0ZVTExXSURUSCBDT01NRVJDSUFMIEFUO1BvOzA7T047PHdpZGU+IDAwNDA7Ozs7Tjs7Ozs7CitGRjIxO0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBBO0x1OzA7TDs8d2lkZT4gMDA0MTs7OztOOzs7O0ZGNDE7CitGRjIyO0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBCO0x1OzA7TDs8d2lkZT4gMDA0Mjs7OztOOzs7O0ZGNDI7CitGRjIzO0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBDO0x1OzA7TDs8d2lkZT4gMDA0Mzs7OztOOzs7O0ZGNDM7CitGRjI0O0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBEO0x1OzA7TDs8d2lkZT4gMDA0NDs7OztOOzs7O0ZGNDQ7CitGRjI1O0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBFO0x1OzA7TDs8d2lkZT4gMDA0NTs7OztOOzs7O0ZGNDU7CitGRjI2O0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBGO0x1OzA7TDs8d2lkZT4gMDA0Njs7OztOOzs7O0ZGNDY7CitGRjI3O0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBHO0x1OzA7TDs8d2lkZT4gMDA0Nzs7OztOOzs7O0ZGNDc7CitGRjI4O0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBIO0x1OzA7TDs8d2lkZT4gMDA0ODs7OztOOzs7O0ZGNDg7CitGRjI5O0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBJO0x1OzA7TDs8d2lkZT4gMDA0OTs7OztOOzs7O0ZGNDk7CitGRjJBO0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBKO0x1OzA7TDs8d2lkZT4gMDA0QTs7OztOOzs7O0ZGNEE7CitGRjJCO0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBLO0x1OzA7TDs8d2lkZT4gMDA0Qjs7OztOOzs7O0ZGNEI7CitGRjJDO0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBMO0x1OzA7TDs8d2lkZT4gMDA0Qzs7OztOOzs7O0ZGNEM7CitGRjJEO0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBNO0x1OzA7TDs8d2lkZT4gMDA0RDs7OztOOzs7O0ZGNEQ7CitGRjJFO0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBOO0x1OzA7TDs8d2lkZT4gMDA0RTs7OztOOzs7O0ZGNEU7CitGRjJGO0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBPO0x1OzA7TDs8d2lkZT4gMDA0Rjs7OztOOzs7O0ZGNEY7CitGRjMwO0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBQO0x1OzA7TDs8d2lkZT4gMDA1MDs7OztOOzs7O0ZGNTA7CitGRjMxO0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBRO0x1OzA7TDs8d2lkZT4gMDA1MTs7OztOOzs7O0ZGNTE7CitGRjMyO0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBSO0x1OzA7TDs8d2lkZT4gMDA1Mjs7OztOOzs7O0ZGNTI7CitGRjMzO0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBTO0x1OzA7TDs8d2lkZT4gMDA1Mzs7OztOOzs7O0ZGNTM7CitGRjM0O0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBUO0x1OzA7TDs8d2lkZT4gMDA1NDs7OztOOzs7O0ZGNTQ7CitGRjM1O0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBVO0x1OzA7TDs8d2lkZT4gMDA1NTs7OztOOzs7O0ZGNTU7CitGRjM2O0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBWO0x1OzA7TDs8d2lkZT4gMDA1Njs7OztOOzs7O0ZGNTY7CitGRjM3O0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBXO0x1OzA7TDs8d2lkZT4gMDA1Nzs7OztOOzs7O0ZGNTc7CitGRjM4O0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBYO0x1OzA7TDs8d2lkZT4gMDA1ODs7OztOOzs7O0ZGNTg7CitGRjM5O0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBZO0x1OzA7TDs8d2lkZT4gMDA1OTs7OztOOzs7O0ZGNTk7CitGRjNBO0ZVTExXSURUSCBMQVRJTiBDQVBJVEFMIExFVFRFUiBaO0x1OzA7TDs8d2lkZT4gMDA1QTs7OztOOzs7O0ZGNUE7CitGRjNCO0ZVTExXSURUSCBMRUZUIFNRVUFSRSBCUkFDS0VUO1BzOzA7T047PHdpZGU+IDAwNUI7Ozs7TjtGVUxMV0lEVEggT1BFTklORyBTUVVBUkUgQlJBQ0tFVDs7OzsKK0ZGM0M7RlVMTFdJRFRIIFJFVkVSU0UgU09MSURVUztQbzswO09OOzx3aWRlPiAwMDVDOzs7O047RlVMTFdJRFRIIEJBQ0tTTEFTSDs7OzsKK0ZGM0Q7RlVMTFdJRFRIIFJJR0hUIFNRVUFSRSBCUkFDS0VUO1BlOzA7T047PHdpZGU+IDAwNUQ7Ozs7TjtGVUxMV0lEVEggQ0xPU0lORyBTUVVBUkUgQlJBQ0tFVDs7OzsKK0ZGM0U7RlVMTFdJRFRIIENJUkNVTUZMRVggQUNDRU5UO1NrOzA7T047PHdpZGU+IDAwNUU7Ozs7TjtGVUxMV0lEVEggU1BBQ0lORyBDSVJDVU1GTEVYOzs7OworRkYzRjtGVUxMV0lEVEggTE9XIExJTkU7UGM7MDtPTjs8d2lkZT4gMDA1Rjs7OztOO0ZVTExXSURUSCBTUEFDSU5HIFVOREVSU0NPUkU7Ozs7CitGRjQwO0ZVTExXSURUSCBHUkFWRSBBQ0NFTlQ7U2s7MDtPTjs8d2lkZT4gMDA2MDs7OztOO0ZVTExXSURUSCBTUEFDSU5HIEdSQVZFOzs7OworRkY0MTtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEE7TGw7MDtMOzx3aWRlPiAwMDYxOzs7O047OztGRjIxOztGRjIxCitGRjQyO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgQjtMbDswO0w7PHdpZGU+IDAwNjI7Ozs7Tjs7O0ZGMjI7O0ZGMjIKK0ZGNDM7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBDO0xsOzA7TDs8d2lkZT4gMDA2Mzs7OztOOzs7RkYyMzs7RkYyMworRkY0NDtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEQ7TGw7MDtMOzx3aWRlPiAwMDY0Ozs7O047OztGRjI0OztGRjI0CitGRjQ1O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgRTtMbDswO0w7PHdpZGU+IDAwNjU7Ozs7Tjs7O0ZGMjU7O0ZGMjUKK0ZGNDY7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBGO0xsOzA7TDs8d2lkZT4gMDA2Njs7OztOOzs7RkYyNjs7RkYyNgorRkY0NztGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEc7TGw7MDtMOzx3aWRlPiAwMDY3Ozs7O047OztGRjI3OztGRjI3CitGRjQ4O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgSDtMbDswO0w7PHdpZGU+IDAwNjg7Ozs7Tjs7O0ZGMjg7O0ZGMjgKK0ZGNDk7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBJO0xsOzA7TDs8d2lkZT4gMDA2OTs7OztOOzs7RkYyOTs7RkYyOQorRkY0QTtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEo7TGw7MDtMOzx3aWRlPiAwMDZBOzs7O047OztGRjJBOztGRjJBCitGRjRCO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgSztMbDswO0w7PHdpZGU+IDAwNkI7Ozs7Tjs7O0ZGMkI7O0ZGMkIKK0ZGNEM7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBMO0xsOzA7TDs8d2lkZT4gMDA2Qzs7OztOOzs7RkYyQzs7RkYyQworRkY0RDtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIE07TGw7MDtMOzx3aWRlPiAwMDZEOzs7O047OztGRjJEOztGRjJECitGRjRFO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgTjtMbDswO0w7PHdpZGU+IDAwNkU7Ozs7Tjs7O0ZGMkU7O0ZGMkUKK0ZGNEY7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBPO0xsOzA7TDs8d2lkZT4gMDA2Rjs7OztOOzs7RkYyRjs7RkYyRgorRkY1MDtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFA7TGw7MDtMOzx3aWRlPiAwMDcwOzs7O047OztGRjMwOztGRjMwCitGRjUxO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgUTtMbDswO0w7PHdpZGU+IDAwNzE7Ozs7Tjs7O0ZGMzE7O0ZGMzEKK0ZGNTI7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBSO0xsOzA7TDs8d2lkZT4gMDA3Mjs7OztOOzs7RkYzMjs7RkYzMgorRkY1MztGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFM7TGw7MDtMOzx3aWRlPiAwMDczOzs7O047OztGRjMzOztGRjMzCitGRjU0O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgVDtMbDswO0w7PHdpZGU+IDAwNzQ7Ozs7Tjs7O0ZGMzQ7O0ZGMzQKK0ZGNTU7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBVO0xsOzA7TDs8d2lkZT4gMDA3NTs7OztOOzs7RkYzNTs7RkYzNQorRkY1NjtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFY7TGw7MDtMOzx3aWRlPiAwMDc2Ozs7O047OztGRjM2OztGRjM2CitGRjU3O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgVztMbDswO0w7PHdpZGU+IDAwNzc7Ozs7Tjs7O0ZGMzc7O0ZGMzcKK0ZGNTg7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBYO0xsOzA7TDs8d2lkZT4gMDA3ODs7OztOOzs7RkYzODs7RkYzOAorRkY1OTtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFk7TGw7MDtMOzx3aWRlPiAwMDc5Ozs7O047OztGRjM5OztGRjM5CitGRjVBO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgWjtMbDswO0w7PHdpZGU+IDAwN0E7Ozs7Tjs7O0ZGM0E7O0ZGM0EKK0ZGNUI7RlVMTFdJRFRIIExFRlQgQ1VSTFkgQlJBQ0tFVDtQczswO09OOzx3aWRlPiAwMDdCOzs7O047RlVMTFdJRFRIIE9QRU5JTkcgQ1VSTFkgQlJBQ0tFVDs7OzsKK0ZGNUM7RlVMTFdJRFRIIFZFUlRJQ0FMIExJTkU7U207MDtPTjs8d2lkZT4gMDA3Qzs7OztOO0ZVTExXSURUSCBWRVJUSUNBTCBCQVI7Ozs7CitGRjVEO0ZVTExXSURUSCBSSUdIVCBDVVJMWSBCUkFDS0VUO1BlOzA7T047PHdpZGU+IDAwN0Q7Ozs7TjtGVUxMV0lEVEggQ0xPU0lORyBDVVJMWSBCUkFDS0VUOzs7OworRkY1RTtGVUxMV0lEVEggVElMREU7U207MDtPTjs8d2lkZT4gMDA3RTs7OztOO0ZVTExXSURUSCBTUEFDSU5HIFRJTERFOzs7OworRkY2MTtIQUxGV0lEVEggSURFT0dSQVBISUMgRlVMTCBTVE9QO1BvOzA7T047PG5hcnJvdz4gMzAwMjs7OztOO0hBTEZXSURUSCBJREVPR1JBUEhJQyBQRVJJT0Q7Ozs7CitGRjYyO0hBTEZXSURUSCBMRUZUIENPUk5FUiBCUkFDS0VUO1BzOzA7T047PG5hcnJvdz4gMzAwQzs7OztOO0hBTEZXSURUSCBPUEVOSU5HIENPUk5FUiBCUkFDS0VUOzs7OworRkY2MztIQUxGV0lEVEggUklHSFQgQ09STkVSIEJSQUNLRVQ7UGU7MDtPTjs8bmFycm93PiAzMDBEOzs7O047SEFMRldJRFRIIENMT1NJTkcgQ09STkVSIEJSQUNLRVQ7Ozs7CitGRjY0O0hBTEZXSURUSCBJREVPR1JBUEhJQyBDT01NQTtQbzswO09OOzxuYXJyb3c+IDMwMDE7Ozs7Tjs7Ozs7CitGRjY1O0hBTEZXSURUSCBLQVRBS0FOQSBNSURETEUgRE9UO1BjOzA7TDs8bmFycm93PiAzMEZCOzs7O047Ozs7OworRkY2NjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFdPO0xvOzA7TDs8bmFycm93PiAzMEYyOzs7O047Ozs7OworRkY2NztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIEE7TG87MDtMOzxuYXJyb3c+IDMwQTE7Ozs7Tjs7Ozs7CitGRjY4O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgSTtMbzswO0w7PG5hcnJvdz4gMzBBMzs7OztOOzs7OzsKK0ZGNjk7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBVO0xvOzA7TDs8bmFycm93PiAzMEE1Ozs7O047Ozs7OworRkY2QTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIEU7TG87MDtMOzxuYXJyb3c+IDMwQTc7Ozs7Tjs7Ozs7CitGRjZCO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgTztMbzswO0w7PG5hcnJvdz4gMzBBOTs7OztOOzs7OzsKK0ZGNkM7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBZQTtMbzswO0w7PG5hcnJvdz4gMzBFMzs7OztOOzs7OzsKK0ZGNkQ7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBZVTtMbzswO0w7PG5hcnJvdz4gMzBFNTs7OztOOzs7OzsKK0ZGNkU7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBZTztMbzswO0w7PG5hcnJvdz4gMzBFNzs7OztOOzs7OzsKK0ZGNkY7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBUVTtMbzswO0w7PG5hcnJvdz4gMzBDMzs7OztOOzs7OzsKK0ZGNzA7SEFMRldJRFRIIEtBVEFLQU5BLUhJUkFHQU5BIFBST0xPTkdFRCBTT1VORCBNQVJLO0xtOzA7TDs8bmFycm93PiAzMEZDOzs7O047Ozs7OworRkY3MTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEE7TG87MDtMOzxuYXJyb3c+IDMwQTI7Ozs7Tjs7Ozs7CitGRjcyO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgSTtMbzswO0w7PG5hcnJvdz4gMzBBNDs7OztOOzs7OzsKK0ZGNzM7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBVO0xvOzA7TDs8bmFycm93PiAzMEE2Ozs7O047Ozs7OworRkY3NDtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEU7TG87MDtMOzxuYXJyb3c+IDMwQTg7Ozs7Tjs7Ozs7CitGRjc1O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTztMbzswO0w7PG5hcnJvdz4gMzBBQTs7OztOOzs7OzsKK0ZGNzY7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBLQTtMbzswO0w7PG5hcnJvdz4gMzBBQjs7OztOOzs7OzsKK0ZGNzc7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBLSTtMbzswO0w7PG5hcnJvdz4gMzBBRDs7OztOOzs7OzsKK0ZGNzg7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBLVTtMbzswO0w7PG5hcnJvdz4gMzBBRjs7OztOOzs7OzsKK0ZGNzk7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBLRTtMbzswO0w7PG5hcnJvdz4gMzBCMTs7OztOOzs7OzsKK0ZGN0E7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBLTztMbzswO0w7PG5hcnJvdz4gMzBCMzs7OztOOzs7OzsKK0ZGN0I7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTQTtMbzswO0w7PG5hcnJvdz4gMzBCNTs7OztOOzs7OzsKK0ZGN0M7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTSTtMbzswO0w7PG5hcnJvdz4gMzBCNzs7OztOOzs7OzsKK0ZGN0Q7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTVTtMbzswO0w7PG5hcnJvdz4gMzBCOTs7OztOOzs7OzsKK0ZGN0U7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTRTtMbzswO0w7PG5hcnJvdz4gMzBCQjs7OztOOzs7OzsKK0ZGN0Y7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTztMbzswO0w7PG5hcnJvdz4gMzBCRDs7OztOOzs7OzsKK0ZGODA7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBUQTtMbzswO0w7PG5hcnJvdz4gMzBCRjs7OztOOzs7OzsKK0ZGODE7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBUSTtMbzswO0w7PG5hcnJvdz4gMzBDMTs7OztOOzs7OzsKK0ZGODI7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBUVTtMbzswO0w7PG5hcnJvdz4gMzBDNDs7OztOOzs7OzsKK0ZGODM7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBURTtMbzswO0w7PG5hcnJvdz4gMzBDNjs7OztOOzs7OzsKK0ZGODQ7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBUTztMbzswO0w7PG5hcnJvdz4gMzBDODs7OztOOzs7OzsKK0ZGODU7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBOQTtMbzswO0w7PG5hcnJvdz4gMzBDQTs7OztOOzs7OzsKK0ZGODY7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBOSTtMbzswO0w7PG5hcnJvdz4gMzBDQjs7OztOOzs7OzsKK0ZGODc7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBOVTtMbzswO0w7PG5hcnJvdz4gMzBDQzs7OztOOzs7OzsKK0ZGODg7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBORTtMbzswO0w7PG5hcnJvdz4gMzBDRDs7OztOOzs7OzsKK0ZGODk7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBOTztMbzswO0w7PG5hcnJvdz4gMzBDRTs7OztOOzs7OzsKK0ZGOEE7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBIQTtMbzswO0w7PG5hcnJvdz4gMzBDRjs7OztOOzs7OzsKK0ZGOEI7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBISTtMbzswO0w7PG5hcnJvdz4gMzBEMjs7OztOOzs7OzsKK0ZGOEM7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBIVTtMbzswO0w7PG5hcnJvdz4gMzBENTs7OztOOzs7OzsKK0ZGOEQ7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBIRTtMbzswO0w7PG5hcnJvdz4gMzBEODs7OztOOzs7OzsKK0ZGOEU7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBITztMbzswO0w7PG5hcnJvdz4gMzBEQjs7OztOOzs7OzsKK0ZGOEY7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBNQTtMbzswO0w7PG5hcnJvdz4gMzBERTs7OztOOzs7OzsKK0ZGOTA7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBNSTtMbzswO0w7PG5hcnJvdz4gMzBERjs7OztOOzs7OzsKK0ZGOTE7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBNVTtMbzswO0w7PG5hcnJvdz4gMzBFMDs7OztOOzs7OzsKK0ZGOTI7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBNRTtMbzswO0w7PG5hcnJvdz4gMzBFMTs7OztOOzs7OzsKK0ZGOTM7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBNTztMbzswO0w7PG5hcnJvdz4gMzBFMjs7OztOOzs7OzsKK0ZGOTQ7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBZQTtMbzswO0w7PG5hcnJvdz4gMzBFNDs7OztOOzs7OzsKK0ZGOTU7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBZVTtMbzswO0w7PG5hcnJvdz4gMzBFNjs7OztOOzs7OzsKK0ZGOTY7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBZTztMbzswO0w7PG5hcnJvdz4gMzBFODs7OztOOzs7OzsKK0ZGOTc7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBSQTtMbzswO0w7PG5hcnJvdz4gMzBFOTs7OztOOzs7OzsKK0ZGOTg7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBSSTtMbzswO0w7PG5hcnJvdz4gMzBFQTs7OztOOzs7OzsKK0ZGOTk7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBSVTtMbzswO0w7PG5hcnJvdz4gMzBFQjs7OztOOzs7OzsKK0ZGOUE7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBSRTtMbzswO0w7PG5hcnJvdz4gMzBFQzs7OztOOzs7OzsKK0ZGOUI7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBSTztMbzswO0w7PG5hcnJvdz4gMzBFRDs7OztOOzs7OzsKK0ZGOUM7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBXQTtMbzswO0w7PG5hcnJvdz4gMzBFRjs7OztOOzs7OzsKK0ZGOUQ7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBOO0xvOzA7TDs8bmFycm93PiAzMEYzOzs7O047Ozs7OworRkY5RTtIQUxGV0lEVEggS0FUQUtBTkEgVk9JQ0VEIFNPVU5EIE1BUks7TG07MDtPTjs8bmFycm93PiAzMDk5Ozs7O047Ozs7OworRkY5RjtIQUxGV0lEVEggS0FUQUtBTkEgU0VNSS1WT0lDRUQgU09VTkQgTUFSSztMbTswO09OOzxuYXJyb3c+IDMwOUE7Ozs7Tjs7Ozs7CitGRkEwO0hBTEZXSURUSCBIQU5HVUwgRklMTEVSO0xvOzA7TDs8bmFycm93PiAzMTY0Ozs7O047SEFMRldJRFRIIEhBTkdVTCBDQUUgT007Ozs7CitGRkExO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEtJWUVPSztMbzswO0w7PG5hcnJvdz4gMzEzMTs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEdJWUVPRzs7OzsKK0ZGQTI7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkdLSVlFT0s7TG87MDtMOzxuYXJyb3c+IDMxMzI7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FORyBHSVlFT0c7Ozs7CitGRkEzO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEtJWUVPSy1TSU9TO0xvOzA7TDs8bmFycm93PiAzMTMzOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgR0lZRU9HIFNJT1M7Ozs7CitGRkE0O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE5JRVVOO0xvOzA7TDs8bmFycm93PiAzMTM0Ozs7O047Ozs7OworRkZBNTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBOSUVVTi1DSUVVQztMbzswO0w7PG5hcnJvdz4gMzEzNTs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE5JRVVOIEpJRVVKOzs7OworRkZBNjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBOSUVVTi1ISUVVSDtMbzswO0w7PG5hcnJvdz4gMzEzNjs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE5JRVVOIEhJRVVIOzs7OworRkZBNztIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBUSUtFVVQ7TG87MDtMOzxuYXJyb3c+IDMxMzc7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBESUdFVUQ7Ozs7CitGRkE4O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HVElLRVVUO0xvOzA7TDs8bmFycm93PiAzMTM4Ozs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkcgRElHRVVEOzs7OworRkZBOTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTDtMbzswO0w7PG5hcnJvdz4gMzEzOTs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIExJRVVMOzs7OworRkZBQTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTC1LSVlFT0s7TG87MDtMOzxuYXJyb3c+IDMxM0E7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBHSVlFT0c7Ozs7CitGRkFCO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLU1JRVVNO0xvOzA7TDs8bmFycm93PiAzMTNCOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTElFVUwgTUlFVU07Ozs7CitGRkFDO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLVBJRVVQO0xvOzA7TDs8bmFycm93PiAzMTNDOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTElFVUwgQklFVUI7Ozs7CitGRkFEO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLVNJT1M7TG87MDtMOzxuYXJyb3c+IDMxM0Q7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBTSU9TOzs7OworRkZBRTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTC1USElFVVRIO0xvOzA7TDs8bmFycm93PiAzMTNFOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTElFVUwgVElFVVQ7Ozs7CitGRkFGO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLVBISUVVUEg7TG87MDtMOzxuYXJyb3c+IDMxM0Y7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBQSUVVUDs7OzsKK0ZGQjA7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwtSElFVUg7TG87MDtMOzxuYXJyb3c+IDMxNDA7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBISUVVSDs7OzsKK0ZGQjE7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTUlFVU07TG87MDtMOzxuYXJyb3c+IDMxNDE7Ozs7Tjs7Ozs7CitGRkIyO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFBJRVVQO0xvOzA7TDs8bmFycm93PiAzMTQyOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgQklFVUI7Ozs7CitGRkIzO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HUElFVVA7TG87MDtMOzxuYXJyb3c+IDMxNDM7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FORyBCSUVVQjs7OzsKK0ZGQjQ7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUElFVVAtU0lPUztMbzswO0w7PG5hcnJvdz4gMzE0NDs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEJJRVVCIFNJT1M7Ozs7CitGRkI1O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNJT1M7TG87MDtMOzxuYXJyb3c+IDMxNDU7Ozs7Tjs7Ozs7CitGRkI2O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HU0lPUztMbzswO0w7PG5hcnJvdz4gMzE0Njs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HIFNJT1M7Ozs7CitGRkI3O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIElFVU5HO0xvOzA7TDs8bmFycm93PiAzMTQ3Ozs7O047Ozs7OworRkZCODtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBDSUVVQztMbzswO0w7PG5hcnJvdz4gMzE0ODs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEpJRVVKOzs7OworRkZCOTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FOR0NJRVVDO0xvOzA7TDs8bmFycm93PiAzMTQ5Ozs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkcgSklFVUo7Ozs7CitGRkJBO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIENISUVVQ0g7TG87MDtMOzxuYXJyb3c+IDMxNEE7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBDSUVVQzs7OzsKK0ZGQkI7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgS0hJRVVLSDtMbzswO0w7PG5hcnJvdz4gMzE0Qjs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEtJWUVPSzs7OzsKK0ZGQkM7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgVEhJRVVUSDtMbzswO0w7PG5hcnJvdz4gMzE0Qzs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFRJRVVUOzs7OworRkZCRDtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBQSElFVVBIO0xvOzA7TDs8bmFycm93PiAzMTREOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUElFVVA7Ozs7CitGRkJFO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEhJRVVIO0xvOzA7TDs8bmFycm93PiAzMTRFOzs7O047Ozs7OworRkZDMjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBBO0xvOzA7TDs8bmFycm93PiAzMTRGOzs7O047Ozs7OworRkZDMztIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBBRTtMbzswO0w7PG5hcnJvdz4gMzE1MDs7OztOOzs7OzsKK0ZGQzQ7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUE7TG87MDtMOzxuYXJyb3c+IDMxNTE7Ozs7Tjs7Ozs7CitGRkM1O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFlBRTtMbzswO0w7PG5hcnJvdz4gMzE1Mjs7OztOOzs7OzsKK0ZGQzY7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgRU87TG87MDtMOzxuYXJyb3c+IDMxNTM7Ozs7Tjs7Ozs7CitGRkM3O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEU7TG87MDtMOzxuYXJyb3c+IDMxNTQ7Ozs7Tjs7Ozs7CitGRkNBO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFlFTztMbzswO0w7PG5hcnJvdz4gMzE1NTs7OztOOzs7OzsKK0ZGQ0I7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUU7TG87MDtMOzxuYXJyb3c+IDMxNTY7Ozs7Tjs7Ozs7CitGRkNDO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE87TG87MDtMOzxuYXJyb3c+IDMxNTc7Ozs7Tjs7Ozs7CitGRkNEO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFdBO0xvOzA7TDs8bmFycm93PiAzMTU4Ozs7O047Ozs7OworRkZDRTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBXQUU7TG87MDtMOzxuYXJyb3c+IDMxNTk7Ozs7Tjs7Ozs7CitGRkNGO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE9FO0xvOzA7TDs8bmFycm93PiAzMTVBOzs7O047Ozs7OworRkZEMjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBZTztMbzswO0w7PG5hcnJvdz4gMzE1Qjs7OztOOzs7OzsKK0ZGRDM7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgVTtMbzswO0w7PG5hcnJvdz4gMzE1Qzs7OztOOzs7OzsKK0ZGRDQ7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgV0VPO0xvOzA7TDs8bmFycm93PiAzMTVEOzs7O047Ozs7OworRkZENTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBXRTtMbzswO0w7PG5hcnJvdz4gMzE1RTs7OztOOzs7OzsKK0ZGRDY7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgV0k7TG87MDtMOzxuYXJyb3c+IDMxNUY7Ozs7Tjs7Ozs7CitGRkQ3O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFlVO0xvOzA7TDs8bmFycm93PiAzMTYwOzs7O047Ozs7OworRkZEQTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBFVTtMbzswO0w7PG5hcnJvdz4gMzE2MTs7OztOOzs7OzsKK0ZGREI7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUk7TG87MDtMOzxuYXJyb3c+IDMxNjI7Ozs7Tjs7Ozs7CitGRkRDO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEk7TG87MDtMOzxuYXJyb3c+IDMxNjM7Ozs7Tjs7Ozs7CitGRkUwO0ZVTExXSURUSCBDRU5UIFNJR047U2M7MDtFVDs8d2lkZT4gMDBBMjs7OztOOzs7OzsKK0ZGRTE7RlVMTFdJRFRIIFBPVU5EIFNJR047U2M7MDtFVDs8d2lkZT4gMDBBMzs7OztOOzs7OzsKK0ZGRTI7RlVMTFdJRFRIIE5PVCBTSUdOO1NtOzA7T047PHdpZGU+IDAwQUM7Ozs7Tjs7Ozs7CitGRkUzO0ZVTExXSURUSCBNQUNST047U2s7MDtPTjs8d2lkZT4gMDBBRjs7OztOO0ZVTExXSURUSCBTUEFDSU5HIE1BQ1JPTjs7OzsKK0ZGRTQ7RlVMTFdJRFRIIEJST0tFTiBCQVI7U287MDtPTjs8d2lkZT4gMDBBNjs7OztOO0ZVTExXSURUSCBCUk9LRU4gVkVSVElDQUwgQkFSOzs7OworRkZFNTtGVUxMV0lEVEggWUVOIFNJR047U2M7MDtFVDs8d2lkZT4gMDBBNTs7OztOOzs7OzsKK0ZGRTY7RlVMTFdJRFRIIFdPTiBTSUdOO1NjOzA7RVQ7PHdpZGU+IDIwQTk7Ozs7Tjs7Ozs7CitGRkU4O0hBTEZXSURUSCBGT1JNUyBMSUdIVCBWRVJUSUNBTDtTbTswO09OOzxuYXJyb3c+IDI1MDI7Ozs7Tjs7Ozs7CitGRkU5O0hBTEZXSURUSCBMRUZUV0FSRFMgQVJST1c7U207MDtPTjs8bmFycm93PiAyMTkwOzs7O047Ozs7OworRkZFQTtIQUxGV0lEVEggVVBXQVJEUyBBUlJPVztTbTswO09OOzxuYXJyb3c+IDIxOTE7Ozs7Tjs7Ozs7CitGRkVCO0hBTEZXSURUSCBSSUdIVFdBUkRTIEFSUk9XO1NtOzA7T047PG5hcnJvdz4gMjE5Mjs7OztOOzs7OzsKK0ZGRUM7SEFMRldJRFRIIERPV05XQVJEUyBBUlJPVztTbTswO09OOzxuYXJyb3c+IDIxOTM7Ozs7Tjs7Ozs7CitGRkVEO0hBTEZXSURUSCBCTEFDSyBTUVVBUkU7U287MDtPTjs8bmFycm93PiAyNUEwOzs7O047Ozs7OworRkZFRTtIQUxGV0lEVEggV0hJVEUgQ0lSQ0xFO1NvOzA7T047PG5hcnJvdz4gMjVDQjs7OztOOzs7OzsKK0ZGRkM7T0JKRUNUIFJFUExBQ0VNRU5UIENIQVJBQ1RFUjtTbzswO09OOzs7OztOOzs7OzsKK0ZGRkQ7UkVQTEFDRU1FTlQgQ0hBUkFDVEVSO1NvOzA7T047Ozs7O047Ozs7OwpkaWZmIC0tZ2l0IGEvc3JjL2RhdGEvdW5pY29kZS9Vbmljb2RlRGF0YS0zLjAuMC50eHQgYi9zcmMvZGF0YS91bmljb2RlL1VuaWNvZGVEYXRhLTMuMC4wLnR4dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42YTU0ZDNkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2RhdGEvdW5pY29kZS9Vbmljb2RlRGF0YS0zLjAuMC50eHQKQEAgLTAsMCArMSwxMDYxNyBAQAorMDAwMDs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtOVUxMOzs7OworMDAwMTs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtTVEFSVCBPRiBIRUFESU5HOzs7OworMDAwMjs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtTVEFSVCBPRiBURVhUOzs7OworMDAwMzs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtFTkQgT0YgVEVYVDs7OzsKKzAwMDQ7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047RU5EIE9GIFRSQU5TTUlTU0lPTjs7OzsKKzAwMDU7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047RU5RVUlSWTs7OzsKKzAwMDY7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047QUNLTk9XTEVER0U7Ozs7CiswMDA3Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO0JFTEw7Ozs7CiswMDA4Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO0JBQ0tTUEFDRTs7OzsKKzAwMDk7PGNvbnRyb2w+O0NjOzA7Uzs7Ozs7TjtIT1JJWk9OVEFMIFRBQlVMQVRJT047Ozs7CiswMDBBOzxjb250cm9sPjtDYzswO0I7Ozs7O047TElORSBGRUVEOzs7OworMDAwQjs8Y29udHJvbD47Q2M7MDtTOzs7OztOO1ZFUlRJQ0FMIFRBQlVMQVRJT047Ozs7CiswMDBDOzxjb250cm9sPjtDYzswO1dTOzs7OztOO0ZPUk0gRkVFRDs7OzsKKzAwMEQ7PGNvbnRyb2w+O0NjOzA7Qjs7Ozs7TjtDQVJSSUFHRSBSRVRVUk47Ozs7CiswMDBFOzxjb250cm9sPjtDYzswO0JOOzs7OztOO1NISUZUIE9VVDs7OzsKKzAwMEY7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047U0hJRlQgSU47Ozs7CiswMDEwOzxjb250cm9sPjtDYzswO0JOOzs7OztOO0RBVEEgTElOSyBFU0NBUEU7Ozs7CiswMDExOzxjb250cm9sPjtDYzswO0JOOzs7OztOO0RFVklDRSBDT05UUk9MIE9ORTs7OzsKKzAwMTI7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047REVWSUNFIENPTlRST0wgVFdPOzs7OworMDAxMzs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtERVZJQ0UgQ09OVFJPTCBUSFJFRTs7OzsKKzAwMTQ7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047REVWSUNFIENPTlRST0wgRk9VUjs7OzsKKzAwMTU7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047TkVHQVRJVkUgQUNLTk9XTEVER0U7Ozs7CiswMDE2Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO1NZTkNIUk9OT1VTIElETEU7Ozs7CiswMDE3Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO0VORCBPRiBUUkFOU01JU1NJT04gQkxPQ0s7Ozs7CiswMDE4Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO0NBTkNFTDs7OzsKKzAwMTk7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047RU5EIE9GIE1FRElVTTs7OzsKKzAwMUE7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047U1VCU1RJVFVURTs7OzsKKzAwMUI7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047RVNDQVBFOzs7OworMDAxQzs8Y29udHJvbD47Q2M7MDtCOzs7OztOO0ZJTEUgU0VQQVJBVE9SOzs7OworMDAxRDs8Y29udHJvbD47Q2M7MDtCOzs7OztOO0dST1VQIFNFUEFSQVRPUjs7OzsKKzAwMUU7PGNvbnRyb2w+O0NjOzA7Qjs7Ozs7TjtSRUNPUkQgU0VQQVJBVE9SOzs7OworMDAxRjs8Y29udHJvbD47Q2M7MDtTOzs7OztOO1VOSVQgU0VQQVJBVE9SOzs7OworMDAyMDtTUEFDRTtaczswO1dTOzs7OztOOzs7OzsKKzAwMjE7RVhDTEFNQVRJT04gTUFSSztQbzswO09OOzs7OztOOzs7OzsKKzAwMjI7UVVPVEFUSU9OIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMDIzO05VTUJFUiBTSUdOO1BvOzA7RVQ7Ozs7O047Ozs7OworMDAyNDtET0xMQVIgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzAwMjU7UEVSQ0VOVCBTSUdOO1BvOzA7RVQ7Ozs7O047Ozs7OworMDAyNjtBTVBFUlNBTkQ7UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMDI3O0FQT1NUUk9QSEU7UG87MDtPTjs7Ozs7TjtBUE9TVFJPUEhFLVFVT1RFOzs7OworMDAyODtMRUZUIFBBUkVOVEhFU0lTO1BzOzA7T047Ozs7O1k7T1BFTklORyBQQVJFTlRIRVNJUzs7OzsKKzAwMjk7UklHSFQgUEFSRU5USEVTSVM7UGU7MDtPTjs7Ozs7WTtDTE9TSU5HIFBBUkVOVEhFU0lTOzs7OworMDAyQTtBU1RFUklTSztQbzswO09OOzs7OztOOzs7OzsKKzAwMkI7UExVUyBTSUdOO1NtOzA7RVQ7Ozs7O047Ozs7OworMDAyQztDT01NQTtQbzswO0NTOzs7OztOOzs7OzsKKzAwMkQ7SFlQSEVOLU1JTlVTO1BkOzA7RVQ7Ozs7O047Ozs7OworMDAyRTtGVUxMIFNUT1A7UG87MDtDUzs7Ozs7TjtQRVJJT0Q7Ozs7CiswMDJGO1NPTElEVVM7UG87MDtFUzs7Ozs7TjtTTEFTSDs7OzsKKzAwMzA7RElHSVQgWkVSTztOZDswO0VOOzswOzA7MDtOOzs7OzsKKzAwMzE7RElHSVQgT05FO05kOzA7RU47OzE7MTsxO047Ozs7OworMDAzMjtESUdJVCBUV087TmQ7MDtFTjs7MjsyOzI7Tjs7Ozs7CiswMDMzO0RJR0lUIFRIUkVFO05kOzA7RU47OzM7MzszO047Ozs7OworMDAzNDtESUdJVCBGT1VSO05kOzA7RU47OzQ7NDs0O047Ozs7OworMDAzNTtESUdJVCBGSVZFO05kOzA7RU47OzU7NTs1O047Ozs7OworMDAzNjtESUdJVCBTSVg7TmQ7MDtFTjs7Njs2OzY7Tjs7Ozs7CiswMDM3O0RJR0lUIFNFVkVOO05kOzA7RU47Ozc7Nzs3O047Ozs7OworMDAzODtESUdJVCBFSUdIVDtOZDswO0VOOzs4Ozg7ODtOOzs7OzsKKzAwMzk7RElHSVQgTklORTtOZDswO0VOOzs5Ozk7OTtOOzs7OzsKKzAwM0E7Q09MT047UG87MDtDUzs7Ozs7Tjs7Ozs7CiswMDNCO1NFTUlDT0xPTjtQbzswO09OOzs7OztOOzs7OzsKKzAwM0M7TEVTUy1USEFOIFNJR047U207MDtPTjs7Ozs7WTs7Ozs7CiswMDNEO0VRVUFMUyBTSUdOO1NtOzA7T047Ozs7O047Ozs7OworMDAzRTtHUkVBVEVSLVRIQU4gU0lHTjtTbTswO09OOzs7OztZOzs7OzsKKzAwM0Y7UVVFU1RJT04gTUFSSztQbzswO09OOzs7OztOOzs7OzsKKzAwNDA7Q09NTUVSQ0lBTCBBVDtQbzswO09OOzs7OztOOzs7OzsKKzAwNDE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQTtMdTswO0w7Ozs7O047Ozs7MDA2MTsKKzAwNDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQjtMdTswO0w7Ozs7O047Ozs7MDA2MjsKKzAwNDM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQztMdTswO0w7Ozs7O047Ozs7MDA2MzsKKzAwNDQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRDtMdTswO0w7Ozs7O047Ozs7MDA2NDsKKzAwNDU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRTtMdTswO0w7Ozs7O047Ozs7MDA2NTsKKzAwNDY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRjtMdTswO0w7Ozs7O047Ozs7MDA2NjsKKzAwNDc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRztMdTswO0w7Ozs7O047Ozs7MDA2NzsKKzAwNDg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSDtMdTswO0w7Ozs7O047Ozs7MDA2ODsKKzAwNDk7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSTtMdTswO0w7Ozs7O047Ozs7MDA2OTsKKzAwNEE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSjtMdTswO0w7Ozs7O047Ozs7MDA2QTsKKzAwNEI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSztMdTswO0w7Ozs7O047Ozs7MDA2QjsKKzAwNEM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTDtMdTswO0w7Ozs7O047Ozs7MDA2QzsKKzAwNEQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTTtMdTswO0w7Ozs7O047Ozs7MDA2RDsKKzAwNEU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTjtMdTswO0w7Ozs7O047Ozs7MDA2RTsKKzAwNEY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTztMdTswO0w7Ozs7O047Ozs7MDA2RjsKKzAwNTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUDtMdTswO0w7Ozs7O047Ozs7MDA3MDsKKzAwNTE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUTtMdTswO0w7Ozs7O047Ozs7MDA3MTsKKzAwNTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUjtMdTswO0w7Ozs7O047Ozs7MDA3MjsKKzAwNTM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUztMdTswO0w7Ozs7O047Ozs7MDA3MzsKKzAwNTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVDtMdTswO0w7Ozs7O047Ozs7MDA3NDsKKzAwNTU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVTtMdTswO0w7Ozs7O047Ozs7MDA3NTsKKzAwNTY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVjtMdTswO0w7Ozs7O047Ozs7MDA3NjsKKzAwNTc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVztMdTswO0w7Ozs7O047Ozs7MDA3NzsKKzAwNTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWDtMdTswO0w7Ozs7O047Ozs7MDA3ODsKKzAwNTk7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWTtMdTswO0w7Ozs7O047Ozs7MDA3OTsKKzAwNUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWjtMdTswO0w7Ozs7O047Ozs7MDA3QTsKKzAwNUI7TEVGVCBTUVVBUkUgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgU1FVQVJFIEJSQUNLRVQ7Ozs7CiswMDVDO1JFVkVSU0UgU09MSURVUztQbzswO09OOzs7OztOO0JBQ0tTTEFTSDs7OzsKKzAwNUQ7UklHSFQgU1FVQVJFIEJSQUNLRVQ7UGU7MDtPTjs7Ozs7WTtDTE9TSU5HIFNRVUFSRSBCUkFDS0VUOzs7OworMDA1RTtDSVJDVU1GTEVYIEFDQ0VOVDtTazswO09OOzs7OztOO1NQQUNJTkcgQ0lSQ1VNRkxFWDs7OzsKKzAwNUY7TE9XIExJTkU7UGM7MDtPTjs7Ozs7TjtTUEFDSU5HIFVOREVSU0NPUkU7Ozs7CiswMDYwO0dSQVZFIEFDQ0VOVDtTazswO09OOzs7OztOO1NQQUNJTkcgR1JBVkU7Ozs7CiswMDYxO0xBVElOIFNNQUxMIExFVFRFUiBBO0xsOzA7TDs7Ozs7Tjs7OzAwNDE7OzAwNDEKKzAwNjI7TEFUSU4gU01BTEwgTEVUVEVSIEI7TGw7MDtMOzs7OztOOzs7MDA0Mjs7MDA0MgorMDA2MztMQVRJTiBTTUFMTCBMRVRURVIgQztMbDswO0w7Ozs7O047OzswMDQzOzswMDQzCiswMDY0O0xBVElOIFNNQUxMIExFVFRFUiBEO0xsOzA7TDs7Ozs7Tjs7OzAwNDQ7OzAwNDQKKzAwNjU7TEFUSU4gU01BTEwgTEVUVEVSIEU7TGw7MDtMOzs7OztOOzs7MDA0NTs7MDA0NQorMDA2NjtMQVRJTiBTTUFMTCBMRVRURVIgRjtMbDswO0w7Ozs7O047OzswMDQ2OzswMDQ2CiswMDY3O0xBVElOIFNNQUxMIExFVFRFUiBHO0xsOzA7TDs7Ozs7Tjs7OzAwNDc7OzAwNDcKKzAwNjg7TEFUSU4gU01BTEwgTEVUVEVSIEg7TGw7MDtMOzs7OztOOzs7MDA0ODs7MDA0OAorMDA2OTtMQVRJTiBTTUFMTCBMRVRURVIgSTtMbDswO0w7Ozs7O047OzswMDQ5OzswMDQ5CiswMDZBO0xBVElOIFNNQUxMIExFVFRFUiBKO0xsOzA7TDs7Ozs7Tjs7OzAwNEE7OzAwNEEKKzAwNkI7TEFUSU4gU01BTEwgTEVUVEVSIEs7TGw7MDtMOzs7OztOOzs7MDA0Qjs7MDA0QgorMDA2QztMQVRJTiBTTUFMTCBMRVRURVIgTDtMbDswO0w7Ozs7O047OzswMDRDOzswMDRDCiswMDZEO0xBVElOIFNNQUxMIExFVFRFUiBNO0xsOzA7TDs7Ozs7Tjs7OzAwNEQ7OzAwNEQKKzAwNkU7TEFUSU4gU01BTEwgTEVUVEVSIE47TGw7MDtMOzs7OztOOzs7MDA0RTs7MDA0RQorMDA2RjtMQVRJTiBTTUFMTCBMRVRURVIgTztMbDswO0w7Ozs7O047OzswMDRGOzswMDRGCiswMDcwO0xBVElOIFNNQUxMIExFVFRFUiBQO0xsOzA7TDs7Ozs7Tjs7OzAwNTA7OzAwNTAKKzAwNzE7TEFUSU4gU01BTEwgTEVUVEVSIFE7TGw7MDtMOzs7OztOOzs7MDA1MTs7MDA1MQorMDA3MjtMQVRJTiBTTUFMTCBMRVRURVIgUjtMbDswO0w7Ozs7O047OzswMDUyOzswMDUyCiswMDczO0xBVElOIFNNQUxMIExFVFRFUiBTO0xsOzA7TDs7Ozs7Tjs7OzAwNTM7OzAwNTMKKzAwNzQ7TEFUSU4gU01BTEwgTEVUVEVSIFQ7TGw7MDtMOzs7OztOOzs7MDA1NDs7MDA1NAorMDA3NTtMQVRJTiBTTUFMTCBMRVRURVIgVTtMbDswO0w7Ozs7O047OzswMDU1OzswMDU1CiswMDc2O0xBVElOIFNNQUxMIExFVFRFUiBWO0xsOzA7TDs7Ozs7Tjs7OzAwNTY7OzAwNTYKKzAwNzc7TEFUSU4gU01BTEwgTEVUVEVSIFc7TGw7MDtMOzs7OztOOzs7MDA1Nzs7MDA1NworMDA3ODtMQVRJTiBTTUFMTCBMRVRURVIgWDtMbDswO0w7Ozs7O047OzswMDU4OzswMDU4CiswMDc5O0xBVElOIFNNQUxMIExFVFRFUiBZO0xsOzA7TDs7Ozs7Tjs7OzAwNTk7OzAwNTkKKzAwN0E7TEFUSU4gU01BTEwgTEVUVEVSIFo7TGw7MDtMOzs7OztOOzs7MDA1QTs7MDA1QQorMDA3QjtMRUZUIENVUkxZIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIENVUkxZIEJSQUNLRVQ7Ozs7CiswMDdDO1ZFUlRJQ0FMIExJTkU7U207MDtPTjs7Ozs7TjtWRVJUSUNBTCBCQVI7Ozs7CiswMDdEO1JJR0hUIENVUkxZIEJSQUNLRVQ7UGU7MDtPTjs7Ozs7WTtDTE9TSU5HIENVUkxZIEJSQUNLRVQ7Ozs7CiswMDdFO1RJTERFO1NtOzA7T047Ozs7O047Ozs7OworMDA3Rjs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtERUxFVEU7Ozs7CiswMDgwOzxjb250cm9sPjtDYzswO0JOOzs7OztOOzs7OzsKKzAwODE7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047Ozs7OworMDA4Mjs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtCUkVBSyBQRVJNSVRURUQgSEVSRTs7OzsKKzAwODM7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047Tk8gQlJFQUsgSEVSRTs7OzsKKzAwODQ7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047SU5ERVg7Ozs7CiswMDg1Ozxjb250cm9sPjtDYzswO0I7Ozs7O047TkVYVCBMSU5FOzs7OworMDA4Njs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtTVEFSVCBPRiBTRUxFQ1RFRCBBUkVBOzs7OworMDA4Nzs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtFTkQgT0YgU0VMRUNURUQgQVJFQTs7OzsKKzAwODg7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047Q0hBUkFDVEVSIFRBQlVMQVRJT04gU0VUOzs7OworMDA4OTs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtDSEFSQUNURVIgVEFCVUxBVElPTiBXSVRIIEpVU1RJRklDQVRJT047Ozs7CiswMDhBOzxjb250cm9sPjtDYzswO0JOOzs7OztOO0xJTkUgVEFCVUxBVElPTiBTRVQ7Ozs7CiswMDhCOzxjb250cm9sPjtDYzswO0JOOzs7OztOO1BBUlRJQUwgTElORSBET1dOOzs7OworMDA4Qzs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtQQVJUSUFMIExJTkUgVVA7Ozs7CiswMDhEOzxjb250cm9sPjtDYzswO0JOOzs7OztOO1JFVkVSU0UgTElORSBGRUVEOzs7OworMDA4RTs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtTSU5HTEUgU0hJRlQgVFdPOzs7OworMDA4Rjs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtTSU5HTEUgU0hJRlQgVEhSRUU7Ozs7CiswMDkwOzxjb250cm9sPjtDYzswO0JOOzs7OztOO0RFVklDRSBDT05UUk9MIFNUUklORzs7OzsKKzAwOTE7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047UFJJVkFURSBVU0UgT05FOzs7OworMDA5Mjs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtQUklWQVRFIFVTRSBUV087Ozs7CiswMDkzOzxjb250cm9sPjtDYzswO0JOOzs7OztOO1NFVCBUUkFOU01JVCBTVEFURTs7OzsKKzAwOTQ7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047Q0FOQ0VMIENIQVJBQ1RFUjs7OzsKKzAwOTU7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047TUVTU0FHRSBXQUlUSU5HOzs7OworMDA5Njs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtTVEFSVCBPRiBHVUFSREVEIEFSRUE7Ozs7CiswMDk3Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO0VORCBPRiBHVUFSREVEIEFSRUE7Ozs7CiswMDk4Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO1NUQVJUIE9GIFNUUklORzs7OzsKKzAwOTk7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047Ozs7OworMDA5QTs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtTSU5HTEUgQ0hBUkFDVEVSIElOVFJPRFVDRVI7Ozs7CiswMDlCOzxjb250cm9sPjtDYzswO0JOOzs7OztOO0NPTlRST0wgU0VRVUVOQ0UgSU5UUk9EVUNFUjs7OzsKKzAwOUM7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047U1RSSU5HIFRFUk1JTkFUT1I7Ozs7CiswMDlEOzxjb250cm9sPjtDYzswO0JOOzs7OztOO09QRVJBVElORyBTWVNURU0gQ09NTUFORDs7OzsKKzAwOUU7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047UFJJVkFDWSBNRVNTQUdFOzs7OworMDA5Rjs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtBUFBMSUNBVElPTiBQUk9HUkFNIENPTU1BTkQ7Ozs7CiswMEEwO05PLUJSRUFLIFNQQUNFO1pzOzA7Q1M7PG5vQnJlYWs+IDAwMjA7Ozs7TjtOT04tQlJFQUtJTkcgU1BBQ0U7Ozs7CiswMEExO0lOVkVSVEVEIEVYQ0xBTUFUSU9OIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMEEyO0NFTlQgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzAwQTM7UE9VTkQgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzAwQTQ7Q1VSUkVOQ1kgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzAwQTU7WUVOIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CiswMEE2O0JST0tFTiBCQVI7U287MDtPTjs7Ozs7TjtCUk9LRU4gVkVSVElDQUwgQkFSOzs7OworMDBBNztTRUNUSU9OIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CiswMEE4O0RJQUVSRVNJUztTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwODs7OztOO1NQQUNJTkcgRElBRVJFU0lTOzs7OworMDBBOTtDT1BZUklHSFQgU0lHTjtTbzswO09OOzs7OztOOzs7OzsKKzAwQUE7RkVNSU5JTkUgT1JESU5BTCBJTkRJQ0FUT1I7TGw7MDtMOzxzdXBlcj4gMDA2MTs7OztOOzs7OzsKKzAwQUI7TEVGVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUks7UGk7MDtPTjs7Ozs7WTtMRUZUIFBPSU5USU5HIEdVSUxMRU1FVDsqOzs7CiswMEFDO05PVCBTSUdOO1NtOzA7T047Ozs7O047Ozs7OworMDBBRDtTT0ZUIEhZUEhFTjtQZDswO09OOzs7OztOOzs7OzsKKzAwQUU7UkVHSVNURVJFRCBTSUdOO1NvOzA7T047Ozs7O047UkVHSVNURVJFRCBUUkFERSBNQVJLIFNJR047Ozs7CiswMEFGO01BQ1JPTjtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwNDs7OztOO1NQQUNJTkcgTUFDUk9OOzs7OworMDBCMDtERUdSRUUgU0lHTjtTbzswO0VUOzs7OztOOzs7OzsKKzAwQjE7UExVUy1NSU5VUyBTSUdOO1NtOzA7RVQ7Ozs7O047UExVUy1PUi1NSU5VUyBTSUdOOzs7OworMDBCMjtTVVBFUlNDUklQVCBUV087Tm87MDtFTjs8c3VwZXI+IDAwMzI7MjsyOzI7TjtTVVBFUlNDUklQVCBESUdJVCBUV087Ozs7CiswMEIzO1NVUEVSU0NSSVBUIFRIUkVFO05vOzA7RU47PHN1cGVyPiAwMDMzOzM7MzszO047U1VQRVJTQ1JJUFQgRElHSVQgVEhSRUU7Ozs7CiswMEI0O0FDVVRFIEFDQ0VOVDtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwMTs7OztOO1NQQUNJTkcgQUNVVEU7Ozs7CiswMEI1O01JQ1JPIFNJR047TGw7MDtMOzxjb21wYXQ+IDAzQkM7Ozs7Tjs7OzAzOUM7OzAzOUMKKzAwQjY7UElMQ1JPVyBTSUdOO1NvOzA7T047Ozs7O047UEFSQUdSQVBIIFNJR047Ozs7CiswMEI3O01JRERMRSBET1Q7UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMEI4O0NFRElMTEE7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMjc7Ozs7TjtTUEFDSU5HIENFRElMTEE7Ozs7CiswMEI5O1NVUEVSU0NSSVBUIE9ORTtObzswO0VOOzxzdXBlcj4gMDAzMTsxOzE7MTtOO1NVUEVSU0NSSVBUIERJR0lUIE9ORTs7OzsKKzAwQkE7TUFTQ1VMSU5FIE9SRElOQUwgSU5ESUNBVE9SO0xsOzA7TDs8c3VwZXI+IDAwNkY7Ozs7Tjs7Ozs7CiswMEJCO1JJR0hULVBPSU5USU5HIERPVUJMRSBBTkdMRSBRVU9UQVRJT04gTUFSSztQZjswO09OOzs7OztZO1JJR0hUIFBPSU5USU5HIEdVSUxMRU1FVDsqOzs7CiswMEJDO1ZVTEdBUiBGUkFDVElPTiBPTkUgUVVBUlRFUjtObzswO09OOzxmcmFjdGlvbj4gMDAzMSAyMDQ0IDAwMzQ7OzsxLzQ7TjtGUkFDVElPTiBPTkUgUVVBUlRFUjs7OzsKKzAwQkQ7VlVMR0FSIEZSQUNUSU9OIE9ORSBIQUxGO05vOzA7T047PGZyYWN0aW9uPiAwMDMxIDIwNDQgMDAzMjs7OzEvMjtOO0ZSQUNUSU9OIE9ORSBIQUxGOzs7OworMDBCRTtWVUxHQVIgRlJBQ1RJT04gVEhSRUUgUVVBUlRFUlM7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzMgMjA0NCAwMDM0Ozs7My80O047RlJBQ1RJT04gVEhSRUUgUVVBUlRFUlM7Ozs7CiswMEJGO0lOVkVSVEVEIFFVRVNUSU9OIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMEMwO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBHUkFWRTtMdTswO0w7MDA0MSAwMzAwOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBHUkFWRTs7OzAwRTA7CiswMEMxO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBBQ1VURTtMdTswO0w7MDA0MSAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBBQ1VURTs7OzAwRTE7CiswMEMyO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDQxIDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIENJUkNVTUZMRVg7OzswMEUyOworMDBDMztMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggVElMREU7THU7MDtMOzAwNDEgMDMwMzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgVElMREU7OzswMEUzOworMDBDNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDQxIDAzMDg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIERJQUVSRVNJUzs7OzAwRTQ7CiswMEM1O0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFO0x1OzA7TDswMDQxIDAzMEE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFJJTkc7OzswMEU1OworMDBDNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBFO2FzaCAqOzswMEU2OworMDBDNztMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQTtMdTswO0w7MDA0MyAwMzI3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBDRURJTExBOzs7MDBFNzsKKzAwQzg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEdSQVZFO0x1OzA7TDswMDQ1IDAzMDA7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIEdSQVZFOzs7MDBFODsKKzAwQzk7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEFDVVRFO0x1OzA7TDswMDQ1IDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIEFDVVRFOzs7MDBFOTsKKzAwQ0E7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNDUgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEUgQ0lSQ1VNRkxFWDs7OzAwRUE7CiswMENCO0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVM7THU7MDtMOzAwNDUgMDMwODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEUgRElBRVJFU0lTOzs7MDBFQjsKKzAwQ0M7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFO0x1OzA7TDswMDQ5IDAzMDA7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIEdSQVZFOzs7MDBFQzsKKzAwQ0Q7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEFDVVRFO0x1OzA7TDswMDQ5IDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIEFDVVRFOzs7MDBFRDsKKzAwQ0U7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNDkgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEkgQ0lSQ1VNRkxFWDs7OzAwRUU7CiswMENGO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVM7THU7MDtMOzAwNDkgMDMwODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEkgRElBRVJFU0lTOzs7MDBFRjsKKzAwRDA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRVRIO0x1OzA7TDs7Ozs7Tjs7SWNlbGFuZGljOzswMEYwOworMDBEMTtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggVElMREU7THU7MDtMOzAwNEUgMDMwMzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE4gVElMREU7OzswMEYxOworMDBEMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggR1JBVkU7THU7MDtMOzAwNEYgMDMwMDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gR1JBVkU7OzswMEYyOworMDBEMztMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQUNVVEU7THU7MDtMOzAwNEYgMDMwMTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gQUNVVEU7OzswMEYzOworMDBENDtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA0RiAwMzAyOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBDSVJDVU1GTEVYOzs7MDBGNDsKKzAwRDU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFO0x1OzA7TDswMDRGIDAzMDM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFRJTERFOzs7MDBGNTsKKzAwRDY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUztMdTswO0w7MDA0RiAwMzA4Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBESUFFUkVTSVM7OzswMEY2OworMDBENztNVUxUSVBMSUNBVElPTiBTSUdOO1NtOzA7T047Ozs7O047Ozs7OworMDBEODtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggU1RST0tFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFNMQVNIOzs7MDBGODsKKzAwRDk7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEdSQVZFO0x1OzA7TDswMDU1IDAzMDA7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIEdSQVZFOzs7MDBGOTsKKzAwREE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEFDVVRFO0x1OzA7TDswMDU1IDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIEFDVVRFOzs7MDBGQTsKKzAwREI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNTUgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgQ0lSQ1VNRkxFWDs7OzAwRkI7CiswMERDO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVM7THU7MDtMOzAwNTUgMDMwODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgRElBRVJFU0lTOzs7MDBGQzsKKzAwREQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEFDVVRFO0x1OzA7TDswMDU5IDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIEFDVVRFOzs7MDBGRDsKKzAwREU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVEhPUk47THU7MDtMOzs7OztOOztJY2VsYW5kaWM7OzAwRkU7CiswMERGO0xBVElOIFNNQUxMIExFVFRFUiBTSEFSUCBTO0xsOzA7TDs7Ozs7Tjs7R2VybWFuOzs7CiswMEUwO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggR1JBVkU7TGw7MDtMOzAwNjEgMDMwMDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIEdSQVZFOzswMEMwOzswMEMwCiswMEUxO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQUNVVEU7TGw7MDtMOzAwNjEgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIEFDVVRFOzswMEMxOzswMEMxCiswMEUyO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA2MSAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgQ0lSQ1VNRkxFWDs7MDBDMjs7MDBDMgorMDBFMztMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFRJTERFO0xsOzA7TDswMDYxIDAzMDM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBUSUxERTs7MDBDMzs7MDBDMworMDBFNDtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA2MSAwMzA4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgRElBRVJFU0lTOzswMEM0OzswMEM0CiswMEU1O0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRTtMbDswO0w7MDA2MSAwMzBBOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgUklORzs7MDBDNTs7MDBDNQorMDBFNjtMQVRJTiBTTUFMTCBMRVRURVIgQUU7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIEU7YXNoICo7MDBDNjs7MDBDNgorMDBFNztMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEE7TGw7MDtMOzAwNjMgMDMyNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDIENFRElMTEE7OzAwQzc7OzAwQzcKKzAwRTg7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBHUkFWRTtMbDswO0w7MDA2NSAwMzAwOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEUgR1JBVkU7OzAwQzg7OzAwQzgKKzAwRTk7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBBQ1VURTtMbDswO0w7MDA2NSAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEUgQUNVVEU7OzAwQzk7OzAwQzkKKzAwRUE7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDY1IDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRSBDSVJDVU1GTEVYOzswMENBOzswMENBCiswMEVCO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTO0xsOzA7TDswMDY1IDAzMDg7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRSBESUFFUkVTSVM7OzAwQ0I7OzAwQ0IKKzAwRUM7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRTtMbDswO0w7MDA2OSAwMzAwOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEkgR1JBVkU7OzAwQ0M7OzAwQ0MKKzAwRUQ7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBBQ1VURTtMbDswO0w7MDA2OSAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEkgQUNVVEU7OzAwQ0Q7OzAwQ0QKKzAwRUU7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDY5IDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSSBDSVJDVU1GTEVYOzswMENFOzswMENFCiswMEVGO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTO0xsOzA7TDswMDY5IDAzMDg7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSSBESUFFUkVTSVM7OzAwQ0Y7OzAwQ0YKKzAwRjA7TEFUSU4gU01BTEwgTEVUVEVSIEVUSDtMbDswO0w7Ozs7O047O0ljZWxhbmRpYzswMEQwOzswMEQwCiswMEYxO0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggVElMREU7TGw7MDtMOzAwNkUgMDMwMzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBOIFRJTERFOzswMEQxOzswMEQxCiswMEYyO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggR1JBVkU7TGw7MDtMOzAwNkYgMDMwMDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIEdSQVZFOzswMEQyOzswMEQyCiswMEYzO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQUNVVEU7TGw7MDtMOzAwNkYgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIEFDVVRFOzswMEQzOzswMEQzCiswMEY0O0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA2RiAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gQ0lSQ1VNRkxFWDs7MDBENDs7MDBENAorMDBGNTtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFO0xsOzA7TDswMDZGIDAzMDM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBUSUxERTs7MDBENTs7MDBENQorMDBGNjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA2RiAwMzA4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gRElBRVJFU0lTOzswMEQ2OzswMEQ2CiswMEY3O0RJVklTSU9OIFNJR047U207MDtPTjs7Ozs7Tjs7Ozs7CiswMEY4O0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBTTEFTSDs7MDBEODs7MDBEOAorMDBGOTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEdSQVZFO0xsOzA7TDswMDc1IDAzMDA7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBHUkFWRTs7MDBEOTs7MDBEOQorMDBGQTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEFDVVRFO0xsOzA7TDswMDc1IDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBBQ1VURTs7MDBEQTs7MDBEQQorMDBGQjtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNzUgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIENJUkNVTUZMRVg7OzAwREI7OzAwREIKKzAwRkM7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzAwNzUgMDMwODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIERJQUVSRVNJUzs7MDBEQzs7MDBEQworMDBGRDtMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEFDVVRFO0xsOzA7TDswMDc5IDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWSBBQ1VURTs7MDBERDs7MDBERAorMDBGRTtMQVRJTiBTTUFMTCBMRVRURVIgVEhPUk47TGw7MDtMOzs7OztOOztJY2VsYW5kaWM7MDBERTs7MDBERQorMDBGRjtMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA3OSAwMzA4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFkgRElBRVJFU0lTOzswMTc4OzswMTc4CiswMTAwO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBNQUNST047THU7MDtMOzAwNDEgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgTUFDUk9OOzs7MDEwMTsKKzAxMDE7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBNQUNST047TGw7MDtMOzAwNjEgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIE1BQ1JPTjs7MDEwMDs7MDEwMAorMDEwMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkU7THU7MDtMOzAwNDEgMDMwNjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgQlJFVkU7OzswMTAzOworMDEwMztMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFO0xsOzA7TDswMDYxIDAzMDY7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBCUkVWRTs7MDEwMjs7MDEwMgorMDEwNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggT0dPTkVLO0x1OzA7TDswMDQxIDAzMjg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIE9HT05FSzs7OzAxMDU7CiswMTA1O0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggT0dPTkVLO0xsOzA7TDswMDYxIDAzMjg7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBPR09ORUs7OzAxMDQ7OzAxMDQKKzAxMDY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIEFDVVRFO0x1OzA7TDswMDQzIDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIEFDVVRFOzs7MDEwNzsKKzAxMDc7TEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBBQ1VURTtMbDswO0w7MDA2MyAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEMgQUNVVEU7OzAxMDY7OzAxMDYKKzAxMDg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNDMgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEMgQ0lSQ1VNRkxFWDs7OzAxMDk7CiswMTA5O0xBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA2MyAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEMgQ0lSQ1VNRkxFWDs7MDEwODs7MDEwOAorMDEwQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDQzIDAzMDc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIERPVDs7OzAxMEI7CiswMTBCO0xBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDYzIDAzMDc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQyBET1Q7OzAxMEE7OzAxMEEKKzAxMEM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENBUk9OO0x1OzA7TDswMDQzIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIEhBQ0VLOzs7MDEwRDsKKzAxMEQ7TEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDQVJPTjtMbDswO0w7MDA2MyAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEMgSEFDRUs7OzAxMEM7OzAxMEMKKzAxMEU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIENBUk9OO0x1OzA7TDswMDQ0IDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIEhBQ0VLOzs7MDEwRjsKKzAxMEY7TEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBDQVJPTjtMbDswO0w7MDA2NCAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEQgSEFDRUs7OzAxMEU7OzAxMEUKKzAxMTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBCQVI7OzswMTExOworMDExMTtMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEQgQkFSOzswMTEwOzswMTEwCiswMTEyO0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBNQUNST047THU7MDtMOzAwNDUgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEUgTUFDUk9OOzs7MDExMzsKKzAxMTM7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBNQUNST047TGw7MDtMOzAwNjUgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFIE1BQ1JPTjs7MDExMjs7MDExMgorMDExNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQlJFVkU7THU7MDtMOzAwNDUgMDMwNjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEUgQlJFVkU7OzswMTE1OworMDExNTtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIEJSRVZFO0xsOzA7TDswMDY1IDAzMDY7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRSBCUkVWRTs7MDExNDs7MDExNAorMDExNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDQ1IDAzMDc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIERPVDs7OzAxMTc7CiswMTE3O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDY1IDAzMDc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRSBET1Q7OzAxMTY7OzAxMTYKKzAxMTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE9HT05FSztMdTswO0w7MDA0NSAwMzI4Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBPR09ORUs7OzswMTE5OworMDExOTtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE9HT05FSztMbDswO0w7MDA2NSAwMzI4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEUgT0dPTkVLOzswMTE4OzswMTE4CiswMTFBO0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDQVJPTjtMdTswO0w7MDA0NSAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBIQUNFSzs7OzAxMUI7CiswMTFCO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0FST047TGw7MDtMOzAwNjUgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFIEhBQ0VLOzswMTFBOzswMTFBCiswMTFDO0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDQ3IDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIENJUkNVTUZMRVg7OzswMTFEOworMDExRDtMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNjcgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBHIENJUkNVTUZMRVg7OzAxMUM7OzAxMUMKKzAxMUU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIEJSRVZFO0x1OzA7TDswMDQ3IDAzMDY7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIEJSRVZFOzs7MDExRjsKKzAxMUY7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBCUkVWRTtMbDswO0w7MDA2NyAwMzA2Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEcgQlJFVkU7OzAxMUU7OzAxMUUKKzAxMjA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0NyAwMzA3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBET1Q7OzswMTIxOworMDEyMTtMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2NyAwMzA3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEcgRE9UOzswMTIwOzswMTIwCiswMTIyO0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBDRURJTExBO0x1OzA7TDswMDQ3IDAzMjc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIENFRElMTEE7OzswMTIzOworMDEyMztMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIENFRElMTEE7TGw7MDtMOzAwNjcgMDMyNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBHIENFRElMTEE7OzAxMjI7OzAxMjIKKzAxMjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNDggMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEggQ0lSQ1VNRkxFWDs7OzAxMjU7CiswMTI1O0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA2OCAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEggQ0lSQ1VNRkxFWDs7MDEyNDs7MDEyNAorMDEyNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggU1RST0tFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIEJBUjs7OzAxMjc7CiswMTI3O0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSCBCQVI7OzAxMjY7OzAxMjYKKzAxMjg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIFRJTERFO0x1OzA7TDswMDQ5IDAzMDM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFRJTERFOzs7MDEyOTsKKzAxMjk7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBUSUxERTtMbDswO0w7MDA2OSAwMzAzOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEkgVElMREU7OzAxMjg7OzAxMjgKKzAxMkE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIE1BQ1JPTjtMdTswO0w7MDA0OSAwMzA0Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBNQUNST047OzswMTJCOworMDEyQjtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIE1BQ1JPTjtMbDswO0w7MDA2OSAwMzA0Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEkgTUFDUk9OOzswMTJBOzswMTJBCiswMTJDO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBCUkVWRTtMdTswO0w7MDA0OSAwMzA2Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBCUkVWRTs7OzAxMkQ7CiswMTJEO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQlJFVkU7TGw7MDtMOzAwNjkgMDMwNjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIEJSRVZFOzswMTJDOzswMTJDCiswMTJFO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBPR09ORUs7THU7MDtMOzAwNDkgMDMyODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEkgT0dPTkVLOzs7MDEyRjsKKzAxMkY7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBPR09ORUs7TGw7MDtMOzAwNjkgMDMyODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIE9HT05FSzs7MDEyRTs7MDEyRQorMDEzMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDQ5IDAzMDc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIERPVDs7OzAwNjk7CiswMTMxO0xBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEk7TGw7MDtMOzs7OztOOzs7MDA0OTs7MDA0OQorMDEzMjtMQVRJTiBDQVBJVEFMIExJR0FUVVJFIElKO0x1OzA7TDs8Y29tcGF0PiAwMDQ5IDAwNEE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIEo7OzswMTMzOworMDEzMztMQVRJTiBTTUFMTCBMSUdBVFVSRSBJSjtMbDswO0w7PGNvbXBhdD4gMDA2OSAwMDZBOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEkgSjs7MDEzMjs7MDEzMgorMDEzNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBKIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA0QSAwMzAyOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSiBDSVJDVU1GTEVYOzs7MDEzNTsKKzAxMzU7TEFUSU4gU01BTEwgTEVUVEVSIEogV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDZBIDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSiBDSVJDVU1GTEVYOzswMTM0OzswMTM0CiswMTM2O0xBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBDRURJTExBO0x1OzA7TDswMDRCIDAzMjc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBLIENFRElMTEE7OzswMTM3OworMDEzNztMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIENFRElMTEE7TGw7MDtMOzAwNkIgMDMyNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBLIENFRElMTEE7OzAxMzY7OzAxMzYKKzAxMzg7TEFUSU4gU01BTEwgTEVUVEVSIEtSQTtMbDswO0w7Ozs7O047O0dyZWVubGFuZGljOzs7CiswMTM5O0xBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBBQ1VURTtMdTswO0w7MDA0QyAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBBQ1VURTs7OzAxM0E7CiswMTNBO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQUNVVEU7TGw7MDtMOzAwNkMgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBMIEFDVVRFOzswMTM5OzswMTM5CiswMTNCO0xBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDRURJTExBO0x1OzA7TDswMDRDIDAzMjc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIENFRElMTEE7OzswMTNDOworMDEzQztMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIENFRElMTEE7TGw7MDtMOzAwNkMgMDMyNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBMIENFRElMTEE7OzAxM0I7OzAxM0IKKzAxM0Q7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENBUk9OO0x1OzA7TDswMDRDIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIEhBQ0VLOzs7MDEzRTsKKzAxM0U7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDQVJPTjtMbDswO0w7MDA2QyAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEwgSEFDRUs7OzAxM0Q7OzAxM0QKKzAxM0Y7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIE1JRERMRSBET1Q7THU7MDtMOzxjb21wYXQ+IDAwNEMgMDBCNzs7OztOOzs7OzAxNDA7CiswMTQwO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggTUlERExFIERPVDtMbDswO0w7PGNvbXBhdD4gMDA2QyAwMEI3Ozs7O047OzswMTNGOzswMTNGCiswMTQxO0xBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBTVFJPS0U7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEwgU0xBU0g7OzswMTQyOworMDE0MjtMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEwgU0xBU0g7OzAxNDE7OzAxNDEKKzAxNDM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIEFDVVRFO0x1OzA7TDswMDRFIDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIEFDVVRFOzs7MDE0NDsKKzAxNDQ7TEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBBQ1VURTtMbDswO0w7MDA2RSAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE4gQUNVVEU7OzAxNDM7OzAxNDMKKzAxNDU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENFRElMTEE7THU7MDtMOzAwNEUgMDMyNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE4gQ0VESUxMQTs7OzAxNDY7CiswMTQ2O0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQ0VESUxMQTtMbDswO0w7MDA2RSAwMzI3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE4gQ0VESUxMQTs7MDE0NTs7MDE0NQorMDE0NztMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQ0FST047THU7MDtMOzAwNEUgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE4gSEFDRUs7OzswMTQ4OworMDE0ODtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENBUk9OO0xsOzA7TDswMDZFIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTiBIQUNFSzs7MDE0Nzs7MDE0NworMDE0OTtMQVRJTiBTTUFMTCBMRVRURVIgTiBQUkVDRURFRCBCWSBBUE9TVFJPUEhFO0xsOzA7TDs8Y29tcGF0PiAwMkJDIDAwNkU7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQVBPU1RST1BIRSBOOzs7OworMDE0QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBFTkc7THU7MDtMOzs7OztOOztTYW1pOzswMTRCOworMDE0QjtMQVRJTiBTTUFMTCBMRVRURVIgRU5HO0xsOzA7TDs7Ozs7Tjs7U2FtaTswMTRBOzswMTRBCiswMTRDO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBNQUNST047THU7MDtMOzAwNEYgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gTUFDUk9OOzs7MDE0RDsKKzAxNEQ7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBNQUNST047TGw7MDtMOzAwNkYgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIE1BQ1JPTjs7MDE0Qzs7MDE0QworMDE0RTtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQlJFVkU7THU7MDtMOzAwNEYgMDMwNjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gQlJFVkU7OzswMTRGOworMDE0RjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEJSRVZFO0xsOzA7TDswMDZGIDAzMDY7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBCUkVWRTs7MDE0RTs7MDE0RQorMDE1MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRE9VQkxFIEFDVVRFO0x1OzA7TDswMDRGIDAzMEI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIERPVUJMRSBBQ1VURTs7OzAxNTE7CiswMTUxO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9VQkxFIEFDVVRFO0xsOzA7TDswMDZGIDAzMEI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBET1VCTEUgQUNVVEU7OzAxNTA7OzAxNTAKKzAxNTI7TEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBPRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBFOzs7MDE1MzsKKzAxNTM7TEFUSU4gU01BTEwgTElHQVRVUkUgT0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIEU7OzAxNTI7OzAxNTIKKzAxNTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIEFDVVRFO0x1OzA7TDswMDUyIDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIEFDVVRFOzs7MDE1NTsKKzAxNTU7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBBQ1VURTtMbDswO0w7MDA3MiAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFIgQUNVVEU7OzAxNTQ7OzAxNTQKKzAxNTY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIENFRElMTEE7THU7MDtMOzAwNTIgMDMyNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFIgQ0VESUxMQTs7OzAxNTc7CiswMTU3O0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggQ0VESUxMQTtMbDswO0w7MDA3MiAwMzI3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFIgQ0VESUxMQTs7MDE1Njs7MDE1NgorMDE1ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggQ0FST047THU7MDtMOzAwNTIgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFIgSEFDRUs7OzswMTU5OworMDE1OTtMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENBUk9OO0xsOzA7TDswMDcyIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUiBIQUNFSzs7MDE1ODs7MDE1OAorMDE1QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQUNVVEU7THU7MDtMOzAwNTMgMDMwMTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFMgQUNVVEU7OzswMTVCOworMDE1QjtMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIEFDVVRFO0xsOzA7TDswMDczIDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUyBBQ1VURTs7MDE1QTs7MDE1QQorMDE1QztMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA1MyAwMzAyOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBDSVJDVU1GTEVYOzs7MDE1RDsKKzAxNUQ7TEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDczIDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUyBDSVJDVU1GTEVYOzswMTVDOzswMTVDCiswMTVFO0xBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDRURJTExBO0x1OzA7TDswMDUzIDAzMjc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIENFRElMTEE7Kjs7MDE1RjsKKzAxNUY7TEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDRURJTExBO0xsOzA7TDswMDczIDAzMjc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUyBDRURJTExBOyo7MDE1RTs7MDE1RQorMDE2MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST047THU7MDtMOzAwNTMgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFMgSEFDRUs7OzswMTYxOworMDE2MTtMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OO0xsOzA7TDswMDczIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUyBIQUNFSzs7MDE2MDs7MDE2MAorMDE2MjtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggQ0VESUxMQTtMdTswO0w7MDA1NCAwMzI3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBDRURJTExBOyo7OzAxNjM7CiswMTYzO0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ0VESUxMQTtMbDswO0w7MDA3NCAwMzI3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFQgQ0VESUxMQTsqOzAxNjI7OzAxNjIKKzAxNjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENBUk9OO0x1OzA7TDswMDU0IDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIEhBQ0VLOzs7MDE2NTsKKzAxNjU7TEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBDQVJPTjtMbDswO0w7MDA3NCAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFQgSEFDRUs7OzAxNjQ7OzAxNjQKKzAxNjY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBCQVI7OzswMTY3OworMDE2NztMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFQgQkFSOzswMTY2OzswMTY2CiswMTY4O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBUSUxERTtMdTswO0w7MDA1NSAwMzAzOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBUSUxERTs7OzAxNjk7CiswMTY5O0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggVElMREU7TGw7MDtMOzAwNzUgMDMwMzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIFRJTERFOzswMTY4OzswMTY4CiswMTZBO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST047THU7MDtMOzAwNTUgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgTUFDUk9OOzs7MDE2QjsKKzAxNkI7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST047TGw7MDtMOzAwNzUgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIE1BQ1JPTjs7MDE2QTs7MDE2QQorMDE2QztMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQlJFVkU7THU7MDtMOzAwNTUgMDMwNjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgQlJFVkU7OzswMTZEOworMDE2RDtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEJSRVZFO0xsOzA7TDswMDc1IDAzMDY7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBCUkVWRTs7MDE2Qzs7MDE2QworMDE2RTtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggUklORyBBQk9WRTtMdTswO0w7MDA1NSAwMzBBOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBSSU5HOzs7MDE2RjsKKzAxNkY7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBSSU5HIEFCT1ZFO0xsOzA7TDswMDc1IDAzMEE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBSSU5HOzswMTZFOzswMTZFCiswMTcwO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEU7THU7MDtMOzAwNTUgMDMwQjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgRE9VQkxFIEFDVVRFOzs7MDE3MTsKKzAxNzE7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEU7TGw7MDtMOzAwNzUgMDMwQjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIERPVUJMRSBBQ1VURTs7MDE3MDs7MDE3MAorMDE3MjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggT0dPTkVLO0x1OzA7TDswMDU1IDAzMjg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIE9HT05FSzs7OzAxNzM7CiswMTczO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggT0dPTkVLO0xsOzA7TDswMDc1IDAzMjg7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBPR09ORUs7OzAxNzI7OzAxNzIKKzAxNzQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNTcgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFcgQ0lSQ1VNRkxFWDs7OzAxNzU7CiswMTc1O0xBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA3NyAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFcgQ0lSQ1VNRkxFWDs7MDE3NDs7MDE3NAorMDE3NjtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA1OSAwMzAyOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBDSVJDVU1GTEVYOzs7MDE3NzsKKzAxNzc7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDc5IDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWSBDSVJDVU1GTEVYOzswMTc2OzswMTc2CiswMTc4O0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVM7THU7MDtMOzAwNTkgMDMwODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFkgRElBRVJFU0lTOzs7MDBGRjsKKzAxNzk7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIEFDVVRFO0x1OzA7TDswMDVBIDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBaIEFDVVRFOzs7MDE3QTsKKzAxN0E7TEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBBQ1VURTtMbDswO0w7MDA3QSAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFogQUNVVEU7OzAxNzk7OzAxNzkKKzAxN0I7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA1QSAwMzA3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBET1Q7OzswMTdDOworMDE3QztMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA3QSAwMzA3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFogRE9UOzswMTdCOzswMTdCCiswMTdEO0xBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBDQVJPTjtMdTswO0w7MDA1QSAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBIQUNFSzs7OzAxN0U7CiswMTdFO0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ0FST047TGw7MDtMOzAwN0EgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBaIEhBQ0VLOzswMTdEOzswMTdECiswMTdGO0xBVElOIFNNQUxMIExFVFRFUiBMT05HIFM7TGw7MDtMOzxjb21wYXQ+IDAwNzM7Ozs7Tjs7OzAwNTM7OzAwNTMKKzAxODA7TEFUSU4gU01BTEwgTEVUVEVSIEIgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBCIEJBUjs7OzsKKzAxODE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQiBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEIgSE9PSzs7OzAyNTM7CiswMTgyO0xBVElOIENBUElUQUwgTEVUVEVSIEIgV0lUSCBUT1BCQVI7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEIgVE9QQkFSOzs7MDE4MzsKKzAxODM7TEFUSU4gU01BTEwgTEVUVEVSIEIgV0lUSCBUT1BCQVI7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBCIFRPUEJBUjs7MDE4Mjs7MDE4MgorMDE4NDtMQVRJTiBDQVBJVEFMIExFVFRFUiBUT05FIFNJWDtMdTswO0w7Ozs7O047Ozs7MDE4NTsKKzAxODU7TEFUSU4gU01BTEwgTEVUVEVSIFRPTkUgU0lYO0xsOzA7TDs7Ozs7Tjs7OzAxODQ7OzAxODQKKzAxODY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgT1BFTiBPO0x1OzA7TDs7Ozs7Tjs7OzswMjU0OworMDE4NztMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBIT09LOzs7MDE4ODsKKzAxODg7TEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQyBIT09LOzswMTg3OzswMTg3CiswMTg5O0xBVElOIENBUElUQUwgTEVUVEVSIEFGUklDQU4gRDtMdTswO0w7Ozs7O047Oyo7OzAyNTY7CiswMThBO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIEhPT0s7OzswMjU3OworMDE4QjtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggVE9QQkFSO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFRPUEJBUjs7OzAxOEM7CiswMThDO0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggVE9QQkFSO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRCBUT1BCQVI7OzAxOEI7OzAxOEIKKzAxOEQ7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBERUxUQTtMbDswO0w7Ozs7O047Ozs7OworMDE4RTtMQVRJTiBDQVBJVEFMIExFVFRFUiBSRVZFUlNFRCBFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBUVVJORUQgRTs7OzAxREQ7CiswMThGO0xBVElOIENBUElUQUwgTEVUVEVSIFNDSFdBO0x1OzA7TDs7Ozs7Tjs7OzswMjU5OworMDE5MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBPUEVOIEU7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEVQU0lMT047OzswMjVCOworMDE5MTtMQVRJTiBDQVBJVEFMIExFVFRFUiBGIFdJVEggSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRiBIT09LOzs7MDE5MjsKKzAxOTI7TEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgU0NSSVBUIEY7OzAxOTE7OzAxOTEKKzAxOTM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEcgSE9PSzs7OzAyNjA7CiswMTk0O0xBVElOIENBUElUQUwgTEVUVEVSIEdBTU1BO0x1OzA7TDs7Ozs7Tjs7OzswMjYzOworMDE5NTtMQVRJTiBTTUFMTCBMRVRURVIgSFY7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBIIFY7aHdhaXI7MDFGNjs7MDFGNgorMDE5NjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJT1RBO0x1OzA7TDs7Ozs7Tjs7OzswMjY5OworMDE5NztMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggU1RST0tFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBCQVJSRUQgSTs7OzAyNjg7CiswMTk4O0xBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBLIEhPT0s7OzswMTk5OworMDE5OTtMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBLIEhPT0s7OzAxOTg7OzAxOTgKKzAxOUE7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBCQVI7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBCQVJSRUQgTDs7OzsKKzAxOUI7TEFUSU4gU01BTEwgTEVUVEVSIExBTUJEQSBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEJBUlJFRCBMQU1CREE7Ozs7CiswMTlDO0xBVElOIENBUElUQUwgTEVUVEVSIFRVUk5FRCBNO0x1OzA7TDs7Ozs7Tjs7OzswMjZGOworMDE5RDtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggTEVGVCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIEhPT0s7OzswMjcyOworMDE5RTtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIExPTkcgUklHSFQgTEVHO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMTlGO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBNSURETEUgVElMREU7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEJBUlJFRCBPOyo7OzAyNzU7CiswMUEwO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT1JOO0x1OzA7TDswMDRGIDAzMUI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIEhPUk47OzswMUExOworMDFBMTtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEhPUk47TGw7MDtMOzAwNkYgMDMxQjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIEhPUk47OzAxQTA7OzAxQTAKKzAxQTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgT0k7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gSTtnaGE7OzAxQTM7CiswMUEzO0xBVElOIFNNQUxMIExFVFRFUiBPSTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gSTtnaGE7MDFBMjs7MDFBMgorMDFBNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBQIFdJVEggSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgUCBIT09LOzs7MDFBNTsKKzAxQTU7TEFUSU4gU01BTEwgTEVUVEVSIFAgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUCBIT09LOzswMUE0OzswMUE0CiswMUE2O0xBVElOIExFVFRFUiBZUjtMdTswO0w7Ozs7O047TEFUSU4gTEVUVEVSIFkgUjs7OzAyODA7CiswMUE3O0xBVElOIENBUElUQUwgTEVUVEVSIFRPTkUgVFdPO0x1OzA7TDs7Ozs7Tjs7OzswMUE4OworMDFBODtMQVRJTiBTTUFMTCBMRVRURVIgVE9ORSBUV087TGw7MDtMOzs7OztOOzs7MDFBNzs7MDFBNworMDFBOTtMQVRJTiBDQVBJVEFMIExFVFRFUiBFU0g7THU7MDtMOzs7OztOOzs7OzAyODM7CiswMUFBO0xBVElOIExFVFRFUiBSRVZFUlNFRCBFU0ggTE9PUDtMbDswO0w7Ozs7O047Ozs7OworMDFBQjtMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIFBBTEFUQUwgSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFQgUEFMQVRBTCBIT09LOzs7OworMDFBQztMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBIT09LOzs7MDFBRDsKKzAxQUQ7TEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVCBIT09LOzswMUFDOzswMUFDCiswMUFFO0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBSRVRST0ZMRVggSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBSRVRST0ZMRVggSE9PSzs7OzAyODg7CiswMUFGO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBIT1JOO0x1OzA7TDswMDU1IDAzMUI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIEhPUk47OzswMUIwOworMDFCMDtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEhPUk47TGw7MDtMOzAwNzUgMDMxQjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIEhPUk47OzAxQUY7OzAxQUYKKzAxQjE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVVBTSUxPTjtMdTswO0w7Ozs7O047Ozs7MDI4QTsKKzAxQjI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgViBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFNDUklQVCBWOzs7MDI4QjsKKzAxQjM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFkgSE9PSzs7OzAxQjQ7CiswMUI0O0xBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFkgSE9PSzs7MDFCMzs7MDFCMworMDFCNTtMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggU1RST0tFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBaIEJBUjs7OzAxQjY7CiswMUI2O0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWiBCQVI7OzAxQjU7OzAxQjUKKzAxQjc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRVpIO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBZT0dIOzs7MDI5MjsKKzAxQjg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRVpIIFJFVkVSU0VEO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBSRVZFUlNFRCBZT0dIOzs7MDFCOTsKKzAxQjk7TEFUSU4gU01BTEwgTEVUVEVSIEVaSCBSRVZFUlNFRDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFJFVkVSU0VEIFlPR0g7OzAxQjg7OzAxQjgKKzAxQkE7TEFUSU4gU01BTEwgTEVUVEVSIEVaSCBXSVRIIFRBSUw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBZT0dIIFdJVEggVEFJTDs7OzsKKzAxQkI7TEFUSU4gTEVUVEVSIFRXTyBXSVRIIFNUUk9LRTtMbzswO0w7Ozs7O047TEFUSU4gTEVUVEVSIFRXTyBCQVI7Ozs7CiswMUJDO0xBVElOIENBUElUQUwgTEVUVEVSIFRPTkUgRklWRTtMdTswO0w7Ozs7O047Ozs7MDFCRDsKKzAxQkQ7TEFUSU4gU01BTEwgTEVUVEVSIFRPTkUgRklWRTtMbDswO0w7Ozs7O047OzswMUJDOzswMUJDCiswMUJFO0xBVElOIExFVFRFUiBJTlZFUlRFRCBHTE9UVEFMIFNUT1AgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIExFVFRFUiBJTlZFUlRFRCBHTE9UVEFMIFNUT1AgQkFSOzs7OworMDFCRjtMQVRJTiBMRVRURVIgV1lOTjtMbDswO0w7Ozs7O047OzswMUY3OzswMUY3CiswMUMwO0xBVElOIExFVFRFUiBERU5UQUwgQ0xJQ0s7TG87MDtMOzs7OztOO0xBVElOIExFVFRFUiBQSVBFOzs7OworMDFDMTtMQVRJTiBMRVRURVIgTEFURVJBTCBDTElDSztMbzswO0w7Ozs7O047TEFUSU4gTEVUVEVSIERPVUJMRSBQSVBFOzs7OworMDFDMjtMQVRJTiBMRVRURVIgQUxWRU9MQVIgQ0xJQ0s7TG87MDtMOzs7OztOO0xBVElOIExFVFRFUiBQSVBFIERPVUJMRSBCQVI7Ozs7CiswMUMzO0xBVElOIExFVFRFUiBSRVRST0ZMRVggQ0xJQ0s7TG87MDtMOzs7OztOO0xBVElOIExFVFRFUiBFWENMQU1BVElPTiBNQVJLOzs7OworMDFDNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBEWiBXSVRIIENBUk9OO0x1OzA7TDs8Y29tcGF0PiAwMDQ0IDAxN0Q7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFogSEFDRUs7OzswMUM2OzAxQzUKKzAxQzU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIFNNQUxMIExFVFRFUiBaIFdJVEggQ0FST047THQ7MDtMOzxjb21wYXQ+IDAwNDQgMDE3RTs7OztOO0xBVElOIExFVFRFUiBDQVBJVEFMIEQgU01BTEwgWiBIQUNFSzs7MDFDNDswMUM2OworMDFDNjtMQVRJTiBTTUFMTCBMRVRURVIgRFogV0lUSCBDQVJPTjtMbDswO0w7PGNvbXBhdD4gMDA2NCAwMTdFOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEQgWiBIQUNFSzs7MDFDNDs7MDFDNQorMDFDNztMQVRJTiBDQVBJVEFMIExFVFRFUiBMSjtMdTswO0w7PGNvbXBhdD4gMDA0QyAwMDRBOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBKOzs7MDFDOTswMUM4CiswMUM4O0xBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBTTUFMTCBMRVRURVIgSjtMdDswO0w7PGNvbXBhdD4gMDA0QyAwMDZBOzs7O047TEFUSU4gTEVUVEVSIENBUElUQUwgTCBTTUFMTCBKOzswMUM3OzAxQzk7CiswMUM5O0xBVElOIFNNQUxMIExFVFRFUiBMSjtMbDswO0w7PGNvbXBhdD4gMDA2QyAwMDZBOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEwgSjs7MDFDNzs7MDFDOAorMDFDQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBOSjtMdTswO0w7PGNvbXBhdD4gMDA0RSAwMDRBOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBKOzs7MDFDQzswMUNCCiswMUNCO0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBTTUFMTCBMRVRURVIgSjtMdDswO0w7PGNvbXBhdD4gMDA0RSAwMDZBOzs7O047TEFUSU4gTEVUVEVSIENBUElUQUwgTiBTTUFMTCBKOzswMUNBOzAxQ0M7CiswMUNDO0xBVElOIFNNQUxMIExFVFRFUiBOSjtMbDswO0w7PGNvbXBhdD4gMDA2RSAwMDZBOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE4gSjs7MDFDQTs7MDFDQgorMDFDRDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0FST047THU7MDtMOzAwNDEgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgSEFDRUs7OzswMUNFOworMDFDRTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENBUk9OO0xsOzA7TDswMDYxIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBIQUNFSzs7MDFDRDs7MDFDRAorMDFDRjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQ0FST047THU7MDtMOzAwNDkgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEkgSEFDRUs7OzswMUQwOworMDFEMDtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIENBUk9OO0xsOzA7TDswMDY5IDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSSBIQUNFSzs7MDFDRjs7MDFDRgorMDFEMTtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0FST047THU7MDtMOzAwNEYgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gSEFDRUs7OzswMUQyOworMDFEMjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENBUk9OO0xsOzA7TDswMDZGIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBIQUNFSzs7MDFEMTs7MDFEMQorMDFEMztMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0FST047THU7MDtMOzAwNTUgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgSEFDRUs7OzswMUQ0OworMDFENDtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENBUk9OO0xsOzA7TDswMDc1IDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBIQUNFSzs7MDFEMzs7MDFEMworMDFENTtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEFORCBNQUNST047THU7MDtMOzAwREMgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgRElBRVJFU0lTIE1BQ1JPTjs7OzAxRDY7CiswMUQ2O0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEFORCBNQUNST047TGw7MDtMOzAwRkMgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBVIERJQUVSRVNJUyBNQUNST047OzAxRDU7OzAxRDUKKzAxRDc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgQUNVVEU7THU7MDtMOzAwREMgMDMwMTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgRElBRVJFU0lTIEFDVVRFOzs7MDFEODsKKzAxRDg7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIEFDVVRFO0xsOzA7TDswMEZDIDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBESUFFUkVTSVMgQUNVVEU7OzAxRDc7OzAxRDcKKzAxRDk7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgQ0FST047THU7MDtMOzAwREMgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgRElBRVJFU0lTIEhBQ0VLOzs7MDFEQTsKKzAxREE7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIENBUk9OO0xsOzA7TDswMEZDIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBESUFFUkVTSVMgSEFDRUs7OzAxRDk7OzAxRDkKKzAxREI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgR1JBVkU7THU7MDtMOzAwREMgMDMwMDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgRElBRVJFU0lTIEdSQVZFOzs7MDFEQzsKKzAxREM7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIEdSQVZFO0xsOzA7TDswMEZDIDAzMDA7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBESUFFUkVTSVMgR1JBVkU7OzAxREI7OzAxREIKKzAxREQ7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBFO0xsOzA7TDs7Ozs7Tjs7OzAxOEU7OzAxOEUKKzAxREU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUyBBTkQgTUFDUk9OO0x1OzA7TDswMEM0IDAzMDQ7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIERJQUVSRVNJUyBNQUNST047OzswMURGOworMDFERjtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUyBBTkQgTUFDUk9OO0xsOzA7TDswMEU0IDAzMDQ7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBESUFFUkVTSVMgTUFDUk9OOzswMURFOzswMURFCiswMUUwO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBET1QgQUJPVkUgQU5EIE1BQ1JPTjtMdTswO0w7MDIyNiAwMzA0Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBET1QgTUFDUk9OOzs7MDFFMTsKKzAxRTE7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBET1QgQUJPVkUgQU5EIE1BQ1JPTjtMbDswO0w7MDIyNyAwMzA0Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgRE9UIE1BQ1JPTjs7MDFFMDs7MDFFMAorMDFFMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBRSBXSVRIIE1BQ1JPTjtMdTswO0w7MDBDNiAwMzA0Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBFIE1BQ1JPTjthc2ggKjs7MDFFMzsKKzAxRTM7TEFUSU4gU01BTEwgTEVUVEVSIEFFIFdJVEggTUFDUk9OO0xsOzA7TDswMEU2IDAzMDQ7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBFIE1BQ1JPTjthc2ggKjswMUUyOzswMUUyCiswMUU0O0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBTVFJPS0U7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEcgQkFSOzs7MDFFNTsKKzAxRTU7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBHIEJBUjs7MDFFNDs7MDFFNAorMDFFNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQ0FST047THU7MDtMOzAwNDcgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEcgSEFDRUs7OzswMUU3OworMDFFNztMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIENBUk9OO0xsOzA7TDswMDY3IDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRyBIQUNFSzs7MDFFNjs7MDFFNgorMDFFODtMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggQ0FST047THU7MDtMOzAwNEIgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEsgSEFDRUs7OzswMUU5OworMDFFOTtMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIENBUk9OO0xsOzA7TDswMDZCIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSyBIQUNFSzs7MDFFODs7MDFFOAorMDFFQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggT0dPTkVLO0x1OzA7TDswMDRGIDAzMjg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIE9HT05FSzs7OzAxRUI7CiswMUVCO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggT0dPTkVLO0xsOzA7TDswMDZGIDAzMjg7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBPR09ORUs7OzAxRUE7OzAxRUEKKzAxRUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIE9HT05FSyBBTkQgTUFDUk9OO0x1OzA7TDswMUVBIDAzMDQ7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIE9HT05FSyBNQUNST047OzswMUVEOworMDFFRDtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIE9HT05FSyBBTkQgTUFDUk9OO0xsOzA7TDswMUVCIDAzMDQ7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBPR09ORUsgTUFDUk9OOzswMUVDOzswMUVDCiswMUVFO0xBVElOIENBUElUQUwgTEVUVEVSIEVaSCBXSVRIIENBUk9OO0x1OzA7TDswMUI3IDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBZT0dIIEhBQ0VLOzs7MDFFRjsKKzAxRUY7TEFUSU4gU01BTEwgTEVUVEVSIEVaSCBXSVRIIENBUk9OO0xsOzA7TDswMjkyIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWU9HSCBIQUNFSzs7MDFFRTs7MDFFRQorMDFGMDtMQVRJTiBTTUFMTCBMRVRURVIgSiBXSVRIIENBUk9OO0xsOzA7TDswMDZBIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSiBIQUNFSzs7OzsKKzAxRjE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRFo7THU7MDtMOzxjb21wYXQ+IDAwNDQgMDA1QTs7OztOOzs7OzAxRjM7MDFGMgorMDFGMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggU01BTEwgTEVUVEVSIFo7THQ7MDtMOzxjb21wYXQ+IDAwNDQgMDA3QTs7OztOOzs7MDFGMTswMUYzOworMDFGMztMQVRJTiBTTUFMTCBMRVRURVIgRFo7TGw7MDtMOzxjb21wYXQ+IDAwNjQgMDA3QTs7OztOOzs7MDFGMTs7MDFGMgorMDFGNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQUNVVEU7THU7MDtMOzAwNDcgMDMwMTs7OztOOzs7OzAxRjU7CiswMUY1O0xBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQUNVVEU7TGw7MDtMOzAwNjcgMDMwMTs7OztOOzs7MDFGNDs7MDFGNAorMDFGNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBIV0FJUjtMdTswO0w7Ozs7O047Ozs7MDE5NTsKKzAxRjc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgV1lOTjtMdTswO0w7Ozs7O047Ozs7MDFCRjsKKzAxRjg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIEdSQVZFO0x1OzA7TDswMDRFIDAzMDA7Ozs7Tjs7OzswMUY5OworMDFGOTtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIEdSQVZFO0xsOzA7TDswMDZFIDAzMDA7Ozs7Tjs7OzAxRjg7OzAxRjgKKzAxRkE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUgQU5EIEFDVVRFO0x1OzA7TDswMEM1IDAzMDE7Ozs7Tjs7OzswMUZCOworMDFGQjtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkUgQU5EIEFDVVRFO0xsOzA7TDswMEU1IDAzMDE7Ozs7Tjs7OzAxRkE7OzAxRkEKKzAxRkM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQUUgV0lUSCBBQ1VURTtMdTswO0w7MDBDNiAwMzAxOzs7O047O2FzaCAqOzswMUZEOworMDFGRDtMQVRJTiBTTUFMTCBMRVRURVIgQUUgV0lUSCBBQ1VURTtMbDswO0w7MDBFNiAwMzAxOzs7O047O2FzaCAqOzAxRkM7OzAxRkMKKzAxRkU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRSBBTkQgQUNVVEU7THU7MDtMOzAwRDggMDMwMTs7OztOOzs7OzAxRkY7CiswMUZGO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggU1RST0tFIEFORCBBQ1VURTtMbDswO0w7MDBGOCAwMzAxOzs7O047OzswMUZFOzswMUZFCiswMjAwO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBET1VCTEUgR1JBVkU7THU7MDtMOzAwNDEgMDMwRjs7OztOOzs7OzAyMDE7CiswMjAxO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRE9VQkxFIEdSQVZFO0xsOzA7TDswMDYxIDAzMEY7Ozs7Tjs7OzAyMDA7OzAyMDAKKzAyMDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIElOVkVSVEVEIEJSRVZFO0x1OzA7TDswMDQxIDAzMTE7Ozs7Tjs7OzswMjAzOworMDIwMztMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIElOVkVSVEVEIEJSRVZFO0xsOzA7TDswMDYxIDAzMTE7Ozs7Tjs7OzAyMDI7OzAyMDIKKzAyMDQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVUJMRSBHUkFWRTtMdTswO0w7MDA0NSAwMzBGOzs7O047Ozs7MDIwNTsKKzAyMDU7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBET1VCTEUgR1JBVkU7TGw7MDtMOzAwNjUgMDMwRjs7OztOOzs7MDIwNDs7MDIwNAorMDIwNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggSU5WRVJURUQgQlJFVkU7THU7MDtMOzAwNDUgMDMxMTs7OztOOzs7OzAyMDc7CiswMjA3O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggSU5WRVJURUQgQlJFVkU7TGw7MDtMOzAwNjUgMDMxMTs7OztOOzs7MDIwNjs7MDIwNgorMDIwODtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRE9VQkxFIEdSQVZFO0x1OzA7TDswMDQ5IDAzMEY7Ozs7Tjs7OzswMjA5OworMDIwOTtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERPVUJMRSBHUkFWRTtMbDswO0w7MDA2OSAwMzBGOzs7O047OzswMjA4OzswMjA4CiswMjBBO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBJTlZFUlRFRCBCUkVWRTtMdTswO0w7MDA0OSAwMzExOzs7O047Ozs7MDIwQjsKKzAyMEI7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBJTlZFUlRFRCBCUkVWRTtMbDswO0w7MDA2OSAwMzExOzs7O047OzswMjBBOzswMjBBCiswMjBDO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBET1VCTEUgR1JBVkU7THU7MDtMOzAwNEYgMDMwRjs7OztOOzs7OzAyMEQ7CiswMjBEO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9VQkxFIEdSQVZFO0xsOzA7TDswMDZGIDAzMEY7Ozs7Tjs7OzAyMEM7OzAyMEMKKzAyMEU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIElOVkVSVEVEIEJSRVZFO0x1OzA7TDswMDRGIDAzMTE7Ozs7Tjs7OzswMjBGOworMDIwRjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIElOVkVSVEVEIEJSRVZFO0xsOzA7TDswMDZGIDAzMTE7Ozs7Tjs7OzAyMEU7OzAyMEUKKzAyMTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIERPVUJMRSBHUkFWRTtMdTswO0w7MDA1MiAwMzBGOzs7O047Ozs7MDIxMTsKKzAyMTE7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBET1VCTEUgR1JBVkU7TGw7MDtMOzAwNzIgMDMwRjs7OztOOzs7MDIxMDs7MDIxMAorMDIxMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggSU5WRVJURUQgQlJFVkU7THU7MDtMOzAwNTIgMDMxMTs7OztOOzs7OzAyMTM7CiswMjEzO0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggSU5WRVJURUQgQlJFVkU7TGw7MDtMOzAwNzIgMDMxMTs7OztOOzs7MDIxMjs7MDIxMgorMDIxNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRE9VQkxFIEdSQVZFO0x1OzA7TDswMDU1IDAzMEY7Ozs7Tjs7OzswMjE1OworMDIxNTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERPVUJMRSBHUkFWRTtMbDswO0w7MDA3NSAwMzBGOzs7O047OzswMjE0OzswMjE0CiswMjE2O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBJTlZFUlRFRCBCUkVWRTtMdTswO0w7MDA1NSAwMzExOzs7O047Ozs7MDIxNzsKKzAyMTc7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBJTlZFUlRFRCBCUkVWRTtMbDswO0w7MDA3NSAwMzExOzs7O047OzswMjE2OzswMjE2CiswMjE4O0xBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDT01NQSBCRUxPVztMdTswO0w7MDA1MyAwMzI2Ozs7O047Oyo7OzAyMTk7CiswMjE5O0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ09NTUEgQkVMT1c7TGw7MDtMOzAwNzMgMDMyNjs7OztOOzsqOzAyMTg7OzAyMTgKKzAyMUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENPTU1BIEJFTE9XO0x1OzA7TDswMDU0IDAzMjY7Ozs7Tjs7Kjs7MDIxQjsKKzAyMUI7TEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBDT01NQSBCRUxPVztMbDswO0w7MDA3NCAwMzI2Ozs7O047Oyo7MDIxQTs7MDIxQQorMDIxQztMQVRJTiBDQVBJVEFMIExFVFRFUiBZT0dIO0x1OzA7TDs7Ozs7Tjs7OzswMjFEOworMDIxRDtMQVRJTiBTTUFMTCBMRVRURVIgWU9HSDtMbDswO0w7Ozs7O047OzswMjFDOzswMjFDCiswMjFFO0xBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBDQVJPTjtMdTswO0w7MDA0OCAwMzBDOzs7O047Ozs7MDIxRjsKKzAyMUY7TEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBDQVJPTjtMbDswO0w7MDA2OCAwMzBDOzs7O047OzswMjFFOzswMjFFCiswMjIyO0xBVElOIENBUElUQUwgTEVUVEVSIE9VO0x1OzA7TDs7Ozs7Tjs7OzswMjIzOworMDIyMztMQVRJTiBTTUFMTCBMRVRURVIgT1U7TGw7MDtMOzs7OztOOzs7MDIyMjs7MDIyMgorMDIyNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggSE9PSztMdTswO0w7Ozs7O047Ozs7MDIyNTsKKzAyMjU7TEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBIT09LO0xsOzA7TDs7Ozs7Tjs7OzAyMjQ7OzAyMjQKKzAyMjY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0MSAwMzA3Ozs7O047Ozs7MDIyNzsKKzAyMjc7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNjEgMDMwNzs7OztOOzs7MDIyNjs7MDIyNgorMDIyODtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0VESUxMQTtMdTswO0w7MDA0NSAwMzI3Ozs7O047Ozs7MDIyOTsKKzAyMjk7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDRURJTExBO0xsOzA7TDswMDY1IDAzMjc7Ozs7Tjs7OzAyMjg7OzAyMjgKKzAyMkE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUyBBTkQgTUFDUk9OO0x1OzA7TDswMEQ2IDAzMDQ7Ozs7Tjs7OzswMjJCOworMDIyQjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUyBBTkQgTUFDUk9OO0xsOzA7TDswMEY2IDAzMDQ7Ozs7Tjs7OzAyMkE7OzAyMkEKKzAyMkM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFIEFORCBNQUNST047THU7MDtMOzAwRDUgMDMwNDs7OztOOzs7OzAyMkQ7CiswMjJEO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggVElMREUgQU5EIE1BQ1JPTjtMbDswO0w7MDBGNSAwMzA0Ozs7O047OzswMjJDOzswMjJDCiswMjJFO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNEYgMDMwNzs7OztOOzs7OzAyMkY7CiswMjJGO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDZGIDAzMDc7Ozs7Tjs7OzAyMkU7OzAyMkUKKzAyMzA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVCBBQk9WRSBBTkQgTUFDUk9OO0x1OzA7TDswMjJFIDAzMDQ7Ozs7Tjs7OzswMjMxOworMDIzMTtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERPVCBBQk9WRSBBTkQgTUFDUk9OO0xsOzA7TDswMjJGIDAzMDQ7Ozs7Tjs7OzAyMzA7OzAyMzAKKzAyMzI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIE1BQ1JPTjtMdTswO0w7MDA1OSAwMzA0Ozs7O047Ozs7MDIzMzsKKzAyMzM7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBNQUNST047TGw7MDtMOzAwNzkgMDMwNDs7OztOOzs7MDIzMjs7MDIzMgorMDI1MDtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIEE7TGw7MDtMOzs7OztOOzs7OzsKKzAyNTE7TEFUSU4gU01BTEwgTEVUVEVSIEFMUEhBO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgU0NSSVBUIEE7Ozs7CiswMjUyO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgQUxQSEE7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgU0NSSVBUIEE7Ozs7CiswMjUzO0xBVElOIFNNQUxMIExFVFRFUiBCIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEIgSE9PSzs7MDE4MTs7MDE4MQorMDI1NDtMQVRJTiBTTUFMTCBMRVRURVIgT1BFTiBPO0xsOzA7TDs7Ozs7Tjs7OzAxODY7OzAxODYKKzAyNTU7TEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDVVJMO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQyBDVVJMOzs7OworMDI1NjtMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIFRBSUw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIFJFVFJPRkxFWCBIT09LOzswMTg5OzswMTg5CiswMjU3O0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEQgSE9PSzs7MDE4QTs7MDE4QQorMDI1ODtMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgRTtMbDswO0w7Ozs7O047Ozs7OworMDI1OTtMQVRJTiBTTUFMTCBMRVRURVIgU0NIV0E7TGw7MDtMOzs7OztOOzs7MDE4Rjs7MDE4RgorMDI1QTtMQVRJTiBTTUFMTCBMRVRURVIgU0NIV0EgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgU0NIV0EgSE9PSzs7OzsKKzAyNUI7TEFUSU4gU01BTEwgTEVUVEVSIE9QRU4gRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEVQU0lMT047OzAxOTA7OzAxOTAKKzAyNUM7TEFUSU4gU01BTEwgTEVUVEVSIFJFVkVSU0VEIE9QRU4gRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFJFVkVSU0VEIEVQU0lMT047Ozs7CiswMjVEO0xBVElOIFNNQUxMIExFVFRFUiBSRVZFUlNFRCBPUEVOIEUgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgRVBTSUxPTiBIT09LOzs7OworMDI1RTtMQVRJTiBTTUFMTCBMRVRURVIgQ0xPU0VEIFJFVkVSU0VEIE9QRU4gRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIENMT1NFRCBSRVZFUlNFRCBFUFNJTE9OOzs7OworMDI1RjtMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKIEJBUjs7OzsKKzAyNjA7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRyBIT09LOzswMTkzOzswMTkzCiswMjYxO0xBVElOIFNNQUxMIExFVFRFUiBTQ1JJUFQgRztMbDswO0w7Ozs7O047Ozs7OworMDI2MjtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBHO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjYzO0xBVElOIFNNQUxMIExFVFRFUiBHQU1NQTtMbDswO0w7Ozs7O047OzswMTk0OzswMTk0CiswMjY0O0xBVElOIFNNQUxMIExFVFRFUiBSQU1TIEhPUk47TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBCQUJZIEdBTU1BOzs7OworMDI2NTtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIEg7TGw7MDtMOzs7OztOOzs7OzsKKzAyNjY7TEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSCBIT09LOzs7OworMDI2NztMQVRJTiBTTUFMTCBMRVRURVIgSEVORyBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBIRU5HIEhPT0s7Ozs7CiswMjY4O0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQkFSUkVEIEk7OzAxOTc7OzAxOTcKKzAyNjk7TEFUSU4gU01BTEwgTEVUVEVSIElPVEE7TGw7MDtMOzs7OztOOzs7MDE5Njs7MDE5NgorMDI2QTtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBJO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjZCO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggTUlERExFIFRJTERFO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjZDO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQkVMVDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEwgQkVMVDs7OzsKKzAyNkQ7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBSRVRST0ZMRVggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEwgUkVUUk9GTEVYIEhPT0s7Ozs7CiswMjZFO0xBVElOIFNNQUxMIExFVFRFUiBMRVpIO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTCBZT0dIOzs7OworMDI2RjtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIE07TGw7MDtMOzs7OztOOzs7MDE5Qzs7MDE5QworMDI3MDtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIE0gV0lUSCBMT05HIExFRztMbDswO0w7Ozs7O047Ozs7OworMDI3MTtMQVRJTiBTTUFMTCBMRVRURVIgTSBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBNIEhPT0s7Ozs7CiswMjcyO0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggTEVGVCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTiBIT09LOzswMTlEOzswMTlECiswMjczO0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggUkVUUk9GTEVYIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBOIFJFVFJPRkxFWCBIT09LOzs7OworMDI3NDtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBOO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjc1O0xBVElOIFNNQUxMIExFVFRFUiBCQVJSRUQgTztMbDswO0w7Ozs7O047OzswMTlGOzswMTlGCiswMjc2O0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIE9FO0xsOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBPIEU7Ozs7CiswMjc3O0xBVElOIFNNQUxMIExFVFRFUiBDTE9TRUQgT01FR0E7TGw7MDtMOzs7OztOOzs7OzsKKzAyNzg7TEFUSU4gU01BTEwgTEVUVEVSIFBISTtMbDswO0w7Ozs7O047Ozs7OworMDI3OTtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFI7TGw7MDtMOzs7OztOOzs7OzsKKzAyN0E7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBSIFdJVEggTE9ORyBMRUc7TGw7MDtMOzs7OztOOzs7OzsKKzAyN0I7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBSIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBSIEhPT0s7Ozs7CiswMjdDO0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggTE9ORyBMRUc7TGw7MDtMOzs7OztOOzs7OzsKKzAyN0Q7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBUQUlMO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUiBIT09LOzs7OworMDI3RTtMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIEZJU0hIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRklTSEhPT0sgUjs7OzsKKzAyN0Y7TEFUSU4gU01BTEwgTEVUVEVSIFJFVkVSU0VEIFIgV0lUSCBGSVNISE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFJFVkVSU0VEIEZJU0hIT09LIFI7Ozs7CiswMjgwO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFI7TGw7MDtMOzs7OztOOzs7MDFBNjs7MDFBNgorMDI4MTtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBJTlZFUlRFRCBSO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjgyO0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFMgSE9PSzs7OzsKKzAyODM7TEFUSU4gU01BTEwgTEVUVEVSIEVTSDtMbDswO0w7Ozs7O047OzswMUE5OzswMUE5CiswMjg0O0xBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEogV0lUSCBTVFJPS0UgQU5EIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBET1RMRVNTIEogQkFSIEhPT0s7Ozs7CiswMjg1O0xBVElOIFNNQUxMIExFVFRFUiBTUVVBVCBSRVZFUlNFRCBFU0g7TGw7MDtMOzs7OztOOzs7OzsKKzAyODY7TEFUSU4gU01BTEwgTEVUVEVSIEVTSCBXSVRIIENVUkw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFU0ggQ1VSTDs7OzsKKzAyODc7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBUO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjg4O0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggUkVUUk9GTEVYIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIFJFVFJPRkxFWCBIT09LOzswMUFFOzswMUFFCiswMjg5O0xBVElOIFNNQUxMIExFVFRFUiBVIEJBUjtMbDswO0w7Ozs7O047Ozs7OworMDI4QTtMQVRJTiBTTUFMTCBMRVRURVIgVVBTSUxPTjtMbDswO0w7Ozs7O047OzswMUIxOzswMUIxCiswMjhCO0xBVElOIFNNQUxMIExFVFRFUiBWIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBWOzswMUIyOzswMUIyCiswMjhDO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgVjtMbDswO0w7Ozs7O047Ozs7OworMDI4RDtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFc7TGw7MDtMOzs7OztOOzs7OzsKKzAyOEU7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBZO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjhGO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIFk7TGw7MDtMOzs7OztOOzs7OzsKKzAyOTA7TEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBSRVRST0ZMRVggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFogUkVUUk9GTEVYIEhPT0s7Ozs7CiswMjkxO0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ1VSTDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFogQ1VSTDs7OzsKKzAyOTI7TEFUSU4gU01BTEwgTEVUVEVSIEVaSDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFlPR0g7OzAxQjc7OzAxQjcKKzAyOTM7TEFUSU4gU01BTEwgTEVUVEVSIEVaSCBXSVRIIENVUkw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBZT0dIIENVUkw7Ozs7CiswMjk0O0xBVElOIExFVFRFUiBHTE9UVEFMIFNUT1A7TGw7MDtMOzs7OztOOzs7OzsKKzAyOTU7TEFUSU4gTEVUVEVSIFBIQVJZTkdFQUwgVk9JQ0VEIEZSSUNBVElWRTtMbDswO0w7Ozs7O047TEFUSU4gTEVUVEVSIFJFVkVSU0VEIEdMT1RUQUwgU1RPUDs7OzsKKzAyOTY7TEFUSU4gTEVUVEVSIElOVkVSVEVEIEdMT1RUQUwgU1RPUDtMbDswO0w7Ozs7O047Ozs7OworMDI5NztMQVRJTiBMRVRURVIgU1RSRVRDSEVEIEM7TGw7MDtMOzs7OztOOzs7OzsKKzAyOTg7TEFUSU4gTEVUVEVSIEJJTEFCSUFMIENMSUNLO0xsOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgQlVMTFNFWUU7Ozs7CiswMjk5O0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEI7TGw7MDtMOzs7OztOOzs7OzsKKzAyOUE7TEFUSU4gU01BTEwgTEVUVEVSIENMT1NFRCBPUEVOIEU7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDTE9TRUQgRVBTSUxPTjs7OzsKKzAyOUI7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgRyBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEcgSE9PSzs7OzsKKzAyOUM7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgSDtMbDswO0w7Ozs7O047Ozs7OworMDI5RDtMQVRJTiBTTUFMTCBMRVRURVIgSiBXSVRIIENST1NTRUQtVEFJTDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIENST1NTRUQtVEFJTCBKOzs7OworMDI5RTtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIEs7TGw7MDtMOzs7OztOOzs7OzsKKzAyOUY7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgTDtMbDswO0w7Ozs7O047Ozs7OworMDJBMDtMQVRJTiBTTUFMTCBMRVRURVIgUSBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBRIEhPT0s7Ozs7CiswMkExO0xBVElOIExFVFRFUiBHTE9UVEFMIFNUT1AgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIExFVFRFUiBHTE9UVEFMIFNUT1AgQkFSOzs7OworMDJBMjtMQVRJTiBMRVRURVIgUkVWRVJTRUQgR0xPVFRBTCBTVE9QIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgUkVWRVJTRUQgR0xPVFRBTCBTVE9QIEJBUjs7OzsKKzAyQTM7TEFUSU4gU01BTEwgTEVUVEVSIERaIERJR1JBUEg7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIFo7Ozs7CiswMkE0O0xBVElOIFNNQUxMIExFVFRFUiBERVpIIERJR1JBUEg7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIFlPR0g7Ozs7CiswMkE1O0xBVElOIFNNQUxMIExFVFRFUiBEWiBESUdSQVBIIFdJVEggQ1VSTDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEQgWiBDVVJMOzs7OworMDJBNjtMQVRJTiBTTUFMTCBMRVRURVIgVFMgRElHUkFQSDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFQgUzs7OzsKKzAyQTc7TEFUSU4gU01BTEwgTEVUVEVSIFRFU0ggRElHUkFQSDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFQgRVNIOzs7OworMDJBODtMQVRJTiBTTUFMTCBMRVRURVIgVEMgRElHUkFQSCBXSVRIIENVUkw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIEMgQ1VSTDs7OzsKKzAyQTk7TEFUSU4gU01BTEwgTEVUVEVSIEZFTkcgRElHUkFQSDtMbDswO0w7Ozs7O047Ozs7OworMDJBQTtMQVRJTiBTTUFMTCBMRVRURVIgTFMgRElHUkFQSDtMbDswO0w7Ozs7O047Ozs7OworMDJBQjtMQVRJTiBTTUFMTCBMRVRURVIgTFogRElHUkFQSDtMbDswO0w7Ozs7O047Ozs7OworMDJBQztMQVRJTiBMRVRURVIgQklMQUJJQUwgUEVSQ1VTU0lWRTtMbDswO0w7Ozs7O047Ozs7OworMDJBRDtMQVRJTiBMRVRURVIgQklERU5UQUwgUEVSQ1VTU0lWRTtMbDswO0w7Ozs7O047Ozs7OworMDJCMDtNT0RJRklFUiBMRVRURVIgU01BTEwgSDtMbTswO0w7PHN1cGVyPiAwMDY4Ozs7O047Ozs7OworMDJCMTtNT0RJRklFUiBMRVRURVIgU01BTEwgSCBXSVRIIEhPT0s7TG07MDtMOzxzdXBlcj4gMDI2Njs7OztOO01PRElGSUVSIExFVFRFUiBTTUFMTCBIIEhPT0s7Ozs7CiswMkIyO01PRElGSUVSIExFVFRFUiBTTUFMTCBKO0xtOzA7TDs8c3VwZXI+IDAwNkE7Ozs7Tjs7Ozs7CiswMkIzO01PRElGSUVSIExFVFRFUiBTTUFMTCBSO0xtOzA7TDs8c3VwZXI+IDAwNzI7Ozs7Tjs7Ozs7CiswMkI0O01PRElGSUVSIExFVFRFUiBTTUFMTCBUVVJORUQgUjtMbTswO0w7PHN1cGVyPiAwMjc5Ozs7O047Ozs7OworMDJCNTtNT0RJRklFUiBMRVRURVIgU01BTEwgVFVSTkVEIFIgV0lUSCBIT09LO0xtOzA7TDs8c3VwZXI+IDAyN0I7Ozs7TjtNT0RJRklFUiBMRVRURVIgU01BTEwgVFVSTkVEIFIgSE9PSzs7OzsKKzAyQjY7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIENBUElUQUwgSU5WRVJURUQgUjtMbTswO0w7PHN1cGVyPiAwMjgxOzs7O047Ozs7OworMDJCNztNT0RJRklFUiBMRVRURVIgU01BTEwgVztMbTswO0w7PHN1cGVyPiAwMDc3Ozs7O047Ozs7OworMDJCODtNT0RJRklFUiBMRVRURVIgU01BTEwgWTtMbTswO0w7PHN1cGVyPiAwMDc5Ozs7O047Ozs7OworMDJCOTtNT0RJRklFUiBMRVRURVIgUFJJTUU7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkJBO01PRElGSUVSIExFVFRFUiBET1VCTEUgUFJJTUU7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkJCO01PRElGSUVSIExFVFRFUiBUVVJORUQgQ09NTUE7TG07MDtMOzs7OztOOzs7OzsKKzAyQkM7TU9ESUZJRVIgTEVUVEVSIEFQT1NUUk9QSEU7TG07MDtMOzs7OztOOzs7OzsKKzAyQkQ7TU9ESUZJRVIgTEVUVEVSIFJFVkVSU0VEIENPTU1BO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswMkJFO01PRElGSUVSIExFVFRFUiBSSUdIVCBIQUxGIFJJTkc7TG07MDtMOzs7OztOOzs7OzsKKzAyQkY7TU9ESUZJRVIgTEVUVEVSIExFRlQgSEFMRiBSSU5HO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswMkMwO01PRElGSUVSIExFVFRFUiBHTE9UVEFMIFNUT1A7TG07MDtMOzs7OztOOzs7OzsKKzAyQzE7TU9ESUZJRVIgTEVUVEVSIFJFVkVSU0VEIEdMT1RUQUwgU1RPUDtMbTswO0w7Ozs7O047Ozs7OworMDJDMjtNT0RJRklFUiBMRVRURVIgTEVGVCBBUlJPV0hFQUQ7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkMzO01PRElGSUVSIExFVFRFUiBSSUdIVCBBUlJPV0hFQUQ7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkM0O01PRElGSUVSIExFVFRFUiBVUCBBUlJPV0hFQUQ7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkM1O01PRElGSUVSIExFVFRFUiBET1dOIEFSUk9XSEVBRDtTazswO09OOzs7OztOOzs7OzsKKzAyQzY7TU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVggQUNDRU5UO1NrOzA7T047Ozs7O047TU9ESUZJRVIgTEVUVEVSIENJUkNVTUZMRVg7Ozs7CiswMkM3O0NBUk9OO1NrOzA7T047Ozs7O047TU9ESUZJRVIgTEVUVEVSIEhBQ0VLO01hbmRhcmluIENoaW5lc2UgdGhpcmQgdG9uZTs7OworMDJDODtNT0RJRklFUiBMRVRURVIgVkVSVElDQUwgTElORTtTazswO09OOzs7OztOOzs7OzsKKzAyQzk7TU9ESUZJRVIgTEVUVEVSIE1BQ1JPTjtTazswO09OOzs7OztOOztNYW5kYXJpbiBDaGluZXNlIGZpcnN0IHRvbmU7OzsKKzAyQ0E7TU9ESUZJRVIgTEVUVEVSIEFDVVRFIEFDQ0VOVDtTazswO09OOzs7OztOO01PRElGSUVSIExFVFRFUiBBQ1VURTtNYW5kYXJpbiBDaGluZXNlIHNlY29uZCB0b25lOzs7CiswMkNCO01PRElGSUVSIExFVFRFUiBHUkFWRSBBQ0NFTlQ7U2s7MDtPTjs7Ozs7TjtNT0RJRklFUiBMRVRURVIgR1JBVkU7TWFuZGFyaW4gQ2hpbmVzZSBmb3VydGggdG9uZTs7OworMDJDQztNT0RJRklFUiBMRVRURVIgTE9XIFZFUlRJQ0FMIExJTkU7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkNEO01PRElGSUVSIExFVFRFUiBMT1cgTUFDUk9OO1NrOzA7T047Ozs7O047Ozs7OworMDJDRTtNT0RJRklFUiBMRVRURVIgTE9XIEdSQVZFIEFDQ0VOVDtTazswO09OOzs7OztOO01PRElGSUVSIExFVFRFUiBMT1cgR1JBVkU7Ozs7CiswMkNGO01PRElGSUVSIExFVFRFUiBMT1cgQUNVVEUgQUNDRU5UO1NrOzA7T047Ozs7O047TU9ESUZJRVIgTEVUVEVSIExPVyBBQ1VURTs7OzsKKzAyRDA7TU9ESUZJRVIgTEVUVEVSIFRSSUFOR1VMQVIgQ09MT047TG07MDtMOzs7OztOOzs7OzsKKzAyRDE7TU9ESUZJRVIgTEVUVEVSIEhBTEYgVFJJQU5HVUxBUiBDT0xPTjtMbTswO0w7Ozs7O047Ozs7OworMDJEMjtNT0RJRklFUiBMRVRURVIgQ0VOVFJFRCBSSUdIVCBIQUxGIFJJTkc7U2s7MDtPTjs7Ozs7TjtNT0RJRklFUiBMRVRURVIgQ0VOVEVSRUQgUklHSFQgSEFMRiBSSU5HOzs7OworMDJEMztNT0RJRklFUiBMRVRURVIgQ0VOVFJFRCBMRUZUIEhBTEYgUklORztTazswO09OOzs7OztOO01PRElGSUVSIExFVFRFUiBDRU5URVJFRCBMRUZUIEhBTEYgUklORzs7OzsKKzAyRDQ7TU9ESUZJRVIgTEVUVEVSIFVQIFRBQ0s7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkQ1O01PRElGSUVSIExFVFRFUiBET1dOIFRBQ0s7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkQ2O01PRElGSUVSIExFVFRFUiBQTFVTIFNJR047U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkQ3O01PRElGSUVSIExFVFRFUiBNSU5VUyBTSUdOO1NrOzA7T047Ozs7O047Ozs7OworMDJEODtCUkVWRTtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwNjs7OztOO1NQQUNJTkcgQlJFVkU7Ozs7CiswMkQ5O0RPVCBBQk9WRTtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwNzs7OztOO1NQQUNJTkcgRE9UIEFCT1ZFO01hbmRhcmluIENoaW5lc2UgbGlnaHQgdG9uZTs7OworMDJEQTtSSU5HIEFCT1ZFO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzBBOzs7O047U1BBQ0lORyBSSU5HIEFCT1ZFOzs7OworMDJEQjtPR09ORUs7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMjg7Ozs7TjtTUEFDSU5HIE9HT05FSzs7OzsKKzAyREM7U01BTEwgVElMREU7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDM7Ozs7TjtTUEFDSU5HIFRJTERFOzs7OworMDJERDtET1VCTEUgQUNVVEUgQUNDRU5UO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzBCOzs7O047U1BBQ0lORyBET1VCTEUgQUNVVEU7Ozs7CiswMkRFO01PRElGSUVSIExFVFRFUiBSSE9USUMgSE9PSztTazswO09OOzs7OztOOzs7OzsKKzAyREY7TU9ESUZJRVIgTEVUVEVSIENST1NTIEFDQ0VOVDtTazswO09OOzs7OztOOzs7OzsKKzAyRTA7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIEdBTU1BO0xtOzA7TDs8c3VwZXI+IDAyNjM7Ozs7Tjs7Ozs7CiswMkUxO01PRElGSUVSIExFVFRFUiBTTUFMTCBMO0xtOzA7TDs8c3VwZXI+IDAwNkM7Ozs7Tjs7Ozs7CiswMkUyO01PRElGSUVSIExFVFRFUiBTTUFMTCBTO0xtOzA7TDs8c3VwZXI+IDAwNzM7Ozs7Tjs7Ozs7CiswMkUzO01PRElGSUVSIExFVFRFUiBTTUFMTCBYO0xtOzA7TDs8c3VwZXI+IDAwNzg7Ozs7Tjs7Ozs7CiswMkU0O01PRElGSUVSIExFVFRFUiBTTUFMTCBSRVZFUlNFRCBHTE9UVEFMIFNUT1A7TG07MDtMOzxzdXBlcj4gMDI5NTs7OztOOzs7OzsKKzAyRTU7TU9ESUZJRVIgTEVUVEVSIEVYVFJBLUhJR0ggVE9ORSBCQVI7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkU2O01PRElGSUVSIExFVFRFUiBISUdIIFRPTkUgQkFSO1NrOzA7T047Ozs7O047Ozs7OworMDJFNztNT0RJRklFUiBMRVRURVIgTUlEIFRPTkUgQkFSO1NrOzA7T047Ozs7O047Ozs7OworMDJFODtNT0RJRklFUiBMRVRURVIgTE9XIFRPTkUgQkFSO1NrOzA7T047Ozs7O047Ozs7OworMDJFOTtNT0RJRklFUiBMRVRURVIgRVhUUkEtTE9XIFRPTkUgQkFSO1NrOzA7T047Ozs7O047Ozs7OworMDJFQTtNT0RJRklFUiBMRVRURVIgWUlOIERFUEFSVElORyBUT05FIE1BUks7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkVCO01PRElGSUVSIExFVFRFUiBZQU5HIERFUEFSVElORyBUT05FIE1BUks7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkVDO01PRElGSUVSIExFVFRFUiBWT0lDSU5HO1NrOzA7T047Ozs7O047Ozs7OworMDJFRDtNT0RJRklFUiBMRVRURVIgVU5BU1BJUkFURUQ7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkVFO01PRElGSUVSIExFVFRFUiBET1VCTEUgQVBPU1RST1BIRTtMbTswO0w7Ozs7O047Ozs7OworMDMwMDtDT01CSU5JTkcgR1JBVkUgQUNDRU5UO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgR1JBVkU7VmFyaWE7OzsKKzAzMDE7Q09NQklOSU5HIEFDVVRFIEFDQ0VOVDtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIEFDVVRFO094aWE7OzsKKzAzMDI7Q09NQklOSU5HIENJUkNVTUZMRVggQUNDRU5UO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgQ0lSQ1VNRkxFWDs7OzsKKzAzMDM7Q09NQklOSU5HIFRJTERFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgVElMREU7Ozs7CiswMzA0O0NPTUJJTklORyBNQUNST047TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBNQUNST047Ozs7CiswMzA1O0NPTUJJTklORyBPVkVSTElORTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIE9WRVJTQ09SRTs7OzsKKzAzMDY7Q09NQklOSU5HIEJSRVZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgQlJFVkU7VnJhY2h5Ozs7CiswMzA3O0NPTUJJTklORyBET1QgQUJPVkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBET1QgQUJPVkU7Ozs7CiswMzA4O0NPTUJJTklORyBESUFFUkVTSVM7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBESUFFUkVTSVM7RGlhbHl0aWthOzs7CiswMzA5O0NPTUJJTklORyBIT09LIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgSE9PSyBBQk9WRTs7OzsKKzAzMEE7Q09NQklOSU5HIFJJTkcgQUJPVkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBSSU5HIEFCT1ZFOzs7OworMDMwQjtDT01CSU5JTkcgRE9VQkxFIEFDVVRFIEFDQ0VOVDtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIERPVUJMRSBBQ1VURTs7OzsKKzAzMEM7Q09NQklOSU5HIENBUk9OO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgSEFDRUs7Ozs7CiswMzBEO0NPTUJJTklORyBWRVJUSUNBTCBMSU5FIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgVkVSVElDQUwgTElORSBBQk9WRTtUb25vczs7OworMDMwRTtDT01CSU5JTkcgRE9VQkxFIFZFUlRJQ0FMIExJTkUgQUJPVkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBET1VCTEUgVkVSVElDQUwgTElORSBBQk9WRTs7OzsKKzAzMEY7Q09NQklOSU5HIERPVUJMRSBHUkFWRSBBQ0NFTlQ7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBET1VCTEUgR1JBVkU7Ozs7CiswMzEwO0NPTUJJTklORyBDQU5EUkFCSU5EVTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIENBTkRSQUJJTkRVOzs7OworMDMxMTtDT01CSU5JTkcgSU5WRVJURUQgQlJFVkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBJTlZFUlRFRCBCUkVWRTs7OzsKKzAzMTI7Q09NQklOSU5HIFRVUk5FRCBDT01NQSBBQk9WRTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFRVUk5FRCBDT01NQSBBQk9WRTs7OzsKKzAzMTM7Q09NQklOSU5HIENPTU1BIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgQ09NTUEgQUJPVkU7UHNpbGk7OzsKKzAzMTQ7Q09NQklOSU5HIFJFVkVSU0VEIENPTU1BIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgUkVWRVJTRUQgQ09NTUEgQUJPVkU7RGFzaWE7OzsKKzAzMTU7Q09NQklOSU5HIENPTU1BIEFCT1ZFIFJJR0hUO01uOzIzMjtOU007Ozs7O047Tk9OLVNQQUNJTkcgQ09NTUEgQUJPVkUgUklHSFQ7Ozs7CiswMzE2O0NPTUJJTklORyBHUkFWRSBBQ0NFTlQgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBHUkFWRSBCRUxPVzs7OzsKKzAzMTc7Q09NQklOSU5HIEFDVVRFIEFDQ0VOVCBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIEFDVVRFIEJFTE9XOzs7OworMDMxODtDT01CSU5JTkcgTEVGVCBUQUNLIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgTEVGVCBUQUNLIEJFTE9XOzs7OworMDMxOTtDT01CSU5JTkcgUklHSFQgVEFDSyBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFJJR0hUIFRBQ0sgQkVMT1c7Ozs7CiswMzFBO0NPTUJJTklORyBMRUZUIEFOR0xFIEFCT1ZFO01uOzIzMjtOU007Ozs7O047Tk9OLVNQQUNJTkcgTEVGVCBBTkdMRSBBQk9WRTs7OzsKKzAzMUI7Q09NQklOSU5HIEhPUk47TW47MjE2O05TTTs7Ozs7TjtOT04tU1BBQ0lORyBIT1JOOzs7OworMDMxQztDT01CSU5JTkcgTEVGVCBIQUxGIFJJTkcgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBMRUZUIEhBTEYgUklORyBCRUxPVzs7OzsKKzAzMUQ7Q09NQklOSU5HIFVQIFRBQ0sgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBVUCBUQUNLIEJFTE9XOzs7OworMDMxRTtDT01CSU5JTkcgRE9XTiBUQUNLIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgRE9XTiBUQUNLIEJFTE9XOzs7OworMDMxRjtDT01CSU5JTkcgUExVUyBTSUdOIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgUExVUyBTSUdOIEJFTE9XOzs7OworMDMyMDtDT01CSU5JTkcgTUlOVVMgU0lHTiBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIE1JTlVTIFNJR04gQkVMT1c7Ozs7CiswMzIxO0NPTUJJTklORyBQQUxBVEFMSVpFRCBIT09LIEJFTE9XO01uOzIwMjtOU007Ozs7O047Tk9OLVNQQUNJTkcgUEFMQVRBTElaRUQgSE9PSyBCRUxPVzs7OzsKKzAzMjI7Q09NQklOSU5HIFJFVFJPRkxFWCBIT09LIEJFTE9XO01uOzIwMjtOU007Ozs7O047Tk9OLVNQQUNJTkcgUkVUUk9GTEVYIEhPT0sgQkVMT1c7Ozs7CiswMzIzO0NPTUJJTklORyBET1QgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBET1QgQkVMT1c7Ozs7CiswMzI0O0NPTUJJTklORyBESUFFUkVTSVMgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBET1VCTEUgRE9UIEJFTE9XOzs7OworMDMyNTtDT01CSU5JTkcgUklORyBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFJJTkcgQkVMT1c7Ozs7CiswMzI2O0NPTUJJTklORyBDT01NQSBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIENPTU1BIEJFTE9XOzs7OworMDMyNztDT01CSU5JTkcgQ0VESUxMQTtNbjsyMDI7TlNNOzs7OztOO05PTi1TUEFDSU5HIENFRElMTEE7Ozs7CiswMzI4O0NPTUJJTklORyBPR09ORUs7TW47MjAyO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBPR09ORUs7Ozs7CiswMzI5O0NPTUJJTklORyBWRVJUSUNBTCBMSU5FIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgVkVSVElDQUwgTElORSBCRUxPVzs7OzsKKzAzMkE7Q09NQklOSU5HIEJSSURHRSBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIEJSSURHRSBCRUxPVzs7OzsKKzAzMkI7Q09NQklOSU5HIElOVkVSVEVEIERPVUJMRSBBUkNIIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgSU5WRVJURUQgRE9VQkxFIEFSQ0ggQkVMT1c7Ozs7CiswMzJDO0NPTUJJTklORyBDQVJPTiBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIEhBQ0VLIEJFTE9XOzs7OworMDMyRDtDT01CSU5JTkcgQ0lSQ1VNRkxFWCBBQ0NFTlQgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBDSVJDVU1GTEVYIEJFTE9XOzs7OworMDMyRTtDT01CSU5JTkcgQlJFVkUgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBCUkVWRSBCRUxPVzs7OzsKKzAzMkY7Q09NQklOSU5HIElOVkVSVEVEIEJSRVZFIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgSU5WRVJURUQgQlJFVkUgQkVMT1c7Ozs7CiswMzMwO0NPTUJJTklORyBUSUxERSBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFRJTERFIEJFTE9XOzs7OworMDMzMTtDT01CSU5JTkcgTUFDUk9OIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgTUFDUk9OIEJFTE9XOzs7OworMDMzMjtDT01CSU5JTkcgTE9XIExJTkU7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBVTkRFUlNDT1JFOzs7OworMDMzMztDT01CSU5JTkcgRE9VQkxFIExPVyBMSU5FO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgRE9VQkxFIFVOREVSU0NPUkU7Ozs7CiswMzM0O0NPTUJJTklORyBUSUxERSBPVkVSTEFZO01uOzE7TlNNOzs7OztOO05PTi1TUEFDSU5HIFRJTERFIE9WRVJMQVk7Ozs7CiswMzM1O0NPTUJJTklORyBTSE9SVCBTVFJPS0UgT1ZFUkxBWTtNbjsxO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBTSE9SVCBCQVIgT1ZFUkxBWTs7OzsKKzAzMzY7Q09NQklOSU5HIExPTkcgU1RST0tFIE9WRVJMQVk7TW47MTtOU007Ozs7O047Tk9OLVNQQUNJTkcgTE9ORyBCQVIgT1ZFUkxBWTs7OzsKKzAzMzc7Q09NQklOSU5HIFNIT1JUIFNPTElEVVMgT1ZFUkxBWTtNbjsxO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBTSE9SVCBTTEFTSCBPVkVSTEFZOzs7OworMDMzODtDT01CSU5JTkcgTE9ORyBTT0xJRFVTIE9WRVJMQVk7TW47MTtOU007Ozs7O047Tk9OLVNQQUNJTkcgTE9ORyBTTEFTSCBPVkVSTEFZOzs7OworMDMzOTtDT01CSU5JTkcgUklHSFQgSEFMRiBSSU5HIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgUklHSFQgSEFMRiBSSU5HIEJFTE9XOzs7OworMDMzQTtDT01CSU5JTkcgSU5WRVJURUQgQlJJREdFIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgSU5WRVJURUQgQlJJREdFIEJFTE9XOzs7OworMDMzQjtDT01CSU5JTkcgU1FVQVJFIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgU1FVQVJFIEJFTE9XOzs7OworMDMzQztDT01CSU5JTkcgU0VBR1VMTCBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFNFQUdVTEwgQkVMT1c7Ozs7CiswMzNEO0NPTUJJTklORyBYIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgWCBBQk9WRTs7OzsKKzAzM0U7Q09NQklOSU5HIFZFUlRJQ0FMIFRJTERFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgVkVSVElDQUwgVElMREU7Ozs7CiswMzNGO0NPTUJJTklORyBET1VCTEUgT1ZFUkxJTkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBET1VCTEUgT1ZFUlNDT1JFOzs7OworMDM0MDtDT01CSU5JTkcgR1JBVkUgVE9ORSBNQVJLO01uOzIzMDtOU007MDMwMDs7OztOO05PTi1TUEFDSU5HIEdSQVZFIFRPTkUgTUFSSztWaWV0bmFtZXNlOzs7CiswMzQxO0NPTUJJTklORyBBQ1VURSBUT05FIE1BUks7TW47MjMwO05TTTswMzAxOzs7O047Tk9OLVNQQUNJTkcgQUNVVEUgVE9ORSBNQVJLO1ZpZXRuYW1lc2U7OzsKKzAzNDI7Q09NQklOSU5HIEdSRUVLIFBFUklTUE9NRU5JO01uOzIzMDtOU007Ozs7O047Ozs7OworMDM0MztDT01CSU5JTkcgR1JFRUsgS09ST05JUztNbjsyMzA7TlNNOzAzMTM7Ozs7Tjs7Ozs7CiswMzQ0O0NPTUJJTklORyBHUkVFSyBESUFMWVRJS0EgVE9OT1M7TW47MjMwO05TTTswMzA4IDAzMDE7Ozs7TjtHUkVFSyBOT04tU1BBQ0lORyBESUFFUkVTSVMgVE9OT1M7Ozs7CiswMzQ1O0NPTUJJTklORyBHUkVFSyBZUE9HRUdSQU1NRU5JO01uOzI0MDtOU007Ozs7O047R1JFRUsgTk9OLVNQQUNJTkcgSU9UQSBCRUxPVzs7MDM5OTs7MDM5OQorMDM0NjtDT01CSU5JTkcgQlJJREdFIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Ozs7OworMDM0NztDT01CSU5JTkcgRVFVQUxTIFNJR04gQkVMT1c7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswMzQ4O0NPTUJJTklORyBET1VCTEUgVkVSVElDQUwgTElORSBCRUxPVztNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzAzNDk7Q09NQklOSU5HIExFRlQgQU5HTEUgQkVMT1c7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswMzRBO0NPTUJJTklORyBOT1QgVElMREUgQUJPVkU7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswMzRCO0NPTUJJTklORyBIT01PVEhFVElDIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Ozs7OworMDM0QztDT01CSU5JTkcgQUxNT1NUIEVRVUFMIFRPIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Ozs7OworMDM0RDtDT01CSU5JTkcgTEVGVCBSSUdIVCBBUlJPVyBCRUxPVztNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzAzNEU7Q09NQklOSU5HIFVQV0FSRFMgQVJST1cgQkVMT1c7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswMzYwO0NPTUJJTklORyBET1VCTEUgVElMREU7TW47MjM0O05TTTs7Ozs7Tjs7Ozs7CiswMzYxO0NPTUJJTklORyBET1VCTEUgSU5WRVJURUQgQlJFVkU7TW47MjM0O05TTTs7Ozs7Tjs7Ozs7CiswMzYyO0NPTUJJTklORyBET1VCTEUgUklHSFRXQVJEUyBBUlJPVyBCRUxPVztNbjsyMzM7TlNNOzs7OztOOzs7OzsKKzAzNzQ7R1JFRUsgTlVNRVJBTCBTSUdOO1NrOzA7T047MDJCOTs7OztOO0dSRUVLIFVQUEVSIE5VTUVSQUwgU0lHTjtEZXhpYSBrZXJhaWE7OzsKKzAzNzU7R1JFRUsgTE9XRVIgTlVNRVJBTCBTSUdOO1NrOzA7T047Ozs7O047O0FyaXN0ZXJpIGtlcmFpYTs7OworMDM3QTtHUkVFSyBZUE9HRUdSQU1NRU5JO0xtOzA7TDs8Y29tcGF0PiAwMDIwIDAzNDU7Ozs7TjtHUkVFSyBTUEFDSU5HIElPVEEgQkVMT1c7Ozs7CiswMzdFO0dSRUVLIFFVRVNUSU9OIE1BUks7UG87MDtPTjswMDNCOzs7O047O0Vyb3RpbWF0aWtvOzs7CiswMzg0O0dSRUVLIFRPTk9TO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzAxOzs7O047R1JFRUsgU1BBQ0lORyBUT05PUzs7OzsKKzAzODU7R1JFRUsgRElBTFlUSUtBIFRPTk9TO1NrOzA7T047MDBBOCAwMzAxOzs7O047R1JFRUsgU1BBQ0lORyBESUFFUkVTSVMgVE9OT1M7Ozs7CiswMzg2O0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggVE9OT1M7THU7MDtMOzAzOTEgMDMwMTs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFRPTk9TOzs7MDNBQzsKKzAzODc7R1JFRUsgQU5PIFRFTEVJQTtQbzswO09OOzAwQjc7Ozs7Tjs7Ozs7CiswMzg4O0dSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBUT05PUztMdTswO0w7MDM5NSAwMzAxOzs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBUT05PUzs7OzAzQUQ7CiswMzg5O0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFRPTk9TO0x1OzA7TDswMzk3IDAzMDE7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgVE9OT1M7OzswM0FFOworMDM4QTtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggVE9OT1M7THU7MDtMOzAzOTkgMDMwMTs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgVE9OT1M7OzswM0FGOworMDM4QztHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggVE9OT1M7THU7MDtMOzAzOUYgMDMwMTs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gVE9OT1M7OzswM0NDOworMDM4RTtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggVE9OT1M7THU7MDtMOzAzQTUgMDMwMTs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gVE9OT1M7OzswM0NEOworMDM4RjtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFRPTk9TO0x1OzA7TDswM0E5IDAzMDE7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBUT05PUzs7OzAzQ0U7CiswMzkwO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBIEFORCBUT05PUztMbDswO0w7MDNDQSAwMzAxOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgRElBRVJFU0lTIFRPTk9TOzs7OworMDM5MTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQTtMdTswO0w7Ozs7O047Ozs7MDNCMTsKKzAzOTI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQkVUQTtMdTswO0w7Ozs7O047Ozs7MDNCMjsKKzAzOTM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgR0FNTUE7THU7MDtMOzs7OztOOzs7OzAzQjM7CiswMzk0O0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBO0x1OzA7TDs7Ozs7Tjs7OzswM0I0OworMDM5NTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OO0x1OzA7TDs7Ozs7Tjs7OzswM0I1OworMDM5NjtHUkVFSyBDQVBJVEFMIExFVFRFUiBaRVRBO0x1OzA7TDs7Ozs7Tjs7OzswM0I2OworMDM5NztHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEE7THU7MDtMOzs7OztOOzs7OzAzQjc7CiswMzk4O0dSRUVLIENBUElUQUwgTEVUVEVSIFRIRVRBO0x1OzA7TDs7Ozs7Tjs7OzswM0I4OworMDM5OTtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBO0x1OzA7TDs7Ozs7Tjs7OzswM0I5OworMDM5QTtHUkVFSyBDQVBJVEFMIExFVFRFUiBLQVBQQTtMdTswO0w7Ozs7O047Ozs7MDNCQTsKKzAzOUI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgTEFNREE7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIExBTUJEQTs7OzAzQkI7CiswMzlDO0dSRUVLIENBUElUQUwgTEVUVEVSIE1VO0x1OzA7TDs7Ozs7Tjs7OzswM0JDOworMDM5RDtHUkVFSyBDQVBJVEFMIExFVFRFUiBOVTtMdTswO0w7Ozs7O047Ozs7MDNCRDsKKzAzOUU7R1JFRUsgQ0FQSVRBTCBMRVRURVIgWEk7THU7MDtMOzs7OztOOzs7OzAzQkU7CiswMzlGO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST047THU7MDtMOzs7OztOOzs7OzAzQkY7CiswM0EwO0dSRUVLIENBUElUQUwgTEVUVEVSIFBJO0x1OzA7TDs7Ozs7Tjs7OzswM0MwOworMDNBMTtHUkVFSyBDQVBJVEFMIExFVFRFUiBSSE87THU7MDtMOzs7OztOOzs7OzAzQzE7CiswM0EzO0dSRUVLIENBUElUQUwgTEVUVEVSIFNJR01BO0x1OzA7TDs7Ozs7Tjs7OzswM0MzOworMDNBNDtHUkVFSyBDQVBJVEFMIExFVFRFUiBUQVU7THU7MDtMOzs7OztOOzs7OzAzQzQ7CiswM0E1O0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT047THU7MDtMOzs7OztOOzs7OzAzQzU7CiswM0E2O0dSRUVLIENBUElUQUwgTEVUVEVSIFBISTtMdTswO0w7Ozs7O047Ozs7MDNDNjsKKzAzQTc7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQ0hJO0x1OzA7TDs7Ozs7Tjs7OzswM0M3OworMDNBODtHUkVFSyBDQVBJVEFMIExFVFRFUiBQU0k7THU7MDtMOzs7OztOOzs7OzAzQzg7CiswM0E5O0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBO0x1OzA7TDs7Ozs7Tjs7OzswM0M5OworMDNBQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBO0x1OzA7TDswMzk5IDAzMDg7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIERJQUVSRVNJUzs7OzAzQ0E7CiswM0FCO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0E7THU7MDtMOzAzQTUgMDMwODs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gRElBRVJFU0lTOzs7MDNDQjsKKzAzQUM7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVE9OT1M7TGw7MDtMOzAzQjEgMDMwMTs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBUT05PUzs7MDM4Njs7MDM4NgorMDNBRDtHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIFRPTk9TO0xsOzA7TDswM0I1IDAzMDE7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBUT05PUzs7MDM4ODs7MDM4OAorMDNBRTtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggVE9OT1M7TGw7MDtMOzAzQjcgMDMwMTs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgVE9OT1M7OzAzODk7OzAzODkKKzAzQUY7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBUT05PUztMbDswO0w7MDNCOSAwMzAxOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgVE9OT1M7OzAzOEE7OzAzOEEKKzAzQjA7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EgQU5EIFRPTk9TO0xsOzA7TDswM0NCIDAzMDE7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBESUFFUkVTSVMgVE9OT1M7Ozs7CiswM0IxO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQTtMbDswO0w7Ozs7O047OzswMzkxOzswMzkxCiswM0IyO0dSRUVLIFNNQUxMIExFVFRFUiBCRVRBO0xsOzA7TDs7Ozs7Tjs7OzAzOTI7OzAzOTIKKzAzQjM7R1JFRUsgU01BTEwgTEVUVEVSIEdBTU1BO0xsOzA7TDs7Ozs7Tjs7OzAzOTM7OzAzOTMKKzAzQjQ7R1JFRUsgU01BTEwgTEVUVEVSIERFTFRBO0xsOzA7TDs7Ozs7Tjs7OzAzOTQ7OzAzOTQKKzAzQjU7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT047TGw7MDtMOzs7OztOOzs7MDM5NTs7MDM5NQorMDNCNjtHUkVFSyBTTUFMTCBMRVRURVIgWkVUQTtMbDswO0w7Ozs7O047OzswMzk2OzswMzk2CiswM0I3O0dSRUVLIFNNQUxMIExFVFRFUiBFVEE7TGw7MDtMOzs7OztOOzs7MDM5Nzs7MDM5NworMDNCODtHUkVFSyBTTUFMTCBMRVRURVIgVEhFVEE7TGw7MDtMOzs7OztOOzs7MDM5ODs7MDM5OAorMDNCOTtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQTtMbDswO0w7Ozs7O047OzswMzk5OzswMzk5CiswM0JBO0dSRUVLIFNNQUxMIExFVFRFUiBLQVBQQTtMbDswO0w7Ozs7O047OzswMzlBOzswMzlBCiswM0JCO0dSRUVLIFNNQUxMIExFVFRFUiBMQU1EQTtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIExBTUJEQTs7MDM5Qjs7MDM5QgorMDNCQztHUkVFSyBTTUFMTCBMRVRURVIgTVU7TGw7MDtMOzs7OztOOzs7MDM5Qzs7MDM5QworMDNCRDtHUkVFSyBTTUFMTCBMRVRURVIgTlU7TGw7MDtMOzs7OztOOzs7MDM5RDs7MDM5RAorMDNCRTtHUkVFSyBTTUFMTCBMRVRURVIgWEk7TGw7MDtMOzs7OztOOzs7MDM5RTs7MDM5RQorMDNCRjtHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTjtMbDswO0w7Ozs7O047OzswMzlGOzswMzlGCiswM0MwO0dSRUVLIFNNQUxMIExFVFRFUiBQSTtMbDswO0w7Ozs7O047OzswM0EwOzswM0EwCiswM0MxO0dSRUVLIFNNQUxMIExFVFRFUiBSSE87TGw7MDtMOzs7OztOOzs7MDNBMTs7MDNBMQorMDNDMjtHUkVFSyBTTUFMTCBMRVRURVIgRklOQUwgU0lHTUE7TGw7MDtMOzs7OztOOzs7MDNBMzs7MDNBMworMDNDMztHUkVFSyBTTUFMTCBMRVRURVIgU0lHTUE7TGw7MDtMOzs7OztOOzs7MDNBMzs7MDNBMworMDNDNDtHUkVFSyBTTUFMTCBMRVRURVIgVEFVO0xsOzA7TDs7Ozs7Tjs7OzAzQTQ7OzAzQTQKKzAzQzU7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT047TGw7MDtMOzs7OztOOzs7MDNBNTs7MDNBNQorMDNDNjtHUkVFSyBTTUFMTCBMRVRURVIgUEhJO0xsOzA7TDs7Ozs7Tjs7OzAzQTY7OzAzQTYKKzAzQzc7R1JFRUsgU01BTEwgTEVUVEVSIENISTtMbDswO0w7Ozs7O047OzswM0E3OzswM0E3CiswM0M4O0dSRUVLIFNNQUxMIExFVFRFUiBQU0k7TGw7MDtMOzs7OztOOzs7MDNBODs7MDNBOAorMDNDOTtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0E7TGw7MDtMOzs7OztOOzs7MDNBOTs7MDNBOQorMDNDQTtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQTtMbDswO0w7MDNCOSAwMzA4Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgRElBRVJFU0lTOzswM0FBOzswM0FBCiswM0NCO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBO0xsOzA7TDswM0M1IDAzMDg7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBESUFFUkVTSVM7OzAzQUI7OzAzQUIKKzAzQ0M7R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBUT05PUztMbDswO0w7MDNCRiAwMzAxOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gVE9OT1M7OzAzOEM7OzAzOEMKKzAzQ0Q7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBUT05PUztMbDswO0w7MDNDNSAwMzAxOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gVE9OT1M7OzAzOEU7OzAzOEUKKzAzQ0U7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggVE9OT1M7TGw7MDtMOzAzQzkgMDMwMTs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBUT05PUzs7MDM4Rjs7MDM4RgorMDNEMDtHUkVFSyBCRVRBIFNZTUJPTDtMbDswO0w7PGNvbXBhdD4gMDNCMjs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBDVVJMRUQgQkVUQTs7MDM5Mjs7MDM5MgorMDNEMTtHUkVFSyBUSEVUQSBTWU1CT0w7TGw7MDtMOzxjb21wYXQ+IDAzQjg7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgU0NSSVBUIFRIRVRBOzswMzk4OzswMzk4CiswM0QyO0dSRUVLIFVQU0lMT04gV0lUSCBIT09LIFNZTUJPTDtMdTswO0w7PGNvbXBhdD4gMDNBNTs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gSE9PSzs7OzsKKzAzRDM7R1JFRUsgVVBTSUxPTiBXSVRIIEFDVVRFIEFORCBIT09LIFNZTUJPTDtMdTswO0w7MDNEMiAwMzAxOzs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBIT09LIFRPTk9TOzs7OworMDNENDtHUkVFSyBVUFNJTE9OIFdJVEggRElBRVJFU0lTIEFORCBIT09LIFNZTUJPTDtMdTswO0w7MDNEMiAwMzA4Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBIT09LIERJQUVSRVNJUzs7OzsKKzAzRDU7R1JFRUsgUEhJIFNZTUJPTDtMbDswO0w7PGNvbXBhdD4gMDNDNjs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBTQ1JJUFQgUEhJOzswM0E2OzswM0E2CiswM0Q2O0dSRUVLIFBJIFNZTUJPTDtMbDswO0w7PGNvbXBhdD4gMDNDMDs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBQSTs7MDNBMDs7MDNBMAorMDNENztHUkVFSyBLQUkgU1lNQk9MO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswM0RBO0dSRUVLIExFVFRFUiBTVElHTUE7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFNUSUdNQTs7OzAzREI7CiswM0RCO0dSRUVLIFNNQUxMIExFVFRFUiBTVElHTUE7TGw7MDtMOzs7OztOOzs7MDNEQTs7MDNEQQorMDNEQztHUkVFSyBMRVRURVIgRElHQU1NQTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgRElHQU1NQTs7OzAzREQ7CiswM0REO0dSRUVLIFNNQUxMIExFVFRFUiBESUdBTU1BO0xsOzA7TDs7Ozs7Tjs7OzAzREM7OzAzREMKKzAzREU7R1JFRUsgTEVUVEVSIEtPUFBBO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBLT1BQQTs7OzAzREY7CiswM0RGO0dSRUVLIFNNQUxMIExFVFRFUiBLT1BQQTtMbDswO0w7Ozs7O047OzswM0RFOzswM0RFCiswM0UwO0dSRUVLIExFVFRFUiBTQU1QSTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgU0FNUEk7OzswM0UxOworMDNFMTtHUkVFSyBTTUFMTCBMRVRURVIgU0FNUEk7TGw7MDtMOzs7OztOOzs7MDNFMDs7MDNFMAorMDNFMjtDT1BUSUMgQ0FQSVRBTCBMRVRURVIgU0hFSTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgU0hFSTs7OzAzRTM7CiswM0UzO0NPUFRJQyBTTUFMTCBMRVRURVIgU0hFSTtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIFNIRUk7OzAzRTI7OzAzRTIKKzAzRTQ7Q09QVElDIENBUElUQUwgTEVUVEVSIEZFSTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgRkVJOzs7MDNFNTsKKzAzRTU7Q09QVElDIFNNQUxMIExFVFRFUiBGRUk7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBGRUk7OzAzRTQ7OzAzRTQKKzAzRTY7Q09QVElDIENBUElUQUwgTEVUVEVSIEtIRUk7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIEtIRUk7OzswM0U3OworMDNFNztDT1BUSUMgU01BTEwgTEVUVEVSIEtIRUk7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBLSEVJOzswM0U2OzswM0U2CiswM0U4O0NPUFRJQyBDQVBJVEFMIExFVFRFUiBIT1JJO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBIT1JJOzs7MDNFOTsKKzAzRTk7Q09QVElDIFNNQUxMIExFVFRFUiBIT1JJO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgSE9SSTs7MDNFODs7MDNFOAorMDNFQTtDT1BUSUMgQ0FQSVRBTCBMRVRURVIgR0FOR0lBO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBHQU5HSUE7OzswM0VCOworMDNFQjtDT1BUSUMgU01BTEwgTEVUVEVSIEdBTkdJQTtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIEdBTkdJQTs7MDNFQTs7MDNFQQorMDNFQztDT1BUSUMgQ0FQSVRBTCBMRVRURVIgU0hJTUE7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFNISU1BOzs7MDNFRDsKKzAzRUQ7Q09QVElDIFNNQUxMIExFVFRFUiBTSElNQTtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIFNISU1BOzswM0VDOzswM0VDCiswM0VFO0NPUFRJQyBDQVBJVEFMIExFVFRFUiBERUk7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIERFSTs7OzAzRUY7CiswM0VGO0NPUFRJQyBTTUFMTCBMRVRURVIgREVJO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgREVJOzswM0VFOzswM0VFCiswM0YwO0dSRUVLIEtBUFBBIFNZTUJPTDtMbDswO0w7PGNvbXBhdD4gMDNCQTs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBTQ1JJUFQgS0FQUEE7OzAzOUE7OzAzOUEKKzAzRjE7R1JFRUsgUkhPIFNZTUJPTDtMbDswO0w7PGNvbXBhdD4gMDNDMTs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBUQUlMRUQgUkhPOzswM0ExOzswM0ExCiswM0YyO0dSRUVLIExVTkFURSBTSUdNQSBTWU1CT0w7TGw7MDtMOzxjb21wYXQ+IDAzQzI7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgTFVOQVRFIFNJR01BOzswM0EzOzswM0EzCiswM0YzO0dSRUVLIExFVFRFUiBZT1Q7TGw7MDtMOzs7OztOOzs7OzsKKzA0MDA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUgV0lUSCBHUkFWRTtMdTswO0w7MDQxNSAwMzAwOzs7O047Ozs7MDQ1MDsKKzA0MDE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU87THU7MDtMOzA0MTUgMDMwODs7OztOOzs7OzA0NTE7CiswNDAyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIERKRTtMdTswO0w7Ozs7O047O1NlcmJvY3JvYXRpYW47OzA0NTI7CiswNDAzO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEdKRTtMdTswO0w7MDQxMyAwMzAxOzs7O047Ozs7MDQ1MzsKKzA0MDQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVUtSQUlOSUFOIElFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFOzs7MDQ1NDsKKzA0MDU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRFpFO0x1OzA7TDs7Ozs7Tjs7OzswNDU1OworMDQwNjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCWUVMT1JVU1NJQU4tVUtSQUlOSUFOIEk7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEk7OzswNDU2OworMDQwNztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZSTtMdTswO0w7MDQwNiAwMzA4Ozs7O047O1VrcmFpbmlhbjs7MDQ1NzsKKzA0MDg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSkU7THU7MDtMOzs7OztOOzs7OzA0NTg7CiswNDA5O0NZUklMTElDIENBUElUQUwgTEVUVEVSIExKRTtMdTswO0w7Ozs7O047Ozs7MDQ1OTsKKzA0MEE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTkpFO0x1OzA7TDs7Ozs7Tjs7OzswNDVBOworMDQwQjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUU0hFO0x1OzA7TDs7Ozs7Tjs7U2VyYm9jcm9hdGlhbjs7MDQ1QjsKKzA0MEM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0pFO0x1OzA7TDswNDFBIDAzMDE7Ozs7Tjs7OzswNDVDOworMDQwRDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJIFdJVEggR1JBVkU7THU7MDtMOzA0MTggMDMwMDs7OztOOzs7OzA0NUQ7CiswNDBFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIFU7THU7MDtMOzA0MjMgMDMwNjs7OztOOztCeWVsb3J1c3NpYW47OzA0NUU7CiswNDBGO0NZUklMTElDIENBUElUQUwgTEVUVEVSIERaSEU7THU7MDtMOzs7OztOOzs7OzA0NUY7CiswNDEwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEE7THU7MDtMOzs7OztOOzs7OzA0MzA7CiswNDExO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEJFO0x1OzA7TDs7Ozs7Tjs7OzswNDMxOworMDQxMjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBWRTtMdTswO0w7Ozs7O047Ozs7MDQzMjsKKzA0MTM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHRTs7OzA0MzM7CiswNDE0O0NZUklMTElDIENBUElUQUwgTEVUVEVSIERFO0x1OzA7TDs7Ozs7Tjs7OzswNDM0OworMDQxNTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRTtMdTswO0w7Ozs7O047Ozs7MDQzNTsKKzA0MTY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFO0x1OzA7TDs7Ozs7Tjs7OzswNDM2OworMDQxNztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRTtMdTswO0w7Ozs7O047Ozs7MDQzNzsKKzA0MTg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUk7OzswNDM4OworMDQxOTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBJO0x1OzA7TDswNDE4IDAzMDY7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBJSTs7OzA0Mzk7CiswNDFBO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtBO0x1OzA7TDs7Ozs7Tjs7OzswNDNBOworMDQxQjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTDtMdTswO0w7Ozs7O047Ozs7MDQzQjsKKzA0MUM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU07THU7MDtMOzs7OztOOzs7OzA0M0M7CiswNDFEO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVOO0x1OzA7TDs7Ozs7Tjs7OzswNDNEOworMDQxRTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPO0x1OzA7TDs7Ozs7Tjs7OzswNDNFOworMDQxRjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBQRTtMdTswO0w7Ozs7O047Ozs7MDQzRjsKKzA0MjA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVI7THU7MDtMOzs7OztOOzs7OzA0NDA7CiswNDIxO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVTO0x1OzA7TDs7Ozs7Tjs7OzswNDQxOworMDQyMjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURTtMdTswO0w7Ozs7O047Ozs7MDQ0MjsKKzA0MjM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVTtMdTswO0w7Ozs7O047Ozs7MDQ0MzsKKzA0MjQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUY7THU7MDtMOzs7OztOOzs7OzA0NDQ7CiswNDI1O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEhBO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLSEE7OzswNDQ1OworMDQyNjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBUU0U7THU7MDtMOzs7OztOOzs7OzA0NDY7CiswNDI3O0NZUklMTElDIENBUElUQUwgTEVUVEVSIENIRTtMdTswO0w7Ozs7O047Ozs7MDQ0NzsKKzA0Mjg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hBO0x1OzA7TDs7Ozs7Tjs7OzswNDQ4OworMDQyOTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSENIQTtMdTswO0w7Ozs7O047Ozs7MDQ0OTsKKzA0MkE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSEFSRCBTSUdOO0x1OzA7TDs7Ozs7Tjs7OzswNDRBOworMDQyQjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJJOzs7MDQ0QjsKKzA0MkM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU09GVCBTSUdOO0x1OzA7TDs7Ozs7Tjs7OzswNDRDOworMDQyRDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBSRVZFUlNFRCBFOzs7MDQ0RDsKKzA0MkU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWVU7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElVOzs7MDQ0RTsKKzA0MkY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUE7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElBOzs7MDQ0RjsKKzA0MzA7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEE7TGw7MDtMOzs7OztOOzs7MDQxMDs7MDQxMAorMDQzMTtDWVJJTExJQyBTTUFMTCBMRVRURVIgQkU7TGw7MDtMOzs7OztOOzs7MDQxMTs7MDQxMQorMDQzMjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVkU7TGw7MDtMOzs7OztOOzs7MDQxMjs7MDQxMgorMDQzMztDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgR0U7OzA0MTM7OzA0MTMKKzA0MzQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIERFO0xsOzA7TDs7Ozs7Tjs7OzA0MTQ7OzA0MTQKKzA0MzU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElFO0xsOzA7TDs7Ozs7Tjs7OzA0MTU7OzA0MTUKKzA0MzY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRTtMbDswO0w7Ozs7O047OzswNDE2OzswNDE2CiswNDM3O0NZUklMTElDIFNNQUxMIExFVFRFUiBaRTtMbDswO0w7Ozs7O047OzswNDE3OzswNDE3CiswNDM4O0NZUklMTElDIFNNQUxMIExFVFRFUiBJO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgSUk7OzA0MTg7OzA0MTgKKzA0Mzk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIEk7TGw7MDtMOzA0MzggMDMwNjs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJSTs7MDQxOTs7MDQxOQorMDQzQTtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0E7TGw7MDtMOzs7OztOOzs7MDQxQTs7MDQxQQorMDQzQjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRUw7TGw7MDtMOzs7OztOOzs7MDQxQjs7MDQxQgorMDQzQztDWVJJTExJQyBTTUFMTCBMRVRURVIgRU07TGw7MDtMOzs7OztOOzs7MDQxQzs7MDQxQworMDQzRDtDWVJJTExJQyBTTUFMTCBMRVRURVIgRU47TGw7MDtMOzs7OztOOzs7MDQxRDs7MDQxRAorMDQzRTtDWVJJTExJQyBTTUFMTCBMRVRURVIgTztMbDswO0w7Ozs7O047OzswNDFFOzswNDFFCiswNDNGO0NZUklMTElDIFNNQUxMIExFVFRFUiBQRTtMbDswO0w7Ozs7O047OzswNDFGOzswNDFGCiswNDQwO0NZUklMTElDIFNNQUxMIExFVFRFUiBFUjtMbDswO0w7Ozs7O047OzswNDIwOzswNDIwCiswNDQxO0NZUklMTElDIFNNQUxMIExFVFRFUiBFUztMbDswO0w7Ozs7O047OzswNDIxOzswNDIxCiswNDQyO0NZUklMTElDIFNNQUxMIExFVFRFUiBURTtMbDswO0w7Ozs7O047OzswNDIyOzswNDIyCiswNDQzO0NZUklMTElDIFNNQUxMIExFVFRFUiBVO0xsOzA7TDs7Ozs7Tjs7OzA0MjM7OzA0MjMKKzA0NDQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVGO0xsOzA7TDs7Ozs7Tjs7OzA0MjQ7OzA0MjQKKzA0NDU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0hBOzswNDI1OzswNDI1CiswNDQ2O0NZUklMTElDIFNNQUxMIExFVFRFUiBUU0U7TGw7MDtMOzs7OztOOzs7MDQyNjs7MDQyNgorMDQ0NztDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFO0xsOzA7TDs7Ozs7Tjs7OzA0Mjc7OzA0MjcKKzA0NDg7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIQTtMbDswO0w7Ozs7O047OzswNDI4OzswNDI4CiswNDQ5O0NZUklMTElDIFNNQUxMIExFVFRFUiBTSENIQTtMbDswO0w7Ozs7O047OzswNDI5OzswNDI5CiswNDRBO0NZUklMTElDIFNNQUxMIExFVFRFUiBIQVJEIFNJR047TGw7MDtMOzs7OztOOzs7MDQyQTs7MDQyQQorMDQ0QjtDWVJJTExJQyBTTUFMTCBMRVRURVIgWUVSVTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUkk7OzA0MkI7OzA0MkIKKzA0NEM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNPRlQgU0lHTjtMbDswO0w7Ozs7O047OzswNDJDOzswNDJDCiswNDREO0NZUklMTElDIFNNQUxMIExFVFRFUiBFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgUkVWRVJTRUQgRTs7MDQyRDs7MDQyRAorMDQ0RTtDWVJJTExJQyBTTUFMTCBMRVRURVIgWVU7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBJVTs7MDQyRTs7MDQyRQorMDQ0RjtDWVJJTExJQyBTTUFMTCBMRVRURVIgWUE7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBJQTs7MDQyRjs7MDQyRgorMDQ1MDtDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUgV0lUSCBHUkFWRTtMbDswO0w7MDQzNSAwMzAwOzs7O047OzswNDAwOzswNDAwCiswNDUxO0NZUklMTElDIFNNQUxMIExFVFRFUiBJTztMbDswO0w7MDQzNSAwMzA4Ozs7O047OzswNDAxOzswNDAxCiswNDUyO0NZUklMTElDIFNNQUxMIExFVFRFUiBESkU7TGw7MDtMOzs7OztOOztTZXJib2Nyb2F0aWFuOzA0MDI7OzA0MDIKKzA0NTM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEdKRTtMbDswO0w7MDQzMyAwMzAxOzs7O047OzswNDAzOzswNDAzCiswNDU0O0NZUklMTElDIFNNQUxMIExFVFRFUiBVS1JBSU5JQU4gSUU7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBFOzswNDA0OzswNDA0CiswNDU1O0NZUklMTElDIFNNQUxMIExFVFRFUiBEWkU7TGw7MDtMOzs7OztOOzs7MDQwNTs7MDQwNQorMDQ1NjtDWVJJTExJQyBTTUFMTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgSTs7MDQwNjs7MDQwNgorMDQ1NztDWVJJTExJQyBTTUFMTCBMRVRURVIgWUk7TGw7MDtMOzA0NTYgMDMwODs7OztOOztVa3JhaW5pYW47MDQwNzs7MDQwNworMDQ1ODtDWVJJTExJQyBTTUFMTCBMRVRURVIgSkU7TGw7MDtMOzs7OztOOzs7MDQwODs7MDQwOAorMDQ1OTtDWVJJTExJQyBTTUFMTCBMRVRURVIgTEpFO0xsOzA7TDs7Ozs7Tjs7OzA0MDk7OzA0MDkKKzA0NUE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE5KRTtMbDswO0w7Ozs7O047OzswNDBBOzswNDBBCiswNDVCO0NZUklMTElDIFNNQUxMIExFVFRFUiBUU0hFO0xsOzA7TDs7Ozs7Tjs7U2VyYm9jcm9hdGlhbjswNDBCOzswNDBCCiswNDVDO0NZUklMTElDIFNNQUxMIExFVFRFUiBLSkU7TGw7MDtMOzA0M0EgMDMwMTs7OztOOzs7MDQwQzs7MDQwQworMDQ1RDtDWVJJTExJQyBTTUFMTCBMRVRURVIgSSBXSVRIIEdSQVZFO0xsOzA7TDswNDM4IDAzMDA7Ozs7Tjs7OzA0MEQ7OzA0MEQKKzA0NUU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIFU7TGw7MDtMOzA0NDMgMDMwNjs7OztOOztCeWVsb3J1c3NpYW47MDQwRTs7MDQwRQorMDQ1RjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRFpIRTtMbDswO0w7Ozs7O047OzswNDBGOzswNDBGCiswNDYwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIE9NRUdBO0x1OzA7TDs7Ozs7Tjs7OzswNDYxOworMDQ2MTtDWVJJTExJQyBTTUFMTCBMRVRURVIgT01FR0E7TGw7MDtMOzs7OztOOzs7MDQ2MDs7MDQ2MAorMDQ2MjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZQVQ7THU7MDtMOzs7OztOOzs7OzA0NjM7CiswNDYzO0NZUklMTElDIFNNQUxMIExFVFRFUiBZQVQ7TGw7MDtMOzs7OztOOzs7MDQ2Mjs7MDQ2MgorMDQ2NDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJT1RJRklFRCBFO0x1OzA7TDs7Ozs7Tjs7OzswNDY1OworMDQ2NTtDWVJJTExJQyBTTUFMTCBMRVRURVIgSU9USUZJRUQgRTtMbDswO0w7Ozs7O047OzswNDY0OzswNDY0CiswNDY2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIExJVFRMRSBZVVM7THU7MDtMOzs7OztOOzs7OzA0Njc7CiswNDY3O0NZUklMTElDIFNNQUxMIExFVFRFUiBMSVRUTEUgWVVTO0xsOzA7TDs7Ozs7Tjs7OzA0NjY7OzA0NjYKKzA0Njg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU9USUZJRUQgTElUVExFIFlVUztMdTswO0w7Ozs7O047Ozs7MDQ2OTsKKzA0Njk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElPVElGSUVEIExJVFRMRSBZVVM7TGw7MDtMOzs7OztOOzs7MDQ2ODs7MDQ2OAorMDQ2QTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCSUcgWVVTO0x1OzA7TDs7Ozs7Tjs7OzswNDZCOworMDQ2QjtDWVJJTExJQyBTTUFMTCBMRVRURVIgQklHIFlVUztMbDswO0w7Ozs7O047OzswNDZBOzswNDZBCiswNDZDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElPVElGSUVEIEJJRyBZVVM7THU7MDtMOzs7OztOOzs7OzA0NkQ7CiswNDZEO0NZUklMTElDIFNNQUxMIExFVFRFUiBJT1RJRklFRCBCSUcgWVVTO0xsOzA7TDs7Ozs7Tjs7OzA0NkM7OzA0NkMKKzA0NkU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS1NJO0x1OzA7TDs7Ozs7Tjs7OzswNDZGOworMDQ2RjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS1NJO0xsOzA7TDs7Ozs7Tjs7OzA0NkU7OzA0NkUKKzA0NzA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUFNJO0x1OzA7TDs7Ozs7Tjs7OzswNDcxOworMDQ3MTtDWVJJTExJQyBTTUFMTCBMRVRURVIgUFNJO0xsOzA7TDs7Ozs7Tjs7OzA0NzA7OzA0NzAKKzA0NzI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRklUQTtMdTswO0w7Ozs7O047Ozs7MDQ3MzsKKzA0NzM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEZJVEE7TGw7MDtMOzs7OztOOzs7MDQ3Mjs7MDQ3MgorMDQ3NDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJWkhJVFNBO0x1OzA7TDs7Ozs7Tjs7OzswNDc1OworMDQ3NTtDWVJJTExJQyBTTUFMTCBMRVRURVIgSVpISVRTQTtMbDswO0w7Ozs7O047OzswNDc0OzswNDc0CiswNDc2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIElaSElUU0EgV0lUSCBET1VCTEUgR1JBVkUgQUNDRU5UO0x1OzA7TDswNDc0IDAzMEY7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJWkhJVFNBIERPVUJMRSBHUkFWRTs7OzA0Nzc7CiswNDc3O0NZUklMTElDIFNNQUxMIExFVFRFUiBJWkhJVFNBIFdJVEggRE9VQkxFIEdSQVZFIEFDQ0VOVDtMbDswO0w7MDQ3NSAwMzBGOzs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElaSElUU0EgRE9VQkxFIEdSQVZFOzswNDc2OzswNDc2CiswNDc4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFVLO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVSyBESUdSQVBIOzs7MDQ3OTsKKzA0Nzk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFVLO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVUsgRElHUkFQSDs7MDQ3ODs7MDQ3OAorMDQ3QTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBST1VORCBPTUVHQTtMdTswO0w7Ozs7O047Ozs7MDQ3QjsKKzA0N0I7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFJPVU5EIE9NRUdBO0xsOzA7TDs7Ozs7Tjs7OzA0N0E7OzA0N0EKKzA0N0M7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBUSVRMTztMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgT01FR0EgVElUTE87OzswNDdEOworMDQ3RDtDWVJJTExJQyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBUSVRMTztMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE9NRUdBIFRJVExPOzswNDdDOzswNDdDCiswNDdFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIE9UO0x1OzA7TDs7Ozs7Tjs7OzswNDdGOworMDQ3RjtDWVJJTExJQyBTTUFMTCBMRVRURVIgT1Q7TGw7MDtMOzs7OztOOzs7MDQ3RTs7MDQ3RQorMDQ4MDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLT1BQQTtMdTswO0w7Ozs7O047Ozs7MDQ4MTsKKzA0ODE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtPUFBBO0xsOzA7TDs7Ozs7Tjs7OzA0ODA7OzA0ODAKKzA0ODI7Q1lSSUxMSUMgVEhPVVNBTkRTIFNJR047U287MDtMOzs7OztOOzs7OzsKKzA0ODM7Q09NQklOSU5HIENZUklMTElDIFRJVExPO01uOzIzMDtOU007Ozs7O047Q1lSSUxMSUMgTk9OLVNQQUNJTkcgVElUTE87Ozs7CiswNDg0O0NPTUJJTklORyBDWVJJTExJQyBQQUxBVEFMSVpBVElPTjtNbjsyMzA7TlNNOzs7OztOO0NZUklMTElDIE5PTi1TUEFDSU5HIFBBTEFUQUxJWkFUSU9OOzs7OworMDQ4NTtDT01CSU5JTkcgQ1lSSUxMSUMgREFTSUEgUE5FVU1BVEE7TW47MjMwO05TTTs7Ozs7TjtDWVJJTExJQyBOT04tU1BBQ0lORyBEQVNJQSBQTkVVTUFUQTs7OzsKKzA0ODY7Q09NQklOSU5HIENZUklMTElDIFBTSUxJIFBORVVNQVRBO01uOzIzMDtOU007Ozs7O047Q1lSSUxMSUMgTk9OLVNQQUNJTkcgUFNJTEkgUE5FVU1BVEE7Ozs7CiswNDg4O0NPTUJJTklORyBDWVJJTExJQyBIVU5EUkVEIFRIT1VTQU5EUyBTSUdOO01lOzA7TlNNOzs7OztOOzs7OzsKKzA0ODk7Q09NQklOSU5HIENZUklMTElDIE1JTExJT05TIFNJR047TWU7MDtOU007Ozs7O047Ozs7OworMDQ4QztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTRU1JU09GVCBTSUdOO0x1OzA7TDs7Ozs7Tjs7OzswNDhEOworMDQ4RDtDWVJJTExJQyBTTUFMTCBMRVRURVIgU0VNSVNPRlQgU0lHTjtMbDswO0w7Ozs7O047OzswNDhDOzswNDhDCiswNDhFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVSIFdJVEggVElDSztMdTswO0w7Ozs7O047Ozs7MDQ4RjsKKzA0OEY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVSIFdJVEggVElDSztMbDswO0w7Ozs7O047OzswNDhFOzswNDhFCiswNDkwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIFVQVFVSTjtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0UgV0lUSCBVUFRVUk47OzswNDkxOworMDQ5MTtDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFIFdJVEggVVBUVVJOO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgR0UgV0lUSCBVUFRVUk47OzA0OTA7OzA0OTAKKzA0OTI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0hFIFdJVEggU1RST0tFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHRSBCQVI7OzswNDkzOworMDQ5MztDWVJJTExJQyBTTUFMTCBMRVRURVIgR0hFIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgR0UgQkFSOzswNDkyOzswNDkyCiswNDk0O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIE1JRERMRSBIT09LO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHRSBIT09LOzs7MDQ5NTsKKzA0OTU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRSBXSVRIIE1JRERMRSBIT09LO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgR0UgSE9PSzs7MDQ5NDs7MDQ5NAorMDQ5NjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUgV0lUSCBERVNDRU5ERVI7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRSBXSVRIIFJJR0hUIERFU0NFTkRFUjs7OzA0OTc7CiswNDk3O0NZUklMTElDIFNNQUxMIExFVFRFUiBaSEUgV0lUSCBERVNDRU5ERVI7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBaSEUgV0lUSCBSSUdIVCBERVNDRU5ERVI7OzA0OTY7OzA0OTYKKzA0OTg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkUgV0lUSCBERVNDRU5ERVI7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFpFIENFRElMTEE7OzswNDk5OworMDQ5OTtDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUgV0lUSCBERVNDRU5ERVI7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBaRSBDRURJTExBOzswNDk4OzswNDk4CiswNDlBO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggREVTQ0VOREVSO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIFJJR0hUIERFU0NFTkRFUjs7OzA0OUI7CiswNDlCO0NZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUjtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggUklHSFQgREVTQ0VOREVSOzswNDlBOzswNDlBCiswNDlDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggVkVSVElDQUwgU1RST0tFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBWRVJUSUNBTCBCQVI7OzswNDlEOworMDQ5RDtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBWRVJUSUNBTCBTVFJPS0U7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBLQSBWRVJUSUNBTCBCQVI7OzA0OUM7OzA0OUMKKzA0OUU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBTVFJPS0U7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIEJBUjs7OzA0OUY7CiswNDlGO0NZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIEJBUjs7MDQ5RTs7MDQ5RQorMDRBMDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVNIS0lSIEtBO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBSRVZFUlNFRCBHRSBLQTs7OzA0QTE7CiswNEExO0NZUklMTElDIFNNQUxMIExFVFRFUiBCQVNIS0lSIEtBO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgUkVWRVJTRUQgR0UgS0E7OzA0QTA7OzA0QTAKKzA0QTI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gV0lUSCBERVNDRU5ERVI7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVOIFdJVEggUklHSFQgREVTQ0VOREVSOzs7MDRBMzsKKzA0QTM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOIFdJVEggREVTQ0VOREVSO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4gV0lUSCBSSUdIVCBERVNDRU5ERVI7OzA0QTI7OzA0QTIKKzA0QTQ7Q1lSSUxMSUMgQ0FQSVRBTCBMSUdBVFVSRSBFTiBHSEU7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVOIEdFOzs7MDRBNTsKKzA0QTU7Q1lSSUxMSUMgU01BTEwgTElHQVRVUkUgRU4gR0hFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4gR0U7OzA0QTQ7OzA0QTQKKzA0QTY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUEUgV0lUSCBNSURETEUgSE9PSztMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUEUgSE9PSztBYmtoYXNpYW47OzA0QTc7CiswNEE3O0NZUklMTElDIFNNQUxMIExFVFRFUiBQRSBXSVRIIE1JRERMRSBIT09LO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUgSE9PSztBYmtoYXNpYW47MDRBNjs7MDRBNgorMDRBODtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBQktIQVNJQU4gSEE7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIE8gSE9PSzs7OzA0QTk7CiswNEE5O0NZUklMTElDIFNNQUxMIExFVFRFUiBBQktIQVNJQU4gSEE7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBPIEhPT0s7OzA0QTg7OzA0QTgKKzA0QUE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRVMgV0lUSCBERVNDRU5ERVI7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVTIENFRElMTEE7OzswNEFCOworMDRBQjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMgV0lUSCBERVNDRU5ERVI7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBFUyBDRURJTExBOzswNEFBOzswNEFBCiswNEFDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFRFIFdJVEggREVTQ0VOREVSO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURSBXSVRIIFJJR0hUIERFU0NFTkRFUjs7OzA0QUQ7CiswNEFEO0NZUklMTElDIFNNQUxMIExFVFRFUiBURSBXSVRIIERFU0NFTkRFUjtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFIFdJVEggUklHSFQgREVTQ0VOREVSOzswNEFDOzswNEFDCiswNEFFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFU7THU7MDtMOzs7OztOOzs7OzA0QUY7CiswNEFGO0NZUklMTElDIFNNQUxMIExFVFRFUiBTVFJBSUdIVCBVO0xsOzA7TDs7Ozs7Tjs7OzA0QUU7OzA0QUUKKzA0QjA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU1RSQUlHSFQgVSBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU1RSQUlHSFQgVSBCQVI7OzswNEIxOworMDRCMTtDWVJJTExJQyBTTUFMTCBMRVRURVIgU1RSQUlHSFQgVSBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNUUkFJR0hUIFUgQkFSOzswNEIwOzswNEIwCiswNEIyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEhBIFdJVEggREVTQ0VOREVSO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLSEEgV0lUSCBSSUdIVCBERVNDRU5ERVI7OzswNEIzOworMDRCMztDWVJJTExJQyBTTUFMTCBMRVRURVIgSEEgV0lUSCBERVNDRU5ERVI7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBLSEEgV0lUSCBSSUdIVCBERVNDRU5ERVI7OzA0QjI7OzA0QjIKKzA0QjQ7Q1lSSUxMSUMgQ0FQSVRBTCBMSUdBVFVSRSBURSBUU0U7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFRFIFRTRTtBYmtoYXNpYW47OzA0QjU7CiswNEI1O0NZUklMTElDIFNNQUxMIExJR0FUVVJFIFRFIFRTRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFRFIFRTRTtBYmtoYXNpYW47MDRCNDs7MDRCNAorMDRCNjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUgV0lUSCBERVNDRU5ERVI7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIFJJR0hUIERFU0NFTkRFUjs7OzA0Qjc7CiswNEI3O0NZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBERVNDRU5ERVI7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBSSUdIVCBERVNDRU5ERVI7OzA0QjY7OzA0QjYKKzA0Qjg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggVkVSVElDQUwgU1RST0tFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUgVkVSVElDQUwgQkFSOzs7MDRCOTsKKzA0Qjk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBXSVRIIFZFUlRJQ0FMIFNUUk9LRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBWRVJUSUNBTCBCQVI7OzA0Qjg7OzA0QjgKKzA0QkE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hIQTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSDs7OzA0QkI7CiswNEJCO0NZUklMTElDIFNNQUxMIExFVFRFUiBTSEhBO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgSDs7MDRCQTs7MDRCQQorMDRCQztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBQktIQVNJQU4gQ0hFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRSBIT09LOzs7MDRCRDsKKzA0QkQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEFCS0hBU0lBTiBDSEU7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBJRSBIT09LOzswNEJDOzswNEJDCiswNEJFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEFCS0hBU0lBTiBDSEUgV0lUSCBERVNDRU5ERVI7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElFIEhPT0sgT0dPTkVLOzs7MDRCRjsKKzA0QkY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEFCS0hBU0lBTiBDSEUgV0lUSCBERVNDRU5ERVI7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBJRSBIT09LIE9HT05FSzs7MDRCRTs7MDRCRQorMDRDMDtDWVJJTExJQyBMRVRURVIgUEFMT0NIS0E7THU7MDtMOzs7OztOO0NZUklMTElDIExFVFRFUiBJOzs7OworMDRDMTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUgV0lUSCBCUkVWRTtMdTswO0w7MDQxNiAwMzA2Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgWkhFOzs7MDRDMjsKKzA0QzI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRSBXSVRIIEJSRVZFO0xsOzA7TDswNDM2IDAzMDY7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgWkhFOzswNEMxOzswNEMxCiswNEMzO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggSE9PSztMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgSE9PSzs7OzA0QzQ7CiswNEM0O0NZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBLQSBIT09LOzswNEMzOzswNEMzCiswNEM3O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVOIFdJVEggSE9PSztMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRU4gSE9PSzs7OzA0Qzg7CiswNEM4O0NZUklMTElDIFNNQUxMIExFVFRFUiBFTiBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBFTiBIT09LOzswNEM3OzswNEM3CiswNENCO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtIQUtBU1NJQU4gQ0hFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUgV0lUSCBMRUZUIERFU0NFTkRFUjs7OzA0Q0M7CiswNENDO0NZUklMTElDIFNNQUxMIExFVFRFUiBLSEFLQVNTSUFOIENIRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRSBXSVRIIExFRlQgREVTQ0VOREVSOzswNENCOzswNENCCiswNEQwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRTtMdTswO0w7MDQxMCAwMzA2Ozs7O047Ozs7MDREMTsKKzA0RDE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRTtMbDswO0w7MDQzMCAwMzA2Ozs7O047OzswNEQwOzswNEQwCiswNEQyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVM7THU7MDtMOzA0MTAgMDMwODs7OztOOzs7OzA0RDM7CiswNEQzO0NZUklMTElDIFNNQUxMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNDMwIDAzMDg7Ozs7Tjs7OzA0RDI7OzA0RDIKKzA0RDQ7Q1lSSUxMSUMgQ0FQSVRBTCBMSUdBVFVSRSBBIElFO0x1OzA7TDs7Ozs7Tjs7OzswNEQ1OworMDRENTtDWVJJTExJQyBTTUFMTCBMSUdBVFVSRSBBIElFO0xsOzA7TDs7Ozs7Tjs7OzA0RDQ7OzA0RDQKKzA0RDY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUgV0lUSCBCUkVWRTtMdTswO0w7MDQxNSAwMzA2Ozs7O047Ozs7MDRENzsKKzA0RDc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElFIFdJVEggQlJFVkU7TGw7MDtMOzA0MzUgMDMwNjs7OztOOzs7MDRENjs7MDRENgorMDREODtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTQ0hXQTtMdTswO0w7Ozs7O047Ozs7MDREOTsKKzA0RDk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNDSFdBO0xsOzA7TDs7Ozs7Tjs7OzA0RDg7OzA0RDgKKzA0REE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0NIV0EgV0lUSCBESUFFUkVTSVM7THU7MDtMOzA0RDggMDMwODs7OztOOzs7OzA0REI7CiswNERCO0NZUklMTElDIFNNQUxMIExFVFRFUiBTQ0hXQSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDREOSAwMzA4Ozs7O047OzswNERBOzswNERBCiswNERDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDQxNiAwMzA4Ozs7O047Ozs7MDRERDsKKzA0REQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDQzNiAwMzA4Ozs7O047OzswNERDOzswNERDCiswNERFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFpFIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNDE3IDAzMDg7Ozs7Tjs7OzswNERGOworMDRERjtDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzA0MzcgMDMwODs7OztOOzs7MDRERTs7MDRERQorMDRFMDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBQktIQVNJQU4gRFpFO0x1OzA7TDs7Ozs7Tjs7OzswNEUxOworMDRFMTtDWVJJTExJQyBTTUFMTCBMRVRURVIgQUJLSEFTSUFOIERaRTtMbDswO0w7Ozs7O047OzswNEUwOzswNEUwCiswNEUyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST047THU7MDtMOzA0MTggMDMwNDs7OztOOzs7OzA0RTM7CiswNEUzO0NZUklMTElDIFNNQUxMIExFVFRFUiBJIFdJVEggTUFDUk9OO0xsOzA7TDswNDM4IDAzMDQ7Ozs7Tjs7OzA0RTI7OzA0RTIKKzA0RTQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDQxOCAwMzA4Ozs7O047Ozs7MDRFNTsKKzA0RTU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzA0MzggMDMwODs7OztOOzs7MDRFNDs7MDRFNAorMDRFNjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNDFFIDAzMDg7Ozs7Tjs7OzswNEU3OworMDRFNztDWVJJTExJQyBTTUFMTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUztMbDswO0w7MDQzRSAwMzA4Ozs7O047OzswNEU2OzswNEU2CiswNEU4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEJBUlJFRCBPO0x1OzA7TDs7Ozs7Tjs7OzswNEU5OworMDRFOTtDWVJJTExJQyBTTUFMTCBMRVRURVIgQkFSUkVEIE87TGw7MDtMOzs7OztOOzs7MDRFODs7MDRFOAorMDRFQTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVJSRUQgTyBXSVRIIERJQUVSRVNJUztMdTswO0w7MDRFOCAwMzA4Ozs7O047Ozs7MDRFQjsKKzA0RUI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEJBUlJFRCBPIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNEU5IDAzMDg7Ozs7Tjs7OzA0RUE7OzA0RUEKKzA0RUM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDQyRCAwMzA4Ozs7O047Ozs7MDRFRDsKKzA0RUQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzA0NEQgMDMwODs7OztOOzs7MDRFQzs7MDRFQworMDRFRTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OO0x1OzA7TDswNDIzIDAzMDQ7Ozs7Tjs7OzswNEVGOworMDRFRjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVSBXSVRIIE1BQ1JPTjtMbDswO0w7MDQ0MyAwMzA0Ozs7O047OzswNEVFOzswNEVFCiswNEYwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVM7THU7MDtMOzA0MjMgMDMwODs7OztOOzs7OzA0RjE7CiswNEYxO0NZUklMTElDIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNDQzIDAzMDg7Ozs7Tjs7OzA0RjA7OzA0RjAKKzA0RjI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERPVUJMRSBBQ1VURTtMdTswO0w7MDQyMyAwMzBCOzs7O047Ozs7MDRGMzsKKzA0RjM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEU7TGw7MDtMOzA0NDMgMDMwQjs7OztOOzs7MDRGMjs7MDRGMgorMDRGNDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUgV0lUSCBESUFFUkVTSVM7THU7MDtMOzA0MjcgMDMwODs7OztOOzs7OzA0RjU7CiswNEY1O0NZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzA0NDcgMDMwODs7OztOOzs7MDRGNDs7MDRGNAorMDRGODtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBZRVJVIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNDJCIDAzMDg7Ozs7Tjs7OzswNEY5OworMDRGOTtDWVJJTExJQyBTTUFMTCBMRVRURVIgWUVSVSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDQ0QiAwMzA4Ozs7O047OzswNEY4OzswNEY4CiswNTMxO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEFZQjtMdTswO0w7Ozs7O047Ozs7MDU2MTsKKzA1MzI7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgQkVOO0x1OzA7TDs7Ozs7Tjs7OzswNTYyOworMDUzMztBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBHSU07THU7MDtMOzs7OztOOzs7OzA1NjM7CiswNTM0O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIERBO0x1OzA7TDs7Ozs7Tjs7OzswNTY0OworMDUzNTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBFQ0g7THU7MDtMOzs7OztOOzs7OzA1NjU7CiswNTM2O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFpBO0x1OzA7TDs7Ozs7Tjs7OzswNTY2OworMDUzNztBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBFSDtMdTswO0w7Ozs7O047Ozs7MDU2NzsKKzA1Mzg7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgRVQ7THU7MDtMOzs7OztOOzs7OzA1Njg7CiswNTM5O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFRPO0x1OzA7TDs7Ozs7Tjs7OzswNTY5OworMDUzQTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBaSEU7THU7MDtMOzs7OztOOzs7OzA1NkE7CiswNTNCO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIElOSTtMdTswO0w7Ozs7O047Ozs7MDU2QjsKKzA1M0M7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgTElXTjtMdTswO0w7Ozs7O047Ozs7MDU2QzsKKzA1M0Q7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgWEVIO0x1OzA7TDs7Ozs7Tjs7OzswNTZEOworMDUzRTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBDQTtMdTswO0w7Ozs7O047Ozs7MDU2RTsKKzA1M0Y7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgS0VOO0x1OzA7TDs7Ozs7Tjs7OzswNTZGOworMDU0MDtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBITztMdTswO0w7Ozs7O047Ozs7MDU3MDsKKzA1NDE7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgSkE7THU7MDtMOzs7OztOOzs7OzA1NzE7CiswNTQyO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEdIQUQ7THU7MDtMOzs7OztOO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIExBRDs7OzA1NzI7CiswNTQzO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIENIRUg7THU7MDtMOzs7OztOOzs7OzA1NzM7CiswNTQ0O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIE1FTjtMdTswO0w7Ozs7O047Ozs7MDU3NDsKKzA1NDU7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgWUk7THU7MDtMOzs7OztOOzs7OzA1NzU7CiswNTQ2O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIE5PVztMdTswO0w7Ozs7O047Ozs7MDU3NjsKKzA1NDc7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgU0hBO0x1OzA7TDs7Ozs7Tjs7OzswNTc3OworMDU0ODtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBWTztMdTswO0w7Ozs7O047Ozs7MDU3ODsKKzA1NDk7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgQ0hBO0x1OzA7TDs7Ozs7Tjs7OzswNTc5OworMDU0QTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBQRUg7THU7MDtMOzs7OztOOzs7OzA1N0E7CiswNTRCO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEpIRUg7THU7MDtMOzs7OztOOzs7OzA1N0I7CiswNTRDO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFJBO0x1OzA7TDs7Ozs7Tjs7OzswNTdDOworMDU0RDtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBTRUg7THU7MDtMOzs7OztOOzs7OzA1N0Q7CiswNTRFO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFZFVztMdTswO0w7Ozs7O047Ozs7MDU3RTsKKzA1NEY7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgVElXTjtMdTswO0w7Ozs7O047Ozs7MDU3RjsKKzA1NTA7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgUkVIO0x1OzA7TDs7Ozs7Tjs7OzswNTgwOworMDU1MTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBDTztMdTswO0w7Ozs7O047Ozs7MDU4MTsKKzA1NTI7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgWUlXTjtMdTswO0w7Ozs7O047Ozs7MDU4MjsKKzA1NTM7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgUElXUjtMdTswO0w7Ozs7O047Ozs7MDU4MzsKKzA1NTQ7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgS0VIO0x1OzA7TDs7Ozs7Tjs7OzswNTg0OworMDU1NTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBPSDtMdTswO0w7Ozs7O047Ozs7MDU4NTsKKzA1NTY7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgRkVIO0x1OzA7TDs7Ozs7Tjs7OzswNTg2OworMDU1OTtBUk1FTklBTiBNT0RJRklFUiBMRVRURVIgTEVGVCBIQUxGIFJJTkc7TG07MDtMOzs7OztOOzs7OzsKKzA1NUE7QVJNRU5JQU4gQVBPU1RST1BIRTtQbzswO0w7Ozs7O047QVJNRU5JQU4gTU9ESUZJRVIgTEVUVEVSIFJJR0hUIEhBTEYgUklORzs7OzsKKzA1NUI7QVJNRU5JQU4gRU1QSEFTSVMgTUFSSztQbzswO0w7Ozs7O047Ozs7OworMDU1QztBUk1FTklBTiBFWENMQU1BVElPTiBNQVJLO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswNTVEO0FSTUVOSUFOIENPTU1BO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswNTVFO0FSTUVOSUFOIFFVRVNUSU9OIE1BUks7UG87MDtMOzs7OztOOzs7OzsKKzA1NUY7QVJNRU5JQU4gQUJCUkVWSUFUSU9OIE1BUks7UG87MDtMOzs7OztOOzs7OzsKKzA1NjE7QVJNRU5JQU4gU01BTEwgTEVUVEVSIEFZQjtMbDswO0w7Ozs7O047OzswNTMxOzswNTMxCiswNTYyO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBCRU47TGw7MDtMOzs7OztOOzs7MDUzMjs7MDUzMgorMDU2MztBUk1FTklBTiBTTUFMTCBMRVRURVIgR0lNO0xsOzA7TDs7Ozs7Tjs7OzA1MzM7OzA1MzMKKzA1NjQ7QVJNRU5JQU4gU01BTEwgTEVUVEVSIERBO0xsOzA7TDs7Ozs7Tjs7OzA1MzQ7OzA1MzQKKzA1NjU7QVJNRU5JQU4gU01BTEwgTEVUVEVSIEVDSDtMbDswO0w7Ozs7O047OzswNTM1OzswNTM1CiswNTY2O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBaQTtMbDswO0w7Ozs7O047OzswNTM2OzswNTM2CiswNTY3O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBFSDtMbDswO0w7Ozs7O047OzswNTM3OzswNTM3CiswNTY4O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBFVDtMbDswO0w7Ozs7O047OzswNTM4OzswNTM4CiswNTY5O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBUTztMbDswO0w7Ozs7O047OzswNTM5OzswNTM5CiswNTZBO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBaSEU7TGw7MDtMOzs7OztOOzs7MDUzQTs7MDUzQQorMDU2QjtBUk1FTklBTiBTTUFMTCBMRVRURVIgSU5JO0xsOzA7TDs7Ozs7Tjs7OzA1M0I7OzA1M0IKKzA1NkM7QVJNRU5JQU4gU01BTEwgTEVUVEVSIExJV047TGw7MDtMOzs7OztOOzs7MDUzQzs7MDUzQworMDU2RDtBUk1FTklBTiBTTUFMTCBMRVRURVIgWEVIO0xsOzA7TDs7Ozs7Tjs7OzA1M0Q7OzA1M0QKKzA1NkU7QVJNRU5JQU4gU01BTEwgTEVUVEVSIENBO0xsOzA7TDs7Ozs7Tjs7OzA1M0U7OzA1M0UKKzA1NkY7QVJNRU5JQU4gU01BTEwgTEVUVEVSIEtFTjtMbDswO0w7Ozs7O047OzswNTNGOzswNTNGCiswNTcwO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBITztMbDswO0w7Ozs7O047OzswNTQwOzswNTQwCiswNTcxO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBKQTtMbDswO0w7Ozs7O047OzswNTQxOzswNTQxCiswNTcyO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBHSEFEO0xsOzA7TDs7Ozs7TjtBUk1FTklBTiBTTUFMTCBMRVRURVIgTEFEOzswNTQyOzswNTQyCiswNTczO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBDSEVIO0xsOzA7TDs7Ozs7Tjs7OzA1NDM7OzA1NDMKKzA1NzQ7QVJNRU5JQU4gU01BTEwgTEVUVEVSIE1FTjtMbDswO0w7Ozs7O047OzswNTQ0OzswNTQ0CiswNTc1O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBZSTtMbDswO0w7Ozs7O047OzswNTQ1OzswNTQ1CiswNTc2O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBOT1c7TGw7MDtMOzs7OztOOzs7MDU0Njs7MDU0NgorMDU3NztBUk1FTklBTiBTTUFMTCBMRVRURVIgU0hBO0xsOzA7TDs7Ozs7Tjs7OzA1NDc7OzA1NDcKKzA1Nzg7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFZPO0xsOzA7TDs7Ozs7Tjs7OzA1NDg7OzA1NDgKKzA1Nzk7QVJNRU5JQU4gU01BTEwgTEVUVEVSIENIQTtMbDswO0w7Ozs7O047OzswNTQ5OzswNTQ5CiswNTdBO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBQRUg7TGw7MDtMOzs7OztOOzs7MDU0QTs7MDU0QQorMDU3QjtBUk1FTklBTiBTTUFMTCBMRVRURVIgSkhFSDtMbDswO0w7Ozs7O047OzswNTRCOzswNTRCCiswNTdDO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBSQTtMbDswO0w7Ozs7O047OzswNTRDOzswNTRDCiswNTdEO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBTRUg7TGw7MDtMOzs7OztOOzs7MDU0RDs7MDU0RAorMDU3RTtBUk1FTklBTiBTTUFMTCBMRVRURVIgVkVXO0xsOzA7TDs7Ozs7Tjs7OzA1NEU7OzA1NEUKKzA1N0Y7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFRJV047TGw7MDtMOzs7OztOOzs7MDU0Rjs7MDU0RgorMDU4MDtBUk1FTklBTiBTTUFMTCBMRVRURVIgUkVIO0xsOzA7TDs7Ozs7Tjs7OzA1NTA7OzA1NTAKKzA1ODE7QVJNRU5JQU4gU01BTEwgTEVUVEVSIENPO0xsOzA7TDs7Ozs7Tjs7OzA1NTE7OzA1NTEKKzA1ODI7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFlJV047TGw7MDtMOzs7OztOOzs7MDU1Mjs7MDU1MgorMDU4MztBUk1FTklBTiBTTUFMTCBMRVRURVIgUElXUjtMbDswO0w7Ozs7O047OzswNTUzOzswNTUzCiswNTg0O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBLRUg7TGw7MDtMOzs7OztOOzs7MDU1NDs7MDU1NAorMDU4NTtBUk1FTklBTiBTTUFMTCBMRVRURVIgT0g7TGw7MDtMOzs7OztOOzs7MDU1NTs7MDU1NQorMDU4NjtBUk1FTklBTiBTTUFMTCBMRVRURVIgRkVIO0xsOzA7TDs7Ozs7Tjs7OzA1NTY7OzA1NTYKKzA1ODc7QVJNRU5JQU4gU01BTEwgTElHQVRVUkUgRUNIIFlJV047TGw7MDtMOzxjb21wYXQ+IDA1NjUgMDU4Mjs7OztOOzs7OzsKKzA1ODk7QVJNRU5JQU4gRlVMTCBTVE9QO1BvOzA7TDs7Ozs7TjtBUk1FTklBTiBQRVJJT0Q7Ozs7CiswNThBO0FSTUVOSUFOIEhZUEhFTjtQZDswO09OOzs7OztOOzs7OzsKKzA1OTE7SEVCUkVXIEFDQ0VOVCBFVE5BSFRBO01uOzIyMDtOU007Ozs7O047Ozs7OworMDU5MjtIRUJSRVcgQUNDRU5UIFNFR09MO01uOzIzMDtOU007Ozs7O047Ozs7OworMDU5MztIRUJSRVcgQUNDRU5UIFNIQUxTSEVMRVQ7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNTk0O0hFQlJFVyBBQ0NFTlQgWkFRRUYgUUFUQU47TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNTk1O0hFQlJFVyBBQ0NFTlQgWkFRRUYgR0FET0w7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNTk2O0hFQlJFVyBBQ0NFTlQgVElQRUhBO01uOzIyMDtOU007Ozs7O047Oyo7OzsKKzA1OTc7SEVCUkVXIEFDQ0VOVCBSRVZJQTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA1OTg7SEVCUkVXIEFDQ0VOVCBaQVJRQTtNbjsyMzA7TlNNOzs7OztOOzsqOzs7CiswNTk5O0hFQlJFVyBBQ0NFTlQgUEFTSFRBO01uOzIzMDtOU007Ozs7O047Ozs7OworMDU5QTtIRUJSRVcgQUNDRU5UIFlFVElWO01uOzIyMjtOU007Ozs7O047Ozs7OworMDU5QjtIRUJSRVcgQUNDRU5UIFRFVklSO01uOzIyMDtOU007Ozs7O047Ozs7OworMDU5QztIRUJSRVcgQUNDRU5UIEdFUkVTSDtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA1OUQ7SEVCUkVXIEFDQ0VOVCBHRVJFU0ggTVVRREFNO01uOzIzMDtOU007Ozs7O047Ozs7OworMDU5RTtIRUJSRVcgQUNDRU5UIEdFUlNIQVlJTTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA1OUY7SEVCUkVXIEFDQ0VOVCBRQVJORVkgUEFSQTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA1QTA7SEVCUkVXIEFDQ0VOVCBURUxJU0hBIEdFRE9MQTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA1QTE7SEVCUkVXIEFDQ0VOVCBQQVpFUjtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA1QTM7SEVCUkVXIEFDQ0VOVCBNVU5BSDtNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA1QTQ7SEVCUkVXIEFDQ0VOVCBNQUhBUEFLSDtNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA1QTU7SEVCUkVXIEFDQ0VOVCBNRVJLSEE7TW47MjIwO05TTTs7Ozs7Tjs7Kjs7OworMDVBNjtIRUJSRVcgQUNDRU5UIE1FUktIQSBLRUZVTEE7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNUE3O0hFQlJFVyBBQ0NFTlQgREFSR0E7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNUE4O0hFQlJFVyBBQ0NFTlQgUUFETUE7TW47MjMwO05TTTs7Ozs7Tjs7Kjs7OworMDVBOTtIRUJSRVcgQUNDRU5UIFRFTElTSEEgUUVUQU5BO01uOzIzMDtOU007Ozs7O047Ozs7OworMDVBQTtIRUJSRVcgQUNDRU5UIFlFUkFIIEJFTiBZT01PO01uOzIyMDtOU007Ozs7O047Oyo7OzsKKzA1QUI7SEVCUkVXIEFDQ0VOVCBPTEU7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNUFDO0hFQlJFVyBBQ0NFTlQgSUxVWTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA1QUQ7SEVCUkVXIEFDQ0VOVCBERUhJO01uOzIyMjtOU007Ozs7O047Ozs7OworMDVBRTtIRUJSRVcgQUNDRU5UIFpJTk9SO01uOzIyODtOU007Ozs7O047Ozs7OworMDVBRjtIRUJSRVcgTUFSSyBNQVNPUkEgQ0lSQ0xFO01uOzIzMDtOU007Ozs7O047Ozs7OworMDVCMDtIRUJSRVcgUE9JTlQgU0hFVkE7TW47MTA7TlNNOzs7OztOOzs7OzsKKzA1QjE7SEVCUkVXIFBPSU5UIEhBVEFGIFNFR09MO01uOzExO05TTTs7Ozs7Tjs7Ozs7CiswNUIyO0hFQlJFVyBQT0lOVCBIQVRBRiBQQVRBSDtNbjsxMjtOU007Ozs7O047Ozs7OworMDVCMztIRUJSRVcgUE9JTlQgSEFUQUYgUUFNQVRTO01uOzEzO05TTTs7Ozs7Tjs7Ozs7CiswNUI0O0hFQlJFVyBQT0lOVCBISVJJUTtNbjsxNDtOU007Ozs7O047Ozs7OworMDVCNTtIRUJSRVcgUE9JTlQgVFNFUkU7TW47MTU7TlNNOzs7OztOOzs7OzsKKzA1QjY7SEVCUkVXIFBPSU5UIFNFR09MO01uOzE2O05TTTs7Ozs7Tjs7Ozs7CiswNUI3O0hFQlJFVyBQT0lOVCBQQVRBSDtNbjsxNztOU007Ozs7O047Ozs7OworMDVCODtIRUJSRVcgUE9JTlQgUUFNQVRTO01uOzE4O05TTTs7Ozs7Tjs7Ozs7CiswNUI5O0hFQlJFVyBQT0lOVCBIT0xBTTtNbjsxOTtOU007Ozs7O047Ozs7OworMDVCQjtIRUJSRVcgUE9JTlQgUVVCVVRTO01uOzIwO05TTTs7Ozs7Tjs7Ozs7CiswNUJDO0hFQlJFVyBQT0lOVCBEQUdFU0ggT1IgTUFQSVE7TW47MjE7TlNNOzs7OztOO0hFQlJFVyBQT0lOVCBEQUdFU0g7b3Igc2h1cnVxOzs7CiswNUJEO0hFQlJFVyBQT0lOVCBNRVRFRztNbjsyMjtOU007Ozs7O047Oyo7OzsKKzA1QkU7SEVCUkVXIFBVTkNUVUFUSU9OIE1BUUFGO1BvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUJGO0hFQlJFVyBQT0lOVCBSQUZFO01uOzIzO05TTTs7Ozs7Tjs7Ozs7CiswNUMwO0hFQlJFVyBQVU5DVFVBVElPTiBQQVNFUTtQbzswO1I7Ozs7O047SEVCUkVXIFBPSU5UIFBBU0VROyo7OzsKKzA1QzE7SEVCUkVXIFBPSU5UIFNISU4gRE9UO01uOzI0O05TTTs7Ozs7Tjs7Ozs7CiswNUMyO0hFQlJFVyBQT0lOVCBTSU4gRE9UO01uOzI1O05TTTs7Ozs7Tjs7Ozs7CiswNUMzO0hFQlJFVyBQVU5DVFVBVElPTiBTT0YgUEFTVVE7UG87MDtSOzs7OztOOzsqOzs7CiswNUM0O0hFQlJFVyBNQVJLIFVQUEVSIERPVDtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA1RDA7SEVCUkVXIExFVFRFUiBBTEVGO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQxO0hFQlJFVyBMRVRURVIgQkVUO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQyO0hFQlJFVyBMRVRURVIgR0lNRUw7TG87MDtSOzs7OztOOzs7OzsKKzA1RDM7SEVCUkVXIExFVFRFUiBEQUxFVDtMbzswO1I7Ozs7O047Ozs7OworMDVENDtIRUJSRVcgTEVUVEVSIEhFO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQ1O0hFQlJFVyBMRVRURVIgVkFWO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQ2O0hFQlJFVyBMRVRURVIgWkFZSU47TG87MDtSOzs7OztOOzs7OzsKKzA1RDc7SEVCUkVXIExFVFRFUiBIRVQ7TG87MDtSOzs7OztOOzs7OzsKKzA1RDg7SEVCUkVXIExFVFRFUiBURVQ7TG87MDtSOzs7OztOOzs7OzsKKzA1RDk7SEVCUkVXIExFVFRFUiBZT0Q7TG87MDtSOzs7OztOOzs7OzsKKzA1REE7SEVCUkVXIExFVFRFUiBGSU5BTCBLQUY7TG87MDtSOzs7OztOOzs7OzsKKzA1REI7SEVCUkVXIExFVFRFUiBLQUY7TG87MDtSOzs7OztOOzs7OzsKKzA1REM7SEVCUkVXIExFVFRFUiBMQU1FRDtMbzswO1I7Ozs7O047Ozs7OworMDVERDtIRUJSRVcgTEVUVEVSIEZJTkFMIE1FTTtMbzswO1I7Ozs7O047Ozs7OworMDVERTtIRUJSRVcgTEVUVEVSIE1FTTtMbzswO1I7Ozs7O047Ozs7OworMDVERjtIRUJSRVcgTEVUVEVSIEZJTkFMIE5VTjtMbzswO1I7Ozs7O047Ozs7OworMDVFMDtIRUJSRVcgTEVUVEVSIE5VTjtMbzswO1I7Ozs7O047Ozs7OworMDVFMTtIRUJSRVcgTEVUVEVSIFNBTUVLSDtMbzswO1I7Ozs7O047Ozs7OworMDVFMjtIRUJSRVcgTEVUVEVSIEFZSU47TG87MDtSOzs7OztOOzs7OzsKKzA1RTM7SEVCUkVXIExFVFRFUiBGSU5BTCBQRTtMbzswO1I7Ozs7O047Ozs7OworMDVFNDtIRUJSRVcgTEVUVEVSIFBFO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUU1O0hFQlJFVyBMRVRURVIgRklOQUwgVFNBREk7TG87MDtSOzs7OztOOzs7OzsKKzA1RTY7SEVCUkVXIExFVFRFUiBUU0FESTtMbzswO1I7Ozs7O047Ozs7OworMDVFNztIRUJSRVcgTEVUVEVSIFFPRjtMbzswO1I7Ozs7O047Ozs7OworMDVFODtIRUJSRVcgTEVUVEVSIFJFU0g7TG87MDtSOzs7OztOOzs7OzsKKzA1RTk7SEVCUkVXIExFVFRFUiBTSElOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUVBO0hFQlJFVyBMRVRURVIgVEFWO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUYwO0hFQlJFVyBMSUdBVFVSRSBZSURESVNIIERPVUJMRSBWQVY7TG87MDtSOzs7OztOO0hFQlJFVyBMRVRURVIgRE9VQkxFIFZBVjs7OzsKKzA1RjE7SEVCUkVXIExJR0FUVVJFIFlJRERJU0ggVkFWIFlPRDtMbzswO1I7Ozs7O047SEVCUkVXIExFVFRFUiBWQVYgWU9EOzs7OworMDVGMjtIRUJSRVcgTElHQVRVUkUgWUlERElTSCBET1VCTEUgWU9EO0xvOzA7Ujs7Ozs7TjtIRUJSRVcgTEVUVEVSIERPVUJMRSBZT0Q7Ozs7CiswNUYzO0hFQlJFVyBQVU5DVFVBVElPTiBHRVJFU0g7UG87MDtSOzs7OztOOzs7OzsKKzA1RjQ7SEVCUkVXIFBVTkNUVUFUSU9OIEdFUlNIQVlJTTtQbzswO1I7Ozs7O047Ozs7OworMDYwQztBUkFCSUMgQ09NTUE7UG87MDtDUzs7Ozs7Tjs7Ozs7CiswNjFCO0FSQUJJQyBTRU1JQ09MT047UG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjFGO0FSQUJJQyBRVUVTVElPTiBNQVJLO1BvOzA7QUw7Ozs7O047Ozs7OworMDYyMTtBUkFCSUMgTEVUVEVSIEhBTVpBO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBIQU1aQUg7Ozs7CiswNjIyO0FSQUJJQyBMRVRURVIgQUxFRiBXSVRIIE1BRERBIEFCT1ZFO0xvOzA7QUw7MDYyNyAwNjUzOzs7O047QVJBQklDIExFVFRFUiBNQUREQUggT04gQUxFRjs7OzsKKzA2MjM7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQUJPVkU7TG87MDtBTDswNjI3IDA2NTQ7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBTVpBSCBPTiBBTEVGOzs7OworMDYyNDtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIEhBTVpBIEFCT1ZFO0xvOzA7QUw7MDY0OCAwNjU0Ozs7O047QVJBQklDIExFVFRFUiBIQU1aQUggT04gV0FXOzs7OworMDYyNTtBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBIQU1aQSBCRUxPVztMbzswO0FMOzA2MjcgMDY1NTs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIIFVOREVSIEFMRUY7Ozs7CiswNjI2O0FSQUJJQyBMRVRURVIgWUVIIFdJVEggSEFNWkEgQUJPVkU7TG87MDtBTDswNjRBIDA2NTQ7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBTVpBSCBPTiBZQTs7OzsKKzA2Mjc7QVJBQklDIExFVFRFUiBBTEVGO0xvOzA7QUw7Ozs7O047Ozs7OworMDYyODtBUkFCSUMgTEVUVEVSIEJFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgQkFBOzs7OworMDYyOTtBUkFCSUMgTEVUVEVSIFRFSCBNQVJCVVRBO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBUQUEgTUFSQlVUQUg7Ozs7CiswNjJBO0FSQUJJQyBMRVRURVIgVEVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBUQUE7Ozs7CiswNjJCO0FSQUJJQyBMRVRURVIgVEhFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgVEhBQTs7OzsKKzA2MkM7QVJBQklDIExFVFRFUiBKRUVNO0xvOzA7QUw7Ozs7O047Ozs7OworMDYyRDtBUkFCSUMgTEVUVEVSIEhBSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgSEFBOzs7OworMDYyRTtBUkFCSUMgTEVUVEVSIEtIQUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEtIQUE7Ozs7CiswNjJGO0FSQUJJQyBMRVRURVIgREFMO0xvOzA7QUw7Ozs7O047Ozs7OworMDYzMDtBUkFCSUMgTEVUVEVSIFRIQUw7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjMxO0FSQUJJQyBMRVRURVIgUkVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBSQTs7OzsKKzA2MzI7QVJBQklDIExFVFRFUiBaQUlOO0xvOzA7QUw7Ozs7O047Ozs7OworMDYzMztBUkFCSUMgTEVUVEVSIFNFRU47TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjM0O0FSQUJJQyBMRVRURVIgU0hFRU47TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjM1O0FSQUJJQyBMRVRURVIgU0FEO0xvOzA7QUw7Ozs7O047Ozs7OworMDYzNjtBUkFCSUMgTEVUVEVSIERBRDtMbzswO0FMOzs7OztOOzs7OzsKKzA2Mzc7QVJBQklDIExFVFRFUiBUQUg7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjM4O0FSQUJJQyBMRVRURVIgWkFIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBESEFIOzs7OworMDYzOTtBUkFCSUMgTEVUVEVSIEFJTjtMbzswO0FMOzs7OztOOzs7OzsKKzA2M0E7QVJBQklDIExFVFRFUiBHSEFJTjtMbzswO0FMOzs7OztOOzs7OzsKKzA2NDA7QVJBQklDIFRBVFdFRUw7TG07MDtBTDs7Ozs7Tjs7Ozs7CiswNjQxO0FSQUJJQyBMRVRURVIgRkVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBGQTs7OzsKKzA2NDI7QVJBQklDIExFVFRFUiBRQUY7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjQzO0FSQUJJQyBMRVRURVIgS0FGO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBDQUY7Ozs7CiswNjQ0O0FSQUJJQyBMRVRURVIgTEFNO0xvOzA7QUw7Ozs7O047Ozs7OworMDY0NTtBUkFCSUMgTEVUVEVSIE1FRU07TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjQ2O0FSQUJJQyBMRVRURVIgTk9PTjtMbzswO0FMOzs7OztOOzs7OzsKKzA2NDc7QVJBQklDIExFVFRFUiBIRUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBOzs7OworMDY0ODtBUkFCSUMgTEVUVEVSIFdBVztMbzswO0FMOzs7OztOOzs7OzsKKzA2NDk7QVJBQklDIExFVFRFUiBBTEVGIE1BS1NVUkE7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEFMRUYgTUFRU1VSQUg7Ozs7CiswNjRBO0FSQUJJQyBMRVRURVIgWUVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBZQTs7OzsKKzA2NEI7QVJBQklDIEZBVEhBVEFOO01uOzI3O05TTTs7Ozs7Tjs7Ozs7CiswNjRDO0FSQUJJQyBEQU1NQVRBTjtNbjsyODtOU007Ozs7O047Ozs7OworMDY0RDtBUkFCSUMgS0FTUkFUQU47TW47Mjk7TlNNOzs7OztOOzs7OzsKKzA2NEU7QVJBQklDIEZBVEhBO01uOzMwO05TTTs7Ozs7TjtBUkFCSUMgRkFUSEFIOzs7OworMDY0RjtBUkFCSUMgREFNTUE7TW47MzE7TlNNOzs7OztOO0FSQUJJQyBEQU1NQUg7Ozs7CiswNjUwO0FSQUJJQyBLQVNSQTtNbjszMjtOU007Ozs7O047QVJBQklDIEtBU1JBSDs7OzsKKzA2NTE7QVJBQklDIFNIQUREQTtNbjszMztOU007Ozs7O047QVJBQklDIFNIQUREQUg7Ozs7CiswNjUyO0FSQUJJQyBTVUtVTjtNbjszNDtOU007Ozs7O047Ozs7OworMDY1MztBUkFCSUMgTUFEREFIIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Ozs7OworMDY1NDtBUkFCSUMgSEFNWkEgQUJPVkU7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNjU1O0FSQUJJQyBIQU1aQSBCRUxPVztNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA2NjA7QVJBQklDLUlORElDIERJR0lUIFpFUk87TmQ7MDtBTjs7MDswOzA7Tjs7Ozs7CiswNjYxO0FSQUJJQy1JTkRJQyBESUdJVCBPTkU7TmQ7MDtBTjs7MTsxOzE7Tjs7Ozs7CiswNjYyO0FSQUJJQy1JTkRJQyBESUdJVCBUV087TmQ7MDtBTjs7MjsyOzI7Tjs7Ozs7CiswNjYzO0FSQUJJQy1JTkRJQyBESUdJVCBUSFJFRTtOZDswO0FOOzszOzM7MztOOzs7OzsKKzA2NjQ7QVJBQklDLUlORElDIERJR0lUIEZPVVI7TmQ7MDtBTjs7NDs0OzQ7Tjs7Ozs7CiswNjY1O0FSQUJJQy1JTkRJQyBESUdJVCBGSVZFO05kOzA7QU47OzU7NTs1O047Ozs7OworMDY2NjtBUkFCSUMtSU5ESUMgRElHSVQgU0lYO05kOzA7QU47OzY7Njs2O047Ozs7OworMDY2NztBUkFCSUMtSU5ESUMgRElHSVQgU0VWRU47TmQ7MDtBTjs7Nzs3Ozc7Tjs7Ozs7CiswNjY4O0FSQUJJQy1JTkRJQyBESUdJVCBFSUdIVDtOZDswO0FOOzs4Ozg7ODtOOzs7OzsKKzA2Njk7QVJBQklDLUlORElDIERJR0lUIE5JTkU7TmQ7MDtBTjs7OTs5Ozk7Tjs7Ozs7CiswNjZBO0FSQUJJQyBQRVJDRU5UIFNJR047UG87MDtFVDs7Ozs7Tjs7Ozs7CiswNjZCO0FSQUJJQyBERUNJTUFMIFNFUEFSQVRPUjtQbzswO0FOOzs7OztOOzs7OzsKKzA2NkM7QVJBQklDIFRIT1VTQU5EUyBTRVBBUkFUT1I7UG87MDtBTjs7Ozs7Tjs7Ozs7CiswNjZEO0FSQUJJQyBGSVZFIFBPSU5URUQgU1RBUjtQbzswO0FMOzs7OztOOzs7OzsKKzA2NzA7QVJBQklDIExFVFRFUiBTVVBFUlNDUklQVCBBTEVGO01uOzM1O05TTTs7Ozs7TjtBUkFCSUMgQUxFRiBBQk9WRTs7OzsKKzA2NzE7QVJBQklDIExFVFRFUiBBTEVGIFdBU0xBO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBIQU1aQVQgV0FTTCBPTiBBTEVGOzs7OworMDY3MjtBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBXQVZZIEhBTVpBIEFCT1ZFO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBXQVZZIEhBTVpBSCBPTiBBTEVGOzs7OworMDY3MztBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBXQVZZIEhBTVpBIEJFTE9XO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBXQVZZIEhBTVpBSCBVTkRFUiBBTEVGOzs7OworMDY3NDtBUkFCSUMgTEVUVEVSIEhJR0ggSEFNWkE7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhJR0ggSEFNWkFIOzs7OworMDY3NTtBUkFCSUMgTEVUVEVSIEhJR0ggSEFNWkEgQUxFRjtMbzswO0FMOzxjb21wYXQ+IDA2MjcgMDY3NDs7OztOO0FSQUJJQyBMRVRURVIgSElHSCBIQU1aQUggQUxFRjs7OzsKKzA2NzY7QVJBQklDIExFVFRFUiBISUdIIEhBTVpBIFdBVztMbzswO0FMOzxjb21wYXQ+IDA2NDggMDY3NDs7OztOO0FSQUJJQyBMRVRURVIgSElHSCBIQU1aQUggV0FXOzs7OworMDY3NztBUkFCSUMgTEVUVEVSIFUgV0lUSCBIQU1aQSBBQk9WRTtMbzswO0FMOzxjb21wYXQ+IDA2QzcgMDY3NDs7OztOO0FSQUJJQyBMRVRURVIgSElHSCBIQU1aQUggV0FXIFdJVEggREFNTUFIOzs7OworMDY3ODtBUkFCSUMgTEVUVEVSIEhJR0ggSEFNWkEgWUVIO0xvOzA7QUw7PGNvbXBhdD4gMDY0QSAwNjc0Ozs7O047QVJBQklDIExFVFRFUiBISUdIIEhBTVpBSCBZQTs7OzsKKzA2Nzk7QVJBQklDIExFVFRFUiBUVEVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBUQUEgV0lUSCBTTUFMTCBUQUg7Ozs7CiswNjdBO0FSQUJJQyBMRVRURVIgVFRFSEVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBUQUEgV0lUSCBUV08gRE9UUyBWRVJUSUNBTCBBQk9WRTs7OzsKKzA2N0I7QVJBQklDIExFVFRFUiBCRUVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBCQUEgV0lUSCBUV08gRE9UUyBWRVJUSUNBTCBCRUxPVzs7OzsKKzA2N0M7QVJBQklDIExFVFRFUiBURUggV0lUSCBSSU5HO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBUQUEgV0lUSCBSSU5HOzs7OworMDY3RDtBUkFCSUMgTEVUVEVSIFRFSCBXSVRIIFRIUkVFIERPVFMgQUJPVkUgRE9XTldBUkRTO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBUQUEgV0lUSCBUSFJFRSBET1RTIEFCT1ZFIERPV05XQVJEOzs7OworMDY3RTtBUkFCSUMgTEVUVEVSIFBFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIFdJVEggVEhSRUUgRE9UUyBCRUxPVzs7OzsKKzA2N0Y7QVJBQklDIExFVFRFUiBURUhFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIFdJVEggRk9VUiBET1RTIEFCT1ZFOzs7OworMDY4MDtBUkFCSUMgTEVUVEVSIEJFSEVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBCQUEgV0lUSCBGT1VSIERPVFMgQkVMT1c7Ozs7CiswNjgxO0FSQUJJQyBMRVRURVIgSEFIIFdJVEggSEFNWkEgQUJPVkU7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBTVpBSCBPTiBIQUE7Ozs7CiswNjgyO0FSQUJJQyBMRVRURVIgSEFIIFdJVEggVFdPIERPVFMgVkVSVElDQUwgQUJPVkU7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBQSBXSVRIIFRXTyBET1RTIFZFUlRJQ0FMIEFCT1ZFOzs7OworMDY4MztBUkFCSUMgTEVUVEVSIE5ZRUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBQSBXSVRIIE1JRERMRSBUV08gRE9UUzs7OzsKKzA2ODQ7QVJBQklDIExFVFRFUiBEWUVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBIQUEgV0lUSCBNSURETEUgVFdPIERPVFMgVkVSVElDQUw7Ozs7CiswNjg1O0FSQUJJQyBMRVRURVIgSEFIIFdJVEggVEhSRUUgRE9UUyBBQk9WRTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgSEFBIFdJVEggVEhSRUUgRE9UUyBBQk9WRTs7OzsKKzA2ODY7QVJBQklDIExFVFRFUiBUQ0hFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgSEFBIFdJVEggTUlERExFIFRIUkVFIERPVFMgRE9XTldBUkQ7Ozs7CiswNjg3O0FSQUJJQyBMRVRURVIgVENIRUhFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgSEFBIFdJVEggTUlERExFIEZPVVIgRE9UUzs7OzsKKzA2ODg7QVJBQklDIExFVFRFUiBEREFMO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBEQUwgV0lUSCBTTUFMTCBUQUg7Ozs7CiswNjg5O0FSQUJJQyBMRVRURVIgREFMIFdJVEggUklORztMbzswO0FMOzs7OztOOzs7OzsKKzA2OEE7QVJBQklDIExFVFRFUiBEQUwgV0lUSCBET1QgQkVMT1c7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjhCO0FSQUJJQyBMRVRURVIgREFMIFdJVEggRE9UIEJFTE9XIEFORCBTTUFMTCBUQUg7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjhDO0FSQUJJQyBMRVRURVIgREFIQUw7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIERBTCBXSVRIIFRXTyBET1RTIEFCT1ZFOzs7OworMDY4RDtBUkFCSUMgTEVUVEVSIEREQUhBTDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgREFMIFdJVEggVFdPIERPVFMgQkVMT1c7Ozs7CiswNjhFO0FSQUJJQyBMRVRURVIgRFVMO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBEQUwgV0lUSCBUSFJFRSBET1RTIEFCT1ZFOzs7OworMDY4RjtBUkFCSUMgTEVUVEVSIERBTCBXSVRIIFRIUkVFIERPVFMgQUJPVkUgRE9XTldBUkRTO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBEQUwgV0lUSCBUSFJFRSBET1RTIEFCT1ZFIERPV05XQVJEOzs7OworMDY5MDtBUkFCSUMgTEVUVEVSIERBTCBXSVRIIEZPVVIgRE9UUyBBQk9WRTtMbzswO0FMOzs7OztOOzs7OzsKKzA2OTE7QVJBQklDIExFVFRFUiBSUkVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBSQSBXSVRIIFNNQUxMIFRBSDs7OzsKKzA2OTI7QVJBQklDIExFVFRFUiBSRUggV0lUSCBTTUFMTCBWO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBSQSBXSVRIIFNNQUxMIFY7Ozs7CiswNjkzO0FSQUJJQyBMRVRURVIgUkVIIFdJVEggUklORztMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBSSU5HOzs7OworMDY5NDtBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIERPVCBCRUxPVztMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBET1QgQkVMT1c7Ozs7CiswNjk1O0FSQUJJQyBMRVRURVIgUkVIIFdJVEggU01BTEwgViBCRUxPVztMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBTTUFMTCBWIEJFTE9XOzs7OworMDY5NjtBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIERPVCBCRUxPVyBBTkQgRE9UIEFCT1ZFO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBSQSBXSVRIIERPVCBCRUxPVyBBTkQgRE9UIEFCT1ZFOzs7OworMDY5NztBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIFRXTyBET1RTIEFCT1ZFO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBSQSBXSVRIIFRXTyBET1RTIEFCT1ZFOzs7OworMDY5ODtBUkFCSUMgTEVUVEVSIEpFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBUSFJFRSBET1RTIEFCT1ZFOzs7OworMDY5OTtBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIEZPVVIgRE9UUyBBQk9WRTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBGT1VSIERPVFMgQUJPVkU7Ozs7CiswNjlBO0FSQUJJQyBMRVRURVIgU0VFTiBXSVRIIERPVCBCRUxPVyBBTkQgRE9UIEFCT1ZFO0xvOzA7QUw7Ozs7O047Ozs7OworMDY5QjtBUkFCSUMgTEVUVEVSIFNFRU4gV0lUSCBUSFJFRSBET1RTIEJFTE9XO0xvOzA7QUw7Ozs7O047Ozs7OworMDY5QztBUkFCSUMgTEVUVEVSIFNFRU4gV0lUSCBUSFJFRSBET1RTIEJFTE9XIEFORCBUSFJFRSBET1RTIEFCT1ZFO0xvOzA7QUw7Ozs7O047Ozs7OworMDY5RDtBUkFCSUMgTEVUVEVSIFNBRCBXSVRIIFRXTyBET1RTIEJFTE9XO0xvOzA7QUw7Ozs7O047Ozs7OworMDY5RTtBUkFCSUMgTEVUVEVSIFNBRCBXSVRIIFRIUkVFIERPVFMgQUJPVkU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjlGO0FSQUJJQyBMRVRURVIgVEFIIFdJVEggVEhSRUUgRE9UUyBBQk9WRTtMbzswO0FMOzs7OztOOzs7OzsKKzA2QTA7QVJBQklDIExFVFRFUiBBSU4gV0lUSCBUSFJFRSBET1RTIEFCT1ZFO0xvOzA7QUw7Ozs7O047Ozs7OworMDZBMTtBUkFCSUMgTEVUVEVSIERPVExFU1MgRkVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBET1RMRVNTIEZBOzs7OworMDZBMjtBUkFCSUMgTEVUVEVSIEZFSCBXSVRIIERPVCBNT1ZFRCBCRUxPVztMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgRkEgV0lUSCBET1QgTU9WRUQgQkVMT1c7Ozs7CiswNkEzO0FSQUJJQyBMRVRURVIgRkVIIFdJVEggRE9UIEJFTE9XO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBGQSBXSVRIIERPVCBCRUxPVzs7OzsKKzA2QTQ7QVJBQklDIExFVFRFUiBWRUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEZBIFdJVEggVEhSRUUgRE9UUyBBQk9WRTs7OzsKKzA2QTU7QVJBQklDIExFVFRFUiBGRUggV0lUSCBUSFJFRSBET1RTIEJFTE9XO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBGQSBXSVRIIFRIUkVFIERPVFMgQkVMT1c7Ozs7CiswNkE2O0FSQUJJQyBMRVRURVIgUEVIRUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEZBIFdJVEggRk9VUiBET1RTIEFCT1ZFOzs7OworMDZBNztBUkFCSUMgTEVUVEVSIFFBRiBXSVRIIERPVCBBQk9WRTtMbzswO0FMOzs7OztOOzs7OzsKKzA2QTg7QVJBQklDIExFVFRFUiBRQUYgV0lUSCBUSFJFRSBET1RTIEFCT1ZFO0xvOzA7QUw7Ozs7O047Ozs7OworMDZBOTtBUkFCSUMgTEVUVEVSIEtFSEVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBPUEVOIENBRjs7OzsKKzA2QUE7QVJBQklDIExFVFRFUiBTV0FTSCBLQUY7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFNXQVNIIENBRjs7OzsKKzA2QUI7QVJBQklDIExFVFRFUiBLQUYgV0lUSCBSSU5HO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBDQUYgV0lUSCBSSU5HOzs7OworMDZBQztBUkFCSUMgTEVUVEVSIEtBRiBXSVRIIERPVCBBQk9WRTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgQ0FGIFdJVEggRE9UIEFCT1ZFOzs7OworMDZBRDtBUkFCSUMgTEVUVEVSIE5HO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBDQUYgV0lUSCBUSFJFRSBET1RTIEFCT1ZFOzs7OworMDZBRTtBUkFCSUMgTEVUVEVSIEtBRiBXSVRIIFRIUkVFIERPVFMgQkVMT1c7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIENBRiBXSVRIIFRIUkVFIERPVFMgQkVMT1c7Ozs7CiswNkFGO0FSQUJJQyBMRVRURVIgR0FGO0xvOzA7QUw7Ozs7O047Oyo7OzsKKzA2QjA7QVJBQklDIExFVFRFUiBHQUYgV0lUSCBSSU5HO0xvOzA7QUw7Ozs7O047Ozs7OworMDZCMTtBUkFCSUMgTEVUVEVSIE5HT0VIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBHQUYgV0lUSCBUV08gRE9UUyBBQk9WRTs7OzsKKzA2QjI7QVJBQklDIExFVFRFUiBHQUYgV0lUSCBUV08gRE9UUyBCRUxPVztMbzswO0FMOzs7OztOOzs7OzsKKzA2QjM7QVJBQklDIExFVFRFUiBHVUVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBHQUYgV0lUSCBUV08gRE9UUyBWRVJUSUNBTCBCRUxPVzs7OzsKKzA2QjQ7QVJBQklDIExFVFRFUiBHQUYgV0lUSCBUSFJFRSBET1RTIEFCT1ZFO0xvOzA7QUw7Ozs7O047Ozs7OworMDZCNTtBUkFCSUMgTEVUVEVSIExBTSBXSVRIIFNNQUxMIFY7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkI2O0FSQUJJQyBMRVRURVIgTEFNIFdJVEggRE9UIEFCT1ZFO0xvOzA7QUw7Ozs7O047Ozs7OworMDZCNztBUkFCSUMgTEVUVEVSIExBTSBXSVRIIFRIUkVFIERPVFMgQUJPVkU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkI4O0FSQUJJQyBMRVRURVIgTEFNIFdJVEggVEhSRUUgRE9UUyBCRUxPVztMbzswO0FMOzs7OztOOzs7OzsKKzA2Qjk7QVJBQklDIExFVFRFUiBOT09OIFdJVEggRE9UIEJFTE9XO0xvOzA7QUw7Ozs7O047Ozs7OworMDZCQTtBUkFCSUMgTEVUVEVSIE5PT04gR0hVTk5BO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBET1RMRVNTIE5PT047Ozs7CiswNkJCO0FSQUJJQyBMRVRURVIgUk5PT047TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIERPVExFU1MgTk9PTiBXSVRIIFNNQUxMIFRBSDs7OzsKKzA2QkM7QVJBQklDIExFVFRFUiBOT09OIFdJVEggUklORztMbzswO0FMOzs7OztOOzs7OzsKKzA2QkQ7QVJBQklDIExFVFRFUiBOT09OIFdJVEggVEhSRUUgRE9UUyBBQk9WRTtMbzswO0FMOzs7OztOOzs7OzsKKzA2QkU7QVJBQklDIExFVFRFUiBIRUggRE9BQ0hBU0hNRUU7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEtOT1RURUQgSEE7Ozs7CiswNkJGO0FSQUJJQyBMRVRURVIgVENIRUggV0lUSCBET1QgQUJPVkU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkMwO0FSQUJJQyBMRVRURVIgSEVIIFdJVEggWUVIIEFCT1ZFO0xvOzA7QUw7MDZENSAwNjU0Ozs7O047QVJBQklDIExFVFRFUiBIQU1aQUggT04gSEE7Ozs7CiswNkMxO0FSQUJJQyBMRVRURVIgSEVIIEdPQUw7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBIEdPQUw7Ozs7CiswNkMyO0FSQUJJQyBMRVRURVIgSEVIIEdPQUwgV0lUSCBIQU1aQSBBQk9WRTtMbzswO0FMOzA2QzEgMDY1NDs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIIE9OIEhBIEdPQUw7Ozs7CiswNkMzO0FSQUJJQyBMRVRURVIgVEVIIE1BUkJVVEEgR09BTDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIE1BUkJVVEFIIEdPQUw7Ozs7CiswNkM0O0FSQUJJQyBMRVRURVIgV0FXIFdJVEggUklORztMbzswO0FMOzs7OztOOzs7OzsKKzA2QzU7QVJBQklDIExFVFRFUiBLSVJHSElaIE9FO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBXQVcgV0lUSCBCQVI7Ozs7CiswNkM2O0FSQUJJQyBMRVRURVIgT0U7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIFNNQUxMIFY7Ozs7CiswNkM3O0FSQUJJQyBMRVRURVIgVTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgV0FXIFdJVEggREFNTUFIOzs7OworMDZDODtBUkFCSUMgTEVUVEVSIFlVO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBXQVcgV0lUSCBBTEVGIEFCT1ZFOzs7OworMDZDOTtBUkFCSUMgTEVUVEVSIEtJUkdISVogWVU7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIElOVkVSVEVEIFNNQUxMIFY7Ozs7CiswNkNBO0FSQUJJQyBMRVRURVIgV0FXIFdJVEggVFdPIERPVFMgQUJPVkU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkNCO0FSQUJJQyBMRVRURVIgVkU7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIFRIUkVFIERPVFMgQUJPVkU7Ozs7CiswNkNDO0FSQUJJQyBMRVRURVIgRkFSU0kgWUVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBET1RMRVNTIFlBOzs7OworMDZDRDtBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIFRBSUw7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFlBIFdJVEggVEFJTDs7OzsKKzA2Q0U7QVJBQklDIExFVFRFUiBZRUggV0lUSCBTTUFMTCBWO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBZQSBXSVRIIFNNQUxMIFY7Ozs7CiswNkNGO0FSQUJJQyBMRVRURVIgV0FXIFdJVEggRE9UIEFCT1ZFO0xvOzA7QUw7Ozs7O047Ozs7OworMDZEMDtBUkFCSUMgTEVUVEVSIEU7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFlBIFdJVEggVFdPIERPVFMgVkVSVElDQUwgQkVMT1c7Kjs7OworMDZEMTtBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIFRIUkVFIERPVFMgQkVMT1c7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFlBIFdJVEggVEhSRUUgRE9UUyBCRUxPVzs7OzsKKzA2RDI7QVJBQklDIExFVFRFUiBZRUggQkFSUkVFO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBZQSBCQVJSRUU7Ozs7CiswNkQzO0FSQUJJQyBMRVRURVIgWUVIIEJBUlJFRSBXSVRIIEhBTVpBIEFCT1ZFO0xvOzA7QUw7MDZEMiAwNjU0Ozs7O047QVJBQklDIExFVFRFUiBIQU1aQUggT04gWUEgQkFSUkVFOzs7OworMDZENDtBUkFCSUMgRlVMTCBTVE9QO1BvOzA7QUw7Ozs7O047QVJBQklDIFBFUklPRDs7OzsKKzA2RDU7QVJBQklDIExFVFRFUiBBRTtMbzswO0FMOzs7OztOOzs7OzsKKzA2RDY7QVJBQklDIFNNQUxMIEhJR0ggTElHQVRVUkUgU0FEIFdJVEggTEFNIFdJVEggQUxFRiBNQUtTVVJBO01uOzIzMDtOU007Ozs7O047Ozs7OworMDZENztBUkFCSUMgU01BTEwgSElHSCBMSUdBVFVSRSBRQUYgV0lUSCBMQU0gV0lUSCBBTEVGIE1BS1NVUkE7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkQ4O0FSQUJJQyBTTUFMTCBISUdIIE1FRU0gSU5JVElBTCBGT1JNO01uOzIzMDtOU007Ozs7O047Ozs7OworMDZEOTtBUkFCSUMgU01BTEwgSElHSCBMQU0gQUxFRjtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA2REE7QVJBQklDIFNNQUxMIEhJR0ggSkVFTTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA2REI7QVJBQklDIFNNQUxMIEhJR0ggVEhSRUUgRE9UUztNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA2REM7QVJBQklDIFNNQUxMIEhJR0ggU0VFTjtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA2REQ7QVJBQklDIEVORCBPRiBBWUFIO01lOzA7TlNNOzs7OztOOzs7OzsKKzA2REU7QVJBQklDIFNUQVJUIE9GIFJVQiBFTCBISVpCO01lOzA7TlNNOzs7OztOOzs7OzsKKzA2REY7QVJBQklDIFNNQUxMIEhJR0ggUk9VTkRFRCBaRVJPO01uOzIzMDtOU007Ozs7O047Ozs7OworMDZFMDtBUkFCSUMgU01BTEwgSElHSCBVUFJJR0hUIFJFQ1RBTkdVTEFSIFpFUk87TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkUxO0FSQUJJQyBTTUFMTCBISUdIIERPVExFU1MgSEVBRCBPRiBLSEFIO01uOzIzMDtOU007Ozs7O047Ozs7OworMDZFMjtBUkFCSUMgU01BTEwgSElHSCBNRUVNIElTT0xBVEVEIEZPUk07TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkUzO0FSQUJJQyBTTUFMTCBMT1cgU0VFTjtNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA2RTQ7QVJBQklDIFNNQUxMIEhJR0ggTUFEREE7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkU1O0FSQUJJQyBTTUFMTCBXQVc7TG07MDtBTDs7Ozs7Tjs7Ozs7CiswNkU2O0FSQUJJQyBTTUFMTCBZRUg7TG07MDtBTDs7Ozs7Tjs7Ozs7CiswNkU3O0FSQUJJQyBTTUFMTCBISUdIIFlFSDtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA2RTg7QVJBQklDIFNNQUxMIEhJR0ggTk9PTjtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA2RTk7QVJBQklDIFBMQUNFIE9GIFNBSkRBSDtTbzswO09OOzs7OztOOzs7OzsKKzA2RUE7QVJBQklDIEVNUFRZIENFTlRSRSBMT1cgU1RPUDtNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA2RUI7QVJBQklDIEVNUFRZIENFTlRSRSBISUdIIFNUT1A7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkVDO0FSQUJJQyBST1VOREVEIEhJR0ggU1RPUCBXSVRIIEZJTExFRCBDRU5UUkU7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkVEO0FSQUJJQyBTTUFMTCBMT1cgTUVFTTtNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA2RjA7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIFpFUk87TmQ7MDtFTjs7MDswOzA7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPOzs7OworMDZGMTtFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgT05FO05kOzA7RU47OzE7MTsxO047RUFTVEVSTiBBUkFCSUMtSU5ESUMgRElHSVQgT05FOzs7OworMDZGMjtFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgVFdPO05kOzA7RU47OzI7MjsyO047RUFTVEVSTiBBUkFCSUMtSU5ESUMgRElHSVQgVFdPOzs7OworMDZGMztFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgVEhSRUU7TmQ7MDtFTjs7MzszOzM7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBUSFJFRTs7OzsKKzA2RjQ7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIEZPVVI7TmQ7MDtFTjs7NDs0OzQ7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBGT1VSOzs7OworMDZGNTtFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgRklWRTtOZDswO0VOOzs1OzU7NTtOO0VBU1RFUk4gQVJBQklDLUlORElDIERJR0lUIEZJVkU7Ozs7CiswNkY2O0VYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBTSVg7TmQ7MDtFTjs7Njs2OzY7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBTSVg7Ozs7CiswNkY3O0VYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBTRVZFTjtOZDswO0VOOzs3Ozc7NztOO0VBU1RFUk4gQVJBQklDLUlORElDIERJR0lUIFNFVkVOOzs7OworMDZGODtFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgRUlHSFQ7TmQ7MDtFTjs7ODs4Ozg7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBFSUdIVDs7OzsKKzA2Rjk7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIE5JTkU7TmQ7MDtFTjs7OTs5Ozk7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBOSU5FOzs7OworMDZGQTtBUkFCSUMgTEVUVEVSIFNIRUVOIFdJVEggRE9UIEJFTE9XO0xvOzA7QUw7Ozs7O047Ozs7OworMDZGQjtBUkFCSUMgTEVUVEVSIERBRCBXSVRIIERPVCBCRUxPVztMbzswO0FMOzs7OztOOzs7OzsKKzA2RkM7QVJBQklDIExFVFRFUiBHSEFJTiBXSVRIIERPVCBCRUxPVztMbzswO0FMOzs7OztOOzs7OzsKKzA2RkQ7QVJBQklDIFNJR04gU0lOREhJIEFNUEVSU0FORDtTbzswO0FMOzs7OztOOzs7OzsKKzA2RkU7QVJBQklDIFNJR04gU0lOREhJIFBPU1RQT1NJVElPTiBNRU47U287MDtBTDs7Ozs7Tjs7Ozs7CiswNzAwO1NZUklBQyBFTkQgT0YgUEFSQUdSQVBIO1BvOzA7QUw7Ozs7O047Ozs7OworMDcwMTtTWVJJQUMgU1VQUkFMSU5FQVIgRlVMTCBTVE9QO1BvOzA7QUw7Ozs7O047Ozs7OworMDcwMjtTWVJJQUMgU1VCTElORUFSIEZVTEwgU1RPUDtQbzswO0FMOzs7OztOOzs7OzsKKzA3MDM7U1lSSUFDIFNVUFJBTElORUFSIENPTE9OO1BvOzA7QUw7Ozs7O047Ozs7OworMDcwNDtTWVJJQUMgU1VCTElORUFSIENPTE9OO1BvOzA7QUw7Ozs7O047Ozs7OworMDcwNTtTWVJJQUMgSE9SSVpPTlRBTCBDT0xPTjtQbzswO0FMOzs7OztOOzs7OzsKKzA3MDY7U1lSSUFDIENPTE9OIFNLRVdFRCBMRUZUO1BvOzA7QUw7Ozs7O047Ozs7OworMDcwNztTWVJJQUMgQ09MT04gU0tFV0VEIFJJR0hUO1BvOzA7QUw7Ozs7O047Ozs7OworMDcwODtTWVJJQUMgU1VQUkFMSU5FQVIgQ09MT04gU0tFV0VEIExFRlQ7UG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzA5O1NZUklBQyBTVUJMSU5FQVIgQ09MT04gU0tFV0VEIFJJR0hUO1BvOzA7QUw7Ozs7O047Ozs7OworMDcwQTtTWVJJQUMgQ09OVFJBQ1RJT047UG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzBCO1NZUklBQyBIQVJLTEVBTiBPQkVMVVM7UG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzBDO1NZUklBQyBIQVJLTEVBTiBNRVRPQkVMVVM7UG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzBEO1NZUklBQyBIQVJLTEVBTiBBU1RFUklTQ1VTO1BvOzA7QUw7Ozs7O047Ozs7OworMDcwRjtTWVJJQUMgQUJCUkVWSUFUSU9OIE1BUks7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CiswNzEwO1NZUklBQyBMRVRURVIgQUxBUEg7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzExO1NZUklBQyBMRVRURVIgU1VQRVJTQ1JJUFQgQUxBUEg7TW47MzY7TlNNOzs7OztOOzs7OzsKKzA3MTI7U1lSSUFDIExFVFRFUiBCRVRIO0xvOzA7QUw7Ozs7O047Ozs7OworMDcxMztTWVJJQUMgTEVUVEVSIEdBTUFMO0xvOzA7QUw7Ozs7O047Ozs7OworMDcxNDtTWVJJQUMgTEVUVEVSIEdBTUFMIEdBUlNIVU5JO0xvOzA7QUw7Ozs7O047Ozs7OworMDcxNTtTWVJJQUMgTEVUVEVSIERBTEFUSDtMbzswO0FMOzs7OztOOzs7OzsKKzA3MTY7U1lSSUFDIExFVFRFUiBET1RMRVNTIERBTEFUSCBSSVNIO0xvOzA7QUw7Ozs7O047Ozs7OworMDcxNztTWVJJQUMgTEVUVEVSIEhFO0xvOzA7QUw7Ozs7O047Ozs7OworMDcxODtTWVJJQUMgTEVUVEVSIFdBVztMbzswO0FMOzs7OztOOzs7OzsKKzA3MTk7U1lSSUFDIExFVFRFUiBaQUlOO0xvOzA7QUw7Ozs7O047Ozs7OworMDcxQTtTWVJJQUMgTEVUVEVSIEhFVEg7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzFCO1NZUklBQyBMRVRURVIgVEVUSDtMbzswO0FMOzs7OztOOzs7OzsKKzA3MUM7U1lSSUFDIExFVFRFUiBURVRIIEdBUlNIVU5JO0xvOzA7QUw7Ozs7O047Ozs7OworMDcxRDtTWVJJQUMgTEVUVEVSIFlVREg7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzFFO1NZUklBQyBMRVRURVIgWVVESCBIRTtMbzswO0FMOzs7OztOOzs7OzsKKzA3MUY7U1lSSUFDIExFVFRFUiBLQVBIO0xvOzA7QUw7Ozs7O047Ozs7OworMDcyMDtTWVJJQUMgTEVUVEVSIExBTUFESDtMbzswO0FMOzs7OztOOzs7OzsKKzA3MjE7U1lSSUFDIExFVFRFUiBNSU07TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzIyO1NZUklBQyBMRVRURVIgTlVOO0xvOzA7QUw7Ozs7O047Ozs7OworMDcyMztTWVJJQUMgTEVUVEVSIFNFTUtBVEg7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzI0O1NZUklBQyBMRVRURVIgRklOQUwgU0VNS0FUSDtMbzswO0FMOzs7OztOOzs7OzsKKzA3MjU7U1lSSUFDIExFVFRFUiBFO0xvOzA7QUw7Ozs7O047Ozs7OworMDcyNjtTWVJJQUMgTEVUVEVSIFBFO0xvOzA7QUw7Ozs7O047Ozs7OworMDcyNztTWVJJQUMgTEVUVEVSIFJFVkVSU0VEIFBFO0xvOzA7QUw7Ozs7O047Ozs7OworMDcyODtTWVJJQUMgTEVUVEVSIFNBREhFO0xvOzA7QUw7Ozs7O047Ozs7OworMDcyOTtTWVJJQUMgTEVUVEVSIFFBUEg7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzJBO1NZUklBQyBMRVRURVIgUklTSDtMbzswO0FMOzs7OztOOzs7OzsKKzA3MkI7U1lSSUFDIExFVFRFUiBTSElOO0xvOzA7QUw7Ozs7O047Ozs7OworMDcyQztTWVJJQUMgTEVUVEVSIFRBVztMbzswO0FMOzs7OztOOzs7OzsKKzA3MzA7U1lSSUFDIFBUSEFIQSBBQk9WRTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA3MzE7U1lSSUFDIFBUSEFIQSBCRUxPVztNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA3MzI7U1lSSUFDIFBUSEFIQSBET1RURUQ7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNzMzO1NZUklBQyBaUUFQSEEgQUJPVkU7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNzM0O1NZUklBQyBaUUFQSEEgQkVMT1c7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNzM1O1NZUklBQyBaUUFQSEEgRE9UVEVEO01uOzIzMDtOU007Ozs7O047Ozs7OworMDczNjtTWVJJQUMgUkJBU0EgQUJPVkU7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNzM3O1NZUklBQyBSQkFTQSBCRUxPVztNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA3Mzg7U1lSSUFDIERPVFRFRCBaTEFNQSBIT1JJWk9OVEFMO01uOzIyMDtOU007Ozs7O047Ozs7OworMDczOTtTWVJJQUMgRE9UVEVEIFpMQU1BIEFOR1VMQVI7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNzNBO1NZUklBQyBIQkFTQSBBQk9WRTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA3M0I7U1lSSUFDIEhCQVNBIEJFTE9XO01uOzIyMDtOU007Ozs7O047Ozs7OworMDczQztTWVJJQUMgSEJBU0EtRVNBU0EgRE9UVEVEO01uOzIyMDtOU007Ozs7O047Ozs7OworMDczRDtTWVJJQUMgRVNBU0EgQUJPVkU7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNzNFO1NZUklBQyBFU0FTQSBCRUxPVztNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA3M0Y7U1lSSUFDIFJXQUhBO01uOzIzMDtOU007Ozs7O047Ozs7OworMDc0MDtTWVJJQUMgRkVNSU5JTkUgRE9UO01uOzIzMDtOU007Ozs7O047Ozs7OworMDc0MTtTWVJJQUMgUVVTSFNIQVlBO01uOzIzMDtOU007Ozs7O047Ozs7OworMDc0MjtTWVJJQUMgUlVLS0FLSEE7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNzQzO1NZUklBQyBUV08gVkVSVElDQUwgRE9UUyBBQk9WRTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA3NDQ7U1lSSUFDIFRXTyBWRVJUSUNBTCBET1RTIEJFTE9XO01uOzIyMDtOU007Ozs7O047Ozs7OworMDc0NTtTWVJJQUMgVEhSRUUgRE9UUyBBQk9WRTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA3NDY7U1lSSUFDIFRIUkVFIERPVFMgQkVMT1c7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNzQ3O1NZUklBQyBPQkxJUVVFIExJTkUgQUJPVkU7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNzQ4O1NZUklBQyBPQkxJUVVFIExJTkUgQkVMT1c7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNzQ5O1NZUklBQyBNVVNJQztNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA3NEE7U1lSSUFDIEJBUlJFS0g7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNzgwO1RIQUFOQSBMRVRURVIgSEFBO0xvOzA7QUw7Ozs7O047Ozs7OworMDc4MTtUSEFBTkEgTEVUVEVSIFNIQVZJWUFOSTtMbzswO0FMOzs7OztOOzs7OzsKKzA3ODI7VEhBQU5BIExFVFRFUiBOT09OVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3ODM7VEhBQU5BIExFVFRFUiBSQUE7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzg0O1RIQUFOQSBMRVRURVIgQkFBO0xvOzA7QUw7Ozs7O047Ozs7OworMDc4NTtUSEFBTkEgTEVUVEVSIExIQVZJWUFOSTtMbzswO0FMOzs7OztOOzs7OzsKKzA3ODY7VEhBQU5BIExFVFRFUiBLQUFGVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3ODc7VEhBQU5BIExFVFRFUiBBTElGVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3ODg7VEhBQU5BIExFVFRFUiBWQUFWVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3ODk7VEhBQU5BIExFVFRFUiBNRUVNVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OEE7VEhBQU5BIExFVFRFUiBGQUFGVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OEI7VEhBQU5BIExFVFRFUiBESEFBTFU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzhDO1RIQUFOQSBMRVRURVIgVEhBQTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OEQ7VEhBQU5BIExFVFRFUiBMQUFNVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OEU7VEhBQU5BIExFVFRFUiBHQUFGVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OEY7VEhBQU5BIExFVFRFUiBHTkFWSVlBTkk7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzkwO1RIQUFOQSBMRVRURVIgU0VFTlU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzkxO1RIQUFOQSBMRVRURVIgREFWSVlBTkk7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzkyO1RIQUFOQSBMRVRURVIgWkFWSVlBTkk7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzkzO1RIQUFOQSBMRVRURVIgVEFWSVlBTkk7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzk0O1RIQUFOQSBMRVRURVIgWUFBO0xvOzA7QUw7Ozs7O047Ozs7OworMDc5NTtUSEFBTkEgTEVUVEVSIFBBVklZQU5JO0xvOzA7QUw7Ozs7O047Ozs7OworMDc5NjtUSEFBTkEgTEVUVEVSIEpBVklZQU5JO0xvOzA7QUw7Ozs7O047Ozs7OworMDc5NztUSEFBTkEgTEVUVEVSIENIQVZJWUFOSTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OTg7VEhBQU5BIExFVFRFUiBUVEFBO0xvOzA7QUw7Ozs7O047Ozs7OworMDc5OTtUSEFBTkEgTEVUVEVSIEhIQUE7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzlBO1RIQUFOQSBMRVRURVIgS0hBQTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OUI7VEhBQU5BIExFVFRFUiBUSEFBTFU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzlDO1RIQUFOQSBMRVRURVIgWkFBO0xvOzA7QUw7Ozs7O047Ozs7OworMDc5RDtUSEFBTkEgTEVUVEVSIFNIRUVOVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OUU7VEhBQU5BIExFVFRFUiBTQUFESFU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzlGO1RIQUFOQSBMRVRURVIgREFBREhVO0xvOzA7QUw7Ozs7O047Ozs7OworMDdBMDtUSEFBTkEgTEVUVEVSIFRPO0xvOzA7QUw7Ozs7O047Ozs7OworMDdBMTtUSEFBTkEgTEVUVEVSIFpPO0xvOzA7QUw7Ozs7O047Ozs7OworMDdBMjtUSEFBTkEgTEVUVEVSIEFJTlU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswN0EzO1RIQUFOQSBMRVRURVIgR0hBSU5VO0xvOzA7QUw7Ozs7O047Ozs7OworMDdBNDtUSEFBTkEgTEVUVEVSIFFBQUZVO0xvOzA7QUw7Ozs7O047Ozs7OworMDdBNTtUSEFBTkEgTEVUVEVSIFdBQVZVO0xvOzA7QUw7Ozs7O047Ozs7OworMDdBNjtUSEFBTkEgQUJBRklMSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswN0E3O1RIQUFOQSBBQUJBQUZJTEk7TW47MDtOU007Ozs7O047Ozs7OworMDdBODtUSEFBTkEgSUJJRklMSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswN0E5O1RIQUFOQSBFRUJFRUZJTEk7TW47MDtOU007Ozs7O047Ozs7OworMDdBQTtUSEFBTkEgVUJVRklMSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswN0FCO1RIQUFOQSBPT0JPT0ZJTEk7TW47MDtOU007Ozs7O047Ozs7OworMDdBQztUSEFBTkEgRUJFRklMSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswN0FEO1RIQUFOQSBFWUJFWUZJTEk7TW47MDtOU007Ozs7O047Ozs7OworMDdBRTtUSEFBTkEgT0JPRklMSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswN0FGO1RIQUFOQSBPQUJPQUZJTEk7TW47MDtOU007Ozs7O047Ozs7OworMDdCMDtUSEFBTkEgU1VLVU47TW47MDtOU007Ozs7O047Ozs7OworMDkwMTtERVZBTkFHQVJJIFNJR04gQ0FORFJBQklORFU7TW47MDtOU007Ozs7O047Ozs7OworMDkwMjtERVZBTkFHQVJJIFNJR04gQU5VU1ZBUkE7TW47MDtOU007Ozs7O047Ozs7OworMDkwMztERVZBTkFHQVJJIFNJR04gVklTQVJHQTtNYzswO0w7Ozs7O047Ozs7OworMDkwNTtERVZBTkFHQVJJIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTA2O0RFVkFOQUdBUkkgTEVUVEVSIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTA3O0RFVkFOQUdBUkkgTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzA5MDg7REVWQU5BR0FSSSBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzA5MDk7REVWQU5BR0FSSSBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMDkwQTtERVZBTkFHQVJJIExFVFRFUiBVVTtMbzswO0w7Ozs7O047Ozs7OworMDkwQjtERVZBTkFHQVJJIExFVFRFUiBWT0NBTElDIFI7TG87MDtMOzs7OztOOzs7OzsKKzA5MEM7REVWQU5BR0FSSSBMRVRURVIgVk9DQUxJQyBMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTBEO0RFVkFOQUdBUkkgTEVUVEVSIENBTkRSQSBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTBFO0RFVkFOQUdBUkkgTEVUVEVSIFNIT1JUIEU7TG87MDtMOzs7OztOOzs7OzsKKzA5MEY7REVWQU5BR0FSSSBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMDkxMDtERVZBTkFHQVJJIExFVFRFUiBBSTtMbzswO0w7Ozs7O047Ozs7OworMDkxMTtERVZBTkFHQVJJIExFVFRFUiBDQU5EUkEgTztMbzswO0w7Ozs7O047Ozs7OworMDkxMjtERVZBTkFHQVJJIExFVFRFUiBTSE9SVCBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTEzO0RFVkFOQUdBUkkgTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzA5MTQ7REVWQU5BR0FSSSBMRVRURVIgQVU7TG87MDtMOzs7OztOOzs7OzsKKzA5MTU7REVWQU5BR0FSSSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzA5MTY7REVWQU5BR0FSSSBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTE3O0RFVkFOQUdBUkkgTEVUVEVSIEdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTE4O0RFVkFOQUdBUkkgTEVUVEVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMDkxOTtERVZBTkFHQVJJIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzA5MUE7REVWQU5BR0FSSSBMRVRURVIgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzA5MUI7REVWQU5BR0FSSSBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTFDO0RFVkFOQUdBUkkgTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTFEO0RFVkFOQUdBUkkgTEVUVEVSIEpIQTtMbzswO0w7Ozs7O047Ozs7OworMDkxRTtERVZBTkFHQVJJIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzA5MUY7REVWQU5BR0FSSSBMRVRURVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTIwO0RFVkFOQUdBUkkgTEVUVEVSIFRUSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MjE7REVWQU5BR0FSSSBMRVRURVIgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTIyO0RFVkFOQUdBUkkgTEVUVEVSIERESEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MjM7REVWQU5BR0FSSSBMRVRURVIgTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTI0O0RFVkFOQUdBUkkgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTI1O0RFVkFOQUdBUkkgTEVUVEVSIFRIQTtMbzswO0w7Ozs7O047Ozs7OworMDkyNjtERVZBTkFHQVJJIExFVFRFUiBEQTtMbzswO0w7Ozs7O047Ozs7OworMDkyNztERVZBTkFHQVJJIExFVFRFUiBESEE7TG87MDtMOzs7OztOOzs7OzsKKzA5Mjg7REVWQU5BR0FSSSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzA5Mjk7REVWQU5BR0FSSSBMRVRURVIgTk5OQTtMbzswO0w7MDkyOCAwOTNDOzs7O047Ozs7OworMDkyQTtERVZBTkFHQVJJIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMDkyQjtERVZBTkFHQVJJIExFVFRFUiBQSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MkM7REVWQU5BR0FSSSBMRVRURVIgQkE7TG87MDtMOzs7OztOOzs7OzsKKzA5MkQ7REVWQU5BR0FSSSBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTJFO0RFVkFOQUdBUkkgTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTJGO0RFVkFOQUdBUkkgTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTMwO0RFVkFOQUdBUkkgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTMxO0RFVkFOQUdBUkkgTEVUVEVSIFJSQTtMbzswO0w7MDkzMCAwOTNDOzs7O047Ozs7OworMDkzMjtERVZBTkFHQVJJIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMDkzMztERVZBTkFHQVJJIExFVFRFUiBMTEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MzQ7REVWQU5BR0FSSSBMRVRURVIgTExMQTtMbzswO0w7MDkzMyAwOTNDOzs7O047Ozs7OworMDkzNTtERVZBTkFHQVJJIExFVFRFUiBWQTtMbzswO0w7Ozs7O047Ozs7OworMDkzNjtERVZBTkFHQVJJIExFVFRFUiBTSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5Mzc7REVWQU5BR0FSSSBMRVRURVIgU1NBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTM4O0RFVkFOQUdBUkkgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTM5O0RFVkFOQUdBUkkgTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTNDO0RFVkFOQUdBUkkgU0lHTiBOVUtUQTtNbjs3O05TTTs7Ozs7Tjs7Ozs7CiswOTNEO0RFVkFOQUdBUkkgU0lHTiBBVkFHUkFIQTtMbzswO0w7Ozs7O047Ozs7OworMDkzRTtERVZBTkFHQVJJIFZPV0VMIFNJR04gQUE7TWM7MDtMOzs7OztOOzs7OzsKKzA5M0Y7REVWQU5BR0FSSSBWT1dFTCBTSUdOIEk7TWM7MDtMOzs7OztOOzs7OzsKKzA5NDA7REVWQU5BR0FSSSBWT1dFTCBTSUdOIElJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOTQxO0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBVO01uOzA7TlNNOzs7OztOOzs7OzsKKzA5NDI7REVWQU5BR0FSSSBWT1dFTCBTSUdOIFVVO01uOzA7TlNNOzs7OztOOzs7OzsKKzA5NDM7REVWQU5BR0FSSSBWT1dFTCBTSUdOIFZPQ0FMSUMgUjtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOTQ0O0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBWT0NBTElDIFJSO01uOzA7TlNNOzs7OztOOzs7OzsKKzA5NDU7REVWQU5BR0FSSSBWT1dFTCBTSUdOIENBTkRSQSBFO01uOzA7TlNNOzs7OztOOzs7OzsKKzA5NDY7REVWQU5BR0FSSSBWT1dFTCBTSUdOIFNIT1JUIEU7TW47MDtOU007Ozs7O047Ozs7OworMDk0NztERVZBTkFHQVJJIFZPV0VMIFNJR04gRTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOTQ4O0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBBSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOTQ5O0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBDQU5EUkEgTztNYzswO0w7Ozs7O047Ozs7OworMDk0QTtERVZBTkFHQVJJIFZPV0VMIFNJR04gU0hPUlQgTztNYzswO0w7Ozs7O047Ozs7OworMDk0QjtERVZBTkFHQVJJIFZPV0VMIFNJR04gTztNYzswO0w7Ozs7O047Ozs7OworMDk0QztERVZBTkFHQVJJIFZPV0VMIFNJR04gQVU7TWM7MDtMOzs7OztOOzs7OzsKKzA5NEQ7REVWQU5BR0FSSSBTSUdOIFZJUkFNQTtNbjs5O05TTTs7Ozs7Tjs7Ozs7CiswOTUwO0RFVkFOQUdBUkkgT007TG87MDtMOzs7OztOOzs7OzsKKzA5NTE7REVWQU5BR0FSSSBTVFJFU1MgU0lHTiBVREFUVEE7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswOTUyO0RFVkFOQUdBUkkgU1RSRVNTIFNJR04gQU5VREFUVEE7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswOTUzO0RFVkFOQUdBUkkgR1JBVkUgQUNDRU5UO01uOzIzMDtOU007Ozs7O047Ozs7OworMDk1NDtERVZBTkFHQVJJIEFDVVRFIEFDQ0VOVDtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA5NTg7REVWQU5BR0FSSSBMRVRURVIgUUE7TG87MDtMOzA5MTUgMDkzQzs7OztOOzs7OzsKKzA5NTk7REVWQU5BR0FSSSBMRVRURVIgS0hIQTtMbzswO0w7MDkxNiAwOTNDOzs7O047Ozs7OworMDk1QTtERVZBTkFHQVJJIExFVFRFUiBHSEhBO0xvOzA7TDswOTE3IDA5M0M7Ozs7Tjs7Ozs7CiswOTVCO0RFVkFOQUdBUkkgTEVUVEVSIFpBO0xvOzA7TDswOTFDIDA5M0M7Ozs7Tjs7Ozs7CiswOTVDO0RFVkFOQUdBUkkgTEVUVEVSIEREREhBO0xvOzA7TDswOTIxIDA5M0M7Ozs7Tjs7Ozs7CiswOTVEO0RFVkFOQUdBUkkgTEVUVEVSIFJIQTtMbzswO0w7MDkyMiAwOTNDOzs7O047Ozs7OworMDk1RTtERVZBTkFHQVJJIExFVFRFUiBGQTtMbzswO0w7MDkyQiAwOTNDOzs7O047Ozs7OworMDk1RjtERVZBTkFHQVJJIExFVFRFUiBZWUE7TG87MDtMOzA5MkYgMDkzQzs7OztOOzs7OzsKKzA5NjA7REVWQU5BR0FSSSBMRVRURVIgVk9DQUxJQyBSUjtMbzswO0w7Ozs7O047Ozs7OworMDk2MTtERVZBTkFHQVJJIExFVFRFUiBWT0NBTElDIExMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTYyO0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBWT0NBTElDIEw7TW47MDtOU007Ozs7O047Ozs7OworMDk2MztERVZBTkFHQVJJIFZPV0VMIFNJR04gVk9DQUxJQyBMTDtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOTY0O0RFVkFOQUdBUkkgREFOREE7UG87MDtMOzs7OztOOzs7OzsKKzA5NjU7REVWQU5BR0FSSSBET1VCTEUgREFOREE7UG87MDtMOzs7OztOOzs7OzsKKzA5NjY7REVWQU5BR0FSSSBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswOTY3O0RFVkFOQUdBUkkgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswOTY4O0RFVkFOQUdBUkkgRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswOTY5O0RFVkFOQUdBUkkgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzA5NkE7REVWQU5BR0FSSSBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswOTZCO0RFVkFOQUdBUkkgRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMDk2QztERVZBTkFHQVJJIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMDk2RDtERVZBTkFHQVJJIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswOTZFO0RFVkFOQUdBUkkgRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzA5NkY7REVWQU5BR0FSSSBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswOTcwO0RFVkFOQUdBUkkgQUJCUkVWSUFUSU9OIFNJR047UG87MDtMOzs7OztOOzs7OzsKKzA5ODE7QkVOR0FMSSBTSUdOIENBTkRSQUJJTkRVO01uOzA7TlNNOzs7OztOOzs7OzsKKzA5ODI7QkVOR0FMSSBTSUdOIEFOVVNWQVJBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOTgzO0JFTkdBTEkgU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOTg1O0JFTkdBTEkgTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzA5ODY7QkVOR0FMSSBMRVRURVIgQUE7TG87MDtMOzs7OztOOzs7OzsKKzA5ODc7QkVOR0FMSSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMDk4ODtCRU5HQUxJIExFVFRFUiBJSTtMbzswO0w7Ozs7O047Ozs7OworMDk4OTtCRU5HQUxJIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOThBO0JFTkdBTEkgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOThCO0JFTkdBTEkgTEVUVEVSIFZPQ0FMSUMgUjtMbzswO0w7Ozs7O047Ozs7OworMDk4QztCRU5HQUxJIExFVFRFUiBWT0NBTElDIEw7TG87MDtMOzs7OztOOzs7OzsKKzA5OEY7QkVOR0FMSSBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMDk5MDtCRU5HQUxJIExFVFRFUiBBSTtMbzswO0w7Ozs7O047Ozs7OworMDk5MztCRU5HQUxJIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTk0O0JFTkdBTEkgTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTk1O0JFTkdBTEkgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTk2O0JFTkdBTEkgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMDk5NztCRU5HQUxJIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMDk5ODtCRU5HQUxJIExFVFRFUiBHSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5OTk7QkVOR0FMSSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTlBO0JFTkdBTEkgTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTlCO0JFTkdBTEkgTEVUVEVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMDk5QztCRU5HQUxJIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMDk5RDtCRU5HQUxJIExFVFRFUiBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5OUU7QkVOR0FMSSBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTlGO0JFTkdBTEkgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMDlBMDtCRU5HQUxJIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUExO0JFTkdBTEkgTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMDlBMjtCRU5HQUxJIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUEzO0JFTkdBTEkgTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMDlBNDtCRU5HQUxJIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMDlBNTtCRU5HQUxJIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QTY7QkVOR0FMSSBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzA5QTc7QkVOR0FMSSBMRVRURVIgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUE4O0JFTkdBTEkgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUFBO0JFTkdBTEkgTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUFCO0JFTkdBTEkgTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMDlBQztCRU5HQUxJIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMDlBRDtCRU5HQUxJIExFVFRFUiBCSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QUU7QkVOR0FMSSBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzA5QUY7QkVOR0FMSSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzA5QjA7QkVOR0FMSSBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzA5QjI7QkVOR0FMSSBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QjY7QkVOR0FMSSBMRVRURVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUI3O0JFTkdBTEkgTEVUVEVSIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMDlCODtCRU5HQUxJIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMDlCOTtCRU5HQUxJIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMDlCQztCRU5HQUxJIFNJR04gTlVLVEE7TW47NztOU007Ozs7O047Ozs7OworMDlCRTtCRU5HQUxJIFZPV0VMIFNJR04gQUE7TWM7MDtMOzs7OztOOzs7OzsKKzA5QkY7QkVOR0FMSSBWT1dFTCBTSUdOIEk7TWM7MDtMOzs7OztOOzs7OzsKKzA5QzA7QkVOR0FMSSBWT1dFTCBTSUdOIElJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOUMxO0JFTkdBTEkgVk9XRUwgU0lHTiBVO01uOzA7TlNNOzs7OztOOzs7OzsKKzA5QzI7QkVOR0FMSSBWT1dFTCBTSUdOIFVVO01uOzA7TlNNOzs7OztOOzs7OzsKKzA5QzM7QkVOR0FMSSBWT1dFTCBTSUdOIFZPQ0FMSUMgUjtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOUM0O0JFTkdBTEkgVk9XRUwgU0lHTiBWT0NBTElDIFJSO01uOzA7TlNNOzs7OztOOzs7OzsKKzA5Qzc7QkVOR0FMSSBWT1dFTCBTSUdOIEU7TWM7MDtMOzs7OztOOzs7OzsKKzA5Qzg7QkVOR0FMSSBWT1dFTCBTSUdOIEFJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOUNCO0JFTkdBTEkgVk9XRUwgU0lHTiBPO01jOzA7TDswOUM3IDA5QkU7Ozs7Tjs7Ozs7CiswOUNDO0JFTkdBTEkgVk9XRUwgU0lHTiBBVTtNYzswO0w7MDlDNyAwOUQ3Ozs7O047Ozs7OworMDlDRDtCRU5HQUxJIFNJR04gVklSQU1BO01uOzk7TlNNOzs7OztOOzs7OzsKKzA5RDc7QkVOR0FMSSBBVSBMRU5HVEggTUFSSztNYzswO0w7Ozs7O047Ozs7OworMDlEQztCRU5HQUxJIExFVFRFUiBSUkE7TG87MDtMOzA5QTEgMDlCQzs7OztOOzs7OzsKKzA5REQ7QkVOR0FMSSBMRVRURVIgUkhBO0xvOzA7TDswOUEyIDA5QkM7Ozs7Tjs7Ozs7CiswOURGO0JFTkdBTEkgTEVUVEVSIFlZQTtMbzswO0w7MDlBRiAwOUJDOzs7O047Ozs7OworMDlFMDtCRU5HQUxJIExFVFRFUiBWT0NBTElDIFJSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUUxO0JFTkdBTEkgTEVUVEVSIFZPQ0FMSUMgTEw7TG87MDtMOzs7OztOOzs7OzsKKzA5RTI7QkVOR0FMSSBWT1dFTCBTSUdOIFZPQ0FMSUMgTDtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOUUzO0JFTkdBTEkgVk9XRUwgU0lHTiBWT0NBTElDIExMO01uOzA7TlNNOzs7OztOOzs7OzsKKzA5RTY7QkVOR0FMSSBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswOUU3O0JFTkdBTEkgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswOUU4O0JFTkdBTEkgRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswOUU5O0JFTkdBTEkgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzA5RUE7QkVOR0FMSSBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswOUVCO0JFTkdBTEkgRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMDlFQztCRU5HQUxJIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMDlFRDtCRU5HQUxJIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswOUVFO0JFTkdBTEkgRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzA5RUY7QkVOR0FMSSBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswOUYwO0JFTkdBTEkgTEVUVEVSIFJBIFdJVEggTUlERExFIERJQUdPTkFMO0xvOzA7TDs7Ozs7Tjs7QXNzYW1lc2U7OzsKKzA5RjE7QkVOR0FMSSBMRVRURVIgUkEgV0lUSCBMT1dFUiBESUFHT05BTDtMbzswO0w7Ozs7O047QkVOR0FMSSBMRVRURVIgVkEgV0lUSCBMT1dFUiBESUFHT05BTDtBc3NhbWVzZTs7OworMDlGMjtCRU5HQUxJIFJVUEVFIE1BUks7U2M7MDtFVDs7Ozs7Tjs7Ozs7CiswOUYzO0JFTkdBTEkgUlVQRUUgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzA5RjQ7QkVOR0FMSSBDVVJSRU5DWSBOVU1FUkFUT1IgT05FO05vOzA7TDs7OzsxO047Ozs7OworMDlGNTtCRU5HQUxJIENVUlJFTkNZIE5VTUVSQVRPUiBUV087Tm87MDtMOzs7OzI7Tjs7Ozs7CiswOUY2O0JFTkdBTEkgQ1VSUkVOQ1kgTlVNRVJBVE9SIFRIUkVFO05vOzA7TDs7OzszO047Ozs7OworMDlGNztCRU5HQUxJIENVUlJFTkNZIE5VTUVSQVRPUiBGT1VSO05vOzA7TDs7Ozs0O047Ozs7OworMDlGODtCRU5HQUxJIENVUlJFTkNZIE5VTUVSQVRPUiBPTkUgTEVTUyBUSEFOIFRIRSBERU5PTUlOQVRPUjtObzswO0w7Ozs7O047Ozs7OworMDlGOTtCRU5HQUxJIENVUlJFTkNZIERFTk9NSU5BVE9SIFNJWFRFRU47Tm87MDtMOzs7OzE2O047Ozs7OworMDlGQTtCRU5HQUxJIElTU0hBUjtTbzswO0w7Ozs7O047Ozs7OworMEEwMjtHVVJNVUtISSBTSUdOIEJJTkRJO01uOzA7TlNNOzs7OztOOzs7OzsKKzBBMDU7R1VSTVVLSEkgTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMDY7R1VSTVVLSEkgTEVUVEVSIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTA3O0dVUk1VS0hJIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTA4O0dVUk1VS0hJIExFVFRFUiBJSTtMbzswO0w7Ozs7O047Ozs7OworMEEwOTtHVVJNVUtISSBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMEEwQTtHVVJNVUtISSBMRVRURVIgVVU7TG87MDtMOzs7OztOOzs7OzsKKzBBMEY7R1VSTVVLSEkgTEVUVEVSIEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTEwO0dVUk1VS0hJIExFVFRFUiBBSTtMbzswO0w7Ozs7O047Ozs7OworMEExMztHVVJNVUtISSBMRVRURVIgT087TG87MDtMOzs7OztOOzs7OzsKKzBBMTQ7R1VSTVVLSEkgTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTE1O0dVUk1VS0hJIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMEExNjtHVVJNVUtISSBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTE3O0dVUk1VS0hJIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMEExODtHVVJNVUtISSBMRVRURVIgR0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTE5O0dVUk1VS0hJIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzBBMUE7R1VSTVVLSEkgTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTFCO0dVUk1VS0hJIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMUM7R1VSTVVLSEkgTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTFEO0dVUk1VS0hJIExFVFRFUiBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMUU7R1VSTVVLSEkgTEVUVEVSIE5ZQTtMbzswO0w7Ozs7O047Ozs7OworMEExRjtHVVJNVUtISSBMRVRURVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTIwO0dVUk1VS0hJIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTIxO0dVUk1VS0hJIExFVFRFUiBEREE7TG87MDtMOzs7OztOOzs7OzsKKzBBMjI7R1VSTVVLSEkgTEVUVEVSIERESEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMjM7R1VSTVVLSEkgTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMEEyNDtHVVJNVUtISSBMRVRURVIgVEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMjU7R1VSTVVLSEkgTEVUVEVSIFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEEyNjtHVVJNVUtISSBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzBBMjc7R1VSTVVLSEkgTEVUVEVSIERIQTtMbzswO0w7Ozs7O047Ozs7OworMEEyODtHVVJNVUtISSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzBBMkE7R1VSTVVLSEkgTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTJCO0dVUk1VS0hJIExFVFRFUiBQSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMkM7R1VSTVVLSEkgTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTJEO0dVUk1VS0hJIExFVFRFUiBCSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMkU7R1VSTVVLSEkgTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTJGO0dVUk1VS0hJIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMEEzMDtHVVJNVUtISSBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzBBMzI7R1VSTVVLSEkgTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTMzO0dVUk1VS0hJIExFVFRFUiBMTEE7TG87MDtMOzBBMzIgMEEzQzs7OztOOzs7OzsKKzBBMzU7R1VSTVVLSEkgTEVUVEVSIFZBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTM2O0dVUk1VS0hJIExFVFRFUiBTSEE7TG87MDtMOzBBMzggMEEzQzs7OztOOzs7OzsKKzBBMzg7R1VSTVVLSEkgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTM5O0dVUk1VS0hJIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMEEzQztHVVJNVUtISSBTSUdOIE5VS1RBO01uOzc7TlNNOzs7OztOOzs7OzsKKzBBM0U7R1VSTVVLSEkgVk9XRUwgU0lHTiBBQTtNYzswO0w7Ozs7O047Ozs7OworMEEzRjtHVVJNVUtISSBWT1dFTCBTSUdOIEk7TWM7MDtMOzs7OztOOzs7OzsKKzBBNDA7R1VSTVVLSEkgVk9XRUwgU0lHTiBJSTtNYzswO0w7Ozs7O047Ozs7OworMEE0MTtHVVJNVUtISSBWT1dFTCBTSUdOIFU7TW47MDtOU007Ozs7O047Ozs7OworMEE0MjtHVVJNVUtISSBWT1dFTCBTSUdOIFVVO01uOzA7TlNNOzs7OztOOzs7OzsKKzBBNDc7R1VSTVVLSEkgVk9XRUwgU0lHTiBFRTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQTQ4O0dVUk1VS0hJIFZPV0VMIFNJR04gQUk7TW47MDtOU007Ozs7O047Ozs7OworMEE0QjtHVVJNVUtISSBWT1dFTCBTSUdOIE9PO01uOzA7TlNNOzs7OztOOzs7OzsKKzBBNEM7R1VSTVVLSEkgVk9XRUwgU0lHTiBBVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQTREO0dVUk1VS0hJIFNJR04gVklSQU1BO01uOzk7TlNNOzs7OztOOzs7OzsKKzBBNTk7R1VSTVVLSEkgTEVUVEVSIEtISEE7TG87MDtMOzBBMTYgMEEzQzs7OztOOzs7OzsKKzBBNUE7R1VSTVVLSEkgTEVUVEVSIEdISEE7TG87MDtMOzBBMTcgMEEzQzs7OztOOzs7OzsKKzBBNUI7R1VSTVVLSEkgTEVUVEVSIFpBO0xvOzA7TDswQTFDIDBBM0M7Ozs7Tjs7Ozs7CiswQTVDO0dVUk1VS0hJIExFVFRFUiBSUkE7TG87MDtMOzs7OztOOzs7OzsKKzBBNUU7R1VSTVVLSEkgTEVUVEVSIEZBO0xvOzA7TDswQTJCIDBBM0M7Ozs7Tjs7Ozs7CiswQTY2O0dVUk1VS0hJIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBBNjc7R1VSTVVLSEkgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswQTY4O0dVUk1VS0hJIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMEE2OTtHVVJNVUtISSBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEE2QTtHVVJNVUtISSBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswQTZCO0dVUk1VS0hJIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBBNkM7R1VSTVVLSEkgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswQTZEO0dVUk1VS0hJIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswQTZFO0dVUk1VS0hJIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswQTZGO0dVUk1VS0hJIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBBNzA7R1VSTVVLSEkgVElQUEk7TW47MDtOU007Ozs7O047Ozs7OworMEE3MTtHVVJNVUtISSBBRERBSztNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQTcyO0dVUk1VS0hJIElSSTtMbzswO0w7Ozs7O047Ozs7OworMEE3MztHVVJNVUtISSBVUkE7TG87MDtMOzs7OztOOzs7OzsKKzBBNzQ7R1VSTVVLSEkgRUsgT05LQVI7TG87MDtMOzs7OztOOzs7OzsKKzBBODE7R1VKQVJBVEkgU0lHTiBDQU5EUkFCSU5EVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQTgyO0dVSkFSQVRJIFNJR04gQU5VU1ZBUkE7TW47MDtOU007Ozs7O047Ozs7OworMEE4MztHVUpBUkFUSSBTSUdOIFZJU0FSR0E7TWM7MDtMOzs7OztOOzs7OzsKKzBBODU7R1VKQVJBVEkgTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzBBODY7R1VKQVJBVEkgTEVUVEVSIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTg3O0dVSkFSQVRJIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTg4O0dVSkFSQVRJIExFVFRFUiBJSTtMbzswO0w7Ozs7O047Ozs7OworMEE4OTtHVUpBUkFUSSBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMEE4QTtHVUpBUkFUSSBMRVRURVIgVVU7TG87MDtMOzs7OztOOzs7OzsKKzBBOEI7R1VKQVJBVEkgTEVUVEVSIFZPQ0FMSUMgUjtMbzswO0w7Ozs7O047Ozs7OworMEE4RDtHVUpBUkFUSSBWT1dFTCBDQU5EUkEgRTtMbzswO0w7Ozs7O047Ozs7OworMEE4RjtHVUpBUkFUSSBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMEE5MDtHVUpBUkFUSSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzBBOTE7R1VKQVJBVEkgVk9XRUwgQ0FORFJBIE87TG87MDtMOzs7OztOOzs7OzsKKzBBOTM7R1VKQVJBVEkgTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzBBOTQ7R1VKQVJBVEkgTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTk1O0dVSkFSQVRJIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMEE5NjtHVUpBUkFUSSBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTk3O0dVSkFSQVRJIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMEE5ODtHVUpBUkFUSSBMRVRURVIgR0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTk5O0dVSkFSQVRJIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzBBOUE7R1VKQVJBVEkgTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTlCO0dVSkFSQVRJIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBOUM7R1VKQVJBVEkgTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTlEO0dVSkFSQVRJIExFVFRFUiBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBOUU7R1VKQVJBVEkgTEVUVEVSIE5ZQTtMbzswO0w7Ozs7O047Ozs7OworMEE5RjtHVUpBUkFUSSBMRVRURVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUEwO0dVSkFSQVRJIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUExO0dVSkFSQVRJIExFVFRFUiBEREE7TG87MDtMOzs7OztOOzs7OzsKKzBBQTI7R1VKQVJBVEkgTEVUVEVSIERESEE7TG87MDtMOzs7OztOOzs7OzsKKzBBQTM7R1VKQVJBVEkgTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMEFBNDtHVUpBUkFUSSBMRVRURVIgVEE7TG87MDtMOzs7OztOOzs7OzsKKzBBQTU7R1VKQVJBVEkgTEVUVEVSIFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEFBNjtHVUpBUkFUSSBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzBBQTc7R1VKQVJBVEkgTEVUVEVSIERIQTtMbzswO0w7Ozs7O047Ozs7OworMEFBODtHVUpBUkFUSSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzBBQUE7R1VKQVJBVEkgTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUFCO0dVSkFSQVRJIExFVFRFUiBQSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBQUM7R1VKQVJBVEkgTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUFEO0dVSkFSQVRJIExFVFRFUiBCSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBQUU7R1VKQVJBVEkgTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUFGO0dVSkFSQVRJIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMEFCMDtHVUpBUkFUSSBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzBBQjI7R1VKQVJBVEkgTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUIzO0dVSkFSQVRJIExFVFRFUiBMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBBQjU7R1VKQVJBVEkgTEVUVEVSIFZBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUI2O0dVSkFSQVRJIExFVFRFUiBTSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBQjc7R1VKQVJBVEkgTEVUVEVSIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMEFCODtHVUpBUkFUSSBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzBBQjk7R1VKQVJBVEkgTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUJDO0dVSkFSQVRJIFNJR04gTlVLVEE7TW47NztOU007Ozs7O047Ozs7OworMEFCRDtHVUpBUkFUSSBTSUdOIEFWQUdSQUhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUJFO0dVSkFSQVRJIFZPV0VMIFNJR04gQUE7TWM7MDtMOzs7OztOOzs7OzsKKzBBQkY7R1VKQVJBVEkgVk9XRUwgU0lHTiBJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQUMwO0dVSkFSQVRJIFZPV0VMIFNJR04gSUk7TWM7MDtMOzs7OztOOzs7OzsKKzBBQzE7R1VKQVJBVEkgVk9XRUwgU0lHTiBVO01uOzA7TlNNOzs7OztOOzs7OzsKKzBBQzI7R1VKQVJBVEkgVk9XRUwgU0lHTiBVVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQUMzO0dVSkFSQVRJIFZPV0VMIFNJR04gVk9DQUxJQyBSO01uOzA7TlNNOzs7OztOOzs7OzsKKzBBQzQ7R1VKQVJBVEkgVk9XRUwgU0lHTiBWT0NBTElDIFJSO01uOzA7TlNNOzs7OztOOzs7OzsKKzBBQzU7R1VKQVJBVEkgVk9XRUwgU0lHTiBDQU5EUkEgRTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQUM3O0dVSkFSQVRJIFZPV0VMIFNJR04gRTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQUM4O0dVSkFSQVRJIFZPV0VMIFNJR04gQUk7TW47MDtOU007Ozs7O047Ozs7OworMEFDOTtHVUpBUkFUSSBWT1dFTCBTSUdOIENBTkRSQSBPO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQUNCO0dVSkFSQVRJIFZPV0VMIFNJR04gTztNYzswO0w7Ozs7O047Ozs7OworMEFDQztHVUpBUkFUSSBWT1dFTCBTSUdOIEFVO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQUNEO0dVSkFSQVRJIFNJR04gVklSQU1BO01uOzk7TlNNOzs7OztOOzs7OzsKKzBBRDA7R1VKQVJBVEkgT007TG87MDtMOzs7OztOOzs7OzsKKzBBRTA7R1VKQVJBVEkgTEVUVEVSIFZPQ0FMSUMgUlI7TG87MDtMOzs7OztOOzs7OzsKKzBBRTY7R1VKQVJBVEkgRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMEFFNztHVUpBUkFUSSBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzBBRTg7R1VKQVJBVEkgRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswQUU5O0dVSkFSQVRJIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswQUVBO0dVSkFSQVRJIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzBBRUI7R1VKQVJBVEkgRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMEFFQztHVUpBUkFUSSBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzBBRUQ7R1VKQVJBVEkgRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzBBRUU7R1VKQVJBVEkgRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzBBRUY7R1VKQVJBVEkgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMEIwMTtPUklZQSBTSUdOIENBTkRSQUJJTkRVO01uOzA7TlNNOzs7OztOOzs7OzsKKzBCMDI7T1JJWUEgU0lHTiBBTlVTVkFSQTtNYzswO0w7Ozs7O047Ozs7OworMEIwMztPUklZQSBTSUdOIFZJU0FSR0E7TWM7MDtMOzs7OztOOzs7OzsKKzBCMDU7T1JJWUEgTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMDY7T1JJWUEgTEVUVEVSIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjA3O09SSVlBIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjA4O09SSVlBIExFVFRFUiBJSTtMbzswO0w7Ozs7O047Ozs7OworMEIwOTtPUklZQSBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMEIwQTtPUklZQSBMRVRURVIgVVU7TG87MDtMOzs7OztOOzs7OzsKKzBCMEI7T1JJWUEgTEVUVEVSIFZPQ0FMSUMgUjtMbzswO0w7Ozs7O047Ozs7OworMEIwQztPUklZQSBMRVRURVIgVk9DQUxJQyBMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjBGO09SSVlBIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjEwO09SSVlBIExFVFRFUiBBSTtMbzswO0w7Ozs7O047Ozs7OworMEIxMztPUklZQSBMRVRURVIgTztMbzswO0w7Ozs7O047Ozs7OworMEIxNDtPUklZQSBMRVRURVIgQVU7TG87MDtMOzs7OztOOzs7OzsKKzBCMTU7T1JJWUEgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjE2O09SSVlBIExFVFRFUiBLSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMTc7T1JJWUEgTEVUVEVSIEdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjE4O09SSVlBIExFVFRFUiBHSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMTk7T1JJWUEgTEVUVEVSIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMEIxQTtPUklZQSBMRVRURVIgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzBCMUI7T1JJWUEgTEVUVEVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMEIxQztPUklZQSBMRVRURVIgSkE7TG87MDtMOzs7OztOOzs7OzsKKzBCMUQ7T1JJWUEgTEVUVEVSIEpIQTtMbzswO0w7Ozs7O047Ozs7OworMEIxRTtPUklZQSBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjFGO09SSVlBIExFVFRFUiBUVEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMjA7T1JJWUEgTEVUVEVSIFRUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMjE7T1JJWUEgTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMEIyMjtPUklZQSBMRVRURVIgRERIQTtMbzswO0w7Ozs7O047Ozs7OworMEIyMztPUklZQSBMRVRURVIgTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjI0O09SSVlBIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMEIyNTtPUklZQSBMRVRURVIgVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjI2O09SSVlBIExFVFRFUiBEQTtMbzswO0w7Ozs7O047Ozs7OworMEIyNztPUklZQSBMRVRURVIgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjI4O09SSVlBIExFVFRFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMEIyQTtPUklZQSBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMkI7T1JJWUEgTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMEIyQztPUklZQSBMRVRURVIgQkE7TG87MDtMOzs7OztOOzs7OzsKKzBCMkQ7T1JJWUEgTEVUVEVSIEJIQTtMbzswO0w7Ozs7O047Ozs7OworMEIyRTtPUklZQSBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzBCMkY7T1JJWUEgTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjMwO09SSVlBIExFVFRFUiBSQTtMbzswO0w7Ozs7O047Ozs7OworMEIzMjtPUklZQSBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMzM7T1JJWUEgTEVUVEVSIExMQTtMbzswO0w7Ozs7O047Ozs7OworMEIzNjtPUklZQSBMRVRURVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjM3O09SSVlBIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzBCMzg7T1JJWUEgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjM5O09SSVlBIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMEIzQztPUklZQSBTSUdOIE5VS1RBO01uOzc7TlNNOzs7OztOOzs7OzsKKzBCM0Q7T1JJWUEgU0lHTiBBVkFHUkFIQTtMbzswO0w7Ozs7O047Ozs7OworMEIzRTtPUklZQSBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQjNGO09SSVlBIFZPV0VMIFNJR04gSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQjQwO09SSVlBIFZPV0VMIFNJR04gSUk7TWM7MDtMOzs7OztOOzs7OzsKKzBCNDE7T1JJWUEgVk9XRUwgU0lHTiBVO01uOzA7TlNNOzs7OztOOzs7OzsKKzBCNDI7T1JJWUEgVk9XRUwgU0lHTiBVVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQjQzO09SSVlBIFZPV0VMIFNJR04gVk9DQUxJQyBSO01uOzA7TlNNOzs7OztOOzs7OzsKKzBCNDc7T1JJWUEgVk9XRUwgU0lHTiBFO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQjQ4O09SSVlBIFZPV0VMIFNJR04gQUk7TWM7MDtMOzBCNDcgMEI1Njs7OztOOzs7OzsKKzBCNEI7T1JJWUEgVk9XRUwgU0lHTiBPO01jOzA7TDswQjQ3IDBCM0U7Ozs7Tjs7Ozs7CiswQjRDO09SSVlBIFZPV0VMIFNJR04gQVU7TWM7MDtMOzBCNDcgMEI1Nzs7OztOOzs7OzsKKzBCNEQ7T1JJWUEgU0lHTiBWSVJBTUE7TW47OTtOU007Ozs7O047Ozs7OworMEI1NjtPUklZQSBBSSBMRU5HVEggTUFSSztNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQjU3O09SSVlBIEFVIExFTkdUSCBNQVJLO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQjVDO09SSVlBIExFVFRFUiBSUkE7TG87MDtMOzBCMjEgMEIzQzs7OztOOzs7OzsKKzBCNUQ7T1JJWUEgTEVUVEVSIFJIQTtMbzswO0w7MEIyMiAwQjNDOzs7O047Ozs7OworMEI1RjtPUklZQSBMRVRURVIgWVlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjYwO09SSVlBIExFVFRFUiBWT0NBTElDIFJSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjYxO09SSVlBIExFVFRFUiBWT0NBTElDIExMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjY2O09SSVlBIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBCNjc7T1JJWUEgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswQjY4O09SSVlBIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMEI2OTtPUklZQSBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEI2QTtPUklZQSBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswQjZCO09SSVlBIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBCNkM7T1JJWUEgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswQjZEO09SSVlBIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswQjZFO09SSVlBIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswQjZGO09SSVlBIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBCNzA7T1JJWUEgSVNTSEFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CiswQjgyO1RBTUlMIFNJR04gQU5VU1ZBUkE7TW47MDtOU007Ozs7O047Ozs7OworMEI4MztUQU1JTCBTSUdOIFZJU0FSR0E7TWM7MDtMOzs7OztOOzs7OzsKKzBCODU7VEFNSUwgTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzBCODY7VEFNSUwgTEVUVEVSIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjg3O1RBTUlMIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjg4O1RBTUlMIExFVFRFUiBJSTtMbzswO0w7Ozs7O047Ozs7OworMEI4OTtUQU1JTCBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMEI4QTtUQU1JTCBMRVRURVIgVVU7TG87MDtMOzs7OztOOzs7OzsKKzBCOEU7VEFNSUwgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzBCOEY7VEFNSUwgTEVUVEVSIEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjkwO1RBTUlMIExFVFRFUiBBSTtMbzswO0w7Ozs7O047Ozs7OworMEI5MjtUQU1JTCBMRVRURVIgTztMbzswO0w7Ozs7O047Ozs7OworMEI5MztUQU1JTCBMRVRURVIgT087TG87MDtMOzs7OztOOzs7OzsKKzBCOTQ7VEFNSUwgTEVUVEVSIEFVO0xvOzA7TDswQjkyIDBCRDc7Ozs7Tjs7Ozs7CiswQjk1O1RBTUlMIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMEI5OTtUQU1JTCBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjlBO1RBTUlMIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEI5QztUQU1JTCBMRVRURVIgSkE7TG87MDtMOzs7OztOOzs7OzsKKzBCOUU7VEFNSUwgTEVUVEVSIE5ZQTtMbzswO0w7Ozs7O047Ozs7OworMEI5RjtUQU1JTCBMRVRURVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkEzO1RBTUlMIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBCQTQ7VEFNSUwgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkE4O1RBTUlMIExFVFRFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMEJBOTtUQU1JTCBMRVRURVIgTk5OQTtMbzswO0w7Ozs7O047Ozs7OworMEJBQTtUQU1JTCBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzBCQUU7VEFNSUwgTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkFGO1RBTUlMIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMEJCMDtUQU1JTCBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjE7VEFNSUwgTEVUVEVSIFJSQTtMbzswO0w7Ozs7O047Ozs7OworMEJCMjtUQU1JTCBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjM7VEFNSUwgTEVUVEVSIExMQTtMbzswO0w7Ozs7O047Ozs7OworMEJCNDtUQU1JTCBMRVRURVIgTExMQTtMbzswO0w7Ozs7O047Ozs7OworMEJCNTtUQU1JTCBMRVRURVIgVkE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjc7VEFNSUwgTEVUVEVSIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMEJCODtUQU1JTCBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzBCQjk7VEFNSUwgTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkJFO1RBTUlMIFZPV0VMIFNJR04gQUE7TWM7MDtMOzs7OztOOzs7OzsKKzBCQkY7VEFNSUwgVk9XRUwgU0lHTiBJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQkMwO1RBTUlMIFZPV0VMIFNJR04gSUk7TW47MDtOU007Ozs7O047Ozs7OworMEJDMTtUQU1JTCBWT1dFTCBTSUdOIFU7TWM7MDtMOzs7OztOOzs7OzsKKzBCQzI7VEFNSUwgVk9XRUwgU0lHTiBVVTtNYzswO0w7Ozs7O047Ozs7OworMEJDNjtUQU1JTCBWT1dFTCBTSUdOIEU7TWM7MDtMOzs7OztOOzs7OzsKKzBCQzc7VEFNSUwgVk9XRUwgU0lHTiBFRTtNYzswO0w7Ozs7O047Ozs7OworMEJDODtUQU1JTCBWT1dFTCBTSUdOIEFJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQkNBO1RBTUlMIFZPV0VMIFNJR04gTztNYzswO0w7MEJDNiAwQkJFOzs7O047Ozs7OworMEJDQjtUQU1JTCBWT1dFTCBTSUdOIE9PO01jOzA7TDswQkM3IDBCQkU7Ozs7Tjs7Ozs7CiswQkNDO1RBTUlMIFZPV0VMIFNJR04gQVU7TWM7MDtMOzBCQzYgMEJENzs7OztOOzs7OzsKKzBCQ0Q7VEFNSUwgU0lHTiBWSVJBTUE7TW47OTtOU007Ozs7O047Ozs7OworMEJENztUQU1JTCBBVSBMRU5HVEggTUFSSztNYzswO0w7Ozs7O047Ozs7OworMEJFNztUQU1JTCBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzBCRTg7VEFNSUwgRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswQkU5O1RBTUlMIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswQkVBO1RBTUlMIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzBCRUI7VEFNSUwgRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMEJFQztUQU1JTCBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzBCRUQ7VEFNSUwgRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzBCRUU7VEFNSUwgRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzBCRUY7VEFNSUwgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMEJGMDtUQU1JTCBOVU1CRVIgVEVOO05vOzA7TDs7OzsxMDtOOzs7OzsKKzBCRjE7VEFNSUwgTlVNQkVSIE9ORSBIVU5EUkVEO05vOzA7TDs7OzsxMDA7Tjs7Ozs7CiswQkYyO1RBTUlMIE5VTUJFUiBPTkUgVEhPVVNBTkQ7Tm87MDtMOzs7OzEwMDA7Tjs7Ozs7CiswQzAxO1RFTFVHVSBTSUdOIENBTkRSQUJJTkRVO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzAyO1RFTFVHVSBTSUdOIEFOVVNWQVJBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzAzO1RFTFVHVSBTSUdOIFZJU0FSR0E7TWM7MDtMOzs7OztOOzs7OzsKKzBDMDU7VEVMVUdVIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzA2O1RFTFVHVSBMRVRURVIgQUE7TG87MDtMOzs7OztOOzs7OzsKKzBDMDc7VEVMVUdVIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzA4O1RFTFVHVSBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzBDMDk7VEVMVUdVIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzBBO1RFTFVHVSBMRVRURVIgVVU7TG87MDtMOzs7OztOOzs7OzsKKzBDMEI7VEVMVUdVIExFVFRFUiBWT0NBTElDIFI7TG87MDtMOzs7OztOOzs7OzsKKzBDMEM7VEVMVUdVIExFVFRFUiBWT0NBTElDIEw7TG87MDtMOzs7OztOOzs7OzsKKzBDMEU7VEVMVUdVIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzBGO1RFTFVHVSBMRVRURVIgRUU7TG87MDtMOzs7OztOOzs7OzsKKzBDMTA7VEVMVUdVIExFVFRFUiBBSTtMbzswO0w7Ozs7O047Ozs7OworMEMxMjtURUxVR1UgTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzBDMTM7VEVMVUdVIExFVFRFUiBPTztMbzswO0w7Ozs7O047Ozs7OworMEMxNDtURUxVR1UgTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzE1O1RFTFVHVSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzBDMTY7VEVMVUdVIExFVFRFUiBLSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMTc7VEVMVUdVIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMEMxODtURUxVR1UgTEVUVEVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMEMxOTtURUxVR1UgTEVUVEVSIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMEMxQTtURUxVR1UgTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzFCO1RFTFVHVSBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzFDO1RFTFVHVSBMRVRURVIgSkE7TG87MDtMOzs7OztOOzs7OzsKKzBDMUQ7VEVMVUdVIExFVFRFUiBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMUU7VEVMVUdVIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzBDMUY7VEVMVUdVIExFVFRFUiBUVEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMjA7VEVMVUdVIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzIxO1RFTFVHVSBMRVRURVIgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzIyO1RFTFVHVSBMRVRURVIgRERIQTtMbzswO0w7Ozs7O047Ozs7OworMEMyMztURUxVR1UgTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMEMyNDtURUxVR1UgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzI1O1RFTFVHVSBMRVRURVIgVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzI2O1RFTFVHVSBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzBDMjc7VEVMVUdVIExFVFRFUiBESEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMjg7VEVMVUdVIExFVFRFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMEMyQTtURUxVR1UgTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzJCO1RFTFVHVSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzJDO1RFTFVHVSBMRVRURVIgQkE7TG87MDtMOzs7OztOOzs7OzsKKzBDMkQ7VEVMVUdVIExFVFRFUiBCSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMkU7VEVMVUdVIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMEMyRjtURUxVR1UgTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzMwO1RFTFVHVSBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzBDMzE7VEVMVUdVIExFVFRFUiBSUkE7TG87MDtMOzs7OztOOzs7OzsKKzBDMzI7VEVMVUdVIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMEMzMztURUxVR1UgTEVUVEVSIExMQTtMbzswO0w7Ozs7O047Ozs7OworMEMzNTtURUxVR1UgTEVUVEVSIFZBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzM2O1RFTFVHVSBMRVRURVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzM3O1RFTFVHVSBMRVRURVIgU1NBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzM4O1RFTFVHVSBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzBDMzk7VEVMVUdVIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMEMzRTtURUxVR1UgVk9XRUwgU0lHTiBBQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQzNGO1RFTFVHVSBWT1dFTCBTSUdOIEk7TW47MDtOU007Ozs7O047Ozs7OworMEM0MDtURUxVR1UgVk9XRUwgU0lHTiBJSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQzQxO1RFTFVHVSBWT1dFTCBTSUdOIFU7TWM7MDtMOzs7OztOOzs7OzsKKzBDNDI7VEVMVUdVIFZPV0VMIFNJR04gVVU7TWM7MDtMOzs7OztOOzs7OzsKKzBDNDM7VEVMVUdVIFZPV0VMIFNJR04gVk9DQUxJQyBSO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzQ0O1RFTFVHVSBWT1dFTCBTSUdOIFZPQ0FMSUMgUlI7TWM7MDtMOzs7OztOOzs7OzsKKzBDNDY7VEVMVUdVIFZPV0VMIFNJR04gRTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQzQ3O1RFTFVHVSBWT1dFTCBTSUdOIEVFO01uOzA7TlNNOzs7OztOOzs7OzsKKzBDNDg7VEVMVUdVIFZPV0VMIFNJR04gQUk7TW47MDtOU007MEM0NiAwQzU2Ozs7O047Ozs7OworMEM0QTtURUxVR1UgVk9XRUwgU0lHTiBPO01uOzA7TlNNOzs7OztOOzs7OzsKKzBDNEI7VEVMVUdVIFZPV0VMIFNJR04gT087TW47MDtOU007Ozs7O047Ozs7OworMEM0QztURUxVR1UgVk9XRUwgU0lHTiBBVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQzREO1RFTFVHVSBTSUdOIFZJUkFNQTtNbjs5O05TTTs7Ozs7Tjs7Ozs7CiswQzU1O1RFTFVHVSBMRU5HVEggTUFSSztNbjs4NDtOU007Ozs7O047Ozs7OworMEM1NjtURUxVR1UgQUkgTEVOR1RIIE1BUks7TW47OTE7TlNNOzs7OztOOzs7OzsKKzBDNjA7VEVMVUdVIExFVFRFUiBWT0NBTElDIFJSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzYxO1RFTFVHVSBMRVRURVIgVk9DQUxJQyBMTDtMbzswO0w7Ozs7O047Ozs7OworMEM2NjtURUxVR1UgRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMEM2NztURUxVR1UgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswQzY4O1RFTFVHVSBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzBDNjk7VEVMVUdVIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswQzZBO1RFTFVHVSBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswQzZCO1RFTFVHVSBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswQzZDO1RFTFVHVSBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzBDNkQ7VEVMVUdVIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswQzZFO1RFTFVHVSBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMEM2RjtURUxVR1UgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMEM4MjtLQU5OQURBIFNJR04gQU5VU1ZBUkE7TWM7MDtMOzs7OztOOzs7OzsKKzBDODM7S0FOTkFEQSBTSUdOIFZJU0FSR0E7TWM7MDtMOzs7OztOOzs7OzsKKzBDODU7S0FOTkFEQSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMEM4NjtLQU5OQURBIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEM4NztLQU5OQURBIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzg4O0tBTk5BREEgTEVUVEVSIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzg5O0tBTk5BREEgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzBDOEE7S0FOTkFEQSBMRVRURVIgVVU7TG87MDtMOzs7OztOOzs7OzsKKzBDOEI7S0FOTkFEQSBMRVRURVIgVk9DQUxJQyBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzhDO0tBTk5BREEgTEVUVEVSIFZPQ0FMSUMgTDtMbzswO0w7Ozs7O047Ozs7OworMEM4RTtLQU5OQURBIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzhGO0tBTk5BREEgTEVUVEVSIEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzkwO0tBTk5BREEgTEVUVEVSIEFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzkyO0tBTk5BREEgTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzBDOTM7S0FOTkFEQSBMRVRURVIgT087TG87MDtMOzs7OztOOzs7OzsKKzBDOTQ7S0FOTkFEQSBMRVRURVIgQVU7TG87MDtMOzs7OztOOzs7OzsKKzBDOTU7S0FOTkFEQSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzBDOTY7S0FOTkFEQSBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzk3O0tBTk5BREEgTEVUVEVSIEdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzk4O0tBTk5BREEgTEVUVEVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMEM5OTtLQU5OQURBIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzBDOUE7S0FOTkFEQSBMRVRURVIgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzBDOUI7S0FOTkFEQSBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzlDO0tBTk5BREEgTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzlEO0tBTk5BREEgTEVUVEVSIEpIQTtMbzswO0w7Ozs7O047Ozs7OworMEM5RTtLQU5OQURBIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzBDOUY7S0FOTkFEQSBMRVRURVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0EwO0tBTk5BREEgTEVUVEVSIFRUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQTE7S0FOTkFEQSBMRVRURVIgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0EyO0tBTk5BREEgTEVUVEVSIERESEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQTM7S0FOTkFEQSBMRVRURVIgTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0E0O0tBTk5BREEgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0E1O0tBTk5BREEgTEVUVEVSIFRIQTtMbzswO0w7Ozs7O047Ozs7OworMENBNjtLQU5OQURBIExFVFRFUiBEQTtMbzswO0w7Ozs7O047Ozs7OworMENBNztLQU5OQURBIExFVFRFUiBESEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQTg7S0FOTkFEQSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzBDQUE7S0FOTkFEQSBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQUI7S0FOTkFEQSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0FDO0tBTk5BREEgTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0FEO0tBTk5BREEgTEVUVEVSIEJIQTtMbzswO0w7Ozs7O047Ozs7OworMENBRTtLQU5OQURBIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMENBRjtLQU5OQURBIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMENCMDtLQU5OQURBIExFVFRFUiBSQTtMbzswO0w7Ozs7O047Ozs7OworMENCMTtLQU5OQURBIExFVFRFUiBSUkE7TG87MDtMOzs7OztOOzs7OzsKKzBDQjI7S0FOTkFEQSBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQjM7S0FOTkFEQSBMRVRURVIgTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0I1O0tBTk5BREEgTEVUVEVSIFZBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0I2O0tBTk5BREEgTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMENCNztLQU5OQURBIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzBDQjg7S0FOTkFEQSBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzBDQjk7S0FOTkFEQSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQkU7S0FOTkFEQSBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQ0JGO0tBTk5BREEgVk9XRUwgU0lHTiBJO01uOzA7TlNNOzs7OztOOzs7OzsKKzBDQzA7S0FOTkFEQSBWT1dFTCBTSUdOIElJO01jOzA7TDswQ0JGIDBDRDU7Ozs7Tjs7Ozs7CiswQ0MxO0tBTk5BREEgVk9XRUwgU0lHTiBVO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQ0MyO0tBTk5BREEgVk9XRUwgU0lHTiBVVTtNYzswO0w7Ozs7O047Ozs7OworMENDMztLQU5OQURBIFZPV0VMIFNJR04gVk9DQUxJQyBSO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQ0M0O0tBTk5BREEgVk9XRUwgU0lHTiBWT0NBTElDIFJSO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQ0M2O0tBTk5BREEgVk9XRUwgU0lHTiBFO01uOzA7TlNNOzs7OztOOzs7OzsKKzBDQzc7S0FOTkFEQSBWT1dFTCBTSUdOIEVFO01jOzA7TDswQ0M2IDBDRDU7Ozs7Tjs7Ozs7CiswQ0M4O0tBTk5BREEgVk9XRUwgU0lHTiBBSTtNYzswO0w7MENDNiAwQ0Q2Ozs7O047Ozs7OworMENDQTtLQU5OQURBIFZPV0VMIFNJR04gTztNYzswO0w7MENDNiAwQ0MyOzs7O047Ozs7OworMENDQjtLQU5OQURBIFZPV0VMIFNJR04gT087TWM7MDtMOzBDQ0EgMENENTs7OztOOzs7OzsKKzBDQ0M7S0FOTkFEQSBWT1dFTCBTSUdOIEFVO01uOzA7TlNNOzs7OztOOzs7OzsKKzBDQ0Q7S0FOTkFEQSBTSUdOIFZJUkFNQTtNbjs5O05TTTs7Ozs7Tjs7Ozs7CiswQ0Q1O0tBTk5BREEgTEVOR1RIIE1BUks7TWM7MDtMOzs7OztOOzs7OzsKKzBDRDY7S0FOTkFEQSBBSSBMRU5HVEggTUFSSztNYzswO0w7Ozs7O047Ozs7OworMENERTtLQU5OQURBIExFVFRFUiBGQTtMbzswO0w7Ozs7O047Ozs7OworMENFMDtLQU5OQURBIExFVFRFUiBWT0NBTElDIFJSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0UxO0tBTk5BREEgTEVUVEVSIFZPQ0FMSUMgTEw7TG87MDtMOzs7OztOOzs7OzsKKzBDRTY7S0FOTkFEQSBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswQ0U3O0tBTk5BREEgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswQ0U4O0tBTk5BREEgRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswQ0U5O0tBTk5BREEgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzBDRUE7S0FOTkFEQSBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswQ0VCO0tBTk5BREEgRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMENFQztLQU5OQURBIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMENFRDtLQU5OQURBIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswQ0VFO0tBTk5BREEgRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzBDRUY7S0FOTkFEQSBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswRDAyO01BTEFZQUxBTSBTSUdOIEFOVVNWQVJBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRDAzO01BTEFZQUxBTSBTSUdOIFZJU0FSR0E7TWM7MDtMOzs7OztOOzs7OzsKKzBEMDU7TUFMQVlBTEFNIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDA2O01BTEFZQUxBTSBMRVRURVIgQUE7TG87MDtMOzs7OztOOzs7OzsKKzBEMDc7TUFMQVlBTEFNIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDA4O01BTEFZQUxBTSBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzBEMDk7TUFMQVlBTEFNIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDBBO01BTEFZQUxBTSBMRVRURVIgVVU7TG87MDtMOzs7OztOOzs7OzsKKzBEMEI7TUFMQVlBTEFNIExFVFRFUiBWT0NBTElDIFI7TG87MDtMOzs7OztOOzs7OzsKKzBEMEM7TUFMQVlBTEFNIExFVFRFUiBWT0NBTElDIEw7TG87MDtMOzs7OztOOzs7OzsKKzBEMEU7TUFMQVlBTEFNIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDBGO01BTEFZQUxBTSBMRVRURVIgRUU7TG87MDtMOzs7OztOOzs7OzsKKzBEMTA7TUFMQVlBTEFNIExFVFRFUiBBSTtMbzswO0w7Ozs7O047Ozs7OworMEQxMjtNQUxBWUFMQU0gTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzBEMTM7TUFMQVlBTEFNIExFVFRFUiBPTztMbzswO0w7Ozs7O047Ozs7OworMEQxNDtNQUxBWUFMQU0gTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDE1O01BTEFZQUxBTSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzBEMTY7TUFMQVlBTEFNIExFVFRFUiBLSEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMTc7TUFMQVlBTEFNIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMEQxODtNQUxBWUFMQU0gTEVUVEVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMEQxOTtNQUxBWUFMQU0gTEVUVEVSIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMEQxQTtNQUxBWUFMQU0gTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDFCO01BTEFZQUxBTSBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDFDO01BTEFZQUxBTSBMRVRURVIgSkE7TG87MDtMOzs7OztOOzs7OzsKKzBEMUQ7TUFMQVlBTEFNIExFVFRFUiBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMUU7TUFMQVlBTEFNIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzBEMUY7TUFMQVlBTEFNIExFVFRFUiBUVEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMjA7TUFMQVlBTEFNIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDIxO01BTEFZQUxBTSBMRVRURVIgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDIyO01BTEFZQUxBTSBMRVRURVIgRERIQTtMbzswO0w7Ozs7O047Ozs7OworMEQyMztNQUxBWUFMQU0gTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQyNDtNQUxBWUFMQU0gTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDI1O01BTEFZQUxBTSBMRVRURVIgVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDI2O01BTEFZQUxBTSBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzBEMjc7TUFMQVlBTEFNIExFVFRFUiBESEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMjg7TUFMQVlBTEFNIExFVFRFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMEQyQTtNQUxBWUFMQU0gTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDJCO01BTEFZQUxBTSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDJDO01BTEFZQUxBTSBMRVRURVIgQkE7TG87MDtMOzs7OztOOzs7OzsKKzBEMkQ7TUFMQVlBTEFNIExFVFRFUiBCSEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMkU7TUFMQVlBTEFNIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMEQyRjtNQUxBWUFMQU0gTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDMwO01BTEFZQUxBTSBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzBEMzE7TUFMQVlBTEFNIExFVFRFUiBSUkE7TG87MDtMOzs7OztOOzs7OzsKKzBEMzI7TUFMQVlBTEFNIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMEQzMztNQUxBWUFMQU0gTEVUVEVSIExMQTtMbzswO0w7Ozs7O047Ozs7OworMEQzNDtNQUxBWUFMQU0gTEVUVEVSIExMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMzU7TUFMQVlBTEFNIExFVFRFUiBWQTtMbzswO0w7Ozs7O047Ozs7OworMEQzNjtNQUxBWUFMQU0gTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMEQzNztNQUxBWUFMQU0gTEVUVEVSIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMEQzODtNQUxBWUFMQU0gTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDM5O01BTEFZQUxBTSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzBEM0U7TUFMQVlBTEFNIFZPV0VMIFNJR04gQUE7TWM7MDtMOzs7OztOOzs7OzsKKzBEM0Y7TUFMQVlBTEFNIFZPV0VMIFNJR04gSTtNYzswO0w7Ozs7O047Ozs7OworMEQ0MDtNQUxBWUFMQU0gVk9XRUwgU0lHTiBJSTtNYzswO0w7Ozs7O047Ozs7OworMEQ0MTtNQUxBWUFMQU0gVk9XRUwgU0lHTiBVO01uOzA7TlNNOzs7OztOOzs7OzsKKzBENDI7TUFMQVlBTEFNIFZPV0VMIFNJR04gVVU7TW47MDtOU007Ozs7O047Ozs7OworMEQ0MztNQUxBWUFMQU0gVk9XRUwgU0lHTiBWT0NBTElDIFI7TW47MDtOU007Ozs7O047Ozs7OworMEQ0NjtNQUxBWUFMQU0gVk9XRUwgU0lHTiBFO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRDQ3O01BTEFZQUxBTSBWT1dFTCBTSUdOIEVFO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRDQ4O01BTEFZQUxBTSBWT1dFTCBTSUdOIEFJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRDRBO01BTEFZQUxBTSBWT1dFTCBTSUdOIE87TWM7MDtMOzBENDYgMEQzRTs7OztOOzs7OzsKKzBENEI7TUFMQVlBTEFNIFZPV0VMIFNJR04gT087TWM7MDtMOzBENDcgMEQzRTs7OztOOzs7OzsKKzBENEM7TUFMQVlBTEFNIFZPV0VMIFNJR04gQVU7TWM7MDtMOzBENDYgMEQ1Nzs7OztOOzs7OzsKKzBENEQ7TUFMQVlBTEFNIFNJR04gVklSQU1BO01uOzk7TlNNOzs7OztOOzs7OzsKKzBENTc7TUFMQVlBTEFNIEFVIExFTkdUSCBNQVJLO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRDYwO01BTEFZQUxBTSBMRVRURVIgVk9DQUxJQyBSUjtMbzswO0w7Ozs7O047Ozs7OworMEQ2MTtNQUxBWUFMQU0gTEVUVEVSIFZPQ0FMSUMgTEw7TG87MDtMOzs7OztOOzs7OzsKKzBENjY7TUFMQVlBTEFNIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBENjc7TUFMQVlBTEFNIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEQ2ODtNQUxBWUFMQU0gRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswRDY5O01BTEFZQUxBTSBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEQ2QTtNQUxBWUFMQU0gRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEQ2QjtNQUxBWUFMQU0gRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMEQ2QztNQUxBWUFMQU0gRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswRDZEO01BTEFZQUxBTSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEQ2RTtNQUxBWUFMQU0gRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzBENkY7TUFMQVlBTEFNIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBEODI7U0lOSEFMQSBTSUdOIEFOVVNWQVJBWUE7TWM7MDtMOzs7OztOOzs7OzsKKzBEODM7U0lOSEFMQSBTSUdOIFZJU0FSR0FZQTtNYzswO0w7Ozs7O047Ozs7OworMEQ4NTtTSU5IQUxBIExFVFRFUiBBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEODY7U0lOSEFMQSBMRVRURVIgQUFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ4NztTSU5IQUxBIExFVFRFUiBBRVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDg4O1NJTkhBTEEgTEVUVEVSIEFFRVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDg5O1NJTkhBTEEgTEVUVEVSIElZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ4QTtTSU5IQUxBIExFVFRFUiBJSVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDhCO1NJTkhBTEEgTEVUVEVSIFVZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ4QztTSU5IQUxBIExFVFRFUiBVVVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDhEO1NJTkhBTEEgTEVUVEVSIElSVVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDhFO1NJTkhBTEEgTEVUVEVSIElSVVVZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ4RjtTSU5IQUxBIExFVFRFUiBJTFVZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ5MDtTSU5IQUxBIExFVFRFUiBJTFVVWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEOTE7U0lOSEFMQSBMRVRURVIgRVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDkyO1NJTkhBTEEgTEVUVEVSIEVFWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEOTM7U0lOSEFMQSBMRVRURVIgQUlZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ5NDtTSU5IQUxBIExFVFRFUiBPWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEOTU7U0lOSEFMQSBMRVRURVIgT09ZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ5NjtTSU5IQUxBIExFVFRFUiBBVVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDlBO1NJTkhBTEEgTEVUVEVSIEFMUEFQUkFBTkEgS0FZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ5QjtTSU5IQUxBIExFVFRFUiBNQUhBQVBSQUFOQSBLQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDlDO1NJTkhBTEEgTEVUVEVSIEFMUEFQUkFBTkEgR0FZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ5RDtTSU5IQUxBIExFVFRFUiBNQUhBQVBSQUFOQSBHQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDlFO1NJTkhBTEEgTEVUVEVSIEtBTlRBSkEgTkFBU0lLWUFZQTtMbzswO0w7Ozs7O047Ozs7OworMEQ5RjtTSU5IQUxBIExFVFRFUiBTQU5ZQUtBIEdBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQTA7U0lOSEFMQSBMRVRURVIgQUxQQVBSQUFOQSBDQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREExO1NJTkhBTEEgTEVUVEVSIE1BSEFBUFJBQU5BIENBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQTI7U0lOSEFMQSBMRVRURVIgQUxQQVBSQUFOQSBKQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREEzO1NJTkhBTEEgTEVUVEVSIE1BSEFBUFJBQU5BIEpBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQTQ7U0lOSEFMQSBMRVRURVIgVEFBTFVKQSBOQUFTSUtZQVlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREE1O1NJTkhBTEEgTEVUVEVSIFRBQUxVSkEgU0FOWU9PR0EgTkFBS1NJS1lBWUE7TG87MDtMOzs7OztOOzs7OzsKKzBEQTY7U0lOSEFMQSBMRVRURVIgU0FOWUFLQSBKQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREE3O1NJTkhBTEEgTEVUVEVSIEFMUEFQUkFBTkEgVFRBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQTg7U0lOSEFMQSBMRVRURVIgTUFIQUFQUkFBTkEgVFRBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQTk7U0lOSEFMQSBMRVRURVIgQUxQQVBSQUFOQSBEREFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERBQTtTSU5IQUxBIExFVFRFUiBNQUhBQVBSQUFOQSBEREFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERBQjtTSU5IQUxBIExFVFRFUiBNVVVSREhBSkEgTkFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERBQztTSU5IQUxBIExFVFRFUiBTQU5ZQUtBIEREQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREFEO1NJTkhBTEEgTEVUVEVSIEFMUEFQUkFBTkEgVEFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERBRTtTSU5IQUxBIExFVFRFUiBNQUhBQVBSQUFOQSBUQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREFGO1NJTkhBTEEgTEVUVEVSIEFMUEFQUkFBTkEgREFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERCMDtTSU5IQUxBIExFVFRFUiBNQUhBQVBSQUFOQSBEQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREIxO1NJTkhBTEEgTEVUVEVSIERBTlRBSkEgTkFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERCMztTSU5IQUxBIExFVFRFUiBTQU5ZQUtBIERBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQjQ7U0lOSEFMQSBMRVRURVIgQUxQQVBSQUFOQSBQQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREI1O1NJTkhBTEEgTEVUVEVSIE1BSEFBUFJBQU5BIFBBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQjY7U0lOSEFMQSBMRVRURVIgQUxQQVBSQUFOQSBCQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREI3O1NJTkhBTEEgTEVUVEVSIE1BSEFBUFJBQU5BIEJBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQjg7U0lOSEFMQSBMRVRURVIgTUFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERCOTtTSU5IQUxBIExFVFRFUiBBTUJBIEJBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQkE7U0lOSEFMQSBMRVRURVIgWUFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERCQjtTSU5IQUxBIExFVFRFUiBSQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREJEO1NJTkhBTEEgTEVUVEVSIERBTlRBSkEgTEFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERDMDtTSU5IQUxBIExFVFRFUiBWQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREMxO1NJTkhBTEEgTEVUVEVSIFRBQUxVSkEgU0FZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERDMjtTSU5IQUxBIExFVFRFUiBNVVVSREhBSkEgU0FZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERDMztTSU5IQUxBIExFVFRFUiBEQU5UQUpBIFNBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQzQ7U0lOSEFMQSBMRVRURVIgSEFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERDNTtTSU5IQUxBIExFVFRFUiBNVVVSREhBSkEgTEFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERDNjtTSU5IQUxBIExFVFRFUiBGQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRENBO1NJTkhBTEEgU0lHTiBBTC1MQUtVTkE7TW47OTtOU007Ozs7O047Ozs7OworMERDRjtTSU5IQUxBIFZPV0VMIFNJR04gQUVMQS1QSUxMQTtNYzswO0w7Ozs7O047Ozs7OworMEREMDtTSU5IQUxBIFZPV0VMIFNJR04gS0VUVEkgQUVEQS1QSUxMQTtNYzswO0w7Ozs7O047Ozs7OworMEREMTtTSU5IQUxBIFZPV0VMIFNJR04gRElHQSBBRURBLVBJTExBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswREQyO1NJTkhBTEEgVk9XRUwgU0lHTiBLRVRUSSBJUy1QSUxMQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswREQzO1NJTkhBTEEgVk9XRUwgU0lHTiBESUdBIElTLVBJTExBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBERDQ7U0lOSEFMQSBWT1dFTCBTSUdOIEtFVFRJIFBBQS1QSUxMQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswREQ2O1NJTkhBTEEgVk9XRUwgU0lHTiBESUdBIFBBQS1QSUxMQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswREQ4O1NJTkhBTEEgVk9XRUwgU0lHTiBHQUVUVEEtUElMTEE7TWM7MDtMOzs7OztOOzs7OzsKKzBERDk7U0lOSEFMQSBWT1dFTCBTSUdOIEtPTUJVVkE7TWM7MDtMOzs7OztOOzs7OzsKKzBEREE7U0lOSEFMQSBWT1dFTCBTSUdOIERJR0EgS09NQlVWQTtNYzswO0w7MEREOSAwRENBOzs7O047Ozs7OworMEREQjtTSU5IQUxBIFZPV0VMIFNJR04gS09NQlUgREVLQTtNYzswO0w7Ozs7O047Ozs7OworMEREQztTSU5IQUxBIFZPV0VMIFNJR04gS09NQlVWQSBIQUEgQUVMQS1QSUxMQTtNYzswO0w7MEREOSAwRENGOzs7O047Ozs7OworMERERDtTSU5IQUxBIFZPV0VMIFNJR04gS09NQlVWQSBIQUEgRElHQSBBRUxBLVBJTExBO01jOzA7TDswRERDIDBEQ0E7Ozs7Tjs7Ozs7CiswRERFO1NJTkhBTEEgVk9XRUwgU0lHTiBLT01CVVZBIEhBQSBHQVlBTlVLSVRUQTtNYzswO0w7MEREOSAwRERGOzs7O047Ozs7OworMERERjtTSU5IQUxBIFZPV0VMIFNJR04gR0FZQU5VS0lUVEE7TWM7MDtMOzs7OztOOzs7OzsKKzBERjI7U0lOSEFMQSBWT1dFTCBTSUdOIERJR0EgR0FFVFRBLVBJTExBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswREYzO1NJTkhBTEEgVk9XRUwgU0lHTiBESUdBIEdBWUFOVUtJVFRBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswREY0O1NJTkhBTEEgUFVOQ1RVQVRJT04gS1VORERBTElZQTtQbzswO0w7Ozs7O047Ozs7OworMEUwMTtUSEFJIENIQVJBQ1RFUiBLTyBLQUk7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEtPIEtBSTs7OzsKKzBFMDI7VEhBSSBDSEFSQUNURVIgS0hPIEtIQUk7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEtITyBLSEFJOzs7OworMEUwMztUSEFJIENIQVJBQ1RFUiBLSE8gS0hVQVQ7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEtITyBLSFVBVDs7OzsKKzBFMDQ7VEhBSSBDSEFSQUNURVIgS0hPIEtIV0FJO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBLSE8gS0hXQUk7Ozs7CiswRTA1O1RIQUkgQ0hBUkFDVEVSIEtITyBLSE9OO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBLSE8gS0hPTjs7OzsKKzBFMDY7VEhBSSBDSEFSQUNURVIgS0hPIFJBS0hBTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEtITyBSQUtIQU5HOzs7OworMEUwNztUSEFJIENIQVJBQ1RFUiBOR08gTkdVO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBOR08gTkdVOzs7OworMEUwODtUSEFJIENIQVJBQ1RFUiBDSE8gQ0hBTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgQ0hPIENIQU47Ozs7CiswRTA5O1RIQUkgQ0hBUkFDVEVSIENITyBDSElORztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgQ0hPIENISU5HOzs7OworMEUwQTtUSEFJIENIQVJBQ1RFUiBDSE8gQ0hBTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIENITyBDSEFORzs7OzsKKzBFMEI7VEhBSSBDSEFSQUNURVIgU08gU087TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFNPIFNPOzs7OworMEUwQztUSEFJIENIQVJBQ1RFUiBDSE8gQ0hPRTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgQ0hPIENIT0U7Ozs7CiswRTBEO1RIQUkgQ0hBUkFDVEVSIFlPIFlJTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFlPIFlJTkc7Ozs7CiswRTBFO1RIQUkgQ0hBUkFDVEVSIERPIENIQURBO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBETyBDSEFEQTs7OzsKKzBFMEY7VEhBSSBDSEFSQUNURVIgVE8gUEFUQUs7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFRPIFBBVEFLOzs7OworMEUxMDtUSEFJIENIQVJBQ1RFUiBUSE8gVEhBTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgVEhPIFRIQU47Ozs7CiswRTExO1RIQUkgQ0hBUkFDVEVSIFRITyBOQU5HTU9OVEhPO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBUSE8gTkFOR01PTlRITzs7OzsKKzBFMTI7VEhBSSBDSEFSQUNURVIgVEhPIFBIVVRIQU87TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFRITyBQSFVUSEFPOzs7OworMEUxMztUSEFJIENIQVJBQ1RFUiBOTyBORU47TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIE5PIE5FTjs7OzsKKzBFMTQ7VEhBSSBDSEFSQUNURVIgRE8gREVLO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBETyBERUs7Ozs7CiswRTE1O1RIQUkgQ0hBUkFDVEVSIFRPIFRBTztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgVE8gVEFPOzs7OworMEUxNjtUSEFJIENIQVJBQ1RFUiBUSE8gVEhVTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFRITyBUSFVORzs7OzsKKzBFMTc7VEhBSSBDSEFSQUNURVIgVEhPIFRIQUhBTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgVEhPIFRIQUhBTjs7OzsKKzBFMTg7VEhBSSBDSEFSQUNURVIgVEhPIFRIT05HO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBUSE8gVEhPTkc7Ozs7CiswRTE5O1RIQUkgQ0hBUkFDVEVSIE5PIE5VO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBOTyBOVTs7OzsKKzBFMUE7VEhBSSBDSEFSQUNURVIgQk8gQkFJTUFJO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBCTyBCQUlNQUk7Ozs7CiswRTFCO1RIQUkgQ0hBUkFDVEVSIFBPIFBMQTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgUE8gUExBOzs7OworMEUxQztUSEFJIENIQVJBQ1RFUiBQSE8gUEhVTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFBITyBQSFVORzs7OzsKKzBFMUQ7VEhBSSBDSEFSQUNURVIgRk8gRkE7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEZPIEZBOzs7OworMEUxRTtUSEFJIENIQVJBQ1RFUiBQSE8gUEhBTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgUEhPIFBIQU47Ozs7CiswRTFGO1RIQUkgQ0hBUkFDVEVSIEZPIEZBTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgRk8gRkFOOzs7OworMEUyMDtUSEFJIENIQVJBQ1RFUiBQSE8gU0FNUEhBTztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgUEhPIFNBTVBIQU87Ozs7CiswRTIxO1RIQUkgQ0hBUkFDVEVSIE1PIE1BO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBNTyBNQTs7OzsKKzBFMjI7VEhBSSBDSEFSQUNURVIgWU8gWUFLO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBZTyBZQUs7Ozs7CiswRTIzO1RIQUkgQ0hBUkFDVEVSIFJPIFJVQTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgUk8gUlVBOzs7OworMEUyNDtUSEFJIENIQVJBQ1RFUiBSVTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgUlU7Ozs7CiswRTI1O1RIQUkgQ0hBUkFDVEVSIExPIExJTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIExPIExJTkc7Ozs7CiswRTI2O1RIQUkgQ0hBUkFDVEVSIExVO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBMVTs7OzsKKzBFMjc7VEhBSSBDSEFSQUNURVIgV08gV0FFTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgV08gV0FFTjs7OzsKKzBFMjg7VEhBSSBDSEFSQUNURVIgU08gU0FMQTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgU08gU0FMQTs7OzsKKzBFMjk7VEhBSSBDSEFSQUNURVIgU08gUlVTSTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgU08gUlVTSTs7OzsKKzBFMkE7VEhBSSBDSEFSQUNURVIgU08gU1VBO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBTTyBTVUE7Ozs7CiswRTJCO1RIQUkgQ0hBUkFDVEVSIEhPIEhJUDtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgSE8gSElQOzs7OworMEUyQztUSEFJIENIQVJBQ1RFUiBMTyBDSFVMQTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgTE8gQ0hVTEE7Ozs7CiswRTJEO1RIQUkgQ0hBUkFDVEVSIE8gQU5HO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBPIEFORzs7OzsKKzBFMkU7VEhBSSBDSEFSQUNURVIgSE8gTk9LSFVLO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBITyBOT0sgSFVLOzs7OworMEUyRjtUSEFJIENIQVJBQ1RFUiBQQUlZQU5OT0k7TG87MDtMOzs7OztOO1RIQUkgUEFJIFlBTiBOT0k7cGFpeWFuIG5vaTs7OworMEUzMDtUSEFJIENIQVJBQ1RFUiBTQVJBIEE7TG87MDtMOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIEE7Ozs7CiswRTMxO1RIQUkgQ0hBUkFDVEVSIE1BSSBIQU4tQUtBVDtNbjswO05TTTs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gTUFJIEhBTi1BS0FUOzs7OworMEUzMjtUSEFJIENIQVJBQ1RFUiBTQVJBIEFBO0xvOzA7TDs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBBQTs7OzsKKzBFMzM7VEhBSSBDSEFSQUNURVIgU0FSQSBBTTtMbzswO0w7PGNvbXBhdD4gMEU0RCAwRTMyOzs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgQU07Ozs7CiswRTM0O1RIQUkgQ0hBUkFDVEVSIFNBUkEgSTtNbjswO05TTTs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBJOzs7OworMEUzNTtUSEFJIENIQVJBQ1RFUiBTQVJBIElJO01uOzA7TlNNOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIElJOzs7OworMEUzNjtUSEFJIENIQVJBQ1RFUiBTQVJBIFVFO01uOzA7TlNNOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIFVFOzs7OworMEUzNztUSEFJIENIQVJBQ1RFUiBTQVJBIFVFRTtNbjswO05TTTs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBVRUU7c2FyYSB1dWU7OzsKKzBFMzg7VEhBSSBDSEFSQUNURVIgU0FSQSBVO01uOzEwMztOU007Ozs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgVTs7OzsKKzBFMzk7VEhBSSBDSEFSQUNURVIgU0FSQSBVVTtNbjsxMDM7TlNNOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIFVVOzs7OworMEUzQTtUSEFJIENIQVJBQ1RFUiBQSElOVEhVO01uOzk7TlNNOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBQSElOVEhVOzs7OworMEUzRjtUSEFJIENVUlJFTkNZIFNZTUJPTCBCQUhUO1NjOzA7RVQ7Ozs7O047VEhBSSBCQUhUIFNJR047Ozs7CiswRTQwO1RIQUkgQ0hBUkFDVEVSIFNBUkEgRTtMbzswO0w7Ozs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgRTs7OzsKKzBFNDE7VEhBSSBDSEFSQUNURVIgU0FSQSBBRTtMbzswO0w7Ozs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgQUU7Ozs7CiswRTQyO1RIQUkgQ0hBUkFDVEVSIFNBUkEgTztMbzswO0w7Ozs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgTzs7OzsKKzBFNDM7VEhBSSBDSEFSQUNURVIgU0FSQSBBSSBNQUlNVUFOO0xvOzA7TDs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBNQUkgTVVBTjtzYXJhIGFpIG1haSBtdWFuOzs7CiswRTQ0O1RIQUkgQ0hBUkFDVEVSIFNBUkEgQUkgTUFJTUFMQUk7TG87MDtMOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIE1BSSBNQUxBSTtzYXJhIGFpIG1haSBtYWxhaTs7OworMEU0NTtUSEFJIENIQVJBQ1RFUiBMQUtLSEFOR1lBTztMbzswO0w7Ozs7O047VEhBSSBMQUsgS0hBTkcgWUFPO2xha2toYW5nIHlhbzs7OworMEU0NjtUSEFJIENIQVJBQ1RFUiBNQUlZQU1PSztMbTswO0w7Ozs7O047VEhBSSBNQUkgWUFNT0s7bWFpIHlhbW9rOzs7CiswRTQ3O1RIQUkgQ0hBUkFDVEVSIE1BSVRBSUtIVTtNbjswO05TTTs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gTUFJIFRBSSBLSFU7bWFpIHRhaWtodTs7OworMEU0ODtUSEFJIENIQVJBQ1RFUiBNQUkgRUs7TW47MTA3O05TTTs7Ozs7TjtUSEFJIFRPTkUgTUFJIEVLOzs7OworMEU0OTtUSEFJIENIQVJBQ1RFUiBNQUkgVEhPO01uOzEwNztOU007Ozs7O047VEhBSSBUT05FIE1BSSBUSE87Ozs7CiswRTRBO1RIQUkgQ0hBUkFDVEVSIE1BSSBUUkk7TW47MTA3O05TTTs7Ozs7TjtUSEFJIFRPTkUgTUFJIFRSSTs7OzsKKzBFNEI7VEhBSSBDSEFSQUNURVIgTUFJIENIQVRUQVdBO01uOzEwNztOU007Ozs7O047VEhBSSBUT05FIE1BSSBDSEFUVEFXQTs7OzsKKzBFNEM7VEhBSSBDSEFSQUNURVIgVEhBTlRIQUtIQVQ7TW47MDtOU007Ozs7O047VEhBSSBUSEFOVEhBS0hBVDs7OzsKKzBFNEQ7VEhBSSBDSEFSQUNURVIgTklLSEFISVQ7TW47MDtOU007Ozs7O047VEhBSSBOSUtLSEFISVQ7bmlra2hhaGl0Ozs7CiswRTRFO1RIQUkgQ0hBUkFDVEVSIFlBTUFLS0FOO01uOzA7TlNNOzs7OztOO1RIQUkgWUFNQUtLQU47Ozs7CiswRTRGO1RIQUkgQ0hBUkFDVEVSIEZPTkdNQU47UG87MDtMOzs7OztOO1RIQUkgRk9OR01BTjs7OzsKKzBFNTA7VEhBSSBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswRTUxO1RIQUkgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswRTUyO1RIQUkgRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswRTUzO1RIQUkgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzBFNTQ7VEhBSSBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswRTU1O1RIQUkgRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMEU1NjtUSEFJIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMEU1NztUSEFJIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswRTU4O1RIQUkgRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzBFNTk7VEhBSSBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswRTVBO1RIQUkgQ0hBUkFDVEVSIEFOR0tIQU5LSFU7UG87MDtMOzs7OztOO1RIQUkgQU5HS0hBTktIVTs7OzsKKzBFNUI7VEhBSSBDSEFSQUNURVIgS0hPTVVUO1BvOzA7TDs7Ozs7TjtUSEFJIEtIT01VVDs7OzsKKzBFODE7TEFPIExFVFRFUiBLTztMbzswO0w7Ozs7O047Ozs7OworMEU4MjtMQU8gTEVUVEVSIEtITyBTVU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTg0O0xBTyBMRVRURVIgS0hPIFRBTTtMbzswO0w7Ozs7O047Ozs7OworMEU4NztMQU8gTEVUVEVSIE5HTztMbzswO0w7Ozs7O047Ozs7OworMEU4ODtMQU8gTEVUVEVSIENPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRThBO0xBTyBMRVRURVIgU08gVEFNO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRThEO0xBTyBMRVRURVIgTllPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTk0O0xBTyBMRVRURVIgRE87TG87MDtMOzs7OztOOzs7OzsKKzBFOTU7TEFPIExFVFRFUiBUTztMbzswO0w7Ozs7O047Ozs7OworMEU5NjtMQU8gTEVUVEVSIFRITyBTVU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTk3O0xBTyBMRVRURVIgVEhPIFRBTTtMbzswO0w7Ozs7O047Ozs7OworMEU5OTtMQU8gTEVUVEVSIE5PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTlBO0xBTyBMRVRURVIgQk87TG87MDtMOzs7OztOOzs7OzsKKzBFOUI7TEFPIExFVFRFUiBQTztMbzswO0w7Ozs7O047Ozs7OworMEU5QztMQU8gTEVUVEVSIFBITyBTVU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTlEO0xBTyBMRVRURVIgRk8gVEFNO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTlFO0xBTyBMRVRURVIgUEhPIFRBTTtMbzswO0w7Ozs7O047Ozs7OworMEU5RjtMQU8gTEVUVEVSIEZPIFNVTkc7TG87MDtMOzs7OztOOzs7OzsKKzBFQTE7TEFPIExFVFRFUiBNTztMbzswO0w7Ozs7O047Ozs7OworMEVBMjtMQU8gTEVUVEVSIFlPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUEzO0xBTyBMRVRURVIgTE8gTElORztMbzswO0w7Ozs7O047Ozs7OworMEVBNTtMQU8gTEVUVEVSIExPIExPT1Q7TG87MDtMOzs7OztOOzs7OzsKKzBFQTc7TEFPIExFVFRFUiBXTztMbzswO0w7Ozs7O047Ozs7OworMEVBQTtMQU8gTEVUVEVSIFNPIFNVTkc7TG87MDtMOzs7OztOOzs7OzsKKzBFQUI7TEFPIExFVFRFUiBITyBTVU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUFEO0xBTyBMRVRURVIgTztMbzswO0w7Ozs7O047Ozs7OworMEVBRTtMQU8gTEVUVEVSIEhPIFRBTTtMbzswO0w7Ozs7O047Ozs7OworMEVBRjtMQU8gRUxMSVBTSVM7TG87MDtMOzs7OztOOzs7OzsKKzBFQjA7TEFPIFZPV0VMIFNJR04gQTtMbzswO0w7Ozs7O047Ozs7OworMEVCMTtMQU8gVk9XRUwgU0lHTiBNQUkgS0FOO01uOzA7TlNNOzs7OztOOzs7OzsKKzBFQjI7TEFPIFZPV0VMIFNJR04gQUE7TG87MDtMOzs7OztOOzs7OzsKKzBFQjM7TEFPIFZPV0VMIFNJR04gQU07TG87MDtMOzxjb21wYXQ+IDBFQ0QgMEVCMjs7OztOOzs7OzsKKzBFQjQ7TEFPIFZPV0VMIFNJR04gSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRUI1O0xBTyBWT1dFTCBTSUdOIElJO01uOzA7TlNNOzs7OztOOzs7OzsKKzBFQjY7TEFPIFZPV0VMIFNJR04gWTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRUI3O0xBTyBWT1dFTCBTSUdOIFlZO01uOzA7TlNNOzs7OztOOzs7OzsKKzBFQjg7TEFPIFZPV0VMIFNJR04gVTtNbjsxMTg7TlNNOzs7OztOOzs7OzsKKzBFQjk7TEFPIFZPV0VMIFNJR04gVVU7TW47MTE4O05TTTs7Ozs7Tjs7Ozs7CiswRUJCO0xBTyBWT1dFTCBTSUdOIE1BSSBLT047TW47MDtOU007Ozs7O047Ozs7OworMEVCQztMQU8gU0VNSVZPV0VMIFNJR04gTE87TW47MDtOU007Ozs7O047Ozs7OworMEVCRDtMQU8gU0VNSVZPV0VMIFNJR04gTllPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUMwO0xBTyBWT1dFTCBTSUdOIEU7TG87MDtMOzs7OztOOzs7OzsKKzBFQzE7TEFPIFZPV0VMIFNJR04gRUk7TG87MDtMOzs7OztOOzs7OzsKKzBFQzI7TEFPIFZPV0VMIFNJR04gTztMbzswO0w7Ozs7O047Ozs7OworMEVDMztMQU8gVk9XRUwgU0lHTiBBWTtMbzswO0w7Ozs7O047Ozs7OworMEVDNDtMQU8gVk9XRUwgU0lHTiBBSTtMbzswO0w7Ozs7O047Ozs7OworMEVDNjtMQU8gS08gTEE7TG07MDtMOzs7OztOOzs7OzsKKzBFQzg7TEFPIFRPTkUgTUFJIEVLO01uOzEyMjtOU007Ozs7O047Ozs7OworMEVDOTtMQU8gVE9ORSBNQUkgVEhPO01uOzEyMjtOU007Ozs7O047Ozs7OworMEVDQTtMQU8gVE9ORSBNQUkgVEk7TW47MTIyO05TTTs7Ozs7Tjs7Ozs7CiswRUNCO0xBTyBUT05FIE1BSSBDQVRBV0E7TW47MTIyO05TTTs7Ozs7Tjs7Ozs7CiswRUNDO0xBTyBDQU5DRUxMQVRJT04gTUFSSztNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRUNEO0xBTyBOSUdHQUhJVEE7TW47MDtOU007Ozs7O047Ozs7OworMEVEMDtMQU8gRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMEVEMTtMQU8gRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswRUQyO0xBTyBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzBFRDM7TEFPIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswRUQ0O0xBTyBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswRUQ1O0xBTyBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswRUQ2O0xBTyBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzBFRDc7TEFPIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswRUQ4O0xBTyBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMEVEOTtMQU8gRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMEVEQztMQU8gSE8gTk87TG87MDtMOzxjb21wYXQ+IDBFQUIgMEU5OTs7OztOOzs7OzsKKzBFREQ7TEFPIEhPIE1PO0xvOzA7TDs8Y29tcGF0PiAwRUFCIDBFQTE7Ozs7Tjs7Ozs7CiswRjAwO1RJQkVUQU4gU1lMTEFCTEUgT007TG87MDtMOzs7OztOOzs7OzsKKzBGMDE7VElCRVRBTiBNQVJLIEdURVIgWUlHIE1HTyBUUlVOQ0FURUQgQTtTbzswO0w7Ozs7O047O3RlciB5aWsgZ28gYSB0aHVuZzs7OworMEYwMjtUSUJFVEFOIE1BUksgR1RFUiBZSUcgTUdPIC1VTSBSTkFNIEJDQUQgTUE7U287MDtMOzs7OztOOzt0ZXIgeWlrIGdvIHd1bSBuYW0gY2hleSBtYTs7OworMEYwMztUSUJFVEFOIE1BUksgR1RFUiBZSUcgTUdPIC1VTSBHVEVSIFRTSEVHIE1BO1NvOzA7TDs7Ozs7Tjs7dGVyIHlpayBnbyB3dW0gdGVyIHRzZWsgbWE7OzsKKzBGMDQ7VElCRVRBTiBNQVJLIElOSVRJQUwgWUlHIE1HTyBNRFVOIE1BO1BvOzA7TDs7Ozs7TjtUSUJFVEFOIFNJTkdMRSBPUk5BTUVOVDt5aWsgZ28gZHVuIG1hOzs7CiswRjA1O1RJQkVUQU4gTUFSSyBDTE9TSU5HIFlJRyBNR08gU0dBQiBNQTtQbzswO0w7Ozs7O047O3lpayBnbyBrYWIgbWE7OzsKKzBGMDY7VElCRVRBTiBNQVJLIENBUkVUIFlJRyBNR08gUEhVUiBTSEFEIE1BO1BvOzA7TDs7Ozs7Tjs7eWlrIGdvIHB1ciBzaGV5IG1hOzs7CiswRjA3O1RJQkVUQU4gTUFSSyBZSUcgTUdPIFRTSEVHIFNIQUQgTUE7UG87MDtMOzs7OztOOzt5aWsgZ28gdHNlayBzaGV5IG1hOzs7CiswRjA4O1RJQkVUQU4gTUFSSyBTQlJVTCBTSEFEO1BvOzA7TDs7Ozs7TjtUSUJFVEFOIFJHWUFOU0hBRDtkcnVsIHNoZXk7OzsKKzBGMDk7VElCRVRBTiBNQVJLIEJTS1VSIFlJRyBNR087UG87MDtMOzs7OztOOztrdXIgeWlrIGdvOzs7CiswRjBBO1RJQkVUQU4gTUFSSyBCS0EtIFNIT0cgWUlHIE1HTztQbzswO0w7Ozs7O047O2thIHNobyB5aWsgZ287OzsKKzBGMEI7VElCRVRBTiBNQVJLIElOVEVSU1lMTEFCSUMgVFNIRUc7UG87MDtMOzs7OztOO1RJQkVUQU4gVFNFRzt0c2VrOzs7CiswRjBDO1RJQkVUQU4gTUFSSyBERUxJTUlURVIgVFNIRUcgQlNUQVI7UG87MDtMOzxub0JyZWFrPiAwRjBCOzs7O047O3RzZWsgdGFyOzs7CiswRjBEO1RJQkVUQU4gTUFSSyBTSEFEO1BvOzA7TDs7Ozs7TjtUSUJFVEFOIFNIQUQ7c2hleTs7OworMEYwRTtUSUJFVEFOIE1BUksgTllJUyBTSEFEO1BvOzA7TDs7Ozs7TjtUSUJFVEFOIERPVUJMRSBTSEFEO255aSBzaGV5Ozs7CiswRjBGO1RJQkVUQU4gTUFSSyBUU0hFRyBTSEFEO1BvOzA7TDs7Ozs7Tjs7dHNlayBzaGV5Ozs7CiswRjEwO1RJQkVUQU4gTUFSSyBOWUlTIFRTSEVHIFNIQUQ7UG87MDtMOzs7OztOOztueWkgdHNlayBzaGV5Ozs7CiswRjExO1RJQkVUQU4gTUFSSyBSSU4gQ0hFTiBTUFVOR1MgU0hBRDtQbzswO0w7Ozs7O047VElCRVRBTiBSSU5DSEFOUEhVTkdTSEFEO3JpbmNoZW4gcHVuZyBzaGV5Ozs7CiswRjEyO1RJQkVUQU4gTUFSSyBSR1lBIEdSQU0gU0hBRDtQbzswO0w7Ozs7O047O2d5YSB0cmFtIHNoZXk7OzsKKzBGMTM7VElCRVRBTiBNQVJLIENBUkVUIC1EWlVEIFJUQUdTIE1FIExPTkcgQ0FOO1NvOzA7TDs7Ozs7Tjs7ZHp1IHRhIG1lIGxvbmcgY2hlbjs7OworMEYxNDtUSUJFVEFOIE1BUksgR1RFUiBUU0hFRztTbzswO0w7Ozs7O047VElCRVRBTiBDT01NQTt0ZXIgdHNlazs7OworMEYxNTtUSUJFVEFOIExPR09UWVBFIFNJR04gQ0hBRCBSVEFHUztTbzswO0w7Ozs7O047O2NoZSB0YTs7OworMEYxNjtUSUJFVEFOIExPR09UWVBFIFNJR04gTEhBRyBSVEFHUztTbzswO0w7Ozs7O047O2hsYWsgdGE7OzsKKzBGMTc7VElCRVRBTiBBU1RST0xPR0lDQUwgU0lHTiBTR1JBIEdDQU4gLUNIQVIgUlRBR1M7U287MDtMOzs7OztOOzt0cmFjaGVuIGNoYXIgdGE7OzsKKzBGMTg7VElCRVRBTiBBU1RST0xPR0lDQUwgU0lHTiAtS0hZVUQgUEE7TW47MjIwO05TTTs7Ozs7Tjs7a3l1IHBhOzs7CiswRjE5O1RJQkVUQU4gQVNUUk9MT0dJQ0FMIFNJR04gU0RPTkcgVFNIVUdTO01uOzIyMDtOU007Ozs7O047O2RvbmcgdHN1Ozs7CiswRjFBO1RJQkVUQU4gU0lHTiBSREVMIERLQVIgR0NJRztTbzswO0w7Ozs7O047O2Rla2EgY2hpZzs7OworMEYxQjtUSUJFVEFOIFNJR04gUkRFTCBES0FSIEdOWUlTO1NvOzA7TDs7Ozs7Tjs7ZGVrYSBueWk7OzsKKzBGMUM7VElCRVRBTiBTSUdOIFJERUwgREtBUiBHU1VNO1NvOzA7TDs7Ozs7Tjs7ZGVrYSBzdW07OzsKKzBGMUQ7VElCRVRBTiBTSUdOIFJERUwgTkFHIEdDSUc7U287MDtMOzs7OztOOztkZW5hIGNoaWc7OzsKKzBGMUU7VElCRVRBTiBTSUdOIFJERUwgTkFHIEdOWUlTO1NvOzA7TDs7Ozs7Tjs7ZGVuYSBueWk7OzsKKzBGMUY7VElCRVRBTiBTSUdOIFJERUwgREtBUiBSREVMIE5BRztTbzswO0w7Ozs7O047O2Rla2EgZGVuYTs7OworMEYyMDtUSUJFVEFOIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBGMjE7VElCRVRBTiBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzBGMjI7VElCRVRBTiBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzBGMjM7VElCRVRBTiBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEYyNDtUSUJFVEFOIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzBGMjU7VElCRVRBTiBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswRjI2O1RJQkVUQU4gRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswRjI3O1RJQkVUQU4gRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzBGMjg7VElCRVRBTiBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMEYyOTtUSUJFVEFOIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBGMkE7VElCRVRBTiBESUdJVCBIQUxGIE9ORTtObzswO0w7Ozs7O047Ozs7OworMEYyQjtUSUJFVEFOIERJR0lUIEhBTEYgVFdPO05vOzA7TDs7Ozs7Tjs7Ozs7CiswRjJDO1RJQkVUQU4gRElHSVQgSEFMRiBUSFJFRTtObzswO0w7Ozs7O047Ozs7OworMEYyRDtUSUJFVEFOIERJR0lUIEhBTEYgRk9VUjtObzswO0w7Ozs7O047Ozs7OworMEYyRTtUSUJFVEFOIERJR0lUIEhBTEYgRklWRTtObzswO0w7Ozs7O047Ozs7OworMEYyRjtUSUJFVEFOIERJR0lUIEhBTEYgU0lYO05vOzA7TDs7Ozs7Tjs7Ozs7CiswRjMwO1RJQkVUQU4gRElHSVQgSEFMRiBTRVZFTjtObzswO0w7Ozs7O047Ozs7OworMEYzMTtUSUJFVEFOIERJR0lUIEhBTEYgRUlHSFQ7Tm87MDtMOzs7OztOOzs7OzsKKzBGMzI7VElCRVRBTiBESUdJVCBIQUxGIE5JTkU7Tm87MDtMOzs7OztOOzs7OzsKKzBGMzM7VElCRVRBTiBESUdJVCBIQUxGIFpFUk87Tm87MDtMOzs7OztOOzs7OzsKKzBGMzQ7VElCRVRBTiBNQVJLIEJTRFVTIFJUQUdTO1NvOzA7TDs7Ozs7Tjs7ZHUgdGE7OzsKKzBGMzU7VElCRVRBTiBNQVJLIE5HQVMgQlpVTkcgTllJIFpMQTtNbjsyMjA7TlNNOzs7OztOO1RJQkVUQU4gSE9OT1JJRklDIFVOREVSIFJJTkc7bmdlIHp1bmcgbnlpIGRhOzs7CiswRjM2O1RJQkVUQU4gTUFSSyBDQVJFVCAtRFpVRCBSVEFHUyBCWkhJIE1JRyBDQU47U287MDtMOzs7OztOOztkenUgdGEgc2hpIG1pZyBjaGVuOzs7CiswRjM3O1RJQkVUQU4gTUFSSyBOR0FTIEJaVU5HIFNHT1IgUlRBR1M7TW47MjIwO05TTTs7Ozs7TjtUSUJFVEFOIFVOREVSIFJJTkc7bmdlIHp1bmcgZ29yIHRhOzs7CiswRjM4O1RJQkVUQU4gTUFSSyBDSEUgTUdPO1NvOzA7TDs7Ozs7Tjs7Y2hlIGdvOzs7CiswRjM5O1RJQkVUQU4gTUFSSyBUU0EgLVBIUlU7TW47MjE2O05TTTs7Ozs7TjtUSUJFVEFOIExFTklUSU9OIE1BUks7dHNhIHRydTs7OworMEYzQTtUSUJFVEFOIE1BUksgR1VHIFJUQUdTIEdZT047UHM7MDtPTjs7Ozs7Tjs7Z3VnIHRhIHl1bjs7OworMEYzQjtUSUJFVEFOIE1BUksgR1VHIFJUQUdTIEdZQVM7UGU7MDtPTjs7Ozs7Tjs7Z3VnIHRhIHllOzs7CiswRjNDO1RJQkVUQU4gTUFSSyBBTkcgS0hBTkcgR1lPTjtQczswO09OOzs7OztOO1RJQkVUQU4gTEVGVCBCUkFDRTthbmcga2FuZyB5dW47OzsKKzBGM0Q7VElCRVRBTiBNQVJLIEFORyBLSEFORyBHWUFTO1BlOzA7T047Ozs7O047VElCRVRBTiBSSUdIVCBCUkFDRTthbmcga2FuZyB5ZTs7OworMEYzRTtUSUJFVEFOIFNJR04gWUFSIFRTSEVTO01jOzA7TDs7Ozs7Tjs7eWFyIHRzZTs7OworMEYzRjtUSUJFVEFOIFNJR04gTUFSIFRTSEVTO01jOzA7TDs7Ozs7Tjs7bWFyIHRzZTs7OworMEY0MDtUSUJFVEFOIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMEY0MTtUSUJFVEFOIExFVFRFUiBLSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNDI7VElCRVRBTiBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNDM7VElCRVRBTiBMRVRURVIgR0hBO0xvOzA7TDswRjQyIDBGQjc7Ozs7Tjs7Ozs7CiswRjQ0O1RJQkVUQU4gTEVUVEVSIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMEY0NTtUSUJFVEFOIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEY0NjtUSUJFVEFOIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNDc7VElCRVRBTiBMRVRURVIgSkE7TG87MDtMOzs7OztOOzs7OzsKKzBGNDk7VElCRVRBTiBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjRBO1RJQkVUQU4gTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047VElCRVRBTiBMRVRURVIgUkVWRVJTRUQgVEE7Ozs7CiswRjRCO1RJQkVUQU4gTEVUVEVSIFRUSEE7TG87MDtMOzs7OztOO1RJQkVUQU4gTEVUVEVSIFJFVkVSU0VEIFRIQTs7OzsKKzBGNEM7VElCRVRBTiBMRVRURVIgRERBO0xvOzA7TDs7Ozs7TjtUSUJFVEFOIExFVFRFUiBSRVZFUlNFRCBEQTs7OzsKKzBGNEQ7VElCRVRBTiBMRVRURVIgRERIQTtMbzswO0w7MEY0QyAwRkI3Ozs7O047Ozs7OworMEY0RTtUSUJFVEFOIExFVFRFUiBOTkE7TG87MDtMOzs7OztOO1RJQkVUQU4gTEVUVEVSIFJFVkVSU0VEIE5BOzs7OworMEY0RjtUSUJFVEFOIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMEY1MDtUSUJFVEFOIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNTE7VElCRVRBTiBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzBGNTI7VElCRVRBTiBMRVRURVIgREhBO0xvOzA7TDswRjUxIDBGQjc7Ozs7Tjs7Ozs7CiswRjUzO1RJQkVUQU4gTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjU0O1RJQkVUQU4gTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjU1O1RJQkVUQU4gTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMEY1NjtUSUJFVEFOIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMEY1NztUSUJFVEFOIExFVFRFUiBCSEE7TG87MDtMOzBGNTYgMEZCNzs7OztOOzs7OzsKKzBGNTg7VElCRVRBTiBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzBGNTk7VElCRVRBTiBMRVRURVIgVFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjVBO1RJQkVUQU4gTEVUVEVSIFRTSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNUI7VElCRVRBTiBMRVRURVIgRFpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjVDO1RJQkVUQU4gTEVUVEVSIERaSEE7TG87MDtMOzBGNUIgMEZCNzs7OztOOzs7OzsKKzBGNUQ7VElCRVRBTiBMRVRURVIgV0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNUU7VElCRVRBTiBMRVRURVIgWkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjVGO1RJQkVUQU4gTEVUVEVSIFpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjYwO1RJQkVUQU4gTEVUVEVSIC1BO0xvOzA7TDs7Ozs7TjtUSUJFVEFOIExFVFRFUiBBQTs7OzsKKzBGNjE7VElCRVRBTiBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBGNjI7VElCRVRBTiBMRVRURVIgUkE7TG87MDtMOzs7OztOOzsqOzs7CiswRjYzO1RJQkVUQU4gTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjY0O1RJQkVUQU4gTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMEY2NTtUSUJFVEFOIExFVFRFUiBTU0E7TG87MDtMOzs7OztOO1RJQkVUQU4gTEVUVEVSIFJFVkVSU0VEIFNIQTs7OzsKKzBGNjY7VElCRVRBTiBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNjc7VElCRVRBTiBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNjg7VElCRVRBTiBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMEY2OTtUSUJFVEFOIExFVFRFUiBLU1NBO0xvOzA7TDswRjQwIDBGQjU7Ozs7Tjs7Ozs7CiswRjZBO1RJQkVUQU4gTEVUVEVSIEZJWEVELUZPUk0gUkE7TG87MDtMOzs7OztOOzsqOzs7CiswRjcxO1RJQkVUQU4gVk9XRUwgU0lHTiBBQTtNbjsxMjk7TlNNOzs7OztOOzs7OzsKKzBGNzI7VElCRVRBTiBWT1dFTCBTSUdOIEk7TW47MTMwO05TTTs7Ozs7Tjs7Ozs7CiswRjczO1RJQkVUQU4gVk9XRUwgU0lHTiBJSTtNbjswO05TTTswRjcxIDBGNzI7Ozs7Tjs7Ozs7CiswRjc0O1RJQkVUQU4gVk9XRUwgU0lHTiBVO01uOzEzMjtOU007Ozs7O047Ozs7OworMEY3NTtUSUJFVEFOIFZPV0VMIFNJR04gVVU7TW47MDtOU007MEY3MSAwRjc0Ozs7O047Ozs7OworMEY3NjtUSUJFVEFOIFZPV0VMIFNJR04gVk9DQUxJQyBSO01uOzA7TlNNOzBGQjIgMEY4MDs7OztOOzs7OzsKKzBGNzc7VElCRVRBTiBWT1dFTCBTSUdOIFZPQ0FMSUMgUlI7TW47MDtOU007PGNvbXBhdD4gMEZCMiAwRjgxOzs7O047Ozs7OworMEY3ODtUSUJFVEFOIFZPV0VMIFNJR04gVk9DQUxJQyBMO01uOzA7TlNNOzBGQjMgMEY4MDs7OztOOzs7OzsKKzBGNzk7VElCRVRBTiBWT1dFTCBTSUdOIFZPQ0FMSUMgTEw7TW47MDtOU007PGNvbXBhdD4gMEZCMyAwRjgxOzs7O047Ozs7OworMEY3QTtUSUJFVEFOIFZPV0VMIFNJR04gRTtNbjsxMzA7TlNNOzs7OztOOzs7OzsKKzBGN0I7VElCRVRBTiBWT1dFTCBTSUdOIEVFO01uOzEzMDtOU007Ozs7O047VElCRVRBTiBWT1dFTCBTSUdOIEFJOzs7OworMEY3QztUSUJFVEFOIFZPV0VMIFNJR04gTztNbjsxMzA7TlNNOzs7OztOOzs7OzsKKzBGN0Q7VElCRVRBTiBWT1dFTCBTSUdOIE9PO01uOzEzMDtOU007Ozs7O047VElCRVRBTiBWT1dFTCBTSUdOIEFVOzs7OworMEY3RTtUSUJFVEFOIFNJR04gUkpFUyBTVSBOR0EgUk87TW47MDtOU007Ozs7O047VElCRVRBTiBBTlVTVkFSQTtqZSBzdSBuZ2Egcm87OzsKKzBGN0Y7VElCRVRBTiBTSUdOIFJOQU0gQkNBRDtNYzswO0w7Ozs7O047VElCRVRBTiBWSVNBUkdBO25hbSBjaGV5Ozs7CiswRjgwO1RJQkVUQU4gVk9XRUwgU0lHTiBSRVZFUlNFRCBJO01uOzEzMDtOU007Ozs7O047VElCRVRBTiBWT1dFTCBTSUdOIFNIT1JUIEk7Ozs7CiswRjgxO1RJQkVUQU4gVk9XRUwgU0lHTiBSRVZFUlNFRCBJSTtNbjswO05TTTswRjcxIDBGODA7Ozs7Tjs7Ozs7CiswRjgyO1RJQkVUQU4gU0lHTiBOWUkgWkxBIE5BQSBEQTtNbjsyMzA7TlNNOzs7OztOO1RJQkVUQU4gQ0FORFJBQklORFUgV0lUSCBPUk5BTUVOVDtueWkgZGEgbmEgZGE7OzsKKzBGODM7VElCRVRBTiBTSUdOIFNOQSBMREFOO01uOzIzMDtOU007Ozs7O047VElCRVRBTiBDQU5EUkFCSU5EVTtuYW4gZGU7OzsKKzBGODQ7VElCRVRBTiBNQVJLIEhBTEFOVEE7TW47OTtOU007Ozs7O047VElCRVRBTiBWSVJBTUE7Ozs7CiswRjg1O1RJQkVUQU4gTUFSSyBQQUxVVEE7UG87MDtMOzs7OztOO1RJQkVUQU4gQ0hVQ0hFTllJR0U7Ozs7CiswRjg2O1RJQkVUQU4gU0lHTiBMQ0kgUlRBR1M7TW47MjMwO05TTTs7Ozs7Tjs7amkgdGE7OzsKKzBGODc7VElCRVRBTiBTSUdOIFlBTkcgUlRBR1M7TW47MjMwO05TTTs7Ozs7Tjs7eWFuZyB0YTs7OworMEY4ODtUSUJFVEFOIFNJR04gTENFIFRTQSBDQU47TG87MDtMOzs7OztOOztjaGUgdHNhIGNoZW47OzsKKzBGODk7VElCRVRBTiBTSUdOIE1DSFUgQ0FOO0xvOzA7TDs7Ozs7Tjs7Y2h1IGNoZW47OzsKKzBGOEE7VElCRVRBTiBTSUdOIEdSVSBDQU4gUkdZSU5HUztMbzswO0w7Ozs7O047O3RydSBjaGVuIGdpbmc7OzsKKzBGOEI7VElCRVRBTiBTSUdOIEdSVSBNRUQgUkdZSU5HUztMbzswO0w7Ozs7O047O3RydSBtZSBnaW5nOzs7CiswRjkwO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBLQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRjkxO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBLSEE7TW47MDtOU007Ozs7O047Ozs7OworMEY5MjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgR0E7TW47MDtOU007Ozs7O047Ozs7OworMEY5MztUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgR0hBO01uOzA7TlNNOzBGOTIgMEZCNzs7OztOOzs7OzsKKzBGOTQ7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIE5HQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRjk1O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBDQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRjk2O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBDSEE7TW47MDtOU007Ozs7O047Ozs7OworMEY5NztUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgSkE7TW47MDtOU007Ozs7O047Ozs7OworMEY5OTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgTllBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGOUE7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFRUQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRjlCO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBUVEhBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGOUM7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEREQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRjlEO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBEREhBO01uOzA7TlNNOzBGOUMgMEZCNzs7OztOOzs7OzsKKzBGOUU7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIE5OQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRjlGO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBUQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkEwO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBUSEE7TW47MDtOU007Ozs7O047Ozs7OworMEZBMTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgREE7TW47MDtOU007Ozs7O047Ozs7OworMEZBMjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgREhBO01uOzA7TlNNOzBGQTEgMEZCNzs7OztOOzs7OzsKKzBGQTM7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIE5BO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGQTQ7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFBBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGQTU7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFBIQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkE2O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBCQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkE3O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBCSEE7TW47MDtOU007MEZBNiAwRkI3Ozs7O047Ozs7OworMEZBODtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgTUE7TW47MDtOU007Ozs7O047Ozs7OworMEZBOTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgVFNBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGQUE7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFRTSEE7TW47MDtOU007Ozs7O047Ozs7OworMEZBQjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgRFpBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGQUM7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERaSEE7TW47MDtOU007MEZBQiAwRkI3Ozs7O047Ozs7OworMEZBRDtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgV0E7TW47MDtOU007Ozs7O047Oyo7OzsKKzBGQUU7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFpIQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkFGO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBaQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkIwO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiAtQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkIxO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBZQTtNbjswO05TTTs7Ozs7Tjs7Kjs7OworMEZCMjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgUkE7TW47MDtOU007Ozs7O047Oyo7OzsKKzBGQjM7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIExBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGQjQ7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFNIQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkI1O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBTU0E7TW47MDtOU007Ozs7O047Ozs7OworMEZCNjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgU0E7TW47MDtOU007Ozs7O047Ozs7OworMEZCNztUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgSEE7TW47MDtOU007Ozs7O047Ozs7OworMEZCODtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkI5O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBLU1NBO01uOzA7TlNNOzBGOTAgMEZCNTs7OztOOzs7OzsKKzBGQkE7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEZJWEVELUZPUk0gV0E7TW47MDtOU007Ozs7O047Oyo7OzsKKzBGQkI7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEZJWEVELUZPUk0gWUE7TW47MDtOU007Ozs7O047Oyo7OzsKKzBGQkM7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEZJWEVELUZPUk0gUkE7TW47MDtOU007Ozs7O047Oyo7OzsKKzBGQkU7VElCRVRBTiBLVSBSVSBLSEE7U287MDtMOzs7OztOOztrdXJ1a2E7OzsKKzBGQkY7VElCRVRBTiBLVSBSVSBLSEEgQlpISSBNSUcgQ0FOO1NvOzA7TDs7Ozs7Tjs7a3VydWthIHNoaSBtaWsgY2hlbjs7OworMEZDMDtUSUJFVEFOIENBTlRJTExBVElPTiBTSUdOIEhFQVZZIEJFQVQ7U287MDtMOzs7OztOOzs7OzsKKzBGQzE7VElCRVRBTiBDQU5USUxMQVRJT04gU0lHTiBMSUdIVCBCRUFUO1NvOzA7TDs7Ozs7Tjs7Ozs7CiswRkMyO1RJQkVUQU4gQ0FOVElMTEFUSU9OIFNJR04gQ0FORyBURS1VO1NvOzA7TDs7Ozs7Tjs7Y2hhbmcgdHl1Ozs7CiswRkMzO1RJQkVUQU4gQ0FOVElMTEFUSU9OIFNJR04gU0JVQiAtQ0hBTDtTbzswO0w7Ozs7O047O2J1YiBjaGV5Ozs7CiswRkM0O1RJQkVUQU4gU1lNQk9MIERSSUwgQlU7U287MDtMOzs7OztOOztkcmlsYnU7OzsKKzBGQzU7VElCRVRBTiBTWU1CT0wgUkRPIFJKRTtTbzswO0w7Ozs7O047O2RvcmplOzs7CiswRkM2O1RJQkVUQU4gU1lNQk9MIFBBRE1BIEdEQU47TW47MjIwO05TTTs7Ozs7Tjs7cGVtYSBkZW47OzsKKzBGQzc7VElCRVRBTiBTWU1CT0wgUkRPIFJKRSBSR1lBIEdSQU07U287MDtMOzs7OztOOztkb3JqZSBneWEgZHJhbTs7OworMEZDODtUSUJFVEFOIFNZTUJPTCBQSFVSIFBBO1NvOzA7TDs7Ozs7Tjs7cGh1cmJhOzs7CiswRkM5O1RJQkVUQU4gU1lNQk9MIE5PUiBCVTtTbzswO0w7Ozs7O047O25vcmJ1Ozs7CiswRkNBO1RJQkVUQU4gU1lNQk9MIE5PUiBCVSBOWUlTIC1LSFlJTDtTbzswO0w7Ozs7O047O25vcmJ1IG55aSBraHlpOzs7CiswRkNCO1RJQkVUQU4gU1lNQk9MIE5PUiBCVSBHU1VNIC1LSFlJTDtTbzswO0w7Ozs7O047O25vcmJ1IHN1bSBraHlpOzs7CiswRkNDO1RJQkVUQU4gU1lNQk9MIE5PUiBCVSBCWkhJIC1LSFlJTDtTbzswO0w7Ozs7O047O25vcmJ1IHNoaSBraHlpOzs7CiswRkNGO1RJQkVUQU4gU0lHTiBSREVMIE5BRyBHU1VNO1NvOzA7TDs7Ozs7Tjs7Ozs7CisxMDAwO01ZQU5NQVIgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDAxO01ZQU5NQVIgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMTAwMjtNWUFOTUFSIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMTAwMztNWUFOTUFSIExFVFRFUiBHSEE7TG87MDtMOzs7OztOOzs7OzsKKzEwMDQ7TVlBTk1BUiBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDA1O01ZQU5NQVIgTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDA2O01ZQU5NQVIgTEVUVEVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMTAwNztNWUFOTUFSIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMTAwODtNWUFOTUFSIExFVFRFUiBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzEwMDk7TVlBTk1BUiBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDBBO01ZQU5NQVIgTEVUVEVSIE5OWUE7TG87MDtMOzs7OztOOzs7OzsKKzEwMEI7TVlBTk1BUiBMRVRURVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDBDO01ZQU5NQVIgTEVUVEVSIFRUSEE7TG87MDtMOzs7OztOOzs7OzsKKzEwMEQ7TVlBTk1BUiBMRVRURVIgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDBFO01ZQU5NQVIgTEVUVEVSIERESEE7TG87MDtMOzs7OztOOzs7OzsKKzEwMEY7TVlBTk1BUiBMRVRURVIgTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDEwO01ZQU5NQVIgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDExO01ZQU5NQVIgTEVUVEVSIFRIQTtMbzswO0w7Ozs7O047Ozs7OworMTAxMjtNWUFOTUFSIExFVFRFUiBEQTtMbzswO0w7Ozs7O047Ozs7OworMTAxMztNWUFOTUFSIExFVFRFUiBESEE7TG87MDtMOzs7OztOOzs7OzsKKzEwMTQ7TVlBTk1BUiBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzEwMTU7TVlBTk1BUiBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzEwMTY7TVlBTk1BUiBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDE3O01ZQU5NQVIgTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDE4O01ZQU5NQVIgTEVUVEVSIEJIQTtMbzswO0w7Ozs7O047Ozs7OworMTAxOTtNWUFOTUFSIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMTAxQTtNWUFOTUFSIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMTAxQjtNWUFOTUFSIExFVFRFUiBSQTtMbzswO0w7Ozs7O047Ozs7OworMTAxQztNWUFOTUFSIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMTAxRDtNWUFOTUFSIExFVFRFUiBXQTtMbzswO0w7Ozs7O047Ozs7OworMTAxRTtNWUFOTUFSIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMTAxRjtNWUFOTUFSIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMTAyMDtNWUFOTUFSIExFVFRFUiBMTEE7TG87MDtMOzs7OztOOzs7OzsKKzEwMjE7TVlBTk1BUiBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMTAyMztNWUFOTUFSIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDI0O01ZQU5NQVIgTEVUVEVSIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDI1O01ZQU5NQVIgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzEwMjY7TVlBTk1BUiBMRVRURVIgVVU7TG87MDtMOzEwMjUgMTAyRTs7OztOOzs7OzsKKzEwMjc7TVlBTk1BUiBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMTAyOTtNWUFOTUFSIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDJBO01ZQU5NQVIgTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDJDO01ZQU5NQVIgVk9XRUwgU0lHTiBBQTtNYzswO0w7Ozs7O047Ozs7OworMTAyRDtNWUFOTUFSIFZPV0VMIFNJR04gSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxMDJFO01ZQU5NQVIgVk9XRUwgU0lHTiBJSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxMDJGO01ZQU5NQVIgVk9XRUwgU0lHTiBVO01uOzA7TlNNOzs7OztOOzs7OzsKKzEwMzA7TVlBTk1BUiBWT1dFTCBTSUdOIFVVO01uOzA7TlNNOzs7OztOOzs7OzsKKzEwMzE7TVlBTk1BUiBWT1dFTCBTSUdOIEU7TWM7MDtMOzs7OztOOzs7OzsKKzEwMzI7TVlBTk1BUiBWT1dFTCBTSUdOIEFJO01uOzA7TlNNOzs7OztOOzs7OzsKKzEwMzY7TVlBTk1BUiBTSUdOIEFOVVNWQVJBO01uOzA7TlNNOzs7OztOOzs7OzsKKzEwMzc7TVlBTk1BUiBTSUdOIERPVCBCRUxPVztNbjs3O05TTTs7Ozs7Tjs7Ozs7CisxMDM4O01ZQU5NQVIgU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CisxMDM5O01ZQU5NQVIgU0lHTiBWSVJBTUE7TW47OTtOU007Ozs7O047Ozs7OworMTA0MDtNWUFOTUFSIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzEwNDE7TVlBTk1BUiBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzEwNDI7TVlBTk1BUiBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzEwNDM7TVlBTk1BUiBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMTA0NDtNWUFOTUFSIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzEwNDU7TVlBTk1BUiBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CisxMDQ2O01ZQU5NQVIgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CisxMDQ3O01ZQU5NQVIgRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzEwNDg7TVlBTk1BUiBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMTA0OTtNWUFOTUFSIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzEwNEE7TVlBTk1BUiBTSUdOIExJVFRMRSBTRUNUSU9OO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxMDRCO01ZQU5NQVIgU0lHTiBTRUNUSU9OO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxMDRDO01ZQU5NQVIgU1lNQk9MIExPQ0FUSVZFO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxMDREO01ZQU5NQVIgU1lNQk9MIENPTVBMRVRFRDtQbzswO0w7Ozs7O047Ozs7OworMTA0RTtNWUFOTUFSIFNZTUJPTCBBRk9SRU1FTlRJT05FRDtQbzswO0w7Ozs7O047Ozs7OworMTA0RjtNWUFOTUFSIFNZTUJPTCBHRU5JVElWRTtQbzswO0w7Ozs7O047Ozs7OworMTA1MDtNWUFOTUFSIExFVFRFUiBTSEE7TG87MDtMOzs7OztOOzs7OzsKKzEwNTE7TVlBTk1BUiBMRVRURVIgU1NBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDUyO01ZQU5NQVIgTEVUVEVSIFZPQ0FMSUMgUjtMbzswO0w7Ozs7O047Ozs7OworMTA1MztNWUFOTUFSIExFVFRFUiBWT0NBTElDIFJSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDU0O01ZQU5NQVIgTEVUVEVSIFZPQ0FMSUMgTDtMbzswO0w7Ozs7O047Ozs7OworMTA1NTtNWUFOTUFSIExFVFRFUiBWT0NBTElDIExMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDU2O01ZQU5NQVIgVk9XRUwgU0lHTiBWT0NBTElDIFI7TWM7MDtMOzs7OztOOzs7OzsKKzEwNTc7TVlBTk1BUiBWT1dFTCBTSUdOIFZPQ0FMSUMgUlI7TWM7MDtMOzs7OztOOzs7OzsKKzEwNTg7TVlBTk1BUiBWT1dFTCBTSUdOIFZPQ0FMSUMgTDtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxMDU5O01ZQU5NQVIgVk9XRUwgU0lHTiBWT0NBTElDIExMO01uOzA7TlNNOzs7OztOOzs7OzsKKzEwQTA7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBBMTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBCQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBBMjtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBHQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBBMztHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBET047THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBBNDtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBFTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEE1O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFZJTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEE2O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFpFTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEE3O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFRBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEE4O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIElOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQTk7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgS0FOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQUE7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgTEFTO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQUI7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgTUFOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQUM7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgTkFSO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQUQ7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgT047THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBBRTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBQQVI7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBBRjtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBaSEFSO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQjA7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgUkFFO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQjE7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgU0FOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQjI7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgVEFSO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQjM7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgVU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBCNDtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBQSEFSO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQjU7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgS0hBUjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEI2O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEdIQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBCNztHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBRQVI7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBCODtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBTSElOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQjk7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgQ0hJTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEJBO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIENBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEJCO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEpJTDtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEJDO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIENJTDtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEJEO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIENIQVI7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBCRTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBYQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBCRjtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBKSEFOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQzA7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgSEFFO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQzE7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgSEU7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBDMjtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBISUU7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBDMztHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBXRTtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEM0O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEhBUjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEM1O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEhPRTtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEQwO0dFT1JHSUFOIExFVFRFUiBBTjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEFOOzs7OworMTBEMTtHRU9SR0lBTiBMRVRURVIgQkFOO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgQkFOOzs7OworMTBEMjtHRU9SR0lBTiBMRVRURVIgR0FOO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgR0FOOzs7OworMTBEMztHRU9SR0lBTiBMRVRURVIgRE9OO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgRE9OOzs7OworMTBENDtHRU9SR0lBTiBMRVRURVIgRU47TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBFTjs7OzsKKzEwRDU7R0VPUkdJQU4gTEVUVEVSIFZJTjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFZJTjs7OzsKKzEwRDY7R0VPUkdJQU4gTEVUVEVSIFpFTjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFpFTjs7OzsKKzEwRDc7R0VPUkdJQU4gTEVUVEVSIFRBTjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFRBTjs7OzsKKzEwRDg7R0VPUkdJQU4gTEVUVEVSIElOO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgSU47Ozs7CisxMEQ5O0dFT1JHSUFOIExFVFRFUiBLQU47TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBLQU47Ozs7CisxMERBO0dFT1JHSUFOIExFVFRFUiBMQVM7TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBMQVM7Ozs7CisxMERCO0dFT1JHSUFOIExFVFRFUiBNQU47TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBNQU47Ozs7CisxMERDO0dFT1JHSUFOIExFVFRFUiBOQVI7TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBOQVI7Ozs7CisxMEREO0dFT1JHSUFOIExFVFRFUiBPTjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIE9OOzs7OworMTBERTtHRU9SR0lBTiBMRVRURVIgUEFSO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgUEFSOzs7OworMTBERjtHRU9SR0lBTiBMRVRURVIgWkhBUjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFpIQVI7Ozs7CisxMEUwO0dFT1JHSUFOIExFVFRFUiBSQUU7TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBSQUU7Ozs7CisxMEUxO0dFT1JHSUFOIExFVFRFUiBTQU47TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBTQU47Ozs7CisxMEUyO0dFT1JHSUFOIExFVFRFUiBUQVI7TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBUQVI7Ozs7CisxMEUzO0dFT1JHSUFOIExFVFRFUiBVTjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFVOOzs7OworMTBFNDtHRU9SR0lBTiBMRVRURVIgUEhBUjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFBIQVI7Ozs7CisxMEU1O0dFT1JHSUFOIExFVFRFUiBLSEFSO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgS0hBUjs7OzsKKzEwRTY7R0VPUkdJQU4gTEVUVEVSIEdIQU47TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBHSEFOOzs7OworMTBFNztHRU9SR0lBTiBMRVRURVIgUUFSO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgUUFSOzs7OworMTBFODtHRU9SR0lBTiBMRVRURVIgU0hJTjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFNISU47Ozs7CisxMEU5O0dFT1JHSUFOIExFVFRFUiBDSElOO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgQ0hJTjs7OzsKKzEwRUE7R0VPUkdJQU4gTEVUVEVSIENBTjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIENBTjs7OzsKKzEwRUI7R0VPUkdJQU4gTEVUVEVSIEpJTDtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEpJTDs7OzsKKzEwRUM7R0VPUkdJQU4gTEVUVEVSIENJTDtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIENJTDs7OzsKKzEwRUQ7R0VPUkdJQU4gTEVUVEVSIENIQVI7TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBDSEFSOzs7OworMTBFRTtHRU9SR0lBTiBMRVRURVIgWEFOO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgWEFOOzs7OworMTBFRjtHRU9SR0lBTiBMRVRURVIgSkhBTjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEpIQU47Ozs7CisxMEYwO0dFT1JHSUFOIExFVFRFUiBIQUU7TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBIQUU7Ozs7CisxMEYxO0dFT1JHSUFOIExFVFRFUiBIRTtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEhFOzs7OworMTBGMjtHRU9SR0lBTiBMRVRURVIgSElFO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgSElFOzs7OworMTBGMztHRU9SR0lBTiBMRVRURVIgV0U7TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBXRTs7OzsKKzEwRjQ7R0VPUkdJQU4gTEVUVEVSIEhBUjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEhBUjs7OzsKKzEwRjU7R0VPUkdJQU4gTEVUVEVSIEhPRTtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEhPRTs7OzsKKzEwRjY7R0VPUkdJQU4gTEVUVEVSIEZJO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgRkk7Ozs7CisxMEZCO0dFT1JHSUFOIFBBUkFHUkFQSCBTRVBBUkFUT1I7UG87MDtMOzs7OztOOzs7OzsKKzExMDA7SEFOR1VMIENIT1NFT05HIEtJWUVPSztMbzswO0w7Ozs7O047O2cgKjs7OworMTEwMTtIQU5HVUwgQ0hPU0VPTkcgU1NBTkdLSVlFT0s7TG87MDtMOzs7OztOOztnZyAqOzs7CisxMTAyO0hBTkdVTCBDSE9TRU9ORyBOSUVVTjtMbzswO0w7Ozs7O047O24gKjs7OworMTEwMztIQU5HVUwgQ0hPU0VPTkcgVElLRVVUO0xvOzA7TDs7Ozs7Tjs7ZCAqOzs7CisxMTA0O0hBTkdVTCBDSE9TRU9ORyBTU0FOR1RJS0VVVDtMbzswO0w7Ozs7O047O2RkICo7OzsKKzExMDU7SEFOR1VMIENIT1NFT05HIFJJRVVMO0xvOzA7TDs7Ozs7Tjs7ciAqOzs7CisxMTA2O0hBTkdVTCBDSE9TRU9ORyBNSUVVTTtMbzswO0w7Ozs7O047O20gKjs7OworMTEwNztIQU5HVUwgQ0hPU0VPTkcgUElFVVA7TG87MDtMOzs7OztOOztiICo7OzsKKzExMDg7SEFOR1VMIENIT1NFT05HIFNTQU5HUElFVVA7TG87MDtMOzs7OztOOztiYiAqOzs7CisxMTA5O0hBTkdVTCBDSE9TRU9ORyBTSU9TO0xvOzA7TDs7Ozs7Tjs7cyAqOzs7CisxMTBBO0hBTkdVTCBDSE9TRU9ORyBTU0FOR1NJT1M7TG87MDtMOzs7OztOOztzcyAqOzs7CisxMTBCO0hBTkdVTCBDSE9TRU9ORyBJRVVORztMbzswO0w7Ozs7O047Ozs7OworMTEwQztIQU5HVUwgQ0hPU0VPTkcgQ0lFVUM7TG87MDtMOzs7OztOOztqICo7OzsKKzExMEQ7SEFOR1VMIENIT1NFT05HIFNTQU5HQ0lFVUM7TG87MDtMOzs7OztOOztqaiAqOzs7CisxMTBFO0hBTkdVTCBDSE9TRU9ORyBDSElFVUNIO0xvOzA7TDs7Ozs7Tjs7YyAqOzs7CisxMTBGO0hBTkdVTCBDSE9TRU9ORyBLSElFVUtIO0xvOzA7TDs7Ozs7Tjs7ayAqOzs7CisxMTEwO0hBTkdVTCBDSE9TRU9ORyBUSElFVVRIO0xvOzA7TDs7Ozs7Tjs7dCAqOzs7CisxMTExO0hBTkdVTCBDSE9TRU9ORyBQSElFVVBIO0xvOzA7TDs7Ozs7Tjs7cCAqOzs7CisxMTEyO0hBTkdVTCBDSE9TRU9ORyBISUVVSDtMbzswO0w7Ozs7O047O2ggKjs7OworMTExMztIQU5HVUwgQ0hPU0VPTkcgTklFVU4tS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTE0O0hBTkdVTCBDSE9TRU9ORyBTU0FOR05JRVVOO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTE1O0hBTkdVTCBDSE9TRU9ORyBOSUVVTi1USUtFVVQ7TG87MDtMOzs7OztOOzs7OzsKKzExMTY7SEFOR1VMIENIT1NFT05HIE5JRVVOLVBJRVVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTE3O0hBTkdVTCBDSE9TRU9ORyBUSUtFVVQtS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTE4O0hBTkdVTCBDSE9TRU9ORyBSSUVVTC1OSUVVTjtMbzswO0w7Ozs7O047Ozs7OworMTExOTtIQU5HVUwgQ0hPU0VPTkcgU1NBTkdSSUVVTDtMbzswO0w7Ozs7O047Ozs7OworMTExQTtIQU5HVUwgQ0hPU0VPTkcgUklFVUwtSElFVUg7TG87MDtMOzs7OztOOzs7OzsKKzExMUI7SEFOR1VMIENIT1NFT05HIEtBUFlFT1VOUklFVUw7TG87MDtMOzs7OztOOzs7OzsKKzExMUM7SEFOR1VMIENIT1NFT05HIE1JRVVNLVBJRVVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTFEO0hBTkdVTCBDSE9TRU9ORyBLQVBZRU9VTk1JRVVNO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTFFO0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1LSVlFT0s7TG87MDtMOzs7OztOOzs7OzsKKzExMUY7SEFOR1VMIENIT1NFT05HIFBJRVVQLU5JRVVOO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTIwO0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1USUtFVVQ7TG87MDtMOzs7OztOOzs7OzsKKzExMjE7SEFOR1VMIENIT1NFT05HIFBJRVVQLVNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExMjI7SEFOR1VMIENIT1NFT05HIFBJRVVQLVNJT1MtS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTIzO0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1TSU9TLVRJS0VVVDtMbzswO0w7Ozs7O047Ozs7OworMTEyNDtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtU0lPUy1QSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTEyNTtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtU1NBTkdTSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTI2O0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1TSU9TLUNJRVVDO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTI3O0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1DSUVVQztMbzswO0w7Ozs7O047Ozs7OworMTEyODtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtQ0hJRVVDSDtMbzswO0w7Ozs7O047Ozs7OworMTEyOTtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtVEhJRVVUSDtMbzswO0w7Ozs7O047Ozs7OworMTEyQTtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtUEhJRVVQSDtMbzswO0w7Ozs7O047Ozs7OworMTEyQjtIQU5HVUwgQ0hPU0VPTkcgS0FQWUVPVU5QSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTEyQztIQU5HVUwgQ0hPU0VPTkcgS0FQWUVPVU5TU0FOR1BJRVVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTJEO0hBTkdVTCBDSE9TRU9ORyBTSU9TLUtJWUVPSztMbzswO0w7Ozs7O047Ozs7OworMTEyRTtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1OSUVVTjtMbzswO0w7Ozs7O047Ozs7OworMTEyRjtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1USUtFVVQ7TG87MDtMOzs7OztOOzs7OzsKKzExMzA7SEFOR1VMIENIT1NFT05HIFNJT1MtUklFVUw7TG87MDtMOzs7OztOOzs7OzsKKzExMzE7SEFOR1VMIENIT1NFT05HIFNJT1MtTUlFVU07TG87MDtMOzs7OztOOzs7OzsKKzExMzI7SEFOR1VMIENIT1NFT05HIFNJT1MtUElFVVA7TG87MDtMOzs7OztOOzs7OzsKKzExMzM7SEFOR1VMIENIT1NFT05HIFNJT1MtUElFVVAtS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTM0O0hBTkdVTCBDSE9TRU9ORyBTSU9TLVNTQU5HU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTEzNTtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1JRVVORztMbzswO0w7Ozs7O047Ozs7OworMTEzNjtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1DSUVVQztMbzswO0w7Ozs7O047Ozs7OworMTEzNztIQU5HVUwgQ0hPU0VPTkcgU0lPUy1DSElFVUNIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTM4O0hBTkdVTCBDSE9TRU9ORyBTSU9TLUtISUVVS0g7TG87MDtMOzs7OztOOzs7OzsKKzExMzk7SEFOR1VMIENIT1NFT05HIFNJT1MtVEhJRVVUSDtMbzswO0w7Ozs7O047Ozs7OworMTEzQTtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1QSElFVVBIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTNCO0hBTkdVTCBDSE9TRU9ORyBTSU9TLUhJRVVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTNDO0hBTkdVTCBDSE9TRU9ORyBDSElUVUVVTVNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExM0Q7SEFOR1VMIENIT1NFT05HIENISVRVRVVNU1NBTkdTSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTNFO0hBTkdVTCBDSE9TRU9ORyBDRU9OR0NISUVVTVNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExM0Y7SEFOR1VMIENIT1NFT05HIENFT05HQ0hJRVVNU1NBTkdTSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTQwO0hBTkdVTCBDSE9TRU9ORyBQQU5TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTQxO0hBTkdVTCBDSE9TRU9ORyBJRVVORy1LSVlFT0s7TG87MDtMOzs7OztOOzs7OzsKKzExNDI7SEFOR1VMIENIT1NFT05HIElFVU5HLVRJS0VVVDtMbzswO0w7Ozs7O047Ozs7OworMTE0MztIQU5HVUwgQ0hPU0VPTkcgSUVVTkctTUlFVU07TG87MDtMOzs7OztOOzs7OzsKKzExNDQ7SEFOR1VMIENIT1NFT05HIElFVU5HLVBJRVVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTQ1O0hBTkdVTCBDSE9TRU9ORyBJRVVORy1TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTQ2O0hBTkdVTCBDSE9TRU9ORyBJRVVORy1QQU5TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTQ3O0hBTkdVTCBDSE9TRU9ORyBTU0FOR0lFVU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTQ4O0hBTkdVTCBDSE9TRU9ORyBJRVVORy1DSUVVQztMbzswO0w7Ozs7O047Ozs7OworMTE0OTtIQU5HVUwgQ0hPU0VPTkcgSUVVTkctQ0hJRVVDSDtMbzswO0w7Ozs7O047Ozs7OworMTE0QTtIQU5HVUwgQ0hPU0VPTkcgSUVVTkctVEhJRVVUSDtMbzswO0w7Ozs7O047Ozs7OworMTE0QjtIQU5HVUwgQ0hPU0VPTkcgSUVVTkctUEhJRVVQSDtMbzswO0w7Ozs7O047Ozs7OworMTE0QztIQU5HVUwgQ0hPU0VPTkcgWUVTSUVVTkc7TG87MDtMOzs7OztOOzs7OzsKKzExNEQ7SEFOR1VMIENIT1NFT05HIENJRVVDLUlFVU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTRFO0hBTkdVTCBDSE9TRU9ORyBDSElUVUVVTUNJRVVDO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTRGO0hBTkdVTCBDSE9TRU9ORyBDSElUVUVVTVNTQU5HQ0lFVUM7TG87MDtMOzs7OztOOzs7OzsKKzExNTA7SEFOR1VMIENIT1NFT05HIENFT05HQ0hJRVVNQ0lFVUM7TG87MDtMOzs7OztOOzs7OzsKKzExNTE7SEFOR1VMIENIT1NFT05HIENFT05HQ0hJRVVNU1NBTkdDSUVVQztMbzswO0w7Ozs7O047Ozs7OworMTE1MjtIQU5HVUwgQ0hPU0VPTkcgQ0hJRVVDSC1LSElFVUtIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTUzO0hBTkdVTCBDSE9TRU9ORyBDSElFVUNILUhJRVVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTU0O0hBTkdVTCBDSE9TRU9ORyBDSElUVUVVTUNISUVVQ0g7TG87MDtMOzs7OztOOzs7OzsKKzExNTU7SEFOR1VMIENIT1NFT05HIENFT05HQ0hJRVVNQ0hJRVVDSDtMbzswO0w7Ozs7O047Ozs7OworMTE1NjtIQU5HVUwgQ0hPU0VPTkcgUEhJRVVQSC1QSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTE1NztIQU5HVUwgQ0hPU0VPTkcgS0FQWUVPVU5QSElFVVBIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTU4O0hBTkdVTCBDSE9TRU9ORyBTU0FOR0hJRVVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTU5O0hBTkdVTCBDSE9TRU9ORyBZRU9SSU5ISUVVSDtMbzswO0w7Ozs7O047Ozs7OworMTE1RjtIQU5HVUwgQ0hPU0VPTkcgRklMTEVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTYwO0hBTkdVTCBKVU5HU0VPTkcgRklMTEVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTYxO0hBTkdVTCBKVU5HU0VPTkcgQTtMbzswO0w7Ozs7O047Ozs7OworMTE2MjtIQU5HVUwgSlVOR1NFT05HIEFFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTYzO0hBTkdVTCBKVU5HU0VPTkcgWUE7TG87MDtMOzs7OztOOzs7OzsKKzExNjQ7SEFOR1VMIEpVTkdTRU9ORyBZQUU7TG87MDtMOzs7OztOOzs7OzsKKzExNjU7SEFOR1VMIEpVTkdTRU9ORyBFTztMbzswO0w7Ozs7O047Ozs7OworMTE2NjtIQU5HVUwgSlVOR1NFT05HIEU7TG87MDtMOzs7OztOOzs7OzsKKzExNjc7SEFOR1VMIEpVTkdTRU9ORyBZRU87TG87MDtMOzs7OztOOzs7OzsKKzExNjg7SEFOR1VMIEpVTkdTRU9ORyBZRTtMbzswO0w7Ozs7O047Ozs7OworMTE2OTtIQU5HVUwgSlVOR1NFT05HIE87TG87MDtMOzs7OztOOzs7OzsKKzExNkE7SEFOR1VMIEpVTkdTRU9ORyBXQTtMbzswO0w7Ozs7O047Ozs7OworMTE2QjtIQU5HVUwgSlVOR1NFT05HIFdBRTtMbzswO0w7Ozs7O047Ozs7OworMTE2QztIQU5HVUwgSlVOR1NFT05HIE9FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTZEO0hBTkdVTCBKVU5HU0VPTkcgWU87TG87MDtMOzs7OztOOzs7OzsKKzExNkU7SEFOR1VMIEpVTkdTRU9ORyBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTZGO0hBTkdVTCBKVU5HU0VPTkcgV0VPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTcwO0hBTkdVTCBKVU5HU0VPTkcgV0U7TG87MDtMOzs7OztOOzs7OzsKKzExNzE7SEFOR1VMIEpVTkdTRU9ORyBXSTtMbzswO0w7Ozs7O047Ozs7OworMTE3MjtIQU5HVUwgSlVOR1NFT05HIFlVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTczO0hBTkdVTCBKVU5HU0VPTkcgRVU7TG87MDtMOzs7OztOOzs7OzsKKzExNzQ7SEFOR1VMIEpVTkdTRU9ORyBZSTtMbzswO0w7Ozs7O047Ozs7OworMTE3NTtIQU5HVUwgSlVOR1NFT05HIEk7TG87MDtMOzs7OztOOzs7OzsKKzExNzY7SEFOR1VMIEpVTkdTRU9ORyBBLU87TG87MDtMOzs7OztOOzs7OzsKKzExNzc7SEFOR1VMIEpVTkdTRU9ORyBBLVU7TG87MDtMOzs7OztOOzs7OzsKKzExNzg7SEFOR1VMIEpVTkdTRU9ORyBZQS1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTc5O0hBTkdVTCBKVU5HU0VPTkcgWUEtWU87TG87MDtMOzs7OztOOzs7OzsKKzExN0E7SEFOR1VMIEpVTkdTRU9ORyBFTy1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTdCO0hBTkdVTCBKVU5HU0VPTkcgRU8tVTtMbzswO0w7Ozs7O047Ozs7OworMTE3QztIQU5HVUwgSlVOR1NFT05HIEVPLUVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTdEO0hBTkdVTCBKVU5HU0VPTkcgWUVPLU87TG87MDtMOzs7OztOOzs7OzsKKzExN0U7SEFOR1VMIEpVTkdTRU9ORyBZRU8tVTtMbzswO0w7Ozs7O047Ozs7OworMTE3RjtIQU5HVUwgSlVOR1NFT05HIE8tRU87TG87MDtMOzs7OztOOzs7OzsKKzExODA7SEFOR1VMIEpVTkdTRU9ORyBPLUU7TG87MDtMOzs7OztOOzs7OzsKKzExODE7SEFOR1VMIEpVTkdTRU9ORyBPLVlFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTgyO0hBTkdVTCBKVU5HU0VPTkcgTy1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTgzO0hBTkdVTCBKVU5HU0VPTkcgTy1VO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTg0O0hBTkdVTCBKVU5HU0VPTkcgWU8tWUE7TG87MDtMOzs7OztOOzs7OzsKKzExODU7SEFOR1VMIEpVTkdTRU9ORyBZTy1ZQUU7TG87MDtMOzs7OztOOzs7OzsKKzExODY7SEFOR1VMIEpVTkdTRU9ORyBZTy1ZRU87TG87MDtMOzs7OztOOzs7OzsKKzExODc7SEFOR1VMIEpVTkdTRU9ORyBZTy1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTg4O0hBTkdVTCBKVU5HU0VPTkcgWU8tSTtMbzswO0w7Ozs7O047Ozs7OworMTE4OTtIQU5HVUwgSlVOR1NFT05HIFUtQTtMbzswO0w7Ozs7O047Ozs7OworMTE4QTtIQU5HVUwgSlVOR1NFT05HIFUtQUU7TG87MDtMOzs7OztOOzs7OzsKKzExOEI7SEFOR1VMIEpVTkdTRU9ORyBVLUVPLUVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMThDO0hBTkdVTCBKVU5HU0VPTkcgVS1ZRTtMbzswO0w7Ozs7O047Ozs7OworMTE4RDtIQU5HVUwgSlVOR1NFT05HIFUtVTtMbzswO0w7Ozs7O047Ozs7OworMTE4RTtIQU5HVUwgSlVOR1NFT05HIFlVLUE7TG87MDtMOzs7OztOOzs7OzsKKzExOEY7SEFOR1VMIEpVTkdTRU9ORyBZVS1FTztMbzswO0w7Ozs7O047Ozs7OworMTE5MDtIQU5HVUwgSlVOR1NFT05HIFlVLUU7TG87MDtMOzs7OztOOzs7OzsKKzExOTE7SEFOR1VMIEpVTkdTRU9ORyBZVS1ZRU87TG87MDtMOzs7OztOOzs7OzsKKzExOTI7SEFOR1VMIEpVTkdTRU9ORyBZVS1ZRTtMbzswO0w7Ozs7O047Ozs7OworMTE5MztIQU5HVUwgSlVOR1NFT05HIFlVLVU7TG87MDtMOzs7OztOOzs7OzsKKzExOTQ7SEFOR1VMIEpVTkdTRU9ORyBZVS1JO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTk1O0hBTkdVTCBKVU5HU0VPTkcgRVUtVTtMbzswO0w7Ozs7O047Ozs7OworMTE5NjtIQU5HVUwgSlVOR1NFT05HIEVVLUVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTk3O0hBTkdVTCBKVU5HU0VPTkcgWUktVTtMbzswO0w7Ozs7O047Ozs7OworMTE5ODtIQU5HVUwgSlVOR1NFT05HIEktQTtMbzswO0w7Ozs7O047Ozs7OworMTE5OTtIQU5HVUwgSlVOR1NFT05HIEktWUE7TG87MDtMOzs7OztOOzs7OzsKKzExOUE7SEFOR1VMIEpVTkdTRU9ORyBJLU87TG87MDtMOzs7OztOOzs7OzsKKzExOUI7SEFOR1VMIEpVTkdTRU9ORyBJLVU7TG87MDtMOzs7OztOOzs7OzsKKzExOUM7SEFOR1VMIEpVTkdTRU9ORyBJLUVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTlEO0hBTkdVTCBKVU5HU0VPTkcgSS1BUkFFQTtMbzswO0w7Ozs7O047Ozs7OworMTE5RTtIQU5HVUwgSlVOR1NFT05HIEFSQUVBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTlGO0hBTkdVTCBKVU5HU0VPTkcgQVJBRUEtRU87TG87MDtMOzs7OztOOzs7OzsKKzExQTA7SEFOR1VMIEpVTkdTRU9ORyBBUkFFQS1VO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUExO0hBTkdVTCBKVU5HU0VPTkcgQVJBRUEtSTtMbzswO0w7Ozs7O047Ozs7OworMTFBMjtIQU5HVUwgSlVOR1NFT05HIFNTQU5HQVJBRUE7TG87MDtMOzs7OztOOzs7OzsKKzExQTg7SEFOR1VMIEpPTkdTRU9ORyBLSVlFT0s7TG87MDtMOzs7OztOOztnICo7OzsKKzExQTk7SEFOR1VMIEpPTkdTRU9ORyBTU0FOR0tJWUVPSztMbzswO0w7Ozs7O047O2dnICo7OzsKKzExQUE7SEFOR1VMIEpPTkdTRU9ORyBLSVlFT0stU0lPUztMbzswO0w7Ozs7O047O2dzICo7OzsKKzExQUI7SEFOR1VMIEpPTkdTRU9ORyBOSUVVTjtMbzswO0w7Ozs7O047O24gKjs7OworMTFBQztIQU5HVUwgSk9OR1NFT05HIE5JRVVOLUNJRVVDO0xvOzA7TDs7Ozs7Tjs7bmogKjs7OworMTFBRDtIQU5HVUwgSk9OR1NFT05HIE5JRVVOLUhJRVVIO0xvOzA7TDs7Ozs7Tjs7bmggKjs7OworMTFBRTtIQU5HVUwgSk9OR1NFT05HIFRJS0VVVDtMbzswO0w7Ozs7O047O2QgKjs7OworMTFBRjtIQU5HVUwgSk9OR1NFT05HIFJJRVVMO0xvOzA7TDs7Ozs7Tjs7bCAqOzs7CisxMUIwO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7bGcgKjs7OworMTFCMTtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLU1JRVVNO0xvOzA7TDs7Ozs7Tjs7bG0gKjs7OworMTFCMjtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVBJRVVQO0xvOzA7TDs7Ozs7Tjs7bGIgKjs7OworMTFCMztIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVNJT1M7TG87MDtMOzs7OztOOztscyAqOzs7CisxMUI0O0hBTkdVTCBKT05HU0VPTkcgUklFVUwtVEhJRVVUSDtMbzswO0w7Ozs7O047O2x0ICo7OzsKKzExQjU7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1QSElFVVBIO0xvOzA7TDs7Ozs7Tjs7bHAgKjs7OworMTFCNjtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLUhJRVVIO0xvOzA7TDs7Ozs7Tjs7bGggKjs7OworMTFCNztIQU5HVUwgSk9OR1NFT05HIE1JRVVNO0xvOzA7TDs7Ozs7Tjs7bSAqOzs7CisxMUI4O0hBTkdVTCBKT05HU0VPTkcgUElFVVA7TG87MDtMOzs7OztOOztiICo7OzsKKzExQjk7SEFOR1VMIEpPTkdTRU9ORyBQSUVVUC1TSU9TO0xvOzA7TDs7Ozs7Tjs7YnMgKjs7OworMTFCQTtIQU5HVUwgSk9OR1NFT05HIFNJT1M7TG87MDtMOzs7OztOOztzICo7OzsKKzExQkI7SEFOR1VMIEpPTkdTRU9ORyBTU0FOR1NJT1M7TG87MDtMOzs7OztOOztzcyAqOzs7CisxMUJDO0hBTkdVTCBKT05HU0VPTkcgSUVVTkc7TG87MDtMOzs7OztOOztuZyAqOzs7CisxMUJEO0hBTkdVTCBKT05HU0VPTkcgQ0lFVUM7TG87MDtMOzs7OztOOztqICo7OzsKKzExQkU7SEFOR1VMIEpPTkdTRU9ORyBDSElFVUNIO0xvOzA7TDs7Ozs7Tjs7YyAqOzs7CisxMUJGO0hBTkdVTCBKT05HU0VPTkcgS0hJRVVLSDtMbzswO0w7Ozs7O047O2sgKjs7OworMTFDMDtIQU5HVUwgSk9OR1NFT05HIFRISUVVVEg7TG87MDtMOzs7OztOOzt0ICo7OzsKKzExQzE7SEFOR1VMIEpPTkdTRU9ORyBQSElFVVBIO0xvOzA7TDs7Ozs7Tjs7cCAqOzs7CisxMUMyO0hBTkdVTCBKT05HU0VPTkcgSElFVUg7TG87MDtMOzs7OztOOztoICo7OzsKKzExQzM7SEFOR1VMIEpPTkdTRU9ORyBLSVlFT0stUklFVUw7TG87MDtMOzs7OztOOzs7OzsKKzExQzQ7SEFOR1VMIEpPTkdTRU9ORyBLSVlFT0stU0lPUy1LSVlFT0s7TG87MDtMOzs7OztOOzs7OzsKKzExQzU7SEFOR1VMIEpPTkdTRU9ORyBOSUVVTi1LSVlFT0s7TG87MDtMOzs7OztOOzs7OzsKKzExQzY7SEFOR1VMIEpPTkdTRU9ORyBOSUVVTi1USUtFVVQ7TG87MDtMOzs7OztOOzs7OzsKKzExQzc7SEFOR1VMIEpPTkdTRU9ORyBOSUVVTi1TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUM4O0hBTkdVTCBKT05HU0VPTkcgTklFVU4tUEFOU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTFDOTtIQU5HVUwgSk9OR1NFT05HIE5JRVVOLVRISUVVVEg7TG87MDtMOzs7OztOOzs7OzsKKzExQ0E7SEFOR1VMIEpPTkdTRU9ORyBUSUtFVVQtS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUNCO0hBTkdVTCBKT05HU0VPTkcgVElLRVVULVJJRVVMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUNDO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtS0lZRU9LLVNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExQ0Q7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1OSUVVTjtMbzswO0w7Ozs7O047Ozs7OworMTFDRTtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVRJS0VVVDtMbzswO0w7Ozs7O047Ozs7OworMTFDRjtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVRJS0VVVC1ISUVVSDtMbzswO0w7Ozs7O047Ozs7OworMTFEMDtIQU5HVUwgSk9OR1NFT05HIFNTQU5HUklFVUw7TG87MDtMOzs7OztOOzs7OzsKKzExRDE7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1NSUVVTS1LSVlFT0s7TG87MDtMOzs7OztOOzs7OzsKKzExRDI7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1NSUVVTS1TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUQzO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtUElFVVAtU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTFENDtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVBJRVVQLUhJRVVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUQ1O0hBTkdVTCBKT05HU0VPTkcgUklFVUwtS0FQWUVPVU5QSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTFENjtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVNTQU5HU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTFENztIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVBBTlNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExRDg7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1LSElFVUtIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUQ5O0hBTkdVTCBKT05HU0VPTkcgUklFVUwtWUVPUklOSElFVUg7TG87MDtMOzs7OztOOzs7OzsKKzExREE7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1LSVlFT0s7TG87MDtMOzs7OztOOzs7OzsKKzExREI7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1SSUVVTDtMbzswO0w7Ozs7O047Ozs7OworMTFEQztIQU5HVUwgSk9OR1NFT05HIE1JRVVNLVBJRVVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUREO0hBTkdVTCBKT05HU0VPTkcgTUlFVU0tU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTFERTtIQU5HVUwgSk9OR1NFT05HIE1JRVVNLVNTQU5HU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTFERjtIQU5HVUwgSk9OR1NFT05HIE1JRVVNLVBBTlNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExRTA7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1DSElFVUNIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUUxO0hBTkdVTCBKT05HU0VPTkcgTUlFVU0tSElFVUg7TG87MDtMOzs7OztOOzs7OzsKKzExRTI7SEFOR1VMIEpPTkdTRU9ORyBLQVBZRU9VTk1JRVVNO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUUzO0hBTkdVTCBKT05HU0VPTkcgUElFVVAtUklFVUw7TG87MDtMOzs7OztOOzs7OzsKKzExRTQ7SEFOR1VMIEpPTkdTRU9ORyBQSUVVUC1QSElFVVBIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUU1O0hBTkdVTCBKT05HU0VPTkcgUElFVVAtSElFVUg7TG87MDtMOzs7OztOOzs7OzsKKzExRTY7SEFOR1VMIEpPTkdTRU9ORyBLQVBZRU9VTlBJRVVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUU3O0hBTkdVTCBKT05HU0VPTkcgU0lPUy1LSVlFT0s7TG87MDtMOzs7OztOOzs7OzsKKzExRTg7SEFOR1VMIEpPTkdTRU9ORyBTSU9TLVRJS0VVVDtMbzswO0w7Ozs7O047Ozs7OworMTFFOTtIQU5HVUwgSk9OR1NFT05HIFNJT1MtUklFVUw7TG87MDtMOzs7OztOOzs7OzsKKzExRUE7SEFOR1VMIEpPTkdTRU9ORyBTSU9TLVBJRVVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUVCO0hBTkdVTCBKT05HU0VPTkcgUEFOU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTFFQztIQU5HVUwgSk9OR1NFT05HIElFVU5HLUtJWUVPSztMbzswO0w7Ozs7O047Ozs7OworMTFFRDtIQU5HVUwgSk9OR1NFT05HIElFVU5HLVNTQU5HS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUVFO0hBTkdVTCBKT05HU0VPTkcgU1NBTkdJRVVORztMbzswO0w7Ozs7O047Ozs7OworMTFFRjtIQU5HVUwgSk9OR1NFT05HIElFVU5HLUtISUVVS0g7TG87MDtMOzs7OztOOzs7OzsKKzExRjA7SEFOR1VMIEpPTkdTRU9ORyBZRVNJRVVORztMbzswO0w7Ozs7O047Ozs7OworMTFGMTtIQU5HVUwgSk9OR1NFT05HIFlFU0lFVU5HLVNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExRjI7SEFOR1VMIEpPTkdTRU9ORyBZRVNJRVVORy1QQU5TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUYzO0hBTkdVTCBKT05HU0VPTkcgUEhJRVVQSC1QSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTFGNDtIQU5HVUwgSk9OR1NFT05HIEtBUFlFT1VOUEhJRVVQSDtMbzswO0w7Ozs7O047Ozs7OworMTFGNTtIQU5HVUwgSk9OR1NFT05HIEhJRVVILU5JRVVOO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUY2O0hBTkdVTCBKT05HU0VPTkcgSElFVUgtUklFVUw7TG87MDtMOzs7OztOOzs7OzsKKzExRjc7SEFOR1VMIEpPTkdTRU9ORyBISUVVSC1NSUVVTTtMbzswO0w7Ozs7O047Ozs7OworMTFGODtIQU5HVUwgSk9OR1NFT05HIEhJRVVILVBJRVVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUY5O0hBTkdVTCBKT05HU0VPTkcgWUVPUklOSElFVUg7TG87MDtMOzs7OztOOzs7OzsKKzEyMDA7RVRISU9QSUMgU1lMTEFCTEUgSEE7TG87MDtMOzs7OztOOzs7OzsKKzEyMDE7RVRISU9QSUMgU1lMTEFCTEUgSFU7TG87MDtMOzs7OztOOzs7OzsKKzEyMDI7RVRISU9QSUMgU1lMTEFCTEUgSEk7TG87MDtMOzs7OztOOzs7OzsKKzEyMDM7RVRISU9QSUMgU1lMTEFCTEUgSEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjA0O0VUSElPUElDIFNZTExBQkxFIEhFRTtMbzswO0w7Ozs7O047Ozs7OworMTIwNTtFVEhJT1BJQyBTWUxMQUJMRSBIRTtMbzswO0w7Ozs7O047Ozs7OworMTIwNjtFVEhJT1BJQyBTWUxMQUJMRSBITztMbzswO0w7Ozs7O047Ozs7OworMTIwODtFVEhJT1BJQyBTWUxMQUJMRSBMQTtMbzswO0w7Ozs7O047Ozs7OworMTIwOTtFVEhJT1BJQyBTWUxMQUJMRSBMVTtMbzswO0w7Ozs7O047Ozs7OworMTIwQTtFVEhJT1BJQyBTWUxMQUJMRSBMSTtMbzswO0w7Ozs7O047Ozs7OworMTIwQjtFVEhJT1BJQyBTWUxMQUJMRSBMQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyMEM7RVRISU9QSUMgU1lMTEFCTEUgTEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjBEO0VUSElPUElDIFNZTExBQkxFIExFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjBFO0VUSElPUElDIFNZTExBQkxFIExPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjBGO0VUSElPUElDIFNZTExBQkxFIExXQTtMbzswO0w7Ozs7O047Ozs7OworMTIxMDtFVEhJT1BJQyBTWUxMQUJMRSBISEE7TG87MDtMOzs7OztOOzs7OzsKKzEyMTE7RVRISU9QSUMgU1lMTEFCTEUgSEhVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjEyO0VUSElPUElDIFNZTExBQkxFIEhISTtMbzswO0w7Ozs7O047Ozs7OworMTIxMztFVEhJT1BJQyBTWUxMQUJMRSBISEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjE0O0VUSElPUElDIFNZTExBQkxFIEhIRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyMTU7RVRISU9QSUMgU1lMTEFCTEUgSEhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjE2O0VUSElPUElDIFNZTExBQkxFIEhITztMbzswO0w7Ozs7O047Ozs7OworMTIxNztFVEhJT1BJQyBTWUxMQUJMRSBISFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjE4O0VUSElPUElDIFNZTExBQkxFIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjE5O0VUSElPUElDIFNZTExBQkxFIE1VO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjFBO0VUSElPUElDIFNZTExBQkxFIE1JO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjFCO0VUSElPUElDIFNZTExBQkxFIE1BQTtMbzswO0w7Ozs7O047Ozs7OworMTIxQztFVEhJT1BJQyBTWUxMQUJMRSBNRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyMUQ7RVRISU9QSUMgU1lMTEFCTEUgTUU7TG87MDtMOzs7OztOOzs7OzsKKzEyMUU7RVRISU9QSUMgU1lMTEFCTEUgTU87TG87MDtMOzs7OztOOzs7OzsKKzEyMUY7RVRISU9QSUMgU1lMTEFCTEUgTVdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjIwO0VUSElPUElDIFNZTExBQkxFIFNaQTtMbzswO0w7Ozs7O047Ozs7OworMTIyMTtFVEhJT1BJQyBTWUxMQUJMRSBTWlU7TG87MDtMOzs7OztOOzs7OzsKKzEyMjI7RVRISU9QSUMgU1lMTEFCTEUgU1pJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjIzO0VUSElPUElDIFNZTExBQkxFIFNaQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyMjQ7RVRISU9QSUMgU1lMTEFCTEUgU1pFRTtMbzswO0w7Ozs7O047Ozs7OworMTIyNTtFVEhJT1BJQyBTWUxMQUJMRSBTWkU7TG87MDtMOzs7OztOOzs7OzsKKzEyMjY7RVRISU9QSUMgU1lMTEFCTEUgU1pPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjI3O0VUSElPUElDIFNZTExBQkxFIFNaV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyMjg7RVRISU9QSUMgU1lMTEFCTEUgUkE7TG87MDtMOzs7OztOOzs7OzsKKzEyMjk7RVRISU9QSUMgU1lMTEFCTEUgUlU7TG87MDtMOzs7OztOOzs7OzsKKzEyMkE7RVRISU9QSUMgU1lMTEFCTEUgUkk7TG87MDtMOzs7OztOOzs7OzsKKzEyMkI7RVRISU9QSUMgU1lMTEFCTEUgUkFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjJDO0VUSElPUElDIFNZTExBQkxFIFJFRTtMbzswO0w7Ozs7O047Ozs7OworMTIyRDtFVEhJT1BJQyBTWUxMQUJMRSBSRTtMbzswO0w7Ozs7O047Ozs7OworMTIyRTtFVEhJT1BJQyBTWUxMQUJMRSBSTztMbzswO0w7Ozs7O047Ozs7OworMTIyRjtFVEhJT1BJQyBTWUxMQUJMRSBSV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyMzA7RVRISU9QSUMgU1lMTEFCTEUgU0E7TG87MDtMOzs7OztOOzs7OzsKKzEyMzE7RVRISU9QSUMgU1lMTEFCTEUgU1U7TG87MDtMOzs7OztOOzs7OzsKKzEyMzI7RVRISU9QSUMgU1lMTEFCTEUgU0k7TG87MDtMOzs7OztOOzs7OzsKKzEyMzM7RVRISU9QSUMgU1lMTEFCTEUgU0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjM0O0VUSElPUElDIFNZTExBQkxFIFNFRTtMbzswO0w7Ozs7O047Ozs7OworMTIzNTtFVEhJT1BJQyBTWUxMQUJMRSBTRTtMbzswO0w7Ozs7O047Ozs7OworMTIzNjtFVEhJT1BJQyBTWUxMQUJMRSBTTztMbzswO0w7Ozs7O047Ozs7OworMTIzNztFVEhJT1BJQyBTWUxMQUJMRSBTV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyMzg7RVRISU9QSUMgU1lMTEFCTEUgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjM5O0VUSElPUElDIFNZTExBQkxFIFNIVTtMbzswO0w7Ozs7O047Ozs7OworMTIzQTtFVEhJT1BJQyBTWUxMQUJMRSBTSEk7TG87MDtMOzs7OztOOzs7OzsKKzEyM0I7RVRISU9QSUMgU1lMTEFCTEUgU0hBQTtMbzswO0w7Ozs7O047Ozs7OworMTIzQztFVEhJT1BJQyBTWUxMQUJMRSBTSEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjNEO0VUSElPUElDIFNZTExBQkxFIFNIRTtMbzswO0w7Ozs7O047Ozs7OworMTIzRTtFVEhJT1BJQyBTWUxMQUJMRSBTSE87TG87MDtMOzs7OztOOzs7OzsKKzEyM0Y7RVRISU9QSUMgU1lMTEFCTEUgU0hXQTtMbzswO0w7Ozs7O047Ozs7OworMTI0MDtFVEhJT1BJQyBTWUxMQUJMRSBRQTtMbzswO0w7Ozs7O047Ozs7OworMTI0MTtFVEhJT1BJQyBTWUxMQUJMRSBRVTtMbzswO0w7Ozs7O047Ozs7OworMTI0MjtFVEhJT1BJQyBTWUxMQUJMRSBRSTtMbzswO0w7Ozs7O047Ozs7OworMTI0MztFVEhJT1BJQyBTWUxMQUJMRSBRQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyNDQ7RVRISU9QSUMgU1lMTEFCTEUgUUVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjQ1O0VUSElPUElDIFNZTExBQkxFIFFFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjQ2O0VUSElPUElDIFNZTExBQkxFIFFPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjQ4O0VUSElPUElDIFNZTExBQkxFIFFXQTtMbzswO0w7Ozs7O047Ozs7OworMTI0QTtFVEhJT1BJQyBTWUxMQUJMRSBRV0k7TG87MDtMOzs7OztOOzs7OzsKKzEyNEI7RVRISU9QSUMgU1lMTEFCTEUgUVdBQTtMbzswO0w7Ozs7O047Ozs7OworMTI0QztFVEhJT1BJQyBTWUxMQUJMRSBRV0VFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjREO0VUSElPUElDIFNZTExBQkxFIFFXRTtMbzswO0w7Ozs7O047Ozs7OworMTI1MDtFVEhJT1BJQyBTWUxMQUJMRSBRSEE7TG87MDtMOzs7OztOOzs7OzsKKzEyNTE7RVRISU9QSUMgU1lMTEFCTEUgUUhVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjUyO0VUSElPUElDIFNZTExBQkxFIFFISTtMbzswO0w7Ozs7O047Ozs7OworMTI1MztFVEhJT1BJQyBTWUxMQUJMRSBRSEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjU0O0VUSElPUElDIFNZTExBQkxFIFFIRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyNTU7RVRISU9QSUMgU1lMTEFCTEUgUUhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjU2O0VUSElPUElDIFNZTExBQkxFIFFITztMbzswO0w7Ozs7O047Ozs7OworMTI1ODtFVEhJT1BJQyBTWUxMQUJMRSBRSFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjVBO0VUSElPUElDIFNZTExBQkxFIFFIV0k7TG87MDtMOzs7OztOOzs7OzsKKzEyNUI7RVRISU9QSUMgU1lMTEFCTEUgUUhXQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyNUM7RVRISU9QSUMgU1lMTEFCTEUgUUhXRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyNUQ7RVRISU9QSUMgU1lMTEFCTEUgUUhXRTtMbzswO0w7Ozs7O047Ozs7OworMTI2MDtFVEhJT1BJQyBTWUxMQUJMRSBCQTtMbzswO0w7Ozs7O047Ozs7OworMTI2MTtFVEhJT1BJQyBTWUxMQUJMRSBCVTtMbzswO0w7Ozs7O047Ozs7OworMTI2MjtFVEhJT1BJQyBTWUxMQUJMRSBCSTtMbzswO0w7Ozs7O047Ozs7OworMTI2MztFVEhJT1BJQyBTWUxMQUJMRSBCQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyNjQ7RVRISU9QSUMgU1lMTEFCTEUgQkVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjY1O0VUSElPUElDIFNZTExBQkxFIEJFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjY2O0VUSElPUElDIFNZTExBQkxFIEJPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjY3O0VUSElPUElDIFNZTExBQkxFIEJXQTtMbzswO0w7Ozs7O047Ozs7OworMTI2ODtFVEhJT1BJQyBTWUxMQUJMRSBWQTtMbzswO0w7Ozs7O047Ozs7OworMTI2OTtFVEhJT1BJQyBTWUxMQUJMRSBWVTtMbzswO0w7Ozs7O047Ozs7OworMTI2QTtFVEhJT1BJQyBTWUxMQUJMRSBWSTtMbzswO0w7Ozs7O047Ozs7OworMTI2QjtFVEhJT1BJQyBTWUxMQUJMRSBWQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyNkM7RVRISU9QSUMgU1lMTEFCTEUgVkVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjZEO0VUSElPUElDIFNZTExBQkxFIFZFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjZFO0VUSElPUElDIFNZTExBQkxFIFZPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjZGO0VUSElPUElDIFNZTExBQkxFIFZXQTtMbzswO0w7Ozs7O047Ozs7OworMTI3MDtFVEhJT1BJQyBTWUxMQUJMRSBUQTtMbzswO0w7Ozs7O047Ozs7OworMTI3MTtFVEhJT1BJQyBTWUxMQUJMRSBUVTtMbzswO0w7Ozs7O047Ozs7OworMTI3MjtFVEhJT1BJQyBTWUxMQUJMRSBUSTtMbzswO0w7Ozs7O047Ozs7OworMTI3MztFVEhJT1BJQyBTWUxMQUJMRSBUQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyNzQ7RVRISU9QSUMgU1lMTEFCTEUgVEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjc1O0VUSElPUElDIFNZTExBQkxFIFRFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjc2O0VUSElPUElDIFNZTExBQkxFIFRPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjc3O0VUSElPUElDIFNZTExBQkxFIFRXQTtMbzswO0w7Ozs7O047Ozs7OworMTI3ODtFVEhJT1BJQyBTWUxMQUJMRSBDQTtMbzswO0w7Ozs7O047Ozs7OworMTI3OTtFVEhJT1BJQyBTWUxMQUJMRSBDVTtMbzswO0w7Ozs7O047Ozs7OworMTI3QTtFVEhJT1BJQyBTWUxMQUJMRSBDSTtMbzswO0w7Ozs7O047Ozs7OworMTI3QjtFVEhJT1BJQyBTWUxMQUJMRSBDQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyN0M7RVRISU9QSUMgU1lMTEFCTEUgQ0VFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjdEO0VUSElPUElDIFNZTExBQkxFIENFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjdFO0VUSElPUElDIFNZTExBQkxFIENPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjdGO0VUSElPUElDIFNZTExBQkxFIENXQTtMbzswO0w7Ozs7O047Ozs7OworMTI4MDtFVEhJT1BJQyBTWUxMQUJMRSBYQTtMbzswO0w7Ozs7O047Ozs7OworMTI4MTtFVEhJT1BJQyBTWUxMQUJMRSBYVTtMbzswO0w7Ozs7O047Ozs7OworMTI4MjtFVEhJT1BJQyBTWUxMQUJMRSBYSTtMbzswO0w7Ozs7O047Ozs7OworMTI4MztFVEhJT1BJQyBTWUxMQUJMRSBYQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyODQ7RVRISU9QSUMgU1lMTEFCTEUgWEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjg1O0VUSElPUElDIFNZTExBQkxFIFhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjg2O0VUSElPUElDIFNZTExBQkxFIFhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjg4O0VUSElPUElDIFNZTExBQkxFIFhXQTtMbzswO0w7Ozs7O047Ozs7OworMTI4QTtFVEhJT1BJQyBTWUxMQUJMRSBYV0k7TG87MDtMOzs7OztOOzs7OzsKKzEyOEI7RVRISU9QSUMgU1lMTEFCTEUgWFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTI4QztFVEhJT1BJQyBTWUxMQUJMRSBYV0VFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjhEO0VUSElPUElDIFNZTExBQkxFIFhXRTtMbzswO0w7Ozs7O047Ozs7OworMTI5MDtFVEhJT1BJQyBTWUxMQUJMRSBOQTtMbzswO0w7Ozs7O047Ozs7OworMTI5MTtFVEhJT1BJQyBTWUxMQUJMRSBOVTtMbzswO0w7Ozs7O047Ozs7OworMTI5MjtFVEhJT1BJQyBTWUxMQUJMRSBOSTtMbzswO0w7Ozs7O047Ozs7OworMTI5MztFVEhJT1BJQyBTWUxMQUJMRSBOQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyOTQ7RVRISU9QSUMgU1lMTEFCTEUgTkVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjk1O0VUSElPUElDIFNZTExBQkxFIE5FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjk2O0VUSElPUElDIFNZTExBQkxFIE5PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjk3O0VUSElPUElDIFNZTExBQkxFIE5XQTtMbzswO0w7Ozs7O047Ozs7OworMTI5ODtFVEhJT1BJQyBTWUxMQUJMRSBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzEyOTk7RVRISU9QSUMgU1lMTEFCTEUgTllVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjlBO0VUSElPUElDIFNZTExBQkxFIE5ZSTtMbzswO0w7Ozs7O047Ozs7OworMTI5QjtFVEhJT1BJQyBTWUxMQUJMRSBOWUFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjlDO0VUSElPUElDIFNZTExBQkxFIE5ZRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyOUQ7RVRISU9QSUMgU1lMTEFCTEUgTllFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjlFO0VUSElPUElDIFNZTExBQkxFIE5ZTztMbzswO0w7Ozs7O047Ozs7OworMTI5RjtFVEhJT1BJQyBTWUxMQUJMRSBOWVdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkEwO0VUSElPUElDIFNZTExBQkxFIEdMT1RUQUwgQTtMbzswO0w7Ozs7O047Ozs7OworMTJBMTtFVEhJT1BJQyBTWUxMQUJMRSBHTE9UVEFMIFU7TG87MDtMOzs7OztOOzs7OzsKKzEyQTI7RVRISU9QSUMgU1lMTEFCTEUgR0xPVFRBTCBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkEzO0VUSElPUElDIFNZTExBQkxFIEdMT1RUQUwgQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyQTQ7RVRISU9QSUMgU1lMTEFCTEUgR0xPVFRBTCBFRTtMbzswO0w7Ozs7O047Ozs7OworMTJBNTtFVEhJT1BJQyBTWUxMQUJMRSBHTE9UVEFMIEU7TG87MDtMOzs7OztOOzs7OzsKKzEyQTY7RVRISU9QSUMgU1lMTEFCTEUgR0xPVFRBTCBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkE3O0VUSElPUElDIFNZTExBQkxFIEdMT1RUQUwgV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyQTg7RVRISU9QSUMgU1lMTEFCTEUgS0E7TG87MDtMOzs7OztOOzs7OzsKKzEyQTk7RVRISU9QSUMgU1lMTEFCTEUgS1U7TG87MDtMOzs7OztOOzs7OzsKKzEyQUE7RVRISU9QSUMgU1lMTEFCTEUgS0k7TG87MDtMOzs7OztOOzs7OzsKKzEyQUI7RVRISU9QSUMgU1lMTEFCTEUgS0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkFDO0VUSElPUElDIFNZTExBQkxFIEtFRTtMbzswO0w7Ozs7O047Ozs7OworMTJBRDtFVEhJT1BJQyBTWUxMQUJMRSBLRTtMbzswO0w7Ozs7O047Ozs7OworMTJBRTtFVEhJT1BJQyBTWUxMQUJMRSBLTztMbzswO0w7Ozs7O047Ozs7OworMTJCMDtFVEhJT1BJQyBTWUxMQUJMRSBLV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyQjI7RVRISU9QSUMgU1lMTEFCTEUgS1dJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkIzO0VUSElPUElDIFNZTExBQkxFIEtXQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyQjQ7RVRISU9QSUMgU1lMTEFCTEUgS1dFRTtMbzswO0w7Ozs7O047Ozs7OworMTJCNTtFVEhJT1BJQyBTWUxMQUJMRSBLV0U7TG87MDtMOzs7OztOOzs7OzsKKzEyQjg7RVRISU9QSUMgU1lMTEFCTEUgS1hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkI5O0VUSElPUElDIFNZTExBQkxFIEtYVTtMbzswO0w7Ozs7O047Ozs7OworMTJCQTtFVEhJT1BJQyBTWUxMQUJMRSBLWEk7TG87MDtMOzs7OztOOzs7OzsKKzEyQkI7RVRISU9QSUMgU1lMTEFCTEUgS1hBQTtMbzswO0w7Ozs7O047Ozs7OworMTJCQztFVEhJT1BJQyBTWUxMQUJMRSBLWEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkJEO0VUSElPUElDIFNZTExBQkxFIEtYRTtMbzswO0w7Ozs7O047Ozs7OworMTJCRTtFVEhJT1BJQyBTWUxMQUJMRSBLWE87TG87MDtMOzs7OztOOzs7OzsKKzEyQzA7RVRISU9QSUMgU1lMTEFCTEUgS1hXQTtMbzswO0w7Ozs7O047Ozs7OworMTJDMjtFVEhJT1BJQyBTWUxMQUJMRSBLWFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkMzO0VUSElPUElDIFNZTExBQkxFIEtYV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkM0O0VUSElPUElDIFNZTExBQkxFIEtYV0VFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkM1O0VUSElPUElDIFNZTExBQkxFIEtYV0U7TG87MDtMOzs7OztOOzs7OzsKKzEyQzg7RVRISU9QSUMgU1lMTEFCTEUgV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyQzk7RVRISU9QSUMgU1lMTEFCTEUgV1U7TG87MDtMOzs7OztOOzs7OzsKKzEyQ0E7RVRISU9QSUMgU1lMTEFCTEUgV0k7TG87MDtMOzs7OztOOzs7OzsKKzEyQ0I7RVRISU9QSUMgU1lMTEFCTEUgV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkNDO0VUSElPUElDIFNZTExBQkxFIFdFRTtMbzswO0w7Ozs7O047Ozs7OworMTJDRDtFVEhJT1BJQyBTWUxMQUJMRSBXRTtMbzswO0w7Ozs7O047Ozs7OworMTJDRTtFVEhJT1BJQyBTWUxMQUJMRSBXTztMbzswO0w7Ozs7O047Ozs7OworMTJEMDtFVEhJT1BJQyBTWUxMQUJMRSBQSEFSWU5HRUFMIEE7TG87MDtMOzs7OztOOzs7OzsKKzEyRDE7RVRISU9QSUMgU1lMTEFCTEUgUEhBUllOR0VBTCBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkQyO0VUSElPUElDIFNZTExBQkxFIFBIQVJZTkdFQUwgSTtMbzswO0w7Ozs7O047Ozs7OworMTJEMztFVEhJT1BJQyBTWUxMQUJMRSBQSEFSWU5HRUFMIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkQ0O0VUSElPUElDIFNZTExBQkxFIFBIQVJZTkdFQUwgRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyRDU7RVRISU9QSUMgU1lMTEFCTEUgUEhBUllOR0VBTCBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkQ2O0VUSElPUElDIFNZTExBQkxFIFBIQVJZTkdFQUwgTztMbzswO0w7Ozs7O047Ozs7OworMTJEODtFVEhJT1BJQyBTWUxMQUJMRSBaQTtMbzswO0w7Ozs7O047Ozs7OworMTJEOTtFVEhJT1BJQyBTWUxMQUJMRSBaVTtMbzswO0w7Ozs7O047Ozs7OworMTJEQTtFVEhJT1BJQyBTWUxMQUJMRSBaSTtMbzswO0w7Ozs7O047Ozs7OworMTJEQjtFVEhJT1BJQyBTWUxMQUJMRSBaQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyREM7RVRISU9QSUMgU1lMTEFCTEUgWkVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkREO0VUSElPUElDIFNZTExBQkxFIFpFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkRFO0VUSElPUElDIFNZTExBQkxFIFpPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkRGO0VUSElPUElDIFNZTExBQkxFIFpXQTtMbzswO0w7Ozs7O047Ozs7OworMTJFMDtFVEhJT1BJQyBTWUxMQUJMRSBaSEE7TG87MDtMOzs7OztOOzs7OzsKKzEyRTE7RVRISU9QSUMgU1lMTEFCTEUgWkhVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkUyO0VUSElPUElDIFNZTExBQkxFIFpISTtMbzswO0w7Ozs7O047Ozs7OworMTJFMztFVEhJT1BJQyBTWUxMQUJMRSBaSEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkU0O0VUSElPUElDIFNZTExBQkxFIFpIRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyRTU7RVRISU9QSUMgU1lMTEFCTEUgWkhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkU2O0VUSElPUElDIFNZTExBQkxFIFpITztMbzswO0w7Ozs7O047Ozs7OworMTJFNztFVEhJT1BJQyBTWUxMQUJMRSBaSFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkU4O0VUSElPUElDIFNZTExBQkxFIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkU5O0VUSElPUElDIFNZTExBQkxFIFlVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkVBO0VUSElPUElDIFNZTExBQkxFIFlJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkVCO0VUSElPUElDIFNZTExBQkxFIFlBQTtMbzswO0w7Ozs7O047Ozs7OworMTJFQztFVEhJT1BJQyBTWUxMQUJMRSBZRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyRUQ7RVRISU9QSUMgU1lMTEFCTEUgWUU7TG87MDtMOzs7OztOOzs7OzsKKzEyRUU7RVRISU9QSUMgU1lMTEFCTEUgWU87TG87MDtMOzs7OztOOzs7OzsKKzEyRjA7RVRISU9QSUMgU1lMTEFCTEUgREE7TG87MDtMOzs7OztOOzs7OzsKKzEyRjE7RVRISU9QSUMgU1lMTEFCTEUgRFU7TG87MDtMOzs7OztOOzs7OzsKKzEyRjI7RVRISU9QSUMgU1lMTEFCTEUgREk7TG87MDtMOzs7OztOOzs7OzsKKzEyRjM7RVRISU9QSUMgU1lMTEFCTEUgREFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkY0O0VUSElPUElDIFNZTExBQkxFIERFRTtMbzswO0w7Ozs7O047Ozs7OworMTJGNTtFVEhJT1BJQyBTWUxMQUJMRSBERTtMbzswO0w7Ozs7O047Ozs7OworMTJGNjtFVEhJT1BJQyBTWUxMQUJMRSBETztMbzswO0w7Ozs7O047Ozs7OworMTJGNztFVEhJT1BJQyBTWUxMQUJMRSBEV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyRjg7RVRISU9QSUMgU1lMTEFCTEUgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkY5O0VUSElPUElDIFNZTExBQkxFIEREVTtMbzswO0w7Ozs7O047Ozs7OworMTJGQTtFVEhJT1BJQyBTWUxMQUJMRSBEREk7TG87MDtMOzs7OztOOzs7OzsKKzEyRkI7RVRISU9QSUMgU1lMTEFCTEUgRERBQTtMbzswO0w7Ozs7O047Ozs7OworMTJGQztFVEhJT1BJQyBTWUxMQUJMRSBEREVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkZEO0VUSElPUElDIFNZTExBQkxFIERERTtMbzswO0w7Ozs7O047Ozs7OworMTJGRTtFVEhJT1BJQyBTWUxMQUJMRSBERE87TG87MDtMOzs7OztOOzs7OzsKKzEyRkY7RVRISU9QSUMgU1lMTEFCTEUgRERXQTtMbzswO0w7Ozs7O047Ozs7OworMTMwMDtFVEhJT1BJQyBTWUxMQUJMRSBKQTtMbzswO0w7Ozs7O047Ozs7OworMTMwMTtFVEhJT1BJQyBTWUxMQUJMRSBKVTtMbzswO0w7Ozs7O047Ozs7OworMTMwMjtFVEhJT1BJQyBTWUxMQUJMRSBKSTtMbzswO0w7Ozs7O047Ozs7OworMTMwMztFVEhJT1BJQyBTWUxMQUJMRSBKQUE7TG87MDtMOzs7OztOOzs7OzsKKzEzMDQ7RVRISU9QSUMgU1lMTEFCTEUgSkVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzA1O0VUSElPUElDIFNZTExBQkxFIEpFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzA2O0VUSElPUElDIFNZTExBQkxFIEpPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzA3O0VUSElPUElDIFNZTExBQkxFIEpXQTtMbzswO0w7Ozs7O047Ozs7OworMTMwODtFVEhJT1BJQyBTWUxMQUJMRSBHQTtMbzswO0w7Ozs7O047Ozs7OworMTMwOTtFVEhJT1BJQyBTWUxMQUJMRSBHVTtMbzswO0w7Ozs7O047Ozs7OworMTMwQTtFVEhJT1BJQyBTWUxMQUJMRSBHSTtMbzswO0w7Ozs7O047Ozs7OworMTMwQjtFVEhJT1BJQyBTWUxMQUJMRSBHQUE7TG87MDtMOzs7OztOOzs7OzsKKzEzMEM7RVRISU9QSUMgU1lMTEFCTEUgR0VFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzBEO0VUSElPUElDIFNZTExBQkxFIEdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzBFO0VUSElPUElDIFNZTExBQkxFIEdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzEwO0VUSElPUElDIFNZTExBQkxFIEdXQTtMbzswO0w7Ozs7O047Ozs7OworMTMxMjtFVEhJT1BJQyBTWUxMQUJMRSBHV0k7TG87MDtMOzs7OztOOzs7OzsKKzEzMTM7RVRISU9QSUMgU1lMTEFCTEUgR1dBQTtMbzswO0w7Ozs7O047Ozs7OworMTMxNDtFVEhJT1BJQyBTWUxMQUJMRSBHV0VFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzE1O0VUSElPUElDIFNZTExBQkxFIEdXRTtMbzswO0w7Ozs7O047Ozs7OworMTMxODtFVEhJT1BJQyBTWUxMQUJMRSBHR0E7TG87MDtMOzs7OztOOzs7OzsKKzEzMTk7RVRISU9QSUMgU1lMTEFCTEUgR0dVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzFBO0VUSElPUElDIFNZTExBQkxFIEdHSTtMbzswO0w7Ozs7O047Ozs7OworMTMxQjtFVEhJT1BJQyBTWUxMQUJMRSBHR0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzFDO0VUSElPUElDIFNZTExBQkxFIEdHRUU7TG87MDtMOzs7OztOOzs7OzsKKzEzMUQ7RVRISU9QSUMgU1lMTEFCTEUgR0dFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzFFO0VUSElPUElDIFNZTExBQkxFIEdHTztMbzswO0w7Ozs7O047Ozs7OworMTMyMDtFVEhJT1BJQyBTWUxMQUJMRSBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzEzMjE7RVRISU9QSUMgU1lMTEFCTEUgVEhVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzIyO0VUSElPUElDIFNZTExBQkxFIFRISTtMbzswO0w7Ozs7O047Ozs7OworMTMyMztFVEhJT1BJQyBTWUxMQUJMRSBUSEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzI0O0VUSElPUElDIFNZTExBQkxFIFRIRUU7TG87MDtMOzs7OztOOzs7OzsKKzEzMjU7RVRISU9QSUMgU1lMTEFCTEUgVEhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzI2O0VUSElPUElDIFNZTExBQkxFIFRITztMbzswO0w7Ozs7O047Ozs7OworMTMyNztFVEhJT1BJQyBTWUxMQUJMRSBUSFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzI4O0VUSElPUElDIFNZTExBQkxFIENIQTtMbzswO0w7Ozs7O047Ozs7OworMTMyOTtFVEhJT1BJQyBTWUxMQUJMRSBDSFU7TG87MDtMOzs7OztOOzs7OzsKKzEzMkE7RVRISU9QSUMgU1lMTEFCTEUgQ0hJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzJCO0VUSElPUElDIFNZTExBQkxFIENIQUE7TG87MDtMOzs7OztOOzs7OzsKKzEzMkM7RVRISU9QSUMgU1lMTEFCTEUgQ0hFRTtMbzswO0w7Ozs7O047Ozs7OworMTMyRDtFVEhJT1BJQyBTWUxMQUJMRSBDSEU7TG87MDtMOzs7OztOOzs7OzsKKzEzMkU7RVRISU9QSUMgU1lMTEFCTEUgQ0hPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzJGO0VUSElPUElDIFNZTExBQkxFIENIV0E7TG87MDtMOzs7OztOOzs7OzsKKzEzMzA7RVRISU9QSUMgU1lMTEFCTEUgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzMxO0VUSElPUElDIFNZTExBQkxFIFBIVTtMbzswO0w7Ozs7O047Ozs7OworMTMzMjtFVEhJT1BJQyBTWUxMQUJMRSBQSEk7TG87MDtMOzs7OztOOzs7OzsKKzEzMzM7RVRISU9QSUMgU1lMTEFCTEUgUEhBQTtMbzswO0w7Ozs7O047Ozs7OworMTMzNDtFVEhJT1BJQyBTWUxMQUJMRSBQSEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzM1O0VUSElPUElDIFNZTExBQkxFIFBIRTtMbzswO0w7Ozs7O047Ozs7OworMTMzNjtFVEhJT1BJQyBTWUxMQUJMRSBQSE87TG87MDtMOzs7OztOOzs7OzsKKzEzMzc7RVRISU9QSUMgU1lMTEFCTEUgUEhXQTtMbzswO0w7Ozs7O047Ozs7OworMTMzODtFVEhJT1BJQyBTWUxMQUJMRSBUU0E7TG87MDtMOzs7OztOOzs7OzsKKzEzMzk7RVRISU9QSUMgU1lMTEFCTEUgVFNVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzNBO0VUSElPUElDIFNZTExBQkxFIFRTSTtMbzswO0w7Ozs7O047Ozs7OworMTMzQjtFVEhJT1BJQyBTWUxMQUJMRSBUU0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzNDO0VUSElPUElDIFNZTExBQkxFIFRTRUU7TG87MDtMOzs7OztOOzs7OzsKKzEzM0Q7RVRISU9QSUMgU1lMTEFCTEUgVFNFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzNFO0VUSElPUElDIFNZTExBQkxFIFRTTztMbzswO0w7Ozs7O047Ozs7OworMTMzRjtFVEhJT1BJQyBTWUxMQUJMRSBUU1dBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzQwO0VUSElPUElDIFNZTExBQkxFIFRaQTtMbzswO0w7Ozs7O047Ozs7OworMTM0MTtFVEhJT1BJQyBTWUxMQUJMRSBUWlU7TG87MDtMOzs7OztOOzs7OzsKKzEzNDI7RVRISU9QSUMgU1lMTEFCTEUgVFpJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzQzO0VUSElPUElDIFNZTExBQkxFIFRaQUE7TG87MDtMOzs7OztOOzs7OzsKKzEzNDQ7RVRISU9QSUMgU1lMTEFCTEUgVFpFRTtMbzswO0w7Ozs7O047Ozs7OworMTM0NTtFVEhJT1BJQyBTWUxMQUJMRSBUWkU7TG87MDtMOzs7OztOOzs7OzsKKzEzNDY7RVRISU9QSUMgU1lMTEFCTEUgVFpPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzQ4O0VUSElPUElDIFNZTExBQkxFIEZBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzQ5O0VUSElPUElDIFNZTExBQkxFIEZVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzRBO0VUSElPUElDIFNZTExBQkxFIEZJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzRCO0VUSElPUElDIFNZTExBQkxFIEZBQTtMbzswO0w7Ozs7O047Ozs7OworMTM0QztFVEhJT1BJQyBTWUxMQUJMRSBGRUU7TG87MDtMOzs7OztOOzs7OzsKKzEzNEQ7RVRISU9QSUMgU1lMTEFCTEUgRkU7TG87MDtMOzs7OztOOzs7OzsKKzEzNEU7RVRISU9QSUMgU1lMTEFCTEUgRk87TG87MDtMOzs7OztOOzs7OzsKKzEzNEY7RVRISU9QSUMgU1lMTEFCTEUgRldBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzUwO0VUSElPUElDIFNZTExBQkxFIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzUxO0VUSElPUElDIFNZTExBQkxFIFBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzUyO0VUSElPUElDIFNZTExBQkxFIFBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzUzO0VUSElPUElDIFNZTExBQkxFIFBBQTtMbzswO0w7Ozs7O047Ozs7OworMTM1NDtFVEhJT1BJQyBTWUxMQUJMRSBQRUU7TG87MDtMOzs7OztOOzs7OzsKKzEzNTU7RVRISU9QSUMgU1lMTEFCTEUgUEU7TG87MDtMOzs7OztOOzs7OzsKKzEzNTY7RVRISU9QSUMgU1lMTEFCTEUgUE87TG87MDtMOzs7OztOOzs7OzsKKzEzNTc7RVRISU9QSUMgU1lMTEFCTEUgUFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzU4O0VUSElPUElDIFNZTExBQkxFIFJZQTtMbzswO0w7Ozs7O047Ozs7OworMTM1OTtFVEhJT1BJQyBTWUxMQUJMRSBNWUE7TG87MDtMOzs7OztOOzs7OzsKKzEzNUE7RVRISU9QSUMgU1lMTEFCTEUgRllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzYxO0VUSElPUElDIFdPUkRTUEFDRTtQbzswO0w7Ozs7O047Ozs7OworMTM2MjtFVEhJT1BJQyBGVUxMIFNUT1A7UG87MDtMOzs7OztOOzs7OzsKKzEzNjM7RVRISU9QSUMgQ09NTUE7UG87MDtMOzs7OztOOzs7OzsKKzEzNjQ7RVRISU9QSUMgU0VNSUNPTE9OO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxMzY1O0VUSElPUElDIENPTE9OO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxMzY2O0VUSElPUElDIFBSRUZBQ0UgQ09MT047UG87MDtMOzs7OztOOzs7OzsKKzEzNjc7RVRISU9QSUMgUVVFU1RJT04gTUFSSztQbzswO0w7Ozs7O047Ozs7OworMTM2ODtFVEhJT1BJQyBQQVJBR1JBUEggU0VQQVJBVE9SO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxMzY5O0VUSElPUElDIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMTM2QTtFVEhJT1BJQyBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzEzNkI7RVRISU9QSUMgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzEzNkM7RVRISU9QSUMgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMTM2RDtFVEhJT1BJQyBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CisxMzZFO0VUSElPUElDIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMTM2RjtFVEhJT1BJQyBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMTM3MDtFVEhJT1BJQyBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMTM3MTtFVEhJT1BJQyBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CisxMzcyO0VUSElPUElDIE5VTUJFUiBURU47Tm87MDtMOzs7OzEwO047Ozs7OworMTM3MztFVEhJT1BJQyBOVU1CRVIgVFdFTlRZO05vOzA7TDs7OzsyMDtOOzs7OzsKKzEzNzQ7RVRISU9QSUMgTlVNQkVSIFRISVJUWTtObzswO0w7Ozs7MzA7Tjs7Ozs7CisxMzc1O0VUSElPUElDIE5VTUJFUiBGT1JUWTtObzswO0w7Ozs7NDA7Tjs7Ozs7CisxMzc2O0VUSElPUElDIE5VTUJFUiBGSUZUWTtObzswO0w7Ozs7NTA7Tjs7Ozs7CisxMzc3O0VUSElPUElDIE5VTUJFUiBTSVhUWTtObzswO0w7Ozs7NjA7Tjs7Ozs7CisxMzc4O0VUSElPUElDIE5VTUJFUiBTRVZFTlRZO05vOzA7TDs7Ozs3MDtOOzs7OzsKKzEzNzk7RVRISU9QSUMgTlVNQkVSIEVJR0hUWTtObzswO0w7Ozs7ODA7Tjs7Ozs7CisxMzdBO0VUSElPUElDIE5VTUJFUiBOSU5FVFk7Tm87MDtMOzs7OzkwO047Ozs7OworMTM3QjtFVEhJT1BJQyBOVU1CRVIgSFVORFJFRDtObzswO0w7Ozs7MTAwO047Ozs7OworMTM3QztFVEhJT1BJQyBOVU1CRVIgVEVOIFRIT1VTQU5EO05vOzA7TDs7OzsxMDAwMDtOOzs7OzsKKzEzQTA7Q0hFUk9LRUUgTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzEzQTE7Q0hFUk9LRUUgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzEzQTI7Q0hFUk9LRUUgTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzEzQTM7Q0hFUk9LRUUgTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzEzQTQ7Q0hFUk9LRUUgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzEzQTU7Q0hFUk9LRUUgTEVUVEVSIFY7TG87MDtMOzs7OztOOzs7OzsKKzEzQTY7Q0hFUk9LRUUgTEVUVEVSIEdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0E3O0NIRVJPS0VFIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMTNBODtDSEVST0tFRSBMRVRURVIgR0U7TG87MDtMOzs7OztOOzs7OzsKKzEzQTk7Q0hFUk9LRUUgTEVUVEVSIEdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0FBO0NIRVJPS0VFIExFVFRFUiBHTztMbzswO0w7Ozs7O047Ozs7OworMTNBQjtDSEVST0tFRSBMRVRURVIgR1U7TG87MDtMOzs7OztOOzs7OzsKKzEzQUM7Q0hFUk9LRUUgTEVUVEVSIEdWO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0FEO0NIRVJPS0VFIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMTNBRTtDSEVST0tFRSBMRVRURVIgSEU7TG87MDtMOzs7OztOOzs7OzsKKzEzQUY7Q0hFUk9LRUUgTEVUVEVSIEhJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0IwO0NIRVJPS0VFIExFVFRFUiBITztMbzswO0w7Ozs7O047Ozs7OworMTNCMTtDSEVST0tFRSBMRVRURVIgSFU7TG87MDtMOzs7OztOOzs7OzsKKzEzQjI7Q0hFUk9LRUUgTEVUVEVSIEhWO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0IzO0NIRVJPS0VFIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMTNCNDtDSEVST0tFRSBMRVRURVIgTEU7TG87MDtMOzs7OztOOzs7OzsKKzEzQjU7Q0hFUk9LRUUgTEVUVEVSIExJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0I2O0NIRVJPS0VFIExFVFRFUiBMTztMbzswO0w7Ozs7O047Ozs7OworMTNCNztDSEVST0tFRSBMRVRURVIgTFU7TG87MDtMOzs7OztOOzs7OzsKKzEzQjg7Q0hFUk9LRUUgTEVUVEVSIExWO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0I5O0NIRVJPS0VFIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMTNCQTtDSEVST0tFRSBMRVRURVIgTUU7TG87MDtMOzs7OztOOzs7OzsKKzEzQkI7Q0hFUk9LRUUgTEVUVEVSIE1JO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0JDO0NIRVJPS0VFIExFVFRFUiBNTztMbzswO0w7Ozs7O047Ozs7OworMTNCRDtDSEVST0tFRSBMRVRURVIgTVU7TG87MDtMOzs7OztOOzs7OzsKKzEzQkU7Q0hFUk9LRUUgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0JGO0NIRVJPS0VFIExFVFRFUiBITkE7TG87MDtMOzs7OztOOzs7OzsKKzEzQzA7Q0hFUk9LRUUgTEVUVEVSIE5BSDtMbzswO0w7Ozs7O047Ozs7OworMTNDMTtDSEVST0tFRSBMRVRURVIgTkU7TG87MDtMOzs7OztOOzs7OzsKKzEzQzI7Q0hFUk9LRUUgTEVUVEVSIE5JO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0MzO0NIRVJPS0VFIExFVFRFUiBOTztMbzswO0w7Ozs7O047Ozs7OworMTNDNDtDSEVST0tFRSBMRVRURVIgTlU7TG87MDtMOzs7OztOOzs7OzsKKzEzQzU7Q0hFUk9LRUUgTEVUVEVSIE5WO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0M2O0NIRVJPS0VFIExFVFRFUiBRVUE7TG87MDtMOzs7OztOOzs7OzsKKzEzQzc7Q0hFUk9LRUUgTEVUVEVSIFFVRTtMbzswO0w7Ozs7O047Ozs7OworMTNDODtDSEVST0tFRSBMRVRURVIgUVVJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0M5O0NIRVJPS0VFIExFVFRFUiBRVU87TG87MDtMOzs7OztOOzs7OzsKKzEzQ0E7Q0hFUk9LRUUgTEVUVEVSIFFVVTtMbzswO0w7Ozs7O047Ozs7OworMTNDQjtDSEVST0tFRSBMRVRURVIgUVVWO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0NDO0NIRVJPS0VFIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMTNDRDtDSEVST0tFRSBMRVRURVIgUztMbzswO0w7Ozs7O047Ozs7OworMTNDRTtDSEVST0tFRSBMRVRURVIgU0U7TG87MDtMOzs7OztOOzs7OzsKKzEzQ0Y7Q0hFUk9LRUUgTEVUVEVSIFNJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0QwO0NIRVJPS0VFIExFVFRFUiBTTztMbzswO0w7Ozs7O047Ozs7OworMTNEMTtDSEVST0tFRSBMRVRURVIgU1U7TG87MDtMOzs7OztOOzs7OzsKKzEzRDI7Q0hFUk9LRUUgTEVUVEVSIFNWO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0QzO0NIRVJPS0VFIExFVFRFUiBEQTtMbzswO0w7Ozs7O047Ozs7OworMTNENDtDSEVST0tFRSBMRVRURVIgVEE7TG87MDtMOzs7OztOOzs7OzsKKzEzRDU7Q0hFUk9LRUUgTEVUVEVSIERFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0Q2O0NIRVJPS0VFIExFVFRFUiBURTtMbzswO0w7Ozs7O047Ozs7OworMTNENztDSEVST0tFRSBMRVRURVIgREk7TG87MDtMOzs7OztOOzs7OzsKKzEzRDg7Q0hFUk9LRUUgTEVUVEVSIFRJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0Q5O0NIRVJPS0VFIExFVFRFUiBETztMbzswO0w7Ozs7O047Ozs7OworMTNEQTtDSEVST0tFRSBMRVRURVIgRFU7TG87MDtMOzs7OztOOzs7OzsKKzEzREI7Q0hFUk9LRUUgTEVUVEVSIERWO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0RDO0NIRVJPS0VFIExFVFRFUiBETEE7TG87MDtMOzs7OztOOzs7OzsKKzEzREQ7Q0hFUk9LRUUgTEVUVEVSIFRMQTtMbzswO0w7Ozs7O047Ozs7OworMTNERTtDSEVST0tFRSBMRVRURVIgVExFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0RGO0NIRVJPS0VFIExFVFRFUiBUTEk7TG87MDtMOzs7OztOOzs7OzsKKzEzRTA7Q0hFUk9LRUUgTEVUVEVSIFRMTztMbzswO0w7Ozs7O047Ozs7OworMTNFMTtDSEVST0tFRSBMRVRURVIgVExVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0UyO0NIRVJPS0VFIExFVFRFUiBUTFY7TG87MDtMOzs7OztOOzs7OzsKKzEzRTM7Q0hFUk9LRUUgTEVUVEVSIFRTQTtMbzswO0w7Ozs7O047Ozs7OworMTNFNDtDSEVST0tFRSBMRVRURVIgVFNFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0U1O0NIRVJPS0VFIExFVFRFUiBUU0k7TG87MDtMOzs7OztOOzs7OzsKKzEzRTY7Q0hFUk9LRUUgTEVUVEVSIFRTTztMbzswO0w7Ozs7O047Ozs7OworMTNFNztDSEVST0tFRSBMRVRURVIgVFNVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0U4O0NIRVJPS0VFIExFVFRFUiBUU1Y7TG87MDtMOzs7OztOOzs7OzsKKzEzRTk7Q0hFUk9LRUUgTEVUVEVSIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0VBO0NIRVJPS0VFIExFVFRFUiBXRTtMbzswO0w7Ozs7O047Ozs7OworMTNFQjtDSEVST0tFRSBMRVRURVIgV0k7TG87MDtMOzs7OztOOzs7OzsKKzEzRUM7Q0hFUk9LRUUgTEVUVEVSIFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0VEO0NIRVJPS0VFIExFVFRFUiBXVTtMbzswO0w7Ozs7O047Ozs7OworMTNFRTtDSEVST0tFRSBMRVRURVIgV1Y7TG87MDtMOzs7OztOOzs7OzsKKzEzRUY7Q0hFUk9LRUUgTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0YwO0NIRVJPS0VFIExFVFRFUiBZRTtMbzswO0w7Ozs7O047Ozs7OworMTNGMTtDSEVST0tFRSBMRVRURVIgWUk7TG87MDtMOzs7OztOOzs7OzsKKzEzRjI7Q0hFUk9LRUUgTEVUVEVSIFlPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0YzO0NIRVJPS0VFIExFVFRFUiBZVTtMbzswO0w7Ozs7O047Ozs7OworMTNGNDtDSEVST0tFRSBMRVRURVIgWVY7TG87MDtMOzs7OztOOzs7OzsKKzE0MDE7Q0FOQURJQU4gU1lMTEFCSUNTIEU7TG87MDtMOzs7OztOOzs7OzsKKzE0MDI7Q0FOQURJQU4gU1lMTEFCSUNTIEFBSTtMbzswO0w7Ozs7O047Ozs7OworMTQwMztDQU5BRElBTiBTWUxMQUJJQ1MgSTtMbzswO0w7Ozs7O047Ozs7OworMTQwNDtDQU5BRElBTiBTWUxMQUJJQ1MgSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0MDU7Q0FOQURJQU4gU1lMTEFCSUNTIE87TG87MDtMOzs7OztOOzs7OzsKKzE0MDY7Q0FOQURJQU4gU1lMTEFCSUNTIE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDA3O0NBTkFESUFOIFNZTExBQklDUyBZLUNSRUUgT087TG87MDtMOzs7OztOOzs7OzsKKzE0MDg7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgRUU7TG87MDtMOzs7OztOOzs7OzsKKzE0MDk7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSTtMbzswO0w7Ozs7O047Ozs7OworMTQwQTtDQU5BRElBTiBTWUxMQUJJQ1MgQTtMbzswO0w7Ozs7O047Ozs7OworMTQwQjtDQU5BRElBTiBTWUxMQUJJQ1MgQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0MEM7Q0FOQURJQU4gU1lMTEFCSUNTIFdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDBEO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgV0U7TG87MDtMOzs7OztOOzs7OzsKKzE0MEU7Q0FOQURJQU4gU1lMTEFCSUNTIFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDBGO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgV0k7TG87MDtMOzs7OztOOzs7OzsKKzE0MTA7Q0FOQURJQU4gU1lMTEFCSUNTIFdJSTtMbzswO0w7Ozs7O047Ozs7OworMTQxMTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFdJSTtMbzswO0w7Ozs7O047Ozs7OworMTQxMjtDQU5BRElBTiBTWUxMQUJJQ1MgV087TG87MDtMOzs7OztOOzs7OzsKKzE0MTM7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBXTztMbzswO0w7Ozs7O047Ozs7OworMTQxNDtDQU5BRElBTiBTWUxMQUJJQ1MgV09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDE1O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgV09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDE2O0NBTkFESUFOIFNZTExBQklDUyBOQVNLQVBJIFdPTztMbzswO0w7Ozs7O047Ozs7OworMTQxNztDQU5BRElBTiBTWUxMQUJJQ1MgV0E7TG87MDtMOzs7OztOOzs7OzsKKzE0MTg7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBXQTtMbzswO0w7Ozs7O047Ozs7OworMTQxOTtDQU5BRElBTiBTWUxMQUJJQ1MgV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDFBO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDFCO0NBTkFESUFOIFNZTExBQklDUyBOQVNLQVBJIFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTQxQztDQU5BRElBTiBTWUxMQUJJQ1MgQUk7TG87MDtMOzs7OztOOzs7OzsKKzE0MUQ7Q0FOQURJQU4gU1lMTEFCSUNTIFktQ1JFRSBXO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDFFO0NBTkFESUFOIFNZTExBQklDUyBHTE9UVEFMIFNUT1A7TG87MDtMOzs7OztOOzs7OzsKKzE0MUY7Q0FOQURJQU4gU1lMTEFCSUNTIEZJTkFMIEFDVVRFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDIwO0NBTkFESUFOIFNZTExBQklDUyBGSU5BTCBHUkFWRTtMbzswO0w7Ozs7O047Ozs7OworMTQyMTtDQU5BRElBTiBTWUxMQUJJQ1MgRklOQUwgQk9UVE9NIEhBTEYgUklORztMbzswO0w7Ozs7O047Ozs7OworMTQyMjtDQU5BRElBTiBTWUxMQUJJQ1MgRklOQUwgVE9QIEhBTEYgUklORztMbzswO0w7Ozs7O047Ozs7OworMTQyMztDQU5BRElBTiBTWUxMQUJJQ1MgRklOQUwgUklHSFQgSEFMRiBSSU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDI0O0NBTkFESUFOIFNZTExBQklDUyBGSU5BTCBSSU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDI1O0NBTkFESUFOIFNZTExBQklDUyBGSU5BTCBET1VCTEUgQUNVVEU7TG87MDtMOzs7OztOOzs7OzsKKzE0MjY7Q0FOQURJQU4gU1lMTEFCSUNTIEZJTkFMIERPVUJMRSBTSE9SVCBWRVJUSUNBTCBTVFJPS0VTO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDI3O0NBTkFESUFOIFNZTExBQklDUyBGSU5BTCBNSURETEUgRE9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDI4O0NBTkFESUFOIFNZTExBQklDUyBGSU5BTCBTSE9SVCBIT1JJWk9OVEFMIFNUUk9LRTtMbzswO0w7Ozs7O047Ozs7OworMTQyOTtDQU5BRElBTiBTWUxMQUJJQ1MgRklOQUwgUExVUztMbzswO0w7Ozs7O047Ozs7OworMTQyQTtDQU5BRElBTiBTWUxMQUJJQ1MgRklOQUwgRE9XTiBUQUNLO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDJCO0NBTkFESUFOIFNZTExBQklDUyBFTjtMbzswO0w7Ozs7O047Ozs7OworMTQyQztDQU5BRElBTiBTWUxMQUJJQ1MgSU47TG87MDtMOzs7OztOOzs7OzsKKzE0MkQ7Q0FOQURJQU4gU1lMTEFCSUNTIE9OO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDJFO0NBTkFESUFOIFNZTExBQklDUyBBTjtMbzswO0w7Ozs7O047Ozs7OworMTQyRjtDQU5BRElBTiBTWUxMQUJJQ1MgUEU7TG87MDtMOzs7OztOOzs7OzsKKzE0MzA7Q0FOQURJQU4gU1lMTEFCSUNTIFBBQUk7TG87MDtMOzs7OztOOzs7OzsKKzE0MzE7Q0FOQURJQU4gU1lMTEFCSUNTIFBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDMyO0NBTkFESUFOIFNZTExBQklDUyBQSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0MzM7Q0FOQURJQU4gU1lMTEFCSUNTIFBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDM0O0NBTkFESUFOIFNZTExBQklDUyBQT087TG87MDtMOzs7OztOOzs7OzsKKzE0MzU7Q0FOQURJQU4gU1lMTEFCSUNTIFktQ1JFRSBQT087TG87MDtMOzs7OztOOzs7OzsKKzE0MzY7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDM3O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEhJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDM4O0NBTkFESUFOIFNZTExBQklDUyBQQTtMbzswO0w7Ozs7O047Ozs7OworMTQzOTtDQU5BRElBTiBTWUxMQUJJQ1MgUEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDNBO0NBTkFESUFOIFNZTExBQklDUyBQV0U7TG87MDtMOzs7OztOOzs7OzsKKzE0M0I7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBQV0U7TG87MDtMOzs7OztOOzs7OzsKKzE0M0M7Q0FOQURJQU4gU1lMTEFCSUNTIFBXSTtMbzswO0w7Ozs7O047Ozs7OworMTQzRDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFBXSTtMbzswO0w7Ozs7O047Ozs7OworMTQzRTtDQU5BRElBTiBTWUxMQUJJQ1MgUFdJSTtMbzswO0w7Ozs7O047Ozs7OworMTQzRjtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFBXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0NDA7Q0FOQURJQU4gU1lMTEFCSUNTIFBXTztMbzswO0w7Ozs7O047Ozs7OworMTQ0MTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFBXTztMbzswO0w7Ozs7O047Ozs7OworMTQ0MjtDQU5BRElBTiBTWUxMQUJJQ1MgUFdPTztMbzswO0w7Ozs7O047Ozs7OworMTQ0MztDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFBXT087TG87MDtMOzs7OztOOzs7OzsKKzE0NDQ7Q0FOQURJQU4gU1lMTEFCSUNTIFBXQTtMbzswO0w7Ozs7O047Ozs7OworMTQ0NTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFBXQTtMbzswO0w7Ozs7O047Ozs7OworMTQ0NjtDQU5BRElBTiBTWUxMQUJJQ1MgUFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTQ0NztDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFBXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0NDg7Q0FOQURJQU4gU1lMTEFCSUNTIFktQ1JFRSBQV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDQ5O0NBTkFESUFOIFNZTExBQklDUyBQO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDRBO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgUDtMbzswO0w7Ozs7O047Ozs7OworMTQ0QjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDRDO0NBTkFESUFOIFNZTExBQklDUyBURTtMbzswO0w7Ozs7O047Ozs7OworMTQ0RDtDQU5BRElBTiBTWUxMQUJJQ1MgVEFBSTtMbzswO0w7Ozs7O047Ozs7OworMTQ0RTtDQU5BRElBTiBTWUxMQUJJQ1MgVEk7TG87MDtMOzs7OztOOzs7OzsKKzE0NEY7Q0FOQURJQU4gU1lMTEFCSUNTIFRJSTtMbzswO0w7Ozs7O047Ozs7OworMTQ1MDtDQU5BRElBTiBTWUxMQUJJQ1MgVE87TG87MDtMOzs7OztOOzs7OzsKKzE0NTE7Q0FOQURJQU4gU1lMTEFCSUNTIFRPTztMbzswO0w7Ozs7O047Ozs7OworMTQ1MjtDQU5BRElBTiBTWUxMQUJJQ1MgWS1DUkVFIFRPTztMbzswO0w7Ozs7O047Ozs7OworMTQ1MztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBERUU7TG87MDtMOzs7OztOOzs7OzsKKzE0NTQ7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgREk7TG87MDtMOzs7OztOOzs7OzsKKzE0NTU7Q0FOQURJQU4gU1lMTEFCSUNTIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDU2O0NBTkFESUFOIFNZTExBQklDUyBUQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0NTc7Q0FOQURJQU4gU1lMTEFCSUNTIFRXRTtMbzswO0w7Ozs7O047Ozs7OworMTQ1ODtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFRXRTtMbzswO0w7Ozs7O047Ozs7OworMTQ1OTtDQU5BRElBTiBTWUxMQUJJQ1MgVFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDVBO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgVFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDVCO0NBTkFESUFOIFNZTExBQklDUyBUV0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDVDO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgVFdJSTtMbzswO0w7Ozs7O047Ozs7OworMTQ1RDtDQU5BRElBTiBTWUxMQUJJQ1MgVFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDVFO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgVFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDVGO0NBTkFESUFOIFNZTExBQklDUyBUV09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDYwO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgVFdPTztMbzswO0w7Ozs7O047Ozs7OworMTQ2MTtDQU5BRElBTiBTWUxMQUJJQ1MgVFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDYyO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgVFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDYzO0NBTkFESUFOIFNZTExBQklDUyBUV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDY0O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgVFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTQ2NTtDQU5BRElBTiBTWUxMQUJJQ1MgTkFTS0FQSSBUV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDY2O0NBTkFESUFOIFNZTExBQklDUyBUO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDY3O0NBTkFESUFOIFNZTExBQklDUyBUVEU7TG87MDtMOzs7OztOOzs7OzsKKzE0Njg7Q0FOQURJQU4gU1lMTEFCSUNTIFRUSTtMbzswO0w7Ozs7O047Ozs7OworMTQ2OTtDQU5BRElBTiBTWUxMQUJJQ1MgVFRPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDZBO0NBTkFESUFOIFNZTExBQklDUyBUVEE7TG87MDtMOzs7OztOOzs7OzsKKzE0NkI7Q0FOQURJQU4gU1lMTEFCSUNTIEtFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDZDO0NBTkFESUFOIFNZTExBQklDUyBLQUFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDZEO0NBTkFESUFOIFNZTExBQklDUyBLSTtMbzswO0w7Ozs7O047Ozs7OworMTQ2RTtDQU5BRElBTiBTWUxMQUJJQ1MgS0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDZGO0NBTkFESUFOIFNZTExBQklDUyBLTztMbzswO0w7Ozs7O047Ozs7OworMTQ3MDtDQU5BRElBTiBTWUxMQUJJQ1MgS09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDcxO0NBTkFESUFOIFNZTExBQklDUyBZLUNSRUUgS09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDcyO0NBTkFESUFOIFNZTExBQklDUyBLQTtMbzswO0w7Ozs7O047Ozs7OworMTQ3MztDQU5BRElBTiBTWUxMQUJJQ1MgS0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDc0O0NBTkFESUFOIFNZTExBQklDUyBLV0U7TG87MDtMOzs7OztOOzs7OzsKKzE0NzU7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBLV0U7TG87MDtMOzs7OztOOzs7OzsKKzE0NzY7Q0FOQURJQU4gU1lMTEFCSUNTIEtXSTtMbzswO0w7Ozs7O047Ozs7OworMTQ3NztDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIEtXSTtMbzswO0w7Ozs7O047Ozs7OworMTQ3ODtDQU5BRElBTiBTWUxMQUJJQ1MgS1dJSTtMbzswO0w7Ozs7O047Ozs7OworMTQ3OTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIEtXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0N0E7Q0FOQURJQU4gU1lMTEFCSUNTIEtXTztMbzswO0w7Ozs7O047Ozs7OworMTQ3QjtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIEtXTztMbzswO0w7Ozs7O047Ozs7OworMTQ3QztDQU5BRElBTiBTWUxMQUJJQ1MgS1dPTztMbzswO0w7Ozs7O047Ozs7OworMTQ3RDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIEtXT087TG87MDtMOzs7OztOOzs7OzsKKzE0N0U7Q0FOQURJQU4gU1lMTEFCSUNTIEtXQTtMbzswO0w7Ozs7O047Ozs7OworMTQ3RjtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIEtXQTtMbzswO0w7Ozs7O047Ozs7OworMTQ4MDtDQU5BRElBTiBTWUxMQUJJQ1MgS1dBQTtMbzswO0w7Ozs7O047Ozs7OworMTQ4MTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIEtXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0ODI7Q0FOQURJQU4gU1lMTEFCSUNTIE5BU0tBUEkgS1dBQTtMbzswO0w7Ozs7O047Ozs7OworMTQ4MztDQU5BRElBTiBTWUxMQUJJQ1MgSztMbzswO0w7Ozs7O047Ozs7OworMTQ4NDtDQU5BRElBTiBTWUxMQUJJQ1MgS1c7TG87MDtMOzs7OztOOzs7OzsKKzE0ODU7Q0FOQURJQU4gU1lMTEFCSUNTIFNPVVRILVNMQVZFWSBLRUg7TG87MDtMOzs7OztOOzs7OzsKKzE0ODY7Q0FOQURJQU4gU1lMTEFCSUNTIFNPVVRILVNMQVZFWSBLSUg7TG87MDtMOzs7OztOOzs7OzsKKzE0ODc7Q0FOQURJQU4gU1lMTEFCSUNTIFNPVVRILVNMQVZFWSBLT0g7TG87MDtMOzs7OztOOzs7OzsKKzE0ODg7Q0FOQURJQU4gU1lMTEFCSUNTIFNPVVRILVNMQVZFWSBLQUg7TG87MDtMOzs7OztOOzs7OzsKKzE0ODk7Q0FOQURJQU4gU1lMTEFCSUNTIENFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDhBO0NBTkFESUFOIFNZTExBQklDUyBDQUFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDhCO0NBTkFESUFOIFNZTExBQklDUyBDSTtMbzswO0w7Ozs7O047Ozs7OworMTQ4QztDQU5BRElBTiBTWUxMQUJJQ1MgQ0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDhEO0NBTkFESUFOIFNZTExBQklDUyBDTztMbzswO0w7Ozs7O047Ozs7OworMTQ4RTtDQU5BRElBTiBTWUxMQUJJQ1MgQ09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDhGO0NBTkFESUFOIFNZTExBQklDUyBZLUNSRUUgQ09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDkwO0NBTkFESUFOIFNZTExBQklDUyBDQTtMbzswO0w7Ozs7O047Ozs7OworMTQ5MTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDkyO0NBTkFESUFOIFNZTExBQklDUyBDV0U7TG87MDtMOzs7OztOOzs7OzsKKzE0OTM7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBDV0U7TG87MDtMOzs7OztOOzs7OzsKKzE0OTQ7Q0FOQURJQU4gU1lMTEFCSUNTIENXSTtMbzswO0w7Ozs7O047Ozs7OworMTQ5NTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIENXSTtMbzswO0w7Ozs7O047Ozs7OworMTQ5NjtDQU5BRElBTiBTWUxMQUJJQ1MgQ1dJSTtMbzswO0w7Ozs7O047Ozs7OworMTQ5NztDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIENXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0OTg7Q0FOQURJQU4gU1lMTEFCSUNTIENXTztMbzswO0w7Ozs7O047Ozs7OworMTQ5OTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIENXTztMbzswO0w7Ozs7O047Ozs7OworMTQ5QTtDQU5BRElBTiBTWUxMQUJJQ1MgQ1dPTztMbzswO0w7Ozs7O047Ozs7OworMTQ5QjtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIENXT087TG87MDtMOzs7OztOOzs7OzsKKzE0OUM7Q0FOQURJQU4gU1lMTEFCSUNTIENXQTtMbzswO0w7Ozs7O047Ozs7OworMTQ5RDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIENXQTtMbzswO0w7Ozs7O047Ozs7OworMTQ5RTtDQU5BRElBTiBTWUxMQUJJQ1MgQ1dBQTtMbzswO0w7Ozs7O047Ozs7OworMTQ5RjtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIENXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0QTA7Q0FOQURJQU4gU1lMTEFCSUNTIE5BU0tBUEkgQ1dBQTtMbzswO0w7Ozs7O047Ozs7OworMTRBMTtDQU5BRElBTiBTWUxMQUJJQ1MgQztMbzswO0w7Ozs7O047Ozs7OworMTRBMjtDQU5BRElBTiBTWUxMQUJJQ1MgU0FZSVNJIFRIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEEzO0NBTkFESUFOIFNZTExBQklDUyBNRTtMbzswO0w7Ozs7O047Ozs7OworMTRBNDtDQU5BRElBTiBTWUxMQUJJQ1MgTUFBSTtMbzswO0w7Ozs7O047Ozs7OworMTRBNTtDQU5BRElBTiBTWUxMQUJJQ1MgTUk7TG87MDtMOzs7OztOOzs7OzsKKzE0QTY7Q0FOQURJQU4gU1lMTEFCSUNTIE1JSTtMbzswO0w7Ozs7O047Ozs7OworMTRBNztDQU5BRElBTiBTWUxMQUJJQ1MgTU87TG87MDtMOzs7OztOOzs7OzsKKzE0QTg7Q0FOQURJQU4gU1lMTEFCSUNTIE1PTztMbzswO0w7Ozs7O047Ozs7OworMTRBOTtDQU5BRElBTiBTWUxMQUJJQ1MgWS1DUkVFIE1PTztMbzswO0w7Ozs7O047Ozs7OworMTRBQTtDQU5BRElBTiBTWUxMQUJJQ1MgTUE7TG87MDtMOzs7OztOOzs7OzsKKzE0QUI7Q0FOQURJQU4gU1lMTEFCSUNTIE1BQTtMbzswO0w7Ozs7O047Ozs7OworMTRBQztDQU5BRElBTiBTWUxMQUJJQ1MgTVdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEFEO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTVdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEFFO0NBTkFESUFOIFNZTExBQklDUyBNV0k7TG87MDtMOzs7OztOOzs7OzsKKzE0QUY7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBNV0k7TG87MDtMOzs7OztOOzs7OzsKKzE0QjA7Q0FOQURJQU4gU1lMTEFCSUNTIE1XSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0QjE7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBNV0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEIyO0NBTkFESUFOIFNZTExBQklDUyBNV087TG87MDtMOzs7OztOOzs7OzsKKzE0QjM7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBNV087TG87MDtMOzs7OztOOzs7OzsKKzE0QjQ7Q0FOQURJQU4gU1lMTEFCSUNTIE1XT087TG87MDtMOzs7OztOOzs7OzsKKzE0QjU7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBNV09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEI2O0NBTkFESUFOIFNZTExBQklDUyBNV0E7TG87MDtMOzs7OztOOzs7OzsKKzE0Qjc7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBNV0E7TG87MDtMOzs7OztOOzs7OzsKKzE0Qjg7Q0FOQURJQU4gU1lMTEFCSUNTIE1XQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0Qjk7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBNV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEJBO0NBTkFESUFOIFNZTExBQklDUyBOQVNLQVBJIE1XQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0QkI7Q0FOQURJQU4gU1lMTEFCSUNTIE07TG87MDtMOzs7OztOOzs7OzsKKzE0QkM7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBNO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEJEO0NBTkFESUFOIFNZTExBQklDUyBNSDtMbzswO0w7Ozs7O047Ozs7OworMTRCRTtDQU5BRElBTiBTWUxMQUJJQ1MgQVRIQVBBU0NBTiBNO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEJGO0NBTkFESUFOIFNZTExBQklDUyBTQVlJU0kgTTtMbzswO0w7Ozs7O047Ozs7OworMTRDMDtDQU5BRElBTiBTWUxMQUJJQ1MgTkU7TG87MDtMOzs7OztOOzs7OzsKKzE0QzE7Q0FOQURJQU4gU1lMTEFCSUNTIE5BQUk7TG87MDtMOzs7OztOOzs7OzsKKzE0QzI7Q0FOQURJQU4gU1lMTEFCSUNTIE5JO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEMzO0NBTkFESUFOIFNZTExBQklDUyBOSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0QzQ7Q0FOQURJQU4gU1lMTEFCSUNTIE5PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEM1O0NBTkFESUFOIFNZTExBQklDUyBOT087TG87MDtMOzs7OztOOzs7OzsKKzE0QzY7Q0FOQURJQU4gU1lMTEFCSUNTIFktQ1JFRSBOT087TG87MDtMOzs7OztOOzs7OzsKKzE0Qzc7Q0FOQURJQU4gU1lMTEFCSUNTIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEM4O0NBTkFESUFOIFNZTExBQklDUyBOQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0Qzk7Q0FOQURJQU4gU1lMTEFCSUNTIE5XRTtMbzswO0w7Ozs7O047Ozs7OworMTRDQTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIE5XRTtMbzswO0w7Ozs7O047Ozs7OworMTRDQjtDQU5BRElBTiBTWUxMQUJJQ1MgTldBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNENDO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTldBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNENEO0NBTkFESUFOIFNZTExBQklDUyBOV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNENFO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTldBQTtMbzswO0w7Ozs7O047Ozs7OworMTRDRjtDQU5BRElBTiBTWUxMQUJJQ1MgTkFTS0FQSSBOV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEQwO0NBTkFESUFOIFNZTExBQklDUyBOO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEQxO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIE5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEQyO0NBTkFESUFOIFNZTExBQklDUyBOSDtMbzswO0w7Ozs7O047Ozs7OworMTREMztDQU5BRElBTiBTWUxMQUJJQ1MgTEU7TG87MDtMOzs7OztOOzs7OzsKKzE0RDQ7Q0FOQURJQU4gU1lMTEFCSUNTIExBQUk7TG87MDtMOzs7OztOOzs7OzsKKzE0RDU7Q0FOQURJQU4gU1lMTEFCSUNTIExJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEQ2O0NBTkFESUFOIFNZTExBQklDUyBMSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0RDc7Q0FOQURJQU4gU1lMTEFCSUNTIExPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEQ4O0NBTkFESUFOIFNZTExBQklDUyBMT087TG87MDtMOzs7OztOOzs7OzsKKzE0RDk7Q0FOQURJQU4gU1lMTEFCSUNTIFktQ1JFRSBMT087TG87MDtMOzs7OztOOzs7OzsKKzE0REE7Q0FOQURJQU4gU1lMTEFCSUNTIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNERCO0NBTkFESUFOIFNZTExBQklDUyBMQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0REM7Q0FOQURJQU4gU1lMTEFCSUNTIExXRTtMbzswO0w7Ozs7O047Ozs7OworMTRERDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIExXRTtMbzswO0w7Ozs7O047Ozs7OworMTRERTtDQU5BRElBTiBTWUxMQUJJQ1MgTFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNERGO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEUwO0NBTkFESUFOIFNZTExBQklDUyBMV0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEUxO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTFdJSTtMbzswO0w7Ozs7O047Ozs7OworMTRFMjtDQU5BRElBTiBTWUxMQUJJQ1MgTFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEUzO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEU0O0NBTkFESUFOIFNZTExBQklDUyBMV09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEU1O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTFdPTztMbzswO0w7Ozs7O047Ozs7OworMTRFNjtDQU5BRElBTiBTWUxMQUJJQ1MgTFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEU3O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEU4O0NBTkFESUFOIFNZTExBQklDUyBMV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEU5O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTRFQTtDQU5BRElBTiBTWUxMQUJJQ1MgTDtMbzswO0w7Ozs7O047Ozs7OworMTRFQjtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIEw7TG87MDtMOzs7OztOOzs7OzsKKzE0RUM7Q0FOQURJQU4gU1lMTEFCSUNTIE1FRElBTCBMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEVEO0NBTkFESUFOIFNZTExBQklDUyBTRTtMbzswO0w7Ozs7O047Ozs7OworMTRFRTtDQU5BRElBTiBTWUxMQUJJQ1MgU0FBSTtMbzswO0w7Ozs7O047Ozs7OworMTRFRjtDQU5BRElBTiBTWUxMQUJJQ1MgU0k7TG87MDtMOzs7OztOOzs7OzsKKzE0RjA7Q0FOQURJQU4gU1lMTEFCSUNTIFNJSTtMbzswO0w7Ozs7O047Ozs7OworMTRGMTtDQU5BRElBTiBTWUxMQUJJQ1MgU087TG87MDtMOzs7OztOOzs7OzsKKzE0RjI7Q0FOQURJQU4gU1lMTEFCSUNTIFNPTztMbzswO0w7Ozs7O047Ozs7OworMTRGMztDQU5BRElBTiBTWUxMQUJJQ1MgWS1DUkVFIFNPTztMbzswO0w7Ozs7O047Ozs7OworMTRGNDtDQU5BRElBTiBTWUxMQUJJQ1MgU0E7TG87MDtMOzs7OztOOzs7OzsKKzE0RjU7Q0FOQURJQU4gU1lMTEFCSUNTIFNBQTtMbzswO0w7Ozs7O047Ozs7OworMTRGNjtDQU5BRElBTiBTWUxMQUJJQ1MgU1dFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEY3O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgU1dFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEY4O0NBTkFESUFOIFNZTExBQklDUyBTV0k7TG87MDtMOzs7OztOOzs7OzsKKzE0Rjk7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBTV0k7TG87MDtMOzs7OztOOzs7OzsKKzE0RkE7Q0FOQURJQU4gU1lMTEFCSUNTIFNXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0RkI7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBTV0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEZDO0NBTkFESUFOIFNZTExBQklDUyBTV087TG87MDtMOzs7OztOOzs7OzsKKzE0RkQ7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBTV087TG87MDtMOzs7OztOOzs7OzsKKzE0RkU7Q0FOQURJQU4gU1lMTEFCSUNTIFNXT087TG87MDtMOzs7OztOOzs7OzsKKzE0RkY7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBTV09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTAwO0NBTkFESUFOIFNZTExBQklDUyBTV0E7TG87MDtMOzs7OztOOzs7OzsKKzE1MDE7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBTV0E7TG87MDtMOzs7OztOOzs7OzsKKzE1MDI7Q0FOQURJQU4gU1lMTEFCSUNTIFNXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1MDM7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBTV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTA0O0NBTkFESUFOIFNZTExBQklDUyBOQVNLQVBJIFNXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1MDU7Q0FOQURJQU4gU1lMTEFCSUNTIFM7TG87MDtMOzs7OztOOzs7OzsKKzE1MDY7Q0FOQURJQU4gU1lMTEFCSUNTIEFUSEFQQVNDQU4gUztMbzswO0w7Ozs7O047Ozs7OworMTUwNztDQU5BRElBTiBTWUxMQUJJQ1MgU1c7TG87MDtMOzs7OztOOzs7OzsKKzE1MDg7Q0FOQURJQU4gU1lMTEFCSUNTIEJMQUNLRk9PVCBTO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTA5O0NBTkFESUFOIFNZTExBQklDUyBNT09TRS1DUkVFIFNLO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTBBO0NBTkFESUFOIFNZTExBQklDUyBOQVNLQVBJIFNLVztMbzswO0w7Ozs7O047Ozs7OworMTUwQjtDQU5BRElBTiBTWUxMQUJJQ1MgTkFTS0FQSSBTLVc7TG87MDtMOzs7OztOOzs7OzsKKzE1MEM7Q0FOQURJQU4gU1lMTEFCSUNTIE5BU0tBUEkgU1BXQTtMbzswO0w7Ozs7O047Ozs7OworMTUwRDtDQU5BRElBTiBTWUxMQUJJQ1MgTkFTS0FQSSBTVFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTBFO0NBTkFESUFOIFNZTExBQklDUyBOQVNLQVBJIFNLV0E7TG87MDtMOzs7OztOOzs7OzsKKzE1MEY7Q0FOQURJQU4gU1lMTEFCSUNTIE5BU0tBUEkgU0NXQTtMbzswO0w7Ozs7O047Ozs7OworMTUxMDtDQU5BRElBTiBTWUxMQUJJQ1MgU0hFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTExO0NBTkFESUFOIFNZTExBQklDUyBTSEk7TG87MDtMOzs7OztOOzs7OzsKKzE1MTI7Q0FOQURJQU4gU1lMTEFCSUNTIFNISUk7TG87MDtMOzs7OztOOzs7OzsKKzE1MTM7Q0FOQURJQU4gU1lMTEFCSUNTIFNITztMbzswO0w7Ozs7O047Ozs7OworMTUxNDtDQU5BRElBTiBTWUxMQUJJQ1MgU0hPTztMbzswO0w7Ozs7O047Ozs7OworMTUxNTtDQU5BRElBTiBTWUxMQUJJQ1MgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTE2O0NBTkFESUFOIFNZTExBQklDUyBTSEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTE3O0NBTkFESUFOIFNZTExBQklDUyBTSFdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTE4O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgU0hXRTtMbzswO0w7Ozs7O047Ozs7OworMTUxOTtDQU5BRElBTiBTWUxMQUJJQ1MgU0hXSTtMbzswO0w7Ozs7O047Ozs7OworMTUxQTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFNIV0k7TG87MDtMOzs7OztOOzs7OzsKKzE1MUI7Q0FOQURJQU4gU1lMTEFCSUNTIFNIV0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTFDO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgU0hXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE1MUQ7Q0FOQURJQU4gU1lMTEFCSUNTIFNIV087TG87MDtMOzs7OztOOzs7OzsKKzE1MUU7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBTSFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTFGO0NBTkFESUFOIFNZTExBQklDUyBTSFdPTztMbzswO0w7Ozs7O047Ozs7OworMTUyMDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFNIV09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTIxO0NBTkFESUFOIFNZTExBQklDUyBTSFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTIyO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgU0hXQTtMbzswO0w7Ozs7O047Ozs7OworMTUyMztDQU5BRElBTiBTWUxMQUJJQ1MgU0hXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1MjQ7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBTSFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTUyNTtDQU5BRElBTiBTWUxMQUJJQ1MgU0g7TG87MDtMOzs7OztOOzs7OzsKKzE1MjY7Q0FOQURJQU4gU1lMTEFCSUNTIFlFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTI3O0NBTkFESUFOIFNZTExBQklDUyBZQUFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTI4O0NBTkFESUFOIFNZTExBQklDUyBZSTtMbzswO0w7Ozs7O047Ozs7OworMTUyOTtDQU5BRElBTiBTWUxMQUJJQ1MgWUlJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTJBO0NBTkFESUFOIFNZTExBQklDUyBZTztMbzswO0w7Ozs7O047Ozs7OworMTUyQjtDQU5BRElBTiBTWUxMQUJJQ1MgWU9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTJDO0NBTkFESUFOIFNZTExBQklDUyBZLUNSRUUgWU9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTJEO0NBTkFESUFOIFNZTExBQklDUyBZQTtMbzswO0w7Ozs7O047Ozs7OworMTUyRTtDQU5BRElBTiBTWUxMQUJJQ1MgWUFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTJGO0NBTkFESUFOIFNZTExBQklDUyBZV0U7TG87MDtMOzs7OztOOzs7OzsKKzE1MzA7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBZV0U7TG87MDtMOzs7OztOOzs7OzsKKzE1MzE7Q0FOQURJQU4gU1lMTEFCSUNTIFlXSTtMbzswO0w7Ozs7O047Ozs7OworMTUzMjtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFlXSTtMbzswO0w7Ozs7O047Ozs7OworMTUzMztDQU5BRElBTiBTWUxMQUJJQ1MgWVdJSTtMbzswO0w7Ozs7O047Ozs7OworMTUzNDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFlXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE1MzU7Q0FOQURJQU4gU1lMTEFCSUNTIFlXTztMbzswO0w7Ozs7O047Ozs7OworMTUzNjtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFlXTztMbzswO0w7Ozs7O047Ozs7OworMTUzNztDQU5BRElBTiBTWUxMQUJJQ1MgWVdPTztMbzswO0w7Ozs7O047Ozs7OworMTUzODtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFlXT087TG87MDtMOzs7OztOOzs7OzsKKzE1Mzk7Q0FOQURJQU4gU1lMTEFCSUNTIFlXQTtMbzswO0w7Ozs7O047Ozs7OworMTUzQTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFlXQTtMbzswO0w7Ozs7O047Ozs7OworMTUzQjtDQU5BRElBTiBTWUxMQUJJQ1MgWVdBQTtMbzswO0w7Ozs7O047Ozs7OworMTUzQztDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFlXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1M0Q7Q0FOQURJQU4gU1lMTEFCSUNTIE5BU0tBUEkgWVdBQTtMbzswO0w7Ozs7O047Ozs7OworMTUzRTtDQU5BRElBTiBTWUxMQUJJQ1MgWTtMbzswO0w7Ozs7O047Ozs7OworMTUzRjtDQU5BRElBTiBTWUxMQUJJQ1MgQklCTEUtQ1JFRSBZO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTQwO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgWTtMbzswO0w7Ozs7O047Ozs7OworMTU0MTtDQU5BRElBTiBTWUxMQUJJQ1MgU0FZSVNJIFlJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTQyO0NBTkFESUFOIFNZTExBQklDUyBSRTtMbzswO0w7Ozs7O047Ozs7OworMTU0MztDQU5BRElBTiBTWUxMQUJJQ1MgUi1DUkVFIFJFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTQ0O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTEU7TG87MDtMOzs7OztOOzs7OzsKKzE1NDU7Q0FOQURJQU4gU1lMTEFCSUNTIFJBQUk7TG87MDtMOzs7OztOOzs7OzsKKzE1NDY7Q0FOQURJQU4gU1lMTEFCSUNTIFJJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTQ3O0NBTkFESUFOIFNZTExBQklDUyBSSUk7TG87MDtMOzs7OztOOzs7OzsKKzE1NDg7Q0FOQURJQU4gU1lMTEFCSUNTIFJPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTQ5O0NBTkFESUFOIFNZTExBQklDUyBST087TG87MDtMOzs7OztOOzs7OzsKKzE1NEE7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBMTztMbzswO0w7Ozs7O047Ozs7OworMTU0QjtDQU5BRElBTiBTWUxMQUJJQ1MgUkE7TG87MDtMOzs7OztOOzs7OzsKKzE1NEM7Q0FOQURJQU4gU1lMTEFCSUNTIFJBQTtMbzswO0w7Ozs7O047Ozs7OworMTU0RDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTRFO0NBTkFESUFOIFNZTExBQklDUyBSV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTRGO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgUldBQTtMbzswO0w7Ozs7O047Ozs7OworMTU1MDtDQU5BRElBTiBTWUxMQUJJQ1MgUjtMbzswO0w7Ozs7O047Ozs7OworMTU1MTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFI7TG87MDtMOzs7OztOOzs7OzsKKzE1NTI7Q0FOQURJQU4gU1lMTEFCSUNTIE1FRElBTCBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTUzO0NBTkFESUFOIFNZTExBQklDUyBGRTtMbzswO0w7Ozs7O047Ozs7OworMTU1NDtDQU5BRElBTiBTWUxMQUJJQ1MgRkFBSTtMbzswO0w7Ozs7O047Ozs7OworMTU1NTtDQU5BRElBTiBTWUxMQUJJQ1MgRkk7TG87MDtMOzs7OztOOzs7OzsKKzE1NTY7Q0FOQURJQU4gU1lMTEFCSUNTIEZJSTtMbzswO0w7Ozs7O047Ozs7OworMTU1NztDQU5BRElBTiBTWUxMQUJJQ1MgRk87TG87MDtMOzs7OztOOzs7OzsKKzE1NTg7Q0FOQURJQU4gU1lMTEFCSUNTIEZPTztMbzswO0w7Ozs7O047Ozs7OworMTU1OTtDQU5BRElBTiBTWUxMQUJJQ1MgRkE7TG87MDtMOzs7OztOOzs7OzsKKzE1NUE7Q0FOQURJQU4gU1lMTEFCSUNTIEZBQTtMbzswO0w7Ozs7O047Ozs7OworMTU1QjtDQU5BRElBTiBTWUxMQUJJQ1MgRldBQTtMbzswO0w7Ozs7O047Ozs7OworMTU1QztDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIEZXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1NUQ7Q0FOQURJQU4gU1lMTEFCSUNTIEY7TG87MDtMOzs7OztOOzs7OzsKKzE1NUU7Q0FOQURJQU4gU1lMTEFCSUNTIFRIRTtMbzswO0w7Ozs7O047Ozs7OworMTU1RjtDQU5BRElBTiBTWUxMQUJJQ1MgTi1DUkVFIFRIRTtMbzswO0w7Ozs7O047Ozs7OworMTU2MDtDQU5BRElBTiBTWUxMQUJJQ1MgVEhJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTYxO0NBTkFESUFOIFNZTExBQklDUyBOLUNSRUUgVEhJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTYyO0NBTkFESUFOIFNZTExBQklDUyBUSElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTYzO0NBTkFESUFOIFNZTExBQklDUyBOLUNSRUUgVEhJSTtMbzswO0w7Ozs7O047Ozs7OworMTU2NDtDQU5BRElBTiBTWUxMQUJJQ1MgVEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTY1O0NBTkFESUFOIFNZTExBQklDUyBUSE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTY2O0NBTkFESUFOIFNZTExBQklDUyBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzE1Njc7Q0FOQURJQU4gU1lMTEFCSUNTIFRIQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1Njg7Q0FOQURJQU4gU1lMTEFCSUNTIFRIV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTY5O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgVEhXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1NkE7Q0FOQURJQU4gU1lMTEFCSUNTIFRIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTZCO0NBTkFESUFOIFNZTExBQklDUyBUVEhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTZDO0NBTkFESUFOIFNZTExBQklDUyBUVEhJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTZEO0NBTkFESUFOIFNZTExBQklDUyBUVEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTZFO0NBTkFESUFOIFNZTExBQklDUyBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTZGO0NBTkFESUFOIFNZTExBQklDUyBUVEg7TG87MDtMOzs7OztOOzs7OzsKKzE1NzA7Q0FOQURJQU4gU1lMTEFCSUNTIFRZRTtMbzswO0w7Ozs7O047Ozs7OworMTU3MTtDQU5BRElBTiBTWUxMQUJJQ1MgVFlJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTcyO0NBTkFESUFOIFNZTExBQklDUyBUWU87TG87MDtMOzs7OztOOzs7OzsKKzE1NzM7Q0FOQURJQU4gU1lMTEFCSUNTIFRZQTtMbzswO0w7Ozs7O047Ozs7OworMTU3NDtDQU5BRElBTiBTWUxMQUJJQ1MgTlVOQVZJSyBIRTtMbzswO0w7Ozs7O047Ozs7OworMTU3NTtDQU5BRElBTiBTWUxMQUJJQ1MgTlVOQVZJSyBISTtMbzswO0w7Ozs7O047Ozs7OworMTU3NjtDQU5BRElBTiBTWUxMQUJJQ1MgTlVOQVZJSyBISUk7TG87MDtMOzs7OztOOzs7OzsKKzE1Nzc7Q0FOQURJQU4gU1lMTEFCSUNTIE5VTkFWSUsgSE87TG87MDtMOzs7OztOOzs7OzsKKzE1Nzg7Q0FOQURJQU4gU1lMTEFCSUNTIE5VTkFWSUsgSE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTc5O0NBTkFESUFOIFNZTExBQklDUyBOVU5BVklLIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTdBO0NBTkFESUFOIFNZTExBQklDUyBOVU5BVklLIEhBQTtMbzswO0w7Ozs7O047Ozs7OworMTU3QjtDQU5BRElBTiBTWUxMQUJJQ1MgTlVOQVZJSyBIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTdDO0NBTkFESUFOIFNZTExBQklDUyBOVU5BVlVUIEg7TG87MDtMOzs7OztOOzs7OzsKKzE1N0Q7Q0FOQURJQU4gU1lMTEFCSUNTIEhLO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTdFO0NBTkFESUFOIFNZTExBQklDUyBRQUFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTdGO0NBTkFESUFOIFNZTExBQklDUyBRSTtMbzswO0w7Ozs7O047Ozs7OworMTU4MDtDQU5BRElBTiBTWUxMQUJJQ1MgUUlJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTgxO0NBTkFESUFOIFNZTExBQklDUyBRTztMbzswO0w7Ozs7O047Ozs7OworMTU4MjtDQU5BRElBTiBTWUxMQUJJQ1MgUU9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTgzO0NBTkFESUFOIFNZTExBQklDUyBRQTtMbzswO0w7Ozs7O047Ozs7OworMTU4NDtDQU5BRElBTiBTWUxMQUJJQ1MgUUFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTg1O0NBTkFESUFOIFNZTExBQklDUyBRO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTg2O0NBTkFESUFOIFNZTExBQklDUyBUTEhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTg3O0NBTkFESUFOIFNZTExBQklDUyBUTEhJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTg4O0NBTkFESUFOIFNZTExBQklDUyBUTEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTg5O0NBTkFESUFOIFNZTExBQklDUyBUTEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNThBO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgUkU7TG87MDtMOzs7OztOOzs7OzsKKzE1OEI7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBSSTtMbzswO0w7Ozs7O047Ozs7OworMTU4QztDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFJPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNThEO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgUkE7TG87MDtMOzs7OztOOzs7OzsKKzE1OEU7Q0FOQURJQU4gU1lMTEFCSUNTIE5HQUFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNThGO0NBTkFESUFOIFNZTExBQklDUyBOR0k7TG87MDtMOzs7OztOOzs7OzsKKzE1OTA7Q0FOQURJQU4gU1lMTEFCSUNTIE5HSUk7TG87MDtMOzs7OztOOzs7OzsKKzE1OTE7Q0FOQURJQU4gU1lMTEFCSUNTIE5HTztMbzswO0w7Ozs7O047Ozs7OworMTU5MjtDQU5BRElBTiBTWUxMQUJJQ1MgTkdPTztMbzswO0w7Ozs7O047Ozs7OworMTU5MztDQU5BRElBTiBTWUxMQUJJQ1MgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTk0O0NBTkFESUFOIFNZTExBQklDUyBOR0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTk1O0NBTkFESUFOIFNZTExBQklDUyBORztMbzswO0w7Ozs7O047Ozs7OworMTU5NjtDQU5BRElBTiBTWUxMQUJJQ1MgTk5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTk3O0NBTkFESUFOIFNZTExBQklDUyBTQVlJU0kgU0hFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTk4O0NBTkFESUFOIFNZTExBQklDUyBTQVlJU0kgU0hJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTk5O0NBTkFESUFOIFNZTExBQklDUyBTQVlJU0kgU0hPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTlBO0NBTkFESUFOIFNZTExBQklDUyBTQVlJU0kgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTlCO0NBTkFESUFOIFNZTExBQklDUyBXT09EUy1DUkVFIFRIRTtMbzswO0w7Ozs7O047Ozs7OworMTU5QztDQU5BRElBTiBTWUxMQUJJQ1MgV09PRFMtQ1JFRSBUSEk7TG87MDtMOzs7OztOOzs7OzsKKzE1OUQ7Q0FOQURJQU4gU1lMTEFCSUNTIFdPT0RTLUNSRUUgVEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTlFO0NBTkFESUFOIFNZTExBQklDUyBXT09EUy1DUkVFIFRIQTtMbzswO0w7Ozs7O047Ozs7OworMTU5RjtDQU5BRElBTiBTWUxMQUJJQ1MgV09PRFMtQ1JFRSBUSDtMbzswO0w7Ozs7O047Ozs7OworMTVBMDtDQU5BRElBTiBTWUxMQUJJQ1MgTEhJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUExO0NBTkFESUFOIFNZTExBQklDUyBMSElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUEyO0NBTkFESUFOIFNZTExBQklDUyBMSE87TG87MDtMOzs7OztOOzs7OzsKKzE1QTM7Q0FOQURJQU4gU1lMTEFCSUNTIExIT087TG87MDtMOzs7OztOOzs7OzsKKzE1QTQ7Q0FOQURJQU4gU1lMTEFCSUNTIExIQTtMbzswO0w7Ozs7O047Ozs7OworMTVBNTtDQU5BRElBTiBTWUxMQUJJQ1MgTEhBQTtMbzswO0w7Ozs7O047Ozs7OworMTVBNjtDQU5BRElBTiBTWUxMQUJJQ1MgTEg7TG87MDtMOzs7OztOOzs7OzsKKzE1QTc7Q0FOQURJQU4gU1lMTEFCSUNTIFRILUNSRUUgVEhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUE4O0NBTkFESUFOIFNZTExBQklDUyBUSC1DUkVFIFRISTtMbzswO0w7Ozs7O047Ozs7OworMTVBOTtDQU5BRElBTiBTWUxMQUJJQ1MgVEgtQ1JFRSBUSElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUFBO0NBTkFESUFOIFNZTExBQklDUyBUSC1DUkVFIFRITztMbzswO0w7Ozs7O047Ozs7OworMTVBQjtDQU5BRElBTiBTWUxMQUJJQ1MgVEgtQ1JFRSBUSE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUFDO0NBTkFESUFOIFNZTExBQklDUyBUSC1DUkVFIFRIQTtMbzswO0w7Ozs7O047Ozs7OworMTVBRDtDQU5BRElBTiBTWUxMQUJJQ1MgVEgtQ1JFRSBUSEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUFFO0NBTkFESUFOIFNZTExBQklDUyBUSC1DUkVFIFRIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUFGO0NBTkFESUFOIFNZTExBQklDUyBBSVZJTElLIEI7TG87MDtMOzs7OztOOzs7OzsKKzE1QjA7Q0FOQURJQU4gU1lMTEFCSUNTIEJMQUNLRk9PVCBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUIxO0NBTkFESUFOIFNZTExBQklDUyBCTEFDS0ZPT1QgSTtMbzswO0w7Ozs7O047Ozs7OworMTVCMjtDQU5BRElBTiBTWUxMQUJJQ1MgQkxBQ0tGT09UIE87TG87MDtMOzs7OztOOzs7OzsKKzE1QjM7Q0FOQURJQU4gU1lMTEFCSUNTIEJMQUNLRk9PVCBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUI0O0NBTkFESUFOIFNZTExBQklDUyBCTEFDS0ZPT1QgV0U7TG87MDtMOzs7OztOOzs7OzsKKzE1QjU7Q0FOQURJQU4gU1lMTEFCSUNTIEJMQUNLRk9PVCBXSTtMbzswO0w7Ozs7O047Ozs7OworMTVCNjtDQU5BRElBTiBTWUxMQUJJQ1MgQkxBQ0tGT09UIFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUI3O0NBTkFESUFOIFNZTExBQklDUyBCTEFDS0ZPT1QgV0E7TG87MDtMOzs7OztOOzs7OzsKKzE1Qjg7Q0FOQURJQU4gU1lMTEFCSUNTIEJMQUNLRk9PVCBORTtMbzswO0w7Ozs7O047Ozs7OworMTVCOTtDQU5BRElBTiBTWUxMQUJJQ1MgQkxBQ0tGT09UIE5JO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUJBO0NBTkFESUFOIFNZTExBQklDUyBCTEFDS0ZPT1QgTk87TG87MDtMOzs7OztOOzs7OzsKKzE1QkI7Q0FOQURJQU4gU1lMTEFCSUNTIEJMQUNLRk9PVCBOQTtMbzswO0w7Ozs7O047Ozs7OworMTVCQztDQU5BRElBTiBTWUxMQUJJQ1MgQkxBQ0tGT09UIEtFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUJEO0NBTkFESUFOIFNZTExBQklDUyBCTEFDS0ZPT1QgS0k7TG87MDtMOzs7OztOOzs7OzsKKzE1QkU7Q0FOQURJQU4gU1lMTEFCSUNTIEJMQUNLRk9PVCBLTztMbzswO0w7Ozs7O047Ozs7OworMTVCRjtDQU5BRElBTiBTWUxMQUJJQ1MgQkxBQ0tGT09UIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUMwO0NBTkFESUFOIFNZTExBQklDUyBTQVlJU0kgSEU7TG87MDtMOzs7OztOOzs7OzsKKzE1QzE7Q0FOQURJQU4gU1lMTEFCSUNTIFNBWUlTSSBISTtMbzswO0w7Ozs7O047Ozs7OworMTVDMjtDQU5BRElBTiBTWUxMQUJJQ1MgU0FZSVNJIEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUMzO0NBTkFESUFOIFNZTExBQklDUyBTQVlJU0kgSEE7TG87MDtMOzs7OztOOzs7OzsKKzE1QzQ7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgR0hVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUM1O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEdITztMbzswO0w7Ozs7O047Ozs7OworMTVDNjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBHSEU7TG87MDtMOzs7OztOOzs7OzsKKzE1Qzc7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgR0hFRTtMbzswO0w7Ozs7O047Ozs7OworMTVDODtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBHSEk7TG87MDtMOzs7OztOOzs7OzsKKzE1Qzk7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgR0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUNBO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFJVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUNCO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFJPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUNDO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFJFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUNEO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFJFRTtMbzswO0w7Ozs7O047Ozs7OworMTVDRTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBSSTtMbzswO0w7Ozs7O047Ozs7OworMTVDRjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBSQTtMbzswO0w7Ozs7O047Ozs7OworMTVEMDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBXVTtMbzswO0w7Ozs7O047Ozs7OworMTVEMTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBXTztMbzswO0w7Ozs7O047Ozs7OworMTVEMjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBXRTtMbzswO0w7Ozs7O047Ozs7OworMTVEMztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBXRUU7TG87MDtMOzs7OztOOzs7OzsKKzE1RDQ7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgV0k7TG87MDtMOzs7OztOOzs7OzsKKzE1RDU7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgV0E7TG87MDtMOzs7OztOOzs7OzsKKzE1RDY7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSFdVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUQ3O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEhXTztMbzswO0w7Ozs7O047Ozs7OworMTVEODtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBIV0U7TG87MDtMOzs7OztOOzs7OzsKKzE1RDk7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSFdFRTtMbzswO0w7Ozs7O047Ozs7OworMTVEQTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBIV0k7TG87MDtMOzs7OztOOzs7OzsKKzE1REI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNURDO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRIVTtMbzswO0w7Ozs7O047Ozs7OworMTVERDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUSE87TG87MDtMOzs7OztOOzs7OzsKKzE1REU7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVEhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNURGO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRIRUU7TG87MDtMOzs7OztOOzs7OzsKKzE1RTA7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVEhJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUUxO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRIQTtMbzswO0w7Ozs7O047Ozs7OworMTVFMjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUVFU7TG87MDtMOzs7OztOOzs7OzsKKzE1RTM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFRPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUU0O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRURTtMbzswO0w7Ozs7O047Ozs7OworMTVFNTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUVEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUU2O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRUSTtMbzswO0w7Ozs7O047Ozs7OworMTVFNztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUVEE7TG87MDtMOzs7OztOOzs7OzsKKzE1RTg7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgUFU7TG87MDtMOzs7OztOOzs7OzsKKzE1RTk7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgUE87TG87MDtMOzs7OztOOzs7OzsKKzE1RUE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgUEU7TG87MDtMOzs7OztOOzs7OzsKKzE1RUI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgUEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUVDO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUVEO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUVFO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFA7TG87MDtMOzs7OztOOzs7OzsKKzE1RUY7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgR1U7TG87MDtMOzs7OztOOzs7OzsKKzE1RjA7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgR087TG87MDtMOzs7OztOOzs7OzsKKzE1RjE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgR0U7TG87MDtMOzs7OztOOzs7OzsKKzE1RjI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgR0VFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUYzO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUY0O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUY1O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEtIVTtMbzswO0w7Ozs7O047Ozs7OworMTVGNjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBLSE87TG87MDtMOzs7OztOOzs7OzsKKzE1Rjc7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgS0hFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUY4O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEtIRUU7TG87MDtMOzs7OztOOzs7OzsKKzE1Rjk7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgS0hJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUZBO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMTVGQjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBLS1U7TG87MDtMOzs7OztOOzs7OzsKKzE1RkM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgS0tPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUZEO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEtLRTtMbzswO0w7Ozs7O047Ozs7OworMTVGRTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBLS0VFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUZGO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEtLSTtMbzswO0w7Ozs7O047Ozs7OworMTYwMDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBLS0E7TG87MDtMOzs7OztOOzs7OzsKKzE2MDE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgS0s7TG87MDtMOzs7OztOOzs7OzsKKzE2MDI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgTlU7TG87MDtMOzs7OztOOzs7OzsKKzE2MDM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgTk87TG87MDtMOzs7OztOOzs7OzsKKzE2MDQ7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgTkU7TG87MDtMOzs7OztOOzs7OzsKKzE2MDU7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgTkVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjA2O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIE5JO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjA3O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjA4O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIE1VO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjA5O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIE1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjBBO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIE1FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjBCO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIE1FRTtMbzswO0w7Ozs7O047Ozs7OworMTYwQztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBNSTtMbzswO0w7Ozs7O047Ozs7OworMTYwRDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMTYwRTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBZVTtMbzswO0w7Ozs7O047Ozs7OworMTYwRjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBZTztMbzswO0w7Ozs7O047Ozs7OworMTYxMDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBZRTtMbzswO0w7Ozs7O047Ozs7OworMTYxMTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBZRUU7TG87MDtMOzs7OztOOzs7OzsKKzE2MTI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWUk7TG87MDtMOzs7OztOOzs7OzsKKzE2MTM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzE2MTQ7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSlU7TG87MDtMOzs7OztOOzs7OzsKKzE2MTU7Q0FOQURJQU4gU1lMTEFCSUNTIFNBWUlTSSBKVTtMbzswO0w7Ozs7O047Ozs7OworMTYxNjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBKTztMbzswO0w7Ozs7O047Ozs7OworMTYxNztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBKRTtMbzswO0w7Ozs7O047Ozs7OworMTYxODtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBKRUU7TG87MDtMOzs7OztOOzs7OzsKKzE2MTk7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSkk7TG87MDtMOzs7OztOOzs7OzsKKzE2MUE7Q0FOQURJQU4gU1lMTEFCSUNTIFNBWUlTSSBKSTtMbzswO0w7Ozs7O047Ozs7OworMTYxQjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMTYxQztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBKSlU7TG87MDtMOzs7OztOOzs7OzsKKzE2MUQ7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSkpPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjFFO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEpKRTtMbzswO0w7Ozs7O047Ozs7OworMTYxRjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBKSkVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjIwO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEpKSTtMbzswO0w7Ozs7O047Ozs7OworMTYyMTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBKSkE7TG87MDtMOzs7OztOOzs7OzsKKzE2MjI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgTFU7TG87MDtMOzs7OztOOzs7OzsKKzE2MjM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgTE87TG87MDtMOzs7OztOOzs7OzsKKzE2MjQ7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgTEU7TG87MDtMOzs7OztOOzs7OzsKKzE2MjU7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgTEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjI2O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIExJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjI3O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjI4O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIERMVTtMbzswO0w7Ozs7O047Ozs7OworMTYyOTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBETE87TG87MDtMOzs7OztOOzs7OzsKKzE2MkE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgRExFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjJCO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIERMRUU7TG87MDtMOzs7OztOOzs7OzsKKzE2MkM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgRExJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjJEO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIERMQTtMbzswO0w7Ozs7O047Ozs7OworMTYyRTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBMSFU7TG87MDtMOzs7OztOOzs7OzsKKzE2MkY7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgTEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjMwO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIExIRTtMbzswO0w7Ozs7O047Ozs7OworMTYzMTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBMSEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjMyO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIExISTtMbzswO0w7Ozs7O047Ozs7OworMTYzMztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBMSEE7TG87MDtMOzs7OztOOzs7OzsKKzE2MzQ7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVExIVTtMbzswO0w7Ozs7O047Ozs7OworMTYzNTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUTEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjM2O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRMSEU7TG87MDtMOzs7OztOOzs7OzsKKzE2Mzc7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVExIRUU7TG87MDtMOzs7OztOOzs7OzsKKzE2Mzg7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVExISTtMbzswO0w7Ozs7O047Ozs7OworMTYzOTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUTEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjNBO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRMVTtMbzswO0w7Ozs7O047Ozs7OworMTYzQjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUTE87TG87MDtMOzs7OztOOzs7OzsKKzE2M0M7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVExFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjNEO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRMRUU7TG87MDtMOzs7OztOOzs7OzsKKzE2M0U7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVExJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjNGO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRMQTtMbzswO0w7Ozs7O047Ozs7OworMTY0MDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBaVTtMbzswO0w7Ozs7O047Ozs7OworMTY0MTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBaTztMbzswO0w7Ozs7O047Ozs7OworMTY0MjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBaRTtMbzswO0w7Ozs7O047Ozs7OworMTY0MztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBaRUU7TG87MDtMOzs7OztOOzs7OzsKKzE2NDQ7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWkk7TG87MDtMOzs7OztOOzs7OzsKKzE2NDU7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWkE7TG87MDtMOzs7OztOOzs7OzsKKzE2NDY7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWjtMbzswO0w7Ozs7O047Ozs7OworMTY0NztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBJTklUSUFMIFo7TG87MDtMOzs7OztOOzs7OzsKKzE2NDg7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgRFpVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjQ5O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIERaTztMbzswO0w7Ozs7O047Ozs7OworMTY0QTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBEWkU7TG87MDtMOzs7OztOOzs7OzsKKzE2NEI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgRFpFRTtMbzswO0w7Ozs7O047Ozs7OworMTY0QztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBEWkk7TG87MDtMOzs7OztOOzs7OzsKKzE2NEQ7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgRFpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjRFO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFNVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjRGO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFNPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjUwO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFNFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjUxO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFNFRTtMbzswO0w7Ozs7O047Ozs7OworMTY1MjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBTSTtMbzswO0w7Ozs7O047Ozs7OworMTY1MztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMTY1NDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBTSFU7TG87MDtMOzs7OztOOzs7OzsKKzE2NTU7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgU0hPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjU2O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFNIRTtMbzswO0w7Ozs7O047Ozs7OworMTY1NztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBTSEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjU4O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFNISTtMbzswO0w7Ozs7O047Ozs7OworMTY1OTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBTSEE7TG87MDtMOzs7OztOOzs7OzsKKzE2NUE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgU0g7TG87MDtMOzs7OztOOzs7OzsKKzE2NUI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFNVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjVDO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRTTztMbzswO0w7Ozs7O047Ozs7OworMTY1RDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUU0U7TG87MDtMOzs7OztOOzs7OzsKKzE2NUU7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFNFRTtMbzswO0w7Ozs7O047Ozs7OworMTY1RjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUU0k7TG87MDtMOzs7OztOOzs7OzsKKzE2NjA7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjYxO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIENIVTtMbzswO0w7Ozs7O047Ozs7OworMTY2MjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBDSE87TG87MDtMOzs7OztOOzs7OzsKKzE2NjM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgQ0hFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjY0O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIENIRUU7TG87MDtMOzs7OztOOzs7OzsKKzE2NjU7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgQ0hJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjY2O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMTY2NztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUVFNVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjY4O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRUU087TG87MDtMOzs7OztOOzs7OzsKKzE2Njk7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFRTRTtMbzswO0w7Ozs7O047Ozs7OworMTY2QTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUVFNFRTtMbzswO0w7Ozs7O047Ozs7OworMTY2QjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUVFNJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjZDO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRUU0E7TG87MDtMOzs7OztOOzs7OzsKKzE2NkQ7Q0FOQURJQU4gU1lMTEFCSUNTIENISSBTSUdOO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxNjZFO0NBTkFESUFOIFNZTExBQklDUyBGVUxMIFNUT1A7UG87MDtMOzs7OztOOzs7OzsKKzE2NkY7Q0FOQURJQU4gU1lMTEFCSUNTIFFBSTtMbzswO0w7Ozs7O047Ozs7OworMTY3MDtDQU5BRElBTiBTWUxMQUJJQ1MgTkdBSTtMbzswO0w7Ozs7O047Ozs7OworMTY3MTtDQU5BRElBTiBTWUxMQUJJQ1MgTk5HSTtMbzswO0w7Ozs7O047Ozs7OworMTY3MjtDQU5BRElBTiBTWUxMQUJJQ1MgTk5HSUk7TG87MDtMOzs7OztOOzs7OzsKKzE2NzM7Q0FOQURJQU4gU1lMTEFCSUNTIE5OR087TG87MDtMOzs7OztOOzs7OzsKKzE2NzQ7Q0FOQURJQU4gU1lMTEFCSUNTIE5OR09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjc1O0NBTkFESUFOIFNZTExBQklDUyBOTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjc2O0NBTkFESUFOIFNZTExBQklDUyBOTkdBQTtMbzswO0w7Ozs7O047Ozs7OworMTY4MDtPR0hBTSBTUEFDRSBNQVJLO1pzOzA7V1M7Ozs7O047Ozs7OworMTY4MTtPR0hBTSBMRVRURVIgQkVJVEg7TG87MDtMOzs7OztOOzs7OzsKKzE2ODI7T0dIQU0gTEVUVEVSIExVSVM7TG87MDtMOzs7OztOOzs7OzsKKzE2ODM7T0dIQU0gTEVUVEVSIEZFQVJOO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjg0O09HSEFNIExFVFRFUiBTQUlMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjg1O09HSEFNIExFVFRFUiBOSU9OO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjg2O09HSEFNIExFVFRFUiBVQVRIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjg3O09HSEFNIExFVFRFUiBEQUlSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjg4O09HSEFNIExFVFRFUiBUSU5ORTtMbzswO0w7Ozs7O047Ozs7OworMTY4OTtPR0hBTSBMRVRURVIgQ09MTDtMbzswO0w7Ozs7O047Ozs7OworMTY4QTtPR0hBTSBMRVRURVIgQ0VJUlQ7TG87MDtMOzs7OztOOzs7OzsKKzE2OEI7T0dIQU0gTEVUVEVSIE1VSU47TG87MDtMOzs7OztOOzs7OzsKKzE2OEM7T0dIQU0gTEVUVEVSIEdPUlQ7TG87MDtMOzs7OztOOzs7OzsKKzE2OEQ7T0dIQU0gTEVUVEVSIE5HRUFEQUw7TG87MDtMOzs7OztOOzs7OzsKKzE2OEU7T0dIQU0gTEVUVEVSIFNUUkFJRjtMbzswO0w7Ozs7O047Ozs7OworMTY4RjtPR0hBTSBMRVRURVIgUlVJUztMbzswO0w7Ozs7O047Ozs7OworMTY5MDtPR0hBTSBMRVRURVIgQUlMTTtMbzswO0w7Ozs7O047Ozs7OworMTY5MTtPR0hBTSBMRVRURVIgT05OO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjkyO09HSEFNIExFVFRFUiBVUjtMbzswO0w7Ozs7O047Ozs7OworMTY5MztPR0hBTSBMRVRURVIgRUFESEFESDtMbzswO0w7Ozs7O047Ozs7OworMTY5NDtPR0hBTSBMRVRURVIgSU9ESEFESDtMbzswO0w7Ozs7O047Ozs7OworMTY5NTtPR0hBTSBMRVRURVIgRUFCSEFESDtMbzswO0w7Ozs7O047Ozs7OworMTY5NjtPR0hBTSBMRVRURVIgT1I7TG87MDtMOzs7OztOOzs7OzsKKzE2OTc7T0dIQU0gTEVUVEVSIFVJTExFQU5OO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjk4O09HSEFNIExFVFRFUiBJRklOO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjk5O09HSEFNIExFVFRFUiBFQU1IQU5DSE9MTDtMbzswO0w7Ozs7O047Ozs7OworMTY5QTtPR0hBTSBMRVRURVIgUEVJVEg7TG87MDtMOzs7OztOOzs7OzsKKzE2OUI7T0dIQU0gRkVBVEhFUiBNQVJLO1BzOzA7T047Ozs7O047Ozs7OworMTY5QztPR0hBTSBSRVZFUlNFRCBGRUFUSEVSIE1BUks7UGU7MDtPTjs7Ozs7Tjs7Ozs7CisxNkEwO1JVTklDIExFVFRFUiBGRUhVIEZFT0ggRkUgRjtMbzswO0w7Ozs7O047Ozs7OworMTZBMTtSVU5JQyBMRVRURVIgVjtMbzswO0w7Ozs7O047Ozs7OworMTZBMjtSVU5JQyBMRVRURVIgVVJVWiBVUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkEzO1JVTklDIExFVFRFUiBZUjtMbzswO0w7Ozs7O047Ozs7OworMTZBNDtSVU5JQyBMRVRURVIgWTtMbzswO0w7Ozs7O047Ozs7OworMTZBNTtSVU5JQyBMRVRURVIgVztMbzswO0w7Ozs7O047Ozs7OworMTZBNjtSVU5JQyBMRVRURVIgVEhVUklTQVogVEhVUlMgVEhPUk47TG87MDtMOzs7OztOOzs7OzsKKzE2QTc7UlVOSUMgTEVUVEVSIEVUSDtMbzswO0w7Ozs7O047Ozs7OworMTZBODtSVU5JQyBMRVRURVIgQU5TVVogQTtMbzswO0w7Ozs7O047Ozs7OworMTZBOTtSVU5JQyBMRVRURVIgT1MgTztMbzswO0w7Ozs7O047Ozs7OworMTZBQTtSVU5JQyBMRVRURVIgQUMgQTtMbzswO0w7Ozs7O047Ozs7OworMTZBQjtSVU5JQyBMRVRURVIgQUVTQztMbzswO0w7Ozs7O047Ozs7OworMTZBQztSVU5JQyBMRVRURVIgTE9ORy1CUkFOQ0gtT1NTIE87TG87MDtMOzs7OztOOzs7OzsKKzE2QUQ7UlVOSUMgTEVUVEVSIFNIT1JULVRXSUctT1NTIE87TG87MDtMOzs7OztOOzs7OzsKKzE2QUU7UlVOSUMgTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzE2QUY7UlVOSUMgTEVUVEVSIE9FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkIwO1JVTklDIExFVFRFUiBPTjtMbzswO0w7Ozs7O047Ozs7OworMTZCMTtSVU5JQyBMRVRURVIgUkFJRE8gUkFEIFJFSUQgUjtMbzswO0w7Ozs7O047Ozs7OworMTZCMjtSVU5JQyBMRVRURVIgS0FVTkE7TG87MDtMOzs7OztOOzs7OzsKKzE2QjM7UlVOSUMgTEVUVEVSIENFTjtMbzswO0w7Ozs7O047Ozs7OworMTZCNDtSVU5JQyBMRVRURVIgS0FVTiBLO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkI1O1JVTklDIExFVFRFUiBHO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkI2O1JVTklDIExFVFRFUiBFTkc7TG87MDtMOzs7OztOOzs7OzsKKzE2Qjc7UlVOSUMgTEVUVEVSIEdFQk8gR1lGVSBHO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkI4O1JVTklDIExFVFRFUiBHQVI7TG87MDtMOzs7OztOOzs7OzsKKzE2Qjk7UlVOSUMgTEVUVEVSIFdVTkpPIFdZTk4gVztMbzswO0w7Ozs7O047Ozs7OworMTZCQTtSVU5JQyBMRVRURVIgSEFHTEFaIEg7TG87MDtMOzs7OztOOzs7OzsKKzE2QkI7UlVOSUMgTEVUVEVSIEhBRUdMIEg7TG87MDtMOzs7OztOOzs7OzsKKzE2QkM7UlVOSUMgTEVUVEVSIExPTkctQlJBTkNILUhBR0FMTCBIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkJEO1JVTklDIExFVFRFUiBTSE9SVC1UV0lHLUhBR0FMTCBIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkJFO1JVTklDIExFVFRFUiBOQVVESVogTllEIE5BVUQgTjtMbzswO0w7Ozs7O047Ozs7OworMTZCRjtSVU5JQyBMRVRURVIgU0hPUlQtVFdJRy1OQVVEIE47TG87MDtMOzs7OztOOzs7OzsKKzE2QzA7UlVOSUMgTEVUVEVSIERPVFRFRC1OO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkMxO1JVTklDIExFVFRFUiBJU0FaIElTIElTUyBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkMyO1JVTklDIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkMzO1JVTklDIExFVFRFUiBKRVJBTiBKO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkM0O1JVTklDIExFVFRFUiBHRVI7TG87MDtMOzs7OztOOzs7OzsKKzE2QzU7UlVOSUMgTEVUVEVSIExPTkctQlJBTkNILUFSIEFFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkM2O1JVTklDIExFVFRFUiBTSE9SVC1UV0lHLUFSIEE7TG87MDtMOzs7OztOOzs7OzsKKzE2Qzc7UlVOSUMgTEVUVEVSIElXQVogRU9IO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkM4O1JVTklDIExFVFRFUiBQRVJUSE8gUEVPUlRIIFA7TG87MDtMOzs7OztOOzs7OzsKKzE2Qzk7UlVOSUMgTEVUVEVSIEFMR0laIEVPTEhYO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkNBO1JVTklDIExFVFRFUiBTT1dJTE8gUztMbzswO0w7Ozs7O047Ozs7OworMTZDQjtSVU5JQyBMRVRURVIgU0lHRUwgTE9ORy1CUkFOQ0gtU09MIFM7TG87MDtMOzs7OztOOzs7OzsKKzE2Q0M7UlVOSUMgTEVUVEVSIFNIT1JULVRXSUctU09MIFM7TG87MDtMOzs7OztOOzs7OzsKKzE2Q0Q7UlVOSUMgTEVUVEVSIEM7TG87MDtMOzs7OztOOzs7OzsKKzE2Q0U7UlVOSUMgTEVUVEVSIFo7TG87MDtMOzs7OztOOzs7OzsKKzE2Q0Y7UlVOSUMgTEVUVEVSIFRJV0FaIFRJUiBUWVIgVDtMbzswO0w7Ozs7O047Ozs7OworMTZEMDtSVU5JQyBMRVRURVIgU0hPUlQtVFdJRy1UWVIgVDtMbzswO0w7Ozs7O047Ozs7OworMTZEMTtSVU5JQyBMRVRURVIgRDtMbzswO0w7Ozs7O047Ozs7OworMTZEMjtSVU5JQyBMRVRURVIgQkVSS0FOQU4gQkVPUkMgQkpBUktBTiBCO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkQzO1JVTklDIExFVFRFUiBTSE9SVC1UV0lHLUJKQVJLQU4gQjtMbzswO0w7Ozs7O047Ozs7OworMTZENDtSVU5JQyBMRVRURVIgRE9UVEVELVA7TG87MDtMOzs7OztOOzs7OzsKKzE2RDU7UlVOSUMgTEVUVEVSIE9QRU4tUDtMbzswO0w7Ozs7O047Ozs7OworMTZENjtSVU5JQyBMRVRURVIgRUhXQVogRUggRTtMbzswO0w7Ozs7O047Ozs7OworMTZENztSVU5JQyBMRVRURVIgTUFOTkFaIE1BTiBNO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkQ4O1JVTklDIExFVFRFUiBMT05HLUJSQU5DSC1NQURSIE07TG87MDtMOzs7OztOOzs7OzsKKzE2RDk7UlVOSUMgTEVUVEVSIFNIT1JULVRXSUctTUFEUiBNO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkRBO1JVTklDIExFVFRFUiBMQVVLQVogTEFHVSBMT0dSIEw7TG87MDtMOzs7OztOOzs7OzsKKzE2REI7UlVOSUMgTEVUVEVSIERPVFRFRC1MO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkRDO1JVTklDIExFVFRFUiBJTkdXQVo7TG87MDtMOzs7OztOOzs7OzsKKzE2REQ7UlVOSUMgTEVUVEVSIElORztMbzswO0w7Ozs7O047Ozs7OworMTZERTtSVU5JQyBMRVRURVIgREFHQVogREFFRyBEO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkRGO1JVTklDIExFVFRFUiBPVEhBTEFOIEVUSEVMIE87TG87MDtMOzs7OztOOzs7OzsKKzE2RTA7UlVOSUMgTEVUVEVSIEVBUjtMbzswO0w7Ozs7O047Ozs7OworMTZFMTtSVU5JQyBMRVRURVIgSU9SO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkUyO1JVTklDIExFVFRFUiBDV0VPUlRIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkUzO1JVTklDIExFVFRFUiBDQUxDO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkU0O1JVTklDIExFVFRFUiBDRUFMQztMbzswO0w7Ozs7O047Ozs7OworMTZFNTtSVU5JQyBMRVRURVIgU1RBTjtMbzswO0w7Ozs7O047Ozs7OworMTZFNjtSVU5JQyBMRVRURVIgTE9ORy1CUkFOQ0gtWVI7TG87MDtMOzs7OztOOzs7OzsKKzE2RTc7UlVOSUMgTEVUVEVSIFNIT1JULVRXSUctWVI7TG87MDtMOzs7OztOOzs7OzsKKzE2RTg7UlVOSUMgTEVUVEVSIElDRUxBTkRJQy1ZUjtMbzswO0w7Ozs7O047Ozs7OworMTZFOTtSVU5JQyBMRVRURVIgUTtMbzswO0w7Ozs7O047Ozs7OworMTZFQTtSVU5JQyBMRVRURVIgWDtMbzswO0w7Ozs7O047Ozs7OworMTZFQjtSVU5JQyBTSU5HTEUgUFVOQ1RVQVRJT047UG87MDtMOzs7OztOOzs7OzsKKzE2RUM7UlVOSUMgTVVMVElQTEUgUFVOQ1RVQVRJT047UG87MDtMOzs7OztOOzs7OzsKKzE2RUQ7UlVOSUMgQ1JPU1MgUFVOQ1RVQVRJT047UG87MDtMOzs7OztOOzs7OzsKKzE2RUU7UlVOSUMgQVJMQVVHIFNZTUJPTDtObzswO0w7Ozs7MTc7Tjs7Z29sZGVuIG51bWJlciAxNzs7OworMTZFRjtSVU5JQyBUVklNQURVUiBTWU1CT0w7Tm87MDtMOzs7OzE4O047O2dvbGRlbiBudW1iZXIgMTg7OzsKKzE2RjA7UlVOSUMgQkVMR1RIT1IgU1lNQk9MO05vOzA7TDs7OzsxOTtOOztnb2xkZW4gbnVtYmVyIDE5Ozs7CisxNzgwO0tITUVSIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMTc4MTtLSE1FUiBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzgyO0tITUVSIExFVFRFUiBLTztMbzswO0w7Ozs7O047Ozs7OworMTc4MztLSE1FUiBMRVRURVIgS0hPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzg0O0tITUVSIExFVFRFUiBOR087TG87MDtMOzs7OztOOzs7OzsKKzE3ODU7S0hNRVIgTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzg2O0tITUVSIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzE3ODc7S0hNRVIgTEVUVEVSIENPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzg4O0tITUVSIExFVFRFUiBDSE87TG87MDtMOzs7OztOOzs7OzsKKzE3ODk7S0hNRVIgTEVUVEVSIE5ZTztMbzswO0w7Ozs7O047Ozs7OworMTc4QTtLSE1FUiBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzE3OEI7S0hNRVIgTEVUVEVSIFRUSEE7TG87MDtMOzs7OztOOzs7OzsKKzE3OEM7S0hNRVIgTEVUVEVSIERPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzhEO0tITUVSIExFVFRFUiBUVEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzhFO0tITUVSIExFVFRFUiBOTk87TG87MDtMOzs7OztOOzs7OzsKKzE3OEY7S0hNRVIgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzkwO0tITUVSIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzE3OTE7S0hNRVIgTEVUVEVSIFRPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzkyO0tITUVSIExFVFRFUiBUSE87TG87MDtMOzs7OztOOzs7OzsKKzE3OTM7S0hNRVIgTEVUVEVSIE5PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzk0O0tITUVSIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMTc5NTtLSE1FUiBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzk2O0tITUVSIExFVFRFUiBQTztMbzswO0w7Ozs7O047Ozs7OworMTc5NztLSE1FUiBMRVRURVIgUEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzk4O0tITUVSIExFVFRFUiBNTztMbzswO0w7Ozs7O047Ozs7OworMTc5OTtLSE1FUiBMRVRURVIgWU87TG87MDtMOzs7OztOOzs7OzsKKzE3OUE7S0hNRVIgTEVUVEVSIFJPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzlCO0tITUVSIExFVFRFUiBMTztMbzswO0w7Ozs7O047Ozs7OworMTc5QztLSE1FUiBMRVRURVIgVk87TG87MDtMOzs7OztOOzs7OzsKKzE3OUQ7S0hNRVIgTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMTc5RTtLSE1FUiBMRVRURVIgU1NPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzlGO0tITUVSIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMTdBMDtLSE1FUiBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzE3QTE7S0hNRVIgTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0EyO0tITUVSIExFVFRFUiBRQTtMbzswO0w7Ozs7O047Ozs7OworMTdBMztLSE1FUiBJTkRFUEVOREVOVCBWT1dFTCBRQVE7TG87MDtMOzs7OztOOzs7OzsKKzE3QTQ7S0hNRVIgSU5ERVBFTkRFTlQgVk9XRUwgUUFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0E1O0tITUVSIElOREVQRU5ERU5UIFZPV0VMIFFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0E2O0tITUVSIElOREVQRU5ERU5UIFZPV0VMIFFJSTtMbzswO0w7Ozs7O047Ozs7OworMTdBNztLSE1FUiBJTkRFUEVOREVOVCBWT1dFTCBRVTtMbzswO0w7Ozs7O047Ozs7OworMTdBODtLSE1FUiBJTkRFUEVOREVOVCBWT1dFTCBRVUs7TG87MDtMOzs7OztOOzs7OzsKKzE3QTk7S0hNRVIgSU5ERVBFTkRFTlQgVk9XRUwgUVVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0FBO0tITUVSIElOREVQRU5ERU5UIFZPV0VMIFFVVVY7TG87MDtMOzs7OztOOzs7OzsKKzE3QUI7S0hNRVIgSU5ERVBFTkRFTlQgVk9XRUwgUlk7TG87MDtMOzs7OztOOzs7OzsKKzE3QUM7S0hNRVIgSU5ERVBFTkRFTlQgVk9XRUwgUllZO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0FEO0tITUVSIElOREVQRU5ERU5UIFZPV0VMIExZO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0FFO0tITUVSIElOREVQRU5ERU5UIFZPV0VMIExZWTtMbzswO0w7Ozs7O047Ozs7OworMTdBRjtLSE1FUiBJTkRFUEVOREVOVCBWT1dFTCBRRTtMbzswO0w7Ozs7O047Ozs7OworMTdCMDtLSE1FUiBJTkRFUEVOREVOVCBWT1dFTCBRQUk7TG87MDtMOzs7OztOOzs7OzsKKzE3QjE7S0hNRVIgSU5ERVBFTkRFTlQgVk9XRUwgUU9PIFRZUEUgT05FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0IyO0tITUVSIElOREVQRU5ERU5UIFZPV0VMIFFPTyBUWVBFIFRXTztMbzswO0w7Ozs7O047Ozs7OworMTdCMztLSE1FUiBJTkRFUEVOREVOVCBWT1dFTCBRQVU7TG87MDtMOzs7OztOOzs7OzsKKzE3QjQ7S0hNRVIgVk9XRUwgSU5IRVJFTlQgQVE7TWM7MDtMOzs7OztOOzs7OzsKKzE3QjU7S0hNRVIgVk9XRUwgSU5IRVJFTlQgQUE7TWM7MDtMOzs7OztOOzs7OzsKKzE3QjY7S0hNRVIgVk9XRUwgU0lHTiBBQTtNYzswO0w7Ozs7O047Ozs7OworMTdCNztLSE1FUiBWT1dFTCBTSUdOIEk7TW47MDtOU007Ozs7O047Ozs7OworMTdCODtLSE1FUiBWT1dFTCBTSUdOIElJO01uOzA7TlNNOzs7OztOOzs7OzsKKzE3Qjk7S0hNRVIgVk9XRUwgU0lHTiBZO01uOzA7TlNNOzs7OztOOzs7OzsKKzE3QkE7S0hNRVIgVk9XRUwgU0lHTiBZWTtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxN0JCO0tITUVSIFZPV0VMIFNJR04gVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxN0JDO0tITUVSIFZPV0VMIFNJR04gVVU7TW47MDtOU007Ozs7O047Ozs7OworMTdCRDtLSE1FUiBWT1dFTCBTSUdOIFVBO01uOzA7TlNNOzs7OztOOzs7OzsKKzE3QkU7S0hNRVIgVk9XRUwgU0lHTiBPRTtNYzswO0w7Ozs7O047Ozs7OworMTdCRjtLSE1FUiBWT1dFTCBTSUdOIFlBO01jOzA7TDs7Ozs7Tjs7Ozs7CisxN0MwO0tITUVSIFZPV0VMIFNJR04gSUU7TWM7MDtMOzs7OztOOzs7OzsKKzE3QzE7S0hNRVIgVk9XRUwgU0lHTiBFO01jOzA7TDs7Ozs7Tjs7Ozs7CisxN0MyO0tITUVSIFZPV0VMIFNJR04gQUU7TWM7MDtMOzs7OztOOzs7OzsKKzE3QzM7S0hNRVIgVk9XRUwgU0lHTiBBSTtNYzswO0w7Ozs7O047Ozs7OworMTdDNDtLSE1FUiBWT1dFTCBTSUdOIE9PO01jOzA7TDs7Ozs7Tjs7Ozs7CisxN0M1O0tITUVSIFZPV0VMIFNJR04gQVU7TWM7MDtMOzs7OztOOzs7OzsKKzE3QzY7S0hNRVIgU0lHTiBOSUtBSElUO01uOzA7TlNNOzs7OztOOzs7OzsKKzE3Qzc7S0hNRVIgU0lHTiBSRUFITVVLO01jOzA7TDs7Ozs7Tjs7Ozs7CisxN0M4O0tITUVSIFNJR04gWVVVS0FMRUFQSU5UVTtNYzswO0w7Ozs7O047Ozs7OworMTdDOTtLSE1FUiBTSUdOIE1VVVNJS0FUT0FOO01uOzA7TlNNOzs7OztOOzs7OzsKKzE3Q0E7S0hNRVIgU0lHTiBUUklJU0FQO01uOzA7TlNNOzs7OztOOzs7OzsKKzE3Q0I7S0hNRVIgU0lHTiBCQU5UT0M7TW47MDtOU007Ozs7O047Ozs7OworMTdDQztLSE1FUiBTSUdOIFJPQkFUO01uOzA7TlNNOzs7OztOOzs7OzsKKzE3Q0Q7S0hNRVIgU0lHTiBUT0FOREFLSElBVDtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxN0NFO0tITUVSIFNJR04gS0FLQUJBVDtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxN0NGO0tITUVSIFNJR04gQUhTREE7TW47MDtOU007Ozs7O047Ozs7OworMTdEMDtLSE1FUiBTSUdOIFNBTVlPSyBTQU5OWUE7TW47MDtOU007Ozs7O047Ozs7OworMTdEMTtLSE1FUiBTSUdOIFZJUklBTTtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxN0QyO0tITUVSIFNJR04gQ09FTkc7TW47OTtOU007Ozs7O047Ozs7OworMTdEMztLSE1FUiBTSUdOIEJBVEhBTUFTQVQ7TW47MDtOU007Ozs7O047Ozs7OworMTdENDtLSE1FUiBTSUdOIEtIQU47UG87MDtMOzs7OztOOzs7OzsKKzE3RDU7S0hNRVIgU0lHTiBCQVJJWU9PU0FOO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxN0Q2O0tITUVSIFNJR04gQ0FNTlVDIFBJSSBLVVVIO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxN0Q3O0tITUVSIFNJR04gTEVLIFRPTztQbzswO0w7Ozs7O047Ozs7OworMTdEODtLSE1FUiBTSUdOIEJFWVlBTDtQbzswO0w7Ozs7O047Ozs7OworMTdEOTtLSE1FUiBTSUdOIFBITkFFSyBNVUFOO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxN0RBO0tITUVSIFNJR04gS09PTVVVVDtQbzswO0w7Ozs7O047Ozs7OworMTdEQjtLSE1FUiBDVVJSRU5DWSBTWU1CT0wgUklFTDtTYzswO0VUOzs7OztOOzs7OzsKKzE3REM7S0hNRVIgU0lHTiBBVkFLUkFIQVNBTllBO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxN0UwO0tITUVSIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzE3RTE7S0hNRVIgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CisxN0UyO0tITUVSIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMTdFMztLSE1FUiBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMTdFNDtLSE1FUiBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CisxN0U1O0tITUVSIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzE3RTY7S0hNRVIgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CisxN0U3O0tITUVSIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CisxN0U4O0tITUVSIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CisxN0U5O0tITUVSIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzE4MDA7TU9OR09MSUFOIEJJUkdBO1BvOzA7T047Ozs7O047Ozs7OworMTgwMTtNT05HT0xJQU4gRUxMSVBTSVM7UG87MDtPTjs7Ozs7Tjs7Ozs7CisxODAyO01PTkdPTElBTiBDT01NQTtQbzswO09OOzs7OztOOzs7OzsKKzE4MDM7TU9OR09MSUFOIEZVTEwgU1RPUDtQbzswO09OOzs7OztOOzs7OzsKKzE4MDQ7TU9OR09MSUFOIENPTE9OO1BvOzA7T047Ozs7O047Ozs7OworMTgwNTtNT05HT0xJQU4gRk9VUiBET1RTO1BvOzA7T047Ozs7O047Ozs7OworMTgwNjtNT05HT0xJQU4gVE9ETyBTT0ZUIEhZUEhFTjtQZDswO09OOzs7OztOOzs7OzsKKzE4MDc7TU9OR09MSUFOIFNJQkUgU1lMTEFCTEUgQk9VTkRBUlkgTUFSS0VSO1BvOzA7T047Ozs7O047Ozs7OworMTgwODtNT05HT0xJQU4gTUFOQ0hVIENPTU1BO1BvOzA7T047Ozs7O047Ozs7OworMTgwOTtNT05HT0xJQU4gTUFOQ0hVIEZVTEwgU1RPUDtQbzswO09OOzs7OztOOzs7OzsKKzE4MEE7TU9OR09MSUFOIE5JUlVHVTtQbzswO09OOzs7OztOOzs7OzsKKzE4MEI7TU9OR09MSUFOIEZSRUUgVkFSSUFUSU9OIFNFTEVDVE9SIE9ORTtDZjswO0JOOzs7OztOOzs7OzsKKzE4MEM7TU9OR09MSUFOIEZSRUUgVkFSSUFUSU9OIFNFTEVDVE9SIFRXTztDZjswO0JOOzs7OztOOzs7OzsKKzE4MEQ7TU9OR09MSUFOIEZSRUUgVkFSSUFUSU9OIFNFTEVDVE9SIFRIUkVFO0NmOzA7Qk47Ozs7O047Ozs7OworMTgwRTtNT05HT0xJQU4gVk9XRUwgU0VQQVJBVE9SO0NmOzA7Qk47Ozs7O047Ozs7OworMTgxMDtNT05HT0xJQU4gRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMTgxMTtNT05HT0xJQU4gRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CisxODEyO01PTkdPTElBTiBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzE4MTM7TU9OR09MSUFOIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CisxODE0O01PTkdPTElBTiBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CisxODE1O01PTkdPTElBTiBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CisxODE2O01PTkdPTElBTiBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzE4MTc7TU9OR09MSUFOIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CisxODE4O01PTkdPTElBTiBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMTgxOTtNT05HT0xJQU4gRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMTgyMDtNT05HT0xJQU4gTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzE4MjE7TU9OR09MSUFOIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODIyO01PTkdPTElBTiBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMTgyMztNT05HT0xJQU4gTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzE4MjQ7TU9OR09MSUFOIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODI1O01PTkdPTElBTiBMRVRURVIgT0U7TG87MDtMOzs7OztOOzs7OzsKKzE4MjY7TU9OR09MSUFOIExFVFRFUiBVRTtMbzswO0w7Ozs7O047Ozs7OworMTgyNztNT05HT0xJQU4gTEVUVEVSIEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODI4O01PTkdPTElBTiBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzE4Mjk7TU9OR09MSUFOIExFVFRFUiBBTkc7TG87MDtMOzs7OztOOzs7OzsKKzE4MkE7TU9OR09MSUFOIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMTgyQjtNT05HT0xJQU4gTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODJDO01PTkdPTElBTiBMRVRURVIgUUE7TG87MDtMOzs7OztOOzs7OzsKKzE4MkQ7TU9OR09MSUFOIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMTgyRTtNT05HT0xJQU4gTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODJGO01PTkdPTElBTiBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzE4MzA7TU9OR09MSUFOIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMTgzMTtNT05HT0xJQU4gTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMTgzMjtNT05HT0xJQU4gTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODMzO01PTkdPTElBTiBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzE4MzQ7TU9OR09MSUFOIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzE4MzU7TU9OR09MSUFOIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMTgzNjtNT05HT0xJQU4gTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODM3O01PTkdPTElBTiBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzE4Mzg7TU9OR09MSUFOIExFVFRFUiBXQTtMbzswO0w7Ozs7O047Ozs7OworMTgzOTtNT05HT0xJQU4gTEVUVEVSIEZBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODNBO01PTkdPTElBTiBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzE4M0I7TU9OR09MSUFOIExFVFRFUiBLSEE7TG87MDtMOzs7OztOOzs7OzsKKzE4M0M7TU9OR09MSUFOIExFVFRFUiBUU0E7TG87MDtMOzs7OztOOzs7OzsKKzE4M0Q7TU9OR09MSUFOIExFVFRFUiBaQTtMbzswO0w7Ozs7O047Ozs7OworMTgzRTtNT05HT0xJQU4gTEVUVEVSIEhBQTtMbzswO0w7Ozs7O047Ozs7OworMTgzRjtNT05HT0xJQU4gTEVUVEVSIFpSQTtMbzswO0w7Ozs7O047Ozs7OworMTg0MDtNT05HT0xJQU4gTEVUVEVSIExIQTtMbzswO0w7Ozs7O047Ozs7OworMTg0MTtNT05HT0xJQU4gTEVUVEVSIFpISTtMbzswO0w7Ozs7O047Ozs7OworMTg0MjtNT05HT0xJQU4gTEVUVEVSIENISTtMbzswO0w7Ozs7O047Ozs7OworMTg0MztNT05HT0xJQU4gTEVUVEVSIFRPRE8gTE9ORyBWT1dFTCBTSUdOO0xtOzA7TDs7Ozs7Tjs7Ozs7CisxODQ0O01PTkdPTElBTiBMRVRURVIgVE9ETyBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODQ1O01PTkdPTElBTiBMRVRURVIgVE9ETyBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODQ2O01PTkdPTElBTiBMRVRURVIgVE9ETyBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODQ3O01PTkdPTElBTiBMRVRURVIgVE9ETyBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODQ4O01PTkdPTElBTiBMRVRURVIgVE9ETyBPRTtMbzswO0w7Ozs7O047Ozs7OworMTg0OTtNT05HT0xJQU4gTEVUVEVSIFRPRE8gVUU7TG87MDtMOzs7OztOOzs7OzsKKzE4NEE7TU9OR09MSUFOIExFVFRFUiBUT0RPIEFORztMbzswO0w7Ozs7O047Ozs7OworMTg0QjtNT05HT0xJQU4gTEVUVEVSIFRPRE8gQkE7TG87MDtMOzs7OztOOzs7OzsKKzE4NEM7TU9OR09MSUFOIExFVFRFUiBUT0RPIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODREO01PTkdPTElBTiBMRVRURVIgVE9ETyBRQTtMbzswO0w7Ozs7O047Ozs7OworMTg0RTtNT05HT0xJQU4gTEVUVEVSIFRPRE8gR0E7TG87MDtMOzs7OztOOzs7OzsKKzE4NEY7TU9OR09MSUFOIExFVFRFUiBUT0RPIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODUwO01PTkdPTElBTiBMRVRURVIgVE9ETyBUQTtMbzswO0w7Ozs7O047Ozs7OworMTg1MTtNT05HT0xJQU4gTEVUVEVSIFRPRE8gREE7TG87MDtMOzs7OztOOzs7OzsKKzE4NTI7TU9OR09MSUFOIExFVFRFUiBUT0RPIENIQTtMbzswO0w7Ozs7O047Ozs7OworMTg1MztNT05HT0xJQU4gTEVUVEVSIFRPRE8gSkE7TG87MDtMOzs7OztOOzs7OzsKKzE4NTQ7TU9OR09MSUFOIExFVFRFUiBUT0RPIFRTQTtMbzswO0w7Ozs7O047Ozs7OworMTg1NTtNT05HT0xJQU4gTEVUVEVSIFRPRE8gWUE7TG87MDtMOzs7OztOOzs7OzsKKzE4NTY7TU9OR09MSUFOIExFVFRFUiBUT0RPIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODU3O01PTkdPTElBTiBMRVRURVIgVE9ETyBLQTtMbzswO0w7Ozs7O047Ozs7OworMTg1ODtNT05HT0xJQU4gTEVUVEVSIFRPRE8gR0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODU5O01PTkdPTElBTiBMRVRURVIgVE9ETyBIQUE7TG87MDtMOzs7OztOOzs7OzsKKzE4NUE7TU9OR09MSUFOIExFVFRFUiBUT0RPIEpJQTtMbzswO0w7Ozs7O047Ozs7OworMTg1QjtNT05HT0xJQU4gTEVUVEVSIFRPRE8gTklBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODVDO01PTkdPTElBTiBMRVRURVIgVE9ETyBEWkE7TG87MDtMOzs7OztOOzs7OzsKKzE4NUQ7TU9OR09MSUFOIExFVFRFUiBTSUJFIEU7TG87MDtMOzs7OztOOzs7OzsKKzE4NUU7TU9OR09MSUFOIExFVFRFUiBTSUJFIEk7TG87MDtMOzs7OztOOzs7OzsKKzE4NUY7TU9OR09MSUFOIExFVFRFUiBTSUJFIElZO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODYwO01PTkdPTElBTiBMRVRURVIgU0lCRSBVRTtMbzswO0w7Ozs7O047Ozs7OworMTg2MTtNT05HT0xJQU4gTEVUVEVSIFNJQkUgVTtMbzswO0w7Ozs7O047Ozs7OworMTg2MjtNT05HT0xJQU4gTEVUVEVSIFNJQkUgQU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODYzO01PTkdPTElBTiBMRVRURVIgU0lCRSBLQTtMbzswO0w7Ozs7O047Ozs7OworMTg2NDtNT05HT0xJQU4gTEVUVEVSIFNJQkUgR0E7TG87MDtMOzs7OztOOzs7OzsKKzE4NjU7TU9OR09MSUFOIExFVFRFUiBTSUJFIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODY2O01PTkdPTElBTiBMRVRURVIgU0lCRSBQQTtMbzswO0w7Ozs7O047Ozs7OworMTg2NztNT05HT0xJQU4gTEVUVEVSIFNJQkUgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODY4O01PTkdPTElBTiBMRVRURVIgU0lCRSBUQTtMbzswO0w7Ozs7O047Ozs7OworMTg2OTtNT05HT0xJQU4gTEVUVEVSIFNJQkUgREE7TG87MDtMOzs7OztOOzs7OzsKKzE4NkE7TU9OR09MSUFOIExFVFRFUiBTSUJFIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODZCO01PTkdPTElBTiBMRVRURVIgU0lCRSBGQTtMbzswO0w7Ozs7O047Ozs7OworMTg2QztNT05HT0xJQU4gTEVUVEVSIFNJQkUgR0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODZEO01PTkdPTElBTiBMRVRURVIgU0lCRSBIQUE7TG87MDtMOzs7OztOOzs7OzsKKzE4NkU7TU9OR09MSUFOIExFVFRFUiBTSUJFIFRTQTtMbzswO0w7Ozs7O047Ozs7OworMTg2RjtNT05HT0xJQU4gTEVUVEVSIFNJQkUgWkE7TG87MDtMOzs7OztOOzs7OzsKKzE4NzA7TU9OR09MSUFOIExFVFRFUiBTSUJFIFJBQTtMbzswO0w7Ozs7O047Ozs7OworMTg3MTtNT05HT0xJQU4gTEVUVEVSIFNJQkUgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODcyO01PTkdPTElBTiBMRVRURVIgU0lCRSBaSEE7TG87MDtMOzs7OztOOzs7OzsKKzE4NzM7TU9OR09MSUFOIExFVFRFUiBNQU5DSFUgSTtMbzswO0w7Ozs7O047Ozs7OworMTg3NDtNT05HT0xJQU4gTEVUVEVSIE1BTkNIVSBLQTtMbzswO0w7Ozs7O047Ozs7OworMTg3NTtNT05HT0xJQU4gTEVUVEVSIE1BTkNIVSBSQTtMbzswO0w7Ozs7O047Ozs7OworMTg3NjtNT05HT0xJQU4gTEVUVEVSIE1BTkNIVSBGQTtMbzswO0w7Ozs7O047Ozs7OworMTg3NztNT05HT0xJQU4gTEVUVEVSIE1BTkNIVSBaSEE7TG87MDtMOzs7OztOOzs7OzsKKzE4ODA7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBBTlVTVkFSQSBPTkU7TG87MDtMOzs7OztOOzs7OzsKKzE4ODE7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBWSVNBUkdBIE9ORTtMbzswO0w7Ozs7O047Ozs7OworMTg4MjtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIERBTUFSVTtMbzswO0w7Ozs7O047Ozs7OworMTg4MztNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIFVCQURBTUE7TG87MDtMOzs7OztOOzs7OzsKKzE4ODQ7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBJTlZFUlRFRCBVQkFEQU1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODg1O01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgQkFMVURBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODg2O01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgVEhSRUUgQkFMVURBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODg3O01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgQTtMbzswO0w7Ozs7O047Ozs7OworMTg4ODtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIEk7TG87MDtMOzs7OztOOzs7OzsKKzE4ODk7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBLQTtMbzswO0w7Ozs7O047Ozs7OworMTg4QTtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMTg4QjtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODhDO01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODhEO01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMTg4RTtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIEREQTtMbzswO0w7Ozs7O047Ozs7OworMTg4RjtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMTg5MDtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODkxO01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgREE7TG87MDtMOzs7OztOOzs7OzsKKzE4OTI7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBQQTtMbzswO0w7Ozs7O047Ozs7OworMTg5MztNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMTg5NDtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMTg5NTtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIFpIQTtMbzswO0w7Ozs7O047Ozs7OworMTg5NjtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIFpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODk3O01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgQUg7TG87MDtMOzs7OztOOzs7OzsKKzE4OTg7TU9OR09MSUFOIExFVFRFUiBUT0RPIEFMSSBHQUxJIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODk5O01PTkdPTElBTiBMRVRURVIgVE9ETyBBTEkgR0FMSSBaSEE7TG87MDtMOzs7OztOOzs7OzsKKzE4OUE7TU9OR09MSUFOIExFVFRFUiBNQU5DSFUgQUxJIEdBTEkgR0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODlCO01PTkdPTElBTiBMRVRURVIgTUFOQ0hVIEFMSSBHQUxJIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMTg5QztNT05HT0xJQU4gTEVUVEVSIE1BTkNIVSBBTEkgR0FMSSBDQTtMbzswO0w7Ozs7O047Ozs7OworMTg5RDtNT05HT0xJQU4gTEVUVEVSIE1BTkNIVSBBTEkgR0FMSSBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzE4OUU7TU9OR09MSUFOIExFVFRFUiBNQU5DSFUgQUxJIEdBTEkgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODlGO01PTkdPTElBTiBMRVRURVIgTUFOQ0hVIEFMSSBHQUxJIERESEE7TG87MDtMOzs7OztOOzs7OzsKKzE4QTA7TU9OR09MSUFOIExFVFRFUiBNQU5DSFUgQUxJIEdBTEkgVEE7TG87MDtMOzs7OztOOzs7OzsKKzE4QTE7TU9OR09MSUFOIExFVFRFUiBNQU5DSFUgQUxJIEdBTEkgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxOEEyO01PTkdPTElBTiBMRVRURVIgTUFOQ0hVIEFMSSBHQUxJIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMThBMztNT05HT0xJQU4gTEVUVEVSIE1BTkNIVSBBTEkgR0FMSSBDWUE7TG87MDtMOzs7OztOOzs7OzsKKzE4QTQ7TU9OR09MSUFOIExFVFRFUiBNQU5DSFUgQUxJIEdBTEkgWkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxOEE1O01PTkdPTElBTiBMRVRURVIgTUFOQ0hVIEFMSSBHQUxJIFpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxOEE2O01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgSEFMRiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxOEE3O01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgSEFMRiBZQTtMbzswO0w7Ozs7O047Ozs7OworMThBODtNT05HT0xJQU4gTEVUVEVSIE1BTkNIVSBBTEkgR0FMSSBCSEE7TG87MDtMOzs7OztOOzs7OzsKKzE4QTk7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBEQUdBTEdBO01uOzIyODtOU007Ozs7O047Ozs7OworMUUwMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBCRUxPVztMdTswO0w7MDA0MSAwMzI1Ozs7O047Ozs7MUUwMTsKKzFFMDE7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEJFTE9XO0xsOzA7TDswMDYxIDAzMjU7Ozs7Tjs7OzFFMDA7OzFFMDAKKzFFMDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQiBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0MiAwMzA3Ozs7O047Ozs7MUUwMzsKKzFFMDM7TEFUSU4gU01BTEwgTEVUVEVSIEIgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNjIgMDMwNzs7OztOOzs7MUUwMjs7MUUwMgorMUUwNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDQyIDAzMjM7Ozs7Tjs7OzsxRTA1OworMUUwNTtMQVRJTiBTTUFMTCBMRVRURVIgQiBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA2MiAwMzIzOzs7O047OzsxRTA0OzsxRTA0CisxRTA2O0xBVElOIENBUElUQUwgTEVUVEVSIEIgV0lUSCBMSU5FIEJFTE9XO0x1OzA7TDswMDQyIDAzMzE7Ozs7Tjs7OzsxRTA3OworMUUwNztMQVRJTiBTTUFMTCBMRVRURVIgQiBXSVRIIExJTkUgQkVMT1c7TGw7MDtMOzAwNjIgMDMzMTs7OztOOzs7MUUwNjs7MUUwNgorMUUwODtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSBBTkQgQUNVVEU7THU7MDtMOzAwQzcgMDMwMTs7OztOOzs7OzFFMDk7CisxRTA5O0xBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0VESUxMQSBBTkQgQUNVVEU7TGw7MDtMOzAwRTcgMDMwMTs7OztOOzs7MUUwODs7MUUwOAorMUUwQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDQ0IDAzMDc7Ozs7Tjs7OzsxRTBCOworMUUwQjtMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2NCAwMzA3Ozs7O047OzsxRTBBOzsxRTBBCisxRTBDO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNDQgMDMyMzs7OztOOzs7OzFFMEQ7CisxRTBEO0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDY0IDAzMjM7Ozs7Tjs7OzFFMEM7OzFFMEMKKzFFMEU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIExJTkUgQkVMT1c7THU7MDtMOzAwNDQgMDMzMTs7OztOOzs7OzFFMEY7CisxRTBGO0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA2NCAwMzMxOzs7O047OzsxRTBFOzsxRTBFCisxRTEwO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBDRURJTExBO0x1OzA7TDswMDQ0IDAzMjc7Ozs7Tjs7OzsxRTExOworMUUxMTtMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIENFRElMTEE7TGw7MDtMOzAwNjQgMDMyNzs7OztOOzs7MUUxMDs7MUUxMAorMUUxMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMdTswO0w7MDA0NCAwMzJEOzs7O047Ozs7MUUxMzsKKzFFMTM7TEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0xsOzA7TDswMDY0IDAzMkQ7Ozs7Tjs7OzFFMTI7OzFFMTIKKzFFMTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIE1BQ1JPTiBBTkQgR1JBVkU7THU7MDtMOzAxMTIgMDMwMDs7OztOOzs7OzFFMTU7CisxRTE1O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggTUFDUk9OIEFORCBHUkFWRTtMbDswO0w7MDExMyAwMzAwOzs7O047OzsxRTE0OzsxRTE0CisxRTE2O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBNQUNST04gQU5EIEFDVVRFO0x1OzA7TDswMTEyIDAzMDE7Ozs7Tjs7OzsxRTE3OworMUUxNztMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE1BQ1JPTiBBTkQgQUNVVEU7TGw7MDtMOzAxMTMgMDMwMTs7OztOOzs7MUUxNjs7MUUxNgorMUUxODtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMdTswO0w7MDA0NSAwMzJEOzs7O047Ozs7MUUxOTsKKzFFMTk7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0xsOzA7TDswMDY1IDAzMkQ7Ozs7Tjs7OzFFMTg7OzFFMTgKKzFFMUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIFRJTERFIEJFTE9XO0x1OzA7TDswMDQ1IDAzMzA7Ozs7Tjs7OzsxRTFCOworMUUxQjtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIFRJTERFIEJFTE9XO0xsOzA7TDswMDY1IDAzMzA7Ozs7Tjs7OzFFMUE7OzFFMUEKKzFFMUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENFRElMTEEgQU5EIEJSRVZFO0x1OzA7TDswMjI4IDAzMDY7Ozs7Tjs7OzsxRTFEOworMUUxRDtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENFRElMTEEgQU5EIEJSRVZFO0xsOzA7TDswMjI5IDAzMDY7Ozs7Tjs7OzFFMUM7OzFFMUMKKzFFMUU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRiBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0NiAwMzA3Ozs7O047Ozs7MUUxRjsKKzFFMUY7TEFUSU4gU01BTEwgTEVUVEVSIEYgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNjYgMDMwNzs7OztOOzs7MUUxRTs7MUUxRQorMUUyMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggTUFDUk9OO0x1OzA7TDswMDQ3IDAzMDQ7Ozs7Tjs7OzsxRTIxOworMUUyMTtMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIE1BQ1JPTjtMbDswO0w7MDA2NyAwMzA0Ozs7O047OzsxRTIwOzsxRTIwCisxRTIyO0xBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNDggMDMwNzs7OztOOzs7OzFFMjM7CisxRTIzO0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDY4IDAzMDc7Ozs7Tjs7OzFFMjI7OzFFMjIKKzFFMjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0OCAwMzIzOzs7O047Ozs7MUUyNTsKKzFFMjU7TEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNjggMDMyMzs7OztOOzs7MUUyNDs7MUUyNAorMUUyNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDQ4IDAzMDg7Ozs7Tjs7OzsxRTI3OworMUUyNztMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA2OCAwMzA4Ozs7O047OzsxRTI2OzsxRTI2CisxRTI4O0xBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBDRURJTExBO0x1OzA7TDswMDQ4IDAzMjc7Ozs7Tjs7OzsxRTI5OworMUUyOTtMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIENFRElMTEE7TGw7MDtMOzAwNjggMDMyNzs7OztOOzs7MUUyODs7MUUyOAorMUUyQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggQlJFVkUgQkVMT1c7THU7MDtMOzAwNDggMDMyRTs7OztOOzs7OzFFMkI7CisxRTJCO0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggQlJFVkUgQkVMT1c7TGw7MDtMOzAwNjggMDMyRTs7OztOOzs7MUUyQTs7MUUyQQorMUUyQztMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggVElMREUgQkVMT1c7THU7MDtMOzAwNDkgMDMzMDs7OztOOzs7OzFFMkQ7CisxRTJEO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggVElMREUgQkVMT1c7TGw7MDtMOzAwNjkgMDMzMDs7OztOOzs7MUUyQzs7MUUyQworMUUyRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTIEFORCBBQ1VURTtMdTswO0w7MDBDRiAwMzAxOzs7O047Ozs7MUUyRjsKKzFFMkY7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVMgQU5EIEFDVVRFO0xsOzA7TDswMEVGIDAzMDE7Ozs7Tjs7OzFFMkU7OzFFMkUKKzFFMzA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIEFDVVRFO0x1OzA7TDswMDRCIDAzMDE7Ozs7Tjs7OzsxRTMxOworMUUzMTtMQVRJTiBTTUFMTCBMRVRURVIgSyBXSVRIIEFDVVRFO0xsOzA7TDswMDZCIDAzMDE7Ozs7Tjs7OzFFMzA7OzFFMzAKKzFFMzI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0QiAwMzIzOzs7O047Ozs7MUUzMzsKKzFFMzM7TEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNkIgMDMyMzs7OztOOzs7MUUzMjs7MUUzMgorMUUzNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggTElORSBCRUxPVztMdTswO0w7MDA0QiAwMzMxOzs7O047Ozs7MUUzNTsKKzFFMzU7TEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBMSU5FIEJFTE9XO0xsOzA7TDswMDZCIDAzMzE7Ozs7Tjs7OzFFMzQ7OzFFMzQKKzFFMzY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0QyAwMzIzOzs7O047Ozs7MUUzNzsKKzFFMzc7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNkMgMDMyMzs7OztOOzs7MUUzNjs7MUUzNgorMUUzODtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggRE9UIEJFTE9XIEFORCBNQUNST047THU7MDtMOzFFMzYgMDMwNDs7OztOOzs7OzFFMzk7CisxRTM5O0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggRE9UIEJFTE9XIEFORCBNQUNST047TGw7MDtMOzFFMzcgMDMwNDs7OztOOzs7MUUzODs7MUUzOAorMUUzQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggTElORSBCRUxPVztMdTswO0w7MDA0QyAwMzMxOzs7O047Ozs7MUUzQjsKKzFFM0I7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBMSU5FIEJFTE9XO0xsOzA7TDswMDZDIDAzMzE7Ozs7Tjs7OzFFM0E7OzFFM0EKKzFFM0M7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIENJUkNVTUZMRVggQkVMT1c7THU7MDtMOzAwNEMgMDMyRDs7OztOOzs7OzFFM0Q7CisxRTNEO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMbDswO0w7MDA2QyAwMzJEOzs7O047OzsxRTNDOzsxRTNDCisxRTNFO0xBVElOIENBUElUQUwgTEVUVEVSIE0gV0lUSCBBQ1VURTtMdTswO0w7MDA0RCAwMzAxOzs7O047Ozs7MUUzRjsKKzFFM0Y7TEFUSU4gU01BTEwgTEVUVEVSIE0gV0lUSCBBQ1VURTtMbDswO0w7MDA2RCAwMzAxOzs7O047OzsxRTNFOzsxRTNFCisxRTQwO0xBVElOIENBUElUQUwgTEVUVEVSIE0gV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNEQgMDMwNzs7OztOOzs7OzFFNDE7CisxRTQxO0xBVElOIFNNQUxMIExFVFRFUiBNIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDZEIDAzMDc7Ozs7Tjs7OzFFNDA7OzFFNDAKKzFFNDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTSBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0RCAwMzIzOzs7O047Ozs7MUU0MzsKKzFFNDM7TEFUSU4gU01BTEwgTEVUVEVSIE0gV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNkQgMDMyMzs7OztOOzs7MUU0Mjs7MUU0MgorMUU0NDtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDRFIDAzMDc7Ozs7Tjs7OzsxRTQ1OworMUU0NTtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2RSAwMzA3Ozs7O047OzsxRTQ0OzsxRTQ0CisxRTQ2O0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNEUgMDMyMzs7OztOOzs7OzFFNDc7CisxRTQ3O0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDZFIDAzMjM7Ozs7Tjs7OzFFNDY7OzFFNDYKKzFFNDg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIExJTkUgQkVMT1c7THU7MDtMOzAwNEUgMDMzMTs7OztOOzs7OzFFNDk7CisxRTQ5O0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA2RSAwMzMxOzs7O047OzsxRTQ4OzsxRTQ4CisxRTRBO0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0x1OzA7TDswMDRFIDAzMkQ7Ozs7Tjs7OzsxRTRCOworMUU0QjtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENJUkNVTUZMRVggQkVMT1c7TGw7MDtMOzAwNkUgMDMyRDs7OztOOzs7MUU0QTs7MUU0QQorMUU0QztMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUgQU5EIEFDVVRFO0x1OzA7TDswMEQ1IDAzMDE7Ozs7Tjs7OzsxRTREOworMUU0RDtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFIEFORCBBQ1VURTtMbDswO0w7MDBGNSAwMzAxOzs7O047OzsxRTRDOzsxRTRDCisxRTRFO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERSBBTkQgRElBRVJFU0lTO0x1OzA7TDswMEQ1IDAzMDg7Ozs7Tjs7OzsxRTRGOworMUU0RjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFIEFORCBESUFFUkVTSVM7TGw7MDtMOzAwRjUgMDMwODs7OztOOzs7MUU0RTs7MUU0RQorMUU1MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTUFDUk9OIEFORCBHUkFWRTtMdTswO0w7MDE0QyAwMzAwOzs7O047Ozs7MUU1MTsKKzFFNTE7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBNQUNST04gQU5EIEdSQVZFO0xsOzA7TDswMTREIDAzMDA7Ozs7Tjs7OzFFNTA7OzFFNTAKKzFFNTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIE1BQ1JPTiBBTkQgQUNVVEU7THU7MDtMOzAxNEMgMDMwMTs7OztOOzs7OzFFNTM7CisxRTUzO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggTUFDUk9OIEFORCBBQ1VURTtMbDswO0w7MDE0RCAwMzAxOzs7O047OzsxRTUyOzsxRTUyCisxRTU0O0xBVElOIENBUElUQUwgTEVUVEVSIFAgV0lUSCBBQ1VURTtMdTswO0w7MDA1MCAwMzAxOzs7O047Ozs7MUU1NTsKKzFFNTU7TEFUSU4gU01BTEwgTEVUVEVSIFAgV0lUSCBBQ1VURTtMbDswO0w7MDA3MCAwMzAxOzs7O047OzsxRTU0OzsxRTU0CisxRTU2O0xBVElOIENBUElUQUwgTEVUVEVSIFAgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNTAgMDMwNzs7OztOOzs7OzFFNTc7CisxRTU3O0xBVElOIFNNQUxMIExFVFRFUiBQIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDcwIDAzMDc7Ozs7Tjs7OzFFNTY7OzFFNTYKKzFFNTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA1MiAwMzA3Ozs7O047Ozs7MUU1OTsKKzFFNTk7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNzIgMDMwNzs7OztOOzs7MUU1ODs7MUU1OAorMUU1QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDUyIDAzMjM7Ozs7Tjs7OzsxRTVCOworMUU1QjtMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA3MiAwMzIzOzs7O047OzsxRTVBOzsxRTVBCisxRTVDO0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBET1QgQkVMT1cgQU5EIE1BQ1JPTjtMdTswO0w7MUU1QSAwMzA0Ozs7O047Ozs7MUU1RDsKKzFFNUQ7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBET1QgQkVMT1cgQU5EIE1BQ1JPTjtMbDswO0w7MUU1QiAwMzA0Ozs7O047OzsxRTVDOzsxRTVDCisxRTVFO0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBMSU5FIEJFTE9XO0x1OzA7TDswMDUyIDAzMzE7Ozs7Tjs7OzsxRTVGOworMUU1RjtMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIExJTkUgQkVMT1c7TGw7MDtMOzAwNzIgMDMzMTs7OztOOzs7MUU1RTs7MUU1RQorMUU2MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDUzIDAzMDc7Ozs7Tjs7OzsxRTYxOworMUU2MTtMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA3MyAwMzA3Ozs7O047OzsxRTYwOzsxRTYwCisxRTYyO0xBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNTMgMDMyMzs7OztOOzs7OzFFNjM7CisxRTYzO0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDczIDAzMjM7Ozs7Tjs7OzFFNjI7OzFFNjIKKzFFNjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIEFDVVRFIEFORCBET1QgQUJPVkU7THU7MDtMOzAxNUEgMDMwNzs7OztOOzs7OzFFNjU7CisxRTY1O0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQUNVVEUgQU5EIERPVCBBQk9WRTtMbDswO0w7MDE1QiAwMzA3Ozs7O047OzsxRTY0OzsxRTY0CisxRTY2O0xBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBDQVJPTiBBTkQgRE9UIEFCT1ZFO0x1OzA7TDswMTYwIDAzMDc7Ozs7Tjs7OzsxRTY3OworMUU2NztMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENBUk9OIEFORCBET1QgQUJPVkU7TGw7MDtMOzAxNjEgMDMwNzs7OztOOzs7MUU2Njs7MUU2NgorMUU2ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggRE9UIEJFTE9XIEFORCBET1QgQUJPVkU7THU7MDtMOzFFNjIgMDMwNzs7OztOOzs7OzFFNjk7CisxRTY5O0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggRE9UIEJFTE9XIEFORCBET1QgQUJPVkU7TGw7MDtMOzFFNjMgMDMwNzs7OztOOzs7MUU2ODs7MUU2OAorMUU2QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDU0IDAzMDc7Ozs7Tjs7OzsxRTZCOworMUU2QjtMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA3NCAwMzA3Ozs7O047OzsxRTZBOzsxRTZBCisxRTZDO0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNTQgMDMyMzs7OztOOzs7OzFFNkQ7CisxRTZEO0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDc0IDAzMjM7Ozs7Tjs7OzFFNkM7OzFFNkMKKzFFNkU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIExJTkUgQkVMT1c7THU7MDtMOzAwNTQgMDMzMTs7OztOOzs7OzFFNkY7CisxRTZGO0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA3NCAwMzMxOzs7O047OzsxRTZFOzsxRTZFCisxRTcwO0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0x1OzA7TDswMDU0IDAzMkQ7Ozs7Tjs7OzsxRTcxOworMUU3MTtMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIENJUkNVTUZMRVggQkVMT1c7TGw7MDtMOzAwNzQgMDMyRDs7OztOOzs7MUU3MDs7MUU3MAorMUU3MjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEJFTE9XO0x1OzA7TDswMDU1IDAzMjQ7Ozs7Tjs7OzsxRTczOworMUU3MztMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBCRUxPVztMbDswO0w7MDA3NSAwMzI0Ozs7O047OzsxRTcyOzsxRTcyCisxRTc0O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBUSUxERSBCRUxPVztMdTswO0w7MDA1NSAwMzMwOzs7O047Ozs7MUU3NTsKKzFFNzU7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBUSUxERSBCRUxPVztMbDswO0w7MDA3NSAwMzMwOzs7O047OzsxRTc0OzsxRTc0CisxRTc2O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0x1OzA7TDswMDU1IDAzMkQ7Ozs7Tjs7OzsxRTc3OworMUU3NztMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIENJUkNVTUZMRVggQkVMT1c7TGw7MDtMOzAwNzUgMDMyRDs7OztOOzs7MUU3Njs7MUU3NgorMUU3ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggVElMREUgQU5EIEFDVVRFO0x1OzA7TDswMTY4IDAzMDE7Ozs7Tjs7OzsxRTc5OworMUU3OTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIFRJTERFIEFORCBBQ1VURTtMbDswO0w7MDE2OSAwMzAxOzs7O047OzsxRTc4OzsxRTc4CisxRTdBO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBNQUNST04gQU5EIERJQUVSRVNJUztMdTswO0w7MDE2QSAwMzA4Ozs7O047Ozs7MUU3QjsKKzFFN0I7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST04gQU5EIERJQUVSRVNJUztMbDswO0w7MDE2QiAwMzA4Ozs7O047OzsxRTdBOzsxRTdBCisxRTdDO0xBVElOIENBUElUQUwgTEVUVEVSIFYgV0lUSCBUSUxERTtMdTswO0w7MDA1NiAwMzAzOzs7O047Ozs7MUU3RDsKKzFFN0Q7TEFUSU4gU01BTEwgTEVUVEVSIFYgV0lUSCBUSUxERTtMbDswO0w7MDA3NiAwMzAzOzs7O047OzsxRTdDOzsxRTdDCisxRTdFO0xBVElOIENBUElUQUwgTEVUVEVSIFYgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNTYgMDMyMzs7OztOOzs7OzFFN0Y7CisxRTdGO0xBVElOIFNNQUxMIExFVFRFUiBWIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDc2IDAzMjM7Ozs7Tjs7OzFFN0U7OzFFN0UKKzFFODA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIEdSQVZFO0x1OzA7TDswMDU3IDAzMDA7Ozs7Tjs7OzsxRTgxOworMUU4MTtMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIEdSQVZFO0xsOzA7TDswMDc3IDAzMDA7Ozs7Tjs7OzFFODA7OzFFODAKKzFFODI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIEFDVVRFO0x1OzA7TDswMDU3IDAzMDE7Ozs7Tjs7OzsxRTgzOworMUU4MztMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIEFDVVRFO0xsOzA7TDswMDc3IDAzMDE7Ozs7Tjs7OzFFODI7OzFFODIKKzFFODQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIERJQUVSRVNJUztMdTswO0w7MDA1NyAwMzA4Ozs7O047Ozs7MUU4NTsKKzFFODU7TEFUSU4gU01BTEwgTEVUVEVSIFcgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzAwNzcgMDMwODs7OztOOzs7MUU4NDs7MUU4NAorMUU4NjtMQVRJTiBDQVBJVEFMIExFVFRFUiBXIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDU3IDAzMDc7Ozs7Tjs7OzsxRTg3OworMUU4NztMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA3NyAwMzA3Ozs7O047OzsxRTg2OzsxRTg2CisxRTg4O0xBVElOIENBUElUQUwgTEVUVEVSIFcgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNTcgMDMyMzs7OztOOzs7OzFFODk7CisxRTg5O0xBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDc3IDAzMjM7Ozs7Tjs7OzFFODg7OzFFODgKKzFFOEE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWCBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA1OCAwMzA3Ozs7O047Ozs7MUU4QjsKKzFFOEI7TEFUSU4gU01BTEwgTEVUVEVSIFggV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNzggMDMwNzs7OztOOzs7MUU4QTs7MUU4QQorMUU4QztMQVRJTiBDQVBJVEFMIExFVFRFUiBYIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDU4IDAzMDg7Ozs7Tjs7OzsxRThEOworMUU4RDtMQVRJTiBTTUFMTCBMRVRURVIgWCBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA3OCAwMzA4Ozs7O047OzsxRThDOzsxRThDCisxRThFO0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNTkgMDMwNzs7OztOOzs7OzFFOEY7CisxRThGO0xBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDc5IDAzMDc7Ozs7Tjs7OzFFOEU7OzFFOEUKKzFFOTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNUEgMDMwMjs7OztOOzs7OzFFOTE7CisxRTkxO0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA3QSAwMzAyOzs7O047OzsxRTkwOzsxRTkwCisxRTkyO0xBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNUEgMDMyMzs7OztOOzs7OzFFOTM7CisxRTkzO0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDdBIDAzMjM7Ozs7Tjs7OzFFOTI7OzFFOTIKKzFFOTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIExJTkUgQkVMT1c7THU7MDtMOzAwNUEgMDMzMTs7OztOOzs7OzFFOTU7CisxRTk1O0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA3QSAwMzMxOzs7O047OzsxRTk0OzsxRTk0CisxRTk2O0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA2OCAwMzMxOzs7O047Ozs7OworMUU5NztMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA3NCAwMzA4Ozs7O047Ozs7OworMUU5ODtMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIFJJTkcgQUJPVkU7TGw7MDtMOzAwNzcgMDMwQTs7OztOOzs7OzsKKzFFOTk7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBSSU5HIEFCT1ZFO0xsOzA7TDswMDc5IDAzMEE7Ozs7Tjs7Ozs7CisxRTlBO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklHSFQgSEFMRiBSSU5HO0xsOzA7TDs8Y29tcGF0PiAwMDYxIDAyQkU7Ozs7Tjs7Ozs7CisxRTlCO0xBVElOIFNNQUxMIExFVFRFUiBMT05HIFMgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAxN0YgMDMwNzs7OztOOzs7MUU2MDs7MUU2MAorMUVBMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDQxIDAzMjM7Ozs7Tjs7OzsxRUExOworMUVBMTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA2MSAwMzIzOzs7O047OzsxRUEwOzsxRUEwCisxRUEyO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBIT09LIEFCT1ZFO0x1OzA7TDswMDQxIDAzMDk7Ozs7Tjs7OzsxRUEzOworMUVBMztMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEhPT0sgQUJPVkU7TGw7MDtMOzAwNjEgMDMwOTs7OztOOzs7MUVBMjs7MUVBMgorMUVBNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgQUNVVEU7THU7MDtMOzAwQzIgMDMwMTs7OztOOzs7OzFFQTU7CisxRUE1O0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgQUNVVEU7TGw7MDtMOzAwRTIgMDMwMTs7OztOOzs7MUVBNDs7MUVBNAorMUVBNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgR1JBVkU7THU7MDtMOzAwQzIgMDMwMDs7OztOOzs7OzFFQTc7CisxRUE3O0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgR1JBVkU7TGw7MDtMOzAwRTIgMDMwMDs7OztOOzs7MUVBNjs7MUVBNgorMUVBODtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgSE9PSyBBQk9WRTtMdTswO0w7MDBDMiAwMzA5Ozs7O047Ozs7MUVBOTsKKzFFQTk7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBIT09LIEFCT1ZFO0xsOzA7TDswMEUyIDAzMDk7Ozs7Tjs7OzFFQTg7OzFFQTgKKzFFQUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIFRJTERFO0x1OzA7TDswMEMyIDAzMDM7Ozs7Tjs7OzsxRUFCOworMUVBQjtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIFRJTERFO0xsOzA7TDswMEUyIDAzMDM7Ozs7Tjs7OzFFQUE7OzFFQUEKKzFFQUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIERPVCBCRUxPVztMdTswO0w7MUVBMCAwMzAyOzs7O047Ozs7MUVBRDsKKzFFQUQ7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBET1QgQkVMT1c7TGw7MDtMOzFFQTEgMDMwMjs7OztOOzs7MUVBQzs7MUVBQworMUVBRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIEFDVVRFO0x1OzA7TDswMTAyIDAzMDE7Ozs7Tjs7OzsxRUFGOworMUVBRjtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBBQ1VURTtMbDswO0w7MDEwMyAwMzAxOzs7O047OzsxRUFFOzsxRUFFCisxRUIwO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgR1JBVkU7THU7MDtMOzAxMDIgMDMwMDs7OztOOzs7OzFFQjE7CisxRUIxO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIEdSQVZFO0xsOzA7TDswMTAzIDAzMDA7Ozs7Tjs7OzFFQjA7OzFFQjAKKzFFQjI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBIT09LIEFCT1ZFO0x1OzA7TDswMTAyIDAzMDk7Ozs7Tjs7OzsxRUIzOworMUVCMztMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBIT09LIEFCT1ZFO0xsOzA7TDswMTAzIDAzMDk7Ozs7Tjs7OzFFQjI7OzFFQjIKKzFFQjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBUSUxERTtMdTswO0w7MDEwMiAwMzAzOzs7O047Ozs7MUVCNTsKKzFFQjU7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgVElMREU7TGw7MDtMOzAxMDMgMDMwMzs7OztOOzs7MUVCNDs7MUVCNAorMUVCNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIERPVCBCRUxPVztMdTswO0w7MUVBMCAwMzA2Ozs7O047Ozs7MUVCNzsKKzFFQjc7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgRE9UIEJFTE9XO0xsOzA7TDsxRUExIDAzMDY7Ozs7Tjs7OzFFQjY7OzFFQjYKKzFFQjg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0NSAwMzIzOzs7O047Ozs7MUVCOTsKKzFFQjk7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNjUgMDMyMzs7OztOOzs7MUVCODs7MUVCOAorMUVCQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggSE9PSyBBQk9WRTtMdTswO0w7MDA0NSAwMzA5Ozs7O047Ozs7MUVCQjsKKzFFQkI7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBIT09LIEFCT1ZFO0xsOzA7TDswMDY1IDAzMDk7Ozs7Tjs7OzFFQkE7OzFFQkEKKzFFQkM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIFRJTERFO0x1OzA7TDswMDQ1IDAzMDM7Ozs7Tjs7OzsxRUJEOworMUVCRDtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIFRJTERFO0xsOzA7TDswMDY1IDAzMDM7Ozs7Tjs7OzFFQkM7OzFFQkMKKzFFQkU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFO0x1OzA7TDswMENBIDAzMDE7Ozs7Tjs7OzsxRUJGOworMUVCRjtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFO0xsOzA7TDswMEVBIDAzMDE7Ozs7Tjs7OzFFQkU7OzFFQkUKKzFFQzA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFO0x1OzA7TDswMENBIDAzMDA7Ozs7Tjs7OzsxRUMxOworMUVDMTtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFO0xsOzA7TDswMEVBIDAzMDA7Ozs7Tjs7OzFFQzA7OzFFQzAKKzFFQzI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEhPT0sgQUJPVkU7THU7MDtMOzAwQ0EgMDMwOTs7OztOOzs7OzFFQzM7CisxRUMzO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgSE9PSyBBQk9WRTtMbDswO0w7MDBFQSAwMzA5Ozs7O047OzsxRUMyOzsxRUMyCisxRUM0O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERTtMdTswO0w7MDBDQSAwMzAzOzs7O047Ozs7MUVDNTsKKzFFQzU7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERTtMbDswO0w7MDBFQSAwMzAzOzs7O047OzsxRUM0OzsxRUM0CisxRUM2O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBET1QgQkVMT1c7THU7MDtMOzFFQjggMDMwMjs7OztOOzs7OzFFQzc7CisxRUM3O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgRE9UIEJFTE9XO0xsOzA7TDsxRUI5IDAzMDI7Ozs7Tjs7OzFFQzY7OzFFQzYKKzFFQzg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEhPT0sgQUJPVkU7THU7MDtMOzAwNDkgMDMwOTs7OztOOzs7OzFFQzk7CisxRUM5O0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggSE9PSyBBQk9WRTtMbDswO0w7MDA2OSAwMzA5Ozs7O047OzsxRUM4OzsxRUM4CisxRUNBO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNDkgMDMyMzs7OztOOzs7OzFFQ0I7CisxRUNCO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDY5IDAzMjM7Ozs7Tjs7OzFFQ0E7OzFFQ0EKKzFFQ0M7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0RiAwMzIzOzs7O047Ozs7MUVDRDsKKzFFQ0Q7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNkYgMDMyMzs7OztOOzs7MUVDQzs7MUVDQworMUVDRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggSE9PSyBBQk9WRTtMdTswO0w7MDA0RiAwMzA5Ozs7O047Ozs7MUVDRjsKKzFFQ0Y7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBIT09LIEFCT1ZFO0xsOzA7TDswMDZGIDAzMDk7Ozs7Tjs7OzFFQ0U7OzFFQ0UKKzFFRDA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFO0x1OzA7TDswMEQ0IDAzMDE7Ozs7Tjs7OzsxRUQxOworMUVEMTtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFO0xsOzA7TDswMEY0IDAzMDE7Ozs7Tjs7OzFFRDA7OzFFRDAKKzFFRDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFO0x1OzA7TDswMEQ0IDAzMDA7Ozs7Tjs7OzsxRUQzOworMUVEMztMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFO0xsOzA7TDswMEY0IDAzMDA7Ozs7Tjs7OzFFRDI7OzFFRDIKKzFFRDQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEhPT0sgQUJPVkU7THU7MDtMOzAwRDQgMDMwOTs7OztOOzs7OzFFRDU7CisxRUQ1O0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgSE9PSyBBQk9WRTtMbDswO0w7MDBGNCAwMzA5Ozs7O047OzsxRUQ0OzsxRUQ0CisxRUQ2O0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERTtMdTswO0w7MDBENCAwMzAzOzs7O047Ozs7MUVENzsKKzFFRDc7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERTtMbDswO0w7MDBGNCAwMzAzOzs7O047OzsxRUQ2OzsxRUQ2CisxRUQ4O0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBET1QgQkVMT1c7THU7MDtMOzFFQ0MgMDMwMjs7OztOOzs7OzFFRDk7CisxRUQ5O0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgRE9UIEJFTE9XO0xsOzA7TDsxRUNEIDAzMDI7Ozs7Tjs7OzFFRDg7OzFFRDgKKzFFREE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEFDVVRFO0x1OzA7TDswMUEwIDAzMDE7Ozs7Tjs7OzsxRURCOworMUVEQjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEFDVVRFO0xsOzA7TDswMUExIDAzMDE7Ozs7Tjs7OzFFREE7OzFFREEKKzFFREM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEdSQVZFO0x1OzA7TDswMUEwIDAzMDA7Ozs7Tjs7OzsxRUREOworMUVERDtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEdSQVZFO0xsOzA7TDswMUExIDAzMDA7Ozs7Tjs7OzFFREM7OzFFREMKKzFFREU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEhPT0sgQUJPVkU7THU7MDtMOzAxQTAgMDMwOTs7OztOOzs7OzFFREY7CisxRURGO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgSE9PSyBBQk9WRTtMbDswO0w7MDFBMSAwMzA5Ozs7O047OzsxRURFOzsxRURFCisxRUUwO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBUSUxERTtMdTswO0w7MDFBMCAwMzAzOzs7O047Ozs7MUVFMTsKKzFFRTE7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBUSUxERTtMbDswO0w7MDFBMSAwMzAzOzs7O047OzsxRUUwOzsxRUUwCisxRUUyO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBET1QgQkVMT1c7THU7MDtMOzAxQTAgMDMyMzs7OztOOzs7OzFFRTM7CisxRUUzO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgRE9UIEJFTE9XO0xsOzA7TDswMUExIDAzMjM7Ozs7Tjs7OzFFRTI7OzFFRTIKKzFFRTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA1NSAwMzIzOzs7O047Ozs7MUVFNTsKKzFFRTU7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNzUgMDMyMzs7OztOOzs7MUVFNDs7MUVFNAorMUVFNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9PSyBBQk9WRTtMdTswO0w7MDA1NSAwMzA5Ozs7O047Ozs7MUVFNzsKKzFFRTc7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT09LIEFCT1ZFO0xsOzA7TDswMDc1IDAzMDk7Ozs7Tjs7OzFFRTY7OzFFRTYKKzFFRTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEFDVVRFO0x1OzA7TDswMUFGIDAzMDE7Ozs7Tjs7OzsxRUU5OworMUVFOTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEFDVVRFO0xsOzA7TDswMUIwIDAzMDE7Ozs7Tjs7OzFFRTg7OzFFRTgKKzFFRUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEdSQVZFO0x1OzA7TDswMUFGIDAzMDA7Ozs7Tjs7OzsxRUVCOworMUVFQjtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEdSQVZFO0xsOzA7TDswMUIwIDAzMDA7Ozs7Tjs7OzFFRUE7OzFFRUEKKzFFRUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEhPT0sgQUJPVkU7THU7MDtMOzAxQUYgMDMwOTs7OztOOzs7OzFFRUQ7CisxRUVEO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgSE9PSyBBQk9WRTtMbDswO0w7MDFCMCAwMzA5Ozs7O047OzsxRUVDOzsxRUVDCisxRUVFO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBUSUxERTtMdTswO0w7MDFBRiAwMzAzOzs7O047Ozs7MUVFRjsKKzFFRUY7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBUSUxERTtMbDswO0w7MDFCMCAwMzAzOzs7O047OzsxRUVFOzsxRUVFCisxRUYwO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBET1QgQkVMT1c7THU7MDtMOzAxQUYgMDMyMzs7OztOOzs7OzFFRjE7CisxRUYxO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgRE9UIEJFTE9XO0xsOzA7TDswMUIwIDAzMjM7Ozs7Tjs7OzFFRjA7OzFFRjAKKzFFRjI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEdSQVZFO0x1OzA7TDswMDU5IDAzMDA7Ozs7Tjs7OzsxRUYzOworMUVGMztMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEdSQVZFO0xsOzA7TDswMDc5IDAzMDA7Ozs7Tjs7OzFFRjI7OzFFRjIKKzFFRjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA1OSAwMzIzOzs7O047Ozs7MUVGNTsKKzFFRjU7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNzkgMDMyMzs7OztOOzs7MUVGNDs7MUVGNAorMUVGNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggSE9PSyBBQk9WRTtMdTswO0w7MDA1OSAwMzA5Ozs7O047Ozs7MUVGNzsKKzFFRjc7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBIT09LIEFCT1ZFO0xsOzA7TDswMDc5IDAzMDk7Ozs7Tjs7OzFFRjY7OzFFRjYKKzFFRjg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIFRJTERFO0x1OzA7TDswMDU5IDAzMDM7Ozs7Tjs7OzsxRUY5OworMUVGOTtMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIFRJTERFO0xsOzA7TDswMDc5IDAzMDM7Ozs7Tjs7OzFFRjg7OzFFRjgKKzFGMDA7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEk7TGw7MDtMOzAzQjEgMDMxMzs7OztOOzs7MUYwODs7MUYwOAorMUYwMTtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQTtMbDswO0w7MDNCMSAwMzE0Ozs7O047OzsxRjA5OzsxRjA5CisxRjAyO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBWQVJJQTtMbDswO0w7MUYwMCAwMzAwOzs7O047OzsxRjBBOzsxRjBBCisxRjAzO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBWQVJJQTtMbDswO0w7MUYwMSAwMzAwOzs7O047OzsxRjBCOzsxRjBCCisxRjA0O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBPWElBO0xsOzA7TDsxRjAwIDAzMDE7Ozs7Tjs7OzFGMEM7OzFGMEMKKzFGMDU7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIE9YSUE7TGw7MDtMOzFGMDEgMDMwMTs7OztOOzs7MUYwRDs7MUYwRAorMUYwNjtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGMDAgMDM0Mjs7OztOOzs7MUYwRTs7MUYwRQorMUYwNztHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGMDEgMDM0Mjs7OztOOzs7MUYwRjs7MUYwRgorMUYwODtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJO0x1OzA7TDswMzkxIDAzMTM7Ozs7Tjs7OzsxRjAwOworMUYwOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBO0x1OzA7TDswMzkxIDAzMTQ7Ozs7Tjs7OzsxRjAxOworMUYwQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBWQVJJQTtMdTswO0w7MUYwOCAwMzAwOzs7O047Ozs7MUYwMjsKKzFGMEI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgVkFSSUE7THU7MDtMOzFGMDkgMDMwMDs7OztOOzs7OzFGMDM7CisxRjBDO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIE9YSUE7THU7MDtMOzFGMDggMDMwMTs7OztOOzs7OzFGMDQ7CisxRjBEO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGMDkgMDMwMTs7OztOOzs7OzFGMDU7CisxRjBFO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0x1OzA7TDsxRjA4IDAzNDI7Ozs7Tjs7OzsxRjA2OworMUYwRjtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSTtMdTswO0w7MUYwOSAwMzQyOzs7O047Ozs7MUYwNzsKKzFGMTA7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBQU0lMSTtMbDswO0w7MDNCNSAwMzEzOzs7O047OzsxRjE4OzsxRjE4CisxRjExO0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUE7TGw7MDtMOzAzQjUgMDMxNDs7OztOOzs7MUYxOTs7MUYxOQorMUYxMjtHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIFBTSUxJIEFORCBWQVJJQTtMbDswO0w7MUYxMCAwMzAwOzs7O047OzsxRjFBOzsxRjFBCisxRjEzO0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUEgQU5EIFZBUklBO0xsOzA7TDsxRjExIDAzMDA7Ozs7Tjs7OzFGMUI7OzFGMUIKKzFGMTQ7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBQU0lMSSBBTkQgT1hJQTtMbDswO0w7MUYxMCAwMzAxOzs7O047OzsxRjFDOzsxRjFDCisxRjE1O0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUEgQU5EIE9YSUE7TGw7MDtMOzFGMTEgMDMwMTs7OztOOzs7MUYxRDs7MUYxRAorMUYxODtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggUFNJTEk7THU7MDtMOzAzOTUgMDMxMzs7OztOOzs7OzFGMTA7CisxRjE5O0dSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBEQVNJQTtMdTswO0w7MDM5NSAwMzE0Ozs7O047Ozs7MUYxMTsKKzFGMUE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIFBTSUxJIEFORCBWQVJJQTtMdTswO0w7MUYxOCAwMzAwOzs7O047Ozs7MUYxMjsKKzFGMUI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIERBU0lBIEFORCBWQVJJQTtMdTswO0w7MUYxOSAwMzAwOzs7O047Ozs7MUYxMzsKKzFGMUM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIFBTSUxJIEFORCBPWElBO0x1OzA7TDsxRjE4IDAzMDE7Ozs7Tjs7OzsxRjE0OworMUYxRDtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGMTkgMDMwMTs7OztOOzs7OzFGMTU7CisxRjIwO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSTtMbDswO0w7MDNCNyAwMzEzOzs7O047OzsxRjI4OzsxRjI4CisxRjIxO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQTtMbDswO0w7MDNCNyAwMzE0Ozs7O047OzsxRjI5OzsxRjI5CisxRjIyO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgVkFSSUE7TGw7MDtMOzFGMjAgMDMwMDs7OztOOzs7MUYyQTs7MUYyQQorMUYyMztHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFZBUklBO0xsOzA7TDsxRjIxIDAzMDA7Ozs7Tjs7OzFGMkI7OzFGMkIKKzFGMjQ7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBPWElBO0xsOzA7TDsxRjIwIDAzMDE7Ozs7Tjs7OzFGMkM7OzFGMkMKKzFGMjU7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBPWElBO0xsOzA7TDsxRjIxIDAzMDE7Ozs7Tjs7OzFGMkQ7OzFGMkQKKzFGMjY7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtMbDswO0w7MUYyMCAwMzQyOzs7O047OzsxRjJFOzsxRjJFCisxRjI3O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGMjEgMDM0Mjs7OztOOzs7MUYyRjs7MUYyRgorMUYyODtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSTtMdTswO0w7MDM5NyAwMzEzOzs7O047Ozs7MUYyMDsKKzFGMjk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUE7THU7MDtMOzAzOTcgMDMxNDs7OztOOzs7OzFGMjE7CisxRjJBO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBWQVJJQTtMdTswO0w7MUYyOCAwMzAwOzs7O047Ozs7MUYyMjsKKzFGMkI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFZBUklBO0x1OzA7TDsxRjI5IDAzMDA7Ozs7Tjs7OzsxRjIzOworMUYyQztHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgT1hJQTtMdTswO0w7MUYyOCAwMzAxOzs7O047Ozs7MUYyNDsKKzFGMkQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGMjkgMDMwMTs7OztOOzs7OzFGMjU7CisxRjJFO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtMdTswO0w7MUYyOCAwMzQyOzs7O047Ozs7MUYyNjsKKzFGMkY7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JO0x1OzA7TDsxRjI5IDAzNDI7Ozs7Tjs7OzsxRjI3OworMUYzMDtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJO0xsOzA7TDswM0I5IDAzMTM7Ozs7Tjs7OzFGMzg7OzFGMzgKKzFGMzE7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQTtMbDswO0w7MDNCOSAwMzE0Ozs7O047OzsxRjM5OzsxRjM5CisxRjMyO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggUFNJTEkgQU5EIFZBUklBO0xsOzA7TDsxRjMwIDAzMDA7Ozs7Tjs7OzFGM0E7OzFGM0EKKzFGMzM7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgVkFSSUE7TGw7MDtMOzFGMzEgMDMwMDs7OztOOzs7MUYzQjs7MUYzQgorMUYzNDtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJIEFORCBPWElBO0xsOzA7TDsxRjMwIDAzMDE7Ozs7Tjs7OzFGM0M7OzFGM0MKKzFGMzU7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgT1hJQTtMbDswO0w7MUYzMSAwMzAxOzs7O047OzsxRjNEOzsxRjNECisxRjM2O0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjMwIDAzNDI7Ozs7Tjs7OzFGM0U7OzFGM0UKKzFGMzc7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGMzEgMDM0Mjs7OztOOzs7MUYzRjs7MUYzRgorMUYzODtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggUFNJTEk7THU7MDtMOzAzOTkgMDMxMzs7OztOOzs7OzFGMzA7CisxRjM5O0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQTtMdTswO0w7MDM5OSAwMzE0Ozs7O047Ozs7MUYzMTsKKzFGM0E7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJIEFORCBWQVJJQTtMdTswO0w7MUYzOCAwMzAwOzs7O047Ozs7MUYzMjsKKzFGM0I7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIERBU0lBIEFORCBWQVJJQTtMdTswO0w7MUYzOSAwMzAwOzs7O047Ozs7MUYzMzsKKzFGM0M7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJIEFORCBPWElBO0x1OzA7TDsxRjM4IDAzMDE7Ozs7Tjs7OzsxRjM0OworMUYzRDtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGMzkgMDMwMTs7OztOOzs7OzFGMzU7CisxRjNFO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGMzggMDM0Mjs7OztOOzs7OzFGMzY7CisxRjNGO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGMzkgMDM0Mjs7OztOOzs7OzFGMzc7CisxRjQwO0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggUFNJTEk7TGw7MDtMOzAzQkYgMDMxMzs7OztOOzs7MUY0ODs7MUY0OAorMUY0MTtHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBO0xsOzA7TDswM0JGIDAzMTQ7Ozs7Tjs7OzFGNDk7OzFGNDkKKzFGNDI7R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBQU0lMSSBBTkQgVkFSSUE7TGw7MDtMOzFGNDAgMDMwMDs7OztOOzs7MUY0QTs7MUY0QQorMUY0MztHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBIEFORCBWQVJJQTtMbDswO0w7MUY0MSAwMzAwOzs7O047OzsxRjRCOzsxRjRCCisxRjQ0O0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggUFNJTEkgQU5EIE9YSUE7TGw7MDtMOzFGNDAgMDMwMTs7OztOOzs7MUY0Qzs7MUY0QworMUY0NTtHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBIEFORCBPWElBO0xsOzA7TDsxRjQxIDAzMDE7Ozs7Tjs7OzFGNEQ7OzFGNEQKKzFGNDg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIFBTSUxJO0x1OzA7TDswMzlGIDAzMTM7Ozs7Tjs7OzsxRjQwOworMUY0OTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggREFTSUE7THU7MDtMOzAzOUYgMDMxNDs7OztOOzs7OzFGNDE7CisxRjRBO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBQU0lMSSBBTkQgVkFSSUE7THU7MDtMOzFGNDggMDMwMDs7OztOOzs7OzFGNDI7CisxRjRCO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBEQVNJQSBBTkQgVkFSSUE7THU7MDtMOzFGNDkgMDMwMDs7OztOOzs7OzFGNDM7CisxRjRDO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBQU0lMSSBBTkQgT1hJQTtMdTswO0w7MUY0OCAwMzAxOzs7O047Ozs7MUY0NDsKKzFGNEQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBIEFORCBPWElBO0x1OzA7TDsxRjQ5IDAzMDE7Ozs7Tjs7OzsxRjQ1OworMUY1MDtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBTSUxJO0xsOzA7TDswM0M1IDAzMTM7Ozs7Tjs7Ozs7CisxRjUxO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUE7TGw7MDtMOzAzQzUgMDMxNDs7OztOOzs7MUY1OTs7MUY1OQorMUY1MjtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBTSUxJIEFORCBWQVJJQTtMbDswO0w7MUY1MCAwMzAwOzs7O047Ozs7OworMUY1MztHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERBU0lBIEFORCBWQVJJQTtMbDswO0w7MUY1MSAwMzAwOzs7O047OzsxRjVCOzsxRjVCCisxRjU0O0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggUFNJTEkgQU5EIE9YSUE7TGw7MDtMOzFGNTAgMDMwMTs7OztOOzs7OzsKKzFGNTU7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBEQVNJQSBBTkQgT1hJQTtMbDswO0w7MUY1MSAwMzAxOzs7O047OzsxRjVEOzsxRjVECisxRjU2O0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjUwIDAzNDI7Ozs7Tjs7Ozs7CisxRjU3O0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjUxIDAzNDI7Ozs7Tjs7OzFGNUY7OzFGNUYKKzFGNTk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIERBU0lBO0x1OzA7TDswM0E1IDAzMTQ7Ozs7Tjs7OzsxRjUxOworMUY1QjtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIFZBUklBO0x1OzA7TDsxRjU5IDAzMDA7Ozs7Tjs7OzsxRjUzOworMUY1RDtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIE9YSUE7THU7MDtMOzFGNTkgMDMwMTs7OztOOzs7OzFGNTU7CisxRjVGO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGNTkgMDM0Mjs7OztOOzs7OzFGNTc7CisxRjYwO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJO0xsOzA7TDswM0M5IDAzMTM7Ozs7Tjs7OzFGNjg7OzFGNjgKKzFGNjE7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUE7TGw7MDtMOzAzQzkgMDMxNDs7OztOOzs7MUY2OTs7MUY2OQorMUY2MjtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgVkFSSUE7TGw7MDtMOzFGNjAgMDMwMDs7OztOOzs7MUY2QTs7MUY2QQorMUY2MztHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgVkFSSUE7TGw7MDtMOzFGNjEgMDMwMDs7OztOOzs7MUY2Qjs7MUY2QgorMUY2NDtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgT1hJQTtMbDswO0w7MUY2MCAwMzAxOzs7O047OzsxRjZDOzsxRjZDCisxRjY1O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBPWElBO0xsOzA7TDsxRjYxIDAzMDE7Ozs7Tjs7OzFGNkQ7OzFGNkQKKzFGNjY7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjYwIDAzNDI7Ozs7Tjs7OzFGNkU7OzFGNkUKKzFGNjc7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjYxIDAzNDI7Ozs7Tjs7OzFGNkY7OzFGNkYKKzFGNjg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSTtMdTswO0w7MDNBOSAwMzEzOzs7O047Ozs7MUY2MDsKKzFGNjk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQTtMdTswO0w7MDNBOSAwMzE0Ozs7O047Ozs7MUY2MTsKKzFGNkE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgVkFSSUE7THU7MDtMOzFGNjggMDMwMDs7OztOOzs7OzFGNjI7CisxRjZCO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFZBUklBO0x1OzA7TDsxRjY5IDAzMDA7Ozs7Tjs7OzsxRjYzOworMUY2QztHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBPWElBO0x1OzA7TDsxRjY4IDAzMDE7Ozs7Tjs7OzsxRjY0OworMUY2RDtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBPWElBO0x1OzA7TDsxRjY5IDAzMDE7Ozs7Tjs7OzsxRjY1OworMUY2RTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtMdTswO0w7MUY2OCAwMzQyOzs7O047Ozs7MUY2NjsKKzFGNkY7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGNjkgMDM0Mjs7OztOOzs7OzFGNjc7CisxRjcwO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFZBUklBO0xsOzA7TDswM0IxIDAzMDA7Ozs7Tjs7OzFGQkE7OzFGQkEKKzFGNzE7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggT1hJQTtMbDswO0w7MDNBQzs7OztOOzs7MUZCQjs7MUZCQgorMUY3MjtHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIFZBUklBO0xsOzA7TDswM0I1IDAzMDA7Ozs7Tjs7OzFGQzg7OzFGQzgKKzFGNzM7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBPWElBO0xsOzA7TDswM0FEOzs7O047OzsxRkM5OzsxRkM5CisxRjc0O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBWQVJJQTtMbDswO0w7MDNCNyAwMzAwOzs7O047OzsxRkNBOzsxRkNBCisxRjc1O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBPWElBO0xsOzA7TDswM0FFOzs7O047OzsxRkNCOzsxRkNCCisxRjc2O0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggVkFSSUE7TGw7MDtMOzAzQjkgMDMwMDs7OztOOzs7MUZEQTs7MUZEQQorMUY3NztHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIE9YSUE7TGw7MDtMOzAzQUY7Ozs7Tjs7OzFGREI7OzFGREIKKzFGNzg7R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBWQVJJQTtMbDswO0w7MDNCRiAwMzAwOzs7O047OzsxRkY4OzsxRkY4CisxRjc5O0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggT1hJQTtMbDswO0w7MDNDQzs7OztOOzs7MUZGOTs7MUZGOQorMUY3QTtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFZBUklBO0xsOzA7TDswM0M1IDAzMDA7Ozs7Tjs7OzFGRUE7OzFGRUEKKzFGN0I7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBPWElBO0xsOzA7TDswM0NEOzs7O047OzsxRkVCOzsxRkVCCisxRjdDO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFZBUklBO0xsOzA7TDswM0M5IDAzMDA7Ozs7Tjs7OzFGRkE7OzFGRkEKKzFGN0Q7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggT1hJQTtMbDswO0w7MDNDRTs7OztOOzs7MUZGQjs7MUZGQgorMUY4MDtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYwMCAwMzQ1Ozs7O047OzsxRjg4OzsxRjg4CisxRjgxO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjAxIDAzNDU7Ozs7Tjs7OzFGODk7OzFGODkKKzFGODI7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjAyIDAzNDU7Ozs7Tjs7OzFGOEE7OzFGOEEKKzFGODM7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjAzIDAzNDU7Ozs7Tjs7OzFGOEI7OzFGOEIKKzFGODQ7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMDQgMDM0NTs7OztOOzs7MUY4Qzs7MUY4QworMUY4NTtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYwNSAwMzQ1Ozs7O047OzsxRjhEOzsxRjhECisxRjg2O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYwNiAwMzQ1Ozs7O047OzsxRjhFOzsxRjhFCisxRjg3O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYwNyAwMzQ1Ozs7O047OzsxRjhGOzsxRjhGCisxRjg4O0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjA4IDAzNDU7Ozs7Tjs7OzsxRjgwOworMUY4OTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUYwOSAwMzQ1Ozs7O047Ozs7MUY4MTsKKzFGOEE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgVkFSSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjBBIDAzNDU7Ozs7Tjs7OzsxRjgyOworMUY4QjtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGMEIgMDM0NTs7OztOOzs7OzFGODM7CisxRjhDO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjBDIDAzNDU7Ozs7Tjs7OzsxRjg0OworMUY4RDtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBPWElBIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUYwRCAwMzQ1Ozs7O047Ozs7MUY4NTsKKzFGOEU7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjBFIDAzNDU7Ozs7Tjs7OzsxRjg2OworMUY4RjtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGMEYgMDM0NTs7OztOOzs7OzFGODc7CisxRjkwO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYyMCAwMzQ1Ozs7O047OzsxRjk4OzsxRjk4CisxRjkxO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYyMSAwMzQ1Ozs7O047OzsxRjk5OzsxRjk5CisxRjkyO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMjIgMDM0NTs7OztOOzs7MUY5QTs7MUY5QQorMUY5MztHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjIzIDAzNDU7Ozs7Tjs7OzFGOUI7OzFGOUIKKzFGOTQ7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjI0IDAzNDU7Ozs7Tjs7OzFGOUM7OzFGOUMKKzFGOTU7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjI1IDAzNDU7Ozs7Tjs7OzFGOUQ7OzFGOUQKKzFGOTY7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYyNiAwMzQ1Ozs7O047OzsxRjlFOzsxRjlFCisxRjk3O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMjcgMDM0NTs7OztOOzs7MUY5Rjs7MUY5RgorMUY5ODtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGMjggMDM0NTs7OztOOzs7OzFGOTA7CisxRjk5O0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUYyOSAwMzQ1Ozs7O047Ozs7MUY5MTsKKzFGOUE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUYyQSAwMzQ1Ozs7O047Ozs7MUY5MjsKKzFGOUI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUYyQiAwMzQ1Ozs7O047Ozs7MUY5MzsKKzFGOUM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjJDIDAzNDU7Ozs7Tjs7OzsxRjk0OworMUY5RDtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGMkQgMDM0NTs7OztOOzs7OzFGOTU7CisxRjlFO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGMkUgMDM0NTs7OztOOzs7OzFGOTY7CisxRjlGO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGMkYgMDM0NTs7OztOOzs7OzFGOTc7CisxRkEwO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjYwIDAzNDU7Ozs7Tjs7OzFGQTg7OzFGQTgKKzFGQTE7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNjEgMDM0NTs7OztOOzs7MUZBOTs7MUZBOQorMUZBMjtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNjIgMDM0NTs7OztOOzs7MUZBQTs7MUZBQQorMUZBMztHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNjMgMDM0NTs7OztOOzs7MUZBQjs7MUZBQgorMUZBNDtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY2NCAwMzQ1Ozs7O047OzsxRkFDOzsxRkFDCisxRkE1O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjY1IDAzNDU7Ozs7Tjs7OzFGQUQ7OzFGQUQKKzFGQTY7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjY2IDAzNDU7Ozs7Tjs7OzFGQUU7OzFGQUUKKzFGQTc7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjY3IDAzNDU7Ozs7Tjs7OzFGQUY7OzFGQUYKKzFGQTg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGNjggMDM0NTs7OztOOzs7OzFGQTA7CisxRkE5O0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjY5IDAzNDU7Ozs7Tjs7OzsxRkExOworMUZBQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGNkEgMDM0NTs7OztOOzs7OzFGQTI7CisxRkFCO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUY2QiAwMzQ1Ozs7O047Ozs7MUZBMzsKKzFGQUM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGNkMgMDM0NTs7OztOOzs7OzFGQTQ7CisxRkFEO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjZEIDAzNDU7Ozs7Tjs7OzsxRkE1OworMUZBRTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGNkUgMDM0NTs7OztOOzs7OzFGQTY7CisxRkFGO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUY2RiAwMzQ1Ozs7O047Ozs7MUZBNzsKKzFGQjA7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVlJBQ0hZO0xsOzA7TDswM0IxIDAzMDY7Ozs7Tjs7OzFGQjg7OzFGQjgKKzFGQjE7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggTUFDUk9OO0xsOzA7TDswM0IxIDAzMDQ7Ozs7Tjs7OzFGQjk7OzFGQjkKKzFGQjI7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNzAgMDM0NTs7OztOOzs7OzsKKzFGQjM7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggWVBPR0VHUkFNTUVOSTtMbDswO0w7MDNCMSAwMzQ1Ozs7O047OzsxRkJDOzsxRkJDCisxRkI0O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzAzQUMgMDM0NTs7OztOOzs7OzsKKzFGQjY7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUEVSSVNQT01FTkk7TGw7MDtMOzAzQjEgMDM0Mjs7OztOOzs7OzsKKzFGQjc7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGQjYgMDM0NTs7OztOOzs7OzsKKzFGQjg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBWUkFDSFk7THU7MDtMOzAzOTEgMDMwNjs7OztOOzs7OzFGQjA7CisxRkI5O0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggTUFDUk9OO0x1OzA7TDswMzkxIDAzMDQ7Ozs7Tjs7OzsxRkIxOworMUZCQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFZBUklBO0x1OzA7TDswMzkxIDAzMDA7Ozs7Tjs7OzsxRjcwOworMUZCQjtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIE9YSUE7THU7MDtMOzAzODY7Ozs7Tjs7OzsxRjcxOworMUZCQztHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBST1NHRUdSQU1NRU5JO0x0OzA7TDswMzkxIDAzNDU7Ozs7Tjs7OzsxRkIzOworMUZCRDtHUkVFSyBLT1JPTklTO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzEzOzs7O047Ozs7OworMUZCRTtHUkVFSyBQUk9TR0VHUkFNTUVOSTtMbDswO0w7MDNCOTs7OztOOzs7MDM5OTs7MDM5OQorMUZCRjtHUkVFSyBQU0lMSTtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMxMzs7OztOOzs7OzsKKzFGQzA7R1JFRUsgUEVSSVNQT01FTkk7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzNDI7Ozs7Tjs7Ozs7CisxRkMxO0dSRUVLIERJQUxZVElLQSBBTkQgUEVSSVNQT01FTkk7U2s7MDtPTjswMEE4IDAzNDI7Ozs7Tjs7Ozs7CisxRkMyO0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY3NCAwMzQ1Ozs7O047Ozs7OworMUZDMztHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggWVBPR0VHUkFNTUVOSTtMbDswO0w7MDNCNyAwMzQ1Ozs7O047OzsxRkNDOzsxRkNDCisxRkM0O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBPWElBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDswM0FFIDAzNDU7Ozs7Tjs7Ozs7CisxRkM2O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQRVJJU1BPTUVOSTtMbDswO0w7MDNCNyAwMzQyOzs7O047Ozs7OworMUZDNztHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGQzYgMDM0NTs7OztOOzs7OzsKKzFGQzg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIFZBUklBO0x1OzA7TDswMzk1IDAzMDA7Ozs7Tjs7OzsxRjcyOworMUZDOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggT1hJQTtMdTswO0w7MDM4ODs7OztOOzs7OzFGNzM7CisxRkNBO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFZBUklBO0x1OzA7TDswMzk3IDAzMDA7Ozs7Tjs7OzsxRjc0OworMUZDQjtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBPWElBO0x1OzA7TDswMzg5Ozs7O047Ozs7MUY3NTsKKzFGQ0M7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzAzOTcgMDM0NTs7OztOOzs7OzFGQzM7CisxRkNEO0dSRUVLIFBTSUxJIEFORCBWQVJJQTtTazswO09OOzFGQkYgMDMwMDs7OztOOzs7OzsKKzFGQ0U7R1JFRUsgUFNJTEkgQU5EIE9YSUE7U2s7MDtPTjsxRkJGIDAzMDE7Ozs7Tjs7Ozs7CisxRkNGO0dSRUVLIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtTazswO09OOzFGQkYgMDM0Mjs7OztOOzs7OzsKKzFGRDA7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBWUkFDSFk7TGw7MDtMOzAzQjkgMDMwNjs7OztOOzs7MUZEODs7MUZEOAorMUZEMTtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIE1BQ1JPTjtMbDswO0w7MDNCOSAwMzA0Ozs7O047OzsxRkQ5OzsxRkQ5CisxRkQyO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggRElBTFlUSUtBIEFORCBWQVJJQTtMbDswO0w7MDNDQSAwMzAwOzs7O047Ozs7OworMUZEMztHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgT1hJQTtMbDswO0w7MDM5MDs7OztOOzs7OzsKKzFGRDY7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBQRVJJU1BPTUVOSTtMbDswO0w7MDNCOSAwMzQyOzs7O047Ozs7OworMUZENztHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzAzQ0EgMDM0Mjs7OztOOzs7OzsKKzFGRDg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFZSQUNIWTtMdTswO0w7MDM5OSAwMzA2Ozs7O047Ozs7MUZEMDsKKzFGRDk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIE1BQ1JPTjtMdTswO0w7MDM5OSAwMzA0Ozs7O047Ozs7MUZEMTsKKzFGREE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFZBUklBO0x1OzA7TDswMzk5IDAzMDA7Ozs7Tjs7OzsxRjc2OworMUZEQjtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggT1hJQTtMdTswO0w7MDM4QTs7OztOOzs7OzFGNzc7CisxRkREO0dSRUVLIERBU0lBIEFORCBWQVJJQTtTazswO09OOzFGRkUgMDMwMDs7OztOOzs7OzsKKzFGREU7R1JFRUsgREFTSUEgQU5EIE9YSUE7U2s7MDtPTjsxRkZFIDAzMDE7Ozs7Tjs7Ozs7CisxRkRGO0dSRUVLIERBU0lBIEFORCBQRVJJU1BPTUVOSTtTazswO09OOzFGRkUgMDM0Mjs7OztOOzs7OzsKKzFGRTA7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBWUkFDSFk7TGw7MDtMOzAzQzUgMDMwNjs7OztOOzs7MUZFODs7MUZFOAorMUZFMTtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIE1BQ1JPTjtMbDswO0w7MDNDNSAwMzA0Ozs7O047OzsxRkU5OzsxRkU5CisxRkUyO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBIEFORCBWQVJJQTtMbDswO0w7MDNDQiAwMzAwOzs7O047Ozs7OworMUZFMztHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgT1hJQTtMbDswO0w7MDNCMDs7OztOOzs7OzsKKzFGRTQ7R1JFRUsgU01BTEwgTEVUVEVSIFJITyBXSVRIIFBTSUxJO0xsOzA7TDswM0MxIDAzMTM7Ozs7Tjs7Ozs7CisxRkU1O0dSRUVLIFNNQUxMIExFVFRFUiBSSE8gV0lUSCBEQVNJQTtMbDswO0w7MDNDMSAwMzE0Ozs7O047OzsxRkVDOzsxRkVDCisxRkU2O0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggUEVSSVNQT01FTkk7TGw7MDtMOzAzQzUgMDM0Mjs7OztOOzs7OzsKKzFGRTc7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDswM0NCIDAzNDI7Ozs7Tjs7Ozs7CisxRkU4O0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBWUkFDSFk7THU7MDtMOzAzQTUgMDMwNjs7OztOOzs7OzFGRTA7CisxRkU5O0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBNQUNST047THU7MDtMOzAzQTUgMDMwNDs7OztOOzs7OzFGRTE7CisxRkVBO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBWQVJJQTtMdTswO0w7MDNBNSAwMzAwOzs7O047Ozs7MUY3QTsKKzFGRUI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIE9YSUE7THU7MDtMOzAzOEU7Ozs7Tjs7OzsxRjdCOworMUZFQztHUkVFSyBDQVBJVEFMIExFVFRFUiBSSE8gV0lUSCBEQVNJQTtMdTswO0w7MDNBMSAwMzE0Ozs7O047Ozs7MUZFNTsKKzFGRUQ7R1JFRUsgRElBTFlUSUtBIEFORCBWQVJJQTtTazswO09OOzAwQTggMDMwMDs7OztOOzs7OzsKKzFGRUU7R1JFRUsgRElBTFlUSUtBIEFORCBPWElBO1NrOzA7T047MDM4NTs7OztOOzs7OzsKKzFGRUY7R1JFRUsgVkFSSUE7U2s7MDtPTjswMDYwOzs7O047Ozs7OworMUZGMjtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY3QyAwMzQ1Ozs7O047Ozs7OworMUZGMztHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBZUE9HRUdSQU1NRU5JO0xsOzA7TDswM0M5IDAzNDU7Ozs7Tjs7OzFGRkM7OzFGRkMKKzFGRjQ7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggT1hJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MDNDRSAwMzQ1Ozs7O047Ozs7OworMUZGNjtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQRVJJU1BPTUVOSTtMbDswO0w7MDNDOSAwMzQyOzs7O047Ozs7OworMUZGNztHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUZGNiAwMzQ1Ozs7O047Ozs7OworMUZGODtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggVkFSSUE7THU7MDtMOzAzOUYgMDMwMDs7OztOOzs7OzFGNzg7CisxRkY5O0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBPWElBO0x1OzA7TDswMzhDOzs7O047Ozs7MUY3OTsKKzFGRkE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBWQVJJQTtMdTswO0w7MDNBOSAwMzAwOzs7O047Ozs7MUY3QzsKKzFGRkI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBPWElBO0x1OzA7TDswMzhGOzs7O047Ozs7MUY3RDsKKzFGRkM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MDNBOSAwMzQ1Ozs7O047Ozs7MUZGMzsKKzFGRkQ7R1JFRUsgT1hJQTtTazswO09OOzAwQjQ7Ozs7Tjs7Ozs7CisxRkZFO0dSRUVLIERBU0lBO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzE0Ozs7O047Ozs7OworMjAwMDtFTiBRVUFEO1pzOzA7V1M7MjAwMjs7OztOOzs7OzsKKzIwMDE7RU0gUVVBRDtaczswO1dTOzIwMDM7Ozs7Tjs7Ozs7CisyMDAyO0VOIFNQQUNFO1pzOzA7V1M7PGNvbXBhdD4gMDAyMDs7OztOOzs7OzsKKzIwMDM7RU0gU1BBQ0U7WnM7MDtXUzs8Y29tcGF0PiAwMDIwOzs7O047Ozs7OworMjAwNDtUSFJFRS1QRVItRU0gU1BBQ0U7WnM7MDtXUzs8Y29tcGF0PiAwMDIwOzs7O047Ozs7OworMjAwNTtGT1VSLVBFUi1FTSBTUEFDRTtaczswO1dTOzxjb21wYXQ+IDAwMjA7Ozs7Tjs7Ozs7CisyMDA2O1NJWC1QRVItRU0gU1BBQ0U7WnM7MDtXUzs8Y29tcGF0PiAwMDIwOzs7O047Ozs7OworMjAwNztGSUdVUkUgU1BBQ0U7WnM7MDtXUzs8bm9CcmVhaz4gMDAyMDs7OztOOzs7OzsKKzIwMDg7UFVOQ1RVQVRJT04gU1BBQ0U7WnM7MDtXUzs8Y29tcGF0PiAwMDIwOzs7O047Ozs7OworMjAwOTtUSElOIFNQQUNFO1pzOzA7V1M7PGNvbXBhdD4gMDAyMDs7OztOOzs7OzsKKzIwMEE7SEFJUiBTUEFDRTtaczswO1dTOzxjb21wYXQ+IDAwMjA7Ozs7Tjs7Ozs7CisyMDBCO1pFUk8gV0lEVEggU1BBQ0U7WnM7MDtCTjs7Ozs7Tjs7Ozs7CisyMDBDO1pFUk8gV0lEVEggTk9OLUpPSU5FUjtDZjswO0JOOzs7OztOOzs7OzsKKzIwMEQ7WkVSTyBXSURUSCBKT0lORVI7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CisyMDBFO0xFRlQtVE8tUklHSFQgTUFSSztDZjswO0w7Ozs7O047Ozs7OworMjAwRjtSSUdIVC1UTy1MRUZUIE1BUks7Q2Y7MDtSOzs7OztOOzs7OzsKKzIwMTA7SFlQSEVOO1BkOzA7T047Ozs7O047Ozs7OworMjAxMTtOT04tQlJFQUtJTkcgSFlQSEVOO1BkOzA7T047PG5vQnJlYWs+IDIwMTA7Ozs7Tjs7Ozs7CisyMDEyO0ZJR1VSRSBEQVNIO1BkOzA7T047Ozs7O047Ozs7OworMjAxMztFTiBEQVNIO1BkOzA7T047Ozs7O047Ozs7OworMjAxNDtFTSBEQVNIO1BkOzA7T047Ozs7O047Ozs7OworMjAxNTtIT1JJWk9OVEFMIEJBUjtQZDswO09OOzs7OztOO1FVT1RBVElPTiBEQVNIOzs7OworMjAxNjtET1VCTEUgVkVSVElDQUwgTElORTtQbzswO09OOzs7OztOO0RPVUJMRSBWRVJUSUNBTCBCQVI7Ozs7CisyMDE3O0RPVUJMRSBMT1cgTElORTtQbzswO09OOzxjb21wYXQ+IDAwMjAgMDMzMzs7OztOO1NQQUNJTkcgRE9VQkxFIFVOREVSU0NPUkU7Ozs7CisyMDE4O0xFRlQgU0lOR0xFIFFVT1RBVElPTiBNQVJLO1BpOzA7T047Ozs7O047U0lOR0xFIFRVUk5FRCBDT01NQSBRVU9UQVRJT04gTUFSSzs7OzsKKzIwMTk7UklHSFQgU0lOR0xFIFFVT1RBVElPTiBNQVJLO1BmOzA7T047Ozs7O047U0lOR0xFIENPTU1BIFFVT1RBVElPTiBNQVJLOzs7OworMjAxQTtTSU5HTEUgTE9XLTkgUVVPVEFUSU9OIE1BUks7UHM7MDtPTjs7Ozs7TjtMT1cgU0lOR0xFIENPTU1BIFFVT1RBVElPTiBNQVJLOzs7OworMjAxQjtTSU5HTEUgSElHSC1SRVZFUlNFRC05IFFVT1RBVElPTiBNQVJLO1BpOzA7T047Ozs7O047U0lOR0xFIFJFVkVSU0VEIENPTU1BIFFVT1RBVElPTiBNQVJLOzs7OworMjAxQztMRUZUIERPVUJMRSBRVU9UQVRJT04gTUFSSztQaTswO09OOzs7OztOO0RPVUJMRSBUVVJORUQgQ09NTUEgUVVPVEFUSU9OIE1BUks7Ozs7CisyMDFEO1JJR0hUIERPVUJMRSBRVU9UQVRJT04gTUFSSztQZjswO09OOzs7OztOO0RPVUJMRSBDT01NQSBRVU9UQVRJT04gTUFSSzs7OzsKKzIwMUU7RE9VQkxFIExPVy05IFFVT1RBVElPTiBNQVJLO1BzOzA7T047Ozs7O047TE9XIERPVUJMRSBDT01NQSBRVU9UQVRJT04gTUFSSzs7OzsKKzIwMUY7RE9VQkxFIEhJR0gtUkVWRVJTRUQtOSBRVU9UQVRJT04gTUFSSztQaTswO09OOzs7OztOO0RPVUJMRSBSRVZFUlNFRCBDT01NQSBRVU9UQVRJT04gTUFSSzs7OzsKKzIwMjA7REFHR0VSO1BvOzA7T047Ozs7O047Ozs7OworMjAyMTtET1VCTEUgREFHR0VSO1BvOzA7T047Ozs7O047Ozs7OworMjAyMjtCVUxMRVQ7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDIzO1RSSUFOR1VMQVIgQlVMTEVUO1BvOzA7T047Ozs7O047Ozs7OworMjAyNDtPTkUgRE9UIExFQURFUjtQbzswO09OOzxjb21wYXQ+IDAwMkU7Ozs7Tjs7Ozs7CisyMDI1O1RXTyBET1QgTEVBREVSO1BvOzA7T047PGNvbXBhdD4gMDAyRSAwMDJFOzs7O047Ozs7OworMjAyNjtIT1JJWk9OVEFMIEVMTElQU0lTO1BvOzA7T047PGNvbXBhdD4gMDAyRSAwMDJFIDAwMkU7Ozs7Tjs7Ozs7CisyMDI3O0hZUEhFTkFUSU9OIFBPSU5UO1BvOzA7T047Ozs7O047Ozs7OworMjAyODtMSU5FIFNFUEFSQVRPUjtabDswO1dTOzs7OztOOzs7OzsKKzIwMjk7UEFSQUdSQVBIIFNFUEFSQVRPUjtacDswO0I7Ozs7O047Ozs7OworMjAyQTtMRUZULVRPLVJJR0hUIEVNQkVERElORztDZjswO0xSRTs7Ozs7Tjs7Ozs7CisyMDJCO1JJR0hULVRPLUxFRlQgRU1CRURESU5HO0NmOzA7UkxFOzs7OztOOzs7OzsKKzIwMkM7UE9QIERJUkVDVElPTkFMIEZPUk1BVFRJTkc7Q2Y7MDtQREY7Ozs7O047Ozs7OworMjAyRDtMRUZULVRPLVJJR0hUIE9WRVJSSURFO0NmOzA7TFJPOzs7OztOOzs7OzsKKzIwMkU7UklHSFQtVE8tTEVGVCBPVkVSUklERTtDZjswO1JMTzs7Ozs7Tjs7Ozs7CisyMDJGO05BUlJPVyBOTy1CUkVBSyBTUEFDRTtaczswO1dTOzxub0JyZWFrPiAwMDIwOzs7O047Ozs7OworMjAzMDtQRVIgTUlMTEUgU0lHTjtQbzswO0VUOzs7OztOOzs7OzsKKzIwMzE7UEVSIFRFTiBUSE9VU0FORCBTSUdOO1BvOzA7RVQ7Ozs7O047Ozs7OworMjAzMjtQUklNRTtQbzswO0VUOzs7OztOOzs7OzsKKzIwMzM7RE9VQkxFIFBSSU1FO1BvOzA7RVQ7PGNvbXBhdD4gMjAzMiAyMDMyOzs7O047Ozs7OworMjAzNDtUUklQTEUgUFJJTUU7UG87MDtFVDs8Y29tcGF0PiAyMDMyIDIwMzIgMjAzMjs7OztOOzs7OzsKKzIwMzU7UkVWRVJTRUQgUFJJTUU7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDM2O1JFVkVSU0VEIERPVUJMRSBQUklNRTtQbzswO09OOzxjb21wYXQ+IDIwMzUgMjAzNTs7OztOOzs7OzsKKzIwMzc7UkVWRVJTRUQgVFJJUExFIFBSSU1FO1BvOzA7T047PGNvbXBhdD4gMjAzNSAyMDM1IDIwMzU7Ozs7Tjs7Ozs7CisyMDM4O0NBUkVUO1BvOzA7T047Ozs7O047Ozs7OworMjAzOTtTSU5HTEUgTEVGVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSztQaTswO09OOzs7OztZO0xFRlQgUE9JTlRJTkcgU0lOR0xFIEdVSUxMRU1FVDs7OzsKKzIwM0E7U0lOR0xFIFJJR0hULVBPSU5USU5HIEFOR0xFIFFVT1RBVElPTiBNQVJLO1BmOzA7T047Ozs7O1k7UklHSFQgUE9JTlRJTkcgU0lOR0xFIEdVSUxMRU1FVDs7OzsKKzIwM0I7UkVGRVJFTkNFIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDNDO0RPVUJMRSBFWENMQU1BVElPTiBNQVJLO1BvOzA7T047PGNvbXBhdD4gMDAyMSAwMDIxOzs7O047Ozs7OworMjAzRDtJTlRFUlJPQkFORztQbzswO09OOzs7OztOOzs7OzsKKzIwM0U7T1ZFUkxJTkU7UG87MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDU7Ozs7TjtTUEFDSU5HIE9WRVJTQ09SRTs7OzsKKzIwM0Y7VU5ERVJUSUU7UGM7MDtPTjs7Ozs7Tjs7RW5vdGlrb247OzsKKzIwNDA7Q0hBUkFDVEVSIFRJRTtQYzswO09OOzs7OztOOzs7OzsKKzIwNDE7Q0FSRVQgSU5TRVJUSU9OIFBPSU5UO1BvOzA7T047Ozs7O047Ozs7OworMjA0MjtBU1RFUklTTTtQbzswO09OOzs7OztOOzs7OzsKKzIwNDM7SFlQSEVOIEJVTExFVDtQbzswO09OOzs7OztOOzs7OzsKKzIwNDQ7RlJBQ1RJT04gU0xBU0g7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMDQ1O0xFRlQgU1FVQVJFIEJSQUNLRVQgV0lUSCBRVUlMTDtQczswO09OOzs7OztZOzs7OzsKKzIwNDY7UklHSFQgU1FVQVJFIEJSQUNLRVQgV0lUSCBRVUlMTDtQZTswO09OOzs7OztZOzs7OzsKKzIwNDg7UVVFU1RJT04gRVhDTEFNQVRJT04gTUFSSztQbzswO09OOzxjb21wYXQ+IDAwM0YgMDAyMTs7OztOOzs7OzsKKzIwNDk7RVhDTEFNQVRJT04gUVVFU1RJT04gTUFSSztQbzswO09OOzxjb21wYXQ+IDAwMjEgMDAzRjs7OztOOzs7OzsKKzIwNEE7VElST05JQU4gU0lHTiBFVDtQbzswO09OOzs7OztOOzs7OzsKKzIwNEI7UkVWRVJTRUQgUElMQ1JPVyBTSUdOO1BvOzA7T047Ozs7O047Ozs7OworMjA0QztCTEFDSyBMRUZUV0FSRFMgQlVMTEVUO1BvOzA7T047Ozs7O047Ozs7OworMjA0RDtCTEFDSyBSSUdIVFdBUkRTIEJVTExFVDtQbzswO09OOzs7OztOOzs7OzsKKzIwNkE7SU5ISUJJVCBTWU1NRVRSSUMgU1dBUFBJTkc7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CisyMDZCO0FDVElWQVRFIFNZTU1FVFJJQyBTV0FQUElORztDZjswO0JOOzs7OztOOzs7OzsKKzIwNkM7SU5ISUJJVCBBUkFCSUMgRk9STSBTSEFQSU5HO0NmOzA7Qk47Ozs7O047Ozs7OworMjA2RDtBQ1RJVkFURSBBUkFCSUMgRk9STSBTSEFQSU5HO0NmOzA7Qk47Ozs7O047Ozs7OworMjA2RTtOQVRJT05BTCBESUdJVCBTSEFQRVM7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CisyMDZGO05PTUlOQUwgRElHSVQgU0hBUEVTO0NmOzA7Qk47Ozs7O047Ozs7OworMjA3MDtTVVBFUlNDUklQVCBaRVJPO05vOzA7RU47PHN1cGVyPiAwMDMwOzA7MDswO047U1VQRVJTQ1JJUFQgRElHSVQgWkVSTzs7OzsKKzIwNzQ7U1VQRVJTQ1JJUFQgRk9VUjtObzswO0VOOzxzdXBlcj4gMDAzNDs0OzQ7NDtOO1NVUEVSU0NSSVBUIERJR0lUIEZPVVI7Ozs7CisyMDc1O1NVUEVSU0NSSVBUIEZJVkU7Tm87MDtFTjs8c3VwZXI+IDAwMzU7NTs1OzU7TjtTVVBFUlNDUklQVCBESUdJVCBGSVZFOzs7OworMjA3NjtTVVBFUlNDUklQVCBTSVg7Tm87MDtFTjs8c3VwZXI+IDAwMzY7Njs2OzY7TjtTVVBFUlNDUklQVCBESUdJVCBTSVg7Ozs7CisyMDc3O1NVUEVSU0NSSVBUIFNFVkVOO05vOzA7RU47PHN1cGVyPiAwMDM3Ozc7Nzs3O047U1VQRVJTQ1JJUFQgRElHSVQgU0VWRU47Ozs7CisyMDc4O1NVUEVSU0NSSVBUIEVJR0hUO05vOzA7RU47PHN1cGVyPiAwMDM4Ozg7ODs4O047U1VQRVJTQ1JJUFQgRElHSVQgRUlHSFQ7Ozs7CisyMDc5O1NVUEVSU0NSSVBUIE5JTkU7Tm87MDtFTjs8c3VwZXI+IDAwMzk7OTs5Ozk7TjtTVVBFUlNDUklQVCBESUdJVCBOSU5FOzs7OworMjA3QTtTVVBFUlNDUklQVCBQTFVTIFNJR047U207MDtFVDs8c3VwZXI+IDAwMkI7Ozs7Tjs7Ozs7CisyMDdCO1NVUEVSU0NSSVBUIE1JTlVTO1NtOzA7RVQ7PHN1cGVyPiAyMjEyOzs7O047U1VQRVJTQ1JJUFQgSFlQSEVOLU1JTlVTOzs7OworMjA3QztTVVBFUlNDUklQVCBFUVVBTFMgU0lHTjtTbTswO09OOzxzdXBlcj4gMDAzRDs7OztOOzs7OzsKKzIwN0Q7U1VQRVJTQ1JJUFQgTEVGVCBQQVJFTlRIRVNJUztQczswO09OOzxzdXBlcj4gMDAyODs7OztZO1NVUEVSU0NSSVBUIE9QRU5JTkcgUEFSRU5USEVTSVM7Ozs7CisyMDdFO1NVUEVSU0NSSVBUIFJJR0hUIFBBUkVOVEhFU0lTO1BlOzA7T047PHN1cGVyPiAwMDI5Ozs7O1k7U1VQRVJTQ1JJUFQgQ0xPU0lORyBQQVJFTlRIRVNJUzs7OzsKKzIwN0Y7U1VQRVJTQ1JJUFQgTEFUSU4gU01BTEwgTEVUVEVSIE47TGw7MDtMOzxzdXBlcj4gMDA2RTs7OztOOzs7OzsKKzIwODA7U1VCU0NSSVBUIFpFUk87Tm87MDtFTjs8c3ViPiAwMDMwOzA7MDswO047U1VCU0NSSVBUIERJR0lUIFpFUk87Ozs7CisyMDgxO1NVQlNDUklQVCBPTkU7Tm87MDtFTjs8c3ViPiAwMDMxOzE7MTsxO047U1VCU0NSSVBUIERJR0lUIE9ORTs7OzsKKzIwODI7U1VCU0NSSVBUIFRXTztObzswO0VOOzxzdWI+IDAwMzI7MjsyOzI7TjtTVUJTQ1JJUFQgRElHSVQgVFdPOzs7OworMjA4MztTVUJTQ1JJUFQgVEhSRUU7Tm87MDtFTjs8c3ViPiAwMDMzOzM7MzszO047U1VCU0NSSVBUIERJR0lUIFRIUkVFOzs7OworMjA4NDtTVUJTQ1JJUFQgRk9VUjtObzswO0VOOzxzdWI+IDAwMzQ7NDs0OzQ7TjtTVUJTQ1JJUFQgRElHSVQgRk9VUjs7OzsKKzIwODU7U1VCU0NSSVBUIEZJVkU7Tm87MDtFTjs8c3ViPiAwMDM1OzU7NTs1O047U1VCU0NSSVBUIERJR0lUIEZJVkU7Ozs7CisyMDg2O1NVQlNDUklQVCBTSVg7Tm87MDtFTjs8c3ViPiAwMDM2OzY7Njs2O047U1VCU0NSSVBUIERJR0lUIFNJWDs7OzsKKzIwODc7U1VCU0NSSVBUIFNFVkVOO05vOzA7RU47PHN1Yj4gMDAzNzs3Ozc7NztOO1NVQlNDUklQVCBESUdJVCBTRVZFTjs7OzsKKzIwODg7U1VCU0NSSVBUIEVJR0hUO05vOzA7RU47PHN1Yj4gMDAzODs4Ozg7ODtOO1NVQlNDUklQVCBESUdJVCBFSUdIVDs7OzsKKzIwODk7U1VCU0NSSVBUIE5JTkU7Tm87MDtFTjs8c3ViPiAwMDM5Ozk7OTs5O047U1VCU0NSSVBUIERJR0lUIE5JTkU7Ozs7CisyMDhBO1NVQlNDUklQVCBQTFVTIFNJR047U207MDtFVDs8c3ViPiAwMDJCOzs7O047Ozs7OworMjA4QjtTVUJTQ1JJUFQgTUlOVVM7U207MDtFVDs8c3ViPiAyMjEyOzs7O047U1VCU0NSSVBUIEhZUEhFTi1NSU5VUzs7OzsKKzIwOEM7U1VCU0NSSVBUIEVRVUFMUyBTSUdOO1NtOzA7T047PHN1Yj4gMDAzRDs7OztOOzs7OzsKKzIwOEQ7U1VCU0NSSVBUIExFRlQgUEFSRU5USEVTSVM7UHM7MDtPTjs8c3ViPiAwMDI4Ozs7O1k7U1VCU0NSSVBUIE9QRU5JTkcgUEFSRU5USEVTSVM7Ozs7CisyMDhFO1NVQlNDUklQVCBSSUdIVCBQQVJFTlRIRVNJUztQZTswO09OOzxzdWI+IDAwMjk7Ozs7WTtTVUJTQ1JJUFQgQ0xPU0lORyBQQVJFTlRIRVNJUzs7OzsKKzIwQTA7RVVSTy1DVVJSRU5DWSBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBMTtDT0xPTiBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBMjtDUlVaRUlSTyBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBMztGUkVOQ0ggRlJBTkMgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQTQ7TElSQSBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBNTtNSUxMIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEE2O05BSVJBIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEE3O1BFU0VUQSBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBODtSVVBFRSBTSUdOO1NjOzA7RVQ7PGNvbXBhdD4gMDA1MiAwMDczOzs7O047Ozs7OworMjBBOTtXT04gU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQUE7TkVXIFNIRVFFTCBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBQjtET05HIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEFDO0VVUk8gU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQUQ7S0lQIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEFFO1RVR1JJSyBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBRjtEUkFDSE1BIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEQwO0NPTUJJTklORyBMRUZUIEhBUlBPT04gQUJPVkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBMRUZUIEhBUlBPT04gQUJPVkU7Ozs7CisyMEQxO0NPTUJJTklORyBSSUdIVCBIQVJQT09OIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgUklHSFQgSEFSUE9PTiBBQk9WRTs7OzsKKzIwRDI7Q09NQklOSU5HIExPTkcgVkVSVElDQUwgTElORSBPVkVSTEFZO01uOzE7TlNNOzs7OztOO05PTi1TUEFDSU5HIExPTkcgVkVSVElDQUwgQkFSIE9WRVJMQVk7Ozs7CisyMEQzO0NPTUJJTklORyBTSE9SVCBWRVJUSUNBTCBMSU5FIE9WRVJMQVk7TW47MTtOU007Ozs7O047Tk9OLVNQQUNJTkcgU0hPUlQgVkVSVElDQUwgQkFSIE9WRVJMQVk7Ozs7CisyMEQ0O0NPTUJJTklORyBBTlRJQ0xPQ0tXSVNFIEFSUk9XIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgQU5USUNMT0NLV0lTRSBBUlJPVyBBQk9WRTs7OzsKKzIwRDU7Q09NQklOSU5HIENMT0NLV0lTRSBBUlJPVyBBQk9WRTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIENMT0NLV0lTRSBBUlJPVyBBQk9WRTs7OzsKKzIwRDY7Q09NQklOSU5HIExFRlQgQVJST1cgQUJPVkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBMRUZUIEFSUk9XIEFCT1ZFOzs7OworMjBENztDT01CSU5JTkcgUklHSFQgQVJST1cgQUJPVkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBSSUdIVCBBUlJPVyBBQk9WRTs7OzsKKzIwRDg7Q09NQklOSU5HIFJJTkcgT1ZFUkxBWTtNbjsxO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBSSU5HIE9WRVJMQVk7Ozs7CisyMEQ5O0NPTUJJTklORyBDTE9DS1dJU0UgUklORyBPVkVSTEFZO01uOzE7TlNNOzs7OztOO05PTi1TUEFDSU5HIENMT0NLV0lTRSBSSU5HIE9WRVJMQVk7Ozs7CisyMERBO0NPTUJJTklORyBBTlRJQ0xPQ0tXSVNFIFJJTkcgT1ZFUkxBWTtNbjsxO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBBTlRJQ0xPQ0tXSVNFIFJJTkcgT1ZFUkxBWTs7OzsKKzIwREI7Q09NQklOSU5HIFRIUkVFIERPVFMgQUJPVkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBUSFJFRSBET1RTIEFCT1ZFOzs7OworMjBEQztDT01CSU5JTkcgRk9VUiBET1RTIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgRk9VUiBET1RTIEFCT1ZFOzs7OworMjBERDtDT01CSU5JTkcgRU5DTE9TSU5HIENJUkNMRTtNZTswO05TTTs7Ozs7TjtFTkNMT1NJTkcgQ0lSQ0xFOzs7OworMjBERTtDT01CSU5JTkcgRU5DTE9TSU5HIFNRVUFSRTtNZTswO05TTTs7Ozs7TjtFTkNMT1NJTkcgU1FVQVJFOzs7OworMjBERjtDT01CSU5JTkcgRU5DTE9TSU5HIERJQU1PTkQ7TWU7MDtOU007Ozs7O047RU5DTE9TSU5HIERJQU1PTkQ7Ozs7CisyMEUwO0NPTUJJTklORyBFTkNMT1NJTkcgQ0lSQ0xFIEJBQ0tTTEFTSDtNZTswO05TTTs7Ozs7TjtFTkNMT1NJTkcgQ0lSQ0xFIFNMQVNIOzs7OworMjBFMTtDT01CSU5JTkcgTEVGVCBSSUdIVCBBUlJPVyBBQk9WRTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIExFRlQgUklHSFQgQVJST1cgQUJPVkU7Ozs7CisyMEUyO0NPTUJJTklORyBFTkNMT1NJTkcgU0NSRUVOO01lOzA7TlNNOzs7OztOOzs7OzsKKzIwRTM7Q09NQklOSU5HIEVOQ0xPU0lORyBLRVlDQVA7TWU7MDtOU007Ozs7O047Ozs7OworMjEwMDtBQ0NPVU5UIE9GO1NvOzA7T047PGNvbXBhdD4gMDA2MSAwMDJGIDAwNjM7Ozs7Tjs7Ozs7CisyMTAxO0FERFJFU1NFRCBUTyBUSEUgU1VCSkVDVDtTbzswO09OOzxjb21wYXQ+IDAwNjEgMDAyRiAwMDczOzs7O047Ozs7OworMjEwMjtET1VCTEUtU1RSVUNLIENBUElUQUwgQztMdTswO0w7PGZvbnQ+IDAwNDM7Ozs7TjtET1VCTEUtU1RSVUNLIEM7Ozs7CisyMTAzO0RFR1JFRSBDRUxTSVVTO1NvOzA7T047PGNvbXBhdD4gMDBCMCAwMDQzOzs7O047REVHUkVFUyBDRU5USUdSQURFOzs7OworMjEwNDtDRU5UUkUgTElORSBTWU1CT0w7U287MDtPTjs7Ozs7TjtDIEwgU1lNQk9MOzs7OworMjEwNTtDQVJFIE9GO1NvOzA7T047PGNvbXBhdD4gMDA2MyAwMDJGIDAwNkY7Ozs7Tjs7Ozs7CisyMTA2O0NBREEgVU5BO1NvOzA7T047PGNvbXBhdD4gMDA2MyAwMDJGIDAwNzU7Ozs7Tjs7Ozs7CisyMTA3O0VVTEVSIENPTlNUQU5UO0x1OzA7TDs8Y29tcGF0PiAwMTkwOzs7O047RVVMRVJTOzs7OworMjEwODtTQ1JVUExFO1NvOzA7T047Ozs7O047Ozs7OworMjEwOTtERUdSRUUgRkFIUkVOSEVJVDtTbzswO09OOzxjb21wYXQ+IDAwQjAgMDA0Njs7OztOO0RFR1JFRVMgRkFIUkVOSEVJVDs7OzsKKzIxMEE7U0NSSVBUIFNNQUxMIEc7TGw7MDtMOzxmb250PiAwMDY3Ozs7O047Ozs7OworMjEwQjtTQ1JJUFQgQ0FQSVRBTCBIO0x1OzA7TDs8Zm9udD4gMDA0ODs7OztOO1NDUklQVCBIOzs7OworMjEwQztCTEFDSy1MRVRURVIgQ0FQSVRBTCBIO0x1OzA7TDs8Zm9udD4gMDA0ODs7OztOO0JMQUNLLUxFVFRFUiBIOzs7OworMjEwRDtET1VCTEUtU1RSVUNLIENBUElUQUwgSDtMdTswO0w7PGZvbnQ+IDAwNDg7Ozs7TjtET1VCTEUtU1RSVUNLIEg7Ozs7CisyMTBFO1BMQU5DSyBDT05TVEFOVDtMbDswO0w7PGZvbnQ+IDAwNjg7Ozs7Tjs7Ozs7CisyMTBGO1BMQU5DSyBDT05TVEFOVCBPVkVSIFRXTyBQSTtMbDswO0w7PGZvbnQ+IDAxMjc7Ozs7TjtQTEFOQ0sgQ09OU1RBTlQgT1ZFUiAyIFBJOzs7OworMjExMDtTQ1JJUFQgQ0FQSVRBTCBJO0x1OzA7TDs8Zm9udD4gMDA0OTs7OztOO1NDUklQVCBJOzs7OworMjExMTtCTEFDSy1MRVRURVIgQ0FQSVRBTCBJO0x1OzA7TDs8Zm9udD4gMDA0OTs7OztOO0JMQUNLLUxFVFRFUiBJOzs7OworMjExMjtTQ1JJUFQgQ0FQSVRBTCBMO0x1OzA7TDs8Zm9udD4gMDA0Qzs7OztOO1NDUklQVCBMOzs7OworMjExMztTQ1JJUFQgU01BTEwgTDtMbDswO0w7PGZvbnQ+IDAwNkM7Ozs7Tjs7Ozs7CisyMTE0O0wgQiBCQVIgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjExNTtET1VCTEUtU1RSVUNLIENBUElUQUwgTjtMdTswO0w7PGZvbnQ+IDAwNEU7Ozs7TjtET1VCTEUtU1RSVUNLIE47Ozs7CisyMTE2O05VTUVSTyBTSUdOO1NvOzA7T047PGNvbXBhdD4gMDA0RSAwMDZGOzs7O047TlVNRVJPOzs7OworMjExNztTT1VORCBSRUNPUkRJTkcgQ09QWVJJR0hUO1NvOzA7T047Ozs7O047Ozs7OworMjExODtTQ1JJUFQgQ0FQSVRBTCBQO1NvOzA7T047Ozs7O047U0NSSVBUIFA7Ozs7CisyMTE5O0RPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBQO0x1OzA7TDs8Zm9udD4gMDA1MDs7OztOO0RPVUJMRS1TVFJVQ0sgUDs7OzsKKzIxMUE7RE9VQkxFLVNUUlVDSyBDQVBJVEFMIFE7THU7MDtMOzxmb250PiAwMDUxOzs7O047RE9VQkxFLVNUUlVDSyBROzs7OworMjExQjtTQ1JJUFQgQ0FQSVRBTCBSO0x1OzA7TDs8Zm9udD4gMDA1Mjs7OztOO1NDUklQVCBSOzs7OworMjExQztCTEFDSy1MRVRURVIgQ0FQSVRBTCBSO0x1OzA7TDs8Zm9udD4gMDA1Mjs7OztOO0JMQUNLLUxFVFRFUiBSOzs7OworMjExRDtET1VCTEUtU1RSVUNLIENBUElUQUwgUjtMdTswO0w7PGZvbnQ+IDAwNTI7Ozs7TjtET1VCTEUtU1RSVUNLIFI7Ozs7CisyMTFFO1BSRVNDUklQVElPTiBUQUtFO1NvOzA7T047Ozs7O047Ozs7OworMjExRjtSRVNQT05TRTtTbzswO09OOzs7OztOOzs7OzsKKzIxMjA7U0VSVklDRSBNQVJLO1NvOzA7T047PHN1cGVyPiAwMDUzIDAwNEQ7Ozs7Tjs7Ozs7CisyMTIxO1RFTEVQSE9ORSBTSUdOO1NvOzA7T047PGNvbXBhdD4gMDA1NCAwMDQ1IDAwNEM7Ozs7TjtUIEUgTCBTWU1CT0w7Ozs7CisyMTIyO1RSQURFIE1BUksgU0lHTjtTbzswO09OOzxzdXBlcj4gMDA1NCAwMDREOzs7O047VFJBREVNQVJLOzs7OworMjEyMztWRVJTSUNMRTtTbzswO09OOzs7OztOOzs7OzsKKzIxMjQ7RE9VQkxFLVNUUlVDSyBDQVBJVEFMIFo7THU7MDtMOzxmb250PiAwMDVBOzs7O047RE9VQkxFLVNUUlVDSyBaOzs7OworMjEyNTtPVU5DRSBTSUdOO1NvOzA7T047Ozs7O047T1VOQ0U7Ozs7CisyMTI2O09ITSBTSUdOO0x1OzA7TDswM0E5Ozs7O047T0hNOzs7MDNDOTsKKzIxMjc7SU5WRVJURUQgT0hNIFNJR047U287MDtPTjs7Ozs7TjtNSE87Ozs7CisyMTI4O0JMQUNLLUxFVFRFUiBDQVBJVEFMIFo7THU7MDtMOzxmb250PiAwMDVBOzs7O047QkxBQ0stTEVUVEVSIFo7Ozs7CisyMTI5O1RVUk5FRCBHUkVFSyBTTUFMTCBMRVRURVIgSU9UQTtTbzswO09OOzs7OztOOzs7OzsKKzIxMkE7S0VMVklOIFNJR047THU7MDtMOzAwNEI7Ozs7TjtERUdSRUVTIEtFTFZJTjs7OzAwNkI7CisyMTJCO0FOR1NUUk9NIFNJR047THU7MDtMOzAwQzU7Ozs7TjtBTkdTVFJPTSBVTklUOzs7MDBFNTsKKzIxMkM7U0NSSVBUIENBUElUQUwgQjtMdTswO0w7PGZvbnQ+IDAwNDI7Ozs7TjtTQ1JJUFQgQjs7OzsKKzIxMkQ7QkxBQ0stTEVUVEVSIENBUElUQUwgQztMdTswO0w7PGZvbnQ+IDAwNDM7Ozs7TjtCTEFDSy1MRVRURVIgQzs7OzsKKzIxMkU7RVNUSU1BVEVEIFNZTUJPTDtTbzswO0VUOzs7OztOOzs7OzsKKzIxMkY7U0NSSVBUIFNNQUxMIEU7TGw7MDtMOzxmb250PiAwMDY1Ozs7O047Ozs7OworMjEzMDtTQ1JJUFQgQ0FQSVRBTCBFO0x1OzA7TDs8Zm9udD4gMDA0NTs7OztOO1NDUklQVCBFOzs7OworMjEzMTtTQ1JJUFQgQ0FQSVRBTCBGO0x1OzA7TDs8Zm9udD4gMDA0Njs7OztOO1NDUklQVCBGOzs7OworMjEzMjtUVVJORUQgQ0FQSVRBTCBGO1NvOzA7T047Ozs7O047VFVSTkVEIEY7Ozs7CisyMTMzO1NDUklQVCBDQVBJVEFMIE07THU7MDtMOzxmb250PiAwMDREOzs7O047U0NSSVBUIE07Ozs7CisyMTM0O1NDUklQVCBTTUFMTCBPO0xsOzA7TDs8Zm9udD4gMDA2Rjs7OztOOzs7OzsKKzIxMzU7QUxFRiBTWU1CT0w7TG87MDtMOzxjb21wYXQ+IDA1RDA7Ozs7TjtGSVJTVCBUUkFOU0ZJTklURSBDQVJESU5BTDs7OzsKKzIxMzY7QkVUIFNZTUJPTDtMbzswO0w7PGNvbXBhdD4gMDVEMTs7OztOO1NFQ09ORCBUUkFOU0ZJTklURSBDQVJESU5BTDs7OzsKKzIxMzc7R0lNRUwgU1lNQk9MO0xvOzA7TDs8Y29tcGF0PiAwNUQyOzs7O047VEhJUkQgVFJBTlNGSU5JVEUgQ0FSRElOQUw7Ozs7CisyMTM4O0RBTEVUIFNZTUJPTDtMbzswO0w7PGNvbXBhdD4gMDVEMzs7OztOO0ZPVVJUSCBUUkFOU0ZJTklURSBDQVJESU5BTDs7OzsKKzIxMzk7SU5GT1JNQVRJT04gU09VUkNFO0xsOzA7TDs8Zm9udD4gMDA2OTs7OztOOzs7OzsKKzIxM0E7Uk9UQVRFRCBDQVBJVEFMIFE7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTUzO1ZVTEdBUiBGUkFDVElPTiBPTkUgVEhJUkQ7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzEgMjA0NCAwMDMzOzs7MS8zO047RlJBQ1RJT04gT05FIFRISVJEOzs7OworMjE1NDtWVUxHQVIgRlJBQ1RJT04gVFdPIFRISVJEUztObzswO09OOzxmcmFjdGlvbj4gMDAzMiAyMDQ0IDAwMzM7OzsyLzM7TjtGUkFDVElPTiBUV08gVEhJUkRTOzs7OworMjE1NTtWVUxHQVIgRlJBQ1RJT04gT05FIEZJRlRIO05vOzA7T047PGZyYWN0aW9uPiAwMDMxIDIwNDQgMDAzNTs7OzEvNTtOO0ZSQUNUSU9OIE9ORSBGSUZUSDs7OzsKKzIxNTY7VlVMR0FSIEZSQUNUSU9OIFRXTyBGSUZUSFM7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzIgMjA0NCAwMDM1Ozs7Mi81O047RlJBQ1RJT04gVFdPIEZJRlRIUzs7OzsKKzIxNTc7VlVMR0FSIEZSQUNUSU9OIFRIUkVFIEZJRlRIUztObzswO09OOzxmcmFjdGlvbj4gMDAzMyAyMDQ0IDAwMzU7OzszLzU7TjtGUkFDVElPTiBUSFJFRSBGSUZUSFM7Ozs7CisyMTU4O1ZVTEdBUiBGUkFDVElPTiBGT1VSIEZJRlRIUztObzswO09OOzxmcmFjdGlvbj4gMDAzNCAyMDQ0IDAwMzU7Ozs0LzU7TjtGUkFDVElPTiBGT1VSIEZJRlRIUzs7OzsKKzIxNTk7VlVMR0FSIEZSQUNUSU9OIE9ORSBTSVhUSDtObzswO09OOzxmcmFjdGlvbj4gMDAzMSAyMDQ0IDAwMzY7OzsxLzY7TjtGUkFDVElPTiBPTkUgU0lYVEg7Ozs7CisyMTVBO1ZVTEdBUiBGUkFDVElPTiBGSVZFIFNJWFRIUztObzswO09OOzxmcmFjdGlvbj4gMDAzNSAyMDQ0IDAwMzY7Ozs1LzY7TjtGUkFDVElPTiBGSVZFIFNJWFRIUzs7OzsKKzIxNUI7VlVMR0FSIEZSQUNUSU9OIE9ORSBFSUdIVEg7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzEgMjA0NCAwMDM4Ozs7MS84O047RlJBQ1RJT04gT05FIEVJR0hUSDs7OzsKKzIxNUM7VlVMR0FSIEZSQUNUSU9OIFRIUkVFIEVJR0hUSFM7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzMgMjA0NCAwMDM4Ozs7My84O047RlJBQ1RJT04gVEhSRUUgRUlHSFRIUzs7OzsKKzIxNUQ7VlVMR0FSIEZSQUNUSU9OIEZJVkUgRUlHSFRIUztObzswO09OOzxmcmFjdGlvbj4gMDAzNSAyMDQ0IDAwMzg7Ozs1Lzg7TjtGUkFDVElPTiBGSVZFIEVJR0hUSFM7Ozs7CisyMTVFO1ZVTEdBUiBGUkFDVElPTiBTRVZFTiBFSUdIVEhTO05vOzA7T047PGZyYWN0aW9uPiAwMDM3IDIwNDQgMDAzODs7OzcvODtOO0ZSQUNUSU9OIFNFVkVOIEVJR0hUSFM7Ozs7CisyMTVGO0ZSQUNUSU9OIE5VTUVSQVRPUiBPTkU7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzEgMjA0NDs7OzE7Tjs7Ozs7CisyMTYwO1JPTUFOIE5VTUVSQUwgT05FO05sOzA7TDs8Y29tcGF0PiAwMDQ5Ozs7MTtOOzs7OzIxNzA7CisyMTYxO1JPTUFOIE5VTUVSQUwgVFdPO05sOzA7TDs8Y29tcGF0PiAwMDQ5IDAwNDk7OzsyO047Ozs7MjE3MTsKKzIxNjI7Uk9NQU4gTlVNRVJBTCBUSFJFRTtObDswO0w7PGNvbXBhdD4gMDA0OSAwMDQ5IDAwNDk7OzszO047Ozs7MjE3MjsKKzIxNjM7Uk9NQU4gTlVNRVJBTCBGT1VSO05sOzA7TDs8Y29tcGF0PiAwMDQ5IDAwNTY7Ozs0O047Ozs7MjE3MzsKKzIxNjQ7Uk9NQU4gTlVNRVJBTCBGSVZFO05sOzA7TDs8Y29tcGF0PiAwMDU2Ozs7NTtOOzs7OzIxNzQ7CisyMTY1O1JPTUFOIE5VTUVSQUwgU0lYO05sOzA7TDs8Y29tcGF0PiAwMDU2IDAwNDk7Ozs2O047Ozs7MjE3NTsKKzIxNjY7Uk9NQU4gTlVNRVJBTCBTRVZFTjtObDswO0w7PGNvbXBhdD4gMDA1NiAwMDQ5IDAwNDk7Ozs3O047Ozs7MjE3NjsKKzIxNjc7Uk9NQU4gTlVNRVJBTCBFSUdIVDtObDswO0w7PGNvbXBhdD4gMDA1NiAwMDQ5IDAwNDkgMDA0OTs7Ozg7Tjs7OzsyMTc3OworMjE2ODtST01BTiBOVU1FUkFMIE5JTkU7Tmw7MDtMOzxjb21wYXQ+IDAwNDkgMDA1ODs7Ozk7Tjs7OzsyMTc4OworMjE2OTtST01BTiBOVU1FUkFMIFRFTjtObDswO0w7PGNvbXBhdD4gMDA1ODs7OzEwO047Ozs7MjE3OTsKKzIxNkE7Uk9NQU4gTlVNRVJBTCBFTEVWRU47Tmw7MDtMOzxjb21wYXQ+IDAwNTggMDA0OTs7OzExO047Ozs7MjE3QTsKKzIxNkI7Uk9NQU4gTlVNRVJBTCBUV0VMVkU7Tmw7MDtMOzxjb21wYXQ+IDAwNTggMDA0OSAwMDQ5Ozs7MTI7Tjs7OzsyMTdCOworMjE2QztST01BTiBOVU1FUkFMIEZJRlRZO05sOzA7TDs8Y29tcGF0PiAwMDRDOzs7NTA7Tjs7OzsyMTdDOworMjE2RDtST01BTiBOVU1FUkFMIE9ORSBIVU5EUkVEO05sOzA7TDs8Y29tcGF0PiAwMDQzOzs7MTAwO047Ozs7MjE3RDsKKzIxNkU7Uk9NQU4gTlVNRVJBTCBGSVZFIEhVTkRSRUQ7Tmw7MDtMOzxjb21wYXQ+IDAwNDQ7Ozs1MDA7Tjs7OzsyMTdFOworMjE2RjtST01BTiBOVU1FUkFMIE9ORSBUSE9VU0FORDtObDswO0w7PGNvbXBhdD4gMDA0RDs7OzEwMDA7Tjs7OzsyMTdGOworMjE3MDtTTUFMTCBST01BTiBOVU1FUkFMIE9ORTtObDswO0w7PGNvbXBhdD4gMDA2OTs7OzE7Tjs7OzIxNjA7OzIxNjAKKzIxNzE7U01BTEwgUk9NQU4gTlVNRVJBTCBUV087Tmw7MDtMOzxjb21wYXQ+IDAwNjkgMDA2OTs7OzI7Tjs7OzIxNjE7OzIxNjEKKzIxNzI7U01BTEwgUk9NQU4gTlVNRVJBTCBUSFJFRTtObDswO0w7PGNvbXBhdD4gMDA2OSAwMDY5IDAwNjk7OzszO047OzsyMTYyOzsyMTYyCisyMTczO1NNQUxMIFJPTUFOIE5VTUVSQUwgRk9VUjtObDswO0w7PGNvbXBhdD4gMDA2OSAwMDc2Ozs7NDtOOzs7MjE2Mzs7MjE2MworMjE3NDtTTUFMTCBST01BTiBOVU1FUkFMIEZJVkU7Tmw7MDtMOzxjb21wYXQ+IDAwNzY7Ozs1O047OzsyMTY0OzsyMTY0CisyMTc1O1NNQUxMIFJPTUFOIE5VTUVSQUwgU0lYO05sOzA7TDs8Y29tcGF0PiAwMDc2IDAwNjk7Ozs2O047OzsyMTY1OzsyMTY1CisyMTc2O1NNQUxMIFJPTUFOIE5VTUVSQUwgU0VWRU47Tmw7MDtMOzxjb21wYXQ+IDAwNzYgMDA2OSAwMDY5Ozs7NztOOzs7MjE2Njs7MjE2NgorMjE3NztTTUFMTCBST01BTiBOVU1FUkFMIEVJR0hUO05sOzA7TDs8Y29tcGF0PiAwMDc2IDAwNjkgMDA2OSAwMDY5Ozs7ODtOOzs7MjE2Nzs7MjE2NworMjE3ODtTTUFMTCBST01BTiBOVU1FUkFMIE5JTkU7Tmw7MDtMOzxjb21wYXQ+IDAwNjkgMDA3ODs7Ozk7Tjs7OzIxNjg7OzIxNjgKKzIxNzk7U01BTEwgUk9NQU4gTlVNRVJBTCBURU47Tmw7MDtMOzxjb21wYXQ+IDAwNzg7OzsxMDtOOzs7MjE2OTs7MjE2OQorMjE3QTtTTUFMTCBST01BTiBOVU1FUkFMIEVMRVZFTjtObDswO0w7PGNvbXBhdD4gMDA3OCAwMDY5Ozs7MTE7Tjs7OzIxNkE7OzIxNkEKKzIxN0I7U01BTEwgUk9NQU4gTlVNRVJBTCBUV0VMVkU7Tmw7MDtMOzxjb21wYXQ+IDAwNzggMDA2OSAwMDY5Ozs7MTI7Tjs7OzIxNkI7OzIxNkIKKzIxN0M7U01BTEwgUk9NQU4gTlVNRVJBTCBGSUZUWTtObDswO0w7PGNvbXBhdD4gMDA2Qzs7OzUwO047OzsyMTZDOzsyMTZDCisyMTdEO1NNQUxMIFJPTUFOIE5VTUVSQUwgT05FIEhVTkRSRUQ7Tmw7MDtMOzxjb21wYXQ+IDAwNjM7OzsxMDA7Tjs7OzIxNkQ7OzIxNkQKKzIxN0U7U01BTEwgUk9NQU4gTlVNRVJBTCBGSVZFIEhVTkRSRUQ7Tmw7MDtMOzxjb21wYXQ+IDAwNjQ7Ozs1MDA7Tjs7OzIxNkU7OzIxNkUKKzIxN0Y7U01BTEwgUk9NQU4gTlVNRVJBTCBPTkUgVEhPVVNBTkQ7Tmw7MDtMOzxjb21wYXQ+IDAwNkQ7OzsxMDAwO047OzsyMTZGOzsyMTZGCisyMTgwO1JPTUFOIE5VTUVSQUwgT05FIFRIT1VTQU5EIEMgRDtObDswO0w7Ozs7MTAwMDtOOzs7OzsKKzIxODE7Uk9NQU4gTlVNRVJBTCBGSVZFIFRIT1VTQU5EO05sOzA7TDs7Ozs1MDAwO047Ozs7OworMjE4MjtST01BTiBOVU1FUkFMIFRFTiBUSE9VU0FORDtObDswO0w7Ozs7MTAwMDA7Tjs7Ozs7CisyMTgzO1JPTUFOIE5VTUVSQUwgUkVWRVJTRUQgT05FIEhVTkRSRUQ7Tmw7MDtMOzs7OztOOzs7OzsKKzIxOTA7TEVGVFdBUkRTIEFSUk9XO1NtOzA7T047Ozs7O047TEVGVCBBUlJPVzs7OzsKKzIxOTE7VVBXQVJEUyBBUlJPVztTbTswO09OOzs7OztOO1VQIEFSUk9XOzs7OworMjE5MjtSSUdIVFdBUkRTIEFSUk9XO1NtOzA7T047Ozs7O047UklHSFQgQVJST1c7Ozs7CisyMTkzO0RPV05XQVJEUyBBUlJPVztTbTswO09OOzs7OztOO0RPV04gQVJST1c7Ozs7CisyMTk0O0xFRlQgUklHSFQgQVJST1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMTk1O1VQIERPV04gQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTk2O05PUlRIIFdFU1QgQVJST1c7U287MDtPTjs7Ozs7TjtVUFBFUiBMRUZUIEFSUk9XOzs7OworMjE5NztOT1JUSCBFQVNUIEFSUk9XO1NvOzA7T047Ozs7O047VVBQRVIgUklHSFQgQVJST1c7Ozs7CisyMTk4O1NPVVRIIEVBU1QgQVJST1c7U287MDtPTjs7Ozs7TjtMT1dFUiBSSUdIVCBBUlJPVzs7OzsKKzIxOTk7U09VVEggV0VTVCBBUlJPVztTbzswO09OOzs7OztOO0xPV0VSIExFRlQgQVJST1c7Ozs7CisyMTlBO0xFRlRXQVJEUyBBUlJPVyBXSVRIIFNUUk9LRTtTbTswO09OOzIxOTAgMDMzODs7OztOO0xFRlQgQVJST1cgV0lUSCBTVFJPS0U7Ozs7CisyMTlCO1JJR0hUV0FSRFMgQVJST1cgV0lUSCBTVFJPS0U7U207MDtPTjsyMTkyIDAzMzg7Ozs7TjtSSUdIVCBBUlJPVyBXSVRIIFNUUk9LRTs7OzsKKzIxOUM7TEVGVFdBUkRTIFdBVkUgQVJST1c7U287MDtPTjs7Ozs7TjtMRUZUIFdBVkUgQVJST1c7Ozs7CisyMTlEO1JJR0hUV0FSRFMgV0FWRSBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIFdBVkUgQVJST1c7Ozs7CisyMTlFO0xFRlRXQVJEUyBUV08gSEVBREVEIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBUV08gSEVBREVEIEFSUk9XOzs7OworMjE5RjtVUFdBUkRTIFRXTyBIRUFERUQgQVJST1c7U287MDtPTjs7Ozs7TjtVUCBUV08gSEVBREVEIEFSUk9XOzs7OworMjFBMDtSSUdIVFdBUkRTIFRXTyBIRUFERUQgQVJST1c7U207MDtPTjs7Ozs7TjtSSUdIVCBUV08gSEVBREVEIEFSUk9XOzs7OworMjFBMTtET1dOV0FSRFMgVFdPIEhFQURFRCBBUlJPVztTbzswO09OOzs7OztOO0RPV04gVFdPIEhFQURFRCBBUlJPVzs7OzsKKzIxQTI7TEVGVFdBUkRTIEFSUk9XIFdJVEggVEFJTDtTbzswO09OOzs7OztOO0xFRlQgQVJST1cgV0lUSCBUQUlMOzs7OworMjFBMztSSUdIVFdBUkRTIEFSUk9XIFdJVEggVEFJTDtTbTswO09OOzs7OztOO1JJR0hUIEFSUk9XIFdJVEggVEFJTDs7OzsKKzIxQTQ7TEVGVFdBUkRTIEFSUk9XIEZST00gQkFSO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBGUk9NIEJBUjs7OzsKKzIxQTU7VVBXQVJEUyBBUlJPVyBGUk9NIEJBUjtTbzswO09OOzs7OztOO1VQIEFSUk9XIEZST00gQkFSOzs7OworMjFBNjtSSUdIVFdBUkRTIEFSUk9XIEZST00gQkFSO1NtOzA7T047Ozs7O047UklHSFQgQVJST1cgRlJPTSBCQVI7Ozs7CisyMUE3O0RPV05XQVJEUyBBUlJPVyBGUk9NIEJBUjtTbzswO09OOzs7OztOO0RPV04gQVJST1cgRlJPTSBCQVI7Ozs7CisyMUE4O1VQIERPV04gQVJST1cgV0lUSCBCQVNFO1NvOzA7T047Ozs7O047Ozs7OworMjFBOTtMRUZUV0FSRFMgQVJST1cgV0lUSCBIT09LO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBXSVRIIEhPT0s7Ozs7CisyMUFBO1JJR0hUV0FSRFMgQVJST1cgV0lUSCBIT09LO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgV0lUSCBIT09LOzs7OworMjFBQjtMRUZUV0FSRFMgQVJST1cgV0lUSCBMT09QO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBXSVRIIExPT1A7Ozs7CisyMUFDO1JJR0hUV0FSRFMgQVJST1cgV0lUSCBMT09QO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgV0lUSCBMT09QOzs7OworMjFBRDtMRUZUIFJJR0hUIFdBVkUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUFFO0xFRlQgUklHSFQgQVJST1cgV0lUSCBTVFJPS0U7U207MDtPTjsyMTk0IDAzMzg7Ozs7Tjs7Ozs7CisyMUFGO0RPV05XQVJEUyBaSUdaQUcgQVJST1c7U287MDtPTjs7Ozs7TjtET1dOIFpJR1pBRyBBUlJPVzs7OzsKKzIxQjA7VVBXQVJEUyBBUlJPVyBXSVRIIFRJUCBMRUZUV0FSRFM7U287MDtPTjs7Ozs7TjtVUCBBUlJPVyBXSVRIIFRJUCBMRUZUOzs7OworMjFCMTtVUFdBUkRTIEFSUk9XIFdJVEggVElQIFJJR0hUV0FSRFM7U287MDtPTjs7Ozs7TjtVUCBBUlJPVyBXSVRIIFRJUCBSSUdIVDs7OzsKKzIxQjI7RE9XTldBUkRTIEFSUk9XIFdJVEggVElQIExFRlRXQVJEUztTbzswO09OOzs7OztOO0RPV04gQVJST1cgV0lUSCBUSVAgTEVGVDs7OzsKKzIxQjM7RE9XTldBUkRTIEFSUk9XIFdJVEggVElQIFJJR0hUV0FSRFM7U287MDtPTjs7Ozs7TjtET1dOIEFSUk9XIFdJVEggVElQIFJJR0hUOzs7OworMjFCNDtSSUdIVFdBUkRTIEFSUk9XIFdJVEggQ09STkVSIERPV05XQVJEUztTbzswO09OOzs7OztOO1JJR0hUIEFSUk9XIFdJVEggQ09STkVSIERPV047Ozs7CisyMUI1O0RPV05XQVJEUyBBUlJPVyBXSVRIIENPUk5FUiBMRUZUV0FSRFM7U287MDtPTjs7Ozs7TjtET1dOIEFSUk9XIFdJVEggQ09STkVSIExFRlQ7Ozs7CisyMUI2O0FOVElDTE9DS1dJU0UgVE9QIFNFTUlDSVJDTEUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUI3O0NMT0NLV0lTRSBUT1AgU0VNSUNJUkNMRSBBUlJPVztTbzswO09OOzs7OztOOzs7OzsKKzIxQjg7Tk9SVEggV0VTVCBBUlJPVyBUTyBMT05HIEJBUjtTbzswO09OOzs7OztOO1VQUEVSIExFRlQgQVJST1cgVE8gTE9ORyBCQVI7Ozs7CisyMUI5O0xFRlRXQVJEUyBBUlJPVyBUTyBCQVIgT1ZFUiBSSUdIVFdBUkRTIEFSUk9XIFRPIEJBUjtTbzswO09OOzs7OztOO0xFRlQgQVJST1cgVE8gQkFSIE9WRVIgUklHSFQgQVJST1cgVE8gQkFSOzs7OworMjFCQTtBTlRJQ0xPQ0tXSVNFIE9QRU4gQ0lSQ0xFIEFSUk9XO1NvOzA7T047Ozs7O047Ozs7OworMjFCQjtDTE9DS1dJU0UgT1BFTiBDSVJDTEUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUJDO0xFRlRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBVUFdBUkRTO1NvOzA7T047Ozs7O047TEVGVCBIQVJQT09OIFdJVEggQkFSQiBVUDs7OzsKKzIxQkQ7TEVGVFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIERPV05XQVJEUztTbzswO09OOzs7OztOO0xFRlQgSEFSUE9PTiBXSVRIIEJBUkIgRE9XTjs7OzsKKzIxQkU7VVBXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBSSUdIVFdBUkRTO1NvOzA7T047Ozs7O047VVAgSEFSUE9PTiBXSVRIIEJBUkIgUklHSFQ7Ozs7CisyMUJGO1VQV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgTEVGVFdBUkRTO1NvOzA7T047Ozs7O047VVAgSEFSUE9PTiBXSVRIIEJBUkIgTEVGVDs7OzsKKzIxQzA7UklHSFRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBVUFdBUkRTO1NvOzA7T047Ozs7O047UklHSFQgSEFSUE9PTiBXSVRIIEJBUkIgVVA7Ozs7CisyMUMxO1JJR0hUV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgRE9XTldBUkRTO1NvOzA7T047Ozs7O047UklHSFQgSEFSUE9PTiBXSVRIIEJBUkIgRE9XTjs7OzsKKzIxQzI7RE9XTldBUkRTIEhBUlBPT04gV0lUSCBCQVJCIFJJR0hUV0FSRFM7U287MDtPTjs7Ozs7TjtET1dOIEhBUlBPT04gV0lUSCBCQVJCIFJJR0hUOzs7OworMjFDMztET1dOV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgTEVGVFdBUkRTO1NvOzA7T047Ozs7O047RE9XTiBIQVJQT09OIFdJVEggQkFSQiBMRUZUOzs7OworMjFDNDtSSUdIVFdBUkRTIEFSUk9XIE9WRVIgTEVGVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgT1ZFUiBMRUZUIEFSUk9XOzs7OworMjFDNTtVUFdBUkRTIEFSUk9XIExFRlRXQVJEUyBPRiBET1dOV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtVUCBBUlJPVyBMRUZUIE9GIERPV04gQVJST1c7Ozs7CisyMUM2O0xFRlRXQVJEUyBBUlJPVyBPVkVSIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtMRUZUIEFSUk9XIE9WRVIgUklHSFQgQVJST1c7Ozs7CisyMUM3O0xFRlRXQVJEUyBQQUlSRUQgQVJST1dTO1NvOzA7T047Ozs7O047TEVGVCBQQUlSRUQgQVJST1dTOzs7OworMjFDODtVUFdBUkRTIFBBSVJFRCBBUlJPV1M7U287MDtPTjs7Ozs7TjtVUCBQQUlSRUQgQVJST1dTOzs7OworMjFDOTtSSUdIVFdBUkRTIFBBSVJFRCBBUlJPV1M7U287MDtPTjs7Ozs7TjtSSUdIVCBQQUlSRUQgQVJST1dTOzs7OworMjFDQTtET1dOV0FSRFMgUEFJUkVEIEFSUk9XUztTbzswO09OOzs7OztOO0RPV04gUEFJUkVEIEFSUk9XUzs7OzsKKzIxQ0I7TEVGVFdBUkRTIEhBUlBPT04gT1ZFUiBSSUdIVFdBUkRTIEhBUlBPT047U287MDtPTjs7Ozs7TjtMRUZUIEhBUlBPT04gT1ZFUiBSSUdIVCBIQVJQT09OOzs7OworMjFDQztSSUdIVFdBUkRTIEhBUlBPT04gT1ZFUiBMRUZUV0FSRFMgSEFSUE9PTjtTbzswO09OOzs7OztOO1JJR0hUIEhBUlBPT04gT1ZFUiBMRUZUIEhBUlBPT047Ozs7CisyMUNEO0xFRlRXQVJEUyBET1VCTEUgQVJST1cgV0lUSCBTVFJPS0U7U287MDtPTjsyMUQwIDAzMzg7Ozs7TjtMRUZUIERPVUJMRSBBUlJPVyBXSVRIIFNUUk9LRTs7OzsKKzIxQ0U7TEVGVCBSSUdIVCBET1VCTEUgQVJST1cgV0lUSCBTVFJPS0U7U207MDtPTjsyMUQ0IDAzMzg7Ozs7Tjs7Ozs7CisyMUNGO1JJR0hUV0FSRFMgRE9VQkxFIEFSUk9XIFdJVEggU1RST0tFO1NtOzA7T047MjFEMiAwMzM4Ozs7O047UklHSFQgRE9VQkxFIEFSUk9XIFdJVEggU1RST0tFOzs7OworMjFEMDtMRUZUV0FSRFMgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBET1VCTEUgQVJST1c7Ozs7CisyMUQxO1VQV0FSRFMgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047VVAgRE9VQkxFIEFSUk9XOzs7OworMjFEMjtSSUdIVFdBUkRTIERPVUJMRSBBUlJPVztTbTswO09OOzs7OztOO1JJR0hUIERPVUJMRSBBUlJPVzs7OzsKKzIxRDM7RE9XTldBUkRTIERPVUJMRSBBUlJPVztTbzswO09OOzs7OztOO0RPV04gRE9VQkxFIEFSUk9XOzs7OworMjFENDtMRUZUIFJJR0hUIERPVUJMRSBBUlJPVztTbTswO09OOzs7OztOOzs7OzsKKzIxRDU7VVAgRE9XTiBET1VCTEUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUQ2O05PUlRIIFdFU1QgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047VVBQRVIgTEVGVCBET1VCTEUgQVJST1c7Ozs7CisyMUQ3O05PUlRIIEVBU1QgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047VVBQRVIgUklHSFQgRE9VQkxFIEFSUk9XOzs7OworMjFEODtTT1VUSCBFQVNUIERPVUJMRSBBUlJPVztTbzswO09OOzs7OztOO0xPV0VSIFJJR0hUIERPVUJMRSBBUlJPVzs7OzsKKzIxRDk7U09VVEggV0VTVCBET1VCTEUgQVJST1c7U287MDtPTjs7Ozs7TjtMT1dFUiBMRUZUIERPVUJMRSBBUlJPVzs7OzsKKzIxREE7TEVGVFdBUkRTIFRSSVBMRSBBUlJPVztTbzswO09OOzs7OztOO0xFRlQgVFJJUExFIEFSUk9XOzs7OworMjFEQjtSSUdIVFdBUkRTIFRSSVBMRSBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIFRSSVBMRSBBUlJPVzs7OzsKKzIxREM7TEVGVFdBUkRTIFNRVUlHR0xFIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBTUVVJR0dMRSBBUlJPVzs7OzsKKzIxREQ7UklHSFRXQVJEUyBTUVVJR0dMRSBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIFNRVUlHR0xFIEFSUk9XOzs7OworMjFERTtVUFdBUkRTIEFSUk9XIFdJVEggRE9VQkxFIFNUUk9LRTtTbzswO09OOzs7OztOO1VQIEFSUk9XIFdJVEggRE9VQkxFIFNUUk9LRTs7OzsKKzIxREY7RE9XTldBUkRTIEFSUk9XIFdJVEggRE9VQkxFIFNUUk9LRTtTbzswO09OOzs7OztOO0RPV04gQVJST1cgV0lUSCBET1VCTEUgU1RST0tFOzs7OworMjFFMDtMRUZUV0FSRFMgREFTSEVEIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBEQVNIRUQgQVJST1c7Ozs7CisyMUUxO1VQV0FSRFMgREFTSEVEIEFSUk9XO1NvOzA7T047Ozs7O047VVAgREFTSEVEIEFSUk9XOzs7OworMjFFMjtSSUdIVFdBUkRTIERBU0hFRCBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIERBU0hFRCBBUlJPVzs7OzsKKzIxRTM7RE9XTldBUkRTIERBU0hFRCBBUlJPVztTbzswO09OOzs7OztOO0RPV04gREFTSEVEIEFSUk9XOzs7OworMjFFNDtMRUZUV0FSRFMgQVJST1cgVE8gQkFSO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBUTyBCQVI7Ozs7CisyMUU1O1JJR0hUV0FSRFMgQVJST1cgVE8gQkFSO1NvOzA7T047Ozs7O047UklHSFQgQVJST1cgVE8gQkFSOzs7OworMjFFNjtMRUZUV0FSRFMgV0hJVEUgQVJST1c7U287MDtPTjs7Ozs7TjtXSElURSBMRUZUIEFSUk9XOzs7OworMjFFNztVUFdBUkRTIFdISVRFIEFSUk9XO1NvOzA7T047Ozs7O047V0hJVEUgVVAgQVJST1c7Ozs7CisyMUU4O1JJR0hUV0FSRFMgV0hJVEUgQVJST1c7U287MDtPTjs7Ozs7TjtXSElURSBSSUdIVCBBUlJPVzs7OzsKKzIxRTk7RE9XTldBUkRTIFdISVRFIEFSUk9XO1NvOzA7T047Ozs7O047V0hJVEUgRE9XTiBBUlJPVzs7OzsKKzIxRUE7VVBXQVJEUyBXSElURSBBUlJPVyBGUk9NIEJBUjtTbzswO09OOzs7OztOO1dISVRFIFVQIEFSUk9XIEZST00gQkFSOzs7OworMjFFQjtVUFdBUkRTIFdISVRFIEFSUk9XIE9OIFBFREVTVEFMO1NvOzA7T047Ozs7O047Ozs7OworMjFFQztVUFdBUkRTIFdISVRFIEFSUk9XIE9OIFBFREVTVEFMIFdJVEggSE9SSVpPTlRBTCBCQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUVEO1VQV0FSRFMgV0hJVEUgQVJST1cgT04gUEVERVNUQUwgV0lUSCBWRVJUSUNBTCBCQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUVFO1VQV0FSRFMgV0hJVEUgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047Ozs7OworMjFFRjtVUFdBUkRTIFdISVRFIERPVUJMRSBBUlJPVyBPTiBQRURFU1RBTDtTbzswO09OOzs7OztOOzs7OzsKKzIxRjA7UklHSFRXQVJEUyBXSElURSBBUlJPVyBGUk9NIFdBTEw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUYxO05PUlRIIFdFU1QgQVJST1cgVE8gQ09STkVSO1NvOzA7T047Ozs7O047Ozs7OworMjFGMjtTT1VUSCBFQVNUIEFSUk9XIFRPIENPUk5FUjtTbzswO09OOzs7OztOOzs7OzsKKzIxRjM7VVAgRE9XTiBXSElURSBBUlJPVztTbzswO09OOzs7OztOOzs7OzsKKzIyMDA7Rk9SIEFMTDtTbTswO09OOzs7OztOOzs7OzsKKzIyMDE7Q09NUExFTUVOVDtTbTswO09OOzs7OztZOzs7OzsKKzIyMDI7UEFSVElBTCBESUZGRVJFTlRJQUw7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjAzO1RIRVJFIEVYSVNUUztTbTswO09OOzs7OztZOzs7OzsKKzIyMDQ7VEhFUkUgRE9FUyBOT1QgRVhJU1Q7U207MDtPTjsyMjAzIDAzMzg7Ozs7WTs7Ozs7CisyMjA1O0VNUFRZIFNFVDtTbTswO09OOzs7OztOOzs7OzsKKzIyMDY7SU5DUkVNRU5UO1NtOzA7T047Ozs7O047Ozs7OworMjIwNztOQUJMQTtTbTswO09OOzs7OztOOzs7OzsKKzIyMDg7RUxFTUVOVCBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyMDk7Tk9UIEFOIEVMRU1FTlQgT0Y7U207MDtPTjsyMjA4IDAzMzg7Ozs7WTs7Ozs7CisyMjBBO1NNQUxMIEVMRU1FTlQgT0Y7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjBCO0NPTlRBSU5TIEFTIE1FTUJFUjtTbTswO09OOzs7OztZOzs7OzsKKzIyMEM7RE9FUyBOT1QgQ09OVEFJTiBBUyBNRU1CRVI7U207MDtPTjsyMjBCIDAzMzg7Ozs7WTs7Ozs7CisyMjBEO1NNQUxMIENPTlRBSU5TIEFTIE1FTUJFUjtTbTswO09OOzs7OztZOzs7OzsKKzIyMEU7RU5EIE9GIFBST09GO1NtOzA7T047Ozs7O047Ozs7OworMjIwRjtOLUFSWSBQUk9EVUNUO1NtOzA7T047Ozs7O047Ozs7OworMjIxMDtOLUFSWSBDT1BST0RVQ1Q7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjExO04tQVJZIFNVTU1BVElPTjtTbTswO09OOzs7OztZOzs7OzsKKzIyMTI7TUlOVVMgU0lHTjtTbTswO0VUOzs7OztOOzs7OzsKKzIyMTM7TUlOVVMtT1ItUExVUyBTSUdOO1NtOzA7RVQ7Ozs7O047Ozs7OworMjIxNDtET1QgUExVUztTbTswO09OOzs7OztOOzs7OzsKKzIyMTU7RElWSVNJT04gU0xBU0g7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjE2O1NFVCBNSU5VUztTbTswO09OOzs7OztZOzs7OzsKKzIyMTc7QVNURVJJU0sgT1BFUkFUT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjE4O1JJTkcgT1BFUkFUT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjE5O0JVTExFVCBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyMUE7U1FVQVJFIFJPT1Q7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjFCO0NVQkUgUk9PVDtTbTswO09OOzs7OztZOzs7OzsKKzIyMUM7Rk9VUlRIIFJPT1Q7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjFEO1BST1BPUlRJT05BTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyMUU7SU5GSU5JVFk7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjFGO1JJR0hUIEFOR0xFO1NtOzA7T047Ozs7O1k7Ozs7OworMjIyMDtBTkdMRTtTbTswO09OOzs7OztZOzs7OzsKKzIyMjE7TUVBU1VSRUQgQU5HTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjIyO1NQSEVSSUNBTCBBTkdMRTtTbTswO09OOzs7OztZOzs7OzsKKzIyMjM7RElWSURFUztTbTswO09OOzs7OztOOzs7OzsKKzIyMjQ7RE9FUyBOT1QgRElWSURFO1NtOzA7T047MjIyMyAwMzM4Ozs7O1k7Ozs7OworMjIyNTtQQVJBTExFTCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyMjY7Tk9UIFBBUkFMTEVMIFRPO1NtOzA7T047MjIyNSAwMzM4Ozs7O1k7Ozs7OworMjIyNztMT0dJQ0FMIEFORDtTbTswO09OOzs7OztOOzs7OzsKKzIyMjg7TE9HSUNBTCBPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyMjk7SU5URVJTRUNUSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjIyQTtVTklPTjtTbTswO09OOzs7OztOOzs7OzsKKzIyMkI7SU5URUdSQUw7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjJDO0RPVUJMRSBJTlRFR1JBTDtTbTswO09OOzxjb21wYXQ+IDIyMkIgMjIyQjs7OztZOzs7OzsKKzIyMkQ7VFJJUExFIElOVEVHUkFMO1NtOzA7T047PGNvbXBhdD4gMjIyQiAyMjJCIDIyMkI7Ozs7WTs7Ozs7CisyMjJFO0NPTlRPVVIgSU5URUdSQUw7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjJGO1NVUkZBQ0UgSU5URUdSQUw7U207MDtPTjs8Y29tcGF0PiAyMjJFIDIyMkU7Ozs7WTs7Ozs7CisyMjMwO1ZPTFVNRSBJTlRFR1JBTDtTbTswO09OOzxjb21wYXQ+IDIyMkUgMjIyRSAyMjJFOzs7O1k7Ozs7OworMjIzMTtDTE9DS1dJU0UgSU5URUdSQUw7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjMyO0NMT0NLV0lTRSBDT05UT1VSIElOVEVHUkFMO1NtOzA7T047Ozs7O1k7Ozs7OworMjIzMztBTlRJQ0xPQ0tXSVNFIENPTlRPVVIgSU5URUdSQUw7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjM0O1RIRVJFRk9SRTtTbTswO09OOzs7OztOOzs7OzsKKzIyMzU7QkVDQVVTRTtTbTswO09OOzs7OztOOzs7OzsKKzIyMzY7UkFUSU87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjM3O1BST1BPUlRJT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjM4O0RPVCBNSU5VUztTbTswO09OOzs7OztOOzs7OzsKKzIyMzk7RVhDRVNTO1NtOzA7T047Ozs7O1k7Ozs7OworMjIzQTtHRU9NRVRSSUMgUFJPUE9SVElPTjtTbTswO09OOzs7OztOOzs7OzsKKzIyM0I7SE9NT1RIRVRJQztTbTswO09OOzs7OztZOzs7OzsKKzIyM0M7VElMREUgT1BFUkFUT1I7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjNEO1JFVkVSU0VEIFRJTERFO1NtOzA7T047Ozs7O1k7O2xhenkgUzs7OworMjIzRTtJTlZFUlRFRCBMQVpZIFM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjNGO1NJTkUgV0FWRTtTbTswO09OOzs7OztZOzs7OzsKKzIyNDA7V1JFQVRIIFBST0RVQ1Q7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjQxO05PVCBUSUxERTtTbTswO09OOzIyM0MgMDMzODs7OztZOzs7OzsKKzIyNDI7TUlOVVMgVElMREU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjQzO0FTWU1QVE9USUNBTExZIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI0NDtOT1QgQVNZTVBUT1RJQ0FMTFkgRVFVQUwgVE87U207MDtPTjsyMjQzIDAzMzg7Ozs7WTs7Ozs7CisyMjQ1O0FQUFJPWElNQVRFTFkgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjQ2O0FQUFJPWElNQVRFTFkgQlVUIE5PVCBBQ1RVQUxMWSBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyNDc7TkVJVEhFUiBBUFBST1hJTUFURUxZIE5PUiBBQ1RVQUxMWSBFUVVBTCBUTztTbTswO09OOzIyNDUgMDMzODs7OztZOzs7OzsKKzIyNDg7QUxNT1NUIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI0OTtOT1QgQUxNT1NUIEVRVUFMIFRPO1NtOzA7T047MjI0OCAwMzM4Ozs7O1k7Ozs7OworMjI0QTtBTE1PU1QgRVFVQUwgT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjRCO1RSSVBMRSBUSUxERTtTbTswO09OOzs7OztZOzs7OzsKKzIyNEM7QUxMIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI0RDtFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjI0RTtHRU9NRVRSSUNBTExZIEVRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjRGO0RJRkZFUkVOQ0UgQkVUV0VFTjtTbTswO09OOzs7OztOOzs7OzsKKzIyNTA7QVBQUk9BQ0hFUyBUSEUgTElNSVQ7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjUxO0dFT01FVFJJQ0FMTFkgRVFVQUwgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjUyO0FQUFJPWElNQVRFTFkgRVFVQUwgVE8gT1IgVEhFIElNQUdFIE9GO1NtOzA7T047Ozs7O1k7Ozs7OworMjI1MztJTUFHRSBPRiBPUiBBUFBST1hJTUFURUxZIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI1NDtDT0xPTiBFUVVBTFM7U207MDtPTjs7Ozs7WTtDT0xPTiBFUVVBTDs7OzsKKzIyNTU7RVFVQUxTIENPTE9OO1NtOzA7T047Ozs7O1k7RVFVQUwgQ09MT047Ozs7CisyMjU2O1JJTkcgSU4gRVFVQUwgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjU3O1JJTkcgRVFVQUwgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjU4O0NPUlJFU1BPTkRTIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjI1OTtFU1RJTUFURVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjVBO0VRVUlBTkdVTEFSIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjI1QjtTVEFSIEVRVUFMUztTbTswO09OOzs7OztOOzs7OzsKKzIyNUM7REVMVEEgRVFVQUwgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjVEO0VRVUFMIFRPIEJZIERFRklOSVRJT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjVFO01FQVNVUkVEIEJZO1NtOzA7T047Ozs7O047Ozs7OworMjI1RjtRVUVTVElPTkVEIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI2MDtOT1QgRVFVQUwgVE87U207MDtPTjswMDNEIDAzMzg7Ozs7WTs7Ozs7CisyMjYxO0lERU5USUNBTCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNjI7Tk9UIElERU5USUNBTCBUTztTbTswO09OOzIyNjEgMDMzODs7OztZOzs7OzsKKzIyNjM7U1RSSUNUTFkgRVFVSVZBTEVOVCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNjQ7TEVTUy1USEFOIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7TEVTUyBUSEFOIE9SIEVRVUFMIFRPOzs7OworMjI2NTtHUkVBVEVSLVRIQU4gT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTtHUkVBVEVSIFRIQU4gT1IgRVFVQUwgVE87Ozs7CisyMjY2O0xFU1MtVEhBTiBPVkVSIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7TEVTUyBUSEFOIE9WRVIgRVFVQUwgVE87Ozs7CisyMjY3O0dSRUFURVItVEhBTiBPVkVSIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7R1JFQVRFUiBUSEFOIE9WRVIgRVFVQUwgVE87Ozs7CisyMjY4O0xFU1MtVEhBTiBCVVQgTk9UIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7TEVTUyBUSEFOIEJVVCBOT1QgRVFVQUwgVE87Ozs7CisyMjY5O0dSRUFURVItVEhBTiBCVVQgTk9UIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7R1JFQVRFUiBUSEFOIEJVVCBOT1QgRVFVQUwgVE87Ozs7CisyMjZBO01VQ0ggTEVTUy1USEFOO1NtOzA7T047Ozs7O1k7TVVDSCBMRVNTIFRIQU47Ozs7CisyMjZCO01VQ0ggR1JFQVRFUi1USEFOO1NtOzA7T047Ozs7O1k7TVVDSCBHUkVBVEVSIFRIQU47Ozs7CisyMjZDO0JFVFdFRU47U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjZEO05PVCBFUVVJVkFMRU5UIFRPO1NtOzA7T047MjI0RCAwMzM4Ozs7O047Ozs7OworMjI2RTtOT1QgTEVTUy1USEFOO1NtOzA7T047MDAzQyAwMzM4Ozs7O1k7Tk9UIExFU1MgVEhBTjs7OzsKKzIyNkY7Tk9UIEdSRUFURVItVEhBTjtTbTswO09OOzAwM0UgMDMzODs7OztZO05PVCBHUkVBVEVSIFRIQU47Ozs7CisyMjcwO05FSVRIRVIgTEVTUy1USEFOIE5PUiBFUVVBTCBUTztTbTswO09OOzIyNjQgMDMzODs7OztZO05FSVRIRVIgTEVTUyBUSEFOIE5PUiBFUVVBTCBUTzs7OzsKKzIyNzE7TkVJVEhFUiBHUkVBVEVSLVRIQU4gTk9SIEVRVUFMIFRPO1NtOzA7T047MjI2NSAwMzM4Ozs7O1k7TkVJVEhFUiBHUkVBVEVSIFRIQU4gTk9SIEVRVUFMIFRPOzs7OworMjI3MjtMRVNTLVRIQU4gT1IgRVFVSVZBTEVOVCBUTztTbTswO09OOzs7OztZO0xFU1MgVEhBTiBPUiBFUVVJVkFMRU5UIFRPOzs7OworMjI3MztHUkVBVEVSLVRIQU4gT1IgRVFVSVZBTEVOVCBUTztTbTswO09OOzs7OztZO0dSRUFURVIgVEhBTiBPUiBFUVVJVkFMRU5UIFRPOzs7OworMjI3NDtORUlUSEVSIExFU1MtVEhBTiBOT1IgRVFVSVZBTEVOVCBUTztTbTswO09OOzIyNzIgMDMzODs7OztZO05FSVRIRVIgTEVTUyBUSEFOIE5PUiBFUVVJVkFMRU5UIFRPOzs7OworMjI3NTtORUlUSEVSIEdSRUFURVItVEhBTiBOT1IgRVFVSVZBTEVOVCBUTztTbTswO09OOzIyNzMgMDMzODs7OztZO05FSVRIRVIgR1JFQVRFUiBUSEFOIE5PUiBFUVVJVkFMRU5UIFRPOzs7OworMjI3NjtMRVNTLVRIQU4gT1IgR1JFQVRFUi1USEFOO1NtOzA7T047Ozs7O1k7TEVTUyBUSEFOIE9SIEdSRUFURVIgVEhBTjs7OzsKKzIyNzc7R1JFQVRFUi1USEFOIE9SIExFU1MtVEhBTjtTbTswO09OOzs7OztZO0dSRUFURVIgVEhBTiBPUiBMRVNTIFRIQU47Ozs7CisyMjc4O05FSVRIRVIgTEVTUy1USEFOIE5PUiBHUkVBVEVSLVRIQU47U207MDtPTjsyMjc2IDAzMzg7Ozs7WTtORUlUSEVSIExFU1MgVEhBTiBOT1IgR1JFQVRFUiBUSEFOOzs7OworMjI3OTtORUlUSEVSIEdSRUFURVItVEhBTiBOT1IgTEVTUy1USEFOO1NtOzA7T047MjI3NyAwMzM4Ozs7O1k7TkVJVEhFUiBHUkVBVEVSIFRIQU4gTk9SIExFU1MgVEhBTjs7OzsKKzIyN0E7UFJFQ0VERVM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjdCO1NVQ0NFRURTO1NtOzA7T047Ozs7O1k7Ozs7OworMjI3QztQUkVDRURFUyBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyN0Q7U1VDQ0VFRFMgT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjdFO1BSRUNFREVTIE9SIEVRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjdGO1NVQ0NFRURTIE9SIEVRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjgwO0RPRVMgTk9UIFBSRUNFREU7U207MDtPTjsyMjdBIDAzMzg7Ozs7WTs7Ozs7CisyMjgxO0RPRVMgTk9UIFNVQ0NFRUQ7U207MDtPTjsyMjdCIDAzMzg7Ozs7WTs7Ozs7CisyMjgyO1NVQlNFVCBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyODM7U1VQRVJTRVQgT0Y7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjg0O05PVCBBIFNVQlNFVCBPRjtTbTswO09OOzIyODIgMDMzODs7OztZOzs7OzsKKzIyODU7Tk9UIEEgU1VQRVJTRVQgT0Y7U207MDtPTjsyMjgzIDAzMzg7Ozs7WTs7Ozs7CisyMjg2O1NVQlNFVCBPRiBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyODc7U1VQRVJTRVQgT0YgT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjg4O05FSVRIRVIgQSBTVUJTRVQgT0YgTk9SIEVRVUFMIFRPO1NtOzA7T047MjI4NiAwMzM4Ozs7O1k7Ozs7OworMjI4OTtORUlUSEVSIEEgU1VQRVJTRVQgT0YgTk9SIEVRVUFMIFRPO1NtOzA7T047MjI4NyAwMzM4Ozs7O1k7Ozs7OworMjI4QTtTVUJTRVQgT0YgV0lUSCBOT1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTtTVUJTRVQgT0YgT1IgTk9UIEVRVUFMIFRPOzs7OworMjI4QjtTVVBFUlNFVCBPRiBXSVRIIE5PVCBFUVVBTCBUTztTbTswO09OOzs7OztZO1NVUEVSU0VUIE9GIE9SIE5PVCBFUVVBTCBUTzs7OzsKKzIyOEM7TVVMVElTRVQ7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjhEO01VTFRJU0VUIE1VTFRJUExJQ0FUSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjI4RTtNVUxUSVNFVCBVTklPTjtTbTswO09OOzs7OztOOzs7OzsKKzIyOEY7U1FVQVJFIElNQUdFIE9GO1NtOzA7T047Ozs7O1k7Ozs7OworMjI5MDtTUVVBUkUgT1JJR0lOQUwgT0Y7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjkxO1NRVUFSRSBJTUFHRSBPRiBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyOTI7U1FVQVJFIE9SSUdJTkFMIE9GIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI5MztTUVVBUkUgQ0FQO1NtOzA7T047Ozs7O047Ozs7OworMjI5NDtTUVVBUkUgQ1VQO1NtOzA7T047Ozs7O047Ozs7OworMjI5NTtDSVJDTEVEIFBMVVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjk2O0NJUkNMRUQgTUlOVVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjk3O0NJUkNMRUQgVElNRVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjk4O0NJUkNMRUQgRElWSVNJT04gU0xBU0g7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjk5O0NJUkNMRUQgRE9UIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjI5QTtDSVJDTEVEIFJJTkcgT1BFUkFUT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjlCO0NJUkNMRUQgQVNURVJJU0sgT1BFUkFUT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjlDO0NJUkNMRUQgRVFVQUxTO1NtOzA7T047Ozs7O047Ozs7OworMjI5RDtDSVJDTEVEIERBU0g7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjlFO1NRVUFSRUQgUExVUztTbTswO09OOzs7OztOOzs7OzsKKzIyOUY7U1FVQVJFRCBNSU5VUztTbTswO09OOzs7OztOOzs7OzsKKzIyQTA7U1FVQVJFRCBUSU1FUztTbTswO09OOzs7OztOOzs7OzsKKzIyQTE7U1FVQVJFRCBET1QgT1BFUkFUT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkEyO1JJR0hUIFRBQ0s7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkEzO0xFRlQgVEFDSztTbTswO09OOzs7OztZOzs7OzsKKzIyQTQ7RE9XTiBUQUNLO1NtOzA7T047Ozs7O047Ozs7OworMjJBNTtVUCBUQUNLO1NtOzA7T047Ozs7O047Ozs7OworMjJBNjtBU1NFUlRJT047U207MDtPTjs7Ozs7WTs7Ozs7CisyMkE3O01PREVMUztTbTswO09OOzs7OztZOzs7OzsKKzIyQTg7VFJVRTtTbTswO09OOzs7OztZOzs7OzsKKzIyQTk7Rk9SQ0VTO1NtOzA7T047Ozs7O1k7Ozs7OworMjJBQTtUUklQTEUgVkVSVElDQUwgQkFSIFJJR0hUIFRVUk5TVElMRTtTbTswO09OOzs7OztZOzs7OzsKKzIyQUI7RE9VQkxFIFZFUlRJQ0FMIEJBUiBET1VCTEUgUklHSFQgVFVSTlNUSUxFO1NtOzA7T047Ozs7O1k7Ozs7OworMjJBQztET0VTIE5PVCBQUk9WRTtTbTswO09OOzIyQTIgMDMzODs7OztZOzs7OzsKKzIyQUQ7Tk9UIFRSVUU7U207MDtPTjsyMkE4IDAzMzg7Ozs7WTs7Ozs7CisyMkFFO0RPRVMgTk9UIEZPUkNFO1NtOzA7T047MjJBOSAwMzM4Ozs7O1k7Ozs7OworMjJBRjtORUdBVEVEIERPVUJMRSBWRVJUSUNBTCBCQVIgRE9VQkxFIFJJR0hUIFRVUk5TVElMRTtTbTswO09OOzIyQUIgMDMzODs7OztZOzs7OzsKKzIyQjA7UFJFQ0VERVMgVU5ERVIgUkVMQVRJT047U207MDtPTjs7Ozs7WTs7Ozs7CisyMkIxO1NVQ0NFRURTIFVOREVSIFJFTEFUSU9OO1NtOzA7T047Ozs7O1k7Ozs7OworMjJCMjtOT1JNQUwgU1VCR1JPVVAgT0Y7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkIzO0NPTlRBSU5TIEFTIE5PUk1BTCBTVUJHUk9VUDtTbTswO09OOzs7OztZOzs7OzsKKzIyQjQ7Tk9STUFMIFNVQkdST1VQIE9GIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjJCNTtDT05UQUlOUyBBUyBOT1JNQUwgU1VCR1JPVVAgT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMkI2O09SSUdJTkFMIE9GO1NtOzA7T047Ozs7O1k7Ozs7OworMjJCNztJTUFHRSBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyQjg7TVVMVElNQVA7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkI5O0hFUk1JVElBTiBDT05KVUdBVEUgTUFUUklYO1NtOzA7T047Ozs7O047Ozs7OworMjJCQTtJTlRFUkNBTEFURTtTbTswO09OOzs7OztOOzs7OzsKKzIyQkI7WE9SO1NtOzA7T047Ozs7O047Ozs7OworMjJCQztOQU5EO1NtOzA7T047Ozs7O047Ozs7OworMjJCRDtOT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkJFO1JJR0hUIEFOR0xFIFdJVEggQVJDO1NtOzA7T047Ozs7O1k7Ozs7OworMjJCRjtSSUdIVCBUUklBTkdMRTtTbTswO09OOzs7OztZOzs7OzsKKzIyQzA7Ti1BUlkgTE9HSUNBTCBBTkQ7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkMxO04tQVJZIExPR0lDQUwgT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkMyO04tQVJZIElOVEVSU0VDVElPTjtTbTswO09OOzs7OztOOzs7OzsKKzIyQzM7Ti1BUlkgVU5JT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkM0O0RJQU1PTkQgT1BFUkFUT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkM1O0RPVCBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyQzY7U1RBUiBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyQzc7RElWSVNJT04gVElNRVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkM4O0JPV1RJRTtTbTswO09OOzs7OztOOzs7OzsKKzIyQzk7TEVGVCBOT1JNQUwgRkFDVE9SIFNFTUlESVJFQ1QgUFJPRFVDVDtTbTswO09OOzs7OztZOzs7OzsKKzIyQ0E7UklHSFQgTk9STUFMIEZBQ1RPUiBTRU1JRElSRUNUIFBST0RVQ1Q7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkNCO0xFRlQgU0VNSURJUkVDVCBQUk9EVUNUO1NtOzA7T047Ozs7O1k7Ozs7OworMjJDQztSSUdIVCBTRU1JRElSRUNUIFBST0RVQ1Q7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkNEO1JFVkVSU0VEIFRJTERFIEVRVUFMUztTbTswO09OOzs7OztZOzs7OzsKKzIyQ0U7Q1VSTFkgTE9HSUNBTCBPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyQ0Y7Q1VSTFkgTE9HSUNBTCBBTkQ7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkQwO0RPVUJMRSBTVUJTRVQ7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkQxO0RPVUJMRSBTVVBFUlNFVDtTbTswO09OOzs7OztZOzs7OzsKKzIyRDI7RE9VQkxFIElOVEVSU0VDVElPTjtTbTswO09OOzs7OztOOzs7OzsKKzIyRDM7RE9VQkxFIFVOSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjJENDtQSVRDSEZPUks7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkQ1O0VRVUFMIEFORCBQQVJBTExFTCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyRDY7TEVTUy1USEFOIFdJVEggRE9UO1NtOzA7T047Ozs7O1k7TEVTUyBUSEFOIFdJVEggRE9UOzs7OworMjJENztHUkVBVEVSLVRIQU4gV0lUSCBET1Q7U207MDtPTjs7Ozs7WTtHUkVBVEVSIFRIQU4gV0lUSCBET1Q7Ozs7CisyMkQ4O1ZFUlkgTVVDSCBMRVNTLVRIQU47U207MDtPTjs7Ozs7WTtWRVJZIE1VQ0ggTEVTUyBUSEFOOzs7OworMjJEOTtWRVJZIE1VQ0ggR1JFQVRFUi1USEFOO1NtOzA7T047Ozs7O1k7VkVSWSBNVUNIIEdSRUFURVIgVEhBTjs7OzsKKzIyREE7TEVTUy1USEFOIEVRVUFMIFRPIE9SIEdSRUFURVItVEhBTjtTbTswO09OOzs7OztZO0xFU1MgVEhBTiBFUVVBTCBUTyBPUiBHUkVBVEVSIFRIQU47Ozs7CisyMkRCO0dSRUFURVItVEhBTiBFUVVBTCBUTyBPUiBMRVNTLVRIQU47U207MDtPTjs7Ozs7WTtHUkVBVEVSIFRIQU4gRVFVQUwgVE8gT1IgTEVTUyBUSEFOOzs7OworMjJEQztFUVVBTCBUTyBPUiBMRVNTLVRIQU47U207MDtPTjs7Ozs7WTtFUVVBTCBUTyBPUiBMRVNTIFRIQU47Ozs7CisyMkREO0VRVUFMIFRPIE9SIEdSRUFURVItVEhBTjtTbTswO09OOzs7OztZO0VRVUFMIFRPIE9SIEdSRUFURVIgVEhBTjs7OzsKKzIyREU7RVFVQUwgVE8gT1IgUFJFQ0VERVM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkRGO0VRVUFMIFRPIE9SIFNVQ0NFRURTO1NtOzA7T047Ozs7O1k7Ozs7OworMjJFMDtET0VTIE5PVCBQUkVDRURFIE9SIEVRVUFMO1NtOzA7T047MjI3QyAwMzM4Ozs7O1k7Ozs7OworMjJFMTtET0VTIE5PVCBTVUNDRUVEIE9SIEVRVUFMO1NtOzA7T047MjI3RCAwMzM4Ozs7O1k7Ozs7OworMjJFMjtOT1QgU1FVQVJFIElNQUdFIE9GIE9SIEVRVUFMIFRPO1NtOzA7T047MjI5MSAwMzM4Ozs7O1k7Ozs7OworMjJFMztOT1QgU1FVQVJFIE9SSUdJTkFMIE9GIE9SIEVRVUFMIFRPO1NtOzA7T047MjI5MiAwMzM4Ozs7O1k7Ozs7OworMjJFNDtTUVVBUkUgSU1BR0UgT0YgT1IgTk9UIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjJFNTtTUVVBUkUgT1JJR0lOQUwgT0YgT1IgTk9UIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjJFNjtMRVNTLVRIQU4gQlVUIE5PVCBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O1k7TEVTUyBUSEFOIEJVVCBOT1QgRVFVSVZBTEVOVCBUTzs7OzsKKzIyRTc7R1JFQVRFUi1USEFOIEJVVCBOT1QgRVFVSVZBTEVOVCBUTztTbTswO09OOzs7OztZO0dSRUFURVIgVEhBTiBCVVQgTk9UIEVRVUlWQUxFTlQgVE87Ozs7CisyMkU4O1BSRUNFREVTIEJVVCBOT1QgRVFVSVZBTEVOVCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyRTk7U1VDQ0VFRFMgQlVUIE5PVCBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjJFQTtOT1QgTk9STUFMIFNVQkdST1VQIE9GO1NtOzA7T047MjJCMiAwMzM4Ozs7O1k7Ozs7OworMjJFQjtET0VTIE5PVCBDT05UQUlOIEFTIE5PUk1BTCBTVUJHUk9VUDtTbTswO09OOzIyQjMgMDMzODs7OztZOzs7OzsKKzIyRUM7Tk9UIE5PUk1BTCBTVUJHUk9VUCBPRiBPUiBFUVVBTCBUTztTbTswO09OOzIyQjQgMDMzODs7OztZOzs7OzsKKzIyRUQ7RE9FUyBOT1QgQ09OVEFJTiBBUyBOT1JNQUwgU1VCR1JPVVAgT1IgRVFVQUw7U207MDtPTjsyMkI1IDAzMzg7Ozs7WTs7Ozs7CisyMkVFO1ZFUlRJQ0FMIEVMTElQU0lTO1NtOzA7T047Ozs7O047Ozs7OworMjJFRjtNSURMSU5FIEhPUklaT05UQUwgRUxMSVBTSVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkYwO1VQIFJJR0hUIERJQUdPTkFMIEVMTElQU0lTO1NtOzA7T047Ozs7O1k7Ozs7OworMjJGMTtET1dOIFJJR0hUIERJQUdPTkFMIEVMTElQU0lTO1NtOzA7T047Ozs7O1k7Ozs7OworMjMwMDtESUFNRVRFUiBTSUdOO1NvOzA7T047Ozs7O047Ozs7OworMjMwMTtFTEVDVFJJQyBBUlJPVztTbzswO09OOzs7OztOOzs7OzsKKzIzMDI7SE9VU0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzAzO1VQIEFSUk9XSEVBRDtTbzswO09OOzs7OztOOzs7OzsKKzIzMDQ7RE9XTiBBUlJPV0hFQUQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzA1O1BST0pFQ1RJVkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzA2O1BFUlNQRUNUSVZFO1NvOzA7T047Ozs7O047Ozs7OworMjMwNztXQVZZIExJTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzA4O0xFRlQgQ0VJTElORztTbTswO09OOzs7OztZOzs7OzsKKzIzMDk7UklHSFQgQ0VJTElORztTbTswO09OOzs7OztZOzs7OzsKKzIzMEE7TEVGVCBGTE9PUjtTbTswO09OOzs7OztZOzs7OzsKKzIzMEI7UklHSFQgRkxPT1I7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzBDO0JPVFRPTSBSSUdIVCBDUk9QO1NvOzA7T047Ozs7O047Ozs7OworMjMwRDtCT1RUT00gTEVGVCBDUk9QO1NvOzA7T047Ozs7O047Ozs7OworMjMwRTtUT1AgUklHSFQgQ1JPUDtTbzswO09OOzs7OztOOzs7OzsKKzIzMEY7VE9QIExFRlQgQ1JPUDtTbzswO09OOzs7OztOOzs7OzsKKzIzMTA7UkVWRVJTRUQgTk9UIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzExO1NRVUFSRSBMT1pFTkdFO1NvOzA7T047Ozs7O047Ozs7OworMjMxMjtBUkM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzEzO1NFR01FTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzE0O1NFQ1RPUjtTbzswO09OOzs7OztOOzs7OzsKKzIzMTU7VEVMRVBIT05FIFJFQ09SREVSO1NvOzA7T047Ozs7O047Ozs7OworMjMxNjtQT1NJVElPTiBJTkRJQ0FUT1I7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzE3O1ZJRVdEQVRBIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzIzMTg7UExBQ0UgT0YgSU5URVJFU1QgU0lHTjtTbzswO09OOzs7OztOO0NPTU1BTkQgS0VZOzs7OworMjMxOTtUVVJORUQgTk9UIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzFBO1dBVENIO1NvOzA7T047Ozs7O047Ozs7OworMjMxQjtIT1VSR0xBU1M7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzFDO1RPUCBMRUZUIENPUk5FUjtTbzswO09OOzs7OztOOzs7OzsKKzIzMUQ7VE9QIFJJR0hUIENPUk5FUjtTbzswO09OOzs7OztOOzs7OzsKKzIzMUU7Qk9UVE9NIExFRlQgQ09STkVSO1NvOzA7T047Ozs7O047Ozs7OworMjMxRjtCT1RUT00gUklHSFQgQ09STkVSO1NvOzA7T047Ozs7O047Ozs7OworMjMyMDtUT1AgSEFMRiBJTlRFR1JBTDtTbTswO09OOzs7OztZOzs7OzsKKzIzMjE7Qk9UVE9NIEhBTEYgSU5URUdSQUw7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzIyO0ZST1dOO1NvOzA7T047Ozs7O047Ozs7OworMjMyMztTTUlMRTtTbzswO09OOzs7OztOOzs7OzsKKzIzMjQ7VVAgQVJST1dIRUFEIEJFVFdFRU4gVFdPIEhPUklaT05UQUwgQkFSUztTbzswO09OOzs7OztOO0VOVEVSIEtFWTs7OzsKKzIzMjU7T1BUSU9OIEtFWTtTbzswO09OOzs7OztOOzs7OzsKKzIzMjY7RVJBU0UgVE8gVEhFIFJJR0hUO1NvOzA7T047Ozs7O047REVMRVRFIFRPIFRIRSBSSUdIVCBLRVk7Ozs7CisyMzI3O1ggSU4gQSBSRUNUQU5HTEUgQk9YO1NvOzA7T047Ozs7O047Q0xFQVIgS0VZOzs7OworMjMyODtLRVlCT0FSRDtTbzswO09OOzs7OztOOzs7OzsKKzIzMjk7TEVGVC1QT0lOVElORyBBTkdMRSBCUkFDS0VUO1BzOzA7T047MzAwODs7OztZO0JSQTs7OzsKKzIzMkE7UklHSFQtUE9JTlRJTkcgQU5HTEUgQlJBQ0tFVDtQZTswO09OOzMwMDk7Ozs7WTtLRVQ7Ozs7CisyMzJCO0VSQVNFIFRPIFRIRSBMRUZUO1NvOzA7T047Ozs7O047REVMRVRFIFRPIFRIRSBMRUZUIEtFWTs7OzsKKzIzMkM7QkVOWkVORSBSSU5HO1NvOzA7T047Ozs7O047Ozs7OworMjMyRDtDWUxJTkRSSUNJVFk7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzJFO0FMTCBBUk9VTkQtUFJPRklMRTtTbzswO09OOzs7OztOOzs7OzsKKzIzMkY7U1lNTUVUUlk7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzMwO1RPVEFMIFJVTk9VVDtTbzswO09OOzs7OztOOzs7OzsKKzIzMzE7RElNRU5TSU9OIE9SSUdJTjtTbzswO09OOzs7OztOOzs7OzsKKzIzMzI7Q09OSUNBTCBUQVBFUjtTbzswO09OOzs7OztOOzs7OzsKKzIzMzM7U0xPUEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzM0O0NPVU5URVJCT1JFO1NvOzA7T047Ozs7O047Ozs7OworMjMzNTtDT1VOVEVSU0lOSztTbzswO09OOzs7OztOOzs7OzsKKzIzMzY7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIEktQkVBTTtTbzswO0w7Ozs7O047Ozs7OworMjMzNztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgU1FVSVNIIFFVQUQ7U287MDtMOzs7OztOOzs7OzsKKzIzMzg7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgRVFVQUw7U287MDtMOzs7OztOOzs7OzsKKzIzMzk7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgRElWSURFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzNBO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIERJQU1PTkQ7U287MDtMOzs7OztOOzs7OzsKKzIzM0I7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgSk9UO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzNDO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIENJUkNMRTtTbzswO0w7Ozs7O047Ozs7OworMjMzRDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgQ0lSQ0xFIFNUSUxFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzNFO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgSk9UO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzNGO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBTTEFTSCBCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNDA7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIEJBQ0tTTEFTSCBCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNDE7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgU0xBU0g7U287MDtMOzs7OztOOzs7OzsKKzIzNDI7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgQkFDS1NMQVNIO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQzO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIExFU1MtVEhBTjtTbzswO0w7Ozs7O047Ozs7OworMjM0NDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBHUkVBVEVSLVRIQU47U287MDtMOzs7OztOOzs7OzsKKzIzNDU7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIExFRlRXQVJEUyBWQU5FO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQ2O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBSSUdIVFdBUkRTIFZBTkU7U287MDtMOzs7OztOOzs7OzsKKzIzNDc7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgTEVGVFdBUkRTIEFSUk9XO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQ4O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIFJJR0hUV0FSRFMgQVJST1c7U287MDtMOzs7OztOOzs7OzsKKzIzNDk7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIENJUkNMRSBCQUNLU0xBU0g7U287MDtMOzs7OztOOzs7OzsKKzIzNEE7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERPV04gVEFDSyBVTkRFUkJBUjtTbzswO0w7Ozs7O047Oyo7OzsKKzIzNEI7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERFTFRBIFNUSUxFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzRDO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIERPV04gQ0FSRVQ7U287MDtMOzs7OztOOzs7OzsKKzIzNEQ7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgREVMVEE7U287MDtMOzs7OztOOzs7OzsKKzIzNEU7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERPV04gVEFDSyBKT1Q7U287MDtMOzs7OztOOzsqOzs7CisyMzRGO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBVUFdBUkRTIFZBTkU7U287MDtMOzs7OztOOzs7OzsKKzIzNTA7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgVVBXQVJEUyBBUlJPVztTbzswO0w7Ozs7O047Ozs7OworMjM1MTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgVVAgVEFDSyBPVkVSQkFSO1NvOzA7TDs7Ozs7Tjs7Kjs7OworMjM1MjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgREVMIFNUSUxFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzUzO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIFVQIENBUkVUO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzU0O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIERFTDtTbzswO0w7Ozs7O047Ozs7OworMjM1NTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgVVAgVEFDSyBKT1Q7U287MDtMOzs7OztOOzsqOzs7CisyMzU2O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOV0FSRFMgVkFORTtTbzswO0w7Ozs7O047Ozs7OworMjM1NztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBET1dOV0FSRFMgQVJST1c7U287MDtMOzs7OztOOzs7OzsKKzIzNTg7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVT1RFIFVOREVSQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzU5O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBERUxUQSBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM1QTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgRElBTU9ORCBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM1QjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgSk9UIFVOREVSQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzVDO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNUQ7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQIFNIT0UgSk9UO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzVFO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVU9URSBRVUFEO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzVGO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgU1RBUjtTbzswO0w7Ozs7O047Ozs7OworMjM2MDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBDT0xPTjtTbzswO0w7Ozs7O047Ozs7OworMjM2MTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgVVAgVEFDSyBESUFFUkVTSVM7U287MDtMOzs7OztOOzsqOzs7CisyMzYyO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBERUwgRElBRVJFU0lTO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzYzO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBTVEFSIERJQUVSRVNJUztTbzswO0w7Ozs7O047Ozs7OworMjM2NDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgSk9UIERJQUVSRVNJUztTbzswO0w7Ozs7O047Ozs7OworMjM2NTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgQ0lSQ0xFIERJQUVSRVNJUztTbzswO0w7Ozs7O047Ozs7OworMjM2NjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgRE9XTiBTSE9FIFNUSUxFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzY3O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBMRUZUIFNIT0UgU1RJTEU7U287MDtMOzs7OztOOzs7OzsKKzIzNjg7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFRJTERFIERJQUVSRVNJUztTbzswO0w7Ozs7O047Ozs7OworMjM2OTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgR1JFQVRFUi1USEFOIERJQUVSRVNJUztTbzswO0w7Ozs7O047Ozs7OworMjM2QTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgQ09NTUEgQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzZCO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBERUwgVElMREU7U287MDtMOzs7OztOOzs7OzsKKzIzNkM7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFpJTERFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzZEO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBTVElMRSBUSUxERTtTbzswO0w7Ozs7O047Ozs7OworMjM2RTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgU0VNSUNPTE9OIFVOREVSQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzZGO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIE5PVCBFUVVBTDtTbzswO0w7Ozs7O047Ozs7OworMjM3MDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBRVUVTVElPTjtTbzswO0w7Ozs7O047Ozs7OworMjM3MTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgRE9XTiBDQVJFVCBUSUxERTtTbzswO0w7Ozs7O047Ozs7OworMjM3MjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgVVAgQ0FSRVQgVElMREU7U287MDtMOzs7OztOOzs7OzsKKzIzNzM7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIElPVEE7U287MDtMOzs7OztOOzs7OzsKKzIzNzQ7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFJITztTbzswO0w7Ozs7O047Ozs7OworMjM3NTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgT01FR0E7U287MDtMOzs7OztOOzs7OzsKKzIzNzY7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIEFMUEhBIFVOREVSQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzc3O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBFUFNJTE9OIFVOREVSQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzc4O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBJT1RBIFVOREVSQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzc5O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBPTUVHQSBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM3QTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgQUxQSEE7U287MDtMOzs7OztOOzs7OzsKKzIzN0I7Tk9UIENIRUNLIE1BUks7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzdEO1NIT1VMREVSRUQgT1BFTiBCT1g7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzdFO0JFTEwgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM3RjtWRVJUSUNBTCBMSU5FIFdJVEggTUlERExFIERPVDtTbzswO09OOzs7OztOOzs7OzsKKzIzODA7SU5TRVJUSU9OIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIzODE7Q09OVElOVU9VUyBVTkRFUkxJTkUgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM4MjtESVNDT05USU5VT1VTIFVOREVSTElORSBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzgzO0VNUEhBU0lTIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIzODQ7Q09NUE9TSVRJT04gU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM4NTtXSElURSBTUVVBUkUgV0lUSCBDRU5UUkUgVkVSVElDQUwgTElORTtTbzswO09OOzs7OztOOzs7OzsKKzIzODY7RU5URVIgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM4NztBTFRFUk5BVElWRSBLRVkgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM4ODtIRUxNIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIzODk7Q0lSQ0xFRCBIT1JJWk9OVEFMIEJBUiBXSVRIIE5PVENIO1NvOzA7T047Ozs7O047O3BhdXNlOzs7CisyMzhBO0NJUkNMRUQgVFJJQU5HTEUgRE9XTjtTbzswO09OOzs7OztOOzticmVhazs7OworMjM4QjtCUk9LRU4gQ0lSQ0xFIFdJVEggTk9SVEhXRVNUIEFSUk9XO1NvOzA7T047Ozs7O047O2VzY2FwZTs7OworMjM4QztVTkRPIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIzOEQ7TU9OT1NUQUJMRSBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzhFO0hZU1RFUkVTSVMgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM4RjtPUEVOLUNJUkNVSVQtT1VUUFVUIEgtVFlQRSBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzkwO09QRU4tQ0lSQ1VJVC1PVVRQVVQgTC1UWVBFIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIzOTE7UEFTU0lWRS1QVUxMLURPV04tT1VUUFVUIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIzOTI7UEFTU0lWRS1QVUxMLVVQLU9VVFBVVCBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzkzO0RJUkVDVCBDVVJSRU5UIFNZTUJPTCBGT1JNIFRXTztTbzswO09OOzs7OztOOzs7OzsKKzIzOTQ7U09GVFdBUkUtRlVOQ1RJT04gU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM5NTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRDtTbzswO0w7Ozs7O047Ozs7OworMjM5NjtERUNJTUFMIFNFUEFSQVRPUiBLRVkgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM5NztQUkVWSU9VUyBQQUdFO1NvOzA7T047Ozs7O047Ozs7OworMjM5ODtORVhUIFBBR0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzk5O1BSSU5UIFNDUkVFTiBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzlBO0NMRUFSIFNDUkVFTiBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDAwO1NZTUJPTCBGT1IgTlVMTDtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIE5VTEw7Ozs7CisyNDAxO1NZTUJPTCBGT1IgU1RBUlQgT0YgSEVBRElORztTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFNUQVJUIE9GIEhFQURJTkc7Ozs7CisyNDAyO1NZTUJPTCBGT1IgU1RBUlQgT0YgVEVYVDtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFNUQVJUIE9GIFRFWFQ7Ozs7CisyNDAzO1NZTUJPTCBGT1IgRU5EIE9GIFRFWFQ7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBFTkQgT0YgVEVYVDs7OzsKKzI0MDQ7U1lNQk9MIEZPUiBFTkQgT0YgVFJBTlNNSVNTSU9OO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgRU5EIE9GIFRSQU5TTUlTU0lPTjs7OzsKKzI0MDU7U1lNQk9MIEZPUiBFTlFVSVJZO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgRU5RVUlSWTs7OzsKKzI0MDY7U1lNQk9MIEZPUiBBQ0tOT1dMRURHRTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEFDS05PV0xFREdFOzs7OworMjQwNztTWU1CT0wgRk9SIEJFTEw7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBCRUxMOzs7OworMjQwODtTWU1CT0wgRk9SIEJBQ0tTUEFDRTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEJBQ0tTUEFDRTs7OzsKKzI0MDk7U1lNQk9MIEZPUiBIT1JJWk9OVEFMIFRBQlVMQVRJT047U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBIT1JJWk9OVEFMIFRBQlVMQVRJT047Ozs7CisyNDBBO1NZTUJPTCBGT1IgTElORSBGRUVEO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgTElORSBGRUVEOzs7OworMjQwQjtTWU1CT0wgRk9SIFZFUlRJQ0FMIFRBQlVMQVRJT047U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBWRVJUSUNBTCBUQUJVTEFUSU9OOzs7OworMjQwQztTWU1CT0wgRk9SIEZPUk0gRkVFRDtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEZPUk0gRkVFRDs7OzsKKzI0MEQ7U1lNQk9MIEZPUiBDQVJSSUFHRSBSRVRVUk47U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBDQVJSSUFHRSBSRVRVUk47Ozs7CisyNDBFO1NZTUJPTCBGT1IgU0hJRlQgT1VUO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgU0hJRlQgT1VUOzs7OworMjQwRjtTWU1CT0wgRk9SIFNISUZUIElOO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgU0hJRlQgSU47Ozs7CisyNDEwO1NZTUJPTCBGT1IgREFUQSBMSU5LIEVTQ0FQRTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIERBVEEgTElOSyBFU0NBUEU7Ozs7CisyNDExO1NZTUJPTCBGT1IgREVWSUNFIENPTlRST0wgT05FO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgREVWSUNFIENPTlRST0wgT05FOzs7OworMjQxMjtTWU1CT0wgRk9SIERFVklDRSBDT05UUk9MIFRXTztTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIERFVklDRSBDT05UUk9MIFRXTzs7OzsKKzI0MTM7U1lNQk9MIEZPUiBERVZJQ0UgQ09OVFJPTCBUSFJFRTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIERFVklDRSBDT05UUk9MIFRIUkVFOzs7OworMjQxNDtTWU1CT0wgRk9SIERFVklDRSBDT05UUk9MIEZPVVI7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBERVZJQ0UgQ09OVFJPTCBGT1VSOzs7OworMjQxNTtTWU1CT0wgRk9SIE5FR0FUSVZFIEFDS05PV0xFREdFO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgTkVHQVRJVkUgQUNLTk9XTEVER0U7Ozs7CisyNDE2O1NZTUJPTCBGT1IgU1lOQ0hST05PVVMgSURMRTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFNZTkNIUk9OT1VTIElETEU7Ozs7CisyNDE3O1NZTUJPTCBGT1IgRU5EIE9GIFRSQU5TTUlTU0lPTiBCTE9DSztTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0s7Ozs7CisyNDE4O1NZTUJPTCBGT1IgQ0FOQ0VMO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgQ0FOQ0VMOzs7OworMjQxOTtTWU1CT0wgRk9SIEVORCBPRiBNRURJVU07U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBFTkQgT0YgTUVESVVNOzs7OworMjQxQTtTWU1CT0wgRk9SIFNVQlNUSVRVVEU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBTVUJTVElUVVRFOzs7OworMjQxQjtTWU1CT0wgRk9SIEVTQ0FQRTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEVTQ0FQRTs7OzsKKzI0MUM7U1lNQk9MIEZPUiBGSUxFIFNFUEFSQVRPUjtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEZJTEUgU0VQQVJBVE9SOzs7OworMjQxRDtTWU1CT0wgRk9SIEdST1VQIFNFUEFSQVRPUjtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEdST1VQIFNFUEFSQVRPUjs7OzsKKzI0MUU7U1lNQk9MIEZPUiBSRUNPUkQgU0VQQVJBVE9SO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgUkVDT1JEIFNFUEFSQVRPUjs7OzsKKzI0MUY7U1lNQk9MIEZPUiBVTklUIFNFUEFSQVRPUjtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFVOSVQgU0VQQVJBVE9SOzs7OworMjQyMDtTWU1CT0wgRk9SIFNQQUNFO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgU1BBQ0U7Ozs7CisyNDIxO1NZTUJPTCBGT1IgREVMRVRFO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgREVMRVRFOzs7OworMjQyMjtCTEFOSyBTWU1CT0w7U287MDtPTjs7Ozs7TjtCTEFOSzs7OzsKKzI0MjM7T1BFTiBCT1g7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDI0O1NZTUJPTCBGT1IgTkVXTElORTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIE5FV0xJTkU7Ozs7CisyNDI1O1NZTUJPTCBGT1IgREVMRVRFIEZPUk0gVFdPO1NvOzA7T047Ozs7O047Ozs7OworMjQyNjtTWU1CT0wgRk9SIFNVQlNUSVRVVEUgRk9STSBUV087U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDQwO09DUiBIT09LO1NvOzA7T047Ozs7O047Ozs7OworMjQ0MTtPQ1IgQ0hBSVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDQyO09DUiBGT1JLO1NvOzA7T047Ozs7O047Ozs7OworMjQ0MztPQ1IgSU5WRVJURUQgRk9SSztTbzswO09OOzs7OztOOzs7OzsKKzI0NDQ7T0NSIEJFTFQgQlVDS0xFO1NvOzA7T047Ozs7O047Ozs7OworMjQ0NTtPQ1IgQk9XIFRJRTtTbzswO09OOzs7OztOOzs7OzsKKzI0NDY7T0NSIEJSQU5DSCBCQU5LIElERU5USUZJQ0FUSU9OO1NvOzA7T047Ozs7O047Ozs7OworMjQ0NztPQ1IgQU1PVU5UIE9GIENIRUNLO1NvOzA7T047Ozs7O047Ozs7OworMjQ0ODtPQ1IgREFTSDtTbzswO09OOzs7OztOOzs7OzsKKzI0NDk7T0NSIENVU1RPTUVSIEFDQ09VTlQgTlVNQkVSO1NvOzA7T047Ozs7O047Ozs7OworMjQ0QTtPQ1IgRE9VQkxFIEJBQ0tTTEFTSDtTbzswO09OOzs7OztOOzs7OzsKKzI0NjA7Q0lSQ0xFRCBESUdJVCBPTkU7Tm87MDtFTjs8Y2lyY2xlPiAwMDMxOzsxOzE7Tjs7Ozs7CisyNDYxO0NJUkNMRUQgRElHSVQgVFdPO05vOzA7RU47PGNpcmNsZT4gMDAzMjs7MjsyO047Ozs7OworMjQ2MjtDSVJDTEVEIERJR0lUIFRIUkVFO05vOzA7RU47PGNpcmNsZT4gMDAzMzs7MzszO047Ozs7OworMjQ2MztDSVJDTEVEIERJR0lUIEZPVVI7Tm87MDtFTjs8Y2lyY2xlPiAwMDM0Ozs0OzQ7Tjs7Ozs7CisyNDY0O0NJUkNMRUQgRElHSVQgRklWRTtObzswO0VOOzxjaXJjbGU+IDAwMzU7OzU7NTtOOzs7OzsKKzI0NjU7Q0lSQ0xFRCBESUdJVCBTSVg7Tm87MDtFTjs8Y2lyY2xlPiAwMDM2Ozs2OzY7Tjs7Ozs7CisyNDY2O0NJUkNMRUQgRElHSVQgU0VWRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDM3Ozs3Ozc7Tjs7Ozs7CisyNDY3O0NJUkNMRUQgRElHSVQgRUlHSFQ7Tm87MDtFTjs8Y2lyY2xlPiAwMDM4Ozs4Ozg7Tjs7Ozs7CisyNDY4O0NJUkNMRUQgRElHSVQgTklORTtObzswO0VOOzxjaXJjbGU+IDAwMzk7Ozk7OTtOOzs7OzsKKzI0Njk7Q0lSQ0xFRCBOVU1CRVIgVEVOO05vOzA7RU47PGNpcmNsZT4gMDAzMSAwMDMwOzs7MTA7Tjs7Ozs7CisyNDZBO0NJUkNMRUQgTlVNQkVSIEVMRVZFTjtObzswO0VOOzxjaXJjbGU+IDAwMzEgMDAzMTs7OzExO047Ozs7OworMjQ2QjtDSVJDTEVEIE5VTUJFUiBUV0VMVkU7Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzI7OzsxMjtOOzs7OzsKKzI0NkM7Q0lSQ0xFRCBOVU1CRVIgVEhJUlRFRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzM7OzsxMztOOzs7OzsKKzI0NkQ7Q0lSQ0xFRCBOVU1CRVIgRk9VUlRFRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzQ7OzsxNDtOOzs7OzsKKzI0NkU7Q0lSQ0xFRCBOVU1CRVIgRklGVEVFTjtObzswO0VOOzxjaXJjbGU+IDAwMzEgMDAzNTs7OzE1O047Ozs7OworMjQ2RjtDSVJDTEVEIE5VTUJFUiBTSVhURUVOO05vOzA7RU47PGNpcmNsZT4gMDAzMSAwMDM2Ozs7MTY7Tjs7Ozs7CisyNDcwO0NJUkNMRUQgTlVNQkVSIFNFVkVOVEVFTjtObzswO0VOOzxjaXJjbGU+IDAwMzEgMDAzNzs7OzE3O047Ozs7OworMjQ3MTtDSVJDTEVEIE5VTUJFUiBFSUdIVEVFTjtObzswO0VOOzxjaXJjbGU+IDAwMzEgMDAzODs7OzE4O047Ozs7OworMjQ3MjtDSVJDTEVEIE5VTUJFUiBOSU5FVEVFTjtObzswO0VOOzxjaXJjbGU+IDAwMzEgMDAzOTs7OzE5O047Ozs7OworMjQ3MztDSVJDTEVEIE5VTUJFUiBUV0VOVFk7Tm87MDtFTjs8Y2lyY2xlPiAwMDMyIDAwMzA7OzsyMDtOOzs7OzsKKzI0NzQ7UEFSRU5USEVTSVpFRCBESUdJVCBPTkU7Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzEgMDAyOTs7MTsxO047Ozs7OworMjQ3NTtQQVJFTlRIRVNJWkVEIERJR0lUIFRXTztObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMiAwMDI5OzsyOzI7Tjs7Ozs7CisyNDc2O1BBUkVOVEhFU0laRUQgRElHSVQgVEhSRUU7Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzMgMDAyOTs7MzszO047Ozs7OworMjQ3NztQQVJFTlRIRVNJWkVEIERJR0lUIEZPVVI7Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzQgMDAyOTs7NDs0O047Ozs7OworMjQ3ODtQQVJFTlRIRVNJWkVEIERJR0lUIEZJVkU7Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzUgMDAyOTs7NTs1O047Ozs7OworMjQ3OTtQQVJFTlRIRVNJWkVEIERJR0lUIFNJWDtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzNiAwMDI5Ozs2OzY7Tjs7Ozs7CisyNDdBO1BBUkVOVEhFU0laRUQgRElHSVQgU0VWRU47Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzcgMDAyOTs7Nzs3O047Ozs7OworMjQ3QjtQQVJFTlRIRVNJWkVEIERJR0lUIEVJR0hUO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDM4IDAwMjk7Ozg7ODtOOzs7OzsKKzI0N0M7UEFSRU5USEVTSVpFRCBESUdJVCBOSU5FO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDM5IDAwMjk7Ozk7OTtOOzs7OzsKKzI0N0Q7UEFSRU5USEVTSVpFRCBOVU1CRVIgVEVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzAgMDAyOTs7OzEwO047Ozs7OworMjQ3RTtQQVJFTlRIRVNJWkVEIE5VTUJFUiBFTEVWRU47Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzEgMDAzMSAwMDI5Ozs7MTE7Tjs7Ozs7CisyNDdGO1BBUkVOVEhFU0laRUQgTlVNQkVSIFRXRUxWRTtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMSAwMDMyIDAwMjk7OzsxMjtOOzs7OzsKKzI0ODA7UEFSRU5USEVTSVpFRCBOVU1CRVIgVEhJUlRFRU47Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzEgMDAzMyAwMDI5Ozs7MTM7Tjs7Ozs7CisyNDgxO1BBUkVOVEhFU0laRUQgTlVNQkVSIEZPVVJURUVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzQgMDAyOTs7OzE0O047Ozs7OworMjQ4MjtQQVJFTlRIRVNJWkVEIE5VTUJFUiBGSUZURUVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzUgMDAyOTs7OzE1O047Ozs7OworMjQ4MztQQVJFTlRIRVNJWkVEIE5VTUJFUiBTSVhURUVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzYgMDAyOTs7OzE2O047Ozs7OworMjQ4NDtQQVJFTlRIRVNJWkVEIE5VTUJFUiBTRVZFTlRFRU47Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzEgMDAzNyAwMDI5Ozs7MTc7Tjs7Ozs7CisyNDg1O1BBUkVOVEhFU0laRUQgTlVNQkVSIEVJR0hURUVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzggMDAyOTs7OzE4O047Ozs7OworMjQ4NjtQQVJFTlRIRVNJWkVEIE5VTUJFUiBOSU5FVEVFTjtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMSAwMDM5IDAwMjk7OzsxOTtOOzs7OzsKKzI0ODc7UEFSRU5USEVTSVpFRCBOVU1CRVIgVFdFTlRZO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMyIDAwMzAgMDAyOTs7OzIwO047Ozs7OworMjQ4ODtESUdJVCBPTkUgRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDJFOzsxOzE7TjtESUdJVCBPTkUgUEVSSU9EOzs7OworMjQ4OTtESUdJVCBUV08gRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMiAwMDJFOzsyOzI7TjtESUdJVCBUV08gUEVSSU9EOzs7OworMjQ4QTtESUdJVCBUSFJFRSBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDMzIDAwMkU7OzM7MztOO0RJR0lUIFRIUkVFIFBFUklPRDs7OzsKKzI0OEI7RElHSVQgRk9VUiBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDM0IDAwMkU7OzQ7NDtOO0RJR0lUIEZPVVIgUEVSSU9EOzs7OworMjQ4QztESUdJVCBGSVZFIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzUgMDAyRTs7NTs1O047RElHSVQgRklWRSBQRVJJT0Q7Ozs7CisyNDhEO0RJR0lUIFNJWCBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDM2IDAwMkU7OzY7NjtOO0RJR0lUIFNJWCBQRVJJT0Q7Ozs7CisyNDhFO0RJR0lUIFNFVkVOIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzcgMDAyRTs7Nzs3O047RElHSVQgU0VWRU4gUEVSSU9EOzs7OworMjQ4RjtESUdJVCBFSUdIVCBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDM4IDAwMkU7Ozg7ODtOO0RJR0lUIEVJR0hUIFBFUklPRDs7OzsKKzI0OTA7RElHSVQgTklORSBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDM5IDAwMkU7Ozk7OTtOO0RJR0lUIE5JTkUgUEVSSU9EOzs7OworMjQ5MTtOVU1CRVIgVEVOIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzEgMDAzMCAwMDJFOzs7MTA7TjtOVU1CRVIgVEVOIFBFUklPRDs7OzsKKzI0OTI7TlVNQkVSIEVMRVZFTiBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDMxIDAwMzEgMDAyRTs7OzExO047TlVNQkVSIEVMRVZFTiBQRVJJT0Q7Ozs7CisyNDkzO05VTUJFUiBUV0VMVkUgRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDMyIDAwMkU7OzsxMjtOO05VTUJFUiBUV0VMVkUgUEVSSU9EOzs7OworMjQ5NDtOVU1CRVIgVEhJUlRFRU4gRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDMzIDAwMkU7OzsxMztOO05VTUJFUiBUSElSVEVFTiBQRVJJT0Q7Ozs7CisyNDk1O05VTUJFUiBGT1VSVEVFTiBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDMxIDAwMzQgMDAyRTs7OzE0O047TlVNQkVSIEZPVVJURUVOIFBFUklPRDs7OzsKKzI0OTY7TlVNQkVSIEZJRlRFRU4gRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDM1IDAwMkU7OzsxNTtOO05VTUJFUiBGSUZURUVOIFBFUklPRDs7OzsKKzI0OTc7TlVNQkVSIFNJWFRFRU4gRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDM2IDAwMkU7OzsxNjtOO05VTUJFUiBTSVhURUVOIFBFUklPRDs7OzsKKzI0OTg7TlVNQkVSIFNFVkVOVEVFTiBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDMxIDAwMzcgMDAyRTs7OzE3O047TlVNQkVSIFNFVkVOVEVFTiBQRVJJT0Q7Ozs7CisyNDk5O05VTUJFUiBFSUdIVEVFTiBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDMxIDAwMzggMDAyRTs7OzE4O047TlVNQkVSIEVJR0hURUVOIFBFUklPRDs7OzsKKzI0OUE7TlVNQkVSIE5JTkVURUVOIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzEgMDAzOSAwMDJFOzs7MTk7TjtOVU1CRVIgTklORVRFRU4gUEVSSU9EOzs7OworMjQ5QjtOVU1CRVIgVFdFTlRZIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzIgMDAzMCAwMDJFOzs7MjA7TjtOVU1CRVIgVFdFTlRZIFBFUklPRDs7OzsKKzI0OUM7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDYxIDAwMjk7Ozs7Tjs7Ozs7CisyNDlEO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEI7U287MDtMOzxjb21wYXQ+IDAwMjggMDA2MiAwMDI5Ozs7O047Ozs7OworMjQ5RTtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBDO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNjMgMDAyOTs7OztOOzs7OzsKKzI0OUY7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgRDtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDY0IDAwMjk7Ozs7Tjs7Ozs7CisyNEEwO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEU7U287MDtMOzxjb21wYXQ+IDAwMjggMDA2NSAwMDI5Ozs7O047Ozs7OworMjRBMTtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBGO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNjYgMDAyOTs7OztOOzs7OzsKKzI0QTI7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgRztTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDY3IDAwMjk7Ozs7Tjs7Ozs7CisyNEEzO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEg7U287MDtMOzxjb21wYXQ+IDAwMjggMDA2OCAwMDI5Ozs7O047Ozs7OworMjRBNDtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBJO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNjkgMDAyOTs7OztOOzs7OzsKKzI0QTU7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgSjtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDZBIDAwMjk7Ozs7Tjs7Ozs7CisyNEE2O1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEs7U287MDtMOzxjb21wYXQ+IDAwMjggMDA2QiAwMDI5Ozs7O047Ozs7OworMjRBNztQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBMO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNkMgMDAyOTs7OztOOzs7OzsKKzI0QTg7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgTTtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDZEIDAwMjk7Ozs7Tjs7Ozs7CisyNEE5O1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIE47U287MDtMOzxjb21wYXQ+IDAwMjggMDA2RSAwMDI5Ozs7O047Ozs7OworMjRBQTtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBPO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNkYgMDAyOTs7OztOOzs7OzsKKzI0QUI7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgUDtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDcwIDAwMjk7Ozs7Tjs7Ozs7CisyNEFDO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFE7U287MDtMOzxjb21wYXQ+IDAwMjggMDA3MSAwMDI5Ozs7O047Ozs7OworMjRBRDtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBSO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNzIgMDAyOTs7OztOOzs7OzsKKzI0QUU7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgUztTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDczIDAwMjk7Ozs7Tjs7Ozs7CisyNEFGO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFQ7U287MDtMOzxjb21wYXQ+IDAwMjggMDA3NCAwMDI5Ozs7O047Ozs7OworMjRCMDtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBVO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNzUgMDAyOTs7OztOOzs7OzsKKzI0QjE7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgVjtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDc2IDAwMjk7Ozs7Tjs7Ozs7CisyNEIyO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFc7U287MDtMOzxjb21wYXQ+IDAwMjggMDA3NyAwMDI5Ozs7O047Ozs7OworMjRCMztQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBYO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNzggMDAyOTs7OztOOzs7OzsKKzI0QjQ7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgWTtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDc5IDAwMjk7Ozs7Tjs7Ozs7CisyNEI1O1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFo7U287MDtMOzxjb21wYXQ+IDAwMjggMDA3QSAwMDI5Ozs7O047Ozs7OworMjRCNjtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEE7U287MDtMOzxjaXJjbGU+IDAwNDE7Ozs7Tjs7OzsyNEQwOworMjRCNztDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEI7U287MDtMOzxjaXJjbGU+IDAwNDI7Ozs7Tjs7OzsyNEQxOworMjRCODtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEM7U287MDtMOzxjaXJjbGU+IDAwNDM7Ozs7Tjs7OzsyNEQyOworMjRCOTtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEQ7U287MDtMOzxjaXJjbGU+IDAwNDQ7Ozs7Tjs7OzsyNEQzOworMjRCQTtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEU7U287MDtMOzxjaXJjbGU+IDAwNDU7Ozs7Tjs7OzsyNEQ0OworMjRCQjtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEY7U287MDtMOzxjaXJjbGU+IDAwNDY7Ozs7Tjs7OzsyNEQ1OworMjRCQztDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEc7U287MDtMOzxjaXJjbGU+IDAwNDc7Ozs7Tjs7OzsyNEQ2OworMjRCRDtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEg7U287MDtMOzxjaXJjbGU+IDAwNDg7Ozs7Tjs7OzsyNEQ3OworMjRCRTtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEk7U287MDtMOzxjaXJjbGU+IDAwNDk7Ozs7Tjs7OzsyNEQ4OworMjRCRjtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEo7U287MDtMOzxjaXJjbGU+IDAwNEE7Ozs7Tjs7OzsyNEQ5OworMjRDMDtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEs7U287MDtMOzxjaXJjbGU+IDAwNEI7Ozs7Tjs7OzsyNERBOworMjRDMTtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIEw7U287MDtMOzxjaXJjbGU+IDAwNEM7Ozs7Tjs7OzsyNERCOworMjRDMjtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIE07U287MDtMOzxjaXJjbGU+IDAwNEQ7Ozs7Tjs7OzsyNERDOworMjRDMztDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIE47U287MDtMOzxjaXJjbGU+IDAwNEU7Ozs7Tjs7OzsyNEREOworMjRDNDtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIE87U287MDtMOzxjaXJjbGU+IDAwNEY7Ozs7Tjs7OzsyNERFOworMjRDNTtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFA7U287MDtMOzxjaXJjbGU+IDAwNTA7Ozs7Tjs7OzsyNERGOworMjRDNjtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFE7U287MDtMOzxjaXJjbGU+IDAwNTE7Ozs7Tjs7OzsyNEUwOworMjRDNztDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFI7U287MDtMOzxjaXJjbGU+IDAwNTI7Ozs7Tjs7OzsyNEUxOworMjRDODtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFM7U287MDtMOzxjaXJjbGU+IDAwNTM7Ozs7Tjs7OzsyNEUyOworMjRDOTtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFQ7U287MDtMOzxjaXJjbGU+IDAwNTQ7Ozs7Tjs7OzsyNEUzOworMjRDQTtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFU7U287MDtMOzxjaXJjbGU+IDAwNTU7Ozs7Tjs7OzsyNEU0OworMjRDQjtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFY7U287MDtMOzxjaXJjbGU+IDAwNTY7Ozs7Tjs7OzsyNEU1OworMjRDQztDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFc7U287MDtMOzxjaXJjbGU+IDAwNTc7Ozs7Tjs7OzsyNEU2OworMjRDRDtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFg7U287MDtMOzxjaXJjbGU+IDAwNTg7Ozs7Tjs7OzsyNEU3OworMjRDRTtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFk7U287MDtMOzxjaXJjbGU+IDAwNTk7Ozs7Tjs7OzsyNEU4OworMjRDRjtDSVJDTEVEIExBVElOIENBUElUQUwgTEVUVEVSIFo7U287MDtMOzxjaXJjbGU+IDAwNUE7Ozs7Tjs7OzsyNEU5OworMjREMDtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBBO1NvOzA7TDs8Y2lyY2xlPiAwMDYxOzs7O047OzsyNEI2OzsyNEI2CisyNEQxO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEI7U287MDtMOzxjaXJjbGU+IDAwNjI7Ozs7Tjs7OzI0Qjc7OzI0QjcKKzI0RDI7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgQztTbzswO0w7PGNpcmNsZT4gMDA2Mzs7OztOOzs7MjRCODs7MjRCOAorMjREMztDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBEO1NvOzA7TDs8Y2lyY2xlPiAwMDY0Ozs7O047OzsyNEI5OzsyNEI5CisyNEQ0O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEU7U287MDtMOzxjaXJjbGU+IDAwNjU7Ozs7Tjs7OzI0QkE7OzI0QkEKKzI0RDU7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgRjtTbzswO0w7PGNpcmNsZT4gMDA2Njs7OztOOzs7MjRCQjs7MjRCQgorMjRENjtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBHO1NvOzA7TDs8Y2lyY2xlPiAwMDY3Ozs7O047OzsyNEJDOzsyNEJDCisyNEQ3O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEg7U287MDtMOzxjaXJjbGU+IDAwNjg7Ozs7Tjs7OzI0QkQ7OzI0QkQKKzI0RDg7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgSTtTbzswO0w7PGNpcmNsZT4gMDA2OTs7OztOOzs7MjRCRTs7MjRCRQorMjREOTtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBKO1NvOzA7TDs8Y2lyY2xlPiAwMDZBOzs7O047OzsyNEJGOzsyNEJGCisyNERBO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEs7U287MDtMOzxjaXJjbGU+IDAwNkI7Ozs7Tjs7OzI0QzA7OzI0QzAKKzI0REI7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgTDtTbzswO0w7PGNpcmNsZT4gMDA2Qzs7OztOOzs7MjRDMTs7MjRDMQorMjREQztDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBNO1NvOzA7TDs8Y2lyY2xlPiAwMDZEOzs7O047OzsyNEMyOzsyNEMyCisyNEREO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIE47U287MDtMOzxjaXJjbGU+IDAwNkU7Ozs7Tjs7OzI0QzM7OzI0QzMKKzI0REU7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgTztTbzswO0w7PGNpcmNsZT4gMDA2Rjs7OztOOzs7MjRDNDs7MjRDNAorMjRERjtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBQO1NvOzA7TDs8Y2lyY2xlPiAwMDcwOzs7O047OzsyNEM1OzsyNEM1CisyNEUwO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFE7U287MDtMOzxjaXJjbGU+IDAwNzE7Ozs7Tjs7OzI0QzY7OzI0QzYKKzI0RTE7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgUjtTbzswO0w7PGNpcmNsZT4gMDA3Mjs7OztOOzs7MjRDNzs7MjRDNworMjRFMjtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBTO1NvOzA7TDs8Y2lyY2xlPiAwMDczOzs7O047OzsyNEM4OzsyNEM4CisyNEUzO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFQ7U287MDtMOzxjaXJjbGU+IDAwNzQ7Ozs7Tjs7OzI0Qzk7OzI0QzkKKzI0RTQ7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgVTtTbzswO0w7PGNpcmNsZT4gMDA3NTs7OztOOzs7MjRDQTs7MjRDQQorMjRFNTtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBWO1NvOzA7TDs8Y2lyY2xlPiAwMDc2Ozs7O047OzsyNENCOzsyNENCCisyNEU2O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFc7U287MDtMOzxjaXJjbGU+IDAwNzc7Ozs7Tjs7OzI0Q0M7OzI0Q0MKKzI0RTc7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgWDtTbzswO0w7PGNpcmNsZT4gMDA3ODs7OztOOzs7MjRDRDs7MjRDRAorMjRFODtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBZO1NvOzA7TDs8Y2lyY2xlPiAwMDc5Ozs7O047OzsyNENFOzsyNENFCisyNEU5O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFo7U287MDtMOzxjaXJjbGU+IDAwN0E7Ozs7Tjs7OzI0Q0Y7OzI0Q0YKKzI0RUE7Q0lSQ0xFRCBESUdJVCBaRVJPO05vOzA7RU47PGNpcmNsZT4gMDAzMDs7MDswO047Ozs7OworMjUwMDtCT1ggRFJBV0lOR1MgTElHSFQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIEhPUklaT05UQUw7Ozs7CisyNTAxO0JPWCBEUkFXSU5HUyBIRUFWWSBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgSE9SSVpPTlRBTDs7OzsKKzI1MDI7Qk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgVkVSVElDQUw7Ozs7CisyNTAzO0JPWCBEUkFXSU5HUyBIRUFWWSBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFZFUlRJQ0FMOzs7OworMjUwNDtCT1ggRFJBV0lOR1MgTElHSFQgVFJJUExFIERBU0ggSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFRSSVBMRSBEQVNIIEhPUklaT05UQUw7Ozs7CisyNTA1O0JPWCBEUkFXSU5HUyBIRUFWWSBUUklQTEUgREFTSCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgVFJJUExFIERBU0ggSE9SSVpPTlRBTDs7OzsKKzI1MDY7Qk9YIERSQVdJTkdTIExJR0hUIFRSSVBMRSBEQVNIIFZFUlRJQ0FMO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgVFJJUExFIERBU0ggVkVSVElDQUw7Ozs7CisyNTA3O0JPWCBEUkFXSU5HUyBIRUFWWSBUUklQTEUgREFTSCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFRSSVBMRSBEQVNIIFZFUlRJQ0FMOzs7OworMjUwODtCT1ggRFJBV0lOR1MgTElHSFQgUVVBRFJVUExFIERBU0ggSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFFVQURSVVBMRSBEQVNIIEhPUklaT05UQUw7Ozs7CisyNTA5O0JPWCBEUkFXSU5HUyBIRUFWWSBRVUFEUlVQTEUgREFTSCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgUVVBRFJVUExFIERBU0ggSE9SSVpPTlRBTDs7OzsKKzI1MEE7Qk9YIERSQVdJTkdTIExJR0hUIFFVQURSVVBMRSBEQVNIIFZFUlRJQ0FMO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgUVVBRFJVUExFIERBU0ggVkVSVElDQUw7Ozs7CisyNTBCO0JPWCBEUkFXSU5HUyBIRUFWWSBRVUFEUlVQTEUgREFTSCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFFVQURSVVBMRSBEQVNIIFZFUlRJQ0FMOzs7OworMjUwQztCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBET1dOIEFORCBSSUdIVDs7OzsKKzI1MEQ7Qk9YIERSQVdJTkdTIERPV04gTElHSFQgQU5EIFJJR0hUIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBMSUdIVCBBTkQgUklHSFQgSEVBVlk7Ozs7CisyNTBFO0JPWCBEUkFXSU5HUyBET1dOIEhFQVZZIEFORCBSSUdIVCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gSEVBVlkgQU5EIFJJR0hUIExJR0hUOzs7OworMjUwRjtCT1ggRFJBV0lOR1MgSEVBVlkgRE9XTiBBTkQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBET1dOIEFORCBSSUdIVDs7OzsKKzI1MTA7Qk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBET1dOIEFORCBMRUZUOzs7OworMjUxMTtCT1ggRFJBV0lOR1MgRE9XTiBMSUdIVCBBTkQgTEVGVCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gTElHSFQgQU5EIExFRlQgSEVBVlk7Ozs7CisyNTEyO0JPWCBEUkFXSU5HUyBET1dOIEhFQVZZIEFORCBMRUZUIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBIRUFWWSBBTkQgTEVGVCBMSUdIVDs7OzsKKzI1MTM7Qk9YIERSQVdJTkdTIEhFQVZZIERPV04gQU5EIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBET1dOIEFORCBMRUZUOzs7OworMjUxNDtCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgVVAgQU5EIFJJR0hUOzs7OworMjUxNTtCT1ggRFJBV0lOR1MgVVAgTElHSFQgQU5EIFJJR0hUIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgVVAgTElHSFQgQU5EIFJJR0hUIEhFQVZZOzs7OworMjUxNjtCT1ggRFJBV0lOR1MgVVAgSEVBVlkgQU5EIFJJR0hUIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgVVAgSEVBVlkgQU5EIFJJR0hUIExJR0hUOzs7OworMjUxNztCT1ggRFJBV0lOR1MgSEVBVlkgVVAgQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgVVAgQU5EIFJJR0hUOzs7OworMjUxODtCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBVUCBBTkQgTEVGVDs7OzsKKzI1MTk7Qk9YIERSQVdJTkdTIFVQIExJR0hUIEFORCBMRUZUIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgVVAgTElHSFQgQU5EIExFRlQgSEVBVlk7Ozs7CisyNTFBO0JPWCBEUkFXSU5HUyBVUCBIRUFWWSBBTkQgTEVGVCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFVQIEhFQVZZIEFORCBMRUZUIExJR0hUOzs7OworMjUxQjtCT1ggRFJBV0lOR1MgSEVBVlkgVVAgQU5EIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBVUCBBTkQgTEVGVDs7OzsKKzI1MUM7Qk9YIERSQVdJTkdTIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFZFUlRJQ0FMIEFORCBSSUdIVDs7OzsKKzI1MUQ7Qk9YIERSQVdJTkdTIFZFUlRJQ0FMIExJR0hUIEFORCBSSUdIVCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIExJR0hUIEFORCBSSUdIVCBIRUFWWTs7OzsKKzI1MUU7Qk9YIERSQVdJTkdTIFVQIEhFQVZZIEFORCBSSUdIVCBET1dOIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgVVAgSEVBVlkgQU5EIFJJR0hUIERPV04gTElHSFQ7Ozs7CisyNTFGO0JPWCBEUkFXSU5HUyBET1dOIEhFQVZZIEFORCBSSUdIVCBVUCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gSEVBVlkgQU5EIFJJR0hUIFVQIExJR0hUOzs7OworMjUyMDtCT1ggRFJBV0lOR1MgVkVSVElDQUwgSEVBVlkgQU5EIFJJR0hUIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgVkVSVElDQUwgSEVBVlkgQU5EIFJJR0hUIExJR0hUOzs7OworMjUyMTtCT1ggRFJBV0lOR1MgRE9XTiBMSUdIVCBBTkQgUklHSFQgVVAgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIExJR0hUIEFORCBSSUdIVCBVUCBIRUFWWTs7OzsKKzI1MjI7Qk9YIERSQVdJTkdTIFVQIExJR0hUIEFORCBSSUdIVCBET1dOIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgVVAgTElHSFQgQU5EIFJJR0hUIERPV04gSEVBVlk7Ozs7CisyNTIzO0JPWCBEUkFXSU5HUyBIRUFWWSBWRVJUSUNBTCBBTkQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBWRVJUSUNBTCBBTkQgUklHSFQ7Ozs7CisyNTI0O0JPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFZFUlRJQ0FMIEFORCBMRUZUOzs7OworMjUyNTtCT1ggRFJBV0lOR1MgVkVSVElDQUwgTElHSFQgQU5EIExFRlQgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBMSUdIVCBBTkQgTEVGVCBIRUFWWTs7OzsKKzI1MjY7Qk9YIERSQVdJTkdTIFVQIEhFQVZZIEFORCBMRUZUIERPV04gTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBIRUFWWSBBTkQgTEVGVCBET1dOIExJR0hUOzs7OworMjUyNztCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgTEVGVCBVUCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gSEVBVlkgQU5EIExFRlQgVVAgTElHSFQ7Ozs7CisyNTI4O0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBIRUFWWSBBTkQgTEVGVCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIEhFQVZZIEFORCBMRUZUIExJR0hUOzs7OworMjUyOTtCT1ggRFJBV0lOR1MgRE9XTiBMSUdIVCBBTkQgTEVGVCBVUCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gTElHSFQgQU5EIExFRlQgVVAgSEVBVlk7Ozs7CisyNTJBO0JPWCBEUkFXSU5HUyBVUCBMSUdIVCBBTkQgTEVGVCBET1dOIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgVVAgTElHSFQgQU5EIExFRlQgRE9XTiBIRUFWWTs7OzsKKzI1MkI7Qk9YIERSQVdJTkdTIEhFQVZZIFZFUlRJQ0FMIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgVkVSVElDQUwgQU5EIExFRlQ7Ozs7CisyNTJDO0JPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTDs7OzsKKzI1MkQ7Qk9YIERSQVdJTkdTIExFRlQgSEVBVlkgQU5EIFJJR0hUIERPV04gTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMRUZUIEhFQVZZIEFORCBSSUdIVCBET1dOIExJR0hUOzs7OworMjUyRTtCT1ggRFJBV0lOR1MgUklHSFQgSEVBVlkgQU5EIExFRlQgRE9XTiBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFJJR0hUIEhFQVZZIEFORCBMRUZUIERPV04gTElHSFQ7Ozs7CisyNTJGO0JPWCBEUkFXSU5HUyBET1dOIExJR0hUIEFORCBIT1JJWk9OVEFMIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBMSUdIVCBBTkQgSE9SSVpPTlRBTCBIRUFWWTs7OzsKKzI1MzA7Qk9YIERSQVdJTkdTIERPV04gSEVBVlkgQU5EIEhPUklaT05UQUwgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIEhFQVZZIEFORCBIT1JJWk9OVEFMIExJR0hUOzs7OworMjUzMTtCT1ggRFJBV0lOR1MgUklHSFQgTElHSFQgQU5EIExFRlQgRE9XTiBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFJJR0hUIExJR0hUIEFORCBMRUZUIERPV04gSEVBVlk7Ozs7CisyNTMyO0JPWCBEUkFXSU5HUyBMRUZUIExJR0hUIEFORCBSSUdIVCBET1dOIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBMSUdIVCBBTkQgUklHSFQgRE9XTiBIRUFWWTs7OzsKKzI1MzM7Qk9YIERSQVdJTkdTIEhFQVZZIERPV04gQU5EIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBET1dOIEFORCBIT1JJWk9OVEFMOzs7OworMjUzNDtCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBVUCBBTkQgSE9SSVpPTlRBTDs7OzsKKzI1MzU7Qk9YIERSQVdJTkdTIExFRlQgSEVBVlkgQU5EIFJJR0hUIFVQIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBIRUFWWSBBTkQgUklHSFQgVVAgTElHSFQ7Ozs7CisyNTM2O0JPWCBEUkFXSU5HUyBSSUdIVCBIRUFWWSBBTkQgTEVGVCBVUCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFJJR0hUIEhFQVZZIEFORCBMRUZUIFVQIExJR0hUOzs7OworMjUzNztCT1ggRFJBV0lOR1MgVVAgTElHSFQgQU5EIEhPUklaT05UQUwgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBMSUdIVCBBTkQgSE9SSVpPTlRBTCBIRUFWWTs7OzsKKzI1Mzg7Qk9YIERSQVdJTkdTIFVQIEhFQVZZIEFORCBIT1JJWk9OVEFMIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgVVAgSEVBVlkgQU5EIEhPUklaT05UQUwgTElHSFQ7Ozs7CisyNTM5O0JPWCBEUkFXSU5HUyBSSUdIVCBMSUdIVCBBTkQgTEVGVCBVUCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFJJR0hUIExJR0hUIEFORCBMRUZUIFVQIEhFQVZZOzs7OworMjUzQTtCT1ggRFJBV0lOR1MgTEVGVCBMSUdIVCBBTkQgUklHSFQgVVAgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBMRUZUIExJR0hUIEFORCBSSUdIVCBVUCBIRUFWWTs7OzsKKzI1M0I7Qk9YIERSQVdJTkdTIEhFQVZZIFVQIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgVVAgQU5EIEhPUklaT05UQUw7Ozs7CisyNTNDO0JPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMOzs7OworMjUzRDtCT1ggRFJBV0lOR1MgTEVGVCBIRUFWWSBBTkQgUklHSFQgVkVSVElDQUwgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMRUZUIEhFQVZZIEFORCBSSUdIVCBWRVJUSUNBTCBMSUdIVDs7OzsKKzI1M0U7Qk9YIERSQVdJTkdTIFJJR0hUIEhFQVZZIEFORCBMRUZUIFZFUlRJQ0FMIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgUklHSFQgSEVBVlkgQU5EIExFRlQgVkVSVElDQUwgTElHSFQ7Ozs7CisyNTNGO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBMSUdIVCBBTkQgSE9SSVpPTlRBTCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIExJR0hUIEFORCBIT1JJWk9OVEFMIEhFQVZZOzs7OworMjU0MDtCT1ggRFJBV0lOR1MgVVAgSEVBVlkgQU5EIERPV04gSE9SSVpPTlRBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFVQIEhFQVZZIEFORCBET1dOIEhPUklaT05UQUwgTElHSFQ7Ozs7CisyNTQxO0JPWCBEUkFXSU5HUyBET1dOIEhFQVZZIEFORCBVUCBIT1JJWk9OVEFMIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBIRUFWWSBBTkQgVVAgSE9SSVpPTlRBTCBMSUdIVDs7OzsKKzI1NDI7Qk9YIERSQVdJTkdTIFZFUlRJQ0FMIEhFQVZZIEFORCBIT1JJWk9OVEFMIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgVkVSVElDQUwgSEVBVlkgQU5EIEhPUklaT05UQUwgTElHSFQ7Ozs7CisyNTQzO0JPWCBEUkFXSU5HUyBMRUZUIFVQIEhFQVZZIEFORCBSSUdIVCBET1dOIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBVUCBIRUFWWSBBTkQgUklHSFQgRE9XTiBMSUdIVDs7OzsKKzI1NDQ7Qk9YIERSQVdJTkdTIFJJR0hUIFVQIEhFQVZZIEFORCBMRUZUIERPV04gTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBVUCBIRUFWWSBBTkQgTEVGVCBET1dOIExJR0hUOzs7OworMjU0NTtCT1ggRFJBV0lOR1MgTEVGVCBET1dOIEhFQVZZIEFORCBSSUdIVCBVUCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExFRlQgRE9XTiBIRUFWWSBBTkQgUklHSFQgVVAgTElHSFQ7Ozs7CisyNTQ2O0JPWCBEUkFXSU5HUyBSSUdIVCBET1dOIEhFQVZZIEFORCBMRUZUIFVQIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgUklHSFQgRE9XTiBIRUFWWSBBTkQgTEVGVCBVUCBMSUdIVDs7OzsKKzI1NDc7Qk9YIERSQVdJTkdTIERPV04gTElHSFQgQU5EIFVQIEhPUklaT05UQUwgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIExJR0hUIEFORCBVUCBIT1JJWk9OVEFMIEhFQVZZOzs7OworMjU0ODtCT1ggRFJBV0lOR1MgVVAgTElHSFQgQU5EIERPV04gSE9SSVpPTlRBTCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBET1dOIEhPUklaT05UQUwgSEVBVlk7Ozs7CisyNTQ5O0JPWCBEUkFXSU5HUyBSSUdIVCBMSUdIVCBBTkQgTEVGVCBWRVJUSUNBTCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFJJR0hUIExJR0hUIEFORCBMRUZUIFZFUlRJQ0FMIEhFQVZZOzs7OworMjU0QTtCT1ggRFJBV0lOR1MgTEVGVCBMSUdIVCBBTkQgUklHSFQgVkVSVElDQUwgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBMRUZUIExJR0hUIEFORCBSSUdIVCBWRVJUSUNBTCBIRUFWWTs7OzsKKzI1NEI7Qk9YIERSQVdJTkdTIEhFQVZZIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgVkVSVElDQUwgQU5EIEhPUklaT05UQUw7Ozs7CisyNTRDO0JPWCBEUkFXSU5HUyBMSUdIVCBET1VCTEUgREFTSCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgRE9VQkxFIERBU0ggSE9SSVpPTlRBTDs7OzsKKzI1NEQ7Qk9YIERSQVdJTkdTIEhFQVZZIERPVUJMRSBEQVNIIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBET1VCTEUgREFTSCBIT1JJWk9OVEFMOzs7OworMjU0RTtCT1ggRFJBV0lOR1MgTElHSFQgRE9VQkxFIERBU0ggVkVSVElDQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBET1VCTEUgREFTSCBWRVJUSUNBTDs7OzsKKzI1NEY7Qk9YIERSQVdJTkdTIEhFQVZZIERPVUJMRSBEQVNIIFZFUlRJQ0FMO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9VQkxFIERBU0ggVkVSVElDQUw7Ozs7CisyNTUwO0JPWCBEUkFXSU5HUyBET1VCTEUgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBIT1JJWk9OVEFMOzs7OworMjU1MTtCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMO1NvOzA7T047Ozs7O047Rk9STVMgRE9VQkxFIFZFUlRJQ0FMOzs7OworMjU1MjtCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEU7Ozs7CisyNTUzO0JPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRTs7OzsKKzI1NTQ7Qk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBET1dOIEFORCBSSUdIVDs7OzsKKzI1NTU7Qk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBMRUZUIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gU0lOR0xFIEFORCBMRUZUIERPVUJMRTs7OzsKKzI1NTY7Qk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBMRUZUIFNJTkdMRTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gRE9VQkxFIEFORCBMRUZUIFNJTkdMRTs7OzsKKzI1NTc7Qk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgRE9VQkxFIERPV04gQU5EIExFRlQ7Ozs7CisyNTU4O0JPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFOzs7OworMjU1OTtCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRTs7OzsKKzI1NUE7Qk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgVVAgQU5EIFJJR0hUOzs7OworMjU1QjtCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBMRUZUIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7Ozs7CisyNTVDO0JPWCBEUkFXSU5HUyBVUCBET1VCTEUgQU5EIExFRlQgU0lOR0xFO1NvOzA7T047Ozs7O047Rk9STVMgVVAgRE9VQkxFIEFORCBMRUZUIFNJTkdMRTs7OzsKKzI1NUQ7Qk9YIERSQVdJTkdTIERPVUJMRSBVUCBBTkQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBVUCBBTkQgTEVGVDs7OzsKKzI1NUU7Qk9YIERSQVdJTkdTIFZFUlRJQ0FMIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFO1NvOzA7T047Ozs7O047Rk9STVMgVkVSVElDQUwgU0lOR0xFIEFORCBSSUdIVCBET1VCTEU7Ozs7CisyNTVGO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRTtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFOzs7OworMjU2MDtCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQ7Ozs7CisyNTYxO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFO1NvOzA7T047Ozs7O047Rk9STVMgVkVSVElDQUwgU0lOR0xFIEFORCBMRUZUIERPVUJMRTs7OzsKKzI1NjI7Qk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgTEVGVCBTSU5HTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBET1VCTEUgQU5EIExFRlQgU0lOR0xFOzs7OworMjU2MztCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgRE9VQkxFIFZFUlRJQ0FMIEFORCBMRUZUOzs7OworMjU2NDtCT1ggRFJBV0lOR1MgRE9XTiBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFOzs7OworMjU2NTtCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFOzs7OworMjU2NjtCT1ggRFJBV0lOR1MgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgRE9XTiBBTkQgSE9SSVpPTlRBTDs7OzsKKzI1Njc7Qk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFOzs7OworMjU2ODtCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEU7Ozs7CisyNTY5O0JPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgVVAgQU5EIEhPUklaT05UQUw7Ozs7CisyNTZBO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFO1NvOzA7T047Ozs7O047Rk9STVMgVkVSVElDQUwgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTs7OzsKKzI1NkI7Qk9YIERSQVdJTkdTIFZFUlRJQ0FMIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFOzs7OworMjU2QztCT1ggRFJBV0lOR1MgRE9VQkxFIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgRE9VQkxFIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMOzs7OworMjU2RDtCT1ggRFJBV0lOR1MgTElHSFQgQVJDIERPV04gQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgQVJDIERPV04gQU5EIFJJR0hUOzs7OworMjU2RTtCT1ggRFJBV0lOR1MgTElHSFQgQVJDIERPV04gQU5EIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBBUkMgRE9XTiBBTkQgTEVGVDs7OzsKKzI1NkY7Qk9YIERSQVdJTkdTIExJR0hUIEFSQyBVUCBBTkQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIEFSQyBVUCBBTkQgTEVGVDs7OzsKKzI1NzA7Qk9YIERSQVdJTkdTIExJR0hUIEFSQyBVUCBBTkQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBBUkMgVVAgQU5EIFJJR0hUOzs7OworMjU3MTtCT1ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERJQUdPTkFMIFVQUEVSIFJJR0hUIFRPIExPV0VSIExFRlQ7Ozs7CisyNTcyO0JPWCBEUkFXSU5HUyBMSUdIVCBESUFHT05BTCBVUFBFUiBMRUZUIFRPIExPV0VSIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgRElBR09OQUwgVVBQRVIgTEVGVCBUTyBMT1dFUiBSSUdIVDs7OzsKKzI1NzM7Qk9YIERSQVdJTkdTIExJR0hUIERJQUdPTkFMIENST1NTO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgRElBR09OQUwgQ1JPU1M7Ozs7CisyNTc0O0JPWCBEUkFXSU5HUyBMSUdIVCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgTEVGVDs7OzsKKzI1NzU7Qk9YIERSQVdJTkdTIExJR0hUIFVQO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgVVA7Ozs7CisyNTc2O0JPWCBEUkFXSU5HUyBMSUdIVCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFJJR0hUOzs7OworMjU3NztCT1ggRFJBV0lOR1MgTElHSFQgRE9XTjtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERPV047Ozs7CisyNTc4O0JPWCBEUkFXSU5HUyBIRUFWWSBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgTEVGVDs7OzsKKzI1Nzk7Qk9YIERSQVdJTkdTIEhFQVZZIFVQO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgVVA7Ozs7CisyNTdBO0JPWCBEUkFXSU5HUyBIRUFWWSBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFJJR0hUOzs7OworMjU3QjtCT1ggRFJBV0lOR1MgSEVBVlkgRE9XTjtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIERPV047Ozs7CisyNTdDO0JPWCBEUkFXSU5HUyBMSUdIVCBMRUZUIEFORCBIRUFWWSBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIExFRlQgQU5EIEhFQVZZIFJJR0hUOzs7OworMjU3RDtCT1ggRFJBV0lOR1MgTElHSFQgVVAgQU5EIEhFQVZZIERPV047U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBVUCBBTkQgSEVBVlkgRE9XTjs7OzsKKzI1N0U7Qk9YIERSQVdJTkdTIEhFQVZZIExFRlQgQU5EIExJR0hUIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgTEVGVCBBTkQgTElHSFQgUklHSFQ7Ozs7CisyNTdGO0JPWCBEUkFXSU5HUyBIRUFWWSBVUCBBTkQgTElHSFQgRE9XTjtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFVQIEFORCBMSUdIVCBET1dOOzs7OworMjU4MDtVUFBFUiBIQUxGIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU4MTtMT1dFUiBPTkUgRUlHSFRIIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU4MjtMT1dFUiBPTkUgUVVBUlRFUiBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1ODM7TE9XRVIgVEhSRUUgRUlHSFRIUyBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1ODQ7TE9XRVIgSEFMRiBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1ODU7TE9XRVIgRklWRSBFSUdIVEhTIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU4NjtMT1dFUiBUSFJFRSBRVUFSVEVSUyBCTE9DSztTbzswO09OOzs7OztOO0xPV0VSIFRIUkVFIFFVQVJURVIgQkxPQ0s7Ozs7CisyNTg3O0xPV0VSIFNFVkVOIEVJR0hUSFMgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTg4O0ZVTEwgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTg5O0xFRlQgU0VWRU4gRUlHSFRIUyBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1OEE7TEVGVCBUSFJFRSBRVUFSVEVSUyBCTE9DSztTbzswO09OOzs7OztOO0xFRlQgVEhSRUUgUVVBUlRFUiBCTE9DSzs7OzsKKzI1OEI7TEVGVCBGSVZFIEVJR0hUSFMgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNThDO0xFRlQgSEFMRiBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1OEQ7TEVGVCBUSFJFRSBFSUdIVEhTIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU4RTtMRUZUIE9ORSBRVUFSVEVSIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU4RjtMRUZUIE9ORSBFSUdIVEggQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTkwO1JJR0hUIEhBTEYgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTkxO0xJR0hUIFNIQURFO1NvOzA7T047Ozs7O047Ozs7OworMjU5MjtNRURJVU0gU0hBREU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTkzO0RBUksgU0hBREU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTk0O1VQUEVSIE9ORSBFSUdIVEggQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTk1O1JJR0hUIE9ORSBFSUdIVEggQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUEwO0JMQUNLIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzI1QTE7V0hJVEUgU1FVQVJFO1NvOzA7T047Ozs7O047Ozs7OworMjVBMjtXSElURSBTUVVBUkUgV0lUSCBST1VOREVEIENPUk5FUlM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUEzO1dISVRFIFNRVUFSRSBDT05UQUlOSU5HIEJMQUNLIFNNQUxMIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzI1QTQ7U1FVQVJFIFdJVEggSE9SSVpPTlRBTCBGSUxMO1NvOzA7T047Ozs7O047Ozs7OworMjVBNTtTUVVBUkUgV0lUSCBWRVJUSUNBTCBGSUxMO1NvOzA7T047Ozs7O047Ozs7OworMjVBNjtTUVVBUkUgV0lUSCBPUlRIT0dPTkFMIENST1NTSEFUQ0ggRklMTDtTbzswO09OOzs7OztOOzs7OzsKKzI1QTc7U1FVQVJFIFdJVEggVVBQRVIgTEVGVCBUTyBMT1dFUiBSSUdIVCBGSUxMO1NvOzA7T047Ozs7O047Ozs7OworMjVBODtTUVVBUkUgV0lUSCBVUFBFUiBSSUdIVCBUTyBMT1dFUiBMRUZUIEZJTEw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUE5O1NRVUFSRSBXSVRIIERJQUdPTkFMIENST1NTSEFUQ0ggRklMTDtTbzswO09OOzs7OztOOzs7OzsKKzI1QUE7QkxBQ0sgU01BTEwgU1FVQVJFO1NvOzA7T047Ozs7O047Ozs7OworMjVBQjtXSElURSBTTUFMTCBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUFDO0JMQUNLIFJFQ1RBTkdMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1QUQ7V0hJVEUgUkVDVEFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVBRTtCTEFDSyBWRVJUSUNBTCBSRUNUQU5HTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUFGO1dISVRFIFZFUlRJQ0FMIFJFQ1RBTkdMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1QjA7QkxBQ0sgUEFSQUxMRUxPR1JBTTtTbzswO09OOzs7OztOOzs7OzsKKzI1QjE7V0hJVEUgUEFSQUxMRUxPR1JBTTtTbzswO09OOzs7OztOOzs7OzsKKzI1QjI7QkxBQ0sgVVAtUE9JTlRJTkcgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtCTEFDSyBVUCBQT0lOVElORyBUUklBTkdMRTs7OzsKKzI1QjM7V0hJVEUgVVAtUE9JTlRJTkcgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtXSElURSBVUCBQT0lOVElORyBUUklBTkdMRTs7OzsKKzI1QjQ7QkxBQ0sgVVAtUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtCTEFDSyBVUCBQT0lOVElORyBTTUFMTCBUUklBTkdMRTs7OzsKKzI1QjU7V0hJVEUgVVAtUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtXSElURSBVUCBQT0lOVElORyBTTUFMTCBUUklBTkdMRTs7OzsKKzI1QjY7QkxBQ0sgUklHSFQtUE9JTlRJTkcgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtCTEFDSyBSSUdIVCBQT0lOVElORyBUUklBTkdMRTs7OzsKKzI1Qjc7V0hJVEUgUklHSFQtUE9JTlRJTkcgVFJJQU5HTEU7U207MDtPTjs7Ozs7TjtXSElURSBSSUdIVCBQT0lOVElORyBUUklBTkdMRTs7OzsKKzI1Qjg7QkxBQ0sgUklHSFQtUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtCTEFDSyBSSUdIVCBQT0lOVElORyBTTUFMTCBUUklBTkdMRTs7OzsKKzI1Qjk7V0hJVEUgUklHSFQtUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtXSElURSBSSUdIVCBQT0lOVElORyBTTUFMTCBUUklBTkdMRTs7OzsKKzI1QkE7QkxBQ0sgUklHSFQtUE9JTlRJTkcgUE9JTlRFUjtTbzswO09OOzs7OztOO0JMQUNLIFJJR0hUIFBPSU5USU5HIFBPSU5URVI7Ozs7CisyNUJCO1dISVRFIFJJR0hULVBPSU5USU5HIFBPSU5URVI7U287MDtPTjs7Ozs7TjtXSElURSBSSUdIVCBQT0lOVElORyBQT0lOVEVSOzs7OworMjVCQztCTEFDSyBET1dOLVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgRE9XTiBQT0lOVElORyBUUklBTkdMRTs7OzsKKzI1QkQ7V0hJVEUgRE9XTi1QT0lOVElORyBUUklBTkdMRTtTbzswO09OOzs7OztOO1dISVRFIERPV04gUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUJFO0JMQUNLIERPV04tUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtCTEFDSyBET1dOIFBPSU5USU5HIFNNQUxMIFRSSUFOR0xFOzs7OworMjVCRjtXSElURSBET1dOLVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgRE9XTiBQT0lOVElORyBTTUFMTCBUUklBTkdMRTs7OzsKKzI1QzA7QkxBQ0sgTEVGVC1QT0lOVElORyBUUklBTkdMRTtTbzswO09OOzs7OztOO0JMQUNLIExFRlQgUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUMxO1dISVRFIExFRlQtUE9JTlRJTkcgVFJJQU5HTEU7U207MDtPTjs7Ozs7TjtXSElURSBMRUZUIFBPSU5USU5HIFRSSUFOR0xFOzs7OworMjVDMjtCTEFDSyBMRUZULVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgTEVGVCBQT0lOVElORyBTTUFMTCBUUklBTkdMRTs7OzsKKzI1QzM7V0hJVEUgTEVGVC1QT0lOVElORyBTTUFMTCBUUklBTkdMRTtTbzswO09OOzs7OztOO1dISVRFIExFRlQgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUM0O0JMQUNLIExFRlQtUE9JTlRJTkcgUE9JTlRFUjtTbzswO09OOzs7OztOO0JMQUNLIExFRlQgUE9JTlRJTkcgUE9JTlRFUjs7OzsKKzI1QzU7V0hJVEUgTEVGVC1QT0lOVElORyBQT0lOVEVSO1NvOzA7T047Ozs7O047V0hJVEUgTEVGVCBQT0lOVElORyBQT0lOVEVSOzs7OworMjVDNjtCTEFDSyBESUFNT05EO1NvOzA7T047Ozs7O047Ozs7OworMjVDNztXSElURSBESUFNT05EO1NvOzA7T047Ozs7O047Ozs7OworMjVDODtXSElURSBESUFNT05EIENPTlRBSU5JTkcgQkxBQ0sgU01BTEwgRElBTU9ORDtTbzswO09OOzs7OztOOzs7OzsKKzI1Qzk7RklTSEVZRTtTbzswO09OOzs7OztOOzs7OzsKKzI1Q0E7TE9aRU5HRTtTbzswO09OOzs7OztOOzs7OzsKKzI1Q0I7V0hJVEUgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVDQztET1RURUQgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVDRDtDSVJDTEUgV0lUSCBWRVJUSUNBTCBGSUxMO1NvOzA7T047Ozs7O047Ozs7OworMjVDRTtCVUxMU0VZRTtTbzswO09OOzs7OztOOzs7OzsKKzI1Q0Y7QkxBQ0sgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVEMDtDSVJDTEUgV0lUSCBMRUZUIEhBTEYgQkxBQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUQxO0NJUkNMRSBXSVRIIFJJR0hUIEhBTEYgQkxBQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUQyO0NJUkNMRSBXSVRIIExPV0VSIEhBTEYgQkxBQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUQzO0NJUkNMRSBXSVRIIFVQUEVSIEhBTEYgQkxBQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUQ0O0NJUkNMRSBXSVRIIFVQUEVSIFJJR0hUIFFVQURSQU5UIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVENTtDSVJDTEUgV0lUSCBBTEwgQlVUIFVQUEVSIExFRlQgUVVBRFJBTlQgQkxBQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUQ2O0xFRlQgSEFMRiBCTEFDSyBDSVJDTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUQ3O1JJR0hUIEhBTEYgQkxBQ0sgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVEODtJTlZFUlNFIEJVTExFVDtTbzswO09OOzs7OztOOzs7OzsKKzI1RDk7SU5WRVJTRSBXSElURSBDSVJDTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNURBO1VQUEVSIEhBTEYgSU5WRVJTRSBXSElURSBDSVJDTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNURCO0xPV0VSIEhBTEYgSU5WRVJTRSBXSElURSBDSVJDTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNURDO1VQUEVSIExFRlQgUVVBRFJBTlQgQ0lSQ1VMQVIgQVJDO1NvOzA7T047Ozs7O047Ozs7OworMjVERDtVUFBFUiBSSUdIVCBRVUFEUkFOVCBDSVJDVUxBUiBBUkM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNURFO0xPV0VSIFJJR0hUIFFVQURSQU5UIENJUkNVTEFSIEFSQztTbzswO09OOzs7OztOOzs7OzsKKzI1REY7TE9XRVIgTEVGVCBRVUFEUkFOVCBDSVJDVUxBUiBBUkM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUUwO1VQUEVSIEhBTEYgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVFMTtMT1dFUiBIQUxGIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RTI7QkxBQ0sgTE9XRVIgUklHSFQgVFJJQU5HTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUUzO0JMQUNLIExPV0VSIExFRlQgVFJJQU5HTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUU0O0JMQUNLIFVQUEVSIExFRlQgVFJJQU5HTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUU1O0JMQUNLIFVQUEVSIFJJR0hUIFRSSUFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVFNjtXSElURSBCVUxMRVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUU3O1NRVUFSRSBXSVRIIExFRlQgSEFMRiBCTEFDSztTbzswO09OOzs7OztOOzs7OzsKKzI1RTg7U1FVQVJFIFdJVEggUklHSFQgSEFMRiBCTEFDSztTbzswO09OOzs7OztOOzs7OzsKKzI1RTk7U1FVQVJFIFdJVEggVVBQRVIgTEVGVCBESUFHT05BTCBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVFQTtTUVVBUkUgV0lUSCBMT1dFUiBSSUdIVCBESUFHT05BTCBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVFQjtXSElURSBTUVVBUkUgV0lUSCBWRVJUSUNBTCBCSVNFQ1RJTkcgTElORTtTbzswO09OOzs7OztOOzs7OzsKKzI1RUM7V0hJVEUgVVAtUE9JTlRJTkcgVFJJQU5HTEUgV0lUSCBET1Q7U287MDtPTjs7Ozs7TjtXSElURSBVUCBQT0lOVElORyBUUklBTkdMRSBXSVRIIERPVDs7OzsKKzI1RUQ7VVAtUE9JTlRJTkcgVFJJQU5HTEUgV0lUSCBMRUZUIEhBTEYgQkxBQ0s7U287MDtPTjs7Ozs7TjtVUCBQT0lOVElORyBUUklBTkdMRSBXSVRIIExFRlQgSEFMRiBCTEFDSzs7OzsKKzI1RUU7VVAtUE9JTlRJTkcgVFJJQU5HTEUgV0lUSCBSSUdIVCBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047VVAgUE9JTlRJTkcgVFJJQU5HTEUgV0lUSCBSSUdIVCBIQUxGIEJMQUNLOzs7OworMjVFRjtMQVJHRSBDSVJDTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUYwO1dISVRFIFNRVUFSRSBXSVRIIFVQUEVSIExFRlQgUVVBRFJBTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUYxO1dISVRFIFNRVUFSRSBXSVRIIExPV0VSIExFRlQgUVVBRFJBTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUYyO1dISVRFIFNRVUFSRSBXSVRIIExPV0VSIFJJR0hUIFFVQURSQU5UO1NvOzA7T047Ozs7O047Ozs7OworMjVGMztXSElURSBTUVVBUkUgV0lUSCBVUFBFUiBSSUdIVCBRVUFEUkFOVDtTbzswO09OOzs7OztOOzs7OzsKKzI1RjQ7V0hJVEUgQ0lSQ0xFIFdJVEggVVBQRVIgTEVGVCBRVUFEUkFOVDtTbzswO09OOzs7OztOOzs7OzsKKzI1RjU7V0hJVEUgQ0lSQ0xFIFdJVEggTE9XRVIgTEVGVCBRVUFEUkFOVDtTbzswO09OOzs7OztOOzs7OzsKKzI1RjY7V0hJVEUgQ0lSQ0xFIFdJVEggTE9XRVIgUklHSFQgUVVBRFJBTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUY3O1dISVRFIENJUkNMRSBXSVRIIFVQUEVSIFJJR0hUIFFVQURSQU5UO1NvOzA7T047Ozs7O047Ozs7OworMjYwMDtCTEFDSyBTVU4gV0lUSCBSQVlTO1NvOzA7T047Ozs7O047Ozs7OworMjYwMTtDTE9VRDtTbzswO09OOzs7OztOOzs7OzsKKzI2MDI7VU1CUkVMTEE7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjAzO1NOT1dNQU47U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjA0O0NPTUVUO1NvOzA7T047Ozs7O047Ozs7OworMjYwNTtCTEFDSyBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjYwNjtXSElURSBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjYwNztMSUdIVE5JTkc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjA4O1RIVU5ERVJTVE9STTtTbzswO09OOzs7OztOOzs7OzsKKzI2MDk7U1VOO1NvOzA7T047Ozs7O047Ozs7OworMjYwQTtBU0NFTkRJTkcgTk9ERTtTbzswO09OOzs7OztOOzs7OzsKKzI2MEI7REVTQ0VORElORyBOT0RFO1NvOzA7T047Ozs7O047Ozs7OworMjYwQztDT05KVU5DVElPTjtTbzswO09OOzs7OztOOzs7OzsKKzI2MEQ7T1BQT1NJVElPTjtTbzswO09OOzs7OztOOzs7OzsKKzI2MEU7QkxBQ0sgVEVMRVBIT05FO1NvOzA7T047Ozs7O047Ozs7OworMjYwRjtXSElURSBURUxFUEhPTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjEwO0JBTExPVCBCT1g7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjExO0JBTExPVCBCT1ggV0lUSCBDSEVDSztTbzswO09OOzs7OztOOzs7OzsKKzI2MTI7QkFMTE9UIEJPWCBXSVRIIFg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjEzO1NBTFRJUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjE5O1JFVkVSU0VEIFJPVEFURUQgRkxPUkFMIEhFQVJUIEJVTExFVDtTbzswO09OOzs7OztOOzs7OzsKKzI2MUE7QkxBQ0sgTEVGVCBQT0lOVElORyBJTkRFWDtTbzswO09OOzs7OztOOzs7OzsKKzI2MUI7QkxBQ0sgUklHSFQgUE9JTlRJTkcgSU5ERVg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjFDO1dISVRFIExFRlQgUE9JTlRJTkcgSU5ERVg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjFEO1dISVRFIFVQIFBPSU5USU5HIElOREVYO1NvOzA7T047Ozs7O047Ozs7OworMjYxRTtXSElURSBSSUdIVCBQT0lOVElORyBJTkRFWDtTbzswO09OOzs7OztOOzs7OzsKKzI2MUY7V0hJVEUgRE9XTiBQT0lOVElORyBJTkRFWDtTbzswO09OOzs7OztOOzs7OzsKKzI2MjA7U0tVTEwgQU5EIENST1NTQk9ORVM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjIxO0NBVVRJT04gU0lHTjtTbzswO09OOzs7OztOOzs7OzsKKzI2MjI7UkFESU9BQ1RJVkUgU0lHTjtTbzswO09OOzs7OztOOzs7OzsKKzI2MjM7QklPSEFaQVJEIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjI0O0NBRFVDRVVTO1NvOzA7T047Ozs7O047Ozs7OworMjYyNTtBTktIO1NvOzA7T047Ozs7O047Ozs7OworMjYyNjtPUlRIT0RPWCBDUk9TUztTbzswO09OOzs7OztOOzs7OzsKKzI2Mjc7Q0hJIFJITztTbzswO09OOzs7OztOOzs7OzsKKzI2Mjg7Q1JPU1MgT0YgTE9SUkFJTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjI5O0NST1NTIE9GIEpFUlVTQUxFTTtTbzswO09OOzs7OztOOzs7OzsKKzI2MkE7U1RBUiBBTkQgQ1JFU0NFTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjJCO0ZBUlNJIFNZTUJPTDtTbzswO09OOzs7OztOO1NZTUJPTCBPRiBJUkFOOzs7OworMjYyQztBREkgU0hBS1RJO1NvOzA7T047Ozs7O047Ozs7OworMjYyRDtIQU1NRVIgQU5EIFNJQ0tMRTtTbzswO09OOzs7OztOOzs7OzsKKzI2MkU7UEVBQ0UgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjYyRjtZSU4gWUFORztTbzswO09OOzs7OztOOzs7OzsKKzI2MzA7VFJJR1JBTSBGT1IgSEVBVkVOO1NvOzA7T047Ozs7O047Ozs7OworMjYzMTtUUklHUkFNIEZPUiBMQUtFO1NvOzA7T047Ozs7O047Ozs7OworMjYzMjtUUklHUkFNIEZPUiBGSVJFO1NvOzA7T047Ozs7O047Ozs7OworMjYzMztUUklHUkFNIEZPUiBUSFVOREVSO1NvOzA7T047Ozs7O047Ozs7OworMjYzNDtUUklHUkFNIEZPUiBXSU5EO1NvOzA7T047Ozs7O047Ozs7OworMjYzNTtUUklHUkFNIEZPUiBXQVRFUjtTbzswO09OOzs7OztOOzs7OzsKKzI2MzY7VFJJR1JBTSBGT1IgTU9VTlRBSU47U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjM3O1RSSUdSQU0gRk9SIEVBUlRIO1NvOzA7T047Ozs7O047Ozs7OworMjYzODtXSEVFTCBPRiBESEFSTUE7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjM5O1dISVRFIEZST1dOSU5HIEZBQ0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjNBO1dISVRFIFNNSUxJTkcgRkFDRTtTbzswO09OOzs7OztOOzs7OzsKKzI2M0I7QkxBQ0sgU01JTElORyBGQUNFO1NvOzA7T047Ozs7O047Ozs7OworMjYzQztXSElURSBTVU4gV0lUSCBSQVlTO1NvOzA7T047Ozs7O047Ozs7OworMjYzRDtGSVJTVCBRVUFSVEVSIE1PT047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjNFO0xBU1QgUVVBUlRFUiBNT09OO1NvOzA7T047Ozs7O047Ozs7OworMjYzRjtNRVJDVVJZO1NvOzA7T047Ozs7O047Ozs7OworMjY0MDtGRU1BTEUgU0lHTjtTbzswO09OOzs7OztOOzs7OzsKKzI2NDE7RUFSVEg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQyO01BTEUgU0lHTjtTbzswO09OOzs7OztOOzs7OzsKKzI2NDM7SlVQSVRFUjtTbzswO09OOzs7OztOOzs7OzsKKzI2NDQ7U0FUVVJOO1NvOzA7T047Ozs7O047Ozs7OworMjY0NTtVUkFOVVM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQ2O05FUFRVTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQ3O1BMVVRPO1NvOzA7T047Ozs7O047Ozs7OworMjY0ODtBUklFUztTbzswO09OOzs7OztOOzs7OzsKKzI2NDk7VEFVUlVTO1NvOzA7T047Ozs7O047Ozs7OworMjY0QTtHRU1JTkk7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjRCO0NBTkNFUjtTbzswO09OOzs7OztOOzs7OzsKKzI2NEM7TEVPO1NvOzA7T047Ozs7O047Ozs7OworMjY0RDtWSVJHTztTbzswO09OOzs7OztOOzs7OzsKKzI2NEU7TElCUkE7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjRGO1NDT1JQSVVTO1NvOzA7T047Ozs7O047Ozs7OworMjY1MDtTQUdJVFRBUklVUztTbzswO09OOzs7OztOOzs7OzsKKzI2NTE7Q0FQUklDT1JOO1NvOzA7T047Ozs7O047Ozs7OworMjY1MjtBUVVBUklVUztTbzswO09OOzs7OztOOzs7OzsKKzI2NTM7UElTQ0VTO1NvOzA7T047Ozs7O047Ozs7OworMjY1NDtXSElURSBDSEVTUyBLSU5HO1NvOzA7T047Ozs7O047Ozs7OworMjY1NTtXSElURSBDSEVTUyBRVUVFTjtTbzswO09OOzs7OztOOzs7OzsKKzI2NTY7V0hJVEUgQ0hFU1MgUk9PSztTbzswO09OOzs7OztOOzs7OzsKKzI2NTc7V0hJVEUgQ0hFU1MgQklTSE9QO1NvOzA7T047Ozs7O047Ozs7OworMjY1ODtXSElURSBDSEVTUyBLTklHSFQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjU5O1dISVRFIENIRVNTIFBBV047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjVBO0JMQUNLIENIRVNTIEtJTkc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjVCO0JMQUNLIENIRVNTIFFVRUVOO1NvOzA7T047Ozs7O047Ozs7OworMjY1QztCTEFDSyBDSEVTUyBST09LO1NvOzA7T047Ozs7O047Ozs7OworMjY1RDtCTEFDSyBDSEVTUyBCSVNIT1A7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjVFO0JMQUNLIENIRVNTIEtOSUdIVDtTbzswO09OOzs7OztOOzs7OzsKKzI2NUY7QkxBQ0sgQ0hFU1MgUEFXTjtTbzswO09OOzs7OztOOzs7OzsKKzI2NjA7QkxBQ0sgU1BBREUgU1VJVDtTbzswO09OOzs7OztOOzs7OzsKKzI2NjE7V0hJVEUgSEVBUlQgU1VJVDtTbzswO09OOzs7OztOOzs7OzsKKzI2NjI7V0hJVEUgRElBTU9ORCBTVUlUO1NvOzA7T047Ozs7O047Ozs7OworMjY2MztCTEFDSyBDTFVCIFNVSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjY0O1dISVRFIFNQQURFIFNVSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjY1O0JMQUNLIEhFQVJUIFNVSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjY2O0JMQUNLIERJQU1PTkQgU1VJVDtTbzswO09OOzs7OztOOzs7OzsKKzI2Njc7V0hJVEUgQ0xVQiBTVUlUO1NvOzA7T047Ozs7O047Ozs7OworMjY2ODtIT1QgU1BSSU5HUztTbzswO09OOzs7OztOOzs7OzsKKzI2Njk7UVVBUlRFUiBOT1RFO1NvOzA7T047Ozs7O047Ozs7OworMjY2QTtFSUdIVEggTk9URTtTbzswO09OOzs7OztOOzs7OzsKKzI2NkI7QkVBTUVEIEVJR0hUSCBOT1RFUztTbzswO09OOzs7OztOO0JBUlJFRCBFSUdIVEggTk9URVM7Ozs7CisyNjZDO0JFQU1FRCBTSVhURUVOVEggTk9URVM7U287MDtPTjs7Ozs7TjtCQVJSRUQgU0lYVEVFTlRIIE5PVEVTOzs7OworMjY2RDtNVVNJQyBGTEFUIFNJR047U287MDtPTjs7Ozs7TjtGTEFUOzs7OworMjY2RTtNVVNJQyBOQVRVUkFMIFNJR047U287MDtPTjs7Ozs7TjtOQVRVUkFMOzs7OworMjY2RjtNVVNJQyBTSEFSUCBTSUdOO1NtOzA7T047Ozs7O047U0hBUlA7Ozs7CisyNjcwO1dFU1QgU1lSSUFDIENST1NTO1NvOzA7T047Ozs7O047Ozs7OworMjY3MTtFQVNUIFNZUklBQyBDUk9TUztTbzswO09OOzs7OztOOzs7OzsKKzI3MDE7VVBQRVIgQkxBREUgU0NJU1NPUlM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzAyO0JMQUNLIFNDSVNTT1JTO1NvOzA7T047Ozs7O047Ozs7OworMjcwMztMT1dFUiBCTEFERSBTQ0lTU09SUztTbzswO09OOzs7OztOOzs7OzsKKzI3MDQ7V0hJVEUgU0NJU1NPUlM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzA2O1RFTEVQSE9ORSBMT0NBVElPTiBTSUdOO1NvOzA7T047Ozs7O047Ozs7OworMjcwNztUQVBFIERSSVZFO1NvOzA7T047Ozs7O047Ozs7OworMjcwODtBSVJQTEFORTtTbzswO09OOzs7OztOOzs7OzsKKzI3MDk7RU5WRUxPUEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzBDO1ZJQ1RPUlkgSEFORDtTbzswO09OOzs7OztOOzs7OzsKKzI3MEQ7V1JJVElORyBIQU5EO1NvOzA7T047Ozs7O047Ozs7OworMjcwRTtMT1dFUiBSSUdIVCBQRU5DSUw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzBGO1BFTkNJTDtTbzswO09OOzs7OztOOzs7OzsKKzI3MTA7VVBQRVIgUklHSFQgUEVOQ0lMO1NvOzA7T047Ozs7O047Ozs7OworMjcxMTtXSElURSBOSUI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzEyO0JMQUNLIE5JQjtTbzswO09OOzs7OztOOzs7OzsKKzI3MTM7Q0hFQ0sgTUFSSztTbzswO09OOzs7OztOOzs7OzsKKzI3MTQ7SEVBVlkgQ0hFQ0sgTUFSSztTbzswO09OOzs7OztOOzs7OzsKKzI3MTU7TVVMVElQTElDQVRJT04gWDtTbzswO09OOzs7OztOOzs7OzsKKzI3MTY7SEVBVlkgTVVMVElQTElDQVRJT04gWDtTbzswO09OOzs7OztOOzs7OzsKKzI3MTc7QkFMTE9UIFg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzE4O0hFQVZZIEJBTExPVCBYO1NvOzA7T047Ozs7O047Ozs7OworMjcxOTtPVVRMSU5FRCBHUkVFSyBDUk9TUztTbzswO09OOzs7OztOOzs7OzsKKzI3MUE7SEVBVlkgR1JFRUsgQ1JPU1M7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzFCO09QRU4gQ0VOVFJFIENST1NTO1NvOzA7T047Ozs7O047T1BFTiBDRU5URVIgQ1JPU1M7Ozs7CisyNzFDO0hFQVZZIE9QRU4gQ0VOVFJFIENST1NTO1NvOzA7T047Ozs7O047SEVBVlkgT1BFTiBDRU5URVIgQ1JPU1M7Ozs7CisyNzFEO0xBVElOIENST1NTO1NvOzA7T047Ozs7O047Ozs7OworMjcxRTtTSEFET1dFRCBXSElURSBMQVRJTiBDUk9TUztTbzswO09OOzs7OztOOzs7OzsKKzI3MUY7T1VUTElORUQgTEFUSU4gQ1JPU1M7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzIwO01BTFRFU0UgQ1JPU1M7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzIxO1NUQVIgT0YgREFWSUQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzIyO0ZPVVIgVEVBUkRST1AtU1BPS0VEIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjcyMztGT1VSIEJBTExPT04tU1BPS0VEIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjcyNDtIRUFWWSBGT1VSIEJBTExPT04tU1BPS0VEIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjcyNTtGT1VSIENMVUItU1BPS0VEIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjcyNjtCTEFDSyBGT1VSIFBPSU5URUQgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3Mjc7V0hJVEUgRk9VUiBQT0lOVEVEIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzI5O1NUUkVTUyBPVVRMSU5FRCBXSElURSBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjcyQTtDSVJDTEVEIFdISVRFIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzJCO09QRU4gQ0VOVFJFIEJMQUNLIFNUQVI7U287MDtPTjs7Ozs7TjtPUEVOIENFTlRFUiBCTEFDSyBTVEFSOzs7OworMjcyQztCTEFDSyBDRU5UUkUgV0hJVEUgU1RBUjtTbzswO09OOzs7OztOO0JMQUNLIENFTlRFUiBXSElURSBTVEFSOzs7OworMjcyRDtPVVRMSU5FRCBCTEFDSyBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjcyRTtIRUFWWSBPVVRMSU5FRCBCTEFDSyBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjcyRjtQSU5XSEVFTCBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjczMDtTSEFET1dFRCBXSElURSBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjczMTtIRUFWWSBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3MzI7T1BFTiBDRU5UUkUgQVNURVJJU0s7U287MDtPTjs7Ozs7TjtPUEVOIENFTlRFUiBBU1RFUklTSzs7OzsKKzI3MzM7RUlHSFQgU1BPS0VEIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjczNDtFSUdIVCBQT0lOVEVEIEJMQUNLIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzM1O0VJR0hUIFBPSU5URUQgUElOV0hFRUwgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3MzY7U0lYIFBPSU5URUQgQkxBQ0sgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3Mzc7RUlHSFQgUE9JTlRFRCBSRUNUSUxJTkVBUiBCTEFDSyBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjczODtIRUFWWSBFSUdIVCBQT0lOVEVEIFJFQ1RJTElORUFSIEJMQUNLIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzM5O1RXRUxWRSBQT0lOVEVEIEJMQUNLIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzNBO1NJWFRFRU4gUE9JTlRFRCBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3M0I7VEVBUkRST1AtU1BPS0VEIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjczQztPUEVOIENFTlRSRSBURUFSRFJPUC1TUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7TjtPUEVOIENFTlRFUiBURUFSRFJPUC1TUE9LRUQgQVNURVJJU0s7Ozs7CisyNzNEO0hFQVZZIFRFQVJEUk9QLVNQT0tFRCBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3M0U7U0lYIFBFVEFMTEVEIEJMQUNLIEFORCBXSElURSBGTE9SRVRURTtTbzswO09OOzs7OztOOzs7OzsKKzI3M0Y7QkxBQ0sgRkxPUkVUVEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzQwO1dISVRFIEZMT1JFVFRFO1NvOzA7T047Ozs7O047Ozs7OworMjc0MTtFSUdIVCBQRVRBTExFRCBPVVRMSU5FRCBCTEFDSyBGTE9SRVRURTtTbzswO09OOzs7OztOOzs7OzsKKzI3NDI7Q0lSQ0xFRCBPUEVOIENFTlRSRSBFSUdIVCBQT0lOVEVEIFNUQVI7U287MDtPTjs7Ozs7TjtDSVJDTEVEIE9QRU4gQ0VOVEVSIEVJR0hUIFBPSU5URUQgU1RBUjs7OzsKKzI3NDM7SEVBVlkgVEVBUkRST1AtU1BPS0VEIFBJTldIRUVMIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjc0NDtTTk9XRkxBS0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzQ1O1RJR0hUIFRSSUZPTElBVEUgU05PV0ZMQUtFO1NvOzA7T047Ozs7O047Ozs7OworMjc0NjtIRUFWWSBDSEVWUk9OIFNOT1dGTEFLRTtTbzswO09OOzs7OztOOzs7OzsKKzI3NDc7U1BBUktMRTtTbzswO09OOzs7OztOOzs7OzsKKzI3NDg7SEVBVlkgU1BBUktMRTtTbzswO09OOzs7OztOOzs7OzsKKzI3NDk7QkFMTE9PTi1TUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzRBO0VJR0hUIFRFQVJEUk9QLVNQT0tFRCBQUk9QRUxMRVIgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzRCO0hFQVZZIEVJR0hUIFRFQVJEUk9QLVNQT0tFRCBQUk9QRUxMRVIgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzREO1NIQURPV0VEIFdISVRFIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI3NEY7TE9XRVIgUklHSFQgRFJPUC1TSEFET1dFRCBXSElURSBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzUwO1VQUEVSIFJJR0hUIERST1AtU0hBRE9XRUQgV0hJVEUgU1FVQVJFO1NvOzA7T047Ozs7O047Ozs7OworMjc1MTtMT1dFUiBSSUdIVCBTSEFET1dFRCBXSElURSBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzUyO1VQUEVSIFJJR0hUIFNIQURPV0VEIFdISVRFIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzI3NTY7QkxBQ0sgRElBTU9ORCBNSU5VUyBXSElURSBYO1NvOzA7T047Ozs7O047Ozs7OworMjc1ODtMSUdIVCBWRVJUSUNBTCBCQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzU5O01FRElVTSBWRVJUSUNBTCBCQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzVBO0hFQVZZIFZFUlRJQ0FMIEJBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3NUI7SEVBVlkgU0lOR0xFIFRVUk5FRCBDT01NQSBRVU9UQVRJT04gTUFSSyBPUk5BTUVOVDtTbzswO09OOzs7OztOOzs7OzsKKzI3NUM7SEVBVlkgU0lOR0xFIENPTU1BIFFVT1RBVElPTiBNQVJLIE9STkFNRU5UO1NvOzA7T047Ozs7O047Ozs7OworMjc1RDtIRUFWWSBET1VCTEUgVFVSTkVEIENPTU1BIFFVT1RBVElPTiBNQVJLIE9STkFNRU5UO1NvOzA7T047Ozs7O047Ozs7OworMjc1RTtIRUFWWSBET1VCTEUgQ09NTUEgUVVPVEFUSU9OIE1BUksgT1JOQU1FTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzYxO0NVUlZFRCBTVEVNIFBBUkFHUkFQSCBTSUdOIE9STkFNRU5UO1NvOzA7T047Ozs7O047Ozs7OworMjc2MjtIRUFWWSBFWENMQU1BVElPTiBNQVJLIE9STkFNRU5UO1NvOzA7T047Ozs7O047Ozs7OworMjc2MztIRUFWWSBIRUFSVCBFWENMQU1BVElPTiBNQVJLIE9STkFNRU5UO1NvOzA7T047Ozs7O047Ozs7OworMjc2NDtIRUFWWSBCTEFDSyBIRUFSVDtTbzswO09OOzs7OztOOzs7OzsKKzI3NjU7Uk9UQVRFRCBIRUFWWSBCTEFDSyBIRUFSVCBCVUxMRVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzY2O0ZMT1JBTCBIRUFSVDtTbzswO09OOzs7OztOOzs7OzsKKzI3Njc7Uk9UQVRFRCBGTE9SQUwgSEVBUlQgQlVMTEVUO1NvOzA7T047Ozs7O047Ozs7OworMjc3NjtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgRElHSVQgT05FO05vOzA7T047OzsxOzE7TjtJTlZFUlNFIENJUkNMRUQgRElHSVQgT05FOzs7OworMjc3NztESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgRElHSVQgVFdPO05vOzA7T047OzsyOzI7TjtJTlZFUlNFIENJUkNMRUQgRElHSVQgVFdPOzs7OworMjc3ODtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgRElHSVQgVEhSRUU7Tm87MDtPTjs7OzM7MztOO0lOVkVSU0UgQ0lSQ0xFRCBESUdJVCBUSFJFRTs7OzsKKzI3Nzk7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIERJR0lUIEZPVVI7Tm87MDtPTjs7OzQ7NDtOO0lOVkVSU0UgQ0lSQ0xFRCBESUdJVCBGT1VSOzs7OworMjc3QTtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgRElHSVQgRklWRTtObzswO09OOzs7NTs1O047SU5WRVJTRSBDSVJDTEVEIERJR0lUIEZJVkU7Ozs7CisyNzdCO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBTSVg7Tm87MDtPTjs7OzY7NjtOO0lOVkVSU0UgQ0lSQ0xFRCBESUdJVCBTSVg7Ozs7CisyNzdDO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBTRVZFTjtObzswO09OOzs7Nzs3O047SU5WRVJTRSBDSVJDTEVEIERJR0lUIFNFVkVOOzs7OworMjc3RDtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgRElHSVQgRUlHSFQ7Tm87MDtPTjs7Ozg7ODtOO0lOVkVSU0UgQ0lSQ0xFRCBESUdJVCBFSUdIVDs7OzsKKzI3N0U7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIERJR0lUIE5JTkU7Tm87MDtPTjs7Ozk7OTtOO0lOVkVSU0UgQ0lSQ0xFRCBESUdJVCBOSU5FOzs7OworMjc3RjtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgTlVNQkVSIFRFTjtObzswO09OOzs7OzEwO047SU5WRVJTRSBDSVJDTEVEIE5VTUJFUiBURU47Ozs7CisyNzgwO0RJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIE9ORTtObzswO09OOzs7MTsxO047Q0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIE9ORTs7OzsKKzI3ODE7RElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgVFdPO05vOzA7T047OzsyOzI7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgVFdPOzs7OworMjc4MjtESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBUSFJFRTtObzswO09OOzs7MzszO047Q0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFRIUkVFOzs7OworMjc4MztESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGT1VSO05vOzA7T047Ozs0OzQ7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRk9VUjs7OzsKKzI3ODQ7RElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRklWRTtObzswO09OOzs7NTs1O047Q0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEZJVkU7Ozs7CisyNzg1O0RJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFNJWDtObzswO09OOzs7Njs2O047Q0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFNJWDs7OzsKKzI3ODY7RElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgU0VWRU47Tm87MDtPTjs7Ozc7NztOO0NJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBTRVZFTjs7OzsKKzI3ODc7RElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRUlHSFQ7Tm87MDtPTjs7Ozg7ODtOO0NJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBFSUdIVDs7OzsKKzI3ODg7RElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgTklORTtObzswO09OOzs7OTs5O047Q0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIE5JTkU7Ozs7CisyNzg5O0RJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIE5VTUJFUiBURU47Tm87MDtPTjs7OzsxMDtOO0NJUkNMRUQgU0FOUy1TRVJJRiBOVU1CRVIgVEVOOzs7OworMjc4QTtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBPTkU7Tm87MDtPTjs7OzE7MTtOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIE9ORTs7OzsKKzI3OEI7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgVFdPO05vOzA7T047OzsyOzI7TjtJTlZFUlNFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBUV087Ozs7CisyNzhDO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFRIUkVFO05vOzA7T047OzszOzM7TjtJTlZFUlNFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBUSFJFRTs7OzsKKzI3OEQ7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRk9VUjtObzswO09OOzs7NDs0O047SU5WRVJTRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRk9VUjs7OzsKKzI3OEU7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRklWRTtObzswO09OOzs7NTs1O047SU5WRVJTRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRklWRTs7OzsKKzI3OEY7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgU0lYO05vOzA7T047Ozs2OzY7TjtJTlZFUlNFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBTSVg7Ozs7CisyNzkwO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFNFVkVOO05vOzA7T047Ozs3Ozc7TjtJTlZFUlNFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBTRVZFTjs7OzsKKzI3OTE7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRUlHSFQ7Tm87MDtPTjs7Ozg7ODtOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEVJR0hUOzs7OworMjc5MjtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBOSU5FO05vOzA7T047Ozs5Ozk7TjtJTlZFUlNFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBOSU5FOzs7OworMjc5MztESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBOVU1CRVIgVEVOO05vOzA7T047Ozs7MTA7TjtJTlZFUlNFIENJUkNMRUQgU0FOUy1TRVJJRiBOVU1CRVIgVEVOOzs7OworMjc5NDtIRUFWWSBXSURFLUhFQURFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgV0lERS1IRUFERUQgUklHSFQgQVJST1c7Ozs7CisyNzk4O0hFQVZZIFNPVVRIIEVBU1QgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBMT1dFUiBSSUdIVCBBUlJPVzs7OzsKKzI3OTk7SEVBVlkgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIFJJR0hUIEFSUk9XOzs7OworMjc5QTtIRUFWWSBOT1JUSCBFQVNUIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgVVBQRVIgUklHSFQgQVJST1c7Ozs7CisyNzlCO0RSQUZUSU5HIFBPSU5UIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtEUkFGVElORyBQT0lOVCBSSUdIVCBBUlJPVzs7OzsKKzI3OUM7SEVBVlkgUk9VTkQtVElQUEVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBST1VORC1USVBQRUQgUklHSFQgQVJST1c7Ozs7CisyNzlEO1RSSUFOR0xFLUhFQURFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047VFJJQU5HTEUtSEVBREVEIFJJR0hUIEFSUk9XOzs7OworMjc5RTtIRUFWWSBUUklBTkdMRS1IRUFERUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIFRSSUFOR0xFLUhFQURFRCBSSUdIVCBBUlJPVzs7OzsKKzI3OUY7REFTSEVEIFRSSUFOR0xFLUhFQURFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047REFTSEVEIFRSSUFOR0xFLUhFQURFRCBSSUdIVCBBUlJPVzs7OzsKKzI3QTA7SEVBVlkgREFTSEVEIFRSSUFOR0xFLUhFQURFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgREFTSEVEIFRSSUFOR0xFLUhFQURFRCBSSUdIVCBBUlJPVzs7OzsKKzI3QTE7QkxBQ0sgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0JMQUNLIFJJR0hUIEFSUk9XOzs7OworMjdBMjtUSFJFRS1EIFRPUC1MSUdIVEVEIFJJR0hUV0FSRFMgQVJST1dIRUFEO1NvOzA7T047Ozs7O047VEhSRUUtRCBUT1AtTElHSFRFRCBSSUdIVCBBUlJPV0hFQUQ7Ozs7CisyN0EzO1RIUkVFLUQgQk9UVE9NLUxJR0hURUQgUklHSFRXQVJEUyBBUlJPV0hFQUQ7U287MDtPTjs7Ozs7TjtUSFJFRS1EIEJPVFRPTS1MSUdIVEVEIFJJR0hUIEFSUk9XSEVBRDs7OzsKKzI3QTQ7QkxBQ0sgUklHSFRXQVJEUyBBUlJPV0hFQUQ7U287MDtPTjs7Ozs7TjtCTEFDSyBSSUdIVCBBUlJPV0hFQUQ7Ozs7CisyN0E1O0hFQVZZIEJMQUNLIENVUlZFRCBET1dOV0FSRFMgQU5EIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBCTEFDSyBDVVJWRUQgRE9XTiBBTkQgUklHSFQgQVJST1c7Ozs7CisyN0E2O0hFQVZZIEJMQUNLIENVUlZFRCBVUFdBUkRTIEFORCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgQkxBQ0sgQ1VSVkVEIFVQIEFORCBSSUdIVCBBUlJPVzs7OzsKKzI3QTc7U1FVQVQgQkxBQ0sgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO1NRVUFUIEJMQUNLIFJJR0hUIEFSUk9XOzs7OworMjdBODtIRUFWWSBDT05DQVZFLVBPSU5URUQgQkxBQ0sgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIENPTkNBVkUtUE9JTlRFRCBCTEFDSyBSSUdIVCBBUlJPVzs7OzsKKzI3QTk7UklHSFQtU0hBREVEIFdISVRFIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtSSUdIVC1TSEFERUQgV0hJVEUgUklHSFQgQVJST1c7Ozs7CisyN0FBO0xFRlQtU0hBREVEIFdISVRFIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtMRUZULVNIQURFRCBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QUI7QkFDSy1USUxURUQgU0hBRE9XRUQgV0hJVEUgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0JBQ0stVElMVEVEIFNIQURPV0VEIFdISVRFIFJJR0hUIEFSUk9XOzs7OworMjdBQztGUk9OVC1USUxURUQgU0hBRE9XRUQgV0hJVEUgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0ZST05ULVRJTFRFRCBTSEFET1dFRCBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QUQ7SEVBVlkgTE9XRVIgUklHSFQtU0hBRE9XRUQgV0hJVEUgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIExPV0VSIFJJR0hULVNIQURPV0VEIFdISVRFIFJJR0hUIEFSUk9XOzs7OworMjdBRTtIRUFWWSBVUFBFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgVVBQRVIgUklHSFQtU0hBRE9XRUQgV0hJVEUgUklHSFQgQVJST1c7Ozs7CisyN0FGO05PVENIRUQgTE9XRVIgUklHSFQtU0hBRE9XRUQgV0hJVEUgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO05PVENIRUQgTE9XRVIgUklHSFQtU0hBRE9XRUQgV0hJVEUgUklHSFQgQVJST1c7Ozs7CisyN0IxO05PVENIRUQgVVBQRVIgUklHSFQtU0hBRE9XRUQgV0hJVEUgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO05PVENIRUQgVVBQRVIgUklHSFQtU0hBRE9XRUQgV0hJVEUgUklHSFQgQVJST1c7Ozs7CisyN0IyO0NJUkNMRUQgSEVBVlkgV0hJVEUgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0NJUkNMRUQgSEVBVlkgV0hJVEUgUklHSFQgQVJST1c7Ozs7CisyN0IzO1dISVRFLUZFQVRIRVJFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047V0hJVEUtRkVBVEhFUkVEIFJJR0hUIEFSUk9XOzs7OworMjdCNDtCTEFDSy1GRUFUSEVSRUQgU09VVEggRUFTVCBBUlJPVztTbzswO09OOzs7OztOO0JMQUNLLUZFQVRIRVJFRCBMT1dFUiBSSUdIVCBBUlJPVzs7OzsKKzI3QjU7QkxBQ0stRkVBVEhFUkVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtCTEFDSy1GRUFUSEVSRUQgUklHSFQgQVJST1c7Ozs7CisyN0I2O0JMQUNLLUZFQVRIRVJFRCBOT1JUSCBFQVNUIEFSUk9XO1NvOzA7T047Ozs7O047QkxBQ0stRkVBVEhFUkVEIFVQUEVSIFJJR0hUIEFSUk9XOzs7OworMjdCNztIRUFWWSBCTEFDSy1GRUFUSEVSRUQgU09VVEggRUFTVCBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIEJMQUNLLUZFQVRIRVJFRCBMT1dFUiBSSUdIVCBBUlJPVzs7OzsKKzI3Qjg7SEVBVlkgQkxBQ0stRkVBVEhFUkVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBCTEFDSy1GRUFUSEVSRUQgUklHSFQgQVJST1c7Ozs7CisyN0I5O0hFQVZZIEJMQUNLLUZFQVRIRVJFRCBOT1JUSCBFQVNUIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgQkxBQ0stRkVBVEhFUkVEIFVQUEVSIFJJR0hUIEFSUk9XOzs7OworMjdCQTtURUFSRFJPUC1CQVJCRUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO1RFQVJEUk9QLUJBUkJFRCBSSUdIVCBBUlJPVzs7OzsKKzI3QkI7SEVBVlkgVEVBUkRST1AtU0hBTktFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgVEVBUkRST1AtU0hBTktFRCBSSUdIVCBBUlJPVzs7OzsKKzI3QkM7V0VER0UtVEFJTEVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtXRURHRS1UQUlMRUQgUklHSFQgQVJST1c7Ozs7CisyN0JEO0hFQVZZIFdFREdFLVRBSUxFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgV0VER0UtVEFJTEVEIFJJR0hUIEFSUk9XOzs7OworMjdCRTtPUEVOLU9VVExJTkVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtPUEVOLU9VVExJTkVEIFJJR0hUIEFSUk9XOzs7OworMjgwMDtCUkFJTExFIFBBVFRFUk4gQkxBTks7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODAxO0JSQUlMTEUgUEFUVEVSTiBET1RTLTE7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODAyO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODAzO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyO1NvOzA7T047Ozs7O047Ozs7OworMjgwNDtCUkFJTExFIFBBVFRFUk4gRE9UUy0zO1NvOzA7T047Ozs7O047Ozs7OworMjgwNTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMztTbzswO09OOzs7OztOOzs7OzsKKzI4MDY7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODA3O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMztTbzswO09OOzs7OztOOzs7OzsKKzI4MDg7QlJBSUxMRSBQQVRURVJOIERPVFMtNDtTbzswO09OOzs7OztOOzs7OzsKKzI4MDk7QlJBSUxMRSBQQVRURVJOIERPVFMtMTQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODBBO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI0O1NvOzA7T047Ozs7O047Ozs7OworMjgwQjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODBDO0JSQUlMTEUgUEFUVEVSTiBET1RTLTM0O1NvOzA7T047Ozs7O047Ozs7OworMjgwRDtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODBFO0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNDtTbzswO09OOzs7OztOOzs7OzsKKzI4MEY7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNDtTbzswO09OOzs7OztOOzs7OzsKKzI4MTA7QlJBSUxMRSBQQVRURVJOIERPVFMtNTtTbzswO09OOzs7OztOOzs7OzsKKzI4MTE7QlJBSUxMRSBQQVRURVJOIERPVFMtMTU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODEyO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI1O1NvOzA7T047Ozs7O047Ozs7OworMjgxMztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODE0O0JSQUlMTEUgUEFUVEVSTiBET1RTLTM1O1NvOzA7T047Ozs7O047Ozs7OworMjgxNTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODE2O0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNTtTbzswO09OOzs7OztOOzs7OzsKKzI4MTc7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNTtTbzswO09OOzs7OztOOzs7OzsKKzI4MTg7QlJBSUxMRSBQQVRURVJOIERPVFMtNDU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODE5O0JSQUlMTEUgUEFUVEVSTiBET1RTLTE0NTtTbzswO09OOzs7OztOOzs7OzsKKzI4MUE7QlJBSUxMRSBQQVRURVJOIERPVFMtMjQ1O1NvOzA7T047Ozs7O047Ozs7OworMjgxQjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjQ1O1NvOzA7T047Ozs7O047Ozs7OworMjgxQztCUkFJTExFIFBBVFRFUk4gRE9UUy0zNDU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODFEO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNDU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODFFO0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNDU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODFGO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzQ1O1NvOzA7T047Ozs7O047Ozs7OworMjgyMDtCUkFJTExFIFBBVFRFUk4gRE9UUy02O1NvOzA7T047Ozs7O047Ozs7OworMjgyMTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNjtTbzswO09OOzs7OztOOzs7OzsKKzI4MjI7QlJBSUxMRSBQQVRURVJOIERPVFMtMjY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODIzO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNjtTbzswO09OOzs7OztOOzs7OzsKKzI4MjQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMzY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODI1O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNjtTbzswO09OOzs7OztOOzs7OzsKKzI4MjY7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM2O1NvOzA7T047Ozs7O047Ozs7OworMjgyNztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM2O1NvOzA7T047Ozs7O047Ozs7OworMjgyODtCUkFJTExFIFBBVFRFUk4gRE9UUy00NjtTbzswO09OOzs7OztOOzs7OzsKKzI4Mjk7QlJBSUxMRSBQQVRURVJOIERPVFMtMTQ2O1NvOzA7T047Ozs7O047Ozs7OworMjgyQTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODJCO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNDY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODJDO0JSQUlMTEUgUEFUVEVSTiBET1RTLTM0NjtTbzswO09OOzs7OztOOzs7OzsKKzI4MkQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0NjtTbzswO09OOzs7OztOOzs7OzsKKzI4MkU7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM0NjtTbzswO09OOzs7OztOOzs7OzsKKzI4MkY7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNDY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODMwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTU2O1NvOzA7T047Ozs7O047Ozs7OworMjgzMTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNTY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODMyO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI1NjtTbzswO09OOzs7OztOOzs7OzsKKzI4MzM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI1NjtTbzswO09OOzs7OztOOzs7OzsKKzI4MzQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMzU2O1NvOzA7T047Ozs7O047Ozs7OworMjgzNTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzU2O1NvOzA7T047Ozs7O047Ozs7OworMjgzNjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzU2O1NvOzA7T047Ozs7O047Ozs7OworMjgzNztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM1NjtTbzswO09OOzs7OztOOzs7OzsKKzI4Mzg7QlJBSUxMRSBQQVRURVJOIERPVFMtNDU2O1NvOzA7T047Ozs7O047Ozs7OworMjgzOTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDU2O1NvOzA7T047Ozs7O047Ozs7OworMjgzQTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDU2O1NvOzA7T047Ozs7O047Ozs7OworMjgzQjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjQ1NjtTbzswO09OOzs7OztOOzs7OzsKKzI4M0M7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ1NjtTbzswO09OOzs7OztOOzs7OzsKKzI4M0Q7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0NTY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODNFO0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNDU2O1NvOzA7T047Ozs7O047Ozs7OworMjgzRjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0NTY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODQwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODQxO0JSQUlMTEUgUEFUVEVSTiBET1RTLTE3O1NvOzA7T047Ozs7O047Ozs7OworMjg0MjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNztTbzswO09OOzs7OztOOzs7OzsKKzI4NDM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI3O1NvOzA7T047Ozs7O047Ozs7OworMjg0NDtCUkFJTExFIFBBVFRFUk4gRE9UUy0zNztTbzswO09OOzs7OztOOzs7OzsKKzI4NDU7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM3O1NvOzA7T047Ozs7O047Ozs7OworMjg0NjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODQ3O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODQ4O0JSQUlMTEUgUEFUVEVSTiBET1RTLTQ3O1NvOzA7T047Ozs7O047Ozs7OworMjg0OTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODRBO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI0NztTbzswO09OOzs7OztOOzs7OzsKKzI4NEI7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI0NztTbzswO09OOzs7OztOOzs7OzsKKzI4NEM7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ3O1NvOzA7T047Ozs7O047Ozs7OworMjg0RDtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzQ3O1NvOzA7T047Ozs7O047Ozs7OworMjg0RTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzQ3O1NvOzA7T047Ozs7O047Ozs7OworMjg0RjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0NztTbzswO09OOzs7OztOOzs7OzsKKzI4NTA7QlJBSUxMRSBQQVRURVJOIERPVFMtNTc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODUxO0JSQUlMTEUgUEFUVEVSTiBET1RTLTE1NztTbzswO09OOzs7OztOOzs7OzsKKzI4NTI7QlJBSUxMRSBQQVRURVJOIERPVFMtMjU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1MztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1NDtCUkFJTExFIFBBVFRFUk4gRE9UUy0zNTc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODU1O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNTc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODU2O0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNTc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODU3O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1ODtCUkFJTExFIFBBVFRFUk4gRE9UUy00NTc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODU5O0JSQUlMTEUgUEFUVEVSTiBET1RTLTE0NTc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODVBO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI0NTc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODVCO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNDU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1QztCUkFJTExFIFBBVFRFUk4gRE9UUy0zNDU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1RDtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzQ1NztTbzswO09OOzs7OztOOzs7OzsKKzI4NUU7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM0NTc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODVGO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzQ1NztTbzswO09OOzs7OztOOzs7OzsKKzI4NjA7QlJBSUxMRSBQQVRURVJOIERPVFMtNjc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODYxO0JSQUlMTEUgUEFUVEVSTiBET1RTLTE2NztTbzswO09OOzs7OztOOzs7OzsKKzI4NjI7QlJBSUxMRSBQQVRURVJOIERPVFMtMjY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2MztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2NDtCUkFJTExFIFBBVFRFUk4gRE9UUy0zNjc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODY1O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNjc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODY2O0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNjc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODY3O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2ODtCUkFJTExFIFBBVFRFUk4gRE9UUy00Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODY5O0JSQUlMTEUgUEFUVEVSTiBET1RTLTE0Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODZBO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI0Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODZCO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNDY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2QztCUkFJTExFIFBBVFRFUk4gRE9UUy0zNDY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2RDtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzQ2NztTbzswO09OOzs7OztOOzs7OzsKKzI4NkU7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM0Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODZGO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzQ2NztTbzswO09OOzs7OztOOzs7OzsKKzI4NzA7QlJBSUxMRSBQQVRURVJOIERPVFMtNTY3O1NvOzA7T047Ozs7O047Ozs7OworMjg3MTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNTY3O1NvOzA7T047Ozs7O047Ozs7OworMjg3MjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNTY3O1NvOzA7T047Ozs7O047Ozs7OworMjg3MztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjU2NztTbzswO09OOzs7OztOOzs7OzsKKzI4NzQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMzU2NztTbzswO09OOzs7OztOOzs7OzsKKzI4NzU7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM1Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODc2O0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNTY3O1NvOzA7T047Ozs7O047Ozs7OworMjg3NztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM1Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODc4O0JSQUlMTEUgUEFUVEVSTiBET1RTLTQ1Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODc5O0JSQUlMTEUgUEFUVEVSTiBET1RTLTE0NTY3O1NvOzA7T047Ozs7O047Ozs7OworMjg3QTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDU2NztTbzswO09OOzs7OztOOzs7OzsKKzI4N0I7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI0NTY3O1NvOzA7T047Ozs7O047Ozs7OworMjg3QztCUkFJTExFIFBBVFRFUk4gRE9UUy0zNDU2NztTbzswO09OOzs7OztOOzs7OzsKKzI4N0Q7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0NTY3O1NvOzA7T047Ozs7O047Ozs7OworMjg3RTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzQ1Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODdGO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzQ1Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODgwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODgxO0JSQUlMTEUgUEFUVEVSTiBET1RTLTE4O1NvOzA7T047Ozs7O047Ozs7OworMjg4MjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yODtTbzswO09OOzs7OztOOzs7OzsKKzI4ODM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI4O1NvOzA7T047Ozs7O047Ozs7OworMjg4NDtCUkFJTExFIFBBVFRFUk4gRE9UUy0zODtTbzswO09OOzs7OztOOzs7OzsKKzI4ODU7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM4O1NvOzA7T047Ozs7O047Ozs7OworMjg4NjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODg3O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODg4O0JSQUlMTEUgUEFUVEVSTiBET1RTLTQ4O1NvOzA7T047Ozs7O047Ozs7OworMjg4OTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODhBO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI0ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OEI7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI0ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OEM7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ4O1NvOzA7T047Ozs7O047Ozs7OworMjg4RDtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzQ4O1NvOzA7T047Ozs7O047Ozs7OworMjg4RTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzQ4O1NvOzA7T047Ozs7O047Ozs7OworMjg4RjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OTA7QlJBSUxMRSBQQVRURVJOIERPVFMtNTg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODkxO0JSQUlMTEUgUEFUVEVSTiBET1RTLTE1ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OTI7QlJBSUxMRSBQQVRURVJOIERPVFMtMjU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5MztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5NDtCUkFJTExFIFBBVFRFUk4gRE9UUy0zNTg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODk1O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNTg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODk2O0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNTg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODk3O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5ODtCUkFJTExFIFBBVFRFUk4gRE9UUy00NTg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODk5O0JSQUlMTEUgUEFUVEVSTiBET1RTLTE0NTg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODlBO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI0NTg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODlCO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNDU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5QztCUkFJTExFIFBBVFRFUk4gRE9UUy0zNDU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5RDtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzQ1ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OUU7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM0NTg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODlGO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzQ1ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QTA7QlJBSUxMRSBQQVRURVJOIERPVFMtNjg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEExO0JSQUlMTEUgUEFUVEVSTiBET1RTLTE2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QTI7QlJBSUxMRSBQQVRURVJOIERPVFMtMjY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBMztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBNDtCUkFJTExFIFBBVFRFUk4gRE9UUy0zNjg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEE1O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNjg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEE2O0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNjg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEE3O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBODtCUkFJTExFIFBBVFRFUk4gRE9UUy00Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEE5O0JSQUlMTEUgUEFUVEVSTiBET1RTLTE0Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEFBO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI0Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEFCO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNDY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBQztCUkFJTExFIFBBVFRFUk4gRE9UUy0zNDY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBRDtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzQ2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QUU7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM0Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEFGO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzQ2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QjA7QlJBSUxMRSBQQVRURVJOIERPVFMtNTY4O1NvOzA7T047Ozs7O047Ozs7OworMjhCMTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNTY4O1NvOzA7T047Ozs7O047Ozs7OworMjhCMjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNTY4O1NvOzA7T047Ozs7O047Ozs7OworMjhCMztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjU2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QjQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMzU2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QjU7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM1Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEI2O0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNTY4O1NvOzA7T047Ozs7O047Ozs7OworMjhCNztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM1Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEI4O0JSQUlMTEUgUEFUVEVSTiBET1RTLTQ1Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEI5O0JSQUlMTEUgUEFUVEVSTiBET1RTLTE0NTY4O1NvOzA7T047Ozs7O047Ozs7OworMjhCQTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDU2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QkI7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI0NTY4O1NvOzA7T047Ozs7O047Ozs7OworMjhCQztCUkFJTExFIFBBVFRFUk4gRE9UUy0zNDU2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QkQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0NTY4O1NvOzA7T047Ozs7O047Ozs7OworMjhCRTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzQ1Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEJGO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzQ1Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEMwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTc4O1NvOzA7T047Ozs7O047Ozs7OworMjhDMTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEMyO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QzM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QzQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMzc4O1NvOzA7T047Ozs7O047Ozs7OworMjhDNTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzc4O1NvOzA7T047Ozs7O047Ozs7OworMjhDNjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzc4O1NvOzA7T047Ozs7O047Ozs7OworMjhDNztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4Qzg7QlJBSUxMRSBQQVRURVJOIERPVFMtNDc4O1NvOzA7T047Ozs7O047Ozs7OworMjhDOTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDc4O1NvOzA7T047Ozs7O047Ozs7OworMjhDQTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDc4O1NvOzA7T047Ozs7O047Ozs7OworMjhDQjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjQ3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4Q0M7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4Q0Q7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOENFO0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNDc4O1NvOzA7T047Ozs7O047Ozs7OworMjhDRjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEQwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTU3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RDE7QlJBSUxMRSBQQVRURVJOIERPVFMtMTU3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RDI7QlJBSUxMRSBQQVRURVJOIERPVFMtMjU3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RDM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI1Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEQ0O0JSQUlMTEUgUEFUVEVSTiBET1RTLTM1Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEQ1O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNTc4O1NvOzA7T047Ozs7O047Ozs7OworMjhENjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzU3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RDc7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNTc4O1NvOzA7T047Ozs7O047Ozs7OworMjhEODtCUkFJTExFIFBBVFRFUk4gRE9UUy00NTc4O1NvOzA7T047Ozs7O047Ozs7OworMjhEOTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDU3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4REE7QlJBSUxMRSBQQVRURVJOIERPVFMtMjQ1Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOERCO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNDU3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4REM7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ1Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEREO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNDU3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4REU7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM0NTc4O1NvOzA7T047Ozs7O047Ozs7OworMjhERjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0NTc4O1NvOzA7T047Ozs7O047Ozs7OworMjhFMDtCUkFJTExFIFBBVFRFUk4gRE9UUy02Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEUxO0JSQUlMTEUgUEFUVEVSTiBET1RTLTE2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEUyO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEUzO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNjc4O1NvOzA7T047Ozs7O047Ozs7OworMjhFNDtCUkFJTExFIFBBVFRFUk4gRE9UUy0zNjc4O1NvOzA7T047Ozs7O047Ozs7OworMjhFNTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RTY7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEU3O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RTg7QlJBSUxMRSBQQVRURVJOIERPVFMtNDY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RTk7QlJBSUxMRSBQQVRURVJOIERPVFMtMTQ2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEVBO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI0Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhFQjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjQ2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEVDO0JSQUlMTEUgUEFUVEVSTiBET1RTLTM0Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhFRDtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzQ2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEVFO0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNDY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RUY7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNDY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RjA7QlJBSUxMRSBQQVRURVJOIERPVFMtNTY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RjE7QlJBSUxMRSBQQVRURVJOIERPVFMtMTU2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEYyO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI1Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhGMztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjU2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEY0O0JSQUlMTEUgUEFUVEVSTiBET1RTLTM1Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhGNTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzU2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEY2O0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNTY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4Rjc7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNTY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4Rjg7QlJBSUxMRSBQQVRURVJOIERPVFMtNDU2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEY5O0JSQUlMTEUgUEFUVEVSTiBET1RTLTE0NTY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RkE7QlJBSUxMRSBQQVRURVJOIERPVFMtMjQ1Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhGQjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjQ1Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhGQztCUkFJTExFIFBBVFRFUk4gRE9UUy0zNDU2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEZEO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNDU2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEZFO0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNDU2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEZGO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzQ1Njc4O1NvOzA7T047Ozs7O047Ozs7OworMkU4MDtDSksgUkFESUNBTCBSRVBFQVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTgxO0NKSyBSQURJQ0FMIENMSUZGO1NvOzA7T047Ozs7O047Ozs7OworMkU4MjtDSksgUkFESUNBTCBTRUNPTkQgT05FO1NvOzA7T047Ozs7O047Ozs7OworMkU4MztDSksgUkFESUNBTCBTRUNPTkQgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkU4NDtDSksgUkFESUNBTCBTRUNPTkQgVEhSRUU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTg1O0NKSyBSQURJQ0FMIFBFUlNPTjtTbzswO09OOzs7OztOOzs7OzsKKzJFODY7Q0pLIFJBRElDQUwgQk9YO1NvOzA7T047Ozs7O047Ozs7OworMkU4NztDSksgUkFESUNBTCBUQUJMRTtTbzswO09OOzs7OztOOzs7OzsKKzJFODg7Q0pLIFJBRElDQUwgS05JRkUgT05FO1NvOzA7T047Ozs7O047Ozs7OworMkU4OTtDSksgUkFESUNBTCBLTklGRSBUV087U287MDtPTjs7Ozs7Tjs7Ozs7CisyRThBO0NKSyBSQURJQ0FMIERJVklOQVRJT047U287MDtPTjs7Ozs7Tjs7Ozs7CisyRThCO0NKSyBSQURJQ0FMIFNFQUw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRThDO0NKSyBSQURJQ0FMIFNNQUxMIE9ORTtTbzswO09OOzs7OztOOzs7OzsKKzJFOEQ7Q0pLIFJBRElDQUwgU01BTEwgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkU4RTtDSksgUkFESUNBTCBMQU1FIE9ORTtTbzswO09OOzs7OztOOzs7OzsKKzJFOEY7Q0pLIFJBRElDQUwgTEFNRSBUV087U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTkwO0NKSyBSQURJQ0FMIExBTUUgVEhSRUU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTkxO0NKSyBSQURJQ0FMIExBTUUgRk9VUjtTbzswO09OOzs7OztOOzs7OzsKKzJFOTI7Q0pLIFJBRElDQUwgU05BS0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTkzO0NKSyBSQURJQ0FMIFRIUkVBRDtTbzswO09OOzs7OztOOzs7OzsKKzJFOTQ7Q0pLIFJBRElDQUwgU05PVVQgT05FO1NvOzA7T047Ozs7O047Ozs7OworMkU5NTtDSksgUkFESUNBTCBTTk9VVCBUV087U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTk2O0NKSyBSQURJQ0FMIEhFQVJUIE9ORTtTbzswO09OOzs7OztOOzs7OzsKKzJFOTc7Q0pLIFJBRElDQUwgSEVBUlQgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkU5ODtDSksgUkFESUNBTCBIQU5EO1NvOzA7T047Ozs7O047Ozs7OworMkU5OTtDSksgUkFESUNBTCBSQVA7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTlCO0NKSyBSQURJQ0FMIENIT0tFO1NvOzA7T047Ozs7O047Ozs7OworMkU5QztDSksgUkFESUNBTCBTVU47U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTlEO0NKSyBSQURJQ0FMIE1PT047U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTlFO0NKSyBSQURJQ0FMIERFQVRIO1NvOzA7T047Ozs7O047Ozs7OworMkU5RjtDSksgUkFESUNBTCBNT1RIRVI7U287MDtPTjs8Y29tcGF0PiA2QkNEOzs7O047Ozs7OworMkVBMDtDSksgUkFESUNBTCBDSVZJTElBTjtTbzswO09OOzs7OztOOzs7OzsKKzJFQTE7Q0pLIFJBRElDQUwgV0FURVIgT05FO1NvOzA7T047Ozs7O047Ozs7OworMkVBMjtDSksgUkFESUNBTCBXQVRFUiBUV087U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUEzO0NKSyBSQURJQ0FMIEZJUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUE0O0NKSyBSQURJQ0FMIFBBVyBPTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUE1O0NKSyBSQURJQ0FMIFBBVyBUV087U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUE2O0NKSyBSQURJQ0FMIFNJTVBMSUZJRUQgSEFMRiBUUkVFIFRSVU5LO1NvOzA7T047Ozs7O047Ozs7OworMkVBNztDSksgUkFESUNBTCBDT1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUE4O0NKSyBSQURJQ0FMIERPRztTbzswO09OOzs7OztOOzs7OzsKKzJFQTk7Q0pLIFJBRElDQUwgSkFERTtTbzswO09OOzs7OztOOzs7OzsKKzJFQUE7Q0pLIFJBRElDQUwgQk9MVCBPRiBDTE9USDtTbzswO09OOzs7OztOOzs7OzsKKzJFQUI7Q0pLIFJBRElDQUwgRVlFO1NvOzA7T047Ozs7O047Ozs7OworMkVBQztDSksgUkFESUNBTCBTUElSSVQgT05FO1NvOzA7T047Ozs7O047Ozs7OworMkVBRDtDSksgUkFESUNBTCBTUElSSVQgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkVBRTtDSksgUkFESUNBTCBCQU1CT087U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUFGO0NKSyBSQURJQ0FMIFNJTEs7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUIwO0NKSyBSQURJQ0FMIEMtU0lNUExJRklFRCBTSUxLO1NvOzA7T047Ozs7O047Ozs7OworMkVCMTtDSksgUkFESUNBTCBORVQgT05FO1NvOzA7T047Ozs7O047Ozs7OworMkVCMjtDSksgUkFESUNBTCBORVQgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkVCMztDSksgUkFESUNBTCBORVQgVEhSRUU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUI0O0NKSyBSQURJQ0FMIE5FVCBGT1VSO1NvOzA7T047Ozs7O047Ozs7OworMkVCNTtDSksgUkFESUNBTCBNRVNIO1NvOzA7T047Ozs7O047Ozs7OworMkVCNjtDSksgUkFESUNBTCBTSEVFUDtTbzswO09OOzs7OztOOzs7OzsKKzJFQjc7Q0pLIFJBRElDQUwgUkFNO1NvOzA7T047Ozs7O047Ozs7OworMkVCODtDSksgUkFESUNBTCBFV0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUI5O0NKSyBSQURJQ0FMIE9MRDtTbzswO09OOzs7OztOOzs7OzsKKzJFQkE7Q0pLIFJBRElDQUwgQlJVU0ggT05FO1NvOzA7T047Ozs7O047Ozs7OworMkVCQjtDSksgUkFESUNBTCBCUlVTSCBUV087U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUJDO0NKSyBSQURJQ0FMIE1FQVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUJEO0NKSyBSQURJQ0FMIE1PUlRBUjtTbzswO09OOzs7OztOOzs7OzsKKzJFQkU7Q0pLIFJBRElDQUwgR1JBU1MgT05FO1NvOzA7T047Ozs7O047Ozs7OworMkVCRjtDSksgUkFESUNBTCBHUkFTUyBUV087U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUMwO0NKSyBSQURJQ0FMIEdSQVNTIFRIUkVFO1NvOzA7T047Ozs7O047Ozs7OworMkVDMTtDSksgUkFESUNBTCBUSUdFUjtTbzswO09OOzs7OztOOzs7OzsKKzJFQzI7Q0pLIFJBRElDQUwgQ0xPVEhFUztTbzswO09OOzs7OztOOzs7OzsKKzJFQzM7Q0pLIFJBRElDQUwgV0VTVCBPTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUM0O0NKSyBSQURJQ0FMIFdFU1QgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkVDNTtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgU0VFO1NvOzA7T047Ozs7O047Ozs7OworMkVDNjtDSksgUkFESUNBTCBTSU1QTElGSUVEIEhPUk47U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUM3O0NKSyBSQURJQ0FMIEhPUk47U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUM4O0NKSyBSQURJQ0FMIEMtU0lNUExJRklFRCBTUEVFQ0g7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUM5O0NKSyBSQURJQ0FMIEMtU0lNUExJRklFRCBTSEVMTDtTbzswO09OOzs7OztOOzs7OzsKKzJFQ0E7Q0pLIFJBRElDQUwgRk9PVDtTbzswO09OOzs7OztOOzs7OzsKKzJFQ0I7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIENBUlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUNDO0NKSyBSQURJQ0FMIFNJTVBMSUZJRUQgV0FMSztTbzswO09OOzs7OztOOzs7OzsKKzJFQ0Q7Q0pLIFJBRElDQUwgV0FMSyBPTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUNFO0NKSyBSQURJQ0FMIFdBTEsgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkVDRjtDSksgUkFESUNBTCBDSVRZO1NvOzA7T047Ozs7O047Ozs7OworMkVEMDtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgR09MRDtTbzswO09OOzs7OztOOzs7OzsKKzJFRDE7Q0pLIFJBRElDQUwgTE9ORyBPTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUQyO0NKSyBSQURJQ0FMIExPTkcgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkVEMztDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgTE9ORztTbzswO09OOzs7OztOOzs7OzsKKzJFRDQ7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIEdBVEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUQ1O0NKSyBSQURJQ0FMIE1PVU5EIE9ORTtTbzswO09OOzs7OztOOzs7OzsKKzJFRDY7Q0pLIFJBRElDQUwgTU9VTkQgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkVENztDSksgUkFESUNBTCBSQUlOO1NvOzA7T047Ozs7O047Ozs7OworMkVEODtDSksgUkFESUNBTCBCTFVFO1NvOzA7T047Ozs7O047Ozs7OworMkVEOTtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgVEFOTkVEIExFQVRIRVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRURBO0NKSyBSQURJQ0FMIEMtU0lNUExJRklFRCBMRUFGO1NvOzA7T047Ozs7O047Ozs7OworMkVEQjtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgV0lORDtTbzswO09OOzs7OztOOzs7OzsKKzJFREM7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIEZMWTtTbzswO09OOzs7OztOOzs7OzsKKzJFREQ7Q0pLIFJBRElDQUwgRUFUIE9ORTtTbzswO09OOzs7OztOOzs7OzsKKzJFREU7Q0pLIFJBRElDQUwgRUFUIFRXTztTbzswO09OOzs7OztOOzs7OzsKKzJFREY7Q0pLIFJBRElDQUwgRUFUIFRIUkVFO1NvOzA7T047Ozs7O047Ozs7OworMkVFMDtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgRUFUO1NvOzA7T047Ozs7O047Ozs7OworMkVFMTtDSksgUkFESUNBTCBIRUFEO1NvOzA7T047Ozs7O047Ozs7OworMkVFMjtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgSE9SU0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUUzO0NKSyBSQURJQ0FMIEJPTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUU0O0NKSyBSQURJQ0FMIEdIT1NUO1NvOzA7T047Ozs7O047Ozs7OworMkVFNTtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgRklTSDtTbzswO09OOzs7OztOOzs7OzsKKzJFRTY7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIEJJUkQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUU3O0NKSyBSQURJQ0FMIEMtU0lNUExJRklFRCBTQUxUO1NvOzA7T047Ozs7O047Ozs7OworMkVFODtDSksgUkFESUNBTCBTSU1QTElGSUVEIFdIRUFUO1NvOzA7T047Ozs7O047Ozs7OworMkVFOTtDSksgUkFESUNBTCBTSU1QTElGSUVEIFlFTExPVztTbzswO09OOzs7OztOOzs7OzsKKzJFRUE7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIEZST0c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUVCO0NKSyBSQURJQ0FMIEotU0lNUExJRklFRCBFVkVOO1NvOzA7T047Ozs7O047Ozs7OworMkVFQztDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgRVZFTjtTbzswO09OOzs7OztOOzs7OzsKKzJFRUQ7Q0pLIFJBRElDQUwgSi1TSU1QTElGSUVEIFRPT1RIO1NvOzA7T047Ozs7O047Ozs7OworMkVFRTtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgVE9PVEg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUVGO0NKSyBSQURJQ0FMIEotU0lNUExJRklFRCBEUkFHT047U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUYwO0NKSyBSQURJQ0FMIEMtU0lNUExJRklFRCBEUkFHT047U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUYxO0NKSyBSQURJQ0FMIFRVUlRMRTtTbzswO09OOzs7OztOOzs7OzsKKzJFRjI7Q0pLIFJBRElDQUwgSi1TSU1QTElGSUVEIFRVUlRMRTtTbzswO09OOzs7OztOOzs7OzsKKzJFRjM7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIFRVUlRMRTtTbzswO09OOzxjb21wYXQ+IDlGOUY7Ozs7Tjs7Ozs7CisyRjAwO0tBTkdYSSBSQURJQ0FMIE9ORTtTbzswO09OOzxjb21wYXQ+IDRFMDA7Ozs7Tjs7Ozs7CisyRjAxO0tBTkdYSSBSQURJQ0FMIExJTkU7U287MDtPTjs8Y29tcGF0PiA0RTI4Ozs7O047Ozs7OworMkYwMjtLQU5HWEkgUkFESUNBTCBET1Q7U287MDtPTjs8Y29tcGF0PiA0RTM2Ozs7O047Ozs7OworMkYwMztLQU5HWEkgUkFESUNBTCBTTEFTSDtTbzswO09OOzxjb21wYXQ+IDRFM0Y7Ozs7Tjs7Ozs7CisyRjA0O0tBTkdYSSBSQURJQ0FMIFNFQ09ORDtTbzswO09OOzxjb21wYXQ+IDRFNTk7Ozs7Tjs7Ozs7CisyRjA1O0tBTkdYSSBSQURJQ0FMIEhPT0s7U287MDtPTjs8Y29tcGF0PiA0RTg1Ozs7O047Ozs7OworMkYwNjtLQU5HWEkgUkFESUNBTCBUV087U287MDtPTjs8Y29tcGF0PiA0RThDOzs7O047Ozs7OworMkYwNztLQU5HWEkgUkFESUNBTCBMSUQ7U287MDtPTjs8Y29tcGF0PiA0RUEwOzs7O047Ozs7OworMkYwODtLQU5HWEkgUkFESUNBTCBNQU47U287MDtPTjs8Y29tcGF0PiA0RUJBOzs7O047Ozs7OworMkYwOTtLQU5HWEkgUkFESUNBTCBMRUdTO1NvOzA7T047PGNvbXBhdD4gNTEzRjs7OztOOzs7OzsKKzJGMEE7S0FOR1hJIFJBRElDQUwgRU5URVI7U287MDtPTjs8Y29tcGF0PiA1MTY1Ozs7O047Ozs7OworMkYwQjtLQU5HWEkgUkFESUNBTCBFSUdIVDtTbzswO09OOzxjb21wYXQ+IDUxNkI7Ozs7Tjs7Ozs7CisyRjBDO0tBTkdYSSBSQURJQ0FMIERPV04gQk9YO1NvOzA7T047PGNvbXBhdD4gNTE4Mjs7OztOOzs7OzsKKzJGMEQ7S0FOR1hJIFJBRElDQUwgQ09WRVI7U287MDtPTjs8Y29tcGF0PiA1MTk2Ozs7O047Ozs7OworMkYwRTtLQU5HWEkgUkFESUNBTCBJQ0U7U287MDtPTjs8Y29tcGF0PiA1MUFCOzs7O047Ozs7OworMkYwRjtLQU5HWEkgUkFESUNBTCBUQUJMRTtTbzswO09OOzxjb21wYXQ+IDUxRTA7Ozs7Tjs7Ozs7CisyRjEwO0tBTkdYSSBSQURJQ0FMIE9QRU4gQk9YO1NvOzA7T047PGNvbXBhdD4gNTFGNTs7OztOOzs7OzsKKzJGMTE7S0FOR1hJIFJBRElDQUwgS05JRkU7U287MDtPTjs8Y29tcGF0PiA1MjAwOzs7O047Ozs7OworMkYxMjtLQU5HWEkgUkFESUNBTCBQT1dFUjtTbzswO09OOzxjb21wYXQ+IDUyOUI7Ozs7Tjs7Ozs7CisyRjEzO0tBTkdYSSBSQURJQ0FMIFdSQVA7U287MDtPTjs8Y29tcGF0PiA1MkY5Ozs7O047Ozs7OworMkYxNDtLQU5HWEkgUkFESUNBTCBTUE9PTjtTbzswO09OOzxjb21wYXQ+IDUzMTU7Ozs7Tjs7Ozs7CisyRjE1O0tBTkdYSSBSQURJQ0FMIFJJR0hUIE9QRU4gQk9YO1NvOzA7T047PGNvbXBhdD4gNTMxQTs7OztOOzs7OzsKKzJGMTY7S0FOR1hJIFJBRElDQUwgSElESU5HIEVOQ0xPU1VSRTtTbzswO09OOzxjb21wYXQ+IDUzMzg7Ozs7Tjs7Ozs7CisyRjE3O0tBTkdYSSBSQURJQ0FMIFRFTjtTbzswO09OOzxjb21wYXQ+IDUzNDE7Ozs7Tjs7Ozs7CisyRjE4O0tBTkdYSSBSQURJQ0FMIERJVklOQVRJT047U287MDtPTjs8Y29tcGF0PiA1MzVDOzs7O047Ozs7OworMkYxOTtLQU5HWEkgUkFESUNBTCBTRUFMO1NvOzA7T047PGNvbXBhdD4gNTM2OTs7OztOOzs7OzsKKzJGMUE7S0FOR1hJIFJBRElDQUwgQ0xJRkY7U287MDtPTjs8Y29tcGF0PiA1MzgyOzs7O047Ozs7OworMkYxQjtLQU5HWEkgUkFESUNBTCBQUklWQVRFO1NvOzA7T047PGNvbXBhdD4gNTNCNjs7OztOOzs7OzsKKzJGMUM7S0FOR1hJIFJBRElDQUwgQUdBSU47U287MDtPTjs8Y29tcGF0PiA1M0M4Ozs7O047Ozs7OworMkYxRDtLQU5HWEkgUkFESUNBTCBNT1VUSDtTbzswO09OOzxjb21wYXQ+IDUzRTM7Ozs7Tjs7Ozs7CisyRjFFO0tBTkdYSSBSQURJQ0FMIEVOQ0xPU1VSRTtTbzswO09OOzxjb21wYXQ+IDU2RDc7Ozs7Tjs7Ozs7CisyRjFGO0tBTkdYSSBSQURJQ0FMIEVBUlRIO1NvOzA7T047PGNvbXBhdD4gNTcxRjs7OztOOzs7OzsKKzJGMjA7S0FOR1hJIFJBRElDQUwgU0NIT0xBUjtTbzswO09OOzxjb21wYXQ+IDU4RUI7Ozs7Tjs7Ozs7CisyRjIxO0tBTkdYSSBSQURJQ0FMIEdPO1NvOzA7T047PGNvbXBhdD4gNTkwMjs7OztOOzs7OzsKKzJGMjI7S0FOR1hJIFJBRElDQUwgR08gU0xPV0xZO1NvOzA7T047PGNvbXBhdD4gNTkwQTs7OztOOzs7OzsKKzJGMjM7S0FOR1hJIFJBRElDQUwgRVZFTklORztTbzswO09OOzxjb21wYXQ+IDU5MTU7Ozs7Tjs7Ozs7CisyRjI0O0tBTkdYSSBSQURJQ0FMIEJJRztTbzswO09OOzxjb21wYXQ+IDU5Mjc7Ozs7Tjs7Ozs7CisyRjI1O0tBTkdYSSBSQURJQ0FMIFdPTUFOO1NvOzA7T047PGNvbXBhdD4gNTk3Mzs7OztOOzs7OzsKKzJGMjY7S0FOR1hJIFJBRElDQUwgQ0hJTEQ7U287MDtPTjs8Y29tcGF0PiA1QjUwOzs7O047Ozs7OworMkYyNztLQU5HWEkgUkFESUNBTCBST09GO1NvOzA7T047PGNvbXBhdD4gNUI4MDs7OztOOzs7OzsKKzJGMjg7S0FOR1hJIFJBRElDQUwgSU5DSDtTbzswO09OOzxjb21wYXQ+IDVCRjg7Ozs7Tjs7Ozs7CisyRjI5O0tBTkdYSSBSQURJQ0FMIFNNQUxMO1NvOzA7T047PGNvbXBhdD4gNUMwRjs7OztOOzs7OzsKKzJGMkE7S0FOR1hJIFJBRElDQUwgTEFNRTtTbzswO09OOzxjb21wYXQ+IDVDMjI7Ozs7Tjs7Ozs7CisyRjJCO0tBTkdYSSBSQURJQ0FMIENPUlBTRTtTbzswO09OOzxjb21wYXQ+IDVDMzg7Ozs7Tjs7Ozs7CisyRjJDO0tBTkdYSSBSQURJQ0FMIFNQUk9VVDtTbzswO09OOzxjb21wYXQ+IDVDNkU7Ozs7Tjs7Ozs7CisyRjJEO0tBTkdYSSBSQURJQ0FMIE1PVU5UQUlOO1NvOzA7T047PGNvbXBhdD4gNUM3MTs7OztOOzs7OzsKKzJGMkU7S0FOR1hJIFJBRElDQUwgUklWRVI7U287MDtPTjs8Y29tcGF0PiA1RERCOzs7O047Ozs7OworMkYyRjtLQU5HWEkgUkFESUNBTCBXT1JLO1NvOzA7T047PGNvbXBhdD4gNURFNTs7OztOOzs7OzsKKzJGMzA7S0FOR1hJIFJBRElDQUwgT05FU0VMRjtTbzswO09OOzxjb21wYXQ+IDVERjE7Ozs7Tjs7Ozs7CisyRjMxO0tBTkdYSSBSQURJQ0FMIFRVUkJBTjtTbzswO09OOzxjb21wYXQ+IDVERkU7Ozs7Tjs7Ozs7CisyRjMyO0tBTkdYSSBSQURJQ0FMIERSWTtTbzswO09OOzxjb21wYXQ+IDVFNzI7Ozs7Tjs7Ozs7CisyRjMzO0tBTkdYSSBSQURJQ0FMIFNIT1JUIFRIUkVBRDtTbzswO09OOzxjb21wYXQ+IDVFN0E7Ozs7Tjs7Ozs7CisyRjM0O0tBTkdYSSBSQURJQ0FMIERPVFRFRCBDTElGRjtTbzswO09OOzxjb21wYXQ+IDVFN0Y7Ozs7Tjs7Ozs7CisyRjM1O0tBTkdYSSBSQURJQ0FMIExPTkcgU1RSSURFO1NvOzA7T047PGNvbXBhdD4gNUVGNDs7OztOOzs7OzsKKzJGMzY7S0FOR1hJIFJBRElDQUwgVFdPIEhBTkRTO1NvOzA7T047PGNvbXBhdD4gNUVGRTs7OztOOzs7OzsKKzJGMzc7S0FOR1hJIFJBRElDQUwgU0hPT1Q7U287MDtPTjs8Y29tcGF0PiA1RjBCOzs7O047Ozs7OworMkYzODtLQU5HWEkgUkFESUNBTCBCT1c7U287MDtPTjs8Y29tcGF0PiA1RjEzOzs7O047Ozs7OworMkYzOTtLQU5HWEkgUkFESUNBTCBTTk9VVDtTbzswO09OOzxjb21wYXQ+IDVGNTA7Ozs7Tjs7Ozs7CisyRjNBO0tBTkdYSSBSQURJQ0FMIEJSSVNUTEU7U287MDtPTjs8Y29tcGF0PiA1RjYxOzs7O047Ozs7OworMkYzQjtLQU5HWEkgUkFESUNBTCBTVEVQO1NvOzA7T047PGNvbXBhdD4gNUY3Mzs7OztOOzs7OzsKKzJGM0M7S0FOR1hJIFJBRElDQUwgSEVBUlQ7U287MDtPTjs8Y29tcGF0PiA1RkMzOzs7O047Ozs7OworMkYzRDtLQU5HWEkgUkFESUNBTCBIQUxCRVJEO1NvOzA7T047PGNvbXBhdD4gNjIwODs7OztOOzs7OzsKKzJGM0U7S0FOR1hJIFJBRElDQUwgRE9PUjtTbzswO09OOzxjb21wYXQ+IDYyMzY7Ozs7Tjs7Ozs7CisyRjNGO0tBTkdYSSBSQURJQ0FMIEhBTkQ7U287MDtPTjs8Y29tcGF0PiA2MjRCOzs7O047Ozs7OworMkY0MDtLQU5HWEkgUkFESUNBTCBCUkFOQ0g7U287MDtPTjs8Y29tcGF0PiA2NTJGOzs7O047Ozs7OworMkY0MTtLQU5HWEkgUkFESUNBTCBSQVA7U287MDtPTjs8Y29tcGF0PiA2NTM0Ozs7O047Ozs7OworMkY0MjtLQU5HWEkgUkFESUNBTCBTQ1JJUFQ7U287MDtPTjs8Y29tcGF0PiA2NTg3Ozs7O047Ozs7OworMkY0MztLQU5HWEkgUkFESUNBTCBESVBQRVI7U287MDtPTjs8Y29tcGF0PiA2NTk3Ozs7O047Ozs7OworMkY0NDtLQU5HWEkgUkFESUNBTCBBWEU7U287MDtPTjs8Y29tcGF0PiA2NUE0Ozs7O047Ozs7OworMkY0NTtLQU5HWEkgUkFESUNBTCBTUVVBUkU7U287MDtPTjs8Y29tcGF0PiA2NUI5Ozs7O047Ozs7OworMkY0NjtLQU5HWEkgUkFESUNBTCBOT1Q7U287MDtPTjs8Y29tcGF0PiA2NUUwOzs7O047Ozs7OworMkY0NztLQU5HWEkgUkFESUNBTCBTVU47U287MDtPTjs8Y29tcGF0PiA2NUU1Ozs7O047Ozs7OworMkY0ODtLQU5HWEkgUkFESUNBTCBTQVk7U287MDtPTjs8Y29tcGF0PiA2NkYwOzs7O047Ozs7OworMkY0OTtLQU5HWEkgUkFESUNBTCBNT09OO1NvOzA7T047PGNvbXBhdD4gNjcwODs7OztOOzs7OzsKKzJGNEE7S0FOR1hJIFJBRElDQUwgVFJFRTtTbzswO09OOzxjb21wYXQ+IDY3Mjg7Ozs7Tjs7Ozs7CisyRjRCO0tBTkdYSSBSQURJQ0FMIExBQ0s7U287MDtPTjs8Y29tcGF0PiA2QjIwOzs7O047Ozs7OworMkY0QztLQU5HWEkgUkFESUNBTCBTVE9QO1NvOzA7T047PGNvbXBhdD4gNkI2Mjs7OztOOzs7OzsKKzJGNEQ7S0FOR1hJIFJBRElDQUwgREVBVEg7U287MDtPTjs8Y29tcGF0PiA2Qjc5Ozs7O047Ozs7OworMkY0RTtLQU5HWEkgUkFESUNBTCBXRUFQT047U287MDtPTjs8Y29tcGF0PiA2QkIzOzs7O047Ozs7OworMkY0RjtLQU5HWEkgUkFESUNBTCBETyBOT1Q7U287MDtPTjs8Y29tcGF0PiA2QkNCOzs7O047Ozs7OworMkY1MDtLQU5HWEkgUkFESUNBTCBDT01QQVJFO1NvOzA7T047PGNvbXBhdD4gNkJENDs7OztOOzs7OzsKKzJGNTE7S0FOR1hJIFJBRElDQUwgRlVSO1NvOzA7T047PGNvbXBhdD4gNkJEQjs7OztOOzs7OzsKKzJGNTI7S0FOR1hJIFJBRElDQUwgQ0xBTjtTbzswO09OOzxjb21wYXQ+IDZDMEY7Ozs7Tjs7Ozs7CisyRjUzO0tBTkdYSSBSQURJQ0FMIFNURUFNO1NvOzA7T047PGNvbXBhdD4gNkMxNDs7OztOOzs7OzsKKzJGNTQ7S0FOR1hJIFJBRElDQUwgV0FURVI7U287MDtPTjs8Y29tcGF0PiA2QzM0Ozs7O047Ozs7OworMkY1NTtLQU5HWEkgUkFESUNBTCBGSVJFO1NvOzA7T047PGNvbXBhdD4gNzA2Qjs7OztOOzs7OzsKKzJGNTY7S0FOR1hJIFJBRElDQUwgQ0xBVztTbzswO09OOzxjb21wYXQ+IDcyMkE7Ozs7Tjs7Ozs7CisyRjU3O0tBTkdYSSBSQURJQ0FMIEZBVEhFUjtTbzswO09OOzxjb21wYXQ+IDcyMzY7Ozs7Tjs7Ozs7CisyRjU4O0tBTkdYSSBSQURJQ0FMIERPVUJMRSBYO1NvOzA7T047PGNvbXBhdD4gNzIzQjs7OztOOzs7OzsKKzJGNTk7S0FOR1hJIFJBRElDQUwgSEFMRiBUUkVFIFRSVU5LO1NvOzA7T047PGNvbXBhdD4gNzIzRjs7OztOOzs7OzsKKzJGNUE7S0FOR1hJIFJBRElDQUwgU0xJQ0U7U287MDtPTjs8Y29tcGF0PiA3MjQ3Ozs7O047Ozs7OworMkY1QjtLQU5HWEkgUkFESUNBTCBGQU5HO1NvOzA7T047PGNvbXBhdD4gNzI1OTs7OztOOzs7OzsKKzJGNUM7S0FOR1hJIFJBRElDQUwgQ09XO1NvOzA7T047PGNvbXBhdD4gNzI1Qjs7OztOOzs7OzsKKzJGNUQ7S0FOR1hJIFJBRElDQUwgRE9HO1NvOzA7T047PGNvbXBhdD4gNzJBQzs7OztOOzs7OzsKKzJGNUU7S0FOR1hJIFJBRElDQUwgUFJPRk9VTkQ7U287MDtPTjs8Y29tcGF0PiA3Mzg0Ozs7O047Ozs7OworMkY1RjtLQU5HWEkgUkFESUNBTCBKQURFO1NvOzA7T047PGNvbXBhdD4gNzM4OTs7OztOOzs7OzsKKzJGNjA7S0FOR1hJIFJBRElDQUwgTUVMT047U287MDtPTjs8Y29tcGF0PiA3NERDOzs7O047Ozs7OworMkY2MTtLQU5HWEkgUkFESUNBTCBUSUxFO1NvOzA7T047PGNvbXBhdD4gNzRFNjs7OztOOzs7OzsKKzJGNjI7S0FOR1hJIFJBRElDQUwgU1dFRVQ7U287MDtPTjs8Y29tcGF0PiA3NTE4Ozs7O047Ozs7OworMkY2MztLQU5HWEkgUkFESUNBTCBMSUZFO1NvOzA7T047PGNvbXBhdD4gNzUxRjs7OztOOzs7OzsKKzJGNjQ7S0FOR1hJIFJBRElDQUwgVVNFO1NvOzA7T047PGNvbXBhdD4gNzUyODs7OztOOzs7OzsKKzJGNjU7S0FOR1hJIFJBRElDQUwgRklFTEQ7U287MDtPTjs8Y29tcGF0PiA3NTMwOzs7O047Ozs7OworMkY2NjtLQU5HWEkgUkFESUNBTCBCT0xUIE9GIENMT1RIO1NvOzA7T047PGNvbXBhdD4gNzU4Qjs7OztOOzs7OzsKKzJGNjc7S0FOR1hJIFJBRElDQUwgU0lDS05FU1M7U287MDtPTjs8Y29tcGF0PiA3NTkyOzs7O047Ozs7OworMkY2ODtLQU5HWEkgUkFESUNBTCBET1RURUQgVEVOVDtTbzswO09OOzxjb21wYXQ+IDc2NzY7Ozs7Tjs7Ozs7CisyRjY5O0tBTkdYSSBSQURJQ0FMIFdISVRFO1NvOzA7T047PGNvbXBhdD4gNzY3RDs7OztOOzs7OzsKKzJGNkE7S0FOR1hJIFJBRElDQUwgU0tJTjtTbzswO09OOzxjb21wYXQ+IDc2QUU7Ozs7Tjs7Ozs7CisyRjZCO0tBTkdYSSBSQURJQ0FMIERJU0g7U287MDtPTjs8Y29tcGF0PiA3NkJGOzs7O047Ozs7OworMkY2QztLQU5HWEkgUkFESUNBTCBFWUU7U287MDtPTjs8Y29tcGF0PiA3NkVFOzs7O047Ozs7OworMkY2RDtLQU5HWEkgUkFESUNBTCBTUEVBUjtTbzswO09OOzxjb21wYXQ+IDc3REI7Ozs7Tjs7Ozs7CisyRjZFO0tBTkdYSSBSQURJQ0FMIEFSUk9XO1NvOzA7T047PGNvbXBhdD4gNzdFMjs7OztOOzs7OzsKKzJGNkY7S0FOR1hJIFJBRElDQUwgU1RPTkU7U287MDtPTjs8Y29tcGF0PiA3N0YzOzs7O047Ozs7OworMkY3MDtLQU5HWEkgUkFESUNBTCBTUElSSVQ7U287MDtPTjs8Y29tcGF0PiA3OTNBOzs7O047Ozs7OworMkY3MTtLQU5HWEkgUkFESUNBTCBUUkFDSztTbzswO09OOzxjb21wYXQ+IDc5Qjg7Ozs7Tjs7Ozs7CisyRjcyO0tBTkdYSSBSQURJQ0FMIEdSQUlOO1NvOzA7T047PGNvbXBhdD4gNzlCRTs7OztOOzs7OzsKKzJGNzM7S0FOR1hJIFJBRElDQUwgQ0FWRTtTbzswO09OOzxjb21wYXQ+IDdBNzQ7Ozs7Tjs7Ozs7CisyRjc0O0tBTkdYSSBSQURJQ0FMIFNUQU5EO1NvOzA7T047PGNvbXBhdD4gN0FDQjs7OztOOzs7OzsKKzJGNzU7S0FOR1hJIFJBRElDQUwgQkFNQk9PO1NvOzA7T047PGNvbXBhdD4gN0FGOTs7OztOOzs7OzsKKzJGNzY7S0FOR1hJIFJBRElDQUwgUklDRTtTbzswO09OOzxjb21wYXQ+IDdDNzM7Ozs7Tjs7Ozs7CisyRjc3O0tBTkdYSSBSQURJQ0FMIFNJTEs7U287MDtPTjs8Y29tcGF0PiA3Q0Y4Ozs7O047Ozs7OworMkY3ODtLQU5HWEkgUkFESUNBTCBKQVI7U287MDtPTjs8Y29tcGF0PiA3RjM2Ozs7O047Ozs7OworMkY3OTtLQU5HWEkgUkFESUNBTCBORVQ7U287MDtPTjs8Y29tcGF0PiA3RjUxOzs7O047Ozs7OworMkY3QTtLQU5HWEkgUkFESUNBTCBTSEVFUDtTbzswO09OOzxjb21wYXQ+IDdGOEE7Ozs7Tjs7Ozs7CisyRjdCO0tBTkdYSSBSQURJQ0FMIEZFQVRIRVI7U287MDtPTjs8Y29tcGF0PiA3RkJEOzs7O047Ozs7OworMkY3QztLQU5HWEkgUkFESUNBTCBPTEQ7U287MDtPTjs8Y29tcGF0PiA4MDAxOzs7O047Ozs7OworMkY3RDtLQU5HWEkgUkFESUNBTCBBTkQ7U287MDtPTjs8Y29tcGF0PiA4MDBDOzs7O047Ozs7OworMkY3RTtLQU5HWEkgUkFESUNBTCBQTE9XO1NvOzA7T047PGNvbXBhdD4gODAxMjs7OztOOzs7OzsKKzJGN0Y7S0FOR1hJIFJBRElDQUwgRUFSO1NvOzA7T047PGNvbXBhdD4gODAzMzs7OztOOzs7OzsKKzJGODA7S0FOR1hJIFJBRElDQUwgQlJVU0g7U287MDtPTjs8Y29tcGF0PiA4MDdGOzs7O047Ozs7OworMkY4MTtLQU5HWEkgUkFESUNBTCBNRUFUO1NvOzA7T047PGNvbXBhdD4gODA4OTs7OztOOzs7OzsKKzJGODI7S0FOR1hJIFJBRElDQUwgTUlOSVNURVI7U287MDtPTjs8Y29tcGF0PiA4MUUzOzs7O047Ozs7OworMkY4MztLQU5HWEkgUkFESUNBTCBTRUxGO1NvOzA7T047PGNvbXBhdD4gODFFQTs7OztOOzs7OzsKKzJGODQ7S0FOR1hJIFJBRElDQUwgQVJSSVZFO1NvOzA7T047PGNvbXBhdD4gODFGMzs7OztOOzs7OzsKKzJGODU7S0FOR1hJIFJBRElDQUwgTU9SVEFSO1NvOzA7T047PGNvbXBhdD4gODFGQzs7OztOOzs7OzsKKzJGODY7S0FOR1hJIFJBRElDQUwgVE9OR1VFO1NvOzA7T047PGNvbXBhdD4gODIwQzs7OztOOzs7OzsKKzJGODc7S0FOR1hJIFJBRElDQUwgT1BQT1NFO1NvOzA7T047PGNvbXBhdD4gODIxQjs7OztOOzs7OzsKKzJGODg7S0FOR1hJIFJBRElDQUwgQk9BVDtTbzswO09OOzxjb21wYXQ+IDgyMUY7Ozs7Tjs7Ozs7CisyRjg5O0tBTkdYSSBSQURJQ0FMIFNUT1BQSU5HO1NvOzA7T047PGNvbXBhdD4gODI2RTs7OztOOzs7OzsKKzJGOEE7S0FOR1hJIFJBRElDQUwgQ09MT1I7U287MDtPTjs8Y29tcGF0PiA4MjcyOzs7O047Ozs7OworMkY4QjtLQU5HWEkgUkFESUNBTCBHUkFTUztTbzswO09OOzxjb21wYXQ+IDgyNzg7Ozs7Tjs7Ozs7CisyRjhDO0tBTkdYSSBSQURJQ0FMIFRJR0VSO1NvOzA7T047PGNvbXBhdD4gODY0RDs7OztOOzs7OzsKKzJGOEQ7S0FOR1hJIFJBRElDQUwgSU5TRUNUO1NvOzA7T047PGNvbXBhdD4gODY2Qjs7OztOOzs7OzsKKzJGOEU7S0FOR1hJIFJBRElDQUwgQkxPT0Q7U287MDtPTjs8Y29tcGF0PiA4ODQwOzs7O047Ozs7OworMkY4RjtLQU5HWEkgUkFESUNBTCBXQUxLIEVOQ0xPU1VSRTtTbzswO09OOzxjb21wYXQ+IDg4NEM7Ozs7Tjs7Ozs7CisyRjkwO0tBTkdYSSBSQURJQ0FMIENMT1RIRVM7U287MDtPTjs8Y29tcGF0PiA4ODYzOzs7O047Ozs7OworMkY5MTtLQU5HWEkgUkFESUNBTCBXRVNUO1NvOzA7T047PGNvbXBhdD4gODk3RTs7OztOOzs7OzsKKzJGOTI7S0FOR1hJIFJBRElDQUwgU0VFO1NvOzA7T047PGNvbXBhdD4gODk4Qjs7OztOOzs7OzsKKzJGOTM7S0FOR1hJIFJBRElDQUwgSE9STjtTbzswO09OOzxjb21wYXQ+IDg5RDI7Ozs7Tjs7Ozs7CisyRjk0O0tBTkdYSSBSQURJQ0FMIFNQRUVDSDtTbzswO09OOzxjb21wYXQ+IDhBMDA7Ozs7Tjs7Ozs7CisyRjk1O0tBTkdYSSBSQURJQ0FMIFZBTExFWTtTbzswO09OOzxjb21wYXQ+IDhDMzc7Ozs7Tjs7Ozs7CisyRjk2O0tBTkdYSSBSQURJQ0FMIEJFQU47U287MDtPTjs8Y29tcGF0PiA4QzQ2Ozs7O047Ozs7OworMkY5NztLQU5HWEkgUkFESUNBTCBQSUc7U287MDtPTjs8Y29tcGF0PiA4QzU1Ozs7O047Ozs7OworMkY5ODtLQU5HWEkgUkFESUNBTCBCQURHRVI7U287MDtPTjs8Y29tcGF0PiA4Qzc4Ozs7O047Ozs7OworMkY5OTtLQU5HWEkgUkFESUNBTCBTSEVMTDtTbzswO09OOzxjb21wYXQ+IDhDOUQ7Ozs7Tjs7Ozs7CisyRjlBO0tBTkdYSSBSQURJQ0FMIFJFRDtTbzswO09OOzxjb21wYXQ+IDhENjQ7Ozs7Tjs7Ozs7CisyRjlCO0tBTkdYSSBSQURJQ0FMIFJVTjtTbzswO09OOzxjb21wYXQ+IDhENzA7Ozs7Tjs7Ozs7CisyRjlDO0tBTkdYSSBSQURJQ0FMIEZPT1Q7U287MDtPTjs8Y29tcGF0PiA4REIzOzs7O047Ozs7OworMkY5RDtLQU5HWEkgUkFESUNBTCBCT0RZO1NvOzA7T047PGNvbXBhdD4gOEVBQjs7OztOOzs7OzsKKzJGOUU7S0FOR1hJIFJBRElDQUwgQ0FSVDtTbzswO09OOzxjb21wYXQ+IDhFQ0E7Ozs7Tjs7Ozs7CisyRjlGO0tBTkdYSSBSQURJQ0FMIEJJVFRFUjtTbzswO09OOzxjb21wYXQ+IDhGOUI7Ozs7Tjs7Ozs7CisyRkEwO0tBTkdYSSBSQURJQ0FMIE1PUk5JTkc7U287MDtPTjs8Y29tcGF0PiA4RkIwOzs7O047Ozs7OworMkZBMTtLQU5HWEkgUkFESUNBTCBXQUxLO1NvOzA7T047PGNvbXBhdD4gOEZCNTs7OztOOzs7OzsKKzJGQTI7S0FOR1hJIFJBRElDQUwgQ0lUWTtTbzswO09OOzxjb21wYXQ+IDkwOTE7Ozs7Tjs7Ozs7CisyRkEzO0tBTkdYSSBSQURJQ0FMIFdJTkU7U287MDtPTjs8Y29tcGF0PiA5MTQ5Ozs7O047Ozs7OworMkZBNDtLQU5HWEkgUkFESUNBTCBESVNUSU5HVUlTSDtTbzswO09OOzxjb21wYXQ+IDkxQzY7Ozs7Tjs7Ozs7CisyRkE1O0tBTkdYSSBSQURJQ0FMIFZJTExBR0U7U287MDtPTjs8Y29tcGF0PiA5MUNDOzs7O047Ozs7OworMkZBNjtLQU5HWEkgUkFESUNBTCBHT0xEO1NvOzA7T047PGNvbXBhdD4gOTFEMTs7OztOOzs7OzsKKzJGQTc7S0FOR1hJIFJBRElDQUwgTE9ORztTbzswO09OOzxjb21wYXQ+IDk1Nzc7Ozs7Tjs7Ozs7CisyRkE4O0tBTkdYSSBSQURJQ0FMIEdBVEU7U287MDtPTjs8Y29tcGF0PiA5NTgwOzs7O047Ozs7OworMkZBOTtLQU5HWEkgUkFESUNBTCBNT1VORDtTbzswO09OOzxjb21wYXQ+IDk2MUM7Ozs7Tjs7Ozs7CisyRkFBO0tBTkdYSSBSQURJQ0FMIFNMQVZFO1NvOzA7T047PGNvbXBhdD4gOTZCNjs7OztOOzs7OzsKKzJGQUI7S0FOR1hJIFJBRElDQUwgU0hPUlQgVEFJTEVEIEJJUkQ7U287MDtPTjs8Y29tcGF0PiA5NkI5Ozs7O047Ozs7OworMkZBQztLQU5HWEkgUkFESUNBTCBSQUlOO1NvOzA7T047PGNvbXBhdD4gOTZFODs7OztOOzs7OzsKKzJGQUQ7S0FOR1hJIFJBRElDQUwgQkxVRTtTbzswO09OOzxjb21wYXQ+IDk3NTE7Ozs7Tjs7Ozs7CisyRkFFO0tBTkdYSSBSQURJQ0FMIFdST05HO1NvOzA7T047PGNvbXBhdD4gOTc1RTs7OztOOzs7OzsKKzJGQUY7S0FOR1hJIFJBRElDQUwgRkFDRTtTbzswO09OOzxjb21wYXQ+IDk3NjI7Ozs7Tjs7Ozs7CisyRkIwO0tBTkdYSSBSQURJQ0FMIExFQVRIRVI7U287MDtPTjs8Y29tcGF0PiA5NzY5Ozs7O047Ozs7OworMkZCMTtLQU5HWEkgUkFESUNBTCBUQU5ORUQgTEVBVEhFUjtTbzswO09OOzxjb21wYXQ+IDk3Q0I7Ozs7Tjs7Ozs7CisyRkIyO0tBTkdYSSBSQURJQ0FMIExFRUs7U287MDtPTjs8Y29tcGF0PiA5N0VEOzs7O047Ozs7OworMkZCMztLQU5HWEkgUkFESUNBTCBTT1VORDtTbzswO09OOzxjb21wYXQ+IDk3RjM7Ozs7Tjs7Ozs7CisyRkI0O0tBTkdYSSBSQURJQ0FMIExFQUY7U287MDtPTjs8Y29tcGF0PiA5ODAxOzs7O047Ozs7OworMkZCNTtLQU5HWEkgUkFESUNBTCBXSU5EO1NvOzA7T047PGNvbXBhdD4gOThBODs7OztOOzs7OzsKKzJGQjY7S0FOR1hJIFJBRElDQUwgRkxZO1NvOzA7T047PGNvbXBhdD4gOThEQjs7OztOOzs7OzsKKzJGQjc7S0FOR1hJIFJBRElDQUwgRUFUO1NvOzA7T047PGNvbXBhdD4gOThERjs7OztOOzs7OzsKKzJGQjg7S0FOR1hJIFJBRElDQUwgSEVBRDtTbzswO09OOzxjb21wYXQ+IDk5OTY7Ozs7Tjs7Ozs7CisyRkI5O0tBTkdYSSBSQURJQ0FMIEZSQUdSQU5UO1NvOzA7T047PGNvbXBhdD4gOTk5OTs7OztOOzs7OzsKKzJGQkE7S0FOR1hJIFJBRElDQUwgSE9SU0U7U287MDtPTjs8Y29tcGF0PiA5OUFDOzs7O047Ozs7OworMkZCQjtLQU5HWEkgUkFESUNBTCBCT05FO1NvOzA7T047PGNvbXBhdD4gOUFBODs7OztOOzs7OzsKKzJGQkM7S0FOR1hJIFJBRElDQUwgVEFMTDtTbzswO09OOzxjb21wYXQ+IDlBRDg7Ozs7Tjs7Ozs7CisyRkJEO0tBTkdYSSBSQURJQ0FMIEhBSVI7U287MDtPTjs8Y29tcGF0PiA5QURGOzs7O047Ozs7OworMkZCRTtLQU5HWEkgUkFESUNBTCBGSUdIVDtTbzswO09OOzxjb21wYXQ+IDlCMjU7Ozs7Tjs7Ozs7CisyRkJGO0tBTkdYSSBSQURJQ0FMIFNBQ1JJRklDSUFMIFdJTkU7U287MDtPTjs8Y29tcGF0PiA5QjJGOzs7O047Ozs7OworMkZDMDtLQU5HWEkgUkFESUNBTCBDQVVMRFJPTjtTbzswO09OOzxjb21wYXQ+IDlCMzI7Ozs7Tjs7Ozs7CisyRkMxO0tBTkdYSSBSQURJQ0FMIEdIT1NUO1NvOzA7T047PGNvbXBhdD4gOUIzQzs7OztOOzs7OzsKKzJGQzI7S0FOR1hJIFJBRElDQUwgRklTSDtTbzswO09OOzxjb21wYXQ+IDlCNUE7Ozs7Tjs7Ozs7CisyRkMzO0tBTkdYSSBSQURJQ0FMIEJJUkQ7U287MDtPTjs8Y29tcGF0PiA5Q0U1Ozs7O047Ozs7OworMkZDNDtLQU5HWEkgUkFESUNBTCBTQUxUO1NvOzA7T047PGNvbXBhdD4gOUU3NTs7OztOOzs7OzsKKzJGQzU7S0FOR1hJIFJBRElDQUwgREVFUjtTbzswO09OOzxjb21wYXQ+IDlFN0Y7Ozs7Tjs7Ozs7CisyRkM2O0tBTkdYSSBSQURJQ0FMIFdIRUFUO1NvOzA7T047PGNvbXBhdD4gOUVBNTs7OztOOzs7OzsKKzJGQzc7S0FOR1hJIFJBRElDQUwgSEVNUDtTbzswO09OOzxjb21wYXQ+IDlFQkI7Ozs7Tjs7Ozs7CisyRkM4O0tBTkdYSSBSQURJQ0FMIFlFTExPVztTbzswO09OOzxjb21wYXQ+IDlFQzM7Ozs7Tjs7Ozs7CisyRkM5O0tBTkdYSSBSQURJQ0FMIE1JTExFVDtTbzswO09OOzxjb21wYXQ+IDlFQ0Q7Ozs7Tjs7Ozs7CisyRkNBO0tBTkdYSSBSQURJQ0FMIEJMQUNLO1NvOzA7T047PGNvbXBhdD4gOUVEMTs7OztOOzs7OzsKKzJGQ0I7S0FOR1hJIFJBRElDQUwgRU1CUk9JREVSWTtTbzswO09OOzxjb21wYXQ+IDlFRjk7Ozs7Tjs7Ozs7CisyRkNDO0tBTkdYSSBSQURJQ0FMIEZST0c7U287MDtPTjs8Y29tcGF0PiA5RUZEOzs7O047Ozs7OworMkZDRDtLQU5HWEkgUkFESUNBTCBUUklQT0Q7U287MDtPTjs8Y29tcGF0PiA5RjBFOzs7O047Ozs7OworMkZDRTtLQU5HWEkgUkFESUNBTCBEUlVNO1NvOzA7T047PGNvbXBhdD4gOUYxMzs7OztOOzs7OzsKKzJGQ0Y7S0FOR1hJIFJBRElDQUwgUkFUO1NvOzA7T047PGNvbXBhdD4gOUYyMDs7OztOOzs7OzsKKzJGRDA7S0FOR1hJIFJBRElDQUwgTk9TRTtTbzswO09OOzxjb21wYXQ+IDlGM0I7Ozs7Tjs7Ozs7CisyRkQxO0tBTkdYSSBSQURJQ0FMIEVWRU47U287MDtPTjs8Y29tcGF0PiA5RjRBOzs7O047Ozs7OworMkZEMjtLQU5HWEkgUkFESUNBTCBUT09USDtTbzswO09OOzxjb21wYXQ+IDlGNTI7Ozs7Tjs7Ozs7CisyRkQzO0tBTkdYSSBSQURJQ0FMIERSQUdPTjtTbzswO09OOzxjb21wYXQ+IDlGOEQ7Ozs7Tjs7Ozs7CisyRkQ0O0tBTkdYSSBSQURJQ0FMIFRVUlRMRTtTbzswO09OOzxjb21wYXQ+IDlGOUM7Ozs7Tjs7Ozs7CisyRkQ1O0tBTkdYSSBSQURJQ0FMIEZMVVRFO1NvOzA7T047PGNvbXBhdD4gOUZBMDs7OztOOzs7OzsKKzJGRjA7SURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIExFRlQgVE8gUklHSFQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRkYxO0lERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBBQk9WRSBUTyBCRUxPVztTbzswO09OOzs7OztOOzs7OzsKKzJGRjI7SURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIExFRlQgVE8gTUlERExFIEFORCBSSUdIVDtTbzswO09OOzs7OztOOzs7OzsKKzJGRjM7SURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIEFCT1ZFIFRPIE1JRERMRSBBTkQgQkVMT1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRkY0O0lERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBGVUxMIFNVUlJPVU5EO1NvOzA7T047Ozs7O047Ozs7OworMkZGNTtJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBBQk9WRTtTbzswO09OOzs7OztOOzs7OzsKKzJGRjY7SURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gQkVMT1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRkY3O0lERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIExFRlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRkY4O0lERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIFVQUEVSIExFRlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRkY5O0lERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIFVQUEVSIFJJR0hUO1NvOzA7T047Ozs7O047Ozs7OworMkZGQTtJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBMT1dFUiBMRUZUO1NvOzA7T047Ozs7O047Ozs7OworMkZGQjtJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgT1ZFUkxBSUQ7U287MDtPTjs7Ozs7Tjs7Ozs7CiszMDAwO0lERU9HUkFQSElDIFNQQUNFO1pzOzA7V1M7PHdpZGU+IDAwMjA7Ozs7Tjs7Ozs7CiszMDAxO0lERU9HUkFQSElDIENPTU1BO1BvOzA7T047Ozs7O047Ozs7OworMzAwMjtJREVPR1JBUEhJQyBGVUxMIFNUT1A7UG87MDtPTjs7Ozs7TjtJREVPR1JBUEhJQyBQRVJJT0Q7Ozs7CiszMDAzO0RJVFRPIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CiszMDA0O0pBUEFORVNFIElORFVTVFJJQUwgU1RBTkRBUkQgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMzAwNTtJREVPR1JBUEhJQyBJVEVSQVRJT04gTUFSSztMbTswO0w7Ozs7O047Ozs7OworMzAwNjtJREVPR1JBUEhJQyBDTE9TSU5HIE1BUks7TG87MDtMOzs7OztOOzs7OzsKKzMwMDc7SURFT0dSQVBISUMgTlVNQkVSIFpFUk87Tmw7MDtMOzs7OzA7Tjs7Ozs7CiszMDA4O0xFRlQgQU5HTEUgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgQU5HTEUgQlJBQ0tFVDs7OzsKKzMwMDk7UklHSFQgQU5HTEUgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgQU5HTEUgQlJBQ0tFVDs7OzsKKzMwMEE7TEVGVCBET1VCTEUgQU5HTEUgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgRE9VQkxFIEFOR0xFIEJSQUNLRVQ7Ozs7CiszMDBCO1JJR0hUIERPVUJMRSBBTkdMRSBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBET1VCTEUgQU5HTEUgQlJBQ0tFVDs7OzsKKzMwMEM7TEVGVCBDT1JORVIgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgQ09STkVSIEJSQUNLRVQ7Ozs7CiszMDBEO1JJR0hUIENPUk5FUiBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBDT1JORVIgQlJBQ0tFVDs7OzsKKzMwMEU7TEVGVCBXSElURSBDT1JORVIgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgV0hJVEUgQ09STkVSIEJSQUNLRVQ7Ozs7CiszMDBGO1JJR0hUIFdISVRFIENPUk5FUiBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBXSElURSBDT1JORVIgQlJBQ0tFVDs7OzsKKzMwMTA7TEVGVCBCTEFDSyBMRU5USUNVTEFSIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIEJMQUNLIExFTlRJQ1VMQVIgQlJBQ0tFVDs7OzsKKzMwMTE7UklHSFQgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBCTEFDSyBMRU5USUNVTEFSIEJSQUNLRVQ7Ozs7CiszMDEyO1BPU1RBTCBNQVJLO1NvOzA7T047Ozs7O047Ozs7OworMzAxMztHRVRBIE1BUks7U287MDtPTjs7Ozs7Tjs7Ozs7CiszMDE0O0xFRlQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKKzMwMTU7UklHSFQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKKzMwMTY7TEVGVCBXSElURSBMRU5USUNVTEFSIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIFdISVRFIExFTlRJQ1VMQVIgQlJBQ0tFVDs7OzsKKzMwMTc7UklHSFQgV0hJVEUgTEVOVElDVUxBUiBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBXSElURSBMRU5USUNVTEFSIEJSQUNLRVQ7Ozs7CiszMDE4O0xFRlQgV0hJVEUgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgV0hJVEUgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKKzMwMTk7UklHSFQgV0hJVEUgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgV0hJVEUgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKKzMwMUE7TEVGVCBXSElURSBTUVVBUkUgQlJBQ0tFVDtQczswO09OOzs7OztZO09QRU5JTkcgV0hJVEUgU1FVQVJFIEJSQUNLRVQ7Ozs7CiszMDFCO1JJR0hUIFdISVRFIFNRVUFSRSBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBXSElURSBTUVVBUkUgQlJBQ0tFVDs7OzsKKzMwMUM7V0FWRSBEQVNIO1BkOzA7T047Ozs7O047Ozs7OworMzAxRDtSRVZFUlNFRCBET1VCTEUgUFJJTUUgUVVPVEFUSU9OIE1BUks7UHM7MDtPTjs7Ozs7Tjs7Ozs7CiszMDFFO0RPVUJMRSBQUklNRSBRVU9UQVRJT04gTUFSSztQZTswO09OOzs7OztOOzs7OzsKKzMwMUY7TE9XIERPVUJMRSBQUklNRSBRVU9UQVRJT04gTUFSSztQZTswO09OOzs7OztOOzs7OzsKKzMwMjA7UE9TVEFMIE1BUksgRkFDRTtTbzswO09OOzs7OztOOzs7OzsKKzMwMjE7SEFOR1pIT1UgTlVNRVJBTCBPTkU7Tmw7MDtMOzs7OzE7Tjs7Ozs7CiszMDIyO0hBTkdaSE9VIE5VTUVSQUwgVFdPO05sOzA7TDs7OzsyO047Ozs7OworMzAyMztIQU5HWkhPVSBOVU1FUkFMIFRIUkVFO05sOzA7TDs7OzszO047Ozs7OworMzAyNDtIQU5HWkhPVSBOVU1FUkFMIEZPVVI7Tmw7MDtMOzs7OzQ7Tjs7Ozs7CiszMDI1O0hBTkdaSE9VIE5VTUVSQUwgRklWRTtObDswO0w7Ozs7NTtOOzs7OzsKKzMwMjY7SEFOR1pIT1UgTlVNRVJBTCBTSVg7Tmw7MDtMOzs7OzY7Tjs7Ozs7CiszMDI3O0hBTkdaSE9VIE5VTUVSQUwgU0VWRU47Tmw7MDtMOzs7Ozc7Tjs7Ozs7CiszMDI4O0hBTkdaSE9VIE5VTUVSQUwgRUlHSFQ7Tmw7MDtMOzs7Ozg7Tjs7Ozs7CiszMDI5O0hBTkdaSE9VIE5VTUVSQUwgTklORTtObDswO0w7Ozs7OTtOOzs7OzsKKzMwMkE7SURFT0dSQVBISUMgTEVWRUwgVE9ORSBNQVJLO01uOzIxODtOU007Ozs7O047Ozs7OworMzAyQjtJREVPR1JBUEhJQyBSSVNJTkcgVE9ORSBNQVJLO01uOzIyODtOU007Ozs7O047Ozs7OworMzAyQztJREVPR1JBUEhJQyBERVBBUlRJTkcgVE9ORSBNQVJLO01uOzIzMjtOU007Ozs7O047Ozs7OworMzAyRDtJREVPR1JBUEhJQyBFTlRFUklORyBUT05FIE1BUks7TW47MjIyO05TTTs7Ozs7Tjs7Ozs7CiszMDJFO0hBTkdVTCBTSU5HTEUgRE9UIFRPTkUgTUFSSztNbjsyMjQ7TlNNOzs7OztOOzs7OzsKKzMwMkY7SEFOR1VMIERPVUJMRSBET1QgVE9ORSBNQVJLO01uOzIyNDtOU007Ozs7O047Ozs7OworMzAzMDtXQVZZIERBU0g7UGQ7MDtPTjs7Ozs7Tjs7Ozs7CiszMDMxO1ZFUlRJQ0FMIEtBTkEgUkVQRUFUIE1BUks7TG07MDtMOzs7OztOOzs7OzsKKzMwMzI7VkVSVElDQUwgS0FOQSBSRVBFQVQgV0lUSCBWT0lDRUQgU09VTkQgTUFSSztMbTswO0w7Ozs7O047Ozs7OworMzAzMztWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIFVQUEVSIEhBTEY7TG07MDtMOzs7OztOOzs7OzsKKzMwMzQ7VkVSVElDQUwgS0FOQSBSRVBFQVQgV0lUSCBWT0lDRUQgU09VTkQgTUFSSyBVUFBFUiBIQUxGO0xtOzA7TDs7Ozs7Tjs7Ozs7CiszMDM1O1ZFUlRJQ0FMIEtBTkEgUkVQRUFUIE1BUksgTE9XRVIgSEFMRjtMbTswO0w7Ozs7O047Ozs7OworMzAzNjtDSVJDTEVEIFBPU1RBTCBNQVJLO1NvOzA7T047PGNvbXBhdD4gMzAxMjs7OztOOzs7OzsKKzMwMzc7SURFT0dSQVBISUMgVEVMRUdSQVBIIExJTkUgRkVFRCBTRVBBUkFUT1IgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMzAzODtIQU5HWkhPVSBOVU1FUkFMIFRFTjtObDswO0w7PGNvbXBhdD4gNTM0MTs7OzEwO047Ozs7OworMzAzOTtIQU5HWkhPVSBOVU1FUkFMIFRXRU5UWTtObDswO0w7PGNvbXBhdD4gNTM0NDs7OzIwO047Ozs7OworMzAzQTtIQU5HWkhPVSBOVU1FUkFMIFRISVJUWTtObDswO0w7PGNvbXBhdD4gNTM0NTs7OzMwO047Ozs7OworMzAzRTtJREVPR1JBUEhJQyBWQVJJQVRJT04gSU5ESUNBVE9SO1NvOzA7T047Ozs7O047Ozs7OworMzAzRjtJREVPR1JBUEhJQyBIQUxGIEZJTEwgU1BBQ0U7U287MDtPTjs7Ozs7Tjs7Ozs7CiszMDQxO0hJUkFHQU5BIExFVFRFUiBTTUFMTCBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQyO0hJUkFHQU5BIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQzO0hJUkFHQU5BIExFVFRFUiBTTUFMTCBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQ0O0hJUkFHQU5BIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQ1O0hJUkFHQU5BIExFVFRFUiBTTUFMTCBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQ2O0hJUkFHQU5BIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQ3O0hJUkFHQU5BIExFVFRFUiBTTUFMTCBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQ4O0hJUkFHQU5BIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDQ5O0hJUkFHQU5BIExFVFRFUiBTTUFMTCBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDRBO0hJUkFHQU5BIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDRCO0hJUkFHQU5BIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMzA0QztISVJBR0FOQSBMRVRURVIgR0E7TG87MDtMOzMwNEIgMzA5OTs7OztOOzs7OzsKKzMwNEQ7SElSQUdBTkEgTEVUVEVSIEtJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDRFO0hJUkFHQU5BIExFVFRFUiBHSTtMbzswO0w7MzA0RCAzMDk5Ozs7O047Ozs7OworMzA0RjtISVJBR0FOQSBMRVRURVIgS1U7TG87MDtMOzs7OztOOzs7OzsKKzMwNTA7SElSQUdBTkEgTEVUVEVSIEdVO0xvOzA7TDszMDRGIDMwOTk7Ozs7Tjs7Ozs7CiszMDUxO0hJUkFHQU5BIExFVFRFUiBLRTtMbzswO0w7Ozs7O047Ozs7OworMzA1MjtISVJBR0FOQSBMRVRURVIgR0U7TG87MDtMOzMwNTEgMzA5OTs7OztOOzs7OzsKKzMwNTM7SElSQUdBTkEgTEVUVEVSIEtPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDU0O0hJUkFHQU5BIExFVFRFUiBHTztMbzswO0w7MzA1MyAzMDk5Ozs7O047Ozs7OworMzA1NTtISVJBR0FOQSBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzMwNTY7SElSQUdBTkEgTEVUVEVSIFpBO0xvOzA7TDszMDU1IDMwOTk7Ozs7Tjs7Ozs7CiszMDU3O0hJUkFHQU5BIExFVFRFUiBTSTtMbzswO0w7Ozs7O047Ozs7OworMzA1ODtISVJBR0FOQSBMRVRURVIgWkk7TG87MDtMOzMwNTcgMzA5OTs7OztOOzs7OzsKKzMwNTk7SElSQUdBTkEgTEVUVEVSIFNVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDVBO0hJUkFHQU5BIExFVFRFUiBaVTtMbzswO0w7MzA1OSAzMDk5Ozs7O047Ozs7OworMzA1QjtISVJBR0FOQSBMRVRURVIgU0U7TG87MDtMOzs7OztOOzs7OzsKKzMwNUM7SElSQUdBTkEgTEVUVEVSIFpFO0xvOzA7TDszMDVCIDMwOTk7Ozs7Tjs7Ozs7CiszMDVEO0hJUkFHQU5BIExFVFRFUiBTTztMbzswO0w7Ozs7O047Ozs7OworMzA1RTtISVJBR0FOQSBMRVRURVIgWk87TG87MDtMOzMwNUQgMzA5OTs7OztOOzs7OzsKKzMwNUY7SElSQUdBTkEgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDYwO0hJUkFHQU5BIExFVFRFUiBEQTtMbzswO0w7MzA1RiAzMDk5Ozs7O047Ozs7OworMzA2MTtISVJBR0FOQSBMRVRURVIgVEk7TG87MDtMOzs7OztOOzs7OzsKKzMwNjI7SElSQUdBTkEgTEVUVEVSIERJO0xvOzA7TDszMDYxIDMwOTk7Ozs7Tjs7Ozs7CiszMDYzO0hJUkFHQU5BIExFVFRFUiBTTUFMTCBUVTtMbzswO0w7Ozs7O047Ozs7OworMzA2NDtISVJBR0FOQSBMRVRURVIgVFU7TG87MDtMOzs7OztOOzs7OzsKKzMwNjU7SElSQUdBTkEgTEVUVEVSIERVO0xvOzA7TDszMDY0IDMwOTk7Ozs7Tjs7Ozs7CiszMDY2O0hJUkFHQU5BIExFVFRFUiBURTtMbzswO0w7Ozs7O047Ozs7OworMzA2NztISVJBR0FOQSBMRVRURVIgREU7TG87MDtMOzMwNjYgMzA5OTs7OztOOzs7OzsKKzMwNjg7SElSQUdBTkEgTEVUVEVSIFRPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDY5O0hJUkFHQU5BIExFVFRFUiBETztMbzswO0w7MzA2OCAzMDk5Ozs7O047Ozs7OworMzA2QTtISVJBR0FOQSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzMwNkI7SElSQUdBTkEgTEVUVEVSIE5JO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDZDO0hJUkFHQU5BIExFVFRFUiBOVTtMbzswO0w7Ozs7O047Ozs7OworMzA2RDtISVJBR0FOQSBMRVRURVIgTkU7TG87MDtMOzs7OztOOzs7OzsKKzMwNkU7SElSQUdBTkEgTEVUVEVSIE5PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDZGO0hJUkFHQU5BIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMzA3MDtISVJBR0FOQSBMRVRURVIgQkE7TG87MDtMOzMwNkYgMzA5OTs7OztOOzs7OzsKKzMwNzE7SElSQUdBTkEgTEVUVEVSIFBBO0xvOzA7TDszMDZGIDMwOUE7Ozs7Tjs7Ozs7CiszMDcyO0hJUkFHQU5BIExFVFRFUiBISTtMbzswO0w7Ozs7O047Ozs7OworMzA3MztISVJBR0FOQSBMRVRURVIgQkk7TG87MDtMOzMwNzIgMzA5OTs7OztOOzs7OzsKKzMwNzQ7SElSQUdBTkEgTEVUVEVSIFBJO0xvOzA7TDszMDcyIDMwOUE7Ozs7Tjs7Ozs7CiszMDc1O0hJUkFHQU5BIExFVFRFUiBIVTtMbzswO0w7Ozs7O047Ozs7OworMzA3NjtISVJBR0FOQSBMRVRURVIgQlU7TG87MDtMOzMwNzUgMzA5OTs7OztOOzs7OzsKKzMwNzc7SElSQUdBTkEgTEVUVEVSIFBVO0xvOzA7TDszMDc1IDMwOUE7Ozs7Tjs7Ozs7CiszMDc4O0hJUkFHQU5BIExFVFRFUiBIRTtMbzswO0w7Ozs7O047Ozs7OworMzA3OTtISVJBR0FOQSBMRVRURVIgQkU7TG87MDtMOzMwNzggMzA5OTs7OztOOzs7OzsKKzMwN0E7SElSQUdBTkEgTEVUVEVSIFBFO0xvOzA7TDszMDc4IDMwOUE7Ozs7Tjs7Ozs7CiszMDdCO0hJUkFHQU5BIExFVFRFUiBITztMbzswO0w7Ozs7O047Ozs7OworMzA3QztISVJBR0FOQSBMRVRURVIgQk87TG87MDtMOzMwN0IgMzA5OTs7OztOOzs7OzsKKzMwN0Q7SElSQUdBTkEgTEVUVEVSIFBPO0xvOzA7TDszMDdCIDMwOUE7Ozs7Tjs7Ozs7CiszMDdFO0hJUkFHQU5BIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMzA3RjtISVJBR0FOQSBMRVRURVIgTUk7TG87MDtMOzs7OztOOzs7OzsKKzMwODA7SElSQUdBTkEgTEVUVEVSIE1VO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDgxO0hJUkFHQU5BIExFVFRFUiBNRTtMbzswO0w7Ozs7O047Ozs7OworMzA4MjtISVJBR0FOQSBMRVRURVIgTU87TG87MDtMOzs7OztOOzs7OzsKKzMwODM7SElSQUdBTkEgTEVUVEVSIFNNQUxMIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDg0O0hJUkFHQU5BIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMzA4NTtISVJBR0FOQSBMRVRURVIgU01BTEwgWVU7TG87MDtMOzs7OztOOzs7OzsKKzMwODY7SElSQUdBTkEgTEVUVEVSIFlVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDg3O0hJUkFHQU5BIExFVFRFUiBTTUFMTCBZTztMbzswO0w7Ozs7O047Ozs7OworMzA4ODtISVJBR0FOQSBMRVRURVIgWU87TG87MDtMOzs7OztOOzs7OzsKKzMwODk7SElSQUdBTkEgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDhBO0hJUkFHQU5BIExFVFRFUiBSSTtMbzswO0w7Ozs7O047Ozs7OworMzA4QjtISVJBR0FOQSBMRVRURVIgUlU7TG87MDtMOzs7OztOOzs7OzsKKzMwOEM7SElSQUdBTkEgTEVUVEVSIFJFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDhEO0hJUkFHQU5BIExFVFRFUiBSTztMbzswO0w7Ozs7O047Ozs7OworMzA4RTtISVJBR0FOQSBMRVRURVIgU01BTEwgV0E7TG87MDtMOzs7OztOOzs7OzsKKzMwOEY7SElSQUdBTkEgTEVUVEVSIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDkwO0hJUkFHQU5BIExFVFRFUiBXSTtMbzswO0w7Ozs7O047Ozs7OworMzA5MTtISVJBR0FOQSBMRVRURVIgV0U7TG87MDtMOzs7OztOOzs7OzsKKzMwOTI7SElSQUdBTkEgTEVUVEVSIFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDkzO0hJUkFHQU5BIExFVFRFUiBOO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDk0O0hJUkFHQU5BIExFVFRFUiBWVTtMbzswO0w7MzA0NiAzMDk5Ozs7O047Ozs7OworMzA5OTtDT01CSU5JTkcgS0FUQUtBTkEtSElSQUdBTkEgVk9JQ0VEIFNPVU5EIE1BUks7TW47ODtOU007Ozs7O047Tk9OLVNQQUNJTkcgS0FUQUtBTkEtSElSQUdBTkEgVk9JQ0VEIFNPVU5EIE1BUks7Ozs7CiszMDlBO0NPTUJJTklORyBLQVRBS0FOQS1ISVJBR0FOQSBTRU1JLVZPSUNFRCBTT1VORCBNQVJLO01uOzg7TlNNOzs7OztOO05PTi1TUEFDSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFNFTUktVk9JQ0VEIFNPVU5EIE1BUks7Ozs7CiszMDlCO0tBVEFLQU5BLUhJUkFHQU5BIFZPSUNFRCBTT1VORCBNQVJLO1NrOzA7T047PGNvbXBhdD4gMDAyMCAzMDk5Ozs7O047Ozs7OworMzA5QztLQVRBS0FOQS1ISVJBR0FOQSBTRU1JLVZPSUNFRCBTT1VORCBNQVJLO1NrOzA7T047PGNvbXBhdD4gMDAyMCAzMDlBOzs7O047Ozs7OworMzA5RDtISVJBR0FOQSBJVEVSQVRJT04gTUFSSztMbTswO0w7Ozs7O047Ozs7OworMzA5RTtISVJBR0FOQSBWT0lDRUQgSVRFUkFUSU9OIE1BUks7TG07MDtMOzMwOUQgMzA5OTs7OztOOzs7OzsKKzMwQTE7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIEE7TG87MDtMOzs7OztOOzs7OzsKKzMwQTI7S0FUQUtBTkEgTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzMwQTM7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIEk7TG87MDtMOzs7OztOOzs7OzsKKzMwQTQ7S0FUQUtBTkEgTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzMwQTU7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIFU7TG87MDtMOzs7OztOOzs7OzsKKzMwQTY7S0FUQUtBTkEgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzMwQTc7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIEU7TG87MDtMOzs7OztOOzs7OzsKKzMwQTg7S0FUQUtBTkEgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzMwQTk7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIE87TG87MDtMOzs7OztOOzs7OzsKKzMwQUE7S0FUQUtBTkEgTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzMwQUI7S0FUQUtBTkEgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEFDO0tBVEFLQU5BIExFVFRFUiBHQTtMbzswO0w7MzBBQiAzMDk5Ozs7O047Ozs7OworMzBBRDtLQVRBS0FOQSBMRVRURVIgS0k7TG87MDtMOzs7OztOOzs7OzsKKzMwQUU7S0FUQUtBTkEgTEVUVEVSIEdJO0xvOzA7TDszMEFEIDMwOTk7Ozs7Tjs7Ozs7CiszMEFGO0tBVEFLQU5BIExFVFRFUiBLVTtMbzswO0w7Ozs7O047Ozs7OworMzBCMDtLQVRBS0FOQSBMRVRURVIgR1U7TG87MDtMOzMwQUYgMzA5OTs7OztOOzs7OzsKKzMwQjE7S0FUQUtBTkEgTEVUVEVSIEtFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEIyO0tBVEFLQU5BIExFVFRFUiBHRTtMbzswO0w7MzBCMSAzMDk5Ozs7O047Ozs7OworMzBCMztLQVRBS0FOQSBMRVRURVIgS087TG87MDtMOzs7OztOOzs7OzsKKzMwQjQ7S0FUQUtBTkEgTEVUVEVSIEdPO0xvOzA7TDszMEIzIDMwOTk7Ozs7Tjs7Ozs7CiszMEI1O0tBVEFLQU5BIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMzBCNjtLQVRBS0FOQSBMRVRURVIgWkE7TG87MDtMOzMwQjUgMzA5OTs7OztOOzs7OzsKKzMwQjc7S0FUQUtBTkEgTEVUVEVSIFNJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEI4O0tBVEFLQU5BIExFVFRFUiBaSTtMbzswO0w7MzBCNyAzMDk5Ozs7O047Ozs7OworMzBCOTtLQVRBS0FOQSBMRVRURVIgU1U7TG87MDtMOzs7OztOOzs7OzsKKzMwQkE7S0FUQUtBTkEgTEVUVEVSIFpVO0xvOzA7TDszMEI5IDMwOTk7Ozs7Tjs7Ozs7CiszMEJCO0tBVEFLQU5BIExFVFRFUiBTRTtMbzswO0w7Ozs7O047Ozs7OworMzBCQztLQVRBS0FOQSBMRVRURVIgWkU7TG87MDtMOzMwQkIgMzA5OTs7OztOOzs7OzsKKzMwQkQ7S0FUQUtBTkEgTEVUVEVSIFNPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEJFO0tBVEFLQU5BIExFVFRFUiBaTztMbzswO0w7MzBCRCAzMDk5Ozs7O047Ozs7OworMzBCRjtLQVRBS0FOQSBMRVRURVIgVEE7TG87MDtMOzs7OztOOzs7OzsKKzMwQzA7S0FUQUtBTkEgTEVUVEVSIERBO0xvOzA7TDszMEJGIDMwOTk7Ozs7Tjs7Ozs7CiszMEMxO0tBVEFLQU5BIExFVFRFUiBUSTtMbzswO0w7Ozs7O047Ozs7OworMzBDMjtLQVRBS0FOQSBMRVRURVIgREk7TG87MDtMOzMwQzEgMzA5OTs7OztOOzs7OzsKKzMwQzM7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIFRVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEM0O0tBVEFLQU5BIExFVFRFUiBUVTtMbzswO0w7Ozs7O047Ozs7OworMzBDNTtLQVRBS0FOQSBMRVRURVIgRFU7TG87MDtMOzMwQzQgMzA5OTs7OztOOzs7OzsKKzMwQzY7S0FUQUtBTkEgTEVUVEVSIFRFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEM3O0tBVEFLQU5BIExFVFRFUiBERTtMbzswO0w7MzBDNiAzMDk5Ozs7O047Ozs7OworMzBDODtLQVRBS0FOQSBMRVRURVIgVE87TG87MDtMOzs7OztOOzs7OzsKKzMwQzk7S0FUQUtBTkEgTEVUVEVSIERPO0xvOzA7TDszMEM4IDMwOTk7Ozs7Tjs7Ozs7CiszMENBO0tBVEFLQU5BIExFVFRFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMzBDQjtLQVRBS0FOQSBMRVRURVIgTkk7TG87MDtMOzs7OztOOzs7OzsKKzMwQ0M7S0FUQUtBTkEgTEVUVEVSIE5VO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMENEO0tBVEFLQU5BIExFVFRFUiBORTtMbzswO0w7Ozs7O047Ozs7OworMzBDRTtLQVRBS0FOQSBMRVRURVIgTk87TG87MDtMOzs7OztOOzs7OzsKKzMwQ0Y7S0FUQUtBTkEgTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEQwO0tBVEFLQU5BIExFVFRFUiBCQTtMbzswO0w7MzBDRiAzMDk5Ozs7O047Ozs7OworMzBEMTtLQVRBS0FOQSBMRVRURVIgUEE7TG87MDtMOzMwQ0YgMzA5QTs7OztOOzs7OzsKKzMwRDI7S0FUQUtBTkEgTEVUVEVSIEhJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEQzO0tBVEFLQU5BIExFVFRFUiBCSTtMbzswO0w7MzBEMiAzMDk5Ozs7O047Ozs7OworMzBENDtLQVRBS0FOQSBMRVRURVIgUEk7TG87MDtMOzMwRDIgMzA5QTs7OztOOzs7OzsKKzMwRDU7S0FUQUtBTkEgTEVUVEVSIEhVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEQ2O0tBVEFLQU5BIExFVFRFUiBCVTtMbzswO0w7MzBENSAzMDk5Ozs7O047Ozs7OworMzBENztLQVRBS0FOQSBMRVRURVIgUFU7TG87MDtMOzMwRDUgMzA5QTs7OztOOzs7OzsKKzMwRDg7S0FUQUtBTkEgTEVUVEVSIEhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEQ5O0tBVEFLQU5BIExFVFRFUiBCRTtMbzswO0w7MzBEOCAzMDk5Ozs7O047Ozs7OworMzBEQTtLQVRBS0FOQSBMRVRURVIgUEU7TG87MDtMOzMwRDggMzA5QTs7OztOOzs7OzsKKzMwREI7S0FUQUtBTkEgTEVUVEVSIEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMERDO0tBVEFLQU5BIExFVFRFUiBCTztMbzswO0w7MzBEQiAzMDk5Ozs7O047Ozs7OworMzBERDtLQVRBS0FOQSBMRVRURVIgUE87TG87MDtMOzMwREIgMzA5QTs7OztOOzs7OzsKKzMwREU7S0FUQUtBTkEgTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMERGO0tBVEFLQU5BIExFVFRFUiBNSTtMbzswO0w7Ozs7O047Ozs7OworMzBFMDtLQVRBS0FOQSBMRVRURVIgTVU7TG87MDtMOzs7OztOOzs7OzsKKzMwRTE7S0FUQUtBTkEgTEVUVEVSIE1FO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEUyO0tBVEFLQU5BIExFVFRFUiBNTztMbzswO0w7Ozs7O047Ozs7OworMzBFMztLQVRBS0FOQSBMRVRURVIgU01BTEwgWUE7TG87MDtMOzs7OztOOzs7OzsKKzMwRTQ7S0FUQUtBTkEgTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEU1O0tBVEFLQU5BIExFVFRFUiBTTUFMTCBZVTtMbzswO0w7Ozs7O047Ozs7OworMzBFNjtLQVRBS0FOQSBMRVRURVIgWVU7TG87MDtMOzs7OztOOzs7OzsKKzMwRTc7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEU4O0tBVEFLQU5BIExFVFRFUiBZTztMbzswO0w7Ozs7O047Ozs7OworMzBFOTtLQVRBS0FOQSBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzMwRUE7S0FUQUtBTkEgTEVUVEVSIFJJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEVCO0tBVEFLQU5BIExFVFRFUiBSVTtMbzswO0w7Ozs7O047Ozs7OworMzBFQztLQVRBS0FOQSBMRVRURVIgUkU7TG87MDtMOzs7OztOOzs7OzsKKzMwRUQ7S0FUQUtBTkEgTEVUVEVSIFJPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEVFO0tBVEFLQU5BIExFVFRFUiBTTUFMTCBXQTtMbzswO0w7Ozs7O047Ozs7OworMzBFRjtLQVRBS0FOQSBMRVRURVIgV0E7TG87MDtMOzs7OztOOzs7OzsKKzMwRjA7S0FUQUtBTkEgTEVUVEVSIFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEYxO0tBVEFLQU5BIExFVFRFUiBXRTtMbzswO0w7Ozs7O047Ozs7OworMzBGMjtLQVRBS0FOQSBMRVRURVIgV087TG87MDtMOzs7OztOOzs7OzsKKzMwRjM7S0FUQUtBTkEgTEVUVEVSIE47TG87MDtMOzs7OztOOzs7OzsKKzMwRjQ7S0FUQUtBTkEgTEVUVEVSIFZVO0xvOzA7TDszMEE2IDMwOTk7Ozs7Tjs7Ozs7CiszMEY1O0tBVEFLQU5BIExFVFRFUiBTTUFMTCBLQTtMbzswO0w7Ozs7O047Ozs7OworMzBGNjtLQVRBS0FOQSBMRVRURVIgU01BTEwgS0U7TG87MDtMOzs7OztOOzs7OzsKKzMwRjc7S0FUQUtBTkEgTEVUVEVSIFZBO0xvOzA7TDszMEVGIDMwOTk7Ozs7Tjs7Ozs7CiszMEY4O0tBVEFLQU5BIExFVFRFUiBWSTtMbzswO0w7MzBGMCAzMDk5Ozs7O047Ozs7OworMzBGOTtLQVRBS0FOQSBMRVRURVIgVkU7TG87MDtMOzMwRjEgMzA5OTs7OztOOzs7OzsKKzMwRkE7S0FUQUtBTkEgTEVUVEVSIFZPO0xvOzA7TDszMEYyIDMwOTk7Ozs7Tjs7Ozs7CiszMEZCO0tBVEFLQU5BIE1JRERMRSBET1Q7UGM7MDtPTjs7Ozs7Tjs7Ozs7CiszMEZDO0tBVEFLQU5BLUhJUkFHQU5BIFBST0xPTkdFRCBTT1VORCBNQVJLO0xtOzA7TDs7Ozs7Tjs7Ozs7CiszMEZEO0tBVEFLQU5BIElURVJBVElPTiBNQVJLO0xtOzA7TDs7Ozs7Tjs7Ozs7CiszMEZFO0tBVEFLQU5BIFZPSUNFRCBJVEVSQVRJT04gTUFSSztMbTswO0w7MzBGRCAzMDk5Ozs7O047Ozs7OworMzEwNTtCT1BPTU9GTyBMRVRURVIgQjtMbzswO0w7Ozs7O047Ozs7OworMzEwNjtCT1BPTU9GTyBMRVRURVIgUDtMbzswO0w7Ozs7O047Ozs7OworMzEwNztCT1BPTU9GTyBMRVRURVIgTTtMbzswO0w7Ozs7O047Ozs7OworMzEwODtCT1BPTU9GTyBMRVRURVIgRjtMbzswO0w7Ozs7O047Ozs7OworMzEwOTtCT1BPTU9GTyBMRVRURVIgRDtMbzswO0w7Ozs7O047Ozs7OworMzEwQTtCT1BPTU9GTyBMRVRURVIgVDtMbzswO0w7Ozs7O047Ozs7OworMzEwQjtCT1BPTU9GTyBMRVRURVIgTjtMbzswO0w7Ozs7O047Ozs7OworMzEwQztCT1BPTU9GTyBMRVRURVIgTDtMbzswO0w7Ozs7O047Ozs7OworMzEwRDtCT1BPTU9GTyBMRVRURVIgRztMbzswO0w7Ozs7O047Ozs7OworMzEwRTtCT1BPTU9GTyBMRVRURVIgSztMbzswO0w7Ozs7O047Ozs7OworMzEwRjtCT1BPTU9GTyBMRVRURVIgSDtMbzswO0w7Ozs7O047Ozs7OworMzExMDtCT1BPTU9GTyBMRVRURVIgSjtMbzswO0w7Ozs7O047Ozs7OworMzExMTtCT1BPTU9GTyBMRVRURVIgUTtMbzswO0w7Ozs7O047Ozs7OworMzExMjtCT1BPTU9GTyBMRVRURVIgWDtMbzswO0w7Ozs7O047Ozs7OworMzExMztCT1BPTU9GTyBMRVRURVIgWkg7TG87MDtMOzs7OztOOzs7OzsKKzMxMTQ7Qk9QT01PRk8gTEVUVEVSIENIO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTE1O0JPUE9NT0ZPIExFVFRFUiBTSDtMbzswO0w7Ozs7O047Ozs7OworMzExNjtCT1BPTU9GTyBMRVRURVIgUjtMbzswO0w7Ozs7O047Ozs7OworMzExNztCT1BPTU9GTyBMRVRURVIgWjtMbzswO0w7Ozs7O047Ozs7OworMzExODtCT1BPTU9GTyBMRVRURVIgQztMbzswO0w7Ozs7O047Ozs7OworMzExOTtCT1BPTU9GTyBMRVRURVIgUztMbzswO0w7Ozs7O047Ozs7OworMzExQTtCT1BPTU9GTyBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMzExQjtCT1BPTU9GTyBMRVRURVIgTztMbzswO0w7Ozs7O047Ozs7OworMzExQztCT1BPTU9GTyBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMzExRDtCT1BPTU9GTyBMRVRURVIgRUg7TG87MDtMOzs7OztOOzs7OzsKKzMxMUU7Qk9QT01PRk8gTEVUVEVSIEFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTFGO0JPUE9NT0ZPIExFVFRFUiBFSTtMbzswO0w7Ozs7O047Ozs7OworMzEyMDtCT1BPTU9GTyBMRVRURVIgQVU7TG87MDtMOzs7OztOOzs7OzsKKzMxMjE7Qk9QT01PRk8gTEVUVEVSIE9VO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTIyO0JPUE9NT0ZPIExFVFRFUiBBTjtMbzswO0w7Ozs7O047Ozs7OworMzEyMztCT1BPTU9GTyBMRVRURVIgRU47TG87MDtMOzs7OztOOzs7OzsKKzMxMjQ7Qk9QT01PRk8gTEVUVEVSIEFORztMbzswO0w7Ozs7O047Ozs7OworMzEyNTtCT1BPTU9GTyBMRVRURVIgRU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTI2O0JPUE9NT0ZPIExFVFRFUiBFUjtMbzswO0w7Ozs7O047Ozs7OworMzEyNztCT1BPTU9GTyBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMzEyODtCT1BPTU9GTyBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMzEyOTtCT1BPTU9GTyBMRVRURVIgSVU7TG87MDtMOzs7OztOOzs7OzsKKzMxMkE7Qk9QT01PRk8gTEVUVEVSIFY7TG87MDtMOzs7OztOOzs7OzsKKzMxMkI7Qk9QT01PRk8gTEVUVEVSIE5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTJDO0JPUE9NT0ZPIExFVFRFUiBHTjtMbzswO0w7Ozs7O047Ozs7OworMzEzMTtIQU5HVUwgTEVUVEVSIEtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTEwMDs7OztOO0hBTkdVTCBMRVRURVIgR0lZRU9HOzs7OworMzEzMjtIQU5HVUwgTEVUVEVSIFNTQU5HS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMTAxOzs7O047SEFOR1VMIExFVFRFUiBTU0FORyBHSVlFT0c7Ozs7CiszMTMzO0hBTkdVTCBMRVRURVIgS0lZRU9LLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExQUE7Ozs7TjtIQU5HVUwgTEVUVEVSIEdJWUVPRyBTSU9TOzs7OworMzEzNDtIQU5HVUwgTEVUVEVSIE5JRVVOO0xvOzA7TDs8Y29tcGF0PiAxMTAyOzs7O047Ozs7OworMzEzNTtIQU5HVUwgTEVUVEVSIE5JRVVOLUNJRVVDO0xvOzA7TDs8Y29tcGF0PiAxMUFDOzs7O047SEFOR1VMIExFVFRFUiBOSUVVTiBKSUVVSjs7OzsKKzMxMzY7SEFOR1VMIExFVFRFUiBOSUVVTi1ISUVVSDtMbzswO0w7PGNvbXBhdD4gMTFBRDs7OztOO0hBTkdVTCBMRVRURVIgTklFVU4gSElFVUg7Ozs7CiszMTM3O0hBTkdVTCBMRVRURVIgVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMTAzOzs7O047SEFOR1VMIExFVFRFUiBESUdFVUQ7Ozs7CiszMTM4O0hBTkdVTCBMRVRURVIgU1NBTkdUSUtFVVQ7TG87MDtMOzxjb21wYXQ+IDExMDQ7Ozs7TjtIQU5HVUwgTEVUVEVSIFNTQU5HIERJR0VVRDs7OzsKKzMxMzk7SEFOR1VMIExFVFRFUiBSSUVVTDtMbzswO0w7PGNvbXBhdD4gMTEwNTs7OztOO0hBTkdVTCBMRVRURVIgTElFVUw7Ozs7CiszMTNBO0hBTkdVTCBMRVRURVIgUklFVUwtS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMUIwOzs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBHSVlFT0c7Ozs7CiszMTNCO0hBTkdVTCBMRVRURVIgUklFVUwtTUlFVU07TG87MDtMOzxjb21wYXQ+IDExQjE7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIE1JRVVNOzs7OworMzEzQztIQU5HVUwgTEVUVEVSIFJJRVVMLVBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMUIyOzs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBCSUVVQjs7OzsKKzMxM0Q7SEFOR1VMIExFVFRFUiBSSUVVTC1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUIzOzs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBTSU9TOzs7OworMzEzRTtIQU5HVUwgTEVUVEVSIFJJRVVMLVRISUVVVEg7TG87MDtMOzxjb21wYXQ+IDExQjQ7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIFRJRVVUOzs7OworMzEzRjtIQU5HVUwgTEVUVEVSIFJJRVVMLVBISUVVUEg7TG87MDtMOzxjb21wYXQ+IDExQjU7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIFBJRVVQOzs7OworMzE0MDtIQU5HVUwgTEVUVEVSIFJJRVVMLUhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMTFBOzs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBISUVVSDs7OzsKKzMxNDE7SEFOR1VMIExFVFRFUiBNSUVVTTtMbzswO0w7PGNvbXBhdD4gMTEwNjs7OztOOzs7OzsKKzMxNDI7SEFOR1VMIExFVFRFUiBQSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEwNzs7OztOO0hBTkdVTCBMRVRURVIgQklFVUI7Ozs7CiszMTQzO0hBTkdVTCBMRVRURVIgU1NBTkdQSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEwODs7OztOO0hBTkdVTCBMRVRURVIgU1NBTkcgQklFVUI7Ozs7CiszMTQ0O0hBTkdVTCBMRVRURVIgUElFVVAtU0lPUztMbzswO0w7PGNvbXBhdD4gMTEyMTs7OztOO0hBTkdVTCBMRVRURVIgQklFVUIgU0lPUzs7OzsKKzMxNDU7SEFOR1VMIExFVFRFUiBTSU9TO0xvOzA7TDs8Y29tcGF0PiAxMTA5Ozs7O047Ozs7OworMzE0NjtIQU5HVUwgTEVUVEVSIFNTQU5HU0lPUztMbzswO0w7PGNvbXBhdD4gMTEwQTs7OztOO0hBTkdVTCBMRVRURVIgU1NBTkcgU0lPUzs7OzsKKzMxNDc7SEFOR1VMIExFVFRFUiBJRVVORztMbzswO0w7PGNvbXBhdD4gMTEwQjs7OztOOzs7OzsKKzMxNDg7SEFOR1VMIExFVFRFUiBDSUVVQztMbzswO0w7PGNvbXBhdD4gMTEwQzs7OztOO0hBTkdVTCBMRVRURVIgSklFVUo7Ozs7CiszMTQ5O0hBTkdVTCBMRVRURVIgU1NBTkdDSUVVQztMbzswO0w7PGNvbXBhdD4gMTEwRDs7OztOO0hBTkdVTCBMRVRURVIgU1NBTkcgSklFVUo7Ozs7CiszMTRBO0hBTkdVTCBMRVRURVIgQ0hJRVVDSDtMbzswO0w7PGNvbXBhdD4gMTEwRTs7OztOO0hBTkdVTCBMRVRURVIgQ0lFVUM7Ozs7CiszMTRCO0hBTkdVTCBMRVRURVIgS0hJRVVLSDtMbzswO0w7PGNvbXBhdD4gMTEwRjs7OztOO0hBTkdVTCBMRVRURVIgS0lZRU9LOzs7OworMzE0QztIQU5HVUwgTEVUVEVSIFRISUVVVEg7TG87MDtMOzxjb21wYXQ+IDExMTA7Ozs7TjtIQU5HVUwgTEVUVEVSIFRJRVVUOzs7OworMzE0RDtIQU5HVUwgTEVUVEVSIFBISUVVUEg7TG87MDtMOzxjb21wYXQ+IDExMTE7Ozs7TjtIQU5HVUwgTEVUVEVSIFBJRVVQOzs7OworMzE0RTtIQU5HVUwgTEVUVEVSIEhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMTEyOzs7O047Ozs7OworMzE0RjtIQU5HVUwgTEVUVEVSIEE7TG87MDtMOzxjb21wYXQ+IDExNjE7Ozs7Tjs7Ozs7CiszMTUwO0hBTkdVTCBMRVRURVIgQUU7TG87MDtMOzxjb21wYXQ+IDExNjI7Ozs7Tjs7Ozs7CiszMTUxO0hBTkdVTCBMRVRURVIgWUE7TG87MDtMOzxjb21wYXQ+IDExNjM7Ozs7Tjs7Ozs7CiszMTUyO0hBTkdVTCBMRVRURVIgWUFFO0xvOzA7TDs8Y29tcGF0PiAxMTY0Ozs7O047Ozs7OworMzE1MztIQU5HVUwgTEVUVEVSIEVPO0xvOzA7TDs8Y29tcGF0PiAxMTY1Ozs7O047Ozs7OworMzE1NDtIQU5HVUwgTEVUVEVSIEU7TG87MDtMOzxjb21wYXQ+IDExNjY7Ozs7Tjs7Ozs7CiszMTU1O0hBTkdVTCBMRVRURVIgWUVPO0xvOzA7TDs8Y29tcGF0PiAxMTY3Ozs7O047Ozs7OworMzE1NjtIQU5HVUwgTEVUVEVSIFlFO0xvOzA7TDs8Y29tcGF0PiAxMTY4Ozs7O047Ozs7OworMzE1NztIQU5HVUwgTEVUVEVSIE87TG87MDtMOzxjb21wYXQ+IDExNjk7Ozs7Tjs7Ozs7CiszMTU4O0hBTkdVTCBMRVRURVIgV0E7TG87MDtMOzxjb21wYXQ+IDExNkE7Ozs7Tjs7Ozs7CiszMTU5O0hBTkdVTCBMRVRURVIgV0FFO0xvOzA7TDs8Y29tcGF0PiAxMTZCOzs7O047Ozs7OworMzE1QTtIQU5HVUwgTEVUVEVSIE9FO0xvOzA7TDs8Y29tcGF0PiAxMTZDOzs7O047Ozs7OworMzE1QjtIQU5HVUwgTEVUVEVSIFlPO0xvOzA7TDs8Y29tcGF0PiAxMTZEOzs7O047Ozs7OworMzE1QztIQU5HVUwgTEVUVEVSIFU7TG87MDtMOzxjb21wYXQ+IDExNkU7Ozs7Tjs7Ozs7CiszMTVEO0hBTkdVTCBMRVRURVIgV0VPO0xvOzA7TDs8Y29tcGF0PiAxMTZGOzs7O047Ozs7OworMzE1RTtIQU5HVUwgTEVUVEVSIFdFO0xvOzA7TDs8Y29tcGF0PiAxMTcwOzs7O047Ozs7OworMzE1RjtIQU5HVUwgTEVUVEVSIFdJO0xvOzA7TDs8Y29tcGF0PiAxMTcxOzs7O047Ozs7OworMzE2MDtIQU5HVUwgTEVUVEVSIFlVO0xvOzA7TDs8Y29tcGF0PiAxMTcyOzs7O047Ozs7OworMzE2MTtIQU5HVUwgTEVUVEVSIEVVO0xvOzA7TDs8Y29tcGF0PiAxMTczOzs7O047Ozs7OworMzE2MjtIQU5HVUwgTEVUVEVSIFlJO0xvOzA7TDs8Y29tcGF0PiAxMTc0Ozs7O047Ozs7OworMzE2MztIQU5HVUwgTEVUVEVSIEk7TG87MDtMOzxjb21wYXQ+IDExNzU7Ozs7Tjs7Ozs7CiszMTY0O0hBTkdVTCBGSUxMRVI7TG87MDtMOzxjb21wYXQ+IDExNjA7Ozs7TjtIQU5HVUwgQ0FFIE9NOzs7OworMzE2NTtIQU5HVUwgTEVUVEVSIFNTQU5HTklFVU47TG87MDtMOzxjb21wYXQ+IDExMTQ7Ozs7TjtIQU5HVUwgTEVUVEVSIFNTQU5HIE5JRVVOOzs7OworMzE2NjtIQU5HVUwgTEVUVEVSIE5JRVVOLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTExNTs7OztOO0hBTkdVTCBMRVRURVIgTklFVU4gRElHRVVEOzs7OworMzE2NztIQU5HVUwgTEVUVEVSIE5JRVVOLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExQzc7Ozs7TjtIQU5HVUwgTEVUVEVSIE5JRVVOIFNJT1M7Ozs7CiszMTY4O0hBTkdVTCBMRVRURVIgTklFVU4tUEFOU0lPUztMbzswO0w7PGNvbXBhdD4gMTFDODs7OztOO0hBTkdVTCBMRVRURVIgTklFVU4gQkFOIENISSBFVU07Ozs7CiszMTY5O0hBTkdVTCBMRVRURVIgUklFVUwtS0lZRU9LLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExQ0M7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIEdJWUVPRyBTSU9TOzs7OworMzE2QTtIQU5HVUwgTEVUVEVSIFJJRVVMLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTFDRTs7OztOO0hBTkdVTCBMRVRURVIgTElFVUwgRElHRVVEOzs7OworMzE2QjtIQU5HVUwgTEVUVEVSIFJJRVVMLVBJRVVQLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExRDM7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIEJJRVVCIFNJT1M7Ozs7CiszMTZDO0hBTkdVTCBMRVRURVIgUklFVUwtUEFOU0lPUztMbzswO0w7PGNvbXBhdD4gMTFENzs7OztOO0hBTkdVTCBMRVRURVIgTElFVUwgQkFOIENISSBFVU07Ozs7CiszMTZEO0hBTkdVTCBMRVRURVIgUklFVUwtWUVPUklOSElFVUg7TG87MDtMOzxjb21wYXQ+IDExRDk7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIFlFT0xJTiBISUVVSDs7OzsKKzMxNkU7SEFOR1VMIExFVFRFUiBNSUVVTS1QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTExQzs7OztOO0hBTkdVTCBMRVRURVIgTUlFVU0gQklFVUI7Ozs7CiszMTZGO0hBTkdVTCBMRVRURVIgTUlFVU0tU0lPUztMbzswO0w7PGNvbXBhdD4gMTFERDs7OztOO0hBTkdVTCBMRVRURVIgTUlFVU0gU0lPUzs7OzsKKzMxNzA7SEFOR1VMIExFVFRFUiBNSUVVTS1QQU5TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMURGOzs7O047SEFOR1VMIExFVFRFUiBCSUVVQiBCQU4gQ0hJIEVVTTs7OzsKKzMxNzE7SEFOR1VMIExFVFRFUiBLQVBZRU9VTk1JRVVNO0xvOzA7TDs8Y29tcGF0PiAxMTFEOzs7O047SEFOR1VMIExFVFRFUiBNSUVVTSBTVU4gR1lFT05HIEVVTTs7OzsKKzMxNzI7SEFOR1VMIExFVFRFUiBQSUVVUC1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMUU7Ozs7TjtIQU5HVUwgTEVUVEVSIEJJRVVCIEdJWUVPRzs7OzsKKzMxNzM7SEFOR1VMIExFVFRFUiBQSUVVUC1USUtFVVQ7TG87MDtMOzxjb21wYXQ+IDExMjA7Ozs7TjtIQU5HVUwgTEVUVEVSIEJJRVVCIERJR0VVRDs7OzsKKzMxNzQ7SEFOR1VMIExFVFRFUiBQSUVVUC1TSU9TLUtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTEyMjs7OztOO0hBTkdVTCBMRVRURVIgQklFVUIgU0lPUyBHSVlFT0c7Ozs7CiszMTc1O0hBTkdVTCBMRVRURVIgUElFVVAtU0lPUy1USUtFVVQ7TG87MDtMOzxjb21wYXQ+IDExMjM7Ozs7TjtIQU5HVUwgTEVUVEVSIEJJRVVCIFNJT1MgRElHRVVEOzs7OworMzE3NjtIQU5HVUwgTEVUVEVSIFBJRVVQLUNJRVVDO0xvOzA7TDs8Y29tcGF0PiAxMTI3Ozs7O047SEFOR1VMIExFVFRFUiBCSUVVQiBKSUVVSjs7OzsKKzMxNzc7SEFOR1VMIExFVFRFUiBQSUVVUC1USElFVVRIO0xvOzA7TDs8Y29tcGF0PiAxMTI5Ozs7O047SEFOR1VMIExFVFRFUiBCSUVVQiBUSUVVVDs7OzsKKzMxNzg7SEFOR1VMIExFVFRFUiBLQVBZRU9VTlBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMTJCOzs7O047SEFOR1VMIExFVFRFUiBCSUVVQiBTVU4gR1lFT05HIEVVTTs7OzsKKzMxNzk7SEFOR1VMIExFVFRFUiBLQVBZRU9VTlNTQU5HUElFVVA7TG87MDtMOzxjb21wYXQ+IDExMkM7Ozs7TjtIQU5HVUwgTEVUVEVSIFNTQU5HIEJJRVVCIFNVTiBHWUVPTkcgRVVNOzs7OworMzE3QTtIQU5HVUwgTEVUVEVSIFNJT1MtS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMTJEOzs7O047SEFOR1VMIExFVFRFUiBTSU9TIEdJWUVPRzs7OzsKKzMxN0I7SEFOR1VMIExFVFRFUiBTSU9TLU5JRVVOO0xvOzA7TDs8Y29tcGF0PiAxMTJFOzs7O047SEFOR1VMIExFVFRFUiBTSU9TIE5JRVVOOzs7OworMzE3QztIQU5HVUwgTEVUVEVSIFNJT1MtVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMTJGOzs7O047SEFOR1VMIExFVFRFUiBTSU9TIERJR0VVRDs7OzsKKzMxN0Q7SEFOR1VMIExFVFRFUiBTSU9TLVBJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMTMyOzs7O047SEFOR1VMIExFVFRFUiBTSU9TIEJJRVVCOzs7OworMzE3RTtIQU5HVUwgTEVUVEVSIFNJT1MtQ0lFVUM7TG87MDtMOzxjb21wYXQ+IDExMzY7Ozs7TjtIQU5HVUwgTEVUVEVSIFNJT1MgSklFVUo7Ozs7CiszMTdGO0hBTkdVTCBMRVRURVIgUEFOU0lPUztMbzswO0w7PGNvbXBhdD4gMTE0MDs7OztOO0hBTkdVTCBMRVRURVIgQkFOIENISSBFVU07Ozs7CiszMTgwO0hBTkdVTCBMRVRURVIgU1NBTkdJRVVORztMbzswO0w7PGNvbXBhdD4gMTE0Nzs7OztOO0hBTkdVTCBMRVRURVIgU1NBTkcgSUVVTkc7Ozs7CiszMTgxO0hBTkdVTCBMRVRURVIgWUVTSUVVTkc7TG87MDtMOzxjb21wYXQ+IDExNEM7Ozs7TjtIQU5HVUwgTEVUVEVSIE5HSUVVTkc7Ozs7CiszMTgyO0hBTkdVTCBMRVRURVIgWUVTSUVVTkctU0lPUztMbzswO0w7PGNvbXBhdD4gMTFGMTs7OztOO0hBTkdVTCBMRVRURVIgTkdJRVVORyBTSU9TOzs7OworMzE4MztIQU5HVUwgTEVUVEVSIFlFU0lFVU5HLVBBTlNJT1M7TG87MDtMOzxjb21wYXQ+IDExRjI7Ozs7TjtIQU5HVUwgTEVUVEVSIE5HSUVVTkcgQkFOIENISSBFVU07Ozs7CiszMTg0O0hBTkdVTCBMRVRURVIgS0FQWUVPVU5QSElFVVBIO0xvOzA7TDs8Y29tcGF0PiAxMTU3Ozs7O047SEFOR1VMIExFVFRFUiBQSUVVUCBTVU4gR1lFT05HIEVVTTs7OzsKKzMxODU7SEFOR1VMIExFVFRFUiBTU0FOR0hJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMTU4Ozs7O047SEFOR1VMIExFVFRFUiBTU0FORyBISUVVSDs7OzsKKzMxODY7SEFOR1VMIExFVFRFUiBZRU9SSU5ISUVVSDtMbzswO0w7PGNvbXBhdD4gMTE1OTs7OztOO0hBTkdVTCBMRVRURVIgWUVPTElOIEhJRVVIOzs7OworMzE4NztIQU5HVUwgTEVUVEVSIFlPLVlBO0xvOzA7TDs8Y29tcGF0PiAxMTg0Ozs7O047SEFOR1VMIExFVFRFUiBZT1lBOzs7OworMzE4ODtIQU5HVUwgTEVUVEVSIFlPLVlBRTtMbzswO0w7PGNvbXBhdD4gMTE4NTs7OztOO0hBTkdVTCBMRVRURVIgWU9ZQUU7Ozs7CiszMTg5O0hBTkdVTCBMRVRURVIgWU8tSTtMbzswO0w7PGNvbXBhdD4gMTE4ODs7OztOO0hBTkdVTCBMRVRURVIgWU9JOzs7OworMzE4QTtIQU5HVUwgTEVUVEVSIFlVLVlFTztMbzswO0w7PGNvbXBhdD4gMTE5MTs7OztOO0hBTkdVTCBMRVRURVIgWVVZRU87Ozs7CiszMThCO0hBTkdVTCBMRVRURVIgWVUtWUU7TG87MDtMOzxjb21wYXQ+IDExOTI7Ozs7TjtIQU5HVUwgTEVUVEVSIFlVWUU7Ozs7CiszMThDO0hBTkdVTCBMRVRURVIgWVUtSTtMbzswO0w7PGNvbXBhdD4gMTE5NDs7OztOO0hBTkdVTCBMRVRURVIgWVVJOzs7OworMzE4RDtIQU5HVUwgTEVUVEVSIEFSQUVBO0xvOzA7TDs8Y29tcGF0PiAxMTlFOzs7O047SEFOR1VMIExFVFRFUiBBTEFFIEE7Ozs7CiszMThFO0hBTkdVTCBMRVRURVIgQVJBRUFFO0xvOzA7TDs8Y29tcGF0PiAxMUExOzs7O047SEFOR1VMIExFVFRFUiBBTEFFIEFFOzs7OworMzE5MDtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIExJTktJTkcgTUFSSztTbzswO0w7Ozs7O047S0FOQlVOIFRBVEVURU47S2FuYnVuIFRhdGV0ZW47OzsKKzMxOTE7SURFT0dSQVBISUMgQU5OT1RBVElPTiBSRVZFUlNFIE1BUks7U287MDtMOzs7OztOO0tBRVJJVEVOIFJFO0thZXJpdGVuOzs7CiszMTkyO0lERU9HUkFQSElDIEFOTk9UQVRJT04gT05FIE1BUks7Tm87MDtMOzxzdXBlcj4gNEUwMDs7OztOO0tBRVJJVEVOIElUSTtLYWVyaXRlbjs7OworMzE5MztJREVPR1JBUEhJQyBBTk5PVEFUSU9OIFRXTyBNQVJLO05vOzA7TDs8c3VwZXI+IDRFOEM7Ozs7TjtLQUVSSVRFTiBOSTtLYWVyaXRlbjs7OworMzE5NDtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIFRIUkVFIE1BUks7Tm87MDtMOzxzdXBlcj4gNEUwOTs7OztOO0tBRVJJVEVOIFNBTjtLYWVyaXRlbjs7OworMzE5NTtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIEZPVVIgTUFSSztObzswO0w7PHN1cGVyPiA1NkRCOzs7O047S0FFUklURU4gU0k7S2Flcml0ZW47OzsKKzMxOTY7SURFT0dSQVBISUMgQU5OT1RBVElPTiBUT1AgTUFSSztTbzswO0w7PHN1cGVyPiA0RTBBOzs7O047S0FFUklURU4gWllPVTtLYWVyaXRlbjs7OworMzE5NztJREVPR1JBUEhJQyBBTk5PVEFUSU9OIE1JRERMRSBNQVJLO1NvOzA7TDs8c3VwZXI+IDRFMkQ7Ozs7TjtLQUVSSVRFTiBUWVVVO0thZXJpdGVuOzs7CiszMTk4O0lERU9HUkFQSElDIEFOTk9UQVRJT04gQk9UVE9NIE1BUks7U287MDtMOzxzdXBlcj4gNEUwQjs7OztOO0tBRVJJVEVOIEdFO0thZXJpdGVuOzs7CiszMTk5O0lERU9HUkFQSElDIEFOTk9UQVRJT04gRklSU1QgTUFSSztTbzswO0w7PHN1cGVyPiA3NTMyOzs7O047S0FFUklURU4gS09VO0thZXJpdGVuOzs7CiszMTlBO0lERU9HUkFQSElDIEFOTk9UQVRJT04gU0VDT05EIE1BUks7U287MDtMOzxzdXBlcj4gNEU1OTs7OztOO0tBRVJJVEVOIE9UVTtLYWVyaXRlbjs7OworMzE5QjtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIFRISVJEIE1BUks7U287MDtMOzxzdXBlcj4gNEUxOTs7OztOO0tBRVJJVEVOIEhFSTtLYWVyaXRlbjs7OworMzE5QztJREVPR1JBUEhJQyBBTk5PVEFUSU9OIEZPVVJUSCBNQVJLO1NvOzA7TDs8c3VwZXI+IDRFMDE7Ozs7TjtLQUVSSVRFTiBURUk7S2Flcml0ZW47OzsKKzMxOUQ7SURFT0dSQVBISUMgQU5OT1RBVElPTiBIRUFWRU4gTUFSSztTbzswO0w7PHN1cGVyPiA1OTI5Ozs7O047S0FFUklURU4gVEVOO0thZXJpdGVuOzs7CiszMTlFO0lERU9HUkFQSElDIEFOTk9UQVRJT04gRUFSVEggTUFSSztTbzswO0w7PHN1cGVyPiA1NzMwOzs7O047S0FFUklURU4gVEk7S2Flcml0ZW47OzsKKzMxOUY7SURFT0dSQVBISUMgQU5OT1RBVElPTiBNQU4gTUFSSztTbzswO0w7PHN1cGVyPiA0RUJBOzs7O047S0FFUklURU4gWklOO0thZXJpdGVuOzs7CiszMUEwO0JPUE9NT0ZPIExFVFRFUiBCVTtMbzswO0w7Ozs7O047Ozs7OworMzFBMTtCT1BPTU9GTyBMRVRURVIgWkk7TG87MDtMOzs7OztOOzs7OzsKKzMxQTI7Qk9QT01PRk8gTEVUVEVSIEpJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUEzO0JPUE9NT0ZPIExFVFRFUiBHVTtMbzswO0w7Ozs7O047Ozs7OworMzFBNDtCT1BPTU9GTyBMRVRURVIgRUU7TG87MDtMOzs7OztOOzs7OzsKKzMxQTU7Qk9QT01PRk8gTEVUVEVSIEVOTjtMbzswO0w7Ozs7O047Ozs7OworMzFBNjtCT1BPTU9GTyBMRVRURVIgT087TG87MDtMOzs7OztOOzs7OzsKKzMxQTc7Qk9QT01PRk8gTEVUVEVSIE9OTjtMbzswO0w7Ozs7O047Ozs7OworMzFBODtCT1BPTU9GTyBMRVRURVIgSVI7TG87MDtMOzs7OztOOzs7OzsKKzMxQTk7Qk9QT01PRk8gTEVUVEVSIEFOTjtMbzswO0w7Ozs7O047Ozs7OworMzFBQTtCT1BPTU9GTyBMRVRURVIgSU5OO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUFCO0JPUE9NT0ZPIExFVFRFUiBVTk47TG87MDtMOzs7OztOOzs7OzsKKzMxQUM7Qk9QT01PRk8gTEVUVEVSIElNO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUFEO0JPUE9NT0ZPIExFVFRFUiBOR0c7TG87MDtMOzs7OztOOzs7OzsKKzMxQUU7Qk9QT01PRk8gTEVUVEVSIEFJTk47TG87MDtMOzs7OztOOzs7OzsKKzMxQUY7Qk9QT01PRk8gTEVUVEVSIEFVTk47TG87MDtMOzs7OztOOzs7OzsKKzMxQjA7Qk9QT01PRk8gTEVUVEVSIEFNO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUIxO0JPUE9NT0ZPIExFVFRFUiBPTTtMbzswO0w7Ozs7O047Ozs7OworMzFCMjtCT1BPTU9GTyBMRVRURVIgT05HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUIzO0JPUE9NT0ZPIExFVFRFUiBJTk5OO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUI0O0JPUE9NT0ZPIEZJTkFMIExFVFRFUiBQO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUI1O0JPUE9NT0ZPIEZJTkFMIExFVFRFUiBUO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUI2O0JPUE9NT0ZPIEZJTkFMIExFVFRFUiBLO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUI3O0JPUE9NT0ZPIEZJTkFMIExFVFRFUiBIO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMjAwO1BBUkVOVEhFU0laRUQgSEFOR1VMIEtJWUVPSztTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTAwIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBHSVlFT0c7Ozs7CiszMjAxO1BBUkVOVEhFU0laRUQgSEFOR1VMIE5JRVVOO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDIgMDAyOTs7OztOOzs7OzsKKzMyMDI7UEFSRU5USEVTSVpFRCBIQU5HVUwgVElLRVVUO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDMgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIERJR0VVRDs7OzsKKzMyMDM7UEFSRU5USEVTSVpFRCBIQU5HVUwgUklFVUw7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwNSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgTElFVUw7Ozs7CiszMjA0O1BBUkVOVEhFU0laRUQgSEFOR1VMIE1JRVVNO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDYgMDAyOTs7OztOOzs7OzsKKzMyMDU7UEFSRU5USEVTSVpFRCBIQU5HVUwgUElFVVA7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwNyAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgQklFVUI7Ozs7CiszMjA2O1BBUkVOVEhFU0laRUQgSEFOR1VMIFNJT1M7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwOSAwMDI5Ozs7O047Ozs7OworMzIwNztQQVJFTlRIRVNJWkVEIEhBTkdVTCBJRVVORztTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBCIDAwMjk7Ozs7Tjs7Ozs7CiszMjA4O1BBUkVOVEhFU0laRUQgSEFOR1VMIENJRVVDO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEMgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEpJRVVKOzs7OworMzIwOTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSElFVUNIO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEUgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIENJRVVDOzs7OworMzIwQTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBLSElFVUtIO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEYgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEtJWUVPSzs7OzsKKzMyMEI7UEFSRU5USEVTSVpFRCBIQU5HVUwgVEhJRVVUSDtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTEwIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBUSUVVVDs7OzsKKzMyMEM7UEFSRU5USEVTSVpFRCBIQU5HVUwgUEhJRVVQSDtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTExIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBQSUVVUDs7OzsKKzMyMEQ7UEFSRU5USEVTSVpFRCBIQU5HVUwgSElFVUg7U287MDtMOzxjb21wYXQ+IDAwMjggMTExMiAwMDI5Ozs7O047Ozs7OworMzIwRTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBLSVlFT0sgQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTAwIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEdBOzs7OworMzIwRjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBOSUVVTiBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDIgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgTkE7Ozs7CiszMjEwO1BBUkVOVEhFU0laRUQgSEFOR1VMIFRJS0VVVCBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDMgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgREE7Ozs7CiszMjExO1BBUkVOVEhFU0laRUQgSEFOR1VMIFJJRVVMIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwNSAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBMQTs7OzsKKzMyMTI7UEFSRU5USEVTSVpFRCBIQU5HVUwgTUlFVU0gQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTA2IDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIE1BOzs7OworMzIxMztQQVJFTlRIRVNJWkVEIEhBTkdVTCBQSUVVUCBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDcgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgQkE7Ozs7CiszMjE0O1BBUkVOVEhFU0laRUQgSEFOR1VMIFNJT1MgQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTA5IDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIFNBOzs7OworMzIxNTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBJRVVORyBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEIgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgQTs7OzsKKzMyMTY7UEFSRU5USEVTSVpFRCBIQU5HVUwgQ0lFVUMgQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBDIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEpBOzs7OworMzIxNztQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSElFVUNIIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwRSAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBDQTs7OzsKKzMyMTg7UEFSRU5USEVTSVpFRCBIQU5HVUwgS0hJRVVLSCBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEYgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgS0E7Ozs7CiszMjE5O1BBUkVOVEhFU0laRUQgSEFOR1VMIFRISUVVVEggQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTEwIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIFRBOzs7OworMzIxQTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBQSElFVVBIIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTExMSAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBQQTs7OzsKKzMyMUI7UEFSRU5USEVTSVpFRCBIQU5HVUwgSElFVUggQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTEyIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEhBOzs7OworMzIxQztQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSUVVQyBVO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEMgMTE2RSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgSlU7Ozs7CiszMjIwO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIE9ORTtObzswO0w7PGNvbXBhdD4gMDAyOCA0RTAwIDAwMjk7Ozs7Tjs7Ozs7CiszMjIxO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFRXTztObzswO0w7PGNvbXBhdD4gMDAyOCA0RThDIDAwMjk7Ozs7Tjs7Ozs7CiszMjIyO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFRIUkVFO05vOzA7TDs8Y29tcGF0PiAwMDI4IDRFMDkgMDAyOTs7OztOOzs7OzsKKzMyMjM7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggRk9VUjtObzswO0w7PGNvbXBhdD4gMDAyOCA1NkRCIDAwMjk7Ozs7Tjs7Ozs7CiszMjI0O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIEZJVkU7Tm87MDtMOzxjb21wYXQ+IDAwMjggNEU5NCAwMDI5Ozs7O047Ozs7OworMzIyNTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTSVg7Tm87MDtMOzxjb21wYXQ+IDAwMjggNTE2RCAwMDI5Ozs7O047Ozs7OworMzIyNjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTRVZFTjtObzswO0w7PGNvbXBhdD4gMDAyOCA0RTAzIDAwMjk7Ozs7Tjs7Ozs7CiszMjI3O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIEVJR0hUO05vOzA7TDs8Y29tcGF0PiAwMDI4IDUxNkIgMDAyOTs7OztOOzs7OzsKKzMyMjg7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggTklORTtObzswO0w7PGNvbXBhdD4gMDAyOCA0RTVEIDAwMjk7Ozs7Tjs7Ozs7CiszMjI5O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFRFTjtObzswO0w7PGNvbXBhdD4gMDAyOCA1MzQxIDAwMjk7Ozs7Tjs7Ozs7CiszMjJBO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIE1PT047U287MDtMOzxjb21wYXQ+IDAwMjggNjcwOCAwMDI5Ozs7O047Ozs7OworMzIyQjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBGSVJFO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDcwNkIgMDAyOTs7OztOOzs7OzsKKzMyMkM7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggV0FURVI7U287MDtMOzxjb21wYXQ+IDAwMjggNkMzNCAwMDI5Ozs7O047Ozs7OworMzIyRDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBXT09EO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDY3MjggMDAyOTs7OztOOzs7OzsKKzMyMkU7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggTUVUQUw7U287MDtMOzxjb21wYXQ+IDAwMjggOTFEMSAwMDI5Ozs7O047Ozs7OworMzIyRjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBFQVJUSDtTbzswO0w7PGNvbXBhdD4gMDAyOCA1NzFGIDAwMjk7Ozs7Tjs7Ozs7CiszMjMwO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNVTjtTbzswO0w7PGNvbXBhdD4gMDAyOCA2NUU1IDAwMjk7Ozs7Tjs7Ozs7CiszMjMxO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNUT0NLO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDY4MkEgMDAyOTs7OztOOzs7OzsKKzMyMzI7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggSEFWRTtTbzswO0w7PGNvbXBhdD4gMDAyOCA2NzA5IDAwMjk7Ozs7Tjs7Ozs7CiszMjMzO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNPQ0lFVFk7U287MDtMOzxjb21wYXQ+IDAwMjggNzkzRSAwMDI5Ozs7O047Ozs7OworMzIzNDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBOQU1FO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDU0MEQgMDAyOTs7OztOOzs7OzsKKzMyMzU7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggU1BFQ0lBTDtTbzswO0w7PGNvbXBhdD4gMDAyOCA3Mjc5IDAwMjk7Ozs7Tjs7Ozs7CiszMjM2O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIEZJTkFOQ0lBTDtTbzswO0w7PGNvbXBhdD4gMDAyOCA4Q0ExIDAwMjk7Ozs7Tjs7Ozs7CiszMjM3O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIENPTkdSQVRVTEFUSU9OO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDc5NUQgMDAyOTs7OztOOzs7OzsKKzMyMzg7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggTEFCT1I7U287MDtMOzxjb21wYXQ+IDAwMjggNTJCNCAwMDI5Ozs7O047Ozs7OworMzIzOTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBSRVBSRVNFTlQ7U287MDtMOzxjb21wYXQ+IDAwMjggNEVFMyAwMDI5Ozs7O047Ozs7OworMzIzQTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBDQUxMO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDU0N0MgMDAyOTs7OztOOzs7OzsKKzMyM0I7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggU1RVRFk7U287MDtMOzxjb21wYXQ+IDAwMjggNUI2NiAwMDI5Ozs7O047Ozs7OworMzIzQztQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTVVBFUlZJU0U7U287MDtMOzxjb21wYXQ+IDAwMjggNzZFMyAwMDI5Ozs7O047Ozs7OworMzIzRDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBFTlRFUlBSSVNFO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDRGMDEgMDAyOTs7OztOOzs7OzsKKzMyM0U7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggUkVTT1VSQ0U7U287MDtMOzxjb21wYXQ+IDAwMjggOENDNyAwMDI5Ozs7O047Ozs7OworMzIzRjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBBTExJQU5DRTtTbzswO0w7PGNvbXBhdD4gMDAyOCA1MzU0IDAwMjk7Ozs7Tjs7Ozs7CiszMjQwO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIEZFU1RJVkFMO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDc5NkQgMDAyOTs7OztOOzs7OzsKKzMyNDE7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggUkVTVDtTbzswO0w7PGNvbXBhdD4gMDAyOCA0RjExIDAwMjk7Ozs7Tjs7Ozs7CiszMjQyO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNFTEY7U287MDtMOzxjb21wYXQ+IDAwMjggODFFQSAwMDI5Ozs7O047Ozs7OworMzI0MztQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBSRUFDSDtTbzswO0w7PGNvbXBhdD4gMDAyOCA4MUYzIDAwMjk7Ozs7Tjs7Ozs7CiszMjYwO0NJUkNMRUQgSEFOR1VMIEtJWUVPSztTbzswO0w7PGNpcmNsZT4gMTEwMDs7OztOO0NJUkNMRUQgSEFOR1VMIEdJWUVPRzs7OzsKKzMyNjE7Q0lSQ0xFRCBIQU5HVUwgTklFVU47U287MDtMOzxjaXJjbGU+IDExMDI7Ozs7Tjs7Ozs7CiszMjYyO0NJUkNMRUQgSEFOR1VMIFRJS0VVVDtTbzswO0w7PGNpcmNsZT4gMTEwMzs7OztOO0NJUkNMRUQgSEFOR1VMIERJR0VVRDs7OzsKKzMyNjM7Q0lSQ0xFRCBIQU5HVUwgUklFVUw7U287MDtMOzxjaXJjbGU+IDExMDU7Ozs7TjtDSVJDTEVEIEhBTkdVTCBMSUVVTDs7OzsKKzMyNjQ7Q0lSQ0xFRCBIQU5HVUwgTUlFVU07U287MDtMOzxjaXJjbGU+IDExMDY7Ozs7Tjs7Ozs7CiszMjY1O0NJUkNMRUQgSEFOR1VMIFBJRVVQO1NvOzA7TDs8Y2lyY2xlPiAxMTA3Ozs7O047Q0lSQ0xFRCBIQU5HVUwgQklFVUI7Ozs7CiszMjY2O0NJUkNMRUQgSEFOR1VMIFNJT1M7U287MDtMOzxjaXJjbGU+IDExMDk7Ozs7Tjs7Ozs7CiszMjY3O0NJUkNMRUQgSEFOR1VMIElFVU5HO1NvOzA7TDs8Y2lyY2xlPiAxMTBCOzs7O047Ozs7OworMzI2ODtDSVJDTEVEIEhBTkdVTCBDSUVVQztTbzswO0w7PGNpcmNsZT4gMTEwQzs7OztOO0NJUkNMRUQgSEFOR1VMIEpJRVVKOzs7OworMzI2OTtDSVJDTEVEIEhBTkdVTCBDSElFVUNIO1NvOzA7TDs8Y2lyY2xlPiAxMTBFOzs7O047Q0lSQ0xFRCBIQU5HVUwgQ0lFVUM7Ozs7CiszMjZBO0NJUkNMRUQgSEFOR1VMIEtISUVVS0g7U287MDtMOzxjaXJjbGU+IDExMEY7Ozs7TjtDSVJDTEVEIEhBTkdVTCBLSVlFT0s7Ozs7CiszMjZCO0NJUkNMRUQgSEFOR1VMIFRISUVVVEg7U287MDtMOzxjaXJjbGU+IDExMTA7Ozs7TjtDSVJDTEVEIEhBTkdVTCBUSUVVVDs7OzsKKzMyNkM7Q0lSQ0xFRCBIQU5HVUwgUEhJRVVQSDtTbzswO0w7PGNpcmNsZT4gMTExMTs7OztOO0NJUkNMRUQgSEFOR1VMIFBJRVVQOzs7OworMzI2RDtDSVJDTEVEIEhBTkdVTCBISUVVSDtTbzswO0w7PGNpcmNsZT4gMTExMjs7OztOOzs7OzsKKzMyNkU7Q0lSQ0xFRCBIQU5HVUwgS0lZRU9LIEE7U287MDtMOzxjaXJjbGU+IDExMDAgMTE2MTs7OztOO0NJUkNMRUQgSEFOR1VMIEdBOzs7OworMzI2RjtDSVJDTEVEIEhBTkdVTCBOSUVVTiBBO1NvOzA7TDs8Y2lyY2xlPiAxMTAyIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBOQTs7OzsKKzMyNzA7Q0lSQ0xFRCBIQU5HVUwgVElLRVVUIEE7U287MDtMOzxjaXJjbGU+IDExMDMgMTE2MTs7OztOO0NJUkNMRUQgSEFOR1VMIERBOzs7OworMzI3MTtDSVJDTEVEIEhBTkdVTCBSSUVVTCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTA1IDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBMQTs7OzsKKzMyNzI7Q0lSQ0xFRCBIQU5HVUwgTUlFVU0gQTtTbzswO0w7PGNpcmNsZT4gMTEwNiAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgTUE7Ozs7CiszMjczO0NJUkNMRUQgSEFOR1VMIFBJRVVQIEE7U287MDtMOzxjaXJjbGU+IDExMDcgMTE2MTs7OztOO0NJUkNMRUQgSEFOR1VMIEJBOzs7OworMzI3NDtDSVJDTEVEIEhBTkdVTCBTSU9TIEE7U287MDtMOzxjaXJjbGU+IDExMDkgMTE2MTs7OztOO0NJUkNMRUQgSEFOR1VMIFNBOzs7OworMzI3NTtDSVJDTEVEIEhBTkdVTCBJRVVORyBBO1NvOzA7TDs8Y2lyY2xlPiAxMTBCIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBBOzs7OworMzI3NjtDSVJDTEVEIEhBTkdVTCBDSUVVQyBBO1NvOzA7TDs8Y2lyY2xlPiAxMTBDIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBKQTs7OzsKKzMyNzc7Q0lSQ0xFRCBIQU5HVUwgQ0hJRVVDSCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTBFIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBDQTs7OzsKKzMyNzg7Q0lSQ0xFRCBIQU5HVUwgS0hJRVVLSCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTBGIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBLQTs7OzsKKzMyNzk7Q0lSQ0xFRCBIQU5HVUwgVEhJRVVUSCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTEwIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBUQTs7OzsKKzMyN0E7Q0lSQ0xFRCBIQU5HVUwgUEhJRVVQSCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTExIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBQQTs7OzsKKzMyN0I7Q0lSQ0xFRCBIQU5HVUwgSElFVUggQTtTbzswO0w7PGNpcmNsZT4gMTExMiAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgSEE7Ozs7CiszMjdGO0tPUkVBTiBTVEFOREFSRCBTWU1CT0w7U287MDtMOzs7OztOOzs7OzsKKzMyODA7Q0lSQ0xFRCBJREVPR1JBUEggT05FO05vOzA7TDs8Y2lyY2xlPiA0RTAwOzs7MTtOOzs7OzsKKzMyODE7Q0lSQ0xFRCBJREVPR1JBUEggVFdPO05vOzA7TDs8Y2lyY2xlPiA0RThDOzs7MjtOOzs7OzsKKzMyODI7Q0lSQ0xFRCBJREVPR1JBUEggVEhSRUU7Tm87MDtMOzxjaXJjbGU+IDRFMDk7OzszO047Ozs7OworMzI4MztDSVJDTEVEIElERU9HUkFQSCBGT1VSO05vOzA7TDs8Y2lyY2xlPiA1NkRCOzs7NDtOOzs7OzsKKzMyODQ7Q0lSQ0xFRCBJREVPR1JBUEggRklWRTtObzswO0w7PGNpcmNsZT4gNEU5NDs7OzU7Tjs7Ozs7CiszMjg1O0NJUkNMRUQgSURFT0dSQVBIIFNJWDtObzswO0w7PGNpcmNsZT4gNTE2RDs7OzY7Tjs7Ozs7CiszMjg2O0NJUkNMRUQgSURFT0dSQVBIIFNFVkVOO05vOzA7TDs8Y2lyY2xlPiA0RTAzOzs7NztOOzs7OzsKKzMyODc7Q0lSQ0xFRCBJREVPR1JBUEggRUlHSFQ7Tm87MDtMOzxjaXJjbGU+IDUxNkI7Ozs4O047Ozs7OworMzI4ODtDSVJDTEVEIElERU9HUkFQSCBOSU5FO05vOzA7TDs8Y2lyY2xlPiA0RTVEOzs7OTtOOzs7OzsKKzMyODk7Q0lSQ0xFRCBJREVPR1JBUEggVEVOO05vOzA7TDs8Y2lyY2xlPiA1MzQxOzs7MTA7Tjs7Ozs7CiszMjhBO0NJUkNMRUQgSURFT0dSQVBIIE1PT047U287MDtMOzxjaXJjbGU+IDY3MDg7Ozs7Tjs7Ozs7CiszMjhCO0NJUkNMRUQgSURFT0dSQVBIIEZJUkU7U287MDtMOzxjaXJjbGU+IDcwNkI7Ozs7Tjs7Ozs7CiszMjhDO0NJUkNMRUQgSURFT0dSQVBIIFdBVEVSO1NvOzA7TDs8Y2lyY2xlPiA2QzM0Ozs7O047Ozs7OworMzI4RDtDSVJDTEVEIElERU9HUkFQSCBXT09EO1NvOzA7TDs8Y2lyY2xlPiA2NzI4Ozs7O047Ozs7OworMzI4RTtDSVJDTEVEIElERU9HUkFQSCBNRVRBTDtTbzswO0w7PGNpcmNsZT4gOTFEMTs7OztOOzs7OzsKKzMyOEY7Q0lSQ0xFRCBJREVPR1JBUEggRUFSVEg7U287MDtMOzxjaXJjbGU+IDU3MUY7Ozs7Tjs7Ozs7CiszMjkwO0NJUkNMRUQgSURFT0dSQVBIIFNVTjtTbzswO0w7PGNpcmNsZT4gNjVFNTs7OztOOzs7OzsKKzMyOTE7Q0lSQ0xFRCBJREVPR1JBUEggU1RPQ0s7U287MDtMOzxjaXJjbGU+IDY4MkE7Ozs7Tjs7Ozs7CiszMjkyO0NJUkNMRUQgSURFT0dSQVBIIEhBVkU7U287MDtMOzxjaXJjbGU+IDY3MDk7Ozs7Tjs7Ozs7CiszMjkzO0NJUkNMRUQgSURFT0dSQVBIIFNPQ0lFVFk7U287MDtMOzxjaXJjbGU+IDc5M0U7Ozs7Tjs7Ozs7CiszMjk0O0NJUkNMRUQgSURFT0dSQVBIIE5BTUU7U287MDtMOzxjaXJjbGU+IDU0MEQ7Ozs7Tjs7Ozs7CiszMjk1O0NJUkNMRUQgSURFT0dSQVBIIFNQRUNJQUw7U287MDtMOzxjaXJjbGU+IDcyNzk7Ozs7Tjs7Ozs7CiszMjk2O0NJUkNMRUQgSURFT0dSQVBIIEZJTkFOQ0lBTDtTbzswO0w7PGNpcmNsZT4gOENBMTs7OztOOzs7OzsKKzMyOTc7Q0lSQ0xFRCBJREVPR1JBUEggQ09OR1JBVFVMQVRJT047U287MDtMOzxjaXJjbGU+IDc5NUQ7Ozs7Tjs7Ozs7CiszMjk4O0NJUkNMRUQgSURFT0dSQVBIIExBQk9SO1NvOzA7TDs8Y2lyY2xlPiA1MkI0Ozs7O047Ozs7OworMzI5OTtDSVJDTEVEIElERU9HUkFQSCBTRUNSRVQ7U287MDtMOzxjaXJjbGU+IDc5RDg7Ozs7Tjs7Ozs7CiszMjlBO0NJUkNMRUQgSURFT0dSQVBIIE1BTEU7U287MDtMOzxjaXJjbGU+IDc1Mzc7Ozs7Tjs7Ozs7CiszMjlCO0NJUkNMRUQgSURFT0dSQVBIIEZFTUFMRTtTbzswO0w7PGNpcmNsZT4gNTk3Mzs7OztOOzs7OzsKKzMyOUM7Q0lSQ0xFRCBJREVPR1JBUEggU1VJVEFCTEU7U287MDtMOzxjaXJjbGU+IDkwNjk7Ozs7Tjs7Ozs7CiszMjlEO0NJUkNMRUQgSURFT0dSQVBIIEVYQ0VMTEVOVDtTbzswO0w7PGNpcmNsZT4gNTEyQTs7OztOOzs7OzsKKzMyOUU7Q0lSQ0xFRCBJREVPR1JBUEggUFJJTlQ7U287MDtMOzxjaXJjbGU+IDUzNzA7Ozs7Tjs7Ozs7CiszMjlGO0NJUkNMRUQgSURFT0dSQVBIIEFUVEVOVElPTjtTbzswO0w7PGNpcmNsZT4gNkNFODs7OztOOzs7OzsKKzMyQTA7Q0lSQ0xFRCBJREVPR1JBUEggSVRFTTtTbzswO0w7PGNpcmNsZT4gOTgwNTs7OztOOzs7OzsKKzMyQTE7Q0lSQ0xFRCBJREVPR1JBUEggUkVTVDtTbzswO0w7PGNpcmNsZT4gNEYxMTs7OztOOzs7OzsKKzMyQTI7Q0lSQ0xFRCBJREVPR1JBUEggQ09QWTtTbzswO0w7PGNpcmNsZT4gNTE5OTs7OztOOzs7OzsKKzMyQTM7Q0lSQ0xFRCBJREVPR1JBUEggQ09SUkVDVDtTbzswO0w7PGNpcmNsZT4gNkI2Mzs7OztOOzs7OzsKKzMyQTQ7Q0lSQ0xFRCBJREVPR1JBUEggSElHSDtTbzswO0w7PGNpcmNsZT4gNEUwQTs7OztOOzs7OzsKKzMyQTU7Q0lSQ0xFRCBJREVPR1JBUEggQ0VOVFJFO1NvOzA7TDs8Y2lyY2xlPiA0RTJEOzs7O047Q0lSQ0xFRCBJREVPR1JBUEggQ0VOVEVSOzs7OworMzJBNjtDSVJDTEVEIElERU9HUkFQSCBMT1c7U287MDtMOzxjaXJjbGU+IDRFMEI7Ozs7Tjs7Ozs7CiszMkE3O0NJUkNMRUQgSURFT0dSQVBIIExFRlQ7U287MDtMOzxjaXJjbGU+IDVERTY7Ozs7Tjs7Ozs7CiszMkE4O0NJUkNMRUQgSURFT0dSQVBIIFJJR0hUO1NvOzA7TDs8Y2lyY2xlPiA1M0YzOzs7O047Ozs7OworMzJBOTtDSVJDTEVEIElERU9HUkFQSCBNRURJQ0lORTtTbzswO0w7PGNpcmNsZT4gNTMzQjs7OztOOzs7OzsKKzMyQUE7Q0lSQ0xFRCBJREVPR1JBUEggUkVMSUdJT047U287MDtMOzxjaXJjbGU+IDVCOTc7Ozs7Tjs7Ozs7CiszMkFCO0NJUkNMRUQgSURFT0dSQVBIIFNUVURZO1NvOzA7TDs8Y2lyY2xlPiA1QjY2Ozs7O047Ozs7OworMzJBQztDSVJDTEVEIElERU9HUkFQSCBTVVBFUlZJU0U7U287MDtMOzxjaXJjbGU+IDc2RTM7Ozs7Tjs7Ozs7CiszMkFEO0NJUkNMRUQgSURFT0dSQVBIIEVOVEVSUFJJU0U7U287MDtMOzxjaXJjbGU+IDRGMDE7Ozs7Tjs7Ozs7CiszMkFFO0NJUkNMRUQgSURFT0dSQVBIIFJFU09VUkNFO1NvOzA7TDs8Y2lyY2xlPiA4Q0M3Ozs7O047Ozs7OworMzJBRjtDSVJDTEVEIElERU9HUkFQSCBBTExJQU5DRTtTbzswO0w7PGNpcmNsZT4gNTM1NDs7OztOOzs7OzsKKzMyQjA7Q0lSQ0xFRCBJREVPR1JBUEggTklHSFQ7U287MDtMOzxjaXJjbGU+IDU5MUM7Ozs7Tjs7Ozs7CiszMkMwO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEpBTlVBUlk7U287MDtMOzxjb21wYXQ+IDAwMzEgNjcwODs7OztOOzs7OzsKKzMyQzE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgRkVCUlVBUlk7U287MDtMOzxjb21wYXQ+IDAwMzIgNjcwODs7OztOOzs7OzsKKzMyQzI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgTUFSQ0g7U287MDtMOzxjb21wYXQ+IDAwMzMgNjcwODs7OztOOzs7OzsKKzMyQzM7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgQVBSSUw7U287MDtMOzxjb21wYXQ+IDAwMzQgNjcwODs7OztOOzs7OzsKKzMyQzQ7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgTUFZO1NvOzA7TDs8Y29tcGF0PiAwMDM1IDY3MDg7Ozs7Tjs7Ozs7CiszMkM1O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEpVTkU7U287MDtMOzxjb21wYXQ+IDAwMzYgNjcwODs7OztOOzs7OzsKKzMyQzY7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSlVMWTtTbzswO0w7PGNvbXBhdD4gMDAzNyA2NzA4Ozs7O047Ozs7OworMzJDNztJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBBVUdVU1Q7U287MDtMOzxjb21wYXQ+IDAwMzggNjcwODs7OztOOzs7OzsKKzMyQzg7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgU0VQVEVNQkVSO1NvOzA7TDs8Y29tcGF0PiAwMDM5IDY3MDg7Ozs7Tjs7Ozs7CiszMkM5O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIE9DVE9CRVI7U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMCA2NzA4Ozs7O047Ozs7OworMzJDQTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBOT1ZFTUJFUjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMxIDY3MDg7Ozs7Tjs7Ozs7CiszMkNCO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERFQ0VNQkVSO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzIgNjcwODs7OztOOzs7OzsKKzMyRDA7Q0lSQ0xFRCBLQVRBS0FOQSBBO1NvOzA7TDs8Y2lyY2xlPiAzMEEyOzs7O047Ozs7OworMzJEMTtDSVJDTEVEIEtBVEFLQU5BIEk7U287MDtMOzxjaXJjbGU+IDMwQTQ7Ozs7Tjs7Ozs7CiszMkQyO0NJUkNMRUQgS0FUQUtBTkEgVTtTbzswO0w7PGNpcmNsZT4gMzBBNjs7OztOOzs7OzsKKzMyRDM7Q0lSQ0xFRCBLQVRBS0FOQSBFO1NvOzA7TDs8Y2lyY2xlPiAzMEE4Ozs7O047Ozs7OworMzJENDtDSVJDTEVEIEtBVEFLQU5BIE87U287MDtMOzxjaXJjbGU+IDMwQUE7Ozs7Tjs7Ozs7CiszMkQ1O0NJUkNMRUQgS0FUQUtBTkEgS0E7U287MDtMOzxjaXJjbGU+IDMwQUI7Ozs7Tjs7Ozs7CiszMkQ2O0NJUkNMRUQgS0FUQUtBTkEgS0k7U287MDtMOzxjaXJjbGU+IDMwQUQ7Ozs7Tjs7Ozs7CiszMkQ3O0NJUkNMRUQgS0FUQUtBTkEgS1U7U287MDtMOzxjaXJjbGU+IDMwQUY7Ozs7Tjs7Ozs7CiszMkQ4O0NJUkNMRUQgS0FUQUtBTkEgS0U7U287MDtMOzxjaXJjbGU+IDMwQjE7Ozs7Tjs7Ozs7CiszMkQ5O0NJUkNMRUQgS0FUQUtBTkEgS087U287MDtMOzxjaXJjbGU+IDMwQjM7Ozs7Tjs7Ozs7CiszMkRBO0NJUkNMRUQgS0FUQUtBTkEgU0E7U287MDtMOzxjaXJjbGU+IDMwQjU7Ozs7Tjs7Ozs7CiszMkRCO0NJUkNMRUQgS0FUQUtBTkEgU0k7U287MDtMOzxjaXJjbGU+IDMwQjc7Ozs7Tjs7Ozs7CiszMkRDO0NJUkNMRUQgS0FUQUtBTkEgU1U7U287MDtMOzxjaXJjbGU+IDMwQjk7Ozs7Tjs7Ozs7CiszMkREO0NJUkNMRUQgS0FUQUtBTkEgU0U7U287MDtMOzxjaXJjbGU+IDMwQkI7Ozs7Tjs7Ozs7CiszMkRFO0NJUkNMRUQgS0FUQUtBTkEgU087U287MDtMOzxjaXJjbGU+IDMwQkQ7Ozs7Tjs7Ozs7CiszMkRGO0NJUkNMRUQgS0FUQUtBTkEgVEE7U287MDtMOzxjaXJjbGU+IDMwQkY7Ozs7Tjs7Ozs7CiszMkUwO0NJUkNMRUQgS0FUQUtBTkEgVEk7U287MDtMOzxjaXJjbGU+IDMwQzE7Ozs7Tjs7Ozs7CiszMkUxO0NJUkNMRUQgS0FUQUtBTkEgVFU7U287MDtMOzxjaXJjbGU+IDMwQzQ7Ozs7Tjs7Ozs7CiszMkUyO0NJUkNMRUQgS0FUQUtBTkEgVEU7U287MDtMOzxjaXJjbGU+IDMwQzY7Ozs7Tjs7Ozs7CiszMkUzO0NJUkNMRUQgS0FUQUtBTkEgVE87U287MDtMOzxjaXJjbGU+IDMwQzg7Ozs7Tjs7Ozs7CiszMkU0O0NJUkNMRUQgS0FUQUtBTkEgTkE7U287MDtMOzxjaXJjbGU+IDMwQ0E7Ozs7Tjs7Ozs7CiszMkU1O0NJUkNMRUQgS0FUQUtBTkEgTkk7U287MDtMOzxjaXJjbGU+IDMwQ0I7Ozs7Tjs7Ozs7CiszMkU2O0NJUkNMRUQgS0FUQUtBTkEgTlU7U287MDtMOzxjaXJjbGU+IDMwQ0M7Ozs7Tjs7Ozs7CiszMkU3O0NJUkNMRUQgS0FUQUtBTkEgTkU7U287MDtMOzxjaXJjbGU+IDMwQ0Q7Ozs7Tjs7Ozs7CiszMkU4O0NJUkNMRUQgS0FUQUtBTkEgTk87U287MDtMOzxjaXJjbGU+IDMwQ0U7Ozs7Tjs7Ozs7CiszMkU5O0NJUkNMRUQgS0FUQUtBTkEgSEE7U287MDtMOzxjaXJjbGU+IDMwQ0Y7Ozs7Tjs7Ozs7CiszMkVBO0NJUkNMRUQgS0FUQUtBTkEgSEk7U287MDtMOzxjaXJjbGU+IDMwRDI7Ozs7Tjs7Ozs7CiszMkVCO0NJUkNMRUQgS0FUQUtBTkEgSFU7U287MDtMOzxjaXJjbGU+IDMwRDU7Ozs7Tjs7Ozs7CiszMkVDO0NJUkNMRUQgS0FUQUtBTkEgSEU7U287MDtMOzxjaXJjbGU+IDMwRDg7Ozs7Tjs7Ozs7CiszMkVEO0NJUkNMRUQgS0FUQUtBTkEgSE87U287MDtMOzxjaXJjbGU+IDMwREI7Ozs7Tjs7Ozs7CiszMkVFO0NJUkNMRUQgS0FUQUtBTkEgTUE7U287MDtMOzxjaXJjbGU+IDMwREU7Ozs7Tjs7Ozs7CiszMkVGO0NJUkNMRUQgS0FUQUtBTkEgTUk7U287MDtMOzxjaXJjbGU+IDMwREY7Ozs7Tjs7Ozs7CiszMkYwO0NJUkNMRUQgS0FUQUtBTkEgTVU7U287MDtMOzxjaXJjbGU+IDMwRTA7Ozs7Tjs7Ozs7CiszMkYxO0NJUkNMRUQgS0FUQUtBTkEgTUU7U287MDtMOzxjaXJjbGU+IDMwRTE7Ozs7Tjs7Ozs7CiszMkYyO0NJUkNMRUQgS0FUQUtBTkEgTU87U287MDtMOzxjaXJjbGU+IDMwRTI7Ozs7Tjs7Ozs7CiszMkYzO0NJUkNMRUQgS0FUQUtBTkEgWUE7U287MDtMOzxjaXJjbGU+IDMwRTQ7Ozs7Tjs7Ozs7CiszMkY0O0NJUkNMRUQgS0FUQUtBTkEgWVU7U287MDtMOzxjaXJjbGU+IDMwRTY7Ozs7Tjs7Ozs7CiszMkY1O0NJUkNMRUQgS0FUQUtBTkEgWU87U287MDtMOzxjaXJjbGU+IDMwRTg7Ozs7Tjs7Ozs7CiszMkY2O0NJUkNMRUQgS0FUQUtBTkEgUkE7U287MDtMOzxjaXJjbGU+IDMwRTk7Ozs7Tjs7Ozs7CiszMkY3O0NJUkNMRUQgS0FUQUtBTkEgUkk7U287MDtMOzxjaXJjbGU+IDMwRUE7Ozs7Tjs7Ozs7CiszMkY4O0NJUkNMRUQgS0FUQUtBTkEgUlU7U287MDtMOzxjaXJjbGU+IDMwRUI7Ozs7Tjs7Ozs7CiszMkY5O0NJUkNMRUQgS0FUQUtBTkEgUkU7U287MDtMOzxjaXJjbGU+IDMwRUM7Ozs7Tjs7Ozs7CiszMkZBO0NJUkNMRUQgS0FUQUtBTkEgUk87U287MDtMOzxjaXJjbGU+IDMwRUQ7Ozs7Tjs7Ozs7CiszMkZCO0NJUkNMRUQgS0FUQUtBTkEgV0E7U287MDtMOzxjaXJjbGU+IDMwRUY7Ozs7Tjs7Ozs7CiszMkZDO0NJUkNMRUQgS0FUQUtBTkEgV0k7U287MDtMOzxjaXJjbGU+IDMwRjA7Ozs7Tjs7Ozs7CiszMkZEO0NJUkNMRUQgS0FUQUtBTkEgV0U7U287MDtMOzxjaXJjbGU+IDMwRjE7Ozs7Tjs7Ozs7CiszMkZFO0NJUkNMRUQgS0FUQUtBTkEgV087U287MDtMOzxjaXJjbGU+IDMwRjI7Ozs7Tjs7Ozs7CiszMzAwO1NRVUFSRSBBUEFBVE87U287MDtMOzxzcXVhcmU+IDMwQTIgMzBEMSAzMEZDIDMwQzg7Ozs7TjtTUVVBUkVEIEFQQUFUTzs7OzsKKzMzMDE7U1FVQVJFIEFSVUhVQTtTbzswO0w7PHNxdWFyZT4gMzBBMiAzMEVCIDMwRDUgMzBBMTs7OztOO1NRVUFSRUQgQVJVSFVBOzs7OworMzMwMjtTUVVBUkUgQU5QRUE7U287MDtMOzxzcXVhcmU+IDMwQTIgMzBGMyAzMERBIDMwQTI7Ozs7TjtTUVVBUkVEIEFOUEVBOzs7OworMzMwMztTUVVBUkUgQUFSVTtTbzswO0w7PHNxdWFyZT4gMzBBMiAzMEZDIDMwRUI7Ozs7TjtTUVVBUkVEIEFBUlU7Ozs7CiszMzA0O1NRVUFSRSBJTklOR1U7U287MDtMOzxzcXVhcmU+IDMwQTQgMzBDQiAzMEYzIDMwQjA7Ozs7TjtTUVVBUkVEIElOSU5HVTs7OzsKKzMzMDU7U1FVQVJFIElOVEk7U287MDtMOzxzcXVhcmU+IDMwQTQgMzBGMyAzMEMxOzs7O047U1FVQVJFRCBJTlRJOzs7OworMzMwNjtTUVVBUkUgVU9OO1NvOzA7TDs8c3F1YXJlPiAzMEE2IDMwQTkgMzBGMzs7OztOO1NRVUFSRUQgVU9OOzs7OworMzMwNztTUVVBUkUgRVNVS1VVRE87U287MDtMOzxzcXVhcmU+IDMwQTggMzBCOSAzMEFGIDMwRkMgMzBDOTs7OztOO1NRVUFSRUQgRVNVS1VVRE87Ozs7CiszMzA4O1NRVUFSRSBFRUtBQTtTbzswO0w7PHNxdWFyZT4gMzBBOCAzMEZDIDMwQUIgMzBGQzs7OztOO1NRVUFSRUQgRUVLQUE7Ozs7CiszMzA5O1NRVUFSRSBPTlNVO1NvOzA7TDs8c3F1YXJlPiAzMEFBIDMwRjMgMzBCOTs7OztOO1NRVUFSRUQgT05TVTs7OzsKKzMzMEE7U1FVQVJFIE9PTVU7U287MDtMOzxzcXVhcmU+IDMwQUEgMzBGQyAzMEUwOzs7O047U1FVQVJFRCBPT01VOzs7OworMzMwQjtTUVVBUkUgS0FJUkk7U287MDtMOzxzcXVhcmU+IDMwQUIgMzBBNCAzMEVBOzs7O047U1FVQVJFRCBLQUlSSTs7OzsKKzMzMEM7U1FVQVJFIEtBUkFUVE87U287MDtMOzxzcXVhcmU+IDMwQUIgMzBFOSAzMEMzIDMwQzg7Ozs7TjtTUVVBUkVEIEtBUkFUVE87Ozs7CiszMzBEO1NRVUFSRSBLQVJPUklJO1NvOzA7TDs8c3F1YXJlPiAzMEFCIDMwRUQgMzBFQSAzMEZDOzs7O047U1FVQVJFRCBLQVJPUklJOzs7OworMzMwRTtTUVVBUkUgR0FST047U287MDtMOzxzcXVhcmU+IDMwQUMgMzBFRCAzMEYzOzs7O047U1FVQVJFRCBHQVJPTjs7OzsKKzMzMEY7U1FVQVJFIEdBTk1BO1NvOzA7TDs8c3F1YXJlPiAzMEFDIDMwRjMgMzBERTs7OztOO1NRVUFSRUQgR0FOTUE7Ozs7CiszMzEwO1NRVUFSRSBHSUdBO1NvOzA7TDs8c3F1YXJlPiAzMEFFIDMwQUM7Ozs7TjtTUVVBUkVEIEdJR0E7Ozs7CiszMzExO1NRVUFSRSBHSU5JSTtTbzswO0w7PHNxdWFyZT4gMzBBRSAzMENCIDMwRkM7Ozs7TjtTUVVBUkVEIEdJTklJOzs7OworMzMxMjtTUVVBUkUgS1lVUklJO1NvOzA7TDs8c3F1YXJlPiAzMEFEIDMwRTUgMzBFQSAzMEZDOzs7O047U1FVQVJFRCBLWVVSSUk7Ozs7CiszMzEzO1NRVUFSRSBHSVJVREFBO1NvOzA7TDs8c3F1YXJlPiAzMEFFIDMwRUIgMzBDMCAzMEZDOzs7O047U1FVQVJFRCBHSVJVREFBOzs7OworMzMxNDtTUVVBUkUgS0lSTztTbzswO0w7PHNxdWFyZT4gMzBBRCAzMEVEOzs7O047U1FVQVJFRCBLSVJPOzs7OworMzMxNTtTUVVBUkUgS0lST0dVUkFNVTtTbzswO0w7PHNxdWFyZT4gMzBBRCAzMEVEIDMwQjAgMzBFOSAzMEUwOzs7O047U1FVQVJFRCBLSVJPR1VSQU1VOzs7OworMzMxNjtTUVVBUkUgS0lST01FRVRPUlU7U287MDtMOzxzcXVhcmU+IDMwQUQgMzBFRCAzMEUxIDMwRkMgMzBDOCAzMEVCOzs7O047U1FVQVJFRCBLSVJPTUVFVE9SVTs7OzsKKzMzMTc7U1FVQVJFIEtJUk9XQVRUTztTbzswO0w7PHNxdWFyZT4gMzBBRCAzMEVEIDMwRUYgMzBDMyAzMEM4Ozs7O047U1FVQVJFRCBLSVJPV0FUVE87Ozs7CiszMzE4O1NRVUFSRSBHVVJBTVU7U287MDtMOzxzcXVhcmU+IDMwQjAgMzBFOSAzMEUwOzs7O047U1FVQVJFRCBHVVJBTVU7Ozs7CiszMzE5O1NRVUFSRSBHVVJBTVVUT047U287MDtMOzxzcXVhcmU+IDMwQjAgMzBFOSAzMEUwIDMwQzggMzBGMzs7OztOO1NRVUFSRUQgR1VSQU1VVE9OOzs7OworMzMxQTtTUVVBUkUgS1VSVVpFSVJPO1NvOzA7TDs8c3F1YXJlPiAzMEFGIDMwRUIgMzBCQyAzMEE0IDMwRUQ7Ozs7TjtTUVVBUkVEIEtVUlVaRUlSTzs7OzsKKzMzMUI7U1FVQVJFIEtVUk9PTkU7U287MDtMOzxzcXVhcmU+IDMwQUYgMzBFRCAzMEZDIDMwQ0Q7Ozs7TjtTUVVBUkVEIEtVUk9PTkU7Ozs7CiszMzFDO1NRVUFSRSBLRUVTVTtTbzswO0w7PHNxdWFyZT4gMzBCMSAzMEZDIDMwQjk7Ozs7TjtTUVVBUkVEIEtFRVNVOzs7OworMzMxRDtTUVVBUkUgS09SVU5BO1NvOzA7TDs8c3F1YXJlPiAzMEIzIDMwRUIgMzBDQTs7OztOO1NRVUFSRUQgS09SVU5BOzs7OworMzMxRTtTUVVBUkUgS09PUE87U287MDtMOzxzcXVhcmU+IDMwQjMgMzBGQyAzMEREOzs7O047U1FVQVJFRCBLT09QTzs7OzsKKzMzMUY7U1FVQVJFIFNBSUtVUlU7U287MDtMOzxzcXVhcmU+IDMwQjUgMzBBNCAzMEFGIDMwRUI7Ozs7TjtTUVVBUkVEIFNBSUtVUlU7Ozs7CiszMzIwO1NRVUFSRSBTQU5USUlNVTtTbzswO0w7PHNxdWFyZT4gMzBCNSAzMEYzIDMwQzEgMzBGQyAzMEUwOzs7O047U1FVQVJFRCBTQU5USUlNVTs7OzsKKzMzMjE7U1FVQVJFIFNJUklOR1U7U287MDtMOzxzcXVhcmU+IDMwQjcgMzBFQSAzMEYzIDMwQjA7Ozs7TjtTUVVBUkVEIFNJUklOR1U7Ozs7CiszMzIyO1NRVUFSRSBTRU5USTtTbzswO0w7PHNxdWFyZT4gMzBCQiAzMEYzIDMwQzE7Ozs7TjtTUVVBUkVEIFNFTlRJOzs7OworMzMyMztTUVVBUkUgU0VOVE87U287MDtMOzxzcXVhcmU+IDMwQkIgMzBGMyAzMEM4Ozs7O047U1FVQVJFRCBTRU5UTzs7OzsKKzMzMjQ7U1FVQVJFIERBQVNVO1NvOzA7TDs8c3F1YXJlPiAzMEMwIDMwRkMgMzBCOTs7OztOO1NRVUFSRUQgREFBU1U7Ozs7CiszMzI1O1NRVUFSRSBERVNJO1NvOzA7TDs8c3F1YXJlPiAzMEM3IDMwQjc7Ozs7TjtTUVVBUkVEIERFU0k7Ozs7CiszMzI2O1NRVUFSRSBET1JVO1NvOzA7TDs8c3F1YXJlPiAzMEM5IDMwRUI7Ozs7TjtTUVVBUkVEIERPUlU7Ozs7CiszMzI3O1NRVUFSRSBUT047U287MDtMOzxzcXVhcmU+IDMwQzggMzBGMzs7OztOO1NRVUFSRUQgVE9OOzs7OworMzMyODtTUVVBUkUgTkFOTztTbzswO0w7PHNxdWFyZT4gMzBDQSAzMENFOzs7O047U1FVQVJFRCBOQU5POzs7OworMzMyOTtTUVVBUkUgTk9UVE87U287MDtMOzxzcXVhcmU+IDMwQ0UgMzBDMyAzMEM4Ozs7O047U1FVQVJFRCBOT1RUTzs7OzsKKzMzMkE7U1FVQVJFIEhBSVRVO1NvOzA7TDs8c3F1YXJlPiAzMENGIDMwQTQgMzBDNDs7OztOO1NRVUFSRUQgSEFJVFU7Ozs7CiszMzJCO1NRVUFSRSBQQUFTRU5UTztTbzswO0w7PHNxdWFyZT4gMzBEMSAzMEZDIDMwQkIgMzBGMyAzMEM4Ozs7O047U1FVQVJFRCBQQUFTRU5UTzs7OzsKKzMzMkM7U1FVQVJFIFBBQVRVO1NvOzA7TDs8c3F1YXJlPiAzMEQxIDMwRkMgMzBDNDs7OztOO1NRVUFSRUQgUEFBVFU7Ozs7CiszMzJEO1NRVUFSRSBCQUFSRVJVO1NvOzA7TDs8c3F1YXJlPiAzMEQwIDMwRkMgMzBFQyAzMEVCOzs7O047U1FVQVJFRCBCQUFSRVJVOzs7OworMzMyRTtTUVVBUkUgUElBU1VUT1JVO1NvOzA7TDs8c3F1YXJlPiAzMEQ0IDMwQTIgMzBCOSAzMEM4IDMwRUI7Ozs7TjtTUVVBUkVEIFBJQVNVVE9SVTs7OzsKKzMzMkY7U1FVQVJFIFBJS1VSVTtTbzswO0w7PHNxdWFyZT4gMzBENCAzMEFGIDMwRUI7Ozs7TjtTUVVBUkVEIFBJS1VSVTs7OzsKKzMzMzA7U1FVQVJFIFBJS087U287MDtMOzxzcXVhcmU+IDMwRDQgMzBCMzs7OztOO1NRVUFSRUQgUElLTzs7OzsKKzMzMzE7U1FVQVJFIEJJUlU7U287MDtMOzxzcXVhcmU+IDMwRDMgMzBFQjs7OztOO1NRVUFSRUQgQklSVTs7OzsKKzMzMzI7U1FVQVJFIEhVQVJBRERPO1NvOzA7TDs8c3F1YXJlPiAzMEQ1IDMwQTEgMzBFOSAzMEMzIDMwQzk7Ozs7TjtTUVVBUkVEIEhVQVJBRERPOzs7OworMzMzMztTUVVBUkUgSFVJSVRPO1NvOzA7TDs8c3F1YXJlPiAzMEQ1IDMwQTMgMzBGQyAzMEM4Ozs7O047U1FVQVJFRCBIVUlJVE87Ozs7CiszMzM0O1NRVUFSRSBCVVNTWUVSVTtTbzswO0w7PHNxdWFyZT4gMzBENiAzMEMzIDMwQjcgMzBBNyAzMEVCOzs7O047U1FVQVJFRCBCVVNTWUVSVTs7OzsKKzMzMzU7U1FVQVJFIEhVUkFOO1NvOzA7TDs8c3F1YXJlPiAzMEQ1IDMwRTkgMzBGMzs7OztOO1NRVUFSRUQgSFVSQU47Ozs7CiszMzM2O1NRVUFSRSBIRUtVVEFBUlU7U287MDtMOzxzcXVhcmU+IDMwRDggMzBBRiAzMEJGIDMwRkMgMzBFQjs7OztOO1NRVUFSRUQgSEVLVVRBQVJVOzs7OworMzMzNztTUVVBUkUgUEVTTztTbzswO0w7PHNxdWFyZT4gMzBEQSAzMEJEOzs7O047U1FVQVJFRCBQRVNPOzs7OworMzMzODtTUVVBUkUgUEVOSUhJO1NvOzA7TDs8c3F1YXJlPiAzMERBIDMwQ0IgMzBEMjs7OztOO1NRVUFSRUQgUEVOSUhJOzs7OworMzMzOTtTUVVBUkUgSEVSVVRVO1NvOzA7TDs8c3F1YXJlPiAzMEQ4IDMwRUIgMzBDNDs7OztOO1NRVUFSRUQgSEVSVVRVOzs7OworMzMzQTtTUVVBUkUgUEVOU1U7U287MDtMOzxzcXVhcmU+IDMwREEgMzBGMyAzMEI5Ozs7O047U1FVQVJFRCBQRU5TVTs7OzsKKzMzM0I7U1FVQVJFIFBFRVpJO1NvOzA7TDs8c3F1YXJlPiAzMERBIDMwRkMgMzBCODs7OztOO1NRVUFSRUQgUEVFWkk7Ozs7CiszMzNDO1NRVUFSRSBCRUVUQTtTbzswO0w7PHNxdWFyZT4gMzBEOSAzMEZDIDMwQkY7Ozs7TjtTUVVBUkVEIEJFRVRBOzs7OworMzMzRDtTUVVBUkUgUE9JTlRPO1NvOzA7TDs8c3F1YXJlPiAzMEREIDMwQTQgMzBGMyAzMEM4Ozs7O047U1FVQVJFRCBQT0lOVE87Ozs7CiszMzNFO1NRVUFSRSBCT1JVVE87U287MDtMOzxzcXVhcmU+IDMwREMgMzBFQiAzMEM4Ozs7O047U1FVQVJFRCBCT1JVVE87Ozs7CiszMzNGO1NRVUFSRSBIT047U287MDtMOzxzcXVhcmU+IDMwREIgMzBGMzs7OztOO1NRVUFSRUQgSE9OOzs7OworMzM0MDtTUVVBUkUgUE9ORE87U287MDtMOzxzcXVhcmU+IDMwREQgMzBGMyAzMEM5Ozs7O047U1FVQVJFRCBQT05ETzs7OzsKKzMzNDE7U1FVQVJFIEhPT1JVO1NvOzA7TDs8c3F1YXJlPiAzMERCIDMwRkMgMzBFQjs7OztOO1NRVUFSRUQgSE9PUlU7Ozs7CiszMzQyO1NRVUFSRSBIT09OO1NvOzA7TDs8c3F1YXJlPiAzMERCIDMwRkMgMzBGMzs7OztOO1NRVUFSRUQgSE9PTjs7OzsKKzMzNDM7U1FVQVJFIE1BSUtVUk87U287MDtMOzxzcXVhcmU+IDMwREUgMzBBNCAzMEFGIDMwRUQ7Ozs7TjtTUVVBUkVEIE1BSUtVUk87Ozs7CiszMzQ0O1NRVUFSRSBNQUlSVTtTbzswO0w7PHNxdWFyZT4gMzBERSAzMEE0IDMwRUI7Ozs7TjtTUVVBUkVEIE1BSVJVOzs7OworMzM0NTtTUVVBUkUgTUFISEE7U287MDtMOzxzcXVhcmU+IDMwREUgMzBDMyAzMENGOzs7O047U1FVQVJFRCBNQUhIQTs7OzsKKzMzNDY7U1FVQVJFIE1BUlVLVTtTbzswO0w7PHNxdWFyZT4gMzBERSAzMEVCIDMwQUY7Ozs7TjtTUVVBUkVEIE1BUlVLVTs7OzsKKzMzNDc7U1FVQVJFIE1BTlNZT047U287MDtMOzxzcXVhcmU+IDMwREUgMzBGMyAzMEI3IDMwRTcgMzBGMzs7OztOO1NRVUFSRUQgTUFOU1lPTjs7OzsKKzMzNDg7U1FVQVJFIE1JS1VST047U287MDtMOzxzcXVhcmU+IDMwREYgMzBBRiAzMEVEIDMwRjM7Ozs7TjtTUVVBUkVEIE1JS1VST047Ozs7CiszMzQ5O1NRVUFSRSBNSVJJO1NvOzA7TDs8c3F1YXJlPiAzMERGIDMwRUE7Ozs7TjtTUVVBUkVEIE1JUkk7Ozs7CiszMzRBO1NRVUFSRSBNSVJJQkFBUlU7U287MDtMOzxzcXVhcmU+IDMwREYgMzBFQSAzMEQwIDMwRkMgMzBFQjs7OztOO1NRVUFSRUQgTUlSSUJBQVJVOzs7OworMzM0QjtTUVVBUkUgTUVHQTtTbzswO0w7PHNxdWFyZT4gMzBFMSAzMEFDOzs7O047U1FVQVJFRCBNRUdBOzs7OworMzM0QztTUVVBUkUgTUVHQVRPTjtTbzswO0w7PHNxdWFyZT4gMzBFMSAzMEFDIDMwQzggMzBGMzs7OztOO1NRVUFSRUQgTUVHQVRPTjs7OzsKKzMzNEQ7U1FVQVJFIE1FRVRPUlU7U287MDtMOzxzcXVhcmU+IDMwRTEgMzBGQyAzMEM4IDMwRUI7Ozs7TjtTUVVBUkVEIE1FRVRPUlU7Ozs7CiszMzRFO1NRVUFSRSBZQUFETztTbzswO0w7PHNxdWFyZT4gMzBFNCAzMEZDIDMwQzk7Ozs7TjtTUVVBUkVEIFlBQURPOzs7OworMzM0RjtTUVVBUkUgWUFBUlU7U287MDtMOzxzcXVhcmU+IDMwRTQgMzBGQyAzMEVCOzs7O047U1FVQVJFRCBZQUFSVTs7OzsKKzMzNTA7U1FVQVJFIFlVQU47U287MDtMOzxzcXVhcmU+IDMwRTYgMzBBMiAzMEYzOzs7O047U1FVQVJFRCBZVUFOOzs7OworMzM1MTtTUVVBUkUgUklUVE9SVTtTbzswO0w7PHNxdWFyZT4gMzBFQSAzMEMzIDMwQzggMzBFQjs7OztOO1NRVUFSRUQgUklUVE9SVTs7OzsKKzMzNTI7U1FVQVJFIFJJUkE7U287MDtMOzxzcXVhcmU+IDMwRUEgMzBFOTs7OztOO1NRVUFSRUQgUklSQTs7OzsKKzMzNTM7U1FVQVJFIFJVUElJO1NvOzA7TDs8c3F1YXJlPiAzMEVCIDMwRDQgMzBGQzs7OztOO1NRVUFSRUQgUlVQSUk7Ozs7CiszMzU0O1NRVUFSRSBSVVVCVVJVO1NvOzA7TDs8c3F1YXJlPiAzMEVCIDMwRkMgMzBENiAzMEVCOzs7O047U1FVQVJFRCBSVVVCVVJVOzs7OworMzM1NTtTUVVBUkUgUkVNVTtTbzswO0w7PHNxdWFyZT4gMzBFQyAzMEUwOzs7O047U1FVQVJFRCBSRU1VOzs7OworMzM1NjtTUVVBUkUgUkVOVE9HRU47U287MDtMOzxzcXVhcmU+IDMwRUMgMzBGMyAzMEM4IDMwQjIgMzBGMzs7OztOO1NRVUFSRUQgUkVOVE9HRU47Ozs7CiszMzU3O1NRVUFSRSBXQVRUTztTbzswO0w7PHNxdWFyZT4gMzBFRiAzMEMzIDMwQzg7Ozs7TjtTUVVBUkVEIFdBVFRPOzs7OworMzM1ODtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFpFUk87U287MDtMOzxjb21wYXQ+IDAwMzAgNzBCOTs7OztOOzs7OzsKKzMzNTk7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBPTkU7U287MDtMOzxjb21wYXQ+IDAwMzEgNzBCOTs7OztOOzs7OzsKKzMzNUE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV087U287MDtMOzxjb21wYXQ+IDAwMzIgNzBCOTs7OztOOzs7OzsKKzMzNUI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUSFJFRTtTbzswO0w7PGNvbXBhdD4gMDAzMyA3MEI5Ozs7O047Ozs7OworMzM1QztJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEZPVVI7U287MDtMOzxjb21wYXQ+IDAwMzQgNzBCOTs7OztOOzs7OzsKKzMzNUQ7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBGSVZFO1NvOzA7TDs8Y29tcGF0PiAwMDM1IDcwQjk7Ozs7Tjs7Ozs7CiszMzVFO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgU0lYO1NvOzA7TDs8Y29tcGF0PiAwMDM2IDcwQjk7Ozs7Tjs7Ozs7CiszMzVGO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgU0VWRU47U287MDtMOzxjb21wYXQ+IDAwMzcgNzBCOTs7OztOOzs7OzsKKzMzNjA7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBFSUdIVDtTbzswO0w7PGNvbXBhdD4gMDAzOCA3MEI5Ozs7O047Ozs7OworMzM2MTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIE5JTkU7U287MDtMOzxjb21wYXQ+IDAwMzkgNzBCOTs7OztOOzs7OzsKKzMzNjI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBURU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMCA3MEI5Ozs7O047Ozs7OworMzM2MztJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEVMRVZFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMxIDcwQjk7Ozs7Tjs7Ozs7CiszMzY0O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVFdFTFZFO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzIgNzBCOTs7OztOOzs7OzsKKzMzNjU7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUSElSVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMzIDcwQjk7Ozs7Tjs7Ozs7CiszMzY2O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgRk9VUlRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzNCA3MEI5Ozs7O047Ozs7OworMzM2NztJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEZJRlRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzNSA3MEI5Ozs7O047Ozs7OworMzM2ODtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFNJWFRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzNiA3MEI5Ozs7O047Ozs7OworMzM2OTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFNFVkVOVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM3IDcwQjk7Ozs7Tjs7Ozs7CiszMzZBO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgRUlHSFRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzOCA3MEI5Ozs7O047Ozs7OworMzM2QjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIE5JTkVURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzkgNzBCOTs7OztOOzs7OzsKKzMzNkM7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV0VOVFk7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzMCA3MEI5Ozs7O047Ozs7OworMzM2RDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRXRU5UWS1PTkU7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzMSA3MEI5Ozs7O047Ozs7OworMzM2RTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRXRU5UWS1UV087U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzMiA3MEI5Ozs7O047Ozs7OworMzM2RjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRXRU5UWS1USFJFRTtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDMzIDcwQjk7Ozs7Tjs7Ozs7CiszMzcwO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVFdFTlRZLUZPVVI7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzNCA3MEI5Ozs7O047Ozs7OworMzM3MTtTUVVBUkUgSFBBO1NvOzA7TDs8c3F1YXJlPiAwMDY4IDAwNTAgMDA2MTs7OztOOzs7OzsKKzMzNzI7U1FVQVJFIERBO1NvOzA7TDs8c3F1YXJlPiAwMDY0IDAwNjE7Ozs7Tjs7Ozs7CiszMzczO1NRVUFSRSBBVTtTbzswO0w7PHNxdWFyZT4gMDA0MSAwMDU1Ozs7O047Ozs7OworMzM3NDtTUVVBUkUgQkFSO1NvOzA7TDs8c3F1YXJlPiAwMDYyIDAwNjEgMDA3Mjs7OztOOzs7OzsKKzMzNzU7U1FVQVJFIE9WO1NvOzA7TDs8c3F1YXJlPiAwMDZGIDAwNTY7Ozs7Tjs7Ozs7CiszMzc2O1NRVUFSRSBQQztTbzswO0w7PHNxdWFyZT4gMDA3MCAwMDYzOzs7O047Ozs7OworMzM3QjtTUVVBUkUgRVJBIE5BTUUgSEVJU0VJO1NvOzA7TDs8c3F1YXJlPiA1RTczIDYyMTA7Ozs7TjtTUVVBUkVEIFRXTyBJREVPR1JBUEhTIEVSQSBOQU1FIEhFSVNFSTs7OzsKKzMzN0M7U1FVQVJFIEVSQSBOQU1FIFNZT1VXQTtTbzswO0w7PHNxdWFyZT4gNjYyRCA1NDhDOzs7O047U1FVQVJFRCBUV08gSURFT0dSQVBIUyBFUkEgTkFNRSBTWU9VV0E7Ozs7CiszMzdEO1NRVUFSRSBFUkEgTkFNRSBUQUlTWU9VO1NvOzA7TDs8c3F1YXJlPiA1OTI3IDZCNjM7Ozs7TjtTUVVBUkVEIFRXTyBJREVPR1JBUEhTIEVSQSBOQU1FIFRBSVNZT1U7Ozs7CiszMzdFO1NRVUFSRSBFUkEgTkFNRSBNRUlaSTtTbzswO0w7PHNxdWFyZT4gNjYwRSA2Q0JCOzs7O047U1FVQVJFRCBUV08gSURFT0dSQVBIUyBFUkEgTkFNRSBNRUlaSTs7OzsKKzMzN0Y7U1FVQVJFIENPUlBPUkFUSU9OO1NvOzA7TDs8c3F1YXJlPiA2ODJBIDVGMEYgNEYxQSA3OTNFOzs7O047U1FVQVJFRCBGT1VSIElERU9HUkFQSFMgQ09SUE9SQVRJT047Ozs7CiszMzgwO1NRVUFSRSBQQSBBTVBTO1NvOzA7TDs8c3F1YXJlPiAwMDcwIDAwNDE7Ozs7TjtTUVVBUkVEIFBBIEFNUFM7Ozs7CiszMzgxO1NRVUFSRSBOQTtTbzswO0w7PHNxdWFyZT4gMDA2RSAwMDQxOzs7O047U1FVQVJFRCBOQTs7OzsKKzMzODI7U1FVQVJFIE1VIEE7U287MDtMOzxzcXVhcmU+IDAzQkMgMDA0MTs7OztOO1NRVUFSRUQgTVUgQTs7OzsKKzMzODM7U1FVQVJFIE1BO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwNDE7Ozs7TjtTUVVBUkVEIE1BOzs7OworMzM4NDtTUVVBUkUgS0E7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA0MTs7OztOO1NRVUFSRUQgS0E7Ozs7CiszMzg1O1NRVUFSRSBLQjtTbzswO0w7PHNxdWFyZT4gMDA0QiAwMDQyOzs7O047U1FVQVJFRCBLQjs7OzsKKzMzODY7U1FVQVJFIE1CO1NvOzA7TDs8c3F1YXJlPiAwMDREIDAwNDI7Ozs7TjtTUVVBUkVEIE1COzs7OworMzM4NztTUVVBUkUgR0I7U287MDtMOzxzcXVhcmU+IDAwNDcgMDA0Mjs7OztOO1NRVUFSRUQgR0I7Ozs7CiszMzg4O1NRVUFSRSBDQUw7U287MDtMOzxzcXVhcmU+IDAwNjMgMDA2MSAwMDZDOzs7O047U1FVQVJFRCBDQUw7Ozs7CiszMzg5O1NRVUFSRSBLQ0FMO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNjMgMDA2MSAwMDZDOzs7O047U1FVQVJFRCBLQ0FMOzs7OworMzM4QTtTUVVBUkUgUEY7U287MDtMOzxzcXVhcmU+IDAwNzAgMDA0Njs7OztOO1NRVUFSRUQgUEY7Ozs7CiszMzhCO1NRVUFSRSBORjtTbzswO0w7PHNxdWFyZT4gMDA2RSAwMDQ2Ozs7O047U1FVQVJFRCBORjs7OzsKKzMzOEM7U1FVQVJFIE1VIEY7U287MDtMOzxzcXVhcmU+IDAzQkMgMDA0Njs7OztOO1NRVUFSRUQgTVUgRjs7OzsKKzMzOEQ7U1FVQVJFIE1VIEc7U287MDtMOzxzcXVhcmU+IDAzQkMgMDA2Nzs7OztOO1NRVUFSRUQgTVUgRzs7OzsKKzMzOEU7U1FVQVJFIE1HO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwNjc7Ozs7TjtTUVVBUkVEIE1HOzs7OworMzM4RjtTUVVBUkUgS0c7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA2Nzs7OztOO1NRVUFSRUQgS0c7Ozs7CiszMzkwO1NRVUFSRSBIWjtTbzswO0w7PHNxdWFyZT4gMDA0OCAwMDdBOzs7O047U1FVQVJFRCBIWjs7OzsKKzMzOTE7U1FVQVJFIEtIWjtTbzswO0w7PHNxdWFyZT4gMDA2QiAwMDQ4IDAwN0E7Ozs7TjtTUVVBUkVEIEtIWjs7OzsKKzMzOTI7U1FVQVJFIE1IWjtTbzswO0w7PHNxdWFyZT4gMDA0RCAwMDQ4IDAwN0E7Ozs7TjtTUVVBUkVEIE1IWjs7OzsKKzMzOTM7U1FVQVJFIEdIWjtTbzswO0w7PHNxdWFyZT4gMDA0NyAwMDQ4IDAwN0E7Ozs7TjtTUVVBUkVEIEdIWjs7OzsKKzMzOTQ7U1FVQVJFIFRIWjtTbzswO0w7PHNxdWFyZT4gMDA1NCAwMDQ4IDAwN0E7Ozs7TjtTUVVBUkVEIFRIWjs7OzsKKzMzOTU7U1FVQVJFIE1VIEw7U287MDtMOzxzcXVhcmU+IDAzQkMgMjExMzs7OztOO1NRVUFSRUQgTVUgTDs7OzsKKzMzOTY7U1FVQVJFIE1MO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDIxMTM7Ozs7TjtTUVVBUkVEIE1MOzs7OworMzM5NztTUVVBUkUgREw7U287MDtMOzxzcXVhcmU+IDAwNjQgMjExMzs7OztOO1NRVUFSRUQgREw7Ozs7CiszMzk4O1NRVUFSRSBLTDtTbzswO0w7PHNxdWFyZT4gMDA2QiAyMTEzOzs7O047U1FVQVJFRCBLTDs7OzsKKzMzOTk7U1FVQVJFIEZNO1NvOzA7TDs8c3F1YXJlPiAwMDY2IDAwNkQ7Ozs7TjtTUVVBUkVEIEZNOzs7OworMzM5QTtTUVVBUkUgTk07U287MDtMOzxzcXVhcmU+IDAwNkUgMDA2RDs7OztOO1NRVUFSRUQgTk07Ozs7CiszMzlCO1NRVUFSRSBNVSBNO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNkQ7Ozs7TjtTUVVBUkVEIE1VIE07Ozs7CiszMzlDO1NRVUFSRSBNTTtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDZEOzs7O047U1FVQVJFRCBNTTs7OzsKKzMzOUQ7U1FVQVJFIENNO1NvOzA7TDs8c3F1YXJlPiAwMDYzIDAwNkQ7Ozs7TjtTUVVBUkVEIENNOzs7OworMzM5RTtTUVVBUkUgS007U287MDtMOzxzcXVhcmU+IDAwNkIgMDA2RDs7OztOO1NRVUFSRUQgS007Ozs7CiszMzlGO1NRVUFSRSBNTSBTUVVBUkVEO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwNkQgMDBCMjs7OztOO1NRVUFSRUQgTU0gU1FVQVJFRDs7OzsKKzMzQTA7U1FVQVJFIENNIFNRVUFSRUQ7U287MDtMOzxzcXVhcmU+IDAwNjMgMDA2RCAwMEIyOzs7O047U1FVQVJFRCBDTSBTUVVBUkVEOzs7OworMzNBMTtTUVVBUkUgTSBTUVVBUkVEO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwQjI7Ozs7TjtTUVVBUkVEIE0gU1FVQVJFRDs7OzsKKzMzQTI7U1FVQVJFIEtNIFNRVUFSRUQ7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA2RCAwMEIyOzs7O047U1FVQVJFRCBLTSBTUVVBUkVEOzs7OworMzNBMztTUVVBUkUgTU0gQ1VCRUQ7U287MDtMOzxzcXVhcmU+IDAwNkQgMDA2RCAwMEIzOzs7O047U1FVQVJFRCBNTSBDVUJFRDs7OzsKKzMzQTQ7U1FVQVJFIENNIENVQkVEO1NvOzA7TDs8c3F1YXJlPiAwMDYzIDAwNkQgMDBCMzs7OztOO1NRVUFSRUQgQ00gQ1VCRUQ7Ozs7CiszM0E1O1NRVUFSRSBNIENVQkVEO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwQjM7Ozs7TjtTUVVBUkVEIE0gQ1VCRUQ7Ozs7CiszM0E2O1NRVUFSRSBLTSBDVUJFRDtTbzswO0w7PHNxdWFyZT4gMDA2QiAwMDZEIDAwQjM7Ozs7TjtTUVVBUkVEIEtNIENVQkVEOzs7OworMzNBNztTUVVBUkUgTSBPVkVSIFM7U287MDtMOzxzcXVhcmU+IDAwNkQgMjIxNSAwMDczOzs7O047U1FVQVJFRCBNIE9WRVIgUzs7OzsKKzMzQTg7U1FVQVJFIE0gT1ZFUiBTIFNRVUFSRUQ7U287MDtMOzxzcXVhcmU+IDAwNkQgMjIxNSAwMDczIDAwQjI7Ozs7TjtTUVVBUkVEIE0gT1ZFUiBTIFNRVUFSRUQ7Ozs7CiszM0E5O1NRVUFSRSBQQTtTbzswO0w7PHNxdWFyZT4gMDA1MCAwMDYxOzs7O047U1FVQVJFRCBQQTs7OzsKKzMzQUE7U1FVQVJFIEtQQTtTbzswO0w7PHNxdWFyZT4gMDA2QiAwMDUwIDAwNjE7Ozs7TjtTUVVBUkVEIEtQQTs7OzsKKzMzQUI7U1FVQVJFIE1QQTtTbzswO0w7PHNxdWFyZT4gMDA0RCAwMDUwIDAwNjE7Ozs7TjtTUVVBUkVEIE1QQTs7OzsKKzMzQUM7U1FVQVJFIEdQQTtTbzswO0w7PHNxdWFyZT4gMDA0NyAwMDUwIDAwNjE7Ozs7TjtTUVVBUkVEIEdQQTs7OzsKKzMzQUQ7U1FVQVJFIFJBRDtTbzswO0w7PHNxdWFyZT4gMDA3MiAwMDYxIDAwNjQ7Ozs7TjtTUVVBUkVEIFJBRDs7OzsKKzMzQUU7U1FVQVJFIFJBRCBPVkVSIFM7U287MDtMOzxzcXVhcmU+IDAwNzIgMDA2MSAwMDY0IDIyMTUgMDA3Mzs7OztOO1NRVUFSRUQgUkFEIE9WRVIgUzs7OzsKKzMzQUY7U1FVQVJFIFJBRCBPVkVSIFMgU1FVQVJFRDtTbzswO0w7PHNxdWFyZT4gMDA3MiAwMDYxIDAwNjQgMjIxNSAwMDczIDAwQjI7Ozs7TjtTUVVBUkVEIFJBRCBPVkVSIFMgU1FVQVJFRDs7OzsKKzMzQjA7U1FVQVJFIFBTO1NvOzA7TDs8c3F1YXJlPiAwMDcwIDAwNzM7Ozs7TjtTUVVBUkVEIFBTOzs7OworMzNCMTtTUVVBUkUgTlM7U287MDtMOzxzcXVhcmU+IDAwNkUgMDA3Mzs7OztOO1NRVUFSRUQgTlM7Ozs7CiszM0IyO1NRVUFSRSBNVSBTO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNzM7Ozs7TjtTUVVBUkVEIE1VIFM7Ozs7CiszM0IzO1NRVUFSRSBNUztTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDczOzs7O047U1FVQVJFRCBNUzs7OzsKKzMzQjQ7U1FVQVJFIFBWO1NvOzA7TDs8c3F1YXJlPiAwMDcwIDAwNTY7Ozs7TjtTUVVBUkVEIFBWOzs7OworMzNCNTtTUVVBUkUgTlY7U287MDtMOzxzcXVhcmU+IDAwNkUgMDA1Njs7OztOO1NRVUFSRUQgTlY7Ozs7CiszM0I2O1NRVUFSRSBNVSBWO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNTY7Ozs7TjtTUVVBUkVEIE1VIFY7Ozs7CiszM0I3O1NRVUFSRSBNVjtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDU2Ozs7O047U1FVQVJFRCBNVjs7OzsKKzMzQjg7U1FVQVJFIEtWO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNTY7Ozs7TjtTUVVBUkVEIEtWOzs7OworMzNCOTtTUVVBUkUgTVYgTUVHQTtTbzswO0w7PHNxdWFyZT4gMDA0RCAwMDU2Ozs7O047U1FVQVJFRCBNViBNRUdBOzs7OworMzNCQTtTUVVBUkUgUFc7U287MDtMOzxzcXVhcmU+IDAwNzAgMDA1Nzs7OztOO1NRVUFSRUQgUFc7Ozs7CiszM0JCO1NRVUFSRSBOVztTbzswO0w7PHNxdWFyZT4gMDA2RSAwMDU3Ozs7O047U1FVQVJFRCBOVzs7OzsKKzMzQkM7U1FVQVJFIE1VIFc7U287MDtMOzxzcXVhcmU+IDAzQkMgMDA1Nzs7OztOO1NRVUFSRUQgTVUgVzs7OzsKKzMzQkQ7U1FVQVJFIE1XO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwNTc7Ozs7TjtTUVVBUkVEIE1XOzs7OworMzNCRTtTUVVBUkUgS1c7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA1Nzs7OztOO1NRVUFSRUQgS1c7Ozs7CiszM0JGO1NRVUFSRSBNVyBNRUdBO1NvOzA7TDs8c3F1YXJlPiAwMDREIDAwNTc7Ozs7TjtTUVVBUkVEIE1XIE1FR0E7Ozs7CiszM0MwO1NRVUFSRSBLIE9ITTtTbzswO0w7PHNxdWFyZT4gMDA2QiAwM0E5Ozs7O047U1FVQVJFRCBLIE9ITTs7OzsKKzMzQzE7U1FVQVJFIE0gT0hNO1NvOzA7TDs8c3F1YXJlPiAwMDREIDAzQTk7Ozs7TjtTUVVBUkVEIE0gT0hNOzs7OworMzNDMjtTUVVBUkUgQU07U287MDtMOzxzcXVhcmU+IDAwNjEgMDAyRSAwMDZEIDAwMkU7Ozs7TjtTUVVBUkVEIEFNOzs7OworMzNDMztTUVVBUkUgQlE7U287MDtMOzxzcXVhcmU+IDAwNDIgMDA3MTs7OztOO1NRVUFSRUQgQlE7Ozs7CiszM0M0O1NRVUFSRSBDQztTbzswO0w7PHNxdWFyZT4gMDA2MyAwMDYzOzs7O047U1FVQVJFRCBDQzs7OzsKKzMzQzU7U1FVQVJFIENEO1NvOzA7TDs8c3F1YXJlPiAwMDYzIDAwNjQ7Ozs7TjtTUVVBUkVEIENEOzs7OworMzNDNjtTUVVBUkUgQyBPVkVSIEtHO1NvOzA7TDs8c3F1YXJlPiAwMDQzIDIyMTUgMDA2QiAwMDY3Ozs7O047U1FVQVJFRCBDIE9WRVIgS0c7Ozs7CiszM0M3O1NRVUFSRSBDTztTbzswO0w7PHNxdWFyZT4gMDA0MyAwMDZGIDAwMkU7Ozs7TjtTUVVBUkVEIENPOzs7OworMzNDODtTUVVBUkUgREI7U287MDtMOzxzcXVhcmU+IDAwNjQgMDA0Mjs7OztOO1NRVUFSRUQgREI7Ozs7CiszM0M5O1NRVUFSRSBHWTtTbzswO0w7PHNxdWFyZT4gMDA0NyAwMDc5Ozs7O047U1FVQVJFRCBHWTs7OzsKKzMzQ0E7U1FVQVJFIEhBO1NvOzA7TDs8c3F1YXJlPiAwMDY4IDAwNjE7Ozs7TjtTUVVBUkVEIEhBOzs7OworMzNDQjtTUVVBUkUgSFA7U287MDtMOzxzcXVhcmU+IDAwNDggMDA1MDs7OztOO1NRVUFSRUQgSFA7Ozs7CiszM0NDO1NRVUFSRSBJTjtTbzswO0w7PHNxdWFyZT4gMDA2OSAwMDZFOzs7O047U1FVQVJFRCBJTjs7OzsKKzMzQ0Q7U1FVQVJFIEtLO1NvOzA7TDs8c3F1YXJlPiAwMDRCIDAwNEI7Ozs7TjtTUVVBUkVEIEtLOzs7OworMzNDRTtTUVVBUkUgS00gQ0FQSVRBTDtTbzswO0w7PHNxdWFyZT4gMDA0QiAwMDREOzs7O047U1FVQVJFRCBLTSBDQVBJVEFMOzs7OworMzNDRjtTUVVBUkUgS1Q7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA3NDs7OztOO1NRVUFSRUQgS1Q7Ozs7CiszM0QwO1NRVUFSRSBMTTtTbzswO0w7PHNxdWFyZT4gMDA2QyAwMDZEOzs7O047U1FVQVJFRCBMTTs7OzsKKzMzRDE7U1FVQVJFIExOO1NvOzA7TDs8c3F1YXJlPiAwMDZDIDAwNkU7Ozs7TjtTUVVBUkVEIExOOzs7OworMzNEMjtTUVVBUkUgTE9HO1NvOzA7TDs8c3F1YXJlPiAwMDZDIDAwNkYgMDA2Nzs7OztOO1NRVUFSRUQgTE9HOzs7OworMzNEMztTUVVBUkUgTFg7U287MDtMOzxzcXVhcmU+IDAwNkMgMDA3ODs7OztOO1NRVUFSRUQgTFg7Ozs7CiszM0Q0O1NRVUFSRSBNQiBTTUFMTDtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDYyOzs7O047U1FVQVJFRCBNQiBTTUFMTDs7OzsKKzMzRDU7U1FVQVJFIE1JTDtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDY5IDAwNkM7Ozs7TjtTUVVBUkVEIE1JTDs7OzsKKzMzRDY7U1FVQVJFIE1PTDtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDZGIDAwNkM7Ozs7TjtTUVVBUkVEIE1PTDs7OzsKKzMzRDc7U1FVQVJFIFBIO1NvOzA7TDs8c3F1YXJlPiAwMDUwIDAwNDg7Ozs7TjtTUVVBUkVEIFBIOzs7OworMzNEODtTUVVBUkUgUE07U287MDtMOzxzcXVhcmU+IDAwNzAgMDAyRSAwMDZEIDAwMkU7Ozs7TjtTUVVBUkVEIFBNOzs7OworMzNEOTtTUVVBUkUgUFBNO1NvOzA7TDs8c3F1YXJlPiAwMDUwIDAwNTAgMDA0RDs7OztOO1NRVUFSRUQgUFBNOzs7OworMzNEQTtTUVVBUkUgUFI7U287MDtMOzxzcXVhcmU+IDAwNTAgMDA1Mjs7OztOO1NRVUFSRUQgUFI7Ozs7CiszM0RCO1NRVUFSRSBTUjtTbzswO0w7PHNxdWFyZT4gMDA3MyAwMDcyOzs7O047U1FVQVJFRCBTUjs7OzsKKzMzREM7U1FVQVJFIFNWO1NvOzA7TDs8c3F1YXJlPiAwMDUzIDAwNzY7Ozs7TjtTUVVBUkVEIFNWOzs7OworMzNERDtTUVVBUkUgV0I7U287MDtMOzxzcXVhcmU+IDAwNTcgMDA2Mjs7OztOO1NRVUFSRUQgV0I7Ozs7CiszM0UwO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBPTkU7U287MDtMOzxjb21wYXQ+IDAwMzEgNjVFNTs7OztOOzs7OzsKKzMzRTE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXTztTbzswO0w7PGNvbXBhdD4gMDAzMiA2NUU1Ozs7O047Ozs7OworMzNFMjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVEhSRUU7U287MDtMOzxjb21wYXQ+IDAwMzMgNjVFNTs7OztOOzs7OzsKKzMzRTM7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIEZPVVI7U287MDtMOzxjb21wYXQ+IDAwMzQgNjVFNTs7OztOOzs7OzsKKzMzRTQ7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIEZJVkU7U287MDtMOzxjb21wYXQ+IDAwMzUgNjVFNTs7OztOOzs7OzsKKzMzRTU7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFNJWDtTbzswO0w7PGNvbXBhdD4gMDAzNiA2NUU1Ozs7O047Ozs7OworMzNFNjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgU0VWRU47U287MDtMOzxjb21wYXQ+IDAwMzcgNjVFNTs7OztOOzs7OzsKKzMzRTc7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIEVJR0hUO1NvOzA7TDs8Y29tcGF0PiAwMDM4IDY1RTU7Ozs7Tjs7Ozs7CiszM0U4O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBOSU5FO1NvOzA7TDs8Y29tcGF0PiAwMDM5IDY1RTU7Ozs7Tjs7Ozs7CiszM0U5O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBURU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMCA2NUU1Ozs7O047Ozs7OworMzNFQTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgRUxFVkVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzEgNjVFNTs7OztOOzs7OzsKKzMzRUI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRUxWRTtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMyIDY1RTU7Ozs7Tjs7Ozs7CiszM0VDO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUSElSVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMzIDY1RTU7Ozs7Tjs7Ozs7CiszM0VEO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBGT1VSVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM0IDY1RTU7Ozs7Tjs7Ozs7CiszM0VFO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBGSUZURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzUgNjVFNTs7OztOOzs7OzsKKzMzRUY7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFNJWFRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzNiA2NUU1Ozs7O047Ozs7OworMzNGMDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgU0VWRU5URUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzcgNjVFNTs7OztOOzs7OzsKKzMzRjE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIEVJR0hURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzggNjVFNTs7OztOOzs7OzsKKzMzRjI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIE5JTkVURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzkgNjVFNTs7OztOOzs7OzsKKzMzRjM7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWTtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDMwIDY1RTU7Ozs7Tjs7Ozs7CiszM0Y0O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktT05FO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzEgNjVFNTs7OztOOzs7OzsKKzMzRjU7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1UV087U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzMiA2NUU1Ozs7O047Ozs7OworMzNGNjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVFdFTlRZLVRIUkVFO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzMgNjVFNTs7OztOOzs7OzsKKzMzRjc7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1GT1VSO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzQgNjVFNTs7OztOOzs7OzsKKzMzRjg7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1GSVZFO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzUgNjVFNTs7OztOOzs7OzsKKzMzRjk7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1TSVg7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzNiA2NUU1Ozs7O047Ozs7OworMzNGQTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVFdFTlRZLVNFVkVOO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzcgNjVFNTs7OztOOzs7OzsKKzMzRkI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1FSUdIVDtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDM4IDY1RTU7Ozs7Tjs7Ozs7CiszM0ZDO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktTklORTtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDM5IDY1RTU7Ozs7Tjs7Ozs7CiszM0ZEO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUSElSVFk7U287MDtMOzxjb21wYXQ+IDAwMzMgMDAzMCA2NUU1Ozs7O047Ozs7OworMzNGRTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVEhJUlRZLU9ORTtTbzswO0w7PGNvbXBhdD4gMDAzMyAwMDMxIDY1RTU7Ozs7Tjs7Ozs7CiszNDAwOzxDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBBLCBGaXJzdD47TG87MDtMOzs7OztOOzs7OzsKKzREQjU7PENKSyBJZGVvZ3JhcGggRXh0ZW5zaW9uIEEsIExhc3Q+O0xvOzA7TDs7Ozs7Tjs7Ozs7Cis0RTAwOzxDSksgSWRlb2dyYXBoLCBGaXJzdD47TG87MDtMOzs7OztOOzs7OzsKKzlGQTU7PENKSyBJZGVvZ3JhcGgsIExhc3Q+O0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDAwO1lJIFNZTExBQkxFIElUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDAxO1lJIFNZTExBQkxFIElYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDAyO1lJIFNZTExBQkxFIEk7TG87MDtMOzs7OztOOzs7OzsKK0EwMDM7WUkgU1lMTEFCTEUgSVA7TG87MDtMOzs7OztOOzs7OzsKK0EwMDQ7WUkgU1lMTEFCTEUgSUVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDA1O1lJIFNZTExBQkxFIElFWDtMbzswO0w7Ozs7O047Ozs7OworQTAwNjtZSSBTWUxMQUJMRSBJRTtMbzswO0w7Ozs7O047Ozs7OworQTAwNztZSSBTWUxMQUJMRSBJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EwMDg7WUkgU1lMTEFCTEUgQVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwMDk7WUkgU1lMTEFCTEUgQVg7TG87MDtMOzs7OztOOzs7OzsKK0EwMEE7WUkgU1lMTEFCTEUgQTtMbzswO0w7Ozs7O047Ozs7OworQTAwQjtZSSBTWUxMQUJMRSBBUDtMbzswO0w7Ozs7O047Ozs7OworQTAwQztZSSBTWUxMQUJMRSBVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EwMEQ7WUkgU1lMTEFCTEUgVU87TG87MDtMOzs7OztOOzs7OzsKK0EwMEU7WUkgU1lMTEFCTEUgVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDBGO1lJIFNZTExBQkxFIE9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDEwO1lJIFNZTExBQkxFIE9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDExO1lJIFNZTExBQkxFIE87TG87MDtMOzs7OztOOzs7OzsKK0EwMTI7WUkgU1lMTEFCTEUgT1A7TG87MDtMOzs7OztOOzs7OzsKK0EwMTM7WUkgU1lMTEFCTEUgRVg7TG87MDtMOzs7OztOOzs7OzsKK0EwMTQ7WUkgU1lMTEFCTEUgRTtMbzswO0w7Ozs7O047Ozs7OworQTAxNTtZSSBTWUxMQUJMRSBXVTtMbzswO0w7Ozs7O047Ozs7OworQTAxNjtZSSBTWUxMQUJMRSBCSVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwMTc7WUkgU1lMTEFCTEUgQklYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDE4O1lJIFNZTExBQkxFIEJJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDE5O1lJIFNZTExBQkxFIEJJUDtMbzswO0w7Ozs7O047Ozs7OworQTAxQTtZSSBTWUxMQUJMRSBCSUVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDFCO1lJIFNZTExBQkxFIEJJRVg7TG87MDtMOzs7OztOOzs7OzsKK0EwMUM7WUkgU1lMTEFCTEUgQklFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDFEO1lJIFNZTExBQkxFIEJJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EwMUU7WUkgU1lMTEFCTEUgQkFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDFGO1lJIFNZTExBQkxFIEJBWDtMbzswO0w7Ozs7O047Ozs7OworQTAyMDtZSSBTWUxMQUJMRSBCQTtMbzswO0w7Ozs7O047Ozs7OworQTAyMTtZSSBTWUxMQUJMRSBCQVA7TG87MDtMOzs7OztOOzs7OzsKK0EwMjI7WUkgU1lMTEFCTEUgQlVPWDtMbzswO0w7Ozs7O047Ozs7OworQTAyMztZSSBTWUxMQUJMRSBCVU87TG87MDtMOzs7OztOOzs7OzsKK0EwMjQ7WUkgU1lMTEFCTEUgQlVPUDtMbzswO0w7Ozs7O047Ozs7OworQTAyNTtZSSBTWUxMQUJMRSBCT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EwMjY7WUkgU1lMTEFCTEUgQk9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDI3O1lJIFNZTExBQkxFIEJPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDI4O1lJIFNZTExBQkxFIEJPUDtMbzswO0w7Ozs7O047Ozs7OworQTAyOTtZSSBTWUxMQUJMRSBCRVg7TG87MDtMOzs7OztOOzs7OzsKK0EwMkE7WUkgU1lMTEFCTEUgQkU7TG87MDtMOzs7OztOOzs7OzsKK0EwMkI7WUkgU1lMTEFCTEUgQkVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDJDO1lJIFNZTExBQkxFIEJVVDtMbzswO0w7Ozs7O047Ozs7OworQTAyRDtZSSBTWUxMQUJMRSBCVVg7TG87MDtMOzs7OztOOzs7OzsKK0EwMkU7WUkgU1lMTEFCTEUgQlU7TG87MDtMOzs7OztOOzs7OzsKK0EwMkY7WUkgU1lMTEFCTEUgQlVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDMwO1lJIFNZTExBQkxFIEJVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EwMzE7WUkgU1lMTEFCTEUgQlVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDMyO1lJIFNZTExBQkxFIEJZVDtMbzswO0w7Ozs7O047Ozs7OworQTAzMztZSSBTWUxMQUJMRSBCWVg7TG87MDtMOzs7OztOOzs7OzsKK0EwMzQ7WUkgU1lMTEFCTEUgQlk7TG87MDtMOzs7OztOOzs7OzsKK0EwMzU7WUkgU1lMTEFCTEUgQllQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDM2O1lJIFNZTExBQkxFIEJZUlg7TG87MDtMOzs7OztOOzs7OzsKK0EwMzc7WUkgU1lMTEFCTEUgQllSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDM4O1lJIFNZTExBQkxFIFBJVDtMbzswO0w7Ozs7O047Ozs7OworQTAzOTtZSSBTWUxMQUJMRSBQSVg7TG87MDtMOzs7OztOOzs7OzsKK0EwM0E7WUkgU1lMTEFCTEUgUEk7TG87MDtMOzs7OztOOzs7OzsKK0EwM0I7WUkgU1lMTEFCTEUgUElQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDNDO1lJIFNZTExBQkxFIFBJRVg7TG87MDtMOzs7OztOOzs7OzsKK0EwM0Q7WUkgU1lMTEFCTEUgUElFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDNFO1lJIFNZTExBQkxFIFBJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EwM0Y7WUkgU1lMTEFCTEUgUEFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDQwO1lJIFNZTExBQkxFIFBBWDtMbzswO0w7Ozs7O047Ozs7OworQTA0MTtZSSBTWUxMQUJMRSBQQTtMbzswO0w7Ozs7O047Ozs7OworQTA0MjtZSSBTWUxMQUJMRSBQQVA7TG87MDtMOzs7OztOOzs7OzsKK0EwNDM7WUkgU1lMTEFCTEUgUFVPWDtMbzswO0w7Ozs7O047Ozs7OworQTA0NDtZSSBTWUxMQUJMRSBQVU87TG87MDtMOzs7OztOOzs7OzsKK0EwNDU7WUkgU1lMTEFCTEUgUFVPUDtMbzswO0w7Ozs7O047Ozs7OworQTA0NjtZSSBTWUxMQUJMRSBQT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EwNDc7WUkgU1lMTEFCTEUgUE9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDQ4O1lJIFNZTExBQkxFIFBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDQ5O1lJIFNZTExBQkxFIFBPUDtMbzswO0w7Ozs7O047Ozs7OworQTA0QTtZSSBTWUxMQUJMRSBQVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwNEI7WUkgU1lMTEFCTEUgUFVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDRDO1lJIFNZTExBQkxFIFBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDREO1lJIFNZTExBQkxFIFBVUDtMbzswO0w7Ozs7O047Ozs7OworQTA0RTtZSSBTWUxMQUJMRSBQVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDRGO1lJIFNZTExBQkxFIFBVUjtMbzswO0w7Ozs7O047Ozs7OworQTA1MDtZSSBTWUxMQUJMRSBQWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwNTE7WUkgU1lMTEFCTEUgUFlYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDUyO1lJIFNZTExBQkxFIFBZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDUzO1lJIFNZTExBQkxFIFBZUDtMbzswO0w7Ozs7O047Ozs7OworQTA1NDtZSSBTWUxMQUJMRSBQWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDU1O1lJIFNZTExBQkxFIFBZUjtMbzswO0w7Ozs7O047Ozs7OworQTA1NjtZSSBTWUxMQUJMRSBCQklUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDU3O1lJIFNZTExBQkxFIEJCSVg7TG87MDtMOzs7OztOOzs7OzsKK0EwNTg7WUkgU1lMTEFCTEUgQkJJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDU5O1lJIFNZTExBQkxFIEJCSVA7TG87MDtMOzs7OztOOzs7OzsKK0EwNUE7WUkgU1lMTEFCTEUgQkJJRVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwNUI7WUkgU1lMTEFCTEUgQkJJRVg7TG87MDtMOzs7OztOOzs7OzsKK0EwNUM7WUkgU1lMTEFCTEUgQkJJRTtMbzswO0w7Ozs7O047Ozs7OworQTA1RDtZSSBTWUxMQUJMRSBCQklFUDtMbzswO0w7Ozs7O047Ozs7OworQTA1RTtZSSBTWUxMQUJMRSBCQkFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDVGO1lJIFNZTExBQkxFIEJCQVg7TG87MDtMOzs7OztOOzs7OzsKK0EwNjA7WUkgU1lMTEFCTEUgQkJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDYxO1lJIFNZTExBQkxFIEJCQVA7TG87MDtMOzs7OztOOzs7OzsKK0EwNjI7WUkgU1lMTEFCTEUgQkJVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EwNjM7WUkgU1lMTEFCTEUgQkJVTztMbzswO0w7Ozs7O047Ozs7OworQTA2NDtZSSBTWUxMQUJMRSBCQlVPUDtMbzswO0w7Ozs7O047Ozs7OworQTA2NTtZSSBTWUxMQUJMRSBCQk9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDY2O1lJIFNZTExBQkxFIEJCT1g7TG87MDtMOzs7OztOOzs7OzsKK0EwNjc7WUkgU1lMTEFCTEUgQkJPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDY4O1lJIFNZTExBQkxFIEJCT1A7TG87MDtMOzs7OztOOzs7OzsKK0EwNjk7WUkgU1lMTEFCTEUgQkJFWDtMbzswO0w7Ozs7O047Ozs7OworQTA2QTtZSSBTWUxMQUJMRSBCQkU7TG87MDtMOzs7OztOOzs7OzsKK0EwNkI7WUkgU1lMTEFCTEUgQkJFUDtMbzswO0w7Ozs7O047Ozs7OworQTA2QztZSSBTWUxMQUJMRSBCQlVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDZEO1lJIFNZTExBQkxFIEJCVVg7TG87MDtMOzs7OztOOzs7OzsKK0EwNkU7WUkgU1lMTEFCTEUgQkJVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDZGO1lJIFNZTExBQkxFIEJCVVA7TG87MDtMOzs7OztOOzs7OzsKK0EwNzA7WUkgU1lMTEFCTEUgQkJVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EwNzE7WUkgU1lMTEFCTEUgQkJVUjtMbzswO0w7Ozs7O047Ozs7OworQTA3MjtZSSBTWUxMQUJMRSBCQllUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDczO1lJIFNZTExBQkxFIEJCWVg7TG87MDtMOzs7OztOOzs7OzsKK0EwNzQ7WUkgU1lMTEFCTEUgQkJZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDc1O1lJIFNZTExBQkxFIEJCWVA7TG87MDtMOzs7OztOOzs7OzsKK0EwNzY7WUkgU1lMTEFCTEUgTkJJVDtMbzswO0w7Ozs7O047Ozs7OworQTA3NztZSSBTWUxMQUJMRSBOQklYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDc4O1lJIFNZTExBQkxFIE5CSTtMbzswO0w7Ozs7O047Ozs7OworQTA3OTtZSSBTWUxMQUJMRSBOQklQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDdBO1lJIFNZTExBQkxFIE5CSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDdCO1lJIFNZTExBQkxFIE5CSUU7TG87MDtMOzs7OztOOzs7OzsKK0EwN0M7WUkgU1lMTEFCTEUgTkJJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EwN0Q7WUkgU1lMTEFCTEUgTkJBVDtMbzswO0w7Ozs7O047Ozs7OworQTA3RTtZSSBTWUxMQUJMRSBOQkFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDdGO1lJIFNZTExBQkxFIE5CQTtMbzswO0w7Ozs7O047Ozs7OworQTA4MDtZSSBTWUxMQUJMRSBOQkFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDgxO1lJIFNZTExBQkxFIE5CT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EwODI7WUkgU1lMTEFCTEUgTkJPWDtMbzswO0w7Ozs7O047Ozs7OworQTA4MztZSSBTWUxMQUJMRSBOQk87TG87MDtMOzs7OztOOzs7OzsKK0EwODQ7WUkgU1lMTEFCTEUgTkJPUDtMbzswO0w7Ozs7O047Ozs7OworQTA4NTtZSSBTWUxMQUJMRSBOQlVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDg2O1lJIFNZTExBQkxFIE5CVVg7TG87MDtMOzs7OztOOzs7OzsKK0EwODc7WUkgU1lMTEFCTEUgTkJVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDg4O1lJIFNZTExBQkxFIE5CVVA7TG87MDtMOzs7OztOOzs7OzsKK0EwODk7WUkgU1lMTEFCTEUgTkJVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EwOEE7WUkgU1lMTEFCTEUgTkJVUjtMbzswO0w7Ozs7O047Ozs7OworQTA4QjtZSSBTWUxMQUJMRSBOQllUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDhDO1lJIFNZTExBQkxFIE5CWVg7TG87MDtMOzs7OztOOzs7OzsKK0EwOEQ7WUkgU1lMTEFCTEUgTkJZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDhFO1lJIFNZTExBQkxFIE5CWVA7TG87MDtMOzs7OztOOzs7OzsKK0EwOEY7WUkgU1lMTEFCTEUgTkJZUlg7TG87MDtMOzs7OztOOzs7OzsKK0EwOTA7WUkgU1lMTEFCTEUgTkJZUjtMbzswO0w7Ozs7O047Ozs7OworQTA5MTtZSSBTWUxMQUJMRSBITUlUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDkyO1lJIFNZTExBQkxFIEhNSVg7TG87MDtMOzs7OztOOzs7OzsKK0EwOTM7WUkgU1lMTEFCTEUgSE1JO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDk0O1lJIFNZTExBQkxFIEhNSVA7TG87MDtMOzs7OztOOzs7OzsKK0EwOTU7WUkgU1lMTEFCTEUgSE1JRVg7TG87MDtMOzs7OztOOzs7OzsKK0EwOTY7WUkgU1lMTEFCTEUgSE1JRTtMbzswO0w7Ozs7O047Ozs7OworQTA5NztZSSBTWUxMQUJMRSBITUlFUDtMbzswO0w7Ozs7O047Ozs7OworQTA5ODtZSSBTWUxMQUJMRSBITUFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDk5O1lJIFNZTExBQkxFIEhNQVg7TG87MDtMOzs7OztOOzs7OzsKK0EwOUE7WUkgU1lMTEFCTEUgSE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDlCO1lJIFNZTExBQkxFIEhNQVA7TG87MDtMOzs7OztOOzs7OzsKK0EwOUM7WUkgU1lMTEFCTEUgSE1VT1g7TG87MDtMOzs7OztOOzs7OzsKK0EwOUQ7WUkgU1lMTEFCTEUgSE1VTztMbzswO0w7Ozs7O047Ozs7OworQTA5RTtZSSBTWUxMQUJMRSBITVVPUDtMbzswO0w7Ozs7O047Ozs7OworQTA5RjtZSSBTWUxMQUJMRSBITU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEEwO1lJIFNZTExBQkxFIEhNT1g7TG87MDtMOzs7OztOOzs7OzsKK0EwQTE7WUkgU1lMTEFCTEUgSE1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEEyO1lJIFNZTExBQkxFIEhNT1A7TG87MDtMOzs7OztOOzs7OzsKK0EwQTM7WUkgU1lMTEFCTEUgSE1VVDtMbzswO0w7Ozs7O047Ozs7OworQTBBNDtZSSBTWUxMQUJMRSBITVVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEE1O1lJIFNZTExBQkxFIEhNVTtMbzswO0w7Ozs7O047Ozs7OworQTBBNjtZSSBTWUxMQUJMRSBITVVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEE3O1lJIFNZTExBQkxFIEhNVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEE4O1lJIFNZTExBQkxFIEhNVVI7TG87MDtMOzs7OztOOzs7OzsKK0EwQTk7WUkgU1lMTEFCTEUgSE1ZWDtMbzswO0w7Ozs7O047Ozs7OworQTBBQTtZSSBTWUxMQUJMRSBITVk7TG87MDtMOzs7OztOOzs7OzsKK0EwQUI7WUkgU1lMTEFCTEUgSE1ZUDtMbzswO0w7Ozs7O047Ozs7OworQTBBQztZSSBTWUxMQUJMRSBITVlSWDtMbzswO0w7Ozs7O047Ozs7OworQTBBRDtZSSBTWUxMQUJMRSBITVlSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEFFO1lJIFNZTExBQkxFIE1JVDtMbzswO0w7Ozs7O047Ozs7OworQTBBRjtZSSBTWUxMQUJMRSBNSVg7TG87MDtMOzs7OztOOzs7OzsKK0EwQjA7WUkgU1lMTEFCTEUgTUk7TG87MDtMOzs7OztOOzs7OzsKK0EwQjE7WUkgU1lMTEFCTEUgTUlQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEIyO1lJIFNZTExBQkxFIE1JRVg7TG87MDtMOzs7OztOOzs7OzsKK0EwQjM7WUkgU1lMTEFCTEUgTUlFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEI0O1lJIFNZTExBQkxFIE1JRVA7TG87MDtMOzs7OztOOzs7OzsKK0EwQjU7WUkgU1lMTEFCTEUgTUFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEI2O1lJIFNZTExBQkxFIE1BWDtMbzswO0w7Ozs7O047Ozs7OworQTBCNztZSSBTWUxMQUJMRSBNQTtMbzswO0w7Ozs7O047Ozs7OworQTBCODtZSSBTWUxMQUJMRSBNQVA7TG87MDtMOzs7OztOOzs7OzsKK0EwQjk7WUkgU1lMTEFCTEUgTVVPVDtMbzswO0w7Ozs7O047Ozs7OworQTBCQTtZSSBTWUxMQUJMRSBNVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEJCO1lJIFNZTExBQkxFIE1VTztMbzswO0w7Ozs7O047Ozs7OworQTBCQztZSSBTWUxMQUJMRSBNVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEJEO1lJIFNZTExBQkxFIE1PVDtMbzswO0w7Ozs7O047Ozs7OworQTBCRTtZSSBTWUxMQUJMRSBNT1g7TG87MDtMOzs7OztOOzs7OzsKK0EwQkY7WUkgU1lMTEFCTEUgTU87TG87MDtMOzs7OztOOzs7OzsKK0EwQzA7WUkgU1lMTEFCTEUgTU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEMxO1lJIFNZTExBQkxFIE1FWDtMbzswO0w7Ozs7O047Ozs7OworQTBDMjtZSSBTWUxMQUJMRSBNRTtMbzswO0w7Ozs7O047Ozs7OworQTBDMztZSSBTWUxMQUJMRSBNVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwQzQ7WUkgU1lMTEFCTEUgTVVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEM1O1lJIFNZTExBQkxFIE1VO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEM2O1lJIFNZTExBQkxFIE1VUDtMbzswO0w7Ozs7O047Ozs7OworQTBDNztZSSBTWUxMQUJMRSBNVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEM4O1lJIFNZTExBQkxFIE1VUjtMbzswO0w7Ozs7O047Ozs7OworQTBDOTtZSSBTWUxMQUJMRSBNWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwQ0E7WUkgU1lMTEFCTEUgTVlYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMENCO1lJIFNZTExBQkxFIE1ZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMENDO1lJIFNZTExBQkxFIE1ZUDtMbzswO0w7Ozs7O047Ozs7OworQTBDRDtZSSBTWUxMQUJMRSBGSVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwQ0U7WUkgU1lMTEFCTEUgRklYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMENGO1lJIFNZTExBQkxFIEZJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEQwO1lJIFNZTExBQkxFIEZJUDtMbzswO0w7Ozs7O047Ozs7OworQTBEMTtZSSBTWUxMQUJMRSBGQVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwRDI7WUkgU1lMTEFCTEUgRkFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEQzO1lJIFNZTExBQkxFIEZBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEQ0O1lJIFNZTExBQkxFIEZBUDtMbzswO0w7Ozs7O047Ozs7OworQTBENTtZSSBTWUxMQUJMRSBGT1g7TG87MDtMOzs7OztOOzs7OzsKK0EwRDY7WUkgU1lMTEFCTEUgRk87TG87MDtMOzs7OztOOzs7OzsKK0EwRDc7WUkgU1lMTEFCTEUgRk9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEQ4O1lJIFNZTExBQkxFIEZVVDtMbzswO0w7Ozs7O047Ozs7OworQTBEOTtZSSBTWUxMQUJMRSBGVVg7TG87MDtMOzs7OztOOzs7OzsKK0EwREE7WUkgU1lMTEFCTEUgRlU7TG87MDtMOzs7OztOOzs7OzsKK0EwREI7WUkgU1lMTEFCTEUgRlVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMERDO1lJIFNZTExBQkxFIEZVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EwREQ7WUkgU1lMTEFCTEUgRlVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMERFO1lJIFNZTExBQkxFIEZZVDtMbzswO0w7Ozs7O047Ozs7OworQTBERjtZSSBTWUxMQUJMRSBGWVg7TG87MDtMOzs7OztOOzs7OzsKK0EwRTA7WUkgU1lMTEFCTEUgRlk7TG87MDtMOzs7OztOOzs7OzsKK0EwRTE7WUkgU1lMTEFCTEUgRllQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEUyO1lJIFNZTExBQkxFIFZJVDtMbzswO0w7Ozs7O047Ozs7OworQTBFMztZSSBTWUxMQUJMRSBWSVg7TG87MDtMOzs7OztOOzs7OzsKK0EwRTQ7WUkgU1lMTEFCTEUgVkk7TG87MDtMOzs7OztOOzs7OzsKK0EwRTU7WUkgU1lMTEFCTEUgVklQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEU2O1lJIFNZTExBQkxFIFZJRVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwRTc7WUkgU1lMTEFCTEUgVklFWDtMbzswO0w7Ozs7O047Ozs7OworQTBFODtZSSBTWUxMQUJMRSBWSUU7TG87MDtMOzs7OztOOzs7OzsKK0EwRTk7WUkgU1lMTEFCTEUgVklFUDtMbzswO0w7Ozs7O047Ozs7OworQTBFQTtZSSBTWUxMQUJMRSBWQVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwRUI7WUkgU1lMTEFCTEUgVkFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEVDO1lJIFNZTExBQkxFIFZBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEVEO1lJIFNZTExBQkxFIFZBUDtMbzswO0w7Ozs7O047Ozs7OworQTBFRTtZSSBTWUxMQUJMRSBWT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EwRUY7WUkgU1lMTEFCTEUgVk9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEYwO1lJIFNZTExBQkxFIFZPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEYxO1lJIFNZTExBQkxFIFZPUDtMbzswO0w7Ozs7O047Ozs7OworQTBGMjtZSSBTWUxMQUJMRSBWRVg7TG87MDtMOzs7OztOOzs7OzsKK0EwRjM7WUkgU1lMTEFCTEUgVkVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEY0O1lJIFNZTExBQkxFIFZVVDtMbzswO0w7Ozs7O047Ozs7OworQTBGNTtZSSBTWUxMQUJMRSBWVVg7TG87MDtMOzs7OztOOzs7OzsKK0EwRjY7WUkgU1lMTEFCTEUgVlU7TG87MDtMOzs7OztOOzs7OzsKK0EwRjc7WUkgU1lMTEFCTEUgVlVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEY4O1lJIFNZTExBQkxFIFZVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EwRjk7WUkgU1lMTEFCTEUgVlVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEZBO1lJIFNZTExBQkxFIFZZVDtMbzswO0w7Ozs7O047Ozs7OworQTBGQjtZSSBTWUxMQUJMRSBWWVg7TG87MDtMOzs7OztOOzs7OzsKK0EwRkM7WUkgU1lMTEFCTEUgVlk7TG87MDtMOzs7OztOOzs7OzsKK0EwRkQ7WUkgU1lMTEFCTEUgVllQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEZFO1lJIFNZTExBQkxFIFZZUlg7TG87MDtMOzs7OztOOzs7OzsKK0EwRkY7WUkgU1lMTEFCTEUgVllSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTAwO1lJIFNZTExBQkxFIERJVDtMbzswO0w7Ozs7O047Ozs7OworQTEwMTtZSSBTWUxMQUJMRSBESVg7TG87MDtMOzs7OztOOzs7OzsKK0ExMDI7WUkgU1lMTEFCTEUgREk7TG87MDtMOzs7OztOOzs7OzsKK0ExMDM7WUkgU1lMTEFCTEUgRElQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTA0O1lJIFNZTExBQkxFIERJRVg7TG87MDtMOzs7OztOOzs7OzsKK0ExMDU7WUkgU1lMTEFCTEUgRElFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTA2O1lJIFNZTExBQkxFIERJRVA7TG87MDtMOzs7OztOOzs7OzsKK0ExMDc7WUkgU1lMTEFCTEUgREFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTA4O1lJIFNZTExBQkxFIERBWDtMbzswO0w7Ozs7O047Ozs7OworQTEwOTtZSSBTWUxMQUJMRSBEQTtMbzswO0w7Ozs7O047Ozs7OworQTEwQTtZSSBTWUxMQUJMRSBEQVA7TG87MDtMOzs7OztOOzs7OzsKK0ExMEI7WUkgU1lMTEFCTEUgRFVPWDtMbzswO0w7Ozs7O047Ozs7OworQTEwQztZSSBTWUxMQUJMRSBEVU87TG87MDtMOzs7OztOOzs7OzsKK0ExMEQ7WUkgU1lMTEFCTEUgRE9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTBFO1lJIFNZTExBQkxFIERPWDtMbzswO0w7Ozs7O047Ozs7OworQTEwRjtZSSBTWUxMQUJMRSBETztMbzswO0w7Ozs7O047Ozs7OworQTExMDtZSSBTWUxMQUJMRSBET1A7TG87MDtMOzs7OztOOzs7OzsKK0ExMTE7WUkgU1lMTEFCTEUgREVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTEyO1lJIFNZTExBQkxFIERFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTEzO1lJIFNZTExBQkxFIERFUDtMbzswO0w7Ozs7O047Ozs7OworQTExNDtZSSBTWUxMQUJMRSBEVVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExMTU7WUkgU1lMTEFCTEUgRFVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTE2O1lJIFNZTExBQkxFIERVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTE3O1lJIFNZTExBQkxFIERVUDtMbzswO0w7Ozs7O047Ozs7OworQTExODtZSSBTWUxMQUJMRSBEVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTE5O1lJIFNZTExBQkxFIERVUjtMbzswO0w7Ozs7O047Ozs7OworQTExQTtZSSBTWUxMQUJMRSBUSVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExMUI7WUkgU1lMTEFCTEUgVElYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTFDO1lJIFNZTExBQkxFIFRJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTFEO1lJIFNZTExBQkxFIFRJUDtMbzswO0w7Ozs7O047Ozs7OworQTExRTtZSSBTWUxMQUJMRSBUSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTFGO1lJIFNZTExBQkxFIFRJRTtMbzswO0w7Ozs7O047Ozs7OworQTEyMDtZSSBTWUxMQUJMRSBUSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTIxO1lJIFNZTExBQkxFIFRBVDtMbzswO0w7Ozs7O047Ozs7OworQTEyMjtZSSBTWUxMQUJMRSBUQVg7TG87MDtMOzs7OztOOzs7OzsKK0ExMjM7WUkgU1lMTEFCTEUgVEE7TG87MDtMOzs7OztOOzs7OzsKK0ExMjQ7WUkgU1lMTEFCTEUgVEFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTI1O1lJIFNZTExBQkxFIFRVT1Q7TG87MDtMOzs7OztOOzs7OzsKK0ExMjY7WUkgU1lMTEFCTEUgVFVPWDtMbzswO0w7Ozs7O047Ozs7OworQTEyNztZSSBTWUxMQUJMRSBUVU87TG87MDtMOzs7OztOOzs7OzsKK0ExMjg7WUkgU1lMTEFCTEUgVFVPUDtMbzswO0w7Ozs7O047Ozs7OworQTEyOTtZSSBTWUxMQUJMRSBUT1Q7TG87MDtMOzs7OztOOzs7OzsKK0ExMkE7WUkgU1lMTEFCTEUgVE9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTJCO1lJIFNZTExBQkxFIFRPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTJDO1lJIFNZTExBQkxFIFRPUDtMbzswO0w7Ozs7O047Ozs7OworQTEyRDtZSSBTWUxMQUJMRSBURVg7TG87MDtMOzs7OztOOzs7OzsKK0ExMkU7WUkgU1lMTEFCTEUgVEU7TG87MDtMOzs7OztOOzs7OzsKK0ExMkY7WUkgU1lMTEFCTEUgVEVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTMwO1lJIFNZTExBQkxFIFRVVDtMbzswO0w7Ozs7O047Ozs7OworQTEzMTtZSSBTWUxMQUJMRSBUVVg7TG87MDtMOzs7OztOOzs7OzsKK0ExMzI7WUkgU1lMTEFCTEUgVFU7TG87MDtMOzs7OztOOzs7OzsKK0ExMzM7WUkgU1lMTEFCTEUgVFVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTM0O1lJIFNZTExBQkxFIFRVUlg7TG87MDtMOzs7OztOOzs7OzsKK0ExMzU7WUkgU1lMTEFCTEUgVFVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTM2O1lJIFNZTExBQkxFIERESVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExMzc7WUkgU1lMTEFCTEUgRERJWDtMbzswO0w7Ozs7O047Ozs7OworQTEzODtZSSBTWUxMQUJMRSBEREk7TG87MDtMOzs7OztOOzs7OzsKK0ExMzk7WUkgU1lMTEFCTEUgRERJUDtMbzswO0w7Ozs7O047Ozs7OworQTEzQTtZSSBTWUxMQUJMRSBERElFWDtMbzswO0w7Ozs7O047Ozs7OworQTEzQjtZSSBTWUxMQUJMRSBERElFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTNDO1lJIFNZTExBQkxFIERESUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTNEO1lJIFNZTExBQkxFIEREQVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExM0U7WUkgU1lMTEFCTEUgRERBWDtMbzswO0w7Ozs7O047Ozs7OworQTEzRjtZSSBTWUxMQUJMRSBEREE7TG87MDtMOzs7OztOOzs7OzsKK0ExNDA7WUkgU1lMTEFCTEUgRERBUDtMbzswO0w7Ozs7O047Ozs7OworQTE0MTtZSSBTWUxMQUJMRSBERFVPWDtMbzswO0w7Ozs7O047Ozs7OworQTE0MjtZSSBTWUxMQUJMRSBERFVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTQzO1lJIFNZTExBQkxFIEREVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTQ0O1lJIFNZTExBQkxFIERET1Q7TG87MDtMOzs7OztOOzs7OzsKK0ExNDU7WUkgU1lMTEFCTEUgRERPWDtMbzswO0w7Ozs7O047Ozs7OworQTE0NjtZSSBTWUxMQUJMRSBERE87TG87MDtMOzs7OztOOzs7OzsKK0ExNDc7WUkgU1lMTEFCTEUgRERPUDtMbzswO0w7Ozs7O047Ozs7OworQTE0ODtZSSBTWUxMQUJMRSBEREVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTQ5O1lJIFNZTExBQkxFIERERTtMbzswO0w7Ozs7O047Ozs7OworQTE0QTtZSSBTWUxMQUJMRSBEREVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTRCO1lJIFNZTExBQkxFIEREVVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExNEM7WUkgU1lMTEFCTEUgRERVWDtMbzswO0w7Ozs7O047Ozs7OworQTE0RDtZSSBTWUxMQUJMRSBERFU7TG87MDtMOzs7OztOOzs7OzsKK0ExNEU7WUkgU1lMTEFCTEUgRERVUDtMbzswO0w7Ozs7O047Ozs7OworQTE0RjtZSSBTWUxMQUJMRSBERFVSWDtMbzswO0w7Ozs7O047Ozs7OworQTE1MDtZSSBTWUxMQUJMRSBERFVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTUxO1lJIFNZTExBQkxFIE5ESVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExNTI7WUkgU1lMTEFCTEUgTkRJWDtMbzswO0w7Ozs7O047Ozs7OworQTE1MztZSSBTWUxMQUJMRSBOREk7TG87MDtMOzs7OztOOzs7OzsKK0ExNTQ7WUkgU1lMTEFCTEUgTkRJUDtMbzswO0w7Ozs7O047Ozs7OworQTE1NTtZSSBTWUxMQUJMRSBORElFWDtMbzswO0w7Ozs7O047Ozs7OworQTE1NjtZSSBTWUxMQUJMRSBORElFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTU3O1lJIFNZTExBQkxFIE5EQVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExNTg7WUkgU1lMTEFCTEUgTkRBWDtMbzswO0w7Ozs7O047Ozs7OworQTE1OTtZSSBTWUxMQUJMRSBOREE7TG87MDtMOzs7OztOOzs7OzsKK0ExNUE7WUkgU1lMTEFCTEUgTkRBUDtMbzswO0w7Ozs7O047Ozs7OworQTE1QjtZSSBTWUxMQUJMRSBORE9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTVDO1lJIFNZTExBQkxFIE5ET1g7TG87MDtMOzs7OztOOzs7OzsKK0ExNUQ7WUkgU1lMTEFCTEUgTkRPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTVFO1lJIFNZTExBQkxFIE5ET1A7TG87MDtMOzs7OztOOzs7OzsKK0ExNUY7WUkgU1lMTEFCTEUgTkRFWDtMbzswO0w7Ozs7O047Ozs7OworQTE2MDtZSSBTWUxMQUJMRSBOREU7TG87MDtMOzs7OztOOzs7OzsKK0ExNjE7WUkgU1lMTEFCTEUgTkRFUDtMbzswO0w7Ozs7O047Ozs7OworQTE2MjtZSSBTWUxMQUJMRSBORFVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTYzO1lJIFNZTExBQkxFIE5EVVg7TG87MDtMOzs7OztOOzs7OzsKK0ExNjQ7WUkgU1lMTEFCTEUgTkRVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTY1O1lJIFNZTExBQkxFIE5EVVA7TG87MDtMOzs7OztOOzs7OzsKK0ExNjY7WUkgU1lMTEFCTEUgTkRVUlg7TG87MDtMOzs7OztOOzs7OzsKK0ExNjc7WUkgU1lMTEFCTEUgTkRVUjtMbzswO0w7Ozs7O047Ozs7OworQTE2ODtZSSBTWUxMQUJMRSBITklUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTY5O1lJIFNZTExBQkxFIEhOSVg7TG87MDtMOzs7OztOOzs7OzsKK0ExNkE7WUkgU1lMTEFCTEUgSE5JO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTZCO1lJIFNZTExBQkxFIEhOSVA7TG87MDtMOzs7OztOOzs7OzsKK0ExNkM7WUkgU1lMTEFCTEUgSE5JRVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExNkQ7WUkgU1lMTEFCTEUgSE5JRVg7TG87MDtMOzs7OztOOzs7OzsKK0ExNkU7WUkgU1lMTEFCTEUgSE5JRTtMbzswO0w7Ozs7O047Ozs7OworQTE2RjtZSSBTWUxMQUJMRSBITklFUDtMbzswO0w7Ozs7O047Ozs7OworQTE3MDtZSSBTWUxMQUJMRSBITkFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTcxO1lJIFNZTExBQkxFIEhOQVg7TG87MDtMOzs7OztOOzs7OzsKK0ExNzI7WUkgU1lMTEFCTEUgSE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTczO1lJIFNZTExBQkxFIEhOQVA7TG87MDtMOzs7OztOOzs7OzsKK0ExNzQ7WUkgU1lMTEFCTEUgSE5VT1g7TG87MDtMOzs7OztOOzs7OzsKK0ExNzU7WUkgU1lMTEFCTEUgSE5VTztMbzswO0w7Ozs7O047Ozs7OworQTE3NjtZSSBTWUxMQUJMRSBITk9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTc3O1lJIFNZTExBQkxFIEhOT1g7TG87MDtMOzs7OztOOzs7OzsKK0ExNzg7WUkgU1lMTEFCTEUgSE5PUDtMbzswO0w7Ozs7O047Ozs7OworQTE3OTtZSSBTWUxMQUJMRSBITkVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTdBO1lJIFNZTExBQkxFIEhORTtMbzswO0w7Ozs7O047Ozs7OworQTE3QjtZSSBTWUxMQUJMRSBITkVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTdDO1lJIFNZTExBQkxFIEhOVVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExN0Q7WUkgU1lMTEFCTEUgTklUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTdFO1lJIFNZTExBQkxFIE5JWDtMbzswO0w7Ozs7O047Ozs7OworQTE3RjtZSSBTWUxMQUJMRSBOSTtMbzswO0w7Ozs7O047Ozs7OworQTE4MDtZSSBTWUxMQUJMRSBOSVA7TG87MDtMOzs7OztOOzs7OzsKK0ExODE7WUkgU1lMTEFCTEUgTklFWDtMbzswO0w7Ozs7O047Ozs7OworQTE4MjtZSSBTWUxMQUJMRSBOSUU7TG87MDtMOzs7OztOOzs7OzsKK0ExODM7WUkgU1lMTEFCTEUgTklFUDtMbzswO0w7Ozs7O047Ozs7OworQTE4NDtZSSBTWUxMQUJMRSBOQVg7TG87MDtMOzs7OztOOzs7OzsKK0ExODU7WUkgU1lMTEFCTEUgTkE7TG87MDtMOzs7OztOOzs7OzsKK0ExODY7WUkgU1lMTEFCTEUgTkFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTg3O1lJIFNZTExBQkxFIE5VT1g7TG87MDtMOzs7OztOOzs7OzsKK0ExODg7WUkgU1lMTEFCTEUgTlVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTg5O1lJIFNZTExBQkxFIE5VT1A7TG87MDtMOzs7OztOOzs7OzsKK0ExOEE7WUkgU1lMTEFCTEUgTk9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMThCO1lJIFNZTExBQkxFIE5PWDtMbzswO0w7Ozs7O047Ozs7OworQTE4QztZSSBTWUxMQUJMRSBOTztMbzswO0w7Ozs7O047Ozs7OworQTE4RDtZSSBTWUxMQUJMRSBOT1A7TG87MDtMOzs7OztOOzs7OzsKK0ExOEU7WUkgU1lMTEFCTEUgTkVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMThGO1lJIFNZTExBQkxFIE5FO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTkwO1lJIFNZTExBQkxFIE5FUDtMbzswO0w7Ozs7O047Ozs7OworQTE5MTtZSSBTWUxMQUJMRSBOVVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExOTI7WUkgU1lMTEFCTEUgTlVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTkzO1lJIFNZTExBQkxFIE5VO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTk0O1lJIFNZTExBQkxFIE5VUDtMbzswO0w7Ozs7O047Ozs7OworQTE5NTtZSSBTWUxMQUJMRSBOVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTk2O1lJIFNZTExBQkxFIE5VUjtMbzswO0w7Ozs7O047Ozs7OworQTE5NztZSSBTWUxMQUJMRSBITElUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTk4O1lJIFNZTExBQkxFIEhMSVg7TG87MDtMOzs7OztOOzs7OzsKK0ExOTk7WUkgU1lMTEFCTEUgSExJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTlBO1lJIFNZTExBQkxFIEhMSVA7TG87MDtMOzs7OztOOzs7OzsKK0ExOUI7WUkgU1lMTEFCTEUgSExJRVg7TG87MDtMOzs7OztOOzs7OzsKK0ExOUM7WUkgU1lMTEFCTEUgSExJRTtMbzswO0w7Ozs7O047Ozs7OworQTE5RDtZSSBTWUxMQUJMRSBITElFUDtMbzswO0w7Ozs7O047Ozs7OworQTE5RTtZSSBTWUxMQUJMRSBITEFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTlGO1lJIFNZTExBQkxFIEhMQVg7TG87MDtMOzs7OztOOzs7OzsKK0ExQTA7WUkgU1lMTEFCTEUgSExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUExO1lJIFNZTExBQkxFIEhMQVA7TG87MDtMOzs7OztOOzs7OzsKK0ExQTI7WUkgU1lMTEFCTEUgSExVT1g7TG87MDtMOzs7OztOOzs7OzsKK0ExQTM7WUkgU1lMTEFCTEUgSExVTztMbzswO0w7Ozs7O047Ozs7OworQTFBNDtZSSBTWUxMQUJMRSBITFVPUDtMbzswO0w7Ozs7O047Ozs7OworQTFBNTtZSSBTWUxMQUJMRSBITE9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUE2O1lJIFNZTExBQkxFIEhMTztMbzswO0w7Ozs7O047Ozs7OworQTFBNztZSSBTWUxMQUJMRSBITE9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUE4O1lJIFNZTExBQkxFIEhMRVg7TG87MDtMOzs7OztOOzs7OzsKK0ExQTk7WUkgU1lMTEFCTEUgSExFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUFBO1lJIFNZTExBQkxFIEhMRVA7TG87MDtMOzs7OztOOzs7OzsKK0ExQUI7WUkgU1lMTEFCTEUgSExVVDtMbzswO0w7Ozs7O047Ozs7OworQTFBQztZSSBTWUxMQUJMRSBITFVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUFEO1lJIFNZTExBQkxFIEhMVTtMbzswO0w7Ozs7O047Ozs7OworQTFBRTtZSSBTWUxMQUJMRSBITFVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUFGO1lJIFNZTExBQkxFIEhMVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUIwO1lJIFNZTExBQkxFIEhMVVI7TG87MDtMOzs7OztOOzs7OzsKK0ExQjE7WUkgU1lMTEFCTEUgSExZVDtMbzswO0w7Ozs7O047Ozs7OworQTFCMjtZSSBTWUxMQUJMRSBITFlYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUIzO1lJIFNZTExBQkxFIEhMWTtMbzswO0w7Ozs7O047Ozs7OworQTFCNDtZSSBTWUxMQUJMRSBITFlQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUI1O1lJIFNZTExBQkxFIEhMWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUI2O1lJIFNZTExBQkxFIEhMWVI7TG87MDtMOzs7OztOOzs7OzsKK0ExQjc7WUkgU1lMTEFCTEUgTElUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUI4O1lJIFNZTExBQkxFIExJWDtMbzswO0w7Ozs7O047Ozs7OworQTFCOTtZSSBTWUxMQUJMRSBMSTtMbzswO0w7Ozs7O047Ozs7OworQTFCQTtZSSBTWUxMQUJMRSBMSVA7TG87MDtMOzs7OztOOzs7OzsKK0ExQkI7WUkgU1lMTEFCTEUgTElFVDtMbzswO0w7Ozs7O047Ozs7OworQTFCQztZSSBTWUxMQUJMRSBMSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUJEO1lJIFNZTExBQkxFIExJRTtMbzswO0w7Ozs7O047Ozs7OworQTFCRTtZSSBTWUxMQUJMRSBMSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUJGO1lJIFNZTExBQkxFIExBVDtMbzswO0w7Ozs7O047Ozs7OworQTFDMDtZSSBTWUxMQUJMRSBMQVg7TG87MDtMOzs7OztOOzs7OzsKK0ExQzE7WUkgU1lMTEFCTEUgTEE7TG87MDtMOzs7OztOOzs7OzsKK0ExQzI7WUkgU1lMTEFCTEUgTEFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUMzO1lJIFNZTExBQkxFIExVT1Q7TG87MDtMOzs7OztOOzs7OzsKK0ExQzQ7WUkgU1lMTEFCTEUgTFVPWDtMbzswO0w7Ozs7O047Ozs7OworQTFDNTtZSSBTWUxMQUJMRSBMVU87TG87MDtMOzs7OztOOzs7OzsKK0ExQzY7WUkgU1lMTEFCTEUgTFVPUDtMbzswO0w7Ozs7O047Ozs7OworQTFDNztZSSBTWUxMQUJMRSBMT1Q7TG87MDtMOzs7OztOOzs7OzsKK0ExQzg7WUkgU1lMTEFCTEUgTE9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUM5O1lJIFNZTExBQkxFIExPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUNBO1lJIFNZTExBQkxFIExPUDtMbzswO0w7Ozs7O047Ozs7OworQTFDQjtZSSBTWUxMQUJMRSBMRVg7TG87MDtMOzs7OztOOzs7OzsKK0ExQ0M7WUkgU1lMTEFCTEUgTEU7TG87MDtMOzs7OztOOzs7OzsKK0ExQ0Q7WUkgU1lMTEFCTEUgTEVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUNFO1lJIFNZTExBQkxFIExVVDtMbzswO0w7Ozs7O047Ozs7OworQTFDRjtZSSBTWUxMQUJMRSBMVVg7TG87MDtMOzs7OztOOzs7OzsKK0ExRDA7WUkgU1lMTEFCTEUgTFU7TG87MDtMOzs7OztOOzs7OzsKK0ExRDE7WUkgU1lMTEFCTEUgTFVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUQyO1lJIFNZTExBQkxFIExVUlg7TG87MDtMOzs7OztOOzs7OzsKK0ExRDM7WUkgU1lMTEFCTEUgTFVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUQ0O1lJIFNZTExBQkxFIExZVDtMbzswO0w7Ozs7O047Ozs7OworQTFENTtZSSBTWUxMQUJMRSBMWVg7TG87MDtMOzs7OztOOzs7OzsKK0ExRDY7WUkgU1lMTEFCTEUgTFk7TG87MDtMOzs7OztOOzs7OzsKK0ExRDc7WUkgU1lMTEFCTEUgTFlQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUQ4O1lJIFNZTExBQkxFIExZUlg7TG87MDtMOzs7OztOOzs7OzsKK0ExRDk7WUkgU1lMTEFCTEUgTFlSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMURBO1lJIFNZTExBQkxFIEdJVDtMbzswO0w7Ozs7O047Ozs7OworQTFEQjtZSSBTWUxMQUJMRSBHSVg7TG87MDtMOzs7OztOOzs7OzsKK0ExREM7WUkgU1lMTEFCTEUgR0k7TG87MDtMOzs7OztOOzs7OzsKK0ExREQ7WUkgU1lMTEFCTEUgR0lQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMURFO1lJIFNZTExBQkxFIEdJRVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExREY7WUkgU1lMTEFCTEUgR0lFWDtMbzswO0w7Ozs7O047Ozs7OworQTFFMDtZSSBTWUxMQUJMRSBHSUU7TG87MDtMOzs7OztOOzs7OzsKK0ExRTE7WUkgU1lMTEFCTEUgR0lFUDtMbzswO0w7Ozs7O047Ozs7OworQTFFMjtZSSBTWUxMQUJMRSBHQVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExRTM7WUkgU1lMTEFCTEUgR0FYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUU0O1lJIFNZTExBQkxFIEdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUU1O1lJIFNZTExBQkxFIEdBUDtMbzswO0w7Ozs7O047Ozs7OworQTFFNjtZSSBTWUxMQUJMRSBHVU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUU3O1lJIFNZTExBQkxFIEdVT1g7TG87MDtMOzs7OztOOzs7OzsKK0ExRTg7WUkgU1lMTEFCTEUgR1VPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUU5O1lJIFNZTExBQkxFIEdVT1A7TG87MDtMOzs7OztOOzs7OzsKK0ExRUE7WUkgU1lMTEFCTEUgR09UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUVCO1lJIFNZTExBQkxFIEdPWDtMbzswO0w7Ozs7O047Ozs7OworQTFFQztZSSBTWUxMQUJMRSBHTztMbzswO0w7Ozs7O047Ozs7OworQTFFRDtZSSBTWUxMQUJMRSBHT1A7TG87MDtMOzs7OztOOzs7OzsKK0ExRUU7WUkgU1lMTEFCTEUgR0VUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUVGO1lJIFNZTExBQkxFIEdFWDtMbzswO0w7Ozs7O047Ozs7OworQTFGMDtZSSBTWUxMQUJMRSBHRTtMbzswO0w7Ozs7O047Ozs7OworQTFGMTtZSSBTWUxMQUJMRSBHRVA7TG87MDtMOzs7OztOOzs7OzsKK0ExRjI7WUkgU1lMTEFCTEUgR1VUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUYzO1lJIFNZTExBQkxFIEdVWDtMbzswO0w7Ozs7O047Ozs7OworQTFGNDtZSSBTWUxMQUJMRSBHVTtMbzswO0w7Ozs7O047Ozs7OworQTFGNTtZSSBTWUxMQUJMRSBHVVA7TG87MDtMOzs7OztOOzs7OzsKK0ExRjY7WUkgU1lMTEFCTEUgR1VSWDtMbzswO0w7Ozs7O047Ozs7OworQTFGNztZSSBTWUxMQUJMRSBHVVI7TG87MDtMOzs7OztOOzs7OzsKK0ExRjg7WUkgU1lMTEFCTEUgS0lUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUY5O1lJIFNZTExBQkxFIEtJWDtMbzswO0w7Ozs7O047Ozs7OworQTFGQTtZSSBTWUxMQUJMRSBLSTtMbzswO0w7Ozs7O047Ozs7OworQTFGQjtZSSBTWUxMQUJMRSBLSVA7TG87MDtMOzs7OztOOzs7OzsKK0ExRkM7WUkgU1lMTEFCTEUgS0lFWDtMbzswO0w7Ozs7O047Ozs7OworQTFGRDtZSSBTWUxMQUJMRSBLSUU7TG87MDtMOzs7OztOOzs7OzsKK0ExRkU7WUkgU1lMTEFCTEUgS0lFUDtMbzswO0w7Ozs7O047Ozs7OworQTFGRjtZSSBTWUxMQUJMRSBLQVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyMDA7WUkgU1lMTEFCTEUgS0FYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjAxO1lJIFNZTExBQkxFIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjAyO1lJIFNZTExBQkxFIEtBUDtMbzswO0w7Ozs7O047Ozs7OworQTIwMztZSSBTWUxMQUJMRSBLVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjA0O1lJIFNZTExBQkxFIEtVTztMbzswO0w7Ozs7O047Ozs7OworQTIwNTtZSSBTWUxMQUJMRSBLVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjA2O1lJIFNZTExBQkxFIEtPVDtMbzswO0w7Ozs7O047Ozs7OworQTIwNztZSSBTWUxMQUJMRSBLT1g7TG87MDtMOzs7OztOOzs7OzsKK0EyMDg7WUkgU1lMTEFCTEUgS087TG87MDtMOzs7OztOOzs7OzsKK0EyMDk7WUkgU1lMTEFCTEUgS09QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjBBO1lJIFNZTExBQkxFIEtFVDtMbzswO0w7Ozs7O047Ozs7OworQTIwQjtZSSBTWUxMQUJMRSBLRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyMEM7WUkgU1lMTEFCTEUgS0U7TG87MDtMOzs7OztOOzs7OzsKK0EyMEQ7WUkgU1lMTEFCTEUgS0VQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjBFO1lJIFNZTExBQkxFIEtVVDtMbzswO0w7Ozs7O047Ozs7OworQTIwRjtZSSBTWUxMQUJMRSBLVVg7TG87MDtMOzs7OztOOzs7OzsKK0EyMTA7WUkgU1lMTEFCTEUgS1U7TG87MDtMOzs7OztOOzs7OzsKK0EyMTE7WUkgU1lMTEFCTEUgS1VQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjEyO1lJIFNZTExBQkxFIEtVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EyMTM7WUkgU1lMTEFCTEUgS1VSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjE0O1lJIFNZTExBQkxFIEdHSVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyMTU7WUkgU1lMTEFCTEUgR0dJWDtMbzswO0w7Ozs7O047Ozs7OworQTIxNjtZSSBTWUxMQUJMRSBHR0k7TG87MDtMOzs7OztOOzs7OzsKK0EyMTc7WUkgU1lMTEFCTEUgR0dJRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyMTg7WUkgU1lMTEFCTEUgR0dJRTtMbzswO0w7Ozs7O047Ozs7OworQTIxOTtZSSBTWUxMQUJMRSBHR0lFUDtMbzswO0w7Ozs7O047Ozs7OworQTIxQTtZSSBTWUxMQUJMRSBHR0FUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjFCO1lJIFNZTExBQkxFIEdHQVg7TG87MDtMOzs7OztOOzs7OzsKK0EyMUM7WUkgU1lMTEFCTEUgR0dBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjFEO1lJIFNZTExBQkxFIEdHQVA7TG87MDtMOzs7OztOOzs7OzsKK0EyMUU7WUkgU1lMTEFCTEUgR0dVT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EyMUY7WUkgU1lMTEFCTEUgR0dVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EyMjA7WUkgU1lMTEFCTEUgR0dVTztMbzswO0w7Ozs7O047Ozs7OworQTIyMTtZSSBTWUxMQUJMRSBHR1VPUDtMbzswO0w7Ozs7O047Ozs7OworQTIyMjtZSSBTWUxMQUJMRSBHR09UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjIzO1lJIFNZTExBQkxFIEdHT1g7TG87MDtMOzs7OztOOzs7OzsKK0EyMjQ7WUkgU1lMTEFCTEUgR0dPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjI1O1lJIFNZTExBQkxFIEdHT1A7TG87MDtMOzs7OztOOzs7OzsKK0EyMjY7WUkgU1lMTEFCTEUgR0dFVDtMbzswO0w7Ozs7O047Ozs7OworQTIyNztZSSBTWUxMQUJMRSBHR0VYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjI4O1lJIFNZTExBQkxFIEdHRTtMbzswO0w7Ozs7O047Ozs7OworQTIyOTtZSSBTWUxMQUJMRSBHR0VQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjJBO1lJIFNZTExBQkxFIEdHVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyMkI7WUkgU1lMTEFCTEUgR0dVWDtMbzswO0w7Ozs7O047Ozs7OworQTIyQztZSSBTWUxMQUJMRSBHR1U7TG87MDtMOzs7OztOOzs7OzsKK0EyMkQ7WUkgU1lMTEFCTEUgR0dVUDtMbzswO0w7Ozs7O047Ozs7OworQTIyRTtZSSBTWUxMQUJMRSBHR1VSWDtMbzswO0w7Ozs7O047Ozs7OworQTIyRjtZSSBTWUxMQUJMRSBHR1VSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjMwO1lJIFNZTExBQkxFIE1HSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjMxO1lJIFNZTExBQkxFIE1HSUU7TG87MDtMOzs7OztOOzs7OzsKK0EyMzI7WUkgU1lMTEFCTEUgTUdBVDtMbzswO0w7Ozs7O047Ozs7OworQTIzMztZSSBTWUxMQUJMRSBNR0FYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjM0O1lJIFNZTExBQkxFIE1HQTtMbzswO0w7Ozs7O047Ozs7OworQTIzNTtZSSBTWUxMQUJMRSBNR0FQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjM2O1lJIFNZTExBQkxFIE1HVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjM3O1lJIFNZTExBQkxFIE1HVU87TG87MDtMOzs7OztOOzs7OzsKK0EyMzg7WUkgU1lMTEFCTEUgTUdVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EyMzk7WUkgU1lMTEFCTEUgTUdPVDtMbzswO0w7Ozs7O047Ozs7OworQTIzQTtZSSBTWUxMQUJMRSBNR09YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjNCO1lJIFNZTExBQkxFIE1HTztMbzswO0w7Ozs7O047Ozs7OworQTIzQztZSSBTWUxMQUJMRSBNR09QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjNEO1lJIFNZTExBQkxFIE1HRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyM0U7WUkgU1lMTEFCTEUgTUdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjNGO1lJIFNZTExBQkxFIE1HRVA7TG87MDtMOzs7OztOOzs7OzsKK0EyNDA7WUkgU1lMTEFCTEUgTUdVVDtMbzswO0w7Ozs7O047Ozs7OworQTI0MTtZSSBTWUxMQUJMRSBNR1VYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjQyO1lJIFNZTExBQkxFIE1HVTtMbzswO0w7Ozs7O047Ozs7OworQTI0MztZSSBTWUxMQUJMRSBNR1VQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjQ0O1lJIFNZTExBQkxFIE1HVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjQ1O1lJIFNZTExBQkxFIE1HVVI7TG87MDtMOzs7OztOOzs7OzsKK0EyNDY7WUkgU1lMTEFCTEUgSFhJVDtMbzswO0w7Ozs7O047Ozs7OworQTI0NztZSSBTWUxMQUJMRSBIWElYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjQ4O1lJIFNZTExBQkxFIEhYSTtMbzswO0w7Ozs7O047Ozs7OworQTI0OTtZSSBTWUxMQUJMRSBIWElQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjRBO1lJIFNZTExBQkxFIEhYSUVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjRCO1lJIFNZTExBQkxFIEhYSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjRDO1lJIFNZTExBQkxFIEhYSUU7TG87MDtMOzs7OztOOzs7OzsKK0EyNEQ7WUkgU1lMTEFCTEUgSFhJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EyNEU7WUkgU1lMTEFCTEUgSFhBVDtMbzswO0w7Ozs7O047Ozs7OworQTI0RjtZSSBTWUxMQUJMRSBIWEFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjUwO1lJIFNZTExBQkxFIEhYQTtMbzswO0w7Ozs7O047Ozs7OworQTI1MTtZSSBTWUxMQUJMRSBIWEFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjUyO1lJIFNZTExBQkxFIEhYVU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjUzO1lJIFNZTExBQkxFIEhYVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjU0O1lJIFNZTExBQkxFIEhYVU87TG87MDtMOzs7OztOOzs7OzsKK0EyNTU7WUkgU1lMTEFCTEUgSFhVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EyNTY7WUkgU1lMTEFCTEUgSFhPVDtMbzswO0w7Ozs7O047Ozs7OworQTI1NztZSSBTWUxMQUJMRSBIWE9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjU4O1lJIFNZTExBQkxFIEhYTztMbzswO0w7Ozs7O047Ozs7OworQTI1OTtZSSBTWUxMQUJMRSBIWE9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjVBO1lJIFNZTExBQkxFIEhYRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyNUI7WUkgU1lMTEFCTEUgSFhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjVDO1lJIFNZTExBQkxFIEhYRVA7TG87MDtMOzs7OztOOzs7OzsKK0EyNUQ7WUkgU1lMTEFCTEUgTkdJRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyNUU7WUkgU1lMTEFCTEUgTkdJRTtMbzswO0w7Ozs7O047Ozs7OworQTI1RjtZSSBTWUxMQUJMRSBOR0lFUDtMbzswO0w7Ozs7O047Ozs7OworQTI2MDtZSSBTWUxMQUJMRSBOR0FUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjYxO1lJIFNZTExBQkxFIE5HQVg7TG87MDtMOzs7OztOOzs7OzsKK0EyNjI7WUkgU1lMTEFCTEUgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjYzO1lJIFNZTExBQkxFIE5HQVA7TG87MDtMOzs7OztOOzs7OzsKK0EyNjQ7WUkgU1lMTEFCTEUgTkdVT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EyNjU7WUkgU1lMTEFCTEUgTkdVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EyNjY7WUkgU1lMTEFCTEUgTkdVTztMbzswO0w7Ozs7O047Ozs7OworQTI2NztZSSBTWUxMQUJMRSBOR09UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjY4O1lJIFNZTExBQkxFIE5HT1g7TG87MDtMOzs7OztOOzs7OzsKK0EyNjk7WUkgU1lMTEFCTEUgTkdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjZBO1lJIFNZTExBQkxFIE5HT1A7TG87MDtMOzs7OztOOzs7OzsKK0EyNkI7WUkgU1lMTEFCTEUgTkdFWDtMbzswO0w7Ozs7O047Ozs7OworQTI2QztZSSBTWUxMQUJMRSBOR0U7TG87MDtMOzs7OztOOzs7OzsKK0EyNkQ7WUkgU1lMTEFCTEUgTkdFUDtMbzswO0w7Ozs7O047Ozs7OworQTI2RTtZSSBTWUxMQUJMRSBISVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyNkY7WUkgU1lMTEFCTEUgSElFWDtMbzswO0w7Ozs7O047Ozs7OworQTI3MDtZSSBTWUxMQUJMRSBISUU7TG87MDtMOzs7OztOOzs7OzsKK0EyNzE7WUkgU1lMTEFCTEUgSEFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjcyO1lJIFNZTExBQkxFIEhBWDtMbzswO0w7Ozs7O047Ozs7OworQTI3MztZSSBTWUxMQUJMRSBIQTtMbzswO0w7Ozs7O047Ozs7OworQTI3NDtZSSBTWUxMQUJMRSBIQVA7TG87MDtMOzs7OztOOzs7OzsKK0EyNzU7WUkgU1lMTEFCTEUgSFVPVDtMbzswO0w7Ozs7O047Ozs7OworQTI3NjtZSSBTWUxMQUJMRSBIVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjc3O1lJIFNZTExBQkxFIEhVTztMbzswO0w7Ozs7O047Ozs7OworQTI3ODtZSSBTWUxMQUJMRSBIVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjc5O1lJIFNZTExBQkxFIEhPVDtMbzswO0w7Ozs7O047Ozs7OworQTI3QTtZSSBTWUxMQUJMRSBIT1g7TG87MDtMOzs7OztOOzs7OzsKK0EyN0I7WUkgU1lMTEFCTEUgSE87TG87MDtMOzs7OztOOzs7OzsKK0EyN0M7WUkgU1lMTEFCTEUgSE9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjdEO1lJIFNZTExBQkxFIEhFWDtMbzswO0w7Ozs7O047Ozs7OworQTI3RTtZSSBTWUxMQUJMRSBIRTtMbzswO0w7Ozs7O047Ozs7OworQTI3RjtZSSBTWUxMQUJMRSBIRVA7TG87MDtMOzs7OztOOzs7OzsKK0EyODA7WUkgU1lMTEFCTEUgV0FUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjgxO1lJIFNZTExBQkxFIFdBWDtMbzswO0w7Ozs7O047Ozs7OworQTI4MjtZSSBTWUxMQUJMRSBXQTtMbzswO0w7Ozs7O047Ozs7OworQTI4MztZSSBTWUxMQUJMRSBXQVA7TG87MDtMOzs7OztOOzs7OzsKK0EyODQ7WUkgU1lMTEFCTEUgV1VPWDtMbzswO0w7Ozs7O047Ozs7OworQTI4NTtZSSBTWUxMQUJMRSBXVU87TG87MDtMOzs7OztOOzs7OzsKK0EyODY7WUkgU1lMTEFCTEUgV1VPUDtMbzswO0w7Ozs7O047Ozs7OworQTI4NztZSSBTWUxMQUJMRSBXT1g7TG87MDtMOzs7OztOOzs7OzsKK0EyODg7WUkgU1lMTEFCTEUgV087TG87MDtMOzs7OztOOzs7OzsKK0EyODk7WUkgU1lMTEFCTEUgV09QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjhBO1lJIFNZTExBQkxFIFdFWDtMbzswO0w7Ozs7O047Ozs7OworQTI4QjtZSSBTWUxMQUJMRSBXRTtMbzswO0w7Ozs7O047Ozs7OworQTI4QztZSSBTWUxMQUJMRSBXRVA7TG87MDtMOzs7OztOOzs7OzsKK0EyOEQ7WUkgU1lMTEFCTEUgWklUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjhFO1lJIFNZTExBQkxFIFpJWDtMbzswO0w7Ozs7O047Ozs7OworQTI4RjtZSSBTWUxMQUJMRSBaSTtMbzswO0w7Ozs7O047Ozs7OworQTI5MDtZSSBTWUxMQUJMRSBaSVA7TG87MDtMOzs7OztOOzs7OzsKK0EyOTE7WUkgU1lMTEFCTEUgWklFWDtMbzswO0w7Ozs7O047Ozs7OworQTI5MjtZSSBTWUxMQUJMRSBaSUU7TG87MDtMOzs7OztOOzs7OzsKK0EyOTM7WUkgU1lMTEFCTEUgWklFUDtMbzswO0w7Ozs7O047Ozs7OworQTI5NDtZSSBTWUxMQUJMRSBaQVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyOTU7WUkgU1lMTEFCTEUgWkFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjk2O1lJIFNZTExBQkxFIFpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjk3O1lJIFNZTExBQkxFIFpBUDtMbzswO0w7Ozs7O047Ozs7OworQTI5ODtZSSBTWUxMQUJMRSBaVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjk5O1lJIFNZTExBQkxFIFpVTztMbzswO0w7Ozs7O047Ozs7OworQTI5QTtZSSBTWUxMQUJMRSBaVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjlCO1lJIFNZTExBQkxFIFpPVDtMbzswO0w7Ozs7O047Ozs7OworQTI5QztZSSBTWUxMQUJMRSBaT1g7TG87MDtMOzs7OztOOzs7OzsKK0EyOUQ7WUkgU1lMTEFCTEUgWk87TG87MDtMOzs7OztOOzs7OzsKK0EyOUU7WUkgU1lMTEFCTEUgWk9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjlGO1lJIFNZTExBQkxFIFpFWDtMbzswO0w7Ozs7O047Ozs7OworQTJBMDtZSSBTWUxMQUJMRSBaRTtMbzswO0w7Ozs7O047Ozs7OworQTJBMTtZSSBTWUxMQUJMRSBaRVA7TG87MDtMOzs7OztOOzs7OzsKK0EyQTI7WUkgU1lMTEFCTEUgWlVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkEzO1lJIFNZTExBQkxFIFpVWDtMbzswO0w7Ozs7O047Ozs7OworQTJBNDtZSSBTWUxMQUJMRSBaVTtMbzswO0w7Ozs7O047Ozs7OworQTJBNTtZSSBTWUxMQUJMRSBaVVA7TG87MDtMOzs7OztOOzs7OzsKK0EyQTY7WUkgU1lMTEFCTEUgWlVSWDtMbzswO0w7Ozs7O047Ozs7OworQTJBNztZSSBTWUxMQUJMRSBaVVI7TG87MDtMOzs7OztOOzs7OzsKK0EyQTg7WUkgU1lMTEFCTEUgWllUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkE5O1lJIFNZTExBQkxFIFpZWDtMbzswO0w7Ozs7O047Ozs7OworQTJBQTtZSSBTWUxMQUJMRSBaWTtMbzswO0w7Ozs7O047Ozs7OworQTJBQjtZSSBTWUxMQUJMRSBaWVA7TG87MDtMOzs7OztOOzs7OzsKK0EyQUM7WUkgU1lMTEFCTEUgWllSWDtMbzswO0w7Ozs7O047Ozs7OworQTJBRDtZSSBTWUxMQUJMRSBaWVI7TG87MDtMOzs7OztOOzs7OzsKK0EyQUU7WUkgU1lMTEFCTEUgQ0lUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkFGO1lJIFNZTExBQkxFIENJWDtMbzswO0w7Ozs7O047Ozs7OworQTJCMDtZSSBTWUxMQUJMRSBDSTtMbzswO0w7Ozs7O047Ozs7OworQTJCMTtZSSBTWUxMQUJMRSBDSVA7TG87MDtMOzs7OztOOzs7OzsKK0EyQjI7WUkgU1lMTEFCTEUgQ0lFVDtMbzswO0w7Ozs7O047Ozs7OworQTJCMztZSSBTWUxMQUJMRSBDSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkI0O1lJIFNZTExBQkxFIENJRTtMbzswO0w7Ozs7O047Ozs7OworQTJCNTtZSSBTWUxMQUJMRSBDSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkI2O1lJIFNZTExBQkxFIENBVDtMbzswO0w7Ozs7O047Ozs7OworQTJCNztZSSBTWUxMQUJMRSBDQVg7TG87MDtMOzs7OztOOzs7OzsKK0EyQjg7WUkgU1lMTEFCTEUgQ0E7TG87MDtMOzs7OztOOzs7OzsKK0EyQjk7WUkgU1lMTEFCTEUgQ0FQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkJBO1lJIFNZTExBQkxFIENVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EyQkI7WUkgU1lMTEFCTEUgQ1VPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkJDO1lJIFNZTExBQkxFIENVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EyQkQ7WUkgU1lMTEFCTEUgQ09UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkJFO1lJIFNZTExBQkxFIENPWDtMbzswO0w7Ozs7O047Ozs7OworQTJCRjtZSSBTWUxMQUJMRSBDTztMbzswO0w7Ozs7O047Ozs7OworQTJDMDtZSSBTWUxMQUJMRSBDT1A7TG87MDtMOzs7OztOOzs7OzsKK0EyQzE7WUkgU1lMTEFCTEUgQ0VYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkMyO1lJIFNZTExBQkxFIENFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkMzO1lJIFNZTExBQkxFIENFUDtMbzswO0w7Ozs7O047Ozs7OworQTJDNDtZSSBTWUxMQUJMRSBDVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyQzU7WUkgU1lMTEFCTEUgQ1VYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkM2O1lJIFNZTExBQkxFIENVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkM3O1lJIFNZTExBQkxFIENVUDtMbzswO0w7Ozs7O047Ozs7OworQTJDODtZSSBTWUxMQUJMRSBDVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkM5O1lJIFNZTExBQkxFIENVUjtMbzswO0w7Ozs7O047Ozs7OworQTJDQTtZSSBTWUxMQUJMRSBDWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyQ0I7WUkgU1lMTEFCTEUgQ1lYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkNDO1lJIFNZTExBQkxFIENZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkNEO1lJIFNZTExBQkxFIENZUDtMbzswO0w7Ozs7O047Ozs7OworQTJDRTtZSSBTWUxMQUJMRSBDWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkNGO1lJIFNZTExBQkxFIENZUjtMbzswO0w7Ozs7O047Ozs7OworQTJEMDtZSSBTWUxMQUJMRSBaWklUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkQxO1lJIFNZTExBQkxFIFpaSVg7TG87MDtMOzs7OztOOzs7OzsKK0EyRDI7WUkgU1lMTEFCTEUgWlpJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkQzO1lJIFNZTExBQkxFIFpaSVA7TG87MDtMOzs7OztOOzs7OzsKK0EyRDQ7WUkgU1lMTEFCTEUgWlpJRVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyRDU7WUkgU1lMTEFCTEUgWlpJRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyRDY7WUkgU1lMTEFCTEUgWlpJRTtMbzswO0w7Ozs7O047Ozs7OworQTJENztZSSBTWUxMQUJMRSBaWklFUDtMbzswO0w7Ozs7O047Ozs7OworQTJEODtZSSBTWUxMQUJMRSBaWkFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkQ5O1lJIFNZTExBQkxFIFpaQVg7TG87MDtMOzs7OztOOzs7OzsKK0EyREE7WUkgU1lMTEFCTEUgWlpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkRCO1lJIFNZTExBQkxFIFpaQVA7TG87MDtMOzs7OztOOzs7OzsKK0EyREM7WUkgU1lMTEFCTEUgWlpPWDtMbzswO0w7Ozs7O047Ozs7OworQTJERDtZSSBTWUxMQUJMRSBaWk87TG87MDtMOzs7OztOOzs7OzsKK0EyREU7WUkgU1lMTEFCTEUgWlpPUDtMbzswO0w7Ozs7O047Ozs7OworQTJERjtZSSBTWUxMQUJMRSBaWkVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkUwO1lJIFNZTExBQkxFIFpaRTtMbzswO0w7Ozs7O047Ozs7OworQTJFMTtZSSBTWUxMQUJMRSBaWkVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkUyO1lJIFNZTExBQkxFIFpaVVg7TG87MDtMOzs7OztOOzs7OzsKK0EyRTM7WUkgU1lMTEFCTEUgWlpVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkU0O1lJIFNZTExBQkxFIFpaVVA7TG87MDtMOzs7OztOOzs7OzsKK0EyRTU7WUkgU1lMTEFCTEUgWlpVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EyRTY7WUkgU1lMTEFCTEUgWlpVUjtMbzswO0w7Ozs7O047Ozs7OworQTJFNztZSSBTWUxMQUJMRSBaWllUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkU4O1lJIFNZTExBQkxFIFpaWVg7TG87MDtMOzs7OztOOzs7OzsKK0EyRTk7WUkgU1lMTEFCTEUgWlpZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkVBO1lJIFNZTExBQkxFIFpaWVA7TG87MDtMOzs7OztOOzs7OzsKK0EyRUI7WUkgU1lMTEFCTEUgWlpZUlg7TG87MDtMOzs7OztOOzs7OzsKK0EyRUM7WUkgU1lMTEFCTEUgWlpZUjtMbzswO0w7Ozs7O047Ozs7OworQTJFRDtZSSBTWUxMQUJMRSBOWklUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkVFO1lJIFNZTExBQkxFIE5aSVg7TG87MDtMOzs7OztOOzs7OzsKK0EyRUY7WUkgU1lMTEFCTEUgTlpJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkYwO1lJIFNZTExBQkxFIE5aSVA7TG87MDtMOzs7OztOOzs7OzsKK0EyRjE7WUkgU1lMTEFCTEUgTlpJRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyRjI7WUkgU1lMTEFCTEUgTlpJRTtMbzswO0w7Ozs7O047Ozs7OworQTJGMztZSSBTWUxMQUJMRSBOWklFUDtMbzswO0w7Ozs7O047Ozs7OworQTJGNDtZSSBTWUxMQUJMRSBOWkFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkY1O1lJIFNZTExBQkxFIE5aQVg7TG87MDtMOzs7OztOOzs7OzsKK0EyRjY7WUkgU1lMTEFCTEUgTlpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkY3O1lJIFNZTExBQkxFIE5aQVA7TG87MDtMOzs7OztOOzs7OzsKK0EyRjg7WUkgU1lMTEFCTEUgTlpVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EyRjk7WUkgU1lMTEFCTEUgTlpVTztMbzswO0w7Ozs7O047Ozs7OworQTJGQTtZSSBTWUxMQUJMRSBOWk9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkZCO1lJIFNZTExBQkxFIE5aT1A7TG87MDtMOzs7OztOOzs7OzsKK0EyRkM7WUkgU1lMTEFCTEUgTlpFWDtMbzswO0w7Ozs7O047Ozs7OworQTJGRDtZSSBTWUxMQUJMRSBOWkU7TG87MDtMOzs7OztOOzs7OzsKK0EyRkU7WUkgU1lMTEFCTEUgTlpVWDtMbzswO0w7Ozs7O047Ozs7OworQTJGRjtZSSBTWUxMQUJMRSBOWlU7TG87MDtMOzs7OztOOzs7OzsKK0EzMDA7WUkgU1lMTEFCTEUgTlpVUDtMbzswO0w7Ozs7O047Ozs7OworQTMwMTtZSSBTWUxMQUJMRSBOWlVSWDtMbzswO0w7Ozs7O047Ozs7OworQTMwMjtZSSBTWUxMQUJMRSBOWlVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzAzO1lJIFNZTExBQkxFIE5aWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzMDQ7WUkgU1lMTEFCTEUgTlpZWDtMbzswO0w7Ozs7O047Ozs7OworQTMwNTtZSSBTWUxMQUJMRSBOWlk7TG87MDtMOzs7OztOOzs7OzsKK0EzMDY7WUkgU1lMTEFCTEUgTlpZUDtMbzswO0w7Ozs7O047Ozs7OworQTMwNztZSSBTWUxMQUJMRSBOWllSWDtMbzswO0w7Ozs7O047Ozs7OworQTMwODtZSSBTWUxMQUJMRSBOWllSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzA5O1lJIFNZTExBQkxFIFNJVDtMbzswO0w7Ozs7O047Ozs7OworQTMwQTtZSSBTWUxMQUJMRSBTSVg7TG87MDtMOzs7OztOOzs7OzsKK0EzMEI7WUkgU1lMTEFCTEUgU0k7TG87MDtMOzs7OztOOzs7OzsKK0EzMEM7WUkgU1lMTEFCTEUgU0lQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzBEO1lJIFNZTExBQkxFIFNJRVg7TG87MDtMOzs7OztOOzs7OzsKK0EzMEU7WUkgU1lMTEFCTEUgU0lFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzBGO1lJIFNZTExBQkxFIFNJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EzMTA7WUkgU1lMTEFCTEUgU0FUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzExO1lJIFNZTExBQkxFIFNBWDtMbzswO0w7Ozs7O047Ozs7OworQTMxMjtZSSBTWUxMQUJMRSBTQTtMbzswO0w7Ozs7O047Ozs7OworQTMxMztZSSBTWUxMQUJMRSBTQVA7TG87MDtMOzs7OztOOzs7OzsKK0EzMTQ7WUkgU1lMTEFCTEUgU1VPWDtMbzswO0w7Ozs7O047Ozs7OworQTMxNTtZSSBTWUxMQUJMRSBTVU87TG87MDtMOzs7OztOOzs7OzsKK0EzMTY7WUkgU1lMTEFCTEUgU1VPUDtMbzswO0w7Ozs7O047Ozs7OworQTMxNztZSSBTWUxMQUJMRSBTT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EzMTg7WUkgU1lMTEFCTEUgU09YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzE5O1lJIFNZTExBQkxFIFNPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzFBO1lJIFNZTExBQkxFIFNPUDtMbzswO0w7Ozs7O047Ozs7OworQTMxQjtZSSBTWUxMQUJMRSBTRVg7TG87MDtMOzs7OztOOzs7OzsKK0EzMUM7WUkgU1lMTEFCTEUgU0U7TG87MDtMOzs7OztOOzs7OzsKK0EzMUQ7WUkgU1lMTEFCTEUgU0VQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzFFO1lJIFNZTExBQkxFIFNVVDtMbzswO0w7Ozs7O047Ozs7OworQTMxRjtZSSBTWUxMQUJMRSBTVVg7TG87MDtMOzs7OztOOzs7OzsKK0EzMjA7WUkgU1lMTEFCTEUgU1U7TG87MDtMOzs7OztOOzs7OzsKK0EzMjE7WUkgU1lMTEFCTEUgU1VQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzIyO1lJIFNZTExBQkxFIFNVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EzMjM7WUkgU1lMTEFCTEUgU1VSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzI0O1lJIFNZTExBQkxFIFNZVDtMbzswO0w7Ozs7O047Ozs7OworQTMyNTtZSSBTWUxMQUJMRSBTWVg7TG87MDtMOzs7OztOOzs7OzsKK0EzMjY7WUkgU1lMTEFCTEUgU1k7TG87MDtMOzs7OztOOzs7OzsKK0EzMjc7WUkgU1lMTEFCTEUgU1lQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzI4O1lJIFNZTExBQkxFIFNZUlg7TG87MDtMOzs7OztOOzs7OzsKK0EzMjk7WUkgU1lMTEFCTEUgU1lSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzJBO1lJIFNZTExBQkxFIFNTSVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzMkI7WUkgU1lMTEFCTEUgU1NJWDtMbzswO0w7Ozs7O047Ozs7OworQTMyQztZSSBTWUxMQUJMRSBTU0k7TG87MDtMOzs7OztOOzs7OzsKK0EzMkQ7WUkgU1lMTEFCTEUgU1NJUDtMbzswO0w7Ozs7O047Ozs7OworQTMyRTtZSSBTWUxMQUJMRSBTU0lFWDtMbzswO0w7Ozs7O047Ozs7OworQTMyRjtZSSBTWUxMQUJMRSBTU0lFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzMwO1lJIFNZTExBQkxFIFNTSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzMxO1lJIFNZTExBQkxFIFNTQVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzMzI7WUkgU1lMTEFCTEUgU1NBWDtMbzswO0w7Ozs7O047Ozs7OworQTMzMztZSSBTWUxMQUJMRSBTU0E7TG87MDtMOzs7OztOOzs7OzsKK0EzMzQ7WUkgU1lMTEFCTEUgU1NBUDtMbzswO0w7Ozs7O047Ozs7OworQTMzNTtZSSBTWUxMQUJMRSBTU09UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzM2O1lJIFNZTExBQkxFIFNTT1g7TG87MDtMOzs7OztOOzs7OzsKK0EzMzc7WUkgU1lMTEFCTEUgU1NPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzM4O1lJIFNZTExBQkxFIFNTT1A7TG87MDtMOzs7OztOOzs7OzsKK0EzMzk7WUkgU1lMTEFCTEUgU1NFWDtMbzswO0w7Ozs7O047Ozs7OworQTMzQTtZSSBTWUxMQUJMRSBTU0U7TG87MDtMOzs7OztOOzs7OzsKK0EzM0I7WUkgU1lMTEFCTEUgU1NFUDtMbzswO0w7Ozs7O047Ozs7OworQTMzQztZSSBTWUxMQUJMRSBTU1VUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzNEO1lJIFNZTExBQkxFIFNTVVg7TG87MDtMOzs7OztOOzs7OzsKK0EzM0U7WUkgU1lMTEFCTEUgU1NVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzNGO1lJIFNZTExBQkxFIFNTVVA7TG87MDtMOzs7OztOOzs7OzsKK0EzNDA7WUkgU1lMTEFCTEUgU1NZVDtMbzswO0w7Ozs7O047Ozs7OworQTM0MTtZSSBTWUxMQUJMRSBTU1lYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzQyO1lJIFNZTExBQkxFIFNTWTtMbzswO0w7Ozs7O047Ozs7OworQTM0MztZSSBTWUxMQUJMRSBTU1lQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzQ0O1lJIFNZTExBQkxFIFNTWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzQ1O1lJIFNZTExBQkxFIFNTWVI7TG87MDtMOzs7OztOOzs7OzsKK0EzNDY7WUkgU1lMTEFCTEUgWkhBVDtMbzswO0w7Ozs7O047Ozs7OworQTM0NztZSSBTWUxMQUJMRSBaSEFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzQ4O1lJIFNZTExBQkxFIFpIQTtMbzswO0w7Ozs7O047Ozs7OworQTM0OTtZSSBTWUxMQUJMRSBaSEFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzRBO1lJIFNZTExBQkxFIFpIVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzRCO1lJIFNZTExBQkxFIFpIVU87TG87MDtMOzs7OztOOzs7OzsKK0EzNEM7WUkgU1lMTEFCTEUgWkhVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EzNEQ7WUkgU1lMTEFCTEUgWkhPVDtMbzswO0w7Ozs7O047Ozs7OworQTM0RTtZSSBTWUxMQUJMRSBaSE9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzRGO1lJIFNZTExBQkxFIFpITztMbzswO0w7Ozs7O047Ozs7OworQTM1MDtZSSBTWUxMQUJMRSBaSE9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzUxO1lJIFNZTExBQkxFIFpIRVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzNTI7WUkgU1lMTEFCTEUgWkhFWDtMbzswO0w7Ozs7O047Ozs7OworQTM1MztZSSBTWUxMQUJMRSBaSEU7TG87MDtMOzs7OztOOzs7OzsKK0EzNTQ7WUkgU1lMTEFCTEUgWkhFUDtMbzswO0w7Ozs7O047Ozs7OworQTM1NTtZSSBTWUxMQUJMRSBaSFVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzU2O1lJIFNZTExBQkxFIFpIVVg7TG87MDtMOzs7OztOOzs7OzsKK0EzNTc7WUkgU1lMTEFCTEUgWkhVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzU4O1lJIFNZTExBQkxFIFpIVVA7TG87MDtMOzs7OztOOzs7OzsKK0EzNTk7WUkgU1lMTEFCTEUgWkhVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EzNUE7WUkgU1lMTEFCTEUgWkhVUjtMbzswO0w7Ozs7O047Ozs7OworQTM1QjtZSSBTWUxMQUJMRSBaSFlUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzVDO1lJIFNZTExBQkxFIFpIWVg7TG87MDtMOzs7OztOOzs7OzsKK0EzNUQ7WUkgU1lMTEFCTEUgWkhZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzVFO1lJIFNZTExBQkxFIFpIWVA7TG87MDtMOzs7OztOOzs7OzsKK0EzNUY7WUkgU1lMTEFCTEUgWkhZUlg7TG87MDtMOzs7OztOOzs7OzsKK0EzNjA7WUkgU1lMTEFCTEUgWkhZUjtMbzswO0w7Ozs7O047Ozs7OworQTM2MTtZSSBTWUxMQUJMRSBDSEFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzYyO1lJIFNZTExBQkxFIENIQVg7TG87MDtMOzs7OztOOzs7OzsKK0EzNjM7WUkgU1lMTEFCTEUgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzY0O1lJIFNZTExBQkxFIENIQVA7TG87MDtMOzs7OztOOzs7OzsKK0EzNjU7WUkgU1lMTEFCTEUgQ0hVT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EzNjY7WUkgU1lMTEFCTEUgQ0hVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EzNjc7WUkgU1lMTEFCTEUgQ0hVTztMbzswO0w7Ozs7O047Ozs7OworQTM2ODtZSSBTWUxMQUJMRSBDSFVPUDtMbzswO0w7Ozs7O047Ozs7OworQTM2OTtZSSBTWUxMQUJMRSBDSE9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzZBO1lJIFNZTExBQkxFIENIT1g7TG87MDtMOzs7OztOOzs7OzsKK0EzNkI7WUkgU1lMTEFCTEUgQ0hPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzZDO1lJIFNZTExBQkxFIENIT1A7TG87MDtMOzs7OztOOzs7OzsKK0EzNkQ7WUkgU1lMTEFCTEUgQ0hFVDtMbzswO0w7Ozs7O047Ozs7OworQTM2RTtZSSBTWUxMQUJMRSBDSEVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzZGO1lJIFNZTExBQkxFIENIRTtMbzswO0w7Ozs7O047Ozs7OworQTM3MDtZSSBTWUxMQUJMRSBDSEVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzcxO1lJIFNZTExBQkxFIENIVVg7TG87MDtMOzs7OztOOzs7OzsKK0EzNzI7WUkgU1lMTEFCTEUgQ0hVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzczO1lJIFNZTExBQkxFIENIVVA7TG87MDtMOzs7OztOOzs7OzsKK0EzNzQ7WUkgU1lMTEFCTEUgQ0hVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EzNzU7WUkgU1lMTEFCTEUgQ0hVUjtMbzswO0w7Ozs7O047Ozs7OworQTM3NjtZSSBTWUxMQUJMRSBDSFlUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzc3O1lJIFNZTExBQkxFIENIWVg7TG87MDtMOzs7OztOOzs7OzsKK0EzNzg7WUkgU1lMTEFCTEUgQ0hZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzc5O1lJIFNZTExBQkxFIENIWVA7TG87MDtMOzs7OztOOzs7OzsKK0EzN0E7WUkgU1lMTEFCTEUgQ0hZUlg7TG87MDtMOzs7OztOOzs7OzsKK0EzN0I7WUkgU1lMTEFCTEUgQ0hZUjtMbzswO0w7Ozs7O047Ozs7OworQTM3QztZSSBTWUxMQUJMRSBSUkFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzdEO1lJIFNZTExBQkxFIFJSQTtMbzswO0w7Ozs7O047Ozs7OworQTM3RTtZSSBTWUxMQUJMRSBSUlVPWDtMbzswO0w7Ozs7O047Ozs7OworQTM3RjtZSSBTWUxMQUJMRSBSUlVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzgwO1lJIFNZTExBQkxFIFJST1Q7TG87MDtMOzs7OztOOzs7OzsKK0EzODE7WUkgU1lMTEFCTEUgUlJPWDtMbzswO0w7Ozs7O047Ozs7OworQTM4MjtZSSBTWUxMQUJMRSBSUk87TG87MDtMOzs7OztOOzs7OzsKK0EzODM7WUkgU1lMTEFCTEUgUlJPUDtMbzswO0w7Ozs7O047Ozs7OworQTM4NDtZSSBTWUxMQUJMRSBSUkVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzg1O1lJIFNZTExBQkxFIFJSRVg7TG87MDtMOzs7OztOOzs7OzsKK0EzODY7WUkgU1lMTEFCTEUgUlJFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzg3O1lJIFNZTExBQkxFIFJSRVA7TG87MDtMOzs7OztOOzs7OzsKK0EzODg7WUkgU1lMTEFCTEUgUlJVVDtMbzswO0w7Ozs7O047Ozs7OworQTM4OTtZSSBTWUxMQUJMRSBSUlVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzhBO1lJIFNZTExBQkxFIFJSVTtMbzswO0w7Ozs7O047Ozs7OworQTM4QjtZSSBTWUxMQUJMRSBSUlVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzhDO1lJIFNZTExBQkxFIFJSVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzhEO1lJIFNZTExBQkxFIFJSVVI7TG87MDtMOzs7OztOOzs7OzsKK0EzOEU7WUkgU1lMTEFCTEUgUlJZVDtMbzswO0w7Ozs7O047Ozs7OworQTM4RjtZSSBTWUxMQUJMRSBSUllYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzkwO1lJIFNZTExBQkxFIFJSWTtMbzswO0w7Ozs7O047Ozs7OworQTM5MTtZSSBTWUxMQUJMRSBSUllQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzkyO1lJIFNZTExBQkxFIFJSWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzkzO1lJIFNZTExBQkxFIFJSWVI7TG87MDtMOzs7OztOOzs7OzsKK0EzOTQ7WUkgU1lMTEFCTEUgTlJBVDtMbzswO0w7Ozs7O047Ozs7OworQTM5NTtZSSBTWUxMQUJMRSBOUkFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzk2O1lJIFNZTExBQkxFIE5SQTtMbzswO0w7Ozs7O047Ozs7OworQTM5NztZSSBTWUxMQUJMRSBOUkFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzk4O1lJIFNZTExBQkxFIE5ST1g7TG87MDtMOzs7OztOOzs7OzsKK0EzOTk7WUkgU1lMTEFCTEUgTlJPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzlBO1lJIFNZTExBQkxFIE5ST1A7TG87MDtMOzs7OztOOzs7OzsKK0EzOUI7WUkgU1lMTEFCTEUgTlJFVDtMbzswO0w7Ozs7O047Ozs7OworQTM5QztZSSBTWUxMQUJMRSBOUkVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzlEO1lJIFNZTExBQkxFIE5SRTtMbzswO0w7Ozs7O047Ozs7OworQTM5RTtZSSBTWUxMQUJMRSBOUkVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzlGO1lJIFNZTExBQkxFIE5SVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzQTA7WUkgU1lMTEFCTEUgTlJVWDtMbzswO0w7Ozs7O047Ozs7OworQTNBMTtZSSBTWUxMQUJMRSBOUlU7TG87MDtMOzs7OztOOzs7OzsKK0EzQTI7WUkgU1lMTEFCTEUgTlJVUDtMbzswO0w7Ozs7O047Ozs7OworQTNBMztZSSBTWUxMQUJMRSBOUlVSWDtMbzswO0w7Ozs7O047Ozs7OworQTNBNDtZSSBTWUxMQUJMRSBOUlVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0E1O1lJIFNZTExBQkxFIE5SWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzQTY7WUkgU1lMTEFCTEUgTlJZWDtMbzswO0w7Ozs7O047Ozs7OworQTNBNztZSSBTWUxMQUJMRSBOUlk7TG87MDtMOzs7OztOOzs7OzsKK0EzQTg7WUkgU1lMTEFCTEUgTlJZUDtMbzswO0w7Ozs7O047Ozs7OworQTNBOTtZSSBTWUxMQUJMRSBOUllSWDtMbzswO0w7Ozs7O047Ozs7OworQTNBQTtZSSBTWUxMQUJMRSBOUllSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0FCO1lJIFNZTExBQkxFIFNIQVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzQUM7WUkgU1lMTEFCTEUgU0hBWDtMbzswO0w7Ozs7O047Ozs7OworQTNBRDtZSSBTWUxMQUJMRSBTSEE7TG87MDtMOzs7OztOOzs7OzsKK0EzQUU7WUkgU1lMTEFCTEUgU0hBUDtMbzswO0w7Ozs7O047Ozs7OworQTNBRjtZSSBTWUxMQUJMRSBTSFVPWDtMbzswO0w7Ozs7O047Ozs7OworQTNCMDtZSSBTWUxMQUJMRSBTSFVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0IxO1lJIFNZTExBQkxFIFNIVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0IyO1lJIFNZTExBQkxFIFNIT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EzQjM7WUkgU1lMTEFCTEUgU0hPWDtMbzswO0w7Ozs7O047Ozs7OworQTNCNDtZSSBTWUxMQUJMRSBTSE87TG87MDtMOzs7OztOOzs7OzsKK0EzQjU7WUkgU1lMTEFCTEUgU0hPUDtMbzswO0w7Ozs7O047Ozs7OworQTNCNjtZSSBTWUxMQUJMRSBTSEVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0I3O1lJIFNZTExBQkxFIFNIRVg7TG87MDtMOzs7OztOOzs7OzsKK0EzQjg7WUkgU1lMTEFCTEUgU0hFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0I5O1lJIFNZTExBQkxFIFNIRVA7TG87MDtMOzs7OztOOzs7OzsKK0EzQkE7WUkgU1lMTEFCTEUgU0hVVDtMbzswO0w7Ozs7O047Ozs7OworQTNCQjtZSSBTWUxMQUJMRSBTSFVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0JDO1lJIFNZTExBQkxFIFNIVTtMbzswO0w7Ozs7O047Ozs7OworQTNCRDtZSSBTWUxMQUJMRSBTSFVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0JFO1lJIFNZTExBQkxFIFNIVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0JGO1lJIFNZTExBQkxFIFNIVVI7TG87MDtMOzs7OztOOzs7OzsKK0EzQzA7WUkgU1lMTEFCTEUgU0hZVDtMbzswO0w7Ozs7O047Ozs7OworQTNDMTtZSSBTWUxMQUJMRSBTSFlYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0MyO1lJIFNZTExBQkxFIFNIWTtMbzswO0w7Ozs7O047Ozs7OworQTNDMztZSSBTWUxMQUJMRSBTSFlQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0M0O1lJIFNZTExBQkxFIFNIWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0M1O1lJIFNZTExBQkxFIFNIWVI7TG87MDtMOzs7OztOOzs7OzsKK0EzQzY7WUkgU1lMTEFCTEUgUkFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0M3O1lJIFNZTExBQkxFIFJBWDtMbzswO0w7Ozs7O047Ozs7OworQTNDODtZSSBTWUxMQUJMRSBSQTtMbzswO0w7Ozs7O047Ozs7OworQTNDOTtZSSBTWUxMQUJMRSBSQVA7TG87MDtMOzs7OztOOzs7OzsKK0EzQ0E7WUkgU1lMTEFCTEUgUlVPWDtMbzswO0w7Ozs7O047Ozs7OworQTNDQjtZSSBTWUxMQUJMRSBSVU87TG87MDtMOzs7OztOOzs7OzsKK0EzQ0M7WUkgU1lMTEFCTEUgUlVPUDtMbzswO0w7Ozs7O047Ozs7OworQTNDRDtZSSBTWUxMQUJMRSBST1Q7TG87MDtMOzs7OztOOzs7OzsKK0EzQ0U7WUkgU1lMTEFCTEUgUk9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0NGO1lJIFNZTExBQkxFIFJPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0QwO1lJIFNZTExBQkxFIFJPUDtMbzswO0w7Ozs7O047Ozs7OworQTNEMTtZSSBTWUxMQUJMRSBSRVg7TG87MDtMOzs7OztOOzs7OzsKK0EzRDI7WUkgU1lMTEFCTEUgUkU7TG87MDtMOzs7OztOOzs7OzsKK0EzRDM7WUkgU1lMTEFCTEUgUkVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0Q0O1lJIFNZTExBQkxFIFJVVDtMbzswO0w7Ozs7O047Ozs7OworQTNENTtZSSBTWUxMQUJMRSBSVVg7TG87MDtMOzs7OztOOzs7OzsKK0EzRDY7WUkgU1lMTEFCTEUgUlU7TG87MDtMOzs7OztOOzs7OzsKK0EzRDc7WUkgU1lMTEFCTEUgUlVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0Q4O1lJIFNZTExBQkxFIFJVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EzRDk7WUkgU1lMTEFCTEUgUlVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0RBO1lJIFNZTExBQkxFIFJZVDtMbzswO0w7Ozs7O047Ozs7OworQTNEQjtZSSBTWUxMQUJMRSBSWVg7TG87MDtMOzs7OztOOzs7OzsKK0EzREM7WUkgU1lMTEFCTEUgUlk7TG87MDtMOzs7OztOOzs7OzsKK0EzREQ7WUkgU1lMTEFCTEUgUllQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0RFO1lJIFNZTExBQkxFIFJZUlg7TG87MDtMOzs7OztOOzs7OzsKK0EzREY7WUkgU1lMTEFCTEUgUllSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0UwO1lJIFNZTExBQkxFIEpJVDtMbzswO0w7Ozs7O047Ozs7OworQTNFMTtZSSBTWUxMQUJMRSBKSVg7TG87MDtMOzs7OztOOzs7OzsKK0EzRTI7WUkgU1lMTEFCTEUgSkk7TG87MDtMOzs7OztOOzs7OzsKK0EzRTM7WUkgU1lMTEFCTEUgSklQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0U0O1lJIFNZTExBQkxFIEpJRVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzRTU7WUkgU1lMTEFCTEUgSklFWDtMbzswO0w7Ozs7O047Ozs7OworQTNFNjtZSSBTWUxMQUJMRSBKSUU7TG87MDtMOzs7OztOOzs7OzsKK0EzRTc7WUkgU1lMTEFCTEUgSklFUDtMbzswO0w7Ozs7O047Ozs7OworQTNFODtZSSBTWUxMQUJMRSBKVU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0U5O1lJIFNZTExBQkxFIEpVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EzRUE7WUkgU1lMTEFCTEUgSlVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0VCO1lJIFNZTExBQkxFIEpVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EzRUM7WUkgU1lMTEFCTEUgSk9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0VEO1lJIFNZTExBQkxFIEpPWDtMbzswO0w7Ozs7O047Ozs7OworQTNFRTtZSSBTWUxMQUJMRSBKTztMbzswO0w7Ozs7O047Ozs7OworQTNFRjtZSSBTWUxMQUJMRSBKT1A7TG87MDtMOzs7OztOOzs7OzsKK0EzRjA7WUkgU1lMTEFCTEUgSlVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0YxO1lJIFNZTExBQkxFIEpVWDtMbzswO0w7Ozs7O047Ozs7OworQTNGMjtZSSBTWUxMQUJMRSBKVTtMbzswO0w7Ozs7O047Ozs7OworQTNGMztZSSBTWUxMQUJMRSBKVVA7TG87MDtMOzs7OztOOzs7OzsKK0EzRjQ7WUkgU1lMTEFCTEUgSlVSWDtMbzswO0w7Ozs7O047Ozs7OworQTNGNTtZSSBTWUxMQUJMRSBKVVI7TG87MDtMOzs7OztOOzs7OzsKK0EzRjY7WUkgU1lMTEFCTEUgSllUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0Y3O1lJIFNZTExBQkxFIEpZWDtMbzswO0w7Ozs7O047Ozs7OworQTNGODtZSSBTWUxMQUJMRSBKWTtMbzswO0w7Ozs7O047Ozs7OworQTNGOTtZSSBTWUxMQUJMRSBKWVA7TG87MDtMOzs7OztOOzs7OzsKK0EzRkE7WUkgU1lMTEFCTEUgSllSWDtMbzswO0w7Ozs7O047Ozs7OworQTNGQjtZSSBTWUxMQUJMRSBKWVI7TG87MDtMOzs7OztOOzs7OzsKK0EzRkM7WUkgU1lMTEFCTEUgUUlUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0ZEO1lJIFNZTExBQkxFIFFJWDtMbzswO0w7Ozs7O047Ozs7OworQTNGRTtZSSBTWUxMQUJMRSBRSTtMbzswO0w7Ozs7O047Ozs7OworQTNGRjtZSSBTWUxMQUJMRSBRSVA7TG87MDtMOzs7OztOOzs7OzsKK0E0MDA7WUkgU1lMTEFCTEUgUUlFVDtMbzswO0w7Ozs7O047Ozs7OworQTQwMTtZSSBTWUxMQUJMRSBRSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDAyO1lJIFNZTExBQkxFIFFJRTtMbzswO0w7Ozs7O047Ozs7OworQTQwMztZSSBTWUxMQUJMRSBRSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDA0O1lJIFNZTExBQkxFIFFVT1Q7TG87MDtMOzs7OztOOzs7OzsKK0E0MDU7WUkgU1lMTEFCTEUgUVVPWDtMbzswO0w7Ozs7O047Ozs7OworQTQwNjtZSSBTWUxMQUJMRSBRVU87TG87MDtMOzs7OztOOzs7OzsKK0E0MDc7WUkgU1lMTEFCTEUgUVVPUDtMbzswO0w7Ozs7O047Ozs7OworQTQwODtZSSBTWUxMQUJMRSBRT1Q7TG87MDtMOzs7OztOOzs7OzsKK0E0MDk7WUkgU1lMTEFCTEUgUU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDBBO1lJIFNZTExBQkxFIFFPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDBCO1lJIFNZTExBQkxFIFFPUDtMbzswO0w7Ozs7O047Ozs7OworQTQwQztZSSBTWUxMQUJMRSBRVVQ7TG87MDtMOzs7OztOOzs7OzsKK0E0MEQ7WUkgU1lMTEFCTEUgUVVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDBFO1lJIFNZTExBQkxFIFFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDBGO1lJIFNZTExBQkxFIFFVUDtMbzswO0w7Ozs7O047Ozs7OworQTQxMDtZSSBTWUxMQUJMRSBRVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDExO1lJIFNZTExBQkxFIFFVUjtMbzswO0w7Ozs7O047Ozs7OworQTQxMjtZSSBTWUxMQUJMRSBRWVQ7TG87MDtMOzs7OztOOzs7OzsKK0E0MTM7WUkgU1lMTEFCTEUgUVlYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDE0O1lJIFNZTExBQkxFIFFZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDE1O1lJIFNZTExBQkxFIFFZUDtMbzswO0w7Ozs7O047Ozs7OworQTQxNjtZSSBTWUxMQUJMRSBRWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDE3O1lJIFNZTExBQkxFIFFZUjtMbzswO0w7Ozs7O047Ozs7OworQTQxODtZSSBTWUxMQUJMRSBKSklUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDE5O1lJIFNZTExBQkxFIEpKSVg7TG87MDtMOzs7OztOOzs7OzsKK0E0MUE7WUkgU1lMTEFCTEUgSkpJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDFCO1lJIFNZTExBQkxFIEpKSVA7TG87MDtMOzs7OztOOzs7OzsKK0E0MUM7WUkgU1lMTEFCTEUgSkpJRVQ7TG87MDtMOzs7OztOOzs7OzsKK0E0MUQ7WUkgU1lMTEFCTEUgSkpJRVg7TG87MDtMOzs7OztOOzs7OzsKK0E0MUU7WUkgU1lMTEFCTEUgSkpJRTtMbzswO0w7Ozs7O047Ozs7OworQTQxRjtZSSBTWUxMQUJMRSBKSklFUDtMbzswO0w7Ozs7O047Ozs7OworQTQyMDtZSSBTWUxMQUJMRSBKSlVPWDtMbzswO0w7Ozs7O047Ozs7OworQTQyMTtZSSBTWUxMQUJMRSBKSlVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDIyO1lJIFNZTExBQkxFIEpKVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDIzO1lJIFNZTExBQkxFIEpKT1Q7TG87MDtMOzs7OztOOzs7OzsKK0E0MjQ7WUkgU1lMTEFCTEUgSkpPWDtMbzswO0w7Ozs7O047Ozs7OworQTQyNTtZSSBTWUxMQUJMRSBKSk87TG87MDtMOzs7OztOOzs7OzsKK0E0MjY7WUkgU1lMTEFCTEUgSkpPUDtMbzswO0w7Ozs7O047Ozs7OworQTQyNztZSSBTWUxMQUJMRSBKSlVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDI4O1lJIFNZTExBQkxFIEpKVVg7TG87MDtMOzs7OztOOzs7OzsKK0E0Mjk7WUkgU1lMTEFCTEUgSkpVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDJBO1lJIFNZTExBQkxFIEpKVVA7TG87MDtMOzs7OztOOzs7OzsKK0E0MkI7WUkgU1lMTEFCTEUgSkpVUlg7TG87MDtMOzs7OztOOzs7OzsKK0E0MkM7WUkgU1lMTEFCTEUgSkpVUjtMbzswO0w7Ozs7O047Ozs7OworQTQyRDtZSSBTWUxMQUJMRSBKSllUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDJFO1lJIFNZTExBQkxFIEpKWVg7TG87MDtMOzs7OztOOzs7OzsKK0E0MkY7WUkgU1lMTEFCTEUgSkpZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDMwO1lJIFNZTExBQkxFIEpKWVA7TG87MDtMOzs7OztOOzs7OzsKK0E0MzE7WUkgU1lMTEFCTEUgTkpJVDtMbzswO0w7Ozs7O047Ozs7OworQTQzMjtZSSBTWUxMQUJMRSBOSklYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDMzO1lJIFNZTExBQkxFIE5KSTtMbzswO0w7Ozs7O047Ozs7OworQTQzNDtZSSBTWUxMQUJMRSBOSklQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDM1O1lJIFNZTExBQkxFIE5KSUVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDM2O1lJIFNZTExBQkxFIE5KSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDM3O1lJIFNZTExBQkxFIE5KSUU7TG87MDtMOzs7OztOOzs7OzsKK0E0Mzg7WUkgU1lMTEFCTEUgTkpJRVA7TG87MDtMOzs7OztOOzs7OzsKK0E0Mzk7WUkgU1lMTEFCTEUgTkpVT1g7TG87MDtMOzs7OztOOzs7OzsKK0E0M0E7WUkgU1lMTEFCTEUgTkpVTztMbzswO0w7Ozs7O047Ozs7OworQTQzQjtZSSBTWUxMQUJMRSBOSk9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDNDO1lJIFNZTExBQkxFIE5KT1g7TG87MDtMOzs7OztOOzs7OzsKK0E0M0Q7WUkgU1lMTEFCTEUgTkpPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDNFO1lJIFNZTExBQkxFIE5KT1A7TG87MDtMOzs7OztOOzs7OzsKK0E0M0Y7WUkgU1lMTEFCTEUgTkpVWDtMbzswO0w7Ozs7O047Ozs7OworQTQ0MDtZSSBTWUxMQUJMRSBOSlU7TG87MDtMOzs7OztOOzs7OzsKK0E0NDE7WUkgU1lMTEFCTEUgTkpVUDtMbzswO0w7Ozs7O047Ozs7OworQTQ0MjtZSSBTWUxMQUJMRSBOSlVSWDtMbzswO0w7Ozs7O047Ozs7OworQTQ0MztZSSBTWUxMQUJMRSBOSlVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDQ0O1lJIFNZTExBQkxFIE5KWVQ7TG87MDtMOzs7OztOOzs7OzsKK0E0NDU7WUkgU1lMTEFCTEUgTkpZWDtMbzswO0w7Ozs7O047Ozs7OworQTQ0NjtZSSBTWUxMQUJMRSBOSlk7TG87MDtMOzs7OztOOzs7OzsKK0E0NDc7WUkgU1lMTEFCTEUgTkpZUDtMbzswO0w7Ozs7O047Ozs7OworQTQ0ODtZSSBTWUxMQUJMRSBOSllSWDtMbzswO0w7Ozs7O047Ozs7OworQTQ0OTtZSSBTWUxMQUJMRSBOSllSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDRBO1lJIFNZTExBQkxFIE5ZSVQ7TG87MDtMOzs7OztOOzs7OzsKK0E0NEI7WUkgU1lMTEFCTEUgTllJWDtMbzswO0w7Ozs7O047Ozs7OworQTQ0QztZSSBTWUxMQUJMRSBOWUk7TG87MDtMOzs7OztOOzs7OzsKK0E0NEQ7WUkgU1lMTEFCTEUgTllJUDtMbzswO0w7Ozs7O047Ozs7OworQTQ0RTtZSSBTWUxMQUJMRSBOWUlFVDtMbzswO0w7Ozs7O047Ozs7OworQTQ0RjtZSSBTWUxMQUJMRSBOWUlFWDtMbzswO0w7Ozs7O047Ozs7OworQTQ1MDtZSSBTWUxMQUJMRSBOWUlFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDUxO1lJIFNZTExBQkxFIE5ZSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDUyO1lJIFNZTExBQkxFIE5ZVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDUzO1lJIFNZTExBQkxFIE5ZVU87TG87MDtMOzs7OztOOzs7OzsKK0E0NTQ7WUkgU1lMTEFCTEUgTllVT1A7TG87MDtMOzs7OztOOzs7OzsKK0E0NTU7WUkgU1lMTEFCTEUgTllPVDtMbzswO0w7Ozs7O047Ozs7OworQTQ1NjtZSSBTWUxMQUJMRSBOWU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDU3O1lJIFNZTExBQkxFIE5ZTztMbzswO0w7Ozs7O047Ozs7OworQTQ1ODtZSSBTWUxMQUJMRSBOWU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDU5O1lJIFNZTExBQkxFIE5ZVVQ7TG87MDtMOzs7OztOOzs7OzsKK0E0NUE7WUkgU1lMTEFCTEUgTllVWDtMbzswO0w7Ozs7O047Ozs7OworQTQ1QjtZSSBTWUxMQUJMRSBOWVU7TG87MDtMOzs7OztOOzs7OzsKK0E0NUM7WUkgU1lMTEFCTEUgTllVUDtMbzswO0w7Ozs7O047Ozs7OworQTQ1RDtZSSBTWUxMQUJMRSBYSVQ7TG87MDtMOzs7OztOOzs7OzsKK0E0NUU7WUkgU1lMTEFCTEUgWElYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDVGO1lJIFNZTExBQkxFIFhJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDYwO1lJIFNZTExBQkxFIFhJUDtMbzswO0w7Ozs7O047Ozs7OworQTQ2MTtZSSBTWUxMQUJMRSBYSUVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDYyO1lJIFNZTExBQkxFIFhJRVg7TG87MDtMOzs7OztOOzs7OzsKK0E0NjM7WUkgU1lMTEFCTEUgWElFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDY0O1lJIFNZTExBQkxFIFhJRVA7TG87MDtMOzs7OztOOzs7OzsKK0E0NjU7WUkgU1lMTEFCTEUgWFVPWDtMbzswO0w7Ozs7O047Ozs7OworQTQ2NjtZSSBTWUxMQUJMRSBYVU87TG87MDtMOzs7OztOOzs7OzsKK0E0Njc7WUkgU1lMTEFCTEUgWE9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDY4O1lJIFNZTExBQkxFIFhPWDtMbzswO0w7Ozs7O047Ozs7OworQTQ2OTtZSSBTWUxMQUJMRSBYTztMbzswO0w7Ozs7O047Ozs7OworQTQ2QTtZSSBTWUxMQUJMRSBYT1A7TG87MDtMOzs7OztOOzs7OzsKK0E0NkI7WUkgU1lMTEFCTEUgWFlUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDZDO1lJIFNZTExBQkxFIFhZWDtMbzswO0w7Ozs7O047Ozs7OworQTQ2RDtZSSBTWUxMQUJMRSBYWTtMbzswO0w7Ozs7O047Ozs7OworQTQ2RTtZSSBTWUxMQUJMRSBYWVA7TG87MDtMOzs7OztOOzs7OzsKK0E0NkY7WUkgU1lMTEFCTEUgWFlSWDtMbzswO0w7Ozs7O047Ozs7OworQTQ3MDtZSSBTWUxMQUJMRSBYWVI7TG87MDtMOzs7OztOOzs7OzsKK0E0NzE7WUkgU1lMTEFCTEUgWUlUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDcyO1lJIFNZTExBQkxFIFlJWDtMbzswO0w7Ozs7O047Ozs7OworQTQ3MztZSSBTWUxMQUJMRSBZSTtMbzswO0w7Ozs7O047Ozs7OworQTQ3NDtZSSBTWUxMQUJMRSBZSVA7TG87MDtMOzs7OztOOzs7OzsKK0E0NzU7WUkgU1lMTEFCTEUgWUlFVDtMbzswO0w7Ozs7O047Ozs7OworQTQ3NjtZSSBTWUxMQUJMRSBZSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDc3O1lJIFNZTExBQkxFIFlJRTtMbzswO0w7Ozs7O047Ozs7OworQTQ3ODtZSSBTWUxMQUJMRSBZSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDc5O1lJIFNZTExBQkxFIFlVT1Q7TG87MDtMOzs7OztOOzs7OzsKK0E0N0E7WUkgU1lMTEFCTEUgWVVPWDtMbzswO0w7Ozs7O047Ozs7OworQTQ3QjtZSSBTWUxMQUJMRSBZVU87TG87MDtMOzs7OztOOzs7OzsKK0E0N0M7WUkgU1lMTEFCTEUgWVVPUDtMbzswO0w7Ozs7O047Ozs7OworQTQ3RDtZSSBTWUxMQUJMRSBZT1Q7TG87MDtMOzs7OztOOzs7OzsKK0E0N0U7WUkgU1lMTEFCTEUgWU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDdGO1lJIFNZTExBQkxFIFlPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDgwO1lJIFNZTExBQkxFIFlPUDtMbzswO0w7Ozs7O047Ozs7OworQTQ4MTtZSSBTWUxMQUJMRSBZVVQ7TG87MDtMOzs7OztOOzs7OzsKK0E0ODI7WUkgU1lMTEFCTEUgWVVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDgzO1lJIFNZTExBQkxFIFlVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDg0O1lJIFNZTExBQkxFIFlVUDtMbzswO0w7Ozs7O047Ozs7OworQTQ4NTtZSSBTWUxMQUJMRSBZVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDg2O1lJIFNZTExBQkxFIFlVUjtMbzswO0w7Ozs7O047Ozs7OworQTQ4NztZSSBTWUxMQUJMRSBZWVQ7TG87MDtMOzs7OztOOzs7OzsKK0E0ODg7WUkgU1lMTEFCTEUgWVlYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDg5O1lJIFNZTExBQkxFIFlZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDhBO1lJIFNZTExBQkxFIFlZUDtMbzswO0w7Ozs7O047Ozs7OworQTQ4QjtZSSBTWUxMQUJMRSBZWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDhDO1lJIFNZTExBQkxFIFlZUjtMbzswO0w7Ozs7O047Ozs7OworQTQ5MDtZSSBSQURJQ0FMIFFPVDtTbzswO09OOzs7OztOOzs7OzsKK0E0OTE7WUkgUkFESUNBTCBMSTtTbzswO09OOzs7OztOOzs7OzsKK0E0OTI7WUkgUkFESUNBTCBLSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNDkzO1lJIFJBRElDQUwgTllJUDtTbzswO09OOzs7OztOOzs7OzsKK0E0OTQ7WUkgUkFESUNBTCBDWVA7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNDk1O1lJIFJBRElDQUwgU1NJO1NvOzA7T047Ozs7O047Ozs7OworQTQ5NjtZSSBSQURJQ0FMIEdHT1A7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNDk3O1lJIFJBRElDQUwgR0VQO1NvOzA7T047Ozs7O047Ozs7OworQTQ5ODtZSSBSQURJQ0FMIE1JO1NvOzA7T047Ozs7O047Ozs7OworQTQ5OTtZSSBSQURJQ0FMIEhYSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNDlBO1lJIFJBRElDQUwgTFlSO1NvOzA7T047Ozs7O047Ozs7OworQTQ5QjtZSSBSQURJQ0FMIEJCVVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNDlDO1lJIFJBRElDQUwgTU9QO1NvOzA7T047Ozs7O047Ozs7OworQTQ5RDtZSSBSQURJQ0FMIFlPO1NvOzA7T047Ozs7O047Ozs7OworQTQ5RTtZSSBSQURJQ0FMIFBVVDtTbzswO09OOzs7OztOOzs7OzsKK0E0OUY7WUkgUkFESUNBTCBIWFVPO1NvOzA7T047Ozs7O047Ozs7OworQTRBMDtZSSBSQURJQ0FMIFRBVDtTbzswO09OOzs7OztOOzs7OzsKK0E0QTE7WUkgUkFESUNBTCBHQTtTbzswO09OOzs7OztOOzs7OzsKK0E0QTQ7WUkgUkFESUNBTCBERFVSO1NvOzA7T047Ozs7O047Ozs7OworQTRBNTtZSSBSQURJQ0FMIEJVUjtTbzswO09OOzs7OztOOzs7OzsKK0E0QTY7WUkgUkFESUNBTCBHR1VPO1NvOzA7T047Ozs7O047Ozs7OworQTRBNztZSSBSQURJQ0FMIE5ZT1A7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEE4O1lJIFJBRElDQUwgVFU7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEE5O1lJIFJBRElDQUwgT1A7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEFBO1lJIFJBRElDQUwgSkpVVDtTbzswO09OOzs7OztOOzs7OzsKK0E0QUI7WUkgUkFESUNBTCBaT1Q7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEFDO1lJIFJBRElDQUwgUFlUO1NvOzA7T047Ozs7O047Ozs7OworQTRBRDtZSSBSQURJQ0FMIEhNTztTbzswO09OOzs7OztOOzs7OzsKK0E0QUU7WUkgUkFESUNBTCBZSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEFGO1lJIFJBRElDQUwgVlVSO1NvOzA7T047Ozs7O047Ozs7OworQTRCMDtZSSBSQURJQ0FMIFNIWTtTbzswO09OOzs7OztOOzs7OzsKK0E0QjE7WUkgUkFESUNBTCBWRVA7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEIyO1lJIFJBRElDQUwgWkE7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEIzO1lJIFJBRElDQUwgSk87U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEI1O1lJIFJBRElDQUwgSkpZO1NvOzA7T047Ozs7O047Ozs7OworQTRCNjtZSSBSQURJQ0FMIEdPVDtTbzswO09OOzs7OztOOzs7OzsKK0E0Qjc7WUkgUkFESUNBTCBKSklFO1NvOzA7T047Ozs7O047Ozs7OworQTRCODtZSSBSQURJQ0FMIFdPO1NvOzA7T047Ozs7O047Ozs7OworQTRCOTtZSSBSQURJQ0FMIERVO1NvOzA7T047Ozs7O047Ozs7OworQTRCQTtZSSBSQURJQ0FMIFNIVVI7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEJCO1lJIFJBRElDQUwgTElFO1NvOzA7T047Ozs7O047Ozs7OworQTRCQztZSSBSQURJQ0FMIENZO1NvOzA7T047Ozs7O047Ozs7OworQTRCRDtZSSBSQURJQ0FMIENVT1A7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEJFO1lJIFJBRElDQUwgQ0lQO1NvOzA7T047Ozs7O047Ozs7OworQTRCRjtZSSBSQURJQ0FMIEhYT1A7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEMwO1lJIFJBRElDQUwgU0hBVDtTbzswO09OOzs7OztOOzs7OzsKK0E0QzI7WUkgUkFESUNBTCBTSE9QO1NvOzA7T047Ozs7O047Ozs7OworQTRDMztZSSBSQURJQ0FMIENIRTtTbzswO09OOzs7OztOOzs7OzsKK0E0QzQ7WUkgUkFESUNBTCBaWklFVDtTbzswO09OOzs7OztOOzs7OzsKK0E0QzY7WUkgUkFESUNBTCBLRTtTbzswO09OOzs7OztOOzs7OzsKK0FDMDA7PEhhbmd1bCBTeWxsYWJsZSwgRmlyc3Q+O0xvOzA7TDs7Ozs7Tjs7Ozs7CitEN0EzOzxIYW5ndWwgU3lsbGFibGUsIExhc3Q+O0xvOzA7TDs7Ozs7Tjs7Ozs7CitEODAwOzxOb24gUHJpdmF0ZSBVc2UgSGlnaCBTdXJyb2dhdGUsIEZpcnN0PjtDczswO0w7Ozs7O047Ozs7OworREI3Rjs8Tm9uIFByaXZhdGUgVXNlIEhpZ2ggU3Vycm9nYXRlLCBMYXN0PjtDczswO0w7Ozs7O047Ozs7OworREI4MDs8UHJpdmF0ZSBVc2UgSGlnaCBTdXJyb2dhdGUsIEZpcnN0PjtDczswO0w7Ozs7O047Ozs7OworREJGRjs8UHJpdmF0ZSBVc2UgSGlnaCBTdXJyb2dhdGUsIExhc3Q+O0NzOzA7TDs7Ozs7Tjs7Ozs7CitEQzAwOzxMb3cgU3Vycm9nYXRlLCBGaXJzdD47Q3M7MDtMOzs7OztOOzs7OzsKK0RGRkY7PExvdyBTdXJyb2dhdGUsIExhc3Q+O0NzOzA7TDs7Ozs7Tjs7Ozs7CitFMDAwOzxQcml2YXRlIFVzZSwgRmlyc3Q+O0NvOzA7TDs7Ozs7Tjs7Ozs7CitGOEZGOzxQcml2YXRlIFVzZSwgTGFzdD47Q287MDtMOzs7OztOOzs7OzsKK0Y5MDA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MDA7TG87MDtMOzhDNDg7Ozs7Tjs7Ozs7CitGOTAxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTAxO0xvOzA7TDs2NkY0Ozs7O047Ozs7OworRjkwMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwMjtMbzswO0w7OEVDQTs7OztOOzs7OzsKK0Y5MDM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MDM7TG87MDtMOzhDQzg7Ozs7Tjs7Ozs7CitGOTA0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTA0O0xvOzA7TDs2RUQxOzs7O047Ozs7OworRjkwNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwNTtMbzswO0w7NEUzMjs7OztOOzs7OzsKK0Y5MDY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MDY7TG87MDtMOzUzRTU7Ozs7Tjs7Ozs7CitGOTA3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTA3O0xvOzA7TDs5RjlDOzs7O047Ozs7OworRjkwODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwODtMbzswO0w7OUY5Qzs7OztOOzs7OzsKK0Y5MDk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MDk7TG87MDtMOzU5NTE7Ozs7Tjs7Ozs7CitGOTBBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTBBO0xvOzA7TDs5MUQxOzs7O047Ozs7OworRjkwQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwQjtMbzswO0w7NTU4Nzs7OztOOzs7OzsKK0Y5MEM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MEM7TG87MDtMOzU5NDg7Ozs7Tjs7Ozs7CitGOTBEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTBEO0xvOzA7TDs2MUY2Ozs7O047Ozs7OworRjkwRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwRTtMbzswO0w7NzY2OTs7OztOOzs7OzsKK0Y5MEY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MEY7TG87MDtMOzdGODU7Ozs7Tjs7Ozs7CitGOTEwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTEwO0xvOzA7TDs4NjNGOzs7O047Ozs7OworRjkxMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxMTtMbzswO0w7ODdCQTs7OztOOzs7OzsKK0Y5MTI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MTI7TG87MDtMOzg4Rjg7Ozs7Tjs7Ozs7CitGOTEzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTEzO0xvOzA7TDs5MDhGOzs7O047Ozs7OworRjkxNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxNDtMbzswO0w7NkEwMjs7OztOOzs7OzsKK0Y5MTU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MTU7TG87MDtMOzZEMUI7Ozs7Tjs7Ozs7CitGOTE2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTE2O0xvOzA7TDs3MEQ5Ozs7O047Ozs7OworRjkxNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxNztMbzswO0w7NzNERTs7OztOOzs7OzsKK0Y5MTg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MTg7TG87MDtMOzg0M0Q7Ozs7Tjs7Ozs7CitGOTE5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTE5O0xvOzA7TDs5MTZBOzs7O047Ozs7OworRjkxQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxQTtMbzswO0w7OTlGMTs7OztOOzs7OzsKK0Y5MUI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MUI7TG87MDtMOzRFODI7Ozs7Tjs7Ozs7CitGOTFDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTFDO0xvOzA7TDs1Mzc1Ozs7O047Ozs7OworRjkxRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxRDtMbzswO0w7NkIwNDs7OztOOzs7OzsKK0Y5MUU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MUU7TG87MDtMOzcyMUI7Ozs7Tjs7Ozs7CitGOTFGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTFGO0xvOzA7TDs4NjJEOzs7O047Ozs7OworRjkyMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyMDtMbzswO0w7OUUxRTs7OztOOzs7OzsKK0Y5MjE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MjE7TG87MDtMOzVENTA7Ozs7Tjs7Ozs7CitGOTIyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTIyO0xvOzA7TDs2RkVCOzs7O047Ozs7OworRjkyMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyMztMbzswO0w7ODVDRDs7OztOOzs7OzsKK0Y5MjQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MjQ7TG87MDtMOzg5NjQ7Ozs7Tjs7Ozs7CitGOTI1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTI1O0xvOzA7TDs2MkM5Ozs7O047Ozs7OworRjkyNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyNjtMbzswO0w7ODFEODs7OztOOzs7OzsKK0Y5Mjc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Mjc7TG87MDtMOzg4MUY7Ozs7Tjs7Ozs7CitGOTI4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTI4O0xvOzA7TDs1RUNBOzs7O047Ozs7OworRjkyOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyOTtMbzswO0w7NjcxNzs7OztOOzs7OzsKK0Y5MkE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MkE7TG87MDtMOzZENkE7Ozs7Tjs7Ozs7CitGOTJCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTJCO0xvOzA7TDs3MkZDOzs7O047Ozs7OworRjkyQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyQztMbzswO0w7OTBDRTs7OztOOzs7OzsKK0Y5MkQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MkQ7TG87MDtMOzRGODY7Ozs7Tjs7Ozs7CitGOTJFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTJFO0xvOzA7TDs1MUI3Ozs7O047Ozs7OworRjkyRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyRjtMbzswO0w7NTJERTs7OztOOzs7OzsKK0Y5MzA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MzA7TG87MDtMOzY0QzQ7Ozs7Tjs7Ozs7CitGOTMxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTMxO0xvOzA7TDs2QUQzOzs7O047Ozs7OworRjkzMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzMjtMbzswO0w7NzIxMDs7OztOOzs7OzsKK0Y5MzM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MzM7TG87MDtMOzc2RTc7Ozs7Tjs7Ozs7CitGOTM0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTM0O0xvOzA7TDs4MDAxOzs7O047Ozs7OworRjkzNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzNTtMbzswO0w7ODYwNjs7OztOOzs7OzsKK0Y5MzY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MzY7TG87MDtMOzg2NUM7Ozs7Tjs7Ozs7CitGOTM3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTM3O0xvOzA7TDs4REVGOzs7O047Ozs7OworRjkzODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzODtMbzswO0w7OTczMjs7OztOOzs7OzsKK0Y5Mzk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Mzk7TG87MDtMOzlCNkY7Ozs7Tjs7Ozs7CitGOTNBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTNBO0xvOzA7TDs5REZBOzs7O047Ozs7OworRjkzQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzQjtMbzswO0w7Nzg4Qzs7OztOOzs7OzsKK0Y5M0M7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5M0M7TG87MDtMOzc5N0Y7Ozs7Tjs7Ozs7CitGOTNEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTNEO0xvOzA7TDs3REEwOzs7O047Ozs7OworRjkzRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzRTtMbzswO0w7ODNDOTs7OztOOzs7OzsKK0Y5M0Y7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5M0Y7TG87MDtMOzkzMDQ7Ozs7Tjs7Ozs7CitGOTQwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTQwO0xvOzA7TDs5RTdGOzs7O047Ozs7OworRjk0MTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0MTtMbzswO0w7OEFENjs7OztOOzs7OzsKK0Y5NDI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NDI7TG87MDtMOzU4REY7Ozs7Tjs7Ozs7CitGOTQzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTQzO0xvOzA7TDs1RjA0Ozs7O047Ozs7OworRjk0NDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0NDtMbzswO0w7N0M2MDs7OztOOzs7OzsKK0Y5NDU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NDU7TG87MDtMOzgwN0U7Ozs7Tjs7Ozs7CitGOTQ2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTQ2O0xvOzA7TDs3MjYyOzs7O047Ozs7OworRjk0NztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0NztMbzswO0w7NzhDQTs7OztOOzs7OzsKK0Y5NDg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NDg7TG87MDtMOzhDQzI7Ozs7Tjs7Ozs7CitGOTQ5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTQ5O0xvOzA7TDs5NkY3Ozs7O047Ozs7OworRjk0QTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0QTtMbzswO0w7NThEODs7OztOOzs7OzsKK0Y5NEI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NEI7TG87MDtMOzVDNjI7Ozs7Tjs7Ozs7CitGOTRDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTRDO0xvOzA7TDs2QTEzOzs7O047Ozs7OworRjk0RDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0RDtMbzswO0w7NkREQTs7OztOOzs7OzsKK0Y5NEU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NEU7TG87MDtMOzZGMEY7Ozs7Tjs7Ozs7CitGOTRGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTRGO0xvOzA7TDs3RDJGOzs7O047Ozs7OworRjk1MDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1MDtMbzswO0w7N0UzNzs7OztOOzs7OzsKK0Y5NTE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NTE7TG87MDtMOzk2RkI7Ozs7Tjs7Ozs7CitGOTUyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTUyO0xvOzA7TDs1MkQyOzs7O047Ozs7OworRjk1MztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1MztMbzswO0w7ODA4Qjs7OztOOzs7OzsKK0Y5NTQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NTQ7TG87MDtMOzUxREM7Ozs7Tjs7Ozs7CitGOTU1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTU1O0xvOzA7TDs1MUNDOzs7O047Ozs7OworRjk1NjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1NjtMbzswO0w7N0ExQzs7OztOOzs7OzsKK0Y5NTc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NTc7TG87MDtMOzdEQkU7Ozs7Tjs7Ozs7CitGOTU4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTU4O0xvOzA7TDs4M0YxOzs7O047Ozs7OworRjk1OTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1OTtMbzswO0w7OTY3NTs7OztOOzs7OzsKK0Y5NUE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NUE7TG87MDtMOzhCODA7Ozs7Tjs7Ozs7CitGOTVCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTVCO0xvOzA7TDs2MkNGOzs7O047Ozs7OworRjk1QztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1QztMbzswO0w7NkEwMjs7OztOOzs7OzsKK0Y5NUQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NUQ7TG87MDtMOzhBRkU7Ozs7Tjs7Ozs7CitGOTVFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTVFO0xvOzA7TDs0RTM5Ozs7O047Ozs7OworRjk1RjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1RjtMbzswO0w7NUJFNzs7OztOOzs7OzsKK0Y5NjA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NjA7TG87MDtMOzYwMTI7Ozs7Tjs7Ozs7CitGOTYxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTYxO0xvOzA7TDs3Mzg3Ozs7O047Ozs7OworRjk2MjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2MjtMbzswO0w7NzU3MDs7OztOOzs7OzsKK0Y5NjM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NjM7TG87MDtMOzUzMTc7Ozs7Tjs7Ozs7CitGOTY0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTY0O0xvOzA7TDs3OEZCOzs7O047Ozs7OworRjk2NTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2NTtMbzswO0w7NEZCRjs7OztOOzs7OzsKK0Y5NjY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NjY7TG87MDtMOzVGQTk7Ozs7Tjs7Ozs7CitGOTY3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTY3O0xvOzA7TDs0RTBEOzs7O047Ozs7OworRjk2ODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2ODtMbzswO0w7NkNDQzs7OztOOzs7OzsKK0Y5Njk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Njk7TG87MDtMOzY1Nzg7Ozs7Tjs7Ozs7CitGOTZBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTZBO0xvOzA7TDs3RDIyOzs7O047Ozs7OworRjk2QjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2QjtMbzswO0w7NTNDMzs7OztOOzs7OzsKK0Y5NkM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NkM7TG87MDtMOzU4NUU7Ozs7Tjs7Ozs7CitGOTZEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTZEO0xvOzA7TDs3NzAxOzs7O047Ozs7OworRjk2RTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2RTtMbzswO0w7ODQ0OTs7OztOOzs7OzsKK0Y5NkY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NkY7TG87MDtMOzhBQUE7Ozs7Tjs7Ozs7CitGOTcwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTcwO0xvOzA7TDs2QkJBOzs7O047Ozs7OworRjk3MTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3MTtMbzswO0w7OEZCMDs7OztOOzs7OzsKK0Y5NzI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NzI7TG87MDtMOzZDODg7Ozs7Tjs7Ozs7CitGOTczO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTczO0xvOzA7TDs2MkZFOzs7O047Ozs7OworRjk3NDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3NDtMbzswO0w7ODJFNTs7OztOOzs7OzsKK0Y5NzU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NzU7TG87MDtMOzYzQTA7Ozs7Tjs7Ozs7CitGOTc2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTc2O0xvOzA7TDs3NTY1Ozs7O047Ozs7OworRjk3NztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3NztMbzswO0w7NEVBRTs7OztOOzs7OzsKK0Y5Nzg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Nzg7TG87MDtMOzUxNjk7Ozs7Tjs7Ozs7CitGOTc5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTc5O0xvOzA7TDs1MUM5Ozs7O047Ozs7OworRjk3QTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3QTtMbzswO0w7Njg4MTs7OztOOzs7OzsKK0Y5N0I7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5N0I7TG87MDtMOzdDRTc7Ozs7Tjs7Ozs7CitGOTdDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTdDO0xvOzA7TDs4MjZGOzs7O047Ozs7OworRjk3RDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3RDtMbzswO0w7OEFEMjs7OztOOzs7OzsKK0Y5N0U7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5N0U7TG87MDtMOzkxQ0Y7Ozs7Tjs7Ozs7CitGOTdGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTdGO0xvOzA7TDs1MkY1Ozs7O047Ozs7OworRjk4MDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4MDtMbzswO0w7NTQ0Mjs7OztOOzs7OzsKK0Y5ODE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5ODE7TG87MDtMOzU5NzM7Ozs7Tjs7Ozs7CitGOTgyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTgyO0xvOzA7TDs1RUVDOzs7O047Ozs7OworRjk4MztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4MztMbzswO0w7NjVDNTs7OztOOzs7OzsKK0Y5ODQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5ODQ7TG87MDtMOzZGRkU7Ozs7Tjs7Ozs7CitGOTg1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTg1O0xvOzA7TDs3OTJBOzs7O047Ozs7OworRjk4NjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4NjtMbzswO0w7OTVBRDs7OztOOzs7OzsKK0Y5ODc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5ODc7TG87MDtMOzlBNkE7Ozs7Tjs7Ozs7CitGOTg4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTg4O0xvOzA7TDs5RTk3Ozs7O047Ozs7OworRjk4OTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4OTtMbzswO0w7OUVDRTs7OztOOzs7OzsKK0Y5OEE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OEE7TG87MDtMOzUyOUI7Ozs7Tjs7Ozs7CitGOThCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOThCO0xvOzA7TDs2NkM2Ozs7O047Ozs7OworRjk4QztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4QztMbzswO0w7NkI3Nzs7OztOOzs7OzsKK0Y5OEQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OEQ7TG87MDtMOzhGNjI7Ozs7Tjs7Ozs7CitGOThFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOThFO0xvOzA7TDs1RTc0Ozs7O047Ozs7OworRjk4RjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4RjtMbzswO0w7NjE5MDs7OztOOzs7OzsKK0Y5OTA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OTA7TG87MDtMOzYyMDA7Ozs7Tjs7Ozs7CitGOTkxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTkxO0xvOzA7TDs2NDlBOzs7O047Ozs7OworRjk5MjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5MjtMbzswO0w7NkYyMzs7OztOOzs7OzsKK0Y5OTM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OTM7TG87MDtMOzcxNDk7Ozs7Tjs7Ozs7CitGOTk0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTk0O0xvOzA7TDs3NDg5Ozs7O047Ozs7OworRjk5NTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5NTtMbzswO0w7NzlDQTs7OztOOzs7OzsKK0Y5OTY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OTY7TG87MDtMOzdERjQ7Ozs7Tjs7Ozs7CitGOTk3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTk3O0xvOzA7TDs4MDZGOzs7O047Ozs7OworRjk5ODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5ODtMbzswO0w7OEYyNjs7OztOOzs7OzsKK0Y5OTk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OTk7TG87MDtMOzg0RUU7Ozs7Tjs7Ozs7CitGOTlBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTlBO0xvOzA7TDs5MDIzOzs7O047Ozs7OworRjk5QjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5QjtMbzswO0w7OTM0QTs7OztOOzs7OzsKK0Y5OUM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OUM7TG87MDtMOzUyMTc7Ozs7Tjs7Ozs7CitGOTlEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTlEO0xvOzA7TDs1MkEzOzs7O047Ozs7OworRjk5RTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5RTtMbzswO0w7NTRCRDs7OztOOzs7OzsKK0Y5OUY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OUY7TG87MDtMOzcwQzg7Ozs7Tjs7Ozs7CitGOUEwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUEwO0xvOzA7TDs4OEMyOzs7O047Ozs7OworRjlBMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBMTtMbzswO0w7OEFBQTs7OztOOzs7OzsKK0Y5QTI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QTI7TG87MDtMOzVFQzk7Ozs7Tjs7Ozs7CitGOUEzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUEzO0xvOzA7TDs1RkY1Ozs7O047Ozs7OworRjlBNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBNDtMbzswO0w7NjM3Qjs7OztOOzs7OzsKK0Y5QTU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QTU7TG87MDtMOzZCQUU7Ozs7Tjs7Ozs7CitGOUE2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUE2O0xvOzA7TDs3QzNFOzs7O047Ozs7OworRjlBNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBNztMbzswO0w7NzM3NTs7OztOOzs7OzsKK0Y5QTg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QTg7TG87MDtMOzRFRTQ7Ozs7Tjs7Ozs7CitGOUE5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUE5O0xvOzA7TDs1NkY5Ozs7O047Ozs7OworRjlBQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBQTtMbzswO0w7NUJFNzs7OztOOzs7OzsKK0Y5QUI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QUI7TG87MDtMOzVEQkE7Ozs7Tjs7Ozs7CitGOUFDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUFDO0xvOzA7TDs2MDFDOzs7O047Ozs7OworRjlBRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBRDtMbzswO0w7NzNCMjs7OztOOzs7OzsKK0Y5QUU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QUU7TG87MDtMOzc0Njk7Ozs7Tjs7Ozs7CitGOUFGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUFGO0xvOzA7TDs3RjlBOzs7O047Ozs7OworRjlCMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCMDtMbzswO0w7ODA0Njs7OztOOzs7OzsKK0Y5QjE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QjE7TG87MDtMOzkyMzQ7Ozs7Tjs7Ozs7CitGOUIyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUIyO0xvOzA7TDs5NkY2Ozs7O047Ozs7OworRjlCMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCMztMbzswO0w7OTc0ODs7OztOOzs7OzsKK0Y5QjQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QjQ7TG87MDtMOzk4MTg7Ozs7Tjs7Ozs7CitGOUI1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUI1O0xvOzA7TDs0RjhCOzs7O047Ozs7OworRjlCNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCNjtMbzswO0w7NzlBRTs7OztOOzs7OzsKK0Y5Qjc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Qjc7TG87MDtMOzkxQjQ7Ozs7Tjs7Ozs7CitGOUI4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUI4O0xvOzA7TDs5NkI4Ozs7O047Ozs7OworRjlCOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCOTtMbzswO0w7NjBFMTs7OztOOzs7OzsKK0Y5QkE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QkE7TG87MDtMOzRFODY7Ozs7Tjs7Ozs7CitGOUJCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUJCO0xvOzA7TDs1MERBOzs7O047Ozs7OworRjlCQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCQztMbzswO0w7NUJFRTs7OztOOzs7OzsKK0Y5QkQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QkQ7TG87MDtMOzVDM0Y7Ozs7Tjs7Ozs7CitGOUJFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUJFO0xvOzA7TDs2NTk5Ozs7O047Ozs7OworRjlCRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCRjtMbzswO0w7NkEwMjs7OztOOzs7OzsKK0Y5QzA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QzA7TG87MDtMOzcxQ0U7Ozs7Tjs7Ozs7CitGOUMxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUMxO0xvOzA7TDs3NjQyOzs7O047Ozs7OworRjlDMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDMjtMbzswO0w7ODRGQzs7OztOOzs7OzsKK0Y5QzM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QzM7TG87MDtMOzkwN0M7Ozs7Tjs7Ozs7CitGOUM0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUM0O0xvOzA7TDs5RjhEOzs7O047Ozs7OworRjlDNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDNTtMbzswO0w7NjY4ODs7OztOOzs7OzsKK0Y5QzY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QzY7TG87MDtMOzk2MkU7Ozs7Tjs7Ozs7CitGOUM3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUM3O0xvOzA7TDs1Mjg5Ozs7O047Ozs7OworRjlDODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDODtMbzswO0w7Njc3Qjs7OztOOzs7OzsKK0Y5Qzk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Qzk7TG87MDtMOzY3RjM7Ozs7Tjs7Ozs7CitGOUNBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUNBO0xvOzA7TDs2RDQxOzs7O047Ozs7OworRjlDQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDQjtMbzswO0w7NkU5Qzs7OztOOzs7OzsKK0Y5Q0M7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Q0M7TG87MDtMOzc0MDk7Ozs7Tjs7Ozs7CitGOUNEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUNEO0xvOzA7TDs3NTU5Ozs7O047Ozs7OworRjlDRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDRTtMbzswO0w7Nzg2Qjs7OztOOzs7OzsKK0Y5Q0Y7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Q0Y7TG87MDtMOzdEMTA7Ozs7Tjs7Ozs7CitGOUQwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUQwO0xvOzA7TDs5ODVFOzs7O047Ozs7OworRjlEMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEMTtMbzswO0w7NTE2RDs7OztOOzs7OzsKK0Y5RDI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RDI7TG87MDtMOzYyMkU7Ozs7Tjs7Ozs7CitGOUQzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUQzO0xvOzA7TDs5Njc4Ozs7O047Ozs7OworRjlENDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlENDtMbzswO0w7NTAyQjs7OztOOzs7OzsKK0Y5RDU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RDU7TG87MDtMOzVEMTk7Ozs7Tjs7Ozs7CitGOUQ2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUQ2O0xvOzA7TDs2REVBOzs7O047Ozs7OworRjlENztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlENztMbzswO0w7OEYyQTs7OztOOzs7OzsKK0Y5RDg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RDg7TG87MDtMOzVGOEI7Ozs7Tjs7Ozs7CitGOUQ5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUQ5O0xvOzA7TDs2MTQ0Ozs7O047Ozs7OworRjlEQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEQTtMbzswO0w7NjgxNzs7OztOOzs7OzsKK0Y5REI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5REI7TG87MDtMOzczODc7Ozs7Tjs7Ozs7CitGOURDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOURDO0xvOzA7TDs5Njg2Ozs7O047Ozs7OworRjlERDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlERDtMbzswO0w7NTIyOTs7OztOOzs7OzsKK0Y5REU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5REU7TG87MDtMOzU0MEY7Ozs7Tjs7Ozs7CitGOURGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOURGO0xvOzA7TDs1QzY1Ozs7O047Ozs7OworRjlFMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFMDtMbzswO0w7NjYxMzs7OztOOzs7OzsKK0Y5RTE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RTE7TG87MDtMOzY3NEU7Ozs7Tjs7Ozs7CitGOUUyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUUyO0xvOzA7TDs2OEE4Ozs7O047Ozs7OworRjlFMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFMztMbzswO0w7NkNFNTs7OztOOzs7OzsKK0Y5RTQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RTQ7TG87MDtMOzc0MDY7Ozs7Tjs7Ozs7CitGOUU1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUU1O0xvOzA7TDs3NUUyOzs7O047Ozs7OworRjlFNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFNjtMbzswO0w7N0Y3OTs7OztOOzs7OzsKK0Y5RTc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RTc7TG87MDtMOzg4Q0Y7Ozs7Tjs7Ozs7CitGOUU4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUU4O0xvOzA7TDs4OEUxOzs7O047Ozs7OworRjlFOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFOTtMbzswO0w7OTFDQzs7OztOOzs7OzsKK0Y5RUE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RUE7TG87MDtMOzk2RTI7Ozs7Tjs7Ozs7CitGOUVCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUVCO0xvOzA7TDs1MzNGOzs7O047Ozs7OworRjlFQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFQztMbzswO0w7NkVCQTs7OztOOzs7OzsKK0Y5RUQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RUQ7TG87MDtMOzU0MUQ7Ozs7Tjs7Ozs7CitGOUVFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUVFO0xvOzA7TDs3MUQwOzs7O047Ozs7OworRjlFRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFRjtMbzswO0w7NzQ5ODs7OztOOzs7OzsKK0Y5RjA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RjA7TG87MDtMOzg1RkE7Ozs7Tjs7Ozs7CitGOUYxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUYxO0xvOzA7TDs5NkEzOzs7O047Ozs7OworRjlGMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGMjtMbzswO0w7OUM1Nzs7OztOOzs7OzsKK0Y5RjM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RjM7TG87MDtMOzlFOUY7Ozs7Tjs7Ozs7CitGOUY0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUY0O0xvOzA7TDs2Nzk3Ozs7O047Ozs7OworRjlGNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGNTtMbzswO0w7NkRDQjs7OztOOzs7OzsKK0Y5RjY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RjY7TG87MDtMOzgxRTg7Ozs7Tjs7Ozs7CitGOUY3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUY3O0xvOzA7TDs3QUNCOzs7O047Ozs7OworRjlGODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGODtMbzswO0w7N0IyMDs7OztOOzs7OzsKK0Y5Rjk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Rjk7TG87MDtMOzdDOTI7Ozs7Tjs7Ozs7CitGOUZBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUZBO0xvOzA7TDs3MkMwOzs7O047Ozs7OworRjlGQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGQjtMbzswO0w7NzA5OTs7OztOOzs7OzsKK0Y5RkM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RkM7TG87MDtMOzhCNTg7Ozs7Tjs7Ozs7CitGOUZEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUZEO0xvOzA7TDs0RUMwOzs7O047Ozs7OworRjlGRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGRTtMbzswO0w7ODMzNjs7OztOOzs7OzsKK0Y5RkY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RkY7TG87MDtMOzUyM0E7Ozs7Tjs7Ozs7CitGQTAwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTAwO0xvOzA7TDs1MjA3Ozs7O047Ozs7OworRkEwMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwMTtMbzswO0w7NUVBNjs7OztOOzs7OzsKK0ZBMDI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMDI7TG87MDtMOzYyRDM7Ozs7Tjs7Ozs7CitGQTAzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTAzO0xvOzA7TDs3Q0Q2Ozs7O047Ozs7OworRkEwNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwNDtMbzswO0w7NUI4NTs7OztOOzs7OzsKK0ZBMDU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMDU7TG87MDtMOzZEMUU7Ozs7Tjs7Ozs7CitGQTA2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTA2O0xvOzA7TDs2NkI0Ozs7O047Ozs7OworRkEwNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwNztMbzswO0w7OEYzQjs7OztOOzs7OzsKK0ZBMDg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMDg7TG87MDtMOzg4NEM7Ozs7Tjs7Ozs7CitGQTA5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTA5O0xvOzA7TDs5NjREOzs7O047Ozs7OworRkEwQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwQTtMbzswO0w7ODk4Qjs7OztOOzs7OzsKK0ZBMEI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMEI7TG87MDtMOzVFRDM7Ozs7Tjs7Ozs7CitGQTBDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTBDO0xvOzA7TDs1MTQwOzs7O047Ozs7OworRkEwRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwRDtMbzswO0w7NTVDMDs7OztOOzs7OzsKK0ZBMEU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMEU7TG87MDtMOzs7OztOOzs7OzsKK0ZBMEY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMEY7TG87MDtMOzs7OztOOzs7OzsKK0ZBMTA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMTA7TG87MDtMOzU4NUE7Ozs7Tjs7Ozs7CitGQTExO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTExO0xvOzA7TDs7Ozs7Tjs7Ozs7CitGQTEyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTEyO0xvOzA7TDs2Njc0Ozs7O047Ozs7OworRkExMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExMztMbzswO0w7Ozs7O047Ozs7OworRkExNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExNDtMbzswO0w7Ozs7O047Ozs7OworRkExNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExNTtMbzswO0w7NTFERTs7OztOOzs7OzsKK0ZBMTY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMTY7TG87MDtMOzczMkE7Ozs7Tjs7Ozs7CitGQTE3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTE3O0xvOzA7TDs3NkNBOzs7O047Ozs7OworRkExODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExODtMbzswO0w7NzkzQzs7OztOOzs7OzsKK0ZBMTk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMTk7TG87MDtMOzc5NUU7Ozs7Tjs7Ozs7CitGQTFBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTFBO0xvOzA7TDs3OTY1Ozs7O047Ozs7OworRkExQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExQjtMbzswO0w7Nzk4Rjs7OztOOzs7OzsKK0ZBMUM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMUM7TG87MDtMOzk3NTY7Ozs7Tjs7Ozs7CitGQTFEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTFEO0xvOzA7TDs3Q0JFOzs7O047Ozs7OworRkExRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExRTtMbzswO0w7N0ZCRDs7OztOOzs7OzsKK0ZBMUY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMUY7TG87MDtMOzs7OztOOzsqOzs7CitGQTIwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTIwO0xvOzA7TDs4NjEyOzs7O047Ozs7OworRkEyMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyMTtMbzswO0w7Ozs7O047Ozs7OworRkEyMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyMjtMbzswO0w7OEFGODs7OztOOzs7OzsKK0ZBMjM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMjM7TG87MDtMOzs7OztOOzsqOzs7CitGQTI0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTI0O0xvOzA7TDs7Ozs7Tjs7Ozs7CitGQTI1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTI1O0xvOzA7TDs5MDM4Ozs7O047Ozs7OworRkEyNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyNjtMbzswO0w7OTBGRDs7OztOOzs7OzsKK0ZBMjc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMjc7TG87MDtMOzs7OztOOzs7OzsKK0ZBMjg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMjg7TG87MDtMOzs7OztOOzs7OzsKK0ZBMjk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMjk7TG87MDtMOzs7OztOOzs7OzsKK0ZBMkE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMkE7TG87MDtMOzk4RUY7Ozs7Tjs7Ozs7CitGQTJCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTJCO0xvOzA7TDs5OEZDOzs7O047Ozs7OworRkEyQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyQztMbzswO0w7OTkyODs7OztOOzs7OzsKK0ZBMkQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMkQ7TG87MDtMOzlEQjQ7Ozs7Tjs7Ozs7CitGQjAwO0xBVElOIFNNQUxMIExJR0FUVVJFIEZGO0xsOzA7TDs8Y29tcGF0PiAwMDY2IDAwNjY7Ozs7Tjs7Ozs7CitGQjAxO0xBVElOIFNNQUxMIExJR0FUVVJFIEZJO0xsOzA7TDs8Y29tcGF0PiAwMDY2IDAwNjk7Ozs7Tjs7Ozs7CitGQjAyO0xBVElOIFNNQUxMIExJR0FUVVJFIEZMO0xsOzA7TDs8Y29tcGF0PiAwMDY2IDAwNkM7Ozs7Tjs7Ozs7CitGQjAzO0xBVElOIFNNQUxMIExJR0FUVVJFIEZGSTtMbDswO0w7PGNvbXBhdD4gMDA2NiAwMDY2IDAwNjk7Ozs7Tjs7Ozs7CitGQjA0O0xBVElOIFNNQUxMIExJR0FUVVJFIEZGTDtMbDswO0w7PGNvbXBhdD4gMDA2NiAwMDY2IDAwNkM7Ozs7Tjs7Ozs7CitGQjA1O0xBVElOIFNNQUxMIExJR0FUVVJFIExPTkcgUyBUO0xsOzA7TDs8Y29tcGF0PiAwMTdGIDAwNzQ7Ozs7Tjs7Ozs7CitGQjA2O0xBVElOIFNNQUxMIExJR0FUVVJFIFNUO0xsOzA7TDs8Y29tcGF0PiAwMDczIDAwNzQ7Ozs7Tjs7Ozs7CitGQjEzO0FSTUVOSUFOIFNNQUxMIExJR0FUVVJFIE1FTiBOT1c7TGw7MDtMOzxjb21wYXQ+IDA1NzQgMDU3Njs7OztOOzs7OzsKK0ZCMTQ7QVJNRU5JQU4gU01BTEwgTElHQVRVUkUgTUVOIEVDSDtMbDswO0w7PGNvbXBhdD4gMDU3NCAwNTY1Ozs7O047Ozs7OworRkIxNTtBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBNRU4gSU5JO0xsOzA7TDs8Y29tcGF0PiAwNTc0IDA1NkI7Ozs7Tjs7Ozs7CitGQjE2O0FSTUVOSUFOIFNNQUxMIExJR0FUVVJFIFZFVyBOT1c7TGw7MDtMOzxjb21wYXQ+IDA1N0UgMDU3Njs7OztOOzs7OzsKK0ZCMTc7QVJNRU5JQU4gU01BTEwgTElHQVRVUkUgTUVOIFhFSDtMbDswO0w7PGNvbXBhdD4gMDU3NCAwNTZEOzs7O047Ozs7OworRkIxRDtIRUJSRVcgTEVUVEVSIFlPRCBXSVRIIEhJUklRO0xvOzA7UjswNUQ5IDA1QjQ7Ozs7Tjs7Ozs7CitGQjFFO0hFQlJFVyBQT0lOVCBKVURFTy1TUEFOSVNIIFZBUklLQTtNbjsyNjtOU007Ozs7O047SEVCUkVXIFBPSU5UIFZBUklLQTs7OzsKK0ZCMUY7SEVCUkVXIExJR0FUVVJFIFlJRERJU0ggWU9EIFlPRCBQQVRBSDtMbzswO1I7MDVGMiAwNUI3Ozs7O047Ozs7OworRkIyMDtIRUJSRVcgTEVUVEVSIEFMVEVSTkFUSVZFIEFZSU47TG87MDtSOzxmb250PiAwNUUyOzs7O047Ozs7OworRkIyMTtIRUJSRVcgTEVUVEVSIFdJREUgQUxFRjtMbzswO1I7PGZvbnQ+IDA1RDA7Ozs7Tjs7Ozs7CitGQjIyO0hFQlJFVyBMRVRURVIgV0lERSBEQUxFVDtMbzswO1I7PGZvbnQ+IDA1RDM7Ozs7Tjs7Ozs7CitGQjIzO0hFQlJFVyBMRVRURVIgV0lERSBIRTtMbzswO1I7PGZvbnQ+IDA1RDQ7Ozs7Tjs7Ozs7CitGQjI0O0hFQlJFVyBMRVRURVIgV0lERSBLQUY7TG87MDtSOzxmb250PiAwNURCOzs7O047Ozs7OworRkIyNTtIRUJSRVcgTEVUVEVSIFdJREUgTEFNRUQ7TG87MDtSOzxmb250PiAwNURDOzs7O047Ozs7OworRkIyNjtIRUJSRVcgTEVUVEVSIFdJREUgRklOQUwgTUVNO0xvOzA7Ujs8Zm9udD4gMDVERDs7OztOOzs7OzsKK0ZCMjc7SEVCUkVXIExFVFRFUiBXSURFIFJFU0g7TG87MDtSOzxmb250PiAwNUU4Ozs7O047Ozs7OworRkIyODtIRUJSRVcgTEVUVEVSIFdJREUgVEFWO0xvOzA7Ujs8Zm9udD4gMDVFQTs7OztOOzs7OzsKK0ZCMjk7SEVCUkVXIExFVFRFUiBBTFRFUk5BVElWRSBQTFVTIFNJR047U207MDtFVDs8Zm9udD4gMDAyQjs7OztOOzs7OzsKK0ZCMkE7SEVCUkVXIExFVFRFUiBTSElOIFdJVEggU0hJTiBET1Q7TG87MDtSOzA1RTkgMDVDMTs7OztOOzs7OzsKK0ZCMkI7SEVCUkVXIExFVFRFUiBTSElOIFdJVEggU0lOIERPVDtMbzswO1I7MDVFOSAwNUMyOzs7O047Ozs7OworRkIyQztIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBEQUdFU0ggQU5EIFNISU4gRE9UO0xvOzA7UjtGQjQ5IDA1QzE7Ozs7Tjs7Ozs7CitGQjJEO0hFQlJFVyBMRVRURVIgU0hJTiBXSVRIIERBR0VTSCBBTkQgU0lOIERPVDtMbzswO1I7RkI0OSAwNUMyOzs7O047Ozs7OworRkIyRTtIRUJSRVcgTEVUVEVSIEFMRUYgV0lUSCBQQVRBSDtMbzswO1I7MDVEMCAwNUI3Ozs7O047Ozs7OworRkIyRjtIRUJSRVcgTEVUVEVSIEFMRUYgV0lUSCBRQU1BVFM7TG87MDtSOzA1RDAgMDVCODs7OztOOzs7OzsKK0ZCMzA7SEVCUkVXIExFVFRFUiBBTEVGIFdJVEggTUFQSVE7TG87MDtSOzA1RDAgMDVCQzs7OztOOzs7OzsKK0ZCMzE7SEVCUkVXIExFVFRFUiBCRVQgV0lUSCBEQUdFU0g7TG87MDtSOzA1RDEgMDVCQzs7OztOOzs7OzsKK0ZCMzI7SEVCUkVXIExFVFRFUiBHSU1FTCBXSVRIIERBR0VTSDtMbzswO1I7MDVEMiAwNUJDOzs7O047Ozs7OworRkIzMztIRUJSRVcgTEVUVEVSIERBTEVUIFdJVEggREFHRVNIO0xvOzA7UjswNUQzIDA1QkM7Ozs7Tjs7Ozs7CitGQjM0O0hFQlJFVyBMRVRURVIgSEUgV0lUSCBNQVBJUTtMbzswO1I7MDVENCAwNUJDOzs7O047Ozs7OworRkIzNTtIRUJSRVcgTEVUVEVSIFZBViBXSVRIIERBR0VTSDtMbzswO1I7MDVENSAwNUJDOzs7O047Ozs7OworRkIzNjtIRUJSRVcgTEVUVEVSIFpBWUlOIFdJVEggREFHRVNIO0xvOzA7UjswNUQ2IDA1QkM7Ozs7Tjs7Ozs7CitGQjM4O0hFQlJFVyBMRVRURVIgVEVUIFdJVEggREFHRVNIO0xvOzA7UjswNUQ4IDA1QkM7Ozs7Tjs7Ozs7CitGQjM5O0hFQlJFVyBMRVRURVIgWU9EIFdJVEggREFHRVNIO0xvOzA7UjswNUQ5IDA1QkM7Ozs7Tjs7Ozs7CitGQjNBO0hFQlJFVyBMRVRURVIgRklOQUwgS0FGIFdJVEggREFHRVNIO0xvOzA7UjswNURBIDA1QkM7Ozs7Tjs7Ozs7CitGQjNCO0hFQlJFVyBMRVRURVIgS0FGIFdJVEggREFHRVNIO0xvOzA7UjswNURCIDA1QkM7Ozs7Tjs7Ozs7CitGQjNDO0hFQlJFVyBMRVRURVIgTEFNRUQgV0lUSCBEQUdFU0g7TG87MDtSOzA1REMgMDVCQzs7OztOOzs7OzsKK0ZCM0U7SEVCUkVXIExFVFRFUiBNRU0gV0lUSCBEQUdFU0g7TG87MDtSOzA1REUgMDVCQzs7OztOOzs7OzsKK0ZCNDA7SEVCUkVXIExFVFRFUiBOVU4gV0lUSCBEQUdFU0g7TG87MDtSOzA1RTAgMDVCQzs7OztOOzs7OzsKK0ZCNDE7SEVCUkVXIExFVFRFUiBTQU1FS0ggV0lUSCBEQUdFU0g7TG87MDtSOzA1RTEgMDVCQzs7OztOOzs7OzsKK0ZCNDM7SEVCUkVXIExFVFRFUiBGSU5BTCBQRSBXSVRIIERBR0VTSDtMbzswO1I7MDVFMyAwNUJDOzs7O047Ozs7OworRkI0NDtIRUJSRVcgTEVUVEVSIFBFIFdJVEggREFHRVNIO0xvOzA7UjswNUU0IDA1QkM7Ozs7Tjs7Ozs7CitGQjQ2O0hFQlJFVyBMRVRURVIgVFNBREkgV0lUSCBEQUdFU0g7TG87MDtSOzA1RTYgMDVCQzs7OztOOzs7OzsKK0ZCNDc7SEVCUkVXIExFVFRFUiBRT0YgV0lUSCBEQUdFU0g7TG87MDtSOzA1RTcgMDVCQzs7OztOOzs7OzsKK0ZCNDg7SEVCUkVXIExFVFRFUiBSRVNIIFdJVEggREFHRVNIO0xvOzA7UjswNUU4IDA1QkM7Ozs7Tjs7Ozs7CitGQjQ5O0hFQlJFVyBMRVRURVIgU0hJTiBXSVRIIERBR0VTSDtMbzswO1I7MDVFOSAwNUJDOzs7O047Ozs7OworRkI0QTtIRUJSRVcgTEVUVEVSIFRBViBXSVRIIERBR0VTSDtMbzswO1I7MDVFQSAwNUJDOzs7O047Ozs7OworRkI0QjtIRUJSRVcgTEVUVEVSIFZBViBXSVRIIEhPTEFNO0xvOzA7UjswNUQ1IDA1Qjk7Ozs7Tjs7Ozs7CitGQjRDO0hFQlJFVyBMRVRURVIgQkVUIFdJVEggUkFGRTtMbzswO1I7MDVEMSAwNUJGOzs7O047Ozs7OworRkI0RDtIRUJSRVcgTEVUVEVSIEtBRiBXSVRIIFJBRkU7TG87MDtSOzA1REIgMDVCRjs7OztOOzs7OzsKK0ZCNEU7SEVCUkVXIExFVFRFUiBQRSBXSVRIIFJBRkU7TG87MDtSOzA1RTQgMDVCRjs7OztOOzs7OzsKK0ZCNEY7SEVCUkVXIExJR0FUVVJFIEFMRUYgTEFNRUQ7TG87MDtSOzxjb21wYXQ+IDA1RDAgMDVEQzs7OztOOzs7OzsKK0ZCNTA7QVJBQklDIExFVFRFUiBBTEVGIFdBU0xBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NzE7Ozs7Tjs7Ozs7CitGQjUxO0FSQUJJQyBMRVRURVIgQUxFRiBXQVNMQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjcxOzs7O047Ozs7OworRkI1MjtBUkFCSUMgTEVUVEVSIEJFRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY3Qjs7OztOOzs7OzsKK0ZCNTM7QVJBQklDIExFVFRFUiBCRUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2N0I7Ozs7Tjs7Ozs7CitGQjU0O0FSQUJJQyBMRVRURVIgQkVFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY3Qjs7OztOOzs7OzsKK0ZCNTU7QVJBQklDIExFVFRFUiBCRUVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY3Qjs7OztOOzs7OzsKK0ZCNTY7QVJBQklDIExFVFRFUiBQRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY3RTs7OztOOzs7OzsKK0ZCNTc7QVJBQklDIExFVFRFUiBQRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY3RTs7OztOOzs7OzsKK0ZCNTg7QVJBQklDIExFVFRFUiBQRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2N0U7Ozs7Tjs7Ozs7CitGQjU5O0FSQUJJQyBMRVRURVIgUEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY3RTs7OztOOzs7OzsKK0ZCNUE7QVJBQklDIExFVFRFUiBCRUhFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjgwOzs7O047Ozs7OworRkI1QjtBUkFCSUMgTEVUVEVSIEJFSEVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2ODA7Ozs7Tjs7Ozs7CitGQjVDO0FSQUJJQyBMRVRURVIgQkVIRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2ODA7Ozs7Tjs7Ozs7CitGQjVEO0FSQUJJQyBMRVRURVIgQkVIRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjgwOzs7O047Ozs7OworRkI1RTtBUkFCSUMgTEVUVEVSIFRURUhFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjdBOzs7O047Ozs7OworRkI1RjtBUkFCSUMgTEVUVEVSIFRURUhFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjdBOzs7O047Ozs7OworRkI2MDtBUkFCSUMgTEVUVEVSIFRURUhFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY3QTs7OztOOzs7OzsKK0ZCNjE7QVJBQklDIExFVFRFUiBUVEVIRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjdBOzs7O047Ozs7OworRkI2MjtBUkFCSUMgTEVUVEVSIFRFSEVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2N0Y7Ozs7Tjs7Ozs7CitGQjYzO0FSQUJJQyBMRVRURVIgVEVIRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY3Rjs7OztOOzs7OzsKK0ZCNjQ7QVJBQklDIExFVFRFUiBURUhFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY3Rjs7OztOOzs7OzsKK0ZCNjU7QVJBQklDIExFVFRFUiBURUhFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2N0Y7Ozs7Tjs7Ozs7CitGQjY2O0FSQUJJQyBMRVRURVIgVFRFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjc5Ozs7O047Ozs7OworRkI2NztBUkFCSUMgTEVUVEVSIFRURUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY3OTs7OztOOzs7OzsKK0ZCNjg7QVJBQklDIExFVFRFUiBUVEVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjc5Ozs7O047Ozs7OworRkI2OTtBUkFCSUMgTEVUVEVSIFRURUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjc5Ozs7O047Ozs7OworRkI2QTtBUkFCSUMgTEVUVEVSIFZFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkE0Ozs7O047Ozs7OworRkI2QjtBUkFCSUMgTEVUVEVSIFZFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNkE0Ozs7O047Ozs7OworRkI2QztBUkFCSUMgTEVUVEVSIFZFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDZBNDs7OztOOzs7OzsKK0ZCNkQ7QVJBQklDIExFVFRFUiBWRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNkE0Ozs7O047Ozs7OworRkI2RTtBUkFCSUMgTEVUVEVSIFBFSEVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2QTY7Ozs7Tjs7Ozs7CitGQjZGO0FSQUJJQyBMRVRURVIgUEVIRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZBNjs7OztOOzs7OzsKK0ZCNzA7QVJBQklDIExFVFRFUiBQRUhFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDZBNjs7OztOOzs7OzsKK0ZCNzE7QVJBQklDIExFVFRFUiBQRUhFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2QTY7Ozs7Tjs7Ozs7CitGQjcyO0FSQUJJQyBMRVRURVIgRFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjg0Ozs7O047Ozs7OworRkI3MztBUkFCSUMgTEVUVEVSIERZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY4NDs7OztOOzs7OzsKK0ZCNzQ7QVJBQklDIExFVFRFUiBEWUVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjg0Ozs7O047Ozs7OworRkI3NTtBUkFCSUMgTEVUVEVSIERZRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjg0Ozs7O047Ozs7OworRkI3NjtBUkFCSUMgTEVUVEVSIE5ZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY4Mzs7OztOOzs7OzsKK0ZCNzc7QVJBQklDIExFVFRFUiBOWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2ODM7Ozs7Tjs7Ozs7CitGQjc4O0FSQUJJQyBMRVRURVIgTllFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY4Mzs7OztOOzs7OzsKK0ZCNzk7QVJBQklDIExFVFRFUiBOWUVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY4Mzs7OztOOzs7OzsKK0ZCN0E7QVJBQklDIExFVFRFUiBUQ0hFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjg2Ozs7O047Ozs7OworRkI3QjtBUkFCSUMgTEVUVEVSIFRDSEVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2ODY7Ozs7Tjs7Ozs7CitGQjdDO0FSQUJJQyBMRVRURVIgVENIRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2ODY7Ozs7Tjs7Ozs7CitGQjdEO0FSQUJJQyBMRVRURVIgVENIRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjg2Ozs7O047Ozs7OworRkI3RTtBUkFCSUMgTEVUVEVSIFRDSEVIRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY4Nzs7OztOOzs7OzsKK0ZCN0Y7QVJBQklDIExFVFRFUiBUQ0hFSEVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2ODc7Ozs7Tjs7Ozs7CitGQjgwO0FSQUJJQyBMRVRURVIgVENIRUhFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY4Nzs7OztOOzs7OzsKK0ZCODE7QVJBQklDIExFVFRFUiBUQ0hFSEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY4Nzs7OztOOzs7OzsKK0ZCODI7QVJBQklDIExFVFRFUiBEREFIQUwgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY4RDs7OztOOzs7OzsKK0ZCODM7QVJBQklDIExFVFRFUiBEREFIQUwgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY4RDs7OztOOzs7OzsKK0ZCODQ7QVJBQklDIExFVFRFUiBEQUhBTCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjhDOzs7O047Ozs7OworRkI4NTtBUkFCSUMgTEVUVEVSIERBSEFMIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2OEM7Ozs7Tjs7Ozs7CitGQjg2O0FSQUJJQyBMRVRURVIgRFVMIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2OEU7Ozs7Tjs7Ozs7CitGQjg3O0FSQUJJQyBMRVRURVIgRFVMIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2OEU7Ozs7Tjs7Ozs7CitGQjg4O0FSQUJJQyBMRVRURVIgRERBTCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjg4Ozs7O047Ozs7OworRkI4OTtBUkFCSUMgTEVUVEVSIEREQUwgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY4ODs7OztOOzs7OzsKK0ZCOEE7QVJBQklDIExFVFRFUiBKRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY5ODs7OztOOzs7OzsKK0ZCOEI7QVJBQklDIExFVFRFUiBKRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY5ODs7OztOOzs7OzsKK0ZCOEM7QVJBQklDIExFVFRFUiBSUkVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2OTE7Ozs7Tjs7Ozs7CitGQjhEO0FSQUJJQyBMRVRURVIgUlJFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjkxOzs7O047Ozs7OworRkI4RTtBUkFCSUMgTEVUVEVSIEtFSEVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2QTk7Ozs7Tjs7Ozs7CitGQjhGO0FSQUJJQyBMRVRURVIgS0VIRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZBOTs7OztOOzs7OzsKK0ZCOTA7QVJBQklDIExFVFRFUiBLRUhFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDZBOTs7OztOOzs7OzsKK0ZCOTE7QVJBQklDIExFVFRFUiBLRUhFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2QTk7Ozs7Tjs7Ozs7CitGQjkyO0FSQUJJQyBMRVRURVIgR0FGIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2QUY7Ozs7Tjs7Ozs7CitGQjkzO0FSQUJJQyBMRVRURVIgR0FGIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2QUY7Ozs7Tjs7Ozs7CitGQjk0O0FSQUJJQyBMRVRURVIgR0FGIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNkFGOzs7O047Ozs7OworRkI5NTtBUkFCSUMgTEVUVEVSIEdBRiBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2QUY7Ozs7Tjs7Ozs7CitGQjk2O0FSQUJJQyBMRVRURVIgR1VFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkIzOzs7O047Ozs7OworRkI5NztBUkFCSUMgTEVUVEVSIEdVRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZCMzs7OztOOzs7OzsKK0ZCOTg7QVJBQklDIExFVFRFUiBHVUVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNkIzOzs7O047Ozs7OworRkI5OTtBUkFCSUMgTEVUVEVSIEdVRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNkIzOzs7O047Ozs7OworRkI5QTtBUkFCSUMgTEVUVEVSIE5HT0VIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2QjE7Ozs7Tjs7Ozs7CitGQjlCO0FSQUJJQyBMRVRURVIgTkdPRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZCMTs7OztOOzs7OzsKK0ZCOUM7QVJBQklDIExFVFRFUiBOR09FSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDZCMTs7OztOOzs7OzsKK0ZCOUQ7QVJBQklDIExFVFRFUiBOR09FSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2QjE7Ozs7Tjs7Ozs7CitGQjlFO0FSQUJJQyBMRVRURVIgTk9PTiBHSFVOTkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDZCQTs7OztOOzs7OzsKK0ZCOUY7QVJBQklDIExFVFRFUiBOT09OIEdIVU5OQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNkJBOzs7O047Ozs7OworRkJBMDtBUkFCSUMgTEVUVEVSIFJOT09OIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2QkI7Ozs7Tjs7Ozs7CitGQkExO0FSQUJJQyBMRVRURVIgUk5PT04gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZCQjs7OztOOzs7OzsKK0ZCQTI7QVJBQklDIExFVFRFUiBSTk9PTiBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDZCQjs7OztOOzs7OzsKK0ZCQTM7QVJBQklDIExFVFRFUiBSTk9PTiBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2QkI7Ozs7Tjs7Ozs7CitGQkE0O0FSQUJJQyBMRVRURVIgSEVIIFdJVEggWUVIIEFCT1ZFIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2QzA7Ozs7Tjs7Ozs7CitGQkE1O0FSQUJJQyBMRVRURVIgSEVIIFdJVEggWUVIIEFCT1ZFIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2QzA7Ozs7Tjs7Ozs7CitGQkE2O0FSQUJJQyBMRVRURVIgSEVIIEdPQUwgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDZDMTs7OztOOzs7OzsKK0ZCQTc7QVJBQklDIExFVFRFUiBIRUggR09BTCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNkMxOzs7O047Ozs7OworRkJBODtBUkFCSUMgTEVUVEVSIEhFSCBHT0FMIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNkMxOzs7O047Ozs7OworRkJBOTtBUkFCSUMgTEVUVEVSIEhFSCBHT0FMIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDZDMTs7OztOOzs7OzsKK0ZCQUE7QVJBQklDIExFVFRFUiBIRUggRE9BQ0hBU0hNRUUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDZCRTs7OztOOzs7OzsKK0ZCQUI7QVJBQklDIExFVFRFUiBIRUggRE9BQ0hBU0hNRUUgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZCRTs7OztOOzs7OzsKK0ZCQUM7QVJBQklDIExFVFRFUiBIRUggRE9BQ0hBU0hNRUUgSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2QkU7Ozs7Tjs7Ozs7CitGQkFEO0FSQUJJQyBMRVRURVIgSEVIIERPQUNIQVNITUVFIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDZCRTs7OztOOzs7OzsKK0ZCQUU7QVJBQklDIExFVFRFUiBZRUggQkFSUkVFIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2RDI7Ozs7Tjs7Ozs7CitGQkFGO0FSQUJJQyBMRVRURVIgWUVIIEJBUlJFRSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNkQyOzs7O047Ozs7OworRkJCMDtBUkFCSUMgTEVUVEVSIFlFSCBCQVJSRUUgV0lUSCBIQU1aQSBBQk9WRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkQzOzs7O047Ozs7OworRkJCMTtBUkFCSUMgTEVUVEVSIFlFSCBCQVJSRUUgV0lUSCBIQU1aQSBBQk9WRSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNkQzOzs7O047Ozs7OworRkJEMztBUkFCSUMgTEVUVEVSIE5HIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2QUQ7Ozs7Tjs7Ozs7CitGQkQ0O0FSQUJJQyBMRVRURVIgTkcgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZBRDs7OztOOzs7OzsKK0ZCRDU7QVJBQklDIExFVFRFUiBORyBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDZBRDs7OztOOzs7OzsKK0ZCRDY7QVJBQklDIExFVFRFUiBORyBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2QUQ7Ozs7Tjs7Ozs7CitGQkQ3O0FSQUJJQyBMRVRURVIgVSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkM3Ozs7O047Ozs7OworRkJEODtBUkFCSUMgTEVUVEVSIFUgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZDNzs7OztOOzs7OzsKK0ZCRDk7QVJBQklDIExFVFRFUiBPRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkM2Ozs7O047Ozs7OworRkJEQTtBUkFCSUMgTEVUVEVSIE9FIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2QzY7Ozs7Tjs7Ozs7CitGQkRCO0FSQUJJQyBMRVRURVIgWVUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDZDODs7OztOOzs7OzsKK0ZCREM7QVJBQklDIExFVFRFUiBZVSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNkM4Ozs7O047Ozs7OworRkJERDtBUkFCSUMgTEVUVEVSIFUgV0lUSCBIQU1aQSBBQk9WRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjc3Ozs7O047Ozs7OworRkJERTtBUkFCSUMgTEVUVEVSIFZFIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2Q0I7Ozs7Tjs7Ozs7CitGQkRGO0FSQUJJQyBMRVRURVIgVkUgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZDQjs7OztOOzs7OzsKK0ZCRTA7QVJBQklDIExFVFRFUiBLSVJHSElaIE9FIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2QzU7Ozs7Tjs7Ozs7CitGQkUxO0FSQUJJQyBMRVRURVIgS0lSR0hJWiBPRSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNkM1Ozs7O047Ozs7OworRkJFMjtBUkFCSUMgTEVUVEVSIEtJUkdISVogWVUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDZDOTs7OztOOzs7OzsKK0ZCRTM7QVJBQklDIExFVFRFUiBLSVJHSElaIFlVIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2Qzk7Ozs7Tjs7Ozs7CitGQkU0O0FSQUJJQyBMRVRURVIgRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkQwOzs7O047Ozs7OworRkJFNTtBUkFCSUMgTEVUVEVSIEUgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZEMDs7OztOOzs7OzsKK0ZCRTY7QVJBQklDIExFVFRFUiBFIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNkQwOzs7O047Ozs7OworRkJFNztBUkFCSUMgTEVUVEVSIEUgTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNkQwOzs7O047Ozs7OworRkJFODtBUkFCSUMgTEVUVEVSIFVJR0hVUiBLQVpBS0ggS0lSR0hJWiBBTEVGIE1BS1NVUkEgSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDk7Ozs7Tjs7Ozs7CitGQkU5O0FSQUJJQyBMRVRURVIgVUlHSFVSIEtBWkFLSCBLSVJHSElaIEFMRUYgTUFLU1VSQSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDk7Ozs7Tjs7Ozs7CitGQkVBO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyNiAwNjI3Ozs7O047Ozs7OworRkJFQjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBTEVGIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjYgMDYyNzs7OztOOzs7OzsKK0ZCRUM7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyNiAwNkQ1Ozs7O047Ozs7OworRkJFRDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBRSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI2IDA2RDU7Ozs7Tjs7Ozs7CitGQkVFO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFdBVyBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI2IDA2NDg7Ozs7Tjs7Ozs7CitGQkVGO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFdBVyBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI2IDA2NDg7Ozs7Tjs7Ozs7CitGQkYwO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyNiAwNkM3Ozs7O047Ozs7OworRkJGMTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBVIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjYgMDZDNzs7OztOOzs7OzsKK0ZCRjI7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggT0UgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyNiAwNkM2Ozs7O047Ozs7OworRkJGMztBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBPRSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI2IDA2QzY7Ozs7Tjs7Ozs7CitGQkY0O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFlVIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjYgMDZDODs7OztOOzs7OzsKK0ZCRjU7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggWVUgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNiAwNkM4Ozs7O047Ozs7OworRkJGNjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBFIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjYgMDZEMDs7OztOOzs7OzsKK0ZCRjc7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggRSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI2IDA2RDA7Ozs7Tjs7Ozs7CitGQkY4O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEUgSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MjYgMDZEMDs7OztOOzs7OzsKK0ZCRjk7QVJBQklDIExJR0FUVVJFIFVJR0hVUiBLSVJHSElaIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjYgMDY0OTs7OztOOzs7OzsKK0ZCRkE7QVJBQklDIExJR0FUVVJFIFVJR0hVUiBLSVJHSElaIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjYgMDY0OTs7OztOOzs7OzsKK0ZCRkI7QVJBQklDIExJR0FUVVJFIFVJR0hVUiBLSVJHSElaIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUxFRiBNQUtTVVJBIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjI2IDA2NDk7Ozs7Tjs7Ozs7CitGQkZDO0FSQUJJQyBMRVRURVIgRkFSU0kgWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2Q0M7Ozs7Tjs7Ozs7CitGQkZEO0FSQUJJQyBMRVRURVIgRkFSU0kgWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2Q0M7Ozs7Tjs7Ozs7CitGQkZFO0FSQUJJQyBMRVRURVIgRkFSU0kgWUVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNkNDOzs7O047Ozs7OworRkJGRjtBUkFCSUMgTEVUVEVSIEZBUlNJIFlFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2Q0M7Ozs7Tjs7Ozs7CitGQzAwO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyNiAwNjJDOzs7O047Ozs7OworRkMwMTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyNiAwNjJEOzs7O047Ozs7OworRkMwMjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjYgMDY0NTs7OztOOzs7OzsKK0ZDMDM7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjYgMDY0OTs7OztOOzs7OzsKK0ZDMDQ7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjYgMDY0QTs7OztOOzs7OzsKK0ZDMDU7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyOCAwNjJDOzs7O047Ozs7OworRkMwNjtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjggMDYyRDs7OztOOzs7OzsKK0ZDMDc7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyOCAwNjJFOzs7O047Ozs7OworRkMwODtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI4IDA2NDU7Ozs7Tjs7Ozs7CitGQzA5O0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyOCAwNjQ5Ozs7O047Ozs7OworRkMwQTtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjggMDY0QTs7OztOOzs7OzsKK0ZDMEI7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyQSAwNjJDOzs7O047Ozs7OworRkMwQztBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkEgMDYyRDs7OztOOzs7OzsKK0ZDMEQ7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyQSAwNjJFOzs7O047Ozs7OworRkMwRTtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJBIDA2NDU7Ozs7Tjs7Ozs7CitGQzBGO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyQSAwNjQ5Ozs7O047Ozs7OworRkMxMDtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkEgMDY0QTs7OztOOzs7OzsKK0ZDMTE7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkIgMDYyQzs7OztOOzs7OzsKK0ZDMTI7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkIgMDY0NTs7OztOOzs7OzsKK0ZDMTM7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyQiAwNjQ5Ozs7O047Ozs7OworRkMxNDtBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJCIDA2NEE7Ozs7Tjs7Ozs7CitGQzE1O0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkMgMDYyRDs7OztOOzs7OzsKK0ZDMTY7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZDMTc7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyRCAwNjJDOzs7O047Ozs7OworRkMxODtBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJEIDA2NDU7Ozs7Tjs7Ozs7CitGQzE5O0FSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJFIDA2MkM7Ozs7Tjs7Ozs7CitGQzFBO0FSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkUgMDYyRDs7OztOOzs7OzsKK0ZDMUI7QVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZDMUM7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzMgMDYyQzs7OztOOzs7OzsKK0ZDMUQ7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzMyAwNjJEOzs7O047Ozs7OworRkMxRTtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzMyAwNjJFOzs7O047Ozs7OworRkMxRjtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzMyAwNjQ1Ozs7O047Ozs7OworRkMyMDtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzUgMDYyRDs7OztOOzs7OzsKK0ZDMjE7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNSAwNjQ1Ozs7O047Ozs7OworRkMyMjtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM2IDA2MkM7Ozs7Tjs7Ozs7CitGQzIzO0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNiAwNjJEOzs7O047Ozs7OworRkMyNDtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM2IDA2MkU7Ozs7Tjs7Ozs7CitGQzI1O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzYgMDY0NTs7OztOOzs7OzsKK0ZDMjY7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM3IDA2MkQ7Ozs7Tjs7Ozs7CitGQzI3O0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzcgMDY0NTs7OztOOzs7OzsKK0ZDMjg7QVJBQklDIExJR0FUVVJFIFpBSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzOCAwNjQ1Ozs7O047Ozs7OworRkMyOTtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM5IDA2MkM7Ozs7Tjs7Ozs7CitGQzJBO0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzkgMDY0NTs7OztOOzs7OzsKK0ZDMkI7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjNBIDA2MkM7Ozs7Tjs7Ozs7CitGQzJDO0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzQSAwNjQ1Ozs7O047Ozs7OworRkMyRDtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQxIDA2MkM7Ozs7Tjs7Ozs7CitGQzJFO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0MSAwNjJEOzs7O047Ozs7OworRkMyRjtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQxIDA2MkU7Ozs7Tjs7Ozs7CitGQzMwO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDEgMDY0NTs7OztOOzs7OzsKK0ZDMzE7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQxIDA2NDk7Ozs7Tjs7Ozs7CitGQzMyO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0MSAwNjRBOzs7O047Ozs7OworRkMzMztBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDIgMDYyRDs7OztOOzs7OzsKK0ZDMzQ7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0MiAwNjQ1Ozs7O047Ozs7OworRkMzNTtBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDIgMDY0OTs7OztOOzs7OzsKK0ZDMzY7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQyIDA2NEE7Ozs7Tjs7Ozs7CitGQzM3O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBBTEVGIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDMgMDYyNzs7OztOOzs7OzsKK0ZDMzg7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0MyAwNjJDOzs7O047Ozs7OworRkMzOTtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDMgMDYyRDs7OztOOzs7OzsKK0ZDM0E7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0MyAwNjJFOzs7O047Ozs7OworRkMzQjtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTEFNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDMgMDY0NDs7OztOOzs7OzsKK0ZDM0M7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0MyAwNjQ1Ozs7O047Ozs7OworRkMzRDtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDMgMDY0OTs7OztOOzs7OzsKK0ZDM0U7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQzIDA2NEE7Ozs7Tjs7Ozs7CitGQzNGO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDQgMDYyQzs7OztOOzs7OzsKK0ZDNDA7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ0IDA2MkQ7Ozs7Tjs7Ozs7CitGQzQxO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDQgMDYyRTs7OztOOzs7OzsKK0ZDNDI7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NCAwNjQ1Ozs7O047Ozs7OworRkM0MztBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDQgMDY0OTs7OztOOzs7OzsKK0ZDNDQ7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ0IDA2NEE7Ozs7Tjs7Ozs7CitGQzQ1O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ1IDA2MkM7Ozs7Tjs7Ozs7CitGQzQ2O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZDNDc7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDUgMDYyRTs7OztOOzs7OzsKK0ZDNDg7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZDNDk7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NSAwNjQ5Ozs7O047Ozs7OworRkM0QTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGQzRCO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ2IDA2MkM7Ozs7Tjs7Ozs7CitGQzRDO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDYgMDYyRDs7OztOOzs7OzsKK0ZDNEQ7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDYgMDYyRTs7OztOOzs7OzsKK0ZDNEU7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDYgMDY0NTs7OztOOzs7OzsKK0ZDNEY7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NiAwNjQ5Ozs7O047Ozs7OworRkM1MDtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ2IDA2NEE7Ozs7Tjs7Ozs7CitGQzUxO0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDcgMDYyQzs7OztOOzs7OzsKK0ZDNTI7QVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NyAwNjQ1Ozs7O047Ozs7OworRkM1MztBUkFCSUMgTElHQVRVUkUgSEVIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDcgMDY0OTs7OztOOzs7OzsKK0ZDNTQ7QVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ3IDA2NEE7Ozs7Tjs7Ozs7CitGQzU1O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NEEgMDYyQzs7OztOOzs7OzsKK0ZDNTY7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjRBIDA2MkQ7Ozs7Tjs7Ozs7CitGQzU3O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NEEgMDYyRTs7OztOOzs7OzsKK0ZDNTg7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0QSAwNjQ1Ozs7O047Ozs7OworRkM1OTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NEEgMDY0OTs7OztOOzs7OzsKK0ZDNUE7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjRBIDA2NEE7Ozs7Tjs7Ozs7CitGQzVCO0FSQUJJQyBMSUdBVFVSRSBUSEFMIFdJVEggU1VQRVJTQ1JJUFQgQUxFRiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjMwIDA2NzA7Ozs7Tjs7Ozs7CitGQzVDO0FSQUJJQyBMSUdBVFVSRSBSRUggV0lUSCBTVVBFUlNDUklQVCBBTEVGIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzEgMDY3MDs7OztOOzs7OzsKK0ZDNUQ7QVJBQklDIExJR0FUVVJFIEFMRUYgTUFLU1VSQSBXSVRIIFNVUEVSU0NSSVBUIEFMRUYgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0OSAwNjcwOzs7O047Ozs7OworRkM1RTtBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggREFNTUFUQU4gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDAyMCAwNjRDIDA2NTE7Ozs7Tjs7Ozs7CitGQzVGO0FSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBLQVNSQVRBTiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwMDIwIDA2NEQgMDY1MTs7OztOOzs7OzsKK0ZDNjA7QVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIEZBVEhBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDAwMjAgMDY0RSAwNjUxOzs7O047Ozs7OworRkM2MTtBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggREFNTUEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDAyMCAwNjRGIDA2NTE7Ozs7Tjs7Ozs7CitGQzYyO0FSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBLQVNSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwMDIwIDA2NTAgMDY1MTs7OztOOzs7OzsKK0ZDNjM7QVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIFNVUEVSU0NSSVBUIEFMRUYgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDAyMCAwNjUxIDA2NzA7Ozs7Tjs7Ozs7CitGQzY0O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFJFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI2IDA2MzE7Ozs7Tjs7Ozs7CitGQzY1O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFpBSU4gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNiAwNjMyOzs7O047Ozs7OworRkM2NjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjYgMDY0NTs7OztOOzs7OzsKK0ZDNjc7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggTk9PTiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI2IDA2NDY7Ozs7Tjs7Ozs7CitGQzY4O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI2IDA2NDk7Ozs7Tjs7Ozs7CitGQzY5O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI2IDA2NEE7Ozs7Tjs7Ozs7CitGQzZBO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBSRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyOCAwNjMxOzs7O047Ozs7OworRkM2QjtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggWkFJTiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI4IDA2MzI7Ozs7Tjs7Ozs7CitGQzZDO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjggMDY0NTs7OztOOzs7OzsKK0ZDNkQ7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIE5PT04gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyOCAwNjQ2Ozs7O047Ozs7OworRkM2RTtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjggMDY0OTs7OztOOzs7OzsKK0ZDNkY7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI4IDA2NEE7Ozs7Tjs7Ozs7CitGQzcwO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBSRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQSAwNjMxOzs7O047Ozs7OworRkM3MTtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggWkFJTiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJBIDA2MzI7Ozs7Tjs7Ozs7CitGQzcyO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkEgMDY0NTs7OztOOzs7OzsKK0ZDNzM7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE5PT04gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQSAwNjQ2Ozs7O047Ozs7OworRkM3NDtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkEgMDY0OTs7OztOOzs7OzsKK0ZDNzU7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJBIDA2NEE7Ozs7Tjs7Ozs7CitGQzc2O0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggUkVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkIgMDYzMTs7OztOOzs7OzsKK0ZDNzc7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBaQUlOIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkIgMDYzMjs7OztOOzs7OzsKK0ZDNzg7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkIgMDY0NTs7OztOOzs7OzsKK0ZDNzk7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBOT09OIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkIgMDY0Njs7OztOOzs7OzsKK0ZDN0E7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQiAwNjQ5Ozs7O047Ozs7OworRkM3QjtBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJCIDA2NEE7Ozs7Tjs7Ozs7CitGQzdDO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0MSAwNjQ5Ozs7O047Ozs7OworRkM3RDtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDEgMDY0QTs7OztOOzs7OzsKK0ZDN0U7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQyIDA2NDk7Ozs7Tjs7Ozs7CitGQzdGO0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0MiAwNjRBOzs7O047Ozs7OworRkM4MDtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggQUxFRiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQzIDA2Mjc7Ozs7Tjs7Ozs7CitGQzgxO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBMQU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0MyAwNjQ0Ozs7O047Ozs7OworRkM4MjtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQzIDA2NDU7Ozs7Tjs7Ozs7CitGQzgzO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0MyAwNjQ5Ozs7O047Ozs7OworRkM4NDtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDMgMDY0QTs7OztOOzs7OzsKK0ZDODU7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NCAwNjQ1Ozs7O047Ozs7OworRkM4NjtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDQgMDY0OTs7OztOOzs7OzsKK0ZDODc7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ0IDA2NEE7Ozs7Tjs7Ozs7CitGQzg4O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggQUxFRiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ1IDA2Mjc7Ozs7Tjs7Ozs7CitGQzg5O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGQzhBO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggUkVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDYgMDYzMTs7OztOOzs7OzsKK0ZDOEI7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBaQUlOIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDYgMDYzMjs7OztOOzs7OzsKK0ZDOEM7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDYgMDY0NTs7OztOOzs7OzsKK0ZDOEQ7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBOT09OIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDYgMDY0Njs7OztOOzs7OzsKK0ZDOEU7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NiAwNjQ5Ozs7O047Ozs7OworRkM4RjtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ2IDA2NEE7Ozs7Tjs7Ozs7CitGQzkwO0FSQUJJQyBMSUdBVFVSRSBBTEVGIE1BS1NVUkEgV0lUSCBTVVBFUlNDUklQVCBBTEVGIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDkgMDY3MDs7OztOOzs7OzsKK0ZDOTE7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIFJFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjRBIDA2MzE7Ozs7Tjs7Ozs7CitGQzkyO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBaQUlOIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NEEgMDYzMjs7OztOOzs7OzsKK0ZDOTM7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0QSAwNjQ1Ozs7O047Ozs7OworRkM5NDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggTk9PTiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjRBIDA2NDY7Ozs7Tjs7Ozs7CitGQzk1O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0QSAwNjQ5Ozs7O047Ozs7OworRkM5NjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NEEgMDY0QTs7OztOOzs7OzsKK0ZDOTc7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyNiAwNjJDOzs7O047Ozs7OworRkM5ODtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MjYgMDYyRDs7OztOOzs7OzsKK0ZDOTk7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyNiAwNjJFOzs7O047Ozs7OworRkM5QTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjI2IDA2NDU7Ozs7Tjs7Ozs7CitGQzlCO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEhFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyNiAwNjQ3Ozs7O047Ozs7OworRkM5QztBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyOCAwNjJDOzs7O047Ozs7OworRkM5RDtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjI4IDA2MkQ7Ozs7Tjs7Ozs7CitGQzlFO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjI4IDA2MkU7Ozs7Tjs7Ozs7CitGQzlGO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjI4IDA2NDU7Ozs7Tjs7Ozs7CitGQ0EwO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBIRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MjggMDY0Nzs7OztOOzs7OzsKK0ZDQTE7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkEgMDYyQzs7OztOOzs7OzsKK0ZDQTI7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQSAwNjJEOzs7O047Ozs7OworRkNBMztBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQSAwNjJFOzs7O047Ozs7OworRkNBNDtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQSAwNjQ1Ozs7O047Ozs7OworRkNBNTtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSEVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJBIDA2NDc7Ozs7Tjs7Ozs7CitGQ0E2O0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQiAwNjQ1Ozs7O047Ozs7OworRkNBNztBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQyAwNjJEOzs7O047Ozs7OworRkNBODtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZDQTk7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkQgMDYyQzs7OztOOzs7OzsKK0ZDQUE7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkQgMDY0NTs7OztOOzs7OzsKK0ZDQUI7QVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJFIDA2MkM7Ozs7Tjs7Ozs7CitGQ0FDO0FSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyRSAwNjQ1Ozs7O047Ozs7OworRkNBRDtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzMgMDYyQzs7OztOOzs7OzsKK0ZDQUU7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzMgMDYyRDs7OztOOzs7OzsKK0ZDQUY7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjMzIDA2MkU7Ozs7Tjs7Ozs7CitGQ0IwO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzMyAwNjQ1Ozs7O047Ozs7OworRkNCMTtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM1IDA2MkQ7Ozs7Tjs7Ozs7CitGQ0IyO0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM1IDA2MkU7Ozs7Tjs7Ozs7CitGQ0IzO0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM1IDA2NDU7Ozs7Tjs7Ozs7CitGQ0I0O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM2IDA2MkM7Ozs7Tjs7Ozs7CitGQ0I1O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzYgMDYyRDs7OztOOzs7OzsKK0ZDQjY7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzYgMDYyRTs7OztOOzs7OzsKK0ZDQjc7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzYgMDY0NTs7OztOOzs7OzsKK0ZDQjg7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNyAwNjJEOzs7O047Ozs7OworRkNCOTtBUkFCSUMgTElHQVRVUkUgWkFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzOCAwNjQ1Ozs7O047Ozs7OworRkNCQTtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzOSAwNjJDOzs7O047Ozs7OworRkNCQjtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzOSAwNjQ1Ozs7O047Ozs7OworRkNCQztBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjNBIDA2MkM7Ozs7Tjs7Ozs7CitGQ0JEO0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2M0EgMDY0NTs7OztOOzs7OzsKK0ZDQkU7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDEgMDYyQzs7OztOOzs7OzsKK0ZDQkY7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0MSAwNjJEOzs7O047Ozs7OworRkNDMDtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0MSAwNjJFOzs7O047Ozs7OworRkNDMTtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0MSAwNjQ1Ozs7O047Ozs7OworRkNDMjtBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQyIDA2MkQ7Ozs7Tjs7Ozs7CitGQ0MzO0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQyIDA2NDU7Ozs7Tjs7Ozs7CitGQ0M0O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQzIDA2MkM7Ozs7Tjs7Ozs7CitGQ0M1O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDMgMDYyRDs7OztOOzs7OzsKK0ZDQzY7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDMgMDYyRTs7OztOOzs7OzsKK0ZDQzc7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIExBTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0MyAwNjQ0Ozs7O047Ozs7OworRkNDODtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0MyAwNjQ1Ozs7O047Ozs7OworRkNDOTtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NCAwNjJDOzs7O047Ozs7OworRkNDQTtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ0IDA2MkQ7Ozs7Tjs7Ozs7CitGQ0NCO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ0IDA2MkU7Ozs7Tjs7Ozs7CitGQ0NDO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ0IDA2NDU7Ozs7Tjs7Ozs7CitGQ0NEO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBIRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDQgMDY0Nzs7OztOOzs7OzsKK0ZDQ0U7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ1IDA2MkM7Ozs7Tjs7Ozs7CitGQ0NGO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGQ0QwO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NSAwNjJFOzs7O047Ozs7OworRkNEMTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZDRDI7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ2IDA2MkM7Ozs7Tjs7Ozs7CitGQ0QzO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ2IDA2MkQ7Ozs7Tjs7Ozs7CitGQ0Q0O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NiAwNjJFOzs7O047Ozs7OworRkNENTtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDYgMDY0NTs7OztOOzs7OzsKK0ZDRDY7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBIRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDYgMDY0Nzs7OztOOzs7OzsKK0ZDRDc7QVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDcgMDYyQzs7OztOOzs7OzsKK0ZDRDg7QVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDcgMDY0NTs7OztOOzs7OzsKK0ZDRDk7QVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIFNVUEVSU0NSSVBUIEFMRUYgSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDcgMDY3MDs7OztOOzs7OzsKK0ZDREE7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NEEgMDYyQzs7OztOOzs7OzsKK0ZDREI7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0QSAwNjJEOzs7O047Ozs7OworRkNEQztBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0QSAwNjJFOzs7O047Ozs7OworRkNERDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0QSAwNjQ1Ozs7O047Ozs7OworRkNERTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjRBIDA2NDc7Ozs7Tjs7Ozs7CitGQ0RGO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjI2IDA2NDU7Ozs7Tjs7Ozs7CitGQ0UwO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEhFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MjYgMDY0Nzs7OztOOzs7OzsKK0ZDRTE7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjI4IDA2NDU7Ozs7Tjs7Ozs7CitGQ0UyO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBIRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjI4IDA2NDc7Ozs7Tjs7Ozs7CitGQ0UzO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYyQSAwNjQ1Ozs7O047Ozs7OworRkNFNDtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYyQSAwNjQ3Ozs7O047Ozs7OworRkNFNTtBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjJCIDA2NDU7Ozs7Tjs7Ozs7CitGQ0U2O0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggSEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYyQiAwNjQ3Ozs7O047Ozs7OworRkNFNztBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjMzIDA2NDU7Ozs7Tjs7Ozs7CitGQ0U4O0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzMyAwNjQ3Ozs7O047Ozs7OworRkNFOTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzNCAwNjQ1Ozs7O047Ozs7OworRkNFQTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjM0IDA2NDc7Ozs7Tjs7Ozs7CitGQ0VCO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBMQU0gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjQzIDA2NDQ7Ozs7Tjs7Ozs7CitGQ0VDO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0MyAwNjQ1Ozs7O047Ozs7OworRkNFRDtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDQgMDY0NTs7OztOOzs7OzsKK0ZDRUU7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0NiAwNjQ1Ozs7O047Ozs7OworRkNFRjtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEhFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDYgMDY0Nzs7OztOOzs7OzsKK0ZDRjA7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjRBIDA2NDU7Ozs7Tjs7Ozs7CitGQ0YxO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjRBIDA2NDc7Ozs7Tjs7Ozs7CitGQ0YyO0FSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBGQVRIQSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDAgMDY0RSAwNjUxOzs7O047Ozs7OworRkNGMztBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggREFNTUEgTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjQwIDA2NEYgMDY1MTs7OztOOzs7OzsKK0ZDRjQ7QVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIEtBU1JBIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0MCAwNjUwIDA2NTE7Ozs7Tjs7Ozs7CitGQ0Y1O0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNyAwNjQ5Ozs7O047Ozs7OworRkNGNjtBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzcgMDY0QTs7OztOOzs7OzsKK0ZDRjc7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM5IDA2NDk7Ozs7Tjs7Ozs7CitGQ0Y4O0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzOSAwNjRBOzs7O047Ozs7OworRkNGOTtBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzQSAwNjQ5Ozs7O047Ozs7OworRkNGQTtBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzQSAwNjRBOzs7O047Ozs7OworRkNGQjtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjMzIDA2NDk7Ozs7Tjs7Ozs7CitGQ0ZDO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzMgMDY0QTs7OztOOzs7OzsKK0ZDRkQ7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzQgMDY0OTs7OztOOzs7OzsKK0ZDRkU7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzQgMDY0QTs7OztOOzs7OzsKK0ZDRkY7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJEIDA2NDk7Ozs7Tjs7Ozs7CitGRDAwO0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyRCAwNjRBOzs7O047Ozs7OworRkQwMTtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJDIDA2NDk7Ozs7Tjs7Ozs7CitGRDAyO0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkMgMDY0QTs7OztOOzs7OzsKK0ZEMDM7QVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyRSAwNjQ5Ozs7O047Ozs7OworRkQwNDtBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJFIDA2NEE7Ozs7Tjs7Ozs7CitGRDA1O0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNSAwNjQ5Ozs7O047Ozs7OworRkQwNjtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzUgMDY0QTs7OztOOzs7OzsKK0ZEMDc7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM2IDA2NDk7Ozs7Tjs7Ozs7CitGRDA4O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNiAwNjRBOzs7O047Ozs7OworRkQwOTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzQgMDYyQzs7OztOOzs7OzsKK0ZEMEE7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzQgMDYyRDs7OztOOzs7OzsKK0ZEMEI7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM0IDA2MkU7Ozs7Tjs7Ozs7CitGRDBDO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNCAwNjQ1Ozs7O047Ozs7OworRkQwRDtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBSRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNCAwNjMxOzs7O047Ozs7OworRkQwRTtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIFJFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjMzIDA2MzE7Ozs7Tjs7Ozs7CitGRDBGO0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBSRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNSAwNjMxOzs7O047Ozs7OworRkQxMDtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggUkVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzYgMDYzMTs7OztOOzs7OzsKK0ZEMTE7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM3IDA2NDk7Ozs7Tjs7Ozs7CitGRDEyO0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNyAwNjRBOzs7O047Ozs7OworRkQxMztBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzkgMDY0OTs7OztOOzs7OzsKK0ZEMTQ7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM5IDA2NEE7Ozs7Tjs7Ozs7CitGRDE1O0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjNBIDA2NDk7Ozs7Tjs7Ozs7CitGRDE2O0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjNBIDA2NEE7Ozs7Tjs7Ozs7CitGRDE3O0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzMgMDY0OTs7OztOOzs7OzsKK0ZEMTg7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzMyAwNjRBOzs7O047Ozs7OworRkQxOTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNCAwNjQ5Ozs7O047Ozs7OworRkQxQTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNCAwNjRBOzs7O047Ozs7OworRkQxQjtBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkQgMDY0OTs7OztOOzs7OzsKK0ZEMUM7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJEIDA2NEE7Ozs7Tjs7Ozs7CitGRDFEO0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkMgMDY0OTs7OztOOzs7OzsKK0ZEMUU7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQyAwNjRBOzs7O047Ozs7OworRkQxRjtBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJFIDA2NDk7Ozs7Tjs7Ozs7CitGRDIwO0FSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkUgMDY0QTs7OztOOzs7OzsKK0ZEMjE7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM1IDA2NDk7Ozs7Tjs7Ozs7CitGRDIyO0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNSAwNjRBOzs7O047Ozs7OworRkQyMztBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzYgMDY0OTs7OztOOzs7OzsKK0ZEMjQ7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM2IDA2NEE7Ozs7Tjs7Ozs7CitGRDI1O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEpFRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNCAwNjJDOzs7O047Ozs7OworRkQyNjtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIQUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNCAwNjJEOzs7O047Ozs7OworRkQyNztBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBLSEFIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzQgMDYyRTs7OztOOzs7OzsKK0ZEMjg7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM0IDA2NDU7Ozs7Tjs7Ozs7CitGRDI5O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIFJFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM0IDA2MzE7Ozs7Tjs7Ozs7CitGRDJBO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggUkVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzMgMDYzMTs7OztOOzs7OzsKK0ZEMkI7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIFJFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM1IDA2MzE7Ozs7Tjs7Ozs7CitGRDJDO0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBSRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNiAwNjMxOzs7O047Ozs7OworRkQyRDtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM0IDA2MkM7Ozs7Tjs7Ozs7CitGRDJFO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNCAwNjJEOzs7O047Ozs7OworRkQyRjtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM0IDA2MkU7Ozs7Tjs7Ozs7CitGRDMwO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzQgMDY0NTs7OztOOzs7OzsKK0ZEMzE7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBIRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzMgMDY0Nzs7OztOOzs7OzsKK0ZEMzI7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM0IDA2NDc7Ozs7Tjs7Ozs7CitGRDMzO0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM3IDA2NDU7Ozs7Tjs7Ozs7CitGRDM0O0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSkVFTSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MzMgMDYyQzs7OztOOzs7OzsKK0ZEMzU7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBIQUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjMzIDA2MkQ7Ozs7Tjs7Ozs7CitGRDM2O0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggS0hBSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MzMgMDYyRTs7OztOOzs7OzsKK0ZEMzc7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSkVFTSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MzQgMDYyQzs7OztOOzs7OzsKK0ZEMzg7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEFIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzNCAwNjJEOzs7O047Ozs7OworRkQzOTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBLSEFIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzNCAwNjJFOzs7O047Ozs7OworRkQzQTtBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MzcgMDY0NTs7OztOOzs7OzsKK0ZEM0I7QVJBQklDIExJR0FUVVJFIFpBSCBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjM4IDA2NDU7Ozs7Tjs7Ozs7CitGRDNDO0FSQUJJQyBMSUdBVFVSRSBBTEVGIFdJVEggRkFUSEFUQU4gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNyAwNjRCOzs7O047Ozs7OworRkQzRDtBUkFCSUMgTElHQVRVUkUgQUxFRiBXSVRIIEZBVEhBVEFOIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjcgMDY0Qjs7OztOOzs7OzsKK0ZEM0U7T1JOQVRFIExFRlQgUEFSRU5USEVTSVM7UHM7MDtPTjs7Ozs7Tjs7Ozs7CitGRDNGO09STkFURSBSSUdIVCBQQVJFTlRIRVNJUztQZTswO09OOzs7OztOOzs7OzsKK0ZENTA7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEpFRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJBIDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZENTE7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEhBSCBXSVRIIEpFRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQSAwNjJEIDA2MkM7Ozs7Tjs7Ozs7CitGRDUyO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBIQUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJBIDA2MkQgMDYyQzs7OztOOzs7OzsKK0ZENTM7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEhBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkEgMDYyRCAwNjQ1Ozs7O047Ozs7OworRkQ1NDtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkEgMDYyRSAwNjQ1Ozs7O047Ozs7OworRkQ1NTtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkEgMDY0NSAwNjJDOzs7O047Ozs7OworRkQ1NjtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQSAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDU3O0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQSAwNjQ1IDA2MkU7Ozs7Tjs7Ozs7CitGRDU4O0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggTUVFTSBXSVRIIEhBSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJDIDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZENTk7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBNRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJDIDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZENUE7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyRCAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGRDVCO0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBNRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkQgMDY0NSAwNjQ5Ozs7O047Ozs7OworRkQ1QztBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEhBSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzMgMDYyRCAwNjJDOzs7O047Ozs7OworRkQ1RDtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEpFRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzMgMDYyQyAwNjJEOzs7O047Ozs7OworRkQ1RTtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEpFRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzMyAwNjJDIDA2NDk7Ozs7Tjs7Ozs7CitGRDVGO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBXSVRIIEhBSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjMzIDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZENjA7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBNRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjMzIDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZENjE7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBNRUVNIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzMyAwNjQ1IDA2MkM7Ozs7Tjs7Ozs7CitGRDYyO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzMyAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDYzO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzMgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ2NDtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggSEFIIFdJVEggSEFIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzUgMDYyRCAwNjJEOzs7O047Ozs7OworRkQ2NTtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggSEFIIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM1IDA2MkQgMDYyRDs7OztOOzs7OzsKK0ZENjY7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzUgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ2NztBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIQUggV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzQgMDYyRCAwNjQ1Ozs7O047Ozs7OworRkQ2ODtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM0IDA2MkQgMDY0NTs7OztOOzs7OzsKK0ZENjk7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM0IDA2MkMgMDY0QTs7OztOOzs7OzsKK0ZENkE7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggTUVFTSBXSVRIIEtIQUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNCAwNjQ1IDA2MkU7Ozs7Tjs7Ozs7CitGRDZCO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM0IDA2NDUgMDYyRTs7OztOOzs7OzsKK0ZENkM7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNCAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDZEO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM0IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZENkU7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEhBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM2IDA2MkQgMDY0OTs7OztOOzs7OzsKK0ZENkY7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEtIQUggV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzYgMDYyRSAwNjQ1Ozs7O047Ozs7OworRkQ3MDtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzYgMDYyRSAwNjQ1Ozs7O047Ozs7OworRkQ3MTtBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggTUVFTSBXSVRIIEhBSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM3IDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZENzI7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzcgMDY0NSAwNjJEOzs7O047Ozs7OworRkQ3MztBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggTUVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzcgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ3NDtBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM3IDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZENzU7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIEpFRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzkgMDYyQyAwNjQ1Ozs7O047Ozs7OworRkQ3NjtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzOSAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDc3O0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzOSAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDc4O0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBNRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzkgMDY0NSAwNjQ5Ozs7O047Ozs7OworRkQ3OTtBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjNBIDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZEN0E7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjNBIDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZEN0I7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjNBIDA2NDUgMDY0OTs7OztOOzs7OzsKK0ZEN0M7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEtIQUggV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDEgMDYyRSAwNjQ1Ozs7O047Ozs7OworRkQ3RDtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDEgMDYyRSAwNjQ1Ozs7O047Ozs7OworRkQ3RTtBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggTUVFTSBXSVRIIEhBSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQyIDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZEN0Y7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDIgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ4MDtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSEFIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ0IDA2MkQgMDY0NTs7OztOOzs7OzsKK0ZEODE7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ0IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEODI7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEhBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ0IDA2MkQgMDY0OTs7OztOOzs7OzsKK0ZEODM7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ0IDA2MkMgMDYyQzs7OztOOzs7OzsKK0ZEODQ7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gV0lUSCBKRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDQgMDYyQyAwNjJDOzs7O047Ozs7OworRkQ4NTtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggS0hBSCBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NCAwNjJFIDA2NDU7Ozs7Tjs7Ozs7CitGRDg2O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBLSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NCAwNjJFIDA2NDU7Ozs7Tjs7Ozs7CitGRDg3O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIFdJVEggSEFIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDQgMDY0NSAwNjJEOzs7O047Ozs7OworRkQ4ODtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NCAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDg5O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSEFIIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NSAwNjJEIDA2MkM7Ozs7Tjs7Ozs7CitGRDhBO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NSAwNjJEIDA2NDU7Ozs7Tjs7Ozs7CitGRDhCO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDUgMDYyRCAwNjRBOzs7O047Ozs7OworRkQ4QztBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEpFRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDUgMDYyQyAwNjJEOzs7O047Ozs7OworRkQ4RDtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEpFRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ1IDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZEOEU7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBLSEFIIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NSAwNjJFIDA2MkM7Ozs7Tjs7Ozs7CitGRDhGO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDUgMDYyRSAwNjQ1Ozs7O047Ozs7OworRkQ5MjtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEpFRU0gV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ1IDA2MkMgMDYyRTs7OztOOzs7OzsKK0ZEOTM7QVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIE1FRU0gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ3IDA2NDUgMDYyQzs7OztOOzs7OzsKK0ZEOTQ7QVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ3IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZEOTU7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ2IDA2MkQgMDY0NTs7OztOOzs7OzsKK0ZEOTY7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NiAwNjJEIDA2NDk7Ozs7Tjs7Ozs7CitGRDk3O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSkVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NiAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGRDk4O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSkVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDYgMDYyQyAwNjQ1Ozs7O047Ozs7OworRkQ5OTtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NiAwNjJDIDA2NDk7Ozs7Tjs7Ozs7CitGRDlBO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ2IDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZEOUI7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBNRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDYgMDY0NSAwNjQ5Ozs7O047Ozs7OworRkQ5QztBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0QSAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDlEO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0QSAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDlFO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBLSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjggMDYyRSAwNjRBOzs7O047Ozs7OworRkQ5RjtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJBIDA2MkMgMDY0QTs7OztOOzs7OzsKK0ZEQTA7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEpFRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQSAwNjJDIDA2NDk7Ozs7Tjs7Ozs7CitGREExO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBLSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkEgMDYyRSAwNjRBOzs7O047Ozs7OworRkRBMjtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggS0hBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJBIDA2MkUgMDY0OTs7OztOOzs7OzsKK0ZEQTM7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQSAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGREE0O0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkEgMDY0NSAwNjQ5Ozs7O047Ozs7OworRkRBNTtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQyAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGREE2O0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggSEFIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkMgMDYyRCAwNjQ5Ozs7O047Ozs7OworRkRBNztBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIE1FRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQyAwNjQ1IDA2NDk7Ozs7Tjs7Ozs7CitGREE4O0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggS0hBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjMzIDA2MkUgMDY0OTs7OztOOzs7OzsKK0ZEQTk7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM1IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEQUE7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzQgMDYyRCAwNjRBOzs7O047Ozs7OworRkRBQjtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzYgMDYyRCAwNjRBOzs7O047Ozs7OworRkRBQztBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ0IDA2MkMgMDY0QTs7OztOOzs7OzsKK0ZEQUQ7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NCAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGREFFO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0QSAwNjJEIDA2NEE7Ozs7Tjs7Ozs7CitGREFGO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBKRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NEEgMDYyQyAwNjRBOzs7O047Ozs7OworRkRCMDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjRBIDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZEQjE7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDUgMDY0NSAwNjRBOzs7O047Ozs7OworRkRCMjtBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQyIDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZEQjM7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NiAwNjJEIDA2NEE7Ozs7Tjs7Ozs7CitGREI0O0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBNRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQyIDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZEQjU7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEhBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDQgMDYyRCAwNjQ1Ozs7O047Ozs7OworRkRCNjtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM5IDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZEQjc7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0MyAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGREI4O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSkVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NiAwNjJDIDA2MkQ7Ozs7Tjs7Ozs7CitGREI5O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggS0hBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ1IDA2MkUgMDY0QTs7OztOOzs7OzsKK0ZEQkE7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ0IDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZEQkI7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDMgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkRCQztBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSkVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NCAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGREJEO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSkVFTSBXSVRIIEhBSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ2IDA2MkMgMDYyRDs7OztOOzs7OzsKK0ZEQkU7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQyAwNjJEIDA2NEE7Ozs7Tjs7Ozs7CitGREJGO0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBKRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkQgMDYyQyAwNjRBOzs7O047Ozs7OworRkRDMDtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NSAwNjJDIDA2NEE7Ozs7Tjs7Ozs7CitGREMxO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDEgMDY0NSAwNjRBOzs7O047Ozs7OworRkRDMjtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjggMDYyRCAwNjRBOzs7O047Ozs7OworRkRDMztBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTUVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDMgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkRDNDtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggSkVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzkgMDYyQyAwNjQ1Ozs7O047Ozs7OworRkRDNTtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggTUVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzUgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkRDNjtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEtIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzMyAwNjJFIDA2NEE7Ozs7Tjs7Ozs7CitGREM3O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ2IDA2MkMgMDY0QTs7OztOOzs7OzsKK0ZERjA7QVJBQklDIExJR0FUVVJFIFNBTExBIFVTRUQgQVMgS09SQU5JQyBTVE9QIFNJR04gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNSAwNjQ0IDA2RDI7Ozs7Tjs7Ozs7CitGREYxO0FSQUJJQyBMSUdBVFVSRSBRQUxBIFVTRUQgQVMgS09SQU5JQyBTVE9QIFNJR04gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0MiAwNjQ0IDA2RDI7Ozs7Tjs7Ozs7CitGREYyO0FSQUJJQyBMSUdBVFVSRSBBTExBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI3IDA2NDQgMDY0NCAwNjQ3Ozs7O047Ozs7OworRkRGMztBUkFCSUMgTElHQVRVUkUgQUtCQVIgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyNyAwNjQzIDA2MjggMDYzMTs7OztOOzs7OzsKK0ZERjQ7QVJBQklDIExJR0FUVVJFIE1PSEFNTUFEIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDUgMDYyRCAwNjQ1IDA2MkY7Ozs7Tjs7Ozs7CitGREY1O0FSQUJJQyBMSUdBVFVSRSBTQUxBTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM1IDA2NDQgMDYzOSAwNjQ1Ozs7O047Ozs7OworRkRGNjtBUkFCSUMgTElHQVRVUkUgUkFTT1VMIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzEgMDYzMyAwNjQ4IDA2NDQ7Ozs7Tjs7Ozs7CitGREY3O0FSQUJJQyBMSUdBVFVSRSBBTEFZSEUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzOSAwNjQ0IDA2NEEgMDY0Nzs7OztOOzs7OzsKK0ZERjg7QVJBQklDIExJR0FUVVJFIFdBU0FMTEFNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDggMDYzMyAwNjQ0IDA2NDU7Ozs7Tjs7Ozs7CitGREY5O0FSQUJJQyBMSUdBVFVSRSBTQUxMQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM1IDA2NDQgMDY0OTs7OztOOzs7OzsKK0ZERkE7QVJBQklDIExJR0FUVVJFIFNBTExBTExBSE9VIEFMQVlIRSBXQVNBTExBTTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNSAwNjQ0IDA2NDkgMDAyMCAwNjI3IDA2NDQgMDY0NCAwNjQ3IDAwMjAgMDYzOSAwNjQ0IDA2NEEgMDY0NyAwMDIwIDA2NDggMDYzMyAwNjQ0IDA2NDU7Ozs7TjtBUkFCSUMgTEVUVEVSIFNBTExBTExBSE9VIEFMQVlIRSBXQVNBTExBTTs7OzsKK0ZERkI7QVJBQklDIExJR0FUVVJFIEpBTExBSkFMQUxPVUhPVTtMbzswO0FMOzxpc29sYXRlZD4gMDYyQyAwNjQ0IDAwMjAgMDYyQyAwNjQ0IDA2MjcgMDY0NCAwNjQ3Ozs7O047QVJBQklDIExFVFRFUiBKQUxMQUpBTEFMT1VIT1U7Ozs7CitGRTIwO0NPTUJJTklORyBMSUdBVFVSRSBMRUZUIEhBTEY7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CitGRTIxO0NPTUJJTklORyBMSUdBVFVSRSBSSUdIVCBIQUxGO01uOzIzMDtOU007Ozs7O047Ozs7OworRkUyMjtDT01CSU5JTkcgRE9VQkxFIFRJTERFIExFRlQgSEFMRjtNbjsyMzA7TlNNOzs7OztOOzs7OzsKK0ZFMjM7Q09NQklOSU5HIERPVUJMRSBUSUxERSBSSUdIVCBIQUxGO01uOzIzMDtOU007Ozs7O047Ozs7OworRkUzMDtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgVFdPIERPVCBMRUFERVI7UG87MDtPTjs8dmVydGljYWw+IDIwMjU7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgVFdPIERPVCBMRUFERVI7Ozs7CitGRTMxO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBFTSBEQVNIO1BkOzA7T047PHZlcnRpY2FsPiAyMDE0Ozs7O047R0xZUEggRk9SIFZFUlRJQ0FMIEVNIERBU0g7Ozs7CitGRTMyO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBFTiBEQVNIO1BkOzA7T047PHZlcnRpY2FsPiAyMDEzOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIEVOIERBU0g7Ozs7CitGRTMzO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMT1cgTElORTtQYzswO09OOzx2ZXJ0aWNhbD4gMDA1Rjs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBTUEFDSU5HIFVOREVSU0NPUkU7Ozs7CitGRTM0O1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBXQVZZIExPVyBMSU5FO1BjOzA7T047PHZlcnRpY2FsPiAwMDVGOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIFNQQUNJTkcgV0FWWSBVTkRFUlNDT1JFOzs7OworRkUzNTtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBQQVJFTlRIRVNJUztQczswO09OOzx2ZXJ0aWNhbD4gMDAyODs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBPUEVOSU5HIFBBUkVOVEhFU0lTOzs7OworRkUzNjtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgUEFSRU5USEVTSVM7UGU7MDtPTjs8dmVydGljYWw+IDAwMjk7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgQ0xPU0lORyBQQVJFTlRIRVNJUzs7OzsKK0ZFMzc7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgQ1VSTFkgQlJBQ0tFVDtQczswO09OOzx2ZXJ0aWNhbD4gMDA3Qjs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBPUEVOSU5HIENVUkxZIEJSQUNLRVQ7Ozs7CitGRTM4O1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBDVVJMWSBCUkFDS0VUO1BlOzA7T047PHZlcnRpY2FsPiAwMDdEOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIENMT1NJTkcgQ1VSTFkgQlJBQ0tFVDs7OzsKK0ZFMzk7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQczswO09OOzx2ZXJ0aWNhbD4gMzAxNDs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBPUEVOSU5HIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7Ozs7CitGRTNBO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUO1BlOzA7T047PHZlcnRpY2FsPiAzMDE1Ozs7O047R0xZUEggRk9SIFZFUlRJQ0FMIENMT1NJTkcgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDs7OzsKK0ZFM0I7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUO1BzOzA7T047PHZlcnRpY2FsPiAzMDEwOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIE9QRU5JTkcgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUOzs7OworRkUzQztQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUO1BlOzA7T047PHZlcnRpY2FsPiAzMDExOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIENMT1NJTkcgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUOzs7OworRkUzRDtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBET1VCTEUgQU5HTEUgQlJBQ0tFVDtQczswO09OOzx2ZXJ0aWNhbD4gMzAwQTs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBPUEVOSU5HIERPVUJMRSBBTkdMRSBCUkFDS0VUOzs7OworRkUzRTtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgRE9VQkxFIEFOR0xFIEJSQUNLRVQ7UGU7MDtPTjs8dmVydGljYWw+IDMwMEI7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgQ0xPU0lORyBET1VCTEUgQU5HTEUgQlJBQ0tFVDs7OzsKK0ZFM0Y7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgQU5HTEUgQlJBQ0tFVDtQczswO09OOzx2ZXJ0aWNhbD4gMzAwODs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBPUEVOSU5HIEFOR0xFIEJSQUNLRVQ7Ozs7CitGRTQwO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBBTkdMRSBCUkFDS0VUO1BlOzA7T047PHZlcnRpY2FsPiAzMDA5Ozs7O047R0xZUEggRk9SIFZFUlRJQ0FMIENMT1NJTkcgQU5HTEUgQlJBQ0tFVDs7OzsKK0ZFNDE7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgQ09STkVSIEJSQUNLRVQ7UHM7MDtPTjs8dmVydGljYWw+IDMwMEM7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgT1BFTklORyBDT1JORVIgQlJBQ0tFVDs7OzsKK0ZFNDI7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFJJR0hUIENPUk5FUiBCUkFDS0VUO1BlOzA7T047PHZlcnRpY2FsPiAzMDBEOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIENMT1NJTkcgQ09STkVSIEJSQUNLRVQ7Ozs7CitGRTQzO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIFdISVRFIENPUk5FUiBCUkFDS0VUO1BzOzA7T047PHZlcnRpY2FsPiAzMDBFOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIE9QRU5JTkcgV0hJVEUgQ09STkVSIEJSQUNLRVQ7Ozs7CitGRTQ0O1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBXSElURSBDT1JORVIgQlJBQ0tFVDtQZTswO09OOzx2ZXJ0aWNhbD4gMzAwRjs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBDTE9TSU5HIFdISVRFIENPUk5FUiBCUkFDS0VUOzs7OworRkU0OTtEQVNIRUQgT1ZFUkxJTkU7UG87MDtPTjs8Y29tcGF0PiAyMDNFOzs7O047U1BBQ0lORyBEQVNIRUQgT1ZFUlNDT1JFOzs7OworRkU0QTtDRU5UUkVMSU5FIE9WRVJMSU5FO1BvOzA7T047PGNvbXBhdD4gMjAzRTs7OztOO1NQQUNJTkcgQ0VOVEVSTElORSBPVkVSU0NPUkU7Ozs7CitGRTRCO1dBVlkgT1ZFUkxJTkU7UG87MDtPTjs8Y29tcGF0PiAyMDNFOzs7O047U1BBQ0lORyBXQVZZIE9WRVJTQ09SRTs7OzsKK0ZFNEM7RE9VQkxFIFdBVlkgT1ZFUkxJTkU7UG87MDtPTjs8Y29tcGF0PiAyMDNFOzs7O047U1BBQ0lORyBET1VCTEUgV0FWWSBPVkVSU0NPUkU7Ozs7CitGRTREO0RBU0hFRCBMT1cgTElORTtQYzswO09OOzxjb21wYXQ+IDAwNUY7Ozs7TjtTUEFDSU5HIERBU0hFRCBVTkRFUlNDT1JFOzs7OworRkU0RTtDRU5UUkVMSU5FIExPVyBMSU5FO1BjOzA7T047PGNvbXBhdD4gMDA1Rjs7OztOO1NQQUNJTkcgQ0VOVEVSTElORSBVTkRFUlNDT1JFOzs7OworRkU0RjtXQVZZIExPVyBMSU5FO1BjOzA7T047PGNvbXBhdD4gMDA1Rjs7OztOO1NQQUNJTkcgV0FWWSBVTkRFUlNDT1JFOzs7OworRkU1MDtTTUFMTCBDT01NQTtQbzswO0NTOzxzbWFsbD4gMDAyQzs7OztOOzs7OzsKK0ZFNTE7U01BTEwgSURFT0dSQVBISUMgQ09NTUE7UG87MDtPTjs8c21hbGw+IDMwMDE7Ozs7Tjs7Ozs7CitGRTUyO1NNQUxMIEZVTEwgU1RPUDtQbzswO0NTOzxzbWFsbD4gMDAyRTs7OztOO1NNQUxMIFBFUklPRDs7OzsKK0ZFNTQ7U01BTEwgU0VNSUNPTE9OO1BvOzA7T047PHNtYWxsPiAwMDNCOzs7O047Ozs7OworRkU1NTtTTUFMTCBDT0xPTjtQbzswO0NTOzxzbWFsbD4gMDAzQTs7OztOOzs7OzsKK0ZFNTY7U01BTEwgUVVFU1RJT04gTUFSSztQbzswO09OOzxzbWFsbD4gMDAzRjs7OztOOzs7OzsKK0ZFNTc7U01BTEwgRVhDTEFNQVRJT04gTUFSSztQbzswO09OOzxzbWFsbD4gMDAyMTs7OztOOzs7OzsKK0ZFNTg7U01BTEwgRU0gREFTSDtQZDswO09OOzxzbWFsbD4gMjAxNDs7OztOOzs7OzsKK0ZFNTk7U01BTEwgTEVGVCBQQVJFTlRIRVNJUztQczswO09OOzxzbWFsbD4gMDAyODs7OztOO1NNQUxMIE9QRU5JTkcgUEFSRU5USEVTSVM7Ozs7CitGRTVBO1NNQUxMIFJJR0hUIFBBUkVOVEhFU0lTO1BlOzA7T047PHNtYWxsPiAwMDI5Ozs7O047U01BTEwgQ0xPU0lORyBQQVJFTlRIRVNJUzs7OzsKK0ZFNUI7U01BTEwgTEVGVCBDVVJMWSBCUkFDS0VUO1BzOzA7T047PHNtYWxsPiAwMDdCOzs7O047U01BTEwgT1BFTklORyBDVVJMWSBCUkFDS0VUOzs7OworRkU1QztTTUFMTCBSSUdIVCBDVVJMWSBCUkFDS0VUO1BlOzA7T047PHNtYWxsPiAwMDdEOzs7O047U01BTEwgQ0xPU0lORyBDVVJMWSBCUkFDS0VUOzs7OworRkU1RDtTTUFMTCBMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7UHM7MDtPTjs8c21hbGw+IDMwMTQ7Ozs7TjtTTUFMTCBPUEVOSU5HIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7Ozs7CitGRTVFO1NNQUxMIFJJR0hUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7UGU7MDtPTjs8c21hbGw+IDMwMTU7Ozs7TjtTTUFMTCBDTE9TSU5HIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7Ozs7CitGRTVGO1NNQUxMIE5VTUJFUiBTSUdOO1BvOzA7RVQ7PHNtYWxsPiAwMDIzOzs7O047Ozs7OworRkU2MDtTTUFMTCBBTVBFUlNBTkQ7UG87MDtPTjs8c21hbGw+IDAwMjY7Ozs7Tjs7Ozs7CitGRTYxO1NNQUxMIEFTVEVSSVNLO1BvOzA7T047PHNtYWxsPiAwMDJBOzs7O047Ozs7OworRkU2MjtTTUFMTCBQTFVTIFNJR047U207MDtFVDs8c21hbGw+IDAwMkI7Ozs7Tjs7Ozs7CitGRTYzO1NNQUxMIEhZUEhFTi1NSU5VUztQZDswO0VUOzxzbWFsbD4gMDAyRDs7OztOOzs7OzsKK0ZFNjQ7U01BTEwgTEVTUy1USEFOIFNJR047U207MDtPTjs8c21hbGw+IDAwM0M7Ozs7Tjs7Ozs7CitGRTY1O1NNQUxMIEdSRUFURVItVEhBTiBTSUdOO1NtOzA7T047PHNtYWxsPiAwMDNFOzs7O047Ozs7OworRkU2NjtTTUFMTCBFUVVBTFMgU0lHTjtTbTswO09OOzxzbWFsbD4gMDAzRDs7OztOOzs7OzsKK0ZFNjg7U01BTEwgUkVWRVJTRSBTT0xJRFVTO1BvOzA7T047PHNtYWxsPiAwMDVDOzs7O047U01BTEwgQkFDS1NMQVNIOzs7OworRkU2OTtTTUFMTCBET0xMQVIgU0lHTjtTYzswO0VUOzxzbWFsbD4gMDAyNDs7OztOOzs7OzsKK0ZFNkE7U01BTEwgUEVSQ0VOVCBTSUdOO1BvOzA7RVQ7PHNtYWxsPiAwMDI1Ozs7O047Ozs7OworRkU2QjtTTUFMTCBDT01NRVJDSUFMIEFUO1BvOzA7T047PHNtYWxsPiAwMDQwOzs7O047Ozs7OworRkU3MDtBUkFCSUMgRkFUSEFUQU4gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDAyMCAwNjRCOzs7O047QVJBQklDIFNQQUNJTkcgRkFUSEFUQU47Ozs7CitGRTcxO0FSQUJJQyBUQVRXRUVMIFdJVEggRkFUSEFUQU4gQUJPVkU7TG87MDtBTDs8bWVkaWFsPiAwNjQwIDA2NEI7Ozs7TjtBUkFCSUMgRkFUSEFUQU4gT04gVEFUV0VFTDs7OzsKK0ZFNzI7QVJBQklDIERBTU1BVEFOIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDAwMjAgMDY0Qzs7OztOO0FSQUJJQyBTUEFDSU5HIERBTU1BVEFOOzs7OworRkU3NDtBUkFCSUMgS0FTUkFUQU4gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDAyMCAwNjREOzs7O047QVJBQklDIFNQQUNJTkcgS0FTUkFUQU47Ozs7CitGRTc2O0FSQUJJQyBGQVRIQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwMDIwIDA2NEU7Ozs7TjtBUkFCSUMgU1BBQ0lORyBGQVRIQUg7Ozs7CitGRTc3O0FSQUJJQyBGQVRIQSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDAgMDY0RTs7OztOO0FSQUJJQyBGQVRIQUggT04gVEFUV0VFTDs7OzsKK0ZFNzg7QVJBQklDIERBTU1BIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDAwMjAgMDY0Rjs7OztOO0FSQUJJQyBTUEFDSU5HIERBTU1BSDs7OzsKK0ZFNzk7QVJBQklDIERBTU1BIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0MCAwNjRGOzs7O047QVJBQklDIERBTU1BSCBPTiBUQVRXRUVMOzs7OworRkU3QTtBUkFCSUMgS0FTUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDAyMCAwNjUwOzs7O047QVJBQklDIFNQQUNJTkcgS0FTUkFIOzs7OworRkU3QjtBUkFCSUMgS0FTUkEgTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjQwIDA2NTA7Ozs7TjtBUkFCSUMgS0FTUkFIIE9OIFRBVFdFRUw7Ozs7CitGRTdDO0FSQUJJQyBTSEFEREEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDAyMCAwNjUxOzs7O047QVJBQklDIFNQQUNJTkcgU0hBRERBSDs7OzsKK0ZFN0Q7QVJBQklDIFNIQUREQSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDAgMDY1MTs7OztOO0FSQUJJQyBTSEFEREFIIE9OIFRBVFdFRUw7Ozs7CitGRTdFO0FSQUJJQyBTVUtVTiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwMDIwIDA2NTI7Ozs7TjtBUkFCSUMgU1BBQ0lORyBTVUtVTjs7OzsKK0ZFN0Y7QVJBQklDIFNVS1VOIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0MCAwNjUyOzs7O047QVJBQklDIFNVS1VOIE9OIFRBVFdFRUw7Ozs7CitGRTgwO0FSQUJJQyBMRVRURVIgSEFNWkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyMTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQU1aQUg7Ozs7CitGRTgxO0FSQUJJQyBMRVRURVIgQUxFRiBXSVRIIE1BRERBIEFCT1ZFIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjI7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgTUFEREFIIE9OIEFMRUY7Ozs7CitGRTgyO0FSQUJJQyBMRVRURVIgQUxFRiBXSVRIIE1BRERBIEFCT1ZFIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjI7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIE1BRERBSCBPTiBBTEVGOzs7OworRkU4MztBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBIQU1aQSBBQk9WRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjIzOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEhBTVpBSCBPTiBBTEVGOzs7OworRkU4NDtBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBIQU1aQSBBQk9WRSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjIzOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBIQU1aQUggT04gQUxFRjs7OzsKK0ZFODU7QVJBQklDIExFVFRFUiBXQVcgV0lUSCBIQU1aQSBBQk9WRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI0Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEhBTVpBSCBPTiBXQVc7Ozs7CitGRTg2O0FSQUJJQyBMRVRURVIgV0FXIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNDs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgSEFNWkFIIE9OIFdBVzs7OzsKK0ZFODc7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQkVMT1cgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyNTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQU1aQUggVU5ERVIgQUxFRjs7OzsKK0ZFODg7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQkVMT1cgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgSEFNWkFIIFVOREVSIEFMRUY7Ozs7CitGRTg5O0FSQUJJQyBMRVRURVIgWUVIIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyNjs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQU1aQUggT04gWUE7Ozs7CitGRThBO0FSQUJJQyBMRVRURVIgWUVIIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNjs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgSEFNWkFIIE9OIFlBOzs7OworRkU4QjtBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjI2Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIEhBTVpBSCBPTiBZQTs7OzsKK0ZFOEM7QVJBQklDIExFVFRFUiBZRUggV0lUSCBIQU1aQSBBQk9WRSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MjY7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBIQU1aQUggT04gWUE7Ozs7CitGRThEO0FSQUJJQyBMRVRURVIgQUxFRiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI3Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEFMRUY7Ozs7CitGRThFO0FSQUJJQyBMRVRURVIgQUxFRiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI3Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBBTEVGOzs7OworRkU4RjtBUkFCSUMgTEVUVEVSIEJFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI4Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEJBQTs7OzsKK0ZFOTA7QVJBQklDIExFVFRFUiBCRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyODs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgQkFBOzs7OworRkU5MTtBUkFCSUMgTEVUVEVSIEJFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyODs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBCQUE7Ozs7CitGRTkyO0FSQUJJQyBMRVRURVIgQkVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYyODs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEJBQTs7OzsKK0ZFOTM7QVJBQklDIExFVFRFUiBURUggTUFSQlVUQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI5Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFRBQSBNQVJCVVRBSDs7OzsKK0ZFOTQ7QVJBQklDIExFVFRFUiBURUggTUFSQlVUQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI5Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBUQUEgTUFSQlVUQUg7Ozs7CitGRTk1O0FSQUJJQyBMRVRURVIgVEVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkE7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgVEFBOzs7OworRkU5NjtBUkFCSUMgTEVUVEVSIFRFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJBOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBUQUE7Ozs7CitGRTk3O0FSQUJJQyBMRVRURVIgVEVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJBOzs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIFRBQTs7OzsKK0ZFOTg7QVJBQklDIExFVFRFUiBURUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjJBOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgVEFBOzs7OworRkU5OTtBUkFCSUMgTEVUVEVSIFRIRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyQjs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBUSEFBOzs7OworRkU5QTtBUkFCSUMgTEVUVEVSIFRIRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQjs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgVEhBQTs7OzsKK0ZFOUI7QVJBQklDIExFVFRFUiBUSEVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJCOzs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIFRIQUE7Ozs7CitGRTlDO0FSQUJJQyBMRVRURVIgVEhFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MkI7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBUSEFBOzs7OworRkU5RDtBUkFCSUMgTEVUVEVSIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyQzs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBKRUVNOzs7OworRkU5RTtBUkFCSUMgTEVUVEVSIEpFRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQzs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgSkVFTTs7OzsKK0ZFOUY7QVJBQklDIExFVFRFUiBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJDOzs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIEpFRU07Ozs7CitGRUEwO0FSQUJJQyBMRVRURVIgSkVFTSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MkM7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBKRUVNOzs7OworRkVBMTtBUkFCSUMgTEVUVEVSIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJEOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEhBQTs7OzsKK0ZFQTI7QVJBQklDIExFVFRFUiBIQUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyRDs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgSEFBOzs7OworRkVBMztBUkFCSUMgTEVUVEVSIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyRDs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBIQUE7Ozs7CitGRUE0O0FSQUJJQyBMRVRURVIgSEFIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYyRDs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEhBQTs7OzsKK0ZFQTU7QVJBQklDIExFVFRFUiBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkU7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgS0hBQTs7OzsKK0ZFQTY7QVJBQklDIExFVFRFUiBLSEFIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkU7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEtIQUE7Ozs7CitGRUE3O0FSQUJJQyBMRVRURVIgS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyRTs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBLSEFBOzs7OworRkVBODtBUkFCSUMgTEVUVEVSIEtIQUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjJFOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgS0hBQTs7OzsKK0ZFQTk7QVJBQklDIExFVFRFUiBEQUwgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyRjs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBEQUw7Ozs7CitGRUFBO0FSQUJJQyBMRVRURVIgREFMIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkY7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIERBTDs7OzsKK0ZFQUI7QVJBQklDIExFVFRFUiBUSEFMIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzA7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgVEhBTDs7OzsKK0ZFQUM7QVJBQklDIExFVFRFUiBUSEFMIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzA7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFRIQUw7Ozs7CitGRUFEO0FSQUJJQyBMRVRURVIgUkVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzE7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgUkE7Ozs7CitGRUFFO0FSQUJJQyBMRVRURVIgUkVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzE7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFJBOzs7OworRkVBRjtBUkFCSUMgTEVUVEVSIFpBSU4gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzMjs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBaQUlOOzs7OworRkVCMDtBUkFCSUMgTEVUVEVSIFpBSU4gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzMjs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgWkFJTjs7OzsKK0ZFQjE7QVJBQklDIExFVFRFUiBTRUVOIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzM7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgU0VFTjs7OzsKK0ZFQjI7QVJBQklDIExFVFRFUiBTRUVOIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzM7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFNFRU47Ozs7CitGRUIzO0FSQUJJQyBMRVRURVIgU0VFTiBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzMzs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBTRUVOOzs7OworRkVCNDtBUkFCSUMgTEVUVEVSIFNFRU4gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjMzOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgU0VFTjs7OzsKK0ZFQjU7QVJBQklDIExFVFRFUiBTSEVFTiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM0Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFNIRUVOOzs7OworRkVCNjtBUkFCSUMgTEVUVEVSIFNIRUVOIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzQ7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFNIRUVOOzs7OworRkVCNztBUkFCSUMgTEVUVEVSIFNIRUVOIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM0Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIFNIRUVOOzs7OworRkVCODtBUkFCSUMgTEVUVEVSIFNIRUVOIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzNDs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIFNIRUVOOzs7OworRkVCOTtBUkFCSUMgTEVUVEVSIFNBRCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM1Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFNBRDs7OzsKK0ZFQkE7QVJBQklDIExFVFRFUiBTQUQgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgU0FEOzs7OworRkVCQjtBUkFCSUMgTEVUVEVSIFNBRCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNTs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBTQUQ7Ozs7CitGRUJDO0FSQUJJQyBMRVRURVIgU0FEIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzNTs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIFNBRDs7OzsKK0ZFQkQ7QVJBQklDIExFVFRFUiBEQUQgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNjs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBEQUQ7Ozs7CitGRUJFO0FSQUJJQyBMRVRURVIgREFEIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzY7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIERBRDs7OzsKK0ZFQkY7QVJBQklDIExFVFRFUiBEQUQgSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzY7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgREFEOzs7OworRkVDMDtBUkFCSUMgTEVUVEVSIERBRCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MzY7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBEQUQ7Ozs7CitGRUMxO0FSQUJJQyBMRVRURVIgVEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2Mzc7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgVEFIOzs7OworRkVDMjtBUkFCSUMgTEVUVEVSIFRBSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM3Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBUQUg7Ozs7CitGRUMzO0FSQUJJQyBMRVRURVIgVEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM3Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIFRBSDs7OzsKK0ZFQzQ7QVJBQklDIExFVFRFUiBUQUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjM3Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgVEFIOzs7OworRkVDNTtBUkFCSUMgTEVUVEVSIFpBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM4Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIERIQUg7Ozs7CitGRUM2O0FSQUJJQyBMRVRURVIgWkFIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2Mzg7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIERIQUg7Ozs7CitGRUM3O0FSQUJJQyBMRVRURVIgWkFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM4Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIERIQUg7Ozs7CitGRUM4O0FSQUJJQyBMRVRURVIgWkFIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzODs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIERIQUg7Ozs7CitGRUM5O0FSQUJJQyBMRVRURVIgQUlOIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2Mzk7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgQUlOOzs7OworRkVDQTtBUkFCSUMgTEVUVEVSIEFJTiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM5Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBBSU47Ozs7CitGRUNCO0FSQUJJQyBMRVRURVIgQUlOIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM5Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIEFJTjs7OzsKK0ZFQ0M7QVJBQklDIExFVFRFUiBBSU4gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjM5Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgQUlOOzs7OworRkVDRDtBUkFCSUMgTEVUVEVSIEdIQUlOIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2M0E7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgR0hBSU47Ozs7CitGRUNFO0FSQUJJQyBMRVRURVIgR0hBSU4gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzQTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgR0hBSU47Ozs7CitGRUNGO0FSQUJJQyBMRVRURVIgR0hBSU4gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2M0E7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgR0hBSU47Ozs7CitGRUQwO0FSQUJJQyBMRVRURVIgR0hBSU4gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjNBOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgR0hBSU47Ozs7CitGRUQxO0FSQUJJQyBMRVRURVIgRkVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDE7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgRkE7Ozs7CitGRUQyO0FSQUJJQyBMRVRURVIgRkVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDE7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEZBOzs7OworRkVEMztBUkFCSUMgTEVUVEVSIEZFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0MTs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBGQTs7OzsKK0ZFRDQ7QVJBQklDIExFVFRFUiBGRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjQxOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgRkE7Ozs7CitGRUQ1O0FSQUJJQyBMRVRURVIgUUFGIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDI7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgUUFGOzs7OworRkVENjtBUkFCSUMgTEVUVEVSIFFBRiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQyOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBRQUY7Ozs7CitGRUQ3O0FSQUJJQyBMRVRURVIgUUFGIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQyOzs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIFFBRjs7OzsKK0ZFRDg7QVJBQklDIExFVFRFUiBRQUYgTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjQyOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgUUFGOzs7OworRkVEOTtBUkFCSUMgTEVUVEVSIEtBRiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQzOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIENBRjs7OzsKK0ZFREE7QVJBQklDIExFVFRFUiBLQUYgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0Mzs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgQ0FGOzs7OworRkVEQjtBUkFCSUMgTEVUVEVSIEtBRiBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0Mzs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBDQUY7Ozs7CitGRURDO0FSQUJJQyBMRVRURVIgS0FGIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0Mzs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIENBRjs7OzsKK0ZFREQ7QVJBQklDIExFVFRFUiBMQU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NDs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBMQU07Ozs7CitGRURFO0FSQUJJQyBMRVRURVIgTEFNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDQ7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIExBTTs7OzsKK0ZFREY7QVJBQklDIExFVFRFUiBMQU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDQ7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgTEFNOzs7OworRkVFMDtBUkFCSUMgTEVUVEVSIExBTSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDQ7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBMQU07Ozs7CitGRUUxO0FSQUJJQyBMRVRURVIgTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ1Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIE1FRU07Ozs7CitGRUUyO0FSQUJJQyBMRVRURVIgTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ1Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBNRUVNOzs7OworRkVFMztBUkFCSUMgTEVUVEVSIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDU7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgTUVFTTs7OzsKK0ZFRTQ7QVJBQklDIExFVFRFUiBNRUVNIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0NTs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIE1FRU07Ozs7CitGRUU1O0FSQUJJQyBMRVRURVIgTk9PTiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ2Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIE5PT047Ozs7CitGRUU2O0FSQUJJQyBMRVRURVIgTk9PTiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ2Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBOT09OOzs7OworRkVFNztBUkFCSUMgTEVUVEVSIE5PT04gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDY7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgTk9PTjs7OzsKK0ZFRTg7QVJBQklDIExFVFRFUiBOT09OIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0Njs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIE5PT047Ozs7CitGRUU5O0FSQUJJQyBMRVRURVIgSEVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDc7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSEE7Ozs7CitGRUVBO0FSQUJJQyBMRVRURVIgSEVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDc7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEhBOzs7OworRkVFQjtBUkFCSUMgTEVUVEVSIEhFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0Nzs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBIQTs7OzsKK0ZFRUM7QVJBQklDIExFVFRFUiBIRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjQ3Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgSEE7Ozs7CitGRUVEO0FSQUJJQyBMRVRURVIgV0FXIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDg7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgV0FXOzs7OworRkVFRTtBUkFCSUMgTEVUVEVSIFdBVyBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ4Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBXQVc7Ozs7CitGRUVGO0FSQUJJQyBMRVRURVIgQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDk7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgQUxFRiBNQVFTVVJBSDs7OzsKK0ZFRjA7QVJBQklDIExFVFRFUiBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0OTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgQUxFRiBNQVFTVVJBSDs7OzsKK0ZFRjE7QVJBQklDIExFVFRFUiBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0QTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBZQTs7OzsKK0ZFRjI7QVJBQklDIExFVFRFUiBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0QTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgWUE7Ozs7CitGRUYzO0FSQUJJQyBMRVRURVIgWUVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjRBOzs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIFlBOzs7OworRkVGNDtBUkFCSUMgTEVUVEVSIFlFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NEE7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBZQTs7OzsKK0ZFRjU7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgV0lUSCBNQUREQSBBQk9WRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ0IDA2MjI7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgTUFEREFIIE9OIExJR0FUVVJFIExBTSBBTEVGOzs7OworRkVGNjtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBXSVRIIE1BRERBIEFCT1ZFIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDQgMDYyMjs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgTUFEREFIIE9OIExJR0FUVVJFIExBTSBBTEVGOzs7OworRkVGNztBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBXSVRIIEhBTVpBIEFCT1ZFIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDQgMDYyMzs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQU1aQUggT04gTElHQVRVUkUgTEFNIEFMRUY7Ozs7CitGRUY4O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NCAwNjIzOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBIQU1aQUggT04gTElHQVRVUkUgTEFNIEFMRUY7Ozs7CitGRUY5O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggSEFNWkEgQkVMT1cgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NCAwNjI1Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEhBTVpBSCBVTkRFUiBMSUdBVFVSRSBMQU0gQUxFRjs7OzsKK0ZFRkE7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgV0lUSCBIQU1aQSBCRUxPVyBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ0IDA2MjU7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEhBTVpBSCBVTkRFUiBMSUdBVFVSRSBMQU0gQUxFRjs7OzsKK0ZFRkI7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NCAwNjI3Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIExJR0FUVVJFIExBTSBBTEVGOzs7OworRkVGQztBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ0IDA2Mjc7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIExJR0FUVVJFIExBTSBBTEVGOzs7OworRkVGRjtaRVJPIFdJRFRIIE5PLUJSRUFLIFNQQUNFO0NmOzA7Qk47Ozs7O047QllURSBPUkRFUiBNQVJLOzs7OworRkYwMTtGVUxMV0lEVEggRVhDTEFNQVRJT04gTUFSSztQbzswO09OOzx3aWRlPiAwMDIxOzs7O047Ozs7OworRkYwMjtGVUxMV0lEVEggUVVPVEFUSU9OIE1BUks7UG87MDtPTjs8d2lkZT4gMDAyMjs7OztOOzs7OzsKK0ZGMDM7RlVMTFdJRFRIIE5VTUJFUiBTSUdOO1BvOzA7RVQ7PHdpZGU+IDAwMjM7Ozs7Tjs7Ozs7CitGRjA0O0ZVTExXSURUSCBET0xMQVIgU0lHTjtTYzswO0VUOzx3aWRlPiAwMDI0Ozs7O047Ozs7OworRkYwNTtGVUxMV0lEVEggUEVSQ0VOVCBTSUdOO1BvOzA7RVQ7PHdpZGU+IDAwMjU7Ozs7Tjs7Ozs7CitGRjA2O0ZVTExXSURUSCBBTVBFUlNBTkQ7UG87MDtPTjs8d2lkZT4gMDAyNjs7OztOOzs7OzsKK0ZGMDc7RlVMTFdJRFRIIEFQT1NUUk9QSEU7UG87MDtPTjs8d2lkZT4gMDAyNzs7OztOOzs7OzsKK0ZGMDg7RlVMTFdJRFRIIExFRlQgUEFSRU5USEVTSVM7UHM7MDtPTjs8d2lkZT4gMDAyODs7OztOO0ZVTExXSURUSCBPUEVOSU5HIFBBUkVOVEhFU0lTOzs7OworRkYwOTtGVUxMV0lEVEggUklHSFQgUEFSRU5USEVTSVM7UGU7MDtPTjs8d2lkZT4gMDAyOTs7OztOO0ZVTExXSURUSCBDTE9TSU5HIFBBUkVOVEhFU0lTOzs7OworRkYwQTtGVUxMV0lEVEggQVNURVJJU0s7UG87MDtPTjs8d2lkZT4gMDAyQTs7OztOOzs7OzsKK0ZGMEI7RlVMTFdJRFRIIFBMVVMgU0lHTjtTbTswO0VUOzx3aWRlPiAwMDJCOzs7O047Ozs7OworRkYwQztGVUxMV0lEVEggQ09NTUE7UG87MDtDUzs8d2lkZT4gMDAyQzs7OztOOzs7OzsKK0ZGMEQ7RlVMTFdJRFRIIEhZUEhFTi1NSU5VUztQZDswO0VUOzx3aWRlPiAwMDJEOzs7O047Ozs7OworRkYwRTtGVUxMV0lEVEggRlVMTCBTVE9QO1BvOzA7Q1M7PHdpZGU+IDAwMkU7Ozs7TjtGVUxMV0lEVEggUEVSSU9EOzs7OworRkYwRjtGVUxMV0lEVEggU09MSURVUztQbzswO0VTOzx3aWRlPiAwMDJGOzs7O047RlVMTFdJRFRIIFNMQVNIOzs7OworRkYxMDtGVUxMV0lEVEggRElHSVQgWkVSTztOZDswO0VOOzx3aWRlPiAwMDMwOzA7MDswO047Ozs7OworRkYxMTtGVUxMV0lEVEggRElHSVQgT05FO05kOzA7RU47PHdpZGU+IDAwMzE7MTsxOzE7Tjs7Ozs7CitGRjEyO0ZVTExXSURUSCBESUdJVCBUV087TmQ7MDtFTjs8d2lkZT4gMDAzMjsyOzI7MjtOOzs7OzsKK0ZGMTM7RlVMTFdJRFRIIERJR0lUIFRIUkVFO05kOzA7RU47PHdpZGU+IDAwMzM7MzszOzM7Tjs7Ozs7CitGRjE0O0ZVTExXSURUSCBESUdJVCBGT1VSO05kOzA7RU47PHdpZGU+IDAwMzQ7NDs0OzQ7Tjs7Ozs7CitGRjE1O0ZVTExXSURUSCBESUdJVCBGSVZFO05kOzA7RU47PHdpZGU+IDAwMzU7NTs1OzU7Tjs7Ozs7CitGRjE2O0ZVTExXSURUSCBESUdJVCBTSVg7TmQ7MDtFTjs8d2lkZT4gMDAzNjs2OzY7NjtOOzs7OzsKK0ZGMTc7RlVMTFdJRFRIIERJR0lUIFNFVkVOO05kOzA7RU47PHdpZGU+IDAwMzc7Nzs3Ozc7Tjs7Ozs7CitGRjE4O0ZVTExXSURUSCBESUdJVCBFSUdIVDtOZDswO0VOOzx3aWRlPiAwMDM4Ozg7ODs4O047Ozs7OworRkYxOTtGVUxMV0lEVEggRElHSVQgTklORTtOZDswO0VOOzx3aWRlPiAwMDM5Ozk7OTs5O047Ozs7OworRkYxQTtGVUxMV0lEVEggQ09MT047UG87MDtDUzs8d2lkZT4gMDAzQTs7OztOOzs7OzsKK0ZGMUI7RlVMTFdJRFRIIFNFTUlDT0xPTjtQbzswO09OOzx3aWRlPiAwMDNCOzs7O047Ozs7OworRkYxQztGVUxMV0lEVEggTEVTUy1USEFOIFNJR047U207MDtPTjs8d2lkZT4gMDAzQzs7OztOOzs7OzsKK0ZGMUQ7RlVMTFdJRFRIIEVRVUFMUyBTSUdOO1NtOzA7T047PHdpZGU+IDAwM0Q7Ozs7Tjs7Ozs7CitGRjFFO0ZVTExXSURUSCBHUkVBVEVSLVRIQU4gU0lHTjtTbTswO09OOzx3aWRlPiAwMDNFOzs7O047Ozs7OworRkYxRjtGVUxMV0lEVEggUVVFU1RJT04gTUFSSztQbzswO09OOzx3aWRlPiAwMDNGOzs7O047Ozs7OworRkYyMDtGVUxMV0lEVEggQ09NTUVSQ0lBTCBBVDtQbzswO09OOzx3aWRlPiAwMDQwOzs7O047Ozs7OworRkYyMTtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgQTtMdTswO0w7PHdpZGU+IDAwNDE7Ozs7Tjs7OztGRjQxOworRkYyMjtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgQjtMdTswO0w7PHdpZGU+IDAwNDI7Ozs7Tjs7OztGRjQyOworRkYyMztGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgQztMdTswO0w7PHdpZGU+IDAwNDM7Ozs7Tjs7OztGRjQzOworRkYyNDtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRDtMdTswO0w7PHdpZGU+IDAwNDQ7Ozs7Tjs7OztGRjQ0OworRkYyNTtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRTtMdTswO0w7PHdpZGU+IDAwNDU7Ozs7Tjs7OztGRjQ1OworRkYyNjtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRjtMdTswO0w7PHdpZGU+IDAwNDY7Ozs7Tjs7OztGRjQ2OworRkYyNztGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgRztMdTswO0w7PHdpZGU+IDAwNDc7Ozs7Tjs7OztGRjQ3OworRkYyODtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgSDtMdTswO0w7PHdpZGU+IDAwNDg7Ozs7Tjs7OztGRjQ4OworRkYyOTtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgSTtMdTswO0w7PHdpZGU+IDAwNDk7Ozs7Tjs7OztGRjQ5OworRkYyQTtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgSjtMdTswO0w7PHdpZGU+IDAwNEE7Ozs7Tjs7OztGRjRBOworRkYyQjtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgSztMdTswO0w7PHdpZGU+IDAwNEI7Ozs7Tjs7OztGRjRCOworRkYyQztGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgTDtMdTswO0w7PHdpZGU+IDAwNEM7Ozs7Tjs7OztGRjRDOworRkYyRDtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgTTtMdTswO0w7PHdpZGU+IDAwNEQ7Ozs7Tjs7OztGRjREOworRkYyRTtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgTjtMdTswO0w7PHdpZGU+IDAwNEU7Ozs7Tjs7OztGRjRFOworRkYyRjtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgTztMdTswO0w7PHdpZGU+IDAwNEY7Ozs7Tjs7OztGRjRGOworRkYzMDtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUDtMdTswO0w7PHdpZGU+IDAwNTA7Ozs7Tjs7OztGRjUwOworRkYzMTtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUTtMdTswO0w7PHdpZGU+IDAwNTE7Ozs7Tjs7OztGRjUxOworRkYzMjtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUjtMdTswO0w7PHdpZGU+IDAwNTI7Ozs7Tjs7OztGRjUyOworRkYzMztGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgUztMdTswO0w7PHdpZGU+IDAwNTM7Ozs7Tjs7OztGRjUzOworRkYzNDtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgVDtMdTswO0w7PHdpZGU+IDAwNTQ7Ozs7Tjs7OztGRjU0OworRkYzNTtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgVTtMdTswO0w7PHdpZGU+IDAwNTU7Ozs7Tjs7OztGRjU1OworRkYzNjtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgVjtMdTswO0w7PHdpZGU+IDAwNTY7Ozs7Tjs7OztGRjU2OworRkYzNztGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgVztMdTswO0w7PHdpZGU+IDAwNTc7Ozs7Tjs7OztGRjU3OworRkYzODtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgWDtMdTswO0w7PHdpZGU+IDAwNTg7Ozs7Tjs7OztGRjU4OworRkYzOTtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgWTtMdTswO0w7PHdpZGU+IDAwNTk7Ozs7Tjs7OztGRjU5OworRkYzQTtGVUxMV0lEVEggTEFUSU4gQ0FQSVRBTCBMRVRURVIgWjtMdTswO0w7PHdpZGU+IDAwNUE7Ozs7Tjs7OztGRjVBOworRkYzQjtGVUxMV0lEVEggTEVGVCBTUVVBUkUgQlJBQ0tFVDtQczswO09OOzx3aWRlPiAwMDVCOzs7O047RlVMTFdJRFRIIE9QRU5JTkcgU1FVQVJFIEJSQUNLRVQ7Ozs7CitGRjNDO0ZVTExXSURUSCBSRVZFUlNFIFNPTElEVVM7UG87MDtPTjs8d2lkZT4gMDA1Qzs7OztOO0ZVTExXSURUSCBCQUNLU0xBU0g7Ozs7CitGRjNEO0ZVTExXSURUSCBSSUdIVCBTUVVBUkUgQlJBQ0tFVDtQZTswO09OOzx3aWRlPiAwMDVEOzs7O047RlVMTFdJRFRIIENMT1NJTkcgU1FVQVJFIEJSQUNLRVQ7Ozs7CitGRjNFO0ZVTExXSURUSCBDSVJDVU1GTEVYIEFDQ0VOVDtTazswO09OOzx3aWRlPiAwMDVFOzs7O047RlVMTFdJRFRIIFNQQUNJTkcgQ0lSQ1VNRkxFWDs7OzsKK0ZGM0Y7RlVMTFdJRFRIIExPVyBMSU5FO1BjOzA7T047PHdpZGU+IDAwNUY7Ozs7TjtGVUxMV0lEVEggU1BBQ0lORyBVTkRFUlNDT1JFOzs7OworRkY0MDtGVUxMV0lEVEggR1JBVkUgQUNDRU5UO1NrOzA7T047PHdpZGU+IDAwNjA7Ozs7TjtGVUxMV0lEVEggU1BBQ0lORyBHUkFWRTs7OzsKK0ZGNDE7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBBO0xsOzA7TDs8d2lkZT4gMDA2MTs7OztOOzs7RkYyMTs7RkYyMQorRkY0MjtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEI7TGw7MDtMOzx3aWRlPiAwMDYyOzs7O047OztGRjIyOztGRjIyCitGRjQzO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgQztMbDswO0w7PHdpZGU+IDAwNjM7Ozs7Tjs7O0ZGMjM7O0ZGMjMKK0ZGNDQ7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBEO0xsOzA7TDs8d2lkZT4gMDA2NDs7OztOOzs7RkYyNDs7RkYyNAorRkY0NTtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEU7TGw7MDtMOzx3aWRlPiAwMDY1Ozs7O047OztGRjI1OztGRjI1CitGRjQ2O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgRjtMbDswO0w7PHdpZGU+IDAwNjY7Ozs7Tjs7O0ZGMjY7O0ZGMjYKK0ZGNDc7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBHO0xsOzA7TDs8d2lkZT4gMDA2Nzs7OztOOzs7RkYyNzs7RkYyNworRkY0ODtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEg7TGw7MDtMOzx3aWRlPiAwMDY4Ozs7O047OztGRjI4OztGRjI4CitGRjQ5O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgSTtMbDswO0w7PHdpZGU+IDAwNjk7Ozs7Tjs7O0ZGMjk7O0ZGMjkKK0ZGNEE7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBKO0xsOzA7TDs8d2lkZT4gMDA2QTs7OztOOzs7RkYyQTs7RkYyQQorRkY0QjtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEs7TGw7MDtMOzx3aWRlPiAwMDZCOzs7O047OztGRjJCOztGRjJCCitGRjRDO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgTDtMbDswO0w7PHdpZGU+IDAwNkM7Ozs7Tjs7O0ZGMkM7O0ZGMkMKK0ZGNEQ7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBNO0xsOzA7TDs8d2lkZT4gMDA2RDs7OztOOzs7RkYyRDs7RkYyRAorRkY0RTtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIE47TGw7MDtMOzx3aWRlPiAwMDZFOzs7O047OztGRjJFOztGRjJFCitGRjRGO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgTztMbDswO0w7PHdpZGU+IDAwNkY7Ozs7Tjs7O0ZGMkY7O0ZGMkYKK0ZGNTA7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBQO0xsOzA7TDs8d2lkZT4gMDA3MDs7OztOOzs7RkYzMDs7RkYzMAorRkY1MTtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFE7TGw7MDtMOzx3aWRlPiAwMDcxOzs7O047OztGRjMxOztGRjMxCitGRjUyO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgUjtMbDswO0w7PHdpZGU+IDAwNzI7Ozs7Tjs7O0ZGMzI7O0ZGMzIKK0ZGNTM7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBTO0xsOzA7TDs8d2lkZT4gMDA3Mzs7OztOOzs7RkYzMzs7RkYzMworRkY1NDtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFQ7TGw7MDtMOzx3aWRlPiAwMDc0Ozs7O047OztGRjM0OztGRjM0CitGRjU1O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgVTtMbDswO0w7PHdpZGU+IDAwNzU7Ozs7Tjs7O0ZGMzU7O0ZGMzUKK0ZGNTY7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBWO0xsOzA7TDs8d2lkZT4gMDA3Njs7OztOOzs7RkYzNjs7RkYzNgorRkY1NztGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFc7TGw7MDtMOzx3aWRlPiAwMDc3Ozs7O047OztGRjM3OztGRjM3CitGRjU4O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgWDtMbDswO0w7PHdpZGU+IDAwNzg7Ozs7Tjs7O0ZGMzg7O0ZGMzgKK0ZGNTk7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBZO0xsOzA7TDs8d2lkZT4gMDA3OTs7OztOOzs7RkYzOTs7RkYzOQorRkY1QTtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFo7TGw7MDtMOzx3aWRlPiAwMDdBOzs7O047OztGRjNBOztGRjNBCitGRjVCO0ZVTExXSURUSCBMRUZUIENVUkxZIEJSQUNLRVQ7UHM7MDtPTjs8d2lkZT4gMDA3Qjs7OztOO0ZVTExXSURUSCBPUEVOSU5HIENVUkxZIEJSQUNLRVQ7Ozs7CitGRjVDO0ZVTExXSURUSCBWRVJUSUNBTCBMSU5FO1NtOzA7T047PHdpZGU+IDAwN0M7Ozs7TjtGVUxMV0lEVEggVkVSVElDQUwgQkFSOzs7OworRkY1RDtGVUxMV0lEVEggUklHSFQgQ1VSTFkgQlJBQ0tFVDtQZTswO09OOzx3aWRlPiAwMDdEOzs7O047RlVMTFdJRFRIIENMT1NJTkcgQ1VSTFkgQlJBQ0tFVDs7OzsKK0ZGNUU7RlVMTFdJRFRIIFRJTERFO1NtOzA7T047PHdpZGU+IDAwN0U7Ozs7TjtGVUxMV0lEVEggU1BBQ0lORyBUSUxERTs7OzsKK0ZGNjE7SEFMRldJRFRIIElERU9HUkFQSElDIEZVTEwgU1RPUDtQbzswO09OOzxuYXJyb3c+IDMwMDI7Ozs7TjtIQUxGV0lEVEggSURFT0dSQVBISUMgUEVSSU9EOzs7OworRkY2MjtIQUxGV0lEVEggTEVGVCBDT1JORVIgQlJBQ0tFVDtQczswO09OOzxuYXJyb3c+IDMwMEM7Ozs7TjtIQUxGV0lEVEggT1BFTklORyBDT1JORVIgQlJBQ0tFVDs7OzsKK0ZGNjM7SEFMRldJRFRIIFJJR0hUIENPUk5FUiBCUkFDS0VUO1BlOzA7T047PG5hcnJvdz4gMzAwRDs7OztOO0hBTEZXSURUSCBDTE9TSU5HIENPUk5FUiBCUkFDS0VUOzs7OworRkY2NDtIQUxGV0lEVEggSURFT0dSQVBISUMgQ09NTUE7UG87MDtPTjs8bmFycm93PiAzMDAxOzs7O047Ozs7OworRkY2NTtIQUxGV0lEVEggS0FUQUtBTkEgTUlERExFIERPVDtQYzswO09OOzxuYXJyb3c+IDMwRkI7Ozs7Tjs7Ozs7CitGRjY2O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgV087TG87MDtMOzxuYXJyb3c+IDMwRjI7Ozs7Tjs7Ozs7CitGRjY3O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgQTtMbzswO0w7PG5hcnJvdz4gMzBBMTs7OztOOzs7OzsKK0ZGNjg7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBJO0xvOzA7TDs8bmFycm93PiAzMEEzOzs7O047Ozs7OworRkY2OTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFU7TG87MDtMOzxuYXJyb3c+IDMwQTU7Ozs7Tjs7Ozs7CitGRjZBO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgRTtMbzswO0w7PG5hcnJvdz4gMzBBNzs7OztOOzs7OzsKK0ZGNkI7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBPO0xvOzA7TDs8bmFycm93PiAzMEE5Ozs7O047Ozs7OworRkY2QztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlBO0xvOzA7TDs8bmFycm93PiAzMEUzOzs7O047Ozs7OworRkY2RDtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlVO0xvOzA7TDs8bmFycm93PiAzMEU1Ozs7O047Ozs7OworRkY2RTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlPO0xvOzA7TDs8bmFycm93PiAzMEU3Ozs7O047Ozs7OworRkY2RjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIFRVO0xvOzA7TDs8bmFycm93PiAzMEMzOzs7O047Ozs7OworRkY3MDtIQUxGV0lEVEggS0FUQUtBTkEtSElSQUdBTkEgUFJPTE9OR0VEIFNPVU5EIE1BUks7TG07MDtMOzxuYXJyb3c+IDMwRkM7Ozs7Tjs7Ozs7CitGRjcxO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgQTtMbzswO0w7PG5hcnJvdz4gMzBBMjs7OztOOzs7OzsKK0ZGNzI7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBJO0xvOzA7TDs8bmFycm93PiAzMEE0Ozs7O047Ozs7OworRkY3MztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFU7TG87MDtMOzxuYXJyb3c+IDMwQTY7Ozs7Tjs7Ozs7CitGRjc0O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgRTtMbzswO0w7PG5hcnJvdz4gMzBBODs7OztOOzs7OzsKK0ZGNzU7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBPO0xvOzA7TDs8bmFycm93PiAzMEFBOzs7O047Ozs7OworRkY3NjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtBO0xvOzA7TDs8bmFycm93PiAzMEFCOzs7O047Ozs7OworRkY3NztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtJO0xvOzA7TDs8bmFycm93PiAzMEFEOzs7O047Ozs7OworRkY3ODtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtVO0xvOzA7TDs8bmFycm93PiAzMEFGOzs7O047Ozs7OworRkY3OTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtFO0xvOzA7TDs8bmFycm93PiAzMEIxOzs7O047Ozs7OworRkY3QTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEtPO0xvOzA7TDs8bmFycm93PiAzMEIzOzs7O047Ozs7OworRkY3QjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNBO0xvOzA7TDs8bmFycm93PiAzMEI1Ozs7O047Ozs7OworRkY3QztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNJO0xvOzA7TDs8bmFycm93PiAzMEI3Ozs7O047Ozs7OworRkY3RDtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNVO0xvOzA7TDs8bmFycm93PiAzMEI5Ozs7O047Ozs7OworRkY3RTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNFO0xvOzA7TDs8bmFycm93PiAzMEJCOzs7O047Ozs7OworRkY3RjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNPO0xvOzA7TDs8bmFycm93PiAzMEJEOzs7O047Ozs7OworRkY4MDtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFRBO0xvOzA7TDs8bmFycm93PiAzMEJGOzs7O047Ozs7OworRkY4MTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFRJO0xvOzA7TDs8bmFycm93PiAzMEMxOzs7O047Ozs7OworRkY4MjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFRVO0xvOzA7TDs8bmFycm93PiAzMEM0Ozs7O047Ozs7OworRkY4MztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFRFO0xvOzA7TDs8bmFycm93PiAzMEM2Ozs7O047Ozs7OworRkY4NDtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFRPO0xvOzA7TDs8bmFycm93PiAzMEM4Ozs7O047Ozs7OworRkY4NTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5BO0xvOzA7TDs8bmFycm93PiAzMENBOzs7O047Ozs7OworRkY4NjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5JO0xvOzA7TDs8bmFycm93PiAzMENCOzs7O047Ozs7OworRkY4NztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5VO0xvOzA7TDs8bmFycm93PiAzMENDOzs7O047Ozs7OworRkY4ODtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5FO0xvOzA7TDs8bmFycm93PiAzMENEOzs7O047Ozs7OworRkY4OTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE5PO0xvOzA7TDs8bmFycm93PiAzMENFOzs7O047Ozs7OworRkY4QTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEhBO0xvOzA7TDs8bmFycm93PiAzMENGOzs7O047Ozs7OworRkY4QjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEhJO0xvOzA7TDs8bmFycm93PiAzMEQyOzs7O047Ozs7OworRkY4QztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEhVO0xvOzA7TDs8bmFycm93PiAzMEQ1Ozs7O047Ozs7OworRkY4RDtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEhFO0xvOzA7TDs8bmFycm93PiAzMEQ4Ozs7O047Ozs7OworRkY4RTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEhPO0xvOzA7TDs8bmFycm93PiAzMERCOzs7O047Ozs7OworRkY4RjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE1BO0xvOzA7TDs8bmFycm93PiAzMERFOzs7O047Ozs7OworRkY5MDtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE1JO0xvOzA7TDs8bmFycm93PiAzMERGOzs7O047Ozs7OworRkY5MTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE1VO0xvOzA7TDs8bmFycm93PiAzMEUwOzs7O047Ozs7OworRkY5MjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE1FO0xvOzA7TDs8bmFycm93PiAzMEUxOzs7O047Ozs7OworRkY5MztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE1PO0xvOzA7TDs8bmFycm93PiAzMEUyOzs7O047Ozs7OworRkY5NDtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFlBO0xvOzA7TDs8bmFycm93PiAzMEU0Ozs7O047Ozs7OworRkY5NTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFlVO0xvOzA7TDs8bmFycm93PiAzMEU2Ozs7O047Ozs7OworRkY5NjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFlPO0xvOzA7TDs8bmFycm93PiAzMEU4Ozs7O047Ozs7OworRkY5NztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJBO0xvOzA7TDs8bmFycm93PiAzMEU5Ozs7O047Ozs7OworRkY5ODtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJJO0xvOzA7TDs8bmFycm93PiAzMEVBOzs7O047Ozs7OworRkY5OTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJVO0xvOzA7TDs8bmFycm93PiAzMEVCOzs7O047Ozs7OworRkY5QTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJFO0xvOzA7TDs8bmFycm93PiAzMEVDOzs7O047Ozs7OworRkY5QjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFJPO0xvOzA7TDs8bmFycm93PiAzMEVEOzs7O047Ozs7OworRkY5QztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFdBO0xvOzA7TDs8bmFycm93PiAzMEVGOzs7O047Ozs7OworRkY5RDtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIE47TG87MDtMOzxuYXJyb3c+IDMwRjM7Ozs7Tjs7Ozs7CitGRjlFO0hBTEZXSURUSCBLQVRBS0FOQSBWT0lDRUQgU09VTkQgTUFSSztMbTswO0w7PG5hcnJvdz4gMzA5OTs7OztOOztoYWxmd2lkdGgga2F0YWthbmEtaGlyYWdhbmEgdm9pY2VkIHNvdW5kIG1hcms7OzsKK0ZGOUY7SEFMRldJRFRIIEtBVEFLQU5BIFNFTUktVk9JQ0VEIFNPVU5EIE1BUks7TG07MDtMOzxuYXJyb3c+IDMwOUE7Ozs7Tjs7aGFsZndpZHRoIGthdGFrYW5hLWhpcmFnYW5hIHNlbWktdm9pY2VkIHNvdW5kIG1hcms7OzsKK0ZGQTA7SEFMRldJRFRIIEhBTkdVTCBGSUxMRVI7TG87MDtMOzxuYXJyb3c+IDMxNjQ7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIENBRSBPTTs7OzsKK0ZGQTE7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgS0lZRU9LO0xvOzA7TDs8bmFycm93PiAzMTMxOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgR0lZRU9HOzs7OworRkZBMjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FOR0tJWUVPSztMbzswO0w7PG5hcnJvdz4gMzEzMjs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HIEdJWUVPRzs7OzsKK0ZGQTM7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgS0lZRU9LLVNJT1M7TG87MDtMOzxuYXJyb3c+IDMxMzM7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBHSVlFT0cgU0lPUzs7OzsKK0ZGQTQ7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTklFVU47TG87MDtMOzxuYXJyb3c+IDMxMzQ7Ozs7Tjs7Ozs7CitGRkE1O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE5JRVVOLUNJRVVDO0xvOzA7TDs8bmFycm93PiAzMTM1Ozs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTklFVU4gSklFVUo7Ozs7CitGRkE2O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE5JRVVOLUhJRVVIO0xvOzA7TDs8bmFycm93PiAzMTM2Ozs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTklFVU4gSElFVUg7Ozs7CitGRkE3O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFRJS0VVVDtMbzswO0w7PG5hcnJvdz4gMzEzNzs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIERJR0VVRDs7OzsKK0ZGQTg7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkdUSUtFVVQ7TG87MDtMOzxuYXJyb3c+IDMxMzg7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FORyBESUdFVUQ7Ozs7CitGRkE5O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMO0xvOzA7TDs8bmFycm93PiAzMTM5Ozs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTElFVUw7Ozs7CitGRkFBO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLUtJWUVPSztMbzswO0w7PG5hcnJvdz4gMzEzQTs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIExJRVVMIEdJWUVPRzs7OzsKK0ZGQUI7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwtTUlFVU07TG87MDtMOzxuYXJyb3c+IDMxM0I7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBNSUVVTTs7OzsKK0ZGQUM7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwtUElFVVA7TG87MDtMOzxuYXJyb3c+IDMxM0M7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBCSUVVQjs7OzsKK0ZGQUQ7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwtU0lPUztMbzswO0w7PG5hcnJvdz4gMzEzRDs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIExJRVVMIFNJT1M7Ozs7CitGRkFFO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLVRISUVVVEg7TG87MDtMOzxuYXJyb3c+IDMxM0U7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBUSUVVVDs7OzsKK0ZGQUY7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwtUEhJRVVQSDtMbzswO0w7PG5hcnJvdz4gMzEzRjs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIExJRVVMIFBJRVVQOzs7OworRkZCMDtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTC1ISUVVSDtMbzswO0w7PG5hcnJvdz4gMzE0MDs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIExJRVVMIEhJRVVIOzs7OworRkZCMTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBNSUVVTTtMbzswO0w7PG5hcnJvdz4gMzE0MTs7OztOOzs7OzsKK0ZGQjI7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUElFVVA7TG87MDtMOzxuYXJyb3c+IDMxNDI7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBCSUVVQjs7OzsKK0ZGQjM7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkdQSUVVUDtMbzswO0w7PG5hcnJvdz4gMzE0Mzs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HIEJJRVVCOzs7OworRkZCNDtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBQSUVVUC1TSU9TO0xvOzA7TDs8bmFycm93PiAzMTQ0Ozs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgQklFVUIgU0lPUzs7OzsKK0ZGQjU7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU0lPUztMbzswO0w7PG5hcnJvdz4gMzE0NTs7OztOOzs7OzsKK0ZGQjY7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkdTSU9TO0xvOzA7TDs8bmFycm93PiAzMTQ2Ozs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkcgU0lPUzs7OzsKK0ZGQjc7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgSUVVTkc7TG87MDtMOzxuYXJyb3c+IDMxNDc7Ozs7Tjs7Ozs7CitGRkI4O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIENJRVVDO0xvOzA7TDs8bmFycm93PiAzMTQ4Ozs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgSklFVUo7Ozs7CitGRkI5O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HQ0lFVUM7TG87MDtMOzxuYXJyb3c+IDMxNDk7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FORyBKSUVVSjs7OzsKK0ZGQkE7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgQ0hJRVVDSDtMbzswO0w7PG5hcnJvdz4gMzE0QTs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIENJRVVDOzs7OworRkZCQjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBLSElFVUtIO0xvOzA7TDs8bmFycm93PiAzMTRCOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgS0lZRU9LOzs7OworRkZCQztIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBUSElFVVRIO0xvOzA7TDs8bmFycm93PiAzMTRDOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgVElFVVQ7Ozs7CitGRkJEO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFBISUVVUEg7TG87MDtMOzxuYXJyb3c+IDMxNEQ7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBQSUVVUDs7OzsKK0ZGQkU7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgSElFVUg7TG87MDtMOzxuYXJyb3c+IDMxNEU7Ozs7Tjs7Ozs7CitGRkMyO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEE7TG87MDtMOzxuYXJyb3c+IDMxNEY7Ozs7Tjs7Ozs7CitGRkMzO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEFFO0xvOzA7TDs8bmFycm93PiAzMTUwOzs7O047Ozs7OworRkZDNDtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBZQTtMbzswO0w7PG5hcnJvdz4gMzE1MTs7OztOOzs7OzsKK0ZGQzU7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUFFO0xvOzA7TDs8bmFycm93PiAzMTUyOzs7O047Ozs7OworRkZDNjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBFTztMbzswO0w7PG5hcnJvdz4gMzE1Mzs7OztOOzs7OzsKK0ZGQzc7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgRTtMbzswO0w7PG5hcnJvdz4gMzE1NDs7OztOOzs7OzsKK0ZGQ0E7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUVPO0xvOzA7TDs8bmFycm93PiAzMTU1Ozs7O047Ozs7OworRkZDQjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBZRTtMbzswO0w7PG5hcnJvdz4gMzE1Njs7OztOOzs7OzsKK0ZGQ0M7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTztMbzswO0w7PG5hcnJvdz4gMzE1Nzs7OztOOzs7OzsKK0ZGQ0Q7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgV0E7TG87MDtMOzxuYXJyb3c+IDMxNTg7Ozs7Tjs7Ozs7CitGRkNFO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFdBRTtMbzswO0w7PG5hcnJvdz4gMzE1OTs7OztOOzs7OzsKK0ZGQ0Y7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgT0U7TG87MDtMOzxuYXJyb3c+IDMxNUE7Ozs7Tjs7Ozs7CitGRkQyO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFlPO0xvOzA7TDs8bmFycm93PiAzMTVCOzs7O047Ozs7OworRkZEMztIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBVO0xvOzA7TDs8bmFycm93PiAzMTVDOzs7O047Ozs7OworRkZENDtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBXRU87TG87MDtMOzxuYXJyb3c+IDMxNUQ7Ozs7Tjs7Ozs7CitGRkQ1O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFdFO0xvOzA7TDs8bmFycm93PiAzMTVFOzs7O047Ozs7OworRkZENjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBXSTtMbzswO0w7PG5hcnJvdz4gMzE1Rjs7OztOOzs7OzsKK0ZGRDc7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWVU7TG87MDtMOzxuYXJyb3c+IDMxNjA7Ozs7Tjs7Ozs7CitGRkRBO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEVVO0xvOzA7TDs8bmFycm93PiAzMTYxOzs7O047Ozs7OworRkZEQjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBZSTtMbzswO0w7PG5hcnJvdz4gMzE2Mjs7OztOOzs7OzsKK0ZGREM7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgSTtMbzswO0w7PG5hcnJvdz4gMzE2Mzs7OztOOzs7OzsKK0ZGRTA7RlVMTFdJRFRIIENFTlQgU0lHTjtTYzswO0VUOzx3aWRlPiAwMEEyOzs7O047Ozs7OworRkZFMTtGVUxMV0lEVEggUE9VTkQgU0lHTjtTYzswO0VUOzx3aWRlPiAwMEEzOzs7O047Ozs7OworRkZFMjtGVUxMV0lEVEggTk9UIFNJR047U207MDtPTjs8d2lkZT4gMDBBQzs7OztOOzs7OzsKK0ZGRTM7RlVMTFdJRFRIIE1BQ1JPTjtTazswO09OOzx3aWRlPiAwMEFGOzs7O047RlVMTFdJRFRIIFNQQUNJTkcgTUFDUk9OOyo7OzsKK0ZGRTQ7RlVMTFdJRFRIIEJST0tFTiBCQVI7U287MDtPTjs8d2lkZT4gMDBBNjs7OztOO0ZVTExXSURUSCBCUk9LRU4gVkVSVElDQUwgQkFSOzs7OworRkZFNTtGVUxMV0lEVEggWUVOIFNJR047U2M7MDtFVDs8d2lkZT4gMDBBNTs7OztOOzs7OzsKK0ZGRTY7RlVMTFdJRFRIIFdPTiBTSUdOO1NjOzA7RVQ7PHdpZGU+IDIwQTk7Ozs7Tjs7Ozs7CitGRkU4O0hBTEZXSURUSCBGT1JNUyBMSUdIVCBWRVJUSUNBTDtTbzswO09OOzxuYXJyb3c+IDI1MDI7Ozs7Tjs7Ozs7CitGRkU5O0hBTEZXSURUSCBMRUZUV0FSRFMgQVJST1c7U207MDtPTjs8bmFycm93PiAyMTkwOzs7O047Ozs7OworRkZFQTtIQUxGV0lEVEggVVBXQVJEUyBBUlJPVztTbTswO09OOzxuYXJyb3c+IDIxOTE7Ozs7Tjs7Ozs7CitGRkVCO0hBTEZXSURUSCBSSUdIVFdBUkRTIEFSUk9XO1NtOzA7T047PG5hcnJvdz4gMjE5Mjs7OztOOzs7OzsKK0ZGRUM7SEFMRldJRFRIIERPV05XQVJEUyBBUlJPVztTbTswO09OOzxuYXJyb3c+IDIxOTM7Ozs7Tjs7Ozs7CitGRkVEO0hBTEZXSURUSCBCTEFDSyBTUVVBUkU7U287MDtPTjs8bmFycm93PiAyNUEwOzs7O047Ozs7OworRkZFRTtIQUxGV0lEVEggV0hJVEUgQ0lSQ0xFO1NvOzA7T047PG5hcnJvdz4gMjVDQjs7OztOOzs7OzsKK0ZGRjk7SU5URVJMSU5FQVIgQU5OT1RBVElPTiBBTkNIT1I7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitGRkZBO0lOVEVSTElORUFSIEFOTk9UQVRJT04gU0VQQVJBVE9SO0NmOzA7Qk47Ozs7O047Ozs7OworRkZGQjtJTlRFUkxJTkVBUiBBTk5PVEFUSU9OIFRFUk1JTkFUT1I7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CitGRkZDO09CSkVDVCBSRVBMQUNFTUVOVCBDSEFSQUNURVI7U287MDtPTjs7Ozs7Tjs7Ozs7CitGRkZEO1JFUExBQ0VNRU5UIENIQVJBQ1RFUjtTbzswO09OOzs7OztOOzs7OzsKZGlmZiAtLWdpdCBhL3NyYy9kYXRhL3VuaWNvZGUvVW5pY29kZURhdGEudHh0IGIvc3JjL2RhdGEvdW5pY29kZS9Vbmljb2RlRGF0YS50eHQKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYTkwNzQ0YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9kYXRhL3VuaWNvZGUvVW5pY29kZURhdGEudHh0CkBAIC0wLDAgKzEsMTA2MTkgQEAKKzAwMDA7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047TlVMTDs7OzsKKzAwMDE7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047U1RBUlQgT0YgSEVBRElORzs7OzsKKzAwMDI7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047U1RBUlQgT0YgVEVYVDs7OzsKKzAwMDM7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047RU5EIE9GIFRFWFQ7Ozs7CiswMDA0Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO0VORCBPRiBUUkFOU01JU1NJT047Ozs7CiswMDA1Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO0VOUVVJUlk7Ozs7CiswMDA2Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO0FDS05PV0xFREdFOzs7OworMDAwNzs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtCRUxMOzs7OworMDAwODs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtCQUNLU1BBQ0U7Ozs7CiswMDA5Ozxjb250cm9sPjtDYzswO1M7Ozs7O047SE9SSVpPTlRBTCBUQUJVTEFUSU9OOzs7OworMDAwQTs8Y29udHJvbD47Q2M7MDtCOzs7OztOO0xJTkUgRkVFRDs7OzsKKzAwMEI7PGNvbnRyb2w+O0NjOzA7Uzs7Ozs7TjtWRVJUSUNBTCBUQUJVTEFUSU9OOzs7OworMDAwQzs8Y29udHJvbD47Q2M7MDtXUzs7Ozs7TjtGT1JNIEZFRUQ7Ozs7CiswMDBEOzxjb250cm9sPjtDYzswO0I7Ozs7O047Q0FSUklBR0UgUkVUVVJOOzs7OworMDAwRTs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtTSElGVCBPVVQ7Ozs7CiswMDBGOzxjb250cm9sPjtDYzswO0JOOzs7OztOO1NISUZUIElOOzs7OworMDAxMDs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtEQVRBIExJTksgRVNDQVBFOzs7OworMDAxMTs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtERVZJQ0UgQ09OVFJPTCBPTkU7Ozs7CiswMDEyOzxjb250cm9sPjtDYzswO0JOOzs7OztOO0RFVklDRSBDT05UUk9MIFRXTzs7OzsKKzAwMTM7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047REVWSUNFIENPTlRST0wgVEhSRUU7Ozs7CiswMDE0Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO0RFVklDRSBDT05UUk9MIEZPVVI7Ozs7CiswMDE1Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO05FR0FUSVZFIEFDS05PV0xFREdFOzs7OworMDAxNjs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtTWU5DSFJPTk9VUyBJRExFOzs7OworMDAxNzs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLOzs7OworMDAxODs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtDQU5DRUw7Ozs7CiswMDE5Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO0VORCBPRiBNRURJVU07Ozs7CiswMDFBOzxjb250cm9sPjtDYzswO0JOOzs7OztOO1NVQlNUSVRVVEU7Ozs7CiswMDFCOzxjb250cm9sPjtDYzswO0JOOzs7OztOO0VTQ0FQRTs7OzsKKzAwMUM7PGNvbnRyb2w+O0NjOzA7Qjs7Ozs7TjtGSUxFIFNFUEFSQVRPUjs7OzsKKzAwMUQ7PGNvbnRyb2w+O0NjOzA7Qjs7Ozs7TjtHUk9VUCBTRVBBUkFUT1I7Ozs7CiswMDFFOzxjb250cm9sPjtDYzswO0I7Ozs7O047UkVDT1JEIFNFUEFSQVRPUjs7OzsKKzAwMUY7PGNvbnRyb2w+O0NjOzA7Uzs7Ozs7TjtVTklUIFNFUEFSQVRPUjs7OzsKKzAwMjA7U1BBQ0U7WnM7MDtXUzs7Ozs7Tjs7Ozs7CiswMDIxO0VYQ0xBTUFUSU9OIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMDIyO1FVT1RBVElPTiBNQVJLO1BvOzA7T047Ozs7O047Ozs7OworMDAyMztOVU1CRVIgU0lHTjtQbzswO0VUOzs7OztOOzs7OzsKKzAwMjQ7RE9MTEFSIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CiswMDI1O1BFUkNFTlQgU0lHTjtQbzswO0VUOzs7OztOOzs7OzsKKzAwMjY7QU1QRVJTQU5EO1BvOzA7T047Ozs7O047Ozs7OworMDAyNztBUE9TVFJPUEhFO1BvOzA7T047Ozs7O047QVBPU1RST1BIRS1RVU9URTs7OzsKKzAwMjg7TEVGVCBQQVJFTlRIRVNJUztQczswO09OOzs7OztZO09QRU5JTkcgUEFSRU5USEVTSVM7Ozs7CiswMDI5O1JJR0hUIFBBUkVOVEhFU0lTO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBQQVJFTlRIRVNJUzs7OzsKKzAwMkE7QVNURVJJU0s7UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMDJCO1BMVVMgU0lHTjtTbTswO0VUOzs7OztOOzs7OzsKKzAwMkM7Q09NTUE7UG87MDtDUzs7Ozs7Tjs7Ozs7CiswMDJEO0hZUEhFTi1NSU5VUztQZDswO0VUOzs7OztOOzs7OzsKKzAwMkU7RlVMTCBTVE9QO1BvOzA7Q1M7Ozs7O047UEVSSU9EOzs7OworMDAyRjtTT0xJRFVTO1BvOzA7RVM7Ozs7O047U0xBU0g7Ozs7CiswMDMwO0RJR0lUIFpFUk87TmQ7MDtFTjs7MDswOzA7Tjs7Ozs7CiswMDMxO0RJR0lUIE9ORTtOZDswO0VOOzsxOzE7MTtOOzs7OzsKKzAwMzI7RElHSVQgVFdPO05kOzA7RU47OzI7MjsyO047Ozs7OworMDAzMztESUdJVCBUSFJFRTtOZDswO0VOOzszOzM7MztOOzs7OzsKKzAwMzQ7RElHSVQgRk9VUjtOZDswO0VOOzs0OzQ7NDtOOzs7OzsKKzAwMzU7RElHSVQgRklWRTtOZDswO0VOOzs1OzU7NTtOOzs7OzsKKzAwMzY7RElHSVQgU0lYO05kOzA7RU47OzY7Njs2O047Ozs7OworMDAzNztESUdJVCBTRVZFTjtOZDswO0VOOzs3Ozc7NztOOzs7OzsKKzAwMzg7RElHSVQgRUlHSFQ7TmQ7MDtFTjs7ODs4Ozg7Tjs7Ozs7CiswMDM5O0RJR0lUIE5JTkU7TmQ7MDtFTjs7OTs5Ozk7Tjs7Ozs7CiswMDNBO0NPTE9OO1BvOzA7Q1M7Ozs7O047Ozs7OworMDAzQjtTRU1JQ09MT047UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMDNDO0xFU1MtVEhBTiBTSUdOO1NtOzA7T047Ozs7O1k7Ozs7OworMDAzRDtFUVVBTFMgU0lHTjtTbTswO09OOzs7OztOOzs7OzsKKzAwM0U7R1JFQVRFUi1USEFOIFNJR047U207MDtPTjs7Ozs7WTs7Ozs7CiswMDNGO1FVRVNUSU9OIE1BUks7UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMDQwO0NPTU1FUkNJQUwgQVQ7UG87MDtPTjs7Ozs7Tjs7Ozs7CiswMDQxO0xBVElOIENBUElUQUwgTEVUVEVSIEE7THU7MDtMOzs7OztOOzs7OzAwNjE7CiswMDQyO0xBVElOIENBUElUQUwgTEVUVEVSIEI7THU7MDtMOzs7OztOOzs7OzAwNjI7CiswMDQzO0xBVElOIENBUElUQUwgTEVUVEVSIEM7THU7MDtMOzs7OztOOzs7OzAwNjM7CiswMDQ0O0xBVElOIENBUElUQUwgTEVUVEVSIEQ7THU7MDtMOzs7OztOOzs7OzAwNjQ7CiswMDQ1O0xBVElOIENBUElUQUwgTEVUVEVSIEU7THU7MDtMOzs7OztOOzs7OzAwNjU7CiswMDQ2O0xBVElOIENBUElUQUwgTEVUVEVSIEY7THU7MDtMOzs7OztOOzs7OzAwNjY7CiswMDQ3O0xBVElOIENBUElUQUwgTEVUVEVSIEc7THU7MDtMOzs7OztOOzs7OzAwNjc7CiswMDQ4O0xBVElOIENBUElUQUwgTEVUVEVSIEg7THU7MDtMOzs7OztOOzs7OzAwNjg7CiswMDQ5O0xBVElOIENBUElUQUwgTEVUVEVSIEk7THU7MDtMOzs7OztOOzs7OzAwNjk7CiswMDRBO0xBVElOIENBUElUQUwgTEVUVEVSIEo7THU7MDtMOzs7OztOOzs7OzAwNkE7CiswMDRCO0xBVElOIENBUElUQUwgTEVUVEVSIEs7THU7MDtMOzs7OztOOzs7OzAwNkI7CiswMDRDO0xBVElOIENBUElUQUwgTEVUVEVSIEw7THU7MDtMOzs7OztOOzs7OzAwNkM7CiswMDREO0xBVElOIENBUElUQUwgTEVUVEVSIE07THU7MDtMOzs7OztOOzs7OzAwNkQ7CiswMDRFO0xBVElOIENBUElUQUwgTEVUVEVSIE47THU7MDtMOzs7OztOOzs7OzAwNkU7CiswMDRGO0xBVElOIENBUElUQUwgTEVUVEVSIE87THU7MDtMOzs7OztOOzs7OzAwNkY7CiswMDUwO0xBVElOIENBUElUQUwgTEVUVEVSIFA7THU7MDtMOzs7OztOOzs7OzAwNzA7CiswMDUxO0xBVElOIENBUElUQUwgTEVUVEVSIFE7THU7MDtMOzs7OztOOzs7OzAwNzE7CiswMDUyO0xBVElOIENBUElUQUwgTEVUVEVSIFI7THU7MDtMOzs7OztOOzs7OzAwNzI7CiswMDUzO0xBVElOIENBUElUQUwgTEVUVEVSIFM7THU7MDtMOzs7OztOOzs7OzAwNzM7CiswMDU0O0xBVElOIENBUElUQUwgTEVUVEVSIFQ7THU7MDtMOzs7OztOOzs7OzAwNzQ7CiswMDU1O0xBVElOIENBUElUQUwgTEVUVEVSIFU7THU7MDtMOzs7OztOOzs7OzAwNzU7CiswMDU2O0xBVElOIENBUElUQUwgTEVUVEVSIFY7THU7MDtMOzs7OztOOzs7OzAwNzY7CiswMDU3O0xBVElOIENBUElUQUwgTEVUVEVSIFc7THU7MDtMOzs7OztOOzs7OzAwNzc7CiswMDU4O0xBVElOIENBUElUQUwgTEVUVEVSIFg7THU7MDtMOzs7OztOOzs7OzAwNzg7CiswMDU5O0xBVElOIENBUElUQUwgTEVUVEVSIFk7THU7MDtMOzs7OztOOzs7OzAwNzk7CiswMDVBO0xBVElOIENBUElUQUwgTEVUVEVSIFo7THU7MDtMOzs7OztOOzs7OzAwN0E7CiswMDVCO0xFRlQgU1FVQVJFIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIFNRVUFSRSBCUkFDS0VUOzs7OworMDA1QztSRVZFUlNFIFNPTElEVVM7UG87MDtPTjs7Ozs7TjtCQUNLU0xBU0g7Ozs7CiswMDVEO1JJR0hUIFNRVUFSRSBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBTUVVBUkUgQlJBQ0tFVDs7OzsKKzAwNUU7Q0lSQ1VNRkxFWCBBQ0NFTlQ7U2s7MDtPTjs7Ozs7TjtTUEFDSU5HIENJUkNVTUZMRVg7Ozs7CiswMDVGO0xPVyBMSU5FO1BjOzA7T047Ozs7O047U1BBQ0lORyBVTkRFUlNDT1JFOzs7OworMDA2MDtHUkFWRSBBQ0NFTlQ7U2s7MDtPTjs7Ozs7TjtTUEFDSU5HIEdSQVZFOzs7OworMDA2MTtMQVRJTiBTTUFMTCBMRVRURVIgQTtMbDswO0w7Ozs7O047OzswMDQxOzswMDQxCiswMDYyO0xBVElOIFNNQUxMIExFVFRFUiBCO0xsOzA7TDs7Ozs7Tjs7OzAwNDI7OzAwNDIKKzAwNjM7TEFUSU4gU01BTEwgTEVUVEVSIEM7TGw7MDtMOzs7OztOOzs7MDA0Mzs7MDA0MworMDA2NDtMQVRJTiBTTUFMTCBMRVRURVIgRDtMbDswO0w7Ozs7O047OzswMDQ0OzswMDQ0CiswMDY1O0xBVElOIFNNQUxMIExFVFRFUiBFO0xsOzA7TDs7Ozs7Tjs7OzAwNDU7OzAwNDUKKzAwNjY7TEFUSU4gU01BTEwgTEVUVEVSIEY7TGw7MDtMOzs7OztOOzs7MDA0Njs7MDA0NgorMDA2NztMQVRJTiBTTUFMTCBMRVRURVIgRztMbDswO0w7Ozs7O047OzswMDQ3OzswMDQ3CiswMDY4O0xBVElOIFNNQUxMIExFVFRFUiBIO0xsOzA7TDs7Ozs7Tjs7OzAwNDg7OzAwNDgKKzAwNjk7TEFUSU4gU01BTEwgTEVUVEVSIEk7TGw7MDtMOzs7OztOOzs7MDA0OTs7MDA0OQorMDA2QTtMQVRJTiBTTUFMTCBMRVRURVIgSjtMbDswO0w7Ozs7O047OzswMDRBOzswMDRBCiswMDZCO0xBVElOIFNNQUxMIExFVFRFUiBLO0xsOzA7TDs7Ozs7Tjs7OzAwNEI7OzAwNEIKKzAwNkM7TEFUSU4gU01BTEwgTEVUVEVSIEw7TGw7MDtMOzs7OztOOzs7MDA0Qzs7MDA0QworMDA2RDtMQVRJTiBTTUFMTCBMRVRURVIgTTtMbDswO0w7Ozs7O047OzswMDREOzswMDRECiswMDZFO0xBVElOIFNNQUxMIExFVFRFUiBOO0xsOzA7TDs7Ozs7Tjs7OzAwNEU7OzAwNEUKKzAwNkY7TEFUSU4gU01BTEwgTEVUVEVSIE87TGw7MDtMOzs7OztOOzs7MDA0Rjs7MDA0RgorMDA3MDtMQVRJTiBTTUFMTCBMRVRURVIgUDtMbDswO0w7Ozs7O047OzswMDUwOzswMDUwCiswMDcxO0xBVElOIFNNQUxMIExFVFRFUiBRO0xsOzA7TDs7Ozs7Tjs7OzAwNTE7OzAwNTEKKzAwNzI7TEFUSU4gU01BTEwgTEVUVEVSIFI7TGw7MDtMOzs7OztOOzs7MDA1Mjs7MDA1MgorMDA3MztMQVRJTiBTTUFMTCBMRVRURVIgUztMbDswO0w7Ozs7O047OzswMDUzOzswMDUzCiswMDc0O0xBVElOIFNNQUxMIExFVFRFUiBUO0xsOzA7TDs7Ozs7Tjs7OzAwNTQ7OzAwNTQKKzAwNzU7TEFUSU4gU01BTEwgTEVUVEVSIFU7TGw7MDtMOzs7OztOOzs7MDA1NTs7MDA1NQorMDA3NjtMQVRJTiBTTUFMTCBMRVRURVIgVjtMbDswO0w7Ozs7O047OzswMDU2OzswMDU2CiswMDc3O0xBVElOIFNNQUxMIExFVFRFUiBXO0xsOzA7TDs7Ozs7Tjs7OzAwNTc7OzAwNTcKKzAwNzg7TEFUSU4gU01BTEwgTEVUVEVSIFg7TGw7MDtMOzs7OztOOzs7MDA1ODs7MDA1OAorMDA3OTtMQVRJTiBTTUFMTCBMRVRURVIgWTtMbDswO0w7Ozs7O047OzswMDU5OzswMDU5CiswMDdBO0xBVElOIFNNQUxMIExFVFRFUiBaO0xsOzA7TDs7Ozs7Tjs7OzAwNUE7OzAwNUEKKzAwN0I7TEVGVCBDVVJMWSBCUkFDS0VUO1BzOzA7T047Ozs7O1k7T1BFTklORyBDVVJMWSBCUkFDS0VUOzs7OworMDA3QztWRVJUSUNBTCBMSU5FO1NtOzA7T047Ozs7O047VkVSVElDQUwgQkFSOzs7OworMDA3RDtSSUdIVCBDVVJMWSBCUkFDS0VUO1BlOzA7T047Ozs7O1k7Q0xPU0lORyBDVVJMWSBCUkFDS0VUOzs7OworMDA3RTtUSUxERTtTbTswO09OOzs7OztOOzs7OzsKKzAwN0Y7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047REVMRVRFOzs7OworMDA4MDs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7Tjs7Ozs7CiswMDgxOzxjb250cm9sPjtDYzswO0JOOzs7OztOOzs7OzsKKzAwODI7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047QlJFQUsgUEVSTUlUVEVEIEhFUkU7Ozs7CiswMDgzOzxjb250cm9sPjtDYzswO0JOOzs7OztOO05PIEJSRUFLIEhFUkU7Ozs7CiswMDg0Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO0lOREVYOzs7OworMDA4NTs8Y29udHJvbD47Q2M7MDtCOzs7OztOO05FWFQgTElORTs7OzsKKzAwODY7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047U1RBUlQgT0YgU0VMRUNURUQgQVJFQTs7OzsKKzAwODc7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047RU5EIE9GIFNFTEVDVEVEIEFSRUE7Ozs7CiswMDg4Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO0NIQVJBQ1RFUiBUQUJVTEFUSU9OIFNFVDs7OzsKKzAwODk7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047Q0hBUkFDVEVSIFRBQlVMQVRJT04gV0lUSCBKVVNUSUZJQ0FUSU9OOzs7OworMDA4QTs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtMSU5FIFRBQlVMQVRJT04gU0VUOzs7OworMDA4Qjs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtQQVJUSUFMIExJTkUgRE9XTjs7OzsKKzAwOEM7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047UEFSVElBTCBMSU5FIFVQOzs7OworMDA4RDs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtSRVZFUlNFIExJTkUgRkVFRDs7OzsKKzAwOEU7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047U0lOR0xFIFNISUZUIFRXTzs7OzsKKzAwOEY7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047U0lOR0xFIFNISUZUIFRIUkVFOzs7OworMDA5MDs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtERVZJQ0UgQ09OVFJPTCBTVFJJTkc7Ozs7CiswMDkxOzxjb250cm9sPjtDYzswO0JOOzs7OztOO1BSSVZBVEUgVVNFIE9ORTs7OzsKKzAwOTI7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047UFJJVkFURSBVU0UgVFdPOzs7OworMDA5Mzs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtTRVQgVFJBTlNNSVQgU1RBVEU7Ozs7CiswMDk0Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO0NBTkNFTCBDSEFSQUNURVI7Ozs7CiswMDk1Ozxjb250cm9sPjtDYzswO0JOOzs7OztOO01FU1NBR0UgV0FJVElORzs7OzsKKzAwOTY7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047U1RBUlQgT0YgR1VBUkRFRCBBUkVBOzs7OworMDA5Nzs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtFTkQgT0YgR1VBUkRFRCBBUkVBOzs7OworMDA5ODs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtTVEFSVCBPRiBTVFJJTkc7Ozs7CiswMDk5Ozxjb250cm9sPjtDYzswO0JOOzs7OztOOzs7OzsKKzAwOUE7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047U0lOR0xFIENIQVJBQ1RFUiBJTlRST0RVQ0VSOzs7OworMDA5Qjs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtDT05UUk9MIFNFUVVFTkNFIElOVFJPRFVDRVI7Ozs7CiswMDlDOzxjb250cm9sPjtDYzswO0JOOzs7OztOO1NUUklORyBURVJNSU5BVE9SOzs7OworMDA5RDs8Y29udHJvbD47Q2M7MDtCTjs7Ozs7TjtPUEVSQVRJTkcgU1lTVEVNIENPTU1BTkQ7Ozs7CiswMDlFOzxjb250cm9sPjtDYzswO0JOOzs7OztOO1BSSVZBQ1kgTUVTU0FHRTs7OzsKKzAwOUY7PGNvbnRyb2w+O0NjOzA7Qk47Ozs7O047QVBQTElDQVRJT04gUFJPR1JBTSBDT01NQU5EOzs7OworMDBBMDtOTy1CUkVBSyBTUEFDRTtaczswO0NTOzxub0JyZWFrPiAwMDIwOzs7O047Tk9OLUJSRUFLSU5HIFNQQUNFOzs7OworMDBBMTtJTlZFUlRFRCBFWENMQU1BVElPTiBNQVJLO1BvOzA7T047Ozs7O047Ozs7OworMDBBMjtDRU5UIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CiswMEEzO1BPVU5EIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CiswMEE0O0NVUlJFTkNZIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CiswMEE1O1lFTiBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMDBBNjtCUk9LRU4gQkFSO1NvOzA7T047Ozs7O047QlJPS0VOIFZFUlRJQ0FMIEJBUjs7OzsKKzAwQTc7U0VDVElPTiBTSUdOO1NvOzA7T047Ozs7O047Ozs7OworMDBBODtESUFFUkVTSVM7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDg7Ozs7TjtTUEFDSU5HIERJQUVSRVNJUzs7OzsKKzAwQTk7Q09QWVJJR0hUIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CiswMEFBO0ZFTUlOSU5FIE9SRElOQUwgSU5ESUNBVE9SO0xsOzA7TDs8c3VwZXI+IDAwNjE7Ozs7Tjs7Ozs7CiswMEFCO0xFRlQtUE9JTlRJTkcgRE9VQkxFIEFOR0xFIFFVT1RBVElPTiBNQVJLO1BpOzA7T047Ozs7O1k7TEVGVCBQT0lOVElORyBHVUlMTEVNRVQ7Kjs7OworMDBBQztOT1QgU0lHTjtTbTswO09OOzs7OztOOzs7OzsKKzAwQUQ7U09GVCBIWVBIRU47UGQ7MDtPTjs7Ozs7Tjs7Ozs7CiswMEFFO1JFR0lTVEVSRUQgU0lHTjtTbzswO09OOzs7OztOO1JFR0lTVEVSRUQgVFJBREUgTUFSSyBTSUdOOzs7OworMDBBRjtNQUNST047U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDQ7Ozs7TjtTUEFDSU5HIE1BQ1JPTjs7OzsKKzAwQjA7REVHUkVFIFNJR047U287MDtFVDs7Ozs7Tjs7Ozs7CiswMEIxO1BMVVMtTUlOVVMgU0lHTjtTbTswO0VUOzs7OztOO1BMVVMtT1ItTUlOVVMgU0lHTjs7OzsKKzAwQjI7U1VQRVJTQ1JJUFQgVFdPO05vOzA7RU47PHN1cGVyPiAwMDMyOzI7MjsyO047U1VQRVJTQ1JJUFQgRElHSVQgVFdPOzs7OworMDBCMztTVVBFUlNDUklQVCBUSFJFRTtObzswO0VOOzxzdXBlcj4gMDAzMzszOzM7MztOO1NVUEVSU0NSSVBUIERJR0lUIFRIUkVFOzs7OworMDBCNDtBQ1VURSBBQ0NFTlQ7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDE7Ozs7TjtTUEFDSU5HIEFDVVRFOzs7OworMDBCNTtNSUNSTyBTSUdOO0xsOzA7TDs8Y29tcGF0PiAwM0JDOzs7O047OzswMzlDOzswMzlDCiswMEI2O1BJTENST1cgU0lHTjtTbzswO09OOzs7OztOO1BBUkFHUkFQSCBTSUdOOzs7OworMDBCNztNSURETEUgRE9UO1BvOzA7T047Ozs7O047Ozs7OworMDBCODtDRURJTExBO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzI3Ozs7O047U1BBQ0lORyBDRURJTExBOzs7OworMDBCOTtTVVBFUlNDUklQVCBPTkU7Tm87MDtFTjs8c3VwZXI+IDAwMzE7MTsxOzE7TjtTVVBFUlNDUklQVCBESUdJVCBPTkU7Ozs7CiswMEJBO01BU0NVTElORSBPUkRJTkFMIElORElDQVRPUjtMbDswO0w7PHN1cGVyPiAwMDZGOzs7O047Ozs7OworMDBCQjtSSUdIVC1QT0lOVElORyBET1VCTEUgQU5HTEUgUVVPVEFUSU9OIE1BUks7UGY7MDtPTjs7Ozs7WTtSSUdIVCBQT0lOVElORyBHVUlMTEVNRVQ7Kjs7OworMDBCQztWVUxHQVIgRlJBQ1RJT04gT05FIFFVQVJURVI7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzEgMjA0NCAwMDM0Ozs7MS80O047RlJBQ1RJT04gT05FIFFVQVJURVI7Ozs7CiswMEJEO1ZVTEdBUiBGUkFDVElPTiBPTkUgSEFMRjtObzswO09OOzxmcmFjdGlvbj4gMDAzMSAyMDQ0IDAwMzI7OzsxLzI7TjtGUkFDVElPTiBPTkUgSEFMRjs7OzsKKzAwQkU7VlVMR0FSIEZSQUNUSU9OIFRIUkVFIFFVQVJURVJTO05vOzA7T047PGZyYWN0aW9uPiAwMDMzIDIwNDQgMDAzNDs7OzMvNDtOO0ZSQUNUSU9OIFRIUkVFIFFVQVJURVJTOzs7OworMDBCRjtJTlZFUlRFRCBRVUVTVElPTiBNQVJLO1BvOzA7T047Ozs7O047Ozs7OworMDBDMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggR1JBVkU7THU7MDtMOzAwNDEgMDMwMDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgR1JBVkU7OzswMEUwOworMDBDMTtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQUNVVEU7THU7MDtMOzAwNDEgMDMwMTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgQUNVVEU7OzswMEUxOworMDBDMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA0MSAwMzAyOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBDSVJDVU1GTEVYOzs7MDBFMjsKKzAwQzM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFRJTERFO0x1OzA7TDswMDQxIDAzMDM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFRJTERFOzs7MDBFMzsKKzAwQzQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDA0MSAwMzA4Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBESUFFUkVTSVM7OzswMEU0OworMDBDNTtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggUklORyBBQk9WRTtMdTswO0w7MDA0MSAwMzBBOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBSSU5HOzs7MDBFNTsKKzAwQzY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQUU7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgRTthc2ggKjs7MDBFNjsKKzAwQzc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEE7THU7MDtMOzAwNDMgMDMyNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEMgQ0VESUxMQTs7OzAwRTc7CiswMEM4O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBHUkFWRTtMdTswO0w7MDA0NSAwMzAwOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBHUkFWRTs7OzAwRTg7CiswMEM5O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBBQ1VURTtMdTswO0w7MDA0NSAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBBQ1VURTs7OzAwRTk7CiswMENBO0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDQ1IDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIENJUkNVTUZMRVg7OzswMEVBOworMDBDQjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDQ1IDAzMDg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIERJQUVSRVNJUzs7OzAwRUI7CiswMENDO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBHUkFWRTtMdTswO0w7MDA0OSAwMzAwOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBHUkFWRTs7OzAwRUM7CiswMENEO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBBQ1VURTtMdTswO0w7MDA0OSAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBBQ1VURTs7OzAwRUQ7CiswMENFO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDQ5IDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIENJUkNVTUZMRVg7OzswMEVFOworMDBDRjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDQ5IDAzMDg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIERJQUVSRVNJUzs7OzAwRUY7CiswMEQwO0xBVElOIENBUElUQUwgTEVUVEVSIEVUSDtMdTswO0w7Ozs7O047O0ljZWxhbmRpYzs7MDBGMDsKKzAwRDE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIFRJTERFO0x1OzA7TDswMDRFIDAzMDM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFRJTERFOzs7MDBGMTsKKzAwRDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEdSQVZFO0x1OzA7TDswMDRGIDAzMDA7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIEdSQVZFOzs7MDBGMjsKKzAwRDM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEFDVVRFO0x1OzA7TDswMDRGIDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIEFDVVRFOzs7MDBGMzsKKzAwRDQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNEYgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gQ0lSQ1VNRkxFWDs7OzAwRjQ7CiswMEQ1O0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERTtMdTswO0w7MDA0RiAwMzAzOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBUSUxERTs7OzAwRjU7CiswMEQ2O0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVM7THU7MDtMOzAwNEYgMDMwODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gRElBRVJFU0lTOzs7MDBGNjsKKzAwRDc7TVVMVElQTElDQVRJT04gU0lHTjtTbTswO09OOzs7OztOOzs7OzsKKzAwRDg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBTTEFTSDs7OzAwRjg7CiswMEQ5O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBHUkFWRTtMdTswO0w7MDA1NSAwMzAwOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBHUkFWRTs7OzAwRjk7CiswMERBO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBBQ1VURTtMdTswO0w7MDA1NSAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBBQ1VURTs7OzAwRkE7CiswMERCO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDU1IDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIENJUkNVTUZMRVg7OzswMEZCOworMDBEQztMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDU1IDAzMDg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIERJQUVSRVNJUzs7OzAwRkM7CiswMEREO0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBBQ1VURTtMdTswO0w7MDA1OSAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBBQ1VURTs7OzAwRkQ7CiswMERFO0xBVElOIENBUElUQUwgTEVUVEVSIFRIT1JOO0x1OzA7TDs7Ozs7Tjs7SWNlbGFuZGljOzswMEZFOworMDBERjtMQVRJTiBTTUFMTCBMRVRURVIgU0hBUlAgUztMbDswO0w7Ozs7O047O0dlcm1hbjs7OworMDBFMDtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEdSQVZFO0xsOzA7TDswMDYxIDAzMDA7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBHUkFWRTs7MDBDMDs7MDBDMAorMDBFMTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEFDVVRFO0xsOzA7TDswMDYxIDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBBQ1VURTs7MDBDMTs7MDBDMQorMDBFMjtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNjEgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIENJUkNVTUZMRVg7OzAwQzI7OzAwQzIKKzAwRTM7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBUSUxERTtMbDswO0w7MDA2MSAwMzAzOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgVElMREU7OzAwQzM7OzAwQzMKKzAwRTQ7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzAwNjEgMDMwODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIERJQUVSRVNJUzs7MDBDNDs7MDBDNAorMDBFNTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJTkcgQUJPVkU7TGw7MDtMOzAwNjEgMDMwQTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIFJJTkc7OzAwQzU7OzAwQzUKKzAwRTY7TEFUSU4gU01BTEwgTEVUVEVSIEFFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBFO2FzaCAqOzAwQzY7OzAwQzYKKzAwRTc7TEFUSU4gU01BTEwgTEVUVEVSIEMgV0lUSCBDRURJTExBO0xsOzA7TDswMDYzIDAzMjc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQyBDRURJTExBOzswMEM3OzswMEM3CiswMEU4O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggR1JBVkU7TGw7MDtMOzAwNjUgMDMwMDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFIEdSQVZFOzswMEM4OzswMEM4CiswMEU5O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQUNVVEU7TGw7MDtMOzAwNjUgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFIEFDVVRFOzswMEM5OzswMEM5CiswMEVBO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA2NSAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEUgQ0lSQ1VNRkxFWDs7MDBDQTs7MDBDQQorMDBFQjtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA2NSAwMzA4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEUgRElBRVJFU0lTOzswMENCOzswMENCCiswMEVDO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggR1JBVkU7TGw7MDtMOzAwNjkgMDMwMDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIEdSQVZFOzswMENDOzswMENDCiswMEVEO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQUNVVEU7TGw7MDtMOzAwNjkgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIEFDVVRFOzswMENEOzswMENECiswMEVFO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA2OSAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEkgQ0lSQ1VNRkxFWDs7MDBDRTs7MDBDRQorMDBFRjtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDA2OSAwMzA4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEkgRElBRVJFU0lTOzswMENGOzswMENGCiswMEYwO0xBVElOIFNNQUxMIExFVFRFUiBFVEg7TGw7MDtMOzs7OztOOztJY2VsYW5kaWM7MDBEMDs7MDBEMAorMDBGMTtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFRJTERFO0xsOzA7TDswMDZFIDAzMDM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTiBUSUxERTs7MDBEMTs7MDBEMQorMDBGMjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEdSQVZFO0xsOzA7TDswMDZGIDAzMDA7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBHUkFWRTs7MDBEMjs7MDBEMgorMDBGMztMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEFDVVRFO0xsOzA7TDswMDZGIDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBBQ1VURTs7MDBEMzs7MDBEMworMDBGNDtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNkYgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIENJUkNVTUZMRVg7OzAwRDQ7OzAwRDQKKzAwRjU7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERTtMbDswO0w7MDA2RiAwMzAzOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gVElMREU7OzAwRDU7OzAwRDUKKzAwRjY7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVM7TGw7MDtMOzAwNkYgMDMwODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIERJQUVSRVNJUzs7MDBENjs7MDBENgorMDBGNztESVZJU0lPTiBTSUdOO1NtOzA7T047Ozs7O047Ozs7OworMDBGODtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gU0xBU0g7OzAwRDg7OzAwRDgKKzAwRjk7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBHUkFWRTtMbDswO0w7MDA3NSAwMzAwOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgR1JBVkU7OzAwRDk7OzAwRDkKKzAwRkE7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBBQ1VURTtMbDswO0w7MDA3NSAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgQUNVVEU7OzAwREE7OzAwREEKKzAwRkI7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDc1IDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBDSVJDVU1GTEVYOzswMERCOzswMERCCiswMEZDO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTO0xsOzA7TDswMDc1IDAzMDg7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBESUFFUkVTSVM7OzAwREM7OzAwREMKKzAwRkQ7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBBQ1VURTtMbDswO0w7MDA3OSAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFkgQUNVVEU7OzAwREQ7OzAwREQKKzAwRkU7TEFUSU4gU01BTEwgTEVUVEVSIFRIT1JOO0xsOzA7TDs7Ozs7Tjs7SWNlbGFuZGljOzAwREU7OzAwREUKKzAwRkY7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzAwNzkgMDMwODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBZIERJQUVSRVNJUzs7MDE3ODs7MDE3OAorMDEwMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggTUFDUk9OO0x1OzA7TDswMDQxIDAzMDQ7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIE1BQ1JPTjs7OzAxMDE7CiswMTAxO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggTUFDUk9OO0xsOzA7TDswMDYxIDAzMDQ7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQSBNQUNST047OzAxMDA7OzAxMDAKKzAxMDI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFO0x1OzA7TDswMDQxIDAzMDY7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIEJSRVZFOzs7MDEwMzsKKzAxMDM7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRTtMbDswO0w7MDA2MSAwMzA2Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgQlJFVkU7OzAxMDI7OzAxMDIKKzAxMDQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIE9HT05FSztMdTswO0w7MDA0MSAwMzI4Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBPR09ORUs7OzswMTA1OworMDEwNTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIE9HT05FSztMbDswO0w7MDA2MSAwMzI4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgT0dPTkVLOzswMTA0OzswMTA0CiswMTA2O0xBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBBQ1VURTtMdTswO0w7MDA0MyAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBBQ1VURTs7OzAxMDc7CiswMTA3O0xBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQUNVVEU7TGw7MDtMOzAwNjMgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDIEFDVVRFOzswMTA2OzswMTA2CiswMTA4O0xBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDQzIDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBDIENJUkNVTUZMRVg7OzswMTA5OworMDEwOTtMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNjMgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDIENJUkNVTUZMRVg7OzAxMDg7OzAxMDgKKzAxMEE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0MyAwMzA3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBET1Q7OzswMTBCOworMDEwQjtMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2MyAwMzA3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEMgRE9UOzswMTBBOzswMTBBCiswMTBDO0xBVElOIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDQVJPTjtMdTswO0w7MDA0MyAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBIQUNFSzs7OzAxMEQ7CiswMTBEO0xBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ0FST047TGw7MDtMOzAwNjMgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDIEhBQ0VLOzswMTBDOzswMTBDCiswMTBFO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBDQVJPTjtMdTswO0w7MDA0NCAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBIQUNFSzs7OzAxMEY7CiswMTBGO0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggQ0FST047TGw7MDtMOzAwNjQgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIEhBQ0VLOzswMTBFOzswMTBFCiswMTEwO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBTVFJPS0U7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEQgQkFSOzs7MDExMTsKKzAxMTE7TEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIEJBUjs7MDExMDs7MDExMAorMDExMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggTUFDUk9OO0x1OzA7TDswMDQ1IDAzMDQ7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIE1BQ1JPTjs7OzAxMTM7CiswMTEzO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggTUFDUk9OO0xsOzA7TDswMDY1IDAzMDQ7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRSBNQUNST047OzAxMTI7OzAxMTIKKzAxMTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEJSRVZFO0x1OzA7TDswMDQ1IDAzMDY7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIEJSRVZFOzs7MDExNTsKKzAxMTU7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBCUkVWRTtMbDswO0w7MDA2NSAwMzA2Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEUgQlJFVkU7OzAxMTQ7OzAxMTQKKzAxMTY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0NSAwMzA3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBET1Q7OzswMTE3OworMDExNztMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2NSAwMzA3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEUgRE9UOzswMTE2OzswMTE2CiswMTE4O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBPR09ORUs7THU7MDtMOzAwNDUgMDMyODs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEUgT0dPTkVLOzs7MDExOTsKKzAxMTk7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBPR09ORUs7TGw7MDtMOzAwNjUgMDMyODs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFIE9HT05FSzs7MDExODs7MDExOAorMDExQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0FST047THU7MDtMOzAwNDUgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEUgSEFDRUs7OzswMTFCOworMDExQjtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENBUk9OO0xsOzA7TDswMDY1IDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRSBIQUNFSzs7MDExQTs7MDExQQorMDExQztMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQ0lSQ1VNRkxFWDtMdTswO0w7MDA0NyAwMzAyOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBDSVJDVU1GTEVYOzs7MDExRDsKKzAxMUQ7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBDSVJDVU1GTEVYO0xsOzA7TDswMDY3IDAzMDI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRyBDSVJDVU1GTEVYOzswMTFDOzswMTFDCiswMTFFO0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBCUkVWRTtMdTswO0w7MDA0NyAwMzA2Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBCUkVWRTs7OzAxMUY7CiswMTFGO0xBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggQlJFVkU7TGw7MDtMOzAwNjcgMDMwNjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBHIEJSRVZFOzswMTFFOzswMTFFCiswMTIwO0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNDcgMDMwNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEcgRE9UOzs7MDEyMTsKKzAxMjE7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNjcgMDMwNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBHIERPVDs7MDEyMDs7MDEyMAorMDEyMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggQ0VESUxMQTtMdTswO0w7MDA0NyAwMzI3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBDRURJTExBOzs7MDEyMzsKKzAxMjM7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBDRURJTExBO0xsOzA7TDswMDY3IDAzMjc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRyBDRURJTExBOzswMTIyOzswMTIyCiswMTI0O0xBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDQ4IDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIENJUkNVTUZMRVg7OzswMTI1OworMDEyNTtMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNjggMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBIIENJUkNVTUZMRVg7OzAxMjQ7OzAxMjQKKzAxMjY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBCQVI7OzswMTI3OworMDEyNztMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEggQkFSOzswMTI2OzswMTI2CiswMTI4O0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBUSUxERTtMdTswO0w7MDA0OSAwMzAzOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBUSUxERTs7OzAxMjk7CiswMTI5O0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggVElMREU7TGw7MDtMOzAwNjkgMDMwMzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIFRJTERFOzswMTI4OzswMTI4CiswMTJBO0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBNQUNST047THU7MDtMOzAwNDkgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEkgTUFDUk9OOzs7MDEyQjsKKzAxMkI7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBNQUNST047TGw7MDtMOzAwNjkgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIE1BQ1JPTjs7MDEyQTs7MDEyQQorMDEyQztMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggQlJFVkU7THU7MDtMOzAwNDkgMDMwNjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEkgQlJFVkU7OzswMTJEOworMDEyRDtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEJSRVZFO0xsOzA7TDswMDY5IDAzMDY7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSSBCUkVWRTs7MDEyQzs7MDEyQworMDEyRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggT0dPTkVLO0x1OzA7TDswMDQ5IDAzMjg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIE9HT05FSzs7OzAxMkY7CiswMTJGO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggT0dPTkVLO0xsOzA7TDswMDY5IDAzMjg7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSSBPR09ORUs7OzAxMkU7OzAxMkUKKzAxMzA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0OSAwMzA3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBET1Q7OzswMDY5OworMDEzMTtMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBJO0xsOzA7TDs7Ozs7Tjs7OzAwNDk7OzAwNDkKKzAxMzI7TEFUSU4gQ0FQSVRBTCBMSUdBVFVSRSBJSjtMdTswO0w7PGNvbXBhdD4gMDA0OSAwMDRBOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBKOzs7MDEzMzsKKzAxMzM7TEFUSU4gU01BTEwgTElHQVRVUkUgSUo7TGw7MDtMOzxjb21wYXQ+IDAwNjkgMDA2QTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBJIEo7OzAxMzI7OzAxMzIKKzAxMzQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSiBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNEEgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEogQ0lSQ1VNRkxFWDs7OzAxMzU7CiswMTM1O0xBVElOIFNNQUxMIExFVFRFUiBKIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA2QSAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEogQ0lSQ1VNRkxFWDs7MDEzNDs7MDEzNAorMDEzNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggQ0VESUxMQTtMdTswO0w7MDA0QiAwMzI3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBDRURJTExBOzs7MDEzNzsKKzAxMzc7TEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBDRURJTExBO0xsOzA7TDswMDZCIDAzMjc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSyBDRURJTExBOzswMTM2OzswMTM2CiswMTM4O0xBVElOIFNNQUxMIExFVFRFUiBLUkE7TGw7MDtMOzs7OztOOztHcmVlbmxhbmRpYzs7OworMDEzOTtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQUNVVEU7THU7MDtMOzAwNEMgMDMwMTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEwgQUNVVEU7OzswMTNBOworMDEzQTtMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIEFDVVRFO0xsOzA7TDswMDZDIDAzMDE7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTCBBQ1VURTs7MDEzOTs7MDEzOQorMDEzQjtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggQ0VESUxMQTtMdTswO0w7MDA0QyAwMzI3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBDRURJTExBOzs7MDEzQzsKKzAxM0M7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBDRURJTExBO0xsOzA7TDswMDZDIDAzMjc7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTCBDRURJTExBOzswMTNCOzswMTNCCiswMTNEO0xBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDQVJPTjtMdTswO0w7MDA0QyAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBIQUNFSzs7OzAxM0U7CiswMTNFO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQ0FST047TGw7MDtMOzAwNkMgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBMIEhBQ0VLOzswMTNEOzswMTNECiswMTNGO0xBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBNSURETEUgRE9UO0x1OzA7TDs8Y29tcGF0PiAwMDRDIDAwQjc7Ozs7Tjs7OzswMTQwOworMDE0MDtMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIE1JRERMRSBET1Q7TGw7MDtMOzxjb21wYXQ+IDAwNkMgMDBCNzs7OztOOzs7MDEzRjs7MDEzRgorMDE0MTtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggU1RST0tFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFNMQVNIOzs7MDE0MjsKKzAxNDI7TEFUSU4gU01BTEwgTEVUVEVSIEwgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBMIFNMQVNIOzswMTQxOzswMTQxCiswMTQzO0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBBQ1VURTtMdTswO0w7MDA0RSAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBBQ1VURTs7OzAxNDQ7CiswMTQ0O0xBVElOIFNNQUxMIExFVFRFUiBOIFdJVEggQUNVVEU7TGw7MDtMOzAwNkUgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBOIEFDVVRFOzswMTQzOzswMTQzCiswMTQ1O0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBDRURJTExBO0x1OzA7TDswMDRFIDAzMjc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIENFRElMTEE7OzswMTQ2OworMDE0NjtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIENFRElMTEE7TGw7MDtMOzAwNkUgMDMyNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBOIENFRElMTEE7OzAxNDU7OzAxNDUKKzAxNDc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIENBUk9OO0x1OzA7TDswMDRFIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIEhBQ0VLOzs7MDE0ODsKKzAxNDg7TEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBDQVJPTjtMbDswO0w7MDA2RSAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE4gSEFDRUs7OzAxNDc7OzAxNDcKKzAxNDk7TEFUSU4gU01BTEwgTEVUVEVSIE4gUFJFQ0VERUQgQlkgQVBPU1RST1BIRTtMbDswO0w7PGNvbXBhdD4gMDJCQyAwMDZFOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEFQT1NUUk9QSEUgTjs7OzsKKzAxNEE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRU5HO0x1OzA7TDs7Ozs7Tjs7U2FtaTs7MDE0QjsKKzAxNEI7TEFUSU4gU01BTEwgTEVUVEVSIEVORztMbDswO0w7Ozs7O047O1NhbWk7MDE0QTs7MDE0QQorMDE0QztMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTUFDUk9OO0x1OzA7TDswMDRGIDAzMDQ7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIE1BQ1JPTjs7OzAxNEQ7CiswMTREO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggTUFDUk9OO0xsOzA7TDswMDZGIDAzMDQ7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBNQUNST047OzAxNEM7OzAxNEMKKzAxNEU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEJSRVZFO0x1OzA7TDswMDRGIDAzMDY7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIEJSRVZFOzs7MDE0RjsKKzAxNEY7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBCUkVWRTtMbDswO0w7MDA2RiAwMzA2Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gQlJFVkU7OzAxNEU7OzAxNEUKKzAxNTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERPVUJMRSBBQ1VURTtMdTswO0w7MDA0RiAwMzBCOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBET1VCTEUgQUNVVEU7OzswMTUxOworMDE1MTtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERPVUJMRSBBQ1VURTtMbDswO0w7MDA2RiAwMzBCOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gRE9VQkxFIEFDVVRFOzswMTUwOzswMTUwCiswMTUyO0xBVElOIENBUElUQUwgTElHQVRVUkUgT0U7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE8gRTs7OzAxNTM7CiswMTUzO0xBVElOIFNNQUxMIExJR0FUVVJFIE9FO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBFOzswMTUyOzswMTUyCiswMTU0O0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBBQ1VURTtMdTswO0w7MDA1MiAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBBQ1VURTs7OzAxNTU7CiswMTU1O0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggQUNVVEU7TGw7MDtMOzAwNzIgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBSIEFDVVRFOzswMTU0OzswMTU0CiswMTU2O0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBDRURJTExBO0x1OzA7TDswMDUyIDAzMjc7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIENFRElMTEE7OzswMTU3OworMDE1NztMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIENFRElMTEE7TGw7MDtMOzAwNzIgMDMyNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBSIENFRElMTEE7OzAxNTY7OzAxNTYKKzAxNTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIENBUk9OO0x1OzA7TDswMDUyIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIEhBQ0VLOzs7MDE1OTsKKzAxNTk7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBDQVJPTjtMbDswO0w7MDA3MiAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFIgSEFDRUs7OzAxNTg7OzAxNTgKKzAxNUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIEFDVVRFO0x1OzA7TDswMDUzIDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIEFDVVRFOzs7MDE1QjsKKzAxNUI7TEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBBQ1VURTtMbDswO0w7MDA3MyAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFMgQUNVVEU7OzAxNUE7OzAxNUEKKzAxNUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNTMgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFMgQ0lSQ1VNRkxFWDs7OzAxNUQ7CiswMTVEO0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA3MyAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFMgQ0lSQ1VNRkxFWDs7MDE1Qzs7MDE1QworMDE1RTtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0VESUxMQTtMdTswO0w7MDA1MyAwMzI3Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBDRURJTExBOyo7OzAxNUY7CiswMTVGO0xBVElOIFNNQUxMIExFVFRFUiBTIFdJVEggQ0VESUxMQTtMbDswO0w7MDA3MyAwMzI3Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFMgQ0VESUxMQTsqOzAxNUU7OzAxNUUKKzAxNjA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIENBUk9OO0x1OzA7TDswMDUzIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIEhBQ0VLOzs7MDE2MTsKKzAxNjE7TEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTjtMbDswO0w7MDA3MyAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFMgSEFDRUs7OzAxNjA7OzAxNjAKKzAxNjI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIENFRElMTEE7THU7MDtMOzAwNTQgMDMyNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFQgQ0VESUxMQTsqOzswMTYzOworMDE2MztMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIENFRElMTEE7TGw7MDtMOzAwNzQgMDMyNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIENFRElMTEE7KjswMTYyOzswMTYyCiswMTY0O0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBDQVJPTjtMdTswO0w7MDA1NCAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBIQUNFSzs7OzAxNjU7CiswMTY1O0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ0FST047TGw7MDtMOzAwNzQgMDMwQzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIEhBQ0VLOzswMTY0OzswMTY0CiswMTY2O0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBTVFJPS0U7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFQgQkFSOzs7MDE2NzsKKzAxNjc7TEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIEJBUjs7MDE2Njs7MDE2NgorMDE2ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggVElMREU7THU7MDtMOzAwNTUgMDMwMzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgVElMREU7OzswMTY5OworMDE2OTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIFRJTERFO0xsOzA7TDswMDc1IDAzMDM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBUSUxERTs7MDE2ODs7MDE2OAorMDE2QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OO0x1OzA7TDswMDU1IDAzMDQ7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIE1BQ1JPTjs7OzAxNkI7CiswMTZCO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggTUFDUk9OO0xsOzA7TDswMDc1IDAzMDQ7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBNQUNST047OzAxNkE7OzAxNkEKKzAxNkM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEJSRVZFO0x1OzA7TDswMDU1IDAzMDY7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIEJSRVZFOzs7MDE2RDsKKzAxNkQ7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBCUkVWRTtMbDswO0w7MDA3NSAwMzA2Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgQlJFVkU7OzAxNkM7OzAxNkMKKzAxNkU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIFJJTkcgQUJPVkU7THU7MDtMOzAwNTUgMDMwQTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFUgUklORzs7OzAxNkY7CiswMTZGO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggUklORyBBQk9WRTtMbDswO0w7MDA3NSAwMzBBOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgUklORzs7MDE2RTs7MDE2RQorMDE3MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFO0x1OzA7TDswMDU1IDAzMEI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIERPVUJMRSBBQ1VURTs7OzAxNzE7CiswMTcxO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFO0xsOzA7TDswMDc1IDAzMEI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBET1VCTEUgQUNVVEU7OzAxNzA7OzAxNzAKKzAxNzI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE9HT05FSztMdTswO0w7MDA1NSAwMzI4Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBPR09ORUs7OzswMTczOworMDE3MztMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIE9HT05FSztMbDswO0w7MDA3NSAwMzI4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgT0dPTkVLOzswMTcyOzswMTcyCiswMTc0O0xBVElOIENBUElUQUwgTEVUVEVSIFcgV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDU3IDAzMDI7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBXIENJUkNVTUZMRVg7OzswMTc1OworMDE3NTtMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwNzcgMDMwMjs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBXIENJUkNVTUZMRVg7OzAxNzQ7OzAxNzQKKzAxNzY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIENJUkNVTUZMRVg7THU7MDtMOzAwNTkgMDMwMjs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFkgQ0lSQ1VNRkxFWDs7OzAxNzc7CiswMTc3O0xBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggQ0lSQ1VNRkxFWDtMbDswO0w7MDA3OSAwMzAyOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFkgQ0lSQ1VNRkxFWDs7MDE3Njs7MDE3NgorMDE3ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRElBRVJFU0lTO0x1OzA7TDswMDU5IDAzMDg7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIERJQUVSRVNJUzs7OzAwRkY7CiswMTc5O0xBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBBQ1VURTtMdTswO0w7MDA1QSAwMzAxOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBBQ1VURTs7OzAxN0E7CiswMTdBO0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggQUNVVEU7TGw7MDtMOzAwN0EgMDMwMTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBaIEFDVVRFOzswMTc5OzswMTc5CiswMTdCO0xBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNUEgMDMwNzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFogRE9UOzs7MDE3QzsKKzAxN0M7TEFUSU4gU01BTEwgTEVUVEVSIFogV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwN0EgMDMwNzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBaIERPVDs7MDE3Qjs7MDE3QgorMDE3RDtMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggQ0FST047THU7MDtMOzAwNUEgMDMwQzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFogSEFDRUs7OzswMTdFOworMDE3RTtMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENBUk9OO0xsOzA7TDswMDdBIDAzMEM7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWiBIQUNFSzs7MDE3RDs7MDE3RAorMDE3RjtMQVRJTiBTTUFMTCBMRVRURVIgTE9ORyBTO0xsOzA7TDs8Y29tcGF0PiAwMDczOzs7O047OzswMDUzOzswMDUzCiswMTgwO0xBVElOIFNNQUxMIExFVFRFUiBCIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQiBCQVI7Ozs7CiswMTgxO0xBVElOIENBUElUQUwgTEVUVEVSIEIgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBCIEhPT0s7OzswMjUzOworMDE4MjtMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFdJVEggVE9QQkFSO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFRPUEJBUjs7OzAxODM7CiswMTgzO0xBVElOIFNNQUxMIExFVFRFUiBCIFdJVEggVE9QQkFSO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQiBUT1BCQVI7OzAxODI7OzAxODIKKzAxODQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVE9ORSBTSVg7THU7MDtMOzs7OztOOzs7OzAxODU7CiswMTg1O0xBVElOIFNNQUxMIExFVFRFUiBUT05FIFNJWDtMbDswO0w7Ozs7O047OzswMTg0OzswMTg0CiswMTg2O0xBVElOIENBUElUQUwgTEVUVEVSIE9QRU4gTztMdTswO0w7Ozs7O047Ozs7MDI1NDsKKzAxODc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEMgSE9PSzs7OzAxODg7CiswMTg4O0xBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEMgSE9PSzs7MDE4Nzs7MDE4NworMDE4OTtMQVRJTiBDQVBJVEFMIExFVFRFUiBBRlJJQ0FOIEQ7THU7MDtMOzs7OztOOzsqOzswMjU2OworMDE4QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBIT09LOzs7MDI1NzsKKzAxOEI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIFRPUEJBUjtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBUT1BCQVI7OzswMThDOworMDE4QztMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIFRPUEJBUjtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEQgVE9QQkFSOzswMThCOzswMThCCiswMThEO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgREVMVEE7TGw7MDtMOzs7OztOOzs7OzsKKzAxOEU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUkVWRVJTRUQgRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVFVSTkVEIEU7OzswMUREOworMDE4RjtMQVRJTiBDQVBJVEFMIExFVFRFUiBTQ0hXQTtMdTswO0w7Ozs7O047Ozs7MDI1OTsKKzAxOTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgT1BFTiBFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFUFNJTE9OOzs7MDI1QjsKKzAxOTE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRiBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEYgSE9PSzs7OzAxOTI7CiswMTkyO0xBVElOIFNNQUxMIExFVFRFUiBGIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBGOzswMTkxOzswMTkxCiswMTkzO0xBVElOIENBUElUQUwgTEVUVEVSIEcgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIEhPT0s7OzswMjYwOworMDE5NDtMQVRJTiBDQVBJVEFMIExFVFRFUiBHQU1NQTtMdTswO0w7Ozs7O047Ozs7MDI2MzsKKzAxOTU7TEFUSU4gU01BTEwgTEVUVEVSIEhWO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSCBWO2h3YWlyOzAxRjY7OzAxRjYKKzAxOTY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSU9UQTtMdTswO0w7Ozs7O047Ozs7MDI2OTsKKzAxOTc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQkFSUkVEIEk7OzswMjY4OworMDE5ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBLIFdJVEggSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBIT09LOzs7MDE5OTsKKzAxOTk7TEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSyBIT09LOzswMTk4OzswMTk4CiswMTlBO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggQkFSO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQkFSUkVEIEw7Ozs7CiswMTlCO0xBVElOIFNNQUxMIExFVFRFUiBMQU1CREEgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBCQVJSRUQgTEFNQkRBOzs7OworMDE5QztMQVRJTiBDQVBJVEFMIExFVFRFUiBUVVJORUQgTTtMdTswO0w7Ozs7O047Ozs7MDI2RjsKKzAxOUQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIExFRlQgSE9PSztMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBIT09LOzs7MDI3MjsKKzAxOUU7TEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBMT05HIFJJR0hUIExFRztMbDswO0w7Ozs7O047Ozs7OworMDE5RjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggTUlERExFIFRJTERFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBCQVJSRUQgTzsqOzswMjc1OworMDFBMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggSE9STjtMdTswO0w7MDA0RiAwMzFCOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBIT1JOOzs7MDFBMTsKKzAxQTE7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBIT1JOO0xsOzA7TDswMDZGIDAzMUI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTyBIT1JOOzswMUEwOzswMUEwCiswMUEyO0xBVElOIENBUElUQUwgTEVUVEVSIE9JO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIEk7Z2hhOzswMUEzOworMDFBMztMQVRJTiBTTUFMTCBMRVRURVIgT0k7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBPIEk7Z2hhOzAxQTI7OzAxQTIKKzAxQTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUCBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFAgSE9PSzs7OzAxQTU7CiswMUE1O0xBVElOIFNNQUxMIExFVFRFUiBQIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFAgSE9PSzs7MDFBNDs7MDFBNAorMDFBNjtMQVRJTiBMRVRURVIgWVI7THU7MDtMOzs7OztOO0xBVElOIExFVFRFUiBZIFI7OzswMjgwOworMDFBNztMQVRJTiBDQVBJVEFMIExFVFRFUiBUT05FIFRXTztMdTswO0w7Ozs7O047Ozs7MDFBODsKKzAxQTg7TEFUSU4gU01BTEwgTEVUVEVSIFRPTkUgVFdPO0xsOzA7TDs7Ozs7Tjs7OzAxQTc7OzAxQTcKKzAxQTk7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRVNIO0x1OzA7TDs7Ozs7Tjs7OzswMjgzOworMDFBQTtMQVRJTiBMRVRURVIgUkVWRVJTRUQgRVNIIExPT1A7TGw7MDtMOzs7OztOOzs7OzsKKzAxQUI7TEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBQQUxBVEFMIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIFBBTEFUQUwgSE9PSzs7OzsKKzAxQUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFQgSE9PSzs7OzAxQUQ7CiswMUFEO0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFQgSE9PSzs7MDFBQzs7MDFBQworMDFBRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggUkVUUk9GTEVYIEhPT0s7THU7MDtMOzs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIFQgUkVUUk9GTEVYIEhPT0s7OzswMjg4OworMDFBRjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9STjtMdTswO0w7MDA1NSAwMzFCOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBIT1JOOzs7MDFCMDsKKzAxQjA7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT1JOO0xsOzA7TDswMDc1IDAzMUI7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBIT1JOOzswMUFGOzswMUFGCiswMUIxO0xBVElOIENBUElUQUwgTEVUVEVSIFVQU0lMT047THU7MDtMOzs7OztOOzs7OzAyOEE7CiswMUIyO0xBVElOIENBUElUQUwgTEVUVEVSIFYgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBTQ1JJUFQgVjs7OzAyOEI7CiswMUIzO0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBIT09LO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIEhPT0s7OzswMUI0OworMDFCNDtMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBZIEhPT0s7OzAxQjM7OzAxQjMKKzAxQjU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBCQVI7OzswMUI2OworMDFCNjtMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFogQkFSOzswMUI1OzswMUI1CiswMUI3O0xBVElOIENBUElUQUwgTEVUVEVSIEVaSDtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWU9HSDs7OzAyOTI7CiswMUI4O0xBVElOIENBUElUQUwgTEVUVEVSIEVaSCBSRVZFUlNFRDtMdTswO0w7Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgUkVWRVJTRUQgWU9HSDs7OzAxQjk7CiswMUI5O0xBVElOIFNNQUxMIExFVFRFUiBFWkggUkVWRVJTRUQ7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBSRVZFUlNFRCBZT0dIOzswMUI4OzswMUI4CiswMUJBO0xBVElOIFNNQUxMIExFVFRFUiBFWkggV0lUSCBUQUlMO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWU9HSCBXSVRIIFRBSUw7Ozs7CiswMUJCO0xBVElOIExFVFRFUiBUV08gV0lUSCBTVFJPS0U7TG87MDtMOzs7OztOO0xBVElOIExFVFRFUiBUV08gQkFSOzs7OworMDFCQztMQVRJTiBDQVBJVEFMIExFVFRFUiBUT05FIEZJVkU7THU7MDtMOzs7OztOOzs7OzAxQkQ7CiswMUJEO0xBVElOIFNNQUxMIExFVFRFUiBUT05FIEZJVkU7TGw7MDtMOzs7OztOOzs7MDFCQzs7MDFCQworMDFCRTtMQVRJTiBMRVRURVIgSU5WRVJURUQgR0xPVFRBTCBTVE9QIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgSU5WRVJURUQgR0xPVFRBTCBTVE9QIEJBUjs7OzsKKzAxQkY7TEFUSU4gTEVUVEVSIFdZTk47TGw7MDtMOzs7OztOOzs7MDFGNzs7MDFGNworMDFDMDtMQVRJTiBMRVRURVIgREVOVEFMIENMSUNLO0xvOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgUElQRTs7OzsKKzAxQzE7TEFUSU4gTEVUVEVSIExBVEVSQUwgQ0xJQ0s7TG87MDtMOzs7OztOO0xBVElOIExFVFRFUiBET1VCTEUgUElQRTs7OzsKKzAxQzI7TEFUSU4gTEVUVEVSIEFMVkVPTEFSIENMSUNLO0xvOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgUElQRSBET1VCTEUgQkFSOzs7OworMDFDMztMQVRJTiBMRVRURVIgUkVUUk9GTEVYIENMSUNLO0xvOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgRVhDTEFNQVRJT04gTUFSSzs7OzsKKzAxQzQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRFogV0lUSCBDQVJPTjtMdTswO0w7PGNvbXBhdD4gMDA0NCAwMTdEOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBaIEhBQ0VLOzs7MDFDNjswMUM1CiswMUM1O0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBTTUFMTCBMRVRURVIgWiBXSVRIIENBUk9OO0x0OzA7TDs8Y29tcGF0PiAwMDQ0IDAxN0U7Ozs7TjtMQVRJTiBMRVRURVIgQ0FQSVRBTCBEIFNNQUxMIFogSEFDRUs7OzAxQzQ7MDFDNjsKKzAxQzY7TEFUSU4gU01BTEwgTEVUVEVSIERaIFdJVEggQ0FST047TGw7MDtMOzxjb21wYXQ+IDAwNjQgMDE3RTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIFogSEFDRUs7OzAxQzQ7OzAxQzUKKzAxQzc7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTEo7THU7MDtMOzxjb21wYXQ+IDAwNEMgMDA0QTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEwgSjs7OzAxQzk7MDFDOAorMDFDODtMQVRJTiBDQVBJVEFMIExFVFRFUiBMIFdJVEggU01BTEwgTEVUVEVSIEo7THQ7MDtMOzxjb21wYXQ+IDAwNEMgMDA2QTs7OztOO0xBVElOIExFVFRFUiBDQVBJVEFMIEwgU01BTEwgSjs7MDFDNzswMUM5OworMDFDOTtMQVRJTiBTTUFMTCBMRVRURVIgTEo7TGw7MDtMOzxjb21wYXQ+IDAwNkMgMDA2QTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBMIEo7OzAxQzc7OzAxQzgKKzAxQ0E7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTko7THU7MDtMOzxjb21wYXQ+IDAwNEUgMDA0QTs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIE4gSjs7OzAxQ0M7MDFDQgorMDFDQjtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggU01BTEwgTEVUVEVSIEo7THQ7MDtMOzxjb21wYXQ+IDAwNEUgMDA2QTs7OztOO0xBVElOIExFVFRFUiBDQVBJVEFMIE4gU01BTEwgSjs7MDFDQTswMUNDOworMDFDQztMQVRJTiBTTUFMTCBMRVRURVIgTko7TGw7MDtMOzxjb21wYXQ+IDAwNkUgMDA2QTs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBOIEo7OzAxQ0E7OzAxQ0IKKzAxQ0Q7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENBUk9OO0x1OzA7TDswMDQxIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIEhBQ0VLOzs7MDFDRTsKKzAxQ0U7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDQVJPTjtMbDswO0w7MDA2MSAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgSEFDRUs7OzAxQ0Q7OzAxQ0QKKzAxQ0Y7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIENBUk9OO0x1OzA7TDswMDQ5IDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIEhBQ0VLOzs7MDFEMDsKKzAxRDA7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBDQVJPTjtMbDswO0w7MDA2OSAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEkgSEFDRUs7OzAxQ0Y7OzAxQ0YKKzAxRDE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIENBUk9OO0x1OzA7TDswMDRGIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIEhBQ0VLOzs7MDFEMjsKKzAxRDI7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDQVJPTjtMbDswO0w7MDA2RiAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gSEFDRUs7OzAxRDE7OzAxRDEKKzAxRDM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIENBUk9OO0x1OzA7TDswMDU1IDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIEhBQ0VLOzs7MDFENDsKKzAxRDQ7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDQVJPTjtMbDswO0w7MDA3NSAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgSEFDRUs7OzAxRDM7OzAxRDMKKzAxRDU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgTUFDUk9OO0x1OzA7TDswMERDIDAzMDQ7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIERJQUVSRVNJUyBNQUNST047OzswMUQ2OworMDFENjtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBBTkQgTUFDUk9OO0xsOzA7TDswMEZDIDAzMDQ7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVSBESUFFUkVTSVMgTUFDUk9OOzswMUQ1OzswMUQ1CiswMUQ3O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIEFDVVRFO0x1OzA7TDswMERDIDAzMDE7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIERJQUVSRVNJUyBBQ1VURTs7OzAxRDg7CiswMUQ4O0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEFORCBBQ1VURTtMbDswO0w7MDBGQyAwMzAxOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgRElBRVJFU0lTIEFDVVRFOzswMUQ3OzswMUQ3CiswMUQ5O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIENBUk9OO0x1OzA7TDswMERDIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIERJQUVSRVNJUyBIQUNFSzs7OzAxREE7CiswMURBO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEFORCBDQVJPTjtMbDswO0w7MDBGQyAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgRElBRVJFU0lTIEhBQ0VLOzswMUQ5OzswMUQ5CiswMURCO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQU5EIEdSQVZFO0x1OzA7TDswMERDIDAzMDA7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIERJQUVSRVNJUyBHUkFWRTs7OzAxREM7CiswMURDO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTIEFORCBHUkFWRTtMbDswO0w7MDBGQyAwMzAwOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFUgRElBRVJFU0lTIEdSQVZFOzswMURCOzswMURCCiswMUREO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgRTtMbDswO0w7Ozs7O047OzswMThFOzswMThFCiswMURFO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMgQU5EIE1BQ1JPTjtMdTswO0w7MDBDNCAwMzA0Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBESUFFUkVTSVMgTUFDUk9OOzs7MDFERjsKKzAxREY7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBESUFFUkVTSVMgQU5EIE1BQ1JPTjtMbDswO0w7MDBFNCAwMzA0Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgRElBRVJFU0lTIE1BQ1JPTjs7MDFERTs7MDFERQorMDFFMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRE9UIEFCT1ZFIEFORCBNQUNST047THU7MDtMOzAyMjYgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgRE9UIE1BQ1JPTjs7OzAxRTE7CiswMUUxO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRE9UIEFCT1ZFIEFORCBNQUNST047TGw7MDtMOzAyMjcgMDMwNDs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBBIERPVCBNQUNST047OzAxRTA7OzAxRTAKKzAxRTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQUUgV0lUSCBNQUNST047THU7MDtMOzAwQzYgMDMwNDs7OztOO0xBVElOIENBUElUQUwgTEVUVEVSIEEgRSBNQUNST047YXNoICo7OzAxRTM7CiswMUUzO0xBVElOIFNNQUxMIExFVFRFUiBBRSBXSVRIIE1BQ1JPTjtMbDswO0w7MDBFNiAwMzA0Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEEgRSBNQUNST047YXNoICo7MDFFMjs7MDFFMgorMDFFNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIFdJVEggU1RST0tFO0x1OzA7TDs7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIEJBUjs7OzAxRTU7CiswMUU1O0xBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRyBCQVI7OzAxRTQ7OzAxRTQKKzAxRTY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIENBUk9OO0x1OzA7TDswMDQ3IDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBHIEhBQ0VLOzs7MDFFNzsKKzAxRTc7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBDQVJPTjtMbDswO0w7MDA2NyAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEcgSEFDRUs7OzAxRTY7OzAxRTYKKzAxRTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIENBUk9OO0x1OzA7TDswMDRCIDAzMEM7Ozs7TjtMQVRJTiBDQVBJVEFMIExFVFRFUiBLIEhBQ0VLOzs7MDFFOTsKKzAxRTk7TEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBDQVJPTjtMbDswO0w7MDA2QiAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEsgSEFDRUs7OzAxRTg7OzAxRTgKKzAxRUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIE9HT05FSztMdTswO0w7MDA0RiAwMzI4Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBPR09ORUs7OzswMUVCOworMDFFQjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIE9HT05FSztMbDswO0w7MDA2RiAwMzI4Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gT0dPTkVLOzswMUVBOzswMUVBCiswMUVDO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBPR09ORUsgQU5EIE1BQ1JPTjtMdTswO0w7MDFFQSAwMzA0Ozs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBPR09ORUsgTUFDUk9OOzs7MDFFRDsKKzAxRUQ7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBPR09ORUsgQU5EIE1BQ1JPTjtMbDswO0w7MDFFQiAwMzA0Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE8gT0dPTkVLIE1BQ1JPTjs7MDFFQzs7MDFFQworMDFFRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBFWkggV0lUSCBDQVJPTjtMdTswO0w7MDFCNyAwMzBDOzs7O047TEFUSU4gQ0FQSVRBTCBMRVRURVIgWU9HSCBIQUNFSzs7OzAxRUY7CiswMUVGO0xBVElOIFNNQUxMIExFVFRFUiBFWkggV0lUSCBDQVJPTjtMbDswO0w7MDI5MiAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIFlPR0ggSEFDRUs7OzAxRUU7OzAxRUUKKzAxRjA7TEFUSU4gU01BTEwgTEVUVEVSIEogV0lUSCBDQVJPTjtMbDswO0w7MDA2QSAwMzBDOzs7O047TEFUSU4gU01BTEwgTEVUVEVSIEogSEFDRUs7Ozs7CiswMUYxO0xBVElOIENBUElUQUwgTEVUVEVSIERaO0x1OzA7TDs8Y29tcGF0PiAwMDQ0IDAwNUE7Ozs7Tjs7OzswMUYzOzAxRjIKKzAxRjI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIFNNQUxMIExFVFRFUiBaO0x0OzA7TDs8Y29tcGF0PiAwMDQ0IDAwN0E7Ozs7Tjs7OzAxRjE7MDFGMzsKKzAxRjM7TEFUSU4gU01BTEwgTEVUVEVSIERaO0xsOzA7TDs8Y29tcGF0PiAwMDY0IDAwN0E7Ozs7Tjs7OzAxRjE7OzAxRjIKKzAxRjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIEFDVVRFO0x1OzA7TDswMDQ3IDAzMDE7Ozs7Tjs7OzswMUY1OworMDFGNTtMQVRJTiBTTUFMTCBMRVRURVIgRyBXSVRIIEFDVVRFO0xsOzA7TDswMDY3IDAzMDE7Ozs7Tjs7OzAxRjQ7OzAxRjQKKzAxRjY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSFdBSVI7THU7MDtMOzs7OztOOzs7OzAxOTU7CiswMUY3O0xBVElOIENBUElUQUwgTEVUVEVSIFdZTk47THU7MDtMOzs7OztOOzs7OzAxQkY7CiswMUY4O0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBHUkFWRTtMdTswO0w7MDA0RSAwMzAwOzs7O047Ozs7MDFGOTsKKzAxRjk7TEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBHUkFWRTtMbDswO0w7MDA2RSAwMzAwOzs7O047OzswMUY4OzswMUY4CiswMUZBO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFIEFORCBBQ1VURTtMdTswO0w7MDBDNSAwMzAxOzs7O047Ozs7MDFGQjsKKzAxRkI7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBSSU5HIEFCT1ZFIEFORCBBQ1VURTtMbDswO0w7MDBFNSAwMzAxOzs7O047OzswMUZBOzswMUZBCiswMUZDO0xBVElOIENBUElUQUwgTEVUVEVSIEFFIFdJVEggQUNVVEU7THU7MDtMOzAwQzYgMDMwMTs7OztOOzthc2ggKjs7MDFGRDsKKzAxRkQ7TEFUSU4gU01BTEwgTEVUVEVSIEFFIFdJVEggQUNVVEU7TGw7MDtMOzAwRTYgMDMwMTs7OztOOzthc2ggKjswMUZDOzswMUZDCiswMUZFO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBTVFJPS0UgQU5EIEFDVVRFO0x1OzA7TDswMEQ4IDAzMDE7Ozs7Tjs7OzswMUZGOworMDFGRjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFNUUk9LRSBBTkQgQUNVVEU7TGw7MDtMOzAwRjggMDMwMTs7OztOOzs7MDFGRTs7MDFGRQorMDIwMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggRE9VQkxFIEdSQVZFO0x1OzA7TDswMDQxIDAzMEY7Ozs7Tjs7OzswMjAxOworMDIwMTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIERPVUJMRSBHUkFWRTtMbDswO0w7MDA2MSAwMzBGOzs7O047OzswMjAwOzswMjAwCiswMjAyO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBJTlZFUlRFRCBCUkVWRTtMdTswO0w7MDA0MSAwMzExOzs7O047Ozs7MDIwMzsKKzAyMDM7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBJTlZFUlRFRCBCUkVWRTtMbDswO0w7MDA2MSAwMzExOzs7O047OzswMjAyOzswMjAyCiswMjA0O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBET1VCTEUgR1JBVkU7THU7MDtMOzAwNDUgMDMwRjs7OztOOzs7OzAyMDU7CiswMjA1O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRE9VQkxFIEdSQVZFO0xsOzA7TDswMDY1IDAzMEY7Ozs7Tjs7OzAyMDQ7OzAyMDQKKzAyMDY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIElOVkVSVEVEIEJSRVZFO0x1OzA7TDswMDQ1IDAzMTE7Ozs7Tjs7OzswMjA3OworMDIwNztMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIElOVkVSVEVEIEJSRVZFO0xsOzA7TDswMDY1IDAzMTE7Ozs7Tjs7OzAyMDY7OzAyMDYKKzAyMDg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERPVUJMRSBHUkFWRTtMdTswO0w7MDA0OSAwMzBGOzs7O047Ozs7MDIwOTsKKzAyMDk7TEFUSU4gU01BTEwgTEVUVEVSIEkgV0lUSCBET1VCTEUgR1JBVkU7TGw7MDtMOzAwNjkgMDMwRjs7OztOOzs7MDIwODs7MDIwOAorMDIwQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggSU5WRVJURUQgQlJFVkU7THU7MDtMOzAwNDkgMDMxMTs7OztOOzs7OzAyMEI7CiswMjBCO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggSU5WRVJURUQgQlJFVkU7TGw7MDtMOzAwNjkgMDMxMTs7OztOOzs7MDIwQTs7MDIwQQorMDIwQztMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRE9VQkxFIEdSQVZFO0x1OzA7TDswMDRGIDAzMEY7Ozs7Tjs7OzswMjBEOworMDIwRDtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERPVUJMRSBHUkFWRTtMbDswO0w7MDA2RiAwMzBGOzs7O047OzswMjBDOzswMjBDCiswMjBFO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBJTlZFUlRFRCBCUkVWRTtMdTswO0w7MDA0RiAwMzExOzs7O047Ozs7MDIwRjsKKzAyMEY7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBJTlZFUlRFRCBCUkVWRTtMbDswO0w7MDA2RiAwMzExOzs7O047OzswMjBFOzswMjBFCiswMjEwO0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBET1VCTEUgR1JBVkU7THU7MDtMOzAwNTIgMDMwRjs7OztOOzs7OzAyMTE7CiswMjExO0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggRE9VQkxFIEdSQVZFO0xsOzA7TDswMDcyIDAzMEY7Ozs7Tjs7OzAyMTA7OzAyMTAKKzAyMTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIElOVkVSVEVEIEJSRVZFO0x1OzA7TDswMDUyIDAzMTE7Ozs7Tjs7OzswMjEzOworMDIxMztMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIElOVkVSVEVEIEJSRVZFO0xsOzA7TDswMDcyIDAzMTE7Ozs7Tjs7OzAyMTI7OzAyMTIKKzAyMTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERPVUJMRSBHUkFWRTtMdTswO0w7MDA1NSAwMzBGOzs7O047Ozs7MDIxNTsKKzAyMTU7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBET1VCTEUgR1JBVkU7TGw7MDtMOzAwNzUgMDMwRjs7OztOOzs7MDIxNDs7MDIxNAorMDIxNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSU5WRVJURUQgQlJFVkU7THU7MDtMOzAwNTUgMDMxMTs7OztOOzs7OzAyMTc7CiswMjE3O0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSU5WRVJURUQgQlJFVkU7TGw7MDtMOzAwNzUgMDMxMTs7OztOOzs7MDIxNjs7MDIxNgorMDIxODtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ09NTUEgQkVMT1c7THU7MDtMOzAwNTMgMDMyNjs7OztOOzsqOzswMjE5OworMDIxOTtMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIENPTU1BIEJFTE9XO0xsOzA7TDswMDczIDAzMjY7Ozs7Tjs7KjswMjE4OzswMjE4CiswMjFBO0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBDT01NQSBCRUxPVztMdTswO0w7MDA1NCAwMzI2Ozs7O047Oyo7OzAyMUI7CiswMjFCO0xBVElOIFNNQUxMIExFVFRFUiBUIFdJVEggQ09NTUEgQkVMT1c7TGw7MDtMOzAwNzQgMDMyNjs7OztOOzsqOzAyMUE7OzAyMUEKKzAyMUM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWU9HSDtMdTswO0w7Ozs7O047Ozs7MDIxRDsKKzAyMUQ7TEFUSU4gU01BTEwgTEVUVEVSIFlPR0g7TGw7MDtMOzs7OztOOzs7MDIxQzs7MDIxQworMDIxRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggQ0FST047THU7MDtMOzAwNDggMDMwQzs7OztOOzs7OzAyMUY7CiswMjFGO0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggQ0FST047TGw7MDtMOzAwNjggMDMwQzs7OztOOzs7MDIxRTs7MDIxRQorMDIyMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPVTtMdTswO0w7Ozs7O047Ozs7MDIyMzsKKzAyMjM7TEFUSU4gU01BTEwgTEVUVEVSIE9VO0xsOzA7TDs7Ozs7Tjs7OzAyMjI7OzAyMjIKKzAyMjQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWiBXSVRIIEhPT0s7THU7MDtMOzs7OztOOzs7OzAyMjU7CiswMjI1O0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggSE9PSztMbDswO0w7Ozs7O047OzswMjI0OzswMjI0CiswMjI2O0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNDEgMDMwNzs7OztOOzs7OzAyMjc7CiswMjI3O0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDYxIDAzMDc7Ozs7Tjs7OzAyMjY7OzAyMjYKKzAyMjg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENFRElMTEE7THU7MDtMOzAwNDUgMDMyNzs7OztOOzs7OzAyMjk7CiswMjI5O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0VESUxMQTtMbDswO0w7MDA2NSAwMzI3Ozs7O047OzswMjI4OzswMjI4CiswMjJBO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMgQU5EIE1BQ1JPTjtMdTswO0w7MDBENiAwMzA0Ozs7O047Ozs7MDIyQjsKKzAyMkI7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVMgQU5EIE1BQ1JPTjtMbDswO0w7MDBGNiAwMzA0Ozs7O047OzswMjJBOzswMjJBCiswMjJDO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBUSUxERSBBTkQgTUFDUk9OO0x1OzA7TDswMEQ1IDAzMDQ7Ozs7Tjs7OzswMjJEOworMDIyRDtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIFRJTERFIEFORCBNQUNST047TGw7MDtMOzAwRjUgMDMwNDs7OztOOzs7MDIyQzs7MDIyQworMDIyRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDRGIDAzMDc7Ozs7Tjs7OzswMjJGOworMDIyRjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2RiAwMzA3Ozs7O047OzswMjJFOzswMjJFCiswMjMwO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBET1QgQUJPVkUgQU5EIE1BQ1JPTjtMdTswO0w7MDIyRSAwMzA0Ozs7O047Ozs7MDIzMTsKKzAyMzE7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBET1QgQUJPVkUgQU5EIE1BQ1JPTjtMbDswO0w7MDIyRiAwMzA0Ozs7O047OzswMjMwOzswMjMwCiswMjMyO0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBNQUNST047THU7MDtMOzAwNTkgMDMwNDs7OztOOzs7OzAyMzM7CiswMjMzO0xBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggTUFDUk9OO0xsOzA7TDswMDc5IDAzMDQ7Ozs7Tjs7OzAyMzI7OzAyMzIKKzAyNTA7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBBO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjUxO0xBVElOIFNNQUxMIExFVFRFUiBBTFBIQTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFNDUklQVCBBOzs7OworMDI1MjtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIEFMUEhBO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFNDUklQVCBBOzs7OworMDI1MztMQVRJTiBTTUFMTCBMRVRURVIgQiBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBCIEhPT0s7OzAxODE7OzAxODEKKzAyNTQ7TEFUSU4gU01BTEwgTEVUVEVSIE9QRU4gTztMbDswO0w7Ozs7O047OzswMTg2OzswMTg2CiswMjU1O0xBVElOIFNNQUxMIExFVFRFUiBDIFdJVEggQ1VSTDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEMgQ1VSTDs7OzsKKzAyNTY7TEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBUQUlMO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRCBSRVRST0ZMRVggSE9PSzs7MDE4OTs7MDE4OQorMDI1NztMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIEhPT0s7OzAxOEE7OzAxOEEKKzAyNTg7TEFUSU4gU01BTEwgTEVUVEVSIFJFVkVSU0VEIEU7TGw7MDtMOzs7OztOOzs7OzsKKzAyNTk7TEFUSU4gU01BTEwgTEVUVEVSIFNDSFdBO0xsOzA7TDs7Ozs7Tjs7OzAxOEY7OzAxOEYKKzAyNUE7TEFUSU4gU01BTEwgTEVUVEVSIFNDSFdBIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFNDSFdBIEhPT0s7Ozs7CiswMjVCO0xBVElOIFNNQUxMIExFVFRFUiBPUEVOIEU7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBFUFNJTE9OOzswMTkwOzswMTkwCiswMjVDO0xBVElOIFNNQUxMIExFVFRFUiBSRVZFUlNFRCBPUEVOIEU7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBSRVZFUlNFRCBFUFNJTE9OOzs7OworMDI1RDtMQVRJTiBTTUFMTCBMRVRURVIgUkVWRVJTRUQgT1BFTiBFIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFJFVkVSU0VEIEVQU0lMT04gSE9PSzs7OzsKKzAyNUU7TEFUSU4gU01BTEwgTEVUVEVSIENMT1NFRCBSRVZFUlNFRCBPUEVOIEU7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDTE9TRUQgUkVWRVJTRUQgRVBTSUxPTjs7OzsKKzAyNUY7TEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSiBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIERPVExFU1MgSiBCQVI7Ozs7CiswMjYwO0xBVElOIFNNQUxMIExFVFRFUiBHIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEcgSE9PSzs7MDE5Mzs7MDE5MworMDI2MTtMQVRJTiBTTUFMTCBMRVRURVIgU0NSSVBUIEc7TGw7MDtMOzs7OztOOzs7OzsKKzAyNjI7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgRztMbDswO0w7Ozs7O047Ozs7OworMDI2MztMQVRJTiBTTUFMTCBMRVRURVIgR0FNTUE7TGw7MDtMOzs7OztOOzs7MDE5NDs7MDE5NAorMDI2NDtMQVRJTiBTTUFMTCBMRVRURVIgUkFNUyBIT1JOO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQkFCWSBHQU1NQTs7OzsKKzAyNjU7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBIO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjY2O0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEggSE9PSzs7OzsKKzAyNjc7TEFUSU4gU01BTEwgTEVUVEVSIEhFTkcgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgSEVORyBIT09LOzs7OworMDI2ODtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEJBUlJFRCBJOzswMTk3OzswMTk3CiswMjY5O0xBVElOIFNNQUxMIExFVFRFUiBJT1RBO0xsOzA7TDs7Ozs7Tjs7OzAxOTY7OzAxOTYKKzAyNkE7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgSTtMbDswO0w7Ozs7O047Ozs7OworMDI2QjtMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIE1JRERMRSBUSUxERTtMbDswO0w7Ozs7O047Ozs7OworMDI2QztMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIEJFTFQ7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBMIEJFTFQ7Ozs7CiswMjZEO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggUkVUUk9GTEVYIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBMIFJFVFJPRkxFWCBIT09LOzs7OworMDI2RTtMQVRJTiBTTUFMTCBMRVRURVIgTEVaSDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEwgWU9HSDs7OzsKKzAyNkY7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBNO0xsOzA7TDs7Ozs7Tjs7OzAxOUM7OzAxOUMKKzAyNzA7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBNIFdJVEggTE9ORyBMRUc7TGw7MDtMOzs7OztOOzs7OzsKKzAyNzE7TEFUSU4gU01BTEwgTEVUVEVSIE0gV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTSBIT09LOzs7OworMDI3MjtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIExFRlQgSE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIE4gSE9PSzs7MDE5RDs7MDE5RAorMDI3MztMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIFJFVFJPRkxFWCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgTiBSRVRST0ZMRVggSE9PSzs7OzsKKzAyNzQ7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgTjtMbDswO0w7Ozs7O047Ozs7OworMDI3NTtMQVRJTiBTTUFMTCBMRVRURVIgQkFSUkVEIE87TGw7MDtMOzs7OztOOzs7MDE5Rjs7MDE5RgorMDI3NjtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBPRTtMbDswO0w7Ozs7O047TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgTyBFOzs7OworMDI3NztMQVRJTiBTTUFMTCBMRVRURVIgQ0xPU0VEIE9NRUdBO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjc4O0xBVElOIFNNQUxMIExFVFRFUiBQSEk7TGw7MDtMOzs7OztOOzs7OzsKKzAyNzk7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBSO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjdBO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgUiBXSVRIIExPTkcgTEVHO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjdCO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgUiBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgUiBIT09LOzs7OworMDI3QztMQVRJTiBTTUFMTCBMRVRURVIgUiBXSVRIIExPTkcgTEVHO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjdEO0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggVEFJTDtMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIFIgSE9PSzs7OzsKKzAyN0U7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBGSVNISE9PSztMbDswO0w7Ozs7O047TEFUSU4gU01BTEwgTEVUVEVSIEZJU0hIT09LIFI7Ozs7CiswMjdGO0xBVElOIFNNQUxMIExFVFRFUiBSRVZFUlNFRCBSIFdJVEggRklTSEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBSRVZFUlNFRCBGSVNISE9PSyBSOzs7OworMDI4MDtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBSO0xsOzA7TDs7Ozs7Tjs7OzAxQTY7OzAxQTYKKzAyODE7TEFUSU4gTEVUVEVSIFNNQUxMIENBUElUQUwgSU5WRVJURUQgUjtMbDswO0w7Ozs7O047Ozs7OworMDI4MjtMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBTIEhPT0s7Ozs7CiswMjgzO0xBVElOIFNNQUxMIExFVFRFUiBFU0g7TGw7MDtMOzs7OztOOzs7MDFBOTs7MDFBOQorMDI4NDtMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKIFdJVEggU1RST0tFIEFORCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRE9UTEVTUyBKIEJBUiBIT09LOzs7OworMDI4NTtMQVRJTiBTTUFMTCBMRVRURVIgU1FVQVQgUkVWRVJTRUQgRVNIO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjg2O0xBVElOIFNNQUxMIExFVFRFUiBFU0ggV0lUSCBDVVJMO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRVNIIENVUkw7Ozs7CiswMjg3O0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgVDtMbDswO0w7Ozs7O047Ozs7OworMDI4ODtMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIFJFVFJPRkxFWCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVCBSRVRST0ZMRVggSE9PSzs7MDFBRTs7MDFBRQorMDI4OTtMQVRJTiBTTUFMTCBMRVRURVIgVSBCQVI7TGw7MDtMOzs7OztOOzs7OzsKKzAyOEE7TEFUSU4gU01BTEwgTEVUVEVSIFVQU0lMT047TGw7MDtMOzs7OztOOzs7MDFCMTs7MDFCMQorMDI4QjtMQVRJTiBTTUFMTCBMRVRURVIgViBXSVRIIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBTQ1JJUFQgVjs7MDFCMjs7MDFCMgorMDI4QztMQVRJTiBTTUFMTCBMRVRURVIgVFVSTkVEIFY7TGw7MDtMOzs7OztOOzs7OzsKKzAyOEQ7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBXO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjhFO0xBVElOIFNNQUxMIExFVFRFUiBUVVJORUQgWTtMbDswO0w7Ozs7O047Ozs7OworMDI4RjtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBZO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjkwO0xBVElOIFNNQUxMIExFVFRFUiBaIFdJVEggUkVUUk9GTEVYIEhPT0s7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBaIFJFVFJPRkxFWCBIT09LOzs7OworMDI5MTtMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENVUkw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBaIENVUkw7Ozs7CiswMjkyO0xBVElOIFNNQUxMIExFVFRFUiBFWkg7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBZT0dIOzswMUI3OzswMUI3CiswMjkzO0xBVElOIFNNQUxMIExFVFRFUiBFWkggV0lUSCBDVVJMO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgWU9HSCBDVVJMOzs7OworMDI5NDtMQVRJTiBMRVRURVIgR0xPVFRBTCBTVE9QO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjk1O0xBVElOIExFVFRFUiBQSEFSWU5HRUFMIFZPSUNFRCBGUklDQVRJVkU7TGw7MDtMOzs7OztOO0xBVElOIExFVFRFUiBSRVZFUlNFRCBHTE9UVEFMIFNUT1A7Ozs7CiswMjk2O0xBVElOIExFVFRFUiBJTlZFUlRFRCBHTE9UVEFMIFNUT1A7TGw7MDtMOzs7OztOOzs7OzsKKzAyOTc7TEFUSU4gTEVUVEVSIFNUUkVUQ0hFRCBDO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjk4O0xBVElOIExFVFRFUiBCSUxBQklBTCBDTElDSztMbDswO0w7Ozs7O047TEFUSU4gTEVUVEVSIEJVTExTRVlFOzs7OworMDI5OTtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBCO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjlBO0xBVElOIFNNQUxMIExFVFRFUiBDTE9TRUQgT1BFTiBFO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgQ0xPU0VEIEVQU0lMT047Ozs7CiswMjlCO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEcgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgU01BTEwgQ0FQSVRBTCBHIEhPT0s7Ozs7CiswMjlDO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEg7TGw7MDtMOzs7OztOOzs7OzsKKzAyOUQ7TEFUSU4gU01BTEwgTEVUVEVSIEogV0lUSCBDUk9TU0VELVRBSUw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBDUk9TU0VELVRBSUwgSjs7OzsKKzAyOUU7TEFUSU4gU01BTEwgTEVUVEVSIFRVUk5FRCBLO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswMjlGO0xBVElOIExFVFRFUiBTTUFMTCBDQVBJVEFMIEw7TGw7MDtMOzs7OztOOzs7OzsKKzAyQTA7TEFUSU4gU01BTEwgTEVUVEVSIFEgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgUSBIT09LOzs7OworMDJBMTtMQVRJTiBMRVRURVIgR0xPVFRBTCBTVE9QIFdJVEggU1RST0tFO0xsOzA7TDs7Ozs7TjtMQVRJTiBMRVRURVIgR0xPVFRBTCBTVE9QIEJBUjs7OzsKKzAyQTI7TEFUSU4gTEVUVEVSIFJFVkVSU0VEIEdMT1RUQUwgU1RPUCBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047TEFUSU4gTEVUVEVSIFJFVkVSU0VEIEdMT1RUQUwgU1RPUCBCQVI7Ozs7CiswMkEzO0xBVElOIFNNQUxMIExFVFRFUiBEWiBESUdSQVBIO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRCBaOzs7OworMDJBNDtMQVRJTiBTTUFMTCBMRVRURVIgREVaSCBESUdSQVBIO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgRCBZT0dIOzs7OworMDJBNTtMQVRJTiBTTUFMTCBMRVRURVIgRFogRElHUkFQSCBXSVRIIENVUkw7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBEIFogQ1VSTDs7OzsKKzAyQTY7TEFUSU4gU01BTEwgTEVUVEVSIFRTIERJR1JBUEg7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIFM7Ozs7CiswMkE3O0xBVElOIFNNQUxMIExFVFRFUiBURVNIIERJR1JBUEg7TGw7MDtMOzs7OztOO0xBVElOIFNNQUxMIExFVFRFUiBUIEVTSDs7OzsKKzAyQTg7TEFUSU4gU01BTEwgTEVUVEVSIFRDIERJR1JBUEggV0lUSCBDVVJMO0xsOzA7TDs7Ozs7TjtMQVRJTiBTTUFMTCBMRVRURVIgVCBDIENVUkw7Ozs7CiswMkE5O0xBVElOIFNNQUxMIExFVFRFUiBGRU5HIERJR1JBUEg7TGw7MDtMOzs7OztOOzs7OzsKKzAyQUE7TEFUSU4gU01BTEwgTEVUVEVSIExTIERJR1JBUEg7TGw7MDtMOzs7OztOOzs7OzsKKzAyQUI7TEFUSU4gU01BTEwgTEVUVEVSIExaIERJR1JBUEg7TGw7MDtMOzs7OztOOzs7OzsKKzAyQUM7TEFUSU4gTEVUVEVSIEJJTEFCSUFMIFBFUkNVU1NJVkU7TGw7MDtMOzs7OztOOzs7OzsKKzAyQUQ7TEFUSU4gTEVUVEVSIEJJREVOVEFMIFBFUkNVU1NJVkU7TGw7MDtMOzs7OztOOzs7OzsKKzAyQjA7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIEg7TG07MDtMOzxzdXBlcj4gMDA2ODs7OztOOzs7OzsKKzAyQjE7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIEggV0lUSCBIT09LO0xtOzA7TDs8c3VwZXI+IDAyNjY7Ozs7TjtNT0RJRklFUiBMRVRURVIgU01BTEwgSCBIT09LOzs7OworMDJCMjtNT0RJRklFUiBMRVRURVIgU01BTEwgSjtMbTswO0w7PHN1cGVyPiAwMDZBOzs7O047Ozs7OworMDJCMztNT0RJRklFUiBMRVRURVIgU01BTEwgUjtMbTswO0w7PHN1cGVyPiAwMDcyOzs7O047Ozs7OworMDJCNDtNT0RJRklFUiBMRVRURVIgU01BTEwgVFVSTkVEIFI7TG07MDtMOzxzdXBlcj4gMDI3OTs7OztOOzs7OzsKKzAyQjU7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFRVUk5FRCBSIFdJVEggSE9PSztMbTswO0w7PHN1cGVyPiAwMjdCOzs7O047TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFRVUk5FRCBSIEhPT0s7Ozs7CiswMkI2O01PRElGSUVSIExFVFRFUiBTTUFMTCBDQVBJVEFMIElOVkVSVEVEIFI7TG07MDtMOzxzdXBlcj4gMDI4MTs7OztOOzs7OzsKKzAyQjc7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFc7TG07MDtMOzxzdXBlcj4gMDA3Nzs7OztOOzs7OzsKKzAyQjg7TU9ESUZJRVIgTEVUVEVSIFNNQUxMIFk7TG07MDtMOzxzdXBlcj4gMDA3OTs7OztOOzs7OzsKKzAyQjk7TU9ESUZJRVIgTEVUVEVSIFBSSU1FO1NrOzA7T047Ozs7O047Ozs7OworMDJCQTtNT0RJRklFUiBMRVRURVIgRE9VQkxFIFBSSU1FO1NrOzA7T047Ozs7O047Ozs7OworMDJCQjtNT0RJRklFUiBMRVRURVIgVFVSTkVEIENPTU1BO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswMkJDO01PRElGSUVSIExFVFRFUiBBUE9TVFJPUEhFO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswMkJEO01PRElGSUVSIExFVFRFUiBSRVZFUlNFRCBDT01NQTtMbTswO0w7Ozs7O047Ozs7OworMDJCRTtNT0RJRklFUiBMRVRURVIgUklHSFQgSEFMRiBSSU5HO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswMkJGO01PRElGSUVSIExFVFRFUiBMRUZUIEhBTEYgUklORztMbTswO0w7Ozs7O047Ozs7OworMDJDMDtNT0RJRklFUiBMRVRURVIgR0xPVFRBTCBTVE9QO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswMkMxO01PRElGSUVSIExFVFRFUiBSRVZFUlNFRCBHTE9UVEFMIFNUT1A7TG07MDtMOzs7OztOOzs7OzsKKzAyQzI7TU9ESUZJRVIgTEVUVEVSIExFRlQgQVJST1dIRUFEO1NrOzA7T047Ozs7O047Ozs7OworMDJDMztNT0RJRklFUiBMRVRURVIgUklHSFQgQVJST1dIRUFEO1NrOzA7T047Ozs7O047Ozs7OworMDJDNDtNT0RJRklFUiBMRVRURVIgVVAgQVJST1dIRUFEO1NrOzA7T047Ozs7O047Ozs7OworMDJDNTtNT0RJRklFUiBMRVRURVIgRE9XTiBBUlJPV0hFQUQ7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkM2O01PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYIEFDQ0VOVDtTazswO09OOzs7OztOO01PRElGSUVSIExFVFRFUiBDSVJDVU1GTEVYOzs7OworMDJDNztDQVJPTjtTazswO09OOzs7OztOO01PRElGSUVSIExFVFRFUiBIQUNFSztNYW5kYXJpbiBDaGluZXNlIHRoaXJkIHRvbmU7OzsKKzAyQzg7TU9ESUZJRVIgTEVUVEVSIFZFUlRJQ0FMIExJTkU7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkM5O01PRElGSUVSIExFVFRFUiBNQUNST047U2s7MDtPTjs7Ozs7Tjs7TWFuZGFyaW4gQ2hpbmVzZSBmaXJzdCB0b25lOzs7CiswMkNBO01PRElGSUVSIExFVFRFUiBBQ1VURSBBQ0NFTlQ7U2s7MDtPTjs7Ozs7TjtNT0RJRklFUiBMRVRURVIgQUNVVEU7TWFuZGFyaW4gQ2hpbmVzZSBzZWNvbmQgdG9uZTs7OworMDJDQjtNT0RJRklFUiBMRVRURVIgR1JBVkUgQUNDRU5UO1NrOzA7T047Ozs7O047TU9ESUZJRVIgTEVUVEVSIEdSQVZFO01hbmRhcmluIENoaW5lc2UgZm91cnRoIHRvbmU7OzsKKzAyQ0M7TU9ESUZJRVIgTEVUVEVSIExPVyBWRVJUSUNBTCBMSU5FO1NrOzA7T047Ozs7O047Ozs7OworMDJDRDtNT0RJRklFUiBMRVRURVIgTE9XIE1BQ1JPTjtTazswO09OOzs7OztOOzs7OzsKKzAyQ0U7TU9ESUZJRVIgTEVUVEVSIExPVyBHUkFWRSBBQ0NFTlQ7U2s7MDtPTjs7Ozs7TjtNT0RJRklFUiBMRVRURVIgTE9XIEdSQVZFOzs7OworMDJDRjtNT0RJRklFUiBMRVRURVIgTE9XIEFDVVRFIEFDQ0VOVDtTazswO09OOzs7OztOO01PRElGSUVSIExFVFRFUiBMT1cgQUNVVEU7Ozs7CiswMkQwO01PRElGSUVSIExFVFRFUiBUUklBTkdVTEFSIENPTE9OO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswMkQxO01PRElGSUVSIExFVFRFUiBIQUxGIFRSSUFOR1VMQVIgQ09MT047TG07MDtMOzs7OztOOzs7OzsKKzAyRDI7TU9ESUZJRVIgTEVUVEVSIENFTlRSRUQgUklHSFQgSEFMRiBSSU5HO1NrOzA7T047Ozs7O047TU9ESUZJRVIgTEVUVEVSIENFTlRFUkVEIFJJR0hUIEhBTEYgUklORzs7OzsKKzAyRDM7TU9ESUZJRVIgTEVUVEVSIENFTlRSRUQgTEVGVCBIQUxGIFJJTkc7U2s7MDtPTjs7Ozs7TjtNT0RJRklFUiBMRVRURVIgQ0VOVEVSRUQgTEVGVCBIQUxGIFJJTkc7Ozs7CiswMkQ0O01PRElGSUVSIExFVFRFUiBVUCBUQUNLO1NrOzA7T047Ozs7O047Ozs7OworMDJENTtNT0RJRklFUiBMRVRURVIgRE9XTiBUQUNLO1NrOzA7T047Ozs7O047Ozs7OworMDJENjtNT0RJRklFUiBMRVRURVIgUExVUyBTSUdOO1NrOzA7T047Ozs7O047Ozs7OworMDJENztNT0RJRklFUiBMRVRURVIgTUlOVVMgU0lHTjtTazswO09OOzs7OztOOzs7OzsKKzAyRDg7QlJFVkU7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDY7Ozs7TjtTUEFDSU5HIEJSRVZFOzs7OworMDJEOTtET1QgQUJPVkU7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMDc7Ozs7TjtTUEFDSU5HIERPVCBBQk9WRTtNYW5kYXJpbiBDaGluZXNlIGxpZ2h0IHRvbmU7OzsKKzAyREE7UklORyBBQk9WRTtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwQTs7OztOO1NQQUNJTkcgUklORyBBQk9WRTs7OzsKKzAyREI7T0dPTkVLO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzI4Ozs7O047U1BBQ0lORyBPR09ORUs7Ozs7CiswMkRDO1NNQUxMIFRJTERFO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzAzOzs7O047U1BBQ0lORyBUSUxERTs7OzsKKzAyREQ7RE9VQkxFIEFDVVRFIEFDQ0VOVDtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwQjs7OztOO1NQQUNJTkcgRE9VQkxFIEFDVVRFOzs7OworMDJERTtNT0RJRklFUiBMRVRURVIgUkhPVElDIEhPT0s7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkRGO01PRElGSUVSIExFVFRFUiBDUk9TUyBBQ0NFTlQ7U2s7MDtPTjs7Ozs7Tjs7Ozs7CiswMkUwO01PRElGSUVSIExFVFRFUiBTTUFMTCBHQU1NQTtMbTswO0w7PHN1cGVyPiAwMjYzOzs7O047Ozs7OworMDJFMTtNT0RJRklFUiBMRVRURVIgU01BTEwgTDtMbTswO0w7PHN1cGVyPiAwMDZDOzs7O047Ozs7OworMDJFMjtNT0RJRklFUiBMRVRURVIgU01BTEwgUztMbTswO0w7PHN1cGVyPiAwMDczOzs7O047Ozs7OworMDJFMztNT0RJRklFUiBMRVRURVIgU01BTEwgWDtMbTswO0w7PHN1cGVyPiAwMDc4Ozs7O047Ozs7OworMDJFNDtNT0RJRklFUiBMRVRURVIgU01BTEwgUkVWRVJTRUQgR0xPVFRBTCBTVE9QO0xtOzA7TDs8c3VwZXI+IDAyOTU7Ozs7Tjs7Ozs7CiswMkU1O01PRElGSUVSIExFVFRFUiBFWFRSQS1ISUdIIFRPTkUgQkFSO1NrOzA7T047Ozs7O047Ozs7OworMDJFNjtNT0RJRklFUiBMRVRURVIgSElHSCBUT05FIEJBUjtTazswO09OOzs7OztOOzs7OzsKKzAyRTc7TU9ESUZJRVIgTEVUVEVSIE1JRCBUT05FIEJBUjtTazswO09OOzs7OztOOzs7OzsKKzAyRTg7TU9ESUZJRVIgTEVUVEVSIExPVyBUT05FIEJBUjtTazswO09OOzs7OztOOzs7OzsKKzAyRTk7TU9ESUZJRVIgTEVUVEVSIEVYVFJBLUxPVyBUT05FIEJBUjtTazswO09OOzs7OztOOzs7OzsKKzAyRUE7TU9ESUZJRVIgTEVUVEVSIFlJTiBERVBBUlRJTkcgVE9ORSBNQVJLO1NrOzA7T047Ozs7O047Ozs7OworMDJFQjtNT0RJRklFUiBMRVRURVIgWUFORyBERVBBUlRJTkcgVE9ORSBNQVJLO1NrOzA7T047Ozs7O047Ozs7OworMDJFQztNT0RJRklFUiBMRVRURVIgVk9JQ0lORztTazswO09OOzs7OztOOzs7OzsKKzAyRUQ7TU9ESUZJRVIgTEVUVEVSIFVOQVNQSVJBVEVEO1NrOzA7T047Ozs7O047Ozs7OworMDJFRTtNT0RJRklFUiBMRVRURVIgRE9VQkxFIEFQT1NUUk9QSEU7TG07MDtMOzs7OztOOzs7OzsKKzAzMDA7Q09NQklOSU5HIEdSQVZFIEFDQ0VOVDtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIEdSQVZFO1ZhcmlhOzs7CiswMzAxO0NPTUJJTklORyBBQ1VURSBBQ0NFTlQ7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBBQ1VURTtPeGlhOzs7CiswMzAyO0NPTUJJTklORyBDSVJDVU1GTEVYIEFDQ0VOVDtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIENJUkNVTUZMRVg7Ozs7CiswMzAzO0NPTUJJTklORyBUSUxERTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFRJTERFOzs7OworMDMwNDtDT01CSU5JTkcgTUFDUk9OO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgTUFDUk9OOzs7OworMDMwNTtDT01CSU5JTkcgT1ZFUkxJTkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBPVkVSU0NPUkU7Ozs7CiswMzA2O0NPTUJJTklORyBCUkVWRTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIEJSRVZFO1ZyYWNoeTs7OworMDMwNztDT01CSU5JTkcgRE9UIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgRE9UIEFCT1ZFOzs7OworMDMwODtDT01CSU5JTkcgRElBRVJFU0lTO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgRElBRVJFU0lTO0RpYWx5dGlrYTs7OworMDMwOTtDT01CSU5JTkcgSE9PSyBBQk9WRTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIEhPT0sgQUJPVkU7Ozs7CiswMzBBO0NPTUJJTklORyBSSU5HIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgUklORyBBQk9WRTs7OzsKKzAzMEI7Q09NQklOSU5HIERPVUJMRSBBQ1VURSBBQ0NFTlQ7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBET1VCTEUgQUNVVEU7Ozs7CiswMzBDO0NPTUJJTklORyBDQVJPTjtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIEhBQ0VLOzs7OworMDMwRDtDT01CSU5JTkcgVkVSVElDQUwgTElORSBBQk9WRTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFZFUlRJQ0FMIExJTkUgQUJPVkU7VG9ub3M7OzsKKzAzMEU7Q09NQklOSU5HIERPVUJMRSBWRVJUSUNBTCBMSU5FIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgRE9VQkxFIFZFUlRJQ0FMIExJTkUgQUJPVkU7Ozs7CiswMzBGO0NPTUJJTklORyBET1VCTEUgR1JBVkUgQUNDRU5UO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgRE9VQkxFIEdSQVZFOzs7OworMDMxMDtDT01CSU5JTkcgQ0FORFJBQklORFU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBDQU5EUkFCSU5EVTs7OzsKKzAzMTE7Q09NQklOSU5HIElOVkVSVEVEIEJSRVZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgSU5WRVJURUQgQlJFVkU7Ozs7CiswMzEyO0NPTUJJTklORyBUVVJORUQgQ09NTUEgQUJPVkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBUVVJORUQgQ09NTUEgQUJPVkU7Ozs7CiswMzEzO0NPTUJJTklORyBDT01NQSBBQk9WRTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIENPTU1BIEFCT1ZFO1BzaWxpOzs7CiswMzE0O0NPTUJJTklORyBSRVZFUlNFRCBDT01NQSBBQk9WRTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFJFVkVSU0VEIENPTU1BIEFCT1ZFO0Rhc2lhOzs7CiswMzE1O0NPTUJJTklORyBDT01NQSBBQk9WRSBSSUdIVDtNbjsyMzI7TlNNOzs7OztOO05PTi1TUEFDSU5HIENPTU1BIEFCT1ZFIFJJR0hUOzs7OworMDMxNjtDT01CSU5JTkcgR1JBVkUgQUNDRU5UIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgR1JBVkUgQkVMT1c7Ozs7CiswMzE3O0NPTUJJTklORyBBQ1VURSBBQ0NFTlQgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBBQ1VURSBCRUxPVzs7OzsKKzAzMTg7Q09NQklOSU5HIExFRlQgVEFDSyBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIExFRlQgVEFDSyBCRUxPVzs7OzsKKzAzMTk7Q09NQklOSU5HIFJJR0hUIFRBQ0sgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBSSUdIVCBUQUNLIEJFTE9XOzs7OworMDMxQTtDT01CSU5JTkcgTEVGVCBBTkdMRSBBQk9WRTtNbjsyMzI7TlNNOzs7OztOO05PTi1TUEFDSU5HIExFRlQgQU5HTEUgQUJPVkU7Ozs7CiswMzFCO0NPTUJJTklORyBIT1JOO01uOzIxNjtOU007Ozs7O047Tk9OLVNQQUNJTkcgSE9STjs7OzsKKzAzMUM7Q09NQklOSU5HIExFRlQgSEFMRiBSSU5HIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgTEVGVCBIQUxGIFJJTkcgQkVMT1c7Ozs7CiswMzFEO0NPTUJJTklORyBVUCBUQUNLIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgVVAgVEFDSyBCRUxPVzs7OzsKKzAzMUU7Q09NQklOSU5HIERPV04gVEFDSyBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIERPV04gVEFDSyBCRUxPVzs7OzsKKzAzMUY7Q09NQklOSU5HIFBMVVMgU0lHTiBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFBMVVMgU0lHTiBCRUxPVzs7OzsKKzAzMjA7Q09NQklOSU5HIE1JTlVTIFNJR04gQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBNSU5VUyBTSUdOIEJFTE9XOzs7OworMDMyMTtDT01CSU5JTkcgUEFMQVRBTElaRUQgSE9PSyBCRUxPVztNbjsyMDI7TlNNOzs7OztOO05PTi1TUEFDSU5HIFBBTEFUQUxJWkVEIEhPT0sgQkVMT1c7Ozs7CiswMzIyO0NPTUJJTklORyBSRVRST0ZMRVggSE9PSyBCRUxPVztNbjsyMDI7TlNNOzs7OztOO05PTi1TUEFDSU5HIFJFVFJPRkxFWCBIT09LIEJFTE9XOzs7OworMDMyMztDT01CSU5JTkcgRE9UIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgRE9UIEJFTE9XOzs7OworMDMyNDtDT01CSU5JTkcgRElBRVJFU0lTIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgRE9VQkxFIERPVCBCRUxPVzs7OzsKKzAzMjU7Q09NQklOSU5HIFJJTkcgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBSSU5HIEJFTE9XOzs7OworMDMyNjtDT01CSU5JTkcgQ09NTUEgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBDT01NQSBCRUxPVzs7OzsKKzAzMjc7Q09NQklOSU5HIENFRElMTEE7TW47MjAyO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBDRURJTExBOzs7OworMDMyODtDT01CSU5JTkcgT0dPTkVLO01uOzIwMjtOU007Ozs7O047Tk9OLVNQQUNJTkcgT0dPTkVLOzs7OworMDMyOTtDT01CSU5JTkcgVkVSVElDQUwgTElORSBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFZFUlRJQ0FMIExJTkUgQkVMT1c7Ozs7CiswMzJBO0NPTUJJTklORyBCUklER0UgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBCUklER0UgQkVMT1c7Ozs7CiswMzJCO0NPTUJJTklORyBJTlZFUlRFRCBET1VCTEUgQVJDSCBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIElOVkVSVEVEIERPVUJMRSBBUkNIIEJFTE9XOzs7OworMDMyQztDT01CSU5JTkcgQ0FST04gQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBIQUNFSyBCRUxPVzs7OzsKKzAzMkQ7Q09NQklOSU5HIENJUkNVTUZMRVggQUNDRU5UIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgQ0lSQ1VNRkxFWCBCRUxPVzs7OzsKKzAzMkU7Q09NQklOSU5HIEJSRVZFIEJFTE9XO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgQlJFVkUgQkVMT1c7Ozs7CiswMzJGO0NPTUJJTklORyBJTlZFUlRFRCBCUkVWRSBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIElOVkVSVEVEIEJSRVZFIEJFTE9XOzs7OworMDMzMDtDT01CSU5JTkcgVElMREUgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBUSUxERSBCRUxPVzs7OzsKKzAzMzE7Q09NQklOSU5HIE1BQ1JPTiBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIE1BQ1JPTiBCRUxPVzs7OzsKKzAzMzI7Q09NQklOSU5HIExPVyBMSU5FO01uOzIyMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgVU5ERVJTQ09SRTs7OzsKKzAzMzM7Q09NQklOSU5HIERPVUJMRSBMT1cgTElORTtNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIERPVUJMRSBVTkRFUlNDT1JFOzs7OworMDMzNDtDT01CSU5JTkcgVElMREUgT1ZFUkxBWTtNbjsxO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBUSUxERSBPVkVSTEFZOzs7OworMDMzNTtDT01CSU5JTkcgU0hPUlQgU1RST0tFIE9WRVJMQVk7TW47MTtOU007Ozs7O047Tk9OLVNQQUNJTkcgU0hPUlQgQkFSIE9WRVJMQVk7Ozs7CiswMzM2O0NPTUJJTklORyBMT05HIFNUUk9LRSBPVkVSTEFZO01uOzE7TlNNOzs7OztOO05PTi1TUEFDSU5HIExPTkcgQkFSIE9WRVJMQVk7Ozs7CiswMzM3O0NPTUJJTklORyBTSE9SVCBTT0xJRFVTIE9WRVJMQVk7TW47MTtOU007Ozs7O047Tk9OLVNQQUNJTkcgU0hPUlQgU0xBU0ggT1ZFUkxBWTs7OzsKKzAzMzg7Q09NQklOSU5HIExPTkcgU09MSURVUyBPVkVSTEFZO01uOzE7TlNNOzs7OztOO05PTi1TUEFDSU5HIExPTkcgU0xBU0ggT1ZFUkxBWTs7OzsKKzAzMzk7Q09NQklOSU5HIFJJR0hUIEhBTEYgUklORyBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFJJR0hUIEhBTEYgUklORyBCRUxPVzs7OzsKKzAzM0E7Q09NQklOSU5HIElOVkVSVEVEIEJSSURHRSBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIElOVkVSVEVEIEJSSURHRSBCRUxPVzs7OzsKKzAzM0I7Q09NQklOSU5HIFNRVUFSRSBCRUxPVztNbjsyMjA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFNRVUFSRSBCRUxPVzs7OzsKKzAzM0M7Q09NQklOSU5HIFNFQUdVTEwgQkVMT1c7TW47MjIwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBTRUFHVUxMIEJFTE9XOzs7OworMDMzRDtDT01CSU5JTkcgWCBBQk9WRTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFggQUJPVkU7Ozs7CiswMzNFO0NPTUJJTklORyBWRVJUSUNBTCBUSUxERTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFZFUlRJQ0FMIFRJTERFOzs7OworMDMzRjtDT01CSU5JTkcgRE9VQkxFIE9WRVJMSU5FO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgRE9VQkxFIE9WRVJTQ09SRTs7OzsKKzAzNDA7Q09NQklOSU5HIEdSQVZFIFRPTkUgTUFSSztNbjsyMzA7TlNNOzAzMDA7Ozs7TjtOT04tU1BBQ0lORyBHUkFWRSBUT05FIE1BUks7VmlldG5hbWVzZTs7OworMDM0MTtDT01CSU5JTkcgQUNVVEUgVE9ORSBNQVJLO01uOzIzMDtOU007MDMwMTs7OztOO05PTi1TUEFDSU5HIEFDVVRFIFRPTkUgTUFSSztWaWV0bmFtZXNlOzs7CiswMzQyO0NPTUJJTklORyBHUkVFSyBQRVJJU1BPTUVOSTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzAzNDM7Q09NQklOSU5HIEdSRUVLIEtPUk9OSVM7TW47MjMwO05TTTswMzEzOzs7O047Ozs7OworMDM0NDtDT01CSU5JTkcgR1JFRUsgRElBTFlUSUtBIFRPTk9TO01uOzIzMDtOU007MDMwOCAwMzAxOzs7O047R1JFRUsgTk9OLVNQQUNJTkcgRElBRVJFU0lTIFRPTk9TOzs7OworMDM0NTtDT01CSU5JTkcgR1JFRUsgWVBPR0VHUkFNTUVOSTtNbjsyNDA7TlNNOzs7OztOO0dSRUVLIE5PTi1TUEFDSU5HIElPVEEgQkVMT1c7OzAzOTk7OzAzOTkKKzAzNDY7Q09NQklOSU5HIEJSSURHRSBBQk9WRTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzAzNDc7Q09NQklOSU5HIEVRVUFMUyBTSUdOIEJFTE9XO01uOzIyMDtOU007Ozs7O047Ozs7OworMDM0ODtDT01CSU5JTkcgRE9VQkxFIFZFUlRJQ0FMIExJTkUgQkVMT1c7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswMzQ5O0NPTUJJTklORyBMRUZUIEFOR0xFIEJFTE9XO01uOzIyMDtOU007Ozs7O047Ozs7OworMDM0QTtDT01CSU5JTkcgTk9UIFRJTERFIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Ozs7OworMDM0QjtDT01CSU5JTkcgSE9NT1RIRVRJQyBBQk9WRTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzAzNEM7Q09NQklOSU5HIEFMTU9TVCBFUVVBTCBUTyBBQk9WRTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzAzNEQ7Q09NQklOSU5HIExFRlQgUklHSFQgQVJST1cgQkVMT1c7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswMzRFO0NPTUJJTklORyBVUFdBUkRTIEFSUk9XIEJFTE9XO01uOzIyMDtOU007Ozs7O047Ozs7OworMDM2MDtDT01CSU5JTkcgRE9VQkxFIFRJTERFO01uOzIzNDtOU007Ozs7O047Ozs7OworMDM2MTtDT01CSU5JTkcgRE9VQkxFIElOVkVSVEVEIEJSRVZFO01uOzIzNDtOU007Ozs7O047Ozs7OworMDM2MjtDT01CSU5JTkcgRE9VQkxFIFJJR0hUV0FSRFMgQVJST1cgQkVMT1c7TW47MjMzO05TTTs7Ozs7Tjs7Ozs7CiswMzc0O0dSRUVLIE5VTUVSQUwgU0lHTjtTazswO09OOzAyQjk7Ozs7TjtHUkVFSyBVUFBFUiBOVU1FUkFMIFNJR047RGV4aWEga2VyYWlhOzs7CiswMzc1O0dSRUVLIExPV0VSIE5VTUVSQUwgU0lHTjtTazswO09OOzs7OztOOztBcmlzdGVyaSBrZXJhaWE7OzsKKzAzN0E7R1JFRUsgWVBPR0VHUkFNTUVOSTtMbTswO0w7PGNvbXBhdD4gMDAyMCAwMzQ1Ozs7O047R1JFRUsgU1BBQ0lORyBJT1RBIEJFTE9XOzs7OworMDM3RTtHUkVFSyBRVUVTVElPTiBNQVJLO1BvOzA7T047MDAzQjs7OztOOztFcm90aW1hdGlrbzs7OworMDM4NDtHUkVFSyBUT05PUztTazswO09OOzxjb21wYXQ+IDAwMjAgMDMwMTs7OztOO0dSRUVLIFNQQUNJTkcgVE9OT1M7Ozs7CiswMzg1O0dSRUVLIERJQUxZVElLQSBUT05PUztTazswO09OOzAwQTggMDMwMTs7OztOO0dSRUVLIFNQQUNJTkcgRElBRVJFU0lTIFRPTk9TOzs7OworMDM4NjtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFRPTk9TO0x1OzA7TDswMzkxIDAzMDE7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBUT05PUzs7OzAzQUM7CiswMzg3O0dSRUVLIEFOTyBURUxFSUE7UG87MDtPTjswMEI3Ozs7O047Ozs7OworMDM4ODtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggVE9OT1M7THU7MDtMOzAzOTUgMDMwMTs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gVE9OT1M7OzswM0FEOworMDM4OTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBUT05PUztMdTswO0w7MDM5NyAwMzAxOzs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFRPTk9TOzs7MDNBRTsKKzAzOEE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFRPTk9TO0x1OzA7TDswMzk5IDAzMDE7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFRPTk9TOzs7MDNBRjsKKzAzOEM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIFRPTk9TO0x1OzA7TDswMzlGIDAzMDE7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFRPTk9TOzs7MDNDQzsKKzAzOEU7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIFRPTk9TO0x1OzA7TDswM0E1IDAzMDE7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFRPTk9TOzs7MDNDRDsKKzAzOEY7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBUT05PUztMdTswO0w7MDNBOSAwMzAxOzs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgVE9OT1M7OzswM0NFOworMDM5MDtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgVE9OT1M7TGw7MDtMOzAzQ0EgMDMwMTs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIERJQUVSRVNJUyBUT05PUzs7OzsKKzAzOTE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEE7THU7MDtMOzs7OztOOzs7OzAzQjE7CiswMzkyO0dSRUVLIENBUElUQUwgTEVUVEVSIEJFVEE7THU7MDtMOzs7OztOOzs7OzAzQjI7CiswMzkzO0dSRUVLIENBUElUQUwgTEVUVEVSIEdBTU1BO0x1OzA7TDs7Ozs7Tjs7OzswM0IzOworMDM5NDtHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQTtMdTswO0w7Ozs7O047Ozs7MDNCNDsKKzAzOTU7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTjtMdTswO0w7Ozs7O047Ozs7MDNCNTsKKzAzOTY7R1JFRUsgQ0FQSVRBTCBMRVRURVIgWkVUQTtMdTswO0w7Ozs7O047Ozs7MDNCNjsKKzAzOTc7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBO0x1OzA7TDs7Ozs7Tjs7OzswM0I3OworMDM5ODtHUkVFSyBDQVBJVEFMIExFVFRFUiBUSEVUQTtMdTswO0w7Ozs7O047Ozs7MDNCODsKKzAzOTk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQTtMdTswO0w7Ozs7O047Ozs7MDNCOTsKKzAzOUE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgS0FQUEE7THU7MDtMOzs7OztOOzs7OzAzQkE7CiswMzlCO0dSRUVLIENBUElUQUwgTEVUVEVSIExBTURBO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBMQU1CREE7OzswM0JCOworMDM5QztHUkVFSyBDQVBJVEFMIExFVFRFUiBNVTtMdTswO0w7Ozs7O047Ozs7MDNCQzsKKzAzOUQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgTlU7THU7MDtMOzs7OztOOzs7OzAzQkQ7CiswMzlFO0dSRUVLIENBUElUQUwgTEVUVEVSIFhJO0x1OzA7TDs7Ozs7Tjs7OzswM0JFOworMDM5RjtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OO0x1OzA7TDs7Ozs7Tjs7OzswM0JGOworMDNBMDtHUkVFSyBDQVBJVEFMIExFVFRFUiBQSTtMdTswO0w7Ozs7O047Ozs7MDNDMDsKKzAzQTE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgUkhPO0x1OzA7TDs7Ozs7Tjs7OzswM0MxOworMDNBMztHUkVFSyBDQVBJVEFMIExFVFRFUiBTSUdNQTtMdTswO0w7Ozs7O047Ozs7MDNDMzsKKzAzQTQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVEFVO0x1OzA7TDs7Ozs7Tjs7OzswM0M0OworMDNBNTtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OO0x1OzA7TDs7Ozs7Tjs7OzswM0M1OworMDNBNjtHUkVFSyBDQVBJVEFMIExFVFRFUiBQSEk7THU7MDtMOzs7OztOOzs7OzAzQzY7CiswM0E3O0dSRUVLIENBUElUQUwgTEVUVEVSIENISTtMdTswO0w7Ozs7O047Ozs7MDNDNzsKKzAzQTg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgUFNJO0x1OzA7TDs7Ozs7Tjs7OzswM0M4OworMDNBOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQTtMdTswO0w7Ozs7O047Ozs7MDNDOTsKKzAzQUE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQTtMdTswO0w7MDM5OSAwMzA4Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBESUFFUkVTSVM7OzswM0NBOworMDNBQjtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBO0x1OzA7TDswM0E1IDAzMDg7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIERJQUVSRVNJUzs7OzAzQ0I7CiswM0FDO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFRPTk9TO0xsOzA7TDswM0IxIDAzMDE7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgVE9OT1M7OzAzODY7OzAzODYKKzAzQUQ7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBUT05PUztMbDswO0w7MDNCNSAwMzAxOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gVE9OT1M7OzAzODg7OzAzODgKKzAzQUU7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFRPTk9TO0xsOzA7TDswM0I3IDAzMDE7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFRPTk9TOzswMzg5OzswMzg5CiswM0FGO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggVE9OT1M7TGw7MDtMOzAzQjkgMDMwMTs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFRPTk9TOzswMzhBOzswMzhBCiswM0IwO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBIEFORCBUT05PUztMbDswO0w7MDNDQiAwMzAxOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gRElBRVJFU0lTIFRPTk9TOzs7OworMDNCMTtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEE7TGw7MDtMOzs7OztOOzs7MDM5MTs7MDM5MQorMDNCMjtHUkVFSyBTTUFMTCBMRVRURVIgQkVUQTtMbDswO0w7Ozs7O047OzswMzkyOzswMzkyCiswM0IzO0dSRUVLIFNNQUxMIExFVFRFUiBHQU1NQTtMbDswO0w7Ozs7O047OzswMzkzOzswMzkzCiswM0I0O0dSRUVLIFNNQUxMIExFVFRFUiBERUxUQTtMbDswO0w7Ozs7O047OzswMzk0OzswMzk0CiswM0I1O0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OO0xsOzA7TDs7Ozs7Tjs7OzAzOTU7OzAzOTUKKzAzQjY7R1JFRUsgU01BTEwgTEVUVEVSIFpFVEE7TGw7MDtMOzs7OztOOzs7MDM5Njs7MDM5NgorMDNCNztHUkVFSyBTTUFMTCBMRVRURVIgRVRBO0xsOzA7TDs7Ozs7Tjs7OzAzOTc7OzAzOTcKKzAzQjg7R1JFRUsgU01BTEwgTEVUVEVSIFRIRVRBO0xsOzA7TDs7Ozs7Tjs7OzAzOTg7OzAzOTgKKzAzQjk7R1JFRUsgU01BTEwgTEVUVEVSIElPVEE7TGw7MDtMOzs7OztOOzs7MDM5OTs7MDM5OQorMDNCQTtHUkVFSyBTTUFMTCBMRVRURVIgS0FQUEE7TGw7MDtMOzs7OztOOzs7MDM5QTs7MDM5QQorMDNCQjtHUkVFSyBTTUFMTCBMRVRURVIgTEFNREE7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBMQU1CREE7OzAzOUI7OzAzOUIKKzAzQkM7R1JFRUsgU01BTEwgTEVUVEVSIE1VO0xsOzA7TDs7Ozs7Tjs7OzAzOUM7OzAzOUMKKzAzQkQ7R1JFRUsgU01BTEwgTEVUVEVSIE5VO0xsOzA7TDs7Ozs7Tjs7OzAzOUQ7OzAzOUQKKzAzQkU7R1JFRUsgU01BTEwgTEVUVEVSIFhJO0xsOzA7TDs7Ozs7Tjs7OzAzOUU7OzAzOUUKKzAzQkY7R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST047TGw7MDtMOzs7OztOOzs7MDM5Rjs7MDM5RgorMDNDMDtHUkVFSyBTTUFMTCBMRVRURVIgUEk7TGw7MDtMOzs7OztOOzs7MDNBMDs7MDNBMAorMDNDMTtHUkVFSyBTTUFMTCBMRVRURVIgUkhPO0xsOzA7TDs7Ozs7Tjs7OzAzQTE7OzAzQTEKKzAzQzI7R1JFRUsgU01BTEwgTEVUVEVSIEZJTkFMIFNJR01BO0xsOzA7TDs7Ozs7Tjs7OzAzQTM7OzAzQTMKKzAzQzM7R1JFRUsgU01BTEwgTEVUVEVSIFNJR01BO0xsOzA7TDs7Ozs7Tjs7OzAzQTM7OzAzQTMKKzAzQzQ7R1JFRUsgU01BTEwgTEVUVEVSIFRBVTtMbDswO0w7Ozs7O047OzswM0E0OzswM0E0CiswM0M1O0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OO0xsOzA7TDs7Ozs7Tjs7OzAzQTU7OzAzQTUKKzAzQzY7R1JFRUsgU01BTEwgTEVUVEVSIFBISTtMbDswO0w7Ozs7O047OzswM0E2OzswM0E2CiswM0M3O0dSRUVLIFNNQUxMIExFVFRFUiBDSEk7TGw7MDtMOzs7OztOOzs7MDNBNzs7MDNBNworMDNDODtHUkVFSyBTTUFMTCBMRVRURVIgUFNJO0xsOzA7TDs7Ozs7Tjs7OzAzQTg7OzAzQTgKKzAzQzk7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBO0xsOzA7TDs7Ozs7Tjs7OzAzQTk7OzAzQTkKKzAzQ0E7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0E7TGw7MDtMOzAzQjkgMDMwODs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIERJQUVSRVNJUzs7MDNBQTs7MDNBQQorMDNDQjtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQTtMbDswO0w7MDNDNSAwMzA4Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gRElBRVJFU0lTOzswM0FCOzswM0FCCiswM0NDO0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggVE9OT1M7TGw7MDtMOzAzQkYgMDMwMTs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFRPTk9TOzswMzhDOzswMzhDCiswM0NEO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggVE9OT1M7TGw7MDtMOzAzQzUgMDMwMTs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFRPTk9TOzswMzhFOzswMzhFCiswM0NFO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFRPTk9TO0xsOzA7TDswM0M5IDAzMDE7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgVE9OT1M7OzAzOEY7OzAzOEYKKzAzRDA7R1JFRUsgQkVUQSBTWU1CT0w7TGw7MDtMOzxjb21wYXQ+IDAzQjI7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgQ1VSTEVEIEJFVEE7OzAzOTI7OzAzOTIKKzAzRDE7R1JFRUsgVEhFVEEgU1lNQk9MO0xsOzA7TDs8Y29tcGF0PiAwM0I4Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIFNDUklQVCBUSEVUQTs7MDM5ODs7MDM5OAorMDNEMjtHUkVFSyBVUFNJTE9OIFdJVEggSE9PSyBTWU1CT0w7THU7MDtMOzxjb21wYXQ+IDAzQTU7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIEhPT0s7Ozs7CiswM0QzO0dSRUVLIFVQU0lMT04gV0lUSCBBQ1VURSBBTkQgSE9PSyBTWU1CT0w7THU7MDtMOzAzRDIgMDMwMTs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gSE9PSyBUT05PUzs7OzsKKzAzRDQ7R1JFRUsgVVBTSUxPTiBXSVRIIERJQUVSRVNJUyBBTkQgSE9PSyBTWU1CT0w7THU7MDtMOzAzRDIgMDMwODs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gSE9PSyBESUFFUkVTSVM7Ozs7CiswM0Q1O0dSRUVLIFBISSBTWU1CT0w7TGw7MDtMOzxjb21wYXQ+IDAzQzY7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgU0NSSVBUIFBISTs7MDNBNjs7MDNBNgorMDNENjtHUkVFSyBQSSBTWU1CT0w7TGw7MDtMOzxjb21wYXQ+IDAzQzA7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgUEk7OzAzQTA7OzAzQTAKKzAzRDc7R1JFRUsgS0FJIFNZTUJPTDtMbDswO0w7Ozs7O047Ozs7OworMDNEQTtHUkVFSyBMRVRURVIgU1RJR01BO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBTVElHTUE7OzswM0RCOworMDNEQjtHUkVFSyBTTUFMTCBMRVRURVIgU1RJR01BO0xsOzA7TDs7Ozs7Tjs7OzAzREE7OzAzREEKKzAzREM7R1JFRUsgTEVUVEVSIERJR0FNTUE7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIERJR0FNTUE7OzswM0REOworMDNERDtHUkVFSyBTTUFMTCBMRVRURVIgRElHQU1NQTtMbDswO0w7Ozs7O047OzswM0RDOzswM0RDCiswM0RFO0dSRUVLIExFVFRFUiBLT1BQQTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgS09QUEE7OzswM0RGOworMDNERjtHUkVFSyBTTUFMTCBMRVRURVIgS09QUEE7TGw7MDtMOzs7OztOOzs7MDNERTs7MDNERQorMDNFMDtHUkVFSyBMRVRURVIgU0FNUEk7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFNBTVBJOzs7MDNFMTsKKzAzRTE7R1JFRUsgU01BTEwgTEVUVEVSIFNBTVBJO0xsOzA7TDs7Ozs7Tjs7OzAzRTA7OzAzRTAKKzAzRTI7Q09QVElDIENBUElUQUwgTEVUVEVSIFNIRUk7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIFNIRUk7OzswM0UzOworMDNFMztDT1BUSUMgU01BTEwgTEVUVEVSIFNIRUk7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBTSEVJOzswM0UyOzswM0UyCiswM0U0O0NPUFRJQyBDQVBJVEFMIExFVFRFUiBGRUk7THU7MDtMOzs7OztOO0dSRUVLIENBUElUQUwgTEVUVEVSIEZFSTs7OzAzRTU7CiswM0U1O0NPUFRJQyBTTUFMTCBMRVRURVIgRkVJO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgRkVJOzswM0U0OzswM0U0CiswM0U2O0NPUFRJQyBDQVBJVEFMIExFVFRFUiBLSEVJO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBLSEVJOzs7MDNFNzsKKzAzRTc7Q09QVElDIFNNQUxMIExFVFRFUiBLSEVJO0xsOzA7TDs7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgS0hFSTs7MDNFNjs7MDNFNgorMDNFODtDT1BUSUMgQ0FQSVRBTCBMRVRURVIgSE9SSTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgSE9SSTs7OzAzRTk7CiswM0U5O0NPUFRJQyBTTUFMTCBMRVRURVIgSE9SSTtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIEhPUkk7OzAzRTg7OzAzRTgKKzAzRUE7Q09QVElDIENBUElUQUwgTEVUVEVSIEdBTkdJQTtMdTswO0w7Ozs7O047R1JFRUsgQ0FQSVRBTCBMRVRURVIgR0FOR0lBOzs7MDNFQjsKKzAzRUI7Q09QVElDIFNNQUxMIExFVFRFUiBHQU5HSUE7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBHQU5HSUE7OzAzRUE7OzAzRUEKKzAzRUM7Q09QVElDIENBUElUQUwgTEVUVEVSIFNISU1BO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBTSElNQTs7OzAzRUQ7CiswM0VEO0NPUFRJQyBTTUFMTCBMRVRURVIgU0hJTUE7TGw7MDtMOzs7OztOO0dSRUVLIFNNQUxMIExFVFRFUiBTSElNQTs7MDNFQzs7MDNFQworMDNFRTtDT1BUSUMgQ0FQSVRBTCBMRVRURVIgREVJO0x1OzA7TDs7Ozs7TjtHUkVFSyBDQVBJVEFMIExFVFRFUiBERUk7OzswM0VGOworMDNFRjtDT1BUSUMgU01BTEwgTEVUVEVSIERFSTtMbDswO0w7Ozs7O047R1JFRUsgU01BTEwgTEVUVEVSIERFSTs7MDNFRTs7MDNFRQorMDNGMDtHUkVFSyBLQVBQQSBTWU1CT0w7TGw7MDtMOzxjb21wYXQ+IDAzQkE7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgU0NSSVBUIEtBUFBBOzswMzlBOzswMzlBCiswM0YxO0dSRUVLIFJITyBTWU1CT0w7TGw7MDtMOzxjb21wYXQ+IDAzQzE7Ozs7TjtHUkVFSyBTTUFMTCBMRVRURVIgVEFJTEVEIFJITzs7MDNBMTs7MDNBMQorMDNGMjtHUkVFSyBMVU5BVEUgU0lHTUEgU1lNQk9MO0xsOzA7TDs8Y29tcGF0PiAwM0MyOzs7O047R1JFRUsgU01BTEwgTEVUVEVSIExVTkFURSBTSUdNQTs7MDNBMzs7MDNBMworMDNGMztHUkVFSyBMRVRURVIgWU9UO0xsOzA7TDs7Ozs7Tjs7Ozs7CiswNDAwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElFIFdJVEggR1JBVkU7THU7MDtMOzA0MTUgMDMwMDs7OztOOzs7OzA0NTA7CiswNDAxO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElPO0x1OzA7TDswNDE1IDAzMDg7Ozs7Tjs7OzswNDUxOworMDQwMjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBESkU7THU7MDtMOzs7OztOOztTZXJib2Nyb2F0aWFuOzswNDUyOworMDQwMztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSkU7THU7MDtMOzA0MTMgMDMwMTs7OztOOzs7OzA0NTM7CiswNDA0O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFVLUkFJTklBTiBJRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRTs7OzA0NTQ7CiswNDA1O0NZUklMTElDIENBUElUQUwgTEVUVEVSIERaRTtMdTswO0w7Ozs7O047Ozs7MDQ1NTsKKzA0MDY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQllFTE9SVVNTSUFOLVVLUkFJTklBTiBJO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJOzs7MDQ1NjsKKzA0MDc7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUk7THU7MDtMOzA0MDYgMDMwODs7OztOOztVa3JhaW5pYW47OzA0NTc7CiswNDA4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEpFO0x1OzA7TDs7Ozs7Tjs7OzswNDU4OworMDQwOTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBMSkU7THU7MDtMOzs7OztOOzs7OzA0NTk7CiswNDBBO0NZUklMTElDIENBUElUQUwgTEVUVEVSIE5KRTtMdTswO0w7Ozs7O047Ozs7MDQ1QTsKKzA0MEI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNIRTtMdTswO0w7Ozs7O047O1NlcmJvY3JvYXRpYW47OzA0NUI7CiswNDBDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtKRTtMdTswO0w7MDQxQSAwMzAxOzs7O047Ozs7MDQ1QzsKKzA0MEQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSSBXSVRIIEdSQVZFO0x1OzA7TDswNDE4IDAzMDA7Ozs7Tjs7OzswNDVEOworMDQwRTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTSE9SVCBVO0x1OzA7TDswNDIzIDAzMDY7Ozs7Tjs7QnllbG9ydXNzaWFuOzswNDVFOworMDQwRjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBEWkhFO0x1OzA7TDs7Ozs7Tjs7OzswNDVGOworMDQxMDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBO0x1OzA7TDs7Ozs7Tjs7OzswNDMwOworMDQxMTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCRTtMdTswO0w7Ozs7O047Ozs7MDQzMTsKKzA0MTI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVkU7THU7MDtMOzs7OztOOzs7OzA0MzI7CiswNDEzO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0U7OzswNDMzOworMDQxNDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBERTtMdTswO0w7Ozs7O047Ozs7MDQzNDsKKzA0MTU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUU7THU7MDtMOzs7OztOOzs7OzA0MzU7CiswNDE2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFpIRTtMdTswO0w7Ozs7O047Ozs7MDQzNjsKKzA0MTc7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkU7THU7MDtMOzs7OztOOzs7OzA0Mzc7CiswNDE4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEk7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIElJOzs7MDQzODsKKzA0MTk7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgSTtMdTswO0w7MDQxOCAwMzA2Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hPUlQgSUk7OzswNDM5OworMDQxQTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQTtMdTswO0w7Ozs7O047Ozs7MDQzQTsKKzA0MUI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRUw7THU7MDtMOzs7OztOOzs7OzA0M0I7CiswNDFDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVNO0x1OzA7TDs7Ozs7Tjs7OzswNDNDOworMDQxRDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTjtMdTswO0w7Ozs7O047Ozs7MDQzRDsKKzA0MUU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTztMdTswO0w7Ozs7O047Ozs7MDQzRTsKKzA0MUY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUEU7THU7MDtMOzs7OztOOzs7OzA0M0Y7CiswNDIwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVSO0x1OzA7TDs7Ozs7Tjs7OzswNDQwOworMDQyMTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUztMdTswO0w7Ozs7O047Ozs7MDQ0MTsKKzA0MjI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEU7THU7MDtMOzs7OztOOzs7OzA0NDI7CiswNDIzO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFU7THU7MDtMOzs7OztOOzs7OzA0NDM7CiswNDI0O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVGO0x1OzA7TDs7Ozs7Tjs7OzswNDQ0OworMDQyNTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0hBOzs7MDQ0NTsKKzA0MjY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVFNFO0x1OzA7TDs7Ozs7Tjs7OzswNDQ2OworMDQyNztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEU7THU7MDtMOzs7OztOOzs7OzA0NDc7CiswNDI4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNIQTtMdTswO0w7Ozs7O047Ozs7MDQ0ODsKKzA0Mjk7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0hDSEE7THU7MDtMOzs7OztOOzs7OzA0NDk7CiswNDJBO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEhBUkQgU0lHTjtMdTswO0w7Ozs7O047Ozs7MDQ0QTsKKzA0MkI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUVSVTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUVSSTs7OzA0NEI7CiswNDJDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNPRlQgU0lHTjtMdTswO0w7Ozs7O047Ozs7MDQ0QzsKKzA0MkQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUkVWRVJTRUQgRTs7OzA0NEQ7CiswNDJFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFlVO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJVTs7OzA0NEU7CiswNDJGO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFlBO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJQTs7OzA0NEY7CiswNDMwO0NZUklMTElDIFNNQUxMIExFVFRFUiBBO0xsOzA7TDs7Ozs7Tjs7OzA0MTA7OzA0MTAKKzA0MzE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEJFO0xsOzA7TDs7Ozs7Tjs7OzA0MTE7OzA0MTEKKzA0MzI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFZFO0xsOzA7TDs7Ozs7Tjs7OzA0MTI7OzA0MTIKKzA0MzM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEdFOzswNDEzOzswNDEzCiswNDM0O0NZUklMTElDIFNNQUxMIExFVFRFUiBERTtMbDswO0w7Ozs7O047OzswNDE0OzswNDE0CiswNDM1O0NZUklMTElDIFNNQUxMIExFVFRFUiBJRTtMbDswO0w7Ozs7O047OzswNDE1OzswNDE1CiswNDM2O0NZUklMTElDIFNNQUxMIExFVFRFUiBaSEU7TGw7MDtMOzs7OztOOzs7MDQxNjs7MDQxNgorMDQzNztDWVJJTExJQyBTTUFMTCBMRVRURVIgWkU7TGw7MDtMOzs7OztOOzs7MDQxNzs7MDQxNworMDQzODtDWVJJTExJQyBTTUFMTCBMRVRURVIgSTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElJOzswNDE4OzswNDE4CiswNDM5O0NZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBJO0xsOzA7TDswNDM4IDAzMDY7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hPUlQgSUk7OzA0MTk7OzA0MTkKKzA0M0E7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBO0xsOzA7TDs7Ozs7Tjs7OzA0MUE7OzA0MUEKKzA0M0I7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVMO0xsOzA7TDs7Ozs7Tjs7OzA0MUI7OzA0MUIKKzA0M0M7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVNO0xsOzA7TDs7Ozs7Tjs7OzA0MUM7OzA0MUMKKzA0M0Q7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOO0xsOzA7TDs7Ozs7Tjs7OzA0MUQ7OzA0MUQKKzA0M0U7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE87TGw7MDtMOzs7OztOOzs7MDQxRTs7MDQxRQorMDQzRjtDWVJJTExJQyBTTUFMTCBMRVRURVIgUEU7TGw7MDtMOzs7OztOOzs7MDQxRjs7MDQxRgorMDQ0MDtDWVJJTExJQyBTTUFMTCBMRVRURVIgRVI7TGw7MDtMOzs7OztOOzs7MDQyMDs7MDQyMAorMDQ0MTtDWVJJTExJQyBTTUFMTCBMRVRURVIgRVM7TGw7MDtMOzs7OztOOzs7MDQyMTs7MDQyMQorMDQ0MjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVEU7TGw7MDtMOzs7OztOOzs7MDQyMjs7MDQyMgorMDQ0MztDWVJJTExJQyBTTUFMTCBMRVRURVIgVTtMbDswO0w7Ozs7O047OzswNDIzOzswNDIzCiswNDQ0O0NZUklMTElDIFNNQUxMIExFVFRFUiBFRjtMbDswO0w7Ozs7O047OzswNDI0OzswNDI0CiswNDQ1O0NZUklMTElDIFNNQUxMIExFVFRFUiBIQTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtIQTs7MDQyNTs7MDQyNQorMDQ0NjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNFO0xsOzA7TDs7Ozs7Tjs7OzA0MjY7OzA0MjYKKzA0NDc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIENIRTtMbDswO0w7Ozs7O047OzswNDI3OzswNDI3CiswNDQ4O0NZUklMTElDIFNNQUxMIExFVFRFUiBTSEE7TGw7MDtMOzs7OztOOzs7MDQyODs7MDQyOAorMDQ0OTtDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hDSEE7TGw7MDtMOzs7OztOOzs7MDQyOTs7MDQyOQorMDQ0QTtDWVJJTExJQyBTTUFMTCBMRVRURVIgSEFSRCBTSUdOO0xsOzA7TDs7Ozs7Tjs7OzA0MkE7OzA0MkEKKzA0NEI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlU7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBZRVJJOzswNDJCOzswNDJCCiswNDRDO0NZUklMTElDIFNNQUxMIExFVFRFUiBTT0ZUIFNJR047TGw7MDtMOzs7OztOOzs7MDQyQzs7MDQyQworMDQ0RDtDWVJJTExJQyBTTUFMTCBMRVRURVIgRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFJFVkVSU0VEIEU7OzA0MkQ7OzA0MkQKKzA0NEU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFlVO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgSVU7OzA0MkU7OzA0MkUKKzA0NEY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFlBO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgSUE7OzA0MkY7OzA0MkYKKzA0NTA7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElFIFdJVEggR1JBVkU7TGw7MDtMOzA0MzUgMDMwMDs7OztOOzs7MDQwMDs7MDQwMAorMDQ1MTtDWVJJTExJQyBTTUFMTCBMRVRURVIgSU87TGw7MDtMOzA0MzUgMDMwODs7OztOOzs7MDQwMTs7MDQwMQorMDQ1MjtDWVJJTExJQyBTTUFMTCBMRVRURVIgREpFO0xsOzA7TDs7Ozs7Tjs7U2VyYm9jcm9hdGlhbjswNDAyOzswNDAyCiswNDUzO0NZUklMTElDIFNNQUxMIExFVFRFUiBHSkU7TGw7MDtMOzA0MzMgMDMwMTs7OztOOzs7MDQwMzs7MDQwMworMDQ1NDtDWVJJTExJQyBTTUFMTCBMRVRURVIgVUtSQUlOSUFOIElFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRTs7MDQwNDs7MDQwNAorMDQ1NTtDWVJJTExJQyBTTUFMTCBMRVRURVIgRFpFO0xsOzA7TDs7Ozs7Tjs7OzA0MDU7OzA0MDUKKzA0NTY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEJZRUxPUlVTU0lBTi1VS1JBSU5JQU4gSTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEk7OzA0MDY7OzA0MDYKKzA0NTc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFlJO0xsOzA7TDswNDU2IDAzMDg7Ozs7Tjs7VWtyYWluaWFuOzA0MDc7OzA0MDcKKzA0NTg7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEpFO0xsOzA7TDs7Ozs7Tjs7OzA0MDg7OzA0MDgKKzA0NTk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIExKRTtMbDswO0w7Ozs7O047OzswNDA5OzswNDA5CiswNDVBO0NZUklMTElDIFNNQUxMIExFVFRFUiBOSkU7TGw7MDtMOzs7OztOOzs7MDQwQTs7MDQwQQorMDQ1QjtDWVJJTExJQyBTTUFMTCBMRVRURVIgVFNIRTtMbDswO0w7Ozs7O047O1NlcmJvY3JvYXRpYW47MDQwQjs7MDQwQgorMDQ1QztDWVJJTExJQyBTTUFMTCBMRVRURVIgS0pFO0xsOzA7TDswNDNBIDAzMDE7Ozs7Tjs7OzA0MEM7OzA0MEMKKzA0NUQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEkgV0lUSCBHUkFWRTtMbDswO0w7MDQzOCAwMzAwOzs7O047OzswNDBEOzswNDBECiswNDVFO0NZUklMTElDIFNNQUxMIExFVFRFUiBTSE9SVCBVO0xsOzA7TDswNDQzIDAzMDY7Ozs7Tjs7QnllbG9ydXNzaWFuOzA0MEU7OzA0MEUKKzA0NUY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIERaSEU7TGw7MDtMOzs7OztOOzs7MDQwRjs7MDQwRgorMDQ2MDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPTUVHQTtMdTswO0w7Ozs7O047Ozs7MDQ2MTsKKzA0NjE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE9NRUdBO0xsOzA7TDs7Ozs7Tjs7OzA0NjA7OzA0NjAKKzA0NjI7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUFUO0x1OzA7TDs7Ozs7Tjs7OzswNDYzOworMDQ2MztDWVJJTExJQyBTTUFMTCBMRVRURVIgWUFUO0xsOzA7TDs7Ozs7Tjs7OzA0NjI7OzA0NjIKKzA0NjQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSU9USUZJRUQgRTtMdTswO0w7Ozs7O047Ozs7MDQ2NTsKKzA0NjU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElPVElGSUVEIEU7TGw7MDtMOzs7OztOOzs7MDQ2NDs7MDQ2NAorMDQ2NjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBMSVRUTEUgWVVTO0x1OzA7TDs7Ozs7Tjs7OzswNDY3OworMDQ2NztDWVJJTExJQyBTTUFMTCBMRVRURVIgTElUVExFIFlVUztMbDswO0w7Ozs7O047OzswNDY2OzswNDY2CiswNDY4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIElPVElGSUVEIExJVFRMRSBZVVM7THU7MDtMOzs7OztOOzs7OzA0Njk7CiswNDY5O0NZUklMTElDIFNNQUxMIExFVFRFUiBJT1RJRklFRCBMSVRUTEUgWVVTO0xsOzA7TDs7Ozs7Tjs7OzA0Njg7OzA0NjgKKzA0NkE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQklHIFlVUztMdTswO0w7Ozs7O047Ozs7MDQ2QjsKKzA0NkI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEJJRyBZVVM7TGw7MDtMOzs7OztOOzs7MDQ2QTs7MDQ2QQorMDQ2QztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJT1RJRklFRCBCSUcgWVVTO0x1OzA7TDs7Ozs7Tjs7OzswNDZEOworMDQ2RDtDWVJJTExJQyBTTUFMTCBMRVRURVIgSU9USUZJRUQgQklHIFlVUztMbDswO0w7Ozs7O047OzswNDZDOzswNDZDCiswNDZFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtTSTtMdTswO0w7Ozs7O047Ozs7MDQ2RjsKKzA0NkY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtTSTtMbDswO0w7Ozs7O047OzswNDZFOzswNDZFCiswNDcwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFBTSTtMdTswO0w7Ozs7O047Ozs7MDQ3MTsKKzA0NzE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFBTSTtMbDswO0w7Ozs7O047OzswNDcwOzswNDcwCiswNDcyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEZJVEE7THU7MDtMOzs7OztOOzs7OzA0NzM7CiswNDczO0NZUklMTElDIFNNQUxMIExFVFRFUiBGSVRBO0xsOzA7TDs7Ozs7Tjs7OzA0NzI7OzA0NzIKKzA0NzQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSVpISVRTQTtMdTswO0w7Ozs7O047Ozs7MDQ3NTsKKzA0NzU7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIElaSElUU0E7TGw7MDtMOzs7OztOOzs7MDQ3NDs7MDQ3NAorMDQ3NjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJWkhJVFNBIFdJVEggRE9VQkxFIEdSQVZFIEFDQ0VOVDtMdTswO0w7MDQ3NCAwMzBGOzs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSVpISVRTQSBET1VCTEUgR1JBVkU7OzswNDc3OworMDQ3NztDWVJJTExJQyBTTUFMTCBMRVRURVIgSVpISVRTQSBXSVRIIERPVUJMRSBHUkFWRSBBQ0NFTlQ7TGw7MDtMOzA0NzUgMDMwRjs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBJWkhJVFNBIERPVUJMRSBHUkFWRTs7MDQ3Njs7MDQ3NgorMDQ3ODtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVSztMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVUsgRElHUkFQSDs7OzA0Nzk7CiswNDc5O0NZUklMTElDIFNNQUxMIExFVFRFUiBVSztMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFVLIERJR1JBUEg7OzA0Nzg7OzA0NzgKKzA0N0E7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUk9VTkQgT01FR0E7THU7MDtMOzs7OztOOzs7OzA0N0I7CiswNDdCO0NZUklMTElDIFNNQUxMIExFVFRFUiBST1VORCBPTUVHQTtMbDswO0w7Ozs7O047OzswNDdBOzswNDdBCiswNDdDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggVElUTE87THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIE9NRUdBIFRJVExPOzs7MDQ3RDsKKzA0N0Q7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggVElUTE87TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBPTUVHQSBUSVRMTzs7MDQ3Qzs7MDQ3QworMDQ3RTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPVDtMdTswO0w7Ozs7O047Ozs7MDQ3RjsKKzA0N0Y7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE9UO0xsOzA7TDs7Ozs7Tjs7OzA0N0U7OzA0N0UKKzA0ODA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS09QUEE7THU7MDtMOzs7OztOOzs7OzA0ODE7CiswNDgxO0NZUklMTElDIFNNQUxMIExFVFRFUiBLT1BQQTtMbDswO0w7Ozs7O047OzswNDgwOzswNDgwCiswNDgyO0NZUklMTElDIFRIT1VTQU5EUyBTSUdOO1NvOzA7TDs7Ozs7Tjs7Ozs7CiswNDgzO0NPTUJJTklORyBDWVJJTExJQyBUSVRMTztNbjsyMzA7TlNNOzs7OztOO0NZUklMTElDIE5PTi1TUEFDSU5HIFRJVExPOzs7OworMDQ4NDtDT01CSU5JTkcgQ1lSSUxMSUMgUEFMQVRBTElaQVRJT047TW47MjMwO05TTTs7Ozs7TjtDWVJJTExJQyBOT04tU1BBQ0lORyBQQUxBVEFMSVpBVElPTjs7OzsKKzA0ODU7Q09NQklOSU5HIENZUklMTElDIERBU0lBIFBORVVNQVRBO01uOzIzMDtOU007Ozs7O047Q1lSSUxMSUMgTk9OLVNQQUNJTkcgREFTSUEgUE5FVU1BVEE7Ozs7CiswNDg2O0NPTUJJTklORyBDWVJJTExJQyBQU0lMSSBQTkVVTUFUQTtNbjsyMzA7TlNNOzs7OztOO0NZUklMTElDIE5PTi1TUEFDSU5HIFBTSUxJIFBORVVNQVRBOzs7OworMDQ4ODtDT01CSU5JTkcgQ1lSSUxMSUMgSFVORFJFRCBUSE9VU0FORFMgU0lHTjtNZTswO05TTTs7Ozs7Tjs7Ozs7CiswNDg5O0NPTUJJTklORyBDWVJJTExJQyBNSUxMSU9OUyBTSUdOO01lOzA7TlNNOzs7OztOOzs7OzsKKzA0OEM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0VNSVNPRlQgU0lHTjtMdTswO0w7Ozs7O047Ozs7MDQ4RDsKKzA0OEQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNFTUlTT0ZUIFNJR047TGw7MDtMOzs7OztOOzs7MDQ4Qzs7MDQ4QworMDQ4RTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUiBXSVRIIFRJQ0s7THU7MDtMOzs7OztOOzs7OzA0OEY7CiswNDhGO0NZUklMTElDIFNNQUxMIExFVFRFUiBFUiBXSVRIIFRJQ0s7TGw7MDtMOzs7OztOOzs7MDQ4RTs7MDQ4RQorMDQ5MDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUgV0lUSCBVUFRVUk47THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEdFIFdJVEggVVBUVVJOOzs7MDQ5MTsKKzA0OTE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRSBXSVRIIFVQVFVSTjtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEdFIFdJVEggVVBUVVJOOzswNDkwOzswNDkwCiswNDkyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0UgQkFSOzs7MDQ5MzsKKzA0OTM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEdIRSBXSVRIIFNUUk9LRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEdFIEJBUjs7MDQ5Mjs7MDQ5MgorMDQ5NDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBHSEUgV0lUSCBNSURETEUgSE9PSztMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgR0UgSE9PSzs7OzA0OTU7CiswNDk1O0NZUklMTElDIFNNQUxMIExFVFRFUiBHSEUgV0lUSCBNSURETEUgSE9PSztMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEdFIEhPT0s7OzA0OTQ7OzA0OTQKKzA0OTY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFIFdJVEggREVTQ0VOREVSO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUgV0lUSCBSSUdIVCBERVNDRU5ERVI7OzswNDk3OworMDQ5NztDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFIFdJVEggREVTQ0VOREVSO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgWkhFIFdJVEggUklHSFQgREVTQ0VOREVSOzswNDk2OzswNDk2CiswNDk4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFpFIFdJVEggREVTQ0VOREVSO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRSBDRURJTExBOzs7MDQ5OTsKKzA0OTk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFIFdJVEggREVTQ0VOREVSO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgWkUgQ0VESUxMQTs7MDQ5ODs7MDQ5OAorMDQ5QTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIERFU0NFTkRFUjtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgV0lUSCBSSUdIVCBERVNDRU5ERVI7OzswNDlCOworMDQ5QjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBERVNDRU5ERVI7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBLQSBXSVRIIFJJR0hUIERFU0NFTkRFUjs7MDQ5QTs7MDQ5QQorMDQ5QztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIFZFUlRJQ0FMIFNUUk9LRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0EgVkVSVElDQUwgQkFSOzs7MDQ5RDsKKzA0OUQ7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEtBIFdJVEggVkVSVElDQUwgU1RST0tFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgVkVSVElDQUwgQkFSOzswNDlDOzswNDlDCiswNDlFO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIFdJVEggU1RST0tFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBCQVI7OzswNDlGOworMDQ5RjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBLQSBCQVI7OzA0OUU7OzA0OUUKKzA0QTA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkFTSEtJUiBLQTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgUkVWRVJTRUQgR0UgS0E7OzswNEExOworMDRBMTtDWVJJTExJQyBTTUFMTCBMRVRURVIgQkFTSEtJUiBLQTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFJFVkVSU0VEIEdFIEtBOzswNEEwOzswNEEwCiswNEEyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVOIFdJVEggREVTQ0VOREVSO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTiBXSVRIIFJJR0hUIERFU0NFTkRFUjs7OzA0QTM7CiswNEEzO0NZUklMTElDIFNNQUxMIExFVFRFUiBFTiBXSVRIIERFU0NFTkRFUjtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOIFdJVEggUklHSFQgREVTQ0VOREVSOzswNEEyOzswNEEyCiswNEE0O0NZUklMTElDIENBUElUQUwgTElHQVRVUkUgRU4gR0hFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTiBHRTs7OzA0QTU7CiswNEE1O0NZUklMTElDIFNNQUxMIExJR0FUVVJFIEVOIEdIRTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVOIEdFOzswNEE0OzswNEE0CiswNEE2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIFBFIFdJVEggTUlERExFIEhPT0s7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFBFIEhPT0s7QWJraGFzaWFuOzswNEE3OworMDRBNztDWVJJTExJQyBTTUFMTCBMRVRURVIgUEUgV0lUSCBNSURETEUgSE9PSztMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFBFIEhPT0s7QWJraGFzaWFuOzA0QTY7OzA0QTYKKzA0QTg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQUJLSEFTSUFOIEhBO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBPIEhPT0s7OzswNEE5OworMDRBOTtDWVJJTExJQyBTTUFMTCBMRVRURVIgQUJLSEFTSUFOIEhBO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgTyBIT09LOzswNEE4OzswNEE4CiswNEFBO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVTIFdJVEggREVTQ0VOREVSO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFUyBDRURJTExBOzs7MDRBQjsKKzA0QUI7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEVTIFdJVEggREVTQ0VOREVSO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRVMgQ0VESUxMQTs7MDRBQTs7MDRBQQorMDRBQztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURSBXSVRIIERFU0NFTkRFUjtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVEUgV0lUSCBSSUdIVCBERVNDRU5ERVI7OzswNEFEOworMDRBRDtDWVJJTExJQyBTTUFMTCBMRVRURVIgVEUgV0lUSCBERVNDRU5ERVI7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBURSBXSVRIIFJJR0hUIERFU0NFTkRFUjs7MDRBQzs7MDRBQworMDRBRTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBTVFJBSUdIVCBVO0x1OzA7TDs7Ozs7Tjs7OzswNEFGOworMDRBRjtDWVJJTExJQyBTTUFMTCBMRVRURVIgU1RSQUlHSFQgVTtMbDswO0w7Ozs7O047OzswNEFFOzswNEFFCiswNEIwO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUgV0lUSCBTVFJPS0U7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNUUkFJR0hUIFUgQkFSOzs7MDRCMTsKKzA0QjE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNUUkFJR0hUIFUgV0lUSCBTVFJPS0U7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBTVFJBSUdIVCBVIEJBUjs7MDRCMDs7MDRCMAorMDRCMjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBIQSBXSVRIIERFU0NFTkRFUjtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgS0hBIFdJVEggUklHSFQgREVTQ0VOREVSOzs7MDRCMzsKKzA0QjM7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEhBIFdJVEggREVTQ0VOREVSO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0hBIFdJVEggUklHSFQgREVTQ0VOREVSOzswNEIyOzswNEIyCiswNEI0O0NZUklMTElDIENBUElUQUwgTElHQVRVUkUgVEUgVFNFO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBURSBUU0U7QWJraGFzaWFuOzswNEI1OworMDRCNTtDWVJJTExJQyBTTUFMTCBMSUdBVFVSRSBURSBUU0U7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBURSBUU0U7QWJraGFzaWFuOzA0QjQ7OzA0QjQKKzA0QjY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggREVTQ0VOREVSO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBDSEUgV0lUSCBSSUdIVCBERVNDRU5ERVI7OzswNEI3OworMDRCNztDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggREVTQ0VOREVSO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggUklHSFQgREVTQ0VOREVSOzswNEI2OzswNEI2CiswNEI4O0NZUklMTElDIENBUElUQUwgTEVUVEVSIENIRSBXSVRIIFZFUlRJQ0FMIFNUUk9LRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFZFUlRJQ0FMIEJBUjs7OzA0Qjk7CiswNEI5O0NZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBWRVJUSUNBTCBTVFJPS0U7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgVkVSVElDQUwgQkFSOzswNEI4OzswNEI4CiswNEJBO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNISEE7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEg7OzswNEJCOworMDRCQjtDWVJJTExJQyBTTUFMTCBMRVRURVIgU0hIQTtMbDswO0w7Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEg7OzA0QkE7OzA0QkEKKzA0QkM7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQUJLSEFTSUFOIENIRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgSUUgSE9PSzs7OzA0QkQ7CiswNEJEO0NZUklMTElDIFNNQUxMIExFVFRFUiBBQktIQVNJQU4gQ0hFO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUgSE9PSzs7MDRCQzs7MDRCQworMDRCRTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBQktIQVNJQU4gQ0hFIFdJVEggREVTQ0VOREVSO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJRSBIT09LIE9HT05FSzs7OzA0QkY7CiswNEJGO0NZUklMTElDIFNNQUxMIExFVFRFUiBBQktIQVNJQU4gQ0hFIFdJVEggREVTQ0VOREVSO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgSUUgSE9PSyBPR09ORUs7OzA0QkU7OzA0QkUKKzA0QzA7Q1lSSUxMSUMgTEVUVEVSIFBBTE9DSEtBO0x1OzA7TDs7Ozs7TjtDWVJJTExJQyBMRVRURVIgSTs7OzsKKzA0QzE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWkhFIFdJVEggQlJFVkU7THU7MDtMOzA0MTYgMDMwNjs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNIT1JUIFpIRTs7OzA0QzI7CiswNEMyO0NZUklMTElDIFNNQUxMIExFVFRFUiBaSEUgV0lUSCBCUkVWRTtMbDswO0w7MDQzNiAwMzA2Ozs7O047Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFNIT1JUIFpIRTs7MDRDMTs7MDRDMQorMDRDMztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLQSBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEtBIEhPT0s7OzswNEM0OworMDRDNDtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgS0EgSE9PSzs7MDRDMzs7MDRDMworMDRDNztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBFTiBXSVRIIEhPT0s7THU7MDtMOzs7OztOO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEVOIEhPT0s7OzswNEM4OworMDRDODtDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4gV0lUSCBIT09LO0xsOzA7TDs7Ozs7TjtDWVJJTExJQyBTTUFMTCBMRVRURVIgRU4gSE9PSzs7MDRDNzs7MDRDNworMDRDQjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBLSEFLQVNTSUFOIENIRTtMdTswO0w7Ozs7O047Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggTEVGVCBERVNDRU5ERVI7OzswNENDOworMDRDQztDWVJJTExJQyBTTUFMTCBMRVRURVIgS0hBS0FTU0lBTiBDSEU7TGw7MDtMOzs7OztOO0NZUklMTElDIFNNQUxMIExFVFRFUiBDSEUgV0lUSCBMRUZUIERFU0NFTkRFUjs7MDRDQjs7MDRDQgorMDREMDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkU7THU7MDtMOzA0MTAgMDMwNjs7OztOOzs7OzA0RDE7CiswNEQxO0NZUklMTElDIFNNQUxMIExFVFRFUiBBIFdJVEggQlJFVkU7TGw7MDtMOzA0MzAgMDMwNjs7OztOOzs7MDREMDs7MDREMAorMDREMjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBBIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNDEwIDAzMDg7Ozs7Tjs7OzswNEQzOworMDREMztDWVJJTExJQyBTTUFMTCBMRVRURVIgQSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDQzMCAwMzA4Ozs7O047OzswNEQyOzswNEQyCiswNEQ0O0NZUklMTElDIENBUElUQUwgTElHQVRVUkUgQSBJRTtMdTswO0w7Ozs7O047Ozs7MDRENTsKKzA0RDU7Q1lSSUxMSUMgU01BTEwgTElHQVRVUkUgQSBJRTtMbDswO0w7Ozs7O047OzswNEQ0OzswNEQ0CiswNEQ2O0NZUklMTElDIENBUElUQUwgTEVUVEVSIElFIFdJVEggQlJFVkU7THU7MDtMOzA0MTUgMDMwNjs7OztOOzs7OzA0RDc7CiswNEQ3O0NZUklMTElDIFNNQUxMIExFVFRFUiBJRSBXSVRIIEJSRVZFO0xsOzA7TDswNDM1IDAzMDY7Ozs7Tjs7OzA0RDY7OzA0RDYKKzA0RDg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgU0NIV0E7THU7MDtMOzs7OztOOzs7OzA0RDk7CiswNEQ5O0NZUklMTElDIFNNQUxMIExFVFRFUiBTQ0hXQTtMbDswO0w7Ozs7O047OzswNEQ4OzswNEQ4CiswNERBO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFNDSFdBIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNEQ4IDAzMDg7Ozs7Tjs7OzswNERCOworMDREQjtDWVJJTExJQyBTTUFMTCBMRVRURVIgU0NIV0EgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzA0RDkgMDMwODs7OztOOzs7MDREQTs7MDREQQorMDREQztDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaSEUgV0lUSCBESUFFUkVTSVM7THU7MDtMOzA0MTYgMDMwODs7OztOOzs7OzA0REQ7CiswNEREO0NZUklMTElDIFNNQUxMIExFVFRFUiBaSEUgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzA0MzYgMDMwODs7OztOOzs7MDREQzs7MDREQworMDRERTtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBaRSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDQxNyAwMzA4Ozs7O047Ozs7MDRERjsKKzA0REY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFpFIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNDM3IDAzMDg7Ozs7Tjs7OzA0REU7OzA0REUKKzA0RTA7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQUJLSEFTSUFOIERaRTtMdTswO0w7Ozs7O047Ozs7MDRFMTsKKzA0RTE7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEFCS0hBU0lBTiBEWkU7TGw7MDtMOzs7OztOOzs7MDRFMDs7MDRFMAorMDRFMjtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBJIFdJVEggTUFDUk9OO0x1OzA7TDswNDE4IDAzMDQ7Ozs7Tjs7OzswNEUzOworMDRFMztDWVJJTExJQyBTTUFMTCBMRVRURVIgSSBXSVRIIE1BQ1JPTjtMbDswO0w7MDQzOCAwMzA0Ozs7O047OzswNEUyOzswNEUyCiswNEU0O0NZUklMTElDIENBUElUQUwgTEVUVEVSIEkgV0lUSCBESUFFUkVTSVM7THU7MDtMOzA0MTggMDMwODs7OztOOzs7OzA0RTU7CiswNEU1O0NZUklMTElDIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNDM4IDAzMDg7Ozs7Tjs7OzA0RTQ7OzA0RTQKKzA0RTY7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgTyBXSVRIIERJQUVSRVNJUztMdTswO0w7MDQxRSAwMzA4Ozs7O047Ozs7MDRFNzsKKzA0RTc7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIE8gV0lUSCBESUFFUkVTSVM7TGw7MDtMOzA0M0UgMDMwODs7OztOOzs7MDRFNjs7MDRFNgorMDRFODtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBCQVJSRUQgTztMdTswO0w7Ozs7O047Ozs7MDRFOTsKKzA0RTk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIEJBUlJFRCBPO0xsOzA7TDs7Ozs7Tjs7OzA0RTg7OzA0RTgKKzA0RUE7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQkFSUkVEIE8gV0lUSCBESUFFUkVTSVM7THU7MDtMOzA0RTggMDMwODs7OztOOzs7OzA0RUI7CiswNEVCO0NZUklMTElDIFNNQUxMIExFVFRFUiBCQVJSRUQgTyBXSVRIIERJQUVSRVNJUztMbDswO0w7MDRFOSAwMzA4Ozs7O047OzswNEVBOzswNEVBCiswNEVDO0NZUklMTElDIENBUElUQUwgTEVUVEVSIEUgV0lUSCBESUFFUkVTSVM7THU7MDtMOzA0MkQgMDMwODs7OztOOzs7OzA0RUQ7CiswNEVEO0NZUklMTElDIFNNQUxMIExFVFRFUiBFIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNDREIDAzMDg7Ozs7Tjs7OzA0RUM7OzA0RUMKKzA0RUU7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgVSBXSVRIIE1BQ1JPTjtMdTswO0w7MDQyMyAwMzA0Ozs7O047Ozs7MDRFRjsKKzA0RUY7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFUgV0lUSCBNQUNST047TGw7MDtMOzA0NDMgMDMwNDs7OztOOzs7MDRFRTs7MDRFRQorMDRGMDtDWVJJTExJQyBDQVBJVEFMIExFVFRFUiBVIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNDIzIDAzMDg7Ozs7Tjs7OzswNEYxOworMDRGMTtDWVJJTExJQyBTTUFMTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUztMbDswO0w7MDQ0MyAwMzA4Ozs7O047OzswNEYwOzswNEYwCiswNEYyO0NZUklMTElDIENBUElUQUwgTEVUVEVSIFUgV0lUSCBET1VCTEUgQUNVVEU7THU7MDtMOzA0MjMgMDMwQjs7OztOOzs7OzA0RjM7CiswNEYzO0NZUklMTElDIFNNQUxMIExFVFRFUiBVIFdJVEggRE9VQkxFIEFDVVRFO0xsOzA7TDswNDQzIDAzMEI7Ozs7Tjs7OzA0RjI7OzA0RjIKKzA0RjQ7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgQ0hFIFdJVEggRElBRVJFU0lTO0x1OzA7TDswNDI3IDAzMDg7Ozs7Tjs7OzswNEY1OworMDRGNTtDWVJJTExJQyBTTUFMTCBMRVRURVIgQ0hFIFdJVEggRElBRVJFU0lTO0xsOzA7TDswNDQ3IDAzMDg7Ozs7Tjs7OzA0RjQ7OzA0RjQKKzA0Rjg7Q1lSSUxMSUMgQ0FQSVRBTCBMRVRURVIgWUVSVSBXSVRIIERJQUVSRVNJUztMdTswO0w7MDQyQiAwMzA4Ozs7O047Ozs7MDRGOTsKKzA0Rjk7Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFlFUlUgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzA0NEIgMDMwODs7OztOOzs7MDRGODs7MDRGOAorMDUzMTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBBWUI7THU7MDtMOzs7OztOOzs7OzA1NjE7CiswNTMyO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEJFTjtMdTswO0w7Ozs7O047Ozs7MDU2MjsKKzA1MzM7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgR0lNO0x1OzA7TDs7Ozs7Tjs7OzswNTYzOworMDUzNDtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBEQTtMdTswO0w7Ozs7O047Ozs7MDU2NDsKKzA1MzU7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgRUNIO0x1OzA7TDs7Ozs7Tjs7OzswNTY1OworMDUzNjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBaQTtMdTswO0w7Ozs7O047Ozs7MDU2NjsKKzA1Mzc7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgRUg7THU7MDtMOzs7OztOOzs7OzA1Njc7CiswNTM4O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEVUO0x1OzA7TDs7Ozs7Tjs7OzswNTY4OworMDUzOTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBUTztMdTswO0w7Ozs7O047Ozs7MDU2OTsKKzA1M0E7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgWkhFO0x1OzA7TDs7Ozs7Tjs7OzswNTZBOworMDUzQjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBJTkk7THU7MDtMOzs7OztOOzs7OzA1NkI7CiswNTNDO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIExJV047THU7MDtMOzs7OztOOzs7OzA1NkM7CiswNTNEO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFhFSDtMdTswO0w7Ozs7O047Ozs7MDU2RDsKKzA1M0U7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgQ0E7THU7MDtMOzs7OztOOzs7OzA1NkU7CiswNTNGO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEtFTjtMdTswO0w7Ozs7O047Ozs7MDU2RjsKKzA1NDA7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgSE87THU7MDtMOzs7OztOOzs7OzA1NzA7CiswNTQxO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEpBO0x1OzA7TDs7Ozs7Tjs7OzswNTcxOworMDU0MjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBHSEFEO0x1OzA7TDs7Ozs7TjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBMQUQ7OzswNTcyOworMDU0MztBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBDSEVIO0x1OzA7TDs7Ozs7Tjs7OzswNTczOworMDU0NDtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBNRU47THU7MDtMOzs7OztOOzs7OzA1NzQ7CiswNTQ1O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFlJO0x1OzA7TDs7Ozs7Tjs7OzswNTc1OworMDU0NjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBOT1c7THU7MDtMOzs7OztOOzs7OzA1NzY7CiswNTQ3O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFNIQTtMdTswO0w7Ozs7O047Ozs7MDU3NzsKKzA1NDg7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgVk87THU7MDtMOzs7OztOOzs7OzA1Nzg7CiswNTQ5O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIENIQTtMdTswO0w7Ozs7O047Ozs7MDU3OTsKKzA1NEE7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgUEVIO0x1OzA7TDs7Ozs7Tjs7OzswNTdBOworMDU0QjtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBKSEVIO0x1OzA7TDs7Ozs7Tjs7OzswNTdCOworMDU0QztBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBSQTtMdTswO0w7Ozs7O047Ozs7MDU3QzsKKzA1NEQ7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgU0VIO0x1OzA7TDs7Ozs7Tjs7OzswNTdEOworMDU0RTtBUk1FTklBTiBDQVBJVEFMIExFVFRFUiBWRVc7THU7MDtMOzs7OztOOzs7OzA1N0U7CiswNTRGO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFRJV047THU7MDtMOzs7OztOOzs7OzA1N0Y7CiswNTUwO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFJFSDtMdTswO0w7Ozs7O047Ozs7MDU4MDsKKzA1NTE7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgQ087THU7MDtMOzs7OztOOzs7OzA1ODE7CiswNTUyO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFlJV047THU7MDtMOzs7OztOOzs7OzA1ODI7CiswNTUzO0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIFBJV1I7THU7MDtMOzs7OztOOzs7OzA1ODM7CiswNTU0O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEtFSDtMdTswO0w7Ozs7O047Ozs7MDU4NDsKKzA1NTU7QVJNRU5JQU4gQ0FQSVRBTCBMRVRURVIgT0g7THU7MDtMOzs7OztOOzs7OzA1ODU7CiswNTU2O0FSTUVOSUFOIENBUElUQUwgTEVUVEVSIEZFSDtMdTswO0w7Ozs7O047Ozs7MDU4NjsKKzA1NTk7QVJNRU5JQU4gTU9ESUZJRVIgTEVUVEVSIExFRlQgSEFMRiBSSU5HO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswNTVBO0FSTUVOSUFOIEFQT1NUUk9QSEU7UG87MDtMOzs7OztOO0FSTUVOSUFOIE1PRElGSUVSIExFVFRFUiBSSUdIVCBIQUxGIFJJTkc7Ozs7CiswNTVCO0FSTUVOSUFOIEVNUEhBU0lTIE1BUks7UG87MDtMOzs7OztOOzs7OzsKKzA1NUM7QVJNRU5JQU4gRVhDTEFNQVRJT04gTUFSSztQbzswO0w7Ozs7O047Ozs7OworMDU1RDtBUk1FTklBTiBDT01NQTtQbzswO0w7Ozs7O047Ozs7OworMDU1RTtBUk1FTklBTiBRVUVTVElPTiBNQVJLO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswNTVGO0FSTUVOSUFOIEFCQlJFVklBVElPTiBNQVJLO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswNTYxO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBBWUI7TGw7MDtMOzs7OztOOzs7MDUzMTs7MDUzMQorMDU2MjtBUk1FTklBTiBTTUFMTCBMRVRURVIgQkVOO0xsOzA7TDs7Ozs7Tjs7OzA1MzI7OzA1MzIKKzA1NjM7QVJNRU5JQU4gU01BTEwgTEVUVEVSIEdJTTtMbDswO0w7Ozs7O047OzswNTMzOzswNTMzCiswNTY0O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBEQTtMbDswO0w7Ozs7O047OzswNTM0OzswNTM0CiswNTY1O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBFQ0g7TGw7MDtMOzs7OztOOzs7MDUzNTs7MDUzNQorMDU2NjtBUk1FTklBTiBTTUFMTCBMRVRURVIgWkE7TGw7MDtMOzs7OztOOzs7MDUzNjs7MDUzNgorMDU2NztBUk1FTklBTiBTTUFMTCBMRVRURVIgRUg7TGw7MDtMOzs7OztOOzs7MDUzNzs7MDUzNworMDU2ODtBUk1FTklBTiBTTUFMTCBMRVRURVIgRVQ7TGw7MDtMOzs7OztOOzs7MDUzODs7MDUzOAorMDU2OTtBUk1FTklBTiBTTUFMTCBMRVRURVIgVE87TGw7MDtMOzs7OztOOzs7MDUzOTs7MDUzOQorMDU2QTtBUk1FTklBTiBTTUFMTCBMRVRURVIgWkhFO0xsOzA7TDs7Ozs7Tjs7OzA1M0E7OzA1M0EKKzA1NkI7QVJNRU5JQU4gU01BTEwgTEVUVEVSIElOSTtMbDswO0w7Ozs7O047OzswNTNCOzswNTNCCiswNTZDO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBMSVdOO0xsOzA7TDs7Ozs7Tjs7OzA1M0M7OzA1M0MKKzA1NkQ7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFhFSDtMbDswO0w7Ozs7O047OzswNTNEOzswNTNECiswNTZFO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBDQTtMbDswO0w7Ozs7O047OzswNTNFOzswNTNFCiswNTZGO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBLRU47TGw7MDtMOzs7OztOOzs7MDUzRjs7MDUzRgorMDU3MDtBUk1FTklBTiBTTUFMTCBMRVRURVIgSE87TGw7MDtMOzs7OztOOzs7MDU0MDs7MDU0MAorMDU3MTtBUk1FTklBTiBTTUFMTCBMRVRURVIgSkE7TGw7MDtMOzs7OztOOzs7MDU0MTs7MDU0MQorMDU3MjtBUk1FTklBTiBTTUFMTCBMRVRURVIgR0hBRDtMbDswO0w7Ozs7O047QVJNRU5JQU4gU01BTEwgTEVUVEVSIExBRDs7MDU0Mjs7MDU0MgorMDU3MztBUk1FTklBTiBTTUFMTCBMRVRURVIgQ0hFSDtMbDswO0w7Ozs7O047OzswNTQzOzswNTQzCiswNTc0O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBNRU47TGw7MDtMOzs7OztOOzs7MDU0NDs7MDU0NAorMDU3NTtBUk1FTklBTiBTTUFMTCBMRVRURVIgWUk7TGw7MDtMOzs7OztOOzs7MDU0NTs7MDU0NQorMDU3NjtBUk1FTklBTiBTTUFMTCBMRVRURVIgTk9XO0xsOzA7TDs7Ozs7Tjs7OzA1NDY7OzA1NDYKKzA1Nzc7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFNIQTtMbDswO0w7Ozs7O047OzswNTQ3OzswNTQ3CiswNTc4O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBWTztMbDswO0w7Ozs7O047OzswNTQ4OzswNTQ4CiswNTc5O0FSTUVOSUFOIFNNQUxMIExFVFRFUiBDSEE7TGw7MDtMOzs7OztOOzs7MDU0OTs7MDU0OQorMDU3QTtBUk1FTklBTiBTTUFMTCBMRVRURVIgUEVIO0xsOzA7TDs7Ozs7Tjs7OzA1NEE7OzA1NEEKKzA1N0I7QVJNRU5JQU4gU01BTEwgTEVUVEVSIEpIRUg7TGw7MDtMOzs7OztOOzs7MDU0Qjs7MDU0QgorMDU3QztBUk1FTklBTiBTTUFMTCBMRVRURVIgUkE7TGw7MDtMOzs7OztOOzs7MDU0Qzs7MDU0QworMDU3RDtBUk1FTklBTiBTTUFMTCBMRVRURVIgU0VIO0xsOzA7TDs7Ozs7Tjs7OzA1NEQ7OzA1NEQKKzA1N0U7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFZFVztMbDswO0w7Ozs7O047OzswNTRFOzswNTRFCiswNTdGO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBUSVdOO0xsOzA7TDs7Ozs7Tjs7OzA1NEY7OzA1NEYKKzA1ODA7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFJFSDtMbDswO0w7Ozs7O047OzswNTUwOzswNTUwCiswNTgxO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBDTztMbDswO0w7Ozs7O047OzswNTUxOzswNTUxCiswNTgyO0FSTUVOSUFOIFNNQUxMIExFVFRFUiBZSVdOO0xsOzA7TDs7Ozs7Tjs7OzA1NTI7OzA1NTIKKzA1ODM7QVJNRU5JQU4gU01BTEwgTEVUVEVSIFBJV1I7TGw7MDtMOzs7OztOOzs7MDU1Mzs7MDU1MworMDU4NDtBUk1FTklBTiBTTUFMTCBMRVRURVIgS0VIO0xsOzA7TDs7Ozs7Tjs7OzA1NTQ7OzA1NTQKKzA1ODU7QVJNRU5JQU4gU01BTEwgTEVUVEVSIE9IO0xsOzA7TDs7Ozs7Tjs7OzA1NTU7OzA1NTUKKzA1ODY7QVJNRU5JQU4gU01BTEwgTEVUVEVSIEZFSDtMbDswO0w7Ozs7O047OzswNTU2OzswNTU2CiswNTg3O0FSTUVOSUFOIFNNQUxMIExJR0FUVVJFIEVDSCBZSVdOO0xsOzA7TDs8Y29tcGF0PiAwNTY1IDA1ODI7Ozs7Tjs7Ozs7CiswNTg5O0FSTUVOSUFOIEZVTEwgU1RPUDtQbzswO0w7Ozs7O047QVJNRU5JQU4gUEVSSU9EOzs7OworMDU4QTtBUk1FTklBTiBIWVBIRU47UGQ7MDtPTjs7Ozs7Tjs7Ozs7CiswNTkxO0hFQlJFVyBBQ0NFTlQgRVROQUhUQTtNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA1OTI7SEVCUkVXIEFDQ0VOVCBTRUdPTDtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA1OTM7SEVCUkVXIEFDQ0VOVCBTSEFMU0hFTEVUO01uOzIzMDtOU007Ozs7O047Ozs7OworMDU5NDtIRUJSRVcgQUNDRU5UIFpBUUVGIFFBVEFOO01uOzIzMDtOU007Ozs7O047Ozs7OworMDU5NTtIRUJSRVcgQUNDRU5UIFpBUUVGIEdBRE9MO01uOzIzMDtOU007Ozs7O047Ozs7OworMDU5NjtIRUJSRVcgQUNDRU5UIFRJUEVIQTtNbjsyMjA7TlNNOzs7OztOOzsqOzs7CiswNTk3O0hFQlJFVyBBQ0NFTlQgUkVWSUE7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNTk4O0hFQlJFVyBBQ0NFTlQgWkFSUUE7TW47MjMwO05TTTs7Ozs7Tjs7Kjs7OworMDU5OTtIRUJSRVcgQUNDRU5UIFBBU0hUQTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA1OUE7SEVCUkVXIEFDQ0VOVCBZRVRJVjtNbjsyMjI7TlNNOzs7OztOOzs7OzsKKzA1OUI7SEVCUkVXIEFDQ0VOVCBURVZJUjtNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA1OUM7SEVCUkVXIEFDQ0VOVCBHRVJFU0g7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNTlEO0hFQlJFVyBBQ0NFTlQgR0VSRVNIIE1VUURBTTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA1OUU7SEVCUkVXIEFDQ0VOVCBHRVJTSEFZSU07TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNTlGO0hFQlJFVyBBQ0NFTlQgUUFSTkVZIFBBUkE7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNUEwO0hFQlJFVyBBQ0NFTlQgVEVMSVNIQSBHRURPTEE7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNUExO0hFQlJFVyBBQ0NFTlQgUEFaRVI7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNUEzO0hFQlJFVyBBQ0NFTlQgTVVOQUg7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNUE0O0hFQlJFVyBBQ0NFTlQgTUFIQVBBS0g7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNUE1O0hFQlJFVyBBQ0NFTlQgTUVSS0hBO01uOzIyMDtOU007Ozs7O047Oyo7OzsKKzA1QTY7SEVCUkVXIEFDQ0VOVCBNRVJLSEEgS0VGVUxBO01uOzIyMDtOU007Ozs7O047Ozs7OworMDVBNztIRUJSRVcgQUNDRU5UIERBUkdBO01uOzIyMDtOU007Ozs7O047Ozs7OworMDVBODtIRUJSRVcgQUNDRU5UIFFBRE1BO01uOzIzMDtOU007Ozs7O047Oyo7OzsKKzA1QTk7SEVCUkVXIEFDQ0VOVCBURUxJU0hBIFFFVEFOQTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA1QUE7SEVCUkVXIEFDQ0VOVCBZRVJBSCBCRU4gWU9NTztNbjsyMjA7TlNNOzs7OztOOzsqOzs7CiswNUFCO0hFQlJFVyBBQ0NFTlQgT0xFO01uOzIzMDtOU007Ozs7O047Ozs7OworMDVBQztIRUJSRVcgQUNDRU5UIElMVVk7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNUFEO0hFQlJFVyBBQ0NFTlQgREVISTtNbjsyMjI7TlNNOzs7OztOOzs7OzsKKzA1QUU7SEVCUkVXIEFDQ0VOVCBaSU5PUjtNbjsyMjg7TlNNOzs7OztOOzs7OzsKKzA1QUY7SEVCUkVXIE1BUksgTUFTT1JBIENJUkNMRTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA1QjA7SEVCUkVXIFBPSU5UIFNIRVZBO01uOzEwO05TTTs7Ozs7Tjs7Ozs7CiswNUIxO0hFQlJFVyBQT0lOVCBIQVRBRiBTRUdPTDtNbjsxMTtOU007Ozs7O047Ozs7OworMDVCMjtIRUJSRVcgUE9JTlQgSEFUQUYgUEFUQUg7TW47MTI7TlNNOzs7OztOOzs7OzsKKzA1QjM7SEVCUkVXIFBPSU5UIEhBVEFGIFFBTUFUUztNbjsxMztOU007Ozs7O047Ozs7OworMDVCNDtIRUJSRVcgUE9JTlQgSElSSVE7TW47MTQ7TlNNOzs7OztOOzs7OzsKKzA1QjU7SEVCUkVXIFBPSU5UIFRTRVJFO01uOzE1O05TTTs7Ozs7Tjs7Ozs7CiswNUI2O0hFQlJFVyBQT0lOVCBTRUdPTDtNbjsxNjtOU007Ozs7O047Ozs7OworMDVCNztIRUJSRVcgUE9JTlQgUEFUQUg7TW47MTc7TlNNOzs7OztOOzs7OzsKKzA1Qjg7SEVCUkVXIFBPSU5UIFFBTUFUUztNbjsxODtOU007Ozs7O047Ozs7OworMDVCOTtIRUJSRVcgUE9JTlQgSE9MQU07TW47MTk7TlNNOzs7OztOOzs7OzsKKzA1QkI7SEVCUkVXIFBPSU5UIFFVQlVUUztNbjsyMDtOU007Ozs7O047Ozs7OworMDVCQztIRUJSRVcgUE9JTlQgREFHRVNIIE9SIE1BUElRO01uOzIxO05TTTs7Ozs7TjtIRUJSRVcgUE9JTlQgREFHRVNIO29yIHNodXJ1cTs7OworMDVCRDtIRUJSRVcgUE9JTlQgTUVURUc7TW47MjI7TlNNOzs7OztOOzsqOzs7CiswNUJFO0hFQlJFVyBQVU5DVFVBVElPTiBNQVFBRjtQbzswO1I7Ozs7O047Ozs7OworMDVCRjtIRUJSRVcgUE9JTlQgUkFGRTtNbjsyMztOU007Ozs7O047Ozs7OworMDVDMDtIRUJSRVcgUFVOQ1RVQVRJT04gUEFTRVE7UG87MDtSOzs7OztOO0hFQlJFVyBQT0lOVCBQQVNFUTsqOzs7CiswNUMxO0hFQlJFVyBQT0lOVCBTSElOIERPVDtNbjsyNDtOU007Ozs7O047Ozs7OworMDVDMjtIRUJSRVcgUE9JTlQgU0lOIERPVDtNbjsyNTtOU007Ozs7O047Ozs7OworMDVDMztIRUJSRVcgUFVOQ1RVQVRJT04gU09GIFBBU1VRO1BvOzA7Ujs7Ozs7Tjs7Kjs7OworMDVDNDtIRUJSRVcgTUFSSyBVUFBFUiBET1Q7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNUQwO0hFQlJFVyBMRVRURVIgQUxFRjtMbzswO1I7Ozs7O047Ozs7OworMDVEMTtIRUJSRVcgTEVUVEVSIEJFVDtMbzswO1I7Ozs7O047Ozs7OworMDVEMjtIRUJSRVcgTEVUVEVSIEdJTUVMO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQzO0hFQlJFVyBMRVRURVIgREFMRVQ7TG87MDtSOzs7OztOOzs7OzsKKzA1RDQ7SEVCUkVXIExFVFRFUiBIRTtMbzswO1I7Ozs7O047Ozs7OworMDVENTtIRUJSRVcgTEVUVEVSIFZBVjtMbzswO1I7Ozs7O047Ozs7OworMDVENjtIRUJSRVcgTEVUVEVSIFpBWUlOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQ3O0hFQlJFVyBMRVRURVIgSEVUO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQ4O0hFQlJFVyBMRVRURVIgVEVUO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUQ5O0hFQlJFVyBMRVRURVIgWU9EO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNURBO0hFQlJFVyBMRVRURVIgRklOQUwgS0FGO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNURCO0hFQlJFVyBMRVRURVIgS0FGO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNURDO0hFQlJFVyBMRVRURVIgTEFNRUQ7TG87MDtSOzs7OztOOzs7OzsKKzA1REQ7SEVCUkVXIExFVFRFUiBGSU5BTCBNRU07TG87MDtSOzs7OztOOzs7OzsKKzA1REU7SEVCUkVXIExFVFRFUiBNRU07TG87MDtSOzs7OztOOzs7OzsKKzA1REY7SEVCUkVXIExFVFRFUiBGSU5BTCBOVU47TG87MDtSOzs7OztOOzs7OzsKKzA1RTA7SEVCUkVXIExFVFRFUiBOVU47TG87MDtSOzs7OztOOzs7OzsKKzA1RTE7SEVCUkVXIExFVFRFUiBTQU1FS0g7TG87MDtSOzs7OztOOzs7OzsKKzA1RTI7SEVCUkVXIExFVFRFUiBBWUlOO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUUzO0hFQlJFVyBMRVRURVIgRklOQUwgUEU7TG87MDtSOzs7OztOOzs7OzsKKzA1RTQ7SEVCUkVXIExFVFRFUiBQRTtMbzswO1I7Ozs7O047Ozs7OworMDVFNTtIRUJSRVcgTEVUVEVSIEZJTkFMIFRTQURJO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUU2O0hFQlJFVyBMRVRURVIgVFNBREk7TG87MDtSOzs7OztOOzs7OzsKKzA1RTc7SEVCUkVXIExFVFRFUiBRT0Y7TG87MDtSOzs7OztOOzs7OzsKKzA1RTg7SEVCUkVXIExFVFRFUiBSRVNIO0xvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUU5O0hFQlJFVyBMRVRURVIgU0hJTjtMbzswO1I7Ozs7O047Ozs7OworMDVFQTtIRUJSRVcgTEVUVEVSIFRBVjtMbzswO1I7Ozs7O047Ozs7OworMDVGMDtIRUJSRVcgTElHQVRVUkUgWUlERElTSCBET1VCTEUgVkFWO0xvOzA7Ujs7Ozs7TjtIRUJSRVcgTEVUVEVSIERPVUJMRSBWQVY7Ozs7CiswNUYxO0hFQlJFVyBMSUdBVFVSRSBZSURESVNIIFZBViBZT0Q7TG87MDtSOzs7OztOO0hFQlJFVyBMRVRURVIgVkFWIFlPRDs7OzsKKzA1RjI7SEVCUkVXIExJR0FUVVJFIFlJRERJU0ggRE9VQkxFIFlPRDtMbzswO1I7Ozs7O047SEVCUkVXIExFVFRFUiBET1VCTEUgWU9EOzs7OworMDVGMztIRUJSRVcgUFVOQ1RVQVRJT04gR0VSRVNIO1BvOzA7Ujs7Ozs7Tjs7Ozs7CiswNUY0O0hFQlJFVyBQVU5DVFVBVElPTiBHRVJTSEFZSU07UG87MDtSOzs7OztOOzs7OzsKKzA2MEM7QVJBQklDIENPTU1BO1BvOzA7Q1M7Ozs7O047Ozs7OworMDYxQjtBUkFCSUMgU0VNSUNPTE9OO1BvOzA7QUw7Ozs7O047Ozs7OworMDYxRjtBUkFCSUMgUVVFU1RJT04gTUFSSztQbzswO0FMOzs7OztOOzs7OzsKKzA2MjE7QVJBQklDIExFVFRFUiBIQU1aQTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIOzs7OworMDYyMjtBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBNQUREQSBBQk9WRTtMbzswO0FMOzA2MjcgMDY1Mzs7OztOO0FSQUJJQyBMRVRURVIgTUFEREFIIE9OIEFMRUY7Ozs7CiswNjIzO0FSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEFCT1ZFO0xvOzA7QUw7MDYyNyAwNjU0Ozs7O047QVJBQklDIExFVFRFUiBIQU1aQUggT04gQUxFRjs7OzsKKzA2MjQ7QVJBQklDIExFVFRFUiBXQVcgV0lUSCBIQU1aQSBBQk9WRTtMbzswO0FMOzA2NDggMDY1NDs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIIE9OIFdBVzs7OzsKKzA2MjU7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQkVMT1c7TG87MDtBTDswNjI3IDA2NTU7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBTVpBSCBVTkRFUiBBTEVGOzs7OworMDYyNjtBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFO0xvOzA7QUw7MDY0QSAwNjU0Ozs7O047QVJBQklDIExFVFRFUiBIQU1aQUggT04gWUE7Ozs7CiswNjI3O0FSQUJJQyBMRVRURVIgQUxFRjtMbzswO0FMOzs7OztOOzs7OzsKKzA2Mjg7QVJBQklDIExFVFRFUiBCRUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEJBQTs7OzsKKzA2Mjk7QVJBQklDIExFVFRFUiBURUggTUFSQlVUQTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIE1BUkJVVEFIOzs7OworMDYyQTtBUkFCSUMgTEVUVEVSIFRFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBOzs7OworMDYyQjtBUkFCSUMgTEVUVEVSIFRIRUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFRIQUE7Ozs7CiswNjJDO0FSQUJJQyBMRVRURVIgSkVFTTtMbzswO0FMOzs7OztOOzs7OzsKKzA2MkQ7QVJBQklDIExFVFRFUiBIQUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBQTs7OzsKKzA2MkU7QVJBQklDIExFVFRFUiBLSEFIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBLSEFBOzs7OworMDYyRjtBUkFCSUMgTEVUVEVSIERBTDtMbzswO0FMOzs7OztOOzs7OzsKKzA2MzA7QVJBQklDIExFVFRFUiBUSEFMO0xvOzA7QUw7Ozs7O047Ozs7OworMDYzMTtBUkFCSUMgTEVUVEVSIFJFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgUkE7Ozs7CiswNjMyO0FSQUJJQyBMRVRURVIgWkFJTjtMbzswO0FMOzs7OztOOzs7OzsKKzA2MzM7QVJBQklDIExFVFRFUiBTRUVOO0xvOzA7QUw7Ozs7O047Ozs7OworMDYzNDtBUkFCSUMgTEVUVEVSIFNIRUVOO0xvOzA7QUw7Ozs7O047Ozs7OworMDYzNTtBUkFCSUMgTEVUVEVSIFNBRDtMbzswO0FMOzs7OztOOzs7OzsKKzA2MzY7QVJBQklDIExFVFRFUiBEQUQ7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjM3O0FSQUJJQyBMRVRURVIgVEFIO0xvOzA7QUw7Ozs7O047Ozs7OworMDYzODtBUkFCSUMgTEVUVEVSIFpBSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgREhBSDs7OzsKKzA2Mzk7QVJBQklDIExFVFRFUiBBSU47TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjNBO0FSQUJJQyBMRVRURVIgR0hBSU47TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjQwO0FSQUJJQyBUQVRXRUVMO0xtOzA7QUw7Ozs7O047Ozs7OworMDY0MTtBUkFCSUMgTEVUVEVSIEZFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgRkE7Ozs7CiswNjQyO0FSQUJJQyBMRVRURVIgUUFGO0xvOzA7QUw7Ozs7O047Ozs7OworMDY0MztBUkFCSUMgTEVUVEVSIEtBRjtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgQ0FGOzs7OworMDY0NDtBUkFCSUMgTEVUVEVSIExBTTtMbzswO0FMOzs7OztOOzs7OzsKKzA2NDU7QVJBQklDIExFVFRFUiBNRUVNO0xvOzA7QUw7Ozs7O047Ozs7OworMDY0NjtBUkFCSUMgTEVUVEVSIE5PT047TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjQ3O0FSQUJJQyBMRVRURVIgSEVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBIQTs7OzsKKzA2NDg7QVJBQklDIExFVFRFUiBXQVc7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjQ5O0FSQUJJQyBMRVRURVIgQUxFRiBNQUtTVVJBO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBBTEVGIE1BUVNVUkFIOzs7OworMDY0QTtBUkFCSUMgTEVUVEVSIFlFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgWUE7Ozs7CiswNjRCO0FSQUJJQyBGQVRIQVRBTjtNbjsyNztOU007Ozs7O047Ozs7OworMDY0QztBUkFCSUMgREFNTUFUQU47TW47Mjg7TlNNOzs7OztOOzs7OzsKKzA2NEQ7QVJBQklDIEtBU1JBVEFOO01uOzI5O05TTTs7Ozs7Tjs7Ozs7CiswNjRFO0FSQUJJQyBGQVRIQTtNbjszMDtOU007Ozs7O047QVJBQklDIEZBVEhBSDs7OzsKKzA2NEY7QVJBQklDIERBTU1BO01uOzMxO05TTTs7Ozs7TjtBUkFCSUMgREFNTUFIOzs7OworMDY1MDtBUkFCSUMgS0FTUkE7TW47MzI7TlNNOzs7OztOO0FSQUJJQyBLQVNSQUg7Ozs7CiswNjUxO0FSQUJJQyBTSEFEREE7TW47MzM7TlNNOzs7OztOO0FSQUJJQyBTSEFEREFIOzs7OworMDY1MjtBUkFCSUMgU1VLVU47TW47MzQ7TlNNOzs7OztOOzs7OzsKKzA2NTM7QVJBQklDIE1BRERBSCBBQk9WRTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA2NTQ7QVJBQklDIEhBTVpBIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Ozs7OworMDY1NTtBUkFCSUMgSEFNWkEgQkVMT1c7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNjYwO0FSQUJJQy1JTkRJQyBESUdJVCBaRVJPO05kOzA7QU47OzA7MDswO047Ozs7OworMDY2MTtBUkFCSUMtSU5ESUMgRElHSVQgT05FO05kOzA7QU47OzE7MTsxO047Ozs7OworMDY2MjtBUkFCSUMtSU5ESUMgRElHSVQgVFdPO05kOzA7QU47OzI7MjsyO047Ozs7OworMDY2MztBUkFCSUMtSU5ESUMgRElHSVQgVEhSRUU7TmQ7MDtBTjs7MzszOzM7Tjs7Ozs7CiswNjY0O0FSQUJJQy1JTkRJQyBESUdJVCBGT1VSO05kOzA7QU47OzQ7NDs0O047Ozs7OworMDY2NTtBUkFCSUMtSU5ESUMgRElHSVQgRklWRTtOZDswO0FOOzs1OzU7NTtOOzs7OzsKKzA2NjY7QVJBQklDLUlORElDIERJR0lUIFNJWDtOZDswO0FOOzs2OzY7NjtOOzs7OzsKKzA2Njc7QVJBQklDLUlORElDIERJR0lUIFNFVkVOO05kOzA7QU47Ozc7Nzs3O047Ozs7OworMDY2ODtBUkFCSUMtSU5ESUMgRElHSVQgRUlHSFQ7TmQ7MDtBTjs7ODs4Ozg7Tjs7Ozs7CiswNjY5O0FSQUJJQy1JTkRJQyBESUdJVCBOSU5FO05kOzA7QU47Ozk7OTs5O047Ozs7OworMDY2QTtBUkFCSUMgUEVSQ0VOVCBTSUdOO1BvOzA7RVQ7Ozs7O047Ozs7OworMDY2QjtBUkFCSUMgREVDSU1BTCBTRVBBUkFUT1I7UG87MDtBTjs7Ozs7Tjs7Ozs7CiswNjZDO0FSQUJJQyBUSE9VU0FORFMgU0VQQVJBVE9SO1BvOzA7QU47Ozs7O047Ozs7OworMDY2RDtBUkFCSUMgRklWRSBQT0lOVEVEIFNUQVI7UG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjcwO0FSQUJJQyBMRVRURVIgU1VQRVJTQ1JJUFQgQUxFRjtNbjszNTtOU007Ozs7O047QVJBQklDIEFMRUYgQUJPVkU7Ozs7CiswNjcxO0FSQUJJQyBMRVRURVIgQUxFRiBXQVNMQTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFUIFdBU0wgT04gQUxFRjs7OzsKKzA2NzI7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggV0FWWSBIQU1aQSBBQk9WRTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgV0FWWSBIQU1aQUggT04gQUxFRjs7OzsKKzA2NzM7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggV0FWWSBIQU1aQSBCRUxPVztMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgV0FWWSBIQU1aQUggVU5ERVIgQUxFRjs7OzsKKzA2NzQ7QVJBQklDIExFVFRFUiBISUdIIEhBTVpBO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBISUdIIEhBTVpBSDs7OzsKKzA2NzU7QVJBQklDIExFVFRFUiBISUdIIEhBTVpBIEFMRUY7TG87MDtBTDs8Y29tcGF0PiAwNjI3IDA2NzQ7Ozs7TjtBUkFCSUMgTEVUVEVSIEhJR0ggSEFNWkFIIEFMRUY7Ozs7CiswNjc2O0FSQUJJQyBMRVRURVIgSElHSCBIQU1aQSBXQVc7TG87MDtBTDs8Y29tcGF0PiAwNjQ4IDA2NzQ7Ozs7TjtBUkFCSUMgTEVUVEVSIEhJR0ggSEFNWkFIIFdBVzs7OzsKKzA2Nzc7QVJBQklDIExFVFRFUiBVIFdJVEggSEFNWkEgQUJPVkU7TG87MDtBTDs8Y29tcGF0PiAwNkM3IDA2NzQ7Ozs7TjtBUkFCSUMgTEVUVEVSIEhJR0ggSEFNWkFIIFdBVyBXSVRIIERBTU1BSDs7OzsKKzA2Nzg7QVJBQklDIExFVFRFUiBISUdIIEhBTVpBIFlFSDtMbzswO0FMOzxjb21wYXQ+IDA2NEEgMDY3NDs7OztOO0FSQUJJQyBMRVRURVIgSElHSCBIQU1aQUggWUE7Ozs7CiswNjc5O0FSQUJJQyBMRVRURVIgVFRFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIFdJVEggU01BTEwgVEFIOzs7OworMDY3QTtBUkFCSUMgTEVUVEVSIFRURUhFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIFdJVEggVFdPIERPVFMgVkVSVElDQUwgQUJPVkU7Ozs7CiswNjdCO0FSQUJJQyBMRVRURVIgQkVFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgQkFBIFdJVEggVFdPIERPVFMgVkVSVElDQUwgQkVMT1c7Ozs7CiswNjdDO0FSQUJJQyBMRVRURVIgVEVIIFdJVEggUklORztMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIFdJVEggUklORzs7OzsKKzA2N0Q7QVJBQklDIExFVFRFUiBURUggV0lUSCBUSFJFRSBET1RTIEFCT1ZFIERPV05XQVJEUztMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgVEFBIFdJVEggVEhSRUUgRE9UUyBBQk9WRSBET1dOV0FSRDs7OzsKKzA2N0U7QVJBQklDIExFVFRFUiBQRUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFRBQSBXSVRIIFRIUkVFIERPVFMgQkVMT1c7Ozs7CiswNjdGO0FSQUJJQyBMRVRURVIgVEVIRUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFRBQSBXSVRIIEZPVVIgRE9UUyBBQk9WRTs7OzsKKzA2ODA7QVJBQklDIExFVFRFUiBCRUhFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgQkFBIFdJVEggRk9VUiBET1RTIEJFTE9XOzs7OworMDY4MTtBUkFCSUMgTEVUVEVSIEhBSCBXSVRIIEhBTVpBIEFCT1ZFO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBIQU1aQUggT04gSEFBOzs7OworMDY4MjtBUkFCSUMgTEVUVEVSIEhBSCBXSVRIIFRXTyBET1RTIFZFUlRJQ0FMIEFCT1ZFO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBIQUEgV0lUSCBUV08gRE9UUyBWRVJUSUNBTCBBQk9WRTs7OzsKKzA2ODM7QVJBQklDIExFVFRFUiBOWUVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBIQUEgV0lUSCBNSURETEUgVFdPIERPVFM7Ozs7CiswNjg0O0FSQUJJQyBMRVRURVIgRFlFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgSEFBIFdJVEggTUlERExFIFRXTyBET1RTIFZFUlRJQ0FMOzs7OworMDY4NTtBUkFCSUMgTEVUVEVSIEhBSCBXSVRIIFRIUkVFIERPVFMgQUJPVkU7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBQSBXSVRIIFRIUkVFIERPVFMgQUJPVkU7Ozs7CiswNjg2O0FSQUJJQyBMRVRURVIgVENIRUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBQSBXSVRIIE1JRERMRSBUSFJFRSBET1RTIERPV05XQVJEOzs7OworMDY4NztBUkFCSUMgTEVUVEVSIFRDSEVIRUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBQSBXSVRIIE1JRERMRSBGT1VSIERPVFM7Ozs7CiswNjg4O0FSQUJJQyBMRVRURVIgRERBTDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgREFMIFdJVEggU01BTEwgVEFIOzs7OworMDY4OTtBUkFCSUMgTEVUVEVSIERBTCBXSVRIIFJJTkc7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjhBO0FSQUJJQyBMRVRURVIgREFMIFdJVEggRE9UIEJFTE9XO0xvOzA7QUw7Ozs7O047Ozs7OworMDY4QjtBUkFCSUMgTEVUVEVSIERBTCBXSVRIIERPVCBCRUxPVyBBTkQgU01BTEwgVEFIO0xvOzA7QUw7Ozs7O047Ozs7OworMDY4QztBUkFCSUMgTEVUVEVSIERBSEFMO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBEQUwgV0lUSCBUV08gRE9UUyBBQk9WRTs7OzsKKzA2OEQ7QVJBQklDIExFVFRFUiBEREFIQUw7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIERBTCBXSVRIIFRXTyBET1RTIEJFTE9XOzs7OworMDY4RTtBUkFCSUMgTEVUVEVSIERVTDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgREFMIFdJVEggVEhSRUUgRE9UUyBBQk9WRTs7OzsKKzA2OEY7QVJBQklDIExFVFRFUiBEQUwgV0lUSCBUSFJFRSBET1RTIEFCT1ZFIERPV05XQVJEUztMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgREFMIFdJVEggVEhSRUUgRE9UUyBBQk9WRSBET1dOV0FSRDs7OzsKKzA2OTA7QVJBQklDIExFVFRFUiBEQUwgV0lUSCBGT1VSIERPVFMgQUJPVkU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNjkxO0FSQUJJQyBMRVRURVIgUlJFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBTTUFMTCBUQUg7Ozs7CiswNjkyO0FSQUJJQyBMRVRURVIgUkVIIFdJVEggU01BTEwgVjtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBTTUFMTCBWOzs7OworMDY5MztBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIFJJTkc7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBIFdJVEggUklORzs7OzsKKzA2OTQ7QVJBQklDIExFVFRFUiBSRUggV0lUSCBET1QgQkVMT1c7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBIFdJVEggRE9UIEJFTE9XOzs7OworMDY5NTtBUkFCSUMgTEVUVEVSIFJFSCBXSVRIIFNNQUxMIFYgQkVMT1c7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBIFdJVEggU01BTEwgViBCRUxPVzs7OzsKKzA2OTY7QVJBQklDIExFVFRFUiBSRUggV0lUSCBET1QgQkVMT1cgQU5EIERPVCBBQk9WRTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBET1QgQkVMT1cgQU5EIERPVCBBQk9WRTs7OzsKKzA2OTc7QVJBQklDIExFVFRFUiBSRUggV0lUSCBUV08gRE9UUyBBQk9WRTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgUkEgV0lUSCBUV08gRE9UUyBBQk9WRTs7OzsKKzA2OTg7QVJBQklDIExFVFRFUiBKRUg7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBIFdJVEggVEhSRUUgRE9UUyBBQk9WRTs7OzsKKzA2OTk7QVJBQklDIExFVFRFUiBSRUggV0lUSCBGT1VSIERPVFMgQUJPVkU7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFJBIFdJVEggRk9VUiBET1RTIEFCT1ZFOzs7OworMDY5QTtBUkFCSUMgTEVUVEVSIFNFRU4gV0lUSCBET1QgQkVMT1cgQU5EIERPVCBBQk9WRTtMbzswO0FMOzs7OztOOzs7OzsKKzA2OUI7QVJBQklDIExFVFRFUiBTRUVOIFdJVEggVEhSRUUgRE9UUyBCRUxPVztMbzswO0FMOzs7OztOOzs7OzsKKzA2OUM7QVJBQklDIExFVFRFUiBTRUVOIFdJVEggVEhSRUUgRE9UUyBCRUxPVyBBTkQgVEhSRUUgRE9UUyBBQk9WRTtMbzswO0FMOzs7OztOOzs7OzsKKzA2OUQ7QVJBQklDIExFVFRFUiBTQUQgV0lUSCBUV08gRE9UUyBCRUxPVztMbzswO0FMOzs7OztOOzs7OzsKKzA2OUU7QVJBQklDIExFVFRFUiBTQUQgV0lUSCBUSFJFRSBET1RTIEFCT1ZFO0xvOzA7QUw7Ozs7O047Ozs7OworMDY5RjtBUkFCSUMgTEVUVEVSIFRBSCBXSVRIIFRIUkVFIERPVFMgQUJPVkU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkEwO0FSQUJJQyBMRVRURVIgQUlOIFdJVEggVEhSRUUgRE9UUyBBQk9WRTtMbzswO0FMOzs7OztOOzs7OzsKKzA2QTE7QVJBQklDIExFVFRFUiBET1RMRVNTIEZFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgRE9UTEVTUyBGQTs7OzsKKzA2QTI7QVJBQklDIExFVFRFUiBGRUggV0lUSCBET1QgTU9WRUQgQkVMT1c7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIEZBIFdJVEggRE9UIE1PVkVEIEJFTE9XOzs7OworMDZBMztBUkFCSUMgTEVUVEVSIEZFSCBXSVRIIERPVCBCRUxPVztMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgRkEgV0lUSCBET1QgQkVMT1c7Ozs7CiswNkE0O0FSQUJJQyBMRVRURVIgVkVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBGQSBXSVRIIFRIUkVFIERPVFMgQUJPVkU7Ozs7CiswNkE1O0FSQUJJQyBMRVRURVIgRkVIIFdJVEggVEhSRUUgRE9UUyBCRUxPVztMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgRkEgV0lUSCBUSFJFRSBET1RTIEJFTE9XOzs7OworMDZBNjtBUkFCSUMgTEVUVEVSIFBFSEVIO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBGQSBXSVRIIEZPVVIgRE9UUyBBQk9WRTs7OzsKKzA2QTc7QVJBQklDIExFVFRFUiBRQUYgV0lUSCBET1QgQUJPVkU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkE4O0FSQUJJQyBMRVRURVIgUUFGIFdJVEggVEhSRUUgRE9UUyBBQk9WRTtMbzswO0FMOzs7OztOOzs7OzsKKzA2QTk7QVJBQklDIExFVFRFUiBLRUhFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgT1BFTiBDQUY7Ozs7CiswNkFBO0FSQUJJQyBMRVRURVIgU1dBU0ggS0FGO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBTV0FTSCBDQUY7Ozs7CiswNkFCO0FSQUJJQyBMRVRURVIgS0FGIFdJVEggUklORztMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgQ0FGIFdJVEggUklORzs7OzsKKzA2QUM7QVJBQklDIExFVFRFUiBLQUYgV0lUSCBET1QgQUJPVkU7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIENBRiBXSVRIIERPVCBBQk9WRTs7OzsKKzA2QUQ7QVJBQklDIExFVFRFUiBORztMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgQ0FGIFdJVEggVEhSRUUgRE9UUyBBQk9WRTs7OzsKKzA2QUU7QVJBQklDIExFVFRFUiBLQUYgV0lUSCBUSFJFRSBET1RTIEJFTE9XO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBDQUYgV0lUSCBUSFJFRSBET1RTIEJFTE9XOzs7OworMDZBRjtBUkFCSUMgTEVUVEVSIEdBRjtMbzswO0FMOzs7OztOOzsqOzs7CiswNkIwO0FSQUJJQyBMRVRURVIgR0FGIFdJVEggUklORztMbzswO0FMOzs7OztOOzs7OzsKKzA2QjE7QVJBQklDIExFVFRFUiBOR09FSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgR0FGIFdJVEggVFdPIERPVFMgQUJPVkU7Ozs7CiswNkIyO0FSQUJJQyBMRVRURVIgR0FGIFdJVEggVFdPIERPVFMgQkVMT1c7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkIzO0FSQUJJQyBMRVRURVIgR1VFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgR0FGIFdJVEggVFdPIERPVFMgVkVSVElDQUwgQkVMT1c7Ozs7CiswNkI0O0FSQUJJQyBMRVRURVIgR0FGIFdJVEggVEhSRUUgRE9UUyBBQk9WRTtMbzswO0FMOzs7OztOOzs7OzsKKzA2QjU7QVJBQklDIExFVFRFUiBMQU0gV0lUSCBTTUFMTCBWO0xvOzA7QUw7Ozs7O047Ozs7OworMDZCNjtBUkFCSUMgTEVUVEVSIExBTSBXSVRIIERPVCBBQk9WRTtMbzswO0FMOzs7OztOOzs7OzsKKzA2Qjc7QVJBQklDIExFVFRFUiBMQU0gV0lUSCBUSFJFRSBET1RTIEFCT1ZFO0xvOzA7QUw7Ozs7O047Ozs7OworMDZCODtBUkFCSUMgTEVUVEVSIExBTSBXSVRIIFRIUkVFIERPVFMgQkVMT1c7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkI5O0FSQUJJQyBMRVRURVIgTk9PTiBXSVRIIERPVCBCRUxPVztMbzswO0FMOzs7OztOOzs7OzsKKzA2QkE7QVJBQklDIExFVFRFUiBOT09OIEdIVU5OQTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgRE9UTEVTUyBOT09OOzs7OworMDZCQjtBUkFCSUMgTEVUVEVSIFJOT09OO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBET1RMRVNTIE5PT04gV0lUSCBTTUFMTCBUQUg7Ozs7CiswNkJDO0FSQUJJQyBMRVRURVIgTk9PTiBXSVRIIFJJTkc7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkJEO0FSQUJJQyBMRVRURVIgTk9PTiBXSVRIIFRIUkVFIERPVFMgQUJPVkU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkJFO0FSQUJJQyBMRVRURVIgSEVIIERPQUNIQVNITUVFO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBLTk9UVEVEIEhBOzs7OworMDZCRjtBUkFCSUMgTEVUVEVSIFRDSEVIIFdJVEggRE9UIEFCT1ZFO0xvOzA7QUw7Ozs7O047Ozs7OworMDZDMDtBUkFCSUMgTEVUVEVSIEhFSCBXSVRIIFlFSCBBQk9WRTtMbzswO0FMOzA2RDUgMDY1NDs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIIE9OIEhBOzs7OworMDZDMTtBUkFCSUMgTEVUVEVSIEhFSCBHT0FMO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBIQSBHT0FMOzs7OworMDZDMjtBUkFCSUMgTEVUVEVSIEhFSCBHT0FMIFdJVEggSEFNWkEgQUJPVkU7TG87MDtBTDswNkMxIDA2NTQ7Ozs7TjtBUkFCSUMgTEVUVEVSIEhBTVpBSCBPTiBIQSBHT0FMOzs7OworMDZDMztBUkFCSUMgTEVUVEVSIFRFSCBNQVJCVVRBIEdPQUw7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFRBQSBNQVJCVVRBSCBHT0FMOzs7OworMDZDNDtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIFJJTkc7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkM1O0FSQUJJQyBMRVRURVIgS0lSR0hJWiBPRTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgV0FXIFdJVEggQkFSOzs7OworMDZDNjtBUkFCSUMgTEVUVEVSIE9FO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBXQVcgV0lUSCBTTUFMTCBWOzs7OworMDZDNztBUkFCSUMgTEVUVEVSIFU7TG87MDtBTDs7Ozs7TjtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIERBTU1BSDs7OzsKKzA2Qzg7QVJBQklDIExFVFRFUiBZVTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgV0FXIFdJVEggQUxFRiBBQk9WRTs7OzsKKzA2Qzk7QVJBQklDIExFVFRFUiBLSVJHSElaIFlVO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBXQVcgV0lUSCBJTlZFUlRFRCBTTUFMTCBWOzs7OworMDZDQTtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIFRXTyBET1RTIEFCT1ZFO0xvOzA7QUw7Ozs7O047Ozs7OworMDZDQjtBUkFCSUMgTEVUVEVSIFZFO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBXQVcgV0lUSCBUSFJFRSBET1RTIEFCT1ZFOzs7OworMDZDQztBUkFCSUMgTEVUVEVSIEZBUlNJIFlFSDtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgRE9UTEVTUyBZQTs7OzsKKzA2Q0Q7QVJBQklDIExFVFRFUiBZRUggV0lUSCBUQUlMO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBZQSBXSVRIIFRBSUw7Ozs7CiswNkNFO0FSQUJJQyBMRVRURVIgWUVIIFdJVEggU01BTEwgVjtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgWUEgV0lUSCBTTUFMTCBWOzs7OworMDZDRjtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIERPVCBBQk9WRTtMbzswO0FMOzs7OztOOzs7OzsKKzA2RDA7QVJBQklDIExFVFRFUiBFO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBZQSBXSVRIIFRXTyBET1RTIFZFUlRJQ0FMIEJFTE9XOyo7OzsKKzA2RDE7QVJBQklDIExFVFRFUiBZRUggV0lUSCBUSFJFRSBET1RTIEJFTE9XO0xvOzA7QUw7Ozs7O047QVJBQklDIExFVFRFUiBZQSBXSVRIIFRIUkVFIERPVFMgQkVMT1c7Ozs7CiswNkQyO0FSQUJJQyBMRVRURVIgWUVIIEJBUlJFRTtMbzswO0FMOzs7OztOO0FSQUJJQyBMRVRURVIgWUEgQkFSUkVFOzs7OworMDZEMztBUkFCSUMgTEVUVEVSIFlFSCBCQVJSRUUgV0lUSCBIQU1aQSBBQk9WRTtMbzswO0FMOzA2RDIgMDY1NDs7OztOO0FSQUJJQyBMRVRURVIgSEFNWkFIIE9OIFlBIEJBUlJFRTs7OzsKKzA2RDQ7QVJBQklDIEZVTEwgU1RPUDtQbzswO0FMOzs7OztOO0FSQUJJQyBQRVJJT0Q7Ozs7CiswNkQ1O0FSQUJJQyBMRVRURVIgQUU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkQ2O0FSQUJJQyBTTUFMTCBISUdIIExJR0FUVVJFIFNBRCBXSVRIIExBTSBXSVRIIEFMRUYgTUFLU1VSQTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA2RDc7QVJBQklDIFNNQUxMIEhJR0ggTElHQVRVUkUgUUFGIFdJVEggTEFNIFdJVEggQUxFRiBNQUtTVVJBO01uOzIzMDtOU007Ozs7O047Ozs7OworMDZEODtBUkFCSUMgU01BTEwgSElHSCBNRUVNIElOSVRJQUwgRk9STTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA2RDk7QVJBQklDIFNNQUxMIEhJR0ggTEFNIEFMRUY7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkRBO0FSQUJJQyBTTUFMTCBISUdIIEpFRU07TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkRCO0FSQUJJQyBTTUFMTCBISUdIIFRIUkVFIERPVFM7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkRDO0FSQUJJQyBTTUFMTCBISUdIIFNFRU47TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkREO0FSQUJJQyBFTkQgT0YgQVlBSDtNZTswO05TTTs7Ozs7Tjs7Ozs7CiswNkRFO0FSQUJJQyBTVEFSVCBPRiBSVUIgRUwgSElaQjtNZTswO05TTTs7Ozs7Tjs7Ozs7CiswNkRGO0FSQUJJQyBTTUFMTCBISUdIIFJPVU5ERUQgWkVSTztNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA2RTA7QVJBQklDIFNNQUxMIEhJR0ggVVBSSUdIVCBSRUNUQU5HVUxBUiBaRVJPO01uOzIzMDtOU007Ozs7O047Ozs7OworMDZFMTtBUkFCSUMgU01BTEwgSElHSCBET1RMRVNTIEhFQUQgT0YgS0hBSDtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA2RTI7QVJBQklDIFNNQUxMIEhJR0ggTUVFTSBJU09MQVRFRCBGT1JNO01uOzIzMDtOU007Ozs7O047Ozs7OworMDZFMztBUkFCSUMgU01BTEwgTE9XIFNFRU47TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNkU0O0FSQUJJQyBTTUFMTCBISUdIIE1BRERBO01uOzIzMDtOU007Ozs7O047Ozs7OworMDZFNTtBUkFCSUMgU01BTEwgV0FXO0xtOzA7QUw7Ozs7O047Ozs7OworMDZFNjtBUkFCSUMgU01BTEwgWUVIO0xtOzA7QUw7Ozs7O047Ozs7OworMDZFNztBUkFCSUMgU01BTEwgSElHSCBZRUg7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkU4O0FSQUJJQyBTTUFMTCBISUdIIE5PT047TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNkU5O0FSQUJJQyBQTEFDRSBPRiBTQUpEQUg7U287MDtPTjs7Ozs7Tjs7Ozs7CiswNkVBO0FSQUJJQyBFTVBUWSBDRU5UUkUgTE9XIFNUT1A7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNkVCO0FSQUJJQyBFTVBUWSBDRU5UUkUgSElHSCBTVE9QO01uOzIzMDtOU007Ozs7O047Ozs7OworMDZFQztBUkFCSUMgUk9VTkRFRCBISUdIIFNUT1AgV0lUSCBGSUxMRUQgQ0VOVFJFO01uOzIzMDtOU007Ozs7O047Ozs7OworMDZFRDtBUkFCSUMgU01BTEwgTE9XIE1FRU07TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNkYwO0VYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPO05kOzA7RU47OzA7MDswO047RUFTVEVSTiBBUkFCSUMtSU5ESUMgRElHSVQgWkVSTzs7OzsKKzA2RjE7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIE9ORTtOZDswO0VOOzsxOzE7MTtOO0VBU1RFUk4gQVJBQklDLUlORElDIERJR0lUIE9ORTs7OzsKKzA2RjI7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIFRXTztOZDswO0VOOzsyOzI7MjtOO0VBU1RFUk4gQVJBQklDLUlORElDIERJR0lUIFRXTzs7OzsKKzA2RjM7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIFRIUkVFO05kOzA7RU47OzM7MzszO047RUFTVEVSTiBBUkFCSUMtSU5ESUMgRElHSVQgVEhSRUU7Ozs7CiswNkY0O0VYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBGT1VSO05kOzA7RU47OzQ7NDs0O047RUFTVEVSTiBBUkFCSUMtSU5ESUMgRElHSVQgRk9VUjs7OzsKKzA2RjU7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIEZJVkU7TmQ7MDtFTjs7NTs1OzU7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBGSVZFOzs7OworMDZGNjtFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgU0lYO05kOzA7RU47OzY7Njs2O047RUFTVEVSTiBBUkFCSUMtSU5ESUMgRElHSVQgU0lYOzs7OworMDZGNztFWFRFTkRFRCBBUkFCSUMtSU5ESUMgRElHSVQgU0VWRU47TmQ7MDtFTjs7Nzs3Ozc7TjtFQVNURVJOIEFSQUJJQy1JTkRJQyBESUdJVCBTRVZFTjs7OzsKKzA2Rjg7RVhURU5ERUQgQVJBQklDLUlORElDIERJR0lUIEVJR0hUO05kOzA7RU47Ozg7ODs4O047RUFTVEVSTiBBUkFCSUMtSU5ESUMgRElHSVQgRUlHSFQ7Ozs7CiswNkY5O0VYVEVOREVEIEFSQUJJQy1JTkRJQyBESUdJVCBOSU5FO05kOzA7RU47Ozk7OTs5O047RUFTVEVSTiBBUkFCSUMtSU5ESUMgRElHSVQgTklORTs7OzsKKzA2RkE7QVJBQklDIExFVFRFUiBTSEVFTiBXSVRIIERPVCBCRUxPVztMbzswO0FMOzs7OztOOzs7OzsKKzA2RkI7QVJBQklDIExFVFRFUiBEQUQgV0lUSCBET1QgQkVMT1c7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkZDO0FSQUJJQyBMRVRURVIgR0hBSU4gV0lUSCBET1QgQkVMT1c7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNkZEO0FSQUJJQyBTSUdOIFNJTkRISSBBTVBFUlNBTkQ7U287MDtBTDs7Ozs7Tjs7Ozs7CiswNkZFO0FSQUJJQyBTSUdOIFNJTkRISSBQT1NUUE9TSVRJT04gTUVOO1NvOzA7QUw7Ozs7O047Ozs7OworMDcwMDtTWVJJQUMgRU5EIE9GIFBBUkFHUkFQSDtQbzswO0FMOzs7OztOOzs7OzsKKzA3MDE7U1lSSUFDIFNVUFJBTElORUFSIEZVTEwgU1RPUDtQbzswO0FMOzs7OztOOzs7OzsKKzA3MDI7U1lSSUFDIFNVQkxJTkVBUiBGVUxMIFNUT1A7UG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzAzO1NZUklBQyBTVVBSQUxJTkVBUiBDT0xPTjtQbzswO0FMOzs7OztOOzs7OzsKKzA3MDQ7U1lSSUFDIFNVQkxJTkVBUiBDT0xPTjtQbzswO0FMOzs7OztOOzs7OzsKKzA3MDU7U1lSSUFDIEhPUklaT05UQUwgQ09MT047UG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzA2O1NZUklBQyBDT0xPTiBTS0VXRUQgTEVGVDtQbzswO0FMOzs7OztOOzs7OzsKKzA3MDc7U1lSSUFDIENPTE9OIFNLRVdFRCBSSUdIVDtQbzswO0FMOzs7OztOOzs7OzsKKzA3MDg7U1lSSUFDIFNVUFJBTElORUFSIENPTE9OIFNLRVdFRCBMRUZUO1BvOzA7QUw7Ozs7O047Ozs7OworMDcwOTtTWVJJQUMgU1VCTElORUFSIENPTE9OIFNLRVdFRCBSSUdIVDtQbzswO0FMOzs7OztOOzs7OzsKKzA3MEE7U1lSSUFDIENPTlRSQUNUSU9OO1BvOzA7QUw7Ozs7O047Ozs7OworMDcwQjtTWVJJQUMgSEFSS0xFQU4gT0JFTFVTO1BvOzA7QUw7Ozs7O047Ozs7OworMDcwQztTWVJJQUMgSEFSS0xFQU4gTUVUT0JFTFVTO1BvOzA7QUw7Ozs7O047Ozs7OworMDcwRDtTWVJJQUMgSEFSS0xFQU4gQVNURVJJU0NVUztQbzswO0FMOzs7OztOOzs7OzsKKzA3MEY7U1lSSUFDIEFCQlJFVklBVElPTiBNQVJLO0NmOzA7Qk47Ozs7O047Ozs7OworMDcxMDtTWVJJQUMgTEVUVEVSIEFMQVBIO0xvOzA7QUw7Ozs7O047Ozs7OworMDcxMTtTWVJJQUMgTEVUVEVSIFNVUEVSU0NSSVBUIEFMQVBIO01uOzM2O05TTTs7Ozs7Tjs7Ozs7CiswNzEyO1NZUklBQyBMRVRURVIgQkVUSDtMbzswO0FMOzs7OztOOzs7OzsKKzA3MTM7U1lSSUFDIExFVFRFUiBHQU1BTDtMbzswO0FMOzs7OztOOzs7OzsKKzA3MTQ7U1lSSUFDIExFVFRFUiBHQU1BTCBHQVJTSFVOSTtMbzswO0FMOzs7OztOOzs7OzsKKzA3MTU7U1lSSUFDIExFVFRFUiBEQUxBVEg7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzE2O1NZUklBQyBMRVRURVIgRE9UTEVTUyBEQUxBVEggUklTSDtMbzswO0FMOzs7OztOOzs7OzsKKzA3MTc7U1lSSUFDIExFVFRFUiBIRTtMbzswO0FMOzs7OztOOzs7OzsKKzA3MTg7U1lSSUFDIExFVFRFUiBXQVc7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzE5O1NZUklBQyBMRVRURVIgWkFJTjtMbzswO0FMOzs7OztOOzs7OzsKKzA3MUE7U1lSSUFDIExFVFRFUiBIRVRIO0xvOzA7QUw7Ozs7O047Ozs7OworMDcxQjtTWVJJQUMgTEVUVEVSIFRFVEg7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzFDO1NZUklBQyBMRVRURVIgVEVUSCBHQVJTSFVOSTtMbzswO0FMOzs7OztOOzs7OzsKKzA3MUQ7U1lSSUFDIExFVFRFUiBZVURIO0xvOzA7QUw7Ozs7O047Ozs7OworMDcxRTtTWVJJQUMgTEVUVEVSIFlVREggSEU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzFGO1NZUklBQyBMRVRURVIgS0FQSDtMbzswO0FMOzs7OztOOzs7OzsKKzA3MjA7U1lSSUFDIExFVFRFUiBMQU1BREg7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzIxO1NZUklBQyBMRVRURVIgTUlNO0xvOzA7QUw7Ozs7O047Ozs7OworMDcyMjtTWVJJQUMgTEVUVEVSIE5VTjtMbzswO0FMOzs7OztOOzs7OzsKKzA3MjM7U1lSSUFDIExFVFRFUiBTRU1LQVRIO0xvOzA7QUw7Ozs7O047Ozs7OworMDcyNDtTWVJJQUMgTEVUVEVSIEZJTkFMIFNFTUtBVEg7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzI1O1NZUklBQyBMRVRURVIgRTtMbzswO0FMOzs7OztOOzs7OzsKKzA3MjY7U1lSSUFDIExFVFRFUiBQRTtMbzswO0FMOzs7OztOOzs7OzsKKzA3Mjc7U1lSSUFDIExFVFRFUiBSRVZFUlNFRCBQRTtMbzswO0FMOzs7OztOOzs7OzsKKzA3Mjg7U1lSSUFDIExFVFRFUiBTQURIRTtMbzswO0FMOzs7OztOOzs7OzsKKzA3Mjk7U1lSSUFDIExFVFRFUiBRQVBIO0xvOzA7QUw7Ozs7O047Ozs7OworMDcyQTtTWVJJQUMgTEVUVEVSIFJJU0g7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzJCO1NZUklBQyBMRVRURVIgU0hJTjtMbzswO0FMOzs7OztOOzs7OzsKKzA3MkM7U1lSSUFDIExFVFRFUiBUQVc7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzMwO1NZUklBQyBQVEhBSEEgQUJPVkU7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNzMxO1NZUklBQyBQVEhBSEEgQkVMT1c7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNzMyO1NZUklBQyBQVEhBSEEgRE9UVEVEO01uOzIzMDtOU007Ozs7O047Ozs7OworMDczMztTWVJJQUMgWlFBUEhBIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Ozs7OworMDczNDtTWVJJQUMgWlFBUEhBIEJFTE9XO01uOzIyMDtOU007Ozs7O047Ozs7OworMDczNTtTWVJJQUMgWlFBUEhBIERPVFRFRDtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA3MzY7U1lSSUFDIFJCQVNBIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Ozs7OworMDczNztTWVJJQUMgUkJBU0EgQkVMT1c7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNzM4O1NZUklBQyBET1RURUQgWkxBTUEgSE9SSVpPTlRBTDtNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA3Mzk7U1lSSUFDIERPVFRFRCBaTEFNQSBBTkdVTEFSO01uOzIyMDtOU007Ozs7O047Ozs7OworMDczQTtTWVJJQUMgSEJBU0EgQUJPVkU7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNzNCO1NZUklBQyBIQkFTQSBCRUxPVztNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA3M0M7U1lSSUFDIEhCQVNBLUVTQVNBIERPVFRFRDtNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA3M0Q7U1lSSUFDIEVTQVNBIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Ozs7OworMDczRTtTWVJJQUMgRVNBU0EgQkVMT1c7TW47MjIwO05TTTs7Ozs7Tjs7Ozs7CiswNzNGO1NZUklBQyBSV0FIQTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA3NDA7U1lSSUFDIEZFTUlOSU5FIERPVDtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA3NDE7U1lSSUFDIFFVU0hTSEFZQTtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA3NDI7U1lSSUFDIFJVS0tBS0hBO01uOzIyMDtOU007Ozs7O047Ozs7OworMDc0MztTWVJJQUMgVFdPIFZFUlRJQ0FMIERPVFMgQUJPVkU7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNzQ0O1NZUklBQyBUV08gVkVSVElDQUwgRE9UUyBCRUxPVztNbjsyMjA7TlNNOzs7OztOOzs7OzsKKzA3NDU7U1lSSUFDIFRIUkVFIERPVFMgQUJPVkU7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNzQ2O1NZUklBQyBUSFJFRSBET1RTIEJFTE9XO01uOzIyMDtOU007Ozs7O047Ozs7OworMDc0NztTWVJJQUMgT0JMSVFVRSBMSU5FIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Ozs7OworMDc0ODtTWVJJQUMgT0JMSVFVRSBMSU5FIEJFTE9XO01uOzIyMDtOU007Ozs7O047Ozs7OworMDc0OTtTWVJJQUMgTVVTSUM7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswNzRBO1NZUklBQyBCQVJSRUtIO01uOzIzMDtOU007Ozs7O047Ozs7OworMDc4MDtUSEFBTkEgTEVUVEVSIEhBQTtMbzswO0FMOzs7OztOOzs7OzsKKzA3ODE7VEhBQU5BIExFVFRFUiBTSEFWSVlBTkk7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzgyO1RIQUFOQSBMRVRURVIgTk9PTlU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzgzO1RIQUFOQSBMRVRURVIgUkFBO0xvOzA7QUw7Ozs7O047Ozs7OworMDc4NDtUSEFBTkEgTEVUVEVSIEJBQTtMbzswO0FMOzs7OztOOzs7OzsKKzA3ODU7VEhBQU5BIExFVFRFUiBMSEFWSVlBTkk7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzg2O1RIQUFOQSBMRVRURVIgS0FBRlU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzg3O1RIQUFOQSBMRVRURVIgQUxJRlU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzg4O1RIQUFOQSBMRVRURVIgVkFBVlU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzg5O1RIQUFOQSBMRVRURVIgTUVFTVU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzhBO1RIQUFOQSBMRVRURVIgRkFBRlU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzhCO1RIQUFOQSBMRVRURVIgREhBQUxVO0xvOzA7QUw7Ozs7O047Ozs7OworMDc4QztUSEFBTkEgTEVUVEVSIFRIQUE7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzhEO1RIQUFOQSBMRVRURVIgTEFBTVU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzhFO1RIQUFOQSBMRVRURVIgR0FBRlU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzhGO1RIQUFOQSBMRVRURVIgR05BVklZQU5JO0xvOzA7QUw7Ozs7O047Ozs7OworMDc5MDtUSEFBTkEgTEVUVEVSIFNFRU5VO0xvOzA7QUw7Ozs7O047Ozs7OworMDc5MTtUSEFBTkEgTEVUVEVSIERBVklZQU5JO0xvOzA7QUw7Ozs7O047Ozs7OworMDc5MjtUSEFBTkEgTEVUVEVSIFpBVklZQU5JO0xvOzA7QUw7Ozs7O047Ozs7OworMDc5MztUSEFBTkEgTEVUVEVSIFRBVklZQU5JO0xvOzA7QUw7Ozs7O047Ozs7OworMDc5NDtUSEFBTkEgTEVUVEVSIFlBQTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OTU7VEhBQU5BIExFVFRFUiBQQVZJWUFOSTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OTY7VEhBQU5BIExFVFRFUiBKQVZJWUFOSTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OTc7VEhBQU5BIExFVFRFUiBDSEFWSVlBTkk7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzk4O1RIQUFOQSBMRVRURVIgVFRBQTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OTk7VEhBQU5BIExFVFRFUiBISEFBO0xvOzA7QUw7Ozs7O047Ozs7OworMDc5QTtUSEFBTkEgTEVUVEVSIEtIQUE7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzlCO1RIQUFOQSBMRVRURVIgVEhBQUxVO0xvOzA7QUw7Ozs7O047Ozs7OworMDc5QztUSEFBTkEgTEVUVEVSIFpBQTtMbzswO0FMOzs7OztOOzs7OzsKKzA3OUQ7VEhBQU5BIExFVFRFUiBTSEVFTlU7TG87MDtBTDs7Ozs7Tjs7Ozs7CiswNzlFO1RIQUFOQSBMRVRURVIgU0FBREhVO0xvOzA7QUw7Ozs7O047Ozs7OworMDc5RjtUSEFBTkEgTEVUVEVSIERBQURIVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3QTA7VEhBQU5BIExFVFRFUiBUTztMbzswO0FMOzs7OztOOzs7OzsKKzA3QTE7VEhBQU5BIExFVFRFUiBaTztMbzswO0FMOzs7OztOOzs7OzsKKzA3QTI7VEhBQU5BIExFVFRFUiBBSU5VO0xvOzA7QUw7Ozs7O047Ozs7OworMDdBMztUSEFBTkEgTEVUVEVSIEdIQUlOVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3QTQ7VEhBQU5BIExFVFRFUiBRQUFGVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3QTU7VEhBQU5BIExFVFRFUiBXQUFWVTtMbzswO0FMOzs7OztOOzs7OzsKKzA3QTY7VEhBQU5BIEFCQUZJTEk7TW47MDtOU007Ozs7O047Ozs7OworMDdBNztUSEFBTkEgQUFCQUFGSUxJO01uOzA7TlNNOzs7OztOOzs7OzsKKzA3QTg7VEhBQU5BIElCSUZJTEk7TW47MDtOU007Ozs7O047Ozs7OworMDdBOTtUSEFBTkEgRUVCRUVGSUxJO01uOzA7TlNNOzs7OztOOzs7OzsKKzA3QUE7VEhBQU5BIFVCVUZJTEk7TW47MDtOU007Ozs7O047Ozs7OworMDdBQjtUSEFBTkEgT09CT09GSUxJO01uOzA7TlNNOzs7OztOOzs7OzsKKzA3QUM7VEhBQU5BIEVCRUZJTEk7TW47MDtOU007Ozs7O047Ozs7OworMDdBRDtUSEFBTkEgRVlCRVlGSUxJO01uOzA7TlNNOzs7OztOOzs7OzsKKzA3QUU7VEhBQU5BIE9CT0ZJTEk7TW47MDtOU007Ozs7O047Ozs7OworMDdBRjtUSEFBTkEgT0FCT0FGSUxJO01uOzA7TlNNOzs7OztOOzs7OzsKKzA3QjA7VEhBQU5BIFNVS1VOO01uOzA7TlNNOzs7OztOOzs7OzsKKzA5MDE7REVWQU5BR0FSSSBTSUdOIENBTkRSQUJJTkRVO01uOzA7TlNNOzs7OztOOzs7OzsKKzA5MDI7REVWQU5BR0FSSSBTSUdOIEFOVVNWQVJBO01uOzA7TlNNOzs7OztOOzs7OzsKKzA5MDM7REVWQU5BR0FSSSBTSUdOIFZJU0FSR0E7TWM7MDtMOzs7OztOOzs7OzsKKzA5MDU7REVWQU5BR0FSSSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMDkwNjtERVZBTkFHQVJJIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMDkwNztERVZBTkFHQVJJIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTA4O0RFVkFOQUdBUkkgTEVUVEVSIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTA5O0RFVkFOQUdBUkkgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzA5MEE7REVWQU5BR0FSSSBMRVRURVIgVVU7TG87MDtMOzs7OztOOzs7OzsKKzA5MEI7REVWQU5BR0FSSSBMRVRURVIgVk9DQUxJQyBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTBDO0RFVkFOQUdBUkkgTEVUVEVSIFZPQ0FMSUMgTDtMbzswO0w7Ozs7O047Ozs7OworMDkwRDtERVZBTkFHQVJJIExFVFRFUiBDQU5EUkEgRTtMbzswO0w7Ozs7O047Ozs7OworMDkwRTtERVZBTkFHQVJJIExFVFRFUiBTSE9SVCBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTBGO0RFVkFOQUdBUkkgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzA5MTA7REVWQU5BR0FSSSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzA5MTE7REVWQU5BR0FSSSBMRVRURVIgQ0FORFJBIE87TG87MDtMOzs7OztOOzs7OzsKKzA5MTI7REVWQU5BR0FSSSBMRVRURVIgU0hPUlQgTztMbzswO0w7Ozs7O047Ozs7OworMDkxMztERVZBTkFHQVJJIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTE0O0RFVkFOQUdBUkkgTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTE1O0RFVkFOQUdBUkkgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTE2O0RFVkFOQUdBUkkgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMDkxNztERVZBTkFHQVJJIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMDkxODtERVZBTkFHQVJJIExFVFRFUiBHSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MTk7REVWQU5BR0FSSSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTFBO0RFVkFOQUdBUkkgTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTFCO0RFVkFOQUdBUkkgTEVUVEVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMDkxQztERVZBTkFHQVJJIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMDkxRDtERVZBTkFHQVJJIExFVFRFUiBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MUU7REVWQU5BR0FSSSBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTFGO0RFVkFOQUdBUkkgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMDkyMDtERVZBTkFHQVJJIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTIxO0RFVkFOQUdBUkkgTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMDkyMjtERVZBTkFHQVJJIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTIzO0RFVkFOQUdBUkkgTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMDkyNDtERVZBTkFHQVJJIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMDkyNTtERVZBTkFHQVJJIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MjY7REVWQU5BR0FSSSBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzA5Mjc7REVWQU5BR0FSSSBMRVRURVIgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTI4O0RFVkFOQUdBUkkgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTI5O0RFVkFOQUdBUkkgTEVUVEVSIE5OTkE7TG87MDtMOzA5MjggMDkzQzs7OztOOzs7OzsKKzA5MkE7REVWQU5BR0FSSSBMRVRURVIgUEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MkI7REVWQU5BR0FSSSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTJDO0RFVkFOQUdBUkkgTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTJEO0RFVkFOQUdBUkkgTEVUVEVSIEJIQTtMbzswO0w7Ozs7O047Ozs7OworMDkyRTtERVZBTkFHQVJJIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMDkyRjtERVZBTkFHQVJJIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMDkzMDtERVZBTkFHQVJJIExFVFRFUiBSQTtMbzswO0w7Ozs7O047Ozs7OworMDkzMTtERVZBTkFHQVJJIExFVFRFUiBSUkE7TG87MDtMOzA5MzAgMDkzQzs7OztOOzs7OzsKKzA5MzI7REVWQU5BR0FSSSBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzA5MzM7REVWQU5BR0FSSSBMRVRURVIgTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTM0O0RFVkFOQUdBUkkgTEVUVEVSIExMTEE7TG87MDtMOzA5MzMgMDkzQzs7OztOOzs7OzsKKzA5MzU7REVWQU5BR0FSSSBMRVRURVIgVkE7TG87MDtMOzs7OztOOzs7OzsKKzA5MzY7REVWQU5BR0FSSSBMRVRURVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTM3O0RFVkFOQUdBUkkgTEVUVEVSIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMDkzODtERVZBTkFHQVJJIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMDkzOTtERVZBTkFHQVJJIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMDkzQztERVZBTkFHQVJJIFNJR04gTlVLVEE7TW47NztOU007Ozs7O047Ozs7OworMDkzRDtERVZBTkFHQVJJIFNJR04gQVZBR1JBSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5M0U7REVWQU5BR0FSSSBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOTNGO0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOTQwO0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBJSTtNYzswO0w7Ozs7O047Ozs7OworMDk0MTtERVZBTkFHQVJJIFZPV0VMIFNJR04gVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOTQyO0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBVVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOTQzO0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBWT0NBTElDIFI7TW47MDtOU007Ozs7O047Ozs7OworMDk0NDtERVZBTkFHQVJJIFZPV0VMIFNJR04gVk9DQUxJQyBSUjtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOTQ1O0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBDQU5EUkEgRTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOTQ2O0RFVkFOQUdBUkkgVk9XRUwgU0lHTiBTSE9SVCBFO01uOzA7TlNNOzs7OztOOzs7OzsKKzA5NDc7REVWQU5BR0FSSSBWT1dFTCBTSUdOIEU7TW47MDtOU007Ozs7O047Ozs7OworMDk0ODtERVZBTkFHQVJJIFZPV0VMIFNJR04gQUk7TW47MDtOU007Ozs7O047Ozs7OworMDk0OTtERVZBTkFHQVJJIFZPV0VMIFNJR04gQ0FORFJBIE87TWM7MDtMOzs7OztOOzs7OzsKKzA5NEE7REVWQU5BR0FSSSBWT1dFTCBTSUdOIFNIT1JUIE87TWM7MDtMOzs7OztOOzs7OzsKKzA5NEI7REVWQU5BR0FSSSBWT1dFTCBTSUdOIE87TWM7MDtMOzs7OztOOzs7OzsKKzA5NEM7REVWQU5BR0FSSSBWT1dFTCBTSUdOIEFVO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOTREO0RFVkFOQUdBUkkgU0lHTiBWSVJBTUE7TW47OTtOU007Ozs7O047Ozs7OworMDk1MDtERVZBTkFHQVJJIE9NO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTUxO0RFVkFOQUdBUkkgU1RSRVNTIFNJR04gVURBVFRBO01uOzIzMDtOU007Ozs7O047Ozs7OworMDk1MjtERVZBTkFHQVJJIFNUUkVTUyBTSUdOIEFOVURBVFRBO01uOzIyMDtOU007Ozs7O047Ozs7OworMDk1MztERVZBTkFHQVJJIEdSQVZFIEFDQ0VOVDtNbjsyMzA7TlNNOzs7OztOOzs7OzsKKzA5NTQ7REVWQU5BR0FSSSBBQ1VURSBBQ0NFTlQ7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CiswOTU4O0RFVkFOQUdBUkkgTEVUVEVSIFFBO0xvOzA7TDswOTE1IDA5M0M7Ozs7Tjs7Ozs7CiswOTU5O0RFVkFOQUdBUkkgTEVUVEVSIEtISEE7TG87MDtMOzA5MTYgMDkzQzs7OztOOzs7OzsKKzA5NUE7REVWQU5BR0FSSSBMRVRURVIgR0hIQTtMbzswO0w7MDkxNyAwOTNDOzs7O047Ozs7OworMDk1QjtERVZBTkFHQVJJIExFVFRFUiBaQTtMbzswO0w7MDkxQyAwOTNDOzs7O047Ozs7OworMDk1QztERVZBTkFHQVJJIExFVFRFUiBERERIQTtMbzswO0w7MDkyMSAwOTNDOzs7O047Ozs7OworMDk1RDtERVZBTkFHQVJJIExFVFRFUiBSSEE7TG87MDtMOzA5MjIgMDkzQzs7OztOOzs7OzsKKzA5NUU7REVWQU5BR0FSSSBMRVRURVIgRkE7TG87MDtMOzA5MkIgMDkzQzs7OztOOzs7OzsKKzA5NUY7REVWQU5BR0FSSSBMRVRURVIgWVlBO0xvOzA7TDswOTJGIDA5M0M7Ozs7Tjs7Ozs7CiswOTYwO0RFVkFOQUdBUkkgTEVUVEVSIFZPQ0FMSUMgUlI7TG87MDtMOzs7OztOOzs7OzsKKzA5NjE7REVWQU5BR0FSSSBMRVRURVIgVk9DQUxJQyBMTDtMbzswO0w7Ozs7O047Ozs7OworMDk2MjtERVZBTkFHQVJJIFZPV0VMIFNJR04gVk9DQUxJQyBMO01uOzA7TlNNOzs7OztOOzs7OzsKKzA5NjM7REVWQU5BR0FSSSBWT1dFTCBTSUdOIFZPQ0FMSUMgTEw7TW47MDtOU007Ozs7O047Ozs7OworMDk2NDtERVZBTkFHQVJJIERBTkRBO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswOTY1O0RFVkFOQUdBUkkgRE9VQkxFIERBTkRBO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswOTY2O0RFVkFOQUdBUkkgRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMDk2NztERVZBTkFHQVJJIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMDk2ODtERVZBTkFHQVJJIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMDk2OTtERVZBTkFHQVJJIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswOTZBO0RFVkFOQUdBUkkgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMDk2QjtERVZBTkFHQVJJIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzA5NkM7REVWQU5BR0FSSSBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzA5NkQ7REVWQU5BR0FSSSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMDk2RTtERVZBTkFHQVJJIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswOTZGO0RFVkFOQUdBUkkgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMDk3MDtERVZBTkFHQVJJIEFCQlJFVklBVElPTiBTSUdOO1BvOzA7TDs7Ozs7Tjs7Ozs7CiswOTgxO0JFTkdBTEkgU0lHTiBDQU5EUkFCSU5EVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOTgyO0JFTkdBTEkgU0lHTiBBTlVTVkFSQTtNYzswO0w7Ozs7O047Ozs7OworMDk4MztCRU5HQUxJIFNJR04gVklTQVJHQTtNYzswO0w7Ozs7O047Ozs7OworMDk4NTtCRU5HQUxJIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTg2O0JFTkdBTEkgTEVUVEVSIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTg3O0JFTkdBTEkgTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzA5ODg7QkVOR0FMSSBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzA5ODk7QkVOR0FMSSBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMDk4QTtCRU5HQUxJIExFVFRFUiBVVTtMbzswO0w7Ozs7O047Ozs7OworMDk4QjtCRU5HQUxJIExFVFRFUiBWT0NBTElDIFI7TG87MDtMOzs7OztOOzs7OzsKKzA5OEM7QkVOR0FMSSBMRVRURVIgVk9DQUxJQyBMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOThGO0JFTkdBTEkgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzA5OTA7QkVOR0FMSSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzA5OTM7QkVOR0FMSSBMRVRURVIgTztMbzswO0w7Ozs7O047Ozs7OworMDk5NDtCRU5HQUxJIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMDk5NTtCRU5HQUxJIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMDk5NjtCRU5HQUxJIExFVFRFUiBLSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5OTc7QkVOR0FMSSBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzA5OTg7QkVOR0FMSSBMRVRURVIgR0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTk5O0JFTkdBTEkgTEVUVEVSIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMDk5QTtCRU5HQUxJIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMDk5QjtCRU5HQUxJIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5OUM7QkVOR0FMSSBMRVRURVIgSkE7TG87MDtMOzs7OztOOzs7OzsKKzA5OUQ7QkVOR0FMSSBMRVRURVIgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOTlFO0JFTkdBTEkgTEVUVEVSIE5ZQTtMbzswO0w7Ozs7O047Ozs7OworMDk5RjtCRU5HQUxJIExFVFRFUiBUVEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QTA7QkVOR0FMSSBMRVRURVIgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMDlBMTtCRU5HQUxJIExFVFRFUiBEREE7TG87MDtMOzs7OztOOzs7OzsKKzA5QTI7QkVOR0FMSSBMRVRURVIgRERIQTtMbzswO0w7Ozs7O047Ozs7OworMDlBMztCRU5HQUxJIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzA5QTQ7QkVOR0FMSSBMRVRURVIgVEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QTU7QkVOR0FMSSBMRVRURVIgVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUE2O0JFTkdBTEkgTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUE3O0JFTkdBTEkgTEVUVEVSIERIQTtMbzswO0w7Ozs7O047Ozs7OworMDlBODtCRU5HQUxJIExFVFRFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMDlBQTtCRU5HQUxJIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMDlBQjtCRU5HQUxJIExFVFRFUiBQSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QUM7QkVOR0FMSSBMRVRURVIgQkE7TG87MDtMOzs7OztOOzs7OzsKKzA5QUQ7QkVOR0FMSSBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUFFO0JFTkdBTEkgTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUFGO0JFTkdBTEkgTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUIwO0JFTkdBTEkgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUIyO0JFTkdBTEkgTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUI2O0JFTkdBTEkgTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMDlCNztCRU5HQUxJIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzA5Qjg7QkVOR0FMSSBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzA5Qjk7QkVOR0FMSSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzA5QkM7QkVOR0FMSSBTSUdOIE5VS1RBO01uOzc7TlNNOzs7OztOOzs7OzsKKzA5QkU7QkVOR0FMSSBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOUJGO0JFTkdBTEkgVk9XRUwgU0lHTiBJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOUMwO0JFTkdBTEkgVk9XRUwgU0lHTiBJSTtNYzswO0w7Ozs7O047Ozs7OworMDlDMTtCRU5HQUxJIFZPV0VMIFNJR04gVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOUMyO0JFTkdBTEkgVk9XRUwgU0lHTiBVVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOUMzO0JFTkdBTEkgVk9XRUwgU0lHTiBWT0NBTElDIFI7TW47MDtOU007Ozs7O047Ozs7OworMDlDNDtCRU5HQUxJIFZPV0VMIFNJR04gVk9DQUxJQyBSUjtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOUM3O0JFTkdBTEkgVk9XRUwgU0lHTiBFO01jOzA7TDs7Ozs7Tjs7Ozs7CiswOUM4O0JFTkdBTEkgVk9XRUwgU0lHTiBBSTtNYzswO0w7Ozs7O047Ozs7OworMDlDQjtCRU5HQUxJIFZPV0VMIFNJR04gTztNYzswO0w7MDlDNyAwOUJFOzs7O047Ozs7OworMDlDQztCRU5HQUxJIFZPV0VMIFNJR04gQVU7TWM7MDtMOzA5QzcgMDlENzs7OztOOzs7OzsKKzA5Q0Q7QkVOR0FMSSBTSUdOIFZJUkFNQTtNbjs5O05TTTs7Ozs7Tjs7Ozs7CiswOUQ3O0JFTkdBTEkgQVUgTEVOR1RIIE1BUks7TWM7MDtMOzs7OztOOzs7OzsKKzA5REM7QkVOR0FMSSBMRVRURVIgUlJBO0xvOzA7TDswOUExIDA5QkM7Ozs7Tjs7Ozs7CiswOUREO0JFTkdBTEkgTEVUVEVSIFJIQTtMbzswO0w7MDlBMiAwOUJDOzs7O047Ozs7OworMDlERjtCRU5HQUxJIExFVFRFUiBZWUE7TG87MDtMOzA5QUYgMDlCQzs7OztOOzs7OzsKKzA5RTA7QkVOR0FMSSBMRVRURVIgVk9DQUxJQyBSUjtMbzswO0w7Ozs7O047Ozs7OworMDlFMTtCRU5HQUxJIExFVFRFUiBWT0NBTElDIExMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswOUUyO0JFTkdBTEkgVk9XRUwgU0lHTiBWT0NBTElDIEw7TW47MDtOU007Ozs7O047Ozs7OworMDlFMztCRU5HQUxJIFZPV0VMIFNJR04gVk9DQUxJQyBMTDtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswOUU2O0JFTkdBTEkgRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMDlFNztCRU5HQUxJIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMDlFODtCRU5HQUxJIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMDlFOTtCRU5HQUxJIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswOUVBO0JFTkdBTEkgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMDlFQjtCRU5HQUxJIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzA5RUM7QkVOR0FMSSBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzA5RUQ7QkVOR0FMSSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMDlFRTtCRU5HQUxJIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswOUVGO0JFTkdBTEkgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMDlGMDtCRU5HQUxJIExFVFRFUiBSQSBXSVRIIE1JRERMRSBESUFHT05BTDtMbzswO0w7Ozs7O047O0Fzc2FtZXNlOzs7CiswOUYxO0JFTkdBTEkgTEVUVEVSIFJBIFdJVEggTE9XRVIgRElBR09OQUw7TG87MDtMOzs7OztOO0JFTkdBTEkgTEVUVEVSIFZBIFdJVEggTE9XRVIgRElBR09OQUw7QXNzYW1lc2U7OzsKKzA5RjI7QkVOR0FMSSBSVVBFRSBNQVJLO1NjOzA7RVQ7Ozs7O047Ozs7OworMDlGMztCRU5HQUxJIFJVUEVFIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CiswOUY0O0JFTkdBTEkgQ1VSUkVOQ1kgTlVNRVJBVE9SIE9ORTtObzswO0w7Ozs7MTtOOzs7OzsKKzA5RjU7QkVOR0FMSSBDVVJSRU5DWSBOVU1FUkFUT1IgVFdPO05vOzA7TDs7OzsyO047Ozs7OworMDlGNjtCRU5HQUxJIENVUlJFTkNZIE5VTUVSQVRPUiBUSFJFRTtObzswO0w7Ozs7MztOOzs7OzsKKzA5Rjc7QkVOR0FMSSBDVVJSRU5DWSBOVU1FUkFUT1IgRk9VUjtObzswO0w7Ozs7NDtOOzs7OzsKKzA5Rjg7QkVOR0FMSSBDVVJSRU5DWSBOVU1FUkFUT1IgT05FIExFU1MgVEhBTiBUSEUgREVOT01JTkFUT1I7Tm87MDtMOzs7OztOOzs7OzsKKzA5Rjk7QkVOR0FMSSBDVVJSRU5DWSBERU5PTUlOQVRPUiBTSVhURUVOO05vOzA7TDs7OzsxNjtOOzs7OzsKKzA5RkE7QkVOR0FMSSBJU1NIQVI7U287MDtMOzs7OztOOzs7OzsKKzBBMDI7R1VSTVVLSEkgU0lHTiBCSU5ESTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQTA1O0dVUk1VS0hJIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTA2O0dVUk1VS0hJIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEEwNztHVVJNVUtISSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEEwODtHVVJNVUtISSBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzBBMDk7R1VSTVVLSEkgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzBBMEE7R1VSTVVLSEkgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTBGO0dVUk1VS0hJIExFVFRFUiBFRTtMbzswO0w7Ozs7O047Ozs7OworMEExMDtHVVJNVUtISSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzBBMTM7R1VSTVVLSEkgTEVUVEVSIE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTE0O0dVUk1VS0hJIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMEExNTtHVVJNVUtISSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzBBMTY7R1VSTVVLSEkgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMEExNztHVVJNVUtISSBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBBMTg7R1VSTVVLSEkgTEVUVEVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMEExOTtHVVJNVUtISSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTFBO0dVUk1VS0hJIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEExQjtHVVJNVUtISSBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTFDO0dVUk1VS0hJIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMEExRDtHVVJNVUtISSBMRVRURVIgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTFFO0dVUk1VS0hJIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzBBMUY7R1VSTVVLSEkgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMEEyMDtHVVJNVUtISSBMRVRURVIgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEEyMTtHVVJNVUtISSBMRVRURVIgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTIyO0dVUk1VS0hJIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTIzO0dVUk1VS0hJIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBBMjQ7R1VSTVVLSEkgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTI1O0dVUk1VS0hJIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMjY7R1VSTVVLSEkgTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTI3O0dVUk1VS0hJIExFVFRFUiBESEE7TG87MDtMOzs7OztOOzs7OzsKKzBBMjg7R1VSTVVLSEkgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTJBO0dVUk1VS0hJIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMEEyQjtHVVJNVUtISSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTJDO0dVUk1VS0hJIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMEEyRDtHVVJNVUtISSBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTJFO0dVUk1VS0hJIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMEEyRjtHVVJNVUtISSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBBMzA7R1VSTVVLSEkgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTMyO0dVUk1VS0hJIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMEEzMztHVVJNVUtISSBMRVRURVIgTExBO0xvOzA7TDswQTMyIDBBM0M7Ozs7Tjs7Ozs7CiswQTM1O0dVUk1VS0hJIExFVFRFUiBWQTtMbzswO0w7Ozs7O047Ozs7OworMEEzNjtHVVJNVUtISSBMRVRURVIgU0hBO0xvOzA7TDswQTM4IDBBM0M7Ozs7Tjs7Ozs7CiswQTM4O0dVUk1VS0hJIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMEEzOTtHVVJNVUtISSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBM0M7R1VSTVVLSEkgU0lHTiBOVUtUQTtNbjs3O05TTTs7Ozs7Tjs7Ozs7CiswQTNFO0dVUk1VS0hJIFZPV0VMIFNJR04gQUE7TWM7MDtMOzs7OztOOzs7OzsKKzBBM0Y7R1VSTVVLSEkgVk9XRUwgU0lHTiBJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQTQwO0dVUk1VS0hJIFZPV0VMIFNJR04gSUk7TWM7MDtMOzs7OztOOzs7OzsKKzBBNDE7R1VSTVVLSEkgVk9XRUwgU0lHTiBVO01uOzA7TlNNOzs7OztOOzs7OzsKKzBBNDI7R1VSTVVLSEkgVk9XRUwgU0lHTiBVVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQTQ3O0dVUk1VS0hJIFZPV0VMIFNJR04gRUU7TW47MDtOU007Ozs7O047Ozs7OworMEE0ODtHVVJNVUtISSBWT1dFTCBTSUdOIEFJO01uOzA7TlNNOzs7OztOOzs7OzsKKzBBNEI7R1VSTVVLSEkgVk9XRUwgU0lHTiBPTztNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQTRDO0dVUk1VS0hJIFZPV0VMIFNJR04gQVU7TW47MDtOU007Ozs7O047Ozs7OworMEE0RDtHVVJNVUtISSBTSUdOIFZJUkFNQTtNbjs5O05TTTs7Ozs7Tjs7Ozs7CiswQTU5O0dVUk1VS0hJIExFVFRFUiBLSEhBO0xvOzA7TDswQTE2IDBBM0M7Ozs7Tjs7Ozs7CiswQTVBO0dVUk1VS0hJIExFVFRFUiBHSEhBO0xvOzA7TDswQTE3IDBBM0M7Ozs7Tjs7Ozs7CiswQTVCO0dVUk1VS0hJIExFVFRFUiBaQTtMbzswO0w7MEExQyAwQTNDOzs7O047Ozs7OworMEE1QztHVVJNVUtISSBMRVRURVIgUlJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTVFO0dVUk1VS0hJIExFVFRFUiBGQTtMbzswO0w7MEEyQiAwQTNDOzs7O047Ozs7OworMEE2NjtHVVJNVUtISSBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswQTY3O0dVUk1VS0hJIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEE2ODtHVVJNVUtISSBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzBBNjk7R1VSTVVLSEkgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzBBNkE7R1VSTVVLSEkgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEE2QjtHVVJNVUtISSBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswQTZDO0dVUk1VS0hJIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMEE2RDtHVVJNVUtISSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEE2RTtHVVJNVUtISSBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMEE2RjtHVVJNVUtISSBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswQTcwO0dVUk1VS0hJIFRJUFBJO01uOzA7TlNNOzs7OztOOzs7OzsKKzBBNzE7R1VSTVVLSEkgQUREQUs7TW47MDtOU007Ozs7O047Ozs7OworMEE3MjtHVVJNVUtISSBJUkk7TG87MDtMOzs7OztOOzs7OzsKKzBBNzM7R1VSTVVLSEkgVVJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTc0O0dVUk1VS0hJIEVLIE9OS0FSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTgxO0dVSkFSQVRJIFNJR04gQ0FORFJBQklORFU7TW47MDtOU007Ozs7O047Ozs7OworMEE4MjtHVUpBUkFUSSBTSUdOIEFOVVNWQVJBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBBODM7R1VKQVJBVEkgU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQTg1O0dVSkFSQVRJIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTg2O0dVSkFSQVRJIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEE4NztHVUpBUkFUSSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEE4ODtHVUpBUkFUSSBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzBBODk7R1VKQVJBVEkgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzBBOEE7R1VKQVJBVEkgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQThCO0dVSkFSQVRJIExFVFRFUiBWT0NBTElDIFI7TG87MDtMOzs7OztOOzs7OzsKKzBBOEQ7R1VKQVJBVEkgVk9XRUwgQ0FORFJBIEU7TG87MDtMOzs7OztOOzs7OzsKKzBBOEY7R1VKQVJBVEkgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzBBOTA7R1VKQVJBVEkgTEVUVEVSIEFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTkxO0dVSkFSQVRJIFZPV0VMIENBTkRSQSBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTkzO0dVSkFSQVRJIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTk0O0dVSkFSQVRJIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMEE5NTtHVUpBUkFUSSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzBBOTY7R1VKQVJBVEkgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMEE5NztHVUpBUkFUSSBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBBOTg7R1VKQVJBVEkgTEVUVEVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMEE5OTtHVUpBUkFUSSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTlBO0dVSkFSQVRJIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEE5QjtHVUpBUkFUSSBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTlDO0dVSkFSQVRJIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMEE5RDtHVUpBUkFUSSBMRVRURVIgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQTlFO0dVSkFSQVRJIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzBBOUY7R1VKQVJBVEkgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMEFBMDtHVUpBUkFUSSBMRVRURVIgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEFBMTtHVUpBUkFUSSBMRVRURVIgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUEyO0dVSkFSQVRJIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUEzO0dVSkFSQVRJIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBBQTQ7R1VKQVJBVEkgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUE1O0dVSkFSQVRJIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBBQTY7R1VKQVJBVEkgTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUE3O0dVSkFSQVRJIExFVFRFUiBESEE7TG87MDtMOzs7OztOOzs7OzsKKzBBQTg7R1VKQVJBVEkgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUFBO0dVSkFSQVRJIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMEFBQjtHVUpBUkFUSSBMRVRURVIgUEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUFDO0dVSkFSQVRJIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMEFBRDtHVUpBUkFUSSBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUFFO0dVSkFSQVRJIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMEFBRjtHVUpBUkFUSSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBBQjA7R1VKQVJBVEkgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUIyO0dVSkFSQVRJIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMEFCMztHVUpBUkFUSSBMRVRURVIgTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUI1O0dVSkFSQVRJIExFVFRFUiBWQTtMbzswO0w7Ozs7O047Ozs7OworMEFCNjtHVUpBUkFUSSBMRVRURVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUI3O0dVSkFSQVRJIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzBBQjg7R1VKQVJBVEkgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUI5O0dVSkFSQVRJIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMEFCQztHVUpBUkFUSSBTSUdOIE5VS1RBO01uOzc7TlNNOzs7OztOOzs7OzsKKzBBQkQ7R1VKQVJBVEkgU0lHTiBBVkFHUkFIQTtMbzswO0w7Ozs7O047Ozs7OworMEFCRTtHVUpBUkFUSSBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQUJGO0dVSkFSQVRJIFZPV0VMIFNJR04gSTtNYzswO0w7Ozs7O047Ozs7OworMEFDMDtHVUpBUkFUSSBWT1dFTCBTSUdOIElJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQUMxO0dVSkFSQVRJIFZPV0VMIFNJR04gVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQUMyO0dVSkFSQVRJIFZPV0VMIFNJR04gVVU7TW47MDtOU007Ozs7O047Ozs7OworMEFDMztHVUpBUkFUSSBWT1dFTCBTSUdOIFZPQ0FMSUMgUjtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQUM0O0dVSkFSQVRJIFZPV0VMIFNJR04gVk9DQUxJQyBSUjtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQUM1O0dVSkFSQVRJIFZPV0VMIFNJR04gQ0FORFJBIEU7TW47MDtOU007Ozs7O047Ozs7OworMEFDNztHVUpBUkFUSSBWT1dFTCBTSUdOIEU7TW47MDtOU007Ozs7O047Ozs7OworMEFDODtHVUpBUkFUSSBWT1dFTCBTSUdOIEFJO01uOzA7TlNNOzs7OztOOzs7OzsKKzBBQzk7R1VKQVJBVEkgVk9XRUwgU0lHTiBDQU5EUkEgTztNYzswO0w7Ozs7O047Ozs7OworMEFDQjtHVUpBUkFUSSBWT1dFTCBTSUdOIE87TWM7MDtMOzs7OztOOzs7OzsKKzBBQ0M7R1VKQVJBVEkgVk9XRUwgU0lHTiBBVTtNYzswO0w7Ozs7O047Ozs7OworMEFDRDtHVUpBUkFUSSBTSUdOIFZJUkFNQTtNbjs5O05TTTs7Ozs7Tjs7Ozs7CiswQUQwO0dVSkFSQVRJIE9NO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUUwO0dVSkFSQVRJIExFVFRFUiBWT0NBTElDIFJSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQUU2O0dVSkFSQVRJIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBBRTc7R1VKQVJBVEkgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswQUU4O0dVSkFSQVRJIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMEFFOTtHVUpBUkFUSSBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEFFQTtHVUpBUkFUSSBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswQUVCO0dVSkFSQVRJIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBBRUM7R1VKQVJBVEkgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswQUVEO0dVSkFSQVRJIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswQUVFO0dVSkFSQVRJIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswQUVGO0dVSkFSQVRJIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBCMDE7T1JJWUEgU0lHTiBDQU5EUkFCSU5EVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQjAyO09SSVlBIFNJR04gQU5VU1ZBUkE7TWM7MDtMOzs7OztOOzs7OzsKKzBCMDM7T1JJWUEgU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQjA1O09SSVlBIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjA2O09SSVlBIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEIwNztPUklZQSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEIwODtPUklZQSBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzBCMDk7T1JJWUEgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzBCMEE7T1JJWUEgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjBCO09SSVlBIExFVFRFUiBWT0NBTElDIFI7TG87MDtMOzs7OztOOzs7OzsKKzBCMEM7T1JJWUEgTEVUVEVSIFZPQ0FMSUMgTDtMbzswO0w7Ozs7O047Ozs7OworMEIwRjtPUklZQSBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMEIxMDtPUklZQSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzBCMTM7T1JJWUEgTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzBCMTQ7T1JJWUEgTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjE1O09SSVlBIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMEIxNjtPUklZQSBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjE3O09SSVlBIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMEIxODtPUklZQSBMRVRURVIgR0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjE5O09SSVlBIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzBCMUE7T1JJWUEgTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjFCO09SSVlBIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMUM7T1JJWUEgTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjFEO09SSVlBIExFVFRFUiBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMUU7T1JJWUEgTEVUVEVSIE5ZQTtMbzswO0w7Ozs7O047Ozs7OworMEIxRjtPUklZQSBMRVRURVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjIwO09SSVlBIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjIxO09SSVlBIExFVFRFUiBEREE7TG87MDtMOzs7OztOOzs7OzsKKzBCMjI7T1JJWUEgTEVUVEVSIERESEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMjM7T1JJWUEgTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMEIyNDtPUklZQSBMRVRURVIgVEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMjU7T1JJWUEgTEVUVEVSIFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEIyNjtPUklZQSBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzBCMjc7T1JJWUEgTEVUVEVSIERIQTtMbzswO0w7Ozs7O047Ozs7OworMEIyODtPUklZQSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzBCMkE7T1JJWUEgTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjJCO09SSVlBIExFVFRFUiBQSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMkM7T1JJWUEgTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjJEO09SSVlBIExFVFRFUiBCSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMkU7T1JJWUEgTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjJGO09SSVlBIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMEIzMDtPUklZQSBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzBCMzI7T1JJWUEgTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjMzO09SSVlBIExFVFRFUiBMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBCMzY7T1JJWUEgTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMEIzNztPUklZQSBMRVRURVIgU1NBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjM4O09SSVlBIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMEIzOTtPUklZQSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCM0M7T1JJWUEgU0lHTiBOVUtUQTtNbjs3O05TTTs7Ozs7Tjs7Ozs7CiswQjNEO09SSVlBIFNJR04gQVZBR1JBSEE7TG87MDtMOzs7OztOOzs7OzsKKzBCM0U7T1JJWUEgVk9XRUwgU0lHTiBBQTtNYzswO0w7Ozs7O047Ozs7OworMEIzRjtPUklZQSBWT1dFTCBTSUdOIEk7TW47MDtOU007Ozs7O047Ozs7OworMEI0MDtPUklZQSBWT1dFTCBTSUdOIElJO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQjQxO09SSVlBIFZPV0VMIFNJR04gVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQjQyO09SSVlBIFZPV0VMIFNJR04gVVU7TW47MDtOU007Ozs7O047Ozs7OworMEI0MztPUklZQSBWT1dFTCBTSUdOIFZPQ0FMSUMgUjtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQjQ3O09SSVlBIFZPV0VMIFNJR04gRTtNYzswO0w7Ozs7O047Ozs7OworMEI0ODtPUklZQSBWT1dFTCBTSUdOIEFJO01jOzA7TDswQjQ3IDBCNTY7Ozs7Tjs7Ozs7CiswQjRCO09SSVlBIFZPV0VMIFNJR04gTztNYzswO0w7MEI0NyAwQjNFOzs7O047Ozs7OworMEI0QztPUklZQSBWT1dFTCBTSUdOIEFVO01jOzA7TDswQjQ3IDBCNTc7Ozs7Tjs7Ozs7CiswQjREO09SSVlBIFNJR04gVklSQU1BO01uOzk7TlNNOzs7OztOOzs7OzsKKzBCNTY7T1JJWUEgQUkgTEVOR1RIIE1BUks7TW47MDtOU007Ozs7O047Ozs7OworMEI1NztPUklZQSBBVSBMRU5HVEggTUFSSztNYzswO0w7Ozs7O047Ozs7OworMEI1QztPUklZQSBMRVRURVIgUlJBO0xvOzA7TDswQjIxIDBCM0M7Ozs7Tjs7Ozs7CiswQjVEO09SSVlBIExFVFRFUiBSSEE7TG87MDtMOzBCMjIgMEIzQzs7OztOOzs7OzsKKzBCNUY7T1JJWUEgTEVUVEVSIFlZQTtMbzswO0w7Ozs7O047Ozs7OworMEI2MDtPUklZQSBMRVRURVIgVk9DQUxJQyBSUjtMbzswO0w7Ozs7O047Ozs7OworMEI2MTtPUklZQSBMRVRURVIgVk9DQUxJQyBMTDtMbzswO0w7Ozs7O047Ozs7OworMEI2NjtPUklZQSBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswQjY3O09SSVlBIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEI2ODtPUklZQSBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzBCNjk7T1JJWUEgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzBCNkE7T1JJWUEgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEI2QjtPUklZQSBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CiswQjZDO09SSVlBIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMEI2RDtPUklZQSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEI2RTtPUklZQSBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMEI2RjtPUklZQSBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswQjcwO09SSVlBIElTU0hBUjtTbzswO0w7Ozs7O047Ozs7OworMEI4MjtUQU1JTCBTSUdOIEFOVVNWQVJBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBCODM7VEFNSUwgU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQjg1O1RBTUlMIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjg2O1RBTUlMIExFVFRFUiBBQTtMbzswO0w7Ozs7O047Ozs7OworMEI4NztUQU1JTCBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEI4ODtUQU1JTCBMRVRURVIgSUk7TG87MDtMOzs7OztOOzs7OzsKKzBCODk7VEFNSUwgTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzBCOEE7VEFNSUwgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjhFO1RBTUlMIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjhGO1RBTUlMIExFVFRFUiBFRTtMbzswO0w7Ozs7O047Ozs7OworMEI5MDtUQU1JTCBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzBCOTI7VEFNSUwgTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzBCOTM7VEFNSUwgTEVUVEVSIE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjk0O1RBTUlMIExFVFRFUiBBVTtMbzswO0w7MEI5MiAwQkQ3Ozs7O047Ozs7OworMEI5NTtUQU1JTCBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzBCOTk7VEFNSUwgTEVUVEVSIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMEI5QTtUQU1JTCBMRVRURVIgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzBCOUM7VEFNSUwgTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQjlFO1RBTUlMIExFVFRFUiBOWUE7TG87MDtMOzs7OztOOzs7OzsKKzBCOUY7VEFNSUwgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMEJBMztUQU1JTCBMRVRURVIgTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkE0O1RBTUlMIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMEJBODtUQU1JTCBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzBCQTk7VEFNSUwgTEVUVEVSIE5OTkE7TG87MDtMOzs7OztOOzs7OzsKKzBCQUE7VEFNSUwgTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkFFO1RBTUlMIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMEJBRjtUQU1JTCBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjA7VEFNSUwgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkIxO1RBTUlMIExFVFRFUiBSUkE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjI7VEFNSUwgTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkIzO1RBTUlMIExFVFRFUiBMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjQ7VEFNSUwgTEVUVEVSIExMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBCQjU7VEFNSUwgTEVUVEVSIFZBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkI3O1RBTUlMIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzBCQjg7VEFNSUwgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQkI5O1RBTUlMIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMEJCRTtUQU1JTCBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQkJGO1RBTUlMIFZPV0VMIFNJR04gSTtNYzswO0w7Ozs7O047Ozs7OworMEJDMDtUQU1JTCBWT1dFTCBTSUdOIElJO01uOzA7TlNNOzs7OztOOzs7OzsKKzBCQzE7VEFNSUwgVk9XRUwgU0lHTiBVO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQkMyO1RBTUlMIFZPV0VMIFNJR04gVVU7TWM7MDtMOzs7OztOOzs7OzsKKzBCQzY7VEFNSUwgVk9XRUwgU0lHTiBFO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQkM3O1RBTUlMIFZPV0VMIFNJR04gRUU7TWM7MDtMOzs7OztOOzs7OzsKKzBCQzg7VEFNSUwgVk9XRUwgU0lHTiBBSTtNYzswO0w7Ozs7O047Ozs7OworMEJDQTtUQU1JTCBWT1dFTCBTSUdOIE87TWM7MDtMOzBCQzYgMEJCRTs7OztOOzs7OzsKKzBCQ0I7VEFNSUwgVk9XRUwgU0lHTiBPTztNYzswO0w7MEJDNyAwQkJFOzs7O047Ozs7OworMEJDQztUQU1JTCBWT1dFTCBTSUdOIEFVO01jOzA7TDswQkM2IDBCRDc7Ozs7Tjs7Ozs7CiswQkNEO1RBTUlMIFNJR04gVklSQU1BO01uOzk7TlNNOzs7OztOOzs7OzsKKzBCRDc7VEFNSUwgQVUgTEVOR1RIIE1BUks7TWM7MDtMOzs7OztOOzs7OzsKKzBCRTc7VEFNSUwgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswQkU4O1RBTUlMIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMEJFOTtUQU1JTCBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEJFQTtUQU1JTCBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswQkVCO1RBTUlMIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBCRUM7VEFNSUwgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswQkVEO1RBTUlMIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswQkVFO1RBTUlMIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswQkVGO1RBTUlMIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBCRjA7VEFNSUwgTlVNQkVSIFRFTjtObzswO0w7Ozs7MTA7Tjs7Ozs7CiswQkYxO1RBTUlMIE5VTUJFUiBPTkUgSFVORFJFRDtObzswO0w7Ozs7MTAwO047Ozs7OworMEJGMjtUQU1JTCBOVU1CRVIgT05FIFRIT1VTQU5EO05vOzA7TDs7OzsxMDAwO047Ozs7OworMEMwMTtURUxVR1UgU0lHTiBDQU5EUkFCSU5EVTtNYzswO0w7Ozs7O047Ozs7OworMEMwMjtURUxVR1UgU0lHTiBBTlVTVkFSQTtNYzswO0w7Ozs7O047Ozs7OworMEMwMztURUxVR1UgU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzA1O1RFTFVHVSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMEMwNjtURUxVR1UgTEVUVEVSIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzA3O1RFTFVHVSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEMwODtURUxVR1UgTEVUVEVSIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzA5O1RFTFVHVSBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMEMwQTtURUxVR1UgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzBCO1RFTFVHVSBMRVRURVIgVk9DQUxJQyBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzBDO1RFTFVHVSBMRVRURVIgVk9DQUxJQyBMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzBFO1RFTFVHVSBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMEMwRjtURUxVR1UgTEVUVEVSIEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzEwO1RFTFVHVSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzBDMTI7VEVMVUdVIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzEzO1RFTFVHVSBMRVRURVIgT087TG87MDtMOzs7OztOOzs7OzsKKzBDMTQ7VEVMVUdVIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMEMxNTtURUxVR1UgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzE2O1RFTFVHVSBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzE3O1RFTFVHVSBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBDMTg7VEVMVUdVIExFVFRFUiBHSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMTk7VEVMVUdVIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzBDMUE7VEVMVUdVIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEMxQjtURUxVR1UgTEVUVEVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMEMxQztURUxVR1UgTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzFEO1RFTFVHVSBMRVRURVIgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzFFO1RFTFVHVSBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzFGO1RFTFVHVSBMRVRURVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzIwO1RFTFVHVSBMRVRURVIgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEMyMTtURUxVR1UgTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMEMyMjtURUxVR1UgTEVUVEVSIERESEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMjM7VEVMVUdVIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBDMjQ7VEVMVUdVIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMEMyNTtURUxVR1UgTEVUVEVSIFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEMyNjtURUxVR1UgTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzI3O1RFTFVHVSBMRVRURVIgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzI4O1RFTFVHVSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzBDMkE7VEVMVUdVIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMEMyQjtURUxVR1UgTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMEMyQztURUxVR1UgTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzJEO1RFTFVHVSBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzJFO1RFTFVHVSBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzBDMkY7VEVMVUdVIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMEMzMDtURUxVR1UgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzMxO1RFTFVHVSBMRVRURVIgUlJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzMyO1RFTFVHVSBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMzM7VEVMVUdVIExFVFRFUiBMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBDMzU7VEVMVUdVIExFVFRFUiBWQTtMbzswO0w7Ozs7O047Ozs7OworMEMzNjtURUxVR1UgTEVUVEVSIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMEMzNztURUxVR1UgTEVUVEVSIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMEMzODtURUxVR1UgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzM5O1RFTFVHVSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDM0U7VEVMVUdVIFZPV0VMIFNJR04gQUE7TW47MDtOU007Ozs7O047Ozs7OworMEMzRjtURUxVR1UgVk9XRUwgU0lHTiBJO01uOzA7TlNNOzs7OztOOzs7OzsKKzBDNDA7VEVMVUdVIFZPV0VMIFNJR04gSUk7TW47MDtOU007Ozs7O047Ozs7OworMEM0MTtURUxVR1UgVk9XRUwgU0lHTiBVO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzQyO1RFTFVHVSBWT1dFTCBTSUdOIFVVO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzQzO1RFTFVHVSBWT1dFTCBTSUdOIFZPQ0FMSUMgUjtNYzswO0w7Ozs7O047Ozs7OworMEM0NDtURUxVR1UgVk9XRUwgU0lHTiBWT0NBTElDIFJSO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzQ2O1RFTFVHVSBWT1dFTCBTSUdOIEU7TW47MDtOU007Ozs7O047Ozs7OworMEM0NztURUxVR1UgVk9XRUwgU0lHTiBFRTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQzQ4O1RFTFVHVSBWT1dFTCBTSUdOIEFJO01uOzA7TlNNOzBDNDYgMEM1Njs7OztOOzs7OzsKKzBDNEE7VEVMVUdVIFZPV0VMIFNJR04gTztNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQzRCO1RFTFVHVSBWT1dFTCBTSUdOIE9PO01uOzA7TlNNOzs7OztOOzs7OzsKKzBDNEM7VEVMVUdVIFZPV0VMIFNJR04gQVU7TW47MDtOU007Ozs7O047Ozs7OworMEM0RDtURUxVR1UgU0lHTiBWSVJBTUE7TW47OTtOU007Ozs7O047Ozs7OworMEM1NTtURUxVR1UgTEVOR1RIIE1BUks7TW47ODQ7TlNNOzs7OztOOzs7OzsKKzBDNTY7VEVMVUdVIEFJIExFTkdUSCBNQVJLO01uOzkxO05TTTs7Ozs7Tjs7Ozs7CiswQzYwO1RFTFVHVSBMRVRURVIgVk9DQUxJQyBSUjtMbzswO0w7Ozs7O047Ozs7OworMEM2MTtURUxVR1UgTEVUVEVSIFZPQ0FMSUMgTEw7TG87MDtMOzs7OztOOzs7OzsKKzBDNjY7VEVMVUdVIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBDNjc7VEVMVUdVIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEM2ODtURUxVR1UgRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswQzY5O1RFTFVHVSBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEM2QTtURUxVR1UgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEM2QjtURUxVR1UgRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMEM2QztURUxVR1UgRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswQzZEO1RFTFVHVSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEM2RTtURUxVR1UgRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzBDNkY7VEVMVUdVIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBDODI7S0FOTkFEQSBTSUdOIEFOVVNWQVJBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzgzO0tBTk5BREEgU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQzg1O0tBTk5BREEgTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzBDODY7S0FOTkFEQSBMRVRURVIgQUE7TG87MDtMOzs7OztOOzs7OzsKKzBDODc7S0FOTkFEQSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEM4ODtLQU5OQURBIExFVFRFUiBJSTtMbzswO0w7Ozs7O047Ozs7OworMEM4OTtLQU5OQURBIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzhBO0tBTk5BREEgTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzhCO0tBTk5BREEgTEVUVEVSIFZPQ0FMSUMgUjtMbzswO0w7Ozs7O047Ozs7OworMEM4QztLQU5OQURBIExFVFRFUiBWT0NBTElDIEw7TG87MDtMOzs7OztOOzs7OzsKKzBDOEU7S0FOTkFEQSBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMEM4RjtLQU5OQURBIExFVFRFUiBFRTtMbzswO0w7Ozs7O047Ozs7OworMEM5MDtLQU5OQURBIExFVFRFUiBBSTtMbzswO0w7Ozs7O047Ozs7OworMEM5MjtLQU5OQURBIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzkzO0tBTk5BREEgTEVUVEVSIE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzk0O0tBTk5BREEgTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzk1O0tBTk5BREEgTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzk2O0tBTk5BREEgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMEM5NztLQU5OQURBIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMEM5ODtLQU5OQURBIExFVFRFUiBHSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDOTk7S0FOTkFEQSBMRVRURVIgTkdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzlBO0tBTk5BREEgTEVUVEVSIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzlCO0tBTk5BREEgTEVUVEVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMEM5QztLQU5OQURBIExFVFRFUiBKQTtMbzswO0w7Ozs7O047Ozs7OworMEM5RDtLQU5OQURBIExFVFRFUiBKSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDOUU7S0FOTkFEQSBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQzlGO0tBTk5BREEgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMENBMDtLQU5OQURBIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0ExO0tBTk5BREEgTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMENBMjtLQU5OQURBIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0EzO0tBTk5BREEgTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMENBNDtLQU5OQURBIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMENBNTtLQU5OQURBIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQTY7S0FOTkFEQSBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzBDQTc7S0FOTkFEQSBMRVRURVIgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0E4O0tBTk5BREEgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0FBO0tBTk5BREEgTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0FCO0tBTk5BREEgTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMENBQztLQU5OQURBIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMENBRDtLQU5OQURBIExFVFRFUiBCSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQUU7S0FOTkFEQSBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzBDQUY7S0FOTkFEQSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzBDQjA7S0FOTkFEQSBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzBDQjE7S0FOTkFEQSBMRVRURVIgUlJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0IyO0tBTk5BREEgTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0IzO0tBTk5BREEgTEVUVEVSIExMQTtMbzswO0w7Ozs7O047Ozs7OworMENCNTtLQU5OQURBIExFVFRFUiBWQTtMbzswO0w7Ozs7O047Ozs7OworMENCNjtLQU5OQURBIExFVFRFUiBTSEE7TG87MDtMOzs7OztOOzs7OzsKKzBDQjc7S0FOTkFEQSBMRVRURVIgU1NBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0I4O0tBTk5BREEgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0I5O0tBTk5BREEgTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0JFO0tBTk5BREEgVk9XRUwgU0lHTiBBQTtNYzswO0w7Ozs7O047Ozs7OworMENCRjtLQU5OQURBIFZPV0VMIFNJR04gSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQ0MwO0tBTk5BREEgVk9XRUwgU0lHTiBJSTtNYzswO0w7MENCRiAwQ0Q1Ozs7O047Ozs7OworMENDMTtLQU5OQURBIFZPV0VMIFNJR04gVTtNYzswO0w7Ozs7O047Ozs7OworMENDMjtLQU5OQURBIFZPV0VMIFNJR04gVVU7TWM7MDtMOzs7OztOOzs7OzsKKzBDQzM7S0FOTkFEQSBWT1dFTCBTSUdOIFZPQ0FMSUMgUjtNYzswO0w7Ozs7O047Ozs7OworMENDNDtLQU5OQURBIFZPV0VMIFNJR04gVk9DQUxJQyBSUjtNYzswO0w7Ozs7O047Ozs7OworMENDNjtLQU5OQURBIFZPV0VMIFNJR04gRTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQ0M3O0tBTk5BREEgVk9XRUwgU0lHTiBFRTtNYzswO0w7MENDNiAwQ0Q1Ozs7O047Ozs7OworMENDODtLQU5OQURBIFZPV0VMIFNJR04gQUk7TWM7MDtMOzBDQzYgMENENjs7OztOOzs7OzsKKzBDQ0E7S0FOTkFEQSBWT1dFTCBTSUdOIE87TWM7MDtMOzBDQzYgMENDMjs7OztOOzs7OzsKKzBDQ0I7S0FOTkFEQSBWT1dFTCBTSUdOIE9PO01jOzA7TDswQ0NBIDBDRDU7Ozs7Tjs7Ozs7CiswQ0NDO0tBTk5BREEgVk9XRUwgU0lHTiBBVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswQ0NEO0tBTk5BREEgU0lHTiBWSVJBTUE7TW47OTtOU007Ozs7O047Ozs7OworMENENTtLQU5OQURBIExFTkdUSCBNQVJLO01jOzA7TDs7Ozs7Tjs7Ozs7CiswQ0Q2O0tBTk5BREEgQUkgTEVOR1RIIE1BUks7TWM7MDtMOzs7OztOOzs7OzsKKzBDREU7S0FOTkFEQSBMRVRURVIgRkE7TG87MDtMOzs7OztOOzs7OzsKKzBDRTA7S0FOTkFEQSBMRVRURVIgVk9DQUxJQyBSUjtMbzswO0w7Ozs7O047Ozs7OworMENFMTtLQU5OQURBIExFVFRFUiBWT0NBTElDIExMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswQ0U2O0tBTk5BREEgRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMENFNztLQU5OQURBIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMENFODtLQU5OQURBIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMENFOTtLQU5OQURBIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswQ0VBO0tBTk5BREEgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMENFQjtLQU5OQURBIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBDRUM7S0FOTkFEQSBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzBDRUQ7S0FOTkFEQSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMENFRTtLQU5OQURBIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswQ0VGO0tBTk5BREEgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMEQwMjtNQUxBWUFMQU0gU0lHTiBBTlVTVkFSQTtNYzswO0w7Ozs7O047Ozs7OworMEQwMztNQUxBWUFMQU0gU0lHTiBWSVNBUkdBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRDA1O01BTEFZQUxBTSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMEQwNjtNQUxBWUFMQU0gTEVUVEVSIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDA3O01BTEFZQUxBTSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMEQwODtNQUxBWUFMQU0gTEVUVEVSIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDA5O01BTEFZQUxBTSBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMEQwQTtNQUxBWUFMQU0gTEVUVEVSIFVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDBCO01BTEFZQUxBTSBMRVRURVIgVk9DQUxJQyBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDBDO01BTEFZQUxBTSBMRVRURVIgVk9DQUxJQyBMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDBFO01BTEFZQUxBTSBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMEQwRjtNQUxBWUFMQU0gTEVUVEVSIEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDEwO01BTEFZQUxBTSBMRVRURVIgQUk7TG87MDtMOzs7OztOOzs7OzsKKzBEMTI7TUFMQVlBTEFNIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDEzO01BTEFZQUxBTSBMRVRURVIgT087TG87MDtMOzs7OztOOzs7OzsKKzBEMTQ7TUFMQVlBTEFNIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMEQxNTtNQUxBWUFMQU0gTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDE2O01BTEFZQUxBTSBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDE3O01BTEFZQUxBTSBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzBEMTg7TUFMQVlBTEFNIExFVFRFUiBHSEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMTk7TUFMQVlBTEFNIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzBEMUE7TUFMQVlBTEFNIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMEQxQjtNQUxBWUFMQU0gTEVUVEVSIENIQTtMbzswO0w7Ozs7O047Ozs7OworMEQxQztNQUxBWUFMQU0gTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDFEO01BTEFZQUxBTSBMRVRURVIgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDFFO01BTEFZQUxBTSBMRVRURVIgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDFGO01BTEFZQUxBTSBMRVRURVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDIwO01BTEFZQUxBTSBMRVRURVIgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEQyMTtNQUxBWUFMQU0gTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMEQyMjtNQUxBWUFMQU0gTEVUVEVSIERESEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMjM7TUFMQVlBTEFNIExFVFRFUiBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEMjQ7TUFMQVlBTEFNIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMEQyNTtNQUxBWUFMQU0gTEVUVEVSIFRIQTtMbzswO0w7Ozs7O047Ozs7OworMEQyNjtNQUxBWUFMQU0gTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDI3O01BTEFZQUxBTSBMRVRURVIgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDI4O01BTEFZQUxBTSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEMkE7TUFMQVlBTEFNIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMEQyQjtNQUxBWUFMQU0gTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMEQyQztNQUxBWUFMQU0gTEVUVEVSIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDJEO01BTEFZQUxBTSBMRVRURVIgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDJFO01BTEFZQUxBTSBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzBEMkY7TUFMQVlBTEFNIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMEQzMDtNQUxBWUFMQU0gTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDMxO01BTEFZQUxBTSBMRVRURVIgUlJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDMyO01BTEFZQUxBTSBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMzM7TUFMQVlBTEFNIExFVFRFUiBMTEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMzQ7TUFMQVlBTEFNIExFVFRFUiBMTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDM1O01BTEFZQUxBTSBMRVRURVIgVkE7TG87MDtMOzs7OztOOzs7OzsKKzBEMzY7TUFMQVlBTEFNIExFVFRFUiBTSEE7TG87MDtMOzs7OztOOzs7OzsKKzBEMzc7TUFMQVlBTEFNIExFVFRFUiBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzBEMzg7TUFMQVlBTEFNIExFVFRFUiBTQTtMbzswO0w7Ozs7O047Ozs7OworMEQzOTtNQUxBWUFMQU0gTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDNFO01BTEFZQUxBTSBWT1dFTCBTSUdOIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRDNGO01BTEFZQUxBTSBWT1dFTCBTSUdOIEk7TWM7MDtMOzs7OztOOzs7OzsKKzBENDA7TUFMQVlBTEFNIFZPV0VMIFNJR04gSUk7TWM7MDtMOzs7OztOOzs7OzsKKzBENDE7TUFMQVlBTEFNIFZPV0VMIFNJR04gVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRDQyO01BTEFZQUxBTSBWT1dFTCBTSUdOIFVVO01uOzA7TlNNOzs7OztOOzs7OzsKKzBENDM7TUFMQVlBTEFNIFZPV0VMIFNJR04gVk9DQUxJQyBSO01uOzA7TlNNOzs7OztOOzs7OzsKKzBENDY7TUFMQVlBTEFNIFZPV0VMIFNJR04gRTtNYzswO0w7Ozs7O047Ozs7OworMEQ0NztNQUxBWUFMQU0gVk9XRUwgU0lHTiBFRTtNYzswO0w7Ozs7O047Ozs7OworMEQ0ODtNQUxBWUFMQU0gVk9XRUwgU0lHTiBBSTtNYzswO0w7Ozs7O047Ozs7OworMEQ0QTtNQUxBWUFMQU0gVk9XRUwgU0lHTiBPO01jOzA7TDswRDQ2IDBEM0U7Ozs7Tjs7Ozs7CiswRDRCO01BTEFZQUxBTSBWT1dFTCBTSUdOIE9PO01jOzA7TDswRDQ3IDBEM0U7Ozs7Tjs7Ozs7CiswRDRDO01BTEFZQUxBTSBWT1dFTCBTSUdOIEFVO01jOzA7TDswRDQ2IDBENTc7Ozs7Tjs7Ozs7CiswRDREO01BTEFZQUxBTSBTSUdOIFZJUkFNQTtNbjs5O05TTTs7Ozs7Tjs7Ozs7CiswRDU3O01BTEFZQUxBTSBBVSBMRU5HVEggTUFSSztNYzswO0w7Ozs7O047Ozs7OworMEQ2MDtNQUxBWUFMQU0gTEVUVEVSIFZPQ0FMSUMgUlI7TG87MDtMOzs7OztOOzs7OzsKKzBENjE7TUFMQVlBTEFNIExFVFRFUiBWT0NBTElDIExMO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDY2O01BTEFZQUxBTSBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswRDY3O01BTEFZQUxBTSBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzBENjg7TUFMQVlBTEFNIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMEQ2OTtNQUxBWUFMQU0gRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzBENkE7TUFMQVlBTEFNIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzBENkI7TUFMQVlBTEFNIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBENkM7TUFMQVlBTEFNIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMEQ2RDtNQUxBWUFMQU0gRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzBENkU7TUFMQVlBTEFNIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswRDZGO01BTEFZQUxBTSBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswRDgyO1NJTkhBTEEgU0lHTiBBTlVTVkFSQVlBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRDgzO1NJTkhBTEEgU0lHTiBWSVNBUkdBWUE7TWM7MDtMOzs7OztOOzs7OzsKKzBEODU7U0lOSEFMQSBMRVRURVIgQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDg2O1NJTkhBTEEgTEVUVEVSIEFBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEODc7U0lOSEFMQSBMRVRURVIgQUVZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ4ODtTSU5IQUxBIExFVFRFUiBBRUVZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ4OTtTSU5IQUxBIExFVFRFUiBJWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEOEE7U0lOSEFMQSBMRVRURVIgSUlZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ4QjtTSU5IQUxBIExFVFRFUiBVWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEOEM7U0lOSEFMQSBMRVRURVIgVVVZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ4RDtTSU5IQUxBIExFVFRFUiBJUlVZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ4RTtTSU5IQUxBIExFVFRFUiBJUlVVWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEOEY7U0lOSEFMQSBMRVRURVIgSUxVWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEOTA7U0lOSEFMQSBMRVRURVIgSUxVVVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDkxO1NJTkhBTEEgTEVUVEVSIEVZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ5MjtTSU5IQUxBIExFVFRFUiBFRVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDkzO1NJTkhBTEEgTEVUVEVSIEFJWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEOTQ7U0lOSEFMQSBMRVRURVIgT1lBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRDk1O1NJTkhBTEEgTEVUVEVSIE9PWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEOTY7U0lOSEFMQSBMRVRURVIgQVVZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ5QTtTSU5IQUxBIExFVFRFUiBBTFBBUFJBQU5BIEtBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEOUI7U0lOSEFMQSBMRVRURVIgTUFIQUFQUkFBTkEgS0FZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ5QztTSU5IQUxBIExFVFRFUiBBTFBBUFJBQU5BIEdBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEOUQ7U0lOSEFMQSBMRVRURVIgTUFIQUFQUkFBTkEgR0FZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMEQ5RTtTSU5IQUxBIExFVFRFUiBLQU5UQUpBIE5BQVNJS1lBWUE7TG87MDtMOzs7OztOOzs7OzsKKzBEOUY7U0lOSEFMQSBMRVRURVIgU0FOWUFLQSBHQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREEwO1NJTkhBTEEgTEVUVEVSIEFMUEFQUkFBTkEgQ0FZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERBMTtTSU5IQUxBIExFVFRFUiBNQUhBQVBSQUFOQSBDQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREEyO1NJTkhBTEEgTEVUVEVSIEFMUEFQUkFBTkEgSkFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERBMztTSU5IQUxBIExFVFRFUiBNQUhBQVBSQUFOQSBKQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREE0O1NJTkhBTEEgTEVUVEVSIFRBQUxVSkEgTkFBU0lLWUFZQTtMbzswO0w7Ozs7O047Ozs7OworMERBNTtTSU5IQUxBIExFVFRFUiBUQUFMVUpBIFNBTllPT0dBIE5BQUtTSUtZQVlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREE2O1NJTkhBTEEgTEVUVEVSIFNBTllBS0EgSkFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERBNztTSU5IQUxBIExFVFRFUiBBTFBBUFJBQU5BIFRUQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREE4O1NJTkhBTEEgTEVUVEVSIE1BSEFBUFJBQU5BIFRUQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREE5O1NJTkhBTEEgTEVUVEVSIEFMUEFQUkFBTkEgRERBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQUE7U0lOSEFMQSBMRVRURVIgTUFIQUFQUkFBTkEgRERBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQUI7U0lOSEFMQSBMRVRURVIgTVVVUkRIQUpBIE5BWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQUM7U0lOSEFMQSBMRVRURVIgU0FOWUFLQSBEREFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERBRDtTSU5IQUxBIExFVFRFUiBBTFBBUFJBQU5BIFRBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQUU7U0lOSEFMQSBMRVRURVIgTUFIQUFQUkFBTkEgVEFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERBRjtTSU5IQUxBIExFVFRFUiBBTFBBUFJBQU5BIERBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQjA7U0lOSEFMQSBMRVRURVIgTUFIQUFQUkFBTkEgREFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERCMTtTSU5IQUxBIExFVFRFUiBEQU5UQUpBIE5BWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQjM7U0lOSEFMQSBMRVRURVIgU0FOWUFLQSBEQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREI0O1NJTkhBTEEgTEVUVEVSIEFMUEFQUkFBTkEgUEFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERCNTtTSU5IQUxBIExFVFRFUiBNQUhBQVBSQUFOQSBQQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREI2O1NJTkhBTEEgTEVUVEVSIEFMUEFQUkFBTkEgQkFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERCNztTSU5IQUxBIExFVFRFUiBNQUhBQVBSQUFOQSBCQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREI4O1NJTkhBTEEgTEVUVEVSIE1BWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQjk7U0lOSEFMQSBMRVRURVIgQU1CQSBCQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREJBO1NJTkhBTEEgTEVUVEVSIFlBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQkI7U0lOSEFMQSBMRVRURVIgUkFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERCRDtTSU5IQUxBIExFVFRFUiBEQU5UQUpBIExBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQzA7U0lOSEFMQSBMRVRURVIgVkFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERDMTtTSU5IQUxBIExFVFRFUiBUQUFMVUpBIFNBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQzI7U0lOSEFMQSBMRVRURVIgTVVVUkRIQUpBIFNBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQzM7U0lOSEFMQSBMRVRURVIgREFOVEFKQSBTQVlBTk5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswREM0O1NJTkhBTEEgTEVUVEVSIEhBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQzU7U0lOSEFMQSBMRVRURVIgTVVVUkRIQUpBIExBWUFOTkE7TG87MDtMOzs7OztOOzs7OzsKKzBEQzY7U0lOSEFMQSBMRVRURVIgRkFZQU5OQTtMbzswO0w7Ozs7O047Ozs7OworMERDQTtTSU5IQUxBIFNJR04gQUwtTEFLVU5BO01uOzk7TlNNOzs7OztOOzs7OzsKKzBEQ0Y7U0lOSEFMQSBWT1dFTCBTSUdOIEFFTEEtUElMTEE7TWM7MDtMOzs7OztOOzs7OzsKKzBERDA7U0lOSEFMQSBWT1dFTCBTSUdOIEtFVFRJIEFFREEtUElMTEE7TWM7MDtMOzs7OztOOzs7OzsKKzBERDE7U0lOSEFMQSBWT1dFTCBTSUdOIERJR0EgQUVEQS1QSUxMQTtNYzswO0w7Ozs7O047Ozs7OworMEREMjtTSU5IQUxBIFZPV0VMIFNJR04gS0VUVEkgSVMtUElMTEE7TW47MDtOU007Ozs7O047Ozs7OworMEREMztTSU5IQUxBIFZPV0VMIFNJR04gRElHQSBJUy1QSUxMQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswREQ0O1NJTkhBTEEgVk9XRUwgU0lHTiBLRVRUSSBQQUEtUElMTEE7TW47MDtOU007Ozs7O047Ozs7OworMERENjtTSU5IQUxBIFZPV0VMIFNJR04gRElHQSBQQUEtUElMTEE7TW47MDtOU007Ozs7O047Ozs7OworMEREODtTSU5IQUxBIFZPV0VMIFNJR04gR0FFVFRBLVBJTExBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswREQ5O1NJTkhBTEEgVk9XRUwgU0lHTiBLT01CVVZBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswRERBO1NJTkhBTEEgVk9XRUwgU0lHTiBESUdBIEtPTUJVVkE7TWM7MDtMOzBERDkgMERDQTs7OztOOzs7OzsKKzBEREI7U0lOSEFMQSBWT1dFTCBTSUdOIEtPTUJVIERFS0E7TWM7MDtMOzs7OztOOzs7OzsKKzBEREM7U0lOSEFMQSBWT1dFTCBTSUdOIEtPTUJVVkEgSEFBIEFFTEEtUElMTEE7TWM7MDtMOzBERDkgMERDRjs7OztOOzs7OzsKKzBEREQ7U0lOSEFMQSBWT1dFTCBTSUdOIEtPTUJVVkEgSEFBIERJR0EgQUVMQS1QSUxMQTtNYzswO0w7MEREQyAwRENBOzs7O047Ozs7OworMERERTtTSU5IQUxBIFZPV0VMIFNJR04gS09NQlVWQSBIQUEgR0FZQU5VS0lUVEE7TWM7MDtMOzBERDkgMERERjs7OztOOzs7OzsKKzBEREY7U0lOSEFMQSBWT1dFTCBTSUdOIEdBWUFOVUtJVFRBO01jOzA7TDs7Ozs7Tjs7Ozs7CiswREYyO1NJTkhBTEEgVk9XRUwgU0lHTiBESUdBIEdBRVRUQS1QSUxMQTtNYzswO0w7Ozs7O047Ozs7OworMERGMztTSU5IQUxBIFZPV0VMIFNJR04gRElHQSBHQVlBTlVLSVRUQTtNYzswO0w7Ozs7O047Ozs7OworMERGNDtTSU5IQUxBIFBVTkNUVUFUSU9OIEtVTkREQUxJWUE7UG87MDtMOzs7OztOOzs7OzsKKzBFMDE7VEhBSSBDSEFSQUNURVIgS08gS0FJO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBLTyBLQUk7Ozs7CiswRTAyO1RIQUkgQ0hBUkFDVEVSIEtITyBLSEFJO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBLSE8gS0hBSTs7OzsKKzBFMDM7VEhBSSBDSEFSQUNURVIgS0hPIEtIVUFUO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBLSE8gS0hVQVQ7Ozs7CiswRTA0O1RIQUkgQ0hBUkFDVEVSIEtITyBLSFdBSTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgS0hPIEtIV0FJOzs7OworMEUwNTtUSEFJIENIQVJBQ1RFUiBLSE8gS0hPTjtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgS0hPIEtIT047Ozs7CiswRTA2O1RIQUkgQ0hBUkFDVEVSIEtITyBSQUtIQU5HO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBLSE8gUkFLSEFORzs7OzsKKzBFMDc7VEhBSSBDSEFSQUNURVIgTkdPIE5HVTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgTkdPIE5HVTs7OzsKKzBFMDg7VEhBSSBDSEFSQUNURVIgQ0hPIENIQU47TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIENITyBDSEFOOzs7OworMEUwOTtUSEFJIENIQVJBQ1RFUiBDSE8gQ0hJTkc7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIENITyBDSElORzs7OzsKKzBFMEE7VEhBSSBDSEFSQUNURVIgQ0hPIENIQU5HO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBDSE8gQ0hBTkc7Ozs7CiswRTBCO1RIQUkgQ0hBUkFDVEVSIFNPIFNPO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBTTyBTTzs7OzsKKzBFMEM7VEhBSSBDSEFSQUNURVIgQ0hPIENIT0U7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIENITyBDSE9FOzs7OworMEUwRDtUSEFJIENIQVJBQ1RFUiBZTyBZSU5HO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBZTyBZSU5HOzs7OworMEUwRTtUSEFJIENIQVJBQ1RFUiBETyBDSEFEQTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgRE8gQ0hBREE7Ozs7CiswRTBGO1RIQUkgQ0hBUkFDVEVSIFRPIFBBVEFLO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBUTyBQQVRBSzs7OzsKKzBFMTA7VEhBSSBDSEFSQUNURVIgVEhPIFRIQU47TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFRITyBUSEFOOzs7OworMEUxMTtUSEFJIENIQVJBQ1RFUiBUSE8gTkFOR01PTlRITztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgVEhPIE5BTkdNT05USE87Ozs7CiswRTEyO1RIQUkgQ0hBUkFDVEVSIFRITyBQSFVUSEFPO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBUSE8gUEhVVEhBTzs7OzsKKzBFMTM7VEhBSSBDSEFSQUNURVIgTk8gTkVOO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBOTyBORU47Ozs7CiswRTE0O1RIQUkgQ0hBUkFDVEVSIERPIERFSztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgRE8gREVLOzs7OworMEUxNTtUSEFJIENIQVJBQ1RFUiBUTyBUQU87TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFRPIFRBTzs7OzsKKzBFMTY7VEhBSSBDSEFSQUNURVIgVEhPIFRIVU5HO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBUSE8gVEhVTkc7Ozs7CiswRTE3O1RIQUkgQ0hBUkFDVEVSIFRITyBUSEFIQU47TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFRITyBUSEFIQU47Ozs7CiswRTE4O1RIQUkgQ0hBUkFDVEVSIFRITyBUSE9ORztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgVEhPIFRIT05HOzs7OworMEUxOTtUSEFJIENIQVJBQ1RFUiBOTyBOVTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgTk8gTlU7Ozs7CiswRTFBO1RIQUkgQ0hBUkFDVEVSIEJPIEJBSU1BSTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgQk8gQkFJTUFJOzs7OworMEUxQjtUSEFJIENIQVJBQ1RFUiBQTyBQTEE7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFBPIFBMQTs7OzsKKzBFMUM7VEhBSSBDSEFSQUNURVIgUEhPIFBIVU5HO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBQSE8gUEhVTkc7Ozs7CiswRTFEO1RIQUkgQ0hBUkFDVEVSIEZPIEZBO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBGTyBGQTs7OzsKKzBFMUU7VEhBSSBDSEFSQUNURVIgUEhPIFBIQU47TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFBITyBQSEFOOzs7OworMEUxRjtUSEFJIENIQVJBQ1RFUiBGTyBGQU47TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEZPIEZBTjs7OzsKKzBFMjA7VEhBSSBDSEFSQUNURVIgUEhPIFNBTVBIQU87TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFBITyBTQU1QSEFPOzs7OworMEUyMTtUSEFJIENIQVJBQ1RFUiBNTyBNQTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgTU8gTUE7Ozs7CiswRTIyO1RIQUkgQ0hBUkFDVEVSIFlPIFlBSztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgWU8gWUFLOzs7OworMEUyMztUSEFJIENIQVJBQ1RFUiBSTyBSVUE7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFJPIFJVQTs7OzsKKzBFMjQ7VEhBSSBDSEFSQUNURVIgUlU7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFJVOzs7OworMEUyNTtUSEFJIENIQVJBQ1RFUiBMTyBMSU5HO0xvOzA7TDs7Ozs7TjtUSEFJIExFVFRFUiBMTyBMSU5HOzs7OworMEUyNjtUSEFJIENIQVJBQ1RFUiBMVTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgTFU7Ozs7CiswRTI3O1RIQUkgQ0hBUkFDVEVSIFdPIFdBRU47TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFdPIFdBRU47Ozs7CiswRTI4O1RIQUkgQ0hBUkFDVEVSIFNPIFNBTEE7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFNPIFNBTEE7Ozs7CiswRTI5O1RIQUkgQ0hBUkFDVEVSIFNPIFJVU0k7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIFNPIFJVU0k7Ozs7CiswRTJBO1RIQUkgQ0hBUkFDVEVSIFNPIFNVQTtMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgU08gU1VBOzs7OworMEUyQjtUSEFJIENIQVJBQ1RFUiBITyBISVA7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIEhPIEhJUDs7OzsKKzBFMkM7VEhBSSBDSEFSQUNURVIgTE8gQ0hVTEE7TG87MDtMOzs7OztOO1RIQUkgTEVUVEVSIExPIENIVUxBOzs7OworMEUyRDtUSEFJIENIQVJBQ1RFUiBPIEFORztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgTyBBTkc7Ozs7CiswRTJFO1RIQUkgQ0hBUkFDVEVSIEhPIE5PS0hVSztMbzswO0w7Ozs7O047VEhBSSBMRVRURVIgSE8gTk9LIEhVSzs7OzsKKzBFMkY7VEhBSSBDSEFSQUNURVIgUEFJWUFOTk9JO0xvOzA7TDs7Ozs7TjtUSEFJIFBBSSBZQU4gTk9JO3BhaXlhbiBub2k7OzsKKzBFMzA7VEhBSSBDSEFSQUNURVIgU0FSQSBBO0xvOzA7TDs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBBOzs7OworMEUzMTtUSEFJIENIQVJBQ1RFUiBNQUkgSEFOLUFLQVQ7TW47MDtOU007Ozs7O047VEhBSSBWT1dFTCBTSUdOIE1BSSBIQU4tQUtBVDs7OzsKKzBFMzI7VEhBSSBDSEFSQUNURVIgU0FSQSBBQTtMbzswO0w7Ozs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgQUE7Ozs7CiswRTMzO1RIQUkgQ0hBUkFDVEVSIFNBUkEgQU07TG87MDtMOzxjb21wYXQ+IDBFNEQgMEUzMjs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIEFNOzs7OworMEUzNDtUSEFJIENIQVJBQ1RFUiBTQVJBIEk7TW47MDtOU007Ozs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgSTs7OzsKKzBFMzU7VEhBSSBDSEFSQUNURVIgU0FSQSBJSTtNbjswO05TTTs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBJSTs7OzsKKzBFMzY7VEhBSSBDSEFSQUNURVIgU0FSQSBVRTtNbjswO05TTTs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBVRTs7OzsKKzBFMzc7VEhBSSBDSEFSQUNURVIgU0FSQSBVRUU7TW47MDtOU007Ozs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgVUVFO3NhcmEgdXVlOzs7CiswRTM4O1RIQUkgQ0hBUkFDVEVSIFNBUkEgVTtNbjsxMDM7TlNNOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIFU7Ozs7CiswRTM5O1RIQUkgQ0hBUkFDVEVSIFNBUkEgVVU7TW47MTAzO05TTTs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBVVTs7OzsKKzBFM0E7VEhBSSBDSEFSQUNURVIgUEhJTlRIVTtNbjs5O05TTTs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gUEhJTlRIVTs7OzsKKzBFM0Y7VEhBSSBDVVJSRU5DWSBTWU1CT0wgQkFIVDtTYzswO0VUOzs7OztOO1RIQUkgQkFIVCBTSUdOOzs7OworMEU0MDtUSEFJIENIQVJBQ1RFUiBTQVJBIEU7TG87MDtMOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIEU7Ozs7CiswRTQxO1RIQUkgQ0hBUkFDVEVSIFNBUkEgQUU7TG87MDtMOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIEFFOzs7OworMEU0MjtUSEFJIENIQVJBQ1RFUiBTQVJBIE87TG87MDtMOzs7OztOO1RIQUkgVk9XRUwgU0lHTiBTQVJBIE87Ozs7CiswRTQzO1RIQUkgQ0hBUkFDVEVSIFNBUkEgQUkgTUFJTVVBTjtMbzswO0w7Ozs7O047VEhBSSBWT1dFTCBTSUdOIFNBUkEgTUFJIE1VQU47c2FyYSBhaSBtYWkgbXVhbjs7OworMEU0NDtUSEFJIENIQVJBQ1RFUiBTQVJBIEFJIE1BSU1BTEFJO0xvOzA7TDs7Ozs7TjtUSEFJIFZPV0VMIFNJR04gU0FSQSBNQUkgTUFMQUk7c2FyYSBhaSBtYWkgbWFsYWk7OzsKKzBFNDU7VEhBSSBDSEFSQUNURVIgTEFLS0hBTkdZQU87TG87MDtMOzs7OztOO1RIQUkgTEFLIEtIQU5HIFlBTztsYWtraGFuZyB5YW87OzsKKzBFNDY7VEhBSSBDSEFSQUNURVIgTUFJWUFNT0s7TG07MDtMOzs7OztOO1RIQUkgTUFJIFlBTU9LO21haSB5YW1vazs7OworMEU0NztUSEFJIENIQVJBQ1RFUiBNQUlUQUlLSFU7TW47MDtOU007Ozs7O047VEhBSSBWT1dFTCBTSUdOIE1BSSBUQUkgS0hVO21haSB0YWlraHU7OzsKKzBFNDg7VEhBSSBDSEFSQUNURVIgTUFJIEVLO01uOzEwNztOU007Ozs7O047VEhBSSBUT05FIE1BSSBFSzs7OzsKKzBFNDk7VEhBSSBDSEFSQUNURVIgTUFJIFRITztNbjsxMDc7TlNNOzs7OztOO1RIQUkgVE9ORSBNQUkgVEhPOzs7OworMEU0QTtUSEFJIENIQVJBQ1RFUiBNQUkgVFJJO01uOzEwNztOU007Ozs7O047VEhBSSBUT05FIE1BSSBUUkk7Ozs7CiswRTRCO1RIQUkgQ0hBUkFDVEVSIE1BSSBDSEFUVEFXQTtNbjsxMDc7TlNNOzs7OztOO1RIQUkgVE9ORSBNQUkgQ0hBVFRBV0E7Ozs7CiswRTRDO1RIQUkgQ0hBUkFDVEVSIFRIQU5USEFLSEFUO01uOzA7TlNNOzs7OztOO1RIQUkgVEhBTlRIQUtIQVQ7Ozs7CiswRTREO1RIQUkgQ0hBUkFDVEVSIE5JS0hBSElUO01uOzA7TlNNOzs7OztOO1RIQUkgTklLS0hBSElUO25pa2toYWhpdDs7OworMEU0RTtUSEFJIENIQVJBQ1RFUiBZQU1BS0tBTjtNbjswO05TTTs7Ozs7TjtUSEFJIFlBTUFLS0FOOzs7OworMEU0RjtUSEFJIENIQVJBQ1RFUiBGT05HTUFOO1BvOzA7TDs7Ozs7TjtUSEFJIEZPTkdNQU47Ozs7CiswRTUwO1RIQUkgRElHSVQgWkVSTztOZDswO0w7OzA7MDswO047Ozs7OworMEU1MTtUSEFJIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEU1MjtUSEFJIERJR0lUIFRXTztOZDswO0w7OzI7MjsyO047Ozs7OworMEU1MztUSEFJIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CiswRTU0O1RIQUkgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEU1NTtUSEFJIERJR0lUIEZJVkU7TmQ7MDtMOzs1OzU7NTtOOzs7OzsKKzBFNTY7VEhBSSBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzBFNTc7VEhBSSBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEU1ODtUSEFJIERJR0lUIEVJR0hUO05kOzA7TDs7ODs4Ozg7Tjs7Ozs7CiswRTU5O1RIQUkgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMEU1QTtUSEFJIENIQVJBQ1RFUiBBTkdLSEFOS0hVO1BvOzA7TDs7Ozs7TjtUSEFJIEFOR0tIQU5LSFU7Ozs7CiswRTVCO1RIQUkgQ0hBUkFDVEVSIEtIT01VVDtQbzswO0w7Ozs7O047VEhBSSBLSE9NVVQ7Ozs7CiswRTgxO0xBTyBMRVRURVIgS087TG87MDtMOzs7OztOOzs7OzsKKzBFODI7TEFPIExFVFRFUiBLSE8gU1VORztMbzswO0w7Ozs7O047Ozs7OworMEU4NDtMQU8gTEVUVEVSIEtITyBUQU07TG87MDtMOzs7OztOOzs7OzsKKzBFODc7TEFPIExFVFRFUiBOR087TG87MDtMOzs7OztOOzs7OzsKKzBFODg7TEFPIExFVFRFUiBDTztMbzswO0w7Ozs7O047Ozs7OworMEU4QTtMQU8gTEVUVEVSIFNPIFRBTTtMbzswO0w7Ozs7O047Ozs7OworMEU4RDtMQU8gTEVUVEVSIE5ZTztMbzswO0w7Ozs7O047Ozs7OworMEU5NDtMQU8gTEVUVEVSIERPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTk1O0xBTyBMRVRURVIgVE87TG87MDtMOzs7OztOOzs7OzsKKzBFOTY7TEFPIExFVFRFUiBUSE8gU1VORztMbzswO0w7Ozs7O047Ozs7OworMEU5NztMQU8gTEVUVEVSIFRITyBUQU07TG87MDtMOzs7OztOOzs7OzsKKzBFOTk7TEFPIExFVFRFUiBOTztMbzswO0w7Ozs7O047Ozs7OworMEU5QTtMQU8gTEVUVEVSIEJPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRTlCO0xBTyBMRVRURVIgUE87TG87MDtMOzs7OztOOzs7OzsKKzBFOUM7TEFPIExFVFRFUiBQSE8gU1VORztMbzswO0w7Ozs7O047Ozs7OworMEU5RDtMQU8gTEVUVEVSIEZPIFRBTTtMbzswO0w7Ozs7O047Ozs7OworMEU5RTtMQU8gTEVUVEVSIFBITyBUQU07TG87MDtMOzs7OztOOzs7OzsKKzBFOUY7TEFPIExFVFRFUiBGTyBTVU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUExO0xBTyBMRVRURVIgTU87TG87MDtMOzs7OztOOzs7OzsKKzBFQTI7TEFPIExFVFRFUiBZTztMbzswO0w7Ozs7O047Ozs7OworMEVBMztMQU8gTEVUVEVSIExPIExJTkc7TG87MDtMOzs7OztOOzs7OzsKKzBFQTU7TEFPIExFVFRFUiBMTyBMT09UO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUE3O0xBTyBMRVRURVIgV087TG87MDtMOzs7OztOOzs7OzsKKzBFQUE7TEFPIExFVFRFUiBTTyBTVU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUFCO0xBTyBMRVRURVIgSE8gU1VORztMbzswO0w7Ozs7O047Ozs7OworMEVBRDtMQU8gTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzBFQUU7TEFPIExFVFRFUiBITyBUQU07TG87MDtMOzs7OztOOzs7OzsKKzBFQUY7TEFPIEVMTElQU0lTO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUIwO0xBTyBWT1dFTCBTSUdOIEE7TG87MDtMOzs7OztOOzs7OzsKKzBFQjE7TEFPIFZPV0VMIFNJR04gTUFJIEtBTjtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRUIyO0xBTyBWT1dFTCBTSUdOIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUIzO0xBTyBWT1dFTCBTSUdOIEFNO0xvOzA7TDs8Y29tcGF0PiAwRUNEIDBFQjI7Ozs7Tjs7Ozs7CiswRUI0O0xBTyBWT1dFTCBTSUdOIEk7TW47MDtOU007Ozs7O047Ozs7OworMEVCNTtMQU8gVk9XRUwgU0lHTiBJSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRUI2O0xBTyBWT1dFTCBTSUdOIFk7TW47MDtOU007Ozs7O047Ozs7OworMEVCNztMQU8gVk9XRUwgU0lHTiBZWTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRUI4O0xBTyBWT1dFTCBTSUdOIFU7TW47MTE4O05TTTs7Ozs7Tjs7Ozs7CiswRUI5O0xBTyBWT1dFTCBTSUdOIFVVO01uOzExODtOU007Ozs7O047Ozs7OworMEVCQjtMQU8gVk9XRUwgU0lHTiBNQUkgS09OO01uOzA7TlNNOzs7OztOOzs7OzsKKzBFQkM7TEFPIFNFTUlWT1dFTCBTSUdOIExPO01uOzA7TlNNOzs7OztOOzs7OzsKKzBFQkQ7TEFPIFNFTUlWT1dFTCBTSUdOIE5ZTztMbzswO0w7Ozs7O047Ozs7OworMEVDMDtMQU8gVk9XRUwgU0lHTiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUMxO0xBTyBWT1dFTCBTSUdOIEVJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRUMyO0xBTyBWT1dFTCBTSUdOIE87TG87MDtMOzs7OztOOzs7OzsKKzBFQzM7TEFPIFZPV0VMIFNJR04gQVk7TG87MDtMOzs7OztOOzs7OzsKKzBFQzQ7TEFPIFZPV0VMIFNJR04gQUk7TG87MDtMOzs7OztOOzs7OzsKKzBFQzY7TEFPIEtPIExBO0xtOzA7TDs7Ozs7Tjs7Ozs7CiswRUM4O0xBTyBUT05FIE1BSSBFSztNbjsxMjI7TlNNOzs7OztOOzs7OzsKKzBFQzk7TEFPIFRPTkUgTUFJIFRITztNbjsxMjI7TlNNOzs7OztOOzs7OzsKKzBFQ0E7TEFPIFRPTkUgTUFJIFRJO01uOzEyMjtOU007Ozs7O047Ozs7OworMEVDQjtMQU8gVE9ORSBNQUkgQ0FUQVdBO01uOzEyMjtOU007Ozs7O047Ozs7OworMEVDQztMQU8gQ0FOQ0VMTEFUSU9OIE1BUks7TW47MDtOU007Ozs7O047Ozs7OworMEVDRDtMQU8gTklHR0FISVRBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBFRDA7TEFPIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzBFRDE7TEFPIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMEVEMjtMQU8gRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswRUQzO0xBTyBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMEVENDtMQU8gRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMEVENTtMQU8gRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMEVENjtMQU8gRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CiswRUQ3O0xBTyBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMEVEODtMQU8gRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzBFRDk7TEFPIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzBFREM7TEFPIEhPIE5PO0xvOzA7TDs8Y29tcGF0PiAwRUFCIDBFOTk7Ozs7Tjs7Ozs7CiswRUREO0xBTyBITyBNTztMbzswO0w7PGNvbXBhdD4gMEVBQiAwRUExOzs7O047Ozs7OworMEYwMDtUSUJFVEFOIFNZTExBQkxFIE9NO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjAxO1RJQkVUQU4gTUFSSyBHVEVSIFlJRyBNR08gVFJVTkNBVEVEIEE7U287MDtMOzs7OztOOzt0ZXIgeWlrIGdvIGEgdGh1bmc7OzsKKzBGMDI7VElCRVRBTiBNQVJLIEdURVIgWUlHIE1HTyAtVU0gUk5BTSBCQ0FEIE1BO1NvOzA7TDs7Ozs7Tjs7dGVyIHlpayBnbyB3dW0gbmFtIGNoZXkgbWE7OzsKKzBGMDM7VElCRVRBTiBNQVJLIEdURVIgWUlHIE1HTyAtVU0gR1RFUiBUU0hFRyBNQTtTbzswO0w7Ozs7O047O3RlciB5aWsgZ28gd3VtIHRlciB0c2VrIG1hOzs7CiswRjA0O1RJQkVUQU4gTUFSSyBJTklUSUFMIFlJRyBNR08gTURVTiBNQTtQbzswO0w7Ozs7O047VElCRVRBTiBTSU5HTEUgT1JOQU1FTlQ7eWlrIGdvIGR1biBtYTs7OworMEYwNTtUSUJFVEFOIE1BUksgQ0xPU0lORyBZSUcgTUdPIFNHQUIgTUE7UG87MDtMOzs7OztOOzt5aWsgZ28ga2FiIG1hOzs7CiswRjA2O1RJQkVUQU4gTUFSSyBDQVJFVCBZSUcgTUdPIFBIVVIgU0hBRCBNQTtQbzswO0w7Ozs7O047O3lpayBnbyBwdXIgc2hleSBtYTs7OworMEYwNztUSUJFVEFOIE1BUksgWUlHIE1HTyBUU0hFRyBTSEFEIE1BO1BvOzA7TDs7Ozs7Tjs7eWlrIGdvIHRzZWsgc2hleSBtYTs7OworMEYwODtUSUJFVEFOIE1BUksgU0JSVUwgU0hBRDtQbzswO0w7Ozs7O047VElCRVRBTiBSR1lBTlNIQUQ7ZHJ1bCBzaGV5Ozs7CiswRjA5O1RJQkVUQU4gTUFSSyBCU0tVUiBZSUcgTUdPO1BvOzA7TDs7Ozs7Tjs7a3VyIHlpayBnbzs7OworMEYwQTtUSUJFVEFOIE1BUksgQktBLSBTSE9HIFlJRyBNR087UG87MDtMOzs7OztOOztrYSBzaG8geWlrIGdvOzs7CiswRjBCO1RJQkVUQU4gTUFSSyBJTlRFUlNZTExBQklDIFRTSEVHO1BvOzA7TDs7Ozs7TjtUSUJFVEFOIFRTRUc7dHNlazs7OworMEYwQztUSUJFVEFOIE1BUksgREVMSU1JVEVSIFRTSEVHIEJTVEFSO1BvOzA7TDs8bm9CcmVhaz4gMEYwQjs7OztOOzt0c2VrIHRhcjs7OworMEYwRDtUSUJFVEFOIE1BUksgU0hBRDtQbzswO0w7Ozs7O047VElCRVRBTiBTSEFEO3NoZXk7OzsKKzBGMEU7VElCRVRBTiBNQVJLIE5ZSVMgU0hBRDtQbzswO0w7Ozs7O047VElCRVRBTiBET1VCTEUgU0hBRDtueWkgc2hleTs7OworMEYwRjtUSUJFVEFOIE1BUksgVFNIRUcgU0hBRDtQbzswO0w7Ozs7O047O3RzZWsgc2hleTs7OworMEYxMDtUSUJFVEFOIE1BUksgTllJUyBUU0hFRyBTSEFEO1BvOzA7TDs7Ozs7Tjs7bnlpIHRzZWsgc2hleTs7OworMEYxMTtUSUJFVEFOIE1BUksgUklOIENIRU4gU1BVTkdTIFNIQUQ7UG87MDtMOzs7OztOO1RJQkVUQU4gUklOQ0hBTlBIVU5HU0hBRDtyaW5jaGVuIHB1bmcgc2hleTs7OworMEYxMjtUSUJFVEFOIE1BUksgUkdZQSBHUkFNIFNIQUQ7UG87MDtMOzs7OztOOztneWEgdHJhbSBzaGV5Ozs7CiswRjEzO1RJQkVUQU4gTUFSSyBDQVJFVCAtRFpVRCBSVEFHUyBNRSBMT05HIENBTjtTbzswO0w7Ozs7O047O2R6dSB0YSBtZSBsb25nIGNoZW47OzsKKzBGMTQ7VElCRVRBTiBNQVJLIEdURVIgVFNIRUc7U287MDtMOzs7OztOO1RJQkVUQU4gQ09NTUE7dGVyIHRzZWs7OzsKKzBGMTU7VElCRVRBTiBMT0dPVFlQRSBTSUdOIENIQUQgUlRBR1M7U287MDtMOzs7OztOOztjaGUgdGE7OzsKKzBGMTY7VElCRVRBTiBMT0dPVFlQRSBTSUdOIExIQUcgUlRBR1M7U287MDtMOzs7OztOOztobGFrIHRhOzs7CiswRjE3O1RJQkVUQU4gQVNUUk9MT0dJQ0FMIFNJR04gU0dSQSBHQ0FOIC1DSEFSIFJUQUdTO1NvOzA7TDs7Ozs7Tjs7dHJhY2hlbiBjaGFyIHRhOzs7CiswRjE4O1RJQkVUQU4gQVNUUk9MT0dJQ0FMIFNJR04gLUtIWVVEIFBBO01uOzIyMDtOU007Ozs7O047O2t5dSBwYTs7OworMEYxOTtUSUJFVEFOIEFTVFJPTE9HSUNBTCBTSUdOIFNET05HIFRTSFVHUztNbjsyMjA7TlNNOzs7OztOOztkb25nIHRzdTs7OworMEYxQTtUSUJFVEFOIFNJR04gUkRFTCBES0FSIEdDSUc7U287MDtMOzs7OztOOztkZWthIGNoaWc7OzsKKzBGMUI7VElCRVRBTiBTSUdOIFJERUwgREtBUiBHTllJUztTbzswO0w7Ozs7O047O2Rla2EgbnlpOzs7CiswRjFDO1RJQkVUQU4gU0lHTiBSREVMIERLQVIgR1NVTTtTbzswO0w7Ozs7O047O2Rla2Egc3VtOzs7CiswRjFEO1RJQkVUQU4gU0lHTiBSREVMIE5BRyBHQ0lHO1NvOzA7TDs7Ozs7Tjs7ZGVuYSBjaGlnOzs7CiswRjFFO1RJQkVUQU4gU0lHTiBSREVMIE5BRyBHTllJUztTbzswO0w7Ozs7O047O2RlbmEgbnlpOzs7CiswRjFGO1RJQkVUQU4gU0lHTiBSREVMIERLQVIgUkRFTCBOQUc7U287MDtMOzs7OztOOztkZWthIGRlbmE7OzsKKzBGMjA7VElCRVRBTiBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CiswRjIxO1RJQkVUQU4gRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CiswRjIyO1RJQkVUQU4gRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CiswRjIzO1RJQkVUQU4gRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzBGMjQ7VElCRVRBTiBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CiswRjI1O1RJQkVUQU4gRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMEYyNjtUSUJFVEFOIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMEYyNztUSUJFVEFOIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CiswRjI4O1RJQkVUQU4gRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzBGMjk7VElCRVRBTiBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CiswRjJBO1RJQkVUQU4gRElHSVQgSEFMRiBPTkU7Tm87MDtMOzs7OztOOzs7OzsKKzBGMkI7VElCRVRBTiBESUdJVCBIQUxGIFRXTztObzswO0w7Ozs7O047Ozs7OworMEYyQztUSUJFVEFOIERJR0lUIEhBTEYgVEhSRUU7Tm87MDtMOzs7OztOOzs7OzsKKzBGMkQ7VElCRVRBTiBESUdJVCBIQUxGIEZPVVI7Tm87MDtMOzs7OztOOzs7OzsKKzBGMkU7VElCRVRBTiBESUdJVCBIQUxGIEZJVkU7Tm87MDtMOzs7OztOOzs7OzsKKzBGMkY7VElCRVRBTiBESUdJVCBIQUxGIFNJWDtObzswO0w7Ozs7O047Ozs7OworMEYzMDtUSUJFVEFOIERJR0lUIEhBTEYgU0VWRU47Tm87MDtMOzs7OztOOzs7OzsKKzBGMzE7VElCRVRBTiBESUdJVCBIQUxGIEVJR0hUO05vOzA7TDs7Ozs7Tjs7Ozs7CiswRjMyO1RJQkVUQU4gRElHSVQgSEFMRiBOSU5FO05vOzA7TDs7Ozs7Tjs7Ozs7CiswRjMzO1RJQkVUQU4gRElHSVQgSEFMRiBaRVJPO05vOzA7TDs7Ozs7Tjs7Ozs7CiswRjM0O1RJQkVUQU4gTUFSSyBCU0RVUyBSVEFHUztTbzswO0w7Ozs7O047O2R1IHRhOzs7CiswRjM1O1RJQkVUQU4gTUFSSyBOR0FTIEJaVU5HIE5ZSSBaTEE7TW47MjIwO05TTTs7Ozs7TjtUSUJFVEFOIEhPTk9SSUZJQyBVTkRFUiBSSU5HO25nZSB6dW5nIG55aSBkYTs7OworMEYzNjtUSUJFVEFOIE1BUksgQ0FSRVQgLURaVUQgUlRBR1MgQlpISSBNSUcgQ0FOO1NvOzA7TDs7Ozs7Tjs7ZHp1IHRhIHNoaSBtaWcgY2hlbjs7OworMEYzNztUSUJFVEFOIE1BUksgTkdBUyBCWlVORyBTR09SIFJUQUdTO01uOzIyMDtOU007Ozs7O047VElCRVRBTiBVTkRFUiBSSU5HO25nZSB6dW5nIGdvciB0YTs7OworMEYzODtUSUJFVEFOIE1BUksgQ0hFIE1HTztTbzswO0w7Ozs7O047O2NoZSBnbzs7OworMEYzOTtUSUJFVEFOIE1BUksgVFNBIC1QSFJVO01uOzIxNjtOU007Ozs7O047VElCRVRBTiBMRU5JVElPTiBNQVJLO3RzYSB0cnU7OzsKKzBGM0E7VElCRVRBTiBNQVJLIEdVRyBSVEFHUyBHWU9OO1BzOzA7T047Ozs7O047O2d1ZyB0YSB5dW47OzsKKzBGM0I7VElCRVRBTiBNQVJLIEdVRyBSVEFHUyBHWUFTO1BlOzA7T047Ozs7O047O2d1ZyB0YSB5ZTs7OworMEYzQztUSUJFVEFOIE1BUksgQU5HIEtIQU5HIEdZT047UHM7MDtPTjs7Ozs7TjtUSUJFVEFOIExFRlQgQlJBQ0U7YW5nIGthbmcgeXVuOzs7CiswRjNEO1RJQkVUQU4gTUFSSyBBTkcgS0hBTkcgR1lBUztQZTswO09OOzs7OztOO1RJQkVUQU4gUklHSFQgQlJBQ0U7YW5nIGthbmcgeWU7OzsKKzBGM0U7VElCRVRBTiBTSUdOIFlBUiBUU0hFUztNYzswO0w7Ozs7O047O3lhciB0c2U7OzsKKzBGM0Y7VElCRVRBTiBTSUdOIE1BUiBUU0hFUztNYzswO0w7Ozs7O047O21hciB0c2U7OzsKKzBGNDA7VElCRVRBTiBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNDE7VElCRVRBTiBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjQyO1RJQkVUQU4gTEVUVEVSIEdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjQzO1RJQkVUQU4gTEVUVEVSIEdIQTtMbzswO0w7MEY0MiAwRkI3Ozs7O047Ozs7OworMEY0NDtUSUJFVEFOIExFVFRFUiBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNDU7VElCRVRBTiBMRVRURVIgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzBGNDY7VElCRVRBTiBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjQ3O1RJQkVUQU4gTEVUVEVSIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjQ5O1RJQkVUQU4gTEVUVEVSIE5ZQTtMbzswO0w7Ozs7O047Ozs7OworMEY0QTtUSUJFVEFOIExFVFRFUiBUVEE7TG87MDtMOzs7OztOO1RJQkVUQU4gTEVUVEVSIFJFVkVSU0VEIFRBOzs7OworMEY0QjtUSUJFVEFOIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7TjtUSUJFVEFOIExFVFRFUiBSRVZFUlNFRCBUSEE7Ozs7CiswRjRDO1RJQkVUQU4gTEVUVEVSIEREQTtMbzswO0w7Ozs7O047VElCRVRBTiBMRVRURVIgUkVWRVJTRUQgREE7Ozs7CiswRjREO1RJQkVUQU4gTEVUVEVSIERESEE7TG87MDtMOzBGNEMgMEZCNzs7OztOOzs7OzsKKzBGNEU7VElCRVRBTiBMRVRURVIgTk5BO0xvOzA7TDs7Ozs7TjtUSUJFVEFOIExFVFRFUiBSRVZFUlNFRCBOQTs7OzsKKzBGNEY7VElCRVRBTiBMRVRURVIgVEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNTA7VElCRVRBTiBMRVRURVIgVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjUxO1RJQkVUQU4gTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjUyO1RJQkVUQU4gTEVUVEVSIERIQTtMbzswO0w7MEY1MSAwRkI3Ozs7O047Ozs7OworMEY1MztUSUJFVEFOIExFVFRFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMEY1NDtUSUJFVEFOIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMEY1NTtUSUJFVEFOIExFVFRFUiBQSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNTY7VElCRVRBTiBMRVRURVIgQkE7TG87MDtMOzs7OztOOzs7OzsKKzBGNTc7VElCRVRBTiBMRVRURVIgQkhBO0xvOzA7TDswRjU2IDBGQjc7Ozs7Tjs7Ozs7CiswRjU4O1RJQkVUQU4gTEVUVEVSIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjU5O1RJQkVUQU4gTEVUVEVSIFRTQTtMbzswO0w7Ozs7O047Ozs7OworMEY1QTtUSUJFVEFOIExFVFRFUiBUU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjVCO1RJQkVUQU4gTEVUVEVSIERaQTtMbzswO0w7Ozs7O047Ozs7OworMEY1QztUSUJFVEFOIExFVFRFUiBEWkhBO0xvOzA7TDswRjVCIDBGQjc7Ozs7Tjs7Ozs7CiswRjVEO1RJQkVUQU4gTEVUVEVSIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjVFO1RJQkVUQU4gTEVUVEVSIFpIQTtMbzswO0w7Ozs7O047Ozs7OworMEY1RjtUSUJFVEFOIExFVFRFUiBaQTtMbzswO0w7Ozs7O047Ozs7OworMEY2MDtUSUJFVEFOIExFVFRFUiAtQTtMbzswO0w7Ozs7O047VElCRVRBTiBMRVRURVIgQUE7Ozs7CiswRjYxO1RJQkVUQU4gTEVUVEVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjYyO1RJQkVUQU4gTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Kjs7OworMEY2MztUSUJFVEFOIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMEY2NDtUSUJFVEFOIExFVFRFUiBTSEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNjU7VElCRVRBTiBMRVRURVIgU1NBO0xvOzA7TDs7Ozs7TjtUSUJFVEFOIExFVFRFUiBSRVZFUlNFRCBTSEE7Ozs7CiswRjY2O1RJQkVUQU4gTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjY3O1RJQkVUQU4gTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiswRjY4O1RJQkVUQU4gTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzBGNjk7VElCRVRBTiBMRVRURVIgS1NTQTtMbzswO0w7MEY0MCAwRkI1Ozs7O047Ozs7OworMEY2QTtUSUJFVEFOIExFVFRFUiBGSVhFRC1GT1JNIFJBO0xvOzA7TDs7Ozs7Tjs7Kjs7OworMEY3MTtUSUJFVEFOIFZPV0VMIFNJR04gQUE7TW47MTI5O05TTTs7Ozs7Tjs7Ozs7CiswRjcyO1RJQkVUQU4gVk9XRUwgU0lHTiBJO01uOzEzMDtOU007Ozs7O047Ozs7OworMEY3MztUSUJFVEFOIFZPV0VMIFNJR04gSUk7TW47MDtOU007MEY3MSAwRjcyOzs7O047Ozs7OworMEY3NDtUSUJFVEFOIFZPV0VMIFNJR04gVTtNbjsxMzI7TlNNOzs7OztOOzs7OzsKKzBGNzU7VElCRVRBTiBWT1dFTCBTSUdOIFVVO01uOzA7TlNNOzBGNzEgMEY3NDs7OztOOzs7OzsKKzBGNzY7VElCRVRBTiBWT1dFTCBTSUdOIFZPQ0FMSUMgUjtNbjswO05TTTswRkIyIDBGODA7Ozs7Tjs7Ozs7CiswRjc3O1RJQkVUQU4gVk9XRUwgU0lHTiBWT0NBTElDIFJSO01uOzA7TlNNOzxjb21wYXQ+IDBGQjIgMEY4MTs7OztOOzs7OzsKKzBGNzg7VElCRVRBTiBWT1dFTCBTSUdOIFZPQ0FMSUMgTDtNbjswO05TTTswRkIzIDBGODA7Ozs7Tjs7Ozs7CiswRjc5O1RJQkVUQU4gVk9XRUwgU0lHTiBWT0NBTElDIExMO01uOzA7TlNNOzxjb21wYXQ+IDBGQjMgMEY4MTs7OztOOzs7OzsKKzBGN0E7VElCRVRBTiBWT1dFTCBTSUdOIEU7TW47MTMwO05TTTs7Ozs7Tjs7Ozs7CiswRjdCO1RJQkVUQU4gVk9XRUwgU0lHTiBFRTtNbjsxMzA7TlNNOzs7OztOO1RJQkVUQU4gVk9XRUwgU0lHTiBBSTs7OzsKKzBGN0M7VElCRVRBTiBWT1dFTCBTSUdOIE87TW47MTMwO05TTTs7Ozs7Tjs7Ozs7CiswRjdEO1RJQkVUQU4gVk9XRUwgU0lHTiBPTztNbjsxMzA7TlNNOzs7OztOO1RJQkVUQU4gVk9XRUwgU0lHTiBBVTs7OzsKKzBGN0U7VElCRVRBTiBTSUdOIFJKRVMgU1UgTkdBIFJPO01uOzA7TlNNOzs7OztOO1RJQkVUQU4gQU5VU1ZBUkE7amUgc3UgbmdhIHJvOzs7CiswRjdGO1RJQkVUQU4gU0lHTiBSTkFNIEJDQUQ7TWM7MDtMOzs7OztOO1RJQkVUQU4gVklTQVJHQTtuYW0gY2hleTs7OworMEY4MDtUSUJFVEFOIFZPV0VMIFNJR04gUkVWRVJTRUQgSTtNbjsxMzA7TlNNOzs7OztOO1RJQkVUQU4gVk9XRUwgU0lHTiBTSE9SVCBJOzs7OworMEY4MTtUSUJFVEFOIFZPV0VMIFNJR04gUkVWRVJTRUQgSUk7TW47MDtOU007MEY3MSAwRjgwOzs7O047Ozs7OworMEY4MjtUSUJFVEFOIFNJR04gTllJIFpMQSBOQUEgREE7TW47MjMwO05TTTs7Ozs7TjtUSUJFVEFOIENBTkRSQUJJTkRVIFdJVEggT1JOQU1FTlQ7bnlpIGRhIG5hIGRhOzs7CiswRjgzO1RJQkVUQU4gU0lHTiBTTkEgTERBTjtNbjsyMzA7TlNNOzs7OztOO1RJQkVUQU4gQ0FORFJBQklORFU7bmFuIGRlOzs7CiswRjg0O1RJQkVUQU4gTUFSSyBIQUxBTlRBO01uOzk7TlNNOzs7OztOO1RJQkVUQU4gVklSQU1BOzs7OworMEY4NTtUSUJFVEFOIE1BUksgUEFMVVRBO1BvOzA7TDs7Ozs7TjtUSUJFVEFOIENIVUNIRU5ZSUdFOzs7OworMEY4NjtUSUJFVEFOIFNJR04gTENJIFJUQUdTO01uOzIzMDtOU007Ozs7O047O2ppIHRhOzs7CiswRjg3O1RJQkVUQU4gU0lHTiBZQU5HIFJUQUdTO01uOzIzMDtOU007Ozs7O047O3lhbmcgdGE7OzsKKzBGODg7VElCRVRBTiBTSUdOIExDRSBUU0EgQ0FOO0xvOzA7TDs7Ozs7Tjs7Y2hlIHRzYSBjaGVuOzs7CiswRjg5O1RJQkVUQU4gU0lHTiBNQ0hVIENBTjtMbzswO0w7Ozs7O047O2NodSBjaGVuOzs7CiswRjhBO1RJQkVUQU4gU0lHTiBHUlUgQ0FOIFJHWUlOR1M7TG87MDtMOzs7OztOOzt0cnUgY2hlbiBnaW5nOzs7CiswRjhCO1RJQkVUQU4gU0lHTiBHUlUgTUVEIFJHWUlOR1M7TG87MDtMOzs7OztOOzt0cnUgbWUgZ2luZzs7OworMEY5MDtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgS0E7TW47MDtOU007Ozs7O047Ozs7OworMEY5MTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgS0hBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGOTI7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEdBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGOTM7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEdIQTtNbjswO05TTTswRjkyIDBGQjc7Ozs7Tjs7Ozs7CiswRjk0O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBOR0E7TW47MDtOU007Ozs7O047Ozs7OworMEY5NTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgQ0E7TW47MDtOU007Ozs7O047Ozs7OworMEY5NjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgQ0hBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGOTc7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEpBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGOTk7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIE5ZQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRjlBO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBUVEE7TW47MDtOU007Ozs7O047Ozs7OworMEY5QjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgVFRIQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRjlDO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBEREE7TW47MDtOU007Ozs7O047Ozs7OworMEY5RDtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgRERIQTtNbjswO05TTTswRjlDIDBGQjc7Ozs7Tjs7Ozs7CiswRjlFO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBOTkE7TW47MDtOU007Ozs7O047Ozs7OworMEY5RjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgVEE7TW47MDtOU007Ozs7O047Ozs7OworMEZBMDtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgVEhBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGQTE7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGQTI7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERIQTtNbjswO05TTTswRkExIDBGQjc7Ozs7Tjs7Ozs7CiswRkEzO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBOQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkE0O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBQQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkE1O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBQSEE7TW47MDtOU007Ozs7O047Ozs7OworMEZBNjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgQkE7TW47MDtOU007Ozs7O047Ozs7OworMEZBNztUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgQkhBO01uOzA7TlNNOzBGQTYgMEZCNzs7OztOOzs7OzsKKzBGQTg7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIE1BO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGQTk7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFRTQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkFBO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBUU0hBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGQUI7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIERaQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkFDO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBEWkhBO01uOzA7TlNNOzBGQUIgMEZCNzs7OztOOzs7OzsKKzBGQUQ7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFdBO01uOzA7TlNNOzs7OztOOzsqOzs7CiswRkFFO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBaSEE7TW47MDtOU007Ozs7O047Ozs7OworMEZBRjtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgWkE7TW47MDtOU007Ozs7O047Ozs7OworMEZCMDtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgLUE7TW47MDtOU007Ozs7O047Ozs7OworMEZCMTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgWUE7TW47MDtOU007Ozs7O047Oyo7OzsKKzBGQjI7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFJBO01uOzA7TlNNOzs7OztOOzsqOzs7CiswRkIzO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBMQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CiswRkI0O1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBTSEE7TW47MDtOU007Ozs7O047Ozs7OworMEZCNTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgU1NBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGQjY7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIFNBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGQjc7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEhBO01uOzA7TlNNOzs7OztOOzs7OzsKKzBGQjg7VElCRVRBTiBTVUJKT0lORUQgTEVUVEVSIEE7TW47MDtOU007Ozs7O047Ozs7OworMEZCOTtUSUJFVEFOIFNVQkpPSU5FRCBMRVRURVIgS1NTQTtNbjswO05TTTswRjkwIDBGQjU7Ozs7Tjs7Ozs7CiswRkJBO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBGSVhFRC1GT1JNIFdBO01uOzA7TlNNOzs7OztOOzsqOzs7CiswRkJCO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBGSVhFRC1GT1JNIFlBO01uOzA7TlNNOzs7OztOOzsqOzs7CiswRkJDO1RJQkVUQU4gU1VCSk9JTkVEIExFVFRFUiBGSVhFRC1GT1JNIFJBO01uOzA7TlNNOzs7OztOOzsqOzs7CiswRkJFO1RJQkVUQU4gS1UgUlUgS0hBO1NvOzA7TDs7Ozs7Tjs7a3VydWthOzs7CiswRkJGO1RJQkVUQU4gS1UgUlUgS0hBIEJaSEkgTUlHIENBTjtTbzswO0w7Ozs7O047O2t1cnVrYSBzaGkgbWlrIGNoZW47OzsKKzBGQzA7VElCRVRBTiBDQU5USUxMQVRJT04gU0lHTiBIRUFWWSBCRUFUO1NvOzA7TDs7Ozs7Tjs7Ozs7CiswRkMxO1RJQkVUQU4gQ0FOVElMTEFUSU9OIFNJR04gTElHSFQgQkVBVDtTbzswO0w7Ozs7O047Ozs7OworMEZDMjtUSUJFVEFOIENBTlRJTExBVElPTiBTSUdOIENBTkcgVEUtVTtTbzswO0w7Ozs7O047O2NoYW5nIHR5dTs7OworMEZDMztUSUJFVEFOIENBTlRJTExBVElPTiBTSUdOIFNCVUIgLUNIQUw7U287MDtMOzs7OztOOztidWIgY2hleTs7OworMEZDNDtUSUJFVEFOIFNZTUJPTCBEUklMIEJVO1NvOzA7TDs7Ozs7Tjs7ZHJpbGJ1Ozs7CiswRkM1O1RJQkVUQU4gU1lNQk9MIFJETyBSSkU7U287MDtMOzs7OztOOztkb3JqZTs7OworMEZDNjtUSUJFVEFOIFNZTUJPTCBQQURNQSBHREFOO01uOzIyMDtOU007Ozs7O047O3BlbWEgZGVuOzs7CiswRkM3O1RJQkVUQU4gU1lNQk9MIFJETyBSSkUgUkdZQSBHUkFNO1NvOzA7TDs7Ozs7Tjs7ZG9yamUgZ3lhIGRyYW07OzsKKzBGQzg7VElCRVRBTiBTWU1CT0wgUEhVUiBQQTtTbzswO0w7Ozs7O047O3BodXJiYTs7OworMEZDOTtUSUJFVEFOIFNZTUJPTCBOT1IgQlU7U287MDtMOzs7OztOOztub3JidTs7OworMEZDQTtUSUJFVEFOIFNZTUJPTCBOT1IgQlUgTllJUyAtS0hZSUw7U287MDtMOzs7OztOOztub3JidSBueWkga2h5aTs7OworMEZDQjtUSUJFVEFOIFNZTUJPTCBOT1IgQlUgR1NVTSAtS0hZSUw7U287MDtMOzs7OztOOztub3JidSBzdW0ga2h5aTs7OworMEZDQztUSUJFVEFOIFNZTUJPTCBOT1IgQlUgQlpISSAtS0hZSUw7U287MDtMOzs7OztOOztub3JidSBzaGkga2h5aTs7OworMEZDRjtUSUJFVEFOIFNJR04gUkRFTCBOQUcgR1NVTTtTbzswO0w7Ozs7O047Ozs7OworMTAwMDtNWUFOTUFSIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMTAwMTtNWUFOTUFSIExFVFRFUiBLSEE7TG87MDtMOzs7OztOOzs7OzsKKzEwMDI7TVlBTk1BUiBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzEwMDM7TVlBTk1BUiBMRVRURVIgR0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDA0O01ZQU5NQVIgTEVUVEVSIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMTAwNTtNWUFOTUFSIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMTAwNjtNWUFOTUFSIExFVFRFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzEwMDc7TVlBTk1BUiBMRVRURVIgSkE7TG87MDtMOzs7OztOOzs7OzsKKzEwMDg7TVlBTk1BUiBMRVRURVIgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDA5O01ZQU5NQVIgTEVUVEVSIE5ZQTtMbzswO0w7Ozs7O047Ozs7OworMTAwQTtNWUFOTUFSIExFVFRFUiBOTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDBCO01ZQU5NQVIgTEVUVEVSIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMTAwQztNWUFOTUFSIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDBEO01ZQU5NQVIgTEVUVEVSIEREQTtMbzswO0w7Ozs7O047Ozs7OworMTAwRTtNWUFOTUFSIExFVFRFUiBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDBGO01ZQU5NQVIgTEVUVEVSIE5OQTtMbzswO0w7Ozs7O047Ozs7OworMTAxMDtNWUFOTUFSIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMTAxMTtNWUFOTUFSIExFVFRFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzEwMTI7TVlBTk1BUiBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzEwMTM7TVlBTk1BUiBMRVRURVIgREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDE0O01ZQU5NQVIgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDE1O01ZQU5NQVIgTEVUVEVSIFBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDE2O01ZQU5NQVIgTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMTAxNztNWUFOTUFSIExFVFRFUiBCQTtMbzswO0w7Ozs7O047Ozs7OworMTAxODtNWUFOTUFSIExFVFRFUiBCSEE7TG87MDtMOzs7OztOOzs7OzsKKzEwMTk7TVlBTk1BUiBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzEwMUE7TVlBTk1BUiBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzEwMUI7TVlBTk1BUiBMRVRURVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzEwMUM7TVlBTk1BUiBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzEwMUQ7TVlBTk1BUiBMRVRURVIgV0E7TG87MDtMOzs7OztOOzs7OzsKKzEwMUU7TVlBTk1BUiBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzEwMUY7TVlBTk1BUiBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzEwMjA7TVlBTk1BUiBMRVRURVIgTExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDIxO01ZQU5NQVIgTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzEwMjM7TVlBTk1BUiBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMTAyNDtNWUFOTUFSIExFVFRFUiBJSTtMbzswO0w7Ozs7O047Ozs7OworMTAyNTtNWUFOTUFSIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDI2O01ZQU5NQVIgTEVUVEVSIFVVO0xvOzA7TDsxMDI1IDEwMkU7Ozs7Tjs7Ozs7CisxMDI3O01ZQU5NQVIgTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzEwMjk7TVlBTk1BUiBMRVRURVIgTztMbzswO0w7Ozs7O047Ozs7OworMTAyQTtNWUFOTUFSIExFVFRFUiBBVTtMbzswO0w7Ozs7O047Ozs7OworMTAyQztNWUFOTUFSIFZPV0VMIFNJR04gQUE7TWM7MDtMOzs7OztOOzs7OzsKKzEwMkQ7TVlBTk1BUiBWT1dFTCBTSUdOIEk7TW47MDtOU007Ozs7O047Ozs7OworMTAyRTtNWUFOTUFSIFZPV0VMIFNJR04gSUk7TW47MDtOU007Ozs7O047Ozs7OworMTAyRjtNWUFOTUFSIFZPV0VMIFNJR04gVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxMDMwO01ZQU5NQVIgVk9XRUwgU0lHTiBVVTtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxMDMxO01ZQU5NQVIgVk9XRUwgU0lHTiBFO01jOzA7TDs7Ozs7Tjs7Ozs7CisxMDMyO01ZQU5NQVIgVk9XRUwgU0lHTiBBSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxMDM2O01ZQU5NQVIgU0lHTiBBTlVTVkFSQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxMDM3O01ZQU5NQVIgU0lHTiBET1QgQkVMT1c7TW47NztOU007Ozs7O047Ozs7OworMTAzODtNWUFOTUFSIFNJR04gVklTQVJHQTtNYzswO0w7Ozs7O047Ozs7OworMTAzOTtNWUFOTUFSIFNJR04gVklSQU1BO01uOzk7TlNNOzs7OztOOzs7OzsKKzEwNDA7TVlBTk1BUiBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CisxMDQxO01ZQU5NQVIgRElHSVQgT05FO05kOzA7TDs7MTsxOzE7Tjs7Ozs7CisxMDQyO01ZQU5NQVIgRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CisxMDQzO01ZQU5NQVIgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzEwNDQ7TVlBTk1BUiBESUdJVCBGT1VSO05kOzA7TDs7NDs0OzQ7Tjs7Ozs7CisxMDQ1O01ZQU5NQVIgRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMTA0NjtNWUFOTUFSIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMTA0NztNWUFOTUFSIERJR0lUIFNFVkVOO05kOzA7TDs7Nzs3Ozc7Tjs7Ozs7CisxMDQ4O01ZQU5NQVIgRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzEwNDk7TVlBTk1BUiBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CisxMDRBO01ZQU5NQVIgU0lHTiBMSVRUTEUgU0VDVElPTjtQbzswO0w7Ozs7O047Ozs7OworMTA0QjtNWUFOTUFSIFNJR04gU0VDVElPTjtQbzswO0w7Ozs7O047Ozs7OworMTA0QztNWUFOTUFSIFNZTUJPTCBMT0NBVElWRTtQbzswO0w7Ozs7O047Ozs7OworMTA0RDtNWUFOTUFSIFNZTUJPTCBDT01QTEVURUQ7UG87MDtMOzs7OztOOzs7OzsKKzEwNEU7TVlBTk1BUiBTWU1CT0wgQUZPUkVNRU5USU9ORUQ7UG87MDtMOzs7OztOOzs7OzsKKzEwNEY7TVlBTk1BUiBTWU1CT0wgR0VOSVRJVkU7UG87MDtMOzs7OztOOzs7OzsKKzEwNTA7TVlBTk1BUiBMRVRURVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMDUxO01ZQU5NQVIgTEVUVEVSIFNTQTtMbzswO0w7Ozs7O047Ozs7OworMTA1MjtNWUFOTUFSIExFVFRFUiBWT0NBTElDIFI7TG87MDtMOzs7OztOOzs7OzsKKzEwNTM7TVlBTk1BUiBMRVRURVIgVk9DQUxJQyBSUjtMbzswO0w7Ozs7O047Ozs7OworMTA1NDtNWUFOTUFSIExFVFRFUiBWT0NBTElDIEw7TG87MDtMOzs7OztOOzs7OzsKKzEwNTU7TVlBTk1BUiBMRVRURVIgVk9DQUxJQyBMTDtMbzswO0w7Ozs7O047Ozs7OworMTA1NjtNWUFOTUFSIFZPV0VMIFNJR04gVk9DQUxJQyBSO01jOzA7TDs7Ozs7Tjs7Ozs7CisxMDU3O01ZQU5NQVIgVk9XRUwgU0lHTiBWT0NBTElDIFJSO01jOzA7TDs7Ozs7Tjs7Ozs7CisxMDU4O01ZQU5NQVIgVk9XRUwgU0lHTiBWT0NBTElDIEw7TW47MDtOU007Ozs7O047Ozs7OworMTA1OTtNWUFOTUFSIFZPV0VMIFNJR04gVk9DQUxJQyBMTDtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxMEEwO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEFOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQTE7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgQkFOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQTI7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgR0FOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQTM7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgRE9OO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQTQ7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgRU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBBNTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBWSU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBBNjtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBaRU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBBNztHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBUQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBBODtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBJTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEE5O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEtBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEFBO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIExBUztMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEFCO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIE1BTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEFDO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIE5BUjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEFEO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIE9OO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQUU7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgUEFSO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQUY7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgWkhBUjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEIwO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFJBRTtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEIxO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFNBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEIyO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFRBUjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEIzO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIFVOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQjQ7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgUEhBUjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEI1O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEtIQVI7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBCNjtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBHSEFOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQjc7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgUUFSO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQjg7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgU0hJTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEI5O0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIENISU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBCQTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBDQU47THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBCQjtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBKSUw7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBCQztHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBDSUw7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBCRDtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBDSEFSO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQkU7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgWEFOO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQkY7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgSkhBTjtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEMwO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEhBRTtMdTswO0w7Ozs7O047O0todXRzdXJpOzs7CisxMEMxO0dFT1JHSUFOIENBUElUQUwgTEVUVEVSIEhFO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQzI7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgSElFO0x1OzA7TDs7Ozs7Tjs7S2h1dHN1cmk7OzsKKzEwQzM7R0VPUkdJQU4gQ0FQSVRBTCBMRVRURVIgV0U7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBDNDtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBIQVI7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBDNTtHRU9SR0lBTiBDQVBJVEFMIExFVFRFUiBIT0U7THU7MDtMOzs7OztOOztLaHV0c3VyaTs7OworMTBEMDtHRU9SR0lBTiBMRVRURVIgQU47TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBBTjs7OzsKKzEwRDE7R0VPUkdJQU4gTEVUVEVSIEJBTjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEJBTjs7OzsKKzEwRDI7R0VPUkdJQU4gTEVUVEVSIEdBTjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEdBTjs7OzsKKzEwRDM7R0VPUkdJQU4gTEVUVEVSIERPTjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIERPTjs7OzsKKzEwRDQ7R0VPUkdJQU4gTEVUVEVSIEVOO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgRU47Ozs7CisxMEQ1O0dFT1JHSUFOIExFVFRFUiBWSU47TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBWSU47Ozs7CisxMEQ2O0dFT1JHSUFOIExFVFRFUiBaRU47TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBaRU47Ozs7CisxMEQ3O0dFT1JHSUFOIExFVFRFUiBUQU47TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBUQU47Ozs7CisxMEQ4O0dFT1JHSUFOIExFVFRFUiBJTjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIElOOzs7OworMTBEOTtHRU9SR0lBTiBMRVRURVIgS0FOO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgS0FOOzs7OworMTBEQTtHRU9SR0lBTiBMRVRURVIgTEFTO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgTEFTOzs7OworMTBEQjtHRU9SR0lBTiBMRVRURVIgTUFOO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgTUFOOzs7OworMTBEQztHRU9SR0lBTiBMRVRURVIgTkFSO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgTkFSOzs7OworMTBERDtHRU9SR0lBTiBMRVRURVIgT047TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBPTjs7OzsKKzEwREU7R0VPUkdJQU4gTEVUVEVSIFBBUjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFBBUjs7OzsKKzEwREY7R0VPUkdJQU4gTEVUVEVSIFpIQVI7TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBaSEFSOzs7OworMTBFMDtHRU9SR0lBTiBMRVRURVIgUkFFO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgUkFFOzs7OworMTBFMTtHRU9SR0lBTiBMRVRURVIgU0FOO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgU0FOOzs7OworMTBFMjtHRU9SR0lBTiBMRVRURVIgVEFSO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgVEFSOzs7OworMTBFMztHRU9SR0lBTiBMRVRURVIgVU47TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBVTjs7OzsKKzEwRTQ7R0VPUkdJQU4gTEVUVEVSIFBIQVI7TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBQSEFSOzs7OworMTBFNTtHRU9SR0lBTiBMRVRURVIgS0hBUjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEtIQVI7Ozs7CisxMEU2O0dFT1JHSUFOIExFVFRFUiBHSEFOO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgR0hBTjs7OzsKKzEwRTc7R0VPUkdJQU4gTEVUVEVSIFFBUjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFFBUjs7OzsKKzEwRTg7R0VPUkdJQU4gTEVUVEVSIFNISU47TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBTSElOOzs7OworMTBFOTtHRU9SR0lBTiBMRVRURVIgQ0hJTjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIENISU47Ozs7CisxMEVBO0dFT1JHSUFOIExFVFRFUiBDQU47TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBDQU47Ozs7CisxMEVCO0dFT1JHSUFOIExFVFRFUiBKSUw7TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBKSUw7Ozs7CisxMEVDO0dFT1JHSUFOIExFVFRFUiBDSUw7TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBDSUw7Ozs7CisxMEVEO0dFT1JHSUFOIExFVFRFUiBDSEFSO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgQ0hBUjs7OzsKKzEwRUU7R0VPUkdJQU4gTEVUVEVSIFhBTjtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIFhBTjs7OzsKKzEwRUY7R0VPUkdJQU4gTEVUVEVSIEpIQU47TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBKSEFOOzs7OworMTBGMDtHRU9SR0lBTiBMRVRURVIgSEFFO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgSEFFOzs7OworMTBGMTtHRU9SR0lBTiBMRVRURVIgSEU7TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBIRTs7OzsKKzEwRjI7R0VPUkdJQU4gTEVUVEVSIEhJRTtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEhJRTs7OzsKKzEwRjM7R0VPUkdJQU4gTEVUVEVSIFdFO0xvOzA7TDs7Ozs7TjtHRU9SR0lBTiBTTUFMTCBMRVRURVIgV0U7Ozs7CisxMEY0O0dFT1JHSUFOIExFVFRFUiBIQVI7TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBIQVI7Ozs7CisxMEY1O0dFT1JHSUFOIExFVFRFUiBIT0U7TG87MDtMOzs7OztOO0dFT1JHSUFOIFNNQUxMIExFVFRFUiBIT0U7Ozs7CisxMEY2O0dFT1JHSUFOIExFVFRFUiBGSTtMbzswO0w7Ozs7O047R0VPUkdJQU4gU01BTEwgTEVUVEVSIEZJOzs7OworMTBGQjtHRU9SR0lBTiBQQVJBR1JBUEggU0VQQVJBVE9SO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxMTAwO0hBTkdVTCBDSE9TRU9ORyBLSVlFT0s7TG87MDtMOzs7OztOOztnICo7OzsKKzExMDE7SEFOR1VMIENIT1NFT05HIFNTQU5HS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Z2cgKjs7OworMTEwMjtIQU5HVUwgQ0hPU0VPTkcgTklFVU47TG87MDtMOzs7OztOOztuICo7OzsKKzExMDM7SEFOR1VMIENIT1NFT05HIFRJS0VVVDtMbzswO0w7Ozs7O047O2QgKjs7OworMTEwNDtIQU5HVUwgQ0hPU0VPTkcgU1NBTkdUSUtFVVQ7TG87MDtMOzs7OztOOztkZCAqOzs7CisxMTA1O0hBTkdVTCBDSE9TRU9ORyBSSUVVTDtMbzswO0w7Ozs7O047O3IgKjs7OworMTEwNjtIQU5HVUwgQ0hPU0VPTkcgTUlFVU07TG87MDtMOzs7OztOOzttICo7OzsKKzExMDc7SEFOR1VMIENIT1NFT05HIFBJRVVQO0xvOzA7TDs7Ozs7Tjs7YiAqOzs7CisxMTA4O0hBTkdVTCBDSE9TRU9ORyBTU0FOR1BJRVVQO0xvOzA7TDs7Ozs7Tjs7YmIgKjs7OworMTEwOTtIQU5HVUwgQ0hPU0VPTkcgU0lPUztMbzswO0w7Ozs7O047O3MgKjs7OworMTEwQTtIQU5HVUwgQ0hPU0VPTkcgU1NBTkdTSU9TO0xvOzA7TDs7Ozs7Tjs7c3MgKjs7OworMTEwQjtIQU5HVUwgQ0hPU0VPTkcgSUVVTkc7TG87MDtMOzs7OztOOzs7OzsKKzExMEM7SEFOR1VMIENIT1NFT05HIENJRVVDO0xvOzA7TDs7Ozs7Tjs7aiAqOzs7CisxMTBEO0hBTkdVTCBDSE9TRU9ORyBTU0FOR0NJRVVDO0xvOzA7TDs7Ozs7Tjs7amogKjs7OworMTEwRTtIQU5HVUwgQ0hPU0VPTkcgQ0hJRVVDSDtMbzswO0w7Ozs7O047O2MgKjs7OworMTEwRjtIQU5HVUwgQ0hPU0VPTkcgS0hJRVVLSDtMbzswO0w7Ozs7O047O2sgKjs7OworMTExMDtIQU5HVUwgQ0hPU0VPTkcgVEhJRVVUSDtMbzswO0w7Ozs7O047O3QgKjs7OworMTExMTtIQU5HVUwgQ0hPU0VPTkcgUEhJRVVQSDtMbzswO0w7Ozs7O047O3AgKjs7OworMTExMjtIQU5HVUwgQ0hPU0VPTkcgSElFVUg7TG87MDtMOzs7OztOOztoICo7OzsKKzExMTM7SEFOR1VMIENIT1NFT05HIE5JRVVOLUtJWUVPSztMbzswO0w7Ozs7O047Ozs7OworMTExNDtIQU5HVUwgQ0hPU0VPTkcgU1NBTkdOSUVVTjtMbzswO0w7Ozs7O047Ozs7OworMTExNTtIQU5HVUwgQ0hPU0VPTkcgTklFVU4tVElLRVVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTE2O0hBTkdVTCBDSE9TRU9ORyBOSUVVTi1QSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTExNztIQU5HVUwgQ0hPU0VPTkcgVElLRVVULUtJWUVPSztMbzswO0w7Ozs7O047Ozs7OworMTExODtIQU5HVUwgQ0hPU0VPTkcgUklFVUwtTklFVU47TG87MDtMOzs7OztOOzs7OzsKKzExMTk7SEFOR1VMIENIT1NFT05HIFNTQU5HUklFVUw7TG87MDtMOzs7OztOOzs7OzsKKzExMUE7SEFOR1VMIENIT1NFT05HIFJJRVVMLUhJRVVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTFCO0hBTkdVTCBDSE9TRU9ORyBLQVBZRU9VTlJJRVVMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTFDO0hBTkdVTCBDSE9TRU9ORyBNSUVVTS1QSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTExRDtIQU5HVUwgQ0hPU0VPTkcgS0FQWUVPVU5NSUVVTTtMbzswO0w7Ozs7O047Ozs7OworMTExRTtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTFGO0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1OSUVVTjtMbzswO0w7Ozs7O047Ozs7OworMTEyMDtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtVElLRVVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTIxO0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTIyO0hBTkdVTCBDSE9TRU9ORyBQSUVVUC1TSU9TLUtJWUVPSztMbzswO0w7Ozs7O047Ozs7OworMTEyMztIQU5HVUwgQ0hPU0VPTkcgUElFVVAtU0lPUy1USUtFVVQ7TG87MDtMOzs7OztOOzs7OzsKKzExMjQ7SEFOR1VMIENIT1NFT05HIFBJRVVQLVNJT1MtUElFVVA7TG87MDtMOzs7OztOOzs7OzsKKzExMjU7SEFOR1VMIENIT1NFT05HIFBJRVVQLVNTQU5HU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTEyNjtIQU5HVUwgQ0hPU0VPTkcgUElFVVAtU0lPUy1DSUVVQztMbzswO0w7Ozs7O047Ozs7OworMTEyNztIQU5HVUwgQ0hPU0VPTkcgUElFVVAtQ0lFVUM7TG87MDtMOzs7OztOOzs7OzsKKzExMjg7SEFOR1VMIENIT1NFT05HIFBJRVVQLUNISUVVQ0g7TG87MDtMOzs7OztOOzs7OzsKKzExMjk7SEFOR1VMIENIT1NFT05HIFBJRVVQLVRISUVVVEg7TG87MDtMOzs7OztOOzs7OzsKKzExMkE7SEFOR1VMIENIT1NFT05HIFBJRVVQLVBISUVVUEg7TG87MDtMOzs7OztOOzs7OzsKKzExMkI7SEFOR1VMIENIT1NFT05HIEtBUFlFT1VOUElFVVA7TG87MDtMOzs7OztOOzs7OzsKKzExMkM7SEFOR1VMIENIT1NFT05HIEtBUFlFT1VOU1NBTkdQSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTEyRDtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1LSVlFT0s7TG87MDtMOzs7OztOOzs7OzsKKzExMkU7SEFOR1VMIENIT1NFT05HIFNJT1MtTklFVU47TG87MDtMOzs7OztOOzs7OzsKKzExMkY7SEFOR1VMIENIT1NFT05HIFNJT1MtVElLRVVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTMwO0hBTkdVTCBDSE9TRU9ORyBTSU9TLVJJRVVMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTMxO0hBTkdVTCBDSE9TRU9ORyBTSU9TLU1JRVVNO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTMyO0hBTkdVTCBDSE9TRU9ORyBTSU9TLVBJRVVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTMzO0hBTkdVTCBDSE9TRU9ORyBTSU9TLVBJRVVQLUtJWUVPSztMbzswO0w7Ozs7O047Ozs7OworMTEzNDtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1TU0FOR1NJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExMzU7SEFOR1VMIENIT1NFT05HIFNJT1MtSUVVTkc7TG87MDtMOzs7OztOOzs7OzsKKzExMzY7SEFOR1VMIENIT1NFT05HIFNJT1MtQ0lFVUM7TG87MDtMOzs7OztOOzs7OzsKKzExMzc7SEFOR1VMIENIT1NFT05HIFNJT1MtQ0hJRVVDSDtMbzswO0w7Ozs7O047Ozs7OworMTEzODtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1LSElFVUtIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTM5O0hBTkdVTCBDSE9TRU9ORyBTSU9TLVRISUVVVEg7TG87MDtMOzs7OztOOzs7OzsKKzExM0E7SEFOR1VMIENIT1NFT05HIFNJT1MtUEhJRVVQSDtMbzswO0w7Ozs7O047Ozs7OworMTEzQjtIQU5HVUwgQ0hPU0VPTkcgU0lPUy1ISUVVSDtMbzswO0w7Ozs7O047Ozs7OworMTEzQztIQU5HVUwgQ0hPU0VPTkcgQ0hJVFVFVU1TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTNEO0hBTkdVTCBDSE9TRU9ORyBDSElUVUVVTVNTQU5HU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTEzRTtIQU5HVUwgQ0hPU0VPTkcgQ0VPTkdDSElFVU1TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTNGO0hBTkdVTCBDSE9TRU9ORyBDRU9OR0NISUVVTVNTQU5HU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTE0MDtIQU5HVUwgQ0hPU0VPTkcgUEFOU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTE0MTtIQU5HVUwgQ0hPU0VPTkcgSUVVTkctS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTQyO0hBTkdVTCBDSE9TRU9ORyBJRVVORy1USUtFVVQ7TG87MDtMOzs7OztOOzs7OzsKKzExNDM7SEFOR1VMIENIT1NFT05HIElFVU5HLU1JRVVNO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTQ0O0hBTkdVTCBDSE9TRU9ORyBJRVVORy1QSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTE0NTtIQU5HVUwgQ0hPU0VPTkcgSUVVTkctU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTE0NjtIQU5HVUwgQ0hPU0VPTkcgSUVVTkctUEFOU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTE0NztIQU5HVUwgQ0hPU0VPTkcgU1NBTkdJRVVORztMbzswO0w7Ozs7O047Ozs7OworMTE0ODtIQU5HVUwgQ0hPU0VPTkcgSUVVTkctQ0lFVUM7TG87MDtMOzs7OztOOzs7OzsKKzExNDk7SEFOR1VMIENIT1NFT05HIElFVU5HLUNISUVVQ0g7TG87MDtMOzs7OztOOzs7OzsKKzExNEE7SEFOR1VMIENIT1NFT05HIElFVU5HLVRISUVVVEg7TG87MDtMOzs7OztOOzs7OzsKKzExNEI7SEFOR1VMIENIT1NFT05HIElFVU5HLVBISUVVUEg7TG87MDtMOzs7OztOOzs7OzsKKzExNEM7SEFOR1VMIENIT1NFT05HIFlFU0lFVU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTREO0hBTkdVTCBDSE9TRU9ORyBDSUVVQy1JRVVORztMbzswO0w7Ozs7O047Ozs7OworMTE0RTtIQU5HVUwgQ0hPU0VPTkcgQ0hJVFVFVU1DSUVVQztMbzswO0w7Ozs7O047Ozs7OworMTE0RjtIQU5HVUwgQ0hPU0VPTkcgQ0hJVFVFVU1TU0FOR0NJRVVDO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTUwO0hBTkdVTCBDSE9TRU9ORyBDRU9OR0NISUVVTUNJRVVDO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTUxO0hBTkdVTCBDSE9TRU9ORyBDRU9OR0NISUVVTVNTQU5HQ0lFVUM7TG87MDtMOzs7OztOOzs7OzsKKzExNTI7SEFOR1VMIENIT1NFT05HIENISUVVQ0gtS0hJRVVLSDtMbzswO0w7Ozs7O047Ozs7OworMTE1MztIQU5HVUwgQ0hPU0VPTkcgQ0hJRVVDSC1ISUVVSDtMbzswO0w7Ozs7O047Ozs7OworMTE1NDtIQU5HVUwgQ0hPU0VPTkcgQ0hJVFVFVU1DSElFVUNIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTU1O0hBTkdVTCBDSE9TRU9ORyBDRU9OR0NISUVVTUNISUVVQ0g7TG87MDtMOzs7OztOOzs7OzsKKzExNTY7SEFOR1VMIENIT1NFT05HIFBISUVVUEgtUElFVVA7TG87MDtMOzs7OztOOzs7OzsKKzExNTc7SEFOR1VMIENIT1NFT05HIEtBUFlFT1VOUEhJRVVQSDtMbzswO0w7Ozs7O047Ozs7OworMTE1ODtIQU5HVUwgQ0hPU0VPTkcgU1NBTkdISUVVSDtMbzswO0w7Ozs7O047Ozs7OworMTE1OTtIQU5HVUwgQ0hPU0VPTkcgWUVPUklOSElFVUg7TG87MDtMOzs7OztOOzs7OzsKKzExNUY7SEFOR1VMIENIT1NFT05HIEZJTExFUjtMbzswO0w7Ozs7O047Ozs7OworMTE2MDtIQU5HVUwgSlVOR1NFT05HIEZJTExFUjtMbzswO0w7Ozs7O047Ozs7OworMTE2MTtIQU5HVUwgSlVOR1NFT05HIEE7TG87MDtMOzs7OztOOzs7OzsKKzExNjI7SEFOR1VMIEpVTkdTRU9ORyBBRTtMbzswO0w7Ozs7O047Ozs7OworMTE2MztIQU5HVUwgSlVOR1NFT05HIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTY0O0hBTkdVTCBKVU5HU0VPTkcgWUFFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTY1O0hBTkdVTCBKVU5HU0VPTkcgRU87TG87MDtMOzs7OztOOzs7OzsKKzExNjY7SEFOR1VMIEpVTkdTRU9ORyBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTY3O0hBTkdVTCBKVU5HU0VPTkcgWUVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTY4O0hBTkdVTCBKVU5HU0VPTkcgWUU7TG87MDtMOzs7OztOOzs7OzsKKzExNjk7SEFOR1VMIEpVTkdTRU9ORyBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTZBO0hBTkdVTCBKVU5HU0VPTkcgV0E7TG87MDtMOzs7OztOOzs7OzsKKzExNkI7SEFOR1VMIEpVTkdTRU9ORyBXQUU7TG87MDtMOzs7OztOOzs7OzsKKzExNkM7SEFOR1VMIEpVTkdTRU9ORyBPRTtMbzswO0w7Ozs7O047Ozs7OworMTE2RDtIQU5HVUwgSlVOR1NFT05HIFlPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTZFO0hBTkdVTCBKVU5HU0VPTkcgVTtMbzswO0w7Ozs7O047Ozs7OworMTE2RjtIQU5HVUwgSlVOR1NFT05HIFdFTztMbzswO0w7Ozs7O047Ozs7OworMTE3MDtIQU5HVUwgSlVOR1NFT05HIFdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTcxO0hBTkdVTCBKVU5HU0VPTkcgV0k7TG87MDtMOzs7OztOOzs7OzsKKzExNzI7SEFOR1VMIEpVTkdTRU9ORyBZVTtMbzswO0w7Ozs7O047Ozs7OworMTE3MztIQU5HVUwgSlVOR1NFT05HIEVVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTc0O0hBTkdVTCBKVU5HU0VPTkcgWUk7TG87MDtMOzs7OztOOzs7OzsKKzExNzU7SEFOR1VMIEpVTkdTRU9ORyBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTc2O0hBTkdVTCBKVU5HU0VPTkcgQS1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTc3O0hBTkdVTCBKVU5HU0VPTkcgQS1VO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTc4O0hBTkdVTCBKVU5HU0VPTkcgWUEtTztMbzswO0w7Ozs7O047Ozs7OworMTE3OTtIQU5HVUwgSlVOR1NFT05HIFlBLVlPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTdBO0hBTkdVTCBKVU5HU0VPTkcgRU8tTztMbzswO0w7Ozs7O047Ozs7OworMTE3QjtIQU5HVUwgSlVOR1NFT05HIEVPLVU7TG87MDtMOzs7OztOOzs7OzsKKzExN0M7SEFOR1VMIEpVTkdTRU9ORyBFTy1FVTtMbzswO0w7Ozs7O047Ozs7OworMTE3RDtIQU5HVUwgSlVOR1NFT05HIFlFTy1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTdFO0hBTkdVTCBKVU5HU0VPTkcgWUVPLVU7TG87MDtMOzs7OztOOzs7OzsKKzExN0Y7SEFOR1VMIEpVTkdTRU9ORyBPLUVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTgwO0hBTkdVTCBKVU5HU0VPTkcgTy1FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTgxO0hBTkdVTCBKVU5HU0VPTkcgTy1ZRTtMbzswO0w7Ozs7O047Ozs7OworMTE4MjtIQU5HVUwgSlVOR1NFT05HIE8tTztMbzswO0w7Ozs7O047Ozs7OworMTE4MztIQU5HVUwgSlVOR1NFT05HIE8tVTtMbzswO0w7Ozs7O047Ozs7OworMTE4NDtIQU5HVUwgSlVOR1NFT05HIFlPLVlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTg1O0hBTkdVTCBKVU5HU0VPTkcgWU8tWUFFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTg2O0hBTkdVTCBKVU5HU0VPTkcgWU8tWUVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTg3O0hBTkdVTCBKVU5HU0VPTkcgWU8tTztMbzswO0w7Ozs7O047Ozs7OworMTE4ODtIQU5HVUwgSlVOR1NFT05HIFlPLUk7TG87MDtMOzs7OztOOzs7OzsKKzExODk7SEFOR1VMIEpVTkdTRU9ORyBVLUE7TG87MDtMOzs7OztOOzs7OzsKKzExOEE7SEFOR1VMIEpVTkdTRU9ORyBVLUFFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMThCO0hBTkdVTCBKVU5HU0VPTkcgVS1FTy1FVTtMbzswO0w7Ozs7O047Ozs7OworMTE4QztIQU5HVUwgSlVOR1NFT05HIFUtWUU7TG87MDtMOzs7OztOOzs7OzsKKzExOEQ7SEFOR1VMIEpVTkdTRU9ORyBVLVU7TG87MDtMOzs7OztOOzs7OzsKKzExOEU7SEFOR1VMIEpVTkdTRU9ORyBZVS1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMThGO0hBTkdVTCBKVU5HU0VPTkcgWVUtRU87TG87MDtMOzs7OztOOzs7OzsKKzExOTA7SEFOR1VMIEpVTkdTRU9ORyBZVS1FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTkxO0hBTkdVTCBKVU5HU0VPTkcgWVUtWUVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTkyO0hBTkdVTCBKVU5HU0VPTkcgWVUtWUU7TG87MDtMOzs7OztOOzs7OzsKKzExOTM7SEFOR1VMIEpVTkdTRU9ORyBZVS1VO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTk0O0hBTkdVTCBKVU5HU0VPTkcgWVUtSTtMbzswO0w7Ozs7O047Ozs7OworMTE5NTtIQU5HVUwgSlVOR1NFT05HIEVVLVU7TG87MDtMOzs7OztOOzs7OzsKKzExOTY7SEFOR1VMIEpVTkdTRU9ORyBFVS1FVTtMbzswO0w7Ozs7O047Ozs7OworMTE5NztIQU5HVUwgSlVOR1NFT05HIFlJLVU7TG87MDtMOzs7OztOOzs7OzsKKzExOTg7SEFOR1VMIEpVTkdTRU9ORyBJLUE7TG87MDtMOzs7OztOOzs7OzsKKzExOTk7SEFOR1VMIEpVTkdTRU9ORyBJLVlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTlBO0hBTkdVTCBKVU5HU0VPTkcgSS1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTlCO0hBTkdVTCBKVU5HU0VPTkcgSS1VO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMTlDO0hBTkdVTCBKVU5HU0VPTkcgSS1FVTtMbzswO0w7Ozs7O047Ozs7OworMTE5RDtIQU5HVUwgSlVOR1NFT05HIEktQVJBRUE7TG87MDtMOzs7OztOOzs7OzsKKzExOUU7SEFOR1VMIEpVTkdTRU9ORyBBUkFFQTtMbzswO0w7Ozs7O047Ozs7OworMTE5RjtIQU5HVUwgSlVOR1NFT05HIEFSQUVBLUVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUEwO0hBTkdVTCBKVU5HU0VPTkcgQVJBRUEtVTtMbzswO0w7Ozs7O047Ozs7OworMTFBMTtIQU5HVUwgSlVOR1NFT05HIEFSQUVBLUk7TG87MDtMOzs7OztOOzs7OzsKKzExQTI7SEFOR1VMIEpVTkdTRU9ORyBTU0FOR0FSQUVBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUE4O0hBTkdVTCBKT05HU0VPTkcgS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7ZyAqOzs7CisxMUE5O0hBTkdVTCBKT05HU0VPTkcgU1NBTkdLSVlFT0s7TG87MDtMOzs7OztOOztnZyAqOzs7CisxMUFBO0hBTkdVTCBKT05HU0VPTkcgS0lZRU9LLVNJT1M7TG87MDtMOzs7OztOOztncyAqOzs7CisxMUFCO0hBTkdVTCBKT05HU0VPTkcgTklFVU47TG87MDtMOzs7OztOOztuICo7OzsKKzExQUM7SEFOR1VMIEpPTkdTRU9ORyBOSUVVTi1DSUVVQztMbzswO0w7Ozs7O047O25qICo7OzsKKzExQUQ7SEFOR1VMIEpPTkdTRU9ORyBOSUVVTi1ISUVVSDtMbzswO0w7Ozs7O047O25oICo7OzsKKzExQUU7SEFOR1VMIEpPTkdTRU9ORyBUSUtFVVQ7TG87MDtMOzs7OztOOztkICo7OzsKKzExQUY7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTDtMbzswO0w7Ozs7O047O2wgKjs7OworMTFCMDtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLUtJWUVPSztMbzswO0w7Ozs7O047O2xnICo7OzsKKzExQjE7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1NSUVVTTtMbzswO0w7Ozs7O047O2xtICo7OzsKKzExQjI7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1QSUVVUDtMbzswO0w7Ozs7O047O2xiICo7OzsKKzExQjM7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1TSU9TO0xvOzA7TDs7Ozs7Tjs7bHMgKjs7OworMTFCNDtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVRISUVVVEg7TG87MDtMOzs7OztOOztsdCAqOzs7CisxMUI1O0hBTkdVTCBKT05HU0VPTkcgUklFVUwtUEhJRVVQSDtMbzswO0w7Ozs7O047O2xwICo7OzsKKzExQjY7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1ISUVVSDtMbzswO0w7Ozs7O047O2xoICo7OzsKKzExQjc7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTTtMbzswO0w7Ozs7O047O20gKjs7OworMTFCODtIQU5HVUwgSk9OR1NFT05HIFBJRVVQO0xvOzA7TDs7Ozs7Tjs7YiAqOzs7CisxMUI5O0hBTkdVTCBKT05HU0VPTkcgUElFVVAtU0lPUztMbzswO0w7Ozs7O047O2JzICo7OzsKKzExQkE7SEFOR1VMIEpPTkdTRU9ORyBTSU9TO0xvOzA7TDs7Ozs7Tjs7cyAqOzs7CisxMUJCO0hBTkdVTCBKT05HU0VPTkcgU1NBTkdTSU9TO0xvOzA7TDs7Ozs7Tjs7c3MgKjs7OworMTFCQztIQU5HVUwgSk9OR1NFT05HIElFVU5HO0xvOzA7TDs7Ozs7Tjs7bmcgKjs7OworMTFCRDtIQU5HVUwgSk9OR1NFT05HIENJRVVDO0xvOzA7TDs7Ozs7Tjs7aiAqOzs7CisxMUJFO0hBTkdVTCBKT05HU0VPTkcgQ0hJRVVDSDtMbzswO0w7Ozs7O047O2MgKjs7OworMTFCRjtIQU5HVUwgSk9OR1NFT05HIEtISUVVS0g7TG87MDtMOzs7OztOOztrICo7OzsKKzExQzA7SEFOR1VMIEpPTkdTRU9ORyBUSElFVVRIO0xvOzA7TDs7Ozs7Tjs7dCAqOzs7CisxMUMxO0hBTkdVTCBKT05HU0VPTkcgUEhJRVVQSDtMbzswO0w7Ozs7O047O3AgKjs7OworMTFDMjtIQU5HVUwgSk9OR1NFT05HIEhJRVVIO0xvOzA7TDs7Ozs7Tjs7aCAqOzs7CisxMUMzO0hBTkdVTCBKT05HU0VPTkcgS0lZRU9LLVJJRVVMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUM0O0hBTkdVTCBKT05HU0VPTkcgS0lZRU9LLVNJT1MtS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUM1O0hBTkdVTCBKT05HU0VPTkcgTklFVU4tS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUM2O0hBTkdVTCBKT05HU0VPTkcgTklFVU4tVElLRVVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUM3O0hBTkdVTCBKT05HU0VPTkcgTklFVU4tU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTFDODtIQU5HVUwgSk9OR1NFT05HIE5JRVVOLVBBTlNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExQzk7SEFOR1VMIEpPTkdTRU9ORyBOSUVVTi1USElFVVRIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUNBO0hBTkdVTCBKT05HU0VPTkcgVElLRVVULUtJWUVPSztMbzswO0w7Ozs7O047Ozs7OworMTFDQjtIQU5HVUwgSk9OR1NFT05HIFRJS0VVVC1SSUVVTDtMbzswO0w7Ozs7O047Ozs7OworMTFDQztIQU5HVUwgSk9OR1NFT05HIFJJRVVMLUtJWUVPSy1TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUNEO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtTklFVU47TG87MDtMOzs7OztOOzs7OzsKKzExQ0U7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1USUtFVVQ7TG87MDtMOzs7OztOOzs7OzsKKzExQ0Y7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1USUtFVVQtSElFVUg7TG87MDtMOzs7OztOOzs7OzsKKzExRDA7SEFOR1VMIEpPTkdTRU9ORyBTU0FOR1JJRVVMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUQxO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtTUlFVU0tS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUQyO0hBTkdVTCBKT05HU0VPTkcgUklFVUwtTUlFVU0tU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTFEMztIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVBJRVVQLVNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExRDQ7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1QSUVVUC1ISUVVSDtMbzswO0w7Ozs7O047Ozs7OworMTFENTtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLUtBUFlFT1VOUElFVVA7TG87MDtMOzs7OztOOzs7OzsKKzExRDY7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1TU0FOR1NJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExRDc7SEFOR1VMIEpPTkdTRU9ORyBSSUVVTC1QQU5TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUQ4O0hBTkdVTCBKT05HU0VPTkcgUklFVUwtS0hJRVVLSDtMbzswO0w7Ozs7O047Ozs7OworMTFEOTtIQU5HVUwgSk9OR1NFT05HIFJJRVVMLVlFT1JJTkhJRVVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMURBO0hBTkdVTCBKT05HU0VPTkcgTUlFVU0tS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMURCO0hBTkdVTCBKT05HU0VPTkcgTUlFVU0tUklFVUw7TG87MDtMOzs7OztOOzs7OzsKKzExREM7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1QSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTFERDtIQU5HVUwgSk9OR1NFT05HIE1JRVVNLVNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExREU7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1TU0FOR1NJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExREY7SEFOR1VMIEpPTkdTRU9ORyBNSUVVTS1QQU5TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUUwO0hBTkdVTCBKT05HU0VPTkcgTUlFVU0tQ0hJRVVDSDtMbzswO0w7Ozs7O047Ozs7OworMTFFMTtIQU5HVUwgSk9OR1NFT05HIE1JRVVNLUhJRVVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUUyO0hBTkdVTCBKT05HU0VPTkcgS0FQWUVPVU5NSUVVTTtMbzswO0w7Ozs7O047Ozs7OworMTFFMztIQU5HVUwgSk9OR1NFT05HIFBJRVVQLVJJRVVMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUU0O0hBTkdVTCBKT05HU0VPTkcgUElFVVAtUEhJRVVQSDtMbzswO0w7Ozs7O047Ozs7OworMTFFNTtIQU5HVUwgSk9OR1NFT05HIFBJRVVQLUhJRVVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUU2O0hBTkdVTCBKT05HU0VPTkcgS0FQWUVPVU5QSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTFFNztIQU5HVUwgSk9OR1NFT05HIFNJT1MtS0lZRU9LO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUU4O0hBTkdVTCBKT05HU0VPTkcgU0lPUy1USUtFVVQ7TG87MDtMOzs7OztOOzs7OzsKKzExRTk7SEFOR1VMIEpPTkdTRU9ORyBTSU9TLVJJRVVMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUVBO0hBTkdVTCBKT05HU0VPTkcgU0lPUy1QSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTFFQjtIQU5HVUwgSk9OR1NFT05HIFBBTlNJT1M7TG87MDtMOzs7OztOOzs7OzsKKzExRUM7SEFOR1VMIEpPTkdTRU9ORyBJRVVORy1LSVlFT0s7TG87MDtMOzs7OztOOzs7OzsKKzExRUQ7SEFOR1VMIEpPTkdTRU9ORyBJRVVORy1TU0FOR0tJWUVPSztMbzswO0w7Ozs7O047Ozs7OworMTFFRTtIQU5HVUwgSk9OR1NFT05HIFNTQU5HSUVVTkc7TG87MDtMOzs7OztOOzs7OzsKKzExRUY7SEFOR1VMIEpPTkdTRU9ORyBJRVVORy1LSElFVUtIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUYwO0hBTkdVTCBKT05HU0VPTkcgWUVTSUVVTkc7TG87MDtMOzs7OztOOzs7OzsKKzExRjE7SEFOR1VMIEpPTkdTRU9ORyBZRVNJRVVORy1TSU9TO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUYyO0hBTkdVTCBKT05HU0VPTkcgWUVTSUVVTkctUEFOU0lPUztMbzswO0w7Ozs7O047Ozs7OworMTFGMztIQU5HVUwgSk9OR1NFT05HIFBISUVVUEgtUElFVVA7TG87MDtMOzs7OztOOzs7OzsKKzExRjQ7SEFOR1VMIEpPTkdTRU9ORyBLQVBZRU9VTlBISUVVUEg7TG87MDtMOzs7OztOOzs7OzsKKzExRjU7SEFOR1VMIEpPTkdTRU9ORyBISUVVSC1OSUVVTjtMbzswO0w7Ozs7O047Ozs7OworMTFGNjtIQU5HVUwgSk9OR1NFT05HIEhJRVVILVJJRVVMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMUY3O0hBTkdVTCBKT05HU0VPTkcgSElFVUgtTUlFVU07TG87MDtMOzs7OztOOzs7OzsKKzExRjg7SEFOR1VMIEpPTkdTRU9ORyBISUVVSC1QSUVVUDtMbzswO0w7Ozs7O047Ozs7OworMTFGOTtIQU5HVUwgSk9OR1NFT05HIFlFT1JJTkhJRVVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjAwO0VUSElPUElDIFNZTExBQkxFIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjAxO0VUSElPUElDIFNZTExBQkxFIEhVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjAyO0VUSElPUElDIFNZTExBQkxFIEhJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjAzO0VUSElPUElDIFNZTExBQkxFIEhBQTtMbzswO0w7Ozs7O047Ozs7OworMTIwNDtFVEhJT1BJQyBTWUxMQUJMRSBIRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyMDU7RVRISU9QSUMgU1lMTEFCTEUgSEU7TG87MDtMOzs7OztOOzs7OzsKKzEyMDY7RVRISU9QSUMgU1lMTEFCTEUgSE87TG87MDtMOzs7OztOOzs7OzsKKzEyMDg7RVRISU9QSUMgU1lMTEFCTEUgTEE7TG87MDtMOzs7OztOOzs7OzsKKzEyMDk7RVRISU9QSUMgU1lMTEFCTEUgTFU7TG87MDtMOzs7OztOOzs7OzsKKzEyMEE7RVRISU9QSUMgU1lMTEFCTEUgTEk7TG87MDtMOzs7OztOOzs7OzsKKzEyMEI7RVRISU9QSUMgU1lMTEFCTEUgTEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjBDO0VUSElPUElDIFNZTExBQkxFIExFRTtMbzswO0w7Ozs7O047Ozs7OworMTIwRDtFVEhJT1BJQyBTWUxMQUJMRSBMRTtMbzswO0w7Ozs7O047Ozs7OworMTIwRTtFVEhJT1BJQyBTWUxMQUJMRSBMTztMbzswO0w7Ozs7O047Ozs7OworMTIwRjtFVEhJT1BJQyBTWUxMQUJMRSBMV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyMTA7RVRISU9QSUMgU1lMTEFCTEUgSEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjExO0VUSElPUElDIFNZTExBQkxFIEhIVTtMbzswO0w7Ozs7O047Ozs7OworMTIxMjtFVEhJT1BJQyBTWUxMQUJMRSBISEk7TG87MDtMOzs7OztOOzs7OzsKKzEyMTM7RVRISU9QSUMgU1lMTEFCTEUgSEhBQTtMbzswO0w7Ozs7O047Ozs7OworMTIxNDtFVEhJT1BJQyBTWUxMQUJMRSBISEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjE1O0VUSElPUElDIFNZTExBQkxFIEhIRTtMbzswO0w7Ozs7O047Ozs7OworMTIxNjtFVEhJT1BJQyBTWUxMQUJMRSBISE87TG87MDtMOzs7OztOOzs7OzsKKzEyMTc7RVRISU9QSUMgU1lMTEFCTEUgSEhXQTtMbzswO0w7Ozs7O047Ozs7OworMTIxODtFVEhJT1BJQyBTWUxMQUJMRSBNQTtMbzswO0w7Ozs7O047Ozs7OworMTIxOTtFVEhJT1BJQyBTWUxMQUJMRSBNVTtMbzswO0w7Ozs7O047Ozs7OworMTIxQTtFVEhJT1BJQyBTWUxMQUJMRSBNSTtMbzswO0w7Ozs7O047Ozs7OworMTIxQjtFVEhJT1BJQyBTWUxMQUJMRSBNQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyMUM7RVRISU9QSUMgU1lMTEFCTEUgTUVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjFEO0VUSElPUElDIFNZTExBQkxFIE1FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjFFO0VUSElPUElDIFNZTExBQkxFIE1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjFGO0VUSElPUElDIFNZTExBQkxFIE1XQTtMbzswO0w7Ozs7O047Ozs7OworMTIyMDtFVEhJT1BJQyBTWUxMQUJMRSBTWkE7TG87MDtMOzs7OztOOzs7OzsKKzEyMjE7RVRISU9QSUMgU1lMTEFCTEUgU1pVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjIyO0VUSElPUElDIFNZTExBQkxFIFNaSTtMbzswO0w7Ozs7O047Ozs7OworMTIyMztFVEhJT1BJQyBTWUxMQUJMRSBTWkFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjI0O0VUSElPUElDIFNZTExBQkxFIFNaRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyMjU7RVRISU9QSUMgU1lMTEFCTEUgU1pFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjI2O0VUSElPUElDIFNZTExBQkxFIFNaTztMbzswO0w7Ozs7O047Ozs7OworMTIyNztFVEhJT1BJQyBTWUxMQUJMRSBTWldBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjI4O0VUSElPUElDIFNZTExBQkxFIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjI5O0VUSElPUElDIFNZTExBQkxFIFJVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjJBO0VUSElPUElDIFNZTExBQkxFIFJJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjJCO0VUSElPUElDIFNZTExBQkxFIFJBQTtMbzswO0w7Ozs7O047Ozs7OworMTIyQztFVEhJT1BJQyBTWUxMQUJMRSBSRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyMkQ7RVRISU9QSUMgU1lMTEFCTEUgUkU7TG87MDtMOzs7OztOOzs7OzsKKzEyMkU7RVRISU9QSUMgU1lMTEFCTEUgUk87TG87MDtMOzs7OztOOzs7OzsKKzEyMkY7RVRISU9QSUMgU1lMTEFCTEUgUldBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjMwO0VUSElPUElDIFNZTExBQkxFIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjMxO0VUSElPUElDIFNZTExBQkxFIFNVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjMyO0VUSElPUElDIFNZTExBQkxFIFNJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjMzO0VUSElPUElDIFNZTExBQkxFIFNBQTtMbzswO0w7Ozs7O047Ozs7OworMTIzNDtFVEhJT1BJQyBTWUxMQUJMRSBTRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyMzU7RVRISU9QSUMgU1lMTEFCTEUgU0U7TG87MDtMOzs7OztOOzs7OzsKKzEyMzY7RVRISU9QSUMgU1lMTEFCTEUgU087TG87MDtMOzs7OztOOzs7OzsKKzEyMzc7RVRISU9QSUMgU1lMTEFCTEUgU1dBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjM4O0VUSElPUElDIFNZTExBQkxFIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMTIzOTtFVEhJT1BJQyBTWUxMQUJMRSBTSFU7TG87MDtMOzs7OztOOzs7OzsKKzEyM0E7RVRISU9QSUMgU1lMTEFCTEUgU0hJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjNCO0VUSElPUElDIFNZTExBQkxFIFNIQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyM0M7RVRISU9QSUMgU1lMTEFCTEUgU0hFRTtMbzswO0w7Ozs7O047Ozs7OworMTIzRDtFVEhJT1BJQyBTWUxMQUJMRSBTSEU7TG87MDtMOzs7OztOOzs7OzsKKzEyM0U7RVRISU9QSUMgU1lMTEFCTEUgU0hPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjNGO0VUSElPUElDIFNZTExBQkxFIFNIV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyNDA7RVRISU9QSUMgU1lMTEFCTEUgUUE7TG87MDtMOzs7OztOOzs7OzsKKzEyNDE7RVRISU9QSUMgU1lMTEFCTEUgUVU7TG87MDtMOzs7OztOOzs7OzsKKzEyNDI7RVRISU9QSUMgU1lMTEFCTEUgUUk7TG87MDtMOzs7OztOOzs7OzsKKzEyNDM7RVRISU9QSUMgU1lMTEFCTEUgUUFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjQ0O0VUSElPUElDIFNZTExBQkxFIFFFRTtMbzswO0w7Ozs7O047Ozs7OworMTI0NTtFVEhJT1BJQyBTWUxMQUJMRSBRRTtMbzswO0w7Ozs7O047Ozs7OworMTI0NjtFVEhJT1BJQyBTWUxMQUJMRSBRTztMbzswO0w7Ozs7O047Ozs7OworMTI0ODtFVEhJT1BJQyBTWUxMQUJMRSBRV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyNEE7RVRISU9QSUMgU1lMTEFCTEUgUVdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjRCO0VUSElPUElDIFNZTExBQkxFIFFXQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyNEM7RVRISU9QSUMgU1lMTEFCTEUgUVdFRTtMbzswO0w7Ozs7O047Ozs7OworMTI0RDtFVEhJT1BJQyBTWUxMQUJMRSBRV0U7TG87MDtMOzs7OztOOzs7OzsKKzEyNTA7RVRISU9QSUMgU1lMTEFCTEUgUUhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjUxO0VUSElPUElDIFNZTExBQkxFIFFIVTtMbzswO0w7Ozs7O047Ozs7OworMTI1MjtFVEhJT1BJQyBTWUxMQUJMRSBRSEk7TG87MDtMOzs7OztOOzs7OzsKKzEyNTM7RVRISU9QSUMgU1lMTEFCTEUgUUhBQTtMbzswO0w7Ozs7O047Ozs7OworMTI1NDtFVEhJT1BJQyBTWUxMQUJMRSBRSEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjU1O0VUSElPUElDIFNZTExBQkxFIFFIRTtMbzswO0w7Ozs7O047Ozs7OworMTI1NjtFVEhJT1BJQyBTWUxMQUJMRSBRSE87TG87MDtMOzs7OztOOzs7OzsKKzEyNTg7RVRISU9QSUMgU1lMTEFCTEUgUUhXQTtMbzswO0w7Ozs7O047Ozs7OworMTI1QTtFVEhJT1BJQyBTWUxMQUJMRSBRSFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjVCO0VUSElPUElDIFNZTExBQkxFIFFIV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjVDO0VUSElPUElDIFNZTExBQkxFIFFIV0VFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjVEO0VUSElPUElDIFNZTExBQkxFIFFIV0U7TG87MDtMOzs7OztOOzs7OzsKKzEyNjA7RVRISU9QSUMgU1lMTEFCTEUgQkE7TG87MDtMOzs7OztOOzs7OzsKKzEyNjE7RVRISU9QSUMgU1lMTEFCTEUgQlU7TG87MDtMOzs7OztOOzs7OzsKKzEyNjI7RVRISU9QSUMgU1lMTEFCTEUgQkk7TG87MDtMOzs7OztOOzs7OzsKKzEyNjM7RVRISU9QSUMgU1lMTEFCTEUgQkFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjY0O0VUSElPUElDIFNZTExBQkxFIEJFRTtMbzswO0w7Ozs7O047Ozs7OworMTI2NTtFVEhJT1BJQyBTWUxMQUJMRSBCRTtMbzswO0w7Ozs7O047Ozs7OworMTI2NjtFVEhJT1BJQyBTWUxMQUJMRSBCTztMbzswO0w7Ozs7O047Ozs7OworMTI2NztFVEhJT1BJQyBTWUxMQUJMRSBCV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyNjg7RVRISU9QSUMgU1lMTEFCTEUgVkE7TG87MDtMOzs7OztOOzs7OzsKKzEyNjk7RVRISU9QSUMgU1lMTEFCTEUgVlU7TG87MDtMOzs7OztOOzs7OzsKKzEyNkE7RVRISU9QSUMgU1lMTEFCTEUgVkk7TG87MDtMOzs7OztOOzs7OzsKKzEyNkI7RVRISU9QSUMgU1lMTEFCTEUgVkFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjZDO0VUSElPUElDIFNZTExBQkxFIFZFRTtMbzswO0w7Ozs7O047Ozs7OworMTI2RDtFVEhJT1BJQyBTWUxMQUJMRSBWRTtMbzswO0w7Ozs7O047Ozs7OworMTI2RTtFVEhJT1BJQyBTWUxMQUJMRSBWTztMbzswO0w7Ozs7O047Ozs7OworMTI2RjtFVEhJT1BJQyBTWUxMQUJMRSBWV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyNzA7RVRISU9QSUMgU1lMTEFCTEUgVEE7TG87MDtMOzs7OztOOzs7OzsKKzEyNzE7RVRISU9QSUMgU1lMTEFCTEUgVFU7TG87MDtMOzs7OztOOzs7OzsKKzEyNzI7RVRISU9QSUMgU1lMTEFCTEUgVEk7TG87MDtMOzs7OztOOzs7OzsKKzEyNzM7RVRISU9QSUMgU1lMTEFCTEUgVEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjc0O0VUSElPUElDIFNZTExBQkxFIFRFRTtMbzswO0w7Ozs7O047Ozs7OworMTI3NTtFVEhJT1BJQyBTWUxMQUJMRSBURTtMbzswO0w7Ozs7O047Ozs7OworMTI3NjtFVEhJT1BJQyBTWUxMQUJMRSBUTztMbzswO0w7Ozs7O047Ozs7OworMTI3NztFVEhJT1BJQyBTWUxMQUJMRSBUV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyNzg7RVRISU9QSUMgU1lMTEFCTEUgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzEyNzk7RVRISU9QSUMgU1lMTEFCTEUgQ1U7TG87MDtMOzs7OztOOzs7OzsKKzEyN0E7RVRISU9QSUMgU1lMTEFCTEUgQ0k7TG87MDtMOzs7OztOOzs7OzsKKzEyN0I7RVRISU9QSUMgU1lMTEFCTEUgQ0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjdDO0VUSElPUElDIFNZTExBQkxFIENFRTtMbzswO0w7Ozs7O047Ozs7OworMTI3RDtFVEhJT1BJQyBTWUxMQUJMRSBDRTtMbzswO0w7Ozs7O047Ozs7OworMTI3RTtFVEhJT1BJQyBTWUxMQUJMRSBDTztMbzswO0w7Ozs7O047Ozs7OworMTI3RjtFVEhJT1BJQyBTWUxMQUJMRSBDV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyODA7RVRISU9QSUMgU1lMTEFCTEUgWEE7TG87MDtMOzs7OztOOzs7OzsKKzEyODE7RVRISU9QSUMgU1lMTEFCTEUgWFU7TG87MDtMOzs7OztOOzs7OzsKKzEyODI7RVRISU9QSUMgU1lMTEFCTEUgWEk7TG87MDtMOzs7OztOOzs7OzsKKzEyODM7RVRISU9QSUMgU1lMTEFCTEUgWEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjg0O0VUSElPUElDIFNZTExBQkxFIFhFRTtMbzswO0w7Ozs7O047Ozs7OworMTI4NTtFVEhJT1BJQyBTWUxMQUJMRSBYRTtMbzswO0w7Ozs7O047Ozs7OworMTI4NjtFVEhJT1BJQyBTWUxMQUJMRSBYTztMbzswO0w7Ozs7O047Ozs7OworMTI4ODtFVEhJT1BJQyBTWUxMQUJMRSBYV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyOEE7RVRISU9QSUMgU1lMTEFCTEUgWFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjhCO0VUSElPUElDIFNZTExBQkxFIFhXQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyOEM7RVRISU9QSUMgU1lMTEFCTEUgWFdFRTtMbzswO0w7Ozs7O047Ozs7OworMTI4RDtFVEhJT1BJQyBTWUxMQUJMRSBYV0U7TG87MDtMOzs7OztOOzs7OzsKKzEyOTA7RVRISU9QSUMgU1lMTEFCTEUgTkE7TG87MDtMOzs7OztOOzs7OzsKKzEyOTE7RVRISU9QSUMgU1lMTEFCTEUgTlU7TG87MDtMOzs7OztOOzs7OzsKKzEyOTI7RVRISU9QSUMgU1lMTEFCTEUgTkk7TG87MDtMOzs7OztOOzs7OzsKKzEyOTM7RVRISU9QSUMgU1lMTEFCTEUgTkFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjk0O0VUSElPUElDIFNZTExBQkxFIE5FRTtMbzswO0w7Ozs7O047Ozs7OworMTI5NTtFVEhJT1BJQyBTWUxMQUJMRSBORTtMbzswO0w7Ozs7O047Ozs7OworMTI5NjtFVEhJT1BJQyBTWUxMQUJMRSBOTztMbzswO0w7Ozs7O047Ozs7OworMTI5NztFVEhJT1BJQyBTWUxMQUJMRSBOV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyOTg7RVRISU9QSUMgU1lMTEFCTEUgTllBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjk5O0VUSElPUElDIFNZTExBQkxFIE5ZVTtMbzswO0w7Ozs7O047Ozs7OworMTI5QTtFVEhJT1BJQyBTWUxMQUJMRSBOWUk7TG87MDtMOzs7OztOOzs7OzsKKzEyOUI7RVRISU9QSUMgU1lMTEFCTEUgTllBQTtMbzswO0w7Ozs7O047Ozs7OworMTI5QztFVEhJT1BJQyBTWUxMQUJMRSBOWUVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMjlEO0VUSElPUElDIFNZTExBQkxFIE5ZRTtMbzswO0w7Ozs7O047Ozs7OworMTI5RTtFVEhJT1BJQyBTWUxMQUJMRSBOWU87TG87MDtMOzs7OztOOzs7OzsKKzEyOUY7RVRISU9QSUMgU1lMTEFCTEUgTllXQTtMbzswO0w7Ozs7O047Ozs7OworMTJBMDtFVEhJT1BJQyBTWUxMQUJMRSBHTE9UVEFMIEE7TG87MDtMOzs7OztOOzs7OzsKKzEyQTE7RVRISU9QSUMgU1lMTEFCTEUgR0xPVFRBTCBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkEyO0VUSElPUElDIFNZTExBQkxFIEdMT1RUQUwgSTtMbzswO0w7Ozs7O047Ozs7OworMTJBMztFVEhJT1BJQyBTWUxMQUJMRSBHTE9UVEFMIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkE0O0VUSElPUElDIFNZTExBQkxFIEdMT1RUQUwgRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyQTU7RVRISU9QSUMgU1lMTEFCTEUgR0xPVFRBTCBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkE2O0VUSElPUElDIFNZTExBQkxFIEdMT1RUQUwgTztMbzswO0w7Ozs7O047Ozs7OworMTJBNztFVEhJT1BJQyBTWUxMQUJMRSBHTE9UVEFMIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkE4O0VUSElPUElDIFNZTExBQkxFIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkE5O0VUSElPUElDIFNZTExBQkxFIEtVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkFBO0VUSElPUElDIFNZTExBQkxFIEtJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkFCO0VUSElPUElDIFNZTExBQkxFIEtBQTtMbzswO0w7Ozs7O047Ozs7OworMTJBQztFVEhJT1BJQyBTWUxMQUJMRSBLRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyQUQ7RVRISU9QSUMgU1lMTEFCTEUgS0U7TG87MDtMOzs7OztOOzs7OzsKKzEyQUU7RVRISU9QSUMgU1lMTEFCTEUgS087TG87MDtMOzs7OztOOzs7OzsKKzEyQjA7RVRISU9QSUMgU1lMTEFCTEUgS1dBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkIyO0VUSElPUElDIFNZTExBQkxFIEtXSTtMbzswO0w7Ozs7O047Ozs7OworMTJCMztFVEhJT1BJQyBTWUxMQUJMRSBLV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkI0O0VUSElPUElDIFNZTExBQkxFIEtXRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyQjU7RVRISU9QSUMgU1lMTEFCTEUgS1dFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkI4O0VUSElPUElDIFNZTExBQkxFIEtYQTtMbzswO0w7Ozs7O047Ozs7OworMTJCOTtFVEhJT1BJQyBTWUxMQUJMRSBLWFU7TG87MDtMOzs7OztOOzs7OzsKKzEyQkE7RVRISU9QSUMgU1lMTEFCTEUgS1hJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkJCO0VUSElPUElDIFNZTExBQkxFIEtYQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyQkM7RVRISU9QSUMgU1lMTEFCTEUgS1hFRTtMbzswO0w7Ozs7O047Ozs7OworMTJCRDtFVEhJT1BJQyBTWUxMQUJMRSBLWEU7TG87MDtMOzs7OztOOzs7OzsKKzEyQkU7RVRISU9QSUMgU1lMTEFCTEUgS1hPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkMwO0VUSElPUElDIFNZTExBQkxFIEtYV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyQzI7RVRISU9QSUMgU1lMTEFCTEUgS1hXSTtMbzswO0w7Ozs7O047Ozs7OworMTJDMztFVEhJT1BJQyBTWUxMQUJMRSBLWFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTJDNDtFVEhJT1BJQyBTWUxMQUJMRSBLWFdFRTtMbzswO0w7Ozs7O047Ozs7OworMTJDNTtFVEhJT1BJQyBTWUxMQUJMRSBLWFdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkM4O0VUSElPUElDIFNZTExBQkxFIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkM5O0VUSElPUElDIFNZTExBQkxFIFdVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkNBO0VUSElPUElDIFNZTExBQkxFIFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkNCO0VUSElPUElDIFNZTExBQkxFIFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTJDQztFVEhJT1BJQyBTWUxMQUJMRSBXRUU7TG87MDtMOzs7OztOOzs7OzsKKzEyQ0Q7RVRISU9QSUMgU1lMTEFCTEUgV0U7TG87MDtMOzs7OztOOzs7OzsKKzEyQ0U7RVRISU9QSUMgU1lMTEFCTEUgV087TG87MDtMOzs7OztOOzs7OzsKKzEyRDA7RVRISU9QSUMgU1lMTEFCTEUgUEhBUllOR0VBTCBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkQxO0VUSElPUElDIFNZTExBQkxFIFBIQVJZTkdFQUwgVTtMbzswO0w7Ozs7O047Ozs7OworMTJEMjtFVEhJT1BJQyBTWUxMQUJMRSBQSEFSWU5HRUFMIEk7TG87MDtMOzs7OztOOzs7OzsKKzEyRDM7RVRISU9QSUMgU1lMTEFCTEUgUEhBUllOR0VBTCBBQTtMbzswO0w7Ozs7O047Ozs7OworMTJENDtFVEhJT1BJQyBTWUxMQUJMRSBQSEFSWU5HRUFMIEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkQ1O0VUSElPUElDIFNZTExBQkxFIFBIQVJZTkdFQUwgRTtMbzswO0w7Ozs7O047Ozs7OworMTJENjtFVEhJT1BJQyBTWUxMQUJMRSBQSEFSWU5HRUFMIE87TG87MDtMOzs7OztOOzs7OzsKKzEyRDg7RVRISU9QSUMgU1lMTEFCTEUgWkE7TG87MDtMOzs7OztOOzs7OzsKKzEyRDk7RVRISU9QSUMgU1lMTEFCTEUgWlU7TG87MDtMOzs7OztOOzs7OzsKKzEyREE7RVRISU9QSUMgU1lMTEFCTEUgWkk7TG87MDtMOzs7OztOOzs7OzsKKzEyREI7RVRISU9QSUMgU1lMTEFCTEUgWkFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkRDO0VUSElPUElDIFNZTExBQkxFIFpFRTtMbzswO0w7Ozs7O047Ozs7OworMTJERDtFVEhJT1BJQyBTWUxMQUJMRSBaRTtMbzswO0w7Ozs7O047Ozs7OworMTJERTtFVEhJT1BJQyBTWUxMQUJMRSBaTztMbzswO0w7Ozs7O047Ozs7OworMTJERjtFVEhJT1BJQyBTWUxMQUJMRSBaV0E7TG87MDtMOzs7OztOOzs7OzsKKzEyRTA7RVRISU9QSUMgU1lMTEFCTEUgWkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkUxO0VUSElPUElDIFNZTExBQkxFIFpIVTtMbzswO0w7Ozs7O047Ozs7OworMTJFMjtFVEhJT1BJQyBTWUxMQUJMRSBaSEk7TG87MDtMOzs7OztOOzs7OzsKKzEyRTM7RVRISU9QSUMgU1lMTEFCTEUgWkhBQTtMbzswO0w7Ozs7O047Ozs7OworMTJFNDtFVEhJT1BJQyBTWUxMQUJMRSBaSEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkU1O0VUSElPUElDIFNZTExBQkxFIFpIRTtMbzswO0w7Ozs7O047Ozs7OworMTJFNjtFVEhJT1BJQyBTWUxMQUJMRSBaSE87TG87MDtMOzs7OztOOzs7OzsKKzEyRTc7RVRISU9QSUMgU1lMTEFCTEUgWkhXQTtMbzswO0w7Ozs7O047Ozs7OworMTJFODtFVEhJT1BJQyBTWUxMQUJMRSBZQTtMbzswO0w7Ozs7O047Ozs7OworMTJFOTtFVEhJT1BJQyBTWUxMQUJMRSBZVTtMbzswO0w7Ozs7O047Ozs7OworMTJFQTtFVEhJT1BJQyBTWUxMQUJMRSBZSTtMbzswO0w7Ozs7O047Ozs7OworMTJFQjtFVEhJT1BJQyBTWUxMQUJMRSBZQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyRUM7RVRISU9QSUMgU1lMTEFCTEUgWUVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkVEO0VUSElPUElDIFNZTExBQkxFIFlFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkVFO0VUSElPUElDIFNZTExBQkxFIFlPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkYwO0VUSElPUElDIFNZTExBQkxFIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkYxO0VUSElPUElDIFNZTExBQkxFIERVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkYyO0VUSElPUElDIFNZTExBQkxFIERJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkYzO0VUSElPUElDIFNZTExBQkxFIERBQTtMbzswO0w7Ozs7O047Ozs7OworMTJGNDtFVEhJT1BJQyBTWUxMQUJMRSBERUU7TG87MDtMOzs7OztOOzs7OzsKKzEyRjU7RVRISU9QSUMgU1lMTEFCTEUgREU7TG87MDtMOzs7OztOOzs7OzsKKzEyRjY7RVRISU9QSUMgU1lMTEFCTEUgRE87TG87MDtMOzs7OztOOzs7OzsKKzEyRjc7RVRISU9QSUMgU1lMTEFCTEUgRFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkY4O0VUSElPUElDIFNZTExBQkxFIEREQTtMbzswO0w7Ozs7O047Ozs7OworMTJGOTtFVEhJT1BJQyBTWUxMQUJMRSBERFU7TG87MDtMOzs7OztOOzs7OzsKKzEyRkE7RVRISU9QSUMgU1lMTEFCTEUgRERJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkZCO0VUSElPUElDIFNZTExBQkxFIEREQUE7TG87MDtMOzs7OztOOzs7OzsKKzEyRkM7RVRISU9QSUMgU1lMTEFCTEUgRERFRTtMbzswO0w7Ozs7O047Ozs7OworMTJGRDtFVEhJT1BJQyBTWUxMQUJMRSBEREU7TG87MDtMOzs7OztOOzs7OzsKKzEyRkU7RVRISU9QSUMgU1lMTEFCTEUgRERPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMkZGO0VUSElPUElDIFNZTExBQkxFIEREV0E7TG87MDtMOzs7OztOOzs7OzsKKzEzMDA7RVRISU9QSUMgU1lMTEFCTEUgSkE7TG87MDtMOzs7OztOOzs7OzsKKzEzMDE7RVRISU9QSUMgU1lMTEFCTEUgSlU7TG87MDtMOzs7OztOOzs7OzsKKzEzMDI7RVRISU9QSUMgU1lMTEFCTEUgSkk7TG87MDtMOzs7OztOOzs7OzsKKzEzMDM7RVRISU9QSUMgU1lMTEFCTEUgSkFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzA0O0VUSElPUElDIFNZTExBQkxFIEpFRTtMbzswO0w7Ozs7O047Ozs7OworMTMwNTtFVEhJT1BJQyBTWUxMQUJMRSBKRTtMbzswO0w7Ozs7O047Ozs7OworMTMwNjtFVEhJT1BJQyBTWUxMQUJMRSBKTztMbzswO0w7Ozs7O047Ozs7OworMTMwNztFVEhJT1BJQyBTWUxMQUJMRSBKV0E7TG87MDtMOzs7OztOOzs7OzsKKzEzMDg7RVRISU9QSUMgU1lMTEFCTEUgR0E7TG87MDtMOzs7OztOOzs7OzsKKzEzMDk7RVRISU9QSUMgU1lMTEFCTEUgR1U7TG87MDtMOzs7OztOOzs7OzsKKzEzMEE7RVRISU9QSUMgU1lMTEFCTEUgR0k7TG87MDtMOzs7OztOOzs7OzsKKzEzMEI7RVRISU9QSUMgU1lMTEFCTEUgR0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzBDO0VUSElPUElDIFNZTExBQkxFIEdFRTtMbzswO0w7Ozs7O047Ozs7OworMTMwRDtFVEhJT1BJQyBTWUxMQUJMRSBHRTtMbzswO0w7Ozs7O047Ozs7OworMTMwRTtFVEhJT1BJQyBTWUxMQUJMRSBHTztMbzswO0w7Ozs7O047Ozs7OworMTMxMDtFVEhJT1BJQyBTWUxMQUJMRSBHV0E7TG87MDtMOzs7OztOOzs7OzsKKzEzMTI7RVRISU9QSUMgU1lMTEFCTEUgR1dJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzEzO0VUSElPUElDIFNZTExBQkxFIEdXQUE7TG87MDtMOzs7OztOOzs7OzsKKzEzMTQ7RVRISU9QSUMgU1lMTEFCTEUgR1dFRTtMbzswO0w7Ozs7O047Ozs7OworMTMxNTtFVEhJT1BJQyBTWUxMQUJMRSBHV0U7TG87MDtMOzs7OztOOzs7OzsKKzEzMTg7RVRISU9QSUMgU1lMTEFCTEUgR0dBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzE5O0VUSElPUElDIFNZTExBQkxFIEdHVTtMbzswO0w7Ozs7O047Ozs7OworMTMxQTtFVEhJT1BJQyBTWUxMQUJMRSBHR0k7TG87MDtMOzs7OztOOzs7OzsKKzEzMUI7RVRISU9QSUMgU1lMTEFCTEUgR0dBQTtMbzswO0w7Ozs7O047Ozs7OworMTMxQztFVEhJT1BJQyBTWUxMQUJMRSBHR0VFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzFEO0VUSElPUElDIFNZTExBQkxFIEdHRTtMbzswO0w7Ozs7O047Ozs7OworMTMxRTtFVEhJT1BJQyBTWUxMQUJMRSBHR087TG87MDtMOzs7OztOOzs7OzsKKzEzMjA7RVRISU9QSUMgU1lMTEFCTEUgVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzIxO0VUSElPUElDIFNZTExBQkxFIFRIVTtMbzswO0w7Ozs7O047Ozs7OworMTMyMjtFVEhJT1BJQyBTWUxMQUJMRSBUSEk7TG87MDtMOzs7OztOOzs7OzsKKzEzMjM7RVRISU9QSUMgU1lMTEFCTEUgVEhBQTtMbzswO0w7Ozs7O047Ozs7OworMTMyNDtFVEhJT1BJQyBTWUxMQUJMRSBUSEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzI1O0VUSElPUElDIFNZTExBQkxFIFRIRTtMbzswO0w7Ozs7O047Ozs7OworMTMyNjtFVEhJT1BJQyBTWUxMQUJMRSBUSE87TG87MDtMOzs7OztOOzs7OzsKKzEzMjc7RVRISU9QSUMgU1lMTEFCTEUgVEhXQTtMbzswO0w7Ozs7O047Ozs7OworMTMyODtFVEhJT1BJQyBTWUxMQUJMRSBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzEzMjk7RVRISU9QSUMgU1lMTEFCTEUgQ0hVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzJBO0VUSElPUElDIFNZTExBQkxFIENISTtMbzswO0w7Ozs7O047Ozs7OworMTMyQjtFVEhJT1BJQyBTWUxMQUJMRSBDSEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzJDO0VUSElPUElDIFNZTExBQkxFIENIRUU7TG87MDtMOzs7OztOOzs7OzsKKzEzMkQ7RVRISU9QSUMgU1lMTEFCTEUgQ0hFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzJFO0VUSElPUElDIFNZTExBQkxFIENITztMbzswO0w7Ozs7O047Ozs7OworMTMyRjtFVEhJT1BJQyBTWUxMQUJMRSBDSFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzMwO0VUSElPUElDIFNZTExBQkxFIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMTMzMTtFVEhJT1BJQyBTWUxMQUJMRSBQSFU7TG87MDtMOzs7OztOOzs7OzsKKzEzMzI7RVRISU9QSUMgU1lMTEFCTEUgUEhJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzMzO0VUSElPUElDIFNZTExBQkxFIFBIQUE7TG87MDtMOzs7OztOOzs7OzsKKzEzMzQ7RVRISU9QSUMgU1lMTEFCTEUgUEhFRTtMbzswO0w7Ozs7O047Ozs7OworMTMzNTtFVEhJT1BJQyBTWUxMQUJMRSBQSEU7TG87MDtMOzs7OztOOzs7OzsKKzEzMzY7RVRISU9QSUMgU1lMTEFCTEUgUEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzM3O0VUSElPUElDIFNZTExBQkxFIFBIV0E7TG87MDtMOzs7OztOOzs7OzsKKzEzMzg7RVRISU9QSUMgU1lMTEFCTEUgVFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzM5O0VUSElPUElDIFNZTExBQkxFIFRTVTtMbzswO0w7Ozs7O047Ozs7OworMTMzQTtFVEhJT1BJQyBTWUxMQUJMRSBUU0k7TG87MDtMOzs7OztOOzs7OzsKKzEzM0I7RVRISU9QSUMgU1lMTEFCTEUgVFNBQTtMbzswO0w7Ozs7O047Ozs7OworMTMzQztFVEhJT1BJQyBTWUxMQUJMRSBUU0VFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzNEO0VUSElPUElDIFNZTExBQkxFIFRTRTtMbzswO0w7Ozs7O047Ozs7OworMTMzRTtFVEhJT1BJQyBTWUxMQUJMRSBUU087TG87MDtMOzs7OztOOzs7OzsKKzEzM0Y7RVRISU9QSUMgU1lMTEFCTEUgVFNXQTtMbzswO0w7Ozs7O047Ozs7OworMTM0MDtFVEhJT1BJQyBTWUxMQUJMRSBUWkE7TG87MDtMOzs7OztOOzs7OzsKKzEzNDE7RVRISU9QSUMgU1lMTEFCTEUgVFpVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzQyO0VUSElPUElDIFNZTExBQkxFIFRaSTtMbzswO0w7Ozs7O047Ozs7OworMTM0MztFVEhJT1BJQyBTWUxMQUJMRSBUWkFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzQ0O0VUSElPUElDIFNZTExBQkxFIFRaRUU7TG87MDtMOzs7OztOOzs7OzsKKzEzNDU7RVRISU9QSUMgU1lMTEFCTEUgVFpFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzQ2O0VUSElPUElDIFNZTExBQkxFIFRaTztMbzswO0w7Ozs7O047Ozs7OworMTM0ODtFVEhJT1BJQyBTWUxMQUJMRSBGQTtMbzswO0w7Ozs7O047Ozs7OworMTM0OTtFVEhJT1BJQyBTWUxMQUJMRSBGVTtMbzswO0w7Ozs7O047Ozs7OworMTM0QTtFVEhJT1BJQyBTWUxMQUJMRSBGSTtMbzswO0w7Ozs7O047Ozs7OworMTM0QjtFVEhJT1BJQyBTWUxMQUJMRSBGQUE7TG87MDtMOzs7OztOOzs7OzsKKzEzNEM7RVRISU9QSUMgU1lMTEFCTEUgRkVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzREO0VUSElPUElDIFNZTExBQkxFIEZFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzRFO0VUSElPUElDIFNZTExBQkxFIEZPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzRGO0VUSElPUElDIFNZTExBQkxFIEZXQTtMbzswO0w7Ozs7O047Ozs7OworMTM1MDtFVEhJT1BJQyBTWUxMQUJMRSBQQTtMbzswO0w7Ozs7O047Ozs7OworMTM1MTtFVEhJT1BJQyBTWUxMQUJMRSBQVTtMbzswO0w7Ozs7O047Ozs7OworMTM1MjtFVEhJT1BJQyBTWUxMQUJMRSBQSTtMbzswO0w7Ozs7O047Ozs7OworMTM1MztFVEhJT1BJQyBTWUxMQUJMRSBQQUE7TG87MDtMOzs7OztOOzs7OzsKKzEzNTQ7RVRISU9QSUMgU1lMTEFCTEUgUEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzU1O0VUSElPUElDIFNZTExBQkxFIFBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzU2O0VUSElPUElDIFNZTExBQkxFIFBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzU3O0VUSElPUElDIFNZTExBQkxFIFBXQTtMbzswO0w7Ozs7O047Ozs7OworMTM1ODtFVEhJT1BJQyBTWUxMQUJMRSBSWUE7TG87MDtMOzs7OztOOzs7OzsKKzEzNTk7RVRISU9QSUMgU1lMTEFCTEUgTVlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxMzVBO0VUSElPUElDIFNZTExBQkxFIEZZQTtMbzswO0w7Ozs7O047Ozs7OworMTM2MTtFVEhJT1BJQyBXT1JEU1BBQ0U7UG87MDtMOzs7OztOOzs7OzsKKzEzNjI7RVRISU9QSUMgRlVMTCBTVE9QO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxMzYzO0VUSElPUElDIENPTU1BO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxMzY0O0VUSElPUElDIFNFTUlDT0xPTjtQbzswO0w7Ozs7O047Ozs7OworMTM2NTtFVEhJT1BJQyBDT0xPTjtQbzswO0w7Ozs7O047Ozs7OworMTM2NjtFVEhJT1BJQyBQUkVGQUNFIENPTE9OO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxMzY3O0VUSElPUElDIFFVRVNUSU9OIE1BUks7UG87MDtMOzs7OztOOzs7OzsKKzEzNjg7RVRISU9QSUMgUEFSQUdSQVBIIFNFUEFSQVRPUjtQbzswO0w7Ozs7O047Ozs7OworMTM2OTtFVEhJT1BJQyBESUdJVCBPTkU7TmQ7MDtMOzsxOzE7MTtOOzs7OzsKKzEzNkE7RVRISU9QSUMgRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CisxMzZCO0VUSElPUElDIERJR0lUIFRIUkVFO05kOzA7TDs7MzszOzM7Tjs7Ozs7CisxMzZDO0VUSElPUElDIERJR0lUIEZPVVI7TmQ7MDtMOzs0OzQ7NDtOOzs7OzsKKzEzNkQ7RVRISU9QSUMgRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMTM2RTtFVEhJT1BJQyBESUdJVCBTSVg7TmQ7MDtMOzs2OzY7NjtOOzs7OzsKKzEzNkY7RVRISU9QSUMgRElHSVQgU0VWRU47TmQ7MDtMOzs3Ozc7NztOOzs7OzsKKzEzNzA7RVRISU9QSUMgRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzEzNzE7RVRISU9QSUMgRElHSVQgTklORTtOZDswO0w7Ozk7OTs5O047Ozs7OworMTM3MjtFVEhJT1BJQyBOVU1CRVIgVEVOO05vOzA7TDs7OzsxMDtOOzs7OzsKKzEzNzM7RVRISU9QSUMgTlVNQkVSIFRXRU5UWTtObzswO0w7Ozs7MjA7Tjs7Ozs7CisxMzc0O0VUSElPUElDIE5VTUJFUiBUSElSVFk7Tm87MDtMOzs7OzMwO047Ozs7OworMTM3NTtFVEhJT1BJQyBOVU1CRVIgRk9SVFk7Tm87MDtMOzs7OzQwO047Ozs7OworMTM3NjtFVEhJT1BJQyBOVU1CRVIgRklGVFk7Tm87MDtMOzs7OzUwO047Ozs7OworMTM3NztFVEhJT1BJQyBOVU1CRVIgU0lYVFk7Tm87MDtMOzs7OzYwO047Ozs7OworMTM3ODtFVEhJT1BJQyBOVU1CRVIgU0VWRU5UWTtObzswO0w7Ozs7NzA7Tjs7Ozs7CisxMzc5O0VUSElPUElDIE5VTUJFUiBFSUdIVFk7Tm87MDtMOzs7OzgwO047Ozs7OworMTM3QTtFVEhJT1BJQyBOVU1CRVIgTklORVRZO05vOzA7TDs7Ozs5MDtOOzs7OzsKKzEzN0I7RVRISU9QSUMgTlVNQkVSIEhVTkRSRUQ7Tm87MDtMOzs7OzEwMDtOOzs7OzsKKzEzN0M7RVRISU9QSUMgTlVNQkVSIFRFTiBUSE9VU0FORDtObzswO0w7Ozs7MTAwMDA7Tjs7Ozs7CisxM0EwO0NIRVJPS0VFIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0ExO0NIRVJPS0VFIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0EyO0NIRVJPS0VFIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0EzO0NIRVJPS0VFIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0E0O0NIRVJPS0VFIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0E1O0NIRVJPS0VFIExFVFRFUiBWO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0E2O0NIRVJPS0VFIExFVFRFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMTNBNztDSEVST0tFRSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzEzQTg7Q0hFUk9LRUUgTEVUVEVSIEdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0E5O0NIRVJPS0VFIExFVFRFUiBHSTtMbzswO0w7Ozs7O047Ozs7OworMTNBQTtDSEVST0tFRSBMRVRURVIgR087TG87MDtMOzs7OztOOzs7OzsKKzEzQUI7Q0hFUk9LRUUgTEVUVEVSIEdVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0FDO0NIRVJPS0VFIExFVFRFUiBHVjtMbzswO0w7Ozs7O047Ozs7OworMTNBRDtDSEVST0tFRSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzEzQUU7Q0hFUk9LRUUgTEVUVEVSIEhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0FGO0NIRVJPS0VFIExFVFRFUiBISTtMbzswO0w7Ozs7O047Ozs7OworMTNCMDtDSEVST0tFRSBMRVRURVIgSE87TG87MDtMOzs7OztOOzs7OzsKKzEzQjE7Q0hFUk9LRUUgTEVUVEVSIEhVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0IyO0NIRVJPS0VFIExFVFRFUiBIVjtMbzswO0w7Ozs7O047Ozs7OworMTNCMztDSEVST0tFRSBMRVRURVIgTEE7TG87MDtMOzs7OztOOzs7OzsKKzEzQjQ7Q0hFUk9LRUUgTEVUVEVSIExFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0I1O0NIRVJPS0VFIExFVFRFUiBMSTtMbzswO0w7Ozs7O047Ozs7OworMTNCNjtDSEVST0tFRSBMRVRURVIgTE87TG87MDtMOzs7OztOOzs7OzsKKzEzQjc7Q0hFUk9LRUUgTEVUVEVSIExVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0I4O0NIRVJPS0VFIExFVFRFUiBMVjtMbzswO0w7Ozs7O047Ozs7OworMTNCOTtDSEVST0tFRSBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzEzQkE7Q0hFUk9LRUUgTEVUVEVSIE1FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0JCO0NIRVJPS0VFIExFVFRFUiBNSTtMbzswO0w7Ozs7O047Ozs7OworMTNCQztDSEVST0tFRSBMRVRURVIgTU87TG87MDtMOzs7OztOOzs7OzsKKzEzQkQ7Q0hFUk9LRUUgTEVUVEVSIE1VO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0JFO0NIRVJPS0VFIExFVFRFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMTNCRjtDSEVST0tFRSBMRVRURVIgSE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0MwO0NIRVJPS0VFIExFVFRFUiBOQUg7TG87MDtMOzs7OztOOzs7OzsKKzEzQzE7Q0hFUk9LRUUgTEVUVEVSIE5FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0MyO0NIRVJPS0VFIExFVFRFUiBOSTtMbzswO0w7Ozs7O047Ozs7OworMTNDMztDSEVST0tFRSBMRVRURVIgTk87TG87MDtMOzs7OztOOzs7OzsKKzEzQzQ7Q0hFUk9LRUUgTEVUVEVSIE5VO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0M1O0NIRVJPS0VFIExFVFRFUiBOVjtMbzswO0w7Ozs7O047Ozs7OworMTNDNjtDSEVST0tFRSBMRVRURVIgUVVBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0M3O0NIRVJPS0VFIExFVFRFUiBRVUU7TG87MDtMOzs7OztOOzs7OzsKKzEzQzg7Q0hFUk9LRUUgTEVUVEVSIFFVSTtMbzswO0w7Ozs7O047Ozs7OworMTNDOTtDSEVST0tFRSBMRVRURVIgUVVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0NBO0NIRVJPS0VFIExFVFRFUiBRVVU7TG87MDtMOzs7OztOOzs7OzsKKzEzQ0I7Q0hFUk9LRUUgTEVUVEVSIFFVVjtMbzswO0w7Ozs7O047Ozs7OworMTNDQztDSEVST0tFRSBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzEzQ0Q7Q0hFUk9LRUUgTEVUVEVSIFM7TG87MDtMOzs7OztOOzs7OzsKKzEzQ0U7Q0hFUk9LRUUgTEVUVEVSIFNFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0NGO0NIRVJPS0VFIExFVFRFUiBTSTtMbzswO0w7Ozs7O047Ozs7OworMTNEMDtDSEVST0tFRSBMRVRURVIgU087TG87MDtMOzs7OztOOzs7OzsKKzEzRDE7Q0hFUk9LRUUgTEVUVEVSIFNVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0QyO0NIRVJPS0VFIExFVFRFUiBTVjtMbzswO0w7Ozs7O047Ozs7OworMTNEMztDSEVST0tFRSBMRVRURVIgREE7TG87MDtMOzs7OztOOzs7OzsKKzEzRDQ7Q0hFUk9LRUUgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0Q1O0NIRVJPS0VFIExFVFRFUiBERTtMbzswO0w7Ozs7O047Ozs7OworMTNENjtDSEVST0tFRSBMRVRURVIgVEU7TG87MDtMOzs7OztOOzs7OzsKKzEzRDc7Q0hFUk9LRUUgTEVUVEVSIERJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0Q4O0NIRVJPS0VFIExFVFRFUiBUSTtMbzswO0w7Ozs7O047Ozs7OworMTNEOTtDSEVST0tFRSBMRVRURVIgRE87TG87MDtMOzs7OztOOzs7OzsKKzEzREE7Q0hFUk9LRUUgTEVUVEVSIERVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0RCO0NIRVJPS0VFIExFVFRFUiBEVjtMbzswO0w7Ozs7O047Ozs7OworMTNEQztDSEVST0tFRSBMRVRURVIgRExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0REO0NIRVJPS0VFIExFVFRFUiBUTEE7TG87MDtMOzs7OztOOzs7OzsKKzEzREU7Q0hFUk9LRUUgTEVUVEVSIFRMRTtMbzswO0w7Ozs7O047Ozs7OworMTNERjtDSEVST0tFRSBMRVRURVIgVExJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0UwO0NIRVJPS0VFIExFVFRFUiBUTE87TG87MDtMOzs7OztOOzs7OzsKKzEzRTE7Q0hFUk9LRUUgTEVUVEVSIFRMVTtMbzswO0w7Ozs7O047Ozs7OworMTNFMjtDSEVST0tFRSBMRVRURVIgVExWO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0UzO0NIRVJPS0VFIExFVFRFUiBUU0E7TG87MDtMOzs7OztOOzs7OzsKKzEzRTQ7Q0hFUk9LRUUgTEVUVEVSIFRTRTtMbzswO0w7Ozs7O047Ozs7OworMTNFNTtDSEVST0tFRSBMRVRURVIgVFNJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0U2O0NIRVJPS0VFIExFVFRFUiBUU087TG87MDtMOzs7OztOOzs7OzsKKzEzRTc7Q0hFUk9LRUUgTEVUVEVSIFRTVTtMbzswO0w7Ozs7O047Ozs7OworMTNFODtDSEVST0tFRSBMRVRURVIgVFNWO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0U5O0NIRVJPS0VFIExFVFRFUiBXQTtMbzswO0w7Ozs7O047Ozs7OworMTNFQTtDSEVST0tFRSBMRVRURVIgV0U7TG87MDtMOzs7OztOOzs7OzsKKzEzRUI7Q0hFUk9LRUUgTEVUVEVSIFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0VDO0NIRVJPS0VFIExFVFRFUiBXTztMbzswO0w7Ozs7O047Ozs7OworMTNFRDtDSEVST0tFRSBMRVRURVIgV1U7TG87MDtMOzs7OztOOzs7OzsKKzEzRUU7Q0hFUk9LRUUgTEVUVEVSIFdWO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0VGO0NIRVJPS0VFIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMTNGMDtDSEVST0tFRSBMRVRURVIgWUU7TG87MDtMOzs7OztOOzs7OzsKKzEzRjE7Q0hFUk9LRUUgTEVUVEVSIFlJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxM0YyO0NIRVJPS0VFIExFVFRFUiBZTztMbzswO0w7Ozs7O047Ozs7OworMTNGMztDSEVST0tFRSBMRVRURVIgWVU7TG87MDtMOzs7OztOOzs7OzsKKzEzRjQ7Q0hFUk9LRUUgTEVUVEVSIFlWO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDAxO0NBTkFESUFOIFNZTExBQklDUyBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDAyO0NBTkFESUFOIFNZTExBQklDUyBBQUk7TG87MDtMOzs7OztOOzs7OzsKKzE0MDM7Q0FOQURJQU4gU1lMTEFCSUNTIEk7TG87MDtMOzs7OztOOzs7OzsKKzE0MDQ7Q0FOQURJQU4gU1lMTEFCSUNTIElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDA1O0NBTkFESUFOIFNZTExBQklDUyBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDA2O0NBTkFESUFOIFNZTExBQklDUyBPTztMbzswO0w7Ozs7O047Ozs7OworMTQwNztDQU5BRElBTiBTWUxMQUJJQ1MgWS1DUkVFIE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDA4O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDA5O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzE0MEE7Q0FOQURJQU4gU1lMTEFCSUNTIEE7TG87MDtMOzs7OztOOzs7OzsKKzE0MEI7Q0FOQURJQU4gU1lMTEFCSUNTIEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDBDO0NBTkFESUFOIFNZTExBQklDUyBXRTtMbzswO0w7Ozs7O047Ozs7OworMTQwRDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDBFO0NBTkFESUFOIFNZTExBQklDUyBXSTtMbzswO0w7Ozs7O047Ozs7OworMTQwRjtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDEwO0NBTkFESUFOIFNZTExBQklDUyBXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0MTE7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0MTI7Q0FOQURJQU4gU1lMTEFCSUNTIFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDEzO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgV087TG87MDtMOzs7OztOOzs7OzsKKzE0MTQ7Q0FOQURJQU4gU1lMTEFCSUNTIFdPTztMbzswO0w7Ozs7O047Ozs7OworMTQxNTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFdPTztMbzswO0w7Ozs7O047Ozs7OworMTQxNjtDQU5BRElBTiBTWUxMQUJJQ1MgTkFTS0FQSSBXT087TG87MDtMOzs7OztOOzs7OzsKKzE0MTc7Q0FOQURJQU4gU1lMTEFCSUNTIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDE4O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgV0E7TG87MDtMOzs7OztOOzs7OzsKKzE0MTk7Q0FOQURJQU4gU1lMTEFCSUNTIFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTQxQTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTQxQjtDQU5BRElBTiBTWUxMQUJJQ1MgTkFTS0FQSSBXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0MUM7Q0FOQURJQU4gU1lMTEFCSUNTIEFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDFEO0NBTkFESUFOIFNZTExBQklDUyBZLUNSRUUgVztMbzswO0w7Ozs7O047Ozs7OworMTQxRTtDQU5BRElBTiBTWUxMQUJJQ1MgR0xPVFRBTCBTVE9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDFGO0NBTkFESUFOIFNZTExBQklDUyBGSU5BTCBBQ1VURTtMbzswO0w7Ozs7O047Ozs7OworMTQyMDtDQU5BRElBTiBTWUxMQUJJQ1MgRklOQUwgR1JBVkU7TG87MDtMOzs7OztOOzs7OzsKKzE0MjE7Q0FOQURJQU4gU1lMTEFCSUNTIEZJTkFMIEJPVFRPTSBIQUxGIFJJTkc7TG87MDtMOzs7OztOOzs7OzsKKzE0MjI7Q0FOQURJQU4gU1lMTEFCSUNTIEZJTkFMIFRPUCBIQUxGIFJJTkc7TG87MDtMOzs7OztOOzs7OzsKKzE0MjM7Q0FOQURJQU4gU1lMTEFCSUNTIEZJTkFMIFJJR0hUIEhBTEYgUklORztMbzswO0w7Ozs7O047Ozs7OworMTQyNDtDQU5BRElBTiBTWUxMQUJJQ1MgRklOQUwgUklORztMbzswO0w7Ozs7O047Ozs7OworMTQyNTtDQU5BRElBTiBTWUxMQUJJQ1MgRklOQUwgRE9VQkxFIEFDVVRFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDI2O0NBTkFESUFOIFNZTExBQklDUyBGSU5BTCBET1VCTEUgU0hPUlQgVkVSVElDQUwgU1RST0tFUztMbzswO0w7Ozs7O047Ozs7OworMTQyNztDQU5BRElBTiBTWUxMQUJJQ1MgRklOQUwgTUlERExFIERPVDtMbzswO0w7Ozs7O047Ozs7OworMTQyODtDQU5BRElBTiBTWUxMQUJJQ1MgRklOQUwgU0hPUlQgSE9SSVpPTlRBTCBTVFJPS0U7TG87MDtMOzs7OztOOzs7OzsKKzE0Mjk7Q0FOQURJQU4gU1lMTEFCSUNTIEZJTkFMIFBMVVM7TG87MDtMOzs7OztOOzs7OzsKKzE0MkE7Q0FOQURJQU4gU1lMTEFCSUNTIEZJTkFMIERPV04gVEFDSztMbzswO0w7Ozs7O047Ozs7OworMTQyQjtDQU5BRElBTiBTWUxMQUJJQ1MgRU47TG87MDtMOzs7OztOOzs7OzsKKzE0MkM7Q0FOQURJQU4gU1lMTEFCSUNTIElOO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDJEO0NBTkFESUFOIFNZTExBQklDUyBPTjtMbzswO0w7Ozs7O047Ozs7OworMTQyRTtDQU5BRElBTiBTWUxMQUJJQ1MgQU47TG87MDtMOzs7OztOOzs7OzsKKzE0MkY7Q0FOQURJQU4gU1lMTEFCSUNTIFBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDMwO0NBTkFESUFOIFNZTExBQklDUyBQQUFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDMxO0NBTkFESUFOIFNZTExBQklDUyBQSTtMbzswO0w7Ozs7O047Ozs7OworMTQzMjtDQU5BRElBTiBTWUxMQUJJQ1MgUElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDMzO0NBTkFESUFOIFNZTExBQklDUyBQTztMbzswO0w7Ozs7O047Ozs7OworMTQzNDtDQU5BRElBTiBTWUxMQUJJQ1MgUE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDM1O0NBTkFESUFOIFNZTExBQklDUyBZLUNSRUUgUE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDM2O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEhFRTtMbzswO0w7Ozs7O047Ozs7OworMTQzNztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBISTtMbzswO0w7Ozs7O047Ozs7OworMTQzODtDQU5BRElBTiBTWUxMQUJJQ1MgUEE7TG87MDtMOzs7OztOOzs7OzsKKzE0Mzk7Q0FOQURJQU4gU1lMTEFCSUNTIFBBQTtMbzswO0w7Ozs7O047Ozs7OworMTQzQTtDQU5BRElBTiBTWUxMQUJJQ1MgUFdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDNCO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgUFdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDNDO0NBTkFESUFOIFNZTExBQklDUyBQV0k7TG87MDtMOzs7OztOOzs7OzsKKzE0M0Q7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBQV0k7TG87MDtMOzs7OztOOzs7OzsKKzE0M0U7Q0FOQURJQU4gU1lMTEFCSUNTIFBXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0M0Y7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBQV0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDQwO0NBTkFESUFOIFNZTExBQklDUyBQV087TG87MDtMOzs7OztOOzs7OzsKKzE0NDE7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBQV087TG87MDtMOzs7OztOOzs7OzsKKzE0NDI7Q0FOQURJQU4gU1lMTEFCSUNTIFBXT087TG87MDtMOzs7OztOOzs7OzsKKzE0NDM7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBQV09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDQ0O0NBTkFESUFOIFNZTExBQklDUyBQV0E7TG87MDtMOzs7OztOOzs7OzsKKzE0NDU7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBQV0E7TG87MDtMOzs7OztOOzs7OzsKKzE0NDY7Q0FOQURJQU4gU1lMTEFCSUNTIFBXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0NDc7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBQV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDQ4O0NBTkFESUFOIFNZTExBQklDUyBZLUNSRUUgUFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTQ0OTtDQU5BRElBTiBTWUxMQUJJQ1MgUDtMbzswO0w7Ozs7O047Ozs7OworMTQ0QTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFA7TG87MDtMOzs7OztOOzs7OzsKKzE0NEI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSDtMbzswO0w7Ozs7O047Ozs7OworMTQ0QztDQU5BRElBTiBTWUxMQUJJQ1MgVEU7TG87MDtMOzs7OztOOzs7OzsKKzE0NEQ7Q0FOQURJQU4gU1lMTEFCSUNTIFRBQUk7TG87MDtMOzs7OztOOzs7OzsKKzE0NEU7Q0FOQURJQU4gU1lMTEFCSUNTIFRJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDRGO0NBTkFESUFOIFNZTExBQklDUyBUSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0NTA7Q0FOQURJQU4gU1lMTEFCSUNTIFRPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDUxO0NBTkFESUFOIFNZTExBQklDUyBUT087TG87MDtMOzs7OztOOzs7OzsKKzE0NTI7Q0FOQURJQU4gU1lMTEFCSUNTIFktQ1JFRSBUT087TG87MDtMOzs7OztOOzs7OzsKKzE0NTM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgREVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDU0O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIERJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDU1O0NBTkFESUFOIFNZTExBQklDUyBUQTtMbzswO0w7Ozs7O047Ozs7OworMTQ1NjtDQU5BRElBTiBTWUxMQUJJQ1MgVEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDU3O0NBTkFESUFOIFNZTExBQklDUyBUV0U7TG87MDtMOzs7OztOOzs7OzsKKzE0NTg7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBUV0U7TG87MDtMOzs7OztOOzs7OzsKKzE0NTk7Q0FOQURJQU4gU1lMTEFCSUNTIFRXSTtMbzswO0w7Ozs7O047Ozs7OworMTQ1QTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFRXSTtMbzswO0w7Ozs7O047Ozs7OworMTQ1QjtDQU5BRElBTiBTWUxMQUJJQ1MgVFdJSTtMbzswO0w7Ozs7O047Ozs7OworMTQ1QztDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFRXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0NUQ7Q0FOQURJQU4gU1lMTEFCSUNTIFRXTztMbzswO0w7Ozs7O047Ozs7OworMTQ1RTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFRXTztMbzswO0w7Ozs7O047Ozs7OworMTQ1RjtDQU5BRElBTiBTWUxMQUJJQ1MgVFdPTztMbzswO0w7Ozs7O047Ozs7OworMTQ2MDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFRXT087TG87MDtMOzs7OztOOzs7OzsKKzE0NjE7Q0FOQURJQU4gU1lMTEFCSUNTIFRXQTtMbzswO0w7Ozs7O047Ozs7OworMTQ2MjtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFRXQTtMbzswO0w7Ozs7O047Ozs7OworMTQ2MztDQU5BRElBTiBTWUxMQUJJQ1MgVFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTQ2NDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFRXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0NjU7Q0FOQURJQU4gU1lMTEFCSUNTIE5BU0tBUEkgVFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTQ2NjtDQU5BRElBTiBTWUxMQUJJQ1MgVDtMbzswO0w7Ozs7O047Ozs7OworMTQ2NztDQU5BRElBTiBTWUxMQUJJQ1MgVFRFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDY4O0NBTkFESUFOIFNZTExBQklDUyBUVEk7TG87MDtMOzs7OztOOzs7OzsKKzE0Njk7Q0FOQURJQU4gU1lMTEFCSUNTIFRUTztMbzswO0w7Ozs7O047Ozs7OworMTQ2QTtDQU5BRElBTiBTWUxMQUJJQ1MgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDZCO0NBTkFESUFOIFNZTExBQklDUyBLRTtMbzswO0w7Ozs7O047Ozs7OworMTQ2QztDQU5BRElBTiBTWUxMQUJJQ1MgS0FBSTtMbzswO0w7Ozs7O047Ozs7OworMTQ2RDtDQU5BRElBTiBTWUxMQUJJQ1MgS0k7TG87MDtMOzs7OztOOzs7OzsKKzE0NkU7Q0FOQURJQU4gU1lMTEFCSUNTIEtJSTtMbzswO0w7Ozs7O047Ozs7OworMTQ2RjtDQU5BRElBTiBTWUxMQUJJQ1MgS087TG87MDtMOzs7OztOOzs7OzsKKzE0NzA7Q0FOQURJQU4gU1lMTEFCSUNTIEtPTztMbzswO0w7Ozs7O047Ozs7OworMTQ3MTtDQU5BRElBTiBTWUxMQUJJQ1MgWS1DUkVFIEtPTztMbzswO0w7Ozs7O047Ozs7OworMTQ3MjtDQU5BRElBTiBTWUxMQUJJQ1MgS0E7TG87MDtMOzs7OztOOzs7OzsKKzE0NzM7Q0FOQURJQU4gU1lMTEFCSUNTIEtBQTtMbzswO0w7Ozs7O047Ozs7OworMTQ3NDtDQU5BRElBTiBTWUxMQUJJQ1MgS1dFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDc1O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgS1dFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDc2O0NBTkFESUFOIFNZTExBQklDUyBLV0k7TG87MDtMOzs7OztOOzs7OzsKKzE0Nzc7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBLV0k7TG87MDtMOzs7OztOOzs7OzsKKzE0Nzg7Q0FOQURJQU4gU1lMTEFCSUNTIEtXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0Nzk7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBLV0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDdBO0NBTkFESUFOIFNZTExBQklDUyBLV087TG87MDtMOzs7OztOOzs7OzsKKzE0N0I7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBLV087TG87MDtMOzs7OztOOzs7OzsKKzE0N0M7Q0FOQURJQU4gU1lMTEFCSUNTIEtXT087TG87MDtMOzs7OztOOzs7OzsKKzE0N0Q7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBLV09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDdFO0NBTkFESUFOIFNZTExBQklDUyBLV0E7TG87MDtMOzs7OztOOzs7OzsKKzE0N0Y7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBLV0E7TG87MDtMOzs7OztOOzs7OzsKKzE0ODA7Q0FOQURJQU4gU1lMTEFCSUNTIEtXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0ODE7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBLV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDgyO0NBTkFESUFOIFNZTExBQklDUyBOQVNLQVBJIEtXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0ODM7Q0FOQURJQU4gU1lMTEFCSUNTIEs7TG87MDtMOzs7OztOOzs7OzsKKzE0ODQ7Q0FOQURJQU4gU1lMTEFCSUNTIEtXO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDg1O0NBTkFESUFOIFNZTExBQklDUyBTT1VUSC1TTEFWRVkgS0VIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDg2O0NBTkFESUFOIFNZTExBQklDUyBTT1VUSC1TTEFWRVkgS0lIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDg3O0NBTkFESUFOIFNZTExBQklDUyBTT1VUSC1TTEFWRVkgS09IO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDg4O0NBTkFESUFOIFNZTExBQklDUyBTT1VUSC1TTEFWRVkgS0FIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDg5O0NBTkFESUFOIFNZTExBQklDUyBDRTtMbzswO0w7Ozs7O047Ozs7OworMTQ4QTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FBSTtMbzswO0w7Ozs7O047Ozs7OworMTQ4QjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0k7TG87MDtMOzs7OztOOzs7OzsKKzE0OEM7Q0FOQURJQU4gU1lMTEFCSUNTIENJSTtMbzswO0w7Ozs7O047Ozs7OworMTQ4RDtDQU5BRElBTiBTWUxMQUJJQ1MgQ087TG87MDtMOzs7OztOOzs7OzsKKzE0OEU7Q0FOQURJQU4gU1lMTEFCSUNTIENPTztMbzswO0w7Ozs7O047Ozs7OworMTQ4RjtDQU5BRElBTiBTWUxMQUJJQ1MgWS1DUkVFIENPTztMbzswO0w7Ozs7O047Ozs7OworMTQ5MDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzE0OTE7Q0FOQURJQU4gU1lMTEFCSUNTIENBQTtMbzswO0w7Ozs7O047Ozs7OworMTQ5MjtDQU5BRElBTiBTWUxMQUJJQ1MgQ1dFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDkzO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgQ1dFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDk0O0NBTkFESUFOIFNZTExBQklDUyBDV0k7TG87MDtMOzs7OztOOzs7OzsKKzE0OTU7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBDV0k7TG87MDtMOzs7OztOOzs7OzsKKzE0OTY7Q0FOQURJQU4gU1lMTEFCSUNTIENXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0OTc7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBDV0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDk4O0NBTkFESUFOIFNZTExBQklDUyBDV087TG87MDtMOzs7OztOOzs7OzsKKzE0OTk7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBDV087TG87MDtMOzs7OztOOzs7OzsKKzE0OUE7Q0FOQURJQU4gU1lMTEFCSUNTIENXT087TG87MDtMOzs7OztOOzs7OzsKKzE0OUI7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBDV09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNDlDO0NBTkFESUFOIFNZTExBQklDUyBDV0E7TG87MDtMOzs7OztOOzs7OzsKKzE0OUQ7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBDV0E7TG87MDtMOzs7OztOOzs7OzsKKzE0OUU7Q0FOQURJQU4gU1lMTEFCSUNTIENXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0OUY7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBDV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEEwO0NBTkFESUFOIFNZTExBQklDUyBOQVNLQVBJIENXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0QTE7Q0FOQURJQU4gU1lMTEFCSUNTIEM7TG87MDtMOzs7OztOOzs7OzsKKzE0QTI7Q0FOQURJQU4gU1lMTEFCSUNTIFNBWUlTSSBUSDtMbzswO0w7Ozs7O047Ozs7OworMTRBMztDQU5BRElBTiBTWUxMQUJJQ1MgTUU7TG87MDtMOzs7OztOOzs7OzsKKzE0QTQ7Q0FOQURJQU4gU1lMTEFCSUNTIE1BQUk7TG87MDtMOzs7OztOOzs7OzsKKzE0QTU7Q0FOQURJQU4gU1lMTEFCSUNTIE1JO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEE2O0NBTkFESUFOIFNZTExBQklDUyBNSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0QTc7Q0FOQURJQU4gU1lMTEFCSUNTIE1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEE4O0NBTkFESUFOIFNZTExBQklDUyBNT087TG87MDtMOzs7OztOOzs7OzsKKzE0QTk7Q0FOQURJQU4gU1lMTEFCSUNTIFktQ1JFRSBNT087TG87MDtMOzs7OztOOzs7OzsKKzE0QUE7Q0FOQURJQU4gU1lMTEFCSUNTIE1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEFCO0NBTkFESUFOIFNZTExBQklDUyBNQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0QUM7Q0FOQURJQU4gU1lMTEFCSUNTIE1XRTtMbzswO0w7Ozs7O047Ozs7OworMTRBRDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIE1XRTtMbzswO0w7Ozs7O047Ozs7OworMTRBRTtDQU5BRElBTiBTWUxMQUJJQ1MgTVdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEFGO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTVdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEIwO0NBTkFESUFOIFNZTExBQklDUyBNV0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEIxO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTVdJSTtMbzswO0w7Ozs7O047Ozs7OworMTRCMjtDQU5BRElBTiBTWUxMQUJJQ1MgTVdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEIzO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTVdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEI0O0NBTkFESUFOIFNZTExBQklDUyBNV09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEI1O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTVdPTztMbzswO0w7Ozs7O047Ozs7OworMTRCNjtDQU5BRElBTiBTWUxMQUJJQ1MgTVdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEI3O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTVdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEI4O0NBTkFESUFOIFNZTExBQklDUyBNV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEI5O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTVdBQTtMbzswO0w7Ozs7O047Ozs7OworMTRCQTtDQU5BRElBTiBTWUxMQUJJQ1MgTkFTS0FQSSBNV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEJCO0NBTkFESUFOIFNZTExBQklDUyBNO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEJDO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTTtMbzswO0w7Ozs7O047Ozs7OworMTRCRDtDQU5BRElBTiBTWUxMQUJJQ1MgTUg7TG87MDtMOzs7OztOOzs7OzsKKzE0QkU7Q0FOQURJQU4gU1lMTEFCSUNTIEFUSEFQQVNDQU4gTTtMbzswO0w7Ozs7O047Ozs7OworMTRCRjtDQU5BRElBTiBTWUxMQUJJQ1MgU0FZSVNJIE07TG87MDtMOzs7OztOOzs7OzsKKzE0QzA7Q0FOQURJQU4gU1lMTEFCSUNTIE5FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEMxO0NBTkFESUFOIFNZTExBQklDUyBOQUFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEMyO0NBTkFESUFOIFNZTExBQklDUyBOSTtMbzswO0w7Ozs7O047Ozs7OworMTRDMztDQU5BRElBTiBTWUxMQUJJQ1MgTklJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEM0O0NBTkFESUFOIFNZTExBQklDUyBOTztMbzswO0w7Ozs7O047Ozs7OworMTRDNTtDQU5BRElBTiBTWUxMQUJJQ1MgTk9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEM2O0NBTkFESUFOIFNZTExBQklDUyBZLUNSRUUgTk9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEM3O0NBTkFESUFOIFNZTExBQklDUyBOQTtMbzswO0w7Ozs7O047Ozs7OworMTRDODtDQU5BRElBTiBTWUxMQUJJQ1MgTkFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEM5O0NBTkFESUFOIFNZTExBQklDUyBOV0U7TG87MDtMOzs7OztOOzs7OzsKKzE0Q0E7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBOV0U7TG87MDtMOzs7OztOOzs7OzsKKzE0Q0I7Q0FOQURJQU4gU1lMTEFCSUNTIE5XQTtMbzswO0w7Ozs7O047Ozs7OworMTRDQztDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIE5XQTtMbzswO0w7Ozs7O047Ozs7OworMTRDRDtDQU5BRElBTiBTWUxMQUJJQ1MgTldBQTtMbzswO0w7Ozs7O047Ozs7OworMTRDRTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIE5XQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0Q0Y7Q0FOQURJQU4gU1lMTEFCSUNTIE5BU0tBUEkgTldBQTtMbzswO0w7Ozs7O047Ozs7OworMTREMDtDQU5BRElBTiBTWUxMQUJJQ1MgTjtMbzswO0w7Ozs7O047Ozs7OworMTREMTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBORztMbzswO0w7Ozs7O047Ozs7OworMTREMjtDQU5BRElBTiBTWUxMQUJJQ1MgTkg7TG87MDtMOzs7OztOOzs7OzsKKzE0RDM7Q0FOQURJQU4gU1lMTEFCSUNTIExFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEQ0O0NBTkFESUFOIFNZTExBQklDUyBMQUFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEQ1O0NBTkFESUFOIFNZTExBQklDUyBMSTtMbzswO0w7Ozs7O047Ozs7OworMTRENjtDQU5BRElBTiBTWUxMQUJJQ1MgTElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEQ3O0NBTkFESUFOIFNZTExBQklDUyBMTztMbzswO0w7Ozs7O047Ozs7OworMTREODtDQU5BRElBTiBTWUxMQUJJQ1MgTE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEQ5O0NBTkFESUFOIFNZTExBQklDUyBZLUNSRUUgTE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNERBO0NBTkFESUFOIFNZTExBQklDUyBMQTtMbzswO0w7Ozs7O047Ozs7OworMTREQjtDQU5BRElBTiBTWUxMQUJJQ1MgTEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNERDO0NBTkFESUFOIFNZTExBQklDUyBMV0U7TG87MDtMOzs7OztOOzs7OzsKKzE0REQ7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBMV0U7TG87MDtMOzs7OztOOzs7OzsKKzE0REU7Q0FOQURJQU4gU1lMTEFCSUNTIExXSTtMbzswO0w7Ozs7O047Ozs7OworMTRERjtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIExXSTtMbzswO0w7Ozs7O047Ozs7OworMTRFMDtDQU5BRElBTiBTWUxMQUJJQ1MgTFdJSTtMbzswO0w7Ozs7O047Ozs7OworMTRFMTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIExXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0RTI7Q0FOQURJQU4gU1lMTEFCSUNTIExXTztMbzswO0w7Ozs7O047Ozs7OworMTRFMztDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIExXTztMbzswO0w7Ozs7O047Ozs7OworMTRFNDtDQU5BRElBTiBTWUxMQUJJQ1MgTFdPTztMbzswO0w7Ozs7O047Ozs7OworMTRFNTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIExXT087TG87MDtMOzs7OztOOzs7OzsKKzE0RTY7Q0FOQURJQU4gU1lMTEFCSUNTIExXQTtMbzswO0w7Ozs7O047Ozs7OworMTRFNztDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIExXQTtMbzswO0w7Ozs7O047Ozs7OworMTRFODtDQU5BRElBTiBTWUxMQUJJQ1MgTFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTRFOTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIExXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0RUE7Q0FOQURJQU4gU1lMTEFCSUNTIEw7TG87MDtMOzs7OztOOzs7OzsKKzE0RUI7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEVDO0NBTkFESUFOIFNZTExBQklDUyBNRURJQUwgTDtMbzswO0w7Ozs7O047Ozs7OworMTRFRDtDQU5BRElBTiBTWUxMQUJJQ1MgU0U7TG87MDtMOzs7OztOOzs7OzsKKzE0RUU7Q0FOQURJQU4gU1lMTEFCSUNTIFNBQUk7TG87MDtMOzs7OztOOzs7OzsKKzE0RUY7Q0FOQURJQU4gU1lMTEFCSUNTIFNJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEYwO0NBTkFESUFOIFNZTExBQklDUyBTSUk7TG87MDtMOzs7OztOOzs7OzsKKzE0RjE7Q0FOQURJQU4gU1lMTEFCSUNTIFNPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEYyO0NBTkFESUFOIFNZTExBQklDUyBTT087TG87MDtMOzs7OztOOzs7OzsKKzE0RjM7Q0FOQURJQU4gU1lMTEFCSUNTIFktQ1JFRSBTT087TG87MDtMOzs7OztOOzs7OzsKKzE0RjQ7Q0FOQURJQU4gU1lMTEFCSUNTIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEY1O0NBTkFESUFOIFNZTExBQklDUyBTQUE7TG87MDtMOzs7OztOOzs7OzsKKzE0RjY7Q0FOQURJQU4gU1lMTEFCSUNTIFNXRTtMbzswO0w7Ozs7O047Ozs7OworMTRGNztDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFNXRTtMbzswO0w7Ozs7O047Ozs7OworMTRGODtDQU5BRElBTiBTWUxMQUJJQ1MgU1dJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEY5O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgU1dJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEZBO0NBTkFESUFOIFNZTExBQklDUyBTV0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEZCO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgU1dJSTtMbzswO0w7Ozs7O047Ozs7OworMTRGQztDQU5BRElBTiBTWUxMQUJJQ1MgU1dPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEZEO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgU1dPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEZFO0NBTkFESUFOIFNZTExBQklDUyBTV09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNEZGO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgU1dPTztMbzswO0w7Ozs7O047Ozs7OworMTUwMDtDQU5BRElBTiBTWUxMQUJJQ1MgU1dBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTAxO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgU1dBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTAyO0NBTkFESUFOIFNZTExBQklDUyBTV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTAzO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgU1dBQTtMbzswO0w7Ozs7O047Ozs7OworMTUwNDtDQU5BRElBTiBTWUxMQUJJQ1MgTkFTS0FQSSBTV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTA1O0NBTkFESUFOIFNZTExBQklDUyBTO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTA2O0NBTkFESUFOIFNZTExBQklDUyBBVEhBUEFTQ0FOIFM7TG87MDtMOzs7OztOOzs7OzsKKzE1MDc7Q0FOQURJQU4gU1lMTEFCSUNTIFNXO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTA4O0NBTkFESUFOIFNZTExBQklDUyBCTEFDS0ZPT1QgUztMbzswO0w7Ozs7O047Ozs7OworMTUwOTtDQU5BRElBTiBTWUxMQUJJQ1MgTU9PU0UtQ1JFRSBTSztMbzswO0w7Ozs7O047Ozs7OworMTUwQTtDQU5BRElBTiBTWUxMQUJJQ1MgTkFTS0FQSSBTS1c7TG87MDtMOzs7OztOOzs7OzsKKzE1MEI7Q0FOQURJQU4gU1lMTEFCSUNTIE5BU0tBUEkgUy1XO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTBDO0NBTkFESUFOIFNZTExBQklDUyBOQVNLQVBJIFNQV0E7TG87MDtMOzs7OztOOzs7OzsKKzE1MEQ7Q0FOQURJQU4gU1lMTEFCSUNTIE5BU0tBUEkgU1RXQTtMbzswO0w7Ozs7O047Ozs7OworMTUwRTtDQU5BRElBTiBTWUxMQUJJQ1MgTkFTS0FQSSBTS1dBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTBGO0NBTkFESUFOIFNZTExBQklDUyBOQVNLQVBJIFNDV0E7TG87MDtMOzs7OztOOzs7OzsKKzE1MTA7Q0FOQURJQU4gU1lMTEFCSUNTIFNIRTtMbzswO0w7Ozs7O047Ozs7OworMTUxMTtDQU5BRElBTiBTWUxMQUJJQ1MgU0hJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTEyO0NBTkFESUFOIFNZTExBQklDUyBTSElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTEzO0NBTkFESUFOIFNZTExBQklDUyBTSE87TG87MDtMOzs7OztOOzs7OzsKKzE1MTQ7Q0FOQURJQU4gU1lMTEFCSUNTIFNIT087TG87MDtMOzs7OztOOzs7OzsKKzE1MTU7Q0FOQURJQU4gU1lMTEFCSUNTIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMTUxNjtDQU5BRElBTiBTWUxMQUJJQ1MgU0hBQTtMbzswO0w7Ozs7O047Ozs7OworMTUxNztDQU5BRElBTiBTWUxMQUJJQ1MgU0hXRTtMbzswO0w7Ozs7O047Ozs7OworMTUxODtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFNIV0U7TG87MDtMOzs7OztOOzs7OzsKKzE1MTk7Q0FOQURJQU4gU1lMTEFCSUNTIFNIV0k7TG87MDtMOzs7OztOOzs7OzsKKzE1MUE7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBTSFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTFCO0NBTkFESUFOIFNZTExBQklDUyBTSFdJSTtMbzswO0w7Ozs7O047Ozs7OworMTUxQztDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFNIV0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTFEO0NBTkFESUFOIFNZTExBQklDUyBTSFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTFFO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgU0hXTztMbzswO0w7Ozs7O047Ozs7OworMTUxRjtDQU5BRElBTiBTWUxMQUJJQ1MgU0hXT087TG87MDtMOzs7OztOOzs7OzsKKzE1MjA7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBTSFdPTztMbzswO0w7Ozs7O047Ozs7OworMTUyMTtDQU5BRElBTiBTWUxMQUJJQ1MgU0hXQTtMbzswO0w7Ozs7O047Ozs7OworMTUyMjtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFNIV0E7TG87MDtMOzs7OztOOzs7OzsKKzE1MjM7Q0FOQURJQU4gU1lMTEFCSUNTIFNIV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTI0O0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgU0hXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1MjU7Q0FOQURJQU4gU1lMTEFCSUNTIFNIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTI2O0NBTkFESUFOIFNZTExBQklDUyBZRTtMbzswO0w7Ozs7O047Ozs7OworMTUyNztDQU5BRElBTiBTWUxMQUJJQ1MgWUFBSTtMbzswO0w7Ozs7O047Ozs7OworMTUyODtDQU5BRElBTiBTWUxMQUJJQ1MgWUk7TG87MDtMOzs7OztOOzs7OzsKKzE1Mjk7Q0FOQURJQU4gU1lMTEFCSUNTIFlJSTtMbzswO0w7Ozs7O047Ozs7OworMTUyQTtDQU5BRElBTiBTWUxMQUJJQ1MgWU87TG87MDtMOzs7OztOOzs7OzsKKzE1MkI7Q0FOQURJQU4gU1lMTEFCSUNTIFlPTztMbzswO0w7Ozs7O047Ozs7OworMTUyQztDQU5BRElBTiBTWUxMQUJJQ1MgWS1DUkVFIFlPTztMbzswO0w7Ozs7O047Ozs7OworMTUyRDtDQU5BRElBTiBTWUxMQUJJQ1MgWUE7TG87MDtMOzs7OztOOzs7OzsKKzE1MkU7Q0FOQURJQU4gU1lMTEFCSUNTIFlBQTtMbzswO0w7Ozs7O047Ozs7OworMTUyRjtDQU5BRElBTiBTWUxMQUJJQ1MgWVdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTMwO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgWVdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTMxO0NBTkFESUFOIFNZTExBQklDUyBZV0k7TG87MDtMOzs7OztOOzs7OzsKKzE1MzI7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBZV0k7TG87MDtMOzs7OztOOzs7OzsKKzE1MzM7Q0FOQURJQU4gU1lMTEFCSUNTIFlXSUk7TG87MDtMOzs7OztOOzs7OzsKKzE1MzQ7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBZV0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTM1O0NBTkFESUFOIFNZTExBQklDUyBZV087TG87MDtMOzs7OztOOzs7OzsKKzE1MzY7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBZV087TG87MDtMOzs7OztOOzs7OzsKKzE1Mzc7Q0FOQURJQU4gU1lMTEFCSUNTIFlXT087TG87MDtMOzs7OztOOzs7OzsKKzE1Mzg7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBZV09PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTM5O0NBTkFESUFOIFNZTExBQklDUyBZV0E7TG87MDtMOzs7OztOOzs7OzsKKzE1M0E7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBZV0E7TG87MDtMOzs7OztOOzs7OzsKKzE1M0I7Q0FOQURJQU4gU1lMTEFCSUNTIFlXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1M0M7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBZV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTNEO0NBTkFESUFOIFNZTExBQklDUyBOQVNLQVBJIFlXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1M0U7Q0FOQURJQU4gU1lMTEFCSUNTIFk7TG87MDtMOzs7OztOOzs7OzsKKzE1M0Y7Q0FOQURJQU4gU1lMTEFCSUNTIEJJQkxFLUNSRUUgWTtMbzswO0w7Ozs7O047Ozs7OworMTU0MDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFk7TG87MDtMOzs7OztOOzs7OzsKKzE1NDE7Q0FOQURJQU4gU1lMTEFCSUNTIFNBWUlTSSBZSTtMbzswO0w7Ozs7O047Ozs7OworMTU0MjtDQU5BRElBTiBTWUxMQUJJQ1MgUkU7TG87MDtMOzs7OztOOzs7OzsKKzE1NDM7Q0FOQURJQU4gU1lMTEFCSUNTIFItQ1JFRSBSRTtMbzswO0w7Ozs7O047Ozs7OworMTU0NDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIExFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTQ1O0NBTkFESUFOIFNZTExBQklDUyBSQUFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTQ2O0NBTkFESUFOIFNZTExBQklDUyBSSTtMbzswO0w7Ozs7O047Ozs7OworMTU0NztDQU5BRElBTiBTWUxMQUJJQ1MgUklJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTQ4O0NBTkFESUFOIFNZTExBQklDUyBSTztMbzswO0w7Ozs7O047Ozs7OworMTU0OTtDQU5BRElBTiBTWUxMQUJJQ1MgUk9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTRBO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgTE87TG87MDtMOzs7OztOOzs7OzsKKzE1NEI7Q0FOQURJQU4gU1lMTEFCSUNTIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTRDO0NBTkFESUFOIFNZTExBQklDUyBSQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1NEQ7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBMQTtMbzswO0w7Ozs7O047Ozs7OworMTU0RTtDQU5BRElBTiBTWUxMQUJJQ1MgUldBQTtMbzswO0w7Ozs7O047Ozs7OworMTU0RjtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFJXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1NTA7Q0FOQURJQU4gU1lMTEFCSUNTIFI7TG87MDtMOzs7OztOOzs7OzsKKzE1NTE7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTUyO0NBTkFESUFOIFNZTExBQklDUyBNRURJQUwgUjtMbzswO0w7Ozs7O047Ozs7OworMTU1MztDQU5BRElBTiBTWUxMQUJJQ1MgRkU7TG87MDtMOzs7OztOOzs7OzsKKzE1NTQ7Q0FOQURJQU4gU1lMTEFCSUNTIEZBQUk7TG87MDtMOzs7OztOOzs7OzsKKzE1NTU7Q0FOQURJQU4gU1lMTEFCSUNTIEZJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTU2O0NBTkFESUFOIFNZTExBQklDUyBGSUk7TG87MDtMOzs7OztOOzs7OzsKKzE1NTc7Q0FOQURJQU4gU1lMTEFCSUNTIEZPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTU4O0NBTkFESUFOIFNZTExBQklDUyBGT087TG87MDtMOzs7OztOOzs7OzsKKzE1NTk7Q0FOQURJQU4gU1lMTEFCSUNTIEZBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTVBO0NBTkFESUFOIFNZTExBQklDUyBGQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1NUI7Q0FOQURJQU4gU1lMTEFCSUNTIEZXQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1NUM7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBGV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTVEO0NBTkFESUFOIFNZTExBQklDUyBGO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTVFO0NBTkFESUFOIFNZTExBQklDUyBUSEU7TG87MDtMOzs7OztOOzs7OzsKKzE1NUY7Q0FOQURJQU4gU1lMTEFCSUNTIE4tQ1JFRSBUSEU7TG87MDtMOzs7OztOOzs7OzsKKzE1NjA7Q0FOQURJQU4gU1lMTEFCSUNTIFRISTtMbzswO0w7Ozs7O047Ozs7OworMTU2MTtDQU5BRElBTiBTWUxMQUJJQ1MgTi1DUkVFIFRISTtMbzswO0w7Ozs7O047Ozs7OworMTU2MjtDQU5BRElBTiBTWUxMQUJJQ1MgVEhJSTtMbzswO0w7Ozs7O047Ozs7OworMTU2MztDQU5BRElBTiBTWUxMQUJJQ1MgTi1DUkVFIFRISUk7TG87MDtMOzs7OztOOzs7OzsKKzE1NjQ7Q0FOQURJQU4gU1lMTEFCSUNTIFRITztMbzswO0w7Ozs7O047Ozs7OworMTU2NTtDQU5BRElBTiBTWUxMQUJJQ1MgVEhPTztMbzswO0w7Ozs7O047Ozs7OworMTU2NjtDQU5BRElBTiBTWUxMQUJJQ1MgVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTY3O0NBTkFESUFOIFNZTExBQklDUyBUSEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTY4O0NBTkFESUFOIFNZTExBQklDUyBUSFdBQTtMbzswO0w7Ozs7O047Ozs7OworMTU2OTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFRIV0FBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTZBO0NBTkFESUFOIFNZTExBQklDUyBUSDtMbzswO0w7Ozs7O047Ozs7OworMTU2QjtDQU5BRElBTiBTWUxMQUJJQ1MgVFRIRTtMbzswO0w7Ozs7O047Ozs7OworMTU2QztDQU5BRElBTiBTWUxMQUJJQ1MgVFRISTtMbzswO0w7Ozs7O047Ozs7OworMTU2RDtDQU5BRElBTiBTWUxMQUJJQ1MgVFRITztMbzswO0w7Ozs7O047Ozs7OworMTU2RTtDQU5BRElBTiBTWUxMQUJJQ1MgVFRIQTtMbzswO0w7Ozs7O047Ozs7OworMTU2RjtDQU5BRElBTiBTWUxMQUJJQ1MgVFRIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTcwO0NBTkFESUFOIFNZTExBQklDUyBUWUU7TG87MDtMOzs7OztOOzs7OzsKKzE1NzE7Q0FOQURJQU4gU1lMTEFCSUNTIFRZSTtMbzswO0w7Ozs7O047Ozs7OworMTU3MjtDQU5BRElBTiBTWUxMQUJJQ1MgVFlPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTczO0NBTkFESUFOIFNZTExBQklDUyBUWUE7TG87MDtMOzs7OztOOzs7OzsKKzE1NzQ7Q0FOQURJQU4gU1lMTEFCSUNTIE5VTkFWSUsgSEU7TG87MDtMOzs7OztOOzs7OzsKKzE1NzU7Q0FOQURJQU4gU1lMTEFCSUNTIE5VTkFWSUsgSEk7TG87MDtMOzs7OztOOzs7OzsKKzE1NzY7Q0FOQURJQU4gU1lMTEFCSUNTIE5VTkFWSUsgSElJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTc3O0NBTkFESUFOIFNZTExBQklDUyBOVU5BVklLIEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTc4O0NBTkFESUFOIFNZTExBQklDUyBOVU5BVklLIEhPTztMbzswO0w7Ozs7O047Ozs7OworMTU3OTtDQU5BRElBTiBTWUxMQUJJQ1MgTlVOQVZJSyBIQTtMbzswO0w7Ozs7O047Ozs7OworMTU3QTtDQU5BRElBTiBTWUxMQUJJQ1MgTlVOQVZJSyBIQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1N0I7Q0FOQURJQU4gU1lMTEFCSUNTIE5VTkFWSUsgSDtMbzswO0w7Ozs7O047Ozs7OworMTU3QztDQU5BRElBTiBTWUxMQUJJQ1MgTlVOQVZVVCBIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTdEO0NBTkFESUFOIFNZTExBQklDUyBISztMbzswO0w7Ozs7O047Ozs7OworMTU3RTtDQU5BRElBTiBTWUxMQUJJQ1MgUUFBSTtMbzswO0w7Ozs7O047Ozs7OworMTU3RjtDQU5BRElBTiBTWUxMQUJJQ1MgUUk7TG87MDtMOzs7OztOOzs7OzsKKzE1ODA7Q0FOQURJQU4gU1lMTEFCSUNTIFFJSTtMbzswO0w7Ozs7O047Ozs7OworMTU4MTtDQU5BRElBTiBTWUxMQUJJQ1MgUU87TG87MDtMOzs7OztOOzs7OzsKKzE1ODI7Q0FOQURJQU4gU1lMTEFCSUNTIFFPTztMbzswO0w7Ozs7O047Ozs7OworMTU4MztDQU5BRElBTiBTWUxMQUJJQ1MgUUE7TG87MDtMOzs7OztOOzs7OzsKKzE1ODQ7Q0FOQURJQU4gU1lMTEFCSUNTIFFBQTtMbzswO0w7Ozs7O047Ozs7OworMTU4NTtDQU5BRElBTiBTWUxMQUJJQ1MgUTtMbzswO0w7Ozs7O047Ozs7OworMTU4NjtDQU5BRElBTiBTWUxMQUJJQ1MgVExIRTtMbzswO0w7Ozs7O047Ozs7OworMTU4NztDQU5BRElBTiBTWUxMQUJJQ1MgVExISTtMbzswO0w7Ozs7O047Ozs7OworMTU4ODtDQU5BRElBTiBTWUxMQUJJQ1MgVExITztMbzswO0w7Ozs7O047Ozs7OworMTU4OTtDQU5BRElBTiBTWUxMQUJJQ1MgVExIQTtMbzswO0w7Ozs7O047Ozs7OworMTU4QTtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFJFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNThCO0NBTkFESUFOIFNZTExBQklDUyBXRVNULUNSRUUgUkk7TG87MDtMOzs7OztOOzs7OzsKKzE1OEM7Q0FOQURJQU4gU1lMTEFCSUNTIFdFU1QtQ1JFRSBSTztMbzswO0w7Ozs7O047Ozs7OworMTU4RDtDQU5BRElBTiBTWUxMQUJJQ1MgV0VTVC1DUkVFIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNThFO0NBTkFESUFOIFNZTExBQklDUyBOR0FBSTtMbzswO0w7Ozs7O047Ozs7OworMTU4RjtDQU5BRElBTiBTWUxMQUJJQ1MgTkdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTkwO0NBTkFESUFOIFNZTExBQklDUyBOR0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTkxO0NBTkFESUFOIFNZTExBQklDUyBOR087TG87MDtMOzs7OztOOzs7OzsKKzE1OTI7Q0FOQURJQU4gU1lMTEFCSUNTIE5HT087TG87MDtMOzs7OztOOzs7OzsKKzE1OTM7Q0FOQURJQU4gU1lMTEFCSUNTIE5HQTtMbzswO0w7Ozs7O047Ozs7OworMTU5NDtDQU5BRElBTiBTWUxMQUJJQ1MgTkdBQTtMbzswO0w7Ozs7O047Ozs7OworMTU5NTtDQU5BRElBTiBTWUxMQUJJQ1MgTkc7TG87MDtMOzs7OztOOzs7OzsKKzE1OTY7Q0FOQURJQU4gU1lMTEFCSUNTIE5ORztMbzswO0w7Ozs7O047Ozs7OworMTU5NztDQU5BRElBTiBTWUxMQUJJQ1MgU0FZSVNJIFNIRTtMbzswO0w7Ozs7O047Ozs7OworMTU5ODtDQU5BRElBTiBTWUxMQUJJQ1MgU0FZSVNJIFNISTtMbzswO0w7Ozs7O047Ozs7OworMTU5OTtDQU5BRElBTiBTWUxMQUJJQ1MgU0FZSVNJIFNITztMbzswO0w7Ozs7O047Ozs7OworMTU5QTtDQU5BRElBTiBTWUxMQUJJQ1MgU0FZSVNJIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMTU5QjtDQU5BRElBTiBTWUxMQUJJQ1MgV09PRFMtQ1JFRSBUSEU7TG87MDtMOzs7OztOOzs7OzsKKzE1OUM7Q0FOQURJQU4gU1lMTEFCSUNTIFdPT0RTLUNSRUUgVEhJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNTlEO0NBTkFESUFOIFNZTExBQklDUyBXT09EUy1DUkVFIFRITztMbzswO0w7Ozs7O047Ozs7OworMTU5RTtDQU5BRElBTiBTWUxMQUJJQ1MgV09PRFMtQ1JFRSBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzE1OUY7Q0FOQURJQU4gU1lMTEFCSUNTIFdPT0RTLUNSRUUgVEg7TG87MDtMOzs7OztOOzs7OzsKKzE1QTA7Q0FOQURJQU4gU1lMTEFCSUNTIExISTtMbzswO0w7Ozs7O047Ozs7OworMTVBMTtDQU5BRElBTiBTWUxMQUJJQ1MgTEhJSTtMbzswO0w7Ozs7O047Ozs7OworMTVBMjtDQU5BRElBTiBTWUxMQUJJQ1MgTEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUEzO0NBTkFESUFOIFNZTExBQklDUyBMSE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUE0O0NBTkFESUFOIFNZTExBQklDUyBMSEE7TG87MDtMOzs7OztOOzs7OzsKKzE1QTU7Q0FOQURJQU4gU1lMTEFCSUNTIExIQUE7TG87MDtMOzs7OztOOzs7OzsKKzE1QTY7Q0FOQURJQU4gU1lMTEFCSUNTIExIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUE3O0NBTkFESUFOIFNZTExBQklDUyBUSC1DUkVFIFRIRTtMbzswO0w7Ozs7O047Ozs7OworMTVBODtDQU5BRElBTiBTWUxMQUJJQ1MgVEgtQ1JFRSBUSEk7TG87MDtMOzs7OztOOzs7OzsKKzE1QTk7Q0FOQURJQU4gU1lMTEFCSUNTIFRILUNSRUUgVEhJSTtMbzswO0w7Ozs7O047Ozs7OworMTVBQTtDQU5BRElBTiBTWUxMQUJJQ1MgVEgtQ1JFRSBUSE87TG87MDtMOzs7OztOOzs7OzsKKzE1QUI7Q0FOQURJQU4gU1lMTEFCSUNTIFRILUNSRUUgVEhPTztMbzswO0w7Ozs7O047Ozs7OworMTVBQztDQU5BRElBTiBTWUxMQUJJQ1MgVEgtQ1JFRSBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzE1QUQ7Q0FOQURJQU4gU1lMTEFCSUNTIFRILUNSRUUgVEhBQTtMbzswO0w7Ozs7O047Ozs7OworMTVBRTtDQU5BRElBTiBTWUxMQUJJQ1MgVEgtQ1JFRSBUSDtMbzswO0w7Ozs7O047Ozs7OworMTVBRjtDQU5BRElBTiBTWUxMQUJJQ1MgQUlWSUxJSyBCO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUIwO0NBTkFESUFOIFNZTExBQklDUyBCTEFDS0ZPT1QgRTtMbzswO0w7Ozs7O047Ozs7OworMTVCMTtDQU5BRElBTiBTWUxMQUJJQ1MgQkxBQ0tGT09UIEk7TG87MDtMOzs7OztOOzs7OzsKKzE1QjI7Q0FOQURJQU4gU1lMTEFCSUNTIEJMQUNLRk9PVCBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUIzO0NBTkFESUFOIFNZTExBQklDUyBCTEFDS0ZPT1QgQTtMbzswO0w7Ozs7O047Ozs7OworMTVCNDtDQU5BRElBTiBTWUxMQUJJQ1MgQkxBQ0tGT09UIFdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUI1O0NBTkFESUFOIFNZTExBQklDUyBCTEFDS0ZPT1QgV0k7TG87MDtMOzs7OztOOzs7OzsKKzE1QjY7Q0FOQURJQU4gU1lMTEFCSUNTIEJMQUNLRk9PVCBXTztMbzswO0w7Ozs7O047Ozs7OworMTVCNztDQU5BRElBTiBTWUxMQUJJQ1MgQkxBQ0tGT09UIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUI4O0NBTkFESUFOIFNZTExBQklDUyBCTEFDS0ZPT1QgTkU7TG87MDtMOzs7OztOOzs7OzsKKzE1Qjk7Q0FOQURJQU4gU1lMTEFCSUNTIEJMQUNLRk9PVCBOSTtMbzswO0w7Ozs7O047Ozs7OworMTVCQTtDQU5BRElBTiBTWUxMQUJJQ1MgQkxBQ0tGT09UIE5PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUJCO0NBTkFESUFOIFNZTExBQklDUyBCTEFDS0ZPT1QgTkE7TG87MDtMOzs7OztOOzs7OzsKKzE1QkM7Q0FOQURJQU4gU1lMTEFCSUNTIEJMQUNLRk9PVCBLRTtMbzswO0w7Ozs7O047Ozs7OworMTVCRDtDQU5BRElBTiBTWUxMQUJJQ1MgQkxBQ0tGT09UIEtJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUJFO0NBTkFESUFOIFNZTExBQklDUyBCTEFDS0ZPT1QgS087TG87MDtMOzs7OztOOzs7OzsKKzE1QkY7Q0FOQURJQU4gU1lMTEFCSUNTIEJMQUNLRk9PVCBLQTtMbzswO0w7Ozs7O047Ozs7OworMTVDMDtDQU5BRElBTiBTWUxMQUJJQ1MgU0FZSVNJIEhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUMxO0NBTkFESUFOIFNZTExBQklDUyBTQVlJU0kgSEk7TG87MDtMOzs7OztOOzs7OzsKKzE1QzI7Q0FOQURJQU4gU1lMTEFCSUNTIFNBWUlTSSBITztMbzswO0w7Ozs7O047Ozs7OworMTVDMztDQU5BRElBTiBTWUxMQUJJQ1MgU0FZSVNJIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUM0O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEdIVTtMbzswO0w7Ozs7O047Ozs7OworMTVDNTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBHSE87TG87MDtMOzs7OztOOzs7OzsKKzE1QzY7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgR0hFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUM3O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEdIRUU7TG87MDtMOzs7OztOOzs7OzsKKzE1Qzg7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgR0hJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUM5O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMTVDQTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBSVTtMbzswO0w7Ozs7O047Ozs7OworMTVDQjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBSTztMbzswO0w7Ozs7O047Ozs7OworMTVDQztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBSRTtMbzswO0w7Ozs7O047Ozs7OworMTVDRDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBSRUU7TG87MDtMOzs7OztOOzs7OzsKKzE1Q0U7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgUkk7TG87MDtMOzs7OztOOzs7OzsKKzE1Q0Y7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgUkE7TG87MDtMOzs7OztOOzs7OzsKKzE1RDA7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgV1U7TG87MDtMOzs7OztOOzs7OzsKKzE1RDE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgV087TG87MDtMOzs7OztOOzs7OzsKKzE1RDI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgV0U7TG87MDtMOzs7OztOOzs7OzsKKzE1RDM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgV0VFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUQ0O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUQ1O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUQ2O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEhXVTtMbzswO0w7Ozs7O047Ozs7OworMTVENztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBIV087TG87MDtMOzs7OztOOzs7OzsKKzE1RDg7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSFdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUQ5O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEhXRUU7TG87MDtMOzs7OztOOzs7OzsKKzE1REE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSFdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNURCO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEhXQTtMbzswO0w7Ozs7O047Ozs7OworMTVEQztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUSFU7TG87MDtMOzs7OztOOzs7OzsKKzE1REQ7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNURFO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRIRTtMbzswO0w7Ozs7O047Ozs7OworMTVERjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUSEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUUwO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRISTtMbzswO0w7Ozs7O047Ozs7OworMTVFMTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUSEE7TG87MDtMOzs7OztOOzs7OzsKKzE1RTI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFRVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUUzO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRUTztMbzswO0w7Ozs7O047Ozs7OworMTVFNDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUVEU7TG87MDtMOzs7OztOOzs7OzsKKzE1RTU7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFRFRTtMbzswO0w7Ozs7O047Ozs7OworMTVFNjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUVEk7TG87MDtMOzs7OztOOzs7OzsKKzE1RTc7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUU4O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUU5O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUVBO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUVCO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFBFRTtMbzswO0w7Ozs7O047Ozs7OworMTVFQztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBQSTtMbzswO0w7Ozs7O047Ozs7OworMTVFRDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMTVFRTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBQO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUVGO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEdVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUYwO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUYxO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUYyO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEdFRTtMbzswO0w7Ozs7O047Ozs7OworMTVGMztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBHSTtMbzswO0w7Ozs7O047Ozs7OworMTVGNDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBHQTtMbzswO0w7Ozs7O047Ozs7OworMTVGNTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBLSFU7TG87MDtMOzs7OztOOzs7OzsKKzE1RjY7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgS0hPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUY3O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEtIRTtMbzswO0w7Ozs7O047Ozs7OworMTVGODtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBLSEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUY5O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEtISTtMbzswO0w7Ozs7O047Ozs7OworMTVGQTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBLSEE7TG87MDtMOzs7OztOOzs7OzsKKzE1RkI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgS0tVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNUZDO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEtLTztMbzswO0w7Ozs7O047Ozs7OworMTVGRDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBLS0U7TG87MDtMOzs7OztOOzs7OzsKKzE1RkU7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgS0tFRTtMbzswO0w7Ozs7O047Ozs7OworMTVGRjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBLS0k7TG87MDtMOzs7OztOOzs7OzsKKzE2MDA7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgS0tBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjAxO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEtLO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjAyO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIE5VO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjAzO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIE5PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjA0O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIE5FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjA1O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIE5FRTtMbzswO0w7Ozs7O047Ozs7OworMTYwNjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBOSTtMbzswO0w7Ozs7O047Ozs7OworMTYwNztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBOQTtMbzswO0w7Ozs7O047Ozs7OworMTYwODtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBNVTtMbzswO0w7Ozs7O047Ozs7OworMTYwOTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBNTztMbzswO0w7Ozs7O047Ozs7OworMTYwQTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBNRTtMbzswO0w7Ozs7O047Ozs7OworMTYwQjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBNRUU7TG87MDtMOzs7OztOOzs7OzsKKzE2MEM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgTUk7TG87MDtMOzs7OztOOzs7OzsKKzE2MEQ7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzE2MEU7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWVU7TG87MDtMOzs7OztOOzs7OzsKKzE2MEY7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWU87TG87MDtMOzs7OztOOzs7OzsKKzE2MTA7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWUU7TG87MDtMOzs7OztOOzs7OzsKKzE2MTE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWUVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjEyO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFlJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjEzO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjE0O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEpVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjE1O0NBTkFESUFOIFNZTExBQklDUyBTQVlJU0kgSlU7TG87MDtMOzs7OztOOzs7OzsKKzE2MTY7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSk87TG87MDtMOzs7OztOOzs7OzsKKzE2MTc7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSkU7TG87MDtMOzs7OztOOzs7OzsKKzE2MTg7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSkVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjE5O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEpJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjFBO0NBTkFESUFOIFNZTExBQklDUyBTQVlJU0kgSkk7TG87MDtMOzs7OztOOzs7OzsKKzE2MUI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSkE7TG87MDtMOzs7OztOOzs7OzsKKzE2MUM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSkpVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjFEO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIEpKTztMbzswO0w7Ozs7O047Ozs7OworMTYxRTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBKSkU7TG87MDtMOzs7OztOOzs7OzsKKzE2MUY7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSkpFRTtMbzswO0w7Ozs7O047Ozs7OworMTYyMDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBKSkk7TG87MDtMOzs7OztOOzs7OzsKKzE2MjE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSkpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjIyO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIExVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjIzO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIExPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjI0O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIExFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjI1O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIExFRTtMbzswO0w7Ozs7O047Ozs7OworMTYyNjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBMSTtMbzswO0w7Ozs7O047Ozs7OworMTYyNztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMTYyODtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBETFU7TG87MDtMOzs7OztOOzs7OzsKKzE2Mjk7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgRExPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjJBO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIERMRTtMbzswO0w7Ozs7O047Ozs7OworMTYyQjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBETEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjJDO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIERMSTtMbzswO0w7Ozs7O047Ozs7OworMTYyRDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBETEE7TG87MDtMOzs7OztOOzs7OzsKKzE2MkU7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgTEhVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjJGO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIExITztMbzswO0w7Ozs7O047Ozs7OworMTYzMDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBMSEU7TG87MDtMOzs7OztOOzs7OzsKKzE2MzE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgTEhFRTtMbzswO0w7Ozs7O047Ozs7OworMTYzMjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBMSEk7TG87MDtMOzs7OztOOzs7OzsKKzE2MzM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgTEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjM0O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRMSFU7TG87MDtMOzs7OztOOzs7OzsKKzE2MzU7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVExITztMbzswO0w7Ozs7O047Ozs7OworMTYzNjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUTEhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjM3O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRMSEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjM4O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRMSEk7TG87MDtMOzs7OztOOzs7OzsKKzE2Mzk7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVExIQTtMbzswO0w7Ozs7O047Ozs7OworMTYzQTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUTFU7TG87MDtMOzs7OztOOzs7OzsKKzE2M0I7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVExPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjNDO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRMRTtMbzswO0w7Ozs7O047Ozs7OworMTYzRDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUTEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjNFO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRMSTtMbzswO0w7Ozs7O047Ozs7OworMTYzRjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUTEE7TG87MDtMOzs7OztOOzs7OzsKKzE2NDA7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWlU7TG87MDtMOzs7OztOOzs7OzsKKzE2NDE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWk87TG87MDtMOzs7OztOOzs7OzsKKzE2NDI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWkU7TG87MDtMOzs7OztOOzs7OzsKKzE2NDM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgWkVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjQ0O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFpJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjQ1O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjQ2O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFo7TG87MDtMOzs7OztOOzs7OzsKKzE2NDc7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgSU5JVElBTCBaO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjQ4O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIERaVTtMbzswO0w7Ozs7O047Ozs7OworMTY0OTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBEWk87TG87MDtMOzs7OztOOzs7OzsKKzE2NEE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgRFpFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjRCO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIERaRUU7TG87MDtMOzs7OztOOzs7OzsKKzE2NEM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgRFpJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjREO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIERaQTtMbzswO0w7Ozs7O047Ozs7OworMTY0RTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBTVTtMbzswO0w7Ozs7O047Ozs7OworMTY0RjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBTTztMbzswO0w7Ozs7O047Ozs7OworMTY1MDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBTRTtMbzswO0w7Ozs7O047Ozs7OworMTY1MTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBTRUU7TG87MDtMOzs7OztOOzs7OzsKKzE2NTI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgU0k7TG87MDtMOzs7OztOOzs7OzsKKzE2NTM7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzE2NTQ7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgU0hVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjU1O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFNITztMbzswO0w7Ozs7O047Ozs7OworMTY1NjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBTSEU7TG87MDtMOzs7OztOOzs7OzsKKzE2NTc7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgU0hFRTtMbzswO0w7Ozs7O047Ozs7OworMTY1ODtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBTSEk7TG87MDtMOzs7OztOOzs7OzsKKzE2NTk7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjVBO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFNIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjVCO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRTVTtMbzswO0w7Ozs7O047Ozs7OworMTY1QztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUU087TG87MDtMOzs7OztOOzs7OzsKKzE2NUQ7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFNFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjVFO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRTRUU7TG87MDtMOzs7OztOOzs7OzsKKzE2NUY7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFNJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjYwO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRTQTtMbzswO0w7Ozs7O047Ozs7OworMTY2MTtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBDSFU7TG87MDtMOzs7OztOOzs7OzsKKzE2NjI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgQ0hPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjYzO0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIENIRTtMbzswO0w7Ozs7O047Ozs7OworMTY2NDtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBDSEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjY1O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIENISTtMbzswO0w7Ozs7O047Ozs7OworMTY2NjtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzE2Njc7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFRTVTtMbzswO0w7Ozs7O047Ozs7OworMTY2ODtDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUVFNPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjY5O0NBTkFESUFOIFNZTExBQklDUyBDQVJSSUVSIFRUU0U7TG87MDtMOzs7OztOOzs7OzsKKzE2NkE7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFRTRUU7TG87MDtMOzs7OztOOzs7OzsKKzE2NkI7Q0FOQURJQU4gU1lMTEFCSUNTIENBUlJJRVIgVFRTSTtMbzswO0w7Ozs7O047Ozs7OworMTY2QztDQU5BRElBTiBTWUxMQUJJQ1MgQ0FSUklFUiBUVFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjZEO0NBTkFESUFOIFNZTExBQklDUyBDSEkgU0lHTjtQbzswO0w7Ozs7O047Ozs7OworMTY2RTtDQU5BRElBTiBTWUxMQUJJQ1MgRlVMTCBTVE9QO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxNjZGO0NBTkFESUFOIFNZTExBQklDUyBRQUk7TG87MDtMOzs7OztOOzs7OzsKKzE2NzA7Q0FOQURJQU4gU1lMTEFCSUNTIE5HQUk7TG87MDtMOzs7OztOOzs7OzsKKzE2NzE7Q0FOQURJQU4gU1lMTEFCSUNTIE5OR0k7TG87MDtMOzs7OztOOzs7OzsKKzE2NzI7Q0FOQURJQU4gU1lMTEFCSUNTIE5OR0lJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjczO0NBTkFESUFOIFNZTExBQklDUyBOTkdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjc0O0NBTkFESUFOIFNZTExBQklDUyBOTkdPTztMbzswO0w7Ozs7O047Ozs7OworMTY3NTtDQU5BRElBTiBTWUxMQUJJQ1MgTk5HQTtMbzswO0w7Ozs7O047Ozs7OworMTY3NjtDQU5BRElBTiBTWUxMQUJJQ1MgTk5HQUE7TG87MDtMOzs7OztOOzs7OzsKKzE2ODA7T0dIQU0gU1BBQ0UgTUFSSztaczswO1dTOzs7OztOOzs7OzsKKzE2ODE7T0dIQU0gTEVUVEVSIEJFSVRIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjgyO09HSEFNIExFVFRFUiBMVUlTO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjgzO09HSEFNIExFVFRFUiBGRUFSTjtMbzswO0w7Ozs7O047Ozs7OworMTY4NDtPR0hBTSBMRVRURVIgU0FJTDtMbzswO0w7Ozs7O047Ozs7OworMTY4NTtPR0hBTSBMRVRURVIgTklPTjtMbzswO0w7Ozs7O047Ozs7OworMTY4NjtPR0hBTSBMRVRURVIgVUFUSDtMbzswO0w7Ozs7O047Ozs7OworMTY4NztPR0hBTSBMRVRURVIgREFJUjtMbzswO0w7Ozs7O047Ozs7OworMTY4ODtPR0hBTSBMRVRURVIgVElOTkU7TG87MDtMOzs7OztOOzs7OzsKKzE2ODk7T0dIQU0gTEVUVEVSIENPTEw7TG87MDtMOzs7OztOOzs7OzsKKzE2OEE7T0dIQU0gTEVUVEVSIENFSVJUO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjhCO09HSEFNIExFVFRFUiBNVUlOO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjhDO09HSEFNIExFVFRFUiBHT1JUO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjhEO09HSEFNIExFVFRFUiBOR0VBREFMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjhFO09HSEFNIExFVFRFUiBTVFJBSUY7TG87MDtMOzs7OztOOzs7OzsKKzE2OEY7T0dIQU0gTEVUVEVSIFJVSVM7TG87MDtMOzs7OztOOzs7OzsKKzE2OTA7T0dIQU0gTEVUVEVSIEFJTE07TG87MDtMOzs7OztOOzs7OzsKKzE2OTE7T0dIQU0gTEVUVEVSIE9OTjtMbzswO0w7Ozs7O047Ozs7OworMTY5MjtPR0hBTSBMRVRURVIgVVI7TG87MDtMOzs7OztOOzs7OzsKKzE2OTM7T0dIQU0gTEVUVEVSIEVBREhBREg7TG87MDtMOzs7OztOOzs7OzsKKzE2OTQ7T0dIQU0gTEVUVEVSIElPREhBREg7TG87MDtMOzs7OztOOzs7OzsKKzE2OTU7T0dIQU0gTEVUVEVSIEVBQkhBREg7TG87MDtMOzs7OztOOzs7OzsKKzE2OTY7T0dIQU0gTEVUVEVSIE9SO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjk3O09HSEFNIExFVFRFUiBVSUxMRUFOTjtMbzswO0w7Ozs7O047Ozs7OworMTY5ODtPR0hBTSBMRVRURVIgSUZJTjtMbzswO0w7Ozs7O047Ozs7OworMTY5OTtPR0hBTSBMRVRURVIgRUFNSEFOQ0hPTEw7TG87MDtMOzs7OztOOzs7OzsKKzE2OUE7T0dIQU0gTEVUVEVSIFBFSVRIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNjlCO09HSEFNIEZFQVRIRVIgTUFSSztQczswO09OOzs7OztOOzs7OzsKKzE2OUM7T0dIQU0gUkVWRVJTRUQgRkVBVEhFUiBNQVJLO1BlOzA7T047Ozs7O047Ozs7OworMTZBMDtSVU5JQyBMRVRURVIgRkVIVSBGRU9IIEZFIEY7TG87MDtMOzs7OztOOzs7OzsKKzE2QTE7UlVOSUMgTEVUVEVSIFY7TG87MDtMOzs7OztOOzs7OzsKKzE2QTI7UlVOSUMgTEVUVEVSIFVSVVogVVIgVTtMbzswO0w7Ozs7O047Ozs7OworMTZBMztSVU5JQyBMRVRURVIgWVI7TG87MDtMOzs7OztOOzs7OzsKKzE2QTQ7UlVOSUMgTEVUVEVSIFk7TG87MDtMOzs7OztOOzs7OzsKKzE2QTU7UlVOSUMgTEVUVEVSIFc7TG87MDtMOzs7OztOOzs7OzsKKzE2QTY7UlVOSUMgTEVUVEVSIFRIVVJJU0FaIFRIVVJTIFRIT1JOO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkE3O1JVTklDIExFVFRFUiBFVEg7TG87MDtMOzs7OztOOzs7OzsKKzE2QTg7UlVOSUMgTEVUVEVSIEFOU1VaIEE7TG87MDtMOzs7OztOOzs7OzsKKzE2QTk7UlVOSUMgTEVUVEVSIE9TIE87TG87MDtMOzs7OztOOzs7OzsKKzE2QUE7UlVOSUMgTEVUVEVSIEFDIEE7TG87MDtMOzs7OztOOzs7OzsKKzE2QUI7UlVOSUMgTEVUVEVSIEFFU0M7TG87MDtMOzs7OztOOzs7OzsKKzE2QUM7UlVOSUMgTEVUVEVSIExPTkctQlJBTkNILU9TUyBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkFEO1JVTklDIExFVFRFUiBTSE9SVC1UV0lHLU9TUyBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkFFO1JVTklDIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkFGO1JVTklDIExFVFRFUiBPRTtMbzswO0w7Ozs7O047Ozs7OworMTZCMDtSVU5JQyBMRVRURVIgT047TG87MDtMOzs7OztOOzs7OzsKKzE2QjE7UlVOSUMgTEVUVEVSIFJBSURPIFJBRCBSRUlEIFI7TG87MDtMOzs7OztOOzs7OzsKKzE2QjI7UlVOSUMgTEVUVEVSIEtBVU5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkIzO1JVTklDIExFVFRFUiBDRU47TG87MDtMOzs7OztOOzs7OzsKKzE2QjQ7UlVOSUMgTEVUVEVSIEtBVU4gSztMbzswO0w7Ozs7O047Ozs7OworMTZCNTtSVU5JQyBMRVRURVIgRztMbzswO0w7Ozs7O047Ozs7OworMTZCNjtSVU5JQyBMRVRURVIgRU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkI3O1JVTklDIExFVFRFUiBHRUJPIEdZRlUgRztMbzswO0w7Ozs7O047Ozs7OworMTZCODtSVU5JQyBMRVRURVIgR0FSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkI5O1JVTklDIExFVFRFUiBXVU5KTyBXWU5OIFc7TG87MDtMOzs7OztOOzs7OzsKKzE2QkE7UlVOSUMgTEVUVEVSIEhBR0xBWiBIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkJCO1JVTklDIExFVFRFUiBIQUVHTCBIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkJDO1JVTklDIExFVFRFUiBMT05HLUJSQU5DSC1IQUdBTEwgSDtMbzswO0w7Ozs7O047Ozs7OworMTZCRDtSVU5JQyBMRVRURVIgU0hPUlQtVFdJRy1IQUdBTEwgSDtMbzswO0w7Ozs7O047Ozs7OworMTZCRTtSVU5JQyBMRVRURVIgTkFVRElaIE5ZRCBOQVVEIE47TG87MDtMOzs7OztOOzs7OzsKKzE2QkY7UlVOSUMgTEVUVEVSIFNIT1JULVRXSUctTkFVRCBOO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkMwO1JVTklDIExFVFRFUiBET1RURUQtTjtMbzswO0w7Ozs7O047Ozs7OworMTZDMTtSVU5JQyBMRVRURVIgSVNBWiBJUyBJU1MgSTtMbzswO0w7Ozs7O047Ozs7OworMTZDMjtSVU5JQyBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMTZDMztSVU5JQyBMRVRURVIgSkVSQU4gSjtMbzswO0w7Ozs7O047Ozs7OworMTZDNDtSVU5JQyBMRVRURVIgR0VSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkM1O1JVTklDIExFVFRFUiBMT05HLUJSQU5DSC1BUiBBRTtMbzswO0w7Ozs7O047Ozs7OworMTZDNjtSVU5JQyBMRVRURVIgU0hPUlQtVFdJRy1BUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkM3O1JVTklDIExFVFRFUiBJV0FaIEVPSDtMbzswO0w7Ozs7O047Ozs7OworMTZDODtSVU5JQyBMRVRURVIgUEVSVEhPIFBFT1JUSCBQO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkM5O1JVTklDIExFVFRFUiBBTEdJWiBFT0xIWDtMbzswO0w7Ozs7O047Ozs7OworMTZDQTtSVU5JQyBMRVRURVIgU09XSUxPIFM7TG87MDtMOzs7OztOOzs7OzsKKzE2Q0I7UlVOSUMgTEVUVEVSIFNJR0VMIExPTkctQlJBTkNILVNPTCBTO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkNDO1JVTklDIExFVFRFUiBTSE9SVC1UV0lHLVNPTCBTO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkNEO1JVTklDIExFVFRFUiBDO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkNFO1JVTklDIExFVFRFUiBaO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkNGO1JVTklDIExFVFRFUiBUSVdBWiBUSVIgVFlSIFQ7TG87MDtMOzs7OztOOzs7OzsKKzE2RDA7UlVOSUMgTEVUVEVSIFNIT1JULVRXSUctVFlSIFQ7TG87MDtMOzs7OztOOzs7OzsKKzE2RDE7UlVOSUMgTEVUVEVSIEQ7TG87MDtMOzs7OztOOzs7OzsKKzE2RDI7UlVOSUMgTEVUVEVSIEJFUktBTkFOIEJFT1JDIEJKQVJLQU4gQjtMbzswO0w7Ozs7O047Ozs7OworMTZEMztSVU5JQyBMRVRURVIgU0hPUlQtVFdJRy1CSkFSS0FOIEI7TG87MDtMOzs7OztOOzs7OzsKKzE2RDQ7UlVOSUMgTEVUVEVSIERPVFRFRC1QO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkQ1O1JVTklDIExFVFRFUiBPUEVOLVA7TG87MDtMOzs7OztOOzs7OzsKKzE2RDY7UlVOSUMgTEVUVEVSIEVIV0FaIEVIIEU7TG87MDtMOzs7OztOOzs7OzsKKzE2RDc7UlVOSUMgTEVUVEVSIE1BTk5BWiBNQU4gTTtMbzswO0w7Ozs7O047Ozs7OworMTZEODtSVU5JQyBMRVRURVIgTE9ORy1CUkFOQ0gtTUFEUiBNO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkQ5O1JVTklDIExFVFRFUiBTSE9SVC1UV0lHLU1BRFIgTTtMbzswO0w7Ozs7O047Ozs7OworMTZEQTtSVU5JQyBMRVRURVIgTEFVS0FaIExBR1UgTE9HUiBMO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkRCO1JVTklDIExFVFRFUiBET1RURUQtTDtMbzswO0w7Ozs7O047Ozs7OworMTZEQztSVU5JQyBMRVRURVIgSU5HV0FaO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkREO1JVTklDIExFVFRFUiBJTkc7TG87MDtMOzs7OztOOzs7OzsKKzE2REU7UlVOSUMgTEVUVEVSIERBR0FaIERBRUcgRDtMbzswO0w7Ozs7O047Ozs7OworMTZERjtSVU5JQyBMRVRURVIgT1RIQUxBTiBFVEhFTCBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkUwO1JVTklDIExFVFRFUiBFQVI7TG87MDtMOzs7OztOOzs7OzsKKzE2RTE7UlVOSUMgTEVUVEVSIElPUjtMbzswO0w7Ozs7O047Ozs7OworMTZFMjtSVU5JQyBMRVRURVIgQ1dFT1JUSDtMbzswO0w7Ozs7O047Ozs7OworMTZFMztSVU5JQyBMRVRURVIgQ0FMQztMbzswO0w7Ozs7O047Ozs7OworMTZFNDtSVU5JQyBMRVRURVIgQ0VBTEM7TG87MDtMOzs7OztOOzs7OzsKKzE2RTU7UlVOSUMgTEVUVEVSIFNUQU47TG87MDtMOzs7OztOOzs7OzsKKzE2RTY7UlVOSUMgTEVUVEVSIExPTkctQlJBTkNILVlSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkU3O1JVTklDIExFVFRFUiBTSE9SVC1UV0lHLVlSO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNkU4O1JVTklDIExFVFRFUiBJQ0VMQU5ESUMtWVI7TG87MDtMOzs7OztOOzs7OzsKKzE2RTk7UlVOSUMgTEVUVEVSIFE7TG87MDtMOzs7OztOOzs7OzsKKzE2RUE7UlVOSUMgTEVUVEVSIFg7TG87MDtMOzs7OztOOzs7OzsKKzE2RUI7UlVOSUMgU0lOR0xFIFBVTkNUVUFUSU9OO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxNkVDO1JVTklDIE1VTFRJUExFIFBVTkNUVUFUSU9OO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxNkVEO1JVTklDIENST1NTIFBVTkNUVUFUSU9OO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxNkVFO1JVTklDIEFSTEFVRyBTWU1CT0w7Tm87MDtMOzs7OzE3O047O2dvbGRlbiBudW1iZXIgMTc7OzsKKzE2RUY7UlVOSUMgVFZJTUFEVVIgU1lNQk9MO05vOzA7TDs7OzsxODtOOztnb2xkZW4gbnVtYmVyIDE4Ozs7CisxNkYwO1JVTklDIEJFTEdUSE9SIFNZTUJPTDtObzswO0w7Ozs7MTk7Tjs7Z29sZGVuIG51bWJlciAxOTs7OworMTc4MDtLSE1FUiBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzE3ODE7S0hNRVIgTEVUVEVSIEtIQTtMbzswO0w7Ozs7O047Ozs7OworMTc4MjtLSE1FUiBMRVRURVIgS087TG87MDtMOzs7OztOOzs7OzsKKzE3ODM7S0hNRVIgTEVUVEVSIEtITztMbzswO0w7Ozs7O047Ozs7OworMTc4NDtLSE1FUiBMRVRURVIgTkdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzg1O0tITUVSIExFVFRFUiBDQTtMbzswO0w7Ozs7O047Ozs7OworMTc4NjtLSE1FUiBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzg3O0tITUVSIExFVFRFUiBDTztMbzswO0w7Ozs7O047Ozs7OworMTc4ODtLSE1FUiBMRVRURVIgQ0hPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzg5O0tITUVSIExFVFRFUiBOWU87TG87MDtMOzs7OztOOzs7OzsKKzE3OEE7S0hNRVIgTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzhCO0tITUVSIExFVFRFUiBUVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzhDO0tITUVSIExFVFRFUiBETztMbzswO0w7Ozs7O047Ozs7OworMTc4RDtLSE1FUiBMRVRURVIgVFRITztMbzswO0w7Ozs7O047Ozs7OworMTc4RTtLSE1FUiBMRVRURVIgTk5PO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzhGO0tITUVSIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMTc5MDtLSE1FUiBMRVRURVIgVEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzkxO0tITUVSIExFVFRFUiBUTztMbzswO0w7Ozs7O047Ozs7OworMTc5MjtLSE1FUiBMRVRURVIgVEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzkzO0tITUVSIExFVFRFUiBOTztMbzswO0w7Ozs7O047Ozs7OworMTc5NDtLSE1FUiBMRVRURVIgQkE7TG87MDtMOzs7OztOOzs7OzsKKzE3OTU7S0hNRVIgTEVUVEVSIFBIQTtMbzswO0w7Ozs7O047Ozs7OworMTc5NjtLSE1FUiBMRVRURVIgUE87TG87MDtMOzs7OztOOzs7OzsKKzE3OTc7S0hNRVIgTEVUVEVSIFBITztMbzswO0w7Ozs7O047Ozs7OworMTc5ODtLSE1FUiBMRVRURVIgTU87TG87MDtMOzs7OztOOzs7OzsKKzE3OTk7S0hNRVIgTEVUVEVSIFlPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzlBO0tITUVSIExFVFRFUiBSTztMbzswO0w7Ozs7O047Ozs7OworMTc5QjtLSE1FUiBMRVRURVIgTE87TG87MDtMOzs7OztOOzs7OzsKKzE3OUM7S0hNRVIgTEVUVEVSIFZPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxNzlEO0tITUVSIExFVFRFUiBTSEE7TG87MDtMOzs7OztOOzs7OzsKKzE3OUU7S0hNRVIgTEVUVEVSIFNTTztMbzswO0w7Ozs7O047Ozs7OworMTc5RjtLSE1FUiBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzE3QTA7S0hNRVIgTEVUVEVSIEhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0ExO0tITUVSIExFVFRFUiBMQTtMbzswO0w7Ozs7O047Ozs7OworMTdBMjtLSE1FUiBMRVRURVIgUUE7TG87MDtMOzs7OztOOzs7OzsKKzE3QTM7S0hNRVIgSU5ERVBFTkRFTlQgVk9XRUwgUUFRO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0E0O0tITUVSIElOREVQRU5ERU5UIFZPV0VMIFFBQTtMbzswO0w7Ozs7O047Ozs7OworMTdBNTtLSE1FUiBJTkRFUEVOREVOVCBWT1dFTCBRSTtMbzswO0w7Ozs7O047Ozs7OworMTdBNjtLSE1FUiBJTkRFUEVOREVOVCBWT1dFTCBRSUk7TG87MDtMOzs7OztOOzs7OzsKKzE3QTc7S0hNRVIgSU5ERVBFTkRFTlQgVk9XRUwgUVU7TG87MDtMOzs7OztOOzs7OzsKKzE3QTg7S0hNRVIgSU5ERVBFTkRFTlQgVk9XRUwgUVVLO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0E5O0tITUVSIElOREVQRU5ERU5UIFZPV0VMIFFVVTtMbzswO0w7Ozs7O047Ozs7OworMTdBQTtLSE1FUiBJTkRFUEVOREVOVCBWT1dFTCBRVVVWO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0FCO0tITUVSIElOREVQRU5ERU5UIFZPV0VMIFJZO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0FDO0tITUVSIElOREVQRU5ERU5UIFZPV0VMIFJZWTtMbzswO0w7Ozs7O047Ozs7OworMTdBRDtLSE1FUiBJTkRFUEVOREVOVCBWT1dFTCBMWTtMbzswO0w7Ozs7O047Ozs7OworMTdBRTtLSE1FUiBJTkRFUEVOREVOVCBWT1dFTCBMWVk7TG87MDtMOzs7OztOOzs7OzsKKzE3QUY7S0hNRVIgSU5ERVBFTkRFTlQgVk9XRUwgUUU7TG87MDtMOzs7OztOOzs7OzsKKzE3QjA7S0hNRVIgSU5ERVBFTkRFTlQgVk9XRUwgUUFJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0IxO0tITUVSIElOREVQRU5ERU5UIFZPV0VMIFFPTyBUWVBFIE9ORTtMbzswO0w7Ozs7O047Ozs7OworMTdCMjtLSE1FUiBJTkRFUEVOREVOVCBWT1dFTCBRT08gVFlQRSBUV087TG87MDtMOzs7OztOOzs7OzsKKzE3QjM7S0hNRVIgSU5ERVBFTkRFTlQgVk9XRUwgUUFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxN0I0O0tITUVSIFZPV0VMIElOSEVSRU5UIEFRO01jOzA7TDs7Ozs7Tjs7Ozs7CisxN0I1O0tITUVSIFZPV0VMIElOSEVSRU5UIEFBO01jOzA7TDs7Ozs7Tjs7Ozs7CisxN0I2O0tITUVSIFZPV0VMIFNJR04gQUE7TWM7MDtMOzs7OztOOzs7OzsKKzE3Qjc7S0hNRVIgVk9XRUwgU0lHTiBJO01uOzA7TlNNOzs7OztOOzs7OzsKKzE3Qjg7S0hNRVIgVk9XRUwgU0lHTiBJSTtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxN0I5O0tITUVSIFZPV0VMIFNJR04gWTtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxN0JBO0tITUVSIFZPV0VMIFNJR04gWVk7TW47MDtOU007Ozs7O047Ozs7OworMTdCQjtLSE1FUiBWT1dFTCBTSUdOIFU7TW47MDtOU007Ozs7O047Ozs7OworMTdCQztLSE1FUiBWT1dFTCBTSUdOIFVVO01uOzA7TlNNOzs7OztOOzs7OzsKKzE3QkQ7S0hNRVIgVk9XRUwgU0lHTiBVQTtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxN0JFO0tITUVSIFZPV0VMIFNJR04gT0U7TWM7MDtMOzs7OztOOzs7OzsKKzE3QkY7S0hNRVIgVk9XRUwgU0lHTiBZQTtNYzswO0w7Ozs7O047Ozs7OworMTdDMDtLSE1FUiBWT1dFTCBTSUdOIElFO01jOzA7TDs7Ozs7Tjs7Ozs7CisxN0MxO0tITUVSIFZPV0VMIFNJR04gRTtNYzswO0w7Ozs7O047Ozs7OworMTdDMjtLSE1FUiBWT1dFTCBTSUdOIEFFO01jOzA7TDs7Ozs7Tjs7Ozs7CisxN0MzO0tITUVSIFZPV0VMIFNJR04gQUk7TWM7MDtMOzs7OztOOzs7OzsKKzE3QzQ7S0hNRVIgVk9XRUwgU0lHTiBPTztNYzswO0w7Ozs7O047Ozs7OworMTdDNTtLSE1FUiBWT1dFTCBTSUdOIEFVO01jOzA7TDs7Ozs7Tjs7Ozs7CisxN0M2O0tITUVSIFNJR04gTklLQUhJVDtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxN0M3O0tITUVSIFNJR04gUkVBSE1VSztNYzswO0w7Ozs7O047Ozs7OworMTdDODtLSE1FUiBTSUdOIFlVVUtBTEVBUElOVFU7TWM7MDtMOzs7OztOOzs7OzsKKzE3Qzk7S0hNRVIgU0lHTiBNVVVTSUtBVE9BTjtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxN0NBO0tITUVSIFNJR04gVFJJSVNBUDtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxN0NCO0tITUVSIFNJR04gQkFOVE9DO01uOzA7TlNNOzs7OztOOzs7OzsKKzE3Q0M7S0hNRVIgU0lHTiBST0JBVDtNbjswO05TTTs7Ozs7Tjs7Ozs7CisxN0NEO0tITUVSIFNJR04gVE9BTkRBS0hJQVQ7TW47MDtOU007Ozs7O047Ozs7OworMTdDRTtLSE1FUiBTSUdOIEtBS0FCQVQ7TW47MDtOU007Ozs7O047Ozs7OworMTdDRjtLSE1FUiBTSUdOIEFIU0RBO01uOzA7TlNNOzs7OztOOzs7OzsKKzE3RDA7S0hNRVIgU0lHTiBTQU1ZT0sgU0FOTllBO01uOzA7TlNNOzs7OztOOzs7OzsKKzE3RDE7S0hNRVIgU0lHTiBWSVJJQU07TW47MDtOU007Ozs7O047Ozs7OworMTdEMjtLSE1FUiBTSUdOIENPRU5HO01uOzk7TlNNOzs7OztOOzs7OzsKKzE3RDM7S0hNRVIgU0lHTiBCQVRIQU1BU0FUO01uOzA7TlNNOzs7OztOOzs7OzsKKzE3RDQ7S0hNRVIgU0lHTiBLSEFOO1BvOzA7TDs7Ozs7Tjs7Ozs7CisxN0Q1O0tITUVSIFNJR04gQkFSSVlPT1NBTjtQbzswO0w7Ozs7O047Ozs7OworMTdENjtLSE1FUiBTSUdOIENBTU5VQyBQSUkgS1VVSDtQbzswO0w7Ozs7O047Ozs7OworMTdENztLSE1FUiBTSUdOIExFSyBUT087UG87MDtMOzs7OztOOzs7OzsKKzE3RDg7S0hNRVIgU0lHTiBCRVlZQUw7UG87MDtMOzs7OztOOzs7OzsKKzE3RDk7S0hNRVIgU0lHTiBQSE5BRUsgTVVBTjtQbzswO0w7Ozs7O047Ozs7OworMTdEQTtLSE1FUiBTSUdOIEtPT01VVVQ7UG87MDtMOzs7OztOOzs7OzsKKzE3REI7S0hNRVIgQ1VSUkVOQ1kgU1lNQk9MIFJJRUw7U2M7MDtFVDs7Ozs7Tjs7Ozs7CisxN0RDO0tITUVSIFNJR04gQVZBS1JBSEFTQU5ZQTtQbzswO0w7Ozs7O047Ozs7OworMTdFMDtLSE1FUiBESUdJVCBaRVJPO05kOzA7TDs7MDswOzA7Tjs7Ozs7CisxN0UxO0tITUVSIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMTdFMjtLSE1FUiBESUdJVCBUV087TmQ7MDtMOzsyOzI7MjtOOzs7OzsKKzE3RTM7S0hNRVIgRElHSVQgVEhSRUU7TmQ7MDtMOzszOzM7MztOOzs7OzsKKzE3RTQ7S0hNRVIgRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMTdFNTtLSE1FUiBESUdJVCBGSVZFO05kOzA7TDs7NTs1OzU7Tjs7Ozs7CisxN0U2O0tITUVSIERJR0lUIFNJWDtOZDswO0w7OzY7Njs2O047Ozs7OworMTdFNztLSE1FUiBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMTdFODtLSE1FUiBESUdJVCBFSUdIVDtOZDswO0w7Ozg7ODs4O047Ozs7OworMTdFOTtLSE1FUiBESUdJVCBOSU5FO05kOzA7TDs7OTs5Ozk7Tjs7Ozs7CisxODAwO01PTkdPTElBTiBCSVJHQTtQbzswO09OOzs7OztOOzs7OzsKKzE4MDE7TU9OR09MSUFOIEVMTElQU0lTO1BvOzA7T047Ozs7O047Ozs7OworMTgwMjtNT05HT0xJQU4gQ09NTUE7UG87MDtPTjs7Ozs7Tjs7Ozs7CisxODAzO01PTkdPTElBTiBGVUxMIFNUT1A7UG87MDtPTjs7Ozs7Tjs7Ozs7CisxODA0O01PTkdPTElBTiBDT0xPTjtQbzswO09OOzs7OztOOzs7OzsKKzE4MDU7TU9OR09MSUFOIEZPVVIgRE9UUztQbzswO09OOzs7OztOOzs7OzsKKzE4MDY7TU9OR09MSUFOIFRPRE8gU09GVCBIWVBIRU47UGQ7MDtPTjs7Ozs7Tjs7Ozs7CisxODA3O01PTkdPTElBTiBTSUJFIFNZTExBQkxFIEJPVU5EQVJZIE1BUktFUjtQbzswO09OOzs7OztOOzs7OzsKKzE4MDg7TU9OR09MSUFOIE1BTkNIVSBDT01NQTtQbzswO09OOzs7OztOOzs7OzsKKzE4MDk7TU9OR09MSUFOIE1BTkNIVSBGVUxMIFNUT1A7UG87MDtPTjs7Ozs7Tjs7Ozs7CisxODBBO01PTkdPTElBTiBOSVJVR1U7UG87MDtPTjs7Ozs7Tjs7Ozs7CisxODBCO01PTkdPTElBTiBGUkVFIFZBUklBVElPTiBTRUxFQ1RPUiBPTkU7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CisxODBDO01PTkdPTElBTiBGUkVFIFZBUklBVElPTiBTRUxFQ1RPUiBUV087Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CisxODBEO01PTkdPTElBTiBGUkVFIFZBUklBVElPTiBTRUxFQ1RPUiBUSFJFRTtDZjswO0JOOzs7OztOOzs7OzsKKzE4MEU7TU9OR09MSUFOIFZPV0VMIFNFUEFSQVRPUjtDZjswO0JOOzs7OztOOzs7OzsKKzE4MTA7TU9OR09MSUFOIERJR0lUIFpFUk87TmQ7MDtMOzswOzA7MDtOOzs7OzsKKzE4MTE7TU9OR09MSUFOIERJR0lUIE9ORTtOZDswO0w7OzE7MTsxO047Ozs7OworMTgxMjtNT05HT0xJQU4gRElHSVQgVFdPO05kOzA7TDs7MjsyOzI7Tjs7Ozs7CisxODEzO01PTkdPTElBTiBESUdJVCBUSFJFRTtOZDswO0w7OzM7MzszO047Ozs7OworMTgxNDtNT05HT0xJQU4gRElHSVQgRk9VUjtOZDswO0w7OzQ7NDs0O047Ozs7OworMTgxNTtNT05HT0xJQU4gRElHSVQgRklWRTtOZDswO0w7OzU7NTs1O047Ozs7OworMTgxNjtNT05HT0xJQU4gRElHSVQgU0lYO05kOzA7TDs7Njs2OzY7Tjs7Ozs7CisxODE3O01PTkdPTElBTiBESUdJVCBTRVZFTjtOZDswO0w7Ozc7Nzs3O047Ozs7OworMTgxODtNT05HT0xJQU4gRElHSVQgRUlHSFQ7TmQ7MDtMOzs4Ozg7ODtOOzs7OzsKKzE4MTk7TU9OR09MSUFOIERJR0lUIE5JTkU7TmQ7MDtMOzs5Ozk7OTtOOzs7OzsKKzE4MjA7TU9OR09MSUFOIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODIxO01PTkdPTElBTiBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMTgyMjtNT05HT0xJQU4gTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzE4MjM7TU9OR09MSUFOIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODI0O01PTkdPTElBTiBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMTgyNTtNT05HT0xJQU4gTEVUVEVSIE9FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODI2O01PTkdPTElBTiBMRVRURVIgVUU7TG87MDtMOzs7OztOOzs7OzsKKzE4Mjc7TU9OR09MSUFOIExFVFRFUiBFRTtMbzswO0w7Ozs7O047Ozs7OworMTgyODtNT05HT0xJQU4gTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODI5O01PTkdPTElBTiBMRVRURVIgQU5HO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODJBO01PTkdPTElBTiBMRVRURVIgQkE7TG87MDtMOzs7OztOOzs7OzsKKzE4MkI7TU9OR09MSUFOIExFVFRFUiBQQTtMbzswO0w7Ozs7O047Ozs7OworMTgyQztNT05HT0xJQU4gTEVUVEVSIFFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODJEO01PTkdPTElBTiBMRVRURVIgR0E7TG87MDtMOzs7OztOOzs7OzsKKzE4MkU7TU9OR09MSUFOIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMTgyRjtNT05HT0xJQU4gTEVUVEVSIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODMwO01PTkdPTElBTiBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzE4MzE7TU9OR09MSUFOIExFVFRFUiBTSEE7TG87MDtMOzs7OztOOzs7OzsKKzE4MzI7TU9OR09MSUFOIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMTgzMztNT05HT0xJQU4gTEVUVEVSIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODM0O01PTkdPTElBTiBMRVRURVIgQ0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODM1O01PTkdPTElBTiBMRVRURVIgSkE7TG87MDtMOzs7OztOOzs7OzsKKzE4MzY7TU9OR09MSUFOIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMTgzNztNT05HT0xJQU4gTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODM4O01PTkdPTElBTiBMRVRURVIgV0E7TG87MDtMOzs7OztOOzs7OzsKKzE4Mzk7TU9OR09MSUFOIExFVFRFUiBGQTtMbzswO0w7Ozs7O047Ozs7OworMTgzQTtNT05HT0xJQU4gTEVUVEVSIEtBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODNCO01PTkdPTElBTiBMRVRURVIgS0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODNDO01PTkdPTElBTiBMRVRURVIgVFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODNEO01PTkdPTElBTiBMRVRURVIgWkE7TG87MDtMOzs7OztOOzs7OzsKKzE4M0U7TU9OR09MSUFOIExFVFRFUiBIQUE7TG87MDtMOzs7OztOOzs7OzsKKzE4M0Y7TU9OR09MSUFOIExFVFRFUiBaUkE7TG87MDtMOzs7OztOOzs7OzsKKzE4NDA7TU9OR09MSUFOIExFVFRFUiBMSEE7TG87MDtMOzs7OztOOzs7OzsKKzE4NDE7TU9OR09MSUFOIExFVFRFUiBaSEk7TG87MDtMOzs7OztOOzs7OzsKKzE4NDI7TU9OR09MSUFOIExFVFRFUiBDSEk7TG87MDtMOzs7OztOOzs7OzsKKzE4NDM7TU9OR09MSUFOIExFVFRFUiBUT0RPIExPTkcgVk9XRUwgU0lHTjtMbTswO0w7Ozs7O047Ozs7OworMTg0NDtNT05HT0xJQU4gTEVUVEVSIFRPRE8gRTtMbzswO0w7Ozs7O047Ozs7OworMTg0NTtNT05HT0xJQU4gTEVUVEVSIFRPRE8gSTtMbzswO0w7Ozs7O047Ozs7OworMTg0NjtNT05HT0xJQU4gTEVUVEVSIFRPRE8gTztMbzswO0w7Ozs7O047Ozs7OworMTg0NztNT05HT0xJQU4gTEVUVEVSIFRPRE8gVTtMbzswO0w7Ozs7O047Ozs7OworMTg0ODtNT05HT0xJQU4gTEVUVEVSIFRPRE8gT0U7TG87MDtMOzs7OztOOzs7OzsKKzE4NDk7TU9OR09MSUFOIExFVFRFUiBUT0RPIFVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODRBO01PTkdPTElBTiBMRVRURVIgVE9ETyBBTkc7TG87MDtMOzs7OztOOzs7OzsKKzE4NEI7TU9OR09MSUFOIExFVFRFUiBUT0RPIEJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODRDO01PTkdPTElBTiBMRVRURVIgVE9ETyBQQTtMbzswO0w7Ozs7O047Ozs7OworMTg0RDtNT05HT0xJQU4gTEVUVEVSIFRPRE8gUUE7TG87MDtMOzs7OztOOzs7OzsKKzE4NEU7TU9OR09MSUFOIExFVFRFUiBUT0RPIEdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODRGO01PTkdPTElBTiBMRVRURVIgVE9ETyBNQTtMbzswO0w7Ozs7O047Ozs7OworMTg1MDtNT05HT0xJQU4gTEVUVEVSIFRPRE8gVEE7TG87MDtMOzs7OztOOzs7OzsKKzE4NTE7TU9OR09MSUFOIExFVFRFUiBUT0RPIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODUyO01PTkdPTElBTiBMRVRURVIgVE9ETyBDSEE7TG87MDtMOzs7OztOOzs7OzsKKzE4NTM7TU9OR09MSUFOIExFVFRFUiBUT0RPIEpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODU0O01PTkdPTElBTiBMRVRURVIgVE9ETyBUU0E7TG87MDtMOzs7OztOOzs7OzsKKzE4NTU7TU9OR09MSUFOIExFVFRFUiBUT0RPIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODU2O01PTkdPTElBTiBMRVRURVIgVE9ETyBXQTtMbzswO0w7Ozs7O047Ozs7OworMTg1NztNT05HT0xJQU4gTEVUVEVSIFRPRE8gS0E7TG87MDtMOzs7OztOOzs7OzsKKzE4NTg7TU9OR09MSUFOIExFVFRFUiBUT0RPIEdBQTtMbzswO0w7Ozs7O047Ozs7OworMTg1OTtNT05HT0xJQU4gTEVUVEVSIFRPRE8gSEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODVBO01PTkdPTElBTiBMRVRURVIgVE9ETyBKSUE7TG87MDtMOzs7OztOOzs7OzsKKzE4NUI7TU9OR09MSUFOIExFVFRFUiBUT0RPIE5JQTtMbzswO0w7Ozs7O047Ozs7OworMTg1QztNT05HT0xJQU4gTEVUVEVSIFRPRE8gRFpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODVEO01PTkdPTElBTiBMRVRURVIgU0lCRSBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODVFO01PTkdPTElBTiBMRVRURVIgU0lCRSBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODVGO01PTkdPTElBTiBMRVRURVIgU0lCRSBJWTtMbzswO0w7Ozs7O047Ozs7OworMTg2MDtNT05HT0xJQU4gTEVUVEVSIFNJQkUgVUU7TG87MDtMOzs7OztOOzs7OzsKKzE4NjE7TU9OR09MSUFOIExFVFRFUiBTSUJFIFU7TG87MDtMOzs7OztOOzs7OzsKKzE4NjI7TU9OR09MSUFOIExFVFRFUiBTSUJFIEFORztMbzswO0w7Ozs7O047Ozs7OworMTg2MztNT05HT0xJQU4gTEVUVEVSIFNJQkUgS0E7TG87MDtMOzs7OztOOzs7OzsKKzE4NjQ7TU9OR09MSUFOIExFVFRFUiBTSUJFIEdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODY1O01PTkdPTElBTiBMRVRURVIgU0lCRSBIQTtMbzswO0w7Ozs7O047Ozs7OworMTg2NjtNT05HT0xJQU4gTEVUVEVSIFNJQkUgUEE7TG87MDtMOzs7OztOOzs7OzsKKzE4Njc7TU9OR09MSUFOIExFVFRFUiBTSUJFIFNIQTtMbzswO0w7Ozs7O047Ozs7OworMTg2ODtNT05HT0xJQU4gTEVUVEVSIFNJQkUgVEE7TG87MDtMOzs7OztOOzs7OzsKKzE4Njk7TU9OR09MSUFOIExFVFRFUiBTSUJFIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODZBO01PTkdPTElBTiBMRVRURVIgU0lCRSBKQTtMbzswO0w7Ozs7O047Ozs7OworMTg2QjtNT05HT0xJQU4gTEVUVEVSIFNJQkUgRkE7TG87MDtMOzs7OztOOzs7OzsKKzE4NkM7TU9OR09MSUFOIExFVFRFUiBTSUJFIEdBQTtMbzswO0w7Ozs7O047Ozs7OworMTg2RDtNT05HT0xJQU4gTEVUVEVSIFNJQkUgSEFBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODZFO01PTkdPTElBTiBMRVRURVIgU0lCRSBUU0E7TG87MDtMOzs7OztOOzs7OzsKKzE4NkY7TU9OR09MSUFOIExFVFRFUiBTSUJFIFpBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODcwO01PTkdPTElBTiBMRVRURVIgU0lCRSBSQUE7TG87MDtMOzs7OztOOzs7OzsKKzE4NzE7TU9OR09MSUFOIExFVFRFUiBTSUJFIENIQTtMbzswO0w7Ozs7O047Ozs7OworMTg3MjtNT05HT0xJQU4gTEVUVEVSIFNJQkUgWkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODczO01PTkdPTElBTiBMRVRURVIgTUFOQ0hVIEk7TG87MDtMOzs7OztOOzs7OzsKKzE4NzQ7TU9OR09MSUFOIExFVFRFUiBNQU5DSFUgS0E7TG87MDtMOzs7OztOOzs7OzsKKzE4NzU7TU9OR09MSUFOIExFVFRFUiBNQU5DSFUgUkE7TG87MDtMOzs7OztOOzs7OzsKKzE4NzY7TU9OR09MSUFOIExFVFRFUiBNQU5DSFUgRkE7TG87MDtMOzs7OztOOzs7OzsKKzE4Nzc7TU9OR09MSUFOIExFVFRFUiBNQU5DSFUgWkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODgwO01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgQU5VU1ZBUkEgT05FO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODgxO01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgVklTQVJHQSBPTkU7TG87MDtMOzs7OztOOzs7OzsKKzE4ODI7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBEQU1BUlU7TG87MDtMOzs7OztOOzs7OzsKKzE4ODM7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBVQkFEQU1BO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODg0O01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgSU5WRVJURUQgVUJBREFNQTtMbzswO0w7Ozs7O047Ozs7OworMTg4NTtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIEJBTFVEQTtMbzswO0w7Ozs7O047Ozs7OworMTg4NjtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIFRIUkVFIEJBTFVEQTtMbzswO0w7Ozs7O047Ozs7OworMTg4NztNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIEE7TG87MDtMOzs7OztOOzs7OzsKKzE4ODg7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODg5O01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgS0E7TG87MDtMOzs7OztOOzs7OzsKKzE4OEE7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzE4OEI7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBDQTtMbzswO0w7Ozs7O047Ozs7OworMTg4QztNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMTg4RDtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIFRUSEE7TG87MDtMOzs7OztOOzs7OzsKKzE4OEU7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBEREE7TG87MDtMOzs7OztOOzs7OzsKKzE4OEY7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBOTkE7TG87MDtMOzs7OztOOzs7OzsKKzE4OTA7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBUQTtMbzswO0w7Ozs7O047Ozs7OworMTg5MTtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODkyO01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgUEE7TG87MDtMOzs7OztOOzs7OzsKKzE4OTM7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBQSEE7TG87MDtMOzs7OztOOzs7OzsKKzE4OTQ7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzE4OTU7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBaSEE7TG87MDtMOzs7OztOOzs7OzsKKzE4OTY7TU9OR09MSUFOIExFVFRFUiBBTEkgR0FMSSBaQTtMbzswO0w7Ozs7O047Ozs7OworMTg5NztNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIEFIO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODk4O01PTkdPTElBTiBMRVRURVIgVE9ETyBBTEkgR0FMSSBUQTtMbzswO0w7Ozs7O047Ozs7OworMTg5OTtNT05HT0xJQU4gTEVUVEVSIFRPRE8gQUxJIEdBTEkgWkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODlBO01PTkdPTElBTiBMRVRURVIgTUFOQ0hVIEFMSSBHQUxJIEdIQTtMbzswO0w7Ozs7O047Ozs7OworMTg5QjtNT05HT0xJQU4gTEVUVEVSIE1BTkNIVSBBTEkgR0FMSSBOR0E7TG87MDtMOzs7OztOOzs7OzsKKzE4OUM7TU9OR09MSUFOIExFVFRFUiBNQU5DSFUgQUxJIEdBTEkgQ0E7TG87MDtMOzs7OztOOzs7OzsKKzE4OUQ7TU9OR09MSUFOIExFVFRFUiBNQU5DSFUgQUxJIEdBTEkgSkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxODlFO01PTkdPTElBTiBMRVRURVIgTUFOQ0hVIEFMSSBHQUxJIFRUQTtMbzswO0w7Ozs7O047Ozs7OworMTg5RjtNT05HT0xJQU4gTEVUVEVSIE1BTkNIVSBBTEkgR0FMSSBEREhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxOEEwO01PTkdPTElBTiBMRVRURVIgTUFOQ0hVIEFMSSBHQUxJIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxOEExO01PTkdPTElBTiBMRVRURVIgTUFOQ0hVIEFMSSBHQUxJIERIQTtMbzswO0w7Ozs7O047Ozs7OworMThBMjtNT05HT0xJQU4gTEVUVEVSIE1BTkNIVSBBTEkgR0FMSSBTU0E7TG87MDtMOzs7OztOOzs7OzsKKzE4QTM7TU9OR09MSUFOIExFVFRFUiBNQU5DSFUgQUxJIEdBTEkgQ1lBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxOEE0O01PTkdPTElBTiBMRVRURVIgTUFOQ0hVIEFMSSBHQUxJIFpIQTtMbzswO0w7Ozs7O047Ozs7OworMThBNTtNT05HT0xJQU4gTEVUVEVSIE1BTkNIVSBBTEkgR0FMSSBaQTtMbzswO0w7Ozs7O047Ozs7OworMThBNjtNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIEhBTEYgVTtMbzswO0w7Ozs7O047Ozs7OworMThBNztNT05HT0xJQU4gTEVUVEVSIEFMSSBHQUxJIEhBTEYgWUE7TG87MDtMOzs7OztOOzs7OzsKKzE4QTg7TU9OR09MSUFOIExFVFRFUiBNQU5DSFUgQUxJIEdBTEkgQkhBO0xvOzA7TDs7Ozs7Tjs7Ozs7CisxOEE5O01PTkdPTElBTiBMRVRURVIgQUxJIEdBTEkgREFHQUxHQTtNbjsyMjg7TlNNOzs7OztOOzs7OzsKKzFFMDA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIFJJTkcgQkVMT1c7THU7MDtMOzAwNDEgMDMyNTs7OztOOzs7OzFFMDE7CisxRTAxO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggUklORyBCRUxPVztMbDswO0w7MDA2MSAwMzI1Ozs7O047OzsxRTAwOzsxRTAwCisxRTAyO0xBVElOIENBUElUQUwgTEVUVEVSIEIgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNDIgMDMwNzs7OztOOzs7OzFFMDM7CisxRTAzO0xBVElOIFNNQUxMIExFVFRFUiBCIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDYyIDAzMDc7Ozs7Tjs7OzFFMDI7OzFFMDIKKzFFMDQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQiBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0MiAwMzIzOzs7O047Ozs7MUUwNTsKKzFFMDU7TEFUSU4gU01BTEwgTEVUVEVSIEIgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNjIgMDMyMzs7OztOOzs7MUUwNDs7MUUwNAorMUUwNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBCIFdJVEggTElORSBCRUxPVztMdTswO0w7MDA0MiAwMzMxOzs7O047Ozs7MUUwNzsKKzFFMDc7TEFUSU4gU01BTEwgTEVUVEVSIEIgV0lUSCBMSU5FIEJFTE9XO0xsOzA7TDswMDYyIDAzMzE7Ozs7Tjs7OzFFMDY7OzFFMDYKKzFFMDg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEgQU5EIEFDVVRFO0x1OzA7TDswMEM3IDAzMDE7Ozs7Tjs7OzsxRTA5OworMUUwOTtMQVRJTiBTTUFMTCBMRVRURVIgQyBXSVRIIENFRElMTEEgQU5EIEFDVVRFO0xsOzA7TDswMEU3IDAzMDE7Ozs7Tjs7OzFFMDg7OzFFMDgKKzFFMEE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0NCAwMzA3Ozs7O047Ozs7MUUwQjsKKzFFMEI7TEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNjQgMDMwNzs7OztOOzs7MUUwQTs7MUUwQQorMUUwQztMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDQ0IDAzMjM7Ozs7Tjs7OzsxRTBEOworMUUwRDtMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA2NCAwMzIzOzs7O047OzsxRTBDOzsxRTBDCisxRTBFO0xBVElOIENBUElUQUwgTEVUVEVSIEQgV0lUSCBMSU5FIEJFTE9XO0x1OzA7TDswMDQ0IDAzMzE7Ozs7Tjs7OzsxRTBGOworMUUwRjtMQVRJTiBTTUFMTCBMRVRURVIgRCBXSVRIIExJTkUgQkVMT1c7TGw7MDtMOzAwNjQgMDMzMTs7OztOOzs7MUUwRTs7MUUwRQorMUUxMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBEIFdJVEggQ0VESUxMQTtMdTswO0w7MDA0NCAwMzI3Ozs7O047Ozs7MUUxMTsKKzFFMTE7TEFUSU4gU01BTEwgTEVUVEVSIEQgV0lUSCBDRURJTExBO0xsOzA7TDswMDY0IDAzMjc7Ozs7Tjs7OzFFMTA7OzFFMTAKKzFFMTI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRCBXSVRIIENJUkNVTUZMRVggQkVMT1c7THU7MDtMOzAwNDQgMDMyRDs7OztOOzs7OzFFMTM7CisxRTEzO0xBVElOIFNNQUxMIExFVFRFUiBEIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMbDswO0w7MDA2NCAwMzJEOzs7O047OzsxRTEyOzsxRTEyCisxRTE0O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBNQUNST04gQU5EIEdSQVZFO0x1OzA7TDswMTEyIDAzMDA7Ozs7Tjs7OzsxRTE1OworMUUxNTtMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIE1BQ1JPTiBBTkQgR1JBVkU7TGw7MDtMOzAxMTMgMDMwMDs7OztOOzs7MUUxNDs7MUUxNAorMUUxNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggTUFDUk9OIEFORCBBQ1VURTtMdTswO0w7MDExMiAwMzAxOzs7O047Ozs7MUUxNzsKKzFFMTc7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBNQUNST04gQU5EIEFDVVRFO0xsOzA7TDswMTEzIDAzMDE7Ozs7Tjs7OzFFMTY7OzFFMTYKKzFFMTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQkVMT1c7THU7MDtMOzAwNDUgMDMyRDs7OztOOzs7OzFFMTk7CisxRTE5O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMbDswO0w7MDA2NSAwMzJEOzs7O047OzsxRTE4OzsxRTE4CisxRTFBO0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBUSUxERSBCRUxPVztMdTswO0w7MDA0NSAwMzMwOzs7O047Ozs7MUUxQjsKKzFFMUI7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBUSUxERSBCRUxPVztMbDswO0w7MDA2NSAwMzMwOzs7O047OzsxRTFBOzsxRTFBCisxRTFDO0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDRURJTExBIEFORCBCUkVWRTtMdTswO0w7MDIyOCAwMzA2Ozs7O047Ozs7MUUxRDsKKzFFMUQ7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDRURJTExBIEFORCBCUkVWRTtMbDswO0w7MDIyOSAwMzA2Ozs7O047OzsxRTFDOzsxRTFDCisxRTFFO0xBVElOIENBUElUQUwgTEVUVEVSIEYgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNDYgMDMwNzs7OztOOzs7OzFFMUY7CisxRTFGO0xBVElOIFNNQUxMIExFVFRFUiBGIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDY2IDAzMDc7Ozs7Tjs7OzFFMUU7OzFFMUUKKzFFMjA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRyBXSVRIIE1BQ1JPTjtMdTswO0w7MDA0NyAwMzA0Ozs7O047Ozs7MUUyMTsKKzFFMjE7TEFUSU4gU01BTEwgTEVUVEVSIEcgV0lUSCBNQUNST047TGw7MDtMOzAwNjcgMDMwNDs7OztOOzs7MUUyMDs7MUUyMAorMUUyMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDQ4IDAzMDc7Ozs7Tjs7OzsxRTIzOworMUUyMztMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2OCAwMzA3Ozs7O047OzsxRTIyOzsxRTIyCisxRTI0O0xBVElOIENBUElUQUwgTEVUVEVSIEggV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNDggMDMyMzs7OztOOzs7OzFFMjU7CisxRTI1O0xBVElOIFNNQUxMIExFVFRFUiBIIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDY4IDAzMjM7Ozs7Tjs7OzFFMjQ7OzFFMjQKKzFFMjY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIERJQUVSRVNJUztMdTswO0w7MDA0OCAwMzA4Ozs7O047Ozs7MUUyNzsKKzFFMjc7TEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBESUFFUkVTSVM7TGw7MDtMOzAwNjggMDMwODs7OztOOzs7MUUyNjs7MUUyNgorMUUyODtMQVRJTiBDQVBJVEFMIExFVFRFUiBIIFdJVEggQ0VESUxMQTtMdTswO0w7MDA0OCAwMzI3Ozs7O047Ozs7MUUyOTsKKzFFMjk7TEFUSU4gU01BTEwgTEVUVEVSIEggV0lUSCBDRURJTExBO0xsOzA7TDswMDY4IDAzMjc7Ozs7Tjs7OzFFMjg7OzFFMjgKKzFFMkE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSCBXSVRIIEJSRVZFIEJFTE9XO0x1OzA7TDswMDQ4IDAzMkU7Ozs7Tjs7OzsxRTJCOworMUUyQjtMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIEJSRVZFIEJFTE9XO0xsOzA7TDswMDY4IDAzMkU7Ozs7Tjs7OzFFMkE7OzFFMkEKKzFFMkM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIFRJTERFIEJFTE9XO0x1OzA7TDswMDQ5IDAzMzA7Ozs7Tjs7OzsxRTJEOworMUUyRDtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIFRJTERFIEJFTE9XO0xsOzA7TDswMDY5IDAzMzA7Ozs7Tjs7OzFFMkM7OzFFMkMKKzFFMkU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSSBXSVRIIERJQUVSRVNJUyBBTkQgQUNVVEU7THU7MDtMOzAwQ0YgMDMwMTs7OztOOzs7OzFFMkY7CisxRTJGO0xBVElOIFNNQUxMIExFVFRFUiBJIFdJVEggRElBRVJFU0lTIEFORCBBQ1VURTtMbDswO0w7MDBFRiAwMzAxOzs7O047OzsxRTJFOzsxRTJFCisxRTMwO0xBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBBQ1VURTtMdTswO0w7MDA0QiAwMzAxOzs7O047Ozs7MUUzMTsKKzFFMzE7TEFUSU4gU01BTEwgTEVUVEVSIEsgV0lUSCBBQ1VURTtMbDswO0w7MDA2QiAwMzAxOzs7O047OzsxRTMwOzsxRTMwCisxRTMyO0xBVElOIENBUElUQUwgTEVUVEVSIEsgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNEIgMDMyMzs7OztOOzs7OzFFMzM7CisxRTMzO0xBVElOIFNNQUxMIExFVFRFUiBLIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDZCIDAzMjM7Ozs7Tjs7OzFFMzI7OzFFMzIKKzFFMzQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgSyBXSVRIIExJTkUgQkVMT1c7THU7MDtMOzAwNEIgMDMzMTs7OztOOzs7OzFFMzU7CisxRTM1O0xBVElOIFNNQUxMIExFVFRFUiBLIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA2QiAwMzMxOzs7O047OzsxRTM0OzsxRTM0CisxRTM2O0xBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNEMgMDMyMzs7OztOOzs7OzFFMzc7CisxRTM3O0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDZDIDAzMjM7Ozs7Tjs7OzFFMzY7OzFFMzYKKzFFMzg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIERPVCBCRUxPVyBBTkQgTUFDUk9OO0x1OzA7TDsxRTM2IDAzMDQ7Ozs7Tjs7OzsxRTM5OworMUUzOTtMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIERPVCBCRUxPVyBBTkQgTUFDUk9OO0xsOzA7TDsxRTM3IDAzMDQ7Ozs7Tjs7OzFFMzg7OzFFMzgKKzFFM0E7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTCBXSVRIIExJTkUgQkVMT1c7THU7MDtMOzAwNEMgMDMzMTs7OztOOzs7OzFFM0I7CisxRTNCO0xBVElOIFNNQUxMIExFVFRFUiBMIFdJVEggTElORSBCRUxPVztMbDswO0w7MDA2QyAwMzMxOzs7O047OzsxRTNBOzsxRTNBCisxRTNDO0xBVElOIENBUElUQUwgTEVUVEVSIEwgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0x1OzA7TDswMDRDIDAzMkQ7Ozs7Tjs7OzsxRTNEOworMUUzRDtMQVRJTiBTTUFMTCBMRVRURVIgTCBXSVRIIENJUkNVTUZMRVggQkVMT1c7TGw7MDtMOzAwNkMgMDMyRDs7OztOOzs7MUUzQzs7MUUzQworMUUzRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBNIFdJVEggQUNVVEU7THU7MDtMOzAwNEQgMDMwMTs7OztOOzs7OzFFM0Y7CisxRTNGO0xBVElOIFNNQUxMIExFVFRFUiBNIFdJVEggQUNVVEU7TGw7MDtMOzAwNkQgMDMwMTs7OztOOzs7MUUzRTs7MUUzRQorMUU0MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBNIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDREIDAzMDc7Ozs7Tjs7OzsxRTQxOworMUU0MTtMQVRJTiBTTUFMTCBMRVRURVIgTSBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA2RCAwMzA3Ozs7O047OzsxRTQwOzsxRTQwCisxRTQyO0xBVElOIENBUElUQUwgTEVUVEVSIE0gV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNEQgMDMyMzs7OztOOzs7OzFFNDM7CisxRTQzO0xBVElOIFNNQUxMIExFVFRFUiBNIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDZEIDAzMjM7Ozs7Tjs7OzFFNDI7OzFFNDIKKzFFNDQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTiBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA0RSAwMzA3Ozs7O047Ozs7MUU0NTsKKzFFNDU7TEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNkUgMDMwNzs7OztOOzs7MUU0NDs7MUU0NAorMUU0NjtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDRFIDAzMjM7Ozs7Tjs7OzsxRTQ3OworMUU0NztMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA2RSAwMzIzOzs7O047OzsxRTQ2OzsxRTQ2CisxRTQ4O0xBVElOIENBUElUQUwgTEVUVEVSIE4gV0lUSCBMSU5FIEJFTE9XO0x1OzA7TDswMDRFIDAzMzE7Ozs7Tjs7OzsxRTQ5OworMUU0OTtMQVRJTiBTTUFMTCBMRVRURVIgTiBXSVRIIExJTkUgQkVMT1c7TGw7MDtMOzAwNkUgMDMzMTs7OztOOzs7MUU0ODs7MUU0OAorMUU0QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBOIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMdTswO0w7MDA0RSAwMzJEOzs7O047Ozs7MUU0QjsKKzFFNEI7TEFUSU4gU01BTEwgTEVUVEVSIE4gV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0xsOzA7TDswMDZFIDAzMkQ7Ozs7Tjs7OzFFNEE7OzFFNEEKKzFFNEM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIFRJTERFIEFORCBBQ1VURTtMdTswO0w7MDBENSAwMzAxOzs7O047Ozs7MUU0RDsKKzFFNEQ7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERSBBTkQgQUNVVEU7TGw7MDtMOzAwRjUgMDMwMTs7OztOOzs7MUU0Qzs7MUU0QworMUU0RTtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggVElMREUgQU5EIERJQUVSRVNJUztMdTswO0w7MDBENSAwMzA4Ozs7O047Ozs7MUU0RjsKKzFFNEY7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBUSUxERSBBTkQgRElBRVJFU0lTO0xsOzA7TDswMEY1IDAzMDg7Ozs7Tjs7OzFFNEU7OzFFNEUKKzFFNTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIE1BQ1JPTiBBTkQgR1JBVkU7THU7MDtMOzAxNEMgMDMwMDs7OztOOzs7OzFFNTE7CisxRTUxO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggTUFDUk9OIEFORCBHUkFWRTtMbDswO0w7MDE0RCAwMzAwOzs7O047OzsxRTUwOzsxRTUwCisxRTUyO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBNQUNST04gQU5EIEFDVVRFO0x1OzA7TDswMTRDIDAzMDE7Ozs7Tjs7OzsxRTUzOworMUU1MztMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIE1BQ1JPTiBBTkQgQUNVVEU7TGw7MDtMOzAxNEQgMDMwMTs7OztOOzs7MUU1Mjs7MUU1MgorMUU1NDtMQVRJTiBDQVBJVEFMIExFVFRFUiBQIFdJVEggQUNVVEU7THU7MDtMOzAwNTAgMDMwMTs7OztOOzs7OzFFNTU7CisxRTU1O0xBVElOIFNNQUxMIExFVFRFUiBQIFdJVEggQUNVVEU7TGw7MDtMOzAwNzAgMDMwMTs7OztOOzs7MUU1NDs7MUU1NAorMUU1NjtMQVRJTiBDQVBJVEFMIExFVFRFUiBQIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDUwIDAzMDc7Ozs7Tjs7OzsxRTU3OworMUU1NztMQVRJTiBTTUFMTCBMRVRURVIgUCBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA3MCAwMzA3Ozs7O047OzsxRTU2OzsxRTU2CisxRTU4O0xBVElOIENBUElUQUwgTEVUVEVSIFIgV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNTIgMDMwNzs7OztOOzs7OzFFNTk7CisxRTU5O0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDcyIDAzMDc7Ozs7Tjs7OzFFNTg7OzFFNTgKKzFFNUE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUiBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA1MiAwMzIzOzs7O047Ozs7MUU1QjsKKzFFNUI7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNzIgMDMyMzs7OztOOzs7MUU1QTs7MUU1QQorMUU1QztMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggRE9UIEJFTE9XIEFORCBNQUNST047THU7MDtMOzFFNUEgMDMwNDs7OztOOzs7OzFFNUQ7CisxRTVEO0xBVElOIFNNQUxMIExFVFRFUiBSIFdJVEggRE9UIEJFTE9XIEFORCBNQUNST047TGw7MDtMOzFFNUIgMDMwNDs7OztOOzs7MUU1Qzs7MUU1QworMUU1RTtMQVRJTiBDQVBJVEFMIExFVFRFUiBSIFdJVEggTElORSBCRUxPVztMdTswO0w7MDA1MiAwMzMxOzs7O047Ozs7MUU1RjsKKzFFNUY7TEFUSU4gU01BTEwgTEVUVEVSIFIgV0lUSCBMSU5FIEJFTE9XO0xsOzA7TDswMDcyIDAzMzE7Ozs7Tjs7OzFFNUU7OzFFNUUKKzFFNjA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA1MyAwMzA3Ozs7O047Ozs7MUU2MTsKKzFFNjE7TEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNzMgMDMwNzs7OztOOzs7MUU2MDs7MUU2MAorMUU2MjtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDUzIDAzMjM7Ozs7Tjs7OzsxRTYzOworMUU2MztMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA3MyAwMzIzOzs7O047OzsxRTYyOzsxRTYyCisxRTY0O0xBVElOIENBUElUQUwgTEVUVEVSIFMgV0lUSCBBQ1VURSBBTkQgRE9UIEFCT1ZFO0x1OzA7TDswMTVBIDAzMDc7Ozs7Tjs7OzsxRTY1OworMUU2NTtMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIEFDVVRFIEFORCBET1QgQUJPVkU7TGw7MDtMOzAxNUIgMDMwNzs7OztOOzs7MUU2NDs7MUU2NAorMUU2NjtMQVRJTiBDQVBJVEFMIExFVFRFUiBTIFdJVEggQ0FST04gQU5EIERPVCBBQk9WRTtMdTswO0w7MDE2MCAwMzA3Ozs7O047Ozs7MUU2NzsKKzFFNjc7TEFUSU4gU01BTEwgTEVUVEVSIFMgV0lUSCBDQVJPTiBBTkQgRE9UIEFCT1ZFO0xsOzA7TDswMTYxIDAzMDc7Ozs7Tjs7OzFFNjY7OzFFNjYKKzFFNjg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgUyBXSVRIIERPVCBCRUxPVyBBTkQgRE9UIEFCT1ZFO0x1OzA7TDsxRTYyIDAzMDc7Ozs7Tjs7OzsxRTY5OworMUU2OTtMQVRJTiBTTUFMTCBMRVRURVIgUyBXSVRIIERPVCBCRUxPVyBBTkQgRE9UIEFCT1ZFO0xsOzA7TDsxRTYzIDAzMDc7Ozs7Tjs7OzFFNjg7OzFFNjgKKzFFNkE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVCBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA1NCAwMzA3Ozs7O047Ozs7MUU2QjsKKzFFNkI7TEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNzQgMDMwNzs7OztOOzs7MUU2QTs7MUU2QQorMUU2QztMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDU0IDAzMjM7Ozs7Tjs7OzsxRTZEOworMUU2RDtMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA3NCAwMzIzOzs7O047OzsxRTZDOzsxRTZDCisxRTZFO0xBVElOIENBUElUQUwgTEVUVEVSIFQgV0lUSCBMSU5FIEJFTE9XO0x1OzA7TDswMDU0IDAzMzE7Ozs7Tjs7OzsxRTZGOworMUU2RjtMQVRJTiBTTUFMTCBMRVRURVIgVCBXSVRIIExJTkUgQkVMT1c7TGw7MDtMOzAwNzQgMDMzMTs7OztOOzs7MUU2RTs7MUU2RQorMUU3MDtMQVRJTiBDQVBJVEFMIExFVFRFUiBUIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMdTswO0w7MDA1NCAwMzJEOzs7O047Ozs7MUU3MTsKKzFFNzE7TEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0xsOzA7TDswMDc0IDAzMkQ7Ozs7Tjs7OzFFNzA7OzFFNzAKKzFFNzI7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIERJQUVSRVNJUyBCRUxPVztMdTswO0w7MDA1NSAwMzI0Ozs7O047Ozs7MUU3MzsKKzFFNzM7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBESUFFUkVTSVMgQkVMT1c7TGw7MDtMOzAwNzUgMDMyNDs7OztOOzs7MUU3Mjs7MUU3MgorMUU3NDtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggVElMREUgQkVMT1c7THU7MDtMOzAwNTUgMDMzMDs7OztOOzs7OzFFNzU7CisxRTc1O0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggVElMREUgQkVMT1c7TGw7MDtMOzAwNzUgMDMzMDs7OztOOzs7MUU3NDs7MUU3NAorMUU3NjtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggQ0lSQ1VNRkxFWCBCRUxPVztMdTswO0w7MDA1NSAwMzJEOzs7O047Ozs7MUU3NzsKKzFFNzc7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBDSVJDVU1GTEVYIEJFTE9XO0xsOzA7TDswMDc1IDAzMkQ7Ozs7Tjs7OzFFNzY7OzFFNzYKKzFFNzg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIFRJTERFIEFORCBBQ1VURTtMdTswO0w7MDE2OCAwMzAxOzs7O047Ozs7MUU3OTsKKzFFNzk7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBUSUxERSBBTkQgQUNVVEU7TGw7MDtMOzAxNjkgMDMwMTs7OztOOzs7MUU3ODs7MUU3OAorMUU3QTtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggTUFDUk9OIEFORCBESUFFUkVTSVM7THU7MDtMOzAxNkEgMDMwODs7OztOOzs7OzFFN0I7CisxRTdCO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggTUFDUk9OIEFORCBESUFFUkVTSVM7TGw7MDtMOzAxNkIgMDMwODs7OztOOzs7MUU3QTs7MUU3QQorMUU3QztMQVRJTiBDQVBJVEFMIExFVFRFUiBWIFdJVEggVElMREU7THU7MDtMOzAwNTYgMDMwMzs7OztOOzs7OzFFN0Q7CisxRTdEO0xBVElOIFNNQUxMIExFVFRFUiBWIFdJVEggVElMREU7TGw7MDtMOzAwNzYgMDMwMzs7OztOOzs7MUU3Qzs7MUU3QworMUU3RTtMQVRJTiBDQVBJVEFMIExFVFRFUiBWIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDU2IDAzMjM7Ozs7Tjs7OzsxRTdGOworMUU3RjtMQVRJTiBTTUFMTCBMRVRURVIgViBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA3NiAwMzIzOzs7O047OzsxRTdFOzsxRTdFCisxRTgwO0xBVElOIENBUElUQUwgTEVUVEVSIFcgV0lUSCBHUkFWRTtMdTswO0w7MDA1NyAwMzAwOzs7O047Ozs7MUU4MTsKKzFFODE7TEFUSU4gU01BTEwgTEVUVEVSIFcgV0lUSCBHUkFWRTtMbDswO0w7MDA3NyAwMzAwOzs7O047OzsxRTgwOzsxRTgwCisxRTgyO0xBVElOIENBUElUQUwgTEVUVEVSIFcgV0lUSCBBQ1VURTtMdTswO0w7MDA1NyAwMzAxOzs7O047Ozs7MUU4MzsKKzFFODM7TEFUSU4gU01BTEwgTEVUVEVSIFcgV0lUSCBBQ1VURTtMbDswO0w7MDA3NyAwMzAxOzs7O047OzsxRTgyOzsxRTgyCisxRTg0O0xBVElOIENBUElUQUwgTEVUVEVSIFcgV0lUSCBESUFFUkVTSVM7THU7MDtMOzAwNTcgMDMwODs7OztOOzs7OzFFODU7CisxRTg1O0xBVElOIFNNQUxMIExFVFRFUiBXIFdJVEggRElBRVJFU0lTO0xsOzA7TDswMDc3IDAzMDg7Ozs7Tjs7OzFFODQ7OzFFODQKKzFFODY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVyBXSVRIIERPVCBBQk9WRTtMdTswO0w7MDA1NyAwMzA3Ozs7O047Ozs7MUU4NzsKKzFFODc7TEFUSU4gU01BTEwgTEVUVEVSIFcgV0lUSCBET1QgQUJPVkU7TGw7MDtMOzAwNzcgMDMwNzs7OztOOzs7MUU4Njs7MUU4NgorMUU4ODtMQVRJTiBDQVBJVEFMIExFVFRFUiBXIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDU3IDAzMjM7Ozs7Tjs7OzsxRTg5OworMUU4OTtMQVRJTiBTTUFMTCBMRVRURVIgVyBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA3NyAwMzIzOzs7O047OzsxRTg4OzsxRTg4CisxRThBO0xBVElOIENBUElUQUwgTEVUVEVSIFggV0lUSCBET1QgQUJPVkU7THU7MDtMOzAwNTggMDMwNzs7OztOOzs7OzFFOEI7CisxRThCO0xBVElOIFNNQUxMIExFVFRFUiBYIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMDc4IDAzMDc7Ozs7Tjs7OzFFOEE7OzFFOEEKKzFFOEM7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWCBXSVRIIERJQUVSRVNJUztMdTswO0w7MDA1OCAwMzA4Ozs7O047Ozs7MUU4RDsKKzFFOEQ7TEFUSU4gU01BTEwgTEVUVEVSIFggV0lUSCBESUFFUkVTSVM7TGw7MDtMOzAwNzggMDMwODs7OztOOzs7MUU4Qzs7MUU4QworMUU4RTtMQVRJTiBDQVBJVEFMIExFVFRFUiBZIFdJVEggRE9UIEFCT1ZFO0x1OzA7TDswMDU5IDAzMDc7Ozs7Tjs7OzsxRThGOworMUU4RjtMQVRJTiBTTUFMTCBMRVRURVIgWSBXSVRIIERPVCBBQk9WRTtMbDswO0w7MDA3OSAwMzA3Ozs7O047OzsxRThFOzsxRThFCisxRTkwO0xBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBDSVJDVU1GTEVYO0x1OzA7TDswMDVBIDAzMDI7Ozs7Tjs7OzsxRTkxOworMUU5MTtMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIENJUkNVTUZMRVg7TGw7MDtMOzAwN0EgMDMwMjs7OztOOzs7MUU5MDs7MUU5MAorMUU5MjtMQVRJTiBDQVBJVEFMIExFVFRFUiBaIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDVBIDAzMjM7Ozs7Tjs7OzsxRTkzOworMUU5MztMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA3QSAwMzIzOzs7O047OzsxRTkyOzsxRTkyCisxRTk0O0xBVElOIENBUElUQUwgTEVUVEVSIFogV0lUSCBMSU5FIEJFTE9XO0x1OzA7TDswMDVBIDAzMzE7Ozs7Tjs7OzsxRTk1OworMUU5NTtMQVRJTiBTTUFMTCBMRVRURVIgWiBXSVRIIExJTkUgQkVMT1c7TGw7MDtMOzAwN0EgMDMzMTs7OztOOzs7MUU5NDs7MUU5NAorMUU5NjtMQVRJTiBTTUFMTCBMRVRURVIgSCBXSVRIIExJTkUgQkVMT1c7TGw7MDtMOzAwNjggMDMzMTs7OztOOzs7OzsKKzFFOTc7TEFUSU4gU01BTEwgTEVUVEVSIFQgV0lUSCBESUFFUkVTSVM7TGw7MDtMOzAwNzQgMDMwODs7OztOOzs7OzsKKzFFOTg7TEFUSU4gU01BTEwgTEVUVEVSIFcgV0lUSCBSSU5HIEFCT1ZFO0xsOzA7TDswMDc3IDAzMEE7Ozs7Tjs7Ozs7CisxRTk5O0xBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggUklORyBBQk9WRTtMbDswO0w7MDA3OSAwMzBBOzs7O047Ozs7OworMUU5QTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIFJJR0hUIEhBTEYgUklORztMbDswO0w7PGNvbXBhdD4gMDA2MSAwMkJFOzs7O047Ozs7OworMUU5QjtMQVRJTiBTTUFMTCBMRVRURVIgTE9ORyBTIFdJVEggRE9UIEFCT1ZFO0xsOzA7TDswMTdGIDAzMDc7Ozs7Tjs7OzFFNjA7OzFFNjAKKzFFQTA7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIERPVCBCRUxPVztMdTswO0w7MDA0MSAwMzIzOzs7O047Ozs7MUVBMTsKKzFFQTE7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBET1QgQkVMT1c7TGw7MDtMOzAwNjEgMDMyMzs7OztOOzs7MUVBMDs7MUVBMAorMUVBMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggSE9PSyBBQk9WRTtMdTswO0w7MDA0MSAwMzA5Ozs7O047Ozs7MUVBMzsKKzFFQTM7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBIT09LIEFCT1ZFO0xsOzA7TDswMDYxIDAzMDk7Ozs7Tjs7OzFFQTI7OzFFQTIKKzFFQTQ7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFO0x1OzA7TDswMEMyIDAzMDE7Ozs7Tjs7OzsxRUE1OworMUVBNTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIEFDVVRFO0xsOzA7TDswMEUyIDAzMDE7Ozs7Tjs7OzFFQTQ7OzFFQTQKKzFFQTY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFO0x1OzA7TDswMEMyIDAzMDA7Ozs7Tjs7OzsxRUE3OworMUVBNztMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIEdSQVZFO0xsOzA7TDswMEUyIDAzMDA7Ozs7Tjs7OzFFQTY7OzFFQTYKKzFFQTg7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIENJUkNVTUZMRVggQU5EIEhPT0sgQUJPVkU7THU7MDtMOzAwQzIgMDMwOTs7OztOOzs7OzFFQTk7CisxRUE5O0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgSE9PSyBBQk9WRTtMbDswO0w7MDBFMiAwMzA5Ozs7O047OzsxRUE4OzsxRUE4CisxRUFBO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERTtMdTswO0w7MDBDMiAwMzAzOzs7O047Ozs7MUVBQjsKKzFFQUI7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBUSUxERTtMbDswO0w7MDBFMiAwMzAzOzs7O047OzsxRUFBOzsxRUFBCisxRUFDO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBDSVJDVU1GTEVYIEFORCBET1QgQkVMT1c7THU7MDtMOzFFQTAgMDMwMjs7OztOOzs7OzFFQUQ7CisxRUFEO0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQ0lSQ1VNRkxFWCBBTkQgRE9UIEJFTE9XO0xsOzA7TDsxRUExIDAzMDI7Ozs7Tjs7OzFFQUM7OzFFQUMKKzFFQUU7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBBQ1VURTtMdTswO0w7MDEwMiAwMzAxOzs7O047Ozs7MUVBRjsKKzFFQUY7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgQUNVVEU7TGw7MDtMOzAxMDMgMDMwMTs7OztOOzs7MUVBRTs7MUVBRQorMUVCMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIEdSQVZFO0x1OzA7TDswMTAyIDAzMDA7Ozs7Tjs7OzsxRUIxOworMUVCMTtMQVRJTiBTTUFMTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBHUkFWRTtMbDswO0w7MDEwMyAwMzAwOzs7O047OzsxRUIwOzsxRUIwCisxRUIyO0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgSE9PSyBBQk9WRTtMdTswO0w7MDEwMiAwMzA5Ozs7O047Ozs7MUVCMzsKKzFFQjM7TEFUSU4gU01BTEwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgSE9PSyBBQk9WRTtMbDswO0w7MDEwMyAwMzA5Ozs7O047OzsxRUIyOzsxRUIyCisxRUI0O0xBVElOIENBUElUQUwgTEVUVEVSIEEgV0lUSCBCUkVWRSBBTkQgVElMREU7THU7MDtMOzAxMDIgMDMwMzs7OztOOzs7OzFFQjU7CisxRUI1O0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIFRJTERFO0xsOzA7TDswMTAzIDAzMDM7Ozs7Tjs7OzFFQjQ7OzFFQjQKKzFFQjY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgQSBXSVRIIEJSRVZFIEFORCBET1QgQkVMT1c7THU7MDtMOzFFQTAgMDMwNjs7OztOOzs7OzFFQjc7CisxRUI3O0xBVElOIFNNQUxMIExFVFRFUiBBIFdJVEggQlJFVkUgQU5EIERPVCBCRUxPVztMbDswO0w7MUVBMSAwMzA2Ozs7O047OzsxRUI2OzsxRUI2CisxRUI4O0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNDUgMDMyMzs7OztOOzs7OzFFQjk7CisxRUI5O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDY1IDAzMjM7Ozs7Tjs7OzFFQjg7OzFFQjgKKzFFQkE7TEFUSU4gQ0FQSVRBTCBMRVRURVIgRSBXSVRIIEhPT0sgQUJPVkU7THU7MDtMOzAwNDUgMDMwOTs7OztOOzs7OzFFQkI7CisxRUJCO0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggSE9PSyBBQk9WRTtMbDswO0w7MDA2NSAwMzA5Ozs7O047OzsxRUJBOzsxRUJBCisxRUJDO0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBUSUxERTtMdTswO0w7MDA0NSAwMzAzOzs7O047Ozs7MUVCRDsKKzFFQkQ7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBUSUxERTtMbDswO0w7MDA2NSAwMzAzOzs7O047OzsxRUJDOzsxRUJDCisxRUJFO0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBBQ1VURTtMdTswO0w7MDBDQSAwMzAxOzs7O047Ozs7MUVCRjsKKzFFQkY7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBBQ1VURTtMbDswO0w7MDBFQSAwMzAxOzs7O047OzsxRUJFOzsxRUJFCisxRUMwO0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBHUkFWRTtMdTswO0w7MDBDQSAwMzAwOzs7O047Ozs7MUVDMTsKKzFFQzE7TEFUSU4gU01BTEwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBHUkFWRTtMbDswO0w7MDBFQSAwMzAwOzs7O047OzsxRUMwOzsxRUMwCisxRUMyO0xBVElOIENBUElUQUwgTEVUVEVSIEUgV0lUSCBDSVJDVU1GTEVYIEFORCBIT09LIEFCT1ZFO0x1OzA7TDswMENBIDAzMDk7Ozs7Tjs7OzsxRUMzOworMUVDMztMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIEhPT0sgQUJPVkU7TGw7MDtMOzAwRUEgMDMwOTs7OztOOzs7MUVDMjs7MUVDMgorMUVDNDtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgVElMREU7THU7MDtMOzAwQ0EgMDMwMzs7OztOOzs7OzFFQzU7CisxRUM1O0xBVElOIFNNQUxMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgVElMREU7TGw7MDtMOzAwRUEgMDMwMzs7OztOOzs7MUVDNDs7MUVDNAorMUVDNjtMQVRJTiBDQVBJVEFMIExFVFRFUiBFIFdJVEggQ0lSQ1VNRkxFWCBBTkQgRE9UIEJFTE9XO0x1OzA7TDsxRUI4IDAzMDI7Ozs7Tjs7OzsxRUM3OworMUVDNztMQVRJTiBTTUFMTCBMRVRURVIgRSBXSVRIIENJUkNVTUZMRVggQU5EIERPVCBCRUxPVztMbDswO0w7MUVCOSAwMzAyOzs7O047OzsxRUM2OzsxRUM2CisxRUM4O0xBVElOIENBUElUQUwgTEVUVEVSIEkgV0lUSCBIT09LIEFCT1ZFO0x1OzA7TDswMDQ5IDAzMDk7Ozs7Tjs7OzsxRUM5OworMUVDOTtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIEhPT0sgQUJPVkU7TGw7MDtMOzAwNjkgMDMwOTs7OztOOzs7MUVDODs7MUVDOAorMUVDQTtMQVRJTiBDQVBJVEFMIExFVFRFUiBJIFdJVEggRE9UIEJFTE9XO0x1OzA7TDswMDQ5IDAzMjM7Ozs7Tjs7OzsxRUNCOworMUVDQjtMQVRJTiBTTUFMTCBMRVRURVIgSSBXSVRIIERPVCBCRUxPVztMbDswO0w7MDA2OSAwMzIzOzs7O047OzsxRUNBOzsxRUNBCisxRUNDO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNEYgMDMyMzs7OztOOzs7OzFFQ0Q7CisxRUNEO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDZGIDAzMjM7Ozs7Tjs7OzFFQ0M7OzFFQ0MKKzFFQ0U7TEFUSU4gQ0FQSVRBTCBMRVRURVIgTyBXSVRIIEhPT0sgQUJPVkU7THU7MDtMOzAwNEYgMDMwOTs7OztOOzs7OzFFQ0Y7CisxRUNGO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggSE9PSyBBQk9WRTtMbDswO0w7MDA2RiAwMzA5Ozs7O047OzsxRUNFOzsxRUNFCisxRUQwO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBBQ1VURTtMdTswO0w7MDBENCAwMzAxOzs7O047Ozs7MUVEMTsKKzFFRDE7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBBQ1VURTtMbDswO0w7MDBGNCAwMzAxOzs7O047OzsxRUQwOzsxRUQwCisxRUQyO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBHUkFWRTtMdTswO0w7MDBENCAwMzAwOzs7O047Ozs7MUVEMzsKKzFFRDM7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBHUkFWRTtMbDswO0w7MDBGNCAwMzAwOzs7O047OzsxRUQyOzsxRUQyCisxRUQ0O0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBDSVJDVU1GTEVYIEFORCBIT09LIEFCT1ZFO0x1OzA7TDswMEQ0IDAzMDk7Ozs7Tjs7OzsxRUQ1OworMUVENTtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIEhPT0sgQUJPVkU7TGw7MDtMOzAwRjQgMDMwOTs7OztOOzs7MUVENDs7MUVENAorMUVENjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgVElMREU7THU7MDtMOzAwRDQgMDMwMzs7OztOOzs7OzFFRDc7CisxRUQ3O0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgVElMREU7TGw7MDtMOzAwRjQgMDMwMzs7OztOOzs7MUVENjs7MUVENgorMUVEODtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggQ0lSQ1VNRkxFWCBBTkQgRE9UIEJFTE9XO0x1OzA7TDsxRUNDIDAzMDI7Ozs7Tjs7OzsxRUQ5OworMUVEOTtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIENJUkNVTUZMRVggQU5EIERPVCBCRUxPVztMbDswO0w7MUVDRCAwMzAyOzs7O047OzsxRUQ4OzsxRUQ4CisxRURBO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBBQ1VURTtMdTswO0w7MDFBMCAwMzAxOzs7O047Ozs7MUVEQjsKKzFFREI7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBBQ1VURTtMbDswO0w7MDFBMSAwMzAxOzs7O047OzsxRURBOzsxRURBCisxRURDO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBHUkFWRTtMdTswO0w7MDFBMCAwMzAwOzs7O047Ozs7MUVERDsKKzFFREQ7TEFUSU4gU01BTEwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBHUkFWRTtMbDswO0w7MDFBMSAwMzAwOzs7O047OzsxRURDOzsxRURDCisxRURFO0xBVElOIENBUElUQUwgTEVUVEVSIE8gV0lUSCBIT1JOIEFORCBIT09LIEFCT1ZFO0x1OzA7TDswMUEwIDAzMDk7Ozs7Tjs7OzsxRURGOworMUVERjtMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIEhPT0sgQUJPVkU7TGw7MDtMOzAxQTEgMDMwOTs7OztOOzs7MUVERTs7MUVERQorMUVFMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgVElMREU7THU7MDtMOzAxQTAgMDMwMzs7OztOOzs7OzFFRTE7CisxRUUxO0xBVElOIFNNQUxMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgVElMREU7TGw7MDtMOzAxQTEgMDMwMzs7OztOOzs7MUVFMDs7MUVFMAorMUVFMjtMQVRJTiBDQVBJVEFMIExFVFRFUiBPIFdJVEggSE9STiBBTkQgRE9UIEJFTE9XO0x1OzA7TDswMUEwIDAzMjM7Ozs7Tjs7OzsxRUUzOworMUVFMztMQVRJTiBTTUFMTCBMRVRURVIgTyBXSVRIIEhPUk4gQU5EIERPVCBCRUxPVztMbDswO0w7MDFBMSAwMzIzOzs7O047OzsxRUUyOzsxRUUyCisxRUU0O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNTUgMDMyMzs7OztOOzs7OzFFRTU7CisxRUU1O0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDc1IDAzMjM7Ozs7Tjs7OzFFRTQ7OzFFRTQKKzFFRTY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgVSBXSVRIIEhPT0sgQUJPVkU7THU7MDtMOzAwNTUgMDMwOTs7OztOOzs7OzFFRTc7CisxRUU3O0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSE9PSyBBQk9WRTtMbDswO0w7MDA3NSAwMzA5Ozs7O047OzsxRUU2OzsxRUU2CisxRUU4O0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBBQ1VURTtMdTswO0w7MDFBRiAwMzAxOzs7O047Ozs7MUVFOTsKKzFFRTk7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBBQ1VURTtMbDswO0w7MDFCMCAwMzAxOzs7O047OzsxRUU4OzsxRUU4CisxRUVBO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBHUkFWRTtMdTswO0w7MDFBRiAwMzAwOzs7O047Ozs7MUVFQjsKKzFFRUI7TEFUSU4gU01BTEwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBHUkFWRTtMbDswO0w7MDFCMCAwMzAwOzs7O047OzsxRUVBOzsxRUVBCisxRUVDO0xBVElOIENBUElUQUwgTEVUVEVSIFUgV0lUSCBIT1JOIEFORCBIT09LIEFCT1ZFO0x1OzA7TDswMUFGIDAzMDk7Ozs7Tjs7OzsxRUVEOworMUVFRDtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIEhPT0sgQUJPVkU7TGw7MDtMOzAxQjAgMDMwOTs7OztOOzs7MUVFQzs7MUVFQworMUVFRTtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgVElMREU7THU7MDtMOzAxQUYgMDMwMzs7OztOOzs7OzFFRUY7CisxRUVGO0xBVElOIFNNQUxMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgVElMREU7TGw7MDtMOzAxQjAgMDMwMzs7OztOOzs7MUVFRTs7MUVFRQorMUVGMDtMQVRJTiBDQVBJVEFMIExFVFRFUiBVIFdJVEggSE9STiBBTkQgRE9UIEJFTE9XO0x1OzA7TDswMUFGIDAzMjM7Ozs7Tjs7OzsxRUYxOworMUVGMTtMQVRJTiBTTUFMTCBMRVRURVIgVSBXSVRIIEhPUk4gQU5EIERPVCBCRUxPVztMbDswO0w7MDFCMCAwMzIzOzs7O047OzsxRUYwOzsxRUYwCisxRUYyO0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBHUkFWRTtMdTswO0w7MDA1OSAwMzAwOzs7O047Ozs7MUVGMzsKKzFFRjM7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBHUkFWRTtMbDswO0w7MDA3OSAwMzAwOzs7O047OzsxRUYyOzsxRUYyCisxRUY0O0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBET1QgQkVMT1c7THU7MDtMOzAwNTkgMDMyMzs7OztOOzs7OzFFRjU7CisxRUY1O0xBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggRE9UIEJFTE9XO0xsOzA7TDswMDc5IDAzMjM7Ozs7Tjs7OzFFRjQ7OzFFRjQKKzFFRjY7TEFUSU4gQ0FQSVRBTCBMRVRURVIgWSBXSVRIIEhPT0sgQUJPVkU7THU7MDtMOzAwNTkgMDMwOTs7OztOOzs7OzFFRjc7CisxRUY3O0xBVElOIFNNQUxMIExFVFRFUiBZIFdJVEggSE9PSyBBQk9WRTtMbDswO0w7MDA3OSAwMzA5Ozs7O047OzsxRUY2OzsxRUY2CisxRUY4O0xBVElOIENBUElUQUwgTEVUVEVSIFkgV0lUSCBUSUxERTtMdTswO0w7MDA1OSAwMzAzOzs7O047Ozs7MUVGOTsKKzFFRjk7TEFUSU4gU01BTEwgTEVUVEVSIFkgV0lUSCBUSUxERTtMbDswO0w7MDA3OSAwMzAzOzs7O047OzsxRUY4OzsxRUY4CisxRjAwO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJO0xsOzA7TDswM0IxIDAzMTM7Ozs7Tjs7OzFGMDg7OzFGMDgKKzFGMDE7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUE7TGw7MDtMOzAzQjEgMDMxNDs7OztOOzs7MUYwOTs7MUYwOQorMUYwMjtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgVkFSSUE7TGw7MDtMOzFGMDAgMDMwMDs7OztOOzs7MUYwQTs7MUYwQQorMUYwMztHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgVkFSSUE7TGw7MDtMOzFGMDEgMDMwMDs7OztOOzs7MUYwQjs7MUYwQgorMUYwNDtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgT1hJQTtMbDswO0w7MUYwMCAwMzAxOzs7O047OzsxRjBDOzsxRjBDCisxRjA1O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBPWElBO0xsOzA7TDsxRjAxIDAzMDE7Ozs7Tjs7OzFGMEQ7OzFGMEQKKzFGMDY7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjAwIDAzNDI7Ozs7Tjs7OzFGMEU7OzFGMEUKKzFGMDc7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjAxIDAzNDI7Ozs7Tjs7OzFGMEY7OzFGMEYKKzFGMDg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSTtMdTswO0w7MDM5MSAwMzEzOzs7O047Ozs7MUYwMDsKKzFGMDk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQTtMdTswO0w7MDM5MSAwMzE0Ozs7O047Ozs7MUYwMTsKKzFGMEE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgVkFSSUE7THU7MDtMOzFGMDggMDMwMDs7OztOOzs7OzFGMDI7CisxRjBCO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIFZBUklBO0x1OzA7TDsxRjA5IDAzMDA7Ozs7Tjs7OzsxRjAzOworMUYwQztHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBPWElBO0x1OzA7TDsxRjA4IDAzMDE7Ozs7Tjs7OzsxRjA0OworMUYwRDtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBPWElBO0x1OzA7TDsxRjA5IDAzMDE7Ozs7Tjs7OzsxRjA1OworMUYwRTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtMdTswO0w7MUYwOCAwMzQyOzs7O047Ozs7MUYwNjsKKzFGMEY7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGMDkgMDM0Mjs7OztOOzs7OzFGMDc7CisxRjEwO0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggUFNJTEk7TGw7MDtMOzAzQjUgMDMxMzs7OztOOzs7MUYxODs7MUYxOAorMUYxMTtHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIERBU0lBO0xsOzA7TDswM0I1IDAzMTQ7Ozs7Tjs7OzFGMTk7OzFGMTkKKzFGMTI7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBQU0lMSSBBTkQgVkFSSUE7TGw7MDtMOzFGMTAgMDMwMDs7OztOOzs7MUYxQTs7MUYxQQorMUYxMztHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIERBU0lBIEFORCBWQVJJQTtMbDswO0w7MUYxMSAwMzAwOzs7O047OzsxRjFCOzsxRjFCCisxRjE0O0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggUFNJTEkgQU5EIE9YSUE7TGw7MDtMOzFGMTAgMDMwMTs7OztOOzs7MUYxQzs7MUYxQworMUYxNTtHUkVFSyBTTUFMTCBMRVRURVIgRVBTSUxPTiBXSVRIIERBU0lBIEFORCBPWElBO0xsOzA7TDsxRjExIDAzMDE7Ozs7Tjs7OzFGMUQ7OzFGMUQKKzFGMTg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIFBTSUxJO0x1OzA7TDswMzk1IDAzMTM7Ozs7Tjs7OzsxRjEwOworMUYxOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFUFNJTE9OIFdJVEggREFTSUE7THU7MDtMOzAzOTUgMDMxNDs7OztOOzs7OzFGMTE7CisxRjFBO0dSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBQU0lMSSBBTkQgVkFSSUE7THU7MDtMOzFGMTggMDMwMDs7OztOOzs7OzFGMTI7CisxRjFCO0dSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBEQVNJQSBBTkQgVkFSSUE7THU7MDtMOzFGMTkgMDMwMDs7OztOOzs7OzFGMTM7CisxRjFDO0dSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBQU0lMSSBBTkQgT1hJQTtMdTswO0w7MUYxOCAwMzAxOzs7O047Ozs7MUYxNDsKKzFGMUQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIERBU0lBIEFORCBPWElBO0x1OzA7TDsxRjE5IDAzMDE7Ozs7Tjs7OzsxRjE1OworMUYyMDtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUFNJTEk7TGw7MDtMOzAzQjcgMDMxMzs7OztOOzs7MUYyODs7MUYyOAorMUYyMTtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUE7TGw7MDtMOzAzQjcgMDMxNDs7OztOOzs7MUYyOTs7MUYyOQorMUYyMjtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFZBUklBO0xsOzA7TDsxRjIwIDAzMDA7Ozs7Tjs7OzFGMkE7OzFGMkEKKzFGMjM7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBWQVJJQTtMbDswO0w7MUYyMSAwMzAwOzs7O047OzsxRjJCOzsxRjJCCisxRjI0O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgT1hJQTtMbDswO0w7MUYyMCAwMzAxOzs7O047OzsxRjJDOzsxRjJDCisxRjI1O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgT1hJQTtMbDswO0w7MUYyMSAwMzAxOzs7O047OzsxRjJEOzsxRjJECisxRjI2O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkk7TGw7MDtMOzFGMjAgMDM0Mjs7OztOOzs7MUYyRTs7MUYyRQorMUYyNztHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjIxIDAzNDI7Ozs7Tjs7OzFGMkY7OzFGMkYKKzFGMjg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEk7THU7MDtMOzAzOTcgMDMxMzs7OztOOzs7OzFGMjA7CisxRjI5O0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBO0x1OzA7TDswMzk3IDAzMTQ7Ozs7Tjs7OzsxRjIxOworMUYyQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgVkFSSUE7THU7MDtMOzFGMjggMDMwMDs7OztOOzs7OzFGMjI7CisxRjJCO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBWQVJJQTtMdTswO0w7MUYyOSAwMzAwOzs7O047Ozs7MUYyMzsKKzFGMkM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIE9YSUE7THU7MDtMOzFGMjggMDMwMTs7OztOOzs7OzFGMjQ7CisxRjJEO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBPWElBO0x1OzA7TDsxRjI5IDAzMDE7Ozs7Tjs7OzsxRjI1OworMUYyRTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGMjggMDM0Mjs7OztOOzs7OzFGMjY7CisxRjJGO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSTtMdTswO0w7MUYyOSAwMzQyOzs7O047Ozs7MUYyNzsKKzFGMzA7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBQU0lMSTtMbDswO0w7MDNCOSAwMzEzOzs7O047OzsxRjM4OzsxRjM4CisxRjMxO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggREFTSUE7TGw7MDtMOzAzQjkgMDMxNDs7OztOOzs7MUYzOTs7MUYzOQorMUYzMjtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJIEFORCBWQVJJQTtMbDswO0w7MUYzMCAwMzAwOzs7O047OzsxRjNBOzsxRjNBCisxRjMzO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggREFTSUEgQU5EIFZBUklBO0xsOzA7TDsxRjMxIDAzMDA7Ozs7Tjs7OzFGM0I7OzFGM0IKKzFGMzQ7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBQU0lMSSBBTkQgT1hJQTtMbDswO0w7MUYzMCAwMzAxOzs7O047OzsxRjNDOzsxRjNDCisxRjM1O0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggREFTSUEgQU5EIE9YSUE7TGw7MDtMOzFGMzEgMDMwMTs7OztOOzs7MUYzRDs7MUYzRAorMUYzNjtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtMbDswO0w7MUYzMCAwMzQyOzs7O047OzsxRjNFOzsxRjNFCisxRjM3O0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDsxRjMxIDAzNDI7Ozs7Tjs7OzFGM0Y7OzFGM0YKKzFGMzg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIFBTSUxJO0x1OzA7TDswMzk5IDAzMTM7Ozs7Tjs7OzsxRjMwOworMUYzOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggREFTSUE7THU7MDtMOzAzOTkgMDMxNDs7OztOOzs7OzFGMzE7CisxRjNBO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBQU0lMSSBBTkQgVkFSSUE7THU7MDtMOzFGMzggMDMwMDs7OztOOzs7OzFGMzI7CisxRjNCO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBEQVNJQSBBTkQgVkFSSUE7THU7MDtMOzFGMzkgMDMwMDs7OztOOzs7OzFGMzM7CisxRjNDO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBQU0lMSSBBTkQgT1hJQTtMdTswO0w7MUYzOCAwMzAxOzs7O047Ozs7MUYzNDsKKzFGM0Q7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIERBU0lBIEFORCBPWElBO0x1OzA7TDsxRjM5IDAzMDE7Ozs7Tjs7OzsxRjM1OworMUYzRTtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JO0x1OzA7TDsxRjM4IDAzNDI7Ozs7Tjs7OzsxRjM2OworMUYzRjtHUkVFSyBDQVBJVEFMIExFVFRFUiBJT1RBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JO0x1OzA7TDsxRjM5IDAzNDI7Ozs7Tjs7OzsxRjM3OworMUY0MDtHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIFBTSUxJO0xsOzA7TDswM0JGIDAzMTM7Ozs7Tjs7OzFGNDg7OzFGNDgKKzFGNDE7R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBEQVNJQTtMbDswO0w7MDNCRiAwMzE0Ozs7O047OzsxRjQ5OzsxRjQ5CisxRjQyO0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggUFNJTEkgQU5EIFZBUklBO0xsOzA7TDsxRjQwIDAzMDA7Ozs7Tjs7OzFGNEE7OzFGNEEKKzFGNDM7R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBEQVNJQSBBTkQgVkFSSUE7TGw7MDtMOzFGNDEgMDMwMDs7OztOOzs7MUY0Qjs7MUY0QgorMUY0NDtHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIFBTSUxJIEFORCBPWElBO0xsOzA7TDsxRjQwIDAzMDE7Ozs7Tjs7OzFGNEM7OzFGNEMKKzFGNDU7R1JFRUsgU01BTEwgTEVUVEVSIE9NSUNST04gV0lUSCBEQVNJQSBBTkQgT1hJQTtMbDswO0w7MUY0MSAwMzAxOzs7O047OzsxRjREOzsxRjRECisxRjQ4O0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBQU0lMSTtMdTswO0w7MDM5RiAwMzEzOzs7O047Ozs7MUY0MDsKKzFGNDk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIERBU0lBO0x1OzA7TDswMzlGIDAzMTQ7Ozs7Tjs7OzsxRjQxOworMUY0QTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggUFNJTEkgQU5EIFZBUklBO0x1OzA7TDsxRjQ4IDAzMDA7Ozs7Tjs7OzsxRjQyOworMUY0QjtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggREFTSUEgQU5EIFZBUklBO0x1OzA7TDsxRjQ5IDAzMDA7Ozs7Tjs7OzsxRjQzOworMUY0QztHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggUFNJTEkgQU5EIE9YSUE7THU7MDtMOzFGNDggMDMwMTs7OztOOzs7OzFGNDQ7CisxRjREO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NSUNST04gV0lUSCBEQVNJQSBBTkQgT1hJQTtMdTswO0w7MUY0OSAwMzAxOzs7O047Ozs7MUY0NTsKKzFGNTA7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBQU0lMSTtMbDswO0w7MDNDNSAwMzEzOzs7O047Ozs7OworMUY1MTtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERBU0lBO0xsOzA7TDswM0M1IDAzMTQ7Ozs7Tjs7OzFGNTk7OzFGNTkKKzFGNTI7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBQU0lMSSBBTkQgVkFSSUE7TGw7MDtMOzFGNTAgMDMwMDs7OztOOzs7OzsKKzFGNTM7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBEQVNJQSBBTkQgVkFSSUE7TGw7MDtMOzFGNTEgMDMwMDs7OztOOzs7MUY1Qjs7MUY1QgorMUY1NDtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBTSUxJIEFORCBPWElBO0xsOzA7TDsxRjUwIDAzMDE7Ozs7Tjs7Ozs7CisxRjU1O0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIE9YSUE7TGw7MDtMOzFGNTEgMDMwMTs7OztOOzs7MUY1RDs7MUY1RAorMUY1NjtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtMbDswO0w7MUY1MCAwMzQyOzs7O047Ozs7OworMUY1NztHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSTtMbDswO0w7MUY1MSAwMzQyOzs7O047OzsxRjVGOzsxRjVGCisxRjU5O0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBEQVNJQTtMdTswO0w7MDNBNSAwMzE0Ozs7O047Ozs7MUY1MTsKKzFGNUI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIERBU0lBIEFORCBWQVJJQTtMdTswO0w7MUY1OSAwMzAwOzs7O047Ozs7MUY1MzsKKzFGNUQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgVVBTSUxPTiBXSVRIIERBU0lBIEFORCBPWElBO0x1OzA7TDsxRjU5IDAzMDE7Ozs7Tjs7OzsxRjU1OworMUY1RjtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JO0x1OzA7TDsxRjU5IDAzNDI7Ozs7Tjs7OzsxRjU3OworMUY2MDtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSTtMbDswO0w7MDNDOSAwMzEzOzs7O047OzsxRjY4OzsxRjY4CisxRjYxO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBO0xsOzA7TDswM0M5IDAzMTQ7Ozs7Tjs7OzFGNjk7OzFGNjkKKzFGNjI7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFZBUklBO0xsOzA7TDsxRjYwIDAzMDA7Ozs7Tjs7OzFGNkE7OzFGNkEKKzFGNjM7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFZBUklBO0xsOzA7TDsxRjYxIDAzMDA7Ozs7Tjs7OzFGNkI7OzFGNkIKKzFGNjQ7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIE9YSUE7TGw7MDtMOzFGNjAgMDMwMTs7OztOOzs7MUY2Qzs7MUY2QworMUY2NTtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgT1hJQTtMbDswO0w7MUY2MSAwMzAxOzs7O047OzsxRjZEOzsxRjZECisxRjY2O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSTtMbDswO0w7MUY2MCAwMzQyOzs7O047OzsxRjZFOzsxRjZFCisxRjY3O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSTtMbDswO0w7MUY2MSAwMzQyOzs7O047OzsxRjZGOzsxRjZGCisxRjY4O0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEk7THU7MDtMOzAzQTkgMDMxMzs7OztOOzs7OzFGNjA7CisxRjY5O0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUE7THU7MDtMOzAzQTkgMDMxNDs7OztOOzs7OzFGNjE7CisxRjZBO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFZBUklBO0x1OzA7TDsxRjY4IDAzMDA7Ozs7Tjs7OzsxRjYyOworMUY2QjtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBWQVJJQTtMdTswO0w7MUY2OSAwMzAwOzs7O047Ozs7MUY2MzsKKzFGNkM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgT1hJQTtMdTswO0w7MUY2OCAwMzAxOzs7O047Ozs7MUY2NDsKKzFGNkQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgT1hJQTtMdTswO0w7MUY2OSAwMzAxOzs7O047Ozs7MUY2NTsKKzFGNkU7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkk7THU7MDtMOzFGNjggMDM0Mjs7OztOOzs7OzFGNjY7CisxRjZGO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JO0x1OzA7TDsxRjY5IDAzNDI7Ozs7Tjs7OzsxRjY3OworMUY3MDtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBWQVJJQTtMbDswO0w7MDNCMSAwMzAwOzs7O047OzsxRkJBOzsxRkJBCisxRjcxO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIE9YSUE7TGw7MDtMOzAzQUM7Ozs7Tjs7OzFGQkI7OzFGQkIKKzFGNzI7R1JFRUsgU01BTEwgTEVUVEVSIEVQU0lMT04gV0lUSCBWQVJJQTtMbDswO0w7MDNCNSAwMzAwOzs7O047OzsxRkM4OzsxRkM4CisxRjczO0dSRUVLIFNNQUxMIExFVFRFUiBFUFNJTE9OIFdJVEggT1hJQTtMbDswO0w7MDNBRDs7OztOOzs7MUZDOTs7MUZDOQorMUY3NDtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggVkFSSUE7TGw7MDtMOzAzQjcgMDMwMDs7OztOOzs7MUZDQTs7MUZDQQorMUY3NTtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggT1hJQTtMbDswO0w7MDNBRTs7OztOOzs7MUZDQjs7MUZDQgorMUY3NjtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIFZBUklBO0xsOzA7TDswM0I5IDAzMDA7Ozs7Tjs7OzFGREE7OzFGREEKKzFGNzc7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBPWElBO0xsOzA7TDswM0FGOzs7O047OzsxRkRCOzsxRkRCCisxRjc4O0dSRUVLIFNNQUxMIExFVFRFUiBPTUlDUk9OIFdJVEggVkFSSUE7TGw7MDtMOzAzQkYgMDMwMDs7OztOOzs7MUZGODs7MUZGOAorMUY3OTtHUkVFSyBTTUFMTCBMRVRURVIgT01JQ1JPTiBXSVRIIE9YSUE7TGw7MDtMOzAzQ0M7Ozs7Tjs7OzFGRjk7OzFGRjkKKzFGN0E7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBWQVJJQTtMbDswO0w7MDNDNSAwMzAwOzs7O047OzsxRkVBOzsxRkVBCisxRjdCO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggT1hJQTtMbDswO0w7MDNDRDs7OztOOzs7MUZFQjs7MUZFQgorMUY3QztHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBWQVJJQTtMbDswO0w7MDNDOSAwMzAwOzs7O047OzsxRkZBOzsxRkZBCisxRjdEO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIE9YSUE7TGw7MDtMOzAzQ0U7Ozs7Tjs7OzFGRkI7OzFGRkIKKzFGODA7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMDAgMDM0NTs7OztOOzs7MUY4ODs7MUY4OAorMUY4MTtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYwMSAwMzQ1Ozs7O047OzsxRjg5OzsxRjg5CisxRjgyO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYwMiAwMzQ1Ozs7O047OzsxRjhBOzsxRjhBCisxRjgzO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYwMyAwMzQ1Ozs7O047OzsxRjhCOzsxRjhCCisxRjg0O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjA0IDAzNDU7Ozs7Tjs7OzFGOEM7OzFGOEMKKzFGODU7R1JFRUsgU01BTEwgTEVUVEVSIEFMUEhBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMDUgMDM0NTs7OztOOzs7MUY4RDs7MUY4RAorMUY4NjtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMDYgMDM0NTs7OztOOzs7MUY4RTs7MUY4RQorMUY4NztHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMDcgMDM0NTs7OztOOzs7MUY4Rjs7MUY4RgorMUY4ODtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUYwOCAwMzQ1Ozs7O047Ozs7MUY4MDsKKzFGODk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGMDkgMDM0NTs7OztOOzs7OzFGODE7CisxRjhBO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUYwQSAwMzQ1Ozs7O047Ozs7MUY4MjsKKzFGOEI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgVkFSSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjBCIDAzNDU7Ozs7Tjs7OzsxRjgzOworMUY4QztHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUYwQyAwMzQ1Ozs7O047Ozs7MUY4NDsKKzFGOEQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGMEQgMDM0NTs7OztOOzs7OzFGODU7CisxRjhFO0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggUFNJTEkgQU5EIFBFUklTUE9NRU5JIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUYwRSAwMzQ1Ozs7O047Ozs7MUY4NjsKKzFGOEY7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjBGIDAzNDU7Ozs7Tjs7OzsxRjg3OworMUY5MDtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMjAgMDM0NTs7OztOOzs7MUY5ODs7MUY5OAorMUY5MTtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMjEgMDM0NTs7OztOOzs7MUY5OTs7MUY5OQorMUY5MjtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjIyIDAzNDU7Ozs7Tjs7OzFGOUE7OzFGOUEKKzFGOTM7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYyMyAwMzQ1Ozs7O047OzsxRjlCOzsxRjlCCisxRjk0O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYyNCAwMzQ1Ozs7O047OzsxRjlDOzsxRjlDCisxRjk1O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUYyNSAwMzQ1Ozs7O047OzsxRjlEOzsxRjlECisxRjk2O0dSRUVLIFNNQUxMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGMjYgMDM0NTs7OztOOzs7MUY5RTs7MUY5RQorMUY5NztHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjI3IDAzNDU7Ozs7Tjs7OzFGOUY7OzFGOUYKKzFGOTg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggUFNJTEkgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjI4IDAzNDU7Ozs7Tjs7OzsxRjkwOworMUY5OTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGMjkgMDM0NTs7OztOOzs7OzFGOTE7CisxRjlBO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGMkEgMDM0NTs7OztOOzs7OzFGOTI7CisxRjlCO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGMkIgMDM0NTs7OztOOzs7OzFGOTM7CisxRjlDO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBTSUxJIEFORCBPWElBIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUYyQyAwMzQ1Ozs7O047Ozs7MUY5NDsKKzFGOUQ7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggREFTSUEgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjJEIDAzNDU7Ozs7Tjs7OzsxRjk1OworMUY5RTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjJFIDAzNDU7Ozs7Tjs7OzsxRjk2OworMUY5RjtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBEQVNJQSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjJGIDAzNDU7Ozs7Tjs7OzsxRjk3OworMUZBMDtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY2MCAwMzQ1Ozs7O047OzsxRkE4OzsxRkE4CisxRkExO0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjYxIDAzNDU7Ozs7Tjs7OzFGQTk7OzFGQTkKKzFGQTI7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjYyIDAzNDU7Ozs7Tjs7OzFGQUE7OzFGQUEKKzFGQTM7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggREFTSUEgQU5EIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjYzIDAzNDU7Ozs7Tjs7OzFGQUI7OzFGQUIKKzFGQTQ7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNjQgMDM0NTs7OztOOzs7MUZBQzs7MUZBQworMUZBNTtHUkVFSyBTTUFMTCBMRVRURVIgT01FR0EgV0lUSCBEQVNJQSBBTkQgT1hJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY2NSAwMzQ1Ozs7O047OzsxRkFEOzsxRkFECisxRkE2O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIFBTSUxJIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY2NiAwMzQ1Ozs7O047OzsxRkFFOzsxRkFFCisxRkE3O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MUY2NyAwMzQ1Ozs7O047OzsxRkFGOzsxRkFGCisxRkE4O0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjY4IDAzNDU7Ozs7Tjs7OzsxRkEwOworMUZBOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUY2OSAwMzQ1Ozs7O047Ozs7MUZBMTsKKzFGQUE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgVkFSSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjZBIDAzNDU7Ozs7Tjs7OzsxRkEyOworMUZBQjtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBWQVJJQSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGNkIgMDM0NTs7OztOOzs7OzFGQTM7CisxRkFDO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggUFNJTEkgQU5EIE9YSUEgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjZDIDAzNDU7Ozs7Tjs7OzsxRkE0OworMUZBRDtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBPWElBIEFORCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MUY2RCAwMzQ1Ozs7O047Ozs7MUZBNTsKKzFGQUU7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01FR0EgV0lUSCBQU0lMSSBBTkQgUEVSSVNQT01FTkkgQU5EIFBST1NHRUdSQU1NRU5JO0x0OzA7TDsxRjZFIDAzNDU7Ozs7Tjs7OzsxRkE2OworMUZBRjtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUVHQSBXSVRIIERBU0lBIEFORCBQRVJJU1BPTUVOSSBBTkQgUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzFGNkYgMDM0NTs7OztOOzs7OzFGQTc7CisxRkIwO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFZSQUNIWTtMbDswO0w7MDNCMSAwMzA2Ozs7O047OzsxRkI4OzsxRkI4CisxRkIxO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIE1BQ1JPTjtMbDswO0w7MDNCMSAwMzA0Ozs7O047OzsxRkI5OzsxRkI5CisxRkIyO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFZBUklBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRjcwIDAzNDU7Ozs7Tjs7Ozs7CisxRkIzO0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzAzQjEgMDM0NTs7OztOOzs7MUZCQzs7MUZCQworMUZCNDtHUkVFSyBTTUFMTCBMRVRURVIgQUxQSEEgV0lUSCBPWElBIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDswM0FDIDAzNDU7Ozs7Tjs7Ozs7CisxRkI2O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBFUklTUE9NRU5JO0xsOzA7TDswM0IxIDAzNDI7Ozs7Tjs7Ozs7CisxRkI3O0dSRUVLIFNNQUxMIExFVFRFUiBBTFBIQSBXSVRIIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRkI2IDAzNDU7Ozs7Tjs7Ozs7CisxRkI4O0dSRUVLIENBUElUQUwgTEVUVEVSIEFMUEhBIFdJVEggVlJBQ0hZO0x1OzA7TDswMzkxIDAzMDY7Ozs7Tjs7OzsxRkIwOworMUZCOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBBTFBIQSBXSVRIIE1BQ1JPTjtMdTswO0w7MDM5MSAwMzA0Ozs7O047Ozs7MUZCMTsKKzFGQkE7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBWQVJJQTtMdTswO0w7MDM5MSAwMzAwOzs7O047Ozs7MUY3MDsKKzFGQkI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBPWElBO0x1OzA7TDswMzg2Ozs7O047Ozs7MUY3MTsKKzFGQkM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgQUxQSEEgV0lUSCBQUk9TR0VHUkFNTUVOSTtMdDswO0w7MDM5MSAwMzQ1Ozs7O047Ozs7MUZCMzsKKzFGQkQ7R1JFRUsgS09ST05JUztTazswO09OOzxjb21wYXQ+IDAwMjAgMDMxMzs7OztOOzs7OzsKKzFGQkU7R1JFRUsgUFJPU0dFR1JBTU1FTkk7TGw7MDtMOzAzQjk7Ozs7Tjs7OzAzOTk7OzAzOTkKKzFGQkY7R1JFRUsgUFNJTEk7U2s7MDtPTjs8Y29tcGF0PiAwMDIwIDAzMTM7Ozs7Tjs7Ozs7CisxRkMwO0dSRUVLIFBFUklTUE9NRU5JO1NrOzA7T047PGNvbXBhdD4gMDAyMCAwMzQyOzs7O047Ozs7OworMUZDMTtHUkVFSyBESUFMWVRJS0EgQU5EIFBFUklTUE9NRU5JO1NrOzA7T047MDBBOCAwMzQyOzs7O047Ozs7OworMUZDMjtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGNzQgMDM0NTs7OztOOzs7OzsKKzFGQzM7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzAzQjcgMDM0NTs7OztOOzs7MUZDQzs7MUZDQworMUZDNDtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggT1hJQSBBTkQgWVBPR0VHUkFNTUVOSTtMbDswO0w7MDNBRSAwMzQ1Ozs7O047Ozs7OworMUZDNjtHUkVFSyBTTUFMTCBMRVRURVIgRVRBIFdJVEggUEVSSVNQT01FTkk7TGw7MDtMOzAzQjcgMDM0Mjs7OztOOzs7OzsKKzFGQzc7R1JFRUsgU01BTEwgTEVUVEVSIEVUQSBXSVRIIFBFUklTUE9NRU5JIEFORCBZUE9HRUdSQU1NRU5JO0xsOzA7TDsxRkM2IDAzNDU7Ozs7Tjs7Ozs7CisxRkM4O0dSRUVLIENBUElUQUwgTEVUVEVSIEVQU0lMT04gV0lUSCBWQVJJQTtMdTswO0w7MDM5NSAwMzAwOzs7O047Ozs7MUY3MjsKKzFGQzk7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVBTSUxPTiBXSVRIIE9YSUE7THU7MDtMOzAzODg7Ozs7Tjs7OzsxRjczOworMUZDQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBFVEEgV0lUSCBWQVJJQTtMdTswO0w7MDM5NyAwMzAwOzs7O047Ozs7MUY3NDsKKzFGQ0I7R1JFRUsgQ0FQSVRBTCBMRVRURVIgRVRBIFdJVEggT1hJQTtMdTswO0w7MDM4OTs7OztOOzs7OzFGNzU7CisxRkNDO0dSRUVLIENBUElUQUwgTEVUVEVSIEVUQSBXSVRIIFBST1NHRUdSQU1NRU5JO0x0OzA7TDswMzk3IDAzNDU7Ozs7Tjs7OzsxRkMzOworMUZDRDtHUkVFSyBQU0lMSSBBTkQgVkFSSUE7U2s7MDtPTjsxRkJGIDAzMDA7Ozs7Tjs7Ozs7CisxRkNFO0dSRUVLIFBTSUxJIEFORCBPWElBO1NrOzA7T047MUZCRiAwMzAxOzs7O047Ozs7OworMUZDRjtHUkVFSyBQU0lMSSBBTkQgUEVSSVNQT01FTkk7U2s7MDtPTjsxRkJGIDAzNDI7Ozs7Tjs7Ozs7CisxRkQwO0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggVlJBQ0hZO0xsOzA7TDswM0I5IDAzMDY7Ozs7Tjs7OzFGRDg7OzFGRDgKKzFGRDE7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBNQUNST047TGw7MDtMOzAzQjkgMDMwNDs7OztOOzs7MUZEOTs7MUZEOQorMUZEMjtHUkVFSyBTTUFMTCBMRVRURVIgSU9UQSBXSVRIIERJQUxZVElLQSBBTkQgVkFSSUE7TGw7MDtMOzAzQ0EgMDMwMDs7OztOOzs7OzsKKzFGRDM7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EgQU5EIE9YSUE7TGw7MDtMOzAzOTA7Ozs7Tjs7Ozs7CisxRkQ2O0dSRUVLIFNNQUxMIExFVFRFUiBJT1RBIFdJVEggUEVSSVNQT01FTkk7TGw7MDtMOzAzQjkgMDM0Mjs7OztOOzs7OzsKKzFGRDc7R1JFRUsgU01BTEwgTEVUVEVSIElPVEEgV0lUSCBESUFMWVRJS0EgQU5EIFBFUklTUE9NRU5JO0xsOzA7TDswM0NBIDAzNDI7Ozs7Tjs7Ozs7CisxRkQ4O0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBWUkFDSFk7THU7MDtMOzAzOTkgMDMwNjs7OztOOzs7OzFGRDA7CisxRkQ5O0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBNQUNST047THU7MDtMOzAzOTkgMDMwNDs7OztOOzs7OzFGRDE7CisxRkRBO0dSRUVLIENBUElUQUwgTEVUVEVSIElPVEEgV0lUSCBWQVJJQTtMdTswO0w7MDM5OSAwMzAwOzs7O047Ozs7MUY3NjsKKzFGREI7R1JFRUsgQ0FQSVRBTCBMRVRURVIgSU9UQSBXSVRIIE9YSUE7THU7MDtMOzAzOEE7Ozs7Tjs7OzsxRjc3OworMUZERDtHUkVFSyBEQVNJQSBBTkQgVkFSSUE7U2s7MDtPTjsxRkZFIDAzMDA7Ozs7Tjs7Ozs7CisxRkRFO0dSRUVLIERBU0lBIEFORCBPWElBO1NrOzA7T047MUZGRSAwMzAxOzs7O047Ozs7OworMUZERjtHUkVFSyBEQVNJQSBBTkQgUEVSSVNQT01FTkk7U2s7MDtPTjsxRkZFIDAzNDI7Ozs7Tjs7Ozs7CisxRkUwO0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggVlJBQ0hZO0xsOzA7TDswM0M1IDAzMDY7Ozs7Tjs7OzFGRTg7OzFGRTgKKzFGRTE7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBNQUNST047TGw7MDtMOzAzQzUgMDMwNDs7OztOOzs7MUZFOTs7MUZFOQorMUZFMjtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIERJQUxZVElLQSBBTkQgVkFSSUE7TGw7MDtMOzAzQ0IgMDMwMDs7OztOOzs7OzsKKzFGRTM7R1JFRUsgU01BTEwgTEVUVEVSIFVQU0lMT04gV0lUSCBESUFMWVRJS0EgQU5EIE9YSUE7TGw7MDtMOzAzQjA7Ozs7Tjs7Ozs7CisxRkU0O0dSRUVLIFNNQUxMIExFVFRFUiBSSE8gV0lUSCBQU0lMSTtMbDswO0w7MDNDMSAwMzEzOzs7O047Ozs7OworMUZFNTtHUkVFSyBTTUFMTCBMRVRURVIgUkhPIFdJVEggREFTSUE7TGw7MDtMOzAzQzEgMDMxNDs7OztOOzs7MUZFQzs7MUZFQworMUZFNjtHUkVFSyBTTUFMTCBMRVRURVIgVVBTSUxPTiBXSVRIIFBFUklTUE9NRU5JO0xsOzA7TDswM0M1IDAzNDI7Ozs7Tjs7Ozs7CisxRkU3O0dSRUVLIFNNQUxMIExFVFRFUiBVUFNJTE9OIFdJVEggRElBTFlUSUtBIEFORCBQRVJJU1BPTUVOSTtMbDswO0w7MDNDQiAwMzQyOzs7O047Ozs7OworMUZFODtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggVlJBQ0hZO0x1OzA7TDswM0E1IDAzMDY7Ozs7Tjs7OzsxRkUwOworMUZFOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggTUFDUk9OO0x1OzA7TDswM0E1IDAzMDQ7Ozs7Tjs7OzsxRkUxOworMUZFQTtHUkVFSyBDQVBJVEFMIExFVFRFUiBVUFNJTE9OIFdJVEggVkFSSUE7THU7MDtMOzAzQTUgMDMwMDs7OztOOzs7OzFGN0E7CisxRkVCO0dSRUVLIENBUElUQUwgTEVUVEVSIFVQU0lMT04gV0lUSCBPWElBO0x1OzA7TDswMzhFOzs7O047Ozs7MUY3QjsKKzFGRUM7R1JFRUsgQ0FQSVRBTCBMRVRURVIgUkhPIFdJVEggREFTSUE7THU7MDtMOzAzQTEgMDMxNDs7OztOOzs7OzFGRTU7CisxRkVEO0dSRUVLIERJQUxZVElLQSBBTkQgVkFSSUE7U2s7MDtPTjswMEE4IDAzMDA7Ozs7Tjs7Ozs7CisxRkVFO0dSRUVLIERJQUxZVElLQSBBTkQgT1hJQTtTazswO09OOzAzODU7Ozs7Tjs7Ozs7CisxRkVGO0dSRUVLIFZBUklBO1NrOzA7T047MDA2MDs7OztOOzs7OzsKKzFGRjI7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggVkFSSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGN0MgMDM0NTs7OztOOzs7OzsKKzFGRjM7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggWVBPR0VHUkFNTUVOSTtMbDswO0w7MDNDOSAwMzQ1Ozs7O047OzsxRkZDOzsxRkZDCisxRkY0O0dSRUVLIFNNQUxMIExFVFRFUiBPTUVHQSBXSVRIIE9YSUEgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzAzQ0UgMDM0NTs7OztOOzs7OzsKKzFGRjY7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUEVSSVNQT01FTkk7TGw7MDtMOzAzQzkgMDM0Mjs7OztOOzs7OzsKKzFGRjc7R1JFRUsgU01BTEwgTEVUVEVSIE9NRUdBIFdJVEggUEVSSVNQT01FTkkgQU5EIFlQT0dFR1JBTU1FTkk7TGw7MDtMOzFGRjYgMDM0NTs7OztOOzs7OzsKKzFGRjg7R1JFRUsgQ0FQSVRBTCBMRVRURVIgT01JQ1JPTiBXSVRIIFZBUklBO0x1OzA7TDswMzlGIDAzMDA7Ozs7Tjs7OzsxRjc4OworMUZGOTtHUkVFSyBDQVBJVEFMIExFVFRFUiBPTUlDUk9OIFdJVEggT1hJQTtMdTswO0w7MDM4Qzs7OztOOzs7OzFGNzk7CisxRkZBO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggVkFSSUE7THU7MDtMOzAzQTkgMDMwMDs7OztOOzs7OzFGN0M7CisxRkZCO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggT1hJQTtMdTswO0w7MDM4Rjs7OztOOzs7OzFGN0Q7CisxRkZDO0dSRUVLIENBUElUQUwgTEVUVEVSIE9NRUdBIFdJVEggUFJPU0dFR1JBTU1FTkk7THQ7MDtMOzAzQTkgMDM0NTs7OztOOzs7OzFGRjM7CisxRkZEO0dSRUVLIE9YSUE7U2s7MDtPTjswMEI0Ozs7O047Ozs7OworMUZGRTtHUkVFSyBEQVNJQTtTazswO09OOzxjb21wYXQ+IDAwMjAgMDMxNDs7OztOOzs7OzsKKzIwMDA7RU4gUVVBRDtaczswO1dTOzIwMDI7Ozs7Tjs7Ozs7CisyMDAxO0VNIFFVQUQ7WnM7MDtXUzsyMDAzOzs7O047Ozs7OworMjAwMjtFTiBTUEFDRTtaczswO1dTOzxjb21wYXQ+IDAwMjA7Ozs7Tjs7Ozs7CisyMDAzO0VNIFNQQUNFO1pzOzA7V1M7PGNvbXBhdD4gMDAyMDs7OztOOzs7OzsKKzIwMDQ7VEhSRUUtUEVSLUVNIFNQQUNFO1pzOzA7V1M7PGNvbXBhdD4gMDAyMDs7OztOOzs7OzsKKzIwMDU7Rk9VUi1QRVItRU0gU1BBQ0U7WnM7MDtXUzs8Y29tcGF0PiAwMDIwOzs7O047Ozs7OworMjAwNjtTSVgtUEVSLUVNIFNQQUNFO1pzOzA7V1M7PGNvbXBhdD4gMDAyMDs7OztOOzs7OzsKKzIwMDc7RklHVVJFIFNQQUNFO1pzOzA7V1M7PG5vQnJlYWs+IDAwMjA7Ozs7Tjs7Ozs7CisyMDA4O1BVTkNUVUFUSU9OIFNQQUNFO1pzOzA7V1M7PGNvbXBhdD4gMDAyMDs7OztOOzs7OzsKKzIwMDk7VEhJTiBTUEFDRTtaczswO1dTOzxjb21wYXQ+IDAwMjA7Ozs7Tjs7Ozs7CisyMDBBO0hBSVIgU1BBQ0U7WnM7MDtXUzs8Y29tcGF0PiAwMDIwOzs7O047Ozs7OworMjAwQjtaRVJPIFdJRFRIIFNQQUNFO1pzOzA7Qk47Ozs7O047Ozs7OworMjAwQztaRVJPIFdJRFRIIE5PTi1KT0lORVI7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CisyMDBEO1pFUk8gV0lEVEggSk9JTkVSO0NmOzA7Qk47Ozs7O047Ozs7OworMjAwRTtMRUZULVRPLVJJR0hUIE1BUks7Q2Y7MDtMOzs7OztOOzs7OzsKKzIwMEY7UklHSFQtVE8tTEVGVCBNQVJLO0NmOzA7Ujs7Ozs7Tjs7Ozs7CisyMDEwO0hZUEhFTjtQZDswO09OOzs7OztOOzs7OzsKKzIwMTE7Tk9OLUJSRUFLSU5HIEhZUEhFTjtQZDswO09OOzxub0JyZWFrPiAyMDEwOzs7O047Ozs7OworMjAxMjtGSUdVUkUgREFTSDtQZDswO09OOzs7OztOOzs7OzsKKzIwMTM7RU4gREFTSDtQZDswO09OOzs7OztOOzs7OzsKKzIwMTQ7RU0gREFTSDtQZDswO09OOzs7OztOOzs7OzsKKzIwMTU7SE9SSVpPTlRBTCBCQVI7UGQ7MDtPTjs7Ozs7TjtRVU9UQVRJT04gREFTSDs7OzsKKzIwMTY7RE9VQkxFIFZFUlRJQ0FMIExJTkU7UG87MDtPTjs7Ozs7TjtET1VCTEUgVkVSVElDQUwgQkFSOzs7OworMjAxNztET1VCTEUgTE9XIExJTkU7UG87MDtPTjs8Y29tcGF0PiAwMDIwIDAzMzM7Ozs7TjtTUEFDSU5HIERPVUJMRSBVTkRFUlNDT1JFOzs7OworMjAxODtMRUZUIFNJTkdMRSBRVU9UQVRJT04gTUFSSztQaTswO09OOzs7OztOO1NJTkdMRSBUVVJORUQgQ09NTUEgUVVPVEFUSU9OIE1BUks7Ozs7CisyMDE5O1JJR0hUIFNJTkdMRSBRVU9UQVRJT04gTUFSSztQZjswO09OOzs7OztOO1NJTkdMRSBDT01NQSBRVU9UQVRJT04gTUFSSzs7OzsKKzIwMUE7U0lOR0xFIExPVy05IFFVT1RBVElPTiBNQVJLO1BzOzA7T047Ozs7O047TE9XIFNJTkdMRSBDT01NQSBRVU9UQVRJT04gTUFSSzs7OzsKKzIwMUI7U0lOR0xFIEhJR0gtUkVWRVJTRUQtOSBRVU9UQVRJT04gTUFSSztQaTswO09OOzs7OztOO1NJTkdMRSBSRVZFUlNFRCBDT01NQSBRVU9UQVRJT04gTUFSSzs7OzsKKzIwMUM7TEVGVCBET1VCTEUgUVVPVEFUSU9OIE1BUks7UGk7MDtPTjs7Ozs7TjtET1VCTEUgVFVSTkVEIENPTU1BIFFVT1RBVElPTiBNQVJLOzs7OworMjAxRDtSSUdIVCBET1VCTEUgUVVPVEFUSU9OIE1BUks7UGY7MDtPTjs7Ozs7TjtET1VCTEUgQ09NTUEgUVVPVEFUSU9OIE1BUks7Ozs7CisyMDFFO0RPVUJMRSBMT1ctOSBRVU9UQVRJT04gTUFSSztQczswO09OOzs7OztOO0xPVyBET1VCTEUgQ09NTUEgUVVPVEFUSU9OIE1BUks7Ozs7CisyMDFGO0RPVUJMRSBISUdILVJFVkVSU0VELTkgUVVPVEFUSU9OIE1BUks7UGk7MDtPTjs7Ozs7TjtET1VCTEUgUkVWRVJTRUQgQ09NTUEgUVVPVEFUSU9OIE1BUks7Ozs7CisyMDIwO0RBR0dFUjtQbzswO09OOzs7OztOOzs7OzsKKzIwMjE7RE9VQkxFIERBR0dFUjtQbzswO09OOzs7OztOOzs7OzsKKzIwMjI7QlVMTEVUO1BvOzA7T047Ozs7O047Ozs7OworMjAyMztUUklBTkdVTEFSIEJVTExFVDtQbzswO09OOzs7OztOOzs7OzsKKzIwMjQ7T05FIERPVCBMRUFERVI7UG87MDtPTjs8Y29tcGF0PiAwMDJFOzs7O047Ozs7OworMjAyNTtUV08gRE9UIExFQURFUjtQbzswO09OOzxjb21wYXQ+IDAwMkUgMDAyRTs7OztOOzs7OzsKKzIwMjY7SE9SSVpPTlRBTCBFTExJUFNJUztQbzswO09OOzxjb21wYXQ+IDAwMkUgMDAyRSAwMDJFOzs7O047Ozs7OworMjAyNztIWVBIRU5BVElPTiBQT0lOVDtQbzswO09OOzs7OztOOzs7OzsKKzIwMjg7TElORSBTRVBBUkFUT1I7Wmw7MDtXUzs7Ozs7Tjs7Ozs7CisyMDI5O1BBUkFHUkFQSCBTRVBBUkFUT1I7WnA7MDtCOzs7OztOOzs7OzsKKzIwMkE7TEVGVC1UTy1SSUdIVCBFTUJFRERJTkc7Q2Y7MDtMUkU7Ozs7O047Ozs7OworMjAyQjtSSUdIVC1UTy1MRUZUIEVNQkVERElORztDZjswO1JMRTs7Ozs7Tjs7Ozs7CisyMDJDO1BPUCBESVJFQ1RJT05BTCBGT1JNQVRUSU5HO0NmOzA7UERGOzs7OztOOzs7OzsKKzIwMkQ7TEVGVC1UTy1SSUdIVCBPVkVSUklERTtDZjswO0xSTzs7Ozs7Tjs7Ozs7CisyMDJFO1JJR0hULVRPLUxFRlQgT1ZFUlJJREU7Q2Y7MDtSTE87Ozs7O047Ozs7OworMjAyRjtOQVJST1cgTk8tQlJFQUsgU1BBQ0U7WnM7MDtXUzs8bm9CcmVhaz4gMDAyMDs7OztOOzs7OzsKKzIwMzA7UEVSIE1JTExFIFNJR047UG87MDtFVDs7Ozs7Tjs7Ozs7CisyMDMxO1BFUiBURU4gVEhPVVNBTkQgU0lHTjtQbzswO0VUOzs7OztOOzs7OzsKKzIwMzI7UFJJTUU7UG87MDtFVDs7Ozs7Tjs7Ozs7CisyMDMzO0RPVUJMRSBQUklNRTtQbzswO0VUOzxjb21wYXQ+IDIwMzIgMjAzMjs7OztOOzs7OzsKKzIwMzQ7VFJJUExFIFBSSU1FO1BvOzA7RVQ7PGNvbXBhdD4gMjAzMiAyMDMyIDIwMzI7Ozs7Tjs7Ozs7CisyMDM1O1JFVkVSU0VEIFBSSU1FO1BvOzA7T047Ozs7O047Ozs7OworMjAzNjtSRVZFUlNFRCBET1VCTEUgUFJJTUU7UG87MDtPTjs8Y29tcGF0PiAyMDM1IDIwMzU7Ozs7Tjs7Ozs7CisyMDM3O1JFVkVSU0VEIFRSSVBMRSBQUklNRTtQbzswO09OOzxjb21wYXQ+IDIwMzUgMjAzNSAyMDM1Ozs7O047Ozs7OworMjAzODtDQVJFVDtQbzswO09OOzs7OztOOzs7OzsKKzIwMzk7U0lOR0xFIExFRlQtUE9JTlRJTkcgQU5HTEUgUVVPVEFUSU9OIE1BUks7UGk7MDtPTjs7Ozs7WTtMRUZUIFBPSU5USU5HIFNJTkdMRSBHVUlMTEVNRVQ7Ozs7CisyMDNBO1NJTkdMRSBSSUdIVC1QT0lOVElORyBBTkdMRSBRVU9UQVRJT04gTUFSSztQZjswO09OOzs7OztZO1JJR0hUIFBPSU5USU5HIFNJTkdMRSBHVUlMTEVNRVQ7Ozs7CisyMDNCO1JFRkVSRU5DRSBNQVJLO1BvOzA7T047Ozs7O047Ozs7OworMjAzQztET1VCTEUgRVhDTEFNQVRJT04gTUFSSztQbzswO09OOzxjb21wYXQ+IDAwMjEgMDAyMTs7OztOOzs7OzsKKzIwM0Q7SU5URVJST0JBTkc7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDNFO09WRVJMSU5FO1BvOzA7T047PGNvbXBhdD4gMDAyMCAwMzA1Ozs7O047U1BBQ0lORyBPVkVSU0NPUkU7Ozs7CisyMDNGO1VOREVSVElFO1BjOzA7T047Ozs7O047O0Vub3Rpa29uOzs7CisyMDQwO0NIQVJBQ1RFUiBUSUU7UGM7MDtPTjs7Ozs7Tjs7Ozs7CisyMDQxO0NBUkVUIElOU0VSVElPTiBQT0lOVDtQbzswO09OOzs7OztOOzs7OzsKKzIwNDI7QVNURVJJU007UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDQzO0hZUEhFTiBCVUxMRVQ7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDQ0O0ZSQUNUSU9OIFNMQVNIO1NtOzA7T047Ozs7O047Ozs7OworMjA0NTtMRUZUIFNRVUFSRSBCUkFDS0VUIFdJVEggUVVJTEw7UHM7MDtPTjs7Ozs7WTs7Ozs7CisyMDQ2O1JJR0hUIFNRVUFSRSBCUkFDS0VUIFdJVEggUVVJTEw7UGU7MDtPTjs7Ozs7WTs7Ozs7CisyMDQ4O1FVRVNUSU9OIEVYQ0xBTUFUSU9OIE1BUks7UG87MDtPTjs8Y29tcGF0PiAwMDNGIDAwMjE7Ozs7Tjs7Ozs7CisyMDQ5O0VYQ0xBTUFUSU9OIFFVRVNUSU9OIE1BUks7UG87MDtPTjs8Y29tcGF0PiAwMDIxIDAwM0Y7Ozs7Tjs7Ozs7CisyMDRBO1RJUk9OSUFOIFNJR04gRVQ7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDRCO1JFVkVSU0VEIFBJTENST1cgU0lHTjtQbzswO09OOzs7OztOOzs7OzsKKzIwNEM7QkxBQ0sgTEVGVFdBUkRTIEJVTExFVDtQbzswO09OOzs7OztOOzs7OzsKKzIwNEQ7QkxBQ0sgUklHSFRXQVJEUyBCVUxMRVQ7UG87MDtPTjs7Ozs7Tjs7Ozs7CisyMDZBO0lOSElCSVQgU1lNTUVUUklDIFNXQVBQSU5HO0NmOzA7Qk47Ozs7O047Ozs7OworMjA2QjtBQ1RJVkFURSBTWU1NRVRSSUMgU1dBUFBJTkc7Q2Y7MDtCTjs7Ozs7Tjs7Ozs7CisyMDZDO0lOSElCSVQgQVJBQklDIEZPUk0gU0hBUElORztDZjswO0JOOzs7OztOOzs7OzsKKzIwNkQ7QUNUSVZBVEUgQVJBQklDIEZPUk0gU0hBUElORztDZjswO0JOOzs7OztOOzs7OzsKKzIwNkU7TkFUSU9OQUwgRElHSVQgU0hBUEVTO0NmOzA7Qk47Ozs7O047Ozs7OworMjA2RjtOT01JTkFMIERJR0lUIFNIQVBFUztDZjswO0JOOzs7OztOOzs7OzsKKzIwNzA7U1VQRVJTQ1JJUFQgWkVSTztObzswO0VOOzxzdXBlcj4gMDAzMDswOzA7MDtOO1NVUEVSU0NSSVBUIERJR0lUIFpFUk87Ozs7CisyMDc0O1NVUEVSU0NSSVBUIEZPVVI7Tm87MDtFTjs8c3VwZXI+IDAwMzQ7NDs0OzQ7TjtTVVBFUlNDUklQVCBESUdJVCBGT1VSOzs7OworMjA3NTtTVVBFUlNDUklQVCBGSVZFO05vOzA7RU47PHN1cGVyPiAwMDM1OzU7NTs1O047U1VQRVJTQ1JJUFQgRElHSVQgRklWRTs7OzsKKzIwNzY7U1VQRVJTQ1JJUFQgU0lYO05vOzA7RU47PHN1cGVyPiAwMDM2OzY7Njs2O047U1VQRVJTQ1JJUFQgRElHSVQgU0lYOzs7OworMjA3NztTVVBFUlNDUklQVCBTRVZFTjtObzswO0VOOzxzdXBlcj4gMDAzNzs3Ozc7NztOO1NVUEVSU0NSSVBUIERJR0lUIFNFVkVOOzs7OworMjA3ODtTVVBFUlNDUklQVCBFSUdIVDtObzswO0VOOzxzdXBlcj4gMDAzODs4Ozg7ODtOO1NVUEVSU0NSSVBUIERJR0lUIEVJR0hUOzs7OworMjA3OTtTVVBFUlNDUklQVCBOSU5FO05vOzA7RU47PHN1cGVyPiAwMDM5Ozk7OTs5O047U1VQRVJTQ1JJUFQgRElHSVQgTklORTs7OzsKKzIwN0E7U1VQRVJTQ1JJUFQgUExVUyBTSUdOO1NtOzA7RVQ7PHN1cGVyPiAwMDJCOzs7O047Ozs7OworMjA3QjtTVVBFUlNDUklQVCBNSU5VUztTbTswO0VUOzxzdXBlcj4gMjIxMjs7OztOO1NVUEVSU0NSSVBUIEhZUEhFTi1NSU5VUzs7OzsKKzIwN0M7U1VQRVJTQ1JJUFQgRVFVQUxTIFNJR047U207MDtPTjs8c3VwZXI+IDAwM0Q7Ozs7Tjs7Ozs7CisyMDdEO1NVUEVSU0NSSVBUIExFRlQgUEFSRU5USEVTSVM7UHM7MDtPTjs8c3VwZXI+IDAwMjg7Ozs7WTtTVVBFUlNDUklQVCBPUEVOSU5HIFBBUkVOVEhFU0lTOzs7OworMjA3RTtTVVBFUlNDUklQVCBSSUdIVCBQQVJFTlRIRVNJUztQZTswO09OOzxzdXBlcj4gMDAyOTs7OztZO1NVUEVSU0NSSVBUIENMT1NJTkcgUEFSRU5USEVTSVM7Ozs7CisyMDdGO1NVUEVSU0NSSVBUIExBVElOIFNNQUxMIExFVFRFUiBOO0xsOzA7TDs8c3VwZXI+IDAwNkU7Ozs7Tjs7Ozs7CisyMDgwO1NVQlNDUklQVCBaRVJPO05vOzA7RU47PHN1Yj4gMDAzMDswOzA7MDtOO1NVQlNDUklQVCBESUdJVCBaRVJPOzs7OworMjA4MTtTVUJTQ1JJUFQgT05FO05vOzA7RU47PHN1Yj4gMDAzMTsxOzE7MTtOO1NVQlNDUklQVCBESUdJVCBPTkU7Ozs7CisyMDgyO1NVQlNDUklQVCBUV087Tm87MDtFTjs8c3ViPiAwMDMyOzI7MjsyO047U1VCU0NSSVBUIERJR0lUIFRXTzs7OzsKKzIwODM7U1VCU0NSSVBUIFRIUkVFO05vOzA7RU47PHN1Yj4gMDAzMzszOzM7MztOO1NVQlNDUklQVCBESUdJVCBUSFJFRTs7OzsKKzIwODQ7U1VCU0NSSVBUIEZPVVI7Tm87MDtFTjs8c3ViPiAwMDM0OzQ7NDs0O047U1VCU0NSSVBUIERJR0lUIEZPVVI7Ozs7CisyMDg1O1NVQlNDUklQVCBGSVZFO05vOzA7RU47PHN1Yj4gMDAzNTs1OzU7NTtOO1NVQlNDUklQVCBESUdJVCBGSVZFOzs7OworMjA4NjtTVUJTQ1JJUFQgU0lYO05vOzA7RU47PHN1Yj4gMDAzNjs2OzY7NjtOO1NVQlNDUklQVCBESUdJVCBTSVg7Ozs7CisyMDg3O1NVQlNDUklQVCBTRVZFTjtObzswO0VOOzxzdWI+IDAwMzc7Nzs3Ozc7TjtTVUJTQ1JJUFQgRElHSVQgU0VWRU47Ozs7CisyMDg4O1NVQlNDUklQVCBFSUdIVDtObzswO0VOOzxzdWI+IDAwMzg7ODs4Ozg7TjtTVUJTQ1JJUFQgRElHSVQgRUlHSFQ7Ozs7CisyMDg5O1NVQlNDUklQVCBOSU5FO05vOzA7RU47PHN1Yj4gMDAzOTs5Ozk7OTtOO1NVQlNDUklQVCBESUdJVCBOSU5FOzs7OworMjA4QTtTVUJTQ1JJUFQgUExVUyBTSUdOO1NtOzA7RVQ7PHN1Yj4gMDAyQjs7OztOOzs7OzsKKzIwOEI7U1VCU0NSSVBUIE1JTlVTO1NtOzA7RVQ7PHN1Yj4gMjIxMjs7OztOO1NVQlNDUklQVCBIWVBIRU4tTUlOVVM7Ozs7CisyMDhDO1NVQlNDUklQVCBFUVVBTFMgU0lHTjtTbTswO09OOzxzdWI+IDAwM0Q7Ozs7Tjs7Ozs7CisyMDhEO1NVQlNDUklQVCBMRUZUIFBBUkVOVEhFU0lTO1BzOzA7T047PHN1Yj4gMDAyODs7OztZO1NVQlNDUklQVCBPUEVOSU5HIFBBUkVOVEhFU0lTOzs7OworMjA4RTtTVUJTQ1JJUFQgUklHSFQgUEFSRU5USEVTSVM7UGU7MDtPTjs8c3ViPiAwMDI5Ozs7O1k7U1VCU0NSSVBUIENMT1NJTkcgUEFSRU5USEVTSVM7Ozs7CisyMEEwO0VVUk8tQ1VSUkVOQ1kgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQTE7Q09MT04gU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQTI7Q1JVWkVJUk8gU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQTM7RlJFTkNIIEZSQU5DIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEE0O0xJUkEgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQTU7TUlMTCBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBNjtOQUlSQSBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBNztQRVNFVEEgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQTg7UlVQRUUgU0lHTjtTYzswO0VUOzxjb21wYXQ+IDAwNTIgMDA3Mzs7OztOOzs7OzsKKzIwQTk7V09OIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEFBO05FVyBTSEVRRUwgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQUI7RE9ORyBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBQztFVVJPIFNJR047U2M7MDtFVDs7Ozs7Tjs7Ozs7CisyMEFEO0tJUCBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBBRTtUVUdSSUsgU0lHTjtTYzswO0VUOzs7OztOOzs7OzsKKzIwQUY7RFJBQ0hNQSBTSUdOO1NjOzA7RVQ7Ozs7O047Ozs7OworMjBEMDtDT01CSU5JTkcgTEVGVCBIQVJQT09OIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgTEVGVCBIQVJQT09OIEFCT1ZFOzs7OworMjBEMTtDT01CSU5JTkcgUklHSFQgSEFSUE9PTiBBQk9WRTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIFJJR0hUIEhBUlBPT04gQUJPVkU7Ozs7CisyMEQyO0NPTUJJTklORyBMT05HIFZFUlRJQ0FMIExJTkUgT1ZFUkxBWTtNbjsxO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBMT05HIFZFUlRJQ0FMIEJBUiBPVkVSTEFZOzs7OworMjBEMztDT01CSU5JTkcgU0hPUlQgVkVSVElDQUwgTElORSBPVkVSTEFZO01uOzE7TlNNOzs7OztOO05PTi1TUEFDSU5HIFNIT1JUIFZFUlRJQ0FMIEJBUiBPVkVSTEFZOzs7OworMjBENDtDT01CSU5JTkcgQU5USUNMT0NLV0lTRSBBUlJPVyBBQk9WRTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIEFOVElDTE9DS1dJU0UgQVJST1cgQUJPVkU7Ozs7CisyMEQ1O0NPTUJJTklORyBDTE9DS1dJU0UgQVJST1cgQUJPVkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBDTE9DS1dJU0UgQVJST1cgQUJPVkU7Ozs7CisyMEQ2O0NPTUJJTklORyBMRUZUIEFSUk9XIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgTEVGVCBBUlJPVyBBQk9WRTs7OzsKKzIwRDc7Q09NQklOSU5HIFJJR0hUIEFSUk9XIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgUklHSFQgQVJST1cgQUJPVkU7Ozs7CisyMEQ4O0NPTUJJTklORyBSSU5HIE9WRVJMQVk7TW47MTtOU007Ozs7O047Tk9OLVNQQUNJTkcgUklORyBPVkVSTEFZOzs7OworMjBEOTtDT01CSU5JTkcgQ0xPQ0tXSVNFIFJJTkcgT1ZFUkxBWTtNbjsxO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBDTE9DS1dJU0UgUklORyBPVkVSTEFZOzs7OworMjBEQTtDT01CSU5JTkcgQU5USUNMT0NLV0lTRSBSSU5HIE9WRVJMQVk7TW47MTtOU007Ozs7O047Tk9OLVNQQUNJTkcgQU5USUNMT0NLV0lTRSBSSU5HIE9WRVJMQVk7Ozs7CisyMERCO0NPTUJJTklORyBUSFJFRSBET1RTIEFCT1ZFO01uOzIzMDtOU007Ozs7O047Tk9OLVNQQUNJTkcgVEhSRUUgRE9UUyBBQk9WRTs7OzsKKzIwREM7Q09NQklOSU5HIEZPVVIgRE9UUyBBQk9WRTtNbjsyMzA7TlNNOzs7OztOO05PTi1TUEFDSU5HIEZPVVIgRE9UUyBBQk9WRTs7OzsKKzIwREQ7Q09NQklOSU5HIEVOQ0xPU0lORyBDSVJDTEU7TWU7MDtOU007Ozs7O047RU5DTE9TSU5HIENJUkNMRTs7OzsKKzIwREU7Q09NQklOSU5HIEVOQ0xPU0lORyBTUVVBUkU7TWU7MDtOU007Ozs7O047RU5DTE9TSU5HIFNRVUFSRTs7OzsKKzIwREY7Q09NQklOSU5HIEVOQ0xPU0lORyBESUFNT05EO01lOzA7TlNNOzs7OztOO0VOQ0xPU0lORyBESUFNT05EOzs7OworMjBFMDtDT01CSU5JTkcgRU5DTE9TSU5HIENJUkNMRSBCQUNLU0xBU0g7TWU7MDtOU007Ozs7O047RU5DTE9TSU5HIENJUkNMRSBTTEFTSDs7OzsKKzIwRTE7Q09NQklOSU5HIExFRlQgUklHSFQgQVJST1cgQUJPVkU7TW47MjMwO05TTTs7Ozs7TjtOT04tU1BBQ0lORyBMRUZUIFJJR0hUIEFSUk9XIEFCT1ZFOzs7OworMjBFMjtDT01CSU5JTkcgRU5DTE9TSU5HIFNDUkVFTjtNZTswO05TTTs7Ozs7Tjs7Ozs7CisyMEUzO0NPTUJJTklORyBFTkNMT1NJTkcgS0VZQ0FQO01lOzA7TlNNOzs7OztOOzs7OzsKKzIxMDA7QUNDT1VOVCBPRjtTbzswO09OOzxjb21wYXQ+IDAwNjEgMDAyRiAwMDYzOzs7O047Ozs7OworMjEwMTtBRERSRVNTRUQgVE8gVEhFIFNVQkpFQ1Q7U287MDtPTjs8Y29tcGF0PiAwMDYxIDAwMkYgMDA3Mzs7OztOOzs7OzsKKzIxMDI7RE9VQkxFLVNUUlVDSyBDQVBJVEFMIEM7THU7MDtMOzxmb250PiAwMDQzOzs7O047RE9VQkxFLVNUUlVDSyBDOzs7OworMjEwMztERUdSRUUgQ0VMU0lVUztTbzswO09OOzxjb21wYXQ+IDAwQjAgMDA0Mzs7OztOO0RFR1JFRVMgQ0VOVElHUkFERTs7OzsKKzIxMDQ7Q0VOVFJFIExJTkUgU1lNQk9MO1NvOzA7T047Ozs7O047QyBMIFNZTUJPTDs7OzsKKzIxMDU7Q0FSRSBPRjtTbzswO09OOzxjb21wYXQ+IDAwNjMgMDAyRiAwMDZGOzs7O047Ozs7OworMjEwNjtDQURBIFVOQTtTbzswO09OOzxjb21wYXQ+IDAwNjMgMDAyRiAwMDc1Ozs7O047Ozs7OworMjEwNztFVUxFUiBDT05TVEFOVDtMdTswO0w7PGNvbXBhdD4gMDE5MDs7OztOO0VVTEVSUzs7OzsKKzIxMDg7U0NSVVBMRTtTbzswO09OOzs7OztOOzs7OzsKKzIxMDk7REVHUkVFIEZBSFJFTkhFSVQ7U287MDtPTjs8Y29tcGF0PiAwMEIwIDAwNDY7Ozs7TjtERUdSRUVTIEZBSFJFTkhFSVQ7Ozs7CisyMTBBO1NDUklQVCBTTUFMTCBHO0xsOzA7TDs8Zm9udD4gMDA2Nzs7OztOOzs7OzsKKzIxMEI7U0NSSVBUIENBUElUQUwgSDtMdTswO0w7PGZvbnQ+IDAwNDg7Ozs7TjtTQ1JJUFQgSDs7OzsKKzIxMEM7QkxBQ0stTEVUVEVSIENBUElUQUwgSDtMdTswO0w7PGZvbnQ+IDAwNDg7Ozs7TjtCTEFDSy1MRVRURVIgSDs7OzsKKzIxMEQ7RE9VQkxFLVNUUlVDSyBDQVBJVEFMIEg7THU7MDtMOzxmb250PiAwMDQ4Ozs7O047RE9VQkxFLVNUUlVDSyBIOzs7OworMjEwRTtQTEFOQ0sgQ09OU1RBTlQ7TGw7MDtMOzxmb250PiAwMDY4Ozs7O047Ozs7OworMjEwRjtQTEFOQ0sgQ09OU1RBTlQgT1ZFUiBUV08gUEk7TGw7MDtMOzxmb250PiAwMTI3Ozs7O047UExBTkNLIENPTlNUQU5UIE9WRVIgMiBQSTs7OzsKKzIxMTA7U0NSSVBUIENBUElUQUwgSTtMdTswO0w7PGZvbnQ+IDAwNDk7Ozs7TjtTQ1JJUFQgSTs7OzsKKzIxMTE7QkxBQ0stTEVUVEVSIENBUElUQUwgSTtMdTswO0w7PGZvbnQ+IDAwNDk7Ozs7TjtCTEFDSy1MRVRURVIgSTs7OzsKKzIxMTI7U0NSSVBUIENBUElUQUwgTDtMdTswO0w7PGZvbnQ+IDAwNEM7Ozs7TjtTQ1JJUFQgTDs7OzsKKzIxMTM7U0NSSVBUIFNNQUxMIEw7TGw7MDtMOzxmb250PiAwMDZDOzs7O047Ozs7OworMjExNDtMIEIgQkFSIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIxMTU7RE9VQkxFLVNUUlVDSyBDQVBJVEFMIE47THU7MDtMOzxmb250PiAwMDRFOzs7O047RE9VQkxFLVNUUlVDSyBOOzs7OworMjExNjtOVU1FUk8gU0lHTjtTbzswO09OOzxjb21wYXQ+IDAwNEUgMDA2Rjs7OztOO05VTUVSTzs7OzsKKzIxMTc7U09VTkQgUkVDT1JESU5HIENPUFlSSUdIVDtTbzswO09OOzs7OztOOzs7OzsKKzIxMTg7U0NSSVBUIENBUElUQUwgUDtTbzswO09OOzs7OztOO1NDUklQVCBQOzs7OworMjExOTtET1VCTEUtU1RSVUNLIENBUElUQUwgUDtMdTswO0w7PGZvbnQ+IDAwNTA7Ozs7TjtET1VCTEUtU1RSVUNLIFA7Ozs7CisyMTFBO0RPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBRO0x1OzA7TDs8Zm9udD4gMDA1MTs7OztOO0RPVUJMRS1TVFJVQ0sgUTs7OzsKKzIxMUI7U0NSSVBUIENBUElUQUwgUjtMdTswO0w7PGZvbnQ+IDAwNTI7Ozs7TjtTQ1JJUFQgUjs7OzsKKzIxMUM7QkxBQ0stTEVUVEVSIENBUElUQUwgUjtMdTswO0w7PGZvbnQ+IDAwNTI7Ozs7TjtCTEFDSy1MRVRURVIgUjs7OzsKKzIxMUQ7RE9VQkxFLVNUUlVDSyBDQVBJVEFMIFI7THU7MDtMOzxmb250PiAwMDUyOzs7O047RE9VQkxFLVNUUlVDSyBSOzs7OworMjExRTtQUkVTQ1JJUFRJT04gVEFLRTtTbzswO09OOzs7OztOOzs7OzsKKzIxMUY7UkVTUE9OU0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTIwO1NFUlZJQ0UgTUFSSztTbzswO09OOzxzdXBlcj4gMDA1MyAwMDREOzs7O047Ozs7OworMjEyMTtURUxFUEhPTkUgU0lHTjtTbzswO09OOzxjb21wYXQ+IDAwNTQgMDA0NSAwMDRDOzs7O047VCBFIEwgU1lNQk9MOzs7OworMjEyMjtUUkFERSBNQVJLIFNJR047U287MDtPTjs8c3VwZXI+IDAwNTQgMDA0RDs7OztOO1RSQURFTUFSSzs7OzsKKzIxMjM7VkVSU0lDTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTI0O0RPVUJMRS1TVFJVQ0sgQ0FQSVRBTCBaO0x1OzA7TDs8Zm9udD4gMDA1QTs7OztOO0RPVUJMRS1TVFJVQ0sgWjs7OzsKKzIxMjU7T1VOQ0UgU0lHTjtTbzswO09OOzs7OztOO09VTkNFOzs7OworMjEyNjtPSE0gU0lHTjtMdTswO0w7MDNBOTs7OztOO09ITTs7OzAzQzk7CisyMTI3O0lOVkVSVEVEIE9ITSBTSUdOO1NvOzA7T047Ozs7O047TUhPOzs7OworMjEyODtCTEFDSy1MRVRURVIgQ0FQSVRBTCBaO0x1OzA7TDs8Zm9udD4gMDA1QTs7OztOO0JMQUNLLUxFVFRFUiBaOzs7OworMjEyOTtUVVJORUQgR1JFRUsgU01BTEwgTEVUVEVSIElPVEE7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMTJBO0tFTFZJTiBTSUdOO0x1OzA7TDswMDRCOzs7O047REVHUkVFUyBLRUxWSU47OzswMDZCOworMjEyQjtBTkdTVFJPTSBTSUdOO0x1OzA7TDswMEM1Ozs7O047QU5HU1RST00gVU5JVDs7OzAwRTU7CisyMTJDO1NDUklQVCBDQVBJVEFMIEI7THU7MDtMOzxmb250PiAwMDQyOzs7O047U0NSSVBUIEI7Ozs7CisyMTJEO0JMQUNLLUxFVFRFUiBDQVBJVEFMIEM7THU7MDtMOzxmb250PiAwMDQzOzs7O047QkxBQ0stTEVUVEVSIEM7Ozs7CisyMTJFO0VTVElNQVRFRCBTWU1CT0w7U287MDtFVDs7Ozs7Tjs7Ozs7CisyMTJGO1NDUklQVCBTTUFMTCBFO0xsOzA7TDs8Zm9udD4gMDA2NTs7OztOOzs7OzsKKzIxMzA7U0NSSVBUIENBUElUQUwgRTtMdTswO0w7PGZvbnQ+IDAwNDU7Ozs7TjtTQ1JJUFQgRTs7OzsKKzIxMzE7U0NSSVBUIENBUElUQUwgRjtMdTswO0w7PGZvbnQ+IDAwNDY7Ozs7TjtTQ1JJUFQgRjs7OzsKKzIxMzI7VFVSTkVEIENBUElUQUwgRjtTbzswO09OOzs7OztOO1RVUk5FRCBGOzs7OworMjEzMztTQ1JJUFQgQ0FQSVRBTCBNO0x1OzA7TDs8Zm9udD4gMDA0RDs7OztOO1NDUklQVCBNOzs7OworMjEzNDtTQ1JJUFQgU01BTEwgTztMbDswO0w7PGZvbnQ+IDAwNkY7Ozs7Tjs7Ozs7CisyMTM1O0FMRUYgU1lNQk9MO0xvOzA7TDs8Y29tcGF0PiAwNUQwOzs7O047RklSU1QgVFJBTlNGSU5JVEUgQ0FSRElOQUw7Ozs7CisyMTM2O0JFVCBTWU1CT0w7TG87MDtMOzxjb21wYXQ+IDA1RDE7Ozs7TjtTRUNPTkQgVFJBTlNGSU5JVEUgQ0FSRElOQUw7Ozs7CisyMTM3O0dJTUVMIFNZTUJPTDtMbzswO0w7PGNvbXBhdD4gMDVEMjs7OztOO1RISVJEIFRSQU5TRklOSVRFIENBUkRJTkFMOzs7OworMjEzODtEQUxFVCBTWU1CT0w7TG87MDtMOzxjb21wYXQ+IDA1RDM7Ozs7TjtGT1VSVEggVFJBTlNGSU5JVEUgQ0FSRElOQUw7Ozs7CisyMTM5O0lORk9STUFUSU9OIFNPVVJDRTtMbDswO0w7PGZvbnQ+IDAwNjk7Ozs7Tjs7Ozs7CisyMTNBO1JPVEFURUQgQ0FQSVRBTCBRO1NvOzA7T047Ozs7O047Ozs7OworMjE1MztWVUxHQVIgRlJBQ1RJT04gT05FIFRISVJEO05vOzA7T047PGZyYWN0aW9uPiAwMDMxIDIwNDQgMDAzMzs7OzEvMztOO0ZSQUNUSU9OIE9ORSBUSElSRDs7OzsKKzIxNTQ7VlVMR0FSIEZSQUNUSU9OIFRXTyBUSElSRFM7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzIgMjA0NCAwMDMzOzs7Mi8zO047RlJBQ1RJT04gVFdPIFRISVJEUzs7OzsKKzIxNTU7VlVMR0FSIEZSQUNUSU9OIE9ORSBGSUZUSDtObzswO09OOzxmcmFjdGlvbj4gMDAzMSAyMDQ0IDAwMzU7OzsxLzU7TjtGUkFDVElPTiBPTkUgRklGVEg7Ozs7CisyMTU2O1ZVTEdBUiBGUkFDVElPTiBUV08gRklGVEhTO05vOzA7T047PGZyYWN0aW9uPiAwMDMyIDIwNDQgMDAzNTs7OzIvNTtOO0ZSQUNUSU9OIFRXTyBGSUZUSFM7Ozs7CisyMTU3O1ZVTEdBUiBGUkFDVElPTiBUSFJFRSBGSUZUSFM7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzMgMjA0NCAwMDM1Ozs7My81O047RlJBQ1RJT04gVEhSRUUgRklGVEhTOzs7OworMjE1ODtWVUxHQVIgRlJBQ1RJT04gRk9VUiBGSUZUSFM7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzQgMjA0NCAwMDM1Ozs7NC81O047RlJBQ1RJT04gRk9VUiBGSUZUSFM7Ozs7CisyMTU5O1ZVTEdBUiBGUkFDVElPTiBPTkUgU0lYVEg7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzEgMjA0NCAwMDM2Ozs7MS82O047RlJBQ1RJT04gT05FIFNJWFRIOzs7OworMjE1QTtWVUxHQVIgRlJBQ1RJT04gRklWRSBTSVhUSFM7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzUgMjA0NCAwMDM2Ozs7NS82O047RlJBQ1RJT04gRklWRSBTSVhUSFM7Ozs7CisyMTVCO1ZVTEdBUiBGUkFDVElPTiBPTkUgRUlHSFRIO05vOzA7T047PGZyYWN0aW9uPiAwMDMxIDIwNDQgMDAzODs7OzEvODtOO0ZSQUNUSU9OIE9ORSBFSUdIVEg7Ozs7CisyMTVDO1ZVTEdBUiBGUkFDVElPTiBUSFJFRSBFSUdIVEhTO05vOzA7T047PGZyYWN0aW9uPiAwMDMzIDIwNDQgMDAzODs7OzMvODtOO0ZSQUNUSU9OIFRIUkVFIEVJR0hUSFM7Ozs7CisyMTVEO1ZVTEdBUiBGUkFDVElPTiBGSVZFIEVJR0hUSFM7Tm87MDtPTjs8ZnJhY3Rpb24+IDAwMzUgMjA0NCAwMDM4Ozs7NS84O047RlJBQ1RJT04gRklWRSBFSUdIVEhTOzs7OworMjE1RTtWVUxHQVIgRlJBQ1RJT04gU0VWRU4gRUlHSFRIUztObzswO09OOzxmcmFjdGlvbj4gMDAzNyAyMDQ0IDAwMzg7Ozs3Lzg7TjtGUkFDVElPTiBTRVZFTiBFSUdIVEhTOzs7OworMjE1RjtGUkFDVElPTiBOVU1FUkFUT1IgT05FO05vOzA7T047PGZyYWN0aW9uPiAwMDMxIDIwNDQ7OzsxO047Ozs7OworMjE2MDtST01BTiBOVU1FUkFMIE9ORTtObDswO0w7PGNvbXBhdD4gMDA0OTs7OzE7Tjs7OzsyMTcwOworMjE2MTtST01BTiBOVU1FUkFMIFRXTztObDswO0w7PGNvbXBhdD4gMDA0OSAwMDQ5Ozs7MjtOOzs7OzIxNzE7CisyMTYyO1JPTUFOIE5VTUVSQUwgVEhSRUU7Tmw7MDtMOzxjb21wYXQ+IDAwNDkgMDA0OSAwMDQ5Ozs7MztOOzs7OzIxNzI7CisyMTYzO1JPTUFOIE5VTUVSQUwgRk9VUjtObDswO0w7PGNvbXBhdD4gMDA0OSAwMDU2Ozs7NDtOOzs7OzIxNzM7CisyMTY0O1JPTUFOIE5VTUVSQUwgRklWRTtObDswO0w7PGNvbXBhdD4gMDA1Njs7OzU7Tjs7OzsyMTc0OworMjE2NTtST01BTiBOVU1FUkFMIFNJWDtObDswO0w7PGNvbXBhdD4gMDA1NiAwMDQ5Ozs7NjtOOzs7OzIxNzU7CisyMTY2O1JPTUFOIE5VTUVSQUwgU0VWRU47Tmw7MDtMOzxjb21wYXQ+IDAwNTYgMDA0OSAwMDQ5Ozs7NztOOzs7OzIxNzY7CisyMTY3O1JPTUFOIE5VTUVSQUwgRUlHSFQ7Tmw7MDtMOzxjb21wYXQ+IDAwNTYgMDA0OSAwMDQ5IDAwNDk7Ozs4O047Ozs7MjE3NzsKKzIxNjg7Uk9NQU4gTlVNRVJBTCBOSU5FO05sOzA7TDs8Y29tcGF0PiAwMDQ5IDAwNTg7Ozs5O047Ozs7MjE3ODsKKzIxNjk7Uk9NQU4gTlVNRVJBTCBURU47Tmw7MDtMOzxjb21wYXQ+IDAwNTg7OzsxMDtOOzs7OzIxNzk7CisyMTZBO1JPTUFOIE5VTUVSQUwgRUxFVkVOO05sOzA7TDs8Y29tcGF0PiAwMDU4IDAwNDk7OzsxMTtOOzs7OzIxN0E7CisyMTZCO1JPTUFOIE5VTUVSQUwgVFdFTFZFO05sOzA7TDs8Y29tcGF0PiAwMDU4IDAwNDkgMDA0OTs7OzEyO047Ozs7MjE3QjsKKzIxNkM7Uk9NQU4gTlVNRVJBTCBGSUZUWTtObDswO0w7PGNvbXBhdD4gMDA0Qzs7OzUwO047Ozs7MjE3QzsKKzIxNkQ7Uk9NQU4gTlVNRVJBTCBPTkUgSFVORFJFRDtObDswO0w7PGNvbXBhdD4gMDA0Mzs7OzEwMDtOOzs7OzIxN0Q7CisyMTZFO1JPTUFOIE5VTUVSQUwgRklWRSBIVU5EUkVEO05sOzA7TDs8Y29tcGF0PiAwMDQ0Ozs7NTAwO047Ozs7MjE3RTsKKzIxNkY7Uk9NQU4gTlVNRVJBTCBPTkUgVEhPVVNBTkQ7Tmw7MDtMOzxjb21wYXQ+IDAwNEQ7OzsxMDAwO047Ozs7MjE3RjsKKzIxNzA7U01BTEwgUk9NQU4gTlVNRVJBTCBPTkU7Tmw7MDtMOzxjb21wYXQ+IDAwNjk7OzsxO047OzsyMTYwOzsyMTYwCisyMTcxO1NNQUxMIFJPTUFOIE5VTUVSQUwgVFdPO05sOzA7TDs8Y29tcGF0PiAwMDY5IDAwNjk7OzsyO047OzsyMTYxOzsyMTYxCisyMTcyO1NNQUxMIFJPTUFOIE5VTUVSQUwgVEhSRUU7Tmw7MDtMOzxjb21wYXQ+IDAwNjkgMDA2OSAwMDY5Ozs7MztOOzs7MjE2Mjs7MjE2MgorMjE3MztTTUFMTCBST01BTiBOVU1FUkFMIEZPVVI7Tmw7MDtMOzxjb21wYXQ+IDAwNjkgMDA3Njs7OzQ7Tjs7OzIxNjM7OzIxNjMKKzIxNzQ7U01BTEwgUk9NQU4gTlVNRVJBTCBGSVZFO05sOzA7TDs8Y29tcGF0PiAwMDc2Ozs7NTtOOzs7MjE2NDs7MjE2NAorMjE3NTtTTUFMTCBST01BTiBOVU1FUkFMIFNJWDtObDswO0w7PGNvbXBhdD4gMDA3NiAwMDY5Ozs7NjtOOzs7MjE2NTs7MjE2NQorMjE3NjtTTUFMTCBST01BTiBOVU1FUkFMIFNFVkVOO05sOzA7TDs8Y29tcGF0PiAwMDc2IDAwNjkgMDA2OTs7Ozc7Tjs7OzIxNjY7OzIxNjYKKzIxNzc7U01BTEwgUk9NQU4gTlVNRVJBTCBFSUdIVDtObDswO0w7PGNvbXBhdD4gMDA3NiAwMDY5IDAwNjkgMDA2OTs7Ozg7Tjs7OzIxNjc7OzIxNjcKKzIxNzg7U01BTEwgUk9NQU4gTlVNRVJBTCBOSU5FO05sOzA7TDs8Y29tcGF0PiAwMDY5IDAwNzg7Ozs5O047OzsyMTY4OzsyMTY4CisyMTc5O1NNQUxMIFJPTUFOIE5VTUVSQUwgVEVOO05sOzA7TDs8Y29tcGF0PiAwMDc4Ozs7MTA7Tjs7OzIxNjk7OzIxNjkKKzIxN0E7U01BTEwgUk9NQU4gTlVNRVJBTCBFTEVWRU47Tmw7MDtMOzxjb21wYXQ+IDAwNzggMDA2OTs7OzExO047OzsyMTZBOzsyMTZBCisyMTdCO1NNQUxMIFJPTUFOIE5VTUVSQUwgVFdFTFZFO05sOzA7TDs8Y29tcGF0PiAwMDc4IDAwNjkgMDA2OTs7OzEyO047OzsyMTZCOzsyMTZCCisyMTdDO1NNQUxMIFJPTUFOIE5VTUVSQUwgRklGVFk7Tmw7MDtMOzxjb21wYXQ+IDAwNkM7Ozs1MDtOOzs7MjE2Qzs7MjE2QworMjE3RDtTTUFMTCBST01BTiBOVU1FUkFMIE9ORSBIVU5EUkVEO05sOzA7TDs8Y29tcGF0PiAwMDYzOzs7MTAwO047OzsyMTZEOzsyMTZECisyMTdFO1NNQUxMIFJPTUFOIE5VTUVSQUwgRklWRSBIVU5EUkVEO05sOzA7TDs8Y29tcGF0PiAwMDY0Ozs7NTAwO047OzsyMTZFOzsyMTZFCisyMTdGO1NNQUxMIFJPTUFOIE5VTUVSQUwgT05FIFRIT1VTQU5EO05sOzA7TDs8Y29tcGF0PiAwMDZEOzs7MTAwMDtOOzs7MjE2Rjs7MjE2RgorMjE4MDtST01BTiBOVU1FUkFMIE9ORSBUSE9VU0FORCBDIEQ7Tmw7MDtMOzs7OzEwMDA7Tjs7Ozs7CisyMTgxO1JPTUFOIE5VTUVSQUwgRklWRSBUSE9VU0FORDtObDswO0w7Ozs7NTAwMDtOOzs7OzsKKzIxODI7Uk9NQU4gTlVNRVJBTCBURU4gVEhPVVNBTkQ7Tmw7MDtMOzs7OzEwMDAwO047Ozs7OworMjE4MztST01BTiBOVU1FUkFMIFJFVkVSU0VEIE9ORSBIVU5EUkVEO05sOzA7TDs7Ozs7Tjs7Ozs7CisyMTkwO0xFRlRXQVJEUyBBUlJPVztTbTswO09OOzs7OztOO0xFRlQgQVJST1c7Ozs7CisyMTkxO1VQV0FSRFMgQVJST1c7U207MDtPTjs7Ozs7TjtVUCBBUlJPVzs7OzsKKzIxOTI7UklHSFRXQVJEUyBBUlJPVztTbTswO09OOzs7OztOO1JJR0hUIEFSUk9XOzs7OworMjE5MztET1dOV0FSRFMgQVJST1c7U207MDtPTjs7Ozs7TjtET1dOIEFSUk9XOzs7OworMjE5NDtMRUZUIFJJR0hUIEFSUk9XO1NtOzA7T047Ozs7O047Ozs7OworMjE5NTtVUCBET1dOIEFSUk9XO1NvOzA7T047Ozs7O047Ozs7OworMjE5NjtOT1JUSCBXRVNUIEFSUk9XO1NvOzA7T047Ozs7O047VVBQRVIgTEVGVCBBUlJPVzs7OzsKKzIxOTc7Tk9SVEggRUFTVCBBUlJPVztTbzswO09OOzs7OztOO1VQUEVSIFJJR0hUIEFSUk9XOzs7OworMjE5ODtTT1VUSCBFQVNUIEFSUk9XO1NvOzA7T047Ozs7O047TE9XRVIgUklHSFQgQVJST1c7Ozs7CisyMTk5O1NPVVRIIFdFU1QgQVJST1c7U287MDtPTjs7Ozs7TjtMT1dFUiBMRUZUIEFSUk9XOzs7OworMjE5QTtMRUZUV0FSRFMgQVJST1cgV0lUSCBTVFJPS0U7U207MDtPTjsyMTkwIDAzMzg7Ozs7TjtMRUZUIEFSUk9XIFdJVEggU1RST0tFOzs7OworMjE5QjtSSUdIVFdBUkRTIEFSUk9XIFdJVEggU1RST0tFO1NtOzA7T047MjE5MiAwMzM4Ozs7O047UklHSFQgQVJST1cgV0lUSCBTVFJPS0U7Ozs7CisyMTlDO0xFRlRXQVJEUyBXQVZFIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBXQVZFIEFSUk9XOzs7OworMjE5RDtSSUdIVFdBUkRTIFdBVkUgQVJST1c7U287MDtPTjs7Ozs7TjtSSUdIVCBXQVZFIEFSUk9XOzs7OworMjE5RTtMRUZUV0FSRFMgVFdPIEhFQURFRCBBUlJPVztTbzswO09OOzs7OztOO0xFRlQgVFdPIEhFQURFRCBBUlJPVzs7OzsKKzIxOUY7VVBXQVJEUyBUV08gSEVBREVEIEFSUk9XO1NvOzA7T047Ozs7O047VVAgVFdPIEhFQURFRCBBUlJPVzs7OzsKKzIxQTA7UklHSFRXQVJEUyBUV08gSEVBREVEIEFSUk9XO1NtOzA7T047Ozs7O047UklHSFQgVFdPIEhFQURFRCBBUlJPVzs7OzsKKzIxQTE7RE9XTldBUkRTIFRXTyBIRUFERUQgQVJST1c7U287MDtPTjs7Ozs7TjtET1dOIFRXTyBIRUFERUQgQVJST1c7Ozs7CisyMUEyO0xFRlRXQVJEUyBBUlJPVyBXSVRIIFRBSUw7U287MDtPTjs7Ozs7TjtMRUZUIEFSUk9XIFdJVEggVEFJTDs7OzsKKzIxQTM7UklHSFRXQVJEUyBBUlJPVyBXSVRIIFRBSUw7U207MDtPTjs7Ozs7TjtSSUdIVCBBUlJPVyBXSVRIIFRBSUw7Ozs7CisyMUE0O0xFRlRXQVJEUyBBUlJPVyBGUk9NIEJBUjtTbzswO09OOzs7OztOO0xFRlQgQVJST1cgRlJPTSBCQVI7Ozs7CisyMUE1O1VQV0FSRFMgQVJST1cgRlJPTSBCQVI7U287MDtPTjs7Ozs7TjtVUCBBUlJPVyBGUk9NIEJBUjs7OzsKKzIxQTY7UklHSFRXQVJEUyBBUlJPVyBGUk9NIEJBUjtTbTswO09OOzs7OztOO1JJR0hUIEFSUk9XIEZST00gQkFSOzs7OworMjFBNztET1dOV0FSRFMgQVJST1cgRlJPTSBCQVI7U287MDtPTjs7Ozs7TjtET1dOIEFSUk9XIEZST00gQkFSOzs7OworMjFBODtVUCBET1dOIEFSUk9XIFdJVEggQkFTRTtTbzswO09OOzs7OztOOzs7OzsKKzIxQTk7TEVGVFdBUkRTIEFSUk9XIFdJVEggSE9PSztTbzswO09OOzs7OztOO0xFRlQgQVJST1cgV0lUSCBIT09LOzs7OworMjFBQTtSSUdIVFdBUkRTIEFSUk9XIFdJVEggSE9PSztTbzswO09OOzs7OztOO1JJR0hUIEFSUk9XIFdJVEggSE9PSzs7OzsKKzIxQUI7TEVGVFdBUkRTIEFSUk9XIFdJVEggTE9PUDtTbzswO09OOzs7OztOO0xFRlQgQVJST1cgV0lUSCBMT09QOzs7OworMjFBQztSSUdIVFdBUkRTIEFSUk9XIFdJVEggTE9PUDtTbzswO09OOzs7OztOO1JJR0hUIEFSUk9XIFdJVEggTE9PUDs7OzsKKzIxQUQ7TEVGVCBSSUdIVCBXQVZFIEFSUk9XO1NvOzA7T047Ozs7O047Ozs7OworMjFBRTtMRUZUIFJJR0hUIEFSUk9XIFdJVEggU1RST0tFO1NtOzA7T047MjE5NCAwMzM4Ozs7O047Ozs7OworMjFBRjtET1dOV0FSRFMgWklHWkFHIEFSUk9XO1NvOzA7T047Ozs7O047RE9XTiBaSUdaQUcgQVJST1c7Ozs7CisyMUIwO1VQV0FSRFMgQVJST1cgV0lUSCBUSVAgTEVGVFdBUkRTO1NvOzA7T047Ozs7O047VVAgQVJST1cgV0lUSCBUSVAgTEVGVDs7OzsKKzIxQjE7VVBXQVJEUyBBUlJPVyBXSVRIIFRJUCBSSUdIVFdBUkRTO1NvOzA7T047Ozs7O047VVAgQVJST1cgV0lUSCBUSVAgUklHSFQ7Ozs7CisyMUIyO0RPV05XQVJEUyBBUlJPVyBXSVRIIFRJUCBMRUZUV0FSRFM7U287MDtPTjs7Ozs7TjtET1dOIEFSUk9XIFdJVEggVElQIExFRlQ7Ozs7CisyMUIzO0RPV05XQVJEUyBBUlJPVyBXSVRIIFRJUCBSSUdIVFdBUkRTO1NvOzA7T047Ozs7O047RE9XTiBBUlJPVyBXSVRIIFRJUCBSSUdIVDs7OzsKKzIxQjQ7UklHSFRXQVJEUyBBUlJPVyBXSVRIIENPUk5FUiBET1dOV0FSRFM7U287MDtPTjs7Ozs7TjtSSUdIVCBBUlJPVyBXSVRIIENPUk5FUiBET1dOOzs7OworMjFCNTtET1dOV0FSRFMgQVJST1cgV0lUSCBDT1JORVIgTEVGVFdBUkRTO1NvOzA7T047Ozs7O047RE9XTiBBUlJPVyBXSVRIIENPUk5FUiBMRUZUOzs7OworMjFCNjtBTlRJQ0xPQ0tXSVNFIFRPUCBTRU1JQ0lSQ0xFIEFSUk9XO1NvOzA7T047Ozs7O047Ozs7OworMjFCNztDTE9DS1dJU0UgVE9QIFNFTUlDSVJDTEUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUI4O05PUlRIIFdFU1QgQVJST1cgVE8gTE9ORyBCQVI7U287MDtPTjs7Ozs7TjtVUFBFUiBMRUZUIEFSUk9XIFRPIExPTkcgQkFSOzs7OworMjFCOTtMRUZUV0FSRFMgQVJST1cgVE8gQkFSIE9WRVIgUklHSFRXQVJEUyBBUlJPVyBUTyBCQVI7U287MDtPTjs7Ozs7TjtMRUZUIEFSUk9XIFRPIEJBUiBPVkVSIFJJR0hUIEFSUk9XIFRPIEJBUjs7OzsKKzIxQkE7QU5USUNMT0NLV0lTRSBPUEVOIENJUkNMRSBBUlJPVztTbzswO09OOzs7OztOOzs7OzsKKzIxQkI7Q0xPQ0tXSVNFIE9QRU4gQ0lSQ0xFIEFSUk9XO1NvOzA7T047Ozs7O047Ozs7OworMjFCQztMRUZUV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgVVBXQVJEUztTbzswO09OOzs7OztOO0xFRlQgSEFSUE9PTiBXSVRIIEJBUkIgVVA7Ozs7CisyMUJEO0xFRlRXQVJEUyBIQVJQT09OIFdJVEggQkFSQiBET1dOV0FSRFM7U287MDtPTjs7Ozs7TjtMRUZUIEhBUlBPT04gV0lUSCBCQVJCIERPV047Ozs7CisyMUJFO1VQV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgUklHSFRXQVJEUztTbzswO09OOzs7OztOO1VQIEhBUlBPT04gV0lUSCBCQVJCIFJJR0hUOzs7OworMjFCRjtVUFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIExFRlRXQVJEUztTbzswO09OOzs7OztOO1VQIEhBUlBPT04gV0lUSCBCQVJCIExFRlQ7Ozs7CisyMUMwO1JJR0hUV0FSRFMgSEFSUE9PTiBXSVRIIEJBUkIgVVBXQVJEUztTbzswO09OOzs7OztOO1JJR0hUIEhBUlBPT04gV0lUSCBCQVJCIFVQOzs7OworMjFDMTtSSUdIVFdBUkRTIEhBUlBPT04gV0lUSCBCQVJCIERPV05XQVJEUztTbzswO09OOzs7OztOO1JJR0hUIEhBUlBPT04gV0lUSCBCQVJCIERPV047Ozs7CisyMUMyO0RPV05XQVJEUyBIQVJQT09OIFdJVEggQkFSQiBSSUdIVFdBUkRTO1NvOzA7T047Ozs7O047RE9XTiBIQVJQT09OIFdJVEggQkFSQiBSSUdIVDs7OzsKKzIxQzM7RE9XTldBUkRTIEhBUlBPT04gV0lUSCBCQVJCIExFRlRXQVJEUztTbzswO09OOzs7OztOO0RPV04gSEFSUE9PTiBXSVRIIEJBUkIgTEVGVDs7OzsKKzIxQzQ7UklHSFRXQVJEUyBBUlJPVyBPVkVSIExFRlRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO1JJR0hUIEFSUk9XIE9WRVIgTEVGVCBBUlJPVzs7OzsKKzIxQzU7VVBXQVJEUyBBUlJPVyBMRUZUV0FSRFMgT0YgRE9XTldBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047VVAgQVJST1cgTEVGVCBPRiBET1dOIEFSUk9XOzs7OworMjFDNjtMRUZUV0FSRFMgQVJST1cgT1ZFUiBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVCBBUlJPVyBPVkVSIFJJR0hUIEFSUk9XOzs7OworMjFDNztMRUZUV0FSRFMgUEFJUkVEIEFSUk9XUztTbzswO09OOzs7OztOO0xFRlQgUEFJUkVEIEFSUk9XUzs7OzsKKzIxQzg7VVBXQVJEUyBQQUlSRUQgQVJST1dTO1NvOzA7T047Ozs7O047VVAgUEFJUkVEIEFSUk9XUzs7OzsKKzIxQzk7UklHSFRXQVJEUyBQQUlSRUQgQVJST1dTO1NvOzA7T047Ozs7O047UklHSFQgUEFJUkVEIEFSUk9XUzs7OzsKKzIxQ0E7RE9XTldBUkRTIFBBSVJFRCBBUlJPV1M7U287MDtPTjs7Ozs7TjtET1dOIFBBSVJFRCBBUlJPV1M7Ozs7CisyMUNCO0xFRlRXQVJEUyBIQVJQT09OIE9WRVIgUklHSFRXQVJEUyBIQVJQT09OO1NvOzA7T047Ozs7O047TEVGVCBIQVJQT09OIE9WRVIgUklHSFQgSEFSUE9PTjs7OzsKKzIxQ0M7UklHSFRXQVJEUyBIQVJQT09OIE9WRVIgTEVGVFdBUkRTIEhBUlBPT047U287MDtPTjs7Ozs7TjtSSUdIVCBIQVJQT09OIE9WRVIgTEVGVCBIQVJQT09OOzs7OworMjFDRDtMRUZUV0FSRFMgRE9VQkxFIEFSUk9XIFdJVEggU1RST0tFO1NvOzA7T047MjFEMCAwMzM4Ozs7O047TEVGVCBET1VCTEUgQVJST1cgV0lUSCBTVFJPS0U7Ozs7CisyMUNFO0xFRlQgUklHSFQgRE9VQkxFIEFSUk9XIFdJVEggU1RST0tFO1NtOzA7T047MjFENCAwMzM4Ozs7O047Ozs7OworMjFDRjtSSUdIVFdBUkRTIERPVUJMRSBBUlJPVyBXSVRIIFNUUk9LRTtTbTswO09OOzIxRDIgMDMzODs7OztOO1JJR0hUIERPVUJMRSBBUlJPVyBXSVRIIFNUUk9LRTs7OzsKKzIxRDA7TEVGVFdBUkRTIERPVUJMRSBBUlJPVztTbzswO09OOzs7OztOO0xFRlQgRE9VQkxFIEFSUk9XOzs7OworMjFEMTtVUFdBUkRTIERPVUJMRSBBUlJPVztTbzswO09OOzs7OztOO1VQIERPVUJMRSBBUlJPVzs7OzsKKzIxRDI7UklHSFRXQVJEUyBET1VCTEUgQVJST1c7U207MDtPTjs7Ozs7TjtSSUdIVCBET1VCTEUgQVJST1c7Ozs7CisyMUQzO0RPV05XQVJEUyBET1VCTEUgQVJST1c7U287MDtPTjs7Ozs7TjtET1dOIERPVUJMRSBBUlJPVzs7OzsKKzIxRDQ7TEVGVCBSSUdIVCBET1VCTEUgQVJST1c7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMUQ1O1VQIERPV04gRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047Ozs7OworMjFENjtOT1JUSCBXRVNUIERPVUJMRSBBUlJPVztTbzswO09OOzs7OztOO1VQUEVSIExFRlQgRE9VQkxFIEFSUk9XOzs7OworMjFENztOT1JUSCBFQVNUIERPVUJMRSBBUlJPVztTbzswO09OOzs7OztOO1VQUEVSIFJJR0hUIERPVUJMRSBBUlJPVzs7OzsKKzIxRDg7U09VVEggRUFTVCBET1VCTEUgQVJST1c7U287MDtPTjs7Ozs7TjtMT1dFUiBSSUdIVCBET1VCTEUgQVJST1c7Ozs7CisyMUQ5O1NPVVRIIFdFU1QgRE9VQkxFIEFSUk9XO1NvOzA7T047Ozs7O047TE9XRVIgTEVGVCBET1VCTEUgQVJST1c7Ozs7CisyMURBO0xFRlRXQVJEUyBUUklQTEUgQVJST1c7U287MDtPTjs7Ozs7TjtMRUZUIFRSSVBMRSBBUlJPVzs7OzsKKzIxREI7UklHSFRXQVJEUyBUUklQTEUgQVJST1c7U287MDtPTjs7Ozs7TjtSSUdIVCBUUklQTEUgQVJST1c7Ozs7CisyMURDO0xFRlRXQVJEUyBTUVVJR0dMRSBBUlJPVztTbzswO09OOzs7OztOO0xFRlQgU1FVSUdHTEUgQVJST1c7Ozs7CisyMUREO1JJR0hUV0FSRFMgU1FVSUdHTEUgQVJST1c7U287MDtPTjs7Ozs7TjtSSUdIVCBTUVVJR0dMRSBBUlJPVzs7OzsKKzIxREU7VVBXQVJEUyBBUlJPVyBXSVRIIERPVUJMRSBTVFJPS0U7U287MDtPTjs7Ozs7TjtVUCBBUlJPVyBXSVRIIERPVUJMRSBTVFJPS0U7Ozs7CisyMURGO0RPV05XQVJEUyBBUlJPVyBXSVRIIERPVUJMRSBTVFJPS0U7U287MDtPTjs7Ozs7TjtET1dOIEFSUk9XIFdJVEggRE9VQkxFIFNUUk9LRTs7OzsKKzIxRTA7TEVGVFdBUkRTIERBU0hFRCBBUlJPVztTbzswO09OOzs7OztOO0xFRlQgREFTSEVEIEFSUk9XOzs7OworMjFFMTtVUFdBUkRTIERBU0hFRCBBUlJPVztTbzswO09OOzs7OztOO1VQIERBU0hFRCBBUlJPVzs7OzsKKzIxRTI7UklHSFRXQVJEUyBEQVNIRUQgQVJST1c7U287MDtPTjs7Ozs7TjtSSUdIVCBEQVNIRUQgQVJST1c7Ozs7CisyMUUzO0RPV05XQVJEUyBEQVNIRUQgQVJST1c7U287MDtPTjs7Ozs7TjtET1dOIERBU0hFRCBBUlJPVzs7OzsKKzIxRTQ7TEVGVFdBUkRTIEFSUk9XIFRPIEJBUjtTbzswO09OOzs7OztOO0xFRlQgQVJST1cgVE8gQkFSOzs7OworMjFFNTtSSUdIVFdBUkRTIEFSUk9XIFRPIEJBUjtTbzswO09OOzs7OztOO1JJR0hUIEFSUk9XIFRPIEJBUjs7OzsKKzIxRTY7TEVGVFdBUkRTIFdISVRFIEFSUk9XO1NvOzA7T047Ozs7O047V0hJVEUgTEVGVCBBUlJPVzs7OzsKKzIxRTc7VVBXQVJEUyBXSElURSBBUlJPVztTbzswO09OOzs7OztOO1dISVRFIFVQIEFSUk9XOzs7OworMjFFODtSSUdIVFdBUkRTIFdISVRFIEFSUk9XO1NvOzA7T047Ozs7O047V0hJVEUgUklHSFQgQVJST1c7Ozs7CisyMUU5O0RPV05XQVJEUyBXSElURSBBUlJPVztTbzswO09OOzs7OztOO1dISVRFIERPV04gQVJST1c7Ozs7CisyMUVBO1VQV0FSRFMgV0hJVEUgQVJST1cgRlJPTSBCQVI7U287MDtPTjs7Ozs7TjtXSElURSBVUCBBUlJPVyBGUk9NIEJBUjs7OzsKKzIxRUI7VVBXQVJEUyBXSElURSBBUlJPVyBPTiBQRURFU1RBTDtTbzswO09OOzs7OztOOzs7OzsKKzIxRUM7VVBXQVJEUyBXSElURSBBUlJPVyBPTiBQRURFU1RBTCBXSVRIIEhPUklaT05UQUwgQkFSO1NvOzA7T047Ozs7O047Ozs7OworMjFFRDtVUFdBUkRTIFdISVRFIEFSUk9XIE9OIFBFREVTVEFMIFdJVEggVkVSVElDQUwgQkFSO1NvOzA7T047Ozs7O047Ozs7OworMjFFRTtVUFdBUkRTIFdISVRFIERPVUJMRSBBUlJPVztTbzswO09OOzs7OztOOzs7OzsKKzIxRUY7VVBXQVJEUyBXSElURSBET1VCTEUgQVJST1cgT04gUEVERVNUQUw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUYwO1JJR0hUV0FSRFMgV0hJVEUgQVJST1cgRlJPTSBXQUxMO1NvOzA7T047Ozs7O047Ozs7OworMjFGMTtOT1JUSCBXRVNUIEFSUk9XIFRPIENPUk5FUjtTbzswO09OOzs7OztOOzs7OzsKKzIxRjI7U09VVEggRUFTVCBBUlJPVyBUTyBDT1JORVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMUYzO1VQIERPV04gV0hJVEUgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMjAwO0ZPUiBBTEw7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjAxO0NPTVBMRU1FTlQ7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjAyO1BBUlRJQUwgRElGRkVSRU5USUFMO1NtOzA7T047Ozs7O1k7Ozs7OworMjIwMztUSEVSRSBFWElTVFM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjA0O1RIRVJFIERPRVMgTk9UIEVYSVNUO1NtOzA7T047MjIwMyAwMzM4Ozs7O1k7Ozs7OworMjIwNTtFTVBUWSBTRVQ7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjA2O0lOQ1JFTUVOVDtTbTswO09OOzs7OztOOzs7OzsKKzIyMDc7TkFCTEE7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjA4O0VMRU1FTlQgT0Y7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjA5O05PVCBBTiBFTEVNRU5UIE9GO1NtOzA7T047MjIwOCAwMzM4Ozs7O1k7Ozs7OworMjIwQTtTTUFMTCBFTEVNRU5UIE9GO1NtOzA7T047Ozs7O1k7Ozs7OworMjIwQjtDT05UQUlOUyBBUyBNRU1CRVI7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjBDO0RPRVMgTk9UIENPTlRBSU4gQVMgTUVNQkVSO1NtOzA7T047MjIwQiAwMzM4Ozs7O1k7Ozs7OworMjIwRDtTTUFMTCBDT05UQUlOUyBBUyBNRU1CRVI7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjBFO0VORCBPRiBQUk9PRjtTbTswO09OOzs7OztOOzs7OzsKKzIyMEY7Ti1BUlkgUFJPRFVDVDtTbTswO09OOzs7OztOOzs7OzsKKzIyMTA7Ti1BUlkgQ09QUk9EVUNUO1NtOzA7T047Ozs7O047Ozs7OworMjIxMTtOLUFSWSBTVU1NQVRJT047U207MDtPTjs7Ozs7WTs7Ozs7CisyMjEyO01JTlVTIFNJR047U207MDtFVDs7Ozs7Tjs7Ozs7CisyMjEzO01JTlVTLU9SLVBMVVMgU0lHTjtTbTswO0VUOzs7OztOOzs7OzsKKzIyMTQ7RE9UIFBMVVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjE1O0RJVklTSU9OIFNMQVNIO1NtOzA7T047Ozs7O1k7Ozs7OworMjIxNjtTRVQgTUlOVVM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjE3O0FTVEVSSVNLIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjIxODtSSU5HIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjIxOTtCVUxMRVQgT1BFUkFUT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjFBO1NRVUFSRSBST09UO1NtOzA7T047Ozs7O1k7Ozs7OworMjIxQjtDVUJFIFJPT1Q7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjFDO0ZPVVJUSCBST09UO1NtOzA7T047Ozs7O1k7Ozs7OworMjIxRDtQUk9QT1JUSU9OQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjFFO0lORklOSVRZO1NtOzA7T047Ozs7O047Ozs7OworMjIxRjtSSUdIVCBBTkdMRTtTbTswO09OOzs7OztZOzs7OzsKKzIyMjA7QU5HTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjIxO01FQVNVUkVEIEFOR0xFO1NtOzA7T047Ozs7O1k7Ozs7OworMjIyMjtTUEhFUklDQUwgQU5HTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjIzO0RJVklERVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjI0O0RPRVMgTk9UIERJVklERTtTbTswO09OOzIyMjMgMDMzODs7OztZOzs7OzsKKzIyMjU7UEFSQUxMRUwgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjI2O05PVCBQQVJBTExFTCBUTztTbTswO09OOzIyMjUgMDMzODs7OztZOzs7OzsKKzIyMjc7TE9HSUNBTCBBTkQ7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjI4O0xPR0lDQUwgT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjI5O0lOVEVSU0VDVElPTjtTbTswO09OOzs7OztOOzs7OzsKKzIyMkE7VU5JT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjJCO0lOVEVHUkFMO1NtOzA7T047Ozs7O1k7Ozs7OworMjIyQztET1VCTEUgSU5URUdSQUw7U207MDtPTjs8Y29tcGF0PiAyMjJCIDIyMkI7Ozs7WTs7Ozs7CisyMjJEO1RSSVBMRSBJTlRFR1JBTDtTbTswO09OOzxjb21wYXQ+IDIyMkIgMjIyQiAyMjJCOzs7O1k7Ozs7OworMjIyRTtDT05UT1VSIElOVEVHUkFMO1NtOzA7T047Ozs7O1k7Ozs7OworMjIyRjtTVVJGQUNFIElOVEVHUkFMO1NtOzA7T047PGNvbXBhdD4gMjIyRSAyMjJFOzs7O1k7Ozs7OworMjIzMDtWT0xVTUUgSU5URUdSQUw7U207MDtPTjs8Y29tcGF0PiAyMjJFIDIyMkUgMjIyRTs7OztZOzs7OzsKKzIyMzE7Q0xPQ0tXSVNFIElOVEVHUkFMO1NtOzA7T047Ozs7O1k7Ozs7OworMjIzMjtDTE9DS1dJU0UgQ09OVE9VUiBJTlRFR1JBTDtTbTswO09OOzs7OztZOzs7OzsKKzIyMzM7QU5USUNMT0NLV0lTRSBDT05UT1VSIElOVEVHUkFMO1NtOzA7T047Ozs7O1k7Ozs7OworMjIzNDtUSEVSRUZPUkU7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjM1O0JFQ0FVU0U7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjM2O1JBVElPO1NtOzA7T047Ozs7O047Ozs7OworMjIzNztQUk9QT1JUSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjIzODtET1QgTUlOVVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjM5O0VYQ0VTUztTbTswO09OOzs7OztZOzs7OzsKKzIyM0E7R0VPTUVUUklDIFBST1BPUlRJT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjNCO0hPTU9USEVUSUM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjNDO1RJTERFIE9QRVJBVE9SO1NtOzA7T047Ozs7O1k7Ozs7OworMjIzRDtSRVZFUlNFRCBUSUxERTtTbTswO09OOzs7OztZOztsYXp5IFM7OzsKKzIyM0U7SU5WRVJURUQgTEFaWSBTO1NtOzA7T047Ozs7O1k7Ozs7OworMjIzRjtTSU5FIFdBVkU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjQwO1dSRUFUSCBQUk9EVUNUO1NtOzA7T047Ozs7O1k7Ozs7OworMjI0MTtOT1QgVElMREU7U207MDtPTjsyMjNDIDAzMzg7Ozs7WTs7Ozs7CisyMjQyO01JTlVTIFRJTERFO1NtOzA7T047Ozs7O1k7Ozs7OworMjI0MztBU1lNUFRPVElDQUxMWSBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyNDQ7Tk9UIEFTWU1QVE9USUNBTExZIEVRVUFMIFRPO1NtOzA7T047MjI0MyAwMzM4Ozs7O1k7Ozs7OworMjI0NTtBUFBST1hJTUFURUxZIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI0NjtBUFBST1hJTUFURUxZIEJVVCBOT1QgQUNUVUFMTFkgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjQ3O05FSVRIRVIgQVBQUk9YSU1BVEVMWSBOT1IgQUNUVUFMTFkgRVFVQUwgVE87U207MDtPTjsyMjQ1IDAzMzg7Ozs7WTs7Ozs7CisyMjQ4O0FMTU9TVCBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyNDk7Tk9UIEFMTU9TVCBFUVVBTCBUTztTbTswO09OOzIyNDggMDMzODs7OztZOzs7OzsKKzIyNEE7QUxNT1NUIEVRVUFMIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI0QjtUUklQTEUgVElMREU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjRDO0FMTCBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyNEQ7RVFVSVZBTEVOVCBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNEU7R0VPTUVUUklDQUxMWSBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjI0RjtESUZGRVJFTkNFIEJFVFdFRU47U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjUwO0FQUFJPQUNIRVMgVEhFIExJTUlUO1NtOzA7T047Ozs7O047Ozs7OworMjI1MTtHRU9NRVRSSUNBTExZIEVRVUFMIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjI1MjtBUFBST1hJTUFURUxZIEVRVUFMIFRPIE9SIFRIRSBJTUFHRSBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyNTM7SU1BR0UgT0YgT1IgQVBQUk9YSU1BVEVMWSBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyNTQ7Q09MT04gRVFVQUxTO1NtOzA7T047Ozs7O1k7Q09MT04gRVFVQUw7Ozs7CisyMjU1O0VRVUFMUyBDT0xPTjtTbTswO09OOzs7OztZO0VRVUFMIENPTE9OOzs7OworMjI1NjtSSU5HIElOIEVRVUFMIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjI1NztSSU5HIEVRVUFMIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjI1ODtDT1JSRVNQT05EUyBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNTk7RVNUSU1BVEVTO1NtOzA7T047Ozs7O047Ozs7OworMjI1QTtFUVVJQU5HVUxBUiBUTztTbTswO09OOzs7OztOOzs7OzsKKzIyNUI7U1RBUiBFUVVBTFM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjVDO0RFTFRBIEVRVUFMIFRPO1NtOzA7T047Ozs7O047Ozs7OworMjI1RDtFUVVBTCBUTyBCWSBERUZJTklUSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjI1RTtNRUFTVVJFRCBCWTtTbTswO09OOzs7OztOOzs7OzsKKzIyNUY7UVVFU1RJT05FRCBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyNjA7Tk9UIEVRVUFMIFRPO1NtOzA7T047MDAzRCAwMzM4Ozs7O1k7Ozs7OworMjI2MTtJREVOVElDQUwgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjYyO05PVCBJREVOVElDQUwgVE87U207MDtPTjsyMjYxIDAzMzg7Ozs7WTs7Ozs7CisyMjYzO1NUUklDVExZIEVRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjY0O0xFU1MtVEhBTiBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZO0xFU1MgVEhBTiBPUiBFUVVBTCBUTzs7OzsKKzIyNjU7R1JFQVRFUi1USEFOIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7R1JFQVRFUiBUSEFOIE9SIEVRVUFMIFRPOzs7OworMjI2NjtMRVNTLVRIQU4gT1ZFUiBFUVVBTCBUTztTbTswO09OOzs7OztZO0xFU1MgVEhBTiBPVkVSIEVRVUFMIFRPOzs7OworMjI2NztHUkVBVEVSLVRIQU4gT1ZFUiBFUVVBTCBUTztTbTswO09OOzs7OztZO0dSRUFURVIgVEhBTiBPVkVSIEVRVUFMIFRPOzs7OworMjI2ODtMRVNTLVRIQU4gQlVUIE5PVCBFUVVBTCBUTztTbTswO09OOzs7OztZO0xFU1MgVEhBTiBCVVQgTk9UIEVRVUFMIFRPOzs7OworMjI2OTtHUkVBVEVSLVRIQU4gQlVUIE5PVCBFUVVBTCBUTztTbTswO09OOzs7OztZO0dSRUFURVIgVEhBTiBCVVQgTk9UIEVRVUFMIFRPOzs7OworMjI2QTtNVUNIIExFU1MtVEhBTjtTbTswO09OOzs7OztZO01VQ0ggTEVTUyBUSEFOOzs7OworMjI2QjtNVUNIIEdSRUFURVItVEhBTjtTbTswO09OOzs7OztZO01VQ0ggR1JFQVRFUiBUSEFOOzs7OworMjI2QztCRVRXRUVOO1NtOzA7T047Ozs7O047Ozs7OworMjI2RDtOT1QgRVFVSVZBTEVOVCBUTztTbTswO09OOzIyNEQgMDMzODs7OztOOzs7OzsKKzIyNkU7Tk9UIExFU1MtVEhBTjtTbTswO09OOzAwM0MgMDMzODs7OztZO05PVCBMRVNTIFRIQU47Ozs7CisyMjZGO05PVCBHUkVBVEVSLVRIQU47U207MDtPTjswMDNFIDAzMzg7Ozs7WTtOT1QgR1JFQVRFUiBUSEFOOzs7OworMjI3MDtORUlUSEVSIExFU1MtVEhBTiBOT1IgRVFVQUwgVE87U207MDtPTjsyMjY0IDAzMzg7Ozs7WTtORUlUSEVSIExFU1MgVEhBTiBOT1IgRVFVQUwgVE87Ozs7CisyMjcxO05FSVRIRVIgR1JFQVRFUi1USEFOIE5PUiBFUVVBTCBUTztTbTswO09OOzIyNjUgMDMzODs7OztZO05FSVRIRVIgR1JFQVRFUiBUSEFOIE5PUiBFUVVBTCBUTzs7OzsKKzIyNzI7TEVTUy1USEFOIE9SIEVRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gT1IgRVFVSVZBTEVOVCBUTzs7OzsKKzIyNzM7R1JFQVRFUi1USEFOIE9SIEVRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7WTtHUkVBVEVSIFRIQU4gT1IgRVFVSVZBTEVOVCBUTzs7OzsKKzIyNzQ7TkVJVEhFUiBMRVNTLVRIQU4gTk9SIEVRVUlWQUxFTlQgVE87U207MDtPTjsyMjcyIDAzMzg7Ozs7WTtORUlUSEVSIExFU1MgVEhBTiBOT1IgRVFVSVZBTEVOVCBUTzs7OzsKKzIyNzU7TkVJVEhFUiBHUkVBVEVSLVRIQU4gTk9SIEVRVUlWQUxFTlQgVE87U207MDtPTjsyMjczIDAzMzg7Ozs7WTtORUlUSEVSIEdSRUFURVIgVEhBTiBOT1IgRVFVSVZBTEVOVCBUTzs7OzsKKzIyNzY7TEVTUy1USEFOIE9SIEdSRUFURVItVEhBTjtTbTswO09OOzs7OztZO0xFU1MgVEhBTiBPUiBHUkVBVEVSIFRIQU47Ozs7CisyMjc3O0dSRUFURVItVEhBTiBPUiBMRVNTLVRIQU47U207MDtPTjs7Ozs7WTtHUkVBVEVSIFRIQU4gT1IgTEVTUyBUSEFOOzs7OworMjI3ODtORUlUSEVSIExFU1MtVEhBTiBOT1IgR1JFQVRFUi1USEFOO1NtOzA7T047MjI3NiAwMzM4Ozs7O1k7TkVJVEhFUiBMRVNTIFRIQU4gTk9SIEdSRUFURVIgVEhBTjs7OzsKKzIyNzk7TkVJVEhFUiBHUkVBVEVSLVRIQU4gTk9SIExFU1MtVEhBTjtTbTswO09OOzIyNzcgMDMzODs7OztZO05FSVRIRVIgR1JFQVRFUiBUSEFOIE5PUiBMRVNTIFRIQU47Ozs7CisyMjdBO1BSRUNFREVTO1NtOzA7T047Ozs7O1k7Ozs7OworMjI3QjtTVUNDRUVEUztTbTswO09OOzs7OztZOzs7OzsKKzIyN0M7UFJFQ0VERVMgT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjdEO1NVQ0NFRURTIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI3RTtQUkVDRURFUyBPUiBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI3RjtTVUNDRUVEUyBPUiBFUVVJVkFMRU5UIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI4MDtET0VTIE5PVCBQUkVDRURFO1NtOzA7T047MjI3QSAwMzM4Ozs7O1k7Ozs7OworMjI4MTtET0VTIE5PVCBTVUNDRUVEO1NtOzA7T047MjI3QiAwMzM4Ozs7O1k7Ozs7OworMjI4MjtTVUJTRVQgT0Y7U207MDtPTjs7Ozs7WTs7Ozs7CisyMjgzO1NVUEVSU0VUIE9GO1NtOzA7T047Ozs7O1k7Ozs7OworMjI4NDtOT1QgQSBTVUJTRVQgT0Y7U207MDtPTjsyMjgyIDAzMzg7Ozs7WTs7Ozs7CisyMjg1O05PVCBBIFNVUEVSU0VUIE9GO1NtOzA7T047MjI4MyAwMzM4Ozs7O1k7Ozs7OworMjI4NjtTVUJTRVQgT0YgT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjg3O1NVUEVSU0VUIE9GIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjI4ODtORUlUSEVSIEEgU1VCU0VUIE9GIE5PUiBFUVVBTCBUTztTbTswO09OOzIyODYgMDMzODs7OztZOzs7OzsKKzIyODk7TkVJVEhFUiBBIFNVUEVSU0VUIE9GIE5PUiBFUVVBTCBUTztTbTswO09OOzIyODcgMDMzODs7OztZOzs7OzsKKzIyOEE7U1VCU0VUIE9GIFdJVEggTk9UIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7U1VCU0VUIE9GIE9SIE5PVCBFUVVBTCBUTzs7OzsKKzIyOEI7U1VQRVJTRVQgT0YgV0lUSCBOT1QgRVFVQUwgVE87U207MDtPTjs7Ozs7WTtTVVBFUlNFVCBPRiBPUiBOT1QgRVFVQUwgVE87Ozs7CisyMjhDO01VTFRJU0VUO1NtOzA7T047Ozs7O1k7Ozs7OworMjI4RDtNVUxUSVNFVCBNVUxUSVBMSUNBVElPTjtTbTswO09OOzs7OztOOzs7OzsKKzIyOEU7TVVMVElTRVQgVU5JT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjhGO1NRVUFSRSBJTUFHRSBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyOTA7U1FVQVJFIE9SSUdJTkFMIE9GO1NtOzA7T047Ozs7O1k7Ozs7OworMjI5MTtTUVVBUkUgSU1BR0UgT0YgT1IgRVFVQUwgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMjkyO1NRVUFSRSBPUklHSU5BTCBPRiBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyOTM7U1FVQVJFIENBUDtTbTswO09OOzs7OztOOzs7OzsKKzIyOTQ7U1FVQVJFIENVUDtTbTswO09OOzs7OztOOzs7OzsKKzIyOTU7Q0lSQ0xFRCBQTFVTO1NtOzA7T047Ozs7O047Ozs7OworMjI5NjtDSVJDTEVEIE1JTlVTO1NtOzA7T047Ozs7O047Ozs7OworMjI5NztDSVJDTEVEIFRJTUVTO1NtOzA7T047Ozs7O047Ozs7OworMjI5ODtDSVJDTEVEIERJVklTSU9OIFNMQVNIO1NtOzA7T047Ozs7O1k7Ozs7OworMjI5OTtDSVJDTEVEIERPVCBPUEVSQVRPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyOUE7Q0lSQ0xFRCBSSU5HIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjI5QjtDSVJDTEVEIEFTVEVSSVNLIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjI5QztDSVJDTEVEIEVRVUFMUztTbTswO09OOzs7OztOOzs7OzsKKzIyOUQ7Q0lSQ0xFRCBEQVNIO1NtOzA7T047Ozs7O047Ozs7OworMjI5RTtTUVVBUkVEIFBMVVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMjlGO1NRVUFSRUQgTUlOVVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkEwO1NRVUFSRUQgVElNRVM7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkExO1NRVUFSRUQgRE9UIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjJBMjtSSUdIVCBUQUNLO1NtOzA7T047Ozs7O1k7Ozs7OworMjJBMztMRUZUIFRBQ0s7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkE0O0RPV04gVEFDSztTbTswO09OOzs7OztOOzs7OzsKKzIyQTU7VVAgVEFDSztTbTswO09OOzs7OztOOzs7OzsKKzIyQTY7QVNTRVJUSU9OO1NtOzA7T047Ozs7O1k7Ozs7OworMjJBNztNT0RFTFM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkE4O1RSVUU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkE5O0ZPUkNFUztTbTswO09OOzs7OztZOzs7OzsKKzIyQUE7VFJJUExFIFZFUlRJQ0FMIEJBUiBSSUdIVCBUVVJOU1RJTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkFCO0RPVUJMRSBWRVJUSUNBTCBCQVIgRE9VQkxFIFJJR0hUIFRVUk5TVElMRTtTbTswO09OOzs7OztZOzs7OzsKKzIyQUM7RE9FUyBOT1QgUFJPVkU7U207MDtPTjsyMkEyIDAzMzg7Ozs7WTs7Ozs7CisyMkFEO05PVCBUUlVFO1NtOzA7T047MjJBOCAwMzM4Ozs7O1k7Ozs7OworMjJBRTtET0VTIE5PVCBGT1JDRTtTbTswO09OOzIyQTkgMDMzODs7OztZOzs7OzsKKzIyQUY7TkVHQVRFRCBET1VCTEUgVkVSVElDQUwgQkFSIERPVUJMRSBSSUdIVCBUVVJOU1RJTEU7U207MDtPTjsyMkFCIDAzMzg7Ozs7WTs7Ozs7CisyMkIwO1BSRUNFREVTIFVOREVSIFJFTEFUSU9OO1NtOzA7T047Ozs7O1k7Ozs7OworMjJCMTtTVUNDRUVEUyBVTkRFUiBSRUxBVElPTjtTbTswO09OOzs7OztZOzs7OzsKKzIyQjI7Tk9STUFMIFNVQkdST1VQIE9GO1NtOzA7T047Ozs7O1k7Ozs7OworMjJCMztDT05UQUlOUyBBUyBOT1JNQUwgU1VCR1JPVVA7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkI0O05PUk1BTCBTVUJHUk9VUCBPRiBPUiBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyQjU7Q09OVEFJTlMgQVMgTk9STUFMIFNVQkdST1VQIE9SIEVRVUFMIFRPO1NtOzA7T047Ozs7O1k7Ozs7OworMjJCNjtPUklHSU5BTCBPRjtTbTswO09OOzs7OztZOzs7OzsKKzIyQjc7SU1BR0UgT0Y7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkI4O01VTFRJTUFQO1NtOzA7T047Ozs7O1k7Ozs7OworMjJCOTtIRVJNSVRJQU4gQ09OSlVHQVRFIE1BVFJJWDtTbTswO09OOzs7OztOOzs7OzsKKzIyQkE7SU5URVJDQUxBVEU7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkJCO1hPUjtTbTswO09OOzs7OztOOzs7OzsKKzIyQkM7TkFORDtTbTswO09OOzs7OztOOzs7OzsKKzIyQkQ7Tk9SO1NtOzA7T047Ozs7O047Ozs7OworMjJCRTtSSUdIVCBBTkdMRSBXSVRIIEFSQztTbTswO09OOzs7OztZOzs7OzsKKzIyQkY7UklHSFQgVFJJQU5HTEU7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkMwO04tQVJZIExPR0lDQUwgQU5EO1NtOzA7T047Ozs7O047Ozs7OworMjJDMTtOLUFSWSBMT0dJQ0FMIE9SO1NtOzA7T047Ozs7O047Ozs7OworMjJDMjtOLUFSWSBJTlRFUlNFQ1RJT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkMzO04tQVJZIFVOSU9OO1NtOzA7T047Ozs7O047Ozs7OworMjJDNDtESUFNT05EIE9QRVJBVE9SO1NtOzA7T047Ozs7O047Ozs7OworMjJDNTtET1QgT1BFUkFUT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkM2O1NUQVIgT1BFUkFUT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkM3O0RJVklTSU9OIFRJTUVTO1NtOzA7T047Ozs7O047Ozs7OworMjJDODtCT1dUSUU7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkM5O0xFRlQgTk9STUFMIEZBQ1RPUiBTRU1JRElSRUNUIFBST0RVQ1Q7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkNBO1JJR0hUIE5PUk1BTCBGQUNUT1IgU0VNSURJUkVDVCBQUk9EVUNUO1NtOzA7T047Ozs7O1k7Ozs7OworMjJDQjtMRUZUIFNFTUlESVJFQ1QgUFJPRFVDVDtTbTswO09OOzs7OztZOzs7OzsKKzIyQ0M7UklHSFQgU0VNSURJUkVDVCBQUk9EVUNUO1NtOzA7T047Ozs7O1k7Ozs7OworMjJDRDtSRVZFUlNFRCBUSUxERSBFUVVBTFM7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkNFO0NVUkxZIExPR0lDQUwgT1I7U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkNGO0NVUkxZIExPR0lDQUwgQU5EO1NtOzA7T047Ozs7O047Ozs7OworMjJEMDtET1VCTEUgU1VCU0VUO1NtOzA7T047Ozs7O1k7Ozs7OworMjJEMTtET1VCTEUgU1VQRVJTRVQ7U207MDtPTjs7Ozs7WTs7Ozs7CisyMkQyO0RPVUJMRSBJTlRFUlNFQ1RJT047U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkQzO0RPVUJMRSBVTklPTjtTbTswO09OOzs7OztOOzs7OzsKKzIyRDQ7UElUQ0hGT1JLO1NtOzA7T047Ozs7O047Ozs7OworMjJENTtFUVVBTCBBTkQgUEFSQUxMRUwgVE87U207MDtPTjs7Ozs7Tjs7Ozs7CisyMkQ2O0xFU1MtVEhBTiBXSVRIIERPVDtTbTswO09OOzs7OztZO0xFU1MgVEhBTiBXSVRIIERPVDs7OzsKKzIyRDc7R1JFQVRFUi1USEFOIFdJVEggRE9UO1NtOzA7T047Ozs7O1k7R1JFQVRFUiBUSEFOIFdJVEggRE9UOzs7OworMjJEODtWRVJZIE1VQ0ggTEVTUy1USEFOO1NtOzA7T047Ozs7O1k7VkVSWSBNVUNIIExFU1MgVEhBTjs7OzsKKzIyRDk7VkVSWSBNVUNIIEdSRUFURVItVEhBTjtTbTswO09OOzs7OztZO1ZFUlkgTVVDSCBHUkVBVEVSIFRIQU47Ozs7CisyMkRBO0xFU1MtVEhBTiBFUVVBTCBUTyBPUiBHUkVBVEVSLVRIQU47U207MDtPTjs7Ozs7WTtMRVNTIFRIQU4gRVFVQUwgVE8gT1IgR1JFQVRFUiBUSEFOOzs7OworMjJEQjtHUkVBVEVSLVRIQU4gRVFVQUwgVE8gT1IgTEVTUy1USEFOO1NtOzA7T047Ozs7O1k7R1JFQVRFUiBUSEFOIEVRVUFMIFRPIE9SIExFU1MgVEhBTjs7OzsKKzIyREM7RVFVQUwgVE8gT1IgTEVTUy1USEFOO1NtOzA7T047Ozs7O1k7RVFVQUwgVE8gT1IgTEVTUyBUSEFOOzs7OworMjJERDtFUVVBTCBUTyBPUiBHUkVBVEVSLVRIQU47U207MDtPTjs7Ozs7WTtFUVVBTCBUTyBPUiBHUkVBVEVSIFRIQU47Ozs7CisyMkRFO0VRVUFMIFRPIE9SIFBSRUNFREVTO1NtOzA7T047Ozs7O1k7Ozs7OworMjJERjtFUVVBTCBUTyBPUiBTVUNDRUVEUztTbTswO09OOzs7OztZOzs7OzsKKzIyRTA7RE9FUyBOT1QgUFJFQ0VERSBPUiBFUVVBTDtTbTswO09OOzIyN0MgMDMzODs7OztZOzs7OzsKKzIyRTE7RE9FUyBOT1QgU1VDQ0VFRCBPUiBFUVVBTDtTbTswO09OOzIyN0QgMDMzODs7OztZOzs7OzsKKzIyRTI7Tk9UIFNRVUFSRSBJTUFHRSBPRiBPUiBFUVVBTCBUTztTbTswO09OOzIyOTEgMDMzODs7OztZOzs7OzsKKzIyRTM7Tk9UIFNRVUFSRSBPUklHSU5BTCBPRiBPUiBFUVVBTCBUTztTbTswO09OOzIyOTIgMDMzODs7OztZOzs7OzsKKzIyRTQ7U1FVQVJFIElNQUdFIE9GIE9SIE5PVCBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyRTU7U1FVQVJFIE9SSUdJTkFMIE9GIE9SIE5PVCBFUVVBTCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyRTY7TEVTUy1USEFOIEJVVCBOT1QgRVFVSVZBTEVOVCBUTztTbTswO09OOzs7OztZO0xFU1MgVEhBTiBCVVQgTk9UIEVRVUlWQUxFTlQgVE87Ozs7CisyMkU3O0dSRUFURVItVEhBTiBCVVQgTk9UIEVRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7WTtHUkVBVEVSIFRIQU4gQlVUIE5PVCBFUVVJVkFMRU5UIFRPOzs7OworMjJFODtQUkVDRURFUyBCVVQgTk9UIEVRVUlWQUxFTlQgVE87U207MDtPTjs7Ozs7WTs7Ozs7CisyMkU5O1NVQ0NFRURTIEJVVCBOT1QgRVFVSVZBTEVOVCBUTztTbTswO09OOzs7OztZOzs7OzsKKzIyRUE7Tk9UIE5PUk1BTCBTVUJHUk9VUCBPRjtTbTswO09OOzIyQjIgMDMzODs7OztZOzs7OzsKKzIyRUI7RE9FUyBOT1QgQ09OVEFJTiBBUyBOT1JNQUwgU1VCR1JPVVA7U207MDtPTjsyMkIzIDAzMzg7Ozs7WTs7Ozs7CisyMkVDO05PVCBOT1JNQUwgU1VCR1JPVVAgT0YgT1IgRVFVQUwgVE87U207MDtPTjsyMkI0IDAzMzg7Ozs7WTs7Ozs7CisyMkVEO0RPRVMgTk9UIENPTlRBSU4gQVMgTk9STUFMIFNVQkdST1VQIE9SIEVRVUFMO1NtOzA7T047MjJCNSAwMzM4Ozs7O1k7Ozs7OworMjJFRTtWRVJUSUNBTCBFTExJUFNJUztTbTswO09OOzs7OztOOzs7OzsKKzIyRUY7TUlETElORSBIT1JJWk9OVEFMIEVMTElQU0lTO1NtOzA7T047Ozs7O047Ozs7OworMjJGMDtVUCBSSUdIVCBESUFHT05BTCBFTExJUFNJUztTbTswO09OOzs7OztZOzs7OzsKKzIyRjE7RE9XTiBSSUdIVCBESUFHT05BTCBFTExJUFNJUztTbTswO09OOzs7OztZOzs7OzsKKzIzMDA7RElBTUVURVIgU0lHTjtTbzswO09OOzs7OztOOzs7OzsKKzIzMDE7RUxFQ1RSSUMgQVJST1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzAyO0hPVVNFO1NvOzA7T047Ozs7O047Ozs7OworMjMwMztVUCBBUlJPV0hFQUQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzA0O0RPV04gQVJST1dIRUFEO1NvOzA7T047Ozs7O047Ozs7OworMjMwNTtQUk9KRUNUSVZFO1NvOzA7T047Ozs7O047Ozs7OworMjMwNjtQRVJTUEVDVElWRTtTbzswO09OOzs7OztOOzs7OzsKKzIzMDc7V0FWWSBMSU5FO1NvOzA7T047Ozs7O047Ozs7OworMjMwODtMRUZUIENFSUxJTkc7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzA5O1JJR0hUIENFSUxJTkc7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzBBO0xFRlQgRkxPT1I7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzBCO1JJR0hUIEZMT09SO1NtOzA7T047Ozs7O1k7Ozs7OworMjMwQztCT1RUT00gUklHSFQgQ1JPUDtTbzswO09OOzs7OztOOzs7OzsKKzIzMEQ7Qk9UVE9NIExFRlQgQ1JPUDtTbzswO09OOzs7OztOOzs7OzsKKzIzMEU7VE9QIFJJR0hUIENST1A7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzBGO1RPUCBMRUZUIENST1A7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzEwO1JFVkVSU0VEIE5PVCBTSUdOO1NvOzA7T047Ozs7O047Ozs7OworMjMxMTtTUVVBUkUgTE9aRU5HRTtTbzswO09OOzs7OztOOzs7OzsKKzIzMTI7QVJDO1NvOzA7T047Ozs7O047Ozs7OworMjMxMztTRUdNRU5UO1NvOzA7T047Ozs7O047Ozs7OworMjMxNDtTRUNUT1I7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzE1O1RFTEVQSE9ORSBSRUNPUkRFUjtTbzswO09OOzs7OztOOzs7OzsKKzIzMTY7UE9TSVRJT04gSU5ESUNBVE9SO1NvOzA7T047Ozs7O047Ozs7OworMjMxNztWSUVXREFUQSBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzE4O1BMQUNFIE9GIElOVEVSRVNUIFNJR047U287MDtPTjs7Ozs7TjtDT01NQU5EIEtFWTs7OzsKKzIzMTk7VFVSTkVEIE5PVCBTSUdOO1NvOzA7T047Ozs7O047Ozs7OworMjMxQTtXQVRDSDtTbzswO09OOzs7OztOOzs7OzsKKzIzMUI7SE9VUkdMQVNTO1NvOzA7T047Ozs7O047Ozs7OworMjMxQztUT1AgTEVGVCBDT1JORVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzFEO1RPUCBSSUdIVCBDT1JORVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzFFO0JPVFRPTSBMRUZUIENPUk5FUjtTbzswO09OOzs7OztOOzs7OzsKKzIzMUY7Qk9UVE9NIFJJR0hUIENPUk5FUjtTbzswO09OOzs7OztOOzs7OzsKKzIzMjA7VE9QIEhBTEYgSU5URUdSQUw7U207MDtPTjs7Ozs7WTs7Ozs7CisyMzIxO0JPVFRPTSBIQUxGIElOVEVHUkFMO1NtOzA7T047Ozs7O1k7Ozs7OworMjMyMjtGUk9XTjtTbzswO09OOzs7OztOOzs7OzsKKzIzMjM7U01JTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzI0O1VQIEFSUk9XSEVBRCBCRVRXRUVOIFRXTyBIT1JJWk9OVEFMIEJBUlM7U287MDtPTjs7Ozs7TjtFTlRFUiBLRVk7Ozs7CisyMzI1O09QVElPTiBLRVk7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzI2O0VSQVNFIFRPIFRIRSBSSUdIVDtTbzswO09OOzs7OztOO0RFTEVURSBUTyBUSEUgUklHSFQgS0VZOzs7OworMjMyNztYIElOIEEgUkVDVEFOR0xFIEJPWDtTbzswO09OOzs7OztOO0NMRUFSIEtFWTs7OzsKKzIzMjg7S0VZQk9BUkQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzI5O0xFRlQtUE9JTlRJTkcgQU5HTEUgQlJBQ0tFVDtQczswO09OOzMwMDg7Ozs7WTtCUkE7Ozs7CisyMzJBO1JJR0hULVBPSU5USU5HIEFOR0xFIEJSQUNLRVQ7UGU7MDtPTjszMDA5Ozs7O1k7S0VUOzs7OworMjMyQjtFUkFTRSBUTyBUSEUgTEVGVDtTbzswO09OOzs7OztOO0RFTEVURSBUTyBUSEUgTEVGVCBLRVk7Ozs7CisyMzJDO0JFTlpFTkUgUklORztTbzswO09OOzs7OztOOzs7OzsKKzIzMkQ7Q1lMSU5EUklDSVRZO1NvOzA7T047Ozs7O047Ozs7OworMjMyRTtBTEwgQVJPVU5ELVBST0ZJTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzJGO1NZTU1FVFJZO1NvOzA7T047Ozs7O047Ozs7OworMjMzMDtUT1RBTCBSVU5PVVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzMxO0RJTUVOU0lPTiBPUklHSU47U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzMyO0NPTklDQUwgVEFQRVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzMzO1NMT1BFO1NvOzA7T047Ozs7O047Ozs7OworMjMzNDtDT1VOVEVSQk9SRTtTbzswO09OOzs7OztOOzs7OzsKKzIzMzU7Q09VTlRFUlNJTks7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzM2O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBJLUJFQU07U287MDtMOzs7OztOOzs7OzsKKzIzMzc7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFNRVUlTSCBRVUFEO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzM4O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIEVRVUFMO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzM5O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIERJVklERTtTbzswO0w7Ozs7O047Ozs7OworMjMzQTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBESUFNT05EO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzNCO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIEpPVDtTbzswO0w7Ozs7O047Ozs7OworMjMzQztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBDSVJDTEU7U287MDtMOzs7OztOOzs7OzsKKzIzM0Q7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIENJUkNMRSBTVElMRTtTbzswO0w7Ozs7O047Ozs7OworMjMzRTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgQ0lSQ0xFIEpPVDtTbzswO0w7Ozs7O047Ozs7OworMjMzRjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgU0xBU0ggQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQwO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBCQUNLU0xBU0ggQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQxO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIFNMQVNIO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQyO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIEJBQ0tTTEFTSDtTbzswO0w7Ozs7O047Ozs7OworMjM0MztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBMRVNTLVRIQU47U287MDtMOzs7OztOOzs7OzsKKzIzNDQ7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgR1JFQVRFUi1USEFOO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQ1O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBMRUZUV0FSRFMgVkFORTtTbzswO0w7Ozs7O047Ozs7OworMjM0NjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUklHSFRXQVJEUyBWQU5FO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQ3O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIExFRlRXQVJEUyBBUlJPVztTbzswO0w7Ozs7O047Ozs7OworMjM0ODtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzQ5O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBDSVJDTEUgQkFDS1NMQVNIO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzRBO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOIFRBQ0sgVU5ERVJCQVI7U287MDtMOzs7OztOOzsqOzs7CisyMzRCO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBERUxUQSBTVElMRTtTbzswO0w7Ozs7O047Ozs7OworMjM0QztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBET1dOIENBUkVUO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzREO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIERFTFRBO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzRFO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBET1dOIFRBQ0sgSk9UO1NvOzA7TDs7Ozs7Tjs7Kjs7OworMjM0RjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgVVBXQVJEUyBWQU5FO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzUwO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVUFEIFVQV0FSRFMgQVJST1c7U287MDtMOzs7OztOOzs7OzsKKzIzNTE7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQIFRBQ0sgT1ZFUkJBUjtTbzswO0w7Ozs7O047Oyo7OzsKKzIzNTI7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERFTCBTVElMRTtTbzswO0w7Ozs7O047Ozs7OworMjM1MztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBVUCBDQVJFVDtTbzswO0w7Ozs7O047Ozs7OworMjM1NDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBERUw7U287MDtMOzs7OztOOzs7OzsKKzIzNTU7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQIFRBQ0sgSk9UO1NvOzA7TDs7Ozs7Tjs7Kjs7OworMjM1NjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgRE9XTldBUkRTIFZBTkU7U287MDtMOzs7OztOOzs7OzsKKzIzNTc7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgRE9XTldBUkRTIEFSUk9XO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzU4O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBRVU9URSBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM1OTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgREVMVEEgVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNUE7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERJQU1PTkQgVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNUI7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIEpPVCBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM1QztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgQ0lSQ0xFIFVOREVSQkFSO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzVEO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBVUCBTSE9FIEpPVDtTbzswO0w7Ozs7O047Ozs7OworMjM1RTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVPVEUgUVVBRDtTbzswO0w7Ozs7O047Ozs7OworMjM1RjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgQ0lSQ0xFIFNUQVI7U287MDtMOzs7OztOOzs7OzsKKzIzNjA7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgQ09MT047U287MDtMOzs7OztOOzs7OzsKKzIzNjE7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQIFRBQ0sgRElBRVJFU0lTO1NvOzA7TDs7Ozs7Tjs7Kjs7OworMjM2MjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgREVMIERJQUVSRVNJUztTbzswO0w7Ozs7O047Ozs7OworMjM2MztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgU1RBUiBESUFFUkVTSVM7U287MDtMOzs7OztOOzs7OzsKKzIzNjQ7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIEpPVCBESUFFUkVTSVM7U287MDtMOzs7OztOOzs7OzsKKzIzNjU7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIENJUkNMRSBESUFFUkVTSVM7U287MDtMOzs7OztOOzs7OzsKKzIzNjY7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERPV04gU0hPRSBTVElMRTtTbzswO0w7Ozs7O047Ozs7OworMjM2NztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgTEVGVCBTSE9FIFNUSUxFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzY4O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBUSUxERSBESUFFUkVTSVM7U287MDtMOzs7OztOOzs7OzsKKzIzNjk7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIEdSRUFURVItVEhBTiBESUFFUkVTSVM7U287MDtMOzs7OztOOzs7OzsKKzIzNkE7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIENPTU1BIEJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM2QjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgREVMIFRJTERFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzZDO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBaSUxERTtTbzswO0w7Ozs7O047Ozs7OworMjM2RDtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgU1RJTEUgVElMREU7U287MDtMOzs7OztOOzs7OzsKKzIzNkU7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFNFTUlDT0xPTiBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM2RjtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgUVVBRCBOT1QgRVFVQUw7U287MDtMOzs7OztOOzs7OzsKKzIzNzA7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQgUVVFU1RJT047U287MDtMOzs7OztOOzs7OzsKKzIzNzE7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIERPV04gQ0FSRVQgVElMREU7U287MDtMOzs7OztOOzs7OzsKKzIzNzI7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFVQIENBUkVUIFRJTERFO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzczO0FQTCBGVU5DVElPTkFMIFNZTUJPTCBJT1RBO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzc0O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBSSE87U287MDtMOzs7OztOOzs7OzsKKzIzNzU7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIE9NRUdBO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzc2O0FQTCBGVU5DVElPTkFMIFNZTUJPTCBBTFBIQSBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM3NztBUEwgRlVOQ1RJT05BTCBTWU1CT0wgRVBTSUxPTiBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM3ODtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgSU9UQSBVTkRFUkJBUjtTbzswO0w7Ozs7O047Ozs7OworMjM3OTtBUEwgRlVOQ1RJT05BTCBTWU1CT0wgT01FR0EgVU5ERVJCQVI7U287MDtMOzs7OztOOzs7OzsKKzIzN0E7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIEFMUEhBO1NvOzA7TDs7Ozs7Tjs7Ozs7CisyMzdCO05PVCBDSEVDSyBNQVJLO1NvOzA7T047Ozs7O047Ozs7OworMjM3RDtTSE9VTERFUkVEIE9QRU4gQk9YO1NvOzA7T047Ozs7O047Ozs7OworMjM3RTtCRUxMIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIzN0Y7VkVSVElDQUwgTElORSBXSVRIIE1JRERMRSBET1Q7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzgwO0lOU0VSVElPTiBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzgxO0NPTlRJTlVPVVMgVU5ERVJMSU5FIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIzODI7RElTQ09OVElOVU9VUyBVTkRFUkxJTkUgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM4MztFTVBIQVNJUyBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzg0O0NPTVBPU0lUSU9OIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIzODU7V0hJVEUgU1FVQVJFIFdJVEggQ0VOVFJFIFZFUlRJQ0FMIExJTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzg2O0VOVEVSIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIzODc7QUxURVJOQVRJVkUgS0VZIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIzODg7SEVMTSBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzg5O0NJUkNMRUQgSE9SSVpPTlRBTCBCQVIgV0lUSCBOT1RDSDtTbzswO09OOzs7OztOOztwYXVzZTs7OworMjM4QTtDSVJDTEVEIFRSSUFOR0xFIERPV047U287MDtPTjs7Ozs7Tjs7YnJlYWs7OzsKKzIzOEI7QlJPS0VOIENJUkNMRSBXSVRIIE5PUlRIV0VTVCBBUlJPVztTbzswO09OOzs7OztOOztlc2NhcGU7OzsKKzIzOEM7VU5ETyBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzhEO01PTk9TVEFCTEUgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM4RTtIWVNURVJFU0lTIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIzOEY7T1BFTi1DSVJDVUlULU9VVFBVVCBILVRZUEUgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM5MDtPUEVOLUNJUkNVSVQtT1VUUFVUIEwtVFlQRSBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzkxO1BBU1NJVkUtUFVMTC1ET1dOLU9VVFBVVCBTWU1CT0w7U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzkyO1BBU1NJVkUtUFVMTC1VUC1PVVRQVVQgU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM5MztESVJFQ1QgQ1VSUkVOVCBTWU1CT0wgRk9STSBUV087U287MDtPTjs7Ozs7Tjs7Ozs7CisyMzk0O1NPRlRXQVJFLUZVTkNUSU9OIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIzOTU7QVBMIEZVTkNUSU9OQUwgU1lNQk9MIFFVQUQ7U287MDtMOzs7OztOOzs7OzsKKzIzOTY7REVDSU1BTCBTRVBBUkFUT1IgS0VZIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzIzOTc7UFJFVklPVVMgUEFHRTtTbzswO09OOzs7OztOOzs7OzsKKzIzOTg7TkVYVCBQQUdFO1NvOzA7T047Ozs7O047Ozs7OworMjM5OTtQUklOVCBTQ1JFRU4gU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjM5QTtDTEVBUiBTQ1JFRU4gU1lNQk9MO1NvOzA7T047Ozs7O047Ozs7OworMjQwMDtTWU1CT0wgRk9SIE5VTEw7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBOVUxMOzs7OworMjQwMTtTWU1CT0wgRk9SIFNUQVJUIE9GIEhFQURJTkc7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBTVEFSVCBPRiBIRUFESU5HOzs7OworMjQwMjtTWU1CT0wgRk9SIFNUQVJUIE9GIFRFWFQ7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBTVEFSVCBPRiBURVhUOzs7OworMjQwMztTWU1CT0wgRk9SIEVORCBPRiBURVhUO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgRU5EIE9GIFRFWFQ7Ozs7CisyNDA0O1NZTUJPTCBGT1IgRU5EIE9GIFRSQU5TTUlTU0lPTjtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEVORCBPRiBUUkFOU01JU1NJT047Ozs7CisyNDA1O1NZTUJPTCBGT1IgRU5RVUlSWTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIEVOUVVJUlk7Ozs7CisyNDA2O1NZTUJPTCBGT1IgQUNLTk9XTEVER0U7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBBQ0tOT1dMRURHRTs7OzsKKzI0MDc7U1lNQk9MIEZPUiBCRUxMO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgQkVMTDs7OzsKKzI0MDg7U1lNQk9MIEZPUiBCQUNLU1BBQ0U7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBCQUNLU1BBQ0U7Ozs7CisyNDA5O1NZTUJPTCBGT1IgSE9SSVpPTlRBTCBUQUJVTEFUSU9OO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgSE9SSVpPTlRBTCBUQUJVTEFUSU9OOzs7OworMjQwQTtTWU1CT0wgRk9SIExJTkUgRkVFRDtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIExJTkUgRkVFRDs7OzsKKzI0MEI7U1lNQk9MIEZPUiBWRVJUSUNBTCBUQUJVTEFUSU9OO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgVkVSVElDQUwgVEFCVUxBVElPTjs7OzsKKzI0MEM7U1lNQk9MIEZPUiBGT1JNIEZFRUQ7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBGT1JNIEZFRUQ7Ozs7CisyNDBEO1NZTUJPTCBGT1IgQ0FSUklBR0UgUkVUVVJOO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgQ0FSUklBR0UgUkVUVVJOOzs7OworMjQwRTtTWU1CT0wgRk9SIFNISUZUIE9VVDtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFNISUZUIE9VVDs7OzsKKzI0MEY7U1lNQk9MIEZPUiBTSElGVCBJTjtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFNISUZUIElOOzs7OworMjQxMDtTWU1CT0wgRk9SIERBVEEgTElOSyBFU0NBUEU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBEQVRBIExJTksgRVNDQVBFOzs7OworMjQxMTtTWU1CT0wgRk9SIERFVklDRSBDT05UUk9MIE9ORTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIERFVklDRSBDT05UUk9MIE9ORTs7OzsKKzI0MTI7U1lNQk9MIEZPUiBERVZJQ0UgQ09OVFJPTCBUV087U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBERVZJQ0UgQ09OVFJPTCBUV087Ozs7CisyNDEzO1NZTUJPTCBGT1IgREVWSUNFIENPTlRST0wgVEhSRUU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBERVZJQ0UgQ09OVFJPTCBUSFJFRTs7OzsKKzI0MTQ7U1lNQk9MIEZPUiBERVZJQ0UgQ09OVFJPTCBGT1VSO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgREVWSUNFIENPTlRST0wgRk9VUjs7OzsKKzI0MTU7U1lNQk9MIEZPUiBORUdBVElWRSBBQ0tOT1dMRURHRTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIE5FR0FUSVZFIEFDS05PV0xFREdFOzs7OworMjQxNjtTWU1CT0wgRk9SIFNZTkNIUk9OT1VTIElETEU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBTWU5DSFJPTk9VUyBJRExFOzs7OworMjQxNztTWU1CT0wgRk9SIEVORCBPRiBUUkFOU01JU1NJT04gQkxPQ0s7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBFTkQgT0YgVFJBTlNNSVNTSU9OIEJMT0NLOzs7OworMjQxODtTWU1CT0wgRk9SIENBTkNFTDtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIENBTkNFTDs7OzsKKzI0MTk7U1lNQk9MIEZPUiBFTkQgT0YgTUVESVVNO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgRU5EIE9GIE1FRElVTTs7OzsKKzI0MUE7U1lNQk9MIEZPUiBTVUJTVElUVVRFO1NvOzA7T047Ozs7O047R1JBUEhJQyBGT1IgU1VCU1RJVFVURTs7OzsKKzI0MUI7U1lNQk9MIEZPUiBFU0NBUEU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBFU0NBUEU7Ozs7CisyNDFDO1NZTUJPTCBGT1IgRklMRSBTRVBBUkFUT1I7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBGSUxFIFNFUEFSQVRPUjs7OzsKKzI0MUQ7U1lNQk9MIEZPUiBHUk9VUCBTRVBBUkFUT1I7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBHUk9VUCBTRVBBUkFUT1I7Ozs7CisyNDFFO1NZTUJPTCBGT1IgUkVDT1JEIFNFUEFSQVRPUjtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFJFQ09SRCBTRVBBUkFUT1I7Ozs7CisyNDFGO1NZTUJPTCBGT1IgVU5JVCBTRVBBUkFUT1I7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBVTklUIFNFUEFSQVRPUjs7OzsKKzI0MjA7U1lNQk9MIEZPUiBTUEFDRTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIFNQQUNFOzs7OworMjQyMTtTWU1CT0wgRk9SIERFTEVURTtTbzswO09OOzs7OztOO0dSQVBISUMgRk9SIERFTEVURTs7OzsKKzI0MjI7QkxBTksgU1lNQk9MO1NvOzA7T047Ozs7O047QkxBTks7Ozs7CisyNDIzO09QRU4gQk9YO1NvOzA7T047Ozs7O047Ozs7OworMjQyNDtTWU1CT0wgRk9SIE5FV0xJTkU7U287MDtPTjs7Ozs7TjtHUkFQSElDIEZPUiBORVdMSU5FOzs7OworMjQyNTtTWU1CT0wgRk9SIERFTEVURSBGT1JNIFRXTztTbzswO09OOzs7OztOOzs7OzsKKzI0MjY7U1lNQk9MIEZPUiBTVUJTVElUVVRFIEZPUk0gVFdPO1NvOzA7T047Ozs7O047Ozs7OworMjQ0MDtPQ1IgSE9PSztTbzswO09OOzs7OztOOzs7OzsKKzI0NDE7T0NSIENIQUlSO1NvOzA7T047Ozs7O047Ozs7OworMjQ0MjtPQ1IgRk9SSztTbzswO09OOzs7OztOOzs7OzsKKzI0NDM7T0NSIElOVkVSVEVEIEZPUks7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDQ0O09DUiBCRUxUIEJVQ0tMRTtTbzswO09OOzs7OztOOzs7OzsKKzI0NDU7T0NSIEJPVyBUSUU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDQ2O09DUiBCUkFOQ0ggQkFOSyBJREVOVElGSUNBVElPTjtTbzswO09OOzs7OztOOzs7OzsKKzI0NDc7T0NSIEFNT1VOVCBPRiBDSEVDSztTbzswO09OOzs7OztOOzs7OzsKKzI0NDg7T0NSIERBU0g7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDQ5O09DUiBDVVNUT01FUiBBQ0NPVU5UIE5VTUJFUjtTbzswO09OOzs7OztOOzs7OzsKKzI0NEE7T0NSIERPVUJMRSBCQUNLU0xBU0g7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNDYwO0NJUkNMRUQgRElHSVQgT05FO05vOzA7RU47PGNpcmNsZT4gMDAzMTs7MTsxO047Ozs7OworMjQ2MTtDSVJDTEVEIERJR0lUIFRXTztObzswO0VOOzxjaXJjbGU+IDAwMzI7OzI7MjtOOzs7OzsKKzI0NjI7Q0lSQ0xFRCBESUdJVCBUSFJFRTtObzswO0VOOzxjaXJjbGU+IDAwMzM7OzM7MztOOzs7OzsKKzI0NjM7Q0lSQ0xFRCBESUdJVCBGT1VSO05vOzA7RU47PGNpcmNsZT4gMDAzNDs7NDs0O047Ozs7OworMjQ2NDtDSVJDTEVEIERJR0lUIEZJVkU7Tm87MDtFTjs8Y2lyY2xlPiAwMDM1Ozs1OzU7Tjs7Ozs7CisyNDY1O0NJUkNMRUQgRElHSVQgU0lYO05vOzA7RU47PGNpcmNsZT4gMDAzNjs7Njs2O047Ozs7OworMjQ2NjtDSVJDTEVEIERJR0lUIFNFVkVOO05vOzA7RU47PGNpcmNsZT4gMDAzNzs7Nzs3O047Ozs7OworMjQ2NztDSVJDTEVEIERJR0lUIEVJR0hUO05vOzA7RU47PGNpcmNsZT4gMDAzODs7ODs4O047Ozs7OworMjQ2ODtDSVJDTEVEIERJR0lUIE5JTkU7Tm87MDtFTjs8Y2lyY2xlPiAwMDM5Ozs5Ozk7Tjs7Ozs7CisyNDY5O0NJUkNMRUQgTlVNQkVSIFRFTjtObzswO0VOOzxjaXJjbGU+IDAwMzEgMDAzMDs7OzEwO047Ozs7OworMjQ2QTtDSVJDTEVEIE5VTUJFUiBFTEVWRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzE7OzsxMTtOOzs7OzsKKzI0NkI7Q0lSQ0xFRCBOVU1CRVIgVFdFTFZFO05vOzA7RU47PGNpcmNsZT4gMDAzMSAwMDMyOzs7MTI7Tjs7Ozs7CisyNDZDO0NJUkNMRUQgTlVNQkVSIFRISVJURUVOO05vOzA7RU47PGNpcmNsZT4gMDAzMSAwMDMzOzs7MTM7Tjs7Ozs7CisyNDZEO0NJUkNMRUQgTlVNQkVSIEZPVVJURUVOO05vOzA7RU47PGNpcmNsZT4gMDAzMSAwMDM0Ozs7MTQ7Tjs7Ozs7CisyNDZFO0NJUkNMRUQgTlVNQkVSIEZJRlRFRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzU7OzsxNTtOOzs7OzsKKzI0NkY7Q0lSQ0xFRCBOVU1CRVIgU0lYVEVFTjtObzswO0VOOzxjaXJjbGU+IDAwMzEgMDAzNjs7OzE2O047Ozs7OworMjQ3MDtDSVJDTEVEIE5VTUJFUiBTRVZFTlRFRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzc7OzsxNztOOzs7OzsKKzI0NzE7Q0lSQ0xFRCBOVU1CRVIgRUlHSFRFRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzg7OzsxODtOOzs7OzsKKzI0NzI7Q0lSQ0xFRCBOVU1CRVIgTklORVRFRU47Tm87MDtFTjs8Y2lyY2xlPiAwMDMxIDAwMzk7OzsxOTtOOzs7OzsKKzI0NzM7Q0lSQ0xFRCBOVU1CRVIgVFdFTlRZO05vOzA7RU47PGNpcmNsZT4gMDAzMiAwMDMwOzs7MjA7Tjs7Ozs7CisyNDc0O1BBUkVOVEhFU0laRUQgRElHSVQgT05FO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMjk7OzE7MTtOOzs7OzsKKzI0NzU7UEFSRU5USEVTSVpFRCBESUdJVCBUV087Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzIgMDAyOTs7MjsyO047Ozs7OworMjQ3NjtQQVJFTlRIRVNJWkVEIERJR0lUIFRIUkVFO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMzIDAwMjk7OzM7MztOOzs7OzsKKzI0Nzc7UEFSRU5USEVTSVpFRCBESUdJVCBGT1VSO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDM0IDAwMjk7OzQ7NDtOOzs7OzsKKzI0Nzg7UEFSRU5USEVTSVpFRCBESUdJVCBGSVZFO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDM1IDAwMjk7OzU7NTtOOzs7OzsKKzI0Nzk7UEFSRU5USEVTSVpFRCBESUdJVCBTSVg7Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzYgMDAyOTs7Njs2O047Ozs7OworMjQ3QTtQQVJFTlRIRVNJWkVEIERJR0lUIFNFVkVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDM3IDAwMjk7Ozc7NztOOzs7OzsKKzI0N0I7UEFSRU5USEVTSVpFRCBESUdJVCBFSUdIVDtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzOCAwMDI5Ozs4Ozg7Tjs7Ozs7CisyNDdDO1BBUkVOVEhFU0laRUQgRElHSVQgTklORTtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzOSAwMDI5Ozs5Ozk7Tjs7Ozs7CisyNDdEO1BBUkVOVEhFU0laRUQgTlVNQkVSIFRFTjtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMSAwMDMwIDAwMjk7OzsxMDtOOzs7OzsKKzI0N0U7UEFSRU5USEVTSVpFRCBOVU1CRVIgRUxFVkVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzEgMDAyOTs7OzExO047Ozs7OworMjQ3RjtQQVJFTlRIRVNJWkVEIE5VTUJFUiBUV0VMVkU7Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzEgMDAzMiAwMDI5Ozs7MTI7Tjs7Ozs7CisyNDgwO1BBUkVOVEhFU0laRUQgTlVNQkVSIFRISVJURUVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzMgMDAyOTs7OzEzO047Ozs7OworMjQ4MTtQQVJFTlRIRVNJWkVEIE5VTUJFUiBGT1VSVEVFTjtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMSAwMDM0IDAwMjk7OzsxNDtOOzs7OzsKKzI0ODI7UEFSRU5USEVTSVpFRCBOVU1CRVIgRklGVEVFTjtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMSAwMDM1IDAwMjk7OzsxNTtOOzs7OzsKKzI0ODM7UEFSRU5USEVTSVpFRCBOVU1CRVIgU0lYVEVFTjtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMSAwMDM2IDAwMjk7OzsxNjtOOzs7OzsKKzI0ODQ7UEFSRU5USEVTSVpFRCBOVU1CRVIgU0VWRU5URUVOO05vOzA7RU47PGNvbXBhdD4gMDAyOCAwMDMxIDAwMzcgMDAyOTs7OzE3O047Ozs7OworMjQ4NTtQQVJFTlRIRVNJWkVEIE5VTUJFUiBFSUdIVEVFTjtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMSAwMDM4IDAwMjk7OzsxODtOOzs7OzsKKzI0ODY7UEFSRU5USEVTSVpFRCBOVU1CRVIgTklORVRFRU47Tm87MDtFTjs8Y29tcGF0PiAwMDI4IDAwMzEgMDAzOSAwMDI5Ozs7MTk7Tjs7Ozs7CisyNDg3O1BBUkVOVEhFU0laRUQgTlVNQkVSIFRXRU5UWTtObzswO0VOOzxjb21wYXQ+IDAwMjggMDAzMiAwMDMwIDAwMjk7OzsyMDtOOzs7OzsKKzI0ODg7RElHSVQgT05FIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzEgMDAyRTs7MTsxO047RElHSVQgT05FIFBFUklPRDs7OzsKKzI0ODk7RElHSVQgVFdPIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzIgMDAyRTs7MjsyO047RElHSVQgVFdPIFBFUklPRDs7OzsKKzI0OEE7RElHSVQgVEhSRUUgRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMyAwMDJFOzszOzM7TjtESUdJVCBUSFJFRSBQRVJJT0Q7Ozs7CisyNDhCO0RJR0lUIEZPVVIgRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzNCAwMDJFOzs0OzQ7TjtESUdJVCBGT1VSIFBFUklPRDs7OzsKKzI0OEM7RElHSVQgRklWRSBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDM1IDAwMkU7OzU7NTtOO0RJR0lUIEZJVkUgUEVSSU9EOzs7OworMjQ4RDtESUdJVCBTSVggRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzNiAwMDJFOzs2OzY7TjtESUdJVCBTSVggUEVSSU9EOzs7OworMjQ4RTtESUdJVCBTRVZFTiBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDM3IDAwMkU7Ozc7NztOO0RJR0lUIFNFVkVOIFBFUklPRDs7OzsKKzI0OEY7RElHSVQgRUlHSFQgRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzOCAwMDJFOzs4Ozg7TjtESUdJVCBFSUdIVCBQRVJJT0Q7Ozs7CisyNDkwO0RJR0lUIE5JTkUgRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzOSAwMDJFOzs5Ozk7TjtESUdJVCBOSU5FIFBFUklPRDs7OzsKKzI0OTE7TlVNQkVSIFRFTiBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDMxIDAwMzAgMDAyRTs7OzEwO047TlVNQkVSIFRFTiBQRVJJT0Q7Ozs7CisyNDkyO05VTUJFUiBFTEVWRU4gRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDMxIDAwMkU7OzsxMTtOO05VTUJFUiBFTEVWRU4gUEVSSU9EOzs7OworMjQ5MztOVU1CRVIgVFdFTFZFIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzEgMDAzMiAwMDJFOzs7MTI7TjtOVU1CRVIgVFdFTFZFIFBFUklPRDs7OzsKKzI0OTQ7TlVNQkVSIFRISVJURUVOIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzEgMDAzMyAwMDJFOzs7MTM7TjtOVU1CRVIgVEhJUlRFRU4gUEVSSU9EOzs7OworMjQ5NTtOVU1CRVIgRk9VUlRFRU4gRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDM0IDAwMkU7OzsxNDtOO05VTUJFUiBGT1VSVEVFTiBQRVJJT0Q7Ozs7CisyNDk2O05VTUJFUiBGSUZURUVOIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzEgMDAzNSAwMDJFOzs7MTU7TjtOVU1CRVIgRklGVEVFTiBQRVJJT0Q7Ozs7CisyNDk3O05VTUJFUiBTSVhURUVOIEZVTEwgU1RPUDtObzswO0VOOzxjb21wYXQ+IDAwMzEgMDAzNiAwMDJFOzs7MTY7TjtOVU1CRVIgU0lYVEVFTiBQRVJJT0Q7Ozs7CisyNDk4O05VTUJFUiBTRVZFTlRFRU4gRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDM3IDAwMkU7OzsxNztOO05VTUJFUiBTRVZFTlRFRU4gUEVSSU9EOzs7OworMjQ5OTtOVU1CRVIgRUlHSFRFRU4gRlVMTCBTVE9QO05vOzA7RU47PGNvbXBhdD4gMDAzMSAwMDM4IDAwMkU7OzsxODtOO05VTUJFUiBFSUdIVEVFTiBQRVJJT0Q7Ozs7CisyNDlBO05VTUJFUiBOSU5FVEVFTiBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDMxIDAwMzkgMDAyRTs7OzE5O047TlVNQkVSIE5JTkVURUVOIFBFUklPRDs7OzsKKzI0OUI7TlVNQkVSIFRXRU5UWSBGVUxMIFNUT1A7Tm87MDtFTjs8Y29tcGF0PiAwMDMyIDAwMzAgMDAyRTs7OzIwO047TlVNQkVSIFRXRU5UWSBQRVJJT0Q7Ozs7CisyNDlDO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMDA2MSAwMDI5Ozs7O047Ozs7OworMjQ5RDtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBCO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNjIgMDAyOTs7OztOOzs7OzsKKzI0OUU7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgQztTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDYzIDAwMjk7Ozs7Tjs7Ozs7CisyNDlGO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEQ7U287MDtMOzxjb21wYXQ+IDAwMjggMDA2NCAwMDI5Ozs7O047Ozs7OworMjRBMDtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBFO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNjUgMDAyOTs7OztOOzs7OzsKKzI0QTE7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgRjtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDY2IDAwMjk7Ozs7Tjs7Ozs7CisyNEEyO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEc7U287MDtMOzxjb21wYXQ+IDAwMjggMDA2NyAwMDI5Ozs7O047Ozs7OworMjRBMztQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBIO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNjggMDAyOTs7OztOOzs7OzsKKzI0QTQ7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgSTtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDY5IDAwMjk7Ozs7Tjs7Ozs7CisyNEE1O1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIEo7U287MDtMOzxjb21wYXQ+IDAwMjggMDA2QSAwMDI5Ozs7O047Ozs7OworMjRBNjtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBLO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNkIgMDAyOTs7OztOOzs7OzsKKzI0QTc7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgTDtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDZDIDAwMjk7Ozs7Tjs7Ozs7CisyNEE4O1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIE07U287MDtMOzxjb21wYXQ+IDAwMjggMDA2RCAwMDI5Ozs7O047Ozs7OworMjRBOTtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBOO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNkUgMDAyOTs7OztOOzs7OzsKKzI0QUE7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgTztTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDZGIDAwMjk7Ozs7Tjs7Ozs7CisyNEFCO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFA7U287MDtMOzxjb21wYXQ+IDAwMjggMDA3MCAwMDI5Ozs7O047Ozs7OworMjRBQztQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBRO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNzEgMDAyOTs7OztOOzs7OzsKKzI0QUQ7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgUjtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDcyIDAwMjk7Ozs7Tjs7Ozs7CisyNEFFO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFM7U287MDtMOzxjb21wYXQ+IDAwMjggMDA3MyAwMDI5Ozs7O047Ozs7OworMjRBRjtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBUO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNzQgMDAyOTs7OztOOzs7OzsKKzI0QjA7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgVTtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDc1IDAwMjk7Ozs7Tjs7Ozs7CisyNEIxO1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFY7U287MDtMOzxjb21wYXQ+IDAwMjggMDA3NiAwMDI5Ozs7O047Ozs7OworMjRCMjtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBXO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwNzcgMDAyOTs7OztOOzs7OzsKKzI0QjM7UEFSRU5USEVTSVpFRCBMQVRJTiBTTUFMTCBMRVRURVIgWDtTbzswO0w7PGNvbXBhdD4gMDAyOCAwMDc4IDAwMjk7Ozs7Tjs7Ozs7CisyNEI0O1BBUkVOVEhFU0laRUQgTEFUSU4gU01BTEwgTEVUVEVSIFk7U287MDtMOzxjb21wYXQ+IDAwMjggMDA3OSAwMDI5Ozs7O047Ozs7OworMjRCNTtQQVJFTlRIRVNJWkVEIExBVElOIFNNQUxMIExFVFRFUiBaO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDAwN0EgMDAyOTs7OztOOzs7OzsKKzI0QjY7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBBO1NvOzA7TDs8Y2lyY2xlPiAwMDQxOzs7O047Ozs7MjREMDsKKzI0Qjc7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBCO1NvOzA7TDs8Y2lyY2xlPiAwMDQyOzs7O047Ozs7MjREMTsKKzI0Qjg7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBDO1NvOzA7TDs8Y2lyY2xlPiAwMDQzOzs7O047Ozs7MjREMjsKKzI0Qjk7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBEO1NvOzA7TDs8Y2lyY2xlPiAwMDQ0Ozs7O047Ozs7MjREMzsKKzI0QkE7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBFO1NvOzA7TDs8Y2lyY2xlPiAwMDQ1Ozs7O047Ozs7MjRENDsKKzI0QkI7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBGO1NvOzA7TDs8Y2lyY2xlPiAwMDQ2Ozs7O047Ozs7MjRENTsKKzI0QkM7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBHO1NvOzA7TDs8Y2lyY2xlPiAwMDQ3Ozs7O047Ozs7MjRENjsKKzI0QkQ7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBIO1NvOzA7TDs8Y2lyY2xlPiAwMDQ4Ozs7O047Ozs7MjRENzsKKzI0QkU7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBJO1NvOzA7TDs8Y2lyY2xlPiAwMDQ5Ozs7O047Ozs7MjREODsKKzI0QkY7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBKO1NvOzA7TDs8Y2lyY2xlPiAwMDRBOzs7O047Ozs7MjREOTsKKzI0QzA7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBLO1NvOzA7TDs8Y2lyY2xlPiAwMDRCOzs7O047Ozs7MjREQTsKKzI0QzE7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBMO1NvOzA7TDs8Y2lyY2xlPiAwMDRDOzs7O047Ozs7MjREQjsKKzI0QzI7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBNO1NvOzA7TDs8Y2lyY2xlPiAwMDREOzs7O047Ozs7MjREQzsKKzI0QzM7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBOO1NvOzA7TDs8Y2lyY2xlPiAwMDRFOzs7O047Ozs7MjRERDsKKzI0QzQ7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBPO1NvOzA7TDs8Y2lyY2xlPiAwMDRGOzs7O047Ozs7MjRERTsKKzI0QzU7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBQO1NvOzA7TDs8Y2lyY2xlPiAwMDUwOzs7O047Ozs7MjRERjsKKzI0QzY7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBRO1NvOzA7TDs8Y2lyY2xlPiAwMDUxOzs7O047Ozs7MjRFMDsKKzI0Qzc7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBSO1NvOzA7TDs8Y2lyY2xlPiAwMDUyOzs7O047Ozs7MjRFMTsKKzI0Qzg7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBTO1NvOzA7TDs8Y2lyY2xlPiAwMDUzOzs7O047Ozs7MjRFMjsKKzI0Qzk7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBUO1NvOzA7TDs8Y2lyY2xlPiAwMDU0Ozs7O047Ozs7MjRFMzsKKzI0Q0E7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBVO1NvOzA7TDs8Y2lyY2xlPiAwMDU1Ozs7O047Ozs7MjRFNDsKKzI0Q0I7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBWO1NvOzA7TDs8Y2lyY2xlPiAwMDU2Ozs7O047Ozs7MjRFNTsKKzI0Q0M7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBXO1NvOzA7TDs8Y2lyY2xlPiAwMDU3Ozs7O047Ozs7MjRFNjsKKzI0Q0Q7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBYO1NvOzA7TDs8Y2lyY2xlPiAwMDU4Ozs7O047Ozs7MjRFNzsKKzI0Q0U7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBZO1NvOzA7TDs8Y2lyY2xlPiAwMDU5Ozs7O047Ozs7MjRFODsKKzI0Q0Y7Q0lSQ0xFRCBMQVRJTiBDQVBJVEFMIExFVFRFUiBaO1NvOzA7TDs8Y2lyY2xlPiAwMDVBOzs7O047Ozs7MjRFOTsKKzI0RDA7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgQTtTbzswO0w7PGNpcmNsZT4gMDA2MTs7OztOOzs7MjRCNjs7MjRCNgorMjREMTtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBCO1NvOzA7TDs8Y2lyY2xlPiAwMDYyOzs7O047OzsyNEI3OzsyNEI3CisyNEQyO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEM7U287MDtMOzxjaXJjbGU+IDAwNjM7Ozs7Tjs7OzI0Qjg7OzI0QjgKKzI0RDM7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgRDtTbzswO0w7PGNpcmNsZT4gMDA2NDs7OztOOzs7MjRCOTs7MjRCOQorMjRENDtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBFO1NvOzA7TDs8Y2lyY2xlPiAwMDY1Ozs7O047OzsyNEJBOzsyNEJBCisyNEQ1O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEY7U287MDtMOzxjaXJjbGU+IDAwNjY7Ozs7Tjs7OzI0QkI7OzI0QkIKKzI0RDY7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgRztTbzswO0w7PGNpcmNsZT4gMDA2Nzs7OztOOzs7MjRCQzs7MjRCQworMjRENztDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBIO1NvOzA7TDs8Y2lyY2xlPiAwMDY4Ozs7O047OzsyNEJEOzsyNEJECisyNEQ4O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEk7U287MDtMOzxjaXJjbGU+IDAwNjk7Ozs7Tjs7OzI0QkU7OzI0QkUKKzI0RDk7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgSjtTbzswO0w7PGNpcmNsZT4gMDA2QTs7OztOOzs7MjRCRjs7MjRCRgorMjREQTtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBLO1NvOzA7TDs8Y2lyY2xlPiAwMDZCOzs7O047OzsyNEMwOzsyNEMwCisyNERCO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIEw7U287MDtMOzxjaXJjbGU+IDAwNkM7Ozs7Tjs7OzI0QzE7OzI0QzEKKzI0REM7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgTTtTbzswO0w7PGNpcmNsZT4gMDA2RDs7OztOOzs7MjRDMjs7MjRDMgorMjRERDtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBOO1NvOzA7TDs8Y2lyY2xlPiAwMDZFOzs7O047OzsyNEMzOzsyNEMzCisyNERFO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIE87U287MDtMOzxjaXJjbGU+IDAwNkY7Ozs7Tjs7OzI0QzQ7OzI0QzQKKzI0REY7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgUDtTbzswO0w7PGNpcmNsZT4gMDA3MDs7OztOOzs7MjRDNTs7MjRDNQorMjRFMDtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBRO1NvOzA7TDs8Y2lyY2xlPiAwMDcxOzs7O047OzsyNEM2OzsyNEM2CisyNEUxO0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFI7U287MDtMOzxjaXJjbGU+IDAwNzI7Ozs7Tjs7OzI0Qzc7OzI0QzcKKzI0RTI7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgUztTbzswO0w7PGNpcmNsZT4gMDA3Mzs7OztOOzs7MjRDODs7MjRDOAorMjRFMztDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBUO1NvOzA7TDs8Y2lyY2xlPiAwMDc0Ozs7O047OzsyNEM5OzsyNEM5CisyNEU0O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFU7U287MDtMOzxjaXJjbGU+IDAwNzU7Ozs7Tjs7OzI0Q0E7OzI0Q0EKKzI0RTU7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgVjtTbzswO0w7PGNpcmNsZT4gMDA3Njs7OztOOzs7MjRDQjs7MjRDQgorMjRFNjtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBXO1NvOzA7TDs8Y2lyY2xlPiAwMDc3Ozs7O047OzsyNENDOzsyNENDCisyNEU3O0NJUkNMRUQgTEFUSU4gU01BTEwgTEVUVEVSIFg7U287MDtMOzxjaXJjbGU+IDAwNzg7Ozs7Tjs7OzI0Q0Q7OzI0Q0QKKzI0RTg7Q0lSQ0xFRCBMQVRJTiBTTUFMTCBMRVRURVIgWTtTbzswO0w7PGNpcmNsZT4gMDA3OTs7OztOOzs7MjRDRTs7MjRDRQorMjRFOTtDSVJDTEVEIExBVElOIFNNQUxMIExFVFRFUiBaO1NvOzA7TDs8Y2lyY2xlPiAwMDdBOzs7O047OzsyNENGOzsyNENGCisyNEVBO0NJUkNMRUQgRElHSVQgWkVSTztObzswO0VOOzxjaXJjbGU+IDAwMzA7OzA7MDtOOzs7OzsKKzI1MDA7Qk9YIERSQVdJTkdTIExJR0hUIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBIT1JJWk9OVEFMOzs7OworMjUwMTtCT1ggRFJBV0lOR1MgSEVBVlkgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIEhPUklaT05UQUw7Ozs7CisyNTAyO0JPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFZFUlRJQ0FMOzs7OworMjUwMztCT1ggRFJBV0lOR1MgSEVBVlkgVkVSVElDQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBWRVJUSUNBTDs7OzsKKzI1MDQ7Qk9YIERSQVdJTkdTIExJR0hUIFRSSVBMRSBEQVNIIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBUUklQTEUgREFTSCBIT1JJWk9OVEFMOzs7OworMjUwNTtCT1ggRFJBV0lOR1MgSEVBVlkgVFJJUExFIERBU0ggSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFRSSVBMRSBEQVNIIEhPUklaT05UQUw7Ozs7CisyNTA2O0JPWCBEUkFXSU5HUyBMSUdIVCBUUklQTEUgREFTSCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFRSSVBMRSBEQVNIIFZFUlRJQ0FMOzs7OworMjUwNztCT1ggRFJBV0lOR1MgSEVBVlkgVFJJUExFIERBU0ggVkVSVElDQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBUUklQTEUgREFTSCBWRVJUSUNBTDs7OzsKKzI1MDg7Qk9YIERSQVdJTkdTIExJR0hUIFFVQURSVVBMRSBEQVNIIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBRVUFEUlVQTEUgREFTSCBIT1JJWk9OVEFMOzs7OworMjUwOTtCT1ggRFJBV0lOR1MgSEVBVlkgUVVBRFJVUExFIERBU0ggSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFFVQURSVVBMRSBEQVNIIEhPUklaT05UQUw7Ozs7CisyNTBBO0JPWCBEUkFXSU5HUyBMSUdIVCBRVUFEUlVQTEUgREFTSCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFFVQURSVVBMRSBEQVNIIFZFUlRJQ0FMOzs7OworMjUwQjtCT1ggRFJBV0lOR1MgSEVBVlkgUVVBRFJVUExFIERBU0ggVkVSVElDQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBRVUFEUlVQTEUgREFTSCBWRVJUSUNBTDs7OzsKKzI1MEM7Qk9YIERSQVdJTkdTIExJR0hUIERPV04gQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgRE9XTiBBTkQgUklHSFQ7Ozs7CisyNTBEO0JPWCBEUkFXSU5HUyBET1dOIExJR0hUIEFORCBSSUdIVCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gTElHSFQgQU5EIFJJR0hUIEhFQVZZOzs7OworMjUwRTtCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgUklHSFQgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIEhFQVZZIEFORCBSSUdIVCBMSUdIVDs7OzsKKzI1MEY7Qk9YIERSQVdJTkdTIEhFQVZZIERPV04gQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9XTiBBTkQgUklHSFQ7Ozs7CisyNTEwO0JPWCBEUkFXSU5HUyBMSUdIVCBET1dOIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgRE9XTiBBTkQgTEVGVDs7OzsKKzI1MTE7Qk9YIERSQVdJTkdTIERPV04gTElHSFQgQU5EIExFRlQgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIExJR0hUIEFORCBMRUZUIEhFQVZZOzs7OworMjUxMjtCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgTEVGVCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gSEVBVlkgQU5EIExFRlQgTElHSFQ7Ozs7CisyNTEzO0JPWCBEUkFXSU5HUyBIRUFWWSBET1dOIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9XTiBBTkQgTEVGVDs7OzsKKzI1MTQ7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFVQIEFORCBSSUdIVDs7OzsKKzI1MTU7Qk9YIERSQVdJTkdTIFVQIExJR0hUIEFORCBSSUdIVCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBSSUdIVCBIRUFWWTs7OzsKKzI1MTY7Qk9YIERSQVdJTkdTIFVQIEhFQVZZIEFORCBSSUdIVCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFVQIEhFQVZZIEFORCBSSUdIVCBMSUdIVDs7OzsKKzI1MTc7Qk9YIERSQVdJTkdTIEhFQVZZIFVQIEFORCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFVQIEFORCBSSUdIVDs7OzsKKzI1MTg7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgVVAgQU5EIExFRlQ7Ozs7CisyNTE5O0JPWCBEUkFXSU5HUyBVUCBMSUdIVCBBTkQgTEVGVCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBMRUZUIEhFQVZZOzs7OworMjUxQTtCT1ggRFJBV0lOR1MgVVAgSEVBVlkgQU5EIExFRlQgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBIRUFWWSBBTkQgTEVGVCBMSUdIVDs7OzsKKzI1MUI7Qk9YIERSQVdJTkdTIEhFQVZZIFVQIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgVVAgQU5EIExFRlQ7Ozs7CisyNTFDO0JPWCBEUkFXSU5HUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBWRVJUSUNBTCBBTkQgUklHSFQ7Ozs7CisyNTFEO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBMSUdIVCBBTkQgUklHSFQgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBMSUdIVCBBTkQgUklHSFQgSEVBVlk7Ozs7CisyNTFFO0JPWCBEUkFXSU5HUyBVUCBIRUFWWSBBTkQgUklHSFQgRE9XTiBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFVQIEhFQVZZIEFORCBSSUdIVCBET1dOIExJR0hUOzs7OworMjUxRjtCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgUklHSFQgVVAgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIEhFQVZZIEFORCBSSUdIVCBVUCBMSUdIVDs7OzsKKzI1MjA7Qk9YIERSQVdJTkdTIFZFUlRJQ0FMIEhFQVZZIEFORCBSSUdIVCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIEhFQVZZIEFORCBSSUdIVCBMSUdIVDs7OzsKKzI1MjE7Qk9YIERSQVdJTkdTIERPV04gTElHSFQgQU5EIFJJR0hUIFVQIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBMSUdIVCBBTkQgUklHSFQgVVAgSEVBVlk7Ozs7CisyNTIyO0JPWCBEUkFXSU5HUyBVUCBMSUdIVCBBTkQgUklHSFQgRE9XTiBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBSSUdIVCBET1dOIEhFQVZZOzs7OworMjUyMztCT1ggRFJBV0lOR1MgSEVBVlkgVkVSVElDQUwgQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgVkVSVElDQUwgQU5EIFJJR0hUOzs7OworMjUyNDtCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBWRVJUSUNBTCBBTkQgTEVGVDs7OzsKKzI1MjU7Qk9YIERSQVdJTkdTIFZFUlRJQ0FMIExJR0hUIEFORCBMRUZUIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgVkVSVElDQUwgTElHSFQgQU5EIExFRlQgSEVBVlk7Ozs7CisyNTI2O0JPWCBEUkFXSU5HUyBVUCBIRUFWWSBBTkQgTEVGVCBET1dOIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgVVAgSEVBVlkgQU5EIExFRlQgRE9XTiBMSUdIVDs7OzsKKzI1Mjc7Qk9YIERSQVdJTkdTIERPV04gSEVBVlkgQU5EIExFRlQgVVAgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIEhFQVZZIEFORCBMRUZUIFVQIExJR0hUOzs7OworMjUyODtCT1ggRFJBV0lOR1MgVkVSVElDQUwgSEVBVlkgQU5EIExFRlQgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBIRUFWWSBBTkQgTEVGVCBMSUdIVDs7OzsKKzI1Mjk7Qk9YIERSQVdJTkdTIERPV04gTElHSFQgQU5EIExFRlQgVVAgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIExJR0hUIEFORCBMRUZUIFVQIEhFQVZZOzs7OworMjUyQTtCT1ggRFJBV0lOR1MgVVAgTElHSFQgQU5EIExFRlQgRE9XTiBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIExJR0hUIEFORCBMRUZUIERPV04gSEVBVlk7Ozs7CisyNTJCO0JPWCBEUkFXSU5HUyBIRUFWWSBWRVJUSUNBTCBBTkQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFZFUlRJQ0FMIEFORCBMRUZUOzs7OworMjUyQztCT1ggRFJBV0lOR1MgTElHSFQgRE9XTiBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERPV04gQU5EIEhPUklaT05UQUw7Ozs7CisyNTJEO0JPWCBEUkFXSU5HUyBMRUZUIEhFQVZZIEFORCBSSUdIVCBET1dOIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBIRUFWWSBBTkQgUklHSFQgRE9XTiBMSUdIVDs7OzsKKzI1MkU7Qk9YIERSQVdJTkdTIFJJR0hUIEhFQVZZIEFORCBMRUZUIERPV04gTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBIRUFWWSBBTkQgTEVGVCBET1dOIExJR0hUOzs7OworMjUyRjtCT1ggRFJBV0lOR1MgRE9XTiBMSUdIVCBBTkQgSE9SSVpPTlRBTCBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gTElHSFQgQU5EIEhPUklaT05UQUwgSEVBVlk7Ozs7CisyNTMwO0JPWCBEUkFXSU5HUyBET1dOIEhFQVZZIEFORCBIT1JJWk9OVEFMIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBIRUFWWSBBTkQgSE9SSVpPTlRBTCBMSUdIVDs7OzsKKzI1MzE7Qk9YIERSQVdJTkdTIFJJR0hUIExJR0hUIEFORCBMRUZUIERPV04gSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBMSUdIVCBBTkQgTEVGVCBET1dOIEhFQVZZOzs7OworMjUzMjtCT1ggRFJBV0lOR1MgTEVGVCBMSUdIVCBBTkQgUklHSFQgRE9XTiBIRUFWWTtTbzswO09OOzs7OztOO0ZPUk1TIExFRlQgTElHSFQgQU5EIFJJR0hUIERPV04gSEVBVlk7Ozs7CisyNTMzO0JPWCBEUkFXSU5HUyBIRUFWWSBET1dOIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9XTiBBTkQgSE9SSVpPTlRBTDs7OzsKKzI1MzQ7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgVVAgQU5EIEhPUklaT05UQUw7Ozs7CisyNTM1O0JPWCBEUkFXSU5HUyBMRUZUIEhFQVZZIEFORCBSSUdIVCBVUCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExFRlQgSEVBVlkgQU5EIFJJR0hUIFVQIExJR0hUOzs7OworMjUzNjtCT1ggRFJBV0lOR1MgUklHSFQgSEVBVlkgQU5EIExFRlQgVVAgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBIRUFWWSBBTkQgTEVGVCBVUCBMSUdIVDs7OzsKKzI1Mzc7Qk9YIERSQVdJTkdTIFVQIExJR0hUIEFORCBIT1JJWk9OVEFMIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgVVAgTElHSFQgQU5EIEhPUklaT05UQUwgSEVBVlk7Ozs7CisyNTM4O0JPWCBEUkFXSU5HUyBVUCBIRUFWWSBBTkQgSE9SSVpPTlRBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFVQIEhFQVZZIEFORCBIT1JJWk9OVEFMIExJR0hUOzs7OworMjUzOTtCT1ggRFJBV0lOR1MgUklHSFQgTElHSFQgQU5EIExFRlQgVVAgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBMSUdIVCBBTkQgTEVGVCBVUCBIRUFWWTs7OzsKKzI1M0E7Qk9YIERSQVdJTkdTIExFRlQgTElHSFQgQU5EIFJJR0hUIFVQIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBMSUdIVCBBTkQgUklHSFQgVVAgSEVBVlk7Ozs7CisyNTNCO0JPWCBEUkFXSU5HUyBIRUFWWSBVUCBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFVQIEFORCBIT1JJWk9OVEFMOzs7OworMjUzQztCT1ggRFJBV0lOR1MgTElHSFQgVkVSVElDQUwgQU5EIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDs7OzsKKzI1M0Q7Qk9YIERSQVdJTkdTIExFRlQgSEVBVlkgQU5EIFJJR0hUIFZFUlRJQ0FMIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBIRUFWWSBBTkQgUklHSFQgVkVSVElDQUwgTElHSFQ7Ozs7CisyNTNFO0JPWCBEUkFXSU5HUyBSSUdIVCBIRUFWWSBBTkQgTEVGVCBWRVJUSUNBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFJJR0hUIEhFQVZZIEFORCBMRUZUIFZFUlRJQ0FMIExJR0hUOzs7OworMjUzRjtCT1ggRFJBV0lOR1MgVkVSVElDQUwgTElHSFQgQU5EIEhPUklaT05UQUwgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBMSUdIVCBBTkQgSE9SSVpPTlRBTCBIRUFWWTs7OzsKKzI1NDA7Qk9YIERSQVdJTkdTIFVQIEhFQVZZIEFORCBET1dOIEhPUklaT05UQUwgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBIRUFWWSBBTkQgRE9XTiBIT1JJWk9OVEFMIExJR0hUOzs7OworMjU0MTtCT1ggRFJBV0lOR1MgRE9XTiBIRUFWWSBBTkQgVVAgSE9SSVpPTlRBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gSEVBVlkgQU5EIFVQIEhPUklaT05UQUwgTElHSFQ7Ozs7CisyNTQyO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBIRUFWWSBBTkQgSE9SSVpPTlRBTCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIEhFQVZZIEFORCBIT1JJWk9OVEFMIExJR0hUOzs7OworMjU0MztCT1ggRFJBV0lOR1MgTEVGVCBVUCBIRUFWWSBBTkQgUklHSFQgRE9XTiBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExFRlQgVVAgSEVBVlkgQU5EIFJJR0hUIERPV04gTElHSFQ7Ozs7CisyNTQ0O0JPWCBEUkFXSU5HUyBSSUdIVCBVUCBIRUFWWSBBTkQgTEVGVCBET1dOIExJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgUklHSFQgVVAgSEVBVlkgQU5EIExFRlQgRE9XTiBMSUdIVDs7OzsKKzI1NDU7Qk9YIERSQVdJTkdTIExFRlQgRE9XTiBIRUFWWSBBTkQgUklHSFQgVVAgTElHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMRUZUIERPV04gSEVBVlkgQU5EIFJJR0hUIFVQIExJR0hUOzs7OworMjU0NjtCT1ggRFJBV0lOR1MgUklHSFQgRE9XTiBIRUFWWSBBTkQgTEVGVCBVUCBMSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIFJJR0hUIERPV04gSEVBVlkgQU5EIExFRlQgVVAgTElHSFQ7Ozs7CisyNTQ3O0JPWCBEUkFXSU5HUyBET1dOIExJR0hUIEFORCBVUCBIT1JJWk9OVEFMIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgRE9XTiBMSUdIVCBBTkQgVVAgSE9SSVpPTlRBTCBIRUFWWTs7OzsKKzI1NDg7Qk9YIERSQVdJTkdTIFVQIExJR0hUIEFORCBET1dOIEhPUklaT05UQUwgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBMSUdIVCBBTkQgRE9XTiBIT1JJWk9OVEFMIEhFQVZZOzs7OworMjU0OTtCT1ggRFJBV0lOR1MgUklHSFQgTElHSFQgQU5EIExFRlQgVkVSVElDQUwgSEVBVlk7U287MDtPTjs7Ozs7TjtGT1JNUyBSSUdIVCBMSUdIVCBBTkQgTEVGVCBWRVJUSUNBTCBIRUFWWTs7OzsKKzI1NEE7Qk9YIERSQVdJTkdTIExFRlQgTElHSFQgQU5EIFJJR0hUIFZFUlRJQ0FMIEhFQVZZO1NvOzA7T047Ozs7O047Rk9STVMgTEVGVCBMSUdIVCBBTkQgUklHSFQgVkVSVElDQUwgSEVBVlk7Ozs7CisyNTRCO0JPWCBEUkFXSU5HUyBIRUFWWSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFZFUlRJQ0FMIEFORCBIT1JJWk9OVEFMOzs7OworMjU0QztCT1ggRFJBV0lOR1MgTElHSFQgRE9VQkxFIERBU0ggSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERPVUJMRSBEQVNIIEhPUklaT05UQUw7Ozs7CisyNTREO0JPWCBEUkFXSU5HUyBIRUFWWSBET1VCTEUgREFTSCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgSEVBVlkgRE9VQkxFIERBU0ggSE9SSVpPTlRBTDs7OzsKKzI1NEU7Qk9YIERSQVdJTkdTIExJR0hUIERPVUJMRSBEQVNIIFZFUlRJQ0FMO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgRE9VQkxFIERBU0ggVkVSVElDQUw7Ozs7CisyNTRGO0JPWCBEUkFXSU5HUyBIRUFWWSBET1VCTEUgREFTSCBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIERPVUJMRSBEQVNIIFZFUlRJQ0FMOzs7OworMjU1MDtCT1ggRFJBV0lOR1MgRE9VQkxFIEhPUklaT05UQUw7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgSE9SSVpPTlRBTDs7OzsKKzI1NTE7Qk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBWRVJUSUNBTDs7OzsKKzI1NTI7Qk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBSSUdIVCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFOzs7OworMjU1MztCT1ggRFJBV0lOR1MgRE9XTiBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gRE9VQkxFIEFORCBSSUdIVCBTSU5HTEU7Ozs7CisyNTU0O0JPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgRE9XTiBBTkQgUklHSFQ7Ozs7CisyNTU1O0JPWCBEUkFXSU5HUyBET1dOIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7Ozs7CisyNTU2O0JPWCBEUkFXSU5HUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBET1dOIERPVUJMRSBBTkQgTEVGVCBTSU5HTEU7Ozs7CisyNTU3O0JPWCBEUkFXSU5HUyBET1VCTEUgRE9XTiBBTkQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBET1dOIEFORCBMRUZUOzs7OworMjU1ODtCT1ggRFJBV0lOR1MgVVAgU0lOR0xFIEFORCBSSUdIVCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRTs7OzsKKzI1NTk7Qk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgUklHSFQgU0lOR0xFO1NvOzA7T047Ozs7O047Rk9STVMgVVAgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEU7Ozs7CisyNTVBO0JPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgRE9VQkxFIFVQIEFORCBSSUdIVDs7OzsKKzI1NUI7Qk9YIERSQVdJTkdTIFVQIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBTSU5HTEUgQU5EIExFRlQgRE9VQkxFOzs7OworMjU1QztCT1ggRFJBV0lOR1MgVVAgRE9VQkxFIEFORCBMRUZUIFNJTkdMRTtTbzswO09OOzs7OztOO0ZPUk1TIFVQIERPVUJMRSBBTkQgTEVGVCBTSU5HTEU7Ozs7CisyNTVEO0JPWCBEUkFXSU5HUyBET1VCTEUgVVAgQU5EIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgVVAgQU5EIExFRlQ7Ozs7CisyNTVFO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBTSU5HTEUgQU5EIFJJR0hUIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIFNJTkdMRSBBTkQgUklHSFQgRE9VQkxFOzs7OworMjU1RjtCT1ggRFJBV0lOR1MgVkVSVElDQUwgRE9VQkxFIEFORCBSSUdIVCBTSU5HTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBWRVJUSUNBTCBET1VCTEUgQU5EIFJJR0hUIFNJTkdMRTs7OzsKKzI1NjA7Qk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBET1VCTEUgVkVSVElDQUwgQU5EIFJJR0hUOzs7OworMjU2MTtCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBMRUZUIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIFNJTkdMRSBBTkQgTEVGVCBET1VCTEU7Ozs7CisyNTYyO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIExFRlQgU0lOR0xFO1NvOzA7T047Ozs7O047Rk9STVMgVkVSVElDQUwgRE9VQkxFIEFORCBMRUZUIFNJTkdMRTs7OzsKKzI1NjM7Qk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBWRVJUSUNBTCBBTkQgTEVGVDs7OzsKKzI1NjQ7Qk9YIERSQVdJTkdTIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTs7OzsKKzI1NjU7Qk9YIERSQVdJTkdTIERPV04gRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRTtTbzswO09OOzs7OztOO0ZPUk1TIERPV04gRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRTs7OzsKKzI1NjY7Qk9YIERSQVdJTkdTIERPVUJMRSBET1dOIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgRE9VQkxFIERPV04gQU5EIEhPUklaT05UQUw7Ozs7CisyNTY3O0JPWCBEUkFXSU5HUyBVUCBTSU5HTEUgQU5EIEhPUklaT05UQUwgRE9VQkxFO1NvOzA7T047Ozs7O047Rk9STVMgVVAgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTs7OzsKKzI1Njg7Qk9YIERSQVdJTkdTIFVQIERPVUJMRSBBTkQgSE9SSVpPTlRBTCBTSU5HTEU7U287MDtPTjs7Ozs7TjtGT1JNUyBVUCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFOzs7OworMjU2OTtCT1ggRFJBV0lOR1MgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMO1NvOzA7T047Ozs7O047Rk9STVMgRE9VQkxFIFVQIEFORCBIT1JJWk9OVEFMOzs7OworMjU2QTtCT1ggRFJBV0lOR1MgVkVSVElDQUwgU0lOR0xFIEFORCBIT1JJWk9OVEFMIERPVUJMRTtTbzswO09OOzs7OztOO0ZPUk1TIFZFUlRJQ0FMIFNJTkdMRSBBTkQgSE9SSVpPTlRBTCBET1VCTEU7Ozs7CisyNTZCO0JPWCBEUkFXSU5HUyBWRVJUSUNBTCBET1VCTEUgQU5EIEhPUklaT05UQUwgU0lOR0xFO1NvOzA7T047Ozs7O047Rk9STVMgVkVSVElDQUwgRE9VQkxFIEFORCBIT1JJWk9OVEFMIFNJTkdMRTs7OzsKKzI1NkM7Qk9YIERSQVdJTkdTIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDtTbzswO09OOzs7OztOO0ZPUk1TIERPVUJMRSBWRVJUSUNBTCBBTkQgSE9SSVpPTlRBTDs7OzsKKzI1NkQ7Qk9YIERSQVdJTkdTIExJR0hUIEFSQyBET1dOIEFORCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIEFSQyBET1dOIEFORCBSSUdIVDs7OzsKKzI1NkU7Qk9YIERSQVdJTkdTIExJR0hUIEFSQyBET1dOIEFORCBMRUZUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgQVJDIERPV04gQU5EIExFRlQ7Ozs7CisyNTZGO0JPWCBEUkFXSU5HUyBMSUdIVCBBUkMgVVAgQU5EIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBBUkMgVVAgQU5EIExFRlQ7Ozs7CisyNTcwO0JPWCBEUkFXSU5HUyBMSUdIVCBBUkMgVVAgQU5EIFJJR0hUO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgQVJDIFVQIEFORCBSSUdIVDs7OzsKKzI1NzE7Qk9YIERSQVdJTkdTIExJR0hUIERJQUdPTkFMIFVQUEVSIFJJR0hUIFRPIExPV0VSIExFRlQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBESUFHT05BTCBVUFBFUiBSSUdIVCBUTyBMT1dFUiBMRUZUOzs7OworMjU3MjtCT1ggRFJBV0lOR1MgTElHSFQgRElBR09OQUwgVVBQRVIgTEVGVCBUTyBMT1dFUiBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERJQUdPTkFMIFVQUEVSIExFRlQgVE8gTE9XRVIgUklHSFQ7Ozs7CisyNTczO0JPWCBEUkFXSU5HUyBMSUdIVCBESUFHT05BTCBDUk9TUztTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIERJQUdPTkFMIENST1NTOzs7OworMjU3NDtCT1ggRFJBV0lOR1MgTElHSFQgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIExFRlQ7Ozs7CisyNTc1O0JPWCBEUkFXSU5HUyBMSUdIVCBVUDtTbzswO09OOzs7OztOO0ZPUk1TIExJR0hUIFVQOzs7OworMjU3NjtCT1ggRFJBV0lOR1MgTElHSFQgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBSSUdIVDs7OzsKKzI1Nzc7Qk9YIERSQVdJTkdTIExJR0hUIERPV047U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBET1dOOzs7OworMjU3ODtCT1ggRFJBV0lOR1MgSEVBVlkgTEVGVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIExFRlQ7Ozs7CisyNTc5O0JPWCBEUkFXSU5HUyBIRUFWWSBVUDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIFVQOzs7OworMjU3QTtCT1ggRFJBV0lOR1MgSEVBVlkgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBSSUdIVDs7OzsKKzI1N0I7Qk9YIERSQVdJTkdTIEhFQVZZIERPV047U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBET1dOOzs7OworMjU3QztCT1ggRFJBV0lOR1MgTElHSFQgTEVGVCBBTkQgSEVBVlkgUklHSFQ7U287MDtPTjs7Ozs7TjtGT1JNUyBMSUdIVCBMRUZUIEFORCBIRUFWWSBSSUdIVDs7OzsKKzI1N0Q7Qk9YIERSQVdJTkdTIExJR0hUIFVQIEFORCBIRUFWWSBET1dOO1NvOzA7T047Ozs7O047Rk9STVMgTElHSFQgVVAgQU5EIEhFQVZZIERPV047Ozs7CisyNTdFO0JPWCBEUkFXSU5HUyBIRUFWWSBMRUZUIEFORCBMSUdIVCBSSUdIVDtTbzswO09OOzs7OztOO0ZPUk1TIEhFQVZZIExFRlQgQU5EIExJR0hUIFJJR0hUOzs7OworMjU3RjtCT1ggRFJBV0lOR1MgSEVBVlkgVVAgQU5EIExJR0hUIERPV047U287MDtPTjs7Ozs7TjtGT1JNUyBIRUFWWSBVUCBBTkQgTElHSFQgRE9XTjs7OzsKKzI1ODA7VVBQRVIgSEFMRiBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1ODE7TE9XRVIgT05FIEVJR0hUSCBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1ODI7TE9XRVIgT05FIFFVQVJURVIgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTgzO0xPV0VSIFRIUkVFIEVJR0hUSFMgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTg0O0xPV0VSIEhBTEYgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNTg1O0xPV0VSIEZJVkUgRUlHSFRIUyBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1ODY7TE9XRVIgVEhSRUUgUVVBUlRFUlMgQkxPQ0s7U287MDtPTjs7Ozs7TjtMT1dFUiBUSFJFRSBRVUFSVEVSIEJMT0NLOzs7OworMjU4NztMT1dFUiBTRVZFTiBFSUdIVEhTIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU4ODtGVUxMIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU4OTtMRUZUIFNFVkVOIEVJR0hUSFMgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNThBO0xFRlQgVEhSRUUgUVVBUlRFUlMgQkxPQ0s7U287MDtPTjs7Ozs7TjtMRUZUIFRIUkVFIFFVQVJURVIgQkxPQ0s7Ozs7CisyNThCO0xFRlQgRklWRSBFSUdIVEhTIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU4QztMRUZUIEhBTEYgQkxPQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNThEO0xFRlQgVEhSRUUgRUlHSFRIUyBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1OEU7TEVGVCBPTkUgUVVBUlRFUiBCTE9DSztTbzswO09OOzs7OztOOzs7OzsKKzI1OEY7TEVGVCBPTkUgRUlHSFRIIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU5MDtSSUdIVCBIQUxGIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU5MTtMSUdIVCBTSEFERTtTbzswO09OOzs7OztOOzs7OzsKKzI1OTI7TUVESVVNIFNIQURFO1NvOzA7T047Ozs7O047Ozs7OworMjU5MztEQVJLIFNIQURFO1NvOzA7T047Ozs7O047Ozs7OworMjU5NDtVUFBFUiBPTkUgRUlHSFRIIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjU5NTtSSUdIVCBPTkUgRUlHSFRIIEJMT0NLO1NvOzA7T047Ozs7O047Ozs7OworMjVBMDtCTEFDSyBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUExO1dISVRFIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzI1QTI7V0hJVEUgU1FVQVJFIFdJVEggUk9VTkRFRCBDT1JORVJTO1NvOzA7T047Ozs7O047Ozs7OworMjVBMztXSElURSBTUVVBUkUgQ09OVEFJTklORyBCTEFDSyBTTUFMTCBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUE0O1NRVUFSRSBXSVRIIEhPUklaT05UQUwgRklMTDtTbzswO09OOzs7OztOOzs7OzsKKzI1QTU7U1FVQVJFIFdJVEggVkVSVElDQUwgRklMTDtTbzswO09OOzs7OztOOzs7OzsKKzI1QTY7U1FVQVJFIFdJVEggT1JUSE9HT05BTCBDUk9TU0hBVENIIEZJTEw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUE3O1NRVUFSRSBXSVRIIFVQUEVSIExFRlQgVE8gTE9XRVIgUklHSFQgRklMTDtTbzswO09OOzs7OztOOzs7OzsKKzI1QTg7U1FVQVJFIFdJVEggVVBQRVIgUklHSFQgVE8gTE9XRVIgTEVGVCBGSUxMO1NvOzA7T047Ozs7O047Ozs7OworMjVBOTtTUVVBUkUgV0lUSCBESUFHT05BTCBDUk9TU0hBVENIIEZJTEw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUFBO0JMQUNLIFNNQUxMIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzI1QUI7V0hJVEUgU01BTEwgU1FVQVJFO1NvOzA7T047Ozs7O047Ozs7OworMjVBQztCTEFDSyBSRUNUQU5HTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUFEO1dISVRFIFJFQ1RBTkdMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1QUU7QkxBQ0sgVkVSVElDQUwgUkVDVEFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVBRjtXSElURSBWRVJUSUNBTCBSRUNUQU5HTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUIwO0JMQUNLIFBBUkFMTEVMT0dSQU07U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUIxO1dISVRFIFBBUkFMTEVMT0dSQU07U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUIyO0JMQUNLIFVQLVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgVVAgUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUIzO1dISVRFIFVQLVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgVVAgUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUI0O0JMQUNLIFVQLVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgVVAgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUI1O1dISVRFIFVQLVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgVVAgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUI2O0JMQUNLIFJJR0hULVBPSU5USU5HIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgUklHSFQgUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUI3O1dISVRFIFJJR0hULVBPSU5USU5HIFRSSUFOR0xFO1NtOzA7T047Ozs7O047V0hJVEUgUklHSFQgUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUI4O0JMQUNLIFJJR0hULVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgUklHSFQgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUI5O1dISVRFIFJJR0hULVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047V0hJVEUgUklHSFQgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUJBO0JMQUNLIFJJR0hULVBPSU5USU5HIFBPSU5URVI7U287MDtPTjs7Ozs7TjtCTEFDSyBSSUdIVCBQT0lOVElORyBQT0lOVEVSOzs7OworMjVCQjtXSElURSBSSUdIVC1QT0lOVElORyBQT0lOVEVSO1NvOzA7T047Ozs7O047V0hJVEUgUklHSFQgUE9JTlRJTkcgUE9JTlRFUjs7OzsKKzI1QkM7QkxBQ0sgRE9XTi1QT0lOVElORyBUUklBTkdMRTtTbzswO09OOzs7OztOO0JMQUNLIERPV04gUE9JTlRJTkcgVFJJQU5HTEU7Ozs7CisyNUJEO1dISVRFIERPV04tUE9JTlRJTkcgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtXSElURSBET1dOIFBPSU5USU5HIFRSSUFOR0xFOzs7OworMjVCRTtCTEFDSyBET1dOLVBPSU5USU5HIFNNQUxMIFRSSUFOR0xFO1NvOzA7T047Ozs7O047QkxBQ0sgRE9XTiBQT0lOVElORyBTTUFMTCBUUklBTkdMRTs7OzsKKzI1QkY7V0hJVEUgRE9XTi1QT0lOVElORyBTTUFMTCBUUklBTkdMRTtTbzswO09OOzs7OztOO1dISVRFIERPV04gUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUMwO0JMQUNLIExFRlQtUE9JTlRJTkcgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtCTEFDSyBMRUZUIFBPSU5USU5HIFRSSUFOR0xFOzs7OworMjVDMTtXSElURSBMRUZULVBPSU5USU5HIFRSSUFOR0xFO1NtOzA7T047Ozs7O047V0hJVEUgTEVGVCBQT0lOVElORyBUUklBTkdMRTs7OzsKKzI1QzI7QkxBQ0sgTEVGVC1QT0lOVElORyBTTUFMTCBUUklBTkdMRTtTbzswO09OOzs7OztOO0JMQUNLIExFRlQgUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7Ozs7CisyNUMzO1dISVRFIExFRlQtUE9JTlRJTkcgU01BTEwgVFJJQU5HTEU7U287MDtPTjs7Ozs7TjtXSElURSBMRUZUIFBPSU5USU5HIFNNQUxMIFRSSUFOR0xFOzs7OworMjVDNDtCTEFDSyBMRUZULVBPSU5USU5HIFBPSU5URVI7U287MDtPTjs7Ozs7TjtCTEFDSyBMRUZUIFBPSU5USU5HIFBPSU5URVI7Ozs7CisyNUM1O1dISVRFIExFRlQtUE9JTlRJTkcgUE9JTlRFUjtTbzswO09OOzs7OztOO1dISVRFIExFRlQgUE9JTlRJTkcgUE9JTlRFUjs7OzsKKzI1QzY7QkxBQ0sgRElBTU9ORDtTbzswO09OOzs7OztOOzs7OzsKKzI1Qzc7V0hJVEUgRElBTU9ORDtTbzswO09OOzs7OztOOzs7OzsKKzI1Qzg7V0hJVEUgRElBTU9ORCBDT05UQUlOSU5HIEJMQUNLIFNNQUxMIERJQU1PTkQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUM5O0ZJU0hFWUU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUNBO0xPWkVOR0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUNCO1dISVRFIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1Q0M7RE9UVEVEIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1Q0Q7Q0lSQ0xFIFdJVEggVkVSVElDQUwgRklMTDtTbzswO09OOzs7OztOOzs7OzsKKzI1Q0U7QlVMTFNFWUU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUNGO0JMQUNLIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RDA7Q0lSQ0xFIFdJVEggTEVGVCBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVEMTtDSVJDTEUgV0lUSCBSSUdIVCBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVEMjtDSVJDTEUgV0lUSCBMT1dFUiBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVEMztDSVJDTEUgV0lUSCBVUFBFUiBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVENDtDSVJDTEUgV0lUSCBVUFBFUiBSSUdIVCBRVUFEUkFOVCBCTEFDSztTbzswO09OOzs7OztOOzs7OzsKKzI1RDU7Q0lSQ0xFIFdJVEggQUxMIEJVVCBVUFBFUiBMRUZUIFFVQURSQU5UIEJMQUNLO1NvOzA7T047Ozs7O047Ozs7OworMjVENjtMRUZUIEhBTEYgQkxBQ0sgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVENztSSUdIVCBIQUxGIEJMQUNLIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RDg7SU5WRVJTRSBCVUxMRVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUQ5O0lOVkVSU0UgV0hJVEUgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVEQTtVUFBFUiBIQUxGIElOVkVSU0UgV0hJVEUgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVEQjtMT1dFUiBIQUxGIElOVkVSU0UgV0hJVEUgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVEQztVUFBFUiBMRUZUIFFVQURSQU5UIENJUkNVTEFSIEFSQztTbzswO09OOzs7OztOOzs7OzsKKzI1REQ7VVBQRVIgUklHSFQgUVVBRFJBTlQgQ0lSQ1VMQVIgQVJDO1NvOzA7T047Ozs7O047Ozs7OworMjVERTtMT1dFUiBSSUdIVCBRVUFEUkFOVCBDSVJDVUxBUiBBUkM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNURGO0xPV0VSIExFRlQgUVVBRFJBTlQgQ0lSQ1VMQVIgQVJDO1NvOzA7T047Ozs7O047Ozs7OworMjVFMDtVUFBFUiBIQUxGIENJUkNMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RTE7TE9XRVIgSEFMRiBDSVJDTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUUyO0JMQUNLIExPV0VSIFJJR0hUIFRSSUFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVFMztCTEFDSyBMT1dFUiBMRUZUIFRSSUFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVFNDtCTEFDSyBVUFBFUiBMRUZUIFRSSUFOR0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVFNTtCTEFDSyBVUFBFUiBSSUdIVCBUUklBTkdMRTtTbzswO09OOzs7OztOOzs7OzsKKzI1RTY7V0hJVEUgQlVMTEVUO1NvOzA7T047Ozs7O047Ozs7OworMjVFNztTUVVBUkUgV0lUSCBMRUZUIEhBTEYgQkxBQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUU4O1NRVUFSRSBXSVRIIFJJR0hUIEhBTEYgQkxBQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUU5O1NRVUFSRSBXSVRIIFVQUEVSIExFRlQgRElBR09OQUwgSEFMRiBCTEFDSztTbzswO09OOzs7OztOOzs7OzsKKzI1RUE7U1FVQVJFIFdJVEggTE9XRVIgUklHSFQgRElBR09OQUwgSEFMRiBCTEFDSztTbzswO09OOzs7OztOOzs7OzsKKzI1RUI7V0hJVEUgU1FVQVJFIFdJVEggVkVSVElDQUwgQklTRUNUSU5HIExJTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUVDO1dISVRFIFVQLVBPSU5USU5HIFRSSUFOR0xFIFdJVEggRE9UO1NvOzA7T047Ozs7O047V0hJVEUgVVAgUE9JTlRJTkcgVFJJQU5HTEUgV0lUSCBET1Q7Ozs7CisyNUVEO1VQLVBPSU5USU5HIFRSSUFOR0xFIFdJVEggTEVGVCBIQUxGIEJMQUNLO1NvOzA7T047Ozs7O047VVAgUE9JTlRJTkcgVFJJQU5HTEUgV0lUSCBMRUZUIEhBTEYgQkxBQ0s7Ozs7CisyNUVFO1VQLVBPSU5USU5HIFRSSUFOR0xFIFdJVEggUklHSFQgSEFMRiBCTEFDSztTbzswO09OOzs7OztOO1VQIFBPSU5USU5HIFRSSUFOR0xFIFdJVEggUklHSFQgSEFMRiBCTEFDSzs7OzsKKzI1RUY7TEFSR0UgQ0lSQ0xFO1NvOzA7T047Ozs7O047Ozs7OworMjVGMDtXSElURSBTUVVBUkUgV0lUSCBVUFBFUiBMRUZUIFFVQURSQU5UO1NvOzA7T047Ozs7O047Ozs7OworMjVGMTtXSElURSBTUVVBUkUgV0lUSCBMT1dFUiBMRUZUIFFVQURSQU5UO1NvOzA7T047Ozs7O047Ozs7OworMjVGMjtXSElURSBTUVVBUkUgV0lUSCBMT1dFUiBSSUdIVCBRVUFEUkFOVDtTbzswO09OOzs7OztOOzs7OzsKKzI1RjM7V0hJVEUgU1FVQVJFIFdJVEggVVBQRVIgUklHSFQgUVVBRFJBTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUY0O1dISVRFIENJUkNMRSBXSVRIIFVQUEVSIExFRlQgUVVBRFJBTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUY1O1dISVRFIENJUkNMRSBXSVRIIExPV0VSIExFRlQgUVVBRFJBTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNUY2O1dISVRFIENJUkNMRSBXSVRIIExPV0VSIFJJR0hUIFFVQURSQU5UO1NvOzA7T047Ozs7O047Ozs7OworMjVGNztXSElURSBDSVJDTEUgV0lUSCBVUFBFUiBSSUdIVCBRVUFEUkFOVDtTbzswO09OOzs7OztOOzs7OzsKKzI2MDA7QkxBQ0sgU1VOIFdJVEggUkFZUztTbzswO09OOzs7OztOOzs7OzsKKzI2MDE7Q0xPVUQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjAyO1VNQlJFTExBO1NvOzA7T047Ozs7O047Ozs7OworMjYwMztTTk9XTUFOO1NvOzA7T047Ozs7O047Ozs7OworMjYwNDtDT01FVDtTbzswO09OOzs7OztOOzs7OzsKKzI2MDU7QkxBQ0sgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI2MDY7V0hJVEUgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI2MDc7TElHSFROSU5HO1NvOzA7T047Ozs7O047Ozs7OworMjYwODtUSFVOREVSU1RPUk07U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjA5O1NVTjtTbzswO09OOzs7OztOOzs7OzsKKzI2MEE7QVNDRU5ESU5HIE5PREU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjBCO0RFU0NFTkRJTkcgTk9ERTtTbzswO09OOzs7OztOOzs7OzsKKzI2MEM7Q09OSlVOQ1RJT047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjBEO09QUE9TSVRJT047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjBFO0JMQUNLIFRFTEVQSE9ORTtTbzswO09OOzs7OztOOzs7OzsKKzI2MEY7V0hJVEUgVEVMRVBIT05FO1NvOzA7T047Ozs7O047Ozs7OworMjYxMDtCQUxMT1QgQk9YO1NvOzA7T047Ozs7O047Ozs7OworMjYxMTtCQUxMT1QgQk9YIFdJVEggQ0hFQ0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjEyO0JBTExPVCBCT1ggV0lUSCBYO1NvOzA7T047Ozs7O047Ozs7OworMjYxMztTQUxUSVJFO1NvOzA7T047Ozs7O047Ozs7OworMjYxOTtSRVZFUlNFRCBST1RBVEVEIEZMT1JBTCBIRUFSVCBCVUxMRVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjFBO0JMQUNLIExFRlQgUE9JTlRJTkcgSU5ERVg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjFCO0JMQUNLIFJJR0hUIFBPSU5USU5HIElOREVYO1NvOzA7T047Ozs7O047Ozs7OworMjYxQztXSElURSBMRUZUIFBPSU5USU5HIElOREVYO1NvOzA7T047Ozs7O047Ozs7OworMjYxRDtXSElURSBVUCBQT0lOVElORyBJTkRFWDtTbzswO09OOzs7OztOOzs7OzsKKzI2MUU7V0hJVEUgUklHSFQgUE9JTlRJTkcgSU5ERVg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjFGO1dISVRFIERPV04gUE9JTlRJTkcgSU5ERVg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjIwO1NLVUxMIEFORCBDUk9TU0JPTkVTO1NvOzA7T047Ozs7O047Ozs7OworMjYyMTtDQVVUSU9OIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjIyO1JBRElPQUNUSVZFIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjIzO0JJT0hBWkFSRCBTSUdOO1NvOzA7T047Ozs7O047Ozs7OworMjYyNDtDQURVQ0VVUztTbzswO09OOzs7OztOOzs7OzsKKzI2MjU7QU5LSDtTbzswO09OOzs7OztOOzs7OzsKKzI2MjY7T1JUSE9ET1ggQ1JPU1M7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjI3O0NISSBSSE87U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjI4O0NST1NTIE9GIExPUlJBSU5FO1NvOzA7T047Ozs7O047Ozs7OworMjYyOTtDUk9TUyBPRiBKRVJVU0FMRU07U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjJBO1NUQVIgQU5EIENSRVNDRU5UO1NvOzA7T047Ozs7O047Ozs7OworMjYyQjtGQVJTSSBTWU1CT0w7U287MDtPTjs7Ozs7TjtTWU1CT0wgT0YgSVJBTjs7OzsKKzI2MkM7QURJIFNIQUtUSTtTbzswO09OOzs7OztOOzs7OzsKKzI2MkQ7SEFNTUVSIEFORCBTSUNLTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjJFO1BFQUNFIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzI2MkY7WUlOIFlBTkc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjMwO1RSSUdSQU0gRk9SIEhFQVZFTjtTbzswO09OOzs7OztOOzs7OzsKKzI2MzE7VFJJR1JBTSBGT1IgTEFLRTtTbzswO09OOzs7OztOOzs7OzsKKzI2MzI7VFJJR1JBTSBGT1IgRklSRTtTbzswO09OOzs7OztOOzs7OzsKKzI2MzM7VFJJR1JBTSBGT1IgVEhVTkRFUjtTbzswO09OOzs7OztOOzs7OzsKKzI2MzQ7VFJJR1JBTSBGT1IgV0lORDtTbzswO09OOzs7OztOOzs7OzsKKzI2MzU7VFJJR1JBTSBGT1IgV0FURVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjM2O1RSSUdSQU0gRk9SIE1PVU5UQUlOO1NvOzA7T047Ozs7O047Ozs7OworMjYzNztUUklHUkFNIEZPUiBFQVJUSDtTbzswO09OOzs7OztOOzs7OzsKKzI2Mzg7V0hFRUwgT0YgREhBUk1BO1NvOzA7T047Ozs7O047Ozs7OworMjYzOTtXSElURSBGUk9XTklORyBGQUNFO1NvOzA7T047Ozs7O047Ozs7OworMjYzQTtXSElURSBTTUlMSU5HIEZBQ0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjNCO0JMQUNLIFNNSUxJTkcgRkFDRTtTbzswO09OOzs7OztOOzs7OzsKKzI2M0M7V0hJVEUgU1VOIFdJVEggUkFZUztTbzswO09OOzs7OztOOzs7OzsKKzI2M0Q7RklSU1QgUVVBUlRFUiBNT09OO1NvOzA7T047Ozs7O047Ozs7OworMjYzRTtMQVNUIFFVQVJURVIgTU9PTjtTbzswO09OOzs7OztOOzs7OzsKKzI2M0Y7TUVSQ1VSWTtTbzswO09OOzs7OztOOzs7OzsKKzI2NDA7RkVNQUxFIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQxO0VBUlRIO1NvOzA7T047Ozs7O047Ozs7OworMjY0MjtNQUxFIFNJR047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQzO0pVUElURVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQ0O1NBVFVSTjtTbzswO09OOzs7OztOOzs7OzsKKzI2NDU7VVJBTlVTO1NvOzA7T047Ozs7O047Ozs7OworMjY0NjtORVBUVU5FO1NvOzA7T047Ozs7O047Ozs7OworMjY0NztQTFVUTztTbzswO09OOzs7OztOOzs7OzsKKzI2NDg7QVJJRVM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjQ5O1RBVVJVUztTbzswO09OOzs7OztOOzs7OzsKKzI2NEE7R0VNSU5JO1NvOzA7T047Ozs7O047Ozs7OworMjY0QjtDQU5DRVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjRDO0xFTztTbzswO09OOzs7OztOOzs7OzsKKzI2NEQ7VklSR087U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjRFO0xJQlJBO1NvOzA7T047Ozs7O047Ozs7OworMjY0RjtTQ09SUElVUztTbzswO09OOzs7OztOOzs7OzsKKzI2NTA7U0FHSVRUQVJJVVM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjUxO0NBUFJJQ09STjtTbzswO09OOzs7OztOOzs7OzsKKzI2NTI7QVFVQVJJVVM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjUzO1BJU0NFUztTbzswO09OOzs7OztOOzs7OzsKKzI2NTQ7V0hJVEUgQ0hFU1MgS0lORztTbzswO09OOzs7OztOOzs7OzsKKzI2NTU7V0hJVEUgQ0hFU1MgUVVFRU47U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjU2O1dISVRFIENIRVNTIFJPT0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjU3O1dISVRFIENIRVNTIEJJU0hPUDtTbzswO09OOzs7OztOOzs7OzsKKzI2NTg7V0hJVEUgQ0hFU1MgS05JR0hUO1NvOzA7T047Ozs7O047Ozs7OworMjY1OTtXSElURSBDSEVTUyBQQVdOO1NvOzA7T047Ozs7O047Ozs7OworMjY1QTtCTEFDSyBDSEVTUyBLSU5HO1NvOzA7T047Ozs7O047Ozs7OworMjY1QjtCTEFDSyBDSEVTUyBRVUVFTjtTbzswO09OOzs7OztOOzs7OzsKKzI2NUM7QkxBQ0sgQ0hFU1MgUk9PSztTbzswO09OOzs7OztOOzs7OzsKKzI2NUQ7QkxBQ0sgQ0hFU1MgQklTSE9QO1NvOzA7T047Ozs7O047Ozs7OworMjY1RTtCTEFDSyBDSEVTUyBLTklHSFQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjVGO0JMQUNLIENIRVNTIFBBV047U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjYwO0JMQUNLIFNQQURFIFNVSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjYxO1dISVRFIEhFQVJUIFNVSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjYyO1dISVRFIERJQU1PTkQgU1VJVDtTbzswO09OOzs7OztOOzs7OzsKKzI2NjM7QkxBQ0sgQ0xVQiBTVUlUO1NvOzA7T047Ozs7O047Ozs7OworMjY2NDtXSElURSBTUEFERSBTVUlUO1NvOzA7T047Ozs7O047Ozs7OworMjY2NTtCTEFDSyBIRUFSVCBTVUlUO1NvOzA7T047Ozs7O047Ozs7OworMjY2NjtCTEFDSyBESUFNT05EIFNVSVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjY3O1dISVRFIENMVUIgU1VJVDtTbzswO09OOzs7OztOOzs7OzsKKzI2Njg7SE9UIFNQUklOR1M7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjY5O1FVQVJURVIgTk9URTtTbzswO09OOzs7OztOOzs7OzsKKzI2NkE7RUlHSFRIIE5PVEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNjZCO0JFQU1FRCBFSUdIVEggTk9URVM7U287MDtPTjs7Ozs7TjtCQVJSRUQgRUlHSFRIIE5PVEVTOzs7OworMjY2QztCRUFNRUQgU0lYVEVFTlRIIE5PVEVTO1NvOzA7T047Ozs7O047QkFSUkVEIFNJWFRFRU5USCBOT1RFUzs7OzsKKzI2NkQ7TVVTSUMgRkxBVCBTSUdOO1NvOzA7T047Ozs7O047RkxBVDs7OzsKKzI2NkU7TVVTSUMgTkFUVVJBTCBTSUdOO1NvOzA7T047Ozs7O047TkFUVVJBTDs7OzsKKzI2NkY7TVVTSUMgU0hBUlAgU0lHTjtTbTswO09OOzs7OztOO1NIQVJQOzs7OworMjY3MDtXRVNUIFNZUklBQyBDUk9TUztTbzswO09OOzs7OztOOzs7OzsKKzI2NzE7RUFTVCBTWVJJQUMgQ1JPU1M7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzAxO1VQUEVSIEJMQURFIFNDSVNTT1JTO1NvOzA7T047Ozs7O047Ozs7OworMjcwMjtCTEFDSyBTQ0lTU09SUztTbzswO09OOzs7OztOOzs7OzsKKzI3MDM7TE9XRVIgQkxBREUgU0NJU1NPUlM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzA0O1dISVRFIFNDSVNTT1JTO1NvOzA7T047Ozs7O047Ozs7OworMjcwNjtURUxFUEhPTkUgTE9DQVRJT04gU0lHTjtTbzswO09OOzs7OztOOzs7OzsKKzI3MDc7VEFQRSBEUklWRTtTbzswO09OOzs7OztOOzs7OzsKKzI3MDg7QUlSUExBTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzA5O0VOVkVMT1BFO1NvOzA7T047Ozs7O047Ozs7OworMjcwQztWSUNUT1JZIEhBTkQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzBEO1dSSVRJTkcgSEFORDtTbzswO09OOzs7OztOOzs7OzsKKzI3MEU7TE9XRVIgUklHSFQgUEVOQ0lMO1NvOzA7T047Ozs7O047Ozs7OworMjcwRjtQRU5DSUw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzEwO1VQUEVSIFJJR0hUIFBFTkNJTDtTbzswO09OOzs7OztOOzs7OzsKKzI3MTE7V0hJVEUgTklCO1NvOzA7T047Ozs7O047Ozs7OworMjcxMjtCTEFDSyBOSUI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzEzO0NIRUNLIE1BUks7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzE0O0hFQVZZIENIRUNLIE1BUks7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzE1O01VTFRJUExJQ0FUSU9OIFg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzE2O0hFQVZZIE1VTFRJUExJQ0FUSU9OIFg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzE3O0JBTExPVCBYO1NvOzA7T047Ozs7O047Ozs7OworMjcxODtIRUFWWSBCQUxMT1QgWDtTbzswO09OOzs7OztOOzs7OzsKKzI3MTk7T1VUTElORUQgR1JFRUsgQ1JPU1M7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzFBO0hFQVZZIEdSRUVLIENST1NTO1NvOzA7T047Ozs7O047Ozs7OworMjcxQjtPUEVOIENFTlRSRSBDUk9TUztTbzswO09OOzs7OztOO09QRU4gQ0VOVEVSIENST1NTOzs7OworMjcxQztIRUFWWSBPUEVOIENFTlRSRSBDUk9TUztTbzswO09OOzs7OztOO0hFQVZZIE9QRU4gQ0VOVEVSIENST1NTOzs7OworMjcxRDtMQVRJTiBDUk9TUztTbzswO09OOzs7OztOOzs7OzsKKzI3MUU7U0hBRE9XRUQgV0hJVEUgTEFUSU4gQ1JPU1M7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzFGO09VVExJTkVEIExBVElOIENST1NTO1NvOzA7T047Ozs7O047Ozs7OworMjcyMDtNQUxURVNFIENST1NTO1NvOzA7T047Ozs7O047Ozs7OworMjcyMTtTVEFSIE9GIERBVklEO1NvOzA7T047Ozs7O047Ozs7OworMjcyMjtGT1VSIFRFQVJEUk9QLVNQT0tFRCBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3MjM7Rk9VUiBCQUxMT09OLVNQT0tFRCBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3MjQ7SEVBVlkgRk9VUiBCQUxMT09OLVNQT0tFRCBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3MjU7Rk9VUiBDTFVCLVNQT0tFRCBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3MjY7QkxBQ0sgRk9VUiBQT0lOVEVEIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzI3O1dISVRFIEZPVVIgUE9JTlRFRCBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjcyOTtTVFJFU1MgT1VUTElORUQgV0hJVEUgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3MkE7Q0lSQ0xFRCBXSElURSBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjcyQjtPUEVOIENFTlRSRSBCTEFDSyBTVEFSO1NvOzA7T047Ozs7O047T1BFTiBDRU5URVIgQkxBQ0sgU1RBUjs7OzsKKzI3MkM7QkxBQ0sgQ0VOVFJFIFdISVRFIFNUQVI7U287MDtPTjs7Ozs7TjtCTEFDSyBDRU5URVIgV0hJVEUgU1RBUjs7OzsKKzI3MkQ7T1VUTElORUQgQkxBQ0sgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3MkU7SEVBVlkgT1VUTElORUQgQkxBQ0sgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3MkY7UElOV0hFRUwgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3MzA7U0hBRE9XRUQgV0hJVEUgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3MzE7SEVBVlkgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzMyO09QRU4gQ0VOVFJFIEFTVEVSSVNLO1NvOzA7T047Ozs7O047T1BFTiBDRU5URVIgQVNURVJJU0s7Ozs7CisyNzMzO0VJR0hUIFNQT0tFRCBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3MzQ7RUlHSFQgUE9JTlRFRCBCTEFDSyBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjczNTtFSUdIVCBQT0lOVEVEIFBJTldIRUVMIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzM2O1NJWCBQT0lOVEVEIEJMQUNLIFNUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzM3O0VJR0hUIFBPSU5URUQgUkVDVElMSU5FQVIgQkxBQ0sgU1RBUjtTbzswO09OOzs7OztOOzs7OzsKKzI3Mzg7SEVBVlkgRUlHSFQgUE9JTlRFRCBSRUNUSUxJTkVBUiBCTEFDSyBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjczOTtUV0VMVkUgUE9JTlRFRCBCTEFDSyBTVEFSO1NvOzA7T047Ozs7O047Ozs7OworMjczQTtTSVhURUVOIFBPSU5URUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzNCO1RFQVJEUk9QLVNQT0tFRCBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3M0M7T1BFTiBDRU5UUkUgVEVBUkRST1AtU1BPS0VEIEFTVEVSSVNLO1NvOzA7T047Ozs7O047T1BFTiBDRU5URVIgVEVBUkRST1AtU1BPS0VEIEFTVEVSSVNLOzs7OworMjczRDtIRUFWWSBURUFSRFJPUC1TUE9LRUQgQVNURVJJU0s7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzNFO1NJWCBQRVRBTExFRCBCTEFDSyBBTkQgV0hJVEUgRkxPUkVUVEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzNGO0JMQUNLIEZMT1JFVFRFO1NvOzA7T047Ozs7O047Ozs7OworMjc0MDtXSElURSBGTE9SRVRURTtTbzswO09OOzs7OztOOzs7OzsKKzI3NDE7RUlHSFQgUEVUQUxMRUQgT1VUTElORUQgQkxBQ0sgRkxPUkVUVEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzQyO0NJUkNMRUQgT1BFTiBDRU5UUkUgRUlHSFQgUE9JTlRFRCBTVEFSO1NvOzA7T047Ozs7O047Q0lSQ0xFRCBPUEVOIENFTlRFUiBFSUdIVCBQT0lOVEVEIFNUQVI7Ozs7CisyNzQzO0hFQVZZIFRFQVJEUk9QLVNQT0tFRCBQSU5XSEVFTCBBU1RFUklTSztTbzswO09OOzs7OztOOzs7OzsKKzI3NDQ7U05PV0ZMQUtFO1NvOzA7T047Ozs7O047Ozs7OworMjc0NTtUSUdIVCBUUklGT0xJQVRFIFNOT1dGTEFLRTtTbzswO09OOzs7OztOOzs7OzsKKzI3NDY7SEVBVlkgQ0hFVlJPTiBTTk9XRkxBS0U7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzQ3O1NQQVJLTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzQ4O0hFQVZZIFNQQVJLTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzQ5O0JBTExPT04tU1BPS0VEIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjc0QTtFSUdIVCBURUFSRFJPUC1TUE9LRUQgUFJPUEVMTEVSIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjc0QjtIRUFWWSBFSUdIVCBURUFSRFJPUC1TUE9LRUQgUFJPUEVMTEVSIEFTVEVSSVNLO1NvOzA7T047Ozs7O047Ozs7OworMjc0RDtTSEFET1dFRCBXSElURSBDSVJDTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzRGO0xPV0VSIFJJR0hUIERST1AtU0hBRE9XRUQgV0hJVEUgU1FVQVJFO1NvOzA7T047Ozs7O047Ozs7OworMjc1MDtVUFBFUiBSSUdIVCBEUk9QLVNIQURPV0VEIFdISVRFIFNRVUFSRTtTbzswO09OOzs7OztOOzs7OzsKKzI3NTE7TE9XRVIgUklHSFQgU0hBRE9XRUQgV0hJVEUgU1FVQVJFO1NvOzA7T047Ozs7O047Ozs7OworMjc1MjtVUFBFUiBSSUdIVCBTSEFET1dFRCBXSElURSBTUVVBUkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzU2O0JMQUNLIERJQU1PTkQgTUlOVVMgV0hJVEUgWDtTbzswO09OOzs7OztOOzs7OzsKKzI3NTg7TElHSFQgVkVSVElDQUwgQkFSO1NvOzA7T047Ozs7O047Ozs7OworMjc1OTtNRURJVU0gVkVSVElDQUwgQkFSO1NvOzA7T047Ozs7O047Ozs7OworMjc1QTtIRUFWWSBWRVJUSUNBTCBCQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzVCO0hFQVZZIFNJTkdMRSBUVVJORUQgQ09NTUEgUVVPVEFUSU9OIE1BUksgT1JOQU1FTlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzVDO0hFQVZZIFNJTkdMRSBDT01NQSBRVU9UQVRJT04gTUFSSyBPUk5BTUVOVDtTbzswO09OOzs7OztOOzs7OzsKKzI3NUQ7SEVBVlkgRE9VQkxFIFRVUk5FRCBDT01NQSBRVU9UQVRJT04gTUFSSyBPUk5BTUVOVDtTbzswO09OOzs7OztOOzs7OzsKKzI3NUU7SEVBVlkgRE9VQkxFIENPTU1BIFFVT1RBVElPTiBNQVJLIE9STkFNRU5UO1NvOzA7T047Ozs7O047Ozs7OworMjc2MTtDVVJWRUQgU1RFTSBQQVJBR1JBUEggU0lHTiBPUk5BTUVOVDtTbzswO09OOzs7OztOOzs7OzsKKzI3NjI7SEVBVlkgRVhDTEFNQVRJT04gTUFSSyBPUk5BTUVOVDtTbzswO09OOzs7OztOOzs7OzsKKzI3NjM7SEVBVlkgSEVBUlQgRVhDTEFNQVRJT04gTUFSSyBPUk5BTUVOVDtTbzswO09OOzs7OztOOzs7OzsKKzI3NjQ7SEVBVlkgQkxBQ0sgSEVBUlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzY1O1JPVEFURUQgSEVBVlkgQkxBQ0sgSEVBUlQgQlVMTEVUO1NvOzA7T047Ozs7O047Ozs7OworMjc2NjtGTE9SQUwgSEVBUlQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyNzY3O1JPVEFURUQgRkxPUkFMIEhFQVJUIEJVTExFVDtTbzswO09OOzs7OztOOzs7OzsKKzI3NzY7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIERJR0lUIE9ORTtObzswO09OOzs7MTsxO047SU5WRVJTRSBDSVJDTEVEIERJR0lUIE9ORTs7OzsKKzI3Nzc7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIERJR0lUIFRXTztObzswO09OOzs7MjsyO047SU5WRVJTRSBDSVJDTEVEIERJR0lUIFRXTzs7OzsKKzI3Nzg7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIERJR0lUIFRIUkVFO05vOzA7T047OzszOzM7TjtJTlZFUlNFIENJUkNMRUQgRElHSVQgVEhSRUU7Ozs7CisyNzc5O0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBGT1VSO05vOzA7T047Ozs0OzQ7TjtJTlZFUlNFIENJUkNMRUQgRElHSVQgRk9VUjs7OzsKKzI3N0E7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIERJR0lUIEZJVkU7Tm87MDtPTjs7OzU7NTtOO0lOVkVSU0UgQ0lSQ0xFRCBESUdJVCBGSVZFOzs7OworMjc3QjtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgRElHSVQgU0lYO05vOzA7T047Ozs2OzY7TjtJTlZFUlNFIENJUkNMRUQgRElHSVQgU0lYOzs7OworMjc3QztESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgRElHSVQgU0VWRU47Tm87MDtPTjs7Ozc7NztOO0lOVkVSU0UgQ0lSQ0xFRCBESUdJVCBTRVZFTjs7OzsKKzI3N0Q7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIERJR0lUIEVJR0hUO05vOzA7T047Ozs4Ozg7TjtJTlZFUlNFIENJUkNMRUQgRElHSVQgRUlHSFQ7Ozs7CisyNzdFO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBESUdJVCBOSU5FO05vOzA7T047Ozs5Ozk7TjtJTlZFUlNFIENJUkNMRUQgRElHSVQgTklORTs7OzsKKzI3N0Y7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIE5VTUJFUiBURU47Tm87MDtPTjs7OzsxMDtOO0lOVkVSU0UgQ0lSQ0xFRCBOVU1CRVIgVEVOOzs7OworMjc4MDtESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBPTkU7Tm87MDtPTjs7OzE7MTtOO0NJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBPTkU7Ozs7CisyNzgxO0RJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFRXTztObzswO09OOzs7MjsyO047Q0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFRXTzs7OzsKKzI3ODI7RElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgVEhSRUU7Tm87MDtPTjs7OzM7MztOO0NJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBUSFJFRTs7OzsKKzI3ODM7RElOR0JBVCBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRk9VUjtObzswO09OOzs7NDs0O047Q0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEZPVVI7Ozs7CisyNzg0O0RJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEZJVkU7Tm87MDtPTjs7OzU7NTtOO0NJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBGSVZFOzs7OworMjc4NTtESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBTSVg7Tm87MDtPTjs7OzY7NjtOO0NJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBTSVg7Ozs7CisyNzg2O0RJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFNFVkVOO05vOzA7T047Ozs3Ozc7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgU0VWRU47Ozs7CisyNzg3O0RJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEVJR0hUO05vOzA7T047Ozs4Ozg7TjtDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgRUlHSFQ7Ozs7CisyNzg4O0RJTkdCQVQgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIE5JTkU7Tm87MDtPTjs7Ozk7OTtOO0NJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBOSU5FOzs7OworMjc4OTtESU5HQkFUIENJUkNMRUQgU0FOUy1TRVJJRiBOVU1CRVIgVEVOO05vOzA7T047Ozs7MTA7TjtDSVJDTEVEIFNBTlMtU0VSSUYgTlVNQkVSIFRFTjs7OzsKKzI3OEE7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgT05FO05vOzA7T047OzsxOzE7TjtJTlZFUlNFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBPTkU7Ozs7CisyNzhCO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFRXTztObzswO09OOzs7MjsyO047SU5WRVJTRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgVFdPOzs7OworMjc4QztESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBUSFJFRTtObzswO09OOzs7MzszO047SU5WRVJTRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgVEhSRUU7Ozs7CisyNzhEO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEZPVVI7Tm87MDtPTjs7OzQ7NDtOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEZPVVI7Ozs7CisyNzhFO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEZJVkU7Tm87MDtPTjs7OzU7NTtOO0lOVkVSU0UgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEZJVkU7Ozs7CisyNzhGO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIFNJWDtObzswO09OOzs7Njs2O047SU5WRVJTRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgU0lYOzs7OworMjc5MDtESU5HQkFUIE5FR0FUSVZFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBTRVZFTjtObzswO09OOzs7Nzs3O047SU5WRVJTRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgU0VWRU47Ozs7CisyNzkxO0RJTkdCQVQgTkVHQVRJVkUgQ0lSQ0xFRCBTQU5TLVNFUklGIERJR0lUIEVJR0hUO05vOzA7T047Ozs4Ozg7TjtJTlZFUlNFIENJUkNMRUQgU0FOUy1TRVJJRiBESUdJVCBFSUdIVDs7OzsKKzI3OTI7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgTklORTtObzswO09OOzs7OTs5O047SU5WRVJTRSBDSVJDTEVEIFNBTlMtU0VSSUYgRElHSVQgTklORTs7OzsKKzI3OTM7RElOR0JBVCBORUdBVElWRSBDSVJDTEVEIFNBTlMtU0VSSUYgTlVNQkVSIFRFTjtObzswO09OOzs7OzEwO047SU5WRVJTRSBDSVJDTEVEIFNBTlMtU0VSSUYgTlVNQkVSIFRFTjs7OzsKKzI3OTQ7SEVBVlkgV0lERS1IRUFERUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIFdJREUtSEVBREVEIFJJR0hUIEFSUk9XOzs7OworMjc5ODtIRUFWWSBTT1VUSCBFQVNUIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgTE9XRVIgUklHSFQgQVJST1c7Ozs7CisyNzk5O0hFQVZZIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBSSUdIVCBBUlJPVzs7OzsKKzI3OUE7SEVBVlkgTk9SVEggRUFTVCBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIFVQUEVSIFJJR0hUIEFSUk9XOzs7OworMjc5QjtEUkFGVElORyBQT0lOVCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047RFJBRlRJTkcgUE9JTlQgUklHSFQgQVJST1c7Ozs7CisyNzlDO0hFQVZZIFJPVU5ELVRJUFBFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgUk9VTkQtVElQUEVEIFJJR0hUIEFSUk9XOzs7OworMjc5RDtUUklBTkdMRS1IRUFERUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO1RSSUFOR0xFLUhFQURFRCBSSUdIVCBBUlJPVzs7OzsKKzI3OUU7SEVBVlkgVFJJQU5HTEUtSEVBREVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBUUklBTkdMRS1IRUFERUQgUklHSFQgQVJST1c7Ozs7CisyNzlGO0RBU0hFRCBUUklBTkdMRS1IRUFERUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0RBU0hFRCBUUklBTkdMRS1IRUFERUQgUklHSFQgQVJST1c7Ozs7CisyN0EwO0hFQVZZIERBU0hFRCBUUklBTkdMRS1IRUFERUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIERBU0hFRCBUUklBTkdMRS1IRUFERUQgUklHSFQgQVJST1c7Ozs7CisyN0ExO0JMQUNLIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtCTEFDSyBSSUdIVCBBUlJPVzs7OzsKKzI3QTI7VEhSRUUtRCBUT1AtTElHSFRFRCBSSUdIVFdBUkRTIEFSUk9XSEVBRDtTbzswO09OOzs7OztOO1RIUkVFLUQgVE9QLUxJR0hURUQgUklHSFQgQVJST1dIRUFEOzs7OworMjdBMztUSFJFRS1EIEJPVFRPTS1MSUdIVEVEIFJJR0hUV0FSRFMgQVJST1dIRUFEO1NvOzA7T047Ozs7O047VEhSRUUtRCBCT1RUT00tTElHSFRFRCBSSUdIVCBBUlJPV0hFQUQ7Ozs7CisyN0E0O0JMQUNLIFJJR0hUV0FSRFMgQVJST1dIRUFEO1NvOzA7T047Ozs7O047QkxBQ0sgUklHSFQgQVJST1dIRUFEOzs7OworMjdBNTtIRUFWWSBCTEFDSyBDVVJWRUQgRE9XTldBUkRTIEFORCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgQkxBQ0sgQ1VSVkVEIERPV04gQU5EIFJJR0hUIEFSUk9XOzs7OworMjdBNjtIRUFWWSBCTEFDSyBDVVJWRUQgVVBXQVJEUyBBTkQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIEJMQUNLIENVUlZFRCBVUCBBTkQgUklHSFQgQVJST1c7Ozs7CisyN0E3O1NRVUFUIEJMQUNLIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtTUVVBVCBCTEFDSyBSSUdIVCBBUlJPVzs7OzsKKzI3QTg7SEVBVlkgQ09OQ0FWRS1QT0lOVEVEIEJMQUNLIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBDT05DQVZFLVBPSU5URUQgQkxBQ0sgUklHSFQgQVJST1c7Ozs7CisyN0E5O1JJR0hULVNIQURFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047UklHSFQtU0hBREVEIFdISVRFIFJJR0hUIEFSUk9XOzs7OworMjdBQTtMRUZULVNIQURFRCBXSElURSBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047TEVGVC1TSEFERUQgV0hJVEUgUklHSFQgQVJST1c7Ozs7CisyN0FCO0JBQ0stVElMVEVEIFNIQURPV0VEIFdISVRFIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtCQUNLLVRJTFRFRCBTSEFET1dFRCBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QUM7RlJPTlQtVElMVEVEIFNIQURPV0VEIFdISVRFIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtGUk9OVC1USUxURUQgU0hBRE9XRUQgV0hJVEUgUklHSFQgQVJST1c7Ozs7CisyN0FEO0hFQVZZIExPV0VSIFJJR0hULVNIQURPV0VEIFdISVRFIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBMT1dFUiBSSUdIVC1TSEFET1dFRCBXSElURSBSSUdIVCBBUlJPVzs7OzsKKzI3QUU7SEVBVlkgVVBQRVIgUklHSFQtU0hBRE9XRUQgV0hJVEUgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIFVQUEVSIFJJR0hULVNIQURPV0VEIFdISVRFIFJJR0hUIEFSUk9XOzs7OworMjdBRjtOT1RDSEVEIExPV0VSIFJJR0hULVNIQURPV0VEIFdISVRFIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtOT1RDSEVEIExPV0VSIFJJR0hULVNIQURPV0VEIFdISVRFIFJJR0hUIEFSUk9XOzs7OworMjdCMTtOT1RDSEVEIFVQUEVSIFJJR0hULVNIQURPV0VEIFdISVRFIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtOT1RDSEVEIFVQUEVSIFJJR0hULVNIQURPV0VEIFdISVRFIFJJR0hUIEFSUk9XOzs7OworMjdCMjtDSVJDTEVEIEhFQVZZIFdISVRFIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtDSVJDTEVEIEhFQVZZIFdISVRFIFJJR0hUIEFSUk9XOzs7OworMjdCMztXSElURS1GRUFUSEVSRUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO1dISVRFLUZFQVRIRVJFRCBSSUdIVCBBUlJPVzs7OzsKKzI3QjQ7QkxBQ0stRkVBVEhFUkVEIFNPVVRIIEVBU1QgQVJST1c7U287MDtPTjs7Ozs7TjtCTEFDSy1GRUFUSEVSRUQgTE9XRVIgUklHSFQgQVJST1c7Ozs7CisyN0I1O0JMQUNLLUZFQVRIRVJFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047QkxBQ0stRkVBVEhFUkVEIFJJR0hUIEFSUk9XOzs7OworMjdCNjtCTEFDSy1GRUFUSEVSRUQgTk9SVEggRUFTVCBBUlJPVztTbzswO09OOzs7OztOO0JMQUNLLUZFQVRIRVJFRCBVUFBFUiBSSUdIVCBBUlJPVzs7OzsKKzI3Qjc7SEVBVlkgQkxBQ0stRkVBVEhFUkVEIFNPVVRIIEVBU1QgQVJST1c7U287MDtPTjs7Ozs7TjtIRUFWWSBCTEFDSy1GRUFUSEVSRUQgTE9XRVIgUklHSFQgQVJST1c7Ozs7CisyN0I4O0hFQVZZIEJMQUNLLUZFQVRIRVJFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047SEVBVlkgQkxBQ0stRkVBVEhFUkVEIFJJR0hUIEFSUk9XOzs7OworMjdCOTtIRUFWWSBCTEFDSy1GRUFUSEVSRUQgTk9SVEggRUFTVCBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIEJMQUNLLUZFQVRIRVJFRCBVUFBFUiBSSUdIVCBBUlJPVzs7OzsKKzI3QkE7VEVBUkRST1AtQkFSQkVEIFJJR0hUV0FSRFMgQVJST1c7U287MDtPTjs7Ozs7TjtURUFSRFJPUC1CQVJCRUQgUklHSFQgQVJST1c7Ozs7CisyN0JCO0hFQVZZIFRFQVJEUk9QLVNIQU5LRUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIFRFQVJEUk9QLVNIQU5LRUQgUklHSFQgQVJST1c7Ozs7CisyN0JDO1dFREdFLVRBSUxFRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047V0VER0UtVEFJTEVEIFJJR0hUIEFSUk9XOzs7OworMjdCRDtIRUFWWSBXRURHRS1UQUlMRUQgUklHSFRXQVJEUyBBUlJPVztTbzswO09OOzs7OztOO0hFQVZZIFdFREdFLVRBSUxFRCBSSUdIVCBBUlJPVzs7OzsKKzI3QkU7T1BFTi1PVVRMSU5FRCBSSUdIVFdBUkRTIEFSUk9XO1NvOzA7T047Ozs7O047T1BFTi1PVVRMSU5FRCBSSUdIVCBBUlJPVzs7OzsKKzI4MDA7QlJBSUxMRSBQQVRURVJOIEJMQU5LO1NvOzA7T047Ozs7O047Ozs7OworMjgwMTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xO1NvOzA7T047Ozs7O047Ozs7OworMjgwMjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yO1NvOzA7T047Ozs7O047Ozs7OworMjgwMztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjtTbzswO09OOzs7OztOOzs7OzsKKzI4MDQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMztTbzswO09OOzs7OztOOzs7OzsKKzI4MDU7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODA2O0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzO1NvOzA7T047Ozs7O047Ozs7OworMjgwNztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODA4O0JSQUlMTEUgUEFUVEVSTiBET1RTLTQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODA5O0JSQUlMTEUgUEFUVEVSTiBET1RTLTE0O1NvOzA7T047Ozs7O047Ozs7OworMjgwQTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDtTbzswO09OOzs7OztOOzs7OzsKKzI4MEI7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI0O1NvOzA7T047Ozs7O047Ozs7OworMjgwQztCUkFJTExFIFBBVFRFUk4gRE9UUy0zNDtTbzswO09OOzs7OztOOzs7OzsKKzI4MEQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0O1NvOzA7T047Ozs7O047Ozs7OworMjgwRTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODBGO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODEwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODExO0JSQUlMTEUgUEFUVEVSTiBET1RTLTE1O1NvOzA7T047Ozs7O047Ozs7OworMjgxMjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNTtTbzswO09OOzs7OztOOzs7OzsKKzI4MTM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI1O1NvOzA7T047Ozs7O047Ozs7OworMjgxNDtCUkFJTExFIFBBVFRFUk4gRE9UUy0zNTtTbzswO09OOzs7OztOOzs7OzsKKzI4MTU7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM1O1NvOzA7T047Ozs7O047Ozs7OworMjgxNjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODE3O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODE4O0JSQUlMTEUgUEFUVEVSTiBET1RTLTQ1O1NvOzA7T047Ozs7O047Ozs7OworMjgxOTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODFBO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI0NTtTbzswO09OOzs7OztOOzs7OzsKKzI4MUI7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI0NTtTbzswO09OOzs7OztOOzs7OzsKKzI4MUM7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ1O1NvOzA7T047Ozs7O047Ozs7OworMjgxRDtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzQ1O1NvOzA7T047Ozs7O047Ozs7OworMjgxRTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzQ1O1NvOzA7T047Ozs7O047Ozs7OworMjgxRjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0NTtTbzswO09OOzs7OztOOzs7OzsKKzI4MjA7QlJBSUxMRSBQQVRURVJOIERPVFMtNjtTbzswO09OOzs7OztOOzs7OzsKKzI4MjE7QlJBSUxMRSBQQVRURVJOIERPVFMtMTY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODIyO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI2O1NvOzA7T047Ozs7O047Ozs7OworMjgyMztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODI0O0JSQUlMTEUgUEFUVEVSTiBET1RTLTM2O1NvOzA7T047Ozs7O047Ozs7OworMjgyNTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODI2O0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNjtTbzswO09OOzs7OztOOzs7OzsKKzI4Mjc7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNjtTbzswO09OOzs7OztOOzs7OzsKKzI4Mjg7QlJBSUxMRSBQQVRURVJOIERPVFMtNDY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODI5O0JSQUlMTEUgUEFUVEVSTiBET1RTLTE0NjtTbzswO09OOzs7OztOOzs7OzsKKzI4MkE7QlJBSUxMRSBQQVRURVJOIERPVFMtMjQ2O1NvOzA7T047Ozs7O047Ozs7OworMjgyQjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjQ2O1NvOzA7T047Ozs7O047Ozs7OworMjgyQztCUkFJTExFIFBBVFRFUk4gRE9UUy0zNDY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODJEO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNDY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODJFO0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNDY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODJGO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzQ2O1NvOzA7T047Ozs7O047Ozs7OworMjgzMDtCUkFJTExFIFBBVFRFUk4gRE9UUy01NjtTbzswO09OOzs7OztOOzs7OzsKKzI4MzE7QlJBSUxMRSBQQVRURVJOIERPVFMtMTU2O1NvOzA7T047Ozs7O047Ozs7OworMjgzMjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNTY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODMzO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNTY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODM0O0JSQUlMTEUgUEFUVEVSTiBET1RTLTM1NjtTbzswO09OOzs7OztOOzs7OzsKKzI4MzU7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM1NjtTbzswO09OOzs7OztOOzs7OzsKKzI4MzY7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM1NjtTbzswO09OOzs7OztOOzs7OzsKKzI4Mzc7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNTY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODM4O0JSQUlMTEUgUEFUVEVSTiBET1RTLTQ1NjtTbzswO09OOzs7OztOOzs7OzsKKzI4Mzk7QlJBSUxMRSBQQVRURVJOIERPVFMtMTQ1NjtTbzswO09OOzs7OztOOzs7OzsKKzI4M0E7QlJBSUxMRSBQQVRURVJOIERPVFMtMjQ1NjtTbzswO09OOzs7OztOOzs7OzsKKzI4M0I7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI0NTY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODNDO0JSQUlMTEUgUEFUVEVSTiBET1RTLTM0NTY7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODNEO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNDU2O1NvOzA7T047Ozs7O047Ozs7OworMjgzRTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzQ1NjtTbzswO09OOzs7OztOOzs7OzsKKzI4M0Y7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNDU2O1NvOzA7T047Ozs7O047Ozs7OworMjg0MDtCUkFJTExFIFBBVFRFUk4gRE9UUy03O1NvOzA7T047Ozs7O047Ozs7OworMjg0MTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNztTbzswO09OOzs7OztOOzs7OzsKKzI4NDI7QlJBSUxMRSBQQVRURVJOIERPVFMtMjc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODQzO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNztTbzswO09OOzs7OztOOzs7OzsKKzI4NDQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMzc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODQ1O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNztTbzswO09OOzs7OztOOzs7OzsKKzI4NDY7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM3O1NvOzA7T047Ozs7O047Ozs7OworMjg0NztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM3O1NvOzA7T047Ozs7O047Ozs7OworMjg0ODtCUkFJTExFIFBBVFRFUk4gRE9UUy00NztTbzswO09OOzs7OztOOzs7OzsKKzI4NDk7QlJBSUxMRSBQQVRURVJOIERPVFMtMTQ3O1NvOzA7T047Ozs7O047Ozs7OworMjg0QTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODRCO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNDc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODRDO0JSQUlMTEUgUEFUVEVSTiBET1RTLTM0NztTbzswO09OOzs7OztOOzs7OzsKKzI4NEQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0NztTbzswO09OOzs7OztOOzs7OzsKKzI4NEU7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM0NztTbzswO09OOzs7OztOOzs7OzsKKzI4NEY7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNDc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODUwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1MTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNTc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODUyO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI1NztTbzswO09OOzs7OztOOzs7OzsKKzI4NTM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI1NztTbzswO09OOzs7OztOOzs7OzsKKzI4NTQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMzU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1NTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1NjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1NztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM1NztTbzswO09OOzs7OztOOzs7OzsKKzI4NTg7QlJBSUxMRSBQQVRURVJOIERPVFMtNDU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1OTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1QTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1QjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjQ1NztTbzswO09OOzs7OztOOzs7OzsKKzI4NUM7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ1NztTbzswO09OOzs7OztOOzs7OzsKKzI4NUQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0NTc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODVFO0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNDU3O1NvOzA7T047Ozs7O047Ozs7OworMjg1RjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0NTc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODYwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2MTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNjc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODYyO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI2NztTbzswO09OOzs7OztOOzs7OzsKKzI4NjM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI2NztTbzswO09OOzs7OztOOzs7OzsKKzI4NjQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMzY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2NTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2NjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2NztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM2NztTbzswO09OOzs7OztOOzs7OzsKKzI4Njg7QlJBSUxMRSBQQVRURVJOIERPVFMtNDY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2OTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2QTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2QjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjQ2NztTbzswO09OOzs7OztOOzs7OzsKKzI4NkM7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ2NztTbzswO09OOzs7OztOOzs7OzsKKzI4NkQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODZFO0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNDY3O1NvOzA7T047Ozs7O047Ozs7OworMjg2RjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODcwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTU2NztTbzswO09OOzs7OztOOzs7OzsKKzI4NzE7QlJBSUxMRSBQQVRURVJOIERPVFMtMTU2NztTbzswO09OOzs7OztOOzs7OzsKKzI4NzI7QlJBSUxMRSBQQVRURVJOIERPVFMtMjU2NztTbzswO09OOzs7OztOOzs7OzsKKzI4NzM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI1Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODc0O0JSQUlMTEUgUEFUVEVSTiBET1RTLTM1Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODc1O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNTY3O1NvOzA7T047Ozs7O047Ozs7OworMjg3NjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzU2NztTbzswO09OOzs7OztOOzs7OzsKKzI4Nzc7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNTY3O1NvOzA7T047Ozs7O047Ozs7OworMjg3ODtCUkFJTExFIFBBVFRFUk4gRE9UUy00NTY3O1NvOzA7T047Ozs7O047Ozs7OworMjg3OTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDU2NztTbzswO09OOzs7OztOOzs7OzsKKzI4N0E7QlJBSUxMRSBQQVRURVJOIERPVFMtMjQ1Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODdCO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNDU2NztTbzswO09OOzs7OztOOzs7OzsKKzI4N0M7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ1Njc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODdEO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNDU2NztTbzswO09OOzs7OztOOzs7OzsKKzI4N0U7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM0NTY3O1NvOzA7T047Ozs7O047Ozs7OworMjg3RjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0NTY3O1NvOzA7T047Ozs7O047Ozs7OworMjg4MDtCUkFJTExFIFBBVFRFUk4gRE9UUy04O1NvOzA7T047Ozs7O047Ozs7OworMjg4MTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xODtTbzswO09OOzs7OztOOzs7OzsKKzI4ODI7QlJBSUxMRSBQQVRURVJOIERPVFMtMjg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODgzO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyODtTbzswO09OOzs7OztOOzs7OzsKKzI4ODQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODg1O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzODtTbzswO09OOzs7OztOOzs7OzsKKzI4ODY7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM4O1NvOzA7T047Ozs7O047Ozs7OworMjg4NztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM4O1NvOzA7T047Ozs7O047Ozs7OworMjg4ODtCUkFJTExFIFBBVFRFUk4gRE9UUy00ODtTbzswO09OOzs7OztOOzs7OzsKKzI4ODk7QlJBSUxMRSBQQVRURVJOIERPVFMtMTQ4O1NvOzA7T047Ozs7O047Ozs7OworMjg4QTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODhCO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNDg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODhDO0JSQUlMTEUgUEFUVEVSTiBET1RTLTM0ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OEQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OEU7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM0ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OEY7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNDg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODkwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5MTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNTg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODkyO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI1ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OTM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI1ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OTQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMzU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5NTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5NjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5NztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM1ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OTg7QlJBSUxMRSBQQVRURVJOIERPVFMtNDU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5OTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5QTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5QjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjQ1ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OUM7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ1ODtTbzswO09OOzs7OztOOzs7OzsKKzI4OUQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0NTg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyODlFO0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNDU4O1NvOzA7T047Ozs7O047Ozs7OworMjg5RjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0NTg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEEwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBMTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNjg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEEyO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QTM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QTQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMzY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBNTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBNjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBNztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QTg7QlJBSUxMRSBQQVRURVJOIERPVFMtNDY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBOTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBQTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBQjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjQ2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QUM7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QUQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEFFO0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNDY4O1NvOzA7T047Ozs7O047Ozs7OworMjhBRjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEIwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTU2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QjE7QlJBSUxMRSBQQVRURVJOIERPVFMtMTU2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QjI7QlJBSUxMRSBQQVRURVJOIERPVFMtMjU2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QjM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI1Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEI0O0JSQUlMTEUgUEFUVEVSTiBET1RTLTM1Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEI1O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNTY4O1NvOzA7T047Ozs7O047Ozs7OworMjhCNjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzU2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4Qjc7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNTY4O1NvOzA7T047Ozs7O047Ozs7OworMjhCODtCUkFJTExFIFBBVFRFUk4gRE9UUy00NTY4O1NvOzA7T047Ozs7O047Ozs7OworMjhCOTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDU2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QkE7QlJBSUxMRSBQQVRURVJOIERPVFMtMjQ1Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEJCO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNDU2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QkM7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ1Njg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEJEO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNDU2ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QkU7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM0NTY4O1NvOzA7T047Ozs7O047Ozs7OworMjhCRjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0NTY4O1NvOzA7T047Ozs7O047Ozs7OworMjhDMDtCUkFJTExFIFBBVFRFUk4gRE9UUy03ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QzE7QlJBSUxMRSBQQVRURVJOIERPVFMtMTc4O1NvOzA7T047Ozs7O047Ozs7OworMjhDMjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEMzO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEM0O0JSQUlMTEUgUEFUVEVSTiBET1RTLTM3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QzU7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4QzY7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4Qzc7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEM4O0JSQUlMTEUgUEFUVEVSTiBET1RTLTQ3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4Qzk7QlJBSUxMRSBQQVRURVJOIERPVFMtMTQ3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4Q0E7QlJBSUxMRSBQQVRURVJOIERPVFMtMjQ3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4Q0I7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI0Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOENDO0JSQUlMTEUgUEFUVEVSTiBET1RTLTM0Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOENEO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEzNDc4O1NvOzA7T047Ozs7O047Ozs7OworMjhDRTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzQ3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4Q0Y7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNDc4O1NvOzA7T047Ozs7O047Ozs7OworMjhEMDtCUkFJTExFIFBBVFRFUk4gRE9UUy01Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEQxO0JSQUlMTEUgUEFUVEVSTiBET1RTLTE1Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEQyO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI1Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEQzO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyNTc4O1NvOzA7T047Ozs7O047Ozs7OworMjhENDtCUkFJTExFIFBBVFRFUk4gRE9UUy0zNTc4O1NvOzA7T047Ozs7O047Ozs7OworMjhENTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzU3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RDY7QlJBSUxMRSBQQVRURVJOIERPVFMtMjM1Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEQ3O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzU3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RDg7QlJBSUxMRSBQQVRURVJOIERPVFMtNDU3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RDk7QlJBSUxMRSBQQVRURVJOIERPVFMtMTQ1Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOERBO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI0NTc4O1NvOzA7T047Ozs7O047Ozs7OworMjhEQjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjQ1Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOERDO0JSQUlMTEUgUEFUVEVSTiBET1RTLTM0NTc4O1NvOzA7T047Ozs7O047Ozs7OworMjhERDtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzQ1Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOERFO0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNDU3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4REY7QlJBSUxMRSBQQVRURVJOIERPVFMtMTIzNDU3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RTA7QlJBSUxMRSBQQVRURVJOIERPVFMtNjc4O1NvOzA7T047Ozs7O047Ozs7OworMjhFMTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNjc4O1NvOzA7T047Ozs7O047Ozs7OworMjhFMjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNjc4O1NvOzA7T047Ozs7O047Ozs7OworMjhFMztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RTQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMzY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RTU7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEU2O0JSQUlMTEUgUEFUVEVSTiBET1RTLTIzNjc4O1NvOzA7T047Ozs7O047Ozs7OworMjhFNztCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEU4O0JSQUlMTEUgUEFUVEVSTiBET1RTLTQ2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEU5O0JSQUlMTEUgUEFUVEVSTiBET1RTLTE0Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhFQTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNDY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RUI7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI0Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhFQztCUkFJTExFIFBBVFRFUk4gRE9UUy0zNDY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RUQ7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM0Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhFRTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzQ2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEVGO0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzQ2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEYwO0JSQUlMTEUgUEFUVEVSTiBET1RTLTU2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEYxO0JSQUlMTEUgUEFUVEVSTiBET1RTLTE1Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhGMjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yNTY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RjM7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI1Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhGNDtCUkFJTExFIFBBVFRFUk4gRE9UUy0zNTY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RjU7QlJBSUxMRSBQQVRURVJOIERPVFMtMTM1Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhGNjtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzU2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEY3O0JSQUlMTEUgUEFUVEVSTiBET1RTLTEyMzU2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEY4O0JSQUlMTEUgUEFUVEVSTiBET1RTLTQ1Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhGOTtCUkFJTExFIFBBVFRFUk4gRE9UUy0xNDU2Nzg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyOEZBO0JSQUlMTEUgUEFUVEVSTiBET1RTLTI0NTY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RkI7QlJBSUxMRSBQQVRURVJOIERPVFMtMTI0NTY3ODtTbzswO09OOzs7OztOOzs7OzsKKzI4RkM7QlJBSUxMRSBQQVRURVJOIERPVFMtMzQ1Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhGRDtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMzQ1Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhGRTtCUkFJTExFIFBBVFRFUk4gRE9UUy0yMzQ1Njc4O1NvOzA7T047Ozs7O047Ozs7OworMjhGRjtCUkFJTExFIFBBVFRFUk4gRE9UUy0xMjM0NTY3ODtTbzswO09OOzs7OztOOzs7OzsKKzJFODA7Q0pLIFJBRElDQUwgUkVQRUFUO1NvOzA7T047Ozs7O047Ozs7OworMkU4MTtDSksgUkFESUNBTCBDTElGRjtTbzswO09OOzs7OztOOzs7OzsKKzJFODI7Q0pLIFJBRElDQUwgU0VDT05EIE9ORTtTbzswO09OOzs7OztOOzs7OzsKKzJFODM7Q0pLIFJBRElDQUwgU0VDT05EIFRXTztTbzswO09OOzs7OztOOzs7OzsKKzJFODQ7Q0pLIFJBRElDQUwgU0VDT05EIFRIUkVFO1NvOzA7T047Ozs7O047Ozs7OworMkU4NTtDSksgUkFESUNBTCBQRVJTT047U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTg2O0NKSyBSQURJQ0FMIEJPWDtTbzswO09OOzs7OztOOzs7OzsKKzJFODc7Q0pLIFJBRElDQUwgVEFCTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTg4O0NKSyBSQURJQ0FMIEtOSUZFIE9ORTtTbzswO09OOzs7OztOOzs7OzsKKzJFODk7Q0pLIFJBRElDQUwgS05JRkUgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkU4QTtDSksgUkFESUNBTCBESVZJTkFUSU9OO1NvOzA7T047Ozs7O047Ozs7OworMkU4QjtDSksgUkFESUNBTCBTRUFMO1NvOzA7T047Ozs7O047Ozs7OworMkU4QztDSksgUkFESUNBTCBTTUFMTCBPTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRThEO0NKSyBSQURJQ0FMIFNNQUxMIFRXTztTbzswO09OOzs7OztOOzs7OzsKKzJFOEU7Q0pLIFJBRElDQUwgTEFNRSBPTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRThGO0NKSyBSQURJQ0FMIExBTUUgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkU5MDtDSksgUkFESUNBTCBMQU1FIFRIUkVFO1NvOzA7T047Ozs7O047Ozs7OworMkU5MTtDSksgUkFESUNBTCBMQU1FIEZPVVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTkyO0NKSyBSQURJQ0FMIFNOQUtFO1NvOzA7T047Ozs7O047Ozs7OworMkU5MztDSksgUkFESUNBTCBUSFJFQUQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTk0O0NKSyBSQURJQ0FMIFNOT1VUIE9ORTtTbzswO09OOzs7OztOOzs7OzsKKzJFOTU7Q0pLIFJBRElDQUwgU05PVVQgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkU5NjtDSksgUkFESUNBTCBIRUFSVCBPTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRTk3O0NKSyBSQURJQ0FMIEhFQVJUIFRXTztTbzswO09OOzs7OztOOzs7OzsKKzJFOTg7Q0pLIFJBRElDQUwgSEFORDtTbzswO09OOzs7OztOOzs7OzsKKzJFOTk7Q0pLIFJBRElDQUwgUkFQO1NvOzA7T047Ozs7O047Ozs7OworMkU5QjtDSksgUkFESUNBTCBDSE9LRTtTbzswO09OOzs7OztOOzs7OzsKKzJFOUM7Q0pLIFJBRElDQUwgU1VOO1NvOzA7T047Ozs7O047Ozs7OworMkU5RDtDSksgUkFESUNBTCBNT09OO1NvOzA7T047Ozs7O047Ozs7OworMkU5RTtDSksgUkFESUNBTCBERUFUSDtTbzswO09OOzs7OztOOzs7OzsKKzJFOUY7Q0pLIFJBRElDQUwgTU9USEVSO1NvOzA7T047PGNvbXBhdD4gNkJDRDs7OztOOzs7OzsKKzJFQTA7Q0pLIFJBRElDQUwgQ0lWSUxJQU47U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUExO0NKSyBSQURJQ0FMIFdBVEVSIE9ORTtTbzswO09OOzs7OztOOzs7OzsKKzJFQTI7Q0pLIFJBRElDQUwgV0FURVIgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkVBMztDSksgUkFESUNBTCBGSVJFO1NvOzA7T047Ozs7O047Ozs7OworMkVBNDtDSksgUkFESUNBTCBQQVcgT05FO1NvOzA7T047Ozs7O047Ozs7OworMkVBNTtDSksgUkFESUNBTCBQQVcgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkVBNjtDSksgUkFESUNBTCBTSU1QTElGSUVEIEhBTEYgVFJFRSBUUlVOSztTbzswO09OOzs7OztOOzs7OzsKKzJFQTc7Q0pLIFJBRElDQUwgQ09XO1NvOzA7T047Ozs7O047Ozs7OworMkVBODtDSksgUkFESUNBTCBET0c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUE5O0NKSyBSQURJQ0FMIEpBREU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUFBO0NKSyBSQURJQ0FMIEJPTFQgT0YgQ0xPVEg7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUFCO0NKSyBSQURJQ0FMIEVZRTtTbzswO09OOzs7OztOOzs7OzsKKzJFQUM7Q0pLIFJBRElDQUwgU1BJUklUIE9ORTtTbzswO09OOzs7OztOOzs7OzsKKzJFQUQ7Q0pLIFJBRElDQUwgU1BJUklUIFRXTztTbzswO09OOzs7OztOOzs7OzsKKzJFQUU7Q0pLIFJBRElDQUwgQkFNQk9PO1NvOzA7T047Ozs7O047Ozs7OworMkVBRjtDSksgUkFESUNBTCBTSUxLO1NvOzA7T047Ozs7O047Ozs7OworMkVCMDtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgU0lMSztTbzswO09OOzs7OztOOzs7OzsKKzJFQjE7Q0pLIFJBRElDQUwgTkVUIE9ORTtTbzswO09OOzs7OztOOzs7OzsKKzJFQjI7Q0pLIFJBRElDQUwgTkVUIFRXTztTbzswO09OOzs7OztOOzs7OzsKKzJFQjM7Q0pLIFJBRElDQUwgTkVUIFRIUkVFO1NvOzA7T047Ozs7O047Ozs7OworMkVCNDtDSksgUkFESUNBTCBORVQgRk9VUjtTbzswO09OOzs7OztOOzs7OzsKKzJFQjU7Q0pLIFJBRElDQUwgTUVTSDtTbzswO09OOzs7OztOOzs7OzsKKzJFQjY7Q0pLIFJBRElDQUwgU0hFRVA7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUI3O0NKSyBSQURJQ0FMIFJBTTtTbzswO09OOzs7OztOOzs7OzsKKzJFQjg7Q0pLIFJBRElDQUwgRVdFO1NvOzA7T047Ozs7O047Ozs7OworMkVCOTtDSksgUkFESUNBTCBPTEQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUJBO0NKSyBSQURJQ0FMIEJSVVNIIE9ORTtTbzswO09OOzs7OztOOzs7OzsKKzJFQkI7Q0pLIFJBRElDQUwgQlJVU0ggVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkVCQztDSksgUkFESUNBTCBNRUFUO1NvOzA7T047Ozs7O047Ozs7OworMkVCRDtDSksgUkFESUNBTCBNT1JUQVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUJFO0NKSyBSQURJQ0FMIEdSQVNTIE9ORTtTbzswO09OOzs7OztOOzs7OzsKKzJFQkY7Q0pLIFJBRElDQUwgR1JBU1MgVFdPO1NvOzA7T047Ozs7O047Ozs7OworMkVDMDtDSksgUkFESUNBTCBHUkFTUyBUSFJFRTtTbzswO09OOzs7OztOOzs7OzsKKzJFQzE7Q0pLIFJBRElDQUwgVElHRVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUMyO0NKSyBSQURJQ0FMIENMT1RIRVM7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUMzO0NKSyBSQURJQ0FMIFdFU1QgT05FO1NvOzA7T047Ozs7O047Ozs7OworMkVDNDtDSksgUkFESUNBTCBXRVNUIFRXTztTbzswO09OOzs7OztOOzs7OzsKKzJFQzU7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIFNFRTtTbzswO09OOzs7OztOOzs7OzsKKzJFQzY7Q0pLIFJBRElDQUwgU0lNUExJRklFRCBIT1JOO1NvOzA7T047Ozs7O047Ozs7OworMkVDNztDSksgUkFESUNBTCBIT1JOO1NvOzA7T047Ozs7O047Ozs7OworMkVDODtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgU1BFRUNIO1NvOzA7T047Ozs7O047Ozs7OworMkVDOTtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgU0hFTEw7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUNBO0NKSyBSQURJQ0FMIEZPT1Q7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUNCO0NKSyBSQURJQ0FMIEMtU0lNUExJRklFRCBDQVJUO1NvOzA7T047Ozs7O047Ozs7OworMkVDQztDSksgUkFESUNBTCBTSU1QTElGSUVEIFdBTEs7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUNEO0NKSyBSQURJQ0FMIFdBTEsgT05FO1NvOzA7T047Ozs7O047Ozs7OworMkVDRTtDSksgUkFESUNBTCBXQUxLIFRXTztTbzswO09OOzs7OztOOzs7OzsKKzJFQ0Y7Q0pLIFJBRElDQUwgQ0lUWTtTbzswO09OOzs7OztOOzs7OzsKKzJFRDA7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIEdPTEQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUQxO0NKSyBSQURJQ0FMIExPTkcgT05FO1NvOzA7T047Ozs7O047Ozs7OworMkVEMjtDSksgUkFESUNBTCBMT05HIFRXTztTbzswO09OOzs7OztOOzs7OzsKKzJFRDM7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIExPTkc7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUQ0O0NKSyBSQURJQ0FMIEMtU0lNUExJRklFRCBHQVRFO1NvOzA7T047Ozs7O047Ozs7OworMkVENTtDSksgUkFESUNBTCBNT1VORCBPTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUQ2O0NKSyBSQURJQ0FMIE1PVU5EIFRXTztTbzswO09OOzs7OztOOzs7OzsKKzJFRDc7Q0pLIFJBRElDQUwgUkFJTjtTbzswO09OOzs7OztOOzs7OzsKKzJFRDg7Q0pLIFJBRElDQUwgQkxVRTtTbzswO09OOzs7OztOOzs7OzsKKzJFRDk7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIFRBTk5FRCBMRUFUSEVSO1NvOzA7T047Ozs7O047Ozs7OworMkVEQTtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgTEVBRjtTbzswO09OOzs7OztOOzs7OzsKKzJFREI7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIFdJTkQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRURDO0NKSyBSQURJQ0FMIEMtU0lNUExJRklFRCBGTFk7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUREO0NKSyBSQURJQ0FMIEVBVCBPTkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRURFO0NKSyBSQURJQ0FMIEVBVCBUV087U287MDtPTjs7Ozs7Tjs7Ozs7CisyRURGO0NKSyBSQURJQ0FMIEVBVCBUSFJFRTtTbzswO09OOzs7OztOOzs7OzsKKzJFRTA7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIEVBVDtTbzswO09OOzs7OztOOzs7OzsKKzJFRTE7Q0pLIFJBRElDQUwgSEVBRDtTbzswO09OOzs7OztOOzs7OzsKKzJFRTI7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIEhPUlNFO1NvOzA7T047Ozs7O047Ozs7OworMkVFMztDSksgUkFESUNBTCBCT05FO1NvOzA7T047Ozs7O047Ozs7OworMkVFNDtDSksgUkFESUNBTCBHSE9TVDtTbzswO09OOzs7OztOOzs7OzsKKzJFRTU7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIEZJU0g7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUU2O0NKSyBSQURJQ0FMIEMtU0lNUExJRklFRCBCSVJEO1NvOzA7T047Ozs7O047Ozs7OworMkVFNztDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgU0FMVDtTbzswO09OOzs7OztOOzs7OzsKKzJFRTg7Q0pLIFJBRElDQUwgU0lNUExJRklFRCBXSEVBVDtTbzswO09OOzs7OztOOzs7OzsKKzJFRTk7Q0pLIFJBRElDQUwgU0lNUExJRklFRCBZRUxMT1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUVBO0NKSyBSQURJQ0FMIEMtU0lNUExJRklFRCBGUk9HO1NvOzA7T047Ozs7O047Ozs7OworMkVFQjtDSksgUkFESUNBTCBKLVNJTVBMSUZJRUQgRVZFTjtTbzswO09OOzs7OztOOzs7OzsKKzJFRUM7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIEVWRU47U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUVEO0NKSyBSQURJQ0FMIEotU0lNUExJRklFRCBUT09USDtTbzswO09OOzs7OztOOzs7OzsKKzJFRUU7Q0pLIFJBRElDQUwgQy1TSU1QTElGSUVEIFRPT1RIO1NvOzA7T047Ozs7O047Ozs7OworMkVFRjtDSksgUkFESUNBTCBKLVNJTVBMSUZJRUQgRFJBR09OO1NvOzA7T047Ozs7O047Ozs7OworMkVGMDtDSksgUkFESUNBTCBDLVNJTVBMSUZJRUQgRFJBR09OO1NvOzA7T047Ozs7O047Ozs7OworMkVGMTtDSksgUkFESUNBTCBUVVJUTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUYyO0NKSyBSQURJQ0FMIEotU0lNUExJRklFRCBUVVJUTEU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRUYzO0NKSyBSQURJQ0FMIEMtU0lNUExJRklFRCBUVVJUTEU7U287MDtPTjs8Y29tcGF0PiA5RjlGOzs7O047Ozs7OworMkYwMDtLQU5HWEkgUkFESUNBTCBPTkU7U287MDtPTjs8Y29tcGF0PiA0RTAwOzs7O047Ozs7OworMkYwMTtLQU5HWEkgUkFESUNBTCBMSU5FO1NvOzA7T047PGNvbXBhdD4gNEUyODs7OztOOzs7OzsKKzJGMDI7S0FOR1hJIFJBRElDQUwgRE9UO1NvOzA7T047PGNvbXBhdD4gNEUzNjs7OztOOzs7OzsKKzJGMDM7S0FOR1hJIFJBRElDQUwgU0xBU0g7U287MDtPTjs8Y29tcGF0PiA0RTNGOzs7O047Ozs7OworMkYwNDtLQU5HWEkgUkFESUNBTCBTRUNPTkQ7U287MDtPTjs8Y29tcGF0PiA0RTU5Ozs7O047Ozs7OworMkYwNTtLQU5HWEkgUkFESUNBTCBIT09LO1NvOzA7T047PGNvbXBhdD4gNEU4NTs7OztOOzs7OzsKKzJGMDY7S0FOR1hJIFJBRElDQUwgVFdPO1NvOzA7T047PGNvbXBhdD4gNEU4Qzs7OztOOzs7OzsKKzJGMDc7S0FOR1hJIFJBRElDQUwgTElEO1NvOzA7T047PGNvbXBhdD4gNEVBMDs7OztOOzs7OzsKKzJGMDg7S0FOR1hJIFJBRElDQUwgTUFOO1NvOzA7T047PGNvbXBhdD4gNEVCQTs7OztOOzs7OzsKKzJGMDk7S0FOR1hJIFJBRElDQUwgTEVHUztTbzswO09OOzxjb21wYXQ+IDUxM0Y7Ozs7Tjs7Ozs7CisyRjBBO0tBTkdYSSBSQURJQ0FMIEVOVEVSO1NvOzA7T047PGNvbXBhdD4gNTE2NTs7OztOOzs7OzsKKzJGMEI7S0FOR1hJIFJBRElDQUwgRUlHSFQ7U287MDtPTjs8Y29tcGF0PiA1MTZCOzs7O047Ozs7OworMkYwQztLQU5HWEkgUkFESUNBTCBET1dOIEJPWDtTbzswO09OOzxjb21wYXQ+IDUxODI7Ozs7Tjs7Ozs7CisyRjBEO0tBTkdYSSBSQURJQ0FMIENPVkVSO1NvOzA7T047PGNvbXBhdD4gNTE5Njs7OztOOzs7OzsKKzJGMEU7S0FOR1hJIFJBRElDQUwgSUNFO1NvOzA7T047PGNvbXBhdD4gNTFBQjs7OztOOzs7OzsKKzJGMEY7S0FOR1hJIFJBRElDQUwgVEFCTEU7U287MDtPTjs8Y29tcGF0PiA1MUUwOzs7O047Ozs7OworMkYxMDtLQU5HWEkgUkFESUNBTCBPUEVOIEJPWDtTbzswO09OOzxjb21wYXQ+IDUxRjU7Ozs7Tjs7Ozs7CisyRjExO0tBTkdYSSBSQURJQ0FMIEtOSUZFO1NvOzA7T047PGNvbXBhdD4gNTIwMDs7OztOOzs7OzsKKzJGMTI7S0FOR1hJIFJBRElDQUwgUE9XRVI7U287MDtPTjs8Y29tcGF0PiA1MjlCOzs7O047Ozs7OworMkYxMztLQU5HWEkgUkFESUNBTCBXUkFQO1NvOzA7T047PGNvbXBhdD4gNTJGOTs7OztOOzs7OzsKKzJGMTQ7S0FOR1hJIFJBRElDQUwgU1BPT047U287MDtPTjs8Y29tcGF0PiA1MzE1Ozs7O047Ozs7OworMkYxNTtLQU5HWEkgUkFESUNBTCBSSUdIVCBPUEVOIEJPWDtTbzswO09OOzxjb21wYXQ+IDUzMUE7Ozs7Tjs7Ozs7CisyRjE2O0tBTkdYSSBSQURJQ0FMIEhJRElORyBFTkNMT1NVUkU7U287MDtPTjs8Y29tcGF0PiA1MzM4Ozs7O047Ozs7OworMkYxNztLQU5HWEkgUkFESUNBTCBURU47U287MDtPTjs8Y29tcGF0PiA1MzQxOzs7O047Ozs7OworMkYxODtLQU5HWEkgUkFESUNBTCBESVZJTkFUSU9OO1NvOzA7T047PGNvbXBhdD4gNTM1Qzs7OztOOzs7OzsKKzJGMTk7S0FOR1hJIFJBRElDQUwgU0VBTDtTbzswO09OOzxjb21wYXQ+IDUzNjk7Ozs7Tjs7Ozs7CisyRjFBO0tBTkdYSSBSQURJQ0FMIENMSUZGO1NvOzA7T047PGNvbXBhdD4gNTM4Mjs7OztOOzs7OzsKKzJGMUI7S0FOR1hJIFJBRElDQUwgUFJJVkFURTtTbzswO09OOzxjb21wYXQ+IDUzQjY7Ozs7Tjs7Ozs7CisyRjFDO0tBTkdYSSBSQURJQ0FMIEFHQUlOO1NvOzA7T047PGNvbXBhdD4gNTNDODs7OztOOzs7OzsKKzJGMUQ7S0FOR1hJIFJBRElDQUwgTU9VVEg7U287MDtPTjs8Y29tcGF0PiA1M0UzOzs7O047Ozs7OworMkYxRTtLQU5HWEkgUkFESUNBTCBFTkNMT1NVUkU7U287MDtPTjs8Y29tcGF0PiA1NkQ3Ozs7O047Ozs7OworMkYxRjtLQU5HWEkgUkFESUNBTCBFQVJUSDtTbzswO09OOzxjb21wYXQ+IDU3MUY7Ozs7Tjs7Ozs7CisyRjIwO0tBTkdYSSBSQURJQ0FMIFNDSE9MQVI7U287MDtPTjs8Y29tcGF0PiA1OEVCOzs7O047Ozs7OworMkYyMTtLQU5HWEkgUkFESUNBTCBHTztTbzswO09OOzxjb21wYXQ+IDU5MDI7Ozs7Tjs7Ozs7CisyRjIyO0tBTkdYSSBSQURJQ0FMIEdPIFNMT1dMWTtTbzswO09OOzxjb21wYXQ+IDU5MEE7Ozs7Tjs7Ozs7CisyRjIzO0tBTkdYSSBSQURJQ0FMIEVWRU5JTkc7U287MDtPTjs8Y29tcGF0PiA1OTE1Ozs7O047Ozs7OworMkYyNDtLQU5HWEkgUkFESUNBTCBCSUc7U287MDtPTjs8Y29tcGF0PiA1OTI3Ozs7O047Ozs7OworMkYyNTtLQU5HWEkgUkFESUNBTCBXT01BTjtTbzswO09OOzxjb21wYXQ+IDU5NzM7Ozs7Tjs7Ozs7CisyRjI2O0tBTkdYSSBSQURJQ0FMIENISUxEO1NvOzA7T047PGNvbXBhdD4gNUI1MDs7OztOOzs7OzsKKzJGMjc7S0FOR1hJIFJBRElDQUwgUk9PRjtTbzswO09OOzxjb21wYXQ+IDVCODA7Ozs7Tjs7Ozs7CisyRjI4O0tBTkdYSSBSQURJQ0FMIElOQ0g7U287MDtPTjs8Y29tcGF0PiA1QkY4Ozs7O047Ozs7OworMkYyOTtLQU5HWEkgUkFESUNBTCBTTUFMTDtTbzswO09OOzxjb21wYXQ+IDVDMEY7Ozs7Tjs7Ozs7CisyRjJBO0tBTkdYSSBSQURJQ0FMIExBTUU7U287MDtPTjs8Y29tcGF0PiA1QzIyOzs7O047Ozs7OworMkYyQjtLQU5HWEkgUkFESUNBTCBDT1JQU0U7U287MDtPTjs8Y29tcGF0PiA1QzM4Ozs7O047Ozs7OworMkYyQztLQU5HWEkgUkFESUNBTCBTUFJPVVQ7U287MDtPTjs8Y29tcGF0PiA1QzZFOzs7O047Ozs7OworMkYyRDtLQU5HWEkgUkFESUNBTCBNT1VOVEFJTjtTbzswO09OOzxjb21wYXQ+IDVDNzE7Ozs7Tjs7Ozs7CisyRjJFO0tBTkdYSSBSQURJQ0FMIFJJVkVSO1NvOzA7T047PGNvbXBhdD4gNUREQjs7OztOOzs7OzsKKzJGMkY7S0FOR1hJIFJBRElDQUwgV09SSztTbzswO09OOzxjb21wYXQ+IDVERTU7Ozs7Tjs7Ozs7CisyRjMwO0tBTkdYSSBSQURJQ0FMIE9ORVNFTEY7U287MDtPTjs8Y29tcGF0PiA1REYxOzs7O047Ozs7OworMkYzMTtLQU5HWEkgUkFESUNBTCBUVVJCQU47U287MDtPTjs8Y29tcGF0PiA1REZFOzs7O047Ozs7OworMkYzMjtLQU5HWEkgUkFESUNBTCBEUlk7U287MDtPTjs8Y29tcGF0PiA1RTcyOzs7O047Ozs7OworMkYzMztLQU5HWEkgUkFESUNBTCBTSE9SVCBUSFJFQUQ7U287MDtPTjs8Y29tcGF0PiA1RTdBOzs7O047Ozs7OworMkYzNDtLQU5HWEkgUkFESUNBTCBET1RURUQgQ0xJRkY7U287MDtPTjs8Y29tcGF0PiA1RTdGOzs7O047Ozs7OworMkYzNTtLQU5HWEkgUkFESUNBTCBMT05HIFNUUklERTtTbzswO09OOzxjb21wYXQ+IDVFRjQ7Ozs7Tjs7Ozs7CisyRjM2O0tBTkdYSSBSQURJQ0FMIFRXTyBIQU5EUztTbzswO09OOzxjb21wYXQ+IDVFRkU7Ozs7Tjs7Ozs7CisyRjM3O0tBTkdYSSBSQURJQ0FMIFNIT09UO1NvOzA7T047PGNvbXBhdD4gNUYwQjs7OztOOzs7OzsKKzJGMzg7S0FOR1hJIFJBRElDQUwgQk9XO1NvOzA7T047PGNvbXBhdD4gNUYxMzs7OztOOzs7OzsKKzJGMzk7S0FOR1hJIFJBRElDQUwgU05PVVQ7U287MDtPTjs8Y29tcGF0PiA1RjUwOzs7O047Ozs7OworMkYzQTtLQU5HWEkgUkFESUNBTCBCUklTVExFO1NvOzA7T047PGNvbXBhdD4gNUY2MTs7OztOOzs7OzsKKzJGM0I7S0FOR1hJIFJBRElDQUwgU1RFUDtTbzswO09OOzxjb21wYXQ+IDVGNzM7Ozs7Tjs7Ozs7CisyRjNDO0tBTkdYSSBSQURJQ0FMIEhFQVJUO1NvOzA7T047PGNvbXBhdD4gNUZDMzs7OztOOzs7OzsKKzJGM0Q7S0FOR1hJIFJBRElDQUwgSEFMQkVSRDtTbzswO09OOzxjb21wYXQ+IDYyMDg7Ozs7Tjs7Ozs7CisyRjNFO0tBTkdYSSBSQURJQ0FMIERPT1I7U287MDtPTjs8Y29tcGF0PiA2MjM2Ozs7O047Ozs7OworMkYzRjtLQU5HWEkgUkFESUNBTCBIQU5EO1NvOzA7T047PGNvbXBhdD4gNjI0Qjs7OztOOzs7OzsKKzJGNDA7S0FOR1hJIFJBRElDQUwgQlJBTkNIO1NvOzA7T047PGNvbXBhdD4gNjUyRjs7OztOOzs7OzsKKzJGNDE7S0FOR1hJIFJBRElDQUwgUkFQO1NvOzA7T047PGNvbXBhdD4gNjUzNDs7OztOOzs7OzsKKzJGNDI7S0FOR1hJIFJBRElDQUwgU0NSSVBUO1NvOzA7T047PGNvbXBhdD4gNjU4Nzs7OztOOzs7OzsKKzJGNDM7S0FOR1hJIFJBRElDQUwgRElQUEVSO1NvOzA7T047PGNvbXBhdD4gNjU5Nzs7OztOOzs7OzsKKzJGNDQ7S0FOR1hJIFJBRElDQUwgQVhFO1NvOzA7T047PGNvbXBhdD4gNjVBNDs7OztOOzs7OzsKKzJGNDU7S0FOR1hJIFJBRElDQUwgU1FVQVJFO1NvOzA7T047PGNvbXBhdD4gNjVCOTs7OztOOzs7OzsKKzJGNDY7S0FOR1hJIFJBRElDQUwgTk9UO1NvOzA7T047PGNvbXBhdD4gNjVFMDs7OztOOzs7OzsKKzJGNDc7S0FOR1hJIFJBRElDQUwgU1VOO1NvOzA7T047PGNvbXBhdD4gNjVFNTs7OztOOzs7OzsKKzJGNDg7S0FOR1hJIFJBRElDQUwgU0FZO1NvOzA7T047PGNvbXBhdD4gNjZGMDs7OztOOzs7OzsKKzJGNDk7S0FOR1hJIFJBRElDQUwgTU9PTjtTbzswO09OOzxjb21wYXQ+IDY3MDg7Ozs7Tjs7Ozs7CisyRjRBO0tBTkdYSSBSQURJQ0FMIFRSRUU7U287MDtPTjs8Y29tcGF0PiA2NzI4Ozs7O047Ozs7OworMkY0QjtLQU5HWEkgUkFESUNBTCBMQUNLO1NvOzA7T047PGNvbXBhdD4gNkIyMDs7OztOOzs7OzsKKzJGNEM7S0FOR1hJIFJBRElDQUwgU1RPUDtTbzswO09OOzxjb21wYXQ+IDZCNjI7Ozs7Tjs7Ozs7CisyRjREO0tBTkdYSSBSQURJQ0FMIERFQVRIO1NvOzA7T047PGNvbXBhdD4gNkI3OTs7OztOOzs7OzsKKzJGNEU7S0FOR1hJIFJBRElDQUwgV0VBUE9OO1NvOzA7T047PGNvbXBhdD4gNkJCMzs7OztOOzs7OzsKKzJGNEY7S0FOR1hJIFJBRElDQUwgRE8gTk9UO1NvOzA7T047PGNvbXBhdD4gNkJDQjs7OztOOzs7OzsKKzJGNTA7S0FOR1hJIFJBRElDQUwgQ09NUEFSRTtTbzswO09OOzxjb21wYXQ+IDZCRDQ7Ozs7Tjs7Ozs7CisyRjUxO0tBTkdYSSBSQURJQ0FMIEZVUjtTbzswO09OOzxjb21wYXQ+IDZCREI7Ozs7Tjs7Ozs7CisyRjUyO0tBTkdYSSBSQURJQ0FMIENMQU47U287MDtPTjs8Y29tcGF0PiA2QzBGOzs7O047Ozs7OworMkY1MztLQU5HWEkgUkFESUNBTCBTVEVBTTtTbzswO09OOzxjb21wYXQ+IDZDMTQ7Ozs7Tjs7Ozs7CisyRjU0O0tBTkdYSSBSQURJQ0FMIFdBVEVSO1NvOzA7T047PGNvbXBhdD4gNkMzNDs7OztOOzs7OzsKKzJGNTU7S0FOR1hJIFJBRElDQUwgRklSRTtTbzswO09OOzxjb21wYXQ+IDcwNkI7Ozs7Tjs7Ozs7CisyRjU2O0tBTkdYSSBSQURJQ0FMIENMQVc7U287MDtPTjs8Y29tcGF0PiA3MjJBOzs7O047Ozs7OworMkY1NztLQU5HWEkgUkFESUNBTCBGQVRIRVI7U287MDtPTjs8Y29tcGF0PiA3MjM2Ozs7O047Ozs7OworMkY1ODtLQU5HWEkgUkFESUNBTCBET1VCTEUgWDtTbzswO09OOzxjb21wYXQ+IDcyM0I7Ozs7Tjs7Ozs7CisyRjU5O0tBTkdYSSBSQURJQ0FMIEhBTEYgVFJFRSBUUlVOSztTbzswO09OOzxjb21wYXQ+IDcyM0Y7Ozs7Tjs7Ozs7CisyRjVBO0tBTkdYSSBSQURJQ0FMIFNMSUNFO1NvOzA7T047PGNvbXBhdD4gNzI0Nzs7OztOOzs7OzsKKzJGNUI7S0FOR1hJIFJBRElDQUwgRkFORztTbzswO09OOzxjb21wYXQ+IDcyNTk7Ozs7Tjs7Ozs7CisyRjVDO0tBTkdYSSBSQURJQ0FMIENPVztTbzswO09OOzxjb21wYXQ+IDcyNUI7Ozs7Tjs7Ozs7CisyRjVEO0tBTkdYSSBSQURJQ0FMIERPRztTbzswO09OOzxjb21wYXQ+IDcyQUM7Ozs7Tjs7Ozs7CisyRjVFO0tBTkdYSSBSQURJQ0FMIFBST0ZPVU5EO1NvOzA7T047PGNvbXBhdD4gNzM4NDs7OztOOzs7OzsKKzJGNUY7S0FOR1hJIFJBRElDQUwgSkFERTtTbzswO09OOzxjb21wYXQ+IDczODk7Ozs7Tjs7Ozs7CisyRjYwO0tBTkdYSSBSQURJQ0FMIE1FTE9OO1NvOzA7T047PGNvbXBhdD4gNzREQzs7OztOOzs7OzsKKzJGNjE7S0FOR1hJIFJBRElDQUwgVElMRTtTbzswO09OOzxjb21wYXQ+IDc0RTY7Ozs7Tjs7Ozs7CisyRjYyO0tBTkdYSSBSQURJQ0FMIFNXRUVUO1NvOzA7T047PGNvbXBhdD4gNzUxODs7OztOOzs7OzsKKzJGNjM7S0FOR1hJIFJBRElDQUwgTElGRTtTbzswO09OOzxjb21wYXQ+IDc1MUY7Ozs7Tjs7Ozs7CisyRjY0O0tBTkdYSSBSQURJQ0FMIFVTRTtTbzswO09OOzxjb21wYXQ+IDc1Mjg7Ozs7Tjs7Ozs7CisyRjY1O0tBTkdYSSBSQURJQ0FMIEZJRUxEO1NvOzA7T047PGNvbXBhdD4gNzUzMDs7OztOOzs7OzsKKzJGNjY7S0FOR1hJIFJBRElDQUwgQk9MVCBPRiBDTE9USDtTbzswO09OOzxjb21wYXQ+IDc1OEI7Ozs7Tjs7Ozs7CisyRjY3O0tBTkdYSSBSQURJQ0FMIFNJQ0tORVNTO1NvOzA7T047PGNvbXBhdD4gNzU5Mjs7OztOOzs7OzsKKzJGNjg7S0FOR1hJIFJBRElDQUwgRE9UVEVEIFRFTlQ7U287MDtPTjs8Y29tcGF0PiA3Njc2Ozs7O047Ozs7OworMkY2OTtLQU5HWEkgUkFESUNBTCBXSElURTtTbzswO09OOzxjb21wYXQ+IDc2N0Q7Ozs7Tjs7Ozs7CisyRjZBO0tBTkdYSSBSQURJQ0FMIFNLSU47U287MDtPTjs8Y29tcGF0PiA3NkFFOzs7O047Ozs7OworMkY2QjtLQU5HWEkgUkFESUNBTCBESVNIO1NvOzA7T047PGNvbXBhdD4gNzZCRjs7OztOOzs7OzsKKzJGNkM7S0FOR1hJIFJBRElDQUwgRVlFO1NvOzA7T047PGNvbXBhdD4gNzZFRTs7OztOOzs7OzsKKzJGNkQ7S0FOR1hJIFJBRElDQUwgU1BFQVI7U287MDtPTjs8Y29tcGF0PiA3N0RCOzs7O047Ozs7OworMkY2RTtLQU5HWEkgUkFESUNBTCBBUlJPVztTbzswO09OOzxjb21wYXQ+IDc3RTI7Ozs7Tjs7Ozs7CisyRjZGO0tBTkdYSSBSQURJQ0FMIFNUT05FO1NvOzA7T047PGNvbXBhdD4gNzdGMzs7OztOOzs7OzsKKzJGNzA7S0FOR1hJIFJBRElDQUwgU1BJUklUO1NvOzA7T047PGNvbXBhdD4gNzkzQTs7OztOOzs7OzsKKzJGNzE7S0FOR1hJIFJBRElDQUwgVFJBQ0s7U287MDtPTjs8Y29tcGF0PiA3OUI4Ozs7O047Ozs7OworMkY3MjtLQU5HWEkgUkFESUNBTCBHUkFJTjtTbzswO09OOzxjb21wYXQ+IDc5QkU7Ozs7Tjs7Ozs7CisyRjczO0tBTkdYSSBSQURJQ0FMIENBVkU7U287MDtPTjs8Y29tcGF0PiA3QTc0Ozs7O047Ozs7OworMkY3NDtLQU5HWEkgUkFESUNBTCBTVEFORDtTbzswO09OOzxjb21wYXQ+IDdBQ0I7Ozs7Tjs7Ozs7CisyRjc1O0tBTkdYSSBSQURJQ0FMIEJBTUJPTztTbzswO09OOzxjb21wYXQ+IDdBRjk7Ozs7Tjs7Ozs7CisyRjc2O0tBTkdYSSBSQURJQ0FMIFJJQ0U7U287MDtPTjs8Y29tcGF0PiA3QzczOzs7O047Ozs7OworMkY3NztLQU5HWEkgUkFESUNBTCBTSUxLO1NvOzA7T047PGNvbXBhdD4gN0NGODs7OztOOzs7OzsKKzJGNzg7S0FOR1hJIFJBRElDQUwgSkFSO1NvOzA7T047PGNvbXBhdD4gN0YzNjs7OztOOzs7OzsKKzJGNzk7S0FOR1hJIFJBRElDQUwgTkVUO1NvOzA7T047PGNvbXBhdD4gN0Y1MTs7OztOOzs7OzsKKzJGN0E7S0FOR1hJIFJBRElDQUwgU0hFRVA7U287MDtPTjs8Y29tcGF0PiA3RjhBOzs7O047Ozs7OworMkY3QjtLQU5HWEkgUkFESUNBTCBGRUFUSEVSO1NvOzA7T047PGNvbXBhdD4gN0ZCRDs7OztOOzs7OzsKKzJGN0M7S0FOR1hJIFJBRElDQUwgT0xEO1NvOzA7T047PGNvbXBhdD4gODAwMTs7OztOOzs7OzsKKzJGN0Q7S0FOR1hJIFJBRElDQUwgQU5EO1NvOzA7T047PGNvbXBhdD4gODAwQzs7OztOOzs7OzsKKzJGN0U7S0FOR1hJIFJBRElDQUwgUExPVztTbzswO09OOzxjb21wYXQ+IDgwMTI7Ozs7Tjs7Ozs7CisyRjdGO0tBTkdYSSBSQURJQ0FMIEVBUjtTbzswO09OOzxjb21wYXQ+IDgwMzM7Ozs7Tjs7Ozs7CisyRjgwO0tBTkdYSSBSQURJQ0FMIEJSVVNIO1NvOzA7T047PGNvbXBhdD4gODA3Rjs7OztOOzs7OzsKKzJGODE7S0FOR1hJIFJBRElDQUwgTUVBVDtTbzswO09OOzxjb21wYXQ+IDgwODk7Ozs7Tjs7Ozs7CisyRjgyO0tBTkdYSSBSQURJQ0FMIE1JTklTVEVSO1NvOzA7T047PGNvbXBhdD4gODFFMzs7OztOOzs7OzsKKzJGODM7S0FOR1hJIFJBRElDQUwgU0VMRjtTbzswO09OOzxjb21wYXQ+IDgxRUE7Ozs7Tjs7Ozs7CisyRjg0O0tBTkdYSSBSQURJQ0FMIEFSUklWRTtTbzswO09OOzxjb21wYXQ+IDgxRjM7Ozs7Tjs7Ozs7CisyRjg1O0tBTkdYSSBSQURJQ0FMIE1PUlRBUjtTbzswO09OOzxjb21wYXQ+IDgxRkM7Ozs7Tjs7Ozs7CisyRjg2O0tBTkdYSSBSQURJQ0FMIFRPTkdVRTtTbzswO09OOzxjb21wYXQ+IDgyMEM7Ozs7Tjs7Ozs7CisyRjg3O0tBTkdYSSBSQURJQ0FMIE9QUE9TRTtTbzswO09OOzxjb21wYXQ+IDgyMUI7Ozs7Tjs7Ozs7CisyRjg4O0tBTkdYSSBSQURJQ0FMIEJPQVQ7U287MDtPTjs8Y29tcGF0PiA4MjFGOzs7O047Ozs7OworMkY4OTtLQU5HWEkgUkFESUNBTCBTVE9QUElORztTbzswO09OOzxjb21wYXQ+IDgyNkU7Ozs7Tjs7Ozs7CisyRjhBO0tBTkdYSSBSQURJQ0FMIENPTE9SO1NvOzA7T047PGNvbXBhdD4gODI3Mjs7OztOOzs7OzsKKzJGOEI7S0FOR1hJIFJBRElDQUwgR1JBU1M7U287MDtPTjs8Y29tcGF0PiA4Mjc4Ozs7O047Ozs7OworMkY4QztLQU5HWEkgUkFESUNBTCBUSUdFUjtTbzswO09OOzxjb21wYXQ+IDg2NEQ7Ozs7Tjs7Ozs7CisyRjhEO0tBTkdYSSBSQURJQ0FMIElOU0VDVDtTbzswO09OOzxjb21wYXQ+IDg2NkI7Ozs7Tjs7Ozs7CisyRjhFO0tBTkdYSSBSQURJQ0FMIEJMT09EO1NvOzA7T047PGNvbXBhdD4gODg0MDs7OztOOzs7OzsKKzJGOEY7S0FOR1hJIFJBRElDQUwgV0FMSyBFTkNMT1NVUkU7U287MDtPTjs8Y29tcGF0PiA4ODRDOzs7O047Ozs7OworMkY5MDtLQU5HWEkgUkFESUNBTCBDTE9USEVTO1NvOzA7T047PGNvbXBhdD4gODg2Mzs7OztOOzs7OzsKKzJGOTE7S0FOR1hJIFJBRElDQUwgV0VTVDtTbzswO09OOzxjb21wYXQ+IDg5N0U7Ozs7Tjs7Ozs7CisyRjkyO0tBTkdYSSBSQURJQ0FMIFNFRTtTbzswO09OOzxjb21wYXQ+IDg5OEI7Ozs7Tjs7Ozs7CisyRjkzO0tBTkdYSSBSQURJQ0FMIEhPUk47U287MDtPTjs8Y29tcGF0PiA4OUQyOzs7O047Ozs7OworMkY5NDtLQU5HWEkgUkFESUNBTCBTUEVFQ0g7U287MDtPTjs8Y29tcGF0PiA4QTAwOzs7O047Ozs7OworMkY5NTtLQU5HWEkgUkFESUNBTCBWQUxMRVk7U287MDtPTjs8Y29tcGF0PiA4QzM3Ozs7O047Ozs7OworMkY5NjtLQU5HWEkgUkFESUNBTCBCRUFOO1NvOzA7T047PGNvbXBhdD4gOEM0Njs7OztOOzs7OzsKKzJGOTc7S0FOR1hJIFJBRElDQUwgUElHO1NvOzA7T047PGNvbXBhdD4gOEM1NTs7OztOOzs7OzsKKzJGOTg7S0FOR1hJIFJBRElDQUwgQkFER0VSO1NvOzA7T047PGNvbXBhdD4gOEM3ODs7OztOOzs7OzsKKzJGOTk7S0FOR1hJIFJBRElDQUwgU0hFTEw7U287MDtPTjs8Y29tcGF0PiA4QzlEOzs7O047Ozs7OworMkY5QTtLQU5HWEkgUkFESUNBTCBSRUQ7U287MDtPTjs8Y29tcGF0PiA4RDY0Ozs7O047Ozs7OworMkY5QjtLQU5HWEkgUkFESUNBTCBSVU47U287MDtPTjs8Y29tcGF0PiA4RDcwOzs7O047Ozs7OworMkY5QztLQU5HWEkgUkFESUNBTCBGT09UO1NvOzA7T047PGNvbXBhdD4gOERCMzs7OztOOzs7OzsKKzJGOUQ7S0FOR1hJIFJBRElDQUwgQk9EWTtTbzswO09OOzxjb21wYXQ+IDhFQUI7Ozs7Tjs7Ozs7CisyRjlFO0tBTkdYSSBSQURJQ0FMIENBUlQ7U287MDtPTjs8Y29tcGF0PiA4RUNBOzs7O047Ozs7OworMkY5RjtLQU5HWEkgUkFESUNBTCBCSVRURVI7U287MDtPTjs8Y29tcGF0PiA4RjlCOzs7O047Ozs7OworMkZBMDtLQU5HWEkgUkFESUNBTCBNT1JOSU5HO1NvOzA7T047PGNvbXBhdD4gOEZCMDs7OztOOzs7OzsKKzJGQTE7S0FOR1hJIFJBRElDQUwgV0FMSztTbzswO09OOzxjb21wYXQ+IDhGQjU7Ozs7Tjs7Ozs7CisyRkEyO0tBTkdYSSBSQURJQ0FMIENJVFk7U287MDtPTjs8Y29tcGF0PiA5MDkxOzs7O047Ozs7OworMkZBMztLQU5HWEkgUkFESUNBTCBXSU5FO1NvOzA7T047PGNvbXBhdD4gOTE0OTs7OztOOzs7OzsKKzJGQTQ7S0FOR1hJIFJBRElDQUwgRElTVElOR1VJU0g7U287MDtPTjs8Y29tcGF0PiA5MUM2Ozs7O047Ozs7OworMkZBNTtLQU5HWEkgUkFESUNBTCBWSUxMQUdFO1NvOzA7T047PGNvbXBhdD4gOTFDQzs7OztOOzs7OzsKKzJGQTY7S0FOR1hJIFJBRElDQUwgR09MRDtTbzswO09OOzxjb21wYXQ+IDkxRDE7Ozs7Tjs7Ozs7CisyRkE3O0tBTkdYSSBSQURJQ0FMIExPTkc7U287MDtPTjs8Y29tcGF0PiA5NTc3Ozs7O047Ozs7OworMkZBODtLQU5HWEkgUkFESUNBTCBHQVRFO1NvOzA7T047PGNvbXBhdD4gOTU4MDs7OztOOzs7OzsKKzJGQTk7S0FOR1hJIFJBRElDQUwgTU9VTkQ7U287MDtPTjs8Y29tcGF0PiA5NjFDOzs7O047Ozs7OworMkZBQTtLQU5HWEkgUkFESUNBTCBTTEFWRTtTbzswO09OOzxjb21wYXQ+IDk2QjY7Ozs7Tjs7Ozs7CisyRkFCO0tBTkdYSSBSQURJQ0FMIFNIT1JUIFRBSUxFRCBCSVJEO1NvOzA7T047PGNvbXBhdD4gOTZCOTs7OztOOzs7OzsKKzJGQUM7S0FOR1hJIFJBRElDQUwgUkFJTjtTbzswO09OOzxjb21wYXQ+IDk2RTg7Ozs7Tjs7Ozs7CisyRkFEO0tBTkdYSSBSQURJQ0FMIEJMVUU7U287MDtPTjs8Y29tcGF0PiA5NzUxOzs7O047Ozs7OworMkZBRTtLQU5HWEkgUkFESUNBTCBXUk9ORztTbzswO09OOzxjb21wYXQ+IDk3NUU7Ozs7Tjs7Ozs7CisyRkFGO0tBTkdYSSBSQURJQ0FMIEZBQ0U7U287MDtPTjs8Y29tcGF0PiA5NzYyOzs7O047Ozs7OworMkZCMDtLQU5HWEkgUkFESUNBTCBMRUFUSEVSO1NvOzA7T047PGNvbXBhdD4gOTc2OTs7OztOOzs7OzsKKzJGQjE7S0FOR1hJIFJBRElDQUwgVEFOTkVEIExFQVRIRVI7U287MDtPTjs8Y29tcGF0PiA5N0NCOzs7O047Ozs7OworMkZCMjtLQU5HWEkgUkFESUNBTCBMRUVLO1NvOzA7T047PGNvbXBhdD4gOTdFRDs7OztOOzs7OzsKKzJGQjM7S0FOR1hJIFJBRElDQUwgU09VTkQ7U287MDtPTjs8Y29tcGF0PiA5N0YzOzs7O047Ozs7OworMkZCNDtLQU5HWEkgUkFESUNBTCBMRUFGO1NvOzA7T047PGNvbXBhdD4gOTgwMTs7OztOOzs7OzsKKzJGQjU7S0FOR1hJIFJBRElDQUwgV0lORDtTbzswO09OOzxjb21wYXQ+IDk4QTg7Ozs7Tjs7Ozs7CisyRkI2O0tBTkdYSSBSQURJQ0FMIEZMWTtTbzswO09OOzxjb21wYXQ+IDk4REI7Ozs7Tjs7Ozs7CisyRkI3O0tBTkdYSSBSQURJQ0FMIEVBVDtTbzswO09OOzxjb21wYXQ+IDk4REY7Ozs7Tjs7Ozs7CisyRkI4O0tBTkdYSSBSQURJQ0FMIEhFQUQ7U287MDtPTjs8Y29tcGF0PiA5OTk2Ozs7O047Ozs7OworMkZCOTtLQU5HWEkgUkFESUNBTCBGUkFHUkFOVDtTbzswO09OOzxjb21wYXQ+IDk5OTk7Ozs7Tjs7Ozs7CisyRkJBO0tBTkdYSSBSQURJQ0FMIEhPUlNFO1NvOzA7T047PGNvbXBhdD4gOTlBQzs7OztOOzs7OzsKKzJGQkI7S0FOR1hJIFJBRElDQUwgQk9ORTtTbzswO09OOzxjb21wYXQ+IDlBQTg7Ozs7Tjs7Ozs7CisyRkJDO0tBTkdYSSBSQURJQ0FMIFRBTEw7U287MDtPTjs8Y29tcGF0PiA5QUQ4Ozs7O047Ozs7OworMkZCRDtLQU5HWEkgUkFESUNBTCBIQUlSO1NvOzA7T047PGNvbXBhdD4gOUFERjs7OztOOzs7OzsKKzJGQkU7S0FOR1hJIFJBRElDQUwgRklHSFQ7U287MDtPTjs8Y29tcGF0PiA5QjI1Ozs7O047Ozs7OworMkZCRjtLQU5HWEkgUkFESUNBTCBTQUNSSUZJQ0lBTCBXSU5FO1NvOzA7T047PGNvbXBhdD4gOUIyRjs7OztOOzs7OzsKKzJGQzA7S0FOR1hJIFJBRElDQUwgQ0FVTERST047U287MDtPTjs8Y29tcGF0PiA5QjMyOzs7O047Ozs7OworMkZDMTtLQU5HWEkgUkFESUNBTCBHSE9TVDtTbzswO09OOzxjb21wYXQ+IDlCM0M7Ozs7Tjs7Ozs7CisyRkMyO0tBTkdYSSBSQURJQ0FMIEZJU0g7U287MDtPTjs8Y29tcGF0PiA5QjVBOzs7O047Ozs7OworMkZDMztLQU5HWEkgUkFESUNBTCBCSVJEO1NvOzA7T047PGNvbXBhdD4gOUNFNTs7OztOOzs7OzsKKzJGQzQ7S0FOR1hJIFJBRElDQUwgU0FMVDtTbzswO09OOzxjb21wYXQ+IDlFNzU7Ozs7Tjs7Ozs7CisyRkM1O0tBTkdYSSBSQURJQ0FMIERFRVI7U287MDtPTjs8Y29tcGF0PiA5RTdGOzs7O047Ozs7OworMkZDNjtLQU5HWEkgUkFESUNBTCBXSEVBVDtTbzswO09OOzxjb21wYXQ+IDlFQTU7Ozs7Tjs7Ozs7CisyRkM3O0tBTkdYSSBSQURJQ0FMIEhFTVA7U287MDtPTjs8Y29tcGF0PiA5RUJCOzs7O047Ozs7OworMkZDODtLQU5HWEkgUkFESUNBTCBZRUxMT1c7U287MDtPTjs8Y29tcGF0PiA5RUMzOzs7O047Ozs7OworMkZDOTtLQU5HWEkgUkFESUNBTCBNSUxMRVQ7U287MDtPTjs8Y29tcGF0PiA5RUNEOzs7O047Ozs7OworMkZDQTtLQU5HWEkgUkFESUNBTCBCTEFDSztTbzswO09OOzxjb21wYXQ+IDlFRDE7Ozs7Tjs7Ozs7CisyRkNCO0tBTkdYSSBSQURJQ0FMIEVNQlJPSURFUlk7U287MDtPTjs8Y29tcGF0PiA5RUY5Ozs7O047Ozs7OworMkZDQztLQU5HWEkgUkFESUNBTCBGUk9HO1NvOzA7T047PGNvbXBhdD4gOUVGRDs7OztOOzs7OzsKKzJGQ0Q7S0FOR1hJIFJBRElDQUwgVFJJUE9EO1NvOzA7T047PGNvbXBhdD4gOUYwRTs7OztOOzs7OzsKKzJGQ0U7S0FOR1hJIFJBRElDQUwgRFJVTTtTbzswO09OOzxjb21wYXQ+IDlGMTM7Ozs7Tjs7Ozs7CisyRkNGO0tBTkdYSSBSQURJQ0FMIFJBVDtTbzswO09OOzxjb21wYXQ+IDlGMjA7Ozs7Tjs7Ozs7CisyRkQwO0tBTkdYSSBSQURJQ0FMIE5PU0U7U287MDtPTjs8Y29tcGF0PiA5RjNCOzs7O047Ozs7OworMkZEMTtLQU5HWEkgUkFESUNBTCBFVkVOO1NvOzA7T047PGNvbXBhdD4gOUY0QTs7OztOOzs7OzsKKzJGRDI7S0FOR1hJIFJBRElDQUwgVE9PVEg7U287MDtPTjs8Y29tcGF0PiA5RjUyOzs7O047Ozs7OworMkZEMztLQU5HWEkgUkFESUNBTCBEUkFHT047U287MDtPTjs8Y29tcGF0PiA5RjhEOzs7O047Ozs7OworMkZENDtLQU5HWEkgUkFESUNBTCBUVVJUTEU7U287MDtPTjs8Y29tcGF0PiA5RjlDOzs7O047Ozs7OworMkZENTtLQU5HWEkgUkFESUNBTCBGTFVURTtTbzswO09OOzxjb21wYXQ+IDlGQTA7Ozs7Tjs7Ozs7CisyRkYwO0lERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRPIFJJR0hUO1NvOzA7T047Ozs7O047Ozs7OworMkZGMTtJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgQUJPVkUgVE8gQkVMT1c7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRkYyO0lERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBMRUZUIFRPIE1JRERMRSBBTkQgUklHSFQ7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRkYzO0lERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBBQk9WRSBUTyBNSURETEUgQU5EIEJFTE9XO1NvOzA7T047Ozs7O047Ozs7OworMkZGNDtJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgRlVMTCBTVVJST1VORDtTbzswO09OOzs7OztOOzs7OzsKKzJGRjU7SURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gQUJPVkU7U287MDtPTjs7Ozs7Tjs7Ozs7CisyRkY2O0lERU9HUkFQSElDIERFU0NSSVBUSU9OIENIQVJBQ1RFUiBTVVJST1VORCBGUk9NIEJFTE9XO1NvOzA7T047Ozs7O047Ozs7OworMkZGNztJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBMRUZUO1NvOzA7T047Ozs7O047Ozs7OworMkZGODtJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBMRUZUO1NvOzA7T047Ozs7O047Ozs7OworMkZGOTtJREVPR1JBUEhJQyBERVNDUklQVElPTiBDSEFSQUNURVIgU1VSUk9VTkQgRlJPTSBVUFBFUiBSSUdIVDtTbzswO09OOzs7OztOOzs7OzsKKzJGRkE7SURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIFNVUlJPVU5EIEZST00gTE9XRVIgTEVGVDtTbzswO09OOzs7OztOOzs7OzsKKzJGRkI7SURFT0dSQVBISUMgREVTQ1JJUFRJT04gQ0hBUkFDVEVSIE9WRVJMQUlEO1NvOzA7T047Ozs7O047Ozs7OworMzAwMDtJREVPR1JBUEhJQyBTUEFDRTtaczswO1dTOzx3aWRlPiAwMDIwOzs7O047Ozs7OworMzAwMTtJREVPR1JBUEhJQyBDT01NQTtQbzswO09OOzs7OztOOzs7OzsKKzMwMDI7SURFT0dSQVBISUMgRlVMTCBTVE9QO1BvOzA7T047Ozs7O047SURFT0dSQVBISUMgUEVSSU9EOzs7OworMzAwMztESVRUTyBNQVJLO1BvOzA7T047Ozs7O047Ozs7OworMzAwNDtKQVBBTkVTRSBJTkRVU1RSSUFMIFNUQU5EQVJEIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzMwMDU7SURFT0dSQVBISUMgSVRFUkFUSU9OIE1BUks7TG07MDtMOzs7OztOOzs7OzsKKzMwMDY7SURFT0dSQVBISUMgQ0xPU0lORyBNQVJLO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDA3O0lERU9HUkFQSElDIE5VTUJFUiBaRVJPO05sOzA7TDs7OzswO047Ozs7OworMzAwODtMRUZUIEFOR0xFIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIEFOR0xFIEJSQUNLRVQ7Ozs7CiszMDA5O1JJR0hUIEFOR0xFIEJSQUNLRVQ7UGU7MDtPTjs7Ozs7WTtDTE9TSU5HIEFOR0xFIEJSQUNLRVQ7Ozs7CiszMDBBO0xFRlQgRE9VQkxFIEFOR0xFIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIERPVUJMRSBBTkdMRSBCUkFDS0VUOzs7OworMzAwQjtSSUdIVCBET1VCTEUgQU5HTEUgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgRE9VQkxFIEFOR0xFIEJSQUNLRVQ7Ozs7CiszMDBDO0xFRlQgQ09STkVSIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIENPUk5FUiBCUkFDS0VUOzs7OworMzAwRDtSSUdIVCBDT1JORVIgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgQ09STkVSIEJSQUNLRVQ7Ozs7CiszMDBFO0xFRlQgV0hJVEUgQ09STkVSIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIFdISVRFIENPUk5FUiBCUkFDS0VUOzs7OworMzAwRjtSSUdIVCBXSElURSBDT1JORVIgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgV0hJVEUgQ09STkVSIEJSQUNLRVQ7Ozs7CiszMDEwO0xFRlQgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUO1BzOzA7T047Ozs7O1k7T1BFTklORyBCTEFDSyBMRU5USUNVTEFSIEJSQUNLRVQ7Ozs7CiszMDExO1JJR0hUIEJMQUNLIExFTlRJQ1VMQVIgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgQkxBQ0sgTEVOVElDVUxBUiBCUkFDS0VUOzs7OworMzAxMjtQT1NUQUwgTUFSSztTbzswO09OOzs7OztOOzs7OzsKKzMwMTM7R0VUQSBNQVJLO1NvOzA7T047Ozs7O047Ozs7OworMzAxNDtMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7Ozs7CiszMDE1O1JJR0hUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7UGU7MDtPTjs7Ozs7WTtDTE9TSU5HIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7Ozs7CiszMDE2O0xFRlQgV0hJVEUgTEVOVElDVUxBUiBCUkFDS0VUO1BzOzA7T047Ozs7O1k7T1BFTklORyBXSElURSBMRU5USUNVTEFSIEJSQUNLRVQ7Ozs7CiszMDE3O1JJR0hUIFdISVRFIExFTlRJQ1VMQVIgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgV0hJVEUgTEVOVElDVUxBUiBCUkFDS0VUOzs7OworMzAxODtMRUZUIFdISVRFIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIFdISVRFIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7Ozs7CiszMDE5O1JJR0hUIFdISVRFIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7UGU7MDtPTjs7Ozs7WTtDTE9TSU5HIFdISVRFIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7Ozs7CiszMDFBO0xFRlQgV0hJVEUgU1FVQVJFIEJSQUNLRVQ7UHM7MDtPTjs7Ozs7WTtPUEVOSU5HIFdISVRFIFNRVUFSRSBCUkFDS0VUOzs7OworMzAxQjtSSUdIVCBXSElURSBTUVVBUkUgQlJBQ0tFVDtQZTswO09OOzs7OztZO0NMT1NJTkcgV0hJVEUgU1FVQVJFIEJSQUNLRVQ7Ozs7CiszMDFDO1dBVkUgREFTSDtQZDswO09OOzs7OztOOzs7OzsKKzMwMUQ7UkVWRVJTRUQgRE9VQkxFIFBSSU1FIFFVT1RBVElPTiBNQVJLO1BzOzA7T047Ozs7O047Ozs7OworMzAxRTtET1VCTEUgUFJJTUUgUVVPVEFUSU9OIE1BUks7UGU7MDtPTjs7Ozs7Tjs7Ozs7CiszMDFGO0xPVyBET1VCTEUgUFJJTUUgUVVPVEFUSU9OIE1BUks7UGU7MDtPTjs7Ozs7Tjs7Ozs7CiszMDIwO1BPU1RBTCBNQVJLIEZBQ0U7U287MDtPTjs7Ozs7Tjs7Ozs7CiszMDIxO0hBTkdaSE9VIE5VTUVSQUwgT05FO05sOzA7TDs7OzsxO047Ozs7OworMzAyMjtIQU5HWkhPVSBOVU1FUkFMIFRXTztObDswO0w7Ozs7MjtOOzs7OzsKKzMwMjM7SEFOR1pIT1UgTlVNRVJBTCBUSFJFRTtObDswO0w7Ozs7MztOOzs7OzsKKzMwMjQ7SEFOR1pIT1UgTlVNRVJBTCBGT1VSO05sOzA7TDs7Ozs0O047Ozs7OworMzAyNTtIQU5HWkhPVSBOVU1FUkFMIEZJVkU7Tmw7MDtMOzs7OzU7Tjs7Ozs7CiszMDI2O0hBTkdaSE9VIE5VTUVSQUwgU0lYO05sOzA7TDs7Ozs2O047Ozs7OworMzAyNztIQU5HWkhPVSBOVU1FUkFMIFNFVkVOO05sOzA7TDs7Ozs3O047Ozs7OworMzAyODtIQU5HWkhPVSBOVU1FUkFMIEVJR0hUO05sOzA7TDs7Ozs4O047Ozs7OworMzAyOTtIQU5HWkhPVSBOVU1FUkFMIE5JTkU7Tmw7MDtMOzs7Ozk7Tjs7Ozs7CiszMDJBO0lERU9HUkFQSElDIExFVkVMIFRPTkUgTUFSSztNbjsyMTg7TlNNOzs7OztOOzs7OzsKKzMwMkI7SURFT0dSQVBISUMgUklTSU5HIFRPTkUgTUFSSztNbjsyMjg7TlNNOzs7OztOOzs7OzsKKzMwMkM7SURFT0dSQVBISUMgREVQQVJUSU5HIFRPTkUgTUFSSztNbjsyMzI7TlNNOzs7OztOOzs7OzsKKzMwMkQ7SURFT0dSQVBISUMgRU5URVJJTkcgVE9ORSBNQVJLO01uOzIyMjtOU007Ozs7O047Ozs7OworMzAyRTtIQU5HVUwgU0lOR0xFIERPVCBUT05FIE1BUks7TW47MjI0O05TTTs7Ozs7Tjs7Ozs7CiszMDJGO0hBTkdVTCBET1VCTEUgRE9UIFRPTkUgTUFSSztNbjsyMjQ7TlNNOzs7OztOOzs7OzsKKzMwMzA7V0FWWSBEQVNIO1BkOzA7T047Ozs7O047Ozs7OworMzAzMTtWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLO0xtOzA7TDs7Ozs7Tjs7Ozs7CiszMDMyO1ZFUlRJQ0FMIEtBTkEgUkVQRUFUIFdJVEggVk9JQ0VEIFNPVU5EIE1BUks7TG07MDtMOzs7OztOOzs7OzsKKzMwMzM7VkVSVElDQUwgS0FOQSBSRVBFQVQgTUFSSyBVUFBFUiBIQUxGO0xtOzA7TDs7Ozs7Tjs7Ozs7CiszMDM0O1ZFUlRJQ0FMIEtBTkEgUkVQRUFUIFdJVEggVk9JQ0VEIFNPVU5EIE1BUksgVVBQRVIgSEFMRjtMbTswO0w7Ozs7O047Ozs7OworMzAzNTtWRVJUSUNBTCBLQU5BIFJFUEVBVCBNQVJLIExPV0VSIEhBTEY7TG07MDtMOzs7OztOOzs7OzsKKzMwMzY7Q0lSQ0xFRCBQT1NUQUwgTUFSSztTbzswO09OOzxjb21wYXQ+IDMwMTI7Ozs7Tjs7Ozs7CiszMDM3O0lERU9HUkFQSElDIFRFTEVHUkFQSCBMSU5FIEZFRUQgU0VQQVJBVE9SIFNZTUJPTDtTbzswO09OOzs7OztOOzs7OzsKKzMwMzg7SEFOR1pIT1UgTlVNRVJBTCBURU47Tmw7MDtMOzxjb21wYXQ+IDUzNDE7OzsxMDtOOzs7OzsKKzMwMzk7SEFOR1pIT1UgTlVNRVJBTCBUV0VOVFk7Tmw7MDtMOzxjb21wYXQ+IDUzNDQ7OzsyMDtOOzs7OzsKKzMwM0E7SEFOR1pIT1UgTlVNRVJBTCBUSElSVFk7Tmw7MDtMOzxjb21wYXQ+IDUzNDU7OzszMDtOOzs7OzsKKzMwM0U7SURFT0dSQVBISUMgVkFSSUFUSU9OIElORElDQVRPUjtTbzswO09OOzs7OztOOzs7OzsKKzMwM0Y7SURFT0dSQVBISUMgSEFMRiBGSUxMIFNQQUNFO1NvOzA7T047Ozs7O047Ozs7OworMzA0MTtISVJBR0FOQSBMRVRURVIgU01BTEwgQTtMbzswO0w7Ozs7O047Ozs7OworMzA0MjtISVJBR0FOQSBMRVRURVIgQTtMbzswO0w7Ozs7O047Ozs7OworMzA0MztISVJBR0FOQSBMRVRURVIgU01BTEwgSTtMbzswO0w7Ozs7O047Ozs7OworMzA0NDtISVJBR0FOQSBMRVRURVIgSTtMbzswO0w7Ozs7O047Ozs7OworMzA0NTtISVJBR0FOQSBMRVRURVIgU01BTEwgVTtMbzswO0w7Ozs7O047Ozs7OworMzA0NjtISVJBR0FOQSBMRVRURVIgVTtMbzswO0w7Ozs7O047Ozs7OworMzA0NztISVJBR0FOQSBMRVRURVIgU01BTEwgRTtMbzswO0w7Ozs7O047Ozs7OworMzA0ODtISVJBR0FOQSBMRVRURVIgRTtMbzswO0w7Ozs7O047Ozs7OworMzA0OTtISVJBR0FOQSBMRVRURVIgU01BTEwgTztMbzswO0w7Ozs7O047Ozs7OworMzA0QTtISVJBR0FOQSBMRVRURVIgTztMbzswO0w7Ozs7O047Ozs7OworMzA0QjtISVJBR0FOQSBMRVRURVIgS0E7TG87MDtMOzs7OztOOzs7OzsKKzMwNEM7SElSQUdBTkEgTEVUVEVSIEdBO0xvOzA7TDszMDRCIDMwOTk7Ozs7Tjs7Ozs7CiszMDREO0hJUkFHQU5BIExFVFRFUiBLSTtMbzswO0w7Ozs7O047Ozs7OworMzA0RTtISVJBR0FOQSBMRVRURVIgR0k7TG87MDtMOzMwNEQgMzA5OTs7OztOOzs7OzsKKzMwNEY7SElSQUdBTkEgTEVUVEVSIEtVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDUwO0hJUkFHQU5BIExFVFRFUiBHVTtMbzswO0w7MzA0RiAzMDk5Ozs7O047Ozs7OworMzA1MTtISVJBR0FOQSBMRVRURVIgS0U7TG87MDtMOzs7OztOOzs7OzsKKzMwNTI7SElSQUdBTkEgTEVUVEVSIEdFO0xvOzA7TDszMDUxIDMwOTk7Ozs7Tjs7Ozs7CiszMDUzO0hJUkFHQU5BIExFVFRFUiBLTztMbzswO0w7Ozs7O047Ozs7OworMzA1NDtISVJBR0FOQSBMRVRURVIgR087TG87MDtMOzMwNTMgMzA5OTs7OztOOzs7OzsKKzMwNTU7SElSQUdBTkEgTEVUVEVSIFNBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDU2O0hJUkFHQU5BIExFVFRFUiBaQTtMbzswO0w7MzA1NSAzMDk5Ozs7O047Ozs7OworMzA1NztISVJBR0FOQSBMRVRURVIgU0k7TG87MDtMOzs7OztOOzs7OzsKKzMwNTg7SElSQUdBTkEgTEVUVEVSIFpJO0xvOzA7TDszMDU3IDMwOTk7Ozs7Tjs7Ozs7CiszMDU5O0hJUkFHQU5BIExFVFRFUiBTVTtMbzswO0w7Ozs7O047Ozs7OworMzA1QTtISVJBR0FOQSBMRVRURVIgWlU7TG87MDtMOzMwNTkgMzA5OTs7OztOOzs7OzsKKzMwNUI7SElSQUdBTkEgTEVUVEVSIFNFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDVDO0hJUkFHQU5BIExFVFRFUiBaRTtMbzswO0w7MzA1QiAzMDk5Ozs7O047Ozs7OworMzA1RDtISVJBR0FOQSBMRVRURVIgU087TG87MDtMOzs7OztOOzs7OzsKKzMwNUU7SElSQUdBTkEgTEVUVEVSIFpPO0xvOzA7TDszMDVEIDMwOTk7Ozs7Tjs7Ozs7CiszMDVGO0hJUkFHQU5BIExFVFRFUiBUQTtMbzswO0w7Ozs7O047Ozs7OworMzA2MDtISVJBR0FOQSBMRVRURVIgREE7TG87MDtMOzMwNUYgMzA5OTs7OztOOzs7OzsKKzMwNjE7SElSQUdBTkEgTEVUVEVSIFRJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDYyO0hJUkFHQU5BIExFVFRFUiBESTtMbzswO0w7MzA2MSAzMDk5Ozs7O047Ozs7OworMzA2MztISVJBR0FOQSBMRVRURVIgU01BTEwgVFU7TG87MDtMOzs7OztOOzs7OzsKKzMwNjQ7SElSQUdBTkEgTEVUVEVSIFRVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDY1O0hJUkFHQU5BIExFVFRFUiBEVTtMbzswO0w7MzA2NCAzMDk5Ozs7O047Ozs7OworMzA2NjtISVJBR0FOQSBMRVRURVIgVEU7TG87MDtMOzs7OztOOzs7OzsKKzMwNjc7SElSQUdBTkEgTEVUVEVSIERFO0xvOzA7TDszMDY2IDMwOTk7Ozs7Tjs7Ozs7CiszMDY4O0hJUkFHQU5BIExFVFRFUiBUTztMbzswO0w7Ozs7O047Ozs7OworMzA2OTtISVJBR0FOQSBMRVRURVIgRE87TG87MDtMOzMwNjggMzA5OTs7OztOOzs7OzsKKzMwNkE7SElSQUdBTkEgTEVUVEVSIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDZCO0hJUkFHQU5BIExFVFRFUiBOSTtMbzswO0w7Ozs7O047Ozs7OworMzA2QztISVJBR0FOQSBMRVRURVIgTlU7TG87MDtMOzs7OztOOzs7OzsKKzMwNkQ7SElSQUdBTkEgTEVUVEVSIE5FO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDZFO0hJUkFHQU5BIExFVFRFUiBOTztMbzswO0w7Ozs7O047Ozs7OworMzA2RjtISVJBR0FOQSBMRVRURVIgSEE7TG87MDtMOzs7OztOOzs7OzsKKzMwNzA7SElSQUdBTkEgTEVUVEVSIEJBO0xvOzA7TDszMDZGIDMwOTk7Ozs7Tjs7Ozs7CiszMDcxO0hJUkFHQU5BIExFVFRFUiBQQTtMbzswO0w7MzA2RiAzMDlBOzs7O047Ozs7OworMzA3MjtISVJBR0FOQSBMRVRURVIgSEk7TG87MDtMOzs7OztOOzs7OzsKKzMwNzM7SElSQUdBTkEgTEVUVEVSIEJJO0xvOzA7TDszMDcyIDMwOTk7Ozs7Tjs7Ozs7CiszMDc0O0hJUkFHQU5BIExFVFRFUiBQSTtMbzswO0w7MzA3MiAzMDlBOzs7O047Ozs7OworMzA3NTtISVJBR0FOQSBMRVRURVIgSFU7TG87MDtMOzs7OztOOzs7OzsKKzMwNzY7SElSQUdBTkEgTEVUVEVSIEJVO0xvOzA7TDszMDc1IDMwOTk7Ozs7Tjs7Ozs7CiszMDc3O0hJUkFHQU5BIExFVFRFUiBQVTtMbzswO0w7MzA3NSAzMDlBOzs7O047Ozs7OworMzA3ODtISVJBR0FOQSBMRVRURVIgSEU7TG87MDtMOzs7OztOOzs7OzsKKzMwNzk7SElSQUdBTkEgTEVUVEVSIEJFO0xvOzA7TDszMDc4IDMwOTk7Ozs7Tjs7Ozs7CiszMDdBO0hJUkFHQU5BIExFVFRFUiBQRTtMbzswO0w7MzA3OCAzMDlBOzs7O047Ozs7OworMzA3QjtISVJBR0FOQSBMRVRURVIgSE87TG87MDtMOzs7OztOOzs7OzsKKzMwN0M7SElSQUdBTkEgTEVUVEVSIEJPO0xvOzA7TDszMDdCIDMwOTk7Ozs7Tjs7Ozs7CiszMDdEO0hJUkFHQU5BIExFVFRFUiBQTztMbzswO0w7MzA3QiAzMDlBOzs7O047Ozs7OworMzA3RTtISVJBR0FOQSBMRVRURVIgTUE7TG87MDtMOzs7OztOOzs7OzsKKzMwN0Y7SElSQUdBTkEgTEVUVEVSIE1JO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDgwO0hJUkFHQU5BIExFVFRFUiBNVTtMbzswO0w7Ozs7O047Ozs7OworMzA4MTtISVJBR0FOQSBMRVRURVIgTUU7TG87MDtMOzs7OztOOzs7OzsKKzMwODI7SElSQUdBTkEgTEVUVEVSIE1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDgzO0hJUkFHQU5BIExFVFRFUiBTTUFMTCBZQTtMbzswO0w7Ozs7O047Ozs7OworMzA4NDtISVJBR0FOQSBMRVRURVIgWUE7TG87MDtMOzs7OztOOzs7OzsKKzMwODU7SElSQUdBTkEgTEVUVEVSIFNNQUxMIFlVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDg2O0hJUkFHQU5BIExFVFRFUiBZVTtMbzswO0w7Ozs7O047Ozs7OworMzA4NztISVJBR0FOQSBMRVRURVIgU01BTEwgWU87TG87MDtMOzs7OztOOzs7OzsKKzMwODg7SElSQUdBTkEgTEVUVEVSIFlPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDg5O0hJUkFHQU5BIExFVFRFUiBSQTtMbzswO0w7Ozs7O047Ozs7OworMzA4QTtISVJBR0FOQSBMRVRURVIgUkk7TG87MDtMOzs7OztOOzs7OzsKKzMwOEI7SElSQUdBTkEgTEVUVEVSIFJVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDhDO0hJUkFHQU5BIExFVFRFUiBSRTtMbzswO0w7Ozs7O047Ozs7OworMzA4RDtISVJBR0FOQSBMRVRURVIgUk87TG87MDtMOzs7OztOOzs7OzsKKzMwOEU7SElSQUdBTkEgTEVUVEVSIFNNQUxMIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDhGO0hJUkFHQU5BIExFVFRFUiBXQTtMbzswO0w7Ozs7O047Ozs7OworMzA5MDtISVJBR0FOQSBMRVRURVIgV0k7TG87MDtMOzs7OztOOzs7OzsKKzMwOTE7SElSQUdBTkEgTEVUVEVSIFdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMDkyO0hJUkFHQU5BIExFVFRFUiBXTztMbzswO0w7Ozs7O047Ozs7OworMzA5MztISVJBR0FOQSBMRVRURVIgTjtMbzswO0w7Ozs7O047Ozs7OworMzA5NDtISVJBR0FOQSBMRVRURVIgVlU7TG87MDtMOzMwNDYgMzA5OTs7OztOOzs7OzsKKzMwOTk7Q09NQklOSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFZPSUNFRCBTT1VORCBNQVJLO01uOzg7TlNNOzs7OztOO05PTi1TUEFDSU5HIEtBVEFLQU5BLUhJUkFHQU5BIFZPSUNFRCBTT1VORCBNQVJLOzs7OworMzA5QTtDT01CSU5JTkcgS0FUQUtBTkEtSElSQUdBTkEgU0VNSS1WT0lDRUQgU09VTkQgTUFSSztNbjs4O05TTTs7Ozs7TjtOT04tU1BBQ0lORyBLQVRBS0FOQS1ISVJBR0FOQSBTRU1JLVZPSUNFRCBTT1VORCBNQVJLOzs7OworMzA5QjtLQVRBS0FOQS1ISVJBR0FOQSBWT0lDRUQgU09VTkQgTUFSSztTazswO09OOzxjb21wYXQ+IDAwMjAgMzA5OTs7OztOOzs7OzsKKzMwOUM7S0FUQUtBTkEtSElSQUdBTkEgU0VNSS1WT0lDRUQgU09VTkQgTUFSSztTazswO09OOzxjb21wYXQ+IDAwMjAgMzA5QTs7OztOOzs7OzsKKzMwOUQ7SElSQUdBTkEgSVRFUkFUSU9OIE1BUks7TG07MDtMOzs7OztOOzs7OzsKKzMwOUU7SElSQUdBTkEgVk9JQ0VEIElURVJBVElPTiBNQVJLO0xtOzA7TDszMDlEIDMwOTk7Ozs7Tjs7Ozs7CiszMEExO0tBVEFLQU5BIExFVFRFUiBTTUFMTCBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEEyO0tBVEFLQU5BIExFVFRFUiBBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEEzO0tBVEFLQU5BIExFVFRFUiBTTUFMTCBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEE0O0tBVEFLQU5BIExFVFRFUiBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEE1O0tBVEFLQU5BIExFVFRFUiBTTUFMTCBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEE2O0tBVEFLQU5BIExFVFRFUiBVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEE3O0tBVEFLQU5BIExFVFRFUiBTTUFMTCBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEE4O0tBVEFLQU5BIExFVFRFUiBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEE5O0tBVEFLQU5BIExFVFRFUiBTTUFMTCBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEFBO0tBVEFLQU5BIExFVFRFUiBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEFCO0tBVEFLQU5BIExFVFRFUiBLQTtMbzswO0w7Ozs7O047Ozs7OworMzBBQztLQVRBS0FOQSBMRVRURVIgR0E7TG87MDtMOzMwQUIgMzA5OTs7OztOOzs7OzsKKzMwQUQ7S0FUQUtBTkEgTEVUVEVSIEtJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEFFO0tBVEFLQU5BIExFVFRFUiBHSTtMbzswO0w7MzBBRCAzMDk5Ozs7O047Ozs7OworMzBBRjtLQVRBS0FOQSBMRVRURVIgS1U7TG87MDtMOzs7OztOOzs7OzsKKzMwQjA7S0FUQUtBTkEgTEVUVEVSIEdVO0xvOzA7TDszMEFGIDMwOTk7Ozs7Tjs7Ozs7CiszMEIxO0tBVEFLQU5BIExFVFRFUiBLRTtMbzswO0w7Ozs7O047Ozs7OworMzBCMjtLQVRBS0FOQSBMRVRURVIgR0U7TG87MDtMOzMwQjEgMzA5OTs7OztOOzs7OzsKKzMwQjM7S0FUQUtBTkEgTEVUVEVSIEtPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEI0O0tBVEFLQU5BIExFVFRFUiBHTztMbzswO0w7MzBCMyAzMDk5Ozs7O047Ozs7OworMzBCNTtLQVRBS0FOQSBMRVRURVIgU0E7TG87MDtMOzs7OztOOzs7OzsKKzMwQjY7S0FUQUtBTkEgTEVUVEVSIFpBO0xvOzA7TDszMEI1IDMwOTk7Ozs7Tjs7Ozs7CiszMEI3O0tBVEFLQU5BIExFVFRFUiBTSTtMbzswO0w7Ozs7O047Ozs7OworMzBCODtLQVRBS0FOQSBMRVRURVIgWkk7TG87MDtMOzMwQjcgMzA5OTs7OztOOzs7OzsKKzMwQjk7S0FUQUtBTkEgTEVUVEVSIFNVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEJBO0tBVEFLQU5BIExFVFRFUiBaVTtMbzswO0w7MzBCOSAzMDk5Ozs7O047Ozs7OworMzBCQjtLQVRBS0FOQSBMRVRURVIgU0U7TG87MDtMOzs7OztOOzs7OzsKKzMwQkM7S0FUQUtBTkEgTEVUVEVSIFpFO0xvOzA7TDszMEJCIDMwOTk7Ozs7Tjs7Ozs7CiszMEJEO0tBVEFLQU5BIExFVFRFUiBTTztMbzswO0w7Ozs7O047Ozs7OworMzBCRTtLQVRBS0FOQSBMRVRURVIgWk87TG87MDtMOzMwQkQgMzA5OTs7OztOOzs7OzsKKzMwQkY7S0FUQUtBTkEgTEVUVEVSIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEMwO0tBVEFLQU5BIExFVFRFUiBEQTtMbzswO0w7MzBCRiAzMDk5Ozs7O047Ozs7OworMzBDMTtLQVRBS0FOQSBMRVRURVIgVEk7TG87MDtMOzs7OztOOzs7OzsKKzMwQzI7S0FUQUtBTkEgTEVUVEVSIERJO0xvOzA7TDszMEMxIDMwOTk7Ozs7Tjs7Ozs7CiszMEMzO0tBVEFLQU5BIExFVFRFUiBTTUFMTCBUVTtMbzswO0w7Ozs7O047Ozs7OworMzBDNDtLQVRBS0FOQSBMRVRURVIgVFU7TG87MDtMOzs7OztOOzs7OzsKKzMwQzU7S0FUQUtBTkEgTEVUVEVSIERVO0xvOzA7TDszMEM0IDMwOTk7Ozs7Tjs7Ozs7CiszMEM2O0tBVEFLQU5BIExFVFRFUiBURTtMbzswO0w7Ozs7O047Ozs7OworMzBDNztLQVRBS0FOQSBMRVRURVIgREU7TG87MDtMOzMwQzYgMzA5OTs7OztOOzs7OzsKKzMwQzg7S0FUQUtBTkEgTEVUVEVSIFRPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEM5O0tBVEFLQU5BIExFVFRFUiBETztMbzswO0w7MzBDOCAzMDk5Ozs7O047Ozs7OworMzBDQTtLQVRBS0FOQSBMRVRURVIgTkE7TG87MDtMOzs7OztOOzs7OzsKKzMwQ0I7S0FUQUtBTkEgTEVUVEVSIE5JO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMENDO0tBVEFLQU5BIExFVFRFUiBOVTtMbzswO0w7Ozs7O047Ozs7OworMzBDRDtLQVRBS0FOQSBMRVRURVIgTkU7TG87MDtMOzs7OztOOzs7OzsKKzMwQ0U7S0FUQUtBTkEgTEVUVEVSIE5PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMENGO0tBVEFLQU5BIExFVFRFUiBIQTtMbzswO0w7Ozs7O047Ozs7OworMzBEMDtLQVRBS0FOQSBMRVRURVIgQkE7TG87MDtMOzMwQ0YgMzA5OTs7OztOOzs7OzsKKzMwRDE7S0FUQUtBTkEgTEVUVEVSIFBBO0xvOzA7TDszMENGIDMwOUE7Ozs7Tjs7Ozs7CiszMEQyO0tBVEFLQU5BIExFVFRFUiBISTtMbzswO0w7Ozs7O047Ozs7OworMzBEMztLQVRBS0FOQSBMRVRURVIgQkk7TG87MDtMOzMwRDIgMzA5OTs7OztOOzs7OzsKKzMwRDQ7S0FUQUtBTkEgTEVUVEVSIFBJO0xvOzA7TDszMEQyIDMwOUE7Ozs7Tjs7Ozs7CiszMEQ1O0tBVEFLQU5BIExFVFRFUiBIVTtMbzswO0w7Ozs7O047Ozs7OworMzBENjtLQVRBS0FOQSBMRVRURVIgQlU7TG87MDtMOzMwRDUgMzA5OTs7OztOOzs7OzsKKzMwRDc7S0FUQUtBTkEgTEVUVEVSIFBVO0xvOzA7TDszMEQ1IDMwOUE7Ozs7Tjs7Ozs7CiszMEQ4O0tBVEFLQU5BIExFVFRFUiBIRTtMbzswO0w7Ozs7O047Ozs7OworMzBEOTtLQVRBS0FOQSBMRVRURVIgQkU7TG87MDtMOzMwRDggMzA5OTs7OztOOzs7OzsKKzMwREE7S0FUQUtBTkEgTEVUVEVSIFBFO0xvOzA7TDszMEQ4IDMwOUE7Ozs7Tjs7Ozs7CiszMERCO0tBVEFLQU5BIExFVFRFUiBITztMbzswO0w7Ozs7O047Ozs7OworMzBEQztLQVRBS0FOQSBMRVRURVIgQk87TG87MDtMOzMwREIgMzA5OTs7OztOOzs7OzsKKzMwREQ7S0FUQUtBTkEgTEVUVEVSIFBPO0xvOzA7TDszMERCIDMwOUE7Ozs7Tjs7Ozs7CiszMERFO0tBVEFLQU5BIExFVFRFUiBNQTtMbzswO0w7Ozs7O047Ozs7OworMzBERjtLQVRBS0FOQSBMRVRURVIgTUk7TG87MDtMOzs7OztOOzs7OzsKKzMwRTA7S0FUQUtBTkEgTEVUVEVSIE1VO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEUxO0tBVEFLQU5BIExFVFRFUiBNRTtMbzswO0w7Ozs7O047Ozs7OworMzBFMjtLQVRBS0FOQSBMRVRURVIgTU87TG87MDtMOzs7OztOOzs7OzsKKzMwRTM7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIFlBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEU0O0tBVEFLQU5BIExFVFRFUiBZQTtMbzswO0w7Ozs7O047Ozs7OworMzBFNTtLQVRBS0FOQSBMRVRURVIgU01BTEwgWVU7TG87MDtMOzs7OztOOzs7OzsKKzMwRTY7S0FUQUtBTkEgTEVUVEVSIFlVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEU3O0tBVEFLQU5BIExFVFRFUiBTTUFMTCBZTztMbzswO0w7Ozs7O047Ozs7OworMzBFODtLQVRBS0FOQSBMRVRURVIgWU87TG87MDtMOzs7OztOOzs7OzsKKzMwRTk7S0FUQUtBTkEgTEVUVEVSIFJBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEVBO0tBVEFLQU5BIExFVFRFUiBSSTtMbzswO0w7Ozs7O047Ozs7OworMzBFQjtLQVRBS0FOQSBMRVRURVIgUlU7TG87MDtMOzs7OztOOzs7OzsKKzMwRUM7S0FUQUtBTkEgTEVUVEVSIFJFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEVEO0tBVEFLQU5BIExFVFRFUiBSTztMbzswO0w7Ozs7O047Ozs7OworMzBFRTtLQVRBS0FOQSBMRVRURVIgU01BTEwgV0E7TG87MDtMOzs7OztOOzs7OzsKKzMwRUY7S0FUQUtBTkEgTEVUVEVSIFdBO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEYwO0tBVEFLQU5BIExFVFRFUiBXSTtMbzswO0w7Ozs7O047Ozs7OworMzBGMTtLQVRBS0FOQSBMRVRURVIgV0U7TG87MDtMOzs7OztOOzs7OzsKKzMwRjI7S0FUQUtBTkEgTEVUVEVSIFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEYzO0tBVEFLQU5BIExFVFRFUiBOO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEY0O0tBVEFLQU5BIExFVFRFUiBWVTtMbzswO0w7MzBBNiAzMDk5Ozs7O047Ozs7OworMzBGNTtLQVRBS0FOQSBMRVRURVIgU01BTEwgS0E7TG87MDtMOzs7OztOOzs7OzsKKzMwRjY7S0FUQUtBTkEgTEVUVEVSIFNNQUxMIEtFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMEY3O0tBVEFLQU5BIExFVFRFUiBWQTtMbzswO0w7MzBFRiAzMDk5Ozs7O047Ozs7OworMzBGODtLQVRBS0FOQSBMRVRURVIgVkk7TG87MDtMOzMwRjAgMzA5OTs7OztOOzs7OzsKKzMwRjk7S0FUQUtBTkEgTEVUVEVSIFZFO0xvOzA7TDszMEYxIDMwOTk7Ozs7Tjs7Ozs7CiszMEZBO0tBVEFLQU5BIExFVFRFUiBWTztMbzswO0w7MzBGMiAzMDk5Ozs7O047Ozs7OworMzBGQjtLQVRBS0FOQSBNSURETEUgRE9UO1BjOzA7T047Ozs7O047Ozs7OworMzBGQztLQVRBS0FOQS1ISVJBR0FOQSBQUk9MT05HRUQgU09VTkQgTUFSSztMbTswO0w7Ozs7O047Ozs7OworMzBGRDtLQVRBS0FOQSBJVEVSQVRJT04gTUFSSztMbTswO0w7Ozs7O047Ozs7OworMzBGRTtLQVRBS0FOQSBWT0lDRUQgSVRFUkFUSU9OIE1BUks7TG07MDtMOzMwRkQgMzA5OTs7OztOOzs7OzsKKzMxMDU7Qk9QT01PRk8gTEVUVEVSIEI7TG87MDtMOzs7OztOOzs7OzsKKzMxMDY7Qk9QT01PRk8gTEVUVEVSIFA7TG87MDtMOzs7OztOOzs7OzsKKzMxMDc7Qk9QT01PRk8gTEVUVEVSIE07TG87MDtMOzs7OztOOzs7OzsKKzMxMDg7Qk9QT01PRk8gTEVUVEVSIEY7TG87MDtMOzs7OztOOzs7OzsKKzMxMDk7Qk9QT01PRk8gTEVUVEVSIEQ7TG87MDtMOzs7OztOOzs7OzsKKzMxMEE7Qk9QT01PRk8gTEVUVEVSIFQ7TG87MDtMOzs7OztOOzs7OzsKKzMxMEI7Qk9QT01PRk8gTEVUVEVSIE47TG87MDtMOzs7OztOOzs7OzsKKzMxMEM7Qk9QT01PRk8gTEVUVEVSIEw7TG87MDtMOzs7OztOOzs7OzsKKzMxMEQ7Qk9QT01PRk8gTEVUVEVSIEc7TG87MDtMOzs7OztOOzs7OzsKKzMxMEU7Qk9QT01PRk8gTEVUVEVSIEs7TG87MDtMOzs7OztOOzs7OzsKKzMxMEY7Qk9QT01PRk8gTEVUVEVSIEg7TG87MDtMOzs7OztOOzs7OzsKKzMxMTA7Qk9QT01PRk8gTEVUVEVSIEo7TG87MDtMOzs7OztOOzs7OzsKKzMxMTE7Qk9QT01PRk8gTEVUVEVSIFE7TG87MDtMOzs7OztOOzs7OzsKKzMxMTI7Qk9QT01PRk8gTEVUVEVSIFg7TG87MDtMOzs7OztOOzs7OzsKKzMxMTM7Qk9QT01PRk8gTEVUVEVSIFpIO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTE0O0JPUE9NT0ZPIExFVFRFUiBDSDtMbzswO0w7Ozs7O047Ozs7OworMzExNTtCT1BPTU9GTyBMRVRURVIgU0g7TG87MDtMOzs7OztOOzs7OzsKKzMxMTY7Qk9QT01PRk8gTEVUVEVSIFI7TG87MDtMOzs7OztOOzs7OzsKKzMxMTc7Qk9QT01PRk8gTEVUVEVSIFo7TG87MDtMOzs7OztOOzs7OzsKKzMxMTg7Qk9QT01PRk8gTEVUVEVSIEM7TG87MDtMOzs7OztOOzs7OzsKKzMxMTk7Qk9QT01PRk8gTEVUVEVSIFM7TG87MDtMOzs7OztOOzs7OzsKKzMxMUE7Qk9QT01PRk8gTEVUVEVSIEE7TG87MDtMOzs7OztOOzs7OzsKKzMxMUI7Qk9QT01PRk8gTEVUVEVSIE87TG87MDtMOzs7OztOOzs7OzsKKzMxMUM7Qk9QT01PRk8gTEVUVEVSIEU7TG87MDtMOzs7OztOOzs7OzsKKzMxMUQ7Qk9QT01PRk8gTEVUVEVSIEVIO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTFFO0JPUE9NT0ZPIExFVFRFUiBBSTtMbzswO0w7Ozs7O047Ozs7OworMzExRjtCT1BPTU9GTyBMRVRURVIgRUk7TG87MDtMOzs7OztOOzs7OzsKKzMxMjA7Qk9QT01PRk8gTEVUVEVSIEFVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTIxO0JPUE9NT0ZPIExFVFRFUiBPVTtMbzswO0w7Ozs7O047Ozs7OworMzEyMjtCT1BPTU9GTyBMRVRURVIgQU47TG87MDtMOzs7OztOOzs7OzsKKzMxMjM7Qk9QT01PRk8gTEVUVEVSIEVOO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTI0O0JPUE9NT0ZPIExFVFRFUiBBTkc7TG87MDtMOzs7OztOOzs7OzsKKzMxMjU7Qk9QT01PRk8gTEVUVEVSIEVORztMbzswO0w7Ozs7O047Ozs7OworMzEyNjtCT1BPTU9GTyBMRVRURVIgRVI7TG87MDtMOzs7OztOOzs7OzsKKzMxMjc7Qk9QT01PRk8gTEVUVEVSIEk7TG87MDtMOzs7OztOOzs7OzsKKzMxMjg7Qk9QT01PRk8gTEVUVEVSIFU7TG87MDtMOzs7OztOOzs7OzsKKzMxMjk7Qk9QT01PRk8gTEVUVEVSIElVO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTJBO0JPUE9NT0ZPIExFVFRFUiBWO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMTJCO0JPUE9NT0ZPIExFVFRFUiBORztMbzswO0w7Ozs7O047Ozs7OworMzEyQztCT1BPTU9GTyBMRVRURVIgR047TG87MDtMOzs7OztOOzs7OzsKKzMxMzE7SEFOR1VMIExFVFRFUiBLSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMDA7Ozs7TjtIQU5HVUwgTEVUVEVSIEdJWUVPRzs7OzsKKzMxMzI7SEFOR1VMIExFVFRFUiBTU0FOR0tJWUVPSztMbzswO0w7PGNvbXBhdD4gMTEwMTs7OztOO0hBTkdVTCBMRVRURVIgU1NBTkcgR0lZRU9HOzs7OworMzEzMztIQU5HVUwgTEVUVEVSIEtJWUVPSy1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUFBOzs7O047SEFOR1VMIExFVFRFUiBHSVlFT0cgU0lPUzs7OzsKKzMxMzQ7SEFOR1VMIExFVFRFUiBOSUVVTjtMbzswO0w7PGNvbXBhdD4gMTEwMjs7OztOOzs7OzsKKzMxMzU7SEFOR1VMIExFVFRFUiBOSUVVTi1DSUVVQztMbzswO0w7PGNvbXBhdD4gMTFBQzs7OztOO0hBTkdVTCBMRVRURVIgTklFVU4gSklFVUo7Ozs7CiszMTM2O0hBTkdVTCBMRVRURVIgTklFVU4tSElFVUg7TG87MDtMOzxjb21wYXQ+IDExQUQ7Ozs7TjtIQU5HVUwgTEVUVEVSIE5JRVVOIEhJRVVIOzs7OworMzEzNztIQU5HVUwgTEVUVEVSIFRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTEwMzs7OztOO0hBTkdVTCBMRVRURVIgRElHRVVEOzs7OworMzEzODtIQU5HVUwgTEVUVEVSIFNTQU5HVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMTA0Ozs7O047SEFOR1VMIExFVFRFUiBTU0FORyBESUdFVUQ7Ozs7CiszMTM5O0hBTkdVTCBMRVRURVIgUklFVUw7TG87MDtMOzxjb21wYXQ+IDExMDU7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMOzs7OworMzEzQTtIQU5HVUwgTEVUVEVSIFJJRVVMLUtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTFCMDs7OztOO0hBTkdVTCBMRVRURVIgTElFVUwgR0lZRU9HOzs7OworMzEzQjtIQU5HVUwgTEVUVEVSIFJJRVVMLU1JRVVNO0xvOzA7TDs8Y29tcGF0PiAxMUIxOzs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBNSUVVTTs7OzsKKzMxM0M7SEFOR1VMIExFVFRFUiBSSUVVTC1QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTFCMjs7OztOO0hBTkdVTCBMRVRURVIgTElFVUwgQklFVUI7Ozs7CiszMTNEO0hBTkdVTCBMRVRURVIgUklFVUwtU0lPUztMbzswO0w7PGNvbXBhdD4gMTFCMzs7OztOO0hBTkdVTCBMRVRURVIgTElFVUwgU0lPUzs7OzsKKzMxM0U7SEFOR1VMIExFVFRFUiBSSUVVTC1USElFVVRIO0xvOzA7TDs8Y29tcGF0PiAxMUI0Ozs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBUSUVVVDs7OzsKKzMxM0Y7SEFOR1VMIExFVFRFUiBSSUVVTC1QSElFVVBIO0xvOzA7TDs8Y29tcGF0PiAxMUI1Ozs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBQSUVVUDs7OzsKKzMxNDA7SEFOR1VMIExFVFRFUiBSSUVVTC1ISUVVSDtMbzswO0w7PGNvbXBhdD4gMTExQTs7OztOO0hBTkdVTCBMRVRURVIgTElFVUwgSElFVUg7Ozs7CiszMTQxO0hBTkdVTCBMRVRURVIgTUlFVU07TG87MDtMOzxjb21wYXQ+IDExMDY7Ozs7Tjs7Ozs7CiszMTQyO0hBTkdVTCBMRVRURVIgUElFVVA7TG87MDtMOzxjb21wYXQ+IDExMDc7Ozs7TjtIQU5HVUwgTEVUVEVSIEJJRVVCOzs7OworMzE0MztIQU5HVUwgTEVUVEVSIFNTQU5HUElFVVA7TG87MDtMOzxjb21wYXQ+IDExMDg7Ozs7TjtIQU5HVUwgTEVUVEVSIFNTQU5HIEJJRVVCOzs7OworMzE0NDtIQU5HVUwgTEVUVEVSIFBJRVVQLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExMjE7Ozs7TjtIQU5HVUwgTEVUVEVSIEJJRVVCIFNJT1M7Ozs7CiszMTQ1O0hBTkdVTCBMRVRURVIgU0lPUztMbzswO0w7PGNvbXBhdD4gMTEwOTs7OztOOzs7OzsKKzMxNDY7SEFOR1VMIExFVFRFUiBTU0FOR1NJT1M7TG87MDtMOzxjb21wYXQ+IDExMEE7Ozs7TjtIQU5HVUwgTEVUVEVSIFNTQU5HIFNJT1M7Ozs7CiszMTQ3O0hBTkdVTCBMRVRURVIgSUVVTkc7TG87MDtMOzxjb21wYXQ+IDExMEI7Ozs7Tjs7Ozs7CiszMTQ4O0hBTkdVTCBMRVRURVIgQ0lFVUM7TG87MDtMOzxjb21wYXQ+IDExMEM7Ozs7TjtIQU5HVUwgTEVUVEVSIEpJRVVKOzs7OworMzE0OTtIQU5HVUwgTEVUVEVSIFNTQU5HQ0lFVUM7TG87MDtMOzxjb21wYXQ+IDExMEQ7Ozs7TjtIQU5HVUwgTEVUVEVSIFNTQU5HIEpJRVVKOzs7OworMzE0QTtIQU5HVUwgTEVUVEVSIENISUVVQ0g7TG87MDtMOzxjb21wYXQ+IDExMEU7Ozs7TjtIQU5HVUwgTEVUVEVSIENJRVVDOzs7OworMzE0QjtIQU5HVUwgTEVUVEVSIEtISUVVS0g7TG87MDtMOzxjb21wYXQ+IDExMEY7Ozs7TjtIQU5HVUwgTEVUVEVSIEtJWUVPSzs7OzsKKzMxNEM7SEFOR1VMIExFVFRFUiBUSElFVVRIO0xvOzA7TDs8Y29tcGF0PiAxMTEwOzs7O047SEFOR1VMIExFVFRFUiBUSUVVVDs7OzsKKzMxNEQ7SEFOR1VMIExFVFRFUiBQSElFVVBIO0xvOzA7TDs8Y29tcGF0PiAxMTExOzs7O047SEFOR1VMIExFVFRFUiBQSUVVUDs7OzsKKzMxNEU7SEFOR1VMIExFVFRFUiBISUVVSDtMbzswO0w7PGNvbXBhdD4gMTExMjs7OztOOzs7OzsKKzMxNEY7SEFOR1VMIExFVFRFUiBBO0xvOzA7TDs8Y29tcGF0PiAxMTYxOzs7O047Ozs7OworMzE1MDtIQU5HVUwgTEVUVEVSIEFFO0xvOzA7TDs8Y29tcGF0PiAxMTYyOzs7O047Ozs7OworMzE1MTtIQU5HVUwgTEVUVEVSIFlBO0xvOzA7TDs8Y29tcGF0PiAxMTYzOzs7O047Ozs7OworMzE1MjtIQU5HVUwgTEVUVEVSIFlBRTtMbzswO0w7PGNvbXBhdD4gMTE2NDs7OztOOzs7OzsKKzMxNTM7SEFOR1VMIExFVFRFUiBFTztMbzswO0w7PGNvbXBhdD4gMTE2NTs7OztOOzs7OzsKKzMxNTQ7SEFOR1VMIExFVFRFUiBFO0xvOzA7TDs8Y29tcGF0PiAxMTY2Ozs7O047Ozs7OworMzE1NTtIQU5HVUwgTEVUVEVSIFlFTztMbzswO0w7PGNvbXBhdD4gMTE2Nzs7OztOOzs7OzsKKzMxNTY7SEFOR1VMIExFVFRFUiBZRTtMbzswO0w7PGNvbXBhdD4gMTE2ODs7OztOOzs7OzsKKzMxNTc7SEFOR1VMIExFVFRFUiBPO0xvOzA7TDs8Y29tcGF0PiAxMTY5Ozs7O047Ozs7OworMzE1ODtIQU5HVUwgTEVUVEVSIFdBO0xvOzA7TDs8Y29tcGF0PiAxMTZBOzs7O047Ozs7OworMzE1OTtIQU5HVUwgTEVUVEVSIFdBRTtMbzswO0w7PGNvbXBhdD4gMTE2Qjs7OztOOzs7OzsKKzMxNUE7SEFOR1VMIExFVFRFUiBPRTtMbzswO0w7PGNvbXBhdD4gMTE2Qzs7OztOOzs7OzsKKzMxNUI7SEFOR1VMIExFVFRFUiBZTztMbzswO0w7PGNvbXBhdD4gMTE2RDs7OztOOzs7OzsKKzMxNUM7SEFOR1VMIExFVFRFUiBVO0xvOzA7TDs8Y29tcGF0PiAxMTZFOzs7O047Ozs7OworMzE1RDtIQU5HVUwgTEVUVEVSIFdFTztMbzswO0w7PGNvbXBhdD4gMTE2Rjs7OztOOzs7OzsKKzMxNUU7SEFOR1VMIExFVFRFUiBXRTtMbzswO0w7PGNvbXBhdD4gMTE3MDs7OztOOzs7OzsKKzMxNUY7SEFOR1VMIExFVFRFUiBXSTtMbzswO0w7PGNvbXBhdD4gMTE3MTs7OztOOzs7OzsKKzMxNjA7SEFOR1VMIExFVFRFUiBZVTtMbzswO0w7PGNvbXBhdD4gMTE3Mjs7OztOOzs7OzsKKzMxNjE7SEFOR1VMIExFVFRFUiBFVTtMbzswO0w7PGNvbXBhdD4gMTE3Mzs7OztOOzs7OzsKKzMxNjI7SEFOR1VMIExFVFRFUiBZSTtMbzswO0w7PGNvbXBhdD4gMTE3NDs7OztOOzs7OzsKKzMxNjM7SEFOR1VMIExFVFRFUiBJO0xvOzA7TDs8Y29tcGF0PiAxMTc1Ozs7O047Ozs7OworMzE2NDtIQU5HVUwgRklMTEVSO0xvOzA7TDs8Y29tcGF0PiAxMTYwOzs7O047SEFOR1VMIENBRSBPTTs7OzsKKzMxNjU7SEFOR1VMIExFVFRFUiBTU0FOR05JRVVOO0xvOzA7TDs8Y29tcGF0PiAxMTE0Ozs7O047SEFOR1VMIExFVFRFUiBTU0FORyBOSUVVTjs7OzsKKzMxNjY7SEFOR1VMIExFVFRFUiBOSUVVTi1USUtFVVQ7TG87MDtMOzxjb21wYXQ+IDExMTU7Ozs7TjtIQU5HVUwgTEVUVEVSIE5JRVVOIERJR0VVRDs7OzsKKzMxNjc7SEFOR1VMIExFVFRFUiBOSUVVTi1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUM3Ozs7O047SEFOR1VMIExFVFRFUiBOSUVVTiBTSU9TOzs7OworMzE2ODtIQU5HVUwgTEVUVEVSIE5JRVVOLVBBTlNJT1M7TG87MDtMOzxjb21wYXQ+IDExQzg7Ozs7TjtIQU5HVUwgTEVUVEVSIE5JRVVOIEJBTiBDSEkgRVVNOzs7OworMzE2OTtIQU5HVUwgTEVUVEVSIFJJRVVMLUtJWUVPSy1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUNDOzs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBHSVlFT0cgU0lPUzs7OzsKKzMxNkE7SEFOR1VMIExFVFRFUiBSSUVVTC1USUtFVVQ7TG87MDtMOzxjb21wYXQ+IDExQ0U7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIERJR0VVRDs7OzsKKzMxNkI7SEFOR1VMIExFVFRFUiBSSUVVTC1QSUVVUC1TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUQzOzs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBCSUVVQiBTSU9TOzs7OworMzE2QztIQU5HVUwgTEVUVEVSIFJJRVVMLVBBTlNJT1M7TG87MDtMOzxjb21wYXQ+IDExRDc7Ozs7TjtIQU5HVUwgTEVUVEVSIExJRVVMIEJBTiBDSEkgRVVNOzs7OworMzE2RDtIQU5HVUwgTEVUVEVSIFJJRVVMLVlFT1JJTkhJRVVIO0xvOzA7TDs8Y29tcGF0PiAxMUQ5Ozs7O047SEFOR1VMIExFVFRFUiBMSUVVTCBZRU9MSU4gSElFVUg7Ozs7CiszMTZFO0hBTkdVTCBMRVRURVIgTUlFVU0tUElFVVA7TG87MDtMOzxjb21wYXQ+IDExMUM7Ozs7TjtIQU5HVUwgTEVUVEVSIE1JRVVNIEJJRVVCOzs7OworMzE2RjtIQU5HVUwgTEVUVEVSIE1JRVVNLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExREQ7Ozs7TjtIQU5HVUwgTEVUVEVSIE1JRVVNIFNJT1M7Ozs7CiszMTcwO0hBTkdVTCBMRVRURVIgTUlFVU0tUEFOU0lPUztMbzswO0w7PGNvbXBhdD4gMTFERjs7OztOO0hBTkdVTCBMRVRURVIgQklFVUIgQkFOIENISSBFVU07Ozs7CiszMTcxO0hBTkdVTCBMRVRURVIgS0FQWUVPVU5NSUVVTTtMbzswO0w7PGNvbXBhdD4gMTExRDs7OztOO0hBTkdVTCBMRVRURVIgTUlFVU0gU1VOIEdZRU9ORyBFVU07Ozs7CiszMTcyO0hBTkdVTCBMRVRURVIgUElFVVAtS0lZRU9LO0xvOzA7TDs8Y29tcGF0PiAxMTFFOzs7O047SEFOR1VMIExFVFRFUiBCSUVVQiBHSVlFT0c7Ozs7CiszMTczO0hBTkdVTCBMRVRURVIgUElFVVAtVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMTIwOzs7O047SEFOR1VMIExFVFRFUiBCSUVVQiBESUdFVUQ7Ozs7CiszMTc0O0hBTkdVTCBMRVRURVIgUElFVVAtU0lPUy1LSVlFT0s7TG87MDtMOzxjb21wYXQ+IDExMjI7Ozs7TjtIQU5HVUwgTEVUVEVSIEJJRVVCIFNJT1MgR0lZRU9HOzs7OworMzE3NTtIQU5HVUwgTEVUVEVSIFBJRVVQLVNJT1MtVElLRVVUO0xvOzA7TDs8Y29tcGF0PiAxMTIzOzs7O047SEFOR1VMIExFVFRFUiBCSUVVQiBTSU9TIERJR0VVRDs7OzsKKzMxNzY7SEFOR1VMIExFVFRFUiBQSUVVUC1DSUVVQztMbzswO0w7PGNvbXBhdD4gMTEyNzs7OztOO0hBTkdVTCBMRVRURVIgQklFVUIgSklFVUo7Ozs7CiszMTc3O0hBTkdVTCBMRVRURVIgUElFVVAtVEhJRVVUSDtMbzswO0w7PGNvbXBhdD4gMTEyOTs7OztOO0hBTkdVTCBMRVRURVIgQklFVUIgVElFVVQ7Ozs7CiszMTc4O0hBTkdVTCBMRVRURVIgS0FQWUVPVU5QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEyQjs7OztOO0hBTkdVTCBMRVRURVIgQklFVUIgU1VOIEdZRU9ORyBFVU07Ozs7CiszMTc5O0hBTkdVTCBMRVRURVIgS0FQWUVPVU5TU0FOR1BJRVVQO0xvOzA7TDs8Y29tcGF0PiAxMTJDOzs7O047SEFOR1VMIExFVFRFUiBTU0FORyBCSUVVQiBTVU4gR1lFT05HIEVVTTs7OzsKKzMxN0E7SEFOR1VMIExFVFRFUiBTSU9TLUtJWUVPSztMbzswO0w7PGNvbXBhdD4gMTEyRDs7OztOO0hBTkdVTCBMRVRURVIgU0lPUyBHSVlFT0c7Ozs7CiszMTdCO0hBTkdVTCBMRVRURVIgU0lPUy1OSUVVTjtMbzswO0w7PGNvbXBhdD4gMTEyRTs7OztOO0hBTkdVTCBMRVRURVIgU0lPUyBOSUVVTjs7OzsKKzMxN0M7SEFOR1VMIExFVFRFUiBTSU9TLVRJS0VVVDtMbzswO0w7PGNvbXBhdD4gMTEyRjs7OztOO0hBTkdVTCBMRVRURVIgU0lPUyBESUdFVUQ7Ozs7CiszMTdEO0hBTkdVTCBMRVRURVIgU0lPUy1QSUVVUDtMbzswO0w7PGNvbXBhdD4gMTEzMjs7OztOO0hBTkdVTCBMRVRURVIgU0lPUyBCSUVVQjs7OzsKKzMxN0U7SEFOR1VMIExFVFRFUiBTSU9TLUNJRVVDO0xvOzA7TDs8Y29tcGF0PiAxMTM2Ozs7O047SEFOR1VMIExFVFRFUiBTSU9TIEpJRVVKOzs7OworMzE3RjtIQU5HVUwgTEVUVEVSIFBBTlNJT1M7TG87MDtMOzxjb21wYXQ+IDExNDA7Ozs7TjtIQU5HVUwgTEVUVEVSIEJBTiBDSEkgRVVNOzs7OworMzE4MDtIQU5HVUwgTEVUVEVSIFNTQU5HSUVVTkc7TG87MDtMOzxjb21wYXQ+IDExNDc7Ozs7TjtIQU5HVUwgTEVUVEVSIFNTQU5HIElFVU5HOzs7OworMzE4MTtIQU5HVUwgTEVUVEVSIFlFU0lFVU5HO0xvOzA7TDs8Y29tcGF0PiAxMTRDOzs7O047SEFOR1VMIExFVFRFUiBOR0lFVU5HOzs7OworMzE4MjtIQU5HVUwgTEVUVEVSIFlFU0lFVU5HLVNJT1M7TG87MDtMOzxjb21wYXQ+IDExRjE7Ozs7TjtIQU5HVUwgTEVUVEVSIE5HSUVVTkcgU0lPUzs7OzsKKzMxODM7SEFOR1VMIExFVFRFUiBZRVNJRVVORy1QQU5TSU9TO0xvOzA7TDs8Y29tcGF0PiAxMUYyOzs7O047SEFOR1VMIExFVFRFUiBOR0lFVU5HIEJBTiBDSEkgRVVNOzs7OworMzE4NDtIQU5HVUwgTEVUVEVSIEtBUFlFT1VOUEhJRVVQSDtMbzswO0w7PGNvbXBhdD4gMTE1Nzs7OztOO0hBTkdVTCBMRVRURVIgUElFVVAgU1VOIEdZRU9ORyBFVU07Ozs7CiszMTg1O0hBTkdVTCBMRVRURVIgU1NBTkdISUVVSDtMbzswO0w7PGNvbXBhdD4gMTE1ODs7OztOO0hBTkdVTCBMRVRURVIgU1NBTkcgSElFVUg7Ozs7CiszMTg2O0hBTkdVTCBMRVRURVIgWUVPUklOSElFVUg7TG87MDtMOzxjb21wYXQ+IDExNTk7Ozs7TjtIQU5HVUwgTEVUVEVSIFlFT0xJTiBISUVVSDs7OzsKKzMxODc7SEFOR1VMIExFVFRFUiBZTy1ZQTtMbzswO0w7PGNvbXBhdD4gMTE4NDs7OztOO0hBTkdVTCBMRVRURVIgWU9ZQTs7OzsKKzMxODg7SEFOR1VMIExFVFRFUiBZTy1ZQUU7TG87MDtMOzxjb21wYXQ+IDExODU7Ozs7TjtIQU5HVUwgTEVUVEVSIFlPWUFFOzs7OworMzE4OTtIQU5HVUwgTEVUVEVSIFlPLUk7TG87MDtMOzxjb21wYXQ+IDExODg7Ozs7TjtIQU5HVUwgTEVUVEVSIFlPSTs7OzsKKzMxOEE7SEFOR1VMIExFVFRFUiBZVS1ZRU87TG87MDtMOzxjb21wYXQ+IDExOTE7Ozs7TjtIQU5HVUwgTEVUVEVSIFlVWUVPOzs7OworMzE4QjtIQU5HVUwgTEVUVEVSIFlVLVlFO0xvOzA7TDs8Y29tcGF0PiAxMTkyOzs7O047SEFOR1VMIExFVFRFUiBZVVlFOzs7OworMzE4QztIQU5HVUwgTEVUVEVSIFlVLUk7TG87MDtMOzxjb21wYXQ+IDExOTQ7Ozs7TjtIQU5HVUwgTEVUVEVSIFlVSTs7OzsKKzMxOEQ7SEFOR1VMIExFVFRFUiBBUkFFQTtMbzswO0w7PGNvbXBhdD4gMTE5RTs7OztOO0hBTkdVTCBMRVRURVIgQUxBRSBBOzs7OworMzE4RTtIQU5HVUwgTEVUVEVSIEFSQUVBRTtMbzswO0w7PGNvbXBhdD4gMTFBMTs7OztOO0hBTkdVTCBMRVRURVIgQUxBRSBBRTs7OzsKKzMxOTA7SURFT0dSQVBISUMgQU5OT1RBVElPTiBMSU5LSU5HIE1BUks7U287MDtMOzs7OztOO0tBTkJVTiBUQVRFVEVOO0thbmJ1biBUYXRldGVuOzs7CiszMTkxO0lERU9HUkFQSElDIEFOTk9UQVRJT04gUkVWRVJTRSBNQVJLO1NvOzA7TDs7Ozs7TjtLQUVSSVRFTiBSRTtLYWVyaXRlbjs7OworMzE5MjtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIE9ORSBNQVJLO05vOzA7TDs8c3VwZXI+IDRFMDA7Ozs7TjtLQUVSSVRFTiBJVEk7S2Flcml0ZW47OzsKKzMxOTM7SURFT0dSQVBISUMgQU5OT1RBVElPTiBUV08gTUFSSztObzswO0w7PHN1cGVyPiA0RThDOzs7O047S0FFUklURU4gTkk7S2Flcml0ZW47OzsKKzMxOTQ7SURFT0dSQVBISUMgQU5OT1RBVElPTiBUSFJFRSBNQVJLO05vOzA7TDs8c3VwZXI+IDRFMDk7Ozs7TjtLQUVSSVRFTiBTQU47S2Flcml0ZW47OzsKKzMxOTU7SURFT0dSQVBISUMgQU5OT1RBVElPTiBGT1VSIE1BUks7Tm87MDtMOzxzdXBlcj4gNTZEQjs7OztOO0tBRVJJVEVOIFNJO0thZXJpdGVuOzs7CiszMTk2O0lERU9HUkFQSElDIEFOTk9UQVRJT04gVE9QIE1BUks7U287MDtMOzxzdXBlcj4gNEUwQTs7OztOO0tBRVJJVEVOIFpZT1U7S2Flcml0ZW47OzsKKzMxOTc7SURFT0dSQVBISUMgQU5OT1RBVElPTiBNSURETEUgTUFSSztTbzswO0w7PHN1cGVyPiA0RTJEOzs7O047S0FFUklURU4gVFlVVTtLYWVyaXRlbjs7OworMzE5ODtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIEJPVFRPTSBNQVJLO1NvOzA7TDs8c3VwZXI+IDRFMEI7Ozs7TjtLQUVSSVRFTiBHRTtLYWVyaXRlbjs7OworMzE5OTtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIEZJUlNUIE1BUks7U287MDtMOzxzdXBlcj4gNzUzMjs7OztOO0tBRVJJVEVOIEtPVTtLYWVyaXRlbjs7OworMzE5QTtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIFNFQ09ORCBNQVJLO1NvOzA7TDs8c3VwZXI+IDRFNTk7Ozs7TjtLQUVSSVRFTiBPVFU7S2Flcml0ZW47OzsKKzMxOUI7SURFT0dSQVBISUMgQU5OT1RBVElPTiBUSElSRCBNQVJLO1NvOzA7TDs8c3VwZXI+IDRFMTk7Ozs7TjtLQUVSSVRFTiBIRUk7S2Flcml0ZW47OzsKKzMxOUM7SURFT0dSQVBISUMgQU5OT1RBVElPTiBGT1VSVEggTUFSSztTbzswO0w7PHN1cGVyPiA0RTAxOzs7O047S0FFUklURU4gVEVJO0thZXJpdGVuOzs7CiszMTlEO0lERU9HUkFQSElDIEFOTk9UQVRJT04gSEVBVkVOIE1BUks7U287MDtMOzxzdXBlcj4gNTkyOTs7OztOO0tBRVJJVEVOIFRFTjtLYWVyaXRlbjs7OworMzE5RTtJREVPR1JBUEhJQyBBTk5PVEFUSU9OIEVBUlRIIE1BUks7U287MDtMOzxzdXBlcj4gNTczMDs7OztOO0tBRVJJVEVOIFRJO0thZXJpdGVuOzs7CiszMTlGO0lERU9HUkFQSElDIEFOTk9UQVRJT04gTUFOIE1BUks7U287MDtMOzxzdXBlcj4gNEVCQTs7OztOO0tBRVJJVEVOIFpJTjtLYWVyaXRlbjs7OworMzFBMDtCT1BPTU9GTyBMRVRURVIgQlU7TG87MDtMOzs7OztOOzs7OzsKKzMxQTE7Qk9QT01PRk8gTEVUVEVSIFpJO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUEyO0JPUE9NT0ZPIExFVFRFUiBKSTtMbzswO0w7Ozs7O047Ozs7OworMzFBMztCT1BPTU9GTyBMRVRURVIgR1U7TG87MDtMOzs7OztOOzs7OzsKKzMxQTQ7Qk9QT01PRk8gTEVUVEVSIEVFO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUE1O0JPUE9NT0ZPIExFVFRFUiBFTk47TG87MDtMOzs7OztOOzs7OzsKKzMxQTY7Qk9QT01PRk8gTEVUVEVSIE9PO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUE3O0JPUE9NT0ZPIExFVFRFUiBPTk47TG87MDtMOzs7OztOOzs7OzsKKzMxQTg7Qk9QT01PRk8gTEVUVEVSIElSO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUE5O0JPUE9NT0ZPIExFVFRFUiBBTk47TG87MDtMOzs7OztOOzs7OzsKKzMxQUE7Qk9QT01PRk8gTEVUVEVSIElOTjtMbzswO0w7Ozs7O047Ozs7OworMzFBQjtCT1BPTU9GTyBMRVRURVIgVU5OO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUFDO0JPUE9NT0ZPIExFVFRFUiBJTTtMbzswO0w7Ozs7O047Ozs7OworMzFBRDtCT1BPTU9GTyBMRVRURVIgTkdHO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUFFO0JPUE9NT0ZPIExFVFRFUiBBSU5OO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUFGO0JPUE9NT0ZPIExFVFRFUiBBVU5OO0xvOzA7TDs7Ozs7Tjs7Ozs7CiszMUIwO0JPUE9NT0ZPIExFVFRFUiBBTTtMbzswO0w7Ozs7O047Ozs7OworMzFCMTtCT1BPTU9GTyBMRVRURVIgT007TG87MDtMOzs7OztOOzs7OzsKKzMxQjI7Qk9QT01PRk8gTEVUVEVSIE9ORztMbzswO0w7Ozs7O047Ozs7OworMzFCMztCT1BPTU9GTyBMRVRURVIgSU5OTjtMbzswO0w7Ozs7O047Ozs7OworMzFCNDtCT1BPTU9GTyBGSU5BTCBMRVRURVIgUDtMbzswO0w7Ozs7O047Ozs7OworMzFCNTtCT1BPTU9GTyBGSU5BTCBMRVRURVIgVDtMbzswO0w7Ozs7O047Ozs7OworMzFCNjtCT1BPTU9GTyBGSU5BTCBMRVRURVIgSztMbzswO0w7Ozs7O047Ozs7OworMzFCNztCT1BPTU9GTyBGSU5BTCBMRVRURVIgSDtMbzswO0w7Ozs7O047Ozs7OworMzIwMDtQQVJFTlRIRVNJWkVEIEhBTkdVTCBLSVlFT0s7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwMCAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgR0lZRU9HOzs7OworMzIwMTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBOSUVVTjtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTAyIDAwMjk7Ozs7Tjs7Ozs7CiszMjAyO1BBUkVOVEhFU0laRUQgSEFOR1VMIFRJS0VVVDtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTAzIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBESUdFVUQ7Ozs7CiszMjAzO1BBUkVOVEhFU0laRUQgSEFOR1VMIFJJRVVMO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDUgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIExJRVVMOzs7OworMzIwNDtQQVJFTlRIRVNJWkVEIEhBTkdVTCBNSUVVTTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTA2IDAwMjk7Ozs7Tjs7Ozs7CiszMjA1O1BBUkVOVEhFU0laRUQgSEFOR1VMIFBJRVVQO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDcgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEJJRVVCOzs7OworMzIwNjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBTSU9TO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDkgMDAyOTs7OztOOzs7OzsKKzMyMDc7UEFSRU5USEVTSVpFRCBIQU5HVUwgSUVVTkc7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwQiAwMDI5Ozs7O047Ozs7OworMzIwODtQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSUVVQztTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBDIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBKSUVVSjs7OzsKKzMyMDk7UEFSRU5USEVTSVpFRCBIQU5HVUwgQ0hJRVVDSDtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBFIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBDSUVVQzs7OzsKKzMyMEE7UEFSRU5USEVTSVpFRCBIQU5HVUwgS0hJRVVLSDtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBGIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBLSVlFT0s7Ozs7CiszMjBCO1BBUkVOVEhFU0laRUQgSEFOR1VMIFRISUVVVEg7U287MDtMOzxjb21wYXQ+IDAwMjggMTExMCAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgVElFVVQ7Ozs7CiszMjBDO1BBUkVOVEhFU0laRUQgSEFOR1VMIFBISUVVUEg7U287MDtMOzxjb21wYXQ+IDAwMjggMTExMSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgUElFVVA7Ozs7CiszMjBEO1BBUkVOVEhFU0laRUQgSEFOR1VMIEhJRVVIO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMTIgMDAyOTs7OztOOzs7OzsKKzMyMEU7UEFSRU5USEVTSVpFRCBIQU5HVUwgS0lZRU9LIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwMCAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBHQTs7OzsKKzMyMEY7UEFSRU5USEVTSVpFRCBIQU5HVUwgTklFVU4gQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTAyIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIE5BOzs7OworMzIxMDtQQVJFTlRIRVNJWkVEIEhBTkdVTCBUSUtFVVQgQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTAzIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIERBOzs7OworMzIxMTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBSSUVVTCBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMDUgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgTEE7Ozs7CiszMjEyO1BBUkVOVEhFU0laRUQgSEFOR1VMIE1JRVVNIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwNiAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBNQTs7OzsKKzMyMTM7UEFSRU5USEVTSVpFRCBIQU5HVUwgUElFVVAgQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTA3IDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEJBOzs7OworMzIxNDtQQVJFTlRIRVNJWkVEIEhBTkdVTCBTSU9TIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwOSAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBTQTs7OzsKKzMyMTU7UEFSRU5USEVTSVpFRCBIQU5HVUwgSUVVTkcgQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBCIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEE7Ozs7CiszMjE2O1BBUkVOVEhFU0laRUQgSEFOR1VMIENJRVVDIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTEwQyAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBKQTs7OzsKKzMyMTc7UEFSRU5USEVTSVpFRCBIQU5HVUwgQ0hJRVVDSCBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMEUgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgQ0E7Ozs7CiszMjE4O1BBUkVOVEhFU0laRUQgSEFOR1VMIEtISUVVS0ggQTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBGIDExNjEgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEtBOzs7OworMzIxOTtQQVJFTlRIRVNJWkVEIEhBTkdVTCBUSElFVVRIIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTExMCAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBUQTs7OzsKKzMyMUE7UEFSRU5USEVTSVpFRCBIQU5HVUwgUEhJRVVQSCBBO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDExMTEgMTE2MSAwMDI5Ozs7O047UEFSRU5USEVTSVpFRCBIQU5HVUwgUEE7Ozs7CiszMjFCO1BBUkVOVEhFU0laRUQgSEFOR1VMIEhJRVVIIEE7U287MDtMOzxjb21wYXQ+IDAwMjggMTExMiAxMTYxIDAwMjk7Ozs7TjtQQVJFTlRIRVNJWkVEIEhBTkdVTCBIQTs7OzsKKzMyMUM7UEFSRU5USEVTSVpFRCBIQU5HVUwgQ0lFVUMgVTtTbzswO0w7PGNvbXBhdD4gMDAyOCAxMTBDIDExNkUgMDAyOTs7OztOO1BBUkVOVEhFU0laRUQgSEFOR1VMIEpVOzs7OworMzIyMDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBPTkU7Tm87MDtMOzxjb21wYXQ+IDAwMjggNEUwMCAwMDI5Ozs7O047Ozs7OworMzIyMTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBUV087Tm87MDtMOzxjb21wYXQ+IDAwMjggNEU4QyAwMDI5Ozs7O047Ozs7OworMzIyMjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBUSFJFRTtObzswO0w7PGNvbXBhdD4gMDAyOCA0RTA5IDAwMjk7Ozs7Tjs7Ozs7CiszMjIzO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIEZPVVI7Tm87MDtMOzxjb21wYXQ+IDAwMjggNTZEQiAwMDI5Ozs7O047Ozs7OworMzIyNDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBGSVZFO05vOzA7TDs8Y29tcGF0PiAwMDI4IDRFOTQgMDAyOTs7OztOOzs7OzsKKzMyMjU7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggU0lYO05vOzA7TDs8Y29tcGF0PiAwMDI4IDUxNkQgMDAyOTs7OztOOzs7OzsKKzMyMjY7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggU0VWRU47Tm87MDtMOzxjb21wYXQ+IDAwMjggNEUwMyAwMDI5Ozs7O047Ozs7OworMzIyNztQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBFSUdIVDtObzswO0w7PGNvbXBhdD4gMDAyOCA1MTZCIDAwMjk7Ozs7Tjs7Ozs7CiszMjI4O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIE5JTkU7Tm87MDtMOzxjb21wYXQ+IDAwMjggNEU1RCAwMDI5Ozs7O047Ozs7OworMzIyOTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBURU47Tm87MDtMOzxjb21wYXQ+IDAwMjggNTM0MSAwMDI5Ozs7O047Ozs7OworMzIyQTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBNT09OO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDY3MDggMDAyOTs7OztOOzs7OzsKKzMyMkI7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggRklSRTtTbzswO0w7PGNvbXBhdD4gMDAyOCA3MDZCIDAwMjk7Ozs7Tjs7Ozs7CiszMjJDO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFdBVEVSO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDZDMzQgMDAyOTs7OztOOzs7OzsKKzMyMkQ7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggV09PRDtTbzswO0w7PGNvbXBhdD4gMDAyOCA2NzI4IDAwMjk7Ozs7Tjs7Ozs7CiszMjJFO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIE1FVEFMO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDkxRDEgMDAyOTs7OztOOzs7OzsKKzMyMkY7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggRUFSVEg7U287MDtMOzxjb21wYXQ+IDAwMjggNTcxRiAwMDI5Ozs7O047Ozs7OworMzIzMDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTVU47U287MDtMOzxjb21wYXQ+IDAwMjggNjVFNSAwMDI5Ozs7O047Ozs7OworMzIzMTtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTVE9DSztTbzswO0w7PGNvbXBhdD4gMDAyOCA2ODJBIDAwMjk7Ozs7Tjs7Ozs7CiszMjMyO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIEhBVkU7U287MDtMOzxjb21wYXQ+IDAwMjggNjcwOSAwMDI5Ozs7O047Ozs7OworMzIzMztQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTT0NJRVRZO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDc5M0UgMDAyOTs7OztOOzs7OzsKKzMyMzQ7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggTkFNRTtTbzswO0w7PGNvbXBhdD4gMDAyOCA1NDBEIDAwMjk7Ozs7Tjs7Ozs7CiszMjM1O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNQRUNJQUw7U287MDtMOzxjb21wYXQ+IDAwMjggNzI3OSAwMDI5Ozs7O047Ozs7OworMzIzNjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBGSU5BTkNJQUw7U287MDtMOzxjb21wYXQ+IDAwMjggOENBMSAwMDI5Ozs7O047Ozs7OworMzIzNztQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBDT05HUkFUVUxBVElPTjtTbzswO0w7PGNvbXBhdD4gMDAyOCA3OTVEIDAwMjk7Ozs7Tjs7Ozs7CiszMjM4O1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIExBQk9SO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDUyQjQgMDAyOTs7OztOOzs7OzsKKzMyMzk7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggUkVQUkVTRU5UO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDRFRTMgMDAyOTs7OztOOzs7OzsKKzMyM0E7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggQ0FMTDtTbzswO0w7PGNvbXBhdD4gMDAyOCA1NDdDIDAwMjk7Ozs7Tjs7Ozs7CiszMjNCO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFNUVURZO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDVCNjYgMDAyOTs7OztOOzs7OzsKKzMyM0M7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggU1VQRVJWSVNFO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDc2RTMgMDAyOTs7OztOOzs7OzsKKzMyM0Q7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggRU5URVJQUklTRTtTbzswO0w7PGNvbXBhdD4gMDAyOCA0RjAxIDAwMjk7Ozs7Tjs7Ozs7CiszMjNFO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFJFU09VUkNFO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDhDQzcgMDAyOTs7OztOOzs7OzsKKzMyM0Y7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggQUxMSUFOQ0U7U287MDtMOzxjb21wYXQ+IDAwMjggNTM1NCAwMDI5Ozs7O047Ozs7OworMzI0MDtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBGRVNUSVZBTDtTbzswO0w7PGNvbXBhdD4gMDAyOCA3OTZEIDAwMjk7Ozs7Tjs7Ozs7CiszMjQxO1BBUkVOVEhFU0laRUQgSURFT0dSQVBIIFJFU1Q7U287MDtMOzxjb21wYXQ+IDAwMjggNEYxMSAwMDI5Ozs7O047Ozs7OworMzI0MjtQQVJFTlRIRVNJWkVEIElERU9HUkFQSCBTRUxGO1NvOzA7TDs8Y29tcGF0PiAwMDI4IDgxRUEgMDAyOTs7OztOOzs7OzsKKzMyNDM7UEFSRU5USEVTSVpFRCBJREVPR1JBUEggUkVBQ0g7U287MDtMOzxjb21wYXQ+IDAwMjggODFGMyAwMDI5Ozs7O047Ozs7OworMzI2MDtDSVJDTEVEIEhBTkdVTCBLSVlFT0s7U287MDtMOzxjaXJjbGU+IDExMDA7Ozs7TjtDSVJDTEVEIEhBTkdVTCBHSVlFT0c7Ozs7CiszMjYxO0NJUkNMRUQgSEFOR1VMIE5JRVVOO1NvOzA7TDs8Y2lyY2xlPiAxMTAyOzs7O047Ozs7OworMzI2MjtDSVJDTEVEIEhBTkdVTCBUSUtFVVQ7U287MDtMOzxjaXJjbGU+IDExMDM7Ozs7TjtDSVJDTEVEIEhBTkdVTCBESUdFVUQ7Ozs7CiszMjYzO0NJUkNMRUQgSEFOR1VMIFJJRVVMO1NvOzA7TDs8Y2lyY2xlPiAxMTA1Ozs7O047Q0lSQ0xFRCBIQU5HVUwgTElFVUw7Ozs7CiszMjY0O0NJUkNMRUQgSEFOR1VMIE1JRVVNO1NvOzA7TDs8Y2lyY2xlPiAxMTA2Ozs7O047Ozs7OworMzI2NTtDSVJDTEVEIEhBTkdVTCBQSUVVUDtTbzswO0w7PGNpcmNsZT4gMTEwNzs7OztOO0NJUkNMRUQgSEFOR1VMIEJJRVVCOzs7OworMzI2NjtDSVJDTEVEIEhBTkdVTCBTSU9TO1NvOzA7TDs8Y2lyY2xlPiAxMTA5Ozs7O047Ozs7OworMzI2NztDSVJDTEVEIEhBTkdVTCBJRVVORztTbzswO0w7PGNpcmNsZT4gMTEwQjs7OztOOzs7OzsKKzMyNjg7Q0lSQ0xFRCBIQU5HVUwgQ0lFVUM7U287MDtMOzxjaXJjbGU+IDExMEM7Ozs7TjtDSVJDTEVEIEhBTkdVTCBKSUVVSjs7OzsKKzMyNjk7Q0lSQ0xFRCBIQU5HVUwgQ0hJRVVDSDtTbzswO0w7PGNpcmNsZT4gMTEwRTs7OztOO0NJUkNMRUQgSEFOR1VMIENJRVVDOzs7OworMzI2QTtDSVJDTEVEIEhBTkdVTCBLSElFVUtIO1NvOzA7TDs8Y2lyY2xlPiAxMTBGOzs7O047Q0lSQ0xFRCBIQU5HVUwgS0lZRU9LOzs7OworMzI2QjtDSVJDTEVEIEhBTkdVTCBUSElFVVRIO1NvOzA7TDs8Y2lyY2xlPiAxMTEwOzs7O047Q0lSQ0xFRCBIQU5HVUwgVElFVVQ7Ozs7CiszMjZDO0NJUkNMRUQgSEFOR1VMIFBISUVVUEg7U287MDtMOzxjaXJjbGU+IDExMTE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBQSUVVUDs7OzsKKzMyNkQ7Q0lSQ0xFRCBIQU5HVUwgSElFVUg7U287MDtMOzxjaXJjbGU+IDExMTI7Ozs7Tjs7Ozs7CiszMjZFO0NJUkNMRUQgSEFOR1VMIEtJWUVPSyBBO1NvOzA7TDs8Y2lyY2xlPiAxMTAwIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBHQTs7OzsKKzMyNkY7Q0lSQ0xFRCBIQU5HVUwgTklFVU4gQTtTbzswO0w7PGNpcmNsZT4gMTEwMiAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgTkE7Ozs7CiszMjcwO0NJUkNMRUQgSEFOR1VMIFRJS0VVVCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTAzIDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBEQTs7OzsKKzMyNzE7Q0lSQ0xFRCBIQU5HVUwgUklFVUwgQTtTbzswO0w7PGNpcmNsZT4gMTEwNSAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgTEE7Ozs7CiszMjcyO0NJUkNMRUQgSEFOR1VMIE1JRVVNIEE7U287MDtMOzxjaXJjbGU+IDExMDYgMTE2MTs7OztOO0NJUkNMRUQgSEFOR1VMIE1BOzs7OworMzI3MztDSVJDTEVEIEhBTkdVTCBQSUVVUCBBO1NvOzA7TDs8Y2lyY2xlPiAxMTA3IDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBCQTs7OzsKKzMyNzQ7Q0lSQ0xFRCBIQU5HVUwgU0lPUyBBO1NvOzA7TDs8Y2lyY2xlPiAxMTA5IDExNjE7Ozs7TjtDSVJDTEVEIEhBTkdVTCBTQTs7OzsKKzMyNzU7Q0lSQ0xFRCBIQU5HVUwgSUVVTkcgQTtTbzswO0w7PGNpcmNsZT4gMTEwQiAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgQTs7OzsKKzMyNzY7Q0lSQ0xFRCBIQU5HVUwgQ0lFVUMgQTtTbzswO0w7PGNpcmNsZT4gMTEwQyAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgSkE7Ozs7CiszMjc3O0NJUkNMRUQgSEFOR1VMIENISUVVQ0ggQTtTbzswO0w7PGNpcmNsZT4gMTEwRSAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgQ0E7Ozs7CiszMjc4O0NJUkNMRUQgSEFOR1VMIEtISUVVS0ggQTtTbzswO0w7PGNpcmNsZT4gMTEwRiAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgS0E7Ozs7CiszMjc5O0NJUkNMRUQgSEFOR1VMIFRISUVVVEggQTtTbzswO0w7PGNpcmNsZT4gMTExMCAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgVEE7Ozs7CiszMjdBO0NJUkNMRUQgSEFOR1VMIFBISUVVUEggQTtTbzswO0w7PGNpcmNsZT4gMTExMSAxMTYxOzs7O047Q0lSQ0xFRCBIQU5HVUwgUEE7Ozs7CiszMjdCO0NJUkNMRUQgSEFOR1VMIEhJRVVIIEE7U287MDtMOzxjaXJjbGU+IDExMTIgMTE2MTs7OztOO0NJUkNMRUQgSEFOR1VMIEhBOzs7OworMzI3RjtLT1JFQU4gU1RBTkRBUkQgU1lNQk9MO1NvOzA7TDs7Ozs7Tjs7Ozs7CiszMjgwO0NJUkNMRUQgSURFT0dSQVBIIE9ORTtObzswO0w7PGNpcmNsZT4gNEUwMDs7OzE7Tjs7Ozs7CiszMjgxO0NJUkNMRUQgSURFT0dSQVBIIFRXTztObzswO0w7PGNpcmNsZT4gNEU4Qzs7OzI7Tjs7Ozs7CiszMjgyO0NJUkNMRUQgSURFT0dSQVBIIFRIUkVFO05vOzA7TDs8Y2lyY2xlPiA0RTA5Ozs7MztOOzs7OzsKKzMyODM7Q0lSQ0xFRCBJREVPR1JBUEggRk9VUjtObzswO0w7PGNpcmNsZT4gNTZEQjs7OzQ7Tjs7Ozs7CiszMjg0O0NJUkNMRUQgSURFT0dSQVBIIEZJVkU7Tm87MDtMOzxjaXJjbGU+IDRFOTQ7Ozs1O047Ozs7OworMzI4NTtDSVJDTEVEIElERU9HUkFQSCBTSVg7Tm87MDtMOzxjaXJjbGU+IDUxNkQ7Ozs2O047Ozs7OworMzI4NjtDSVJDTEVEIElERU9HUkFQSCBTRVZFTjtObzswO0w7PGNpcmNsZT4gNEUwMzs7Ozc7Tjs7Ozs7CiszMjg3O0NJUkNMRUQgSURFT0dSQVBIIEVJR0hUO05vOzA7TDs8Y2lyY2xlPiA1MTZCOzs7ODtOOzs7OzsKKzMyODg7Q0lSQ0xFRCBJREVPR1JBUEggTklORTtObzswO0w7PGNpcmNsZT4gNEU1RDs7Ozk7Tjs7Ozs7CiszMjg5O0NJUkNMRUQgSURFT0dSQVBIIFRFTjtObzswO0w7PGNpcmNsZT4gNTM0MTs7OzEwO047Ozs7OworMzI4QTtDSVJDTEVEIElERU9HUkFQSCBNT09OO1NvOzA7TDs8Y2lyY2xlPiA2NzA4Ozs7O047Ozs7OworMzI4QjtDSVJDTEVEIElERU9HUkFQSCBGSVJFO1NvOzA7TDs8Y2lyY2xlPiA3MDZCOzs7O047Ozs7OworMzI4QztDSVJDTEVEIElERU9HUkFQSCBXQVRFUjtTbzswO0w7PGNpcmNsZT4gNkMzNDs7OztOOzs7OzsKKzMyOEQ7Q0lSQ0xFRCBJREVPR1JBUEggV09PRDtTbzswO0w7PGNpcmNsZT4gNjcyODs7OztOOzs7OzsKKzMyOEU7Q0lSQ0xFRCBJREVPR1JBUEggTUVUQUw7U287MDtMOzxjaXJjbGU+IDkxRDE7Ozs7Tjs7Ozs7CiszMjhGO0NJUkNMRUQgSURFT0dSQVBIIEVBUlRIO1NvOzA7TDs8Y2lyY2xlPiA1NzFGOzs7O047Ozs7OworMzI5MDtDSVJDTEVEIElERU9HUkFQSCBTVU47U287MDtMOzxjaXJjbGU+IDY1RTU7Ozs7Tjs7Ozs7CiszMjkxO0NJUkNMRUQgSURFT0dSQVBIIFNUT0NLO1NvOzA7TDs8Y2lyY2xlPiA2ODJBOzs7O047Ozs7OworMzI5MjtDSVJDTEVEIElERU9HUkFQSCBIQVZFO1NvOzA7TDs8Y2lyY2xlPiA2NzA5Ozs7O047Ozs7OworMzI5MztDSVJDTEVEIElERU9HUkFQSCBTT0NJRVRZO1NvOzA7TDs8Y2lyY2xlPiA3OTNFOzs7O047Ozs7OworMzI5NDtDSVJDTEVEIElERU9HUkFQSCBOQU1FO1NvOzA7TDs8Y2lyY2xlPiA1NDBEOzs7O047Ozs7OworMzI5NTtDSVJDTEVEIElERU9HUkFQSCBTUEVDSUFMO1NvOzA7TDs8Y2lyY2xlPiA3Mjc5Ozs7O047Ozs7OworMzI5NjtDSVJDTEVEIElERU9HUkFQSCBGSU5BTkNJQUw7U287MDtMOzxjaXJjbGU+IDhDQTE7Ozs7Tjs7Ozs7CiszMjk3O0NJUkNMRUQgSURFT0dSQVBIIENPTkdSQVRVTEFUSU9OO1NvOzA7TDs8Y2lyY2xlPiA3OTVEOzs7O047Ozs7OworMzI5ODtDSVJDTEVEIElERU9HUkFQSCBMQUJPUjtTbzswO0w7PGNpcmNsZT4gNTJCNDs7OztOOzs7OzsKKzMyOTk7Q0lSQ0xFRCBJREVPR1JBUEggU0VDUkVUO1NvOzA7TDs8Y2lyY2xlPiA3OUQ4Ozs7O047Ozs7OworMzI5QTtDSVJDTEVEIElERU9HUkFQSCBNQUxFO1NvOzA7TDs8Y2lyY2xlPiA3NTM3Ozs7O047Ozs7OworMzI5QjtDSVJDTEVEIElERU9HUkFQSCBGRU1BTEU7U287MDtMOzxjaXJjbGU+IDU5NzM7Ozs7Tjs7Ozs7CiszMjlDO0NJUkNMRUQgSURFT0dSQVBIIFNVSVRBQkxFO1NvOzA7TDs8Y2lyY2xlPiA5MDY5Ozs7O047Ozs7OworMzI5RDtDSVJDTEVEIElERU9HUkFQSCBFWENFTExFTlQ7U287MDtMOzxjaXJjbGU+IDUxMkE7Ozs7Tjs7Ozs7CiszMjlFO0NJUkNMRUQgSURFT0dSQVBIIFBSSU5UO1NvOzA7TDs8Y2lyY2xlPiA1MzcwOzs7O047Ozs7OworMzI5RjtDSVJDTEVEIElERU9HUkFQSCBBVFRFTlRJT047U287MDtMOzxjaXJjbGU+IDZDRTg7Ozs7Tjs7Ozs7CiszMkEwO0NJUkNMRUQgSURFT0dSQVBIIElURU07U287MDtMOzxjaXJjbGU+IDk4MDU7Ozs7Tjs7Ozs7CiszMkExO0NJUkNMRUQgSURFT0dSQVBIIFJFU1Q7U287MDtMOzxjaXJjbGU+IDRGMTE7Ozs7Tjs7Ozs7CiszMkEyO0NJUkNMRUQgSURFT0dSQVBIIENPUFk7U287MDtMOzxjaXJjbGU+IDUxOTk7Ozs7Tjs7Ozs7CiszMkEzO0NJUkNMRUQgSURFT0dSQVBIIENPUlJFQ1Q7U287MDtMOzxjaXJjbGU+IDZCNjM7Ozs7Tjs7Ozs7CiszMkE0O0NJUkNMRUQgSURFT0dSQVBIIEhJR0g7U287MDtMOzxjaXJjbGU+IDRFMEE7Ozs7Tjs7Ozs7CiszMkE1O0NJUkNMRUQgSURFT0dSQVBIIENFTlRSRTtTbzswO0w7PGNpcmNsZT4gNEUyRDs7OztOO0NJUkNMRUQgSURFT0dSQVBIIENFTlRFUjs7OzsKKzMyQTY7Q0lSQ0xFRCBJREVPR1JBUEggTE9XO1NvOzA7TDs8Y2lyY2xlPiA0RTBCOzs7O047Ozs7OworMzJBNztDSVJDTEVEIElERU9HUkFQSCBMRUZUO1NvOzA7TDs8Y2lyY2xlPiA1REU2Ozs7O047Ozs7OworMzJBODtDSVJDTEVEIElERU9HUkFQSCBSSUdIVDtTbzswO0w7PGNpcmNsZT4gNTNGMzs7OztOOzs7OzsKKzMyQTk7Q0lSQ0xFRCBJREVPR1JBUEggTUVESUNJTkU7U287MDtMOzxjaXJjbGU+IDUzM0I7Ozs7Tjs7Ozs7CiszMkFBO0NJUkNMRUQgSURFT0dSQVBIIFJFTElHSU9OO1NvOzA7TDs8Y2lyY2xlPiA1Qjk3Ozs7O047Ozs7OworMzJBQjtDSVJDTEVEIElERU9HUkFQSCBTVFVEWTtTbzswO0w7PGNpcmNsZT4gNUI2Njs7OztOOzs7OzsKKzMyQUM7Q0lSQ0xFRCBJREVPR1JBUEggU1VQRVJWSVNFO1NvOzA7TDs8Y2lyY2xlPiA3NkUzOzs7O047Ozs7OworMzJBRDtDSVJDTEVEIElERU9HUkFQSCBFTlRFUlBSSVNFO1NvOzA7TDs8Y2lyY2xlPiA0RjAxOzs7O047Ozs7OworMzJBRTtDSVJDTEVEIElERU9HUkFQSCBSRVNPVVJDRTtTbzswO0w7PGNpcmNsZT4gOENDNzs7OztOOzs7OzsKKzMyQUY7Q0lSQ0xFRCBJREVPR1JBUEggQUxMSUFOQ0U7U287MDtMOzxjaXJjbGU+IDUzNTQ7Ozs7Tjs7Ozs7CiszMkIwO0NJUkNMRUQgSURFT0dSQVBIIE5JR0hUO1NvOzA7TDs8Y2lyY2xlPiA1OTFDOzs7O047Ozs7OworMzJDMDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBKQU5VQVJZO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDY3MDg7Ozs7Tjs7Ozs7CiszMkMxO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEZFQlJVQVJZO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDY3MDg7Ozs7Tjs7Ozs7CiszMkMyO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIE1BUkNIO1NvOzA7TDs8Y29tcGF0PiAwMDMzIDY3MDg7Ozs7Tjs7Ozs7CiszMkMzO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEFQUklMO1NvOzA7TDs8Y29tcGF0PiAwMDM0IDY3MDg7Ozs7Tjs7Ozs7CiszMkM0O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIE1BWTtTbzswO0w7PGNvbXBhdD4gMDAzNSA2NzA4Ozs7O047Ozs7OworMzJDNTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBKVU5FO1NvOzA7TDs8Y29tcGF0PiAwMDM2IDY3MDg7Ozs7Tjs7Ozs7CiszMkM2O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEpVTFk7U287MDtMOzxjb21wYXQ+IDAwMzcgNjcwODs7OztOOzs7OzsKKzMyQzc7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgQVVHVVNUO1NvOzA7TDs8Y29tcGF0PiAwMDM4IDY3MDg7Ozs7Tjs7Ozs7CiszMkM4O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIFNFUFRFTUJFUjtTbzswO0w7PGNvbXBhdD4gMDAzOSA2NzA4Ozs7O047Ozs7OworMzJDOTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBPQ1RPQkVSO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzAgNjcwODs7OztOOzs7OzsKKzMyQ0E7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgTk9WRU1CRVI7U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMSA2NzA4Ozs7O047Ozs7OworMzJDQjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBERUNFTUJFUjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMyIDY3MDg7Ozs7Tjs7Ozs7CiszMkQwO0NJUkNMRUQgS0FUQUtBTkEgQTtTbzswO0w7PGNpcmNsZT4gMzBBMjs7OztOOzs7OzsKKzMyRDE7Q0lSQ0xFRCBLQVRBS0FOQSBJO1NvOzA7TDs8Y2lyY2xlPiAzMEE0Ozs7O047Ozs7OworMzJEMjtDSVJDTEVEIEtBVEFLQU5BIFU7U287MDtMOzxjaXJjbGU+IDMwQTY7Ozs7Tjs7Ozs7CiszMkQzO0NJUkNMRUQgS0FUQUtBTkEgRTtTbzswO0w7PGNpcmNsZT4gMzBBODs7OztOOzs7OzsKKzMyRDQ7Q0lSQ0xFRCBLQVRBS0FOQSBPO1NvOzA7TDs8Y2lyY2xlPiAzMEFBOzs7O047Ozs7OworMzJENTtDSVJDTEVEIEtBVEFLQU5BIEtBO1NvOzA7TDs8Y2lyY2xlPiAzMEFCOzs7O047Ozs7OworMzJENjtDSVJDTEVEIEtBVEFLQU5BIEtJO1NvOzA7TDs8Y2lyY2xlPiAzMEFEOzs7O047Ozs7OworMzJENztDSVJDTEVEIEtBVEFLQU5BIEtVO1NvOzA7TDs8Y2lyY2xlPiAzMEFGOzs7O047Ozs7OworMzJEODtDSVJDTEVEIEtBVEFLQU5BIEtFO1NvOzA7TDs8Y2lyY2xlPiAzMEIxOzs7O047Ozs7OworMzJEOTtDSVJDTEVEIEtBVEFLQU5BIEtPO1NvOzA7TDs8Y2lyY2xlPiAzMEIzOzs7O047Ozs7OworMzJEQTtDSVJDTEVEIEtBVEFLQU5BIFNBO1NvOzA7TDs8Y2lyY2xlPiAzMEI1Ozs7O047Ozs7OworMzJEQjtDSVJDTEVEIEtBVEFLQU5BIFNJO1NvOzA7TDs8Y2lyY2xlPiAzMEI3Ozs7O047Ozs7OworMzJEQztDSVJDTEVEIEtBVEFLQU5BIFNVO1NvOzA7TDs8Y2lyY2xlPiAzMEI5Ozs7O047Ozs7OworMzJERDtDSVJDTEVEIEtBVEFLQU5BIFNFO1NvOzA7TDs8Y2lyY2xlPiAzMEJCOzs7O047Ozs7OworMzJERTtDSVJDTEVEIEtBVEFLQU5BIFNPO1NvOzA7TDs8Y2lyY2xlPiAzMEJEOzs7O047Ozs7OworMzJERjtDSVJDTEVEIEtBVEFLQU5BIFRBO1NvOzA7TDs8Y2lyY2xlPiAzMEJGOzs7O047Ozs7OworMzJFMDtDSVJDTEVEIEtBVEFLQU5BIFRJO1NvOzA7TDs8Y2lyY2xlPiAzMEMxOzs7O047Ozs7OworMzJFMTtDSVJDTEVEIEtBVEFLQU5BIFRVO1NvOzA7TDs8Y2lyY2xlPiAzMEM0Ozs7O047Ozs7OworMzJFMjtDSVJDTEVEIEtBVEFLQU5BIFRFO1NvOzA7TDs8Y2lyY2xlPiAzMEM2Ozs7O047Ozs7OworMzJFMztDSVJDTEVEIEtBVEFLQU5BIFRPO1NvOzA7TDs8Y2lyY2xlPiAzMEM4Ozs7O047Ozs7OworMzJFNDtDSVJDTEVEIEtBVEFLQU5BIE5BO1NvOzA7TDs8Y2lyY2xlPiAzMENBOzs7O047Ozs7OworMzJFNTtDSVJDTEVEIEtBVEFLQU5BIE5JO1NvOzA7TDs8Y2lyY2xlPiAzMENCOzs7O047Ozs7OworMzJFNjtDSVJDTEVEIEtBVEFLQU5BIE5VO1NvOzA7TDs8Y2lyY2xlPiAzMENDOzs7O047Ozs7OworMzJFNztDSVJDTEVEIEtBVEFLQU5BIE5FO1NvOzA7TDs8Y2lyY2xlPiAzMENEOzs7O047Ozs7OworMzJFODtDSVJDTEVEIEtBVEFLQU5BIE5PO1NvOzA7TDs8Y2lyY2xlPiAzMENFOzs7O047Ozs7OworMzJFOTtDSVJDTEVEIEtBVEFLQU5BIEhBO1NvOzA7TDs8Y2lyY2xlPiAzMENGOzs7O047Ozs7OworMzJFQTtDSVJDTEVEIEtBVEFLQU5BIEhJO1NvOzA7TDs8Y2lyY2xlPiAzMEQyOzs7O047Ozs7OworMzJFQjtDSVJDTEVEIEtBVEFLQU5BIEhVO1NvOzA7TDs8Y2lyY2xlPiAzMEQ1Ozs7O047Ozs7OworMzJFQztDSVJDTEVEIEtBVEFLQU5BIEhFO1NvOzA7TDs8Y2lyY2xlPiAzMEQ4Ozs7O047Ozs7OworMzJFRDtDSVJDTEVEIEtBVEFLQU5BIEhPO1NvOzA7TDs8Y2lyY2xlPiAzMERCOzs7O047Ozs7OworMzJFRTtDSVJDTEVEIEtBVEFLQU5BIE1BO1NvOzA7TDs8Y2lyY2xlPiAzMERFOzs7O047Ozs7OworMzJFRjtDSVJDTEVEIEtBVEFLQU5BIE1JO1NvOzA7TDs8Y2lyY2xlPiAzMERGOzs7O047Ozs7OworMzJGMDtDSVJDTEVEIEtBVEFLQU5BIE1VO1NvOzA7TDs8Y2lyY2xlPiAzMEUwOzs7O047Ozs7OworMzJGMTtDSVJDTEVEIEtBVEFLQU5BIE1FO1NvOzA7TDs8Y2lyY2xlPiAzMEUxOzs7O047Ozs7OworMzJGMjtDSVJDTEVEIEtBVEFLQU5BIE1PO1NvOzA7TDs8Y2lyY2xlPiAzMEUyOzs7O047Ozs7OworMzJGMztDSVJDTEVEIEtBVEFLQU5BIFlBO1NvOzA7TDs8Y2lyY2xlPiAzMEU0Ozs7O047Ozs7OworMzJGNDtDSVJDTEVEIEtBVEFLQU5BIFlVO1NvOzA7TDs8Y2lyY2xlPiAzMEU2Ozs7O047Ozs7OworMzJGNTtDSVJDTEVEIEtBVEFLQU5BIFlPO1NvOzA7TDs8Y2lyY2xlPiAzMEU4Ozs7O047Ozs7OworMzJGNjtDSVJDTEVEIEtBVEFLQU5BIFJBO1NvOzA7TDs8Y2lyY2xlPiAzMEU5Ozs7O047Ozs7OworMzJGNztDSVJDTEVEIEtBVEFLQU5BIFJJO1NvOzA7TDs8Y2lyY2xlPiAzMEVBOzs7O047Ozs7OworMzJGODtDSVJDTEVEIEtBVEFLQU5BIFJVO1NvOzA7TDs8Y2lyY2xlPiAzMEVCOzs7O047Ozs7OworMzJGOTtDSVJDTEVEIEtBVEFLQU5BIFJFO1NvOzA7TDs8Y2lyY2xlPiAzMEVDOzs7O047Ozs7OworMzJGQTtDSVJDTEVEIEtBVEFLQU5BIFJPO1NvOzA7TDs8Y2lyY2xlPiAzMEVEOzs7O047Ozs7OworMzJGQjtDSVJDTEVEIEtBVEFLQU5BIFdBO1NvOzA7TDs8Y2lyY2xlPiAzMEVGOzs7O047Ozs7OworMzJGQztDSVJDTEVEIEtBVEFLQU5BIFdJO1NvOzA7TDs8Y2lyY2xlPiAzMEYwOzs7O047Ozs7OworMzJGRDtDSVJDTEVEIEtBVEFLQU5BIFdFO1NvOzA7TDs8Y2lyY2xlPiAzMEYxOzs7O047Ozs7OworMzJGRTtDSVJDTEVEIEtBVEFLQU5BIFdPO1NvOzA7TDs8Y2lyY2xlPiAzMEYyOzs7O047Ozs7OworMzMwMDtTUVVBUkUgQVBBQVRPO1NvOzA7TDs8c3F1YXJlPiAzMEEyIDMwRDEgMzBGQyAzMEM4Ozs7O047U1FVQVJFRCBBUEFBVE87Ozs7CiszMzAxO1NRVUFSRSBBUlVIVUE7U287MDtMOzxzcXVhcmU+IDMwQTIgMzBFQiAzMEQ1IDMwQTE7Ozs7TjtTUVVBUkVEIEFSVUhVQTs7OzsKKzMzMDI7U1FVQVJFIEFOUEVBO1NvOzA7TDs8c3F1YXJlPiAzMEEyIDMwRjMgMzBEQSAzMEEyOzs7O047U1FVQVJFRCBBTlBFQTs7OzsKKzMzMDM7U1FVQVJFIEFBUlU7U287MDtMOzxzcXVhcmU+IDMwQTIgMzBGQyAzMEVCOzs7O047U1FVQVJFRCBBQVJVOzs7OworMzMwNDtTUVVBUkUgSU5JTkdVO1NvOzA7TDs8c3F1YXJlPiAzMEE0IDMwQ0IgMzBGMyAzMEIwOzs7O047U1FVQVJFRCBJTklOR1U7Ozs7CiszMzA1O1NRVUFSRSBJTlRJO1NvOzA7TDs8c3F1YXJlPiAzMEE0IDMwRjMgMzBDMTs7OztOO1NRVUFSRUQgSU5USTs7OzsKKzMzMDY7U1FVQVJFIFVPTjtTbzswO0w7PHNxdWFyZT4gMzBBNiAzMEE5IDMwRjM7Ozs7TjtTUVVBUkVEIFVPTjs7OzsKKzMzMDc7U1FVQVJFIEVTVUtVVURPO1NvOzA7TDs8c3F1YXJlPiAzMEE4IDMwQjkgMzBBRiAzMEZDIDMwQzk7Ozs7TjtTUVVBUkVEIEVTVUtVVURPOzs7OworMzMwODtTUVVBUkUgRUVLQUE7U287MDtMOzxzcXVhcmU+IDMwQTggMzBGQyAzMEFCIDMwRkM7Ozs7TjtTUVVBUkVEIEVFS0FBOzs7OworMzMwOTtTUVVBUkUgT05TVTtTbzswO0w7PHNxdWFyZT4gMzBBQSAzMEYzIDMwQjk7Ozs7TjtTUVVBUkVEIE9OU1U7Ozs7CiszMzBBO1NRVUFSRSBPT01VO1NvOzA7TDs8c3F1YXJlPiAzMEFBIDMwRkMgMzBFMDs7OztOO1NRVUFSRUQgT09NVTs7OzsKKzMzMEI7U1FVQVJFIEtBSVJJO1NvOzA7TDs8c3F1YXJlPiAzMEFCIDMwQTQgMzBFQTs7OztOO1NRVUFSRUQgS0FJUkk7Ozs7CiszMzBDO1NRVUFSRSBLQVJBVFRPO1NvOzA7TDs8c3F1YXJlPiAzMEFCIDMwRTkgMzBDMyAzMEM4Ozs7O047U1FVQVJFRCBLQVJBVFRPOzs7OworMzMwRDtTUVVBUkUgS0FST1JJSTtTbzswO0w7PHNxdWFyZT4gMzBBQiAzMEVEIDMwRUEgMzBGQzs7OztOO1NRVUFSRUQgS0FST1JJSTs7OzsKKzMzMEU7U1FVQVJFIEdBUk9OO1NvOzA7TDs8c3F1YXJlPiAzMEFDIDMwRUQgMzBGMzs7OztOO1NRVUFSRUQgR0FST047Ozs7CiszMzBGO1NRVUFSRSBHQU5NQTtTbzswO0w7PHNxdWFyZT4gMzBBQyAzMEYzIDMwREU7Ozs7TjtTUVVBUkVEIEdBTk1BOzs7OworMzMxMDtTUVVBUkUgR0lHQTtTbzswO0w7PHNxdWFyZT4gMzBBRSAzMEFDOzs7O047U1FVQVJFRCBHSUdBOzs7OworMzMxMTtTUVVBUkUgR0lOSUk7U287MDtMOzxzcXVhcmU+IDMwQUUgMzBDQiAzMEZDOzs7O047U1FVQVJFRCBHSU5JSTs7OzsKKzMzMTI7U1FVQVJFIEtZVVJJSTtTbzswO0w7PHNxdWFyZT4gMzBBRCAzMEU1IDMwRUEgMzBGQzs7OztOO1NRVUFSRUQgS1lVUklJOzs7OworMzMxMztTUVVBUkUgR0lSVURBQTtTbzswO0w7PHNxdWFyZT4gMzBBRSAzMEVCIDMwQzAgMzBGQzs7OztOO1NRVUFSRUQgR0lSVURBQTs7OzsKKzMzMTQ7U1FVQVJFIEtJUk87U287MDtMOzxzcXVhcmU+IDMwQUQgMzBFRDs7OztOO1NRVUFSRUQgS0lSTzs7OzsKKzMzMTU7U1FVQVJFIEtJUk9HVVJBTVU7U287MDtMOzxzcXVhcmU+IDMwQUQgMzBFRCAzMEIwIDMwRTkgMzBFMDs7OztOO1NRVUFSRUQgS0lST0dVUkFNVTs7OzsKKzMzMTY7U1FVQVJFIEtJUk9NRUVUT1JVO1NvOzA7TDs8c3F1YXJlPiAzMEFEIDMwRUQgMzBFMSAzMEZDIDMwQzggMzBFQjs7OztOO1NRVUFSRUQgS0lST01FRVRPUlU7Ozs7CiszMzE3O1NRVUFSRSBLSVJPV0FUVE87U287MDtMOzxzcXVhcmU+IDMwQUQgMzBFRCAzMEVGIDMwQzMgMzBDODs7OztOO1NRVUFSRUQgS0lST1dBVFRPOzs7OworMzMxODtTUVVBUkUgR1VSQU1VO1NvOzA7TDs8c3F1YXJlPiAzMEIwIDMwRTkgMzBFMDs7OztOO1NRVUFSRUQgR1VSQU1VOzs7OworMzMxOTtTUVVBUkUgR1VSQU1VVE9OO1NvOzA7TDs8c3F1YXJlPiAzMEIwIDMwRTkgMzBFMCAzMEM4IDMwRjM7Ozs7TjtTUVVBUkVEIEdVUkFNVVRPTjs7OzsKKzMzMUE7U1FVQVJFIEtVUlVaRUlSTztTbzswO0w7PHNxdWFyZT4gMzBBRiAzMEVCIDMwQkMgMzBBNCAzMEVEOzs7O047U1FVQVJFRCBLVVJVWkVJUk87Ozs7CiszMzFCO1NRVUFSRSBLVVJPT05FO1NvOzA7TDs8c3F1YXJlPiAzMEFGIDMwRUQgMzBGQyAzMENEOzs7O047U1FVQVJFRCBLVVJPT05FOzs7OworMzMxQztTUVVBUkUgS0VFU1U7U287MDtMOzxzcXVhcmU+IDMwQjEgMzBGQyAzMEI5Ozs7O047U1FVQVJFRCBLRUVTVTs7OzsKKzMzMUQ7U1FVQVJFIEtPUlVOQTtTbzswO0w7PHNxdWFyZT4gMzBCMyAzMEVCIDMwQ0E7Ozs7TjtTUVVBUkVEIEtPUlVOQTs7OzsKKzMzMUU7U1FVQVJFIEtPT1BPO1NvOzA7TDs8c3F1YXJlPiAzMEIzIDMwRkMgMzBERDs7OztOO1NRVUFSRUQgS09PUE87Ozs7CiszMzFGO1NRVUFSRSBTQUlLVVJVO1NvOzA7TDs8c3F1YXJlPiAzMEI1IDMwQTQgMzBBRiAzMEVCOzs7O047U1FVQVJFRCBTQUlLVVJVOzs7OworMzMyMDtTUVVBUkUgU0FOVElJTVU7U287MDtMOzxzcXVhcmU+IDMwQjUgMzBGMyAzMEMxIDMwRkMgMzBFMDs7OztOO1NRVUFSRUQgU0FOVElJTVU7Ozs7CiszMzIxO1NRVUFSRSBTSVJJTkdVO1NvOzA7TDs8c3F1YXJlPiAzMEI3IDMwRUEgMzBGMyAzMEIwOzs7O047U1FVQVJFRCBTSVJJTkdVOzs7OworMzMyMjtTUVVBUkUgU0VOVEk7U287MDtMOzxzcXVhcmU+IDMwQkIgMzBGMyAzMEMxOzs7O047U1FVQVJFRCBTRU5USTs7OzsKKzMzMjM7U1FVQVJFIFNFTlRPO1NvOzA7TDs8c3F1YXJlPiAzMEJCIDMwRjMgMzBDODs7OztOO1NRVUFSRUQgU0VOVE87Ozs7CiszMzI0O1NRVUFSRSBEQUFTVTtTbzswO0w7PHNxdWFyZT4gMzBDMCAzMEZDIDMwQjk7Ozs7TjtTUVVBUkVEIERBQVNVOzs7OworMzMyNTtTUVVBUkUgREVTSTtTbzswO0w7PHNxdWFyZT4gMzBDNyAzMEI3Ozs7O047U1FVQVJFRCBERVNJOzs7OworMzMyNjtTUVVBUkUgRE9SVTtTbzswO0w7PHNxdWFyZT4gMzBDOSAzMEVCOzs7O047U1FVQVJFRCBET1JVOzs7OworMzMyNztTUVVBUkUgVE9OO1NvOzA7TDs8c3F1YXJlPiAzMEM4IDMwRjM7Ozs7TjtTUVVBUkVEIFRPTjs7OzsKKzMzMjg7U1FVQVJFIE5BTk87U287MDtMOzxzcXVhcmU+IDMwQ0EgMzBDRTs7OztOO1NRVUFSRUQgTkFOTzs7OzsKKzMzMjk7U1FVQVJFIE5PVFRPO1NvOzA7TDs8c3F1YXJlPiAzMENFIDMwQzMgMzBDODs7OztOO1NRVUFSRUQgTk9UVE87Ozs7CiszMzJBO1NRVUFSRSBIQUlUVTtTbzswO0w7PHNxdWFyZT4gMzBDRiAzMEE0IDMwQzQ7Ozs7TjtTUVVBUkVEIEhBSVRVOzs7OworMzMyQjtTUVVBUkUgUEFBU0VOVE87U287MDtMOzxzcXVhcmU+IDMwRDEgMzBGQyAzMEJCIDMwRjMgMzBDODs7OztOO1NRVUFSRUQgUEFBU0VOVE87Ozs7CiszMzJDO1NRVUFSRSBQQUFUVTtTbzswO0w7PHNxdWFyZT4gMzBEMSAzMEZDIDMwQzQ7Ozs7TjtTUVVBUkVEIFBBQVRVOzs7OworMzMyRDtTUVVBUkUgQkFBUkVSVTtTbzswO0w7PHNxdWFyZT4gMzBEMCAzMEZDIDMwRUMgMzBFQjs7OztOO1NRVUFSRUQgQkFBUkVSVTs7OzsKKzMzMkU7U1FVQVJFIFBJQVNVVE9SVTtTbzswO0w7PHNxdWFyZT4gMzBENCAzMEEyIDMwQjkgMzBDOCAzMEVCOzs7O047U1FVQVJFRCBQSUFTVVRPUlU7Ozs7CiszMzJGO1NRVUFSRSBQSUtVUlU7U287MDtMOzxzcXVhcmU+IDMwRDQgMzBBRiAzMEVCOzs7O047U1FVQVJFRCBQSUtVUlU7Ozs7CiszMzMwO1NRVUFSRSBQSUtPO1NvOzA7TDs8c3F1YXJlPiAzMEQ0IDMwQjM7Ozs7TjtTUVVBUkVEIFBJS087Ozs7CiszMzMxO1NRVUFSRSBCSVJVO1NvOzA7TDs8c3F1YXJlPiAzMEQzIDMwRUI7Ozs7TjtTUVVBUkVEIEJJUlU7Ozs7CiszMzMyO1NRVUFSRSBIVUFSQURETztTbzswO0w7PHNxdWFyZT4gMzBENSAzMEExIDMwRTkgMzBDMyAzMEM5Ozs7O047U1FVQVJFRCBIVUFSQURETzs7OzsKKzMzMzM7U1FVQVJFIEhVSUlUTztTbzswO0w7PHNxdWFyZT4gMzBENSAzMEEzIDMwRkMgMzBDODs7OztOO1NRVUFSRUQgSFVJSVRPOzs7OworMzMzNDtTUVVBUkUgQlVTU1lFUlU7U287MDtMOzxzcXVhcmU+IDMwRDYgMzBDMyAzMEI3IDMwQTcgMzBFQjs7OztOO1NRVUFSRUQgQlVTU1lFUlU7Ozs7CiszMzM1O1NRVUFSRSBIVVJBTjtTbzswO0w7PHNxdWFyZT4gMzBENSAzMEU5IDMwRjM7Ozs7TjtTUVVBUkVEIEhVUkFOOzs7OworMzMzNjtTUVVBUkUgSEVLVVRBQVJVO1NvOzA7TDs8c3F1YXJlPiAzMEQ4IDMwQUYgMzBCRiAzMEZDIDMwRUI7Ozs7TjtTUVVBUkVEIEhFS1VUQUFSVTs7OzsKKzMzMzc7U1FVQVJFIFBFU087U287MDtMOzxzcXVhcmU+IDMwREEgMzBCRDs7OztOO1NRVUFSRUQgUEVTTzs7OzsKKzMzMzg7U1FVQVJFIFBFTklISTtTbzswO0w7PHNxdWFyZT4gMzBEQSAzMENCIDMwRDI7Ozs7TjtTUVVBUkVEIFBFTklISTs7OzsKKzMzMzk7U1FVQVJFIEhFUlVUVTtTbzswO0w7PHNxdWFyZT4gMzBEOCAzMEVCIDMwQzQ7Ozs7TjtTUVVBUkVEIEhFUlVUVTs7OzsKKzMzM0E7U1FVQVJFIFBFTlNVO1NvOzA7TDs8c3F1YXJlPiAzMERBIDMwRjMgMzBCOTs7OztOO1NRVUFSRUQgUEVOU1U7Ozs7CiszMzNCO1NRVUFSRSBQRUVaSTtTbzswO0w7PHNxdWFyZT4gMzBEQSAzMEZDIDMwQjg7Ozs7TjtTUVVBUkVEIFBFRVpJOzs7OworMzMzQztTUVVBUkUgQkVFVEE7U287MDtMOzxzcXVhcmU+IDMwRDkgMzBGQyAzMEJGOzs7O047U1FVQVJFRCBCRUVUQTs7OzsKKzMzM0Q7U1FVQVJFIFBPSU5UTztTbzswO0w7PHNxdWFyZT4gMzBERCAzMEE0IDMwRjMgMzBDODs7OztOO1NRVUFSRUQgUE9JTlRPOzs7OworMzMzRTtTUVVBUkUgQk9SVVRPO1NvOzA7TDs8c3F1YXJlPiAzMERDIDMwRUIgMzBDODs7OztOO1NRVUFSRUQgQk9SVVRPOzs7OworMzMzRjtTUVVBUkUgSE9OO1NvOzA7TDs8c3F1YXJlPiAzMERCIDMwRjM7Ozs7TjtTUVVBUkVEIEhPTjs7OzsKKzMzNDA7U1FVQVJFIFBPTkRPO1NvOzA7TDs8c3F1YXJlPiAzMEREIDMwRjMgMzBDOTs7OztOO1NRVUFSRUQgUE9ORE87Ozs7CiszMzQxO1NRVUFSRSBIT09SVTtTbzswO0w7PHNxdWFyZT4gMzBEQiAzMEZDIDMwRUI7Ozs7TjtTUVVBUkVEIEhPT1JVOzs7OworMzM0MjtTUVVBUkUgSE9PTjtTbzswO0w7PHNxdWFyZT4gMzBEQiAzMEZDIDMwRjM7Ozs7TjtTUVVBUkVEIEhPT047Ozs7CiszMzQzO1NRVUFSRSBNQUlLVVJPO1NvOzA7TDs8c3F1YXJlPiAzMERFIDMwQTQgMzBBRiAzMEVEOzs7O047U1FVQVJFRCBNQUlLVVJPOzs7OworMzM0NDtTUVVBUkUgTUFJUlU7U287MDtMOzxzcXVhcmU+IDMwREUgMzBBNCAzMEVCOzs7O047U1FVQVJFRCBNQUlSVTs7OzsKKzMzNDU7U1FVQVJFIE1BSEhBO1NvOzA7TDs8c3F1YXJlPiAzMERFIDMwQzMgMzBDRjs7OztOO1NRVUFSRUQgTUFISEE7Ozs7CiszMzQ2O1NRVUFSRSBNQVJVS1U7U287MDtMOzxzcXVhcmU+IDMwREUgMzBFQiAzMEFGOzs7O047U1FVQVJFRCBNQVJVS1U7Ozs7CiszMzQ3O1NRVUFSRSBNQU5TWU9OO1NvOzA7TDs8c3F1YXJlPiAzMERFIDMwRjMgMzBCNyAzMEU3IDMwRjM7Ozs7TjtTUVVBUkVEIE1BTlNZT047Ozs7CiszMzQ4O1NRVUFSRSBNSUtVUk9OO1NvOzA7TDs8c3F1YXJlPiAzMERGIDMwQUYgMzBFRCAzMEYzOzs7O047U1FVQVJFRCBNSUtVUk9OOzs7OworMzM0OTtTUVVBUkUgTUlSSTtTbzswO0w7PHNxdWFyZT4gMzBERiAzMEVBOzs7O047U1FVQVJFRCBNSVJJOzs7OworMzM0QTtTUVVBUkUgTUlSSUJBQVJVO1NvOzA7TDs8c3F1YXJlPiAzMERGIDMwRUEgMzBEMCAzMEZDIDMwRUI7Ozs7TjtTUVVBUkVEIE1JUklCQUFSVTs7OzsKKzMzNEI7U1FVQVJFIE1FR0E7U287MDtMOzxzcXVhcmU+IDMwRTEgMzBBQzs7OztOO1NRVUFSRUQgTUVHQTs7OzsKKzMzNEM7U1FVQVJFIE1FR0FUT047U287MDtMOzxzcXVhcmU+IDMwRTEgMzBBQyAzMEM4IDMwRjM7Ozs7TjtTUVVBUkVEIE1FR0FUT047Ozs7CiszMzREO1NRVUFSRSBNRUVUT1JVO1NvOzA7TDs8c3F1YXJlPiAzMEUxIDMwRkMgMzBDOCAzMEVCOzs7O047U1FVQVJFRCBNRUVUT1JVOzs7OworMzM0RTtTUVVBUkUgWUFBRE87U287MDtMOzxzcXVhcmU+IDMwRTQgMzBGQyAzMEM5Ozs7O047U1FVQVJFRCBZQUFETzs7OzsKKzMzNEY7U1FVQVJFIFlBQVJVO1NvOzA7TDs8c3F1YXJlPiAzMEU0IDMwRkMgMzBFQjs7OztOO1NRVUFSRUQgWUFBUlU7Ozs7CiszMzUwO1NRVUFSRSBZVUFOO1NvOzA7TDs8c3F1YXJlPiAzMEU2IDMwQTIgMzBGMzs7OztOO1NRVUFSRUQgWVVBTjs7OzsKKzMzNTE7U1FVQVJFIFJJVFRPUlU7U287MDtMOzxzcXVhcmU+IDMwRUEgMzBDMyAzMEM4IDMwRUI7Ozs7TjtTUVVBUkVEIFJJVFRPUlU7Ozs7CiszMzUyO1NRVUFSRSBSSVJBO1NvOzA7TDs8c3F1YXJlPiAzMEVBIDMwRTk7Ozs7TjtTUVVBUkVEIFJJUkE7Ozs7CiszMzUzO1NRVUFSRSBSVVBJSTtTbzswO0w7PHNxdWFyZT4gMzBFQiAzMEQ0IDMwRkM7Ozs7TjtTUVVBUkVEIFJVUElJOzs7OworMzM1NDtTUVVBUkUgUlVVQlVSVTtTbzswO0w7PHNxdWFyZT4gMzBFQiAzMEZDIDMwRDYgMzBFQjs7OztOO1NRVUFSRUQgUlVVQlVSVTs7OzsKKzMzNTU7U1FVQVJFIFJFTVU7U287MDtMOzxzcXVhcmU+IDMwRUMgMzBFMDs7OztOO1NRVUFSRUQgUkVNVTs7OzsKKzMzNTY7U1FVQVJFIFJFTlRPR0VOO1NvOzA7TDs8c3F1YXJlPiAzMEVDIDMwRjMgMzBDOCAzMEIyIDMwRjM7Ozs7TjtTUVVBUkVEIFJFTlRPR0VOOzs7OworMzM1NztTUVVBUkUgV0FUVE87U287MDtMOzxzcXVhcmU+IDMwRUYgMzBDMyAzMEM4Ozs7O047U1FVQVJFRCBXQVRUTzs7OzsKKzMzNTg7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBaRVJPO1NvOzA7TDs8Y29tcGF0PiAwMDMwIDcwQjk7Ozs7Tjs7Ozs7CiszMzU5O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgT05FO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDcwQjk7Ozs7Tjs7Ozs7CiszMzVBO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVFdPO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDcwQjk7Ozs7Tjs7Ozs7CiszMzVCO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVEhSRUU7U287MDtMOzxjb21wYXQ+IDAwMzMgNzBCOTs7OztOOzs7OzsKKzMzNUM7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBGT1VSO1NvOzA7TDs8Y29tcGF0PiAwMDM0IDcwQjk7Ozs7Tjs7Ozs7CiszMzVEO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgRklWRTtTbzswO0w7PGNvbXBhdD4gMDAzNSA3MEI5Ozs7O047Ozs7OworMzM1RTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFNJWDtTbzswO0w7PGNvbXBhdD4gMDAzNiA3MEI5Ozs7O047Ozs7OworMzM1RjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFNFVkVOO1NvOzA7TDs8Y29tcGF0PiAwMDM3IDcwQjk7Ozs7Tjs7Ozs7CiszMzYwO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgRUlHSFQ7U287MDtMOzxjb21wYXQ+IDAwMzggNzBCOTs7OztOOzs7OzsKKzMzNjE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBOSU5FO1NvOzA7TDs8Y29tcGF0PiAwMDM5IDcwQjk7Ozs7Tjs7Ozs7CiszMzYyO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVEVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzAgNzBCOTs7OztOOzs7OzsKKzMzNjM7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBFTEVWRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMSA3MEI5Ozs7O047Ozs7OworMzM2NDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRXRUxWRTtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMyIDcwQjk7Ozs7Tjs7Ozs7CiszMzY1O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVEhJUlRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMyA3MEI5Ozs7O047Ozs7OworMzM2NjtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEZPVVJURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzQgNzBCOTs7OztOOzs7OzsKKzMzNjc7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBGSUZURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzUgNzBCOTs7OztOOzs7OzsKKzMzNjg7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBTSVhURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzYgNzBCOTs7OztOOzs7OzsKKzMzNjk7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBTRVZFTlRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzNyA3MEI5Ozs7O047Ozs7OworMzM2QTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIEVJR0hURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzggNzBCOTs7OztOOzs7OzsKKzMzNkI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBOSU5FVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM5IDcwQjk7Ozs7Tjs7Ozs7CiszMzZDO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIEhPVVIgVFdFTlRZO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzAgNzBCOTs7OztOOzs7OzsKKzMzNkQ7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV0VOVFktT05FO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzEgNzBCOTs7OztOOzs7OzsKKzMzNkU7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV0VOVFktVFdPO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzIgNzBCOTs7OztOOzs7OzsKKzMzNkY7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgSE9VUiBUV0VOVFktVEhSRUU7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzMyA3MEI5Ozs7O047Ozs7OworMzM3MDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBIT1VSIFRXRU5UWS1GT1VSO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzQgNzBCOTs7OztOOzs7OzsKKzMzNzE7U1FVQVJFIEhQQTtTbzswO0w7PHNxdWFyZT4gMDA2OCAwMDUwIDAwNjE7Ozs7Tjs7Ozs7CiszMzcyO1NRVUFSRSBEQTtTbzswO0w7PHNxdWFyZT4gMDA2NCAwMDYxOzs7O047Ozs7OworMzM3MztTUVVBUkUgQVU7U287MDtMOzxzcXVhcmU+IDAwNDEgMDA1NTs7OztOOzs7OzsKKzMzNzQ7U1FVQVJFIEJBUjtTbzswO0w7PHNxdWFyZT4gMDA2MiAwMDYxIDAwNzI7Ozs7Tjs7Ozs7CiszMzc1O1NRVUFSRSBPVjtTbzswO0w7PHNxdWFyZT4gMDA2RiAwMDU2Ozs7O047Ozs7OworMzM3NjtTUVVBUkUgUEM7U287MDtMOzxzcXVhcmU+IDAwNzAgMDA2Mzs7OztOOzs7OzsKKzMzN0I7U1FVQVJFIEVSQSBOQU1FIEhFSVNFSTtTbzswO0w7PHNxdWFyZT4gNUU3MyA2MjEwOzs7O047U1FVQVJFRCBUV08gSURFT0dSQVBIUyBFUkEgTkFNRSBIRUlTRUk7Ozs7CiszMzdDO1NRVUFSRSBFUkEgTkFNRSBTWU9VV0E7U287MDtMOzxzcXVhcmU+IDY2MkQgNTQ4Qzs7OztOO1NRVUFSRUQgVFdPIElERU9HUkFQSFMgRVJBIE5BTUUgU1lPVVdBOzs7OworMzM3RDtTUVVBUkUgRVJBIE5BTUUgVEFJU1lPVTtTbzswO0w7PHNxdWFyZT4gNTkyNyA2QjYzOzs7O047U1FVQVJFRCBUV08gSURFT0dSQVBIUyBFUkEgTkFNRSBUQUlTWU9VOzs7OworMzM3RTtTUVVBUkUgRVJBIE5BTUUgTUVJWkk7U287MDtMOzxzcXVhcmU+IDY2MEUgNkNCQjs7OztOO1NRVUFSRUQgVFdPIElERU9HUkFQSFMgRVJBIE5BTUUgTUVJWkk7Ozs7CiszMzdGO1NRVUFSRSBDT1JQT1JBVElPTjtTbzswO0w7PHNxdWFyZT4gNjgyQSA1RjBGIDRGMUEgNzkzRTs7OztOO1NRVUFSRUQgRk9VUiBJREVPR1JBUEhTIENPUlBPUkFUSU9OOzs7OworMzM4MDtTUVVBUkUgUEEgQU1QUztTbzswO0w7PHNxdWFyZT4gMDA3MCAwMDQxOzs7O047U1FVQVJFRCBQQSBBTVBTOzs7OworMzM4MTtTUVVBUkUgTkE7U287MDtMOzxzcXVhcmU+IDAwNkUgMDA0MTs7OztOO1NRVUFSRUQgTkE7Ozs7CiszMzgyO1NRVUFSRSBNVSBBO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNDE7Ozs7TjtTUVVBUkVEIE1VIEE7Ozs7CiszMzgzO1NRVUFSRSBNQTtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDQxOzs7O047U1FVQVJFRCBNQTs7OzsKKzMzODQ7U1FVQVJFIEtBO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNDE7Ozs7TjtTUVVBUkVEIEtBOzs7OworMzM4NTtTUVVBUkUgS0I7U287MDtMOzxzcXVhcmU+IDAwNEIgMDA0Mjs7OztOO1NRVUFSRUQgS0I7Ozs7CiszMzg2O1NRVUFSRSBNQjtTbzswO0w7PHNxdWFyZT4gMDA0RCAwMDQyOzs7O047U1FVQVJFRCBNQjs7OzsKKzMzODc7U1FVQVJFIEdCO1NvOzA7TDs8c3F1YXJlPiAwMDQ3IDAwNDI7Ozs7TjtTUVVBUkVEIEdCOzs7OworMzM4ODtTUVVBUkUgQ0FMO1NvOzA7TDs8c3F1YXJlPiAwMDYzIDAwNjEgMDA2Qzs7OztOO1NRVUFSRUQgQ0FMOzs7OworMzM4OTtTUVVBUkUgS0NBTDtTbzswO0w7PHNxdWFyZT4gMDA2QiAwMDYzIDAwNjEgMDA2Qzs7OztOO1NRVUFSRUQgS0NBTDs7OzsKKzMzOEE7U1FVQVJFIFBGO1NvOzA7TDs8c3F1YXJlPiAwMDcwIDAwNDY7Ozs7TjtTUVVBUkVEIFBGOzs7OworMzM4QjtTUVVBUkUgTkY7U287MDtMOzxzcXVhcmU+IDAwNkUgMDA0Njs7OztOO1NRVUFSRUQgTkY7Ozs7CiszMzhDO1NRVUFSRSBNVSBGO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNDY7Ozs7TjtTUVVBUkVEIE1VIEY7Ozs7CiszMzhEO1NRVUFSRSBNVSBHO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNjc7Ozs7TjtTUVVBUkVEIE1VIEc7Ozs7CiszMzhFO1NRVUFSRSBNRztTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDY3Ozs7O047U1FVQVJFRCBNRzs7OzsKKzMzOEY7U1FVQVJFIEtHO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNjc7Ozs7TjtTUVVBUkVEIEtHOzs7OworMzM5MDtTUVVBUkUgSFo7U287MDtMOzxzcXVhcmU+IDAwNDggMDA3QTs7OztOO1NRVUFSRUQgSFo7Ozs7CiszMzkxO1NRVUFSRSBLSFo7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA0OCAwMDdBOzs7O047U1FVQVJFRCBLSFo7Ozs7CiszMzkyO1NRVUFSRSBNSFo7U287MDtMOzxzcXVhcmU+IDAwNEQgMDA0OCAwMDdBOzs7O047U1FVQVJFRCBNSFo7Ozs7CiszMzkzO1NRVUFSRSBHSFo7U287MDtMOzxzcXVhcmU+IDAwNDcgMDA0OCAwMDdBOzs7O047U1FVQVJFRCBHSFo7Ozs7CiszMzk0O1NRVUFSRSBUSFo7U287MDtMOzxzcXVhcmU+IDAwNTQgMDA0OCAwMDdBOzs7O047U1FVQVJFRCBUSFo7Ozs7CiszMzk1O1NRVUFSRSBNVSBMO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDIxMTM7Ozs7TjtTUVVBUkVEIE1VIEw7Ozs7CiszMzk2O1NRVUFSRSBNTDtTbzswO0w7PHNxdWFyZT4gMDA2RCAyMTEzOzs7O047U1FVQVJFRCBNTDs7OzsKKzMzOTc7U1FVQVJFIERMO1NvOzA7TDs8c3F1YXJlPiAwMDY0IDIxMTM7Ozs7TjtTUVVBUkVEIERMOzs7OworMzM5ODtTUVVBUkUgS0w7U287MDtMOzxzcXVhcmU+IDAwNkIgMjExMzs7OztOO1NRVUFSRUQgS0w7Ozs7CiszMzk5O1NRVUFSRSBGTTtTbzswO0w7PHNxdWFyZT4gMDA2NiAwMDZEOzs7O047U1FVQVJFRCBGTTs7OzsKKzMzOUE7U1FVQVJFIE5NO1NvOzA7TDs8c3F1YXJlPiAwMDZFIDAwNkQ7Ozs7TjtTUVVBUkVEIE5NOzs7OworMzM5QjtTUVVBUkUgTVUgTTtTbzswO0w7PHNxdWFyZT4gMDNCQyAwMDZEOzs7O047U1FVQVJFRCBNVSBNOzs7OworMzM5QztTUVVBUkUgTU07U287MDtMOzxzcXVhcmU+IDAwNkQgMDA2RDs7OztOO1NRVUFSRUQgTU07Ozs7CiszMzlEO1NRVUFSRSBDTTtTbzswO0w7PHNxdWFyZT4gMDA2MyAwMDZEOzs7O047U1FVQVJFRCBDTTs7OzsKKzMzOUU7U1FVQVJFIEtNO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNkQ7Ozs7TjtTUVVBUkVEIEtNOzs7OworMzM5RjtTUVVBUkUgTU0gU1FVQVJFRDtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDZEIDAwQjI7Ozs7TjtTUVVBUkVEIE1NIFNRVUFSRUQ7Ozs7CiszM0EwO1NRVUFSRSBDTSBTUVVBUkVEO1NvOzA7TDs8c3F1YXJlPiAwMDYzIDAwNkQgMDBCMjs7OztOO1NRVUFSRUQgQ00gU1FVQVJFRDs7OzsKKzMzQTE7U1FVQVJFIE0gU1FVQVJFRDtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMEIyOzs7O047U1FVQVJFRCBNIFNRVUFSRUQ7Ozs7CiszM0EyO1NRVUFSRSBLTSBTUVVBUkVEO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNkQgMDBCMjs7OztOO1NRVUFSRUQgS00gU1FVQVJFRDs7OzsKKzMzQTM7U1FVQVJFIE1NIENVQkVEO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDAwNkQgMDBCMzs7OztOO1NRVUFSRUQgTU0gQ1VCRUQ7Ozs7CiszM0E0O1NRVUFSRSBDTSBDVUJFRDtTbzswO0w7PHNxdWFyZT4gMDA2MyAwMDZEIDAwQjM7Ozs7TjtTUVVBUkVEIENNIENVQkVEOzs7OworMzNBNTtTUVVBUkUgTSBDVUJFRDtTbzswO0w7PHNxdWFyZT4gMDA2RCAwMEIzOzs7O047U1FVQVJFRCBNIENVQkVEOzs7OworMzNBNjtTUVVBUkUgS00gQ1VCRUQ7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA2RCAwMEIzOzs7O047U1FVQVJFRCBLTSBDVUJFRDs7OzsKKzMzQTc7U1FVQVJFIE0gT1ZFUiBTO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDIyMTUgMDA3Mzs7OztOO1NRVUFSRUQgTSBPVkVSIFM7Ozs7CiszM0E4O1NRVUFSRSBNIE9WRVIgUyBTUVVBUkVEO1NvOzA7TDs8c3F1YXJlPiAwMDZEIDIyMTUgMDA3MyAwMEIyOzs7O047U1FVQVJFRCBNIE9WRVIgUyBTUVVBUkVEOzs7OworMzNBOTtTUVVBUkUgUEE7U287MDtMOzxzcXVhcmU+IDAwNTAgMDA2MTs7OztOO1NRVUFSRUQgUEE7Ozs7CiszM0FBO1NRVUFSRSBLUEE7U287MDtMOzxzcXVhcmU+IDAwNkIgMDA1MCAwMDYxOzs7O047U1FVQVJFRCBLUEE7Ozs7CiszM0FCO1NRVUFSRSBNUEE7U287MDtMOzxzcXVhcmU+IDAwNEQgMDA1MCAwMDYxOzs7O047U1FVQVJFRCBNUEE7Ozs7CiszM0FDO1NRVUFSRSBHUEE7U287MDtMOzxzcXVhcmU+IDAwNDcgMDA1MCAwMDYxOzs7O047U1FVQVJFRCBHUEE7Ozs7CiszM0FEO1NRVUFSRSBSQUQ7U287MDtMOzxzcXVhcmU+IDAwNzIgMDA2MSAwMDY0Ozs7O047U1FVQVJFRCBSQUQ7Ozs7CiszM0FFO1NRVUFSRSBSQUQgT1ZFUiBTO1NvOzA7TDs8c3F1YXJlPiAwMDcyIDAwNjEgMDA2NCAyMjE1IDAwNzM7Ozs7TjtTUVVBUkVEIFJBRCBPVkVSIFM7Ozs7CiszM0FGO1NRVUFSRSBSQUQgT1ZFUiBTIFNRVUFSRUQ7U287MDtMOzxzcXVhcmU+IDAwNzIgMDA2MSAwMDY0IDIyMTUgMDA3MyAwMEIyOzs7O047U1FVQVJFRCBSQUQgT1ZFUiBTIFNRVUFSRUQ7Ozs7CiszM0IwO1NRVUFSRSBQUztTbzswO0w7PHNxdWFyZT4gMDA3MCAwMDczOzs7O047U1FVQVJFRCBQUzs7OzsKKzMzQjE7U1FVQVJFIE5TO1NvOzA7TDs8c3F1YXJlPiAwMDZFIDAwNzM7Ozs7TjtTUVVBUkVEIE5TOzs7OworMzNCMjtTUVVBUkUgTVUgUztTbzswO0w7PHNxdWFyZT4gMDNCQyAwMDczOzs7O047U1FVQVJFRCBNVSBTOzs7OworMzNCMztTUVVBUkUgTVM7U287MDtMOzxzcXVhcmU+IDAwNkQgMDA3Mzs7OztOO1NRVUFSRUQgTVM7Ozs7CiszM0I0O1NRVUFSRSBQVjtTbzswO0w7PHNxdWFyZT4gMDA3MCAwMDU2Ozs7O047U1FVQVJFRCBQVjs7OzsKKzMzQjU7U1FVQVJFIE5WO1NvOzA7TDs8c3F1YXJlPiAwMDZFIDAwNTY7Ozs7TjtTUVVBUkVEIE5WOzs7OworMzNCNjtTUVVBUkUgTVUgVjtTbzswO0w7PHNxdWFyZT4gMDNCQyAwMDU2Ozs7O047U1FVQVJFRCBNVSBWOzs7OworMzNCNztTUVVBUkUgTVY7U287MDtMOzxzcXVhcmU+IDAwNkQgMDA1Njs7OztOO1NRVUFSRUQgTVY7Ozs7CiszM0I4O1NRVUFSRSBLVjtTbzswO0w7PHNxdWFyZT4gMDA2QiAwMDU2Ozs7O047U1FVQVJFRCBLVjs7OzsKKzMzQjk7U1FVQVJFIE1WIE1FR0E7U287MDtMOzxzcXVhcmU+IDAwNEQgMDA1Njs7OztOO1NRVUFSRUQgTVYgTUVHQTs7OzsKKzMzQkE7U1FVQVJFIFBXO1NvOzA7TDs8c3F1YXJlPiAwMDcwIDAwNTc7Ozs7TjtTUVVBUkVEIFBXOzs7OworMzNCQjtTUVVBUkUgTlc7U287MDtMOzxzcXVhcmU+IDAwNkUgMDA1Nzs7OztOO1NRVUFSRUQgTlc7Ozs7CiszM0JDO1NRVUFSRSBNVSBXO1NvOzA7TDs8c3F1YXJlPiAwM0JDIDAwNTc7Ozs7TjtTUVVBUkVEIE1VIFc7Ozs7CiszM0JEO1NRVUFSRSBNVztTbzswO0w7PHNxdWFyZT4gMDA2RCAwMDU3Ozs7O047U1FVQVJFRCBNVzs7OzsKKzMzQkU7U1FVQVJFIEtXO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNTc7Ozs7TjtTUVVBUkVEIEtXOzs7OworMzNCRjtTUVVBUkUgTVcgTUVHQTtTbzswO0w7PHNxdWFyZT4gMDA0RCAwMDU3Ozs7O047U1FVQVJFRCBNVyBNRUdBOzs7OworMzNDMDtTUVVBUkUgSyBPSE07U287MDtMOzxzcXVhcmU+IDAwNkIgMDNBOTs7OztOO1NRVUFSRUQgSyBPSE07Ozs7CiszM0MxO1NRVUFSRSBNIE9ITTtTbzswO0w7PHNxdWFyZT4gMDA0RCAwM0E5Ozs7O047U1FVQVJFRCBNIE9ITTs7OzsKKzMzQzI7U1FVQVJFIEFNO1NvOzA7TDs8c3F1YXJlPiAwMDYxIDAwMkUgMDA2RCAwMDJFOzs7O047U1FVQVJFRCBBTTs7OzsKKzMzQzM7U1FVQVJFIEJRO1NvOzA7TDs8c3F1YXJlPiAwMDQyIDAwNzE7Ozs7TjtTUVVBUkVEIEJROzs7OworMzNDNDtTUVVBUkUgQ0M7U287MDtMOzxzcXVhcmU+IDAwNjMgMDA2Mzs7OztOO1NRVUFSRUQgQ0M7Ozs7CiszM0M1O1NRVUFSRSBDRDtTbzswO0w7PHNxdWFyZT4gMDA2MyAwMDY0Ozs7O047U1FVQVJFRCBDRDs7OzsKKzMzQzY7U1FVQVJFIEMgT1ZFUiBLRztTbzswO0w7PHNxdWFyZT4gMDA0MyAyMjE1IDAwNkIgMDA2Nzs7OztOO1NRVUFSRUQgQyBPVkVSIEtHOzs7OworMzNDNztTUVVBUkUgQ087U287MDtMOzxzcXVhcmU+IDAwNDMgMDA2RiAwMDJFOzs7O047U1FVQVJFRCBDTzs7OzsKKzMzQzg7U1FVQVJFIERCO1NvOzA7TDs8c3F1YXJlPiAwMDY0IDAwNDI7Ozs7TjtTUVVBUkVEIERCOzs7OworMzNDOTtTUVVBUkUgR1k7U287MDtMOzxzcXVhcmU+IDAwNDcgMDA3OTs7OztOO1NRVUFSRUQgR1k7Ozs7CiszM0NBO1NRVUFSRSBIQTtTbzswO0w7PHNxdWFyZT4gMDA2OCAwMDYxOzs7O047U1FVQVJFRCBIQTs7OzsKKzMzQ0I7U1FVQVJFIEhQO1NvOzA7TDs8c3F1YXJlPiAwMDQ4IDAwNTA7Ozs7TjtTUVVBUkVEIEhQOzs7OworMzNDQztTUVVBUkUgSU47U287MDtMOzxzcXVhcmU+IDAwNjkgMDA2RTs7OztOO1NRVUFSRUQgSU47Ozs7CiszM0NEO1NRVUFSRSBLSztTbzswO0w7PHNxdWFyZT4gMDA0QiAwMDRCOzs7O047U1FVQVJFRCBLSzs7OzsKKzMzQ0U7U1FVQVJFIEtNIENBUElUQUw7U287MDtMOzxzcXVhcmU+IDAwNEIgMDA0RDs7OztOO1NRVUFSRUQgS00gQ0FQSVRBTDs7OzsKKzMzQ0Y7U1FVQVJFIEtUO1NvOzA7TDs8c3F1YXJlPiAwMDZCIDAwNzQ7Ozs7TjtTUVVBUkVEIEtUOzs7OworMzNEMDtTUVVBUkUgTE07U287MDtMOzxzcXVhcmU+IDAwNkMgMDA2RDs7OztOO1NRVUFSRUQgTE07Ozs7CiszM0QxO1NRVUFSRSBMTjtTbzswO0w7PHNxdWFyZT4gMDA2QyAwMDZFOzs7O047U1FVQVJFRCBMTjs7OzsKKzMzRDI7U1FVQVJFIExPRztTbzswO0w7PHNxdWFyZT4gMDA2QyAwMDZGIDAwNjc7Ozs7TjtTUVVBUkVEIExPRzs7OzsKKzMzRDM7U1FVQVJFIExYO1NvOzA7TDs8c3F1YXJlPiAwMDZDIDAwNzg7Ozs7TjtTUVVBUkVEIExYOzs7OworMzNENDtTUVVBUkUgTUIgU01BTEw7U287MDtMOzxzcXVhcmU+IDAwNkQgMDA2Mjs7OztOO1NRVUFSRUQgTUIgU01BTEw7Ozs7CiszM0Q1O1NRVUFSRSBNSUw7U287MDtMOzxzcXVhcmU+IDAwNkQgMDA2OSAwMDZDOzs7O047U1FVQVJFRCBNSUw7Ozs7CiszM0Q2O1NRVUFSRSBNT0w7U287MDtMOzxzcXVhcmU+IDAwNkQgMDA2RiAwMDZDOzs7O047U1FVQVJFRCBNT0w7Ozs7CiszM0Q3O1NRVUFSRSBQSDtTbzswO0w7PHNxdWFyZT4gMDA1MCAwMDQ4Ozs7O047U1FVQVJFRCBQSDs7OzsKKzMzRDg7U1FVQVJFIFBNO1NvOzA7TDs8c3F1YXJlPiAwMDcwIDAwMkUgMDA2RCAwMDJFOzs7O047U1FVQVJFRCBQTTs7OzsKKzMzRDk7U1FVQVJFIFBQTTtTbzswO0w7PHNxdWFyZT4gMDA1MCAwMDUwIDAwNEQ7Ozs7TjtTUVVBUkVEIFBQTTs7OzsKKzMzREE7U1FVQVJFIFBSO1NvOzA7TDs8c3F1YXJlPiAwMDUwIDAwNTI7Ozs7TjtTUVVBUkVEIFBSOzs7OworMzNEQjtTUVVBUkUgU1I7U287MDtMOzxzcXVhcmU+IDAwNzMgMDA3Mjs7OztOO1NRVUFSRUQgU1I7Ozs7CiszM0RDO1NRVUFSRSBTVjtTbzswO0w7PHNxdWFyZT4gMDA1MyAwMDc2Ozs7O047U1FVQVJFRCBTVjs7OzsKKzMzREQ7U1FVQVJFIFdCO1NvOzA7TDs8c3F1YXJlPiAwMDU3IDAwNjI7Ozs7TjtTUVVBUkVEIFdCOzs7OworMzNFMDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgT05FO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDY1RTU7Ozs7Tjs7Ozs7CiszM0UxO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV087U287MDtMOzxjb21wYXQ+IDAwMzIgNjVFNTs7OztOOzs7OzsKKzMzRTI7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRIUkVFO1NvOzA7TDs8Y29tcGF0PiAwMDMzIDY1RTU7Ozs7Tjs7Ozs7CiszM0UzO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBGT1VSO1NvOzA7TDs8Y29tcGF0PiAwMDM0IDY1RTU7Ozs7Tjs7Ozs7CiszM0U0O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBGSVZFO1NvOzA7TDs8Y29tcGF0PiAwMDM1IDY1RTU7Ozs7Tjs7Ozs7CiszM0U1O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBTSVg7U287MDtMOzxjb21wYXQ+IDAwMzYgNjVFNTs7OztOOzs7OzsKKzMzRTY7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFNFVkVOO1NvOzA7TDs8Y29tcGF0PiAwMDM3IDY1RTU7Ozs7Tjs7Ozs7CiszM0U3O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBFSUdIVDtTbzswO0w7PGNvbXBhdD4gMDAzOCA2NUU1Ozs7O047Ozs7OworMzNFODtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgTklORTtTbzswO0w7PGNvbXBhdD4gMDAzOSA2NUU1Ozs7O047Ozs7OworMzNFOTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVEVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzAgNjVFNTs7OztOOzs7OzsKKzMzRUE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIEVMRVZFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDMxIDY1RTU7Ozs7Tjs7Ozs7CiszM0VCO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VMVkU7U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMiA2NUU1Ozs7O047Ozs7OworMzNFQztJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVEhJUlRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzMyA2NUU1Ozs7O047Ozs7OworMzNFRDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgRk9VUlRFRU47U287MDtMOzxjb21wYXQ+IDAwMzEgMDAzNCA2NUU1Ozs7O047Ozs7OworMzNFRTtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgRklGVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM1IDY1RTU7Ozs7Tjs7Ozs7CiszM0VGO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBTSVhURUVOO1NvOzA7TDs8Y29tcGF0PiAwMDMxIDAwMzYgNjVFNTs7OztOOzs7OzsKKzMzRjA7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFNFVkVOVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM3IDY1RTU7Ozs7Tjs7Ozs7CiszM0YxO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBFSUdIVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM4IDY1RTU7Ozs7Tjs7Ozs7CiszM0YyO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBOSU5FVEVFTjtTbzswO0w7PGNvbXBhdD4gMDAzMSAwMDM5IDY1RTU7Ozs7Tjs7Ozs7CiszM0YzO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFk7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzMCA2NUU1Ozs7O047Ozs7OworMzNGNDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVFdFTlRZLU9ORTtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDMxIDY1RTU7Ozs7Tjs7Ozs7CiszM0Y1O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktVFdPO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzIgNjVFNTs7OztOOzs7OzsKKzMzRjY7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1USFJFRTtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDMzIDY1RTU7Ozs7Tjs7Ozs7CiszM0Y3O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktRk9VUjtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDM0IDY1RTU7Ozs7Tjs7Ozs7CiszM0Y4O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktRklWRTtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDM1IDY1RTU7Ozs7Tjs7Ozs7CiszM0Y5O0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktU0lYO1NvOzA7TDs8Y29tcGF0PiAwMDMyIDAwMzYgNjVFNTs7OztOOzs7OzsKKzMzRkE7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRXRU5UWS1TRVZFTjtTbzswO0w7PGNvbXBhdD4gMDAzMiAwMDM3IDY1RTU7Ozs7Tjs7Ozs7CiszM0ZCO0lERU9HUkFQSElDIFRFTEVHUkFQSCBTWU1CT0wgRk9SIERBWSBUV0VOVFktRUlHSFQ7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzOCA2NUU1Ozs7O047Ozs7OworMzNGQztJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVFdFTlRZLU5JTkU7U287MDtMOzxjb21wYXQ+IDAwMzIgMDAzOSA2NUU1Ozs7O047Ozs7OworMzNGRDtJREVPR1JBUEhJQyBURUxFR1JBUEggU1lNQk9MIEZPUiBEQVkgVEhJUlRZO1NvOzA7TDs8Y29tcGF0PiAwMDMzIDAwMzAgNjVFNTs7OztOOzs7OzsKKzMzRkU7SURFT0dSQVBISUMgVEVMRUdSQVBIIFNZTUJPTCBGT1IgREFZIFRISVJUWS1PTkU7U287MDtMOzxjb21wYXQ+IDAwMzMgMDAzMSA2NUU1Ozs7O047Ozs7OworMzQwMDs8Q0pLIElkZW9ncmFwaCBFeHRlbnNpb24gQSwgRmlyc3Q+O0xvOzA7TDs7Ozs7Tjs7Ozs7Cis0REI1OzxDSksgSWRlb2dyYXBoIEV4dGVuc2lvbiBBLCBMYXN0PjtMbzswO0w7Ozs7O047Ozs7OworNEUwMDs8Q0pLIElkZW9ncmFwaCwgRmlyc3Q+O0xvOzA7TDs7Ozs7Tjs7Ozs7Cis5RkE1OzxDSksgSWRlb2dyYXBoLCBMYXN0PjtMbzswO0w7Ozs7O047Ozs7OworQTAwMDtZSSBTWUxMQUJMRSBJVDtMbzswO0w7Ozs7O047Ozs7OworQTAwMTtZSSBTWUxMQUJMRSBJWDtMbzswO0w7Ozs7O047Ozs7OworQTAwMjtZSSBTWUxMQUJMRSBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDAzO1lJIFNZTExBQkxFIElQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDA0O1lJIFNZTExBQkxFIElFVDtMbzswO0w7Ozs7O047Ozs7OworQTAwNTtZSSBTWUxMQUJMRSBJRVg7TG87MDtMOzs7OztOOzs7OzsKK0EwMDY7WUkgU1lMTEFCTEUgSUU7TG87MDtMOzs7OztOOzs7OzsKK0EwMDc7WUkgU1lMTEFCTEUgSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDA4O1lJIFNZTExBQkxFIEFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDA5O1lJIFNZTExBQkxFIEFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDBBO1lJIFNZTExBQkxFIEE7TG87MDtMOzs7OztOOzs7OzsKK0EwMEI7WUkgU1lMTEFCTEUgQVA7TG87MDtMOzs7OztOOzs7OzsKK0EwMEM7WUkgU1lMTEFCTEUgVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDBEO1lJIFNZTExBQkxFIFVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDBFO1lJIFNZTExBQkxFIFVPUDtMbzswO0w7Ozs7O047Ozs7OworQTAwRjtZSSBTWUxMQUJMRSBPVDtMbzswO0w7Ozs7O047Ozs7OworQTAxMDtZSSBTWUxMQUJMRSBPWDtMbzswO0w7Ozs7O047Ozs7OworQTAxMTtZSSBTWUxMQUJMRSBPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDEyO1lJIFNZTExBQkxFIE9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDEzO1lJIFNZTExBQkxFIEVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDE0O1lJIFNZTExBQkxFIEU7TG87MDtMOzs7OztOOzs7OzsKK0EwMTU7WUkgU1lMTEFCTEUgV1U7TG87MDtMOzs7OztOOzs7OzsKK0EwMTY7WUkgU1lMTEFCTEUgQklUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDE3O1lJIFNZTExBQkxFIEJJWDtMbzswO0w7Ozs7O047Ozs7OworQTAxODtZSSBTWUxMQUJMRSBCSTtMbzswO0w7Ozs7O047Ozs7OworQTAxOTtZSSBTWUxMQUJMRSBCSVA7TG87MDtMOzs7OztOOzs7OzsKK0EwMUE7WUkgU1lMTEFCTEUgQklFVDtMbzswO0w7Ozs7O047Ozs7OworQTAxQjtZSSBTWUxMQUJMRSBCSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDFDO1lJIFNZTExBQkxFIEJJRTtMbzswO0w7Ozs7O047Ozs7OworQTAxRDtZSSBTWUxMQUJMRSBCSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDFFO1lJIFNZTExBQkxFIEJBVDtMbzswO0w7Ozs7O047Ozs7OworQTAxRjtZSSBTWUxMQUJMRSBCQVg7TG87MDtMOzs7OztOOzs7OzsKK0EwMjA7WUkgU1lMTEFCTEUgQkE7TG87MDtMOzs7OztOOzs7OzsKK0EwMjE7WUkgU1lMTEFCTEUgQkFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDIyO1lJIFNZTExBQkxFIEJVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EwMjM7WUkgU1lMTEFCTEUgQlVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDI0O1lJIFNZTExBQkxFIEJVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EwMjU7WUkgU1lMTEFCTEUgQk9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDI2O1lJIFNZTExBQkxFIEJPWDtMbzswO0w7Ozs7O047Ozs7OworQTAyNztZSSBTWUxMQUJMRSBCTztMbzswO0w7Ozs7O047Ozs7OworQTAyODtZSSBTWUxMQUJMRSBCT1A7TG87MDtMOzs7OztOOzs7OzsKK0EwMjk7WUkgU1lMTEFCTEUgQkVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDJBO1lJIFNZTExBQkxFIEJFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDJCO1lJIFNZTExBQkxFIEJFUDtMbzswO0w7Ozs7O047Ozs7OworQTAyQztZSSBTWUxMQUJMRSBCVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwMkQ7WUkgU1lMTEFCTEUgQlVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDJFO1lJIFNZTExBQkxFIEJVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDJGO1lJIFNZTExBQkxFIEJVUDtMbzswO0w7Ozs7O047Ozs7OworQTAzMDtZSSBTWUxMQUJMRSBCVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDMxO1lJIFNZTExBQkxFIEJVUjtMbzswO0w7Ozs7O047Ozs7OworQTAzMjtZSSBTWUxMQUJMRSBCWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwMzM7WUkgU1lMTEFCTEUgQllYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDM0O1lJIFNZTExBQkxFIEJZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDM1O1lJIFNZTExBQkxFIEJZUDtMbzswO0w7Ozs7O047Ozs7OworQTAzNjtZSSBTWUxMQUJMRSBCWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDM3O1lJIFNZTExBQkxFIEJZUjtMbzswO0w7Ozs7O047Ozs7OworQTAzODtZSSBTWUxMQUJMRSBQSVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwMzk7WUkgU1lMTEFCTEUgUElYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDNBO1lJIFNZTExBQkxFIFBJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDNCO1lJIFNZTExBQkxFIFBJUDtMbzswO0w7Ozs7O047Ozs7OworQTAzQztZSSBTWUxMQUJMRSBQSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDNEO1lJIFNZTExBQkxFIFBJRTtMbzswO0w7Ozs7O047Ozs7OworQTAzRTtZSSBTWUxMQUJMRSBQSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDNGO1lJIFNZTExBQkxFIFBBVDtMbzswO0w7Ozs7O047Ozs7OworQTA0MDtZSSBTWUxMQUJMRSBQQVg7TG87MDtMOzs7OztOOzs7OzsKK0EwNDE7WUkgU1lMTEFCTEUgUEE7TG87MDtMOzs7OztOOzs7OzsKK0EwNDI7WUkgU1lMTEFCTEUgUEFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDQzO1lJIFNZTExBQkxFIFBVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EwNDQ7WUkgU1lMTEFCTEUgUFVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDQ1O1lJIFNZTExBQkxFIFBVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EwNDY7WUkgU1lMTEFCTEUgUE9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDQ3O1lJIFNZTExBQkxFIFBPWDtMbzswO0w7Ozs7O047Ozs7OworQTA0ODtZSSBTWUxMQUJMRSBQTztMbzswO0w7Ozs7O047Ozs7OworQTA0OTtZSSBTWUxMQUJMRSBQT1A7TG87MDtMOzs7OztOOzs7OzsKK0EwNEE7WUkgU1lMTEFCTEUgUFVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDRCO1lJIFNZTExBQkxFIFBVWDtMbzswO0w7Ozs7O047Ozs7OworQTA0QztZSSBTWUxMQUJMRSBQVTtMbzswO0w7Ozs7O047Ozs7OworQTA0RDtZSSBTWUxMQUJMRSBQVVA7TG87MDtMOzs7OztOOzs7OzsKK0EwNEU7WUkgU1lMTEFCTEUgUFVSWDtMbzswO0w7Ozs7O047Ozs7OworQTA0RjtZSSBTWUxMQUJMRSBQVVI7TG87MDtMOzs7OztOOzs7OzsKK0EwNTA7WUkgU1lMTEFCTEUgUFlUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDUxO1lJIFNZTExBQkxFIFBZWDtMbzswO0w7Ozs7O047Ozs7OworQTA1MjtZSSBTWUxMQUJMRSBQWTtMbzswO0w7Ozs7O047Ozs7OworQTA1MztZSSBTWUxMQUJMRSBQWVA7TG87MDtMOzs7OztOOzs7OzsKK0EwNTQ7WUkgU1lMTEFCTEUgUFlSWDtMbzswO0w7Ozs7O047Ozs7OworQTA1NTtZSSBTWUxMQUJMRSBQWVI7TG87MDtMOzs7OztOOzs7OzsKK0EwNTY7WUkgU1lMTEFCTEUgQkJJVDtMbzswO0w7Ozs7O047Ozs7OworQTA1NztZSSBTWUxMQUJMRSBCQklYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDU4O1lJIFNZTExBQkxFIEJCSTtMbzswO0w7Ozs7O047Ozs7OworQTA1OTtZSSBTWUxMQUJMRSBCQklQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDVBO1lJIFNZTExBQkxFIEJCSUVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDVCO1lJIFNZTExBQkxFIEJCSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDVDO1lJIFNZTExBQkxFIEJCSUU7TG87MDtMOzs7OztOOzs7OzsKK0EwNUQ7WUkgU1lMTEFCTEUgQkJJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EwNUU7WUkgU1lMTEFCTEUgQkJBVDtMbzswO0w7Ozs7O047Ozs7OworQTA1RjtZSSBTWUxMQUJMRSBCQkFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDYwO1lJIFNZTExBQkxFIEJCQTtMbzswO0w7Ozs7O047Ozs7OworQTA2MTtZSSBTWUxMQUJMRSBCQkFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDYyO1lJIFNZTExBQkxFIEJCVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDYzO1lJIFNZTExBQkxFIEJCVU87TG87MDtMOzs7OztOOzs7OzsKK0EwNjQ7WUkgU1lMTEFCTEUgQkJVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EwNjU7WUkgU1lMTEFCTEUgQkJPVDtMbzswO0w7Ozs7O047Ozs7OworQTA2NjtZSSBTWUxMQUJMRSBCQk9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDY3O1lJIFNZTExBQkxFIEJCTztMbzswO0w7Ozs7O047Ozs7OworQTA2ODtZSSBTWUxMQUJMRSBCQk9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDY5O1lJIFNZTExBQkxFIEJCRVg7TG87MDtMOzs7OztOOzs7OzsKK0EwNkE7WUkgU1lMTEFCTEUgQkJFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDZCO1lJIFNZTExBQkxFIEJCRVA7TG87MDtMOzs7OztOOzs7OzsKK0EwNkM7WUkgU1lMTEFCTEUgQkJVVDtMbzswO0w7Ozs7O047Ozs7OworQTA2RDtZSSBTWUxMQUJMRSBCQlVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDZFO1lJIFNZTExBQkxFIEJCVTtMbzswO0w7Ozs7O047Ozs7OworQTA2RjtZSSBTWUxMQUJMRSBCQlVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDcwO1lJIFNZTExBQkxFIEJCVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDcxO1lJIFNZTExBQkxFIEJCVVI7TG87MDtMOzs7OztOOzs7OzsKK0EwNzI7WUkgU1lMTEFCTEUgQkJZVDtMbzswO0w7Ozs7O047Ozs7OworQTA3MztZSSBTWUxMQUJMRSBCQllYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDc0O1lJIFNZTExBQkxFIEJCWTtMbzswO0w7Ozs7O047Ozs7OworQTA3NTtZSSBTWUxMQUJMRSBCQllQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDc2O1lJIFNZTExBQkxFIE5CSVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwNzc7WUkgU1lMTEFCTEUgTkJJWDtMbzswO0w7Ozs7O047Ozs7OworQTA3ODtZSSBTWUxMQUJMRSBOQkk7TG87MDtMOzs7OztOOzs7OzsKK0EwNzk7WUkgU1lMTEFCTEUgTkJJUDtMbzswO0w7Ozs7O047Ozs7OworQTA3QTtZSSBTWUxMQUJMRSBOQklFWDtMbzswO0w7Ozs7O047Ozs7OworQTA3QjtZSSBTWUxMQUJMRSBOQklFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDdDO1lJIFNZTExBQkxFIE5CSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDdEO1lJIFNZTExBQkxFIE5CQVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwN0U7WUkgU1lMTEFCTEUgTkJBWDtMbzswO0w7Ozs7O047Ozs7OworQTA3RjtZSSBTWUxMQUJMRSBOQkE7TG87MDtMOzs7OztOOzs7OzsKK0EwODA7WUkgU1lMTEFCTEUgTkJBUDtMbzswO0w7Ozs7O047Ozs7OworQTA4MTtZSSBTWUxMQUJMRSBOQk9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDgyO1lJIFNZTExBQkxFIE5CT1g7TG87MDtMOzs7OztOOzs7OzsKK0EwODM7WUkgU1lMTEFCTEUgTkJPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDg0O1lJIFNZTExBQkxFIE5CT1A7TG87MDtMOzs7OztOOzs7OzsKK0EwODU7WUkgU1lMTEFCTEUgTkJVVDtMbzswO0w7Ozs7O047Ozs7OworQTA4NjtZSSBTWUxMQUJMRSBOQlVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDg3O1lJIFNZTExBQkxFIE5CVTtMbzswO0w7Ozs7O047Ozs7OworQTA4ODtZSSBTWUxMQUJMRSBOQlVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDg5O1lJIFNZTExBQkxFIE5CVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDhBO1lJIFNZTExBQkxFIE5CVVI7TG87MDtMOzs7OztOOzs7OzsKK0EwOEI7WUkgU1lMTEFCTEUgTkJZVDtMbzswO0w7Ozs7O047Ozs7OworQTA4QztZSSBTWUxMQUJMRSBOQllYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDhEO1lJIFNZTExBQkxFIE5CWTtMbzswO0w7Ozs7O047Ozs7OworQTA4RTtZSSBTWUxMQUJMRSBOQllQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDhGO1lJIFNZTExBQkxFIE5CWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDkwO1lJIFNZTExBQkxFIE5CWVI7TG87MDtMOzs7OztOOzs7OzsKK0EwOTE7WUkgU1lMTEFCTEUgSE1JVDtMbzswO0w7Ozs7O047Ozs7OworQTA5MjtZSSBTWUxMQUJMRSBITUlYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDkzO1lJIFNZTExBQkxFIEhNSTtMbzswO0w7Ozs7O047Ozs7OworQTA5NDtZSSBTWUxMQUJMRSBITUlQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDk1O1lJIFNZTExBQkxFIEhNSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDk2O1lJIFNZTExBQkxFIEhNSUU7TG87MDtMOzs7OztOOzs7OzsKK0EwOTc7WUkgU1lMTEFCTEUgSE1JRVA7TG87MDtMOzs7OztOOzs7OzsKK0EwOTg7WUkgU1lMTEFCTEUgSE1BVDtMbzswO0w7Ozs7O047Ozs7OworQTA5OTtZSSBTWUxMQUJMRSBITUFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDlBO1lJIFNZTExBQkxFIEhNQTtMbzswO0w7Ozs7O047Ozs7OworQTA5QjtZSSBTWUxMQUJMRSBITUFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDlDO1lJIFNZTExBQkxFIEhNVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMDlEO1lJIFNZTExBQkxFIEhNVU87TG87MDtMOzs7OztOOzs7OzsKK0EwOUU7WUkgU1lMTEFCTEUgSE1VT1A7TG87MDtMOzs7OztOOzs7OzsKK0EwOUY7WUkgU1lMTEFCTEUgSE1PVDtMbzswO0w7Ozs7O047Ozs7OworQTBBMDtZSSBTWUxMQUJMRSBITU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEExO1lJIFNZTExBQkxFIEhNTztMbzswO0w7Ozs7O047Ozs7OworQTBBMjtZSSBTWUxMQUJMRSBITU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEEzO1lJIFNZTExBQkxFIEhNVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwQTQ7WUkgU1lMTEFCTEUgSE1VWDtMbzswO0w7Ozs7O047Ozs7OworQTBBNTtZSSBTWUxMQUJMRSBITVU7TG87MDtMOzs7OztOOzs7OzsKK0EwQTY7WUkgU1lMTEFCTEUgSE1VUDtMbzswO0w7Ozs7O047Ozs7OworQTBBNztZSSBTWUxMQUJMRSBITVVSWDtMbzswO0w7Ozs7O047Ozs7OworQTBBODtZSSBTWUxMQUJMRSBITVVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEE5O1lJIFNZTExBQkxFIEhNWVg7TG87MDtMOzs7OztOOzs7OzsKK0EwQUE7WUkgU1lMTEFCTEUgSE1ZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEFCO1lJIFNZTExBQkxFIEhNWVA7TG87MDtMOzs7OztOOzs7OzsKK0EwQUM7WUkgU1lMTEFCTEUgSE1ZUlg7TG87MDtMOzs7OztOOzs7OzsKK0EwQUQ7WUkgU1lMTEFCTEUgSE1ZUjtMbzswO0w7Ozs7O047Ozs7OworQTBBRTtZSSBTWUxMQUJMRSBNSVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwQUY7WUkgU1lMTEFCTEUgTUlYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEIwO1lJIFNZTExBQkxFIE1JO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEIxO1lJIFNZTExBQkxFIE1JUDtMbzswO0w7Ozs7O047Ozs7OworQTBCMjtZSSBTWUxMQUJMRSBNSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEIzO1lJIFNZTExBQkxFIE1JRTtMbzswO0w7Ozs7O047Ozs7OworQTBCNDtZSSBTWUxMQUJMRSBNSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEI1O1lJIFNZTExBQkxFIE1BVDtMbzswO0w7Ozs7O047Ozs7OworQTBCNjtZSSBTWUxMQUJMRSBNQVg7TG87MDtMOzs7OztOOzs7OzsKK0EwQjc7WUkgU1lMTEFCTEUgTUE7TG87MDtMOzs7OztOOzs7OzsKK0EwQjg7WUkgU1lMTEFCTEUgTUFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEI5O1lJIFNZTExBQkxFIE1VT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EwQkE7WUkgU1lMTEFCTEUgTVVPWDtMbzswO0w7Ozs7O047Ozs7OworQTBCQjtZSSBTWUxMQUJMRSBNVU87TG87MDtMOzs7OztOOzs7OzsKK0EwQkM7WUkgU1lMTEFCTEUgTVVPUDtMbzswO0w7Ozs7O047Ozs7OworQTBCRDtZSSBTWUxMQUJMRSBNT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EwQkU7WUkgU1lMTEFCTEUgTU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEJGO1lJIFNZTExBQkxFIE1PO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEMwO1lJIFNZTExBQkxFIE1PUDtMbzswO0w7Ozs7O047Ozs7OworQTBDMTtZSSBTWUxMQUJMRSBNRVg7TG87MDtMOzs7OztOOzs7OzsKK0EwQzI7WUkgU1lMTEFCTEUgTUU7TG87MDtMOzs7OztOOzs7OzsKK0EwQzM7WUkgU1lMTEFCTEUgTVVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEM0O1lJIFNZTExBQkxFIE1VWDtMbzswO0w7Ozs7O047Ozs7OworQTBDNTtZSSBTWUxMQUJMRSBNVTtMbzswO0w7Ozs7O047Ozs7OworQTBDNjtZSSBTWUxMQUJMRSBNVVA7TG87MDtMOzs7OztOOzs7OzsKK0EwQzc7WUkgU1lMTEFCTEUgTVVSWDtMbzswO0w7Ozs7O047Ozs7OworQTBDODtZSSBTWUxMQUJMRSBNVVI7TG87MDtMOzs7OztOOzs7OzsKK0EwQzk7WUkgU1lMTEFCTEUgTVlUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMENBO1lJIFNZTExBQkxFIE1ZWDtMbzswO0w7Ozs7O047Ozs7OworQTBDQjtZSSBTWUxMQUJMRSBNWTtMbzswO0w7Ozs7O047Ozs7OworQTBDQztZSSBTWUxMQUJMRSBNWVA7TG87MDtMOzs7OztOOzs7OzsKK0EwQ0Q7WUkgU1lMTEFCTEUgRklUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMENFO1lJIFNZTExBQkxFIEZJWDtMbzswO0w7Ozs7O047Ozs7OworQTBDRjtZSSBTWUxMQUJMRSBGSTtMbzswO0w7Ozs7O047Ozs7OworQTBEMDtZSSBTWUxMQUJMRSBGSVA7TG87MDtMOzs7OztOOzs7OzsKK0EwRDE7WUkgU1lMTEFCTEUgRkFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEQyO1lJIFNZTExBQkxFIEZBWDtMbzswO0w7Ozs7O047Ozs7OworQTBEMztZSSBTWUxMQUJMRSBGQTtMbzswO0w7Ozs7O047Ozs7OworQTBENDtZSSBTWUxMQUJMRSBGQVA7TG87MDtMOzs7OztOOzs7OzsKK0EwRDU7WUkgU1lMTEFCTEUgRk9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEQ2O1lJIFNZTExBQkxFIEZPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEQ3O1lJIFNZTExBQkxFIEZPUDtMbzswO0w7Ozs7O047Ozs7OworQTBEODtZSSBTWUxMQUJMRSBGVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwRDk7WUkgU1lMTEFCTEUgRlVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMERBO1lJIFNZTExBQkxFIEZVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMERCO1lJIFNZTExBQkxFIEZVUDtMbzswO0w7Ozs7O047Ozs7OworQTBEQztZSSBTWUxMQUJMRSBGVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEREO1lJIFNZTExBQkxFIEZVUjtMbzswO0w7Ozs7O047Ozs7OworQTBERTtZSSBTWUxMQUJMRSBGWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwREY7WUkgU1lMTEFCTEUgRllYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEUwO1lJIFNZTExBQkxFIEZZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEUxO1lJIFNZTExBQkxFIEZZUDtMbzswO0w7Ozs7O047Ozs7OworQTBFMjtZSSBTWUxMQUJMRSBWSVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwRTM7WUkgU1lMTEFCTEUgVklYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEU0O1lJIFNZTExBQkxFIFZJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEU1O1lJIFNZTExBQkxFIFZJUDtMbzswO0w7Ozs7O047Ozs7OworQTBFNjtZSSBTWUxMQUJMRSBWSUVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEU3O1lJIFNZTExBQkxFIFZJRVg7TG87MDtMOzs7OztOOzs7OzsKK0EwRTg7WUkgU1lMTEFCTEUgVklFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEU5O1lJIFNZTExBQkxFIFZJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EwRUE7WUkgU1lMTEFCTEUgVkFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEVCO1lJIFNZTExBQkxFIFZBWDtMbzswO0w7Ozs7O047Ozs7OworQTBFQztZSSBTWUxMQUJMRSBWQTtMbzswO0w7Ozs7O047Ozs7OworQTBFRDtZSSBTWUxMQUJMRSBWQVA7TG87MDtMOzs7OztOOzs7OzsKK0EwRUU7WUkgU1lMTEFCTEUgVk9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEVGO1lJIFNZTExBQkxFIFZPWDtMbzswO0w7Ozs7O047Ozs7OworQTBGMDtZSSBTWUxMQUJMRSBWTztMbzswO0w7Ozs7O047Ozs7OworQTBGMTtZSSBTWUxMQUJMRSBWT1A7TG87MDtMOzs7OztOOzs7OzsKK0EwRjI7WUkgU1lMTEFCTEUgVkVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEYzO1lJIFNZTExBQkxFIFZFUDtMbzswO0w7Ozs7O047Ozs7OworQTBGNDtZSSBTWUxMQUJMRSBWVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwRjU7WUkgU1lMTEFCTEUgVlVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEY2O1lJIFNZTExBQkxFIFZVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEY3O1lJIFNZTExBQkxFIFZVUDtMbzswO0w7Ozs7O047Ozs7OworQTBGODtZSSBTWUxMQUJMRSBWVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEY5O1lJIFNZTExBQkxFIFZVUjtMbzswO0w7Ozs7O047Ozs7OworQTBGQTtZSSBTWUxMQUJMRSBWWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EwRkI7WUkgU1lMTEFCTEUgVllYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEZDO1lJIFNZTExBQkxFIFZZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEZEO1lJIFNZTExBQkxFIFZZUDtMbzswO0w7Ozs7O047Ozs7OworQTBGRTtZSSBTWUxMQUJMRSBWWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMEZGO1lJIFNZTExBQkxFIFZZUjtMbzswO0w7Ozs7O047Ozs7OworQTEwMDtZSSBTWUxMQUJMRSBESVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExMDE7WUkgU1lMTEFCTEUgRElYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTAyO1lJIFNZTExBQkxFIERJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTAzO1lJIFNZTExBQkxFIERJUDtMbzswO0w7Ozs7O047Ozs7OworQTEwNDtZSSBTWUxMQUJMRSBESUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTA1O1lJIFNZTExBQkxFIERJRTtMbzswO0w7Ozs7O047Ozs7OworQTEwNjtZSSBTWUxMQUJMRSBESUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTA3O1lJIFNZTExBQkxFIERBVDtMbzswO0w7Ozs7O047Ozs7OworQTEwODtZSSBTWUxMQUJMRSBEQVg7TG87MDtMOzs7OztOOzs7OzsKK0ExMDk7WUkgU1lMTEFCTEUgREE7TG87MDtMOzs7OztOOzs7OzsKK0ExMEE7WUkgU1lMTEFCTEUgREFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTBCO1lJIFNZTExBQkxFIERVT1g7TG87MDtMOzs7OztOOzs7OzsKK0ExMEM7WUkgU1lMTEFCTEUgRFVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTBEO1lJIFNZTExBQkxFIERPVDtMbzswO0w7Ozs7O047Ozs7OworQTEwRTtZSSBTWUxMQUJMRSBET1g7TG87MDtMOzs7OztOOzs7OzsKK0ExMEY7WUkgU1lMTEFCTEUgRE87TG87MDtMOzs7OztOOzs7OzsKK0ExMTA7WUkgU1lMTEFCTEUgRE9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTExO1lJIFNZTExBQkxFIERFWDtMbzswO0w7Ozs7O047Ozs7OworQTExMjtZSSBTWUxMQUJMRSBERTtMbzswO0w7Ozs7O047Ozs7OworQTExMztZSSBTWUxMQUJMRSBERVA7TG87MDtMOzs7OztOOzs7OzsKK0ExMTQ7WUkgU1lMTEFCTEUgRFVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTE1O1lJIFNZTExBQkxFIERVWDtMbzswO0w7Ozs7O047Ozs7OworQTExNjtZSSBTWUxMQUJMRSBEVTtMbzswO0w7Ozs7O047Ozs7OworQTExNztZSSBTWUxMQUJMRSBEVVA7TG87MDtMOzs7OztOOzs7OzsKK0ExMTg7WUkgU1lMTEFCTEUgRFVSWDtMbzswO0w7Ozs7O047Ozs7OworQTExOTtZSSBTWUxMQUJMRSBEVVI7TG87MDtMOzs7OztOOzs7OzsKK0ExMUE7WUkgU1lMTEFCTEUgVElUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTFCO1lJIFNZTExBQkxFIFRJWDtMbzswO0w7Ozs7O047Ozs7OworQTExQztZSSBTWUxMQUJMRSBUSTtMbzswO0w7Ozs7O047Ozs7OworQTExRDtZSSBTWUxMQUJMRSBUSVA7TG87MDtMOzs7OztOOzs7OzsKK0ExMUU7WUkgU1lMTEFCTEUgVElFWDtMbzswO0w7Ozs7O047Ozs7OworQTExRjtZSSBTWUxMQUJMRSBUSUU7TG87MDtMOzs7OztOOzs7OzsKK0ExMjA7WUkgU1lMTEFCTEUgVElFUDtMbzswO0w7Ozs7O047Ozs7OworQTEyMTtZSSBTWUxMQUJMRSBUQVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExMjI7WUkgU1lMTEFCTEUgVEFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTIzO1lJIFNZTExBQkxFIFRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTI0O1lJIFNZTExBQkxFIFRBUDtMbzswO0w7Ozs7O047Ozs7OworQTEyNTtZSSBTWUxMQUJMRSBUVU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTI2O1lJIFNZTExBQkxFIFRVT1g7TG87MDtMOzs7OztOOzs7OzsKK0ExMjc7WUkgU1lMTEFCTEUgVFVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTI4O1lJIFNZTExBQkxFIFRVT1A7TG87MDtMOzs7OztOOzs7OzsKK0ExMjk7WUkgU1lMTEFCTEUgVE9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTJBO1lJIFNZTExBQkxFIFRPWDtMbzswO0w7Ozs7O047Ozs7OworQTEyQjtZSSBTWUxMQUJMRSBUTztMbzswO0w7Ozs7O047Ozs7OworQTEyQztZSSBTWUxMQUJMRSBUT1A7TG87MDtMOzs7OztOOzs7OzsKK0ExMkQ7WUkgU1lMTEFCTEUgVEVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTJFO1lJIFNZTExBQkxFIFRFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTJGO1lJIFNZTExBQkxFIFRFUDtMbzswO0w7Ozs7O047Ozs7OworQTEzMDtZSSBTWUxMQUJMRSBUVVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExMzE7WUkgU1lMTEFCTEUgVFVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTMyO1lJIFNZTExBQkxFIFRVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTMzO1lJIFNZTExBQkxFIFRVUDtMbzswO0w7Ozs7O047Ozs7OworQTEzNDtZSSBTWUxMQUJMRSBUVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTM1O1lJIFNZTExBQkxFIFRVUjtMbzswO0w7Ozs7O047Ozs7OworQTEzNjtZSSBTWUxMQUJMRSBERElUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTM3O1lJIFNZTExBQkxFIERESVg7TG87MDtMOzs7OztOOzs7OzsKK0ExMzg7WUkgU1lMTEFCTEUgRERJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTM5O1lJIFNZTExBQkxFIERESVA7TG87MDtMOzs7OztOOzs7OzsKK0ExM0E7WUkgU1lMTEFCTEUgRERJRVg7TG87MDtMOzs7OztOOzs7OzsKK0ExM0I7WUkgU1lMTEFCTEUgRERJRTtMbzswO0w7Ozs7O047Ozs7OworQTEzQztZSSBTWUxMQUJMRSBERElFUDtMbzswO0w7Ozs7O047Ozs7OworQTEzRDtZSSBTWUxMQUJMRSBEREFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTNFO1lJIFNZTExBQkxFIEREQVg7TG87MDtMOzs7OztOOzs7OzsKK0ExM0Y7WUkgU1lMTEFCTEUgRERBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTQwO1lJIFNZTExBQkxFIEREQVA7TG87MDtMOzs7OztOOzs7OzsKK0ExNDE7WUkgU1lMTEFCTEUgRERVT1g7TG87MDtMOzs7OztOOzs7OzsKK0ExNDI7WUkgU1lMTEFCTEUgRERVTztMbzswO0w7Ozs7O047Ozs7OworQTE0MztZSSBTWUxMQUJMRSBERFVPUDtMbzswO0w7Ozs7O047Ozs7OworQTE0NDtZSSBTWUxMQUJMRSBERE9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTQ1O1lJIFNZTExBQkxFIERET1g7TG87MDtMOzs7OztOOzs7OzsKK0ExNDY7WUkgU1lMTEFCTEUgRERPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTQ3O1lJIFNZTExBQkxFIERET1A7TG87MDtMOzs7OztOOzs7OzsKK0ExNDg7WUkgU1lMTEFCTEUgRERFWDtMbzswO0w7Ozs7O047Ozs7OworQTE0OTtZSSBTWUxMQUJMRSBEREU7TG87MDtMOzs7OztOOzs7OzsKK0ExNEE7WUkgU1lMTEFCTEUgRERFUDtMbzswO0w7Ozs7O047Ozs7OworQTE0QjtZSSBTWUxMQUJMRSBERFVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTRDO1lJIFNZTExBQkxFIEREVVg7TG87MDtMOzs7OztOOzs7OzsKK0ExNEQ7WUkgU1lMTEFCTEUgRERVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTRFO1lJIFNZTExBQkxFIEREVVA7TG87MDtMOzs7OztOOzs7OzsKK0ExNEY7WUkgU1lMTEFCTEUgRERVUlg7TG87MDtMOzs7OztOOzs7OzsKK0ExNTA7WUkgU1lMTEFCTEUgRERVUjtMbzswO0w7Ozs7O047Ozs7OworQTE1MTtZSSBTWUxMQUJMRSBORElUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTUyO1lJIFNZTExBQkxFIE5ESVg7TG87MDtMOzs7OztOOzs7OzsKK0ExNTM7WUkgU1lMTEFCTEUgTkRJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTU0O1lJIFNZTExBQkxFIE5ESVA7TG87MDtMOzs7OztOOzs7OzsKK0ExNTU7WUkgU1lMTEFCTEUgTkRJRVg7TG87MDtMOzs7OztOOzs7OzsKK0ExNTY7WUkgU1lMTEFCTEUgTkRJRTtMbzswO0w7Ozs7O047Ozs7OworQTE1NztZSSBTWUxMQUJMRSBOREFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTU4O1lJIFNZTExBQkxFIE5EQVg7TG87MDtMOzs7OztOOzs7OzsKK0ExNTk7WUkgU1lMTEFCTEUgTkRBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTVBO1lJIFNZTExBQkxFIE5EQVA7TG87MDtMOzs7OztOOzs7OzsKK0ExNUI7WUkgU1lMTEFCTEUgTkRPVDtMbzswO0w7Ozs7O047Ozs7OworQTE1QztZSSBTWUxMQUJMRSBORE9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTVEO1lJIFNZTExBQkxFIE5ETztMbzswO0w7Ozs7O047Ozs7OworQTE1RTtZSSBTWUxMQUJMRSBORE9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTVGO1lJIFNZTExBQkxFIE5ERVg7TG87MDtMOzs7OztOOzs7OzsKK0ExNjA7WUkgU1lMTEFCTEUgTkRFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTYxO1lJIFNZTExBQkxFIE5ERVA7TG87MDtMOzs7OztOOzs7OzsKK0ExNjI7WUkgU1lMTEFCTEUgTkRVVDtMbzswO0w7Ozs7O047Ozs7OworQTE2MztZSSBTWUxMQUJMRSBORFVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTY0O1lJIFNZTExBQkxFIE5EVTtMbzswO0w7Ozs7O047Ozs7OworQTE2NTtZSSBTWUxMQUJMRSBORFVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTY2O1lJIFNZTExBQkxFIE5EVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTY3O1lJIFNZTExBQkxFIE5EVVI7TG87MDtMOzs7OztOOzs7OzsKK0ExNjg7WUkgU1lMTEFCTEUgSE5JVDtMbzswO0w7Ozs7O047Ozs7OworQTE2OTtZSSBTWUxMQUJMRSBITklYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTZBO1lJIFNZTExBQkxFIEhOSTtMbzswO0w7Ozs7O047Ozs7OworQTE2QjtZSSBTWUxMQUJMRSBITklQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTZDO1lJIFNZTExBQkxFIEhOSUVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTZEO1lJIFNZTExBQkxFIEhOSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTZFO1lJIFNZTExBQkxFIEhOSUU7TG87MDtMOzs7OztOOzs7OzsKK0ExNkY7WUkgU1lMTEFCTEUgSE5JRVA7TG87MDtMOzs7OztOOzs7OzsKK0ExNzA7WUkgU1lMTEFCTEUgSE5BVDtMbzswO0w7Ozs7O047Ozs7OworQTE3MTtZSSBTWUxMQUJMRSBITkFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTcyO1lJIFNZTExBQkxFIEhOQTtMbzswO0w7Ozs7O047Ozs7OworQTE3MztZSSBTWUxMQUJMRSBITkFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTc0O1lJIFNZTExBQkxFIEhOVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTc1O1lJIFNZTExBQkxFIEhOVU87TG87MDtMOzs7OztOOzs7OzsKK0ExNzY7WUkgU1lMTEFCTEUgSE5PVDtMbzswO0w7Ozs7O047Ozs7OworQTE3NztZSSBTWUxMQUJMRSBITk9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTc4O1lJIFNZTExBQkxFIEhOT1A7TG87MDtMOzs7OztOOzs7OzsKK0ExNzk7WUkgU1lMTEFCTEUgSE5FWDtMbzswO0w7Ozs7O047Ozs7OworQTE3QTtZSSBTWUxMQUJMRSBITkU7TG87MDtMOzs7OztOOzs7OzsKK0ExN0I7WUkgU1lMTEFCTEUgSE5FUDtMbzswO0w7Ozs7O047Ozs7OworQTE3QztZSSBTWUxMQUJMRSBITlVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTdEO1lJIFNZTExBQkxFIE5JVDtMbzswO0w7Ozs7O047Ozs7OworQTE3RTtZSSBTWUxMQUJMRSBOSVg7TG87MDtMOzs7OztOOzs7OzsKK0ExN0Y7WUkgU1lMTEFCTEUgTkk7TG87MDtMOzs7OztOOzs7OzsKK0ExODA7WUkgU1lMTEFCTEUgTklQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTgxO1lJIFNZTExBQkxFIE5JRVg7TG87MDtMOzs7OztOOzs7OzsKK0ExODI7WUkgU1lMTEFCTEUgTklFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTgzO1lJIFNZTExBQkxFIE5JRVA7TG87MDtMOzs7OztOOzs7OzsKK0ExODQ7WUkgU1lMTEFCTEUgTkFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTg1O1lJIFNZTExBQkxFIE5BO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTg2O1lJIFNZTExBQkxFIE5BUDtMbzswO0w7Ozs7O047Ozs7OworQTE4NztZSSBTWUxMQUJMRSBOVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTg4O1lJIFNZTExBQkxFIE5VTztMbzswO0w7Ozs7O047Ozs7OworQTE4OTtZSSBTWUxMQUJMRSBOVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMThBO1lJIFNZTExBQkxFIE5PVDtMbzswO0w7Ozs7O047Ozs7OworQTE4QjtZSSBTWUxMQUJMRSBOT1g7TG87MDtMOzs7OztOOzs7OzsKK0ExOEM7WUkgU1lMTEFCTEUgTk87TG87MDtMOzs7OztOOzs7OzsKK0ExOEQ7WUkgU1lMTEFCTEUgTk9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMThFO1lJIFNZTExBQkxFIE5FWDtMbzswO0w7Ozs7O047Ozs7OworQTE4RjtZSSBTWUxMQUJMRSBORTtMbzswO0w7Ozs7O047Ozs7OworQTE5MDtZSSBTWUxMQUJMRSBORVA7TG87MDtMOzs7OztOOzs7OzsKK0ExOTE7WUkgU1lMTEFCTEUgTlVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTkyO1lJIFNZTExBQkxFIE5VWDtMbzswO0w7Ozs7O047Ozs7OworQTE5MztZSSBTWUxMQUJMRSBOVTtMbzswO0w7Ozs7O047Ozs7OworQTE5NDtZSSBTWUxMQUJMRSBOVVA7TG87MDtMOzs7OztOOzs7OzsKK0ExOTU7WUkgU1lMTEFCTEUgTlVSWDtMbzswO0w7Ozs7O047Ozs7OworQTE5NjtZSSBTWUxMQUJMRSBOVVI7TG87MDtMOzs7OztOOzs7OzsKK0ExOTc7WUkgU1lMTEFCTEUgSExJVDtMbzswO0w7Ozs7O047Ozs7OworQTE5ODtZSSBTWUxMQUJMRSBITElYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTk5O1lJIFNZTExBQkxFIEhMSTtMbzswO0w7Ozs7O047Ozs7OworQTE5QTtZSSBTWUxMQUJMRSBITElQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTlCO1lJIFNZTExBQkxFIEhMSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMTlDO1lJIFNZTExBQkxFIEhMSUU7TG87MDtMOzs7OztOOzs7OzsKK0ExOUQ7WUkgU1lMTEFCTEUgSExJRVA7TG87MDtMOzs7OztOOzs7OzsKK0ExOUU7WUkgU1lMTEFCTEUgSExBVDtMbzswO0w7Ozs7O047Ozs7OworQTE5RjtZSSBTWUxMQUJMRSBITEFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUEwO1lJIFNZTExBQkxFIEhMQTtMbzswO0w7Ozs7O047Ozs7OworQTFBMTtZSSBTWUxMQUJMRSBITEFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUEyO1lJIFNZTExBQkxFIEhMVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUEzO1lJIFNZTExBQkxFIEhMVU87TG87MDtMOzs7OztOOzs7OzsKK0ExQTQ7WUkgU1lMTEFCTEUgSExVT1A7TG87MDtMOzs7OztOOzs7OzsKK0ExQTU7WUkgU1lMTEFCTEUgSExPWDtMbzswO0w7Ozs7O047Ozs7OworQTFBNjtZSSBTWUxMQUJMRSBITE87TG87MDtMOzs7OztOOzs7OzsKK0ExQTc7WUkgU1lMTEFCTEUgSExPUDtMbzswO0w7Ozs7O047Ozs7OworQTFBODtZSSBTWUxMQUJMRSBITEVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUE5O1lJIFNZTExBQkxFIEhMRTtMbzswO0w7Ozs7O047Ozs7OworQTFBQTtZSSBTWUxMQUJMRSBITEVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUFCO1lJIFNZTExBQkxFIEhMVVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExQUM7WUkgU1lMTEFCTEUgSExVWDtMbzswO0w7Ozs7O047Ozs7OworQTFBRDtZSSBTWUxMQUJMRSBITFU7TG87MDtMOzs7OztOOzs7OzsKK0ExQUU7WUkgU1lMTEFCTEUgSExVUDtMbzswO0w7Ozs7O047Ozs7OworQTFBRjtZSSBTWUxMQUJMRSBITFVSWDtMbzswO0w7Ozs7O047Ozs7OworQTFCMDtZSSBTWUxMQUJMRSBITFVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUIxO1lJIFNZTExBQkxFIEhMWVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExQjI7WUkgU1lMTEFCTEUgSExZWDtMbzswO0w7Ozs7O047Ozs7OworQTFCMztZSSBTWUxMQUJMRSBITFk7TG87MDtMOzs7OztOOzs7OzsKK0ExQjQ7WUkgU1lMTEFCTEUgSExZUDtMbzswO0w7Ozs7O047Ozs7OworQTFCNTtZSSBTWUxMQUJMRSBITFlSWDtMbzswO0w7Ozs7O047Ozs7OworQTFCNjtZSSBTWUxMQUJMRSBITFlSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUI3O1lJIFNZTExBQkxFIExJVDtMbzswO0w7Ozs7O047Ozs7OworQTFCODtZSSBTWUxMQUJMRSBMSVg7TG87MDtMOzs7OztOOzs7OzsKK0ExQjk7WUkgU1lMTEFCTEUgTEk7TG87MDtMOzs7OztOOzs7OzsKK0ExQkE7WUkgU1lMTEFCTEUgTElQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUJCO1lJIFNZTExBQkxFIExJRVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExQkM7WUkgU1lMTEFCTEUgTElFWDtMbzswO0w7Ozs7O047Ozs7OworQTFCRDtZSSBTWUxMQUJMRSBMSUU7TG87MDtMOzs7OztOOzs7OzsKK0ExQkU7WUkgU1lMTEFCTEUgTElFUDtMbzswO0w7Ozs7O047Ozs7OworQTFCRjtZSSBTWUxMQUJMRSBMQVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExQzA7WUkgU1lMTEFCTEUgTEFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUMxO1lJIFNZTExBQkxFIExBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUMyO1lJIFNZTExBQkxFIExBUDtMbzswO0w7Ozs7O047Ozs7OworQTFDMztZSSBTWUxMQUJMRSBMVU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUM0O1lJIFNZTExBQkxFIExVT1g7TG87MDtMOzs7OztOOzs7OzsKK0ExQzU7WUkgU1lMTEFCTEUgTFVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUM2O1lJIFNZTExBQkxFIExVT1A7TG87MDtMOzs7OztOOzs7OzsKK0ExQzc7WUkgU1lMTEFCTEUgTE9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUM4O1lJIFNZTExBQkxFIExPWDtMbzswO0w7Ozs7O047Ozs7OworQTFDOTtZSSBTWUxMQUJMRSBMTztMbzswO0w7Ozs7O047Ozs7OworQTFDQTtZSSBTWUxMQUJMRSBMT1A7TG87MDtMOzs7OztOOzs7OzsKK0ExQ0I7WUkgU1lMTEFCTEUgTEVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUNDO1lJIFNZTExBQkxFIExFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUNEO1lJIFNZTExBQkxFIExFUDtMbzswO0w7Ozs7O047Ozs7OworQTFDRTtZSSBTWUxMQUJMRSBMVVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExQ0Y7WUkgU1lMTEFCTEUgTFVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUQwO1lJIFNZTExBQkxFIExVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUQxO1lJIFNZTExBQkxFIExVUDtMbzswO0w7Ozs7O047Ozs7OworQTFEMjtZSSBTWUxMQUJMRSBMVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUQzO1lJIFNZTExBQkxFIExVUjtMbzswO0w7Ozs7O047Ozs7OworQTFENDtZSSBTWUxMQUJMRSBMWVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExRDU7WUkgU1lMTEFCTEUgTFlYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUQ2O1lJIFNZTExBQkxFIExZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUQ3O1lJIFNZTExBQkxFIExZUDtMbzswO0w7Ozs7O047Ozs7OworQTFEODtZSSBTWUxMQUJMRSBMWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUQ5O1lJIFNZTExBQkxFIExZUjtMbzswO0w7Ozs7O047Ozs7OworQTFEQTtZSSBTWUxMQUJMRSBHSVQ7TG87MDtMOzs7OztOOzs7OzsKK0ExREI7WUkgU1lMTEFCTEUgR0lYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMURDO1lJIFNZTExBQkxFIEdJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUREO1lJIFNZTExBQkxFIEdJUDtMbzswO0w7Ozs7O047Ozs7OworQTFERTtZSSBTWUxMQUJMRSBHSUVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMURGO1lJIFNZTExBQkxFIEdJRVg7TG87MDtMOzs7OztOOzs7OzsKK0ExRTA7WUkgU1lMTEFCTEUgR0lFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUUxO1lJIFNZTExBQkxFIEdJRVA7TG87MDtMOzs7OztOOzs7OzsKK0ExRTI7WUkgU1lMTEFCTEUgR0FUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUUzO1lJIFNZTExBQkxFIEdBWDtMbzswO0w7Ozs7O047Ozs7OworQTFFNDtZSSBTWUxMQUJMRSBHQTtMbzswO0w7Ozs7O047Ozs7OworQTFFNTtZSSBTWUxMQUJMRSBHQVA7TG87MDtMOzs7OztOOzs7OzsKK0ExRTY7WUkgU1lMTEFCTEUgR1VPVDtMbzswO0w7Ozs7O047Ozs7OworQTFFNztZSSBTWUxMQUJMRSBHVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUU4O1lJIFNZTExBQkxFIEdVTztMbzswO0w7Ozs7O047Ozs7OworQTFFOTtZSSBTWUxMQUJMRSBHVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUVBO1lJIFNZTExBQkxFIEdPVDtMbzswO0w7Ozs7O047Ozs7OworQTFFQjtZSSBTWUxMQUJMRSBHT1g7TG87MDtMOzs7OztOOzs7OzsKK0ExRUM7WUkgU1lMTEFCTEUgR087TG87MDtMOzs7OztOOzs7OzsKK0ExRUQ7WUkgU1lMTEFCTEUgR09QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUVFO1lJIFNZTExBQkxFIEdFVDtMbzswO0w7Ozs7O047Ozs7OworQTFFRjtZSSBTWUxMQUJMRSBHRVg7TG87MDtMOzs7OztOOzs7OzsKK0ExRjA7WUkgU1lMTEFCTEUgR0U7TG87MDtMOzs7OztOOzs7OzsKK0ExRjE7WUkgU1lMTEFCTEUgR0VQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUYyO1lJIFNZTExBQkxFIEdVVDtMbzswO0w7Ozs7O047Ozs7OworQTFGMztZSSBTWUxMQUJMRSBHVVg7TG87MDtMOzs7OztOOzs7OzsKK0ExRjQ7WUkgU1lMTEFCTEUgR1U7TG87MDtMOzs7OztOOzs7OzsKK0ExRjU7WUkgU1lMTEFCTEUgR1VQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUY2O1lJIFNZTExBQkxFIEdVUlg7TG87MDtMOzs7OztOOzs7OzsKK0ExRjc7WUkgU1lMTEFCTEUgR1VSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUY4O1lJIFNZTExBQkxFIEtJVDtMbzswO0w7Ozs7O047Ozs7OworQTFGOTtZSSBTWUxMQUJMRSBLSVg7TG87MDtMOzs7OztOOzs7OzsKK0ExRkE7WUkgU1lMTEFCTEUgS0k7TG87MDtMOzs7OztOOzs7OzsKK0ExRkI7WUkgU1lMTEFCTEUgS0lQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUZDO1lJIFNZTExBQkxFIEtJRVg7TG87MDtMOzs7OztOOzs7OzsKK0ExRkQ7WUkgU1lMTEFCTEUgS0lFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMUZFO1lJIFNZTExBQkxFIEtJRVA7TG87MDtMOzs7OztOOzs7OzsKK0ExRkY7WUkgU1lMTEFCTEUgS0FUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjAwO1lJIFNZTExBQkxFIEtBWDtMbzswO0w7Ozs7O047Ozs7OworQTIwMTtZSSBTWUxMQUJMRSBLQTtMbzswO0w7Ozs7O047Ozs7OworQTIwMjtZSSBTWUxMQUJMRSBLQVA7TG87MDtMOzs7OztOOzs7OzsKK0EyMDM7WUkgU1lMTEFCTEUgS1VPWDtMbzswO0w7Ozs7O047Ozs7OworQTIwNDtZSSBTWUxMQUJMRSBLVU87TG87MDtMOzs7OztOOzs7OzsKK0EyMDU7WUkgU1lMTEFCTEUgS1VPUDtMbzswO0w7Ozs7O047Ozs7OworQTIwNjtZSSBTWUxMQUJMRSBLT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EyMDc7WUkgU1lMTEFCTEUgS09YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjA4O1lJIFNZTExBQkxFIEtPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjA5O1lJIFNZTExBQkxFIEtPUDtMbzswO0w7Ozs7O047Ozs7OworQTIwQTtZSSBTWUxMQUJMRSBLRVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyMEI7WUkgU1lMTEFCTEUgS0VYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjBDO1lJIFNZTExBQkxFIEtFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjBEO1lJIFNZTExBQkxFIEtFUDtMbzswO0w7Ozs7O047Ozs7OworQTIwRTtZSSBTWUxMQUJMRSBLVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyMEY7WUkgU1lMTEFCTEUgS1VYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjEwO1lJIFNZTExBQkxFIEtVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjExO1lJIFNZTExBQkxFIEtVUDtMbzswO0w7Ozs7O047Ozs7OworQTIxMjtZSSBTWUxMQUJMRSBLVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjEzO1lJIFNZTExBQkxFIEtVUjtMbzswO0w7Ozs7O047Ozs7OworQTIxNDtZSSBTWUxMQUJMRSBHR0lUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjE1O1lJIFNZTExBQkxFIEdHSVg7TG87MDtMOzs7OztOOzs7OzsKK0EyMTY7WUkgU1lMTEFCTEUgR0dJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjE3O1lJIFNZTExBQkxFIEdHSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjE4O1lJIFNZTExBQkxFIEdHSUU7TG87MDtMOzs7OztOOzs7OzsKK0EyMTk7WUkgU1lMTEFCTEUgR0dJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EyMUE7WUkgU1lMTEFCTEUgR0dBVDtMbzswO0w7Ozs7O047Ozs7OworQTIxQjtZSSBTWUxMQUJMRSBHR0FYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjFDO1lJIFNZTExBQkxFIEdHQTtMbzswO0w7Ozs7O047Ozs7OworQTIxRDtZSSBTWUxMQUJMRSBHR0FQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjFFO1lJIFNZTExBQkxFIEdHVU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjFGO1lJIFNZTExBQkxFIEdHVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjIwO1lJIFNZTExBQkxFIEdHVU87TG87MDtMOzs7OztOOzs7OzsKK0EyMjE7WUkgU1lMTEFCTEUgR0dVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EyMjI7WUkgU1lMTEFCTEUgR0dPVDtMbzswO0w7Ozs7O047Ozs7OworQTIyMztZSSBTWUxMQUJMRSBHR09YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjI0O1lJIFNZTExBQkxFIEdHTztMbzswO0w7Ozs7O047Ozs7OworQTIyNTtZSSBTWUxMQUJMRSBHR09QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjI2O1lJIFNZTExBQkxFIEdHRVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyMjc7WUkgU1lMTEFCTEUgR0dFWDtMbzswO0w7Ozs7O047Ozs7OworQTIyODtZSSBTWUxMQUJMRSBHR0U7TG87MDtMOzs7OztOOzs7OzsKK0EyMjk7WUkgU1lMTEFCTEUgR0dFUDtMbzswO0w7Ozs7O047Ozs7OworQTIyQTtZSSBTWUxMQUJMRSBHR1VUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjJCO1lJIFNZTExBQkxFIEdHVVg7TG87MDtMOzs7OztOOzs7OzsKK0EyMkM7WUkgU1lMTEFCTEUgR0dVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjJEO1lJIFNZTExBQkxFIEdHVVA7TG87MDtMOzs7OztOOzs7OzsKK0EyMkU7WUkgU1lMTEFCTEUgR0dVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EyMkY7WUkgU1lMTEFCTEUgR0dVUjtMbzswO0w7Ozs7O047Ozs7OworQTIzMDtZSSBTWUxMQUJMRSBNR0lFWDtMbzswO0w7Ozs7O047Ozs7OworQTIzMTtZSSBTWUxMQUJMRSBNR0lFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjMyO1lJIFNZTExBQkxFIE1HQVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyMzM7WUkgU1lMTEFCTEUgTUdBWDtMbzswO0w7Ozs7O047Ozs7OworQTIzNDtZSSBTWUxMQUJMRSBNR0E7TG87MDtMOzs7OztOOzs7OzsKK0EyMzU7WUkgU1lMTEFCTEUgTUdBUDtMbzswO0w7Ozs7O047Ozs7OworQTIzNjtZSSBTWUxMQUJMRSBNR1VPWDtMbzswO0w7Ozs7O047Ozs7OworQTIzNztZSSBTWUxMQUJMRSBNR1VPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjM4O1lJIFNZTExBQkxFIE1HVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjM5O1lJIFNZTExBQkxFIE1HT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EyM0E7WUkgU1lMTEFCTEUgTUdPWDtMbzswO0w7Ozs7O047Ozs7OworQTIzQjtZSSBTWUxMQUJMRSBNR087TG87MDtMOzs7OztOOzs7OzsKK0EyM0M7WUkgU1lMTEFCTEUgTUdPUDtMbzswO0w7Ozs7O047Ozs7OworQTIzRDtZSSBTWUxMQUJMRSBNR0VYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjNFO1lJIFNZTExBQkxFIE1HRTtMbzswO0w7Ozs7O047Ozs7OworQTIzRjtZSSBTWUxMQUJMRSBNR0VQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjQwO1lJIFNZTExBQkxFIE1HVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyNDE7WUkgU1lMTEFCTEUgTUdVWDtMbzswO0w7Ozs7O047Ozs7OworQTI0MjtZSSBTWUxMQUJMRSBNR1U7TG87MDtMOzs7OztOOzs7OzsKK0EyNDM7WUkgU1lMTEFCTEUgTUdVUDtMbzswO0w7Ozs7O047Ozs7OworQTI0NDtZSSBTWUxMQUJMRSBNR1VSWDtMbzswO0w7Ozs7O047Ozs7OworQTI0NTtZSSBTWUxMQUJMRSBNR1VSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjQ2O1lJIFNZTExBQkxFIEhYSVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyNDc7WUkgU1lMTEFCTEUgSFhJWDtMbzswO0w7Ozs7O047Ozs7OworQTI0ODtZSSBTWUxMQUJMRSBIWEk7TG87MDtMOzs7OztOOzs7OzsKK0EyNDk7WUkgU1lMTEFCTEUgSFhJUDtMbzswO0w7Ozs7O047Ozs7OworQTI0QTtZSSBTWUxMQUJMRSBIWElFVDtMbzswO0w7Ozs7O047Ozs7OworQTI0QjtZSSBTWUxMQUJMRSBIWElFWDtMbzswO0w7Ozs7O047Ozs7OworQTI0QztZSSBTWUxMQUJMRSBIWElFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjREO1lJIFNZTExBQkxFIEhYSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjRFO1lJIFNZTExBQkxFIEhYQVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyNEY7WUkgU1lMTEFCTEUgSFhBWDtMbzswO0w7Ozs7O047Ozs7OworQTI1MDtZSSBTWUxMQUJMRSBIWEE7TG87MDtMOzs7OztOOzs7OzsKK0EyNTE7WUkgU1lMTEFCTEUgSFhBUDtMbzswO0w7Ozs7O047Ozs7OworQTI1MjtZSSBTWUxMQUJMRSBIWFVPVDtMbzswO0w7Ozs7O047Ozs7OworQTI1MztZSSBTWUxMQUJMRSBIWFVPWDtMbzswO0w7Ozs7O047Ozs7OworQTI1NDtZSSBTWUxMQUJMRSBIWFVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjU1O1lJIFNZTExBQkxFIEhYVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjU2O1lJIFNZTExBQkxFIEhYT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EyNTc7WUkgU1lMTEFCTEUgSFhPWDtMbzswO0w7Ozs7O047Ozs7OworQTI1ODtZSSBTWUxMQUJMRSBIWE87TG87MDtMOzs7OztOOzs7OzsKK0EyNTk7WUkgU1lMTEFCTEUgSFhPUDtMbzswO0w7Ozs7O047Ozs7OworQTI1QTtZSSBTWUxMQUJMRSBIWEVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjVCO1lJIFNZTExBQkxFIEhYRTtMbzswO0w7Ozs7O047Ozs7OworQTI1QztZSSBTWUxMQUJMRSBIWEVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjVEO1lJIFNZTExBQkxFIE5HSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjVFO1lJIFNZTExBQkxFIE5HSUU7TG87MDtMOzs7OztOOzs7OzsKK0EyNUY7WUkgU1lMTEFCTEUgTkdJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EyNjA7WUkgU1lMTEFCTEUgTkdBVDtMbzswO0w7Ozs7O047Ozs7OworQTI2MTtZSSBTWUxMQUJMRSBOR0FYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjYyO1lJIFNZTExBQkxFIE5HQTtMbzswO0w7Ozs7O047Ozs7OworQTI2MztZSSBTWUxMQUJMRSBOR0FQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjY0O1lJIFNZTExBQkxFIE5HVU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjY1O1lJIFNZTExBQkxFIE5HVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjY2O1lJIFNZTExBQkxFIE5HVU87TG87MDtMOzs7OztOOzs7OzsKK0EyNjc7WUkgU1lMTEFCTEUgTkdPVDtMbzswO0w7Ozs7O047Ozs7OworQTI2ODtZSSBTWUxMQUJMRSBOR09YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjY5O1lJIFNZTExBQkxFIE5HTztMbzswO0w7Ozs7O047Ozs7OworQTI2QTtZSSBTWUxMQUJMRSBOR09QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjZCO1lJIFNZTExBQkxFIE5HRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyNkM7WUkgU1lMTEFCTEUgTkdFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjZEO1lJIFNZTExBQkxFIE5HRVA7TG87MDtMOzs7OztOOzs7OzsKK0EyNkU7WUkgU1lMTEFCTEUgSElUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjZGO1lJIFNZTExBQkxFIEhJRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyNzA7WUkgU1lMTEFCTEUgSElFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjcxO1lJIFNZTExBQkxFIEhBVDtMbzswO0w7Ozs7O047Ozs7OworQTI3MjtZSSBTWUxMQUJMRSBIQVg7TG87MDtMOzs7OztOOzs7OzsKK0EyNzM7WUkgU1lMTEFCTEUgSEE7TG87MDtMOzs7OztOOzs7OzsKK0EyNzQ7WUkgU1lMTEFCTEUgSEFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjc1O1lJIFNZTExBQkxFIEhVT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EyNzY7WUkgU1lMTEFCTEUgSFVPWDtMbzswO0w7Ozs7O047Ozs7OworQTI3NztZSSBTWUxMQUJMRSBIVU87TG87MDtMOzs7OztOOzs7OzsKK0EyNzg7WUkgU1lMTEFCTEUgSFVPUDtMbzswO0w7Ozs7O047Ozs7OworQTI3OTtZSSBTWUxMQUJMRSBIT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EyN0E7WUkgU1lMTEFCTEUgSE9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjdCO1lJIFNZTExBQkxFIEhPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjdDO1lJIFNZTExBQkxFIEhPUDtMbzswO0w7Ozs7O047Ozs7OworQTI3RDtZSSBTWUxMQUJMRSBIRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyN0U7WUkgU1lMTEFCTEUgSEU7TG87MDtMOzs7OztOOzs7OzsKK0EyN0Y7WUkgU1lMTEFCTEUgSEVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjgwO1lJIFNZTExBQkxFIFdBVDtMbzswO0w7Ozs7O047Ozs7OworQTI4MTtZSSBTWUxMQUJMRSBXQVg7TG87MDtMOzs7OztOOzs7OzsKK0EyODI7WUkgU1lMTEFCTEUgV0E7TG87MDtMOzs7OztOOzs7OzsKK0EyODM7WUkgU1lMTEFCTEUgV0FQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjg0O1lJIFNZTExBQkxFIFdVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EyODU7WUkgU1lMTEFCTEUgV1VPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjg2O1lJIFNZTExBQkxFIFdVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EyODc7WUkgU1lMTEFCTEUgV09YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjg4O1lJIFNZTExBQkxFIFdPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjg5O1lJIFNZTExBQkxFIFdPUDtMbzswO0w7Ozs7O047Ozs7OworQTI4QTtZSSBTWUxMQUJMRSBXRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyOEI7WUkgU1lMTEFCTEUgV0U7TG87MDtMOzs7OztOOzs7OzsKK0EyOEM7WUkgU1lMTEFCTEUgV0VQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjhEO1lJIFNZTExBQkxFIFpJVDtMbzswO0w7Ozs7O047Ozs7OworQTI4RTtZSSBTWUxMQUJMRSBaSVg7TG87MDtMOzs7OztOOzs7OzsKK0EyOEY7WUkgU1lMTEFCTEUgWkk7TG87MDtMOzs7OztOOzs7OzsKK0EyOTA7WUkgU1lMTEFCTEUgWklQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjkxO1lJIFNZTExBQkxFIFpJRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyOTI7WUkgU1lMTEFCTEUgWklFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjkzO1lJIFNZTExBQkxFIFpJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EyOTQ7WUkgU1lMTEFCTEUgWkFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjk1O1lJIFNZTExBQkxFIFpBWDtMbzswO0w7Ozs7O047Ozs7OworQTI5NjtZSSBTWUxMQUJMRSBaQTtMbzswO0w7Ozs7O047Ozs7OworQTI5NztZSSBTWUxMQUJMRSBaQVA7TG87MDtMOzs7OztOOzs7OzsKK0EyOTg7WUkgU1lMTEFCTEUgWlVPWDtMbzswO0w7Ozs7O047Ozs7OworQTI5OTtZSSBTWUxMQUJMRSBaVU87TG87MDtMOzs7OztOOzs7OzsKK0EyOUE7WUkgU1lMTEFCTEUgWlVPUDtMbzswO0w7Ozs7O047Ozs7OworQTI5QjtZSSBTWUxMQUJMRSBaT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EyOUM7WUkgU1lMTEFCTEUgWk9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjlEO1lJIFNZTExBQkxFIFpPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMjlFO1lJIFNZTExBQkxFIFpPUDtMbzswO0w7Ozs7O047Ozs7OworQTI5RjtZSSBTWUxMQUJMRSBaRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyQTA7WUkgU1lMTEFCTEUgWkU7TG87MDtMOzs7OztOOzs7OzsKK0EyQTE7WUkgU1lMTEFCTEUgWkVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkEyO1lJIFNZTExBQkxFIFpVVDtMbzswO0w7Ozs7O047Ozs7OworQTJBMztZSSBTWUxMQUJMRSBaVVg7TG87MDtMOzs7OztOOzs7OzsKK0EyQTQ7WUkgU1lMTEFCTEUgWlU7TG87MDtMOzs7OztOOzs7OzsKK0EyQTU7WUkgU1lMTEFCTEUgWlVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkE2O1lJIFNZTExBQkxFIFpVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EyQTc7WUkgU1lMTEFCTEUgWlVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkE4O1lJIFNZTExBQkxFIFpZVDtMbzswO0w7Ozs7O047Ozs7OworQTJBOTtZSSBTWUxMQUJMRSBaWVg7TG87MDtMOzs7OztOOzs7OzsKK0EyQUE7WUkgU1lMTEFCTEUgWlk7TG87MDtMOzs7OztOOzs7OzsKK0EyQUI7WUkgU1lMTEFCTEUgWllQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkFDO1lJIFNZTExBQkxFIFpZUlg7TG87MDtMOzs7OztOOzs7OzsKK0EyQUQ7WUkgU1lMTEFCTEUgWllSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkFFO1lJIFNZTExBQkxFIENJVDtMbzswO0w7Ozs7O047Ozs7OworQTJBRjtZSSBTWUxMQUJMRSBDSVg7TG87MDtMOzs7OztOOzs7OzsKK0EyQjA7WUkgU1lMTEFCTEUgQ0k7TG87MDtMOzs7OztOOzs7OzsKK0EyQjE7WUkgU1lMTEFCTEUgQ0lQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkIyO1lJIFNZTExBQkxFIENJRVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyQjM7WUkgU1lMTEFCTEUgQ0lFWDtMbzswO0w7Ozs7O047Ozs7OworQTJCNDtZSSBTWUxMQUJMRSBDSUU7TG87MDtMOzs7OztOOzs7OzsKK0EyQjU7WUkgU1lMTEFCTEUgQ0lFUDtMbzswO0w7Ozs7O047Ozs7OworQTJCNjtZSSBTWUxMQUJMRSBDQVQ7TG87MDtMOzs7OztOOzs7OzsKK0EyQjc7WUkgU1lMTEFCTEUgQ0FYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkI4O1lJIFNZTExBQkxFIENBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkI5O1lJIFNZTExBQkxFIENBUDtMbzswO0w7Ozs7O047Ozs7OworQTJCQTtZSSBTWUxMQUJMRSBDVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkJCO1lJIFNZTExBQkxFIENVTztMbzswO0w7Ozs7O047Ozs7OworQTJCQztZSSBTWUxMQUJMRSBDVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkJEO1lJIFNZTExBQkxFIENPVDtMbzswO0w7Ozs7O047Ozs7OworQTJCRTtZSSBTWUxMQUJMRSBDT1g7TG87MDtMOzs7OztOOzs7OzsKK0EyQkY7WUkgU1lMTEFCTEUgQ087TG87MDtMOzs7OztOOzs7OzsKK0EyQzA7WUkgU1lMTEFCTEUgQ09QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkMxO1lJIFNZTExBQkxFIENFWDtMbzswO0w7Ozs7O047Ozs7OworQTJDMjtZSSBTWUxMQUJMRSBDRTtMbzswO0w7Ozs7O047Ozs7OworQTJDMztZSSBTWUxMQUJMRSBDRVA7TG87MDtMOzs7OztOOzs7OzsKK0EyQzQ7WUkgU1lMTEFCTEUgQ1VUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkM1O1lJIFNZTExBQkxFIENVWDtMbzswO0w7Ozs7O047Ozs7OworQTJDNjtZSSBTWUxMQUJMRSBDVTtMbzswO0w7Ozs7O047Ozs7OworQTJDNztZSSBTWUxMQUJMRSBDVVA7TG87MDtMOzs7OztOOzs7OzsKK0EyQzg7WUkgU1lMTEFCTEUgQ1VSWDtMbzswO0w7Ozs7O047Ozs7OworQTJDOTtZSSBTWUxMQUJMRSBDVVI7TG87MDtMOzs7OztOOzs7OzsKK0EyQ0E7WUkgU1lMTEFCTEUgQ1lUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkNCO1lJIFNZTExBQkxFIENZWDtMbzswO0w7Ozs7O047Ozs7OworQTJDQztZSSBTWUxMQUJMRSBDWTtMbzswO0w7Ozs7O047Ozs7OworQTJDRDtZSSBTWUxMQUJMRSBDWVA7TG87MDtMOzs7OztOOzs7OzsKK0EyQ0U7WUkgU1lMTEFCTEUgQ1lSWDtMbzswO0w7Ozs7O047Ozs7OworQTJDRjtZSSBTWUxMQUJMRSBDWVI7TG87MDtMOzs7OztOOzs7OzsKK0EyRDA7WUkgU1lMTEFCTEUgWlpJVDtMbzswO0w7Ozs7O047Ozs7OworQTJEMTtZSSBTWUxMQUJMRSBaWklYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkQyO1lJIFNZTExBQkxFIFpaSTtMbzswO0w7Ozs7O047Ozs7OworQTJEMztZSSBTWUxMQUJMRSBaWklQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkQ0O1lJIFNZTExBQkxFIFpaSUVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkQ1O1lJIFNZTExBQkxFIFpaSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkQ2O1lJIFNZTExBQkxFIFpaSUU7TG87MDtMOzs7OztOOzs7OzsKK0EyRDc7WUkgU1lMTEFCTEUgWlpJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EyRDg7WUkgU1lMTEFCTEUgWlpBVDtMbzswO0w7Ozs7O047Ozs7OworQTJEOTtZSSBTWUxMQUJMRSBaWkFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkRBO1lJIFNZTExBQkxFIFpaQTtMbzswO0w7Ozs7O047Ozs7OworQTJEQjtZSSBTWUxMQUJMRSBaWkFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkRDO1lJIFNZTExBQkxFIFpaT1g7TG87MDtMOzs7OztOOzs7OzsKK0EyREQ7WUkgU1lMTEFCTEUgWlpPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkRFO1lJIFNZTExBQkxFIFpaT1A7TG87MDtMOzs7OztOOzs7OzsKK0EyREY7WUkgU1lMTEFCTEUgWlpFWDtMbzswO0w7Ozs7O047Ozs7OworQTJFMDtZSSBTWUxMQUJMRSBaWkU7TG87MDtMOzs7OztOOzs7OzsKK0EyRTE7WUkgU1lMTEFCTEUgWlpFUDtMbzswO0w7Ozs7O047Ozs7OworQTJFMjtZSSBTWUxMQUJMRSBaWlVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkUzO1lJIFNZTExBQkxFIFpaVTtMbzswO0w7Ozs7O047Ozs7OworQTJFNDtZSSBTWUxMQUJMRSBaWlVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkU1O1lJIFNZTExBQkxFIFpaVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkU2O1lJIFNZTExBQkxFIFpaVVI7TG87MDtMOzs7OztOOzs7OzsKK0EyRTc7WUkgU1lMTEFCTEUgWlpZVDtMbzswO0w7Ozs7O047Ozs7OworQTJFODtZSSBTWUxMQUJMRSBaWllYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkU5O1lJIFNZTExBQkxFIFpaWTtMbzswO0w7Ozs7O047Ozs7OworQTJFQTtZSSBTWUxMQUJMRSBaWllQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkVCO1lJIFNZTExBQkxFIFpaWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkVDO1lJIFNZTExBQkxFIFpaWVI7TG87MDtMOzs7OztOOzs7OzsKK0EyRUQ7WUkgU1lMTEFCTEUgTlpJVDtMbzswO0w7Ozs7O047Ozs7OworQTJFRTtZSSBTWUxMQUJMRSBOWklYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkVGO1lJIFNZTExBQkxFIE5aSTtMbzswO0w7Ozs7O047Ozs7OworQTJGMDtZSSBTWUxMQUJMRSBOWklQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkYxO1lJIFNZTExBQkxFIE5aSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkYyO1lJIFNZTExBQkxFIE5aSUU7TG87MDtMOzs7OztOOzs7OzsKK0EyRjM7WUkgU1lMTEFCTEUgTlpJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EyRjQ7WUkgU1lMTEFCTEUgTlpBVDtMbzswO0w7Ozs7O047Ozs7OworQTJGNTtZSSBTWUxMQUJMRSBOWkFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkY2O1lJIFNZTExBQkxFIE5aQTtMbzswO0w7Ozs7O047Ozs7OworQTJGNztZSSBTWUxMQUJMRSBOWkFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkY4O1lJIFNZTExBQkxFIE5aVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkY5O1lJIFNZTExBQkxFIE5aVU87TG87MDtMOzs7OztOOzs7OzsKK0EyRkE7WUkgU1lMTEFCTEUgTlpPWDtMbzswO0w7Ozs7O047Ozs7OworQTJGQjtZSSBTWUxMQUJMRSBOWk9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkZDO1lJIFNZTExBQkxFIE5aRVg7TG87MDtMOzs7OztOOzs7OzsKK0EyRkQ7WUkgU1lMTEFCTEUgTlpFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMkZFO1lJIFNZTExBQkxFIE5aVVg7TG87MDtMOzs7OztOOzs7OzsKK0EyRkY7WUkgU1lMTEFCTEUgTlpVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzAwO1lJIFNZTExBQkxFIE5aVVA7TG87MDtMOzs7OztOOzs7OzsKK0EzMDE7WUkgU1lMTEFCTEUgTlpVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EzMDI7WUkgU1lMTEFCTEUgTlpVUjtMbzswO0w7Ozs7O047Ozs7OworQTMwMztZSSBTWUxMQUJMRSBOWllUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzA0O1lJIFNZTExBQkxFIE5aWVg7TG87MDtMOzs7OztOOzs7OzsKK0EzMDU7WUkgU1lMTEFCTEUgTlpZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzA2O1lJIFNZTExBQkxFIE5aWVA7TG87MDtMOzs7OztOOzs7OzsKK0EzMDc7WUkgU1lMTEFCTEUgTlpZUlg7TG87MDtMOzs7OztOOzs7OzsKK0EzMDg7WUkgU1lMTEFCTEUgTlpZUjtMbzswO0w7Ozs7O047Ozs7OworQTMwOTtZSSBTWUxMQUJMRSBTSVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzMEE7WUkgU1lMTEFCTEUgU0lYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzBCO1lJIFNZTExBQkxFIFNJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzBDO1lJIFNZTExBQkxFIFNJUDtMbzswO0w7Ozs7O047Ozs7OworQTMwRDtZSSBTWUxMQUJMRSBTSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzBFO1lJIFNZTExBQkxFIFNJRTtMbzswO0w7Ozs7O047Ozs7OworQTMwRjtZSSBTWUxMQUJMRSBTSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzEwO1lJIFNZTExBQkxFIFNBVDtMbzswO0w7Ozs7O047Ozs7OworQTMxMTtZSSBTWUxMQUJMRSBTQVg7TG87MDtMOzs7OztOOzs7OzsKK0EzMTI7WUkgU1lMTEFCTEUgU0E7TG87MDtMOzs7OztOOzs7OzsKK0EzMTM7WUkgU1lMTEFCTEUgU0FQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzE0O1lJIFNZTExBQkxFIFNVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EzMTU7WUkgU1lMTEFCTEUgU1VPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzE2O1lJIFNZTExBQkxFIFNVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EzMTc7WUkgU1lMTEFCTEUgU09UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzE4O1lJIFNZTExBQkxFIFNPWDtMbzswO0w7Ozs7O047Ozs7OworQTMxOTtZSSBTWUxMQUJMRSBTTztMbzswO0w7Ozs7O047Ozs7OworQTMxQTtZSSBTWUxMQUJMRSBTT1A7TG87MDtMOzs7OztOOzs7OzsKK0EzMUI7WUkgU1lMTEFCTEUgU0VYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzFDO1lJIFNZTExBQkxFIFNFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzFEO1lJIFNZTExBQkxFIFNFUDtMbzswO0w7Ozs7O047Ozs7OworQTMxRTtZSSBTWUxMQUJMRSBTVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzMUY7WUkgU1lMTEFCTEUgU1VYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzIwO1lJIFNZTExBQkxFIFNVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzIxO1lJIFNZTExBQkxFIFNVUDtMbzswO0w7Ozs7O047Ozs7OworQTMyMjtZSSBTWUxMQUJMRSBTVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzIzO1lJIFNZTExBQkxFIFNVUjtMbzswO0w7Ozs7O047Ozs7OworQTMyNDtZSSBTWUxMQUJMRSBTWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzMjU7WUkgU1lMTEFCTEUgU1lYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzI2O1lJIFNZTExBQkxFIFNZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzI3O1lJIFNZTExBQkxFIFNZUDtMbzswO0w7Ozs7O047Ozs7OworQTMyODtZSSBTWUxMQUJMRSBTWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzI5O1lJIFNZTExBQkxFIFNZUjtMbzswO0w7Ozs7O047Ozs7OworQTMyQTtZSSBTWUxMQUJMRSBTU0lUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzJCO1lJIFNZTExBQkxFIFNTSVg7TG87MDtMOzs7OztOOzs7OzsKK0EzMkM7WUkgU1lMTEFCTEUgU1NJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzJEO1lJIFNZTExBQkxFIFNTSVA7TG87MDtMOzs7OztOOzs7OzsKK0EzMkU7WUkgU1lMTEFCTEUgU1NJRVg7TG87MDtMOzs7OztOOzs7OzsKK0EzMkY7WUkgU1lMTEFCTEUgU1NJRTtMbzswO0w7Ozs7O047Ozs7OworQTMzMDtZSSBTWUxMQUJMRSBTU0lFUDtMbzswO0w7Ozs7O047Ozs7OworQTMzMTtZSSBTWUxMQUJMRSBTU0FUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzMyO1lJIFNZTExBQkxFIFNTQVg7TG87MDtMOzs7OztOOzs7OzsKK0EzMzM7WUkgU1lMTEFCTEUgU1NBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzM0O1lJIFNZTExBQkxFIFNTQVA7TG87MDtMOzs7OztOOzs7OzsKK0EzMzU7WUkgU1lMTEFCTEUgU1NPVDtMbzswO0w7Ozs7O047Ozs7OworQTMzNjtZSSBTWUxMQUJMRSBTU09YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzM3O1lJIFNZTExBQkxFIFNTTztMbzswO0w7Ozs7O047Ozs7OworQTMzODtZSSBTWUxMQUJMRSBTU09QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzM5O1lJIFNZTExBQkxFIFNTRVg7TG87MDtMOzs7OztOOzs7OzsKK0EzM0E7WUkgU1lMTEFCTEUgU1NFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzNCO1lJIFNZTExBQkxFIFNTRVA7TG87MDtMOzs7OztOOzs7OzsKK0EzM0M7WUkgU1lMTEFCTEUgU1NVVDtMbzswO0w7Ozs7O047Ozs7OworQTMzRDtZSSBTWUxMQUJMRSBTU1VYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzNFO1lJIFNZTExBQkxFIFNTVTtMbzswO0w7Ozs7O047Ozs7OworQTMzRjtZSSBTWUxMQUJMRSBTU1VQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzQwO1lJIFNZTExBQkxFIFNTWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzNDE7WUkgU1lMTEFCTEUgU1NZWDtMbzswO0w7Ozs7O047Ozs7OworQTM0MjtZSSBTWUxMQUJMRSBTU1k7TG87MDtMOzs7OztOOzs7OzsKK0EzNDM7WUkgU1lMTEFCTEUgU1NZUDtMbzswO0w7Ozs7O047Ozs7OworQTM0NDtZSSBTWUxMQUJMRSBTU1lSWDtMbzswO0w7Ozs7O047Ozs7OworQTM0NTtZSSBTWUxMQUJMRSBTU1lSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzQ2O1lJIFNZTExBQkxFIFpIQVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzNDc7WUkgU1lMTEFCTEUgWkhBWDtMbzswO0w7Ozs7O047Ozs7OworQTM0ODtZSSBTWUxMQUJMRSBaSEE7TG87MDtMOzs7OztOOzs7OzsKK0EzNDk7WUkgU1lMTEFCTEUgWkhBUDtMbzswO0w7Ozs7O047Ozs7OworQTM0QTtZSSBTWUxMQUJMRSBaSFVPWDtMbzswO0w7Ozs7O047Ozs7OworQTM0QjtZSSBTWUxMQUJMRSBaSFVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzRDO1lJIFNZTExBQkxFIFpIVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzREO1lJIFNZTExBQkxFIFpIT1Q7TG87MDtMOzs7OztOOzs7OzsKK0EzNEU7WUkgU1lMTEFCTEUgWkhPWDtMbzswO0w7Ozs7O047Ozs7OworQTM0RjtZSSBTWUxMQUJMRSBaSE87TG87MDtMOzs7OztOOzs7OzsKK0EzNTA7WUkgU1lMTEFCTEUgWkhPUDtMbzswO0w7Ozs7O047Ozs7OworQTM1MTtZSSBTWUxMQUJMRSBaSEVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzUyO1lJIFNZTExBQkxFIFpIRVg7TG87MDtMOzs7OztOOzs7OzsKK0EzNTM7WUkgU1lMTEFCTEUgWkhFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzU0O1lJIFNZTExBQkxFIFpIRVA7TG87MDtMOzs7OztOOzs7OzsKK0EzNTU7WUkgU1lMTEFCTEUgWkhVVDtMbzswO0w7Ozs7O047Ozs7OworQTM1NjtZSSBTWUxMQUJMRSBaSFVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzU3O1lJIFNZTExBQkxFIFpIVTtMbzswO0w7Ozs7O047Ozs7OworQTM1ODtZSSBTWUxMQUJMRSBaSFVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzU5O1lJIFNZTExBQkxFIFpIVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzVBO1lJIFNZTExBQkxFIFpIVVI7TG87MDtMOzs7OztOOzs7OzsKK0EzNUI7WUkgU1lMTEFCTEUgWkhZVDtMbzswO0w7Ozs7O047Ozs7OworQTM1QztZSSBTWUxMQUJMRSBaSFlYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzVEO1lJIFNZTExBQkxFIFpIWTtMbzswO0w7Ozs7O047Ozs7OworQTM1RTtZSSBTWUxMQUJMRSBaSFlQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzVGO1lJIFNZTExBQkxFIFpIWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzYwO1lJIFNZTExBQkxFIFpIWVI7TG87MDtMOzs7OztOOzs7OzsKK0EzNjE7WUkgU1lMTEFCTEUgQ0hBVDtMbzswO0w7Ozs7O047Ozs7OworQTM2MjtZSSBTWUxMQUJMRSBDSEFYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzYzO1lJIFNZTExBQkxFIENIQTtMbzswO0w7Ozs7O047Ozs7OworQTM2NDtZSSBTWUxMQUJMRSBDSEFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzY1O1lJIFNZTExBQkxFIENIVU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzY2O1lJIFNZTExBQkxFIENIVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzY3O1lJIFNZTExBQkxFIENIVU87TG87MDtMOzs7OztOOzs7OzsKK0EzNjg7WUkgU1lMTEFCTEUgQ0hVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EzNjk7WUkgU1lMTEFCTEUgQ0hPVDtMbzswO0w7Ozs7O047Ozs7OworQTM2QTtZSSBTWUxMQUJMRSBDSE9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzZCO1lJIFNZTExBQkxFIENITztMbzswO0w7Ozs7O047Ozs7OworQTM2QztZSSBTWUxMQUJMRSBDSE9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzZEO1lJIFNZTExBQkxFIENIRVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzNkU7WUkgU1lMTEFCTEUgQ0hFWDtMbzswO0w7Ozs7O047Ozs7OworQTM2RjtZSSBTWUxMQUJMRSBDSEU7TG87MDtMOzs7OztOOzs7OzsKK0EzNzA7WUkgU1lMTEFCTEUgQ0hFUDtMbzswO0w7Ozs7O047Ozs7OworQTM3MTtZSSBTWUxMQUJMRSBDSFVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzcyO1lJIFNZTExBQkxFIENIVTtMbzswO0w7Ozs7O047Ozs7OworQTM3MztZSSBTWUxMQUJMRSBDSFVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzc0O1lJIFNZTExBQkxFIENIVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzc1O1lJIFNZTExBQkxFIENIVVI7TG87MDtMOzs7OztOOzs7OzsKK0EzNzY7WUkgU1lMTEFCTEUgQ0hZVDtMbzswO0w7Ozs7O047Ozs7OworQTM3NztZSSBTWUxMQUJMRSBDSFlYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzc4O1lJIFNZTExBQkxFIENIWTtMbzswO0w7Ozs7O047Ozs7OworQTM3OTtZSSBTWUxMQUJMRSBDSFlQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzdBO1lJIFNZTExBQkxFIENIWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzdCO1lJIFNZTExBQkxFIENIWVI7TG87MDtMOzs7OztOOzs7OzsKK0EzN0M7WUkgU1lMTEFCTEUgUlJBWDtMbzswO0w7Ozs7O047Ozs7OworQTM3RDtZSSBTWUxMQUJMRSBSUkE7TG87MDtMOzs7OztOOzs7OzsKK0EzN0U7WUkgU1lMTEFCTEUgUlJVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EzN0Y7WUkgU1lMTEFCTEUgUlJVTztMbzswO0w7Ozs7O047Ozs7OworQTM4MDtZSSBTWUxMQUJMRSBSUk9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzgxO1lJIFNZTExBQkxFIFJST1g7TG87MDtMOzs7OztOOzs7OzsKK0EzODI7WUkgU1lMTEFCTEUgUlJPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzgzO1lJIFNZTExBQkxFIFJST1A7TG87MDtMOzs7OztOOzs7OzsKK0EzODQ7WUkgU1lMTEFCTEUgUlJFVDtMbzswO0w7Ozs7O047Ozs7OworQTM4NTtZSSBTWUxMQUJMRSBSUkVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzg2O1lJIFNZTExBQkxFIFJSRTtMbzswO0w7Ozs7O047Ozs7OworQTM4NztZSSBTWUxMQUJMRSBSUkVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzg4O1lJIFNZTExBQkxFIFJSVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzODk7WUkgU1lMTEFCTEUgUlJVWDtMbzswO0w7Ozs7O047Ozs7OworQTM4QTtZSSBTWUxMQUJMRSBSUlU7TG87MDtMOzs7OztOOzs7OzsKK0EzOEI7WUkgU1lMTEFCTEUgUlJVUDtMbzswO0w7Ozs7O047Ozs7OworQTM4QztZSSBTWUxMQUJMRSBSUlVSWDtMbzswO0w7Ozs7O047Ozs7OworQTM4RDtZSSBTWUxMQUJMRSBSUlVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzhFO1lJIFNZTExBQkxFIFJSWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzOEY7WUkgU1lMTEFCTEUgUlJZWDtMbzswO0w7Ozs7O047Ozs7OworQTM5MDtZSSBTWUxMQUJMRSBSUlk7TG87MDtMOzs7OztOOzs7OzsKK0EzOTE7WUkgU1lMTEFCTEUgUlJZUDtMbzswO0w7Ozs7O047Ozs7OworQTM5MjtZSSBTWUxMQUJMRSBSUllSWDtMbzswO0w7Ozs7O047Ozs7OworQTM5MztZSSBTWUxMQUJMRSBSUllSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzk0O1lJIFNZTExBQkxFIE5SQVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzOTU7WUkgU1lMTEFCTEUgTlJBWDtMbzswO0w7Ozs7O047Ozs7OworQTM5NjtZSSBTWUxMQUJMRSBOUkE7TG87MDtMOzs7OztOOzs7OzsKK0EzOTc7WUkgU1lMTEFCTEUgTlJBUDtMbzswO0w7Ozs7O047Ozs7OworQTM5ODtZSSBTWUxMQUJMRSBOUk9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzk5O1lJIFNZTExBQkxFIE5STztMbzswO0w7Ozs7O047Ozs7OworQTM5QTtZSSBTWUxMQUJMRSBOUk9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBMzlCO1lJIFNZTExBQkxFIE5SRVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzOUM7WUkgU1lMTEFCTEUgTlJFWDtMbzswO0w7Ozs7O047Ozs7OworQTM5RDtZSSBTWUxMQUJMRSBOUkU7TG87MDtMOzs7OztOOzs7OzsKK0EzOUU7WUkgU1lMTEFCTEUgTlJFUDtMbzswO0w7Ozs7O047Ozs7OworQTM5RjtZSSBTWUxMQUJMRSBOUlVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0EwO1lJIFNZTExBQkxFIE5SVVg7TG87MDtMOzs7OztOOzs7OzsKK0EzQTE7WUkgU1lMTEFCTEUgTlJVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0EyO1lJIFNZTExBQkxFIE5SVVA7TG87MDtMOzs7OztOOzs7OzsKK0EzQTM7WUkgU1lMTEFCTEUgTlJVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EzQTQ7WUkgU1lMTEFCTEUgTlJVUjtMbzswO0w7Ozs7O047Ozs7OworQTNBNTtZSSBTWUxMQUJMRSBOUllUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0E2O1lJIFNZTExBQkxFIE5SWVg7TG87MDtMOzs7OztOOzs7OzsKK0EzQTc7WUkgU1lMTEFCTEUgTlJZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0E4O1lJIFNZTExBQkxFIE5SWVA7TG87MDtMOzs7OztOOzs7OzsKK0EzQTk7WUkgU1lMTEFCTEUgTlJZUlg7TG87MDtMOzs7OztOOzs7OzsKK0EzQUE7WUkgU1lMTEFCTEUgTlJZUjtMbzswO0w7Ozs7O047Ozs7OworQTNBQjtZSSBTWUxMQUJMRSBTSEFUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0FDO1lJIFNZTExBQkxFIFNIQVg7TG87MDtMOzs7OztOOzs7OzsKK0EzQUQ7WUkgU1lMTEFCTEUgU0hBO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0FFO1lJIFNZTExBQkxFIFNIQVA7TG87MDtMOzs7OztOOzs7OzsKK0EzQUY7WUkgU1lMTEFCTEUgU0hVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EzQjA7WUkgU1lMTEFCTEUgU0hVTztMbzswO0w7Ozs7O047Ozs7OworQTNCMTtZSSBTWUxMQUJMRSBTSFVPUDtMbzswO0w7Ozs7O047Ozs7OworQTNCMjtZSSBTWUxMQUJMRSBTSE9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0IzO1lJIFNZTExBQkxFIFNIT1g7TG87MDtMOzs7OztOOzs7OzsKK0EzQjQ7WUkgU1lMTEFCTEUgU0hPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0I1O1lJIFNZTExBQkxFIFNIT1A7TG87MDtMOzs7OztOOzs7OzsKK0EzQjY7WUkgU1lMTEFCTEUgU0hFVDtMbzswO0w7Ozs7O047Ozs7OworQTNCNztZSSBTWUxMQUJMRSBTSEVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0I4O1lJIFNZTExBQkxFIFNIRTtMbzswO0w7Ozs7O047Ozs7OworQTNCOTtZSSBTWUxMQUJMRSBTSEVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0JBO1lJIFNZTExBQkxFIFNIVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzQkI7WUkgU1lMTEFCTEUgU0hVWDtMbzswO0w7Ozs7O047Ozs7OworQTNCQztZSSBTWUxMQUJMRSBTSFU7TG87MDtMOzs7OztOOzs7OzsKK0EzQkQ7WUkgU1lMTEFCTEUgU0hVUDtMbzswO0w7Ozs7O047Ozs7OworQTNCRTtZSSBTWUxMQUJMRSBTSFVSWDtMbzswO0w7Ozs7O047Ozs7OworQTNCRjtZSSBTWUxMQUJMRSBTSFVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0MwO1lJIFNZTExBQkxFIFNIWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzQzE7WUkgU1lMTEFCTEUgU0hZWDtMbzswO0w7Ozs7O047Ozs7OworQTNDMjtZSSBTWUxMQUJMRSBTSFk7TG87MDtMOzs7OztOOzs7OzsKK0EzQzM7WUkgU1lMTEFCTEUgU0hZUDtMbzswO0w7Ozs7O047Ozs7OworQTNDNDtZSSBTWUxMQUJMRSBTSFlSWDtMbzswO0w7Ozs7O047Ozs7OworQTNDNTtZSSBTWUxMQUJMRSBTSFlSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0M2O1lJIFNZTExBQkxFIFJBVDtMbzswO0w7Ozs7O047Ozs7OworQTNDNztZSSBTWUxMQUJMRSBSQVg7TG87MDtMOzs7OztOOzs7OzsKK0EzQzg7WUkgU1lMTEFCTEUgUkE7TG87MDtMOzs7OztOOzs7OzsKK0EzQzk7WUkgU1lMTEFCTEUgUkFQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0NBO1lJIFNZTExBQkxFIFJVT1g7TG87MDtMOzs7OztOOzs7OzsKK0EzQ0I7WUkgU1lMTEFCTEUgUlVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0NDO1lJIFNZTExBQkxFIFJVT1A7TG87MDtMOzs7OztOOzs7OzsKK0EzQ0Q7WUkgU1lMTEFCTEUgUk9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0NFO1lJIFNZTExBQkxFIFJPWDtMbzswO0w7Ozs7O047Ozs7OworQTNDRjtZSSBTWUxMQUJMRSBSTztMbzswO0w7Ozs7O047Ozs7OworQTNEMDtZSSBTWUxMQUJMRSBST1A7TG87MDtMOzs7OztOOzs7OzsKK0EzRDE7WUkgU1lMTEFCTEUgUkVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0QyO1lJIFNZTExBQkxFIFJFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0QzO1lJIFNZTExBQkxFIFJFUDtMbzswO0w7Ozs7O047Ozs7OworQTNENDtZSSBTWUxMQUJMRSBSVVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzRDU7WUkgU1lMTEFCTEUgUlVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0Q2O1lJIFNZTExBQkxFIFJVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0Q3O1lJIFNZTExBQkxFIFJVUDtMbzswO0w7Ozs7O047Ozs7OworQTNEODtZSSBTWUxMQUJMRSBSVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0Q5O1lJIFNZTExBQkxFIFJVUjtMbzswO0w7Ozs7O047Ozs7OworQTNEQTtZSSBTWUxMQUJMRSBSWVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzREI7WUkgU1lMTEFCTEUgUllYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0RDO1lJIFNZTExBQkxFIFJZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0REO1lJIFNZTExBQkxFIFJZUDtMbzswO0w7Ozs7O047Ozs7OworQTNERTtZSSBTWUxMQUJMRSBSWVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0RGO1lJIFNZTExBQkxFIFJZUjtMbzswO0w7Ozs7O047Ozs7OworQTNFMDtZSSBTWUxMQUJMRSBKSVQ7TG87MDtMOzs7OztOOzs7OzsKK0EzRTE7WUkgU1lMTEFCTEUgSklYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0UyO1lJIFNZTExBQkxFIEpJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0UzO1lJIFNZTExBQkxFIEpJUDtMbzswO0w7Ozs7O047Ozs7OworQTNFNDtZSSBTWUxMQUJMRSBKSUVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0U1O1lJIFNZTExBQkxFIEpJRVg7TG87MDtMOzs7OztOOzs7OzsKK0EzRTY7WUkgU1lMTEFCTEUgSklFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0U3O1lJIFNZTExBQkxFIEpJRVA7TG87MDtMOzs7OztOOzs7OzsKK0EzRTg7WUkgU1lMTEFCTEUgSlVPVDtMbzswO0w7Ozs7O047Ozs7OworQTNFOTtZSSBTWUxMQUJMRSBKVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0VBO1lJIFNZTExBQkxFIEpVTztMbzswO0w7Ozs7O047Ozs7OworQTNFQjtZSSBTWUxMQUJMRSBKVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0VDO1lJIFNZTExBQkxFIEpPVDtMbzswO0w7Ozs7O047Ozs7OworQTNFRDtZSSBTWUxMQUJMRSBKT1g7TG87MDtMOzs7OztOOzs7OzsKK0EzRUU7WUkgU1lMTEFCTEUgSk87TG87MDtMOzs7OztOOzs7OzsKK0EzRUY7WUkgU1lMTEFCTEUgSk9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0YwO1lJIFNZTExBQkxFIEpVVDtMbzswO0w7Ozs7O047Ozs7OworQTNGMTtZSSBTWUxMQUJMRSBKVVg7TG87MDtMOzs7OztOOzs7OzsKK0EzRjI7WUkgU1lMTEFCTEUgSlU7TG87MDtMOzs7OztOOzs7OzsKK0EzRjM7WUkgU1lMTEFCTEUgSlVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0Y0O1lJIFNZTExBQkxFIEpVUlg7TG87MDtMOzs7OztOOzs7OzsKK0EzRjU7WUkgU1lMTEFCTEUgSlVSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0Y2O1lJIFNZTExBQkxFIEpZVDtMbzswO0w7Ozs7O047Ozs7OworQTNGNztZSSBTWUxMQUJMRSBKWVg7TG87MDtMOzs7OztOOzs7OzsKK0EzRjg7WUkgU1lMTEFCTEUgSlk7TG87MDtMOzs7OztOOzs7OzsKK0EzRjk7WUkgU1lMTEFCTEUgSllQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0ZBO1lJIFNZTExBQkxFIEpZUlg7TG87MDtMOzs7OztOOzs7OzsKK0EzRkI7WUkgU1lMTEFCTEUgSllSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBM0ZDO1lJIFNZTExBQkxFIFFJVDtMbzswO0w7Ozs7O047Ozs7OworQTNGRDtZSSBTWUxMQUJMRSBRSVg7TG87MDtMOzs7OztOOzs7OzsKK0EzRkU7WUkgU1lMTEFCTEUgUUk7TG87MDtMOzs7OztOOzs7OzsKK0EzRkY7WUkgU1lMTEFCTEUgUUlQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDAwO1lJIFNZTExBQkxFIFFJRVQ7TG87MDtMOzs7OztOOzs7OzsKK0E0MDE7WUkgU1lMTEFCTEUgUUlFWDtMbzswO0w7Ozs7O047Ozs7OworQTQwMjtZSSBTWUxMQUJMRSBRSUU7TG87MDtMOzs7OztOOzs7OzsKK0E0MDM7WUkgU1lMTEFCTEUgUUlFUDtMbzswO0w7Ozs7O047Ozs7OworQTQwNDtZSSBTWUxMQUJMRSBRVU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDA1O1lJIFNZTExBQkxFIFFVT1g7TG87MDtMOzs7OztOOzs7OzsKK0E0MDY7WUkgU1lMTEFCTEUgUVVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDA3O1lJIFNZTExBQkxFIFFVT1A7TG87MDtMOzs7OztOOzs7OzsKK0E0MDg7WUkgU1lMTEFCTEUgUU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDA5O1lJIFNZTExBQkxFIFFPWDtMbzswO0w7Ozs7O047Ozs7OworQTQwQTtZSSBTWUxMQUJMRSBRTztMbzswO0w7Ozs7O047Ozs7OworQTQwQjtZSSBTWUxMQUJMRSBRT1A7TG87MDtMOzs7OztOOzs7OzsKK0E0MEM7WUkgU1lMTEFCTEUgUVVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDBEO1lJIFNZTExBQkxFIFFVWDtMbzswO0w7Ozs7O047Ozs7OworQTQwRTtZSSBTWUxMQUJMRSBRVTtMbzswO0w7Ozs7O047Ozs7OworQTQwRjtZSSBTWUxMQUJMRSBRVVA7TG87MDtMOzs7OztOOzs7OzsKK0E0MTA7WUkgU1lMTEFCTEUgUVVSWDtMbzswO0w7Ozs7O047Ozs7OworQTQxMTtZSSBTWUxMQUJMRSBRVVI7TG87MDtMOzs7OztOOzs7OzsKK0E0MTI7WUkgU1lMTEFCTEUgUVlUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDEzO1lJIFNZTExBQkxFIFFZWDtMbzswO0w7Ozs7O047Ozs7OworQTQxNDtZSSBTWUxMQUJMRSBRWTtMbzswO0w7Ozs7O047Ozs7OworQTQxNTtZSSBTWUxMQUJMRSBRWVA7TG87MDtMOzs7OztOOzs7OzsKK0E0MTY7WUkgU1lMTEFCTEUgUVlSWDtMbzswO0w7Ozs7O047Ozs7OworQTQxNztZSSBTWUxMQUJMRSBRWVI7TG87MDtMOzs7OztOOzs7OzsKK0E0MTg7WUkgU1lMTEFCTEUgSkpJVDtMbzswO0w7Ozs7O047Ozs7OworQTQxOTtZSSBTWUxMQUJMRSBKSklYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDFBO1lJIFNZTExBQkxFIEpKSTtMbzswO0w7Ozs7O047Ozs7OworQTQxQjtZSSBTWUxMQUJMRSBKSklQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDFDO1lJIFNZTExBQkxFIEpKSUVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDFEO1lJIFNZTExBQkxFIEpKSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDFFO1lJIFNZTExBQkxFIEpKSUU7TG87MDtMOzs7OztOOzs7OzsKK0E0MUY7WUkgU1lMTEFCTEUgSkpJRVA7TG87MDtMOzs7OztOOzs7OzsKK0E0MjA7WUkgU1lMTEFCTEUgSkpVT1g7TG87MDtMOzs7OztOOzs7OzsKK0E0MjE7WUkgU1lMTEFCTEUgSkpVTztMbzswO0w7Ozs7O047Ozs7OworQTQyMjtZSSBTWUxMQUJMRSBKSlVPUDtMbzswO0w7Ozs7O047Ozs7OworQTQyMztZSSBTWUxMQUJMRSBKSk9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDI0O1lJIFNZTExBQkxFIEpKT1g7TG87MDtMOzs7OztOOzs7OzsKK0E0MjU7WUkgU1lMTEFCTEUgSkpPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDI2O1lJIFNZTExBQkxFIEpKT1A7TG87MDtMOzs7OztOOzs7OzsKK0E0Mjc7WUkgU1lMTEFCTEUgSkpVVDtMbzswO0w7Ozs7O047Ozs7OworQTQyODtZSSBTWUxMQUJMRSBKSlVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDI5O1lJIFNZTExBQkxFIEpKVTtMbzswO0w7Ozs7O047Ozs7OworQTQyQTtZSSBTWUxMQUJMRSBKSlVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDJCO1lJIFNZTExBQkxFIEpKVVJYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDJDO1lJIFNZTExBQkxFIEpKVVI7TG87MDtMOzs7OztOOzs7OzsKK0E0MkQ7WUkgU1lMTEFCTEUgSkpZVDtMbzswO0w7Ozs7O047Ozs7OworQTQyRTtZSSBTWUxMQUJMRSBKSllYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDJGO1lJIFNZTExBQkxFIEpKWTtMbzswO0w7Ozs7O047Ozs7OworQTQzMDtZSSBTWUxMQUJMRSBKSllQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDMxO1lJIFNZTExBQkxFIE5KSVQ7TG87MDtMOzs7OztOOzs7OzsKK0E0MzI7WUkgU1lMTEFCTEUgTkpJWDtMbzswO0w7Ozs7O047Ozs7OworQTQzMztZSSBTWUxMQUJMRSBOSkk7TG87MDtMOzs7OztOOzs7OzsKK0E0MzQ7WUkgU1lMTEFCTEUgTkpJUDtMbzswO0w7Ozs7O047Ozs7OworQTQzNTtZSSBTWUxMQUJMRSBOSklFVDtMbzswO0w7Ozs7O047Ozs7OworQTQzNjtZSSBTWUxMQUJMRSBOSklFWDtMbzswO0w7Ozs7O047Ozs7OworQTQzNztZSSBTWUxMQUJMRSBOSklFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDM4O1lJIFNZTExBQkxFIE5KSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDM5O1lJIFNZTExBQkxFIE5KVU9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDNBO1lJIFNZTExBQkxFIE5KVU87TG87MDtMOzs7OztOOzs7OzsKK0E0M0I7WUkgU1lMTEFCTEUgTkpPVDtMbzswO0w7Ozs7O047Ozs7OworQTQzQztZSSBTWUxMQUJMRSBOSk9YO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDNEO1lJIFNZTExBQkxFIE5KTztMbzswO0w7Ozs7O047Ozs7OworQTQzRTtZSSBTWUxMQUJMRSBOSk9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDNGO1lJIFNZTExBQkxFIE5KVVg7TG87MDtMOzs7OztOOzs7OzsKK0E0NDA7WUkgU1lMTEFCTEUgTkpVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDQxO1lJIFNZTExBQkxFIE5KVVA7TG87MDtMOzs7OztOOzs7OzsKK0E0NDI7WUkgU1lMTEFCTEUgTkpVUlg7TG87MDtMOzs7OztOOzs7OzsKK0E0NDM7WUkgU1lMTEFCTEUgTkpVUjtMbzswO0w7Ozs7O047Ozs7OworQTQ0NDtZSSBTWUxMQUJMRSBOSllUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDQ1O1lJIFNZTExBQkxFIE5KWVg7TG87MDtMOzs7OztOOzs7OzsKK0E0NDY7WUkgU1lMTEFCTEUgTkpZO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDQ3O1lJIFNZTExBQkxFIE5KWVA7TG87MDtMOzs7OztOOzs7OzsKK0E0NDg7WUkgU1lMTEFCTEUgTkpZUlg7TG87MDtMOzs7OztOOzs7OzsKK0E0NDk7WUkgU1lMTEFCTEUgTkpZUjtMbzswO0w7Ozs7O047Ozs7OworQTQ0QTtZSSBTWUxMQUJMRSBOWUlUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDRCO1lJIFNZTExBQkxFIE5ZSVg7TG87MDtMOzs7OztOOzs7OzsKK0E0NEM7WUkgU1lMTEFCTEUgTllJO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDREO1lJIFNZTExBQkxFIE5ZSVA7TG87MDtMOzs7OztOOzs7OzsKK0E0NEU7WUkgU1lMTEFCTEUgTllJRVQ7TG87MDtMOzs7OztOOzs7OzsKK0E0NEY7WUkgU1lMTEFCTEUgTllJRVg7TG87MDtMOzs7OztOOzs7OzsKK0E0NTA7WUkgU1lMTEFCTEUgTllJRTtMbzswO0w7Ozs7O047Ozs7OworQTQ1MTtZSSBTWUxMQUJMRSBOWUlFUDtMbzswO0w7Ozs7O047Ozs7OworQTQ1MjtZSSBTWUxMQUJMRSBOWVVPWDtMbzswO0w7Ozs7O047Ozs7OworQTQ1MztZSSBTWUxMQUJMRSBOWVVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDU0O1lJIFNZTExBQkxFIE5ZVU9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDU1O1lJIFNZTExBQkxFIE5ZT1Q7TG87MDtMOzs7OztOOzs7OzsKK0E0NTY7WUkgU1lMTEFCTEUgTllPWDtMbzswO0w7Ozs7O047Ozs7OworQTQ1NztZSSBTWUxMQUJMRSBOWU87TG87MDtMOzs7OztOOzs7OzsKK0E0NTg7WUkgU1lMTEFCTEUgTllPUDtMbzswO0w7Ozs7O047Ozs7OworQTQ1OTtZSSBTWUxMQUJMRSBOWVVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDVBO1lJIFNZTExBQkxFIE5ZVVg7TG87MDtMOzs7OztOOzs7OzsKK0E0NUI7WUkgU1lMTEFCTEUgTllVO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDVDO1lJIFNZTExBQkxFIE5ZVVA7TG87MDtMOzs7OztOOzs7OzsKK0E0NUQ7WUkgU1lMTEFCTEUgWElUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDVFO1lJIFNZTExBQkxFIFhJWDtMbzswO0w7Ozs7O047Ozs7OworQTQ1RjtZSSBTWUxMQUJMRSBYSTtMbzswO0w7Ozs7O047Ozs7OworQTQ2MDtZSSBTWUxMQUJMRSBYSVA7TG87MDtMOzs7OztOOzs7OzsKK0E0NjE7WUkgU1lMTEFCTEUgWElFVDtMbzswO0w7Ozs7O047Ozs7OworQTQ2MjtZSSBTWUxMQUJMRSBYSUVYO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDYzO1lJIFNZTExBQkxFIFhJRTtMbzswO0w7Ozs7O047Ozs7OworQTQ2NDtZSSBTWUxMQUJMRSBYSUVQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDY1O1lJIFNZTExBQkxFIFhVT1g7TG87MDtMOzs7OztOOzs7OzsKK0E0NjY7WUkgU1lMTEFCTEUgWFVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDY3O1lJIFNZTExBQkxFIFhPVDtMbzswO0w7Ozs7O047Ozs7OworQTQ2ODtZSSBTWUxMQUJMRSBYT1g7TG87MDtMOzs7OztOOzs7OzsKK0E0Njk7WUkgU1lMTEFCTEUgWE87TG87MDtMOzs7OztOOzs7OzsKK0E0NkE7WUkgU1lMTEFCTEUgWE9QO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDZCO1lJIFNZTExBQkxFIFhZVDtMbzswO0w7Ozs7O047Ozs7OworQTQ2QztZSSBTWUxMQUJMRSBYWVg7TG87MDtMOzs7OztOOzs7OzsKK0E0NkQ7WUkgU1lMTEFCTEUgWFk7TG87MDtMOzs7OztOOzs7OzsKK0E0NkU7WUkgU1lMTEFCTEUgWFlQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDZGO1lJIFNZTExBQkxFIFhZUlg7TG87MDtMOzs7OztOOzs7OzsKK0E0NzA7WUkgU1lMTEFCTEUgWFlSO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDcxO1lJIFNZTExBQkxFIFlJVDtMbzswO0w7Ozs7O047Ozs7OworQTQ3MjtZSSBTWUxMQUJMRSBZSVg7TG87MDtMOzs7OztOOzs7OzsKK0E0NzM7WUkgU1lMTEFCTEUgWUk7TG87MDtMOzs7OztOOzs7OzsKK0E0NzQ7WUkgU1lMTEFCTEUgWUlQO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDc1O1lJIFNZTExBQkxFIFlJRVQ7TG87MDtMOzs7OztOOzs7OzsKK0E0NzY7WUkgU1lMTEFCTEUgWUlFWDtMbzswO0w7Ozs7O047Ozs7OworQTQ3NztZSSBTWUxMQUJMRSBZSUU7TG87MDtMOzs7OztOOzs7OzsKK0E0Nzg7WUkgU1lMTEFCTEUgWUlFUDtMbzswO0w7Ozs7O047Ozs7OworQTQ3OTtZSSBTWUxMQUJMRSBZVU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDdBO1lJIFNZTExBQkxFIFlVT1g7TG87MDtMOzs7OztOOzs7OzsKK0E0N0I7WUkgU1lMTEFCTEUgWVVPO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDdDO1lJIFNZTExBQkxFIFlVT1A7TG87MDtMOzs7OztOOzs7OzsKK0E0N0Q7WUkgU1lMTEFCTEUgWU9UO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDdFO1lJIFNZTExBQkxFIFlPWDtMbzswO0w7Ozs7O047Ozs7OworQTQ3RjtZSSBTWUxMQUJMRSBZTztMbzswO0w7Ozs7O047Ozs7OworQTQ4MDtZSSBTWUxMQUJMRSBZT1A7TG87MDtMOzs7OztOOzs7OzsKK0E0ODE7WUkgU1lMTEFCTEUgWVVUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDgyO1lJIFNZTExBQkxFIFlVWDtMbzswO0w7Ozs7O047Ozs7OworQTQ4MztZSSBTWUxMQUJMRSBZVTtMbzswO0w7Ozs7O047Ozs7OworQTQ4NDtZSSBTWUxMQUJMRSBZVVA7TG87MDtMOzs7OztOOzs7OzsKK0E0ODU7WUkgU1lMTEFCTEUgWVVSWDtMbzswO0w7Ozs7O047Ozs7OworQTQ4NjtZSSBTWUxMQUJMRSBZVVI7TG87MDtMOzs7OztOOzs7OzsKK0E0ODc7WUkgU1lMTEFCTEUgWVlUO0xvOzA7TDs7Ozs7Tjs7Ozs7CitBNDg4O1lJIFNZTExBQkxFIFlZWDtMbzswO0w7Ozs7O047Ozs7OworQTQ4OTtZSSBTWUxMQUJMRSBZWTtMbzswO0w7Ozs7O047Ozs7OworQTQ4QTtZSSBTWUxMQUJMRSBZWVA7TG87MDtMOzs7OztOOzs7OzsKK0E0OEI7WUkgU1lMTEFCTEUgWVlSWDtMbzswO0w7Ozs7O047Ozs7OworQTQ4QztZSSBTWUxMQUJMRSBZWVI7TG87MDtMOzs7OztOOzs7OzsKK0E0OTA7WUkgUkFESUNBTCBRT1Q7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNDkxO1lJIFJBRElDQUwgTEk7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNDkyO1lJIFJBRElDQUwgS0lUO1NvOzA7T047Ozs7O047Ozs7OworQTQ5MztZSSBSQURJQ0FMIE5ZSVA7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNDk0O1lJIFJBRElDQUwgQ1lQO1NvOzA7T047Ozs7O047Ozs7OworQTQ5NTtZSSBSQURJQ0FMIFNTSTtTbzswO09OOzs7OztOOzs7OzsKK0E0OTY7WUkgUkFESUNBTCBHR09QO1NvOzA7T047Ozs7O047Ozs7OworQTQ5NztZSSBSQURJQ0FMIEdFUDtTbzswO09OOzs7OztOOzs7OzsKK0E0OTg7WUkgUkFESUNBTCBNSTtTbzswO09OOzs7OztOOzs7OzsKK0E0OTk7WUkgUkFESUNBTCBIWElUO1NvOzA7T047Ozs7O047Ozs7OworQTQ5QTtZSSBSQURJQ0FMIExZUjtTbzswO09OOzs7OztOOzs7OzsKK0E0OUI7WUkgUkFESUNBTCBCQlVUO1NvOzA7T047Ozs7O047Ozs7OworQTQ5QztZSSBSQURJQ0FMIE1PUDtTbzswO09OOzs7OztOOzs7OzsKK0E0OUQ7WUkgUkFESUNBTCBZTztTbzswO09OOzs7OztOOzs7OzsKK0E0OUU7WUkgUkFESUNBTCBQVVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNDlGO1lJIFJBRElDQUwgSFhVTztTbzswO09OOzs7OztOOzs7OzsKK0E0QTA7WUkgUkFESUNBTCBUQVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEExO1lJIFJBRElDQUwgR0E7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEE0O1lJIFJBRElDQUwgRERVUjtTbzswO09OOzs7OztOOzs7OzsKK0E0QTU7WUkgUkFESUNBTCBCVVI7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEE2O1lJIFJBRElDQUwgR0dVTztTbzswO09OOzs7OztOOzs7OzsKK0E0QTc7WUkgUkFESUNBTCBOWU9QO1NvOzA7T047Ozs7O047Ozs7OworQTRBODtZSSBSQURJQ0FMIFRVO1NvOzA7T047Ozs7O047Ozs7OworQTRBOTtZSSBSQURJQ0FMIE9QO1NvOzA7T047Ozs7O047Ozs7OworQTRBQTtZSSBSQURJQ0FMIEpKVVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEFCO1lJIFJBRElDQUwgWk9UO1NvOzA7T047Ozs7O047Ozs7OworQTRBQztZSSBSQURJQ0FMIFBZVDtTbzswO09OOzs7OztOOzs7OzsKK0E0QUQ7WUkgUkFESUNBTCBITU87U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEFFO1lJIFJBRElDQUwgWUlUO1NvOzA7T047Ozs7O047Ozs7OworQTRBRjtZSSBSQURJQ0FMIFZVUjtTbzswO09OOzs7OztOOzs7OzsKK0E0QjA7WUkgUkFESUNBTCBTSFk7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEIxO1lJIFJBRElDQUwgVkVQO1NvOzA7T047Ozs7O047Ozs7OworQTRCMjtZSSBSQURJQ0FMIFpBO1NvOzA7T047Ozs7O047Ozs7OworQTRCMztZSSBSQURJQ0FMIEpPO1NvOzA7T047Ozs7O047Ozs7OworQTRCNTtZSSBSQURJQ0FMIEpKWTtTbzswO09OOzs7OztOOzs7OzsKK0E0QjY7WUkgUkFESUNBTCBHT1Q7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEI3O1lJIFJBRElDQUwgSkpJRTtTbzswO09OOzs7OztOOzs7OzsKK0E0Qjg7WUkgUkFESUNBTCBXTztTbzswO09OOzs7OztOOzs7OzsKK0E0Qjk7WUkgUkFESUNBTCBEVTtTbzswO09OOzs7OztOOzs7OzsKK0E0QkE7WUkgUkFESUNBTCBTSFVSO1NvOzA7T047Ozs7O047Ozs7OworQTRCQjtZSSBSQURJQ0FMIExJRTtTbzswO09OOzs7OztOOzs7OzsKK0E0QkM7WUkgUkFESUNBTCBDWTtTbzswO09OOzs7OztOOzs7OzsKK0E0QkQ7WUkgUkFESUNBTCBDVU9QO1NvOzA7T047Ozs7O047Ozs7OworQTRCRTtZSSBSQURJQ0FMIENJUDtTbzswO09OOzs7OztOOzs7OzsKK0E0QkY7WUkgUkFESUNBTCBIWE9QO1NvOzA7T047Ozs7O047Ozs7OworQTRDMDtZSSBSQURJQ0FMIFNIQVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEMyO1lJIFJBRElDQUwgU0hPUDtTbzswO09OOzs7OztOOzs7OzsKK0E0QzM7WUkgUkFESUNBTCBDSEU7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEM0O1lJIFJBRElDQUwgWlpJRVQ7U287MDtPTjs7Ozs7Tjs7Ozs7CitBNEM2O1lJIFJBRElDQUwgS0U7U287MDtPTjs7Ozs7Tjs7Ozs7CitBQzAwOzxIYW5ndWwgU3lsbGFibGUsIEZpcnN0PjtMbzswO0w7Ozs7O047Ozs7OworRDdBMzs8SGFuZ3VsIFN5bGxhYmxlLCBMYXN0PjtMbzswO0w7Ozs7O047Ozs7OworRDgwMDs8Tm9uIFByaXZhdGUgVXNlIEhpZ2ggU3Vycm9nYXRlLCBGaXJzdD47Q3M7MDtMOzs7OztOOzs7OzsKK0RCN0Y7PE5vbiBQcml2YXRlIFVzZSBIaWdoIFN1cnJvZ2F0ZSwgTGFzdD47Q3M7MDtMOzs7OztOOzs7OzsKK0RCODA7PFByaXZhdGUgVXNlIEhpZ2ggU3Vycm9nYXRlLCBGaXJzdD47Q3M7MDtMOzs7OztOOzs7OzsKK0RCRkY7PFByaXZhdGUgVXNlIEhpZ2ggU3Vycm9nYXRlLCBMYXN0PjtDczswO0w7Ozs7O047Ozs7OworREMwMDs8TG93IFN1cnJvZ2F0ZSwgRmlyc3Q+O0NzOzA7TDs7Ozs7Tjs7Ozs7CitERkZGOzxMb3cgU3Vycm9nYXRlLCBMYXN0PjtDczswO0w7Ozs7O047Ozs7OworRTAwMDs8UHJpdmF0ZSBVc2UsIEZpcnN0PjtDbzswO0w7Ozs7O047Ozs7OworRjhGRjs8UHJpdmF0ZSBVc2UsIExhc3Q+O0NvOzA7TDs7Ozs7Tjs7Ozs7CitGOTAwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTAwO0xvOzA7TDs4QzQ4Ozs7O047Ozs7OworRjkwMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwMTtMbzswO0w7NjZGNDs7OztOOzs7OzsKK0Y5MDI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MDI7TG87MDtMOzhFQ0E7Ozs7Tjs7Ozs7CitGOTAzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTAzO0xvOzA7TDs4Q0M4Ozs7O047Ozs7OworRjkwNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwNDtMbzswO0w7NkVEMTs7OztOOzs7OzsKK0Y5MDU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MDU7TG87MDtMOzRFMzI7Ozs7Tjs7Ozs7CitGOTA2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTA2O0xvOzA7TDs1M0U1Ozs7O047Ozs7OworRjkwNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwNztMbzswO0w7OUY5Qzs7OztOOzs7OzsKK0Y5MDg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MDg7TG87MDtMOzlGOUM7Ozs7Tjs7Ozs7CitGOTA5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTA5O0xvOzA7TDs1OTUxOzs7O047Ozs7OworRjkwQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwQTtMbzswO0w7OTFEMTs7OztOOzs7OzsKK0Y5MEI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MEI7TG87MDtMOzU1ODc7Ozs7Tjs7Ozs7CitGOTBDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTBDO0xvOzA7TDs1OTQ4Ozs7O047Ozs7OworRjkwRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkwRDtMbzswO0w7NjFGNjs7OztOOzs7OzsKK0Y5MEU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MEU7TG87MDtMOzc2Njk7Ozs7Tjs7Ozs7CitGOTBGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTBGO0xvOzA7TDs3Rjg1Ozs7O047Ozs7OworRjkxMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxMDtMbzswO0w7ODYzRjs7OztOOzs7OzsKK0Y5MTE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MTE7TG87MDtMOzg3QkE7Ozs7Tjs7Ozs7CitGOTEyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTEyO0xvOzA7TDs4OEY4Ozs7O047Ozs7OworRjkxMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxMztMbzswO0w7OTA4Rjs7OztOOzs7OzsKK0Y5MTQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MTQ7TG87MDtMOzZBMDI7Ozs7Tjs7Ozs7CitGOTE1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTE1O0xvOzA7TDs2RDFCOzs7O047Ozs7OworRjkxNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxNjtMbzswO0w7NzBEOTs7OztOOzs7OzsKK0Y5MTc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MTc7TG87MDtMOzczREU7Ozs7Tjs7Ozs7CitGOTE4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTE4O0xvOzA7TDs4NDNEOzs7O047Ozs7OworRjkxOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxOTtMbzswO0w7OTE2QTs7OztOOzs7OzsKK0Y5MUE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MUE7TG87MDtMOzk5RjE7Ozs7Tjs7Ozs7CitGOTFCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTFCO0xvOzA7TDs0RTgyOzs7O047Ozs7OworRjkxQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxQztMbzswO0w7NTM3NTs7OztOOzs7OzsKK0Y5MUQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MUQ7TG87MDtMOzZCMDQ7Ozs7Tjs7Ozs7CitGOTFFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTFFO0xvOzA7TDs3MjFCOzs7O047Ozs7OworRjkxRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkxRjtMbzswO0w7ODYyRDs7OztOOzs7OzsKK0Y5MjA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MjA7TG87MDtMOzlFMUU7Ozs7Tjs7Ozs7CitGOTIxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTIxO0xvOzA7TDs1RDUwOzs7O047Ozs7OworRjkyMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyMjtMbzswO0w7NkZFQjs7OztOOzs7OzsKK0Y5MjM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MjM7TG87MDtMOzg1Q0Q7Ozs7Tjs7Ozs7CitGOTI0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTI0O0xvOzA7TDs4OTY0Ozs7O047Ozs7OworRjkyNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyNTtMbzswO0w7NjJDOTs7OztOOzs7OzsKK0Y5MjY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MjY7TG87MDtMOzgxRDg7Ozs7Tjs7Ozs7CitGOTI3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTI3O0xvOzA7TDs4ODFGOzs7O047Ozs7OworRjkyODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyODtMbzswO0w7NUVDQTs7OztOOzs7OzsKK0Y5Mjk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Mjk7TG87MDtMOzY3MTc7Ozs7Tjs7Ozs7CitGOTJBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTJBO0xvOzA7TDs2RDZBOzs7O047Ozs7OworRjkyQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyQjtMbzswO0w7NzJGQzs7OztOOzs7OzsKK0Y5MkM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MkM7TG87MDtMOzkwQ0U7Ozs7Tjs7Ozs7CitGOTJEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTJEO0xvOzA7TDs0Rjg2Ozs7O047Ozs7OworRjkyRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkyRTtMbzswO0w7NTFCNzs7OztOOzs7OzsKK0Y5MkY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MkY7TG87MDtMOzUyREU7Ozs7Tjs7Ozs7CitGOTMwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTMwO0xvOzA7TDs2NEM0Ozs7O047Ozs7OworRjkzMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzMTtMbzswO0w7NkFEMzs7OztOOzs7OzsKK0Y5MzI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MzI7TG87MDtMOzcyMTA7Ozs7Tjs7Ozs7CitGOTMzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTMzO0xvOzA7TDs3NkU3Ozs7O047Ozs7OworRjkzNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzNDtMbzswO0w7ODAwMTs7OztOOzs7OzsKK0Y5MzU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5MzU7TG87MDtMOzg2MDY7Ozs7Tjs7Ozs7CitGOTM2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTM2O0xvOzA7TDs4NjVDOzs7O047Ozs7OworRjkzNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzNztMbzswO0w7OERFRjs7OztOOzs7OzsKK0Y5Mzg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Mzg7TG87MDtMOzk3MzI7Ozs7Tjs7Ozs7CitGOTM5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTM5O0xvOzA7TDs5QjZGOzs7O047Ozs7OworRjkzQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzQTtMbzswO0w7OURGQTs7OztOOzs7OzsKK0Y5M0I7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5M0I7TG87MDtMOzc4OEM7Ozs7Tjs7Ozs7CitGOTNDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTNDO0xvOzA7TDs3OTdGOzs7O047Ozs7OworRjkzRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjkzRDtMbzswO0w7N0RBMDs7OztOOzs7OzsKK0Y5M0U7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5M0U7TG87MDtMOzgzQzk7Ozs7Tjs7Ozs7CitGOTNGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTNGO0xvOzA7TDs5MzA0Ozs7O047Ozs7OworRjk0MDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0MDtMbzswO0w7OUU3Rjs7OztOOzs7OzsKK0Y5NDE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NDE7TG87MDtMOzhBRDY7Ozs7Tjs7Ozs7CitGOTQyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTQyO0xvOzA7TDs1OERGOzs7O047Ozs7OworRjk0MztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0MztMbzswO0w7NUYwNDs7OztOOzs7OzsKK0Y5NDQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NDQ7TG87MDtMOzdDNjA7Ozs7Tjs7Ozs7CitGOTQ1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTQ1O0xvOzA7TDs4MDdFOzs7O047Ozs7OworRjk0NjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0NjtMbzswO0w7NzI2Mjs7OztOOzs7OzsKK0Y5NDc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NDc7TG87MDtMOzc4Q0E7Ozs7Tjs7Ozs7CitGOTQ4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTQ4O0xvOzA7TDs4Q0MyOzs7O047Ozs7OworRjk0OTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0OTtMbzswO0w7OTZGNzs7OztOOzs7OzsKK0Y5NEE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NEE7TG87MDtMOzU4RDg7Ozs7Tjs7Ozs7CitGOTRCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTRCO0xvOzA7TDs1QzYyOzs7O047Ozs7OworRjk0QztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0QztMbzswO0w7NkExMzs7OztOOzs7OzsKK0Y5NEQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NEQ7TG87MDtMOzZEREE7Ozs7Tjs7Ozs7CitGOTRFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTRFO0xvOzA7TDs2RjBGOzs7O047Ozs7OworRjk0RjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk0RjtMbzswO0w7N0QyRjs7OztOOzs7OzsKK0Y5NTA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NTA7TG87MDtMOzdFMzc7Ozs7Tjs7Ozs7CitGOTUxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTUxO0xvOzA7TDs5NkZCOzs7O047Ozs7OworRjk1MjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1MjtMbzswO0w7NTJEMjs7OztOOzs7OzsKK0Y5NTM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NTM7TG87MDtMOzgwOEI7Ozs7Tjs7Ozs7CitGOTU0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTU0O0xvOzA7TDs1MURDOzs7O047Ozs7OworRjk1NTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1NTtMbzswO0w7NTFDQzs7OztOOzs7OzsKK0Y5NTY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NTY7TG87MDtMOzdBMUM7Ozs7Tjs7Ozs7CitGOTU3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTU3O0xvOzA7TDs3REJFOzs7O047Ozs7OworRjk1ODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1ODtMbzswO0w7ODNGMTs7OztOOzs7OzsKK0Y5NTk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NTk7TG87MDtMOzk2NzU7Ozs7Tjs7Ozs7CitGOTVBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTVBO0xvOzA7TDs4QjgwOzs7O047Ozs7OworRjk1QjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1QjtMbzswO0w7NjJDRjs7OztOOzs7OzsKK0Y5NUM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NUM7TG87MDtMOzZBMDI7Ozs7Tjs7Ozs7CitGOTVEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTVEO0xvOzA7TDs4QUZFOzs7O047Ozs7OworRjk1RTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk1RTtMbzswO0w7NEUzOTs7OztOOzs7OzsKK0Y5NUY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NUY7TG87MDtMOzVCRTc7Ozs7Tjs7Ozs7CitGOTYwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTYwO0xvOzA7TDs2MDEyOzs7O047Ozs7OworRjk2MTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2MTtMbzswO0w7NzM4Nzs7OztOOzs7OzsKK0Y5NjI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NjI7TG87MDtMOzc1NzA7Ozs7Tjs7Ozs7CitGOTYzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTYzO0xvOzA7TDs1MzE3Ozs7O047Ozs7OworRjk2NDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2NDtMbzswO0w7NzhGQjs7OztOOzs7OzsKK0Y5NjU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NjU7TG87MDtMOzRGQkY7Ozs7Tjs7Ozs7CitGOTY2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTY2O0xvOzA7TDs1RkE5Ozs7O047Ozs7OworRjk2NztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2NztMbzswO0w7NEUwRDs7OztOOzs7OzsKK0Y5Njg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Njg7TG87MDtMOzZDQ0M7Ozs7Tjs7Ozs7CitGOTY5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTY5O0xvOzA7TDs2NTc4Ozs7O047Ozs7OworRjk2QTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2QTtMbzswO0w7N0QyMjs7OztOOzs7OzsKK0Y5NkI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NkI7TG87MDtMOzUzQzM7Ozs7Tjs7Ozs7CitGOTZDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTZDO0xvOzA7TDs1ODVFOzs7O047Ozs7OworRjk2RDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk2RDtMbzswO0w7NzcwMTs7OztOOzs7OzsKK0Y5NkU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NkU7TG87MDtMOzg0NDk7Ozs7Tjs7Ozs7CitGOTZGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTZGO0xvOzA7TDs4QUFBOzs7O047Ozs7OworRjk3MDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3MDtMbzswO0w7NkJCQTs7OztOOzs7OzsKK0Y5NzE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NzE7TG87MDtMOzhGQjA7Ozs7Tjs7Ozs7CitGOTcyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTcyO0xvOzA7TDs2Qzg4Ozs7O047Ozs7OworRjk3MztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3MztMbzswO0w7NjJGRTs7OztOOzs7OzsKK0Y5NzQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5NzQ7TG87MDtMOzgyRTU7Ozs7Tjs7Ozs7CitGOTc1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTc1O0xvOzA7TDs2M0EwOzs7O047Ozs7OworRjk3NjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3NjtMbzswO0w7NzU2NTs7OztOOzs7OzsKK0Y5Nzc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Nzc7TG87MDtMOzRFQUU7Ozs7Tjs7Ozs7CitGOTc4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTc4O0xvOzA7TDs1MTY5Ozs7O047Ozs7OworRjk3OTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3OTtMbzswO0w7NTFDOTs7OztOOzs7OzsKK0Y5N0E7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5N0E7TG87MDtMOzY4ODE7Ozs7Tjs7Ozs7CitGOTdCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTdCO0xvOzA7TDs3Q0U3Ozs7O047Ozs7OworRjk3QztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3QztMbzswO0w7ODI2Rjs7OztOOzs7OzsKK0Y5N0Q7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5N0Q7TG87MDtMOzhBRDI7Ozs7Tjs7Ozs7CitGOTdFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTdFO0xvOzA7TDs5MUNGOzs7O047Ozs7OworRjk3RjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk3RjtMbzswO0w7NTJGNTs7OztOOzs7OzsKK0Y5ODA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5ODA7TG87MDtMOzU0NDI7Ozs7Tjs7Ozs7CitGOTgxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTgxO0xvOzA7TDs1OTczOzs7O047Ozs7OworRjk4MjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4MjtMbzswO0w7NUVFQzs7OztOOzs7OzsKK0Y5ODM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5ODM7TG87MDtMOzY1QzU7Ozs7Tjs7Ozs7CitGOTg0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTg0O0xvOzA7TDs2RkZFOzs7O047Ozs7OworRjk4NTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4NTtMbzswO0w7NzkyQTs7OztOOzs7OzsKK0Y5ODY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5ODY7TG87MDtMOzk1QUQ7Ozs7Tjs7Ozs7CitGOTg3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTg3O0xvOzA7TDs5QTZBOzs7O047Ozs7OworRjk4ODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4ODtMbzswO0w7OUU5Nzs7OztOOzs7OzsKK0Y5ODk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5ODk7TG87MDtMOzlFQ0U7Ozs7Tjs7Ozs7CitGOThBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOThBO0xvOzA7TDs1MjlCOzs7O047Ozs7OworRjk4QjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4QjtMbzswO0w7NjZDNjs7OztOOzs7OzsKK0Y5OEM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OEM7TG87MDtMOzZCNzc7Ozs7Tjs7Ozs7CitGOThEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOThEO0xvOzA7TDs4RjYyOzs7O047Ozs7OworRjk4RTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk4RTtMbzswO0w7NUU3NDs7OztOOzs7OzsKK0Y5OEY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OEY7TG87MDtMOzYxOTA7Ozs7Tjs7Ozs7CitGOTkwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTkwO0xvOzA7TDs2MjAwOzs7O047Ozs7OworRjk5MTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5MTtMbzswO0w7NjQ5QTs7OztOOzs7OzsKK0Y5OTI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OTI7TG87MDtMOzZGMjM7Ozs7Tjs7Ozs7CitGOTkzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTkzO0xvOzA7TDs3MTQ5Ozs7O047Ozs7OworRjk5NDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5NDtMbzswO0w7NzQ4OTs7OztOOzs7OzsKK0Y5OTU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OTU7TG87MDtMOzc5Q0E7Ozs7Tjs7Ozs7CitGOTk2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTk2O0xvOzA7TDs3REY0Ozs7O047Ozs7OworRjk5NztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5NztMbzswO0w7ODA2Rjs7OztOOzs7OzsKK0Y5OTg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OTg7TG87MDtMOzhGMjY7Ozs7Tjs7Ozs7CitGOTk5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTk5O0xvOzA7TDs4NEVFOzs7O047Ozs7OworRjk5QTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5QTtMbzswO0w7OTAyMzs7OztOOzs7OzsKK0Y5OUI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OUI7TG87MDtMOzkzNEE7Ozs7Tjs7Ozs7CitGOTlDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTlDO0xvOzA7TDs1MjE3Ozs7O047Ozs7OworRjk5RDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjk5RDtMbzswO0w7NTJBMzs7OztOOzs7OzsKK0Y5OUU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5OUU7TG87MDtMOzU0QkQ7Ozs7Tjs7Ozs7CitGOTlGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOTlGO0xvOzA7TDs3MEM4Ozs7O047Ozs7OworRjlBMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBMDtMbzswO0w7ODhDMjs7OztOOzs7OzsKK0Y5QTE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QTE7TG87MDtMOzhBQUE7Ozs7Tjs7Ozs7CitGOUEyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUEyO0xvOzA7TDs1RUM5Ozs7O047Ozs7OworRjlBMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBMztMbzswO0w7NUZGNTs7OztOOzs7OzsKK0Y5QTQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QTQ7TG87MDtMOzYzN0I7Ozs7Tjs7Ozs7CitGOUE1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUE1O0xvOzA7TDs2QkFFOzs7O047Ozs7OworRjlBNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBNjtMbzswO0w7N0MzRTs7OztOOzs7OzsKK0Y5QTc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QTc7TG87MDtMOzczNzU7Ozs7Tjs7Ozs7CitGOUE4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUE4O0xvOzA7TDs0RUU0Ozs7O047Ozs7OworRjlBOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBOTtMbzswO0w7NTZGOTs7OztOOzs7OzsKK0Y5QUE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QUE7TG87MDtMOzVCRTc7Ozs7Tjs7Ozs7CitGOUFCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUFCO0xvOzA7TDs1REJBOzs7O047Ozs7OworRjlBQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBQztMbzswO0w7NjAxQzs7OztOOzs7OzsKK0Y5QUQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QUQ7TG87MDtMOzczQjI7Ozs7Tjs7Ozs7CitGOUFFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUFFO0xvOzA7TDs3NDY5Ozs7O047Ozs7OworRjlBRjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlBRjtMbzswO0w7N0Y5QTs7OztOOzs7OzsKK0Y5QjA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QjA7TG87MDtMOzgwNDY7Ozs7Tjs7Ozs7CitGOUIxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUIxO0xvOzA7TDs5MjM0Ozs7O047Ozs7OworRjlCMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCMjtMbzswO0w7OTZGNjs7OztOOzs7OzsKK0Y5QjM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QjM7TG87MDtMOzk3NDg7Ozs7Tjs7Ozs7CitGOUI0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUI0O0xvOzA7TDs5ODE4Ozs7O047Ozs7OworRjlCNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCNTtMbzswO0w7NEY4Qjs7OztOOzs7OzsKK0Y5QjY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QjY7TG87MDtMOzc5QUU7Ozs7Tjs7Ozs7CitGOUI3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUI3O0xvOzA7TDs5MUI0Ozs7O047Ozs7OworRjlCODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCODtMbzswO0w7OTZCODs7OztOOzs7OzsKK0Y5Qjk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Qjk7TG87MDtMOzYwRTE7Ozs7Tjs7Ozs7CitGOUJBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUJBO0xvOzA7TDs0RTg2Ozs7O047Ozs7OworRjlCQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCQjtMbzswO0w7NTBEQTs7OztOOzs7OzsKK0Y5QkM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QkM7TG87MDtMOzVCRUU7Ozs7Tjs7Ozs7CitGOUJEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUJEO0xvOzA7TDs1QzNGOzs7O047Ozs7OworRjlCRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlCRTtMbzswO0w7NjU5OTs7OztOOzs7OzsKK0Y5QkY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QkY7TG87MDtMOzZBMDI7Ozs7Tjs7Ozs7CitGOUMwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUMwO0xvOzA7TDs3MUNFOzs7O047Ozs7OworRjlDMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDMTtMbzswO0w7NzY0Mjs7OztOOzs7OzsKK0Y5QzI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QzI7TG87MDtMOzg0RkM7Ozs7Tjs7Ozs7CitGOUMzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUMzO0xvOzA7TDs5MDdDOzs7O047Ozs7OworRjlDNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDNDtMbzswO0w7OUY4RDs7OztOOzs7OzsKK0Y5QzU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5QzU7TG87MDtMOzY2ODg7Ozs7Tjs7Ozs7CitGOUM2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUM2O0xvOzA7TDs5NjJFOzs7O047Ozs7OworRjlDNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDNztMbzswO0w7NTI4OTs7OztOOzs7OzsKK0Y5Qzg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Qzg7TG87MDtMOzY3N0I7Ozs7Tjs7Ozs7CitGOUM5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUM5O0xvOzA7TDs2N0YzOzs7O047Ozs7OworRjlDQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDQTtMbzswO0w7NkQ0MTs7OztOOzs7OzsKK0Y5Q0I7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Q0I7TG87MDtMOzZFOUM7Ozs7Tjs7Ozs7CitGOUNDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUNDO0xvOzA7TDs3NDA5Ozs7O047Ozs7OworRjlDRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlDRDtMbzswO0w7NzU1OTs7OztOOzs7OzsKK0Y5Q0U7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Q0U7TG87MDtMOzc4NkI7Ozs7Tjs7Ozs7CitGOUNGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUNGO0xvOzA7TDs3RDEwOzs7O047Ozs7OworRjlEMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEMDtMbzswO0w7OTg1RTs7OztOOzs7OzsKK0Y5RDE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RDE7TG87MDtMOzUxNkQ7Ozs7Tjs7Ozs7CitGOUQyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUQyO0xvOzA7TDs2MjJFOzs7O047Ozs7OworRjlEMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEMztMbzswO0w7OTY3ODs7OztOOzs7OzsKK0Y5RDQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RDQ7TG87MDtMOzUwMkI7Ozs7Tjs7Ozs7CitGOUQ1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUQ1O0xvOzA7TDs1RDE5Ozs7O047Ozs7OworRjlENjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlENjtMbzswO0w7NkRFQTs7OztOOzs7OzsKK0Y5RDc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RDc7TG87MDtMOzhGMkE7Ozs7Tjs7Ozs7CitGOUQ4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUQ4O0xvOzA7TDs1RjhCOzs7O047Ozs7OworRjlEOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEOTtMbzswO0w7NjE0NDs7OztOOzs7OzsKK0Y5REE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5REE7TG87MDtMOzY4MTc7Ozs7Tjs7Ozs7CitGOURCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOURCO0xvOzA7TDs3Mzg3Ozs7O047Ozs7OworRjlEQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlEQztMbzswO0w7OTY4Njs7OztOOzs7OzsKK0Y5REQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5REQ7TG87MDtMOzUyMjk7Ozs7Tjs7Ozs7CitGOURFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOURFO0xvOzA7TDs1NDBGOzs7O047Ozs7OworRjlERjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlERjtMbzswO0w7NUM2NTs7OztOOzs7OzsKK0Y5RTA7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RTA7TG87MDtMOzY2MTM7Ozs7Tjs7Ozs7CitGOUUxO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUUxO0xvOzA7TDs2NzRFOzs7O047Ozs7OworRjlFMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFMjtMbzswO0w7NjhBODs7OztOOzs7OzsKK0Y5RTM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RTM7TG87MDtMOzZDRTU7Ozs7Tjs7Ozs7CitGOUU0O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUU0O0xvOzA7TDs3NDA2Ozs7O047Ozs7OworRjlFNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFNTtMbzswO0w7NzVFMjs7OztOOzs7OzsKK0Y5RTY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RTY7TG87MDtMOzdGNzk7Ozs7Tjs7Ozs7CitGOUU3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUU3O0xvOzA7TDs4OENGOzs7O047Ozs7OworRjlFODtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFODtMbzswO0w7ODhFMTs7OztOOzs7OzsKK0Y5RTk7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RTk7TG87MDtMOzkxQ0M7Ozs7Tjs7Ozs7CitGOUVBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUVBO0xvOzA7TDs5NkUyOzs7O047Ozs7OworRjlFQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFQjtMbzswO0w7NTMzRjs7OztOOzs7OzsKK0Y5RUM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RUM7TG87MDtMOzZFQkE7Ozs7Tjs7Ozs7CitGOUVEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUVEO0xvOzA7TDs1NDFEOzs7O047Ozs7OworRjlFRTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlFRTtMbzswO0w7NzFEMDs7OztOOzs7OzsKK0Y5RUY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RUY7TG87MDtMOzc0OTg7Ozs7Tjs7Ozs7CitGOUYwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUYwO0xvOzA7TDs4NUZBOzs7O047Ozs7OworRjlGMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGMTtMbzswO0w7OTZBMzs7OztOOzs7OzsKK0Y5RjI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RjI7TG87MDtMOzlDNTc7Ozs7Tjs7Ozs7CitGOUYzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUYzO0xvOzA7TDs5RTlGOzs7O047Ozs7OworRjlGNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGNDtMbzswO0w7Njc5Nzs7OztOOzs7OzsKK0Y5RjU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RjU7TG87MDtMOzZEQ0I7Ozs7Tjs7Ozs7CitGOUY2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUY2O0xvOzA7TDs4MUU4Ozs7O047Ozs7OworRjlGNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGNztMbzswO0w7N0FDQjs7OztOOzs7OzsKK0Y5Rjg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5Rjg7TG87MDtMOzdCMjA7Ozs7Tjs7Ozs7CitGOUY5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUY5O0xvOzA7TDs3QzkyOzs7O047Ozs7OworRjlGQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGQTtMbzswO0w7NzJDMDs7OztOOzs7OzsKK0Y5RkI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RkI7TG87MDtMOzcwOTk7Ozs7Tjs7Ozs7CitGOUZDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUZDO0xvOzA7TDs4QjU4Ozs7O047Ozs7OworRjlGRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRjlGRDtMbzswO0w7NEVDMDs7OztOOzs7OzsKK0Y5RkU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUY5RkU7TG87MDtMOzgzMzY7Ozs7Tjs7Ozs7CitGOUZGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GOUZGO0xvOzA7TDs1MjNBOzs7O047Ozs7OworRkEwMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwMDtMbzswO0w7NTIwNzs7OztOOzs7OzsKK0ZBMDE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMDE7TG87MDtMOzVFQTY7Ozs7Tjs7Ozs7CitGQTAyO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTAyO0xvOzA7TDs2MkQzOzs7O047Ozs7OworRkEwMztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwMztMbzswO0w7N0NENjs7OztOOzs7OzsKK0ZBMDQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMDQ7TG87MDtMOzVCODU7Ozs7Tjs7Ozs7CitGQTA1O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTA1O0xvOzA7TDs2RDFFOzs7O047Ozs7OworRkEwNjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwNjtMbzswO0w7NjZCNDs7OztOOzs7OzsKK0ZBMDc7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMDc7TG87MDtMOzhGM0I7Ozs7Tjs7Ozs7CitGQTA4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTA4O0xvOzA7TDs4ODRDOzs7O047Ozs7OworRkEwOTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwOTtMbzswO0w7OTY0RDs7OztOOzs7OzsKK0ZBMEE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMEE7TG87MDtMOzg5OEI7Ozs7Tjs7Ozs7CitGQTBCO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTBCO0xvOzA7TDs1RUQzOzs7O047Ozs7OworRkEwQztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEwQztMbzswO0w7NTE0MDs7OztOOzs7OzsKK0ZBMEQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMEQ7TG87MDtMOzU1QzA7Ozs7Tjs7Ozs7CitGQTBFO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTBFO0xvOzA7TDs7Ozs7Tjs7Ozs7CitGQTBGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTBGO0xvOzA7TDs7Ozs7Tjs7Ozs7CitGQTEwO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTEwO0xvOzA7TDs1ODVBOzs7O047Ozs7OworRkExMTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExMTtMbzswO0w7Ozs7O047Ozs7OworRkExMjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExMjtMbzswO0w7NjY3NDs7OztOOzs7OzsKK0ZBMTM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMTM7TG87MDtMOzs7OztOOzs7OzsKK0ZBMTQ7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMTQ7TG87MDtMOzs7OztOOzs7OzsKK0ZBMTU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMTU7TG87MDtMOzUxREU7Ozs7Tjs7Ozs7CitGQTE2O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTE2O0xvOzA7TDs3MzJBOzs7O047Ozs7OworRkExNztDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExNztMbzswO0w7NzZDQTs7OztOOzs7OzsKK0ZBMTg7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMTg7TG87MDtMOzc5M0M7Ozs7Tjs7Ozs7CitGQTE5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTE5O0xvOzA7TDs3OTVFOzs7O047Ozs7OworRkExQTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExQTtMbzswO0w7Nzk2NTs7OztOOzs7OzsKK0ZBMUI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMUI7TG87MDtMOzc5OEY7Ozs7Tjs7Ozs7CitGQTFDO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTFDO0xvOzA7TDs5NzU2Ozs7O047Ozs7OworRkExRDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkExRDtMbzswO0w7N0NCRTs7OztOOzs7OzsKK0ZBMUU7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMUU7TG87MDtMOzdGQkQ7Ozs7Tjs7Ozs7CitGQTFGO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTFGO0xvOzA7TDs7Ozs7Tjs7Kjs7OworRkEyMDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyMDtMbzswO0w7ODYxMjs7OztOOzs7OzsKK0ZBMjE7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMjE7TG87MDtMOzs7OztOOzs7OzsKK0ZBMjI7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMjI7TG87MDtMOzhBRjg7Ozs7Tjs7Ozs7CitGQTIzO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTIzO0xvOzA7TDs7Ozs7Tjs7Kjs7OworRkEyNDtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyNDtMbzswO0w7Ozs7O047Ozs7OworRkEyNTtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyNTtMbzswO0w7OTAzODs7OztOOzs7OzsKK0ZBMjY7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMjY7TG87MDtMOzkwRkQ7Ozs7Tjs7Ozs7CitGQTI3O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTI3O0xvOzA7TDs7Ozs7Tjs7Ozs7CitGQTI4O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTI4O0xvOzA7TDs7Ozs7Tjs7Ozs7CitGQTI5O0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTI5O0xvOzA7TDs7Ozs7Tjs7Ozs7CitGQTJBO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTJBO0xvOzA7TDs5OEVGOzs7O047Ozs7OworRkEyQjtDSksgQ09NUEFUSUJJTElUWSBJREVPR1JBUEgtRkEyQjtMbzswO0w7OThGQzs7OztOOzs7OzsKK0ZBMkM7Q0pLIENPTVBBVElCSUxJVFkgSURFT0dSQVBILUZBMkM7TG87MDtMOzk5Mjg7Ozs7Tjs7Ozs7CitGQTJEO0NKSyBDT01QQVRJQklMSVRZIElERU9HUkFQSC1GQTJEO0xvOzA7TDs5REI0Ozs7O047Ozs7OworRkIwMDtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGRjtMbDswO0w7PGNvbXBhdD4gMDA2NiAwMDY2Ozs7O047Ozs7OworRkIwMTtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGSTtMbDswO0w7PGNvbXBhdD4gMDA2NiAwMDY5Ozs7O047Ozs7OworRkIwMjtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGTDtMbDswO0w7PGNvbXBhdD4gMDA2NiAwMDZDOzs7O047Ozs7OworRkIwMztMQVRJTiBTTUFMTCBMSUdBVFVSRSBGRkk7TGw7MDtMOzxjb21wYXQ+IDAwNjYgMDA2NiAwMDY5Ozs7O047Ozs7OworRkIwNDtMQVRJTiBTTUFMTCBMSUdBVFVSRSBGRkw7TGw7MDtMOzxjb21wYXQ+IDAwNjYgMDA2NiAwMDZDOzs7O047Ozs7OworRkIwNTtMQVRJTiBTTUFMTCBMSUdBVFVSRSBMT05HIFMgVDtMbDswO0w7PGNvbXBhdD4gMDE3RiAwMDc0Ozs7O047Ozs7OworRkIwNjtMQVRJTiBTTUFMTCBMSUdBVFVSRSBTVDtMbDswO0w7PGNvbXBhdD4gMDA3MyAwMDc0Ozs7O047Ozs7OworRkIxMztBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBNRU4gTk9XO0xsOzA7TDs8Y29tcGF0PiAwNTc0IDA1NzY7Ozs7Tjs7Ozs7CitGQjE0O0FSTUVOSUFOIFNNQUxMIExJR0FUVVJFIE1FTiBFQ0g7TGw7MDtMOzxjb21wYXQ+IDA1NzQgMDU2NTs7OztOOzs7OzsKK0ZCMTU7QVJNRU5JQU4gU01BTEwgTElHQVRVUkUgTUVOIElOSTtMbDswO0w7PGNvbXBhdD4gMDU3NCAwNTZCOzs7O047Ozs7OworRkIxNjtBUk1FTklBTiBTTUFMTCBMSUdBVFVSRSBWRVcgTk9XO0xsOzA7TDs8Y29tcGF0PiAwNTdFIDA1NzY7Ozs7Tjs7Ozs7CitGQjE3O0FSTUVOSUFOIFNNQUxMIExJR0FUVVJFIE1FTiBYRUg7TGw7MDtMOzxjb21wYXQ+IDA1NzQgMDU2RDs7OztOOzs7OzsKK0ZCMUQ7SEVCUkVXIExFVFRFUiBZT0QgV0lUSCBISVJJUTtMbzswO1I7MDVEOSAwNUI0Ozs7O047Ozs7OworRkIxRTtIRUJSRVcgUE9JTlQgSlVERU8tU1BBTklTSCBWQVJJS0E7TW47MjY7TlNNOzs7OztOO0hFQlJFVyBQT0lOVCBWQVJJS0E7Ozs7CitGQjFGO0hFQlJFVyBMSUdBVFVSRSBZSURESVNIIFlPRCBZT0QgUEFUQUg7TG87MDtSOzA1RjIgMDVCNzs7OztOOzs7OzsKK0ZCMjA7SEVCUkVXIExFVFRFUiBBTFRFUk5BVElWRSBBWUlOO0xvOzA7Ujs8Zm9udD4gMDVFMjs7OztOOzs7OzsKK0ZCMjE7SEVCUkVXIExFVFRFUiBXSURFIEFMRUY7TG87MDtSOzxmb250PiAwNUQwOzs7O047Ozs7OworRkIyMjtIRUJSRVcgTEVUVEVSIFdJREUgREFMRVQ7TG87MDtSOzxmb250PiAwNUQzOzs7O047Ozs7OworRkIyMztIRUJSRVcgTEVUVEVSIFdJREUgSEU7TG87MDtSOzxmb250PiAwNUQ0Ozs7O047Ozs7OworRkIyNDtIRUJSRVcgTEVUVEVSIFdJREUgS0FGO0xvOzA7Ujs8Zm9udD4gMDVEQjs7OztOOzs7OzsKK0ZCMjU7SEVCUkVXIExFVFRFUiBXSURFIExBTUVEO0xvOzA7Ujs8Zm9udD4gMDVEQzs7OztOOzs7OzsKK0ZCMjY7SEVCUkVXIExFVFRFUiBXSURFIEZJTkFMIE1FTTtMbzswO1I7PGZvbnQ+IDA1REQ7Ozs7Tjs7Ozs7CitGQjI3O0hFQlJFVyBMRVRURVIgV0lERSBSRVNIO0xvOzA7Ujs8Zm9udD4gMDVFODs7OztOOzs7OzsKK0ZCMjg7SEVCUkVXIExFVFRFUiBXSURFIFRBVjtMbzswO1I7PGZvbnQ+IDA1RUE7Ozs7Tjs7Ozs7CitGQjI5O0hFQlJFVyBMRVRURVIgQUxURVJOQVRJVkUgUExVUyBTSUdOO1NtOzA7RVQ7PGZvbnQ+IDAwMkI7Ozs7Tjs7Ozs7CitGQjJBO0hFQlJFVyBMRVRURVIgU0hJTiBXSVRIIFNISU4gRE9UO0xvOzA7UjswNUU5IDA1QzE7Ozs7Tjs7Ozs7CitGQjJCO0hFQlJFVyBMRVRURVIgU0hJTiBXSVRIIFNJTiBET1Q7TG87MDtSOzA1RTkgMDVDMjs7OztOOzs7OzsKK0ZCMkM7SEVCUkVXIExFVFRFUiBTSElOIFdJVEggREFHRVNIIEFORCBTSElOIERPVDtMbzswO1I7RkI0OSAwNUMxOzs7O047Ozs7OworRkIyRDtIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBEQUdFU0ggQU5EIFNJTiBET1Q7TG87MDtSO0ZCNDkgMDVDMjs7OztOOzs7OzsKK0ZCMkU7SEVCUkVXIExFVFRFUiBBTEVGIFdJVEggUEFUQUg7TG87MDtSOzA1RDAgMDVCNzs7OztOOzs7OzsKK0ZCMkY7SEVCUkVXIExFVFRFUiBBTEVGIFdJVEggUUFNQVRTO0xvOzA7UjswNUQwIDA1Qjg7Ozs7Tjs7Ozs7CitGQjMwO0hFQlJFVyBMRVRURVIgQUxFRiBXSVRIIE1BUElRO0xvOzA7UjswNUQwIDA1QkM7Ozs7Tjs7Ozs7CitGQjMxO0hFQlJFVyBMRVRURVIgQkVUIFdJVEggREFHRVNIO0xvOzA7UjswNUQxIDA1QkM7Ozs7Tjs7Ozs7CitGQjMyO0hFQlJFVyBMRVRURVIgR0lNRUwgV0lUSCBEQUdFU0g7TG87MDtSOzA1RDIgMDVCQzs7OztOOzs7OzsKK0ZCMzM7SEVCUkVXIExFVFRFUiBEQUxFVCBXSVRIIERBR0VTSDtMbzswO1I7MDVEMyAwNUJDOzs7O047Ozs7OworRkIzNDtIRUJSRVcgTEVUVEVSIEhFIFdJVEggTUFQSVE7TG87MDtSOzA1RDQgMDVCQzs7OztOOzs7OzsKK0ZCMzU7SEVCUkVXIExFVFRFUiBWQVYgV0lUSCBEQUdFU0g7TG87MDtSOzA1RDUgMDVCQzs7OztOOzs7OzsKK0ZCMzY7SEVCUkVXIExFVFRFUiBaQVlJTiBXSVRIIERBR0VTSDtMbzswO1I7MDVENiAwNUJDOzs7O047Ozs7OworRkIzODtIRUJSRVcgTEVUVEVSIFRFVCBXSVRIIERBR0VTSDtMbzswO1I7MDVEOCAwNUJDOzs7O047Ozs7OworRkIzOTtIRUJSRVcgTEVUVEVSIFlPRCBXSVRIIERBR0VTSDtMbzswO1I7MDVEOSAwNUJDOzs7O047Ozs7OworRkIzQTtIRUJSRVcgTEVUVEVSIEZJTkFMIEtBRiBXSVRIIERBR0VTSDtMbzswO1I7MDVEQSAwNUJDOzs7O047Ozs7OworRkIzQjtIRUJSRVcgTEVUVEVSIEtBRiBXSVRIIERBR0VTSDtMbzswO1I7MDVEQiAwNUJDOzs7O047Ozs7OworRkIzQztIRUJSRVcgTEVUVEVSIExBTUVEIFdJVEggREFHRVNIO0xvOzA7UjswNURDIDA1QkM7Ozs7Tjs7Ozs7CitGQjNFO0hFQlJFVyBMRVRURVIgTUVNIFdJVEggREFHRVNIO0xvOzA7UjswNURFIDA1QkM7Ozs7Tjs7Ozs7CitGQjQwO0hFQlJFVyBMRVRURVIgTlVOIFdJVEggREFHRVNIO0xvOzA7UjswNUUwIDA1QkM7Ozs7Tjs7Ozs7CitGQjQxO0hFQlJFVyBMRVRURVIgU0FNRUtIIFdJVEggREFHRVNIO0xvOzA7UjswNUUxIDA1QkM7Ozs7Tjs7Ozs7CitGQjQzO0hFQlJFVyBMRVRURVIgRklOQUwgUEUgV0lUSCBEQUdFU0g7TG87MDtSOzA1RTMgMDVCQzs7OztOOzs7OzsKK0ZCNDQ7SEVCUkVXIExFVFRFUiBQRSBXSVRIIERBR0VTSDtMbzswO1I7MDVFNCAwNUJDOzs7O047Ozs7OworRkI0NjtIRUJSRVcgTEVUVEVSIFRTQURJIFdJVEggREFHRVNIO0xvOzA7UjswNUU2IDA1QkM7Ozs7Tjs7Ozs7CitGQjQ3O0hFQlJFVyBMRVRURVIgUU9GIFdJVEggREFHRVNIO0xvOzA7UjswNUU3IDA1QkM7Ozs7Tjs7Ozs7CitGQjQ4O0hFQlJFVyBMRVRURVIgUkVTSCBXSVRIIERBR0VTSDtMbzswO1I7MDVFOCAwNUJDOzs7O047Ozs7OworRkI0OTtIRUJSRVcgTEVUVEVSIFNISU4gV0lUSCBEQUdFU0g7TG87MDtSOzA1RTkgMDVCQzs7OztOOzs7OzsKK0ZCNEE7SEVCUkVXIExFVFRFUiBUQVYgV0lUSCBEQUdFU0g7TG87MDtSOzA1RUEgMDVCQzs7OztOOzs7OzsKK0ZCNEI7SEVCUkVXIExFVFRFUiBWQVYgV0lUSCBIT0xBTTtMbzswO1I7MDVENSAwNUI5Ozs7O047Ozs7OworRkI0QztIRUJSRVcgTEVUVEVSIEJFVCBXSVRIIFJBRkU7TG87MDtSOzA1RDEgMDVCRjs7OztOOzs7OzsKK0ZCNEQ7SEVCUkVXIExFVFRFUiBLQUYgV0lUSCBSQUZFO0xvOzA7UjswNURCIDA1QkY7Ozs7Tjs7Ozs7CitGQjRFO0hFQlJFVyBMRVRURVIgUEUgV0lUSCBSQUZFO0xvOzA7UjswNUU0IDA1QkY7Ozs7Tjs7Ozs7CitGQjRGO0hFQlJFVyBMSUdBVFVSRSBBTEVGIExBTUVEO0xvOzA7Ujs8Y29tcGF0PiAwNUQwIDA1REM7Ozs7Tjs7Ozs7CitGQjUwO0FSQUJJQyBMRVRURVIgQUxFRiBXQVNMQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjcxOzs7O047Ozs7OworRkI1MTtBUkFCSUMgTEVUVEVSIEFMRUYgV0FTTEEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY3MTs7OztOOzs7OzsKK0ZCNTI7QVJBQklDIExFVFRFUiBCRUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2N0I7Ozs7Tjs7Ozs7CitGQjUzO0FSQUJJQyBMRVRURVIgQkVFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjdCOzs7O047Ozs7OworRkI1NDtBUkFCSUMgTEVUVEVSIEJFRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2N0I7Ozs7Tjs7Ozs7CitGQjU1O0FSQUJJQyBMRVRURVIgQkVFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2N0I7Ozs7Tjs7Ozs7CitGQjU2O0FSQUJJQyBMRVRURVIgUEVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2N0U7Ozs7Tjs7Ozs7CitGQjU3O0FSQUJJQyBMRVRURVIgUEVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2N0U7Ozs7Tjs7Ozs7CitGQjU4O0FSQUJJQyBMRVRURVIgUEVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjdFOzs7O047Ozs7OworRkI1OTtBUkFCSUMgTEVUVEVSIFBFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2N0U7Ozs7Tjs7Ozs7CitGQjVBO0FSQUJJQyBMRVRURVIgQkVIRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY4MDs7OztOOzs7OzsKK0ZCNUI7QVJBQklDIExFVFRFUiBCRUhFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjgwOzs7O047Ozs7OworRkI1QztBUkFCSUMgTEVUVEVSIEJFSEVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjgwOzs7O047Ozs7OworRkI1RDtBUkFCSUMgTEVUVEVSIEJFSEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY4MDs7OztOOzs7OzsKK0ZCNUU7QVJBQklDIExFVFRFUiBUVEVIRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY3QTs7OztOOzs7OzsKK0ZCNUY7QVJBQklDIExFVFRFUiBUVEVIRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY3QTs7OztOOzs7OzsKK0ZCNjA7QVJBQklDIExFVFRFUiBUVEVIRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2N0E7Ozs7Tjs7Ozs7CitGQjYxO0FSQUJJQyBMRVRURVIgVFRFSEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY3QTs7OztOOzs7OzsKK0ZCNjI7QVJBQklDIExFVFRFUiBURUhFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjdGOzs7O047Ozs7OworRkI2MztBUkFCSUMgTEVUVEVSIFRFSEVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2N0Y7Ozs7Tjs7Ozs7CitGQjY0O0FSQUJJQyBMRVRURVIgVEVIRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2N0Y7Ozs7Tjs7Ozs7CitGQjY1O0FSQUJJQyBMRVRURVIgVEVIRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjdGOzs7O047Ozs7OworRkI2NjtBUkFCSUMgTEVUVEVSIFRURUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY3OTs7OztOOzs7OzsKK0ZCNjc7QVJBQklDIExFVFRFUiBUVEVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2Nzk7Ozs7Tjs7Ozs7CitGQjY4O0FSQUJJQyBMRVRURVIgVFRFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY3OTs7OztOOzs7OzsKK0ZCNjk7QVJBQklDIExFVFRFUiBUVEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY3OTs7OztOOzs7OzsKK0ZCNkE7QVJBQklDIExFVFRFUiBWRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDZBNDs7OztOOzs7OzsKK0ZCNkI7QVJBQklDIExFVFRFUiBWRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZBNDs7OztOOzs7OzsKK0ZCNkM7QVJBQklDIExFVFRFUiBWRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2QTQ7Ozs7Tjs7Ozs7CitGQjZEO0FSQUJJQyBMRVRURVIgVkVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDZBNDs7OztOOzs7OzsKK0ZCNkU7QVJBQklDIExFVFRFUiBQRUhFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkE2Ozs7O047Ozs7OworRkI2RjtBUkFCSUMgTEVUVEVSIFBFSEVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2QTY7Ozs7Tjs7Ozs7CitGQjcwO0FSQUJJQyBMRVRURVIgUEVIRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2QTY7Ozs7Tjs7Ozs7CitGQjcxO0FSQUJJQyBMRVRURVIgUEVIRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNkE2Ozs7O047Ozs7OworRkI3MjtBUkFCSUMgTEVUVEVSIERZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY4NDs7OztOOzs7OzsKK0ZCNzM7QVJBQklDIExFVFRFUiBEWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2ODQ7Ozs7Tjs7Ozs7CitGQjc0O0FSQUJJQyBMRVRURVIgRFlFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY4NDs7OztOOzs7OzsKK0ZCNzU7QVJBQklDIExFVFRFUiBEWUVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY4NDs7OztOOzs7OzsKK0ZCNzY7QVJBQklDIExFVFRFUiBOWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2ODM7Ozs7Tjs7Ozs7CitGQjc3O0FSQUJJQyBMRVRURVIgTllFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjgzOzs7O047Ozs7OworRkI3ODtBUkFCSUMgTEVUVEVSIE5ZRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2ODM7Ozs7Tjs7Ozs7CitGQjc5O0FSQUJJQyBMRVRURVIgTllFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2ODM7Ozs7Tjs7Ozs7CitGQjdBO0FSQUJJQyBMRVRURVIgVENIRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY4Njs7OztOOzs7OzsKK0ZCN0I7QVJBQklDIExFVFRFUiBUQ0hFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjg2Ozs7O047Ozs7OworRkI3QztBUkFCSUMgTEVUVEVSIFRDSEVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjg2Ozs7O047Ozs7OworRkI3RDtBUkFCSUMgTEVUVEVSIFRDSEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY4Njs7OztOOzs7OzsKK0ZCN0U7QVJBQklDIExFVFRFUiBUQ0hFSEVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2ODc7Ozs7Tjs7Ozs7CitGQjdGO0FSQUJJQyBMRVRURVIgVENIRUhFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjg3Ozs7O047Ozs7OworRkI4MDtBUkFCSUMgTEVUVEVSIFRDSEVIRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2ODc7Ozs7Tjs7Ozs7CitGQjgxO0FSQUJJQyBMRVRURVIgVENIRUhFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2ODc7Ozs7Tjs7Ozs7CitGQjgyO0FSQUJJQyBMRVRURVIgRERBSEFMIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2OEQ7Ozs7Tjs7Ozs7CitGQjgzO0FSQUJJQyBMRVRURVIgRERBSEFMIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2OEQ7Ozs7Tjs7Ozs7CitGQjg0O0FSQUJJQyBMRVRURVIgREFIQUwgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY4Qzs7OztOOzs7OzsKK0ZCODU7QVJBQklDIExFVFRFUiBEQUhBTCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjhDOzs7O047Ozs7OworRkI4NjtBUkFCSUMgTEVUVEVSIERVTCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjhFOzs7O047Ozs7OworRkI4NztBUkFCSUMgTEVUVEVSIERVTCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjhFOzs7O047Ozs7OworRkI4ODtBUkFCSUMgTEVUVEVSIEREQUwgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY4ODs7OztOOzs7OzsKK0ZCODk7QVJBQklDIExFVFRFUiBEREFMIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2ODg7Ozs7Tjs7Ozs7CitGQjhBO0FSQUJJQyBMRVRURVIgSkVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2OTg7Ozs7Tjs7Ozs7CitGQjhCO0FSQUJJQyBMRVRURVIgSkVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2OTg7Ozs7Tjs7Ozs7CitGQjhDO0FSQUJJQyBMRVRURVIgUlJFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjkxOzs7O047Ozs7OworRkI4RDtBUkFCSUMgTEVUVEVSIFJSRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY5MTs7OztOOzs7OzsKK0ZCOEU7QVJBQklDIExFVFRFUiBLRUhFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkE5Ozs7O047Ozs7OworRkI4RjtBUkFCSUMgTEVUVEVSIEtFSEVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2QTk7Ozs7Tjs7Ozs7CitGQjkwO0FSQUJJQyBMRVRURVIgS0VIRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2QTk7Ozs7Tjs7Ozs7CitGQjkxO0FSQUJJQyBMRVRURVIgS0VIRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNkE5Ozs7O047Ozs7OworRkI5MjtBUkFCSUMgTEVUVEVSIEdBRiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkFGOzs7O047Ozs7OworRkI5MztBUkFCSUMgTEVUVEVSIEdBRiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNkFGOzs7O047Ozs7OworRkI5NDtBUkFCSUMgTEVUVEVSIEdBRiBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDZBRjs7OztOOzs7OzsKK0ZCOTU7QVJBQklDIExFVFRFUiBHQUYgTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNkFGOzs7O047Ozs7OworRkI5NjtBUkFCSUMgTEVUVEVSIEdVRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDZCMzs7OztOOzs7OzsKK0ZCOTc7QVJBQklDIExFVFRFUiBHVUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2QjM7Ozs7Tjs7Ozs7CitGQjk4O0FSQUJJQyBMRVRURVIgR1VFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDZCMzs7OztOOzs7OzsKK0ZCOTk7QVJBQklDIExFVFRFUiBHVUVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDZCMzs7OztOOzs7OzsKK0ZCOUE7QVJBQklDIExFVFRFUiBOR09FSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkIxOzs7O047Ozs7OworRkI5QjtBUkFCSUMgTEVUVEVSIE5HT0VIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2QjE7Ozs7Tjs7Ozs7CitGQjlDO0FSQUJJQyBMRVRURVIgTkdPRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2QjE7Ozs7Tjs7Ozs7CitGQjlEO0FSQUJJQyBMRVRURVIgTkdPRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNkIxOzs7O047Ozs7OworRkI5RTtBUkFCSUMgTEVUVEVSIE5PT04gR0hVTk5BIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2QkE7Ozs7Tjs7Ozs7CitGQjlGO0FSQUJJQyBMRVRURVIgTk9PTiBHSFVOTkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZCQTs7OztOOzs7OzsKK0ZCQTA7QVJBQklDIExFVFRFUiBSTk9PTiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkJCOzs7O047Ozs7OworRkJBMTtBUkFCSUMgTEVUVEVSIFJOT09OIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2QkI7Ozs7Tjs7Ozs7CitGQkEyO0FSQUJJQyBMRVRURVIgUk5PT04gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2QkI7Ozs7Tjs7Ozs7CitGQkEzO0FSQUJJQyBMRVRURVIgUk5PT04gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNkJCOzs7O047Ozs7OworRkJBNDtBUkFCSUMgTEVUVEVSIEhFSCBXSVRIIFlFSCBBQk9WRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkMwOzs7O047Ozs7OworRkJBNTtBUkFCSUMgTEVUVEVSIEhFSCBXSVRIIFlFSCBBQk9WRSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNkMwOzs7O047Ozs7OworRkJBNjtBUkFCSUMgTEVUVEVSIEhFSCBHT0FMIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2QzE7Ozs7Tjs7Ozs7CitGQkE3O0FSQUJJQyBMRVRURVIgSEVIIEdPQUwgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZDMTs7OztOOzs7OzsKK0ZCQTg7QVJBQklDIExFVFRFUiBIRUggR09BTCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDZDMTs7OztOOzs7OzsKK0ZCQTk7QVJBQklDIExFVFRFUiBIRUggR09BTCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2QzE7Ozs7Tjs7Ozs7CitGQkFBO0FSQUJJQyBMRVRURVIgSEVIIERPQUNIQVNITUVFIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2QkU7Ozs7Tjs7Ozs7CitGQkFCO0FSQUJJQyBMRVRURVIgSEVIIERPQUNIQVNITUVFIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2QkU7Ozs7Tjs7Ozs7CitGQkFDO0FSQUJJQyBMRVRURVIgSEVIIERPQUNIQVNITUVFIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNkJFOzs7O047Ozs7OworRkJBRDtBUkFCSUMgTEVUVEVSIEhFSCBET0FDSEFTSE1FRSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2QkU7Ozs7Tjs7Ozs7CitGQkFFO0FSQUJJQyBMRVRURVIgWUVIIEJBUlJFRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkQyOzs7O047Ozs7OworRkJBRjtBUkFCSUMgTEVUVEVSIFlFSCBCQVJSRUUgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZEMjs7OztOOzs7OzsKK0ZCQjA7QVJBQklDIExFVFRFUiBZRUggQkFSUkVFIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDZEMzs7OztOOzs7OzsKK0ZCQjE7QVJBQklDIExFVFRFUiBZRUggQkFSUkVFIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZEMzs7OztOOzs7OzsKK0ZCRDM7QVJBQklDIExFVFRFUiBORyBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkFEOzs7O047Ozs7OworRkJENDtBUkFCSUMgTEVUVEVSIE5HIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2QUQ7Ozs7Tjs7Ozs7CitGQkQ1O0FSQUJJQyBMRVRURVIgTkcgSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2QUQ7Ozs7Tjs7Ozs7CitGQkQ2O0FSQUJJQyBMRVRURVIgTkcgTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNkFEOzs7O047Ozs7OworRkJENztBUkFCSUMgTEVUVEVSIFUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDZDNzs7OztOOzs7OzsKK0ZCRDg7QVJBQklDIExFVFRFUiBVIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2Qzc7Ozs7Tjs7Ozs7CitGQkQ5O0FSQUJJQyBMRVRURVIgT0UgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDZDNjs7OztOOzs7OzsKK0ZCREE7QVJBQklDIExFVFRFUiBPRSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNkM2Ozs7O047Ozs7OworRkJEQjtBUkFCSUMgTEVUVEVSIFlVIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2Qzg7Ozs7Tjs7Ozs7CitGQkRDO0FSQUJJQyBMRVRURVIgWVUgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZDODs7OztOOzs7OzsKK0ZCREQ7QVJBQklDIExFVFRFUiBVIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY3Nzs7OztOOzs7OzsKK0ZCREU7QVJBQklDIExFVFRFUiBWRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkNCOzs7O047Ozs7OworRkJERjtBUkFCSUMgTEVUVEVSIFZFIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2Q0I7Ozs7Tjs7Ozs7CitGQkUwO0FSQUJJQyBMRVRURVIgS0lSR0hJWiBPRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkM1Ozs7O047Ozs7OworRkJFMTtBUkFCSUMgTEVUVEVSIEtJUkdISVogT0UgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDZDNTs7OztOOzs7OzsKK0ZCRTI7QVJBQklDIExFVFRFUiBLSVJHSElaIFlVIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2Qzk7Ozs7Tjs7Ozs7CitGQkUzO0FSQUJJQyBMRVRURVIgS0lSR0hJWiBZVSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNkM5Ozs7O047Ozs7OworRkJFNDtBUkFCSUMgTEVUVEVSIEUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDZEMDs7OztOOzs7OzsKK0ZCRTU7QVJBQklDIExFVFRFUiBFIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2RDA7Ozs7Tjs7Ozs7CitGQkU2O0FSQUJJQyBMRVRURVIgRSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDZEMDs7OztOOzs7OzsKK0ZCRTc7QVJBQklDIExFVFRFUiBFIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDZEMDs7OztOOzs7OzsKK0ZCRTg7QVJBQklDIExFVFRFUiBVSUdIVVIgS0FaQUtIIEtJUkdISVogQUxFRiBNQUtTVVJBIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ5Ozs7O047Ozs7OworRkJFOTtBUkFCSUMgTEVUVEVSIFVJR0hVUiBLQVpBS0ggS0lSR0hJWiBBTEVGIE1BS1NVUkEgTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjQ5Ozs7O047Ozs7OworRkJFQTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBTEVGIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjYgMDYyNzs7OztOOzs7OzsKK0ZCRUI7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUxFRiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI2IDA2Mjc7Ozs7Tjs7Ozs7CitGQkVDO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFFIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjYgMDZENTs7OztOOzs7OzsKK0ZCRUQ7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggQUUgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNiAwNkQ1Ozs7O047Ozs7OworRkJFRTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBXQVcgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyNiAwNjQ4Ozs7O047Ozs7OworRkJFRjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBXQVcgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNiAwNjQ4Ozs7O047Ozs7OworRkJGMDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBVIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjYgMDZDNzs7OztOOzs7OzsKK0ZCRjE7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggVSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI2IDA2Qzc7Ozs7Tjs7Ozs7CitGQkYyO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIE9FIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjYgMDZDNjs7OztOOzs7OzsKK0ZCRjM7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggT0UgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNiAwNkM2Ozs7O047Ozs7OworRkJGNDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBZVSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI2IDA2Qzg7Ozs7Tjs7Ozs7CitGQkY1O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFlVIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjYgMDZDODs7OztOOzs7OzsKK0ZCRjY7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI2IDA2RDA7Ozs7Tjs7Ozs7CitGQkY3O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEUgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNiAwNkQwOzs7O047Ozs7OworRkJGODtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBFIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjI2IDA2RDA7Ozs7Tjs7Ozs7CitGQkY5O0FSQUJJQyBMSUdBVFVSRSBVSUdIVVIgS0lSR0hJWiBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI2IDA2NDk7Ozs7Tjs7Ozs7CitGQkZBO0FSQUJJQyBMSUdBVFVSRSBVSUdIVVIgS0lSR0hJWiBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI2IDA2NDk7Ozs7Tjs7Ozs7CitGQkZCO0FSQUJJQyBMSUdBVFVSRSBVSUdIVVIgS0lSR0hJWiBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyNiAwNjQ5Ozs7O047Ozs7OworRkJGQztBUkFCSUMgTEVUVEVSIEZBUlNJIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNkNDOzs7O047Ozs7OworRkJGRDtBUkFCSUMgTEVUVEVSIEZBUlNJIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNkNDOzs7O047Ozs7OworRkJGRTtBUkFCSUMgTEVUVEVSIEZBUlNJIFlFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDZDQzs7OztOOzs7OzsKK0ZCRkY7QVJBQklDIExFVFRFUiBGQVJTSSBZRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNkNDOzs7O047Ozs7OworRkMwMDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjYgMDYyQzs7OztOOzs7OzsKK0ZDMDE7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjYgMDYyRDs7OztOOzs7OzsKK0ZDMDI7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI2IDA2NDU7Ozs7Tjs7Ozs7CitGQzAzO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI2IDA2NDk7Ozs7Tjs7Ozs7CitGQzA0O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI2IDA2NEE7Ozs7Tjs7Ozs7CitGQzA1O0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjggMDYyQzs7OztOOzs7OzsKK0ZDMDY7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI4IDA2MkQ7Ozs7Tjs7Ozs7CitGQzA3O0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjggMDYyRTs7OztOOzs7OzsKK0ZDMDg7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyOCAwNjQ1Ozs7O047Ozs7OworRkMwOTtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjggMDY0OTs7OztOOzs7OzsKK0ZDMEE7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI4IDA2NEE7Ozs7Tjs7Ozs7CitGQzBCO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkEgMDYyQzs7OztOOzs7OzsKK0ZDMEM7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJBIDA2MkQ7Ozs7Tjs7Ozs7CitGQzBEO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkEgMDYyRTs7OztOOzs7OzsKK0ZDMEU7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyQSAwNjQ1Ozs7O047Ozs7OworRkMwRjtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkEgMDY0OTs7OztOOzs7OzsKK0ZDMTA7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJBIDA2NEE7Ozs7Tjs7Ozs7CitGQzExO0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJCIDA2MkM7Ozs7Tjs7Ozs7CitGQzEyO0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJCIDA2NDU7Ozs7Tjs7Ozs7CitGQzEzO0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkIgMDY0OTs7OztOOzs7OzsKK0ZDMTQ7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyQiAwNjRBOzs7O047Ozs7OworRkMxNTtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJDIDA2MkQ7Ozs7Tjs7Ozs7CitGQzE2O0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGQzE3O0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkQgMDYyQzs7OztOOzs7OzsKK0ZDMTg7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyRCAwNjQ1Ozs7O047Ozs7OworRkMxOTtBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyRSAwNjJDOzs7O047Ozs7OworRkMxQTtBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJFIDA2MkQ7Ozs7Tjs7Ozs7CitGQzFCO0FSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJFIDA2NDU7Ozs7Tjs7Ozs7CitGQzFDO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjMzIDA2MkM7Ozs7Tjs7Ozs7CitGQzFEO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzMgMDYyRDs7OztOOzs7OzsKK0ZDMUU7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzMgMDYyRTs7OztOOzs7OzsKK0ZDMUY7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzMgMDY0NTs7OztOOzs7OzsKK0ZDMjA7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM1IDA2MkQ7Ozs7Tjs7Ozs7CitGQzIxO0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzUgMDY0NTs7OztOOzs7OzsKK0ZDMjI7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNiAwNjJDOzs7O047Ozs7OworRkMyMztBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzYgMDYyRDs7OztOOzs7OzsKK0ZDMjQ7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNiAwNjJFOzs7O047Ozs7OworRkMyNTtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM2IDA2NDU7Ozs7Tjs7Ozs7CitGQzI2O0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNyAwNjJEOzs7O047Ozs7OworRkMyNztBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM3IDA2NDU7Ozs7Tjs7Ozs7CitGQzI4O0FSQUJJQyBMSUdBVFVSRSBaQUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzggMDY0NTs7OztOOzs7OzsKK0ZDMjk7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzOSAwNjJDOzs7O047Ozs7OworRkMyQTtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM5IDA2NDU7Ozs7Tjs7Ozs7CitGQzJCO0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzQSAwNjJDOzs7O047Ozs7OworRkMyQztBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2M0EgMDY0NTs7OztOOzs7OzsKK0ZDMkQ7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0MSAwNjJDOzs7O047Ozs7OworRkMyRTtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDEgMDYyRDs7OztOOzs7OzsKK0ZDMkY7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0MSAwNjJFOzs7O047Ozs7OworRkMzMDtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQxIDA2NDU7Ozs7Tjs7Ozs7CitGQzMxO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0MSAwNjQ5Ozs7O047Ozs7OworRkMzMjtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDEgMDY0QTs7OztOOzs7OzsKK0ZDMzM7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQyIDA2MkQ7Ozs7Tjs7Ozs7CitGQzM0O0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDIgMDY0NTs7OztOOzs7OzsKK0ZDMzU7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQyIDA2NDk7Ozs7Tjs7Ozs7CitGQzM2O0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0MiAwNjRBOzs7O047Ozs7OworRkMzNztBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggQUxFRiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQzIDA2Mjc7Ozs7Tjs7Ozs7CitGQzM4O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDMgMDYyQzs7OztOOzs7OzsKK0ZDMzk7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQzIDA2MkQ7Ozs7Tjs7Ozs7CitGQzNBO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBLSEFIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDMgMDYyRTs7OztOOzs7OzsKK0ZDM0I7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIExBTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQzIDA2NDQ7Ozs7Tjs7Ozs7CitGQzNDO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDMgMDY0NTs7OztOOzs7OzsKK0ZDM0Q7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQzIDA2NDk7Ozs7Tjs7Ozs7CitGQzNFO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0MyAwNjRBOzs7O047Ozs7OworRkMzRjtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ0IDA2MkM7Ozs7Tjs7Ozs7CitGQzQwO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NCAwNjJEOzs7O047Ozs7OworRkM0MTtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ0IDA2MkU7Ozs7Tjs7Ozs7CitGQzQyO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDQgMDY0NTs7OztOOzs7OzsKK0ZDNDM7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ0IDA2NDk7Ozs7Tjs7Ozs7CitGQzQ0O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NCAwNjRBOzs7O047Ozs7OworRkM0NTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NSAwNjJDOzs7O047Ozs7OworRkM0NjtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGQzQ3O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ1IDA2MkU7Ozs7Tjs7Ozs7CitGQzQ4O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGQzQ5O0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDUgMDY0OTs7OztOOzs7OzsKK0ZDNEE7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NSAwNjRBOzs7O047Ozs7OworRkM0QjtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NiAwNjJDOzs7O047Ozs7OworRkM0QztBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ2IDA2MkQ7Ozs7Tjs7Ozs7CitGQzREO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ2IDA2MkU7Ozs7Tjs7Ozs7CitGQzRFO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ2IDA2NDU7Ozs7Tjs7Ozs7CitGQzRGO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDYgMDY0OTs7OztOOzs7OzsKK0ZDNTA7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NiAwNjRBOzs7O047Ozs7OworRkM1MTtBUkFCSUMgTElHQVRVUkUgSEVIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ3IDA2MkM7Ozs7Tjs7Ozs7CitGQzUyO0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDcgMDY0NTs7OztOOzs7OzsKK0ZDNTM7QVJBQklDIExJR0FUVVJFIEhFSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ3IDA2NDk7Ozs7Tjs7Ozs7CitGQzU0O0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NyAwNjRBOzs7O047Ozs7OworRkM1NTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjRBIDA2MkM7Ozs7Tjs7Ozs7CitGQzU2O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0QSAwNjJEOzs7O047Ozs7OworRkM1NztBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjRBIDA2MkU7Ozs7Tjs7Ozs7CitGQzU4O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NEEgMDY0NTs7OztOOzs7OzsKK0ZDNTk7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjRBIDA2NDk7Ozs7Tjs7Ozs7CitGQzVBO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0QSAwNjRBOzs7O047Ozs7OworRkM1QjtBUkFCSUMgTElHQVRVUkUgVEhBTCBXSVRIIFNVUEVSU0NSSVBUIEFMRUYgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzMCAwNjcwOzs7O047Ozs7OworRkM1QztBUkFCSUMgTElHQVRVUkUgUkVIIFdJVEggU1VQRVJTQ1JJUFQgQUxFRiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjMxIDA2NzA7Ozs7Tjs7Ozs7CitGQzVEO0FSQUJJQyBMSUdBVFVSRSBBTEVGIE1BS1NVUkEgV0lUSCBTVVBFUlNDUklQVCBBTEVGIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDkgMDY3MDs7OztOOzs7OzsKK0ZDNUU7QVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIERBTU1BVEFOIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDAwMjAgMDY0QyAwNjUxOzs7O047Ozs7OworRkM1RjtBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggS0FTUkFUQU4gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDAyMCAwNjREIDA2NTE7Ozs7Tjs7Ozs7CitGQzYwO0FSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBGQVRIQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwMDIwIDA2NEUgMDY1MTs7OztOOzs7OzsKK0ZDNjE7QVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIERBTU1BIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDAwMjAgMDY0RiAwNjUxOzs7O047Ozs7OworRkM2MjtBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggS0FTUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDAyMCAwNjUwIDA2NTE7Ozs7Tjs7Ozs7CitGQzYzO0FSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBTVVBFUlNDUklQVCBBTEVGIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDAwMjAgMDY1MSAwNjcwOzs7O047Ozs7OworRkM2NDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBSRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNiAwNjMxOzs7O047Ozs7OworRkM2NTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBaQUlOIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjYgMDYzMjs7OztOOzs7OzsKK0ZDNjY7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI2IDA2NDU7Ozs7Tjs7Ozs7CitGQzY3O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIE5PT04gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNiAwNjQ2Ozs7O047Ozs7OworRkM2ODtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNiAwNjQ5Ozs7O047Ozs7OworRkM2OTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNiAwNjRBOzs7O047Ozs7OworRkM2QTtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggUkVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjggMDYzMTs7OztOOzs7OzsKK0ZDNkI7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIFpBSU4gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyOCAwNjMyOzs7O047Ozs7OworRkM2QztBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI4IDA2NDU7Ozs7Tjs7Ozs7CitGQzZEO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBOT09OIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjggMDY0Njs7OztOOzs7OzsKK0ZDNkU7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI4IDA2NDk7Ozs7Tjs7Ozs7CitGQzZGO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyOCAwNjRBOzs7O047Ozs7OworRkM3MDtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggUkVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkEgMDYzMTs7OztOOzs7OzsKK0ZDNzE7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIFpBSU4gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQSAwNjMyOzs7O047Ozs7OworRkM3MjtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJBIDA2NDU7Ozs7Tjs7Ozs7CitGQzczO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBOT09OIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkEgMDY0Njs7OztOOzs7OzsKK0ZDNzQ7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJBIDA2NDk7Ozs7Tjs7Ozs7CitGQzc1O0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQSAwNjRBOzs7O047Ozs7OworRkM3NjtBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIFJFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJCIDA2MzE7Ozs7Tjs7Ozs7CitGQzc3O0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggWkFJTiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJCIDA2MzI7Ozs7Tjs7Ozs7CitGQzc4O0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJCIDA2NDU7Ozs7Tjs7Ozs7CitGQzc5O0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggTk9PTiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJCIDA2NDY7Ozs7Tjs7Ozs7CitGQzdBO0FSQUJJQyBMSUdBVFVSRSBUSEVIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkIgMDY0OTs7OztOOzs7OzsKK0ZDN0I7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQiAwNjRBOzs7O047Ozs7OworRkM3QztBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDEgMDY0OTs7OztOOzs7OzsKK0ZDN0Q7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQxIDA2NEE7Ozs7Tjs7Ozs7CitGQzdFO0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0MiAwNjQ5Ozs7O047Ozs7OworRkM3RjtBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDIgMDY0QTs7OztOOzs7OzsKK0ZDODA7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIEFMRUYgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0MyAwNjI3Ozs7O047Ozs7OworRkM4MTtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTEFNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDMgMDY0NDs7OztOOzs7OzsKK0ZDODI7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0MyAwNjQ1Ozs7O047Ozs7OworRkM4MztBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDMgMDY0OTs7OztOOzs7OzsKK0ZDODQ7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQzIDA2NEE7Ozs7Tjs7Ozs7CitGQzg1O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDQgMDY0NTs7OztOOzs7OzsKK0ZDODY7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ0IDA2NDk7Ozs7Tjs7Ozs7CitGQzg3O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NCAwNjRBOzs7O047Ozs7OworRkM4ODtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEFMRUYgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NSAwNjI3Ozs7O047Ozs7OworRkM4OTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NSAwNjQ1Ozs7O047Ozs7OworRkM4QTtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIFJFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ2IDA2MzE7Ozs7Tjs7Ozs7CitGQzhCO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggWkFJTiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ2IDA2MzI7Ozs7Tjs7Ozs7CitGQzhDO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ2IDA2NDU7Ozs7Tjs7Ozs7CitGQzhEO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTk9PTiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ2IDA2NDY7Ozs7Tjs7Ozs7CitGQzhFO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDYgMDY0OTs7OztOOzs7OzsKK0ZDOEY7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NiAwNjRBOzs7O047Ozs7OworRkM5MDtBUkFCSUMgTElHQVRVUkUgQUxFRiBNQUtTVVJBIFdJVEggU1VQRVJTQ1JJUFQgQUxFRiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ5IDA2NzA7Ozs7Tjs7Ozs7CitGQzkxO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBSRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0QSAwNjMxOzs7O047Ozs7OworRkM5MjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggWkFJTiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjRBIDA2MzI7Ozs7Tjs7Ozs7CitGQzkzO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NEEgMDY0NTs7OztOOzs7OzsKK0ZDOTQ7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE5PT04gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0QSAwNjQ2Ozs7O047Ozs7OworRkM5NTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NEEgMDY0OTs7OztOOzs7OzsKK0ZDOTY7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjRBIDA2NEE7Ozs7Tjs7Ozs7CitGQzk3O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MjYgMDYyQzs7OztOOzs7OzsKK0ZDOTg7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjI2IDA2MkQ7Ozs7Tjs7Ozs7CitGQzk5O0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQU1aQSBBQk9WRSBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MjYgMDYyRTs7OztOOzs7OzsKK0ZDOUE7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyNiAwNjQ1Ozs7O047Ozs7OworRkM5QjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBIRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MjYgMDY0Nzs7OztOOzs7OzsKK0ZDOUM7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MjggMDYyQzs7OztOOzs7OzsKK0ZDOUQ7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyOCAwNjJEOzs7O047Ozs7OworRkM5RTtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyOCAwNjJFOzs7O047Ozs7OworRkM5RjtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyOCAwNjQ1Ozs7O047Ozs7OworRkNBMDtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSEVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjI4IDA2NDc7Ozs7Tjs7Ozs7CitGQ0ExO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJBIDA2MkM7Ozs7Tjs7Ozs7CitGQ0EyO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkEgMDYyRDs7OztOOzs7OzsKK0ZDQTM7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkEgMDYyRTs7OztOOzs7OzsKK0ZDQTQ7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkEgMDY0NTs7OztOOzs7OzsKK0ZDQTU7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEhFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQSAwNjQ3Ozs7O047Ozs7OworRkNBNjtBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkIgMDY0NTs7OztOOzs7OzsKK0ZDQTc7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkMgMDYyRDs7OztOOzs7OzsKK0ZDQTg7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGQ0E5O0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJEIDA2MkM7Ozs7Tjs7Ozs7CitGQ0FBO0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJEIDA2NDU7Ozs7Tjs7Ozs7CitGQ0FCO0FSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyRSAwNjJDOzs7O047Ozs7OworRkNBQztBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZDQUQ7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjMzIDA2MkM7Ozs7Tjs7Ozs7CitGQ0FFO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjMzIDA2MkQ7Ozs7Tjs7Ozs7CitGQ0FGO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzMyAwNjJFOzs7O047Ozs7OworRkNCMDtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzMgMDY0NTs7OztOOzs7OzsKK0ZDQjE7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNSAwNjJEOzs7O047Ozs7OworRkNCMjtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNSAwNjJFOzs7O047Ozs7OworRkNCMztBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNSAwNjQ1Ozs7O047Ozs7OworRkNCNDtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNiAwNjJDOzs7O047Ozs7OworRkNCNTtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM2IDA2MkQ7Ozs7Tjs7Ozs7CitGQ0I2O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM2IDA2MkU7Ozs7Tjs7Ozs7CitGQ0I3O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM2IDA2NDU7Ozs7Tjs7Ozs7CitGQ0I4O0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzcgMDYyRDs7OztOOzs7OzsKK0ZDQjk7QVJBQklDIExJR0FUVVJFIFpBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzggMDY0NTs7OztOOzs7OzsKK0ZDQkE7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzkgMDYyQzs7OztOOzs7OzsKK0ZDQkI7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzkgMDY0NTs7OztOOzs7OzsKK0ZDQkM7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzQSAwNjJDOzs7O047Ozs7OworRkNCRDtBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjNBIDA2NDU7Ozs7Tjs7Ozs7CitGQ0JFO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQxIDA2MkM7Ozs7Tjs7Ozs7CitGQ0JGO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDEgMDYyRDs7OztOOzs7OzsKK0ZDQzA7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDEgMDYyRTs7OztOOzs7OzsKK0ZDQzE7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDEgMDY0NTs7OztOOzs7OzsKK0ZDQzI7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0MiAwNjJEOzs7O047Ozs7OworRkNDMztBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0MiAwNjQ1Ozs7O047Ozs7OworRkNDNDtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0MyAwNjJDOzs7O047Ozs7OworRkNDNTtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQzIDA2MkQ7Ozs7Tjs7Ozs7CitGQ0M2O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBLSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQzIDA2MkU7Ozs7Tjs7Ozs7CitGQ0M3O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBMQU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDMgMDY0NDs7OztOOzs7OzsKK0ZDQzg7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDMgMDY0NTs7OztOOzs7OzsKK0ZDQzk7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDQgMDYyQzs7OztOOzs7OzsKK0ZDQ0E7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NCAwNjJEOzs7O047Ozs7OworRkNDQjtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NCAwNjJFOzs7O047Ozs7OworRkNDQztBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NCAwNjQ1Ozs7O047Ozs7OworRkNDRDtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggSEVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ0IDA2NDc7Ozs7Tjs7Ozs7CitGQ0NFO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NSAwNjJDOzs7O047Ozs7OworRkNDRjtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NSAwNjJEOzs7O047Ozs7OworRkNEMDtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDUgMDYyRTs7OztOOzs7OzsKK0ZDRDE7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGQ0QyO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NiAwNjJDOzs7O047Ozs7OworRkNEMztBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NiAwNjJEOzs7O047Ozs7OworRkNENDtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDYgMDYyRTs7OztOOzs7OzsKK0ZDRDU7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ2IDA2NDU7Ozs7Tjs7Ozs7CitGQ0Q2O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ2IDA2NDc7Ozs7Tjs7Ozs7CitGQ0Q3O0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ3IDA2MkM7Ozs7Tjs7Ozs7CitGQ0Q4O0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ3IDA2NDU7Ozs7Tjs7Ozs7CitGQ0Q5O0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBTVVBFUlNDUklQVCBBTEVGIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ3IDA2NzA7Ozs7Tjs7Ozs7CitGQ0RBO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjRBIDA2MkM7Ozs7Tjs7Ozs7CitGQ0RCO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NEEgMDYyRDs7OztOOzs7OzsKK0ZDREM7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NEEgMDYyRTs7OztOOzs7OzsKK0ZDREQ7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NEEgMDY0NTs7OztOOzs7OzsKK0ZDREU7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIEhFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0QSAwNjQ3Ozs7O047Ozs7OworRkNERjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYyNiAwNjQ1Ozs7O047Ozs7OworRkNFMDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFNWkEgQUJPVkUgV0lUSCBIRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjI2IDA2NDc7Ozs7Tjs7Ozs7CitGQ0UxO0FSQUJJQyBMSUdBVFVSRSBCRUggV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYyOCAwNjQ1Ozs7O047Ozs7OworRkNFMjtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggSEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYyOCAwNjQ3Ozs7O047Ozs7OworRkNFMztBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MkEgMDY0NTs7OztOOzs7OzsKK0ZDRTQ7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEhFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MkEgMDY0Nzs7OztOOzs7OzsKK0ZDRTU7QVJBQklDIExJR0FUVVJFIFRIRUggV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYyQiAwNjQ1Ozs7O047Ozs7OworRkNFNjtBUkFCSUMgTElHQVRVUkUgVEhFSCBXSVRIIEhFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MkIgMDY0Nzs7OztOOzs7OzsKK0ZDRTc7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzMyAwNjQ1Ozs7O047Ozs7OworRkNFODtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEhFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MzMgMDY0Nzs7OztOOzs7OzsKK0ZDRTk7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MzQgMDY0NTs7OztOOzs7OzsKK0ZDRUE7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzNCAwNjQ3Ozs7O047Ozs7OworRkNFQjtBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTEFNIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0MyAwNjQ0Ozs7O047Ozs7OworRkNFQztBUkFCSUMgTElHQVRVUkUgS0FGIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDMgMDY0NTs7OztOOzs7OzsKK0ZDRUQ7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjQ0IDA2NDU7Ozs7Tjs7Ozs7CitGQ0VFO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDYgMDY0NTs7OztOOzs7OzsKK0ZDRUY7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBIRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjQ2IDA2NDc7Ozs7Tjs7Ozs7CitGQ0YwO0FSQUJJQyBMSUdBVFVSRSBZRUggV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0QSAwNjQ1Ozs7O047Ozs7OworRkNGMTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0QSAwNjQ3Ozs7O047Ozs7OworRkNGMjtBUkFCSUMgTElHQVRVUkUgU0hBRERBIFdJVEggRkFUSEEgTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjQwIDA2NEUgMDY1MTs7OztOOzs7OzsKK0ZDRjM7QVJBQklDIExJR0FUVVJFIFNIQUREQSBXSVRIIERBTU1BIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0MCAwNjRGIDA2NTE7Ozs7Tjs7Ozs7CitGQ0Y0O0FSQUJJQyBMSUdBVFVSRSBTSEFEREEgV0lUSCBLQVNSQSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDAgMDY1MCAwNjUxOzs7O047Ozs7OworRkNGNTtBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzcgMDY0OTs7OztOOzs7OzsKK0ZDRjY7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM3IDA2NEE7Ozs7Tjs7Ozs7CitGQ0Y3O0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzOSAwNjQ5Ozs7O047Ozs7OworRkNGODtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzkgMDY0QTs7OztOOzs7OzsKK0ZDRjk7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2M0EgMDY0OTs7OztOOzs7OzsKK0ZDRkE7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2M0EgMDY0QTs7OztOOzs7OzsKK0ZDRkI7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzMyAwNjQ5Ozs7O047Ozs7OworRkNGQztBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjMzIDA2NEE7Ozs7Tjs7Ozs7CitGQ0ZEO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM0IDA2NDk7Ozs7Tjs7Ozs7CitGQ0ZFO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM0IDA2NEE7Ozs7Tjs7Ozs7CitGQ0ZGO0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyRCAwNjQ5Ozs7O047Ozs7OworRkQwMDtBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEMDE7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyQyAwNjQ5Ozs7O047Ozs7OworRkQwMjtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJDIDA2NEE7Ozs7Tjs7Ozs7CitGRDAzO0FSQUJJQyBMSUdBVFVSRSBLSEFIIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkUgMDY0OTs7OztOOzs7OzsKK0ZEMDQ7QVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBZRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyRSAwNjRBOzs7O047Ozs7OworRkQwNTtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggQUxFRiBNQUtTVVJBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzUgMDY0OTs7OztOOzs7OzsKK0ZEMDY7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIFlFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM1IDA2NEE7Ozs7Tjs7Ozs7CitGRDA3O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBBTEVGIE1BS1NVUkEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNiAwNjQ5Ozs7O047Ozs7OworRkQwODtBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzYgMDY0QTs7OztOOzs7OzsKK0ZEMDk7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSkVFTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM0IDA2MkM7Ozs7Tjs7Ozs7CitGRDBBO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM0IDA2MkQ7Ozs7Tjs7Ozs7CitGRDBCO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEtIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNCAwNjJFOzs7O047Ozs7OworRkQwQztBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzQgMDY0NTs7OztOOzs7OzsKK0ZEMEQ7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggUkVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzQgMDYzMTs7OztOOzs7OzsKK0ZEMEU7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBSRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzMyAwNjMxOzs7O047Ozs7OworRkQwRjtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggUkVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzUgMDYzMTs7OztOOzs7OzsKK0ZEMTA7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIFJFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM2IDA2MzE7Ozs7Tjs7Ozs7CitGRDExO0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNyAwNjQ5Ozs7O047Ozs7OworRkQxMjtBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzcgMDY0QTs7OztOOzs7OzsKK0ZEMTM7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM5IDA2NDk7Ozs7Tjs7Ozs7CitGRDE0O0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzOSAwNjRBOzs7O047Ozs7OworRkQxNTtBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzQSAwNjQ5Ozs7O047Ozs7OworRkQxNjtBUkFCSUMgTElHQVRVUkUgR0hBSU4gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzQSAwNjRBOzs7O047Ozs7OworRkQxNztBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjMzIDA2NDk7Ozs7Tjs7Ozs7CitGRDE4O0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzMgMDY0QTs7OztOOzs7OzsKK0ZEMTk7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzQgMDY0OTs7OztOOzs7OzsKK0ZEMUE7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzQgMDY0QTs7OztOOzs7OzsKK0ZEMUI7QVJBQklDIExJR0FUVVJFIEhBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJEIDA2NDk7Ozs7Tjs7Ozs7CitGRDFDO0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyRCAwNjRBOzs7O047Ozs7OworRkQxRDtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJDIDA2NDk7Ozs7Tjs7Ozs7CitGRDFFO0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkMgMDY0QTs7OztOOzs7OzsKK0ZEMUY7QVJBQklDIExJR0FUVVJFIEtIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyRSAwNjQ5Ozs7O047Ozs7OworRkQyMDtBUkFCSUMgTElHQVRVUkUgS0hBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJFIDA2NEE7Ozs7Tjs7Ozs7CitGRDIxO0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNSAwNjQ5Ozs7O047Ozs7OworRkQyMjtBUkFCSUMgTElHQVRVUkUgU0FEIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzUgMDY0QTs7OztOOzs7OzsKK0ZEMjM7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM2IDA2NDk7Ozs7Tjs7Ozs7CitGRDI0O0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNiAwNjRBOzs7O047Ozs7OworRkQyNTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBKRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzQgMDYyQzs7OztOOzs7OzsKK0ZEMjY7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEFIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzQgMDYyRDs7OztOOzs7OzsKK0ZEMjc7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggS0hBSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM0IDA2MkU7Ozs7Tjs7Ozs7CitGRDI4O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNCAwNjQ1Ozs7O047Ozs7OworRkQyOTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBSRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNCAwNjMxOzs7O047Ozs7OworRkQyQTtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIFJFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjMzIDA2MzE7Ozs7Tjs7Ozs7CitGRDJCO0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBSRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNSAwNjMxOzs7O047Ozs7OworRkQyQztBUkFCSUMgTElHQVRVUkUgREFEIFdJVEggUkVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzYgMDYzMTs7OztOOzs7OzsKK0ZEMkQ7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNCAwNjJDOzs7O047Ozs7OworRkQyRTtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzQgMDYyRDs7OztOOzs7OzsKK0ZEMkY7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNCAwNjJFOzs7O047Ozs7OworRkQzMDtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM0IDA2NDU7Ozs7Tjs7Ozs7CitGRDMxO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSEVIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjMzIDA2NDc7Ozs7Tjs7Ozs7CitGRDMyO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNCAwNjQ3Ozs7O047Ozs7OworRkQzMztBUkFCSUMgTElHQVRVUkUgVEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNyAwNjQ1Ozs7O047Ozs7OworRkQzNDtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEpFRU0gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjMzIDA2MkM7Ozs7Tjs7Ozs7CitGRDM1O0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggSEFIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzMyAwNjJEOzs7O047Ozs7OworRkQzNjtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEtIQUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjMzIDA2MkU7Ozs7Tjs7Ozs7CitGRDM3O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEpFRU0gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjM0IDA2MkM7Ozs7Tjs7Ozs7CitGRDM4O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhBSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MzQgMDYyRDs7OztOOzs7OzsKK0ZEMzk7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggS0hBSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MzQgMDYyRTs7OztOOzs7OzsKK0ZEM0E7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjM3IDA2NDU7Ozs7Tjs7Ozs7CitGRDNCO0FSQUJJQyBMSUdBVFVSRSBaQUggV0lUSCBNRUVNIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzOCAwNjQ1Ozs7O047Ozs7OworRkQzQztBUkFCSUMgTElHQVRVUkUgQUxFRiBXSVRIIEZBVEhBVEFOIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjcgMDY0Qjs7OztOOzs7OzsKK0ZEM0Q7QVJBQklDIExJR0FUVVJFIEFMRUYgV0lUSCBGQVRIQVRBTiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjI3IDA2NEI7Ozs7Tjs7Ozs7CitGRDNFO09STkFURSBMRUZUIFBBUkVOVEhFU0lTO1BzOzA7T047Ozs7O047Ozs7OworRkQzRjtPUk5BVEUgUklHSFQgUEFSRU5USEVTSVM7UGU7MDtPTjs7Ozs7Tjs7Ozs7CitGRDUwO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBKRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQSAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGRDUxO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBIQUggV0lUSCBKRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkEgMDYyRCAwNjJDOzs7O047Ozs7OworRkQ1MjtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggSEFIIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQSAwNjJEIDA2MkM7Ozs7Tjs7Ozs7CitGRDUzO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJBIDA2MkQgMDY0NTs7OztOOzs7OzsKK0ZENTQ7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEtIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJBIDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZENTU7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjJBIDA2NDUgMDYyQzs7OztOOzs7OzsKK0ZENTY7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIE1FRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkEgMDY0NSAwNjJEOzs7O047Ozs7OworRkQ1NztBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBXSVRIIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkEgMDY0NSAwNjJFOzs7O047Ozs7OworRkQ1ODtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIE1FRU0gV0lUSCBIQUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQyAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDU5O0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQyAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDVBO0FSQUJJQyBMSUdBVFVSRSBIQUggV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkQgMDY0NSAwNjRBOzs7O047Ozs7OworRkQ1QjtBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJEIDA2NDUgMDY0OTs7OztOOzs7OzsKK0ZENUM7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBIQUggV0lUSCBKRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjMzIDA2MkQgMDYyQzs7OztOOzs7OzsKK0ZENUQ7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBKRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjMzIDA2MkMgMDYyRDs7OztOOzs7OzsKK0ZENUU7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBKRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzMgMDYyQyAwNjQ5Ozs7O047Ozs7OworRkQ1RjtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gV0lUSCBIQUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzMyAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDYwO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzMyAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDYxO0FSQUJJQyBMSUdBVFVSRSBTRUVOIFdJVEggTUVFTSBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzMgMDY0NSAwNjJDOzs7O047Ozs7OworRkQ2MjtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzMgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ2MztBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjMzIDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZENjQ7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEhBSCBXSVRIIEhBSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM1IDA2MkQgMDYyRDs7OztOOzs7OzsKK0ZENjU7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIEhBSCBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNSAwNjJEIDA2MkQ7Ozs7Tjs7Ozs7CitGRDY2O0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM1IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZENjc7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEFIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM0IDA2MkQgMDY0NTs7OztOOzs7OzsKK0ZENjg7QVJBQklDIExJR0FUVVJFIFNIRUVOIFdJVEggSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNCAwNjJEIDA2NDU7Ozs7Tjs7Ozs7CitGRDY5O0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNCAwNjJDIDA2NEE7Ozs7Tjs7Ozs7CitGRDZBO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gV0lUSCBLSEFIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzQgMDY0NSAwNjJFOzs7O047Ozs7OworRkQ2QjtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNCAwNjQ1IDA2MkU7Ozs7Tjs7Ozs7CitGRDZDO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzQgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ2RDtBUkFCSUMgTElHQVRVUkUgU0hFRU4gV0lUSCBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNCAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDZFO0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNiAwNjJEIDA2NDk7Ozs7Tjs7Ozs7CitGRDZGO0FSQUJJQyBMSUdBVFVSRSBEQUQgV0lUSCBLSEFIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM2IDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZENzA7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEtIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM2IDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZENzE7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gV0lUSCBIQUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNyAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDcyO0FSQUJJQyBMSUdBVFVSRSBUQUggV0lUSCBNRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM3IDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZENzM7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM3IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZENzQ7QVJBQklDIExJR0FUVVJFIFRBSCBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNyAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGRDc1O0FSQUJJQyBMSUdBVFVSRSBBSU4gV0lUSCBKRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM5IDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZENzY7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzkgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ3NztBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggTUVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzkgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ3ODtBUkFCSUMgTElHQVRVUkUgQUlOIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM5IDA2NDUgMDY0OTs7OztOOzs7OzsKK0ZENzk7QVJBQklDIExJR0FUVVJFIEdIQUlOIFdJVEggTUVFTSBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzQSAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDdBO0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzQSAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGRDdCO0FSQUJJQyBMSUdBVFVSRSBHSEFJTiBXSVRIIE1FRU0gV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzQSAwNjQ1IDA2NDk7Ozs7Tjs7Ozs7CitGRDdDO0FSQUJJQyBMSUdBVFVSRSBGRUggV0lUSCBLSEFIIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQxIDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZEN0Q7QVJBQklDIExJR0FUVVJFIEZFSCBXSVRIIEtIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQxIDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZEN0U7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIE1FRU0gV0lUSCBIQUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0MiAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGRDdGO0FSQUJJQyBMSUdBVFVSRSBRQUYgV0lUSCBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQyIDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZEODA7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEhBSCBXSVRIIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NCAwNjJEIDA2NDU7Ozs7Tjs7Ozs7CitGRDgxO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NCAwNjJEIDA2NEE7Ozs7Tjs7Ozs7CitGRDgyO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NCAwNjJEIDA2NDk7Ozs7Tjs7Ozs7CitGRDgzO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBKRUVNIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NCAwNjJDIDA2MkM7Ozs7Tjs7Ozs7CitGRDg0O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBKRUVNIFdJVEggSkVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ0IDA2MkMgMDYyQzs7OztOOzs7OzsKK0ZEODU7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEtIQUggV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDQgMDYyRSAwNjQ1Ozs7O047Ozs7OworRkQ4NjtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggS0hBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDQgMDYyRSAwNjQ1Ozs7O047Ozs7OworRkQ4NztBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggTUVFTSBXSVRIIEhBSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ0IDA2NDUgMDYyRDs7OztOOzs7OzsKK0ZEODg7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIE1FRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDQgMDY0NSAwNjJEOzs7O047Ozs7OworRkQ4OTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEhBSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDUgMDYyRCAwNjJDOzs7O047Ozs7OworRkQ4QTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEhBSCBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDUgMDYyRCAwNjQ1Ozs7O047Ozs7OworRkQ4QjtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ1IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEOEM7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBKRUVNIFdJVEggSEFIIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ1IDA2MkMgMDYyRDs7OztOOzs7OzsKK0ZEOEQ7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBKRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NSAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGRDhFO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggS0hBSCBXSVRIIEpFRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDUgMDYyRSAwNjJDOzs7O047Ozs7OworRkQ4RjtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEtIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ1IDA2MkUgMDY0NTs7OztOOzs7OzsKK0ZEOTI7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBKRUVNIFdJVEggS0hBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NSAwNjJDIDA2MkU7Ozs7Tjs7Ozs7CitGRDkzO0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBNRUVNIFdJVEggSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NyAwNjQ1IDA2MkM7Ozs7Tjs7Ozs7CitGRDk0O0FSQUJJQyBMSUdBVFVSRSBIRUggV0lUSCBNRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NyAwNjQ1IDA2NDU7Ozs7Tjs7Ozs7CitGRDk1O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEFIIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NiAwNjJEIDA2NDU7Ozs7Tjs7Ozs7CitGRDk2O0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEFIIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDYgMDYyRCAwNjQ5Ozs7O047Ozs7OworRkQ5NztBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDYgMDYyQyAwNjQ1Ozs7O047Ozs7OworRkQ5ODtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ2IDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZEOTk7QVJBQklDIExJR0FUVVJFIE5PT04gV0lUSCBKRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDYgMDYyQyAwNjQ5Ozs7O047Ozs7OworRkQ5QTtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NiAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGRDlCO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ2IDA2NDUgMDY0OTs7OztOOzs7OzsKK0ZEOUM7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE1FRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NEEgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ5RDtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggTUVFTSBXSVRIIE1FRU0gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NEEgMDY0NSAwNjQ1Ozs7O047Ozs7OworRkQ5RTtBUkFCSUMgTElHQVRVUkUgQkVIIFdJVEggS0hBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI4IDA2MkUgMDY0QTs7OztOOzs7OzsKK0ZEOUY7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQSAwNjJDIDA2NEE7Ozs7Tjs7Ozs7CitGREEwO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBKRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkEgMDYyQyAwNjQ5Ozs7O047Ozs7OworRkRBMTtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggS0hBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJBIDA2MkUgMDY0QTs7OztOOzs7OzsKK0ZEQTI7QVJBQklDIExJR0FUVVJFIFRFSCBXSVRIIEtIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQSAwNjJFIDA2NDk7Ozs7Tjs7Ozs7CitGREEzO0FSQUJJQyBMSUdBVFVSRSBURUggV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkEgMDY0NSAwNjRBOzs7O047Ozs7OworRkRBNDtBUkFCSUMgTElHQVRVUkUgVEVIIFdJVEggTUVFTSBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJBIDA2NDUgMDY0OTs7OztOOzs7OzsKK0ZEQTU7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkMgMDY0NSAwNjRBOzs7O047Ozs7OworRkRBNjtBUkFCSUMgTElHQVRVUkUgSkVFTSBXSVRIIEhBSCBXSVRIIEFMRUYgTUFLU1VSQSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJDIDA2MkQgMDY0OTs7OztOOzs7OzsKK0ZEQTc7QVJBQklDIExJR0FUVVJFIEpFRU0gV0lUSCBNRUVNIFdJVEggQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkMgMDY0NSAwNjQ5Ozs7O047Ozs7OworRkRBODtBUkFCSUMgTElHQVRVUkUgU0VFTiBXSVRIIEtIQUggV0lUSCBBTEVGIE1BS1NVUkEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzMyAwNjJFIDA2NDk7Ozs7Tjs7Ozs7CitGREE5O0FSQUJJQyBMSUdBVFVSRSBTQUQgV0lUSCBIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNSAwNjJEIDA2NEE7Ozs7Tjs7Ozs7CitGREFBO0FSQUJJQyBMSUdBVFVSRSBTSEVFTiBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM0IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEQUI7QVJBQklDIExJR0FUVVJFIERBRCBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM2IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEQUM7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NCAwNjJDIDA2NEE7Ozs7Tjs7Ozs7CitGREFEO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDQgMDY0NSAwNjRBOzs7O047Ozs7OworRkRBRTtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NEEgMDYyRCAwNjRBOzs7O047Ozs7OworRkRBRjtBUkFCSUMgTElHQVRVUkUgWUVIIFdJVEggSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjRBIDA2MkMgMDY0QTs7OztOOzs7OzsKK0ZEQjA7QVJBQklDIExJR0FUVVJFIFlFSCBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0QSAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGREIxO0FSQUJJQyBMSUdBVFVSRSBNRUVNIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ1IDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZEQjI7QVJBQklDIExJR0FUVVJFIFFBRiBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0MiAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGREIzO0FSQUJJQyBMSUdBVFVSRSBOT09OIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDYgMDYyRCAwNjRBOzs7O047Ozs7OworRkRCNDtBUkFCSUMgTElHQVRVUkUgUUFGIFdJVEggTUVFTSBXSVRIIEhBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0MiAwNjQ1IDA2MkQ7Ozs7Tjs7Ozs7CitGREI1O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBIQUggV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ0IDA2MkQgMDY0NTs7OztOOzs7OzsKK0ZEQjY7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIE1FRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzOSAwNjQ1IDA2NEE7Ozs7Tjs7Ozs7CitGREI3O0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBNRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDMgMDY0NSAwNjRBOzs7O047Ozs7OworRkRCODtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gV0lUSCBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDYgMDYyQyAwNjJEOzs7O047Ozs7OworRkRCOTtBUkFCSUMgTElHQVRVUkUgTUVFTSBXSVRIIEtIQUggV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NSAwNjJFIDA2NEE7Ozs7Tjs7Ozs7CitGREJBO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBKRUVNIFdJVEggTUVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0NCAwNjJDIDA2NDU7Ozs7Tjs7Ozs7CitGREJCO0FSQUJJQyBMSUdBVFVSRSBLQUYgV0lUSCBNRUVNIFdJVEggTUVFTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQzIDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZEQkM7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEpFRU0gV0lUSCBNRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDQgMDYyQyAwNjQ1Ozs7O047Ozs7OworRkRCRDtBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gV0lUSCBIQUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NiAwNjJDIDA2MkQ7Ozs7Tjs7Ozs7CitGREJFO0FSQUJJQyBMSUdBVFVSRSBKRUVNIFdJVEggSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkMgMDYyRCAwNjRBOzs7O047Ozs7OworRkRCRjtBUkFCSUMgTElHQVRVUkUgSEFIIFdJVEggSkVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJEIDA2MkMgMDY0QTs7OztOOzs7OzsKK0ZEQzA7QVJBQklDIExJR0FUVVJFIE1FRU0gV0lUSCBKRUVNIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDUgMDYyQyAwNjRBOzs7O047Ozs7OworRkRDMTtBUkFCSUMgTElHQVRVUkUgRkVIIFdJVEggTUVFTSBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQxIDA2NDUgMDY0QTs7OztOOzs7OzsKK0ZEQzI7QVJBQklDIExJR0FUVVJFIEJFSCBXSVRIIEhBSCBXSVRIIFlFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjI4IDA2MkQgMDY0QTs7OztOOzs7OzsKK0ZEQzM7QVJBQklDIExJR0FUVVJFIEtBRiBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQzIDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZEQzQ7QVJBQklDIExJR0FUVVJFIEFJTiBXSVRIIEpFRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM5IDA2MkMgMDY0NTs7OztOOzs7OzsKK0ZEQzU7QVJBQklDIExJR0FUVVJFIFNBRCBXSVRIIE1FRU0gV0lUSCBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM1IDA2NDUgMDY0NTs7OztOOzs7OzsKK0ZEQzY7QVJBQklDIExJR0FUVVJFIFNFRU4gV0lUSCBLSEFIIFdJVEggWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzMgMDYyRSAwNjRBOzs7O047Ozs7OworRkRDNztBUkFCSUMgTElHQVRVUkUgTk9PTiBXSVRIIEpFRU0gV0lUSCBZRUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NiAwNjJDIDA2NEE7Ozs7Tjs7Ozs7CitGREYwO0FSQUJJQyBMSUdBVFVSRSBTQUxMQSBVU0VEIEFTIEtPUkFOSUMgU1RPUCBTSUdOIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzUgMDY0NCAwNkQyOzs7O047Ozs7OworRkRGMTtBUkFCSUMgTElHQVRVUkUgUUFMQSBVU0VEIEFTIEtPUkFOSUMgU1RPUCBTSUdOIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDIgMDY0NCAwNkQyOzs7O047Ozs7OworRkRGMjtBUkFCSUMgTElHQVRVUkUgQUxMQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyNyAwNjQ0IDA2NDQgMDY0Nzs7OztOOzs7OzsKK0ZERjM7QVJBQklDIExJR0FUVVJFIEFLQkFSIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjcgMDY0MyAwNjI4IDA2MzE7Ozs7Tjs7Ozs7CitGREY0O0FSQUJJQyBMSUdBVFVSRSBNT0hBTU1BRCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ1IDA2MkQgMDY0NSAwNjJGOzs7O047Ozs7OworRkRGNTtBUkFCSUMgTElHQVRVUkUgU0FMQU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNSAwNjQ0IDA2MzkgMDY0NTs7OztOOzs7OzsKK0ZERjY7QVJBQklDIExJR0FUVVJFIFJBU09VTCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjMxIDA2MzMgMDY0OCAwNjQ0Ozs7O047Ozs7OworRkRGNztBUkFCSUMgTElHQVRVUkUgQUxBWUhFIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzkgMDY0NCAwNjRBIDA2NDc7Ozs7Tjs7Ozs7CitGREY4O0FSQUJJQyBMSUdBVFVSRSBXQVNBTExBTSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ4IDA2MzMgMDY0NCAwNjQ1Ozs7O047Ozs7OworRkRGOTtBUkFCSUMgTElHQVRVUkUgU0FMTEEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNSAwNjQ0IDA2NDk7Ozs7Tjs7Ozs7CitGREZBO0FSQUJJQyBMSUdBVFVSRSBTQUxMQUxMQUhPVSBBTEFZSEUgV0FTQUxMQU07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzUgMDY0NCAwNjQ5IDAwMjAgMDYyNyAwNjQ0IDA2NDQgMDY0NyAwMDIwIDA2MzkgMDY0NCAwNjRBIDA2NDcgMDAyMCAwNjQ4IDA2MzMgMDY0NCAwNjQ1Ozs7O047QVJBQklDIExFVFRFUiBTQUxMQUxMQUhPVSBBTEFZSEUgV0FTQUxMQU07Ozs7CitGREZCO0FSQUJJQyBMSUdBVFVSRSBKQUxMQUpBTEFMT1VIT1U7TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkMgMDY0NCAwMDIwIDA2MkMgMDY0NCAwNjI3IDA2NDQgMDY0Nzs7OztOO0FSQUJJQyBMRVRURVIgSkFMTEFKQUxBTE9VSE9VOzs7OworRkUyMDtDT01CSU5JTkcgTElHQVRVUkUgTEVGVCBIQUxGO01uOzIzMDtOU007Ozs7O047Ozs7OworRkUyMTtDT01CSU5JTkcgTElHQVRVUkUgUklHSFQgSEFMRjtNbjsyMzA7TlNNOzs7OztOOzs7OzsKK0ZFMjI7Q09NQklOSU5HIERPVUJMRSBUSUxERSBMRUZUIEhBTEY7TW47MjMwO05TTTs7Ozs7Tjs7Ozs7CitGRTIzO0NPTUJJTklORyBET1VCTEUgVElMREUgUklHSFQgSEFMRjtNbjsyMzA7TlNNOzs7OztOOzs7OzsKK0ZFMzA7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFRXTyBET1QgTEVBREVSO1BvOzA7T047PHZlcnRpY2FsPiAyMDI1Ozs7O047R0xZUEggRk9SIFZFUlRJQ0FMIFRXTyBET1QgTEVBREVSOzs7OworRkUzMTtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgRU0gREFTSDtQZDswO09OOzx2ZXJ0aWNhbD4gMjAxNDs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBFTSBEQVNIOzs7OworRkUzMjtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgRU4gREFTSDtQZDswO09OOzx2ZXJ0aWNhbD4gMjAxMzs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBFTiBEQVNIOzs7OworRkUzMztQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTE9XIExJTkU7UGM7MDtPTjs8dmVydGljYWw+IDAwNUY7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgU1BBQ0lORyBVTkRFUlNDT1JFOzs7OworRkUzNDtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgV0FWWSBMT1cgTElORTtQYzswO09OOzx2ZXJ0aWNhbD4gMDA1Rjs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBTUEFDSU5HIFdBVlkgVU5ERVJTQ09SRTs7OzsKK0ZFMzU7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgUEFSRU5USEVTSVM7UHM7MDtPTjs8dmVydGljYWw+IDAwMjg7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgT1BFTklORyBQQVJFTlRIRVNJUzs7OzsKK0ZFMzY7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFJJR0hUIFBBUkVOVEhFU0lTO1BlOzA7T047PHZlcnRpY2FsPiAwMDI5Ozs7O047R0xZUEggRk9SIFZFUlRJQ0FMIENMT1NJTkcgUEFSRU5USEVTSVM7Ozs7CitGRTM3O1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIENVUkxZIEJSQUNLRVQ7UHM7MDtPTjs8dmVydGljYWw+IDAwN0I7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgT1BFTklORyBDVVJMWSBCUkFDS0VUOzs7OworRkUzODtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgQ1VSTFkgQlJBQ0tFVDtQZTswO09OOzx2ZXJ0aWNhbD4gMDA3RDs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBDTE9TSU5HIENVUkxZIEJSQUNLRVQ7Ozs7CitGRTM5O1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7UHM7MDtPTjs8dmVydGljYWw+IDMwMTQ7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgT1BFTklORyBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUOzs7OworRkUzQTtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgVE9SVE9JU0UgU0hFTEwgQlJBQ0tFVDtQZTswO09OOzx2ZXJ0aWNhbD4gMzAxNTs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBDTE9TSU5HIFRPUlRPSVNFIFNIRUxMIEJSQUNLRVQ7Ozs7CitGRTNCO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIEJMQUNLIExFTlRJQ1VMQVIgQlJBQ0tFVDtQczswO09OOzx2ZXJ0aWNhbD4gMzAxMDs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBPUEVOSU5HIEJMQUNLIExFTlRJQ1VMQVIgQlJBQ0tFVDs7OzsKK0ZFM0M7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFJJR0hUIEJMQUNLIExFTlRJQ1VMQVIgQlJBQ0tFVDtQZTswO09OOzx2ZXJ0aWNhbD4gMzAxMTs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBDTE9TSU5HIEJMQUNLIExFTlRJQ1VMQVIgQlJBQ0tFVDs7OzsKK0ZFM0Q7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIExFRlQgRE9VQkxFIEFOR0xFIEJSQUNLRVQ7UHM7MDtPTjs8dmVydGljYWw+IDMwMEE7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgT1BFTklORyBET1VCTEUgQU5HTEUgQlJBQ0tFVDs7OzsKK0ZFM0U7UFJFU0VOVEFUSU9OIEZPUk0gRk9SIFZFUlRJQ0FMIFJJR0hUIERPVUJMRSBBTkdMRSBCUkFDS0VUO1BlOzA7T047PHZlcnRpY2FsPiAzMDBCOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIENMT1NJTkcgRE9VQkxFIEFOR0xFIEJSQUNLRVQ7Ozs7CitGRTNGO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIEFOR0xFIEJSQUNLRVQ7UHM7MDtPTjs8dmVydGljYWw+IDMwMDg7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgT1BFTklORyBBTkdMRSBCUkFDS0VUOzs7OworRkU0MDtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgQU5HTEUgQlJBQ0tFVDtQZTswO09OOzx2ZXJ0aWNhbD4gMzAwOTs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBDTE9TSU5HIEFOR0xFIEJSQUNLRVQ7Ozs7CitGRTQxO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBMRUZUIENPUk5FUiBCUkFDS0VUO1BzOzA7T047PHZlcnRpY2FsPiAzMDBDOzs7O047R0xZUEggRk9SIFZFUlRJQ0FMIE9QRU5JTkcgQ09STkVSIEJSQUNLRVQ7Ozs7CitGRTQyO1BSRVNFTlRBVElPTiBGT1JNIEZPUiBWRVJUSUNBTCBSSUdIVCBDT1JORVIgQlJBQ0tFVDtQZTswO09OOzx2ZXJ0aWNhbD4gMzAwRDs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBDTE9TSU5HIENPUk5FUiBCUkFDS0VUOzs7OworRkU0MztQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgTEVGVCBXSElURSBDT1JORVIgQlJBQ0tFVDtQczswO09OOzx2ZXJ0aWNhbD4gMzAwRTs7OztOO0dMWVBIIEZPUiBWRVJUSUNBTCBPUEVOSU5HIFdISVRFIENPUk5FUiBCUkFDS0VUOzs7OworRkU0NDtQUkVTRU5UQVRJT04gRk9STSBGT1IgVkVSVElDQUwgUklHSFQgV0hJVEUgQ09STkVSIEJSQUNLRVQ7UGU7MDtPTjs8dmVydGljYWw+IDMwMEY7Ozs7TjtHTFlQSCBGT1IgVkVSVElDQUwgQ0xPU0lORyBXSElURSBDT1JORVIgQlJBQ0tFVDs7OzsKK0ZFNDk7REFTSEVEIE9WRVJMSU5FO1BvOzA7T047PGNvbXBhdD4gMjAzRTs7OztOO1NQQUNJTkcgREFTSEVEIE9WRVJTQ09SRTs7OzsKK0ZFNEE7Q0VOVFJFTElORSBPVkVSTElORTtQbzswO09OOzxjb21wYXQ+IDIwM0U7Ozs7TjtTUEFDSU5HIENFTlRFUkxJTkUgT1ZFUlNDT1JFOzs7OworRkU0QjtXQVZZIE9WRVJMSU5FO1BvOzA7T047PGNvbXBhdD4gMjAzRTs7OztOO1NQQUNJTkcgV0FWWSBPVkVSU0NPUkU7Ozs7CitGRTRDO0RPVUJMRSBXQVZZIE9WRVJMSU5FO1BvOzA7T047PGNvbXBhdD4gMjAzRTs7OztOO1NQQUNJTkcgRE9VQkxFIFdBVlkgT1ZFUlNDT1JFOzs7OworRkU0RDtEQVNIRUQgTE9XIExJTkU7UGM7MDtPTjs8Y29tcGF0PiAwMDVGOzs7O047U1BBQ0lORyBEQVNIRUQgVU5ERVJTQ09SRTs7OzsKK0ZFNEU7Q0VOVFJFTElORSBMT1cgTElORTtQYzswO09OOzxjb21wYXQ+IDAwNUY7Ozs7TjtTUEFDSU5HIENFTlRFUkxJTkUgVU5ERVJTQ09SRTs7OzsKK0ZFNEY7V0FWWSBMT1cgTElORTtQYzswO09OOzxjb21wYXQ+IDAwNUY7Ozs7TjtTUEFDSU5HIFdBVlkgVU5ERVJTQ09SRTs7OzsKK0ZFNTA7U01BTEwgQ09NTUE7UG87MDtDUzs8c21hbGw+IDAwMkM7Ozs7Tjs7Ozs7CitGRTUxO1NNQUxMIElERU9HUkFQSElDIENPTU1BO1BvOzA7T047PHNtYWxsPiAzMDAxOzs7O047Ozs7OworRkU1MjtTTUFMTCBGVUxMIFNUT1A7UG87MDtDUzs8c21hbGw+IDAwMkU7Ozs7TjtTTUFMTCBQRVJJT0Q7Ozs7CitGRTU0O1NNQUxMIFNFTUlDT0xPTjtQbzswO09OOzxzbWFsbD4gMDAzQjs7OztOOzs7OzsKK0ZFNTU7U01BTEwgQ09MT047UG87MDtDUzs8c21hbGw+IDAwM0E7Ozs7Tjs7Ozs7CitGRTU2O1NNQUxMIFFVRVNUSU9OIE1BUks7UG87MDtPTjs8c21hbGw+IDAwM0Y7Ozs7Tjs7Ozs7CitGRTU3O1NNQUxMIEVYQ0xBTUFUSU9OIE1BUks7UG87MDtPTjs8c21hbGw+IDAwMjE7Ozs7Tjs7Ozs7CitGRTU4O1NNQUxMIEVNIERBU0g7UGQ7MDtPTjs8c21hbGw+IDIwMTQ7Ozs7Tjs7Ozs7CitGRTU5O1NNQUxMIExFRlQgUEFSRU5USEVTSVM7UHM7MDtPTjs8c21hbGw+IDAwMjg7Ozs7TjtTTUFMTCBPUEVOSU5HIFBBUkVOVEhFU0lTOzs7OworRkU1QTtTTUFMTCBSSUdIVCBQQVJFTlRIRVNJUztQZTswO09OOzxzbWFsbD4gMDAyOTs7OztOO1NNQUxMIENMT1NJTkcgUEFSRU5USEVTSVM7Ozs7CitGRTVCO1NNQUxMIExFRlQgQ1VSTFkgQlJBQ0tFVDtQczswO09OOzxzbWFsbD4gMDA3Qjs7OztOO1NNQUxMIE9QRU5JTkcgQ1VSTFkgQlJBQ0tFVDs7OzsKK0ZFNUM7U01BTEwgUklHSFQgQ1VSTFkgQlJBQ0tFVDtQZTswO09OOzxzbWFsbD4gMDA3RDs7OztOO1NNQUxMIENMT1NJTkcgQ1VSTFkgQlJBQ0tFVDs7OzsKK0ZFNUQ7U01BTEwgTEVGVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUO1BzOzA7T047PHNtYWxsPiAzMDE0Ozs7O047U01BTEwgT1BFTklORyBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUOzs7OworRkU1RTtTTUFMTCBSSUdIVCBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUO1BlOzA7T047PHNtYWxsPiAzMDE1Ozs7O047U01BTEwgQ0xPU0lORyBUT1JUT0lTRSBTSEVMTCBCUkFDS0VUOzs7OworRkU1RjtTTUFMTCBOVU1CRVIgU0lHTjtQbzswO0VUOzxzbWFsbD4gMDAyMzs7OztOOzs7OzsKK0ZFNjA7U01BTEwgQU1QRVJTQU5EO1BvOzA7T047PHNtYWxsPiAwMDI2Ozs7O047Ozs7OworRkU2MTtTTUFMTCBBU1RFUklTSztQbzswO09OOzxzbWFsbD4gMDAyQTs7OztOOzs7OzsKK0ZFNjI7U01BTEwgUExVUyBTSUdOO1NtOzA7RVQ7PHNtYWxsPiAwMDJCOzs7O047Ozs7OworRkU2MztTTUFMTCBIWVBIRU4tTUlOVVM7UGQ7MDtFVDs8c21hbGw+IDAwMkQ7Ozs7Tjs7Ozs7CitGRTY0O1NNQUxMIExFU1MtVEhBTiBTSUdOO1NtOzA7T047PHNtYWxsPiAwMDNDOzs7O047Ozs7OworRkU2NTtTTUFMTCBHUkVBVEVSLVRIQU4gU0lHTjtTbTswO09OOzxzbWFsbD4gMDAzRTs7OztOOzs7OzsKK0ZFNjY7U01BTEwgRVFVQUxTIFNJR047U207MDtPTjs8c21hbGw+IDAwM0Q7Ozs7Tjs7Ozs7CitGRTY4O1NNQUxMIFJFVkVSU0UgU09MSURVUztQbzswO09OOzxzbWFsbD4gMDA1Qzs7OztOO1NNQUxMIEJBQ0tTTEFTSDs7OzsKK0ZFNjk7U01BTEwgRE9MTEFSIFNJR047U2M7MDtFVDs8c21hbGw+IDAwMjQ7Ozs7Tjs7Ozs7CitGRTZBO1NNQUxMIFBFUkNFTlQgU0lHTjtQbzswO0VUOzxzbWFsbD4gMDAyNTs7OztOOzs7OzsKK0ZFNkI7U01BTEwgQ09NTUVSQ0lBTCBBVDtQbzswO09OOzxzbWFsbD4gMDA0MDs7OztOOzs7OzsKK0ZFNzA7QVJBQklDIEZBVEhBVEFOIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDAwMjAgMDY0Qjs7OztOO0FSQUJJQyBTUEFDSU5HIEZBVEhBVEFOOzs7OworRkU3MTtBUkFCSUMgVEFUV0VFTCBXSVRIIEZBVEhBVEFOIEFCT1ZFO0xvOzA7QUw7PG1lZGlhbD4gMDY0MCAwNjRCOzs7O047QVJBQklDIEZBVEhBVEFOIE9OIFRBVFdFRUw7Ozs7CitGRTcyO0FSQUJJQyBEQU1NQVRBTiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwMDIwIDA2NEM7Ozs7TjtBUkFCSUMgU1BBQ0lORyBEQU1NQVRBTjs7OzsKK0ZFNzQ7QVJBQklDIEtBU1JBVEFOIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDAwMjAgMDY0RDs7OztOO0FSQUJJQyBTUEFDSU5HIEtBU1JBVEFOOzs7OworRkU3NjtBUkFCSUMgRkFUSEEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDAyMCAwNjRFOzs7O047QVJBQklDIFNQQUNJTkcgRkFUSEFIOzs7OworRkU3NztBUkFCSUMgRkFUSEEgTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjQwIDA2NEU7Ozs7TjtBUkFCSUMgRkFUSEFIIE9OIFRBVFdFRUw7Ozs7CitGRTc4O0FSQUJJQyBEQU1NQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwMDIwIDA2NEY7Ozs7TjtBUkFCSUMgU1BBQ0lORyBEQU1NQUg7Ozs7CitGRTc5O0FSQUJJQyBEQU1NQSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDAgMDY0Rjs7OztOO0FSQUJJQyBEQU1NQUggT04gVEFUV0VFTDs7OzsKK0ZFN0E7QVJBQklDIEtBU1JBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDAwMjAgMDY1MDs7OztOO0FSQUJJQyBTUEFDSU5HIEtBU1JBSDs7OzsKK0ZFN0I7QVJBQklDIEtBU1JBIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0MCAwNjUwOzs7O047QVJBQklDIEtBU1JBSCBPTiBUQVRXRUVMOzs7OworRkU3QztBUkFCSUMgU0hBRERBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDAwMjAgMDY1MTs7OztOO0FSQUJJQyBTUEFDSU5HIFNIQUREQUg7Ozs7CitGRTdEO0FSQUJJQyBTSEFEREEgTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjQwIDA2NTE7Ozs7TjtBUkFCSUMgU0hBRERBSCBPTiBUQVRXRUVMOzs7OworRkU3RTtBUkFCSUMgU1VLVU4gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDAyMCAwNjUyOzs7O047QVJBQklDIFNQQUNJTkcgU1VLVU47Ozs7CitGRTdGO0FSQUJJQyBTVUtVTiBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDAgMDY1Mjs7OztOO0FSQUJJQyBTVUtVTiBPTiBUQVRXRUVMOzs7OworRkU4MDtBUkFCSUMgTEVUVEVSIEhBTVpBIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjE7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSEFNWkFIOzs7OworRkU4MTtBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBNQUREQSBBQk9WRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjIyOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIE1BRERBSCBPTiBBTEVGOzs7OworRkU4MjtBUkFCSUMgTEVUVEVSIEFMRUYgV0lUSCBNQUREQSBBQk9WRSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjIyOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBNQUREQUggT04gQUxFRjs7OzsKK0ZFODM7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyMzs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQU1aQUggT04gQUxFRjs7OzsKK0ZFODQ7QVJBQklDIExFVFRFUiBBTEVGIFdJVEggSEFNWkEgQUJPVkUgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyMzs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgSEFNWkFIIE9OIEFMRUY7Ozs7CitGRTg1O0FSQUJJQyBMRVRURVIgV0FXIFdJVEggSEFNWkEgQUJPVkUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyNDs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQU1aQUggT04gV0FXOzs7OworRkU4NjtBUkFCSUMgTEVUVEVSIFdBVyBXSVRIIEhBTVpBIEFCT1ZFIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjQ7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEhBTVpBSCBPTiBXQVc7Ozs7CitGRTg3O0FSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEJFTE9XIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjU7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSEFNWkFIIFVOREVSIEFMRUY7Ozs7CitGRTg4O0FSQUJJQyBMRVRURVIgQUxFRiBXSVRIIEhBTVpBIEJFTE9XIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjU7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEhBTVpBSCBVTkRFUiBBTEVGOzs7OworRkU4OTtBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MjY7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSEFNWkFIIE9OIFlBOzs7OworRkU4QTtBUkFCSUMgTEVUVEVSIFlFSCBXSVRIIEhBTVpBIEFCT1ZFIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MjY7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEhBTVpBSCBPTiBZQTs7OzsKK0ZFOEI7QVJBQklDIExFVFRFUiBZRUggV0lUSCBIQU1aQSBBQk9WRSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyNjs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBIQU1aQUggT04gWUE7Ozs7CitGRThDO0FSQUJJQyBMRVRURVIgWUVIIFdJVEggSEFNWkEgQUJPVkUgTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjI2Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgSEFNWkFIIE9OIFlBOzs7OworRkU4RDtBUkFCSUMgTEVUVEVSIEFMRUYgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyNzs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBBTEVGOzs7OworRkU4RTtBUkFCSUMgTEVUVEVSIEFMRUYgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyNzs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgQUxFRjs7OzsKK0ZFOEY7QVJBQklDIExFVFRFUiBCRUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyODs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBCQUE7Ozs7CitGRTkwO0FSQUJJQyBMRVRURVIgQkVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2Mjg7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEJBQTs7OzsKK0ZFOTE7QVJBQklDIExFVFRFUiBCRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2Mjg7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgQkFBOzs7OworRkU5MjtBUkFCSUMgTEVUVEVSIEJFSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2Mjg7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBCQUE7Ozs7CitGRTkzO0FSQUJJQyBMRVRURVIgVEVIIE1BUkJVVEEgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyOTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBUQUEgTUFSQlVUQUg7Ozs7CitGRTk0O0FSQUJJQyBMRVRURVIgVEVIIE1BUkJVVEEgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyOTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgVEFBIE1BUkJVVEFIOzs7OworRkU5NTtBUkFCSUMgTEVUVEVSIFRFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJBOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFRBQTs7OzsKK0ZFOTY7QVJBQklDIExFVFRFUiBURUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYyQTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgVEFBOzs7OworRkU5NztBUkFCSUMgTEVUVEVSIFRFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQTs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBUQUE7Ozs7CitGRTk4O0FSQUJJQyBMRVRURVIgVEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYyQTs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIFRBQTs7OzsKK0ZFOTk7QVJBQklDIExFVFRFUiBUSEVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkI7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgVEhBQTs7OzsKK0ZFOUE7QVJBQklDIExFVFRFUiBUSEVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkI7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFRIQUE7Ozs7CitGRTlCO0FSQUJJQyBMRVRURVIgVEhFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQjs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBUSEFBOzs7OworRkU5QztBUkFCSUMgTEVUVEVSIFRIRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjJCOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgVEhBQTs7OzsKK0ZFOUQ7QVJBQklDIExFVFRFUiBKRUVNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkM7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSkVFTTs7OzsKK0ZFOUU7QVJBQklDIExFVFRFUiBKRUVNIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkM7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEpFRU07Ozs7CitGRTlGO0FSQUJJQyBMRVRURVIgSkVFTSBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYyQzs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBKRUVNOzs7OworRkVBMDtBUkFCSUMgTEVUVEVSIEpFRU0gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjJDOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgSkVFTTs7OzsKK0ZFQTE7QVJBQklDIExFVFRFUiBIQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYyRDs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQUE7Ozs7CitGRUEyO0FSQUJJQyBMRVRURVIgSEFIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MkQ7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEhBQTs7OzsKK0ZFQTM7QVJBQklDIExFVFRFUiBIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkQ7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgSEFBOzs7OworRkVBNDtBUkFCSUMgTEVUVEVSIEhBSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MkQ7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBIQUE7Ozs7CitGRUE1O0FSQUJJQyBMRVRURVIgS0hBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjJFOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEtIQUE7Ozs7CitGRUE2O0FSQUJJQyBMRVRURVIgS0hBSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJFOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBLSEFBOzs7OworRkVBNztBUkFCSUMgTEVUVEVSIEtIQUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MkU7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgS0hBQTs7OzsKK0ZFQTg7QVJBQklDIExFVFRFUiBLSEFIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYyRTs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEtIQUE7Ozs7CitGRUE5O0FSQUJJQyBMRVRURVIgREFMIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MkY7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgREFMOzs7OworRkVBQTtBUkFCSUMgTEVUVEVSIERBTCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjJGOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBEQUw7Ozs7CitGRUFCO0FSQUJJQyBMRVRURVIgVEhBTCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjMwOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFRIQUw7Ozs7CitGRUFDO0FSQUJJQyBMRVRURVIgVEhBTCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjMwOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBUSEFMOzs7OworRkVBRDtBUkFCSUMgTEVUVEVSIFJFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjMxOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFJBOzs7OworRkVBRTtBUkFCSUMgTEVUVEVSIFJFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjMxOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBSQTs7OzsKK0ZFQUY7QVJBQklDIExFVFRFUiBaQUlOIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzI7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgWkFJTjs7OzsKK0ZFQjA7QVJBQklDIExFVFRFUiBaQUlOIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzI7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFpBSU47Ozs7CitGRUIxO0FSQUJJQyBMRVRURVIgU0VFTiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjMzOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFNFRU47Ozs7CitGRUIyO0FSQUJJQyBMRVRURVIgU0VFTiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjMzOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBTRUVOOzs7OworRkVCMztBUkFCSUMgTEVUVEVSIFNFRU4gSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzM7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgU0VFTjs7OzsKK0ZFQjQ7QVJBQklDIExFVFRFUiBTRUVOIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzMzs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIFNFRU47Ozs7CitGRUI1O0FSQUJJQyBMRVRURVIgU0hFRU4gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNDs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBTSEVFTjs7OzsKK0ZFQjY7QVJBQklDIExFVFRFUiBTSEVFTiBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM0Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBTSEVFTjs7OzsKK0ZFQjc7QVJBQklDIExFVFRFUiBTSEVFTiBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNDs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBTSEVFTjs7OzsKK0ZFQjg7QVJBQklDIExFVFRFUiBTSEVFTiBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MzQ7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBTSEVFTjs7OzsKK0ZFQjk7QVJBQklDIExFVFRFUiBTQUQgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzNTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBTQUQ7Ozs7CitGRUJBO0FSQUJJQyBMRVRURVIgU0FEIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2MzU7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFNBRDs7OzsKK0ZFQkI7QVJBQklDIExFVFRFUiBTQUQgSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2MzU7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgU0FEOzs7OworRkVCQztBUkFCSUMgTEVUVEVSIFNBRCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2MzU7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBTQUQ7Ozs7CitGRUJEO0FSQUJJQyBMRVRURVIgREFEIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2MzY7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgREFEOzs7OworRkVCRTtBUkFCSUMgTEVUVEVSIERBRCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM2Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBEQUQ7Ozs7CitGRUJGO0FSQUJJQyBMRVRURVIgREFEIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjM2Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIERBRDs7OzsKK0ZFQzA7QVJBQklDIExFVFRFUiBEQUQgTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjM2Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgREFEOzs7OworRkVDMTtBUkFCSUMgTEVUVEVSIFRBSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM3Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFRBSDs7OzsKK0ZFQzI7QVJBQklDIExFVFRFUiBUQUggRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzNzs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgVEFIOzs7OworRkVDMztBUkFCSUMgTEVUVEVSIFRBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzNzs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBUQUg7Ozs7CitGRUM0O0FSQUJJQyBMRVRURVIgVEFIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzNzs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIFRBSDs7OzsKK0ZFQzU7QVJBQklDIExFVFRFUiBaQUggSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDYzODs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBESEFIOzs7OworRkVDNjtBUkFCSUMgTEVUVEVSIFpBSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjM4Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBESEFIOzs7OworRkVDNztBUkFCSUMgTEVUVEVSIFpBSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzODs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBESEFIOzs7OworRkVDODtBUkFCSUMgTEVUVEVSIFpBSCBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2Mzg7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBESEFIOzs7OworRkVDOTtBUkFCSUMgTEVUVEVSIEFJTiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjM5Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEFJTjs7OzsKK0ZFQ0E7QVJBQklDIExFVFRFUiBBSU4gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDYzOTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgQUlOOzs7OworRkVDQjtBUkFCSUMgTEVUVEVSIEFJTiBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDYzOTs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBBSU47Ozs7CitGRUNDO0FSQUJJQyBMRVRURVIgQUlOIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzOTs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEFJTjs7OzsKK0ZFQ0Q7QVJBQklDIExFVFRFUiBHSEFJTiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjNBOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEdIQUlOOzs7OworRkVDRTtBUkFCSUMgTEVUVEVSIEdIQUlOIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2M0E7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEdIQUlOOzs7OworRkVDRjtBUkFCSUMgTEVUVEVSIEdIQUlOIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjNBOzs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIEdIQUlOOzs7OworRkVEMDtBUkFCSUMgTEVUVEVSIEdIQUlOIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDYzQTs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEdIQUlOOzs7OworRkVEMTtBUkFCSUMgTEVUVEVSIEZFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQxOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEZBOzs7OworRkVEMjtBUkFCSUMgTEVUVEVSIEZFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQxOzs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBGQTs7OzsKK0ZFRDM7QVJBQklDIExFVFRFUiBGRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDE7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgRkE7Ozs7CitGRUQ0O0FSQUJJQyBMRVRURVIgRkVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0MTs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEZBOzs7OworRkVENTtBUkFCSUMgTEVUVEVSIFFBRiBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQyOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFFBRjs7OzsKK0ZFRDY7QVJBQklDIExFVFRFUiBRQUYgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0Mjs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgUUFGOzs7OworRkVENztBUkFCSUMgTEVUVEVSIFFBRiBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0Mjs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBRQUY7Ozs7CitGRUQ4O0FSQUJJQyBMRVRURVIgUUFGIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0Mjs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIFFBRjs7OzsKK0ZFRDk7QVJBQklDIExFVFRFUiBLQUYgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0Mzs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBDQUY7Ozs7CitGRURBO0FSQUJJQyBMRVRURVIgS0FGIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDM7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIENBRjs7OzsKK0ZFREI7QVJBQklDIExFVFRFUiBLQUYgSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDM7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgQ0FGOzs7OworRkVEQztBUkFCSUMgTEVUVEVSIEtBRiBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDM7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBDQUY7Ozs7CitGRUREO0FSQUJJQyBMRVRURVIgTEFNIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDQ7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgTEFNOzs7OworRkVERTtBUkFCSUMgTEVUVEVSIExBTSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ0Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBMQU07Ozs7CitGRURGO0FSQUJJQyBMRVRURVIgTEFNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ0Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIExBTTs7OzsKK0ZFRTA7QVJBQklDIExFVFRFUiBMQU0gTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjQ0Ozs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgTEFNOzs7OworRkVFMTtBUkFCSUMgTEVUVEVSIE1FRU0gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBNRUVNOzs7OworRkVFMjtBUkFCSUMgTEVUVEVSIE1FRU0gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NTs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgTUVFTTs7OzsKK0ZFRTM7QVJBQklDIExFVFRFUiBNRUVNIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ1Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIE1FRU07Ozs7CitGRUU0O0FSQUJJQyBMRVRURVIgTUVFTSBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDU7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBNRUVNOzs7OworRkVFNTtBUkFCSUMgTEVUVEVSIE5PT04gSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0Njs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBOT09OOzs7OworRkVFNjtBUkFCSUMgTEVUVEVSIE5PT04gRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0Njs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgTk9PTjs7OzsKK0ZFRTc7QVJBQklDIExFVFRFUiBOT09OIElOSVRJQUwgRk9STTtMbzswO0FMOzxpbml0aWFsPiAwNjQ2Ozs7O047R0xZUEggRk9SIElOSVRJQUwgQVJBQklDIE5PT047Ozs7CitGRUU4O0FSQUJJQyBMRVRURVIgTk9PTiBNRURJQUwgRk9STTtMbzswO0FMOzxtZWRpYWw+IDA2NDY7Ozs7TjtHTFlQSCBGT1IgTUVESUFMIEFSQUJJQyBOT09OOzs7OworRkVFOTtBUkFCSUMgTEVUVEVSIEhFSCBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ3Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEhBOzs7OworRkVFQTtBUkFCSUMgTEVUVEVSIEhFSCBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ3Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBIQTs7OzsKK0ZFRUI7QVJBQklDIExFVFRFUiBIRUggSU5JVElBTCBGT1JNO0xvOzA7QUw7PGluaXRpYWw+IDA2NDc7Ozs7TjtHTFlQSCBGT1IgSU5JVElBTCBBUkFCSUMgSEE7Ozs7CitGRUVDO0FSQUJJQyBMRVRURVIgSEVIIE1FRElBTCBGT1JNO0xvOzA7QUw7PG1lZGlhbD4gMDY0Nzs7OztOO0dMWVBIIEZPUiBNRURJQUwgQVJBQklDIEhBOzs7OworRkVFRDtBUkFCSUMgTEVUVEVSIFdBVyBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ4Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIFdBVzs7OzsKK0ZFRUU7QVJBQklDIExFVFRFUiBXQVcgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0ODs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgV0FXOzs7OworRkVFRjtBUkFCSUMgTEVUVEVSIEFMRUYgTUFLU1VSQSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ5Ozs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIEFMRUYgTUFRU1VSQUg7Ozs7CitGRUYwO0FSQUJJQyBMRVRURVIgQUxFRiBNQUtTVVJBIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDk7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIEFMRUYgTUFRU1VSQUg7Ozs7CitGRUYxO0FSQUJJQyBMRVRURVIgWUVIIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NEE7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgWUE7Ozs7CitGRUYyO0FSQUJJQyBMRVRURVIgWUVIIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NEE7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIFlBOzs7OworRkVGMztBUkFCSUMgTEVUVEVSIFlFSCBJTklUSUFMIEZPUk07TG87MDtBTDs8aW5pdGlhbD4gMDY0QTs7OztOO0dMWVBIIEZPUiBJTklUSUFMIEFSQUJJQyBZQTs7OzsKK0ZFRjQ7QVJBQklDIExFVFRFUiBZRUggTUVESUFMIEZPUk07TG87MDtBTDs8bWVkaWFsPiAwNjRBOzs7O047R0xZUEggRk9SIE1FRElBTCBBUkFCSUMgWUE7Ozs7CitGRUY1O0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggTUFEREEgQUJPVkUgSVNPTEFURUQgRk9STTtMbzswO0FMOzxpc29sYXRlZD4gMDY0NCAwNjIyOzs7O047R0xZUEggRk9SIElTT0xBVEUgQVJBQklDIE1BRERBSCBPTiBMSUdBVFVSRSBMQU0gQUxFRjs7OzsKK0ZFRjY7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgV0lUSCBNQUREQSBBQk9WRSBGSU5BTCBGT1JNO0xvOzA7QUw7PGZpbmFsPiAwNjQ0IDA2MjI7Ozs7TjtHTFlQSCBGT1IgRklOQUwgQVJBQklDIE1BRERBSCBPTiBMSUdBVFVSRSBMQU0gQUxFRjs7OzsKK0ZFRjc7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgV0lUSCBIQU1aQSBBQk9WRSBJU09MQVRFRCBGT1JNO0xvOzA7QUw7PGlzb2xhdGVkPiAwNjQ0IDA2MjM7Ozs7TjtHTFlQSCBGT1IgSVNPTEFURSBBUkFCSUMgSEFNWkFIIE9OIExJR0FUVVJFIExBTSBBTEVGOzs7OworRkVGODtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBXSVRIIEhBTVpBIEFCT1ZFIEZJTkFMIEZPUk07TG87MDtBTDs8ZmluYWw+IDA2NDQgMDYyMzs7OztOO0dMWVBIIEZPUiBGSU5BTCBBUkFCSUMgSEFNWkFIIE9OIExJR0FUVVJFIExBTSBBTEVGOzs7OworRkVGOTtBUkFCSUMgTElHQVRVUkUgTEFNIFdJVEggQUxFRiBXSVRIIEhBTVpBIEJFTE9XIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDQgMDYyNTs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBIQU1aQUggVU5ERVIgTElHQVRVUkUgTEFNIEFMRUY7Ozs7CitGRUZBO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIFdJVEggSEFNWkEgQkVMT1cgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NCAwNjI1Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBIQU1aQUggVU5ERVIgTElHQVRVUkUgTEFNIEFMRUY7Ozs7CitGRUZCO0FSQUJJQyBMSUdBVFVSRSBMQU0gV0lUSCBBTEVGIElTT0xBVEVEIEZPUk07TG87MDtBTDs8aXNvbGF0ZWQ+IDA2NDQgMDYyNzs7OztOO0dMWVBIIEZPUiBJU09MQVRFIEFSQUJJQyBMSUdBVFVSRSBMQU0gQUxFRjs7OzsKK0ZFRkM7QVJBQklDIExJR0FUVVJFIExBTSBXSVRIIEFMRUYgRklOQUwgRk9STTtMbzswO0FMOzxmaW5hbD4gMDY0NCAwNjI3Ozs7O047R0xZUEggRk9SIEZJTkFMIEFSQUJJQyBMSUdBVFVSRSBMQU0gQUxFRjs7OzsKK0ZFRkY7WkVSTyBXSURUSCBOTy1CUkVBSyBTUEFDRTtDZjswO0JOOzs7OztOO0JZVEUgT1JERVIgTUFSSzs7OzsKK0ZGMDE7RlVMTFdJRFRIIEVYQ0xBTUFUSU9OIE1BUks7UG87MDtPTjs8d2lkZT4gMDAyMTs7OztOOzs7OzsKK0ZGMDI7RlVMTFdJRFRIIFFVT1RBVElPTiBNQVJLO1BvOzA7T047PHdpZGU+IDAwMjI7Ozs7Tjs7Ozs7CitGRjAzO0ZVTExXSURUSCBOVU1CRVIgU0lHTjtQbzswO0VUOzx3aWRlPiAwMDIzOzs7O047Ozs7OworRkYwNDtGVUxMV0lEVEggRE9MTEFSIFNJR047U2M7MDtFVDs8d2lkZT4gMDAyNDs7OztOOzs7OzsKK0ZGMDU7RlVMTFdJRFRIIFBFUkNFTlQgU0lHTjtQbzswO0VUOzx3aWRlPiAwMDI1Ozs7O047Ozs7OworRkYwNjtGVUxMV0lEVEggQU1QRVJTQU5EO1BvOzA7T047PHdpZGU+IDAwMjY7Ozs7Tjs7Ozs7CitGRjA3O0ZVTExXSURUSCBBUE9TVFJPUEhFO1BvOzA7T047PHdpZGU+IDAwMjc7Ozs7Tjs7Ozs7CitGRjA4O0ZVTExXSURUSCBMRUZUIFBBUkVOVEhFU0lTO1BzOzA7T047PHdpZGU+IDAwMjg7Ozs7TjtGVUxMV0lEVEggT1BFTklORyBQQVJFTlRIRVNJUzs7OzsKK0ZGMDk7RlVMTFdJRFRIIFJJR0hUIFBBUkVOVEhFU0lTO1BlOzA7T047PHdpZGU+IDAwMjk7Ozs7TjtGVUxMV0lEVEggQ0xPU0lORyBQQVJFTlRIRVNJUzs7OzsKK0ZGMEE7RlVMTFdJRFRIIEFTVEVSSVNLO1BvOzA7T047PHdpZGU+IDAwMkE7Ozs7Tjs7Ozs7CitGRjBCO0ZVTExXSURUSCBQTFVTIFNJR047U207MDtFVDs8d2lkZT4gMDAyQjs7OztOOzs7OzsKK0ZGMEM7RlVMTFdJRFRIIENPTU1BO1BvOzA7Q1M7PHdpZGU+IDAwMkM7Ozs7Tjs7Ozs7CitGRjBEO0ZVTExXSURUSCBIWVBIRU4tTUlOVVM7UGQ7MDtFVDs8d2lkZT4gMDAyRDs7OztOOzs7OzsKK0ZGMEU7RlVMTFdJRFRIIEZVTEwgU1RPUDtQbzswO0NTOzx3aWRlPiAwMDJFOzs7O047RlVMTFdJRFRIIFBFUklPRDs7OzsKK0ZGMEY7RlVMTFdJRFRIIFNPTElEVVM7UG87MDtFUzs8d2lkZT4gMDAyRjs7OztOO0ZVTExXSURUSCBTTEFTSDs7OzsKK0ZGMTA7RlVMTFdJRFRIIERJR0lUIFpFUk87TmQ7MDtFTjs8d2lkZT4gMDAzMDswOzA7MDtOOzs7OzsKK0ZGMTE7RlVMTFdJRFRIIERJR0lUIE9ORTtOZDswO0VOOzx3aWRlPiAwMDMxOzE7MTsxO047Ozs7OworRkYxMjtGVUxMV0lEVEggRElHSVQgVFdPO05kOzA7RU47PHdpZGU+IDAwMzI7MjsyOzI7Tjs7Ozs7CitGRjEzO0ZVTExXSURUSCBESUdJVCBUSFJFRTtOZDswO0VOOzx3aWRlPiAwMDMzOzM7MzszO047Ozs7OworRkYxNDtGVUxMV0lEVEggRElHSVQgRk9VUjtOZDswO0VOOzx3aWRlPiAwMDM0OzQ7NDs0O047Ozs7OworRkYxNTtGVUxMV0lEVEggRElHSVQgRklWRTtOZDswO0VOOzx3aWRlPiAwMDM1OzU7NTs1O047Ozs7OworRkYxNjtGVUxMV0lEVEggRElHSVQgU0lYO05kOzA7RU47PHdpZGU+IDAwMzY7Njs2OzY7Tjs7Ozs7CitGRjE3O0ZVTExXSURUSCBESUdJVCBTRVZFTjtOZDswO0VOOzx3aWRlPiAwMDM3Ozc7Nzs3O047Ozs7OworRkYxODtGVUxMV0lEVEggRElHSVQgRUlHSFQ7TmQ7MDtFTjs8d2lkZT4gMDAzODs4Ozg7ODtOOzs7OzsKK0ZGMTk7RlVMTFdJRFRIIERJR0lUIE5JTkU7TmQ7MDtFTjs8d2lkZT4gMDAzOTs5Ozk7OTtOOzs7OzsKK0ZGMUE7RlVMTFdJRFRIIENPTE9OO1BvOzA7Q1M7PHdpZGU+IDAwM0E7Ozs7Tjs7Ozs7CitGRjFCO0ZVTExXSURUSCBTRU1JQ09MT047UG87MDtPTjs8d2lkZT4gMDAzQjs7OztOOzs7OzsKK0ZGMUM7RlVMTFdJRFRIIExFU1MtVEhBTiBTSUdOO1NtOzA7T047PHdpZGU+IDAwM0M7Ozs7Tjs7Ozs7CitGRjFEO0ZVTExXSURUSCBFUVVBTFMgU0lHTjtTbTswO09OOzx3aWRlPiAwMDNEOzs7O047Ozs7OworRkYxRTtGVUxMV0lEVEggR1JFQVRFUi1USEFOIFNJR047U207MDtPTjs8d2lkZT4gMDAzRTs7OztOOzs7OzsKK0ZGMUY7RlVMTFdJRFRIIFFVRVNUSU9OIE1BUks7UG87MDtPTjs8d2lkZT4gMDAzRjs7OztOOzs7OzsKK0ZGMjA7RlVMTFdJRFRIIENPTU1FUkNJQUwgQVQ7UG87MDtPTjs8d2lkZT4gMDA0MDs7OztOOzs7OzsKK0ZGMjE7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEE7THU7MDtMOzx3aWRlPiAwMDQxOzs7O047Ozs7RkY0MTsKK0ZGMjI7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEI7THU7MDtMOzx3aWRlPiAwMDQyOzs7O047Ozs7RkY0MjsKK0ZGMjM7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEM7THU7MDtMOzx3aWRlPiAwMDQzOzs7O047Ozs7RkY0MzsKK0ZGMjQ7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEQ7THU7MDtMOzx3aWRlPiAwMDQ0Ozs7O047Ozs7RkY0NDsKK0ZGMjU7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEU7THU7MDtMOzx3aWRlPiAwMDQ1Ozs7O047Ozs7RkY0NTsKK0ZGMjY7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEY7THU7MDtMOzx3aWRlPiAwMDQ2Ozs7O047Ozs7RkY0NjsKK0ZGMjc7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEc7THU7MDtMOzx3aWRlPiAwMDQ3Ozs7O047Ozs7RkY0NzsKK0ZGMjg7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEg7THU7MDtMOzx3aWRlPiAwMDQ4Ozs7O047Ozs7RkY0ODsKK0ZGMjk7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEk7THU7MDtMOzx3aWRlPiAwMDQ5Ozs7O047Ozs7RkY0OTsKK0ZGMkE7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEo7THU7MDtMOzx3aWRlPiAwMDRBOzs7O047Ozs7RkY0QTsKK0ZGMkI7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEs7THU7MDtMOzx3aWRlPiAwMDRCOzs7O047Ozs7RkY0QjsKK0ZGMkM7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIEw7THU7MDtMOzx3aWRlPiAwMDRDOzs7O047Ozs7RkY0QzsKK0ZGMkQ7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIE07THU7MDtMOzx3aWRlPiAwMDREOzs7O047Ozs7RkY0RDsKK0ZGMkU7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIE47THU7MDtMOzx3aWRlPiAwMDRFOzs7O047Ozs7RkY0RTsKK0ZGMkY7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIE87THU7MDtMOzx3aWRlPiAwMDRGOzs7O047Ozs7RkY0RjsKK0ZGMzA7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFA7THU7MDtMOzx3aWRlPiAwMDUwOzs7O047Ozs7RkY1MDsKK0ZGMzE7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFE7THU7MDtMOzx3aWRlPiAwMDUxOzs7O047Ozs7RkY1MTsKK0ZGMzI7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFI7THU7MDtMOzx3aWRlPiAwMDUyOzs7O047Ozs7RkY1MjsKK0ZGMzM7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFM7THU7MDtMOzx3aWRlPiAwMDUzOzs7O047Ozs7RkY1MzsKK0ZGMzQ7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFQ7THU7MDtMOzx3aWRlPiAwMDU0Ozs7O047Ozs7RkY1NDsKK0ZGMzU7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFU7THU7MDtMOzx3aWRlPiAwMDU1Ozs7O047Ozs7RkY1NTsKK0ZGMzY7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFY7THU7MDtMOzx3aWRlPiAwMDU2Ozs7O047Ozs7RkY1NjsKK0ZGMzc7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFc7THU7MDtMOzx3aWRlPiAwMDU3Ozs7O047Ozs7RkY1NzsKK0ZGMzg7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFg7THU7MDtMOzx3aWRlPiAwMDU4Ozs7O047Ozs7RkY1ODsKK0ZGMzk7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFk7THU7MDtMOzx3aWRlPiAwMDU5Ozs7O047Ozs7RkY1OTsKK0ZGM0E7RlVMTFdJRFRIIExBVElOIENBUElUQUwgTEVUVEVSIFo7THU7MDtMOzx3aWRlPiAwMDVBOzs7O047Ozs7RkY1QTsKK0ZGM0I7RlVMTFdJRFRIIExFRlQgU1FVQVJFIEJSQUNLRVQ7UHM7MDtPTjs8d2lkZT4gMDA1Qjs7OztOO0ZVTExXSURUSCBPUEVOSU5HIFNRVUFSRSBCUkFDS0VUOzs7OworRkYzQztGVUxMV0lEVEggUkVWRVJTRSBTT0xJRFVTO1BvOzA7T047PHdpZGU+IDAwNUM7Ozs7TjtGVUxMV0lEVEggQkFDS1NMQVNIOzs7OworRkYzRDtGVUxMV0lEVEggUklHSFQgU1FVQVJFIEJSQUNLRVQ7UGU7MDtPTjs8d2lkZT4gMDA1RDs7OztOO0ZVTExXSURUSCBDTE9TSU5HIFNRVUFSRSBCUkFDS0VUOzs7OworRkYzRTtGVUxMV0lEVEggQ0lSQ1VNRkxFWCBBQ0NFTlQ7U2s7MDtPTjs8d2lkZT4gMDA1RTs7OztOO0ZVTExXSURUSCBTUEFDSU5HIENJUkNVTUZMRVg7Ozs7CitGRjNGO0ZVTExXSURUSCBMT1cgTElORTtQYzswO09OOzx3aWRlPiAwMDVGOzs7O047RlVMTFdJRFRIIFNQQUNJTkcgVU5ERVJTQ09SRTs7OzsKK0ZGNDA7RlVMTFdJRFRIIEdSQVZFIEFDQ0VOVDtTazswO09OOzx3aWRlPiAwMDYwOzs7O047RlVMTFdJRFRIIFNQQUNJTkcgR1JBVkU7Ozs7CitGRjQxO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgQTtMbDswO0w7PHdpZGU+IDAwNjE7Ozs7Tjs7O0ZGMjE7O0ZGMjEKK0ZGNDI7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBCO0xsOzA7TDs8d2lkZT4gMDA2Mjs7OztOOzs7RkYyMjs7RkYyMgorRkY0MztGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEM7TGw7MDtMOzx3aWRlPiAwMDYzOzs7O047OztGRjIzOztGRjIzCitGRjQ0O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgRDtMbDswO0w7PHdpZGU+IDAwNjQ7Ozs7Tjs7O0ZGMjQ7O0ZGMjQKK0ZGNDU7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBFO0xsOzA7TDs8d2lkZT4gMDA2NTs7OztOOzs7RkYyNTs7RkYyNQorRkY0NjtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEY7TGw7MDtMOzx3aWRlPiAwMDY2Ozs7O047OztGRjI2OztGRjI2CitGRjQ3O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgRztMbDswO0w7PHdpZGU+IDAwNjc7Ozs7Tjs7O0ZGMjc7O0ZGMjcKK0ZGNDg7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBIO0xsOzA7TDs8d2lkZT4gMDA2ODs7OztOOzs7RkYyODs7RkYyOAorRkY0OTtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEk7TGw7MDtMOzx3aWRlPiAwMDY5Ozs7O047OztGRjI5OztGRjI5CitGRjRBO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgSjtMbDswO0w7PHdpZGU+IDAwNkE7Ozs7Tjs7O0ZGMkE7O0ZGMkEKK0ZGNEI7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBLO0xsOzA7TDs8d2lkZT4gMDA2Qjs7OztOOzs7RkYyQjs7RkYyQgorRkY0QztGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIEw7TGw7MDtMOzx3aWRlPiAwMDZDOzs7O047OztGRjJDOztGRjJDCitGRjREO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgTTtMbDswO0w7PHdpZGU+IDAwNkQ7Ozs7Tjs7O0ZGMkQ7O0ZGMkQKK0ZGNEU7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBOO0xsOzA7TDs8d2lkZT4gMDA2RTs7OztOOzs7RkYyRTs7RkYyRQorRkY0RjtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIE87TGw7MDtMOzx3aWRlPiAwMDZGOzs7O047OztGRjJGOztGRjJGCitGRjUwO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgUDtMbDswO0w7PHdpZGU+IDAwNzA7Ozs7Tjs7O0ZGMzA7O0ZGMzAKK0ZGNTE7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBRO0xsOzA7TDs8d2lkZT4gMDA3MTs7OztOOzs7RkYzMTs7RkYzMQorRkY1MjtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFI7TGw7MDtMOzx3aWRlPiAwMDcyOzs7O047OztGRjMyOztGRjMyCitGRjUzO0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgUztMbDswO0w7PHdpZGU+IDAwNzM7Ozs7Tjs7O0ZGMzM7O0ZGMzMKK0ZGNTQ7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBUO0xsOzA7TDs8d2lkZT4gMDA3NDs7OztOOzs7RkYzNDs7RkYzNAorRkY1NTtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFU7TGw7MDtMOzx3aWRlPiAwMDc1Ozs7O047OztGRjM1OztGRjM1CitGRjU2O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgVjtMbDswO0w7PHdpZGU+IDAwNzY7Ozs7Tjs7O0ZGMzY7O0ZGMzYKK0ZGNTc7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBXO0xsOzA7TDs8d2lkZT4gMDA3Nzs7OztOOzs7RkYzNzs7RkYzNworRkY1ODtGVUxMV0lEVEggTEFUSU4gU01BTEwgTEVUVEVSIFg7TGw7MDtMOzx3aWRlPiAwMDc4Ozs7O047OztGRjM4OztGRjM4CitGRjU5O0ZVTExXSURUSCBMQVRJTiBTTUFMTCBMRVRURVIgWTtMbDswO0w7PHdpZGU+IDAwNzk7Ozs7Tjs7O0ZGMzk7O0ZGMzkKK0ZGNUE7RlVMTFdJRFRIIExBVElOIFNNQUxMIExFVFRFUiBaO0xsOzA7TDs8d2lkZT4gMDA3QTs7OztOOzs7RkYzQTs7RkYzQQorRkY1QjtGVUxMV0lEVEggTEVGVCBDVVJMWSBCUkFDS0VUO1BzOzA7T047PHdpZGU+IDAwN0I7Ozs7TjtGVUxMV0lEVEggT1BFTklORyBDVVJMWSBCUkFDS0VUOzs7OworRkY1QztGVUxMV0lEVEggVkVSVElDQUwgTElORTtTbTswO09OOzx3aWRlPiAwMDdDOzs7O047RlVMTFdJRFRIIFZFUlRJQ0FMIEJBUjs7OzsKK0ZGNUQ7RlVMTFdJRFRIIFJJR0hUIENVUkxZIEJSQUNLRVQ7UGU7MDtPTjs8d2lkZT4gMDA3RDs7OztOO0ZVTExXSURUSCBDTE9TSU5HIENVUkxZIEJSQUNLRVQ7Ozs7CitGRjVFO0ZVTExXSURUSCBUSUxERTtTbTswO09OOzx3aWRlPiAwMDdFOzs7O047RlVMTFdJRFRIIFNQQUNJTkcgVElMREU7Ozs7CitGRjYxO0hBTEZXSURUSCBJREVPR1JBUEhJQyBGVUxMIFNUT1A7UG87MDtPTjs8bmFycm93PiAzMDAyOzs7O047SEFMRldJRFRIIElERU9HUkFQSElDIFBFUklPRDs7OzsKK0ZGNjI7SEFMRldJRFRIIExFRlQgQ09STkVSIEJSQUNLRVQ7UHM7MDtPTjs8bmFycm93PiAzMDBDOzs7O047SEFMRldJRFRIIE9QRU5JTkcgQ09STkVSIEJSQUNLRVQ7Ozs7CitGRjYzO0hBTEZXSURUSCBSSUdIVCBDT1JORVIgQlJBQ0tFVDtQZTswO09OOzxuYXJyb3c+IDMwMEQ7Ozs7TjtIQUxGV0lEVEggQ0xPU0lORyBDT1JORVIgQlJBQ0tFVDs7OzsKK0ZGNjQ7SEFMRldJRFRIIElERU9HUkFQSElDIENPTU1BO1BvOzA7T047PG5hcnJvdz4gMzAwMTs7OztOOzs7OzsKK0ZGNjU7SEFMRldJRFRIIEtBVEFLQU5BIE1JRERMRSBET1Q7UGM7MDtPTjs8bmFycm93PiAzMEZCOzs7O047Ozs7OworRkY2NjtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFdPO0xvOzA7TDs8bmFycm93PiAzMEYyOzs7O047Ozs7OworRkY2NztIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIEE7TG87MDtMOzxuYXJyb3c+IDMwQTE7Ozs7Tjs7Ozs7CitGRjY4O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgSTtMbzswO0w7PG5hcnJvdz4gMzBBMzs7OztOOzs7OzsKK0ZGNjk7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBVO0xvOzA7TDs8bmFycm93PiAzMEE1Ozs7O047Ozs7OworRkY2QTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIFNNQUxMIEU7TG87MDtMOzxuYXJyb3c+IDMwQTc7Ozs7Tjs7Ozs7CitGRjZCO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgU01BTEwgTztMbzswO0w7PG5hcnJvdz4gMzBBOTs7OztOOzs7OzsKK0ZGNkM7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBZQTtMbzswO0w7PG5hcnJvdz4gMzBFMzs7OztOOzs7OzsKK0ZGNkQ7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBZVTtMbzswO0w7PG5hcnJvdz4gMzBFNTs7OztOOzs7OzsKK0ZGNkU7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBZTztMbzswO0w7PG5hcnJvdz4gMzBFNzs7OztOOzs7OzsKK0ZGNkY7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTUFMTCBUVTtMbzswO0w7PG5hcnJvdz4gMzBDMzs7OztOOzs7OzsKK0ZGNzA7SEFMRldJRFRIIEtBVEFLQU5BLUhJUkFHQU5BIFBST0xPTkdFRCBTT1VORCBNQVJLO0xtOzA7TDs8bmFycm93PiAzMEZDOzs7O047Ozs7OworRkY3MTtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEE7TG87MDtMOzxuYXJyb3c+IDMwQTI7Ozs7Tjs7Ozs7CitGRjcyO0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgSTtMbzswO0w7PG5hcnJvdz4gMzBBNDs7OztOOzs7OzsKK0ZGNzM7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBVO0xvOzA7TDs8bmFycm93PiAzMEE2Ozs7O047Ozs7OworRkY3NDtIQUxGV0lEVEggS0FUQUtBTkEgTEVUVEVSIEU7TG87MDtMOzxuYXJyb3c+IDMwQTg7Ozs7Tjs7Ozs7CitGRjc1O0hBTEZXSURUSCBLQVRBS0FOQSBMRVRURVIgTztMbzswO0w7PG5hcnJvdz4gMzBBQTs7OztOOzs7OzsKK0ZGNzY7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBLQTtMbzswO0w7PG5hcnJvdz4gMzBBQjs7OztOOzs7OzsKK0ZGNzc7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBLSTtMbzswO0w7PG5hcnJvdz4gMzBBRDs7OztOOzs7OzsKK0ZGNzg7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBLVTtMbzswO0w7PG5hcnJvdz4gMzBBRjs7OztOOzs7OzsKK0ZGNzk7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBLRTtMbzswO0w7PG5hcnJvdz4gMzBCMTs7OztOOzs7OzsKK0ZGN0E7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBLTztMbzswO0w7PG5hcnJvdz4gMzBCMzs7OztOOzs7OzsKK0ZGN0I7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTQTtMbzswO0w7PG5hcnJvdz4gMzBCNTs7OztOOzs7OzsKK0ZGN0M7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTSTtMbzswO0w7PG5hcnJvdz4gMzBCNzs7OztOOzs7OzsKK0ZGN0Q7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTVTtMbzswO0w7PG5hcnJvdz4gMzBCOTs7OztOOzs7OzsKK0ZGN0U7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTRTtMbzswO0w7PG5hcnJvdz4gMzBCQjs7OztOOzs7OzsKK0ZGN0Y7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBTTztMbzswO0w7PG5hcnJvdz4gMzBCRDs7OztOOzs7OzsKK0ZGODA7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBUQTtMbzswO0w7PG5hcnJvdz4gMzBCRjs7OztOOzs7OzsKK0ZGODE7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBUSTtMbzswO0w7PG5hcnJvdz4gMzBDMTs7OztOOzs7OzsKK0ZGODI7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBUVTtMbzswO0w7PG5hcnJvdz4gMzBDNDs7OztOOzs7OzsKK0ZGODM7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBURTtMbzswO0w7PG5hcnJvdz4gMzBDNjs7OztOOzs7OzsKK0ZGODQ7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBUTztMbzswO0w7PG5hcnJvdz4gMzBDODs7OztOOzs7OzsKK0ZGODU7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBOQTtMbzswO0w7PG5hcnJvdz4gMzBDQTs7OztOOzs7OzsKK0ZGODY7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBOSTtMbzswO0w7PG5hcnJvdz4gMzBDQjs7OztOOzs7OzsKK0ZGODc7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBOVTtMbzswO0w7PG5hcnJvdz4gMzBDQzs7OztOOzs7OzsKK0ZGODg7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBORTtMbzswO0w7PG5hcnJvdz4gMzBDRDs7OztOOzs7OzsKK0ZGODk7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBOTztMbzswO0w7PG5hcnJvdz4gMzBDRTs7OztOOzs7OzsKK0ZGOEE7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBIQTtMbzswO0w7PG5hcnJvdz4gMzBDRjs7OztOOzs7OzsKK0ZGOEI7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBISTtMbzswO0w7PG5hcnJvdz4gMzBEMjs7OztOOzs7OzsKK0ZGOEM7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBIVTtMbzswO0w7PG5hcnJvdz4gMzBENTs7OztOOzs7OzsKK0ZGOEQ7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBIRTtMbzswO0w7PG5hcnJvdz4gMzBEODs7OztOOzs7OzsKK0ZGOEU7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBITztMbzswO0w7PG5hcnJvdz4gMzBEQjs7OztOOzs7OzsKK0ZGOEY7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBNQTtMbzswO0w7PG5hcnJvdz4gMzBERTs7OztOOzs7OzsKK0ZGOTA7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBNSTtMbzswO0w7PG5hcnJvdz4gMzBERjs7OztOOzs7OzsKK0ZGOTE7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBNVTtMbzswO0w7PG5hcnJvdz4gMzBFMDs7OztOOzs7OzsKK0ZGOTI7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBNRTtMbzswO0w7PG5hcnJvdz4gMzBFMTs7OztOOzs7OzsKK0ZGOTM7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBNTztMbzswO0w7PG5hcnJvdz4gMzBFMjs7OztOOzs7OzsKK0ZGOTQ7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBZQTtMbzswO0w7PG5hcnJvdz4gMzBFNDs7OztOOzs7OzsKK0ZGOTU7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBZVTtMbzswO0w7PG5hcnJvdz4gMzBFNjs7OztOOzs7OzsKK0ZGOTY7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBZTztMbzswO0w7PG5hcnJvdz4gMzBFODs7OztOOzs7OzsKK0ZGOTc7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBSQTtMbzswO0w7PG5hcnJvdz4gMzBFOTs7OztOOzs7OzsKK0ZGOTg7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBSSTtMbzswO0w7PG5hcnJvdz4gMzBFQTs7OztOOzs7OzsKK0ZGOTk7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBSVTtMbzswO0w7PG5hcnJvdz4gMzBFQjs7OztOOzs7OzsKK0ZGOUE7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBSRTtMbzswO0w7PG5hcnJvdz4gMzBFQzs7OztOOzs7OzsKK0ZGOUI7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBSTztMbzswO0w7PG5hcnJvdz4gMzBFRDs7OztOOzs7OzsKK0ZGOUM7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBXQTtMbzswO0w7PG5hcnJvdz4gMzBFRjs7OztOOzs7OzsKK0ZGOUQ7SEFMRldJRFRIIEtBVEFLQU5BIExFVFRFUiBOO0xvOzA7TDs8bmFycm93PiAzMEYzOzs7O047Ozs7OworRkY5RTtIQUxGV0lEVEggS0FUQUtBTkEgVk9JQ0VEIFNPVU5EIE1BUks7TG07MDtMOzxuYXJyb3c+IDMwOTk7Ozs7Tjs7aGFsZndpZHRoIGthdGFrYW5hLWhpcmFnYW5hIHZvaWNlZCBzb3VuZCBtYXJrOzs7CitGRjlGO0hBTEZXSURUSCBLQVRBS0FOQSBTRU1JLVZPSUNFRCBTT1VORCBNQVJLO0xtOzA7TDs8bmFycm93PiAzMDlBOzs7O047O2hhbGZ3aWR0aCBrYXRha2FuYS1oaXJhZ2FuYSBzZW1pLXZvaWNlZCBzb3VuZCBtYXJrOzs7CitGRkEwO0hBTEZXSURUSCBIQU5HVUwgRklMTEVSO0xvOzA7TDs8bmFycm93PiAzMTY0Ozs7O047SEFMRldJRFRIIEhBTkdVTCBDQUUgT007Ozs7CitGRkExO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEtJWUVPSztMbzswO0w7PG5hcnJvdz4gMzEzMTs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEdJWUVPRzs7OzsKK0ZGQTI7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkdLSVlFT0s7TG87MDtMOzxuYXJyb3c+IDMxMzI7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FORyBHSVlFT0c7Ozs7CitGRkEzO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEtJWUVPSy1TSU9TO0xvOzA7TDs8bmFycm93PiAzMTMzOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgR0lZRU9HIFNJT1M7Ozs7CitGRkE0O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE5JRVVOO0xvOzA7TDs8bmFycm93PiAzMTM0Ozs7O047Ozs7OworRkZBNTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBOSUVVTi1DSUVVQztMbzswO0w7PG5hcnJvdz4gMzEzNTs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE5JRVVOIEpJRVVKOzs7OworRkZBNjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBOSUVVTi1ISUVVSDtMbzswO0w7PG5hcnJvdz4gMzEzNjs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE5JRVVOIEhJRVVIOzs7OworRkZBNztIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBUSUtFVVQ7TG87MDtMOzxuYXJyb3c+IDMxMzc7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBESUdFVUQ7Ozs7CitGRkE4O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HVElLRVVUO0xvOzA7TDs8bmFycm93PiAzMTM4Ozs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkcgRElHRVVEOzs7OworRkZBOTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTDtMbzswO0w7PG5hcnJvdz4gMzEzOTs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIExJRVVMOzs7OworRkZBQTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTC1LSVlFT0s7TG87MDtMOzxuYXJyb3c+IDMxM0E7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBHSVlFT0c7Ozs7CitGRkFCO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLU1JRVVNO0xvOzA7TDs8bmFycm93PiAzMTNCOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTElFVUwgTUlFVU07Ozs7CitGRkFDO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLVBJRVVQO0xvOzA7TDs8bmFycm93PiAzMTNDOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTElFVUwgQklFVUI7Ozs7CitGRkFEO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLVNJT1M7TG87MDtMOzxuYXJyb3c+IDMxM0Q7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBTSU9TOzs7OworRkZBRTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBSSUVVTC1USElFVVRIO0xvOzA7TDs8bmFycm93PiAzMTNFOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTElFVUwgVElFVVQ7Ozs7CitGRkFGO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFJJRVVMLVBISUVVUEg7TG87MDtMOzxuYXJyb3c+IDMxM0Y7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBQSUVVUDs7OzsKK0ZGQjA7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUklFVUwtSElFVUg7TG87MDtMOzxuYXJyb3c+IDMxNDA7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBMSUVVTCBISUVVSDs7OzsKK0ZGQjE7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgTUlFVU07TG87MDtMOzxuYXJyb3c+IDMxNDE7Ozs7Tjs7Ozs7CitGRkIyO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFBJRVVQO0xvOzA7TDs8bmFycm93PiAzMTQyOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgQklFVUI7Ozs7CitGRkIzO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HUElFVVA7TG87MDtMOzxuYXJyb3c+IDMxNDM7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FORyBCSUVVQjs7OzsKK0ZGQjQ7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUElFVVAtU0lPUztMbzswO0w7PG5hcnJvdz4gMzE0NDs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEJJRVVCIFNJT1M7Ozs7CitGRkI1O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNJT1M7TG87MDtMOzxuYXJyb3c+IDMxNDU7Ozs7Tjs7Ozs7CitGRkI2O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HU0lPUztMbzswO0w7PG5hcnJvdz4gMzE0Njs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFNTQU5HIFNJT1M7Ozs7CitGRkI3O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIElFVU5HO0xvOzA7TDs8bmFycm93PiAzMTQ3Ozs7O047Ozs7OworRkZCODtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBDSUVVQztMbzswO0w7PG5hcnJvdz4gMzE0ODs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEpJRVVKOzs7OworRkZCOTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBTU0FOR0NJRVVDO0xvOzA7TDs8bmFycm93PiAzMTQ5Ozs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgU1NBTkcgSklFVUo7Ozs7CitGRkJBO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIENISUVVQ0g7TG87MDtMOzxuYXJyb3c+IDMxNEE7Ozs7TjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBDSUVVQzs7OzsKK0ZGQkI7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgS0hJRVVLSDtMbzswO0w7PG5hcnJvdz4gMzE0Qjs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEtJWUVPSzs7OzsKK0ZGQkM7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgVEhJRVVUSDtMbzswO0w7PG5hcnJvdz4gMzE0Qzs7OztOO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFRJRVVUOzs7OworRkZCRDtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBQSElFVVBIO0xvOzA7TDs8bmFycm93PiAzMTREOzs7O047SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgUElFVVA7Ozs7CitGRkJFO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEhJRVVIO0xvOzA7TDs8bmFycm93PiAzMTRFOzs7O047Ozs7OworRkZDMjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBBO0xvOzA7TDs8bmFycm93PiAzMTRGOzs7O047Ozs7OworRkZDMztIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBBRTtMbzswO0w7PG5hcnJvdz4gMzE1MDs7OztOOzs7OzsKK0ZGQzQ7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUE7TG87MDtMOzxuYXJyb3c+IDMxNTE7Ozs7Tjs7Ozs7CitGRkM1O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFlBRTtMbzswO0w7PG5hcnJvdz4gMzE1Mjs7OztOOzs7OzsKK0ZGQzY7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgRU87TG87MDtMOzxuYXJyb3c+IDMxNTM7Ozs7Tjs7Ozs7CitGRkM3O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEU7TG87MDtMOzxuYXJyb3c+IDMxNTQ7Ozs7Tjs7Ozs7CitGRkNBO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFlFTztMbzswO0w7PG5hcnJvdz4gMzE1NTs7OztOOzs7OzsKK0ZGQ0I7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUU7TG87MDtMOzxuYXJyb3c+IDMxNTY7Ozs7Tjs7Ozs7CitGRkNDO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE87TG87MDtMOzxuYXJyb3c+IDMxNTc7Ozs7Tjs7Ozs7CitGRkNEO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFdBO0xvOzA7TDs8bmFycm93PiAzMTU4Ozs7O047Ozs7OworRkZDRTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBXQUU7TG87MDtMOzxuYXJyb3c+IDMxNTk7Ozs7Tjs7Ozs7CitGRkNGO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIE9FO0xvOzA7TDs8bmFycm93PiAzMTVBOzs7O047Ozs7OworRkZEMjtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBZTztMbzswO0w7PG5hcnJvdz4gMzE1Qjs7OztOOzs7OzsKK0ZGRDM7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgVTtMbzswO0w7PG5hcnJvdz4gMzE1Qzs7OztOOzs7OzsKK0ZGRDQ7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgV0VPO0xvOzA7TDs8bmFycm93PiAzMTVEOzs7O047Ozs7OworRkZENTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBXRTtMbzswO0w7PG5hcnJvdz4gMzE1RTs7OztOOzs7OzsKK0ZGRDY7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgV0k7TG87MDtMOzxuYXJyb3c+IDMxNUY7Ozs7Tjs7Ozs7CitGRkQ3O0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIFlVO0xvOzA7TDs8bmFycm93PiAzMTYwOzs7O047Ozs7OworRkZEQTtIQUxGV0lEVEggSEFOR1VMIExFVFRFUiBFVTtMbzswO0w7PG5hcnJvdz4gMzE2MTs7OztOOzs7OzsKK0ZGREI7SEFMRldJRFRIIEhBTkdVTCBMRVRURVIgWUk7TG87MDtMOzxuYXJyb3c+IDMxNjI7Ozs7Tjs7Ozs7CitGRkRDO0hBTEZXSURUSCBIQU5HVUwgTEVUVEVSIEk7TG87MDtMOzxuYXJyb3c+IDMxNjM7Ozs7Tjs7Ozs7CitGRkUwO0ZVTExXSURUSCBDRU5UIFNJR047U2M7MDtFVDs8d2lkZT4gMDBBMjs7OztOOzs7OzsKK0ZGRTE7RlVMTFdJRFRIIFBPVU5EIFNJR047U2M7MDtFVDs8d2lkZT4gMDBBMzs7OztOOzs7OzsKK0ZGRTI7RlVMTFdJRFRIIE5PVCBTSUdOO1NtOzA7T047PHdpZGU+IDAwQUM7Ozs7Tjs7Ozs7CitGRkUzO0ZVTExXSURUSCBNQUNST047U2s7MDtPTjs8d2lkZT4gMDBBRjs7OztOO0ZVTExXSURUSCBTUEFDSU5HIE1BQ1JPTjsqOzs7CitGRkU0O0ZVTExXSURUSCBCUk9LRU4gQkFSO1NvOzA7T047PHdpZGU+IDAwQTY7Ozs7TjtGVUxMV0lEVEggQlJPS0VOIFZFUlRJQ0FMIEJBUjs7OzsKK0ZGRTU7RlVMTFdJRFRIIFlFTiBTSUdOO1NjOzA7RVQ7PHdpZGU+IDAwQTU7Ozs7Tjs7Ozs7CitGRkU2O0ZVTExXSURUSCBXT04gU0lHTjtTYzswO0VUOzx3aWRlPiAyMEE5Ozs7O047Ozs7OworRkZFODtIQUxGV0lEVEggRk9STVMgTElHSFQgVkVSVElDQUw7U287MDtPTjs8bmFycm93PiAyNTAyOzs7O047Ozs7OworRkZFOTtIQUxGV0lEVEggTEVGVFdBUkRTIEFSUk9XO1NtOzA7T047PG5hcnJvdz4gMjE5MDs7OztOOzs7OzsKK0ZGRUE7SEFMRldJRFRIIFVQV0FSRFMgQVJST1c7U207MDtPTjs8bmFycm93PiAyMTkxOzs7O047Ozs7OworRkZFQjtIQUxGV0lEVEggUklHSFRXQVJEUyBBUlJPVztTbTswO09OOzxuYXJyb3c+IDIxOTI7Ozs7Tjs7Ozs7CitGRkVDO0hBTEZXSURUSCBET1dOV0FSRFMgQVJST1c7U207MDtPTjs8bmFycm93PiAyMTkzOzs7O047Ozs7OworRkZFRDtIQUxGV0lEVEggQkxBQ0sgU1FVQVJFO1NvOzA7T047PG5hcnJvdz4gMjVBMDs7OztOOzs7OzsKK0ZGRUU7SEFMRldJRFRIIFdISVRFIENJUkNMRTtTbzswO09OOzxuYXJyb3c+IDI1Q0I7Ozs7Tjs7Ozs7CitGRkY5O0lOVEVSTElORUFSIEFOTk9UQVRJT04gQU5DSE9SO0NmOzA7Qk47Ozs7O047Ozs7OworRkZGQTtJTlRFUkxJTkVBUiBBTk5PVEFUSU9OIFNFUEFSQVRPUjtDZjswO0JOOzs7OztOOzs7OzsKK0ZGRkI7SU5URVJMSU5FQVIgQU5OT1RBVElPTiBURVJNSU5BVE9SO0NmOzA7Qk47Ozs7O047Ozs7OworRkZGQztPQkpFQ1QgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSO1NvOzA7T047Ozs7O047Ozs7OworRkZGRDtSRVBMQUNFTUVOVCBDSEFSQUNURVI7U287MDtPTjs7Ozs7Tjs7Ozs7CisKKwo=